diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/deno.json b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/deno.json index 97999b7b9..849c37521 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/deno.json +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/deno.json @@ -14,8 +14,7 @@ "imports": { "@deno/vite-plugin": "npm:@deno/vite-plugin@^1.0.0", "@ebay/nice-modal-react": "npm:@ebay/nice-modal-react@^1.2.13", - "@preact-icons/bs": "jsr:@preact-icons/bs@^1.0.12", - "@preact-icons/ri": "jsr:@preact-icons/ri@^1.0.12", + "@heroicons/react": "npm:@heroicons/react@^2.2.0", "@rjsf/core": "npm:@rjsf/core@^5.23.2", "@rjsf/validator-ajv6": "npm:@rjsf/validator-ajv6@^5.23.2", "@types/react": "npm:@types/react@^18.3.12", @@ -28,7 +27,7 @@ "postcss": "npm:postcss@^8.4.49", "prop-types": "npm:prop-types@^15.8.1", "react": "https://esm.sh/react@18.2.0", - "react-dom": "https://esm.sh/react-dom@18.2.0", + "react-dom": "https://esm.sh/react-dom@18.2.0", "react-router-dom": "npm:react-router-dom@^7.0.2", "react-select-async-paginate": "npm:react-select-async-paginate@^0.7.7", "reflect-metadata": "npm:reflect-metadata@^0.2.2", diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/deno.lock b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/deno.lock index 5b1c7331f..8f474f5f0 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/deno.lock +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/deno.lock @@ -1,13 +1,11 @@ { "version": "4", "specifiers": { - "jsr:@preact-icons/bs@^1.0.12": "1.0.12", - "jsr:@preact-icons/common@^1.0.12": "1.0.12", - "jsr:@preact-icons/ri@^1.0.12": "1.0.12", "jsr:@std/path@1": "1.0.8", "jsr:@udibo/esbuild-plugin-postcss@~0.1.3": "0.1.3", "npm:@deno/vite-plugin@1": "1.0.2_vite@6.0.5", "npm:@ebay/nice-modal-react@^1.2.13": "1.2.13_react@18.3.1_react-dom@19.0.0__react@19.0.0", + "npm:@heroicons/react@^2.2.0": "2.2.0_react@18.3.1", "npm:@rjsf/core@^5.23.2": "5.23.2_@rjsf+utils@5.23.2__react@18.3.1_react@18.3.1", "npm:@rjsf/validator-ajv6@^5.23.2": "5.23.2_@rjsf+utils@5.23.2__react@18.3.1_react@18.3.1", "npm:@types/react-dom@^18.3.1": "18.3.5_@types+react@18.3.18", @@ -36,28 +34,6 @@ "npm:vite@^6.0.5": "6.0.5" }, "jsr": { - "@preact-icons/bs@1.0.12": { - "integrity": "52282f0e2ffc73b2828f0bdb508dec14c4867f99f9f37fc4094b39f0467d9b1f", - "dependencies": [ - "jsr:@preact-icons/common", - "npm:preact@10.22.1" - ] - }, - "@preact-icons/common@1.0.12": { - "integrity": "f7d7329d55c2753b0162438b120b638e5058fa406f49fe6b422e3b0694f6e0c1", - "dependencies": [ - "npm:@types/react", - "npm:preact@^10.22.1", - "npm:react" - ] - }, - "@preact-icons/ri@1.0.12": { - "integrity": "cd014a2a4bf9aea652d554d620365ea4695d4613aef1eb3833c71cad53415435", - "dependencies": [ - "jsr:@preact-icons/common", - "npm:preact@10.22.1" - ] - }, "@std/path@1.0.8": { "integrity": "548fa456bb6a04d3c1a1e7477986b6cffbce95102d0bb447c67c4ee70e0364be" }, @@ -349,6 +325,12 @@ "@floating-ui/utils@0.2.8": { "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" }, + "@heroicons/react@2.2.0_react@18.3.1": { + "integrity": "sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ==", + "dependencies": [ + "react@18.3.1" + ] + }, "@isaacs/cliui@8.0.2": { "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dependencies": [ @@ -1847,11 +1829,10 @@ }, "workspace": { "dependencies": [ - "jsr:@preact-icons/bs@^1.0.12", - "jsr:@preact-icons/ri@^1.0.12", "jsr:@udibo/esbuild-plugin-postcss@~0.1.3", "npm:@deno/vite-plugin@1", "npm:@ebay/nice-modal-react@^1.2.13", + "npm:@heroicons/react@^2.2.0", "npm:@rjsf/core@^5.23.2", "npm:@rjsf/validator-ajv6@^5.23.2", "npm:@types/react-dom@^18.3.1", diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/base/Button.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/base/Button.tsx index a47d7fedb..e21be4a35 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/base/Button.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/base/Button.tsx @@ -1,16 +1,33 @@ -import { RiDeleteBin2Line, RiSaveFill } from "@preact-icons/ri" -import { BsXCircle, BsPlus, BsPencil } from "@preact-icons/bs" import { Button as BaseButton } from "flowbite-react" import React from 'react' const Button = ({ type , variant , onClick }) => { return ( - { type == 1 && } - { type == 2 && } - { type == 3 && } - { type == 4 && } - { type == 5 && } + { type == 1 && + + } + { type == 2 && + + } + { type == 3 && + + } + { type == 4 && + + } + { type == 5 && + } ); }; diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/button/ButtonComponent.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/button/ButtonComponent.tsx index 0ad7b94ee..63787d7dd 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/button/ButtonComponent.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/button/ButtonComponent.tsx @@ -4,7 +4,6 @@ import OrderService from '../../services/order' import { Component } from 'react' import {debounceTime} from "rxjs" import {Order} from "../../model/order" -import { RiSaveFill, RiPrinterFill } from "@preact-icons/ri" import { Button } from "flowbite-react" import React from 'react' @@ -54,10 +53,14 @@ class ButtonComponent extends Component<{loadOrder},{disabled: boolean}> { return (
) diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/positions/PositionsComponent.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/positions/PositionsComponent.tsx index c784d050e..c20a8d0d4 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/positions/PositionsComponent.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/positions/PositionsComponent.tsx @@ -7,7 +7,7 @@ import {useEffect, useState} from "react" import {Pos} from "../../model/pos" import Order from "../../model/order" import OrderState from "../../state/order" - +import {container} from "tsyringe-neo" const PositionsComponent = ({order, shop, updateOrder}) => { const orderState = container.resolve(OrderState) diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/shop/ShopSelectComponent.tsx b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/shop/ShopSelectComponent.tsx index 3d37db6c7..85c076182 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/shop/ShopSelectComponent.tsx +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/modules/shop/ShopSelectComponent.tsx @@ -10,11 +10,8 @@ const ShopSelectComponent = (props) => { const orderState = container.resolve(OrderState) const shop_service = container.resolve(ShopService) - const token_service = container.resolve(Token) - const loadOptions = async (searchQuery, loadedOptions) => { - console.log(token_service) const data = await shop_service.getShops() return { diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/account.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/account.ts index 96080a451..36027f277 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/account.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/account.ts @@ -1,5 +1,5 @@ -import {autoInjectable, singleton} from "tsyringe-neo"; -import { Token } from "./token"; +import {inject, autoInjectable, singleton} from "tsyringe-neo"; +import Token from "./token"; import axios from 'axios'; import { Account } from "../model/account"; import { Shop } from "../model/shop"; @@ -7,7 +7,9 @@ import { Shop } from "../model/shop"; @singleton() @autoInjectable() class AccountService { - constructor(private token?: Token) {} + constructor(@inject(Token) token?: Token) { + this.token = token + } async getAccounts(shop: Shop): Promise { diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/address.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/address.ts index c51a80b90..035aaeeb1 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/address.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/address.ts @@ -1,12 +1,14 @@ -import {autoInjectable, singleton} from "tsyringe-neo" -import { Token } from "./token" +import {inject, autoInjectable, singleton} from "tsyringe-neo" +import Token from "./token" import axios from 'axios' import { Address } from "../model/address" @singleton() @autoInjectable() class AddressService { - constructor(private token?: Token) {} + constructor(@inject(Token) token?: Token) { + this.token = token + } async create(address: Address): Promise
{ diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/contact.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/contact.ts index c5284c0b6..40d2fc795 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/contact.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/contact.ts @@ -1,5 +1,5 @@ -import {autoInjectable, singleton} from "tsyringe-neo"; -import { Token } from "./token"; +import {inject, autoInjectable, singleton} from "tsyringe-neo"; +import Token from "./token"; import axios from 'axios'; import { Contact } from "../model/contact"; import { Address } from "../model/address"; @@ -8,7 +8,9 @@ import { Shop } from "../model/shop"; @singleton() @autoInjectable() class ContactService { - constructor(private token?: Token) {} + constructor(@inject(Token) token?: Token) { + this.token = token + } async createContact(contact: Contact): Promise { diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/order.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/order.ts index 6ef5391d2..689faf5ec 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/order.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/order.ts @@ -1,5 +1,5 @@ -import {autoInjectable, singleton} from "tsyringe-neo"; -import { Token } from "./token"; +import {inject, autoInjectable, singleton} from "tsyringe-neo"; +import Token from "./token"; import axios from 'axios'; import Order from "../model/order"; @@ -7,7 +7,9 @@ import Order from "../model/order"; @autoInjectable() class OrderService { - constructor(private token?: Token) {} + constructor(@inject(Token) token?: Token) { + this.token = token + } async getOrder(uuid: String): Promise { diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/payment.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/payment.ts index ed290c493..58a6139bd 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/payment.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/payment.ts @@ -1,5 +1,5 @@ -import {autoInjectable, singleton} from "tsyringe-neo" -import { Token } from "./token" +import {inject, autoInjectable, singleton} from "tsyringe-neo" +import Token from "./token" import axios from 'axios' import { Shop } from "../model/shop" import {Payment} from "../model/payment" @@ -7,7 +7,9 @@ import {Payment} from "../model/payment" @singleton() @autoInjectable() class PaymentService { - constructor(private token?: Token) {} + constructor(@inject(Token) token?: Token) { + this.token = token + } async getPayments(shop: Shop): Promise { diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/product.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/product.ts index 669c2cdc5..6da1a09d3 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/product.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/product.ts @@ -1,5 +1,5 @@ -import {autoInjectable, singleton} from "tsyringe-neo"; -import { Token } from "./token"; +import {inject, autoInjectable, singleton} from "tsyringe-neo"; +import Token from "./token"; import axios from 'axios'; import { Shop } from "../model/shop"; import {ProductGroup} from "../model/productGroup"; @@ -9,7 +9,9 @@ import {JSONSchema7} from "json-schema"; @singleton() @autoInjectable() class ProductService { - constructor(private token?: Token) {} + constructor(@inject(Token) token?: Token) { + this.token = token + } async getProductsByTerm(term: string, shop: Shop): Promise { diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/productgroup.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/productgroup.ts index 80ba7f37b..34392989d 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/productgroup.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/productgroup.ts @@ -1,5 +1,5 @@ -import {autoInjectable, singleton} from "tsyringe-neo"; -import { Token } from "./token"; +import {inject, autoInjectable, singleton} from "tsyringe-neo"; +import Token from "./token"; import axios from 'axios'; import { Shop } from "../model/shop"; import {ProductGroup} from "../model/productGroup"; @@ -7,7 +7,9 @@ import {ProductGroup} from "../model/productGroup"; @singleton() @autoInjectable() class ProductGroupService { - constructor(private token?: Token) {} + constructor(@inject(Token) token?: Token) { + this.token = token + } async getProductGroups(searchQuery: String, shop: Shop): Promise { diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/shipping.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/shipping.ts index 6edcf0e23..9a252f517 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/shipping.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/shipping.ts @@ -1,5 +1,5 @@ -import {autoInjectable, singleton} from "tsyringe-neo" -import { Token } from "./token" +import {inject, autoInjectable, singleton} from "tsyringe-neo" +import Token from "./token" import axios from 'axios' import { Shop } from "../model/shop" import {Shipping} from "../model/shipping" @@ -7,8 +7,9 @@ import {Shipping} from "../model/shipping" @singleton() @autoInjectable() class ShippingService { - constructor(private token?: Token) {} - + constructor(@inject(Token) token?: Token) { + this.token = token + } async getShipping(shop: Shop): Promise { return await axios.get('/apps/api/shipping/by/shop/' + shop.uuid, { diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/shop.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/shop.ts index e41c412b6..0e7f11ed6 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/shop.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/shop.ts @@ -1,13 +1,14 @@ -import {autoInjectable, singleton} from "tsyringe-neo" -import { Token } from "./token" +import {autoInjectable, inject, singleton} from "tsyringe-neo" +import Token from "./token" import axios from 'axios' import { Shop } from "../model/shop" @singleton() @autoInjectable() class ShopService { - constructor(token?: Token) { - console.log(token) + + constructor(@inject(Token) token?: Token) { + this.token = token } async getShops(): Promise { diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/token.ts b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/token.ts index f9dede8cb..eb7c9813f 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/token.ts +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/src/services/token.ts @@ -1,5 +1,5 @@ import axios from "axios" -import {singleton} from "tsyringe-neo" +import {singleton, injectable} from "tsyringe-neo" @singleton() class Token { diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tsconfig.app.json b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tsconfig.app.json index f0a235055..c6e1b2203 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tsconfig.app.json +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tsconfig.app.json @@ -1,6 +1,8 @@ { "compilerOptions": { "target": "ES2020", + "experimentalDecorators": true, + "emitDecoratorMetadata": true, "useDefineForClassFields": true, "lib": ["ES2020", "DOM", "DOM.Iterable"], "module": "ESNext", diff --git a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tsconfig.node.json b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tsconfig.node.json index 0d3d71446..fd4178ee4 100644 --- a/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tsconfig.node.json +++ b/src/new/var/plugins/System/PSC/Invoice/InvoiceTS/tsconfig.node.json @@ -4,7 +4,8 @@ "lib": ["ES2023"], "module": "ESNext", "skipLibCheck": true, - + "experimentalDecorators": true, + "emitDecoratorMetadata": true, /* Bundler mode */ "moduleResolution": "bundler", "allowImportingTsExtensions": true, diff --git a/src/new/var/plugins/System/PSC/Invoice/Resources/public/invoicets/assets/index.css b/src/new/var/plugins/System/PSC/Invoice/Resources/public/invoicets/assets/index.css index 7c8c417a8..5f2bfa738 100644 --- a/src/new/var/plugins/System/PSC/Invoice/Resources/public/invoicets/assets/index.css +++ b/src/new/var/plugins/System/PSC/Invoice/Resources/public/invoicets/assets/index.css @@ -1251,6 +1251,10 @@ input[type="range"]::-ms-fill-lower { .hidden { display: none; } +.size-6 { + width: 1.5rem; + height: 1.5rem; +} .h-0\.5 { height: 0.125rem; } diff --git a/src/new/var/plugins/System/PSC/Invoice/Resources/public/invoicets/assets/index.js b/src/new/var/plugins/System/PSC/Invoice/Resources/public/invoicets/assets/index.js index b8935d589..62e7f2219 100644 --- a/src/new/var/plugins/System/PSC/Invoice/Resources/public/invoicets/assets/index.js +++ b/src/new/var/plugins/System/PSC/Invoice/Resources/public/invoicets/assets/index.js @@ -1,52 +1,6 @@ -var __create = Object.create; var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name); -var __typeError = (msg) => { - throw TypeError(msg); -}; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); -var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)]; -var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"]; -var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn; -var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) }); -var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]); -var __runInitializers = (array, flags, self2, value) => { - for (var i2 = 0, fns = array[flags >> 1], n2 = fns && fns.length; i2 < n2; i2++) flags & 1 ? fns[i2].call(self2) : value = fns[i2].call(self2, value); - return value; -}; -var __decorateElement = (array, flags, name, decorators, target, extra) => { - var fn, it2, done, ctx, access, k2 = flags & 7, s2 = !!(flags & 8), p2 = !!(flags & 16); - var j2 = k2 > 3 ? array.length + 1 : k2 ? s2 ? 1 : 2 : 0, key = __decoratorStrings[k2 + 5]; - var initializers = k2 > 3 && (array[j2 - 1] = []), extraInitializers = array[j2] || (array[j2] = []); - var desc = k2 && (!p2 && !s2 && (target = target.prototype), k2 < 5 && (k2 > 3 || !p2) && __getOwnPropDesc(k2 < 4 ? target : { get [name]() { - return __privateGet(this, extra); - }, set [name](x2) { - return __privateSet(this, extra, x2); - } }, name)); - k2 ? p2 && k2 < 4 && __name(extra, (k2 > 2 ? "set " : k2 > 1 ? "get " : "") + name) : __name(target, name); - for (var i2 = decorators.length - 1; i2 >= 0; i2--) { - ctx = __decoratorContext(k2, name, done = {}, array[3], extraInitializers); - if (k2) { - ctx.static = s2, ctx.private = p2, access = ctx.access = { has: p2 ? (x2) => __privateIn(target, x2) : (x2) => name in x2 }; - if (k2 ^ 3) access.get = p2 ? (x2) => (k2 ^ 1 ? __privateGet : __privateMethod)(x2, target, k2 ^ 4 ? extra : desc.get) : (x2) => x2[name]; - if (k2 > 2) access.set = p2 ? (x2, y2) => __privateSet(x2, target, y2, k2 ^ 4 ? extra : desc.set) : (x2, y2) => x2[name] = y2; - } - it2 = (0, decorators[i2])(k2 ? k2 < 4 ? p2 ? extra : desc[key] : k2 > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1; - if (k2 ^ 4 || it2 === void 0) __expectFn(it2) && (k2 > 4 ? initializers.unshift(it2) : k2 ? p2 ? extra = it2 : desc[key] = it2 : target = it2); - else if (typeof it2 !== "object" || it2 === null) __typeError("Object expected"); - else __expectFn(fn = it2.get) && (desc.get = fn), __expectFn(fn = it2.set) && (desc.set = fn), __expectFn(fn = it2.init) && initializers.unshift(fn); - } - return k2 || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p2 ? k2 ^ 4 ? extra : desc : target; -}; var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); -var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg); -var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj); -var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)); -var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value); -var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method); -var _Token_decorators, _init, _a, _ContactService_decorators, _init2, _OrderState_decorators, _init3, _CountryService_decorators, _init4, _AddressService_decorators, _init5, _AccountService_decorators, _init6, _ShopService_decorators, _init7, _OrderService_decorators, _init8, _ProductGroupService_decorators, _init9, _ProductService_decorators, _init10, _PaymentService_decorators, _init11, _ShippingService_decorators, _init12; function _mergeNamespaces(n2, m2) { for (var i2 = 0; i2 < m2.length; i2++) { const e2 = m2[i2]; @@ -420,8 +374,8 @@ function require_Reflect() { keys.push(key); } } - for (var _a2 = 0, parentKeys_1 = parentKeys; _a2 < parentKeys_1.length; _a2++) { - var key = parentKeys_1[_a2]; + for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) { + var key = parentKeys_1[_a]; var hasKey = set2.has(key); if (!hasKey) { set2.add(key); @@ -4046,6 +4000,13 @@ function getParamInfo(target) { }); return params; } +function defineInjectionTokenMetadata(data2, transform2) { + return function(target, _propertyKey, parameterIndex) { + const descriptors2 = Reflect.getOwnMetadata(INJECTION_TOKEN_METADATA_KEY, target) || {}; + descriptors2[parameterIndex] = data2; + Reflect.defineMetadata(INJECTION_TOKEN_METADATA_KEY, descriptors2, target); + }; +} class Registry extends RegistryBase { } class ResolutionContext { @@ -4302,9 +4263,9 @@ class InternalDependencyContainer { return this._registry.tokens(); } isRegistered(token2, recursive = false) { - var _a2; + var _a; this.ensureNotDisposed(); - return this._registry.has(token2) || ((recursive && ((_a2 = this.parent) == null ? void 0 : _a2.isRegistered(token2, true))) ?? false); + return this._registry.has(token2) || ((recursive && ((_a = this.parent) == null ? void 0 : _a.isRegistered(token2, true))) ?? false); } reset() { this.ensureNotDisposed(); @@ -4518,6 +4479,9 @@ function autoInjectable() { }; }; } +function inject(token2) { + return defineInjectionTokenMetadata(token2); +} function injectable() { return function(target) { const paramInfo = getParamInfo(target); @@ -4535,7 +4499,17 @@ if (typeof Reflect === "undefined" || !Reflect.getMetadata) { `tsyringe-neo requires a reflect polyfill. Please add 'import "reflect-metadata"' to the top of your entry point.` ); } -let Token$1 = (_Token_decorators = [singleton()], _a = class { +var __defProp$c = Object.defineProperty; +var __getOwnPropDesc$b = Object.getOwnPropertyDescriptor; +var __decorateClass$b = (decorators, target, key, kind) => { + var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$b(target, key) : target; + for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) + if (decorator = decorators[i2]) + result = (kind ? decorator(target, key, result) : decorator(result)) || result; + if (kind && result) __defProp$c(target, key, result); + return result; +}; +let Token = class { constructor() { __publicField(this, "currentToken"); } @@ -4553,7 +4527,11 @@ let Token$1 = (_Token_decorators = [singleton()], _a = class { this.currentToken = response.data.token; }); } -}, _init = __decoratorStart(null), _a = __decorateElement(_init, 0, "Token", _Token_decorators, _a), __runInitializers(_init, 1, _a), _a); +}; +Token = __decorateClass$b([ + singleton() +], Token); +const Token$1 = Token; var client = {}; var reactDom$1 = { exports: {} }; var reactDom_production_min = {}; @@ -11258,10 +11236,10 @@ function requireClient() { var clientExports = requireClient(); const ReactDOM = /* @__PURE__ */ getDefaultExportFromCjs(clientExports); var reactExports = requireReact$1(); -const React$1 = /* @__PURE__ */ getDefaultExportFromCjs(reactExports); -const React$2 = /* @__PURE__ */ _mergeNamespaces({ +const React = /* @__PURE__ */ getDefaultExportFromCjs(reactExports); +const React$1 = /* @__PURE__ */ _mergeNamespaces({ __proto__: null, - default: React$1 + default: React }, [reactExports]); var __assign$1 = function() { __assign$1 = Object.assign || function(t2) { @@ -11287,8 +11265,8 @@ var __rest = function(s2, e2) { }; var symModalId = Symbol("NiceModalId"); var initialState = {}; -var NiceModalContext = React$1.createContext(initialState); -var NiceModalIdContext = React$1.createContext(null); +var NiceModalContext = React.createContext(initialState); +var NiceModalIdContext = React.createContext(null); var MODAL_REGISTRY = {}; var ALREADY_MOUNTED = {}; var uidSeed = 0; @@ -11299,14 +11277,14 @@ var getUid = function() { return "_nice_modal_" + uidSeed++; }; var reducer = function(state, action) { - var _a2, _b, _c; + var _a, _b, _c; if (state === void 0) { state = initialState; } switch (action.type) { case "nice-modal/show": { var _d = action.payload, modalId = _d.modalId, args = _d.args; - return __assign$1(__assign$1({}, state), (_a2 = {}, _a2[modalId] = __assign$1(__assign$1({}, state[modalId]), { + return __assign$1(__assign$1({}, state), (_a = {}, _a[modalId] = __assign$1(__assign$1({}, state[modalId]), { id: modalId, args, // If modal is not mounted, mount it first then make it visible. @@ -11314,7 +11292,7 @@ var reducer = function(state, action) { // This mechanism ensures the entering transition. visible: !!ALREADY_MOUNTED[modalId], delayVisible: !ALREADY_MOUNTED[modalId] - }), _a2)); + }), _a)); } case "nice-modal/hide": { var modalId = action.payload.modalId; @@ -11337,8 +11315,8 @@ var reducer = function(state, action) { } }; function getModal(modalId) { - var _a2; - return (_a2 = MODAL_REGISTRY[modalId]) === null || _a2 === void 0 ? void 0 : _a2.comp; + var _a; + return (_a = MODAL_REGISTRY[modalId]) === null || _a === void 0 ? void 0 : _a.comp; } function showModal(modalId, args) { return { @@ -11462,18 +11440,18 @@ function useModal(modal, args) { return remove(mid); }, [mid]); var resolveCallback = reactExports.useCallback(function(args2) { - var _a2; - (_a2 = modalCallbacks[mid]) === null || _a2 === void 0 ? void 0 : _a2.resolve(args2); + var _a; + (_a = modalCallbacks[mid]) === null || _a === void 0 ? void 0 : _a.resolve(args2); delete modalCallbacks[mid]; }, [mid]); var rejectCallback = reactExports.useCallback(function(args2) { - var _a2; - (_a2 = modalCallbacks[mid]) === null || _a2 === void 0 ? void 0 : _a2.reject(args2); + var _a; + (_a = modalCallbacks[mid]) === null || _a === void 0 ? void 0 : _a.reject(args2); delete modalCallbacks[mid]; }, [mid]); var resolveHide = reactExports.useCallback(function(args2) { - var _a2; - (_a2 = hideModalCallbacks[mid]) === null || _a2 === void 0 ? void 0 : _a2.resolve(args2); + var _a; + (_a = hideModalCallbacks[mid]) === null || _a === void 0 ? void 0 : _a.resolve(args2); delete hideModalCallbacks[mid]; }, [mid]); return reactExports.useMemo(function() { @@ -11503,9 +11481,9 @@ function useModal(modal, args) { ]); } var create = function(Comp) { - return function(_a2) { + return function(_a) { var _b; - var defaultVisible = _a2.defaultVisible, keepMounted = _a2.keepMounted, id = _a2.id, props = __rest(_a2, ["defaultVisible", "keepMounted", "id"]); + var defaultVisible = _a.defaultVisible, keepMounted = _a.keepMounted, id = _a.id, props = __rest(_a, ["defaultVisible", "keepMounted", "id"]); var _c = useModal(id), args = _c.args, show2 = _c.show; var modals = reactExports.useContext(NiceModalContext); var shouldMount = !!modals[id]; @@ -11530,10 +11508,10 @@ var create = function(Comp) { }, [delayVisible, args, show2]); if (!shouldMount) return null; - return React$1.createElement( + return React.createElement( NiceModalIdContext.Provider, { value: id }, - React$1.createElement(Comp, __assign$1({}, props, args)) + React.createElement(Comp, __assign$1({}, props, args)) ); }; }; @@ -11563,37 +11541,37 @@ var NiceModalPlaceholder = function() { }).map(function(id) { return __assign$1({ id }, MODAL_REGISTRY[id]); }); - return React$1.createElement(React$1.Fragment, null, toRender.map(function(t2) { - return React$1.createElement(t2.comp, __assign$1({ key: t2.id, id: t2.id }, t2.props)); + return React.createElement(React.Fragment, null, toRender.map(function(t2) { + return React.createElement(t2.comp, __assign$1({ key: t2.id, id: t2.id }, t2.props)); })); }; -var InnerContextProvider = function(_a2) { - var children = _a2.children; +var InnerContextProvider = function(_a) { + var children = _a.children; var arr = reactExports.useReducer(reducer, initialState); var modals = arr[0]; dispatch = arr[1]; - return React$1.createElement( + return React.createElement( NiceModalContext.Provider, { value: modals }, children, - React$1.createElement(NiceModalPlaceholder, null) + React.createElement(NiceModalPlaceholder, null) ); }; -var Provider = function(_a2) { - var children = _a2.children, givenDispatch = _a2.dispatch, givenModals = _a2.modals; +var Provider = function(_a) { + var children = _a.children, givenDispatch = _a.dispatch, givenModals = _a.modals; if (!givenDispatch || !givenModals) { - return React$1.createElement(InnerContextProvider, null, children); + return React.createElement(InnerContextProvider, null, children); } dispatch = givenDispatch; - return React$1.createElement( + return React.createElement( NiceModalContext.Provider, { value: givenModals }, children, - React$1.createElement(NiceModalPlaceholder, null) + React.createElement(NiceModalPlaceholder, null) ); }; -var ModalDef = function(_a2) { - var id = _a2.id, component = _a2.component; +var ModalDef = function(_a) { + var id = _a.id, component = _a.component; reactExports.useEffect(function() { register(id, component); return function() { @@ -11602,9 +11580,9 @@ var ModalDef = function(_a2) { }, [id, component]); return null; }; -var ModalHolder = function(_a2) { +var ModalHolder = function(_a) { var _b; - var modal = _a2.modal, _c = _a2.handler, handler = _c === void 0 ? {} : _c, restProps = __rest(_a2, ["modal", "handler"]); + var modal = _a.modal, _c = _a.handler, handler = _c === void 0 ? {} : _c, restProps = __rest(_a, ["modal", "handler"]); var mid = reactExports.useMemo(function() { return getUid(); }, []); @@ -11621,7 +11599,7 @@ var ModalHolder = function(_a2) { handler.hide = reactExports.useCallback(function() { return hide$2(mid); }, [mid]); - return React$1.createElement(ModalComp, __assign$1({ id: mid }, restProps)); + return React.createElement(ModalComp, __assign$1({ id: mid }, restProps)); }; var antdModal = function(modal) { return { @@ -12777,10 +12755,10 @@ var createCache = function createCache2(options2) { } var stylisPlugins = options2.stylisPlugins || defaultStylisPlugins; var inserted = {}; - var container2; + var container; var nodesToHydrate = []; { - container2 = options2.container || document.head; + container = options2.container || document.head; Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which // means that the style elements we're looking at are only Emotion 11 server-rendered style elements @@ -12817,7 +12795,7 @@ var createCache = function createCache2(options2) { key, sheet: new StyleSheet({ key, - container: container2, + container, nonce: options2.nonce, speedy: options2.speedy, prepend: options2.prepend, @@ -13334,7 +13312,7 @@ function serializeStyles(args, registered, mergedProps) { var syncFallback = function syncFallback2(create2) { return create2(); }; -var useInsertionEffect$1 = React$2["useInsertionEffect"] ? React$2["useInsertionEffect"] : false; +var useInsertionEffect$1 = React$1["useInsertionEffect"] ? React$1["useInsertionEffect"] : false; var useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect$1 || syncFallback; var useInsertionEffectWithLayoutFallback = useInsertionEffect$1 || reactExports.useLayoutEffect; var isDevelopment = false; @@ -14150,11 +14128,11 @@ function requireReactDom_production() { return "use-credentials" === input ? input : ""; } reactDom_production.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = Internals; - reactDom_production.createPortal = function(children, container2) { + reactDom_production.createPortal = function(children, container) { var key = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null; - if (!container2 || 1 !== container2.nodeType && 9 !== container2.nodeType && 11 !== container2.nodeType) + if (!container || 1 !== container.nodeType && 9 !== container.nodeType && 11 !== container.nodeType) throw Error(formatProdErrorMessage(299)); - return createPortal$1(children, container2, null, key); + return createPortal$1(children, container, null, key); }; reactDom_production.flushSync = function(fn) { var previousTransition = ReactSharedInternals.T, previousUpdatePriority = Internals.p; @@ -16206,10 +16184,10 @@ var options = { return passiveOptionAccessed = true; } }; -var w$3 = typeof window !== "undefined" ? window : {}; -if (w$3.addEventListener && w$3.removeEventListener) { - w$3.addEventListener("p", noop$1, options); - w$3.removeEventListener("p", noop$1, false); +var w$2 = typeof window !== "undefined" ? window : {}; +if (w$2.addEventListener && w$2.removeEventListener) { + w$2.addEventListener("p", noop$1, options); + w$2.removeEventListener("p", noop$1, false); } var supportsPassiveEvents = passiveOptionAccessed; function notNullish(item) { @@ -17524,10 +17502,10 @@ var anyDiacritic = new RegExp("[" + diacritics.map(function(d2) { return d2.letters; }).join("") + "]", "g"); var diacriticToBase = {}; -for (var i$3 = 0; i$3 < diacritics.length; i$3++) { - var diacritic = diacritics[i$3]; - for (var j$3 = 0; j$3 < diacritic.letters.length; j$3++) { - diacriticToBase[diacritic.letters[j$3]] = diacritic.base; +for (var i$2 = 0; i$2 < diacritics.length; i$2++) { + var diacritic = diacritics[i$2]; + for (var j$2 = 0; j$2 < diacritic.letters.length; j$2++) { + diacriticToBase[diacritic.letters[j$2]] = diacritic.base; } } var stripDiacritics = function stripDiacritics2(str) { @@ -19401,7 +19379,7 @@ function useIsMountedRef() { return isMountedRef; } var useLatest = function useLatest2(value) { - var ref2 = React$1.useRef(value); + var ref2 = React.useRef(value); index$2(function() { ref2.current = value; }); @@ -19536,14 +19514,14 @@ function getResult(promise) { (err) => Err(err) ); } -var e$1 = setTimeout; +var e = setTimeout; function t$1(t2, n2) { - var u2 = n2.useCachedSetTimeout ? e$1 : setTimeout; + var u2 = n2.useCachedSetTimeout ? e : setTimeout; return new Promise(function(e2) { u2(e2, t2); }); } -function n$2(e2) { +function n$1(e2) { var n2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, u2 = n2.useCachedSetTimeout, r2 = t$1(e2, { useCachedSetTimeout: u2 }); function o2(e3) { return r2.then(function() { @@ -19676,7 +19654,7 @@ var requestOptions = async (caller, paramsRef, optionsCacheRef, debounceTimeout, }) ); if (debounceTimeout > 0 && caller === "input-change") { - await n$2(debounceTimeout); + await n$1(debounceTimeout); const newInputValue = paramsRef.current.inputValue; if (currentInputValue !== newInputValue) { setOptionsCache((prevOptionsCache) => { @@ -20033,36 +20011,46 @@ class Contact { } } } -_ContactService_decorators = [singleton(), autoInjectable()]; -class ContactService { +var __defProp$b = Object.defineProperty; +var __getOwnPropDesc$a = Object.getOwnPropertyDescriptor; +var __decorateClass$a = (decorators, target, key, kind) => { + var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$a(target, key) : target; + for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) + if (decorator = decorators[i2]) + result = (kind ? decorator(target, key, result) : decorator(result)) || result; + if (kind && result) __defProp$b(target, key, result); + return result; +}; +var __decorateParam$8 = (index2, decorator) => (target, key) => decorator(target, key, index2); +let ContactService = class { constructor(token2) { this.token = token2; } async createContact(contact) { - var _a2; + var _a; return await axios.post("/apps/api/contact/create", { "contact": contact }, { headers: { - "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) + "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) } }).then((response) => { return response.data; }); } async updateContact(contact) { - var _a2; + var _a; return await axios.put("/apps/api/contact/update/" + contact.uuid, { "contact": contact }, { headers: { - "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) + "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) } }).then((response) => { return response.data; }); } async getContacts(searchQuery, page, shop) { - var _a2; + var _a; return await axios.get("/apps/api/contact/allbyshop/" + shop.uuid + "?term=" + searchQuery + "&page=" + page, { headers: { - "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) + "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) } }).then((response) => { return response.data.data.map((item) => { @@ -20072,10 +20060,13 @@ class ContactService { }); }); } -} -_init2 = __decoratorStart(null); -ContactService = __decorateElement(_init2, 0, "ContactService", _ContactService_decorators, ContactService); -__runInitializers(_init2, 1, ContactService); +}; +ContactService = __decorateClass$a([ + singleton(), + autoInjectable(), + __decorateParam$8(0, inject(Token$1)) +], ContactService); +const ContactService$1 = ContactService; const byteToHex = []; for (let i2 = 0; i2 < 256; ++i2) { byteToHex.push((i2 + 256).toString(16).slice(1)); @@ -20420,7 +20411,7 @@ var Subscription = function() { this._finalizers = null; } Subscription2.prototype.unsubscribe = function() { - var e_1, _a2, e_2, _b; + var e_1, _a, e_2, _b; var errors; if (!this.closed) { this.closed = true; @@ -20437,7 +20428,7 @@ var Subscription = function() { e_1 = { error: e_1_1 }; } finally { try { - if (_parentage_1_1 && !_parentage_1_1.done && (_a2 = _parentage_1.return)) _a2.call(_parentage_1); + if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1); } finally { if (e_1) throw e_1.error; } @@ -20487,7 +20478,7 @@ var Subscription = function() { } }; Subscription2.prototype.add = function(teardown) { - var _a2; + var _a; if (teardown && teardown !== this) { if (this.closed) { execFinalizer(teardown); @@ -20498,7 +20489,7 @@ var Subscription = function() { } teardown._addParent(this); } - (this._finalizers = (_a2 = this._finalizers) !== null && _a2 !== void 0 ? _a2 : []).push(teardown); + (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown); } } }; @@ -20764,7 +20755,7 @@ var Observable = function() { var _this = this; var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete); errorContext(function() { - var _a2 = _this, operator = _a2.operator, source = _a2.source; + var _a = _this, operator = _a.operator, source = _a.source; subscriber.add(operator ? operator.call(subscriber, source) : source ? _this._subscribe(subscriber) : _this._trySubscribe(subscriber)); }); return subscriber; @@ -20796,8 +20787,8 @@ var Observable = function() { }); }; Observable2.prototype._subscribe = function(subscriber) { - var _a2; - return (_a2 = this.source) === null || _a2 === void 0 ? void 0 : _a2.subscribe(subscriber); + var _a; + return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber); }; Observable2.prototype[observable] = function() { return this; @@ -20829,8 +20820,8 @@ var Observable = function() { return Observable2; }(); function getPromiseCtor(promiseCtor) { - var _a2; - return (_a2 = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a2 !== void 0 ? _a2 : Promise; + var _a; + return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise; } function isObserver(value) { return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete); @@ -20892,11 +20883,11 @@ var OperatorSubscriber = function(_super) { return _this; } OperatorSubscriber2.prototype.unsubscribe = function() { - var _a2; + var _a; if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) { var closed_1 = this.closed; _super.prototype.unsubscribe.call(this); - !closed_1 && ((_a2 = this.onFinalize) === null || _a2 === void 0 ? void 0 : _a2.call(this)); + !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this)); } }; return OperatorSubscriber2; @@ -20933,7 +20924,7 @@ var Subject = function(_super) { Subject2.prototype.next = function(value) { var _this = this; errorContext(function() { - var e_1, _a2; + var e_1, _a; _this._throwIfClosed(); if (!_this.isStopped) { if (!_this.currentObservers) { @@ -20948,7 +20939,7 @@ var Subject = function(_super) { e_1 = { error: e_1_1 }; } finally { try { - if (_c && !_c.done && (_a2 = _b.return)) _a2.call(_b); + if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_1) throw e_1.error; } @@ -20989,8 +20980,8 @@ var Subject = function(_super) { }; Object.defineProperty(Subject2.prototype, "observed", { get: function() { - var _a2; - return ((_a2 = this.observers) === null || _a2 === void 0 ? void 0 : _a2.length) > 0; + var _a; + return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0; }, enumerable: false, configurable: true @@ -21006,7 +20997,7 @@ var Subject = function(_super) { }; Subject2.prototype._innerSubscribe = function(subscriber) { var _this = this; - var _a2 = this, hasError = _a2.hasError, isStopped = _a2.isStopped, observers = _a2.observers; + var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers; if (hasError || isStopped) { return EMPTY_SUBSCRIPTION; } @@ -21018,7 +21009,7 @@ var Subject = function(_super) { }); }; Subject2.prototype._checkFinalizedStatuses = function(subscriber) { - var _a2 = this, hasError = _a2.hasError, thrownError = _a2.thrownError, isStopped = _a2.isStopped; + var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped; if (hasError) { subscriber.error(thrownError); } else if (isStopped) { @@ -21044,20 +21035,20 @@ var AnonymousSubject = function(_super) { return _this; } AnonymousSubject2.prototype.next = function(value) { - var _a2, _b; - (_b = (_a2 = this.destination) === null || _a2 === void 0 ? void 0 : _a2.next) === null || _b === void 0 ? void 0 : _b.call(_a2, value); + var _a, _b; + (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value); }; AnonymousSubject2.prototype.error = function(err) { - var _a2, _b; - (_b = (_a2 = this.destination) === null || _a2 === void 0 ? void 0 : _a2.error) === null || _b === void 0 ? void 0 : _b.call(_a2, err); + var _a, _b; + (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err); }; AnonymousSubject2.prototype.complete = function() { - var _a2, _b; - (_b = (_a2 = this.destination) === null || _a2 === void 0 ? void 0 : _a2.complete) === null || _b === void 0 ? void 0 : _b.call(_a2); + var _a, _b; + (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a); }; AnonymousSubject2.prototype._subscribe = function(subscriber) { - var _a2, _b; - return (_b = (_a2 = this.source) === null || _a2 === void 0 ? void 0 : _a2.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION; + var _a, _b; + return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION; }; return AnonymousSubject2; }(Subject); @@ -21081,7 +21072,7 @@ var BehaviorSubject = function(_super) { return subscription; }; BehaviorSubject2.prototype.getValue = function() { - var _a2 = this, hasError = _a2.hasError, thrownError = _a2.thrownError, _value = _a2._value; + var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value; if (hasError) { throw thrownError; } @@ -21132,7 +21123,7 @@ var AsyncAction = function(_super) { return _this; } AsyncAction2.prototype.schedule = function(state, delay) { - var _a2; + var _a; if (delay === void 0) { delay = 0; } @@ -21147,7 +21138,7 @@ var AsyncAction = function(_super) { } this.pending = true; this.delay = delay; - this.id = (_a2 = this.id) !== null && _a2 !== void 0 ? _a2 : this.requestAsyncId(scheduler2, this.id, delay); + this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler2, this.id, delay); return this; }; AsyncAction2.prototype.requestAsyncId = function(scheduler2, _id, delay) { @@ -21196,7 +21187,7 @@ var AsyncAction = function(_super) { }; AsyncAction2.prototype.unsubscribe = function() { if (!this.closed) { - var _a2 = this, id = _a2.id, scheduler2 = _a2.scheduler; + var _a = this, id = _a.id, scheduler2 = _a.scheduler; var actions = scheduler2.actions; this.work = this.state = this.scheduler = null; this.pending = false; @@ -21304,8 +21295,17 @@ function debounceTime(dueTime, scheduler2) { })); }); } -_OrderState_decorators = [singleton()]; -class OrderState { +var __defProp$a = Object.defineProperty; +var __getOwnPropDesc$9 = Object.getOwnPropertyDescriptor; +var __decorateClass$9 = (decorators, target, key, kind) => { + var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$9(target, key) : target; + for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) + if (decorator = decorators[i2]) + result = (kind ? decorator(target, key, result) : decorator(result)) || result; + if (kind && result) __defProp$a(target, key, result); + return result; +}; +let OrderState = class { constructor() { __publicField(this, "orders"); __publicField(this, "currentOrder"); @@ -21323,353 +21323,11 @@ class OrderState { updateOrder(order) { this.orders.push(order); } -} -_init3 = __decoratorStart(null); -OrderState = __decorateElement(_init3, 0, "OrderState", _OrderState_decorators, OrderState); -__runInitializers(_init3, 1, OrderState); -var n$1, l$1, u$1, i$2, r$1, o$1, e, f$2, c$2, s$1, a$2, h$1, p$1 = {}, v$2 = [], y$2 = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i, d$1 = Array.isArray; -function w$2(n2, l2) { - for (var u2 in l2) n2[u2] = l2[u2]; - return n2; -} -function _$2(n2) { - n2 && n2.parentNode && n2.parentNode.removeChild(n2); -} -function g$2(l2, u2, t2) { - var i2, r2, o2, e2 = {}; - for (o2 in u2) "key" == o2 ? i2 = u2[o2] : "ref" == o2 ? r2 = u2[o2] : e2[o2] = u2[o2]; - if (arguments.length > 2 && (e2.children = arguments.length > 3 ? n$1.call(arguments, 2) : t2), "function" == typeof l2 && null != l2.defaultProps) for (o2 in l2.defaultProps) void 0 === e2[o2] && (e2[o2] = l2.defaultProps[o2]); - return m$2(l2, e2, i2, r2, null); -} -function m$2(n2, t2, i2, r2, o2) { - var e2 = { type: n2, props: t2, key: i2, ref: r2, __k: null, __: null, __b: 0, __e: null, __c: null, constructor: void 0, __v: null == o2 ? ++u$1 : o2, __i: -1, __u: 0 }; - return null == o2 && null != l$1.vnode && l$1.vnode(e2), e2; -} -function k$2(n2) { - return n2.children; -} -function x$2(n2, l2) { - this.props = n2, this.context = l2; -} -function C$2(n2, l2) { - if (null == l2) return n2.__ ? C$2(n2.__, n2.__i + 1) : null; - for (var u2; l2 < n2.__k.length; l2++) if (null != (u2 = n2.__k[l2]) && null != u2.__e) return u2.__e; - return "function" == typeof n2.type ? C$2(n2) : null; -} -function S$2(n2) { - var l2, u2; - if (null != (n2 = n2.__) && null != n2.__c) { - for (n2.__e = n2.__c.base = null, l2 = 0; l2 < n2.__k.length; l2++) if (null != (u2 = n2.__k[l2]) && null != u2.__e) { - n2.__e = n2.__c.base = u2.__e; - break; - } - return S$2(n2); - } -} -function M$2(n2) { - (!n2.__d && (n2.__d = true) && i$2.push(n2) && !P$1.__r++ || r$1 !== l$1.debounceRendering) && ((r$1 = l$1.debounceRendering) || o$1)(P$1); -} -function P$1() { - var n2, u2, t2, r2, o2, f2, c2, s2; - for (i$2.sort(e); n2 = i$2.shift(); ) n2.__d && (u2 = i$2.length, r2 = void 0, f2 = (o2 = (t2 = n2).__v).__e, c2 = [], s2 = [], t2.__P && ((r2 = w$2({}, o2)).__v = o2.__v + 1, l$1.vnode && l$1.vnode(r2), j$2(t2.__P, r2, o2, t2.__n, t2.__P.namespaceURI, 32 & o2.__u ? [f2] : null, c2, null == f2 ? C$2(o2) : f2, !!(32 & o2.__u), s2), r2.__v = o2.__v, r2.__.__k[r2.__i] = r2, z$2(c2, r2, s2), r2.__e != f2 && S$2(r2)), i$2.length > u2 && i$2.sort(e)); - P$1.__r = 0; -} -function $$2(n2, l2, u2, t2, i2, r2, o2, e2, f2, c2, s2) { - var a2, h2, y2, d2, w2, _2, g2 = t2 && t2.__k || v$2, m2 = l2.length; - for (f2 = I$2(u2, l2, g2, f2, m2), a2 = 0; a2 < m2; a2++) null != (y2 = u2.__k[a2]) && (h2 = -1 === y2.__i ? p$1 : g2[y2.__i] || p$1, y2.__i = a2, _2 = j$2(n2, y2, h2, i2, r2, o2, e2, f2, c2, s2), d2 = y2.__e, y2.ref && h2.ref != y2.ref && (h2.ref && V$2(h2.ref, null, y2), s2.push(y2.ref, y2.__c || d2, y2)), null == w2 && null != d2 && (w2 = d2), 4 & y2.__u || h2.__k === y2.__k ? f2 = A$2(y2, f2, n2) : "function" == typeof y2.type && void 0 !== _2 ? f2 = _2 : d2 && (f2 = d2.nextSibling), y2.__u &= -7); - return u2.__e = w2, f2; -} -function I$2(n2, l2, u2, t2, i2) { - var r2, o2, e2, f2, c2, s2 = u2.length, a2 = s2, h2 = 0; - for (n2.__k = new Array(i2), r2 = 0; r2 < i2; r2++) null != (o2 = l2[r2]) && "boolean" != typeof o2 && "function" != typeof o2 ? (f2 = r2 + h2, (o2 = n2.__k[r2] = "string" == typeof o2 || "number" == typeof o2 || "bigint" == typeof o2 || o2.constructor == String ? m$2(null, o2, null, null, null) : d$1(o2) ? m$2(k$2, { children: o2 }, null, null, null) : void 0 === o2.constructor && o2.__b > 0 ? m$2(o2.type, o2.props, o2.key, o2.ref ? o2.ref : null, o2.__v) : o2).__ = n2, o2.__b = n2.__b + 1, e2 = null, -1 !== (c2 = o2.__i = L$2(o2, u2, f2, a2)) && (a2--, (e2 = u2[c2]) && (e2.__u |= 2)), null == e2 || null === e2.__v ? (-1 == c2 && h2--, "function" != typeof o2.type && (o2.__u |= 4)) : c2 != f2 && (c2 == f2 - 1 ? h2-- : c2 == f2 + 1 ? h2++ : (c2 > f2 ? h2-- : h2++, o2.__u |= 4))) : n2.__k[r2] = null; - if (a2) for (r2 = 0; r2 < s2; r2++) null != (e2 = u2[r2]) && 0 == (2 & e2.__u) && (e2.__e == t2 && (t2 = C$2(e2)), q$2(e2, e2)); - return t2; -} -function A$2(n2, l2, u2) { - var t2, i2; - if ("function" == typeof n2.type) { - for (t2 = n2.__k, i2 = 0; t2 && i2 < t2.length; i2++) t2[i2] && (t2[i2].__ = n2, l2 = A$2(t2[i2], l2, u2)); - return l2; - } - n2.__e != l2 && (l2 && n2.type && !u2.contains(l2) && (l2 = C$2(n2)), u2.insertBefore(n2.__e, l2 || null), l2 = n2.__e); - do { - l2 = l2 && l2.nextSibling; - } while (null != l2 && 8 == l2.nodeType); - return l2; -} -function L$2(n2, l2, u2, t2) { - var i2, r2, o2 = n2.key, e2 = n2.type, f2 = l2[u2]; - if (null === f2 || f2 && o2 == f2.key && e2 === f2.type && 0 == (2 & f2.__u)) return u2; - if (t2 > (null != f2 && 0 == (2 & f2.__u) ? 1 : 0)) for (i2 = u2 - 1, r2 = u2 + 1; i2 >= 0 || r2 < l2.length; ) { - if (i2 >= 0) { - if ((f2 = l2[i2]) && 0 == (2 & f2.__u) && o2 == f2.key && e2 === f2.type) return i2; - i2--; - } - if (r2 < l2.length) { - if ((f2 = l2[r2]) && 0 == (2 & f2.__u) && o2 == f2.key && e2 === f2.type) return r2; - r2++; - } - } - return -1; -} -function T$2(n2, l2, u2) { - "-" == l2[0] ? n2.setProperty(l2, null == u2 ? "" : u2) : n2[l2] = null == u2 ? "" : "number" != typeof u2 || y$2.test(l2) ? u2 : u2 + "px"; -} -function F$2(n2, l2, u2, t2, i2) { - var r2; - n: if ("style" == l2) if ("string" == typeof u2) n2.style.cssText = u2; - else { - if ("string" == typeof t2 && (n2.style.cssText = t2 = ""), t2) for (l2 in t2) u2 && l2 in u2 || T$2(n2.style, l2, ""); - if (u2) for (l2 in u2) t2 && u2[l2] === t2[l2] || T$2(n2.style, l2, u2[l2]); - } - else if ("o" == l2[0] && "n" == l2[1]) r2 = l2 != (l2 = l2.replace(f$2, "$1")), l2 = l2.toLowerCase() in n2 || "onFocusOut" == l2 || "onFocusIn" == l2 ? l2.toLowerCase().slice(2) : l2.slice(2), n2.l || (n2.l = {}), n2.l[l2 + r2] = u2, u2 ? t2 ? u2.u = t2.u : (u2.u = c$2, n2.addEventListener(l2, r2 ? a$2 : s$1, r2)) : n2.removeEventListener(l2, r2 ? a$2 : s$1, r2); - else { - if ("http://www.w3.org/2000/svg" == i2) l2 = l2.replace(/xlink(H|:h)/, "h").replace(/sName$/, "s"); - else if ("width" != l2 && "height" != l2 && "href" != l2 && "list" != l2 && "form" != l2 && "tabIndex" != l2 && "download" != l2 && "rowSpan" != l2 && "colSpan" != l2 && "role" != l2 && "popover" != l2 && l2 in n2) try { - n2[l2] = null == u2 ? "" : u2; - break n; - } catch (n3) { - } - "function" == typeof u2 || (null == u2 || false === u2 && "-" != l2[4] ? n2.removeAttribute(l2) : n2.setAttribute(l2, "popover" == l2 && 1 == u2 ? "" : u2)); - } -} -function O$2(n2) { - return function(u2) { - if (this.l) { - var t2 = this.l[u2.type + n2]; - if (null == u2.t) u2.t = c$2++; - else if (u2.t < t2.u) return; - return t2(l$1.event ? l$1.event(u2) : u2); - } - }; -} -function j$2(n2, u2, t2, i2, r2, o2, e2, f2, c2, s2) { - var a2, h2, p2, v2, y2, g2, m2, b2, C2, S2, M2, P2, I2, A2, H2, L2, T2, F2 = u2.type; - if (void 0 !== u2.constructor) return null; - 128 & t2.__u && (c2 = !!(32 & t2.__u), o2 = [f2 = u2.__e = t2.__e]), (a2 = l$1.__b) && a2(u2); - n: if ("function" == typeof F2) try { - if (b2 = u2.props, C2 = "prototype" in F2 && F2.prototype.render, S2 = (a2 = F2.contextType) && i2[a2.__c], M2 = a2 ? S2 ? S2.props.value : a2.__ : i2, t2.__c ? m2 = (h2 = u2.__c = t2.__c).__ = h2.__E : (C2 ? u2.__c = h2 = new F2(b2, M2) : (u2.__c = h2 = new x$2(b2, M2), h2.constructor = F2, h2.render = B$2), S2 && S2.sub(h2), h2.props = b2, h2.state || (h2.state = {}), h2.context = M2, h2.__n = i2, p2 = h2.__d = true, h2.__h = [], h2._sb = []), C2 && null == h2.__s && (h2.__s = h2.state), C2 && null != F2.getDerivedStateFromProps && (h2.__s == h2.state && (h2.__s = w$2({}, h2.__s)), w$2(h2.__s, F2.getDerivedStateFromProps(b2, h2.__s))), v2 = h2.props, y2 = h2.state, h2.__v = u2, p2) C2 && null == F2.getDerivedStateFromProps && null != h2.componentWillMount && h2.componentWillMount(), C2 && null != h2.componentDidMount && h2.__h.push(h2.componentDidMount); - else { - if (C2 && null == F2.getDerivedStateFromProps && b2 !== v2 && null != h2.componentWillReceiveProps && h2.componentWillReceiveProps(b2, M2), !h2.__e && (null != h2.shouldComponentUpdate && false === h2.shouldComponentUpdate(b2, h2.__s, M2) || u2.__v == t2.__v)) { - for (u2.__v != t2.__v && (h2.props = b2, h2.state = h2.__s, h2.__d = false), u2.__e = t2.__e, u2.__k = t2.__k, u2.__k.some(function(n3) { - n3 && (n3.__ = u2); - }), P2 = 0; P2 < h2._sb.length; P2++) h2.__h.push(h2._sb[P2]); - h2._sb = [], h2.__h.length && e2.push(h2); - break n; - } - null != h2.componentWillUpdate && h2.componentWillUpdate(b2, h2.__s, M2), C2 && null != h2.componentDidUpdate && h2.__h.push(function() { - h2.componentDidUpdate(v2, y2, g2); - }); - } - if (h2.context = M2, h2.props = b2, h2.__P = n2, h2.__e = false, I2 = l$1.__r, A2 = 0, C2) { - for (h2.state = h2.__s, h2.__d = false, I2 && I2(u2), a2 = h2.render(h2.props, h2.state, h2.context), H2 = 0; H2 < h2._sb.length; H2++) h2.__h.push(h2._sb[H2]); - h2._sb = []; - } else do { - h2.__d = false, I2 && I2(u2), a2 = h2.render(h2.props, h2.state, h2.context), h2.state = h2.__s; - } while (h2.__d && ++A2 < 25); - h2.state = h2.__s, null != h2.getChildContext && (i2 = w$2(w$2({}, i2), h2.getChildContext())), C2 && !p2 && null != h2.getSnapshotBeforeUpdate && (g2 = h2.getSnapshotBeforeUpdate(v2, y2)), f2 = $$2(n2, d$1(L2 = null != a2 && a2.type === k$2 && null == a2.key ? a2.props.children : a2) ? L2 : [L2], u2, t2, i2, r2, o2, e2, f2, c2, s2), h2.base = u2.__e, u2.__u &= -161, h2.__h.length && e2.push(h2), m2 && (h2.__E = h2.__ = null); - } catch (n3) { - if (u2.__v = null, c2 || null != o2) if (n3.then) { - for (u2.__u |= c2 ? 160 : 128; f2 && 8 == f2.nodeType && f2.nextSibling; ) f2 = f2.nextSibling; - o2[o2.indexOf(f2)] = null, u2.__e = f2; - } else for (T2 = o2.length; T2--; ) _$2(o2[T2]); - else u2.__e = t2.__e, u2.__k = t2.__k; - l$1.__e(n3, u2, t2); - } - else null == o2 && u2.__v == t2.__v ? (u2.__k = t2.__k, u2.__e = t2.__e) : f2 = u2.__e = N$1(t2.__e, u2, t2, i2, r2, o2, e2, c2, s2); - return (a2 = l$1.diffed) && a2(u2), 128 & u2.__u ? void 0 : f2; -} -function z$2(n2, u2, t2) { - for (var i2 = 0; i2 < t2.length; i2++) V$2(t2[i2], t2[++i2], t2[++i2]); - l$1.__c && l$1.__c(u2, n2), n2.some(function(u3) { - try { - n2 = u3.__h, u3.__h = [], n2.some(function(n3) { - n3.call(u3); - }); - } catch (n3) { - l$1.__e(n3, u3.__v); - } - }); -} -function N$1(u2, t2, i2, r2, o2, e2, f2, c2, s2) { - var a2, h2, v2, y2, w2, g2, m2, b2 = i2.props, k2 = t2.props, x2 = t2.type; - if ("svg" == x2 ? o2 = "http://www.w3.org/2000/svg" : "math" == x2 ? o2 = "http://www.w3.org/1998/Math/MathML" : o2 || (o2 = "http://www.w3.org/1999/xhtml"), null != e2) { - for (a2 = 0; a2 < e2.length; a2++) if ((w2 = e2[a2]) && "setAttribute" in w2 == !!x2 && (x2 ? w2.localName == x2 : 3 == w2.nodeType)) { - u2 = w2, e2[a2] = null; - break; - } - } - if (null == u2) { - if (null == x2) return document.createTextNode(k2); - u2 = document.createElementNS(o2, x2, k2.is && k2), c2 && (l$1.__m && l$1.__m(t2, e2), c2 = false), e2 = null; - } - if (null === x2) b2 === k2 || c2 && u2.data === k2 || (u2.data = k2); - else { - if (e2 = e2 && n$1.call(u2.childNodes), b2 = i2.props || p$1, !c2 && null != e2) for (b2 = {}, a2 = 0; a2 < u2.attributes.length; a2++) b2[(w2 = u2.attributes[a2]).name] = w2.value; - for (a2 in b2) if (w2 = b2[a2], "children" == a2) ; - else if ("dangerouslySetInnerHTML" == a2) v2 = w2; - else if (!(a2 in k2)) { - if ("value" == a2 && "defaultValue" in k2 || "checked" == a2 && "defaultChecked" in k2) continue; - F$2(u2, a2, null, w2, o2); - } - for (a2 in k2) w2 = k2[a2], "children" == a2 ? y2 = w2 : "dangerouslySetInnerHTML" == a2 ? h2 = w2 : "value" == a2 ? g2 = w2 : "checked" == a2 ? m2 = w2 : c2 && "function" != typeof w2 || b2[a2] === w2 || F$2(u2, a2, w2, b2[a2], o2); - if (h2) c2 || v2 && (h2.__html === v2.__html || h2.__html === u2.innerHTML) || (u2.innerHTML = h2.__html), t2.__k = []; - else if (v2 && (u2.innerHTML = ""), $$2(u2, d$1(y2) ? y2 : [y2], t2, i2, r2, "foreignObject" == x2 ? "http://www.w3.org/1999/xhtml" : o2, e2, f2, e2 ? e2[0] : i2.__k && C$2(i2, 0), c2, s2), null != e2) for (a2 = e2.length; a2--; ) _$2(e2[a2]); - c2 || (a2 = "value", "progress" == x2 && null == g2 ? u2.removeAttribute("value") : void 0 !== g2 && (g2 !== u2[a2] || "progress" == x2 && !g2 || "option" == x2 && g2 !== b2[a2]) && F$2(u2, a2, g2, b2[a2], o2), a2 = "checked", void 0 !== m2 && m2 !== u2[a2] && F$2(u2, a2, m2, b2[a2], o2)); - } - return u2; -} -function V$2(n2, u2, t2) { - try { - if ("function" == typeof n2) { - var i2 = "function" == typeof n2.__u; - i2 && n2.__u(), i2 && null == u2 || (n2.__u = n2(u2)); - } else n2.current = u2; - } catch (n3) { - l$1.__e(n3, t2); - } -} -function q$2(n2, u2, t2) { - var i2, r2; - if (l$1.unmount && l$1.unmount(n2), (i2 = n2.ref) && (i2.current && i2.current !== n2.__e || V$2(i2, null, u2)), null != (i2 = n2.__c)) { - if (i2.componentWillUnmount) try { - i2.componentWillUnmount(); - } catch (n3) { - l$1.__e(n3, u2); - } - i2.base = i2.__P = null; - } - if (i2 = n2.__k) for (r2 = 0; r2 < i2.length; r2++) i2[r2] && q$2(i2[r2], u2, t2 || "function" != typeof n2.type); - t2 || _$2(n2.__e), n2.__c = n2.__ = n2.__e = void 0; -} -function B$2(n2, l2, u2) { - return this.constructor(n2, u2); -} -function J$2(n2, l2) { - var u2 = { __c: l2 = "__cC" + h$1++, __: n2, Consumer: function(n3, l3) { - return n3.children(l3); - }, Provider: function(n3) { - var u3, t2; - return this.getChildContext || (u3 = /* @__PURE__ */ new Set(), (t2 = {})[l2] = this, this.getChildContext = function() { - return t2; - }, this.componentWillUnmount = function() { - u3 = null; - }, this.shouldComponentUpdate = function(n4) { - this.props.value !== n4.value && u3.forEach(function(n5) { - n5.__e = true, M$2(n5); - }); - }, this.sub = function(n4) { - u3.add(n4); - var l3 = n4.componentWillUnmount; - n4.componentWillUnmount = function() { - u3 && u3.delete(n4), l3 && l3.call(n4); - }; - }), n3.children; - } }; - return u2.Provider.__ = u2.Consumer.contextType = u2; -} -n$1 = v$2.slice, l$1 = { __e: function(n2, l2, u2, t2) { - for (var i2, r2, o2; l2 = l2.__; ) if ((i2 = l2.__c) && !i2.__) try { - if ((r2 = i2.constructor) && null != r2.getDerivedStateFromError && (i2.setState(r2.getDerivedStateFromError(n2)), o2 = i2.__d), null != i2.componentDidCatch && (i2.componentDidCatch(n2, t2 || {}), o2 = i2.__d), o2) return i2.__E = i2; - } catch (l3) { - n2 = l3; - } - throw n2; -} }, u$1 = 0, x$2.prototype.setState = function(n2, l2) { - var u2; - u2 = null != this.__s && this.__s !== this.state ? this.__s : this.__s = w$2({}, this.state), "function" == typeof n2 && (n2 = n2(w$2({}, u2), this.props)), n2 && w$2(u2, n2), null != n2 && this.__v && (l2 && this._sb.push(l2), M$2(this)); -}, x$2.prototype.forceUpdate = function(n2) { - this.__v && (this.__e = true, n2 && this.__h.push(n2), M$2(this)); -}, x$2.prototype.render = k$2, i$2 = [], o$1 = "function" == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, e = function(n2, l2) { - return n2.__v.__b - l2.__v.__b; -}, P$1.__r = 0, f$2 = /(PointerCapture)$|Capture$/i, c$2 = 0, s$1 = O$2(false), a$2 = O$2(true), h$1 = 0; -const defaultContext = { - color: void 0, - size: void 0, - class: void 0, - style: void 0, - attr: void 0 }; -const defaultIconContext = J$2 && J$2(defaultContext); -const CAMEL_PROPS = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/; -const CAMEL_REPLACE = /[A-Z0-9]/g; -function filterKebabCase(attrs) { - const newAttrs = {}; - for (const key in attrs) { - if (key.indexOf("-") === -1 && CAMEL_PROPS.test(key)) - newAttrs[key.replace(CAMEL_REPLACE, "-$&").toLowerCase()] = attrs[key]; - else - newAttrs[key] = attrs[key]; - } - return newAttrs; -} -function Tree2Element$1(tree) { - return tree && tree.map( - (node2, i2) => g$2( - node2.tag, - { key: i2, ...filterKebabCase(node2.attr) }, - Tree2Element$1(node2.child || []) - ) - ); -} -function GenIcon$1(data2) { - return (props) => /* @__PURE__ */ React.createElement(IconBase$1, { attr: { ...data2.attr }, ...props }, Tree2Element$1(data2.child || [])); -} -function IconBase$1(props) { - const elem = (conf) => { - const { attr: attr2, size: size2, title: title2, ...svgProps } = props; - let clazz = props.class || ""; - const computedSize = size2 || conf.size || "1em"; - if (conf.class) { - if (clazz) - clazz = `${clazz} ${conf.class}`; - else - clazz = conf.class; - } - let attrs = { - stroke: conf.stroke || "currentColor", - fill: conf.fill || "currentColor", - strokeWidth: conf.strokeWidth || 0, - class: clazz, - ...conf.attr, - ...attr2, - ...svgProps, - height: computedSize, - width: computedSize - }; - attrs = filterKebabCase(attrs); - return /* @__PURE__ */ React.createElement( - "svg", - { - ...attrs, - style: filterKebabCase({ - color: props.color || conf.color, - ...conf.style, - ...props.style - }), - xmlns: "http://www.w3.org/2000/svg" - }, - title2 && /* @__PURE__ */ React.createElement("title", null, title2), - props.children - ); - }; - return defaultIconContext !== void 0 ? /* @__PURE__ */ React.createElement(defaultIconContext.Consumer, null, (conf) => elem(conf)) : elem(defaultIconContext); -} -function RiDeleteBin2Line(props) { - return GenIcon$1({ tag: "svg", attr: { viewBox: "0 0 24 24", fill: "currentColor" }, child: [{ tag: "path", attr: { d: "M17 6H22V8H20V21C20 21.5523 19.5523 22 19 22H5C4.44772 22 4 21.5523 4 21V8H2V6H7V3C7 2.44772 7.44772 2 8 2H16C16.5523 2 17 2.44772 17 3V6ZM18 8H6V20H18V8ZM13.4142 13.9997L15.182 15.7675L13.7678 17.1817L12 15.4139L10.2322 17.1817L8.81802 15.7675L10.5858 13.9997L8.81802 12.232L10.2322 10.8178L12 12.5855L13.7678 10.8178L15.182 12.232L13.4142 13.9997ZM9 4V6H15V4H9Z" } }] })(props); -} -function RiSaveFill(props) { - return GenIcon$1({ tag: "svg", attr: { viewBox: "0 0 24 24", fill: "currentColor" }, child: [{ tag: "path", attr: { d: "M18 21V13H6V21H4C3.44772 21 3 20.5523 3 20V4C3 3.44772 3.44772 3 4 3H17L21 7V20C21 20.5523 20.5523 21 20 21H18ZM16 21H8V15H16V21Z" } }] })(props); -} -function BsPencil(props) { - return GenIcon$1({ tag: "svg", attr: { fill: "currentColor", viewBox: "0 0 16 16" }, child: [{ tag: "path", attr: { d: "M12.146.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1 0 .708l-10 10a.5.5 0 0 1-.168.11l-5 2a.5.5 0 0 1-.65-.65l2-5a.5.5 0 0 1 .11-.168zM11.207 2.5 13.5 4.793 14.793 3.5 12.5 1.207zm1.586 3L10.5 3.207 4 9.707V10h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.293zm-9.761 5.175-.106.106-1.528 3.821 3.821-1.528.106-.106A.5.5 0 0 1 5 12.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.468-.325" } }] })(props); -} -function BsPlus(props) { - return GenIcon$1({ tag: "svg", attr: { fill: "currentColor", viewBox: "0 0 16 16" }, child: [{ tag: "path", attr: { d: "M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4" } }] })(props); -} -function BsXCircle(props) { - return GenIcon$1({ tag: "svg", attr: { fill: "currentColor", viewBox: "0 0 16 16" }, child: [{ tag: "path", attr: { d: "M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16" } }, { tag: "path", attr: { d: "M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708" }, child: [] }] })(props); -} +OrderState = __decorateClass$9([ + singleton() +], OrderState); +const OrderState$1 = OrderState; var DefaultContext = { color: void 0, size: void 0, @@ -21677,7 +21335,7 @@ var DefaultContext = { style: void 0, attr: void 0 }; -var IconContext = React$1.createContext && /* @__PURE__ */ React$1.createContext(DefaultContext); +var IconContext = React.createContext && /* @__PURE__ */ React.createContext(DefaultContext); var _excluded = ["attr", "size", "title"]; function _objectWithoutProperties(source, excluded) { if (source == null) return {}; @@ -21764,12 +21422,12 @@ function _toPrimitive(t2, r2) { return ("string" === r2 ? String : Number)(t2); } function Tree2Element(tree) { - return tree && tree.map((node2, i2) => /* @__PURE__ */ React$1.createElement(node2.tag, _objectSpread({ + return tree && tree.map((node2, i2) => /* @__PURE__ */ React.createElement(node2.tag, _objectSpread({ key: i2 }, node2.attr), Tree2Element(node2.child))); } function GenIcon(data2) { - return (props) => /* @__PURE__ */ React$1.createElement(IconBase, _extends$2({ + return (props) => /* @__PURE__ */ React.createElement(IconBase, _extends$2({ attr: _objectSpread({}, data2.attr) }, props), Tree2Element(data2.child)); } @@ -21784,7 +21442,7 @@ function IconBase(props) { var className; if (conf.className) className = conf.className; if (props.className) className = (className ? className + " " : "") + props.className; - return /* @__PURE__ */ React$1.createElement("svg", _extends$2({ + return /* @__PURE__ */ React.createElement("svg", _extends$2({ stroke: "currentColor", fill: "currentColor", strokeWidth: "0" @@ -21796,9 +21454,9 @@ function IconBase(props) { height: computedSize, width: computedSize, xmlns: "http://www.w3.org/2000/svg" - }), title2 && /* @__PURE__ */ React$1.createElement("title", null, title2), props.children); + }), title2 && /* @__PURE__ */ React.createElement("title", null, title2), props.children); }; - return IconContext !== void 0 ? /* @__PURE__ */ React$1.createElement(IconContext.Consumer, null, (conf) => elem(conf)) : elem(DefaultContext); + return IconContext !== void 0 ? /* @__PURE__ */ React.createElement(IconContext.Consumer, null, (conf) => elem(conf)) : elem(DefaultContext); } function HiArrowLeft(props) { return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 20 20", "fill": "currentColor", "aria-hidden": "true" }, "child": [{ "tag": "path", "attr": { "fillRule": "evenodd", "d": "M9.707 16.707a1 1 0 01-1.414 0l-6-6a1 1 0 010-1.414l6-6a1 1 0 011.414 1.414L5.414 9H17a1 1 0 110 2H5.414l4.293 4.293a1 1 0 010 1.414z", "clipRule": "evenodd" }, "child": [] }] })(props); @@ -21866,7 +21524,7 @@ function createClassGroupUtils(config2) { }; } function getGroupRecursive(classParts, classPartObject) { - var _a2; + var _a; if (classParts.length === 0) { return classPartObject.classGroupId; } @@ -21880,9 +21538,9 @@ function getGroupRecursive(classParts, classPartObject) { return void 0; } const classRest = classParts.join(CLASS_PART_SEPARATOR); - return (_a2 = classPartObject.validators.find(({ + return (_a = classPartObject.validators.find(({ validator: validator2 - }) => validator2(classRest))) == null ? void 0 : _a2.classGroupId; + }) => validator2(classRest))) == null ? void 0 : _a.classGroupId; } const arbitraryPropertyRegex = /^\[(.+)\]$/; function getGroupIdForArbitraryProperty(className) { @@ -26460,8 +26118,8 @@ function requireDebounce() { } var debounceExports = /* @__PURE__ */ requireDebounce(); const debounce = /* @__PURE__ */ getDefaultExportFromCjs(debounceExports); -var __defProp2 = Object.defineProperty; -var __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __defProp$9 = Object.defineProperty; +var __defNormalProp2 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== "symbol" ? key + "" : key, value); const SCROLL_END_DEBOUNCE = 300; const LEFT_BUTTON = 0; @@ -26485,8 +26143,8 @@ class ScrollContainer extends reactExports.PureComponent { } }); __publicField2(this, "onScroll", () => { - const container2 = this.container.current; - if (container2.scrollLeft !== this.scrollLeft || container2.scrollTop !== this.scrollTop) { + const container = this.container.current; + if (container.scrollLeft !== this.scrollLeft || container.scrollTop !== this.scrollTop) { this.scrolling = true; this.processScroll(); this.onEndScroll(); @@ -26532,10 +26190,10 @@ class ScrollContainer extends reactExports.PureComponent { } }); __publicField2(this, "onMouseDown", (e2) => { - var _a2, _b; + var _a, _b; if (this.isDraggable(e2.target) && this.isScrollable()) { this.internal = true; - if (((_b = (_a2 = this.props) == null ? void 0 : _a2.buttons) == null ? void 0 : _b.indexOf(e2.button)) !== -1) { + if (((_b = (_a = this.props) == null ? void 0 : _a.buttons) == null ? void 0 : _b.indexOf(e2.button)) !== -1) { this.processClick(e2.clientX, e2.clientY); e2.preventDefault(); if (this.props.stopPropagation) { @@ -26571,7 +26229,7 @@ class ScrollContainer extends reactExports.PureComponent { } } }); - this.container = React$1.createRef(); + this.container = React.createRef(); this.onEndScroll = debounce(this.onEndScroll, SCROLL_END_DEBOUNCE); this.scrolling = false; this.started = false; @@ -26581,15 +26239,15 @@ class ScrollContainer extends reactExports.PureComponent { } componentDidMount() { const { nativeMobileScroll } = this.props; - const container2 = this.container.current; + const container = this.container.current; window.addEventListener("mouseup", this.onMouseUp); window.addEventListener("mousemove", this.onMouseMove); window.addEventListener("touchmove", this.onTouchMove, { passive: false }); window.addEventListener("touchend", this.onTouchEnd); - container2.addEventListener("touchstart", this.onTouchStart, { + container.addEventListener("touchstart", this.onTouchStart, { passive: false }); - container2.addEventListener("mousedown", this.onMouseDown, { + container.addEventListener("mousedown", this.onMouseDown, { passive: false }); if (nativeMobileScroll) { @@ -26621,13 +26279,13 @@ class ScrollContainer extends reactExports.PureComponent { } } isScrollable() { - const container2 = this.container.current; - return container2 && (container2.scrollWidth > container2.clientWidth || container2.scrollHeight > container2.clientHeight); + const container = this.container.current; + return container && (container.scrollWidth > container.clientWidth || container.scrollHeight > container.clientHeight); } processClick(clientX, clientY) { - const container2 = this.container.current; - this.scrollLeft = container2 == null ? void 0 : container2.scrollLeft; - this.scrollTop = container2 == null ? void 0 : container2.scrollTop; + const container = this.container.current; + this.scrollLeft = container == null ? void 0 : container.scrollLeft; + this.scrollTop = container == null ? void 0 : container.scrollTop; this.clientX = clientX; this.clientY = clientY; this.pressed = true; @@ -26661,7 +26319,7 @@ class ScrollContainer extends reactExports.PureComponent { // Process non-native scroll processMove(newClientX, newClientY) { const { horizontal, vertical, activationDistance, onScroll } = this.props; - const container2 = this.container.current; + const container = this.container.current; if (!this.started) { if (horizontal && Math.abs(newClientX - this.clientX) > activationDistance || vertical && Math.abs(newClientY - this.clientY) > activationDistance) { this.clientX = newClientX; @@ -26670,24 +26328,24 @@ class ScrollContainer extends reactExports.PureComponent { } } else { if (horizontal) { - container2.scrollLeft -= newClientX - this.clientX; + container.scrollLeft -= newClientX - this.clientX; } if (vertical) { - container2.scrollTop -= newClientY - this.clientY; + container.scrollTop -= newClientY - this.clientY; } if (onScroll) { onScroll({ external: !this.internal }); } this.clientX = newClientX; this.clientY = newClientY; - this.scrollLeft = container2.scrollLeft; - this.scrollTop = container2.scrollTop; + this.scrollLeft = container.scrollLeft; + this.scrollTop = container.scrollTop; } } processEnd() { const { onEndScroll } = this.props; - const container2 = this.container.current; - if (container2 && onEndScroll) { + const container = this.container.current; + if (container && onEndScroll) { onEndScroll({ external: !this.internal }); @@ -27155,18 +26813,18 @@ var sortByOrder = function sortByOrder2(candidates) { return acc; }, []).concat(regularTabbables); }; -var tabbable = function tabbable2(container2, options2) { +var tabbable = function tabbable2(container, options2) { options2 = options2 || {}; var candidates; if (options2.getShadowRoot) { - candidates = getCandidatesIteratively([container2], options2.includeContainer, { + candidates = getCandidatesIteratively([container], options2.includeContainer, { filter: isNodeMatchingSelectorTabbable.bind(null, options2), flatten: false, getShadowRoot: options2.getShadowRoot, shadowRootFilter: isValidShadowRootTabbable }); } else { - candidates = getCandidates(container2, options2.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options2)); + candidates = getCandidates(container, options2.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options2)); } return sortByOrder(candidates); }; @@ -27465,7 +27123,7 @@ function useMergeRefs(refs) { }, refs); } const SafeReact = { - ...React$2 + ...React$1 }; const useInsertionEffect = SafeReact.useInsertionEffect; const useSafeInsertionEffect = useInsertionEffect || ((fn) => fn()); @@ -28347,12 +28005,12 @@ const getTabbableOptions = () => ({ typeof ResizeObserver === "function" && ResizeObserver.toString().includes("[native code]") ? "full" : "none" ) }); -function getTabbableIn(container2, direction) { - const allTabbable = tabbable(container2, getTabbableOptions()); +function getTabbableIn(container, direction) { + const allTabbable = tabbable(container, getTabbableOptions()); if (direction === "prev") { allTabbable.reverse(); } - const activeIndex = allTabbable.indexOf(activeElement(getDocument(container2))); + const activeIndex = allTabbable.indexOf(activeElement(getDocument(container))); const nextTabbableElements = allTabbable.slice(activeIndex + 1); return nextTabbableElements[0]; } @@ -28362,20 +28020,20 @@ function getNextTabbable() { function getPreviousTabbable() { return getTabbableIn(document.body, "prev"); } -function isOutsideEvent(event, container2) { - const containerElement = container2 || event.currentTarget; +function isOutsideEvent(event, container) { + const containerElement = container || event.currentTarget; const relatedTarget = event.relatedTarget; return !relatedTarget || !contains$1(containerElement, relatedTarget); } -function disableFocusInside(container2) { - const tabbableElements = tabbable(container2, getTabbableOptions()); +function disableFocusInside(container) { + const tabbableElements = tabbable(container, getTabbableOptions()); tabbableElements.forEach((element) => { element.dataset.tabindex = element.getAttribute("tabindex") || ""; element.setAttribute("tabindex", "-1"); }); } -function enableFocusInside(container2) { - const elements = container2.querySelectorAll("[data-tabindex]"); +function enableFocusInside(container) { + const elements = container.querySelectorAll("[data-tabindex]"); elements.forEach((element) => { const tabindex = element.dataset.tabindex; delete element.dataset.tabindex; @@ -28487,20 +28145,20 @@ function useFloatingPortalNode(props) { index(() => { if (!uniqueId) return; if (portalNodeRef.current) return; - let container2 = root || (portalContext == null ? void 0 : portalContext.portalNode); - if (container2 && !isElement(container2)) container2 = container2.current; - container2 = container2 || document.body; + let container = root || (portalContext == null ? void 0 : portalContext.portalNode); + if (container && !isElement(container)) container = container.current; + container = container || document.body; let idWrapper = null; if (id) { idWrapper = document.createElement("div"); idWrapper.id = id; - container2.appendChild(idWrapper); + container.appendChild(idWrapper); } const subRoot = document.createElement("div"); subRoot.id = uniqueId; subRoot.setAttribute(attr, ""); - container2 = idWrapper || container2; - container2.appendChild(subRoot); + container = idWrapper || container; + container.appendChild(subRoot); portalNodeRef.current = subRoot; setPortalNode(subRoot); }, [id, root, uniqueId, portalContext]); @@ -28659,14 +28317,14 @@ function FloatingFocusManager(props) { const isInsidePortal = portalContext != null; const firstElementChild = floating == null ? void 0 : floating.firstElementChild; const floatingFocusNode = (firstElementChild == null ? void 0 : firstElementChild.id) === floatingId ? firstElementChild : floating; - const getTabbableContent = useEffectEvent(function(container2) { - if (container2 === void 0) { - container2 = floatingFocusNode; + const getTabbableContent = useEffectEvent(function(container) { + if (container === void 0) { + container = floatingFocusNode; } - return container2 ? tabbable(container2, getTabbableOptions()) : []; + return container ? tabbable(container, getTabbableOptions()) : []; }); - const getTabbableElements = useEffectEvent((container2) => { - const content = getTabbableContent(container2); + const getTabbableElements = useEffectEvent((container) => { + const content = getTabbableContent(container); return orderRef.current.map((type2) => { if (domReference && type2 === "reference") { return domReference; @@ -30752,9 +30410,9 @@ function FaQuoteRight(props) { return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 448 512" }, "child": [{ "tag": "path", "attr": { "d": "M448 296c0 66.3-53.7 120-120 120h-8c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H320c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72zm-256 0c0 66.3-53.7 120-120 120H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72z" }, "child": [] }] })(props); } const copyToClipboard = (valueToCopy, setIsJustCopied) => { - var _a2; + var _a; setIsJustCopied(true); - (_a2 = navigator == null ? void 0 : navigator.clipboard) == null ? void 0 : _a2.writeText(valueToCopy).then(() => { + (_a = navigator == null ? void 0 : navigator.clipboard) == null ? void 0 : _a.writeText(valueToCopy).then(() => { console.log("Copy Successfull"); }).catch((error) => { console.error("Failed to Copy text: ", error); @@ -31187,8 +30845,8 @@ const DatepickerRender = ({ }; reactExports.useImperativeHandle(ref2, () => ({ focus() { - var _a2; - (_a2 = inputRef.current) == null ? void 0 : _a2.focus(); + var _a; + (_a = inputRef.current) == null ? void 0 : _a.focus(); }, clear() { clearDate(); @@ -31247,8 +30905,8 @@ const DatepickerRender = ({ }; reactExports.useEffect(() => { const handleClickOutside = (event) => { - var _a2, _b; - const clickedInsideDatepicker = (_a2 = datepickerRef == null ? void 0 : datepickerRef.current) == null ? void 0 : _a2.contains(event.target); + var _a, _b; + const clickedInsideDatepicker = (_a = datepickerRef == null ? void 0 : datepickerRef.current) == null ? void 0 : _a.contains(event.target); const clickedInsideInput = (_b = inputRef == null ? void 0 : inputRef.current) == null ? void 0 : _b.contains(event.target); if (!clickedInsideDatepicker && !clickedInsideInput) { setIsOpen(false); @@ -31843,7 +31501,7 @@ const FooterComponent = ({ bgDark = false, children, className, - container: container2 = false, + container = false, theme: customTheme = {}, ...props }) => { @@ -31852,7 +31510,7 @@ const FooterComponent = ({ "footer", { "data-testid": "flowbite-footer", - className: twMerge(theme2.root.base, bgDark && theme2.root.bgDark, container2 && theme2.root.container, className), + className: twMerge(theme2.root.base, bgDark && theme2.root.bgDark, container && theme2.root.container, className), ...props, children } @@ -32192,13 +31850,13 @@ const MegaMenuDropdown = ({ const id = reactExports.useId(); const ref2 = reactExports.useRef(null); reactExports.useEffect(() => { - var _a2; + var _a; const findToggle = function() { - var _a3; - const megaMenu = (_a3 = ref2.current) == null ? void 0 : _a3.closest("nav"); + var _a2; + const megaMenu = (_a2 = ref2.current) == null ? void 0 : _a2.closest("nav"); return megaMenu == null ? void 0 : megaMenu.querySelector('[aria-haspopup="menu"]'); }; - setLabelledBy((_a2 = findToggle()) == null ? void 0 : _a2.id); + setLabelledBy((_a = findToggle()) == null ? void 0 : _a.id); }, []); return /* @__PURE__ */ jsxRuntimeExports.jsx( "div", @@ -32226,13 +31884,13 @@ const MegaMenuDropdownToggle = ({ const [isExpanded, setExpanded] = reactExports.useState(void 0); const theme2 = mergeDeep(getTheme2().megaMenu.dropdownToggle, customTheme); const findDropdown = function() { - var _a2; - const megaMenu = (_a2 = ref2.current) == null ? void 0 : _a2.closest("nav"); + var _a; + const megaMenu = (_a = ref2.current) == null ? void 0 : _a.closest("nav"); return megaMenu == null ? void 0 : megaMenu.querySelector('[role="menu"]'); }; const onClick = function() { - var _a2; - (_a2 = findDropdown()) == null ? void 0 : _a2.classList.toggle("hidden"); + var _a; + (_a = findDropdown()) == null ? void 0 : _a.classList.toggle("hidden"); setExpanded(!isExpanded); }; reactExports.useEffect(() => { @@ -32729,7 +32387,7 @@ const SidebarItem = reactExports.forwardRef( theme: customTheme = {}, ...props }, ref2) => { - var _a2, _b, _c, _d; + var _a, _b, _c, _d; const id = reactExports.useId(); const { theme: rootTheme, isCollapsed } = useSidebarContext(); const { isInsideCollapse } = useSidebarItemContext(); @@ -32742,7 +32400,7 @@ const SidebarItem = reactExports.forwardRef( className: twMerge( theme2.base, isActive && theme2.active, - !isCollapsed && isInsideCollapse && ((_a2 = theme2.collapsed) == null ? void 0 : _a2.insideCollapse), + !isCollapsed && isInsideCollapse && ((_a = theme2.collapsed) == null ? void 0 : _a.insideCollapse), className ), ...props, @@ -32972,8 +32630,8 @@ const TabsComponent = reactExports.forwardRef( const tabItemStyle = theme2.tablist.tabitem.variant[variant]; const tabItemContainerStyle = theme2.tabitemcontainer.variant[variant]; reactExports.useEffect(() => { - var _a2; - (_a2 = tabRefs.current[focusedTab]) == null ? void 0 : _a2.focus(); + var _a; + (_a = tabRefs.current[focusedTab]) == null ? void 0 : _a.focus(); }, [focusedTab]); reactExports.useImperativeHandle(ref2, () => ({ setActiveTab: setActiveTabWithCallback @@ -33338,11 +32996,11 @@ const ToggleSwitch = reactExports.forwardRef( ToggleSwitch.displayName = "ToggleSwitch"; const Button = ({ type: type2, variant, onClick }) => { return /* @__PURE__ */ jsxRuntimeExports.jsxs(Button$1, { color: variant, pill: true, onClick, children: [ - type2 == 1 && /* @__PURE__ */ jsxRuntimeExports.jsx(BsPlus, {}), - type2 == 2 && /* @__PURE__ */ jsxRuntimeExports.jsx(BsPencil, {}), - type2 == 3 && /* @__PURE__ */ jsxRuntimeExports.jsx(RiSaveFill, {}), - type2 == 4 && /* @__PURE__ */ jsxRuntimeExports.jsx(BsXCircle, {}), - type2 == 5 && /* @__PURE__ */ jsxRuntimeExports.jsx(RiDeleteBin2Line, {}) + type2 == 1 && /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", "stroke-width": "1.5", stroke: "currentColor", "aria-hidden": "true", "data-slot": "icon", class: "size-6", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { "stroke-linecap": "round", "stroke-linejoin": "round", d: "M12 4.5v15m7.5-7.5h-15" }) }), + type2 == 2 && /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", "stroke-width": "1.5", stroke: "currentColor", "aria-hidden": "true", "data-slot": "icon", class: "size-6", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { "stroke-linecap": "round", "stroke-linejoin": "round", d: "m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125" }) }), + type2 == 3 && /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", "stroke-width": "1.5", stroke: "currentColor", "aria-hidden": "true", "data-slot": "icon", fill: "none", class: "size-6", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { "stroke-linecap": "round", "stroke-linejoin": "round", d: "M6 20.25h12A2.25 2.25 0 0 0 20.25 18V7.5L16.5 3.75H6A2.25 2.25 0 0 0 3.75 6v12A2.25 2.25 0 0 0 6 20.25zm9.75-16.5v5h-9.5v-5zM13 5.5V7m-6.75 4.25h11.5v6.5H6.25Z" }) }), + type2 == 4 && /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", "stroke-width": "1.5", stroke: "currentColor", "aria-hidden": "true", "data-slot": "icon", class: "size-6", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { "stroke-linecap": "round", "stroke-linejoin": "round", d: "M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" }) }), + type2 == 5 && /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", "stroke-width": "1.5", stroke: "currentColor", "aria-hidden": "true", "data-slot": "icon", class: "size-6", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { "stroke-linecap": "round", "stroke-linejoin": "round", d: "m9.75 9.75 4.5 4.5m0-4.5-4.5 4.5M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" }) }) ] }); }; function isObject$1(thing) { @@ -36779,7 +36437,7 @@ function requireTimes() { var timesExports = requireTimes(); const times = /* @__PURE__ */ getDefaultExportFromCjs(timesExports); function getOptionMatchingSimpleDiscriminator(formData, options2, discriminatorField) { - var _a2; + var _a; if (formData && discriminatorField) { const value = _get(formData, discriminatorField); if (value === void 0) { @@ -36794,7 +36452,7 @@ function getOptionMatchingSimpleDiscriminator(formData, options2, discriminatorF if (discriminator.const === value) { return i2; } - if ((_a2 = discriminator.enum) === null || _a2 === void 0 ? void 0 : _a2.includes(value)) { + if ((_a = discriminator.enum) === null || _a === void 0 ? void 0 : _a.includes(value)) { return i2; } } @@ -38946,7 +38604,7 @@ function retrieveSchemaInternal(validator2, schema, rootSchema, rawFormData, exp } const resolvedSchemas = resolveSchema(validator2, schema, rootSchema, expandAllBranches, recurseList, rawFormData, experimental_customMergeAllOf); return resolvedSchemas.flatMap((s2) => { - var _a2; + var _a; let resolvedSchema = s2; if (IF_KEY in resolvedSchema) { return resolveCondition(validator2, resolvedSchema, rootSchema, expandAllBranches, recurseList, rawFormData, experimental_customMergeAllOf); @@ -38959,7 +38617,7 @@ function retrieveSchemaInternal(validator2, schema, rootSchema, rawFormData, exp try { const withContainsSchemas = []; const withoutContainsSchemas = []; - (_a2 = resolvedSchema.allOf) === null || _a2 === void 0 ? void 0 : _a2.forEach((s3) => { + (_a = resolvedSchema.allOf) === null || _a === void 0 ? void 0 : _a.forEach((s3) => { if (typeof s3 === "object" && s3.contains) { withContainsSchemas.push(s3); } else { @@ -39378,7 +39036,7 @@ function getObjectDefaults(validator2, rawSchema, { rawFormData, rootSchema = {} const retrievedSchema = (experimental_defaultFormStateBehavior === null || experimental_defaultFormStateBehavior === void 0 ? void 0 : experimental_defaultFormStateBehavior.allOf) === "populateDefaults" && ALL_OF_KEY in schema ? retrieveSchema(validator2, schema, rootSchema, formData, experimental_customMergeAllOf) : schema; const parentConst = retrievedSchema[CONST_KEY]; const objectDefaults = Object.keys(retrievedSchema.properties || {}).reduce((acc, key) => { - var _a2; + var _a; const propertySchema = _get(retrievedSchema, [PROPERTIES_KEY, key]); const hasParentConst = isObject$1(parentConst) && parentConst[key] !== void 0; const hasConst = (isObject$1(propertySchema) && CONST_KEY in propertySchema || hasParentConst) && (experimental_defaultFormStateBehavior === null || experimental_defaultFormStateBehavior === void 0 ? void 0 : experimental_defaultFormStateBehavior.constAsDefaults) !== "never"; @@ -39390,7 +39048,7 @@ function getObjectDefaults(validator2, rawSchema, { rawFormData, rootSchema = {} includeUndefinedValues: includeUndefinedValues === true, parentDefaults: _get(defaults2, [key]), rawFormData: _get(formData, [key]), - required: (_a2 = retrievedSchema.required) === null || _a2 === void 0 ? void 0 : _a2.includes(key) + required: (_a = retrievedSchema.required) === null || _a === void 0 ? void 0 : _a.includes(key) }); maybeAddDefaultToObject(acc, key, computedDefault, includeUndefinedValues, required2, retrievedSchema.required, experimental_defaultFormStateBehavior, hasConst); return acc; @@ -39407,7 +39065,7 @@ function getObjectDefaults(validator2, rawSchema, { rawFormData, rootSchema = {} formDataRequired.push(key); }); keys.forEach((key) => { - var _a2; + var _a; const computedDefault = computeDefaults(validator2, additionalPropertiesSchema, { rootSchema, _recurseList, @@ -39416,7 +39074,7 @@ function getObjectDefaults(validator2, rawSchema, { rawFormData, rootSchema = {} includeUndefinedValues: includeUndefinedValues === true, parentDefaults: _get(defaults2, [key]), rawFormData: _get(formData, [key]), - required: (_a2 = retrievedSchema.required) === null || _a2 === void 0 ? void 0 : _a2.includes(key) + required: (_a = retrievedSchema.required) === null || _a === void 0 ? void 0 : _a.includes(key) }); maybeAddDefaultToObject(objectDefaults, key, computedDefault, includeUndefinedValues, required2, formDataRequired); }); @@ -39425,9 +39083,9 @@ function getObjectDefaults(validator2, rawSchema, { rawFormData, rootSchema = {} } } function getArrayDefaults(validator2, rawSchema, { rawFormData, rootSchema = {}, _recurseList = [], experimental_defaultFormStateBehavior = void 0, experimental_customMergeAllOf = void 0, required: required2 } = {}, defaults2) { - var _a2, _b; + var _a, _b; const schema = rawSchema; - const arrayMinItemsStateBehavior = (_a2 = experimental_defaultFormStateBehavior === null || experimental_defaultFormStateBehavior === void 0 ? void 0 : experimental_defaultFormStateBehavior.arrayMinItems) !== null && _a2 !== void 0 ? _a2 : {}; + const arrayMinItemsStateBehavior = (_a = experimental_defaultFormStateBehavior === null || experimental_defaultFormStateBehavior === void 0 ? void 0 : experimental_defaultFormStateBehavior.arrayMinItems) !== null && _a !== void 0 ? _a : {}; const { populate: arrayMinItemsPopulate, mergeExtraDefaults: arrayMergeExtraDefaults } = arrayMinItemsStateBehavior; const neverPopulate = arrayMinItemsPopulate === "never"; const ignoreMinItemsFlagSet = arrayMinItemsPopulate === "requiredOnly"; @@ -39963,7 +39621,7 @@ function createSchemaUtils(validator2, rootSchema, experimental_defaultFormState return new SchemaUtils(validator2, rootSchema, experimental_defaultFormStateBehavior, experimental_customMergeAllOf); } function dataURItoBlob(dataURILike) { - var _a2; + var _a; if (dataURILike.indexOf("data:") === -1) { throw new Error("File is invalid: URI must be a dataURI"); } @@ -39978,7 +39636,7 @@ function dataURItoBlob(dataURILike) { const name = decodeURI( // parse the parameters into key-value pairs, find a key, and extract a value // if no key is found, then the name is unknown - ((_a2 = mediaparams.map((param) => param.split("=")).find(([key]) => key === "name")) === null || _a2 === void 0 ? void 0 : _a2[1]) || "unknown" + ((_a = mediaparams.map((param) => param.split("=")).find(([key]) => key === "name")) === null || _a === void 0 ? void 0 : _a[1]) || "unknown" ); try { const binary = atob(base64); @@ -46973,11 +46631,11 @@ class AJV6Validator { * @param rootSchema - The root schema used to provide $ref resolutions */ handleSchemaUpdate(rootSchema) { - var _a2; + var _a; const rootSchemaId = ROOT_SCHEMA_PREFIX; if (this.ajv.getSchema(ROOT_SCHEMA_PREFIX) === void 0) { this.ajv.addSchema(rootSchema, ROOT_SCHEMA_PREFIX); - } else if (!deepEquals(rootSchema, (_a2 = this.ajv.getSchema(ROOT_SCHEMA_PREFIX)) === null || _a2 === void 0 ? void 0 : _a2.schema)) { + } else if (!deepEquals(rootSchema, (_a = this.ajv.getSchema(ROOT_SCHEMA_PREFIX)) === null || _a === void 0 ? void 0 : _a.schema)) { this.ajv.removeSchema(rootSchemaId); this.ajv.addSchema(rootSchema, rootSchemaId); } @@ -47413,38 +47071,38 @@ class ArrayField extends reactExports.Component { /** Renders an array using the custom widget provided by the user in the `uiSchema` */ renderCustomWidget() { - var _a2; + var _a; const { schema, idSchema, uiSchema, disabled = false, readonly = false, autofocus = false, required: required2 = false, hideError, placeholder, onBlur, onFocus: onFocus2, formData: items2 = [], registry, rawErrors, name } = this.props; const { widgets: widgets2, formContext, globalUiOptions, schemaUtils } = registry; const { widget, title: uiTitle, ...options2 } = getUiOptions(uiSchema, globalUiOptions); const Widget = getWidget(schema, widget, widgets2); - const label = (_a2 = uiTitle !== null && uiTitle !== void 0 ? uiTitle : schema.title) !== null && _a2 !== void 0 ? _a2 : name; + const label = (_a = uiTitle !== null && uiTitle !== void 0 ? uiTitle : schema.title) !== null && _a !== void 0 ? _a : name; const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions); return jsxRuntimeExports.jsx(Widget, { id: idSchema.$id, name, multiple: true, onChange: this.onSelectChange, onBlur, onFocus: onFocus2, options: options2, schema, uiSchema, registry, value: items2, disabled, readonly, hideError, required: required2, label, hideLabel: !displayLabel, placeholder, formContext, autofocus, rawErrors }); } /** Renders an array as a set of checkboxes */ renderMultiSelect() { - var _a2; + var _a; const { schema, idSchema, uiSchema, formData: items2 = [], disabled = false, readonly = false, autofocus = false, required: required2 = false, placeholder, onBlur, onFocus: onFocus2, registry, rawErrors, name } = this.props; const { widgets: widgets2, schemaUtils, formContext, globalUiOptions } = registry; const itemsSchema = schemaUtils.retrieveSchema(schema.items, items2); const enumOptions = optionsList(itemsSchema, uiSchema); const { widget = "select", title: uiTitle, ...options2 } = getUiOptions(uiSchema, globalUiOptions); const Widget = getWidget(schema, widget, widgets2); - const label = (_a2 = uiTitle !== null && uiTitle !== void 0 ? uiTitle : schema.title) !== null && _a2 !== void 0 ? _a2 : name; + const label = (_a = uiTitle !== null && uiTitle !== void 0 ? uiTitle : schema.title) !== null && _a !== void 0 ? _a : name; const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions); return jsxRuntimeExports.jsx(Widget, { id: idSchema.$id, name, multiple: true, onChange: this.onSelectChange, onBlur, onFocus: onFocus2, options: { ...options2, enumOptions }, schema, uiSchema, registry, value: items2, disabled, readonly, required: required2, label, hideLabel: !displayLabel, placeholder, formContext, autofocus, rawErrors }); } /** Renders an array of files using the `FileWidget` */ renderFiles() { - var _a2; + var _a; const { schema, uiSchema, idSchema, name, disabled = false, readonly = false, autofocus = false, required: required2 = false, onBlur, onFocus: onFocus2, registry, formData: items2 = [], rawErrors } = this.props; const { widgets: widgets2, formContext, globalUiOptions, schemaUtils } = registry; const { widget = "files", title: uiTitle, ...options2 } = getUiOptions(uiSchema, globalUiOptions); const Widget = getWidget(schema, widget, widgets2); - const label = (_a2 = uiTitle !== null && uiTitle !== void 0 ? uiTitle : schema.title) !== null && _a2 !== void 0 ? _a2 : name; + const label = (_a = uiTitle !== null && uiTitle !== void 0 ? uiTitle : schema.title) !== null && _a !== void 0 ? _a : name; const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions); return jsxRuntimeExports.jsx(Widget, { options: options2, id: idSchema.$id, name, multiple: true, onChange: this.onSelectChange, onBlur, onFocus: onFocus2, schema, uiSchema, value: items2, disabled, readonly, required: required2, registry, formContext, autofocus, rawErrors, label, hideLabel: !displayLabel }); } @@ -47559,7 +47217,7 @@ class ArrayField extends reactExports.Component { } } function BooleanField(props) { - var _a2, _b, _c; + var _a, _b, _c; const { schema, name, uiSchema, idSchema, formData, registry, required: required2, disabled, readonly, hideError, autofocus, title: title2, onChange: onChange2, onFocus: onFocus2, onBlur, rawErrors } = props; const { title: schemaTitle } = schema; const { widgets: widgets2, formContext, translateString, globalUiOptions } = registry; @@ -47574,7 +47232,7 @@ function BooleanField(props) { const yes = translateString(TranslatableString.YesLabel); const no = translateString(TranslatableString.NoLabel); let enumOptions; - const label = (_b = (_a2 = uiTitle !== null && uiTitle !== void 0 ? uiTitle : schemaTitle) !== null && _a2 !== void 0 ? _a2 : title2) !== null && _b !== void 0 ? _b : name; + const label = (_b = (_a = uiTitle !== null && uiTitle !== void 0 ? uiTitle : schemaTitle) !== null && _a !== void 0 ? _a : title2) !== null && _b !== void 0 ? _b : name; if (Array.isArray(schema.oneOf)) { enumOptions = optionsList({ oneOf: schema.oneOf.map((option) => { @@ -48129,7 +47787,7 @@ class ObjectField extends reactExports.Component { }; }; this.handleAddClick = (schema) => () => { - var _a2; + var _a; if (!schema.additionalProperties) { return; } @@ -48155,7 +47813,7 @@ class ObjectField extends reactExports.Component { } } const newKey = this.getAvailableKey("newKey", newFormData); - const newValue = (_a2 = constValue !== null && constValue !== void 0 ? constValue : defaultValue) !== null && _a2 !== void 0 ? _a2 : this.getDefaultValue(type2); + const newValue = (_a = constValue !== null && constValue !== void 0 ? constValue : defaultValue) !== null && _a !== void 0 ? _a : this.getDefaultValue(type2); set(newFormData, newKey, newValue); onChange2(newFormData); }; @@ -48194,14 +47852,14 @@ class ObjectField extends reactExports.Component { /** Renders the `ObjectField` from the given props */ render() { - var _a2, _b, _c, _d; + var _a, _b, _c, _d; const { schema: rawSchema, uiSchema = {}, formData, errorSchema, idSchema, name, required: required2 = false, disabled, readonly, hideError, idPrefix, idSeparator, onBlur, onFocus: onFocus2, registry, title: title2 } = this.props; const { fields: fields2, formContext, schemaUtils, translateString, globalUiOptions } = registry; const { SchemaField: SchemaField2 } = fields2; const schema = schemaUtils.retrieveSchema(rawSchema, formData); const uiOptions = getUiOptions(uiSchema, globalUiOptions); const { properties: schemaProperties = {} } = schema; - const templateTitle = (_c = (_b = (_a2 = uiOptions.title) !== null && _a2 !== void 0 ? _a2 : schema.title) !== null && _b !== void 0 ? _b : title2) !== null && _c !== void 0 ? _c : name; + const templateTitle = (_c = (_b = (_a = uiOptions.title) !== null && _a !== void 0 ? _a : schema.title) !== null && _b !== void 0 ? _b : title2) !== null && _c !== void 0 ? _c : name; const description2 = (_d = uiOptions.description) !== null && _d !== void 0 ? _d : schema.description; let orderedProperties; try { @@ -48277,7 +47935,7 @@ function getFieldComponent(schema, uiOptions, idSchema, registry) { }; } function SchemaFieldRender(props) { - var _a2, _b, _c; + var _a, _b, _c; const { schema: _schema, idSchema: _idSchema, uiSchema, formData, errorSchema, idPrefix, idSeparator, name, onChange: onChange2, onKeyChange, onDropPropertyClick, required: required2, registry, wasPropertyKeyModified = false } = props; const { formContext, schemaUtils, globalUiOptions } = registry; const uiOptions = getUiOptions(uiSchema, globalUiOptions); @@ -48293,7 +47951,7 @@ function SchemaFieldRender(props) { return onChange2(formData2, newErrorSchema, theId); }, [fieldId, onChange2]); const FieldComponent = getFieldComponent(schema, uiOptions, idSchema, registry); - const disabled = Boolean((_a2 = uiOptions.disabled) !== null && _a2 !== void 0 ? _a2 : props.disabled); + const disabled = Boolean((_a = uiOptions.disabled) !== null && _a !== void 0 ? _a : props.disabled); const readonly = Boolean((_b = uiOptions.readonly) !== null && _b !== void 0 ? _b : props.readonly || props.schema.readOnly || schema.readOnly); const uiSchemaHideError = uiOptions.hideError; const hideError = uiSchemaHideError === void 0 ? props.hideError : Boolean(uiSchemaHideError); @@ -48371,7 +48029,7 @@ class SchemaField extends reactExports.Component { } } function StringField(props) { - var _a2; + var _a; const { schema, name, uiSchema, idSchema, formData, required: required2, disabled = false, readonly = false, autofocus = false, onChange: onChange2, onBlur, onFocus: onFocus2, registry, rawErrors, hideError } = props; const { title: title2, format: format2 } = schema; const { widgets: widgets2, formContext, schemaUtils, globalUiOptions } = registry; @@ -48382,7 +48040,7 @@ function StringField(props) { } const { widget = defaultWidget, placeholder = "", title: uiTitle, ...options2 } = getUiOptions(uiSchema); const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions); - const label = (_a2 = uiTitle !== null && uiTitle !== void 0 ? uiTitle : title2) !== null && _a2 !== void 0 ? _a2 : name; + const label = (_a = uiTitle !== null && uiTitle !== void 0 ? uiTitle : title2) !== null && _a !== void 0 ? _a : name; const Widget = getWidget(schema, widget, widgets2); return jsxRuntimeExports.jsx(Widget, { options: { ...options2, enumOptions }, schema, uiSchema, id: idSchema.$id, name, label, hideLabel: !displayLabel, hideError, value: formData, onChange: onChange2, onBlur, onFocus: onFocus2, required: required2, disabled, readonly, formContext, autofocus, registry, placeholder, rawErrors }); } @@ -48701,13 +48359,13 @@ function AltDateTimeWidget({ time = true, ...props }) { return jsxRuntimeExports.jsx(AltDateWidget2, { time, ...props }); } function CheckboxWidget({ schema, uiSchema, options: options2, id, value, disabled, readonly, label, hideLabel, autofocus = false, onBlur, onFocus: onFocus2, onChange: onChange2, registry }) { - var _a2; + var _a; const DescriptionFieldTemplate = getTemplate("DescriptionFieldTemplate", registry, options2); const required2 = schemaRequiresTrueValue(schema); const handleChange = reactExports.useCallback((event) => onChange2(event.target.checked), [onChange2]); const handleBlur = reactExports.useCallback((event) => onBlur(id, event.target.checked), [onBlur, id]); const handleFocus = reactExports.useCallback((event) => onFocus2(id, event.target.checked), [onFocus2, id]); - const description2 = (_a2 = options2.description) !== null && _a2 !== void 0 ? _a2 : schema.description; + const description2 = (_a = options2.description) !== null && _a !== void 0 ? _a : schema.description; return jsxRuntimeExports.jsxs("div", { className: `checkbox ${disabled || readonly ? "disabled" : ""}`, children: [!hideLabel && !!description2 && jsxRuntimeExports.jsx(DescriptionFieldTemplate, { id: descriptionId(id), description: description2, schema, uiSchema, registry }), jsxRuntimeExports.jsxs("label", { children: [jsxRuntimeExports.jsx("input", { type: "checkbox", id, name: id, checked: typeof value === "undefined" ? false : value, required: required2, disabled: disabled || readonly, autoFocus: autofocus, onChange: handleChange, onBlur: handleBlur, onFocus: handleFocus, "aria-describedby": ariaDescribedByIds(id) }), labelValue(jsxRuntimeExports.jsx("span", { children: label }), hideLabel)] })] }); } function CheckboxesWidget({ id, disabled, options: { inline: inline2 = false, enumOptions, enumDisabled, emptyValue }, value, autofocus = false, readonly, onChange: onChange2, onBlur, onFocus: onFocus2 }) { @@ -48762,8 +48420,8 @@ function processFile(file) { const reader = new window.FileReader(); reader.onerror = reject; reader.onload = (event) => { - var _a2; - if (typeof ((_a2 = event.target) === null || _a2 === void 0 ? void 0 : _a2.result) === "string") { + var _a; + if (typeof ((_a = event.target) === null || _a === void 0 ? void 0 : _a.result) === "string") { resolve({ dataURL: addNameToDataURL(event.target.result, name), name, @@ -49257,7 +48915,7 @@ let Form$1 = class Form extends reactExports.Component { * @returns - The new state for the `Form` */ getStateFromProps(props, inputFormData, retrievedSchema, isSchemaChanged = false) { - var _a2; + var _a; const state = this.state || {}; const schema = "schema" in props ? props.schema : this.props.schema; const uiSchema = ("uiSchema" in props ? props.uiSchema : this.props.uiSchema) || {}; @@ -49297,7 +48955,7 @@ let Form$1 = class Form extends reactExports.Component { if (retrievedSchema === void 0) { errorSchema = schemaValidation.errorSchema; } else { - errorSchema = mergeObjects((_a2 = this.state) === null || _a2 === void 0 ? void 0 : _a2.errorSchema, schemaValidation.errorSchema, "preventDuplicates"); + errorSchema = mergeObjects((_a = this.state) === null || _a === void 0 ? void 0 : _a.errorSchema, schemaValidation.errorSchema, "preventDuplicates"); } schemaValidationErrors = errors; schemaValidationErrorSchema = errorSchema; @@ -49384,7 +49042,7 @@ let Form$1 = class Form extends reactExports.Component { } /** Returns the registry for the form */ getRegistry() { - var _a2; + var _a; const { translateString: customTranslateString, uiSchema = {} } = this.props; const { schemaUtils } = this.state; const { fields: fields2, templates: templates2, widgets: widgets2, formContext, translateString } = getDefaultRegistry(); @@ -49395,7 +49053,7 @@ let Form$1 = class Form extends reactExports.Component { ...this.props.templates, ButtonTemplates: { ...templates2.ButtonTemplates, - ...(_a2 = this.props.templates) === null || _a2 === void 0 ? void 0 : _a2.ButtonTemplates + ...(_a = this.props.templates) === null || _a === void 0 ? void 0 : _a.ButtonTemplates } }, widgets: { ...widgets2, ...this.props.widgets }, @@ -49482,8 +49140,17 @@ class Country { this.useVatWithoutUstId = item.useVatWithoutUstId; } } -_CountryService_decorators = [singleton(), autoInjectable()]; -class CountryService { +var __defProp$8 = Object.defineProperty; +var __getOwnPropDesc$8 = Object.getOwnPropertyDescriptor; +var __decorateClass$8 = (decorators, target, key, kind) => { + var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$8(target, key) : target; + for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) + if (decorator = decorators[i2]) + result = (kind ? decorator(target, key, result) : decorator(result)) || result; + if (kind && result) __defProp$8(target, key, result); + return result; +}; +let CountryService = class { async getCountry(shop) { return await axios.get("/apps/api/country/by/shop/" + shop.uuid).then((response) => { return response.data.data.map((item) => { @@ -49493,13 +49160,15 @@ class CountryService { }); }); } -} -_init4 = __decoratorStart(null); -CountryService = __decorateElement(_init4, 0, "CountryService", _CountryService_decorators, CountryService); -__runInitializers(_init4, 1, CountryService); +}; +CountryService = __decorateClass$8([ + singleton(), + autoInjectable() +], CountryService); +const CountryService$1 = CountryService; const ContactModal = NiceModal.create( ({ title: title2, action, contact, shop }) => { - const country_api = new CountryService(); + const country_api = new CountryService$1(); const modal = useModal(); const [formData, setFormData] = reactExports.useState({}); const [schema, setSchema] = reactExports.useState({}); @@ -49602,36 +49271,46 @@ const ContactModal = NiceModal.create( ] }); } ); -_AddressService_decorators = [singleton(), autoInjectable()]; -class AddressService { +var __defProp$7 = Object.defineProperty; +var __getOwnPropDesc$7 = Object.getOwnPropertyDescriptor; +var __decorateClass$7 = (decorators, target, key, kind) => { + var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$7(target, key) : target; + for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) + if (decorator = decorators[i2]) + result = (kind ? decorator(target, key, result) : decorator(result)) || result; + if (kind && result) __defProp$7(target, key, result); + return result; +}; +var __decorateParam$7 = (index2, decorator) => (target, key) => decorator(target, key, index2); +let AddressService = class { constructor(token2) { this.token = token2; } async create(address) { - var _a2; + var _a; return await axios.post("/apps/api/contact/address/create", { "address": address }, { headers: { - "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) + "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) } }).then((response) => { return response.data; }); } async update(address) { - var _a2; + var _a; return await axios.put("/apps/api/contact/address/update/" + address.uuid, { "address": address }, { headers: { - "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) + "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) } }).then((response) => { return response.data; }); } async getContactAddress(contact, type2) { - var _a2; + var _a; return await axios.get("/apps/api/contact/address/getallfortype/" + contact + "/" + type2, { headers: { - "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) + "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) } }).then((response) => { return response.data.data.map((item) => { @@ -49652,10 +49331,13 @@ class AddressService { }); }); } -} -_init5 = __decoratorStart(null); -AddressService = __decorateElement(_init5, 0, "AddressService", _AddressService_decorators, AddressService); -__runInitializers(_init5, 1, AddressService); +}; +AddressService = __decorateClass$7([ + singleton(), + autoInjectable(), + __decorateParam$7(0, inject(Token$1)) +], AddressService); +const AddressService$1 = AddressService; const ContactModalComponent = ({ shop, handleAdd, handleEdit, contact }) => { const contactModal = useModal(ContactModal); const showAddModal = reactExports.useCallback(() => { @@ -49671,7 +49353,7 @@ const ContactModalComponent = ({ shop, handleAdd, handleEdit, contact }) => { }); }, [contactModal]); const updateContact = (contact2) => { - const contact_api = new ContactService(); + const contact_api = new ContactService$1(); contact_api.updateContact(contact2).then((e2) => { handleEdit(contact2); }); @@ -49679,14 +49361,14 @@ const ContactModalComponent = ({ shop, handleAdd, handleEdit, contact }) => { const addContact = (formData) => { var contact2 = new Contact(); contact2.parseFromFormData(formData, shop); - const contact_api = new ContactService(); + const contact_api = new ContactService$1(); contact_api.createContact(contact2).then((e2) => { contact2.parseFromJson(e2); var address = new Address(); address.parseFromFormData(formData); address.contact.uuid = contact2.uuid; address.type = 1; - const address_api = new AddressService(); + const address_api = new AddressService$1(); address_api.create(address); address.type = 2; address_api.create(address); @@ -50654,9 +50336,9 @@ function Fe(e2) { return t3.name || he(15), M(e3, t3.name); }, F).toString() : "", p2; } -var Me = new ke(), ze = Fe(), $e = React$1.createContext({ shouldForwardProp: void 0, styleSheet: Me, stylis: ze }); +var Me = new ke(), ze = Fe(), $e = React.createContext({ shouldForwardProp: void 0, styleSheet: Me, stylis: ze }); $e.Consumer; -React$1.createContext(void 0); +React.createContext(void 0); function Ge() { return reactExports.useContext($e); } @@ -50746,7 +50428,7 @@ var Ke = z(v), Qe = function() { } return o2; }, e2; -}(), et = React$1.createContext(void 0); +}(), et = React.createContext(void 0); et.Consumer; var rt = {}; function it(e2, r2, s2) { @@ -50770,7 +50452,7 @@ function it(e2, r2, s2) { var N2 = new Qe(s2, g2, i2 ? a2.componentStyle : void 0); function O2(e3, r3) { return function(e4, r4, s3) { - var i3 = e4.attrs, a3 = e4.componentStyle, c3 = e4.defaultProps, p3 = e4.foldedComponentIds, d3 = e4.styledComponentId, h3 = e4.target, f3 = React$1.useContext(et), m3 = Ge(), y3 = e4.shouldForwardProp || m3.shouldForwardProp; + var i3 = e4.attrs, a3 = e4.componentStyle, c3 = e4.defaultProps, p3 = e4.foldedComponentIds, d3 = e4.styledComponentId, h3 = e4.target, f3 = React.useContext(et), m3 = Ge(), y3 = e4.shouldForwardProp || m3.shouldForwardProp; var v2 = I(r4, f3, c3) || C, g3 = function(e5, n2, o2) { for (var r5, s4 = __assign(__assign({}, n2), { className: void 0, theme: o2 }), i4 = 0; i4 < e5.length; i4 += 1) { var a4 = re(r5 = e5[i4]) ? r5(s4) : r5; @@ -50788,7 +50470,7 @@ function it(e2, r2, s2) { }(D2, e3, r3); } O2.displayName = y2; - var D2 = React$1.forwardRef(O2); + var D2 = React.forwardRef(O2); return D2.attrs = S2, D2.componentStyle = N2, D2.displayName = y2, D2.shouldForwardProp = w2, D2.foldedComponentIds = i2 ? ie(a2.foldedComponentIds, a2.styledComponentId) : "", D2.styledComponentId = g2, D2.target = i2 ? a2.target : e2, Object.defineProperty(D2, "defaultProps", { get: function() { return this._foldedDefaultProps; }, set: function(e3) { @@ -55537,8 +55219,8 @@ const Label = dt.label` `; const ContactSelect = ({ order, shop, onChange: onChange2 }) => { const [shopUuid, setShopUuid] = reactExports.useState(null); - const orderState = instance.resolve(OrderState); - const contact_api = new ContactService(); + const orderState = instance.resolve(OrderState$1); + const contact_api = new ContactService$1(); reactExports.useEffect(() => { setShopUuid(shop.uuid); }, [shop]); @@ -55597,7 +55279,7 @@ ContactSelect.propTypes = { }; const Addressdiv = NiceModal.create( ({ title: title2, action, address, shop }) => { - const country_api = new CountryService(); + const country_api = new CountryService$1(); const modal = useModal(); const [formData, setFormData] = reactExports.useState({}); const [schema, setSchema] = reactExports.useState({}); @@ -55759,8 +55441,8 @@ AddressDetail.propTypes = { const AddressSelect = ({ address, contact, type: type2, changeAddress, name, shop }) => { const [contactUuid, setContactUuid] = reactExports.useState(null); const [localAddress, setLocalAddress] = reactExports.useState(null); - const address_service = new AddressService(); - instance.resolve(OrderState); + const address_service = new AddressService$1(); + instance.resolve(OrderState$1); reactExports.useEffect(() => { if (contact.uuid != "") { setContactUuid(contact.uuid); @@ -55769,7 +55451,7 @@ const AddressSelect = ({ address, contact, type: type2, changeAddress, name, sho reactExports.useEffect(() => { setLocalAddress(address); }, [address]); - instance.resolve(OrderState); + instance.resolve(OrderState$1); const loadOptions = async (searchQuery, loadedOptions) => { const data2 = await address_service.getContactAddress(contact.uuid, type2); return { @@ -55830,16 +55512,26 @@ AddressSelect.propTypes = { changeAddress: propTypesExports.func, name: propTypesExports.string }; -_AccountService_decorators = [singleton(), autoInjectable()]; -class AccountService { +var __defProp$6 = Object.defineProperty; +var __getOwnPropDesc$6 = Object.getOwnPropertyDescriptor; +var __decorateClass$6 = (decorators, target, key, kind) => { + var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$6(target, key) : target; + for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) + if (decorator = decorators[i2]) + result = (kind ? decorator(target, key, result) : decorator(result)) || result; + if (kind && result) __defProp$6(target, key, result); + return result; +}; +var __decorateParam$6 = (index2, decorator) => (target, key) => decorator(target, key, index2); +let AccountService = class { constructor(token2) { this.token = token2; } async getAccounts(shop) { - var _a2; + var _a; return await axios.get("/apps/api/account/allbyshop/" + shop.uuid, { headers: { - "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) + "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) } }).then((response) => { return response.data.data.map((item) => { @@ -55852,19 +55544,22 @@ class AccountService { }); }); } -} -_init6 = __decoratorStart(null); -AccountService = __decorateElement(_init6, 0, "AccountService", _AccountService_decorators, AccountService); -__runInitializers(_init6, 1, AccountService); +}; +AccountService = __decorateClass$6([ + singleton(), + autoInjectable(), + __decorateParam$6(0, inject(Token$1)) +], AccountService); +const AccountService$1 = AccountService; const AccountSelectComponent = ({ shop, order }) => { const [shopUuid, setShopUuid] = reactExports.useState(null); const [account, setAccount] = reactExports.useState(0); reactExports.useEffect(() => { setShopUuid(shop.uuid); }, [shop.uuid]); - const orderState = instance.resolve(OrderState); + const orderState = instance.resolve(OrderState$1); const loadOptions = async (searchQuery, loadedOptions) => { - const account_service = new AccountService(); + const account_service = new AccountService$1(); const data2 = await account_service.getAccounts(shop); return { options: data2, @@ -55904,7 +55599,7 @@ AccountSelectComponent.propTypes = { order: propTypesExports.instanceOf(Order) }; const ContactComponent = ({ order, shop }) => { - let orderState = instance.resolve(OrderState); + let orderState = instance.resolve(OrderState$1); const [contact, setContact] = reactExports.useState(new Contact()); const changeAddress = (address, type2) => { if (type2 == 1) { @@ -55981,7 +55676,7 @@ ContactComponent.propTypes = { }; const TypeSelectComponent = ({ order }) => { const [type2, setType] = reactExports.useState(0); - const orderState = instance.resolve(OrderState); + const orderState = instance.resolve(OrderState$1); const options2 = [ { value: 1, label: "Auftrag" }, { value: 2, label: "Angebot" }, @@ -56014,10 +55709,20 @@ const TypeSelectComponent = ({ order }) => { } ) }); }; -_ShopService_decorators = [singleton(), autoInjectable()]; -class ShopService { +var __defProp$5 = Object.defineProperty; +var __getOwnPropDesc$5 = Object.getOwnPropertyDescriptor; +var __decorateClass$5 = (decorators, target, key, kind) => { + var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$5(target, key) : target; + for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) + if (decorator = decorators[i2]) + result = (kind ? decorator(target, key, result) : decorator(result)) || result; + if (kind && result) __defProp$5(target, key, result); + return result; +}; +var __decorateParam$5 = (index2, decorator) => (target, key) => decorator(target, key, index2); +let ShopService = class { constructor(token2) { - console.log(token2); + this.token = token2; } async getShops() { return await axios.get("/apps/api/shops", { @@ -56032,16 +55737,17 @@ class ShopService { }); }); } -} -_init7 = __decoratorStart(null); -ShopService = __decorateElement(_init7, 0, "ShopService", _ShopService_decorators, ShopService); -__runInitializers(_init7, 1, ShopService); +}; +ShopService = __decorateClass$5([ + singleton(), + autoInjectable(), + __decorateParam$5(0, inject(Token$1)) +], ShopService); +const ShopService$1 = ShopService; const ShopSelectComponent = (props) => { - const orderState = instance.resolve(OrderState); - const shop_service = instance.resolve(ShopService); - const token_service = instance.resolve(Token); + const orderState = instance.resolve(OrderState$1); + const shop_service = instance.resolve(ShopService$1); const loadOptions = async (searchQuery, loadedOptions) => { - console.log(token_service); const data2 = await shop_service.getShops(); return { options: data2, @@ -56070,7 +55776,7 @@ const ShopSelectComponent = (props) => { }; const DraftComponent = ({ order }) => { const [draft, setDraft] = reactExports.useState(true); - const orderState = instance.resolve(OrderState); + const orderState = instance.resolve(OrderState$1); const onChange2 = (option) => { let orderObj = orderState.getCurrentOrder().value; orderObj.draft = !draft; @@ -56086,16 +55792,26 @@ const DraftComponent = ({ order }) => { /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ms-3 text-sm font-medium text-gray-900 dark:text-gray-300", children: "Entwurf" }) ] }) }); }; -_OrderService_decorators = [singleton(), autoInjectable()]; -class OrderService { +var __defProp$4 = Object.defineProperty; +var __getOwnPropDesc$4 = Object.getOwnPropertyDescriptor; +var __decorateClass$4 = (decorators, target, key, kind) => { + var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$4(target, key) : target; + for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) + if (decorator = decorators[i2]) + result = (kind ? decorator(target, key, result) : decorator(result)) || result; + if (kind && result) __defProp$4(target, key, result); + return result; +}; +var __decorateParam$4 = (index2, decorator) => (target, key) => decorator(target, key, index2); +let OrderService = class { constructor(token2) { this.token = token2; } async getOrder(uuid) { - var _a2; + var _a; return await axios.post("/apps/api/order/getonebyuuid", { uuid }, { headers: { - "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) + "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) } }).then((response) => { let order = new Order(); @@ -56104,36 +55820,39 @@ class OrderService { }); } async saveOrder(order) { - var _a2; + var _a; return await axios.post("/apps/api/order/create", order, { headers: { - "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) + "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) } }).then((response) => { return response.data; }); } async calcOrder(order) { - var _a2; + var _a; return await axios.post("/apps/api/order/calc", order, { headers: { - "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) + "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) } }).then((response) => { return response.data; }); } -} -_init8 = __decoratorStart(null); -OrderService = __decorateElement(_init8, 0, "OrderService", _OrderService_decorators, OrderService); -__runInitializers(_init8, 1, OrderService); +}; +OrderService = __decorateClass$4([ + singleton(), + autoInjectable(), + __decorateParam$4(0, inject(Token$1)) +], OrderService); +const OrderService$1 = OrderService; const Currency = ({ price }) => { return /* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: Intl.NumberFormat("de-DE", { style: "currency", currency: "EUR" }).format(price / 100) }); }; -class CalcComponent extends React$1.Component { +class CalcComponent extends React.Component { constructor(props) { super(props); __publicField(this, "orderState"); @@ -56141,8 +55860,8 @@ class CalcComponent extends React$1.Component { __publicField(this, "state", { order: new Order() }); - this.orderState = instance.resolve(OrderState); - this.orderService = instance.resolve(OrderService); + this.orderState = instance.resolve(OrderState$1); + this.orderService = instance.resolve(OrderService$1); } componentDidMount() { this.orderState.getCurrentOrder().pipe(debounceTime(2e3)).subscribe((e2) => this.calc(e2)); @@ -56188,8 +55907,18 @@ class ProductGroup { } //options: ProductGroup[] = [] } -_ProductGroupService_decorators = [singleton(), autoInjectable()]; -class ProductGroupService { +var __defProp$3 = Object.defineProperty; +var __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor; +var __decorateClass$3 = (decorators, target, key, kind) => { + var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$3(target, key) : target; + for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) + if (decorator = decorators[i2]) + result = (kind ? decorator(target, key, result) : decorator(result)) || result; + if (kind && result) __defProp$3(target, key, result); + return result; +}; +var __decorateParam$3 = (index2, decorator) => (target, key) => decorator(target, key, index2); +let ProductGroupService = class { constructor(token2) { this.token = token2; } @@ -56218,10 +55947,13 @@ class ProductGroupService { return temp; }); } -} -_init9 = __decoratorStart(null); -ProductGroupService = __decorateElement(_init9, 0, "ProductGroupService", _ProductGroupService_decorators, ProductGroupService); -__runInitializers(_init9, 1, ProductGroupService); +}; +ProductGroupService = __decorateClass$3([ + singleton(), + autoInjectable(), + __decorateParam$3(0, inject(Token$1)) +], ProductGroupService); +const ProductGroupService$1 = ProductGroupService; var reactSelectAsync_cjs = { exports: {} }; var reactSelectAsync_cjs_prod = {}; var useAsyncBe659a57_cjs_prod = {}; @@ -56405,9 +56137,9 @@ function requireReactSelectAsync_cjs_default() { } var reactSelectAsync_cjs_defaultExports = requireReactSelectAsync_cjs_default(); const ProductGroupSelect = (props) => { - instance.resolve(OrderState); + instance.resolve(OrderState$1); const loadOptions = async (searchQuery) => { - const productgroup_api = new ProductGroupService(); + const productgroup_api = new ProductGroupService$1(); return await productgroup_api.getProductGroups(searchQuery, props.shop); }; const onChange2 = (option) => { @@ -56433,16 +56165,26 @@ ProductGroupSelect.propTypes = { value: propTypesExports.instanceOf(ProductGroup), onChange: propTypesExports.func }; -_ProductService_decorators = [singleton(), autoInjectable()]; -class ProductService { +var __defProp$2 = Object.defineProperty; +var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor; +var __decorateClass$2 = (decorators, target, key, kind) => { + var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target; + for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) + if (decorator = decorators[i2]) + result = (kind ? decorator(target, key, result) : decorator(result)) || result; + if (kind && result) __defProp$2(target, key, result); + return result; +}; +var __decorateParam$2 = (index2, decorator) => (target, key) => decorator(target, key, index2); +let ProductService = class { constructor(token2) { this.token = token2; } async getProductsByTerm(term, shop) { - var _a2; + var _a; return await axios.get("/apps/api/product/getallbyterm/" + shop.uuid + "/" + term, { headers: { - "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) + "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) } }).then((response) => { return response.data.data.map((item) => { @@ -56456,10 +56198,10 @@ class ProductService { }); } async getProducts(productGroup) { - var _a2; + var _a; return await axios.get("/apps/api/product/getallbyproductgroup/" + productGroup.uuid, { headers: { - "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) + "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) } }).then((response) => { return response.data.data.map((item) => { @@ -56473,29 +56215,32 @@ class ProductService { }); } async getAddProductSchema(product, formData) { - var _a2; + var _a; return await axios.post("/apps/api/product/get/form/json/" + product.uuid, formData, { headers: { - "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) + "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) } }).then((response) => { return response.data; }); } async calcProduct(product, formData) { - var _a2; + var _a; return await axios.post("/apps/api/product/get/form/json/" + product.uuid, formData, { headers: { - "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) + "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) } }).then((response) => { return response.data; }); } -} -_init10 = __decoratorStart(null); -ProductService = __decorateElement(_init10, 0, "ProductService", _ProductService_decorators, ProductService); -__runInitializers(_init10, 1, ProductService); +}; +ProductService = __decorateClass$2([ + singleton(), + autoInjectable(), + __decorateParam$2(0, inject(Token$1)) +], ProductService); +const ProductService$1 = ProductService; function c(e2, u2, c2) { var i2 = this, a2 = reactExports.useRef(null), o2 = reactExports.useRef(0), f2 = reactExports.useRef(null), l2 = reactExports.useRef([]), v2 = reactExports.useRef(), m2 = reactExports.useRef(), d2 = reactExports.useRef(e2), g2 = reactExports.useRef(true); d2.current = e2; @@ -56557,12 +56302,12 @@ function a(n2, t2, a2) { return o2(m2.current, n2) || (v2(n2), m2.current = n2), [f2.current, v2]; } const ProductSelect = (props) => { - instance.resolve(OrderState); + instance.resolve(OrderState$1); const loadOptions = async (searchQuery) => { if (searchQuery == "" && props.productGroup.uuid == "") { return []; } - const product_api = new ProductService(); + const product_api = new ProductService$1(); if (searchQuery != "") { return await product_api.getProductsByTerm(searchQuery, props.shop); } else { @@ -56596,7 +56341,7 @@ ProductSelect.propTypes = { onChange: propTypesExports.func }; const ProductForm = ({ shop, pos, handleClose, handleChange }) => { - const product_api = new ProductService(); + const product_api = new ProductService$1(); const [schema, setSchema] = reactExports.useState({}); const [uiSchema, setUiSchema] = reactExports.useState({}); const [formData, setFormData] = reactExports.useState({}); @@ -56829,7 +56574,7 @@ ItemsComponent.propTypes = { shop: propTypesExports.instanceOf(Shop) }; const PositionsComponent = ({ order, shop, updateOrder }) => { - const orderState = container.resolve(OrderState); + const orderState = instance.resolve(OrderState$1); const [positions, setPositions] = reactExports.useState(order.positions); const addPos = (posObj) => { setPositions([...positions, posObj]); @@ -56863,16 +56608,26 @@ PositionsComponent.propTypes = { order: propTypesExports.instanceOf(Order), updateOrder: propTypesExports.func }; -_PaymentService_decorators = [singleton(), autoInjectable()]; -class PaymentService { +var __defProp$1 = Object.defineProperty; +var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor; +var __decorateClass$1 = (decorators, target, key, kind) => { + var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target; + for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) + if (decorator = decorators[i2]) + result = (kind ? decorator(target, key, result) : decorator(result)) || result; + if (kind && result) __defProp$1(target, key, result); + return result; +}; +var __decorateParam$1 = (index2, decorator) => (target, key) => decorator(target, key, index2); +let PaymentService = class { constructor(token2) { this.token = token2; } async getPayments(shop) { - var _a2; + var _a; return await axios.get("/apps/api/payment/by/shop/" + shop.uuid, { headers: { - "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) + "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) } }).then((response) => { return response.data.data.map((item) => { @@ -56884,15 +56639,18 @@ class PaymentService { }); }); } -} -_init11 = __decoratorStart(null); -PaymentService = __decorateElement(_init11, 0, "PaymentService", _PaymentService_decorators, PaymentService); -__runInitializers(_init11, 1, PaymentService); +}; +PaymentService = __decorateClass$1([ + singleton(), + autoInjectable(), + __decorateParam$1(0, inject(Token$1)) +], PaymentService); +const PaymentService$1 = PaymentService; const PaymentComponent = ({ shop, order }) => { const [shopUuid, setShopUuid] = reactExports.useState(null); - const orderState = instance.resolve(OrderState); + const orderState = instance.resolve(OrderState$1); const [payment, setPayment] = reactExports.useState(0); - const payment_service = new PaymentService(); + const payment_service = new PaymentService$1(); const loadOptions = async (searchQuery, loadedOptions) => { const data2 = await payment_service.getPayments(shop); return { @@ -56935,16 +56693,26 @@ PaymentComponent.propTypes = { shop: propTypesExports.instanceOf(Shop), order: propTypesExports.instanceOf(Order) }; -_ShippingService_decorators = [singleton(), autoInjectable()]; -class ShippingService { +var __defProp2 = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __decorateClass = (decorators, target, key, kind) => { + var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target; + for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--) + if (decorator = decorators[i2]) + result = (kind ? decorator(target, key, result) : decorator(result)) || result; + if (kind && result) __defProp2(target, key, result); + return result; +}; +var __decorateParam = (index2, decorator) => (target, key) => decorator(target, key, index2); +let ShippingService = class { constructor(token2) { this.token = token2; } async getShipping(shop) { - var _a2; + var _a; return await axios.get("/apps/api/shipping/by/shop/" + shop.uuid, { headers: { - "Authorization": "Bearer " + ((_a2 = this.token) == null ? void 0 : _a2.currentToken) + "Authorization": "Bearer " + ((_a = this.token) == null ? void 0 : _a.currentToken) } }).then((response) => { return response.data.data.map((item) => { @@ -56956,15 +56724,18 @@ class ShippingService { }); }); } -} -_init12 = __decoratorStart(null); -ShippingService = __decorateElement(_init12, 0, "ShippingService", _ShippingService_decorators, ShippingService); -__runInitializers(_init12, 1, ShippingService); +}; +ShippingService = __decorateClass([ + singleton(), + autoInjectable(), + __decorateParam(0, inject(Token$1)) +], ShippingService); +const ShippingService$1 = ShippingService; const ShippingComponent = ({ shop, order }) => { const [shopUuid, setShopUuid] = reactExports.useState(null); - const orderState = instance.resolve(OrderState); + const orderState = instance.resolve(OrderState$1); const [shipping, setShipping] = reactExports.useState(0); - const shipping_service = new ShippingService(); + const shipping_service = new ShippingService$1(); const loadOptions = async (searchQuery, loadedOptions) => { const data2 = await shipping_service.getShipping(shop); return { @@ -57012,8 +56783,8 @@ class ButtonComponent extends reactExports.Component { super(props); __publicField(this, "orderState"); __publicField(this, "orderService"); - this.orderState = instance.resolve(OrderState); - this.orderService = instance.resolve(OrderService); + this.orderState = instance.resolve(OrderState$1); + this.orderService = instance.resolve(OrderService$1); this.state = { disabled: true }; } componentDidMount() { @@ -57037,11 +56808,11 @@ class ButtonComponent extends reactExports.Component { render() { return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-3", children: [ /* @__PURE__ */ jsxRuntimeExports.jsxs(Button$1, { size: "xs", color: "info", disabled: this.state.disabled, onClick: (e2) => this.handleSave(e2), children: [ - /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mr-2 h-5 w-5" }), + /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", "stroke-width": "1.5", stroke: "currentColor", "aria-hidden": "true", "data-slot": "icon", fill: "none", class: "mr-2 h-5 w-5", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { "stroke-linecap": "round", "stroke-linejoin": "round", d: "M6 20.25h12A2.25 2.25 0 0 0 20.25 18V7.5L16.5 3.75H6A2.25 2.25 0 0 0 3.75 6v12A2.25 2.25 0 0 0 6 20.25zm9.75-16.5v5h-9.5v-5zM13 5.5V7m-6.75 4.25h11.5v6.5H6.25Z" }) }), " Speichern" ] }), /* @__PURE__ */ jsxRuntimeExports.jsxs(Button$1, { size: "xs", color: "success", disabled: !this.orderState.getCurrentOrder().value.saved, onClick: (e2) => this.handlePrint(e2), children: [ - /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mr-2 h-5 w-5" }), + /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", "stroke-width": "1.5", stroke: "currentColor", "aria-hidden": "true", "data-slot": "icon", class: "mr-2 h-5 w-5", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { "stroke-linecap": "round", "stroke-linejoin": "round", d: "M6.72 13.829c-.24.03-.48.062-.72.096m.72-.096a42.415 42.415 0 0 1 10.56 0m-10.56 0L6.34 18m10.94-4.171c.24.03.48.062.72.096m-.72-.096L17.66 18m0 0 .229 2.523a1.125 1.125 0 0 1-1.12 1.227H7.231c-.662 0-1.18-.568-1.12-1.227L6.34 18m11.318 0h1.091A2.25 2.25 0 0 0 21 15.75V9.456c0-1.081-.768-2.015-1.837-2.175a48.055 48.055 0 0 0-1.913-.247M6.34 18H5.25A2.25 2.25 0 0 1 3 15.75V9.456c0-1.081.768-2.015 1.837-2.175a48.041 48.041 0 0 1 1.913-.247m10.5 0a48.536 48.536 0 0 0-10.5 0m10.5 0V3.375c0-.621-.504-1.125-1.125-1.125h-8.25c-.621 0-1.125.504-1.125 1.125v3.659M18 10.5h.008v.008H18V10.5Zm-3 0h.008v.008H15V10.5Z" }) }), " Drucken" ] }) ] }); @@ -57490,8 +57261,8 @@ function flattenRoutes(routes, branches = [], parentsMeta = [], parentPath = "") }); }; routes.forEach((route, index2) => { - var _a2; - if (route.path === "" || !((_a2 = route.path) == null ? void 0 : _a2.includes("?"))) { + var _a; + if (route.path === "" || !((_a = route.path) == null ? void 0 : _a.includes("?"))) { flattenRoute(route, index2); } else { for (let exploded of explodeOptionalSegments(route.path)) { @@ -57941,7 +57712,7 @@ function useRoutes(routes, locationArg) { return useRoutesImpl(routes, locationArg); } function useRoutesImpl(routes, locationArg, dataRouterState, future) { - var _a2; + var _a; invariant( useInRouterContext(), // TODO: This error is probably because they somehow have 2 versions of the @@ -57970,7 +57741,7 @@ Please change the parent to \` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${parentPathnameBase}" but pathname "${parsedLocationArg.pathname}" was given in the \`location\` prop.` ); location = parsedLocationArg; @@ -58255,7 +58026,7 @@ function useRouteId() { ); } function useRouteError() { - var _a2; + var _a; let error = reactExports.useContext(RouteErrorContext); let state = useDataRouterState( "useRouteError" @@ -58268,7 +58039,7 @@ function useRouteError() { if (error !== void 0) { return error; } - return (_a2 = state.errors) == null ? void 0 : _a2[routeId]; + return (_a = state.errors) == null ? void 0 : _a[routeId]; } function useNavigateStable() { let { router } = useDataRouterContext( @@ -58597,12 +58368,12 @@ function getNewMatchesForLinks(page, nextMatches, currentMatches, manifest, loca return match2.route.id !== currentMatches[index2].route.id; }; let matchPathChanged = (match2, index2) => { - var _a2; + var _a; return ( // param change, /users/123 -> /users/456 currentMatches[index2].pathname !== match2.pathname || // splat param changed, which is not present in match.path // e.g. /files/images/avatar.jpg -> files/finances.xls - ((_a2 = currentMatches[index2].route.path) == null ? void 0 : _a2.endsWith("*")) && currentMatches[index2].params["*"] !== match2.params["*"] + ((_a = currentMatches[index2].route.path) == null ? void 0 : _a.endsWith("*")) && currentMatches[index2].params["*"] !== match2.params["*"] ); }; if (mode === "assets") { @@ -58612,7 +58383,7 @@ function getNewMatchesForLinks(page, nextMatches, currentMatches, manifest, loca } if (mode === "data") { return nextMatches.filter((match2, index2) => { - var _a2; + var _a; let manifestRoute = manifest.routes[match2.route.id]; if (!manifestRoute || !manifestRoute.hasLoader) { return false; @@ -58626,7 +58397,7 @@ function getNewMatchesForLinks(page, nextMatches, currentMatches, manifest, loca location.pathname + location.search + location.hash, window.origin ), - currentParams: ((_a2 = currentMatches[0]) == null ? void 0 : _a2.params) || {}, + currentParams: ((_a = currentMatches[0]) == null ? void 0 : _a.params) || {}, nextUrl: new URL(page, window.origin), nextParams: match2.params, defaultShouldRevalidate: true @@ -58851,12 +58622,12 @@ function PrefetchPageLinksImpl({ let routesParams = /* @__PURE__ */ new Set(); let foundOptOutRoute = false; nextMatches.forEach((m2) => { - var _a2; + var _a; let manifestRoute = manifest.routes[m2.route.id]; if (!manifestRoute || !manifestRoute.hasLoader) { return; } - if (!newMatchesForData.some((m22) => m22.route.id === m2.route.id) && m2.route.id in loaderData && ((_a2 = routeModules[m2.route.id]) == null ? void 0 : _a2.shouldRevalidate)) { + if (!newMatchesForData.some((m22) => m22.route.id === m2.route.id) && m2.route.id in loaderData && ((_a = routeModules[m2.route.id]) == null ? void 0 : _a.shouldRevalidate)) { foundOptOutRoute = true; } else if (manifestRoute.hasClientLoader) { foundOptOutRoute = true; @@ -59276,7 +59047,7 @@ new TextEncoder(); const InfoFieldComponent = ({ shop, order }) => { const [basketField1, setBasketField1] = reactExports.useState(""); const [basketField2, setBasketField2] = reactExports.useState(""); - const orderState = instance.resolve(OrderState); + const orderState = instance.resolve(OrderState$1); reactExports.useEffect(() => { setBasketField1(order.basketField1); setBasketField2(order.basketField1); @@ -59320,8 +59091,8 @@ OrderAliasComponent.propTypes = { const BaseComponent = (props) => { const [shop, setShop] = reactExports.useState(new Shop()); const [order, setOrder] = reactExports.useState(new Order()); - const order_state = instance.resolve(OrderState); - const orderService = instance.resolve(OrderService); + const order_state = instance.resolve(OrderState$1); + const orderService = instance.resolve(OrderService$1); const loadOrder = async (uuid) => { orderService.getOrder(uuid).then((orderObj) => { order_state.setCurrentOrder(orderObj); @@ -59335,7 +59106,7 @@ const BaseComponent = (props) => { loadOrder(params.uuid); } }, []); - return /* @__PURE__ */ jsxRuntimeExports.jsx(React$1.StrictMode, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ml-1 mt-1 mr-1", children: [ + return /* @__PURE__ */ jsxRuntimeExports.jsx(React.StrictMode, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ml-1 mt-1 mr-1", children: [ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-1 mt-1 mb-1", children: [ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntimeExports.jsx(OrderAliasComponent, { order }) }), /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ButtonComponent, { loadOrder }) }) @@ -59377,4 +59148,4 @@ class App { let app = new App(jwt_token); app.init(); app.run(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVmbGVjdC1tZXRhZGF0YUAwLjIuMi9ub2RlX21vZHVsZXMvcmVmbGVjdC1tZXRhZGF0YS9SZWZsZWN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdEAxOC4zLjEvbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC5wcm9kdWN0aW9uLm1pbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3RAMTguMy4xL25vZGVfbW9kdWxlcy9yZWFjdC9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3RAMTguMy4xL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0QDE4LjMuMS9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9iaW5kLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL3V0aWxzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3NFcnJvci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL251bGwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy90b0Zvcm1EYXRhLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvQXhpb3NVUkxTZWFyY2hQYXJhbXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9idWlsZFVSTC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL0ludGVyY2VwdG9yTWFuYWdlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9kZWZhdWx0cy90cmFuc2l0aW9uYWwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vYnJvd3Nlci9jbGFzc2VzL1VSTFNlYXJjaFBhcmFtcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9wbGF0Zm9ybS9icm93c2VyL2NsYXNzZXMvRm9ybURhdGEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vYnJvd3Nlci9jbGFzc2VzL0Jsb2IuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vYnJvd3Nlci9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9wbGF0Zm9ybS9jb21tb24vdXRpbHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy90b1VSTEVuY29kZWRGb3JtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvZm9ybURhdGFUb0pTT04uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvZGVmYXVsdHMvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9wYXJzZUhlYWRlcnMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9BeGlvc0hlYWRlcnMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS90cmFuc2Zvcm1EYXRhLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9pc0NhbmNlbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvQ2FuY2VsZWRFcnJvci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL3NldHRsZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3BhcnNlUHJvdG9jb2wuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9zcGVlZG9tZXRlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3Rocm90dGxlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcHJvZ3Jlc3NFdmVudFJlZHVjZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc1VSTFNhbWVPcmlnaW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb29raWVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNBYnNvbHV0ZVVSTC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2NvbWJpbmVVUkxzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvYnVpbGRGdWxsUGF0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL21lcmdlQ29uZmlnLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcmVzb2x2ZUNvbmZpZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9hZGFwdGVycy94aHIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb21wb3NlU2lnbmFscy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3RyYWNrU3RyZWFtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2FkYXB0ZXJzL2ZldGNoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2FkYXB0ZXJzL2FkYXB0ZXJzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZGlzcGF0Y2hSZXF1ZXN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2Vudi9kYXRhLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvdmFsaWRhdG9yLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3MuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL0NhbmNlbFRva2VuLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvc3ByZWFkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNBeGlvc0Vycm9yLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvSHR0cFN0YXR1c0NvZGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvYXhpb3MuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3RzeXJpbmdlLW5lb0A1LjEuMC9ub2RlX21vZHVsZXMvdHN5cmluZ2UtbmVvL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9zZXJ2aWNlcy90b2tlbi50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc2NoZWR1bGVyQDAuMjMuMi9ub2RlX21vZHVsZXMvc2NoZWR1bGVyL2Nqcy9zY2hlZHVsZXIucHJvZHVjdGlvbi5taW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3NjaGVkdWxlckAwLjIzLjIvbm9kZV9tb2R1bGVzL3NjaGVkdWxlci9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3QtZG9tQDE4LjMuMS9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Nqcy9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LWRvbUAxOC4zLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3QtZG9tQDE4LjMuMS9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2NsaWVudC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGViYXkrbmljZS1tb2RhbC1yZWFjdEAxLjIuMTMvbm9kZV9tb2R1bGVzL0BlYmF5L25pY2UtbW9kYWwtcmVhY3QvbGliL2VzbS9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvc2hvcC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcHJvcC10eXBlc0AxNS44LjEvbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9wcm9wLXR5cGVzQDE1LjguMS9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3Byb3AtdHlwZXNAMTUuOC4xL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1Byb3BlcnR5S2V5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRoSG9sZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5TGltaXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlMaWtlVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9ub25JdGVyYWJsZVJlc3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9kaXN0L3VzZVN0YXRlTWFuYWdlci03ZTFlODQ4OS5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjay5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zZXRQcm90b3R5cGVPZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9nZXRQcm90b3R5cGVPZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRob3V0SG9sZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL25vbkl0ZXJhYmxlU3ByZWFkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZW1vdGlvbitzaGVldEAxLjQuMC9ub2RlX21vZHVsZXMvQGVtb3Rpb24vc2hlZXQvZGlzdC9lbW90aW9uLXNoZWV0LmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc3R5bGlzQDQuMi4wL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL0VudW0uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3N0eWxpc0A0LjIuMC9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9VdGlsaXR5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsaXNANC4yLjAvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvVG9rZW5pemVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsaXNANC4yLjAvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvUGFyc2VyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsaXNANC4yLjAvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvU2VyaWFsaXplci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc3R5bGlzQDQuMi4wL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL01pZGRsZXdhcmUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3dlYWstbWVtb2l6ZUAwLjQuMC9ub2RlX21vZHVsZXMvQGVtb3Rpb24vd2Vhay1tZW1vaXplL2Rpc3QvZW1vdGlvbi13ZWFrLW1lbW9pemUuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZW1vdGlvbittZW1vaXplQDAuOS4wL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9tZW1vaXplL2Rpc3QvZW1vdGlvbi1tZW1vaXplLmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGVtb3Rpb24rY2FjaGVAMTEuMTQuMC9ub2RlX21vZHVsZXMvQGVtb3Rpb24vY2FjaGUvZGlzdC9lbW90aW9uLWNhY2hlLmJyb3dzZXIuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1pc0AxNi4xMy4xL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LWlzQDE2LjEzLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9ob2lzdC1ub24tcmVhY3Qtc3RhdGljc0AzLjMuMi9ub2RlX21vZHVsZXMvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MvZGlzdC9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy5janMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3JlYWN0QDExLjE0LjAvbm9kZV9tb2R1bGVzL0BlbW90aW9uL3JlYWN0L19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5icm93c2VyLmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGVtb3Rpb24rdXRpbHNAMS40LjIvbm9kZV9tb2R1bGVzL0BlbW90aW9uL3V0aWxzL2Rpc3QvZW1vdGlvbi11dGlscy5icm93c2VyLmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGVtb3Rpb24raGFzaEAwLjkuMi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vaGFzaC9kaXN0L2Vtb3Rpb24taGFzaC5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3VuaXRsZXNzQDAuMTAuMC9ub2RlX21vZHVsZXMvQGVtb3Rpb24vdW5pdGxlc3MvZGlzdC9lbW90aW9uLXVuaXRsZXNzLmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGVtb3Rpb24rc2VyaWFsaXplQDEuMy4zL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9zZXJpYWxpemUvZGlzdC9lbW90aW9uLXNlcmlhbGl6ZS5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3VzZS1pbnNlcnRpb24tZWZmZWN0LXdpdGgtZmFsbGJhY2tzQDEuMi4wL25vZGVfbW9kdWxlcy9AZW1vdGlvbi91c2UtaW5zZXJ0aW9uLWVmZmVjdC13aXRoLWZhbGxiYWNrcy9kaXN0L2Vtb3Rpb24tdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3MuYnJvd3Nlci5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3JlYWN0QDExLjE0LjAvbm9kZV9tb2R1bGVzL0BlbW90aW9uL3JlYWN0L2Rpc3QvZW1vdGlvbi1lbGVtZW50LWYwZGU5NjhlLmJyb3dzZXIuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZW1vdGlvbityZWFjdEAxMS4xNC4wL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9yZWFjdC9kaXN0L2Vtb3Rpb24tcmVhY3QuYnJvd3Nlci5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdGFnZ2VkVGVtcGxhdGVMaXRlcmFsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdEAxOS4wLjAvbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC5wcm9kdWN0aW9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdEAxOS4wLjAvbm9kZV9tb2R1bGVzL3JlYWN0L2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1kb21AMTkuMC4wL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vY2pzL3JlYWN0LWRvbS5wcm9kdWN0aW9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1kb21AMTkuMC4wL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BmbG9hdGluZy11aSt1dGlsc0AwLjIuOC9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3V0aWxzL2Rpc3QvZmxvYXRpbmctdWkudXRpbHMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZmxvYXRpbmctdWkrY29yZUAxLjYuNi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2NvcmUvZGlzdC9mbG9hdGluZy11aS5jb3JlLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGZsb2F0aW5nLXVpK3V0aWxzQDAuMi44L25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdXRpbHMvZGlzdC9mbG9hdGluZy11aS51dGlscy5kb20ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZmxvYXRpbmctdWkrZG9tQDEuNi4xMi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2RvbS9kaXN0L2Zsb2F0aW5nLXVpLmRvbS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3VzZS1pc29tb3JwaGljLWxheW91dC1lZmZlY3RAMS4yLjAvbm9kZV9tb2R1bGVzL3VzZS1pc29tb3JwaGljLWxheW91dC1lZmZlY3QvZGlzdC91c2UtaXNvbW9ycGhpYy1sYXlvdXQtZWZmZWN0LmJyb3dzZXIuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9kaXN0L2luZGV4LTY0MWVlNWI4LmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbWVtb2l6ZS1vbmVANi4wLjAvbm9kZV9tb2R1bGVzL21lbW9pemUtb25lL2Rpc3QvbWVtb2l6ZS1vbmUuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9kaXN0L1NlbGVjdC1hYWIwMjdmMy5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LXNlbGVjdEA1LjkuMC9ub2RlX21vZHVsZXMvcmVhY3Qtc2VsZWN0L2Rpc3QvcmVhY3Qtc2VsZWN0LmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHZ0YWl0cyt1c2UtbGF6eS1yZWZAMC4xLjMvbm9kZV9tb2R1bGVzL0B2dGFpdHMvdXNlLWxhenktcmVmL2Rpc3QvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3VzZS1pcy1tb3VudGVkLXJlZkAxLjUuMC9ub2RlX21vZHVsZXMvdXNlLWlzLW1vdW50ZWQtcmVmL2Rpc3QvdXNlLWlzLW1vdW50ZWQtcmVmLmVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby91c2UtbGF0ZXN0QDEuMy4wL25vZGVfbW9kdWxlcy91c2UtbGF0ZXN0L2Rpc3QvdXNlLWxhdGVzdC5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2tydXN0eWtyYWJAMS4xLjAvbm9kZV9tb2R1bGVzL2tydXN0eWtyYWIvZGlzdC9pbmRleC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3NsZWVwLXByb21pc2VAOS4xLjAvbm9kZV9tb2R1bGVzL3NsZWVwLXByb21pc2UvYnVpbGQvZXNtLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHNlem5hbStjb21wb3NlLXJlYWN0LXJlZnNAMS4wLjYvbm9kZV9tb2R1bGVzL0BzZXpuYW0vY29tcG9zZS1yZWFjdC1yZWZzL2NvbXBvc2VSZWZzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3QtYXN5bmMtcGFnaW5hdGVAMC43Ljcvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC1hc3luYy1wYWdpbmF0ZS9kaXN0L2VzbS9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvY29udGFjdC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvc2VydmljZXMvY29udGFjdC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdXVpZEAxMS4wLjMvbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9zdHJpbmdpZnkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3V1aWRAMTEuMC4zL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvcm5nLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby91dWlkQDExLjAuMy9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL25hdGl2ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdXVpZEAxMS4wLjMvbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci92NC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvYWNjb3VudC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvYWRkcmVzcy50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvcHJvZHVjdC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvcHJpY2UudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZGVsL3Bvcy50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvcGF5bWVudC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvc2hpcHBpbmcudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZGVsL29yZGVyLnRzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby90c2xpYkAyLjguMS9ub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvdXRpbC9pc0Z1bmN0aW9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC91dGlsL2NyZWF0ZUVycm9yQ2xhc3MuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3V0aWwvVW5zdWJzY3JpcHRpb25FcnJvci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvdXRpbC9hcnJSZW1vdmUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL1N1YnNjcmlwdGlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvY29uZmlnLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC9zY2hlZHVsZXIvdGltZW91dFByb3ZpZGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC91dGlsL3JlcG9ydFVuaGFuZGxlZEVycm9yLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC91dGlsL25vb3AuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3V0aWwvZXJyb3JDb250ZXh0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC9TdWJzY3JpYmVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC9zeW1ib2wvb2JzZXJ2YWJsZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvdXRpbC9pZGVudGl0eS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvdXRpbC9waXBlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC9PYnNlcnZhYmxlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC91dGlsL2xpZnQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL29wZXJhdG9ycy9PcGVyYXRvclN1YnNjcmliZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3V0aWwvT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL1N1YmplY3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL0JlaGF2aW9yU3ViamVjdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvc2NoZWR1bGVyL2RhdGVUaW1lc3RhbXBQcm92aWRlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvc2NoZWR1bGVyL0FjdGlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvc2NoZWR1bGVyL2ludGVydmFsUHJvdmlkZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3NjaGVkdWxlci9Bc3luY0FjdGlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvU2NoZWR1bGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC9zY2hlZHVsZXIvQXN5bmNTY2hlZHVsZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3NjaGVkdWxlci9hc3luYy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvb3BlcmF0b3JzL2RlYm91bmNlVGltZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvc3RhdGUvb3JkZXIudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3ByZWFjdEAxMC4yNS4zL25vZGVfbW9kdWxlcy9wcmVhY3QvZGlzdC9wcmVhY3QubW9kdWxlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1pY29uc0A1LjIuMS9ub2RlX21vZHVsZXMvcmVhY3QtaWNvbnMvbGliL2ljb25Db250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3QtaWNvbnNANS4yLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWljb25zL2xpYi9pY29uQmFzZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LWljb25zQDUuMi4xL25vZGVfbW9kdWxlcy9yZWFjdC1pY29ucy9oaS9pbmRleC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3RhaWx3aW5kLW1lcmdlQDIuNC4wL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9kaXN0L2J1bmRsZS1tanMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2hlbHBlcnMvaXMtb2JqZWN0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9oZWxwZXJzL2Nsb25lLWRlZXAubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQWNjb3JkaW9uL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0FsZXJ0L3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0F2YXRhci90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9CYWRnZS90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9CbG9ja3F1b3RlL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0JyZWFkY3J1bWIvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQnV0dG9uL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0NhcmQvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQ2Fyb3VzZWwvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQ2hlY2tib3gvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQ2xpcGJvYXJkL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RhcmtUaGVtZVRvZ2dsZS90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9EYXRlcGlja2VyL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RyYXdlci90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ecm9wZG93bi90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9GaWxlSW5wdXQvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRmxvYXRpbmdMYWJlbC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Gb290ZXIvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvSGVscGVyVGV4dC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9IUi90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9LYmQvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTGFiZWwvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTGlzdC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9MaXN0R3JvdXAvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTmF2YmFyL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL01lZ2FNZW51L3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL01vZGFsL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1BhZ2luYXRpb24vdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvUG9wb3Zlci90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Qcm9ncmVzcy90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9SYWRpby90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9SYW5nZVNsaWRlci90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9SYXRpbmcvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvU2VsZWN0L3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1NpZGViYXIvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvU3Bpbm5lci90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UYWJsZS90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UYWJzL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RleHRhcmVhL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RleHRJbnB1dC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UaW1lbGluZS90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ub2FzdC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ub2dnbGVTd2l0Y2gvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVG9vbHRpcC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0FjY29yZGlvbi9BY2NvcmRpb25QYW5lbENvbnRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQWNjb3JkaW9uL0FjY29yZGlvbkNvbnRlbnQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQWNjb3JkaW9uL0FjY29yZGlvblBhbmVsLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0FjY29yZGlvbi9BY2NvcmRpb25UaXRsZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9BY2NvcmRpb24vQWNjb3JkaW9uLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0F2YXRhci9BdmF0YXJHcm91cC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9BdmF0YXIvQXZhdGFyR3JvdXBDb3VudGVyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0F2YXRhci9BdmF0YXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQmFkZ2UvQmFkZ2UubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvU3Bpbm5lci9TcGlubmVyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0J1dHRvbi9CdXR0b25CYXNlLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0J1dHRvbi9CdXR0b25Hcm91cC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9CdXR0b24vQnV0dG9uLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Jhbm5lci9CYW5uZXJDb2xsYXBzZUJ1dHRvbi5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9CYW5uZXIvQmFubmVyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0JyZWFkY3J1bWIvQnJlYWRjcnVtYkl0ZW0ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQnJlYWRjcnVtYi9CcmVhZGNydW1iLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vY2xhc3NuYW1lc0AyLjUuMS9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZGVib3VuY2VAMi4xLjAvbm9kZV9tb2R1bGVzL2RlYm91bmNlL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2hlbHBlcnMvZHJhZy1zY3JvbGwvaW5kZXgubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQ2hlY2tib3gvQ2hlY2tib3gubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZmxvYXRpbmctdWkrcmVhY3RAMC4yNi4yMS9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3JlYWN0L2Rpc3QvZmxvYXRpbmctdWkucmVhY3QudXRpbHMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby90YWJiYWJsZUA2LjIuMC9ub2RlX21vZHVsZXMvdGFiYmFibGUvZGlzdC9pbmRleC5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BmbG9hdGluZy11aStyZWFjdC1kb21AMi4xLjIvbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9yZWFjdC1kb20vZGlzdC9mbG9hdGluZy11aS5yZWFjdC1kb20ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZmxvYXRpbmctdWkrcmVhY3RAMC4yNi4yMS9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3JlYWN0L2Rpc3QvZmxvYXRpbmctdWkucmVhY3QubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRmxvYXRpbmcvaGVscGVycy5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vaG9va3MvdXNlLWZsb2F0aW5nLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Zsb2F0aW5nL0Zsb2F0aW5nLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1Rvb2x0aXAvVG9vbHRpcC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LWljb25zQDUuMi4xL25vZGVfbW9kdWxlcy9yZWFjdC1pY29ucy9mYTYvaW5kZXgubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQ2xpcGJvYXJkL2hlbHBlcnMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQ2xpcGJvYXJkL0NsaXBib2FyZFdpdGhJY29uLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0NsaXBib2FyZC9DbGlwYm9hcmRXaXRoSWNvblRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQ2xpcGJvYXJkL0NsaXBib2FyZC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9IZWxwZXJUZXh0L0hlbHBlclRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGV4dElucHV0L1RleHRJbnB1dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9EYXRlcGlja2VyL0RhdGVwaWNrZXJDb250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RhdGVwaWNrZXIvaGVscGVycy5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9EYXRlcGlja2VyL1ZpZXdzL0RheXMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRGF0ZXBpY2tlci9WaWV3cy9EZWNhZGVzLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RhdGVwaWNrZXIvVmlld3MvTW9udGhzLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RhdGVwaWNrZXIvVmlld3MvWWVhcnMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRGF0ZXBpY2tlci9EYXRlcGlja2VyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RyYXdlci9EcmF3ZXJDb250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3QtaWNvbnNANS4yLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWljb25zL21kL2luZGV4Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RyYXdlci9EcmF3ZXJIZWFkZXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRHJhd2VyL0RyYXdlckl0ZW1zLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RyYXdlci9EcmF3ZXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd25Db250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Ryb3Bkb3duL0Ryb3Bkb3duRGl2aWRlci5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ecm9wZG93bi9Ecm9wZG93bkhlYWRlci5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ecm9wZG93bi9Ecm9wZG93bkl0ZW0ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd24ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRmlsZUlucHV0L0ZpbGVJbnB1dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9GbG9hdGluZ0xhYmVsL0Zsb2F0aW5nTGFiZWwubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRm9vdGVyL0Zvb3RlckJyYW5kLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Zvb3Rlci9Gb290ZXJDb3B5cmlnaHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRm9vdGVyL0Zvb3RlckRpdmlkZXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRm9vdGVyL0Zvb3Rlckljb24ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRm9vdGVyL0Zvb3RlckxpbmsubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRm9vdGVyL0Zvb3RlckxpbmtHcm91cC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Gb290ZXIvRm9vdGVyVGl0bGUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRm9vdGVyL0Zvb3Rlci5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9IUi9IUkljb24ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvSFIvSFJTcXVhcmUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvSFIvSFJUZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0hSL0hSVHJpbW1lZC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9IUi9IUi5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9MaXN0L0xpc3RJdGVtLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0xpc3QvTGlzdC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9MaXN0R3JvdXAvTGlzdEdyb3VwSXRlbS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9MaXN0R3JvdXAvTGlzdEdyb3VwLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL05hdmJhci9OYXZiYXJDb250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL05hdmJhci9OYXZiYXJCcmFuZC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9OYXZiYXIvTmF2YmFyQ29sbGFwc2UubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTmF2YmFyL05hdmJhckxpbmsubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1pY29uc0A1LjIuMS9ub2RlX21vZHVsZXMvcmVhY3QtaWNvbnMvZmEvaW5kZXgubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTmF2YmFyL05hdmJhclRvZ2dsZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9OYXZiYXIvTmF2YmFyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL01lZ2FNZW51L01lZ2FNZW51RHJvcGRvd24ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTWVnYU1lbnUvTWVnYU1lbnVEcm9wZG93blRvZ2dsZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9NZWdhTWVudS9NZWdhTWVudS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Nb2RhbC9Nb2RhbENvbnRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTW9kYWwvTW9kYWxCb2R5Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL01vZGFsL01vZGFsRm9vdGVyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL01vZGFsL01vZGFsSGVhZGVyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL01vZGFsL01vZGFsLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1BhZ2luYXRpb24vaGVscGVycy5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9QYWdpbmF0aW9uL1BhZ2luYXRpb25CdXR0b24ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvUGFnaW5hdGlvbi9QYWdpbmF0aW9uLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1JhZGlvL1JhZGlvLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1JhbmdlU2xpZGVyL1JhbmdlU2xpZGVyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1JhdGluZy9SYXRpbmdBZHZhbmNlZC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9SYXRpbmcvUmF0aW5nQ29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9SYXRpbmcvUmF0aW5nU3Rhci5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9SYXRpbmcvUmF0aW5nLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1NlbGVjdC9TZWxlY3QubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvU2lkZWJhci9TaWRlYmFyQ29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJJdGVtQ29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJDb2xsYXBzZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJDVEEubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvU2lkZWJhci9TaWRlYmFySXRlbS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJJdGVtR3JvdXAubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvU2lkZWJhci9TaWRlYmFySXRlbXMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvU2lkZWJhci9TaWRlYmFyTG9nby5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGFibGUvVGFibGVCb2R5Q29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UYWJsZS9UYWJsZUNvbnRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGFibGUvVGFibGVCb2R5Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RhYmxlL1RhYmxlQ2VsbC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UYWJsZS9UYWJsZUhlYWRDb250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RhYmxlL1RhYmxlSGVhZC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UYWJsZS9UYWJsZUhlYWRDZWxsLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RhYmxlL1RhYmxlUm93Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RhYmxlL1RhYmxlLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RhYnMvVGFiSXRlbS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UYWJzL1RhYnMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGV4dGFyZWEvVGV4dGFyZWEubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGltZWxpbmUvVGltZWxpbmVDb250ZW50Q29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UaW1lbGluZS9UaW1lbGluZUJvZHkubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGltZWxpbmUvVGltZWxpbmVDb250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RpbWVsaW5lL1RpbWVsaW5lSXRlbUNvbnRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGltZWxpbmUvVGltZWxpbmVDb250ZW50Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RpbWVsaW5lL1RpbWVsaW5lSXRlbS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UaW1lbGluZS9UaW1lbGluZVBvaW50Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RpbWVsaW5lL1RpbWVsaW5lVGltZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UaW1lbGluZS9UaW1lbGluZVRpdGxlLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RpbWVsaW5lL1RpbWVsaW5lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RvYXN0L1RvYXN0Q29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ub2FzdC9Ub2FzdFRvZ2dsZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ub2FzdC9Ub2FzdC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ub2dnbGVTd2l0Y2gvVG9nZ2xlU3dpdGNoLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9iYXNlL0J1dHRvbi50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2lzT2JqZWN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9hbGxvd0FkZGl0aW9uYWxJdGVtcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvYXNOdW1iZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2NvbnN0YW50cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZ2V0VWlPcHRpb25zLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9jYW5FeHBhbmQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2ZyZWVHbG9iYWwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3Jvb3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1N5bWJvbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0UmF3VGFnLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19vYmplY3RUb1N0cmluZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldFRhZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fb3ZlckFyZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0UHJvdG90eXBlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0TGlrZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1BsYWluT2JqZWN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9jcmVhdGVFcnJvckhhbmRsZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZUNsZWFyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2VxLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NvY0luZGV4T2YuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZURlbGV0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlR2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVIYXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZVNldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fTGlzdENhY2hlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0NsZWFyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0RlbGV0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tHZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrSGFzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRnVuY3Rpb24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcmVKc0RhdGEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzTWFza2VkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL190b1NvdXJjZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTmF0aXZlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRWYWx1ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TmF0aXZlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXAuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25hdGl2ZUNyZWF0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaENsZWFyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoRGVsZXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoR2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoSGFzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoU2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19IYXNoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUNsZWFyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleWFibGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE1hcERhdGEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlRGVsZXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVIYXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlU2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXBDYWNoZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tTZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1N0YWNrLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRDYWNoZUFkZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0Q2FjaGVIYXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1NldENhY2hlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVNvbWUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NhY2hlSGFzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbEFycmF5cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fVWludDhBcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0VG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxCeVRhZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlQdXNoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VHZXRBbGxLZXlzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUZpbHRlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9zdHViQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFN5bWJvbHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUaW1lcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzQXJndW1lbnRzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJndW1lbnRzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3N0dWJGYWxzZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0J1ZmZlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNJbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0xlbmd0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzVHlwZWRBcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVVuYXJ5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19ub2RlVXRpbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1R5cGVkQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5TGlrZUtleXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzUHJvdG90eXBlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVLZXlzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5TGlrZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9rZXlzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRBbGxLZXlzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbE9iamVjdHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX0RhdGFWaWV3LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19Qcm9taXNlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1dlYWtNYXAuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFRhZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRXF1YWxEZWVwLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNFcXVhbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0VxdWFsV2l0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZGVlcEVxdWFscy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1N5bWJvbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNLZXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvbWVtb2l6ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWVtb2l6ZUNhcHBlZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RyaW5nVG9QYXRoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheU1hcC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRvU3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3RvU3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jYXN0UGF0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fdG9LZXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VHZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRW1wdHkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2pzb25wb2ludGVyQDUuMC4xL25vZGVfbW9kdWxlcy9qc29ucG9pbnRlci9qc29ucG9pbnRlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlFYWNoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19kZWZpbmVQcm9wZXJ0eS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUFzc2lnblZhbHVlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25WYWx1ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weU9iamVjdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUFzc2lnbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlS2V5c0luLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5c0luLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXNJbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUFzc2lnbkluLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUJ1ZmZlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weUFycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5U3ltYm9scy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0U3ltYm9sc0luLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5U3ltYm9sc0luLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRBbGxLZXlzSW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2luaXRDbG9uZUFycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUFycmF5QnVmZmVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZURhdGFWaWV3LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZVJlZ0V4cC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVTeW1ib2wuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lVHlwZWRBcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faW5pdENsb25lQnlUYWcuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VDcmVhdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2luaXRDbG9uZU9iamVjdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTWFwLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTWFwLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNTZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNTZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VDbG9uZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9sYXN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU2xpY2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3BhcmVudC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVVuc2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jdXN0b21PbWl0Q2xvbmUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzRmxhdHRlbmFibGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGbGF0dGVuLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2ZsYXR0ZW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FwcGx5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyUmVzdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9jb25zdGFudC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pZGVudGl0eS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVNldFRvU3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zaG9ydE91dC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0VG9TdHJpbmcuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2ZsYXRSZXN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL29taXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2ZpbmRTY2hlbWFEZWZpbml0aW9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSGFzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNQYXRoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2hhcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc051bWJlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1N0cmluZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlSZWR1Y2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZUJhc2VGb3IuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGb3IuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGb3JPd24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZUJhc2VFYWNoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRWFjaC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTWF0Y2guanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzU3RyaWN0Q29tcGFyYWJsZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TWF0Y2hEYXRhLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXRjaGVzU3RyaWN0Q29tcGFyYWJsZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hdGNoZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VIYXNJbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9oYXNJbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hdGNoZXNQcm9wZXJ0eS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVByb3BlcnR5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUHJvcGVydHlEZWVwLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3Byb3BlcnR5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXRlcmF0ZWUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VSZWR1Y2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvcmVkdWNlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jYXN0RnVuY3Rpb24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3RyaW1tZWRFbmRJbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRyaW0uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9OdW1iZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9GaW5pdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9JbnRlZ2VyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3RpbWVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9nZXRPcHRpb25NYXRjaGluZ1NpbXBsZURpc2NyaW1pbmF0b3IuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3NjaGVtYS9nZXRNYXRjaGluZ09wdGlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvc2NoZW1hL2dldEZpcnN0TWF0Y2hpbmdPcHRpb24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNFcXVhbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVNldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9zZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvdHJhbnNmb3JtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25NZXJnZVZhbHVlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXlMaWtlT2JqZWN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zYWZlR2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3RvUGxhaW5PYmplY3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VNZXJnZURlZXAuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VNZXJnZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVJlc3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzSXRlcmF0ZWVDYWxsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVBc3NpZ25lci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9tZXJnZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9mbGF0dGVuRGVlcC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZpbmRJbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTmFOLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpY3RJbmRleE9mLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSW5kZXhPZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlJbmNsdWRlcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlJbmNsdWRlc1dpdGguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvbm9vcC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlU2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5pcS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC91bmlxLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2Nsb25lRGVlcC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hcC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVNvcnRCeS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29tcGFyZUFzY2VuZGluZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29tcGFyZU11bHRpcGxlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlT3JkZXJCeS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9zb3J0QnkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvdW5pcVdpdGguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvZGVmYXVsdHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJbnRlcnNlY3Rpb24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nhc3RBcnJheUxpa2VPYmplY3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaW50ZXJzZWN0aW9uV2l0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0Jvb2xlYW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2pzb24tc2NoZW1hLWNvbXBhcmVAMC4yLjIvbm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLWNvbXBhcmUvc3JjL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby92YWxpZGF0ZS5pby1hcnJheUAxLjAuNi9ub2RlX21vZHVsZXMvdmFsaWRhdGUuaW8tYXJyYXkvbGliL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby92YWxpZGF0ZS5pby1udW1iZXJAMS4wLjMvbm9kZV9tb2R1bGVzL3ZhbGlkYXRlLmlvLW51bWJlci9saWIvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3ZhbGlkYXRlLmlvLWludGVnZXJAMS4wLjUvbm9kZV9tb2R1bGVzL3ZhbGlkYXRlLmlvLWludGVnZXIvbGliL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby92YWxpZGF0ZS5pby1pbnRlZ2VyLWFycmF5QDEuMC4wL25vZGVfbW9kdWxlcy92YWxpZGF0ZS5pby1pbnRlZ2VyLWFycmF5L2xpYi9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdmFsaWRhdGUuaW8tZnVuY3Rpb25AMS4wLjIvbm9kZV9tb2R1bGVzL3ZhbGlkYXRlLmlvLWZ1bmN0aW9uL2xpYi9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vY29tcHV0ZS1nY2RAMS4yLjEvbm9kZV9tb2R1bGVzL2NvbXB1dGUtZ2NkL2xpYi9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vY29tcHV0ZS1sY21AMS4xLjIvbm9kZV9tb2R1bGVzL2NvbXB1dGUtbGNtL2xpYi9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3VzdG9tRGVmYXVsdHNNZXJnZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9tZXJnZVdpdGguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvZGVmYXVsdHNEZWVwLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2ludGVyc2VjdGlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUluZGV4T2ZXaXRoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUHVsbEFsbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9wdWxsQWxsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2ZvckVhY2guanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VEaWZmZXJlbmNlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3dpdGhvdXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2pzb24tc2NoZW1hLW1lcmdlLWFsbG9mQDAuOC4xL25vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1tZXJnZS1hbGxvZi9zcmMvY29tbW9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9qc29uLXNjaGVtYS1tZXJnZS1hbGxvZkAwLjguMS9ub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtbWVyZ2UtYWxsb2Yvc3JjL2NvbXBsZXgtcmVzb2x2ZXJzL3Byb3BlcnRpZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2pzb24tc2NoZW1hLW1lcmdlLWFsbG9mQDAuOC4xL25vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1tZXJnZS1hbGxvZi9zcmMvY29tcGxleC1yZXNvbHZlcnMvaXRlbXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2pzb24tc2NoZW1hLW1lcmdlLWFsbG9mQDAuOC4xL25vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1tZXJnZS1hbGxvZi9zcmMvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2dldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2d1ZXNzVHlwZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC91bmlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZ2V0U2NoZW1hVHlwZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvbWVyZ2VTY2hlbWFzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9zY2hlbWEvcmV0cmlldmVTY2hlbWEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3NjaGVtYS9nZXRDbG9zZXN0TWF0Y2hpbmdPcHRpb24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2lzRml4ZWRJdGVtcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvbWVyZ2VEZWZhdWx0c1dpdGhGb3JtRGF0YS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvbWVyZ2VPYmplY3RzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9pc0NvbnN0YW50LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9zY2hlbWEvaXNTZWxlY3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3NjaGVtYS9pc011bHRpU2VsZWN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9zY2hlbWEvZ2V0RGVmYXVsdEZvcm1TdGF0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvaXNDdXN0b21XaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3NjaGVtYS9pc0ZpbGVzQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3NjaGVtYS9nZXREaXNwbGF5TGFiZWwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3NjaGVtYS9tZXJnZVZhbGlkYXRpb25EYXRhLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9zY2hlbWEvc2FuaXRpemVEYXRhRm9yTmV3U2NoZW1hLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9zY2hlbWEvdG9JZFNjaGVtYS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvc2NoZW1hL3RvUGF0aFNjaGVtYS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvY3JlYXRlU2NoZW1hVXRpbHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2RhdGFVUkl0b0Jsb2IuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3BhZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZGF0ZVJhbmdlT3B0aW9ucy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvcmVwbGFjZVN0cmluZ1BhcmFtZXRlcnMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2VuZ2xpc2hTdHJpbmdUcmFuc2xhdG9yLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9lbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2VudW1PcHRpb25zRGVzZWxlY3RWYWx1ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZW51bU9wdGlvbnNJc1NlbGVjdGVkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9lbnVtT3B0aW9uc0luZGV4Rm9yVmFsdWUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNOaWwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2VudW1PcHRpb25zU2VsZWN0VmFsdWUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvc2V0V2l0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvRXJyb3JTY2hlbWFCdWlsZGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9nZXREYXRlRWxlbWVudFByb3BzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9yYW5nZVNwZWMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2dldElucHV0UHJvcHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2dldFN1Ym1pdEJ1dHRvbk9wdGlvbnMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2dldFRlbXBsYXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1pc0AxOC4zLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3QtaXNAMTguMy4xL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZ2V0V2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9oYXNXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2lkR2VuZXJhdG9ycy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvbGFiZWxWYWx1ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvbG9jYWxUb1VUQy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvdG9Db25zdGFudC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvb3B0aW9uc0xpc3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL29yZGVyUHJvcGVydGllcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvcGFyc2VEYXRlU3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9zY2hlbWFSZXF1aXJlc1RydWVWYWx1ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvc2hvdWxkUmVuZGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi90b0RhdGVTdHJpbmcuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3RvRXJyb3JMaXN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3RvUGF0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvdG9FcnJvclNjaGVtYS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvdW53cmFwRXJyb3JIYW5kbGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi91dGNUb0xvY2FsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi92YWxpZGF0aW9uRGF0YU1lcmdlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi93aXRoSWRSZWZQcmVmaXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2VudW1zLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby91cmktanNANC40LjEvbm9kZV9tb2R1bGVzL3VyaS1qcy9kaXN0L2VzNS91cmkuYWxsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mYXN0LWRlZXAtZXF1YWxAMy4xLjMvbm9kZV9tb2R1bGVzL2Zhc3QtZGVlcC1lcXVhbC9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL3VjczJsZW5ndGguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS91dGlsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2NvbXBpbGUvc2NoZW1hX29iai5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vanNvbi1zY2hlbWEtdHJhdmVyc2VAMC40LjEvbm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXRyYXZlcnNlL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2NvbXBpbGUvcmVzb2x2ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL2Vycm9yX2NsYXNzZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zhc3QtanNvbi1zdGFibGUtc3RyaW5naWZ5QDIuMS4wL25vZGVfbW9kdWxlcy9mYXN0LWpzb24tc3RhYmxlLXN0cmluZ2lmeS9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy92YWxpZGF0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2NhY2hlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2NvbXBpbGUvZm9ybWF0cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9yZWYuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvYWxsT2YuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvYW55T2YuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvY29tbWVudC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9jb25zdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9jb250YWlucy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9kZXBlbmRlbmNpZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvZW51bS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9mb3JtYXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvaWYuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvaXRlbXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvX2xpbWl0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL19saW1pdEl0ZW1zLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL19saW1pdExlbmd0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9fbGltaXRQcm9wZXJ0aWVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL211bHRpcGxlT2YuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvbm90LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL29uZU9mLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL3BhdHRlcm4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvcHJvcGVydGllcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9wcm9wZXJ0eU5hbWVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL3JlcXVpcmVkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL3VuaXF1ZUl0ZW1zLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2NvbXBpbGUvcnVsZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZGF0YS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL2FzeW5jLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL2N1c3RvbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kZWZpbml0aW9uX3NjaGVtYS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9rZXl3b3JkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2Fqdi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdmFsaWRhdG9yLWFqdjZANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi92YWxpZGF0b3ItYWp2Ni9saWIvY3JlYXRlQWp2SW5zdGFuY2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3ZhbGlkYXRvci1hanY2QDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdmFsaWRhdG9yLWFqdjYvbGliL3ZhbGlkYXRvci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdmFsaWRhdG9yLWFqdjZANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi92YWxpZGF0b3ItYWp2Ni9saWIvY3VzdG9taXplVmFsaWRhdG9yLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit2YWxpZGF0b3ItYWp2NkA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3ZhbGlkYXRvci1hanY2L2xpYi9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVBpY2tCeS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVBpY2suanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvcGljay5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbmFub2lkQDMuMy44L25vZGVfbW9kdWxlcy9uYW5vaWQvaW5kZXguYnJvd3Nlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvZmllbGRzL0FycmF5RmllbGQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9Cb29sZWFuRmllbGQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9NdWx0aVNjaGVtYUZpZWxkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy9maWVsZHMvTnVtYmVyRmllbGQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL21hcmtkb3duLXRvLWpzeEA3LjcuMi9ub2RlX21vZHVsZXMvbWFya2Rvd24tdG8tanN4L2Rpc3QvaW5kZXgubW9kZXJuLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3Vuc2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy9maWVsZHMvT2JqZWN0RmllbGQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9TY2hlbWFGaWVsZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvZmllbGRzL1N0cmluZ0ZpZWxkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy9maWVsZHMvTnVsbEZpZWxkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy9maWVsZHMvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9BcnJheUZpZWxkRGVzY3JpcHRpb25UZW1wbGF0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL0FycmF5RmllbGRJdGVtVGVtcGxhdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9BcnJheUZpZWxkVGVtcGxhdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9BcnJheUZpZWxkVGl0bGVUZW1wbGF0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL0Jhc2VJbnB1dFRlbXBsYXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvQnV0dG9uVGVtcGxhdGVzL1N1Ym1pdEJ1dHRvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL0J1dHRvblRlbXBsYXRlcy9JY29uQnV0dG9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvQnV0dG9uVGVtcGxhdGVzL0FkZEJ1dHRvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL0J1dHRvblRlbXBsYXRlcy9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL0Rlc2NyaXB0aW9uRmllbGQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9FcnJvckxpc3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9GaWVsZFRlbXBsYXRlL0xhYmVsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvRmllbGRUZW1wbGF0ZS9GaWVsZFRlbXBsYXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvRmllbGRFcnJvclRlbXBsYXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvRmllbGRIZWxwVGVtcGxhdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9PYmplY3RGaWVsZFRlbXBsYXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvVGl0bGVGaWVsZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL1Vuc3VwcG9ydGVkRmllbGQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9XcmFwSWZBZGRpdGlvbmFsVGVtcGxhdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9BbHREYXRlV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL0FsdERhdGVUaW1lV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL0NoZWNrYm94V2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL0NoZWNrYm94ZXNXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvQ29sb3JXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvRGF0ZVdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9EYXRlVGltZVdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9FbWFpbFdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9GaWxlV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL0hpZGRlbldpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9QYXNzd29yZFdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9SYWRpb1dpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9SYW5nZVdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9TZWxlY3RXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvVGV4dGFyZWFXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvVGV4dFdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9UaW1lV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL1VSTFdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9VcERvd25XaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9nZXREZWZhdWx0UmVnaXN0cnkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL0Zvcm0uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZGVsL2NvdW50cnkudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL3NlcnZpY2VzL2NvdW50cnkudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvY29udGFjdC9Db250YWN0TW9kYWwudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9zZXJ2aWNlcy9hZGRyZXNzLnRzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2NvbnRhY3QvQ29udGFjdE1vZGFsQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdHNsaWJAMi42LjIvbm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3N0eWxpc0A0LjMuMi9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9FbnVtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsaXNANC4zLjIvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvVXRpbGl0eS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc3R5bGlzQDQuMy4yL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL1Rva2VuaXplci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc3R5bGlzQDQuMy4yL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL1BhcnNlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc3R5bGlzQDQuMy4yL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL1ByZWZpeGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsaXNANC4zLjIvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvU2VyaWFsaXplci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc3R5bGlzQDQuMy4yL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL01pZGRsZXdhcmUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3VuaXRsZXNzQDAuOC4xL25vZGVfbW9kdWxlcy9AZW1vdGlvbi91bml0bGVzcy9kaXN0L2Vtb3Rpb24tdW5pdGxlc3MuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsZWQtY29tcG9uZW50c0A2LjEuMTMvbm9kZV9tb2R1bGVzL3N0eWxlZC1jb21wb25lbnRzL2Rpc3Qvc3R5bGVkLWNvbXBvbmVudHMuYnJvd3Nlci5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1ByaW1pdGl2ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJvcGVydHlLZXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFNwcmVhZDIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheVdpdGhIb2xlcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlMaWtlVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVSZXN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3Qtc2VsZWN0QDUuOS4wL25vZGVfbW9kdWxlcy9yZWFjdC1zZWxlY3QvZGlzdC91c2VTdGF0ZU1hbmFnZXItY2UyMzA2MWMuY2pzLnByb2QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3NldFByb3RvdHlwZU9mLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVTdXBlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aG91dEhvbGVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXRlcmFibGVUb0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVTcHJlYWQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGZsb2F0aW5nLXVpK2RvbUAxLjYuMTIvbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9kb20vZGlzdC9mbG9hdGluZy11aS5kb20uZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9kaXN0L2luZGV4LTY2NWM0ZWQ4LmNqcy5wcm9kLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9kaXN0L1NlbGVjdC0zNmQxNWY5My5janMucHJvZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3Qtc2VsZWN0QDUuOS4wL25vZGVfbW9kdWxlcy9yZWFjdC1zZWxlY3QvZGlzdC9yZWFjdC1zZWxlY3QuY2pzLnByb2QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LXNlbGVjdEA1LjkuMC9ub2RlX21vZHVsZXMvcmVhY3Qtc2VsZWN0L2Rpc3QvcmVhY3Qtc2VsZWN0LmNqcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3Qtc2VsZWN0QDUuOS4wL25vZGVfbW9kdWxlcy9yZWFjdC1zZWxlY3QvZGlzdC9yZWFjdC1zZWxlY3QuY2pzLmRlZmF1bHQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvYmFzZS9TZWxlY3RMYWJlbC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvY29udGFjdC9Db250YWN0U2VsZWN0LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9jb250YWN0L0FkZHJlc3NNb2RhbC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvY29udGFjdC9BZGRyZXNzTW9kYWxDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2NvbnRhY3QvQWRkcmVzc0RldGFpbC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvY29udGFjdC9BZGRyZXNzU2VsZWN0LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvc2VydmljZXMvYWNjb3VudC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9hY2NvdW50L0FjY291bnRTZWxlY3RDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2NvbnRhY3QvQ29udGFjdENvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvdHlwZS9UeXBlU2VsZWN0Q29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvc2VydmljZXMvc2hvcC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9zaG9wL1Nob3BTZWxlY3RDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2RyYWZ0L0RyYWZ0Q29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvc2VydmljZXMvb3JkZXIudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvYmFzZS9DdXJyZW5jeS50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvY2FsYy9DYWxjQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy90b3BiYXIvVG9wQmFyQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvcHJvZHVjdEdyb3VwLnRzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9zZXJ2aWNlcy9wcm9kdWN0Z3JvdXAudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LXNlbGVjdEA1LjkuMC9ub2RlX21vZHVsZXMvcmVhY3Qtc2VsZWN0L2Rpc3QvdXNlQXN5bmMtYmU2NTlhNTcuY2pzLnByb2QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LXNlbGVjdEA1LjkuMC9ub2RlX21vZHVsZXMvcmVhY3Qtc2VsZWN0L2FzeW5jL2Rpc3QvcmVhY3Qtc2VsZWN0LWFzeW5jLmNqcy5wcm9kLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9hc3luYy9kaXN0L3JlYWN0LXNlbGVjdC1hc3luYy5janMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LXNlbGVjdEA1LjkuMC9ub2RlX21vZHVsZXMvcmVhY3Qtc2VsZWN0L2FzeW5jL2Rpc3QvcmVhY3Qtc2VsZWN0LWFzeW5jLmNqcy5kZWZhdWx0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL3Byb2R1Y3QvUHJvZHVjdEdyb3VwU2VsZWN0LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvc2VydmljZXMvcHJvZHVjdC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdXNlLWRlYm91bmNlQDEwLjAuNC9ub2RlX21vZHVsZXMvdXNlLWRlYm91bmNlL2Rpc3QvaW5kZXgubW9kdWxlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL3Byb2R1Y3QvUHJvZHVjdFNlbGVjdC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvcHJvZHVjdC9Qcm9kdWN0Rm9ybS50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvcG9zaXRpb25zL0FkZFBvc2l0aW9uQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9wb3NpdGlvbnMvRWRpdFBvc2l0aW9uQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9wb3NpdGlvbnMvUG9zQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9wb3NpdGlvbnMvSXRlbXNDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL3Bvc2l0aW9ucy9Qb3NpdGlvbnNDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9zZXJ2aWNlcy9wYXltZW50LnRzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL3BheW1lbnQvUGF5bWVudENvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL3NlcnZpY2VzL3NoaXBwaW5nLnRzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL3NoaXBwaW5nL1NoaXBwaW5nQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9idXR0b24vQnV0dG9uQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vY29va2llQDEuMC4yL25vZGVfbW9kdWxlcy9jb29raWUvZGlzdC9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3Qtcm91dGVyQDcuMS4wL25vZGVfbW9kdWxlcy9yZWFjdC1yb3V0ZXIvZGlzdC9kZXZlbG9wbWVudC9jaHVuay1XM0haSkxVUS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvaW5mby9JbmZvRmllbGRDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL29yZGVyL09yZGVyQWxpYXNDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2Jhc2UvQmFzZUNvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL2FwcC9hcHAudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tYWluLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbkNvcHlyaWdodCAoQykgTWljcm9zb2Z0LiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlXG50aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZVxuTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVEhJUyBDT0RFIElTIFBST1ZJREVEIE9OIEFOICpBUyBJUyogQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxuS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBBTlkgSU1QTElFRFxuV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSxcbk1FUkNIQU5UQUJMSVRZIE9SIE5PTi1JTkZSSU5HRU1FTlQuXG5cblNlZSB0aGUgQXBhY2hlIFZlcnNpb24gMi4wIExpY2Vuc2UgZm9yIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbnZhciBSZWZsZWN0O1xuKGZ1bmN0aW9uIChSZWZsZWN0KSB7XG4gICAgLy8gTWV0YWRhdGEgUHJvcG9zYWxcbiAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhL1xuICAgIChmdW5jdGlvbiAoZmFjdG9yeSkge1xuICAgICAgICB2YXIgcm9vdCA9IHR5cGVvZiBnbG9iYWxUaGlzID09PSBcIm9iamVjdFwiID8gZ2xvYmFsVGhpcyA6XG4gICAgICAgICAgICB0eXBlb2YgZ2xvYmFsID09PSBcIm9iamVjdFwiID8gZ2xvYmFsIDpcbiAgICAgICAgICAgICAgICB0eXBlb2Ygc2VsZiA9PT0gXCJvYmplY3RcIiA/IHNlbGYgOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcyA9PT0gXCJvYmplY3RcIiA/IHRoaXMgOlxuICAgICAgICAgICAgICAgICAgICAgICAgc2xvcHB5TW9kZVRoaXMoKTtcbiAgICAgICAgdmFyIGV4cG9ydGVyID0gbWFrZUV4cG9ydGVyKFJlZmxlY3QpO1xuICAgICAgICBpZiAodHlwZW9mIHJvb3QuUmVmbGVjdCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgZXhwb3J0ZXIgPSBtYWtlRXhwb3J0ZXIocm9vdC5SZWZsZWN0LCBleHBvcnRlcik7XG4gICAgICAgIH1cbiAgICAgICAgZmFjdG9yeShleHBvcnRlciwgcm9vdCk7XG4gICAgICAgIGlmICh0eXBlb2Ygcm9vdC5SZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICByb290LlJlZmxlY3QgPSBSZWZsZWN0O1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIG1ha2VFeHBvcnRlcih0YXJnZXQsIHByZXZpb3VzKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHsgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuICAgICAgICAgICAgICAgIGlmIChwcmV2aW91cylcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGZ1bmN0aW9uVGhpcygpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uKFwicmV0dXJuIHRoaXM7XCIpKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoXykgeyB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gaW5kaXJlY3RFdmFsVGhpcygpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICh2b2lkIDAsIGV2YWwpKFwiKGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSkoKVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChfKSB7IH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzbG9wcHlNb2RlVGhpcygpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvblRoaXMoKSB8fCBpbmRpcmVjdEV2YWxUaGlzKCk7XG4gICAgICAgIH1cbiAgICB9KShmdW5jdGlvbiAoZXhwb3J0ZXIsIHJvb3QpIHtcbiAgICAgICAgdmFyIGhhc093biA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG4gICAgICAgIC8vIGZlYXR1cmUgdGVzdCBmb3IgU3ltYm9sIHN1cHBvcnRcbiAgICAgICAgdmFyIHN1cHBvcnRzU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiO1xuICAgICAgICB2YXIgdG9QcmltaXRpdmVTeW1ib2wgPSBzdXBwb3J0c1N5bWJvbCAmJiB0eXBlb2YgU3ltYm9sLnRvUHJpbWl0aXZlICE9PSBcInVuZGVmaW5lZFwiID8gU3ltYm9sLnRvUHJpbWl0aXZlIDogXCJAQHRvUHJpbWl0aXZlXCI7XG4gICAgICAgIHZhciBpdGVyYXRvclN5bWJvbCA9IHN1cHBvcnRzU3ltYm9sICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgIT09IFwidW5kZWZpbmVkXCIgPyBTeW1ib2wuaXRlcmF0b3IgOiBcIkBAaXRlcmF0b3JcIjtcbiAgICAgICAgdmFyIHN1cHBvcnRzQ3JlYXRlID0gdHlwZW9mIE9iamVjdC5jcmVhdGUgPT09IFwiZnVuY3Rpb25cIjsgLy8gZmVhdHVyZSB0ZXN0IGZvciBPYmplY3QuY3JlYXRlIHN1cHBvcnRcbiAgICAgICAgdmFyIHN1cHBvcnRzUHJvdG8gPSB7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5OyAvLyBmZWF0dXJlIHRlc3QgZm9yIF9fcHJvdG9fXyBzdXBwb3J0XG4gICAgICAgIHZhciBkb3duTGV2ZWwgPSAhc3VwcG9ydHNDcmVhdGUgJiYgIXN1cHBvcnRzUHJvdG87XG4gICAgICAgIHZhciBIYXNoTWFwID0ge1xuICAgICAgICAgICAgLy8gY3JlYXRlIGFuIG9iamVjdCBpbiBkaWN0aW9uYXJ5IG1vZGUgKGEuay5hLiBcInNsb3dcIiBtb2RlIGluIHY4KVxuICAgICAgICAgICAgY3JlYXRlOiBzdXBwb3J0c0NyZWF0ZVxuICAgICAgICAgICAgICAgID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gTWFrZURpY3Rpb25hcnkoT2JqZWN0LmNyZWF0ZShudWxsKSk7IH1cbiAgICAgICAgICAgICAgICA6IHN1cHBvcnRzUHJvdG9cbiAgICAgICAgICAgICAgICAgICAgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBNYWtlRGljdGlvbmFyeSh7IF9fcHJvdG9fXzogbnVsbCB9KTsgfVxuICAgICAgICAgICAgICAgICAgICA6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE1ha2VEaWN0aW9uYXJ5KHt9KTsgfSxcbiAgICAgICAgICAgIGhhczogZG93bkxldmVsXG4gICAgICAgICAgICAgICAgPyBmdW5jdGlvbiAobWFwLCBrZXkpIHsgcmV0dXJuIGhhc093bi5jYWxsKG1hcCwga2V5KTsgfVxuICAgICAgICAgICAgICAgIDogZnVuY3Rpb24gKG1hcCwga2V5KSB7IHJldHVybiBrZXkgaW4gbWFwOyB9LFxuICAgICAgICAgICAgZ2V0OiBkb3duTGV2ZWxcbiAgICAgICAgICAgICAgICA/IGZ1bmN0aW9uIChtYXAsIGtleSkgeyByZXR1cm4gaGFzT3duLmNhbGwobWFwLCBrZXkpID8gbWFwW2tleV0gOiB1bmRlZmluZWQ7IH1cbiAgICAgICAgICAgICAgICA6IGZ1bmN0aW9uIChtYXAsIGtleSkgeyByZXR1cm4gbWFwW2tleV07IH0sXG4gICAgICAgIH07XG4gICAgICAgIC8vIExvYWQgZ2xvYmFsIG9yIHNoaW0gdmVyc2lvbnMgb2YgTWFwLCBTZXQsIGFuZCBXZWFrTWFwXG4gICAgICAgIHZhciBmdW5jdGlvblByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihGdW5jdGlvbik7XG4gICAgICAgIHZhciBfTWFwID0gdHlwZW9mIE1hcCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBNYXAucHJvdG90eXBlLmVudHJpZXMgPT09IFwiZnVuY3Rpb25cIiA/IE1hcCA6IENyZWF0ZU1hcFBvbHlmaWxsKCk7XG4gICAgICAgIHZhciBfU2V0ID0gdHlwZW9mIFNldCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTZXQucHJvdG90eXBlLmVudHJpZXMgPT09IFwiZnVuY3Rpb25cIiA/IFNldCA6IENyZWF0ZVNldFBvbHlmaWxsKCk7XG4gICAgICAgIHZhciBfV2Vha01hcCA9IHR5cGVvZiBXZWFrTWFwID09PSBcImZ1bmN0aW9uXCIgPyBXZWFrTWFwIDogQ3JlYXRlV2Vha01hcFBvbHlmaWxsKCk7XG4gICAgICAgIHZhciByZWdpc3RyeVN5bWJvbCA9IHN1cHBvcnRzU3ltYm9sID8gU3ltYm9sLmZvcihcIkByZWZsZWN0LW1ldGFkYXRhOnJlZ2lzdHJ5XCIpIDogdW5kZWZpbmVkO1xuICAgICAgICB2YXIgbWV0YWRhdGFSZWdpc3RyeSA9IEdldE9yQ3JlYXRlTWV0YWRhdGFSZWdpc3RyeSgpO1xuICAgICAgICB2YXIgbWV0YWRhdGFQcm92aWRlciA9IENyZWF0ZU1ldGFkYXRhUHJvdmlkZXIobWV0YWRhdGFSZWdpc3RyeSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBcHBsaWVzIGEgc2V0IG9mIGRlY29yYXRvcnMgdG8gYSBwcm9wZXJ0eSBvZiBhIHRhcmdldCBvYmplY3QuXG4gICAgICAgICAqIEBwYXJhbSBkZWNvcmF0b3JzIEFuIGFycmF5IG9mIGRlY29yYXRvcnMuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3QuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgdG8gZGVjb3JhdGUuXG4gICAgICAgICAqIEBwYXJhbSBhdHRyaWJ1dGVzIChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSB0YXJnZXQga2V5LlxuICAgICAgICAgKiBAcmVtYXJrcyBEZWNvcmF0b3JzIGFyZSBhcHBsaWVkIGluIHJldmVyc2Ugb3JkZXIuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIEV4YW1wbGUgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnNBcnJheSwgRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnNBcnJheSwgRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnNBcnJheSwgRXhhbXBsZS5wcm90b3R5cGUsIFwicHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIsXG4gICAgICAgICAqICAgICAgICAgUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzQXJyYXksIEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIsXG4gICAgICAgICAqICAgICAgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIikpKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiLFxuICAgICAgICAgKiAgICAgICAgIFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9yc0FycmF5LCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIixcbiAgICAgICAgICogICAgICAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIikpKTtcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwgcHJvcGVydHlLZXksIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFJc0FycmF5KGRlY29yYXRvcnMpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFJc09iamVjdChhdHRyaWJ1dGVzKSAmJiAhSXNVbmRlZmluZWQoYXR0cmlidXRlcykgJiYgIUlzTnVsbChhdHRyaWJ1dGVzKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIGlmIChJc051bGwoYXR0cmlidXRlcykpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gRGVjb3JhdGVQcm9wZXJ0eShkZWNvcmF0b3JzLCB0YXJnZXQsIHByb3BlcnR5S2V5LCBhdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghSXNBcnJheShkZWNvcmF0b3JzKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIGlmICghSXNDb25zdHJ1Y3Rvcih0YXJnZXQpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIERlY29yYXRlQ29uc3RydWN0b3IoZGVjb3JhdG9ycywgdGFyZ2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImRlY29yYXRlXCIsIGRlY29yYXRlKTtcbiAgICAgICAgLy8gNC4xLjIgUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSlcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jcmVmbGVjdC5tZXRhZGF0YVxuICAgICAgICAvKipcbiAgICAgICAgICogQSBkZWZhdWx0IG1ldGFkYXRhIGRlY29yYXRvciBmYWN0b3J5IHRoYXQgY2FuIGJlIHVzZWQgb24gYSBjbGFzcywgY2xhc3MgbWVtYmVyLCBvciBwYXJhbWV0ZXIuXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YUtleSBUaGUga2V5IGZvciB0aGUgbWV0YWRhdGEgZW50cnkuXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YVZhbHVlIFRoZSB2YWx1ZSBmb3IgdGhlIG1ldGFkYXRhIGVudHJ5LlxuICAgICAgICAgKiBAcmV0dXJucyBBIGRlY29yYXRvciBmdW5jdGlvbi5cbiAgICAgICAgICogQHJlbWFya3NcbiAgICAgICAgICogSWYgYG1ldGFkYXRhS2V5YCBpcyBhbHJlYWR5IGRlZmluZWQgZm9yIHRoZSB0YXJnZXQgYW5kIHRhcmdldCBrZXksIHRoZVxuICAgICAgICAgKiBtZXRhZGF0YVZhbHVlIGZvciB0aGF0IGtleSB3aWxsIGJlIG92ZXJ3cml0dGVuLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIEBSZWZsZWN0Lm1ldGFkYXRhKGtleSwgdmFsdWUpXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvciwgVHlwZVNjcmlwdCBvbmx5KVxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgQFJlZmxlY3QubWV0YWRhdGEoa2V5LCB2YWx1ZSlcbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlLCBUeXBlU2NyaXB0IG9ubHkpXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICBAUmVmbGVjdC5tZXRhZGF0YShrZXksIHZhbHVlKVxuICAgICAgICAgKiAgICAgICAgIHByb3BlcnR5O1xuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIEBSZWZsZWN0Lm1ldGFkYXRhKGtleSwgdmFsdWUpXG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZCgpIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICBAUmVmbGVjdC5tZXRhZGF0YShrZXksIHZhbHVlKVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZCgpIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGRlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkgJiYgIUlzUHJvcGVydHlLZXkocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgT3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGVjb3JhdG9yO1xuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwibWV0YWRhdGFcIiwgbWV0YWRhdGEpO1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVmaW5lIGEgdW5pcXVlIG1ldGFkYXRhIGVudHJ5IG9uIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YUtleSBBIGtleSB1c2VkIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBtZXRhZGF0YS5cbiAgICAgICAgICogQHBhcmFtIG1ldGFkYXRhVmFsdWUgQSB2YWx1ZSB0aGF0IGNvbnRhaW5zIGF0dGFjaGVkIG1ldGFkYXRhLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRvIGRlZmluZSBtZXRhZGF0YS5cbiAgICAgICAgICogQHBhcmFtIHByb3BlcnR5S2V5IChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGtleSBmb3IgdGhlIHRhcmdldC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIG9wdGlvbnMsIEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIG9wdGlvbnMsIEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIG9wdGlvbnMsIEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBvcHRpb25zLCBFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIG9wdGlvbnMsIEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGRlY29yYXRvciBmYWN0b3J5IGFzIG1ldGFkYXRhLXByb2R1Y2luZyBhbm5vdGF0aW9uLlxuICAgICAgICAgKiAgICAgZnVuY3Rpb24gTXlBbm5vdGF0aW9uKG9wdGlvbnMpOiBEZWNvcmF0b3Ige1xuICAgICAgICAgKiAgICAgICAgIHJldHVybiAodGFyZ2V0LCBrZXk/KSA9PiBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgb3B0aW9ucywgdGFyZ2V0LCBrZXkpO1xuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZGVmaW5lTWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUsIHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwiZGVmaW5lTWV0YWRhdGFcIiwgZGVmaW5lTWV0YWRhdGEpO1xuICAgICAgICAvKipcbiAgICAgICAgICogR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgdGFyZ2V0IG9iamVjdCBvciBpdHMgcHJvdG90eXBlIGNoYWluIGhhcyB0aGUgcHJvdmlkZWQgbWV0YWRhdGEga2V5IGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YUtleSBBIGtleSB1c2VkIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBtZXRhZGF0YS5cbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCBvbiB3aGljaCB0aGUgbWV0YWRhdGEgaXMgZGVmaW5lZC5cbiAgICAgICAgICogQHBhcmFtIHByb3BlcnR5S2V5IChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGtleSBmb3IgdGhlIHRhcmdldC5cbiAgICAgICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBtZXRhZGF0YSBrZXkgd2FzIGRlZmluZWQgb24gdGhlIHRhcmdldCBvYmplY3Qgb3IgaXRzIHByb3RvdHlwZSBjaGFpbjsgb3RoZXJ3aXNlLCBgZmFsc2VgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc01ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc01ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc01ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwicHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc01ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gaGFzTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5SGFzTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwiaGFzTWV0YWRhdGFcIiwgaGFzTWV0YWRhdGEpO1xuICAgICAgICAvKipcbiAgICAgICAgICogR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgdGFyZ2V0IG9iamVjdCBoYXMgdGhlIHByb3ZpZGVkIG1ldGFkYXRhIGtleSBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbWV0YWRhdGEga2V5IHdhcyBkZWZpbmVkIG9uIHRoZSB0YXJnZXQgb2JqZWN0OyBvdGhlcndpc2UsIGBmYWxzZWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuaGFzT3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuaGFzT3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuaGFzT3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc093bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuaGFzT3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBoYXNPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlIYXNPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJoYXNPd25NZXRhZGF0YVwiLCBoYXNPd25NZXRhZGF0YSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBtZXRhZGF0YSB2YWx1ZSBmb3IgdGhlIHByb3ZpZGVkIG1ldGFkYXRhIGtleSBvbiB0aGUgdGFyZ2V0IG9iamVjdCBvciBpdHMgcHJvdG90eXBlIGNoYWluLlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIFRoZSBtZXRhZGF0YSB2YWx1ZSBmb3IgdGhlIG1ldGFkYXRhIGtleSBpZiBmb3VuZDsgb3RoZXJ3aXNlLCBgdW5kZWZpbmVkYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGdldE1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUdldE1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImdldE1ldGFkYXRhXCIsIGdldE1ldGFkYXRhKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgdGhlIG1ldGFkYXRhIHZhbHVlIGZvciB0aGUgcHJvdmlkZWQgbWV0YWRhdGEga2V5IG9uIHRoZSB0YXJnZXQgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIFRoZSBtZXRhZGF0YSB2YWx1ZSBmb3IgdGhlIG1ldGFkYXRhIGtleSBpZiBmb3VuZDsgb3RoZXJ3aXNlLCBgdW5kZWZpbmVkYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGdldE93bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUdldE93bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImdldE93bk1ldGFkYXRhXCIsIGdldE93bk1ldGFkYXRhKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgdGhlIG1ldGFkYXRhIGtleXMgZGVmaW5lZCBvbiB0aGUgdGFyZ2V0IG9iamVjdCBvciBpdHMgcHJvdG90eXBlIGNoYWluLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB1bmlxdWUgbWV0YWRhdGEga2V5cy5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YUtleXMoRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhS2V5cyhFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGFLZXlzKEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGFLZXlzKEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhS2V5cyhFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBnZXRNZXRhZGF0YUtleXModGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlNZXRhZGF0YUtleXModGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJnZXRNZXRhZGF0YUtleXNcIiwgZ2V0TWV0YWRhdGFLZXlzKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgdGhlIHVuaXF1ZSBtZXRhZGF0YSBrZXlzIGRlZmluZWQgb24gdGhlIHRhcmdldCBvYmplY3QuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHVuaXF1ZSBtZXRhZGF0YSBrZXlzLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhS2V5cyhFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGFLZXlzKEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YUtleXMoRXhhbXBsZS5wcm90b3R5cGUsIFwicHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YUtleXMoRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGFLZXlzKEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGdldE93bk1ldGFkYXRhS2V5cyh0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeU93bk1ldGFkYXRhS2V5cyh0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImdldE93bk1ldGFkYXRhS2V5c1wiLCBnZXRPd25NZXRhZGF0YUtleXMpO1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVsZXRlcyB0aGUgbWV0YWRhdGEgZW50cnkgZnJvbSB0aGUgdGFyZ2V0IG9iamVjdCB3aXRoIHRoZSBwcm92aWRlZCBrZXkuXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YUtleSBBIGtleSB1c2VkIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBtZXRhZGF0YS5cbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCBvbiB3aGljaCB0aGUgbWV0YWRhdGEgaXMgZGVmaW5lZC5cbiAgICAgICAgICogQHBhcmFtIHByb3BlcnR5S2V5IChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGtleSBmb3IgdGhlIHRhcmdldC5cbiAgICAgICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBtZXRhZGF0YSBlbnRyeSB3YXMgZm91bmQgYW5kIGRlbGV0ZWQ7IG90aGVyd2lzZSwgZmFsc2UuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZGVsZXRlTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZGVsZXRlTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZGVsZXRlTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmRlbGV0ZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZGVsZXRlTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBkZWxldGVNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIHZhciBwcm92aWRlciA9IEdldE1ldGFkYXRhUHJvdmlkZXIodGFyZ2V0LCBwcm9wZXJ0eUtleSwgLypDcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQocHJvdmlkZXIpKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiBwcm92aWRlci5PcmRpbmFyeURlbGV0ZU1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImRlbGV0ZU1ldGFkYXRhXCIsIGRlbGV0ZU1ldGFkYXRhKTtcbiAgICAgICAgZnVuY3Rpb24gRGVjb3JhdGVDb25zdHJ1Y3RvcihkZWNvcmF0b3JzLCB0YXJnZXQpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRlY29yYXRvciA9IGRlY29yYXRvcnNbaV07XG4gICAgICAgICAgICAgICAgdmFyIGRlY29yYXRlZCA9IGRlY29yYXRvcih0YXJnZXQpO1xuICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQoZGVjb3JhdGVkKSAmJiAhSXNOdWxsKGRlY29yYXRlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFJc0NvbnN0cnVjdG9yKGRlY29yYXRlZCkpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IGRlY29yYXRlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIERlY29yYXRlUHJvcGVydHkoZGVjb3JhdG9ycywgdGFyZ2V0LCBwcm9wZXJ0eUtleSwgZGVzY3JpcHRvcikge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGVjb3JhdG9yID0gZGVjb3JhdG9yc1tpXTtcbiAgICAgICAgICAgICAgICB2YXIgZGVjb3JhdGVkID0gZGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHlLZXksIGRlc2NyaXB0b3IpO1xuICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQoZGVjb3JhdGVkKSAmJiAhSXNOdWxsKGRlY29yYXRlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFJc09iamVjdChkZWNvcmF0ZWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yID0gZGVjb3JhdGVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS4xLjEgT3JkaW5hcnlIYXNNZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnloYXNtZXRhZGF0YVxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUhhc01ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gICAgICAgICAgICB2YXIgaGFzT3duID0gT3JkaW5hcnlIYXNPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCk7XG4gICAgICAgICAgICBpZiAoaGFzT3duKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgdmFyIHBhcmVudCA9IE9yZGluYXJ5R2V0UHJvdG90eXBlT2YoTyk7XG4gICAgICAgICAgICBpZiAoIUlzTnVsbChwYXJlbnQpKVxuICAgICAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUhhc01ldGFkYXRhKE1ldGFkYXRhS2V5LCBwYXJlbnQsIFApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS4yLjEgT3JkaW5hcnlIYXNPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnloYXNvd25tZXRhZGF0YVxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gICAgICAgICAgICB2YXIgcHJvdmlkZXIgPSBHZXRNZXRhZGF0YVByb3ZpZGVyKE8sIFAsIC8qQ3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKHByb3ZpZGVyKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gVG9Cb29sZWFuKHByb3ZpZGVyLk9yZGluYXJ5SGFzT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApKTtcbiAgICAgICAgfVxuICAgICAgICAvLyAzLjEuMy4xIE9yZGluYXJ5R2V0TWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApXG4gICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5Z2V0bWV0YWRhdGFcbiAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlHZXRNZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCkge1xuICAgICAgICAgICAgdmFyIGhhc093biA9IE9yZGluYXJ5SGFzT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApO1xuICAgICAgICAgICAgaWYgKGhhc093bilcbiAgICAgICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlHZXRPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCk7XG4gICAgICAgICAgICB2YXIgcGFyZW50ID0gT3JkaW5hcnlHZXRQcm90b3R5cGVPZihPKTtcbiAgICAgICAgICAgIGlmICghSXNOdWxsKHBhcmVudCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5R2V0TWV0YWRhdGEoTWV0YWRhdGFLZXksIHBhcmVudCwgUCk7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS40LjEgT3JkaW5hcnlHZXRPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnlnZXRvd25tZXRhZGF0YVxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUdldE93bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gICAgICAgICAgICB2YXIgcHJvdmlkZXIgPSBHZXRNZXRhZGF0YVByb3ZpZGVyKE8sIFAsIC8qQ3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKHByb3ZpZGVyKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICByZXR1cm4gcHJvdmlkZXIuT3JkaW5hcnlHZXRPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMy4xLjUuMSBPcmRpbmFyeURlZmluZU93bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBNZXRhZGF0YVZhbHVlLCBPLCBQKVxuICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeWRlZmluZW93bm1ldGFkYXRhXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE1ldGFkYXRhVmFsdWUsIE8sIFApIHtcbiAgICAgICAgICAgIHZhciBwcm92aWRlciA9IEdldE1ldGFkYXRhUHJvdmlkZXIoTywgUCwgLypDcmVhdGUqLyB0cnVlKTtcbiAgICAgICAgICAgIHByb3ZpZGVyLk9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE1ldGFkYXRhVmFsdWUsIE8sIFApO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS42LjEgT3JkaW5hcnlNZXRhZGF0YUtleXMoTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnltZXRhZGF0YWtleXNcbiAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlNZXRhZGF0YUtleXMoTywgUCkge1xuICAgICAgICAgICAgdmFyIG93bktleXMgPSBPcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhPLCBQKTtcbiAgICAgICAgICAgIHZhciBwYXJlbnQgPSBPcmRpbmFyeUdldFByb3RvdHlwZU9mKE8pO1xuICAgICAgICAgICAgaWYgKHBhcmVudCA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICByZXR1cm4gb3duS2V5cztcbiAgICAgICAgICAgIHZhciBwYXJlbnRLZXlzID0gT3JkaW5hcnlNZXRhZGF0YUtleXMocGFyZW50LCBQKTtcbiAgICAgICAgICAgIGlmIChwYXJlbnRLZXlzLmxlbmd0aCA8PSAwKVxuICAgICAgICAgICAgICAgIHJldHVybiBvd25LZXlzO1xuICAgICAgICAgICAgaWYgKG93bktleXMubGVuZ3RoIDw9IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudEtleXM7XG4gICAgICAgICAgICB2YXIgc2V0ID0gbmV3IF9TZXQoKTtcbiAgICAgICAgICAgIHZhciBrZXlzID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDAsIG93bktleXNfMSA9IG93bktleXM7IF9pIDwgb3duS2V5c18xLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBvd25LZXlzXzFbX2ldO1xuICAgICAgICAgICAgICAgIHZhciBoYXNLZXkgPSBzZXQuaGFzKGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKCFoYXNLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBfYSA9IDAsIHBhcmVudEtleXNfMSA9IHBhcmVudEtleXM7IF9hIDwgcGFyZW50S2V5c18xLmxlbmd0aDsgX2ErKykge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBwYXJlbnRLZXlzXzFbX2FdO1xuICAgICAgICAgICAgICAgIHZhciBoYXNLZXkgPSBzZXQuaGFzKGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKCFoYXNLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ga2V5cztcbiAgICAgICAgfVxuICAgICAgICAvLyAzLjEuNy4xIE9yZGluYXJ5T3duTWV0YWRhdGFLZXlzKE8sIFApXG4gICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5b3dubWV0YWRhdGFrZXlzXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5T3duTWV0YWRhdGFLZXlzKE8sIFApIHtcbiAgICAgICAgICAgIHZhciBwcm92aWRlciA9IEdldE1ldGFkYXRhUHJvdmlkZXIoTywgUCwgLypjcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoIXByb3ZpZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVyLk9yZGluYXJ5T3duTWV0YWRhdGFLZXlzKE8sIFApO1xuICAgICAgICB9XG4gICAgICAgIC8vIDYgRUNNQVNjcmlwdCBEYXRhIFR5cGVzIGFuZCBWYWx1ZXNcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZWNtYXNjcmlwdC1kYXRhLXR5cGVzLWFuZC12YWx1ZXNcbiAgICAgICAgZnVuY3Rpb24gVHlwZSh4KSB7XG4gICAgICAgICAgICBpZiAoeCA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICByZXR1cm4gMSAvKiBOdWxsICovO1xuICAgICAgICAgICAgc3dpdGNoICh0eXBlb2YgeCkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJ1bmRlZmluZWRcIjogcmV0dXJuIDAgLyogVW5kZWZpbmVkICovO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJib29sZWFuXCI6IHJldHVybiAyIC8qIEJvb2xlYW4gKi87XG4gICAgICAgICAgICAgICAgY2FzZSBcInN0cmluZ1wiOiByZXR1cm4gMyAvKiBTdHJpbmcgKi87XG4gICAgICAgICAgICAgICAgY2FzZSBcInN5bWJvbFwiOiByZXR1cm4gNCAvKiBTeW1ib2wgKi87XG4gICAgICAgICAgICAgICAgY2FzZSBcIm51bWJlclwiOiByZXR1cm4gNSAvKiBOdW1iZXIgKi87XG4gICAgICAgICAgICAgICAgY2FzZSBcIm9iamVjdFwiOiByZXR1cm4geCA9PT0gbnVsbCA/IDEgLyogTnVsbCAqLyA6IDYgLyogT2JqZWN0ICovO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiA2IC8qIE9iamVjdCAqLztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyA2LjEuMSBUaGUgVW5kZWZpbmVkIFR5cGVcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcy11bmRlZmluZWQtdHlwZVxuICAgICAgICBmdW5jdGlvbiBJc1VuZGVmaW5lZCh4KSB7XG4gICAgICAgICAgICByZXR1cm4geCA9PT0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vIDYuMS4yIFRoZSBOdWxsIFR5cGVcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcy1udWxsLXR5cGVcbiAgICAgICAgZnVuY3Rpb24gSXNOdWxsKHgpIHtcbiAgICAgICAgICAgIHJldHVybiB4ID09PSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIC8vIDYuMS41IFRoZSBTeW1ib2wgVHlwZVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzLXN5bWJvbC10eXBlXG4gICAgICAgIGZ1bmN0aW9uIElzU3ltYm9sKHgpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgeCA9PT0gXCJzeW1ib2xcIjtcbiAgICAgICAgfVxuICAgICAgICAvLyA2LjEuNyBUaGUgT2JqZWN0IFR5cGVcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LXR5cGVcbiAgICAgICAgZnVuY3Rpb24gSXNPYmplY3QoeCkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB4ID09PSBcIm9iamVjdFwiID8geCAhPT0gbnVsbCA6IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4xIFR5cGUgQ29udmVyc2lvblxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10eXBlLWNvbnZlcnNpb25cbiAgICAgICAgLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG4gICAgICAgIGZ1bmN0aW9uIFRvUHJpbWl0aXZlKGlucHV0LCBQcmVmZXJyZWRUeXBlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKFR5cGUoaW5wdXQpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwIC8qIFVuZGVmaW5lZCAqLzogcmV0dXJuIGlucHV0O1xuICAgICAgICAgICAgICAgIGNhc2UgMSAvKiBOdWxsICovOiByZXR1cm4gaW5wdXQ7XG4gICAgICAgICAgICAgICAgY2FzZSAyIC8qIEJvb2xlYW4gKi86IHJldHVybiBpbnB1dDtcbiAgICAgICAgICAgICAgICBjYXNlIDMgLyogU3RyaW5nICovOiByZXR1cm4gaW5wdXQ7XG4gICAgICAgICAgICAgICAgY2FzZSA0IC8qIFN5bWJvbCAqLzogcmV0dXJuIGlucHV0O1xuICAgICAgICAgICAgICAgIGNhc2UgNSAvKiBOdW1iZXIgKi86IHJldHVybiBpbnB1dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBoaW50ID0gUHJlZmVycmVkVHlwZSA9PT0gMyAvKiBTdHJpbmcgKi8gPyBcInN0cmluZ1wiIDogUHJlZmVycmVkVHlwZSA9PT0gNSAvKiBOdW1iZXIgKi8gPyBcIm51bWJlclwiIDogXCJkZWZhdWx0XCI7XG4gICAgICAgICAgICB2YXIgZXhvdGljVG9QcmltID0gR2V0TWV0aG9kKGlucHV0LCB0b1ByaW1pdGl2ZVN5bWJvbCk7XG4gICAgICAgICAgICBpZiAoZXhvdGljVG9QcmltICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gZXhvdGljVG9QcmltLmNhbGwoaW5wdXQsIGhpbnQpO1xuICAgICAgICAgICAgICAgIGlmIChJc09iamVjdChyZXN1bHQpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeVRvUHJpbWl0aXZlKGlucHV0LCBoaW50ID09PSBcImRlZmF1bHRcIiA/IFwibnVtYmVyXCIgOiBoaW50KTtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjEuMS4xIE9yZGluYXJ5VG9QcmltaXRpdmUoTywgaGludClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb3JkaW5hcnl0b3ByaW1pdGl2ZVxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeVRvUHJpbWl0aXZlKE8sIGhpbnQpIHtcbiAgICAgICAgICAgIGlmIChoaW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRvU3RyaW5nXzEgPSBPLnRvU3RyaW5nO1xuICAgICAgICAgICAgICAgIGlmIChJc0NhbGxhYmxlKHRvU3RyaW5nXzEpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB0b1N0cmluZ18xLmNhbGwoTyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QocmVzdWx0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciB2YWx1ZU9mID0gTy52YWx1ZU9mO1xuICAgICAgICAgICAgICAgIGlmIChJc0NhbGxhYmxlKHZhbHVlT2YpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB2YWx1ZU9mLmNhbGwoTyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QocmVzdWx0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlT2YgPSBPLnZhbHVlT2Y7XG4gICAgICAgICAgICAgICAgaWYgKElzQ2FsbGFibGUodmFsdWVPZikpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHZhbHVlT2YuY2FsbChPKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFJc09iamVjdChyZXN1bHQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHRvU3RyaW5nXzIgPSBPLnRvU3RyaW5nO1xuICAgICAgICAgICAgICAgIGlmIChJc0NhbGxhYmxlKHRvU3RyaW5nXzIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB0b1N0cmluZ18yLmNhbGwoTyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QocmVzdWx0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMS4yIFRvQm9vbGVhbihhcmd1bWVudClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLzIwMTYvI3NlYy10b2Jvb2xlYW5cbiAgICAgICAgZnVuY3Rpb24gVG9Cb29sZWFuKGFyZ3VtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gISFhcmd1bWVudDtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjEuMTIgVG9TdHJpbmcoYXJndW1lbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvc3RyaW5nXG4gICAgICAgIGZ1bmN0aW9uIFRvU3RyaW5nKGFyZ3VtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIiArIGFyZ3VtZW50O1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMS4xNCBUb1Byb3BlcnR5S2V5KGFyZ3VtZW50KVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b3Byb3BlcnR5a2V5XG4gICAgICAgIGZ1bmN0aW9uIFRvUHJvcGVydHlLZXkoYXJndW1lbnQpIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBUb1ByaW1pdGl2ZShhcmd1bWVudCwgMyAvKiBTdHJpbmcgKi8pO1xuICAgICAgICAgICAgaWYgKElzU3ltYm9sKGtleSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgICAgIHJldHVybiBUb1N0cmluZyhrZXkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMiBUZXN0aW5nIGFuZCBDb21wYXJpc29uIE9wZXJhdGlvbnNcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdGVzdGluZy1hbmQtY29tcGFyaXNvbi1vcGVyYXRpb25zXG4gICAgICAgIC8vIDcuMi4yIElzQXJyYXkoYXJndW1lbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzYXJyYXlcbiAgICAgICAgZnVuY3Rpb24gSXNBcnJheShhcmd1bWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXlcbiAgICAgICAgICAgICAgICA/IEFycmF5LmlzQXJyYXkoYXJndW1lbnQpXG4gICAgICAgICAgICAgICAgOiBhcmd1bWVudCBpbnN0YW5jZW9mIE9iamVjdFxuICAgICAgICAgICAgICAgICAgICA/IGFyZ3VtZW50IGluc3RhbmNlb2YgQXJyYXlcbiAgICAgICAgICAgICAgICAgICAgOiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpID09PSBcIltvYmplY3QgQXJyYXldXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4yLjMgSXNDYWxsYWJsZShhcmd1bWVudClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXNjYWxsYWJsZVxuICAgICAgICBmdW5jdGlvbiBJc0NhbGxhYmxlKGFyZ3VtZW50KSB7XG4gICAgICAgICAgICAvLyBOT1RFOiBUaGlzIGlzIGFuIGFwcHJveGltYXRpb24gYXMgd2UgY2Fubm90IGNoZWNrIGZvciBbW0NhbGxdXSBpbnRlcm5hbCBtZXRob2QuXG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09PSBcImZ1bmN0aW9uXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4yLjQgSXNDb25zdHJ1Y3Rvcihhcmd1bWVudClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXNjb25zdHJ1Y3RvclxuICAgICAgICBmdW5jdGlvbiBJc0NvbnN0cnVjdG9yKGFyZ3VtZW50KSB7XG4gICAgICAgICAgICAvLyBOT1RFOiBUaGlzIGlzIGFuIGFwcHJveGltYXRpb24gYXMgd2UgY2Fubm90IGNoZWNrIGZvciBbW0NvbnN0cnVjdF1dIGludGVybmFsIG1ldGhvZC5cbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT09IFwiZnVuY3Rpb25cIjtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjIuNyBJc1Byb3BlcnR5S2V5KGFyZ3VtZW50KVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pc3Byb3BlcnR5a2V5XG4gICAgICAgIGZ1bmN0aW9uIElzUHJvcGVydHlLZXkoYXJndW1lbnQpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoVHlwZShhcmd1bWVudCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDMgLyogU3RyaW5nICovOiByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDQgLyogU3ltYm9sICovOiByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gU2FtZVZhbHVlWmVybyh4LCB5KSB7XG4gICAgICAgICAgICByZXR1cm4geCA9PT0geSB8fCB4ICE9PSB4ICYmIHkgIT09IHk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4zIE9wZXJhdGlvbnMgb24gT2JqZWN0c1xuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vcGVyYXRpb25zLW9uLW9iamVjdHNcbiAgICAgICAgLy8gNy4zLjkgR2V0TWV0aG9kKFYsIFApXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWdldG1ldGhvZFxuICAgICAgICBmdW5jdGlvbiBHZXRNZXRob2QoViwgUCkge1xuICAgICAgICAgICAgdmFyIGZ1bmMgPSBWW1BdO1xuICAgICAgICAgICAgaWYgKGZ1bmMgPT09IHVuZGVmaW5lZCB8fCBmdW5jID09PSBudWxsKVxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAoIUlzQ2FsbGFibGUoZnVuYykpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmM7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy40IE9wZXJhdGlvbnMgb24gSXRlcmF0b3IgT2JqZWN0c1xuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vcGVyYXRpb25zLW9uLWl0ZXJhdG9yLW9iamVjdHNcbiAgICAgICAgZnVuY3Rpb24gR2V0SXRlcmF0b3Iob2JqKSB7XG4gICAgICAgICAgICB2YXIgbWV0aG9kID0gR2V0TWV0aG9kKG9iaiwgaXRlcmF0b3JTeW1ib2wpO1xuICAgICAgICAgICAgaWYgKCFJc0NhbGxhYmxlKG1ldGhvZCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpOyAvLyBmcm9tIENhbGxcbiAgICAgICAgICAgIHZhciBpdGVyYXRvciA9IG1ldGhvZC5jYWxsKG9iaik7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KGl0ZXJhdG9yKSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3I7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy40LjQgSXRlcmF0b3JWYWx1ZShpdGVyUmVzdWx0KVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvMjAxNi8jc2VjLWl0ZXJhdG9ydmFsdWVcbiAgICAgICAgZnVuY3Rpb24gSXRlcmF0b3JWYWx1ZShpdGVyUmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlclJlc3VsdC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjQuNSBJdGVyYXRvclN0ZXAoaXRlcmF0b3IpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWl0ZXJhdG9yc3RlcFxuICAgICAgICBmdW5jdGlvbiBJdGVyYXRvclN0ZXAoaXRlcmF0b3IpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBpdGVyYXRvci5uZXh0KCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LmRvbmUgPyBmYWxzZSA6IHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjQuNiBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCBjb21wbGV0aW9uKVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pdGVyYXRvcmNsb3NlXG4gICAgICAgIGZ1bmN0aW9uIEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IpIHtcbiAgICAgICAgICAgIHZhciBmID0gaXRlcmF0b3JbXCJyZXR1cm5cIl07XG4gICAgICAgICAgICBpZiAoZilcbiAgICAgICAgICAgICAgICBmLmNhbGwoaXRlcmF0b3IpO1xuICAgICAgICB9XG4gICAgICAgIC8vIDkuMSBPcmRpbmFyeSBPYmplY3QgSW50ZXJuYWwgTWV0aG9kcyBhbmQgSW50ZXJuYWwgU2xvdHNcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb3JkaW5hcnktb2JqZWN0LWludGVybmFsLW1ldGhvZHMtYW5kLWludGVybmFsLXNsb3RzXG4gICAgICAgIC8vIDkuMS4xLjEgT3JkaW5hcnlHZXRQcm90b3R5cGVPZihPKVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vcmRpbmFyeWdldHByb3RvdHlwZW9mXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5R2V0UHJvdG90eXBlT2YoTykge1xuICAgICAgICAgICAgdmFyIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBPICE9PSBcImZ1bmN0aW9uXCIgfHwgTyA9PT0gZnVuY3Rpb25Qcm90b3R5cGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3RvO1xuICAgICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHNldCBfX3Byb3RvX18gaW4gRVM1LCBhcyBpdCdzIG5vbi1zdGFuZGFyZC5cbiAgICAgICAgICAgIC8vIFRyeSB0byBkZXRlcm1pbmUgdGhlIHN1cGVyY2xhc3MgY29uc3RydWN0b3IuIENvbXBhdGlibGUgaW1wbGVtZW50YXRpb25zXG4gICAgICAgICAgICAvLyBtdXN0IGVpdGhlciBzZXQgX19wcm90b19fIG9uIGEgc3ViY2xhc3MgY29uc3RydWN0b3IgdG8gdGhlIHN1cGVyY2xhc3MgY29uc3RydWN0b3IsXG4gICAgICAgICAgICAvLyBvciBlbnN1cmUgZWFjaCBjbGFzcyBoYXMgYSB2YWxpZCBgY29uc3RydWN0b3JgIHByb3BlcnR5IG9uIGl0cyBwcm90b3R5cGUgdGhhdFxuICAgICAgICAgICAgLy8gcG9pbnRzIGJhY2sgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgRnVuY3Rpb24uW1tQcm90b3R5cGVdXSwgdGhlbiB0aGlzIGlzIGRlZmluYXRlbHkgaW5oZXJpdGVkLlxuICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgY2FzZSB3aGVuIGluIEVTNiBvciB3aGVuIHVzaW5nIF9fcHJvdG9fXyBpbiBhIGNvbXBhdGlibGUgYnJvd3Nlci5cbiAgICAgICAgICAgIGlmIChwcm90byAhPT0gZnVuY3Rpb25Qcm90b3R5cGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3RvO1xuICAgICAgICAgICAgLy8gSWYgdGhlIHN1cGVyIHByb3RvdHlwZSBpcyBPYmplY3QucHJvdG90eXBlLCBudWxsLCBvciB1bmRlZmluZWQsIHRoZW4gd2UgY2Fubm90IGRldGVybWluZSB0aGUgaGVyaXRhZ2UuXG4gICAgICAgICAgICB2YXIgcHJvdG90eXBlID0gTy5wcm90b3R5cGU7XG4gICAgICAgICAgICB2YXIgcHJvdG90eXBlUHJvdG8gPSBwcm90b3R5cGUgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvdHlwZSk7XG4gICAgICAgICAgICBpZiAocHJvdG90eXBlUHJvdG8gPT0gbnVsbCB8fCBwcm90b3R5cGVQcm90byA9PT0gT2JqZWN0LnByb3RvdHlwZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvdG87XG4gICAgICAgICAgICAvLyBJZiB0aGUgY29uc3RydWN0b3Igd2FzIG5vdCBhIGZ1bmN0aW9uLCB0aGVuIHdlIGNhbm5vdCBkZXRlcm1pbmUgdGhlIGhlcml0YWdlLlxuICAgICAgICAgICAgdmFyIGNvbnN0cnVjdG9yID0gcHJvdG90eXBlUHJvdG8uY29uc3RydWN0b3I7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnN0cnVjdG9yICE9PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3RvO1xuICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBzb21lIGtpbmQgb2Ygc2VsZi1yZWZlcmVuY2UsIHRoZW4gd2UgY2Fubm90IGRldGVybWluZSB0aGUgaGVyaXRhZ2UuXG4gICAgICAgICAgICBpZiAoY29uc3RydWN0b3IgPT09IE8pXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3RvO1xuICAgICAgICAgICAgLy8gd2UgaGF2ZSBhIHByZXR0eSBnb29kIGd1ZXNzIGF0IHRoZSBoZXJpdGFnZS5cbiAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjtcbiAgICAgICAgfVxuICAgICAgICAvLyBHbG9iYWwgbWV0YWRhdGEgcmVnaXN0cnlcbiAgICAgICAgLy8gLSBBbGxvd3MgYGltcG9ydCBcInJlZmxlY3QtbWV0YWRhdGFcImAgYW5kIGBpbXBvcnQgXCJyZWZsZWN0LW1ldGFkYXRhL25vLWNvbmZsaWN0XCJgIHRvIGludGVyb3BlcmF0ZS5cbiAgICAgICAgLy8gLSBVc2VzIGlzb2xhdGVkIG1ldGFkYXRhIGlmIGBSZWZsZWN0YCBpcyBmcm96ZW4gYmVmb3JlIHRoZSByZWdpc3RyeSBjYW4gYmUgaW5zdGFsbGVkLlxuICAgICAgICAvKipcbiAgICAgICAgICogQ3JlYXRlcyBhIHJlZ2lzdHJ5IHVzZWQgdG8gYWxsb3cgbXVsdGlwbGUgYHJlZmxlY3QtbWV0YWRhdGFgIHByb3ZpZGVycy5cbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIENyZWF0ZU1ldGFkYXRhUmVnaXN0cnkoKSB7XG4gICAgICAgICAgICB2YXIgZmFsbGJhY2s7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHJlZ2lzdHJ5U3ltYm9sKSAmJlxuICAgICAgICAgICAgICAgIHR5cGVvZiByb290LlJlZmxlY3QgIT09IFwidW5kZWZpbmVkXCIgJiZcbiAgICAgICAgICAgICAgICAhKHJlZ2lzdHJ5U3ltYm9sIGluIHJvb3QuUmVmbGVjdCkgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2Ygcm9vdC5SZWZsZWN0LmRlZmluZU1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAvLyBpbnRlcm9wZXJhdGUgd2l0aCBvbGRlciB2ZXJzaW9uIG9mIGByZWZsZWN0LW1ldGFkYXRhYCB0aGF0IGRpZCBub3Qgc3VwcG9ydCBhIHJlZ2lzdHJ5LlxuICAgICAgICAgICAgICAgIGZhbGxiYWNrID0gQ3JlYXRlRmFsbGJhY2tQcm92aWRlcihyb290LlJlZmxlY3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGZpcnN0O1xuICAgICAgICAgICAgdmFyIHNlY29uZDtcbiAgICAgICAgICAgIHZhciByZXN0O1xuICAgICAgICAgICAgdmFyIHRhcmdldFByb3ZpZGVyTWFwID0gbmV3IF9XZWFrTWFwKCk7XG4gICAgICAgICAgICB2YXIgcmVnaXN0cnkgPSB7XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJQcm92aWRlcjogcmVnaXN0ZXJQcm92aWRlcixcbiAgICAgICAgICAgICAgICBnZXRQcm92aWRlcjogZ2V0UHJvdmlkZXIsXG4gICAgICAgICAgICAgICAgc2V0UHJvdmlkZXI6IHNldFByb3ZpZGVyLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiByZWdpc3RyeTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIHJlZ2lzdGVyUHJvdmlkZXIocHJvdmlkZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIU9iamVjdC5pc0V4dGVuc2libGUocmVnaXN0cnkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBhZGQgcHJvdmlkZXIgdG8gYSBmcm96ZW4gcmVnaXN0cnkuXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBmYWxsYmFjayA9PT0gcHJvdmlkZXI6IGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIElzVW5kZWZpbmVkKGZpcnN0KTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0ID0gcHJvdmlkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBmaXJzdCA9PT0gcHJvdmlkZXI6IGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIElzVW5kZWZpbmVkKHNlY29uZCk6XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmQgPSBwcm92aWRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHNlY29uZCA9PT0gcHJvdmlkZXI6IGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3QgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0ID0gbmV3IF9TZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3QuYWRkKHByb3ZpZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIGdldFByb3ZpZGVyTm9DYWNoZShPLCBQKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChmaXJzdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0LmlzUHJvdmlkZXJGb3IoTywgUCkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3Q7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQoc2Vjb25kKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlY29uZC5pc1Byb3ZpZGVyRm9yKE8sIFApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocmVzdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlcmF0b3IgPSBHZXRJdGVyYXRvcihyZXN0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IEl0ZXJhdG9yU3RlcChpdGVyYXRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbmV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJvdmlkZXIgPSBJdGVyYXRvclZhbHVlKG5leHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvdmlkZXIuaXNQcm92aWRlckZvcihPLCBQKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3JDbG9zZShpdGVyYXRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvdmlkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChmYWxsYmFjaykgJiYgZmFsbGJhY2suaXNQcm92aWRlckZvcihPLCBQKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBnZXRQcm92aWRlcihPLCBQKSB7XG4gICAgICAgICAgICAgICAgdmFyIHByb3ZpZGVyTWFwID0gdGFyZ2V0UHJvdmlkZXJNYXAuZ2V0KE8pO1xuICAgICAgICAgICAgICAgIHZhciBwcm92aWRlcjtcbiAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3ZpZGVyTWFwKSkge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlciA9IHByb3ZpZGVyTWFwLmdldChQKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm92aWRlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwcm92aWRlciA9IGdldFByb3ZpZGVyTm9DYWNoZShPLCBQKTtcbiAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3ZpZGVyKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQocHJvdmlkZXJNYXApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlck1hcCA9IG5ldyBfTWFwKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRQcm92aWRlck1hcC5zZXQoTywgcHJvdmlkZXJNYXApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyTWFwLnNldChQLCBwcm92aWRlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBwcm92aWRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIGhhc1Byb3ZpZGVyKHByb3ZpZGVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKHByb3ZpZGVyKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdCA9PT0gcHJvdmlkZXIgfHwgc2Vjb25kID09PSBwcm92aWRlciB8fCAhSXNVbmRlZmluZWQocmVzdCkgJiYgcmVzdC5oYXMocHJvdmlkZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gc2V0UHJvdmlkZXIoTywgUCwgcHJvdmlkZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWhhc1Byb3ZpZGVyKHByb3ZpZGVyKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRhZGF0YSBwcm92aWRlciBub3QgcmVnaXN0ZXJlZC5cIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBleGlzdGluZ1Byb3ZpZGVyID0gZ2V0UHJvdmlkZXIoTywgUCk7XG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nUHJvdmlkZXIgIT09IHByb3ZpZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQoZXhpc3RpbmdQcm92aWRlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgcHJvdmlkZXJNYXAgPSB0YXJnZXRQcm92aWRlck1hcC5nZXQoTyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChwcm92aWRlck1hcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyTWFwID0gbmV3IF9NYXAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFByb3ZpZGVyTWFwLnNldChPLCBwcm92aWRlck1hcCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXJNYXAuc2V0KFAsIHByb3ZpZGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgb3IgY3JlYXRlcyB0aGUgc2hhcmVkIHJlZ2lzdHJ5IG9mIG1ldGFkYXRhIHByb3ZpZGVycy5cbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIEdldE9yQ3JlYXRlTWV0YWRhdGFSZWdpc3RyeSgpIHtcbiAgICAgICAgICAgIHZhciBtZXRhZGF0YVJlZ2lzdHJ5O1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChyZWdpc3RyeVN5bWJvbCkgJiYgSXNPYmplY3Qocm9vdC5SZWZsZWN0KSAmJiBPYmplY3QuaXNFeHRlbnNpYmxlKHJvb3QuUmVmbGVjdCkpIHtcbiAgICAgICAgICAgICAgICBtZXRhZGF0YVJlZ2lzdHJ5ID0gcm9vdC5SZWZsZWN0W3JlZ2lzdHJ5U3ltYm9sXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChtZXRhZGF0YVJlZ2lzdHJ5KSkge1xuICAgICAgICAgICAgICAgIG1ldGFkYXRhUmVnaXN0cnkgPSBDcmVhdGVNZXRhZGF0YVJlZ2lzdHJ5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHJlZ2lzdHJ5U3ltYm9sKSAmJiBJc09iamVjdChyb290LlJlZmxlY3QpICYmIE9iamVjdC5pc0V4dGVuc2libGUocm9vdC5SZWZsZWN0KSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyb290LlJlZmxlY3QsIHJlZ2lzdHJ5U3ltYm9sLCB7XG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBtZXRhZGF0YVJlZ2lzdHJ5XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbWV0YWRhdGFSZWdpc3RyeTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBDcmVhdGVNZXRhZGF0YVByb3ZpZGVyKHJlZ2lzdHJ5KSB7XG4gICAgICAgICAgICAvLyBbW01ldGFkYXRhXV0gaW50ZXJuYWwgc2xvdFxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnktb2JqZWN0LWludGVybmFsLW1ldGhvZHMtYW5kLWludGVybmFsLXNsb3RzXG4gICAgICAgICAgICB2YXIgbWV0YWRhdGEgPSBuZXcgX1dlYWtNYXAoKTtcbiAgICAgICAgICAgIHZhciBwcm92aWRlciA9IHtcbiAgICAgICAgICAgICAgICBpc1Byb3ZpZGVyRm9yOiBmdW5jdGlvbiAoTywgUCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0TWV0YWRhdGEgPSBtZXRhZGF0YS5nZXQoTyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZCh0YXJnZXRNZXRhZGF0YSkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRNZXRhZGF0YS5oYXMoUCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBPcmRpbmFyeURlZmluZU93bk1ldGFkYXRhOiBPcmRpbmFyeURlZmluZU93bk1ldGFkYXRhLFxuICAgICAgICAgICAgICAgIE9yZGluYXJ5SGFzT3duTWV0YWRhdGE6IE9yZGluYXJ5SGFzT3duTWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgT3JkaW5hcnlHZXRPd25NZXRhZGF0YTogT3JkaW5hcnlHZXRPd25NZXRhZGF0YSxcbiAgICAgICAgICAgICAgICBPcmRpbmFyeU93bk1ldGFkYXRhS2V5czogT3JkaW5hcnlPd25NZXRhZGF0YUtleXMsXG4gICAgICAgICAgICAgICAgT3JkaW5hcnlEZWxldGVNZXRhZGF0YTogT3JkaW5hcnlEZWxldGVNZXRhZGF0YSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBtZXRhZGF0YVJlZ2lzdHJ5LnJlZ2lzdGVyUHJvdmlkZXIocHJvdmlkZXIpO1xuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVyO1xuICAgICAgICAgICAgZnVuY3Rpb24gR2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCBDcmVhdGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0TWV0YWRhdGEgPSBtZXRhZGF0YS5nZXQoTyk7XG4gICAgICAgICAgICAgICAgdmFyIGNyZWF0ZWRUYXJnZXRNZXRhZGF0YSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZCh0YXJnZXRNZXRhZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFDcmVhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRNZXRhZGF0YSA9IG5ldyBfTWFwKCk7XG4gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLnNldChPLCB0YXJnZXRNZXRhZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRUYXJnZXRNZXRhZGF0YSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBtZXRhZGF0YU1hcCA9IHRhcmdldE1ldGFkYXRhLmdldChQKTtcbiAgICAgICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQobWV0YWRhdGFNYXApKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghQ3JlYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGFNYXAgPSBuZXcgX01hcCgpO1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRNZXRhZGF0YS5zZXQoUCwgbWV0YWRhdGFNYXApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlZ2lzdHJ5LnNldFByb3ZpZGVyKE8sIFAsIHByb3ZpZGVyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TWV0YWRhdGEuZGVsZXRlKFApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNyZWF0ZWRUYXJnZXRNZXRhZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLmRlbGV0ZShPKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIldyb25nIHByb3ZpZGVyIGZvciB0YXJnZXQuXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBtZXRhZGF0YU1hcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIDMuMS4yLjEgT3JkaW5hcnlIYXNPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUClcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5aGFzb3dubWV0YWRhdGFcbiAgICAgICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5SGFzT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgICAgICAgICAgICAgICB2YXIgbWV0YWRhdGFNYXAgPSBHZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIC8qQ3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChtZXRhZGF0YU1hcCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gVG9Cb29sZWFuKG1ldGFkYXRhTWFwLmhhcyhNZXRhZGF0YUtleSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gMy4xLjQuMSBPcmRpbmFyeUdldE93bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKVxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnlnZXRvd25tZXRhZGF0YVxuICAgICAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlHZXRPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCkge1xuICAgICAgICAgICAgICAgIHZhciBtZXRhZGF0YU1hcCA9IEdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgLypDcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKG1ldGFkYXRhTWFwKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWV0YWRhdGFNYXAuZ2V0KE1ldGFkYXRhS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIDMuMS41LjEgT3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTWV0YWRhdGFWYWx1ZSwgTywgUClcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5ZGVmaW5lb3dubWV0YWRhdGFcbiAgICAgICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE1ldGFkYXRhVmFsdWUsIE8sIFApIHtcbiAgICAgICAgICAgICAgICB2YXIgbWV0YWRhdGFNYXAgPSBHZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIC8qQ3JlYXRlKi8gdHJ1ZSk7XG4gICAgICAgICAgICAgICAgbWV0YWRhdGFNYXAuc2V0KE1ldGFkYXRhS2V5LCBNZXRhZGF0YVZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIDMuMS43LjEgT3JkaW5hcnlPd25NZXRhZGF0YUtleXMoTywgUClcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5b3dubWV0YWRhdGFrZXlzXG4gICAgICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhPLCBQKSB7XG4gICAgICAgICAgICAgICAgdmFyIGtleXMgPSBbXTtcbiAgICAgICAgICAgICAgICB2YXIgbWV0YWRhdGFNYXAgPSBHZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIC8qQ3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChtZXRhZGF0YU1hcCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXlzO1xuICAgICAgICAgICAgICAgIHZhciBrZXlzT2JqID0gbWV0YWRhdGFNYXAua2V5cygpO1xuICAgICAgICAgICAgICAgIHZhciBpdGVyYXRvciA9IEdldEl0ZXJhdG9yKGtleXNPYmopO1xuICAgICAgICAgICAgICAgIHZhciBrID0gMDtcbiAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IEl0ZXJhdG9yU3RlcChpdGVyYXRvcik7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbmV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5cy5sZW5ndGggPSBrO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIG5leHRWYWx1ZSA9IEl0ZXJhdG9yVmFsdWUobmV4dCk7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlzW2tdID0gbmV4dFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBrKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlEZWxldGVNZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCkge1xuICAgICAgICAgICAgICAgIHZhciBtZXRhZGF0YU1hcCA9IEdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgLypDcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKG1ldGFkYXRhTWFwKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmICghbWV0YWRhdGFNYXAuZGVsZXRlKE1ldGFkYXRhS2V5KSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChtZXRhZGF0YU1hcC5zaXplID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YXJnZXRNZXRhZGF0YSA9IG1ldGFkYXRhLmdldChPKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZCh0YXJnZXRNZXRhZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldE1ldGFkYXRhLmRlbGV0ZShQKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRNZXRhZGF0YS5zaXplID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEuZGVsZXRlKHRhcmdldE1ldGFkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBDcmVhdGVGYWxsYmFja1Byb3ZpZGVyKHJlZmxlY3QpIHtcbiAgICAgICAgICAgIHZhciBkZWZpbmVNZXRhZGF0YSA9IHJlZmxlY3QuZGVmaW5lTWV0YWRhdGEsIGhhc093bk1ldGFkYXRhID0gcmVmbGVjdC5oYXNPd25NZXRhZGF0YSwgZ2V0T3duTWV0YWRhdGEgPSByZWZsZWN0LmdldE93bk1ldGFkYXRhLCBnZXRPd25NZXRhZGF0YUtleXMgPSByZWZsZWN0LmdldE93bk1ldGFkYXRhS2V5cywgZGVsZXRlTWV0YWRhdGEgPSByZWZsZWN0LmRlbGV0ZU1ldGFkYXRhO1xuICAgICAgICAgICAgdmFyIG1ldGFkYXRhT3duZXIgPSBuZXcgX1dlYWtNYXAoKTtcbiAgICAgICAgICAgIHZhciBwcm92aWRlciA9IHtcbiAgICAgICAgICAgICAgICBpc1Byb3ZpZGVyRm9yOiBmdW5jdGlvbiAoTywgUCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbWV0YWRhdGFQcm9wZXJ0eVNldCA9IG1ldGFkYXRhT3duZXIuZ2V0KE8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKG1ldGFkYXRhUHJvcGVydHlTZXQpICYmIG1ldGFkYXRhUHJvcGVydHlTZXQuaGFzKFApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0T3duTWV0YWRhdGFLZXlzKE8sIFApLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKG1ldGFkYXRhUHJvcGVydHlTZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGFQcm9wZXJ0eVNldCA9IG5ldyBfU2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGFPd25lci5zZXQoTywgbWV0YWRhdGFQcm9wZXJ0eVNldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YVByb3BlcnR5U2V0LmFkZChQKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIE9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGE6IGRlZmluZU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgIE9yZGluYXJ5SGFzT3duTWV0YWRhdGE6IGhhc093bk1ldGFkYXRhLFxuICAgICAgICAgICAgICAgIE9yZGluYXJ5R2V0T3duTWV0YWRhdGE6IGdldE93bk1ldGFkYXRhLFxuICAgICAgICAgICAgICAgIE9yZGluYXJ5T3duTWV0YWRhdGFLZXlzOiBnZXRPd25NZXRhZGF0YUtleXMsXG4gICAgICAgICAgICAgICAgT3JkaW5hcnlEZWxldGVNZXRhZGF0YTogZGVsZXRlTWV0YWRhdGEsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVyO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBtZXRhZGF0YSBwcm92aWRlciBmb3IgYW4gb2JqZWN0LiBJZiB0aGUgb2JqZWN0IGhhcyBubyBtZXRhZGF0YSBwcm92aWRlciBhbmQgdGhpcyBpcyBmb3IgYSBjcmVhdGUgb3BlcmF0aW9uLFxuICAgICAgICAgKiB0aGVuIHRoaXMgbW9kdWxlJ3MgbWV0YWRhdGEgcHJvdmlkZXIgaXMgYXNzaWduZWQgdG8gdGhlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIEdldE1ldGFkYXRhUHJvdmlkZXIoTywgUCwgQ3JlYXRlKSB7XG4gICAgICAgICAgICB2YXIgcmVnaXN0ZXJlZFByb3ZpZGVyID0gbWV0YWRhdGFSZWdpc3RyeS5nZXRQcm92aWRlcihPLCBQKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocmVnaXN0ZXJlZFByb3ZpZGVyKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWdpc3RlcmVkUHJvdmlkZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoQ3JlYXRlKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1ldGFkYXRhUmVnaXN0cnkuc2V0UHJvdmlkZXIoTywgUCwgbWV0YWRhdGFQcm92aWRlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ldGFkYXRhUHJvdmlkZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIklsbGVnYWwgc3RhdGUuXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBuYWl2ZSBNYXAgc2hpbVxuICAgICAgICBmdW5jdGlvbiBDcmVhdGVNYXBQb2x5ZmlsbCgpIHtcbiAgICAgICAgICAgIHZhciBjYWNoZVNlbnRpbmVsID0ge307XG4gICAgICAgICAgICB2YXIgYXJyYXlTZW50aW5lbCA9IFtdO1xuICAgICAgICAgICAgdmFyIE1hcEl0ZXJhdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIE1hcEl0ZXJhdG9yKGtleXMsIHZhbHVlcywgc2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXggPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzID0ga2V5cztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzID0gdmFsdWVzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBNYXBJdGVyYXRvci5wcm90b3R5cGVbXCJAQGl0ZXJhdG9yXCJdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcbiAgICAgICAgICAgICAgICBNYXBJdGVyYXRvci5wcm90b3R5cGVbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcbiAgICAgICAgICAgICAgICBNYXBJdGVyYXRvci5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5faW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSAwICYmIGluZGV4IDwgdGhpcy5fa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9zZWxlY3Rvcih0aGlzLl9rZXlzW2luZGV4XSwgdGhpcy5fdmFsdWVzW2luZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggKyAxID49IHRoaXMuX2tleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXggPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzID0gYXJyYXlTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMgPSBhcnJheVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXgrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiByZXN1bHQsIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgTWFwSXRlcmF0b3IucHJvdG90eXBlLnRocm93ID0gZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cyA9IGFycmF5U2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMgPSBhcnJheVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgTWFwSXRlcmF0b3IucHJvdG90eXBlLnJldHVybiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5faW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXggPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleXMgPSBhcnJheVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzID0gYXJyYXlTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogdmFsdWUsIGRvbmU6IHRydWUgfTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXBJdGVyYXRvcjtcbiAgICAgICAgICAgIH0oKSk7XG4gICAgICAgICAgICB2YXIgTWFwID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIE1hcCgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVLZXkgPSBjYWNoZVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUluZGV4ID0gLTI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNYXAucHJvdG90eXBlLCBcInNpemVcIiwge1xuICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX2tleXMubGVuZ3RoOyB9LFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIHRoaXMuX2ZpbmQoa2V5LCAvKmluc2VydCovIGZhbHNlKSA+PSAwOyB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9maW5kKGtleSwgLyppbnNlcnQqLyBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleCA+PSAwID8gdGhpcy5fdmFsdWVzW2luZGV4XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZChrZXksIC8qaW5zZXJ0Ki8gdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlc1tpbmRleF0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZChrZXksIC8qaW5zZXJ0Ki8gZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNpemUgPSB0aGlzLl9rZXlzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBpbmRleCArIDE7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzW2kgLSAxXSA9IHRoaXMuX2tleXNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzW2kgLSAxXSA9IHRoaXMuX3ZhbHVlc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleXMubGVuZ3RoLS07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMubGVuZ3RoLS07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoU2FtZVZhbHVlWmVybyhrZXksIHRoaXMuX2NhY2hlS2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlS2V5ID0gY2FjaGVTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUluZGV4ID0gLTI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUtleSA9IGNhY2hlU2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlSW5kZXggPSAtMjtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ldyBNYXBJdGVyYXRvcih0aGlzLl9rZXlzLCB0aGlzLl92YWx1ZXMsIGdldEtleSk7IH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS52YWx1ZXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgTWFwSXRlcmF0b3IodGhpcy5fa2V5cywgdGhpcy5fdmFsdWVzLCBnZXRWYWx1ZSk7IH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5lbnRyaWVzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3IE1hcEl0ZXJhdG9yKHRoaXMuX2tleXMsIHRoaXMuX3ZhbHVlcywgZ2V0RW50cnkpOyB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGVbXCJAQGl0ZXJhdG9yXCJdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5lbnRyaWVzKCk7IH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZVtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmVudHJpZXMoKTsgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLl9maW5kID0gZnVuY3Rpb24gKGtleSwgaW5zZXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghU2FtZVZhbHVlWmVybyh0aGlzLl9jYWNoZUtleSwga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVJbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9rZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFNhbWVWYWx1ZVplcm8odGhpcy5fa2V5c1tpXSwga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jYWNoZUluZGV4IDwgMCAmJiBpbnNlcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlSW5kZXggPSB0aGlzLl9rZXlzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleXMucHVzaChrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzLnB1c2godW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY2FjaGVJbmRleDtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXA7XG4gICAgICAgICAgICB9KCkpO1xuICAgICAgICAgICAgcmV0dXJuIE1hcDtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGdldEtleShrZXksIF8pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gZ2V0VmFsdWUoXywgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBnZXRFbnRyeShrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtrZXksIHZhbHVlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBuYWl2ZSBTZXQgc2hpbVxuICAgICAgICBmdW5jdGlvbiBDcmVhdGVTZXRQb2x5ZmlsbCgpIHtcbiAgICAgICAgICAgIHZhciBTZXQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gU2V0KCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tYXAgPSBuZXcgX01hcCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoU2V0LnByb3RvdHlwZSwgXCJzaXplXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9tYXAuc2l6ZTsgfSxcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgU2V0LnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIHRoaXMuX21hcC5oYXModmFsdWUpOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0aGlzLl9tYXAuc2V0KHZhbHVlLCB2YWx1ZSksIHRoaXM7IH07XG4gICAgICAgICAgICAgICAgU2V0LnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIHRoaXMuX21hcC5kZWxldGUodmFsdWUpOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7IHRoaXMuX21hcC5jbGVhcigpOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX21hcC5rZXlzKCk7IH07XG4gICAgICAgICAgICAgICAgU2V0LnByb3RvdHlwZS52YWx1ZXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9tYXAua2V5cygpOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX21hcC5lbnRyaWVzKCk7IH07XG4gICAgICAgICAgICAgICAgU2V0LnByb3RvdHlwZVtcIkBAaXRlcmF0b3JcIl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmtleXMoKTsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMua2V5cygpOyB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBTZXQ7XG4gICAgICAgICAgICB9KCkpO1xuICAgICAgICAgICAgcmV0dXJuIFNldDtcbiAgICAgICAgfVxuICAgICAgICAvLyBuYWl2ZSBXZWFrTWFwIHNoaW1cbiAgICAgICAgZnVuY3Rpb24gQ3JlYXRlV2Vha01hcFBvbHlmaWxsKCkge1xuICAgICAgICAgICAgdmFyIFVVSURfU0laRSA9IDE2O1xuICAgICAgICAgICAgdmFyIGtleXMgPSBIYXNoTWFwLmNyZWF0ZSgpO1xuICAgICAgICAgICAgdmFyIHJvb3RLZXkgPSBDcmVhdGVVbmlxdWVLZXkoKTtcbiAgICAgICAgICAgIHJldHVybiAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gV2Vha01hcCgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5ID0gQ3JlYXRlVW5pcXVlS2V5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFdlYWtNYXAucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhYmxlID0gR2V0T3JDcmVhdGVXZWFrTWFwVGFibGUodGFyZ2V0LCAvKmNyZWF0ZSovIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlICE9PSB1bmRlZmluZWQgPyBIYXNoTWFwLmhhcyh0YWJsZSwgdGhpcy5fa2V5KSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgV2Vha01hcC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFibGUgPSBHZXRPckNyZWF0ZVdlYWtNYXBUYWJsZSh0YXJnZXQsIC8qY3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFibGUgIT09IHVuZGVmaW5lZCA/IEhhc2hNYXAuZ2V0KHRhYmxlLCB0aGlzLl9rZXkpIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgV2Vha01hcC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKHRhcmdldCwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhYmxlID0gR2V0T3JDcmVhdGVXZWFrTWFwVGFibGUodGFyZ2V0LCAvKmNyZWF0ZSovIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0YWJsZVt0aGlzLl9rZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgV2Vha01hcC5wcm90b3R5cGUuZGVsZXRlID0gZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFibGUgPSBHZXRPckNyZWF0ZVdlYWtNYXBUYWJsZSh0YXJnZXQsIC8qY3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFibGUgIT09IHVuZGVmaW5lZCA/IGRlbGV0ZSB0YWJsZVt0aGlzLl9rZXldIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBXZWFrTWFwLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogbm90IGEgcmVhbCBjbGVhciwganVzdCBtYWtlcyB0aGUgcHJldmlvdXMgZGF0YSB1bnJlYWNoYWJsZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXkgPSBDcmVhdGVVbmlxdWVLZXkoKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBXZWFrTWFwO1xuICAgICAgICAgICAgfSgpKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIENyZWF0ZVVuaXF1ZUtleSgpIHtcbiAgICAgICAgICAgICAgICB2YXIga2V5O1xuICAgICAgICAgICAgICAgIGRvXG4gICAgICAgICAgICAgICAgICAgIGtleSA9IFwiQEBXZWFrTWFwQEBcIiArIENyZWF0ZVVVSUQoKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoSGFzaE1hcC5oYXMoa2V5cywga2V5KSk7XG4gICAgICAgICAgICAgICAga2V5c1trZXldID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gR2V0T3JDcmVhdGVXZWFrTWFwVGFibGUodGFyZ2V0LCBjcmVhdGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWhhc093bi5jYWxsKHRhcmdldCwgcm9vdEtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjcmVhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCByb290S2V5LCB7IHZhbHVlOiBIYXNoTWFwLmNyZWF0ZSgpIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W3Jvb3RLZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gRmlsbFJhbmRvbUJ5dGVzKGJ1ZmZlciwgc2l6ZSkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgKytpKVxuICAgICAgICAgICAgICAgICAgICBidWZmZXJbaV0gPSBNYXRoLnJhbmRvbSgpICogMHhmZiB8IDA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIEdlblJhbmRvbUJ5dGVzKHNpemUpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIFVpbnQ4QXJyYXkgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheShzaXplKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjcnlwdG8gIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyYXkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBtc0NyeXB0byAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycmF5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGxSYW5kb21CeXRlcyhhcnJheSwgc2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsbFJhbmRvbUJ5dGVzKG5ldyBBcnJheShzaXplKSwgc2l6ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBDcmVhdGVVVUlEKCkge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gR2VuUmFuZG9tQnl0ZXMoVVVJRF9TSVpFKTtcbiAgICAgICAgICAgICAgICAvLyBtYXJrIGFzIHJhbmRvbSAtIFJGQyA0MTIyIMKnIDQuNFxuICAgICAgICAgICAgICAgIGRhdGFbNl0gPSBkYXRhWzZdICYgMHg0ZiB8IDB4NDA7XG4gICAgICAgICAgICAgICAgZGF0YVs4XSA9IGRhdGFbOF0gJiAweGJmIHwgMHg4MDtcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBvZmZzZXQgPSAwOyBvZmZzZXQgPCBVVUlEX1NJWkU7ICsrb2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBieXRlID0gZGF0YVtvZmZzZXRdO1xuICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0ID09PSA0IHx8IG9mZnNldCA9PT0gNiB8fCBvZmZzZXQgPT09IDgpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gXCItXCI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChieXRlIDwgMTYpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gXCIwXCI7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBieXRlLnRvU3RyaW5nKDE2KS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHVzZXMgYSBoZXVyaXN0aWMgdXNlZCBieSB2OCBhbmQgY2hha3JhIHRvIGZvcmNlIGFuIG9iamVjdCBpbnRvIGRpY3Rpb25hcnkgbW9kZS5cbiAgICAgICAgZnVuY3Rpb24gTWFrZURpY3Rpb25hcnkob2JqKSB7XG4gICAgICAgICAgICBvYmouX18gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBkZWxldGUgb2JqLl9fO1xuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfVxuICAgIH0pO1xufSkoUmVmbGVjdCB8fCAoUmVmbGVjdCA9IHt9KSk7XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGw9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbj1TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLHA9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLHE9U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpLHI9U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpLHQ9U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpLHU9U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIiksdj1TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIiksdz1TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIikseD1TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKSx5PVN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpLHo9U3ltYm9sLml0ZXJhdG9yO2Z1bmN0aW9uIEEoYSl7aWYobnVsbD09PWF8fFwib2JqZWN0XCIhPT10eXBlb2YgYSlyZXR1cm4gbnVsbDthPXomJmFbel18fGFbXCJAQGl0ZXJhdG9yXCJdO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhP2E6bnVsbH1cbnZhciBCPXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oKXt9fSxDPU9iamVjdC5hc3NpZ24sRD17fTtmdW5jdGlvbiBFKGEsYixlKXt0aGlzLnByb3BzPWE7dGhpcy5jb250ZXh0PWI7dGhpcy5yZWZzPUQ7dGhpcy51cGRhdGVyPWV8fEJ9RS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fTtcbkUucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGEsYil7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBhJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgYSYmbnVsbCE9YSl0aHJvdyBFcnJvcihcInNldFN0YXRlKC4uLik6IHRha2VzIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzLlwiKTt0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsYSxiLFwic2V0U3RhdGVcIil9O0UucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGEpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyxhLFwiZm9yY2VVcGRhdGVcIil9O2Z1bmN0aW9uIEYoKXt9Ri5wcm90b3R5cGU9RS5wcm90b3R5cGU7ZnVuY3Rpb24gRyhhLGIsZSl7dGhpcy5wcm9wcz1hO3RoaXMuY29udGV4dD1iO3RoaXMucmVmcz1EO3RoaXMudXBkYXRlcj1lfHxCfXZhciBIPUcucHJvdG90eXBlPW5ldyBGO1xuSC5jb25zdHJ1Y3Rvcj1HO0MoSCxFLnByb3RvdHlwZSk7SC5pc1B1cmVSZWFjdENvbXBvbmVudD0hMDt2YXIgST1BcnJheS5pc0FycmF5LEo9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxLPXtjdXJyZW50Om51bGx9LEw9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIE0oYSxiLGUpe3ZhciBkLGM9e30saz1udWxsLGg9bnVsbDtpZihudWxsIT1iKWZvcihkIGluIHZvaWQgMCE9PWIucmVmJiYoaD1iLnJlZiksdm9pZCAwIT09Yi5rZXkmJihrPVwiXCIrYi5rZXkpLGIpSi5jYWxsKGIsZCkmJiFMLmhhc093blByb3BlcnR5KGQpJiYoY1tkXT1iW2RdKTt2YXIgZz1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWcpYy5jaGlsZHJlbj1lO2Vsc2UgaWYoMTxnKXtmb3IodmFyIGY9QXJyYXkoZyksbT0wO208ZzttKyspZlttXT1hcmd1bWVudHNbbSsyXTtjLmNoaWxkcmVuPWZ9aWYoYSYmYS5kZWZhdWx0UHJvcHMpZm9yKGQgaW4gZz1hLmRlZmF1bHRQcm9wcyxnKXZvaWQgMD09PWNbZF0mJihjW2RdPWdbZF0pO3JldHVybnskJHR5cGVvZjpsLHR5cGU6YSxrZXk6ayxyZWY6aCxwcm9wczpjLF9vd25lcjpLLmN1cnJlbnR9fVxuZnVuY3Rpb24gTihhLGIpe3JldHVybnskJHR5cGVvZjpsLHR5cGU6YS50eXBlLGtleTpiLHJlZjphLnJlZixwcm9wczphLnByb3BzLF9vd25lcjphLl9vd25lcn19ZnVuY3Rpb24gTyhhKXtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiZhLiQkdHlwZW9mPT09bH1mdW5jdGlvbiBlc2NhcGUoYSl7dmFyIGI9e1wiPVwiOlwiPTBcIixcIjpcIjpcIj0yXCJ9O3JldHVyblwiJFwiK2EucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKGEpe3JldHVybiBiW2FdfSl9dmFyIFA9L1xcLysvZztmdW5jdGlvbiBRKGEsYil7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmbnVsbCE9YS5rZXk/ZXNjYXBlKFwiXCIrYS5rZXkpOmIudG9TdHJpbmcoMzYpfVxuZnVuY3Rpb24gUihhLGIsZSxkLGMpe3ZhciBrPXR5cGVvZiBhO2lmKFwidW5kZWZpbmVkXCI9PT1rfHxcImJvb2xlYW5cIj09PWspYT1udWxsO3ZhciBoPSExO2lmKG51bGw9PT1hKWg9ITA7ZWxzZSBzd2l0Y2goayl7Y2FzZSBcInN0cmluZ1wiOmNhc2UgXCJudW1iZXJcIjpoPSEwO2JyZWFrO2Nhc2UgXCJvYmplY3RcIjpzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBsOmNhc2UgbjpoPSEwfX1pZihoKXJldHVybiBoPWEsYz1jKGgpLGE9XCJcIj09PWQ/XCIuXCIrUShoLDApOmQsSShjKT8oZT1cIlwiLG51bGwhPWEmJihlPWEucmVwbGFjZShQLFwiJCYvXCIpK1wiL1wiKSxSKGMsYixlLFwiXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGF9KSk6bnVsbCE9YyYmKE8oYykmJihjPU4oYyxlKyghYy5rZXl8fGgmJmgua2V5PT09Yy5rZXk/XCJcIjooXCJcIitjLmtleSkucmVwbGFjZShQLFwiJCYvXCIpK1wiL1wiKSthKSksYi5wdXNoKGMpKSwxO2g9MDtkPVwiXCI9PT1kP1wiLlwiOmQrXCI6XCI7aWYoSShhKSlmb3IodmFyIGc9MDtnPGEubGVuZ3RoO2crKyl7az1cbmFbZ107dmFyIGY9ZCtRKGssZyk7aCs9UihrLGIsZSxmLGMpfWVsc2UgaWYoZj1BKGEpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBmKWZvcihhPWYuY2FsbChhKSxnPTA7IShrPWEubmV4dCgpKS5kb25lOylrPWsudmFsdWUsZj1kK1EoayxnKyspLGgrPVIoayxiLGUsZixjKTtlbHNlIGlmKFwib2JqZWN0XCI9PT1rKXRocm93IGI9U3RyaW5nKGEpLEVycm9yKFwiT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiBcIisoXCJbb2JqZWN0IE9iamVjdF1cIj09PWI/XCJvYmplY3Qgd2l0aCBrZXlzIHtcIitPYmplY3Qua2V5cyhhKS5qb2luKFwiLCBcIikrXCJ9XCI6YikrXCIpLiBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5IGluc3RlYWQuXCIpO3JldHVybiBofVxuZnVuY3Rpb24gUyhhLGIsZSl7aWYobnVsbD09YSlyZXR1cm4gYTt2YXIgZD1bXSxjPTA7UihhLGQsXCJcIixcIlwiLGZ1bmN0aW9uKGEpe3JldHVybiBiLmNhbGwoZSxhLGMrKyl9KTtyZXR1cm4gZH1mdW5jdGlvbiBUKGEpe2lmKC0xPT09YS5fc3RhdHVzKXt2YXIgYj1hLl9yZXN1bHQ7Yj1iKCk7Yi50aGVuKGZ1bmN0aW9uKGIpe2lmKDA9PT1hLl9zdGF0dXN8fC0xPT09YS5fc3RhdHVzKWEuX3N0YXR1cz0xLGEuX3Jlc3VsdD1ifSxmdW5jdGlvbihiKXtpZigwPT09YS5fc3RhdHVzfHwtMT09PWEuX3N0YXR1cylhLl9zdGF0dXM9MixhLl9yZXN1bHQ9Yn0pOy0xPT09YS5fc3RhdHVzJiYoYS5fc3RhdHVzPTAsYS5fcmVzdWx0PWIpfWlmKDE9PT1hLl9zdGF0dXMpcmV0dXJuIGEuX3Jlc3VsdC5kZWZhdWx0O3Rocm93IGEuX3Jlc3VsdDt9XG52YXIgVT17Y3VycmVudDpudWxsfSxWPXt0cmFuc2l0aW9uOm51bGx9LFc9e1JlYWN0Q3VycmVudERpc3BhdGNoZXI6VSxSZWFjdEN1cnJlbnRCYXRjaENvbmZpZzpWLFJlYWN0Q3VycmVudE93bmVyOkt9O2Z1bmN0aW9uIFgoKXt0aHJvdyBFcnJvcihcImFjdCguLi4pIGlzIG5vdCBzdXBwb3J0ZWQgaW4gcHJvZHVjdGlvbiBidWlsZHMgb2YgUmVhY3QuXCIpO31cbmV4cG9ydHMuQ2hpbGRyZW49e21hcDpTLGZvckVhY2g6ZnVuY3Rpb24oYSxiLGUpe1MoYSxmdW5jdGlvbigpe2IuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxlKX0sY291bnQ6ZnVuY3Rpb24oYSl7dmFyIGI9MDtTKGEsZnVuY3Rpb24oKXtiKyt9KTtyZXR1cm4gYn0sdG9BcnJheTpmdW5jdGlvbihhKXtyZXR1cm4gUyhhLGZ1bmN0aW9uKGEpe3JldHVybiBhfSl8fFtdfSxvbmx5OmZ1bmN0aW9uKGEpe2lmKCFPKGEpKXRocm93IEVycm9yKFwiUmVhY3QuQ2hpbGRyZW4ub25seSBleHBlY3RlZCB0byByZWNlaXZlIGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQgY2hpbGQuXCIpO3JldHVybiBhfX07ZXhwb3J0cy5Db21wb25lbnQ9RTtleHBvcnRzLkZyYWdtZW50PXA7ZXhwb3J0cy5Qcm9maWxlcj1yO2V4cG9ydHMuUHVyZUNvbXBvbmVudD1HO2V4cG9ydHMuU3RyaWN0TW9kZT1xO2V4cG9ydHMuU3VzcGVuc2U9dztcbmV4cG9ydHMuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9VztleHBvcnRzLmFjdD1YO1xuZXhwb3J0cy5jbG9uZUVsZW1lbnQ9ZnVuY3Rpb24oYSxiLGUpe2lmKG51bGw9PT1hfHx2b2lkIDA9PT1hKXRocm93IEVycm9yKFwiUmVhY3QuY2xvbmVFbGVtZW50KC4uLik6IFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgUmVhY3QgZWxlbWVudCwgYnV0IHlvdSBwYXNzZWQgXCIrYStcIi5cIik7dmFyIGQ9Qyh7fSxhLnByb3BzKSxjPWEua2V5LGs9YS5yZWYsaD1hLl9vd25lcjtpZihudWxsIT1iKXt2b2lkIDAhPT1iLnJlZiYmKGs9Yi5yZWYsaD1LLmN1cnJlbnQpO3ZvaWQgMCE9PWIua2V5JiYoYz1cIlwiK2Iua2V5KTtpZihhLnR5cGUmJmEudHlwZS5kZWZhdWx0UHJvcHMpdmFyIGc9YS50eXBlLmRlZmF1bHRQcm9wcztmb3IoZiBpbiBiKUouY2FsbChiLGYpJiYhTC5oYXNPd25Qcm9wZXJ0eShmKSYmKGRbZl09dm9pZCAwPT09YltmXSYmdm9pZCAwIT09Zz9nW2ZdOmJbZl0pfXZhciBmPWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09ZilkLmNoaWxkcmVuPWU7ZWxzZSBpZigxPGYpe2c9QXJyYXkoZik7XG5mb3IodmFyIG09MDttPGY7bSsrKWdbbV09YXJndW1lbnRzW20rMl07ZC5jaGlsZHJlbj1nfXJldHVybnskJHR5cGVvZjpsLHR5cGU6YS50eXBlLGtleTpjLHJlZjprLHByb3BzOmQsX293bmVyOmh9fTtleHBvcnRzLmNyZWF0ZUNvbnRleHQ9ZnVuY3Rpb24oYSl7YT17JCR0eXBlb2Y6dSxfY3VycmVudFZhbHVlOmEsX2N1cnJlbnRWYWx1ZTI6YSxfdGhyZWFkQ291bnQ6MCxQcm92aWRlcjpudWxsLENvbnN1bWVyOm51bGwsX2RlZmF1bHRWYWx1ZTpudWxsLF9nbG9iYWxOYW1lOm51bGx9O2EuUHJvdmlkZXI9eyQkdHlwZW9mOnQsX2NvbnRleHQ6YX07cmV0dXJuIGEuQ29uc3VtZXI9YX07ZXhwb3J0cy5jcmVhdGVFbGVtZW50PU07ZXhwb3J0cy5jcmVhdGVGYWN0b3J5PWZ1bmN0aW9uKGEpe3ZhciBiPU0uYmluZChudWxsLGEpO2IudHlwZT1hO3JldHVybiBifTtleHBvcnRzLmNyZWF0ZVJlZj1mdW5jdGlvbigpe3JldHVybntjdXJyZW50Om51bGx9fTtcbmV4cG9ydHMuZm9yd2FyZFJlZj1mdW5jdGlvbihhKXtyZXR1cm57JCR0eXBlb2Y6dixyZW5kZXI6YX19O2V4cG9ydHMuaXNWYWxpZEVsZW1lbnQ9TztleHBvcnRzLmxhenk9ZnVuY3Rpb24oYSl7cmV0dXJueyQkdHlwZW9mOnksX3BheWxvYWQ6e19zdGF0dXM6LTEsX3Jlc3VsdDphfSxfaW5pdDpUfX07ZXhwb3J0cy5tZW1vPWZ1bmN0aW9uKGEsYil7cmV0dXJueyQkdHlwZW9mOngsdHlwZTphLGNvbXBhcmU6dm9pZCAwPT09Yj9udWxsOmJ9fTtleHBvcnRzLnN0YXJ0VHJhbnNpdGlvbj1mdW5jdGlvbihhKXt2YXIgYj1WLnRyYW5zaXRpb247Vi50cmFuc2l0aW9uPXt9O3RyeXthKCl9ZmluYWxseXtWLnRyYW5zaXRpb249Yn19O2V4cG9ydHMudW5zdGFibGVfYWN0PVg7ZXhwb3J0cy51c2VDYWxsYmFjaz1mdW5jdGlvbihhLGIpe3JldHVybiBVLmN1cnJlbnQudXNlQ2FsbGJhY2soYSxiKX07ZXhwb3J0cy51c2VDb250ZXh0PWZ1bmN0aW9uKGEpe3JldHVybiBVLmN1cnJlbnQudXNlQ29udGV4dChhKX07XG5leHBvcnRzLnVzZURlYnVnVmFsdWU9ZnVuY3Rpb24oKXt9O2V4cG9ydHMudXNlRGVmZXJyZWRWYWx1ZT1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZURlZmVycmVkVmFsdWUoYSl9O2V4cG9ydHMudXNlRWZmZWN0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIFUuY3VycmVudC51c2VFZmZlY3QoYSxiKX07ZXhwb3J0cy51c2VJZD1mdW5jdGlvbigpe3JldHVybiBVLmN1cnJlbnQudXNlSWQoKX07ZXhwb3J0cy51c2VJbXBlcmF0aXZlSGFuZGxlPWZ1bmN0aW9uKGEsYixlKXtyZXR1cm4gVS5jdXJyZW50LnVzZUltcGVyYXRpdmVIYW5kbGUoYSxiLGUpfTtleHBvcnRzLnVzZUluc2VydGlvbkVmZmVjdD1mdW5jdGlvbihhLGIpe3JldHVybiBVLmN1cnJlbnQudXNlSW5zZXJ0aW9uRWZmZWN0KGEsYil9O2V4cG9ydHMudXNlTGF5b3V0RWZmZWN0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIFUuY3VycmVudC51c2VMYXlvdXRFZmZlY3QoYSxiKX07XG5leHBvcnRzLnVzZU1lbW89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZU1lbW8oYSxiKX07ZXhwb3J0cy51c2VSZWR1Y2VyPWZ1bmN0aW9uKGEsYixlKXtyZXR1cm4gVS5jdXJyZW50LnVzZVJlZHVjZXIoYSxiLGUpfTtleHBvcnRzLnVzZVJlZj1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZVJlZihhKX07ZXhwb3J0cy51c2VTdGF0ZT1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZVN0YXRlKGEpfTtleHBvcnRzLnVzZVN5bmNFeHRlcm5hbFN0b3JlPWZ1bmN0aW9uKGEsYixlKXtyZXR1cm4gVS5jdXJyZW50LnVzZVN5bmNFeHRlcm5hbFN0b3JlKGEsYixlKX07ZXhwb3J0cy51c2VUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIFUuY3VycmVudC51c2VUcmFuc2l0aW9uKCl9O2V4cG9ydHMudmVyc2lvbj1cIjE4LjMuMVwiO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksbT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG49Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixwPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBxKGMsYSxnKXt2YXIgYixkPXt9LGU9bnVsbCxoPW51bGw7dm9pZCAwIT09ZyYmKGU9XCJcIitnKTt2b2lkIDAhPT1hLmtleSYmKGU9XCJcIithLmtleSk7dm9pZCAwIT09YS5yZWYmJihoPWEucmVmKTtmb3IoYiBpbiBhKW0uY2FsbChhLGIpJiYhcC5oYXNPd25Qcm9wZXJ0eShiKSYmKGRbYl09YVtiXSk7aWYoYyYmYy5kZWZhdWx0UHJvcHMpZm9yKGIgaW4gYT1jLmRlZmF1bHRQcm9wcyxhKXZvaWQgMD09PWRbYl0mJihkW2JdPWFbYl0pO3JldHVybnskJHR5cGVvZjprLHR5cGU6YyxrZXk6ZSxyZWY6aCxwcm9wczpkLF9vd25lcjpuLmN1cnJlbnR9fWV4cG9ydHMuRnJhZ21lbnQ9bDtleHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJpbmQoZm4sIHRoaXNBcmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHdyYXAoKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoaXNBcmcsIGFyZ3VtZW50cyk7XG4gIH07XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCBiaW5kIGZyb20gJy4vaGVscGVycy9iaW5kLmpzJztcblxuLy8gdXRpbHMgaXMgYSBsaWJyYXJ5IG9mIGdlbmVyaWMgaGVscGVyIGZ1bmN0aW9ucyBub24tc3BlY2lmaWMgdG8gYXhpb3NcblxuY29uc3Qge3RvU3RyaW5nfSA9IE9iamVjdC5wcm90b3R5cGU7XG5jb25zdCB7Z2V0UHJvdG90eXBlT2Z9ID0gT2JqZWN0O1xuXG5jb25zdCBraW5kT2YgPSAoY2FjaGUgPT4gdGhpbmcgPT4ge1xuICAgIGNvbnN0IHN0ciA9IHRvU3RyaW5nLmNhbGwodGhpbmcpO1xuICAgIHJldHVybiBjYWNoZVtzdHJdIHx8IChjYWNoZVtzdHJdID0gc3RyLnNsaWNlKDgsIC0xKS50b0xvd2VyQ2FzZSgpKTtcbn0pKE9iamVjdC5jcmVhdGUobnVsbCkpO1xuXG5jb25zdCBraW5kT2ZUZXN0ID0gKHR5cGUpID0+IHtcbiAgdHlwZSA9IHR5cGUudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuICh0aGluZykgPT4ga2luZE9mKHRoaW5nKSA9PT0gdHlwZVxufVxuXG5jb25zdCB0eXBlT2ZUZXN0ID0gdHlwZSA9PiB0aGluZyA9PiB0eXBlb2YgdGhpbmcgPT09IHR5cGU7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gQXJyYXksIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCB7aXNBcnJheX0gPSBBcnJheTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyB1bmRlZmluZWRcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB1bmRlZmluZWQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc1VuZGVmaW5lZCA9IHR5cGVPZlRlc3QoJ3VuZGVmaW5lZCcpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgQnVmZmVyXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQnVmZmVyKHZhbCkge1xuICByZXR1cm4gdmFsICE9PSBudWxsICYmICFpc1VuZGVmaW5lZCh2YWwpICYmIHZhbC5jb25zdHJ1Y3RvciAhPT0gbnVsbCAmJiAhaXNVbmRlZmluZWQodmFsLmNvbnN0cnVjdG9yKVxuICAgICYmIGlzRnVuY3Rpb24odmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyKSAmJiB2YWwuY29uc3RydWN0b3IuaXNCdWZmZXIodmFsKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhbiBBcnJheUJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gQXJyYXlCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0FycmF5QnVmZmVyID0ga2luZE9mVGVzdCgnQXJyYXlCdWZmZXInKTtcblxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgdmlldyBvbiBhbiBBcnJheUJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSB2aWV3IG9uIGFuIEFycmF5QnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUJ1ZmZlclZpZXcodmFsKSB7XG4gIGxldCByZXN1bHQ7XG4gIGlmICgodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJykgJiYgKEFycmF5QnVmZmVyLmlzVmlldykpIHtcbiAgICByZXN1bHQgPSBBcnJheUJ1ZmZlci5pc1ZpZXcodmFsKTtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgPSAodmFsKSAmJiAodmFsLmJ1ZmZlcikgJiYgKGlzQXJyYXlCdWZmZXIodmFsLmJ1ZmZlcikpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBTdHJpbmdcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgU3RyaW5nLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNTdHJpbmcgPSB0eXBlT2ZUZXN0KCdzdHJpbmcnKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRnVuY3Rpb24sIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0Z1bmN0aW9uID0gdHlwZU9mVGVzdCgnZnVuY3Rpb24nKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIE51bWJlclxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBOdW1iZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc051bWJlciA9IHR5cGVPZlRlc3QoJ251bWJlcicpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIE9iamVjdFxuICpcbiAqIEBwYXJhbSB7Kn0gdGhpbmcgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBPYmplY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc09iamVjdCA9ICh0aGluZykgPT4gdGhpbmcgIT09IG51bGwgJiYgdHlwZW9mIHRoaW5nID09PSAnb2JqZWN0JztcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEJvb2xlYW5cbiAqXG4gKiBAcGFyYW0geyp9IHRoaW5nIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJvb2xlYW4sIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0Jvb2xlYW4gPSB0aGluZyA9PiB0aGluZyA9PT0gdHJ1ZSB8fCB0aGluZyA9PT0gZmFsc2U7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3RcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgcGxhaW4gT2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNQbGFpbk9iamVjdCA9ICh2YWwpID0+IHtcbiAgaWYgKGtpbmRPZih2YWwpICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKHZhbCk7XG4gIHJldHVybiAocHJvdG90eXBlID09PSBudWxsIHx8IHByb3RvdHlwZSA9PT0gT2JqZWN0LnByb3RvdHlwZSB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG90eXBlKSA9PT0gbnVsbCkgJiYgIShTeW1ib2wudG9TdHJpbmdUYWcgaW4gdmFsKSAmJiAhKFN5bWJvbC5pdGVyYXRvciBpbiB2YWwpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRGF0ZVxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBEYXRlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNEYXRlID0ga2luZE9mVGVzdCgnRGF0ZScpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRmlsZVxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBGaWxlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNGaWxlID0ga2luZE9mVGVzdCgnRmlsZScpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgQmxvYlxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBCbG9iLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNCbG9iID0ga2luZE9mVGVzdCgnQmxvYicpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRmlsZUxpc3RcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRmlsZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzRmlsZUxpc3QgPSBraW5kT2ZUZXN0KCdGaWxlTGlzdCcpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgU3RyZWFtXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFN0cmVhbSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzU3RyZWFtID0gKHZhbCkgPT4gaXNPYmplY3QodmFsKSAmJiBpc0Z1bmN0aW9uKHZhbC5waXBlKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZvcm1EYXRhXG4gKlxuICogQHBhcmFtIHsqfSB0aGluZyBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEZvcm1EYXRhLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNGb3JtRGF0YSA9ICh0aGluZykgPT4ge1xuICBsZXQga2luZDtcbiAgcmV0dXJuIHRoaW5nICYmIChcbiAgICAodHlwZW9mIEZvcm1EYXRhID09PSAnZnVuY3Rpb24nICYmIHRoaW5nIGluc3RhbmNlb2YgRm9ybURhdGEpIHx8IChcbiAgICAgIGlzRnVuY3Rpb24odGhpbmcuYXBwZW5kKSAmJiAoXG4gICAgICAgIChraW5kID0ga2luZE9mKHRoaW5nKSkgPT09ICdmb3JtZGF0YScgfHxcbiAgICAgICAgLy8gZGV0ZWN0IGZvcm0tZGF0YSBpbnN0YW5jZVxuICAgICAgICAoa2luZCA9PT0gJ29iamVjdCcgJiYgaXNGdW5jdGlvbih0aGluZy50b1N0cmluZykgJiYgdGhpbmcudG9TdHJpbmcoKSA9PT0gJ1tvYmplY3QgRm9ybURhdGFdJylcbiAgICAgIClcbiAgICApXG4gIClcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFVSTFNlYXJjaFBhcmFtcyBvYmplY3RcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzVVJMU2VhcmNoUGFyYW1zID0ga2luZE9mVGVzdCgnVVJMU2VhcmNoUGFyYW1zJyk7XG5cbmNvbnN0IFtpc1JlYWRhYmxlU3RyZWFtLCBpc1JlcXVlc3QsIGlzUmVzcG9uc2UsIGlzSGVhZGVyc10gPSBbJ1JlYWRhYmxlU3RyZWFtJywgJ1JlcXVlc3QnLCAnUmVzcG9uc2UnLCAnSGVhZGVycyddLm1hcChraW5kT2ZUZXN0KTtcblxuLyoqXG4gKiBUcmltIGV4Y2VzcyB3aGl0ZXNwYWNlIG9mZiB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgYSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyIFRoZSBTdHJpbmcgdG8gdHJpbVxuICpcbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBTdHJpbmcgZnJlZWQgb2YgZXhjZXNzIHdoaXRlc3BhY2VcbiAqL1xuY29uc3QgdHJpbSA9IChzdHIpID0+IHN0ci50cmltID9cbiAgc3RyLnRyaW0oKSA6IHN0ci5yZXBsYWNlKC9eW1xcc1xcdUZFRkZcXHhBMF0rfFtcXHNcXHVGRUZGXFx4QTBdKyQvZywgJycpO1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBhbiBBcnJheSBvciBhbiBPYmplY3QgaW52b2tpbmcgYSBmdW5jdGlvbiBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmIGBvYmpgIGlzIGFuIEFycmF5IGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIHBhc3NpbmdcbiAqIHRoZSB2YWx1ZSwgaW5kZXgsIGFuZCBjb21wbGV0ZSBhcnJheSBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmICdvYmonIGlzIGFuIE9iamVjdCBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXG4gKiB0aGUgdmFsdWUsIGtleSwgYW5kIGNvbXBsZXRlIG9iamVjdCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gb2JqIFRoZSBvYmplY3QgdG8gaXRlcmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGNhbGxiYWNrIHRvIGludm9rZSBmb3IgZWFjaCBpdGVtXG4gKlxuICogQHBhcmFtIHtCb29sZWFufSBbYWxsT3duS2V5cyA9IGZhbHNlXVxuICogQHJldHVybnMge2FueX1cbiAqL1xuZnVuY3Rpb24gZm9yRWFjaChvYmosIGZuLCB7YWxsT3duS2V5cyA9IGZhbHNlfSA9IHt9KSB7XG4gIC8vIERvbid0IGJvdGhlciBpZiBubyB2YWx1ZSBwcm92aWRlZFxuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IGk7XG4gIGxldCBsO1xuXG4gIC8vIEZvcmNlIGFuIGFycmF5IGlmIG5vdCBhbHJlYWR5IHNvbWV0aGluZyBpdGVyYWJsZVxuICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgICBvYmogPSBbb2JqXTtcbiAgfVxuXG4gIGlmIChpc0FycmF5KG9iaikpIHtcbiAgICAvLyBJdGVyYXRlIG92ZXIgYXJyYXkgdmFsdWVzXG4gICAgZm9yIChpID0gMCwgbCA9IG9iai5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGZuLmNhbGwobnVsbCwgb2JqW2ldLCBpLCBvYmopO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBJdGVyYXRlIG92ZXIgb2JqZWN0IGtleXNcbiAgICBjb25zdCBrZXlzID0gYWxsT3duS2V5cyA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikgOiBPYmplY3Qua2V5cyhvYmopO1xuICAgIGNvbnN0IGxlbiA9IGtleXMubGVuZ3RoO1xuICAgIGxldCBrZXk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICBmbi5jYWxsKG51bGwsIG9ialtrZXldLCBrZXksIG9iaik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmRLZXkob2JqLCBrZXkpIHtcbiAga2V5ID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICBsZXQgaSA9IGtleXMubGVuZ3RoO1xuICBsZXQgX2tleTtcbiAgd2hpbGUgKGktLSA+IDApIHtcbiAgICBfa2V5ID0ga2V5c1tpXTtcbiAgICBpZiAoa2V5ID09PSBfa2V5LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIHJldHVybiBfa2V5O1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuY29uc3QgX2dsb2JhbCA9ICgoKSA9PiB7XG4gIC8qZXNsaW50IG5vLXVuZGVmOjAqL1xuICBpZiAodHlwZW9mIGdsb2JhbFRoaXMgIT09IFwidW5kZWZpbmVkXCIpIHJldHVybiBnbG9iYWxUaGlzO1xuICByZXR1cm4gdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDogZ2xvYmFsKVxufSkoKTtcblxuY29uc3QgaXNDb250ZXh0RGVmaW5lZCA9IChjb250ZXh0KSA9PiAhaXNVbmRlZmluZWQoY29udGV4dCkgJiYgY29udGV4dCAhPT0gX2dsb2JhbDtcblxuLyoqXG4gKiBBY2NlcHRzIHZhcmFyZ3MgZXhwZWN0aW5nIGVhY2ggYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0LCB0aGVuXG4gKiBpbW11dGFibHkgbWVyZ2VzIHRoZSBwcm9wZXJ0aWVzIG9mIGVhY2ggb2JqZWN0IGFuZCByZXR1cm5zIHJlc3VsdC5cbiAqXG4gKiBXaGVuIG11bHRpcGxlIG9iamVjdHMgY29udGFpbiB0aGUgc2FtZSBrZXkgdGhlIGxhdGVyIG9iamVjdCBpblxuICogdGhlIGFyZ3VtZW50cyBsaXN0IHdpbGwgdGFrZSBwcmVjZWRlbmNlLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBganNcbiAqIHZhciByZXN1bHQgPSBtZXJnZSh7Zm9vOiAxMjN9LCB7Zm9vOiA0NTZ9KTtcbiAqIGNvbnNvbGUubG9nKHJlc3VsdC5mb28pOyAvLyBvdXRwdXRzIDQ1NlxuICogYGBgXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9iajEgT2JqZWN0IHRvIG1lcmdlXG4gKlxuICogQHJldHVybnMge09iamVjdH0gUmVzdWx0IG9mIGFsbCBtZXJnZSBwcm9wZXJ0aWVzXG4gKi9cbmZ1bmN0aW9uIG1lcmdlKC8qIG9iajEsIG9iajIsIG9iajMsIC4uLiAqLykge1xuICBjb25zdCB7Y2FzZWxlc3N9ID0gaXNDb250ZXh0RGVmaW5lZCh0aGlzKSAmJiB0aGlzIHx8IHt9O1xuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgY29uc3QgYXNzaWduVmFsdWUgPSAodmFsLCBrZXkpID0+IHtcbiAgICBjb25zdCB0YXJnZXRLZXkgPSBjYXNlbGVzcyAmJiBmaW5kS2V5KHJlc3VsdCwga2V5KSB8fCBrZXk7XG4gICAgaWYgKGlzUGxhaW5PYmplY3QocmVzdWx0W3RhcmdldEtleV0pICYmIGlzUGxhaW5PYmplY3QodmFsKSkge1xuICAgICAgcmVzdWx0W3RhcmdldEtleV0gPSBtZXJnZShyZXN1bHRbdGFyZ2V0S2V5XSwgdmFsKTtcbiAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QodmFsKSkge1xuICAgICAgcmVzdWx0W3RhcmdldEtleV0gPSBtZXJnZSh7fSwgdmFsKTtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsKSkge1xuICAgICAgcmVzdWx0W3RhcmdldEtleV0gPSB2YWwuc2xpY2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0W3RhcmdldEtleV0gPSB2YWw7XG4gICAgfVxuICB9XG5cbiAgZm9yIChsZXQgaSA9IDAsIGwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgYXJndW1lbnRzW2ldICYmIGZvckVhY2goYXJndW1lbnRzW2ldLCBhc3NpZ25WYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBFeHRlbmRzIG9iamVjdCBhIGJ5IG11dGFibHkgYWRkaW5nIHRvIGl0IHRoZSBwcm9wZXJ0aWVzIG9mIG9iamVjdCBiLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBhIFRoZSBvYmplY3QgdG8gYmUgZXh0ZW5kZWRcbiAqIEBwYXJhbSB7T2JqZWN0fSBiIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb21cbiAqIEBwYXJhbSB7T2JqZWN0fSB0aGlzQXJnIFRoZSBvYmplY3QgdG8gYmluZCBmdW5jdGlvbiB0b1xuICpcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW2FsbE93bktleXNdXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgcmVzdWx0aW5nIHZhbHVlIG9mIG9iamVjdCBhXG4gKi9cbmNvbnN0IGV4dGVuZCA9IChhLCBiLCB0aGlzQXJnLCB7YWxsT3duS2V5c309IHt9KSA9PiB7XG4gIGZvckVhY2goYiwgKHZhbCwga2V5KSA9PiB7XG4gICAgaWYgKHRoaXNBcmcgJiYgaXNGdW5jdGlvbih2YWwpKSB7XG4gICAgICBhW2tleV0gPSBiaW5kKHZhbCwgdGhpc0FyZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFba2V5XSA9IHZhbDtcbiAgICB9XG4gIH0sIHthbGxPd25LZXlzfSk7XG4gIHJldHVybiBhO1xufVxuXG4vKipcbiAqIFJlbW92ZSBieXRlIG9yZGVyIG1hcmtlci4gVGhpcyBjYXRjaGVzIEVGIEJCIEJGICh0aGUgVVRGLTggQk9NKVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IHdpdGggQk9NXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gY29udGVudCB2YWx1ZSB3aXRob3V0IEJPTVxuICovXG5jb25zdCBzdHJpcEJPTSA9IChjb250ZW50KSA9PiB7XG4gIGlmIChjb250ZW50LmNoYXJDb2RlQXQoMCkgPT09IDB4RkVGRikge1xuICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKDEpO1xuICB9XG4gIHJldHVybiBjb250ZW50O1xufVxuXG4vKipcbiAqIEluaGVyaXQgdGhlIHByb3RvdHlwZSBtZXRob2RzIGZyb20gb25lIGNvbnN0cnVjdG9yIGludG8gYW5vdGhlclxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHN1cGVyQ29uc3RydWN0b3JcbiAqIEBwYXJhbSB7b2JqZWN0fSBbcHJvcHNdXG4gKiBAcGFyYW0ge29iamVjdH0gW2Rlc2NyaXB0b3JzXVxuICpcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5jb25zdCBpbmhlcml0cyA9IChjb25zdHJ1Y3Rvciwgc3VwZXJDb25zdHJ1Y3RvciwgcHJvcHMsIGRlc2NyaXB0b3JzKSA9PiB7XG4gIGNvbnN0cnVjdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIGRlc2NyaXB0b3JzKTtcbiAgY29uc3RydWN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb25zdHJ1Y3RvciwgJ3N1cGVyJywge1xuICAgIHZhbHVlOiBzdXBlckNvbnN0cnVjdG9yLnByb3RvdHlwZVxuICB9KTtcbiAgcHJvcHMgJiYgT2JqZWN0LmFzc2lnbihjb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3BzKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIG9iamVjdCB3aXRoIGRlZXAgcHJvdG90eXBlIGNoYWluIHRvIGEgZmxhdCBvYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2VPYmogc291cmNlIG9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IFtkZXN0T2JqXVxuICogQHBhcmFtIHtGdW5jdGlvbnxCb29sZWFufSBbZmlsdGVyXVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3Byb3BGaWx0ZXJdXG4gKlxuICogQHJldHVybnMge09iamVjdH1cbiAqL1xuY29uc3QgdG9GbGF0T2JqZWN0ID0gKHNvdXJjZU9iaiwgZGVzdE9iaiwgZmlsdGVyLCBwcm9wRmlsdGVyKSA9PiB7XG4gIGxldCBwcm9wcztcbiAgbGV0IGk7XG4gIGxldCBwcm9wO1xuICBjb25zdCBtZXJnZWQgPSB7fTtcblxuICBkZXN0T2JqID0gZGVzdE9iaiB8fCB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVxLW51bGwsZXFlcWVxXG4gIGlmIChzb3VyY2VPYmogPT0gbnVsbCkgcmV0dXJuIGRlc3RPYmo7XG5cbiAgZG8ge1xuICAgIHByb3BzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoc291cmNlT2JqKTtcbiAgICBpID0gcHJvcHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICBwcm9wID0gcHJvcHNbaV07XG4gICAgICBpZiAoKCFwcm9wRmlsdGVyIHx8IHByb3BGaWx0ZXIocHJvcCwgc291cmNlT2JqLCBkZXN0T2JqKSkgJiYgIW1lcmdlZFtwcm9wXSkge1xuICAgICAgICBkZXN0T2JqW3Byb3BdID0gc291cmNlT2JqW3Byb3BdO1xuICAgICAgICBtZXJnZWRbcHJvcF0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3VyY2VPYmogPSBmaWx0ZXIgIT09IGZhbHNlICYmIGdldFByb3RvdHlwZU9mKHNvdXJjZU9iaik7XG4gIH0gd2hpbGUgKHNvdXJjZU9iaiAmJiAoIWZpbHRlciB8fCBmaWx0ZXIoc291cmNlT2JqLCBkZXN0T2JqKSkgJiYgc291cmNlT2JqICE9PSBPYmplY3QucHJvdG90eXBlKTtcblxuICByZXR1cm4gZGVzdE9iajtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBjaGFyYWN0ZXJzIG9mIGEgc3BlY2lmaWVkIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBzZWFyY2hTdHJpbmdcbiAqIEBwYXJhbSB7TnVtYmVyfSBbcG9zaXRpb249IDBdXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmNvbnN0IGVuZHNXaXRoID0gKHN0ciwgc2VhcmNoU3RyaW5nLCBwb3NpdGlvbikgPT4ge1xuICBzdHIgPSBTdHJpbmcoc3RyKTtcbiAgaWYgKHBvc2l0aW9uID09PSB1bmRlZmluZWQgfHwgcG9zaXRpb24gPiBzdHIubGVuZ3RoKSB7XG4gICAgcG9zaXRpb24gPSBzdHIubGVuZ3RoO1xuICB9XG4gIHBvc2l0aW9uIC09IHNlYXJjaFN0cmluZy5sZW5ndGg7XG4gIGNvbnN0IGxhc3RJbmRleCA9IHN0ci5pbmRleE9mKHNlYXJjaFN0cmluZywgcG9zaXRpb24pO1xuICByZXR1cm4gbGFzdEluZGV4ICE9PSAtMSAmJiBsYXN0SW5kZXggPT09IHBvc2l0aW9uO1xufVxuXG5cbi8qKlxuICogUmV0dXJucyBuZXcgYXJyYXkgZnJvbSBhcnJheSBsaWtlIG9iamVjdCBvciBudWxsIGlmIGZhaWxlZFxuICpcbiAqIEBwYXJhbSB7Kn0gW3RoaW5nXVxuICpcbiAqIEByZXR1cm5zIHs/QXJyYXl9XG4gKi9cbmNvbnN0IHRvQXJyYXkgPSAodGhpbmcpID0+IHtcbiAgaWYgKCF0aGluZykgcmV0dXJuIG51bGw7XG4gIGlmIChpc0FycmF5KHRoaW5nKSkgcmV0dXJuIHRoaW5nO1xuICBsZXQgaSA9IHRoaW5nLmxlbmd0aDtcbiAgaWYgKCFpc051bWJlcihpKSkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IGFyciA9IG5ldyBBcnJheShpKTtcbiAgd2hpbGUgKGktLSA+IDApIHtcbiAgICBhcnJbaV0gPSB0aGluZ1tpXTtcbiAgfVxuICByZXR1cm4gYXJyO1xufVxuXG4vKipcbiAqIENoZWNraW5nIGlmIHRoZSBVaW50OEFycmF5IGV4aXN0cyBhbmQgaWYgaXQgZG9lcywgaXQgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGlmIHRoZVxuICogdGhpbmcgcGFzc2VkIGluIGlzIGFuIGluc3RhbmNlIG9mIFVpbnQ4QXJyYXlcbiAqXG4gKiBAcGFyYW0ge1R5cGVkQXJyYXl9XG4gKlxuICogQHJldHVybnMge0FycmF5fVxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuY29uc3QgaXNUeXBlZEFycmF5ID0gKFR5cGVkQXJyYXkgPT4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICByZXR1cm4gdGhpbmcgPT4ge1xuICAgIHJldHVybiBUeXBlZEFycmF5ICYmIHRoaW5nIGluc3RhbmNlb2YgVHlwZWRBcnJheTtcbiAgfTtcbn0pKHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJyAmJiBnZXRQcm90b3R5cGVPZihVaW50OEFycmF5KSk7XG5cbi8qKlxuICogRm9yIGVhY2ggZW50cnkgaW4gdGhlIG9iamVjdCwgY2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUga2V5IGFuZCB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdDxhbnksIGFueT59IG9iaiAtIFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gY2FsbCBmb3IgZWFjaCBlbnRyeS5cbiAqXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuY29uc3QgZm9yRWFjaEVudHJ5ID0gKG9iaiwgZm4pID0+IHtcbiAgY29uc3QgZ2VuZXJhdG9yID0gb2JqICYmIG9ialtTeW1ib2wuaXRlcmF0b3JdO1xuXG4gIGNvbnN0IGl0ZXJhdG9yID0gZ2VuZXJhdG9yLmNhbGwob2JqKTtcblxuICBsZXQgcmVzdWx0O1xuXG4gIHdoaWxlICgocmVzdWx0ID0gaXRlcmF0b3IubmV4dCgpKSAmJiAhcmVzdWx0LmRvbmUpIHtcbiAgICBjb25zdCBwYWlyID0gcmVzdWx0LnZhbHVlO1xuICAgIGZuLmNhbGwob2JqLCBwYWlyWzBdLCBwYWlyWzFdKTtcbiAgfVxufVxuXG4vKipcbiAqIEl0IHRha2VzIGEgcmVndWxhciBleHByZXNzaW9uIGFuZCBhIHN0cmluZywgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHRoZSBtYXRjaGVzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHJlZ0V4cCAtIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gdG8gbWF0Y2ggYWdhaW5zdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgLSBUaGUgc3RyaW5nIHRvIHNlYXJjaC5cbiAqXG4gKiBAcmV0dXJucyB7QXJyYXk8Ym9vbGVhbj59XG4gKi9cbmNvbnN0IG1hdGNoQWxsID0gKHJlZ0V4cCwgc3RyKSA9PiB7XG4gIGxldCBtYXRjaGVzO1xuICBjb25zdCBhcnIgPSBbXTtcblxuICB3aGlsZSAoKG1hdGNoZXMgPSByZWdFeHAuZXhlYyhzdHIpKSAhPT0gbnVsbCkge1xuICAgIGFyci5wdXNoKG1hdGNoZXMpO1xuICB9XG5cbiAgcmV0dXJuIGFycjtcbn1cblxuLyogQ2hlY2tpbmcgaWYgdGhlIGtpbmRPZlRlc3QgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gcGFzc2VkIGFuIEhUTUxGb3JtRWxlbWVudC4gKi9cbmNvbnN0IGlzSFRNTEZvcm0gPSBraW5kT2ZUZXN0KCdIVE1MRm9ybUVsZW1lbnQnKTtcblxuY29uc3QgdG9DYW1lbENhc2UgPSBzdHIgPT4ge1xuICByZXR1cm4gc3RyLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWy1fXFxzXShbYS16XFxkXSkoXFx3KikvZyxcbiAgICBmdW5jdGlvbiByZXBsYWNlcihtLCBwMSwgcDIpIHtcbiAgICAgIHJldHVybiBwMS50b1VwcGVyQ2FzZSgpICsgcDI7XG4gICAgfVxuICApO1xufTtcblxuLyogQ3JlYXRpbmcgYSBmdW5jdGlvbiB0aGF0IHdpbGwgY2hlY2sgaWYgYW4gb2JqZWN0IGhhcyBhIHByb3BlcnR5LiAqL1xuY29uc3QgaGFzT3duUHJvcGVydHkgPSAoKHtoYXNPd25Qcm9wZXJ0eX0pID0+IChvYmosIHByb3ApID0+IGhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkoT2JqZWN0LnByb3RvdHlwZSk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBSZWdFeHAgb2JqZWN0XG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFJlZ0V4cCBvYmplY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc1JlZ0V4cCA9IGtpbmRPZlRlc3QoJ1JlZ0V4cCcpO1xuXG5jb25zdCByZWR1Y2VEZXNjcmlwdG9ycyA9IChvYmosIHJlZHVjZXIpID0+IHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhvYmopO1xuICBjb25zdCByZWR1Y2VkRGVzY3JpcHRvcnMgPSB7fTtcblxuICBmb3JFYWNoKGRlc2NyaXB0b3JzLCAoZGVzY3JpcHRvciwgbmFtZSkgPT4ge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKChyZXQgPSByZWR1Y2VyKGRlc2NyaXB0b3IsIG5hbWUsIG9iaikpICE9PSBmYWxzZSkge1xuICAgICAgcmVkdWNlZERlc2NyaXB0b3JzW25hbWVdID0gcmV0IHx8IGRlc2NyaXB0b3I7XG4gICAgfVxuICB9KTtcblxuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhvYmosIHJlZHVjZWREZXNjcmlwdG9ycyk7XG59XG5cbi8qKlxuICogTWFrZXMgYWxsIG1ldGhvZHMgcmVhZC1vbmx5XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqXG4gKi9cblxuY29uc3QgZnJlZXplTWV0aG9kcyA9IChvYmopID0+IHtcbiAgcmVkdWNlRGVzY3JpcHRvcnMob2JqLCAoZGVzY3JpcHRvciwgbmFtZSkgPT4ge1xuICAgIC8vIHNraXAgcmVzdHJpY3RlZCBwcm9wcyBpbiBzdHJpY3QgbW9kZVxuICAgIGlmIChpc0Z1bmN0aW9uKG9iaikgJiYgWydhcmd1bWVudHMnLCAnY2FsbGVyJywgJ2NhbGxlZSddLmluZGV4T2YobmFtZSkgIT09IC0xKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBvYmpbbmFtZV07XG5cbiAgICBpZiAoIWlzRnVuY3Rpb24odmFsdWUpKSByZXR1cm47XG5cbiAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBmYWxzZTtcblxuICAgIGlmICgnd3JpdGFibGUnIGluIGRlc2NyaXB0b3IpIHtcbiAgICAgIGRlc2NyaXB0b3Iud3JpdGFibGUgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWRlc2NyaXB0b3Iuc2V0KSB7XG4gICAgICBkZXNjcmlwdG9yLnNldCA9ICgpID0+IHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ0NhbiBub3QgcmV3cml0ZSByZWFkLW9ubHkgbWV0aG9kIFxcJycgKyBuYW1lICsgJ1xcJycpO1xuICAgICAgfTtcbiAgICB9XG4gIH0pO1xufVxuXG5jb25zdCB0b09iamVjdFNldCA9IChhcnJheU9yU3RyaW5nLCBkZWxpbWl0ZXIpID0+IHtcbiAgY29uc3Qgb2JqID0ge307XG5cbiAgY29uc3QgZGVmaW5lID0gKGFycikgPT4ge1xuICAgIGFyci5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgIG9ialt2YWx1ZV0gPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgaXNBcnJheShhcnJheU9yU3RyaW5nKSA/IGRlZmluZShhcnJheU9yU3RyaW5nKSA6IGRlZmluZShTdHJpbmcoYXJyYXlPclN0cmluZykuc3BsaXQoZGVsaW1pdGVyKSk7XG5cbiAgcmV0dXJuIG9iajtcbn1cblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9XG5cbmNvbnN0IHRvRmluaXRlTnVtYmVyID0gKHZhbHVlLCBkZWZhdWx0VmFsdWUpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgTnVtYmVyLmlzRmluaXRlKHZhbHVlID0gK3ZhbHVlKSA/IHZhbHVlIDogZGVmYXVsdFZhbHVlO1xufVxuXG5jb25zdCBBTFBIQSA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidcblxuY29uc3QgRElHSVQgPSAnMDEyMzQ1Njc4OSc7XG5cbmNvbnN0IEFMUEhBQkVUID0ge1xuICBESUdJVCxcbiAgQUxQSEEsXG4gIEFMUEhBX0RJR0lUOiBBTFBIQSArIEFMUEhBLnRvVXBwZXJDYXNlKCkgKyBESUdJVFxufVxuXG5jb25zdCBnZW5lcmF0ZVN0cmluZyA9IChzaXplID0gMTYsIGFscGhhYmV0ID0gQUxQSEFCRVQuQUxQSEFfRElHSVQpID0+IHtcbiAgbGV0IHN0ciA9ICcnO1xuICBjb25zdCB7bGVuZ3RofSA9IGFscGhhYmV0O1xuICB3aGlsZSAoc2l6ZS0tKSB7XG4gICAgc3RyICs9IGFscGhhYmV0W01hdGgucmFuZG9tKCkgKiBsZW5ndGh8MF1cbiAgfVxuXG4gIHJldHVybiBzdHI7XG59XG5cbi8qKlxuICogSWYgdGhlIHRoaW5nIGlzIGEgRm9ybURhdGEgb2JqZWN0LCByZXR1cm4gdHJ1ZSwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHRoaW5nIC0gVGhlIHRoaW5nIHRvIGNoZWNrLlxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc1NwZWNDb21wbGlhbnRGb3JtKHRoaW5nKSB7XG4gIHJldHVybiAhISh0aGluZyAmJiBpc0Z1bmN0aW9uKHRoaW5nLmFwcGVuZCkgJiYgdGhpbmdbU3ltYm9sLnRvU3RyaW5nVGFnXSA9PT0gJ0Zvcm1EYXRhJyAmJiB0aGluZ1tTeW1ib2wuaXRlcmF0b3JdKTtcbn1cblxuY29uc3QgdG9KU09OT2JqZWN0ID0gKG9iaikgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBBcnJheSgxMCk7XG5cbiAgY29uc3QgdmlzaXQgPSAoc291cmNlLCBpKSA9PiB7XG5cbiAgICBpZiAoaXNPYmplY3Qoc291cmNlKSkge1xuICAgICAgaWYgKHN0YWNrLmluZGV4T2Yoc291cmNlKSA+PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYoISgndG9KU09OJyBpbiBzb3VyY2UpKSB7XG4gICAgICAgIHN0YWNrW2ldID0gc291cmNlO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBpc0FycmF5KHNvdXJjZSkgPyBbXSA6IHt9O1xuXG4gICAgICAgIGZvckVhY2goc291cmNlLCAodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlZHVjZWRWYWx1ZSA9IHZpc2l0KHZhbHVlLCBpICsgMSk7XG4gICAgICAgICAgIWlzVW5kZWZpbmVkKHJlZHVjZWRWYWx1ZSkgJiYgKHRhcmdldFtrZXldID0gcmVkdWNlZFZhbHVlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3RhY2tbaV0gPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc291cmNlO1xuICB9XG5cbiAgcmV0dXJuIHZpc2l0KG9iaiwgMCk7XG59XG5cbmNvbnN0IGlzQXN5bmNGbiA9IGtpbmRPZlRlc3QoJ0FzeW5jRnVuY3Rpb24nKTtcblxuY29uc3QgaXNUaGVuYWJsZSA9ICh0aGluZykgPT5cbiAgdGhpbmcgJiYgKGlzT2JqZWN0KHRoaW5nKSB8fCBpc0Z1bmN0aW9uKHRoaW5nKSkgJiYgaXNGdW5jdGlvbih0aGluZy50aGVuKSAmJiBpc0Z1bmN0aW9uKHRoaW5nLmNhdGNoKTtcblxuLy8gb3JpZ2luYWwgY29kZVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0RpZ2l0YWxCcmFpbkpTL0F4aW9zUHJvbWlzZS9ibG9iLzE2ZGVhYjEzNzEwZWMwOTc3OTkyMjEzMWYzZmE1OTU0MzIwZjgzYWIvbGliL3V0aWxzLmpzI0wxMS1MMzRcblxuY29uc3QgX3NldEltbWVkaWF0ZSA9ICgoc2V0SW1tZWRpYXRlU3VwcG9ydGVkLCBwb3N0TWVzc2FnZVN1cHBvcnRlZCkgPT4ge1xuICBpZiAoc2V0SW1tZWRpYXRlU3VwcG9ydGVkKSB7XG4gICAgcmV0dXJuIHNldEltbWVkaWF0ZTtcbiAgfVxuXG4gIHJldHVybiBwb3N0TWVzc2FnZVN1cHBvcnRlZCA/ICgodG9rZW4sIGNhbGxiYWNrcykgPT4ge1xuICAgIF9nbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgKHtzb3VyY2UsIGRhdGF9KSA9PiB7XG4gICAgICBpZiAoc291cmNlID09PSBfZ2xvYmFsICYmIGRhdGEgPT09IHRva2VuKSB7XG4gICAgICAgIGNhbGxiYWNrcy5sZW5ndGggJiYgY2FsbGJhY2tzLnNoaWZ0KCkoKTtcbiAgICAgIH1cbiAgICB9LCBmYWxzZSk7XG5cbiAgICByZXR1cm4gKGNiKSA9PiB7XG4gICAgICBjYWxsYmFja3MucHVzaChjYik7XG4gICAgICBfZ2xvYmFsLnBvc3RNZXNzYWdlKHRva2VuLCBcIipcIik7XG4gICAgfVxuICB9KShgYXhpb3NAJHtNYXRoLnJhbmRvbSgpfWAsIFtdKSA6IChjYikgPT4gc2V0VGltZW91dChjYik7XG59KShcbiAgdHlwZW9mIHNldEltbWVkaWF0ZSA9PT0gJ2Z1bmN0aW9uJyxcbiAgaXNGdW5jdGlvbihfZ2xvYmFsLnBvc3RNZXNzYWdlKVxuKTtcblxuY29uc3QgYXNhcCA9IHR5cGVvZiBxdWV1ZU1pY3JvdGFzayAhPT0gJ3VuZGVmaW5lZCcgP1xuICBxdWV1ZU1pY3JvdGFzay5iaW5kKF9nbG9iYWwpIDogKCB0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5uZXh0VGljayB8fCBfc2V0SW1tZWRpYXRlKTtcblxuLy8gKioqKioqKioqKioqKioqKioqKioqXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgaXNBcnJheSxcbiAgaXNBcnJheUJ1ZmZlcixcbiAgaXNCdWZmZXIsXG4gIGlzRm9ybURhdGEsXG4gIGlzQXJyYXlCdWZmZXJWaWV3LFxuICBpc1N0cmluZyxcbiAgaXNOdW1iZXIsXG4gIGlzQm9vbGVhbixcbiAgaXNPYmplY3QsXG4gIGlzUGxhaW5PYmplY3QsXG4gIGlzUmVhZGFibGVTdHJlYW0sXG4gIGlzUmVxdWVzdCxcbiAgaXNSZXNwb25zZSxcbiAgaXNIZWFkZXJzLFxuICBpc1VuZGVmaW5lZCxcbiAgaXNEYXRlLFxuICBpc0ZpbGUsXG4gIGlzQmxvYixcbiAgaXNSZWdFeHAsXG4gIGlzRnVuY3Rpb24sXG4gIGlzU3RyZWFtLFxuICBpc1VSTFNlYXJjaFBhcmFtcyxcbiAgaXNUeXBlZEFycmF5LFxuICBpc0ZpbGVMaXN0LFxuICBmb3JFYWNoLFxuICBtZXJnZSxcbiAgZXh0ZW5kLFxuICB0cmltLFxuICBzdHJpcEJPTSxcbiAgaW5oZXJpdHMsXG4gIHRvRmxhdE9iamVjdCxcbiAga2luZE9mLFxuICBraW5kT2ZUZXN0LFxuICBlbmRzV2l0aCxcbiAgdG9BcnJheSxcbiAgZm9yRWFjaEVudHJ5LFxuICBtYXRjaEFsbCxcbiAgaXNIVE1MRm9ybSxcbiAgaGFzT3duUHJvcGVydHksXG4gIGhhc093blByb3A6IGhhc093blByb3BlcnR5LCAvLyBhbiBhbGlhcyB0byBhdm9pZCBFU0xpbnQgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIGRldGVjdGlvblxuICByZWR1Y2VEZXNjcmlwdG9ycyxcbiAgZnJlZXplTWV0aG9kcyxcbiAgdG9PYmplY3RTZXQsXG4gIHRvQ2FtZWxDYXNlLFxuICBub29wLFxuICB0b0Zpbml0ZU51bWJlcixcbiAgZmluZEtleSxcbiAgZ2xvYmFsOiBfZ2xvYmFsLFxuICBpc0NvbnRleHREZWZpbmVkLFxuICBBTFBIQUJFVCxcbiAgZ2VuZXJhdGVTdHJpbmcsXG4gIGlzU3BlY0NvbXBsaWFudEZvcm0sXG4gIHRvSlNPTk9iamVjdCxcbiAgaXNBc3luY0ZuLFxuICBpc1RoZW5hYmxlLFxuICBzZXRJbW1lZGlhdGU6IF9zZXRJbW1lZGlhdGUsXG4gIGFzYXBcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5cbi8qKlxuICogQ3JlYXRlIGFuIEVycm9yIHdpdGggdGhlIHNwZWNpZmllZCBtZXNzYWdlLCBjb25maWcsIGVycm9yIGNvZGUsIHJlcXVlc3QgYW5kIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2RlXSBUaGUgZXJyb3IgY29kZSAoZm9yIGV4YW1wbGUsICdFQ09OTkFCT1JURUQnKS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbY29uZmlnXSBUaGUgY29uZmlnLlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXF1ZXN0XSBUaGUgcmVxdWVzdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVzcG9uc2VdIFRoZSByZXNwb25zZS5cbiAqXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRoZSBjcmVhdGVkIGVycm9yLlxuICovXG5mdW5jdGlvbiBBeGlvc0Vycm9yKG1lc3NhZ2UsIGNvZGUsIGNvbmZpZywgcmVxdWVzdCwgcmVzcG9uc2UpIHtcbiAgRXJyb3IuY2FsbCh0aGlzKTtcblxuICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnN0YWNrID0gKG5ldyBFcnJvcigpKS5zdGFjaztcbiAgfVxuXG4gIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gIHRoaXMubmFtZSA9ICdBeGlvc0Vycm9yJztcbiAgY29kZSAmJiAodGhpcy5jb2RlID0gY29kZSk7XG4gIGNvbmZpZyAmJiAodGhpcy5jb25maWcgPSBjb25maWcpO1xuICByZXF1ZXN0ICYmICh0aGlzLnJlcXVlc3QgPSByZXF1ZXN0KTtcbiAgaWYgKHJlc3BvbnNlKSB7XG4gICAgdGhpcy5yZXNwb25zZSA9IHJlc3BvbnNlO1xuICAgIHRoaXMuc3RhdHVzID0gcmVzcG9uc2Uuc3RhdHVzID8gcmVzcG9uc2Uuc3RhdHVzIDogbnVsbDtcbiAgfVxufVxuXG51dGlscy5pbmhlcml0cyhBeGlvc0Vycm9yLCBFcnJvciwge1xuICB0b0pTT046IGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gU3RhbmRhcmRcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIC8vIE1pY3Jvc29mdFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBudW1iZXI6IHRoaXMubnVtYmVyLFxuICAgICAgLy8gTW96aWxsYVxuICAgICAgZmlsZU5hbWU6IHRoaXMuZmlsZU5hbWUsXG4gICAgICBsaW5lTnVtYmVyOiB0aGlzLmxpbmVOdW1iZXIsXG4gICAgICBjb2x1bW5OdW1iZXI6IHRoaXMuY29sdW1uTnVtYmVyLFxuICAgICAgc3RhY2s6IHRoaXMuc3RhY2ssXG4gICAgICAvLyBBeGlvc1xuICAgICAgY29uZmlnOiB1dGlscy50b0pTT05PYmplY3QodGhpcy5jb25maWcpLFxuICAgICAgY29kZTogdGhpcy5jb2RlLFxuICAgICAgc3RhdHVzOiB0aGlzLnN0YXR1c1xuICAgIH07XG4gIH1cbn0pO1xuXG5jb25zdCBwcm90b3R5cGUgPSBBeGlvc0Vycm9yLnByb3RvdHlwZTtcbmNvbnN0IGRlc2NyaXB0b3JzID0ge307XG5cbltcbiAgJ0VSUl9CQURfT1BUSU9OX1ZBTFVFJyxcbiAgJ0VSUl9CQURfT1BUSU9OJyxcbiAgJ0VDT05OQUJPUlRFRCcsXG4gICdFVElNRURPVVQnLFxuICAnRVJSX05FVFdPUksnLFxuICAnRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUycsXG4gICdFUlJfREVQUkVDQVRFRCcsXG4gICdFUlJfQkFEX1JFU1BPTlNFJyxcbiAgJ0VSUl9CQURfUkVRVUVTVCcsXG4gICdFUlJfQ0FOQ0VMRUQnLFxuICAnRVJSX05PVF9TVVBQT1JUJyxcbiAgJ0VSUl9JTlZBTElEX1VSTCdcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5dLmZvckVhY2goY29kZSA9PiB7XG4gIGRlc2NyaXB0b3JzW2NvZGVdID0ge3ZhbHVlOiBjb2RlfTtcbn0pO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhBeGlvc0Vycm9yLCBkZXNjcmlwdG9ycyk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCAnaXNBeGlvc0Vycm9yJywge3ZhbHVlOiB0cnVlfSk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5BeGlvc0Vycm9yLmZyb20gPSAoZXJyb3IsIGNvZGUsIGNvbmZpZywgcmVxdWVzdCwgcmVzcG9uc2UsIGN1c3RvbVByb3BzKSA9PiB7XG4gIGNvbnN0IGF4aW9zRXJyb3IgPSBPYmplY3QuY3JlYXRlKHByb3RvdHlwZSk7XG5cbiAgdXRpbHMudG9GbGF0T2JqZWN0KGVycm9yLCBheGlvc0Vycm9yLCBmdW5jdGlvbiBmaWx0ZXIob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAhPT0gRXJyb3IucHJvdG90eXBlO1xuICB9LCBwcm9wID0+IHtcbiAgICByZXR1cm4gcHJvcCAhPT0gJ2lzQXhpb3NFcnJvcic7XG4gIH0pO1xuXG4gIEF4aW9zRXJyb3IuY2FsbChheGlvc0Vycm9yLCBlcnJvci5tZXNzYWdlLCBjb2RlLCBjb25maWcsIHJlcXVlc3QsIHJlc3BvbnNlKTtcblxuICBheGlvc0Vycm9yLmNhdXNlID0gZXJyb3I7XG5cbiAgYXhpb3NFcnJvci5uYW1lID0gZXJyb3IubmFtZTtcblxuICBjdXN0b21Qcm9wcyAmJiBPYmplY3QuYXNzaWduKGF4aW9zRXJyb3IsIGN1c3RvbVByb3BzKTtcblxuICByZXR1cm4gYXhpb3NFcnJvcjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF4aW9zRXJyb3I7XG4iLCIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RyaWN0XG5leHBvcnQgZGVmYXVsdCBudWxsO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSAnLi4vY29yZS9BeGlvc0Vycm9yLmpzJztcbi8vIHRlbXBvcmFyeSBob3RmaXggdG8gYXZvaWQgY2lyY3VsYXIgcmVmZXJlbmNlcyB1bnRpbCBBeGlvc1VSTFNlYXJjaFBhcmFtcyBpcyByZWZhY3RvcmVkXG5pbXBvcnQgUGxhdGZvcm1Gb3JtRGF0YSBmcm9tICcuLi9wbGF0Zm9ybS9ub2RlL2NsYXNzZXMvRm9ybURhdGEuanMnO1xuXG4vKipcbiAqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIHRoaW5nIGlzIGEgYXJyYXkgb3IganMgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0aGluZyAtIFRoZSBvYmplY3Qgb3IgYXJyYXkgdG8gYmUgdmlzaXRlZC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNWaXNpdGFibGUodGhpbmcpIHtcbiAgcmV0dXJuIHV0aWxzLmlzUGxhaW5PYmplY3QodGhpbmcpIHx8IHV0aWxzLmlzQXJyYXkodGhpbmcpO1xufVxuXG4vKipcbiAqIEl0IHJlbW92ZXMgdGhlIGJyYWNrZXRzIGZyb20gdGhlIGVuZCBvZiBhIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUga2V5IG9mIHRoZSBwYXJhbWV0ZXIuXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gdGhlIGtleSB3aXRob3V0IHRoZSBicmFja2V0cy5cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlQnJhY2tldHMoa2V5KSB7XG4gIHJldHVybiB1dGlscy5lbmRzV2l0aChrZXksICdbXScpID8ga2V5LnNsaWNlKDAsIC0yKSA6IGtleTtcbn1cblxuLyoqXG4gKiBJdCB0YWtlcyBhIHBhdGgsIGEga2V5LCBhbmQgYSBib29sZWFuLCBhbmQgcmV0dXJucyBhIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIGN1cnJlbnQga2V5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBrZXkgb2YgdGhlIGN1cnJlbnQgb2JqZWN0IGJlaW5nIGl0ZXJhdGVkIG92ZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gZG90cyAtIElmIHRydWUsIHRoZSBrZXkgd2lsbCBiZSByZW5kZXJlZCB3aXRoIGRvdHMgaW5zdGVhZCBvZiBicmFja2V0cy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgcGF0aCB0byB0aGUgY3VycmVudCBrZXkuXG4gKi9cbmZ1bmN0aW9uIHJlbmRlcktleShwYXRoLCBrZXksIGRvdHMpIHtcbiAgaWYgKCFwYXRoKSByZXR1cm4ga2V5O1xuICByZXR1cm4gcGF0aC5jb25jYXQoa2V5KS5tYXAoZnVuY3Rpb24gZWFjaCh0b2tlbiwgaSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgIHRva2VuID0gcmVtb3ZlQnJhY2tldHModG9rZW4pO1xuICAgIHJldHVybiAhZG90cyAmJiBpID8gJ1snICsgdG9rZW4gKyAnXScgOiB0b2tlbjtcbiAgfSkuam9pbihkb3RzID8gJy4nIDogJycpO1xufVxuXG4vKipcbiAqIElmIHRoZSBhcnJheSBpcyBhbiBhcnJheSBhbmQgbm9uZSBvZiBpdHMgZWxlbWVudHMgYXJlIHZpc2l0YWJsZSwgdGhlbiBpdCdzIGEgZmxhdCBhcnJheS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PGFueT59IGFyciAtIFRoZSBhcnJheSB0byBjaGVja1xuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc0ZsYXRBcnJheShhcnIpIHtcbiAgcmV0dXJuIHV0aWxzLmlzQXJyYXkoYXJyKSAmJiAhYXJyLnNvbWUoaXNWaXNpdGFibGUpO1xufVxuXG5jb25zdCBwcmVkaWNhdGVzID0gdXRpbHMudG9GbGF0T2JqZWN0KHV0aWxzLCB7fSwgbnVsbCwgZnVuY3Rpb24gZmlsdGVyKHByb3ApIHtcbiAgcmV0dXJuIC9eaXNbQS1aXS8udGVzdChwcm9wKTtcbn0pO1xuXG4vKipcbiAqIENvbnZlcnQgYSBkYXRhIG9iamVjdCB0byBGb3JtRGF0YVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEBwYXJhbSB7P09iamVjdH0gW2Zvcm1EYXRhXVxuICogQHBhcmFtIHs/T2JqZWN0fSBbb3B0aW9uc11cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtvcHRpb25zLnZpc2l0b3JdXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLm1ldGFUb2tlbnMgPSB0cnVlXVxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5kb3RzID0gZmFsc2VdXG4gKiBAcGFyYW0gez9Cb29sZWFufSBbb3B0aW9ucy5pbmRleGVzID0gZmFsc2VdXG4gKlxuICogQHJldHVybnMge09iamVjdH1cbiAqKi9cblxuLyoqXG4gKiBJdCBjb252ZXJ0cyBhbiBvYmplY3QgaW50byBhIEZvcm1EYXRhIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0PGFueSwgYW55Pn0gb2JqIC0gVGhlIG9iamVjdCB0byBjb252ZXJ0IHRvIGZvcm0gZGF0YS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtRGF0YSAtIFRoZSBGb3JtRGF0YSBvYmplY3QgdG8gYXBwZW5kIHRvLlxuICogQHBhcmFtIHtPYmplY3Q8c3RyaW5nLCBhbnk+fSBvcHRpb25zXG4gKlxuICogQHJldHVybnNcbiAqL1xuZnVuY3Rpb24gdG9Gb3JtRGF0YShvYmosIGZvcm1EYXRhLCBvcHRpb25zKSB7XG4gIGlmICghdXRpbHMuaXNPYmplY3Qob2JqKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3RhcmdldCBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIGZvcm1EYXRhID0gZm9ybURhdGEgfHwgbmV3IChQbGF0Zm9ybUZvcm1EYXRhIHx8IEZvcm1EYXRhKSgpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICBvcHRpb25zID0gdXRpbHMudG9GbGF0T2JqZWN0KG9wdGlvbnMsIHtcbiAgICBtZXRhVG9rZW5zOiB0cnVlLFxuICAgIGRvdHM6IGZhbHNlLFxuICAgIGluZGV4ZXM6IGZhbHNlXG4gIH0sIGZhbHNlLCBmdW5jdGlvbiBkZWZpbmVkKG9wdGlvbiwgc291cmNlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVxLW51bGwsZXFlcWVxXG4gICAgcmV0dXJuICF1dGlscy5pc1VuZGVmaW5lZChzb3VyY2Vbb3B0aW9uXSk7XG4gIH0pO1xuXG4gIGNvbnN0IG1ldGFUb2tlbnMgPSBvcHRpb25zLm1ldGFUb2tlbnM7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICBjb25zdCB2aXNpdG9yID0gb3B0aW9ucy52aXNpdG9yIHx8IGRlZmF1bHRWaXNpdG9yO1xuICBjb25zdCBkb3RzID0gb3B0aW9ucy5kb3RzO1xuICBjb25zdCBpbmRleGVzID0gb3B0aW9ucy5pbmRleGVzO1xuICBjb25zdCBfQmxvYiA9IG9wdGlvbnMuQmxvYiB8fCB0eXBlb2YgQmxvYiAhPT0gJ3VuZGVmaW5lZCcgJiYgQmxvYjtcbiAgY29uc3QgdXNlQmxvYiA9IF9CbG9iICYmIHV0aWxzLmlzU3BlY0NvbXBsaWFudEZvcm0oZm9ybURhdGEpO1xuXG4gIGlmICghdXRpbHMuaXNGdW5jdGlvbih2aXNpdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3Zpc2l0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gIH1cblxuICBmdW5jdGlvbiBjb252ZXJ0VmFsdWUodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiAnJztcblxuICAgIGlmICh1dGlscy5pc0RhdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUudG9JU09TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAoIXVzZUJsb2IgJiYgdXRpbHMuaXNCbG9iKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoJ0Jsb2IgaXMgbm90IHN1cHBvcnRlZC4gVXNlIGEgQnVmZmVyIGluc3RlYWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXIodmFsdWUpIHx8IHV0aWxzLmlzVHlwZWRBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB1c2VCbG9iICYmIHR5cGVvZiBCbG9iID09PSAnZnVuY3Rpb24nID8gbmV3IEJsb2IoW3ZhbHVlXSkgOiBCdWZmZXIuZnJvbSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgdmlzaXRvci5cbiAgICpcbiAgICogQHBhcmFtIHsqfSB2YWx1ZVxuICAgKiBAcGFyYW0ge1N0cmluZ3xOdW1iZXJ9IGtleVxuICAgKiBAcGFyYW0ge0FycmF5PFN0cmluZ3xOdW1iZXI+fSBwYXRoXG4gICAqIEB0aGlzIHtGb3JtRGF0YX1cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHJldHVybiB0cnVlIHRvIHZpc2l0IHRoZSBlYWNoIHByb3Agb2YgdGhlIHZhbHVlIHJlY3Vyc2l2ZWx5XG4gICAqL1xuICBmdW5jdGlvbiBkZWZhdWx0VmlzaXRvcih2YWx1ZSwga2V5LCBwYXRoKSB7XG4gICAgbGV0IGFyciA9IHZhbHVlO1xuXG4gICAgaWYgKHZhbHVlICYmICFwYXRoICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmICh1dGlscy5lbmRzV2l0aChrZXksICd7fScpKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICBrZXkgPSBtZXRhVG9rZW5zID8ga2V5IDoga2V5LnNsaWNlKDAsIC0yKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIHZhbHVlID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgKHV0aWxzLmlzQXJyYXkodmFsdWUpICYmIGlzRmxhdEFycmF5KHZhbHVlKSkgfHxcbiAgICAgICAgKCh1dGlscy5pc0ZpbGVMaXN0KHZhbHVlKSB8fCB1dGlscy5lbmRzV2l0aChrZXksICdbXScpKSAmJiAoYXJyID0gdXRpbHMudG9BcnJheSh2YWx1ZSkpXG4gICAgICAgICkpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIGtleSA9IHJlbW92ZUJyYWNrZXRzKGtleSk7XG5cbiAgICAgICAgYXJyLmZvckVhY2goZnVuY3Rpb24gZWFjaChlbCwgaW5kZXgpIHtcbiAgICAgICAgICAhKHV0aWxzLmlzVW5kZWZpbmVkKGVsKSB8fCBlbCA9PT0gbnVsbCkgJiYgZm9ybURhdGEuYXBwZW5kKFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5lc3RlZC10ZXJuYXJ5XG4gICAgICAgICAgICBpbmRleGVzID09PSB0cnVlID8gcmVuZGVyS2V5KFtrZXldLCBpbmRleCwgZG90cykgOiAoaW5kZXhlcyA9PT0gbnVsbCA/IGtleSA6IGtleSArICdbXScpLFxuICAgICAgICAgICAgY29udmVydFZhbHVlKGVsKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzVmlzaXRhYmxlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZm9ybURhdGEuYXBwZW5kKHJlbmRlcktleShwYXRoLCBrZXksIGRvdHMpLCBjb252ZXJ0VmFsdWUodmFsdWUpKTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHN0YWNrID0gW107XG5cbiAgY29uc3QgZXhwb3NlZEhlbHBlcnMgPSBPYmplY3QuYXNzaWduKHByZWRpY2F0ZXMsIHtcbiAgICBkZWZhdWx0VmlzaXRvcixcbiAgICBjb252ZXJ0VmFsdWUsXG4gICAgaXNWaXNpdGFibGVcbiAgfSk7XG5cbiAgZnVuY3Rpb24gYnVpbGQodmFsdWUsIHBhdGgpIHtcbiAgICBpZiAodXRpbHMuaXNVbmRlZmluZWQodmFsdWUpKSByZXR1cm47XG5cbiAgICBpZiAoc3RhY2suaW5kZXhPZih2YWx1ZSkgIT09IC0xKSB7XG4gICAgICB0aHJvdyBFcnJvcignQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIGluICcgKyBwYXRoLmpvaW4oJy4nKSk7XG4gICAgfVxuXG4gICAgc3RhY2sucHVzaCh2YWx1ZSk7XG5cbiAgICB1dGlscy5mb3JFYWNoKHZhbHVlLCBmdW5jdGlvbiBlYWNoKGVsLCBrZXkpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9ICEodXRpbHMuaXNVbmRlZmluZWQoZWwpIHx8IGVsID09PSBudWxsKSAmJiB2aXNpdG9yLmNhbGwoXG4gICAgICAgIGZvcm1EYXRhLCBlbCwgdXRpbHMuaXNTdHJpbmcoa2V5KSA/IGtleS50cmltKCkgOiBrZXksIHBhdGgsIGV4cG9zZWRIZWxwZXJzXG4gICAgICApO1xuXG4gICAgICBpZiAocmVzdWx0ID09PSB0cnVlKSB7XG4gICAgICAgIGJ1aWxkKGVsLCBwYXRoID8gcGF0aC5jb25jYXQoa2V5KSA6IFtrZXldKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHN0YWNrLnBvcCgpO1xuICB9XG5cbiAgaWYgKCF1dGlscy5pc09iamVjdChvYmopKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZGF0YSBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICB9XG5cbiAgYnVpbGQob2JqKTtcblxuICByZXR1cm4gZm9ybURhdGE7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRvRm9ybURhdGE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB0b0Zvcm1EYXRhIGZyb20gJy4vdG9Gb3JtRGF0YS5qcyc7XG5cbi8qKlxuICogSXQgZW5jb2RlcyBhIHN0cmluZyBieSByZXBsYWNpbmcgYWxsIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IGluIHRoZSB1bnJlc2VydmVkIHNldCB3aXRoXG4gKiB0aGVpciBwZXJjZW50LWVuY29kZWQgZXF1aXZhbGVudHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyIC0gVGhlIHN0cmluZyB0byBlbmNvZGUuXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGVuY29kZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBlbmNvZGUoc3RyKSB7XG4gIGNvbnN0IGNoYXJNYXAgPSB7XG4gICAgJyEnOiAnJTIxJyxcbiAgICBcIidcIjogJyUyNycsXG4gICAgJygnOiAnJTI4JyxcbiAgICAnKSc6ICclMjknLFxuICAgICd+JzogJyU3RScsXG4gICAgJyUyMCc6ICcrJyxcbiAgICAnJTAwJzogJ1xceDAwJ1xuICB9O1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHN0cikucmVwbGFjZSgvWyEnKCl+XXwlMjB8JTAwL2csIGZ1bmN0aW9uIHJlcGxhY2VyKG1hdGNoKSB7XG4gICAgcmV0dXJuIGNoYXJNYXBbbWF0Y2hdO1xuICB9KTtcbn1cblxuLyoqXG4gKiBJdCB0YWtlcyBhIHBhcmFtcyBvYmplY3QgYW5kIGNvbnZlcnRzIGl0IHRvIGEgRm9ybURhdGEgb2JqZWN0XG4gKlxuICogQHBhcmFtIHtPYmplY3Q8c3RyaW5nLCBhbnk+fSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyB0byBiZSBjb252ZXJ0ZWQgdG8gYSBGb3JtRGF0YSBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdDxzdHJpbmcsIGFueT59IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBvYmplY3QgcGFzc2VkIHRvIHRoZSBBeGlvcyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gQXhpb3NVUkxTZWFyY2hQYXJhbXMocGFyYW1zLCBvcHRpb25zKSB7XG4gIHRoaXMuX3BhaXJzID0gW107XG5cbiAgcGFyYW1zICYmIHRvRm9ybURhdGEocGFyYW1zLCB0aGlzLCBvcHRpb25zKTtcbn1cblxuY29uc3QgcHJvdG90eXBlID0gQXhpb3NVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlO1xuXG5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gYXBwZW5kKG5hbWUsIHZhbHVlKSB7XG4gIHRoaXMuX3BhaXJzLnB1c2goW25hbWUsIHZhbHVlXSk7XG59O1xuXG5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyhlbmNvZGVyKSB7XG4gIGNvbnN0IF9lbmNvZGUgPSBlbmNvZGVyID8gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gZW5jb2Rlci5jYWxsKHRoaXMsIHZhbHVlLCBlbmNvZGUpO1xuICB9IDogZW5jb2RlO1xuXG4gIHJldHVybiB0aGlzLl9wYWlycy5tYXAoZnVuY3Rpb24gZWFjaChwYWlyKSB7XG4gICAgcmV0dXJuIF9lbmNvZGUocGFpclswXSkgKyAnPScgKyBfZW5jb2RlKHBhaXJbMV0pO1xuICB9LCAnJykuam9pbignJicpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXhpb3NVUkxTZWFyY2hQYXJhbXM7XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5pbXBvcnQgQXhpb3NVUkxTZWFyY2hQYXJhbXMgZnJvbSAnLi4vaGVscGVycy9BeGlvc1VSTFNlYXJjaFBhcmFtcy5qcyc7XG5cbi8qKlxuICogSXQgcmVwbGFjZXMgYWxsIGluc3RhbmNlcyBvZiB0aGUgY2hhcmFjdGVycyBgOmAsIGAkYCwgYCxgLCBgK2AsIGBbYCwgYW5kIGBdYCB3aXRoIHRoZWlyXG4gKiBVUkkgZW5jb2RlZCBjb3VudGVycGFydHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsIFRoZSB2YWx1ZSB0byBiZSBlbmNvZGVkLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBlbmNvZGVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBlbmNvZGUodmFsKSB7XG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQodmFsKS5cbiAgICByZXBsYWNlKC8lM0EvZ2ksICc6JykuXG4gICAgcmVwbGFjZSgvJTI0L2csICckJykuXG4gICAgcmVwbGFjZSgvJTJDL2dpLCAnLCcpLlxuICAgIHJlcGxhY2UoLyUyMC9nLCAnKycpLlxuICAgIHJlcGxhY2UoLyU1Qi9naSwgJ1snKS5cbiAgICByZXBsYWNlKC8lNUQvZ2ksICddJyk7XG59XG5cbi8qKlxuICogQnVpbGQgYSBVUkwgYnkgYXBwZW5kaW5nIHBhcmFtcyB0byB0aGUgZW5kXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCBUaGUgYmFzZSBvZiB0aGUgdXJsIChlLmcuLCBodHRwOi8vd3d3Lmdvb2dsZS5jb20pXG4gKiBAcGFyYW0ge29iamVjdH0gW3BhcmFtc10gVGhlIHBhcmFtcyB0byBiZSBhcHBlbmRlZFxuICogQHBhcmFtIHs/KG9iamVjdHxGdW5jdGlvbil9IG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZm9ybWF0dGVkIHVybFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBidWlsZFVSTCh1cmwsIHBhcmFtcywgb3B0aW9ucykge1xuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgaWYgKCFwYXJhbXMpIHtcbiAgICByZXR1cm4gdXJsO1xuICB9XG4gIFxuICBjb25zdCBfZW5jb2RlID0gb3B0aW9ucyAmJiBvcHRpb25zLmVuY29kZSB8fCBlbmNvZGU7XG5cbiAgaWYgKHV0aWxzLmlzRnVuY3Rpb24ob3B0aW9ucykpIHtcbiAgICBvcHRpb25zID0ge1xuICAgICAgc2VyaWFsaXplOiBvcHRpb25zXG4gICAgfTtcbiAgfSBcblxuICBjb25zdCBzZXJpYWxpemVGbiA9IG9wdGlvbnMgJiYgb3B0aW9ucy5zZXJpYWxpemU7XG5cbiAgbGV0IHNlcmlhbGl6ZWRQYXJhbXM7XG5cbiAgaWYgKHNlcmlhbGl6ZUZuKSB7XG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHNlcmlhbGl6ZUZuKHBhcmFtcywgb3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHV0aWxzLmlzVVJMU2VhcmNoUGFyYW1zKHBhcmFtcykgP1xuICAgICAgcGFyYW1zLnRvU3RyaW5nKCkgOlxuICAgICAgbmV3IEF4aW9zVVJMU2VhcmNoUGFyYW1zKHBhcmFtcywgb3B0aW9ucykudG9TdHJpbmcoX2VuY29kZSk7XG4gIH1cblxuICBpZiAoc2VyaWFsaXplZFBhcmFtcykge1xuICAgIGNvbnN0IGhhc2htYXJrSW5kZXggPSB1cmwuaW5kZXhPZihcIiNcIik7XG5cbiAgICBpZiAoaGFzaG1hcmtJbmRleCAhPT0gLTEpIHtcbiAgICAgIHVybCA9IHVybC5zbGljZSgwLCBoYXNobWFya0luZGV4KTtcbiAgICB9XG4gICAgdXJsICs9ICh1cmwuaW5kZXhPZignPycpID09PSAtMSA/ICc/JyA6ICcmJykgKyBzZXJpYWxpemVkUGFyYW1zO1xuICB9XG5cbiAgcmV0dXJuIHVybDtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4vLi4vdXRpbHMuanMnO1xuXG5jbGFzcyBJbnRlcmNlcHRvck1hbmFnZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmhhbmRsZXJzID0gW107XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbmV3IGludGVyY2VwdG9yIHRvIHRoZSBzdGFja1xuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdWxmaWxsZWQgVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBgdGhlbmAgZm9yIGEgYFByb21pc2VgXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHJlamVjdGVkIFRoZSBmdW5jdGlvbiB0byBoYW5kbGUgYHJlamVjdGAgZm9yIGEgYFByb21pc2VgXG4gICAqXG4gICAqIEByZXR1cm4ge051bWJlcn0gQW4gSUQgdXNlZCB0byByZW1vdmUgaW50ZXJjZXB0b3IgbGF0ZXJcbiAgICovXG4gIHVzZShmdWxmaWxsZWQsIHJlamVjdGVkLCBvcHRpb25zKSB7XG4gICAgdGhpcy5oYW5kbGVycy5wdXNoKHtcbiAgICAgIGZ1bGZpbGxlZCxcbiAgICAgIHJlamVjdGVkLFxuICAgICAgc3luY2hyb25vdXM6IG9wdGlvbnMgPyBvcHRpb25zLnN5bmNocm9ub3VzIDogZmFsc2UsXG4gICAgICBydW5XaGVuOiBvcHRpb25zID8gb3B0aW9ucy5ydW5XaGVuIDogbnVsbFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmhhbmRsZXJzLmxlbmd0aCAtIDE7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGFuIGludGVyY2VwdG9yIGZyb20gdGhlIHN0YWNrXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBpZCBUaGUgSUQgdGhhdCB3YXMgcmV0dXJuZWQgYnkgYHVzZWBcbiAgICpcbiAgICogQHJldHVybnMge0Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgaW50ZXJjZXB0b3Igd2FzIHJlbW92ZWQsIGBmYWxzZWAgb3RoZXJ3aXNlXG4gICAqL1xuICBlamVjdChpZCkge1xuICAgIGlmICh0aGlzLmhhbmRsZXJzW2lkXSkge1xuICAgICAgdGhpcy5oYW5kbGVyc1tpZF0gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBhbGwgaW50ZXJjZXB0b3JzIGZyb20gdGhlIHN0YWNrXG4gICAqXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgY2xlYXIoKSB7XG4gICAgaWYgKHRoaXMuaGFuZGxlcnMpIHtcbiAgICAgIHRoaXMuaGFuZGxlcnMgPSBbXTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSXRlcmF0ZSBvdmVyIGFsbCB0aGUgcmVnaXN0ZXJlZCBpbnRlcmNlcHRvcnNcbiAgICpcbiAgICogVGhpcyBtZXRob2QgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3Igc2tpcHBpbmcgb3ZlciBhbnlcbiAgICogaW50ZXJjZXB0b3JzIHRoYXQgbWF5IGhhdmUgYmVjb21lIGBudWxsYCBjYWxsaW5nIGBlamVjdGAuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBjYWxsIGZvciBlYWNoIGludGVyY2VwdG9yXG4gICAqXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZm9yRWFjaChmbikge1xuICAgIHV0aWxzLmZvckVhY2godGhpcy5oYW5kbGVycywgZnVuY3Rpb24gZm9yRWFjaEhhbmRsZXIoaCkge1xuICAgICAgaWYgKGggIT09IG51bGwpIHtcbiAgICAgICAgZm4oaCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSW50ZXJjZXB0b3JNYW5hZ2VyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHNpbGVudEpTT05QYXJzaW5nOiB0cnVlLFxuICBmb3JjZWRKU09OUGFyc2luZzogdHJ1ZSxcbiAgY2xhcmlmeVRpbWVvdXRFcnJvcjogZmFsc2Vcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCBBeGlvc1VSTFNlYXJjaFBhcmFtcyBmcm9tICcuLi8uLi8uLi9oZWxwZXJzL0F4aW9zVVJMU2VhcmNoUGFyYW1zLmpzJztcbmV4cG9ydCBkZWZhdWx0IHR5cGVvZiBVUkxTZWFyY2hQYXJhbXMgIT09ICd1bmRlZmluZWQnID8gVVJMU2VhcmNoUGFyYW1zIDogQXhpb3NVUkxTZWFyY2hQYXJhbXM7XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBkZWZhdWx0IHR5cGVvZiBGb3JtRGF0YSAhPT0gJ3VuZGVmaW5lZCcgPyBGb3JtRGF0YSA6IG51bGw7XG4iLCIndXNlIHN0cmljdCdcblxuZXhwb3J0IGRlZmF1bHQgdHlwZW9mIEJsb2IgIT09ICd1bmRlZmluZWQnID8gQmxvYiA6IG51bGxcbiIsImltcG9ydCBVUkxTZWFyY2hQYXJhbXMgZnJvbSAnLi9jbGFzc2VzL1VSTFNlYXJjaFBhcmFtcy5qcydcbmltcG9ydCBGb3JtRGF0YSBmcm9tICcuL2NsYXNzZXMvRm9ybURhdGEuanMnXG5pbXBvcnQgQmxvYiBmcm9tICcuL2NsYXNzZXMvQmxvYi5qcydcblxuZXhwb3J0IGRlZmF1bHQge1xuICBpc0Jyb3dzZXI6IHRydWUsXG4gIGNsYXNzZXM6IHtcbiAgICBVUkxTZWFyY2hQYXJhbXMsXG4gICAgRm9ybURhdGEsXG4gICAgQmxvYlxuICB9LFxuICBwcm90b2NvbHM6IFsnaHR0cCcsICdodHRwcycsICdmaWxlJywgJ2Jsb2InLCAndXJsJywgJ2RhdGEnXVxufTtcbiIsImNvbnN0IGhhc0Jyb3dzZXJFbnYgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnO1xuXG5jb25zdCBfbmF2aWdhdG9yID0gdHlwZW9mIG5hdmlnYXRvciA9PT0gJ29iamVjdCcgJiYgbmF2aWdhdG9yIHx8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgd2UncmUgcnVubmluZyBpbiBhIHN0YW5kYXJkIGJyb3dzZXIgZW52aXJvbm1lbnRcbiAqXG4gKiBUaGlzIGFsbG93cyBheGlvcyB0byBydW4gaW4gYSB3ZWIgd29ya2VyLCBhbmQgcmVhY3QtbmF0aXZlLlxuICogQm90aCBlbnZpcm9ubWVudHMgc3VwcG9ydCBYTUxIdHRwUmVxdWVzdCwgYnV0IG5vdCBmdWxseSBzdGFuZGFyZCBnbG9iYWxzLlxuICpcbiAqIHdlYiB3b3JrZXJzOlxuICogIHR5cGVvZiB3aW5kb3cgLT4gdW5kZWZpbmVkXG4gKiAgdHlwZW9mIGRvY3VtZW50IC0+IHVuZGVmaW5lZFxuICpcbiAqIHJlYWN0LW5hdGl2ZTpcbiAqICBuYXZpZ2F0b3IucHJvZHVjdCAtPiAnUmVhY3ROYXRpdmUnXG4gKiBuYXRpdmVzY3JpcHRcbiAqICBuYXZpZ2F0b3IucHJvZHVjdCAtPiAnTmF0aXZlU2NyaXB0JyBvciAnTlMnXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmNvbnN0IGhhc1N0YW5kYXJkQnJvd3NlckVudiA9IGhhc0Jyb3dzZXJFbnYgJiZcbiAgKCFfbmF2aWdhdG9yIHx8IFsnUmVhY3ROYXRpdmUnLCAnTmF0aXZlU2NyaXB0JywgJ05TJ10uaW5kZXhPZihfbmF2aWdhdG9yLnByb2R1Y3QpIDwgMCk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIHdlYldvcmtlciBlbnZpcm9ubWVudFxuICpcbiAqIEFsdGhvdWdoIHRoZSBgaXNTdGFuZGFyZEJyb3dzZXJFbnZgIG1ldGhvZCBpbmRpY2F0ZXMgdGhhdFxuICogYGFsbG93cyBheGlvcyB0byBydW4gaW4gYSB3ZWIgd29ya2VyYCwgdGhlIFdlYldvcmtlciB3aWxsIHN0aWxsIGJlXG4gKiBmaWx0ZXJlZCBvdXQgZHVlIHRvIGl0cyBqdWRnbWVudCBzdGFuZGFyZFxuICogYHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCdgLlxuICogVGhpcyBsZWFkcyB0byBhIHByb2JsZW0gd2hlbiBheGlvcyBwb3N0IGBGb3JtRGF0YWAgaW4gd2ViV29ya2VyXG4gKi9cbmNvbnN0IGhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudiA9ICgoKSA9PiB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgIHNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSAmJlxuICAgIHR5cGVvZiBzZWxmLmltcG9ydFNjcmlwdHMgPT09ICdmdW5jdGlvbidcbiAgKTtcbn0pKCk7XG5cbmNvbnN0IG9yaWdpbiA9IGhhc0Jyb3dzZXJFbnYgJiYgd2luZG93LmxvY2F0aW9uLmhyZWYgfHwgJ2h0dHA6Ly9sb2NhbGhvc3QnO1xuXG5leHBvcnQge1xuICBoYXNCcm93c2VyRW52LFxuICBoYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnYsXG4gIGhhc1N0YW5kYXJkQnJvd3NlckVudixcbiAgX25hdmlnYXRvciBhcyBuYXZpZ2F0b3IsXG4gIG9yaWdpblxufVxuIiwiaW1wb3J0IHBsYXRmb3JtIGZyb20gJy4vbm9kZS9pbmRleC5qcyc7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuL2NvbW1vbi91dGlscy5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLi4udXRpbHMsXG4gIC4uLnBsYXRmb3JtXG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5pbXBvcnQgdG9Gb3JtRGF0YSBmcm9tICcuL3RvRm9ybURhdGEuanMnO1xuaW1wb3J0IHBsYXRmb3JtIGZyb20gJy4uL3BsYXRmb3JtL2luZGV4LmpzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdG9VUkxFbmNvZGVkRm9ybShkYXRhLCBvcHRpb25zKSB7XG4gIHJldHVybiB0b0Zvcm1EYXRhKGRhdGEsIG5ldyBwbGF0Zm9ybS5jbGFzc2VzLlVSTFNlYXJjaFBhcmFtcygpLCBPYmplY3QuYXNzaWduKHtcbiAgICB2aXNpdG9yOiBmdW5jdGlvbih2YWx1ZSwga2V5LCBwYXRoLCBoZWxwZXJzKSB7XG4gICAgICBpZiAocGxhdGZvcm0uaXNOb2RlICYmIHV0aWxzLmlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgICB0aGlzLmFwcGVuZChrZXksIHZhbHVlLnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGhlbHBlcnMuZGVmYXVsdFZpc2l0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG4gIH0sIG9wdGlvbnMpKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzLmpzJztcblxuLyoqXG4gKiBJdCB0YWtlcyBhIHN0cmluZyBsaWtlIGBmb29beF1beV1bel1gIGFuZCByZXR1cm5zIGFuIGFycmF5IGxpa2UgYFsnZm9vJywgJ3gnLCAneScsICd6J11cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKlxuICogQHJldHVybnMgQW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAqL1xuZnVuY3Rpb24gcGFyc2VQcm9wUGF0aChuYW1lKSB7XG4gIC8vIGZvb1t4XVt5XVt6XVxuICAvLyBmb28ueC55LnpcbiAgLy8gZm9vLXgteS16XG4gIC8vIGZvbyB4IHkgelxuICByZXR1cm4gdXRpbHMubWF0Y2hBbGwoL1xcdyt8XFxbKFxcdyopXS9nLCBuYW1lKS5tYXAobWF0Y2ggPT4ge1xuICAgIHJldHVybiBtYXRjaFswXSA9PT0gJ1tdJyA/ICcnIDogbWF0Y2hbMV0gfHwgbWF0Y2hbMF07XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnQgYW4gYXJyYXkgdG8gYW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8YW55Pn0gYXJyIC0gVGhlIGFycmF5IHRvIGNvbnZlcnQgdG8gYW4gb2JqZWN0LlxuICpcbiAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIGtleXMgYW5kIHZhbHVlcyBhcyB0aGUgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFycmF5VG9PYmplY3QoYXJyKSB7XG4gIGNvbnN0IG9iaiA9IHt9O1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoYXJyKTtcbiAgbGV0IGk7XG4gIGNvbnN0IGxlbiA9IGtleXMubGVuZ3RoO1xuICBsZXQga2V5O1xuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBrZXkgPSBrZXlzW2ldO1xuICAgIG9ialtrZXldID0gYXJyW2tleV07XG4gIH1cbiAgcmV0dXJuIG9iajtcbn1cblxuLyoqXG4gKiBJdCB0YWtlcyBhIEZvcm1EYXRhIG9iamVjdCBhbmQgcmV0dXJucyBhIEphdmFTY3JpcHQgb2JqZWN0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGZvcm1EYXRhIFRoZSBGb3JtRGF0YSBvYmplY3QgdG8gY29udmVydCB0byBKU09OLlxuICpcbiAqIEByZXR1cm5zIHtPYmplY3Q8c3RyaW5nLCBhbnk+IHwgbnVsbH0gVGhlIGNvbnZlcnRlZCBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGZvcm1EYXRhVG9KU09OKGZvcm1EYXRhKSB7XG4gIGZ1bmN0aW9uIGJ1aWxkUGF0aChwYXRoLCB2YWx1ZSwgdGFyZ2V0LCBpbmRleCkge1xuICAgIGxldCBuYW1lID0gcGF0aFtpbmRleCsrXTtcblxuICAgIGlmIChuYW1lID09PSAnX19wcm90b19fJykgcmV0dXJuIHRydWU7XG5cbiAgICBjb25zdCBpc051bWVyaWNLZXkgPSBOdW1iZXIuaXNGaW5pdGUoK25hbWUpO1xuICAgIGNvbnN0IGlzTGFzdCA9IGluZGV4ID49IHBhdGgubGVuZ3RoO1xuICAgIG5hbWUgPSAhbmFtZSAmJiB1dGlscy5pc0FycmF5KHRhcmdldCkgPyB0YXJnZXQubGVuZ3RoIDogbmFtZTtcblxuICAgIGlmIChpc0xhc3QpIHtcbiAgICAgIGlmICh1dGlscy5oYXNPd25Qcm9wKHRhcmdldCwgbmFtZSkpIHtcbiAgICAgICAgdGFyZ2V0W25hbWVdID0gW3RhcmdldFtuYW1lXSwgdmFsdWVdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFyZ2V0W25hbWVdID0gdmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAhaXNOdW1lcmljS2V5O1xuICAgIH1cblxuICAgIGlmICghdGFyZ2V0W25hbWVdIHx8ICF1dGlscy5pc09iamVjdCh0YXJnZXRbbmFtZV0pKSB7XG4gICAgICB0YXJnZXRbbmFtZV0gPSBbXTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBidWlsZFBhdGgocGF0aCwgdmFsdWUsIHRhcmdldFtuYW1lXSwgaW5kZXgpO1xuXG4gICAgaWYgKHJlc3VsdCAmJiB1dGlscy5pc0FycmF5KHRhcmdldFtuYW1lXSkpIHtcbiAgICAgIHRhcmdldFtuYW1lXSA9IGFycmF5VG9PYmplY3QodGFyZ2V0W25hbWVdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gIWlzTnVtZXJpY0tleTtcbiAgfVxuXG4gIGlmICh1dGlscy5pc0Zvcm1EYXRhKGZvcm1EYXRhKSAmJiB1dGlscy5pc0Z1bmN0aW9uKGZvcm1EYXRhLmVudHJpZXMpKSB7XG4gICAgY29uc3Qgb2JqID0ge307XG5cbiAgICB1dGlscy5mb3JFYWNoRW50cnkoZm9ybURhdGEsIChuYW1lLCB2YWx1ZSkgPT4ge1xuICAgICAgYnVpbGRQYXRoKHBhcnNlUHJvcFBhdGgobmFtZSksIHZhbHVlLCBvYmosIDApO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmb3JtRGF0YVRvSlNPTjtcbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzLmpzJztcbmltcG9ydCBBeGlvc0Vycm9yIGZyb20gJy4uL2NvcmUvQXhpb3NFcnJvci5qcyc7XG5pbXBvcnQgdHJhbnNpdGlvbmFsRGVmYXVsdHMgZnJvbSAnLi90cmFuc2l0aW9uYWwuanMnO1xuaW1wb3J0IHRvRm9ybURhdGEgZnJvbSAnLi4vaGVscGVycy90b0Zvcm1EYXRhLmpzJztcbmltcG9ydCB0b1VSTEVuY29kZWRGb3JtIGZyb20gJy4uL2hlbHBlcnMvdG9VUkxFbmNvZGVkRm9ybS5qcyc7XG5pbXBvcnQgcGxhdGZvcm0gZnJvbSAnLi4vcGxhdGZvcm0vaW5kZXguanMnO1xuaW1wb3J0IGZvcm1EYXRhVG9KU09OIGZyb20gJy4uL2hlbHBlcnMvZm9ybURhdGFUb0pTT04uanMnO1xuXG4vKipcbiAqIEl0IHRha2VzIGEgc3RyaW5nLCB0cmllcyB0byBwYXJzZSBpdCwgYW5kIGlmIGl0IGZhaWxzLCBpdCByZXR1cm5zIHRoZSBzdHJpbmdpZmllZCB2ZXJzaW9uXG4gKiBvZiB0aGUgaW5wdXRcbiAqXG4gKiBAcGFyYW0ge2FueX0gcmF3VmFsdWUgLSBUaGUgdmFsdWUgdG8gYmUgc3RyaW5naWZpZWQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJzZXIgLSBBIGZ1bmN0aW9uIHRoYXQgcGFyc2VzIGEgc3RyaW5nIGludG8gYSBKYXZhU2NyaXB0IG9iamVjdC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVuY29kZXIgLSBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSB2YWx1ZSBhbmQgcmV0dXJucyBhIHN0cmluZy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIHN0cmluZ2lmaWVkIHZlcnNpb24gb2YgdGhlIHJhd1ZhbHVlLlxuICovXG5mdW5jdGlvbiBzdHJpbmdpZnlTYWZlbHkocmF3VmFsdWUsIHBhcnNlciwgZW5jb2Rlcikge1xuICBpZiAodXRpbHMuaXNTdHJpbmcocmF3VmFsdWUpKSB7XG4gICAgdHJ5IHtcbiAgICAgIChwYXJzZXIgfHwgSlNPTi5wYXJzZSkocmF3VmFsdWUpO1xuICAgICAgcmV0dXJuIHV0aWxzLnRyaW0ocmF3VmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlLm5hbWUgIT09ICdTeW50YXhFcnJvcicpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gKGVuY29kZXIgfHwgSlNPTi5zdHJpbmdpZnkpKHJhd1ZhbHVlKTtcbn1cblxuY29uc3QgZGVmYXVsdHMgPSB7XG5cbiAgdHJhbnNpdGlvbmFsOiB0cmFuc2l0aW9uYWxEZWZhdWx0cyxcblxuICBhZGFwdGVyOiBbJ3hocicsICdodHRwJywgJ2ZldGNoJ10sXG5cbiAgdHJhbnNmb3JtUmVxdWVzdDogW2Z1bmN0aW9uIHRyYW5zZm9ybVJlcXVlc3QoZGF0YSwgaGVhZGVycykge1xuICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gaGVhZGVycy5nZXRDb250ZW50VHlwZSgpIHx8ICcnO1xuICAgIGNvbnN0IGhhc0pTT05Db250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmluZGV4T2YoJ2FwcGxpY2F0aW9uL2pzb24nKSA+IC0xO1xuICAgIGNvbnN0IGlzT2JqZWN0UGF5bG9hZCA9IHV0aWxzLmlzT2JqZWN0KGRhdGEpO1xuXG4gICAgaWYgKGlzT2JqZWN0UGF5bG9hZCAmJiB1dGlscy5pc0hUTUxGb3JtKGRhdGEpKSB7XG4gICAgICBkYXRhID0gbmV3IEZvcm1EYXRhKGRhdGEpO1xuICAgIH1cblxuICAgIGNvbnN0IGlzRm9ybURhdGEgPSB1dGlscy5pc0Zvcm1EYXRhKGRhdGEpO1xuXG4gICAgaWYgKGlzRm9ybURhdGEpIHtcbiAgICAgIHJldHVybiBoYXNKU09OQ29udGVudFR5cGUgPyBKU09OLnN0cmluZ2lmeShmb3JtRGF0YVRvSlNPTihkYXRhKSkgOiBkYXRhO1xuICAgIH1cblxuICAgIGlmICh1dGlscy5pc0FycmF5QnVmZmVyKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0J1ZmZlcihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNTdHJlYW0oZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzRmlsZShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNCbG9iKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc1JlYWRhYmxlU3RyZWFtKGRhdGEpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXJWaWV3KGRhdGEpKSB7XG4gICAgICByZXR1cm4gZGF0YS5idWZmZXI7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhkYXRhKSkge1xuICAgICAgaGVhZGVycy5zZXRDb250ZW50VHlwZSgnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgnLCBmYWxzZSk7XG4gICAgICByZXR1cm4gZGF0YS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGxldCBpc0ZpbGVMaXN0O1xuXG4gICAgaWYgKGlzT2JqZWN0UGF5bG9hZCkge1xuICAgICAgaWYgKGNvbnRlbnRUeXBlLmluZGV4T2YoJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpID4gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRvVVJMRW5jb2RlZEZvcm0oZGF0YSwgdGhpcy5mb3JtU2VyaWFsaXplcikudG9TdHJpbmcoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKChpc0ZpbGVMaXN0ID0gdXRpbHMuaXNGaWxlTGlzdChkYXRhKSkgfHwgY29udGVudFR5cGUuaW5kZXhPZignbXVsdGlwYXJ0L2Zvcm0tZGF0YScpID4gLTEpIHtcbiAgICAgICAgY29uc3QgX0Zvcm1EYXRhID0gdGhpcy5lbnYgJiYgdGhpcy5lbnYuRm9ybURhdGE7XG5cbiAgICAgICAgcmV0dXJuIHRvRm9ybURhdGEoXG4gICAgICAgICAgaXNGaWxlTGlzdCA/IHsnZmlsZXNbXSc6IGRhdGF9IDogZGF0YSxcbiAgICAgICAgICBfRm9ybURhdGEgJiYgbmV3IF9Gb3JtRGF0YSgpLFxuICAgICAgICAgIHRoaXMuZm9ybVNlcmlhbGl6ZXJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNPYmplY3RQYXlsb2FkIHx8IGhhc0pTT05Db250ZW50VHlwZSApIHtcbiAgICAgIGhlYWRlcnMuc2V0Q29udGVudFR5cGUoJ2FwcGxpY2F0aW9uL2pzb24nLCBmYWxzZSk7XG4gICAgICByZXR1cm4gc3RyaW5naWZ5U2FmZWx5KGRhdGEpO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9XSxcblxuICB0cmFuc2Zvcm1SZXNwb25zZTogW2Z1bmN0aW9uIHRyYW5zZm9ybVJlc3BvbnNlKGRhdGEpIHtcbiAgICBjb25zdCB0cmFuc2l0aW9uYWwgPSB0aGlzLnRyYW5zaXRpb25hbCB8fCBkZWZhdWx0cy50cmFuc2l0aW9uYWw7XG4gICAgY29uc3QgZm9yY2VkSlNPTlBhcnNpbmcgPSB0cmFuc2l0aW9uYWwgJiYgdHJhbnNpdGlvbmFsLmZvcmNlZEpTT05QYXJzaW5nO1xuICAgIGNvbnN0IEpTT05SZXF1ZXN0ZWQgPSB0aGlzLnJlc3BvbnNlVHlwZSA9PT0gJ2pzb24nO1xuXG4gICAgaWYgKHV0aWxzLmlzUmVzcG9uc2UoZGF0YSkgfHwgdXRpbHMuaXNSZWFkYWJsZVN0cmVhbShkYXRhKSkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEgJiYgdXRpbHMuaXNTdHJpbmcoZGF0YSkgJiYgKChmb3JjZWRKU09OUGFyc2luZyAmJiAhdGhpcy5yZXNwb25zZVR5cGUpIHx8IEpTT05SZXF1ZXN0ZWQpKSB7XG4gICAgICBjb25zdCBzaWxlbnRKU09OUGFyc2luZyA9IHRyYW5zaXRpb25hbCAmJiB0cmFuc2l0aW9uYWwuc2lsZW50SlNPTlBhcnNpbmc7XG4gICAgICBjb25zdCBzdHJpY3RKU09OUGFyc2luZyA9ICFzaWxlbnRKU09OUGFyc2luZyAmJiBKU09OUmVxdWVzdGVkO1xuXG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKHN0cmljdEpTT05QYXJzaW5nKSB7XG4gICAgICAgICAgaWYgKGUubmFtZSA9PT0gJ1N5bnRheEVycm9yJykge1xuICAgICAgICAgICAgdGhyb3cgQXhpb3NFcnJvci5mcm9tKGUsIEF4aW9zRXJyb3IuRVJSX0JBRF9SRVNQT05TRSwgdGhpcywgbnVsbCwgdGhpcy5yZXNwb25zZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfV0sXG5cbiAgLyoqXG4gICAqIEEgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgdG8gYWJvcnQgYSByZXF1ZXN0LiBJZiBzZXQgdG8gMCAoZGVmYXVsdCkgYVxuICAgKiB0aW1lb3V0IGlzIG5vdCBjcmVhdGVkLlxuICAgKi9cbiAgdGltZW91dDogMCxcblxuICB4c3JmQ29va2llTmFtZTogJ1hTUkYtVE9LRU4nLFxuICB4c3JmSGVhZGVyTmFtZTogJ1gtWFNSRi1UT0tFTicsXG5cbiAgbWF4Q29udGVudExlbmd0aDogLTEsXG4gIG1heEJvZHlMZW5ndGg6IC0xLFxuXG4gIGVudjoge1xuICAgIEZvcm1EYXRhOiBwbGF0Zm9ybS5jbGFzc2VzLkZvcm1EYXRhLFxuICAgIEJsb2I6IHBsYXRmb3JtLmNsYXNzZXMuQmxvYlxuICB9LFxuXG4gIHZhbGlkYXRlU3RhdHVzOiBmdW5jdGlvbiB2YWxpZGF0ZVN0YXR1cyhzdGF0dXMpIHtcbiAgICByZXR1cm4gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDA7XG4gIH0sXG5cbiAgaGVhZGVyczoge1xuICAgIGNvbW1vbjoge1xuICAgICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyonLFxuICAgICAgJ0NvbnRlbnQtVHlwZSc6IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxufTtcblxudXRpbHMuZm9yRWFjaChbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdwb3N0JywgJ3B1dCcsICdwYXRjaCddLCAobWV0aG9kKSA9PiB7XG4gIGRlZmF1bHRzLmhlYWRlcnNbbWV0aG9kXSA9IHt9O1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmF1bHRzO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi8uLi91dGlscy5qcyc7XG5cbi8vIFJhd0F4aW9zSGVhZGVycyB3aG9zZSBkdXBsaWNhdGVzIGFyZSBpZ25vcmVkIGJ5IG5vZGVcbi8vIGMuZi4gaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9odHRwLmh0bWwjaHR0cF9tZXNzYWdlX2hlYWRlcnNcbmNvbnN0IGlnbm9yZUR1cGxpY2F0ZU9mID0gdXRpbHMudG9PYmplY3RTZXQoW1xuICAnYWdlJywgJ2F1dGhvcml6YXRpb24nLCAnY29udGVudC1sZW5ndGgnLCAnY29udGVudC10eXBlJywgJ2V0YWcnLFxuICAnZXhwaXJlcycsICdmcm9tJywgJ2hvc3QnLCAnaWYtbW9kaWZpZWQtc2luY2UnLCAnaWYtdW5tb2RpZmllZC1zaW5jZScsXG4gICdsYXN0LW1vZGlmaWVkJywgJ2xvY2F0aW9uJywgJ21heC1mb3J3YXJkcycsICdwcm94eS1hdXRob3JpemF0aW9uJyxcbiAgJ3JlZmVyZXInLCAncmV0cnktYWZ0ZXInLCAndXNlci1hZ2VudCdcbl0pO1xuXG4vKipcbiAqIFBhcnNlIGhlYWRlcnMgaW50byBhbiBvYmplY3RcbiAqXG4gKiBgYGBcbiAqIERhdGU6IFdlZCwgMjcgQXVnIDIwMTQgMDg6NTg6NDkgR01UXG4gKiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb25cbiAqIENvbm5lY3Rpb246IGtlZXAtYWxpdmVcbiAqIFRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gcmF3SGVhZGVycyBIZWFkZXJzIG5lZWRpbmcgdG8gYmUgcGFyc2VkXG4gKlxuICogQHJldHVybnMge09iamVjdH0gSGVhZGVycyBwYXJzZWQgaW50byBhbiBvYmplY3RcbiAqL1xuZXhwb3J0IGRlZmF1bHQgcmF3SGVhZGVycyA9PiB7XG4gIGNvbnN0IHBhcnNlZCA9IHt9O1xuICBsZXQga2V5O1xuICBsZXQgdmFsO1xuICBsZXQgaTtcblxuICByYXdIZWFkZXJzICYmIHJhd0hlYWRlcnMuc3BsaXQoJ1xcbicpLmZvckVhY2goZnVuY3Rpb24gcGFyc2VyKGxpbmUpIHtcbiAgICBpID0gbGluZS5pbmRleE9mKCc6Jyk7XG4gICAga2V5ID0gbGluZS5zdWJzdHJpbmcoMCwgaSkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgdmFsID0gbGluZS5zdWJzdHJpbmcoaSArIDEpLnRyaW0oKTtcblxuICAgIGlmICgha2V5IHx8IChwYXJzZWRba2V5XSAmJiBpZ25vcmVEdXBsaWNhdGVPZltrZXldKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChrZXkgPT09ICdzZXQtY29va2llJykge1xuICAgICAgaWYgKHBhcnNlZFtrZXldKSB7XG4gICAgICAgIHBhcnNlZFtrZXldLnB1c2godmFsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnNlZFtrZXldID0gW3ZhbF07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnNlZFtrZXldID0gcGFyc2VkW2tleV0gPyBwYXJzZWRba2V5XSArICcsICcgKyB2YWwgOiB2YWw7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcGFyc2VkO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzLmpzJztcbmltcG9ydCBwYXJzZUhlYWRlcnMgZnJvbSAnLi4vaGVscGVycy9wYXJzZUhlYWRlcnMuanMnO1xuXG5jb25zdCAkaW50ZXJuYWxzID0gU3ltYm9sKCdpbnRlcm5hbHMnKTtcblxuZnVuY3Rpb24gbm9ybWFsaXplSGVhZGVyKGhlYWRlcikge1xuICByZXR1cm4gaGVhZGVyICYmIFN0cmluZyhoZWFkZXIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09IGZhbHNlIHx8IHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gdXRpbHMuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5tYXAobm9ybWFsaXplVmFsdWUpIDogU3RyaW5nKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VUb2tlbnMoc3RyKSB7XG4gIGNvbnN0IHRva2VucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGNvbnN0IHRva2Vuc1JFID0gLyhbXlxccyw7PV0rKVxccyooPzo9XFxzKihbXiw7XSspKT8vZztcbiAgbGV0IG1hdGNoO1xuXG4gIHdoaWxlICgobWF0Y2ggPSB0b2tlbnNSRS5leGVjKHN0cikpKSB7XG4gICAgdG9rZW5zW21hdGNoWzFdXSA9IG1hdGNoWzJdO1xuICB9XG5cbiAgcmV0dXJuIHRva2Vucztcbn1cblxuY29uc3QgaXNWYWxpZEhlYWRlck5hbWUgPSAoc3RyKSA9PiAvXlstX2EtekEtWjAtOV5gfH4sISMkJSYnKisuXSskLy50ZXN0KHN0ci50cmltKCkpO1xuXG5mdW5jdGlvbiBtYXRjaEhlYWRlclZhbHVlKGNvbnRleHQsIHZhbHVlLCBoZWFkZXIsIGZpbHRlciwgaXNIZWFkZXJOYW1lRmlsdGVyKSB7XG4gIGlmICh1dGlscy5pc0Z1bmN0aW9uKGZpbHRlcikpIHtcbiAgICByZXR1cm4gZmlsdGVyLmNhbGwodGhpcywgdmFsdWUsIGhlYWRlcik7XG4gIH1cblxuICBpZiAoaXNIZWFkZXJOYW1lRmlsdGVyKSB7XG4gICAgdmFsdWUgPSBoZWFkZXI7XG4gIH1cblxuICBpZiAoIXV0aWxzLmlzU3RyaW5nKHZhbHVlKSkgcmV0dXJuO1xuXG4gIGlmICh1dGlscy5pc1N0cmluZyhmaWx0ZXIpKSB7XG4gICAgcmV0dXJuIHZhbHVlLmluZGV4T2YoZmlsdGVyKSAhPT0gLTE7XG4gIH1cblxuICBpZiAodXRpbHMuaXNSZWdFeHAoZmlsdGVyKSkge1xuICAgIHJldHVybiBmaWx0ZXIudGVzdCh2YWx1ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9ybWF0SGVhZGVyKGhlYWRlcikge1xuICByZXR1cm4gaGVhZGVyLnRyaW0oKVxuICAgIC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLyhbYS16XFxkXSkoXFx3KikvZywgKHcsIGNoYXIsIHN0cikgPT4ge1xuICAgICAgcmV0dXJuIGNoYXIudG9VcHBlckNhc2UoKSArIHN0cjtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gYnVpbGRBY2Nlc3NvcnMob2JqLCBoZWFkZXIpIHtcbiAgY29uc3QgYWNjZXNzb3JOYW1lID0gdXRpbHMudG9DYW1lbENhc2UoJyAnICsgaGVhZGVyKTtcblxuICBbJ2dldCcsICdzZXQnLCAnaGFzJ10uZm9yRWFjaChtZXRob2ROYW1lID0+IHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBtZXRob2ROYW1lICsgYWNjZXNzb3JOYW1lLCB7XG4gICAgICB2YWx1ZTogZnVuY3Rpb24oYXJnMSwgYXJnMiwgYXJnMykge1xuICAgICAgICByZXR1cm4gdGhpc1ttZXRob2ROYW1lXS5jYWxsKHRoaXMsIGhlYWRlciwgYXJnMSwgYXJnMiwgYXJnMyk7XG4gICAgICB9LFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0pO1xufVxuXG5jbGFzcyBBeGlvc0hlYWRlcnMge1xuICBjb25zdHJ1Y3RvcihoZWFkZXJzKSB7XG4gICAgaGVhZGVycyAmJiB0aGlzLnNldChoZWFkZXJzKTtcbiAgfVxuXG4gIHNldChoZWFkZXIsIHZhbHVlT3JSZXdyaXRlLCByZXdyaXRlKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICBmdW5jdGlvbiBzZXRIZWFkZXIoX3ZhbHVlLCBfaGVhZGVyLCBfcmV3cml0ZSkge1xuICAgICAgY29uc3QgbEhlYWRlciA9IG5vcm1hbGl6ZUhlYWRlcihfaGVhZGVyKTtcblxuICAgICAgaWYgKCFsSGVhZGVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaGVhZGVyIG5hbWUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qga2V5ID0gdXRpbHMuZmluZEtleShzZWxmLCBsSGVhZGVyKTtcblxuICAgICAgaWYoIWtleSB8fCBzZWxmW2tleV0gPT09IHVuZGVmaW5lZCB8fCBfcmV3cml0ZSA9PT0gdHJ1ZSB8fCAoX3Jld3JpdGUgPT09IHVuZGVmaW5lZCAmJiBzZWxmW2tleV0gIT09IGZhbHNlKSkge1xuICAgICAgICBzZWxmW2tleSB8fCBfaGVhZGVyXSA9IG5vcm1hbGl6ZVZhbHVlKF92YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc2V0SGVhZGVycyA9IChoZWFkZXJzLCBfcmV3cml0ZSkgPT5cbiAgICAgIHV0aWxzLmZvckVhY2goaGVhZGVycywgKF92YWx1ZSwgX2hlYWRlcikgPT4gc2V0SGVhZGVyKF92YWx1ZSwgX2hlYWRlciwgX3Jld3JpdGUpKTtcblxuICAgIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KGhlYWRlcikgfHwgaGVhZGVyIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcikge1xuICAgICAgc2V0SGVhZGVycyhoZWFkZXIsIHZhbHVlT3JSZXdyaXRlKVxuICAgIH0gZWxzZSBpZih1dGlscy5pc1N0cmluZyhoZWFkZXIpICYmIChoZWFkZXIgPSBoZWFkZXIudHJpbSgpKSAmJiAhaXNWYWxpZEhlYWRlck5hbWUoaGVhZGVyKSkge1xuICAgICAgc2V0SGVhZGVycyhwYXJzZUhlYWRlcnMoaGVhZGVyKSwgdmFsdWVPclJld3JpdGUpO1xuICAgIH0gZWxzZSBpZiAodXRpbHMuaXNIZWFkZXJzKGhlYWRlcikpIHtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGhlYWRlci5lbnRyaWVzKCkpIHtcbiAgICAgICAgc2V0SGVhZGVyKHZhbHVlLCBrZXksIHJld3JpdGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkZXIgIT0gbnVsbCAmJiBzZXRIZWFkZXIodmFsdWVPclJld3JpdGUsIGhlYWRlciwgcmV3cml0ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXQoaGVhZGVyLCBwYXJzZXIpIHtcbiAgICBoZWFkZXIgPSBub3JtYWxpemVIZWFkZXIoaGVhZGVyKTtcblxuICAgIGlmIChoZWFkZXIpIHtcbiAgICAgIGNvbnN0IGtleSA9IHV0aWxzLmZpbmRLZXkodGhpcywgaGVhZGVyKTtcblxuICAgICAgaWYgKGtleSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXNba2V5XTtcblxuICAgICAgICBpZiAoIXBhcnNlcikge1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJzZXIgPT09IHRydWUpIHtcbiAgICAgICAgICByZXR1cm4gcGFyc2VUb2tlbnModmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHV0aWxzLmlzRnVuY3Rpb24ocGFyc2VyKSkge1xuICAgICAgICAgIHJldHVybiBwYXJzZXIuY2FsbCh0aGlzLCB2YWx1ZSwga2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1dGlscy5pc1JlZ0V4cChwYXJzZXIpKSB7XG4gICAgICAgICAgcmV0dXJuIHBhcnNlci5leGVjKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3BhcnNlciBtdXN0IGJlIGJvb2xlYW58cmVnZXhwfGZ1bmN0aW9uJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFzKGhlYWRlciwgbWF0Y2hlcikge1xuICAgIGhlYWRlciA9IG5vcm1hbGl6ZUhlYWRlcihoZWFkZXIpO1xuXG4gICAgaWYgKGhlYWRlcikge1xuICAgICAgY29uc3Qga2V5ID0gdXRpbHMuZmluZEtleSh0aGlzLCBoZWFkZXIpO1xuXG4gICAgICByZXR1cm4gISEoa2V5ICYmIHRoaXNba2V5XSAhPT0gdW5kZWZpbmVkICYmICghbWF0Y2hlciB8fCBtYXRjaEhlYWRlclZhbHVlKHRoaXMsIHRoaXNba2V5XSwga2V5LCBtYXRjaGVyKSkpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGRlbGV0ZShoZWFkZXIsIG1hdGNoZXIpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBsZXQgZGVsZXRlZCA9IGZhbHNlO1xuXG4gICAgZnVuY3Rpb24gZGVsZXRlSGVhZGVyKF9oZWFkZXIpIHtcbiAgICAgIF9oZWFkZXIgPSBub3JtYWxpemVIZWFkZXIoX2hlYWRlcik7XG5cbiAgICAgIGlmIChfaGVhZGVyKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IHV0aWxzLmZpbmRLZXkoc2VsZiwgX2hlYWRlcik7XG5cbiAgICAgICAgaWYgKGtleSAmJiAoIW1hdGNoZXIgfHwgbWF0Y2hIZWFkZXJWYWx1ZShzZWxmLCBzZWxmW2tleV0sIGtleSwgbWF0Y2hlcikpKSB7XG4gICAgICAgICAgZGVsZXRlIHNlbGZba2V5XTtcblxuICAgICAgICAgIGRlbGV0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHV0aWxzLmlzQXJyYXkoaGVhZGVyKSkge1xuICAgICAgaGVhZGVyLmZvckVhY2goZGVsZXRlSGVhZGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlSGVhZGVyKGhlYWRlcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlbGV0ZWQ7XG4gIH1cblxuICBjbGVhcihtYXRjaGVyKSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMpO1xuICAgIGxldCBpID0ga2V5cy5sZW5ndGg7XG4gICAgbGV0IGRlbGV0ZWQgPSBmYWxzZTtcblxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgICBpZighbWF0Y2hlciB8fCBtYXRjaEhlYWRlclZhbHVlKHRoaXMsIHRoaXNba2V5XSwga2V5LCBtYXRjaGVyLCB0cnVlKSkge1xuICAgICAgICBkZWxldGUgdGhpc1trZXldO1xuICAgICAgICBkZWxldGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGVsZXRlZDtcbiAgfVxuXG4gIG5vcm1hbGl6ZShmb3JtYXQpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBoZWFkZXJzID0ge307XG5cbiAgICB1dGlscy5mb3JFYWNoKHRoaXMsICh2YWx1ZSwgaGVhZGVyKSA9PiB7XG4gICAgICBjb25zdCBrZXkgPSB1dGlscy5maW5kS2V5KGhlYWRlcnMsIGhlYWRlcik7XG5cbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgc2VsZltrZXldID0gbm9ybWFsaXplVmFsdWUodmFsdWUpO1xuICAgICAgICBkZWxldGUgc2VsZltoZWFkZXJdO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBmb3JtYXQgPyBmb3JtYXRIZWFkZXIoaGVhZGVyKSA6IFN0cmluZyhoZWFkZXIpLnRyaW0oKTtcblxuICAgICAgaWYgKG5vcm1hbGl6ZWQgIT09IGhlYWRlcikge1xuICAgICAgICBkZWxldGUgc2VsZltoZWFkZXJdO1xuICAgICAgfVxuXG4gICAgICBzZWxmW25vcm1hbGl6ZWRdID0gbm9ybWFsaXplVmFsdWUodmFsdWUpO1xuXG4gICAgICBoZWFkZXJzW25vcm1hbGl6ZWRdID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgY29uY2F0KC4uLnRhcmdldHMpIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5jb25jYXQodGhpcywgLi4udGFyZ2V0cyk7XG4gIH1cblxuICB0b0pTT04oYXNTdHJpbmdzKSB7XG4gICAgY29uc3Qgb2JqID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgIHV0aWxzLmZvckVhY2godGhpcywgKHZhbHVlLCBoZWFkZXIpID0+IHtcbiAgICAgIHZhbHVlICE9IG51bGwgJiYgdmFsdWUgIT09IGZhbHNlICYmIChvYmpbaGVhZGVyXSA9IGFzU3RyaW5ncyAmJiB1dGlscy5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLmpvaW4oJywgJykgOiB2YWx1ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMudG9KU09OKCkpW1N5bWJvbC5pdGVyYXRvcl0oKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKS5tYXAoKFtoZWFkZXIsIHZhbHVlXSkgPT4gaGVhZGVyICsgJzogJyArIHZhbHVlKS5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICByZXR1cm4gJ0F4aW9zSGVhZGVycyc7XG4gIH1cblxuICBzdGF0aWMgZnJvbSh0aGluZykge1xuICAgIHJldHVybiB0aGluZyBpbnN0YW5jZW9mIHRoaXMgPyB0aGluZyA6IG5ldyB0aGlzKHRoaW5nKTtcbiAgfVxuXG4gIHN0YXRpYyBjb25jYXQoZmlyc3QsIC4uLnRhcmdldHMpIHtcbiAgICBjb25zdCBjb21wdXRlZCA9IG5ldyB0aGlzKGZpcnN0KTtcblxuICAgIHRhcmdldHMuZm9yRWFjaCgodGFyZ2V0KSA9PiBjb21wdXRlZC5zZXQodGFyZ2V0KSk7XG5cbiAgICByZXR1cm4gY29tcHV0ZWQ7XG4gIH1cblxuICBzdGF0aWMgYWNjZXNzb3IoaGVhZGVyKSB7XG4gICAgY29uc3QgaW50ZXJuYWxzID0gdGhpc1skaW50ZXJuYWxzXSA9ICh0aGlzWyRpbnRlcm5hbHNdID0ge1xuICAgICAgYWNjZXNzb3JzOiB7fVxuICAgIH0pO1xuXG4gICAgY29uc3QgYWNjZXNzb3JzID0gaW50ZXJuYWxzLmFjY2Vzc29ycztcbiAgICBjb25zdCBwcm90b3R5cGUgPSB0aGlzLnByb3RvdHlwZTtcblxuICAgIGZ1bmN0aW9uIGRlZmluZUFjY2Vzc29yKF9oZWFkZXIpIHtcbiAgICAgIGNvbnN0IGxIZWFkZXIgPSBub3JtYWxpemVIZWFkZXIoX2hlYWRlcik7XG5cbiAgICAgIGlmICghYWNjZXNzb3JzW2xIZWFkZXJdKSB7XG4gICAgICAgIGJ1aWxkQWNjZXNzb3JzKHByb3RvdHlwZSwgX2hlYWRlcik7XG4gICAgICAgIGFjY2Vzc29yc1tsSGVhZGVyXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdXRpbHMuaXNBcnJheShoZWFkZXIpID8gaGVhZGVyLmZvckVhY2goZGVmaW5lQWNjZXNzb3IpIDogZGVmaW5lQWNjZXNzb3IoaGVhZGVyKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbkF4aW9zSGVhZGVycy5hY2Nlc3NvcihbJ0NvbnRlbnQtVHlwZScsICdDb250ZW50LUxlbmd0aCcsICdBY2NlcHQnLCAnQWNjZXB0LUVuY29kaW5nJywgJ1VzZXItQWdlbnQnLCAnQXV0aG9yaXphdGlvbiddKTtcblxuLy8gcmVzZXJ2ZWQgbmFtZXMgaG90Zml4XG51dGlscy5yZWR1Y2VEZXNjcmlwdG9ycyhBeGlvc0hlYWRlcnMucHJvdG90eXBlLCAoe3ZhbHVlfSwga2V5KSA9PiB7XG4gIGxldCBtYXBwZWQgPSBrZXlbMF0udG9VcHBlckNhc2UoKSArIGtleS5zbGljZSgxKTsgLy8gbWFwIGBzZXRgID0+IGBTZXRgXG4gIHJldHVybiB7XG4gICAgZ2V0OiAoKSA9PiB2YWx1ZSxcbiAgICBzZXQoaGVhZGVyVmFsdWUpIHtcbiAgICAgIHRoaXNbbWFwcGVkXSA9IGhlYWRlclZhbHVlO1xuICAgIH1cbiAgfVxufSk7XG5cbnV0aWxzLmZyZWV6ZU1ldGhvZHMoQXhpb3NIZWFkZXJzKTtcblxuZXhwb3J0IGRlZmF1bHQgQXhpb3NIZWFkZXJzO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi8uLi91dGlscy5qcyc7XG5pbXBvcnQgZGVmYXVsdHMgZnJvbSAnLi4vZGVmYXVsdHMvaW5kZXguanMnO1xuaW1wb3J0IEF4aW9zSGVhZGVycyBmcm9tICcuLi9jb3JlL0F4aW9zSGVhZGVycy5qcyc7XG5cbi8qKlxuICogVHJhbnNmb3JtIHRoZSBkYXRhIGZvciBhIHJlcXVlc3Qgb3IgYSByZXNwb25zZVxuICpcbiAqIEBwYXJhbSB7QXJyYXl8RnVuY3Rpb259IGZucyBBIHNpbmdsZSBmdW5jdGlvbiBvciBBcnJheSBvZiBmdW5jdGlvbnNcbiAqIEBwYXJhbSB7P09iamVjdH0gcmVzcG9uc2UgVGhlIHJlc3BvbnNlIG9iamVjdFxuICpcbiAqIEByZXR1cm5zIHsqfSBUaGUgcmVzdWx0aW5nIHRyYW5zZm9ybWVkIGRhdGFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJhbnNmb3JtRGF0YShmbnMsIHJlc3BvbnNlKSB7XG4gIGNvbnN0IGNvbmZpZyA9IHRoaXMgfHwgZGVmYXVsdHM7XG4gIGNvbnN0IGNvbnRleHQgPSByZXNwb25zZSB8fCBjb25maWc7XG4gIGNvbnN0IGhlYWRlcnMgPSBBeGlvc0hlYWRlcnMuZnJvbShjb250ZXh0LmhlYWRlcnMpO1xuICBsZXQgZGF0YSA9IGNvbnRleHQuZGF0YTtcblxuICB1dGlscy5mb3JFYWNoKGZucywgZnVuY3Rpb24gdHJhbnNmb3JtKGZuKSB7XG4gICAgZGF0YSA9IGZuLmNhbGwoY29uZmlnLCBkYXRhLCBoZWFkZXJzLm5vcm1hbGl6ZSgpLCByZXNwb25zZSA/IHJlc3BvbnNlLnN0YXR1cyA6IHVuZGVmaW5lZCk7XG4gIH0pO1xuXG4gIGhlYWRlcnMubm9ybWFsaXplKCk7XG5cbiAgcmV0dXJuIGRhdGE7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzQ2FuY2VsKHZhbHVlKSB7XG4gIHJldHVybiAhISh2YWx1ZSAmJiB2YWx1ZS5fX0NBTkNFTF9fKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSAnLi4vY29yZS9BeGlvc0Vycm9yLmpzJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5cbi8qKlxuICogQSBgQ2FuY2VsZWRFcnJvcmAgaXMgYW4gb2JqZWN0IHRoYXQgaXMgdGhyb3duIHdoZW4gYW4gb3BlcmF0aW9uIGlzIGNhbmNlbGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nPX0gbWVzc2FnZSBUaGUgbWVzc2FnZS5cbiAqIEBwYXJhbSB7T2JqZWN0PX0gY29uZmlnIFRoZSBjb25maWcuXG4gKiBAcGFyYW0ge09iamVjdD19IHJlcXVlc3QgVGhlIHJlcXVlc3QuXG4gKlxuICogQHJldHVybnMge0NhbmNlbGVkRXJyb3J9IFRoZSBjcmVhdGVkIGVycm9yLlxuICovXG5mdW5jdGlvbiBDYW5jZWxlZEVycm9yKG1lc3NhZ2UsIGNvbmZpZywgcmVxdWVzdCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXEtbnVsbCxlcWVxZXFcbiAgQXhpb3NFcnJvci5jYWxsKHRoaXMsIG1lc3NhZ2UgPT0gbnVsbCA/ICdjYW5jZWxlZCcgOiBtZXNzYWdlLCBBeGlvc0Vycm9yLkVSUl9DQU5DRUxFRCwgY29uZmlnLCByZXF1ZXN0KTtcbiAgdGhpcy5uYW1lID0gJ0NhbmNlbGVkRXJyb3InO1xufVxuXG51dGlscy5pbmhlcml0cyhDYW5jZWxlZEVycm9yLCBBeGlvc0Vycm9yLCB7XG4gIF9fQ0FOQ0VMX186IHRydWVcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBDYW5jZWxlZEVycm9yO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgQXhpb3NFcnJvciBmcm9tICcuL0F4aW9zRXJyb3IuanMnO1xuXG4vKipcbiAqIFJlc29sdmUgb3IgcmVqZWN0IGEgUHJvbWlzZSBiYXNlZCBvbiByZXNwb25zZSBzdGF0dXMuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVzb2x2ZSBBIGZ1bmN0aW9uIHRoYXQgcmVzb2x2ZXMgdGhlIHByb21pc2UuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWplY3QgQSBmdW5jdGlvbiB0aGF0IHJlamVjdHMgdGhlIHByb21pc2UuXG4gKiBAcGFyYW0ge29iamVjdH0gcmVzcG9uc2UgVGhlIHJlc3BvbnNlLlxuICpcbiAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSByZXNwb25zZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgcmVzcG9uc2UpIHtcbiAgY29uc3QgdmFsaWRhdGVTdGF0dXMgPSByZXNwb25zZS5jb25maWcudmFsaWRhdGVTdGF0dXM7XG4gIGlmICghcmVzcG9uc2Uuc3RhdHVzIHx8ICF2YWxpZGF0ZVN0YXR1cyB8fCB2YWxpZGF0ZVN0YXR1cyhyZXNwb25zZS5zdGF0dXMpKSB7XG4gICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gIH0gZWxzZSB7XG4gICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKFxuICAgICAgJ1JlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgJyArIHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIFtBeGlvc0Vycm9yLkVSUl9CQURfUkVRVUVTVCwgQXhpb3NFcnJvci5FUlJfQkFEX1JFU1BPTlNFXVtNYXRoLmZsb29yKHJlc3BvbnNlLnN0YXR1cyAvIDEwMCkgLSA0XSxcbiAgICAgIHJlc3BvbnNlLmNvbmZpZyxcbiAgICAgIHJlc3BvbnNlLnJlcXVlc3QsXG4gICAgICByZXNwb25zZVxuICAgICkpO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhcnNlUHJvdG9jb2wodXJsKSB7XG4gIGNvbnN0IG1hdGNoID0gL14oWy0rXFx3XXsxLDI1fSkoOj9cXC9cXC98OikvLmV4ZWModXJsKTtcbiAgcmV0dXJuIG1hdGNoICYmIG1hdGNoWzFdIHx8ICcnO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENhbGN1bGF0ZSBkYXRhIG1heFJhdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBbc2FtcGxlc0NvdW50PSAxMF1cbiAqIEBwYXJhbSB7TnVtYmVyfSBbbWluPSAxMDAwXVxuICogQHJldHVybnMge0Z1bmN0aW9ufVxuICovXG5mdW5jdGlvbiBzcGVlZG9tZXRlcihzYW1wbGVzQ291bnQsIG1pbikge1xuICBzYW1wbGVzQ291bnQgPSBzYW1wbGVzQ291bnQgfHwgMTA7XG4gIGNvbnN0IGJ5dGVzID0gbmV3IEFycmF5KHNhbXBsZXNDb3VudCk7XG4gIGNvbnN0IHRpbWVzdGFtcHMgPSBuZXcgQXJyYXkoc2FtcGxlc0NvdW50KTtcbiAgbGV0IGhlYWQgPSAwO1xuICBsZXQgdGFpbCA9IDA7XG4gIGxldCBmaXJzdFNhbXBsZVRTO1xuXG4gIG1pbiA9IG1pbiAhPT0gdW5kZWZpbmVkID8gbWluIDogMTAwMDtcblxuICByZXR1cm4gZnVuY3Rpb24gcHVzaChjaHVua0xlbmd0aCkge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgICBjb25zdCBzdGFydGVkQXQgPSB0aW1lc3RhbXBzW3RhaWxdO1xuXG4gICAgaWYgKCFmaXJzdFNhbXBsZVRTKSB7XG4gICAgICBmaXJzdFNhbXBsZVRTID0gbm93O1xuICAgIH1cblxuICAgIGJ5dGVzW2hlYWRdID0gY2h1bmtMZW5ndGg7XG4gICAgdGltZXN0YW1wc1toZWFkXSA9IG5vdztcblxuICAgIGxldCBpID0gdGFpbDtcbiAgICBsZXQgYnl0ZXNDb3VudCA9IDA7XG5cbiAgICB3aGlsZSAoaSAhPT0gaGVhZCkge1xuICAgICAgYnl0ZXNDb3VudCArPSBieXRlc1tpKytdO1xuICAgICAgaSA9IGkgJSBzYW1wbGVzQ291bnQ7XG4gICAgfVxuXG4gICAgaGVhZCA9IChoZWFkICsgMSkgJSBzYW1wbGVzQ291bnQ7XG5cbiAgICBpZiAoaGVhZCA9PT0gdGFpbCkge1xuICAgICAgdGFpbCA9ICh0YWlsICsgMSkgJSBzYW1wbGVzQ291bnQ7XG4gICAgfVxuXG4gICAgaWYgKG5vdyAtIGZpcnN0U2FtcGxlVFMgPCBtaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXNzZWQgPSBzdGFydGVkQXQgJiYgbm93IC0gc3RhcnRlZEF0O1xuXG4gICAgcmV0dXJuIHBhc3NlZCA/IE1hdGgucm91bmQoYnl0ZXNDb3VudCAqIDEwMDAgLyBwYXNzZWQpIDogdW5kZWZpbmVkO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBzcGVlZG9tZXRlcjtcbiIsIi8qKlxuICogVGhyb3R0bGUgZGVjb3JhdG9yXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxuICogQHBhcmFtIHtOdW1iZXJ9IGZyZXFcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICovXG5mdW5jdGlvbiB0aHJvdHRsZShmbiwgZnJlcSkge1xuICBsZXQgdGltZXN0YW1wID0gMDtcbiAgbGV0IHRocmVzaG9sZCA9IDEwMDAgLyBmcmVxO1xuICBsZXQgbGFzdEFyZ3M7XG4gIGxldCB0aW1lcjtcblxuICBjb25zdCBpbnZva2UgPSAoYXJncywgbm93ID0gRGF0ZS5ub3coKSkgPT4ge1xuICAgIHRpbWVzdGFtcCA9IG5vdztcbiAgICBsYXN0QXJncyA9IG51bGw7XG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgdGltZXIgPSBudWxsO1xuICAgIH1cbiAgICBmbi5hcHBseShudWxsLCBhcmdzKTtcbiAgfVxuXG4gIGNvbnN0IHRocm90dGxlZCA9ICguLi5hcmdzKSA9PiB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBwYXNzZWQgPSBub3cgLSB0aW1lc3RhbXA7XG4gICAgaWYgKCBwYXNzZWQgPj0gdGhyZXNob2xkKSB7XG4gICAgICBpbnZva2UoYXJncywgbm93KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFzdEFyZ3MgPSBhcmdzO1xuICAgICAgaWYgKCF0aW1lcikge1xuICAgICAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRpbWVyID0gbnVsbDtcbiAgICAgICAgICBpbnZva2UobGFzdEFyZ3MpXG4gICAgICAgIH0sIHRocmVzaG9sZCAtIHBhc3NlZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZmx1c2ggPSAoKSA9PiBsYXN0QXJncyAmJiBpbnZva2UobGFzdEFyZ3MpO1xuXG4gIHJldHVybiBbdGhyb3R0bGVkLCBmbHVzaF07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRocm90dGxlO1xuIiwiaW1wb3J0IHNwZWVkb21ldGVyIGZyb20gXCIuL3NwZWVkb21ldGVyLmpzXCI7XG5pbXBvcnQgdGhyb3R0bGUgZnJvbSBcIi4vdGhyb3R0bGUuanNcIjtcbmltcG9ydCB1dGlscyBmcm9tIFwiLi4vdXRpbHMuanNcIjtcblxuZXhwb3J0IGNvbnN0IHByb2dyZXNzRXZlbnRSZWR1Y2VyID0gKGxpc3RlbmVyLCBpc0Rvd25sb2FkU3RyZWFtLCBmcmVxID0gMykgPT4ge1xuICBsZXQgYnl0ZXNOb3RpZmllZCA9IDA7XG4gIGNvbnN0IF9zcGVlZG9tZXRlciA9IHNwZWVkb21ldGVyKDUwLCAyNTApO1xuXG4gIHJldHVybiB0aHJvdHRsZShlID0+IHtcbiAgICBjb25zdCBsb2FkZWQgPSBlLmxvYWRlZDtcbiAgICBjb25zdCB0b3RhbCA9IGUubGVuZ3RoQ29tcHV0YWJsZSA/IGUudG90YWwgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcHJvZ3Jlc3NCeXRlcyA9IGxvYWRlZCAtIGJ5dGVzTm90aWZpZWQ7XG4gICAgY29uc3QgcmF0ZSA9IF9zcGVlZG9tZXRlcihwcm9ncmVzc0J5dGVzKTtcbiAgICBjb25zdCBpblJhbmdlID0gbG9hZGVkIDw9IHRvdGFsO1xuXG4gICAgYnl0ZXNOb3RpZmllZCA9IGxvYWRlZDtcblxuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBsb2FkZWQsXG4gICAgICB0b3RhbCxcbiAgICAgIHByb2dyZXNzOiB0b3RhbCA/IChsb2FkZWQgLyB0b3RhbCkgOiB1bmRlZmluZWQsXG4gICAgICBieXRlczogcHJvZ3Jlc3NCeXRlcyxcbiAgICAgIHJhdGU6IHJhdGUgPyByYXRlIDogdW5kZWZpbmVkLFxuICAgICAgZXN0aW1hdGVkOiByYXRlICYmIHRvdGFsICYmIGluUmFuZ2UgPyAodG90YWwgLSBsb2FkZWQpIC8gcmF0ZSA6IHVuZGVmaW5lZCxcbiAgICAgIGV2ZW50OiBlLFxuICAgICAgbGVuZ3RoQ29tcHV0YWJsZTogdG90YWwgIT0gbnVsbCxcbiAgICAgIFtpc0Rvd25sb2FkU3RyZWFtID8gJ2Rvd25sb2FkJyA6ICd1cGxvYWQnXTogdHJ1ZVxuICAgIH07XG5cbiAgICBsaXN0ZW5lcihkYXRhKTtcbiAgfSwgZnJlcSk7XG59XG5cbmV4cG9ydCBjb25zdCBwcm9ncmVzc0V2ZW50RGVjb3JhdG9yID0gKHRvdGFsLCB0aHJvdHRsZWQpID0+IHtcbiAgY29uc3QgbGVuZ3RoQ29tcHV0YWJsZSA9IHRvdGFsICE9IG51bGw7XG5cbiAgcmV0dXJuIFsobG9hZGVkKSA9PiB0aHJvdHRsZWRbMF0oe1xuICAgIGxlbmd0aENvbXB1dGFibGUsXG4gICAgdG90YWwsXG4gICAgbG9hZGVkXG4gIH0pLCB0aHJvdHRsZWRbMV1dO1xufVxuXG5leHBvcnQgY29uc3QgYXN5bmNEZWNvcmF0b3IgPSAoZm4pID0+ICguLi5hcmdzKSA9PiB1dGlscy5hc2FwKCgpID0+IGZuKC4uLmFyZ3MpKTtcbiIsImltcG9ydCBwbGF0Zm9ybSBmcm9tICcuLi9wbGF0Zm9ybS9pbmRleC5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IHBsYXRmb3JtLmhhc1N0YW5kYXJkQnJvd3NlckVudiA/ICgob3JpZ2luLCBpc01TSUUpID0+ICh1cmwpID0+IHtcbiAgdXJsID0gbmV3IFVSTCh1cmwsIHBsYXRmb3JtLm9yaWdpbik7XG5cbiAgcmV0dXJuIChcbiAgICBvcmlnaW4ucHJvdG9jb2wgPT09IHVybC5wcm90b2NvbCAmJlxuICAgIG9yaWdpbi5ob3N0ID09PSB1cmwuaG9zdCAmJlxuICAgIChpc01TSUUgfHwgb3JpZ2luLnBvcnQgPT09IHVybC5wb3J0KVxuICApO1xufSkoXG4gIG5ldyBVUkwocGxhdGZvcm0ub3JpZ2luKSxcbiAgcGxhdGZvcm0ubmF2aWdhdG9yICYmIC8obXNpZXx0cmlkZW50KS9pLnRlc3QocGxhdGZvcm0ubmF2aWdhdG9yLnVzZXJBZ2VudClcbikgOiAoKSA9PiB0cnVlO1xuIiwiaW1wb3J0IHV0aWxzIGZyb20gJy4vLi4vdXRpbHMuanMnO1xuaW1wb3J0IHBsYXRmb3JtIGZyb20gJy4uL3BsYXRmb3JtL2luZGV4LmpzJztcblxuZXhwb3J0IGRlZmF1bHQgcGxhdGZvcm0uaGFzU3RhbmRhcmRCcm93c2VyRW52ID9cblxuICAvLyBTdGFuZGFyZCBicm93c2VyIGVudnMgc3VwcG9ydCBkb2N1bWVudC5jb29raWVcbiAge1xuICAgIHdyaXRlKG5hbWUsIHZhbHVlLCBleHBpcmVzLCBwYXRoLCBkb21haW4sIHNlY3VyZSkge1xuICAgICAgY29uc3QgY29va2llID0gW25hbWUgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpXTtcblxuICAgICAgdXRpbHMuaXNOdW1iZXIoZXhwaXJlcykgJiYgY29va2llLnB1c2goJ2V4cGlyZXM9JyArIG5ldyBEYXRlKGV4cGlyZXMpLnRvR01UU3RyaW5nKCkpO1xuXG4gICAgICB1dGlscy5pc1N0cmluZyhwYXRoKSAmJiBjb29raWUucHVzaCgncGF0aD0nICsgcGF0aCk7XG5cbiAgICAgIHV0aWxzLmlzU3RyaW5nKGRvbWFpbikgJiYgY29va2llLnB1c2goJ2RvbWFpbj0nICsgZG9tYWluKTtcblxuICAgICAgc2VjdXJlID09PSB0cnVlICYmIGNvb2tpZS5wdXNoKCdzZWN1cmUnKTtcblxuICAgICAgZG9jdW1lbnQuY29va2llID0gY29va2llLmpvaW4oJzsgJyk7XG4gICAgfSxcblxuICAgIHJlYWQobmFtZSkge1xuICAgICAgY29uc3QgbWF0Y2ggPSBkb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgnKF58O1xcXFxzKikoJyArIG5hbWUgKyAnKT0oW147XSopJykpO1xuICAgICAgcmV0dXJuIChtYXRjaCA/IGRlY29kZVVSSUNvbXBvbmVudChtYXRjaFszXSkgOiBudWxsKTtcbiAgICB9LFxuXG4gICAgcmVtb3ZlKG5hbWUpIHtcbiAgICAgIHRoaXMud3JpdGUobmFtZSwgJycsIERhdGUubm93KCkgLSA4NjQwMDAwMCk7XG4gICAgfVxuICB9XG5cbiAgOlxuXG4gIC8vIE5vbi1zdGFuZGFyZCBicm93c2VyIGVudiAod2ViIHdvcmtlcnMsIHJlYWN0LW5hdGl2ZSkgbGFjayBuZWVkZWQgc3VwcG9ydC5cbiAge1xuICAgIHdyaXRlKCkge30sXG4gICAgcmVhZCgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gICAgcmVtb3ZlKCkge31cbiAgfTtcblxuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIFVSTCBpcyBhYnNvbHV0ZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIFVSTCB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHNwZWNpZmllZCBVUkwgaXMgYWJzb2x1dGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0Fic29sdXRlVVJMKHVybCkge1xuICAvLyBBIFVSTCBpcyBjb25zaWRlcmVkIGFic29sdXRlIGlmIGl0IGJlZ2lucyB3aXRoIFwiPHNjaGVtZT46Ly9cIiBvciBcIi8vXCIgKHByb3RvY29sLXJlbGF0aXZlIFVSTCkuXG4gIC8vIFJGQyAzOTg2IGRlZmluZXMgc2NoZW1lIG5hbWUgYXMgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIGJlZ2lubmluZyB3aXRoIGEgbGV0dGVyIGFuZCBmb2xsb3dlZFxuICAvLyBieSBhbnkgY29tYmluYXRpb24gb2YgbGV0dGVycywgZGlnaXRzLCBwbHVzLCBwZXJpb2QsIG9yIGh5cGhlbi5cbiAgcmV0dXJuIC9eKFthLXpdW2EtelxcZCtcXC0uXSo6KT9cXC9cXC8vaS50ZXN0KHVybCk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBVUkwgYnkgY29tYmluaW5nIHRoZSBzcGVjaWZpZWQgVVJMc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aXZlVVJMIFRoZSByZWxhdGl2ZSBVUkxcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tYmluZWQgVVJMXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbWJpbmVVUkxzKGJhc2VVUkwsIHJlbGF0aXZlVVJMKSB7XG4gIHJldHVybiByZWxhdGl2ZVVSTFxuICAgID8gYmFzZVVSTC5yZXBsYWNlKC9cXC8/XFwvJC8sICcnKSArICcvJyArIHJlbGF0aXZlVVJMLnJlcGxhY2UoL15cXC8rLywgJycpXG4gICAgOiBiYXNlVVJMO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgaXNBYnNvbHV0ZVVSTCBmcm9tICcuLi9oZWxwZXJzL2lzQWJzb2x1dGVVUkwuanMnO1xuaW1wb3J0IGNvbWJpbmVVUkxzIGZyb20gJy4uL2hlbHBlcnMvY29tYmluZVVSTHMuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgVVJMIGJ5IGNvbWJpbmluZyB0aGUgYmFzZVVSTCB3aXRoIHRoZSByZXF1ZXN0ZWRVUkwsXG4gKiBvbmx5IHdoZW4gdGhlIHJlcXVlc3RlZFVSTCBpcyBub3QgYWxyZWFkeSBhbiBhYnNvbHV0ZSBVUkwuXG4gKiBJZiB0aGUgcmVxdWVzdFVSTCBpcyBhYnNvbHV0ZSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSByZXF1ZXN0ZWRVUkwgdW50b3VjaGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd9IHJlcXVlc3RlZFVSTCBBYnNvbHV0ZSBvciByZWxhdGl2ZSBVUkwgdG8gY29tYmluZVxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBmdWxsIHBhdGhcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYnVpbGRGdWxsUGF0aChiYXNlVVJMLCByZXF1ZXN0ZWRVUkwpIHtcbiAgaWYgKGJhc2VVUkwgJiYgIWlzQWJzb2x1dGVVUkwocmVxdWVzdGVkVVJMKSkge1xuICAgIHJldHVybiBjb21iaW5lVVJMcyhiYXNlVVJMLCByZXF1ZXN0ZWRVUkwpO1xuICB9XG4gIHJldHVybiByZXF1ZXN0ZWRVUkw7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5pbXBvcnQgQXhpb3NIZWFkZXJzIGZyb20gXCIuL0F4aW9zSGVhZGVycy5qc1wiO1xuXG5jb25zdCBoZWFkZXJzVG9PYmplY3QgPSAodGhpbmcpID0+IHRoaW5nIGluc3RhbmNlb2YgQXhpb3NIZWFkZXJzID8geyAuLi50aGluZyB9IDogdGhpbmc7XG5cbi8qKlxuICogQ29uZmlnLXNwZWNpZmljIG1lcmdlLWZ1bmN0aW9uIHdoaWNoIGNyZWF0ZXMgYSBuZXcgY29uZmlnLW9iamVjdFxuICogYnkgbWVyZ2luZyB0d28gY29uZmlndXJhdGlvbiBvYmplY3RzIHRvZ2V0aGVyLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcxXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnMlxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9IE5ldyBvYmplY3QgcmVzdWx0aW5nIGZyb20gbWVyZ2luZyBjb25maWcyIHRvIGNvbmZpZzFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2VDb25maWcoY29uZmlnMSwgY29uZmlnMikge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgY29uZmlnMiA9IGNvbmZpZzIgfHwge307XG4gIGNvbnN0IGNvbmZpZyA9IHt9O1xuXG4gIGZ1bmN0aW9uIGdldE1lcmdlZFZhbHVlKHRhcmdldCwgc291cmNlLCBwcm9wLCBjYXNlbGVzcykge1xuICAgIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KHRhcmdldCkgJiYgdXRpbHMuaXNQbGFpbk9iamVjdChzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gdXRpbHMubWVyZ2UuY2FsbCh7Y2FzZWxlc3N9LCB0YXJnZXQsIHNvdXJjZSk7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiB1dGlscy5tZXJnZSh7fSwgc291cmNlKTtcbiAgICB9IGVsc2UgaWYgKHV0aWxzLmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHNvdXJjZS5zbGljZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc291cmNlO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIG1lcmdlRGVlcFByb3BlcnRpZXMoYSwgYiwgcHJvcCAsIGNhc2VsZXNzKSB7XG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChiKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKGEsIGIsIHByb3AgLCBjYXNlbGVzcyk7XG4gICAgfSBlbHNlIGlmICghdXRpbHMuaXNVbmRlZmluZWQoYSkpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGEsIHByb3AgLCBjYXNlbGVzcyk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIHZhbHVlRnJvbUNvbmZpZzIoYSwgYikge1xuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoYikpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiBkZWZhdWx0VG9Db25maWcyKGEsIGIpIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGIpKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBiKTtcbiAgICB9IGVsc2UgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChhKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgYSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIG1lcmdlRGlyZWN0S2V5cyhhLCBiLCBwcm9wKSB7XG4gICAgaWYgKHByb3AgaW4gY29uZmlnMikge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKGEsIGIpO1xuICAgIH0gZWxzZSBpZiAocHJvcCBpbiBjb25maWcxKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBhKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBtZXJnZU1hcCA9IHtcbiAgICB1cmw6IHZhbHVlRnJvbUNvbmZpZzIsXG4gICAgbWV0aG9kOiB2YWx1ZUZyb21Db25maWcyLFxuICAgIGRhdGE6IHZhbHVlRnJvbUNvbmZpZzIsXG4gICAgYmFzZVVSTDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB0cmFuc2Zvcm1SZXF1ZXN0OiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHRyYW5zZm9ybVJlc3BvbnNlOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHBhcmFtc1NlcmlhbGl6ZXI6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgdGltZW91dDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB0aW1lb3V0TWVzc2FnZTogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB3aXRoQ3JlZGVudGlhbHM6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgd2l0aFhTUkZUb2tlbjogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBhZGFwdGVyOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHJlc3BvbnNlVHlwZTogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB4c3JmQ29va2llTmFtZTogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB4c3JmSGVhZGVyTmFtZTogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBvblVwbG9hZFByb2dyZXNzOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIG9uRG93bmxvYWRQcm9ncmVzczogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBkZWNvbXByZXNzOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIG1heENvbnRlbnRMZW5ndGg6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgbWF4Qm9keUxlbmd0aDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBiZWZvcmVSZWRpcmVjdDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB0cmFuc3BvcnQ6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgaHR0cEFnZW50OiBkZWZhdWx0VG9Db25maWcyLFxuICAgIGh0dHBzQWdlbnQ6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgY2FuY2VsVG9rZW46IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgc29ja2V0UGF0aDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICByZXNwb25zZUVuY29kaW5nOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHZhbGlkYXRlU3RhdHVzOiBtZXJnZURpcmVjdEtleXMsXG4gICAgaGVhZGVyczogKGEsIGIgLCBwcm9wKSA9PiBtZXJnZURlZXBQcm9wZXJ0aWVzKGhlYWRlcnNUb09iamVjdChhKSwgaGVhZGVyc1RvT2JqZWN0KGIpLHByb3AsIHRydWUpXG4gIH07XG5cbiAgdXRpbHMuZm9yRWFjaChPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LCBjb25maWcxLCBjb25maWcyKSksIGZ1bmN0aW9uIGNvbXB1dGVDb25maWdWYWx1ZShwcm9wKSB7XG4gICAgY29uc3QgbWVyZ2UgPSBtZXJnZU1hcFtwcm9wXSB8fCBtZXJnZURlZXBQcm9wZXJ0aWVzO1xuICAgIGNvbnN0IGNvbmZpZ1ZhbHVlID0gbWVyZ2UoY29uZmlnMVtwcm9wXSwgY29uZmlnMltwcm9wXSwgcHJvcCk7XG4gICAgKHV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZ1ZhbHVlKSAmJiBtZXJnZSAhPT0gbWVyZ2VEaXJlY3RLZXlzKSB8fCAoY29uZmlnW3Byb3BdID0gY29uZmlnVmFsdWUpO1xuICB9KTtcblxuICByZXR1cm4gY29uZmlnO1xufVxuIiwiaW1wb3J0IHBsYXRmb3JtIGZyb20gXCIuLi9wbGF0Zm9ybS9pbmRleC5qc1wiO1xuaW1wb3J0IHV0aWxzIGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IGlzVVJMU2FtZU9yaWdpbiBmcm9tIFwiLi9pc1VSTFNhbWVPcmlnaW4uanNcIjtcbmltcG9ydCBjb29raWVzIGZyb20gXCIuL2Nvb2tpZXMuanNcIjtcbmltcG9ydCBidWlsZEZ1bGxQYXRoIGZyb20gXCIuLi9jb3JlL2J1aWxkRnVsbFBhdGguanNcIjtcbmltcG9ydCBtZXJnZUNvbmZpZyBmcm9tIFwiLi4vY29yZS9tZXJnZUNvbmZpZy5qc1wiO1xuaW1wb3J0IEF4aW9zSGVhZGVycyBmcm9tIFwiLi4vY29yZS9BeGlvc0hlYWRlcnMuanNcIjtcbmltcG9ydCBidWlsZFVSTCBmcm9tIFwiLi9idWlsZFVSTC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCAoY29uZmlnKSA9PiB7XG4gIGNvbnN0IG5ld0NvbmZpZyA9IG1lcmdlQ29uZmlnKHt9LCBjb25maWcpO1xuXG4gIGxldCB7ZGF0YSwgd2l0aFhTUkZUb2tlbiwgeHNyZkhlYWRlck5hbWUsIHhzcmZDb29raWVOYW1lLCBoZWFkZXJzLCBhdXRofSA9IG5ld0NvbmZpZztcblxuICBuZXdDb25maWcuaGVhZGVycyA9IGhlYWRlcnMgPSBBeGlvc0hlYWRlcnMuZnJvbShoZWFkZXJzKTtcblxuICBuZXdDb25maWcudXJsID0gYnVpbGRVUkwoYnVpbGRGdWxsUGF0aChuZXdDb25maWcuYmFzZVVSTCwgbmV3Q29uZmlnLnVybCksIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKTtcblxuICAvLyBIVFRQIGJhc2ljIGF1dGhlbnRpY2F0aW9uXG4gIGlmIChhdXRoKSB7XG4gICAgaGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmFzaWMgJyArXG4gICAgICBidG9hKChhdXRoLnVzZXJuYW1lIHx8ICcnKSArICc6JyArIChhdXRoLnBhc3N3b3JkID8gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGF1dGgucGFzc3dvcmQpKSA6ICcnKSlcbiAgICApO1xuICB9XG5cbiAgbGV0IGNvbnRlbnRUeXBlO1xuXG4gIGlmICh1dGlscy5pc0Zvcm1EYXRhKGRhdGEpKSB7XG4gICAgaWYgKHBsYXRmb3JtLmhhc1N0YW5kYXJkQnJvd3NlckVudiB8fCBwbGF0Zm9ybS5oYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnYpIHtcbiAgICAgIGhlYWRlcnMuc2V0Q29udGVudFR5cGUodW5kZWZpbmVkKTsgLy8gTGV0IHRoZSBicm93c2VyIHNldCBpdFxuICAgIH0gZWxzZSBpZiAoKGNvbnRlbnRUeXBlID0gaGVhZGVycy5nZXRDb250ZW50VHlwZSgpKSAhPT0gZmFsc2UpIHtcbiAgICAgIC8vIGZpeCBzZW1pY29sb24gZHVwbGljYXRpb24gaXNzdWUgZm9yIFJlYWN0TmF0aXZlIEZvcm1EYXRhIGltcGxlbWVudGF0aW9uXG4gICAgICBjb25zdCBbdHlwZSwgLi4udG9rZW5zXSA9IGNvbnRlbnRUeXBlID8gY29udGVudFR5cGUuc3BsaXQoJzsnKS5tYXAodG9rZW4gPT4gdG9rZW4udHJpbSgpKS5maWx0ZXIoQm9vbGVhbikgOiBbXTtcbiAgICAgIGhlYWRlcnMuc2V0Q29udGVudFR5cGUoW3R5cGUgfHwgJ211bHRpcGFydC9mb3JtLWRhdGEnLCAuLi50b2tlbnNdLmpvaW4oJzsgJykpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFkZCB4c3JmIGhlYWRlclxuICAvLyBUaGlzIGlzIG9ubHkgZG9uZSBpZiBydW5uaW5nIGluIGEgc3RhbmRhcmQgYnJvd3NlciBlbnZpcm9ubWVudC5cbiAgLy8gU3BlY2lmaWNhbGx5IG5vdCBpZiB3ZSdyZSBpbiBhIHdlYiB3b3JrZXIsIG9yIHJlYWN0LW5hdGl2ZS5cblxuICBpZiAocGxhdGZvcm0uaGFzU3RhbmRhcmRCcm93c2VyRW52KSB7XG4gICAgd2l0aFhTUkZUb2tlbiAmJiB1dGlscy5pc0Z1bmN0aW9uKHdpdGhYU1JGVG9rZW4pICYmICh3aXRoWFNSRlRva2VuID0gd2l0aFhTUkZUb2tlbihuZXdDb25maWcpKTtcblxuICAgIGlmICh3aXRoWFNSRlRva2VuIHx8ICh3aXRoWFNSRlRva2VuICE9PSBmYWxzZSAmJiBpc1VSTFNhbWVPcmlnaW4obmV3Q29uZmlnLnVybCkpKSB7XG4gICAgICAvLyBBZGQgeHNyZiBoZWFkZXJcbiAgICAgIGNvbnN0IHhzcmZWYWx1ZSA9IHhzcmZIZWFkZXJOYW1lICYmIHhzcmZDb29raWVOYW1lICYmIGNvb2tpZXMucmVhZCh4c3JmQ29va2llTmFtZSk7XG5cbiAgICAgIGlmICh4c3JmVmFsdWUpIHtcbiAgICAgICAgaGVhZGVycy5zZXQoeHNyZkhlYWRlck5hbWUsIHhzcmZWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ld0NvbmZpZztcbn1cblxuIiwiaW1wb3J0IHV0aWxzIGZyb20gJy4vLi4vdXRpbHMuanMnO1xuaW1wb3J0IHNldHRsZSBmcm9tICcuLy4uL2NvcmUvc2V0dGxlLmpzJztcbmltcG9ydCB0cmFuc2l0aW9uYWxEZWZhdWx0cyBmcm9tICcuLi9kZWZhdWx0cy90cmFuc2l0aW9uYWwuanMnO1xuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSAnLi4vY29yZS9BeGlvc0Vycm9yLmpzJztcbmltcG9ydCBDYW5jZWxlZEVycm9yIGZyb20gJy4uL2NhbmNlbC9DYW5jZWxlZEVycm9yLmpzJztcbmltcG9ydCBwYXJzZVByb3RvY29sIGZyb20gJy4uL2hlbHBlcnMvcGFyc2VQcm90b2NvbC5qcyc7XG5pbXBvcnQgcGxhdGZvcm0gZnJvbSAnLi4vcGxhdGZvcm0vaW5kZXguanMnO1xuaW1wb3J0IEF4aW9zSGVhZGVycyBmcm9tICcuLi9jb3JlL0F4aW9zSGVhZGVycy5qcyc7XG5pbXBvcnQge3Byb2dyZXNzRXZlbnRSZWR1Y2VyfSBmcm9tICcuLi9oZWxwZXJzL3Byb2dyZXNzRXZlbnRSZWR1Y2VyLmpzJztcbmltcG9ydCByZXNvbHZlQ29uZmlnIGZyb20gXCIuLi9oZWxwZXJzL3Jlc29sdmVDb25maWcuanNcIjtcblxuY29uc3QgaXNYSFJBZGFwdGVyU3VwcG9ydGVkID0gdHlwZW9mIFhNTEh0dHBSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJztcblxuZXhwb3J0IGRlZmF1bHQgaXNYSFJBZGFwdGVyU3VwcG9ydGVkICYmIGZ1bmN0aW9uIChjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIGRpc3BhdGNoWGhyUmVxdWVzdChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBjb25zdCBfY29uZmlnID0gcmVzb2x2ZUNvbmZpZyhjb25maWcpO1xuICAgIGxldCByZXF1ZXN0RGF0YSA9IF9jb25maWcuZGF0YTtcbiAgICBjb25zdCByZXF1ZXN0SGVhZGVycyA9IEF4aW9zSGVhZGVycy5mcm9tKF9jb25maWcuaGVhZGVycykubm9ybWFsaXplKCk7XG4gICAgbGV0IHtyZXNwb25zZVR5cGUsIG9uVXBsb2FkUHJvZ3Jlc3MsIG9uRG93bmxvYWRQcm9ncmVzc30gPSBfY29uZmlnO1xuICAgIGxldCBvbkNhbmNlbGVkO1xuICAgIGxldCB1cGxvYWRUaHJvdHRsZWQsIGRvd25sb2FkVGhyb3R0bGVkO1xuICAgIGxldCBmbHVzaFVwbG9hZCwgZmx1c2hEb3dubG9hZDtcblxuICAgIGZ1bmN0aW9uIGRvbmUoKSB7XG4gICAgICBmbHVzaFVwbG9hZCAmJiBmbHVzaFVwbG9hZCgpOyAvLyBmbHVzaCBldmVudHNcbiAgICAgIGZsdXNoRG93bmxvYWQgJiYgZmx1c2hEb3dubG9hZCgpOyAvLyBmbHVzaCBldmVudHNcblxuICAgICAgX2NvbmZpZy5jYW5jZWxUb2tlbiAmJiBfY29uZmlnLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKG9uQ2FuY2VsZWQpO1xuXG4gICAgICBfY29uZmlnLnNpZ25hbCAmJiBfY29uZmlnLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQ2FuY2VsZWQpO1xuICAgIH1cblxuICAgIGxldCByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG5cbiAgICByZXF1ZXN0Lm9wZW4oX2NvbmZpZy5tZXRob2QudG9VcHBlckNhc2UoKSwgX2NvbmZpZy51cmwsIHRydWUpO1xuXG4gICAgLy8gU2V0IHRoZSByZXF1ZXN0IHRpbWVvdXQgaW4gTVNcbiAgICByZXF1ZXN0LnRpbWVvdXQgPSBfY29uZmlnLnRpbWVvdXQ7XG5cbiAgICBmdW5jdGlvbiBvbmxvYWRlbmQoKSB7XG4gICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8gUHJlcGFyZSB0aGUgcmVzcG9uc2VcbiAgICAgIGNvbnN0IHJlc3BvbnNlSGVhZGVycyA9IEF4aW9zSGVhZGVycy5mcm9tKFxuICAgICAgICAnZ2V0QWxsUmVzcG9uc2VIZWFkZXJzJyBpbiByZXF1ZXN0ICYmIHJlcXVlc3QuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKClcbiAgICAgICk7XG4gICAgICBjb25zdCByZXNwb25zZURhdGEgPSAhcmVzcG9uc2VUeXBlIHx8IHJlc3BvbnNlVHlwZSA9PT0gJ3RleHQnIHx8IHJlc3BvbnNlVHlwZSA9PT0gJ2pzb24nID9cbiAgICAgICAgcmVxdWVzdC5yZXNwb25zZVRleHQgOiByZXF1ZXN0LnJlc3BvbnNlO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICAgIGRhdGE6IHJlc3BvbnNlRGF0YSxcbiAgICAgICAgc3RhdHVzOiByZXF1ZXN0LnN0YXR1cyxcbiAgICAgICAgc3RhdHVzVGV4dDogcmVxdWVzdC5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiByZXNwb25zZUhlYWRlcnMsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxdWVzdFxuICAgICAgfTtcblxuICAgICAgc2V0dGxlKGZ1bmN0aW9uIF9yZXNvbHZlKHZhbHVlKSB7XG4gICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9LCBmdW5jdGlvbiBfcmVqZWN0KGVycikge1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSwgcmVzcG9uc2UpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoJ29ubG9hZGVuZCcgaW4gcmVxdWVzdCkge1xuICAgICAgLy8gVXNlIG9ubG9hZGVuZCBpZiBhdmFpbGFibGVcbiAgICAgIHJlcXVlc3Qub25sb2FkZW5kID0gb25sb2FkZW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBMaXN0ZW4gZm9yIHJlYWR5IHN0YXRlIHRvIGVtdWxhdGUgb25sb2FkZW5kXG4gICAgICByZXF1ZXN0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uIGhhbmRsZUxvYWQoKSB7XG4gICAgICAgIGlmICghcmVxdWVzdCB8fCByZXF1ZXN0LnJlYWR5U3RhdGUgIT09IDQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgcmVxdWVzdCBlcnJvcmVkIG91dCBhbmQgd2UgZGlkbid0IGdldCBhIHJlc3BvbnNlLCB0aGlzIHdpbGwgYmVcbiAgICAgICAgLy8gaGFuZGxlZCBieSBvbmVycm9yIGluc3RlYWRcbiAgICAgICAgLy8gV2l0aCBvbmUgZXhjZXB0aW9uOiByZXF1ZXN0IHRoYXQgdXNpbmcgZmlsZTogcHJvdG9jb2wsIG1vc3QgYnJvd3NlcnNcbiAgICAgICAgLy8gd2lsbCByZXR1cm4gc3RhdHVzIGFzIDAgZXZlbiB0aG91Z2ggaXQncyBhIHN1Y2Nlc3NmdWwgcmVxdWVzdFxuICAgICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDAgJiYgIShyZXF1ZXN0LnJlc3BvbnNlVVJMICYmIHJlcXVlc3QucmVzcG9uc2VVUkwuaW5kZXhPZignZmlsZTonKSA9PT0gMCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVhZHlzdGF0ZSBoYW5kbGVyIGlzIGNhbGxpbmcgYmVmb3JlIG9uZXJyb3Igb3Igb250aW1lb3V0IGhhbmRsZXJzLFxuICAgICAgICAvLyBzbyB3ZSBzaG91bGQgY2FsbCBvbmxvYWRlbmQgb24gdGhlIG5leHQgJ3RpY2snXG4gICAgICAgIHNldFRpbWVvdXQob25sb2FkZW5kKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGJyb3dzZXIgcmVxdWVzdCBjYW5jZWxsYXRpb24gKGFzIG9wcG9zZWQgdG8gYSBtYW51YWwgY2FuY2VsbGF0aW9uKVxuICAgIHJlcXVlc3Qub25hYm9ydCA9IGZ1bmN0aW9uIGhhbmRsZUFib3J0KCkge1xuICAgICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKCdSZXF1ZXN0IGFib3J0ZWQnLCBBeGlvc0Vycm9yLkVDT05OQUJPUlRFRCwgY29uZmlnLCByZXF1ZXN0KSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH07XG5cbiAgICAvLyBIYW5kbGUgbG93IGxldmVsIG5ldHdvcmsgZXJyb3JzXG4gICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gaGFuZGxlRXJyb3IoKSB7XG4gICAgICAvLyBSZWFsIGVycm9ycyBhcmUgaGlkZGVuIGZyb20gdXMgYnkgdGhlIGJyb3dzZXJcbiAgICAgIC8vIG9uZXJyb3Igc2hvdWxkIG9ubHkgZmlyZSBpZiBpdCdzIGEgbmV0d29yayBlcnJvclxuICAgICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKCdOZXR3b3JrIEVycm9yJywgQXhpb3NFcnJvci5FUlJfTkVUV09SSywgY29uZmlnLCByZXF1ZXN0KSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH07XG5cbiAgICAvLyBIYW5kbGUgdGltZW91dFxuICAgIHJlcXVlc3Qub250aW1lb3V0ID0gZnVuY3Rpb24gaGFuZGxlVGltZW91dCgpIHtcbiAgICAgIGxldCB0aW1lb3V0RXJyb3JNZXNzYWdlID0gX2NvbmZpZy50aW1lb3V0ID8gJ3RpbWVvdXQgb2YgJyArIF9jb25maWcudGltZW91dCArICdtcyBleGNlZWRlZCcgOiAndGltZW91dCBleGNlZWRlZCc7XG4gICAgICBjb25zdCB0cmFuc2l0aW9uYWwgPSBfY29uZmlnLnRyYW5zaXRpb25hbCB8fCB0cmFuc2l0aW9uYWxEZWZhdWx0cztcbiAgICAgIGlmIChfY29uZmlnLnRpbWVvdXRFcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgdGltZW91dEVycm9yTWVzc2FnZSA9IF9jb25maWcudGltZW91dEVycm9yTWVzc2FnZTtcbiAgICAgIH1cbiAgICAgIHJlamVjdChuZXcgQXhpb3NFcnJvcihcbiAgICAgICAgdGltZW91dEVycm9yTWVzc2FnZSxcbiAgICAgICAgdHJhbnNpdGlvbmFsLmNsYXJpZnlUaW1lb3V0RXJyb3IgPyBBeGlvc0Vycm9yLkVUSU1FRE9VVCA6IEF4aW9zRXJyb3IuRUNPTk5BQk9SVEVELFxuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIFJlbW92ZSBDb250ZW50LVR5cGUgaWYgZGF0YSBpcyB1bmRlZmluZWRcbiAgICByZXF1ZXN0RGF0YSA9PT0gdW5kZWZpbmVkICYmIHJlcXVlc3RIZWFkZXJzLnNldENvbnRlbnRUeXBlKG51bGwpO1xuXG4gICAgLy8gQWRkIGhlYWRlcnMgdG8gdGhlIHJlcXVlc3RcbiAgICBpZiAoJ3NldFJlcXVlc3RIZWFkZXInIGluIHJlcXVlc3QpIHtcbiAgICAgIHV0aWxzLmZvckVhY2gocmVxdWVzdEhlYWRlcnMudG9KU09OKCksIGZ1bmN0aW9uIHNldFJlcXVlc3RIZWFkZXIodmFsLCBrZXkpIHtcbiAgICAgICAgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKGtleSwgdmFsKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFkZCB3aXRoQ3JlZGVudGlhbHMgdG8gcmVxdWVzdCBpZiBuZWVkZWRcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKF9jb25maWcud2l0aENyZWRlbnRpYWxzKSkge1xuICAgICAgcmVxdWVzdC53aXRoQ3JlZGVudGlhbHMgPSAhIV9jb25maWcud2l0aENyZWRlbnRpYWxzO1xuICAgIH1cblxuICAgIC8vIEFkZCByZXNwb25zZVR5cGUgdG8gcmVxdWVzdCBpZiBuZWVkZWRcbiAgICBpZiAocmVzcG9uc2VUeXBlICYmIHJlc3BvbnNlVHlwZSAhPT0gJ2pzb24nKSB7XG4gICAgICByZXF1ZXN0LnJlc3BvbnNlVHlwZSA9IF9jb25maWcucmVzcG9uc2VUeXBlO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBwcm9ncmVzcyBpZiBuZWVkZWRcbiAgICBpZiAob25Eb3dubG9hZFByb2dyZXNzKSB7XG4gICAgICAoW2Rvd25sb2FkVGhyb3R0bGVkLCBmbHVzaERvd25sb2FkXSA9IHByb2dyZXNzRXZlbnRSZWR1Y2VyKG9uRG93bmxvYWRQcm9ncmVzcywgdHJ1ZSkpO1xuICAgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIGRvd25sb2FkVGhyb3R0bGVkKTtcbiAgICB9XG5cbiAgICAvLyBOb3QgYWxsIGJyb3dzZXJzIHN1cHBvcnQgdXBsb2FkIGV2ZW50c1xuICAgIGlmIChvblVwbG9hZFByb2dyZXNzICYmIHJlcXVlc3QudXBsb2FkKSB7XG4gICAgICAoW3VwbG9hZFRocm90dGxlZCwgZmx1c2hVcGxvYWRdID0gcHJvZ3Jlc3NFdmVudFJlZHVjZXIob25VcGxvYWRQcm9ncmVzcykpO1xuXG4gICAgICByZXF1ZXN0LnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIHVwbG9hZFRocm90dGxlZCk7XG5cbiAgICAgIHJlcXVlc3QudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlbmQnLCBmbHVzaFVwbG9hZCk7XG4gICAgfVxuXG4gICAgaWYgKF9jb25maWcuY2FuY2VsVG9rZW4gfHwgX2NvbmZpZy5zaWduYWwpIHtcbiAgICAgIC8vIEhhbmRsZSBjYW5jZWxsYXRpb25cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgICBvbkNhbmNlbGVkID0gY2FuY2VsID0+IHtcbiAgICAgICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJlamVjdCghY2FuY2VsIHx8IGNhbmNlbC50eXBlID8gbmV3IENhbmNlbGVkRXJyb3IobnVsbCwgY29uZmlnLCByZXF1ZXN0KSA6IGNhbmNlbCk7XG4gICAgICAgIHJlcXVlc3QuYWJvcnQoKTtcbiAgICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgICB9O1xuXG4gICAgICBfY29uZmlnLmNhbmNlbFRva2VuICYmIF9jb25maWcuY2FuY2VsVG9rZW4uc3Vic2NyaWJlKG9uQ2FuY2VsZWQpO1xuICAgICAgaWYgKF9jb25maWcuc2lnbmFsKSB7XG4gICAgICAgIF9jb25maWcuc2lnbmFsLmFib3J0ZWQgPyBvbkNhbmNlbGVkKCkgOiBfY29uZmlnLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQ2FuY2VsZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHByb3RvY29sID0gcGFyc2VQcm90b2NvbChfY29uZmlnLnVybCk7XG5cbiAgICBpZiAocHJvdG9jb2wgJiYgcGxhdGZvcm0ucHJvdG9jb2xzLmluZGV4T2YocHJvdG9jb2wpID09PSAtMSkge1xuICAgICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKCdVbnN1cHBvcnRlZCBwcm90b2NvbCAnICsgcHJvdG9jb2wgKyAnOicsIEF4aW9zRXJyb3IuRVJSX0JBRF9SRVFVRVNULCBjb25maWcpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cblxuICAgIC8vIFNlbmQgdGhlIHJlcXVlc3RcbiAgICByZXF1ZXN0LnNlbmQocmVxdWVzdERhdGEgfHwgbnVsbCk7XG4gIH0pO1xufVxuIiwiaW1wb3J0IENhbmNlbGVkRXJyb3IgZnJvbSBcIi4uL2NhbmNlbC9DYW5jZWxlZEVycm9yLmpzXCI7XG5pbXBvcnQgQXhpb3NFcnJvciBmcm9tIFwiLi4vY29yZS9BeGlvc0Vycm9yLmpzXCI7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuXG5jb25zdCBjb21wb3NlU2lnbmFscyA9IChzaWduYWxzLCB0aW1lb3V0KSA9PiB7XG4gIGNvbnN0IHtsZW5ndGh9ID0gKHNpZ25hbHMgPSBzaWduYWxzID8gc2lnbmFscy5maWx0ZXIoQm9vbGVhbikgOiBbXSk7XG5cbiAgaWYgKHRpbWVvdXQgfHwgbGVuZ3RoKSB7XG4gICAgbGV0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICBsZXQgYWJvcnRlZDtcblxuICAgIGNvbnN0IG9uYWJvcnQgPSBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICBpZiAoIWFib3J0ZWQpIHtcbiAgICAgICAgYWJvcnRlZCA9IHRydWU7XG4gICAgICAgIHVuc3Vic2NyaWJlKCk7XG4gICAgICAgIGNvbnN0IGVyciA9IHJlYXNvbiBpbnN0YW5jZW9mIEVycm9yID8gcmVhc29uIDogdGhpcy5yZWFzb247XG4gICAgICAgIGNvbnRyb2xsZXIuYWJvcnQoZXJyIGluc3RhbmNlb2YgQXhpb3NFcnJvciA/IGVyciA6IG5ldyBDYW5jZWxlZEVycm9yKGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBlcnIpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgdGltZXIgPSB0aW1lb3V0ICYmIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGltZXIgPSBudWxsO1xuICAgICAgb25hYm9ydChuZXcgQXhpb3NFcnJvcihgdGltZW91dCAke3RpbWVvdXR9IG9mIG1zIGV4Y2VlZGVkYCwgQXhpb3NFcnJvci5FVElNRURPVVQpKVxuICAgIH0sIHRpbWVvdXQpXG5cbiAgICBjb25zdCB1bnN1YnNjcmliZSA9ICgpID0+IHtcbiAgICAgIGlmIChzaWduYWxzKSB7XG4gICAgICAgIHRpbWVyICYmIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgIHRpbWVyID0gbnVsbDtcbiAgICAgICAgc2lnbmFscy5mb3JFYWNoKHNpZ25hbCA9PiB7XG4gICAgICAgICAgc2lnbmFsLnVuc3Vic2NyaWJlID8gc2lnbmFsLnVuc3Vic2NyaWJlKG9uYWJvcnQpIDogc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25hYm9ydCk7XG4gICAgICAgIH0pO1xuICAgICAgICBzaWduYWxzID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzaWduYWxzLmZvckVhY2goKHNpZ25hbCkgPT4gc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25hYm9ydCkpO1xuXG4gICAgY29uc3Qge3NpZ25hbH0gPSBjb250cm9sbGVyO1xuXG4gICAgc2lnbmFsLnVuc3Vic2NyaWJlID0gKCkgPT4gdXRpbHMuYXNhcCh1bnN1YnNjcmliZSk7XG5cbiAgICByZXR1cm4gc2lnbmFsO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2VTaWduYWxzO1xuIiwiXG5leHBvcnQgY29uc3Qgc3RyZWFtQ2h1bmsgPSBmdW5jdGlvbiogKGNodW5rLCBjaHVua1NpemUpIHtcbiAgbGV0IGxlbiA9IGNodW5rLmJ5dGVMZW5ndGg7XG5cbiAgaWYgKCFjaHVua1NpemUgfHwgbGVuIDwgY2h1bmtTaXplKSB7XG4gICAgeWllbGQgY2h1bms7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IHBvcyA9IDA7XG4gIGxldCBlbmQ7XG5cbiAgd2hpbGUgKHBvcyA8IGxlbikge1xuICAgIGVuZCA9IHBvcyArIGNodW5rU2l6ZTtcbiAgICB5aWVsZCBjaHVuay5zbGljZShwb3MsIGVuZCk7XG4gICAgcG9zID0gZW5kO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCByZWFkQnl0ZXMgPSBhc3luYyBmdW5jdGlvbiogKGl0ZXJhYmxlLCBjaHVua1NpemUpIHtcbiAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiByZWFkU3RyZWFtKGl0ZXJhYmxlKSkge1xuICAgIHlpZWxkKiBzdHJlYW1DaHVuayhjaHVuaywgY2h1bmtTaXplKTtcbiAgfVxufVxuXG5jb25zdCByZWFkU3RyZWFtID0gYXN5bmMgZnVuY3Rpb24qIChzdHJlYW0pIHtcbiAgaWYgKHN0cmVhbVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0pIHtcbiAgICB5aWVsZCogc3RyZWFtO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTtcbiAgdHJ5IHtcbiAgICBmb3IgKDs7KSB7XG4gICAgICBjb25zdCB7ZG9uZSwgdmFsdWV9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTtcbiAgICAgIGlmIChkb25lKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgeWllbGQgdmFsdWU7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHJlYWRlci5jYW5jZWwoKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdHJhY2tTdHJlYW0gPSAoc3RyZWFtLCBjaHVua1NpemUsIG9uUHJvZ3Jlc3MsIG9uRmluaXNoKSA9PiB7XG4gIGNvbnN0IGl0ZXJhdG9yID0gcmVhZEJ5dGVzKHN0cmVhbSwgY2h1bmtTaXplKTtcblxuICBsZXQgYnl0ZXMgPSAwO1xuICBsZXQgZG9uZTtcbiAgbGV0IF9vbkZpbmlzaCA9IChlKSA9PiB7XG4gICAgaWYgKCFkb25lKSB7XG4gICAgICBkb25lID0gdHJ1ZTtcbiAgICAgIG9uRmluaXNoICYmIG9uRmluaXNoKGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgIGFzeW5jIHB1bGwoY29udHJvbGxlcikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qge2RvbmUsIHZhbHVlfSA9IGF3YWl0IGl0ZXJhdG9yLm5leHQoKTtcblxuICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgX29uRmluaXNoKCk7XG4gICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsZW4gPSB2YWx1ZS5ieXRlTGVuZ3RoO1xuICAgICAgICBpZiAob25Qcm9ncmVzcykge1xuICAgICAgICAgIGxldCBsb2FkZWRCeXRlcyA9IGJ5dGVzICs9IGxlbjtcbiAgICAgICAgICBvblByb2dyZXNzKGxvYWRlZEJ5dGVzKTtcbiAgICAgICAgfVxuICAgICAgICBjb250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkodmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBfb25GaW5pc2goZXJyKTtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH0sXG4gICAgY2FuY2VsKHJlYXNvbikge1xuICAgICAgX29uRmluaXNoKHJlYXNvbik7XG4gICAgICByZXR1cm4gaXRlcmF0b3IucmV0dXJuKCk7XG4gICAgfVxuICB9LCB7XG4gICAgaGlnaFdhdGVyTWFyazogMlxuICB9KVxufVxuIiwiaW1wb3J0IHBsYXRmb3JtIGZyb20gXCIuLi9wbGF0Zm9ybS9pbmRleC5qc1wiO1xuaW1wb3J0IHV0aWxzIGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSBcIi4uL2NvcmUvQXhpb3NFcnJvci5qc1wiO1xuaW1wb3J0IGNvbXBvc2VTaWduYWxzIGZyb20gXCIuLi9oZWxwZXJzL2NvbXBvc2VTaWduYWxzLmpzXCI7XG5pbXBvcnQge3RyYWNrU3RyZWFtfSBmcm9tIFwiLi4vaGVscGVycy90cmFja1N0cmVhbS5qc1wiO1xuaW1wb3J0IEF4aW9zSGVhZGVycyBmcm9tIFwiLi4vY29yZS9BeGlvc0hlYWRlcnMuanNcIjtcbmltcG9ydCB7cHJvZ3Jlc3NFdmVudFJlZHVjZXIsIHByb2dyZXNzRXZlbnREZWNvcmF0b3IsIGFzeW5jRGVjb3JhdG9yfSBmcm9tIFwiLi4vaGVscGVycy9wcm9ncmVzc0V2ZW50UmVkdWNlci5qc1wiO1xuaW1wb3J0IHJlc29sdmVDb25maWcgZnJvbSBcIi4uL2hlbHBlcnMvcmVzb2x2ZUNvbmZpZy5qc1wiO1xuaW1wb3J0IHNldHRsZSBmcm9tIFwiLi4vY29yZS9zZXR0bGUuanNcIjtcblxuY29uc3QgaXNGZXRjaFN1cHBvcnRlZCA9IHR5cGVvZiBmZXRjaCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgUmVxdWVzdCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgUmVzcG9uc2UgPT09ICdmdW5jdGlvbic7XG5jb25zdCBpc1JlYWRhYmxlU3RyZWFtU3VwcG9ydGVkID0gaXNGZXRjaFN1cHBvcnRlZCAmJiB0eXBlb2YgUmVhZGFibGVTdHJlYW0gPT09ICdmdW5jdGlvbic7XG5cbi8vIHVzZWQgb25seSBpbnNpZGUgdGhlIGZldGNoIGFkYXB0ZXJcbmNvbnN0IGVuY29kZVRleHQgPSBpc0ZldGNoU3VwcG9ydGVkICYmICh0eXBlb2YgVGV4dEVuY29kZXIgPT09ICdmdW5jdGlvbicgP1xuICAgICgoZW5jb2RlcikgPT4gKHN0cikgPT4gZW5jb2Rlci5lbmNvZGUoc3RyKSkobmV3IFRleHRFbmNvZGVyKCkpIDpcbiAgICBhc3luYyAoc3RyKSA9PiBuZXcgVWludDhBcnJheShhd2FpdCBuZXcgUmVzcG9uc2Uoc3RyKS5hcnJheUJ1ZmZlcigpKVxuKTtcblxuY29uc3QgdGVzdCA9IChmbiwgLi4uYXJncykgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiAhIWZuKC4uLmFyZ3MpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuY29uc3Qgc3VwcG9ydHNSZXF1ZXN0U3RyZWFtID0gaXNSZWFkYWJsZVN0cmVhbVN1cHBvcnRlZCAmJiB0ZXN0KCgpID0+IHtcbiAgbGV0IGR1cGxleEFjY2Vzc2VkID0gZmFsc2U7XG5cbiAgY29uc3QgaGFzQ29udGVudFR5cGUgPSBuZXcgUmVxdWVzdChwbGF0Zm9ybS5vcmlnaW4sIHtcbiAgICBib2R5OiBuZXcgUmVhZGFibGVTdHJlYW0oKSxcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBnZXQgZHVwbGV4KCkge1xuICAgICAgZHVwbGV4QWNjZXNzZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuICdoYWxmJztcbiAgICB9LFxuICB9KS5oZWFkZXJzLmhhcygnQ29udGVudC1UeXBlJyk7XG5cbiAgcmV0dXJuIGR1cGxleEFjY2Vzc2VkICYmICFoYXNDb250ZW50VHlwZTtcbn0pO1xuXG5jb25zdCBERUZBVUxUX0NIVU5LX1NJWkUgPSA2NCAqIDEwMjQ7XG5cbmNvbnN0IHN1cHBvcnRzUmVzcG9uc2VTdHJlYW0gPSBpc1JlYWRhYmxlU3RyZWFtU3VwcG9ydGVkICYmXG4gIHRlc3QoKCkgPT4gdXRpbHMuaXNSZWFkYWJsZVN0cmVhbShuZXcgUmVzcG9uc2UoJycpLmJvZHkpKTtcblxuXG5jb25zdCByZXNvbHZlcnMgPSB7XG4gIHN0cmVhbTogc3VwcG9ydHNSZXNwb25zZVN0cmVhbSAmJiAoKHJlcykgPT4gcmVzLmJvZHkpXG59O1xuXG5pc0ZldGNoU3VwcG9ydGVkICYmICgoKHJlcykgPT4ge1xuICBbJ3RleHQnLCAnYXJyYXlCdWZmZXInLCAnYmxvYicsICdmb3JtRGF0YScsICdzdHJlYW0nXS5mb3JFYWNoKHR5cGUgPT4ge1xuICAgICFyZXNvbHZlcnNbdHlwZV0gJiYgKHJlc29sdmVyc1t0eXBlXSA9IHV0aWxzLmlzRnVuY3Rpb24ocmVzW3R5cGVdKSA/IChyZXMpID0+IHJlc1t0eXBlXSgpIDpcbiAgICAgIChfLCBjb25maWcpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoYFJlc3BvbnNlIHR5cGUgJyR7dHlwZX0nIGlzIG5vdCBzdXBwb3J0ZWRgLCBBeGlvc0Vycm9yLkVSUl9OT1RfU1VQUE9SVCwgY29uZmlnKTtcbiAgICAgIH0pXG4gIH0pO1xufSkobmV3IFJlc3BvbnNlKSk7XG5cbmNvbnN0IGdldEJvZHlMZW5ndGggPSBhc3luYyAoYm9keSkgPT4ge1xuICBpZiAoYm9keSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBpZih1dGlscy5pc0Jsb2IoYm9keSkpIHtcbiAgICByZXR1cm4gYm9keS5zaXplO1xuICB9XG5cbiAgaWYodXRpbHMuaXNTcGVjQ29tcGxpYW50Rm9ybShib2R5KSkge1xuICAgIGNvbnN0IF9yZXF1ZXN0ID0gbmV3IFJlcXVlc3QocGxhdGZvcm0ub3JpZ2luLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHksXG4gICAgfSk7XG4gICAgcmV0dXJuIChhd2FpdCBfcmVxdWVzdC5hcnJheUJ1ZmZlcigpKS5ieXRlTGVuZ3RoO1xuICB9XG5cbiAgaWYodXRpbHMuaXNBcnJheUJ1ZmZlclZpZXcoYm9keSkgfHwgdXRpbHMuaXNBcnJheUJ1ZmZlcihib2R5KSkge1xuICAgIHJldHVybiBib2R5LmJ5dGVMZW5ndGg7XG4gIH1cblxuICBpZih1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhib2R5KSkge1xuICAgIGJvZHkgPSBib2R5ICsgJyc7XG4gIH1cblxuICBpZih1dGlscy5pc1N0cmluZyhib2R5KSkge1xuICAgIHJldHVybiAoYXdhaXQgZW5jb2RlVGV4dChib2R5KSkuYnl0ZUxlbmd0aDtcbiAgfVxufVxuXG5jb25zdCByZXNvbHZlQm9keUxlbmd0aCA9IGFzeW5jIChoZWFkZXJzLCBib2R5KSA9PiB7XG4gIGNvbnN0IGxlbmd0aCA9IHV0aWxzLnRvRmluaXRlTnVtYmVyKGhlYWRlcnMuZ2V0Q29udGVudExlbmd0aCgpKTtcblxuICByZXR1cm4gbGVuZ3RoID09IG51bGwgPyBnZXRCb2R5TGVuZ3RoKGJvZHkpIDogbGVuZ3RoO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0ZldGNoU3VwcG9ydGVkICYmIChhc3luYyAoY29uZmlnKSA9PiB7XG4gIGxldCB7XG4gICAgdXJsLFxuICAgIG1ldGhvZCxcbiAgICBkYXRhLFxuICAgIHNpZ25hbCxcbiAgICBjYW5jZWxUb2tlbixcbiAgICB0aW1lb3V0LFxuICAgIG9uRG93bmxvYWRQcm9ncmVzcyxcbiAgICBvblVwbG9hZFByb2dyZXNzLFxuICAgIHJlc3BvbnNlVHlwZSxcbiAgICBoZWFkZXJzLFxuICAgIHdpdGhDcmVkZW50aWFscyA9ICdzYW1lLW9yaWdpbicsXG4gICAgZmV0Y2hPcHRpb25zXG4gIH0gPSByZXNvbHZlQ29uZmlnKGNvbmZpZyk7XG5cbiAgcmVzcG9uc2VUeXBlID0gcmVzcG9uc2VUeXBlID8gKHJlc3BvbnNlVHlwZSArICcnKS50b0xvd2VyQ2FzZSgpIDogJ3RleHQnO1xuXG4gIGxldCBjb21wb3NlZFNpZ25hbCA9IGNvbXBvc2VTaWduYWxzKFtzaWduYWwsIGNhbmNlbFRva2VuICYmIGNhbmNlbFRva2VuLnRvQWJvcnRTaWduYWwoKV0sIHRpbWVvdXQpO1xuXG4gIGxldCByZXF1ZXN0O1xuXG4gIGNvbnN0IHVuc3Vic2NyaWJlID0gY29tcG9zZWRTaWduYWwgJiYgY29tcG9zZWRTaWduYWwudW5zdWJzY3JpYmUgJiYgKCgpID0+IHtcbiAgICAgIGNvbXBvc2VkU2lnbmFsLnVuc3Vic2NyaWJlKCk7XG4gIH0pO1xuXG4gIGxldCByZXF1ZXN0Q29udGVudExlbmd0aDtcblxuICB0cnkge1xuICAgIGlmIChcbiAgICAgIG9uVXBsb2FkUHJvZ3Jlc3MgJiYgc3VwcG9ydHNSZXF1ZXN0U3RyZWFtICYmIG1ldGhvZCAhPT0gJ2dldCcgJiYgbWV0aG9kICE9PSAnaGVhZCcgJiZcbiAgICAgIChyZXF1ZXN0Q29udGVudExlbmd0aCA9IGF3YWl0IHJlc29sdmVCb2R5TGVuZ3RoKGhlYWRlcnMsIGRhdGEpKSAhPT0gMFxuICAgICkge1xuICAgICAgbGV0IF9yZXF1ZXN0ID0gbmV3IFJlcXVlc3QodXJsLCB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBib2R5OiBkYXRhLFxuICAgICAgICBkdXBsZXg6IFwiaGFsZlwiXG4gICAgICB9KTtcblxuICAgICAgbGV0IGNvbnRlbnRUeXBlSGVhZGVyO1xuXG4gICAgICBpZiAodXRpbHMuaXNGb3JtRGF0YShkYXRhKSAmJiAoY29udGVudFR5cGVIZWFkZXIgPSBfcmVxdWVzdC5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykpKSB7XG4gICAgICAgIGhlYWRlcnMuc2V0Q29udGVudFR5cGUoY29udGVudFR5cGVIZWFkZXIpXG4gICAgICB9XG5cbiAgICAgIGlmIChfcmVxdWVzdC5ib2R5KSB7XG4gICAgICAgIGNvbnN0IFtvblByb2dyZXNzLCBmbHVzaF0gPSBwcm9ncmVzc0V2ZW50RGVjb3JhdG9yKFxuICAgICAgICAgIHJlcXVlc3RDb250ZW50TGVuZ3RoLFxuICAgICAgICAgIHByb2dyZXNzRXZlbnRSZWR1Y2VyKGFzeW5jRGVjb3JhdG9yKG9uVXBsb2FkUHJvZ3Jlc3MpKVxuICAgICAgICApO1xuXG4gICAgICAgIGRhdGEgPSB0cmFja1N0cmVhbShfcmVxdWVzdC5ib2R5LCBERUZBVUxUX0NIVU5LX1NJWkUsIG9uUHJvZ3Jlc3MsIGZsdXNoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXV0aWxzLmlzU3RyaW5nKHdpdGhDcmVkZW50aWFscykpIHtcbiAgICAgIHdpdGhDcmVkZW50aWFscyA9IHdpdGhDcmVkZW50aWFscyA/ICdpbmNsdWRlJyA6ICdvbWl0JztcbiAgICB9XG5cbiAgICAvLyBDbG91ZGZsYXJlIFdvcmtlcnMgdGhyb3dzIHdoZW4gY3JlZGVudGlhbHMgYXJlIGRlZmluZWRcbiAgICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2Nsb3VkZmxhcmUvd29ya2VyZC9pc3N1ZXMvOTAyXG4gICAgY29uc3QgaXNDcmVkZW50aWFsc1N1cHBvcnRlZCA9IFwiY3JlZGVudGlhbHNcIiBpbiBSZXF1ZXN0LnByb3RvdHlwZTtcbiAgICByZXF1ZXN0ID0gbmV3IFJlcXVlc3QodXJsLCB7XG4gICAgICAuLi5mZXRjaE9wdGlvbnMsXG4gICAgICBzaWduYWw6IGNvbXBvc2VkU2lnbmFsLFxuICAgICAgbWV0aG9kOiBtZXRob2QudG9VcHBlckNhc2UoKSxcbiAgICAgIGhlYWRlcnM6IGhlYWRlcnMubm9ybWFsaXplKCkudG9KU09OKCksXG4gICAgICBib2R5OiBkYXRhLFxuICAgICAgZHVwbGV4OiBcImhhbGZcIixcbiAgICAgIGNyZWRlbnRpYWxzOiBpc0NyZWRlbnRpYWxzU3VwcG9ydGVkID8gd2l0aENyZWRlbnRpYWxzIDogdW5kZWZpbmVkXG4gICAgfSk7XG5cbiAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChyZXF1ZXN0KTtcblxuICAgIGNvbnN0IGlzU3RyZWFtUmVzcG9uc2UgPSBzdXBwb3J0c1Jlc3BvbnNlU3RyZWFtICYmIChyZXNwb25zZVR5cGUgPT09ICdzdHJlYW0nIHx8IHJlc3BvbnNlVHlwZSA9PT0gJ3Jlc3BvbnNlJyk7XG5cbiAgICBpZiAoc3VwcG9ydHNSZXNwb25zZVN0cmVhbSAmJiAob25Eb3dubG9hZFByb2dyZXNzIHx8IChpc1N0cmVhbVJlc3BvbnNlICYmIHVuc3Vic2NyaWJlKSkpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7fTtcblxuICAgICAgWydzdGF0dXMnLCAnc3RhdHVzVGV4dCcsICdoZWFkZXJzJ10uZm9yRWFjaChwcm9wID0+IHtcbiAgICAgICAgb3B0aW9uc1twcm9wXSA9IHJlc3BvbnNlW3Byb3BdO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlQ29udGVudExlbmd0aCA9IHV0aWxzLnRvRmluaXRlTnVtYmVyKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LWxlbmd0aCcpKTtcblxuICAgICAgY29uc3QgW29uUHJvZ3Jlc3MsIGZsdXNoXSA9IG9uRG93bmxvYWRQcm9ncmVzcyAmJiBwcm9ncmVzc0V2ZW50RGVjb3JhdG9yKFxuICAgICAgICByZXNwb25zZUNvbnRlbnRMZW5ndGgsXG4gICAgICAgIHByb2dyZXNzRXZlbnRSZWR1Y2VyKGFzeW5jRGVjb3JhdG9yKG9uRG93bmxvYWRQcm9ncmVzcyksIHRydWUpXG4gICAgICApIHx8IFtdO1xuXG4gICAgICByZXNwb25zZSA9IG5ldyBSZXNwb25zZShcbiAgICAgICAgdHJhY2tTdHJlYW0ocmVzcG9uc2UuYm9keSwgREVGQVVMVF9DSFVOS19TSVpFLCBvblByb2dyZXNzLCAoKSA9PiB7XG4gICAgICAgICAgZmx1c2ggJiYgZmx1c2goKTtcbiAgICAgICAgICB1bnN1YnNjcmliZSAmJiB1bnN1YnNjcmliZSgpO1xuICAgICAgICB9KSxcbiAgICAgICAgb3B0aW9uc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXNwb25zZVR5cGUgPSByZXNwb25zZVR5cGUgfHwgJ3RleHQnO1xuXG4gICAgbGV0IHJlc3BvbnNlRGF0YSA9IGF3YWl0IHJlc29sdmVyc1t1dGlscy5maW5kS2V5KHJlc29sdmVycywgcmVzcG9uc2VUeXBlKSB8fCAndGV4dCddKHJlc3BvbnNlLCBjb25maWcpO1xuXG4gICAgIWlzU3RyZWFtUmVzcG9uc2UgJiYgdW5zdWJzY3JpYmUgJiYgdW5zdWJzY3JpYmUoKTtcblxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB7XG4gICAgICAgIGRhdGE6IHJlc3BvbnNlRGF0YSxcbiAgICAgICAgaGVhZGVyczogQXhpb3NIZWFkZXJzLmZyb20ocmVzcG9uc2UuaGVhZGVycyksXG4gICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgICBzdGF0dXNUZXh0OiByZXNwb25zZS5zdGF0dXNUZXh0LFxuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlcXVlc3RcbiAgICAgIH0pXG4gICAgfSlcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdW5zdWJzY3JpYmUgJiYgdW5zdWJzY3JpYmUoKTtcblxuICAgIGlmIChlcnIgJiYgZXJyLm5hbWUgPT09ICdUeXBlRXJyb3InICYmIC9mZXRjaC9pLnRlc3QoZXJyLm1lc3NhZ2UpKSB7XG4gICAgICB0aHJvdyBPYmplY3QuYXNzaWduKFxuICAgICAgICBuZXcgQXhpb3NFcnJvcignTmV0d29yayBFcnJvcicsIEF4aW9zRXJyb3IuRVJSX05FVFdPUkssIGNvbmZpZywgcmVxdWVzdCksXG4gICAgICAgIHtcbiAgICAgICAgICBjYXVzZTogZXJyLmNhdXNlIHx8IGVyclxuICAgICAgICB9XG4gICAgICApXG4gICAgfVxuXG4gICAgdGhyb3cgQXhpb3NFcnJvci5mcm9tKGVyciwgZXJyICYmIGVyci5jb2RlLCBjb25maWcsIHJlcXVlc3QpO1xuICB9XG59KTtcblxuXG4iLCJpbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuaW1wb3J0IGh0dHBBZGFwdGVyIGZyb20gJy4vaHR0cC5qcyc7XG5pbXBvcnQgeGhyQWRhcHRlciBmcm9tICcuL3hoci5qcyc7XG5pbXBvcnQgZmV0Y2hBZGFwdGVyIGZyb20gJy4vZmV0Y2guanMnO1xuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSBcIi4uL2NvcmUvQXhpb3NFcnJvci5qc1wiO1xuXG5jb25zdCBrbm93bkFkYXB0ZXJzID0ge1xuICBodHRwOiBodHRwQWRhcHRlcixcbiAgeGhyOiB4aHJBZGFwdGVyLFxuICBmZXRjaDogZmV0Y2hBZGFwdGVyXG59XG5cbnV0aWxzLmZvckVhY2goa25vd25BZGFwdGVycywgKGZuLCB2YWx1ZSkgPT4ge1xuICBpZiAoZm4pIHtcbiAgICB0cnkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZuLCAnbmFtZScsIHt2YWx1ZX0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eVxuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm4sICdhZGFwdGVyTmFtZScsIHt2YWx1ZX0pO1xuICB9XG59KTtcblxuY29uc3QgcmVuZGVyUmVhc29uID0gKHJlYXNvbikgPT4gYC0gJHtyZWFzb259YDtcblxuY29uc3QgaXNSZXNvbHZlZEhhbmRsZSA9IChhZGFwdGVyKSA9PiB1dGlscy5pc0Z1bmN0aW9uKGFkYXB0ZXIpIHx8IGFkYXB0ZXIgPT09IG51bGwgfHwgYWRhcHRlciA9PT0gZmFsc2U7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0QWRhcHRlcjogKGFkYXB0ZXJzKSA9PiB7XG4gICAgYWRhcHRlcnMgPSB1dGlscy5pc0FycmF5KGFkYXB0ZXJzKSA/IGFkYXB0ZXJzIDogW2FkYXB0ZXJzXTtcblxuICAgIGNvbnN0IHtsZW5ndGh9ID0gYWRhcHRlcnM7XG4gICAgbGV0IG5hbWVPckFkYXB0ZXI7XG4gICAgbGV0IGFkYXB0ZXI7XG5cbiAgICBjb25zdCByZWplY3RlZFJlYXNvbnMgPSB7fTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIG5hbWVPckFkYXB0ZXIgPSBhZGFwdGVyc1tpXTtcbiAgICAgIGxldCBpZDtcblxuICAgICAgYWRhcHRlciA9IG5hbWVPckFkYXB0ZXI7XG5cbiAgICAgIGlmICghaXNSZXNvbHZlZEhhbmRsZShuYW1lT3JBZGFwdGVyKSkge1xuICAgICAgICBhZGFwdGVyID0ga25vd25BZGFwdGVyc1soaWQgPSBTdHJpbmcobmFtZU9yQWRhcHRlcikpLnRvTG93ZXJDYXNlKCldO1xuXG4gICAgICAgIGlmIChhZGFwdGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcihgVW5rbm93biBhZGFwdGVyICcke2lkfSdgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYWRhcHRlcikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcmVqZWN0ZWRSZWFzb25zW2lkIHx8ICcjJyArIGldID0gYWRhcHRlcjtcbiAgICB9XG5cbiAgICBpZiAoIWFkYXB0ZXIpIHtcblxuICAgICAgY29uc3QgcmVhc29ucyA9IE9iamVjdC5lbnRyaWVzKHJlamVjdGVkUmVhc29ucylcbiAgICAgICAgLm1hcCgoW2lkLCBzdGF0ZV0pID0+IGBhZGFwdGVyICR7aWR9IGAgK1xuICAgICAgICAgIChzdGF0ZSA9PT0gZmFsc2UgPyAnaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgZW52aXJvbm1lbnQnIDogJ2lzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGJ1aWxkJylcbiAgICAgICAgKTtcblxuICAgICAgbGV0IHMgPSBsZW5ndGggP1xuICAgICAgICAocmVhc29ucy5sZW5ndGggPiAxID8gJ3NpbmNlIDpcXG4nICsgcmVhc29ucy5tYXAocmVuZGVyUmVhc29uKS5qb2luKCdcXG4nKSA6ICcgJyArIHJlbmRlclJlYXNvbihyZWFzb25zWzBdKSkgOlxuICAgICAgICAnYXMgbm8gYWRhcHRlciBzcGVjaWZpZWQnO1xuXG4gICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcihcbiAgICAgICAgYFRoZXJlIGlzIG5vIHN1aXRhYmxlIGFkYXB0ZXIgdG8gZGlzcGF0Y2ggdGhlIHJlcXVlc3QgYCArIHMsXG4gICAgICAgICdFUlJfTk9UX1NVUFBPUlQnXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBhZGFwdGVyO1xuICB9LFxuICBhZGFwdGVyczoga25vd25BZGFwdGVyc1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdHJhbnNmb3JtRGF0YSBmcm9tICcuL3RyYW5zZm9ybURhdGEuanMnO1xuaW1wb3J0IGlzQ2FuY2VsIGZyb20gJy4uL2NhbmNlbC9pc0NhbmNlbC5qcyc7XG5pbXBvcnQgZGVmYXVsdHMgZnJvbSAnLi4vZGVmYXVsdHMvaW5kZXguanMnO1xuaW1wb3J0IENhbmNlbGVkRXJyb3IgZnJvbSAnLi4vY2FuY2VsL0NhbmNlbGVkRXJyb3IuanMnO1xuaW1wb3J0IEF4aW9zSGVhZGVycyBmcm9tICcuLi9jb3JlL0F4aW9zSGVhZGVycy5qcyc7XG5pbXBvcnQgYWRhcHRlcnMgZnJvbSBcIi4uL2FkYXB0ZXJzL2FkYXB0ZXJzLmpzXCI7XG5cbi8qKlxuICogVGhyb3dzIGEgYENhbmNlbGVkRXJyb3JgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnIHRoYXQgaXMgdG8gYmUgdXNlZCBmb3IgdGhlIHJlcXVlc3RcbiAqXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpIHtcbiAgaWYgKGNvbmZpZy5jYW5jZWxUb2tlbikge1xuICAgIGNvbmZpZy5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCk7XG4gIH1cblxuICBpZiAoY29uZmlnLnNpZ25hbCAmJiBjb25maWcuc2lnbmFsLmFib3J0ZWQpIHtcbiAgICB0aHJvdyBuZXcgQ2FuY2VsZWRFcnJvcihudWxsLCBjb25maWcpO1xuICB9XG59XG5cbi8qKlxuICogRGlzcGF0Y2ggYSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIgdXNpbmcgdGhlIGNvbmZpZ3VyZWQgYWRhcHRlci5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gY29uZmlnIFRoZSBjb25maWcgdGhhdCBpcyB0byBiZSB1c2VkIGZvciB0aGUgcmVxdWVzdFxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlfSBUaGUgUHJvbWlzZSB0byBiZSBmdWxmaWxsZWRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlzcGF0Y2hSZXF1ZXN0KGNvbmZpZykge1xuICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgY29uZmlnLmhlYWRlcnMgPSBBeGlvc0hlYWRlcnMuZnJvbShjb25maWcuaGVhZGVycyk7XG5cbiAgLy8gVHJhbnNmb3JtIHJlcXVlc3QgZGF0YVxuICBjb25maWcuZGF0YSA9IHRyYW5zZm9ybURhdGEuY2FsbChcbiAgICBjb25maWcsXG4gICAgY29uZmlnLnRyYW5zZm9ybVJlcXVlc3RcbiAgKTtcblxuICBpZiAoWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLmluZGV4T2YoY29uZmlnLm1ldGhvZCkgIT09IC0xKSB7XG4gICAgY29uZmlnLmhlYWRlcnMuc2V0Q29udGVudFR5cGUoJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsIGZhbHNlKTtcbiAgfVxuXG4gIGNvbnN0IGFkYXB0ZXIgPSBhZGFwdGVycy5nZXRBZGFwdGVyKGNvbmZpZy5hZGFwdGVyIHx8IGRlZmF1bHRzLmFkYXB0ZXIpO1xuXG4gIHJldHVybiBhZGFwdGVyKGNvbmZpZykudGhlbihmdW5jdGlvbiBvbkFkYXB0ZXJSZXNvbHV0aW9uKHJlc3BvbnNlKSB7XG4gICAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcbiAgICByZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxuICAgICAgY29uZmlnLFxuICAgICAgY29uZmlnLnRyYW5zZm9ybVJlc3BvbnNlLFxuICAgICAgcmVzcG9uc2VcbiAgICApO1xuXG4gICAgcmVzcG9uc2UuaGVhZGVycyA9IEF4aW9zSGVhZGVycy5mcm9tKHJlc3BvbnNlLmhlYWRlcnMpO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9LCBmdW5jdGlvbiBvbkFkYXB0ZXJSZWplY3Rpb24ocmVhc29uKSB7XG4gICAgaWYgKCFpc0NhbmNlbChyZWFzb24pKSB7XG4gICAgICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgICAgIC8vIFRyYW5zZm9ybSByZXNwb25zZSBkYXRhXG4gICAgICBpZiAocmVhc29uICYmIHJlYXNvbi5yZXNwb25zZSkge1xuICAgICAgICByZWFzb24ucmVzcG9uc2UuZGF0YSA9IHRyYW5zZm9ybURhdGEuY2FsbChcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgY29uZmlnLnRyYW5zZm9ybVJlc3BvbnNlLFxuICAgICAgICAgIHJlYXNvbi5yZXNwb25zZVxuICAgICAgICApO1xuICAgICAgICByZWFzb24ucmVzcG9uc2UuaGVhZGVycyA9IEF4aW9zSGVhZGVycy5mcm9tKHJlYXNvbi5yZXNwb25zZS5oZWFkZXJzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgfSk7XG59XG4iLCJleHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiMS43LjlcIjsiLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7VkVSU0lPTn0gZnJvbSAnLi4vZW52L2RhdGEuanMnO1xuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSAnLi4vY29yZS9BeGlvc0Vycm9yLmpzJztcblxuY29uc3QgdmFsaWRhdG9ycyA9IHt9O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuWydvYmplY3QnLCAnYm9vbGVhbicsICdudW1iZXInLCAnZnVuY3Rpb24nLCAnc3RyaW5nJywgJ3N5bWJvbCddLmZvckVhY2goKHR5cGUsIGkpID0+IHtcbiAgdmFsaWRhdG9yc1t0eXBlXSA9IGZ1bmN0aW9uIHZhbGlkYXRvcih0aGluZykge1xuICAgIHJldHVybiB0eXBlb2YgdGhpbmcgPT09IHR5cGUgfHwgJ2EnICsgKGkgPCAxID8gJ24gJyA6ICcgJykgKyB0eXBlO1xuICB9O1xufSk7XG5cbmNvbnN0IGRlcHJlY2F0ZWRXYXJuaW5ncyA9IHt9O1xuXG4vKipcbiAqIFRyYW5zaXRpb25hbCBvcHRpb24gdmFsaWRhdG9yXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbnxib29sZWFuP30gdmFsaWRhdG9yIC0gc2V0IHRvIGZhbHNlIGlmIHRoZSB0cmFuc2l0aW9uYWwgb3B0aW9uIGhhcyBiZWVuIHJlbW92ZWRcbiAqIEBwYXJhbSB7c3RyaW5nP30gdmVyc2lvbiAtIGRlcHJlY2F0ZWQgdmVyc2lvbiAvIHJlbW92ZWQgc2luY2UgdmVyc2lvblxuICogQHBhcmFtIHtzdHJpbmc/fSBtZXNzYWdlIC0gc29tZSBtZXNzYWdlIHdpdGggYWRkaXRpb25hbCBpbmZvXG4gKlxuICogQHJldHVybnMge2Z1bmN0aW9ufVxuICovXG52YWxpZGF0b3JzLnRyYW5zaXRpb25hbCA9IGZ1bmN0aW9uIHRyYW5zaXRpb25hbCh2YWxpZGF0b3IsIHZlcnNpb24sIG1lc3NhZ2UpIHtcbiAgZnVuY3Rpb24gZm9ybWF0TWVzc2FnZShvcHQsIGRlc2MpIHtcbiAgICByZXR1cm4gJ1tBeGlvcyB2JyArIFZFUlNJT04gKyAnXSBUcmFuc2l0aW9uYWwgb3B0aW9uIFxcJycgKyBvcHQgKyAnXFwnJyArIGRlc2MgKyAobWVzc2FnZSA/ICcuICcgKyBtZXNzYWdlIDogJycpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgcmV0dXJuICh2YWx1ZSwgb3B0LCBvcHRzKSA9PiB7XG4gICAgaWYgKHZhbGlkYXRvciA9PT0gZmFsc2UpIHtcbiAgICAgIHRocm93IG5ldyBBeGlvc0Vycm9yKFxuICAgICAgICBmb3JtYXRNZXNzYWdlKG9wdCwgJyBoYXMgYmVlbiByZW1vdmVkJyArICh2ZXJzaW9uID8gJyBpbiAnICsgdmVyc2lvbiA6ICcnKSksXG4gICAgICAgIEF4aW9zRXJyb3IuRVJSX0RFUFJFQ0FURURcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHZlcnNpb24gJiYgIWRlcHJlY2F0ZWRXYXJuaW5nc1tvcHRdKSB7XG4gICAgICBkZXByZWNhdGVkV2FybmluZ3Nbb3B0XSA9IHRydWU7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBmb3JtYXRNZXNzYWdlKFxuICAgICAgICAgIG9wdCxcbiAgICAgICAgICAnIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdicgKyB2ZXJzaW9uICsgJyBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSdcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdG9yID8gdmFsaWRhdG9yKHZhbHVlLCBvcHQsIG9wdHMpIDogdHJ1ZTtcbiAgfTtcbn07XG5cbnZhbGlkYXRvcnMuc3BlbGxpbmcgPSBmdW5jdGlvbiBzcGVsbGluZyhjb3JyZWN0U3BlbGxpbmcpIHtcbiAgcmV0dXJuICh2YWx1ZSwgb3B0KSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLndhcm4oYCR7b3B0fSBpcyBsaWtlbHkgYSBtaXNzcGVsbGluZyBvZiAke2NvcnJlY3RTcGVsbGluZ31gKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuLyoqXG4gKiBBc3NlcnQgb2JqZWN0J3MgcHJvcGVydGllcyB0eXBlXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAqIEBwYXJhbSB7b2JqZWN0fSBzY2hlbWFcbiAqIEBwYXJhbSB7Ym9vbGVhbj99IGFsbG93VW5rbm93blxuICpcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cblxuZnVuY3Rpb24gYXNzZXJ0T3B0aW9ucyhvcHRpb25zLCBzY2hlbWEsIGFsbG93VW5rbm93bikge1xuICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnLCBBeGlvc0Vycm9yLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtcbiAgfVxuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob3B0aW9ucyk7XG4gIGxldCBpID0ga2V5cy5sZW5ndGg7XG4gIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgY29uc3Qgb3B0ID0ga2V5c1tpXTtcbiAgICBjb25zdCB2YWxpZGF0b3IgPSBzY2hlbWFbb3B0XTtcbiAgICBpZiAodmFsaWRhdG9yKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IG9wdGlvbnNbb3B0XTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsaWRhdG9yKHZhbHVlLCBvcHQsIG9wdGlvbnMpO1xuICAgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSkge1xuICAgICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcignb3B0aW9uICcgKyBvcHQgKyAnIG11c3QgYmUgJyArIHJlc3VsdCwgQXhpb3NFcnJvci5FUlJfQkFEX09QVElPTl9WQUxVRSk7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGFsbG93VW5rbm93biAhPT0gdHJ1ZSkge1xuICAgICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoJ1Vua25vd24gb3B0aW9uICcgKyBvcHQsIEF4aW9zRXJyb3IuRVJSX0JBRF9PUFRJT04pO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGFzc2VydE9wdGlvbnMsXG4gIHZhbGlkYXRvcnNcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLy4uL3V0aWxzLmpzJztcbmltcG9ydCBidWlsZFVSTCBmcm9tICcuLi9oZWxwZXJzL2J1aWxkVVJMLmpzJztcbmltcG9ydCBJbnRlcmNlcHRvck1hbmFnZXIgZnJvbSAnLi9JbnRlcmNlcHRvck1hbmFnZXIuanMnO1xuaW1wb3J0IGRpc3BhdGNoUmVxdWVzdCBmcm9tICcuL2Rpc3BhdGNoUmVxdWVzdC5qcyc7XG5pbXBvcnQgbWVyZ2VDb25maWcgZnJvbSAnLi9tZXJnZUNvbmZpZy5qcyc7XG5pbXBvcnQgYnVpbGRGdWxsUGF0aCBmcm9tICcuL2J1aWxkRnVsbFBhdGguanMnO1xuaW1wb3J0IHZhbGlkYXRvciBmcm9tICcuLi9oZWxwZXJzL3ZhbGlkYXRvci5qcyc7XG5pbXBvcnQgQXhpb3NIZWFkZXJzIGZyb20gJy4vQXhpb3NIZWFkZXJzLmpzJztcblxuY29uc3QgdmFsaWRhdG9ycyA9IHZhbGlkYXRvci52YWxpZGF0b3JzO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBBeGlvc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBpbnN0YW5jZUNvbmZpZyBUaGUgZGVmYXVsdCBjb25maWcgZm9yIHRoZSBpbnN0YW5jZVxuICpcbiAqIEByZXR1cm4ge0F4aW9zfSBBIG5ldyBpbnN0YW5jZSBvZiBBeGlvc1xuICovXG5jbGFzcyBBeGlvcyB7XG4gIGNvbnN0cnVjdG9yKGluc3RhbmNlQ29uZmlnKSB7XG4gICAgdGhpcy5kZWZhdWx0cyA9IGluc3RhbmNlQ29uZmlnO1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzID0ge1xuICAgICAgcmVxdWVzdDogbmV3IEludGVyY2VwdG9yTWFuYWdlcigpLFxuICAgICAgcmVzcG9uc2U6IG5ldyBJbnRlcmNlcHRvck1hbmFnZXIoKVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGlzcGF0Y2ggYSByZXF1ZXN0XG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gY29uZmlnT3JVcmwgVGhlIGNvbmZpZyBzcGVjaWZpYyBmb3IgdGhpcyByZXF1ZXN0IChtZXJnZWQgd2l0aCB0aGlzLmRlZmF1bHRzKVxuICAgKiBAcGFyYW0gez9PYmplY3R9IGNvbmZpZ1xuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gVGhlIFByb21pc2UgdG8gYmUgZnVsZmlsbGVkXG4gICAqL1xuICBhc3luYyByZXF1ZXN0KGNvbmZpZ09yVXJsLCBjb25maWcpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX3JlcXVlc3QoY29uZmlnT3JVcmwsIGNvbmZpZyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgbGV0IGR1bW15ID0ge307XG5cbiAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UgPyBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShkdW1teSkgOiAoZHVtbXkgPSBuZXcgRXJyb3IoKSk7XG5cbiAgICAgICAgLy8gc2xpY2Ugb2ZmIHRoZSBFcnJvcjogLi4uIGxpbmVcbiAgICAgICAgY29uc3Qgc3RhY2sgPSBkdW1teS5zdGFjayA/IGR1bW15LnN0YWNrLnJlcGxhY2UoL14uK1xcbi8sICcnKSA6ICcnO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmICghZXJyLnN0YWNrKSB7XG4gICAgICAgICAgICBlcnIuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgICAgIC8vIG1hdGNoIHdpdGhvdXQgdGhlIDIgdG9wIHN0YWNrIGxpbmVzXG4gICAgICAgICAgfSBlbHNlIGlmIChzdGFjayAmJiAhU3RyaW5nKGVyci5zdGFjaykuZW5kc1dpdGgoc3RhY2sucmVwbGFjZSgvXi4rXFxuLitcXG4vLCAnJykpKSB7XG4gICAgICAgICAgICBlcnIuc3RhY2sgKz0gJ1xcbicgKyBzdGFja1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIGlnbm9yZSB0aGUgY2FzZSB3aGVyZSBcInN0YWNrXCIgaXMgYW4gdW4td3JpdGFibGUgcHJvcGVydHlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgX3JlcXVlc3QoY29uZmlnT3JVcmwsIGNvbmZpZykge1xuICAgIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICAgIC8vIEFsbG93IGZvciBheGlvcygnZXhhbXBsZS91cmwnWywgY29uZmlnXSkgYSBsYSBmZXRjaCBBUElcbiAgICBpZiAodHlwZW9mIGNvbmZpZ09yVXJsID09PSAnc3RyaW5nJykge1xuICAgICAgY29uZmlnID0gY29uZmlnIHx8IHt9O1xuICAgICAgY29uZmlnLnVybCA9IGNvbmZpZ09yVXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25maWcgPSBjb25maWdPclVybCB8fCB7fTtcbiAgICB9XG5cbiAgICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuXG4gICAgY29uc3Qge3RyYW5zaXRpb25hbCwgcGFyYW1zU2VyaWFsaXplciwgaGVhZGVyc30gPSBjb25maWc7XG5cbiAgICBpZiAodHJhbnNpdGlvbmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhbGlkYXRvci5hc3NlcnRPcHRpb25zKHRyYW5zaXRpb25hbCwge1xuICAgICAgICBzaWxlbnRKU09OUGFyc2luZzogdmFsaWRhdG9ycy50cmFuc2l0aW9uYWwodmFsaWRhdG9ycy5ib29sZWFuKSxcbiAgICAgICAgZm9yY2VkSlNPTlBhcnNpbmc6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbiksXG4gICAgICAgIGNsYXJpZnlUaW1lb3V0RXJyb3I6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbilcbiAgICAgIH0sIGZhbHNlKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zU2VyaWFsaXplciAhPSBudWxsKSB7XG4gICAgICBpZiAodXRpbHMuaXNGdW5jdGlvbihwYXJhbXNTZXJpYWxpemVyKSkge1xuICAgICAgICBjb25maWcucGFyYW1zU2VyaWFsaXplciA9IHtcbiAgICAgICAgICBzZXJpYWxpemU6IHBhcmFtc1NlcmlhbGl6ZXJcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsaWRhdG9yLmFzc2VydE9wdGlvbnMocGFyYW1zU2VyaWFsaXplciwge1xuICAgICAgICAgIGVuY29kZTogdmFsaWRhdG9ycy5mdW5jdGlvbixcbiAgICAgICAgICBzZXJpYWxpemU6IHZhbGlkYXRvcnMuZnVuY3Rpb25cbiAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFsaWRhdG9yLmFzc2VydE9wdGlvbnMoY29uZmlnLCB7XG4gICAgICBiYXNlVXJsOiB2YWxpZGF0b3JzLnNwZWxsaW5nKCdiYXNlVVJMJyksXG4gICAgICB3aXRoWHNyZlRva2VuOiB2YWxpZGF0b3JzLnNwZWxsaW5nKCd3aXRoWFNSRlRva2VuJylcbiAgICB9LCB0cnVlKTtcblxuICAgIC8vIFNldCBjb25maWcubWV0aG9kXG4gICAgY29uZmlnLm1ldGhvZCA9IChjb25maWcubWV0aG9kIHx8IHRoaXMuZGVmYXVsdHMubWV0aG9kIHx8ICdnZXQnKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgLy8gRmxhdHRlbiBoZWFkZXJzXG4gICAgbGV0IGNvbnRleHRIZWFkZXJzID0gaGVhZGVycyAmJiB1dGlscy5tZXJnZShcbiAgICAgIGhlYWRlcnMuY29tbW9uLFxuICAgICAgaGVhZGVyc1tjb25maWcubWV0aG9kXVxuICAgICk7XG5cbiAgICBoZWFkZXJzICYmIHV0aWxzLmZvckVhY2goXG4gICAgICBbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdwb3N0JywgJ3B1dCcsICdwYXRjaCcsICdjb21tb24nXSxcbiAgICAgIChtZXRob2QpID0+IHtcbiAgICAgICAgZGVsZXRlIGhlYWRlcnNbbWV0aG9kXTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uZmlnLmhlYWRlcnMgPSBBeGlvc0hlYWRlcnMuY29uY2F0KGNvbnRleHRIZWFkZXJzLCBoZWFkZXJzKTtcblxuICAgIC8vIGZpbHRlciBvdXQgc2tpcHBlZCBpbnRlcmNlcHRvcnNcbiAgICBjb25zdCByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbiA9IFtdO1xuICAgIGxldCBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgPSB0cnVlO1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbiB1bnNoaWZ0UmVxdWVzdEludGVyY2VwdG9ycyhpbnRlcmNlcHRvcikge1xuICAgICAgaWYgKHR5cGVvZiBpbnRlcmNlcHRvci5ydW5XaGVuID09PSAnZnVuY3Rpb24nICYmIGludGVyY2VwdG9yLnJ1bldoZW4oY29uZmlnKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgPSBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgJiYgaW50ZXJjZXB0b3Iuc3luY2hyb25vdXM7XG5cbiAgICAgIHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLnVuc2hpZnQoaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4gPSBbXTtcbiAgICB0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKGZ1bmN0aW9uIHB1c2hSZXNwb25zZUludGVyY2VwdG9ycyhpbnRlcmNlcHRvcikge1xuICAgICAgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLnB1c2goaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gICAgfSk7XG5cbiAgICBsZXQgcHJvbWlzZTtcbiAgICBsZXQgaSA9IDA7XG4gICAgbGV0IGxlbjtcblxuICAgIGlmICghc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzKSB7XG4gICAgICBjb25zdCBjaGFpbiA9IFtkaXNwYXRjaFJlcXVlc3QuYmluZCh0aGlzKSwgdW5kZWZpbmVkXTtcbiAgICAgIGNoYWluLnVuc2hpZnQuYXBwbHkoY2hhaW4sIHJlcXVlc3RJbnRlcmNlcHRvckNoYWluKTtcbiAgICAgIGNoYWluLnB1c2guYXBwbHkoY2hhaW4sIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbik7XG4gICAgICBsZW4gPSBjaGFpbi5sZW5ndGg7XG5cbiAgICAgIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoY29uZmlnKTtcblxuICAgICAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICAgICAgcHJvbWlzZSA9IHByb21pc2UudGhlbihjaGFpbltpKytdLCBjaGFpbltpKytdKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gICAgbGVuID0gcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4ubGVuZ3RoO1xuXG4gICAgbGV0IG5ld0NvbmZpZyA9IGNvbmZpZztcblxuICAgIGkgPSAwO1xuXG4gICAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICAgIGNvbnN0IG9uRnVsZmlsbGVkID0gcmVxdWVzdEludGVyY2VwdG9yQ2hhaW5baSsrXTtcbiAgICAgIGNvbnN0IG9uUmVqZWN0ZWQgPSByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbltpKytdO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3Q29uZmlnID0gb25GdWxmaWxsZWQobmV3Q29uZmlnKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG9uUmVqZWN0ZWQuY2FsbCh0aGlzLCBlcnJvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBwcm9taXNlID0gZGlzcGF0Y2hSZXF1ZXN0LmNhbGwodGhpcywgbmV3Q29uZmlnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICB9XG5cbiAgICBpID0gMDtcbiAgICBsZW4gPSByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4ubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4ocmVzcG9uc2VJbnRlcmNlcHRvckNoYWluW2krK10sIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbltpKytdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG4gIGdldFVyaShjb25maWcpIHtcbiAgICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gYnVpbGRGdWxsUGF0aChjb25maWcuYmFzZVVSTCwgY29uZmlnLnVybCk7XG4gICAgcmV0dXJuIGJ1aWxkVVJMKGZ1bGxQYXRoLCBjb25maWcucGFyYW1zLCBjb25maWcucGFyYW1zU2VyaWFsaXplcik7XG4gIH1cbn1cblxuLy8gUHJvdmlkZSBhbGlhc2VzIGZvciBzdXBwb3J0ZWQgcmVxdWVzdCBtZXRob2RzXG51dGlscy5mb3JFYWNoKFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJywgJ29wdGlvbnMnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZE5vRGF0YShtZXRob2QpIHtcbiAgLyplc2xpbnQgZnVuYy1uYW1lczowKi9cbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbih1cmwsIGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QobWVyZ2VDb25maWcoY29uZmlnIHx8IHt9LCB7XG4gICAgICBtZXRob2QsXG4gICAgICB1cmwsXG4gICAgICBkYXRhOiAoY29uZmlnIHx8IHt9KS5kYXRhXG4gICAgfSkpO1xuICB9O1xufSk7XG5cbnV0aWxzLmZvckVhY2goWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kV2l0aERhdGEobWV0aG9kKSB7XG4gIC8qZXNsaW50IGZ1bmMtbmFtZXM6MCovXG5cbiAgZnVuY3Rpb24gZ2VuZXJhdGVIVFRQTWV0aG9kKGlzRm9ybSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBodHRwTWV0aG9kKHVybCwgZGF0YSwgY29uZmlnKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KG1lcmdlQ29uZmlnKGNvbmZpZyB8fCB7fSwge1xuICAgICAgICBtZXRob2QsXG4gICAgICAgIGhlYWRlcnM6IGlzRm9ybSA/IHtcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ211bHRpcGFydC9mb3JtLWRhdGEnXG4gICAgICAgIH0gOiB7fSxcbiAgICAgICAgdXJsLFxuICAgICAgICBkYXRhXG4gICAgICB9KSk7XG4gICAgfTtcbiAgfVxuXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2RdID0gZ2VuZXJhdGVIVFRQTWV0aG9kKCk7XG5cbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZCArICdGb3JtJ10gPSBnZW5lcmF0ZUhUVFBNZXRob2QodHJ1ZSk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgQXhpb3M7XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCBDYW5jZWxlZEVycm9yIGZyb20gJy4vQ2FuY2VsZWRFcnJvci5qcyc7XG5cbi8qKlxuICogQSBgQ2FuY2VsVG9rZW5gIGlzIGFuIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlcXVlc3QgY2FuY2VsbGF0aW9uIG9mIGFuIG9wZXJhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBleGVjdXRvciBUaGUgZXhlY3V0b3IgZnVuY3Rpb24uXG4gKlxuICogQHJldHVybnMge0NhbmNlbFRva2VufVxuICovXG5jbGFzcyBDYW5jZWxUb2tlbiB7XG4gIGNvbnN0cnVjdG9yKGV4ZWN1dG9yKSB7XG4gICAgaWYgKHR5cGVvZiBleGVjdXRvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLicpO1xuICAgIH1cblxuICAgIGxldCByZXNvbHZlUHJvbWlzZTtcblxuICAgIHRoaXMucHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIHByb21pc2VFeGVjdXRvcihyZXNvbHZlKSB7XG4gICAgICByZXNvbHZlUHJvbWlzZSA9IHJlc29sdmU7XG4gICAgfSk7XG5cbiAgICBjb25zdCB0b2tlbiA9IHRoaXM7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgIHRoaXMucHJvbWlzZS50aGVuKGNhbmNlbCA9PiB7XG4gICAgICBpZiAoIXRva2VuLl9saXN0ZW5lcnMpIHJldHVybjtcblxuICAgICAgbGV0IGkgPSB0b2tlbi5fbGlzdGVuZXJzLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKGktLSA+IDApIHtcbiAgICAgICAgdG9rZW4uX2xpc3RlbmVyc1tpXShjYW5jZWwpO1xuICAgICAgfVxuICAgICAgdG9rZW4uX2xpc3RlbmVycyA9IG51bGw7XG4gICAgfSk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgIHRoaXMucHJvbWlzZS50aGVuID0gb25mdWxmaWxsZWQgPT4ge1xuICAgICAgbGV0IF9yZXNvbHZlO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgdG9rZW4uc3Vic2NyaWJlKHJlc29sdmUpO1xuICAgICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICB9KS50aGVuKG9uZnVsZmlsbGVkKTtcblxuICAgICAgcHJvbWlzZS5jYW5jZWwgPSBmdW5jdGlvbiByZWplY3QoKSB7XG4gICAgICAgIHRva2VuLnVuc3Vic2NyaWJlKF9yZXNvbHZlKTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH07XG5cbiAgICBleGVjdXRvcihmdW5jdGlvbiBjYW5jZWwobWVzc2FnZSwgY29uZmlnLCByZXF1ZXN0KSB7XG4gICAgICBpZiAodG9rZW4ucmVhc29uKSB7XG4gICAgICAgIC8vIENhbmNlbGxhdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJlcXVlc3RlZFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRva2VuLnJlYXNvbiA9IG5ldyBDYW5jZWxlZEVycm9yKG1lc3NhZ2UsIGNvbmZpZywgcmVxdWVzdCk7XG4gICAgICByZXNvbHZlUHJvbWlzZSh0b2tlbi5yZWFzb24pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRocm93cyBhIGBDYW5jZWxlZEVycm9yYCBpZiBjYW5jZWxsYXRpb24gaGFzIGJlZW4gcmVxdWVzdGVkLlxuICAgKi9cbiAgdGhyb3dJZlJlcXVlc3RlZCgpIHtcbiAgICBpZiAodGhpcy5yZWFzb24pIHtcbiAgICAgIHRocm93IHRoaXMucmVhc29uO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gdGhlIGNhbmNlbCBzaWduYWxcbiAgICovXG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gICAgaWYgKHRoaXMucmVhc29uKSB7XG4gICAgICBsaXN0ZW5lcih0aGlzLnJlYXNvbik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2xpc3RlbmVycykge1xuICAgICAgdGhpcy5fbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9saXN0ZW5lcnMgPSBbbGlzdGVuZXJdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVbnN1YnNjcmliZSBmcm9tIHRoZSBjYW5jZWwgc2lnbmFsXG4gICAqL1xuXG4gIHVuc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gICAgaWYgKCF0aGlzLl9saXN0ZW5lcnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcik7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5fbGlzdGVuZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9XG5cbiAgdG9BYm9ydFNpZ25hbCgpIHtcbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgY29uc3QgYWJvcnQgPSAoZXJyKSA9PiB7XG4gICAgICBjb250cm9sbGVyLmFib3J0KGVycik7XG4gICAgfTtcblxuICAgIHRoaXMuc3Vic2NyaWJlKGFib3J0KTtcblxuICAgIGNvbnRyb2xsZXIuc2lnbmFsLnVuc3Vic2NyaWJlID0gKCkgPT4gdGhpcy51bnN1YnNjcmliZShhYm9ydCk7XG5cbiAgICByZXR1cm4gY29udHJvbGxlci5zaWduYWw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBhIG5ldyBgQ2FuY2VsVG9rZW5gIGFuZCBhIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLFxuICAgKiBjYW5jZWxzIHRoZSBgQ2FuY2VsVG9rZW5gLlxuICAgKi9cbiAgc3RhdGljIHNvdXJjZSgpIHtcbiAgICBsZXQgY2FuY2VsO1xuICAgIGNvbnN0IHRva2VuID0gbmV3IENhbmNlbFRva2VuKGZ1bmN0aW9uIGV4ZWN1dG9yKGMpIHtcbiAgICAgIGNhbmNlbCA9IGM7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRva2VuLFxuICAgICAgY2FuY2VsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDYW5jZWxUb2tlbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBTeW50YWN0aWMgc3VnYXIgZm9yIGludm9raW5nIGEgZnVuY3Rpb24gYW5kIGV4cGFuZGluZyBhbiBhcnJheSBmb3IgYXJndW1lbnRzLlxuICpcbiAqIENvbW1vbiB1c2UgY2FzZSB3b3VsZCBiZSB0byB1c2UgYEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseWAuXG4gKlxuICogIGBgYGpzXG4gKiAgZnVuY3Rpb24gZih4LCB5LCB6KSB7fVxuICogIHZhciBhcmdzID0gWzEsIDIsIDNdO1xuICogIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gKiAgYGBgXG4gKlxuICogV2l0aCBgc3ByZWFkYCB0aGlzIGV4YW1wbGUgY2FuIGJlIHJlLXdyaXR0ZW4uXG4gKlxuICogIGBgYGpzXG4gKiAgc3ByZWFkKGZ1bmN0aW9uKHgsIHksIHopIHt9KShbMSwgMiwgM10pO1xuICogIGBgYFxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gKlxuICogQHJldHVybnMge0Z1bmN0aW9ufVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzcHJlYWQoY2FsbGJhY2spIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHdyYXAoYXJyKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrLmFwcGx5KG51bGwsIGFycik7XG4gIH07XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLy4uL3V0aWxzLmpzJztcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHBheWxvYWQgaXMgYW4gZXJyb3IgdGhyb3duIGJ5IEF4aW9zXG4gKlxuICogQHBhcmFtIHsqfSBwYXlsb2FkIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHBheWxvYWQgaXMgYW4gZXJyb3IgdGhyb3duIGJ5IEF4aW9zLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNBeGlvc0Vycm9yKHBheWxvYWQpIHtcbiAgcmV0dXJuIHV0aWxzLmlzT2JqZWN0KHBheWxvYWQpICYmIChwYXlsb2FkLmlzQXhpb3NFcnJvciA9PT0gdHJ1ZSk7XG59XG4iLCJjb25zdCBIdHRwU3RhdHVzQ29kZSA9IHtcbiAgQ29udGludWU6IDEwMCxcbiAgU3dpdGNoaW5nUHJvdG9jb2xzOiAxMDEsXG4gIFByb2Nlc3Npbmc6IDEwMixcbiAgRWFybHlIaW50czogMTAzLFxuICBPazogMjAwLFxuICBDcmVhdGVkOiAyMDEsXG4gIEFjY2VwdGVkOiAyMDIsXG4gIE5vbkF1dGhvcml0YXRpdmVJbmZvcm1hdGlvbjogMjAzLFxuICBOb0NvbnRlbnQ6IDIwNCxcbiAgUmVzZXRDb250ZW50OiAyMDUsXG4gIFBhcnRpYWxDb250ZW50OiAyMDYsXG4gIE11bHRpU3RhdHVzOiAyMDcsXG4gIEFscmVhZHlSZXBvcnRlZDogMjA4LFxuICBJbVVzZWQ6IDIyNixcbiAgTXVsdGlwbGVDaG9pY2VzOiAzMDAsXG4gIE1vdmVkUGVybWFuZW50bHk6IDMwMSxcbiAgRm91bmQ6IDMwMixcbiAgU2VlT3RoZXI6IDMwMyxcbiAgTm90TW9kaWZpZWQ6IDMwNCxcbiAgVXNlUHJveHk6IDMwNSxcbiAgVW51c2VkOiAzMDYsXG4gIFRlbXBvcmFyeVJlZGlyZWN0OiAzMDcsXG4gIFBlcm1hbmVudFJlZGlyZWN0OiAzMDgsXG4gIEJhZFJlcXVlc3Q6IDQwMCxcbiAgVW5hdXRob3JpemVkOiA0MDEsXG4gIFBheW1lbnRSZXF1aXJlZDogNDAyLFxuICBGb3JiaWRkZW46IDQwMyxcbiAgTm90Rm91bmQ6IDQwNCxcbiAgTWV0aG9kTm90QWxsb3dlZDogNDA1LFxuICBOb3RBY2NlcHRhYmxlOiA0MDYsXG4gIFByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZDogNDA3LFxuICBSZXF1ZXN0VGltZW91dDogNDA4LFxuICBDb25mbGljdDogNDA5LFxuICBHb25lOiA0MTAsXG4gIExlbmd0aFJlcXVpcmVkOiA0MTEsXG4gIFByZWNvbmRpdGlvbkZhaWxlZDogNDEyLFxuICBQYXlsb2FkVG9vTGFyZ2U6IDQxMyxcbiAgVXJpVG9vTG9uZzogNDE0LFxuICBVbnN1cHBvcnRlZE1lZGlhVHlwZTogNDE1LFxuICBSYW5nZU5vdFNhdGlzZmlhYmxlOiA0MTYsXG4gIEV4cGVjdGF0aW9uRmFpbGVkOiA0MTcsXG4gIEltQVRlYXBvdDogNDE4LFxuICBNaXNkaXJlY3RlZFJlcXVlc3Q6IDQyMSxcbiAgVW5wcm9jZXNzYWJsZUVudGl0eTogNDIyLFxuICBMb2NrZWQ6IDQyMyxcbiAgRmFpbGVkRGVwZW5kZW5jeTogNDI0LFxuICBUb29FYXJseTogNDI1LFxuICBVcGdyYWRlUmVxdWlyZWQ6IDQyNixcbiAgUHJlY29uZGl0aW9uUmVxdWlyZWQ6IDQyOCxcbiAgVG9vTWFueVJlcXVlc3RzOiA0MjksXG4gIFJlcXVlc3RIZWFkZXJGaWVsZHNUb29MYXJnZTogNDMxLFxuICBVbmF2YWlsYWJsZUZvckxlZ2FsUmVhc29uczogNDUxLFxuICBJbnRlcm5hbFNlcnZlckVycm9yOiA1MDAsXG4gIE5vdEltcGxlbWVudGVkOiA1MDEsXG4gIEJhZEdhdGV3YXk6IDUwMixcbiAgU2VydmljZVVuYXZhaWxhYmxlOiA1MDMsXG4gIEdhdGV3YXlUaW1lb3V0OiA1MDQsXG4gIEh0dHBWZXJzaW9uTm90U3VwcG9ydGVkOiA1MDUsXG4gIFZhcmlhbnRBbHNvTmVnb3RpYXRlczogNTA2LFxuICBJbnN1ZmZpY2llbnRTdG9yYWdlOiA1MDcsXG4gIExvb3BEZXRlY3RlZDogNTA4LFxuICBOb3RFeHRlbmRlZDogNTEwLFxuICBOZXR3b3JrQXV0aGVudGljYXRpb25SZXF1aXJlZDogNTExLFxufTtcblxuT2JqZWN0LmVudHJpZXMoSHR0cFN0YXR1c0NvZGUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICBIdHRwU3RhdHVzQ29kZVt2YWx1ZV0gPSBrZXk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgSHR0cFN0YXR1c0NvZGU7XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzLmpzJztcbmltcG9ydCBiaW5kIGZyb20gJy4vaGVscGVycy9iaW5kLmpzJztcbmltcG9ydCBBeGlvcyBmcm9tICcuL2NvcmUvQXhpb3MuanMnO1xuaW1wb3J0IG1lcmdlQ29uZmlnIGZyb20gJy4vY29yZS9tZXJnZUNvbmZpZy5qcyc7XG5pbXBvcnQgZGVmYXVsdHMgZnJvbSAnLi9kZWZhdWx0cy9pbmRleC5qcyc7XG5pbXBvcnQgZm9ybURhdGFUb0pTT04gZnJvbSAnLi9oZWxwZXJzL2Zvcm1EYXRhVG9KU09OLmpzJztcbmltcG9ydCBDYW5jZWxlZEVycm9yIGZyb20gJy4vY2FuY2VsL0NhbmNlbGVkRXJyb3IuanMnO1xuaW1wb3J0IENhbmNlbFRva2VuIGZyb20gJy4vY2FuY2VsL0NhbmNlbFRva2VuLmpzJztcbmltcG9ydCBpc0NhbmNlbCBmcm9tICcuL2NhbmNlbC9pc0NhbmNlbC5qcyc7XG5pbXBvcnQge1ZFUlNJT059IGZyb20gJy4vZW52L2RhdGEuanMnO1xuaW1wb3J0IHRvRm9ybURhdGEgZnJvbSAnLi9oZWxwZXJzL3RvRm9ybURhdGEuanMnO1xuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSAnLi9jb3JlL0F4aW9zRXJyb3IuanMnO1xuaW1wb3J0IHNwcmVhZCBmcm9tICcuL2hlbHBlcnMvc3ByZWFkLmpzJztcbmltcG9ydCBpc0F4aW9zRXJyb3IgZnJvbSAnLi9oZWxwZXJzL2lzQXhpb3NFcnJvci5qcyc7XG5pbXBvcnQgQXhpb3NIZWFkZXJzIGZyb20gXCIuL2NvcmUvQXhpb3NIZWFkZXJzLmpzXCI7XG5pbXBvcnQgYWRhcHRlcnMgZnJvbSAnLi9hZGFwdGVycy9hZGFwdGVycy5qcyc7XG5pbXBvcnQgSHR0cFN0YXR1c0NvZGUgZnJvbSAnLi9oZWxwZXJzL0h0dHBTdGF0dXNDb2RlLmpzJztcblxuLyoqXG4gKiBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgQXhpb3NcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gZGVmYXVsdENvbmZpZyBUaGUgZGVmYXVsdCBjb25maWcgZm9yIHRoZSBpbnN0YW5jZVxuICpcbiAqIEByZXR1cm5zIHtBeGlvc30gQSBuZXcgaW5zdGFuY2Ugb2YgQXhpb3NcbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2UoZGVmYXVsdENvbmZpZykge1xuICBjb25zdCBjb250ZXh0ID0gbmV3IEF4aW9zKGRlZmF1bHRDb25maWcpO1xuICBjb25zdCBpbnN0YW5jZSA9IGJpbmQoQXhpb3MucHJvdG90eXBlLnJlcXVlc3QsIGNvbnRleHQpO1xuXG4gIC8vIENvcHkgYXhpb3MucHJvdG90eXBlIHRvIGluc3RhbmNlXG4gIHV0aWxzLmV4dGVuZChpbnN0YW5jZSwgQXhpb3MucHJvdG90eXBlLCBjb250ZXh0LCB7YWxsT3duS2V5czogdHJ1ZX0pO1xuXG4gIC8vIENvcHkgY29udGV4dCB0byBpbnN0YW5jZVxuICB1dGlscy5leHRlbmQoaW5zdGFuY2UsIGNvbnRleHQsIG51bGwsIHthbGxPd25LZXlzOiB0cnVlfSk7XG5cbiAgLy8gRmFjdG9yeSBmb3IgY3JlYXRpbmcgbmV3IGluc3RhbmNlc1xuICBpbnN0YW5jZS5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoaW5zdGFuY2VDb25maWcpIHtcbiAgICByZXR1cm4gY3JlYXRlSW5zdGFuY2UobWVyZ2VDb25maWcoZGVmYXVsdENvbmZpZywgaW5zdGFuY2VDb25maWcpKTtcbiAgfTtcblxuICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbi8vIENyZWF0ZSB0aGUgZGVmYXVsdCBpbnN0YW5jZSB0byBiZSBleHBvcnRlZFxuY29uc3QgYXhpb3MgPSBjcmVhdGVJbnN0YW5jZShkZWZhdWx0cyk7XG5cbi8vIEV4cG9zZSBBeGlvcyBjbGFzcyB0byBhbGxvdyBjbGFzcyBpbmhlcml0YW5jZVxuYXhpb3MuQXhpb3MgPSBBeGlvcztcblxuLy8gRXhwb3NlIENhbmNlbCAmIENhbmNlbFRva2VuXG5heGlvcy5DYW5jZWxlZEVycm9yID0gQ2FuY2VsZWRFcnJvcjtcbmF4aW9zLkNhbmNlbFRva2VuID0gQ2FuY2VsVG9rZW47XG5heGlvcy5pc0NhbmNlbCA9IGlzQ2FuY2VsO1xuYXhpb3MuVkVSU0lPTiA9IFZFUlNJT047XG5heGlvcy50b0Zvcm1EYXRhID0gdG9Gb3JtRGF0YTtcblxuLy8gRXhwb3NlIEF4aW9zRXJyb3IgY2xhc3NcbmF4aW9zLkF4aW9zRXJyb3IgPSBBeGlvc0Vycm9yO1xuXG4vLyBhbGlhcyBmb3IgQ2FuY2VsZWRFcnJvciBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuYXhpb3MuQ2FuY2VsID0gYXhpb3MuQ2FuY2VsZWRFcnJvcjtcblxuLy8gRXhwb3NlIGFsbC9zcHJlYWRcbmF4aW9zLmFsbCA9IGZ1bmN0aW9uIGFsbChwcm9taXNlcykge1xuICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufTtcblxuYXhpb3Muc3ByZWFkID0gc3ByZWFkO1xuXG4vLyBFeHBvc2UgaXNBeGlvc0Vycm9yXG5heGlvcy5pc0F4aW9zRXJyb3IgPSBpc0F4aW9zRXJyb3I7XG5cbi8vIEV4cG9zZSBtZXJnZUNvbmZpZ1xuYXhpb3MubWVyZ2VDb25maWcgPSBtZXJnZUNvbmZpZztcblxuYXhpb3MuQXhpb3NIZWFkZXJzID0gQXhpb3NIZWFkZXJzO1xuXG5heGlvcy5mb3JtVG9KU09OID0gdGhpbmcgPT4gZm9ybURhdGFUb0pTT04odXRpbHMuaXNIVE1MRm9ybSh0aGluZykgPyBuZXcgRm9ybURhdGEodGhpbmcpIDogdGhpbmcpO1xuXG5heGlvcy5nZXRBZGFwdGVyID0gYWRhcHRlcnMuZ2V0QWRhcHRlcjtcblxuYXhpb3MuSHR0cFN0YXR1c0NvZGUgPSBIdHRwU3RhdHVzQ29kZTtcblxuYXhpb3MuZGVmYXVsdCA9IGF4aW9zO1xuXG4vLyB0aGlzIG1vZHVsZSBzaG91bGQgb25seSBoYXZlIGEgZGVmYXVsdCBleHBvcnRcbmV4cG9ydCBkZWZhdWx0IGF4aW9zXG4iLCJmdW5jdGlvbiBmb3JtYXREZXBlbmRlbmN5KHBhcmFtcywgaWR4KSB7XG4gIGlmIChwYXJhbXMgPT09IG51bGwpIHtcbiAgICByZXR1cm4gYGF0IHBvc2l0aW9uICMke2lkeH1gO1xuICB9XG4gIGNvbnN0IGFyZ05hbWUgPSBwYXJhbXMuc3BsaXQoXCIsXCIpW2lkeF0udHJpbSgpO1xuICByZXR1cm4gYFwiJHthcmdOYW1lfVwiIGF0IHBvc2l0aW9uICMke2lkeH1gO1xufVxuZnVuY3Rpb24gY29tcG9zZUVycm9yTWVzc2FnZShtc2csIGUsIGluZGVudCA9IFwiICAgIFwiKSB7XG4gIHJldHVybiBbbXNnLCAuLi5lLm1lc3NhZ2Uuc3BsaXQoXCJcXG5cIikubWFwKChsKSA9PiBpbmRlbnQgKyBsKV0uam9pbihcIlxcblwiKTtcbn1cbmZ1bmN0aW9uIGZvcm1hdEVycm9yQ3RvcihjdG9yLCBwYXJhbUlkeCwgZXJyb3IpIHtcbiAgY29uc3QgWywgcGFyYW1zID0gbnVsbF0gPSBjdG9yLnRvU3RyaW5nKCkubWF0Y2goL2NvbnN0cnVjdG9yXFwoKFtcXHcsIF0rKVxcKS8pIHx8IFtdO1xuICBjb25zdCBkZXAgPSBmb3JtYXREZXBlbmRlbmN5KHBhcmFtcywgcGFyYW1JZHgpO1xuICByZXR1cm4gY29tcG9zZUVycm9yTWVzc2FnZShcbiAgICBgQ2Fubm90IGluamVjdCB0aGUgZGVwZW5kZW5jeSAke2RlcH0gb2YgXCIke2N0b3IubmFtZX1cIiBjb25zdHJ1Y3Rvci4gUmVhc29uOmAsXG4gICAgZXJyb3JcbiAgKTtcbn1cblxuY2xhc3MgUmVnaXN0cnlCYXNlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fcmVnaXN0cnlNYXAgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICB9XG4gIHRva2VucygpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9yZWdpc3RyeU1hcC5rZXlzKCkpO1xuICB9XG4gIGVudHJpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZ2lzdHJ5TWFwLmVudHJpZXMoKTtcbiAgfVxuICBnZXRBbGwoa2V5KSB7XG4gICAgdGhpcy5lbnN1cmUoa2V5KTtcbiAgICByZXR1cm4gdGhpcy5fcmVnaXN0cnlNYXAuZ2V0KGtleSk7XG4gIH1cbiAgZ2V0KGtleSkge1xuICAgIHRoaXMuZW5zdXJlKGtleSk7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLl9yZWdpc3RyeU1hcC5nZXQoa2V5KTtcbiAgICByZXR1cm4gdmFsdWVbdmFsdWUubGVuZ3RoIC0gMV0gfHwgbnVsbDtcbiAgfVxuICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgIHRoaXMuZW5zdXJlKGtleSk7XG4gICAgdGhpcy5fcmVnaXN0cnlNYXAuZ2V0KGtleSkucHVzaCh2YWx1ZSk7XG4gIH1cbiAgc2V0QWxsKGtleSwgdmFsdWUpIHtcbiAgICB0aGlzLl9yZWdpc3RyeU1hcC5zZXQoa2V5LCB2YWx1ZSk7XG4gIH1cbiAgaGFzKGtleSkge1xuICAgIHRoaXMuZW5zdXJlKGtleSk7XG4gICAgcmV0dXJuIHRoaXMuX3JlZ2lzdHJ5TWFwLmdldChrZXkpLmxlbmd0aCA+IDA7XG4gIH1cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5fcmVnaXN0cnlNYXAuY2xlYXIoKTtcbiAgfVxuICBkZWxldGUoa2V5KSB7XG4gICAgdGhpcy5fcmVnaXN0cnlNYXAuZGVsZXRlKGtleSk7XG4gIH1cbiAgZW5zdXJlKGtleSkge1xuICAgIGlmICghdGhpcy5fcmVnaXN0cnlNYXAuaGFzKGtleSkpIHtcbiAgICAgIHRoaXMuX3JlZ2lzdHJ5TWFwLnNldChrZXksIFtdKTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgUG9zdFJlZ2lzdHJhdGlvbkludGVyY2VwdG9ycyBleHRlbmRzIFJlZ2lzdHJ5QmFzZSB7XG59XG5jbGFzcyBQcmVSZXNvbHV0aW9uSW50ZXJjZXB0b3JzIGV4dGVuZHMgUmVnaXN0cnlCYXNlIHtcbn1cbmNsYXNzIFBvc3RSZXNvbHV0aW9uSW50ZXJjZXB0b3JzIGV4dGVuZHMgUmVnaXN0cnlCYXNlIHtcbn1cbmNsYXNzIEludGVyY2VwdG9ycyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucG9zdFJlZ2lzdHJhdGlvbiA9IG5ldyBQb3N0UmVnaXN0cmF0aW9uSW50ZXJjZXB0b3JzKCk7XG4gICAgdGhpcy5wcmVSZXNvbHV0aW9uID0gbmV3IFByZVJlc29sdXRpb25JbnRlcmNlcHRvcnMoKTtcbiAgICB0aGlzLnBvc3RSZXNvbHV0aW9uID0gbmV3IFBvc3RSZXNvbHV0aW9uSW50ZXJjZXB0b3JzKCk7XG4gIH1cbn1cblxuY2xhc3MgRGVsYXllZENvbnN0cnVjdG9yIHtcbiAgY29uc3RydWN0b3Iod3JhcCkge1xuICAgIHRoaXMud3JhcCA9IHdyYXA7XG4gICAgdGhpcy5yZWZsZWN0TWV0aG9kcyA9IFtcbiAgICAgIFwiZ2V0XCIsXG4gICAgICBcImdldFByb3RvdHlwZU9mXCIsXG4gICAgICBcInNldFByb3RvdHlwZU9mXCIsXG4gICAgICBcImdldE93blByb3BlcnR5RGVzY3JpcHRvclwiLFxuICAgICAgXCJkZWZpbmVQcm9wZXJ0eVwiLFxuICAgICAgXCJoYXNcIixcbiAgICAgIFwic2V0XCIsXG4gICAgICBcImRlbGV0ZVByb3BlcnR5XCIsXG4gICAgICBcImFwcGx5XCIsXG4gICAgICBcImNvbnN0cnVjdFwiLFxuICAgICAgXCJvd25LZXlzXCJcbiAgICBdO1xuICB9XG4gIGNyZWF0ZVByb3h5KGNyZWF0ZU9iamVjdCkge1xuICAgIGNvbnN0IHRhcmdldCA9IHt9O1xuICAgIGxldCBpbml0ID0gZmFsc2U7XG4gICAgbGV0IHZhbHVlO1xuICAgIGNvbnN0IGRlbGF5ZWRPYmplY3QgPSAoKSA9PiB7XG4gICAgICBpZiAoIWluaXQpIHtcbiAgICAgICAgdmFsdWUgPSBjcmVhdGVPYmplY3QodGhpcy53cmFwKCkpO1xuICAgICAgICBpbml0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICAgIHJldHVybiBuZXcgUHJveHkodGFyZ2V0LCB0aGlzLmNyZWF0ZUhhbmRsZXIoZGVsYXllZE9iamVjdCkpO1xuICB9XG4gIGNyZWF0ZUhhbmRsZXIoZGVsYXllZE9iamVjdCkge1xuICAgIGNvbnN0IGhhbmRsZXIgPSB7fTtcbiAgICBjb25zdCBpbnN0YWxsID0gKG5hbWUpID0+IHtcbiAgICAgIGhhbmRsZXJbbmFtZV0gPSAoLi4uYXJncykgPT4ge1xuICAgICAgICBhcmdzWzBdID0gZGVsYXllZE9iamVjdCgpO1xuICAgICAgICBjb25zdCBtZXRob2QgPSBSZWZsZWN0W25hbWVdO1xuICAgICAgICByZXR1cm4gbWV0aG9kKC4uLmFyZ3MpO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHRoaXMucmVmbGVjdE1ldGhvZHMuZm9yRWFjaChpbnN0YWxsKTtcbiAgICByZXR1cm4gaGFuZGxlcjtcbiAgfVxufVxuZnVuY3Rpb24gZGVsYXkod3JhcHBlZENvbnN0cnVjdG9yKSB7XG4gIGlmICh0eXBlb2Ygd3JhcHBlZENvbnN0cnVjdG9yID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIFwiQXR0ZW1wdCB0byBgZGVsYXlgIHVuZGVmaW5lZC4gQ29uc3RydWN0b3IgbXVzdCBiZSB3cmFwcGVkIGluIGEgY2FsbGJhY2tcIlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIG5ldyBEZWxheWVkQ29uc3RydWN0b3Iod3JhcHBlZENvbnN0cnVjdG9yKTtcbn1cblxuZnVuY3Rpb24gaXNDbGFzc1Byb3ZpZGVyKHByb3ZpZGVyKSB7XG4gIHJldHVybiBCb29sZWFuKHByb3ZpZGVyLnVzZUNsYXNzKTtcbn1cblxuZnVuY3Rpb24gaXNGYWN0b3J5UHJvdmlkZXIocHJvdmlkZXIpIHtcbiAgcmV0dXJuIEJvb2xlYW4ocHJvdmlkZXIudXNlRmFjdG9yeSk7XG59XG5cbmZ1bmN0aW9uIGlzTm9ybWFsVG9rZW4odG9rZW4pIHtcbiAgcmV0dXJuIHR5cGVvZiB0b2tlbiA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgdG9rZW4gPT09IFwic3ltYm9sXCI7XG59XG5mdW5jdGlvbiBpc1Rva2VuRGVzY3JpcHRvcihkZXNjcmlwdG9yKSB7XG4gIHJldHVybiB0eXBlb2YgZGVzY3JpcHRvciA9PT0gXCJvYmplY3RcIiAmJiBcInRva2VuXCIgaW4gZGVzY3JpcHRvciAmJiBcIm11bHRpcGxlXCIgaW4gZGVzY3JpcHRvcjtcbn1cbmZ1bmN0aW9uIGlzVHJhbnNmb3JtRGVzY3JpcHRvcihkZXNjcmlwdG9yKSB7XG4gIHJldHVybiB0eXBlb2YgZGVzY3JpcHRvciA9PT0gXCJvYmplY3RcIiAmJiBcInRva2VuXCIgaW4gZGVzY3JpcHRvciAmJiBcInRyYW5zZm9ybVwiIGluIGRlc2NyaXB0b3I7XG59XG5mdW5jdGlvbiBpc0NvbnN0cnVjdG9yVG9rZW4odG9rZW4pIHtcbiAgcmV0dXJuIHR5cGVvZiB0b2tlbiA9PT0gXCJmdW5jdGlvblwiIHx8IHRva2VuIGluc3RhbmNlb2YgRGVsYXllZENvbnN0cnVjdG9yO1xufVxuXG5mdW5jdGlvbiBpc1Rva2VuUHJvdmlkZXIocHJvdmlkZXIpIHtcbiAgcmV0dXJuIEJvb2xlYW4ocHJvdmlkZXIudXNlVG9rZW4pO1xufVxuXG5mdW5jdGlvbiBpc1ZhbHVlUHJvdmlkZXIocHJvdmlkZXIpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwcm92aWRlciwgXCJ1c2VWYWx1ZVwiKTtcbn1cblxuZnVuY3Rpb24gaXNQcm92aWRlcihwcm92aWRlcikge1xuICByZXR1cm4gaXNDbGFzc1Byb3ZpZGVyKHByb3ZpZGVyKSB8fCBpc1ZhbHVlUHJvdmlkZXIocHJvdmlkZXIpIHx8IGlzVG9rZW5Qcm92aWRlcihwcm92aWRlcikgfHwgaXNGYWN0b3J5UHJvdmlkZXIocHJvdmlkZXIpO1xufVxuXG5jb25zdCBJTkpFQ1RJT05fVE9LRU5fTUVUQURBVEFfS0VZID0gXCJpbmplY3Rpb25Ub2tlbnNcIjtcbmNvbnN0IFBBUkFNX0lORk9TX01FVEFEQVRBX0tFWSA9IFwicGFyYW1JbmZvc1wiO1xuZnVuY3Rpb24gZ2V0UGFyYW1JbmZvKHRhcmdldCkge1xuICBjb25zdCBwYXJhbXMgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFwiZGVzaWduOnBhcmFtdHlwZXNcIiwgdGFyZ2V0KSB8fCBbXTtcbiAgY29uc3QgaW5qZWN0aW9uVG9rZW5zID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YShJTkpFQ1RJT05fVE9LRU5fTUVUQURBVEFfS0VZLCB0YXJnZXQpIHx8IHt9O1xuICBPYmplY3Qua2V5cyhpbmplY3Rpb25Ub2tlbnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgIHBhcmFtc1tOdW1iZXIoa2V5KV0gPSBpbmplY3Rpb25Ub2tlbnNba2V5XTtcbiAgfSk7XG4gIHJldHVybiBwYXJhbXM7XG59XG5mdW5jdGlvbiBkZWZpbmVJbmplY3Rpb25Ub2tlbk1ldGFkYXRhKGRhdGEsIHRyYW5zZm9ybSkge1xuICByZXR1cm4gZnVuY3Rpb24odGFyZ2V0LCBfcHJvcGVydHlLZXksIHBhcmFtZXRlckluZGV4KSB7XG4gICAgY29uc3QgZGVzY3JpcHRvcnMgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhKElOSkVDVElPTl9UT0tFTl9NRVRBREFUQV9LRVksIHRhcmdldCkgfHwge307XG4gICAgZGVzY3JpcHRvcnNbcGFyYW1ldGVySW5kZXhdID0gdHJhbnNmb3JtID8ge1xuICAgICAgdG9rZW46IGRhdGEsXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zZm9ybS50cmFuc2Zvcm1Ub2tlbixcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gICAgICB0cmFuc2Zvcm1BcmdzOiB0cmFuc2Zvcm0uYXJncyA/PyBbXVxuICAgIH0gOiBkYXRhO1xuICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoSU5KRUNUSU9OX1RPS0VOX01FVEFEQVRBX0tFWSwgZGVzY3JpcHRvcnMsIHRhcmdldCk7XG4gIH07XG59XG5cbmNsYXNzIFJlZ2lzdHJ5IGV4dGVuZHMgUmVnaXN0cnlCYXNlIHtcbn1cblxuY2xhc3MgUmVzb2x1dGlvbkNvbnRleHQge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNjb3BlZFJlc29sdXRpb25zID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0Rpc3Bvc2FibGUodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiB8fCB2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICBpZiAoIShcImRpc3Bvc2VcIiBpbiB2YWx1ZSkpIHJldHVybiBmYWxzZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZS5kaXNwb3NlICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgZGlzcG9zZUZuID0gdmFsdWUuZGlzcG9zZTtcbiAgaWYgKGRpc3Bvc2VGbi5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG52YXIgTGlmZWN5Y2xlID0gLyogQF9fUFVSRV9fICovICgoTGlmZWN5Y2xlMikgPT4ge1xuICBMaWZlY3ljbGUyW0xpZmVjeWNsZTJbXCJUcmFuc2llbnRcIl0gPSAwXSA9IFwiVHJhbnNpZW50XCI7XG4gIExpZmVjeWNsZTJbTGlmZWN5Y2xlMltcIlNpbmdsZXRvblwiXSA9IDFdID0gXCJTaW5nbGV0b25cIjtcbiAgTGlmZWN5Y2xlMltMaWZlY3ljbGUyW1wiUmVzb2x1dGlvblNjb3BlZFwiXSA9IDJdID0gXCJSZXNvbHV0aW9uU2NvcGVkXCI7XG4gIExpZmVjeWNsZTJbTGlmZWN5Y2xlMltcIkNvbnRhaW5lclNjb3BlZFwiXSA9IDNdID0gXCJDb250YWluZXJTY29wZWRcIjtcbiAgcmV0dXJuIExpZmVjeWNsZTI7XG59KShMaWZlY3ljbGUgfHwge30pO1xuXG5jbGFzcyBJbnRlcm5hbERlcGVuZGVuY3lDb250YWluZXIge1xuICBjb25zdHJ1Y3RvcihwYXJlbnQpIHtcbiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICB0aGlzLl9yZWdpc3RyeSA9IG5ldyBSZWdpc3RyeSgpO1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzID0gbmV3IEludGVyY2VwdG9ycygpO1xuICAgIHRoaXMuZGlzcG9zZWQgPSBmYWxzZTtcbiAgICB0aGlzLmRpc3Bvc2FibGVzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgfVxuICByZWdpc3Rlcih0b2tlbiwgcHJvdmlkZXJPckNvbnN0cnVjdG9yLCBvcHRpb25zID0geyBsaWZlY3ljbGU6IExpZmVjeWNsZS5UcmFuc2llbnQgfSkge1xuICAgIHRoaXMuZW5zdXJlTm90RGlzcG9zZWQoKTtcbiAgICBsZXQgcHJvdmlkZXI7XG4gICAgaWYgKCFpc1Byb3ZpZGVyKHByb3ZpZGVyT3JDb25zdHJ1Y3RvcikpIHtcbiAgICAgIHByb3ZpZGVyID0geyB1c2VDbGFzczogcHJvdmlkZXJPckNvbnN0cnVjdG9yIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb3ZpZGVyID0gcHJvdmlkZXJPckNvbnN0cnVjdG9yO1xuICAgIH1cbiAgICBpZiAoaXNUb2tlblByb3ZpZGVyKHByb3ZpZGVyKSkge1xuICAgICAgY29uc3QgcGF0aCA9IFt0b2tlbl07XG4gICAgICBsZXQgdG9rZW5Qcm92aWRlciA9IHByb3ZpZGVyO1xuICAgICAgd2hpbGUgKHRva2VuUHJvdmlkZXIgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBjdXJyZW50VG9rZW4gPSB0b2tlblByb3ZpZGVyLnVzZVRva2VuO1xuICAgICAgICBpZiAocGF0aC5pbmNsdWRlcyhjdXJyZW50VG9rZW4pKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFRva2VuIHJlZ2lzdHJhdGlvbiBjeWNsZSBkZXRlY3RlZCEgJHtbLi4ucGF0aCwgY3VycmVudFRva2VuXS5qb2luKFxuICAgICAgICAgICAgICBcIiAtPiBcIlxuICAgICAgICAgICAgKX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBwYXRoLnB1c2goY3VycmVudFRva2VuKTtcbiAgICAgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gdGhpcy5fcmVnaXN0cnkuZ2V0KGN1cnJlbnRUb2tlbik7XG4gICAgICAgIGlmIChyZWdpc3RyYXRpb24gJiYgaXNUb2tlblByb3ZpZGVyKHJlZ2lzdHJhdGlvbi5wcm92aWRlcikpIHtcbiAgICAgICAgICB0b2tlblByb3ZpZGVyID0gcmVnaXN0cmF0aW9uLnByb3ZpZGVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRva2VuUHJvdmlkZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICgob3B0aW9ucy5saWZlY3ljbGUgPT09IExpZmVjeWNsZS5TaW5nbGV0b24gfHwgb3B0aW9ucy5saWZlY3ljbGUgPT09IExpZmVjeWNsZS5Db250YWluZXJTY29wZWQgfHwgb3B0aW9ucy5saWZlY3ljbGUgPT09IExpZmVjeWNsZS5SZXNvbHV0aW9uU2NvcGVkKSAmJiAoaXNWYWx1ZVByb3ZpZGVyKHByb3ZpZGVyKSB8fCBpc0ZhY3RvcnlQcm92aWRlcihwcm92aWRlcikpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDYW5ub3QgdXNlIGxpZmVjeWNsZSBcIiR7TGlmZWN5Y2xlW29wdGlvbnMubGlmZWN5Y2xlXX1cIiB3aXRoIFZhbHVlUHJvdmlkZXJzIG9yIEZhY3RvcnlQcm92aWRlcnNgXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl9yZWdpc3RyeS5zZXQodG9rZW4sIHsgcHJvdmlkZXIsIG9wdGlvbnMgfSk7XG4gICAgdGhpcy5leGVjdXRlUG9zdFJlZ2lzdHJhdGlvbkludGVyY2VwdG9yKHRva2VuKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICByZWdpc3RlclR5cGUoZnJvbSwgdG8pIHtcbiAgICB0aGlzLmVuc3VyZU5vdERpc3Bvc2VkKCk7XG4gICAgaWYgKGlzTm9ybWFsVG9rZW4odG8pKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWdpc3Rlcihmcm9tLCB7XG4gICAgICAgIHVzZVRva2VuOiB0b1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyKGZyb20sIHtcbiAgICAgIHVzZUNsYXNzOiB0b1xuICAgIH0pO1xuICB9XG4gIHJlZ2lzdGVySW5zdGFuY2UodG9rZW4sIGluc3RhbmNlMikge1xuICAgIHRoaXMuZW5zdXJlTm90RGlzcG9zZWQoKTtcbiAgICByZXR1cm4gdGhpcy5yZWdpc3Rlcih0b2tlbiwge1xuICAgICAgdXNlVmFsdWU6IGluc3RhbmNlMlxuICAgIH0pO1xuICB9XG4gIHJlZ2lzdGVyU2luZ2xldG9uKGZyb20sIHRvKSB7XG4gICAgdGhpcy5lbnN1cmVOb3REaXNwb3NlZCgpO1xuICAgIGlmIChpc05vcm1hbFRva2VuKGZyb20pKSB7XG4gICAgICBpZiAoaXNOb3JtYWxUb2tlbih0bykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVnaXN0ZXIoXG4gICAgICAgICAgZnJvbSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB1c2VUb2tlbjogdG9cbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgbGlmZWN5Y2xlOiBMaWZlY3ljbGUuU2luZ2xldG9uIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmICh0bykge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWdpc3RlcihcbiAgICAgICAgICBmcm9tLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHVzZUNsYXNzOiB0b1xuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBsaWZlY3ljbGU6IExpZmVjeWNsZS5TaW5nbGV0b24gfVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ2Fubm90IHJlZ2lzdGVyIGEgdHlwZSBuYW1lIGFzIGEgc2luZ2xldG9uIHdpdGhvdXQgYSBcInRvXCIgdG9rZW4nXG4gICAgICApO1xuICAgIH1cbiAgICBsZXQgdXNlQ2xhc3MgPSBmcm9tO1xuICAgIGlmICh0byAmJiAhaXNOb3JtYWxUb2tlbih0bykpIHtcbiAgICAgIHVzZUNsYXNzID0gdG87XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyKFxuICAgICAgZnJvbSxcbiAgICAgIHtcbiAgICAgICAgdXNlQ2xhc3NcbiAgICAgIH0sXG4gICAgICB7IGxpZmVjeWNsZTogTGlmZWN5Y2xlLlNpbmdsZXRvbiB9XG4gICAgKTtcbiAgfVxuICByZXNvbHZlKHRva2VuLCBjb250ZXh0ID0gbmV3IFJlc29sdXRpb25Db250ZXh0KCkpIHtcbiAgICB0aGlzLmVuc3VyZU5vdERpc3Bvc2VkKCk7XG4gICAgY29uc3QgcmVnaXN0cmF0aW9uID0gdGhpcy5nZXRSZWdpc3RyYXRpb24odG9rZW4pO1xuICAgIGlmICghcmVnaXN0cmF0aW9uICYmIGlzTm9ybWFsVG9rZW4odG9rZW4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBBdHRlbXB0ZWQgdG8gcmVzb2x2ZSB1bnJlZ2lzdGVyZWQgZGVwZW5kZW5jeSB0b2tlbjogXCIke3Rva2VuLnRvU3RyaW5nKCl9XCJgXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmV4ZWN1dGVQcmVSZXNvbHV0aW9uSW50ZXJjZXB0b3IodG9rZW4sIFwiU2luZ2xlXCIpO1xuICAgIGlmIChyZWdpc3RyYXRpb24pIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucmVzb2x2ZVJlZ2lzdHJhdGlvbihyZWdpc3RyYXRpb24sIGNvbnRleHQpO1xuICAgICAgdGhpcy5leGVjdXRlUG9zdFJlc29sdXRpb25JbnRlcmNlcHRvcih0b2tlbiwgcmVzdWx0LCBcIlNpbmdsZVwiKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGlmIChpc0NvbnN0cnVjdG9yVG9rZW4odG9rZW4pKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNvbnN0cnVjdCh0b2tlbiwgY29udGV4dCk7XG4gICAgICB0aGlzLmV4ZWN1dGVQb3N0UmVzb2x1dGlvbkludGVyY2VwdG9yKHRva2VuLCByZXN1bHQsIFwiU2luZ2xlXCIpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJBdHRlbXB0ZWQgdG8gY29uc3RydWN0IGFuIHVuZGVmaW5lZCBjb25zdHJ1Y3Rvci4gQ291bGQgbWVhbiBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgcHJvYmxlbS4gVHJ5IHVzaW5nIGBkZWxheWAgZnVuY3Rpb24uXCJcbiAgICApO1xuICB9XG4gIGV4ZWN1dGVQb3N0UmVnaXN0cmF0aW9uSW50ZXJjZXB0b3IodG9rZW4pIHtcbiAgICBpZiAodGhpcy5pbnRlcmNlcHRvcnMucG9zdFJlZ2lzdHJhdGlvbi5oYXModG9rZW4pKSB7XG4gICAgICBjb25zdCByZW1haW5pbmdJbnRlcmNlcHRvcnMgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgaW50ZXJjZXB0b3Igb2YgdGhpcy5pbnRlcmNlcHRvcnMucG9zdFJlZ2lzdHJhdGlvbi5nZXRBbGwodG9rZW4pKSB7XG4gICAgICAgIGlmIChpbnRlcmNlcHRvci5vcHRpb25zLmZyZXF1ZW5jeSAhPT0gXCJPbmNlXCIpIHtcbiAgICAgICAgICByZW1haW5pbmdJbnRlcmNlcHRvcnMucHVzaChpbnRlcmNlcHRvcik7XG4gICAgICAgIH1cbiAgICAgICAgaW50ZXJjZXB0b3IuY2FsbGJhY2sodG9rZW4pO1xuICAgICAgfVxuICAgICAgdGhpcy5pbnRlcmNlcHRvcnMucG9zdFJlZ2lzdHJhdGlvbi5zZXRBbGwodG9rZW4sIHJlbWFpbmluZ0ludGVyY2VwdG9ycyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmludGVyY2VwdG9ycy5wb3N0QW55UmVnaXN0cmF0aW9uKSB7XG4gICAgICB0aGlzLmludGVyY2VwdG9ycy5wb3N0QW55UmVnaXN0cmF0aW9uKHRva2VuKTtcbiAgICB9XG4gIH1cbiAgZXhlY3V0ZVByZVJlc29sdXRpb25JbnRlcmNlcHRvcih0b2tlbiwgcmVzb2x1dGlvblR5cGUpIHtcbiAgICBpZiAodGhpcy5pbnRlcmNlcHRvcnMucHJlUmVzb2x1dGlvbi5oYXModG9rZW4pKSB7XG4gICAgICBjb25zdCByZW1haW5pbmdJbnRlcmNlcHRvcnMgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgaW50ZXJjZXB0b3Igb2YgdGhpcy5pbnRlcmNlcHRvcnMucHJlUmVzb2x1dGlvbi5nZXRBbGwodG9rZW4pKSB7XG4gICAgICAgIGlmIChpbnRlcmNlcHRvci5vcHRpb25zLmZyZXF1ZW5jeSAhPT0gXCJPbmNlXCIpIHtcbiAgICAgICAgICByZW1haW5pbmdJbnRlcmNlcHRvcnMucHVzaChpbnRlcmNlcHRvcik7XG4gICAgICAgIH1cbiAgICAgICAgaW50ZXJjZXB0b3IuY2FsbGJhY2sodG9rZW4sIHJlc29sdXRpb25UeXBlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW50ZXJjZXB0b3JzLnByZVJlc29sdXRpb24uc2V0QWxsKHRva2VuLCByZW1haW5pbmdJbnRlcmNlcHRvcnMpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbnRlcmNlcHRvcnMucHJlQW55UmVzb2x1dGlvbikge1xuICAgICAgdGhpcy5pbnRlcmNlcHRvcnMucHJlQW55UmVzb2x1dGlvbih0b2tlbiwgcmVzb2x1dGlvblR5cGUpO1xuICAgIH1cbiAgfVxuICBleGVjdXRlUG9zdFJlc29sdXRpb25JbnRlcmNlcHRvcih0b2tlbiwgcmVzdWx0LCByZXNvbHV0aW9uVHlwZSkge1xuICAgIGlmICh0aGlzLmludGVyY2VwdG9ycy5wb3N0UmVzb2x1dGlvbi5oYXModG9rZW4pKSB7XG4gICAgICBjb25zdCByZW1haW5pbmdJbnRlcmNlcHRvcnMgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgaW50ZXJjZXB0b3Igb2YgdGhpcy5pbnRlcmNlcHRvcnMucG9zdFJlc29sdXRpb24uZ2V0QWxsKFxuICAgICAgICB0b2tlblxuICAgICAgKSkge1xuICAgICAgICBpZiAoaW50ZXJjZXB0b3Iub3B0aW9ucy5mcmVxdWVuY3kgIT09IFwiT25jZVwiKSB7XG4gICAgICAgICAgcmVtYWluaW5nSW50ZXJjZXB0b3JzLnB1c2goaW50ZXJjZXB0b3IpO1xuICAgICAgICB9XG4gICAgICAgIGludGVyY2VwdG9yLmNhbGxiYWNrKHRva2VuLCByZXN1bHQsIHJlc29sdXRpb25UeXBlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW50ZXJjZXB0b3JzLnBvc3RSZXNvbHV0aW9uLnNldEFsbCh0b2tlbiwgcmVtYWluaW5nSW50ZXJjZXB0b3JzKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaW50ZXJjZXB0b3JzLnBvc3RBbnlSZXNvbHV0aW9uKSB7XG4gICAgICB0aGlzLmludGVyY2VwdG9ycy5wb3N0QW55UmVzb2x1dGlvbih0b2tlbiwgcmVzdWx0LCByZXNvbHV0aW9uVHlwZSk7XG4gICAgfVxuICB9XG4gIHJlc29sdmVSZWdpc3RyYXRpb24ocmVnaXN0cmF0aW9uLCBjb250ZXh0KSB7XG4gICAgdGhpcy5lbnN1cmVOb3REaXNwb3NlZCgpO1xuICAgIGlmIChyZWdpc3RyYXRpb24ub3B0aW9ucy5saWZlY3ljbGUgPT09IExpZmVjeWNsZS5SZXNvbHV0aW9uU2NvcGVkICYmIGNvbnRleHQuc2NvcGVkUmVzb2x1dGlvbnMuaGFzKHJlZ2lzdHJhdGlvbikpIHtcbiAgICAgIHJldHVybiBjb250ZXh0LnNjb3BlZFJlc29sdXRpb25zLmdldChyZWdpc3RyYXRpb24pO1xuICAgIH1cbiAgICBjb25zdCBpc1NpbmdsZXRvbiA9IHJlZ2lzdHJhdGlvbi5vcHRpb25zLmxpZmVjeWNsZSA9PT0gTGlmZWN5Y2xlLlNpbmdsZXRvbjtcbiAgICBjb25zdCBpc0NvbnRhaW5lclNjb3BlZCA9IHJlZ2lzdHJhdGlvbi5vcHRpb25zLmxpZmVjeWNsZSA9PT0gTGlmZWN5Y2xlLkNvbnRhaW5lclNjb3BlZDtcbiAgICBjb25zdCByZXR1cm5JbnN0YW5jZSA9IGlzU2luZ2xldG9uIHx8IGlzQ29udGFpbmVyU2NvcGVkO1xuICAgIGxldCBuZXdSZXNvbHV0aW9uID0gdHJ1ZTtcbiAgICBsZXQgcmVzb2x2ZWQ7XG4gICAgaWYgKGlzVmFsdWVQcm92aWRlcihyZWdpc3RyYXRpb24ucHJvdmlkZXIpKSB7XG4gICAgICByZXNvbHZlZCA9IHJlZ2lzdHJhdGlvbi5wcm92aWRlci51c2VWYWx1ZTtcbiAgICB9IGVsc2UgaWYgKGlzVG9rZW5Qcm92aWRlcihyZWdpc3RyYXRpb24ucHJvdmlkZXIpKSB7XG4gICAgICBuZXdSZXNvbHV0aW9uID0gcmV0dXJuSW5zdGFuY2U7XG4gICAgICByZXNvbHZlZCA9IHJldHVybkluc3RhbmNlID8gcmVnaXN0cmF0aW9uLmluc3RhbmNlIHx8IChyZWdpc3RyYXRpb24uaW5zdGFuY2UgPSB0aGlzLnJlc29sdmUoXG4gICAgICAgIHJlZ2lzdHJhdGlvbi5wcm92aWRlci51c2VUb2tlbixcbiAgICAgICAgY29udGV4dFxuICAgICAgKSkgOiB0aGlzLnJlc29sdmUocmVnaXN0cmF0aW9uLnByb3ZpZGVyLnVzZVRva2VuLCBjb250ZXh0KTtcbiAgICB9IGVsc2UgaWYgKGlzQ2xhc3NQcm92aWRlcihyZWdpc3RyYXRpb24ucHJvdmlkZXIpKSB7XG4gICAgICBuZXdSZXNvbHV0aW9uID0gcmV0dXJuSW5zdGFuY2U7XG4gICAgICByZXNvbHZlZCA9IHJldHVybkluc3RhbmNlID8gcmVnaXN0cmF0aW9uLmluc3RhbmNlIHx8IChyZWdpc3RyYXRpb24uaW5zdGFuY2UgPSB0aGlzLmNvbnN0cnVjdChcbiAgICAgICAgcmVnaXN0cmF0aW9uLnByb3ZpZGVyLnVzZUNsYXNzLFxuICAgICAgICBjb250ZXh0XG4gICAgICApKSA6IHRoaXMuY29uc3RydWN0KHJlZ2lzdHJhdGlvbi5wcm92aWRlci51c2VDbGFzcywgY29udGV4dCk7XG4gICAgfSBlbHNlIGlmIChpc0ZhY3RvcnlQcm92aWRlcihyZWdpc3RyYXRpb24ucHJvdmlkZXIpKSB7XG4gICAgICByZXNvbHZlZCA9IHJlZ2lzdHJhdGlvbi5wcm92aWRlci51c2VGYWN0b3J5KHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdSZXNvbHV0aW9uID0gZmFsc2U7XG4gICAgICByZXNvbHZlZCA9IHRoaXMuY29uc3RydWN0KHJlZ2lzdHJhdGlvbi5wcm92aWRlciwgY29udGV4dCk7XG4gICAgfVxuICAgIGlmIChyZWdpc3RyYXRpb24ub3B0aW9ucy5saWZlY3ljbGUgPT09IExpZmVjeWNsZS5SZXNvbHV0aW9uU2NvcGVkKSB7XG4gICAgICBjb250ZXh0LnNjb3BlZFJlc29sdXRpb25zLnNldChyZWdpc3RyYXRpb24sIHJlc29sdmVkKTtcbiAgICB9XG4gICAgaWYgKG5ld1Jlc29sdXRpb24gJiYgaXNEaXNwb3NhYmxlKHJlc29sdmVkKSkge1xuICAgICAgdGhpcy5kaXNwb3NhYmxlcy5hZGQocmVzb2x2ZWQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzb2x2ZWQ7XG4gIH1cbiAgcmVzb2x2ZUFsbCh0b2tlbiwgY29udGV4dCA9IG5ldyBSZXNvbHV0aW9uQ29udGV4dCgpKSB7XG4gICAgdGhpcy5lbnN1cmVOb3REaXNwb3NlZCgpO1xuICAgIGNvbnN0IHJlZ2lzdHJhdGlvbnMgPSB0aGlzLmdldEFsbFJlZ2lzdHJhdGlvbnModG9rZW4pO1xuICAgIGlmICghcmVnaXN0cmF0aW9ucyAmJiBpc05vcm1hbFRva2VuKHRva2VuKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQXR0ZW1wdGVkIHRvIHJlc29sdmUgdW5yZWdpc3RlcmVkIGRlcGVuZGVuY3kgdG9rZW46IFwiJHt0b2tlbi50b1N0cmluZygpfVwiYFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5leGVjdXRlUHJlUmVzb2x1dGlvbkludGVyY2VwdG9yKHRva2VuLCBcIkFsbFwiKTtcbiAgICBpZiAocmVnaXN0cmF0aW9ucykge1xuICAgICAgY29uc3QgcmVzdWx0MiA9IHJlZ2lzdHJhdGlvbnMubWFwKFxuICAgICAgICAoaXRlbSkgPT4gdGhpcy5yZXNvbHZlUmVnaXN0cmF0aW9uKGl0ZW0sIGNvbnRleHQpXG4gICAgICApO1xuICAgICAgdGhpcy5leGVjdXRlUG9zdFJlc29sdXRpb25JbnRlcmNlcHRvcih0b2tlbiwgcmVzdWx0MiwgXCJBbGxcIik7XG4gICAgICByZXR1cm4gcmVzdWx0MjtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gW3RoaXMuY29uc3RydWN0KHRva2VuLCBjb250ZXh0KV07XG4gICAgdGhpcy5leGVjdXRlUG9zdFJlc29sdXRpb25JbnRlcmNlcHRvcih0b2tlbiwgcmVzdWx0LCBcIkFsbFwiKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHJlZ2lzdGVyZWRUb2tlbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZ2lzdHJ5LnRva2VucygpO1xuICB9XG4gIGlzUmVnaXN0ZXJlZCh0b2tlbiwgcmVjdXJzaXZlID0gZmFsc2UpIHtcbiAgICB0aGlzLmVuc3VyZU5vdERpc3Bvc2VkKCk7XG4gICAgcmV0dXJuIHRoaXMuX3JlZ2lzdHJ5Lmhhcyh0b2tlbikgfHwgKChyZWN1cnNpdmUgJiYgdGhpcy5wYXJlbnQ/LmlzUmVnaXN0ZXJlZCh0b2tlbiwgdHJ1ZSkpID8/IGZhbHNlKTtcbiAgfVxuICByZXNldCgpIHtcbiAgICB0aGlzLmVuc3VyZU5vdERpc3Bvc2VkKCk7XG4gICAgdGhpcy5fcmVnaXN0cnkuY2xlYXIoKTtcbiAgICB0aGlzLmludGVyY2VwdG9ycy5wcmVSZXNvbHV0aW9uLmNsZWFyKCk7XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMucG9zdFJlc29sdXRpb24uY2xlYXIoKTtcbiAgfVxuICB1bnJlZ2lzdGVyQWxsKCkge1xuICAgIHRoaXMuX3JlZ2lzdHJ5LmNsZWFyKCk7XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMucHJlUmVzb2x1dGlvbi5jbGVhcigpO1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnBvc3RSZXNvbHV0aW9uLmNsZWFyKCk7XG4gIH1cbiAgdW5yZWdpc3Rlcih0b2tlbikge1xuICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IHRoaXMuZ2V0UmVnaXN0cmF0aW9uKHRva2VuKTtcbiAgICBpZiAoIXJlZ2lzdHJhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQXR0ZW1wdGVkIHRvIGRlbGV0ZSB1bnJlZ2lzdGVyZWQgZGVwZW5kZW5jeSB0b2tlbjogXCIke3Rva2VuLnRvU3RyaW5nKCl9XCJgXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl9yZWdpc3RyeS5kZWxldGUodG9rZW4pO1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnByZVJlc29sdXRpb24uZGVsZXRlKHRva2VuKTtcbiAgICB0aGlzLmludGVyY2VwdG9ycy5wb3N0UmVzb2x1dGlvbi5kZWxldGUodG9rZW4pO1xuICB9XG4gIGNsZWFySW5zdGFuY2VzKCkge1xuICAgIHRoaXMuZW5zdXJlTm90RGlzcG9zZWQoKTtcbiAgICBmb3IgKGNvbnN0IFt0b2tlbiwgcmVnaXN0cmF0aW9uc10gb2YgdGhpcy5fcmVnaXN0cnkuZW50cmllcygpKSB7XG4gICAgICB0aGlzLl9yZWdpc3RyeS5zZXRBbGwoXG4gICAgICAgIHRva2VuLFxuICAgICAgICByZWdpc3RyYXRpb25zLmZpbHRlcigocmVnaXN0cmF0aW9uKSA9PiAhaXNWYWx1ZVByb3ZpZGVyKHJlZ2lzdHJhdGlvbi5wcm92aWRlcikpLm1hcCgocmVnaXN0cmF0aW9uKSA9PiB7XG4gICAgICAgICAgcmVnaXN0cmF0aW9uLmluc3RhbmNlID0gdm9pZCAwO1xuICAgICAgICAgIHJldHVybiByZWdpc3RyYXRpb247XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuICBjcmVhdGVDaGlsZENvbnRhaW5lcigpIHtcbiAgICB0aGlzLmVuc3VyZU5vdERpc3Bvc2VkKCk7XG4gICAgY29uc3QgY2hpbGRDb250YWluZXIgPSBuZXcgSW50ZXJuYWxEZXBlbmRlbmN5Q29udGFpbmVyKHRoaXMpO1xuICAgIGZvciAoY29uc3QgW3Rva2VuLCByZWdpc3RyYXRpb25zXSBvZiB0aGlzLl9yZWdpc3RyeS5lbnRyaWVzKCkpIHtcbiAgICAgIGlmIChyZWdpc3RyYXRpb25zLnNvbWUoXG4gICAgICAgICh7IG9wdGlvbnMgfSkgPT4gb3B0aW9ucy5saWZlY3ljbGUgPT09IExpZmVjeWNsZS5Db250YWluZXJTY29wZWRcbiAgICAgICkpIHtcbiAgICAgICAgY2hpbGRDb250YWluZXIuX3JlZ2lzdHJ5LnNldEFsbChcbiAgICAgICAgICB0b2tlbixcbiAgICAgICAgICByZWdpc3RyYXRpb25zLm1hcCgocmVnaXN0cmF0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVnaXN0cmF0aW9uLm9wdGlvbnMubGlmZWN5Y2xlID09PSBMaWZlY3ljbGUuQ29udGFpbmVyU2NvcGVkKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZXI6IHJlZ2lzdHJhdGlvbi5wcm92aWRlcixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiByZWdpc3RyYXRpb24ub3B0aW9uc1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdHJhdGlvbjtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2hpbGRDb250YWluZXI7XG4gIH1cbiAgYWZ0ZXJSZWdpc3RyYXRpb24odG9rZW4sIGNhbGxiYWNrLCBvcHRpb25zID0geyBmcmVxdWVuY3k6IFwiQWx3YXlzXCIgfSkge1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnBvc3RSZWdpc3RyYXRpb24uc2V0KHRva2VuLCB7XG4gICAgICBjYWxsYmFjayxcbiAgICAgIG9wdGlvbnNcbiAgICB9KTtcbiAgfVxuICBhZnRlckFueVJlZ2lzdHJhdGlvbihjYWxsYmFjaykge1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnBvc3RBbnlSZWdpc3RyYXRpb24gPSBjYWxsYmFjaztcbiAgfVxuICBiZWZvcmVSZXNvbHV0aW9uKHRva2VuLCBjYWxsYmFjaywgb3B0aW9ucyA9IHsgZnJlcXVlbmN5OiBcIkFsd2F5c1wiIH0pIHtcbiAgICB0aGlzLmludGVyY2VwdG9ycy5wcmVSZXNvbHV0aW9uLnNldCh0b2tlbiwge1xuICAgICAgY2FsbGJhY2ssXG4gICAgICBvcHRpb25zXG4gICAgfSk7XG4gIH1cbiAgYmVmb3JlQW55UmVzb2x1dGlvbihjYWxsYmFjaykge1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnByZUFueVJlc29sdXRpb24gPSBjYWxsYmFjaztcbiAgfVxuICBhZnRlclJlc29sdXRpb24odG9rZW4sIGNhbGxiYWNrLCBvcHRpb25zID0geyBmcmVxdWVuY3k6IFwiQWx3YXlzXCIgfSkge1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnBvc3RSZXNvbHV0aW9uLnNldCh0b2tlbiwge1xuICAgICAgY2FsbGJhY2ssXG4gICAgICBvcHRpb25zXG4gICAgfSk7XG4gIH1cbiAgYWZ0ZXJBbnlSZXNvbHV0aW9uKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMucG9zdEFueVJlc29sdXRpb24gPSBjYWxsYmFjaztcbiAgfVxuICBhc3luYyBkaXNwb3NlKCkge1xuICAgIHRoaXMuZGlzcG9zZWQgPSB0cnVlO1xuICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgdGhpcy5kaXNwb3NhYmxlcy5mb3JFYWNoKChkaXNwb3NhYmxlKSA9PiB7XG4gICAgICBjb25zdCBtYXliZVByb21pc2UgPSBkaXNwb3NhYmxlLmRpc3Bvc2UoKTtcbiAgICAgIGlmIChtYXliZVByb21pc2UpIHtcbiAgICAgICAgcHJvbWlzZXMucHVzaChtYXliZVByb21pc2UpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgfVxuICBnZXRSZWdpc3RyYXRpb24odG9rZW4pIHtcbiAgICBpZiAodGhpcy5pc1JlZ2lzdGVyZWQodG9rZW4pKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVnaXN0cnkuZ2V0KHRva2VuKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJlbnQuZ2V0UmVnaXN0cmF0aW9uKHRva2VuKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgZ2V0QWxsUmVnaXN0cmF0aW9ucyh0b2tlbikge1xuICAgIGlmICh0aGlzLmlzUmVnaXN0ZXJlZCh0b2tlbikpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZWdpc3RyeS5nZXRBbGwodG9rZW4pO1xuICAgIH1cbiAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmVudC5nZXRBbGxSZWdpc3RyYXRpb25zKHRva2VuKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3RydWN0KGN0b3IsIGNvbnRleHQpIHtcbiAgICBpZiAoY3RvciBpbnN0YW5jZW9mIERlbGF5ZWRDb25zdHJ1Y3Rvcikge1xuICAgICAgcmV0dXJuIGN0b3IuY3JlYXRlUHJveHkoXG4gICAgICAgICh0YXJnZXQpID0+IHRoaXMucmVzb2x2ZSh0YXJnZXQsIGNvbnRleHQpXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBpbnN0YW5jZTIgPSAoKCkgPT4ge1xuICAgICAgY29uc3QgcGFyYW1JbmZvID0gUmVmbGVjdC5nZXRNZXRhZGF0YShQQVJBTV9JTkZPU19NRVRBREFUQV9LRVksIGN0b3IpO1xuICAgICAgaWYgKCFwYXJhbUluZm8gfHwgcGFyYW1JbmZvLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAoY3Rvci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gbmV3IGN0b3IoKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFR5cGVJbmZvIG5vdCBrbm93biBmb3IgXCIke2N0b3IubmFtZX1cImApO1xuICAgICAgfVxuICAgICAgY29uc3QgcGFyYW1zID0gcGFyYW1JbmZvLm1hcCh0aGlzLnJlc29sdmVQYXJhbXMoY29udGV4dCwgY3RvcikpO1xuICAgICAgcmV0dXJuIG5ldyBjdG9yKC4uLnBhcmFtcyk7XG4gICAgfSkoKTtcbiAgICBpZiAoaXNEaXNwb3NhYmxlKGluc3RhbmNlMikpIHtcbiAgICAgIHRoaXMuZGlzcG9zYWJsZXMuYWRkKGluc3RhbmNlMik7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZTI7XG4gIH1cbiAgcmVzb2x2ZVBhcmFtcyhjb250ZXh0LCBjdG9yKSB7XG4gICAgcmV0dXJuIChwYXJhbSwgaWR4KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoaXNUb2tlbkRlc2NyaXB0b3IocGFyYW0pKSB7XG4gICAgICAgICAgaWYgKGlzVHJhbnNmb3JtRGVzY3JpcHRvcihwYXJhbSkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJhbS5tdWx0aXBsZSA/IHRoaXMucmVzb2x2ZShwYXJhbS50cmFuc2Zvcm0pLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlQWxsKHBhcmFtLnRva2VuKSxcbiAgICAgICAgICAgICAgLi4ucGFyYW0udHJhbnNmb3JtQXJnc1xuICAgICAgICAgICAgKSA6IHRoaXMucmVzb2x2ZShwYXJhbS50cmFuc2Zvcm0pLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlKHBhcmFtLnRva2VuLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgLi4ucGFyYW0udHJhbnNmb3JtQXJnc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHBhcmFtLm11bHRpcGxlID8gdGhpcy5yZXNvbHZlQWxsKHBhcmFtLnRva2VuKSA6IHRoaXMucmVzb2x2ZShwYXJhbS50b2tlbiwgY29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVHJhbnNmb3JtRGVzY3JpcHRvcihwYXJhbSkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlKHBhcmFtLnRyYW5zZm9ybSwgY29udGV4dCkudHJhbnNmb3JtKFxuICAgICAgICAgICAgdGhpcy5yZXNvbHZlKHBhcmFtLnRva2VuLCBjb250ZXh0KSxcbiAgICAgICAgICAgIC4uLnBhcmFtLnRyYW5zZm9ybUFyZ3NcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlc29sdmUocGFyYW0sIGNvbnRleHQpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdEVycm9yQ3RvcihjdG9yLCBpZHgsIGVycm9yKSk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuICBlbnN1cmVOb3REaXNwb3NlZCgpIHtcbiAgICBpZiAodGhpcy5kaXNwb3NlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIlRoaXMgY29udGFpbmVyIGhhcyBiZWVuIGRpc3Bvc2VkLCB5b3UgY2Fubm90IGludGVyYWN0IHdpdGggYSBkaXNwb3NlZCBjb250YWluZXJcIlxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbmNvbnN0IGluc3RhbmNlID0gbmV3IEludGVybmFsRGVwZW5kZW5jeUNvbnRhaW5lcigpO1xuXG5mdW5jdGlvbiBhdXRvSW5qZWN0YWJsZSgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHRhcmdldCkge1xuICAgIGNvbnN0IHBhcmFtSW5mbyA9IGdldFBhcmFtSW5mbyh0YXJnZXQpO1xuICAgIHJldHVybiBjbGFzcyBleHRlbmRzIHRhcmdldCB7XG4gICAgICBjb25zdHJ1Y3RvciguLi5hcmdzKSB7XG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgIC4uLmFyZ3MuY29uY2F0KFxuICAgICAgICAgICAgcGFyYW1JbmZvLnNsaWNlKGFyZ3MubGVuZ3RoKS5tYXAoKHR5cGUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzVG9rZW5EZXNjcmlwdG9yKHR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICBpZiAoaXNUcmFuc2Zvcm1EZXNjcmlwdG9yKHR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlLm11bHRpcGxlID8gaW5zdGFuY2UucmVzb2x2ZSh0eXBlLnRyYW5zZm9ybSkudHJhbnNmb3JtKFxuICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnJlc29sdmVBbGwodHlwZS50b2tlbiksXG4gICAgICAgICAgICAgICAgICAgICAgLi4udHlwZS50cmFuc2Zvcm1BcmdzXG4gICAgICAgICAgICAgICAgICAgICkgOiBpbnN0YW5jZS5yZXNvbHZlKHR5cGUudHJhbnNmb3JtKS50cmFuc2Zvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UucmVzb2x2ZSh0eXBlLnRva2VuKSxcbiAgICAgICAgICAgICAgICAgICAgICAuLi50eXBlLnRyYW5zZm9ybUFyZ3NcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlLm11bHRpcGxlID8gaW5zdGFuY2UucmVzb2x2ZUFsbCh0eXBlLnRva2VuKSA6IGluc3RhbmNlLnJlc29sdmUodHlwZS50b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc1RyYW5zZm9ybURlc2NyaXB0b3IodHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZS5yZXNvbHZlKHR5cGUudHJhbnNmb3JtKS50cmFuc2Zvcm0oXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnJlc29sdmUodHlwZS50b2tlbiksXG4gICAgICAgICAgICAgICAgICAgIC4uLnR5cGUudHJhbnNmb3JtQXJnc1xuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLnJlc29sdmUodHlwZSk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXJnSW5kZXggPSBpbmRleCArIGFyZ3MubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgIGZvcm1hdEVycm9yQ3Rvcih0YXJnZXQsIGFyZ0luZGV4LCBlcnJvcilcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9O1xuICB9O1xufVxuXG5mdW5jdGlvbiBpbmplY3QodG9rZW4pIHtcbiAgcmV0dXJuIGRlZmluZUluamVjdGlvblRva2VuTWV0YWRhdGEodG9rZW4pO1xufVxuXG5mdW5jdGlvbiBpbmplY3RBbGwodG9rZW4pIHtcbiAgY29uc3QgZGF0YSA9IHsgdG9rZW4sIG11bHRpcGxlOiB0cnVlIH07XG4gIHJldHVybiBkZWZpbmVJbmplY3Rpb25Ub2tlbk1ldGFkYXRhKGRhdGEpO1xufVxuXG5mdW5jdGlvbiBpbmplY3RBbGxXaXRoVHJhbnNmb3JtKHRva2VuLCB0cmFuc2Zvcm1lciwgLi4uYXJncykge1xuICBjb25zdCBkYXRhID0ge1xuICAgIHRva2VuLFxuICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIHRyYW5zZm9ybTogdHJhbnNmb3JtZXIsXG4gICAgdHJhbnNmb3JtQXJnczogYXJnc1xuICB9O1xuICByZXR1cm4gZGVmaW5lSW5qZWN0aW9uVG9rZW5NZXRhZGF0YShkYXRhKTtcbn1cblxuZnVuY3Rpb24gaW5qZWN0V2l0aFRyYW5zZm9ybSh0b2tlbiwgdHJhbnNmb3JtZXIsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGRlZmluZUluamVjdGlvblRva2VuTWV0YWRhdGEodG9rZW4sIHtcbiAgICB0cmFuc2Zvcm1Ub2tlbjogdHJhbnNmb3JtZXIsXG4gICAgYXJnc1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaW5qZWN0YWJsZSgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHRhcmdldCkge1xuICAgIGNvbnN0IHBhcmFtSW5mbyA9IGdldFBhcmFtSW5mbyh0YXJnZXQpO1xuICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoUEFSQU1fSU5GT1NfTUVUQURBVEFfS0VZLCBwYXJhbUluZm8sIHRhcmdldCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdHJ5KHJlZ2lzdHJhdGlvbnMgPSBbXSkge1xuICByZXR1cm4gZnVuY3Rpb24odGFyZ2V0KSB7XG4gICAgcmVnaXN0cmF0aW9ucy5mb3JFYWNoKFxuICAgICAgKHsgdG9rZW4sIG9wdGlvbnMsIC4uLnByb3ZpZGVyIH0pID0+IGluc3RhbmNlLnJlZ2lzdGVyKHRva2VuLCBwcm92aWRlciwgb3B0aW9ucylcbiAgICApO1xuICAgIHJldHVybiB0YXJnZXQ7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHNjb3BlZChsaWZlY3ljbGUsIHRva2VuKSB7XG4gIHJldHVybiBmdW5jdGlvbih0YXJnZXQpIHtcbiAgICBpbmplY3RhYmxlKCkodGFyZ2V0KTtcbiAgICBpbnN0YW5jZS5yZWdpc3Rlcih0b2tlbiB8fCB0YXJnZXQsIHRhcmdldCwge1xuICAgICAgbGlmZWN5Y2xlXG4gICAgfSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHNpbmdsZXRvbigpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHRhcmdldCkge1xuICAgIGluamVjdGFibGUoKSh0YXJnZXQpO1xuICAgIGluc3RhbmNlLnJlZ2lzdGVyU2luZ2xldG9uKHRhcmdldCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGluc3RhbmNlQ2FjaGluZ0ZhY3RvcnkoZmFjdG9yeUZ1bmMpIHtcbiAgbGV0IGluc3RhbmNlO1xuICByZXR1cm4gKGRlcGVuZGVuY3lDb250YWluZXIpID0+IHtcbiAgICBpZiAoaW5zdGFuY2UgPT0gbnVsbCkge1xuICAgICAgaW5zdGFuY2UgPSBmYWN0b3J5RnVuYyhkZXBlbmRlbmN5Q29udGFpbmVyKTtcbiAgICB9XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9O1xufVxuXG5mdW5jdGlvbiBpbnN0YW5jZVBlckNvbnRhaW5lckNhY2hpbmdGYWN0b3J5KGZhY3RvcnlGdW5jKSB7XG4gIGNvbnN0IGNhY2hlID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrTWFwKCk7XG4gIHJldHVybiAoZGVwZW5kZW5jeUNvbnRhaW5lcikgPT4ge1xuICAgIGxldCBpbnN0YW5jZSA9IGNhY2hlLmdldChkZXBlbmRlbmN5Q29udGFpbmVyKTtcbiAgICBpZiAoaW5zdGFuY2UgPT0gbnVsbCkge1xuICAgICAgaW5zdGFuY2UgPSBmYWN0b3J5RnVuYyhkZXBlbmRlbmN5Q29udGFpbmVyKTtcbiAgICAgIGNhY2hlLnNldChkZXBlbmRlbmN5Q29udGFpbmVyLCBpbnN0YW5jZSk7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gcHJlZGljYXRlQXdhcmVDbGFzc0ZhY3RvcnkocHJlZGljYXRlLCB0cnVlQ29uc3RydWN0b3IsIGZhbHNlQ29uc3RydWN0b3IsIHVzZUNhY2hpbmcgPSB0cnVlKSB7XG4gIGxldCBpbnN0YW5jZTtcbiAgbGV0IHByZXZpb3VzUHJlZGljYXRlO1xuICByZXR1cm4gKGRlcGVuZGVuY3lDb250YWluZXIpID0+IHtcbiAgICBjb25zdCBjdXJyZW50UHJlZGljYXRlID0gcHJlZGljYXRlKGRlcGVuZGVuY3lDb250YWluZXIpO1xuICAgIGlmICghdXNlQ2FjaGluZyB8fCBwcmV2aW91c1ByZWRpY2F0ZSAhPT0gY3VycmVudFByZWRpY2F0ZSkge1xuICAgICAgaWYgKHByZXZpb3VzUHJlZGljYXRlID0gY3VycmVudFByZWRpY2F0ZSkge1xuICAgICAgICBpbnN0YW5jZSA9IGRlcGVuZGVuY3lDb250YWluZXIucmVzb2x2ZSh0cnVlQ29uc3RydWN0b3IpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5zdGFuY2UgPSBkZXBlbmRlbmN5Q29udGFpbmVyLnJlc29sdmUoZmFsc2VDb25zdHJ1Y3Rvcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfTtcbn1cblxuaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmdldE1ldGFkYXRhKSB7XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgdHN5cmluZ2UtbmVvIHJlcXVpcmVzIGEgcmVmbGVjdCBwb2x5ZmlsbC4gUGxlYXNlIGFkZCAnaW1wb3J0IFwicmVmbGVjdC1tZXRhZGF0YVwiJyB0byB0aGUgdG9wIG9mIHlvdXIgZW50cnkgcG9pbnQuYFxuICApO1xufVxuXG5leHBvcnQgeyBMaWZlY3ljbGUsIGF1dG9JbmplY3RhYmxlLCBpbnN0YW5jZSBhcyBjb250YWluZXIsIGRlbGF5LCBpbmplY3QsIGluamVjdEFsbCwgaW5qZWN0QWxsV2l0aFRyYW5zZm9ybSwgaW5qZWN0V2l0aFRyYW5zZm9ybSwgaW5qZWN0YWJsZSwgaW5zdGFuY2VDYWNoaW5nRmFjdG9yeSwgaW5zdGFuY2VQZXJDb250YWluZXJDYWNoaW5nRmFjdG9yeSwgaXNDbGFzc1Byb3ZpZGVyLCBpc0ZhY3RvcnlQcm92aWRlciwgaXNOb3JtYWxUb2tlbiwgaXNUb2tlblByb3ZpZGVyLCBpc1ZhbHVlUHJvdmlkZXIsIHByZWRpY2F0ZUF3YXJlQ2xhc3NGYWN0b3J5LCByZWdpc3RyeSwgc2NvcGVkLCBzaW5nbGV0b24gfTtcbiIsImltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIlxuaW1wb3J0IHtzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZS1uZW9cIlxuXG5Ac2luZ2xldG9uKClcbmNsYXNzIFRva2VuIHtcbiAgICBwdWJsaWMgY3VycmVudFRva2VuOlN0cmluZ1xuXG4gICAgaW5pdCgpIHtcbiAgICAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW4oKVxuICAgICAgICB9LCAyKjYwKjEwMDApXG4gICAgfVxuICAgIHJlZnJlc2hUb2tlbigpOiB2b2lkIHtcbiAgICAgICAgYXhpb3MuZ2V0KCcvYXBwcy9hcGkvY29udGFjdC9yZWZyZXNoJywge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy5jdXJyZW50VG9rZW5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkudGhlbigoIHJlc3BvbnNlICkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSByZXNwb25zZS5kYXRhLnRva2VuXG4gICAgICAgIH0pXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBUb2tlblxuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogc2NoZWR1bGVyLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0JztmdW5jdGlvbiBmKGEsYil7dmFyIGM9YS5sZW5ndGg7YS5wdXNoKGIpO2E6Zm9yKDswPGM7KXt2YXIgZD1jLTE+Pj4xLGU9YVtkXTtpZigwPGcoZSxiKSlhW2RdPWIsYVtjXT1lLGM9ZDtlbHNlIGJyZWFrIGF9fWZ1bmN0aW9uIGgoYSl7cmV0dXJuIDA9PT1hLmxlbmd0aD9udWxsOmFbMF19ZnVuY3Rpb24gayhhKXtpZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIGI9YVswXSxjPWEucG9wKCk7aWYoYyE9PWIpe2FbMF09YzthOmZvcih2YXIgZD0wLGU9YS5sZW5ndGgsdz1lPj4+MTtkPHc7KXt2YXIgbT0yKihkKzEpLTEsQz1hW21dLG49bSsxLHg9YVtuXTtpZigwPmcoQyxjKSluPGUmJjA+Zyh4LEMpPyhhW2RdPXgsYVtuXT1jLGQ9bik6KGFbZF09QyxhW21dPWMsZD1tKTtlbHNlIGlmKG48ZSYmMD5nKHgsYykpYVtkXT14LGFbbl09YyxkPW47ZWxzZSBicmVhayBhfX1yZXR1cm4gYn1cbmZ1bmN0aW9uIGcoYSxiKXt2YXIgYz1hLnNvcnRJbmRleC1iLnNvcnRJbmRleDtyZXR1cm4gMCE9PWM/YzphLmlkLWIuaWR9aWYoXCJvYmplY3RcIj09PXR5cGVvZiBwZXJmb3JtYW5jZSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIHBlcmZvcm1hbmNlLm5vdyl7dmFyIGw9cGVyZm9ybWFuY2U7ZXhwb3J0cy51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gbC5ub3coKX19ZWxzZXt2YXIgcD1EYXRlLHE9cC5ub3coKTtleHBvcnRzLnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiBwLm5vdygpLXF9fXZhciByPVtdLHQ9W10sdT0xLHY9bnVsbCx5PTMsej0hMSxBPSExLEI9ITEsRD1cImZ1bmN0aW9uXCI9PT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0Om51bGwsRT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDpudWxsLEY9XCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBzZXRJbW1lZGlhdGU/c2V0SW1tZWRpYXRlOm51bGw7XG5cInVuZGVmaW5lZFwiIT09dHlwZW9mIG5hdmlnYXRvciYmdm9pZCAwIT09bmF2aWdhdG9yLnNjaGVkdWxpbmcmJnZvaWQgMCE9PW5hdmlnYXRvci5zY2hlZHVsaW5nLmlzSW5wdXRQZW5kaW5nJiZuYXZpZ2F0b3Iuc2NoZWR1bGluZy5pc0lucHV0UGVuZGluZy5iaW5kKG5hdmlnYXRvci5zY2hlZHVsaW5nKTtmdW5jdGlvbiBHKGEpe2Zvcih2YXIgYj1oKHQpO251bGwhPT1iOyl7aWYobnVsbD09PWIuY2FsbGJhY2spayh0KTtlbHNlIGlmKGIuc3RhcnRUaW1lPD1hKWsodCksYi5zb3J0SW5kZXg9Yi5leHBpcmF0aW9uVGltZSxmKHIsYik7ZWxzZSBicmVhaztiPWgodCl9fWZ1bmN0aW9uIEgoYSl7Qj0hMTtHKGEpO2lmKCFBKWlmKG51bGwhPT1oKHIpKUE9ITAsSShKKTtlbHNle3ZhciBiPWgodCk7bnVsbCE9PWImJksoSCxiLnN0YXJ0VGltZS1hKX19XG5mdW5jdGlvbiBKKGEsYil7QT0hMTtCJiYoQj0hMSxFKEwpLEw9LTEpO3o9ITA7dmFyIGM9eTt0cnl7RyhiKTtmb3Iodj1oKHIpO251bGwhPT12JiYoISh2LmV4cGlyYXRpb25UaW1lPmIpfHxhJiYhTSgpKTspe3ZhciBkPXYuY2FsbGJhY2s7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQpe3YuY2FsbGJhY2s9bnVsbDt5PXYucHJpb3JpdHlMZXZlbDt2YXIgZT1kKHYuZXhwaXJhdGlvblRpbWU8PWIpO2I9ZXhwb3J0cy51bnN0YWJsZV9ub3coKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgZT92LmNhbGxiYWNrPWU6dj09PWgocikmJmsocik7RyhiKX1lbHNlIGsocik7dj1oKHIpfWlmKG51bGwhPT12KXZhciB3PSEwO2Vsc2V7dmFyIG09aCh0KTtudWxsIT09bSYmSyhILG0uc3RhcnRUaW1lLWIpO3c9ITF9cmV0dXJuIHd9ZmluYWxseXt2PW51bGwseT1jLHo9ITF9fXZhciBOPSExLE89bnVsbCxMPS0xLFA9NSxRPS0xO1xuZnVuY3Rpb24gTSgpe3JldHVybiBleHBvcnRzLnVuc3RhYmxlX25vdygpLVE8UD8hMTohMH1mdW5jdGlvbiBSKCl7aWYobnVsbCE9PU8pe3ZhciBhPWV4cG9ydHMudW5zdGFibGVfbm93KCk7UT1hO3ZhciBiPSEwO3RyeXtiPU8oITAsYSl9ZmluYWxseXtiP1MoKTooTj0hMSxPPW51bGwpfX1lbHNlIE49ITF9dmFyIFM7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIEYpUz1mdW5jdGlvbigpe0YoUil9O2Vsc2UgaWYoXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBNZXNzYWdlQ2hhbm5lbCl7dmFyIFQ9bmV3IE1lc3NhZ2VDaGFubmVsLFU9VC5wb3J0MjtULnBvcnQxLm9ubWVzc2FnZT1SO1M9ZnVuY3Rpb24oKXtVLnBvc3RNZXNzYWdlKG51bGwpfX1lbHNlIFM9ZnVuY3Rpb24oKXtEKFIsMCl9O2Z1bmN0aW9uIEkoYSl7Tz1hO058fChOPSEwLFMoKSl9ZnVuY3Rpb24gSyhhLGIpe0w9RChmdW5jdGlvbigpe2EoZXhwb3J0cy51bnN0YWJsZV9ub3coKSl9LGIpfVxuZXhwb3J0cy51bnN0YWJsZV9JZGxlUHJpb3JpdHk9NTtleHBvcnRzLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5PTE7ZXhwb3J0cy51bnN0YWJsZV9Mb3dQcmlvcml0eT00O2V4cG9ydHMudW5zdGFibGVfTm9ybWFsUHJpb3JpdHk9MztleHBvcnRzLnVuc3RhYmxlX1Byb2ZpbGluZz1udWxsO2V4cG9ydHMudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHk9MjtleHBvcnRzLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrPWZ1bmN0aW9uKGEpe2EuY2FsbGJhY2s9bnVsbH07ZXhwb3J0cy51bnN0YWJsZV9jb250aW51ZUV4ZWN1dGlvbj1mdW5jdGlvbigpe0F8fHp8fChBPSEwLEkoSikpfTtcbmV4cG9ydHMudW5zdGFibGVfZm9yY2VGcmFtZVJhdGU9ZnVuY3Rpb24oYSl7MD5hfHwxMjU8YT9jb25zb2xlLmVycm9yKFwiZm9yY2VGcmFtZVJhdGUgdGFrZXMgYSBwb3NpdGl2ZSBpbnQgYmV0d2VlbiAwIGFuZCAxMjUsIGZvcmNpbmcgZnJhbWUgcmF0ZXMgaGlnaGVyIHRoYW4gMTI1IGZwcyBpcyBub3Qgc3VwcG9ydGVkXCIpOlA9MDxhP01hdGguZmxvb3IoMUUzL2EpOjV9O2V4cG9ydHMudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4geX07ZXhwb3J0cy51bnN0YWJsZV9nZXRGaXJzdENhbGxiYWNrTm9kZT1mdW5jdGlvbigpe3JldHVybiBoKHIpfTtleHBvcnRzLnVuc3RhYmxlX25leHQ9ZnVuY3Rpb24oYSl7c3dpdGNoKHkpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOnZhciBiPTM7YnJlYWs7ZGVmYXVsdDpiPXl9dmFyIGM9eTt5PWI7dHJ5e3JldHVybiBhKCl9ZmluYWxseXt5PWN9fTtleHBvcnRzLnVuc3RhYmxlX3BhdXNlRXhlY3V0aW9uPWZ1bmN0aW9uKCl7fTtcbmV4cG9ydHMudW5zdGFibGVfcmVxdWVzdFBhaW50PWZ1bmN0aW9uKCl7fTtleHBvcnRzLnVuc3RhYmxlX3J1bldpdGhQcmlvcml0eT1mdW5jdGlvbihhLGIpe3N3aXRjaChhKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzpjYXNlIDQ6Y2FzZSA1OmJyZWFrO2RlZmF1bHQ6YT0zfXZhciBjPXk7eT1hO3RyeXtyZXR1cm4gYigpfWZpbmFsbHl7eT1jfX07XG5leHBvcnRzLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2s9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWV4cG9ydHMudW5zdGFibGVfbm93KCk7XCJvYmplY3RcIj09PXR5cGVvZiBjJiZudWxsIT09Yz8oYz1jLmRlbGF5LGM9XCJudW1iZXJcIj09PXR5cGVvZiBjJiYwPGM/ZCtjOmQpOmM9ZDtzd2l0Y2goYSl7Y2FzZSAxOnZhciBlPS0xO2JyZWFrO2Nhc2UgMjplPTI1MDticmVhaztjYXNlIDU6ZT0xMDczNzQxODIzO2JyZWFrO2Nhc2UgNDplPTFFNDticmVhaztkZWZhdWx0OmU9NUUzfWU9YytlO2E9e2lkOnUrKyxjYWxsYmFjazpiLHByaW9yaXR5TGV2ZWw6YSxzdGFydFRpbWU6YyxleHBpcmF0aW9uVGltZTplLHNvcnRJbmRleDotMX07Yz5kPyhhLnNvcnRJbmRleD1jLGYodCxhKSxudWxsPT09aChyKSYmYT09PWgodCkmJihCPyhFKEwpLEw9LTEpOkI9ITAsSyhILGMtZCkpKTooYS5zb3J0SW5kZXg9ZSxmKHIsYSksQXx8enx8KEE9ITAsSShKKSkpO3JldHVybiBhfTtcbmV4cG9ydHMudW5zdGFibGVfc2hvdWxkWWllbGQ9TTtleHBvcnRzLnVuc3RhYmxlX3dyYXBDYWxsYmFjaz1mdW5jdGlvbihhKXt2YXIgYj15O3JldHVybiBmdW5jdGlvbigpe3ZhciBjPXk7eT1iO3RyeXtyZXR1cm4gYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXt5PWN9fX07XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvc2NoZWR1bGVyLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3NjaGVkdWxlci5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbi8qXG4gTW9kZXJuaXpyIDMuMC4wcHJlIChDdXN0b20gQnVpbGQpIHwgTUlUXG4qL1xuJ3VzZSBzdHJpY3QnO3ZhciBhYT1yZXF1aXJlKFwicmVhY3RcIiksY2E9cmVxdWlyZShcInNjaGVkdWxlclwiKTtmdW5jdGlvbiBwKGEpe2Zvcih2YXIgYj1cImh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PVwiK2EsYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspYis9XCImYXJnc1tdPVwiK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbY10pO3JldHVyblwiTWluaWZpZWQgUmVhY3QgZXJyb3IgI1wiK2ErXCI7IHZpc2l0IFwiK2IrXCIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLlwifXZhciBkYT1uZXcgU2V0LGVhPXt9O2Z1bmN0aW9uIGZhKGEsYil7aGEoYSxiKTtoYShhK1wiQ2FwdHVyZVwiLGIpfVxuZnVuY3Rpb24gaGEoYSxiKXtlYVthXT1iO2ZvcihhPTA7YTxiLmxlbmd0aDthKyspZGEuYWRkKGJbYV0pfVxudmFyIGlhPSEoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiB3aW5kb3d8fFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93LmRvY3VtZW50fHxcInVuZGVmaW5lZFwiPT09dHlwZW9mIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KSxqYT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGthPS9eWzpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEXVs6QS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRFxcLS4wLTlcXHUwMEI3XFx1MDMwMC1cXHUwMzZGXFx1MjAzRi1cXHUyMDQwXSokLyxsYT1cbnt9LG1hPXt9O2Z1bmN0aW9uIG9hKGEpe2lmKGphLmNhbGwobWEsYSkpcmV0dXJuITA7aWYoamEuY2FsbChsYSxhKSlyZXR1cm4hMTtpZihrYS50ZXN0KGEpKXJldHVybiBtYVthXT0hMDtsYVthXT0hMDtyZXR1cm4hMX1mdW5jdGlvbiBwYShhLGIsYyxkKXtpZihudWxsIT09YyYmMD09PWMudHlwZSlyZXR1cm4hMTtzd2l0Y2godHlwZW9mIGIpe2Nhc2UgXCJmdW5jdGlvblwiOmNhc2UgXCJzeW1ib2xcIjpyZXR1cm4hMDtjYXNlIFwiYm9vbGVhblwiOmlmKGQpcmV0dXJuITE7aWYobnVsbCE9PWMpcmV0dXJuIWMuYWNjZXB0c0Jvb2xlYW5zO2E9YS50b0xvd2VyQ2FzZSgpLnNsaWNlKDAsNSk7cmV0dXJuXCJkYXRhLVwiIT09YSYmXCJhcmlhLVwiIT09YTtkZWZhdWx0OnJldHVybiExfX1cbmZ1bmN0aW9uIHFhKGEsYixjLGQpe2lmKG51bGw9PT1ifHxcInVuZGVmaW5lZFwiPT09dHlwZW9mIGJ8fHBhKGEsYixjLGQpKXJldHVybiEwO2lmKGQpcmV0dXJuITE7aWYobnVsbCE9PWMpc3dpdGNoKGMudHlwZSl7Y2FzZSAzOnJldHVybiFiO2Nhc2UgNDpyZXR1cm4hMT09PWI7Y2FzZSA1OnJldHVybiBpc05hTihiKTtjYXNlIDY6cmV0dXJuIGlzTmFOKGIpfHwxPmJ9cmV0dXJuITF9ZnVuY3Rpb24gdihhLGIsYyxkLGUsZixnKXt0aGlzLmFjY2VwdHNCb29sZWFucz0yPT09Ynx8Mz09PWJ8fDQ9PT1iO3RoaXMuYXR0cmlidXRlTmFtZT1kO3RoaXMuYXR0cmlidXRlTmFtZXNwYWNlPWU7dGhpcy5tdXN0VXNlUHJvcGVydHk9Yzt0aGlzLnByb3BlcnR5TmFtZT1hO3RoaXMudHlwZT1iO3RoaXMuc2FuaXRpemVVUkw9Zjt0aGlzLnJlbW92ZUVtcHR5U3RyaW5nPWd9dmFyIHo9e307XG5cImNoaWxkcmVuIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIGRlZmF1bHRWYWx1ZSBkZWZhdWx0Q2hlY2tlZCBpbm5lckhUTUwgc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZyBzdHlsZVwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwwLCExLGEsbnVsbCwhMSwhMSl9KTtbW1wiYWNjZXB0Q2hhcnNldFwiLFwiYWNjZXB0LWNoYXJzZXRcIl0sW1wiY2xhc3NOYW1lXCIsXCJjbGFzc1wiXSxbXCJodG1sRm9yXCIsXCJmb3JcIl0sW1wiaHR0cEVxdWl2XCIsXCJodHRwLWVxdWl2XCJdXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWFbMF07eltiXT1uZXcgdihiLDEsITEsYVsxXSxudWxsLCExLCExKX0pO1tcImNvbnRlbnRFZGl0YWJsZVwiLFwiZHJhZ2dhYmxlXCIsXCJzcGVsbENoZWNrXCIsXCJ2YWx1ZVwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwyLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pO1xuW1wiYXV0b1JldmVyc2VcIixcImV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcIixcImZvY3VzYWJsZVwiLFwicHJlc2VydmVBbHBoYVwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwyLCExLGEsbnVsbCwhMSwhMSl9KTtcImFsbG93RnVsbFNjcmVlbiBhc3luYyBhdXRvRm9jdXMgYXV0b1BsYXkgY29udHJvbHMgZGVmYXVsdCBkZWZlciBkaXNhYmxlZCBkaXNhYmxlUGljdHVyZUluUGljdHVyZSBkaXNhYmxlUmVtb3RlUGxheWJhY2sgZm9ybU5vVmFsaWRhdGUgaGlkZGVuIGxvb3Agbm9Nb2R1bGUgbm9WYWxpZGF0ZSBvcGVuIHBsYXlzSW5saW5lIHJlYWRPbmx5IHJlcXVpcmVkIHJldmVyc2VkIHNjb3BlZCBzZWFtbGVzcyBpdGVtU2NvcGVcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMywhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTtcbltcImNoZWNrZWRcIixcIm11bHRpcGxlXCIsXCJtdXRlZFwiLFwic2VsZWN0ZWRcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMywhMCxhLG51bGwsITEsITEpfSk7W1wiY2FwdHVyZVwiLFwiZG93bmxvYWRcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsNCwhMSxhLG51bGwsITEsITEpfSk7W1wiY29sc1wiLFwicm93c1wiLFwic2l6ZVwiLFwic3BhblwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSw2LCExLGEsbnVsbCwhMSwhMSl9KTtbXCJyb3dTcGFuXCIsXCJzdGFydFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSw1LCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pO3ZhciByYT0vW1xcLTpdKFthLXpdKS9nO2Z1bmN0aW9uIHNhKGEpe3JldHVybiBhWzFdLnRvVXBwZXJDYXNlKCl9XG5cImFjY2VudC1oZWlnaHQgYWxpZ25tZW50LWJhc2VsaW5lIGFyYWJpYy1mb3JtIGJhc2VsaW5lLXNoaWZ0IGNhcC1oZWlnaHQgY2xpcC1wYXRoIGNsaXAtcnVsZSBjb2xvci1pbnRlcnBvbGF0aW9uIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyBjb2xvci1wcm9maWxlIGNvbG9yLXJlbmRlcmluZyBkb21pbmFudC1iYXNlbGluZSBlbmFibGUtYmFja2dyb3VuZCBmaWxsLW9wYWNpdHkgZmlsbC1ydWxlIGZsb29kLWNvbG9yIGZsb29kLW9wYWNpdHkgZm9udC1mYW1pbHkgZm9udC1zaXplIGZvbnQtc2l6ZS1hZGp1c3QgZm9udC1zdHJldGNoIGZvbnQtc3R5bGUgZm9udC12YXJpYW50IGZvbnQtd2VpZ2h0IGdseXBoLW5hbWUgZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCBnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCBob3Jpei1hZHYteCBob3Jpei1vcmlnaW4teCBpbWFnZS1yZW5kZXJpbmcgbGV0dGVyLXNwYWNpbmcgbGlnaHRpbmctY29sb3IgbWFya2VyLWVuZCBtYXJrZXItbWlkIG1hcmtlci1zdGFydCBvdmVybGluZS1wb3NpdGlvbiBvdmVybGluZS10aGlja25lc3MgcGFpbnQtb3JkZXIgcGFub3NlLTEgcG9pbnRlci1ldmVudHMgcmVuZGVyaW5nLWludGVudCBzaGFwZS1yZW5kZXJpbmcgc3RvcC1jb2xvciBzdG9wLW9wYWNpdHkgc3RyaWtldGhyb3VnaC1wb3NpdGlvbiBzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyBzdHJva2UtZGFzaGFycmF5IHN0cm9rZS1kYXNob2Zmc2V0IHN0cm9rZS1saW5lY2FwIHN0cm9rZS1saW5lam9pbiBzdHJva2UtbWl0ZXJsaW1pdCBzdHJva2Utb3BhY2l0eSBzdHJva2Utd2lkdGggdGV4dC1hbmNob3IgdGV4dC1kZWNvcmF0aW9uIHRleHQtcmVuZGVyaW5nIHVuZGVybGluZS1wb3NpdGlvbiB1bmRlcmxpbmUtdGhpY2tuZXNzIHVuaWNvZGUtYmlkaSB1bmljb2RlLXJhbmdlIHVuaXRzLXBlci1lbSB2LWFscGhhYmV0aWMgdi1oYW5naW5nIHYtaWRlb2dyYXBoaWMgdi1tYXRoZW1hdGljYWwgdmVjdG9yLWVmZmVjdCB2ZXJ0LWFkdi15IHZlcnQtb3JpZ2luLXggdmVydC1vcmlnaW4teSB3b3JkLXNwYWNpbmcgd3JpdGluZy1tb2RlIHhtbG5zOnhsaW5rIHgtaGVpZ2h0XCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKHJhLFxuc2EpO3pbYl09bmV3IHYoYiwxLCExLGEsbnVsbCwhMSwhMSl9KTtcInhsaW5rOmFjdHVhdGUgeGxpbms6YXJjcm9sZSB4bGluazpyb2xlIHhsaW5rOnNob3cgeGxpbms6dGl0bGUgeGxpbms6dHlwZVwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShyYSxzYSk7eltiXT1uZXcgdihiLDEsITEsYSxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiwhMSwhMSl9KTtbXCJ4bWw6YmFzZVwiLFwieG1sOmxhbmdcIixcInhtbDpzcGFjZVwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShyYSxzYSk7eltiXT1uZXcgdihiLDEsITEsYSxcImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZVwiLCExLCExKX0pO1tcInRhYkluZGV4XCIsXCJjcm9zc09yaWdpblwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwxLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pO1xuei54bGlua0hyZWY9bmV3IHYoXCJ4bGlua0hyZWZcIiwxLCExLFwieGxpbms6aHJlZlwiLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLCEwLCExKTtbXCJzcmNcIixcImhyZWZcIixcImFjdGlvblwiLFwiZm9ybUFjdGlvblwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwxLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCEwLCEwKX0pO1xuZnVuY3Rpb24gdGEoYSxiLGMsZCl7dmFyIGU9ei5oYXNPd25Qcm9wZXJ0eShiKT96W2JdOm51bGw7aWYobnVsbCE9PWU/MCE9PWUudHlwZTpkfHwhKDI8Yi5sZW5ndGgpfHxcIm9cIiE9PWJbMF0mJlwiT1wiIT09YlswXXx8XCJuXCIhPT1iWzFdJiZcIk5cIiE9PWJbMV0pcWEoYixjLGUsZCkmJihjPW51bGwpLGR8fG51bGw9PT1lP29hKGIpJiYobnVsbD09PWM/YS5yZW1vdmVBdHRyaWJ1dGUoYik6YS5zZXRBdHRyaWJ1dGUoYixcIlwiK2MpKTplLm11c3RVc2VQcm9wZXJ0eT9hW2UucHJvcGVydHlOYW1lXT1udWxsPT09Yz8zPT09ZS50eXBlPyExOlwiXCI6YzooYj1lLmF0dHJpYnV0ZU5hbWUsZD1lLmF0dHJpYnV0ZU5hbWVzcGFjZSxudWxsPT09Yz9hLnJlbW92ZUF0dHJpYnV0ZShiKTooZT1lLnR5cGUsYz0zPT09ZXx8ND09PWUmJiEwPT09Yz9cIlwiOlwiXCIrYyxkP2Euc2V0QXR0cmlidXRlTlMoZCxiLGMpOmEuc2V0QXR0cmlidXRlKGIsYykpKX1cbnZhciB1YT1hYS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCx2YT1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSx3YT1TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLHlhPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSx6YT1TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIiksQWE9U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpLEJhPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKSxDYT1TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKSxEYT1TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIiksRWE9U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpLEZhPVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpLEdhPVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpLEhhPVN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpO1N5bWJvbC5mb3IoXCJyZWFjdC5zY29wZVwiKTtTeW1ib2wuZm9yKFwicmVhY3QuZGVidWdfdHJhY2VfbW9kZVwiKTtcbnZhciBJYT1TeW1ib2wuZm9yKFwicmVhY3Qub2Zmc2NyZWVuXCIpO1N5bWJvbC5mb3IoXCJyZWFjdC5sZWdhY3lfaGlkZGVuXCIpO1N5bWJvbC5mb3IoXCJyZWFjdC5jYWNoZVwiKTtTeW1ib2wuZm9yKFwicmVhY3QudHJhY2luZ19tYXJrZXJcIik7dmFyIEphPVN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBLYShhKXtpZihudWxsPT09YXx8XCJvYmplY3RcIiE9PXR5cGVvZiBhKXJldHVybiBudWxsO2E9SmEmJmFbSmFdfHxhW1wiQEBpdGVyYXRvclwiXTtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYT9hOm51bGx9dmFyIEE9T2JqZWN0LmFzc2lnbixMYTtmdW5jdGlvbiBNYShhKXtpZih2b2lkIDA9PT1MYSl0cnl7dGhyb3cgRXJyb3IoKTt9Y2F0Y2goYyl7dmFyIGI9Yy5zdGFjay50cmltKCkubWF0Y2goL1xcbiggKihhdCApPykvKTtMYT1iJiZiWzFdfHxcIlwifXJldHVyblwiXFxuXCIrTGErYX12YXIgTmE9ITE7XG5mdW5jdGlvbiBPYShhLGIpe2lmKCFhfHxOYSlyZXR1cm5cIlwiO05hPSEwO3ZhciBjPUVycm9yLnByZXBhcmVTdGFja1RyYWNlO0Vycm9yLnByZXBhcmVTdGFja1RyYWNlPXZvaWQgMDt0cnl7aWYoYilpZihiPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoKTt9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShiLnByb3RvdHlwZSxcInByb3BzXCIse3NldDpmdW5jdGlvbigpe3Rocm93IEVycm9yKCk7fX0pLFwib2JqZWN0XCI9PT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5jb25zdHJ1Y3Qpe3RyeXtSZWZsZWN0LmNvbnN0cnVjdChiLFtdKX1jYXRjaChsKXt2YXIgZD1sfVJlZmxlY3QuY29uc3RydWN0KGEsW10sYil9ZWxzZXt0cnl7Yi5jYWxsKCl9Y2F0Y2gobCl7ZD1sfWEuY2FsbChiLnByb3RvdHlwZSl9ZWxzZXt0cnl7dGhyb3cgRXJyb3IoKTt9Y2F0Y2gobCl7ZD1sfWEoKX19Y2F0Y2gobCl7aWYobCYmZCYmXCJzdHJpbmdcIj09PXR5cGVvZiBsLnN0YWNrKXtmb3IodmFyIGU9bC5zdGFjay5zcGxpdChcIlxcblwiKSxcbmY9ZC5zdGFjay5zcGxpdChcIlxcblwiKSxnPWUubGVuZ3RoLTEsaD1mLmxlbmd0aC0xOzE8PWcmJjA8PWgmJmVbZ10hPT1mW2hdOyloLS07Zm9yKDsxPD1nJiYwPD1oO2ctLSxoLS0paWYoZVtnXSE9PWZbaF0pe2lmKDEhPT1nfHwxIT09aCl7ZG8gaWYoZy0tLGgtLSwwPmh8fGVbZ10hPT1mW2hdKXt2YXIgaz1cIlxcblwiK2VbZ10ucmVwbGFjZShcIiBhdCBuZXcgXCIsXCIgYXQgXCIpO2EuZGlzcGxheU5hbWUmJmsuaW5jbHVkZXMoXCI8YW5vbnltb3VzPlwiKSYmKGs9ay5yZXBsYWNlKFwiPGFub255bW91cz5cIixhLmRpc3BsYXlOYW1lKSk7cmV0dXJuIGt9d2hpbGUoMTw9ZyYmMDw9aCl9YnJlYWt9fX1maW5hbGx5e05hPSExLEVycm9yLnByZXBhcmVTdGFja1RyYWNlPWN9cmV0dXJuKGE9YT9hLmRpc3BsYXlOYW1lfHxhLm5hbWU6XCJcIik/TWEoYSk6XCJcIn1cbmZ1bmN0aW9uIFBhKGEpe3N3aXRjaChhLnRhZyl7Y2FzZSA1OnJldHVybiBNYShhLnR5cGUpO2Nhc2UgMTY6cmV0dXJuIE1hKFwiTGF6eVwiKTtjYXNlIDEzOnJldHVybiBNYShcIlN1c3BlbnNlXCIpO2Nhc2UgMTk6cmV0dXJuIE1hKFwiU3VzcGVuc2VMaXN0XCIpO2Nhc2UgMDpjYXNlIDI6Y2FzZSAxNTpyZXR1cm4gYT1PYShhLnR5cGUsITEpLGE7Y2FzZSAxMTpyZXR1cm4gYT1PYShhLnR5cGUucmVuZGVyLCExKSxhO2Nhc2UgMTpyZXR1cm4gYT1PYShhLnR5cGUsITApLGE7ZGVmYXVsdDpyZXR1cm5cIlwifX1cbmZ1bmN0aW9uIFFhKGEpe2lmKG51bGw9PWEpcmV0dXJuIG51bGw7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEpcmV0dXJuIGEuZGlzcGxheU5hbWV8fGEubmFtZXx8bnVsbDtpZihcInN0cmluZ1wiPT09dHlwZW9mIGEpcmV0dXJuIGE7c3dpdGNoKGEpe2Nhc2UgeWE6cmV0dXJuXCJGcmFnbWVudFwiO2Nhc2Ugd2E6cmV0dXJuXCJQb3J0YWxcIjtjYXNlIEFhOnJldHVyblwiUHJvZmlsZXJcIjtjYXNlIHphOnJldHVyblwiU3RyaWN0TW9kZVwiO2Nhc2UgRWE6cmV0dXJuXCJTdXNwZW5zZVwiO2Nhc2UgRmE6cmV0dXJuXCJTdXNwZW5zZUxpc3RcIn1pZihcIm9iamVjdFwiPT09dHlwZW9mIGEpc3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgQ2E6cmV0dXJuKGEuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiKStcIi5Db25zdW1lclwiO2Nhc2UgQmE6cmV0dXJuKGEuX2NvbnRleHQuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiKStcIi5Qcm92aWRlclwiO2Nhc2UgRGE6dmFyIGI9YS5yZW5kZXI7YT1hLmRpc3BsYXlOYW1lO2F8fChhPWIuZGlzcGxheU5hbWV8fFxuYi5uYW1lfHxcIlwiLGE9XCJcIiE9PWE/XCJGb3J3YXJkUmVmKFwiK2ErXCIpXCI6XCJGb3J3YXJkUmVmXCIpO3JldHVybiBhO2Nhc2UgR2E6cmV0dXJuIGI9YS5kaXNwbGF5TmFtZXx8bnVsbCxudWxsIT09Yj9iOlFhKGEudHlwZSl8fFwiTWVtb1wiO2Nhc2UgSGE6Yj1hLl9wYXlsb2FkO2E9YS5faW5pdDt0cnl7cmV0dXJuIFFhKGEoYikpfWNhdGNoKGMpe319cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBSYShhKXt2YXIgYj1hLnR5cGU7c3dpdGNoKGEudGFnKXtjYXNlIDI0OnJldHVyblwiQ2FjaGVcIjtjYXNlIDk6cmV0dXJuKGIuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiKStcIi5Db25zdW1lclwiO2Nhc2UgMTA6cmV0dXJuKGIuX2NvbnRleHQuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiKStcIi5Qcm92aWRlclwiO2Nhc2UgMTg6cmV0dXJuXCJEZWh5ZHJhdGVkRnJhZ21lbnRcIjtjYXNlIDExOnJldHVybiBhPWIucmVuZGVyLGE9YS5kaXNwbGF5TmFtZXx8YS5uYW1lfHxcIlwiLGIuZGlzcGxheU5hbWV8fChcIlwiIT09YT9cIkZvcndhcmRSZWYoXCIrYStcIilcIjpcIkZvcndhcmRSZWZcIik7Y2FzZSA3OnJldHVyblwiRnJhZ21lbnRcIjtjYXNlIDU6cmV0dXJuIGI7Y2FzZSA0OnJldHVyblwiUG9ydGFsXCI7Y2FzZSAzOnJldHVyblwiUm9vdFwiO2Nhc2UgNjpyZXR1cm5cIlRleHRcIjtjYXNlIDE2OnJldHVybiBRYShiKTtjYXNlIDg6cmV0dXJuIGI9PT16YT9cIlN0cmljdE1vZGVcIjpcIk1vZGVcIjtjYXNlIDIyOnJldHVyblwiT2Zmc2NyZWVuXCI7XG5jYXNlIDEyOnJldHVyblwiUHJvZmlsZXJcIjtjYXNlIDIxOnJldHVyblwiU2NvcGVcIjtjYXNlIDEzOnJldHVyblwiU3VzcGVuc2VcIjtjYXNlIDE5OnJldHVyblwiU3VzcGVuc2VMaXN0XCI7Y2FzZSAyNTpyZXR1cm5cIlRyYWNpbmdNYXJrZXJcIjtjYXNlIDE6Y2FzZSAwOmNhc2UgMTc6Y2FzZSAyOmNhc2UgMTQ6Y2FzZSAxNTppZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYilyZXR1cm4gYi5kaXNwbGF5TmFtZXx8Yi5uYW1lfHxudWxsO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYilyZXR1cm4gYn1yZXR1cm4gbnVsbH1mdW5jdGlvbiBTYShhKXtzd2l0Y2godHlwZW9mIGEpe2Nhc2UgXCJib29sZWFuXCI6Y2FzZSBcIm51bWJlclwiOmNhc2UgXCJzdHJpbmdcIjpjYXNlIFwidW5kZWZpbmVkXCI6cmV0dXJuIGE7Y2FzZSBcIm9iamVjdFwiOnJldHVybiBhO2RlZmF1bHQ6cmV0dXJuXCJcIn19XG5mdW5jdGlvbiBUYShhKXt2YXIgYj1hLnR5cGU7cmV0dXJuKGE9YS5ub2RlTmFtZSkmJlwiaW5wdXRcIj09PWEudG9Mb3dlckNhc2UoKSYmKFwiY2hlY2tib3hcIj09PWJ8fFwicmFkaW9cIj09PWIpfVxuZnVuY3Rpb24gVWEoYSl7dmFyIGI9VGEoYSk/XCJjaGVja2VkXCI6XCJ2YWx1ZVwiLGM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSxiKSxkPVwiXCIrYVtiXTtpZighYS5oYXNPd25Qcm9wZXJ0eShiKSYmXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBjJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgYy5nZXQmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBjLnNldCl7dmFyIGU9Yy5nZXQsZj1jLnNldDtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxiLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuY2FsbCh0aGlzKX0sc2V0OmZ1bmN0aW9uKGEpe2Q9XCJcIithO2YuY2FsbCh0aGlzLGEpfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGIse2VudW1lcmFibGU6Yy5lbnVtZXJhYmxlfSk7cmV0dXJue2dldFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGR9LHNldFZhbHVlOmZ1bmN0aW9uKGEpe2Q9XCJcIithfSxzdG9wVHJhY2tpbmc6ZnVuY3Rpb24oKXthLl92YWx1ZVRyYWNrZXI9XG5udWxsO2RlbGV0ZSBhW2JdfX19fWZ1bmN0aW9uIFZhKGEpe2EuX3ZhbHVlVHJhY2tlcnx8KGEuX3ZhbHVlVHJhY2tlcj1VYShhKSl9ZnVuY3Rpb24gV2EoYSl7aWYoIWEpcmV0dXJuITE7dmFyIGI9YS5fdmFsdWVUcmFja2VyO2lmKCFiKXJldHVybiEwO3ZhciBjPWIuZ2V0VmFsdWUoKTt2YXIgZD1cIlwiO2EmJihkPVRhKGEpP2EuY2hlY2tlZD9cInRydWVcIjpcImZhbHNlXCI6YS52YWx1ZSk7YT1kO3JldHVybiBhIT09Yz8oYi5zZXRWYWx1ZShhKSwhMCk6ITF9ZnVuY3Rpb24gWGEoYSl7YT1hfHwoXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudDp2b2lkIDApO2lmKFwidW5kZWZpbmVkXCI9PT10eXBlb2YgYSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGEuYWN0aXZlRWxlbWVudHx8YS5ib2R5fWNhdGNoKGIpe3JldHVybiBhLmJvZHl9fVxuZnVuY3Rpb24gWWEoYSxiKXt2YXIgYz1iLmNoZWNrZWQ7cmV0dXJuIEEoe30sYix7ZGVmYXVsdENoZWNrZWQ6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsdmFsdWU6dm9pZCAwLGNoZWNrZWQ6bnVsbCE9Yz9jOmEuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZH0pfWZ1bmN0aW9uIFphKGEsYil7dmFyIGM9bnVsbD09Yi5kZWZhdWx0VmFsdWU/XCJcIjpiLmRlZmF1bHRWYWx1ZSxkPW51bGwhPWIuY2hlY2tlZD9iLmNoZWNrZWQ6Yi5kZWZhdWx0Q2hlY2tlZDtjPVNhKG51bGwhPWIudmFsdWU/Yi52YWx1ZTpjKTthLl93cmFwcGVyU3RhdGU9e2luaXRpYWxDaGVja2VkOmQsaW5pdGlhbFZhbHVlOmMsY29udHJvbGxlZDpcImNoZWNrYm94XCI9PT1iLnR5cGV8fFwicmFkaW9cIj09PWIudHlwZT9udWxsIT1iLmNoZWNrZWQ6bnVsbCE9Yi52YWx1ZX19ZnVuY3Rpb24gYWIoYSxiKXtiPWIuY2hlY2tlZDtudWxsIT1iJiZ0YShhLFwiY2hlY2tlZFwiLGIsITEpfVxuZnVuY3Rpb24gYmIoYSxiKXthYihhLGIpO3ZhciBjPVNhKGIudmFsdWUpLGQ9Yi50eXBlO2lmKG51bGwhPWMpaWYoXCJudW1iZXJcIj09PWQpe2lmKDA9PT1jJiZcIlwiPT09YS52YWx1ZXx8YS52YWx1ZSE9YylhLnZhbHVlPVwiXCIrY31lbHNlIGEudmFsdWUhPT1cIlwiK2MmJihhLnZhbHVlPVwiXCIrYyk7ZWxzZSBpZihcInN1Ym1pdFwiPT09ZHx8XCJyZXNldFwiPT09ZCl7YS5yZW1vdmVBdHRyaWJ1dGUoXCJ2YWx1ZVwiKTtyZXR1cm59Yi5oYXNPd25Qcm9wZXJ0eShcInZhbHVlXCIpP2NiKGEsYi50eXBlLGMpOmIuaGFzT3duUHJvcGVydHkoXCJkZWZhdWx0VmFsdWVcIikmJmNiKGEsYi50eXBlLFNhKGIuZGVmYXVsdFZhbHVlKSk7bnVsbD09Yi5jaGVja2VkJiZudWxsIT1iLmRlZmF1bHRDaGVja2VkJiYoYS5kZWZhdWx0Q2hlY2tlZD0hIWIuZGVmYXVsdENoZWNrZWQpfVxuZnVuY3Rpb24gZGIoYSxiLGMpe2lmKGIuaGFzT3duUHJvcGVydHkoXCJ2YWx1ZVwiKXx8Yi5oYXNPd25Qcm9wZXJ0eShcImRlZmF1bHRWYWx1ZVwiKSl7dmFyIGQ9Yi50eXBlO2lmKCEoXCJzdWJtaXRcIiE9PWQmJlwicmVzZXRcIiE9PWR8fHZvaWQgMCE9PWIudmFsdWUmJm51bGwhPT1iLnZhbHVlKSlyZXR1cm47Yj1cIlwiK2EuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU7Y3x8Yj09PWEudmFsdWV8fChhLnZhbHVlPWIpO2EuZGVmYXVsdFZhbHVlPWJ9Yz1hLm5hbWU7XCJcIiE9PWMmJihhLm5hbWU9XCJcIik7YS5kZWZhdWx0Q2hlY2tlZD0hIWEuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZDtcIlwiIT09YyYmKGEubmFtZT1jKX1cbmZ1bmN0aW9uIGNiKGEsYixjKXtpZihcIm51bWJlclwiIT09Ynx8WGEoYS5vd25lckRvY3VtZW50KSE9PWEpbnVsbD09Yz9hLmRlZmF1bHRWYWx1ZT1cIlwiK2EuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU6YS5kZWZhdWx0VmFsdWUhPT1cIlwiK2MmJihhLmRlZmF1bHRWYWx1ZT1cIlwiK2MpfXZhciBlYj1BcnJheS5pc0FycmF5O1xuZnVuY3Rpb24gZmIoYSxiLGMsZCl7YT1hLm9wdGlvbnM7aWYoYil7Yj17fTtmb3IodmFyIGU9MDtlPGMubGVuZ3RoO2UrKyliW1wiJFwiK2NbZV1dPSEwO2ZvcihjPTA7YzxhLmxlbmd0aDtjKyspZT1iLmhhc093blByb3BlcnR5KFwiJFwiK2FbY10udmFsdWUpLGFbY10uc2VsZWN0ZWQhPT1lJiYoYVtjXS5zZWxlY3RlZD1lKSxlJiZkJiYoYVtjXS5kZWZhdWx0U2VsZWN0ZWQ9ITApfWVsc2V7Yz1cIlwiK1NhKGMpO2I9bnVsbDtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKXtpZihhW2VdLnZhbHVlPT09Yyl7YVtlXS5zZWxlY3RlZD0hMDtkJiYoYVtlXS5kZWZhdWx0U2VsZWN0ZWQ9ITApO3JldHVybn1udWxsIT09Ynx8YVtlXS5kaXNhYmxlZHx8KGI9YVtlXSl9bnVsbCE9PWImJihiLnNlbGVjdGVkPSEwKX19XG5mdW5jdGlvbiBnYihhLGIpe2lmKG51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpdGhyb3cgRXJyb3IocCg5MSkpO3JldHVybiBBKHt9LGIse3ZhbHVlOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLGNoaWxkcmVuOlwiXCIrYS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZX0pfWZ1bmN0aW9uIGhiKGEsYil7dmFyIGM9Yi52YWx1ZTtpZihudWxsPT1jKXtjPWIuY2hpbGRyZW47Yj1iLmRlZmF1bHRWYWx1ZTtpZihudWxsIT1jKXtpZihudWxsIT1iKXRocm93IEVycm9yKHAoOTIpKTtpZihlYihjKSl7aWYoMTxjLmxlbmd0aCl0aHJvdyBFcnJvcihwKDkzKSk7Yz1jWzBdfWI9Y31udWxsPT1iJiYoYj1cIlwiKTtjPWJ9YS5fd3JhcHBlclN0YXRlPXtpbml0aWFsVmFsdWU6U2EoYyl9fVxuZnVuY3Rpb24gaWIoYSxiKXt2YXIgYz1TYShiLnZhbHVlKSxkPVNhKGIuZGVmYXVsdFZhbHVlKTtudWxsIT1jJiYoYz1cIlwiK2MsYyE9PWEudmFsdWUmJihhLnZhbHVlPWMpLG51bGw9PWIuZGVmYXVsdFZhbHVlJiZhLmRlZmF1bHRWYWx1ZSE9PWMmJihhLmRlZmF1bHRWYWx1ZT1jKSk7bnVsbCE9ZCYmKGEuZGVmYXVsdFZhbHVlPVwiXCIrZCl9ZnVuY3Rpb24gamIoYSl7dmFyIGI9YS50ZXh0Q29udGVudDtiPT09YS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSYmXCJcIiE9PWImJm51bGwhPT1iJiYoYS52YWx1ZT1iKX1mdW5jdGlvbiBrYihhKXtzd2l0Y2goYSl7Y2FzZSBcInN2Z1wiOnJldHVyblwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIjtjYXNlIFwibWF0aFwiOnJldHVyblwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiO2RlZmF1bHQ6cmV0dXJuXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCJ9fVxuZnVuY3Rpb24gbGIoYSxiKXtyZXR1cm4gbnVsbD09YXx8XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI9PT1hP2tiKGIpOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj09PWEmJlwiZm9yZWlnbk9iamVjdFwiPT09Yj9cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIjphfVxudmFyIG1iLG5iPWZ1bmN0aW9uKGEpe3JldHVyblwidW5kZWZpbmVkXCIhPT10eXBlb2YgTVNBcHAmJk1TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uP2Z1bmN0aW9uKGIsYyxkLGUpe01TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uKCl7cmV0dXJuIGEoYixjLGQsZSl9KX06YX0oZnVuY3Rpb24oYSxiKXtpZihcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIhPT1hLm5hbWVzcGFjZVVSSXx8XCJpbm5lckhUTUxcImluIGEpYS5pbm5lckhUTUw9YjtlbHNle21iPW1ifHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO21iLmlubmVySFRNTD1cIjxzdmc+XCIrYi52YWx1ZU9mKCkudG9TdHJpbmcoKStcIjwvc3ZnPlwiO2ZvcihiPW1iLmZpcnN0Q2hpbGQ7YS5maXJzdENoaWxkOylhLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCk7Zm9yKDtiLmZpcnN0Q2hpbGQ7KWEuYXBwZW5kQ2hpbGQoYi5maXJzdENoaWxkKX19KTtcbmZ1bmN0aW9uIG9iKGEsYil7aWYoYil7dmFyIGM9YS5maXJzdENoaWxkO2lmKGMmJmM9PT1hLmxhc3RDaGlsZCYmMz09PWMubm9kZVR5cGUpe2Mubm9kZVZhbHVlPWI7cmV0dXJufX1hLnRleHRDb250ZW50PWJ9XG52YXIgcGI9e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGFzcGVjdFJhdGlvOiEwLGJvcmRlckltYWdlT3V0c2V0OiEwLGJvcmRlckltYWdlU2xpY2U6ITAsYm9yZGVySW1hZ2VXaWR0aDohMCxib3hGbGV4OiEwLGJveEZsZXhHcm91cDohMCxib3hPcmRpbmFsR3JvdXA6ITAsY29sdW1uQ291bnQ6ITAsY29sdW1uczohMCxmbGV4OiEwLGZsZXhHcm93OiEwLGZsZXhQb3NpdGl2ZTohMCxmbGV4U2hyaW5rOiEwLGZsZXhOZWdhdGl2ZTohMCxmbGV4T3JkZXI6ITAsZ3JpZEFyZWE6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdyaWRSb3dTcGFuOiEwLGdyaWRSb3dTdGFydDohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblNwYW46ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGZvbnRXZWlnaHQ6ITAsbGluZUNsYW1wOiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHRhYlNpemU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCxcbnpvb206ITAsZmlsbE9wYWNpdHk6ITAsZmxvb2RPcGFjaXR5OiEwLHN0b3BPcGFjaXR5OiEwLHN0cm9rZURhc2hhcnJheTohMCxzdHJva2VEYXNob2Zmc2V0OiEwLHN0cm9rZU1pdGVybGltaXQ6ITAsc3Ryb2tlT3BhY2l0eTohMCxzdHJva2VXaWR0aDohMH0scWI9W1wiV2Via2l0XCIsXCJtc1wiLFwiTW96XCIsXCJPXCJdO09iamVjdC5rZXlzKHBiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3FiLmZvckVhY2goZnVuY3Rpb24oYil7Yj1iK2EuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYS5zdWJzdHJpbmcoMSk7cGJbYl09cGJbYV19KX0pO2Z1bmN0aW9uIHJiKGEsYixjKXtyZXR1cm4gbnVsbD09Ynx8XCJib29sZWFuXCI9PT10eXBlb2YgYnx8XCJcIj09PWI/XCJcIjpjfHxcIm51bWJlclwiIT09dHlwZW9mIGJ8fDA9PT1ifHxwYi5oYXNPd25Qcm9wZXJ0eShhKSYmcGJbYV0/KFwiXCIrYikudHJpbSgpOmIrXCJweFwifVxuZnVuY3Rpb24gc2IoYSxiKXthPWEuc3R5bGU7Zm9yKHZhciBjIGluIGIpaWYoYi5oYXNPd25Qcm9wZXJ0eShjKSl7dmFyIGQ9MD09PWMuaW5kZXhPZihcIi0tXCIpLGU9cmIoYyxiW2NdLGQpO1wiZmxvYXRcIj09PWMmJihjPVwiY3NzRmxvYXRcIik7ZD9hLnNldFByb3BlcnR5KGMsZSk6YVtjXT1lfX12YXIgdGI9QSh7bWVudWl0ZW06ITB9LHthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGVtYmVkOiEwLGhyOiEwLGltZzohMCxpbnB1dDohMCxrZXlnZW46ITAsbGluazohMCxtZXRhOiEwLHBhcmFtOiEwLHNvdXJjZTohMCx0cmFjazohMCx3YnI6ITB9KTtcbmZ1bmN0aW9uIHViKGEsYil7aWYoYil7aWYodGJbYV0mJihudWxsIT1iLmNoaWxkcmVufHxudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSl0aHJvdyBFcnJvcihwKDEzNyxhKSk7aWYobnVsbCE9Yi5kYW5nZXJvdXNseVNldElubmVySFRNTCl7aWYobnVsbCE9Yi5jaGlsZHJlbil0aHJvdyBFcnJvcihwKDYwKSk7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBiLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MfHwhKFwiX19odG1sXCJpbiBiLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSl0aHJvdyBFcnJvcihwKDYxKSk7fWlmKG51bGwhPWIuc3R5bGUmJlwib2JqZWN0XCIhPT10eXBlb2YgYi5zdHlsZSl0aHJvdyBFcnJvcihwKDYyKSk7fX1cbmZ1bmN0aW9uIHZiKGEsYil7aWYoLTE9PT1hLmluZGV4T2YoXCItXCIpKXJldHVyblwic3RyaW5nXCI9PT10eXBlb2YgYi5pcztzd2l0Y2goYSl7Y2FzZSBcImFubm90YXRpb24teG1sXCI6Y2FzZSBcImNvbG9yLXByb2ZpbGVcIjpjYXNlIFwiZm9udC1mYWNlXCI6Y2FzZSBcImZvbnQtZmFjZS1zcmNcIjpjYXNlIFwiZm9udC1mYWNlLXVyaVwiOmNhc2UgXCJmb250LWZhY2UtZm9ybWF0XCI6Y2FzZSBcImZvbnQtZmFjZS1uYW1lXCI6Y2FzZSBcIm1pc3NpbmctZ2x5cGhcIjpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiEwfX12YXIgd2I9bnVsbDtmdW5jdGlvbiB4YihhKXthPWEudGFyZ2V0fHxhLnNyY0VsZW1lbnR8fHdpbmRvdzthLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50JiYoYT1hLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KTtyZXR1cm4gMz09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlOmF9dmFyIHliPW51bGwsemI9bnVsbCxBYj1udWxsO1xuZnVuY3Rpb24gQmIoYSl7aWYoYT1DYihhKSl7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIHliKXRocm93IEVycm9yKHAoMjgwKSk7dmFyIGI9YS5zdGF0ZU5vZGU7YiYmKGI9RGIoYikseWIoYS5zdGF0ZU5vZGUsYS50eXBlLGIpKX19ZnVuY3Rpb24gRWIoYSl7emI/QWI/QWIucHVzaChhKTpBYj1bYV06emI9YX1mdW5jdGlvbiBGYigpe2lmKHpiKXt2YXIgYT16YixiPUFiO0FiPXpiPW51bGw7QmIoYSk7aWYoYilmb3IoYT0wO2E8Yi5sZW5ndGg7YSsrKUJiKGJbYV0pfX1mdW5jdGlvbiBHYihhLGIpe3JldHVybiBhKGIpfWZ1bmN0aW9uIEhiKCl7fXZhciBJYj0hMTtmdW5jdGlvbiBKYihhLGIsYyl7aWYoSWIpcmV0dXJuIGEoYixjKTtJYj0hMDt0cnl7cmV0dXJuIEdiKGEsYixjKX1maW5hbGx5e2lmKEliPSExLG51bGwhPT16Ynx8bnVsbCE9PUFiKUhiKCksRmIoKX19XG5mdW5jdGlvbiBLYihhLGIpe3ZhciBjPWEuc3RhdGVOb2RlO2lmKG51bGw9PT1jKXJldHVybiBudWxsO3ZhciBkPURiKGMpO2lmKG51bGw9PT1kKXJldHVybiBudWxsO2M9ZFtiXTthOnN3aXRjaChiKXtjYXNlIFwib25DbGlja1wiOmNhc2UgXCJvbkNsaWNrQ2FwdHVyZVwiOmNhc2UgXCJvbkRvdWJsZUNsaWNrXCI6Y2FzZSBcIm9uRG91YmxlQ2xpY2tDYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VEb3duXCI6Y2FzZSBcIm9uTW91c2VEb3duQ2FwdHVyZVwiOmNhc2UgXCJvbk1vdXNlTW92ZVwiOmNhc2UgXCJvbk1vdXNlTW92ZUNhcHR1cmVcIjpjYXNlIFwib25Nb3VzZVVwXCI6Y2FzZSBcIm9uTW91c2VVcENhcHR1cmVcIjpjYXNlIFwib25Nb3VzZUVudGVyXCI6KGQ9IWQuZGlzYWJsZWQpfHwoYT1hLnR5cGUsZD0hKFwiYnV0dG9uXCI9PT1hfHxcImlucHV0XCI9PT1hfHxcInNlbGVjdFwiPT09YXx8XCJ0ZXh0YXJlYVwiPT09YSkpO2E9IWQ7YnJlYWsgYTtkZWZhdWx0OmE9ITF9aWYoYSlyZXR1cm4gbnVsbDtpZihjJiZcImZ1bmN0aW9uXCIhPT1cbnR5cGVvZiBjKXRocm93IEVycm9yKHAoMjMxLGIsdHlwZW9mIGMpKTtyZXR1cm4gY312YXIgTGI9ITE7aWYoaWEpdHJ5e3ZhciBNYj17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTWIsXCJwYXNzaXZlXCIse2dldDpmdW5jdGlvbigpe0xiPSEwfX0pO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidGVzdFwiLE1iLE1iKTt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRlc3RcIixNYixNYil9Y2F0Y2goYSl7TGI9ITF9ZnVuY3Rpb24gTmIoYSxiLGMsZCxlLGYsZyxoLGspe3ZhciBsPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywzKTt0cnl7Yi5hcHBseShjLGwpfWNhdGNoKG0pe3RoaXMub25FcnJvcihtKX19dmFyIE9iPSExLFBiPW51bGwsUWI9ITEsUmI9bnVsbCxTYj17b25FcnJvcjpmdW5jdGlvbihhKXtPYj0hMDtQYj1hfX07ZnVuY3Rpb24gVGIoYSxiLGMsZCxlLGYsZyxoLGspe09iPSExO1BiPW51bGw7TmIuYXBwbHkoU2IsYXJndW1lbnRzKX1cbmZ1bmN0aW9uIFViKGEsYixjLGQsZSxmLGcsaCxrKXtUYi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoT2Ipe2lmKE9iKXt2YXIgbD1QYjtPYj0hMTtQYj1udWxsfWVsc2UgdGhyb3cgRXJyb3IocCgxOTgpKTtRYnx8KFFiPSEwLFJiPWwpfX1mdW5jdGlvbiBWYihhKXt2YXIgYj1hLGM9YTtpZihhLmFsdGVybmF0ZSlmb3IoO2IucmV0dXJuOyliPWIucmV0dXJuO2Vsc2V7YT1iO2RvIGI9YSwwIT09KGIuZmxhZ3MmNDA5OCkmJihjPWIucmV0dXJuKSxhPWIucmV0dXJuO3doaWxlKGEpfXJldHVybiAzPT09Yi50YWc/YzpudWxsfWZ1bmN0aW9uIFdiKGEpe2lmKDEzPT09YS50YWcpe3ZhciBiPWEubWVtb2l6ZWRTdGF0ZTtudWxsPT09YiYmKGE9YS5hbHRlcm5hdGUsbnVsbCE9PWEmJihiPWEubWVtb2l6ZWRTdGF0ZSkpO2lmKG51bGwhPT1iKXJldHVybiBiLmRlaHlkcmF0ZWR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gWGIoYSl7aWYoVmIoYSkhPT1hKXRocm93IEVycm9yKHAoMTg4KSk7fVxuZnVuY3Rpb24gWWIoYSl7dmFyIGI9YS5hbHRlcm5hdGU7aWYoIWIpe2I9VmIoYSk7aWYobnVsbD09PWIpdGhyb3cgRXJyb3IocCgxODgpKTtyZXR1cm4gYiE9PWE/bnVsbDphfWZvcih2YXIgYz1hLGQ9Yjs7KXt2YXIgZT1jLnJldHVybjtpZihudWxsPT09ZSlicmVhazt2YXIgZj1lLmFsdGVybmF0ZTtpZihudWxsPT09Zil7ZD1lLnJldHVybjtpZihudWxsIT09ZCl7Yz1kO2NvbnRpbnVlfWJyZWFrfWlmKGUuY2hpbGQ9PT1mLmNoaWxkKXtmb3IoZj1lLmNoaWxkO2Y7KXtpZihmPT09YylyZXR1cm4gWGIoZSksYTtpZihmPT09ZClyZXR1cm4gWGIoZSksYjtmPWYuc2libGluZ310aHJvdyBFcnJvcihwKDE4OCkpO31pZihjLnJldHVybiE9PWQucmV0dXJuKWM9ZSxkPWY7ZWxzZXtmb3IodmFyIGc9ITEsaD1lLmNoaWxkO2g7KXtpZihoPT09Yyl7Zz0hMDtjPWU7ZD1mO2JyZWFrfWlmKGg9PT1kKXtnPSEwO2Q9ZTtjPWY7YnJlYWt9aD1oLnNpYmxpbmd9aWYoIWcpe2ZvcihoPWYuY2hpbGQ7aDspe2lmKGg9PT1cbmMpe2c9ITA7Yz1mO2Q9ZTticmVha31pZihoPT09ZCl7Zz0hMDtkPWY7Yz1lO2JyZWFrfWg9aC5zaWJsaW5nfWlmKCFnKXRocm93IEVycm9yKHAoMTg5KSk7fX1pZihjLmFsdGVybmF0ZSE9PWQpdGhyb3cgRXJyb3IocCgxOTApKTt9aWYoMyE9PWMudGFnKXRocm93IEVycm9yKHAoMTg4KSk7cmV0dXJuIGMuc3RhdGVOb2RlLmN1cnJlbnQ9PT1jP2E6Yn1mdW5jdGlvbiBaYihhKXthPVliKGEpO3JldHVybiBudWxsIT09YT8kYihhKTpudWxsfWZ1bmN0aW9uICRiKGEpe2lmKDU9PT1hLnRhZ3x8Nj09PWEudGFnKXJldHVybiBhO2ZvcihhPWEuY2hpbGQ7bnVsbCE9PWE7KXt2YXIgYj0kYihhKTtpZihudWxsIT09YilyZXR1cm4gYjthPWEuc2libGluZ31yZXR1cm4gbnVsbH1cbnZhciBhYz1jYS51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrLGJjPWNhLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrLGNjPWNhLnVuc3RhYmxlX3Nob3VsZFlpZWxkLGRjPWNhLnVuc3RhYmxlX3JlcXVlc3RQYWludCxCPWNhLnVuc3RhYmxlX25vdyxlYz1jYS51bnN0YWJsZV9nZXRDdXJyZW50UHJpb3JpdHlMZXZlbCxmYz1jYS51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eSxnYz1jYS51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eSxoYz1jYS51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSxpYz1jYS51bnN0YWJsZV9Mb3dQcmlvcml0eSxqYz1jYS51bnN0YWJsZV9JZGxlUHJpb3JpdHksa2M9bnVsbCxsYz1udWxsO2Z1bmN0aW9uIG1jKGEpe2lmKGxjJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgbGMub25Db21taXRGaWJlclJvb3QpdHJ5e2xjLm9uQ29tbWl0RmliZXJSb290KGtjLGEsdm9pZCAwLDEyOD09PShhLmN1cnJlbnQuZmxhZ3MmMTI4KSl9Y2F0Y2goYil7fX1cbnZhciBvYz1NYXRoLmNsejMyP01hdGguY2x6MzI6bmMscGM9TWF0aC5sb2cscWM9TWF0aC5MTjI7ZnVuY3Rpb24gbmMoYSl7YT4+Pj0wO3JldHVybiAwPT09YT8zMjozMS0ocGMoYSkvcWN8MCl8MH12YXIgcmM9NjQsc2M9NDE5NDMwNDtcbmZ1bmN0aW9uIHRjKGEpe3N3aXRjaChhJi1hKXtjYXNlIDE6cmV0dXJuIDE7Y2FzZSAyOnJldHVybiAyO2Nhc2UgNDpyZXR1cm4gNDtjYXNlIDg6cmV0dXJuIDg7Y2FzZSAxNjpyZXR1cm4gMTY7Y2FzZSAzMjpyZXR1cm4gMzI7Y2FzZSA2NDpjYXNlIDEyODpjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpyZXR1cm4gYSY0MTk0MjQwO2Nhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOmNhc2UgNjcxMDg4NjQ6cmV0dXJuIGEmMTMwMDIzNDI0O2Nhc2UgMTM0MjE3NzI4OnJldHVybiAxMzQyMTc3Mjg7Y2FzZSAyNjg0MzU0NTY6cmV0dXJuIDI2ODQzNTQ1NjtjYXNlIDUzNjg3MDkxMjpyZXR1cm4gNTM2ODcwOTEyO2Nhc2UgMTA3Mzc0MTgyNDpyZXR1cm4gMTA3Mzc0MTgyNDtcbmRlZmF1bHQ6cmV0dXJuIGF9fWZ1bmN0aW9uIHVjKGEsYil7dmFyIGM9YS5wZW5kaW5nTGFuZXM7aWYoMD09PWMpcmV0dXJuIDA7dmFyIGQ9MCxlPWEuc3VzcGVuZGVkTGFuZXMsZj1hLnBpbmdlZExhbmVzLGc9YyYyNjg0MzU0NTU7aWYoMCE9PWcpe3ZhciBoPWcmfmU7MCE9PWg/ZD10YyhoKTooZiY9ZywwIT09ZiYmKGQ9dGMoZikpKX1lbHNlIGc9YyZ+ZSwwIT09Zz9kPXRjKGcpOjAhPT1mJiYoZD10YyhmKSk7aWYoMD09PWQpcmV0dXJuIDA7aWYoMCE9PWImJmIhPT1kJiYwPT09KGImZSkmJihlPWQmLWQsZj1iJi1iLGU+PWZ8fDE2PT09ZSYmMCE9PShmJjQxOTQyNDApKSlyZXR1cm4gYjswIT09KGQmNCkmJihkfD1jJjE2KTtiPWEuZW50YW5nbGVkTGFuZXM7aWYoMCE9PWIpZm9yKGE9YS5lbnRhbmdsZW1lbnRzLGImPWQ7MDxiOyljPTMxLW9jKGIpLGU9MTw8YyxkfD1hW2NdLGImPX5lO3JldHVybiBkfVxuZnVuY3Rpb24gdmMoYSxiKXtzd2l0Y2goYSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6cmV0dXJuIGIrMjUwO2Nhc2UgODpjYXNlIDE2OmNhc2UgMzI6Y2FzZSA2NDpjYXNlIDEyODpjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpyZXR1cm4gYis1RTM7Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6Y2FzZSA2NzEwODg2NDpyZXR1cm4tMTtjYXNlIDEzNDIxNzcyODpjYXNlIDI2ODQzNTQ1NjpjYXNlIDUzNjg3MDkxMjpjYXNlIDEwNzM3NDE4MjQ6cmV0dXJuLTE7ZGVmYXVsdDpyZXR1cm4tMX19XG5mdW5jdGlvbiB3YyhhLGIpe2Zvcih2YXIgYz1hLnN1c3BlbmRlZExhbmVzLGQ9YS5waW5nZWRMYW5lcyxlPWEuZXhwaXJhdGlvblRpbWVzLGY9YS5wZW5kaW5nTGFuZXM7MDxmOyl7dmFyIGc9MzEtb2MoZiksaD0xPDxnLGs9ZVtnXTtpZigtMT09PWspe2lmKDA9PT0oaCZjKXx8MCE9PShoJmQpKWVbZ109dmMoaCxiKX1lbHNlIGs8PWImJihhLmV4cGlyZWRMYW5lc3w9aCk7ZiY9fmh9fWZ1bmN0aW9uIHhjKGEpe2E9YS5wZW5kaW5nTGFuZXMmLTEwNzM3NDE4MjU7cmV0dXJuIDAhPT1hP2E6YSYxMDczNzQxODI0PzEwNzM3NDE4MjQ6MH1mdW5jdGlvbiB5Yygpe3ZhciBhPXJjO3JjPDw9MTswPT09KHJjJjQxOTQyNDApJiYocmM9NjQpO3JldHVybiBhfWZ1bmN0aW9uIHpjKGEpe2Zvcih2YXIgYj1bXSxjPTA7MzE+YztjKyspYi5wdXNoKGEpO3JldHVybiBifVxuZnVuY3Rpb24gQWMoYSxiLGMpe2EucGVuZGluZ0xhbmVzfD1iOzUzNjg3MDkxMiE9PWImJihhLnN1c3BlbmRlZExhbmVzPTAsYS5waW5nZWRMYW5lcz0wKTthPWEuZXZlbnRUaW1lcztiPTMxLW9jKGIpO2FbYl09Y31mdW5jdGlvbiBCYyhhLGIpe3ZhciBjPWEucGVuZGluZ0xhbmVzJn5iO2EucGVuZGluZ0xhbmVzPWI7YS5zdXNwZW5kZWRMYW5lcz0wO2EucGluZ2VkTGFuZXM9MDthLmV4cGlyZWRMYW5lcyY9YjthLm11dGFibGVSZWFkTGFuZXMmPWI7YS5lbnRhbmdsZWRMYW5lcyY9YjtiPWEuZW50YW5nbGVtZW50czt2YXIgZD1hLmV2ZW50VGltZXM7Zm9yKGE9YS5leHBpcmF0aW9uVGltZXM7MDxjOyl7dmFyIGU9MzEtb2MoYyksZj0xPDxlO2JbZV09MDtkW2VdPS0xO2FbZV09LTE7YyY9fmZ9fVxuZnVuY3Rpb24gQ2MoYSxiKXt2YXIgYz1hLmVudGFuZ2xlZExhbmVzfD1iO2ZvcihhPWEuZW50YW5nbGVtZW50cztjOyl7dmFyIGQ9MzEtb2MoYyksZT0xPDxkO2UmYnxhW2RdJmImJihhW2RdfD1iKTtjJj1+ZX19dmFyIEM9MDtmdW5jdGlvbiBEYyhhKXthJj0tYTtyZXR1cm4gMTxhPzQ8YT8wIT09KGEmMjY4NDM1NDU1KT8xNjo1MzY4NzA5MTI6NDoxfXZhciBFYyxGYyxHYyxIYyxJYyxKYz0hMSxLYz1bXSxMYz1udWxsLE1jPW51bGwsTmM9bnVsbCxPYz1uZXcgTWFwLFBjPW5ldyBNYXAsUWM9W10sUmM9XCJtb3VzZWRvd24gbW91c2V1cCB0b3VjaGNhbmNlbCB0b3VjaGVuZCB0b3VjaHN0YXJ0IGF1eGNsaWNrIGRibGNsaWNrIHBvaW50ZXJjYW5jZWwgcG9pbnRlcmRvd24gcG9pbnRlcnVwIGRyYWdlbmQgZHJhZ3N0YXJ0IGRyb3AgY29tcG9zaXRpb25lbmQgY29tcG9zaXRpb25zdGFydCBrZXlkb3duIGtleXByZXNzIGtleXVwIGlucHV0IHRleHRJbnB1dCBjb3B5IGN1dCBwYXN0ZSBjbGljayBjaGFuZ2UgY29udGV4dG1lbnUgcmVzZXQgc3VibWl0XCIuc3BsaXQoXCIgXCIpO1xuZnVuY3Rpb24gU2MoYSxiKXtzd2l0Y2goYSl7Y2FzZSBcImZvY3VzaW5cIjpjYXNlIFwiZm9jdXNvdXRcIjpMYz1udWxsO2JyZWFrO2Nhc2UgXCJkcmFnZW50ZXJcIjpjYXNlIFwiZHJhZ2xlYXZlXCI6TWM9bnVsbDticmVhaztjYXNlIFwibW91c2VvdmVyXCI6Y2FzZSBcIm1vdXNlb3V0XCI6TmM9bnVsbDticmVhaztjYXNlIFwicG9pbnRlcm92ZXJcIjpjYXNlIFwicG9pbnRlcm91dFwiOk9jLmRlbGV0ZShiLnBvaW50ZXJJZCk7YnJlYWs7Y2FzZSBcImdvdHBvaW50ZXJjYXB0dXJlXCI6Y2FzZSBcImxvc3Rwb2ludGVyY2FwdHVyZVwiOlBjLmRlbGV0ZShiLnBvaW50ZXJJZCl9fVxuZnVuY3Rpb24gVGMoYSxiLGMsZCxlLGYpe2lmKG51bGw9PT1hfHxhLm5hdGl2ZUV2ZW50IT09ZilyZXR1cm4gYT17YmxvY2tlZE9uOmIsZG9tRXZlbnROYW1lOmMsZXZlbnRTeXN0ZW1GbGFnczpkLG5hdGl2ZUV2ZW50OmYsdGFyZ2V0Q29udGFpbmVyczpbZV19LG51bGwhPT1iJiYoYj1DYihiKSxudWxsIT09YiYmRmMoYikpLGE7YS5ldmVudFN5c3RlbUZsYWdzfD1kO2I9YS50YXJnZXRDb250YWluZXJzO251bGwhPT1lJiYtMT09PWIuaW5kZXhPZihlKSYmYi5wdXNoKGUpO3JldHVybiBhfVxuZnVuY3Rpb24gVWMoYSxiLGMsZCxlKXtzd2l0Y2goYil7Y2FzZSBcImZvY3VzaW5cIjpyZXR1cm4gTGM9VGMoTGMsYSxiLGMsZCxlKSwhMDtjYXNlIFwiZHJhZ2VudGVyXCI6cmV0dXJuIE1jPVRjKE1jLGEsYixjLGQsZSksITA7Y2FzZSBcIm1vdXNlb3ZlclwiOnJldHVybiBOYz1UYyhOYyxhLGIsYyxkLGUpLCEwO2Nhc2UgXCJwb2ludGVyb3ZlclwiOnZhciBmPWUucG9pbnRlcklkO09jLnNldChmLFRjKE9jLmdldChmKXx8bnVsbCxhLGIsYyxkLGUpKTtyZXR1cm4hMDtjYXNlIFwiZ290cG9pbnRlcmNhcHR1cmVcIjpyZXR1cm4gZj1lLnBvaW50ZXJJZCxQYy5zZXQoZixUYyhQYy5nZXQoZil8fG51bGwsYSxiLGMsZCxlKSksITB9cmV0dXJuITF9XG5mdW5jdGlvbiBWYyhhKXt2YXIgYj1XYyhhLnRhcmdldCk7aWYobnVsbCE9PWIpe3ZhciBjPVZiKGIpO2lmKG51bGwhPT1jKWlmKGI9Yy50YWcsMTM9PT1iKXtpZihiPVdiKGMpLG51bGwhPT1iKXthLmJsb2NrZWRPbj1iO0ljKGEucHJpb3JpdHksZnVuY3Rpb24oKXtHYyhjKX0pO3JldHVybn19ZWxzZSBpZigzPT09YiYmYy5zdGF0ZU5vZGUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl7YS5ibG9ja2VkT249Mz09PWMudGFnP2Muc3RhdGVOb2RlLmNvbnRhaW5lckluZm86bnVsbDtyZXR1cm59fWEuYmxvY2tlZE9uPW51bGx9XG5mdW5jdGlvbiBYYyhhKXtpZihudWxsIT09YS5ibG9ja2VkT24pcmV0dXJuITE7Zm9yKHZhciBiPWEudGFyZ2V0Q29udGFpbmVyczswPGIubGVuZ3RoOyl7dmFyIGM9WWMoYS5kb21FdmVudE5hbWUsYS5ldmVudFN5c3RlbUZsYWdzLGJbMF0sYS5uYXRpdmVFdmVudCk7aWYobnVsbD09PWMpe2M9YS5uYXRpdmVFdmVudDt2YXIgZD1uZXcgYy5jb25zdHJ1Y3RvcihjLnR5cGUsYyk7d2I9ZDtjLnRhcmdldC5kaXNwYXRjaEV2ZW50KGQpO3diPW51bGx9ZWxzZSByZXR1cm4gYj1DYihjKSxudWxsIT09YiYmRmMoYiksYS5ibG9ja2VkT249YywhMTtiLnNoaWZ0KCl9cmV0dXJuITB9ZnVuY3Rpb24gWmMoYSxiLGMpe1hjKGEpJiZjLmRlbGV0ZShiKX1mdW5jdGlvbiAkYygpe0pjPSExO251bGwhPT1MYyYmWGMoTGMpJiYoTGM9bnVsbCk7bnVsbCE9PU1jJiZYYyhNYykmJihNYz1udWxsKTtudWxsIT09TmMmJlhjKE5jKSYmKE5jPW51bGwpO09jLmZvckVhY2goWmMpO1BjLmZvckVhY2goWmMpfVxuZnVuY3Rpb24gYWQoYSxiKXthLmJsb2NrZWRPbj09PWImJihhLmJsb2NrZWRPbj1udWxsLEpjfHwoSmM9ITAsY2EudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayhjYS51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSwkYykpKX1cbmZ1bmN0aW9uIGJkKGEpe2Z1bmN0aW9uIGIoYil7cmV0dXJuIGFkKGIsYSl9aWYoMDxLYy5sZW5ndGgpe2FkKEtjWzBdLGEpO2Zvcih2YXIgYz0xO2M8S2MubGVuZ3RoO2MrKyl7dmFyIGQ9S2NbY107ZC5ibG9ja2VkT249PT1hJiYoZC5ibG9ja2VkT249bnVsbCl9fW51bGwhPT1MYyYmYWQoTGMsYSk7bnVsbCE9PU1jJiZhZChNYyxhKTtudWxsIT09TmMmJmFkKE5jLGEpO09jLmZvckVhY2goYik7UGMuZm9yRWFjaChiKTtmb3IoYz0wO2M8UWMubGVuZ3RoO2MrKylkPVFjW2NdLGQuYmxvY2tlZE9uPT09YSYmKGQuYmxvY2tlZE9uPW51bGwpO2Zvcig7MDxRYy5sZW5ndGgmJihjPVFjWzBdLG51bGw9PT1jLmJsb2NrZWRPbik7KVZjKGMpLG51bGw9PT1jLmJsb2NrZWRPbiYmUWMuc2hpZnQoKX12YXIgY2Q9dWEuUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsZGQ9ITA7XG5mdW5jdGlvbiBlZChhLGIsYyxkKXt2YXIgZT1DLGY9Y2QudHJhbnNpdGlvbjtjZC50cmFuc2l0aW9uPW51bGw7dHJ5e0M9MSxmZChhLGIsYyxkKX1maW5hbGx5e0M9ZSxjZC50cmFuc2l0aW9uPWZ9fWZ1bmN0aW9uIGdkKGEsYixjLGQpe3ZhciBlPUMsZj1jZC50cmFuc2l0aW9uO2NkLnRyYW5zaXRpb249bnVsbDt0cnl7Qz00LGZkKGEsYixjLGQpfWZpbmFsbHl7Qz1lLGNkLnRyYW5zaXRpb249Zn19XG5mdW5jdGlvbiBmZChhLGIsYyxkKXtpZihkZCl7dmFyIGU9WWMoYSxiLGMsZCk7aWYobnVsbD09PWUpaGQoYSxiLGQsaWQsYyksU2MoYSxkKTtlbHNlIGlmKFVjKGUsYSxiLGMsZCkpZC5zdG9wUHJvcGFnYXRpb24oKTtlbHNlIGlmKFNjKGEsZCksYiY0JiYtMTxSYy5pbmRleE9mKGEpKXtmb3IoO251bGwhPT1lOyl7dmFyIGY9Q2IoZSk7bnVsbCE9PWYmJkVjKGYpO2Y9WWMoYSxiLGMsZCk7bnVsbD09PWYmJmhkKGEsYixkLGlkLGMpO2lmKGY9PT1lKWJyZWFrO2U9Zn1udWxsIT09ZSYmZC5zdG9wUHJvcGFnYXRpb24oKX1lbHNlIGhkKGEsYixkLG51bGwsYyl9fXZhciBpZD1udWxsO1xuZnVuY3Rpb24gWWMoYSxiLGMsZCl7aWQ9bnVsbDthPXhiKGQpO2E9V2MoYSk7aWYobnVsbCE9PWEpaWYoYj1WYihhKSxudWxsPT09YilhPW51bGw7ZWxzZSBpZihjPWIudGFnLDEzPT09Yyl7YT1XYihiKTtpZihudWxsIT09YSlyZXR1cm4gYTthPW51bGx9ZWxzZSBpZigzPT09Yyl7aWYoYi5zdGF0ZU5vZGUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZClyZXR1cm4gMz09PWIudGFnP2Iuc3RhdGVOb2RlLmNvbnRhaW5lckluZm86bnVsbDthPW51bGx9ZWxzZSBiIT09YSYmKGE9bnVsbCk7aWQ9YTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIGpkKGEpe3N3aXRjaChhKXtjYXNlIFwiY2FuY2VsXCI6Y2FzZSBcImNsaWNrXCI6Y2FzZSBcImNsb3NlXCI6Y2FzZSBcImNvbnRleHRtZW51XCI6Y2FzZSBcImNvcHlcIjpjYXNlIFwiY3V0XCI6Y2FzZSBcImF1eGNsaWNrXCI6Y2FzZSBcImRibGNsaWNrXCI6Y2FzZSBcImRyYWdlbmRcIjpjYXNlIFwiZHJhZ3N0YXJ0XCI6Y2FzZSBcImRyb3BcIjpjYXNlIFwiZm9jdXNpblwiOmNhc2UgXCJmb2N1c291dFwiOmNhc2UgXCJpbnB1dFwiOmNhc2UgXCJpbnZhbGlkXCI6Y2FzZSBcImtleWRvd25cIjpjYXNlIFwia2V5cHJlc3NcIjpjYXNlIFwia2V5dXBcIjpjYXNlIFwibW91c2Vkb3duXCI6Y2FzZSBcIm1vdXNldXBcIjpjYXNlIFwicGFzdGVcIjpjYXNlIFwicGF1c2VcIjpjYXNlIFwicGxheVwiOmNhc2UgXCJwb2ludGVyY2FuY2VsXCI6Y2FzZSBcInBvaW50ZXJkb3duXCI6Y2FzZSBcInBvaW50ZXJ1cFwiOmNhc2UgXCJyYXRlY2hhbmdlXCI6Y2FzZSBcInJlc2V0XCI6Y2FzZSBcInJlc2l6ZVwiOmNhc2UgXCJzZWVrZWRcIjpjYXNlIFwic3VibWl0XCI6Y2FzZSBcInRvdWNoY2FuY2VsXCI6Y2FzZSBcInRvdWNoZW5kXCI6Y2FzZSBcInRvdWNoc3RhcnRcIjpjYXNlIFwidm9sdW1lY2hhbmdlXCI6Y2FzZSBcImNoYW5nZVwiOmNhc2UgXCJzZWxlY3Rpb25jaGFuZ2VcIjpjYXNlIFwidGV4dElucHV0XCI6Y2FzZSBcImNvbXBvc2l0aW9uc3RhcnRcIjpjYXNlIFwiY29tcG9zaXRpb25lbmRcIjpjYXNlIFwiY29tcG9zaXRpb251cGRhdGVcIjpjYXNlIFwiYmVmb3JlYmx1clwiOmNhc2UgXCJhZnRlcmJsdXJcIjpjYXNlIFwiYmVmb3JlaW5wdXRcIjpjYXNlIFwiYmx1clwiOmNhc2UgXCJmdWxsc2NyZWVuY2hhbmdlXCI6Y2FzZSBcImZvY3VzXCI6Y2FzZSBcImhhc2hjaGFuZ2VcIjpjYXNlIFwicG9wc3RhdGVcIjpjYXNlIFwic2VsZWN0XCI6Y2FzZSBcInNlbGVjdHN0YXJ0XCI6cmV0dXJuIDE7Y2FzZSBcImRyYWdcIjpjYXNlIFwiZHJhZ2VudGVyXCI6Y2FzZSBcImRyYWdleGl0XCI6Y2FzZSBcImRyYWdsZWF2ZVwiOmNhc2UgXCJkcmFnb3ZlclwiOmNhc2UgXCJtb3VzZW1vdmVcIjpjYXNlIFwibW91c2VvdXRcIjpjYXNlIFwibW91c2VvdmVyXCI6Y2FzZSBcInBvaW50ZXJtb3ZlXCI6Y2FzZSBcInBvaW50ZXJvdXRcIjpjYXNlIFwicG9pbnRlcm92ZXJcIjpjYXNlIFwic2Nyb2xsXCI6Y2FzZSBcInRvZ2dsZVwiOmNhc2UgXCJ0b3VjaG1vdmVcIjpjYXNlIFwid2hlZWxcIjpjYXNlIFwibW91c2VlbnRlclwiOmNhc2UgXCJtb3VzZWxlYXZlXCI6Y2FzZSBcInBvaW50ZXJlbnRlclwiOmNhc2UgXCJwb2ludGVybGVhdmVcIjpyZXR1cm4gNDtcbmNhc2UgXCJtZXNzYWdlXCI6c3dpdGNoKGVjKCkpe2Nhc2UgZmM6cmV0dXJuIDE7Y2FzZSBnYzpyZXR1cm4gNDtjYXNlIGhjOmNhc2UgaWM6cmV0dXJuIDE2O2Nhc2UgamM6cmV0dXJuIDUzNjg3MDkxMjtkZWZhdWx0OnJldHVybiAxNn1kZWZhdWx0OnJldHVybiAxNn19dmFyIGtkPW51bGwsbGQ9bnVsbCxtZD1udWxsO2Z1bmN0aW9uIG5kKCl7aWYobWQpcmV0dXJuIG1kO3ZhciBhLGI9bGQsYz1iLmxlbmd0aCxkLGU9XCJ2YWx1ZVwiaW4ga2Q/a2QudmFsdWU6a2QudGV4dENvbnRlbnQsZj1lLmxlbmd0aDtmb3IoYT0wO2E8YyYmYlthXT09PWVbYV07YSsrKTt2YXIgZz1jLWE7Zm9yKGQ9MTtkPD1nJiZiW2MtZF09PT1lW2YtZF07ZCsrKTtyZXR1cm4gbWQ9ZS5zbGljZShhLDE8ZD8xLWQ6dm9pZCAwKX1cbmZ1bmN0aW9uIG9kKGEpe3ZhciBiPWEua2V5Q29kZTtcImNoYXJDb2RlXCJpbiBhPyhhPWEuY2hhckNvZGUsMD09PWEmJjEzPT09YiYmKGE9MTMpKTphPWI7MTA9PT1hJiYoYT0xMyk7cmV0dXJuIDMyPD1hfHwxMz09PWE/YTowfWZ1bmN0aW9uIHBkKCl7cmV0dXJuITB9ZnVuY3Rpb24gcWQoKXtyZXR1cm4hMX1cbmZ1bmN0aW9uIHJkKGEpe2Z1bmN0aW9uIGIoYixkLGUsZixnKXt0aGlzLl9yZWFjdE5hbWU9Yjt0aGlzLl90YXJnZXRJbnN0PWU7dGhpcy50eXBlPWQ7dGhpcy5uYXRpdmVFdmVudD1mO3RoaXMudGFyZ2V0PWc7dGhpcy5jdXJyZW50VGFyZ2V0PW51bGw7Zm9yKHZhciBjIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShjKSYmKGI9YVtjXSx0aGlzW2NdPWI/YihmKTpmW2NdKTt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD0obnVsbCE9Zi5kZWZhdWx0UHJldmVudGVkP2YuZGVmYXVsdFByZXZlbnRlZDohMT09PWYucmV0dXJuVmFsdWUpP3BkOnFkO3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9cWQ7cmV0dXJuIHRoaXN9QShiLnByb3RvdHlwZSx7cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITA7dmFyIGE9dGhpcy5uYXRpdmVFdmVudDthJiYoYS5wcmV2ZW50RGVmYXVsdD9hLnByZXZlbnREZWZhdWx0KCk6XCJ1bmtub3duXCIhPT10eXBlb2YgYS5yZXR1cm5WYWx1ZSYmXG4oYS5yZXR1cm5WYWx1ZT0hMSksdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9cGQpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm5hdGl2ZUV2ZW50O2EmJihhLnN0b3BQcm9wYWdhdGlvbj9hLnN0b3BQcm9wYWdhdGlvbigpOlwidW5rbm93blwiIT09dHlwZW9mIGEuY2FuY2VsQnViYmxlJiYoYS5jYW5jZWxCdWJibGU9ITApLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9cGQpfSxwZXJzaXN0OmZ1bmN0aW9uKCl7fSxpc1BlcnNpc3RlbnQ6cGR9KTtyZXR1cm4gYn1cbnZhciBzZD17ZXZlbnRQaGFzZTowLGJ1YmJsZXM6MCxjYW5jZWxhYmxlOjAsdGltZVN0YW1wOmZ1bmN0aW9uKGEpe3JldHVybiBhLnRpbWVTdGFtcHx8RGF0ZS5ub3coKX0sZGVmYXVsdFByZXZlbnRlZDowLGlzVHJ1c3RlZDowfSx0ZD1yZChzZCksdWQ9QSh7fSxzZCx7dmlldzowLGRldGFpbDowfSksdmQ9cmQodWQpLHdkLHhkLHlkLEFkPUEoe30sdWQse3NjcmVlblg6MCxzY3JlZW5ZOjAsY2xpZW50WDowLGNsaWVudFk6MCxwYWdlWDowLHBhZ2VZOjAsY3RybEtleTowLHNoaWZ0S2V5OjAsYWx0S2V5OjAsbWV0YUtleTowLGdldE1vZGlmaWVyU3RhdGU6emQsYnV0dG9uOjAsYnV0dG9uczowLHJlbGF0ZWRUYXJnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHZvaWQgMD09PWEucmVsYXRlZFRhcmdldD9hLmZyb21FbGVtZW50PT09YS5zcmNFbGVtZW50P2EudG9FbGVtZW50OmEuZnJvbUVsZW1lbnQ6YS5yZWxhdGVkVGFyZ2V0fSxtb3ZlbWVudFg6ZnVuY3Rpb24oYSl7aWYoXCJtb3ZlbWVudFhcImluXG5hKXJldHVybiBhLm1vdmVtZW50WDthIT09eWQmJih5ZCYmXCJtb3VzZW1vdmVcIj09PWEudHlwZT8od2Q9YS5zY3JlZW5YLXlkLnNjcmVlblgseGQ9YS5zY3JlZW5ZLXlkLnNjcmVlblkpOnhkPXdkPTAseWQ9YSk7cmV0dXJuIHdkfSxtb3ZlbWVudFk6ZnVuY3Rpb24oYSl7cmV0dXJuXCJtb3ZlbWVudFlcImluIGE/YS5tb3ZlbWVudFk6eGR9fSksQmQ9cmQoQWQpLENkPUEoe30sQWQse2RhdGFUcmFuc2ZlcjowfSksRGQ9cmQoQ2QpLEVkPUEoe30sdWQse3JlbGF0ZWRUYXJnZXQ6MH0pLEZkPXJkKEVkKSxHZD1BKHt9LHNkLHthbmltYXRpb25OYW1lOjAsZWxhcHNlZFRpbWU6MCxwc2V1ZG9FbGVtZW50OjB9KSxIZD1yZChHZCksSWQ9QSh7fSxzZCx7Y2xpcGJvYXJkRGF0YTpmdW5jdGlvbihhKXtyZXR1cm5cImNsaXBib2FyZERhdGFcImluIGE/YS5jbGlwYm9hcmREYXRhOndpbmRvdy5jbGlwYm9hcmREYXRhfX0pLEpkPXJkKElkKSxLZD1BKHt9LHNkLHtkYXRhOjB9KSxMZD1yZChLZCksTWQ9e0VzYzpcIkVzY2FwZVwiLFxuU3BhY2ViYXI6XCIgXCIsTGVmdDpcIkFycm93TGVmdFwiLFVwOlwiQXJyb3dVcFwiLFJpZ2h0OlwiQXJyb3dSaWdodFwiLERvd246XCJBcnJvd0Rvd25cIixEZWw6XCJEZWxldGVcIixXaW46XCJPU1wiLE1lbnU6XCJDb250ZXh0TWVudVwiLEFwcHM6XCJDb250ZXh0TWVudVwiLFNjcm9sbDpcIlNjcm9sbExvY2tcIixNb3pQcmludGFibGVLZXk6XCJVbmlkZW50aWZpZWRcIn0sTmQ9ezg6XCJCYWNrc3BhY2VcIiw5OlwiVGFiXCIsMTI6XCJDbGVhclwiLDEzOlwiRW50ZXJcIiwxNjpcIlNoaWZ0XCIsMTc6XCJDb250cm9sXCIsMTg6XCJBbHRcIiwxOTpcIlBhdXNlXCIsMjA6XCJDYXBzTG9ja1wiLDI3OlwiRXNjYXBlXCIsMzI6XCIgXCIsMzM6XCJQYWdlVXBcIiwzNDpcIlBhZ2VEb3duXCIsMzU6XCJFbmRcIiwzNjpcIkhvbWVcIiwzNzpcIkFycm93TGVmdFwiLDM4OlwiQXJyb3dVcFwiLDM5OlwiQXJyb3dSaWdodFwiLDQwOlwiQXJyb3dEb3duXCIsNDU6XCJJbnNlcnRcIiw0NjpcIkRlbGV0ZVwiLDExMjpcIkYxXCIsMTEzOlwiRjJcIiwxMTQ6XCJGM1wiLDExNTpcIkY0XCIsMTE2OlwiRjVcIiwxMTc6XCJGNlwiLDExODpcIkY3XCIsXG4xMTk6XCJGOFwiLDEyMDpcIkY5XCIsMTIxOlwiRjEwXCIsMTIyOlwiRjExXCIsMTIzOlwiRjEyXCIsMTQ0OlwiTnVtTG9ja1wiLDE0NTpcIlNjcm9sbExvY2tcIiwyMjQ6XCJNZXRhXCJ9LE9kPXtBbHQ6XCJhbHRLZXlcIixDb250cm9sOlwiY3RybEtleVwiLE1ldGE6XCJtZXRhS2V5XCIsU2hpZnQ6XCJzaGlmdEtleVwifTtmdW5jdGlvbiBQZChhKXt2YXIgYj10aGlzLm5hdGl2ZUV2ZW50O3JldHVybiBiLmdldE1vZGlmaWVyU3RhdGU/Yi5nZXRNb2RpZmllclN0YXRlKGEpOihhPU9kW2FdKT8hIWJbYV06ITF9ZnVuY3Rpb24gemQoKXtyZXR1cm4gUGR9XG52YXIgUWQ9QSh7fSx1ZCx7a2V5OmZ1bmN0aW9uKGEpe2lmKGEua2V5KXt2YXIgYj1NZFthLmtleV18fGEua2V5O2lmKFwiVW5pZGVudGlmaWVkXCIhPT1iKXJldHVybiBifXJldHVyblwia2V5cHJlc3NcIj09PWEudHlwZT8oYT1vZChhKSwxMz09PWE/XCJFbnRlclwiOlN0cmluZy5mcm9tQ2hhckNvZGUoYSkpOlwia2V5ZG93blwiPT09YS50eXBlfHxcImtleXVwXCI9PT1hLnR5cGU/TmRbYS5rZXlDb2RlXXx8XCJVbmlkZW50aWZpZWRcIjpcIlwifSxjb2RlOjAsbG9jYXRpb246MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxhbHRLZXk6MCxtZXRhS2V5OjAscmVwZWF0OjAsbG9jYWxlOjAsZ2V0TW9kaWZpZXJTdGF0ZTp6ZCxjaGFyQ29kZTpmdW5jdGlvbihhKXtyZXR1cm5cImtleXByZXNzXCI9PT1hLnR5cGU/b2QoYSk6MH0sa2V5Q29kZTpmdW5jdGlvbihhKXtyZXR1cm5cImtleWRvd25cIj09PWEudHlwZXx8XCJrZXl1cFwiPT09YS50eXBlP2Eua2V5Q29kZTowfSx3aGljaDpmdW5jdGlvbihhKXtyZXR1cm5cImtleXByZXNzXCI9PT1cbmEudHlwZT9vZChhKTpcImtleWRvd25cIj09PWEudHlwZXx8XCJrZXl1cFwiPT09YS50eXBlP2Eua2V5Q29kZTowfX0pLFJkPXJkKFFkKSxTZD1BKHt9LEFkLHtwb2ludGVySWQ6MCx3aWR0aDowLGhlaWdodDowLHByZXNzdXJlOjAsdGFuZ2VudGlhbFByZXNzdXJlOjAsdGlsdFg6MCx0aWx0WTowLHR3aXN0OjAscG9pbnRlclR5cGU6MCxpc1ByaW1hcnk6MH0pLFRkPXJkKFNkKSxVZD1BKHt9LHVkLHt0b3VjaGVzOjAsdGFyZ2V0VG91Y2hlczowLGNoYW5nZWRUb3VjaGVzOjAsYWx0S2V5OjAsbWV0YUtleTowLGN0cmxLZXk6MCxzaGlmdEtleTowLGdldE1vZGlmaWVyU3RhdGU6emR9KSxWZD1yZChVZCksV2Q9QSh7fSxzZCx7cHJvcGVydHlOYW1lOjAsZWxhcHNlZFRpbWU6MCxwc2V1ZG9FbGVtZW50OjB9KSxYZD1yZChXZCksWWQ9QSh7fSxBZCx7ZGVsdGFYOmZ1bmN0aW9uKGEpe3JldHVyblwiZGVsdGFYXCJpbiBhP2EuZGVsdGFYOlwid2hlZWxEZWx0YVhcImluIGE/LWEud2hlZWxEZWx0YVg6MH0sXG5kZWx0YVk6ZnVuY3Rpb24oYSl7cmV0dXJuXCJkZWx0YVlcImluIGE/YS5kZWx0YVk6XCJ3aGVlbERlbHRhWVwiaW4gYT8tYS53aGVlbERlbHRhWTpcIndoZWVsRGVsdGFcImluIGE/LWEud2hlZWxEZWx0YTowfSxkZWx0YVo6MCxkZWx0YU1vZGU6MH0pLFpkPXJkKFlkKSwkZD1bOSwxMywyNywzMl0sYWU9aWEmJlwiQ29tcG9zaXRpb25FdmVudFwiaW4gd2luZG93LGJlPW51bGw7aWEmJlwiZG9jdW1lbnRNb2RlXCJpbiBkb2N1bWVudCYmKGJlPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7dmFyIGNlPWlhJiZcIlRleHRFdmVudFwiaW4gd2luZG93JiYhYmUsZGU9aWEmJighYWV8fGJlJiY4PGJlJiYxMT49YmUpLGVlPVN0cmluZy5mcm9tQ2hhckNvZGUoMzIpLGZlPSExO1xuZnVuY3Rpb24gZ2UoYSxiKXtzd2l0Y2goYSl7Y2FzZSBcImtleXVwXCI6cmV0dXJuLTEhPT0kZC5pbmRleE9mKGIua2V5Q29kZSk7Y2FzZSBcImtleWRvd25cIjpyZXR1cm4gMjI5IT09Yi5rZXlDb2RlO2Nhc2UgXCJrZXlwcmVzc1wiOmNhc2UgXCJtb3VzZWRvd25cIjpjYXNlIFwiZm9jdXNvdXRcIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBoZShhKXthPWEuZGV0YWlsO3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmXCJkYXRhXCJpbiBhP2EuZGF0YTpudWxsfXZhciBpZT0hMTtmdW5jdGlvbiBqZShhLGIpe3N3aXRjaChhKXtjYXNlIFwiY29tcG9zaXRpb25lbmRcIjpyZXR1cm4gaGUoYik7Y2FzZSBcImtleXByZXNzXCI6aWYoMzIhPT1iLndoaWNoKXJldHVybiBudWxsO2ZlPSEwO3JldHVybiBlZTtjYXNlIFwidGV4dElucHV0XCI6cmV0dXJuIGE9Yi5kYXRhLGE9PT1lZSYmZmU/bnVsbDphO2RlZmF1bHQ6cmV0dXJuIG51bGx9fVxuZnVuY3Rpb24ga2UoYSxiKXtpZihpZSlyZXR1cm5cImNvbXBvc2l0aW9uZW5kXCI9PT1hfHwhYWUmJmdlKGEsYik/KGE9bmQoKSxtZD1sZD1rZD1udWxsLGllPSExLGEpOm51bGw7c3dpdGNoKGEpe2Nhc2UgXCJwYXN0ZVwiOnJldHVybiBudWxsO2Nhc2UgXCJrZXlwcmVzc1wiOmlmKCEoYi5jdHJsS2V5fHxiLmFsdEtleXx8Yi5tZXRhS2V5KXx8Yi5jdHJsS2V5JiZiLmFsdEtleSl7aWYoYi5jaGFyJiYxPGIuY2hhci5sZW5ndGgpcmV0dXJuIGIuY2hhcjtpZihiLndoaWNoKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGIud2hpY2gpfXJldHVybiBudWxsO2Nhc2UgXCJjb21wb3NpdGlvbmVuZFwiOnJldHVybiBkZSYmXCJrb1wiIT09Yi5sb2NhbGU/bnVsbDpiLmRhdGE7ZGVmYXVsdDpyZXR1cm4gbnVsbH19XG52YXIgbGU9e2NvbG9yOiEwLGRhdGU6ITAsZGF0ZXRpbWU6ITAsXCJkYXRldGltZS1sb2NhbFwiOiEwLGVtYWlsOiEwLG1vbnRoOiEwLG51bWJlcjohMCxwYXNzd29yZDohMCxyYW5nZTohMCxzZWFyY2g6ITAsdGVsOiEwLHRleHQ6ITAsdGltZTohMCx1cmw6ITAsd2VlazohMH07ZnVuY3Rpb24gbWUoYSl7dmFyIGI9YSYmYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVyblwiaW5wdXRcIj09PWI/ISFsZVthLnR5cGVdOlwidGV4dGFyZWFcIj09PWI/ITA6ITF9ZnVuY3Rpb24gbmUoYSxiLGMsZCl7RWIoZCk7Yj1vZShiLFwib25DaGFuZ2VcIik7MDxiLmxlbmd0aCYmKGM9bmV3IHRkKFwib25DaGFuZ2VcIixcImNoYW5nZVwiLG51bGwsYyxkKSxhLnB1c2goe2V2ZW50OmMsbGlzdGVuZXJzOmJ9KSl9dmFyIHBlPW51bGwscWU9bnVsbDtmdW5jdGlvbiByZShhKXtzZShhLDApfWZ1bmN0aW9uIHRlKGEpe3ZhciBiPXVlKGEpO2lmKFdhKGIpKXJldHVybiBhfVxuZnVuY3Rpb24gdmUoYSxiKXtpZihcImNoYW5nZVwiPT09YSlyZXR1cm4gYn12YXIgd2U9ITE7aWYoaWEpe3ZhciB4ZTtpZihpYSl7dmFyIHllPVwib25pbnB1dFwiaW4gZG9jdW1lbnQ7aWYoIXllKXt2YXIgemU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTt6ZS5zZXRBdHRyaWJ1dGUoXCJvbmlucHV0XCIsXCJyZXR1cm47XCIpO3llPVwiZnVuY3Rpb25cIj09PXR5cGVvZiB6ZS5vbmlucHV0fXhlPXllfWVsc2UgeGU9ITE7d2U9eGUmJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHw5PGRvY3VtZW50LmRvY3VtZW50TW9kZSl9ZnVuY3Rpb24gQWUoKXtwZSYmKHBlLmRldGFjaEV2ZW50KFwib25wcm9wZXJ0eWNoYW5nZVwiLEJlKSxxZT1wZT1udWxsKX1mdW5jdGlvbiBCZShhKXtpZihcInZhbHVlXCI9PT1hLnByb3BlcnR5TmFtZSYmdGUocWUpKXt2YXIgYj1bXTtuZShiLHFlLGEseGIoYSkpO0piKHJlLGIpfX1cbmZ1bmN0aW9uIENlKGEsYixjKXtcImZvY3VzaW5cIj09PWE/KEFlKCkscGU9YixxZT1jLHBlLmF0dGFjaEV2ZW50KFwib25wcm9wZXJ0eWNoYW5nZVwiLEJlKSk6XCJmb2N1c291dFwiPT09YSYmQWUoKX1mdW5jdGlvbiBEZShhKXtpZihcInNlbGVjdGlvbmNoYW5nZVwiPT09YXx8XCJrZXl1cFwiPT09YXx8XCJrZXlkb3duXCI9PT1hKXJldHVybiB0ZShxZSl9ZnVuY3Rpb24gRWUoYSxiKXtpZihcImNsaWNrXCI9PT1hKXJldHVybiB0ZShiKX1mdW5jdGlvbiBGZShhLGIpe2lmKFwiaW5wdXRcIj09PWF8fFwiY2hhbmdlXCI9PT1hKXJldHVybiB0ZShiKX1mdW5jdGlvbiBHZShhLGIpe3JldHVybiBhPT09YiYmKDAhPT1hfHwxL2E9PT0xL2IpfHxhIT09YSYmYiE9PWJ9dmFyIEhlPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBPYmplY3QuaXM/T2JqZWN0LmlzOkdlO1xuZnVuY3Rpb24gSWUoYSxiKXtpZihIZShhLGIpKXJldHVybiEwO2lmKFwib2JqZWN0XCIhPT10eXBlb2YgYXx8bnVsbD09PWF8fFwib2JqZWN0XCIhPT10eXBlb2YgYnx8bnVsbD09PWIpcmV0dXJuITE7dmFyIGM9T2JqZWN0LmtleXMoYSksZD1PYmplY3Qua2V5cyhiKTtpZihjLmxlbmd0aCE9PWQubGVuZ3RoKXJldHVybiExO2ZvcihkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPWNbZF07aWYoIWphLmNhbGwoYixlKXx8IUhlKGFbZV0sYltlXSkpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gSmUoYSl7Zm9yKDthJiZhLmZpcnN0Q2hpbGQ7KWE9YS5maXJzdENoaWxkO3JldHVybiBhfVxuZnVuY3Rpb24gS2UoYSxiKXt2YXIgYz1KZShhKTthPTA7Zm9yKHZhciBkO2M7KXtpZigzPT09Yy5ub2RlVHlwZSl7ZD1hK2MudGV4dENvbnRlbnQubGVuZ3RoO2lmKGE8PWImJmQ+PWIpcmV0dXJue25vZGU6YyxvZmZzZXQ6Yi1hfTthPWR9YTp7Zm9yKDtjOyl7aWYoYy5uZXh0U2libGluZyl7Yz1jLm5leHRTaWJsaW5nO2JyZWFrIGF9Yz1jLnBhcmVudE5vZGV9Yz12b2lkIDB9Yz1KZShjKX19ZnVuY3Rpb24gTGUoYSxiKXtyZXR1cm4gYSYmYj9hPT09Yj8hMDphJiYzPT09YS5ub2RlVHlwZT8hMTpiJiYzPT09Yi5ub2RlVHlwZT9MZShhLGIucGFyZW50Tm9kZSk6XCJjb250YWluc1wiaW4gYT9hLmNvbnRhaW5zKGIpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24/ISEoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSYxNik6ITE6ITF9XG5mdW5jdGlvbiBNZSgpe2Zvcih2YXIgYT13aW5kb3csYj1YYSgpO2IgaW5zdGFuY2VvZiBhLkhUTUxJRnJhbWVFbGVtZW50Oyl7dHJ5e3ZhciBjPVwic3RyaW5nXCI9PT10eXBlb2YgYi5jb250ZW50V2luZG93LmxvY2F0aW9uLmhyZWZ9Y2F0Y2goZCl7Yz0hMX1pZihjKWE9Yi5jb250ZW50V2luZG93O2Vsc2UgYnJlYWs7Yj1YYShhLmRvY3VtZW50KX1yZXR1cm4gYn1mdW5jdGlvbiBOZShhKXt2YXIgYj1hJiZhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGImJihcImlucHV0XCI9PT1iJiYoXCJ0ZXh0XCI9PT1hLnR5cGV8fFwic2VhcmNoXCI9PT1hLnR5cGV8fFwidGVsXCI9PT1hLnR5cGV8fFwidXJsXCI9PT1hLnR5cGV8fFwicGFzc3dvcmRcIj09PWEudHlwZSl8fFwidGV4dGFyZWFcIj09PWJ8fFwidHJ1ZVwiPT09YS5jb250ZW50RWRpdGFibGUpfVxuZnVuY3Rpb24gT2UoYSl7dmFyIGI9TWUoKSxjPWEuZm9jdXNlZEVsZW0sZD1hLnNlbGVjdGlvblJhbmdlO2lmKGIhPT1jJiZjJiZjLm93bmVyRG9jdW1lbnQmJkxlKGMub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsYykpe2lmKG51bGwhPT1kJiZOZShjKSlpZihiPWQuc3RhcnQsYT1kLmVuZCx2b2lkIDA9PT1hJiYoYT1iKSxcInNlbGVjdGlvblN0YXJ0XCJpbiBjKWMuc2VsZWN0aW9uU3RhcnQ9YixjLnNlbGVjdGlvbkVuZD1NYXRoLm1pbihhLGMudmFsdWUubGVuZ3RoKTtlbHNlIGlmKGE9KGI9Yy5vd25lckRvY3VtZW50fHxkb2N1bWVudCkmJmIuZGVmYXVsdFZpZXd8fHdpbmRvdyxhLmdldFNlbGVjdGlvbil7YT1hLmdldFNlbGVjdGlvbigpO3ZhciBlPWMudGV4dENvbnRlbnQubGVuZ3RoLGY9TWF0aC5taW4oZC5zdGFydCxlKTtkPXZvaWQgMD09PWQuZW5kP2Y6TWF0aC5taW4oZC5lbmQsZSk7IWEuZXh0ZW5kJiZmPmQmJihlPWQsZD1mLGY9ZSk7ZT1LZShjLGYpO3ZhciBnPUtlKGMsXG5kKTtlJiZnJiYoMSE9PWEucmFuZ2VDb3VudHx8YS5hbmNob3JOb2RlIT09ZS5ub2RlfHxhLmFuY2hvck9mZnNldCE9PWUub2Zmc2V0fHxhLmZvY3VzTm9kZSE9PWcubm9kZXx8YS5mb2N1c09mZnNldCE9PWcub2Zmc2V0KSYmKGI9Yi5jcmVhdGVSYW5nZSgpLGIuc2V0U3RhcnQoZS5ub2RlLGUub2Zmc2V0KSxhLnJlbW92ZUFsbFJhbmdlcygpLGY+ZD8oYS5hZGRSYW5nZShiKSxhLmV4dGVuZChnLm5vZGUsZy5vZmZzZXQpKTooYi5zZXRFbmQoZy5ub2RlLGcub2Zmc2V0KSxhLmFkZFJhbmdlKGIpKSl9Yj1bXTtmb3IoYT1jO2E9YS5wYXJlbnROb2RlOykxPT09YS5ub2RlVHlwZSYmYi5wdXNoKHtlbGVtZW50OmEsbGVmdDphLnNjcm9sbExlZnQsdG9wOmEuc2Nyb2xsVG9wfSk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGMuZm9jdXMmJmMuZm9jdXMoKTtmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKWE9YltjXSxhLmVsZW1lbnQuc2Nyb2xsTGVmdD1hLmxlZnQsYS5lbGVtZW50LnNjcm9sbFRvcD1hLnRvcH19XG52YXIgUGU9aWEmJlwiZG9jdW1lbnRNb2RlXCJpbiBkb2N1bWVudCYmMTE+PWRvY3VtZW50LmRvY3VtZW50TW9kZSxRZT1udWxsLFJlPW51bGwsU2U9bnVsbCxUZT0hMTtcbmZ1bmN0aW9uIFVlKGEsYixjKXt2YXIgZD1jLndpbmRvdz09PWM/Yy5kb2N1bWVudDo5PT09Yy5ub2RlVHlwZT9jOmMub3duZXJEb2N1bWVudDtUZXx8bnVsbD09UWV8fFFlIT09WGEoZCl8fChkPVFlLFwic2VsZWN0aW9uU3RhcnRcImluIGQmJk5lKGQpP2Q9e3N0YXJ0OmQuc2VsZWN0aW9uU3RhcnQsZW5kOmQuc2VsZWN0aW9uRW5kfTooZD0oZC5vd25lckRvY3VtZW50JiZkLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHdpbmRvdykuZ2V0U2VsZWN0aW9uKCksZD17YW5jaG9yTm9kZTpkLmFuY2hvck5vZGUsYW5jaG9yT2Zmc2V0OmQuYW5jaG9yT2Zmc2V0LGZvY3VzTm9kZTpkLmZvY3VzTm9kZSxmb2N1c09mZnNldDpkLmZvY3VzT2Zmc2V0fSksU2UmJkllKFNlLGQpfHwoU2U9ZCxkPW9lKFJlLFwib25TZWxlY3RcIiksMDxkLmxlbmd0aCYmKGI9bmV3IHRkKFwib25TZWxlY3RcIixcInNlbGVjdFwiLG51bGwsYixjKSxhLnB1c2goe2V2ZW50OmIsbGlzdGVuZXJzOmR9KSxiLnRhcmdldD1RZSkpKX1cbmZ1bmN0aW9uIFZlKGEsYil7dmFyIGM9e307Y1thLnRvTG93ZXJDYXNlKCldPWIudG9Mb3dlckNhc2UoKTtjW1wiV2Via2l0XCIrYV09XCJ3ZWJraXRcIitiO2NbXCJNb3pcIithXT1cIm1velwiK2I7cmV0dXJuIGN9dmFyIFdlPXthbmltYXRpb25lbmQ6VmUoXCJBbmltYXRpb25cIixcIkFuaW1hdGlvbkVuZFwiKSxhbmltYXRpb25pdGVyYXRpb246VmUoXCJBbmltYXRpb25cIixcIkFuaW1hdGlvbkl0ZXJhdGlvblwiKSxhbmltYXRpb25zdGFydDpWZShcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uU3RhcnRcIiksdHJhbnNpdGlvbmVuZDpWZShcIlRyYW5zaXRpb25cIixcIlRyYW5zaXRpb25FbmRcIil9LFhlPXt9LFllPXt9O1xuaWEmJihZZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLnN0eWxlLFwiQW5pbWF0aW9uRXZlbnRcImluIHdpbmRvd3x8KGRlbGV0ZSBXZS5hbmltYXRpb25lbmQuYW5pbWF0aW9uLGRlbGV0ZSBXZS5hbmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uLGRlbGV0ZSBXZS5hbmltYXRpb25zdGFydC5hbmltYXRpb24pLFwiVHJhbnNpdGlvbkV2ZW50XCJpbiB3aW5kb3d8fGRlbGV0ZSBXZS50cmFuc2l0aW9uZW5kLnRyYW5zaXRpb24pO2Z1bmN0aW9uIFplKGEpe2lmKFhlW2FdKXJldHVybiBYZVthXTtpZighV2VbYV0pcmV0dXJuIGE7dmFyIGI9V2VbYV0sYztmb3IoYyBpbiBiKWlmKGIuaGFzT3duUHJvcGVydHkoYykmJmMgaW4gWWUpcmV0dXJuIFhlW2FdPWJbY107cmV0dXJuIGF9dmFyICRlPVplKFwiYW5pbWF0aW9uZW5kXCIpLGFmPVplKFwiYW5pbWF0aW9uaXRlcmF0aW9uXCIpLGJmPVplKFwiYW5pbWF0aW9uc3RhcnRcIiksY2Y9WmUoXCJ0cmFuc2l0aW9uZW5kXCIpLGRmPW5ldyBNYXAsZWY9XCJhYm9ydCBhdXhDbGljayBjYW5jZWwgY2FuUGxheSBjYW5QbGF5VGhyb3VnaCBjbGljayBjbG9zZSBjb250ZXh0TWVudSBjb3B5IGN1dCBkcmFnIGRyYWdFbmQgZHJhZ0VudGVyIGRyYWdFeGl0IGRyYWdMZWF2ZSBkcmFnT3ZlciBkcmFnU3RhcnQgZHJvcCBkdXJhdGlvbkNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBnb3RQb2ludGVyQ2FwdHVyZSBpbnB1dCBpbnZhbGlkIGtleURvd24ga2V5UHJlc3Mga2V5VXAgbG9hZCBsb2FkZWREYXRhIGxvYWRlZE1ldGFkYXRhIGxvYWRTdGFydCBsb3N0UG9pbnRlckNhcHR1cmUgbW91c2VEb3duIG1vdXNlTW92ZSBtb3VzZU91dCBtb3VzZU92ZXIgbW91c2VVcCBwYXN0ZSBwYXVzZSBwbGF5IHBsYXlpbmcgcG9pbnRlckNhbmNlbCBwb2ludGVyRG93biBwb2ludGVyTW92ZSBwb2ludGVyT3V0IHBvaW50ZXJPdmVyIHBvaW50ZXJVcCBwcm9ncmVzcyByYXRlQ2hhbmdlIHJlc2V0IHJlc2l6ZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1Ym1pdCBzdXNwZW5kIHRpbWVVcGRhdGUgdG91Y2hDYW5jZWwgdG91Y2hFbmQgdG91Y2hTdGFydCB2b2x1bWVDaGFuZ2Ugc2Nyb2xsIHRvZ2dsZSB0b3VjaE1vdmUgd2FpdGluZyB3aGVlbFwiLnNwbGl0KFwiIFwiKTtcbmZ1bmN0aW9uIGZmKGEsYil7ZGYuc2V0KGEsYik7ZmEoYixbYV0pfWZvcih2YXIgZ2Y9MDtnZjxlZi5sZW5ndGg7Z2YrKyl7dmFyIGhmPWVmW2dmXSxqZj1oZi50b0xvd2VyQ2FzZSgpLGtmPWhmWzBdLnRvVXBwZXJDYXNlKCkraGYuc2xpY2UoMSk7ZmYoamYsXCJvblwiK2tmKX1mZigkZSxcIm9uQW5pbWF0aW9uRW5kXCIpO2ZmKGFmLFwib25BbmltYXRpb25JdGVyYXRpb25cIik7ZmYoYmYsXCJvbkFuaW1hdGlvblN0YXJ0XCIpO2ZmKFwiZGJsY2xpY2tcIixcIm9uRG91YmxlQ2xpY2tcIik7ZmYoXCJmb2N1c2luXCIsXCJvbkZvY3VzXCIpO2ZmKFwiZm9jdXNvdXRcIixcIm9uQmx1clwiKTtmZihjZixcIm9uVHJhbnNpdGlvbkVuZFwiKTtoYShcIm9uTW91c2VFbnRlclwiLFtcIm1vdXNlb3V0XCIsXCJtb3VzZW92ZXJcIl0pO2hhKFwib25Nb3VzZUxlYXZlXCIsW1wibW91c2VvdXRcIixcIm1vdXNlb3ZlclwiXSk7aGEoXCJvblBvaW50ZXJFbnRlclwiLFtcInBvaW50ZXJvdXRcIixcInBvaW50ZXJvdmVyXCJdKTtcbmhhKFwib25Qb2ludGVyTGVhdmVcIixbXCJwb2ludGVyb3V0XCIsXCJwb2ludGVyb3ZlclwiXSk7ZmEoXCJvbkNoYW5nZVwiLFwiY2hhbmdlIGNsaWNrIGZvY3VzaW4gZm9jdXNvdXQgaW5wdXQga2V5ZG93biBrZXl1cCBzZWxlY3Rpb25jaGFuZ2VcIi5zcGxpdChcIiBcIikpO2ZhKFwib25TZWxlY3RcIixcImZvY3Vzb3V0IGNvbnRleHRtZW51IGRyYWdlbmQgZm9jdXNpbiBrZXlkb3duIGtleXVwIG1vdXNlZG93biBtb3VzZXVwIHNlbGVjdGlvbmNoYW5nZVwiLnNwbGl0KFwiIFwiKSk7ZmEoXCJvbkJlZm9yZUlucHV0XCIsW1wiY29tcG9zaXRpb25lbmRcIixcImtleXByZXNzXCIsXCJ0ZXh0SW5wdXRcIixcInBhc3RlXCJdKTtmYShcIm9uQ29tcG9zaXRpb25FbmRcIixcImNvbXBvc2l0aW9uZW5kIGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpKTtmYShcIm9uQ29tcG9zaXRpb25TdGFydFwiLFwiY29tcG9zaXRpb25zdGFydCBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKSk7XG5mYShcIm9uQ29tcG9zaXRpb25VcGRhdGVcIixcImNvbXBvc2l0aW9udXBkYXRlIGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpKTt2YXIgbGY9XCJhYm9ydCBjYW5wbGF5IGNhbnBsYXl0aHJvdWdoIGR1cmF0aW9uY2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGxvYWRlZGRhdGEgbG9hZGVkbWV0YWRhdGEgbG9hZHN0YXJ0IHBhdXNlIHBsYXkgcGxheWluZyBwcm9ncmVzcyByYXRlY2hhbmdlIHJlc2l6ZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1c3BlbmQgdGltZXVwZGF0ZSB2b2x1bWVjaGFuZ2Ugd2FpdGluZ1wiLnNwbGl0KFwiIFwiKSxtZj1uZXcgU2V0KFwiY2FuY2VsIGNsb3NlIGludmFsaWQgbG9hZCBzY3JvbGwgdG9nZ2xlXCIuc3BsaXQoXCIgXCIpLmNvbmNhdChsZikpO1xuZnVuY3Rpb24gbmYoYSxiLGMpe3ZhciBkPWEudHlwZXx8XCJ1bmtub3duLWV2ZW50XCI7YS5jdXJyZW50VGFyZ2V0PWM7VWIoZCxiLHZvaWQgMCxhKTthLmN1cnJlbnRUYXJnZXQ9bnVsbH1cbmZ1bmN0aW9uIHNlKGEsYil7Yj0wIT09KGImNCk7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBkPWFbY10sZT1kLmV2ZW50O2Q9ZC5saXN0ZW5lcnM7YTp7dmFyIGY9dm9pZCAwO2lmKGIpZm9yKHZhciBnPWQubGVuZ3RoLTE7MDw9ZztnLS0pe3ZhciBoPWRbZ10saz1oLmluc3RhbmNlLGw9aC5jdXJyZW50VGFyZ2V0O2g9aC5saXN0ZW5lcjtpZihrIT09ZiYmZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrIGE7bmYoZSxoLGwpO2Y9a31lbHNlIGZvcihnPTA7ZzxkLmxlbmd0aDtnKyspe2g9ZFtnXTtrPWguaW5zdGFuY2U7bD1oLmN1cnJlbnRUYXJnZXQ7aD1oLmxpc3RlbmVyO2lmKGshPT1mJiZlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYnJlYWsgYTtuZihlLGgsbCk7Zj1rfX19aWYoUWIpdGhyb3cgYT1SYixRYj0hMSxSYj1udWxsLGE7fVxuZnVuY3Rpb24gRChhLGIpe3ZhciBjPWJbb2ZdO3ZvaWQgMD09PWMmJihjPWJbb2ZdPW5ldyBTZXQpO3ZhciBkPWErXCJfX2J1YmJsZVwiO2MuaGFzKGQpfHwocGYoYixhLDIsITEpLGMuYWRkKGQpKX1mdW5jdGlvbiBxZihhLGIsYyl7dmFyIGQ9MDtiJiYoZHw9NCk7cGYoYyxhLGQsYil9dmFyIHJmPVwiX3JlYWN0TGlzdGVuaW5nXCIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMik7ZnVuY3Rpb24gc2YoYSl7aWYoIWFbcmZdKXthW3JmXT0hMDtkYS5mb3JFYWNoKGZ1bmN0aW9uKGIpe1wic2VsZWN0aW9uY2hhbmdlXCIhPT1iJiYobWYuaGFzKGIpfHxxZihiLCExLGEpLHFmKGIsITAsYSkpfSk7dmFyIGI9OT09PWEubm9kZVR5cGU/YTphLm93bmVyRG9jdW1lbnQ7bnVsbD09PWJ8fGJbcmZdfHwoYltyZl09ITAscWYoXCJzZWxlY3Rpb25jaGFuZ2VcIiwhMSxiKSl9fVxuZnVuY3Rpb24gcGYoYSxiLGMsZCl7c3dpdGNoKGpkKGIpKXtjYXNlIDE6dmFyIGU9ZWQ7YnJlYWs7Y2FzZSA0OmU9Z2Q7YnJlYWs7ZGVmYXVsdDplPWZkfWM9ZS5iaW5kKG51bGwsYixjLGEpO2U9dm9pZCAwOyFMYnx8XCJ0b3VjaHN0YXJ0XCIhPT1iJiZcInRvdWNobW92ZVwiIT09YiYmXCJ3aGVlbFwiIT09Ynx8KGU9ITApO2Q/dm9pZCAwIT09ZT9hLmFkZEV2ZW50TGlzdGVuZXIoYixjLHtjYXB0dXJlOiEwLHBhc3NpdmU6ZX0pOmEuYWRkRXZlbnRMaXN0ZW5lcihiLGMsITApOnZvaWQgMCE9PWU/YS5hZGRFdmVudExpc3RlbmVyKGIsYyx7cGFzc2l2ZTplfSk6YS5hZGRFdmVudExpc3RlbmVyKGIsYywhMSl9XG5mdW5jdGlvbiBoZChhLGIsYyxkLGUpe3ZhciBmPWQ7aWYoMD09PShiJjEpJiYwPT09KGImMikmJm51bGwhPT1kKWE6Zm9yKDs7KXtpZihudWxsPT09ZClyZXR1cm47dmFyIGc9ZC50YWc7aWYoMz09PWd8fDQ9PT1nKXt2YXIgaD1kLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO2lmKGg9PT1lfHw4PT09aC5ub2RlVHlwZSYmaC5wYXJlbnROb2RlPT09ZSlicmVhaztpZig0PT09Zylmb3IoZz1kLnJldHVybjtudWxsIT09Zzspe3ZhciBrPWcudGFnO2lmKDM9PT1rfHw0PT09aylpZihrPWcuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8saz09PWV8fDg9PT1rLm5vZGVUeXBlJiZrLnBhcmVudE5vZGU9PT1lKXJldHVybjtnPWcucmV0dXJufWZvcig7bnVsbCE9PWg7KXtnPVdjKGgpO2lmKG51bGw9PT1nKXJldHVybjtrPWcudGFnO2lmKDU9PT1rfHw2PT09ayl7ZD1mPWc7Y29udGludWUgYX1oPWgucGFyZW50Tm9kZX19ZD1kLnJldHVybn1KYihmdW5jdGlvbigpe3ZhciBkPWYsZT14YihjKSxnPVtdO1xuYTp7dmFyIGg9ZGYuZ2V0KGEpO2lmKHZvaWQgMCE9PWgpe3ZhciBrPXRkLG49YTtzd2l0Y2goYSl7Y2FzZSBcImtleXByZXNzXCI6aWYoMD09PW9kKGMpKWJyZWFrIGE7Y2FzZSBcImtleWRvd25cIjpjYXNlIFwia2V5dXBcIjprPVJkO2JyZWFrO2Nhc2UgXCJmb2N1c2luXCI6bj1cImZvY3VzXCI7az1GZDticmVhaztjYXNlIFwiZm9jdXNvdXRcIjpuPVwiYmx1clwiO2s9RmQ7YnJlYWs7Y2FzZSBcImJlZm9yZWJsdXJcIjpjYXNlIFwiYWZ0ZXJibHVyXCI6az1GZDticmVhaztjYXNlIFwiY2xpY2tcIjppZigyPT09Yy5idXR0b24pYnJlYWsgYTtjYXNlIFwiYXV4Y2xpY2tcIjpjYXNlIFwiZGJsY2xpY2tcIjpjYXNlIFwibW91c2Vkb3duXCI6Y2FzZSBcIm1vdXNlbW92ZVwiOmNhc2UgXCJtb3VzZXVwXCI6Y2FzZSBcIm1vdXNlb3V0XCI6Y2FzZSBcIm1vdXNlb3ZlclwiOmNhc2UgXCJjb250ZXh0bWVudVwiOms9QmQ7YnJlYWs7Y2FzZSBcImRyYWdcIjpjYXNlIFwiZHJhZ2VuZFwiOmNhc2UgXCJkcmFnZW50ZXJcIjpjYXNlIFwiZHJhZ2V4aXRcIjpjYXNlIFwiZHJhZ2xlYXZlXCI6Y2FzZSBcImRyYWdvdmVyXCI6Y2FzZSBcImRyYWdzdGFydFwiOmNhc2UgXCJkcm9wXCI6az1cbkRkO2JyZWFrO2Nhc2UgXCJ0b3VjaGNhbmNlbFwiOmNhc2UgXCJ0b3VjaGVuZFwiOmNhc2UgXCJ0b3VjaG1vdmVcIjpjYXNlIFwidG91Y2hzdGFydFwiOms9VmQ7YnJlYWs7Y2FzZSAkZTpjYXNlIGFmOmNhc2UgYmY6az1IZDticmVhaztjYXNlIGNmOms9WGQ7YnJlYWs7Y2FzZSBcInNjcm9sbFwiOms9dmQ7YnJlYWs7Y2FzZSBcIndoZWVsXCI6az1aZDticmVhaztjYXNlIFwiY29weVwiOmNhc2UgXCJjdXRcIjpjYXNlIFwicGFzdGVcIjprPUpkO2JyZWFrO2Nhc2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiOmNhc2UgXCJsb3N0cG9pbnRlcmNhcHR1cmVcIjpjYXNlIFwicG9pbnRlcmNhbmNlbFwiOmNhc2UgXCJwb2ludGVyZG93blwiOmNhc2UgXCJwb2ludGVybW92ZVwiOmNhc2UgXCJwb2ludGVyb3V0XCI6Y2FzZSBcInBvaW50ZXJvdmVyXCI6Y2FzZSBcInBvaW50ZXJ1cFwiOms9VGR9dmFyIHQ9MCE9PShiJjQpLEo9IXQmJlwic2Nyb2xsXCI9PT1hLHg9dD9udWxsIT09aD9oK1wiQ2FwdHVyZVwiOm51bGw6aDt0PVtdO2Zvcih2YXIgdz1kLHU7bnVsbCE9PVxudzspe3U9dzt2YXIgRj11LnN0YXRlTm9kZTs1PT09dS50YWcmJm51bGwhPT1GJiYodT1GLG51bGwhPT14JiYoRj1LYih3LHgpLG51bGwhPUYmJnQucHVzaCh0Zih3LEYsdSkpKSk7aWYoSilicmVhazt3PXcucmV0dXJufTA8dC5sZW5ndGgmJihoPW5ldyBrKGgsbixudWxsLGMsZSksZy5wdXNoKHtldmVudDpoLGxpc3RlbmVyczp0fSkpfX1pZigwPT09KGImNykpe2E6e2g9XCJtb3VzZW92ZXJcIj09PWF8fFwicG9pbnRlcm92ZXJcIj09PWE7az1cIm1vdXNlb3V0XCI9PT1hfHxcInBvaW50ZXJvdXRcIj09PWE7aWYoaCYmYyE9PXdiJiYobj1jLnJlbGF0ZWRUYXJnZXR8fGMuZnJvbUVsZW1lbnQpJiYoV2Mobil8fG5bdWZdKSlicmVhayBhO2lmKGt8fGgpe2g9ZS53aW5kb3c9PT1lP2U6KGg9ZS5vd25lckRvY3VtZW50KT9oLmRlZmF1bHRWaWV3fHxoLnBhcmVudFdpbmRvdzp3aW5kb3c7aWYoayl7aWYobj1jLnJlbGF0ZWRUYXJnZXR8fGMudG9FbGVtZW50LGs9ZCxuPW4/V2Mobik6bnVsbCxudWxsIT09XG5uJiYoSj1WYihuKSxuIT09Snx8NSE9PW4udGFnJiY2IT09bi50YWcpKW49bnVsbH1lbHNlIGs9bnVsbCxuPWQ7aWYoayE9PW4pe3Q9QmQ7Rj1cIm9uTW91c2VMZWF2ZVwiO3g9XCJvbk1vdXNlRW50ZXJcIjt3PVwibW91c2VcIjtpZihcInBvaW50ZXJvdXRcIj09PWF8fFwicG9pbnRlcm92ZXJcIj09PWEpdD1UZCxGPVwib25Qb2ludGVyTGVhdmVcIix4PVwib25Qb2ludGVyRW50ZXJcIix3PVwicG9pbnRlclwiO0o9bnVsbD09az9oOnVlKGspO3U9bnVsbD09bj9oOnVlKG4pO2g9bmV3IHQoRix3K1wibGVhdmVcIixrLGMsZSk7aC50YXJnZXQ9SjtoLnJlbGF0ZWRUYXJnZXQ9dTtGPW51bGw7V2MoZSk9PT1kJiYodD1uZXcgdCh4LHcrXCJlbnRlclwiLG4sYyxlKSx0LnRhcmdldD11LHQucmVsYXRlZFRhcmdldD1KLEY9dCk7Sj1GO2lmKGsmJm4pYjp7dD1rO3g9bjt3PTA7Zm9yKHU9dDt1O3U9dmYodSkpdysrO3U9MDtmb3IoRj14O0Y7Rj12ZihGKSl1Kys7Zm9yKDswPHctdTspdD12Zih0KSx3LS07Zm9yKDswPHUtdzspeD1cbnZmKHgpLHUtLTtmb3IoO3ctLTspe2lmKHQ9PT14fHxudWxsIT09eCYmdD09PXguYWx0ZXJuYXRlKWJyZWFrIGI7dD12Zih0KTt4PXZmKHgpfXQ9bnVsbH1lbHNlIHQ9bnVsbDtudWxsIT09ayYmd2YoZyxoLGssdCwhMSk7bnVsbCE9PW4mJm51bGwhPT1KJiZ3ZihnLEosbix0LCEwKX19fWE6e2g9ZD91ZShkKTp3aW5kb3c7az1oLm5vZGVOYW1lJiZoLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoXCJzZWxlY3RcIj09PWt8fFwiaW5wdXRcIj09PWsmJlwiZmlsZVwiPT09aC50eXBlKXZhciBuYT12ZTtlbHNlIGlmKG1lKGgpKWlmKHdlKW5hPUZlO2Vsc2V7bmE9RGU7dmFyIHhhPUNlfWVsc2Uoaz1oLm5vZGVOYW1lKSYmXCJpbnB1dFwiPT09ay50b0xvd2VyQ2FzZSgpJiYoXCJjaGVja2JveFwiPT09aC50eXBlfHxcInJhZGlvXCI9PT1oLnR5cGUpJiYobmE9RWUpO2lmKG5hJiYobmE9bmEoYSxkKSkpe25lKGcsbmEsYyxlKTticmVhayBhfXhhJiZ4YShhLGgsZCk7XCJmb2N1c291dFwiPT09YSYmKHhhPWguX3dyYXBwZXJTdGF0ZSkmJlxueGEuY29udHJvbGxlZCYmXCJudW1iZXJcIj09PWgudHlwZSYmY2IoaCxcIm51bWJlclwiLGgudmFsdWUpfXhhPWQ/dWUoZCk6d2luZG93O3N3aXRjaChhKXtjYXNlIFwiZm9jdXNpblwiOmlmKG1lKHhhKXx8XCJ0cnVlXCI9PT14YS5jb250ZW50RWRpdGFibGUpUWU9eGEsUmU9ZCxTZT1udWxsO2JyZWFrO2Nhc2UgXCJmb2N1c291dFwiOlNlPVJlPVFlPW51bGw7YnJlYWs7Y2FzZSBcIm1vdXNlZG93blwiOlRlPSEwO2JyZWFrO2Nhc2UgXCJjb250ZXh0bWVudVwiOmNhc2UgXCJtb3VzZXVwXCI6Y2FzZSBcImRyYWdlbmRcIjpUZT0hMTtVZShnLGMsZSk7YnJlYWs7Y2FzZSBcInNlbGVjdGlvbmNoYW5nZVwiOmlmKFBlKWJyZWFrO2Nhc2UgXCJrZXlkb3duXCI6Y2FzZSBcImtleXVwXCI6VWUoZyxjLGUpfXZhciAkYTtpZihhZSliOntzd2l0Y2goYSl7Y2FzZSBcImNvbXBvc2l0aW9uc3RhcnRcIjp2YXIgYmE9XCJvbkNvbXBvc2l0aW9uU3RhcnRcIjticmVhayBiO2Nhc2UgXCJjb21wb3NpdGlvbmVuZFwiOmJhPVwib25Db21wb3NpdGlvbkVuZFwiO1xuYnJlYWsgYjtjYXNlIFwiY29tcG9zaXRpb251cGRhdGVcIjpiYT1cIm9uQ29tcG9zaXRpb25VcGRhdGVcIjticmVhayBifWJhPXZvaWQgMH1lbHNlIGllP2dlKGEsYykmJihiYT1cIm9uQ29tcG9zaXRpb25FbmRcIik6XCJrZXlkb3duXCI9PT1hJiYyMjk9PT1jLmtleUNvZGUmJihiYT1cIm9uQ29tcG9zaXRpb25TdGFydFwiKTtiYSYmKGRlJiZcImtvXCIhPT1jLmxvY2FsZSYmKGllfHxcIm9uQ29tcG9zaXRpb25TdGFydFwiIT09YmE/XCJvbkNvbXBvc2l0aW9uRW5kXCI9PT1iYSYmaWUmJigkYT1uZCgpKTooa2Q9ZSxsZD1cInZhbHVlXCJpbiBrZD9rZC52YWx1ZTprZC50ZXh0Q29udGVudCxpZT0hMCkpLHhhPW9lKGQsYmEpLDA8eGEubGVuZ3RoJiYoYmE9bmV3IExkKGJhLGEsbnVsbCxjLGUpLGcucHVzaCh7ZXZlbnQ6YmEsbGlzdGVuZXJzOnhhfSksJGE/YmEuZGF0YT0kYTooJGE9aGUoYyksbnVsbCE9PSRhJiYoYmEuZGF0YT0kYSkpKSk7aWYoJGE9Y2U/amUoYSxjKTprZShhLGMpKWQ9b2UoZCxcIm9uQmVmb3JlSW5wdXRcIiksXG4wPGQubGVuZ3RoJiYoZT1uZXcgTGQoXCJvbkJlZm9yZUlucHV0XCIsXCJiZWZvcmVpbnB1dFwiLG51bGwsYyxlKSxnLnB1c2goe2V2ZW50OmUsbGlzdGVuZXJzOmR9KSxlLmRhdGE9JGEpfXNlKGcsYil9KX1mdW5jdGlvbiB0ZihhLGIsYyl7cmV0dXJue2luc3RhbmNlOmEsbGlzdGVuZXI6YixjdXJyZW50VGFyZ2V0OmN9fWZ1bmN0aW9uIG9lKGEsYil7Zm9yKHZhciBjPWIrXCJDYXB0dXJlXCIsZD1bXTtudWxsIT09YTspe3ZhciBlPWEsZj1lLnN0YXRlTm9kZTs1PT09ZS50YWcmJm51bGwhPT1mJiYoZT1mLGY9S2IoYSxjKSxudWxsIT1mJiZkLnVuc2hpZnQodGYoYSxmLGUpKSxmPUtiKGEsYiksbnVsbCE9ZiYmZC5wdXNoKHRmKGEsZixlKSkpO2E9YS5yZXR1cm59cmV0dXJuIGR9ZnVuY3Rpb24gdmYoYSl7aWYobnVsbD09PWEpcmV0dXJuIG51bGw7ZG8gYT1hLnJldHVybjt3aGlsZShhJiY1IT09YS50YWcpO3JldHVybiBhP2E6bnVsbH1cbmZ1bmN0aW9uIHdmKGEsYixjLGQsZSl7Zm9yKHZhciBmPWIuX3JlYWN0TmFtZSxnPVtdO251bGwhPT1jJiZjIT09ZDspe3ZhciBoPWMsaz1oLmFsdGVybmF0ZSxsPWguc3RhdGVOb2RlO2lmKG51bGwhPT1rJiZrPT09ZClicmVhazs1PT09aC50YWcmJm51bGwhPT1sJiYoaD1sLGU/KGs9S2IoYyxmKSxudWxsIT1rJiZnLnVuc2hpZnQodGYoYyxrLGgpKSk6ZXx8KGs9S2IoYyxmKSxudWxsIT1rJiZnLnB1c2godGYoYyxrLGgpKSkpO2M9Yy5yZXR1cm59MCE9PWcubGVuZ3RoJiZhLnB1c2goe2V2ZW50OmIsbGlzdGVuZXJzOmd9KX12YXIgeGY9L1xcclxcbj8vZyx5Zj0vXFx1MDAwMHxcXHVGRkZEL2c7ZnVuY3Rpb24gemYoYSl7cmV0dXJuKFwic3RyaW5nXCI9PT10eXBlb2YgYT9hOlwiXCIrYSkucmVwbGFjZSh4ZixcIlxcblwiKS5yZXBsYWNlKHlmLFwiXCIpfWZ1bmN0aW9uIEFmKGEsYixjKXtiPXpmKGIpO2lmKHpmKGEpIT09YiYmYyl0aHJvdyBFcnJvcihwKDQyNSkpO31mdW5jdGlvbiBCZigpe31cbnZhciBDZj1udWxsLERmPW51bGw7ZnVuY3Rpb24gRWYoYSxiKXtyZXR1cm5cInRleHRhcmVhXCI9PT1hfHxcIm5vc2NyaXB0XCI9PT1hfHxcInN0cmluZ1wiPT09dHlwZW9mIGIuY2hpbGRyZW58fFwibnVtYmVyXCI9PT10eXBlb2YgYi5jaGlsZHJlbnx8XCJvYmplY3RcIj09PXR5cGVvZiBiLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZudWxsIT09Yi5kYW5nZXJvdXNseVNldElubmVySFRNTCYmbnVsbCE9Yi5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWx9XG52YXIgRmY9XCJmdW5jdGlvblwiPT09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDp2b2lkIDAsR2Y9XCJmdW5jdGlvblwiPT09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6dm9pZCAwLEhmPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBQcm9taXNlP1Byb21pc2U6dm9pZCAwLEpmPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBxdWV1ZU1pY3JvdGFzaz9xdWV1ZU1pY3JvdGFzazpcInVuZGVmaW5lZFwiIT09dHlwZW9mIEhmP2Z1bmN0aW9uKGEpe3JldHVybiBIZi5yZXNvbHZlKG51bGwpLnRoZW4oYSkuY2F0Y2goSWYpfTpGZjtmdW5jdGlvbiBJZihhKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgYTt9KX1cbmZ1bmN0aW9uIEtmKGEsYil7dmFyIGM9YixkPTA7ZG97dmFyIGU9Yy5uZXh0U2libGluZzthLnJlbW92ZUNoaWxkKGMpO2lmKGUmJjg9PT1lLm5vZGVUeXBlKWlmKGM9ZS5kYXRhLFwiLyRcIj09PWMpe2lmKDA9PT1kKXthLnJlbW92ZUNoaWxkKGUpO2JkKGIpO3JldHVybn1kLS19ZWxzZVwiJFwiIT09YyYmXCIkP1wiIT09YyYmXCIkIVwiIT09Y3x8ZCsrO2M9ZX13aGlsZShjKTtiZChiKX1mdW5jdGlvbiBMZihhKXtmb3IoO251bGwhPWE7YT1hLm5leHRTaWJsaW5nKXt2YXIgYj1hLm5vZGVUeXBlO2lmKDE9PT1ifHwzPT09YilicmVhaztpZig4PT09Yil7Yj1hLmRhdGE7aWYoXCIkXCI9PT1ifHxcIiQhXCI9PT1ifHxcIiQ/XCI9PT1iKWJyZWFrO2lmKFwiLyRcIj09PWIpcmV0dXJuIG51bGx9fXJldHVybiBhfVxuZnVuY3Rpb24gTWYoYSl7YT1hLnByZXZpb3VzU2libGluZztmb3IodmFyIGI9MDthOyl7aWYoOD09PWEubm9kZVR5cGUpe3ZhciBjPWEuZGF0YTtpZihcIiRcIj09PWN8fFwiJCFcIj09PWN8fFwiJD9cIj09PWMpe2lmKDA9PT1iKXJldHVybiBhO2ItLX1lbHNlXCIvJFwiPT09YyYmYisrfWE9YS5wcmV2aW91c1NpYmxpbmd9cmV0dXJuIG51bGx9dmFyIE5mPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLE9mPVwiX19yZWFjdEZpYmVyJFwiK05mLFBmPVwiX19yZWFjdFByb3BzJFwiK05mLHVmPVwiX19yZWFjdENvbnRhaW5lciRcIitOZixvZj1cIl9fcmVhY3RFdmVudHMkXCIrTmYsUWY9XCJfX3JlYWN0TGlzdGVuZXJzJFwiK05mLFJmPVwiX19yZWFjdEhhbmRsZXMkXCIrTmY7XG5mdW5jdGlvbiBXYyhhKXt2YXIgYj1hW09mXTtpZihiKXJldHVybiBiO2Zvcih2YXIgYz1hLnBhcmVudE5vZGU7Yzspe2lmKGI9Y1t1Zl18fGNbT2ZdKXtjPWIuYWx0ZXJuYXRlO2lmKG51bGwhPT1iLmNoaWxkfHxudWxsIT09YyYmbnVsbCE9PWMuY2hpbGQpZm9yKGE9TWYoYSk7bnVsbCE9PWE7KXtpZihjPWFbT2ZdKXJldHVybiBjO2E9TWYoYSl9cmV0dXJuIGJ9YT1jO2M9YS5wYXJlbnROb2RlfXJldHVybiBudWxsfWZ1bmN0aW9uIENiKGEpe2E9YVtPZl18fGFbdWZdO3JldHVybiFhfHw1IT09YS50YWcmJjYhPT1hLnRhZyYmMTMhPT1hLnRhZyYmMyE9PWEudGFnP251bGw6YX1mdW5jdGlvbiB1ZShhKXtpZig1PT09YS50YWd8fDY9PT1hLnRhZylyZXR1cm4gYS5zdGF0ZU5vZGU7dGhyb3cgRXJyb3IocCgzMykpO31mdW5jdGlvbiBEYihhKXtyZXR1cm4gYVtQZl18fG51bGx9dmFyIFNmPVtdLFRmPS0xO2Z1bmN0aW9uIFVmKGEpe3JldHVybntjdXJyZW50OmF9fVxuZnVuY3Rpb24gRShhKXswPlRmfHwoYS5jdXJyZW50PVNmW1RmXSxTZltUZl09bnVsbCxUZi0tKX1mdW5jdGlvbiBHKGEsYil7VGYrKztTZltUZl09YS5jdXJyZW50O2EuY3VycmVudD1ifXZhciBWZj17fSxIPVVmKFZmKSxXZj1VZighMSksWGY9VmY7ZnVuY3Rpb24gWWYoYSxiKXt2YXIgYz1hLnR5cGUuY29udGV4dFR5cGVzO2lmKCFjKXJldHVybiBWZjt2YXIgZD1hLnN0YXRlTm9kZTtpZihkJiZkLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9PT1iKXJldHVybiBkLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0O3ZhciBlPXt9LGY7Zm9yKGYgaW4gYyllW2ZdPWJbZl07ZCYmKGE9YS5zdGF0ZU5vZGUsYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PWIsYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dD1lKTtyZXR1cm4gZX1cbmZ1bmN0aW9uIFpmKGEpe2E9YS5jaGlsZENvbnRleHRUeXBlcztyZXR1cm4gbnVsbCE9PWEmJnZvaWQgMCE9PWF9ZnVuY3Rpb24gJGYoKXtFKFdmKTtFKEgpfWZ1bmN0aW9uIGFnKGEsYixjKXtpZihILmN1cnJlbnQhPT1WZil0aHJvdyBFcnJvcihwKDE2OCkpO0coSCxiKTtHKFdmLGMpfWZ1bmN0aW9uIGJnKGEsYixjKXt2YXIgZD1hLnN0YXRlTm9kZTtiPWIuY2hpbGRDb250ZXh0VHlwZXM7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIGQuZ2V0Q2hpbGRDb250ZXh0KXJldHVybiBjO2Q9ZC5nZXRDaGlsZENvbnRleHQoKTtmb3IodmFyIGUgaW4gZClpZighKGUgaW4gYikpdGhyb3cgRXJyb3IocCgxMDgsUmEoYSl8fFwiVW5rbm93blwiLGUpKTtyZXR1cm4gQSh7fSxjLGQpfVxuZnVuY3Rpb24gY2coYSl7YT0oYT1hLnN0YXRlTm9kZSkmJmEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHR8fFZmO1hmPUguY3VycmVudDtHKEgsYSk7RyhXZixXZi5jdXJyZW50KTtyZXR1cm4hMH1mdW5jdGlvbiBkZyhhLGIsYyl7dmFyIGQ9YS5zdGF0ZU5vZGU7aWYoIWQpdGhyb3cgRXJyb3IocCgxNjkpKTtjPyhhPWJnKGEsYixYZiksZC5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dD1hLEUoV2YpLEUoSCksRyhILGEpKTpFKFdmKTtHKFdmLGMpfXZhciBlZz1udWxsLGZnPSExLGdnPSExO2Z1bmN0aW9uIGhnKGEpe251bGw9PT1lZz9lZz1bYV06ZWcucHVzaChhKX1mdW5jdGlvbiBpZyhhKXtmZz0hMDtoZyhhKX1cbmZ1bmN0aW9uIGpnKCl7aWYoIWdnJiZudWxsIT09ZWcpe2dnPSEwO3ZhciBhPTAsYj1DO3RyeXt2YXIgYz1lZztmb3IoQz0xO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZD1jW2FdO2RvIGQ9ZCghMCk7d2hpbGUobnVsbCE9PWQpfWVnPW51bGw7Zmc9ITF9Y2F0Y2goZSl7dGhyb3cgbnVsbCE9PWVnJiYoZWc9ZWcuc2xpY2UoYSsxKSksYWMoZmMsamcpLGU7fWZpbmFsbHl7Qz1iLGdnPSExfX1yZXR1cm4gbnVsbH12YXIga2c9W10sbGc9MCxtZz1udWxsLG5nPTAsb2c9W10scGc9MCxxZz1udWxsLHJnPTEsc2c9XCJcIjtmdW5jdGlvbiB0ZyhhLGIpe2tnW2xnKytdPW5nO2tnW2xnKytdPW1nO21nPWE7bmc9Yn1cbmZ1bmN0aW9uIHVnKGEsYixjKXtvZ1twZysrXT1yZztvZ1twZysrXT1zZztvZ1twZysrXT1xZztxZz1hO3ZhciBkPXJnO2E9c2c7dmFyIGU9MzItb2MoZCktMTtkJj1+KDE8PGUpO2MrPTE7dmFyIGY9MzItb2MoYikrZTtpZigzMDxmKXt2YXIgZz1lLWUlNTtmPShkJigxPDxnKS0xKS50b1N0cmluZygzMik7ZD4+PWc7ZS09ZztyZz0xPDwzMi1vYyhiKStlfGM8PGV8ZDtzZz1mK2F9ZWxzZSByZz0xPDxmfGM8PGV8ZCxzZz1hfWZ1bmN0aW9uIHZnKGEpe251bGwhPT1hLnJldHVybiYmKHRnKGEsMSksdWcoYSwxLDApKX1mdW5jdGlvbiB3ZyhhKXtmb3IoO2E9PT1tZzspbWc9a2dbLS1sZ10sa2dbbGddPW51bGwsbmc9a2dbLS1sZ10sa2dbbGddPW51bGw7Zm9yKDthPT09cWc7KXFnPW9nWy0tcGddLG9nW3BnXT1udWxsLHNnPW9nWy0tcGddLG9nW3BnXT1udWxsLHJnPW9nWy0tcGddLG9nW3BnXT1udWxsfXZhciB4Zz1udWxsLHlnPW51bGwsST0hMSx6Zz1udWxsO1xuZnVuY3Rpb24gQWcoYSxiKXt2YXIgYz1CZyg1LG51bGwsbnVsbCwwKTtjLmVsZW1lbnRUeXBlPVwiREVMRVRFRFwiO2Muc3RhdGVOb2RlPWI7Yy5yZXR1cm49YTtiPWEuZGVsZXRpb25zO251bGw9PT1iPyhhLmRlbGV0aW9ucz1bY10sYS5mbGFnc3w9MTYpOmIucHVzaChjKX1cbmZ1bmN0aW9uIENnKGEsYil7c3dpdGNoKGEudGFnKXtjYXNlIDU6dmFyIGM9YS50eXBlO2I9MSE9PWIubm9kZVR5cGV8fGMudG9Mb3dlckNhc2UoKSE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKT9udWxsOmI7cmV0dXJuIG51bGwhPT1iPyhhLnN0YXRlTm9kZT1iLHhnPWEseWc9TGYoYi5maXJzdENoaWxkKSwhMCk6ITE7Y2FzZSA2OnJldHVybiBiPVwiXCI9PT1hLnBlbmRpbmdQcm9wc3x8MyE9PWIubm9kZVR5cGU/bnVsbDpiLG51bGwhPT1iPyhhLnN0YXRlTm9kZT1iLHhnPWEseWc9bnVsbCwhMCk6ITE7Y2FzZSAxMzpyZXR1cm4gYj04IT09Yi5ub2RlVHlwZT9udWxsOmIsbnVsbCE9PWI/KGM9bnVsbCE9PXFnP3tpZDpyZyxvdmVyZmxvdzpzZ306bnVsbCxhLm1lbW9pemVkU3RhdGU9e2RlaHlkcmF0ZWQ6Yix0cmVlQ29udGV4dDpjLHJldHJ5TGFuZToxMDczNzQxODI0fSxjPUJnKDE4LG51bGwsbnVsbCwwKSxjLnN0YXRlTm9kZT1iLGMucmV0dXJuPWEsYS5jaGlsZD1jLHhnPWEseWc9XG5udWxsLCEwKTohMTtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBEZyhhKXtyZXR1cm4gMCE9PShhLm1vZGUmMSkmJjA9PT0oYS5mbGFncyYxMjgpfWZ1bmN0aW9uIEVnKGEpe2lmKEkpe3ZhciBiPXlnO2lmKGIpe3ZhciBjPWI7aWYoIUNnKGEsYikpe2lmKERnKGEpKXRocm93IEVycm9yKHAoNDE4KSk7Yj1MZihjLm5leHRTaWJsaW5nKTt2YXIgZD14ZztiJiZDZyhhLGIpP0FnKGQsYyk6KGEuZmxhZ3M9YS5mbGFncyYtNDA5N3wyLEk9ITEseGc9YSl9fWVsc2V7aWYoRGcoYSkpdGhyb3cgRXJyb3IocCg0MTgpKTthLmZsYWdzPWEuZmxhZ3MmLTQwOTd8MjtJPSExO3hnPWF9fX1mdW5jdGlvbiBGZyhhKXtmb3IoYT1hLnJldHVybjtudWxsIT09YSYmNSE9PWEudGFnJiYzIT09YS50YWcmJjEzIT09YS50YWc7KWE9YS5yZXR1cm47eGc9YX1cbmZ1bmN0aW9uIEdnKGEpe2lmKGEhPT14ZylyZXR1cm4hMTtpZighSSlyZXR1cm4gRmcoYSksST0hMCwhMTt2YXIgYjsoYj0zIT09YS50YWcpJiYhKGI9NSE9PWEudGFnKSYmKGI9YS50eXBlLGI9XCJoZWFkXCIhPT1iJiZcImJvZHlcIiE9PWImJiFFZihhLnR5cGUsYS5tZW1vaXplZFByb3BzKSk7aWYoYiYmKGI9eWcpKXtpZihEZyhhKSl0aHJvdyBIZygpLEVycm9yKHAoNDE4KSk7Zm9yKDtiOylBZyhhLGIpLGI9TGYoYi5uZXh0U2libGluZyl9RmcoYSk7aWYoMTM9PT1hLnRhZyl7YT1hLm1lbW9pemVkU3RhdGU7YT1udWxsIT09YT9hLmRlaHlkcmF0ZWQ6bnVsbDtpZighYSl0aHJvdyBFcnJvcihwKDMxNykpO2E6e2E9YS5uZXh0U2libGluZztmb3IoYj0wO2E7KXtpZig4PT09YS5ub2RlVHlwZSl7dmFyIGM9YS5kYXRhO2lmKFwiLyRcIj09PWMpe2lmKDA9PT1iKXt5Zz1MZihhLm5leHRTaWJsaW5nKTticmVhayBhfWItLX1lbHNlXCIkXCIhPT1jJiZcIiQhXCIhPT1jJiZcIiQ/XCIhPT1jfHxiKyt9YT1hLm5leHRTaWJsaW5nfXlnPVxubnVsbH19ZWxzZSB5Zz14Zz9MZihhLnN0YXRlTm9kZS5uZXh0U2libGluZyk6bnVsbDtyZXR1cm4hMH1mdW5jdGlvbiBIZygpe2Zvcih2YXIgYT15ZzthOylhPUxmKGEubmV4dFNpYmxpbmcpfWZ1bmN0aW9uIElnKCl7eWc9eGc9bnVsbDtJPSExfWZ1bmN0aW9uIEpnKGEpe251bGw9PT16Zz96Zz1bYV06emcucHVzaChhKX12YXIgS2c9dWEuUmVhY3RDdXJyZW50QmF0Y2hDb25maWc7XG5mdW5jdGlvbiBMZyhhLGIsYyl7YT1jLnJlZjtpZihudWxsIT09YSYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGEmJlwib2JqZWN0XCIhPT10eXBlb2YgYSl7aWYoYy5fb3duZXIpe2M9Yy5fb3duZXI7aWYoYyl7aWYoMSE9PWMudGFnKXRocm93IEVycm9yKHAoMzA5KSk7dmFyIGQ9Yy5zdGF0ZU5vZGV9aWYoIWQpdGhyb3cgRXJyb3IocCgxNDcsYSkpO3ZhciBlPWQsZj1cIlwiK2E7aWYobnVsbCE9PWImJm51bGwhPT1iLnJlZiYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGIucmVmJiZiLnJlZi5fc3RyaW5nUmVmPT09ZilyZXR1cm4gYi5yZWY7Yj1mdW5jdGlvbihhKXt2YXIgYj1lLnJlZnM7bnVsbD09PWE/ZGVsZXRlIGJbZl06YltmXT1hfTtiLl9zdHJpbmdSZWY9ZjtyZXR1cm4gYn1pZihcInN0cmluZ1wiIT09dHlwZW9mIGEpdGhyb3cgRXJyb3IocCgyODQpKTtpZighYy5fb3duZXIpdGhyb3cgRXJyb3IocCgyOTAsYSkpO31yZXR1cm4gYX1cbmZ1bmN0aW9uIE1nKGEsYil7YT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYik7dGhyb3cgRXJyb3IocCgzMSxcIltvYmplY3QgT2JqZWN0XVwiPT09YT9cIm9iamVjdCB3aXRoIGtleXMge1wiK09iamVjdC5rZXlzKGIpLmpvaW4oXCIsIFwiKStcIn1cIjphKSk7fWZ1bmN0aW9uIE5nKGEpe3ZhciBiPWEuX2luaXQ7cmV0dXJuIGIoYS5fcGF5bG9hZCl9XG5mdW5jdGlvbiBPZyhhKXtmdW5jdGlvbiBiKGIsYyl7aWYoYSl7dmFyIGQ9Yi5kZWxldGlvbnM7bnVsbD09PWQ/KGIuZGVsZXRpb25zPVtjXSxiLmZsYWdzfD0xNik6ZC5wdXNoKGMpfX1mdW5jdGlvbiBjKGMsZCl7aWYoIWEpcmV0dXJuIG51bGw7Zm9yKDtudWxsIT09ZDspYihjLGQpLGQ9ZC5zaWJsaW5nO3JldHVybiBudWxsfWZ1bmN0aW9uIGQoYSxiKXtmb3IoYT1uZXcgTWFwO251bGwhPT1iOyludWxsIT09Yi5rZXk/YS5zZXQoYi5rZXksYik6YS5zZXQoYi5pbmRleCxiKSxiPWIuc2libGluZztyZXR1cm4gYX1mdW5jdGlvbiBlKGEsYil7YT1QZyhhLGIpO2EuaW5kZXg9MDthLnNpYmxpbmc9bnVsbDtyZXR1cm4gYX1mdW5jdGlvbiBmKGIsYyxkKXtiLmluZGV4PWQ7aWYoIWEpcmV0dXJuIGIuZmxhZ3N8PTEwNDg1NzYsYztkPWIuYWx0ZXJuYXRlO2lmKG51bGwhPT1kKXJldHVybiBkPWQuaW5kZXgsZDxjPyhiLmZsYWdzfD0yLGMpOmQ7Yi5mbGFnc3w9MjtyZXR1cm4gY31mdW5jdGlvbiBnKGIpe2EmJlxubnVsbD09PWIuYWx0ZXJuYXRlJiYoYi5mbGFnc3w9Mik7cmV0dXJuIGJ9ZnVuY3Rpb24gaChhLGIsYyxkKXtpZihudWxsPT09Ynx8NiE9PWIudGFnKXJldHVybiBiPVFnKGMsYS5tb2RlLGQpLGIucmV0dXJuPWEsYjtiPWUoYixjKTtiLnJldHVybj1hO3JldHVybiBifWZ1bmN0aW9uIGsoYSxiLGMsZCl7dmFyIGY9Yy50eXBlO2lmKGY9PT15YSlyZXR1cm4gbShhLGIsYy5wcm9wcy5jaGlsZHJlbixkLGMua2V5KTtpZihudWxsIT09YiYmKGIuZWxlbWVudFR5cGU9PT1mfHxcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mJiZmLiQkdHlwZW9mPT09SGEmJk5nKGYpPT09Yi50eXBlKSlyZXR1cm4gZD1lKGIsYy5wcm9wcyksZC5yZWY9TGcoYSxiLGMpLGQucmV0dXJuPWEsZDtkPVJnKGMudHlwZSxjLmtleSxjLnByb3BzLG51bGwsYS5tb2RlLGQpO2QucmVmPUxnKGEsYixjKTtkLnJldHVybj1hO3JldHVybiBkfWZ1bmN0aW9uIGwoYSxiLGMsZCl7aWYobnVsbD09PWJ8fDQhPT1iLnRhZ3x8XG5iLnN0YXRlTm9kZS5jb250YWluZXJJbmZvIT09Yy5jb250YWluZXJJbmZvfHxiLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbiE9PWMuaW1wbGVtZW50YXRpb24pcmV0dXJuIGI9U2coYyxhLm1vZGUsZCksYi5yZXR1cm49YSxiO2I9ZShiLGMuY2hpbGRyZW58fFtdKTtiLnJldHVybj1hO3JldHVybiBifWZ1bmN0aW9uIG0oYSxiLGMsZCxmKXtpZihudWxsPT09Ynx8NyE9PWIudGFnKXJldHVybiBiPVRnKGMsYS5tb2RlLGQsZiksYi5yZXR1cm49YSxiO2I9ZShiLGMpO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24gcShhLGIsYyl7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBiJiZcIlwiIT09Ynx8XCJudW1iZXJcIj09PXR5cGVvZiBiKXJldHVybiBiPVFnKFwiXCIrYixhLm1vZGUsYyksYi5yZXR1cm49YSxiO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYiYmbnVsbCE9PWIpe3N3aXRjaChiLiQkdHlwZW9mKXtjYXNlIHZhOnJldHVybiBjPVJnKGIudHlwZSxiLmtleSxiLnByb3BzLG51bGwsYS5tb2RlLGMpLFxuYy5yZWY9TGcoYSxudWxsLGIpLGMucmV0dXJuPWEsYztjYXNlIHdhOnJldHVybiBiPVNnKGIsYS5tb2RlLGMpLGIucmV0dXJuPWEsYjtjYXNlIEhhOnZhciBkPWIuX2luaXQ7cmV0dXJuIHEoYSxkKGIuX3BheWxvYWQpLGMpfWlmKGViKGIpfHxLYShiKSlyZXR1cm4gYj1UZyhiLGEubW9kZSxjLG51bGwpLGIucmV0dXJuPWEsYjtNZyhhLGIpfXJldHVybiBudWxsfWZ1bmN0aW9uIHIoYSxiLGMsZCl7dmFyIGU9bnVsbCE9PWI/Yi5rZXk6bnVsbDtpZihcInN0cmluZ1wiPT09dHlwZW9mIGMmJlwiXCIhPT1jfHxcIm51bWJlclwiPT09dHlwZW9mIGMpcmV0dXJuIG51bGwhPT1lP251bGw6aChhLGIsXCJcIitjLGQpO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYyYmbnVsbCE9PWMpe3N3aXRjaChjLiQkdHlwZW9mKXtjYXNlIHZhOnJldHVybiBjLmtleT09PWU/ayhhLGIsYyxkKTpudWxsO2Nhc2Ugd2E6cmV0dXJuIGMua2V5PT09ZT9sKGEsYixjLGQpOm51bGw7Y2FzZSBIYTpyZXR1cm4gZT1jLl9pbml0LHIoYSxcbmIsZShjLl9wYXlsb2FkKSxkKX1pZihlYihjKXx8S2EoYykpcmV0dXJuIG51bGwhPT1lP251bGw6bShhLGIsYyxkLG51bGwpO01nKGEsYyl9cmV0dXJuIG51bGx9ZnVuY3Rpb24geShhLGIsYyxkLGUpe2lmKFwic3RyaW5nXCI9PT10eXBlb2YgZCYmXCJcIiE9PWR8fFwibnVtYmVyXCI9PT10eXBlb2YgZClyZXR1cm4gYT1hLmdldChjKXx8bnVsbCxoKGIsYSxcIlwiK2QsZSk7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBkJiZudWxsIT09ZCl7c3dpdGNoKGQuJCR0eXBlb2Ype2Nhc2UgdmE6cmV0dXJuIGE9YS5nZXQobnVsbD09PWQua2V5P2M6ZC5rZXkpfHxudWxsLGsoYixhLGQsZSk7Y2FzZSB3YTpyZXR1cm4gYT1hLmdldChudWxsPT09ZC5rZXk/YzpkLmtleSl8fG51bGwsbChiLGEsZCxlKTtjYXNlIEhhOnZhciBmPWQuX2luaXQ7cmV0dXJuIHkoYSxiLGMsZihkLl9wYXlsb2FkKSxlKX1pZihlYihkKXx8S2EoZCkpcmV0dXJuIGE9YS5nZXQoYyl8fG51bGwsbShiLGEsZCxlLG51bGwpO01nKGIsZCl9cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBuKGUsZyxoLGspe2Zvcih2YXIgbD1udWxsLG09bnVsbCx1PWcsdz1nPTAseD1udWxsO251bGwhPT11JiZ3PGgubGVuZ3RoO3crKyl7dS5pbmRleD53Pyh4PXUsdT1udWxsKTp4PXUuc2libGluZzt2YXIgbj1yKGUsdSxoW3ddLGspO2lmKG51bGw9PT1uKXtudWxsPT09dSYmKHU9eCk7YnJlYWt9YSYmdSYmbnVsbD09PW4uYWx0ZXJuYXRlJiZiKGUsdSk7Zz1mKG4sZyx3KTtudWxsPT09bT9sPW46bS5zaWJsaW5nPW47bT1uO3U9eH1pZih3PT09aC5sZW5ndGgpcmV0dXJuIGMoZSx1KSxJJiZ0ZyhlLHcpLGw7aWYobnVsbD09PXUpe2Zvcig7dzxoLmxlbmd0aDt3KyspdT1xKGUsaFt3XSxrKSxudWxsIT09dSYmKGc9Zih1LGcsdyksbnVsbD09PW0/bD11Om0uc2libGluZz11LG09dSk7SSYmdGcoZSx3KTtyZXR1cm4gbH1mb3IodT1kKGUsdSk7dzxoLmxlbmd0aDt3KyspeD15KHUsZSx3LGhbd10sayksbnVsbCE9PXgmJihhJiZudWxsIT09eC5hbHRlcm5hdGUmJnUuZGVsZXRlKG51bGw9PT1cbngua2V5P3c6eC5rZXkpLGc9Zih4LGcsdyksbnVsbD09PW0/bD14Om0uc2libGluZz14LG09eCk7YSYmdS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3JldHVybiBiKGUsYSl9KTtJJiZ0ZyhlLHcpO3JldHVybiBsfWZ1bmN0aW9uIHQoZSxnLGgsayl7dmFyIGw9S2EoaCk7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIGwpdGhyb3cgRXJyb3IocCgxNTApKTtoPWwuY2FsbChoKTtpZihudWxsPT1oKXRocm93IEVycm9yKHAoMTUxKSk7Zm9yKHZhciB1PWw9bnVsbCxtPWcsdz1nPTAseD1udWxsLG49aC5uZXh0KCk7bnVsbCE9PW0mJiFuLmRvbmU7dysrLG49aC5uZXh0KCkpe20uaW5kZXg+dz8oeD1tLG09bnVsbCk6eD1tLnNpYmxpbmc7dmFyIHQ9cihlLG0sbi52YWx1ZSxrKTtpZihudWxsPT09dCl7bnVsbD09PW0mJihtPXgpO2JyZWFrfWEmJm0mJm51bGw9PT10LmFsdGVybmF0ZSYmYihlLG0pO2c9Zih0LGcsdyk7bnVsbD09PXU/bD10OnUuc2libGluZz10O3U9dDttPXh9aWYobi5kb25lKXJldHVybiBjKGUsXG5tKSxJJiZ0ZyhlLHcpLGw7aWYobnVsbD09PW0pe2Zvcig7IW4uZG9uZTt3Kyssbj1oLm5leHQoKSluPXEoZSxuLnZhbHVlLGspLG51bGwhPT1uJiYoZz1mKG4sZyx3KSxudWxsPT09dT9sPW46dS5zaWJsaW5nPW4sdT1uKTtJJiZ0ZyhlLHcpO3JldHVybiBsfWZvcihtPWQoZSxtKTshbi5kb25lO3crKyxuPWgubmV4dCgpKW49eShtLGUsdyxuLnZhbHVlLGspLG51bGwhPT1uJiYoYSYmbnVsbCE9PW4uYWx0ZXJuYXRlJiZtLmRlbGV0ZShudWxsPT09bi5rZXk/dzpuLmtleSksZz1mKG4sZyx3KSxudWxsPT09dT9sPW46dS5zaWJsaW5nPW4sdT1uKTthJiZtLmZvckVhY2goZnVuY3Rpb24oYSl7cmV0dXJuIGIoZSxhKX0pO0kmJnRnKGUsdyk7cmV0dXJuIGx9ZnVuY3Rpb24gSihhLGQsZixoKXtcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mJiZmLnR5cGU9PT15YSYmbnVsbD09PWYua2V5JiYoZj1mLnByb3BzLmNoaWxkcmVuKTtpZihcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mKXtzd2l0Y2goZi4kJHR5cGVvZil7Y2FzZSB2YTphOntmb3IodmFyIGs9XG5mLmtleSxsPWQ7bnVsbCE9PWw7KXtpZihsLmtleT09PWspe2s9Zi50eXBlO2lmKGs9PT15YSl7aWYoNz09PWwudGFnKXtjKGEsbC5zaWJsaW5nKTtkPWUobCxmLnByb3BzLmNoaWxkcmVuKTtkLnJldHVybj1hO2E9ZDticmVhayBhfX1lbHNlIGlmKGwuZWxlbWVudFR5cGU9PT1rfHxcIm9iamVjdFwiPT09dHlwZW9mIGsmJm51bGwhPT1rJiZrLiQkdHlwZW9mPT09SGEmJk5nKGspPT09bC50eXBlKXtjKGEsbC5zaWJsaW5nKTtkPWUobCxmLnByb3BzKTtkLnJlZj1MZyhhLGwsZik7ZC5yZXR1cm49YTthPWQ7YnJlYWsgYX1jKGEsbCk7YnJlYWt9ZWxzZSBiKGEsbCk7bD1sLnNpYmxpbmd9Zi50eXBlPT09eWE/KGQ9VGcoZi5wcm9wcy5jaGlsZHJlbixhLm1vZGUsaCxmLmtleSksZC5yZXR1cm49YSxhPWQpOihoPVJnKGYudHlwZSxmLmtleSxmLnByb3BzLG51bGwsYS5tb2RlLGgpLGgucmVmPUxnKGEsZCxmKSxoLnJldHVybj1hLGE9aCl9cmV0dXJuIGcoYSk7Y2FzZSB3YTphOntmb3IobD1mLmtleTtudWxsIT09XG5kOyl7aWYoZC5rZXk9PT1sKWlmKDQ9PT1kLnRhZyYmZC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbz09PWYuY29udGFpbmVySW5mbyYmZC5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb249PT1mLmltcGxlbWVudGF0aW9uKXtjKGEsZC5zaWJsaW5nKTtkPWUoZCxmLmNoaWxkcmVufHxbXSk7ZC5yZXR1cm49YTthPWQ7YnJlYWsgYX1lbHNle2MoYSxkKTticmVha31lbHNlIGIoYSxkKTtkPWQuc2libGluZ31kPVNnKGYsYS5tb2RlLGgpO2QucmV0dXJuPWE7YT1kfXJldHVybiBnKGEpO2Nhc2UgSGE6cmV0dXJuIGw9Zi5faW5pdCxKKGEsZCxsKGYuX3BheWxvYWQpLGgpfWlmKGViKGYpKXJldHVybiBuKGEsZCxmLGgpO2lmKEthKGYpKXJldHVybiB0KGEsZCxmLGgpO01nKGEsZil9cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBmJiZcIlwiIT09Znx8XCJudW1iZXJcIj09PXR5cGVvZiBmPyhmPVwiXCIrZixudWxsIT09ZCYmNj09PWQudGFnPyhjKGEsZC5zaWJsaW5nKSxkPWUoZCxmKSxkLnJldHVybj1hLGE9ZCk6XG4oYyhhLGQpLGQ9UWcoZixhLm1vZGUsaCksZC5yZXR1cm49YSxhPWQpLGcoYSkpOmMoYSxkKX1yZXR1cm4gSn12YXIgVWc9T2coITApLFZnPU9nKCExKSxXZz1VZihudWxsKSxYZz1udWxsLFlnPW51bGwsWmc9bnVsbDtmdW5jdGlvbiAkZygpe1pnPVlnPVhnPW51bGx9ZnVuY3Rpb24gYWgoYSl7dmFyIGI9V2cuY3VycmVudDtFKFdnKTthLl9jdXJyZW50VmFsdWU9Yn1mdW5jdGlvbiBiaChhLGIsYyl7Zm9yKDtudWxsIT09YTspe3ZhciBkPWEuYWx0ZXJuYXRlOyhhLmNoaWxkTGFuZXMmYikhPT1iPyhhLmNoaWxkTGFuZXN8PWIsbnVsbCE9PWQmJihkLmNoaWxkTGFuZXN8PWIpKTpudWxsIT09ZCYmKGQuY2hpbGRMYW5lcyZiKSE9PWImJihkLmNoaWxkTGFuZXN8PWIpO2lmKGE9PT1jKWJyZWFrO2E9YS5yZXR1cm59fVxuZnVuY3Rpb24gY2goYSxiKXtYZz1hO1pnPVlnPW51bGw7YT1hLmRlcGVuZGVuY2llcztudWxsIT09YSYmbnVsbCE9PWEuZmlyc3RDb250ZXh0JiYoMCE9PShhLmxhbmVzJmIpJiYoZGg9ITApLGEuZmlyc3RDb250ZXh0PW51bGwpfWZ1bmN0aW9uIGVoKGEpe3ZhciBiPWEuX2N1cnJlbnRWYWx1ZTtpZihaZyE9PWEpaWYoYT17Y29udGV4dDphLG1lbW9pemVkVmFsdWU6YixuZXh0Om51bGx9LG51bGw9PT1ZZyl7aWYobnVsbD09PVhnKXRocm93IEVycm9yKHAoMzA4KSk7WWc9YTtYZy5kZXBlbmRlbmNpZXM9e2xhbmVzOjAsZmlyc3RDb250ZXh0OmF9fWVsc2UgWWc9WWcubmV4dD1hO3JldHVybiBifXZhciBmaD1udWxsO2Z1bmN0aW9uIGdoKGEpe251bGw9PT1maD9maD1bYV06ZmgucHVzaChhKX1cbmZ1bmN0aW9uIGhoKGEsYixjLGQpe3ZhciBlPWIuaW50ZXJsZWF2ZWQ7bnVsbD09PWU/KGMubmV4dD1jLGdoKGIpKTooYy5uZXh0PWUubmV4dCxlLm5leHQ9Yyk7Yi5pbnRlcmxlYXZlZD1jO3JldHVybiBpaChhLGQpfWZ1bmN0aW9uIGloKGEsYil7YS5sYW5lc3w9Yjt2YXIgYz1hLmFsdGVybmF0ZTtudWxsIT09YyYmKGMubGFuZXN8PWIpO2M9YTtmb3IoYT1hLnJldHVybjtudWxsIT09YTspYS5jaGlsZExhbmVzfD1iLGM9YS5hbHRlcm5hdGUsbnVsbCE9PWMmJihjLmNoaWxkTGFuZXN8PWIpLGM9YSxhPWEucmV0dXJuO3JldHVybiAzPT09Yy50YWc/Yy5zdGF0ZU5vZGU6bnVsbH12YXIgamg9ITE7ZnVuY3Rpb24ga2goYSl7YS51cGRhdGVRdWV1ZT17YmFzZVN0YXRlOmEubWVtb2l6ZWRTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6bnVsbCxsYXN0QmFzZVVwZGF0ZTpudWxsLHNoYXJlZDp7cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MH0sZWZmZWN0czpudWxsfX1cbmZ1bmN0aW9uIGxoKGEsYil7YT1hLnVwZGF0ZVF1ZXVlO2IudXBkYXRlUXVldWU9PT1hJiYoYi51cGRhdGVRdWV1ZT17YmFzZVN0YXRlOmEuYmFzZVN0YXRlLGZpcnN0QmFzZVVwZGF0ZTphLmZpcnN0QmFzZVVwZGF0ZSxsYXN0QmFzZVVwZGF0ZTphLmxhc3RCYXNlVXBkYXRlLHNoYXJlZDphLnNoYXJlZCxlZmZlY3RzOmEuZWZmZWN0c30pfWZ1bmN0aW9uIG1oKGEsYil7cmV0dXJue2V2ZW50VGltZTphLGxhbmU6Yix0YWc6MCxwYXlsb2FkOm51bGwsY2FsbGJhY2s6bnVsbCxuZXh0Om51bGx9fVxuZnVuY3Rpb24gbmgoYSxiLGMpe3ZhciBkPWEudXBkYXRlUXVldWU7aWYobnVsbD09PWQpcmV0dXJuIG51bGw7ZD1kLnNoYXJlZDtpZigwIT09KEsmMikpe3ZhciBlPWQucGVuZGluZztudWxsPT09ZT9iLm5leHQ9YjooYi5uZXh0PWUubmV4dCxlLm5leHQ9Yik7ZC5wZW5kaW5nPWI7cmV0dXJuIGloKGEsYyl9ZT1kLmludGVybGVhdmVkO251bGw9PT1lPyhiLm5leHQ9YixnaChkKSk6KGIubmV4dD1lLm5leHQsZS5uZXh0PWIpO2QuaW50ZXJsZWF2ZWQ9YjtyZXR1cm4gaWgoYSxjKX1mdW5jdGlvbiBvaChhLGIsYyl7Yj1iLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1iJiYoYj1iLnNoYXJlZCwwIT09KGMmNDE5NDI0MCkpKXt2YXIgZD1iLmxhbmVzO2QmPWEucGVuZGluZ0xhbmVzO2N8PWQ7Yi5sYW5lcz1jO0NjKGEsYyl9fVxuZnVuY3Rpb24gcGgoYSxiKXt2YXIgYz1hLnVwZGF0ZVF1ZXVlLGQ9YS5hbHRlcm5hdGU7aWYobnVsbCE9PWQmJihkPWQudXBkYXRlUXVldWUsYz09PWQpKXt2YXIgZT1udWxsLGY9bnVsbDtjPWMuZmlyc3RCYXNlVXBkYXRlO2lmKG51bGwhPT1jKXtkb3t2YXIgZz17ZXZlbnRUaW1lOmMuZXZlbnRUaW1lLGxhbmU6Yy5sYW5lLHRhZzpjLnRhZyxwYXlsb2FkOmMucGF5bG9hZCxjYWxsYmFjazpjLmNhbGxiYWNrLG5leHQ6bnVsbH07bnVsbD09PWY/ZT1mPWc6Zj1mLm5leHQ9ZztjPWMubmV4dH13aGlsZShudWxsIT09Yyk7bnVsbD09PWY/ZT1mPWI6Zj1mLm5leHQ9Yn1lbHNlIGU9Zj1iO2M9e2Jhc2VTdGF0ZTpkLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6ZSxsYXN0QmFzZVVwZGF0ZTpmLHNoYXJlZDpkLnNoYXJlZCxlZmZlY3RzOmQuZWZmZWN0c307YS51cGRhdGVRdWV1ZT1jO3JldHVybn1hPWMubGFzdEJhc2VVcGRhdGU7bnVsbD09PWE/Yy5maXJzdEJhc2VVcGRhdGU9YjphLm5leHQ9XG5iO2MubGFzdEJhc2VVcGRhdGU9Yn1cbmZ1bmN0aW9uIHFoKGEsYixjLGQpe3ZhciBlPWEudXBkYXRlUXVldWU7amg9ITE7dmFyIGY9ZS5maXJzdEJhc2VVcGRhdGUsZz1lLmxhc3RCYXNlVXBkYXRlLGg9ZS5zaGFyZWQucGVuZGluZztpZihudWxsIT09aCl7ZS5zaGFyZWQucGVuZGluZz1udWxsO3ZhciBrPWgsbD1rLm5leHQ7ay5uZXh0PW51bGw7bnVsbD09PWc/Zj1sOmcubmV4dD1sO2c9azt2YXIgbT1hLmFsdGVybmF0ZTtudWxsIT09bSYmKG09bS51cGRhdGVRdWV1ZSxoPW0ubGFzdEJhc2VVcGRhdGUsaCE9PWcmJihudWxsPT09aD9tLmZpcnN0QmFzZVVwZGF0ZT1sOmgubmV4dD1sLG0ubGFzdEJhc2VVcGRhdGU9aykpfWlmKG51bGwhPT1mKXt2YXIgcT1lLmJhc2VTdGF0ZTtnPTA7bT1sPWs9bnVsbDtoPWY7ZG97dmFyIHI9aC5sYW5lLHk9aC5ldmVudFRpbWU7aWYoKGQmcik9PT1yKXtudWxsIT09bSYmKG09bS5uZXh0PXtldmVudFRpbWU6eSxsYW5lOjAsdGFnOmgudGFnLHBheWxvYWQ6aC5wYXlsb2FkLGNhbGxiYWNrOmguY2FsbGJhY2ssXG5uZXh0Om51bGx9KTthOnt2YXIgbj1hLHQ9aDtyPWI7eT1jO3N3aXRjaCh0LnRhZyl7Y2FzZSAxOm49dC5wYXlsb2FkO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBuKXtxPW4uY2FsbCh5LHEscik7YnJlYWsgYX1xPW47YnJlYWsgYTtjYXNlIDM6bi5mbGFncz1uLmZsYWdzJi02NTUzN3wxMjg7Y2FzZSAwOm49dC5wYXlsb2FkO3I9XCJmdW5jdGlvblwiPT09dHlwZW9mIG4/bi5jYWxsKHkscSxyKTpuO2lmKG51bGw9PT1yfHx2b2lkIDA9PT1yKWJyZWFrIGE7cT1BKHt9LHEscik7YnJlYWsgYTtjYXNlIDI6amg9ITB9fW51bGwhPT1oLmNhbGxiYWNrJiYwIT09aC5sYW5lJiYoYS5mbGFnc3w9NjQscj1lLmVmZmVjdHMsbnVsbD09PXI/ZS5lZmZlY3RzPVtoXTpyLnB1c2goaCkpfWVsc2UgeT17ZXZlbnRUaW1lOnksbGFuZTpyLHRhZzpoLnRhZyxwYXlsb2FkOmgucGF5bG9hZCxjYWxsYmFjazpoLmNhbGxiYWNrLG5leHQ6bnVsbH0sbnVsbD09PW0/KGw9bT15LGs9cSk6bT1tLm5leHQ9eSxnfD1yO1xuaD1oLm5leHQ7aWYobnVsbD09PWgpaWYoaD1lLnNoYXJlZC5wZW5kaW5nLG51bGw9PT1oKWJyZWFrO2Vsc2Ugcj1oLGg9ci5uZXh0LHIubmV4dD1udWxsLGUubGFzdEJhc2VVcGRhdGU9cixlLnNoYXJlZC5wZW5kaW5nPW51bGx9d2hpbGUoMSk7bnVsbD09PW0mJihrPXEpO2UuYmFzZVN0YXRlPWs7ZS5maXJzdEJhc2VVcGRhdGU9bDtlLmxhc3RCYXNlVXBkYXRlPW07Yj1lLnNoYXJlZC5pbnRlcmxlYXZlZDtpZihudWxsIT09Yil7ZT1iO2RvIGd8PWUubGFuZSxlPWUubmV4dDt3aGlsZShlIT09Yil9ZWxzZSBudWxsPT09ZiYmKGUuc2hhcmVkLmxhbmVzPTApO3JofD1nO2EubGFuZXM9ZzthLm1lbW9pemVkU3RhdGU9cX19XG5mdW5jdGlvbiBzaChhLGIsYyl7YT1iLmVmZmVjdHM7Yi5lZmZlY3RzPW51bGw7aWYobnVsbCE9PWEpZm9yKGI9MDtiPGEubGVuZ3RoO2IrKyl7dmFyIGQ9YVtiXSxlPWQuY2FsbGJhY2s7aWYobnVsbCE9PWUpe2QuY2FsbGJhY2s9bnVsbDtkPWM7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIGUpdGhyb3cgRXJyb3IocCgxOTEsZSkpO2UuY2FsbChkKX19fXZhciB0aD17fSx1aD1VZih0aCksdmg9VWYodGgpLHdoPVVmKHRoKTtmdW5jdGlvbiB4aChhKXtpZihhPT09dGgpdGhyb3cgRXJyb3IocCgxNzQpKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIHloKGEsYil7Ryh3aCxiKTtHKHZoLGEpO0codWgsdGgpO2E9Yi5ub2RlVHlwZTtzd2l0Y2goYSl7Y2FzZSA5OmNhc2UgMTE6Yj0oYj1iLmRvY3VtZW50RWxlbWVudCk/Yi5uYW1lc3BhY2VVUkk6bGIobnVsbCxcIlwiKTticmVhaztkZWZhdWx0OmE9OD09PWE/Yi5wYXJlbnROb2RlOmIsYj1hLm5hbWVzcGFjZVVSSXx8bnVsbCxhPWEudGFnTmFtZSxiPWxiKGIsYSl9RSh1aCk7Ryh1aCxiKX1mdW5jdGlvbiB6aCgpe0UodWgpO0UodmgpO0Uod2gpfWZ1bmN0aW9uIEFoKGEpe3hoKHdoLmN1cnJlbnQpO3ZhciBiPXhoKHVoLmN1cnJlbnQpO3ZhciBjPWxiKGIsYS50eXBlKTtiIT09YyYmKEcodmgsYSksRyh1aCxjKSl9ZnVuY3Rpb24gQmgoYSl7dmguY3VycmVudD09PWEmJihFKHVoKSxFKHZoKSl9dmFyIEw9VWYoMCk7XG5mdW5jdGlvbiBDaChhKXtmb3IodmFyIGI9YTtudWxsIT09Yjspe2lmKDEzPT09Yi50YWcpe3ZhciBjPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09YyYmKGM9Yy5kZWh5ZHJhdGVkLG51bGw9PT1jfHxcIiQ/XCI9PT1jLmRhdGF8fFwiJCFcIj09PWMuZGF0YSkpcmV0dXJuIGJ9ZWxzZSBpZigxOT09PWIudGFnJiZ2b2lkIDAhPT1iLm1lbW9pemVkUHJvcHMucmV2ZWFsT3JkZXIpe2lmKDAhPT0oYi5mbGFncyYxMjgpKXJldHVybiBifWVsc2UgaWYobnVsbCE9PWIuY2hpbGQpe2IuY2hpbGQucmV0dXJuPWI7Yj1iLmNoaWxkO2NvbnRpbnVlfWlmKGI9PT1hKWJyZWFrO2Zvcig7bnVsbD09PWIuc2libGluZzspe2lmKG51bGw9PT1iLnJldHVybnx8Yi5yZXR1cm49PT1hKXJldHVybiBudWxsO2I9Yi5yZXR1cm59Yi5zaWJsaW5nLnJldHVybj1iLnJldHVybjtiPWIuc2libGluZ31yZXR1cm4gbnVsbH12YXIgRGg9W107XG5mdW5jdGlvbiBFaCgpe2Zvcih2YXIgYT0wO2E8RGgubGVuZ3RoO2ErKylEaFthXS5fd29ya0luUHJvZ3Jlc3NWZXJzaW9uUHJpbWFyeT1udWxsO0RoLmxlbmd0aD0wfXZhciBGaD11YS5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLEdoPXVhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLEhoPTAsTT1udWxsLE49bnVsbCxPPW51bGwsSWg9ITEsSmg9ITEsS2g9MCxMaD0wO2Z1bmN0aW9uIFAoKXt0aHJvdyBFcnJvcihwKDMyMSkpO31mdW5jdGlvbiBNaChhLGIpe2lmKG51bGw9PT1iKXJldHVybiExO2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGgmJmM8YS5sZW5ndGg7YysrKWlmKCFIZShhW2NdLGJbY10pKXJldHVybiExO3JldHVybiEwfVxuZnVuY3Rpb24gTmgoYSxiLGMsZCxlLGYpe0hoPWY7TT1iO2IubWVtb2l6ZWRTdGF0ZT1udWxsO2IudXBkYXRlUXVldWU9bnVsbDtiLmxhbmVzPTA7RmguY3VycmVudD1udWxsPT09YXx8bnVsbD09PWEubWVtb2l6ZWRTdGF0ZT9PaDpQaDthPWMoZCxlKTtpZihKaCl7Zj0wO2Rve0poPSExO0toPTA7aWYoMjU8PWYpdGhyb3cgRXJyb3IocCgzMDEpKTtmKz0xO089Tj1udWxsO2IudXBkYXRlUXVldWU9bnVsbDtGaC5jdXJyZW50PVFoO2E9YyhkLGUpfXdoaWxlKEpoKX1GaC5jdXJyZW50PVJoO2I9bnVsbCE9PU4mJm51bGwhPT1OLm5leHQ7SGg9MDtPPU49TT1udWxsO0loPSExO2lmKGIpdGhyb3cgRXJyb3IocCgzMDApKTtyZXR1cm4gYX1mdW5jdGlvbiBTaCgpe3ZhciBhPTAhPT1LaDtLaD0wO3JldHVybiBhfVxuZnVuY3Rpb24gVGgoKXt2YXIgYT17bWVtb2l6ZWRTdGF0ZTpudWxsLGJhc2VTdGF0ZTpudWxsLGJhc2VRdWV1ZTpudWxsLHF1ZXVlOm51bGwsbmV4dDpudWxsfTtudWxsPT09Tz9NLm1lbW9pemVkU3RhdGU9Tz1hOk89Ty5uZXh0PWE7cmV0dXJuIE99ZnVuY3Rpb24gVWgoKXtpZihudWxsPT09Til7dmFyIGE9TS5hbHRlcm5hdGU7YT1udWxsIT09YT9hLm1lbW9pemVkU3RhdGU6bnVsbH1lbHNlIGE9Ti5uZXh0O3ZhciBiPW51bGw9PT1PP00ubWVtb2l6ZWRTdGF0ZTpPLm5leHQ7aWYobnVsbCE9PWIpTz1iLE49YTtlbHNle2lmKG51bGw9PT1hKXRocm93IEVycm9yKHAoMzEwKSk7Tj1hO2E9e21lbW9pemVkU3RhdGU6Ti5tZW1vaXplZFN0YXRlLGJhc2VTdGF0ZTpOLmJhc2VTdGF0ZSxiYXNlUXVldWU6Ti5iYXNlUXVldWUscXVldWU6Ti5xdWV1ZSxuZXh0Om51bGx9O251bGw9PT1PP00ubWVtb2l6ZWRTdGF0ZT1PPWE6Tz1PLm5leHQ9YX1yZXR1cm4gT31cbmZ1bmN0aW9uIFZoKGEsYil7cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGI/YihhKTpifVxuZnVuY3Rpb24gV2goYSl7dmFyIGI9VWgoKSxjPWIucXVldWU7aWYobnVsbD09PWMpdGhyb3cgRXJyb3IocCgzMTEpKTtjLmxhc3RSZW5kZXJlZFJlZHVjZXI9YTt2YXIgZD1OLGU9ZC5iYXNlUXVldWUsZj1jLnBlbmRpbmc7aWYobnVsbCE9PWYpe2lmKG51bGwhPT1lKXt2YXIgZz1lLm5leHQ7ZS5uZXh0PWYubmV4dDtmLm5leHQ9Z31kLmJhc2VRdWV1ZT1lPWY7Yy5wZW5kaW5nPW51bGx9aWYobnVsbCE9PWUpe2Y9ZS5uZXh0O2Q9ZC5iYXNlU3RhdGU7dmFyIGg9Zz1udWxsLGs9bnVsbCxsPWY7ZG97dmFyIG09bC5sYW5lO2lmKChIaCZtKT09PW0pbnVsbCE9PWsmJihrPWsubmV4dD17bGFuZTowLGFjdGlvbjpsLmFjdGlvbixoYXNFYWdlclN0YXRlOmwuaGFzRWFnZXJTdGF0ZSxlYWdlclN0YXRlOmwuZWFnZXJTdGF0ZSxuZXh0Om51bGx9KSxkPWwuaGFzRWFnZXJTdGF0ZT9sLmVhZ2VyU3RhdGU6YShkLGwuYWN0aW9uKTtlbHNle3ZhciBxPXtsYW5lOm0sYWN0aW9uOmwuYWN0aW9uLGhhc0VhZ2VyU3RhdGU6bC5oYXNFYWdlclN0YXRlLFxuZWFnZXJTdGF0ZTpsLmVhZ2VyU3RhdGUsbmV4dDpudWxsfTtudWxsPT09az8oaD1rPXEsZz1kKTprPWsubmV4dD1xO00ubGFuZXN8PW07cmh8PW19bD1sLm5leHR9d2hpbGUobnVsbCE9PWwmJmwhPT1mKTtudWxsPT09az9nPWQ6ay5uZXh0PWg7SGUoZCxiLm1lbW9pemVkU3RhdGUpfHwoZGg9ITApO2IubWVtb2l6ZWRTdGF0ZT1kO2IuYmFzZVN0YXRlPWc7Yi5iYXNlUXVldWU9aztjLmxhc3RSZW5kZXJlZFN0YXRlPWR9YT1jLmludGVybGVhdmVkO2lmKG51bGwhPT1hKXtlPWE7ZG8gZj1lLmxhbmUsTS5sYW5lc3w9ZixyaHw9ZixlPWUubmV4dDt3aGlsZShlIT09YSl9ZWxzZSBudWxsPT09ZSYmKGMubGFuZXM9MCk7cmV0dXJuW2IubWVtb2l6ZWRTdGF0ZSxjLmRpc3BhdGNoXX1cbmZ1bmN0aW9uIFhoKGEpe3ZhciBiPVVoKCksYz1iLnF1ZXVlO2lmKG51bGw9PT1jKXRocm93IEVycm9yKHAoMzExKSk7Yy5sYXN0UmVuZGVyZWRSZWR1Y2VyPWE7dmFyIGQ9Yy5kaXNwYXRjaCxlPWMucGVuZGluZyxmPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZSl7Yy5wZW5kaW5nPW51bGw7dmFyIGc9ZT1lLm5leHQ7ZG8gZj1hKGYsZy5hY3Rpb24pLGc9Zy5uZXh0O3doaWxlKGchPT1lKTtIZShmLGIubWVtb2l6ZWRTdGF0ZSl8fChkaD0hMCk7Yi5tZW1vaXplZFN0YXRlPWY7bnVsbD09PWIuYmFzZVF1ZXVlJiYoYi5iYXNlU3RhdGU9Zik7Yy5sYXN0UmVuZGVyZWRTdGF0ZT1mfXJldHVybltmLGRdfWZ1bmN0aW9uIFloKCl7fVxuZnVuY3Rpb24gWmgoYSxiKXt2YXIgYz1NLGQ9VWgoKSxlPWIoKSxmPSFIZShkLm1lbW9pemVkU3RhdGUsZSk7ZiYmKGQubWVtb2l6ZWRTdGF0ZT1lLGRoPSEwKTtkPWQucXVldWU7JGgoYWkuYmluZChudWxsLGMsZCxhKSxbYV0pO2lmKGQuZ2V0U25hcHNob3QhPT1ifHxmfHxudWxsIT09TyYmTy5tZW1vaXplZFN0YXRlLnRhZyYxKXtjLmZsYWdzfD0yMDQ4O2JpKDksY2kuYmluZChudWxsLGMsZCxlLGIpLHZvaWQgMCxudWxsKTtpZihudWxsPT09USl0aHJvdyBFcnJvcihwKDM0OSkpOzAhPT0oSGgmMzApfHxkaShjLGIsZSl9cmV0dXJuIGV9ZnVuY3Rpb24gZGkoYSxiLGMpe2EuZmxhZ3N8PTE2Mzg0O2E9e2dldFNuYXBzaG90OmIsdmFsdWU6Y307Yj1NLnVwZGF0ZVF1ZXVlO251bGw9PT1iPyhiPXtsYXN0RWZmZWN0Om51bGwsc3RvcmVzOm51bGx9LE0udXBkYXRlUXVldWU9YixiLnN0b3Jlcz1bYV0pOihjPWIuc3RvcmVzLG51bGw9PT1jP2Iuc3RvcmVzPVthXTpjLnB1c2goYSkpfVxuZnVuY3Rpb24gY2koYSxiLGMsZCl7Yi52YWx1ZT1jO2IuZ2V0U25hcHNob3Q9ZDtlaShiKSYmZmkoYSl9ZnVuY3Rpb24gYWkoYSxiLGMpe3JldHVybiBjKGZ1bmN0aW9uKCl7ZWkoYikmJmZpKGEpfSl9ZnVuY3Rpb24gZWkoYSl7dmFyIGI9YS5nZXRTbmFwc2hvdDthPWEudmFsdWU7dHJ5e3ZhciBjPWIoKTtyZXR1cm4hSGUoYSxjKX1jYXRjaChkKXtyZXR1cm4hMH19ZnVuY3Rpb24gZmkoYSl7dmFyIGI9aWgoYSwxKTtudWxsIT09YiYmZ2koYixhLDEsLTEpfVxuZnVuY3Rpb24gaGkoYSl7dmFyIGI9VGgoKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSYmKGE9YSgpKTtiLm1lbW9pemVkU3RhdGU9Yi5iYXNlU3RhdGU9YTthPXtwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjpWaCxsYXN0UmVuZGVyZWRTdGF0ZTphfTtiLnF1ZXVlPWE7YT1hLmRpc3BhdGNoPWlpLmJpbmQobnVsbCxNLGEpO3JldHVybltiLm1lbW9pemVkU3RhdGUsYV19XG5mdW5jdGlvbiBiaShhLGIsYyxkKXthPXt0YWc6YSxjcmVhdGU6YixkZXN0cm95OmMsZGVwczpkLG5leHQ6bnVsbH07Yj1NLnVwZGF0ZVF1ZXVlO251bGw9PT1iPyhiPXtsYXN0RWZmZWN0Om51bGwsc3RvcmVzOm51bGx9LE0udXBkYXRlUXVldWU9YixiLmxhc3RFZmZlY3Q9YS5uZXh0PWEpOihjPWIubGFzdEVmZmVjdCxudWxsPT09Yz9iLmxhc3RFZmZlY3Q9YS5uZXh0PWE6KGQ9Yy5uZXh0LGMubmV4dD1hLGEubmV4dD1kLGIubGFzdEVmZmVjdD1hKSk7cmV0dXJuIGF9ZnVuY3Rpb24gamkoKXtyZXR1cm4gVWgoKS5tZW1vaXplZFN0YXRlfWZ1bmN0aW9uIGtpKGEsYixjLGQpe3ZhciBlPVRoKCk7TS5mbGFnc3w9YTtlLm1lbW9pemVkU3RhdGU9YmkoMXxiLGMsdm9pZCAwLHZvaWQgMD09PWQ/bnVsbDpkKX1cbmZ1bmN0aW9uIGxpKGEsYixjLGQpe3ZhciBlPVVoKCk7ZD12b2lkIDA9PT1kP251bGw6ZDt2YXIgZj12b2lkIDA7aWYobnVsbCE9PU4pe3ZhciBnPU4ubWVtb2l6ZWRTdGF0ZTtmPWcuZGVzdHJveTtpZihudWxsIT09ZCYmTWgoZCxnLmRlcHMpKXtlLm1lbW9pemVkU3RhdGU9YmkoYixjLGYsZCk7cmV0dXJufX1NLmZsYWdzfD1hO2UubWVtb2l6ZWRTdGF0ZT1iaSgxfGIsYyxmLGQpfWZ1bmN0aW9uIG1pKGEsYil7cmV0dXJuIGtpKDgzOTA2NTYsOCxhLGIpfWZ1bmN0aW9uICRoKGEsYil7cmV0dXJuIGxpKDIwNDgsOCxhLGIpfWZ1bmN0aW9uIG5pKGEsYil7cmV0dXJuIGxpKDQsMixhLGIpfWZ1bmN0aW9uIG9pKGEsYil7cmV0dXJuIGxpKDQsNCxhLGIpfVxuZnVuY3Rpb24gcGkoYSxiKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYilyZXR1cm4gYT1hKCksYihhKSxmdW5jdGlvbigpe2IobnVsbCl9O2lmKG51bGwhPT1iJiZ2b2lkIDAhPT1iKXJldHVybiBhPWEoKSxiLmN1cnJlbnQ9YSxmdW5jdGlvbigpe2IuY3VycmVudD1udWxsfX1mdW5jdGlvbiBxaShhLGIsYyl7Yz1udWxsIT09YyYmdm9pZCAwIT09Yz9jLmNvbmNhdChbYV0pOm51bGw7cmV0dXJuIGxpKDQsNCxwaS5iaW5kKG51bGwsYixhKSxjKX1mdW5jdGlvbiByaSgpe31mdW5jdGlvbiBzaShhLGIpe3ZhciBjPVVoKCk7Yj12b2lkIDA9PT1iP251bGw6Yjt2YXIgZD1jLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQmJm51bGwhPT1iJiZNaChiLGRbMV0pKXJldHVybiBkWzBdO2MubWVtb2l6ZWRTdGF0ZT1bYSxiXTtyZXR1cm4gYX1cbmZ1bmN0aW9uIHRpKGEsYil7dmFyIGM9VWgoKTtiPXZvaWQgMD09PWI/bnVsbDpiO3ZhciBkPWMubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZCYmbnVsbCE9PWImJk1oKGIsZFsxXSkpcmV0dXJuIGRbMF07YT1hKCk7Yy5tZW1vaXplZFN0YXRlPVthLGJdO3JldHVybiBhfWZ1bmN0aW9uIHVpKGEsYixjKXtpZigwPT09KEhoJjIxKSlyZXR1cm4gYS5iYXNlU3RhdGUmJihhLmJhc2VTdGF0ZT0hMSxkaD0hMCksYS5tZW1vaXplZFN0YXRlPWM7SGUoYyxiKXx8KGM9eWMoKSxNLmxhbmVzfD1jLHJofD1jLGEuYmFzZVN0YXRlPSEwKTtyZXR1cm4gYn1mdW5jdGlvbiB2aShhLGIpe3ZhciBjPUM7Qz0wIT09YyYmND5jP2M6NDthKCEwKTt2YXIgZD1HaC50cmFuc2l0aW9uO0doLnRyYW5zaXRpb249e307dHJ5e2EoITEpLGIoKX1maW5hbGx5e0M9YyxHaC50cmFuc2l0aW9uPWR9fWZ1bmN0aW9uIHdpKCl7cmV0dXJuIFVoKCkubWVtb2l6ZWRTdGF0ZX1cbmZ1bmN0aW9uIHhpKGEsYixjKXt2YXIgZD15aShhKTtjPXtsYW5lOmQsYWN0aW9uOmMsaGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfTtpZih6aShhKSlBaShiLGMpO2Vsc2UgaWYoYz1oaChhLGIsYyxkKSxudWxsIT09Yyl7dmFyIGU9UigpO2dpKGMsYSxkLGUpO0JpKGMsYixkKX19XG5mdW5jdGlvbiBpaShhLGIsYyl7dmFyIGQ9eWkoYSksZT17bGFuZTpkLGFjdGlvbjpjLGhhc0VhZ2VyU3RhdGU6ITEsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH07aWYoemkoYSkpQWkoYixlKTtlbHNle3ZhciBmPWEuYWx0ZXJuYXRlO2lmKDA9PT1hLmxhbmVzJiYobnVsbD09PWZ8fDA9PT1mLmxhbmVzKSYmKGY9Yi5sYXN0UmVuZGVyZWRSZWR1Y2VyLG51bGwhPT1mKSl0cnl7dmFyIGc9Yi5sYXN0UmVuZGVyZWRTdGF0ZSxoPWYoZyxjKTtlLmhhc0VhZ2VyU3RhdGU9ITA7ZS5lYWdlclN0YXRlPWg7aWYoSGUoaCxnKSl7dmFyIGs9Yi5pbnRlcmxlYXZlZDtudWxsPT09az8oZS5uZXh0PWUsZ2goYikpOihlLm5leHQ9ay5uZXh0LGsubmV4dD1lKTtiLmludGVybGVhdmVkPWU7cmV0dXJufX1jYXRjaChsKXt9ZmluYWxseXt9Yz1oaChhLGIsZSxkKTtudWxsIT09YyYmKGU9UigpLGdpKGMsYSxkLGUpLEJpKGMsYixkKSl9fVxuZnVuY3Rpb24gemkoYSl7dmFyIGI9YS5hbHRlcm5hdGU7cmV0dXJuIGE9PT1NfHxudWxsIT09YiYmYj09PU19ZnVuY3Rpb24gQWkoYSxiKXtKaD1JaD0hMDt2YXIgYz1hLnBlbmRpbmc7bnVsbD09PWM/Yi5uZXh0PWI6KGIubmV4dD1jLm5leHQsYy5uZXh0PWIpO2EucGVuZGluZz1ifWZ1bmN0aW9uIEJpKGEsYixjKXtpZigwIT09KGMmNDE5NDI0MCkpe3ZhciBkPWIubGFuZXM7ZCY9YS5wZW5kaW5nTGFuZXM7Y3w9ZDtiLmxhbmVzPWM7Q2MoYSxjKX19XG52YXIgUmg9e3JlYWRDb250ZXh0OmVoLHVzZUNhbGxiYWNrOlAsdXNlQ29udGV4dDpQLHVzZUVmZmVjdDpQLHVzZUltcGVyYXRpdmVIYW5kbGU6UCx1c2VJbnNlcnRpb25FZmZlY3Q6UCx1c2VMYXlvdXRFZmZlY3Q6UCx1c2VNZW1vOlAsdXNlUmVkdWNlcjpQLHVzZVJlZjpQLHVzZVN0YXRlOlAsdXNlRGVidWdWYWx1ZTpQLHVzZURlZmVycmVkVmFsdWU6UCx1c2VUcmFuc2l0aW9uOlAsdXNlTXV0YWJsZVNvdXJjZTpQLHVzZVN5bmNFeHRlcm5hbFN0b3JlOlAsdXNlSWQ6UCx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9LE9oPXtyZWFkQ29udGV4dDplaCx1c2VDYWxsYmFjazpmdW5jdGlvbihhLGIpe1RoKCkubWVtb2l6ZWRTdGF0ZT1bYSx2b2lkIDA9PT1iP251bGw6Yl07cmV0dXJuIGF9LHVzZUNvbnRleHQ6ZWgsdXNlRWZmZWN0Om1pLHVzZUltcGVyYXRpdmVIYW5kbGU6ZnVuY3Rpb24oYSxiLGMpe2M9bnVsbCE9PWMmJnZvaWQgMCE9PWM/Yy5jb25jYXQoW2FdKTpudWxsO3JldHVybiBraSg0MTk0MzA4LFxuNCxwaS5iaW5kKG51bGwsYixhKSxjKX0sdXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGtpKDQxOTQzMDgsNCxhLGIpfSx1c2VJbnNlcnRpb25FZmZlY3Q6ZnVuY3Rpb24oYSxiKXtyZXR1cm4ga2koNCwyLGEsYil9LHVzZU1lbW86ZnVuY3Rpb24oYSxiKXt2YXIgYz1UaCgpO2I9dm9pZCAwPT09Yj9udWxsOmI7YT1hKCk7Yy5tZW1vaXplZFN0YXRlPVthLGJdO3JldHVybiBhfSx1c2VSZWR1Y2VyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1UaCgpO2I9dm9pZCAwIT09Yz9jKGIpOmI7ZC5tZW1vaXplZFN0YXRlPWQuYmFzZVN0YXRlPWI7YT17cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6YSxsYXN0UmVuZGVyZWRTdGF0ZTpifTtkLnF1ZXVlPWE7YT1hLmRpc3BhdGNoPXhpLmJpbmQobnVsbCxNLGEpO3JldHVybltkLm1lbW9pemVkU3RhdGUsYV19LHVzZVJlZjpmdW5jdGlvbihhKXt2YXIgYj1cblRoKCk7YT17Y3VycmVudDphfTtyZXR1cm4gYi5tZW1vaXplZFN0YXRlPWF9LHVzZVN0YXRlOmhpLHVzZURlYnVnVmFsdWU6cmksdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gVGgoKS5tZW1vaXplZFN0YXRlPWF9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1oaSghMSksYj1hWzBdO2E9dmkuYmluZChudWxsLGFbMV0pO1RoKCkubWVtb2l6ZWRTdGF0ZT1hO3JldHVybltiLGFdfSx1c2VNdXRhYmxlU291cmNlOmZ1bmN0aW9uKCl7fSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9TSxlPVRoKCk7aWYoSSl7aWYodm9pZCAwPT09Yyl0aHJvdyBFcnJvcihwKDQwNykpO2M9YygpfWVsc2V7Yz1iKCk7aWYobnVsbD09PVEpdGhyb3cgRXJyb3IocCgzNDkpKTswIT09KEhoJjMwKXx8ZGkoZCxiLGMpfWUubWVtb2l6ZWRTdGF0ZT1jO3ZhciBmPXt2YWx1ZTpjLGdldFNuYXBzaG90OmJ9O2UucXVldWU9ZjttaShhaS5iaW5kKG51bGwsZCxcbmYsYSksW2FdKTtkLmZsYWdzfD0yMDQ4O2JpKDksY2kuYmluZChudWxsLGQsZixjLGIpLHZvaWQgMCxudWxsKTtyZXR1cm4gY30sdXNlSWQ6ZnVuY3Rpb24oKXt2YXIgYT1UaCgpLGI9US5pZGVudGlmaWVyUHJlZml4O2lmKEkpe3ZhciBjPXNnO3ZhciBkPXJnO2M9KGQmfigxPDwzMi1vYyhkKS0xKSkudG9TdHJpbmcoMzIpK2M7Yj1cIjpcIitiK1wiUlwiK2M7Yz1LaCsrOzA8YyYmKGIrPVwiSFwiK2MudG9TdHJpbmcoMzIpKTtiKz1cIjpcIn1lbHNlIGM9TGgrKyxiPVwiOlwiK2IrXCJyXCIrYy50b1N0cmluZygzMikrXCI6XCI7cmV0dXJuIGEubWVtb2l6ZWRTdGF0ZT1ifSx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9LFBoPXtyZWFkQ29udGV4dDplaCx1c2VDYWxsYmFjazpzaSx1c2VDb250ZXh0OmVoLHVzZUVmZmVjdDokaCx1c2VJbXBlcmF0aXZlSGFuZGxlOnFpLHVzZUluc2VydGlvbkVmZmVjdDpuaSx1c2VMYXlvdXRFZmZlY3Q6b2ksdXNlTWVtbzp0aSx1c2VSZWR1Y2VyOldoLHVzZVJlZjpqaSx1c2VTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBXaChWaCl9LFxudXNlRGVidWdWYWx1ZTpyaSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBiPVVoKCk7cmV0dXJuIHVpKGIsTi5tZW1vaXplZFN0YXRlLGEpfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9V2goVmgpWzBdLGI9VWgoKS5tZW1vaXplZFN0YXRlO3JldHVyblthLGJdfSx1c2VNdXRhYmxlU291cmNlOlloLHVzZVN5bmNFeHRlcm5hbFN0b3JlOlpoLHVzZUlkOndpLHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX0sUWg9e3JlYWRDb250ZXh0OmVoLHVzZUNhbGxiYWNrOnNpLHVzZUNvbnRleHQ6ZWgsdXNlRWZmZWN0OiRoLHVzZUltcGVyYXRpdmVIYW5kbGU6cWksdXNlSW5zZXJ0aW9uRWZmZWN0Om5pLHVzZUxheW91dEVmZmVjdDpvaSx1c2VNZW1vOnRpLHVzZVJlZHVjZXI6WGgsdXNlUmVmOmppLHVzZVN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIFhoKFZoKX0sdXNlRGVidWdWYWx1ZTpyaSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBiPVVoKCk7cmV0dXJuIG51bGw9PT1cbk4/Yi5tZW1vaXplZFN0YXRlPWE6dWkoYixOLm1lbW9pemVkU3RhdGUsYSl9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1YaChWaClbMF0sYj1VaCgpLm1lbW9pemVkU3RhdGU7cmV0dXJuW2EsYl19LHVzZU11dGFibGVTb3VyY2U6WWgsdXNlU3luY0V4dGVybmFsU3RvcmU6WmgsdXNlSWQ6d2ksdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfTtmdW5jdGlvbiBDaShhLGIpe2lmKGEmJmEuZGVmYXVsdFByb3BzKXtiPUEoe30sYik7YT1hLmRlZmF1bHRQcm9wcztmb3IodmFyIGMgaW4gYSl2b2lkIDA9PT1iW2NdJiYoYltjXT1hW2NdKTtyZXR1cm4gYn1yZXR1cm4gYn1mdW5jdGlvbiBEaShhLGIsYyxkKXtiPWEubWVtb2l6ZWRTdGF0ZTtjPWMoZCxiKTtjPW51bGw9PT1jfHx2b2lkIDA9PT1jP2I6QSh7fSxiLGMpO2EubWVtb2l6ZWRTdGF0ZT1jOzA9PT1hLmxhbmVzJiYoYS51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9Yyl9XG52YXIgRWk9e2lzTW91bnRlZDpmdW5jdGlvbihhKXtyZXR1cm4oYT1hLl9yZWFjdEludGVybmFscyk/VmIoYSk9PT1hOiExfSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oYSxiLGMpe2E9YS5fcmVhY3RJbnRlcm5hbHM7dmFyIGQ9UigpLGU9eWkoYSksZj1taChkLGUpO2YucGF5bG9hZD1iO3ZvaWQgMCE9PWMmJm51bGwhPT1jJiYoZi5jYWxsYmFjaz1jKTtiPW5oKGEsZixlKTtudWxsIT09YiYmKGdpKGIsYSxlLGQpLG9oKGIsYSxlKSl9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oYSxiLGMpe2E9YS5fcmVhY3RJbnRlcm5hbHM7dmFyIGQ9UigpLGU9eWkoYSksZj1taChkLGUpO2YudGFnPTE7Zi5wYXlsb2FkPWI7dm9pZCAwIT09YyYmbnVsbCE9PWMmJihmLmNhbGxiYWNrPWMpO2I9bmgoYSxmLGUpO251bGwhPT1iJiYoZ2koYixhLGUsZCksb2goYixhLGUpKX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGEsYil7YT1hLl9yZWFjdEludGVybmFsczt2YXIgYz1SKCksZD1cbnlpKGEpLGU9bWgoYyxkKTtlLnRhZz0yO3ZvaWQgMCE9PWImJm51bGwhPT1iJiYoZS5jYWxsYmFjaz1iKTtiPW5oKGEsZSxkKTtudWxsIT09YiYmKGdpKGIsYSxkLGMpLG9oKGIsYSxkKSl9fTtmdW5jdGlvbiBGaShhLGIsYyxkLGUsZixnKXthPWEuc3RhdGVOb2RlO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLnNob3VsZENvbXBvbmVudFVwZGF0ZT9hLnNob3VsZENvbXBvbmVudFVwZGF0ZShkLGYsZyk6Yi5wcm90b3R5cGUmJmIucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50PyFJZShjLGQpfHwhSWUoZSxmKTohMH1cbmZ1bmN0aW9uIEdpKGEsYixjKXt2YXIgZD0hMSxlPVZmO3ZhciBmPWIuY29udGV4dFR5cGU7XCJvYmplY3RcIj09PXR5cGVvZiBmJiZudWxsIT09Zj9mPWVoKGYpOihlPVpmKGIpP1hmOkguY3VycmVudCxkPWIuY29udGV4dFR5cGVzLGY9KGQ9bnVsbCE9PWQmJnZvaWQgMCE9PWQpP1lmKGEsZSk6VmYpO2I9bmV3IGIoYyxmKTthLm1lbW9pemVkU3RhdGU9bnVsbCE9PWIuc3RhdGUmJnZvaWQgMCE9PWIuc3RhdGU/Yi5zdGF0ZTpudWxsO2IudXBkYXRlcj1FaTthLnN0YXRlTm9kZT1iO2IuX3JlYWN0SW50ZXJuYWxzPWE7ZCYmKGE9YS5zdGF0ZU5vZGUsYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PWUsYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dD1mKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIEhpKGEsYixjLGQpe2E9Yi5zdGF0ZTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZiLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoYyxkKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmYi5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhjLGQpO2Iuc3RhdGUhPT1hJiZFaS5lbnF1ZXVlUmVwbGFjZVN0YXRlKGIsYi5zdGF0ZSxudWxsKX1cbmZ1bmN0aW9uIElpKGEsYixjLGQpe3ZhciBlPWEuc3RhdGVOb2RlO2UucHJvcHM9YztlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZTtlLnJlZnM9e307a2goYSk7dmFyIGY9Yi5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mP2UuY29udGV4dD1laChmKTooZj1aZihiKT9YZjpILmN1cnJlbnQsZS5jb250ZXh0PVlmKGEsZikpO2Uuc3RhdGU9YS5tZW1vaXplZFN0YXRlO2Y9Yi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7XCJmdW5jdGlvblwiPT09dHlwZW9mIGYmJihEaShhLGIsZixjKSxlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZSk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGIuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGUuY29tcG9uZW50V2lsbE1vdW50fHwoYj1lLnN0YXRlLFxuXCJmdW5jdGlvblwiPT09dHlwZW9mIGUuY29tcG9uZW50V2lsbE1vdW50JiZlLmNvbXBvbmVudFdpbGxNb3VudCgpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJmUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpLGIhPT1lLnN0YXRlJiZFaS5lbnF1ZXVlUmVwbGFjZVN0YXRlKGUsZS5zdGF0ZSxudWxsKSxxaChhLGMsZSxkKSxlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZSk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGUuY29tcG9uZW50RGlkTW91bnQmJihhLmZsYWdzfD00MTk0MzA4KX1mdW5jdGlvbiBKaShhLGIpe3RyeXt2YXIgYz1cIlwiLGQ9YjtkbyBjKz1QYShkKSxkPWQucmV0dXJuO3doaWxlKGQpO3ZhciBlPWN9Y2F0Y2goZil7ZT1cIlxcbkVycm9yIGdlbmVyYXRpbmcgc3RhY2s6IFwiK2YubWVzc2FnZStcIlxcblwiK2Yuc3RhY2t9cmV0dXJue3ZhbHVlOmEsc291cmNlOmIsc3RhY2s6ZSxkaWdlc3Q6bnVsbH19XG5mdW5jdGlvbiBLaShhLGIsYyl7cmV0dXJue3ZhbHVlOmEsc291cmNlOm51bGwsc3RhY2s6bnVsbCE9Yz9jOm51bGwsZGlnZXN0Om51bGwhPWI/YjpudWxsfX1mdW5jdGlvbiBMaShhLGIpe3RyeXtjb25zb2xlLmVycm9yKGIudmFsdWUpfWNhdGNoKGMpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBjO30pfX12YXIgTWk9XCJmdW5jdGlvblwiPT09dHlwZW9mIFdlYWtNYXA/V2Vha01hcDpNYXA7ZnVuY3Rpb24gTmkoYSxiLGMpe2M9bWgoLTEsYyk7Yy50YWc9MztjLnBheWxvYWQ9e2VsZW1lbnQ6bnVsbH07dmFyIGQ9Yi52YWx1ZTtjLmNhbGxiYWNrPWZ1bmN0aW9uKCl7T2l8fChPaT0hMCxQaT1kKTtMaShhLGIpfTtyZXR1cm4gY31cbmZ1bmN0aW9uIFFpKGEsYixjKXtjPW1oKC0xLGMpO2MudGFnPTM7dmFyIGQ9YS50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZCl7dmFyIGU9Yi52YWx1ZTtjLnBheWxvYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gZChlKX07Yy5jYWxsYmFjaz1mdW5jdGlvbigpe0xpKGEsYil9fXZhciBmPWEuc3RhdGVOb2RlO251bGwhPT1mJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgZi5jb21wb25lbnREaWRDYXRjaCYmKGMuY2FsbGJhY2s9ZnVuY3Rpb24oKXtMaShhLGIpO1wiZnVuY3Rpb25cIiE9PXR5cGVvZiBkJiYobnVsbD09PVJpP1JpPW5ldyBTZXQoW3RoaXNdKTpSaS5hZGQodGhpcykpO3ZhciBjPWIuc3RhY2s7dGhpcy5jb21wb25lbnREaWRDYXRjaChiLnZhbHVlLHtjb21wb25lbnRTdGFjazpudWxsIT09Yz9jOlwiXCJ9KX0pO3JldHVybiBjfVxuZnVuY3Rpb24gU2koYSxiLGMpe3ZhciBkPWEucGluZ0NhY2hlO2lmKG51bGw9PT1kKXtkPWEucGluZ0NhY2hlPW5ldyBNaTt2YXIgZT1uZXcgU2V0O2Quc2V0KGIsZSl9ZWxzZSBlPWQuZ2V0KGIpLHZvaWQgMD09PWUmJihlPW5ldyBTZXQsZC5zZXQoYixlKSk7ZS5oYXMoYyl8fChlLmFkZChjKSxhPVRpLmJpbmQobnVsbCxhLGIsYyksYi50aGVuKGEsYSkpfWZ1bmN0aW9uIFVpKGEpe2Rve3ZhciBiO2lmKGI9MTM9PT1hLnRhZyliPWEubWVtb2l6ZWRTdGF0ZSxiPW51bGwhPT1iP251bGwhPT1iLmRlaHlkcmF0ZWQ/ITA6ITE6ITA7aWYoYilyZXR1cm4gYTthPWEucmV0dXJufXdoaWxlKG51bGwhPT1hKTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFZpKGEsYixjLGQsZSl7aWYoMD09PShhLm1vZGUmMSkpcmV0dXJuIGE9PT1iP2EuZmxhZ3N8PTY1NTM2OihhLmZsYWdzfD0xMjgsYy5mbGFnc3w9MTMxMDcyLGMuZmxhZ3MmPS01MjgwNSwxPT09Yy50YWcmJihudWxsPT09Yy5hbHRlcm5hdGU/Yy50YWc9MTc6KGI9bWgoLTEsMSksYi50YWc9MixuaChjLGIsMSkpKSxjLmxhbmVzfD0xKSxhO2EuZmxhZ3N8PTY1NTM2O2EubGFuZXM9ZTtyZXR1cm4gYX12YXIgV2k9dWEuUmVhY3RDdXJyZW50T3duZXIsZGg9ITE7ZnVuY3Rpb24gWGkoYSxiLGMsZCl7Yi5jaGlsZD1udWxsPT09YT9WZyhiLG51bGwsYyxkKTpVZyhiLGEuY2hpbGQsYyxkKX1cbmZ1bmN0aW9uIFlpKGEsYixjLGQsZSl7Yz1jLnJlbmRlcjt2YXIgZj1iLnJlZjtjaChiLGUpO2Q9TmgoYSxiLGMsZCxmLGUpO2M9U2goKTtpZihudWxsIT09YSYmIWRoKXJldHVybiBiLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWUsYi5mbGFncyY9LTIwNTMsYS5sYW5lcyY9fmUsWmkoYSxiLGUpO0kmJmMmJnZnKGIpO2IuZmxhZ3N8PTE7WGkoYSxiLGQsZSk7cmV0dXJuIGIuY2hpbGR9XG5mdW5jdGlvbiAkaShhLGIsYyxkLGUpe2lmKG51bGw9PT1hKXt2YXIgZj1jLnR5cGU7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGYmJiFhaihmKSYmdm9pZCAwPT09Zi5kZWZhdWx0UHJvcHMmJm51bGw9PT1jLmNvbXBhcmUmJnZvaWQgMD09PWMuZGVmYXVsdFByb3BzKXJldHVybiBiLnRhZz0xNSxiLnR5cGU9ZixiaihhLGIsZixkLGUpO2E9UmcoYy50eXBlLG51bGwsZCxiLGIubW9kZSxlKTthLnJlZj1iLnJlZjthLnJldHVybj1iO3JldHVybiBiLmNoaWxkPWF9Zj1hLmNoaWxkO2lmKDA9PT0oYS5sYW5lcyZlKSl7dmFyIGc9Zi5tZW1vaXplZFByb3BzO2M9Yy5jb21wYXJlO2M9bnVsbCE9PWM/YzpJZTtpZihjKGcsZCkmJmEucmVmPT09Yi5yZWYpcmV0dXJuIFppKGEsYixlKX1iLmZsYWdzfD0xO2E9UGcoZixkKTthLnJlZj1iLnJlZjthLnJldHVybj1iO3JldHVybiBiLmNoaWxkPWF9XG5mdW5jdGlvbiBiaihhLGIsYyxkLGUpe2lmKG51bGwhPT1hKXt2YXIgZj1hLm1lbW9pemVkUHJvcHM7aWYoSWUoZixkKSYmYS5yZWY9PT1iLnJlZilpZihkaD0hMSxiLnBlbmRpbmdQcm9wcz1kPWYsMCE9PShhLmxhbmVzJmUpKTAhPT0oYS5mbGFncyYxMzEwNzIpJiYoZGg9ITApO2Vsc2UgcmV0dXJuIGIubGFuZXM9YS5sYW5lcyxaaShhLGIsZSl9cmV0dXJuIGNqKGEsYixjLGQsZSl9XG5mdW5jdGlvbiBkaihhLGIsYyl7dmFyIGQ9Yi5wZW5kaW5nUHJvcHMsZT1kLmNoaWxkcmVuLGY9bnVsbCE9PWE/YS5tZW1vaXplZFN0YXRlOm51bGw7aWYoXCJoaWRkZW5cIj09PWQubW9kZSlpZigwPT09KGIubW9kZSYxKSliLm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczowLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9LEcoZWosZmopLGZqfD1jO2Vsc2V7aWYoMD09PShjJjEwNzM3NDE4MjQpKXJldHVybiBhPW51bGwhPT1mP2YuYmFzZUxhbmVzfGM6YyxiLmxhbmVzPWIuY2hpbGRMYW5lcz0xMDczNzQxODI0LGIubWVtb2l6ZWRTdGF0ZT17YmFzZUxhbmVzOmEsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH0sYi51cGRhdGVRdWV1ZT1udWxsLEcoZWosZmopLGZqfD1hLG51bGw7Yi5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6MCxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfTtkPW51bGwhPT1mP2YuYmFzZUxhbmVzOmM7Ryhlaixmaik7Zmp8PWR9ZWxzZSBudWxsIT09XG5mPyhkPWYuYmFzZUxhbmVzfGMsYi5tZW1vaXplZFN0YXRlPW51bGwpOmQ9YyxHKGVqLGZqKSxmanw9ZDtYaShhLGIsZSxjKTtyZXR1cm4gYi5jaGlsZH1mdW5jdGlvbiBnaihhLGIpe3ZhciBjPWIucmVmO2lmKG51bGw9PT1hJiZudWxsIT09Y3x8bnVsbCE9PWEmJmEucmVmIT09YyliLmZsYWdzfD01MTIsYi5mbGFnc3w9MjA5NzE1Mn1mdW5jdGlvbiBjaihhLGIsYyxkLGUpe3ZhciBmPVpmKGMpP1hmOkguY3VycmVudDtmPVlmKGIsZik7Y2goYixlKTtjPU5oKGEsYixjLGQsZixlKTtkPVNoKCk7aWYobnVsbCE9PWEmJiFkaClyZXR1cm4gYi51cGRhdGVRdWV1ZT1hLnVwZGF0ZVF1ZXVlLGIuZmxhZ3MmPS0yMDUzLGEubGFuZXMmPX5lLFppKGEsYixlKTtJJiZkJiZ2ZyhiKTtiLmZsYWdzfD0xO1hpKGEsYixjLGUpO3JldHVybiBiLmNoaWxkfVxuZnVuY3Rpb24gaGooYSxiLGMsZCxlKXtpZihaZihjKSl7dmFyIGY9ITA7Y2coYil9ZWxzZSBmPSExO2NoKGIsZSk7aWYobnVsbD09PWIuc3RhdGVOb2RlKWlqKGEsYiksR2koYixjLGQpLElpKGIsYyxkLGUpLGQ9ITA7ZWxzZSBpZihudWxsPT09YSl7dmFyIGc9Yi5zdGF0ZU5vZGUsaD1iLm1lbW9pemVkUHJvcHM7Zy5wcm9wcz1oO3ZhciBrPWcuY29udGV4dCxsPWMuY29udGV4dFR5cGU7XCJvYmplY3RcIj09PXR5cGVvZiBsJiZudWxsIT09bD9sPWVoKGwpOihsPVpmKGMpP1hmOkguY3VycmVudCxsPVlmKGIsbCkpO3ZhciBtPWMuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzLHE9XCJmdW5jdGlvblwiPT09dHlwZW9mIG18fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlO3F8fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzfHxcbihoIT09ZHx8ayE9PWwpJiZIaShiLGcsZCxsKTtqaD0hMTt2YXIgcj1iLm1lbW9pemVkU3RhdGU7Zy5zdGF0ZT1yO3FoKGIsZCxnLGUpO2s9Yi5tZW1vaXplZFN0YXRlO2ghPT1kfHxyIT09a3x8V2YuY3VycmVudHx8amg/KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBtJiYoRGkoYixjLG0sZCksaz1iLm1lbW9pemVkU3RhdGUpLChoPWpofHxGaShiLGMsaCxkLHIsayxsKSk/KHF8fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxNb3VudHx8KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxNb3VudCYmZy5jb21wb25lbnRXaWxsTW91bnQoKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZnLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKSksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkTW91bnQmJihiLmZsYWdzfD00MTk0MzA4KSk6XG4oXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkTW91bnQmJihiLmZsYWdzfD00MTk0MzA4KSxiLm1lbW9pemVkUHJvcHM9ZCxiLm1lbW9pemVkU3RhdGU9ayksZy5wcm9wcz1kLGcuc3RhdGU9ayxnLmNvbnRleHQ9bCxkPWgpOihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnREaWRNb3VudCYmKGIuZmxhZ3N8PTQxOTQzMDgpLGQ9ITEpfWVsc2V7Zz1iLnN0YXRlTm9kZTtsaChhLGIpO2g9Yi5tZW1vaXplZFByb3BzO2w9Yi50eXBlPT09Yi5lbGVtZW50VHlwZT9oOkNpKGIudHlwZSxoKTtnLnByb3BzPWw7cT1iLnBlbmRpbmdQcm9wcztyPWcuY29udGV4dDtrPWMuY29udGV4dFR5cGU7XCJvYmplY3RcIj09PXR5cGVvZiBrJiZudWxsIT09az9rPWVoKGspOihrPVpmKGMpP1hmOkguY3VycmVudCxrPVlmKGIsaykpO3ZhciB5PWMuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOyhtPVwiZnVuY3Rpb25cIj09PXR5cGVvZiB5fHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSl8fFxuXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHN8fChoIT09cXx8ciE9PWspJiZIaShiLGcsZCxrKTtqaD0hMTtyPWIubWVtb2l6ZWRTdGF0ZTtnLnN0YXRlPXI7cWgoYixkLGcsZSk7dmFyIG49Yi5tZW1vaXplZFN0YXRlO2ghPT1xfHxyIT09bnx8V2YuY3VycmVudHx8amg/KFwiZnVuY3Rpb25cIj09PXR5cGVvZiB5JiYoRGkoYixjLHksZCksbj1iLm1lbW9pemVkU3RhdGUpLChsPWpofHxGaShiLGMsbCxkLHIsbixrKXx8ITEpPyhtfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFVwZGF0ZXx8KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxVcGRhdGUmJmcuY29tcG9uZW50V2lsbFVwZGF0ZShkLG4sayksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUmJlxuZy5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZShkLG4saykpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudERpZFVwZGF0ZSYmKGIuZmxhZ3N8PTQpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlJiYoYi5mbGFnc3w9MTAyNCkpOihcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnREaWRVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD00KSxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PWEubWVtb2l6ZWRTdGF0ZXx8KGIuZmxhZ3N8PTEwMjQpLGIubWVtb2l6ZWRQcm9wcz1kLGIubWVtb2l6ZWRTdGF0ZT1uKSxnLnByb3BzPWQsZy5zdGF0ZT1uLGcuY29udGV4dD1rLGQ9bCk6KFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudERpZFVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PVxuYS5tZW1vaXplZFN0YXRlfHwoYi5mbGFnc3w9NCksXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD0xMDI0KSxkPSExKX1yZXR1cm4gamooYSxiLGMsZCxmLGUpfVxuZnVuY3Rpb24gamooYSxiLGMsZCxlLGYpe2dqKGEsYik7dmFyIGc9MCE9PShiLmZsYWdzJjEyOCk7aWYoIWQmJiFnKXJldHVybiBlJiZkZyhiLGMsITEpLFppKGEsYixmKTtkPWIuc3RhdGVOb2RlO1dpLmN1cnJlbnQ9Yjt2YXIgaD1nJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgYy5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I/bnVsbDpkLnJlbmRlcigpO2IuZmxhZ3N8PTE7bnVsbCE9PWEmJmc/KGIuY2hpbGQ9VWcoYixhLmNoaWxkLG51bGwsZiksYi5jaGlsZD1VZyhiLG51bGwsaCxmKSk6WGkoYSxiLGgsZik7Yi5tZW1vaXplZFN0YXRlPWQuc3RhdGU7ZSYmZGcoYixjLCEwKTtyZXR1cm4gYi5jaGlsZH1mdW5jdGlvbiBraihhKXt2YXIgYj1hLnN0YXRlTm9kZTtiLnBlbmRpbmdDb250ZXh0P2FnKGEsYi5wZW5kaW5nQ29udGV4dCxiLnBlbmRpbmdDb250ZXh0IT09Yi5jb250ZXh0KTpiLmNvbnRleHQmJmFnKGEsYi5jb250ZXh0LCExKTt5aChhLGIuY29udGFpbmVySW5mbyl9XG5mdW5jdGlvbiBsaihhLGIsYyxkLGUpe0lnKCk7SmcoZSk7Yi5mbGFnc3w9MjU2O1hpKGEsYixjLGQpO3JldHVybiBiLmNoaWxkfXZhciBtaj17ZGVoeWRyYXRlZDpudWxsLHRyZWVDb250ZXh0Om51bGwscmV0cnlMYW5lOjB9O2Z1bmN0aW9uIG5qKGEpe3JldHVybntiYXNlTGFuZXM6YSxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfX1cbmZ1bmN0aW9uIG9qKGEsYixjKXt2YXIgZD1iLnBlbmRpbmdQcm9wcyxlPUwuY3VycmVudCxmPSExLGc9MCE9PShiLmZsYWdzJjEyOCksaDsoaD1nKXx8KGg9bnVsbCE9PWEmJm51bGw9PT1hLm1lbW9pemVkU3RhdGU/ITE6MCE9PShlJjIpKTtpZihoKWY9ITAsYi5mbGFncyY9LTEyOTtlbHNlIGlmKG51bGw9PT1hfHxudWxsIT09YS5tZW1vaXplZFN0YXRlKWV8PTE7RyhMLGUmMSk7aWYobnVsbD09PWEpe0VnKGIpO2E9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1hJiYoYT1hLmRlaHlkcmF0ZWQsbnVsbCE9PWEpKXJldHVybiAwPT09KGIubW9kZSYxKT9iLmxhbmVzPTE6XCIkIVwiPT09YS5kYXRhP2IubGFuZXM9ODpiLmxhbmVzPTEwNzM3NDE4MjQsbnVsbDtnPWQuY2hpbGRyZW47YT1kLmZhbGxiYWNrO3JldHVybiBmPyhkPWIubW9kZSxmPWIuY2hpbGQsZz17bW9kZTpcImhpZGRlblwiLGNoaWxkcmVuOmd9LDA9PT0oZCYxKSYmbnVsbCE9PWY/KGYuY2hpbGRMYW5lcz0wLGYucGVuZGluZ1Byb3BzPVxuZyk6Zj1waihnLGQsMCxudWxsKSxhPVRnKGEsZCxjLG51bGwpLGYucmV0dXJuPWIsYS5yZXR1cm49YixmLnNpYmxpbmc9YSxiLmNoaWxkPWYsYi5jaGlsZC5tZW1vaXplZFN0YXRlPW5qKGMpLGIubWVtb2l6ZWRTdGF0ZT1taixhKTpxaihiLGcpfWU9YS5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1lJiYoaD1lLmRlaHlkcmF0ZWQsbnVsbCE9PWgpKXJldHVybiByaihhLGIsZyxkLGgsZSxjKTtpZihmKXtmPWQuZmFsbGJhY2s7Zz1iLm1vZGU7ZT1hLmNoaWxkO2g9ZS5zaWJsaW5nO3ZhciBrPXttb2RlOlwiaGlkZGVuXCIsY2hpbGRyZW46ZC5jaGlsZHJlbn07MD09PShnJjEpJiZiLmNoaWxkIT09ZT8oZD1iLmNoaWxkLGQuY2hpbGRMYW5lcz0wLGQucGVuZGluZ1Byb3BzPWssYi5kZWxldGlvbnM9bnVsbCk6KGQ9UGcoZSxrKSxkLnN1YnRyZWVGbGFncz1lLnN1YnRyZWVGbGFncyYxNDY4MDA2NCk7bnVsbCE9PWg/Zj1QZyhoLGYpOihmPVRnKGYsZyxjLG51bGwpLGYuZmxhZ3N8PTIpO2YucmV0dXJuPVxuYjtkLnJldHVybj1iO2Quc2libGluZz1mO2IuY2hpbGQ9ZDtkPWY7Zj1iLmNoaWxkO2c9YS5jaGlsZC5tZW1vaXplZFN0YXRlO2c9bnVsbD09PWc/bmooYyk6e2Jhc2VMYW5lczpnLmJhc2VMYW5lc3xjLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOmcudHJhbnNpdGlvbnN9O2YubWVtb2l6ZWRTdGF0ZT1nO2YuY2hpbGRMYW5lcz1hLmNoaWxkTGFuZXMmfmM7Yi5tZW1vaXplZFN0YXRlPW1qO3JldHVybiBkfWY9YS5jaGlsZDthPWYuc2libGluZztkPVBnKGYse21vZGU6XCJ2aXNpYmxlXCIsY2hpbGRyZW46ZC5jaGlsZHJlbn0pOzA9PT0oYi5tb2RlJjEpJiYoZC5sYW5lcz1jKTtkLnJldHVybj1iO2Quc2libGluZz1udWxsO251bGwhPT1hJiYoYz1iLmRlbGV0aW9ucyxudWxsPT09Yz8oYi5kZWxldGlvbnM9W2FdLGIuZmxhZ3N8PTE2KTpjLnB1c2goYSkpO2IuY2hpbGQ9ZDtiLm1lbW9pemVkU3RhdGU9bnVsbDtyZXR1cm4gZH1cbmZ1bmN0aW9uIHFqKGEsYil7Yj1waih7bW9kZTpcInZpc2libGVcIixjaGlsZHJlbjpifSxhLm1vZGUsMCxudWxsKTtiLnJldHVybj1hO3JldHVybiBhLmNoaWxkPWJ9ZnVuY3Rpb24gc2ooYSxiLGMsZCl7bnVsbCE9PWQmJkpnKGQpO1VnKGIsYS5jaGlsZCxudWxsLGMpO2E9cWooYixiLnBlbmRpbmdQcm9wcy5jaGlsZHJlbik7YS5mbGFnc3w9MjtiLm1lbW9pemVkU3RhdGU9bnVsbDtyZXR1cm4gYX1cbmZ1bmN0aW9uIHJqKGEsYixjLGQsZSxmLGcpe2lmKGMpe2lmKGIuZmxhZ3MmMjU2KXJldHVybiBiLmZsYWdzJj0tMjU3LGQ9S2koRXJyb3IocCg0MjIpKSksc2ooYSxiLGcsZCk7aWYobnVsbCE9PWIubWVtb2l6ZWRTdGF0ZSlyZXR1cm4gYi5jaGlsZD1hLmNoaWxkLGIuZmxhZ3N8PTEyOCxudWxsO2Y9ZC5mYWxsYmFjaztlPWIubW9kZTtkPXBqKHttb2RlOlwidmlzaWJsZVwiLGNoaWxkcmVuOmQuY2hpbGRyZW59LGUsMCxudWxsKTtmPVRnKGYsZSxnLG51bGwpO2YuZmxhZ3N8PTI7ZC5yZXR1cm49YjtmLnJldHVybj1iO2Quc2libGluZz1mO2IuY2hpbGQ9ZDswIT09KGIubW9kZSYxKSYmVWcoYixhLmNoaWxkLG51bGwsZyk7Yi5jaGlsZC5tZW1vaXplZFN0YXRlPW5qKGcpO2IubWVtb2l6ZWRTdGF0ZT1tajtyZXR1cm4gZn1pZigwPT09KGIubW9kZSYxKSlyZXR1cm4gc2ooYSxiLGcsbnVsbCk7aWYoXCIkIVwiPT09ZS5kYXRhKXtkPWUubmV4dFNpYmxpbmcmJmUubmV4dFNpYmxpbmcuZGF0YXNldDtcbmlmKGQpdmFyIGg9ZC5kZ3N0O2Q9aDtmPUVycm9yKHAoNDE5KSk7ZD1LaShmLGQsdm9pZCAwKTtyZXR1cm4gc2ooYSxiLGcsZCl9aD0wIT09KGcmYS5jaGlsZExhbmVzKTtpZihkaHx8aCl7ZD1RO2lmKG51bGwhPT1kKXtzd2l0Y2goZyYtZyl7Y2FzZSA0OmU9MjticmVhaztjYXNlIDE2OmU9ODticmVhaztjYXNlIDY0OmNhc2UgMTI4OmNhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOmNhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOmNhc2UgNjcxMDg4NjQ6ZT0zMjticmVhaztjYXNlIDUzNjg3MDkxMjplPTI2ODQzNTQ1NjticmVhaztkZWZhdWx0OmU9MH1lPTAhPT0oZSYoZC5zdXNwZW5kZWRMYW5lc3xnKSk/MDplO1xuMCE9PWUmJmUhPT1mLnJldHJ5TGFuZSYmKGYucmV0cnlMYW5lPWUsaWgoYSxlKSxnaShkLGEsZSwtMSkpfXRqKCk7ZD1LaShFcnJvcihwKDQyMSkpKTtyZXR1cm4gc2ooYSxiLGcsZCl9aWYoXCIkP1wiPT09ZS5kYXRhKXJldHVybiBiLmZsYWdzfD0xMjgsYi5jaGlsZD1hLmNoaWxkLGI9dWouYmluZChudWxsLGEpLGUuX3JlYWN0UmV0cnk9YixudWxsO2E9Zi50cmVlQ29udGV4dDt5Zz1MZihlLm5leHRTaWJsaW5nKTt4Zz1iO0k9ITA7emc9bnVsbDtudWxsIT09YSYmKG9nW3BnKytdPXJnLG9nW3BnKytdPXNnLG9nW3BnKytdPXFnLHJnPWEuaWQsc2c9YS5vdmVyZmxvdyxxZz1iKTtiPXFqKGIsZC5jaGlsZHJlbik7Yi5mbGFnc3w9NDA5NjtyZXR1cm4gYn1mdW5jdGlvbiB2aihhLGIsYyl7YS5sYW5lc3w9Yjt2YXIgZD1hLmFsdGVybmF0ZTtudWxsIT09ZCYmKGQubGFuZXN8PWIpO2JoKGEucmV0dXJuLGIsYyl9XG5mdW5jdGlvbiB3aihhLGIsYyxkLGUpe3ZhciBmPWEubWVtb2l6ZWRTdGF0ZTtudWxsPT09Zj9hLm1lbW9pemVkU3RhdGU9e2lzQmFja3dhcmRzOmIscmVuZGVyaW5nOm51bGwscmVuZGVyaW5nU3RhcnRUaW1lOjAsbGFzdDpkLHRhaWw6Yyx0YWlsTW9kZTplfTooZi5pc0JhY2t3YXJkcz1iLGYucmVuZGVyaW5nPW51bGwsZi5yZW5kZXJpbmdTdGFydFRpbWU9MCxmLmxhc3Q9ZCxmLnRhaWw9YyxmLnRhaWxNb2RlPWUpfVxuZnVuY3Rpb24geGooYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzLGU9ZC5yZXZlYWxPcmRlcixmPWQudGFpbDtYaShhLGIsZC5jaGlsZHJlbixjKTtkPUwuY3VycmVudDtpZigwIT09KGQmMikpZD1kJjF8MixiLmZsYWdzfD0xMjg7ZWxzZXtpZihudWxsIT09YSYmMCE9PShhLmZsYWdzJjEyOCkpYTpmb3IoYT1iLmNoaWxkO251bGwhPT1hOyl7aWYoMTM9PT1hLnRhZyludWxsIT09YS5tZW1vaXplZFN0YXRlJiZ2aihhLGMsYik7ZWxzZSBpZigxOT09PWEudGFnKXZqKGEsYyxiKTtlbHNlIGlmKG51bGwhPT1hLmNoaWxkKXthLmNoaWxkLnJldHVybj1hO2E9YS5jaGlsZDtjb250aW51ZX1pZihhPT09YilicmVhayBhO2Zvcig7bnVsbD09PWEuc2libGluZzspe2lmKG51bGw9PT1hLnJldHVybnx8YS5yZXR1cm49PT1iKWJyZWFrIGE7YT1hLnJldHVybn1hLnNpYmxpbmcucmV0dXJuPWEucmV0dXJuO2E9YS5zaWJsaW5nfWQmPTF9RyhMLGQpO2lmKDA9PT0oYi5tb2RlJjEpKWIubWVtb2l6ZWRTdGF0ZT1cbm51bGw7ZWxzZSBzd2l0Y2goZSl7Y2FzZSBcImZvcndhcmRzXCI6Yz1iLmNoaWxkO2ZvcihlPW51bGw7bnVsbCE9PWM7KWE9Yy5hbHRlcm5hdGUsbnVsbCE9PWEmJm51bGw9PT1DaChhKSYmKGU9YyksYz1jLnNpYmxpbmc7Yz1lO251bGw9PT1jPyhlPWIuY2hpbGQsYi5jaGlsZD1udWxsKTooZT1jLnNpYmxpbmcsYy5zaWJsaW5nPW51bGwpO3dqKGIsITEsZSxjLGYpO2JyZWFrO2Nhc2UgXCJiYWNrd2FyZHNcIjpjPW51bGw7ZT1iLmNoaWxkO2ZvcihiLmNoaWxkPW51bGw7bnVsbCE9PWU7KXthPWUuYWx0ZXJuYXRlO2lmKG51bGwhPT1hJiZudWxsPT09Q2goYSkpe2IuY2hpbGQ9ZTticmVha31hPWUuc2libGluZztlLnNpYmxpbmc9YztjPWU7ZT1hfXdqKGIsITAsYyxudWxsLGYpO2JyZWFrO2Nhc2UgXCJ0b2dldGhlclwiOndqKGIsITEsbnVsbCxudWxsLHZvaWQgMCk7YnJlYWs7ZGVmYXVsdDpiLm1lbW9pemVkU3RhdGU9bnVsbH1yZXR1cm4gYi5jaGlsZH1cbmZ1bmN0aW9uIGlqKGEsYil7MD09PShiLm1vZGUmMSkmJm51bGwhPT1hJiYoYS5hbHRlcm5hdGU9bnVsbCxiLmFsdGVybmF0ZT1udWxsLGIuZmxhZ3N8PTIpfWZ1bmN0aW9uIFppKGEsYixjKXtudWxsIT09YSYmKGIuZGVwZW5kZW5jaWVzPWEuZGVwZW5kZW5jaWVzKTtyaHw9Yi5sYW5lcztpZigwPT09KGMmYi5jaGlsZExhbmVzKSlyZXR1cm4gbnVsbDtpZihudWxsIT09YSYmYi5jaGlsZCE9PWEuY2hpbGQpdGhyb3cgRXJyb3IocCgxNTMpKTtpZihudWxsIT09Yi5jaGlsZCl7YT1iLmNoaWxkO2M9UGcoYSxhLnBlbmRpbmdQcm9wcyk7Yi5jaGlsZD1jO2ZvcihjLnJldHVybj1iO251bGwhPT1hLnNpYmxpbmc7KWE9YS5zaWJsaW5nLGM9Yy5zaWJsaW5nPVBnKGEsYS5wZW5kaW5nUHJvcHMpLGMucmV0dXJuPWI7Yy5zaWJsaW5nPW51bGx9cmV0dXJuIGIuY2hpbGR9XG5mdW5jdGlvbiB5aihhLGIsYyl7c3dpdGNoKGIudGFnKXtjYXNlIDM6a2ooYik7SWcoKTticmVhaztjYXNlIDU6QWgoYik7YnJlYWs7Y2FzZSAxOlpmKGIudHlwZSkmJmNnKGIpO2JyZWFrO2Nhc2UgNDp5aChiLGIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pO2JyZWFrO2Nhc2UgMTA6dmFyIGQ9Yi50eXBlLl9jb250ZXh0LGU9Yi5tZW1vaXplZFByb3BzLnZhbHVlO0coV2csZC5fY3VycmVudFZhbHVlKTtkLl9jdXJyZW50VmFsdWU9ZTticmVhaztjYXNlIDEzOmQ9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1kKXtpZihudWxsIT09ZC5kZWh5ZHJhdGVkKXJldHVybiBHKEwsTC5jdXJyZW50JjEpLGIuZmxhZ3N8PTEyOCxudWxsO2lmKDAhPT0oYyZiLmNoaWxkLmNoaWxkTGFuZXMpKXJldHVybiBvaihhLGIsYyk7RyhMLEwuY3VycmVudCYxKTthPVppKGEsYixjKTtyZXR1cm4gbnVsbCE9PWE/YS5zaWJsaW5nOm51bGx9RyhMLEwuY3VycmVudCYxKTticmVhaztjYXNlIDE5OmQ9MCE9PShjJlxuYi5jaGlsZExhbmVzKTtpZigwIT09KGEuZmxhZ3MmMTI4KSl7aWYoZClyZXR1cm4geGooYSxiLGMpO2IuZmxhZ3N8PTEyOH1lPWIubWVtb2l6ZWRTdGF0ZTtudWxsIT09ZSYmKGUucmVuZGVyaW5nPW51bGwsZS50YWlsPW51bGwsZS5sYXN0RWZmZWN0PW51bGwpO0coTCxMLmN1cnJlbnQpO2lmKGQpYnJlYWs7ZWxzZSByZXR1cm4gbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIGIubGFuZXM9MCxkaihhLGIsYyl9cmV0dXJuIFppKGEsYixjKX12YXIgemosQWosQmosQ2o7XG56aj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1iLmNoaWxkO251bGwhPT1jOyl7aWYoNT09PWMudGFnfHw2PT09Yy50YWcpYS5hcHBlbmRDaGlsZChjLnN0YXRlTm9kZSk7ZWxzZSBpZig0IT09Yy50YWcmJm51bGwhPT1jLmNoaWxkKXtjLmNoaWxkLnJldHVybj1jO2M9Yy5jaGlsZDtjb250aW51ZX1pZihjPT09YilicmVhaztmb3IoO251bGw9PT1jLnNpYmxpbmc7KXtpZihudWxsPT09Yy5yZXR1cm58fGMucmV0dXJuPT09YilyZXR1cm47Yz1jLnJldHVybn1jLnNpYmxpbmcucmV0dXJuPWMucmV0dXJuO2M9Yy5zaWJsaW5nfX07QWo9ZnVuY3Rpb24oKXt9O1xuQmo9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5tZW1vaXplZFByb3BzO2lmKGUhPT1kKXthPWIuc3RhdGVOb2RlO3hoKHVoLmN1cnJlbnQpO3ZhciBmPW51bGw7c3dpdGNoKGMpe2Nhc2UgXCJpbnB1dFwiOmU9WWEoYSxlKTtkPVlhKGEsZCk7Zj1bXTticmVhaztjYXNlIFwic2VsZWN0XCI6ZT1BKHt9LGUse3ZhbHVlOnZvaWQgMH0pO2Q9QSh7fSxkLHt2YWx1ZTp2b2lkIDB9KTtmPVtdO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmU9Z2IoYSxlKTtkPWdiKGEsZCk7Zj1bXTticmVhaztkZWZhdWx0OlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBlLm9uQ2xpY2smJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLm9uQ2xpY2smJihhLm9uY2xpY2s9QmYpfXViKGMsZCk7dmFyIGc7Yz1udWxsO2ZvcihsIGluIGUpaWYoIWQuaGFzT3duUHJvcGVydHkobCkmJmUuaGFzT3duUHJvcGVydHkobCkmJm51bGwhPWVbbF0paWYoXCJzdHlsZVwiPT09bCl7dmFyIGg9ZVtsXTtmb3IoZyBpbiBoKWguaGFzT3duUHJvcGVydHkoZykmJlxuKGN8fChjPXt9KSxjW2ddPVwiXCIpfWVsc2VcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCIhPT1sJiZcImNoaWxkcmVuXCIhPT1sJiZcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiIT09bCYmXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIiE9PWwmJlwiYXV0b0ZvY3VzXCIhPT1sJiYoZWEuaGFzT3duUHJvcGVydHkobCk/Znx8KGY9W10pOihmPWZ8fFtdKS5wdXNoKGwsbnVsbCkpO2ZvcihsIGluIGQpe3ZhciBrPWRbbF07aD1udWxsIT1lP2VbbF06dm9pZCAwO2lmKGQuaGFzT3duUHJvcGVydHkobCkmJmshPT1oJiYobnVsbCE9a3x8bnVsbCE9aCkpaWYoXCJzdHlsZVwiPT09bClpZihoKXtmb3IoZyBpbiBoKSFoLmhhc093blByb3BlcnR5KGcpfHxrJiZrLmhhc093blByb3BlcnR5KGcpfHwoY3x8KGM9e30pLGNbZ109XCJcIik7Zm9yKGcgaW4gaylrLmhhc093blByb3BlcnR5KGcpJiZoW2ddIT09a1tnXSYmKGN8fChjPXt9KSxjW2ddPWtbZ10pfWVsc2UgY3x8KGZ8fChmPVtdKSxmLnB1c2gobCxcbmMpKSxjPWs7ZWxzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIj09PWw/KGs9az9rLl9faHRtbDp2b2lkIDAsaD1oP2guX19odG1sOnZvaWQgMCxudWxsIT1rJiZoIT09ayYmKGY9Znx8W10pLnB1c2gobCxrKSk6XCJjaGlsZHJlblwiPT09bD9cInN0cmluZ1wiIT09dHlwZW9mIGsmJlwibnVtYmVyXCIhPT10eXBlb2Yga3x8KGY9Znx8W10pLnB1c2gobCxcIlwiK2spOlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1sJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09bCYmKGVhLmhhc093blByb3BlcnR5KGwpPyhudWxsIT1rJiZcIm9uU2Nyb2xsXCI9PT1sJiZEKFwic2Nyb2xsXCIsYSksZnx8aD09PWt8fChmPVtdKSk6KGY9Znx8W10pLnB1c2gobCxrKSl9YyYmKGY9Znx8W10pLnB1c2goXCJzdHlsZVwiLGMpO3ZhciBsPWY7aWYoYi51cGRhdGVRdWV1ZT1sKWIuZmxhZ3N8PTR9fTtDaj1mdW5jdGlvbihhLGIsYyxkKXtjIT09ZCYmKGIuZmxhZ3N8PTQpfTtcbmZ1bmN0aW9uIERqKGEsYil7aWYoIUkpc3dpdGNoKGEudGFpbE1vZGUpe2Nhc2UgXCJoaWRkZW5cIjpiPWEudGFpbDtmb3IodmFyIGM9bnVsbDtudWxsIT09YjspbnVsbCE9PWIuYWx0ZXJuYXRlJiYoYz1iKSxiPWIuc2libGluZztudWxsPT09Yz9hLnRhaWw9bnVsbDpjLnNpYmxpbmc9bnVsbDticmVhaztjYXNlIFwiY29sbGFwc2VkXCI6Yz1hLnRhaWw7Zm9yKHZhciBkPW51bGw7bnVsbCE9PWM7KW51bGwhPT1jLmFsdGVybmF0ZSYmKGQ9YyksYz1jLnNpYmxpbmc7bnVsbD09PWQ/Ynx8bnVsbD09PWEudGFpbD9hLnRhaWw9bnVsbDphLnRhaWwuc2libGluZz1udWxsOmQuc2libGluZz1udWxsfX1cbmZ1bmN0aW9uIFMoYSl7dmFyIGI9bnVsbCE9PWEuYWx0ZXJuYXRlJiZhLmFsdGVybmF0ZS5jaGlsZD09PWEuY2hpbGQsYz0wLGQ9MDtpZihiKWZvcih2YXIgZT1hLmNoaWxkO251bGwhPT1lOyljfD1lLmxhbmVzfGUuY2hpbGRMYW5lcyxkfD1lLnN1YnRyZWVGbGFncyYxNDY4MDA2NCxkfD1lLmZsYWdzJjE0NjgwMDY0LGUucmV0dXJuPWEsZT1lLnNpYmxpbmc7ZWxzZSBmb3IoZT1hLmNoaWxkO251bGwhPT1lOyljfD1lLmxhbmVzfGUuY2hpbGRMYW5lcyxkfD1lLnN1YnRyZWVGbGFncyxkfD1lLmZsYWdzLGUucmV0dXJuPWEsZT1lLnNpYmxpbmc7YS5zdWJ0cmVlRmxhZ3N8PWQ7YS5jaGlsZExhbmVzPWM7cmV0dXJuIGJ9XG5mdW5jdGlvbiBFaihhLGIsYyl7dmFyIGQ9Yi5wZW5kaW5nUHJvcHM7d2coYik7c3dpdGNoKGIudGFnKXtjYXNlIDI6Y2FzZSAxNjpjYXNlIDE1OmNhc2UgMDpjYXNlIDExOmNhc2UgNzpjYXNlIDg6Y2FzZSAxMjpjYXNlIDk6Y2FzZSAxNDpyZXR1cm4gUyhiKSxudWxsO2Nhc2UgMTpyZXR1cm4gWmYoYi50eXBlKSYmJGYoKSxTKGIpLG51bGw7Y2FzZSAzOmQ9Yi5zdGF0ZU5vZGU7emgoKTtFKFdmKTtFKEgpO0VoKCk7ZC5wZW5kaW5nQ29udGV4dCYmKGQuY29udGV4dD1kLnBlbmRpbmdDb250ZXh0LGQucGVuZGluZ0NvbnRleHQ9bnVsbCk7aWYobnVsbD09PWF8fG51bGw9PT1hLmNoaWxkKUdnKGIpP2IuZmxhZ3N8PTQ6bnVsbD09PWF8fGEubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQmJjA9PT0oYi5mbGFncyYyNTYpfHwoYi5mbGFnc3w9MTAyNCxudWxsIT09emcmJihGaih6Zyksemc9bnVsbCkpO0FqKGEsYik7UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDU6QmgoYik7dmFyIGU9eGgod2guY3VycmVudCk7XG5jPWIudHlwZTtpZihudWxsIT09YSYmbnVsbCE9Yi5zdGF0ZU5vZGUpQmooYSxiLGMsZCxlKSxhLnJlZiE9PWIucmVmJiYoYi5mbGFnc3w9NTEyLGIuZmxhZ3N8PTIwOTcxNTIpO2Vsc2V7aWYoIWQpe2lmKG51bGw9PT1iLnN0YXRlTm9kZSl0aHJvdyBFcnJvcihwKDE2NikpO1MoYik7cmV0dXJuIG51bGx9YT14aCh1aC5jdXJyZW50KTtpZihHZyhiKSl7ZD1iLnN0YXRlTm9kZTtjPWIudHlwZTt2YXIgZj1iLm1lbW9pemVkUHJvcHM7ZFtPZl09YjtkW1BmXT1mO2E9MCE9PShiLm1vZGUmMSk7c3dpdGNoKGMpe2Nhc2UgXCJkaWFsb2dcIjpEKFwiY2FuY2VsXCIsZCk7RChcImNsb3NlXCIsZCk7YnJlYWs7Y2FzZSBcImlmcmFtZVwiOmNhc2UgXCJvYmplY3RcIjpjYXNlIFwiZW1iZWRcIjpEKFwibG9hZFwiLGQpO2JyZWFrO2Nhc2UgXCJ2aWRlb1wiOmNhc2UgXCJhdWRpb1wiOmZvcihlPTA7ZTxsZi5sZW5ndGg7ZSsrKUQobGZbZV0sZCk7YnJlYWs7Y2FzZSBcInNvdXJjZVwiOkQoXCJlcnJvclwiLGQpO2JyZWFrO2Nhc2UgXCJpbWdcIjpjYXNlIFwiaW1hZ2VcIjpjYXNlIFwibGlua1wiOkQoXCJlcnJvclwiLFxuZCk7RChcImxvYWRcIixkKTticmVhaztjYXNlIFwiZGV0YWlsc1wiOkQoXCJ0b2dnbGVcIixkKTticmVhaztjYXNlIFwiaW5wdXRcIjpaYShkLGYpO0QoXCJpbnZhbGlkXCIsZCk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmQuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFmLm11bHRpcGxlfTtEKFwiaW52YWxpZFwiLGQpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmhiKGQsZiksRChcImludmFsaWRcIixkKX11YihjLGYpO2U9bnVsbDtmb3IodmFyIGcgaW4gZilpZihmLmhhc093blByb3BlcnR5KGcpKXt2YXIgaD1mW2ddO1wiY2hpbGRyZW5cIj09PWc/XCJzdHJpbmdcIj09PXR5cGVvZiBoP2QudGV4dENvbnRlbnQhPT1oJiYoITAhPT1mLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyYmQWYoZC50ZXh0Q29udGVudCxoLGEpLGU9W1wiY2hpbGRyZW5cIixoXSk6XCJudW1iZXJcIj09PXR5cGVvZiBoJiZkLnRleHRDb250ZW50IT09XCJcIitoJiYoITAhPT1mLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyYmQWYoZC50ZXh0Q29udGVudCxcbmgsYSksZT1bXCJjaGlsZHJlblwiLFwiXCIraF0pOmVhLmhhc093blByb3BlcnR5KGcpJiZudWxsIT1oJiZcIm9uU2Nyb2xsXCI9PT1nJiZEKFwic2Nyb2xsXCIsZCl9c3dpdGNoKGMpe2Nhc2UgXCJpbnB1dFwiOlZhKGQpO2RiKGQsZiwhMCk7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6VmEoZCk7amIoZCk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmNhc2UgXCJvcHRpb25cIjpicmVhaztkZWZhdWx0OlwiZnVuY3Rpb25cIj09PXR5cGVvZiBmLm9uQ2xpY2smJihkLm9uY2xpY2s9QmYpfWQ9ZTtiLnVwZGF0ZVF1ZXVlPWQ7bnVsbCE9PWQmJihiLmZsYWdzfD00KX1lbHNle2c9OT09PWUubm9kZVR5cGU/ZTplLm93bmVyRG9jdW1lbnQ7XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI9PT1hJiYoYT1rYihjKSk7XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI9PT1hP1wic2NyaXB0XCI9PT1jPyhhPWcuY3JlYXRlRWxlbWVudChcImRpdlwiKSxhLmlubmVySFRNTD1cIjxzY3JpcHQ+XFx4M2Mvc2NyaXB0PlwiLGE9YS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpKTpcblwic3RyaW5nXCI9PT10eXBlb2YgZC5pcz9hPWcuY3JlYXRlRWxlbWVudChjLHtpczpkLmlzfSk6KGE9Zy5jcmVhdGVFbGVtZW50KGMpLFwic2VsZWN0XCI9PT1jJiYoZz1hLGQubXVsdGlwbGU/Zy5tdWx0aXBsZT0hMDpkLnNpemUmJihnLnNpemU9ZC5zaXplKSkpOmE9Zy5jcmVhdGVFbGVtZW50TlMoYSxjKTthW09mXT1iO2FbUGZdPWQ7emooYSxiLCExLCExKTtiLnN0YXRlTm9kZT1hO2E6e2c9dmIoYyxkKTtzd2l0Y2goYyl7Y2FzZSBcImRpYWxvZ1wiOkQoXCJjYW5jZWxcIixhKTtEKFwiY2xvc2VcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcImlmcmFtZVwiOmNhc2UgXCJvYmplY3RcIjpjYXNlIFwiZW1iZWRcIjpEKFwibG9hZFwiLGEpO2U9ZDticmVhaztjYXNlIFwidmlkZW9cIjpjYXNlIFwiYXVkaW9cIjpmb3IoZT0wO2U8bGYubGVuZ3RoO2UrKylEKGxmW2VdLGEpO2U9ZDticmVhaztjYXNlIFwic291cmNlXCI6RChcImVycm9yXCIsYSk7ZT1kO2JyZWFrO2Nhc2UgXCJpbWdcIjpjYXNlIFwiaW1hZ2VcIjpjYXNlIFwibGlua1wiOkQoXCJlcnJvclwiLFxuYSk7RChcImxvYWRcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcImRldGFpbHNcIjpEKFwidG9nZ2xlXCIsYSk7ZT1kO2JyZWFrO2Nhc2UgXCJpbnB1dFwiOlphKGEsZCk7ZT1ZYShhLGQpO0QoXCJpbnZhbGlkXCIsYSk7YnJlYWs7Y2FzZSBcIm9wdGlvblwiOmU9ZDticmVhaztjYXNlIFwic2VsZWN0XCI6YS5fd3JhcHBlclN0YXRlPXt3YXNNdWx0aXBsZTohIWQubXVsdGlwbGV9O2U9QSh7fSxkLHt2YWx1ZTp2b2lkIDB9KTtEKFwiaW52YWxpZFwiLGEpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmhiKGEsZCk7ZT1nYihhLGQpO0QoXCJpbnZhbGlkXCIsYSk7YnJlYWs7ZGVmYXVsdDplPWR9dWIoYyxlKTtoPWU7Zm9yKGYgaW4gaClpZihoLmhhc093blByb3BlcnR5KGYpKXt2YXIgaz1oW2ZdO1wic3R5bGVcIj09PWY/c2IoYSxrKTpcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PT1mPyhrPWs/ay5fX2h0bWw6dm9pZCAwLG51bGwhPWsmJm5iKGEsaykpOlwiY2hpbGRyZW5cIj09PWY/XCJzdHJpbmdcIj09PXR5cGVvZiBrPyhcInRleHRhcmVhXCIhPT1cbmN8fFwiXCIhPT1rKSYmb2IoYSxrKTpcIm51bWJlclwiPT09dHlwZW9mIGsmJm9iKGEsXCJcIitrKTpcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiIT09ZiYmXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIiE9PWYmJlwiYXV0b0ZvY3VzXCIhPT1mJiYoZWEuaGFzT3duUHJvcGVydHkoZik/bnVsbCE9ayYmXCJvblNjcm9sbFwiPT09ZiYmRChcInNjcm9sbFwiLGEpOm51bGwhPWsmJnRhKGEsZixrLGcpKX1zd2l0Y2goYyl7Y2FzZSBcImlucHV0XCI6VmEoYSk7ZGIoYSxkLCExKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjpWYShhKTtqYihhKTticmVhaztjYXNlIFwib3B0aW9uXCI6bnVsbCE9ZC52YWx1ZSYmYS5zZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiLFwiXCIrU2EoZC52YWx1ZSkpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjphLm11bHRpcGxlPSEhZC5tdWx0aXBsZTtmPWQudmFsdWU7bnVsbCE9Zj9mYihhLCEhZC5tdWx0aXBsZSxmLCExKTpudWxsIT1kLmRlZmF1bHRWYWx1ZSYmZmIoYSwhIWQubXVsdGlwbGUsZC5kZWZhdWx0VmFsdWUsXG4hMCk7YnJlYWs7ZGVmYXVsdDpcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5vbkNsaWNrJiYoYS5vbmNsaWNrPUJmKX1zd2l0Y2goYyl7Y2FzZSBcImJ1dHRvblwiOmNhc2UgXCJpbnB1dFwiOmNhc2UgXCJzZWxlY3RcIjpjYXNlIFwidGV4dGFyZWFcIjpkPSEhZC5hdXRvRm9jdXM7YnJlYWsgYTtjYXNlIFwiaW1nXCI6ZD0hMDticmVhayBhO2RlZmF1bHQ6ZD0hMX19ZCYmKGIuZmxhZ3N8PTQpfW51bGwhPT1iLnJlZiYmKGIuZmxhZ3N8PTUxMixiLmZsYWdzfD0yMDk3MTUyKX1TKGIpO3JldHVybiBudWxsO2Nhc2UgNjppZihhJiZudWxsIT1iLnN0YXRlTm9kZSlDaihhLGIsYS5tZW1vaXplZFByb3BzLGQpO2Vsc2V7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBkJiZudWxsPT09Yi5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IocCgxNjYpKTtjPXhoKHdoLmN1cnJlbnQpO3hoKHVoLmN1cnJlbnQpO2lmKEdnKGIpKXtkPWIuc3RhdGVOb2RlO2M9Yi5tZW1vaXplZFByb3BzO2RbT2ZdPWI7aWYoZj1kLm5vZGVWYWx1ZSE9PWMpaWYoYT1cbnhnLG51bGwhPT1hKXN3aXRjaChhLnRhZyl7Y2FzZSAzOkFmKGQubm9kZVZhbHVlLGMsMCE9PShhLm1vZGUmMSkpO2JyZWFrO2Nhc2UgNTohMCE9PWEubWVtb2l6ZWRQcm9wcy5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcmJkFmKGQubm9kZVZhbHVlLGMsMCE9PShhLm1vZGUmMSkpfWYmJihiLmZsYWdzfD00KX1lbHNlIGQ9KDk9PT1jLm5vZGVUeXBlP2M6Yy5vd25lckRvY3VtZW50KS5jcmVhdGVUZXh0Tm9kZShkKSxkW09mXT1iLGIuc3RhdGVOb2RlPWR9UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDEzOkUoTCk7ZD1iLm1lbW9pemVkU3RhdGU7aWYobnVsbD09PWF8fG51bGwhPT1hLm1lbW9pemVkU3RhdGUmJm51bGwhPT1hLm1lbW9pemVkU3RhdGUuZGVoeWRyYXRlZCl7aWYoSSYmbnVsbCE9PXlnJiYwIT09KGIubW9kZSYxKSYmMD09PShiLmZsYWdzJjEyOCkpSGcoKSxJZygpLGIuZmxhZ3N8PTk4NTYwLGY9ITE7ZWxzZSBpZihmPUdnKGIpLG51bGwhPT1kJiZudWxsIT09ZC5kZWh5ZHJhdGVkKXtpZihudWxsPT09XG5hKXtpZighZil0aHJvdyBFcnJvcihwKDMxOCkpO2Y9Yi5tZW1vaXplZFN0YXRlO2Y9bnVsbCE9PWY/Zi5kZWh5ZHJhdGVkOm51bGw7aWYoIWYpdGhyb3cgRXJyb3IocCgzMTcpKTtmW09mXT1ifWVsc2UgSWcoKSwwPT09KGIuZmxhZ3MmMTI4KSYmKGIubWVtb2l6ZWRTdGF0ZT1udWxsKSxiLmZsYWdzfD00O1MoYik7Zj0hMX1lbHNlIG51bGwhPT16ZyYmKEZqKHpnKSx6Zz1udWxsKSxmPSEwO2lmKCFmKXJldHVybiBiLmZsYWdzJjY1NTM2P2I6bnVsbH1pZigwIT09KGIuZmxhZ3MmMTI4KSlyZXR1cm4gYi5sYW5lcz1jLGI7ZD1udWxsIT09ZDtkIT09KG51bGwhPT1hJiZudWxsIT09YS5tZW1vaXplZFN0YXRlKSYmZCYmKGIuY2hpbGQuZmxhZ3N8PTgxOTIsMCE9PShiLm1vZGUmMSkmJihudWxsPT09YXx8MCE9PShMLmN1cnJlbnQmMSk/MD09PVQmJihUPTMpOnRqKCkpKTtudWxsIT09Yi51cGRhdGVRdWV1ZSYmKGIuZmxhZ3N8PTQpO1MoYik7cmV0dXJuIG51bGw7Y2FzZSA0OnJldHVybiB6aCgpLFxuQWooYSxiKSxudWxsPT09YSYmc2YoYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksUyhiKSxudWxsO2Nhc2UgMTA6cmV0dXJuIGFoKGIudHlwZS5fY29udGV4dCksUyhiKSxudWxsO2Nhc2UgMTc6cmV0dXJuIFpmKGIudHlwZSkmJiRmKCksUyhiKSxudWxsO2Nhc2UgMTk6RShMKTtmPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsPT09ZilyZXR1cm4gUyhiKSxudWxsO2Q9MCE9PShiLmZsYWdzJjEyOCk7Zz1mLnJlbmRlcmluZztpZihudWxsPT09ZylpZihkKURqKGYsITEpO2Vsc2V7aWYoMCE9PVR8fG51bGwhPT1hJiYwIT09KGEuZmxhZ3MmMTI4KSlmb3IoYT1iLmNoaWxkO251bGwhPT1hOyl7Zz1DaChhKTtpZihudWxsIT09Zyl7Yi5mbGFnc3w9MTI4O0RqKGYsITEpO2Q9Zy51cGRhdGVRdWV1ZTtudWxsIT09ZCYmKGIudXBkYXRlUXVldWU9ZCxiLmZsYWdzfD00KTtiLnN1YnRyZWVGbGFncz0wO2Q9Yztmb3IoYz1iLmNoaWxkO251bGwhPT1jOylmPWMsYT1kLGYuZmxhZ3MmPTE0NjgwMDY2LFxuZz1mLmFsdGVybmF0ZSxudWxsPT09Zz8oZi5jaGlsZExhbmVzPTAsZi5sYW5lcz1hLGYuY2hpbGQ9bnVsbCxmLnN1YnRyZWVGbGFncz0wLGYubWVtb2l6ZWRQcm9wcz1udWxsLGYubWVtb2l6ZWRTdGF0ZT1udWxsLGYudXBkYXRlUXVldWU9bnVsbCxmLmRlcGVuZGVuY2llcz1udWxsLGYuc3RhdGVOb2RlPW51bGwpOihmLmNoaWxkTGFuZXM9Zy5jaGlsZExhbmVzLGYubGFuZXM9Zy5sYW5lcyxmLmNoaWxkPWcuY2hpbGQsZi5zdWJ0cmVlRmxhZ3M9MCxmLmRlbGV0aW9ucz1udWxsLGYubWVtb2l6ZWRQcm9wcz1nLm1lbW9pemVkUHJvcHMsZi5tZW1vaXplZFN0YXRlPWcubWVtb2l6ZWRTdGF0ZSxmLnVwZGF0ZVF1ZXVlPWcudXBkYXRlUXVldWUsZi50eXBlPWcudHlwZSxhPWcuZGVwZW5kZW5jaWVzLGYuZGVwZW5kZW5jaWVzPW51bGw9PT1hP251bGw6e2xhbmVzOmEubGFuZXMsZmlyc3RDb250ZXh0OmEuZmlyc3RDb250ZXh0fSksYz1jLnNpYmxpbmc7RyhMLEwuY3VycmVudCYxfDIpO3JldHVybiBiLmNoaWxkfWE9XG5hLnNpYmxpbmd9bnVsbCE9PWYudGFpbCYmQigpPkdqJiYoYi5mbGFnc3w9MTI4LGQ9ITAsRGooZiwhMSksYi5sYW5lcz00MTk0MzA0KX1lbHNle2lmKCFkKWlmKGE9Q2goZyksbnVsbCE9PWEpe2lmKGIuZmxhZ3N8PTEyOCxkPSEwLGM9YS51cGRhdGVRdWV1ZSxudWxsIT09YyYmKGIudXBkYXRlUXVldWU9YyxiLmZsYWdzfD00KSxEaihmLCEwKSxudWxsPT09Zi50YWlsJiZcImhpZGRlblwiPT09Zi50YWlsTW9kZSYmIWcuYWx0ZXJuYXRlJiYhSSlyZXR1cm4gUyhiKSxudWxsfWVsc2UgMipCKCktZi5yZW5kZXJpbmdTdGFydFRpbWU+R2omJjEwNzM3NDE4MjQhPT1jJiYoYi5mbGFnc3w9MTI4LGQ9ITAsRGooZiwhMSksYi5sYW5lcz00MTk0MzA0KTtmLmlzQmFja3dhcmRzPyhnLnNpYmxpbmc9Yi5jaGlsZCxiLmNoaWxkPWcpOihjPWYubGFzdCxudWxsIT09Yz9jLnNpYmxpbmc9ZzpiLmNoaWxkPWcsZi5sYXN0PWcpfWlmKG51bGwhPT1mLnRhaWwpcmV0dXJuIGI9Zi50YWlsLGYucmVuZGVyaW5nPVxuYixmLnRhaWw9Yi5zaWJsaW5nLGYucmVuZGVyaW5nU3RhcnRUaW1lPUIoKSxiLnNpYmxpbmc9bnVsbCxjPUwuY3VycmVudCxHKEwsZD9jJjF8MjpjJjEpLGI7UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIEhqKCksZD1udWxsIT09Yi5tZW1vaXplZFN0YXRlLG51bGwhPT1hJiZudWxsIT09YS5tZW1vaXplZFN0YXRlIT09ZCYmKGIuZmxhZ3N8PTgxOTIpLGQmJjAhPT0oYi5tb2RlJjEpPzAhPT0oZmomMTA3Mzc0MTgyNCkmJihTKGIpLGIuc3VidHJlZUZsYWdzJjYmJihiLmZsYWdzfD04MTkyKSk6UyhiKSxudWxsO2Nhc2UgMjQ6cmV0dXJuIG51bGw7Y2FzZSAyNTpyZXR1cm4gbnVsbH10aHJvdyBFcnJvcihwKDE1NixiLnRhZykpO31cbmZ1bmN0aW9uIElqKGEsYil7d2coYik7c3dpdGNoKGIudGFnKXtjYXNlIDE6cmV0dXJuIFpmKGIudHlwZSkmJiRmKCksYT1iLmZsYWdzLGEmNjU1MzY/KGIuZmxhZ3M9YSYtNjU1Mzd8MTI4LGIpOm51bGw7Y2FzZSAzOnJldHVybiB6aCgpLEUoV2YpLEUoSCksRWgoKSxhPWIuZmxhZ3MsMCE9PShhJjY1NTM2KSYmMD09PShhJjEyOCk/KGIuZmxhZ3M9YSYtNjU1Mzd8MTI4LGIpOm51bGw7Y2FzZSA1OnJldHVybiBCaChiKSxudWxsO2Nhc2UgMTM6RShMKTthPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09YSYmbnVsbCE9PWEuZGVoeWRyYXRlZCl7aWYobnVsbD09PWIuYWx0ZXJuYXRlKXRocm93IEVycm9yKHAoMzQwKSk7SWcoKX1hPWIuZmxhZ3M7cmV0dXJuIGEmNjU1MzY/KGIuZmxhZ3M9YSYtNjU1Mzd8MTI4LGIpOm51bGw7Y2FzZSAxOTpyZXR1cm4gRShMKSxudWxsO2Nhc2UgNDpyZXR1cm4gemgoKSxudWxsO2Nhc2UgMTA6cmV0dXJuIGFoKGIudHlwZS5fY29udGV4dCksbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIEhqKCksXG5udWxsO2Nhc2UgMjQ6cmV0dXJuIG51bGw7ZGVmYXVsdDpyZXR1cm4gbnVsbH19dmFyIEpqPSExLFU9ITEsS2o9XCJmdW5jdGlvblwiPT09dHlwZW9mIFdlYWtTZXQ/V2Vha1NldDpTZXQsVj1udWxsO2Z1bmN0aW9uIExqKGEsYil7dmFyIGM9YS5yZWY7aWYobnVsbCE9PWMpaWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGMpdHJ5e2MobnVsbCl9Y2F0Y2goZCl7VyhhLGIsZCl9ZWxzZSBjLmN1cnJlbnQ9bnVsbH1mdW5jdGlvbiBNaihhLGIsYyl7dHJ5e2MoKX1jYXRjaChkKXtXKGEsYixkKX19dmFyIE5qPSExO1xuZnVuY3Rpb24gT2ooYSxiKXtDZj1kZDthPU1lKCk7aWYoTmUoYSkpe2lmKFwic2VsZWN0aW9uU3RhcnRcImluIGEpdmFyIGM9e3N0YXJ0OmEuc2VsZWN0aW9uU3RhcnQsZW5kOmEuc2VsZWN0aW9uRW5kfTtlbHNlIGE6e2M9KGM9YS5vd25lckRvY3VtZW50KSYmYy5kZWZhdWx0Vmlld3x8d2luZG93O3ZhciBkPWMuZ2V0U2VsZWN0aW9uJiZjLmdldFNlbGVjdGlvbigpO2lmKGQmJjAhPT1kLnJhbmdlQ291bnQpe2M9ZC5hbmNob3JOb2RlO3ZhciBlPWQuYW5jaG9yT2Zmc2V0LGY9ZC5mb2N1c05vZGU7ZD1kLmZvY3VzT2Zmc2V0O3RyeXtjLm5vZGVUeXBlLGYubm9kZVR5cGV9Y2F0Y2goRil7Yz1udWxsO2JyZWFrIGF9dmFyIGc9MCxoPS0xLGs9LTEsbD0wLG09MCxxPWEscj1udWxsO2I6Zm9yKDs7KXtmb3IodmFyIHk7Oyl7cSE9PWN8fDAhPT1lJiYzIT09cS5ub2RlVHlwZXx8KGg9ZytlKTtxIT09Znx8MCE9PWQmJjMhPT1xLm5vZGVUeXBlfHwoaz1nK2QpOzM9PT1xLm5vZGVUeXBlJiYoZys9XG5xLm5vZGVWYWx1ZS5sZW5ndGgpO2lmKG51bGw9PT0oeT1xLmZpcnN0Q2hpbGQpKWJyZWFrO3I9cTtxPXl9Zm9yKDs7KXtpZihxPT09YSlicmVhayBiO3I9PT1jJiYrK2w9PT1lJiYoaD1nKTtyPT09ZiYmKyttPT09ZCYmKGs9Zyk7aWYobnVsbCE9PSh5PXEubmV4dFNpYmxpbmcpKWJyZWFrO3E9cjtyPXEucGFyZW50Tm9kZX1xPXl9Yz0tMT09PWh8fC0xPT09az9udWxsOntzdGFydDpoLGVuZDprfX1lbHNlIGM9bnVsbH1jPWN8fHtzdGFydDowLGVuZDowfX1lbHNlIGM9bnVsbDtEZj17Zm9jdXNlZEVsZW06YSxzZWxlY3Rpb25SYW5nZTpjfTtkZD0hMTtmb3IoVj1iO251bGwhPT1WOylpZihiPVYsYT1iLmNoaWxkLDAhPT0oYi5zdWJ0cmVlRmxhZ3MmMTAyOCkmJm51bGwhPT1hKWEucmV0dXJuPWIsVj1hO2Vsc2UgZm9yKDtudWxsIT09Vjspe2I9Vjt0cnl7dmFyIG49Yi5hbHRlcm5hdGU7aWYoMCE9PShiLmZsYWdzJjEwMjQpKXN3aXRjaChiLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpicmVhaztcbmNhc2UgMTppZihudWxsIT09bil7dmFyIHQ9bi5tZW1vaXplZFByb3BzLEo9bi5tZW1vaXplZFN0YXRlLHg9Yi5zdGF0ZU5vZGUsdz14LmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKGIuZWxlbWVudFR5cGU9PT1iLnR5cGU/dDpDaShiLnR5cGUsdCksSik7eC5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZT13fWJyZWFrO2Nhc2UgMzp2YXIgdT1iLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOzE9PT11Lm5vZGVUeXBlP3UudGV4dENvbnRlbnQ9XCJcIjo5PT09dS5ub2RlVHlwZSYmdS5kb2N1bWVudEVsZW1lbnQmJnUucmVtb3ZlQ2hpbGQodS5kb2N1bWVudEVsZW1lbnQpO2JyZWFrO2Nhc2UgNTpjYXNlIDY6Y2FzZSA0OmNhc2UgMTc6YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihwKDE2MykpO319Y2F0Y2goRil7VyhiLGIucmV0dXJuLEYpfWE9Yi5zaWJsaW5nO2lmKG51bGwhPT1hKXthLnJldHVybj1iLnJldHVybjtWPWE7YnJlYWt9Vj1iLnJldHVybn1uPU5qO05qPSExO3JldHVybiBufVxuZnVuY3Rpb24gUGooYSxiLGMpe3ZhciBkPWIudXBkYXRlUXVldWU7ZD1udWxsIT09ZD9kLmxhc3RFZmZlY3Q6bnVsbDtpZihudWxsIT09ZCl7dmFyIGU9ZD1kLm5leHQ7ZG97aWYoKGUudGFnJmEpPT09YSl7dmFyIGY9ZS5kZXN0cm95O2UuZGVzdHJveT12b2lkIDA7dm9pZCAwIT09ZiYmTWooYixjLGYpfWU9ZS5uZXh0fXdoaWxlKGUhPT1kKX19ZnVuY3Rpb24gUWooYSxiKXtiPWIudXBkYXRlUXVldWU7Yj1udWxsIT09Yj9iLmxhc3RFZmZlY3Q6bnVsbDtpZihudWxsIT09Yil7dmFyIGM9Yj1iLm5leHQ7ZG97aWYoKGMudGFnJmEpPT09YSl7dmFyIGQ9Yy5jcmVhdGU7Yy5kZXN0cm95PWQoKX1jPWMubmV4dH13aGlsZShjIT09Yil9fWZ1bmN0aW9uIFJqKGEpe3ZhciBiPWEucmVmO2lmKG51bGwhPT1iKXt2YXIgYz1hLnN0YXRlTm9kZTtzd2l0Y2goYS50YWcpe2Nhc2UgNTphPWM7YnJlYWs7ZGVmYXVsdDphPWN9XCJmdW5jdGlvblwiPT09dHlwZW9mIGI/YihhKTpiLmN1cnJlbnQ9YX19XG5mdW5jdGlvbiBTaihhKXt2YXIgYj1hLmFsdGVybmF0ZTtudWxsIT09YiYmKGEuYWx0ZXJuYXRlPW51bGwsU2ooYikpO2EuY2hpbGQ9bnVsbDthLmRlbGV0aW9ucz1udWxsO2Euc2libGluZz1udWxsOzU9PT1hLnRhZyYmKGI9YS5zdGF0ZU5vZGUsbnVsbCE9PWImJihkZWxldGUgYltPZl0sZGVsZXRlIGJbUGZdLGRlbGV0ZSBiW29mXSxkZWxldGUgYltRZl0sZGVsZXRlIGJbUmZdKSk7YS5zdGF0ZU5vZGU9bnVsbDthLnJldHVybj1udWxsO2EuZGVwZW5kZW5jaWVzPW51bGw7YS5tZW1vaXplZFByb3BzPW51bGw7YS5tZW1vaXplZFN0YXRlPW51bGw7YS5wZW5kaW5nUHJvcHM9bnVsbDthLnN0YXRlTm9kZT1udWxsO2EudXBkYXRlUXVldWU9bnVsbH1mdW5jdGlvbiBUaihhKXtyZXR1cm4gNT09PWEudGFnfHwzPT09YS50YWd8fDQ9PT1hLnRhZ31cbmZ1bmN0aW9uIFVqKGEpe2E6Zm9yKDs7KXtmb3IoO251bGw9PT1hLnNpYmxpbmc7KXtpZihudWxsPT09YS5yZXR1cm58fFRqKGEucmV0dXJuKSlyZXR1cm4gbnVsbDthPWEucmV0dXJufWEuc2libGluZy5yZXR1cm49YS5yZXR1cm47Zm9yKGE9YS5zaWJsaW5nOzUhPT1hLnRhZyYmNiE9PWEudGFnJiYxOCE9PWEudGFnOyl7aWYoYS5mbGFncyYyKWNvbnRpbnVlIGE7aWYobnVsbD09PWEuY2hpbGR8fDQ9PT1hLnRhZyljb250aW51ZSBhO2Vsc2UgYS5jaGlsZC5yZXR1cm49YSxhPWEuY2hpbGR9aWYoIShhLmZsYWdzJjIpKXJldHVybiBhLnN0YXRlTm9kZX19XG5mdW5jdGlvbiBWaihhLGIsYyl7dmFyIGQ9YS50YWc7aWYoNT09PWR8fDY9PT1kKWE9YS5zdGF0ZU5vZGUsYj84PT09Yy5ub2RlVHlwZT9jLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsYik6Yy5pbnNlcnRCZWZvcmUoYSxiKTooOD09PWMubm9kZVR5cGU/KGI9Yy5wYXJlbnROb2RlLGIuaW5zZXJ0QmVmb3JlKGEsYykpOihiPWMsYi5hcHBlbmRDaGlsZChhKSksYz1jLl9yZWFjdFJvb3RDb250YWluZXIsbnVsbCE9PWMmJnZvaWQgMCE9PWN8fG51bGwhPT1iLm9uY2xpY2t8fChiLm9uY2xpY2s9QmYpKTtlbHNlIGlmKDQhPT1kJiYoYT1hLmNoaWxkLG51bGwhPT1hKSlmb3IoVmooYSxiLGMpLGE9YS5zaWJsaW5nO251bGwhPT1hOylWaihhLGIsYyksYT1hLnNpYmxpbmd9XG5mdW5jdGlvbiBXaihhLGIsYyl7dmFyIGQ9YS50YWc7aWYoNT09PWR8fDY9PT1kKWE9YS5zdGF0ZU5vZGUsYj9jLmluc2VydEJlZm9yZShhLGIpOmMuYXBwZW5kQ2hpbGQoYSk7ZWxzZSBpZig0IT09ZCYmKGE9YS5jaGlsZCxudWxsIT09YSkpZm9yKFdqKGEsYixjKSxhPWEuc2libGluZztudWxsIT09YTspV2ooYSxiLGMpLGE9YS5zaWJsaW5nfXZhciBYPW51bGwsWGo9ITE7ZnVuY3Rpb24gWWooYSxiLGMpe2ZvcihjPWMuY2hpbGQ7bnVsbCE9PWM7KVpqKGEsYixjKSxjPWMuc2libGluZ31cbmZ1bmN0aW9uIFpqKGEsYixjKXtpZihsYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGxjLm9uQ29tbWl0RmliZXJVbm1vdW50KXRyeXtsYy5vbkNvbW1pdEZpYmVyVW5tb3VudChrYyxjKX1jYXRjaChoKXt9c3dpdGNoKGMudGFnKXtjYXNlIDU6VXx8TGooYyxiKTtjYXNlIDY6dmFyIGQ9WCxlPVhqO1g9bnVsbDtZaihhLGIsYyk7WD1kO1hqPWU7bnVsbCE9PVgmJihYaj8oYT1YLGM9Yy5zdGF0ZU5vZGUsOD09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpOmEucmVtb3ZlQ2hpbGQoYykpOlgucmVtb3ZlQ2hpbGQoYy5zdGF0ZU5vZGUpKTticmVhaztjYXNlIDE4Om51bGwhPT1YJiYoWGo/KGE9WCxjPWMuc3RhdGVOb2RlLDg9PT1hLm5vZGVUeXBlP0tmKGEucGFyZW50Tm9kZSxjKToxPT09YS5ub2RlVHlwZSYmS2YoYSxjKSxiZChhKSk6S2YoWCxjLnN0YXRlTm9kZSkpO2JyZWFrO2Nhc2UgNDpkPVg7ZT1YajtYPWMuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87WGo9ITA7XG5ZaihhLGIsYyk7WD1kO1hqPWU7YnJlYWs7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OmlmKCFVJiYoZD1jLnVwZGF0ZVF1ZXVlLG51bGwhPT1kJiYoZD1kLmxhc3RFZmZlY3QsbnVsbCE9PWQpKSl7ZT1kPWQubmV4dDtkb3t2YXIgZj1lLGc9Zi5kZXN0cm95O2Y9Zi50YWc7dm9pZCAwIT09ZyYmKDAhPT0oZiYyKT9NaihjLGIsZyk6MCE9PShmJjQpJiZNaihjLGIsZykpO2U9ZS5uZXh0fXdoaWxlKGUhPT1kKX1ZaihhLGIsYyk7YnJlYWs7Y2FzZSAxOmlmKCFVJiYoTGooYyxiKSxkPWMuc3RhdGVOb2RlLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLmNvbXBvbmVudFdpbGxVbm1vdW50KSl0cnl7ZC5wcm9wcz1jLm1lbW9pemVkUHJvcHMsZC5zdGF0ZT1jLm1lbW9pemVkU3RhdGUsZC5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKGgpe1coYyxiLGgpfVlqKGEsYixjKTticmVhaztjYXNlIDIxOllqKGEsYixjKTticmVhaztjYXNlIDIyOmMubW9kZSYxPyhVPShkPVUpfHxudWxsIT09XG5jLm1lbW9pemVkU3RhdGUsWWooYSxiLGMpLFU9ZCk6WWooYSxiLGMpO2JyZWFrO2RlZmF1bHQ6WWooYSxiLGMpfX1mdW5jdGlvbiBhayhhKXt2YXIgYj1hLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1iKXthLnVwZGF0ZVF1ZXVlPW51bGw7dmFyIGM9YS5zdGF0ZU5vZGU7bnVsbD09PWMmJihjPWEuc3RhdGVOb2RlPW5ldyBLaik7Yi5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBkPWJrLmJpbmQobnVsbCxhLGIpO2MuaGFzKGIpfHwoYy5hZGQoYiksYi50aGVuKGQsZCkpfSl9fVxuZnVuY3Rpb24gY2soYSxiKXt2YXIgYz1iLmRlbGV0aW9ucztpZihudWxsIT09Yylmb3IodmFyIGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9Y1tkXTt0cnl7dmFyIGY9YSxnPWIsaD1nO2E6Zm9yKDtudWxsIT09aDspe3N3aXRjaChoLnRhZyl7Y2FzZSA1Olg9aC5zdGF0ZU5vZGU7WGo9ITE7YnJlYWsgYTtjYXNlIDM6WD1oLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO1hqPSEwO2JyZWFrIGE7Y2FzZSA0Olg9aC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztYaj0hMDticmVhayBhfWg9aC5yZXR1cm59aWYobnVsbD09PVgpdGhyb3cgRXJyb3IocCgxNjApKTtaaihmLGcsZSk7WD1udWxsO1hqPSExO3ZhciBrPWUuYWx0ZXJuYXRlO251bGwhPT1rJiYoay5yZXR1cm49bnVsbCk7ZS5yZXR1cm49bnVsbH1jYXRjaChsKXtXKGUsYixsKX19aWYoYi5zdWJ0cmVlRmxhZ3MmMTI4NTQpZm9yKGI9Yi5jaGlsZDtudWxsIT09YjspZGsoYixhKSxiPWIuc2libGluZ31cbmZ1bmN0aW9uIGRrKGEsYil7dmFyIGM9YS5hbHRlcm5hdGUsZD1hLmZsYWdzO3N3aXRjaChhLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OmNrKGIsYSk7ZWsoYSk7aWYoZCY0KXt0cnl7UGooMyxhLGEucmV0dXJuKSxRaigzLGEpfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX10cnl7UGooNSxhLGEucmV0dXJuKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWJyZWFrO2Nhc2UgMTpjayhiLGEpO2VrKGEpO2QmNTEyJiZudWxsIT09YyYmTGooYyxjLnJldHVybik7YnJlYWs7Y2FzZSA1OmNrKGIsYSk7ZWsoYSk7ZCY1MTImJm51bGwhPT1jJiZMaihjLGMucmV0dXJuKTtpZihhLmZsYWdzJjMyKXt2YXIgZT1hLnN0YXRlTm9kZTt0cnl7b2IoZSxcIlwiKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWlmKGQmNCYmKGU9YS5zdGF0ZU5vZGUsbnVsbCE9ZSkpe3ZhciBmPWEubWVtb2l6ZWRQcm9wcyxnPW51bGwhPT1jP2MubWVtb2l6ZWRQcm9wczpmLGg9YS50eXBlLGs9YS51cGRhdGVRdWV1ZTtcbmEudXBkYXRlUXVldWU9bnVsbDtpZihudWxsIT09ayl0cnl7XCJpbnB1dFwiPT09aCYmXCJyYWRpb1wiPT09Zi50eXBlJiZudWxsIT1mLm5hbWUmJmFiKGUsZik7dmIoaCxnKTt2YXIgbD12YihoLGYpO2ZvcihnPTA7ZzxrLmxlbmd0aDtnKz0yKXt2YXIgbT1rW2ddLHE9a1tnKzFdO1wic3R5bGVcIj09PW0/c2IoZSxxKTpcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PT1tP25iKGUscSk6XCJjaGlsZHJlblwiPT09bT9vYihlLHEpOnRhKGUsbSxxLGwpfXN3aXRjaChoKXtjYXNlIFwiaW5wdXRcIjpiYihlLGYpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmliKGUsZik7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOnZhciByPWUuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZTtlLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU9ISFmLm11bHRpcGxlO3ZhciB5PWYudmFsdWU7bnVsbCE9eT9mYihlLCEhZi5tdWx0aXBsZSx5LCExKTpyIT09ISFmLm11bHRpcGxlJiYobnVsbCE9Zi5kZWZhdWx0VmFsdWU/ZmIoZSwhIWYubXVsdGlwbGUsXG5mLmRlZmF1bHRWYWx1ZSwhMCk6ZmIoZSwhIWYubXVsdGlwbGUsZi5tdWx0aXBsZT9bXTpcIlwiLCExKSl9ZVtQZl09Zn1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWJyZWFrO2Nhc2UgNjpjayhiLGEpO2VrKGEpO2lmKGQmNCl7aWYobnVsbD09PWEuc3RhdGVOb2RlKXRocm93IEVycm9yKHAoMTYyKSk7ZT1hLnN0YXRlTm9kZTtmPWEubWVtb2l6ZWRQcm9wczt0cnl7ZS5ub2RlVmFsdWU9Zn1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWJyZWFrO2Nhc2UgMzpjayhiLGEpO2VrKGEpO2lmKGQmNCYmbnVsbCE9PWMmJmMubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpdHJ5e2JkKGIuY29udGFpbmVySW5mbyl9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfWJyZWFrO2Nhc2UgNDpjayhiLGEpO2VrKGEpO2JyZWFrO2Nhc2UgMTM6Y2soYixhKTtlayhhKTtlPWEuY2hpbGQ7ZS5mbGFncyY4MTkyJiYoZj1udWxsIT09ZS5tZW1vaXplZFN0YXRlLGUuc3RhdGVOb2RlLmlzSGlkZGVuPWYsIWZ8fFxubnVsbCE9PWUuYWx0ZXJuYXRlJiZudWxsIT09ZS5hbHRlcm5hdGUubWVtb2l6ZWRTdGF0ZXx8KGZrPUIoKSkpO2QmNCYmYWsoYSk7YnJlYWs7Y2FzZSAyMjptPW51bGwhPT1jJiZudWxsIT09Yy5tZW1vaXplZFN0YXRlO2EubW9kZSYxPyhVPShsPVUpfHxtLGNrKGIsYSksVT1sKTpjayhiLGEpO2VrKGEpO2lmKGQmODE5Mil7bD1udWxsIT09YS5tZW1vaXplZFN0YXRlO2lmKChhLnN0YXRlTm9kZS5pc0hpZGRlbj1sKSYmIW0mJjAhPT0oYS5tb2RlJjEpKWZvcihWPWEsbT1hLmNoaWxkO251bGwhPT1tOyl7Zm9yKHE9Vj1tO251bGwhPT1WOyl7cj1WO3k9ci5jaGlsZDtzd2l0Y2goci50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTpQaig0LHIsci5yZXR1cm4pO2JyZWFrO2Nhc2UgMTpMaihyLHIucmV0dXJuKTt2YXIgbj1yLnN0YXRlTm9kZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2Ygbi5jb21wb25lbnRXaWxsVW5tb3VudCl7ZD1yO2M9ci5yZXR1cm47dHJ5e2I9ZCxuLnByb3BzPVxuYi5tZW1vaXplZFByb3BzLG4uc3RhdGU9Yi5tZW1vaXplZFN0YXRlLG4uY29tcG9uZW50V2lsbFVubW91bnQoKX1jYXRjaCh0KXtXKGQsYyx0KX19YnJlYWs7Y2FzZSA1OkxqKHIsci5yZXR1cm4pO2JyZWFrO2Nhc2UgMjI6aWYobnVsbCE9PXIubWVtb2l6ZWRTdGF0ZSl7Z2socSk7Y29udGludWV9fW51bGwhPT15Pyh5LnJldHVybj1yLFY9eSk6Z2socSl9bT1tLnNpYmxpbmd9YTpmb3IobT1udWxsLHE9YTs7KXtpZig1PT09cS50YWcpe2lmKG51bGw9PT1tKXttPXE7dHJ5e2U9cS5zdGF0ZU5vZGUsbD8oZj1lLnN0eWxlLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBmLnNldFByb3BlcnR5P2Yuc2V0UHJvcGVydHkoXCJkaXNwbGF5XCIsXCJub25lXCIsXCJpbXBvcnRhbnRcIik6Zi5kaXNwbGF5PVwibm9uZVwiKTooaD1xLnN0YXRlTm9kZSxrPXEubWVtb2l6ZWRQcm9wcy5zdHlsZSxnPXZvaWQgMCE9PWsmJm51bGwhPT1rJiZrLmhhc093blByb3BlcnR5KFwiZGlzcGxheVwiKT9rLmRpc3BsYXk6bnVsbCxoLnN0eWxlLmRpc3BsYXk9XG5yYihcImRpc3BsYXlcIixnKSl9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfX19ZWxzZSBpZig2PT09cS50YWcpe2lmKG51bGw9PT1tKXRyeXtxLnN0YXRlTm9kZS5ub2RlVmFsdWU9bD9cIlwiOnEubWVtb2l6ZWRQcm9wc31jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWVsc2UgaWYoKDIyIT09cS50YWcmJjIzIT09cS50YWd8fG51bGw9PT1xLm1lbW9pemVkU3RhdGV8fHE9PT1hKSYmbnVsbCE9PXEuY2hpbGQpe3EuY2hpbGQucmV0dXJuPXE7cT1xLmNoaWxkO2NvbnRpbnVlfWlmKHE9PT1hKWJyZWFrIGE7Zm9yKDtudWxsPT09cS5zaWJsaW5nOyl7aWYobnVsbD09PXEucmV0dXJufHxxLnJldHVybj09PWEpYnJlYWsgYTttPT09cSYmKG09bnVsbCk7cT1xLnJldHVybn1tPT09cSYmKG09bnVsbCk7cS5zaWJsaW5nLnJldHVybj1xLnJldHVybjtxPXEuc2libGluZ319YnJlYWs7Y2FzZSAxOTpjayhiLGEpO2VrKGEpO2QmNCYmYWsoYSk7YnJlYWs7Y2FzZSAyMTpicmVhaztkZWZhdWx0OmNrKGIsXG5hKSxlayhhKX19ZnVuY3Rpb24gZWsoYSl7dmFyIGI9YS5mbGFncztpZihiJjIpe3RyeXthOntmb3IodmFyIGM9YS5yZXR1cm47bnVsbCE9PWM7KXtpZihUaihjKSl7dmFyIGQ9YzticmVhayBhfWM9Yy5yZXR1cm59dGhyb3cgRXJyb3IocCgxNjApKTt9c3dpdGNoKGQudGFnKXtjYXNlIDU6dmFyIGU9ZC5zdGF0ZU5vZGU7ZC5mbGFncyYzMiYmKG9iKGUsXCJcIiksZC5mbGFncyY9LTMzKTt2YXIgZj1VaihhKTtXaihhLGYsZSk7YnJlYWs7Y2FzZSAzOmNhc2UgNDp2YXIgZz1kLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLGg9VWooYSk7VmooYSxoLGcpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IocCgxNjEpKTt9fWNhdGNoKGspe1coYSxhLnJldHVybixrKX1hLmZsYWdzJj0tM31iJjQwOTYmJihhLmZsYWdzJj0tNDA5Nyl9ZnVuY3Rpb24gaGsoYSxiLGMpe1Y9YTtpayhhLGIsYyl9XG5mdW5jdGlvbiBpayhhLGIsYyl7Zm9yKHZhciBkPTAhPT0oYS5tb2RlJjEpO251bGwhPT1WOyl7dmFyIGU9VixmPWUuY2hpbGQ7aWYoMjI9PT1lLnRhZyYmZCl7dmFyIGc9bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZXx8Smo7aWYoIWcpe3ZhciBoPWUuYWx0ZXJuYXRlLGs9bnVsbCE9PWgmJm51bGwhPT1oLm1lbW9pemVkU3RhdGV8fFU7aD1Kajt2YXIgbD1VO0pqPWc7aWYoKFU9aykmJiFsKWZvcihWPWU7bnVsbCE9PVY7KWc9VixrPWcuY2hpbGQsMjI9PT1nLnRhZyYmbnVsbCE9PWcubWVtb2l6ZWRTdGF0ZT9qayhlKTpudWxsIT09az8oay5yZXR1cm49ZyxWPWspOmprKGUpO2Zvcig7bnVsbCE9PWY7KVY9ZixpayhmLGIsYyksZj1mLnNpYmxpbmc7Vj1lO0pqPWg7VT1sfWtrKGEsYixjKX1lbHNlIDAhPT0oZS5zdWJ0cmVlRmxhZ3MmODc3MikmJm51bGwhPT1mPyhmLnJldHVybj1lLFY9Zik6a2soYSxiLGMpfX1cbmZ1bmN0aW9uIGtrKGEpe2Zvcig7bnVsbCE9PVY7KXt2YXIgYj1WO2lmKDAhPT0oYi5mbGFncyY4NzcyKSl7dmFyIGM9Yi5hbHRlcm5hdGU7dHJ5e2lmKDAhPT0oYi5mbGFncyY4NzcyKSlzd2l0Y2goYi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6VXx8UWooNSxiKTticmVhaztjYXNlIDE6dmFyIGQ9Yi5zdGF0ZU5vZGU7aWYoYi5mbGFncyY0JiYhVSlpZihudWxsPT09YylkLmNvbXBvbmVudERpZE1vdW50KCk7ZWxzZXt2YXIgZT1iLmVsZW1lbnRUeXBlPT09Yi50eXBlP2MubWVtb2l6ZWRQcm9wczpDaShiLnR5cGUsYy5tZW1vaXplZFByb3BzKTtkLmNvbXBvbmVudERpZFVwZGF0ZShlLGMubWVtb2l6ZWRTdGF0ZSxkLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlKX12YXIgZj1iLnVwZGF0ZVF1ZXVlO251bGwhPT1mJiZzaChiLGYsZCk7YnJlYWs7Y2FzZSAzOnZhciBnPWIudXBkYXRlUXVldWU7aWYobnVsbCE9PWcpe2M9bnVsbDtpZihudWxsIT09Yi5jaGlsZClzd2l0Y2goYi5jaGlsZC50YWcpe2Nhc2UgNTpjPVxuYi5jaGlsZC5zdGF0ZU5vZGU7YnJlYWs7Y2FzZSAxOmM9Yi5jaGlsZC5zdGF0ZU5vZGV9c2goYixnLGMpfWJyZWFrO2Nhc2UgNTp2YXIgaD1iLnN0YXRlTm9kZTtpZihudWxsPT09YyYmYi5mbGFncyY0KXtjPWg7dmFyIGs9Yi5tZW1vaXplZFByb3BzO3N3aXRjaChiLnR5cGUpe2Nhc2UgXCJidXR0b25cIjpjYXNlIFwiaW5wdXRcIjpjYXNlIFwic2VsZWN0XCI6Y2FzZSBcInRleHRhcmVhXCI6ay5hdXRvRm9jdXMmJmMuZm9jdXMoKTticmVhaztjYXNlIFwiaW1nXCI6ay5zcmMmJihjLnNyYz1rLnNyYyl9fWJyZWFrO2Nhc2UgNjpicmVhaztjYXNlIDQ6YnJlYWs7Y2FzZSAxMjpicmVhaztjYXNlIDEzOmlmKG51bGw9PT1iLm1lbW9pemVkU3RhdGUpe3ZhciBsPWIuYWx0ZXJuYXRlO2lmKG51bGwhPT1sKXt2YXIgbT1sLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PW0pe3ZhciBxPW0uZGVoeWRyYXRlZDtudWxsIT09cSYmYmQocSl9fX1icmVhaztjYXNlIDE5OmNhc2UgMTc6Y2FzZSAyMTpjYXNlIDIyOmNhc2UgMjM6Y2FzZSAyNTpicmVhaztcbmRlZmF1bHQ6dGhyb3cgRXJyb3IocCgxNjMpKTt9VXx8Yi5mbGFncyY1MTImJlJqKGIpfWNhdGNoKHIpe1coYixiLnJldHVybixyKX19aWYoYj09PWEpe1Y9bnVsbDticmVha31jPWIuc2libGluZztpZihudWxsIT09Yyl7Yy5yZXR1cm49Yi5yZXR1cm47Vj1jO2JyZWFrfVY9Yi5yZXR1cm59fWZ1bmN0aW9uIGdrKGEpe2Zvcig7bnVsbCE9PVY7KXt2YXIgYj1WO2lmKGI9PT1hKXtWPW51bGw7YnJlYWt9dmFyIGM9Yi5zaWJsaW5nO2lmKG51bGwhPT1jKXtjLnJldHVybj1iLnJldHVybjtWPWM7YnJlYWt9Vj1iLnJldHVybn19XG5mdW5jdGlvbiBqayhhKXtmb3IoO251bGwhPT1WOyl7dmFyIGI9Vjt0cnl7c3dpdGNoKGIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OnZhciBjPWIucmV0dXJuO3RyeXtRaig0LGIpfWNhdGNoKGspe1coYixjLGspfWJyZWFrO2Nhc2UgMTp2YXIgZD1iLnN0YXRlTm9kZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZC5jb21wb25lbnREaWRNb3VudCl7dmFyIGU9Yi5yZXR1cm47dHJ5e2QuY29tcG9uZW50RGlkTW91bnQoKX1jYXRjaChrKXtXKGIsZSxrKX19dmFyIGY9Yi5yZXR1cm47dHJ5e1JqKGIpfWNhdGNoKGspe1coYixmLGspfWJyZWFrO2Nhc2UgNTp2YXIgZz1iLnJldHVybjt0cnl7UmooYil9Y2F0Y2goayl7VyhiLGcsayl9fX1jYXRjaChrKXtXKGIsYi5yZXR1cm4sayl9aWYoYj09PWEpe1Y9bnVsbDticmVha312YXIgaD1iLnNpYmxpbmc7aWYobnVsbCE9PWgpe2gucmV0dXJuPWIucmV0dXJuO1Y9aDticmVha31WPWIucmV0dXJufX1cbnZhciBsaz1NYXRoLmNlaWwsbWs9dWEuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixuaz11YS5SZWFjdEN1cnJlbnRPd25lcixvaz11YS5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxLPTAsUT1udWxsLFk9bnVsbCxaPTAsZmo9MCxlaj1VZigwKSxUPTAscGs9bnVsbCxyaD0wLHFrPTAscms9MCxzaz1udWxsLHRrPW51bGwsZms9MCxHaj1JbmZpbml0eSx1az1udWxsLE9pPSExLFBpPW51bGwsUmk9bnVsbCx2az0hMSx3az1udWxsLHhrPTAseWs9MCx6az1udWxsLEFrPS0xLEJrPTA7ZnVuY3Rpb24gUigpe3JldHVybiAwIT09KEsmNik/QigpOi0xIT09QWs/QWs6QWs9QigpfVxuZnVuY3Rpb24geWkoYSl7aWYoMD09PShhLm1vZGUmMSkpcmV0dXJuIDE7aWYoMCE9PShLJjIpJiYwIT09WilyZXR1cm4gWiYtWjtpZihudWxsIT09S2cudHJhbnNpdGlvbilyZXR1cm4gMD09PUJrJiYoQms9eWMoKSksQms7YT1DO2lmKDAhPT1hKXJldHVybiBhO2E9d2luZG93LmV2ZW50O2E9dm9pZCAwPT09YT8xNjpqZChhLnR5cGUpO3JldHVybiBhfWZ1bmN0aW9uIGdpKGEsYixjLGQpe2lmKDUwPHlrKXRocm93IHlrPTAsems9bnVsbCxFcnJvcihwKDE4NSkpO0FjKGEsYyxkKTtpZigwPT09KEsmMil8fGEhPT1RKWE9PT1RJiYoMD09PShLJjIpJiYocWt8PWMpLDQ9PT1UJiZDayhhLFopKSxEayhhLGQpLDE9PT1jJiYwPT09SyYmMD09PShiLm1vZGUmMSkmJihHaj1CKCkrNTAwLGZnJiZqZygpKX1cbmZ1bmN0aW9uIERrKGEsYil7dmFyIGM9YS5jYWxsYmFja05vZGU7d2MoYSxiKTt2YXIgZD11YyhhLGE9PT1RP1o6MCk7aWYoMD09PWQpbnVsbCE9PWMmJmJjKGMpLGEuY2FsbGJhY2tOb2RlPW51bGwsYS5jYWxsYmFja1ByaW9yaXR5PTA7ZWxzZSBpZihiPWQmLWQsYS5jYWxsYmFja1ByaW9yaXR5IT09Yil7bnVsbCE9YyYmYmMoYyk7aWYoMT09PWIpMD09PWEudGFnP2lnKEVrLmJpbmQobnVsbCxhKSk6aGcoRWsuYmluZChudWxsLGEpKSxKZihmdW5jdGlvbigpezA9PT0oSyY2KSYmamcoKX0pLGM9bnVsbDtlbHNle3N3aXRjaChEYyhkKSl7Y2FzZSAxOmM9ZmM7YnJlYWs7Y2FzZSA0OmM9Z2M7YnJlYWs7Y2FzZSAxNjpjPWhjO2JyZWFrO2Nhc2UgNTM2ODcwOTEyOmM9amM7YnJlYWs7ZGVmYXVsdDpjPWhjfWM9RmsoYyxHay5iaW5kKG51bGwsYSkpfWEuY2FsbGJhY2tQcmlvcml0eT1iO2EuY2FsbGJhY2tOb2RlPWN9fVxuZnVuY3Rpb24gR2soYSxiKXtBaz0tMTtCaz0wO2lmKDAhPT0oSyY2KSl0aHJvdyBFcnJvcihwKDMyNykpO3ZhciBjPWEuY2FsbGJhY2tOb2RlO2lmKEhrKCkmJmEuY2FsbGJhY2tOb2RlIT09YylyZXR1cm4gbnVsbDt2YXIgZD11YyhhLGE9PT1RP1o6MCk7aWYoMD09PWQpcmV0dXJuIG51bGw7aWYoMCE9PShkJjMwKXx8MCE9PShkJmEuZXhwaXJlZExhbmVzKXx8YiliPUlrKGEsZCk7ZWxzZXtiPWQ7dmFyIGU9SztLfD0yO3ZhciBmPUprKCk7aWYoUSE9PWF8fFohPT1iKXVrPW51bGwsR2o9QigpKzUwMCxLayhhLGIpO2RvIHRyeXtMaygpO2JyZWFrfWNhdGNoKGgpe01rKGEsaCl9d2hpbGUoMSk7JGcoKTttay5jdXJyZW50PWY7Sz1lO251bGwhPT1ZP2I9MDooUT1udWxsLFo9MCxiPVQpfWlmKDAhPT1iKXsyPT09YiYmKGU9eGMoYSksMCE9PWUmJihkPWUsYj1OayhhLGUpKSk7aWYoMT09PWIpdGhyb3cgYz1wayxLayhhLDApLENrKGEsZCksRGsoYSxCKCkpLGM7aWYoNj09PWIpQ2soYSxkKTtcbmVsc2V7ZT1hLmN1cnJlbnQuYWx0ZXJuYXRlO2lmKDA9PT0oZCYzMCkmJiFPayhlKSYmKGI9SWsoYSxkKSwyPT09YiYmKGY9eGMoYSksMCE9PWYmJihkPWYsYj1OayhhLGYpKSksMT09PWIpKXRocm93IGM9cGssS2soYSwwKSxDayhhLGQpLERrKGEsQigpKSxjO2EuZmluaXNoZWRXb3JrPWU7YS5maW5pc2hlZExhbmVzPWQ7c3dpdGNoKGIpe2Nhc2UgMDpjYXNlIDE6dGhyb3cgRXJyb3IocCgzNDUpKTtjYXNlIDI6UGsoYSx0ayx1ayk7YnJlYWs7Y2FzZSAzOkNrKGEsZCk7aWYoKGQmMTMwMDIzNDI0KT09PWQmJihiPWZrKzUwMC1CKCksMTA8Yikpe2lmKDAhPT11YyhhLDApKWJyZWFrO2U9YS5zdXNwZW5kZWRMYW5lcztpZigoZSZkKSE9PWQpe1IoKTthLnBpbmdlZExhbmVzfD1hLnN1c3BlbmRlZExhbmVzJmU7YnJlYWt9YS50aW1lb3V0SGFuZGxlPUZmKFBrLmJpbmQobnVsbCxhLHRrLHVrKSxiKTticmVha31QayhhLHRrLHVrKTticmVhaztjYXNlIDQ6Q2soYSxkKTtpZigoZCY0MTk0MjQwKT09PVxuZClicmVhaztiPWEuZXZlbnRUaW1lcztmb3IoZT0tMTswPGQ7KXt2YXIgZz0zMS1vYyhkKTtmPTE8PGc7Zz1iW2ddO2c+ZSYmKGU9Zyk7ZCY9fmZ9ZD1lO2Q9QigpLWQ7ZD0oMTIwPmQ/MTIwOjQ4MD5kPzQ4MDoxMDgwPmQ/MTA4MDoxOTIwPmQ/MTkyMDozRTM+ZD8zRTM6NDMyMD5kPzQzMjA6MTk2MCpsayhkLzE5NjApKS1kO2lmKDEwPGQpe2EudGltZW91dEhhbmRsZT1GZihQay5iaW5kKG51bGwsYSx0ayx1ayksZCk7YnJlYWt9UGsoYSx0ayx1ayk7YnJlYWs7Y2FzZSA1OlBrKGEsdGssdWspO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IocCgzMjkpKTt9fX1EayhhLEIoKSk7cmV0dXJuIGEuY2FsbGJhY2tOb2RlPT09Yz9Hay5iaW5kKG51bGwsYSk6bnVsbH1cbmZ1bmN0aW9uIE5rKGEsYil7dmFyIGM9c2s7YS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkJiYoS2soYSxiKS5mbGFnc3w9MjU2KTthPUlrKGEsYik7MiE9PWEmJihiPXRrLHRrPWMsbnVsbCE9PWImJkZqKGIpKTtyZXR1cm4gYX1mdW5jdGlvbiBGaihhKXtudWxsPT09dGs/dGs9YTp0ay5wdXNoLmFwcGx5KHRrLGEpfVxuZnVuY3Rpb24gT2soYSl7Zm9yKHZhciBiPWE7Oyl7aWYoYi5mbGFncyYxNjM4NCl7dmFyIGM9Yi51cGRhdGVRdWV1ZTtpZihudWxsIT09YyYmKGM9Yy5zdG9yZXMsbnVsbCE9PWMpKWZvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1jW2RdLGY9ZS5nZXRTbmFwc2hvdDtlPWUudmFsdWU7dHJ5e2lmKCFIZShmKCksZSkpcmV0dXJuITF9Y2F0Y2goZyl7cmV0dXJuITF9fX1jPWIuY2hpbGQ7aWYoYi5zdWJ0cmVlRmxhZ3MmMTYzODQmJm51bGwhPT1jKWMucmV0dXJuPWIsYj1jO2Vsc2V7aWYoYj09PWEpYnJlYWs7Zm9yKDtudWxsPT09Yi5zaWJsaW5nOyl7aWYobnVsbD09PWIucmV0dXJufHxiLnJldHVybj09PWEpcmV0dXJuITA7Yj1iLnJldHVybn1iLnNpYmxpbmcucmV0dXJuPWIucmV0dXJuO2I9Yi5zaWJsaW5nfX1yZXR1cm4hMH1cbmZ1bmN0aW9uIENrKGEsYil7YiY9fnJrO2ImPX5xazthLnN1c3BlbmRlZExhbmVzfD1iO2EucGluZ2VkTGFuZXMmPX5iO2ZvcihhPWEuZXhwaXJhdGlvblRpbWVzOzA8Yjspe3ZhciBjPTMxLW9jKGIpLGQ9MTw8YzthW2NdPS0xO2ImPX5kfX1mdW5jdGlvbiBFayhhKXtpZigwIT09KEsmNikpdGhyb3cgRXJyb3IocCgzMjcpKTtIaygpO3ZhciBiPXVjKGEsMCk7aWYoMD09PShiJjEpKXJldHVybiBEayhhLEIoKSksbnVsbDt2YXIgYz1JayhhLGIpO2lmKDAhPT1hLnRhZyYmMj09PWMpe3ZhciBkPXhjKGEpOzAhPT1kJiYoYj1kLGM9TmsoYSxkKSl9aWYoMT09PWMpdGhyb3cgYz1wayxLayhhLDApLENrKGEsYiksRGsoYSxCKCkpLGM7aWYoNj09PWMpdGhyb3cgRXJyb3IocCgzNDUpKTthLmZpbmlzaGVkV29yaz1hLmN1cnJlbnQuYWx0ZXJuYXRlO2EuZmluaXNoZWRMYW5lcz1iO1BrKGEsdGssdWspO0RrKGEsQigpKTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFFrKGEsYil7dmFyIGM9SztLfD0xO3RyeXtyZXR1cm4gYShiKX1maW5hbGx5e0s9YywwPT09SyYmKEdqPUIoKSs1MDAsZmcmJmpnKCkpfX1mdW5jdGlvbiBSayhhKXtudWxsIT09d2smJjA9PT13ay50YWcmJjA9PT0oSyY2KSYmSGsoKTt2YXIgYj1LO0t8PTE7dmFyIGM9b2sudHJhbnNpdGlvbixkPUM7dHJ5e2lmKG9rLnRyYW5zaXRpb249bnVsbCxDPTEsYSlyZXR1cm4gYSgpfWZpbmFsbHl7Qz1kLG9rLnRyYW5zaXRpb249YyxLPWIsMD09PShLJjYpJiZqZygpfX1mdW5jdGlvbiBIaigpe2ZqPWVqLmN1cnJlbnQ7RShlail9XG5mdW5jdGlvbiBLayhhLGIpe2EuZmluaXNoZWRXb3JrPW51bGw7YS5maW5pc2hlZExhbmVzPTA7dmFyIGM9YS50aW1lb3V0SGFuZGxlOy0xIT09YyYmKGEudGltZW91dEhhbmRsZT0tMSxHZihjKSk7aWYobnVsbCE9PVkpZm9yKGM9WS5yZXR1cm47bnVsbCE9PWM7KXt2YXIgZD1jO3dnKGQpO3N3aXRjaChkLnRhZyl7Y2FzZSAxOmQ9ZC50eXBlLmNoaWxkQ29udGV4dFR5cGVzO251bGwhPT1kJiZ2b2lkIDAhPT1kJiYkZigpO2JyZWFrO2Nhc2UgMzp6aCgpO0UoV2YpO0UoSCk7RWgoKTticmVhaztjYXNlIDU6QmgoZCk7YnJlYWs7Y2FzZSA0OnpoKCk7YnJlYWs7Y2FzZSAxMzpFKEwpO2JyZWFrO2Nhc2UgMTk6RShMKTticmVhaztjYXNlIDEwOmFoKGQudHlwZS5fY29udGV4dCk7YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOkhqKCl9Yz1jLnJldHVybn1RPWE7WT1hPVBnKGEuY3VycmVudCxudWxsKTtaPWZqPWI7VD0wO3BrPW51bGw7cms9cWs9cmg9MDt0az1zaz1udWxsO2lmKG51bGwhPT1maCl7Zm9yKGI9XG4wO2I8ZmgubGVuZ3RoO2IrKylpZihjPWZoW2JdLGQ9Yy5pbnRlcmxlYXZlZCxudWxsIT09ZCl7Yy5pbnRlcmxlYXZlZD1udWxsO3ZhciBlPWQubmV4dCxmPWMucGVuZGluZztpZihudWxsIT09Zil7dmFyIGc9Zi5uZXh0O2YubmV4dD1lO2QubmV4dD1nfWMucGVuZGluZz1kfWZoPW51bGx9cmV0dXJuIGF9XG5mdW5jdGlvbiBNayhhLGIpe2Rve3ZhciBjPVk7dHJ5eyRnKCk7RmguY3VycmVudD1SaDtpZihJaCl7Zm9yKHZhciBkPU0ubWVtb2l6ZWRTdGF0ZTtudWxsIT09ZDspe3ZhciBlPWQucXVldWU7bnVsbCE9PWUmJihlLnBlbmRpbmc9bnVsbCk7ZD1kLm5leHR9SWg9ITF9SGg9MDtPPU49TT1udWxsO0poPSExO0toPTA7bmsuY3VycmVudD1udWxsO2lmKG51bGw9PT1jfHxudWxsPT09Yy5yZXR1cm4pe1Q9MTtwaz1iO1k9bnVsbDticmVha31hOnt2YXIgZj1hLGc9Yy5yZXR1cm4saD1jLGs9YjtiPVo7aC5mbGFnc3w9MzI3Njg7aWYobnVsbCE9PWsmJlwib2JqZWN0XCI9PT10eXBlb2YgayYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGsudGhlbil7dmFyIGw9ayxtPWgscT1tLnRhZztpZigwPT09KG0ubW9kZSYxKSYmKDA9PT1xfHwxMT09PXF8fDE1PT09cSkpe3ZhciByPW0uYWx0ZXJuYXRlO3I/KG0udXBkYXRlUXVldWU9ci51cGRhdGVRdWV1ZSxtLm1lbW9pemVkU3RhdGU9ci5tZW1vaXplZFN0YXRlLFxubS5sYW5lcz1yLmxhbmVzKToobS51cGRhdGVRdWV1ZT1udWxsLG0ubWVtb2l6ZWRTdGF0ZT1udWxsKX12YXIgeT1VaShnKTtpZihudWxsIT09eSl7eS5mbGFncyY9LTI1NztWaSh5LGcsaCxmLGIpO3kubW9kZSYxJiZTaShmLGwsYik7Yj15O2s9bDt2YXIgbj1iLnVwZGF0ZVF1ZXVlO2lmKG51bGw9PT1uKXt2YXIgdD1uZXcgU2V0O3QuYWRkKGspO2IudXBkYXRlUXVldWU9dH1lbHNlIG4uYWRkKGspO2JyZWFrIGF9ZWxzZXtpZigwPT09KGImMSkpe1NpKGYsbCxiKTt0aigpO2JyZWFrIGF9az1FcnJvcihwKDQyNikpfX1lbHNlIGlmKEkmJmgubW9kZSYxKXt2YXIgSj1VaShnKTtpZihudWxsIT09Sil7MD09PShKLmZsYWdzJjY1NTM2KSYmKEouZmxhZ3N8PTI1Nik7VmkoSixnLGgsZixiKTtKZyhKaShrLGgpKTticmVhayBhfX1mPWs9SmkoayxoKTs0IT09VCYmKFQ9Mik7bnVsbD09PXNrP3NrPVtmXTpzay5wdXNoKGYpO2Y9Zztkb3tzd2l0Y2goZi50YWcpe2Nhc2UgMzpmLmZsYWdzfD02NTUzNjtcbmImPS1iO2YubGFuZXN8PWI7dmFyIHg9TmkoZixrLGIpO3BoKGYseCk7YnJlYWsgYTtjYXNlIDE6aD1rO3ZhciB3PWYudHlwZSx1PWYuc3RhdGVOb2RlO2lmKDA9PT0oZi5mbGFncyYxMjgpJiYoXCJmdW5jdGlvblwiPT09dHlwZW9mIHcuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yfHxudWxsIT09dSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIHUuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09Uml8fCFSaS5oYXModSkpKSl7Zi5mbGFnc3w9NjU1MzY7YiY9LWI7Zi5sYW5lc3w9Yjt2YXIgRj1RaShmLGgsYik7cGgoZixGKTticmVhayBhfX1mPWYucmV0dXJufXdoaWxlKG51bGwhPT1mKX1TayhjKX1jYXRjaChuYSl7Yj1uYTtZPT09YyYmbnVsbCE9PWMmJihZPWM9Yy5yZXR1cm4pO2NvbnRpbnVlfWJyZWFrfXdoaWxlKDEpfWZ1bmN0aW9uIEprKCl7dmFyIGE9bWsuY3VycmVudDttay5jdXJyZW50PVJoO3JldHVybiBudWxsPT09YT9SaDphfVxuZnVuY3Rpb24gdGooKXtpZigwPT09VHx8Mz09PVR8fDI9PT1UKVQ9NDtudWxsPT09UXx8MD09PShyaCYyNjg0MzU0NTUpJiYwPT09KHFrJjI2ODQzNTQ1NSl8fENrKFEsWil9ZnVuY3Rpb24gSWsoYSxiKXt2YXIgYz1LO0t8PTI7dmFyIGQ9SmsoKTtpZihRIT09YXx8WiE9PWIpdWs9bnVsbCxLayhhLGIpO2RvIHRyeXtUaygpO2JyZWFrfWNhdGNoKGUpe01rKGEsZSl9d2hpbGUoMSk7JGcoKTtLPWM7bWsuY3VycmVudD1kO2lmKG51bGwhPT1ZKXRocm93IEVycm9yKHAoMjYxKSk7UT1udWxsO1o9MDtyZXR1cm4gVH1mdW5jdGlvbiBUaygpe2Zvcig7bnVsbCE9PVk7KVVrKFkpfWZ1bmN0aW9uIExrKCl7Zm9yKDtudWxsIT09WSYmIWNjKCk7KVVrKFkpfWZ1bmN0aW9uIFVrKGEpe3ZhciBiPVZrKGEuYWx0ZXJuYXRlLGEsZmopO2EubWVtb2l6ZWRQcm9wcz1hLnBlbmRpbmdQcm9wcztudWxsPT09Yj9TayhhKTpZPWI7bmsuY3VycmVudD1udWxsfVxuZnVuY3Rpb24gU2soYSl7dmFyIGI9YTtkb3t2YXIgYz1iLmFsdGVybmF0ZTthPWIucmV0dXJuO2lmKDA9PT0oYi5mbGFncyYzMjc2OCkpe2lmKGM9RWooYyxiLGZqKSxudWxsIT09Yyl7WT1jO3JldHVybn19ZWxzZXtjPUlqKGMsYik7aWYobnVsbCE9PWMpe2MuZmxhZ3MmPTMyNzY3O1k9YztyZXR1cm59aWYobnVsbCE9PWEpYS5mbGFnc3w9MzI3NjgsYS5zdWJ0cmVlRmxhZ3M9MCxhLmRlbGV0aW9ucz1udWxsO2Vsc2V7VD02O1k9bnVsbDtyZXR1cm59fWI9Yi5zaWJsaW5nO2lmKG51bGwhPT1iKXtZPWI7cmV0dXJufVk9Yj1hfXdoaWxlKG51bGwhPT1iKTswPT09VCYmKFQ9NSl9ZnVuY3Rpb24gUGsoYSxiLGMpe3ZhciBkPUMsZT1vay50cmFuc2l0aW9uO3RyeXtvay50cmFuc2l0aW9uPW51bGwsQz0xLFdrKGEsYixjLGQpfWZpbmFsbHl7b2sudHJhbnNpdGlvbj1lLEM9ZH1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFdrKGEsYixjLGQpe2RvIEhrKCk7d2hpbGUobnVsbCE9PXdrKTtpZigwIT09KEsmNikpdGhyb3cgRXJyb3IocCgzMjcpKTtjPWEuZmluaXNoZWRXb3JrO3ZhciBlPWEuZmluaXNoZWRMYW5lcztpZihudWxsPT09YylyZXR1cm4gbnVsbDthLmZpbmlzaGVkV29yaz1udWxsO2EuZmluaXNoZWRMYW5lcz0wO2lmKGM9PT1hLmN1cnJlbnQpdGhyb3cgRXJyb3IocCgxNzcpKTthLmNhbGxiYWNrTm9kZT1udWxsO2EuY2FsbGJhY2tQcmlvcml0eT0wO3ZhciBmPWMubGFuZXN8Yy5jaGlsZExhbmVzO0JjKGEsZik7YT09PVEmJihZPVE9bnVsbCxaPTApOzA9PT0oYy5zdWJ0cmVlRmxhZ3MmMjA2NCkmJjA9PT0oYy5mbGFncyYyMDY0KXx8dmt8fCh2az0hMCxGayhoYyxmdW5jdGlvbigpe0hrKCk7cmV0dXJuIG51bGx9KSk7Zj0wIT09KGMuZmxhZ3MmMTU5OTApO2lmKDAhPT0oYy5zdWJ0cmVlRmxhZ3MmMTU5OTApfHxmKXtmPW9rLnRyYW5zaXRpb247b2sudHJhbnNpdGlvbj1udWxsO1xudmFyIGc9QztDPTE7dmFyIGg9SztLfD00O25rLmN1cnJlbnQ9bnVsbDtPaihhLGMpO2RrKGMsYSk7T2UoRGYpO2RkPSEhQ2Y7RGY9Q2Y9bnVsbDthLmN1cnJlbnQ9YztoayhjLGEsZSk7ZGMoKTtLPWg7Qz1nO29rLnRyYW5zaXRpb249Zn1lbHNlIGEuY3VycmVudD1jO3ZrJiYodms9ITEsd2s9YSx4az1lKTtmPWEucGVuZGluZ0xhbmVzOzA9PT1mJiYoUmk9bnVsbCk7bWMoYy5zdGF0ZU5vZGUsZCk7RGsoYSxCKCkpO2lmKG51bGwhPT1iKWZvcihkPWEub25SZWNvdmVyYWJsZUVycm9yLGM9MDtjPGIubGVuZ3RoO2MrKyllPWJbY10sZChlLnZhbHVlLHtjb21wb25lbnRTdGFjazplLnN0YWNrLGRpZ2VzdDplLmRpZ2VzdH0pO2lmKE9pKXRocm93IE9pPSExLGE9UGksUGk9bnVsbCxhOzAhPT0oeGsmMSkmJjAhPT1hLnRhZyYmSGsoKTtmPWEucGVuZGluZ0xhbmVzOzAhPT0oZiYxKT9hPT09ems/eWsrKzooeWs9MCx6az1hKTp5az0wO2pnKCk7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBIaygpe2lmKG51bGwhPT13ayl7dmFyIGE9RGMoeGspLGI9b2sudHJhbnNpdGlvbixjPUM7dHJ5e29rLnRyYW5zaXRpb249bnVsbDtDPTE2PmE/MTY6YTtpZihudWxsPT09d2spdmFyIGQ9ITE7ZWxzZXthPXdrO3drPW51bGw7eGs9MDtpZigwIT09KEsmNikpdGhyb3cgRXJyb3IocCgzMzEpKTt2YXIgZT1LO0t8PTQ7Zm9yKFY9YS5jdXJyZW50O251bGwhPT1WOyl7dmFyIGY9VixnPWYuY2hpbGQ7aWYoMCE9PShWLmZsYWdzJjE2KSl7dmFyIGg9Zi5kZWxldGlvbnM7aWYobnVsbCE9PWgpe2Zvcih2YXIgaz0wO2s8aC5sZW5ndGg7aysrKXt2YXIgbD1oW2tdO2ZvcihWPWw7bnVsbCE9PVY7KXt2YXIgbT1WO3N3aXRjaChtLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpQaig4LG0sZil9dmFyIHE9bS5jaGlsZDtpZihudWxsIT09cSlxLnJldHVybj1tLFY9cTtlbHNlIGZvcig7bnVsbCE9PVY7KXttPVY7dmFyIHI9bS5zaWJsaW5nLHk9bS5yZXR1cm47U2oobSk7aWYobT09PVxubCl7Vj1udWxsO2JyZWFrfWlmKG51bGwhPT1yKXtyLnJldHVybj15O1Y9cjticmVha31WPXl9fX12YXIgbj1mLmFsdGVybmF0ZTtpZihudWxsIT09bil7dmFyIHQ9bi5jaGlsZDtpZihudWxsIT09dCl7bi5jaGlsZD1udWxsO2Rve3ZhciBKPXQuc2libGluZzt0LnNpYmxpbmc9bnVsbDt0PUp9d2hpbGUobnVsbCE9PXQpfX1WPWZ9fWlmKDAhPT0oZi5zdWJ0cmVlRmxhZ3MmMjA2NCkmJm51bGwhPT1nKWcucmV0dXJuPWYsVj1nO2Vsc2UgYjpmb3IoO251bGwhPT1WOyl7Zj1WO2lmKDAhPT0oZi5mbGFncyYyMDQ4KSlzd2l0Y2goZi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6UGooOSxmLGYucmV0dXJuKX12YXIgeD1mLnNpYmxpbmc7aWYobnVsbCE9PXgpe3gucmV0dXJuPWYucmV0dXJuO1Y9eDticmVhayBifVY9Zi5yZXR1cm59fXZhciB3PWEuY3VycmVudDtmb3IoVj13O251bGwhPT1WOyl7Zz1WO3ZhciB1PWcuY2hpbGQ7aWYoMCE9PShnLnN1YnRyZWVGbGFncyYyMDY0KSYmbnVsbCE9PVxudSl1LnJldHVybj1nLFY9dTtlbHNlIGI6Zm9yKGc9dztudWxsIT09Vjspe2g9VjtpZigwIT09KGguZmxhZ3MmMjA0OCkpdHJ5e3N3aXRjaChoLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpRaig5LGgpfX1jYXRjaChuYSl7VyhoLGgucmV0dXJuLG5hKX1pZihoPT09Zyl7Vj1udWxsO2JyZWFrIGJ9dmFyIEY9aC5zaWJsaW5nO2lmKG51bGwhPT1GKXtGLnJldHVybj1oLnJldHVybjtWPUY7YnJlYWsgYn1WPWgucmV0dXJufX1LPWU7amcoKTtpZihsYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGxjLm9uUG9zdENvbW1pdEZpYmVyUm9vdCl0cnl7bGMub25Qb3N0Q29tbWl0RmliZXJSb290KGtjLGEpfWNhdGNoKG5hKXt9ZD0hMH1yZXR1cm4gZH1maW5hbGx5e0M9Yyxvay50cmFuc2l0aW9uPWJ9fXJldHVybiExfWZ1bmN0aW9uIFhrKGEsYixjKXtiPUppKGMsYik7Yj1OaShhLGIsMSk7YT1uaChhLGIsMSk7Yj1SKCk7bnVsbCE9PWEmJihBYyhhLDEsYiksRGsoYSxiKSl9XG5mdW5jdGlvbiBXKGEsYixjKXtpZigzPT09YS50YWcpWGsoYSxhLGMpO2Vsc2UgZm9yKDtudWxsIT09Yjspe2lmKDM9PT1iLnRhZyl7WGsoYixhLGMpO2JyZWFrfWVsc2UgaWYoMT09PWIudGFnKXt2YXIgZD1iLnN0YXRlTm9kZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcnx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGQuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09Uml8fCFSaS5oYXMoZCkpKXthPUppKGMsYSk7YT1RaShiLGEsMSk7Yj1uaChiLGEsMSk7YT1SKCk7bnVsbCE9PWImJihBYyhiLDEsYSksRGsoYixhKSk7YnJlYWt9fWI9Yi5yZXR1cm59fVxuZnVuY3Rpb24gVGkoYSxiLGMpe3ZhciBkPWEucGluZ0NhY2hlO251bGwhPT1kJiZkLmRlbGV0ZShiKTtiPVIoKTthLnBpbmdlZExhbmVzfD1hLnN1c3BlbmRlZExhbmVzJmM7UT09PWEmJihaJmMpPT09YyYmKDQ9PT1UfHwzPT09VCYmKFomMTMwMDIzNDI0KT09PVomJjUwMD5CKCktZms/S2soYSwwKTpya3w9Yyk7RGsoYSxiKX1mdW5jdGlvbiBZayhhLGIpezA9PT1iJiYoMD09PShhLm1vZGUmMSk/Yj0xOihiPXNjLHNjPDw9MSwwPT09KHNjJjEzMDAyMzQyNCkmJihzYz00MTk0MzA0KSkpO3ZhciBjPVIoKTthPWloKGEsYik7bnVsbCE9PWEmJihBYyhhLGIsYyksRGsoYSxjKSl9ZnVuY3Rpb24gdWooYSl7dmFyIGI9YS5tZW1vaXplZFN0YXRlLGM9MDtudWxsIT09YiYmKGM9Yi5yZXRyeUxhbmUpO1lrKGEsYyl9XG5mdW5jdGlvbiBiayhhLGIpe3ZhciBjPTA7c3dpdGNoKGEudGFnKXtjYXNlIDEzOnZhciBkPWEuc3RhdGVOb2RlO3ZhciBlPWEubWVtb2l6ZWRTdGF0ZTtudWxsIT09ZSYmKGM9ZS5yZXRyeUxhbmUpO2JyZWFrO2Nhc2UgMTk6ZD1hLnN0YXRlTm9kZTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKHAoMzE0KSk7fW51bGwhPT1kJiZkLmRlbGV0ZShiKTtZayhhLGMpfXZhciBWaztcblZrPWZ1bmN0aW9uKGEsYixjKXtpZihudWxsIT09YSlpZihhLm1lbW9pemVkUHJvcHMhPT1iLnBlbmRpbmdQcm9wc3x8V2YuY3VycmVudClkaD0hMDtlbHNle2lmKDA9PT0oYS5sYW5lcyZjKSYmMD09PShiLmZsYWdzJjEyOCkpcmV0dXJuIGRoPSExLHlqKGEsYixjKTtkaD0wIT09KGEuZmxhZ3MmMTMxMDcyKT8hMDohMX1lbHNlIGRoPSExLEkmJjAhPT0oYi5mbGFncyYxMDQ4NTc2KSYmdWcoYixuZyxiLmluZGV4KTtiLmxhbmVzPTA7c3dpdGNoKGIudGFnKXtjYXNlIDI6dmFyIGQ9Yi50eXBlO2lqKGEsYik7YT1iLnBlbmRpbmdQcm9wczt2YXIgZT1ZZihiLEguY3VycmVudCk7Y2goYixjKTtlPU5oKG51bGwsYixkLGEsZSxjKTt2YXIgZj1TaCgpO2IuZmxhZ3N8PTE7XCJvYmplY3RcIj09PXR5cGVvZiBlJiZudWxsIT09ZSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGUucmVuZGVyJiZ2b2lkIDA9PT1lLiQkdHlwZW9mPyhiLnRhZz0xLGIubWVtb2l6ZWRTdGF0ZT1udWxsLGIudXBkYXRlUXVldWU9XG5udWxsLFpmKGQpPyhmPSEwLGNnKGIpKTpmPSExLGIubWVtb2l6ZWRTdGF0ZT1udWxsIT09ZS5zdGF0ZSYmdm9pZCAwIT09ZS5zdGF0ZT9lLnN0YXRlOm51bGwsa2goYiksZS51cGRhdGVyPUVpLGIuc3RhdGVOb2RlPWUsZS5fcmVhY3RJbnRlcm5hbHM9YixJaShiLGQsYSxjKSxiPWpqKG51bGwsYixkLCEwLGYsYykpOihiLnRhZz0wLEkmJmYmJnZnKGIpLFhpKG51bGwsYixlLGMpLGI9Yi5jaGlsZCk7cmV0dXJuIGI7Y2FzZSAxNjpkPWIuZWxlbWVudFR5cGU7YTp7aWooYSxiKTthPWIucGVuZGluZ1Byb3BzO2U9ZC5faW5pdDtkPWUoZC5fcGF5bG9hZCk7Yi50eXBlPWQ7ZT1iLnRhZz1aayhkKTthPUNpKGQsYSk7c3dpdGNoKGUpe2Nhc2UgMDpiPWNqKG51bGwsYixkLGEsYyk7YnJlYWsgYTtjYXNlIDE6Yj1oaihudWxsLGIsZCxhLGMpO2JyZWFrIGE7Y2FzZSAxMTpiPVlpKG51bGwsYixkLGEsYyk7YnJlYWsgYTtjYXNlIDE0OmI9JGkobnVsbCxiLGQsQ2koZC50eXBlLGEpLGMpO2JyZWFrIGF9dGhyb3cgRXJyb3IocCgzMDYsXG5kLFwiXCIpKTt9cmV0dXJuIGI7Y2FzZSAwOnJldHVybiBkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGU9Yi5lbGVtZW50VHlwZT09PWQ/ZTpDaShkLGUpLGNqKGEsYixkLGUsYyk7Y2FzZSAxOnJldHVybiBkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGU9Yi5lbGVtZW50VHlwZT09PWQ/ZTpDaShkLGUpLGhqKGEsYixkLGUsYyk7Y2FzZSAzOmE6e2tqKGIpO2lmKG51bGw9PT1hKXRocm93IEVycm9yKHAoMzg3KSk7ZD1iLnBlbmRpbmdQcm9wcztmPWIubWVtb2l6ZWRTdGF0ZTtlPWYuZWxlbWVudDtsaChhLGIpO3FoKGIsZCxudWxsLGMpO3ZhciBnPWIubWVtb2l6ZWRTdGF0ZTtkPWcuZWxlbWVudDtpZihmLmlzRGVoeWRyYXRlZClpZihmPXtlbGVtZW50OmQsaXNEZWh5ZHJhdGVkOiExLGNhY2hlOmcuY2FjaGUscGVuZGluZ1N1c3BlbnNlQm91bmRhcmllczpnLnBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXMsdHJhbnNpdGlvbnM6Zy50cmFuc2l0aW9uc30sYi51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9XG5mLGIubWVtb2l6ZWRTdGF0ZT1mLGIuZmxhZ3MmMjU2KXtlPUppKEVycm9yKHAoNDIzKSksYik7Yj1saihhLGIsZCxjLGUpO2JyZWFrIGF9ZWxzZSBpZihkIT09ZSl7ZT1KaShFcnJvcihwKDQyNCkpLGIpO2I9bGooYSxiLGQsYyxlKTticmVhayBhfWVsc2UgZm9yKHlnPUxmKGIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8uZmlyc3RDaGlsZCkseGc9YixJPSEwLHpnPW51bGwsYz1WZyhiLG51bGwsZCxjKSxiLmNoaWxkPWM7YzspYy5mbGFncz1jLmZsYWdzJi0zfDQwOTYsYz1jLnNpYmxpbmc7ZWxzZXtJZygpO2lmKGQ9PT1lKXtiPVppKGEsYixjKTticmVhayBhfVhpKGEsYixkLGMpfWI9Yi5jaGlsZH1yZXR1cm4gYjtjYXNlIDU6cmV0dXJuIEFoKGIpLG51bGw9PT1hJiZFZyhiKSxkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGY9bnVsbCE9PWE/YS5tZW1vaXplZFByb3BzOm51bGwsZz1lLmNoaWxkcmVuLEVmKGQsZSk/Zz1udWxsOm51bGwhPT1mJiZFZihkLGYpJiYoYi5mbGFnc3w9MzIpLFxuZ2ooYSxiKSxYaShhLGIsZyxjKSxiLmNoaWxkO2Nhc2UgNjpyZXR1cm4gbnVsbD09PWEmJkVnKGIpLG51bGw7Y2FzZSAxMzpyZXR1cm4gb2ooYSxiLGMpO2Nhc2UgNDpyZXR1cm4geWgoYixiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxkPWIucGVuZGluZ1Byb3BzLG51bGw9PT1hP2IuY2hpbGQ9VWcoYixudWxsLGQsYyk6WGkoYSxiLGQsYyksYi5jaGlsZDtjYXNlIDExOnJldHVybiBkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGU9Yi5lbGVtZW50VHlwZT09PWQ/ZTpDaShkLGUpLFlpKGEsYixkLGUsYyk7Y2FzZSA3OnJldHVybiBYaShhLGIsYi5wZW5kaW5nUHJvcHMsYyksYi5jaGlsZDtjYXNlIDg6cmV0dXJuIFhpKGEsYixiLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixjKSxiLmNoaWxkO2Nhc2UgMTI6cmV0dXJuIFhpKGEsYixiLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixjKSxiLmNoaWxkO2Nhc2UgMTA6YTp7ZD1iLnR5cGUuX2NvbnRleHQ7ZT1iLnBlbmRpbmdQcm9wcztmPWIubWVtb2l6ZWRQcm9wcztcbmc9ZS52YWx1ZTtHKFdnLGQuX2N1cnJlbnRWYWx1ZSk7ZC5fY3VycmVudFZhbHVlPWc7aWYobnVsbCE9PWYpaWYoSGUoZi52YWx1ZSxnKSl7aWYoZi5jaGlsZHJlbj09PWUuY2hpbGRyZW4mJiFXZi5jdXJyZW50KXtiPVppKGEsYixjKTticmVhayBhfX1lbHNlIGZvcihmPWIuY2hpbGQsbnVsbCE9PWYmJihmLnJldHVybj1iKTtudWxsIT09Zjspe3ZhciBoPWYuZGVwZW5kZW5jaWVzO2lmKG51bGwhPT1oKXtnPWYuY2hpbGQ7Zm9yKHZhciBrPWguZmlyc3RDb250ZXh0O251bGwhPT1rOyl7aWYoay5jb250ZXh0PT09ZCl7aWYoMT09PWYudGFnKXtrPW1oKC0xLGMmLWMpO2sudGFnPTI7dmFyIGw9Zi51cGRhdGVRdWV1ZTtpZihudWxsIT09bCl7bD1sLnNoYXJlZDt2YXIgbT1sLnBlbmRpbmc7bnVsbD09PW0/ay5uZXh0PWs6KGsubmV4dD1tLm5leHQsbS5uZXh0PWspO2wucGVuZGluZz1rfX1mLmxhbmVzfD1jO2s9Zi5hbHRlcm5hdGU7bnVsbCE9PWsmJihrLmxhbmVzfD1jKTtiaChmLnJldHVybixcbmMsYik7aC5sYW5lc3w9YzticmVha31rPWsubmV4dH19ZWxzZSBpZigxMD09PWYudGFnKWc9Zi50eXBlPT09Yi50eXBlP251bGw6Zi5jaGlsZDtlbHNlIGlmKDE4PT09Zi50YWcpe2c9Zi5yZXR1cm47aWYobnVsbD09PWcpdGhyb3cgRXJyb3IocCgzNDEpKTtnLmxhbmVzfD1jO2g9Zy5hbHRlcm5hdGU7bnVsbCE9PWgmJihoLmxhbmVzfD1jKTtiaChnLGMsYik7Zz1mLnNpYmxpbmd9ZWxzZSBnPWYuY2hpbGQ7aWYobnVsbCE9PWcpZy5yZXR1cm49ZjtlbHNlIGZvcihnPWY7bnVsbCE9PWc7KXtpZihnPT09Yil7Zz1udWxsO2JyZWFrfWY9Zy5zaWJsaW5nO2lmKG51bGwhPT1mKXtmLnJldHVybj1nLnJldHVybjtnPWY7YnJlYWt9Zz1nLnJldHVybn1mPWd9WGkoYSxiLGUuY2hpbGRyZW4sYyk7Yj1iLmNoaWxkfXJldHVybiBiO2Nhc2UgOTpyZXR1cm4gZT1iLnR5cGUsZD1iLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixjaChiLGMpLGU9ZWgoZSksZD1kKGUpLGIuZmxhZ3N8PTEsWGkoYSxiLGQsYyksXG5iLmNoaWxkO2Nhc2UgMTQ6cmV0dXJuIGQ9Yi50eXBlLGU9Q2koZCxiLnBlbmRpbmdQcm9wcyksZT1DaShkLnR5cGUsZSksJGkoYSxiLGQsZSxjKTtjYXNlIDE1OnJldHVybiBiaihhLGIsYi50eXBlLGIucGVuZGluZ1Byb3BzLGMpO2Nhc2UgMTc6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkNpKGQsZSksaWooYSxiKSxiLnRhZz0xLFpmKGQpPyhhPSEwLGNnKGIpKTphPSExLGNoKGIsYyksR2koYixkLGUpLElpKGIsZCxlLGMpLGpqKG51bGwsYixkLCEwLGEsYyk7Y2FzZSAxOTpyZXR1cm4geGooYSxiLGMpO2Nhc2UgMjI6cmV0dXJuIGRqKGEsYixjKX10aHJvdyBFcnJvcihwKDE1NixiLnRhZykpO307ZnVuY3Rpb24gRmsoYSxiKXtyZXR1cm4gYWMoYSxiKX1cbmZ1bmN0aW9uICRrKGEsYixjLGQpe3RoaXMudGFnPWE7dGhpcy5rZXk9Yzt0aGlzLnNpYmxpbmc9dGhpcy5jaGlsZD10aGlzLnJldHVybj10aGlzLnN0YXRlTm9kZT10aGlzLnR5cGU9dGhpcy5lbGVtZW50VHlwZT1udWxsO3RoaXMuaW5kZXg9MDt0aGlzLnJlZj1udWxsO3RoaXMucGVuZGluZ1Byb3BzPWI7dGhpcy5kZXBlbmRlbmNpZXM9dGhpcy5tZW1vaXplZFN0YXRlPXRoaXMudXBkYXRlUXVldWU9dGhpcy5tZW1vaXplZFByb3BzPW51bGw7dGhpcy5tb2RlPWQ7dGhpcy5zdWJ0cmVlRmxhZ3M9dGhpcy5mbGFncz0wO3RoaXMuZGVsZXRpb25zPW51bGw7dGhpcy5jaGlsZExhbmVzPXRoaXMubGFuZXM9MDt0aGlzLmFsdGVybmF0ZT1udWxsfWZ1bmN0aW9uIEJnKGEsYixjLGQpe3JldHVybiBuZXcgJGsoYSxiLGMsZCl9ZnVuY3Rpb24gYWooYSl7YT1hLnByb3RvdHlwZTtyZXR1cm4hKCFhfHwhYS5pc1JlYWN0Q29tcG9uZW50KX1cbmZ1bmN0aW9uIFprKGEpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhKXJldHVybiBhaihhKT8xOjA7aWYodm9pZCAwIT09YSYmbnVsbCE9PWEpe2E9YS4kJHR5cGVvZjtpZihhPT09RGEpcmV0dXJuIDExO2lmKGE9PT1HYSlyZXR1cm4gMTR9cmV0dXJuIDJ9XG5mdW5jdGlvbiBQZyhhLGIpe3ZhciBjPWEuYWx0ZXJuYXRlO251bGw9PT1jPyhjPUJnKGEudGFnLGIsYS5rZXksYS5tb2RlKSxjLmVsZW1lbnRUeXBlPWEuZWxlbWVudFR5cGUsYy50eXBlPWEudHlwZSxjLnN0YXRlTm9kZT1hLnN0YXRlTm9kZSxjLmFsdGVybmF0ZT1hLGEuYWx0ZXJuYXRlPWMpOihjLnBlbmRpbmdQcm9wcz1iLGMudHlwZT1hLnR5cGUsYy5mbGFncz0wLGMuc3VidHJlZUZsYWdzPTAsYy5kZWxldGlvbnM9bnVsbCk7Yy5mbGFncz1hLmZsYWdzJjE0NjgwMDY0O2MuY2hpbGRMYW5lcz1hLmNoaWxkTGFuZXM7Yy5sYW5lcz1hLmxhbmVzO2MuY2hpbGQ9YS5jaGlsZDtjLm1lbW9pemVkUHJvcHM9YS5tZW1vaXplZFByb3BzO2MubWVtb2l6ZWRTdGF0ZT1hLm1lbW9pemVkU3RhdGU7Yy51cGRhdGVRdWV1ZT1hLnVwZGF0ZVF1ZXVlO2I9YS5kZXBlbmRlbmNpZXM7Yy5kZXBlbmRlbmNpZXM9bnVsbD09PWI/bnVsbDp7bGFuZXM6Yi5sYW5lcyxmaXJzdENvbnRleHQ6Yi5maXJzdENvbnRleHR9O1xuYy5zaWJsaW5nPWEuc2libGluZztjLmluZGV4PWEuaW5kZXg7Yy5yZWY9YS5yZWY7cmV0dXJuIGN9XG5mdW5jdGlvbiBSZyhhLGIsYyxkLGUsZil7dmFyIGc9MjtkPWE7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEpYWooYSkmJihnPTEpO2Vsc2UgaWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhKWc9NTtlbHNlIGE6c3dpdGNoKGEpe2Nhc2UgeWE6cmV0dXJuIFRnKGMuY2hpbGRyZW4sZSxmLGIpO2Nhc2UgemE6Zz04O2V8PTg7YnJlYWs7Y2FzZSBBYTpyZXR1cm4gYT1CZygxMixjLGIsZXwyKSxhLmVsZW1lbnRUeXBlPUFhLGEubGFuZXM9ZixhO2Nhc2UgRWE6cmV0dXJuIGE9QmcoMTMsYyxiLGUpLGEuZWxlbWVudFR5cGU9RWEsYS5sYW5lcz1mLGE7Y2FzZSBGYTpyZXR1cm4gYT1CZygxOSxjLGIsZSksYS5lbGVtZW50VHlwZT1GYSxhLmxhbmVzPWYsYTtjYXNlIElhOnJldHVybiBwaihjLGUsZixiKTtkZWZhdWx0OmlmKFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEpc3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgQmE6Zz0xMDticmVhayBhO2Nhc2UgQ2E6Zz05O2JyZWFrIGE7Y2FzZSBEYTpnPTExO1xuYnJlYWsgYTtjYXNlIEdhOmc9MTQ7YnJlYWsgYTtjYXNlIEhhOmc9MTY7ZD1udWxsO2JyZWFrIGF9dGhyb3cgRXJyb3IocCgxMzAsbnVsbD09YT9hOnR5cGVvZiBhLFwiXCIpKTt9Yj1CZyhnLGMsYixlKTtiLmVsZW1lbnRUeXBlPWE7Yi50eXBlPWQ7Yi5sYW5lcz1mO3JldHVybiBifWZ1bmN0aW9uIFRnKGEsYixjLGQpe2E9QmcoNyxhLGQsYik7YS5sYW5lcz1jO3JldHVybiBhfWZ1bmN0aW9uIHBqKGEsYixjLGQpe2E9QmcoMjIsYSxkLGIpO2EuZWxlbWVudFR5cGU9SWE7YS5sYW5lcz1jO2Euc3RhdGVOb2RlPXtpc0hpZGRlbjohMX07cmV0dXJuIGF9ZnVuY3Rpb24gUWcoYSxiLGMpe2E9QmcoNixhLG51bGwsYik7YS5sYW5lcz1jO3JldHVybiBhfVxuZnVuY3Rpb24gU2coYSxiLGMpe2I9QmcoNCxudWxsIT09YS5jaGlsZHJlbj9hLmNoaWxkcmVuOltdLGEua2V5LGIpO2IubGFuZXM9YztiLnN0YXRlTm9kZT17Y29udGFpbmVySW5mbzphLmNvbnRhaW5lckluZm8scGVuZGluZ0NoaWxkcmVuOm51bGwsaW1wbGVtZW50YXRpb246YS5pbXBsZW1lbnRhdGlvbn07cmV0dXJuIGJ9XG5mdW5jdGlvbiBhbChhLGIsYyxkLGUpe3RoaXMudGFnPWI7dGhpcy5jb250YWluZXJJbmZvPWE7dGhpcy5maW5pc2hlZFdvcms9dGhpcy5waW5nQ2FjaGU9dGhpcy5jdXJyZW50PXRoaXMucGVuZGluZ0NoaWxkcmVuPW51bGw7dGhpcy50aW1lb3V0SGFuZGxlPS0xO3RoaXMuY2FsbGJhY2tOb2RlPXRoaXMucGVuZGluZ0NvbnRleHQ9dGhpcy5jb250ZXh0PW51bGw7dGhpcy5jYWxsYmFja1ByaW9yaXR5PTA7dGhpcy5ldmVudFRpbWVzPXpjKDApO3RoaXMuZXhwaXJhdGlvblRpbWVzPXpjKC0xKTt0aGlzLmVudGFuZ2xlZExhbmVzPXRoaXMuZmluaXNoZWRMYW5lcz10aGlzLm11dGFibGVSZWFkTGFuZXM9dGhpcy5leHBpcmVkTGFuZXM9dGhpcy5waW5nZWRMYW5lcz10aGlzLnN1c3BlbmRlZExhbmVzPXRoaXMucGVuZGluZ0xhbmVzPTA7dGhpcy5lbnRhbmdsZW1lbnRzPXpjKDApO3RoaXMuaWRlbnRpZmllclByZWZpeD1kO3RoaXMub25SZWNvdmVyYWJsZUVycm9yPWU7dGhpcy5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhPVxubnVsbH1mdW5jdGlvbiBibChhLGIsYyxkLGUsZixnLGgsayl7YT1uZXcgYWwoYSxiLGMsaCxrKTsxPT09Yj8oYj0xLCEwPT09ZiYmKGJ8PTgpKTpiPTA7Zj1CZygzLG51bGwsbnVsbCxiKTthLmN1cnJlbnQ9ZjtmLnN0YXRlTm9kZT1hO2YubWVtb2l6ZWRTdGF0ZT17ZWxlbWVudDpkLGlzRGVoeWRyYXRlZDpjLGNhY2hlOm51bGwsdHJhbnNpdGlvbnM6bnVsbCxwZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzOm51bGx9O2toKGYpO3JldHVybiBhfWZ1bmN0aW9uIGNsKGEsYixjKXt2YXIgZD0zPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106bnVsbDtyZXR1cm57JCR0eXBlb2Y6d2Esa2V5Om51bGw9PWQ/bnVsbDpcIlwiK2QsY2hpbGRyZW46YSxjb250YWluZXJJbmZvOmIsaW1wbGVtZW50YXRpb246Y319XG5mdW5jdGlvbiBkbChhKXtpZighYSlyZXR1cm4gVmY7YT1hLl9yZWFjdEludGVybmFsczthOntpZihWYihhKSE9PWF8fDEhPT1hLnRhZyl0aHJvdyBFcnJvcihwKDE3MCkpO3ZhciBiPWE7ZG97c3dpdGNoKGIudGFnKXtjYXNlIDM6Yj1iLnN0YXRlTm9kZS5jb250ZXh0O2JyZWFrIGE7Y2FzZSAxOmlmKFpmKGIudHlwZSkpe2I9Yi5zdGF0ZU5vZGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQ7YnJlYWsgYX19Yj1iLnJldHVybn13aGlsZShudWxsIT09Yik7dGhyb3cgRXJyb3IocCgxNzEpKTt9aWYoMT09PWEudGFnKXt2YXIgYz1hLnR5cGU7aWYoWmYoYykpcmV0dXJuIGJnKGEsYyxiKX1yZXR1cm4gYn1cbmZ1bmN0aW9uIGVsKGEsYixjLGQsZSxmLGcsaCxrKXthPWJsKGMsZCwhMCxhLGUsZixnLGgsayk7YS5jb250ZXh0PWRsKG51bGwpO2M9YS5jdXJyZW50O2Q9UigpO2U9eWkoYyk7Zj1taChkLGUpO2YuY2FsbGJhY2s9dm9pZCAwIT09YiYmbnVsbCE9PWI/YjpudWxsO25oKGMsZixlKTthLmN1cnJlbnQubGFuZXM9ZTtBYyhhLGUsZCk7RGsoYSxkKTtyZXR1cm4gYX1mdW5jdGlvbiBmbChhLGIsYyxkKXt2YXIgZT1iLmN1cnJlbnQsZj1SKCksZz15aShlKTtjPWRsKGMpO251bGw9PT1iLmNvbnRleHQ/Yi5jb250ZXh0PWM6Yi5wZW5kaW5nQ29udGV4dD1jO2I9bWgoZixnKTtiLnBheWxvYWQ9e2VsZW1lbnQ6YX07ZD12b2lkIDA9PT1kP251bGw6ZDtudWxsIT09ZCYmKGIuY2FsbGJhY2s9ZCk7YT1uaChlLGIsZyk7bnVsbCE9PWEmJihnaShhLGUsZyxmKSxvaChhLGUsZykpO3JldHVybiBnfVxuZnVuY3Rpb24gZ2woYSl7YT1hLmN1cnJlbnQ7aWYoIWEuY2hpbGQpcmV0dXJuIG51bGw7c3dpdGNoKGEuY2hpbGQudGFnKXtjYXNlIDU6cmV0dXJuIGEuY2hpbGQuc3RhdGVOb2RlO2RlZmF1bHQ6cmV0dXJuIGEuY2hpbGQuc3RhdGVOb2RlfX1mdW5jdGlvbiBobChhLGIpe2E9YS5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1hJiZudWxsIT09YS5kZWh5ZHJhdGVkKXt2YXIgYz1hLnJldHJ5TGFuZTthLnJldHJ5TGFuZT0wIT09YyYmYzxiP2M6Yn19ZnVuY3Rpb24gaWwoYSxiKXtobChhLGIpOyhhPWEuYWx0ZXJuYXRlKSYmaGwoYSxiKX1mdW5jdGlvbiBqbCgpe3JldHVybiBudWxsfXZhciBrbD1cImZ1bmN0aW9uXCI9PT10eXBlb2YgcmVwb3J0RXJyb3I/cmVwb3J0RXJyb3I6ZnVuY3Rpb24oYSl7Y29uc29sZS5lcnJvcihhKX07ZnVuY3Rpb24gbGwoYSl7dGhpcy5faW50ZXJuYWxSb290PWF9XG5tbC5wcm90b3R5cGUucmVuZGVyPWxsLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5faW50ZXJuYWxSb290O2lmKG51bGw9PT1iKXRocm93IEVycm9yKHAoNDA5KSk7ZmwoYSxiLG51bGwsbnVsbCl9O21sLnByb3RvdHlwZS51bm1vdW50PWxsLnByb3RvdHlwZS51bm1vdW50PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5faW50ZXJuYWxSb290O2lmKG51bGwhPT1hKXt0aGlzLl9pbnRlcm5hbFJvb3Q9bnVsbDt2YXIgYj1hLmNvbnRhaW5lckluZm87UmsoZnVuY3Rpb24oKXtmbChudWxsLGEsbnVsbCxudWxsKX0pO2JbdWZdPW51bGx9fTtmdW5jdGlvbiBtbChhKXt0aGlzLl9pbnRlcm5hbFJvb3Q9YX1cbm1sLnByb3RvdHlwZS51bnN0YWJsZV9zY2hlZHVsZUh5ZHJhdGlvbj1mdW5jdGlvbihhKXtpZihhKXt2YXIgYj1IYygpO2E9e2Jsb2NrZWRPbjpudWxsLHRhcmdldDphLHByaW9yaXR5OmJ9O2Zvcih2YXIgYz0wO2M8UWMubGVuZ3RoJiYwIT09YiYmYjxRY1tjXS5wcmlvcml0eTtjKyspO1FjLnNwbGljZShjLDAsYSk7MD09PWMmJlZjKGEpfX07ZnVuY3Rpb24gbmwoYSl7cmV0dXJuISghYXx8MSE9PWEubm9kZVR5cGUmJjkhPT1hLm5vZGVUeXBlJiYxMSE9PWEubm9kZVR5cGUpfWZ1bmN0aW9uIG9sKGEpe3JldHVybiEoIWF8fDEhPT1hLm5vZGVUeXBlJiY5IT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlJiYoOCE9PWEubm9kZVR5cGV8fFwiIHJlYWN0LW1vdW50LXBvaW50LXVuc3RhYmxlIFwiIT09YS5ub2RlVmFsdWUpKX1mdW5jdGlvbiBwbCgpe31cbmZ1bmN0aW9uIHFsKGEsYixjLGQsZSl7aWYoZSl7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQpe3ZhciBmPWQ7ZD1mdW5jdGlvbigpe3ZhciBhPWdsKGcpO2YuY2FsbChhKX19dmFyIGc9ZWwoYixkLGEsMCxudWxsLCExLCExLFwiXCIscGwpO2EuX3JlYWN0Um9vdENvbnRhaW5lcj1nO2FbdWZdPWcuY3VycmVudDtzZig4PT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGU6YSk7UmsoKTtyZXR1cm4gZ31mb3IoO2U9YS5sYXN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoZSk7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQpe3ZhciBoPWQ7ZD1mdW5jdGlvbigpe3ZhciBhPWdsKGspO2guY2FsbChhKX19dmFyIGs9YmwoYSwwLCExLG51bGwsbnVsbCwhMSwhMSxcIlwiLHBsKTthLl9yZWFjdFJvb3RDb250YWluZXI9azthW3VmXT1rLmN1cnJlbnQ7c2YoOD09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlOmEpO1JrKGZ1bmN0aW9uKCl7ZmwoYixrLGMsZCl9KTtyZXR1cm4ga31cbmZ1bmN0aW9uIHJsKGEsYixjLGQsZSl7dmFyIGY9Yy5fcmVhY3RSb290Q29udGFpbmVyO2lmKGYpe3ZhciBnPWY7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGUpe3ZhciBoPWU7ZT1mdW5jdGlvbigpe3ZhciBhPWdsKGcpO2guY2FsbChhKX19ZmwoYixnLGEsZSl9ZWxzZSBnPXFsKGMsYixhLGUsZCk7cmV0dXJuIGdsKGcpfUVjPWZ1bmN0aW9uKGEpe3N3aXRjaChhLnRhZyl7Y2FzZSAzOnZhciBiPWEuc3RhdGVOb2RlO2lmKGIuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl7dmFyIGM9dGMoYi5wZW5kaW5nTGFuZXMpOzAhPT1jJiYoQ2MoYixjfDEpLERrKGIsQigpKSwwPT09KEsmNikmJihHaj1CKCkrNTAwLGpnKCkpKX1icmVhaztjYXNlIDEzOlJrKGZ1bmN0aW9uKCl7dmFyIGI9aWgoYSwxKTtpZihudWxsIT09Yil7dmFyIGM9UigpO2dpKGIsYSwxLGMpfX0pLGlsKGEsMSl9fTtcbkZjPWZ1bmN0aW9uKGEpe2lmKDEzPT09YS50YWcpe3ZhciBiPWloKGEsMTM0MjE3NzI4KTtpZihudWxsIT09Yil7dmFyIGM9UigpO2dpKGIsYSwxMzQyMTc3MjgsYyl9aWwoYSwxMzQyMTc3MjgpfX07R2M9ZnVuY3Rpb24oYSl7aWYoMTM9PT1hLnRhZyl7dmFyIGI9eWkoYSksYz1paChhLGIpO2lmKG51bGwhPT1jKXt2YXIgZD1SKCk7Z2koYyxhLGIsZCl9aWwoYSxiKX19O0hjPWZ1bmN0aW9uKCl7cmV0dXJuIEN9O0ljPWZ1bmN0aW9uKGEsYil7dmFyIGM9Qzt0cnl7cmV0dXJuIEM9YSxiKCl9ZmluYWxseXtDPWN9fTtcbnliPWZ1bmN0aW9uKGEsYixjKXtzd2l0Y2goYil7Y2FzZSBcImlucHV0XCI6YmIoYSxjKTtiPWMubmFtZTtpZihcInJhZGlvXCI9PT1jLnR5cGUmJm51bGwhPWIpe2ZvcihjPWE7Yy5wYXJlbnROb2RlOyljPWMucGFyZW50Tm9kZTtjPWMucXVlcnlTZWxlY3RvckFsbChcImlucHV0W25hbWU9XCIrSlNPTi5zdHJpbmdpZnkoXCJcIitiKSsnXVt0eXBlPVwicmFkaW9cIl0nKTtmb3IoYj0wO2I8Yy5sZW5ndGg7YisrKXt2YXIgZD1jW2JdO2lmKGQhPT1hJiZkLmZvcm09PT1hLmZvcm0pe3ZhciBlPURiKGQpO2lmKCFlKXRocm93IEVycm9yKHAoOTApKTtXYShkKTtiYihkLGUpfX19YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6aWIoYSxjKTticmVhaztjYXNlIFwic2VsZWN0XCI6Yj1jLnZhbHVlLG51bGwhPWImJmZiKGEsISFjLm11bHRpcGxlLGIsITEpfX07R2I9UWs7SGI9Ums7XG52YXIgc2w9e3VzaW5nQ2xpZW50RW50cnlQb2ludDohMSxFdmVudHM6W0NiLHVlLERiLEViLEZiLFFrXX0sdGw9e2ZpbmRGaWJlckJ5SG9zdEluc3RhbmNlOldjLGJ1bmRsZVR5cGU6MCx2ZXJzaW9uOlwiMTguMy4xXCIscmVuZGVyZXJQYWNrYWdlTmFtZTpcInJlYWN0LWRvbVwifTtcbnZhciB1bD17YnVuZGxlVHlwZTp0bC5idW5kbGVUeXBlLHZlcnNpb246dGwudmVyc2lvbixyZW5kZXJlclBhY2thZ2VOYW1lOnRsLnJlbmRlcmVyUGFja2FnZU5hbWUscmVuZGVyZXJDb25maWc6dGwucmVuZGVyZXJDb25maWcsb3ZlcnJpZGVIb29rU3RhdGU6bnVsbCxvdmVycmlkZUhvb2tTdGF0ZURlbGV0ZVBhdGg6bnVsbCxvdmVycmlkZUhvb2tTdGF0ZVJlbmFtZVBhdGg6bnVsbCxvdmVycmlkZVByb3BzOm51bGwsb3ZlcnJpZGVQcm9wc0RlbGV0ZVBhdGg6bnVsbCxvdmVycmlkZVByb3BzUmVuYW1lUGF0aDpudWxsLHNldEVycm9ySGFuZGxlcjpudWxsLHNldFN1c3BlbnNlSGFuZGxlcjpudWxsLHNjaGVkdWxlVXBkYXRlOm51bGwsY3VycmVudERpc3BhdGNoZXJSZWY6dWEuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixmaW5kSG9zdEluc3RhbmNlQnlGaWJlcjpmdW5jdGlvbihhKXthPVpiKGEpO3JldHVybiBudWxsPT09YT9udWxsOmEuc3RhdGVOb2RlfSxmaW5kRmliZXJCeUhvc3RJbnN0YW5jZTp0bC5maW5kRmliZXJCeUhvc3RJbnN0YW5jZXx8XG5qbCxmaW5kSG9zdEluc3RhbmNlc0ZvclJlZnJlc2g6bnVsbCxzY2hlZHVsZVJlZnJlc2g6bnVsbCxzY2hlZHVsZVJvb3Q6bnVsbCxzZXRSZWZyZXNoSGFuZGxlcjpudWxsLGdldEN1cnJlbnRGaWJlcjpudWxsLHJlY29uY2lsZXJWZXJzaW9uOlwiMTguMy4xLW5leHQtZjEzMzhmODA4MC0yMDI0MDQyNlwifTtpZihcInVuZGVmaW5lZFwiIT09dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyl7dmFyIHZsPV9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztpZighdmwuaXNEaXNhYmxlZCYmdmwuc3VwcG9ydHNGaWJlcil0cnl7a2M9dmwuaW5qZWN0KHVsKSxsYz12bH1jYXRjaChhKXt9fWV4cG9ydHMuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9c2w7XG5leHBvcnRzLmNyZWF0ZVBvcnRhbD1mdW5jdGlvbihhLGIpe3ZhciBjPTI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsO2lmKCFubChiKSl0aHJvdyBFcnJvcihwKDIwMCkpO3JldHVybiBjbChhLGIsbnVsbCxjKX07ZXhwb3J0cy5jcmVhdGVSb290PWZ1bmN0aW9uKGEsYil7aWYoIW5sKGEpKXRocm93IEVycm9yKHAoMjk5KSk7dmFyIGM9ITEsZD1cIlwiLGU9a2w7bnVsbCE9PWImJnZvaWQgMCE9PWImJighMD09PWIudW5zdGFibGVfc3RyaWN0TW9kZSYmKGM9ITApLHZvaWQgMCE9PWIuaWRlbnRpZmllclByZWZpeCYmKGQ9Yi5pZGVudGlmaWVyUHJlZml4KSx2b2lkIDAhPT1iLm9uUmVjb3ZlcmFibGVFcnJvciYmKGU9Yi5vblJlY292ZXJhYmxlRXJyb3IpKTtiPWJsKGEsMSwhMSxudWxsLG51bGwsYywhMSxkLGUpO2FbdWZdPWIuY3VycmVudDtzZig4PT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGU6YSk7cmV0dXJuIG5ldyBsbChiKX07XG5leHBvcnRzLmZpbmRET01Ob2RlPWZ1bmN0aW9uKGEpe2lmKG51bGw9PWEpcmV0dXJuIG51bGw7aWYoMT09PWEubm9kZVR5cGUpcmV0dXJuIGE7dmFyIGI9YS5fcmVhY3RJbnRlcm5hbHM7aWYodm9pZCAwPT09Yil7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEucmVuZGVyKXRocm93IEVycm9yKHAoMTg4KSk7YT1PYmplY3Qua2V5cyhhKS5qb2luKFwiLFwiKTt0aHJvdyBFcnJvcihwKDI2OCxhKSk7fWE9WmIoYik7YT1udWxsPT09YT9udWxsOmEuc3RhdGVOb2RlO3JldHVybiBhfTtleHBvcnRzLmZsdXNoU3luYz1mdW5jdGlvbihhKXtyZXR1cm4gUmsoYSl9O2V4cG9ydHMuaHlkcmF0ZT1mdW5jdGlvbihhLGIsYyl7aWYoIW9sKGIpKXRocm93IEVycm9yKHAoMjAwKSk7cmV0dXJuIHJsKG51bGwsYSxiLCEwLGMpfTtcbmV4cG9ydHMuaHlkcmF0ZVJvb3Q9ZnVuY3Rpb24oYSxiLGMpe2lmKCFubChhKSl0aHJvdyBFcnJvcihwKDQwNSkpO3ZhciBkPW51bGwhPWMmJmMuaHlkcmF0ZWRTb3VyY2VzfHxudWxsLGU9ITEsZj1cIlwiLGc9a2w7bnVsbCE9PWMmJnZvaWQgMCE9PWMmJighMD09PWMudW5zdGFibGVfc3RyaWN0TW9kZSYmKGU9ITApLHZvaWQgMCE9PWMuaWRlbnRpZmllclByZWZpeCYmKGY9Yy5pZGVudGlmaWVyUHJlZml4KSx2b2lkIDAhPT1jLm9uUmVjb3ZlcmFibGVFcnJvciYmKGc9Yy5vblJlY292ZXJhYmxlRXJyb3IpKTtiPWVsKGIsbnVsbCxhLDEsbnVsbCE9Yz9jOm51bGwsZSwhMSxmLGcpO2FbdWZdPWIuY3VycmVudDtzZihhKTtpZihkKWZvcihhPTA7YTxkLmxlbmd0aDthKyspYz1kW2FdLGU9Yy5fZ2V0VmVyc2lvbixlPWUoYy5fc291cmNlKSxudWxsPT1iLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE/Yi5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhPVtjLGVdOmIubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YS5wdXNoKGMsXG5lKTtyZXR1cm4gbmV3IG1sKGIpfTtleHBvcnRzLnJlbmRlcj1mdW5jdGlvbihhLGIsYyl7aWYoIW9sKGIpKXRocm93IEVycm9yKHAoMjAwKSk7cmV0dXJuIHJsKG51bGwsYSxiLCExLGMpfTtleHBvcnRzLnVubW91bnRDb21wb25lbnRBdE5vZGU9ZnVuY3Rpb24oYSl7aWYoIW9sKGEpKXRocm93IEVycm9yKHAoNDApKTtyZXR1cm4gYS5fcmVhY3RSb290Q29udGFpbmVyPyhSayhmdW5jdGlvbigpe3JsKG51bGwsbnVsbCxhLCExLGZ1bmN0aW9uKCl7YS5fcmVhY3RSb290Q29udGFpbmVyPW51bGw7YVt1Zl09bnVsbH0pfSksITApOiExfTtleHBvcnRzLnVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzPVFrO1xuZXhwb3J0cy51bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcj1mdW5jdGlvbihhLGIsYyxkKXtpZighb2woYykpdGhyb3cgRXJyb3IocCgyMDApKTtpZihudWxsPT1hfHx2b2lkIDA9PT1hLl9yZWFjdEludGVybmFscyl0aHJvdyBFcnJvcihwKDM4KSk7cmV0dXJuIHJsKGEsYixjLCExLGQpfTtleHBvcnRzLnZlcnNpb249XCIxOC4zLjEtbmV4dC1mMTMzOGY4MDgwLTIwMjQwNDI2XCI7XG4iLCIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIGNoZWNrRENFKCkge1xuICAvKiBnbG9iYWwgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICovXG4gIGlmIChcbiAgICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fID09PSAndW5kZWZpbmVkJyB8fFxuICAgIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UgIT09ICdmdW5jdGlvbidcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gVGhpcyBicmFuY2ggaXMgdW5yZWFjaGFibGUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkXG4gICAgLy8gaW4gcHJvZHVjdGlvbiwgYnV0IHRoZSBjb25kaXRpb24gaXMgdHJ1ZSBvbmx5IGluIGRldmVsb3BtZW50LlxuICAgIC8vIFRoZXJlZm9yZSBpZiB0aGUgYnJhbmNoIGlzIHN0aWxsIGhlcmUsIGRlYWQgY29kZSBlbGltaW5hdGlvbiB3YXNuJ3RcbiAgICAvLyBwcm9wZXJseSBhcHBsaWVkLlxuICAgIC8vIERvbid0IGNoYW5nZSB0aGUgbWVzc2FnZS4gUmVhY3QgRGV2VG9vbHMgcmVsaWVzIG9uIGl0LiBBbHNvIG1ha2Ugc3VyZVxuICAgIC8vIHRoaXMgbWVzc2FnZSBkb2Vzbid0IG9jY3VyIGVsc2V3aGVyZSBpbiB0aGlzIGZ1bmN0aW9uLCBvciBpdCB3aWxsIGNhdXNlXG4gICAgLy8gYSBmYWxzZSBwb3NpdGl2ZS5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ15fXicpO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGNvZGUgYWJvdmUgaGFzIGJlZW4gZGVhZCBjb2RlIGVsaW1pbmF0ZWQgKERDRSdkKS5cbiAgICBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UoY2hlY2tEQ0UpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBEZXZUb29scyBzaG91bGRuJ3QgY3Jhc2ggUmVhY3QsIG5vIG1hdHRlciB3aGF0LlxuICAgIC8vIFdlIHNob3VsZCBzdGlsbCByZXBvcnQgaW4gY2FzZSB3ZSBicmVhayB0aGlzIGNvZGUuXG4gICAgY29uc29sZS5lcnJvcihlcnIpO1xuICB9XG59XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIC8vIERDRSBjaGVjayBzaG91bGQgaGFwcGVuIGJlZm9yZSBSZWFjdERPTSBidW5kbGUgZXhlY3V0ZXMgc28gdGhhdFxuICAvLyBEZXZUb29scyBjYW4gcmVwb3J0IGJhZCBtaW5pZmljYXRpb24gZHVyaW5nIGluamVjdGlvbi5cbiAgY2hlY2tEQ0UoKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBtID0gcmVxdWlyZSgncmVhY3QtZG9tJyk7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBleHBvcnRzLmNyZWF0ZVJvb3QgPSBtLmNyZWF0ZVJvb3Q7XG4gIGV4cG9ydHMuaHlkcmF0ZVJvb3QgPSBtLmh5ZHJhdGVSb290O1xufSBlbHNlIHtcbiAgdmFyIGkgPSBtLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEO1xuICBleHBvcnRzLmNyZWF0ZVJvb3QgPSBmdW5jdGlvbihjLCBvKSB7XG4gICAgaS51c2luZ0NsaWVudEVudHJ5UG9pbnQgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbS5jcmVhdGVSb290KGMsIG8pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcbiAgZXhwb3J0cy5oeWRyYXRlUm9vdCA9IGZ1bmN0aW9uKGMsIGgsIG8pIHtcbiAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IHRydWU7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBtLmh5ZHJhdGVSb290KGMsIGgsIG8pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcbn1cbiIsIi8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogQ29weXJpZ2h0IDIwMjEgZUJheSBJbmMuXG5cbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZVxuICogbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIG9yIGF0XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVC5cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyoqXG4gKiBAbW9kdWxlIE5pY2VNb2RhbFxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0LCB1c2VSZWR1Y2VyLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xudmFyIHN5bU1vZGFsSWQgPSBTeW1ib2woJ05pY2VNb2RhbElkJyk7XG52YXIgaW5pdGlhbFN0YXRlID0ge307XG5leHBvcnQgdmFyIE5pY2VNb2RhbENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KGluaXRpYWxTdGF0ZSk7XG52YXIgTmljZU1vZGFsSWRDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbnZhciBNT0RBTF9SRUdJU1RSWSA9IHt9O1xudmFyIEFMUkVBRFlfTU9VTlRFRCA9IHt9O1xudmFyIHVpZFNlZWQgPSAwO1xudmFyIGRpc3BhdGNoID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTm8gZGlzcGF0Y2ggbWV0aG9kIGRldGVjdGVkLCBkaWQgeW91IGVtYmVkIHlvdXIgYXBwIHdpdGggTmljZU1vZGFsLlByb3ZpZGVyPycpO1xufTtcbnZhciBnZXRVaWQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBcIl9uaWNlX21vZGFsX1wiICsgdWlkU2VlZCsrOyB9O1xuLy8gTW9kYWwgcmVkdWNlciB1c2VkIGluIHVzZVJlZHVjZXIgaG9vay5cbmV4cG9ydCB2YXIgcmVkdWNlciA9IGZ1bmN0aW9uIChzdGF0ZSwgYWN0aW9uKSB7XG4gICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgaWYgKHN0YXRlID09PSB2b2lkIDApIHsgc3RhdGUgPSBpbml0aWFsU3RhdGU7IH1cbiAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICAgIGNhc2UgJ25pY2UtbW9kYWwvc2hvdyc6IHtcbiAgICAgICAgICAgIHZhciBfZCA9IGFjdGlvbi5wYXlsb2FkLCBtb2RhbElkID0gX2QubW9kYWxJZCwgYXJncyA9IF9kLmFyZ3M7XG4gICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIHN0YXRlKSwgKF9hID0ge30sIF9hW21vZGFsSWRdID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHN0YXRlW21vZGFsSWRdKSwgeyBpZDogbW9kYWxJZCwgYXJnczogYXJncywgXG4gICAgICAgICAgICAgICAgLy8gSWYgbW9kYWwgaXMgbm90IG1vdW50ZWQsIG1vdW50IGl0IGZpcnN0IHRoZW4gbWFrZSBpdCB2aXNpYmxlLlxuICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIGxvZ2ljIGluc2lkZSBIT0Mgd3JhcHBlciB0byBtYWtlIGl0IHZpc2libGUgYWZ0ZXIgaXRzIGZpcnN0IG1vdW50LlxuICAgICAgICAgICAgICAgIC8vIFRoaXMgbWVjaGFuaXNtIGVuc3VyZXMgdGhlIGVudGVyaW5nIHRyYW5zaXRpb24uXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogISFBTFJFQURZX01PVU5URURbbW9kYWxJZF0sIGRlbGF5VmlzaWJsZTogIUFMUkVBRFlfTU9VTlRFRFttb2RhbElkXSB9KSwgX2EpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICduaWNlLW1vZGFsL2hpZGUnOiB7XG4gICAgICAgICAgICB2YXIgbW9kYWxJZCA9IGFjdGlvbi5wYXlsb2FkLm1vZGFsSWQ7XG4gICAgICAgICAgICBpZiAoIXN0YXRlW21vZGFsSWRdKVxuICAgICAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RhdGUpLCAoX2IgPSB7fSwgX2JbbW9kYWxJZF0gPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RhdGVbbW9kYWxJZF0pLCB7IHZpc2libGU6IGZhbHNlIH0pLCBfYikpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ25pY2UtbW9kYWwvcmVtb3ZlJzoge1xuICAgICAgICAgICAgdmFyIG1vZGFsSWQgPSBhY3Rpb24ucGF5bG9hZC5tb2RhbElkO1xuICAgICAgICAgICAgdmFyIG5ld1N0YXRlID0gX19hc3NpZ24oe30sIHN0YXRlKTtcbiAgICAgICAgICAgIGRlbGV0ZSBuZXdTdGF0ZVttb2RhbElkXTtcbiAgICAgICAgICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICduaWNlLW1vZGFsL3NldC1mbGFncyc6IHtcbiAgICAgICAgICAgIHZhciBfZSA9IGFjdGlvbi5wYXlsb2FkLCBtb2RhbElkID0gX2UubW9kYWxJZCwgZmxhZ3MgPSBfZS5mbGFncztcbiAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RhdGUpLCAoX2MgPSB7fSwgX2NbbW9kYWxJZF0gPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RhdGVbbW9kYWxJZF0pLCBmbGFncyksIF9jKSk7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG59O1xuLy8gR2V0IG1vZGFsIGNvbXBvbmVudCBieSBtb2RhbCBpZFxuZnVuY3Rpb24gZ2V0TW9kYWwobW9kYWxJZCkge1xuICAgIHZhciBfYTtcbiAgICByZXR1cm4gKF9hID0gTU9EQUxfUkVHSVNUUllbbW9kYWxJZF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jb21wO1xufVxuLy8gYWN0aW9uIGNyZWF0b3IgdG8gc2hvdyBhIG1vZGFsXG5mdW5jdGlvbiBzaG93TW9kYWwobW9kYWxJZCwgYXJncykge1xuICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICduaWNlLW1vZGFsL3Nob3cnLFxuICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBtb2RhbElkOiBtb2RhbElkLFxuICAgICAgICAgICAgYXJnczogYXJncyxcbiAgICAgICAgfSxcbiAgICB9O1xufVxuLy8gYWN0aW9uIGNyZWF0b3IgdG8gc2V0IGZsYWdzIG9mIGEgbW9kYWxcbmZ1bmN0aW9uIHNldE1vZGFsRmxhZ3MobW9kYWxJZCwgZmxhZ3MpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAnbmljZS1tb2RhbC9zZXQtZmxhZ3MnLFxuICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBtb2RhbElkOiBtb2RhbElkLFxuICAgICAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB9LFxuICAgIH07XG59XG4vLyBhY3Rpb24gY3JlYXRvciB0byBoaWRlIGEgbW9kYWxcbmZ1bmN0aW9uIGhpZGVNb2RhbChtb2RhbElkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ25pY2UtbW9kYWwvaGlkZScsXG4gICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIG1vZGFsSWQ6IG1vZGFsSWQsXG4gICAgICAgIH0sXG4gICAgfTtcbn1cbi8vIGFjdGlvbiBjcmVhdG9yIHRvIHJlbW92ZSBhIG1vZGFsXG5mdW5jdGlvbiByZW1vdmVNb2RhbChtb2RhbElkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ25pY2UtbW9kYWwvcmVtb3ZlJyxcbiAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgbW9kYWxJZDogbW9kYWxJZCxcbiAgICAgICAgfSxcbiAgICB9O1xufVxudmFyIG1vZGFsQ2FsbGJhY2tzID0ge307XG52YXIgaGlkZU1vZGFsQ2FsbGJhY2tzID0ge307XG52YXIgZ2V0TW9kYWxJZCA9IGZ1bmN0aW9uIChtb2RhbCkge1xuICAgIGlmICh0eXBlb2YgbW9kYWwgPT09ICdzdHJpbmcnKVxuICAgICAgICByZXR1cm4gbW9kYWw7XG4gICAgaWYgKCFtb2RhbFtzeW1Nb2RhbElkXSkge1xuICAgICAgICBtb2RhbFtzeW1Nb2RhbElkXSA9IGdldFVpZCgpO1xuICAgIH1cbiAgICByZXR1cm4gbW9kYWxbc3ltTW9kYWxJZF07XG59O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXNcbmV4cG9ydCBmdW5jdGlvbiBzaG93KG1vZGFsLCBhcmdzKSB7XG4gICAgdmFyIG1vZGFsSWQgPSBnZXRNb2RhbElkKG1vZGFsKTtcbiAgICBpZiAodHlwZW9mIG1vZGFsICE9PSAnc3RyaW5nJyAmJiAhTU9EQUxfUkVHSVNUUllbbW9kYWxJZF0pIHtcbiAgICAgICAgcmVnaXN0ZXIobW9kYWxJZCwgbW9kYWwpO1xuICAgIH1cbiAgICBkaXNwYXRjaChzaG93TW9kYWwobW9kYWxJZCwgYXJncykpO1xuICAgIGlmICghbW9kYWxDYWxsYmFja3NbbW9kYWxJZF0pIHtcbiAgICAgICAgLy8gYCFgIHRlbGwgdHMgdGhhdCB0aGVSZXNvbHZlIHdpbGwgYmUgd3JpdHRlbiBiZWZvcmUgaXQgaXMgdXNlZFxuICAgICAgICB2YXIgdGhlUmVzb2x2ZV8xO1xuICAgICAgICAvLyBgIWAgdGVsbCB0cyB0aGF0IHRoZVJlc29sdmUgd2lsbCBiZSB3cml0dGVuIGJlZm9yZSBpdCBpcyB1c2VkXG4gICAgICAgIHZhciB0aGVSZWplY3RfMTtcbiAgICAgICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB0aGVSZXNvbHZlXzEgPSByZXNvbHZlO1xuICAgICAgICAgICAgdGhlUmVqZWN0XzEgPSByZWplY3Q7XG4gICAgICAgIH0pO1xuICAgICAgICBtb2RhbENhbGxiYWNrc1ttb2RhbElkXSA9IHtcbiAgICAgICAgICAgIHJlc29sdmU6IHRoZVJlc29sdmVfMSxcbiAgICAgICAgICAgIHJlamVjdDogdGhlUmVqZWN0XzEsXG4gICAgICAgICAgICBwcm9taXNlOiBwcm9taXNlLFxuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbW9kYWxDYWxsYmFja3NbbW9kYWxJZF0ucHJvbWlzZTtcbn1cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzXG5leHBvcnQgZnVuY3Rpb24gaGlkZShtb2RhbCkge1xuICAgIHZhciBtb2RhbElkID0gZ2V0TW9kYWxJZChtb2RhbCk7XG4gICAgZGlzcGF0Y2goaGlkZU1vZGFsKG1vZGFsSWQpKTtcbiAgICAvLyBTaG91bGQgYWxzbyBkZWxldGUgdGhlIGNhbGxiYWNrIGZvciBtb2RhbC5yZXNvbHZlICMzNVxuICAgIGRlbGV0ZSBtb2RhbENhbGxiYWNrc1ttb2RhbElkXTtcbiAgICBpZiAoIWhpZGVNb2RhbENhbGxiYWNrc1ttb2RhbElkXSkge1xuICAgICAgICAvLyBgIWAgdGVsbCB0cyB0aGF0IHRoZVJlc29sdmUgd2lsbCBiZSB3cml0dGVuIGJlZm9yZSBpdCBpcyB1c2VkXG4gICAgICAgIHZhciB0aGVSZXNvbHZlXzI7XG4gICAgICAgIC8vIGAhYCB0ZWxsIHRzIHRoYXQgdGhlUmVzb2x2ZSB3aWxsIGJlIHdyaXR0ZW4gYmVmb3JlIGl0IGlzIHVzZWRcbiAgICAgICAgdmFyIHRoZVJlamVjdF8yO1xuICAgICAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHRoZVJlc29sdmVfMiA9IHJlc29sdmU7XG4gICAgICAgICAgICB0aGVSZWplY3RfMiA9IHJlamVjdDtcbiAgICAgICAgfSk7XG4gICAgICAgIGhpZGVNb2RhbENhbGxiYWNrc1ttb2RhbElkXSA9IHtcbiAgICAgICAgICAgIHJlc29sdmU6IHRoZVJlc29sdmVfMixcbiAgICAgICAgICAgIHJlamVjdDogdGhlUmVqZWN0XzIsXG4gICAgICAgICAgICBwcm9taXNlOiBwcm9taXNlLFxuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gaGlkZU1vZGFsQ2FsbGJhY2tzW21vZGFsSWRdLnByb21pc2U7XG59XG5leHBvcnQgdmFyIHJlbW92ZSA9IGZ1bmN0aW9uIChtb2RhbCkge1xuICAgIHZhciBtb2RhbElkID0gZ2V0TW9kYWxJZChtb2RhbCk7XG4gICAgZGlzcGF0Y2gocmVtb3ZlTW9kYWwobW9kYWxJZCkpO1xuICAgIGRlbGV0ZSBtb2RhbENhbGxiYWNrc1ttb2RhbElkXTtcbiAgICBkZWxldGUgaGlkZU1vZGFsQ2FsbGJhY2tzW21vZGFsSWRdO1xufTtcbnZhciBzZXRGbGFncyA9IGZ1bmN0aW9uIChtb2RhbElkLCBmbGFncykge1xuICAgIGRpc3BhdGNoKHNldE1vZGFsRmxhZ3MobW9kYWxJZCwgZmxhZ3MpKTtcbn07XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU1vZGFsKG1vZGFsLCBhcmdzKSB7XG4gICAgdmFyIG1vZGFscyA9IHVzZUNvbnRleHQoTmljZU1vZGFsQ29udGV4dCk7XG4gICAgdmFyIGNvbnRleHRNb2RhbElkID0gdXNlQ29udGV4dChOaWNlTW9kYWxJZENvbnRleHQpO1xuICAgIHZhciBtb2RhbElkID0gbnVsbDtcbiAgICB2YXIgaXNVc2VDb21wb25lbnQgPSBtb2RhbCAmJiB0eXBlb2YgbW9kYWwgIT09ICdzdHJpbmcnO1xuICAgIGlmICghbW9kYWwpIHtcbiAgICAgICAgbW9kYWxJZCA9IGNvbnRleHRNb2RhbElkO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbW9kYWxJZCA9IGdldE1vZGFsSWQobW9kYWwpO1xuICAgIH1cbiAgICAvLyBPbmx5IGlmIGNvbnRleHRNb2RhbElkIGRvZXNuJ3QgZXhpc3RcbiAgICBpZiAoIW1vZGFsSWQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gbW9kYWwgaWQgZm91bmQgaW4gTmljZU1vZGFsLnVzZU1vZGFsLicpO1xuICAgIHZhciBtaWQgPSBtb2RhbElkO1xuICAgIC8vIElmIHVzZSBhIGNvbXBvbmVudCBkaXJlY3RseSwgcmVnaXN0ZXIgaXQuXG4gICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGlzVXNlQ29tcG9uZW50ICYmICFNT0RBTF9SRUdJU1RSWVttaWRdKSB7XG4gICAgICAgICAgICByZWdpc3RlcihtaWQsIG1vZGFsLCBhcmdzKTtcbiAgICAgICAgfVxuICAgIH0sIFtpc1VzZUNvbXBvbmVudCwgbWlkLCBtb2RhbCwgYXJnc10pO1xuICAgIHZhciBtb2RhbEluZm8gPSBtb2RhbHNbbWlkXTtcbiAgICB2YXIgc2hvd0NhbGxiYWNrID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGFyZ3MpIHsgcmV0dXJuIHNob3cobWlkLCBhcmdzKTsgfSwgW21pZF0pO1xuICAgIHZhciBoaWRlQ2FsbGJhY2sgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7IHJldHVybiBoaWRlKG1pZCk7IH0sIFttaWRdKTtcbiAgICB2YXIgcmVtb3ZlQ2FsbGJhY2sgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7IHJldHVybiByZW1vdmUobWlkKTsgfSwgW21pZF0pO1xuICAgIHZhciByZXNvbHZlQ2FsbGJhY2sgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoYXJncykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIChfYSA9IG1vZGFsQ2FsbGJhY2tzW21pZF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZXNvbHZlKGFyZ3MpO1xuICAgICAgICBkZWxldGUgbW9kYWxDYWxsYmFja3NbbWlkXTtcbiAgICB9LCBbbWlkXSk7XG4gICAgdmFyIHJlamVjdENhbGxiYWNrID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICAoX2EgPSBtb2RhbENhbGxiYWNrc1ttaWRdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVqZWN0KGFyZ3MpO1xuICAgICAgICBkZWxldGUgbW9kYWxDYWxsYmFja3NbbWlkXTtcbiAgICB9LCBbbWlkXSk7XG4gICAgdmFyIHJlc29sdmVIaWRlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICAoX2EgPSBoaWRlTW9kYWxDYWxsYmFja3NbbWlkXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnJlc29sdmUoYXJncyk7XG4gICAgICAgIGRlbGV0ZSBoaWRlTW9kYWxDYWxsYmFja3NbbWlkXTtcbiAgICB9LCBbbWlkXSk7XG4gICAgcmV0dXJuIHVzZU1lbW8oZnVuY3Rpb24gKCkgeyByZXR1cm4gKHtcbiAgICAgICAgaWQ6IG1pZCxcbiAgICAgICAgYXJnczogbW9kYWxJbmZvID09PSBudWxsIHx8IG1vZGFsSW5mbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbW9kYWxJbmZvLmFyZ3MsXG4gICAgICAgIHZpc2libGU6ICEhKG1vZGFsSW5mbyA9PT0gbnVsbCB8fCBtb2RhbEluZm8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1vZGFsSW5mby52aXNpYmxlKSxcbiAgICAgICAga2VlcE1vdW50ZWQ6ICEhKG1vZGFsSW5mbyA9PT0gbnVsbCB8fCBtb2RhbEluZm8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1vZGFsSW5mby5rZWVwTW91bnRlZCksXG4gICAgICAgIHNob3c6IHNob3dDYWxsYmFjayxcbiAgICAgICAgaGlkZTogaGlkZUNhbGxiYWNrLFxuICAgICAgICByZW1vdmU6IHJlbW92ZUNhbGxiYWNrLFxuICAgICAgICByZXNvbHZlOiByZXNvbHZlQ2FsbGJhY2ssXG4gICAgICAgIHJlamVjdDogcmVqZWN0Q2FsbGJhY2ssXG4gICAgICAgIHJlc29sdmVIaWRlOiByZXNvbHZlSGlkZSxcbiAgICB9KTsgfSwgW1xuICAgICAgICBtaWQsXG4gICAgICAgIG1vZGFsSW5mbyA9PT0gbnVsbCB8fCBtb2RhbEluZm8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1vZGFsSW5mby5hcmdzLFxuICAgICAgICBtb2RhbEluZm8gPT09IG51bGwgfHwgbW9kYWxJbmZvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBtb2RhbEluZm8udmlzaWJsZSxcbiAgICAgICAgbW9kYWxJbmZvID09PSBudWxsIHx8IG1vZGFsSW5mbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbW9kYWxJbmZvLmtlZXBNb3VudGVkLFxuICAgICAgICBzaG93Q2FsbGJhY2ssXG4gICAgICAgIGhpZGVDYWxsYmFjayxcbiAgICAgICAgcmVtb3ZlQ2FsbGJhY2ssXG4gICAgICAgIHJlc29sdmVDYWxsYmFjayxcbiAgICAgICAgcmVqZWN0Q2FsbGJhY2ssXG4gICAgICAgIHJlc29sdmVIaWRlLFxuICAgIF0pO1xufVxuZXhwb3J0IHZhciBjcmVhdGUgPSBmdW5jdGlvbiAoQ29tcCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIF9iO1xuICAgICAgICB2YXIgZGVmYXVsdFZpc2libGUgPSBfYS5kZWZhdWx0VmlzaWJsZSwga2VlcE1vdW50ZWQgPSBfYS5rZWVwTW91bnRlZCwgaWQgPSBfYS5pZCwgcHJvcHMgPSBfX3Jlc3QoX2EsIFtcImRlZmF1bHRWaXNpYmxlXCIsIFwia2VlcE1vdW50ZWRcIiwgXCJpZFwiXSk7XG4gICAgICAgIHZhciBfYyA9IHVzZU1vZGFsKGlkKSwgYXJncyA9IF9jLmFyZ3MsIHNob3cgPSBfYy5zaG93O1xuICAgICAgICAvLyBJZiB0aGVyZSdzIG1vZGFsIHN0YXRlLCB0aGVuIHNob3VsZCBtb3VudCBpdC5cbiAgICAgICAgdmFyIG1vZGFscyA9IHVzZUNvbnRleHQoTmljZU1vZGFsQ29udGV4dCk7XG4gICAgICAgIHZhciBzaG91bGRNb3VudCA9ICEhbW9kYWxzW2lkXTtcbiAgICAgICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vIElmIGRlZmF1bHRWaXNpYmxlLCBzaG93IGl0IGFmdGVyIG1vdW50ZWQuXG4gICAgICAgICAgICBpZiAoZGVmYXVsdFZpc2libGUpIHtcbiAgICAgICAgICAgICAgICBzaG93KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBBTFJFQURZX01PVU5URURbaWRdID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIEFMUkVBRFlfTU9VTlRFRFtpZF07XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LCBbaWQsIHNob3csIGRlZmF1bHRWaXNpYmxlXSk7XG4gICAgICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoa2VlcE1vdW50ZWQpXG4gICAgICAgICAgICAgICAgc2V0RmxhZ3MoaWQsIHsga2VlcE1vdW50ZWQ6IHRydWUgfSk7XG4gICAgICAgIH0sIFtpZCwga2VlcE1vdW50ZWRdKTtcbiAgICAgICAgdmFyIGRlbGF5VmlzaWJsZSA9IChfYiA9IG1vZGFsc1tpZF0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5kZWxheVZpc2libGU7XG4gICAgICAgIC8vIElmIG1vZGFsLnNob3cgaXMgY2FsbGVkXG4gICAgICAgIC8vICAxLiBJZiBtb2RhbCB3YXMgbW91bnRlZCwgc2hvdWxkIG1ha2UgaXQgdmlzaWJsZSBkaXJlY3RseVxuICAgICAgICAvLyAgMi4gSWYgbW9kYWwgaGFzIG5vdCBiZWVuIG1vdW50ZWQsIHNob3VsZCBtb3VudCBpdCBmaXJzdCwgdGhlbiBtYWtlIGl0IHZpc2libGVcbiAgICAgICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChkZWxheVZpc2libGUpIHtcbiAgICAgICAgICAgICAgICAvLyBkZWxheVZpc2libGU6IGZhbHNlID0+IHRydWUsIGl0IG1lYW5zIHRoZSBtb2RhbC5zaG93KCkgaXMgY2FsbGVkLCBzaG91bGQgc2hvdyBpdC5cbiAgICAgICAgICAgICAgICBzaG93KGFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBbZGVsYXlWaXNpYmxlLCBhcmdzLCBzaG93XSk7XG4gICAgICAgIGlmICghc2hvdWxkTW91bnQpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KE5pY2VNb2RhbElkQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogaWQgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29tcCwgX19hc3NpZ24oe30sIHByb3BzLCBhcmdzKSkpKTtcbiAgICB9O1xufTtcbi8vIEFsbCByZWdpc3RlcmVkIG1vZGFscyB3aWxsIGJlIHJlbmRlcmVkIGluIG1vZGFsIHBsYWNlaG9sZGVyXG5leHBvcnQgdmFyIHJlZ2lzdGVyID0gZnVuY3Rpb24gKGlkLCBjb21wLCBwcm9wcykge1xuICAgIGlmICghTU9EQUxfUkVHSVNUUllbaWRdKSB7XG4gICAgICAgIE1PREFMX1JFR0lTVFJZW2lkXSA9IHsgY29tcDogY29tcCwgcHJvcHM6IHByb3BzIH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBNT0RBTF9SRUdJU1RSWVtpZF0ucHJvcHMgPSBwcm9wcztcbiAgICB9XG59O1xuLyoqXG4gKiBVbnJlZ2lzdGVyIGEgbW9kYWwuXG4gKiBAcGFyYW0gaWQgLSBUaGUgaWQgb2YgdGhlIG1vZGFsLlxuICovXG5leHBvcnQgdmFyIHVucmVnaXN0ZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICBkZWxldGUgTU9EQUxfUkVHSVNUUllbaWRdO1xufTtcbi8vIFRoZSBwbGFjZWhvbGRlciBjb21wb25lbnQgaXMgdXNlZCB0byBhdXRvIHJlbmRlciBtb2RhbHMgd2hlbiBjYWxsIG1vZGFsLnNob3coKVxuLy8gV2hlbiBtb2RhbC5zaG93KCkgaXMgY2FsbGVkLCBpdCBtZWFucyB0aGVyZSd2ZSBiZWVuIG1vZGFsIGluZm9cbnZhciBOaWNlTW9kYWxQbGFjZWhvbGRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbW9kYWxzID0gdXNlQ29udGV4dChOaWNlTW9kYWxDb250ZXh0KTtcbiAgICB2YXIgdmlzaWJsZU1vZGFsSWRzID0gT2JqZWN0LmtleXMobW9kYWxzKS5maWx0ZXIoZnVuY3Rpb24gKGlkKSB7IHJldHVybiAhIW1vZGFsc1tpZF07IH0pO1xuICAgIHZpc2libGVNb2RhbElkcy5mb3JFYWNoKGZ1bmN0aW9uIChpZCkge1xuICAgICAgICBpZiAoIU1PREFMX1JFR0lTVFJZW2lkXSAmJiAhQUxSRUFEWV9NT1VOVEVEW2lkXSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiTm8gbW9kYWwgZm91bmQgZm9yIGlkOiBcIiArIGlkICsgXCIuIFBsZWFzZSBjaGVjayB0aGUgaWQgb3IgaWYgaXQgaXMgcmVnaXN0ZXJlZCBvciBkZWNsYXJlZCB2aWEgSlNYLlwiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHZhciB0b1JlbmRlciA9IHZpc2libGVNb2RhbElkc1xuICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChpZCkgeyByZXR1cm4gTU9EQUxfUkVHSVNUUllbaWRdOyB9KVxuICAgICAgICAubWFwKGZ1bmN0aW9uIChpZCkgeyByZXR1cm4gKF9fYXNzaWduKHsgaWQ6IGlkIH0sIE1PREFMX1JFR0lTVFJZW2lkXSkpOyB9KTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIHRvUmVuZGVyLm1hcChmdW5jdGlvbiAodCkgeyByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQodC5jb21wLCBfX2Fzc2lnbih7IGtleTogdC5pZCwgaWQ6IHQuaWQgfSwgdC5wcm9wcykpKTsgfSkpKTtcbn07XG52YXIgSW5uZXJDb250ZXh0UHJvdmlkZXIgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBfYS5jaGlsZHJlbjtcbiAgICB2YXIgYXJyID0gdXNlUmVkdWNlcihyZWR1Y2VyLCBpbml0aWFsU3RhdGUpO1xuICAgIHZhciBtb2RhbHMgPSBhcnJbMF07XG4gICAgZGlzcGF0Y2ggPSBhcnJbMV07XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KE5pY2VNb2RhbENvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IG1vZGFscyB9LFxuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChOaWNlTW9kYWxQbGFjZWhvbGRlciwgbnVsbCkpKTtcbn07XG5leHBvcnQgdmFyIFByb3ZpZGVyID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gX2EuY2hpbGRyZW4sIGdpdmVuRGlzcGF0Y2ggPSBfYS5kaXNwYXRjaCwgZ2l2ZW5Nb2RhbHMgPSBfYS5tb2RhbHM7XG4gICAgaWYgKCFnaXZlbkRpc3BhdGNoIHx8ICFnaXZlbk1vZGFscykge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChJbm5lckNvbnRleHRQcm92aWRlciwgbnVsbCwgY2hpbGRyZW4pO1xuICAgIH1cbiAgICBkaXNwYXRjaCA9IGdpdmVuRGlzcGF0Y2g7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KE5pY2VNb2RhbENvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGdpdmVuTW9kYWxzIH0sXG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KE5pY2VNb2RhbFBsYWNlaG9sZGVyLCBudWxsKSkpO1xufTtcbi8qKlxuICogRGVjbGFyYXRpdmUgd2F5IHRvIHJlZ2lzdGVyIGEgbW9kYWwuXG4gKiBAcGFyYW0gaWQgLSBUaGUgaWQgb2YgdGhlIG1vZGFsLlxuICogQHBhcmFtIGNvbXBvbmVudCAtIFRoZSBtb2RhbCBDb21wb25lbnQuXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgdmFyIE1vZGFsRGVmID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIGlkID0gX2EuaWQsIGNvbXBvbmVudCA9IF9hLmNvbXBvbmVudDtcbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICByZWdpc3RlcihpZCwgY29tcG9uZW50KTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHVucmVnaXN0ZXIoaWQpO1xuICAgICAgICB9O1xuICAgIH0sIFtpZCwgY29tcG9uZW50XSk7XG4gICAgcmV0dXJuIG51bGw7XG59O1xuLyoqXG4gKiBBIHBsYWNlIGhvbGRlciBhbGxvd3MgdG8gYmluZCBwcm9wcyB0byBhIG1vZGFsLlxuICogSXQgYXNzaWducyBzaG93L2hpZGUgbWV0aG9kcyB0byBoYW5kbGVyIG9iamVjdCB0byBzaG93L2hpZGUgdGhlIG1vZGFsLlxuICpcbiAqIENvbXBhcmluZyB0byB1c2UgdGhlIDxNeU5pY2VNb2RhbCBpZD0uLi8+IGRpcmVjdGx5LCB0aGlzIGFwcHJvYWNoIGFsbG93cyB1c2UgcmVnaXN0ZXJlZCBtb2RhbCBpZCB0byBmaW5kIHRoZSBtb2RhbCBjb21wb25lbnQuXG4gKiBBbHNvIGl0IGF2b2lkcyB0byBjcmVhdGUgdW5pcXVlIGlkIGZvciBNeU5pY2VNb2RhbC5cbiAqXG4gKiBAcGFyYW0gbW9kYWwgLSBUaGUgbW9kYWwgaWQgcmVnaXN0ZXJlZCBvciBhIG1vZGFsIGNvbXBvbmVudC5cbiAqIEBwYXJhbSBoYW5kbGVyIC0gVGhlIGhhbmRsZXIgb2JqZWN0IHRvIGNvbnRyb2wgdGhlIG1vZGFsLlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IHZhciBNb2RhbEhvbGRlciA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBfYjtcbiAgICB2YXIgbW9kYWwgPSBfYS5tb2RhbCwgX2MgPSBfYS5oYW5kbGVyLCBoYW5kbGVyID0gX2MgPT09IHZvaWQgMCA/IHt9IDogX2MsIHJlc3RQcm9wcyA9IF9fcmVzdChfYSwgW1wibW9kYWxcIiwgXCJoYW5kbGVyXCJdKTtcbiAgICB2YXIgbWlkID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7IHJldHVybiBnZXRVaWQoKTsgfSwgW10pO1xuICAgIHZhciBNb2RhbENvbXAgPSB0eXBlb2YgbW9kYWwgPT09ICdzdHJpbmcnID8gKF9iID0gTU9EQUxfUkVHSVNUUllbbW9kYWxdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY29tcCA6IG1vZGFsO1xuICAgIGlmICghaGFuZGxlcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGhhbmRsZXIgZm91bmQgaW4gTmljZU1vZGFsLk1vZGFsSG9sZGVyLicpO1xuICAgIH1cbiAgICBpZiAoIU1vZGFsQ29tcCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBtb2RhbCBmb3VuZCBmb3IgaWQ6IFwiICsgbW9kYWwgKyBcIiBpbiBOaWNlTW9kYWwuTW9kYWxIb2xkZXIuXCIpO1xuICAgIH1cbiAgICBoYW5kbGVyLnNob3cgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoYXJncykgeyByZXR1cm4gc2hvdyhtaWQsIGFyZ3MpOyB9LCBbbWlkXSk7XG4gICAgaGFuZGxlci5oaWRlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkgeyByZXR1cm4gaGlkZShtaWQpOyB9LCBbbWlkXSk7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTW9kYWxDb21wLCBfX2Fzc2lnbih7IGlkOiBtaWQgfSwgcmVzdFByb3BzKSk7XG59O1xuZXhwb3J0IHZhciBhbnRkTW9kYWwgPSBmdW5jdGlvbiAobW9kYWwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB2aXNpYmxlOiBtb2RhbC52aXNpYmxlLFxuICAgICAgICBvbk9rOiBmdW5jdGlvbiAoKSB7IHJldHVybiBtb2RhbC5oaWRlKCk7IH0sXG4gICAgICAgIG9uQ2FuY2VsOiBmdW5jdGlvbiAoKSB7IHJldHVybiBtb2RhbC5oaWRlKCk7IH0sXG4gICAgICAgIGFmdGVyQ2xvc2U6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vIE5lZWQgdG8gcmVzb2x2ZSBiZWZvcmUgcmVtb3ZlXG4gICAgICAgICAgICBtb2RhbC5yZXNvbHZlSGlkZSgpO1xuICAgICAgICAgICAgaWYgKCFtb2RhbC5rZWVwTW91bnRlZClcbiAgICAgICAgICAgICAgICBtb2RhbC5yZW1vdmUoKTtcbiAgICAgICAgfSxcbiAgICB9O1xufTtcbmV4cG9ydCB2YXIgYW50ZE1vZGFsVjUgPSBmdW5jdGlvbiAobW9kYWwpIHtcbiAgICB2YXIgX2EgPSBhbnRkTW9kYWwobW9kYWwpLCBvbk9rID0gX2Eub25Paywgb25DYW5jZWwgPSBfYS5vbkNhbmNlbCwgYWZ0ZXJDbG9zZSA9IF9hLmFmdGVyQ2xvc2U7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgb3BlbjogbW9kYWwudmlzaWJsZSxcbiAgICAgICAgb25Pazogb25PayxcbiAgICAgICAgb25DYW5jZWw6IG9uQ2FuY2VsLFxuICAgICAgICBhZnRlckNsb3NlOiBhZnRlckNsb3NlLFxuICAgIH07XG59O1xuZXhwb3J0IHZhciBhbnRkRHJhd2VyID0gZnVuY3Rpb24gKG1vZGFsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdmlzaWJsZTogbW9kYWwudmlzaWJsZSxcbiAgICAgICAgb25DbG9zZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gbW9kYWwuaGlkZSgpOyB9LFxuICAgICAgICBhZnRlclZpc2libGVDaGFuZ2U6IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICBpZiAoIXYpIHtcbiAgICAgICAgICAgICAgICBtb2RhbC5yZXNvbHZlSGlkZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgIXYgJiYgIW1vZGFsLmtlZXBNb3VudGVkICYmIG1vZGFsLnJlbW92ZSgpO1xuICAgICAgICB9LFxuICAgIH07XG59O1xuZXhwb3J0IHZhciBhbnRkRHJhd2VyVjUgPSBmdW5jdGlvbiAobW9kYWwpIHtcbiAgICB2YXIgX2EgPSBhbnRkRHJhd2VyKG1vZGFsKSwgb25DbG9zZSA9IF9hLm9uQ2xvc2UsIGFmdGVyT3BlbkNoYW5nZSA9IF9hLmFmdGVyVmlzaWJsZUNoYW5nZTtcbiAgICByZXR1cm4ge1xuICAgICAgICBvcGVuOiBtb2RhbC52aXNpYmxlLFxuICAgICAgICBvbkNsb3NlOiBvbkNsb3NlLFxuICAgICAgICBhZnRlck9wZW5DaGFuZ2U6IGFmdGVyT3BlbkNoYW5nZSxcbiAgICB9O1xufTtcbmV4cG9ydCB2YXIgbXVpRGlhbG9nID0gZnVuY3Rpb24gKG1vZGFsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgb3BlbjogbW9kYWwudmlzaWJsZSxcbiAgICAgICAgb25DbG9zZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gbW9kYWwuaGlkZSgpOyB9LFxuICAgICAgICBvbkV4aXRlZDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbW9kYWwucmVzb2x2ZUhpZGUoKTtcbiAgICAgICAgICAgICFtb2RhbC5rZWVwTW91bnRlZCAmJiBtb2RhbC5yZW1vdmUoKTtcbiAgICAgICAgfSxcbiAgICB9O1xufTtcbmV4cG9ydCB2YXIgbXVpRGlhbG9nVjUgPSBmdW5jdGlvbiAobW9kYWwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBvcGVuOiBtb2RhbC52aXNpYmxlLFxuICAgICAgICBvbkNsb3NlOiBmdW5jdGlvbiAoKSB7IHJldHVybiBtb2RhbC5oaWRlKCk7IH0sXG4gICAgICAgIFRyYW5zaXRpb25Qcm9wczoge1xuICAgICAgICAgICAgb25FeGl0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBtb2RhbC5yZXNvbHZlSGlkZSgpO1xuICAgICAgICAgICAgICAgICFtb2RhbC5rZWVwTW91bnRlZCAmJiBtb2RhbC5yZW1vdmUoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfTtcbn07XG5leHBvcnQgdmFyIGJvb3RzdHJhcERpYWxvZyA9IGZ1bmN0aW9uIChtb2RhbCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHNob3c6IG1vZGFsLnZpc2libGUsXG4gICAgICAgIG9uSGlkZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gbW9kYWwuaGlkZSgpOyB9LFxuICAgICAgICBvbkV4aXRlZDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbW9kYWwucmVzb2x2ZUhpZGUoKTtcbiAgICAgICAgICAgICFtb2RhbC5rZWVwTW91bnRlZCAmJiBtb2RhbC5yZW1vdmUoKTtcbiAgICAgICAgfSxcbiAgICB9O1xufTtcbnZhciBOaWNlTW9kYWwgPSB7XG4gICAgUHJvdmlkZXI6IFByb3ZpZGVyLFxuICAgIE1vZGFsRGVmOiBNb2RhbERlZixcbiAgICBNb2RhbEhvbGRlcjogTW9kYWxIb2xkZXIsXG4gICAgTmljZU1vZGFsQ29udGV4dDogTmljZU1vZGFsQ29udGV4dCxcbiAgICBjcmVhdGU6IGNyZWF0ZSxcbiAgICByZWdpc3RlcjogcmVnaXN0ZXIsXG4gICAgZ2V0TW9kYWw6IGdldE1vZGFsLFxuICAgIHNob3c6IHNob3csXG4gICAgaGlkZTogaGlkZSxcbiAgICByZW1vdmU6IHJlbW92ZSxcbiAgICB1c2VNb2RhbDogdXNlTW9kYWwsXG4gICAgcmVkdWNlcjogcmVkdWNlcixcbiAgICBhbnRkTW9kYWw6IGFudGRNb2RhbCxcbiAgICBhbnRkRHJhd2VyOiBhbnRkRHJhd2VyLFxuICAgIG11aURpYWxvZzogbXVpRGlhbG9nLFxuICAgIGJvb3RzdHJhcERpYWxvZzogYm9vdHN0cmFwRGlhbG9nLFxufTtcbmV4cG9ydCBkZWZhdWx0IE5pY2VNb2RhbDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIlxuZXhwb3J0IGNsYXNzIFNob3Age1xuICAgIGlkOiBudW1iZXIgPSAwXG4gICAgbmFtZTogc3RyaW5nID0gXCJcIlxuICAgIHV1aWQ6IHN0cmluZyA9IFwiXCJcbiAgICBiYXNrZXRGaWVsZDE6IHN0cmluZyA9IFwiXCJcbiAgICBiYXNrZXRGaWVsZDI6IHN0cmluZyA9IFwiXCJcbiAgICBiYXNrZXRQb3NGaWVsZDE6IHN0cmluZyA9IFwiXCJcbiAgICBiYXNrZXRQb3NGaWVsZDI6IHN0cmluZyA9IFwiXCJcblxuICAgIHBhcnNlRnJvbUpzb24oaXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMuaWQgPSBpdGVtLnNob3AuaWRcbiAgICAgICAgdGhpcy5uYW1lID0gaXRlbS5zaG9wLm5hbWVcbiAgICAgICAgdGhpcy51dWlkID0gaXRlbS5zaG9wLnV1aWRcbiAgICAgICAgdGhpcy5iYXNrZXRGaWVsZDEgPSBpdGVtLnNob3AuYmFza2V0RmllbGQxXG4gICAgICAgIHRoaXMuYmFza2V0RmllbGQyID0gaXRlbS5zaG9wLmJhc2tldEZpZWxkMlxuICAgICAgICB0aGlzLmJhc2tldFBvc0ZpZWxkMSA9IGl0ZW0uc2hvcC5iYXNrZXRQb3NGaWVsZDFcbiAgICAgICAgdGhpcy5iYXNrZXRQb3NGaWVsZDIgPSBpdGVtLnNob3AuYmFza2V0UG9zRmllbGQyXG4gICAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJpZ2ludDogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiZnVuY3Rpb24gX3R5cGVvZihvKSB7XG4gIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvO1xuICB9IDogZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbztcbiAgfSwgX3R5cGVvZihvKTtcbn1cbmV4cG9ydCB7IF90eXBlb2YgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuZnVuY3Rpb24gdG9QcmltaXRpdmUodCwgcikge1xuICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDtcbiAgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG4gIGlmICh2b2lkIDAgIT09IGUpIHtcbiAgICB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTtcbiAgICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7XG4gIH1cbiAgcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcbn1cbmV4cG9ydCB7IHRvUHJpbWl0aXZlIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmltcG9ydCB0b1ByaW1pdGl2ZSBmcm9tIFwiLi90b1ByaW1pdGl2ZS5qc1wiO1xuZnVuY3Rpb24gdG9Qcm9wZXJ0eUtleSh0KSB7XG4gIHZhciBpID0gdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7XG4gIHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7XG59XG5leHBvcnQgeyB0b1Byb3BlcnR5S2V5IGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgdG9Qcm9wZXJ0eUtleSBmcm9tIFwiLi90b1Byb3BlcnR5S2V5LmpzXCI7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xuICByZXR1cm4gKHIgPSB0b1Byb3BlcnR5S2V5KHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcbiAgICB2YWx1ZTogdCxcbiAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICBjb25maWd1cmFibGU6ICEwLFxuICAgIHdyaXRhYmxlOiAhMFxuICB9KSA6IGVbcl0gPSB0LCBlO1xufVxuZXhwb3J0IHsgX2RlZmluZVByb3BlcnR5IGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgZGVmaW5lUHJvcGVydHkgZnJvbSBcIi4vZGVmaW5lUHJvcGVydHkuanNcIjtcbmZ1bmN0aW9uIG93bktleXMoZSwgcikge1xuICB2YXIgdCA9IE9iamVjdC5rZXlzKGUpO1xuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtcbiAgICByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7XG4gICAgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7XG4gIH1cbiAgcmV0dXJuIHQ7XG59XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkMihlKSB7XG4gIGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7XG4gICAgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9O1xuICAgIHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7XG4gICAgICBkZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTtcbiAgICB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gZTtcbn1cbmV4cG9ydCB7IF9vYmplY3RTcHJlYWQyIGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIHI7XG59XG5leHBvcnQgeyBfYXJyYXlXaXRoSG9sZXMgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBsKSB7XG4gIHZhciB0ID0gbnVsbCA9PSByID8gbnVsbCA6IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcIkBAaXRlcmF0b3JcIl07XG4gIGlmIChudWxsICE9IHQpIHtcbiAgICB2YXIgZSxcbiAgICAgIG4sXG4gICAgICBpLFxuICAgICAgdSxcbiAgICAgIGEgPSBbXSxcbiAgICAgIGYgPSAhMCxcbiAgICAgIG8gPSAhMTtcbiAgICB0cnkge1xuICAgICAgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkge1xuICAgICAgICBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47XG4gICAgICAgIGYgPSAhMTtcbiAgICAgIH0gZWxzZSBmb3IgKDsgIShmID0gKGUgPSBpLmNhbGwodCkpLmRvbmUpICYmIChhLnB1c2goZS52YWx1ZSksIGEubGVuZ3RoICE9PSBsKTsgZiA9ICEwKTtcbiAgICB9IGNhdGNoIChyKSB7XG4gICAgICBvID0gITAsIG4gPSByO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIWYgJiYgbnVsbCAhPSB0W1wicmV0dXJuXCJdICYmICh1ID0gdFtcInJldHVyblwiXSgpLCBPYmplY3QodSkgIT09IHUpKSByZXR1cm47XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAobykgdGhyb3cgbjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGE7XG4gIH1cbn1cbmV4cG9ydCB7IF9pdGVyYWJsZVRvQXJyYXlMaW1pdCBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkociwgYSkge1xuICAobnVsbCA9PSBhIHx8IGEgPiByLmxlbmd0aCkgJiYgKGEgPSByLmxlbmd0aCk7XG4gIGZvciAodmFyIGUgPSAwLCBuID0gQXJyYXkoYSk7IGUgPCBhOyBlKyspIG5bZV0gPSByW2VdO1xuICByZXR1cm4gbjtcbn1cbmV4cG9ydCB7IF9hcnJheUxpa2VUb0FycmF5IGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgYXJyYXlMaWtlVG9BcnJheSBmcm9tIFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCI7XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgYSkge1xuICBpZiAocikge1xuICAgIGlmIChcInN0cmluZ1wiID09IHR5cGVvZiByKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShyLCBhKTtcbiAgICB2YXIgdCA9IHt9LnRvU3RyaW5nLmNhbGwocikuc2xpY2UoOCwgLTEpO1xuICAgIHJldHVybiBcIk9iamVjdFwiID09PSB0ICYmIHIuY29uc3RydWN0b3IgJiYgKHQgPSByLmNvbnN0cnVjdG9yLm5hbWUpLCBcIk1hcFwiID09PSB0IHx8IFwiU2V0XCIgPT09IHQgPyBBcnJheS5mcm9tKHIpIDogXCJBcmd1bWVudHNcIiA9PT0gdCB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh0KSA/IGFycmF5TGlrZVRvQXJyYXkociwgYSkgOiB2b2lkIDA7XG4gIH1cbn1cbmV4cG9ydCB7IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbmV4cG9ydCB7IF9ub25JdGVyYWJsZVJlc3QgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBhcnJheVdpdGhIb2xlcyBmcm9tIFwiLi9hcnJheVdpdGhIb2xlcy5qc1wiO1xuaW1wb3J0IGl0ZXJhYmxlVG9BcnJheUxpbWl0IGZyb20gXCIuL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzXCI7XG5pbXBvcnQgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIjtcbmltcG9ydCBub25JdGVyYWJsZVJlc3QgZnJvbSBcIi4vbm9uSXRlcmFibGVSZXN0LmpzXCI7XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShyLCBlKSB7XG4gIHJldHVybiBhcnJheVdpdGhIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBlKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBlKSB8fCBub25JdGVyYWJsZVJlc3QoKTtcbn1cbmV4cG9ydCB7IF9zbGljZWRUb0FycmF5IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShyLCBlKSB7XG4gIGlmIChudWxsID09IHIpIHJldHVybiB7fTtcbiAgdmFyIHQgPSB7fTtcbiAgZm9yICh2YXIgbiBpbiByKSBpZiAoe30uaGFzT3duUHJvcGVydHkuY2FsbChyLCBuKSkge1xuICAgIGlmIChlLmluY2x1ZGVzKG4pKSBjb250aW51ZTtcbiAgICB0W25dID0gcltuXTtcbiAgfVxuICByZXR1cm4gdDtcbn1cbmV4cG9ydCB7IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiLi9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzXCI7XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoZSwgdCkge1xuICBpZiAobnVsbCA9PSBlKSByZXR1cm4ge307XG4gIHZhciBvLFxuICAgIHIsXG4gICAgaSA9IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoZSwgdCk7XG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO1xuICAgIGZvciAociA9IDA7IHIgPCBzLmxlbmd0aDsgcisrKSBvID0gc1tyXSwgdC5pbmNsdWRlcyhvKSB8fCB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsIG8pICYmIChpW29dID0gZVtvXSk7XG4gIH1cbiAgcmV0dXJuIGk7XG59XG5leHBvcnQgeyBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDInO1xuaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXknO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllcyc7XG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5cbnZhciBfZXhjbHVkZWQgPSBbXCJkZWZhdWx0SW5wdXRWYWx1ZVwiLCBcImRlZmF1bHRNZW51SXNPcGVuXCIsIFwiZGVmYXVsdFZhbHVlXCIsIFwiaW5wdXRWYWx1ZVwiLCBcIm1lbnVJc09wZW5cIiwgXCJvbkNoYW5nZVwiLCBcIm9uSW5wdXRDaGFuZ2VcIiwgXCJvbk1lbnVDbG9zZVwiLCBcIm9uTWVudU9wZW5cIiwgXCJ2YWx1ZVwiXTtcbmZ1bmN0aW9uIHVzZVN0YXRlTWFuYWdlcihfcmVmKSB7XG4gIHZhciBfcmVmJGRlZmF1bHRJbnB1dFZhbHUgPSBfcmVmLmRlZmF1bHRJbnB1dFZhbHVlLFxuICAgIGRlZmF1bHRJbnB1dFZhbHVlID0gX3JlZiRkZWZhdWx0SW5wdXRWYWx1ID09PSB2b2lkIDAgPyAnJyA6IF9yZWYkZGVmYXVsdElucHV0VmFsdSxcbiAgICBfcmVmJGRlZmF1bHRNZW51SXNPcGUgPSBfcmVmLmRlZmF1bHRNZW51SXNPcGVuLFxuICAgIGRlZmF1bHRNZW51SXNPcGVuID0gX3JlZiRkZWZhdWx0TWVudUlzT3BlID09PSB2b2lkIDAgPyBmYWxzZSA6IF9yZWYkZGVmYXVsdE1lbnVJc09wZSxcbiAgICBfcmVmJGRlZmF1bHRWYWx1ZSA9IF9yZWYuZGVmYXVsdFZhbHVlLFxuICAgIGRlZmF1bHRWYWx1ZSA9IF9yZWYkZGVmYXVsdFZhbHVlID09PSB2b2lkIDAgPyBudWxsIDogX3JlZiRkZWZhdWx0VmFsdWUsXG4gICAgcHJvcHNJbnB1dFZhbHVlID0gX3JlZi5pbnB1dFZhbHVlLFxuICAgIHByb3BzTWVudUlzT3BlbiA9IF9yZWYubWVudUlzT3BlbixcbiAgICBwcm9wc09uQ2hhbmdlID0gX3JlZi5vbkNoYW5nZSxcbiAgICBwcm9wc09uSW5wdXRDaGFuZ2UgPSBfcmVmLm9uSW5wdXRDaGFuZ2UsXG4gICAgcHJvcHNPbk1lbnVDbG9zZSA9IF9yZWYub25NZW51Q2xvc2UsXG4gICAgcHJvcHNPbk1lbnVPcGVuID0gX3JlZi5vbk1lbnVPcGVuLFxuICAgIHByb3BzVmFsdWUgPSBfcmVmLnZhbHVlLFxuICAgIHJlc3RTZWxlY3RQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBfZXhjbHVkZWQpO1xuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUocHJvcHNJbnB1dFZhbHVlICE9PSB1bmRlZmluZWQgPyBwcm9wc0lucHV0VmFsdWUgOiBkZWZhdWx0SW5wdXRWYWx1ZSksXG4gICAgX3VzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZSwgMiksXG4gICAgc3RhdGVJbnB1dFZhbHVlID0gX3VzZVN0YXRlMlswXSxcbiAgICBzZXRTdGF0ZUlucHV0VmFsdWUgPSBfdXNlU3RhdGUyWzFdO1xuICB2YXIgX3VzZVN0YXRlMyA9IHVzZVN0YXRlKHByb3BzTWVudUlzT3BlbiAhPT0gdW5kZWZpbmVkID8gcHJvcHNNZW51SXNPcGVuIDogZGVmYXVsdE1lbnVJc09wZW4pLFxuICAgIF91c2VTdGF0ZTQgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUzLCAyKSxcbiAgICBzdGF0ZU1lbnVJc09wZW4gPSBfdXNlU3RhdGU0WzBdLFxuICAgIHNldFN0YXRlTWVudUlzT3BlbiA9IF91c2VTdGF0ZTRbMV07XG4gIHZhciBfdXNlU3RhdGU1ID0gdXNlU3RhdGUocHJvcHNWYWx1ZSAhPT0gdW5kZWZpbmVkID8gcHJvcHNWYWx1ZSA6IGRlZmF1bHRWYWx1ZSksXG4gICAgX3VzZVN0YXRlNiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTUsIDIpLFxuICAgIHN0YXRlVmFsdWUgPSBfdXNlU3RhdGU2WzBdLFxuICAgIHNldFN0YXRlVmFsdWUgPSBfdXNlU3RhdGU2WzFdO1xuICB2YXIgb25DaGFuZ2UgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAodmFsdWUsIGFjdGlvbk1ldGEpIHtcbiAgICBpZiAodHlwZW9mIHByb3BzT25DaGFuZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHByb3BzT25DaGFuZ2UodmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgIH1cbiAgICBzZXRTdGF0ZVZhbHVlKHZhbHVlKTtcbiAgfSwgW3Byb3BzT25DaGFuZ2VdKTtcbiAgdmFyIG9uSW5wdXRDaGFuZ2UgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAodmFsdWUsIGFjdGlvbk1ldGEpIHtcbiAgICB2YXIgbmV3VmFsdWU7XG4gICAgaWYgKHR5cGVvZiBwcm9wc09uSW5wdXRDaGFuZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIG5ld1ZhbHVlID0gcHJvcHNPbklucHV0Q2hhbmdlKHZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICB9XG4gICAgc2V0U3RhdGVJbnB1dFZhbHVlKG5ld1ZhbHVlICE9PSB1bmRlZmluZWQgPyBuZXdWYWx1ZSA6IHZhbHVlKTtcbiAgfSwgW3Byb3BzT25JbnB1dENoYW5nZV0pO1xuICB2YXIgb25NZW51T3BlbiA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIHByb3BzT25NZW51T3BlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvcHNPbk1lbnVPcGVuKCk7XG4gICAgfVxuICAgIHNldFN0YXRlTWVudUlzT3Blbih0cnVlKTtcbiAgfSwgW3Byb3BzT25NZW51T3Blbl0pO1xuICB2YXIgb25NZW51Q2xvc2UgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVvZiBwcm9wc09uTWVudUNsb3NlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9wc09uTWVudUNsb3NlKCk7XG4gICAgfVxuICAgIHNldFN0YXRlTWVudUlzT3BlbihmYWxzZSk7XG4gIH0sIFtwcm9wc09uTWVudUNsb3NlXSk7XG4gIHZhciBpbnB1dFZhbHVlID0gcHJvcHNJbnB1dFZhbHVlICE9PSB1bmRlZmluZWQgPyBwcm9wc0lucHV0VmFsdWUgOiBzdGF0ZUlucHV0VmFsdWU7XG4gIHZhciBtZW51SXNPcGVuID0gcHJvcHNNZW51SXNPcGVuICE9PSB1bmRlZmluZWQgPyBwcm9wc01lbnVJc09wZW4gOiBzdGF0ZU1lbnVJc09wZW47XG4gIHZhciB2YWx1ZSA9IHByb3BzVmFsdWUgIT09IHVuZGVmaW5lZCA/IHByb3BzVmFsdWUgOiBzdGF0ZVZhbHVlO1xuICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN0U2VsZWN0UHJvcHMpLCB7fSwge1xuICAgIGlucHV0VmFsdWU6IGlucHV0VmFsdWUsXG4gICAgbWVudUlzT3BlbjogbWVudUlzT3BlbixcbiAgICBvbkNoYW5nZTogb25DaGFuZ2UsXG4gICAgb25JbnB1dENoYW5nZTogb25JbnB1dENoYW5nZSxcbiAgICBvbk1lbnVDbG9zZTogb25NZW51Q2xvc2UsXG4gICAgb25NZW51T3Blbjogb25NZW51T3BlbixcbiAgICB2YWx1ZTogdmFsdWVcbiAgfSk7XG59XG5cbmV4cG9ydCB7IHVzZVN0YXRlTWFuYWdlciBhcyB1IH07XG4iLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgcmV0dXJuIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKG4pIHtcbiAgICBmb3IgKHZhciBlID0gMTsgZSA8IGFyZ3VtZW50cy5sZW5ndGg7IGUrKykge1xuICAgICAgdmFyIHQgPSBhcmd1bWVudHNbZV07XG4gICAgICBmb3IgKHZhciByIGluIHQpICh7fSkuaGFzT3duUHJvcGVydHkuY2FsbCh0LCByKSAmJiAobltyXSA9IHRbcl0pO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfSwgX2V4dGVuZHMuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbn1cbmV4cG9ydCB7IF9leHRlbmRzIGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soYSwgbikge1xuICBpZiAoIShhIGluc3RhbmNlb2YgbikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG59XG5leHBvcnQgeyBfY2xhc3NDYWxsQ2hlY2sgYXMgZGVmYXVsdCB9OyIsImltcG9ydCB0b1Byb3BlcnR5S2V5IGZyb20gXCIuL3RvUHJvcGVydHlLZXkuanNcIjtcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHIpIHtcbiAgZm9yICh2YXIgdCA9IDA7IHQgPCByLmxlbmd0aDsgdCsrKSB7XG4gICAgdmFyIG8gPSByW3RdO1xuICAgIG8uZW51bWVyYWJsZSA9IG8uZW51bWVyYWJsZSB8fCAhMSwgby5jb25maWd1cmFibGUgPSAhMCwgXCJ2YWx1ZVwiIGluIG8gJiYgKG8ud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCB0b1Byb3BlcnR5S2V5KG8ua2V5KSwgbyk7XG4gIH1cbn1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhlLCByLCB0KSB7XG4gIHJldHVybiByICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLCByKSwgdCAmJiBfZGVmaW5lUHJvcGVydGllcyhlLCB0KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogITFcbiAgfSksIGU7XG59XG5leHBvcnQgeyBfY3JlYXRlQ2xhc3MgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZih0LCBlKSB7XG4gIHJldHVybiBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gPSBlLCB0O1xuICB9LCBfc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5leHBvcnQgeyBfc2V0UHJvdG90eXBlT2YgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBzZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiO1xuZnVuY3Rpb24gX2luaGVyaXRzKHQsIGUpIHtcbiAgaWYgKFwiZnVuY3Rpb25cIiAhPSB0eXBlb2YgZSAmJiBudWxsICE9PSBlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gIHQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlICYmIGUucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiB0LFxuICAgICAgd3JpdGFibGU6ICEwLFxuICAgICAgY29uZmlndXJhYmxlOiAhMFxuICAgIH1cbiAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlICYmIHNldFByb3RvdHlwZU9mKHQsIGUpO1xufVxuZXhwb3J0IHsgX2luaGVyaXRzIGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YodCkge1xuICByZXR1cm4gX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0KSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtcbiAgfSwgX2dldFByb3RvdHlwZU9mKHQpO1xufVxuZXhwb3J0IHsgX2dldFByb3RvdHlwZU9mIGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICB0cnkge1xuICAgIHZhciB0ID0gIUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTtcbiAgfSBjYXRjaCAodCkge31cbiAgcmV0dXJuIChfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHtcbiAgICByZXR1cm4gISF0O1xuICB9KSgpO1xufVxuZXhwb3J0IHsgX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChlKSB7XG4gIGlmICh2b2lkIDAgPT09IGUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgcmV0dXJuIGU7XG59XG5leHBvcnQgeyBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmltcG9ydCBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIi4vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzXCI7XG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBlKSB7XG4gIGlmIChlICYmIChcIm9iamVjdFwiID09IF90eXBlb2YoZSkgfHwgXCJmdW5jdGlvblwiID09IHR5cGVvZiBlKSkgcmV0dXJuIGU7XG4gIGlmICh2b2lkIDAgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtcbiAgcmV0dXJuIGFzc2VydFRoaXNJbml0aWFsaXplZCh0KTtcbn1cbmV4cG9ydCB7IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgZ2V0UHJvdG90eXBlT2YgZnJvbSBcIi4vZ2V0UHJvdG90eXBlT2YuanNcIjtcbmltcG9ydCBpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgZnJvbSBcIi4vaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0LmpzXCI7XG5pbXBvcnQgcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiLi9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzXCI7XG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIodCkge1xuICB2YXIgciA9IGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBlLFxuICAgICAgbyA9IGdldFByb3RvdHlwZU9mKHQpO1xuICAgIGlmIChyKSB7XG4gICAgICB2YXIgcyA9IGdldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yO1xuICAgICAgZSA9IFJlZmxlY3QuY29uc3RydWN0KG8sIGFyZ3VtZW50cywgcyk7XG4gICAgfSBlbHNlIGUgPSBvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgcmV0dXJuIHBvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgZSk7XG4gIH07XG59XG5leHBvcnQgeyBfY3JlYXRlU3VwZXIgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBhcnJheUxpa2VUb0FycmF5IGZyb20gXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIjtcbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShyKTtcbn1cbmV4cG9ydCB7IF9hcnJheVdpdGhvdXRIb2xlcyBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShyKSB7XG4gIGlmIChcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgbnVsbCAhPSByW1N5bWJvbC5pdGVyYXRvcl0gfHwgbnVsbCAhPSByW1wiQEBpdGVyYXRvclwiXSkgcmV0dXJuIEFycmF5LmZyb20ocik7XG59XG5leHBvcnQgeyBfaXRlcmFibGVUb0FycmF5IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxuZXhwb3J0IHsgX25vbkl0ZXJhYmxlU3ByZWFkIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgYXJyYXlXaXRob3V0SG9sZXMgZnJvbSBcIi4vYXJyYXlXaXRob3V0SG9sZXMuanNcIjtcbmltcG9ydCBpdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vaXRlcmFibGVUb0FycmF5LmpzXCI7XG5pbXBvcnQgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIjtcbmltcG9ydCBub25JdGVyYWJsZVNwcmVhZCBmcm9tIFwiLi9ub25JdGVyYWJsZVNwcmVhZC5qc1wiO1xuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KHIpIHtcbiAgcmV0dXJuIGFycmF5V2l0aG91dEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheShyKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyKSB8fCBub25JdGVyYWJsZVNwcmVhZCgpO1xufVxuZXhwb3J0IHsgX3RvQ29uc3VtYWJsZUFycmF5IGFzIGRlZmF1bHQgfTsiLCJ2YXIgaXNEZXZlbG9wbWVudCA9IGZhbHNlO1xuXG4vKlxuXG5CYXNlZCBvZmYgZ2xhbW9yJ3MgU3R5bGVTaGVldCwgdGhhbmtzIFN1bmlsIOKdpO+4j1xuXG5oaWdoIHBlcmZvcm1hbmNlIFN0eWxlU2hlZXQgZm9yIGNzcy1pbi1qcyBzeXN0ZW1zXG5cbi0gdXNlcyBtdWx0aXBsZSBzdHlsZSB0YWdzIGJlaGluZCB0aGUgc2NlbmVzIGZvciBtaWxsaW9ucyBvZiBydWxlc1xuLSB1c2VzIGBpbnNlcnRSdWxlYCBmb3IgYXBwZW5kaW5nIGluIHByb2R1Y3Rpb24gZm9yICptdWNoKiBmYXN0ZXIgcGVyZm9ybWFuY2VcblxuLy8gdXNhZ2VcblxuaW1wb3J0IHsgU3R5bGVTaGVldCB9IGZyb20gJ0BlbW90aW9uL3NoZWV0J1xuXG5sZXQgc3R5bGVTaGVldCA9IG5ldyBTdHlsZVNoZWV0KHsga2V5OiAnJywgY29udGFpbmVyOiBkb2N1bWVudC5oZWFkIH0pXG5cbnN0eWxlU2hlZXQuaW5zZXJ0KCcjYm94IHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9Jylcbi0gYXBwZW5kcyBhIGNzcyBydWxlIGludG8gdGhlIHN0eWxlc2hlZXRcblxuc3R5bGVTaGVldC5mbHVzaCgpXG4tIGVtcHRpZXMgdGhlIHN0eWxlc2hlZXQgb2YgYWxsIGl0cyBjb250ZW50c1xuXG4qL1xuXG5mdW5jdGlvbiBzaGVldEZvclRhZyh0YWcpIHtcbiAgaWYgKHRhZy5zaGVldCkge1xuICAgIHJldHVybiB0YWcuc2hlZXQ7XG4gIH0gLy8gdGhpcyB3ZWlyZG5lc3MgYnJvdWdodCB0byB5b3UgYnkgZmlyZWZveFxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGRvY3VtZW50LnN0eWxlU2hlZXRzW2ldLm93bmVyTm9kZSA9PT0gdGFnKSB7XG4gICAgICByZXR1cm4gZG9jdW1lbnQuc3R5bGVTaGVldHNbaV07XG4gICAgfVxuICB9IC8vIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGFsd2F5cyByZXR1cm4gd2l0aCBhIHZhbHVlXG4gIC8vIFRTIGNhbid0IHVuZGVyc3RhbmQgaXQgdGhvdWdoIHNvIHdlIG1ha2UgaXQgc3RvcCBjb21wbGFpbmluZyBoZXJlXG5cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgdGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgdGFnLnNldEF0dHJpYnV0ZSgnZGF0YS1lbW90aW9uJywgb3B0aW9ucy5rZXkpO1xuXG4gIGlmIChvcHRpb25zLm5vbmNlICE9PSB1bmRlZmluZWQpIHtcbiAgICB0YWcuc2V0QXR0cmlidXRlKCdub25jZScsIG9wdGlvbnMubm9uY2UpO1xuICB9XG5cbiAgdGFnLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKSk7XG4gIHRhZy5zZXRBdHRyaWJ1dGUoJ2RhdGEtcycsICcnKTtcbiAgcmV0dXJuIHRhZztcbn1cblxudmFyIFN0eWxlU2hlZXQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAvLyBVc2luZyBOb2RlIGluc3RlYWQgb2YgSFRNTEVsZW1lbnQgc2luY2UgY29udGFpbmVyIG1heSBiZSBhIFNoYWRvd1Jvb3RcbiAgZnVuY3Rpb24gU3R5bGVTaGVldChvcHRpb25zKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHRoaXMuX2luc2VydFRhZyA9IGZ1bmN0aW9uICh0YWcpIHtcbiAgICAgIHZhciBiZWZvcmU7XG5cbiAgICAgIGlmIChfdGhpcy50YWdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAoX3RoaXMuaW5zZXJ0aW9uUG9pbnQpIHtcbiAgICAgICAgICBiZWZvcmUgPSBfdGhpcy5pbnNlcnRpb25Qb2ludC5uZXh0U2libGluZztcbiAgICAgICAgfSBlbHNlIGlmIChfdGhpcy5wcmVwZW5kKSB7XG4gICAgICAgICAgYmVmb3JlID0gX3RoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmVmb3JlID0gX3RoaXMuYmVmb3JlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiZWZvcmUgPSBfdGhpcy50YWdzW190aGlzLnRhZ3MubGVuZ3RoIC0gMV0ubmV4dFNpYmxpbmc7XG4gICAgICB9XG5cbiAgICAgIF90aGlzLmNvbnRhaW5lci5pbnNlcnRCZWZvcmUodGFnLCBiZWZvcmUpO1xuXG4gICAgICBfdGhpcy50YWdzLnB1c2godGFnKTtcbiAgICB9O1xuXG4gICAgdGhpcy5pc1NwZWVkeSA9IG9wdGlvbnMuc3BlZWR5ID09PSB1bmRlZmluZWQgPyAhaXNEZXZlbG9wbWVudCA6IG9wdGlvbnMuc3BlZWR5O1xuICAgIHRoaXMudGFncyA9IFtdO1xuICAgIHRoaXMuY3RyID0gMDtcbiAgICB0aGlzLm5vbmNlID0gb3B0aW9ucy5ub25jZTsgLy8ga2V5IGlzIHRoZSB2YWx1ZSBvZiB0aGUgZGF0YS1lbW90aW9uIGF0dHJpYnV0ZSwgaXQncyB1c2VkIHRvIGlkZW50aWZ5IGRpZmZlcmVudCBzaGVldHNcblxuICAgIHRoaXMua2V5ID0gb3B0aW9ucy5rZXk7XG4gICAgdGhpcy5jb250YWluZXIgPSBvcHRpb25zLmNvbnRhaW5lcjtcbiAgICB0aGlzLnByZXBlbmQgPSBvcHRpb25zLnByZXBlbmQ7XG4gICAgdGhpcy5pbnNlcnRpb25Qb2ludCA9IG9wdGlvbnMuaW5zZXJ0aW9uUG9pbnQ7XG4gICAgdGhpcy5iZWZvcmUgPSBudWxsO1xuICB9XG5cbiAgdmFyIF9wcm90byA9IFN0eWxlU2hlZXQucHJvdG90eXBlO1xuXG4gIF9wcm90by5oeWRyYXRlID0gZnVuY3Rpb24gaHlkcmF0ZShub2Rlcykge1xuICAgIG5vZGVzLmZvckVhY2godGhpcy5faW5zZXJ0VGFnKTtcbiAgfTtcblxuICBfcHJvdG8uaW5zZXJ0ID0gZnVuY3Rpb24gaW5zZXJ0KHJ1bGUpIHtcbiAgICAvLyB0aGUgbWF4IGxlbmd0aCBpcyBob3cgbWFueSBydWxlcyB3ZSBoYXZlIHBlciBzdHlsZSB0YWcsIGl0J3MgNjUwMDAgaW4gc3BlZWR5IG1vZGVcbiAgICAvLyBpdCdzIDEgaW4gZGV2IGJlY2F1c2Ugd2UgaW5zZXJ0IHNvdXJjZSBtYXBzIHRoYXQgbWFwIGEgc2luZ2xlIHJ1bGUgdG8gYSBsb2NhdGlvblxuICAgIC8vIGFuZCB5b3UgY2FuIG9ubHkgaGF2ZSBvbmUgc291cmNlIG1hcCBwZXIgc3R5bGUgdGFnXG4gICAgaWYgKHRoaXMuY3RyICUgKHRoaXMuaXNTcGVlZHkgPyA2NTAwMCA6IDEpID09PSAwKSB7XG4gICAgICB0aGlzLl9pbnNlcnRUYWcoY3JlYXRlU3R5bGVFbGVtZW50KHRoaXMpKTtcbiAgICB9XG5cbiAgICB2YXIgdGFnID0gdGhpcy50YWdzW3RoaXMudGFncy5sZW5ndGggLSAxXTtcblxuICAgIGlmICh0aGlzLmlzU3BlZWR5KSB7XG4gICAgICB2YXIgc2hlZXQgPSBzaGVldEZvclRhZyh0YWcpO1xuXG4gICAgICB0cnkge1xuICAgICAgICAvLyB0aGlzIGlzIHRoZSB1bHRyYWZhc3QgdmVyc2lvbiwgd29ya3MgYWNyb3NzIGJyb3dzZXJzXG4gICAgICAgIC8vIHRoZSBiaWcgZHJhd2JhY2sgaXMgdGhhdCB0aGUgY3NzIHdvbid0IGJlIGVkaXRhYmxlIGluIGRldnRvb2xzXG4gICAgICAgIHNoZWV0Lmluc2VydFJ1bGUocnVsZSwgc2hlZXQuY3NzUnVsZXMubGVuZ3RoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGFnLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHJ1bGUpKTtcbiAgICB9XG5cbiAgICB0aGlzLmN0cisrO1xuICB9O1xuXG4gIF9wcm90by5mbHVzaCA9IGZ1bmN0aW9uIGZsdXNoKCkge1xuICAgIHRoaXMudGFncy5mb3JFYWNoKGZ1bmN0aW9uICh0YWcpIHtcbiAgICAgIHZhciBfdGFnJHBhcmVudE5vZGU7XG5cbiAgICAgIHJldHVybiAoX3RhZyRwYXJlbnROb2RlID0gdGFnLnBhcmVudE5vZGUpID09IG51bGwgPyB2b2lkIDAgOiBfdGFnJHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGFnKTtcbiAgICB9KTtcbiAgICB0aGlzLnRhZ3MgPSBbXTtcbiAgICB0aGlzLmN0ciA9IDA7XG4gIH07XG5cbiAgcmV0dXJuIFN0eWxlU2hlZXQ7XG59KCk7XG5cbmV4cG9ydCB7IFN0eWxlU2hlZXQgfTtcbiIsImV4cG9ydCB2YXIgTVMgPSAnLW1zLSdcbmV4cG9ydCB2YXIgTU9aID0gJy1tb3otJ1xuZXhwb3J0IHZhciBXRUJLSVQgPSAnLXdlYmtpdC0nXG5cbmV4cG9ydCB2YXIgQ09NTUVOVCA9ICdjb21tJ1xuZXhwb3J0IHZhciBSVUxFU0VUID0gJ3J1bGUnXG5leHBvcnQgdmFyIERFQ0xBUkFUSU9OID0gJ2RlY2wnXG5cbmV4cG9ydCB2YXIgUEFHRSA9ICdAcGFnZSdcbmV4cG9ydCB2YXIgTUVESUEgPSAnQG1lZGlhJ1xuZXhwb3J0IHZhciBJTVBPUlQgPSAnQGltcG9ydCdcbmV4cG9ydCB2YXIgQ0hBUlNFVCA9ICdAY2hhcnNldCdcbmV4cG9ydCB2YXIgVklFV1BPUlQgPSAnQHZpZXdwb3J0J1xuZXhwb3J0IHZhciBTVVBQT1JUUyA9ICdAc3VwcG9ydHMnXG5leHBvcnQgdmFyIERPQ1VNRU5UID0gJ0Bkb2N1bWVudCdcbmV4cG9ydCB2YXIgTkFNRVNQQUNFID0gJ0BuYW1lc3BhY2UnXG5leHBvcnQgdmFyIEtFWUZSQU1FUyA9ICdAa2V5ZnJhbWVzJ1xuZXhwb3J0IHZhciBGT05UX0ZBQ0UgPSAnQGZvbnQtZmFjZSdcbmV4cG9ydCB2YXIgQ09VTlRFUl9TVFlMRSA9ICdAY291bnRlci1zdHlsZSdcbmV4cG9ydCB2YXIgRk9OVF9GRUFUVVJFX1ZBTFVFUyA9ICdAZm9udC1mZWF0dXJlLXZhbHVlcydcbmV4cG9ydCB2YXIgTEFZRVIgPSAnQGxheWVyJ1xuIiwiLyoqXG4gKiBAcGFyYW0ge251bWJlcn1cbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IHZhciBhYnMgPSBNYXRoLmFic1xuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgdmFyIGZyb20gPSBTdHJpbmcuZnJvbUNoYXJDb2RlXG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9XG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCB2YXIgYXNzaWduID0gT2JqZWN0LmFzc2lnblxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzaCAodmFsdWUsIGxlbmd0aCkge1xuXHRyZXR1cm4gY2hhcmF0KHZhbHVlLCAwKSBeIDQ1ID8gKCgoKCgoKGxlbmd0aCA8PCAyKSBeIGNoYXJhdCh2YWx1ZSwgMCkpIDw8IDIpIF4gY2hhcmF0KHZhbHVlLCAxKSkgPDwgMikgXiBjaGFyYXQodmFsdWUsIDIpKSA8PCAyKSBeIGNoYXJhdCh2YWx1ZSwgMykgOiAwXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmltICh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUudHJpbSgpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge1JlZ0V4cH0gcGF0dGVyblxuICogQHJldHVybiB7c3RyaW5nP31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoICh2YWx1ZSwgcGF0dGVybikge1xuXHRyZXR1cm4gKHZhbHVlID0gcGF0dGVybi5leGVjKHZhbHVlKSkgPyB2YWx1ZVswXSA6IHZhbHVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0geyhzdHJpbmd8UmVnRXhwKX0gcGF0dGVyblxuICogQHBhcmFtIHtzdHJpbmd9IHJlcGxhY2VtZW50XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlICh2YWx1ZSwgcGF0dGVybiwgcmVwbGFjZW1lbnQpIHtcblx0cmV0dXJuIHZhbHVlLnJlcGxhY2UocGF0dGVybiwgcmVwbGFjZW1lbnQpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gc2VhcmNoXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRleG9mICh2YWx1ZSwgc2VhcmNoKSB7XG5cdHJldHVybiB2YWx1ZS5pbmRleE9mKHNlYXJjaClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hhcmF0ICh2YWx1ZSwgaW5kZXgpIHtcblx0cmV0dXJuIHZhbHVlLmNoYXJDb2RlQXQoaW5kZXgpIHwgMFxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IGJlZ2luXG4gKiBAcGFyYW0ge251bWJlcn0gZW5kXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdHIgKHZhbHVlLCBiZWdpbiwgZW5kKSB7XG5cdHJldHVybiB2YWx1ZS5zbGljZShiZWdpbiwgZW5kKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RybGVuICh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUubGVuZ3RoXG59XG5cbi8qKlxuICogQHBhcmFtIHthbnlbXX0gdmFsdWVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpemVvZiAodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlLmxlbmd0aFxufVxuXG4vKipcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICogQHBhcmFtIHthbnlbXX0gYXJyYXlcbiAqIEByZXR1cm4ge2FueX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZCAodmFsdWUsIGFycmF5KSB7XG5cdHJldHVybiBhcnJheS5wdXNoKHZhbHVlKSwgdmFsdWVcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBhcnJheVxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmUgKGFycmF5LCBjYWxsYmFjaykge1xuXHRyZXR1cm4gYXJyYXkubWFwKGNhbGxiYWNrKS5qb2luKCcnKVxufVxuIiwiaW1wb3J0IHtmcm9tLCB0cmltLCBjaGFyYXQsIHN0cmxlbiwgc3Vic3RyLCBhcHBlbmQsIGFzc2lnbn0gZnJvbSAnLi9VdGlsaXR5LmpzJ1xuXG5leHBvcnQgdmFyIGxpbmUgPSAxXG5leHBvcnQgdmFyIGNvbHVtbiA9IDFcbmV4cG9ydCB2YXIgbGVuZ3RoID0gMFxuZXhwb3J0IHZhciBwb3NpdGlvbiA9IDBcbmV4cG9ydCB2YXIgY2hhcmFjdGVyID0gMFxuZXhwb3J0IHZhciBjaGFyYWN0ZXJzID0gJydcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0IHwgbnVsbH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3QgfCBudWxsfSBwYXJlbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gKiBAcGFyYW0ge3N0cmluZ1tdIHwgc3RyaW5nfSBwcm9wc1xuICogQHBhcmFtIHtvYmplY3RbXSB8IHN0cmluZ30gY2hpbGRyZW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vZGUgKHZhbHVlLCByb290LCBwYXJlbnQsIHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgbGVuZ3RoKSB7XG5cdHJldHVybiB7dmFsdWU6IHZhbHVlLCByb290OiByb290LCBwYXJlbnQ6IHBhcmVudCwgdHlwZTogdHlwZSwgcHJvcHM6IHByb3BzLCBjaGlsZHJlbjogY2hpbGRyZW4sIGxpbmU6IGxpbmUsIGNvbHVtbjogY29sdW1uLCBsZW5ndGg6IGxlbmd0aCwgcmV0dXJuOiAnJ31cbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3R9IHByb3BzXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb3B5IChyb290LCBwcm9wcykge1xuXHRyZXR1cm4gYXNzaWduKG5vZGUoJycsIG51bGwsIG51bGwsICcnLCBudWxsLCBudWxsLCAwKSwgcm9vdCwge2xlbmd0aDogLXJvb3QubGVuZ3RofSwgcHJvcHMpXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hhciAoKSB7XG5cdHJldHVybiBjaGFyYWN0ZXJcbn1cblxuLyoqXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmV2ICgpIHtcblx0Y2hhcmFjdGVyID0gcG9zaXRpb24gPiAwID8gY2hhcmF0KGNoYXJhY3RlcnMsIC0tcG9zaXRpb24pIDogMFxuXG5cdGlmIChjb2x1bW4tLSwgY2hhcmFjdGVyID09PSAxMClcblx0XHRjb2x1bW4gPSAxLCBsaW5lLS1cblxuXHRyZXR1cm4gY2hhcmFjdGVyXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV4dCAoKSB7XG5cdGNoYXJhY3RlciA9IHBvc2l0aW9uIDwgbGVuZ3RoID8gY2hhcmF0KGNoYXJhY3RlcnMsIHBvc2l0aW9uKyspIDogMFxuXG5cdGlmIChjb2x1bW4rKywgY2hhcmFjdGVyID09PSAxMClcblx0XHRjb2x1bW4gPSAxLCBsaW5lKytcblxuXHRyZXR1cm4gY2hhcmFjdGVyXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGVlayAoKSB7XG5cdHJldHVybiBjaGFyYXQoY2hhcmFjdGVycywgcG9zaXRpb24pXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FyZXQgKCkge1xuXHRyZXR1cm4gcG9zaXRpb25cbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gYmVnaW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsaWNlIChiZWdpbiwgZW5kKSB7XG5cdHJldHVybiBzdWJzdHIoY2hhcmFjdGVycywgYmVnaW4sIGVuZClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW4gKHR5cGUpIHtcblx0c3dpdGNoICh0eXBlKSB7XG5cdFx0Ly8gXFwwIFxcdCBcXG4gXFxyIFxccyB3aGl0ZXNwYWNlIHRva2VuXG5cdFx0Y2FzZSAwOiBjYXNlIDk6IGNhc2UgMTA6IGNhc2UgMTM6IGNhc2UgMzI6XG5cdFx0XHRyZXR1cm4gNVxuXHRcdC8vICEgKyAsIC8gPiBAIH4gaXNvbGF0ZSB0b2tlblxuXHRcdGNhc2UgMzM6IGNhc2UgNDM6IGNhc2UgNDQ6IGNhc2UgNDc6IGNhc2UgNjI6IGNhc2UgNjQ6IGNhc2UgMTI2OlxuXHRcdC8vIDsgeyB9IGJyZWFrcG9pbnQgdG9rZW5cblx0XHRjYXNlIDU5OiBjYXNlIDEyMzogY2FzZSAxMjU6XG5cdFx0XHRyZXR1cm4gNFxuXHRcdC8vIDogYWNjb21wYW5pZWQgdG9rZW5cblx0XHRjYXNlIDU4OlxuXHRcdFx0cmV0dXJuIDNcblx0XHQvLyBcIiAnICggWyBvcGVuaW5nIGRlbGltaXQgdG9rZW5cblx0XHRjYXNlIDM0OiBjYXNlIDM5OiBjYXNlIDQwOiBjYXNlIDkxOlxuXHRcdFx0cmV0dXJuIDJcblx0XHQvLyApIF0gY2xvc2luZyBkZWxpbWl0IHRva2VuXG5cdFx0Y2FzZSA0MTogY2FzZSA5Mzpcblx0XHRcdHJldHVybiAxXG5cdH1cblxuXHRyZXR1cm4gMFxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7YW55W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhbGxvYyAodmFsdWUpIHtcblx0cmV0dXJuIGxpbmUgPSBjb2x1bW4gPSAxLCBsZW5ndGggPSBzdHJsZW4oY2hhcmFjdGVycyA9IHZhbHVlKSwgcG9zaXRpb24gPSAwLCBbXVxufVxuXG4vKipcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICogQHJldHVybiB7YW55fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVhbGxvYyAodmFsdWUpIHtcblx0cmV0dXJuIGNoYXJhY3RlcnMgPSAnJywgdmFsdWVcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVsaW1pdCAodHlwZSkge1xuXHRyZXR1cm4gdHJpbShzbGljZShwb3NpdGlvbiAtIDEsIGRlbGltaXRlcih0eXBlID09PSA5MSA/IHR5cGUgKyAyIDogdHlwZSA9PT0gNDAgPyB0eXBlICsgMSA6IHR5cGUpKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW5pemUgKHZhbHVlKSB7XG5cdHJldHVybiBkZWFsbG9jKHRva2VuaXplcihhbGxvYyh2YWx1ZSkpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aGl0ZXNwYWNlICh0eXBlKSB7XG5cdHdoaWxlIChjaGFyYWN0ZXIgPSBwZWVrKCkpXG5cdFx0aWYgKGNoYXJhY3RlciA8IDMzKVxuXHRcdFx0bmV4dCgpXG5cdFx0ZWxzZVxuXHRcdFx0YnJlYWtcblxuXHRyZXR1cm4gdG9rZW4odHlwZSkgPiAyIHx8IHRva2VuKGNoYXJhY3RlcikgPiAzID8gJycgOiAnICdcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBjaGlsZHJlblxuICogQHJldHVybiB7c3RyaW5nW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbml6ZXIgKGNoaWxkcmVuKSB7XG5cdHdoaWxlIChuZXh0KCkpXG5cdFx0c3dpdGNoICh0b2tlbihjaGFyYWN0ZXIpKSB7XG5cdFx0XHRjYXNlIDA6IGFwcGVuZChpZGVudGlmaWVyKHBvc2l0aW9uIC0gMSksIGNoaWxkcmVuKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Y2FzZSAyOiBhcHBlbmQoZGVsaW1pdChjaGFyYWN0ZXIpLCBjaGlsZHJlbilcblx0XHRcdFx0YnJlYWtcblx0XHRcdGRlZmF1bHQ6IGFwcGVuZChmcm9tKGNoYXJhY3RlciksIGNoaWxkcmVuKVxuXHRcdH1cblxuXHRyZXR1cm4gY2hpbGRyZW5cbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBpbmcgKGluZGV4LCBjb3VudCkge1xuXHR3aGlsZSAoLS1jb3VudCAmJiBuZXh0KCkpXG5cdFx0Ly8gbm90IDAtOSBBLUYgYS1mXG5cdFx0aWYgKGNoYXJhY3RlciA8IDQ4IHx8IGNoYXJhY3RlciA+IDEwMiB8fCAoY2hhcmFjdGVyID4gNTcgJiYgY2hhcmFjdGVyIDwgNjUpIHx8IChjaGFyYWN0ZXIgPiA3MCAmJiBjaGFyYWN0ZXIgPCA5NykpXG5cdFx0XHRicmVha1xuXG5cdHJldHVybiBzbGljZShpbmRleCwgY2FyZXQoKSArIChjb3VudCA8IDYgJiYgcGVlaygpID09IDMyICYmIG5leHQoKSA9PSAzMikpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGltaXRlciAodHlwZSkge1xuXHR3aGlsZSAobmV4dCgpKVxuXHRcdHN3aXRjaCAoY2hhcmFjdGVyKSB7XG5cdFx0XHQvLyBdICkgXCIgJ1xuXHRcdFx0Y2FzZSB0eXBlOlxuXHRcdFx0XHRyZXR1cm4gcG9zaXRpb25cblx0XHRcdC8vIFwiICdcblx0XHRcdGNhc2UgMzQ6IGNhc2UgMzk6XG5cdFx0XHRcdGlmICh0eXBlICE9PSAzNCAmJiB0eXBlICE9PSAzOSlcblx0XHRcdFx0XHRkZWxpbWl0ZXIoY2hhcmFjdGVyKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gKFxuXHRcdFx0Y2FzZSA0MDpcblx0XHRcdFx0aWYgKHR5cGUgPT09IDQxKVxuXHRcdFx0XHRcdGRlbGltaXRlcih0eXBlKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gXFxcblx0XHRcdGNhc2UgOTI6XG5cdFx0XHRcdG5leHQoKVxuXHRcdFx0XHRicmVha1xuXHRcdH1cblxuXHRyZXR1cm4gcG9zaXRpb25cbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21tZW50ZXIgKHR5cGUsIGluZGV4KSB7XG5cdHdoaWxlIChuZXh0KCkpXG5cdFx0Ly8gLy9cblx0XHRpZiAodHlwZSArIGNoYXJhY3RlciA9PT0gNDcgKyAxMClcblx0XHRcdGJyZWFrXG5cdFx0Ly8gLypcblx0XHRlbHNlIGlmICh0eXBlICsgY2hhcmFjdGVyID09PSA0MiArIDQyICYmIHBlZWsoKSA9PT0gNDcpXG5cdFx0XHRicmVha1xuXG5cdHJldHVybiAnLyonICsgc2xpY2UoaW5kZXgsIHBvc2l0aW9uIC0gMSkgKyAnKicgKyBmcm9tKHR5cGUgPT09IDQ3ID8gdHlwZSA6IG5leHQoKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlkZW50aWZpZXIgKGluZGV4KSB7XG5cdHdoaWxlICghdG9rZW4ocGVlaygpKSlcblx0XHRuZXh0KClcblxuXHRyZXR1cm4gc2xpY2UoaW5kZXgsIHBvc2l0aW9uKVxufVxuIiwiaW1wb3J0IHtDT01NRU5ULCBSVUxFU0VULCBERUNMQVJBVElPTn0gZnJvbSAnLi9FbnVtLmpzJ1xuaW1wb3J0IHthYnMsIGNoYXJhdCwgdHJpbSwgZnJvbSwgc2l6ZW9mLCBzdHJsZW4sIHN1YnN0ciwgYXBwZW5kLCByZXBsYWNlLCBpbmRleG9mfSBmcm9tICcuL1V0aWxpdHkuanMnXG5pbXBvcnQge25vZGUsIGNoYXIsIHByZXYsIG5leHQsIHBlZWssIGNhcmV0LCBhbGxvYywgZGVhbGxvYywgZGVsaW1pdCwgd2hpdGVzcGFjZSwgZXNjYXBpbmcsIGlkZW50aWZpZXIsIGNvbW1lbnRlcn0gZnJvbSAnLi9Ub2tlbml6ZXIuanMnXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtvYmplY3RbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGUgKHZhbHVlKSB7XG5cdHJldHVybiBkZWFsbG9jKHBhcnNlKCcnLCBudWxsLCBudWxsLCBudWxsLCBbJyddLCB2YWx1ZSA9IGFsbG9jKHZhbHVlKSwgMCwgWzBdLCB2YWx1ZSkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3Q/fSBwYXJlbnRcbiAqIEBwYXJhbSB7c3RyaW5nW119IHJ1bGVcbiAqIEBwYXJhbSB7c3RyaW5nW119IHJ1bGVzXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlc2V0c1xuICogQHBhcmFtIHtudW1iZXJbXX0gcHNldWRvXG4gKiBAcGFyYW0ge251bWJlcltdfSBwb2ludHNcbiAqIEBwYXJhbSB7c3RyaW5nW119IGRlY2xhcmF0aW9uc1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2UgKHZhbHVlLCByb290LCBwYXJlbnQsIHJ1bGUsIHJ1bGVzLCBydWxlc2V0cywgcHNldWRvLCBwb2ludHMsIGRlY2xhcmF0aW9ucykge1xuXHR2YXIgaW5kZXggPSAwXG5cdHZhciBvZmZzZXQgPSAwXG5cdHZhciBsZW5ndGggPSBwc2V1ZG9cblx0dmFyIGF0cnVsZSA9IDBcblx0dmFyIHByb3BlcnR5ID0gMFxuXHR2YXIgcHJldmlvdXMgPSAwXG5cdHZhciB2YXJpYWJsZSA9IDFcblx0dmFyIHNjYW5uaW5nID0gMVxuXHR2YXIgYW1wZXJzYW5kID0gMVxuXHR2YXIgY2hhcmFjdGVyID0gMFxuXHR2YXIgdHlwZSA9ICcnXG5cdHZhciBwcm9wcyA9IHJ1bGVzXG5cdHZhciBjaGlsZHJlbiA9IHJ1bGVzZXRzXG5cdHZhciByZWZlcmVuY2UgPSBydWxlXG5cdHZhciBjaGFyYWN0ZXJzID0gdHlwZVxuXG5cdHdoaWxlIChzY2FubmluZylcblx0XHRzd2l0Y2ggKHByZXZpb3VzID0gY2hhcmFjdGVyLCBjaGFyYWN0ZXIgPSBuZXh0KCkpIHtcblx0XHRcdC8vIChcblx0XHRcdGNhc2UgNDA6XG5cdFx0XHRcdGlmIChwcmV2aW91cyAhPSAxMDggJiYgY2hhcmF0KGNoYXJhY3RlcnMsIGxlbmd0aCAtIDEpID09IDU4KSB7XG5cdFx0XHRcdFx0aWYgKGluZGV4b2YoY2hhcmFjdGVycyArPSByZXBsYWNlKGRlbGltaXQoY2hhcmFjdGVyKSwgJyYnLCAnJlxcZicpLCAnJlxcZicpICE9IC0xKVxuXHRcdFx0XHRcdFx0YW1wZXJzYW5kID0gLTFcblx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHR9XG5cdFx0XHQvLyBcIiAnIFtcblx0XHRcdGNhc2UgMzQ6IGNhc2UgMzk6IGNhc2UgOTE6XG5cdFx0XHRcdGNoYXJhY3RlcnMgKz0gZGVsaW1pdChjaGFyYWN0ZXIpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyBcXHQgXFxuIFxcciBcXHNcblx0XHRcdGNhc2UgOTogY2FzZSAxMDogY2FzZSAxMzogY2FzZSAzMjpcblx0XHRcdFx0Y2hhcmFjdGVycyArPSB3aGl0ZXNwYWNlKHByZXZpb3VzKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gXFxcblx0XHRcdGNhc2UgOTI6XG5cdFx0XHRcdGNoYXJhY3RlcnMgKz0gZXNjYXBpbmcoY2FyZXQoKSAtIDEsIDcpXG5cdFx0XHRcdGNvbnRpbnVlXG5cdFx0XHQvLyAvXG5cdFx0XHRjYXNlIDQ3OlxuXHRcdFx0XHRzd2l0Y2ggKHBlZWsoKSkge1xuXHRcdFx0XHRcdGNhc2UgNDI6IGNhc2UgNDc6XG5cdFx0XHRcdFx0XHRhcHBlbmQoY29tbWVudChjb21tZW50ZXIobmV4dCgpLCBjYXJldCgpKSwgcm9vdCwgcGFyZW50KSwgZGVjbGFyYXRpb25zKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0Y2hhcmFjdGVycyArPSAnLydcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8ge1xuXHRcdFx0Y2FzZSAxMjMgKiB2YXJpYWJsZTpcblx0XHRcdFx0cG9pbnRzW2luZGV4KytdID0gc3RybGVuKGNoYXJhY3RlcnMpICogYW1wZXJzYW5kXG5cdFx0XHQvLyB9IDsgXFwwXG5cdFx0XHRjYXNlIDEyNSAqIHZhcmlhYmxlOiBjYXNlIDU5OiBjYXNlIDA6XG5cdFx0XHRcdHN3aXRjaCAoY2hhcmFjdGVyKSB7XG5cdFx0XHRcdFx0Ly8gXFwwIH1cblx0XHRcdFx0XHRjYXNlIDA6IGNhc2UgMTI1OiBzY2FubmluZyA9IDBcblx0XHRcdFx0XHQvLyA7XG5cdFx0XHRcdFx0Y2FzZSA1OSArIG9mZnNldDogaWYgKGFtcGVyc2FuZCA9PSAtMSkgY2hhcmFjdGVycyA9IHJlcGxhY2UoY2hhcmFjdGVycywgL1xcZi9nLCAnJylcblx0XHRcdFx0XHRcdGlmIChwcm9wZXJ0eSA+IDAgJiYgKHN0cmxlbihjaGFyYWN0ZXJzKSAtIGxlbmd0aCkpXG5cdFx0XHRcdFx0XHRcdGFwcGVuZChwcm9wZXJ0eSA+IDMyID8gZGVjbGFyYXRpb24oY2hhcmFjdGVycyArICc7JywgcnVsZSwgcGFyZW50LCBsZW5ndGggLSAxKSA6IGRlY2xhcmF0aW9uKHJlcGxhY2UoY2hhcmFjdGVycywgJyAnLCAnJykgKyAnOycsIHJ1bGUsIHBhcmVudCwgbGVuZ3RoIC0gMiksIGRlY2xhcmF0aW9ucylcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Ly8gQCA7XG5cdFx0XHRcdFx0Y2FzZSA1OTogY2hhcmFjdGVycyArPSAnOydcblx0XHRcdFx0XHQvLyB7IHJ1bGUvYXQtcnVsZVxuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRhcHBlbmQocmVmZXJlbmNlID0gcnVsZXNldChjaGFyYWN0ZXJzLCByb290LCBwYXJlbnQsIGluZGV4LCBvZmZzZXQsIHJ1bGVzLCBwb2ludHMsIHR5cGUsIHByb3BzID0gW10sIGNoaWxkcmVuID0gW10sIGxlbmd0aCksIHJ1bGVzZXRzKVxuXG5cdFx0XHRcdFx0XHRpZiAoY2hhcmFjdGVyID09PSAxMjMpXG5cdFx0XHRcdFx0XHRcdGlmIChvZmZzZXQgPT09IDApXG5cdFx0XHRcdFx0XHRcdFx0cGFyc2UoY2hhcmFjdGVycywgcm9vdCwgcmVmZXJlbmNlLCByZWZlcmVuY2UsIHByb3BzLCBydWxlc2V0cywgbGVuZ3RoLCBwb2ludHMsIGNoaWxkcmVuKVxuXHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0c3dpdGNoIChhdHJ1bGUgPT09IDk5ICYmIGNoYXJhdChjaGFyYWN0ZXJzLCAzKSA9PT0gMTEwID8gMTAwIDogYXRydWxlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBkIGwgbSBzXG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDEwMDogY2FzZSAxMDg6IGNhc2UgMTA5OiBjYXNlIDExNTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0cGFyc2UodmFsdWUsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCBydWxlICYmIGFwcGVuZChydWxlc2V0KHZhbHVlLCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgMCwgMCwgcnVsZXMsIHBvaW50cywgdHlwZSwgcnVsZXMsIHByb3BzID0gW10sIGxlbmd0aCksIGNoaWxkcmVuKSwgcnVsZXMsIGNoaWxkcmVuLCBsZW5ndGgsIHBvaW50cywgcnVsZSA/IHByb3BzIDogY2hpbGRyZW4pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJzZShjaGFyYWN0ZXJzLCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCBbJyddLCBjaGlsZHJlbiwgMCwgcG9pbnRzLCBjaGlsZHJlbilcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpbmRleCA9IG9mZnNldCA9IHByb3BlcnR5ID0gMCwgdmFyaWFibGUgPSBhbXBlcnNhbmQgPSAxLCB0eXBlID0gY2hhcmFjdGVycyA9ICcnLCBsZW5ndGggPSBwc2V1ZG9cblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIDpcblx0XHRcdGNhc2UgNTg6XG5cdFx0XHRcdGxlbmd0aCA9IDEgKyBzdHJsZW4oY2hhcmFjdGVycyksIHByb3BlcnR5ID0gcHJldmlvdXNcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmICh2YXJpYWJsZSA8IDEpXG5cdFx0XHRcdFx0aWYgKGNoYXJhY3RlciA9PSAxMjMpXG5cdFx0XHRcdFx0XHQtLXZhcmlhYmxlXG5cdFx0XHRcdFx0ZWxzZSBpZiAoY2hhcmFjdGVyID09IDEyNSAmJiB2YXJpYWJsZSsrID09IDAgJiYgcHJldigpID09IDEyNSlcblx0XHRcdFx0XHRcdGNvbnRpbnVlXG5cblx0XHRcdFx0c3dpdGNoIChjaGFyYWN0ZXJzICs9IGZyb20oY2hhcmFjdGVyKSwgY2hhcmFjdGVyICogdmFyaWFibGUpIHtcblx0XHRcdFx0XHQvLyAmXG5cdFx0XHRcdFx0Y2FzZSAzODpcblx0XHRcdFx0XHRcdGFtcGVyc2FuZCA9IG9mZnNldCA+IDAgPyAxIDogKGNoYXJhY3RlcnMgKz0gJ1xcZicsIC0xKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyAsXG5cdFx0XHRcdFx0Y2FzZSA0NDpcblx0XHRcdFx0XHRcdHBvaW50c1tpbmRleCsrXSA9IChzdHJsZW4oY2hhcmFjdGVycykgLSAxKSAqIGFtcGVyc2FuZCwgYW1wZXJzYW5kID0gMVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyBAXG5cdFx0XHRcdFx0Y2FzZSA2NDpcblx0XHRcdFx0XHRcdC8vIC1cblx0XHRcdFx0XHRcdGlmIChwZWVrKCkgPT09IDQ1KVxuXHRcdFx0XHRcdFx0XHRjaGFyYWN0ZXJzICs9IGRlbGltaXQobmV4dCgpKVxuXG5cdFx0XHRcdFx0XHRhdHJ1bGUgPSBwZWVrKCksIG9mZnNldCA9IGxlbmd0aCA9IHN0cmxlbih0eXBlID0gY2hhcmFjdGVycyArPSBpZGVudGlmaWVyKGNhcmV0KCkpKSwgY2hhcmFjdGVyKytcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Ly8gLVxuXHRcdFx0XHRcdGNhc2UgNDU6XG5cdFx0XHRcdFx0XHRpZiAocHJldmlvdXMgPT09IDQ1ICYmIHN0cmxlbihjaGFyYWN0ZXJzKSA9PSAyKVxuXHRcdFx0XHRcdFx0XHR2YXJpYWJsZSA9IDBcblx0XHRcdFx0fVxuXHRcdH1cblxuXHRyZXR1cm4gcnVsZXNldHNcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0XG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlc1xuICogQHBhcmFtIHtudW1iZXJbXX0gcG9pbnRzXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHBhcmFtIHtzdHJpbmdbXX0gcHJvcHNcbiAqIEBwYXJhbSB7c3RyaW5nW119IGNoaWxkcmVuXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydWxlc2V0ICh2YWx1ZSwgcm9vdCwgcGFyZW50LCBpbmRleCwgb2Zmc2V0LCBydWxlcywgcG9pbnRzLCB0eXBlLCBwcm9wcywgY2hpbGRyZW4sIGxlbmd0aCkge1xuXHR2YXIgcG9zdCA9IG9mZnNldCAtIDFcblx0dmFyIHJ1bGUgPSBvZmZzZXQgPT09IDAgPyBydWxlcyA6IFsnJ11cblx0dmFyIHNpemUgPSBzaXplb2YocnVsZSlcblxuXHRmb3IgKHZhciBpID0gMCwgaiA9IDAsIGsgPSAwOyBpIDwgaW5kZXg7ICsraSlcblx0XHRmb3IgKHZhciB4ID0gMCwgeSA9IHN1YnN0cih2YWx1ZSwgcG9zdCArIDEsIHBvc3QgPSBhYnMoaiA9IHBvaW50c1tpXSkpLCB6ID0gdmFsdWU7IHggPCBzaXplOyArK3gpXG5cdFx0XHRpZiAoeiA9IHRyaW0oaiA+IDAgPyBydWxlW3hdICsgJyAnICsgeSA6IHJlcGxhY2UoeSwgLyZcXGYvZywgcnVsZVt4XSkpKVxuXHRcdFx0XHRwcm9wc1trKytdID0gelxuXG5cdHJldHVybiBub2RlKHZhbHVlLCByb290LCBwYXJlbnQsIG9mZnNldCA9PT0gMCA/IFJVTEVTRVQgOiB0eXBlLCBwcm9wcywgY2hpbGRyZW4sIGxlbmd0aClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbWVudCAodmFsdWUsIHJvb3QsIHBhcmVudCkge1xuXHRyZXR1cm4gbm9kZSh2YWx1ZSwgcm9vdCwgcGFyZW50LCBDT01NRU5ULCBmcm9tKGNoYXIoKSksIHN1YnN0cih2YWx1ZSwgMiwgLTIpLCAwKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJhdGlvbiAodmFsdWUsIHJvb3QsIHBhcmVudCwgbGVuZ3RoKSB7XG5cdHJldHVybiBub2RlKHZhbHVlLCByb290LCBwYXJlbnQsIERFQ0xBUkFUSU9OLCBzdWJzdHIodmFsdWUsIDAsIGxlbmd0aCksIHN1YnN0cih2YWx1ZSwgbGVuZ3RoICsgMSwgLTEpLCBsZW5ndGgpXG59XG4iLCJpbXBvcnQge0lNUE9SVCwgTEFZRVIsIENPTU1FTlQsIFJVTEVTRVQsIERFQ0xBUkFUSU9OLCBLRVlGUkFNRVN9IGZyb20gJy4vRW51bS5qcydcbmltcG9ydCB7c3RybGVuLCBzaXplb2Z9IGZyb20gJy4vVXRpbGl0eS5qcydcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdHZhciBvdXRwdXQgPSAnJ1xuXHR2YXIgbGVuZ3RoID0gc2l6ZW9mKGNoaWxkcmVuKVxuXG5cdGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspXG5cdFx0b3V0cHV0ICs9IGNhbGxiYWNrKGNoaWxkcmVuW2ldLCBpLCBjaGlsZHJlbiwgY2FsbGJhY2spIHx8ICcnXG5cblx0cmV0dXJuIG91dHB1dFxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBlbGVtZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7b2JqZWN0W119IGNoaWxkcmVuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5IChlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG5cdFx0Y2FzZSBMQVlFUjogaWYgKGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoKSBicmVha1xuXHRcdGNhc2UgSU1QT1JUOiBjYXNlIERFQ0xBUkFUSU9OOiByZXR1cm4gZWxlbWVudC5yZXR1cm4gPSBlbGVtZW50LnJldHVybiB8fCBlbGVtZW50LnZhbHVlXG5cdFx0Y2FzZSBDT01NRU5UOiByZXR1cm4gJydcblx0XHRjYXNlIEtFWUZSQU1FUzogcmV0dXJuIGVsZW1lbnQucmV0dXJuID0gZWxlbWVudC52YWx1ZSArICd7JyArIHNlcmlhbGl6ZShlbGVtZW50LmNoaWxkcmVuLCBjYWxsYmFjaykgKyAnfSdcblx0XHRjYXNlIFJVTEVTRVQ6IGVsZW1lbnQudmFsdWUgPSBlbGVtZW50LnByb3BzLmpvaW4oJywnKVxuXHR9XG5cblx0cmV0dXJuIHN0cmxlbihjaGlsZHJlbiA9IHNlcmlhbGl6ZShlbGVtZW50LmNoaWxkcmVuLCBjYWxsYmFjaykpID8gZWxlbWVudC5yZXR1cm4gPSBlbGVtZW50LnZhbHVlICsgJ3snICsgY2hpbGRyZW4gKyAnfScgOiAnJ1xufVxuIiwiaW1wb3J0IHtNUywgTU9aLCBXRUJLSVQsIFJVTEVTRVQsIEtFWUZSQU1FUywgREVDTEFSQVRJT059IGZyb20gJy4vRW51bS5qcydcbmltcG9ydCB7bWF0Y2gsIGNoYXJhdCwgc3Vic3RyLCBzdHJsZW4sIHNpemVvZiwgcmVwbGFjZSwgY29tYmluZX0gZnJvbSAnLi9VdGlsaXR5LmpzJ1xuaW1wb3J0IHtjb3B5LCB0b2tlbml6ZX0gZnJvbSAnLi9Ub2tlbml6ZXIuanMnXG5pbXBvcnQge3NlcmlhbGl6ZX0gZnJvbSAnLi9TZXJpYWxpemVyLmpzJ1xuaW1wb3J0IHtwcmVmaXh9IGZyb20gJy4vUHJlZml4ZXIuanMnXG5cbi8qKlxuICogQHBhcmFtIHtmdW5jdGlvbltdfSBjb2xsZWN0aW9uXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1pZGRsZXdhcmUgKGNvbGxlY3Rpb24pIHtcblx0dmFyIGxlbmd0aCA9IHNpemVvZihjb2xsZWN0aW9uKVxuXG5cdHJldHVybiBmdW5jdGlvbiAoZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHRcdHZhciBvdXRwdXQgPSAnJ1xuXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKylcblx0XHRcdG91dHB1dCArPSBjb2xsZWN0aW9uW2ldKGVsZW1lbnQsIGluZGV4LCBjaGlsZHJlbiwgY2FsbGJhY2spIHx8ICcnXG5cblx0XHRyZXR1cm4gb3V0cHV0XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydWxlc2hlZXQgKGNhbGxiYWNrKSB7XG5cdHJldHVybiBmdW5jdGlvbiAoZWxlbWVudCkge1xuXHRcdGlmICghZWxlbWVudC5yb290KVxuXHRcdFx0aWYgKGVsZW1lbnQgPSBlbGVtZW50LnJldHVybilcblx0XHRcdFx0Y2FsbGJhY2soZWxlbWVudClcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBlbGVtZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7b2JqZWN0W119IGNoaWxkcmVuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlZml4ZXIgKGVsZW1lbnQsIGluZGV4LCBjaGlsZHJlbiwgY2FsbGJhY2spIHtcblx0aWYgKGVsZW1lbnQubGVuZ3RoID4gLTEpXG5cdFx0aWYgKCFlbGVtZW50LnJldHVybilcblx0XHRcdHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG5cdFx0XHRcdGNhc2UgREVDTEFSQVRJT046IGVsZW1lbnQucmV0dXJuID0gcHJlZml4KGVsZW1lbnQudmFsdWUsIGVsZW1lbnQubGVuZ3RoLCBjaGlsZHJlbilcblx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0Y2FzZSBLRVlGUkFNRVM6XG5cdFx0XHRcdFx0cmV0dXJuIHNlcmlhbGl6ZShbY29weShlbGVtZW50LCB7dmFsdWU6IHJlcGxhY2UoZWxlbWVudC52YWx1ZSwgJ0AnLCAnQCcgKyBXRUJLSVQpfSldLCBjYWxsYmFjaylcblx0XHRcdFx0Y2FzZSBSVUxFU0VUOlxuXHRcdFx0XHRcdGlmIChlbGVtZW50Lmxlbmd0aClcblx0XHRcdFx0XHRcdHJldHVybiBjb21iaW5lKGVsZW1lbnQucHJvcHMsIGZ1bmN0aW9uICh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRzd2l0Y2ggKG1hdGNoKHZhbHVlLCAvKDo6cGxhY1xcdyt8OnJlYWQtXFx3KykvKSkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIDpyZWFkLShvbmx5fHdyaXRlKVxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgJzpyZWFkLW9ubHknOiBjYXNlICc6cmVhZC13cml0ZSc6XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gc2VyaWFsaXplKFtjb3B5KGVsZW1lbnQsIHtwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHJlYWQtXFx3KykvLCAnOicgKyBNT1ogKyAnJDEnKV19KV0sIGNhbGxiYWNrKVxuXHRcdFx0XHRcdFx0XHRcdC8vIDpwbGFjZWhvbGRlclxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgJzo6cGxhY2Vob2xkZXInOlxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHNlcmlhbGl6ZShbXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvcHkoZWxlbWVudCwge3Byb3BzOiBbcmVwbGFjZSh2YWx1ZSwgLzoocGxhY1xcdyspLywgJzonICsgV0VCS0lUICsgJ2lucHV0LSQxJyldfSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvcHkoZWxlbWVudCwge3Byb3BzOiBbcmVwbGFjZSh2YWx1ZSwgLzoocGxhY1xcdyspLywgJzonICsgTU9aICsgJyQxJyldfSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvcHkoZWxlbWVudCwge3Byb3BzOiBbcmVwbGFjZSh2YWx1ZSwgLzoocGxhY1xcdyspLywgTVMgKyAnaW5wdXQtJDEnKV19KVxuXHRcdFx0XHRcdFx0XHRcdFx0XSwgY2FsbGJhY2spXG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gJydcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5hbWVzcGFjZSAoZWxlbWVudCkge1xuXHRzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuXHRcdGNhc2UgUlVMRVNFVDpcblx0XHRcdGVsZW1lbnQucHJvcHMgPSBlbGVtZW50LnByb3BzLm1hcChmdW5jdGlvbiAodmFsdWUpIHtcblx0XHRcdFx0cmV0dXJuIGNvbWJpbmUodG9rZW5pemUodmFsdWUpLCBmdW5jdGlvbiAodmFsdWUsIGluZGV4LCBjaGlsZHJlbikge1xuXHRcdFx0XHRcdHN3aXRjaCAoY2hhcmF0KHZhbHVlLCAwKSkge1xuXHRcdFx0XHRcdFx0Ly8gXFxmXG5cdFx0XHRcdFx0XHRjYXNlIDEyOlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc3Vic3RyKHZhbHVlLCAxLCBzdHJsZW4odmFsdWUpKVxuXHRcdFx0XHRcdFx0Ly8gXFwwICggKyA+IH5cblx0XHRcdFx0XHRcdGNhc2UgMDogY2FzZSA0MDogY2FzZSA0MzogY2FzZSA2MjogY2FzZSAxMjY6XG5cdFx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZVxuXHRcdFx0XHRcdFx0Ly8gOlxuXHRcdFx0XHRcdFx0Y2FzZSA1ODpcblx0XHRcdFx0XHRcdFx0aWYgKGNoaWxkcmVuWysraW5kZXhdID09PSAnZ2xvYmFsJylcblx0XHRcdFx0XHRcdFx0XHRjaGlsZHJlbltpbmRleF0gPSAnJywgY2hpbGRyZW5bKytpbmRleF0gPSAnXFxmJyArIHN1YnN0cihjaGlsZHJlbltpbmRleF0sIGluZGV4ID0gMSwgLTEpXG5cdFx0XHRcdFx0XHQvLyBcXHNcblx0XHRcdFx0XHRcdGNhc2UgMzI6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBpbmRleCA9PT0gMSA/ICcnIDogdmFsdWVcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdHN3aXRjaCAoaW5kZXgpIHtcblx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6IGVsZW1lbnQgPSB2YWx1ZVxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHNpemVvZihjaGlsZHJlbikgPiAxID8gJycgOiB2YWx1ZVxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgaW5kZXggPSBzaXplb2YoY2hpbGRyZW4pIC0gMTogY2FzZSAyOlxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGluZGV4ID09PSAyID8gdmFsdWUgKyBlbGVtZW50ICsgZWxlbWVudCA6IHZhbHVlICsgZWxlbWVudFxuXHRcdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWVcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdH1cbn1cbiIsInZhciB3ZWFrTWVtb2l6ZSA9IGZ1bmN0aW9uIHdlYWtNZW1vaXplKGZ1bmMpIHtcbiAgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmcpIHtcbiAgICBpZiAoY2FjaGUuaGFzKGFyZykpIHtcbiAgICAgIC8vIFVzZSBub24tbnVsbCBhc3NlcnRpb24gYmVjYXVzZSB3ZSBqdXN0IGNoZWNrZWQgdGhhdCB0aGUgY2FjaGUgYGhhc2AgaXRcbiAgICAgIC8vIFRoaXMgYWxsb3dzIHVzIHRvIHJlbW92ZSBgdW5kZWZpbmVkYCBmcm9tIHRoZSByZXR1cm4gdmFsdWVcbiAgICAgIHJldHVybiBjYWNoZS5nZXQoYXJnKTtcbiAgICB9XG5cbiAgICB2YXIgcmV0ID0gZnVuYyhhcmcpO1xuICAgIGNhY2hlLnNldChhcmcsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfTtcbn07XG5cbmV4cG9ydCB7IHdlYWtNZW1vaXplIGFzIGRlZmF1bHQgfTtcbiIsImZ1bmN0aW9uIG1lbW9pemUoZm4pIHtcbiAgdmFyIGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmcpIHtcbiAgICBpZiAoY2FjaGVbYXJnXSA9PT0gdW5kZWZpbmVkKSBjYWNoZVthcmddID0gZm4oYXJnKTtcbiAgICByZXR1cm4gY2FjaGVbYXJnXTtcbiAgfTtcbn1cblxuZXhwb3J0IHsgbWVtb2l6ZSBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgeyBTdHlsZVNoZWV0IH0gZnJvbSAnQGVtb3Rpb24vc2hlZXQnO1xuaW1wb3J0IHsgZGVhbGxvYywgYWxsb2MsIG5leHQsIHRva2VuLCBmcm9tLCBwZWVrLCBkZWxpbWl0LCBzbGljZSwgcG9zaXRpb24sIFJVTEVTRVQsIGNvbWJpbmUsIG1hdGNoLCBzZXJpYWxpemUsIGNvcHksIHJlcGxhY2UsIFdFQktJVCwgTU9aLCBNUywgS0VZRlJBTUVTLCBERUNMQVJBVElPTiwgaGFzaCwgY2hhcmF0LCBzdHJsZW4sIGluZGV4b2YsIHN0cmluZ2lmeSwgcnVsZXNoZWV0LCBtaWRkbGV3YXJlLCBjb21waWxlIH0gZnJvbSAnc3R5bGlzJztcbmltcG9ydCAnQGVtb3Rpb24vd2Vhay1tZW1vaXplJztcbmltcG9ydCAnQGVtb3Rpb24vbWVtb2l6ZSc7XG5cbnZhciBpZGVudGlmaWVyV2l0aFBvaW50VHJhY2tpbmcgPSBmdW5jdGlvbiBpZGVudGlmaWVyV2l0aFBvaW50VHJhY2tpbmcoYmVnaW4sIHBvaW50cywgaW5kZXgpIHtcbiAgdmFyIHByZXZpb3VzID0gMDtcbiAgdmFyIGNoYXJhY3RlciA9IDA7XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBwcmV2aW91cyA9IGNoYXJhY3RlcjtcbiAgICBjaGFyYWN0ZXIgPSBwZWVrKCk7IC8vICZcXGZcblxuICAgIGlmIChwcmV2aW91cyA9PT0gMzggJiYgY2hhcmFjdGVyID09PSAxMikge1xuICAgICAgcG9pbnRzW2luZGV4XSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHRva2VuKGNoYXJhY3RlcikpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIG5leHQoKTtcbiAgfVxuXG4gIHJldHVybiBzbGljZShiZWdpbiwgcG9zaXRpb24pO1xufTtcblxudmFyIHRvUnVsZXMgPSBmdW5jdGlvbiB0b1J1bGVzKHBhcnNlZCwgcG9pbnRzKSB7XG4gIC8vIHByZXRlbmQgd2UndmUgc3RhcnRlZCB3aXRoIGEgY29tbWFcbiAgdmFyIGluZGV4ID0gLTE7XG4gIHZhciBjaGFyYWN0ZXIgPSA0NDtcblxuICBkbyB7XG4gICAgc3dpdGNoICh0b2tlbihjaGFyYWN0ZXIpKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIC8vICZcXGZcbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gMzggJiYgcGVlaygpID09PSAxMikge1xuICAgICAgICAgIC8vIHRoaXMgaXMgbm90IDEwMCUgY29ycmVjdCwgd2UgZG9uJ3QgYWNjb3VudCBmb3IgbGl0ZXJhbCBzZXF1ZW5jZXMgaGVyZSAtIGxpa2UgZm9yIGV4YW1wbGUgcXVvdGVkIHN0cmluZ3NcbiAgICAgICAgICAvLyBzdHlsaXMgaW5zZXJ0cyBcXGYgYWZ0ZXIgJiB0byBrbm93IHdoZW4gJiB3aGVyZSBpdCBzaG91bGQgcmVwbGFjZSB0aGlzIHNlcXVlbmNlIHdpdGggdGhlIGNvbnRleHQgc2VsZWN0b3JcbiAgICAgICAgICAvLyBhbmQgd2hlbiBpdCBzaG91bGQganVzdCBjb25jYXRlbmF0ZSB0aGUgb3V0ZXIgYW5kIGlubmVyIHNlbGVjdG9yc1xuICAgICAgICAgIC8vIGl0J3MgdmVyeSB1bmxpa2VseSBmb3IgdGhpcyBzZXF1ZW5jZSB0byBhY3R1YWxseSBhcHBlYXIgaW4gYSBkaWZmZXJlbnQgY29udGV4dCwgc28gd2UganVzdCBsZXZlcmFnZSB0aGlzIGZhY3QgaGVyZVxuICAgICAgICAgIHBvaW50c1tpbmRleF0gPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcGFyc2VkW2luZGV4XSArPSBpZGVudGlmaWVyV2l0aFBvaW50VHJhY2tpbmcocG9zaXRpb24gLSAxLCBwb2ludHMsIGluZGV4KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgMjpcbiAgICAgICAgcGFyc2VkW2luZGV4XSArPSBkZWxpbWl0KGNoYXJhY3Rlcik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIDQ6XG4gICAgICAgIC8vIGNvbW1hXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IDQ0KSB7XG4gICAgICAgICAgLy8gY29sb25cbiAgICAgICAgICBwYXJzZWRbKytpbmRleF0gPSBwZWVrKCkgPT09IDU4ID8gJyZcXGYnIDogJyc7XG4gICAgICAgICAgcG9pbnRzW2luZGV4XSA9IHBhcnNlZFtpbmRleF0ubGVuZ3RoO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgIC8vIGZhbGx0aHJvdWdoXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHBhcnNlZFtpbmRleF0gKz0gZnJvbShjaGFyYWN0ZXIpO1xuICAgIH1cbiAgfSB3aGlsZSAoY2hhcmFjdGVyID0gbmV4dCgpKTtcblxuICByZXR1cm4gcGFyc2VkO1xufTtcblxudmFyIGdldFJ1bGVzID0gZnVuY3Rpb24gZ2V0UnVsZXModmFsdWUsIHBvaW50cykge1xuICByZXR1cm4gZGVhbGxvYyh0b1J1bGVzKGFsbG9jKHZhbHVlKSwgcG9pbnRzKSk7XG59OyAvLyBXZWFrU2V0IHdvdWxkIGJlIG1vcmUgYXBwcm9wcmlhdGUsIGJ1dCBvbmx5IFdlYWtNYXAgaXMgc3VwcG9ydGVkIGluIElFMTFcblxuXG52YXIgZml4ZWRFbGVtZW50cyA9IC8qICNfX1BVUkVfXyAqL25ldyBXZWFrTWFwKCk7XG52YXIgY29tcGF0ID0gZnVuY3Rpb24gY29tcGF0KGVsZW1lbnQpIHtcbiAgaWYgKGVsZW1lbnQudHlwZSAhPT0gJ3J1bGUnIHx8ICFlbGVtZW50LnBhcmVudCB8fCAvLyBwb3NpdGl2ZSAubGVuZ3RoIGluZGljYXRlcyB0aGF0IHRoaXMgcnVsZSBjb250YWlucyBwc2V1ZG9cbiAgLy8gbmVnYXRpdmUgLmxlbmd0aCBpbmRpY2F0ZXMgdGhhdCB0aGlzIHJ1bGUgaGFzIGJlZW4gYWxyZWFkeSBwcmVmaXhlZFxuICBlbGVtZW50Lmxlbmd0aCA8IDEpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgdmFsdWUgPSBlbGVtZW50LnZhbHVlO1xuICB2YXIgcGFyZW50ID0gZWxlbWVudC5wYXJlbnQ7XG4gIHZhciBpc0ltcGxpY2l0UnVsZSA9IGVsZW1lbnQuY29sdW1uID09PSBwYXJlbnQuY29sdW1uICYmIGVsZW1lbnQubGluZSA9PT0gcGFyZW50LmxpbmU7XG5cbiAgd2hpbGUgKHBhcmVudC50eXBlICE9PSAncnVsZScpIHtcbiAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xuICAgIGlmICghcGFyZW50KSByZXR1cm47XG4gIH0gLy8gc2hvcnQtY2lyY3VpdCBmb3IgdGhlIHNpbXBsZXN0IGNhc2VcblxuXG4gIGlmIChlbGVtZW50LnByb3BzLmxlbmd0aCA9PT0gMSAmJiB2YWx1ZS5jaGFyQ29kZUF0KDApICE9PSA1OFxuICAvKiBjb2xvbiAqL1xuICAmJiAhZml4ZWRFbGVtZW50cy5nZXQocGFyZW50KSkge1xuICAgIHJldHVybjtcbiAgfSAvLyBpZiB0aGlzIGlzIGFuIGltcGxpY2l0bHkgaW5zZXJ0ZWQgcnVsZSAodGhlIG9uZSBlYWdlcmx5IGluc2VydGVkIGF0IHRoZSBlYWNoIG5ldyBuZXN0ZWQgbGV2ZWwpXG4gIC8vIHRoZW4gdGhlIHByb3BzIGhhcyBhbHJlYWR5IGJlZW4gbWFuaXB1bGF0ZWQgYmVmb3JlaGFuZCBhcyB0aGV5IHRoYXQgYXJyYXkgaXMgc2hhcmVkIGJldHdlZW4gaXQgYW5kIGl0cyBcInJ1bGUgcGFyZW50XCJcblxuXG4gIGlmIChpc0ltcGxpY2l0UnVsZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZpeGVkRWxlbWVudHMuc2V0KGVsZW1lbnQsIHRydWUpO1xuICB2YXIgcG9pbnRzID0gW107XG4gIHZhciBydWxlcyA9IGdldFJ1bGVzKHZhbHVlLCBwb2ludHMpO1xuICB2YXIgcGFyZW50UnVsZXMgPSBwYXJlbnQucHJvcHM7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGsgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHBhcmVudFJ1bGVzLmxlbmd0aDsgaisrLCBrKyspIHtcbiAgICAgIGVsZW1lbnQucHJvcHNba10gPSBwb2ludHNbaV0gPyBydWxlc1tpXS5yZXBsYWNlKC8mXFxmL2csIHBhcmVudFJ1bGVzW2pdKSA6IHBhcmVudFJ1bGVzW2pdICsgXCIgXCIgKyBydWxlc1tpXTtcbiAgICB9XG4gIH1cbn07XG52YXIgcmVtb3ZlTGFiZWwgPSBmdW5jdGlvbiByZW1vdmVMYWJlbChlbGVtZW50KSB7XG4gIGlmIChlbGVtZW50LnR5cGUgPT09ICdkZWNsJykge1xuICAgIHZhciB2YWx1ZSA9IGVsZW1lbnQudmFsdWU7XG5cbiAgICBpZiAoIC8vIGNoYXJjb2RlIGZvciBsXG4gICAgdmFsdWUuY2hhckNvZGVBdCgwKSA9PT0gMTA4ICYmIC8vIGNoYXJjb2RlIGZvciBiXG4gICAgdmFsdWUuY2hhckNvZGVBdCgyKSA9PT0gOTgpIHtcbiAgICAgIC8vIHRoaXMgaWdub3JlcyBsYWJlbFxuICAgICAgZWxlbWVudFtcInJldHVyblwiXSA9ICcnO1xuICAgICAgZWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfVxufTtcblxuLyogZXNsaW50LWRpc2FibGUgbm8tZmFsbHRocm91Z2ggKi9cblxuZnVuY3Rpb24gcHJlZml4KHZhbHVlLCBsZW5ndGgpIHtcbiAgc3dpdGNoIChoYXNoKHZhbHVlLCBsZW5ndGgpKSB7XG4gICAgLy8gY29sb3ItYWRqdXN0XG4gICAgY2FzZSA1MTAzOlxuICAgICAgcmV0dXJuIFdFQktJVCArICdwcmludC0nICsgdmFsdWUgKyB2YWx1ZTtcbiAgICAvLyBhbmltYXRpb24sIGFuaW1hdGlvbi0oZGVsYXl8ZGlyZWN0aW9ufGR1cmF0aW9ufGZpbGwtbW9kZXxpdGVyYXRpb24tY291bnR8bmFtZXxwbGF5LXN0YXRlfHRpbWluZy1mdW5jdGlvbilcblxuICAgIGNhc2UgNTczNzpcbiAgICBjYXNlIDQyMDE6XG4gICAgY2FzZSAzMTc3OlxuICAgIGNhc2UgMzQzMzpcbiAgICBjYXNlIDE2NDE6XG4gICAgY2FzZSA0NDU3OlxuICAgIGNhc2UgMjkyMTogLy8gdGV4dC1kZWNvcmF0aW9uLCBmaWx0ZXIsIGNsaXAtcGF0aCwgYmFja2ZhY2UtdmlzaWJpbGl0eSwgY29sdW1uLCBib3gtZGVjb3JhdGlvbi1icmVha1xuXG4gICAgY2FzZSA1NTcyOlxuICAgIGNhc2UgNjM1NjpcbiAgICBjYXNlIDU4NDQ6XG4gICAgY2FzZSAzMTkxOlxuICAgIGNhc2UgNjY0NTpcbiAgICBjYXNlIDMwMDU6IC8vIG1hc2ssIG1hc2staW1hZ2UsIG1hc2stKG1vZGV8Y2xpcHxzaXplKSwgbWFzay0ocmVwZWF0fG9yaWdpbiksIG1hc2stcG9zaXRpb24sIG1hc2stY29tcG9zaXRlLFxuXG4gICAgY2FzZSA2MzkxOlxuICAgIGNhc2UgNTg3OTpcbiAgICBjYXNlIDU2MjM6XG4gICAgY2FzZSA2MTM1OlxuICAgIGNhc2UgNDU5OTpcbiAgICBjYXNlIDQ4NTU6IC8vIGJhY2tncm91bmQtY2xpcCwgY29sdW1ucywgY29sdW1uLShjb3VudHxmaWxsfGdhcHxydWxlfHJ1bGUtY29sb3J8cnVsZS1zdHlsZXxydWxlLXdpZHRofHNwYW58d2lkdGgpXG5cbiAgICBjYXNlIDQyMTU6XG4gICAgY2FzZSA2Mzg5OlxuICAgIGNhc2UgNTEwOTpcbiAgICBjYXNlIDUzNjU6XG4gICAgY2FzZSA1NjIxOlxuICAgIGNhc2UgMzgyOTpcbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIHZhbHVlO1xuICAgIC8vIGFwcGVhcmFuY2UsIHVzZXItc2VsZWN0LCB0cmFuc2Zvcm0sIGh5cGhlbnMsIHRleHQtc2l6ZS1hZGp1c3RcblxuICAgIGNhc2UgNTM0OTpcbiAgICBjYXNlIDQyNDY6XG4gICAgY2FzZSA0ODEwOlxuICAgIGNhc2UgNjk2ODpcbiAgICBjYXNlIDI3NTY6XG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNT1ogKyB2YWx1ZSArIE1TICsgdmFsdWUgKyB2YWx1ZTtcbiAgICAvLyBmbGV4LCBmbGV4LWRpcmVjdGlvblxuXG4gICAgY2FzZSA2ODI4OlxuICAgIGNhc2UgNDI2ODpcbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgdmFsdWUgKyB2YWx1ZTtcbiAgICAvLyBvcmRlclxuXG4gICAgY2FzZSA2MTY1OlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyAnZmxleC0nICsgdmFsdWUgKyB2YWx1ZTtcbiAgICAvLyBhbGlnbi1pdGVtc1xuXG4gICAgY2FzZSA1MTg3OlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgcmVwbGFjZSh2YWx1ZSwgLyhcXHcrKS4rKDpbXl0rKS8sIFdFQktJVCArICdib3gtJDEkMicgKyBNUyArICdmbGV4LSQxJDInKSArIHZhbHVlO1xuICAgIC8vIGFsaWduLXNlbGZcblxuICAgIGNhc2UgNTQ0MzpcbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgJ2ZsZXgtaXRlbS0nICsgcmVwbGFjZSh2YWx1ZSwgL2ZsZXgtfC1zZWxmLywgJycpICsgdmFsdWU7XG4gICAgLy8gYWxpZ24tY29udGVudFxuXG4gICAgY2FzZSA0Njc1OlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyAnZmxleC1saW5lLXBhY2snICsgcmVwbGFjZSh2YWx1ZSwgL2FsaWduLWNvbnRlbnR8ZmxleC18LXNlbGYvLCAnJykgKyB2YWx1ZTtcbiAgICAvLyBmbGV4LXNocmlua1xuXG4gICAgY2FzZSA1NTQ4OlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAnc2hyaW5rJywgJ25lZ2F0aXZlJykgKyB2YWx1ZTtcbiAgICAvLyBmbGV4LWJhc2lzXG5cbiAgICBjYXNlIDUyOTI6XG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsICdiYXNpcycsICdwcmVmZXJyZWQtc2l6ZScpICsgdmFsdWU7XG4gICAgLy8gZmxleC1ncm93XG5cbiAgICBjYXNlIDYwNjA6XG4gICAgICByZXR1cm4gV0VCS0lUICsgJ2JveC0nICsgcmVwbGFjZSh2YWx1ZSwgJy1ncm93JywgJycpICsgV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsICdncm93JywgJ3Bvc2l0aXZlJykgKyB2YWx1ZTtcbiAgICAvLyB0cmFuc2l0aW9uXG5cbiAgICBjYXNlIDQ1NTQ6XG4gICAgICByZXR1cm4gV0VCS0lUICsgcmVwbGFjZSh2YWx1ZSwgLyhbXi1dKSh0cmFuc2Zvcm0pL2csICckMScgKyBXRUJLSVQgKyAnJDInKSArIHZhbHVlO1xuICAgIC8vIGN1cnNvclxuXG4gICAgY2FzZSA2MTg3OlxuICAgICAgcmV0dXJuIHJlcGxhY2UocmVwbGFjZShyZXBsYWNlKHZhbHVlLCAvKHpvb20tfGdyYWIpLywgV0VCS0lUICsgJyQxJyksIC8oaW1hZ2Utc2V0KS8sIFdFQktJVCArICckMScpLCB2YWx1ZSwgJycpICsgdmFsdWU7XG4gICAgLy8gYmFja2dyb3VuZCwgYmFja2dyb3VuZC1pbWFnZVxuXG4gICAgY2FzZSA1NDk1OlxuICAgIGNhc2UgMzk1OTpcbiAgICAgIHJldHVybiByZXBsYWNlKHZhbHVlLCAvKGltYWdlLXNldFxcKFteXSopLywgV0VCS0lUICsgJyQxJyArICckYCQxJyk7XG4gICAgLy8ganVzdGlmeS1jb250ZW50XG5cbiAgICBjYXNlIDQ5Njg6XG4gICAgICByZXR1cm4gcmVwbGFjZShyZXBsYWNlKHZhbHVlLCAvKC4rOikoZmxleC0pPyguKikvLCBXRUJLSVQgKyAnYm94LXBhY2s6JDMnICsgTVMgKyAnZmxleC1wYWNrOiQzJyksIC9zListYlteO10rLywgJ2p1c3RpZnknKSArIFdFQktJVCArIHZhbHVlICsgdmFsdWU7XG4gICAgLy8gKG1hcmdpbnxwYWRkaW5nKS1pbmxpbmUtKHN0YXJ0fGVuZClcblxuICAgIGNhc2UgNDA5NTpcbiAgICBjYXNlIDM1ODM6XG4gICAgY2FzZSA0MDY4OlxuICAgIGNhc2UgMjUzMjpcbiAgICAgIHJldHVybiByZXBsYWNlKHZhbHVlLCAvKC4rKS1pbmxpbmUoLispLywgV0VCS0lUICsgJyQxJDInKSArIHZhbHVlO1xuICAgIC8vIChtaW58bWF4KT8od2lkdGh8aGVpZ2h0fGlubGluZS1zaXplfGJsb2NrLXNpemUpXG5cbiAgICBjYXNlIDgxMTY6XG4gICAgY2FzZSA3MDU5OlxuICAgIGNhc2UgNTc1MzpcbiAgICBjYXNlIDU1MzU6XG4gICAgY2FzZSA1NDQ1OlxuICAgIGNhc2UgNTcwMTpcbiAgICBjYXNlIDQ5MzM6XG4gICAgY2FzZSA0Njc3OlxuICAgIGNhc2UgNTUzMzpcbiAgICBjYXNlIDU3ODk6XG4gICAgY2FzZSA1MDIxOlxuICAgIGNhc2UgNDc2NTpcbiAgICAgIC8vIHN0cmV0Y2gsIG1heC1jb250ZW50LCBtaW4tY29udGVudCwgZmlsbC1hdmFpbGFibGVcbiAgICAgIGlmIChzdHJsZW4odmFsdWUpIC0gMSAtIGxlbmd0aCA+IDYpIHN3aXRjaCAoY2hhcmF0KHZhbHVlLCBsZW5ndGggKyAxKSkge1xuICAgICAgICAvLyAobSlheC1jb250ZW50LCAobSlpbi1jb250ZW50XG4gICAgICAgIGNhc2UgMTA5OlxuICAgICAgICAgIC8vIC1cbiAgICAgICAgICBpZiAoY2hhcmF0KHZhbHVlLCBsZW5ndGggKyA0KSAhPT0gNDUpIGJyZWFrO1xuICAgICAgICAvLyAoZilpbGwtYXZhaWxhYmxlLCAoZilpdC1jb250ZW50XG5cbiAgICAgICAgY2FzZSAxMDI6XG4gICAgICAgICAgcmV0dXJuIHJlcGxhY2UodmFsdWUsIC8oLis6KSguKyktKFteXSspLywgJyQxJyArIFdFQktJVCArICckMi0kMycgKyAnJDEnICsgTU9aICsgKGNoYXJhdCh2YWx1ZSwgbGVuZ3RoICsgMykgPT0gMTA4ID8gJyQzJyA6ICckMi0kMycpKSArIHZhbHVlO1xuICAgICAgICAvLyAocyl0cmV0Y2hcblxuICAgICAgICBjYXNlIDExNTpcbiAgICAgICAgICByZXR1cm4gfmluZGV4b2YodmFsdWUsICdzdHJldGNoJykgPyBwcmVmaXgocmVwbGFjZSh2YWx1ZSwgJ3N0cmV0Y2gnLCAnZmlsbC1hdmFpbGFibGUnKSwgbGVuZ3RoKSArIHZhbHVlIDogdmFsdWU7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICAvLyBwb3NpdGlvbjogc3RpY2t5XG5cbiAgICBjYXNlIDQ5NDk6XG4gICAgICAvLyAocyl0aWNreT9cbiAgICAgIGlmIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDEpICE9PSAxMTUpIGJyZWFrO1xuICAgIC8vIGRpc3BsYXk6IChmbGV4fGlubGluZS1mbGV4KVxuXG4gICAgY2FzZSA2NDQ0OlxuICAgICAgc3dpdGNoIChjaGFyYXQodmFsdWUsIHN0cmxlbih2YWx1ZSkgLSAzIC0gKH5pbmRleG9mKHZhbHVlLCAnIWltcG9ydGFudCcpICYmIDEwKSkpIHtcbiAgICAgICAgLy8gc3RpYyhrKXlcbiAgICAgICAgY2FzZSAxMDc6XG4gICAgICAgICAgcmV0dXJuIHJlcGxhY2UodmFsdWUsICc6JywgJzonICsgV0VCS0lUKSArIHZhbHVlO1xuICAgICAgICAvLyAoaW5saW5lLSk/ZmwoZSl4XG5cbiAgICAgICAgY2FzZSAxMDE6XG4gICAgICAgICAgcmV0dXJuIHJlcGxhY2UodmFsdWUsIC8oLis6KShbXjshXSspKDt8IS4rKT8vLCAnJDEnICsgV0VCS0lUICsgKGNoYXJhdCh2YWx1ZSwgMTQpID09PSA0NSA/ICdpbmxpbmUtJyA6ICcnKSArICdib3gkMycgKyAnJDEnICsgV0VCS0lUICsgJyQyJDMnICsgJyQxJyArIE1TICsgJyQyYm94JDMnKSArIHZhbHVlO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICAvLyB3cml0aW5nLW1vZGVcblxuICAgIGNhc2UgNTkzNjpcbiAgICAgIHN3aXRjaCAoY2hhcmF0KHZhbHVlLCBsZW5ndGggKyAxMSkpIHtcbiAgICAgICAgLy8gdmVydGljYWwtbChyKVxuICAgICAgICBjYXNlIDExNDpcbiAgICAgICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsIC9bc3ZoXVxcdystW3RibHJdezJ9LywgJ3RiJykgKyB2YWx1ZTtcbiAgICAgICAgLy8gdmVydGljYWwtcihsKVxuXG4gICAgICAgIGNhc2UgMTA4OlxuICAgICAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgL1tzdmhdXFx3Ky1bdGJscl17Mn0vLCAndGItcmwnKSArIHZhbHVlO1xuICAgICAgICAvLyBob3Jpem9udGFsKC0pdGJcblxuICAgICAgICBjYXNlIDQ1OlxuICAgICAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgL1tzdmhdXFx3Ky1bdGJscl17Mn0vLCAnbHInKSArIHZhbHVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHZhbHVlICsgdmFsdWU7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbnZhciBwcmVmaXhlciA9IGZ1bmN0aW9uIHByZWZpeGVyKGVsZW1lbnQsIGluZGV4LCBjaGlsZHJlbiwgY2FsbGJhY2spIHtcbiAgaWYgKGVsZW1lbnQubGVuZ3RoID4gLTEpIGlmICghZWxlbWVudFtcInJldHVyblwiXSkgc3dpdGNoIChlbGVtZW50LnR5cGUpIHtcbiAgICBjYXNlIERFQ0xBUkFUSU9OOlxuICAgICAgZWxlbWVudFtcInJldHVyblwiXSA9IHByZWZpeChlbGVtZW50LnZhbHVlLCBlbGVtZW50Lmxlbmd0aCk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgS0VZRlJBTUVTOlxuICAgICAgcmV0dXJuIHNlcmlhbGl6ZShbY29weShlbGVtZW50LCB7XG4gICAgICAgIHZhbHVlOiByZXBsYWNlKGVsZW1lbnQudmFsdWUsICdAJywgJ0AnICsgV0VCS0lUKVxuICAgICAgfSldLCBjYWxsYmFjayk7XG5cbiAgICBjYXNlIFJVTEVTRVQ6XG4gICAgICBpZiAoZWxlbWVudC5sZW5ndGgpIHJldHVybiBjb21iaW5lKGVsZW1lbnQucHJvcHMsIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICBzd2l0Y2ggKG1hdGNoKHZhbHVlLCAvKDo6cGxhY1xcdyt8OnJlYWQtXFx3KykvKSkge1xuICAgICAgICAgIC8vIDpyZWFkLShvbmx5fHdyaXRlKVxuICAgICAgICAgIGNhc2UgJzpyZWFkLW9ubHknOlxuICAgICAgICAgIGNhc2UgJzpyZWFkLXdyaXRlJzpcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemUoW2NvcHkoZWxlbWVudCwge1xuICAgICAgICAgICAgICBwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHJlYWQtXFx3KykvLCAnOicgKyBNT1ogKyAnJDEnKV1cbiAgICAgICAgICAgIH0pXSwgY2FsbGJhY2spO1xuICAgICAgICAgIC8vIDpwbGFjZWhvbGRlclxuXG4gICAgICAgICAgY2FzZSAnOjpwbGFjZWhvbGRlcic6XG4gICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplKFtjb3B5KGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgcHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCAnOicgKyBXRUJLSVQgKyAnaW5wdXQtJDEnKV1cbiAgICAgICAgICAgIH0pLCBjb3B5KGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgcHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCAnOicgKyBNT1ogKyAnJDEnKV1cbiAgICAgICAgICAgIH0pLCBjb3B5KGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgcHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCBNUyArICdpbnB1dC0kMScpXVxuICAgICAgICAgICAgfSldLCBjYWxsYmFjayk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9KTtcbiAgfVxufTtcblxudmFyIGRlZmF1bHRTdHlsaXNQbHVnaW5zID0gW3ByZWZpeGVyXTtcblxudmFyIGNyZWF0ZUNhY2hlID0gZnVuY3Rpb24gY3JlYXRlQ2FjaGUob3B0aW9ucykge1xuICB2YXIga2V5ID0gb3B0aW9ucy5rZXk7XG5cbiAgaWYgKGtleSA9PT0gJ2NzcycpIHtcbiAgICB2YXIgc3NyU3R5bGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInN0eWxlW2RhdGEtZW1vdGlvbl06bm90KFtkYXRhLXNdKVwiKTsgLy8gZ2V0IFNTUmVkIHN0eWxlcyBvdXQgb2YgdGhlIHdheSBvZiBSZWFjdCdzIGh5ZHJhdGlvblxuICAgIC8vIGRvY3VtZW50LmhlYWQgaXMgYSBzYWZlIHBsYWNlIHRvIG1vdmUgdGhlbSB0byh0aG91Z2ggbm90ZSBkb2N1bWVudC5oZWFkIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgbGFzdCBwbGFjZSB0aGV5IHdpbGwgYmUpXG4gICAgLy8gbm90ZSB0aGlzIHZlcnkgdmVyeSBpbnRlbnRpb25hbGx5IHRhcmdldHMgYWxsIHN0eWxlIGVsZW1lbnRzIHJlZ2FyZGxlc3Mgb2YgdGhlIGtleSB0byBlbnN1cmVcbiAgICAvLyB0aGF0IGNyZWF0aW5nIGEgY2FjaGUgd29ya3MgaW5zaWRlIG9mIHJlbmRlciBvZiBhIFJlYWN0IGNvbXBvbmVudFxuXG4gICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChzc3JTdHlsZXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAvLyB3ZSB3YW50IHRvIG9ubHkgbW92ZSBlbGVtZW50cyB3aGljaCBoYXZlIGEgc3BhY2UgaW4gdGhlIGRhdGEtZW1vdGlvbiBhdHRyaWJ1dGUgdmFsdWVcbiAgICAgIC8vIGJlY2F1c2UgdGhhdCBpbmRpY2F0ZXMgdGhhdCBpdCBpcyBhbiBFbW90aW9uIDExIHNlcnZlci1zaWRlIHJlbmRlcmVkIHN0eWxlIGVsZW1lbnRzXG4gICAgICAvLyB3aGlsZSB3ZSB3aWxsIGFscmVhZHkgaWdub3JlIEVtb3Rpb24gMTEgY2xpZW50LXNpZGUgaW5zZXJ0ZWQgc3R5bGVzIGJlY2F1c2Ugb2YgdGhlIDpub3QoW2RhdGEtc10pIHBhcnQgaW4gdGhlIHNlbGVjdG9yXG4gICAgICAvLyBFbW90aW9uIDEwIGNsaWVudC1zaWRlIGluc2VydGVkIHN0eWxlcyBkaWQgbm90IGhhdmUgZGF0YS1zIChidXQgaW1wb3J0YW50bHkgZGlkIG5vdCBoYXZlIGEgc3BhY2UgaW4gdGhlaXIgZGF0YS1lbW90aW9uIGF0dHJpYnV0ZXMpXG4gICAgICAvLyBzbyBjaGVja2luZyBmb3IgdGhlIHNwYWNlIGVuc3VyZXMgdGhhdCBsb2FkaW5nIEVtb3Rpb24gMTEgYWZ0ZXIgRW1vdGlvbiAxMCBoYXMgaW5zZXJ0ZWQgc29tZSBzdHlsZXNcbiAgICAgIC8vIHdpbGwgbm90IHJlc3VsdCBpbiB0aGUgRW1vdGlvbiAxMCBzdHlsZXMgYmVpbmcgZGVzdHJveWVkXG4gICAgICB2YXIgZGF0YUVtb3Rpb25BdHRyaWJ1dGUgPSBub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1lbW90aW9uJyk7XG5cbiAgICAgIGlmIChkYXRhRW1vdGlvbkF0dHJpYnV0ZS5pbmRleE9mKCcgJykgPT09IC0xKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChub2RlKTtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLXMnLCAnJyk7XG4gICAgfSk7XG4gIH1cblxuICB2YXIgc3R5bGlzUGx1Z2lucyA9IG9wdGlvbnMuc3R5bGlzUGx1Z2lucyB8fCBkZWZhdWx0U3R5bGlzUGx1Z2lucztcblxuICB2YXIgaW5zZXJ0ZWQgPSB7fTtcbiAgdmFyIGNvbnRhaW5lcjtcbiAgdmFyIG5vZGVzVG9IeWRyYXRlID0gW107XG5cbiAge1xuICAgIGNvbnRhaW5lciA9IG9wdGlvbnMuY29udGFpbmVyIHx8IGRvY3VtZW50LmhlYWQ7XG4gICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCggLy8gdGhpcyBtZWFucyB3ZSB3aWxsIGlnbm9yZSBlbGVtZW50cyB3aGljaCBkb24ndCBoYXZlIGEgc3BhY2UgaW4gdGhlbSB3aGljaFxuICAgIC8vIG1lYW5zIHRoYXQgdGhlIHN0eWxlIGVsZW1lbnRzIHdlJ3JlIGxvb2tpbmcgYXQgYXJlIG9ubHkgRW1vdGlvbiAxMSBzZXJ2ZXItcmVuZGVyZWQgc3R5bGUgZWxlbWVudHNcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwic3R5bGVbZGF0YS1lbW90aW9uXj1cXFwiXCIgKyBrZXkgKyBcIiBcXFwiXVwiKSwgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHZhciBhdHRyaWIgPSBub2RlLmdldEF0dHJpYnV0ZShcImRhdGEtZW1vdGlvblwiKS5zcGxpdCgnICcpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGF0dHJpYi5sZW5ndGg7IGkrKykge1xuICAgICAgICBpbnNlcnRlZFthdHRyaWJbaV1dID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgbm9kZXNUb0h5ZHJhdGUucHVzaChub2RlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBfaW5zZXJ0O1xuXG4gIHZhciBvbW5pcHJlc2VudFBsdWdpbnMgPSBbY29tcGF0LCByZW1vdmVMYWJlbF07XG5cbiAge1xuICAgIHZhciBjdXJyZW50U2hlZXQ7XG4gICAgdmFyIGZpbmFsaXppbmdQbHVnaW5zID0gW3N0cmluZ2lmeSwgcnVsZXNoZWV0KGZ1bmN0aW9uIChydWxlKSB7XG4gICAgICBjdXJyZW50U2hlZXQuaW5zZXJ0KHJ1bGUpO1xuICAgIH0pXTtcbiAgICB2YXIgc2VyaWFsaXplciA9IG1pZGRsZXdhcmUob21uaXByZXNlbnRQbHVnaW5zLmNvbmNhdChzdHlsaXNQbHVnaW5zLCBmaW5hbGl6aW5nUGx1Z2lucykpO1xuXG4gICAgdmFyIHN0eWxpcyA9IGZ1bmN0aW9uIHN0eWxpcyhzdHlsZXMpIHtcbiAgICAgIHJldHVybiBzZXJpYWxpemUoY29tcGlsZShzdHlsZXMpLCBzZXJpYWxpemVyKTtcbiAgICB9O1xuXG4gICAgX2luc2VydCA9IGZ1bmN0aW9uIGluc2VydChzZWxlY3Rvciwgc2VyaWFsaXplZCwgc2hlZXQsIHNob3VsZENhY2hlKSB7XG4gICAgICBjdXJyZW50U2hlZXQgPSBzaGVldDtcblxuICAgICAgc3R5bGlzKHNlbGVjdG9yID8gc2VsZWN0b3IgKyBcIntcIiArIHNlcmlhbGl6ZWQuc3R5bGVzICsgXCJ9XCIgOiBzZXJpYWxpemVkLnN0eWxlcyk7XG5cbiAgICAgIGlmIChzaG91bGRDYWNoZSkge1xuICAgICAgICBjYWNoZS5pbnNlcnRlZFtzZXJpYWxpemVkLm5hbWVdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgdmFyIGNhY2hlID0ge1xuICAgIGtleToga2V5LFxuICAgIHNoZWV0OiBuZXcgU3R5bGVTaGVldCh7XG4gICAgICBrZXk6IGtleSxcbiAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyLFxuICAgICAgbm9uY2U6IG9wdGlvbnMubm9uY2UsXG4gICAgICBzcGVlZHk6IG9wdGlvbnMuc3BlZWR5LFxuICAgICAgcHJlcGVuZDogb3B0aW9ucy5wcmVwZW5kLFxuICAgICAgaW5zZXJ0aW9uUG9pbnQ6IG9wdGlvbnMuaW5zZXJ0aW9uUG9pbnRcbiAgICB9KSxcbiAgICBub25jZTogb3B0aW9ucy5ub25jZSxcbiAgICBpbnNlcnRlZDogaW5zZXJ0ZWQsXG4gICAgcmVnaXN0ZXJlZDoge30sXG4gICAgaW5zZXJ0OiBfaW5zZXJ0XG4gIH07XG4gIGNhY2hlLnNoZWV0Lmh5ZHJhdGUobm9kZXNUb0h5ZHJhdGUpO1xuICByZXR1cm4gY2FjaGU7XG59O1xuXG5leHBvcnQgeyBjcmVhdGVDYWNoZSBhcyBkZWZhdWx0IH07XG4iLCIvKiogQGxpY2Vuc2UgUmVhY3QgdjE2LjEzLjFcbiAqIHJlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO3ZhciBiPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3IsYz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpOjYwMTAzLGQ9Yj9TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpOjYwMTA2LGU9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIik6NjAxMDcsZj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKTo2MDEwOCxnPWI/U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpOjYwMTE0LGg9Yj9TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIik6NjAxMDksaz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpOjYwMTEwLGw9Yj9TeW1ib2wuZm9yKFwicmVhY3QuYXN5bmNfbW9kZVwiKTo2MDExMSxtPWI/U3ltYm9sLmZvcihcInJlYWN0LmNvbmN1cnJlbnRfbW9kZVwiKTo2MDExMSxuPWI/U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpOjYwMTEyLHA9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIik6NjAxMTMscT1iP1xuU3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIik6NjAxMjAscj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpOjYwMTE1LHQ9Yj9TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTo2MDExNix2PWI/U3ltYm9sLmZvcihcInJlYWN0LmJsb2NrXCIpOjYwMTIxLHc9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZnVuZGFtZW50YWxcIik6NjAxMTcseD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5yZXNwb25kZXJcIik6NjAxMTgseT1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zY29wZVwiKTo2MDExOTtcbmZ1bmN0aW9uIHooYSl7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSl7dmFyIHU9YS4kJHR5cGVvZjtzd2l0Y2godSl7Y2FzZSBjOnN3aXRjaChhPWEudHlwZSxhKXtjYXNlIGw6Y2FzZSBtOmNhc2UgZTpjYXNlIGc6Y2FzZSBmOmNhc2UgcDpyZXR1cm4gYTtkZWZhdWx0OnN3aXRjaChhPWEmJmEuJCR0eXBlb2YsYSl7Y2FzZSBrOmNhc2UgbjpjYXNlIHQ6Y2FzZSByOmNhc2UgaDpyZXR1cm4gYTtkZWZhdWx0OnJldHVybiB1fX1jYXNlIGQ6cmV0dXJuIHV9fX1mdW5jdGlvbiBBKGEpe3JldHVybiB6KGEpPT09bX1leHBvcnRzLkFzeW5jTW9kZT1sO2V4cG9ydHMuQ29uY3VycmVudE1vZGU9bTtleHBvcnRzLkNvbnRleHRDb25zdW1lcj1rO2V4cG9ydHMuQ29udGV4dFByb3ZpZGVyPWg7ZXhwb3J0cy5FbGVtZW50PWM7ZXhwb3J0cy5Gb3J3YXJkUmVmPW47ZXhwb3J0cy5GcmFnbWVudD1lO2V4cG9ydHMuTGF6eT10O2V4cG9ydHMuTWVtbz1yO2V4cG9ydHMuUG9ydGFsPWQ7XG5leHBvcnRzLlByb2ZpbGVyPWc7ZXhwb3J0cy5TdHJpY3RNb2RlPWY7ZXhwb3J0cy5TdXNwZW5zZT1wO2V4cG9ydHMuaXNBc3luY01vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIEEoYSl8fHooYSk9PT1sfTtleHBvcnRzLmlzQ29uY3VycmVudE1vZGU9QTtleHBvcnRzLmlzQ29udGV4dENvbnN1bWVyPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09a307ZXhwb3J0cy5pc0NvbnRleHRQcm92aWRlcj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWh9O2V4cG9ydHMuaXNFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJmEuJCR0eXBlb2Y9PT1jfTtleHBvcnRzLmlzRm9yd2FyZFJlZj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PW59O2V4cG9ydHMuaXNGcmFnbWVudD1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWV9O2V4cG9ydHMuaXNMYXp5PWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09dH07XG5leHBvcnRzLmlzTWVtbz1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXJ9O2V4cG9ydHMuaXNQb3J0YWw9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1kfTtleHBvcnRzLmlzUHJvZmlsZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1nfTtleHBvcnRzLmlzU3RyaWN0TW9kZT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWZ9O2V4cG9ydHMuaXNTdXNwZW5zZT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXB9O1xuZXhwb3J0cy5pc1ZhbGlkRWxlbWVudFR5cGU9ZnVuY3Rpb24oYSl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBhfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgYXx8YT09PWV8fGE9PT1tfHxhPT09Z3x8YT09PWZ8fGE9PT1wfHxhPT09cXx8XCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmKGEuJCR0eXBlb2Y9PT10fHxhLiQkdHlwZW9mPT09cnx8YS4kJHR5cGVvZj09PWh8fGEuJCR0eXBlb2Y9PT1rfHxhLiQkdHlwZW9mPT09bnx8YS4kJHR5cGVvZj09PXd8fGEuJCR0eXBlb2Y9PT14fHxhLiQkdHlwZW9mPT09eXx8YS4kJHR5cGVvZj09PXYpfTtleHBvcnRzLnR5cGVPZj16O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciByZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSwgWWFob28hIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xudmFyIFJFQUNUX1NUQVRJQ1MgPSB7XG4gIGNoaWxkQ29udGV4dFR5cGVzOiB0cnVlLFxuICBjb250ZXh0VHlwZTogdHJ1ZSxcbiAgY29udGV4dFR5cGVzOiB0cnVlLFxuICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gIGRpc3BsYXlOYW1lOiB0cnVlLFxuICBnZXREZWZhdWx0UHJvcHM6IHRydWUsXG4gIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjogdHJ1ZSxcbiAgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOiB0cnVlLFxuICBtaXhpbnM6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZSxcbiAgdHlwZTogdHJ1ZVxufTtcbnZhciBLTk9XTl9TVEFUSUNTID0ge1xuICBuYW1lOiB0cnVlLFxuICBsZW5ndGg6IHRydWUsXG4gIHByb3RvdHlwZTogdHJ1ZSxcbiAgY2FsbGVyOiB0cnVlLFxuICBjYWxsZWU6IHRydWUsXG4gIGFyZ3VtZW50czogdHJ1ZSxcbiAgYXJpdHk6IHRydWVcbn07XG52YXIgRk9SV0FSRF9SRUZfU1RBVElDUyA9IHtcbiAgJyQkdHlwZW9mJzogdHJ1ZSxcbiAgcmVuZGVyOiB0cnVlLFxuICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gIGRpc3BsYXlOYW1lOiB0cnVlLFxuICBwcm9wVHlwZXM6IHRydWVcbn07XG52YXIgTUVNT19TVEFUSUNTID0ge1xuICAnJCR0eXBlb2YnOiB0cnVlLFxuICBjb21wYXJlOiB0cnVlLFxuICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gIGRpc3BsYXlOYW1lOiB0cnVlLFxuICBwcm9wVHlwZXM6IHRydWUsXG4gIHR5cGU6IHRydWVcbn07XG52YXIgVFlQRV9TVEFUSUNTID0ge307XG5UWVBFX1NUQVRJQ1NbcmVhY3RJcy5Gb3J3YXJkUmVmXSA9IEZPUldBUkRfUkVGX1NUQVRJQ1M7XG5UWVBFX1NUQVRJQ1NbcmVhY3RJcy5NZW1vXSA9IE1FTU9fU1RBVElDUztcblxuZnVuY3Rpb24gZ2V0U3RhdGljcyhjb21wb25lbnQpIHtcbiAgLy8gUmVhY3QgdjE2LjExIGFuZCBiZWxvd1xuICBpZiAocmVhY3RJcy5pc01lbW8oY29tcG9uZW50KSkge1xuICAgIHJldHVybiBNRU1PX1NUQVRJQ1M7XG4gIH0gLy8gUmVhY3QgdjE2LjEyIGFuZCBhYm92ZVxuXG5cbiAgcmV0dXJuIFRZUEVfU1RBVElDU1tjb21wb25lbnRbJyQkdHlwZW9mJ11dIHx8IFJFQUNUX1NUQVRJQ1M7XG59XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIGdldFByb3RvdHlwZU9mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xudmFyIG9iamVjdFByb3RvdHlwZSA9IE9iamVjdC5wcm90b3R5cGU7XG5mdW5jdGlvbiBob2lzdE5vblJlYWN0U3RhdGljcyh0YXJnZXRDb21wb25lbnQsIHNvdXJjZUNvbXBvbmVudCwgYmxhY2tsaXN0KSB7XG4gIGlmICh0eXBlb2Ygc291cmNlQ29tcG9uZW50ICE9PSAnc3RyaW5nJykge1xuICAgIC8vIGRvbid0IGhvaXN0IG92ZXIgc3RyaW5nIChodG1sKSBjb21wb25lbnRzXG4gICAgaWYgKG9iamVjdFByb3RvdHlwZSkge1xuICAgICAgdmFyIGluaGVyaXRlZENvbXBvbmVudCA9IGdldFByb3RvdHlwZU9mKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICAgIGlmIChpbmhlcml0ZWRDb21wb25lbnQgJiYgaW5oZXJpdGVkQ29tcG9uZW50ICE9PSBvYmplY3RQcm90b3R5cGUpIHtcbiAgICAgICAgaG9pc3ROb25SZWFjdFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50LCBpbmhlcml0ZWRDb21wb25lbnQsIGJsYWNrbGlzdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICBpZiAoZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgICBrZXlzID0ga2V5cy5jb25jYXQoZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZUNvbXBvbmVudCkpO1xuICAgIH1cblxuICAgIHZhciB0YXJnZXRTdGF0aWNzID0gZ2V0U3RhdGljcyh0YXJnZXRDb21wb25lbnQpO1xuICAgIHZhciBzb3VyY2VTdGF0aWNzID0gZ2V0U3RhdGljcyhzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgaWYgKCFLTk9XTl9TVEFUSUNTW2tleV0gJiYgIShibGFja2xpc3QgJiYgYmxhY2tsaXN0W2tleV0pICYmICEoc291cmNlU3RhdGljcyAmJiBzb3VyY2VTdGF0aWNzW2tleV0pICYmICEodGFyZ2V0U3RhdGljcyAmJiB0YXJnZXRTdGF0aWNzW2tleV0pKSB7XG4gICAgICAgIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZUNvbXBvbmVudCwga2V5KTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIEF2b2lkIGZhaWx1cmVzIGZyb20gcmVhZC1vbmx5IHByb3BlcnRpZXNcbiAgICAgICAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXRDb21wb25lbnQsIGtleSwgZGVzY3JpcHRvcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldENvbXBvbmVudDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBob2lzdE5vblJlYWN0U3RhdGljcztcbiIsImltcG9ydCBob2lzdE5vblJlYWN0U3RhdGljcyQxIGZyb20gJ2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzJztcblxuLy8gdGhpcyBmaWxlIGlzb2xhdGVzIHRoaXMgcGFja2FnZSB0aGF0IGlzIG5vdCB0cmVlLXNoYWtlYWJsZVxuLy8gYW5kIGlmIHRoaXMgbW9kdWxlIGRvZXNuJ3QgYWN0dWFsbHkgY29udGFpbiBhbnkgbG9naWMgb2YgaXRzIG93blxuLy8gdGhlbiBSb2xsdXAganVzdCB1c2UgJ2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzJyBkaXJlY3RseSBpbiBvdGhlciBjaHVua3NcblxudmFyIGhvaXN0Tm9uUmVhY3RTdGF0aWNzID0gKGZ1bmN0aW9uICh0YXJnZXRDb21wb25lbnQsIHNvdXJjZUNvbXBvbmVudCkge1xuICByZXR1cm4gaG9pc3ROb25SZWFjdFN0YXRpY3MkMSh0YXJnZXRDb21wb25lbnQsIHNvdXJjZUNvbXBvbmVudCk7XG59KTtcblxuZXhwb3J0IHsgaG9pc3ROb25SZWFjdFN0YXRpY3MgYXMgZGVmYXVsdCB9O1xuIiwidmFyIGlzQnJvd3NlciA9IHRydWU7XG5cbmZ1bmN0aW9uIGdldFJlZ2lzdGVyZWRTdHlsZXMocmVnaXN0ZXJlZCwgcmVnaXN0ZXJlZFN0eWxlcywgY2xhc3NOYW1lcykge1xuICB2YXIgcmF3Q2xhc3NOYW1lID0gJyc7XG4gIGNsYXNzTmFtZXMuc3BsaXQoJyAnKS5mb3JFYWNoKGZ1bmN0aW9uIChjbGFzc05hbWUpIHtcbiAgICBpZiAocmVnaXN0ZXJlZFtjbGFzc05hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlZ2lzdGVyZWRTdHlsZXMucHVzaChyZWdpc3RlcmVkW2NsYXNzTmFtZV0gKyBcIjtcIik7XG4gICAgfSBlbHNlIGlmIChjbGFzc05hbWUpIHtcbiAgICAgIHJhd0NsYXNzTmFtZSArPSBjbGFzc05hbWUgKyBcIiBcIjtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmF3Q2xhc3NOYW1lO1xufVxudmFyIHJlZ2lzdGVyU3R5bGVzID0gZnVuY3Rpb24gcmVnaXN0ZXJTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQsIGlzU3RyaW5nVGFnKSB7XG4gIHZhciBjbGFzc05hbWUgPSBjYWNoZS5rZXkgKyBcIi1cIiArIHNlcmlhbGl6ZWQubmFtZTtcblxuICBpZiAoIC8vIHdlIG9ubHkgbmVlZCB0byBhZGQgdGhlIHN0eWxlcyB0byB0aGUgcmVnaXN0ZXJlZCBjYWNoZSBpZiB0aGVcbiAgLy8gY2xhc3MgbmFtZSBjb3VsZCBiZSB1c2VkIGZ1cnRoZXIgZG93blxuICAvLyB0aGUgdHJlZSBidXQgaWYgaXQncyBhIHN0cmluZyB0YWcsIHdlIGtub3cgaXQgd29uJ3RcbiAgLy8gc28gd2UgZG9uJ3QgaGF2ZSB0byBhZGQgaXQgdG8gcmVnaXN0ZXJlZCBjYWNoZS5cbiAgLy8gdGhpcyBpbXByb3ZlcyBtZW1vcnkgdXNhZ2Ugc2luY2Ugd2UgY2FuIGF2b2lkIHN0b3JpbmcgdGhlIHdob2xlIHN0eWxlIHN0cmluZ1xuICAoaXNTdHJpbmdUYWcgPT09IGZhbHNlIHx8IC8vIHdlIG5lZWQgdG8gYWx3YXlzIHN0b3JlIGl0IGlmIHdlJ3JlIGluIGNvbXBhdCBtb2RlIGFuZFxuICAvLyBpbiBub2RlIHNpbmNlIGVtb3Rpb24tc2VydmVyIHJlbGllcyBvbiB3aGV0aGVyIGEgc3R5bGUgaXMgaW5cbiAgLy8gdGhlIHJlZ2lzdGVyZWQgY2FjaGUgdG8ga25vdyB3aGV0aGVyIGEgc3R5bGUgaXMgZ2xvYmFsIG9yIG5vdFxuICAvLyBhbHNvLCBub3RlIHRoYXQgdGhpcyBjaGVjayB3aWxsIGJlIGRlYWQgY29kZSBlbGltaW5hdGVkIGluIHRoZSBicm93c2VyXG4gIGlzQnJvd3NlciA9PT0gZmFsc2UgKSAmJiBjYWNoZS5yZWdpc3RlcmVkW2NsYXNzTmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgIGNhY2hlLnJlZ2lzdGVyZWRbY2xhc3NOYW1lXSA9IHNlcmlhbGl6ZWQuc3R5bGVzO1xuICB9XG59O1xudmFyIGluc2VydFN0eWxlcyA9IGZ1bmN0aW9uIGluc2VydFN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgaXNTdHJpbmdUYWcpIHtcbiAgcmVnaXN0ZXJTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQsIGlzU3RyaW5nVGFnKTtcbiAgdmFyIGNsYXNzTmFtZSA9IGNhY2hlLmtleSArIFwiLVwiICsgc2VyaWFsaXplZC5uYW1lO1xuXG4gIGlmIChjYWNoZS5pbnNlcnRlZFtzZXJpYWxpemVkLm5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICB2YXIgY3VycmVudCA9IHNlcmlhbGl6ZWQ7XG5cbiAgICBkbyB7XG4gICAgICBjYWNoZS5pbnNlcnQoc2VyaWFsaXplZCA9PT0gY3VycmVudCA/IFwiLlwiICsgY2xhc3NOYW1lIDogJycsIGN1cnJlbnQsIGNhY2hlLnNoZWV0LCB0cnVlKTtcblxuICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgICB9IHdoaWxlIChjdXJyZW50ICE9PSB1bmRlZmluZWQpO1xuICB9XG59O1xuXG5leHBvcnQgeyBnZXRSZWdpc3RlcmVkU3R5bGVzLCBpbnNlcnRTdHlsZXMsIHJlZ2lzdGVyU3R5bGVzIH07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuLy8gSW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2dhcnljb3VydC9tdXJtdXJoYXNoLWpzXG4vLyBQb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYWFwcGxlYnkvc21oYXNoZXIvYmxvYi82MWEwNTMwZjI4Mjc3ZjJlODUwYmZjMzk2MDBjZTYxZDAyYjUxOGRlL3NyYy9NdXJtdXJIYXNoMi5jcHAjTDM3LUw4NlxuZnVuY3Rpb24gbXVybXVyMihzdHIpIHtcbiAgLy8gJ20nIGFuZCAncicgYXJlIG1peGluZyBjb25zdGFudHMgZ2VuZXJhdGVkIG9mZmxpbmUuXG4gIC8vIFRoZXkncmUgbm90IHJlYWxseSAnbWFnaWMnLCB0aGV5IGp1c3QgaGFwcGVuIHRvIHdvcmsgd2VsbC5cbiAgLy8gY29uc3QgbSA9IDB4NWJkMWU5OTU7XG4gIC8vIGNvbnN0IHIgPSAyNDtcbiAgLy8gSW5pdGlhbGl6ZSB0aGUgaGFzaFxuICB2YXIgaCA9IDA7IC8vIE1peCA0IGJ5dGVzIGF0IGEgdGltZSBpbnRvIHRoZSBoYXNoXG5cbiAgdmFyIGssXG4gICAgICBpID0gMCxcbiAgICAgIGxlbiA9IHN0ci5sZW5ndGg7XG5cbiAgZm9yICg7IGxlbiA+PSA0OyArK2ksIGxlbiAtPSA0KSB7XG4gICAgayA9IHN0ci5jaGFyQ29kZUF0KGkpICYgMHhmZiB8IChzdHIuY2hhckNvZGVBdCgrK2kpICYgMHhmZikgPDwgOCB8IChzdHIuY2hhckNvZGVBdCgrK2kpICYgMHhmZikgPDwgMTYgfCAoc3RyLmNoYXJDb2RlQXQoKytpKSAmIDB4ZmYpIDw8IDI0O1xuICAgIGsgPVxuICAgIC8qIE1hdGguaW11bChrLCBtKTogKi9cbiAgICAoayAmIDB4ZmZmZikgKiAweDViZDFlOTk1ICsgKChrID4+PiAxNikgKiAweGU5OTUgPDwgMTYpO1xuICAgIGsgXj1cbiAgICAvKiBrID4+PiByOiAqL1xuICAgIGsgPj4+IDI0O1xuICAgIGggPVxuICAgIC8qIE1hdGguaW11bChrLCBtKTogKi9cbiAgICAoayAmIDB4ZmZmZikgKiAweDViZDFlOTk1ICsgKChrID4+PiAxNikgKiAweGU5OTUgPDwgMTYpIF5cbiAgICAvKiBNYXRoLmltdWwoaCwgbSk6ICovXG4gICAgKGggJiAweGZmZmYpICogMHg1YmQxZTk5NSArICgoaCA+Pj4gMTYpICogMHhlOTk1IDw8IDE2KTtcbiAgfSAvLyBIYW5kbGUgdGhlIGxhc3QgZmV3IGJ5dGVzIG9mIHRoZSBpbnB1dCBhcnJheVxuXG5cbiAgc3dpdGNoIChsZW4pIHtcbiAgICBjYXNlIDM6XG4gICAgICBoIF49IChzdHIuY2hhckNvZGVBdChpICsgMikgJiAweGZmKSA8PCAxNjtcblxuICAgIGNhc2UgMjpcbiAgICAgIGggXj0gKHN0ci5jaGFyQ29kZUF0KGkgKyAxKSAmIDB4ZmYpIDw8IDg7XG5cbiAgICBjYXNlIDE6XG4gICAgICBoIF49IHN0ci5jaGFyQ29kZUF0KGkpICYgMHhmZjtcbiAgICAgIGggPVxuICAgICAgLyogTWF0aC5pbXVsKGgsIG0pOiAqL1xuICAgICAgKGggJiAweGZmZmYpICogMHg1YmQxZTk5NSArICgoaCA+Pj4gMTYpICogMHhlOTk1IDw8IDE2KTtcbiAgfSAvLyBEbyBhIGZldyBmaW5hbCBtaXhlcyBvZiB0aGUgaGFzaCB0byBlbnN1cmUgdGhlIGxhc3QgZmV3XG4gIC8vIGJ5dGVzIGFyZSB3ZWxsLWluY29ycG9yYXRlZC5cblxuXG4gIGggXj0gaCA+Pj4gMTM7XG4gIGggPVxuICAvKiBNYXRoLmltdWwoaCwgbSk6ICovXG4gIChoICYgMHhmZmZmKSAqIDB4NWJkMWU5OTUgKyAoKGggPj4+IDE2KSAqIDB4ZTk5NSA8PCAxNik7XG4gIHJldHVybiAoKGggXiBoID4+PiAxNSkgPj4+IDApLnRvU3RyaW5nKDM2KTtcbn1cblxuZXhwb3J0IHsgbXVybXVyMiBhcyBkZWZhdWx0IH07XG4iLCJ2YXIgdW5pdGxlc3NLZXlzID0ge1xuICBhbmltYXRpb25JdGVyYXRpb25Db3VudDogMSxcbiAgYXNwZWN0UmF0aW86IDEsXG4gIGJvcmRlckltYWdlT3V0c2V0OiAxLFxuICBib3JkZXJJbWFnZVNsaWNlOiAxLFxuICBib3JkZXJJbWFnZVdpZHRoOiAxLFxuICBib3hGbGV4OiAxLFxuICBib3hGbGV4R3JvdXA6IDEsXG4gIGJveE9yZGluYWxHcm91cDogMSxcbiAgY29sdW1uQ291bnQ6IDEsXG4gIGNvbHVtbnM6IDEsXG4gIGZsZXg6IDEsXG4gIGZsZXhHcm93OiAxLFxuICBmbGV4UG9zaXRpdmU6IDEsXG4gIGZsZXhTaHJpbms6IDEsXG4gIGZsZXhOZWdhdGl2ZTogMSxcbiAgZmxleE9yZGVyOiAxLFxuICBncmlkUm93OiAxLFxuICBncmlkUm93RW5kOiAxLFxuICBncmlkUm93U3BhbjogMSxcbiAgZ3JpZFJvd1N0YXJ0OiAxLFxuICBncmlkQ29sdW1uOiAxLFxuICBncmlkQ29sdW1uRW5kOiAxLFxuICBncmlkQ29sdW1uU3BhbjogMSxcbiAgZ3JpZENvbHVtblN0YXJ0OiAxLFxuICBtc0dyaWRSb3c6IDEsXG4gIG1zR3JpZFJvd1NwYW46IDEsXG4gIG1zR3JpZENvbHVtbjogMSxcbiAgbXNHcmlkQ29sdW1uU3BhbjogMSxcbiAgZm9udFdlaWdodDogMSxcbiAgbGluZUhlaWdodDogMSxcbiAgb3BhY2l0eTogMSxcbiAgb3JkZXI6IDEsXG4gIG9ycGhhbnM6IDEsXG4gIHNjYWxlOiAxLFxuICB0YWJTaXplOiAxLFxuICB3aWRvd3M6IDEsXG4gIHpJbmRleDogMSxcbiAgem9vbTogMSxcbiAgV2Via2l0TGluZUNsYW1wOiAxLFxuICAvLyBTVkctcmVsYXRlZCBwcm9wZXJ0aWVzXG4gIGZpbGxPcGFjaXR5OiAxLFxuICBmbG9vZE9wYWNpdHk6IDEsXG4gIHN0b3BPcGFjaXR5OiAxLFxuICBzdHJva2VEYXNoYXJyYXk6IDEsXG4gIHN0cm9rZURhc2hvZmZzZXQ6IDEsXG4gIHN0cm9rZU1pdGVybGltaXQ6IDEsXG4gIHN0cm9rZU9wYWNpdHk6IDEsXG4gIHN0cm9rZVdpZHRoOiAxXG59O1xuXG5leHBvcnQgeyB1bml0bGVzc0tleXMgYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IGhhc2hTdHJpbmcgZnJvbSAnQGVtb3Rpb24vaGFzaCc7XG5pbXBvcnQgdW5pdGxlc3MgZnJvbSAnQGVtb3Rpb24vdW5pdGxlc3MnO1xuaW1wb3J0IG1lbW9pemUgZnJvbSAnQGVtb3Rpb24vbWVtb2l6ZSc7XG5cbnZhciBpc0RldmVsb3BtZW50ID0gZmFsc2U7XG5cbnZhciBoeXBoZW5hdGVSZWdleCA9IC9bQS1aXXxebXMvZztcbnZhciBhbmltYXRpb25SZWdleCA9IC9fRU1PXyhbXl9dKz8pXyhbXl0qPylfRU1PXy9nO1xuXG52YXIgaXNDdXN0b21Qcm9wZXJ0eSA9IGZ1bmN0aW9uIGlzQ3VzdG9tUHJvcGVydHkocHJvcGVydHkpIHtcbiAgcmV0dXJuIHByb3BlcnR5LmNoYXJDb2RlQXQoMSkgPT09IDQ1O1xufTtcblxudmFyIGlzUHJvY2Vzc2FibGVWYWx1ZSA9IGZ1bmN0aW9uIGlzUHJvY2Vzc2FibGVWYWx1ZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJztcbn07XG5cbnZhciBwcm9jZXNzU3R5bGVOYW1lID0gLyogI19fUFVSRV9fICovbWVtb2l6ZShmdW5jdGlvbiAoc3R5bGVOYW1lKSB7XG4gIHJldHVybiBpc0N1c3RvbVByb3BlcnR5KHN0eWxlTmFtZSkgPyBzdHlsZU5hbWUgOiBzdHlsZU5hbWUucmVwbGFjZShoeXBoZW5hdGVSZWdleCwgJy0kJicpLnRvTG93ZXJDYXNlKCk7XG59KTtcblxudmFyIHByb2Nlc3NTdHlsZVZhbHVlID0gZnVuY3Rpb24gcHJvY2Vzc1N0eWxlVmFsdWUoa2V5LCB2YWx1ZSkge1xuICBzd2l0Y2ggKGtleSkge1xuICAgIGNhc2UgJ2FuaW1hdGlvbic6XG4gICAgY2FzZSAnYW5pbWF0aW9uTmFtZSc6XG4gICAgICB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoYW5pbWF0aW9uUmVnZXgsIGZ1bmN0aW9uIChtYXRjaCwgcDEsIHAyKSB7XG4gICAgICAgICAgICBjdXJzb3IgPSB7XG4gICAgICAgICAgICAgIG5hbWU6IHAxLFxuICAgICAgICAgICAgICBzdHlsZXM6IHAyLFxuICAgICAgICAgICAgICBuZXh0OiBjdXJzb3JcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gcDE7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgfVxuXG4gIGlmICh1bml0bGVzc1trZXldICE9PSAxICYmICFpc0N1c3RvbVByb3BlcnR5KGtleSkgJiYgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiB2YWx1ZSAhPT0gMCkge1xuICAgIHJldHVybiB2YWx1ZSArICdweCc7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59O1xuXG52YXIgbm9Db21wb25lbnRTZWxlY3Rvck1lc3NhZ2UgPSAnQ29tcG9uZW50IHNlbGVjdG9ycyBjYW4gb25seSBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggJyArICdAZW1vdGlvbi9iYWJlbC1wbHVnaW4sIHRoZSBzd2MgRW1vdGlvbiBwbHVnaW4sIG9yIGFub3RoZXIgRW1vdGlvbi1hd2FyZSAnICsgJ2NvbXBpbGVyIHRyYW5zZm9ybS4nO1xuXG5mdW5jdGlvbiBoYW5kbGVJbnRlcnBvbGF0aW9uKG1lcmdlZFByb3BzLCByZWdpc3RlcmVkLCBpbnRlcnBvbGF0aW9uKSB7XG4gIGlmIChpbnRlcnBvbGF0aW9uID09IG51bGwpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICB2YXIgY29tcG9uZW50U2VsZWN0b3IgPSBpbnRlcnBvbGF0aW9uO1xuXG4gIGlmIChjb21wb25lbnRTZWxlY3Rvci5fX2Vtb3Rpb25fc3R5bGVzICE9PSB1bmRlZmluZWQpIHtcblxuICAgIHJldHVybiBjb21wb25lbnRTZWxlY3RvcjtcbiAgfVxuXG4gIHN3aXRjaCAodHlwZW9mIGludGVycG9sYXRpb24pIHtcbiAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuXG4gICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgIHtcbiAgICAgICAgdmFyIGtleWZyYW1lcyA9IGludGVycG9sYXRpb247XG5cbiAgICAgICAgaWYgKGtleWZyYW1lcy5hbmltID09PSAxKSB7XG4gICAgICAgICAgY3Vyc29yID0ge1xuICAgICAgICAgICAgbmFtZToga2V5ZnJhbWVzLm5hbWUsXG4gICAgICAgICAgICBzdHlsZXM6IGtleWZyYW1lcy5zdHlsZXMsXG4gICAgICAgICAgICBuZXh0OiBjdXJzb3JcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiBrZXlmcmFtZXMubmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzZXJpYWxpemVkU3R5bGVzID0gaW50ZXJwb2xhdGlvbjtcblxuICAgICAgICBpZiAoc2VyaWFsaXplZFN0eWxlcy5zdHlsZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHZhciBuZXh0ID0gc2VyaWFsaXplZFN0eWxlcy5uZXh0O1xuXG4gICAgICAgICAgaWYgKG5leHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gbm90IHRoZSBtb3N0IGVmZmljaWVudCB0aGluZyBldmVyIGJ1dCB0aGlzIGlzIGEgcHJldHR5IHJhcmUgY2FzZVxuICAgICAgICAgICAgLy8gYW5kIHRoZXJlIHdpbGwgYmUgdmVyeSBmZXcgaXRlcmF0aW9ucyBvZiB0aGlzIGdlbmVyYWxseVxuICAgICAgICAgICAgd2hpbGUgKG5leHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBjdXJzb3IgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogbmV4dC5uYW1lLFxuICAgICAgICAgICAgICAgIHN0eWxlczogbmV4dC5zdHlsZXMsXG4gICAgICAgICAgICAgICAgbmV4dDogY3Vyc29yXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIG5leHQgPSBuZXh0Lm5leHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHN0eWxlcyA9IHNlcmlhbGl6ZWRTdHlsZXMuc3R5bGVzICsgXCI7XCI7XG4gICAgICAgICAgcmV0dXJuIHN0eWxlcztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjcmVhdGVTdHJpbmdGcm9tT2JqZWN0KG1lcmdlZFByb3BzLCByZWdpc3RlcmVkLCBpbnRlcnBvbGF0aW9uKTtcbiAgICAgIH1cblxuICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgIHtcbiAgICAgICAgaWYgKG1lcmdlZFByb3BzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB2YXIgcHJldmlvdXNDdXJzb3IgPSBjdXJzb3I7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IGludGVycG9sYXRpb24obWVyZ2VkUHJvcHMpO1xuICAgICAgICAgIGN1cnNvciA9IHByZXZpb3VzQ3Vyc29yO1xuICAgICAgICAgIHJldHVybiBoYW5kbGVJbnRlcnBvbGF0aW9uKG1lcmdlZFByb3BzLCByZWdpc3RlcmVkLCByZXN1bHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gIH0gLy8gZmluYWxpemUgc3RyaW5nIHZhbHVlcyAocmVndWxhciBzdHJpbmdzIGFuZCBmdW5jdGlvbnMgaW50ZXJwb2xhdGVkIGludG8gY3NzIGNhbGxzKVxuXG5cbiAgdmFyIGFzU3RyaW5nID0gaW50ZXJwb2xhdGlvbjtcblxuICBpZiAocmVnaXN0ZXJlZCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGFzU3RyaW5nO1xuICB9XG5cbiAgdmFyIGNhY2hlZCA9IHJlZ2lzdGVyZWRbYXNTdHJpbmddO1xuICByZXR1cm4gY2FjaGVkICE9PSB1bmRlZmluZWQgPyBjYWNoZWQgOiBhc1N0cmluZztcbn1cblxuZnVuY3Rpb24gY3JlYXRlU3RyaW5nRnJvbU9iamVjdChtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgb2JqKSB7XG4gIHZhciBzdHJpbmcgPSAnJztcblxuICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvYmoubGVuZ3RoOyBpKyspIHtcbiAgICAgIHN0cmluZyArPSBoYW5kbGVJbnRlcnBvbGF0aW9uKG1lcmdlZFByb3BzLCByZWdpc3RlcmVkLCBvYmpbaV0pICsgXCI7XCI7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICAgIHZhciB2YWx1ZSA9IG9ialtrZXldO1xuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICB2YXIgYXNTdHJpbmcgPSB2YWx1ZTtcblxuICAgICAgICBpZiAocmVnaXN0ZXJlZCAhPSBudWxsICYmIHJlZ2lzdGVyZWRbYXNTdHJpbmddICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzdHJpbmcgKz0ga2V5ICsgXCJ7XCIgKyByZWdpc3RlcmVkW2FzU3RyaW5nXSArIFwifVwiO1xuICAgICAgICB9IGVsc2UgaWYgKGlzUHJvY2Vzc2FibGVWYWx1ZShhc1N0cmluZykpIHtcbiAgICAgICAgICBzdHJpbmcgKz0gcHJvY2Vzc1N0eWxlTmFtZShrZXkpICsgXCI6XCIgKyBwcm9jZXNzU3R5bGVWYWx1ZShrZXksIGFzU3RyaW5nKSArIFwiO1wiO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoa2V5ID09PSAnTk9fQ09NUE9ORU5UX1NFTEVDVE9SJyAmJiBpc0RldmVsb3BtZW50KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG5vQ29tcG9uZW50U2VsZWN0b3JNZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB0eXBlb2YgdmFsdWVbMF0gPT09ICdzdHJpbmcnICYmIChyZWdpc3RlcmVkID09IG51bGwgfHwgcmVnaXN0ZXJlZFt2YWx1ZVswXV0gPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgdmFsdWUubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBpZiAoaXNQcm9jZXNzYWJsZVZhbHVlKHZhbHVlW19pXSkpIHtcbiAgICAgICAgICAgICAgc3RyaW5nICs9IHByb2Nlc3NTdHlsZU5hbWUoa2V5KSArIFwiOlwiICsgcHJvY2Vzc1N0eWxlVmFsdWUoa2V5LCB2YWx1ZVtfaV0pICsgXCI7XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBpbnRlcnBvbGF0ZWQgPSBoYW5kbGVJbnRlcnBvbGF0aW9uKG1lcmdlZFByb3BzLCByZWdpc3RlcmVkLCB2YWx1ZSk7XG5cbiAgICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnYW5pbWF0aW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ2FuaW1hdGlvbk5hbWUnOlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3RyaW5nICs9IHByb2Nlc3NTdHlsZU5hbWUoa2V5KSArIFwiOlwiICsgaW50ZXJwb2xhdGVkICsgXCI7XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgc3RyaW5nICs9IGtleSArIFwie1wiICsgaW50ZXJwb2xhdGVkICsgXCJ9XCI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RyaW5nO1xufVxuXG52YXIgbGFiZWxQYXR0ZXJuID0gL2xhYmVsOlxccyooW15cXHM7e10rKVxccyooO3wkKS9nOyAvLyB0aGlzIGlzIHRoZSBjdXJzb3IgZm9yIGtleWZyYW1lc1xuLy8ga2V5ZnJhbWVzIGFyZSBzdG9yZWQgb24gdGhlIFNlcmlhbGl6ZWRTdHlsZXMgb2JqZWN0IGFzIGEgbGlua2VkIGxpc3RcblxudmFyIGN1cnNvcjtcbmZ1bmN0aW9uIHNlcmlhbGl6ZVN0eWxlcyhhcmdzLCByZWdpc3RlcmVkLCBtZXJnZWRQcm9wcykge1xuICBpZiAoYXJncy5sZW5ndGggPT09IDEgJiYgdHlwZW9mIGFyZ3NbMF0gPT09ICdvYmplY3QnICYmIGFyZ3NbMF0gIT09IG51bGwgJiYgYXJnc1swXS5zdHlsZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBhcmdzWzBdO1xuICB9XG5cbiAgdmFyIHN0cmluZ01vZGUgPSB0cnVlO1xuICB2YXIgc3R5bGVzID0gJyc7XG4gIGN1cnNvciA9IHVuZGVmaW5lZDtcbiAgdmFyIHN0cmluZ3MgPSBhcmdzWzBdO1xuXG4gIGlmIChzdHJpbmdzID09IG51bGwgfHwgc3RyaW5ncy5yYXcgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0cmluZ01vZGUgPSBmYWxzZTtcbiAgICBzdHlsZXMgKz0gaGFuZGxlSW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgc3RyaW5ncyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGFzVGVtcGxhdGVTdHJpbmdzQXJyID0gc3RyaW5ncztcblxuICAgIHN0eWxlcyArPSBhc1RlbXBsYXRlU3RyaW5nc0FyclswXTtcbiAgfSAvLyB3ZSBzdGFydCBhdCAxIHNpbmNlIHdlJ3ZlIGFscmVhZHkgaGFuZGxlZCB0aGUgZmlyc3QgYXJnXG5cblxuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICBzdHlsZXMgKz0gaGFuZGxlSW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgYXJnc1tpXSk7XG5cbiAgICBpZiAoc3RyaW5nTW9kZSkge1xuICAgICAgdmFyIHRlbXBsYXRlU3RyaW5nc0FyciA9IHN0cmluZ3M7XG5cbiAgICAgIHN0eWxlcyArPSB0ZW1wbGF0ZVN0cmluZ3NBcnJbaV07XG4gICAgfVxuICB9IC8vIHVzaW5nIGEgZ2xvYmFsIHJlZ2V4IHdpdGggLmV4ZWMgaXMgc3RhdGVmdWwgc28gbGFzdEluZGV4IGhhcyB0byBiZSByZXNldCBlYWNoIHRpbWVcblxuXG4gIGxhYmVsUGF0dGVybi5sYXN0SW5kZXggPSAwO1xuICB2YXIgaWRlbnRpZmllck5hbWUgPSAnJztcbiAgdmFyIG1hdGNoOyAvLyBodHRwczovL2VzYmVuY2guY29tL2JlbmNoLzViODA5YzJjZjI5NDk4MDBhMGY2MWZiNVxuXG4gIHdoaWxlICgobWF0Y2ggPSBsYWJlbFBhdHRlcm4uZXhlYyhzdHlsZXMpKSAhPT0gbnVsbCkge1xuICAgIGlkZW50aWZpZXJOYW1lICs9ICctJyArIG1hdGNoWzFdO1xuICB9XG5cbiAgdmFyIG5hbWUgPSBoYXNoU3RyaW5nKHN0eWxlcykgKyBpZGVudGlmaWVyTmFtZTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IG5hbWUsXG4gICAgc3R5bGVzOiBzdHlsZXMsXG4gICAgbmV4dDogY3Vyc29yXG4gIH07XG59XG5cbmV4cG9ydCB7IHNlcmlhbGl6ZVN0eWxlcyB9O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG52YXIgc3luY0ZhbGxiYWNrID0gZnVuY3Rpb24gc3luY0ZhbGxiYWNrKGNyZWF0ZSkge1xuICByZXR1cm4gY3JlYXRlKCk7XG59O1xuXG52YXIgdXNlSW5zZXJ0aW9uRWZmZWN0ID0gUmVhY3RbJ3VzZUluc2VydGlvbicgKyAnRWZmZWN0J10gPyBSZWFjdFsndXNlSW5zZXJ0aW9uJyArICdFZmZlY3QnXSA6IGZhbHNlO1xudmFyIHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2sgPSB1c2VJbnNlcnRpb25FZmZlY3QgfHwgc3luY0ZhbGxiYWNrO1xudmFyIHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjayA9IHVzZUluc2VydGlvbkVmZmVjdCB8fCBSZWFjdC51c2VMYXlvdXRFZmZlY3Q7XG5cbmV4cG9ydCB7IHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2ssIHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjayB9O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCwgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjcmVhdGVDYWNoZSBmcm9tICdAZW1vdGlvbi9jYWNoZSc7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcyc7XG5pbXBvcnQgd2Vha01lbW9pemUgZnJvbSAnQGVtb3Rpb24vd2Vhay1tZW1vaXplJztcbmltcG9ydCBob2lzdE5vblJlYWN0U3RhdGljcyBmcm9tICcuLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuYnJvd3Nlci5lc20uanMnO1xuaW1wb3J0IHsgZ2V0UmVnaXN0ZXJlZFN0eWxlcywgcmVnaXN0ZXJTdHlsZXMsIGluc2VydFN0eWxlcyB9IGZyb20gJ0BlbW90aW9uL3V0aWxzJztcbmltcG9ydCB7IHNlcmlhbGl6ZVN0eWxlcyB9IGZyb20gJ0BlbW90aW9uL3NlcmlhbGl6ZSc7XG5pbXBvcnQgeyB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrIH0gZnJvbSAnQGVtb3Rpb24vdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3MnO1xuXG52YXIgaXNEZXZlbG9wbWVudCA9IGZhbHNlO1xuXG52YXIgRW1vdGlvbkNhY2hlQ29udGV4dCA9IC8qICNfX1BVUkVfXyAqL1JlYWN0LmNyZWF0ZUNvbnRleHQoIC8vIHdlJ3JlIGRvaW5nIHRoaXMgdG8gYXZvaWQgcHJlY29uc3RydWN0J3MgZGVhZCBjb2RlIGVsaW1pbmF0aW9uIGluIHRoaXMgb25lIGNhc2Vcbi8vIGJlY2F1c2UgdGhpcyBtb2R1bGUgaXMgcHJpbWFyaWx5IGludGVuZGVkIGZvciB0aGUgYnJvd3NlciBhbmQgbm9kZVxuLy8gYnV0IGl0J3MgYWxzbyByZXF1aXJlZCBpbiByZWFjdCBuYXRpdmUgYW5kIHNpbWlsYXIgZW52aXJvbm1lbnRzIHNvbWV0aW1lc1xuLy8gYW5kIHdlIGNvdWxkIGhhdmUgYSBzcGVjaWFsIGJ1aWxkIGp1c3QgZm9yIHRoYXRcbi8vIGJ1dCB0aGlzIGlzIG11Y2ggZWFzaWVyIGFuZCB0aGUgbmF0aXZlIHBhY2thZ2VzXG4vLyBtaWdodCB1c2UgYSBkaWZmZXJlbnQgdGhlbWUgY29udGV4dCBpbiB0aGUgZnV0dXJlIGFueXdheVxudHlwZW9mIEhUTUxFbGVtZW50ICE9PSAndW5kZWZpbmVkJyA/IC8qICNfX1BVUkVfXyAqL2NyZWF0ZUNhY2hlKHtcbiAga2V5OiAnY3NzJ1xufSkgOiBudWxsKTtcblxudmFyIENhY2hlUHJvdmlkZXIgPSBFbW90aW9uQ2FjaGVDb250ZXh0LlByb3ZpZGVyO1xudmFyIF9fdW5zYWZlX3VzZUVtb3Rpb25DYWNoZSA9IGZ1bmN0aW9uIHVzZUVtb3Rpb25DYWNoZSgpIHtcbiAgcmV0dXJuIHVzZUNvbnRleHQoRW1vdGlvbkNhY2hlQ29udGV4dCk7XG59O1xuXG52YXIgd2l0aEVtb3Rpb25DYWNoZSA9IGZ1bmN0aW9uIHdpdGhFbW90aW9uQ2FjaGUoZnVuYykge1xuICByZXR1cm4gLyojX19QVVJFX18qL2ZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHtcbiAgICAvLyB0aGUgY2FjaGUgd2lsbCBuZXZlciBiZSBudWxsIGluIHRoZSBicm93c2VyXG4gICAgdmFyIGNhY2hlID0gdXNlQ29udGV4dChFbW90aW9uQ2FjaGVDb250ZXh0KTtcbiAgICByZXR1cm4gZnVuYyhwcm9wcywgY2FjaGUsIHJlZik7XG4gIH0pO1xufTtcblxudmFyIFRoZW1lQ29udGV4dCA9IC8qICNfX1BVUkVfXyAqL1JlYWN0LmNyZWF0ZUNvbnRleHQoe30pO1xuXG52YXIgdXNlVGhlbWUgPSBmdW5jdGlvbiB1c2VUaGVtZSgpIHtcbiAgcmV0dXJuIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcbn07XG5cbnZhciBnZXRUaGVtZSA9IGZ1bmN0aW9uIGdldFRoZW1lKG91dGVyVGhlbWUsIHRoZW1lKSB7XG4gIGlmICh0eXBlb2YgdGhlbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICB2YXIgbWVyZ2VkVGhlbWUgPSB0aGVtZShvdXRlclRoZW1lKTtcblxuICAgIHJldHVybiBtZXJnZWRUaGVtZTtcbiAgfVxuXG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3V0ZXJUaGVtZSwgdGhlbWUpO1xufTtcblxudmFyIGNyZWF0ZUNhY2hlV2l0aFRoZW1lID0gLyogI19fUFVSRV9fICovd2Vha01lbW9pemUoZnVuY3Rpb24gKG91dGVyVGhlbWUpIHtcbiAgcmV0dXJuIHdlYWtNZW1vaXplKGZ1bmN0aW9uICh0aGVtZSkge1xuICAgIHJldHVybiBnZXRUaGVtZShvdXRlclRoZW1lLCB0aGVtZSk7XG4gIH0pO1xufSk7XG52YXIgVGhlbWVQcm92aWRlciA9IGZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIocHJvcHMpIHtcbiAgdmFyIHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuXG4gIGlmIChwcm9wcy50aGVtZSAhPT0gdGhlbWUpIHtcbiAgICB0aGVtZSA9IGNyZWF0ZUNhY2hlV2l0aFRoZW1lKHRoZW1lKShwcm9wcy50aGVtZSk7XG4gIH1cblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVGhlbWVDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IHRoZW1lXG4gIH0sIHByb3BzLmNoaWxkcmVuKTtcbn07XG5mdW5jdGlvbiB3aXRoVGhlbWUoQ29tcG9uZW50KSB7XG4gIHZhciBjb21wb25lbnROYW1lID0gQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnO1xuICB2YXIgV2l0aFRoZW1lID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gcmVuZGVyKHByb3BzLCByZWYpIHtcbiAgICB2YXIgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENvbXBvbmVudCwgX2V4dGVuZHMoe1xuICAgICAgdGhlbWU6IHRoZW1lLFxuICAgICAgcmVmOiByZWZcbiAgICB9LCBwcm9wcykpO1xuICB9KTtcbiAgV2l0aFRoZW1lLmRpc3BsYXlOYW1lID0gXCJXaXRoVGhlbWUoXCIgKyBjb21wb25lbnROYW1lICsgXCIpXCI7XG4gIHJldHVybiBob2lzdE5vblJlYWN0U3RhdGljcyhXaXRoVGhlbWUsIENvbXBvbmVudCk7XG59XG5cbnZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxudmFyIHR5cGVQcm9wTmFtZSA9ICdfX0VNT1RJT05fVFlQRV9QTEVBU0VfRE9fTk9UX1VTRV9fJztcbnZhciBjcmVhdGVFbW90aW9uUHJvcHMgPSBmdW5jdGlvbiBjcmVhdGVFbW90aW9uUHJvcHModHlwZSwgcHJvcHMpIHtcblxuICB2YXIgbmV3UHJvcHMgPSB7fTtcblxuICBmb3IgKHZhciBfa2V5IGluIHByb3BzKSB7XG4gICAgaWYgKGhhc093bi5jYWxsKHByb3BzLCBfa2V5KSkge1xuICAgICAgbmV3UHJvcHNbX2tleV0gPSBwcm9wc1tfa2V5XTtcbiAgICB9XG4gIH1cblxuICBuZXdQcm9wc1t0eXBlUHJvcE5hbWVdID0gdHlwZTsgLy8gUnVudGltZSBsYWJlbGluZyBpcyBhbiBvcHQtaW4gZmVhdHVyZSBiZWNhdXNlOlxuXG4gIHJldHVybiBuZXdQcm9wcztcbn07XG5cbnZhciBJbnNlcnRpb24gPSBmdW5jdGlvbiBJbnNlcnRpb24oX3JlZikge1xuICB2YXIgY2FjaGUgPSBfcmVmLmNhY2hlLFxuICAgICAgc2VyaWFsaXplZCA9IF9yZWYuc2VyaWFsaXplZCxcbiAgICAgIGlzU3RyaW5nVGFnID0gX3JlZi5pc1N0cmluZ1RhZztcbiAgcmVnaXN0ZXJTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQsIGlzU3RyaW5nVGFnKTtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGluc2VydFN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgaXNTdHJpbmdUYWcpO1xuICB9KTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbnZhciBFbW90aW9uID0gLyogI19fUFVSRV9fICovd2l0aEVtb3Rpb25DYWNoZShmdW5jdGlvbiAocHJvcHMsIGNhY2hlLCByZWYpIHtcbiAgdmFyIGNzc1Byb3AgPSBwcm9wcy5jc3M7IC8vIHNvIHRoYXQgdXNpbmcgYGNzc2AgZnJvbSBgZW1vdGlvbmAgYW5kIHBhc3NpbmcgdGhlIHJlc3VsdCB0byB0aGUgY3NzIHByb3Agd29ya3NcbiAgLy8gbm90IHBhc3NpbmcgdGhlIHJlZ2lzdGVyZWQgY2FjaGUgdG8gc2VyaWFsaXplU3R5bGVzIGJlY2F1c2UgaXQgd291bGRcbiAgLy8gbWFrZSBjZXJ0YWluIGJhYmVsIG9wdGltaXNhdGlvbnMgbm90IHBvc3NpYmxlXG5cbiAgaWYgKHR5cGVvZiBjc3NQcm9wID09PSAnc3RyaW5nJyAmJiBjYWNoZS5yZWdpc3RlcmVkW2Nzc1Byb3BdICE9PSB1bmRlZmluZWQpIHtcbiAgICBjc3NQcm9wID0gY2FjaGUucmVnaXN0ZXJlZFtjc3NQcm9wXTtcbiAgfVxuXG4gIHZhciBXcmFwcGVkQ29tcG9uZW50ID0gcHJvcHNbdHlwZVByb3BOYW1lXTtcbiAgdmFyIHJlZ2lzdGVyZWRTdHlsZXMgPSBbY3NzUHJvcF07XG4gIHZhciBjbGFzc05hbWUgPSAnJztcblxuICBpZiAodHlwZW9mIHByb3BzLmNsYXNzTmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjbGFzc05hbWUgPSBnZXRSZWdpc3RlcmVkU3R5bGVzKGNhY2hlLnJlZ2lzdGVyZWQsIHJlZ2lzdGVyZWRTdHlsZXMsIHByb3BzLmNsYXNzTmFtZSk7XG4gIH0gZWxzZSBpZiAocHJvcHMuY2xhc3NOYW1lICE9IG51bGwpIHtcbiAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUgKyBcIiBcIjtcbiAgfVxuXG4gIHZhciBzZXJpYWxpemVkID0gc2VyaWFsaXplU3R5bGVzKHJlZ2lzdGVyZWRTdHlsZXMsIHVuZGVmaW5lZCwgUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpKTtcblxuICBjbGFzc05hbWUgKz0gY2FjaGUua2V5ICsgXCItXCIgKyBzZXJpYWxpemVkLm5hbWU7XG4gIHZhciBuZXdQcm9wcyA9IHt9O1xuXG4gIGZvciAodmFyIF9rZXkyIGluIHByb3BzKSB7XG4gICAgaWYgKGhhc093bi5jYWxsKHByb3BzLCBfa2V5MikgJiYgX2tleTIgIT09ICdjc3MnICYmIF9rZXkyICE9PSB0eXBlUHJvcE5hbWUgJiYgKCFpc0RldmVsb3BtZW50ICkpIHtcbiAgICAgIG5ld1Byb3BzW19rZXkyXSA9IHByb3BzW19rZXkyXTtcbiAgICB9XG4gIH1cblxuICBuZXdQcm9wcy5jbGFzc05hbWUgPSBjbGFzc05hbWU7XG5cbiAgaWYgKHJlZikge1xuICAgIG5ld1Byb3BzLnJlZiA9IHJlZjtcbiAgfVxuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoSW5zZXJ0aW9uLCB7XG4gICAgY2FjaGU6IGNhY2hlLFxuICAgIHNlcmlhbGl6ZWQ6IHNlcmlhbGl6ZWQsXG4gICAgaXNTdHJpbmdUYWc6IHR5cGVvZiBXcmFwcGVkQ29tcG9uZW50ID09PSAnc3RyaW5nJ1xuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoV3JhcHBlZENvbXBvbmVudCwgbmV3UHJvcHMpKTtcbn0pO1xuXG52YXIgRW1vdGlvbiQxID0gRW1vdGlvbjtcblxuZXhwb3J0IHsgQ2FjaGVQcm92aWRlciBhcyBDLCBFbW90aW9uJDEgYXMgRSwgVGhlbWVDb250ZXh0IGFzIFQsIF9fdW5zYWZlX3VzZUVtb3Rpb25DYWNoZSBhcyBfLCBUaGVtZVByb3ZpZGVyIGFzIGEsIHdpdGhUaGVtZSBhcyBiLCBjcmVhdGVFbW90aW9uUHJvcHMgYXMgYywgaGFzT3duIGFzIGgsIGlzRGV2ZWxvcG1lbnQgYXMgaSwgdXNlVGhlbWUgYXMgdSwgd2l0aEVtb3Rpb25DYWNoZSBhcyB3IH07XG4iLCJpbXBvcnQgeyBoIGFzIGhhc093biwgRSBhcyBFbW90aW9uLCBjIGFzIGNyZWF0ZUVtb3Rpb25Qcm9wcywgdyBhcyB3aXRoRW1vdGlvbkNhY2hlLCBUIGFzIFRoZW1lQ29udGV4dCwgaSBhcyBpc0RldmVsb3BtZW50IH0gZnJvbSAnLi9lbW90aW9uLWVsZW1lbnQtZjBkZTk2OGUuYnJvd3Nlci5lc20uanMnO1xuZXhwb3J0IHsgQyBhcyBDYWNoZVByb3ZpZGVyLCBUIGFzIFRoZW1lQ29udGV4dCwgYSBhcyBUaGVtZVByb3ZpZGVyLCBfIGFzIF9fdW5zYWZlX3VzZUVtb3Rpb25DYWNoZSwgdSBhcyB1c2VUaGVtZSwgdyBhcyB3aXRoRW1vdGlvbkNhY2hlLCBiIGFzIHdpdGhUaGVtZSB9IGZyb20gJy4vZW1vdGlvbi1lbGVtZW50LWYwZGU5NjhlLmJyb3dzZXIuZXNtLmpzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGluc2VydFN0eWxlcywgcmVnaXN0ZXJTdHlsZXMsIGdldFJlZ2lzdGVyZWRTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi91dGlscyc7XG5pbXBvcnQgeyB1c2VJbnNlcnRpb25FZmZlY3RXaXRoTGF5b3V0RmFsbGJhY2ssIHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2sgfSBmcm9tICdAZW1vdGlvbi91c2UtaW5zZXJ0aW9uLWVmZmVjdC13aXRoLWZhbGxiYWNrcyc7XG5pbXBvcnQgeyBzZXJpYWxpemVTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi9zZXJpYWxpemUnO1xuaW1wb3J0ICdAZW1vdGlvbi9jYWNoZSc7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcyc7XG5pbXBvcnQgJ0BlbW90aW9uL3dlYWstbWVtb2l6ZSc7XG5pbXBvcnQgJy4uL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5icm93c2VyLmVzbS5qcyc7XG5pbXBvcnQgJ2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzJztcblxudmFyIGpzeCA9IGZ1bmN0aW9uIGpzeCh0eXBlLCBwcm9wcykge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuXG4gIGlmIChwcm9wcyA9PSBudWxsIHx8ICFoYXNPd24uY2FsbChwcm9wcywgJ2NzcycpKSB7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcbiAgfVxuXG4gIHZhciBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGg7XG4gIHZhciBjcmVhdGVFbGVtZW50QXJnQXJyYXkgPSBuZXcgQXJyYXkoYXJnc0xlbmd0aCk7XG4gIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVswXSA9IEVtb3Rpb247XG4gIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVsxXSA9IGNyZWF0ZUVtb3Rpb25Qcm9wcyh0eXBlLCBwcm9wcyk7XG5cbiAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmdzTGVuZ3RoOyBpKyspIHtcbiAgICBjcmVhdGVFbGVtZW50QXJnQXJyYXlbaV0gPSBhcmdzW2ldO1xuICB9XG5cbiAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQuYXBwbHkobnVsbCwgY3JlYXRlRWxlbWVudEFyZ0FycmF5KTtcbn07XG5cbihmdW5jdGlvbiAoX2pzeCkge1xuICB2YXIgSlNYO1xuXG4gIChmdW5jdGlvbiAoX0pTWCkge30pKEpTWCB8fCAoSlNYID0gX2pzeC5KU1ggfHwgKF9qc3guSlNYID0ge30pKSk7XG59KShqc3ggfHwgKGpzeCA9IHt9KSk7XG5cbi8vIGluaXRpYWwgcmVuZGVyIGZyb20gYnJvd3NlciwgaW5zZXJ0QmVmb3JlIGNvbnRleHQuc2hlZXQudGFnc1swXSBvciBpZiBhIHN0eWxlIGhhc24ndCBiZWVuIGluc2VydGVkIHRoZXJlIHlldCwgYXBwZW5kQ2hpbGRcbi8vIGluaXRpYWwgY2xpZW50LXNpZGUgcmVuZGVyIGZyb20gU1NSLCB1c2UgcGxhY2Ugb2YgaHlkcmF0aW5nIHRhZ1xuXG52YXIgR2xvYmFsID0gLyogI19fUFVSRV9fICovd2l0aEVtb3Rpb25DYWNoZShmdW5jdGlvbiAocHJvcHMsIGNhY2hlKSB7XG5cbiAgdmFyIHN0eWxlcyA9IHByb3BzLnN0eWxlcztcbiAgdmFyIHNlcmlhbGl6ZWQgPSBzZXJpYWxpemVTdHlsZXMoW3N0eWxlc10sIHVuZGVmaW5lZCwgUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpKTtcbiAgLy8gYnV0IGl0IGlzIGJhc2VkIG9uIGEgY29uc3RhbnQgdGhhdCB3aWxsIG5ldmVyIGNoYW5nZSBhdCBydW50aW1lXG4gIC8vIGl0J3MgZWZmZWN0aXZlbHkgbGlrZSBoYXZpbmcgdHdvIGltcGxlbWVudGF0aW9ucyBhbmQgc3dpdGNoaW5nIHRoZW0gb3V0XG4gIC8vIHNvIGl0J3Mgbm90IGFjdHVhbGx5IGJyZWFraW5nIGFueXRoaW5nXG5cblxuICB2YXIgc2hlZXRSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIga2V5ID0gY2FjaGUua2V5ICsgXCItZ2xvYmFsXCI7IC8vIHVzZSBjYXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9lbW90aW9uLWpzL2Vtb3Rpb24vaXNzdWVzLzI2NzVcblxuICAgIHZhciBzaGVldCA9IG5ldyBjYWNoZS5zaGVldC5jb25zdHJ1Y3Rvcih7XG4gICAgICBrZXk6IGtleSxcbiAgICAgIG5vbmNlOiBjYWNoZS5zaGVldC5ub25jZSxcbiAgICAgIGNvbnRhaW5lcjogY2FjaGUuc2hlZXQuY29udGFpbmVyLFxuICAgICAgc3BlZWR5OiBjYWNoZS5zaGVldC5pc1NwZWVkeVxuICAgIH0pO1xuICAgIHZhciByZWh5ZHJhdGluZyA9IGZhbHNlO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcInN0eWxlW2RhdGEtZW1vdGlvbj1cXFwiXCIgKyBrZXkgKyBcIiBcIiArIHNlcmlhbGl6ZWQubmFtZSArIFwiXFxcIl1cIik7XG5cbiAgICBpZiAoY2FjaGUuc2hlZXQudGFncy5sZW5ndGgpIHtcbiAgICAgIHNoZWV0LmJlZm9yZSA9IGNhY2hlLnNoZWV0LnRhZ3NbMF07XG4gICAgfVxuXG4gICAgaWYgKG5vZGUgIT09IG51bGwpIHtcbiAgICAgIHJlaHlkcmF0aW5nID0gdHJ1ZTsgLy8gY2xlYXIgdGhlIGhhc2ggc28gdGhpcyBub2RlIHdvbid0IGJlIHJlY29nbml6YWJsZSBhcyByZWh5ZHJhdGFibGUgYnkgb3RoZXIgPEdsb2JhbC8+c1xuXG4gICAgICBub2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1lbW90aW9uJywga2V5KTtcbiAgICAgIHNoZWV0Lmh5ZHJhdGUoW25vZGVdKTtcbiAgICB9XG5cbiAgICBzaGVldFJlZi5jdXJyZW50ID0gW3NoZWV0LCByZWh5ZHJhdGluZ107XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNoZWV0LmZsdXNoKCk7XG4gICAgfTtcbiAgfSwgW2NhY2hlXSk7XG4gIHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNoZWV0UmVmQ3VycmVudCA9IHNoZWV0UmVmLmN1cnJlbnQ7XG4gICAgdmFyIHNoZWV0ID0gc2hlZXRSZWZDdXJyZW50WzBdLFxuICAgICAgICByZWh5ZHJhdGluZyA9IHNoZWV0UmVmQ3VycmVudFsxXTtcblxuICAgIGlmIChyZWh5ZHJhdGluZykge1xuICAgICAgc2hlZXRSZWZDdXJyZW50WzFdID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHNlcmlhbGl6ZWQubmV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBpbnNlcnQga2V5ZnJhbWVzXG4gICAgICBpbnNlcnRTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQubmV4dCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHNoZWV0LnRhZ3MubGVuZ3RoKSB7XG4gICAgICAvLyBpZiB0aGlzIGRvZXNuJ3QgZXhpc3QgdGhlbiBpdCB3aWxsIGJlIG51bGwgc28gdGhlIHN0eWxlIGVsZW1lbnQgd2lsbCBiZSBhcHBlbmRlZFxuICAgICAgdmFyIGVsZW1lbnQgPSBzaGVldC50YWdzW3NoZWV0LnRhZ3MubGVuZ3RoIC0gMV0ubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgc2hlZXQuYmVmb3JlID0gZWxlbWVudDtcbiAgICAgIHNoZWV0LmZsdXNoKCk7XG4gICAgfVxuXG4gICAgY2FjaGUuaW5zZXJ0KFwiXCIsIHNlcmlhbGl6ZWQsIHNoZWV0LCBmYWxzZSk7XG4gIH0sIFtjYWNoZSwgc2VyaWFsaXplZC5uYW1lXSk7XG4gIHJldHVybiBudWxsO1xufSk7XG5cbmZ1bmN0aW9uIGNzcygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiBzZXJpYWxpemVTdHlsZXMoYXJncyk7XG59XG5cbmZ1bmN0aW9uIGtleWZyYW1lcygpIHtcbiAgdmFyIGluc2VydGFibGUgPSBjc3MuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpO1xuICB2YXIgbmFtZSA9IFwiYW5pbWF0aW9uLVwiICsgaW5zZXJ0YWJsZS5uYW1lO1xuICByZXR1cm4ge1xuICAgIG5hbWU6IG5hbWUsXG4gICAgc3R5bGVzOiBcIkBrZXlmcmFtZXMgXCIgKyBuYW1lICsgXCJ7XCIgKyBpbnNlcnRhYmxlLnN0eWxlcyArIFwifVwiLFxuICAgIGFuaW06IDEsXG4gICAgdG9TdHJpbmc6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIFwiX0VNT19cIiArIHRoaXMubmFtZSArIFwiX1wiICsgdGhpcy5zdHlsZXMgKyBcIl9FTU9fXCI7XG4gICAgfVxuICB9O1xufVxuXG52YXIgY2xhc3NuYW1lcyA9IGZ1bmN0aW9uIGNsYXNzbmFtZXMoYXJncykge1xuICB2YXIgbGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIGNscyA9ICcnO1xuXG4gIGZvciAoOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYXJnID0gYXJnc1tpXTtcbiAgICBpZiAoYXJnID09IG51bGwpIGNvbnRpbnVlO1xuICAgIHZhciB0b0FkZCA9IHZvaWQgMDtcblxuICAgIHN3aXRjaCAodHlwZW9mIGFyZykge1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuICAgICAgICAgICAgdG9BZGQgPSBjbGFzc25hbWVzKGFyZyk7XG4gICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgdG9BZGQgPSAnJztcblxuICAgICAgICAgICAgZm9yICh2YXIgayBpbiBhcmcpIHtcbiAgICAgICAgICAgICAgaWYgKGFyZ1trXSAmJiBrKSB7XG4gICAgICAgICAgICAgICAgdG9BZGQgJiYgKHRvQWRkICs9ICcgJyk7XG4gICAgICAgICAgICAgICAgdG9BZGQgKz0gaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHtcbiAgICAgICAgICB0b0FkZCA9IGFyZztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0b0FkZCkge1xuICAgICAgY2xzICYmIChjbHMgKz0gJyAnKTtcbiAgICAgIGNscyArPSB0b0FkZDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2xzO1xufTtcblxuZnVuY3Rpb24gbWVyZ2UocmVnaXN0ZXJlZCwgY3NzLCBjbGFzc05hbWUpIHtcbiAgdmFyIHJlZ2lzdGVyZWRTdHlsZXMgPSBbXTtcbiAgdmFyIHJhd0NsYXNzTmFtZSA9IGdldFJlZ2lzdGVyZWRTdHlsZXMocmVnaXN0ZXJlZCwgcmVnaXN0ZXJlZFN0eWxlcywgY2xhc3NOYW1lKTtcblxuICBpZiAocmVnaXN0ZXJlZFN0eWxlcy5sZW5ndGggPCAyKSB7XG4gICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgfVxuXG4gIHJldHVybiByYXdDbGFzc05hbWUgKyBjc3MocmVnaXN0ZXJlZFN0eWxlcyk7XG59XG5cbnZhciBJbnNlcnRpb24gPSBmdW5jdGlvbiBJbnNlcnRpb24oX3JlZikge1xuICB2YXIgY2FjaGUgPSBfcmVmLmNhY2hlLFxuICAgICAgc2VyaWFsaXplZEFyciA9IF9yZWYuc2VyaWFsaXplZEFycjtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlcmlhbGl6ZWRBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGluc2VydFN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZEFycltpXSwgZmFsc2UpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG52YXIgQ2xhc3NOYW1lcyA9IC8qICNfX1BVUkVfXyAqL3dpdGhFbW90aW9uQ2FjaGUoZnVuY3Rpb24gKHByb3BzLCBjYWNoZSkge1xuICB2YXIgaGFzUmVuZGVyZWQgPSBmYWxzZTtcbiAgdmFyIHNlcmlhbGl6ZWRBcnIgPSBbXTtcblxuICB2YXIgY3NzID0gZnVuY3Rpb24gY3NzKCkge1xuICAgIGlmIChoYXNSZW5kZXJlZCAmJiBpc0RldmVsb3BtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NzcyBjYW4gb25seSBiZSB1c2VkIGR1cmluZyByZW5kZXInKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgdmFyIHNlcmlhbGl6ZWQgPSBzZXJpYWxpemVTdHlsZXMoYXJncywgY2FjaGUucmVnaXN0ZXJlZCk7XG4gICAgc2VyaWFsaXplZEFyci5wdXNoKHNlcmlhbGl6ZWQpOyAvLyByZWdpc3RyYXRpb24gaGFzIHRvIGhhcHBlbiBoZXJlIGFzIHRoZSByZXN1bHQgb2YgdGhpcyBtaWdodCBnZXQgY29uc3VtZWQgYnkgYGN4YFxuXG4gICAgcmVnaXN0ZXJTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQsIGZhbHNlKTtcbiAgICByZXR1cm4gY2FjaGUua2V5ICsgXCItXCIgKyBzZXJpYWxpemVkLm5hbWU7XG4gIH07XG5cbiAgdmFyIGN4ID0gZnVuY3Rpb24gY3goKSB7XG4gICAgaWYgKGhhc1JlbmRlcmVkICYmIGlzRGV2ZWxvcG1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY3ggY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgcmVuZGVyJyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICBhcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lcmdlKGNhY2hlLnJlZ2lzdGVyZWQsIGNzcywgY2xhc3NuYW1lcyhhcmdzKSk7XG4gIH07XG5cbiAgdmFyIGNvbnRlbnQgPSB7XG4gICAgY3NzOiBjc3MsXG4gICAgY3g6IGN4LFxuICAgIHRoZW1lOiBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dClcbiAgfTtcbiAgdmFyIGVsZSA9IHByb3BzLmNoaWxkcmVuKGNvbnRlbnQpO1xuICBoYXNSZW5kZXJlZCA9IHRydWU7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoSW5zZXJ0aW9uLCB7XG4gICAgY2FjaGU6IGNhY2hlLFxuICAgIHNlcmlhbGl6ZWRBcnI6IHNlcmlhbGl6ZWRBcnJcbiAgfSksIGVsZSk7XG59KTtcblxuZXhwb3J0IHsgQ2xhc3NOYW1lcywgR2xvYmFsLCBqc3ggYXMgY3JlYXRlRWxlbWVudCwgY3NzLCBqc3gsIGtleWZyYW1lcyB9O1xuIiwiZnVuY3Rpb24gX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbChlLCB0KSB7XG4gIHJldHVybiB0IHx8ICh0ID0gZS5zbGljZSgwKSksIE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwge1xuICAgIHJhdzoge1xuICAgICAgdmFsdWU6IE9iamVjdC5mcmVlemUodClcbiAgICB9XG4gIH0pKTtcbn1cbmV4cG9ydCB7IF90YWdnZWRUZW1wbGF0ZUxpdGVyYWwgYXMgZGVmYXVsdCB9OyIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LnByb2R1Y3Rpb24uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC50cmFuc2l0aW9uYWwuZWxlbWVudFwiKSxcbiAgUkVBQ1RfUE9SVEFMX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLFxuICBSRUFDVF9GUkFHTUVOVF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLFxuICBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpLFxuICBSRUFDVF9QUk9GSUxFUl9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpLFxuICBSRUFDVF9DT05TVU1FUl9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmNvbnN1bWVyXCIpLFxuICBSRUFDVF9DT05URVhUX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKSxcbiAgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSxcbiAgUkVBQ1RfU1VTUEVOU0VfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKSxcbiAgUkVBQ1RfTUVNT19UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIiksXG4gIFJFQUNUX0xBWllfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpLFxuICBNQVlCRV9JVEVSQVRPUl9TWU1CT0wgPSBTeW1ib2wuaXRlcmF0b3I7XG5mdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcbiAgaWYgKG51bGwgPT09IG1heWJlSXRlcmFibGUgfHwgXCJvYmplY3RcIiAhPT0gdHlwZW9mIG1heWJlSXRlcmFibGUpIHJldHVybiBudWxsO1xuICBtYXliZUl0ZXJhYmxlID1cbiAgICAoTUFZQkVfSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbTUFZQkVfSVRFUkFUT1JfU1lNQk9MXSkgfHxcbiAgICBtYXliZUl0ZXJhYmxlW1wiQEBpdGVyYXRvclwiXTtcbiAgcmV0dXJuIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIG1heWJlSXRlcmFibGUgPyBtYXliZUl0ZXJhYmxlIDogbnVsbDtcbn1cbnZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IHtcbiAgICBpc01vdW50ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAhMTtcbiAgICB9LFxuICAgIGVucXVldWVGb3JjZVVwZGF0ZTogZnVuY3Rpb24gKCkge30sXG4gICAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKCkge30sXG4gICAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbiAoKSB7fVxuICB9LFxuICBhc3NpZ24gPSBPYmplY3QuYXNzaWduLFxuICBlbXB0eU9iamVjdCA9IHt9O1xuZnVuY3Rpb24gQ29tcG9uZW50KHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7XG4gIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7XG4gIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7XG59XG5Db21wb25lbnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSB7fTtcbkNvbXBvbmVudC5wcm90b3R5cGUuc2V0U3RhdGUgPSBmdW5jdGlvbiAocGFydGlhbFN0YXRlLCBjYWxsYmFjaykge1xuICBpZiAoXG4gICAgXCJvYmplY3RcIiAhPT0gdHlwZW9mIHBhcnRpYWxTdGF0ZSAmJlxuICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIHBhcnRpYWxTdGF0ZSAmJlxuICAgIG51bGwgIT0gcGFydGlhbFN0YXRlXG4gIClcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgIFwidGFrZXMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcyB0byB1cGRhdGUgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMuXCJcbiAgICApO1xuICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsIHBhcnRpYWxTdGF0ZSwgY2FsbGJhY2ssIFwic2V0U3RhdGVcIik7XG59O1xuQ29tcG9uZW50LnByb3RvdHlwZS5mb3JjZVVwZGF0ZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMsIGNhbGxiYWNrLCBcImZvcmNlVXBkYXRlXCIpO1xufTtcbmZ1bmN0aW9uIENvbXBvbmVudER1bW15KCkge31cbkNvbXBvbmVudER1bW15LnByb3RvdHlwZSA9IENvbXBvbmVudC5wcm90b3R5cGU7XG5mdW5jdGlvbiBQdXJlQ29tcG9uZW50KHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7XG4gIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7XG4gIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7XG59XG52YXIgcHVyZUNvbXBvbmVudFByb3RvdHlwZSA9IChQdXJlQ29tcG9uZW50LnByb3RvdHlwZSA9IG5ldyBDb21wb25lbnREdW1teSgpKTtcbnB1cmVDb21wb25lbnRQcm90b3R5cGUuY29uc3RydWN0b3IgPSBQdXJlQ29tcG9uZW50O1xuYXNzaWduKHB1cmVDb21wb25lbnRQcm90b3R5cGUsIENvbXBvbmVudC5wcm90b3R5cGUpO1xucHVyZUNvbXBvbmVudFByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudCA9ICEwO1xudmFyIGlzQXJyYXlJbXBsID0gQXJyYXkuaXNBcnJheSxcbiAgUmVhY3RTaGFyZWRJbnRlcm5hbHMgPSB7IEg6IG51bGwsIEE6IG51bGwsIFQ6IG51bGwsIFM6IG51bGwgfSxcbiAgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuZnVuY3Rpb24gUmVhY3RFbGVtZW50KHR5cGUsIGtleSwgc2VsZiwgc291cmNlLCBvd25lciwgcHJvcHMpIHtcbiAgc2VsZiA9IHByb3BzLnJlZjtcbiAgcmV0dXJuIHtcbiAgICAkJHR5cGVvZjogUkVBQ1RfRUxFTUVOVF9UWVBFLFxuICAgIHR5cGU6IHR5cGUsXG4gICAga2V5OiBrZXksXG4gICAgcmVmOiB2b2lkIDAgIT09IHNlbGYgPyBzZWxmIDogbnVsbCxcbiAgICBwcm9wczogcHJvcHNcbiAgfTtcbn1cbmZ1bmN0aW9uIGNsb25lQW5kUmVwbGFjZUtleShvbGRFbGVtZW50LCBuZXdLZXkpIHtcbiAgcmV0dXJuIFJlYWN0RWxlbWVudChcbiAgICBvbGRFbGVtZW50LnR5cGUsXG4gICAgbmV3S2V5LFxuICAgIHZvaWQgMCxcbiAgICB2b2lkIDAsXG4gICAgdm9pZCAwLFxuICAgIG9sZEVsZW1lbnQucHJvcHNcbiAgKTtcbn1cbmZ1bmN0aW9uIGlzVmFsaWRFbGVtZW50KG9iamVjdCkge1xuICByZXR1cm4gKFxuICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBvYmplY3QgJiZcbiAgICBudWxsICE9PSBvYmplY3QgJiZcbiAgICBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRVxuICApO1xufVxuZnVuY3Rpb24gZXNjYXBlKGtleSkge1xuICB2YXIgZXNjYXBlckxvb2t1cCA9IHsgXCI9XCI6IFwiPTBcIiwgXCI6XCI6IFwiPTJcIiB9O1xuICByZXR1cm4gKFxuICAgIFwiJFwiICtcbiAgICBrZXkucmVwbGFjZSgvWz06XS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgIHJldHVybiBlc2NhcGVyTG9va3VwW21hdGNoXTtcbiAgICB9KVxuICApO1xufVxudmFyIHVzZXJQcm92aWRlZEtleUVzY2FwZVJlZ2V4ID0gL1xcLysvZztcbmZ1bmN0aW9uIGdldEVsZW1lbnRLZXkoZWxlbWVudCwgaW5kZXgpIHtcbiAgcmV0dXJuIFwib2JqZWN0XCIgPT09IHR5cGVvZiBlbGVtZW50ICYmIG51bGwgIT09IGVsZW1lbnQgJiYgbnVsbCAhPSBlbGVtZW50LmtleVxuICAgID8gZXNjYXBlKFwiXCIgKyBlbGVtZW50LmtleSlcbiAgICA6IGluZGV4LnRvU3RyaW5nKDM2KTtcbn1cbmZ1bmN0aW9uIG5vb3AkMSgpIHt9XG5mdW5jdGlvbiByZXNvbHZlVGhlbmFibGUodGhlbmFibGUpIHtcbiAgc3dpdGNoICh0aGVuYWJsZS5zdGF0dXMpIHtcbiAgICBjYXNlIFwiZnVsZmlsbGVkXCI6XG4gICAgICByZXR1cm4gdGhlbmFibGUudmFsdWU7XG4gICAgY2FzZSBcInJlamVjdGVkXCI6XG4gICAgICB0aHJvdyB0aGVuYWJsZS5yZWFzb247XG4gICAgZGVmYXVsdDpcbiAgICAgIHN3aXRjaCAoXG4gICAgICAgIChcInN0cmluZ1wiID09PSB0eXBlb2YgdGhlbmFibGUuc3RhdHVzXG4gICAgICAgICAgPyB0aGVuYWJsZS50aGVuKG5vb3AkMSwgbm9vcCQxKVxuICAgICAgICAgIDogKCh0aGVuYWJsZS5zdGF0dXMgPSBcInBlbmRpbmdcIiksXG4gICAgICAgICAgICB0aGVuYWJsZS50aGVuKFxuICAgICAgICAgICAgICBmdW5jdGlvbiAoZnVsZmlsbGVkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBcInBlbmRpbmdcIiA9PT0gdGhlbmFibGUuc3RhdHVzICYmXG4gICAgICAgICAgICAgICAgICAoKHRoZW5hYmxlLnN0YXR1cyA9IFwiZnVsZmlsbGVkXCIpLFxuICAgICAgICAgICAgICAgICAgKHRoZW5hYmxlLnZhbHVlID0gZnVsZmlsbGVkVmFsdWUpKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgXCJwZW5kaW5nXCIgPT09IHRoZW5hYmxlLnN0YXR1cyAmJlxuICAgICAgICAgICAgICAgICAgKCh0aGVuYWJsZS5zdGF0dXMgPSBcInJlamVjdGVkXCIpLCAodGhlbmFibGUucmVhc29uID0gZXJyb3IpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKSksXG4gICAgICAgIHRoZW5hYmxlLnN0YXR1cylcbiAgICAgICkge1xuICAgICAgICBjYXNlIFwiZnVsZmlsbGVkXCI6XG4gICAgICAgICAgcmV0dXJuIHRoZW5hYmxlLnZhbHVlO1xuICAgICAgICBjYXNlIFwicmVqZWN0ZWRcIjpcbiAgICAgICAgICB0aHJvdyB0aGVuYWJsZS5yZWFzb247XG4gICAgICB9XG4gIH1cbiAgdGhyb3cgdGhlbmFibGU7XG59XG5mdW5jdGlvbiBtYXBJbnRvQXJyYXkoY2hpbGRyZW4sIGFycmF5LCBlc2NhcGVkUHJlZml4LCBuYW1lU29GYXIsIGNhbGxiYWNrKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIGNoaWxkcmVuO1xuICBpZiAoXCJ1bmRlZmluZWRcIiA9PT0gdHlwZSB8fCBcImJvb2xlYW5cIiA9PT0gdHlwZSkgY2hpbGRyZW4gPSBudWxsO1xuICB2YXIgaW52b2tlQ2FsbGJhY2sgPSAhMTtcbiAgaWYgKG51bGwgPT09IGNoaWxkcmVuKSBpbnZva2VDYWxsYmFjayA9ICEwO1xuICBlbHNlXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFwiYmlnaW50XCI6XG4gICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgIGludm9rZUNhbGxiYWNrID0gITA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICBzd2l0Y2ggKGNoaWxkcmVuLiQkdHlwZW9mKSB7XG4gICAgICAgICAgY2FzZSBSRUFDVF9FTEVNRU5UX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9QT1JUQUxfVFlQRTpcbiAgICAgICAgICAgIGludm9rZUNhbGxiYWNrID0gITA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChpbnZva2VDYWxsYmFjayA9IGNoaWxkcmVuLl9pbml0KSxcbiAgICAgICAgICAgICAgbWFwSW50b0FycmF5KFxuICAgICAgICAgICAgICAgIGludm9rZUNhbGxiYWNrKGNoaWxkcmVuLl9wYXlsb2FkKSxcbiAgICAgICAgICAgICAgICBhcnJheSxcbiAgICAgICAgICAgICAgICBlc2NhcGVkUHJlZml4LFxuICAgICAgICAgICAgICAgIG5hbWVTb0ZhcixcbiAgICAgICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuICBpZiAoaW52b2tlQ2FsbGJhY2spXG4gICAgcmV0dXJuIChcbiAgICAgIChjYWxsYmFjayA9IGNhbGxiYWNrKGNoaWxkcmVuKSksXG4gICAgICAoaW52b2tlQ2FsbGJhY2sgPVxuICAgICAgICBcIlwiID09PSBuYW1lU29GYXIgPyBcIi5cIiArIGdldEVsZW1lbnRLZXkoY2hpbGRyZW4sIDApIDogbmFtZVNvRmFyKSxcbiAgICAgIGlzQXJyYXlJbXBsKGNhbGxiYWNrKVxuICAgICAgICA/ICgoZXNjYXBlZFByZWZpeCA9IFwiXCIpLFxuICAgICAgICAgIG51bGwgIT0gaW52b2tlQ2FsbGJhY2sgJiZcbiAgICAgICAgICAgIChlc2NhcGVkUHJlZml4ID1cbiAgICAgICAgICAgICAgaW52b2tlQ2FsbGJhY2sucmVwbGFjZSh1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdleCwgXCIkJi9cIikgKyBcIi9cIiksXG4gICAgICAgICAgbWFwSW50b0FycmF5KGNhbGxiYWNrLCBhcnJheSwgZXNjYXBlZFByZWZpeCwgXCJcIiwgZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgICAgIHJldHVybiBjO1xuICAgICAgICAgIH0pKVxuICAgICAgICA6IG51bGwgIT0gY2FsbGJhY2sgJiZcbiAgICAgICAgICAoaXNWYWxpZEVsZW1lbnQoY2FsbGJhY2spICYmXG4gICAgICAgICAgICAoY2FsbGJhY2sgPSBjbG9uZUFuZFJlcGxhY2VLZXkoXG4gICAgICAgICAgICAgIGNhbGxiYWNrLFxuICAgICAgICAgICAgICBlc2NhcGVkUHJlZml4ICtcbiAgICAgICAgICAgICAgICAobnVsbCA9PSBjYWxsYmFjay5rZXkgfHxcbiAgICAgICAgICAgICAgICAoY2hpbGRyZW4gJiYgY2hpbGRyZW4ua2V5ID09PSBjYWxsYmFjay5rZXkpXG4gICAgICAgICAgICAgICAgICA/IFwiXCJcbiAgICAgICAgICAgICAgICAgIDogKFwiXCIgKyBjYWxsYmFjay5rZXkpLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgICAgdXNlclByb3ZpZGVkS2V5RXNjYXBlUmVnZXgsXG4gICAgICAgICAgICAgICAgICAgICAgXCIkJi9cIlxuICAgICAgICAgICAgICAgICAgICApICsgXCIvXCIpICtcbiAgICAgICAgICAgICAgICBpbnZva2VDYWxsYmFja1xuICAgICAgICAgICAgKSksXG4gICAgICAgICAgYXJyYXkucHVzaChjYWxsYmFjaykpLFxuICAgICAgMVxuICAgICk7XG4gIGludm9rZUNhbGxiYWNrID0gMDtcbiAgdmFyIG5leHROYW1lUHJlZml4ID0gXCJcIiA9PT0gbmFtZVNvRmFyID8gXCIuXCIgOiBuYW1lU29GYXIgKyBcIjpcIjtcbiAgaWYgKGlzQXJyYXlJbXBsKGNoaWxkcmVuKSlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKVxuICAgICAgKG5hbWVTb0ZhciA9IGNoaWxkcmVuW2ldKSxcbiAgICAgICAgKHR5cGUgPSBuZXh0TmFtZVByZWZpeCArIGdldEVsZW1lbnRLZXkobmFtZVNvRmFyLCBpKSksXG4gICAgICAgIChpbnZva2VDYWxsYmFjayArPSBtYXBJbnRvQXJyYXkoXG4gICAgICAgICAgbmFtZVNvRmFyLFxuICAgICAgICAgIGFycmF5LFxuICAgICAgICAgIGVzY2FwZWRQcmVmaXgsXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApKTtcbiAgZWxzZSBpZiAoKChpID0gZ2V0SXRlcmF0b3JGbihjaGlsZHJlbikpLCBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBpKSlcbiAgICBmb3IgKFxuICAgICAgY2hpbGRyZW4gPSBpLmNhbGwoY2hpbGRyZW4pLCBpID0gMDtcbiAgICAgICEobmFtZVNvRmFyID0gY2hpbGRyZW4ubmV4dCgpKS5kb25lO1xuXG4gICAgKVxuICAgICAgKG5hbWVTb0ZhciA9IG5hbWVTb0Zhci52YWx1ZSksXG4gICAgICAgICh0eXBlID0gbmV4dE5hbWVQcmVmaXggKyBnZXRFbGVtZW50S2V5KG5hbWVTb0ZhciwgaSsrKSksXG4gICAgICAgIChpbnZva2VDYWxsYmFjayArPSBtYXBJbnRvQXJyYXkoXG4gICAgICAgICAgbmFtZVNvRmFyLFxuICAgICAgICAgIGFycmF5LFxuICAgICAgICAgIGVzY2FwZWRQcmVmaXgsXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApKTtcbiAgZWxzZSBpZiAoXCJvYmplY3RcIiA9PT0gdHlwZSkge1xuICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBjaGlsZHJlbi50aGVuKVxuICAgICAgcmV0dXJuIG1hcEludG9BcnJheShcbiAgICAgICAgcmVzb2x2ZVRoZW5hYmxlKGNoaWxkcmVuKSxcbiAgICAgICAgYXJyYXksXG4gICAgICAgIGVzY2FwZWRQcmVmaXgsXG4gICAgICAgIG5hbWVTb0ZhcixcbiAgICAgICAgY2FsbGJhY2tcbiAgICAgICk7XG4gICAgYXJyYXkgPSBTdHJpbmcoY2hpbGRyZW4pO1xuICAgIHRocm93IEVycm9yKFxuICAgICAgXCJPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6IFwiICtcbiAgICAgICAgKFwiW29iamVjdCBPYmplY3RdXCIgPT09IGFycmF5XG4gICAgICAgICAgPyBcIm9iamVjdCB3aXRoIGtleXMge1wiICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oXCIsIFwiKSArIFwifVwiXG4gICAgICAgICAgOiBhcnJheSkgK1xuICAgICAgICBcIikuIElmIHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuLCB1c2UgYW4gYXJyYXkgaW5zdGVhZC5cIlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGludm9rZUNhbGxiYWNrO1xufVxuZnVuY3Rpb24gbWFwQ2hpbGRyZW4oY2hpbGRyZW4sIGZ1bmMsIGNvbnRleHQpIHtcbiAgaWYgKG51bGwgPT0gY2hpbGRyZW4pIHJldHVybiBjaGlsZHJlbjtcbiAgdmFyIHJlc3VsdCA9IFtdLFxuICAgIGNvdW50ID0gMDtcbiAgbWFwSW50b0FycmF5KGNoaWxkcmVuLCByZXN1bHQsIFwiXCIsIFwiXCIsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHJldHVybiBmdW5jLmNhbGwoY29udGV4dCwgY2hpbGQsIGNvdW50KyspO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGxhenlJbml0aWFsaXplcihwYXlsb2FkKSB7XG4gIGlmICgtMSA9PT0gcGF5bG9hZC5fc3RhdHVzKSB7XG4gICAgdmFyIGN0b3IgPSBwYXlsb2FkLl9yZXN1bHQ7XG4gICAgY3RvciA9IGN0b3IoKTtcbiAgICBjdG9yLnRoZW4oXG4gICAgICBmdW5jdGlvbiAobW9kdWxlT2JqZWN0KSB7XG4gICAgICAgIGlmICgwID09PSBwYXlsb2FkLl9zdGF0dXMgfHwgLTEgPT09IHBheWxvYWQuX3N0YXR1cylcbiAgICAgICAgICAocGF5bG9hZC5fc3RhdHVzID0gMSksIChwYXlsb2FkLl9yZXN1bHQgPSBtb2R1bGVPYmplY3QpO1xuICAgICAgfSxcbiAgICAgIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBpZiAoMCA9PT0gcGF5bG9hZC5fc3RhdHVzIHx8IC0xID09PSBwYXlsb2FkLl9zdGF0dXMpXG4gICAgICAgICAgKHBheWxvYWQuX3N0YXR1cyA9IDIpLCAocGF5bG9hZC5fcmVzdWx0ID0gZXJyb3IpO1xuICAgICAgfVxuICAgICk7XG4gICAgLTEgPT09IHBheWxvYWQuX3N0YXR1cyAmJiAoKHBheWxvYWQuX3N0YXR1cyA9IDApLCAocGF5bG9hZC5fcmVzdWx0ID0gY3RvcikpO1xuICB9XG4gIGlmICgxID09PSBwYXlsb2FkLl9zdGF0dXMpIHJldHVybiBwYXlsb2FkLl9yZXN1bHQuZGVmYXVsdDtcbiAgdGhyb3cgcGF5bG9hZC5fcmVzdWx0O1xufVxudmFyIHJlcG9ydEdsb2JhbEVycm9yID1cbiAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgcmVwb3J0RXJyb3JcbiAgICA/IHJlcG9ydEVycm9yXG4gICAgOiBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiB3aW5kb3cgJiZcbiAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB3aW5kb3cuRXJyb3JFdmVudFxuICAgICAgICApIHtcbiAgICAgICAgICB2YXIgZXZlbnQgPSBuZXcgd2luZG93LkVycm9yRXZlbnQoXCJlcnJvclwiLCB7XG4gICAgICAgICAgICBidWJibGVzOiAhMCxcbiAgICAgICAgICAgIGNhbmNlbGFibGU6ICEwLFxuICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIGVycm9yICYmXG4gICAgICAgICAgICAgIG51bGwgIT09IGVycm9yICYmXG4gICAgICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBlcnJvci5tZXNzYWdlXG4gICAgICAgICAgICAgICAgPyBTdHJpbmcoZXJyb3IubWVzc2FnZSlcbiAgICAgICAgICAgICAgICA6IFN0cmluZyhlcnJvciksXG4gICAgICAgICAgICBlcnJvcjogZXJyb3JcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoIXdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2ZW50KSkgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBwcm9jZXNzICYmXG4gICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgcHJvY2Vzcy5lbWl0XG4gICAgICAgICkge1xuICAgICAgICAgIHByb2Nlc3MuZW1pdChcInVuY2F1Z2h0RXhjZXB0aW9uXCIsIGVycm9yKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB9O1xuZnVuY3Rpb24gbm9vcCgpIHt9XG5leHBvcnRzLkNoaWxkcmVuID0ge1xuICBtYXA6IG1hcENoaWxkcmVuLFxuICBmb3JFYWNoOiBmdW5jdGlvbiAoY2hpbGRyZW4sIGZvckVhY2hGdW5jLCBmb3JFYWNoQ29udGV4dCkge1xuICAgIG1hcENoaWxkcmVuKFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvckVhY2hGdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgZm9yRWFjaENvbnRleHRcbiAgICApO1xuICB9LFxuICBjb3VudDogZnVuY3Rpb24gKGNoaWxkcmVuKSB7XG4gICAgdmFyIG4gPSAwO1xuICAgIG1hcENoaWxkcmVuKGNoaWxkcmVuLCBmdW5jdGlvbiAoKSB7XG4gICAgICBuKys7XG4gICAgfSk7XG4gICAgcmV0dXJuIG47XG4gIH0sXG4gIHRvQXJyYXk6IGZ1bmN0aW9uIChjaGlsZHJlbikge1xuICAgIHJldHVybiAoXG4gICAgICBtYXBDaGlsZHJlbihjaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgIH0pIHx8IFtdXG4gICAgKTtcbiAgfSxcbiAgb25seTogZnVuY3Rpb24gKGNoaWxkcmVuKSB7XG4gICAgaWYgKCFpc1ZhbGlkRWxlbWVudChjaGlsZHJlbikpXG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgXCJSZWFjdC5DaGlsZHJlbi5vbmx5IGV4cGVjdGVkIHRvIHJlY2VpdmUgYSBzaW5nbGUgUmVhY3QgZWxlbWVudCBjaGlsZC5cIlxuICAgICAgKTtcbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cbn07XG5leHBvcnRzLkNvbXBvbmVudCA9IENvbXBvbmVudDtcbmV4cG9ydHMuRnJhZ21lbnQgPSBSRUFDVF9GUkFHTUVOVF9UWVBFO1xuZXhwb3J0cy5Qcm9maWxlciA9IFJFQUNUX1BST0ZJTEVSX1RZUEU7XG5leHBvcnRzLlB1cmVDb21wb25lbnQgPSBQdXJlQ29tcG9uZW50O1xuZXhwb3J0cy5TdHJpY3RNb2RlID0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRTtcbmV4cG9ydHMuU3VzcGVuc2UgPSBSRUFDVF9TVVNQRU5TRV9UWVBFO1xuZXhwb3J0cy5fX0NMSUVOVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUgPVxuICBSZWFjdFNoYXJlZEludGVybmFscztcbmV4cG9ydHMuYWN0ID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBFcnJvcihcImFjdCguLi4pIGlzIG5vdCBzdXBwb3J0ZWQgaW4gcHJvZHVjdGlvbiBidWlsZHMgb2YgUmVhY3QuXCIpO1xufTtcbmV4cG9ydHMuY2FjaGUgPSBmdW5jdGlvbiAoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZm4uYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG5leHBvcnRzLmNsb25lRWxlbWVudCA9IGZ1bmN0aW9uIChlbGVtZW50LCBjb25maWcsIGNoaWxkcmVuKSB7XG4gIGlmIChudWxsID09PSBlbGVtZW50IHx8IHZvaWQgMCA9PT0gZWxlbWVudClcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgIFwiVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBSZWFjdCBlbGVtZW50LCBidXQgeW91IHBhc3NlZCBcIiArIGVsZW1lbnQgKyBcIi5cIlxuICAgICk7XG4gIHZhciBwcm9wcyA9IGFzc2lnbih7fSwgZWxlbWVudC5wcm9wcyksXG4gICAga2V5ID0gZWxlbWVudC5rZXksXG4gICAgb3duZXIgPSB2b2lkIDA7XG4gIGlmIChudWxsICE9IGNvbmZpZylcbiAgICBmb3IgKHByb3BOYW1lIGluICh2b2lkIDAgIT09IGNvbmZpZy5yZWYgJiYgKG93bmVyID0gdm9pZCAwKSxcbiAgICB2b2lkIDAgIT09IGNvbmZpZy5rZXkgJiYgKGtleSA9IFwiXCIgKyBjb25maWcua2V5KSxcbiAgICBjb25maWcpKVxuICAgICAgIWhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCBwcm9wTmFtZSkgfHxcbiAgICAgICAgXCJrZXlcIiA9PT0gcHJvcE5hbWUgfHxcbiAgICAgICAgXCJfX3NlbGZcIiA9PT0gcHJvcE5hbWUgfHxcbiAgICAgICAgXCJfX3NvdXJjZVwiID09PSBwcm9wTmFtZSB8fFxuICAgICAgICAoXCJyZWZcIiA9PT0gcHJvcE5hbWUgJiYgdm9pZCAwID09PSBjb25maWcucmVmKSB8fFxuICAgICAgICAocHJvcHNbcHJvcE5hbWVdID0gY29uZmlnW3Byb3BOYW1lXSk7XG4gIHZhciBwcm9wTmFtZSA9IGFyZ3VtZW50cy5sZW5ndGggLSAyO1xuICBpZiAoMSA9PT0gcHJvcE5hbWUpIHByb3BzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIGVsc2UgaWYgKDEgPCBwcm9wTmFtZSkge1xuICAgIGZvciAodmFyIGNoaWxkQXJyYXkgPSBBcnJheShwcm9wTmFtZSksIGkgPSAwOyBpIDwgcHJvcE5hbWU7IGkrKylcbiAgICAgIGNoaWxkQXJyYXlbaV0gPSBhcmd1bWVudHNbaSArIDJdO1xuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTtcbiAgfVxuICByZXR1cm4gUmVhY3RFbGVtZW50KGVsZW1lbnQudHlwZSwga2V5LCB2b2lkIDAsIHZvaWQgMCwgb3duZXIsIHByb3BzKTtcbn07XG5leHBvcnRzLmNyZWF0ZUNvbnRleHQgPSBmdW5jdGlvbiAoZGVmYXVsdFZhbHVlKSB7XG4gIGRlZmF1bHRWYWx1ZSA9IHtcbiAgICAkJHR5cGVvZjogUkVBQ1RfQ09OVEVYVF9UWVBFLFxuICAgIF9jdXJyZW50VmFsdWU6IGRlZmF1bHRWYWx1ZSxcbiAgICBfY3VycmVudFZhbHVlMjogZGVmYXVsdFZhbHVlLFxuICAgIF90aHJlYWRDb3VudDogMCxcbiAgICBQcm92aWRlcjogbnVsbCxcbiAgICBDb25zdW1lcjogbnVsbFxuICB9O1xuICBkZWZhdWx0VmFsdWUuUHJvdmlkZXIgPSBkZWZhdWx0VmFsdWU7XG4gIGRlZmF1bHRWYWx1ZS5Db25zdW1lciA9IHtcbiAgICAkJHR5cGVvZjogUkVBQ1RfQ09OU1VNRVJfVFlQRSxcbiAgICBfY29udGV4dDogZGVmYXVsdFZhbHVlXG4gIH07XG4gIHJldHVybiBkZWZhdWx0VmFsdWU7XG59O1xuZXhwb3J0cy5jcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24gKHR5cGUsIGNvbmZpZywgY2hpbGRyZW4pIHtcbiAgdmFyIHByb3BOYW1lLFxuICAgIHByb3BzID0ge30sXG4gICAga2V5ID0gbnVsbDtcbiAgaWYgKG51bGwgIT0gY29uZmlnKVxuICAgIGZvciAocHJvcE5hbWUgaW4gKHZvaWQgMCAhPT0gY29uZmlnLmtleSAmJiAoa2V5ID0gXCJcIiArIGNvbmZpZy5rZXkpLCBjb25maWcpKVxuICAgICAgaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsIHByb3BOYW1lKSAmJlxuICAgICAgICBcImtleVwiICE9PSBwcm9wTmFtZSAmJlxuICAgICAgICBcIl9fc2VsZlwiICE9PSBwcm9wTmFtZSAmJlxuICAgICAgICBcIl9fc291cmNlXCIgIT09IHByb3BOYW1lICYmXG4gICAgICAgIChwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdKTtcbiAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG4gIGlmICgxID09PSBjaGlsZHJlbkxlbmd0aCkgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgZWxzZSBpZiAoMSA8IGNoaWxkcmVuTGVuZ3RoKSB7XG4gICAgZm9yICh2YXIgY2hpbGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3RoKSwgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKVxuICAgICAgY2hpbGRBcnJheVtpXSA9IGFyZ3VtZW50c1tpICsgMl07XG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZEFycmF5O1xuICB9XG4gIGlmICh0eXBlICYmIHR5cGUuZGVmYXVsdFByb3BzKVxuICAgIGZvciAocHJvcE5hbWUgaW4gKChjaGlsZHJlbkxlbmd0aCA9IHR5cGUuZGVmYXVsdFByb3BzKSwgY2hpbGRyZW5MZW5ndGgpKVxuICAgICAgdm9pZCAwID09PSBwcm9wc1twcm9wTmFtZV0gJiZcbiAgICAgICAgKHByb3BzW3Byb3BOYW1lXSA9IGNoaWxkcmVuTGVuZ3RoW3Byb3BOYW1lXSk7XG4gIHJldHVybiBSZWFjdEVsZW1lbnQodHlwZSwga2V5LCB2b2lkIDAsIHZvaWQgMCwgbnVsbCwgcHJvcHMpO1xufTtcbmV4cG9ydHMuY3JlYXRlUmVmID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4geyBjdXJyZW50OiBudWxsIH07XG59O1xuZXhwb3J0cy5mb3J3YXJkUmVmID0gZnVuY3Rpb24gKHJlbmRlcikge1xuICByZXR1cm4geyAkJHR5cGVvZjogUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSwgcmVuZGVyOiByZW5kZXIgfTtcbn07XG5leHBvcnRzLmlzVmFsaWRFbGVtZW50ID0gaXNWYWxpZEVsZW1lbnQ7XG5leHBvcnRzLmxhenkgPSBmdW5jdGlvbiAoY3Rvcikge1xuICByZXR1cm4ge1xuICAgICQkdHlwZW9mOiBSRUFDVF9MQVpZX1RZUEUsXG4gICAgX3BheWxvYWQ6IHsgX3N0YXR1czogLTEsIF9yZXN1bHQ6IGN0b3IgfSxcbiAgICBfaW5pdDogbGF6eUluaXRpYWxpemVyXG4gIH07XG59O1xuZXhwb3J0cy5tZW1vID0gZnVuY3Rpb24gKHR5cGUsIGNvbXBhcmUpIHtcbiAgcmV0dXJuIHtcbiAgICAkJHR5cGVvZjogUkVBQ1RfTUVNT19UWVBFLFxuICAgIHR5cGU6IHR5cGUsXG4gICAgY29tcGFyZTogdm9pZCAwID09PSBjb21wYXJlID8gbnVsbCA6IGNvbXBhcmVcbiAgfTtcbn07XG5leHBvcnRzLnN0YXJ0VHJhbnNpdGlvbiA9IGZ1bmN0aW9uIChzY29wZSkge1xuICB2YXIgcHJldlRyYW5zaXRpb24gPSBSZWFjdFNoYXJlZEludGVybmFscy5ULFxuICAgIGN1cnJlbnRUcmFuc2l0aW9uID0ge307XG4gIFJlYWN0U2hhcmVkSW50ZXJuYWxzLlQgPSBjdXJyZW50VHJhbnNpdGlvbjtcbiAgdHJ5IHtcbiAgICB2YXIgcmV0dXJuVmFsdWUgPSBzY29wZSgpLFxuICAgICAgb25TdGFydFRyYW5zaXRpb25GaW5pc2ggPSBSZWFjdFNoYXJlZEludGVybmFscy5TO1xuICAgIG51bGwgIT09IG9uU3RhcnRUcmFuc2l0aW9uRmluaXNoICYmXG4gICAgICBvblN0YXJ0VHJhbnNpdGlvbkZpbmlzaChjdXJyZW50VHJhbnNpdGlvbiwgcmV0dXJuVmFsdWUpO1xuICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiByZXR1cm5WYWx1ZSAmJlxuICAgICAgbnVsbCAhPT0gcmV0dXJuVmFsdWUgJiZcbiAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHJldHVyblZhbHVlLnRoZW4gJiZcbiAgICAgIHJldHVyblZhbHVlLnRoZW4obm9vcCwgcmVwb3J0R2xvYmFsRXJyb3IpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcG9ydEdsb2JhbEVycm9yKGVycm9yKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBSZWFjdFNoYXJlZEludGVybmFscy5UID0gcHJldlRyYW5zaXRpb247XG4gIH1cbn07XG5leHBvcnRzLnVuc3RhYmxlX3VzZUNhY2hlUmVmcmVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlQ2FjaGVSZWZyZXNoKCk7XG59O1xuZXhwb3J0cy51c2UgPSBmdW5jdGlvbiAodXNhYmxlKSB7XG4gIHJldHVybiBSZWFjdFNoYXJlZEludGVybmFscy5ILnVzZSh1c2FibGUpO1xufTtcbmV4cG9ydHMudXNlQWN0aW9uU3RhdGUgPSBmdW5jdGlvbiAoYWN0aW9uLCBpbml0aWFsU3RhdGUsIHBlcm1hbGluaykge1xuICByZXR1cm4gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSC51c2VBY3Rpb25TdGF0ZShhY3Rpb24sIGluaXRpYWxTdGF0ZSwgcGVybWFsaW5rKTtcbn07XG5leHBvcnRzLnVzZUNhbGxiYWNrID0gZnVuY3Rpb24gKGNhbGxiYWNrLCBkZXBzKSB7XG4gIHJldHVybiBSZWFjdFNoYXJlZEludGVybmFscy5ILnVzZUNhbGxiYWNrKGNhbGxiYWNrLCBkZXBzKTtcbn07XG5leHBvcnRzLnVzZUNvbnRleHQgPSBmdW5jdGlvbiAoQ29udGV4dCkge1xuICByZXR1cm4gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSC51c2VDb250ZXh0KENvbnRleHQpO1xufTtcbmV4cG9ydHMudXNlRGVidWdWYWx1ZSA9IGZ1bmN0aW9uICgpIHt9O1xuZXhwb3J0cy51c2VEZWZlcnJlZFZhbHVlID0gZnVuY3Rpb24gKHZhbHVlLCBpbml0aWFsVmFsdWUpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlRGVmZXJyZWRWYWx1ZSh2YWx1ZSwgaW5pdGlhbFZhbHVlKTtcbn07XG5leHBvcnRzLnVzZUVmZmVjdCA9IGZ1bmN0aW9uIChjcmVhdGUsIGRlcHMpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlRWZmZWN0KGNyZWF0ZSwgZGVwcyk7XG59O1xuZXhwb3J0cy51c2VJZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlSWQoKTtcbn07XG5leHBvcnRzLnVzZUltcGVyYXRpdmVIYW5kbGUgPSBmdW5jdGlvbiAocmVmLCBjcmVhdGUsIGRlcHMpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsIGNyZWF0ZSwgZGVwcyk7XG59O1xuZXhwb3J0cy51c2VJbnNlcnRpb25FZmZlY3QgPSBmdW5jdGlvbiAoY3JlYXRlLCBkZXBzKSB7XG4gIHJldHVybiBSZWFjdFNoYXJlZEludGVybmFscy5ILnVzZUluc2VydGlvbkVmZmVjdChjcmVhdGUsIGRlcHMpO1xufTtcbmV4cG9ydHMudXNlTGF5b3V0RWZmZWN0ID0gZnVuY3Rpb24gKGNyZWF0ZSwgZGVwcykge1xuICByZXR1cm4gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSC51c2VMYXlvdXRFZmZlY3QoY3JlYXRlLCBkZXBzKTtcbn07XG5leHBvcnRzLnVzZU1lbW8gPSBmdW5jdGlvbiAoY3JlYXRlLCBkZXBzKSB7XG4gIHJldHVybiBSZWFjdFNoYXJlZEludGVybmFscy5ILnVzZU1lbW8oY3JlYXRlLCBkZXBzKTtcbn07XG5leHBvcnRzLnVzZU9wdGltaXN0aWMgPSBmdW5jdGlvbiAocGFzc3Rocm91Z2gsIHJlZHVjZXIpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlT3B0aW1pc3RpYyhwYXNzdGhyb3VnaCwgcmVkdWNlcik7XG59O1xuZXhwb3J0cy51c2VSZWR1Y2VyID0gZnVuY3Rpb24gKHJlZHVjZXIsIGluaXRpYWxBcmcsIGluaXQpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlUmVkdWNlcihyZWR1Y2VyLCBpbml0aWFsQXJnLCBpbml0KTtcbn07XG5leHBvcnRzLnVzZVJlZiA9IGZ1bmN0aW9uIChpbml0aWFsVmFsdWUpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlUmVmKGluaXRpYWxWYWx1ZSk7XG59O1xuZXhwb3J0cy51c2VTdGF0ZSA9IGZ1bmN0aW9uIChpbml0aWFsU3RhdGUpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlU3RhdGUoaW5pdGlhbFN0YXRlKTtcbn07XG5leHBvcnRzLnVzZVN5bmNFeHRlcm5hbFN0b3JlID0gZnVuY3Rpb24gKFxuICBzdWJzY3JpYmUsXG4gIGdldFNuYXBzaG90LFxuICBnZXRTZXJ2ZXJTbmFwc2hvdFxuKSB7XG4gIHJldHVybiBSZWFjdFNoYXJlZEludGVybmFscy5ILnVzZVN5bmNFeHRlcm5hbFN0b3JlKFxuICAgIHN1YnNjcmliZSxcbiAgICBnZXRTbmFwc2hvdCxcbiAgICBnZXRTZXJ2ZXJTbmFwc2hvdFxuICApO1xufTtcbmV4cG9ydHMudXNlVHJhbnNpdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlVHJhbnNpdGlvbigpO1xufTtcbmV4cG9ydHMudmVyc2lvbiA9IFwiMTkuMC4wXCI7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QucHJvZHVjdGlvbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtZG9tLnByb2R1Y3Rpb24uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xuZnVuY3Rpb24gZm9ybWF0UHJvZEVycm9yTWVzc2FnZShjb2RlKSB7XG4gIHZhciB1cmwgPSBcImh0dHBzOi8vcmVhY3QuZGV2L2Vycm9ycy9cIiArIGNvZGU7XG4gIGlmICgxIDwgYXJndW1lbnRzLmxlbmd0aCkge1xuICAgIHVybCArPSBcIj9hcmdzW109XCIgKyBlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzWzFdKTtcbiAgICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcbiAgICAgIHVybCArPSBcIiZhcmdzW109XCIgKyBlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW2ldKTtcbiAgfVxuICByZXR1cm4gKFxuICAgIFwiTWluaWZpZWQgUmVhY3QgZXJyb3IgI1wiICtcbiAgICBjb2RlICtcbiAgICBcIjsgdmlzaXQgXCIgK1xuICAgIHVybCArXG4gICAgXCIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLlwiXG4gICk7XG59XG5mdW5jdGlvbiBub29wKCkge31cbnZhciBJbnRlcm5hbHMgPSB7XG4gICAgZDoge1xuICAgICAgZjogbm9vcCxcbiAgICAgIHI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg1MjIpKTtcbiAgICAgIH0sXG4gICAgICBEOiBub29wLFxuICAgICAgQzogbm9vcCxcbiAgICAgIEw6IG5vb3AsXG4gICAgICBtOiBub29wLFxuICAgICAgWDogbm9vcCxcbiAgICAgIFM6IG5vb3AsXG4gICAgICBNOiBub29wXG4gICAgfSxcbiAgICBwOiAwLFxuICAgIGZpbmRET01Ob2RlOiBudWxsXG4gIH0sXG4gIFJFQUNUX1BPUlRBTF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKTtcbmZ1bmN0aW9uIGNyZWF0ZVBvcnRhbCQxKGNoaWxkcmVuLCBjb250YWluZXJJbmZvLCBpbXBsZW1lbnRhdGlvbikge1xuICB2YXIga2V5ID1cbiAgICAzIDwgYXJndW1lbnRzLmxlbmd0aCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1szXSA/IGFyZ3VtZW50c1szXSA6IG51bGw7XG4gIHJldHVybiB7XG4gICAgJCR0eXBlb2Y6IFJFQUNUX1BPUlRBTF9UWVBFLFxuICAgIGtleTogbnVsbCA9PSBrZXkgPyBudWxsIDogXCJcIiArIGtleSxcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4sXG4gICAgY29udGFpbmVySW5mbzogY29udGFpbmVySW5mbyxcbiAgICBpbXBsZW1lbnRhdGlvbjogaW1wbGVtZW50YXRpb25cbiAgfTtcbn1cbnZhciBSZWFjdFNoYXJlZEludGVybmFscyA9XG4gIFJlYWN0Ll9fQ0xJRU5UX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERTtcbmZ1bmN0aW9uIGdldENyb3NzT3JpZ2luU3RyaW5nQXMoYXMsIGlucHV0KSB7XG4gIGlmIChcImZvbnRcIiA9PT0gYXMpIHJldHVybiBcIlwiO1xuICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGlucHV0KVxuICAgIHJldHVybiBcInVzZS1jcmVkZW50aWFsc1wiID09PSBpbnB1dCA/IGlucHV0IDogXCJcIjtcbn1cbmV4cG9ydHMuX19ET01fSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfV0FSTl9VU0VSU19USEVZX0NBTk5PVF9VUEdSQURFID1cbiAgSW50ZXJuYWxzO1xuZXhwb3J0cy5jcmVhdGVQb3J0YWwgPSBmdW5jdGlvbiAoY2hpbGRyZW4sIGNvbnRhaW5lcikge1xuICB2YXIga2V5ID1cbiAgICAyIDwgYXJndW1lbnRzLmxlbmd0aCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1syXSA/IGFyZ3VtZW50c1syXSA6IG51bGw7XG4gIGlmIChcbiAgICAhY29udGFpbmVyIHx8XG4gICAgKDEgIT09IGNvbnRhaW5lci5ub2RlVHlwZSAmJlxuICAgICAgOSAhPT0gY29udGFpbmVyLm5vZGVUeXBlICYmXG4gICAgICAxMSAhPT0gY29udGFpbmVyLm5vZGVUeXBlKVxuICApXG4gICAgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgyOTkpKTtcbiAgcmV0dXJuIGNyZWF0ZVBvcnRhbCQxKGNoaWxkcmVuLCBjb250YWluZXIsIG51bGwsIGtleSk7XG59O1xuZXhwb3J0cy5mbHVzaFN5bmMgPSBmdW5jdGlvbiAoZm4pIHtcbiAgdmFyIHByZXZpb3VzVHJhbnNpdGlvbiA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlQsXG4gICAgcHJldmlvdXNVcGRhdGVQcmlvcml0eSA9IEludGVybmFscy5wO1xuICB0cnkge1xuICAgIGlmICgoKFJlYWN0U2hhcmVkSW50ZXJuYWxzLlQgPSBudWxsKSwgKEludGVybmFscy5wID0gMiksIGZuKSkgcmV0dXJuIGZuKCk7XG4gIH0gZmluYWxseSB7XG4gICAgKFJlYWN0U2hhcmVkSW50ZXJuYWxzLlQgPSBwcmV2aW91c1RyYW5zaXRpb24pLFxuICAgICAgKEludGVybmFscy5wID0gcHJldmlvdXNVcGRhdGVQcmlvcml0eSksXG4gICAgICBJbnRlcm5hbHMuZC5mKCk7XG4gIH1cbn07XG5leHBvcnRzLnByZWNvbm5lY3QgPSBmdW5jdGlvbiAoaHJlZiwgb3B0aW9ucykge1xuICBcInN0cmluZ1wiID09PSB0eXBlb2YgaHJlZiAmJlxuICAgIChvcHRpb25zXG4gICAgICA/ICgob3B0aW9ucyA9IG9wdGlvbnMuY3Jvc3NPcmlnaW4pLFxuICAgICAgICAob3B0aW9ucyA9XG4gICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnNcbiAgICAgICAgICAgID8gXCJ1c2UtY3JlZGVudGlhbHNcIiA9PT0gb3B0aW9uc1xuICAgICAgICAgICAgICA/IG9wdGlvbnNcbiAgICAgICAgICAgICAgOiBcIlwiXG4gICAgICAgICAgICA6IHZvaWQgMCkpXG4gICAgICA6IChvcHRpb25zID0gbnVsbCksXG4gICAgSW50ZXJuYWxzLmQuQyhocmVmLCBvcHRpb25zKSk7XG59O1xuZXhwb3J0cy5wcmVmZXRjaEROUyA9IGZ1bmN0aW9uIChocmVmKSB7XG4gIFwic3RyaW5nXCIgPT09IHR5cGVvZiBocmVmICYmIEludGVybmFscy5kLkQoaHJlZik7XG59O1xuZXhwb3J0cy5wcmVpbml0ID0gZnVuY3Rpb24gKGhyZWYsIG9wdGlvbnMpIHtcbiAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiBocmVmICYmIG9wdGlvbnMgJiYgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMuYXMpIHtcbiAgICB2YXIgYXMgPSBvcHRpb25zLmFzLFxuICAgICAgY3Jvc3NPcmlnaW4gPSBnZXRDcm9zc09yaWdpblN0cmluZ0FzKGFzLCBvcHRpb25zLmNyb3NzT3JpZ2luKSxcbiAgICAgIGludGVncml0eSA9XG4gICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLmludGVncml0eSA/IG9wdGlvbnMuaW50ZWdyaXR5IDogdm9pZCAwLFxuICAgICAgZmV0Y2hQcmlvcml0eSA9XG4gICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLmZldGNoUHJpb3JpdHlcbiAgICAgICAgICA/IG9wdGlvbnMuZmV0Y2hQcmlvcml0eVxuICAgICAgICAgIDogdm9pZCAwO1xuICAgIFwic3R5bGVcIiA9PT0gYXNcbiAgICAgID8gSW50ZXJuYWxzLmQuUyhcbiAgICAgICAgICBocmVmLFxuICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLnByZWNlZGVuY2UgPyBvcHRpb25zLnByZWNlZGVuY2UgOiB2b2lkIDAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY3Jvc3NPcmlnaW46IGNyb3NzT3JpZ2luLFxuICAgICAgICAgICAgaW50ZWdyaXR5OiBpbnRlZ3JpdHksXG4gICAgICAgICAgICBmZXRjaFByaW9yaXR5OiBmZXRjaFByaW9yaXR5XG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICA6IFwic2NyaXB0XCIgPT09IGFzICYmXG4gICAgICAgIEludGVybmFscy5kLlgoaHJlZiwge1xuICAgICAgICAgIGNyb3NzT3JpZ2luOiBjcm9zc09yaWdpbixcbiAgICAgICAgICBpbnRlZ3JpdHk6IGludGVncml0eSxcbiAgICAgICAgICBmZXRjaFByaW9yaXR5OiBmZXRjaFByaW9yaXR5LFxuICAgICAgICAgIG5vbmNlOiBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5ub25jZSA/IG9wdGlvbnMubm9uY2UgOiB2b2lkIDBcbiAgICAgICAgfSk7XG4gIH1cbn07XG5leHBvcnRzLnByZWluaXRNb2R1bGUgPSBmdW5jdGlvbiAoaHJlZiwgb3B0aW9ucykge1xuICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGhyZWYpXG4gICAgaWYgKFwib2JqZWN0XCIgPT09IHR5cGVvZiBvcHRpb25zICYmIG51bGwgIT09IG9wdGlvbnMpIHtcbiAgICAgIGlmIChudWxsID09IG9wdGlvbnMuYXMgfHwgXCJzY3JpcHRcIiA9PT0gb3B0aW9ucy5hcykge1xuICAgICAgICB2YXIgY3Jvc3NPcmlnaW4gPSBnZXRDcm9zc09yaWdpblN0cmluZ0FzKFxuICAgICAgICAgIG9wdGlvbnMuYXMsXG4gICAgICAgICAgb3B0aW9ucy5jcm9zc09yaWdpblxuICAgICAgICApO1xuICAgICAgICBJbnRlcm5hbHMuZC5NKGhyZWYsIHtcbiAgICAgICAgICBjcm9zc09yaWdpbjogY3Jvc3NPcmlnaW4sXG4gICAgICAgICAgaW50ZWdyaXR5OlxuICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMuaW50ZWdyaXR5ID8gb3B0aW9ucy5pbnRlZ3JpdHkgOiB2b2lkIDAsXG4gICAgICAgICAgbm9uY2U6IFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLm5vbmNlID8gb3B0aW9ucy5ub25jZSA6IHZvaWQgMFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgbnVsbCA9PSBvcHRpb25zICYmIEludGVybmFscy5kLk0oaHJlZik7XG59O1xuZXhwb3J0cy5wcmVsb2FkID0gZnVuY3Rpb24gKGhyZWYsIG9wdGlvbnMpIHtcbiAgaWYgKFxuICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBocmVmICYmXG4gICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIG9wdGlvbnMgJiZcbiAgICBudWxsICE9PSBvcHRpb25zICYmXG4gICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMuYXNcbiAgKSB7XG4gICAgdmFyIGFzID0gb3B0aW9ucy5hcyxcbiAgICAgIGNyb3NzT3JpZ2luID0gZ2V0Q3Jvc3NPcmlnaW5TdHJpbmdBcyhhcywgb3B0aW9ucy5jcm9zc09yaWdpbik7XG4gICAgSW50ZXJuYWxzLmQuTChocmVmLCBhcywge1xuICAgICAgY3Jvc3NPcmlnaW46IGNyb3NzT3JpZ2luLFxuICAgICAgaW50ZWdyaXR5OlxuICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5pbnRlZ3JpdHkgPyBvcHRpb25zLmludGVncml0eSA6IHZvaWQgMCxcbiAgICAgIG5vbmNlOiBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5ub25jZSA/IG9wdGlvbnMubm9uY2UgOiB2b2lkIDAsXG4gICAgICB0eXBlOiBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy50eXBlID8gb3B0aW9ucy50eXBlIDogdm9pZCAwLFxuICAgICAgZmV0Y2hQcmlvcml0eTpcbiAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMuZmV0Y2hQcmlvcml0eVxuICAgICAgICAgID8gb3B0aW9ucy5mZXRjaFByaW9yaXR5XG4gICAgICAgICAgOiB2b2lkIDAsXG4gICAgICByZWZlcnJlclBvbGljeTpcbiAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMucmVmZXJyZXJQb2xpY3lcbiAgICAgICAgICA/IG9wdGlvbnMucmVmZXJyZXJQb2xpY3lcbiAgICAgICAgICA6IHZvaWQgMCxcbiAgICAgIGltYWdlU3JjU2V0OlxuICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5pbWFnZVNyY1NldCA/IG9wdGlvbnMuaW1hZ2VTcmNTZXQgOiB2b2lkIDAsXG4gICAgICBpbWFnZVNpemVzOlxuICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5pbWFnZVNpemVzID8gb3B0aW9ucy5pbWFnZVNpemVzIDogdm9pZCAwLFxuICAgICAgbWVkaWE6IFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLm1lZGlhID8gb3B0aW9ucy5tZWRpYSA6IHZvaWQgMFxuICAgIH0pO1xuICB9XG59O1xuZXhwb3J0cy5wcmVsb2FkTW9kdWxlID0gZnVuY3Rpb24gKGhyZWYsIG9wdGlvbnMpIHtcbiAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiBocmVmKVxuICAgIGlmIChvcHRpb25zKSB7XG4gICAgICB2YXIgY3Jvc3NPcmlnaW4gPSBnZXRDcm9zc09yaWdpblN0cmluZ0FzKG9wdGlvbnMuYXMsIG9wdGlvbnMuY3Jvc3NPcmlnaW4pO1xuICAgICAgSW50ZXJuYWxzLmQubShocmVmLCB7XG4gICAgICAgIGFzOlxuICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLmFzICYmIFwic2NyaXB0XCIgIT09IG9wdGlvbnMuYXNcbiAgICAgICAgICAgID8gb3B0aW9ucy5hc1xuICAgICAgICAgICAgOiB2b2lkIDAsXG4gICAgICAgIGNyb3NzT3JpZ2luOiBjcm9zc09yaWdpbixcbiAgICAgICAgaW50ZWdyaXR5OlxuICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLmludGVncml0eSA/IG9wdGlvbnMuaW50ZWdyaXR5IDogdm9pZCAwXG4gICAgICB9KTtcbiAgICB9IGVsc2UgSW50ZXJuYWxzLmQubShocmVmKTtcbn07XG5leHBvcnRzLnJlcXVlc3RGb3JtUmVzZXQgPSBmdW5jdGlvbiAoZm9ybSkge1xuICBJbnRlcm5hbHMuZC5yKGZvcm0pO1xufTtcbmV4cG9ydHMudW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMgPSBmdW5jdGlvbiAoZm4sIGEpIHtcbiAgcmV0dXJuIGZuKGEpO1xufTtcbmV4cG9ydHMudXNlRm9ybVN0YXRlID0gZnVuY3Rpb24gKGFjdGlvbiwgaW5pdGlhbFN0YXRlLCBwZXJtYWxpbmspIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlRm9ybVN0YXRlKGFjdGlvbiwgaW5pdGlhbFN0YXRlLCBwZXJtYWxpbmspO1xufTtcbmV4cG9ydHMudXNlRm9ybVN0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlSG9zdFRyYW5zaXRpb25TdGF0dXMoKTtcbn07XG5leHBvcnRzLnZlcnNpb24gPSBcIjE5LjAuMFwiO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBjaGVja0RDRSgpIHtcbiAgLyogZ2xvYmFsIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAqL1xuICBpZiAoXG4gICAgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFICE9PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIFRoaXMgYnJhbmNoIGlzIHVucmVhY2hhYmxlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZFxuICAgIC8vIGluIHByb2R1Y3Rpb24sIGJ1dCB0aGUgY29uZGl0aW9uIGlzIHRydWUgb25seSBpbiBkZXZlbG9wbWVudC5cbiAgICAvLyBUaGVyZWZvcmUgaWYgdGhlIGJyYW5jaCBpcyBzdGlsbCBoZXJlLCBkZWFkIGNvZGUgZWxpbWluYXRpb24gd2Fzbid0XG4gICAgLy8gcHJvcGVybHkgYXBwbGllZC5cbiAgICAvLyBEb24ndCBjaGFuZ2UgdGhlIG1lc3NhZ2UuIFJlYWN0IERldlRvb2xzIHJlbGllcyBvbiBpdC4gQWxzbyBtYWtlIHN1cmVcbiAgICAvLyB0aGlzIG1lc3NhZ2UgZG9lc24ndCBvY2N1ciBlbHNld2hlcmUgaW4gdGhpcyBmdW5jdGlvbiwgb3IgaXQgd2lsbCBjYXVzZVxuICAgIC8vIGEgZmFsc2UgcG9zaXRpdmUuXG4gICAgdGhyb3cgbmV3IEVycm9yKCdeX14nKTtcbiAgfVxuICB0cnkge1xuICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBjb2RlIGFib3ZlIGhhcyBiZWVuIGRlYWQgY29kZSBlbGltaW5hdGVkIChEQ0UnZCkuXG4gICAgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKGNoZWNrRENFKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gRGV2VG9vbHMgc2hvdWxkbid0IGNyYXNoIFJlYWN0LCBubyBtYXR0ZXIgd2hhdC5cbiAgICAvLyBXZSBzaG91bGQgc3RpbGwgcmVwb3J0IGluIGNhc2Ugd2UgYnJlYWsgdGhpcyBjb2RlLlxuICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgfVxufVxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAvLyBEQ0UgY2hlY2sgc2hvdWxkIGhhcHBlbiBiZWZvcmUgUmVhY3RET00gYnVuZGxlIGV4ZWN1dGVzIHNvIHRoYXRcbiAgLy8gRGV2VG9vbHMgY2FuIHJlcG9ydCBiYWQgbWluaWZpY2F0aW9uIGR1cmluZyBpbmplY3Rpb24uXG4gIGNoZWNrRENFKCk7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLnByb2R1Y3Rpb24uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIvKipcbiAqIEN1c3RvbSBwb3NpdGlvbmluZyByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy92aXJ0dWFsLWVsZW1lbnRzXG4gKi9cblxuY29uc3Qgc2lkZXMgPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddO1xuY29uc3QgYWxpZ25tZW50cyA9IFsnc3RhcnQnLCAnZW5kJ107XG5jb25zdCBwbGFjZW1lbnRzID0gLyojX19QVVJFX18qL3NpZGVzLnJlZHVjZSgoYWNjLCBzaWRlKSA9PiBhY2MuY29uY2F0KHNpZGUsIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMF0sIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMV0pLCBbXSk7XG5jb25zdCBtaW4gPSBNYXRoLm1pbjtcbmNvbnN0IG1heCA9IE1hdGgubWF4O1xuY29uc3Qgcm91bmQgPSBNYXRoLnJvdW5kO1xuY29uc3QgZmxvb3IgPSBNYXRoLmZsb29yO1xuY29uc3QgY3JlYXRlQ29vcmRzID0gdiA9PiAoe1xuICB4OiB2LFxuICB5OiB2XG59KTtcbmNvbnN0IG9wcG9zaXRlU2lkZU1hcCA9IHtcbiAgbGVmdDogJ3JpZ2h0JyxcbiAgcmlnaHQ6ICdsZWZ0JyxcbiAgYm90dG9tOiAndG9wJyxcbiAgdG9wOiAnYm90dG9tJ1xufTtcbmNvbnN0IG9wcG9zaXRlQWxpZ25tZW50TWFwID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmZ1bmN0aW9uIGNsYW1wKHN0YXJ0LCB2YWx1ZSwgZW5kKSB7XG4gIHJldHVybiBtYXgoc3RhcnQsIG1pbih2YWx1ZSwgZW5kKSk7XG59XG5mdW5jdGlvbiBldmFsdWF0ZSh2YWx1ZSwgcGFyYW0pIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHBhcmFtKSA6IHZhbHVlO1xufVxuZnVuY3Rpb24gZ2V0U2lkZShwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufVxuZnVuY3Rpb24gZ2V0QXhpc0xlbmd0aChheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG59XG5mdW5jdGlvbiBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSkgPyAneScgOiAneCc7XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCkge1xuICByZXR1cm4gZ2V0T3Bwb3NpdGVBeGlzKGdldFNpZGVBeGlzKHBsYWNlbWVudCkpO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKSB7XG4gIGlmIChydGwgPT09IHZvaWQgMCkge1xuICAgIHJ0bCA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnRBeGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBsZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGFsaWdubWVudEF4aXMpO1xuICBsZXQgbWFpbkFsaWdubWVudFNpZGUgPSBhbGlnbm1lbnRBeGlzID09PSAneCcgPyBhbGlnbm1lbnQgPT09IChydGwgPyAnZW5kJyA6ICdzdGFydCcpID8gJ3JpZ2h0JyA6ICdsZWZ0JyA6IGFsaWdubWVudCA9PT0gJ3N0YXJ0JyA/ICdib3R0b20nIDogJ3RvcCc7XG4gIGlmIChyZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSA+IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF0pIHtcbiAgICBtYWluQWxpZ25tZW50U2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKTtcbiAgfVxuICByZXR1cm4gW21haW5BbGlnbm1lbnRTaWRlLCBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluQWxpZ25tZW50U2lkZSldO1xufVxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKHBsYWNlbWVudCkge1xuICBjb25zdCBvcHBvc2l0ZVBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHJldHVybiBbZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSwgb3Bwb3NpdGVQbGFjZW1lbnQsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KG9wcG9zaXRlUGxhY2VtZW50KV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9zdGFydHxlbmQvZywgYWxpZ25tZW50ID0+IG9wcG9zaXRlQWxpZ25tZW50TWFwW2FsaWdubWVudF0pO1xufVxuZnVuY3Rpb24gZ2V0U2lkZUxpc3Qoc2lkZSwgaXNTdGFydCwgcnRsKSB7XG4gIGNvbnN0IGxyID0gWydsZWZ0JywgJ3JpZ2h0J107XG4gIGNvbnN0IHJsID0gWydyaWdodCcsICdsZWZ0J107XG4gIGNvbnN0IHRiID0gWyd0b3AnLCAnYm90dG9tJ107XG4gIGNvbnN0IGJ0ID0gWydib3R0b20nLCAndG9wJ107XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGlmIChydGwpIHJldHVybiBpc1N0YXJ0ID8gcmwgOiBscjtcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gbHIgOiBybDtcbiAgICBjYXNlICdsZWZ0JzpcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICByZXR1cm4gaXNTdGFydCA/IHRiIDogYnQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBbXTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhwbGFjZW1lbnQsIGZsaXBBbGlnbm1lbnQsIGRpcmVjdGlvbiwgcnRsKSB7XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBsZXQgbGlzdCA9IGdldFNpZGVMaXN0KGdldFNpZGUocGxhY2VtZW50KSwgZGlyZWN0aW9uID09PSAnc3RhcnQnLCBydGwpO1xuICBpZiAoYWxpZ25tZW50KSB7XG4gICAgbGlzdCA9IGxpc3QubWFwKHNpZGUgPT4gc2lkZSArIFwiLVwiICsgYWxpZ25tZW50KTtcbiAgICBpZiAoZmxpcEFsaWdubWVudCkge1xuICAgICAgbGlzdCA9IGxpc3QuY29uY2F0KGxpc3QubWFwKGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsaXN0O1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIHNpZGUgPT4gb3Bwb3NpdGVTaWRlTWFwW3NpZGVdKTtcbn1cbmZ1bmN0aW9uIGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICAuLi5wYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykgOiB7XG4gICAgdG9wOiBwYWRkaW5nLFxuICAgIHJpZ2h0OiBwYWRkaW5nLFxuICAgIGJvdHRvbTogcGFkZGluZyxcbiAgICBsZWZ0OiBwYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KHJlY3QpIHtcbiAgY29uc3Qge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IHJlY3Q7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHRvcDogeSxcbiAgICBsZWZ0OiB4LFxuICAgIHJpZ2h0OiB4ICsgd2lkdGgsXG4gICAgYm90dG9tOiB5ICsgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5leHBvcnQgeyBhbGlnbm1lbnRzLCBjbGFtcCwgY3JlYXRlQ29vcmRzLCBldmFsdWF0ZSwgZXhwYW5kUGFkZGluZ09iamVjdCwgZmxvb3IsIGdldEFsaWdubWVudCwgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldEF4aXNMZW5ndGgsIGdldEV4cGFuZGVkUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQsIGdldE9wcG9zaXRlQXhpcywgZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQsIGdldFBhZGRpbmdPYmplY3QsIGdldFNpZGUsIGdldFNpZGVBeGlzLCBtYXgsIG1pbiwgcGxhY2VtZW50cywgcmVjdFRvQ2xpZW50UmVjdCwgcm91bmQsIHNpZGVzIH07XG4iLCJpbXBvcnQgeyBnZXRTaWRlQXhpcywgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QXhpc0xlbmd0aCwgZ2V0U2lkZSwgZ2V0QWxpZ25tZW50LCBldmFsdWF0ZSwgZ2V0UGFkZGluZ09iamVjdCwgcmVjdFRvQ2xpZW50UmVjdCwgbWluLCBjbGFtcCwgcGxhY2VtZW50cywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50LCBnZXRPcHBvc2l0ZVBsYWNlbWVudCwgZ2V0RXhwYW5kZWRQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzLCBzaWRlcywgbWF4LCBnZXRPcHBvc2l0ZUF4aXMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuZXhwb3J0IHsgcmVjdFRvQ2xpZW50UmVjdCB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5cbmZ1bmN0aW9uIGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KF9yZWYsIHBsYWNlbWVudCwgcnRsKSB7XG4gIGxldCB7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nXG4gIH0gPSBfcmVmO1xuICBjb25zdCBzaWRlQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudEF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWduTGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChhbGlnbm1lbnRBeGlzKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IHNpZGVBeGlzID09PSAneSc7XG4gIGNvbnN0IGNvbW1vblggPSByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCAvIDIgLSBmbG9hdGluZy53aWR0aCAvIDI7XG4gIGNvbnN0IGNvbW1vblkgPSByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHQgLyAyIC0gZmxvYXRpbmcuaGVpZ2h0IC8gMjtcbiAgY29uc3QgY29tbW9uQWxpZ24gPSByZWZlcmVuY2VbYWxpZ25MZW5ndGhdIC8gMiAtIGZsb2F0aW5nW2FsaWduTGVuZ3RoXSAvIDI7XG4gIGxldCBjb29yZHM7XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55IC0gZmxvYXRpbmcuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGZsb2F0aW5nLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG4gIHN3aXRjaCAoZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkpIHtcbiAgICBjYXNlICdzdGFydCc6XG4gICAgICBjb29yZHNbYWxpZ25tZW50QXhpc10gLT0gY29tbW9uQWxpZ24gKiAocnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZW5kJzpcbiAgICAgIGNvb3Jkc1thbGlnbm1lbnRBeGlzXSArPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gY29vcmRzO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSBnaXZlbiByZWZlcmVuY2UgZWxlbWVudC5cbiAqXG4gKiBUaGlzIGV4cG9ydCBkb2VzIG5vdCBoYXZlIGFueSBgcGxhdGZvcm1gIGludGVyZmFjZSBsb2dpYy4gWW91IHdpbGwgbmVlZCB0b1xuICogd3JpdGUgb25lIGZvciB0aGUgcGxhdGZvcm0geW91IGFyZSB1c2luZyBGbG9hdGluZyBVSSB3aXRoLlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSBhc3luYyAocmVmZXJlbmNlLCBmbG9hdGluZywgY29uZmlnKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQgPSAnYm90dG9tJyxcbiAgICBzdHJhdGVneSA9ICdhYnNvbHV0ZScsXG4gICAgbWlkZGxld2FyZSA9IFtdLFxuICAgIHBsYXRmb3JtXG4gIH0gPSBjb25maWc7XG4gIGNvbnN0IHZhbGlkTWlkZGxld2FyZSA9IG1pZGRsZXdhcmUuZmlsdGVyKEJvb2xlYW4pO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGZsb2F0aW5nKSk7XG4gIGxldCByZWN0cyA9IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nLFxuICAgIHN0cmF0ZWd5XG4gIH0pO1xuICBsZXQge1xuICAgIHgsXG4gICAgeVxuICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHBsYWNlbWVudCwgcnRsKTtcbiAgbGV0IHN0YXRlZnVsUGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICBsZXQgbWlkZGxld2FyZURhdGEgPSB7fTtcbiAgbGV0IHJlc2V0Q291bnQgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbGlkTWlkZGxld2FyZS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHtcbiAgICAgIG5hbWUsXG4gICAgICBmblxuICAgIH0gPSB2YWxpZE1pZGRsZXdhcmVbaV07XG4gICAgY29uc3Qge1xuICAgICAgeDogbmV4dFgsXG4gICAgICB5OiBuZXh0WSxcbiAgICAgIGRhdGEsXG4gICAgICByZXNldFxuICAgIH0gPSBhd2FpdCBmbih7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIGluaXRpYWxQbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgICBzdHJhdGVneSxcbiAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgZmxvYXRpbmdcbiAgICAgIH1cbiAgICB9KTtcbiAgICB4ID0gbmV4dFggIT0gbnVsbCA/IG5leHRYIDogeDtcbiAgICB5ID0gbmV4dFkgIT0gbnVsbCA/IG5leHRZIDogeTtcbiAgICBtaWRkbGV3YXJlRGF0YSA9IHtcbiAgICAgIC4uLm1pZGRsZXdhcmVEYXRhLFxuICAgICAgW25hbWVdOiB7XG4gICAgICAgIC4uLm1pZGRsZXdhcmVEYXRhW25hbWVdLFxuICAgICAgICAuLi5kYXRhXG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAocmVzZXQgJiYgcmVzZXRDb3VudCA8PSA1MCkge1xuICAgICAgcmVzZXRDb3VudCsrO1xuICAgICAgaWYgKHR5cGVvZiByZXNldCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKHJlc2V0LnBsYWNlbWVudCkge1xuICAgICAgICAgIHN0YXRlZnVsUGxhY2VtZW50ID0gcmVzZXQucGxhY2VtZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNldC5yZWN0cykge1xuICAgICAgICAgIHJlY3RzID0gcmVzZXQucmVjdHMgPT09IHRydWUgPyBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgICAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICAgICAgZmxvYXRpbmcsXG4gICAgICAgICAgICBzdHJhdGVneVxuICAgICAgICAgIH0pIDogcmVzZXQucmVjdHM7XG4gICAgICAgIH1cbiAgICAgICAgKHtcbiAgICAgICAgICB4LFxuICAgICAgICAgIHlcbiAgICAgICAgfSA9IGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KHJlY3RzLCBzdGF0ZWZ1bFBsYWNlbWVudCwgcnRsKSk7XG4gICAgICB9XG4gICAgICBpID0gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgc3RyYXRlZ3ksXG4gICAgbWlkZGxld2FyZURhdGFcbiAgfTtcbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgd2l0aCBhbiBvYmplY3Qgb2Ygb3ZlcmZsb3cgc2lkZSBvZmZzZXRzIHRoYXQgZGV0ZXJtaW5lIGhvdyBtdWNoIHRoZVxuICogZWxlbWVudCBpcyBvdmVyZmxvd2luZyBhIGdpdmVuIGNsaXBwaW5nIGJvdW5kYXJ5IG9uIGVhY2ggc2lkZS5cbiAqIC0gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgYm91bmRhcnkgYnkgdGhhdCBudW1iZXIgb2YgcGl4ZWxzXG4gKiAtIG5lZ2F0aXZlID0gaG93IG1hbnkgcGl4ZWxzIGxlZnQgYmVmb3JlIGl0IHdpbGwgb3ZlcmZsb3dcbiAqIC0gMCA9IGxpZXMgZmx1c2ggd2l0aCB0aGUgYm91bmRhcnlcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9kZXRlY3RPdmVyZmxvd1xuICovXG5hc3luYyBmdW5jdGlvbiBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX2F3YWl0JHBsYXRmb3JtJGlzRWxlO1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICB4LFxuICAgIHksXG4gICAgcGxhdGZvcm0sXG4gICAgcmVjdHMsXG4gICAgZWxlbWVudHMsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IHN0YXRlO1xuICBjb25zdCB7XG4gICAgYm91bmRhcnkgPSAnY2xpcHBpbmdBbmNlc3RvcnMnLFxuICAgIHJvb3RCb3VuZGFyeSA9ICd2aWV3cG9ydCcsXG4gICAgZWxlbWVudENvbnRleHQgPSAnZmxvYXRpbmcnLFxuICAgIGFsdEJvdW5kYXJ5ID0gZmFsc2UsXG4gICAgcGFkZGluZyA9IDBcbiAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gIGNvbnN0IGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/ICdyZWZlcmVuY2UnIDogJ2Zsb2F0aW5nJztcbiAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgY29uc3QgY2xpcHBpbmdDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChhd2FpdCBwbGF0Zm9ybS5nZXRDbGlwcGluZ1JlY3Qoe1xuICAgIGVsZW1lbnQ6ICgoX2F3YWl0JHBsYXRmb3JtJGlzRWxlID0gYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGVsZW1lbnQpKSkgIT0gbnVsbCA/IF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA6IHRydWUpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgKGF3YWl0IChwbGF0Zm9ybS5nZXREb2N1bWVudEVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudChlbGVtZW50cy5mbG9hdGluZykpKSxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSkpO1xuICBjb25zdCByZWN0ID0gZWxlbWVudENvbnRleHQgPT09ICdmbG9hdGluZycgPyB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0cy5mbG9hdGluZy53aWR0aCxcbiAgICBoZWlnaHQ6IHJlY3RzLmZsb2F0aW5nLmhlaWdodFxuICB9IDogcmVjdHMucmVmZXJlbmNlO1xuICBjb25zdCBvZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgb2Zmc2V0U2NhbGUgPSAoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KG9mZnNldFBhcmVudCkpKSA/IChhd2FpdCAocGxhdGZvcm0uZ2V0U2NhbGUgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldFNjYWxlKG9mZnNldFBhcmVudCkpKSB8fCB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH0gOiB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH07XG4gIGNvbnN0IGVsZW1lbnRDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChwbGF0Zm9ybS5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCA/IGF3YWl0IHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9KSA6IHJlY3QpO1xuICByZXR1cm4ge1xuICAgIHRvcDogKGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGJvdHRvbTogKGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGxlZnQ6IChjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQpIC8gb2Zmc2V0U2NhbGUueCxcbiAgICByaWdodDogKGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodCkgLyBvZmZzZXRTY2FsZS54XG4gIH07XG59XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmNvbnN0IGFycm93ID0gb3B0aW9ucyA9PiAoe1xuICBuYW1lOiAnYXJyb3cnLFxuICBvcHRpb25zLFxuICBhc3luYyBmbihzdGF0ZSkge1xuICAgIGNvbnN0IHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgcGxhY2VtZW50LFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgbWlkZGxld2FyZURhdGFcbiAgICB9ID0gc3RhdGU7XG4gICAgLy8gU2luY2UgYGVsZW1lbnRgIGlzIHJlcXVpcmVkLCB3ZSBkb24ndCBQYXJ0aWFsPD4gdGhlIHR5cGUuXG4gICAgY29uc3Qge1xuICAgICAgZWxlbWVudCxcbiAgICAgIHBhZGRpbmcgPSAwXG4gICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKSB8fCB7fTtcbiAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpO1xuICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgIHgsXG4gICAgICB5XG4gICAgfTtcbiAgICBjb25zdCBheGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICAgIGNvbnN0IGxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYXhpcyk7XG4gICAgY29uc3QgYXJyb3dEaW1lbnNpb25zID0gYXdhaXQgcGxhdGZvcm0uZ2V0RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICBjb25zdCBpc1lBeGlzID0gYXhpcyA9PT0gJ3knO1xuICAgIGNvbnN0IG1pblByb3AgPSBpc1lBeGlzID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgY29uc3QgbWF4UHJvcCA9IGlzWUF4aXMgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgY29uc3QgY2xpZW50UHJvcCA9IGlzWUF4aXMgPyAnY2xpZW50SGVpZ2h0JyA6ICdjbGllbnRXaWR0aCc7XG4gICAgY29uc3QgZW5kRGlmZiA9IHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdICsgcmVjdHMucmVmZXJlbmNlW2F4aXNdIC0gY29vcmRzW2F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICBjb25zdCBzdGFydERpZmYgPSBjb29yZHNbYXhpc10gLSByZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gICAgY29uc3QgYXJyb3dPZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkpO1xuICAgIGxldCBjbGllbnRTaXplID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBhcnJvd09mZnNldFBhcmVudFtjbGllbnRQcm9wXSA6IDA7XG5cbiAgICAvLyBET00gcGxhdGZvcm0gY2FuIHJldHVybiBgd2luZG93YCBhcyB0aGUgYG9mZnNldFBhcmVudGAuXG4gICAgaWYgKCFjbGllbnRTaXplIHx8ICEoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGFycm93T2Zmc2V0UGFyZW50KSkpKSB7XG4gICAgICBjbGllbnRTaXplID0gZWxlbWVudHMuZmxvYXRpbmdbY2xpZW50UHJvcF0gfHwgcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICB9XG4gICAgY29uc3QgY2VudGVyVG9SZWZlcmVuY2UgPSBlbmREaWZmIC8gMiAtIHN0YXJ0RGlmZiAvIDI7XG5cbiAgICAvLyBJZiB0aGUgcGFkZGluZyBpcyBsYXJnZSBlbm91Z2ggdGhhdCBpdCBjYXVzZXMgdGhlIGFycm93IHRvIG5vIGxvbmdlciBiZVxuICAgIC8vIGNlbnRlcmVkLCBtb2RpZnkgdGhlIHBhZGRpbmcgc28gdGhhdCBpdCBpcyBjZW50ZXJlZC5cbiAgICBjb25zdCBsYXJnZXN0UG9zc2libGVQYWRkaW5nID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgLSAxO1xuICAgIGNvbnN0IG1pblBhZGRpbmcgPSBtaW4ocGFkZGluZ09iamVjdFttaW5Qcm9wXSwgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyk7XG4gICAgY29uc3QgbWF4UGFkZGluZyA9IG1pbihwYWRkaW5nT2JqZWN0W21heFByb3BdLCBsYXJnZXN0UG9zc2libGVQYWRkaW5nKTtcblxuICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyb3cgZG9lc24ndCBvdmVyZmxvdyB0aGUgZmxvYXRpbmcgZWxlbWVudCBpZiB0aGUgY2VudGVyXG4gICAgLy8gcG9pbnQgaXMgb3V0c2lkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCdzIGJvdW5kcy5cbiAgICBjb25zdCBtaW4kMSA9IG1pblBhZGRpbmc7XG4gICAgY29uc3QgbWF4ID0gY2xpZW50U2l6ZSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC0gbWF4UGFkZGluZztcbiAgICBjb25zdCBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICAgIGNvbnN0IG9mZnNldCA9IGNsYW1wKG1pbiQxLCBjZW50ZXIsIG1heCk7XG5cbiAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIHNtYWxsIGVub3VnaCB0aGF0IHRoZSBhcnJvdydzIHBhZGRpbmcgY2F1c2VzIGl0IHRvXG4gICAgLy8gdG8gcG9pbnQgdG8gbm90aGluZyBmb3IgYW4gYWxpZ25lZCBwbGFjZW1lbnQsIGFkanVzdCB0aGUgb2Zmc2V0IG9mIHRoZVxuICAgIC8vIGZsb2F0aW5nIGVsZW1lbnQgaXRzZWxmLiBUbyBlbnN1cmUgYHNoaWZ0KClgIGNvbnRpbnVlcyB0byB0YWtlIGFjdGlvbixcbiAgICAvLyBhIHNpbmdsZSByZXNldCBpcyBwZXJmb3JtZWQgd2hlbiB0aGlzIGlzIHRydWUuXG4gICAgY29uc3Qgc2hvdWxkQWRkT2Zmc2V0ID0gIW1pZGRsZXdhcmVEYXRhLmFycm93ICYmIGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9IG51bGwgJiYgY2VudGVyICE9PSBvZmZzZXQgJiYgcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gLyAyIC0gKGNlbnRlciA8IG1pbiQxID8gbWluUGFkZGluZyA6IG1heFBhZGRpbmcpIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIDwgMDtcbiAgICBjb25zdCBhbGlnbm1lbnRPZmZzZXQgPSBzaG91bGRBZGRPZmZzZXQgPyBjZW50ZXIgPCBtaW4kMSA/IGNlbnRlciAtIG1pbiQxIDogY2VudGVyIC0gbWF4IDogMDtcbiAgICByZXR1cm4ge1xuICAgICAgW2F4aXNdOiBjb29yZHNbYXhpc10gKyBhbGlnbm1lbnRPZmZzZXQsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIFtheGlzXTogb2Zmc2V0LFxuICAgICAgICBjZW50ZXJPZmZzZXQ6IGNlbnRlciAtIG9mZnNldCAtIGFsaWdubWVudE9mZnNldCxcbiAgICAgICAgLi4uKHNob3VsZEFkZE9mZnNldCAmJiB7XG4gICAgICAgICAgYWxpZ25tZW50T2Zmc2V0XG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgcmVzZXQ6IHNob3VsZEFkZE9mZnNldFxuICAgIH07XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIHtcbiAgY29uc3QgYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudCA9IGFsaWdubWVudCA/IFsuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpID09PSBhbGlnbm1lbnQpLCAuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9PSBhbGlnbm1lbnQpXSA6IGFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0U2lkZShwbGFjZW1lbnQpID09PSBwbGFjZW1lbnQpO1xuICByZXR1cm4gYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudC5maWx0ZXIocGxhY2VtZW50ID0+IHtcbiAgICBpZiAoYWxpZ25tZW50KSB7XG4gICAgICByZXR1cm4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCB8fCAoYXV0b0FsaWdubWVudCA/IGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkgIT09IHBsYWNlbWVudCA6IGZhbHNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2F1dG9QbGFjZW1lbnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXV0b1AsIF9taWRkbGV3YXJlRGF0YSRhdXRvUDIsIF9wbGFjZW1lbnRzVGhhdEZpdE9uRTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBjcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgYWxpZ25tZW50LFxuICAgICAgICBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHMsXG4gICAgICAgIGF1dG9BbGlnbm1lbnQgPSB0cnVlLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzJDEgPSBhbGlnbm1lbnQgIT09IHVuZGVmaW5lZCB8fCBhbGxvd2VkUGxhY2VtZW50cyA9PT0gcGxhY2VtZW50cyA/IGdldFBsYWNlbWVudExpc3QoYWxpZ25tZW50IHx8IG51bGwsIGF1dG9BbGlnbm1lbnQsIGFsbG93ZWRQbGFjZW1lbnRzKSA6IGFsbG93ZWRQbGFjZW1lbnRzO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9ICgoX21pZGRsZXdhcmVEYXRhJGF1dG9QID0gbWlkZGxld2FyZURhdGEuYXV0b1BsYWNlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhdXRvUC5pbmRleCkgfHwgMDtcbiAgICAgIGNvbnN0IGN1cnJlbnRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzJDFbY3VycmVudEluZGV4XTtcbiAgICAgIGlmIChjdXJyZW50UGxhY2VtZW50ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgY29uc3QgYWxpZ25tZW50U2lkZXMgPSBnZXRBbGlnbm1lbnRTaWRlcyhjdXJyZW50UGxhY2VtZW50LCByZWN0cywgYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKTtcblxuICAgICAgLy8gTWFrZSBgY29tcHV0ZUNvb3Jkc2Agc3RhcnQgZnJvbSB0aGUgcmlnaHQgcGxhY2UuXG4gICAgICBpZiAocGxhY2VtZW50ICE9PSBjdXJyZW50UGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50cyQxWzBdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudE92ZXJmbG93cyA9IFtvdmVyZmxvd1tnZXRTaWRlKGN1cnJlbnRQbGFjZW1lbnQpXSwgb3ZlcmZsb3dbYWxpZ25tZW50U2lkZXNbMF1dLCBvdmVyZmxvd1thbGlnbm1lbnRTaWRlc1sxXV1dO1xuICAgICAgY29uc3QgYWxsT3ZlcmZsb3dzID0gWy4uLigoKF9taWRkbGV3YXJlRGF0YSRhdXRvUDIgPSBtaWRkbGV3YXJlRGF0YS5hdXRvUGxhY2VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGF1dG9QMi5vdmVyZmxvd3MpIHx8IFtdKSwge1xuICAgICAgICBwbGFjZW1lbnQ6IGN1cnJlbnRQbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93czogY3VycmVudE92ZXJmbG93c1xuICAgICAgfV07XG4gICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50cyQxW2N1cnJlbnRJbmRleCArIDFdO1xuXG4gICAgICAvLyBUaGVyZSBhcmUgbW9yZSBwbGFjZW1lbnRzIHRvIGNoZWNrLlxuICAgICAgaWYgKG5leHRQbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBpbmRleDogY3VycmVudEluZGV4ICsgMSxcbiAgICAgICAgICAgIG92ZXJmbG93czogYWxsT3ZlcmZsb3dzXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlID0gYWxsT3ZlcmZsb3dzLm1hcChkID0+IHtcbiAgICAgICAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KGQucGxhY2VtZW50KTtcbiAgICAgICAgcmV0dXJuIFtkLnBsYWNlbWVudCwgYWxpZ25tZW50ICYmIGNyb3NzQXhpcyA/XG4gICAgICAgIC8vIENoZWNrIGFsb25nIHRoZSBtYWluQXhpcyBhbmQgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgZC5vdmVyZmxvd3Muc2xpY2UoMCwgMikucmVkdWNlKChhY2MsIHYpID0+IGFjYyArIHYsIDApIDpcbiAgICAgICAgLy8gQ2hlY2sgb25seSB0aGUgbWFpbkF4aXMuXG4gICAgICAgIGQub3ZlcmZsb3dzWzBdLCBkLm92ZXJmbG93c107XG4gICAgICB9KS5zb3J0KChhLCBiKSA9PiBhWzFdIC0gYlsxXSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGUgPSBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UuZmlsdGVyKGQgPT4gZFsyXS5zbGljZSgwLFxuICAgICAgLy8gQWxpZ25lZCBwbGFjZW1lbnRzIHNob3VsZCBub3QgY2hlY2sgdGhlaXIgb3Bwb3NpdGUgY3Jvc3NBeGlzXG4gICAgICAvLyBzaWRlLlxuICAgICAgZ2V0QWxpZ25tZW50KGRbMF0pID8gMiA6IDMpLmV2ZXJ5KHYgPT4gdiA8PSAwKSk7XG4gICAgICBjb25zdCByZXNldFBsYWNlbWVudCA9ICgoX3BsYWNlbWVudHNUaGF0Rml0T25FID0gcGxhY2VtZW50c1RoYXRGaXRPbkVhY2hTaWRlWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX3BsYWNlbWVudHNUaGF0Rml0T25FWzBdKSB8fCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2VbMF1bMF07XG4gICAgICBpZiAocmVzZXRQbGFjZW1lbnQgIT09IHBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHJlc2V0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdmbGlwJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGFycm93LCBfbWlkZGxld2FyZURhdGEkZmxpcDtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIGluaXRpYWxQbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlLFxuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyxcbiAgICAgICAgZmFsbGJhY2tTdHJhdGVneSA9ICdiZXN0Rml0JyxcbiAgICAgICAgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9ICdub25lJyxcbiAgICAgICAgZmxpcEFsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcblxuICAgICAgLy8gSWYgYSByZXNldCBieSB0aGUgYXJyb3cgd2FzIGNhdXNlZCBkdWUgdG8gYW4gYWxpZ25tZW50IG9mZnNldCBiZWluZ1xuICAgICAgLy8gYWRkZWQsIHdlIHNob3VsZCBza2lwIGFueSBsb2dpYyBub3cgc2luY2UgYGZsaXAoKWAgaGFzIGFscmVhZHkgZG9uZSBpdHNcbiAgICAgIC8vIHdvcmsuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzI1NDkjaXNzdWVjb21tZW50LTE3MTk2MDE2NDNcbiAgICAgIGlmICgoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpICE9IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93LmFsaWdubWVudE9mZnNldCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaW5pdGlhbFNpZGVBeGlzID0gZ2V0U2lkZUF4aXMoaW5pdGlhbFBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc0Jhc2VQbGFjZW1lbnQgPSBnZXRTaWRlKGluaXRpYWxQbGFjZW1lbnQpID09PSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICAgICAgY29uc3QgZmFsbGJhY2tQbGFjZW1lbnRzID0gc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIHx8IChpc0Jhc2VQbGFjZW1lbnQgfHwgIWZsaXBBbGlnbm1lbnQgPyBbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQoaW5pdGlhbFBsYWNlbWVudCldIDogZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gPSBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uICE9PSAnbm9uZSc7XG4gICAgICBpZiAoIXNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyAmJiBoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgIGZhbGxiYWNrUGxhY2VtZW50cy5wdXNoKC4uLmdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMoaW5pdGlhbFBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiwgcnRsKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzID0gW2luaXRpYWxQbGFjZW1lbnQsIC4uLmZhbGxiYWNrUGxhY2VtZW50c107XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3dzID0gW107XG4gICAgICBsZXQgb3ZlcmZsb3dzRGF0YSA9ICgoX21pZGRsZXdhcmVEYXRhJGZsaXAgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAub3ZlcmZsb3dzKSB8fCBbXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVdKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCBzaWRlcyA9IGdldEFsaWdubWVudFNpZGVzKHBsYWNlbWVudCwgcmVjdHMsIHJ0bCk7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVzWzBdXSwgb3ZlcmZsb3dbc2lkZXNbMV1dKTtcbiAgICAgIH1cbiAgICAgIG92ZXJmbG93c0RhdGEgPSBbLi4ub3ZlcmZsb3dzRGF0YSwge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93c1xuICAgICAgfV07XG5cbiAgICAgIC8vIE9uZSBvciBtb3JlIHNpZGVzIGlzIG92ZXJmbG93aW5nLlxuICAgICAgaWYgKCFvdmVyZmxvd3MuZXZlcnkoc2lkZSA9PiBzaWRlIDw9IDApKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkZmxpcDIsIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjtcbiAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gKCgoX21pZGRsZXdhcmVEYXRhJGZsaXAyID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwMi5pbmRleCkgfHwgMCkgKyAxO1xuICAgICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50c1tuZXh0SW5kZXhdO1xuICAgICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICAgIC8vIFRyeSBuZXh0IHBsYWNlbWVudCBhbmQgcmUtcnVuIHRoZSBsaWZlY3ljbGUuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgaW5kZXg6IG5leHRJbmRleCxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dzOiBvdmVyZmxvd3NEYXRhXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpcnN0LCBmaW5kIHRoZSBjYW5kaWRhdGVzIHRoYXQgZml0IG9uIHRoZSBtYWluQXhpcyBzaWRlIG9mIG92ZXJmbG93LFxuICAgICAgICAvLyB0aGVuIGZpbmQgdGhlIHBsYWNlbWVudCB0aGF0IGZpdHMgdGhlIGJlc3Qgb24gdGhlIG1haW4gY3Jvc3NBeGlzIHNpZGUuXG4gICAgICAgIGxldCByZXNldFBsYWNlbWVudCA9IChfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IGQub3ZlcmZsb3dzWzBdIDw9IDApLnNvcnQoKGEsIGIpID0+IGEub3ZlcmZsb3dzWzFdIC0gYi5vdmVyZmxvd3NbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkZmlsdGVyLnBsYWNlbWVudDtcblxuICAgICAgICAvLyBPdGhlcndpc2UgZmFsbGJhY2suXG4gICAgICAgIGlmICghcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICBzd2l0Y2ggKGZhbGxiYWNrU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Jlc3RGaXQnOlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFyIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjI7XG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlcjIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTaWRlQXhpcyA9IGdldFNpZGVBeGlzKGQucGxhY2VtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRTaWRlQXhpcyA9PT0gaW5pdGlhbFNpZGVBeGlzIHx8XG4gICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGJpYXMgdG8gdGhlIGB5YCBzaWRlIGF4aXMgZHVlIHRvIGhvcml6b250YWxcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVhZGluZyBkaXJlY3Rpb25zIGZhdm9yaW5nIGdyZWF0ZXIgd2lkdGguXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTaWRlQXhpcyA9PT0gJ3knO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSkubWFwKGQgPT4gW2QucGxhY2VtZW50LCBkLm92ZXJmbG93cy5maWx0ZXIob3ZlcmZsb3cgPT4gb3ZlcmZsb3cgPiAwKS5yZWR1Y2UoKGFjYywgb3ZlcmZsb3cpID0+IGFjYyArIG92ZXJmbG93LCAwKV0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9vdmVyZmxvd3NEYXRhJGZpbHRlcjJbMF07XG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlbWVudCkge1xuICAgICAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdpbml0aWFsUGxhY2VtZW50JzpcbiAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBsYWNlbWVudCAhPT0gcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiByZXNldFBsYWNlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQsXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoXG4gIH07XG59XG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIHNpZGVzLnNvbWUoc2lkZSA9PiBvdmVyZmxvd1tzaWRlXSA+PSAwKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdoaWRlJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlY3RzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0cmF0ZWd5ID0gJ3JlZmVyZW5jZUhpZGRlbicsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIHN3aXRjaCAoc3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSAncmVmZXJlbmNlSGlkZGVuJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdHMucmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW5PZmZzZXRzOiBvZmZzZXRzLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbjogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICdlc2NhcGVkJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgYWx0Qm91bmRhcnk6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5mbG9hdGluZyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZE9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgZXNjYXBlZDogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdSZWN0KHJlY3RzKSB7XG4gIGNvbnN0IG1pblggPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gIGNvbnN0IG1pblkgPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC50b3ApKTtcbiAgY29uc3QgbWF4WCA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnJpZ2h0KSk7XG4gIGNvbnN0IG1heFkgPSBtYXgoLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5ib3R0b20pKTtcbiAgcmV0dXJuIHtcbiAgICB4OiBtaW5YLFxuICAgIHk6IG1pblksXG4gICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgIGhlaWdodDogbWF4WSAtIG1pbllcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFJlY3RzQnlMaW5lKHJlY3RzKSB7XG4gIGNvbnN0IHNvcnRlZFJlY3RzID0gcmVjdHMuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiBhLnkgLSBiLnkpO1xuICBjb25zdCBncm91cHMgPSBbXTtcbiAgbGV0IHByZXZSZWN0ID0gbnVsbDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3J0ZWRSZWN0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHJlY3QgPSBzb3J0ZWRSZWN0c1tpXTtcbiAgICBpZiAoIXByZXZSZWN0IHx8IHJlY3QueSAtIHByZXZSZWN0LnkgPiBwcmV2UmVjdC5oZWlnaHQgLyAyKSB7XG4gICAgICBncm91cHMucHVzaChbcmVjdF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cHNbZ3JvdXBzLmxlbmd0aCAtIDFdLnB1c2gocmVjdCk7XG4gICAgfVxuICAgIHByZXZSZWN0ID0gcmVjdDtcbiAgfVxuICByZXR1cm4gZ3JvdXBzLm1hcChyZWN0ID0+IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KHJlY3QpKSk7XG59XG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2lubGluZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIGVsZW1lbnRzLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICAvLyBBIE1vdXNlRXZlbnQncyBjbGllbnR7WCxZfSBjb29yZHMgY2FuIGJlIHVwIHRvIDIgcGl4ZWxzIG9mZiBhXG4gICAgICAvLyBDbGllbnRSZWN0J3MgYm91bmRzLCBkZXNwaXRlIHRoZSBldmVudCBsaXN0ZW5lciBiZWluZyB0cmlnZ2VyZWQuIEFcbiAgICAgIC8vIHBhZGRpbmcgb2YgMiBzZWVtcyB0byBoYW5kbGUgdGhpcyBpc3N1ZS5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGFkZGluZyA9IDIsXG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBuYXRpdmVDbGllbnRSZWN0cyA9IEFycmF5LmZyb20oKGF3YWl0IChwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0Q2xpZW50UmVjdHMoZWxlbWVudHMucmVmZXJlbmNlKSkpIHx8IFtdKTtcbiAgICAgIGNvbnN0IGNsaWVudFJlY3RzID0gZ2V0UmVjdHNCeUxpbmUobmF0aXZlQ2xpZW50UmVjdHMpO1xuICAgICAgY29uc3QgZmFsbGJhY2sgPSByZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChuYXRpdmVDbGllbnRSZWN0cykpO1xuICAgICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gICAgICBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB7XG4gICAgICAgIC8vIFRoZXJlIGFyZSB0d28gcmVjdHMgYW5kIHRoZXkgYXJlIGRpc2pvaW5lZC5cbiAgICAgICAgaWYgKGNsaWVudFJlY3RzLmxlbmd0aCA9PT0gMiAmJiBjbGllbnRSZWN0c1swXS5sZWZ0ID4gY2xpZW50UmVjdHNbMV0ucmlnaHQgJiYgeCAhPSBudWxsICYmIHkgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IHJlY3QgaW4gd2hpY2ggdGhlIHBvaW50IGlzIGZ1bGx5IGluc2lkZS5cbiAgICAgICAgICByZXR1cm4gY2xpZW50UmVjdHMuZmluZChyZWN0ID0+IHggPiByZWN0LmxlZnQgLSBwYWRkaW5nT2JqZWN0LmxlZnQgJiYgeCA8IHJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0ICYmIHkgPiByZWN0LnRvcCAtIHBhZGRpbmdPYmplY3QudG9wICYmIHkgPCByZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSB8fCBmYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZXJlIGFyZSAyIG9yIG1vcmUgY29ubmVjdGVkIHJlY3RzLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICBpZiAoZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJlY3QgPSBjbGllbnRSZWN0c1swXTtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RSZWN0ID0gY2xpZW50UmVjdHNbY2xpZW50UmVjdHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCBpc1RvcCA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ3RvcCc7XG4gICAgICAgICAgICBjb25zdCB0b3AgPSBmaXJzdFJlY3QudG9wO1xuICAgICAgICAgICAgY29uc3QgYm90dG9tID0gbGFzdFJlY3QuYm90dG9tO1xuICAgICAgICAgICAgY29uc3QgbGVmdCA9IGlzVG9wID8gZmlyc3RSZWN0LmxlZnQgOiBsYXN0UmVjdC5sZWZ0O1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBpc1RvcCA/IGZpcnN0UmVjdC5yaWdodCA6IGxhc3RSZWN0LnJpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICAgIGJvdHRvbSxcbiAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNMZWZ0U2lkZSA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ2xlZnQnO1xuICAgICAgICAgIGNvbnN0IG1heFJpZ2h0ID0gbWF4KC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgICAgICAgICBjb25zdCBtaW5MZWZ0ID0gbWluKC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QubGVmdCkpO1xuICAgICAgICAgIGNvbnN0IG1lYXN1cmVSZWN0cyA9IGNsaWVudFJlY3RzLmZpbHRlcihyZWN0ID0+IGlzTGVmdFNpZGUgPyByZWN0LmxlZnQgPT09IG1pbkxlZnQgOiByZWN0LnJpZ2h0ID09PSBtYXhSaWdodCk7XG4gICAgICAgICAgY29uc3QgdG9wID0gbWVhc3VyZVJlY3RzWzBdLnRvcDtcbiAgICAgICAgICBjb25zdCBib3R0b20gPSBtZWFzdXJlUmVjdHNbbWVhc3VyZVJlY3RzLmxlbmd0aCAtIDFdLmJvdHRvbTtcbiAgICAgICAgICBjb25zdCBsZWZ0ID0gbWluTGVmdDtcbiAgICAgICAgICBjb25zdCByaWdodCA9IG1heFJpZ2h0O1xuICAgICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wLFxuICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNldFJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICAgICAgcmVmZXJlbmNlOiB7XG4gICAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG4gICAgICAgIH0sXG4gICAgICAgIGZsb2F0aW5nOiBlbGVtZW50cy5mbG9hdGluZyxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlY3RzLnJlZmVyZW5jZS54ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS54IHx8IHJlY3RzLnJlZmVyZW5jZS55ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS55IHx8IHJlY3RzLnJlZmVyZW5jZS53aWR0aCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2Uud2lkdGggfHwgcmVjdHMucmVmZXJlbmNlLmhlaWdodCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHJlY3RzOiByZXNldFJlY3RzXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8vIEZvciB0eXBlIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LCB0aGUgYE9mZnNldE9wdGlvbnNgIHR5cGUgd2FzIGFsc29cbi8vIERlcml2YWJsZS5cblxuYXN5bmMgZnVuY3Rpb24gY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCxcbiAgICBwbGF0Zm9ybSxcbiAgICBlbGVtZW50c1xuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGlzVmVydGljYWwgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneSc7XG4gIGNvbnN0IG1haW5BeGlzTXVsdGkgPSBbJ2xlZnQnLCAndG9wJ10uaW5jbHVkZXMoc2lkZSkgPyAtMSA6IDE7XG4gIGNvbnN0IGNyb3NzQXhpc011bHRpID0gcnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDE7XG4gIGNvbnN0IHJhd1ZhbHVlID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgbGV0IHtcbiAgICBtYWluQXhpcyxcbiAgICBjcm9zc0F4aXMsXG4gICAgYWxpZ25tZW50QXhpc1xuICB9ID0gdHlwZW9mIHJhd1ZhbHVlID09PSAnbnVtYmVyJyA/IHtcbiAgICBtYWluQXhpczogcmF3VmFsdWUsXG4gICAgY3Jvc3NBeGlzOiAwLFxuICAgIGFsaWdubWVudEF4aXM6IG51bGxcbiAgfSA6IHtcbiAgICBtYWluQXhpczogMCxcbiAgICBjcm9zc0F4aXM6IDAsXG4gICAgYWxpZ25tZW50QXhpczogbnVsbCxcbiAgICAuLi5yYXdWYWx1ZVxuICB9O1xuICBpZiAoYWxpZ25tZW50ICYmIHR5cGVvZiBhbGlnbm1lbnRBeGlzID09PSAnbnVtYmVyJykge1xuICAgIGNyb3NzQXhpcyA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyBhbGlnbm1lbnRBeGlzICogLTEgOiBhbGlnbm1lbnRBeGlzO1xuICB9XG4gIHJldHVybiBpc1ZlcnRpY2FsID8ge1xuICAgIHg6IGNyb3NzQXhpcyAqIGNyb3NzQXhpc011bHRpLFxuICAgIHk6IG1haW5BeGlzICogbWFpbkF4aXNNdWx0aVxuICB9IDoge1xuICAgIHg6IG1haW5BeGlzICogbWFpbkF4aXNNdWx0aSxcbiAgICB5OiBjcm9zc0F4aXMgKiBjcm9zc0F4aXNNdWx0aVxuICB9O1xufVxuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IDA7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnb2Zmc2V0JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJG9mZnNlLCBfbWlkZGxld2FyZURhdGEkYXJyb3c7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgbWlkZGxld2FyZURhdGFcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IGRpZmZDb29yZHMgPSBhd2FpdCBjb252ZXJ0VmFsdWVUb0Nvb3JkcyhzdGF0ZSwgb3B0aW9ucyk7XG5cbiAgICAgIC8vIElmIHRoZSBwbGFjZW1lbnQgaXMgdGhlIHNhbWUgYW5kIHRoZSBhcnJvdyBjYXVzZWQgYW4gYWxpZ25tZW50IG9mZnNldFxuICAgICAgLy8gdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGNoYW5nZSB0aGUgcG9zaXRpb25pbmcgY29vcmRpbmF0ZXMuXG4gICAgICBpZiAocGxhY2VtZW50ID09PSAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZSA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZS5wbGFjZW1lbnQpICYmIChfbWlkZGxld2FyZURhdGEkYXJyb3cgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgIT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3cuYWxpZ25tZW50T2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHggKyBkaWZmQ29vcmRzLngsXG4gICAgICAgIHk6IHkgKyBkaWZmQ29vcmRzLnksXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAuLi5kaWZmQ29vcmRzLFxuICAgICAgICAgIHBsYWNlbWVudFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnc2hpZnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IGZhbHNlLFxuICAgICAgICBsaW1pdGVyID0ge1xuICAgICAgICAgIGZuOiBfcmVmID0+IHtcbiAgICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgIHlcbiAgICAgICAgICAgIH0gPSBfcmVmO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRTaWRlQXhpcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgY29uc3QgbWFpbkF4aXMgPSBnZXRPcHBvc2l0ZUF4aXMoY3Jvc3NBeGlzKTtcbiAgICAgIGxldCBtYWluQXhpc0Nvb3JkID0gY29vcmRzW21haW5BeGlzXTtcbiAgICAgIGxldCBjcm9zc0F4aXNDb29yZCA9IGNvb3Jkc1tjcm9zc0F4aXNdO1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbWluU2lkZSA9IG1haW5BeGlzID09PSAneScgPyAndG9wJyA6ICdsZWZ0JztcbiAgICAgICAgY29uc3QgbWF4U2lkZSA9IG1haW5BeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IG1haW5BeGlzQ29vcmQgKyBvdmVyZmxvd1ttaW5TaWRlXTtcbiAgICAgICAgY29uc3QgbWF4ID0gbWFpbkF4aXNDb29yZCAtIG92ZXJmbG93W21heFNpZGVdO1xuICAgICAgICBtYWluQXhpc0Nvb3JkID0gY2xhbXAobWluLCBtYWluQXhpc0Nvb3JkLCBtYXgpO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBjcm9zc0F4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IGNyb3NzQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IGNyb3NzQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gY2xhbXAobWluLCBjcm9zc0F4aXNDb29yZCwgbWF4KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxpbWl0ZWRDb29yZHMgPSBsaW1pdGVyLmZuKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIFttYWluQXhpc106IG1haW5BeGlzQ29vcmQsXG4gICAgICAgIFtjcm9zc0F4aXNdOiBjcm9zc0F4aXNDb29yZFxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5saW1pdGVkQ29vcmRzLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgeDogbGltaXRlZENvb3Jkcy54IC0geCxcbiAgICAgICAgICB5OiBsaW1pdGVkQ29vcmRzLnkgLSB5XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcbi8qKlxuICogQnVpbHQtaW4gYGxpbWl0ZXJgIHRoYXQgd2lsbCBzdG9wIGBzaGlmdCgpYCBhdCBhIGNlcnRhaW4gcG9pbnQuXG4gKi9cbmNvbnN0IGxpbWl0U2hpZnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgb3B0aW9ucyxcbiAgICBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBtaWRkbGV3YXJlRGF0YVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBvZmZzZXQgPSAwLFxuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9O1xuICAgICAgY29uc3QgY3Jvc3NBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0T3Bwb3NpdGVBeGlzKGNyb3NzQXhpcyk7XG4gICAgICBsZXQgbWFpbkF4aXNDb29yZCA9IGNvb3Jkc1ttYWluQXhpc107XG4gICAgICBsZXQgY3Jvc3NBeGlzQ29vcmQgPSBjb29yZHNbY3Jvc3NBeGlzXTtcbiAgICAgIGNvbnN0IHJhd09mZnNldCA9IGV2YWx1YXRlKG9mZnNldCwgc3RhdGUpO1xuICAgICAgY29uc3QgY29tcHV0ZWRPZmZzZXQgPSB0eXBlb2YgcmF3T2Zmc2V0ID09PSAnbnVtYmVyJyA/IHtcbiAgICAgICAgbWFpbkF4aXM6IHJhd09mZnNldCxcbiAgICAgICAgY3Jvc3NBeGlzOiAwXG4gICAgICB9IDoge1xuICAgICAgICBtYWluQXhpczogMCxcbiAgICAgICAgY3Jvc3NBeGlzOiAwLFxuICAgICAgICAuLi5yYXdPZmZzZXRcbiAgICAgIH07XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBjb25zdCBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5dICsgY29tcHV0ZWRPZmZzZXQubWFpbkF4aXM7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW21haW5BeGlzXSArIHJlY3RzLnJlZmVyZW5jZVtsZW5dIC0gY29tcHV0ZWRPZmZzZXQubWFpbkF4aXM7XG4gICAgICAgIGlmIChtYWluQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBtYWluQXhpc0Nvb3JkID0gbGltaXRNaW47XG4gICAgICAgIH0gZWxzZSBpZiAobWFpbkF4aXNDb29yZCA+IGxpbWl0TWF4KSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRvZmZzZSwgX21pZGRsZXdhcmVEYXRhJG9mZnNlMjtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcbiAgICAgICAgY29uc3QgaXNPcmlnaW5TaWRlID0gWyd0b3AnLCAnbGVmdCddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWluID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5dICsgKGlzT3JpZ2luU2lkZSA/ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlW2Nyb3NzQXhpc10pIHx8IDAgOiAwKSArIChpc09yaWdpblNpZGUgPyAwIDogY29tcHV0ZWRPZmZzZXQuY3Jvc3NBeGlzKTtcbiAgICAgICAgY29uc3QgbGltaXRNYXggPSByZWN0cy5yZWZlcmVuY2VbY3Jvc3NBeGlzXSArIHJlY3RzLnJlZmVyZW5jZVtsZW5dICsgKGlzT3JpZ2luU2lkZSA/IDAgOiAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZTIgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2UyW2Nyb3NzQXhpc10pIHx8IDApIC0gKGlzT3JpZ2luU2lkZSA/IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyA6IDApO1xuICAgICAgICBpZiAoY3Jvc3NBeGlzQ29vcmQgPCBsaW1pdE1pbikge1xuICAgICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gbGltaXRNaW47XG4gICAgICAgIH0gZWxzZSBpZiAoY3Jvc3NBeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gbGltaXRNYXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFttYWluQXhpc106IG1haW5BeGlzQ29vcmQsXG4gICAgICAgIFtjcm9zc0F4aXNdOiBjcm9zc0F4aXNDb29yZFxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NpemUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGFwcGx5ID0gKCkgPT4ge30sXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc1lBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knO1xuICAgICAgY29uc3Qge1xuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0XG4gICAgICB9ID0gcmVjdHMuZmxvYXRpbmc7XG4gICAgICBsZXQgaGVpZ2h0U2lkZTtcbiAgICAgIGxldCB3aWR0aFNpZGU7XG4gICAgICBpZiAoc2lkZSA9PT0gJ3RvcCcgfHwgc2lkZSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgaGVpZ2h0U2lkZSA9IHNpZGU7XG4gICAgICAgIHdpZHRoU2lkZSA9IGFsaWdubWVudCA9PT0gKChhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSkpID8gJ3N0YXJ0JyA6ICdlbmQnKSA/ICdsZWZ0JyA6ICdyaWdodCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aWR0aFNpZGUgPSBzaWRlO1xuICAgICAgICBoZWlnaHRTaWRlID0gYWxpZ25tZW50ID09PSAnZW5kJyA/ICd0b3AnIDogJ2JvdHRvbSc7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQgPSBoZWlnaHQgLSBvdmVyZmxvdy50b3AgLSBvdmVyZmxvdy5ib3R0b207XG4gICAgICBjb25zdCBtYXhpbXVtQ2xpcHBpbmdXaWR0aCA9IHdpZHRoIC0gb3ZlcmZsb3cubGVmdCAtIG92ZXJmbG93LnJpZ2h0O1xuICAgICAgY29uc3Qgb3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQgPSBtaW4oaGVpZ2h0IC0gb3ZlcmZsb3dbaGVpZ2h0U2lkZV0sIG1heGltdW1DbGlwcGluZ0hlaWdodCk7XG4gICAgICBjb25zdCBvdmVyZmxvd0F2YWlsYWJsZVdpZHRoID0gbWluKHdpZHRoIC0gb3ZlcmZsb3dbd2lkdGhTaWRlXSwgbWF4aW11bUNsaXBwaW5nV2lkdGgpO1xuICAgICAgY29uc3Qgbm9TaGlmdCA9ICFzdGF0ZS5taWRkbGV3YXJlRGF0YS5zaGlmdDtcbiAgICAgIGxldCBhdmFpbGFibGVIZWlnaHQgPSBvdmVyZmxvd0F2YWlsYWJsZUhlaWdodDtcbiAgICAgIGxldCBhdmFpbGFibGVXaWR0aCA9IG92ZXJmbG93QXZhaWxhYmxlV2lkdGg7XG4gICAgICBpZiAoaXNZQXhpcykge1xuICAgICAgICBhdmFpbGFibGVXaWR0aCA9IGFsaWdubWVudCB8fCBub1NoaWZ0ID8gbWluKG92ZXJmbG93QXZhaWxhYmxlV2lkdGgsIG1heGltdW1DbGlwcGluZ1dpZHRoKSA6IG1heGltdW1DbGlwcGluZ1dpZHRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gYWxpZ25tZW50IHx8IG5vU2hpZnQgPyBtaW4ob3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQsIG1heGltdW1DbGlwcGluZ0hlaWdodCkgOiBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQ7XG4gICAgICB9XG4gICAgICBpZiAobm9TaGlmdCAmJiAhYWxpZ25tZW50KSB7XG4gICAgICAgIGNvbnN0IHhNaW4gPSBtYXgob3ZlcmZsb3cubGVmdCwgMCk7XG4gICAgICAgIGNvbnN0IHhNYXggPSBtYXgob3ZlcmZsb3cucmlnaHQsIDApO1xuICAgICAgICBjb25zdCB5TWluID0gbWF4KG92ZXJmbG93LnRvcCwgMCk7XG4gICAgICAgIGNvbnN0IHlNYXggPSBtYXgob3ZlcmZsb3cuYm90dG9tLCAwKTtcbiAgICAgICAgaWYgKGlzWUF4aXMpIHtcbiAgICAgICAgICBhdmFpbGFibGVXaWR0aCA9IHdpZHRoIC0gMiAqICh4TWluICE9PSAwIHx8IHhNYXggIT09IDAgPyB4TWluICsgeE1heCA6IG1heChvdmVyZmxvdy5sZWZ0LCBvdmVyZmxvdy5yaWdodCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGhlaWdodCAtIDIgKiAoeU1pbiAhPT0gMCB8fCB5TWF4ICE9PSAwID8geU1pbiArIHlNYXggOiBtYXgob3ZlcmZsb3cudG9wLCBvdmVyZmxvdy5ib3R0b20pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXdhaXQgYXBwbHkoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYXZhaWxhYmxlV2lkdGgsXG4gICAgICAgIGF2YWlsYWJsZUhlaWdodFxuICAgICAgfSk7XG4gICAgICBjb25zdCBuZXh0RGltZW5zaW9ucyA9IGF3YWl0IHBsYXRmb3JtLmdldERpbWVuc2lvbnMoZWxlbWVudHMuZmxvYXRpbmcpO1xuICAgICAgaWYgKHdpZHRoICE9PSBuZXh0RGltZW5zaW9ucy53aWR0aCB8fCBoZWlnaHQgIT09IG5leHREaW1lbnNpb25zLmhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICByZWN0czogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHNoaWZ0LCBzaXplIH07XG4iLCJmdW5jdGlvbiBoYXNXaW5kb3coKSB7XG4gIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbn1cbmZ1bmN0aW9uIGdldE5vZGVOYW1lKG5vZGUpIHtcbiAgaWYgKGlzTm9kZShub2RlKSkge1xuICAgIHJldHVybiAobm9kZS5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgfVxuICAvLyBNb2NrZWQgbm9kZXMgaW4gdGVzdGluZyBlbnZpcm9ubWVudHMgbWF5IG5vdCBiZSBpbnN0YW5jZXMgb2YgTm9kZS4gQnlcbiAgLy8gcmV0dXJuaW5nIGAjZG9jdW1lbnRgIGFuIGluZmluaXRlIGxvb3Agd29uJ3Qgb2NjdXIuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjMxN1xuICByZXR1cm4gJyNkb2N1bWVudCc7XG59XG5mdW5jdGlvbiBnZXRXaW5kb3cobm9kZSkge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDtcbiAgcmV0dXJuIChub2RlID09IG51bGwgfHwgKF9ub2RlJG93bmVyRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSB8fCB3aW5kb3c7XG59XG5mdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQobm9kZSkge1xuICB2YXIgX3JlZjtcbiAgcmV0dXJuIChfcmVmID0gKGlzTm9kZShub2RlKSA/IG5vZGUub3duZXJEb2N1bWVudCA6IG5vZGUuZG9jdW1lbnQpIHx8IHdpbmRvdy5kb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9yZWYuZG9jdW1lbnRFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNOb2RlKHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgTm9kZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuTm9kZTtcbn1cbmZ1bmN0aW9uIGlzRWxlbWVudCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkhUTUxFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNTaGFkb3dSb290KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkgfHwgdHlwZW9mIFNoYWRvd1Jvb3QgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLlNoYWRvd1Jvb3Q7XG59XG5mdW5jdGlvbiBpc092ZXJmbG93RWxlbWVudChlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICBvdmVyZmxvdyxcbiAgICBvdmVyZmxvd1gsXG4gICAgb3ZlcmZsb3dZLFxuICAgIGRpc3BsYXlcbiAgfSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIHJldHVybiAvYXV0b3xzY3JvbGx8b3ZlcmxheXxoaWRkZW58Y2xpcC8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCkgJiYgIVsnaW5saW5lJywgJ2NvbnRlbnRzJ10uaW5jbHVkZXMoZGlzcGxheSk7XG59XG5mdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUoZWxlbWVudCkpO1xufVxuZnVuY3Rpb24gaXNUb3BMYXllcihlbGVtZW50KSB7XG4gIHJldHVybiBbJzpwb3BvdmVyLW9wZW4nLCAnOm1vZGFsJ10uc29tZShzZWxlY3RvciA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBlbGVtZW50Lm1hdGNoZXMoc2VsZWN0b3IpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gaXNDb250YWluaW5nQmxvY2soZWxlbWVudE9yQ3NzKSB7XG4gIGNvbnN0IHdlYmtpdCA9IGlzV2ViS2l0KCk7XG4gIGNvbnN0IGNzcyA9IGlzRWxlbWVudChlbGVtZW50T3JDc3MpID8gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50T3JDc3MpIDogZWxlbWVudE9yQ3NzO1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHJldHVybiBjc3MudHJhbnNmb3JtICE9PSAnbm9uZScgfHwgY3NzLnBlcnNwZWN0aXZlICE9PSAnbm9uZScgfHwgKGNzcy5jb250YWluZXJUeXBlID8gY3NzLmNvbnRhaW5lclR5cGUgIT09ICdub3JtYWwnIDogZmFsc2UpIHx8ICF3ZWJraXQgJiYgKGNzcy5iYWNrZHJvcEZpbHRlciA/IGNzcy5iYWNrZHJvcEZpbHRlciAhPT0gJ25vbmUnIDogZmFsc2UpIHx8ICF3ZWJraXQgJiYgKGNzcy5maWx0ZXIgPyBjc3MuZmlsdGVyICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgWyd0cmFuc2Zvcm0nLCAncGVyc3BlY3RpdmUnLCAnZmlsdGVyJ10uc29tZSh2YWx1ZSA9PiAoY3NzLndpbGxDaGFuZ2UgfHwgJycpLmluY2x1ZGVzKHZhbHVlKSkgfHwgWydwYWludCcsICdsYXlvdXQnLCAnc3RyaWN0JywgJ2NvbnRlbnQnXS5zb21lKHZhbHVlID0+IChjc3MuY29udGFpbiB8fCAnJykuaW5jbHVkZXModmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKGN1cnJlbnROb2RlKSkge1xuICAgIGlmIChpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICB9IGVsc2UgaWYgKGlzVG9wTGF5ZXIoY3VycmVudE5vZGUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzV2ViS2l0KCkge1xuICBpZiAodHlwZW9mIENTUyA9PT0gJ3VuZGVmaW5lZCcgfHwgIUNTUy5zdXBwb3J0cykgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gQ1NTLnN1cHBvcnRzKCctd2Via2l0LWJhY2tkcm9wLWZpbHRlcicsICdub25lJyk7XG59XG5mdW5jdGlvbiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUobm9kZSkge1xuICByZXR1cm4gWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUobm9kZSkpO1xufVxuZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn1cbmZ1bmN0aW9uIGdldE5vZGVTY3JvbGwoZWxlbWVudCkge1xuICBpZiAoaXNFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxYLFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxZXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYXJlbnROb2RlKG5vZGUpIHtcbiAgaWYgKGdldE5vZGVOYW1lKG5vZGUpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuICBjb25zdCByZXN1bHQgPVxuICAvLyBTdGVwIGludG8gdGhlIHNoYWRvdyBET00gb2YgdGhlIHBhcmVudCBvZiBhIHNsb3R0ZWQgbm9kZS5cbiAgbm9kZS5hc3NpZ25lZFNsb3QgfHxcbiAgLy8gRE9NIEVsZW1lbnQgZGV0ZWN0ZWQuXG4gIG5vZGUucGFyZW50Tm9kZSB8fFxuICAvLyBTaGFkb3dSb290IGRldGVjdGVkLlxuICBpc1NoYWRvd1Jvb3Qobm9kZSkgJiYgbm9kZS5ob3N0IHx8XG4gIC8vIEZhbGxiYWNrLlxuICBnZXREb2N1bWVudEVsZW1lbnQobm9kZSk7XG4gIHJldHVybiBpc1NoYWRvd1Jvb3QocmVzdWx0KSA/IHJlc3VsdC5ob3N0IDogcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShub2RlKTtcbiAgaWYgKGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQgPyBub2RlLm93bmVyRG9jdW1lbnQuYm9keSA6IG5vZGUuYm9keTtcbiAgfVxuICBpZiAoaXNIVE1MRWxlbWVudChwYXJlbnROb2RlKSAmJiBpc092ZXJmbG93RWxlbWVudChwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBwYXJlbnROb2RlO1xuICB9XG4gIHJldHVybiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvcihwYXJlbnROb2RlKTtcbn1cbmZ1bmN0aW9uIGdldE92ZXJmbG93QW5jZXN0b3JzKG5vZGUsIGxpc3QsIHRyYXZlcnNlSWZyYW1lcykge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDI7XG4gIGlmIChsaXN0ID09PSB2b2lkIDApIHtcbiAgICBsaXN0ID0gW107XG4gIH1cbiAgaWYgKHRyYXZlcnNlSWZyYW1lcyA9PT0gdm9pZCAwKSB7XG4gICAgdHJhdmVyc2VJZnJhbWVzID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBzY3JvbGxhYmxlQW5jZXN0b3IgPSBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKTtcbiAgY29uc3QgaXNCb2R5ID0gc2Nyb2xsYWJsZUFuY2VzdG9yID09PSAoKF9ub2RlJG93bmVyRG9jdW1lbnQyID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudDIuYm9keSk7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhzY3JvbGxhYmxlQW5jZXN0b3IpO1xuICBpZiAoaXNCb2R5KSB7XG4gICAgY29uc3QgZnJhbWVFbGVtZW50ID0gZ2V0RnJhbWVFbGVtZW50KHdpbik7XG4gICAgcmV0dXJuIGxpc3QuY29uY2F0KHdpbiwgd2luLnZpc3VhbFZpZXdwb3J0IHx8IFtdLCBpc092ZXJmbG93RWxlbWVudChzY3JvbGxhYmxlQW5jZXN0b3IpID8gc2Nyb2xsYWJsZUFuY2VzdG9yIDogW10sIGZyYW1lRWxlbWVudCAmJiB0cmF2ZXJzZUlmcmFtZXMgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhmcmFtZUVsZW1lbnQpIDogW10pO1xuICB9XG4gIHJldHVybiBsaXN0LmNvbmNhdChzY3JvbGxhYmxlQW5jZXN0b3IsIGdldE92ZXJmbG93QW5jZXN0b3JzKHNjcm9sbGFibGVBbmNlc3RvciwgW10sIHRyYXZlcnNlSWZyYW1lcykpO1xufVxuZnVuY3Rpb24gZ2V0RnJhbWVFbGVtZW50KHdpbikge1xuICByZXR1cm4gd2luLnBhcmVudCAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yod2luLnBhcmVudCkgPyB3aW4uZnJhbWVFbGVtZW50IDogbnVsbDtcbn1cblxuZXhwb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgZ2V0Q29udGFpbmluZ0Jsb2NrLCBnZXREb2N1bWVudEVsZW1lbnQsIGdldEZyYW1lRWxlbWVudCwgZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IsIGdldE5vZGVOYW1lLCBnZXROb2RlU2Nyb2xsLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgZ2V0V2luZG93LCBpc0NvbnRhaW5pbmdCbG9jaywgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGlzTm9kZSwgaXNPdmVyZmxvd0VsZW1lbnQsIGlzU2hhZG93Um9vdCwgaXNUYWJsZUVsZW1lbnQsIGlzVG9wTGF5ZXIsIGlzV2ViS2l0IH07XG4iLCJpbXBvcnQgeyByZWN0VG9DbGllbnRSZWN0LCBkZXRlY3RPdmVyZmxvdyBhcyBkZXRlY3RPdmVyZmxvdyQxLCBvZmZzZXQgYXMgb2Zmc2V0JDEsIGF1dG9QbGFjZW1lbnQgYXMgYXV0b1BsYWNlbWVudCQxLCBzaGlmdCBhcyBzaGlmdCQxLCBmbGlwIGFzIGZsaXAkMSwgc2l6ZSBhcyBzaXplJDEsIGhpZGUgYXMgaGlkZSQxLCBhcnJvdyBhcyBhcnJvdyQxLCBpbmxpbmUgYXMgaW5saW5lJDEsIGxpbWl0U2hpZnQgYXMgbGltaXRTaGlmdCQxLCBjb21wdXRlUG9zaXRpb24gYXMgY29tcHV0ZVBvc2l0aW9uJDEgfSBmcm9tICdAZmxvYXRpbmctdWkvY29yZSc7XG5pbXBvcnQgeyByb3VuZCwgY3JlYXRlQ29vcmRzLCBtYXgsIG1pbiwgZmxvb3IgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgaXNIVE1MRWxlbWVudCwgaXNFbGVtZW50LCBnZXRXaW5kb3csIGlzV2ViS2l0LCBnZXRGcmFtZUVsZW1lbnQsIGdldE5vZGVTY3JvbGwsIGdldERvY3VtZW50RWxlbWVudCwgaXNUb3BMYXllciwgZ2V0Tm9kZU5hbWUsIGlzT3ZlcmZsb3dFbGVtZW50LCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgaXNMYXN0VHJhdmVyc2FibGVOb2RlLCBpc0NvbnRhaW5pbmdCbG9jaywgaXNUYWJsZUVsZW1lbnQsIGdldENvbnRhaW5pbmdCbG9jayB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuZXhwb3J0IHsgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcblxuZnVuY3Rpb24gZ2V0Q3NzRGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIC8vIEluIHRlc3RpbmcgZW52aXJvbm1lbnRzLCB0aGUgYHdpZHRoYCBhbmQgYGhlaWdodGAgcHJvcGVydGllcyBhcmUgZW1wdHlcbiAgLy8gc3RyaW5ncyBmb3IgU1ZHIGVsZW1lbnRzLCByZXR1cm5pbmcgTmFOLiBGYWxsYmFjayB0byBgMGAgaW4gdGhpcyBjYXNlLlxuICBsZXQgd2lkdGggPSBwYXJzZUZsb2F0KGNzcy53aWR0aCkgfHwgMDtcbiAgbGV0IGhlaWdodCA9IHBhcnNlRmxvYXQoY3NzLmhlaWdodCkgfHwgMDtcbiAgY29uc3QgaGFzT2Zmc2V0ID0gaXNIVE1MRWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgb2Zmc2V0V2lkdGggPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldFdpZHRoIDogd2lkdGg7XG4gIGNvbnN0IG9mZnNldEhlaWdodCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogaGVpZ2h0O1xuICBjb25zdCBzaG91bGRGYWxsYmFjayA9IHJvdW5kKHdpZHRoKSAhPT0gb2Zmc2V0V2lkdGggfHwgcm91bmQoaGVpZ2h0KSAhPT0gb2Zmc2V0SGVpZ2h0O1xuICBpZiAoc2hvdWxkRmFsbGJhY2spIHtcbiAgICB3aWR0aCA9IG9mZnNldFdpZHRoO1xuICAgIGhlaWdodCA9IG9mZnNldEhlaWdodDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkOiBzaG91bGRGYWxsYmFja1xuICB9O1xufVxuXG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuICFpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50LmNvbnRleHRFbGVtZW50IDogZWxlbWVudDtcbn1cblxuZnVuY3Rpb24gZ2V0U2NhbGUoZWxlbWVudCkge1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGRvbUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNvb3JkcygxKTtcbiAgfVxuICBjb25zdCByZWN0ID0gZG9tRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkXG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGRvbUVsZW1lbnQpO1xuICBsZXQgeCA9ICgkID8gcm91bmQocmVjdC53aWR0aCkgOiByZWN0LndpZHRoKSAvIHdpZHRoO1xuICBsZXQgeSA9ICgkID8gcm91bmQocmVjdC5oZWlnaHQpIDogcmVjdC5oZWlnaHQpIC8gaGVpZ2h0O1xuXG4gIC8vIDAsIE5hTiwgb3IgSW5maW5pdHkgc2hvdWxkIGFsd2F5cyBmYWxsYmFjayB0byAxLlxuXG4gIGlmICgheCB8fCAhTnVtYmVyLmlzRmluaXRlKHgpKSB7XG4gICAgeCA9IDE7XG4gIH1cbiAgaWYgKCF5IHx8ICFOdW1iZXIuaXNGaW5pdGUoeSkpIHtcbiAgICB5ID0gMTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5jb25zdCBub09mZnNldHMgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29vcmRzKDApO1xuZnVuY3Rpb24gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKCFpc1dlYktpdCgpIHx8ICF3aW4udmlzdWFsVmlld3BvcnQpIHtcbiAgICByZXR1cm4gbm9PZmZzZXRzO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQsXG4gICAgeTogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcFxuICB9O1xufVxuZnVuY3Rpb24gc2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyhlbGVtZW50LCBpc0ZpeGVkLCBmbG9hdGluZ09mZnNldFBhcmVudCkge1xuICBpZiAoaXNGaXhlZCA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZCA9IGZhbHNlO1xuICB9XG4gIGlmICghZmxvYXRpbmdPZmZzZXRQYXJlbnQgfHwgaXNGaXhlZCAmJiBmbG9hdGluZ09mZnNldFBhcmVudCAhPT0gZ2V0V2luZG93KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBpc0ZpeGVkO1xufVxuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGxldCBzY2FsZSA9IGNyZWF0ZUNvb3JkcygxKTtcbiAgaWYgKGluY2x1ZGVTY2FsZSkge1xuICAgIGlmIChvZmZzZXRQYXJlbnQpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUoZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSA/IGdldFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGxldCB4ID0gKGNsaWVudFJlY3QubGVmdCArIHZpc3VhbE9mZnNldHMueCkgLyBzY2FsZS54O1xuICBsZXQgeSA9IChjbGllbnRSZWN0LnRvcCArIHZpc3VhbE9mZnNldHMueSkgLyBzY2FsZS55O1xuICBsZXQgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGUueDtcbiAgbGV0IGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGUueTtcbiAgaWYgKGRvbUVsZW1lbnQpIHtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZG9tRWxlbWVudCk7XG4gICAgY29uc3Qgb2Zmc2V0V2luID0gb2Zmc2V0UGFyZW50ICYmIGlzRWxlbWVudChvZmZzZXRQYXJlbnQpID8gZ2V0V2luZG93KG9mZnNldFBhcmVudCkgOiBvZmZzZXRQYXJlbnQ7XG4gICAgbGV0IGN1cnJlbnRXaW4gPSB3aW47XG4gICAgbGV0IGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgd2hpbGUgKGN1cnJlbnRJRnJhbWUgJiYgb2Zmc2V0UGFyZW50ICYmIG9mZnNldFdpbiAhPT0gY3VycmVudFdpbikge1xuICAgICAgY29uc3QgaWZyYW1lU2NhbGUgPSBnZXRTY2FsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGlmcmFtZVJlY3QgPSBjdXJyZW50SUZyYW1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGxlZnQgPSBpZnJhbWVSZWN0LmxlZnQgKyAoY3VycmVudElGcmFtZS5jbGllbnRMZWZ0ICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ0xlZnQpKSAqIGlmcmFtZVNjYWxlLng7XG4gICAgICBjb25zdCB0b3AgPSBpZnJhbWVSZWN0LnRvcCArIChjdXJyZW50SUZyYW1lLmNsaWVudFRvcCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdUb3ApKSAqIGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICB5ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB3aWR0aCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgaGVpZ2h0ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICs9IGxlZnQ7XG4gICAgICB5ICs9IHRvcDtcbiAgICAgIGN1cnJlbnRXaW4gPSBnZXRXaW5kb3coY3VycmVudElGcmFtZSk7XG4gICAgICBjdXJyZW50SUZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGN1cnJlbnRXaW4pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdCh7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9KTtcbn1cblxuLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuLy8gaW5jb3JyZWN0IGZvciBSVEwuXG5mdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQsIHJlY3QpIHtcbiAgY29uc3QgbGVmdFNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbiAgaWYgKCFyZWN0KSB7XG4gICAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBsZWZ0U2Nyb2xsO1xuICB9XG4gIHJldHVybiByZWN0LmxlZnQgKyBsZWZ0U2Nyb2xsO1xufVxuXG5mdW5jdGlvbiBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCBpZ25vcmVTY3JvbGxiYXJYKSB7XG4gIGlmIChpZ25vcmVTY3JvbGxiYXJYID09PSB2b2lkIDApIHtcbiAgICBpZ25vcmVTY3JvbGxiYXJYID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgaHRtbFJlY3QgPSBkb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHggPSBodG1sUmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSAoaWdub3JlU2Nyb2xsYmFyWCA/IDAgOlxuICAvLyBSVEwgPGJvZHk+IHNjcm9sbGJhci5cbiAgZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQsIGh0bWxSZWN0KSk7XG4gIGNvbnN0IHkgPSBodG1sUmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wO1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudHMsXG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IHRvcExheWVyID0gZWxlbWVudHMgPyBpc1RvcExheWVyKGVsZW1lbnRzLmZsb2F0aW5nKSA6IGZhbHNlO1xuICBpZiAob2Zmc2V0UGFyZW50ID09PSBkb2N1bWVudEVsZW1lbnQgfHwgdG9wTGF5ZXIgJiYgaXNGaXhlZCkge1xuICAgIHJldHVybiByZWN0O1xuICB9XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCk7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCwgdHJ1ZSkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggKiBzY2FsZS54LFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHQgKiBzY2FsZS55LFxuICAgIHg6IHJlY3QueCAqIHNjYWxlLnggLSBzY3JvbGwuc2Nyb2xsTGVmdCAqIHNjYWxlLnggKyBvZmZzZXRzLnggKyBodG1sT2Zmc2V0LngsXG4gICAgeTogcmVjdC55ICogc2NhbGUueSAtIHNjcm9sbC5zY3JvbGxUb3AgKiBzY2FsZS55ICsgb2Zmc2V0cy55ICsgaHRtbE9mZnNldC55XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RzKGVsZW1lbnQpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5nZXRDbGllbnRSZWN0cygpKTtcbn1cblxuLy8gR2V0cyB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHNjcm9sbGFibGUgZG9jdW1lbnQgYXJlYSwgZXZlbiBleHRlbmRpbmcgb3V0c2lkZVxuLy8gb2YgdGhlIGA8aHRtbD5gIGFuZCBgPGJvZHk+YCByZWN0IGJvdW5kcyBpZiBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZS5cbmZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCk7XG4gIGNvbnN0IGJvZHkgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgY29uc3Qgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keS5zY3JvbGxXaWR0aCwgYm9keS5jbGllbnRXaWR0aCk7XG4gIGNvbnN0IGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkuc2Nyb2xsSGVpZ2h0LCBib2R5LmNsaWVudEhlaWdodCk7XG4gIGxldCB4ID0gLXNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgY29uc3QgeSA9IC1zY3JvbGwuc2Nyb2xsVG9wO1xuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5KS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keS5jbGllbnRXaWR0aCkgLSB3aWR0aDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3QgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIGxldCB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIGxldCBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgbGV0IHggPSAwO1xuICBsZXQgeSA9IDA7XG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIGNvbnN0IHZpc3VhbFZpZXdwb3J0QmFzZWQgPSBpc1dlYktpdCgpO1xuICAgIGlmICghdmlzdWFsVmlld3BvcnRCYXNlZCB8fCB2aXN1YWxWaWV3cG9ydEJhc2VkICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG4vLyBSZXR1cm5zIHRoZSBpbm5lciBjbGllbnQgcmVjdCwgc3VidHJhY3Rpbmcgc2Nyb2xsYmFycyBpZiBwcmVzZW50LlxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIGNvbnN0IHRvcCA9IGNsaWVudFJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIGNvbnN0IGxlZnQgPSBjbGllbnRSZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIGNvbnN0IHNjYWxlID0gaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldFNjYWxlKGVsZW1lbnQpIDogY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGggKiBzY2FsZS54O1xuICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodCAqIHNjYWxlLnk7XG4gIGNvbnN0IHggPSBsZWZ0ICogc2NhbGUueDtcbiAgY29uc3QgeSA9IHRvcCAqIHNjYWxlLnk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSB7XG4gIGxldCByZWN0O1xuICBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ3ZpZXdwb3J0Jykge1xuICAgIHJlY3QgPSBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpO1xuICB9IGVsc2UgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICdkb2N1bWVudCcpIHtcbiAgICByZWN0ID0gZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSk7XG4gIH0gZWxzZSBpZiAoaXNFbGVtZW50KGNsaXBwaW5nQW5jZXN0b3IpKSB7XG4gICAgcmVjdCA9IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2aXN1YWxPZmZzZXRzID0gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KTtcbiAgICByZWN0ID0ge1xuICAgICAgeDogY2xpcHBpbmdBbmNlc3Rvci54IC0gdmlzdWFsT2Zmc2V0cy54LFxuICAgICAgeTogY2xpcHBpbmdBbmNlc3Rvci55IC0gdmlzdWFsT2Zmc2V0cy55LFxuICAgICAgd2lkdGg6IGNsaXBwaW5nQW5jZXN0b3Iud2lkdGgsXG4gICAgICBoZWlnaHQ6IGNsaXBwaW5nQW5jZXN0b3IuaGVpZ2h0XG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdChyZWN0KTtcbn1cbmZ1bmN0aW9uIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBzdG9wTm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgaWYgKHBhcmVudE5vZGUgPT09IHN0b3BOb2RlIHx8ICFpc0VsZW1lbnQocGFyZW50Tm9kZSkgfHwgaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKHBhcmVudE5vZGUpLnBvc2l0aW9uID09PSAnZml4ZWQnIHx8IGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihwYXJlbnROb2RlLCBzdG9wTm9kZSk7XG59XG5cbi8vIEEgXCJjbGlwcGluZyBhbmNlc3RvclwiIGlzIGFuIGBvdmVyZmxvd2AgZWxlbWVudCB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgY2hpbGQgZWxlbWVudHMuIFRoaXMgcmV0dXJucyBhbGwgY2xpcHBpbmcgYW5jZXN0b3JzXG4vLyBvZiB0aGUgZ2l2ZW4gZWxlbWVudCB1cCB0aGUgdHJlZS5cbmZ1bmN0aW9uIGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCBjYWNoZSkge1xuICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZS5nZXQoZWxlbWVudCk7XG4gIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICB9XG4gIGxldCByZXN1bHQgPSBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50LCBbXSwgZmFsc2UpLmZpbHRlcihlbCA9PiBpc0VsZW1lbnQoZWwpICYmIGdldE5vZGVOYW1lKGVsKSAhPT0gJ2JvZHknKTtcbiAgbGV0IGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgY29uc3QgZWxlbWVudElzRml4ZWQgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnO1xuICBsZXQgY3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/IGdldFBhcmVudE5vZGUoZWxlbWVudCkgOiBlbGVtZW50O1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHdoaWxlIChpc0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpO1xuICAgIGNvbnN0IGN1cnJlbnROb2RlSXNDb250YWluaW5nID0gaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpO1xuICAgIGlmICghY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICAgIH1cbiAgICBjb25zdCBzaG91bGREcm9wQ3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiAhY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgOiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycgJiYgISFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSAmJiBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5jbHVkZXMoY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUucG9zaXRpb24pIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIGN1cnJlbnROb2RlKTtcbiAgICBpZiAoc2hvdWxkRHJvcEN1cnJlbnROb2RlKSB7XG4gICAgICAvLyBEcm9wIG5vbi1jb250YWluaW5nIGJsb2Nrcy5cbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoYW5jZXN0b3IgPT4gYW5jZXN0b3IgIT09IGN1cnJlbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVjb3JkIGxhc3QgY29udGFpbmluZyBibG9jayBmb3IgbmV4dCBpdGVyYXRpb24uXG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IGNvbXB1dGVkU3R5bGU7XG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gIH1cbiAgY2FjaGUuc2V0KGVsZW1lbnQsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEdldHMgdGhlIG1heGltdW0gYXJlYSB0aGF0IHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZHVlIHRvIGFueSBudW1iZXIgb2Zcbi8vIGNsaXBwaW5nIGFuY2VzdG9ycy5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudCxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGVsZW1lbnRDbGlwcGluZ0FuY2VzdG9ycyA9IGJvdW5kYXJ5ID09PSAnY2xpcHBpbmdBbmNlc3RvcnMnID8gaXNUb3BMYXllcihlbGVtZW50KSA/IFtdIDogZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIHRoaXMuX2MpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgY29uc3QgY2xpcHBpbmdBbmNlc3RvcnMgPSBbLi4uZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzLCByb290Qm91bmRhcnldO1xuICBjb25zdCBmaXJzdENsaXBwaW5nQW5jZXN0b3IgPSBjbGlwcGluZ0FuY2VzdG9yc1swXTtcbiAgY29uc3QgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdBbmNlc3RvcnMucmVkdWNlKChhY2NSZWN0LCBjbGlwcGluZ0FuY2VzdG9yKSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgaGVpZ2h0OiBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcCxcbiAgICB4OiBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICB5OiBjbGlwcGluZ1JlY3QudG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChlbGVtZW50LCBvZmZzZXRQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgY29uc3Qgb2Zmc2V0cyA9IGNyZWF0ZUNvb3JkcygwKTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICAvLyBJZiB0aGUgPGJvZHk+IHNjcm9sbGJhciBhcHBlYXJzIG9uIHRoZSBsZWZ0IChlLmcuIFJUTCBzeXN0ZW1zKS4gVXNlXG4gICAgICAvLyBGaXJlZm94IHdpdGggbGF5b3V0LnNjcm9sbGJhci5zaWRlID0gMyBpbiBhYm91dDpjb25maWcgdG8gdGVzdCB0aGlzLlxuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCBodG1sT2Zmc2V0ID0gZG9jdW1lbnRFbGVtZW50ICYmICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCA/IGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwpIDogY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCB4ID0gcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLnggLSBodG1sT2Zmc2V0Lng7XG4gIGNvbnN0IHkgPSByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnkgLSBodG1sT2Zmc2V0Lnk7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNTdGF0aWNQb3NpdGlvbmVkKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnO1xufVxuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHBvbHlmaWxsKSB7XG4gICAgcmV0dXJuIHBvbHlmaWxsKGVsZW1lbnQpO1xuICB9XG4gIGxldCByYXdPZmZzZXRQYXJlbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDtcblxuICAvLyBGaXJlZm94IHJldHVybnMgdGhlIDxodG1sPiBlbGVtZW50IGFzIHRoZSBvZmZzZXRQYXJlbnQgaWYgaXQncyBub24tc3RhdGljLFxuICAvLyB3aGlsZSBDaHJvbWUgYW5kIFNhZmFyaSByZXR1cm4gdGhlIDxib2R5PiBlbGVtZW50LiBUaGUgPGJvZHk+IGVsZW1lbnQgbXVzdFxuICAvLyBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlIGNvcnJlY3QgY2FsY3VsYXRpb25zIGV2ZW4gaWYgdGhlIDxodG1sPiBlbGVtZW50IGlzXG4gIC8vIG5vbi1zdGF0aWMuXG4gIGlmIChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgPT09IHJhd09mZnNldFBhcmVudCkge1xuICAgIHJhd09mZnNldFBhcmVudCA9IHJhd09mZnNldFBhcmVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cbiAgcmV0dXJuIHJhd09mZnNldFBhcmVudDtcbn1cblxuLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cbmZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmIChpc1RvcExheWVyKGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBsZXQgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICB3aGlsZSAoc3ZnT2Zmc2V0UGFyZW50ICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgaWYgKGlzRWxlbWVudChzdmdPZmZzZXRQYXJlbnQpICYmICFpc1N0YXRpY1Bvc2l0aW9uZWQoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgICByZXR1cm4gc3ZnT2Zmc2V0UGFyZW50O1xuICAgICAgfVxuICAgICAgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShzdmdPZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGxldCBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKTtcbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQsIHBvbHlmaWxsKTtcbiAgfVxuICBpZiAob2Zmc2V0UGFyZW50ICYmIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpICYmICFpc0NvbnRhaW5pbmdCbG9jayhvZmZzZXRQYXJlbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW47XG59XG5cbmNvbnN0IGdldEVsZW1lbnRSZWN0cyA9IGFzeW5jIGZ1bmN0aW9uIChkYXRhKSB7XG4gIGNvbnN0IGdldE9mZnNldFBhcmVudEZuID0gdGhpcy5nZXRPZmZzZXRQYXJlbnQgfHwgZ2V0T2Zmc2V0UGFyZW50O1xuICBjb25zdCBnZXREaW1lbnNpb25zRm4gPSB0aGlzLmdldERpbWVuc2lvbnM7XG4gIGNvbnN0IGZsb2F0aW5nRGltZW5zaW9ucyA9IGF3YWl0IGdldERpbWVuc2lvbnNGbihkYXRhLmZsb2F0aW5nKTtcbiAgcmV0dXJuIHtcbiAgICByZWZlcmVuY2U6IGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGRhdGEucmVmZXJlbmNlLCBhd2FpdCBnZXRPZmZzZXRQYXJlbnRGbihkYXRhLmZsb2F0aW5nKSwgZGF0YS5zdHJhdGVneSksXG4gICAgZmxvYXRpbmc6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IGZsb2F0aW5nRGltZW5zaW9ucy53aWR0aCxcbiAgICAgIGhlaWdodDogZmxvYXRpbmdEaW1lbnNpb25zLmhlaWdodFxuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGlzUlRMKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZGlyZWN0aW9uID09PSAncnRsJztcbn1cblxuY29uc3QgcGxhdGZvcm0gPSB7XG4gIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0LFxuICBnZXREb2N1bWVudEVsZW1lbnQsXG4gIGdldENsaXBwaW5nUmVjdCxcbiAgZ2V0T2Zmc2V0UGFyZW50LFxuICBnZXRFbGVtZW50UmVjdHMsXG4gIGdldENsaWVudFJlY3RzLFxuICBnZXREaW1lbnNpb25zLFxuICBnZXRTY2FsZSxcbiAgaXNFbGVtZW50LFxuICBpc1JUTFxufTtcblxuLy8gaHR0cHM6Ly9zYW10aG9yLmF1LzIwMjEvb2JzZXJ2aW5nLWRvbS9cbmZ1bmN0aW9uIG9ic2VydmVNb3ZlKGVsZW1lbnQsIG9uTW92ZSkge1xuICBsZXQgaW8gPSBudWxsO1xuICBsZXQgdGltZW91dElkO1xuICBjb25zdCByb290ID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIHZhciBfaW87XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgKF9pbyA9IGlvKSA9PSBudWxsIHx8IF9pby5kaXNjb25uZWN0KCk7XG4gICAgaW8gPSBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIHJlZnJlc2goc2tpcCwgdGhyZXNob2xkKSB7XG4gICAgaWYgKHNraXAgPT09IHZvaWQgMCkge1xuICAgICAgc2tpcCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICAgIHRocmVzaG9sZCA9IDE7XG4gICAgfVxuICAgIGNsZWFudXAoKTtcbiAgICBjb25zdCB7XG4gICAgICBsZWZ0LFxuICAgICAgdG9wLFxuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHRcbiAgICB9ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBpZiAoIXNraXApIHtcbiAgICAgIG9uTW92ZSgpO1xuICAgIH1cbiAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5zZXRUb3AgPSBmbG9vcih0b3ApO1xuICAgIGNvbnN0IGluc2V0UmlnaHQgPSBmbG9vcihyb290LmNsaWVudFdpZHRoIC0gKGxlZnQgKyB3aWR0aCkpO1xuICAgIGNvbnN0IGluc2V0Qm90dG9tID0gZmxvb3Iocm9vdC5jbGllbnRIZWlnaHQgLSAodG9wICsgaGVpZ2h0KSk7XG4gICAgY29uc3QgaW5zZXRMZWZ0ID0gZmxvb3IobGVmdCk7XG4gICAgY29uc3Qgcm9vdE1hcmdpbiA9IC1pbnNldFRvcCArIFwicHggXCIgKyAtaW5zZXRSaWdodCArIFwicHggXCIgKyAtaW5zZXRCb3R0b20gKyBcInB4IFwiICsgLWluc2V0TGVmdCArIFwicHhcIjtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdE1hcmdpbixcbiAgICAgIHRocmVzaG9sZDogbWF4KDAsIG1pbigxLCB0aHJlc2hvbGQpKSB8fCAxXG4gICAgfTtcbiAgICBsZXQgaXNGaXJzdFVwZGF0ZSA9IHRydWU7XG4gICAgZnVuY3Rpb24gaGFuZGxlT2JzZXJ2ZShlbnRyaWVzKSB7XG4gICAgICBjb25zdCByYXRpbyA9IGVudHJpZXNbMF0uaW50ZXJzZWN0aW9uUmF0aW87XG4gICAgICBpZiAocmF0aW8gIT09IHRocmVzaG9sZCkge1xuICAgICAgICBpZiAoIWlzRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgICByZXR1cm4gcmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmF0aW8pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIGNsaXBwZWQsIHRoZSByYXRpbyBpcyAwLiBUaHJvdHRsZSB0aGUgcmVmcmVzaFxuICAgICAgICAgIC8vIHRvIHByZXZlbnQgYW4gaW5maW5pdGUgbG9vcCBvZiB1cGRhdGVzLlxuICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgcmVmcmVzaChmYWxzZSwgMWUtNyk7XG4gICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVmcmVzaChmYWxzZSwgcmF0aW8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpc0ZpcnN0VXBkYXRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gT2xkZXIgYnJvd3NlcnMgZG9uJ3Qgc3VwcG9ydCBhIGBkb2N1bWVudGAgYXMgdGhlIHJvb3QgYW5kIHdpbGwgdGhyb3cgYW5cbiAgICAvLyBlcnJvci5cbiAgICB0cnkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAvLyBIYW5kbGUgPGlmcmFtZT5zXG4gICAgICAgIHJvb3Q6IHJvb3Qub3duZXJEb2N1bWVudFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlvLm9ic2VydmUoZWxlbWVudCk7XG4gIH1cbiAgcmVmcmVzaCh0cnVlKTtcbiAgcmV0dXJuIGNsZWFudXA7XG59XG5cbi8qKlxuICogQXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aGVuIG5lY2Vzc2FyeS5cbiAqIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIG1vdW50ZWQgb24gdGhlIERPTSBvclxuICogdmlzaWJsZSBvbiB0aGUgc2NyZWVuLlxuICogQHJldHVybnMgY2xlYW51cCBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXNcbiAqIHJlbW92ZWQgZnJvbSB0aGUgRE9NIG9yIGhpZGRlbiBmcm9tIHRoZSBzY3JlZW4uXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1VwZGF0ZVxuICovXG5mdW5jdGlvbiBhdXRvVXBkYXRlKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHVwZGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBhbmNlc3RvclNjcm9sbCA9IHRydWUsXG4gICAgYW5jZXN0b3JSZXNpemUgPSB0cnVlLFxuICAgIGVsZW1lbnRSZXNpemUgPSB0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgbGF5b3V0U2hpZnQgPSB0eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgYW5pbWF0aW9uRnJhbWUgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcmVmZXJlbmNlRWwgPSB1bndyYXBFbGVtZW50KHJlZmVyZW5jZSk7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGFuY2VzdG9yU2Nyb2xsIHx8IGFuY2VzdG9yUmVzaXplID8gWy4uLihyZWZlcmVuY2VFbCA/IGdldE92ZXJmbG93QW5jZXN0b3JzKHJlZmVyZW5jZUVsKSA6IFtdKSwgLi4uZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZmxvYXRpbmcpXSA6IFtdO1xuICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlXG4gICAgfSk7XG4gICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgfSk7XG4gIGNvbnN0IGNsZWFudXBJbyA9IHJlZmVyZW5jZUVsICYmIGxheW91dFNoaWZ0ID8gb2JzZXJ2ZU1vdmUocmVmZXJlbmNlRWwsIHVwZGF0ZSkgOiBudWxsO1xuICBsZXQgcmVvYnNlcnZlRnJhbWUgPSAtMTtcbiAgbGV0IHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgaWYgKGVsZW1lbnRSZXNpemUpIHtcbiAgICByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihfcmVmID0+IHtcbiAgICAgIGxldCBbZmlyc3RFbnRyeV0gPSBfcmVmO1xuICAgICAgaWYgKGZpcnN0RW50cnkgJiYgZmlyc3RFbnRyeS50YXJnZXQgPT09IHJlZmVyZW5jZUVsICYmIHJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgIC8vIFByZXZlbnQgdXBkYXRlIGxvb3BzIHdoZW4gdXNpbmcgdGhlIGBzaXplYCBtaWRkbGV3YXJlLlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzE3NDBcbiAgICAgICAgcmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmVvYnNlcnZlRnJhbWUpO1xuICAgICAgICByZW9ic2VydmVGcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgdmFyIF9yZXNpemVPYnNlcnZlcjtcbiAgICAgICAgICAoX3Jlc2l6ZU9ic2VydmVyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyLm9ic2VydmUoZmxvYXRpbmcpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHVwZGF0ZSgpO1xuICAgIH0pO1xuICAgIGlmIChyZWZlcmVuY2VFbCAmJiAhYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUocmVmZXJlbmNlRWwpO1xuICAgIH1cbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgfVxuICBsZXQgZnJhbWVJZDtcbiAgbGV0IHByZXZSZWZSZWN0ID0gYW5pbWF0aW9uRnJhbWUgPyBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKSA6IG51bGw7XG4gIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgIGZyYW1lTG9vcCgpO1xuICB9XG4gIGZ1bmN0aW9uIGZyYW1lTG9vcCgpIHtcbiAgICBjb25zdCBuZXh0UmVmUmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpO1xuICAgIGlmIChwcmV2UmVmUmVjdCAmJiAobmV4dFJlZlJlY3QueCAhPT0gcHJldlJlZlJlY3QueCB8fCBuZXh0UmVmUmVjdC55ICE9PSBwcmV2UmVmUmVjdC55IHx8IG5leHRSZWZSZWN0LndpZHRoICE9PSBwcmV2UmVmUmVjdC53aWR0aCB8fCBuZXh0UmVmUmVjdC5oZWlnaHQgIT09IHByZXZSZWZSZWN0LmhlaWdodCkpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgICBwcmV2UmVmUmVjdCA9IG5leHRSZWZSZWN0O1xuICAgIGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnJhbWVMb29wKTtcbiAgfVxuICB1cGRhdGUoKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICB2YXIgX3Jlc2l6ZU9ic2VydmVyMjtcbiAgICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgICBhbmNlc3RvclNjcm9sbCAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpO1xuICAgICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgICB9KTtcbiAgICBjbGVhbnVwSW8gPT0gbnVsbCB8fCBjbGVhbnVwSW8oKTtcbiAgICAoX3Jlc2l6ZU9ic2VydmVyMiA9IHJlc2l6ZU9ic2VydmVyKSA9PSBudWxsIHx8IF9yZXNpemVPYnNlcnZlcjIuZGlzY29ubmVjdCgpO1xuICAgIHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lSWQpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBvZiBvdmVyZmxvdyBzaWRlIG9mZnNldHMgdGhhdCBkZXRlcm1pbmUgaG93IG11Y2ggdGhlXG4gKiBlbGVtZW50IGlzIG92ZXJmbG93aW5nIGEgZ2l2ZW4gY2xpcHBpbmcgYm91bmRhcnkgb24gZWFjaCBzaWRlLlxuICogLSBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBib3VuZGFyeSBieSB0aGF0IG51bWJlciBvZiBwaXhlbHNcbiAqIC0gbmVnYXRpdmUgPSBob3cgbWFueSBwaXhlbHMgbGVmdCBiZWZvcmUgaXQgd2lsbCBvdmVyZmxvd1xuICogLSAwID0gbGllcyBmbHVzaCB3aXRoIHRoZSBib3VuZGFyeVxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2RldGVjdE92ZXJmbG93XG4gKi9cbmNvbnN0IGRldGVjdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3ckMTtcblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcGxhY2VtZW50IGJ5IHRyYW5zbGF0aW5nIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZVxuICogc3BlY2lmaWVkIGF4ZXMuXG4gKiBBIG51bWJlciAoc2hvcnRoYW5kIGZvciBgbWFpbkF4aXNgIG9yIGRpc3RhbmNlKSwgb3IgYW4gYXhlcyBjb25maWd1cmF0aW9uXG4gKiBvYmplY3QgbWF5IGJlIHBhc3NlZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXRcbiAqL1xuY29uc3Qgb2Zmc2V0ID0gb2Zmc2V0JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGNob29zaW5nIHRoZSBwbGFjZW1lbnRcbiAqIHRoYXQgaGFzIHRoZSBtb3N0IHNwYWNlIGF2YWlsYWJsZSBhdXRvbWF0aWNhbGx5LCB3aXRob3V0IG5lZWRpbmcgdG8gc3BlY2lmeSBhXG4gKiBwcmVmZXJyZWQgcGxhY2VtZW50LiBBbHRlcm5hdGl2ZSB0byBgZmxpcGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1BsYWNlbWVudFxuICovXG5jb25zdCBhdXRvUGxhY2VtZW50ID0gYXV0b1BsYWNlbWVudCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBzaGlmdGluZyBpdCBpbiBvcmRlciB0b1xuICoga2VlcCBpdCBpbiB2aWV3IHdoZW4gaXQgd2lsbCBvdmVyZmxvdyB0aGUgY2xpcHBpbmcgYm91bmRhcnkuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2hpZnRcbiAqL1xuY29uc3Qgc2hpZnQgPSBzaGlmdCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBmbGlwcGluZyB0aGUgYHBsYWNlbWVudGBcbiAqIGluIG9yZGVyIHRvIGtlZXAgaXQgaW4gdmlldyB3aGVuIHRoZSBwcmVmZXJyZWQgcGxhY2VtZW50KHMpIHdpbGwgb3ZlcmZsb3cgdGhlXG4gKiBjbGlwcGluZyBib3VuZGFyeS4gQWx0ZXJuYXRpdmUgdG8gYGF1dG9QbGFjZW1lbnRgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2ZsaXBcbiAqL1xuY29uc3QgZmxpcCA9IGZsaXAkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gc2l6ZSQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gaGlkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBpbiBhcHBsaWNhYmxlIHNpdHVhdGlvbnMsIHN1Y2ggYXNcbiAqIHdoZW4gaXQgaXMgbm90IGluIHRoZSBzYW1lIGNsaXBwaW5nIGNvbnRleHQgYXMgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2hpZGVcbiAqL1xuY29uc3QgaGlkZSA9IGhpZGUkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc28gdGhhdCBpdFxuICogYXBwZWFycyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSBhcnJvdyQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBpbmxpbmUkMTtcblxuLyoqXG4gKiBCdWlsdC1pbiBgbGltaXRlcmAgdGhhdCB3aWxsIHN0b3AgYHNoaWZ0KClgIGF0IGEgY2VydGFpbiBwb2ludC5cbiAqL1xuY29uc3QgbGltaXRTaGlmdCA9IGxpbWl0U2hpZnQkMTtcblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgdGhhdCB3aWxsIHBsYWNlIHRoZSBmbG9hdGluZyBlbGVtZW50XG4gKiBuZXh0IHRvIGEgZ2l2ZW4gcmVmZXJlbmNlIGVsZW1lbnQuXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IChyZWZlcmVuY2UsIGZsb2F0aW5nLCBvcHRpb25zKSA9PiB7XG4gIC8vIFRoaXMgY2FjaGVzIHRoZSBleHBlbnNpdmUgYGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9yc2AgZnVuY3Rpb24gc28gdGhhdFxuICAvLyBtdWx0aXBsZSBsaWZlY3ljbGUgcmVzZXRzIHJlLXVzZSB0aGUgc2FtZSByZXN1bHQuIEl0IG9ubHkgbGl2ZXMgZm9yIGFcbiAgLy8gc2luZ2xlIGNhbGwuIElmIG90aGVyIGZ1bmN0aW9ucyBiZWNvbWUgZXhwZW5zaXZlLCB3ZSBjYW4gYWRkIHRoZW0gYXMgd2VsbC5cbiAgY29uc3QgY2FjaGUgPSBuZXcgTWFwKCk7XG4gIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB7XG4gICAgcGxhdGZvcm0sXG4gICAgLi4ub3B0aW9uc1xuICB9O1xuICBjb25zdCBwbGF0Zm9ybVdpdGhDYWNoZSA9IHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLnBsYXRmb3JtLFxuICAgIF9jOiBjYWNoZVxuICB9O1xuICByZXR1cm4gY29tcHV0ZVBvc2l0aW9uJDEocmVmZXJlbmNlLCBmbG9hdGluZywge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMsXG4gICAgcGxhdGZvcm06IHBsYXRmb3JtV2l0aENhY2hlXG4gIH0pO1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBwbGF0Zm9ybSwgc2hpZnQsIHNpemUgfTtcbiIsImltcG9ydCB7IHVzZUxheW91dEVmZmVjdCB9IGZyb20gJ3JlYWN0JztcblxudmFyIGluZGV4ID0gdXNlTGF5b3V0RWZmZWN0IDtcblxuZXhwb3J0IHsgaW5kZXggYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMic7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcyc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcywgY3NzIGFzIGNzcyQyIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXknO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllcyc7XG5pbXBvcnQgX3R5cGVvZiBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YnO1xuaW1wb3J0IF90YWdnZWRUZW1wbGF0ZUxpdGVyYWwgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdGFnZ2VkVGVtcGxhdGVMaXRlcmFsJztcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHknO1xuaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlTWVtbywgdXNlQ2FsbGJhY2ssIGNyZWF0ZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IHsgYXV0b1VwZGF0ZSB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHVzZUxheW91dEVmZmVjdCBmcm9tICd1c2UtaXNvbW9ycGhpYy1sYXlvdXQtZWZmZWN0JztcblxudmFyIF9leGNsdWRlZCQ0ID0gW1wiY2xhc3NOYW1lXCIsIFwiY2xlYXJWYWx1ZVwiLCBcImN4XCIsIFwiZ2V0U3R5bGVzXCIsIFwiZ2V0Q2xhc3NOYW1lc1wiLCBcImdldFZhbHVlXCIsIFwiaGFzVmFsdWVcIiwgXCJpc011bHRpXCIsIFwiaXNSdGxcIiwgXCJvcHRpb25zXCIsIFwic2VsZWN0T3B0aW9uXCIsIFwic2VsZWN0UHJvcHNcIiwgXCJzZXRWYWx1ZVwiLCBcInRoZW1lXCJdO1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBOTyBPUFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBub29wID0gZnVuY3Rpb24gbm9vcCgpIHt9O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENsYXNzIE5hbWUgUHJlZml4ZXJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgY29tcG9uZW50IHN0YXRlIGZvciBzdHlsaW5nIHdpdGggY2xhc3MgbmFtZXMuXG5cbiBFeHBlY3RzIGFuIGFycmF5IG9mIHN0cmluZ3MgT1IgYSBzdHJpbmcvb2JqZWN0IHBhaXI6XG4gLSBjbGFzc05hbWUoWydjb21wJywgJ2NvbXAtYXJnJywgJ2NvbXAtYXJnLTInXSlcbiAgIEByZXR1cm5zICdyZWFjdC1zZWxlY3RfX2NvbXAgcmVhY3Qtc2VsZWN0X19jb21wLWFyZyByZWFjdC1zZWxlY3RfX2NvbXAtYXJnLTInXG4gLSBjbGFzc05hbWUoJ2NvbXAnLCB7IHNvbWU6IHRydWUsIHN0YXRlOiBmYWxzZSB9KVxuICAgQHJldHVybnMgJ3JlYWN0LXNlbGVjdF9fY29tcCByZWFjdC1zZWxlY3RfX2NvbXAtLXNvbWUnXG4qL1xuZnVuY3Rpb24gYXBwbHlQcmVmaXhUb05hbWUocHJlZml4LCBuYW1lKSB7XG4gIGlmICghbmFtZSkge1xuICAgIHJldHVybiBwcmVmaXg7XG4gIH0gZWxzZSBpZiAobmFtZVswXSA9PT0gJy0nKSB7XG4gICAgcmV0dXJuIHByZWZpeCArIG5hbWU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHByZWZpeCArICdfXycgKyBuYW1lO1xuICB9XG59XG5mdW5jdGlvbiBjbGFzc05hbWVzKHByZWZpeCwgc3RhdGUpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGNsYXNzTmFtZUxpc3QgPSBuZXcgQXJyYXkoX2xlbiA+IDIgPyBfbGVuIC0gMiA6IDApLCBfa2V5ID0gMjsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGNsYXNzTmFtZUxpc3RbX2tleSAtIDJdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG4gIHZhciBhcnIgPSBbXS5jb25jYXQoY2xhc3NOYW1lTGlzdCk7XG4gIGlmIChzdGF0ZSAmJiBwcmVmaXgpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gc3RhdGUpIHtcbiAgICAgIGlmIChzdGF0ZS5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIHN0YXRlW2tleV0pIHtcbiAgICAgICAgYXJyLnB1c2goXCJcIi5jb25jYXQoYXBwbHlQcmVmaXhUb05hbWUocHJlZml4LCBrZXkpKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBhcnIuZmlsdGVyKGZ1bmN0aW9uIChpKSB7XG4gICAgcmV0dXJuIGk7XG4gIH0pLm1hcChmdW5jdGlvbiAoaSkge1xuICAgIHJldHVybiBTdHJpbmcoaSkudHJpbSgpO1xuICB9KS5qb2luKCcgJyk7XG59XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENsZWFuIFZhbHVlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGNsZWFuVmFsdWUgPSBmdW5jdGlvbiBjbGVhblZhbHVlKHZhbHVlKSB7XG4gIGlmIChpc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLmZpbHRlcihCb29sZWFuKTtcbiAgaWYgKF90eXBlb2YodmFsdWUpID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkgcmV0dXJuIFt2YWx1ZV07XG4gIHJldHVybiBbXTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ2xlYW4gQ29tbW9uIFByb3BzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGNsZWFuQ29tbW9uUHJvcHMgPSBmdW5jdGlvbiBjbGVhbkNvbW1vblByb3BzKHByb3BzKSB7XG4gIC8vY2xhc3NOYW1lXG4gIHByb3BzLmNsYXNzTmFtZTtcbiAgICBwcm9wcy5jbGVhclZhbHVlO1xuICAgIHByb3BzLmN4O1xuICAgIHByb3BzLmdldFN0eWxlcztcbiAgICBwcm9wcy5nZXRDbGFzc05hbWVzO1xuICAgIHByb3BzLmdldFZhbHVlO1xuICAgIHByb3BzLmhhc1ZhbHVlO1xuICAgIHByb3BzLmlzTXVsdGk7XG4gICAgcHJvcHMuaXNSdGw7XG4gICAgcHJvcHMub3B0aW9ucztcbiAgICBwcm9wcy5zZWxlY3RPcHRpb247XG4gICAgcHJvcHMuc2VsZWN0UHJvcHM7XG4gICAgcHJvcHMuc2V0VmFsdWU7XG4gICAgcHJvcHMudGhlbWU7XG4gICAgdmFyIGlubmVyUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZCQ0KTtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe30sIGlubmVyUHJvcHMpO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHZXQgU3R5bGUgUHJvcHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgZ2V0U3R5bGVQcm9wcyA9IGZ1bmN0aW9uIGdldFN0eWxlUHJvcHMocHJvcHMsIG5hbWUsIGNsYXNzTmFtZXNTdGF0ZSkge1xuICB2YXIgY3ggPSBwcm9wcy5jeCxcbiAgICBnZXRTdHlsZXMgPSBwcm9wcy5nZXRTdHlsZXMsXG4gICAgZ2V0Q2xhc3NOYW1lcyA9IHByb3BzLmdldENsYXNzTmFtZXMsXG4gICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICByZXR1cm4ge1xuICAgIGNzczogZ2V0U3R5bGVzKG5hbWUsIHByb3BzKSxcbiAgICBjbGFzc05hbWU6IGN4KGNsYXNzTmFtZXNTdGF0ZSAhPT0gbnVsbCAmJiBjbGFzc05hbWVzU3RhdGUgIT09IHZvaWQgMCA/IGNsYXNzTmFtZXNTdGF0ZSA6IHt9LCBnZXRDbGFzc05hbWVzKG5hbWUsIHByb3BzKSwgY2xhc3NOYW1lKVxuICB9O1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIYW5kbGUgSW5wdXQgQ2hhbmdlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZnVuY3Rpb24gaGFuZGxlSW5wdXRDaGFuZ2UoaW5wdXRWYWx1ZSwgYWN0aW9uTWV0YSwgb25JbnB1dENoYW5nZSkge1xuICBpZiAob25JbnB1dENoYW5nZSkge1xuICAgIHZhciBfbmV3VmFsdWUgPSBvbklucHV0Q2hhbmdlKGlucHV0VmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgIGlmICh0eXBlb2YgX25ld1ZhbHVlID09PSAnc3RyaW5nJykgcmV0dXJuIF9uZXdWYWx1ZTtcbiAgfVxuICByZXR1cm4gaW5wdXRWYWx1ZTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY3JvbGwgSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmZ1bmN0aW9uIGlzRG9jdW1lbnRFbGVtZW50KGVsKSB7XG4gIHJldHVybiBbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBkb2N1bWVudC5ib2R5LCB3aW5kb3ddLmluZGV4T2YoZWwpID4gLTE7XG59XG5cbi8vIE5vcm1hbGl6ZWQgU2Nyb2xsIFRvcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZWRIZWlnaHQoZWwpIHtcbiAgaWYgKGlzRG9jdW1lbnRFbGVtZW50KGVsKSkge1xuICAgIHJldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gIH1cbiAgcmV0dXJuIGVsLmNsaWVudEhlaWdodDtcbn1cblxuLy8gTm9ybWFsaXplZCBzY3JvbGxUbyAmIHNjcm9sbFRvcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIGdldFNjcm9sbFRvcChlbCkge1xuICBpZiAoaXNEb2N1bWVudEVsZW1lbnQoZWwpKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgfVxuICByZXR1cm4gZWwuc2Nyb2xsVG9wO1xufVxuZnVuY3Rpb24gc2Nyb2xsVG8oZWwsIHRvcCkge1xuICAvLyB3aXRoIGEgc2Nyb2xsIGRpc3RhbmNlLCB3ZSBwZXJmb3JtIHNjcm9sbCBvbiB0aGUgZWxlbWVudFxuICBpZiAoaXNEb2N1bWVudEVsZW1lbnQoZWwpKSB7XG4gICAgd2luZG93LnNjcm9sbFRvKDAsIHRvcCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGVsLnNjcm9sbFRvcCA9IHRvcDtcbn1cblxuLy8gR2V0IFNjcm9sbCBQYXJlbnRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQoZWxlbWVudCkge1xuICB2YXIgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICB2YXIgZXhjbHVkZVN0YXRpY1BhcmVudCA9IHN0eWxlLnBvc2l0aW9uID09PSAnYWJzb2x1dGUnO1xuICB2YXIgb3ZlcmZsb3dSeCA9IC8oYXV0b3xzY3JvbGwpLztcbiAgaWYgKHN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnKSByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICBmb3IgKHZhciBwYXJlbnQgPSBlbGVtZW50OyBwYXJlbnQgPSBwYXJlbnQucGFyZW50RWxlbWVudDspIHtcbiAgICBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUocGFyZW50KTtcbiAgICBpZiAoZXhjbHVkZVN0YXRpY1BhcmVudCAmJiBzdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAob3ZlcmZsb3dSeC50ZXN0KHN0eWxlLm92ZXJmbG93ICsgc3R5bGUub3ZlcmZsb3dZICsgc3R5bGUub3ZlcmZsb3dYKSkge1xuICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbn1cblxuLy8gQW5pbWF0ZWQgU2Nyb2xsIFRvXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gIEBwYXJhbSB0OiB0aW1lIChlbGFwc2VkKVxuICBAcGFyYW0gYjogaW5pdGlhbCB2YWx1ZVxuICBAcGFyYW0gYzogYW1vdW50IG9mIGNoYW5nZVxuICBAcGFyYW0gZDogZHVyYXRpb25cbiovXG5mdW5jdGlvbiBlYXNlT3V0Q3ViaWModCwgYiwgYywgZCkge1xuICByZXR1cm4gYyAqICgodCA9IHQgLyBkIC0gMSkgKiB0ICogdCArIDEpICsgYjtcbn1cbmZ1bmN0aW9uIGFuaW1hdGVkU2Nyb2xsVG8oZWxlbWVudCwgdG8pIHtcbiAgdmFyIGR1cmF0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiAyMDA7XG4gIHZhciBjYWxsYmFjayA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogbm9vcDtcbiAgdmFyIHN0YXJ0ID0gZ2V0U2Nyb2xsVG9wKGVsZW1lbnQpO1xuICB2YXIgY2hhbmdlID0gdG8gLSBzdGFydDtcbiAgdmFyIGluY3JlbWVudCA9IDEwO1xuICB2YXIgY3VycmVudFRpbWUgPSAwO1xuICBmdW5jdGlvbiBhbmltYXRlU2Nyb2xsKCkge1xuICAgIGN1cnJlbnRUaW1lICs9IGluY3JlbWVudDtcbiAgICB2YXIgdmFsID0gZWFzZU91dEN1YmljKGN1cnJlbnRUaW1lLCBzdGFydCwgY2hhbmdlLCBkdXJhdGlvbik7XG4gICAgc2Nyb2xsVG8oZWxlbWVudCwgdmFsKTtcbiAgICBpZiAoY3VycmVudFRpbWUgPCBkdXJhdGlvbikge1xuICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlU2Nyb2xsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbGJhY2soZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGFuaW1hdGVTY3JvbGwoKTtcbn1cblxuLy8gU2Nyb2xsIEludG8gVmlld1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIHNjcm9sbEludG9WaWV3KG1lbnVFbCwgZm9jdXNlZEVsKSB7XG4gIHZhciBtZW51UmVjdCA9IG1lbnVFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIGZvY3VzZWRSZWN0ID0gZm9jdXNlZEVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB2YXIgb3ZlclNjcm9sbCA9IGZvY3VzZWRFbC5vZmZzZXRIZWlnaHQgLyAzO1xuICBpZiAoZm9jdXNlZFJlY3QuYm90dG9tICsgb3ZlclNjcm9sbCA+IG1lbnVSZWN0LmJvdHRvbSkge1xuICAgIHNjcm9sbFRvKG1lbnVFbCwgTWF0aC5taW4oZm9jdXNlZEVsLm9mZnNldFRvcCArIGZvY3VzZWRFbC5jbGllbnRIZWlnaHQgLSBtZW51RWwub2Zmc2V0SGVpZ2h0ICsgb3ZlclNjcm9sbCwgbWVudUVsLnNjcm9sbEhlaWdodCkpO1xuICB9IGVsc2UgaWYgKGZvY3VzZWRSZWN0LnRvcCAtIG92ZXJTY3JvbGwgPCBtZW51UmVjdC50b3ApIHtcbiAgICBzY3JvbGxUbyhtZW51RWwsIE1hdGgubWF4KGZvY3VzZWRFbC5vZmZzZXRUb3AgLSBvdmVyU2Nyb2xsLCAwKSk7XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHZXQgYm91bmRpbmcgY2xpZW50IG9iamVjdFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIGNhbm5vdCBnZXQga2V5cyB1c2luZyBhcnJheSBub3RhdGlvbiB3aXRoIERPTVJlY3RcbmZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50T2JqKGVsZW1lbnQpIHtcbiAgdmFyIHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICByZXR1cm4ge1xuICAgIGJvdHRvbTogcmVjdC5ib3R0b20sXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodCxcbiAgICBsZWZ0OiByZWN0LmxlZnQsXG4gICAgcmlnaHQ6IHJlY3QucmlnaHQsXG4gICAgdG9wOiByZWN0LnRvcCxcbiAgICB3aWR0aDogcmVjdC53aWR0aFxuICB9O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRvdWNoIENhcGFiaWxpdHkgRGV0ZWN0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBpc1RvdWNoQ2FwYWJsZSgpIHtcbiAgdHJ5IHtcbiAgICBkb2N1bWVudC5jcmVhdGVFdmVudCgnVG91Y2hFdmVudCcpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTW9iaWxlIERldmljZSBEZXRlY3RvclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmZ1bmN0aW9uIGlzTW9iaWxlRGV2aWNlKCkge1xuICB0cnkge1xuICAgIHJldHVybiAvQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8SUVNb2JpbGV8T3BlcmEgTWluaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQYXNzaXZlIEV2ZW50IERldGVjdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3JhZmdyYXBoL2RldGVjdC1pdC9ibG9iL21haW4vc3JjL2luZGV4LnRzI0wxOS1MMzZcbnZhciBwYXNzaXZlT3B0aW9uQWNjZXNzZWQgPSBmYWxzZTtcbnZhciBvcHRpb25zID0ge1xuICBnZXQgcGFzc2l2ZSgpIHtcbiAgICByZXR1cm4gcGFzc2l2ZU9wdGlvbkFjY2Vzc2VkID0gdHJ1ZTtcbiAgfVxufTtcbi8vIGNoZWNrIGZvciBTU1JcbnZhciB3ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB7fTtcbmlmICh3LmFkZEV2ZW50TGlzdGVuZXIgJiYgdy5yZW1vdmVFdmVudExpc3RlbmVyKSB7XG4gIHcuYWRkRXZlbnRMaXN0ZW5lcigncCcsIG5vb3AsIG9wdGlvbnMpO1xuICB3LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3AnLCBub29wLCBmYWxzZSk7XG59XG52YXIgc3VwcG9ydHNQYXNzaXZlRXZlbnRzID0gcGFzc2l2ZU9wdGlvbkFjY2Vzc2VkO1xuZnVuY3Rpb24gbm90TnVsbGlzaChpdGVtKSB7XG4gIHJldHVybiBpdGVtICE9IG51bGw7XG59XG5mdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShhcmcpO1xufVxuZnVuY3Rpb24gdmFsdWVUZXJuYXJ5KGlzTXVsdGksIG11bHRpVmFsdWUsIHNpbmdsZVZhbHVlKSB7XG4gIHJldHVybiBpc011bHRpID8gbXVsdGlWYWx1ZSA6IHNpbmdsZVZhbHVlO1xufVxuZnVuY3Rpb24gc2luZ2xlVmFsdWVBc1ZhbHVlKHNpbmdsZVZhbHVlKSB7XG4gIHJldHVybiBzaW5nbGVWYWx1ZTtcbn1cbmZ1bmN0aW9uIG11bHRpVmFsdWVBc1ZhbHVlKG11bHRpVmFsdWUpIHtcbiAgcmV0dXJuIG11bHRpVmFsdWU7XG59XG52YXIgcmVtb3ZlUHJvcHMgPSBmdW5jdGlvbiByZW1vdmVQcm9wcyhwcm9wc09iaikge1xuICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIHByb3BlcnRpZXMgPSBuZXcgQXJyYXkoX2xlbjIgPiAxID8gX2xlbjIgLSAxIDogMCksIF9rZXkyID0gMTsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgIHByb3BlcnRpZXNbX2tleTIgLSAxXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gIH1cbiAgdmFyIHByb3BzTWFwID0gT2JqZWN0LmVudHJpZXMocHJvcHNPYmopLmZpbHRlcihmdW5jdGlvbiAoX3JlZikge1xuICAgIHZhciBfcmVmMiA9IF9zbGljZWRUb0FycmF5KF9yZWYsIDEpLFxuICAgICAga2V5ID0gX3JlZjJbMF07XG4gICAgcmV0dXJuICFwcm9wZXJ0aWVzLmluY2x1ZGVzKGtleSk7XG4gIH0pO1xuICByZXR1cm4gcHJvcHNNYXAucmVkdWNlKGZ1bmN0aW9uIChuZXdQcm9wcywgX3JlZjMpIHtcbiAgICB2YXIgX3JlZjQgPSBfc2xpY2VkVG9BcnJheShfcmVmMywgMiksXG4gICAgICBrZXkgPSBfcmVmNFswXSxcbiAgICAgIHZhbCA9IF9yZWY0WzFdO1xuICAgIG5ld1Byb3BzW2tleV0gPSB2YWw7XG4gICAgcmV0dXJuIG5ld1Byb3BzO1xuICB9LCB7fSk7XG59O1xuXG52YXIgX2V4Y2x1ZGVkJDMgPSBbXCJjaGlsZHJlblwiLCBcImlubmVyUHJvcHNcIl0sXG4gIF9leGNsdWRlZDIkMSA9IFtcImNoaWxkcmVuXCIsIFwiaW5uZXJQcm9wc1wiXTtcbmZ1bmN0aW9uIGdldE1lbnVQbGFjZW1lbnQoX3JlZikge1xuICB2YXIgcHJlZmVycmVkTWF4SGVpZ2h0ID0gX3JlZi5tYXhIZWlnaHQsXG4gICAgbWVudUVsID0gX3JlZi5tZW51RWwsXG4gICAgbWluSGVpZ2h0ID0gX3JlZi5taW5IZWlnaHQsXG4gICAgcHJlZmVycmVkUGxhY2VtZW50ID0gX3JlZi5wbGFjZW1lbnQsXG4gICAgc2hvdWxkU2Nyb2xsID0gX3JlZi5zaG91bGRTY3JvbGwsXG4gICAgaXNGaXhlZFBvc2l0aW9uID0gX3JlZi5pc0ZpeGVkUG9zaXRpb24sXG4gICAgY29udHJvbEhlaWdodCA9IF9yZWYuY29udHJvbEhlaWdodDtcbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChtZW51RWwpO1xuICB2YXIgZGVmYXVsdFN0YXRlID0ge1xuICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgbWF4SGVpZ2h0OiBwcmVmZXJyZWRNYXhIZWlnaHRcbiAgfTtcblxuICAvLyBzb21ldGhpbmcgd2VudCB3cm9uZywgcmV0dXJuIGRlZmF1bHQgc3RhdGVcbiAgaWYgKCFtZW51RWwgfHwgIW1lbnVFbC5vZmZzZXRQYXJlbnQpIHJldHVybiBkZWZhdWx0U3RhdGU7XG5cbiAgLy8gd2UgY2FuJ3QgdHJ1c3QgYHNjcm9sbFBhcmVudC5zY3JvbGxIZWlnaHRgIC0tPiBpdCBtYXkgaW5jcmVhc2Ugd2hlblxuICAvLyB0aGUgbWVudSBpcyByZW5kZXJlZFxuICB2YXIgX3Njcm9sbFBhcmVudCRnZXRCb3VuID0gc2Nyb2xsUGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgIHNjcm9sbEhlaWdodCA9IF9zY3JvbGxQYXJlbnQkZ2V0Qm91bi5oZWlnaHQ7XG4gIHZhciBfbWVudUVsJGdldEJvdW5kaW5nQ2wgPSBtZW51RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgbWVudUJvdHRvbSA9IF9tZW51RWwkZ2V0Qm91bmRpbmdDbC5ib3R0b20sXG4gICAgbWVudUhlaWdodCA9IF9tZW51RWwkZ2V0Qm91bmRpbmdDbC5oZWlnaHQsXG4gICAgbWVudVRvcCA9IF9tZW51RWwkZ2V0Qm91bmRpbmdDbC50b3A7XG4gIHZhciBfbWVudUVsJG9mZnNldFBhcmVudCQgPSBtZW51RWwub2Zmc2V0UGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgIGNvbnRhaW5lclRvcCA9IF9tZW51RWwkb2Zmc2V0UGFyZW50JC50b3A7XG4gIHZhciB2aWV3SGVpZ2h0ID0gaXNGaXhlZFBvc2l0aW9uID8gd2luZG93LmlubmVySGVpZ2h0IDogbm9ybWFsaXplZEhlaWdodChzY3JvbGxQYXJlbnQpO1xuICB2YXIgc2Nyb2xsVG9wID0gZ2V0U2Nyb2xsVG9wKHNjcm9sbFBhcmVudCk7XG4gIHZhciBtYXJnaW5Cb3R0b20gPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKG1lbnVFbCkubWFyZ2luQm90dG9tLCAxMCk7XG4gIHZhciBtYXJnaW5Ub3AgPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKG1lbnVFbCkubWFyZ2luVG9wLCAxMCk7XG4gIHZhciB2aWV3U3BhY2VBYm92ZSA9IGNvbnRhaW5lclRvcCAtIG1hcmdpblRvcDtcbiAgdmFyIHZpZXdTcGFjZUJlbG93ID0gdmlld0hlaWdodCAtIG1lbnVUb3A7XG4gIHZhciBzY3JvbGxTcGFjZUFib3ZlID0gdmlld1NwYWNlQWJvdmUgKyBzY3JvbGxUb3A7XG4gIHZhciBzY3JvbGxTcGFjZUJlbG93ID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gbWVudVRvcDtcbiAgdmFyIHNjcm9sbERvd24gPSBtZW51Qm90dG9tIC0gdmlld0hlaWdodCArIHNjcm9sbFRvcCArIG1hcmdpbkJvdHRvbTtcbiAgdmFyIHNjcm9sbFVwID0gc2Nyb2xsVG9wICsgbWVudVRvcCAtIG1hcmdpblRvcDtcbiAgdmFyIHNjcm9sbER1cmF0aW9uID0gMTYwO1xuICBzd2l0Y2ggKHByZWZlcnJlZFBsYWNlbWVudCkge1xuICAgIGNhc2UgJ2F1dG8nOlxuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAvLyAxOiB0aGUgbWVudSB3aWxsIGZpdCwgZG8gbm90aGluZ1xuICAgICAgaWYgKHZpZXdTcGFjZUJlbG93ID49IG1lbnVIZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgICAgIG1heEhlaWdodDogcHJlZmVycmVkTWF4SGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIDI6IHRoZSBtZW51IHdpbGwgZml0LCBpZiBzY3JvbGxlZFxuICAgICAgaWYgKHNjcm9sbFNwYWNlQmVsb3cgPj0gbWVudUhlaWdodCAmJiAhaXNGaXhlZFBvc2l0aW9uKSB7XG4gICAgICAgIGlmIChzaG91bGRTY3JvbGwpIHtcbiAgICAgICAgICBhbmltYXRlZFNjcm9sbFRvKHNjcm9sbFBhcmVudCwgc2Nyb2xsRG93biwgc2Nyb2xsRHVyYXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyAzOiB0aGUgbWVudSB3aWxsIGZpdCwgaWYgY29uc3RyYWluZWRcbiAgICAgIGlmICghaXNGaXhlZFBvc2l0aW9uICYmIHNjcm9sbFNwYWNlQmVsb3cgPj0gbWluSGVpZ2h0IHx8IGlzRml4ZWRQb3NpdGlvbiAmJiB2aWV3U3BhY2VCZWxvdyA+PSBtaW5IZWlnaHQpIHtcbiAgICAgICAgaWYgKHNob3VsZFNjcm9sbCkge1xuICAgICAgICAgIGFuaW1hdGVkU2Nyb2xsVG8oc2Nyb2xsUGFyZW50LCBzY3JvbGxEb3duLCBzY3JvbGxEdXJhdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB3ZSB3YW50IHRvIHByb3ZpZGUgYXMgbXVjaCBvZiB0aGUgbWVudSBhcyBwb3NzaWJsZSB0byB0aGUgdXNlcixcbiAgICAgICAgLy8gc28gZ2l2ZSB0aGVtIHdoYXRldmVyIGlzIGF2YWlsYWJsZSBiZWxvdyByYXRoZXIgdGhhbiB0aGUgbWluSGVpZ2h0LlxuICAgICAgICB2YXIgY29uc3RyYWluZWRIZWlnaHQgPSBpc0ZpeGVkUG9zaXRpb24gPyB2aWV3U3BhY2VCZWxvdyAtIG1hcmdpbkJvdHRvbSA6IHNjcm9sbFNwYWNlQmVsb3cgLSBtYXJnaW5Cb3R0b207XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IGNvbnN0cmFpbmVkSGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIEZvcmtlZCBiZXZpb3VyIHdoZW4gdGhlcmUgaXNuJ3QgZW5vdWdoIHNwYWNlIGJlbG93XG5cbiAgICAgIC8vIEFVVE86IGZsaXAgdGhlIG1lbnUsIHJlbmRlciBhYm92ZVxuICAgICAgaWYgKHByZWZlcnJlZFBsYWNlbWVudCA9PT0gJ2F1dG8nIHx8IGlzRml4ZWRQb3NpdGlvbikge1xuICAgICAgICAvLyBtYXkgbmVlZCB0byBiZSBjb25zdHJhaW5lZCBhZnRlciBmbGlwcGluZ1xuICAgICAgICB2YXIgX2NvbnN0cmFpbmVkSGVpZ2h0ID0gcHJlZmVycmVkTWF4SGVpZ2h0O1xuICAgICAgICB2YXIgc3BhY2VBYm92ZSA9IGlzRml4ZWRQb3NpdGlvbiA/IHZpZXdTcGFjZUFib3ZlIDogc2Nyb2xsU3BhY2VBYm92ZTtcbiAgICAgICAgaWYgKHNwYWNlQWJvdmUgPj0gbWluSGVpZ2h0KSB7XG4gICAgICAgICAgX2NvbnN0cmFpbmVkSGVpZ2h0ID0gTWF0aC5taW4oc3BhY2VBYm92ZSAtIG1hcmdpbkJvdHRvbSAtIGNvbnRyb2xIZWlnaHQsIHByZWZlcnJlZE1heEhlaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICd0b3AnLFxuICAgICAgICAgIG1heEhlaWdodDogX2NvbnN0cmFpbmVkSGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIEJPVFRPTTogYWxsb3cgYnJvd3NlciB0byBpbmNyZWFzZSBzY3JvbGxhYmxlIGFyZWEgYW5kIGltbWVkaWF0ZWx5IHNldCBzY3JvbGxcbiAgICAgIGlmIChwcmVmZXJyZWRQbGFjZW1lbnQgPT09ICdib3R0b20nKSB7XG4gICAgICAgIGlmIChzaG91bGRTY3JvbGwpIHtcbiAgICAgICAgICBzY3JvbGxUbyhzY3JvbGxQYXJlbnQsIHNjcm9sbERvd24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIC8vIDE6IHRoZSBtZW51IHdpbGwgZml0LCBkbyBub3RoaW5nXG4gICAgICBpZiAodmlld1NwYWNlQWJvdmUgPj0gbWVudUhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBwcmVmZXJyZWRNYXhIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gMjogdGhlIG1lbnUgd2lsbCBmaXQsIGlmIHNjcm9sbGVkXG4gICAgICBpZiAoc2Nyb2xsU3BhY2VBYm92ZSA+PSBtZW51SGVpZ2h0ICYmICFpc0ZpeGVkUG9zaXRpb24pIHtcbiAgICAgICAgaWYgKHNob3VsZFNjcm9sbCkge1xuICAgICAgICAgIGFuaW1hdGVkU2Nyb2xsVG8oc2Nyb2xsUGFyZW50LCBzY3JvbGxVcCwgc2Nyb2xsRHVyYXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyAzOiB0aGUgbWVudSB3aWxsIGZpdCwgaWYgY29uc3RyYWluZWRcbiAgICAgIGlmICghaXNGaXhlZFBvc2l0aW9uICYmIHNjcm9sbFNwYWNlQWJvdmUgPj0gbWluSGVpZ2h0IHx8IGlzRml4ZWRQb3NpdGlvbiAmJiB2aWV3U3BhY2VBYm92ZSA+PSBtaW5IZWlnaHQpIHtcbiAgICAgICAgdmFyIF9jb25zdHJhaW5lZEhlaWdodDIgPSBwcmVmZXJyZWRNYXhIZWlnaHQ7XG5cbiAgICAgICAgLy8gd2Ugd2FudCB0byBwcm92aWRlIGFzIG11Y2ggb2YgdGhlIG1lbnUgYXMgcG9zc2libGUgdG8gdGhlIHVzZXIsXG4gICAgICAgIC8vIHNvIGdpdmUgdGhlbSB3aGF0ZXZlciBpcyBhdmFpbGFibGUgYmVsb3cgcmF0aGVyIHRoYW4gdGhlIG1pbkhlaWdodC5cbiAgICAgICAgaWYgKCFpc0ZpeGVkUG9zaXRpb24gJiYgc2Nyb2xsU3BhY2VBYm92ZSA+PSBtaW5IZWlnaHQgfHwgaXNGaXhlZFBvc2l0aW9uICYmIHZpZXdTcGFjZUFib3ZlID49IG1pbkhlaWdodCkge1xuICAgICAgICAgIF9jb25zdHJhaW5lZEhlaWdodDIgPSBpc0ZpeGVkUG9zaXRpb24gPyB2aWV3U3BhY2VBYm92ZSAtIG1hcmdpblRvcCA6IHNjcm9sbFNwYWNlQWJvdmUgLSBtYXJnaW5Ub3A7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNob3VsZFNjcm9sbCkge1xuICAgICAgICAgIGFuaW1hdGVkU2Nyb2xsVG8oc2Nyb2xsUGFyZW50LCBzY3JvbGxVcCwgc2Nyb2xsRHVyYXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IF9jb25zdHJhaW5lZEhlaWdodDJcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gbm90IGVub3VnaCBzcGFjZSwgdGhlIGJyb3dzZXIgV0lMTCBOT1QgaW5jcmVhc2Ugc2Nyb2xsYWJsZSBhcmVhIHdoZW5cbiAgICAgIC8vIGFic29sdXRlbHkgcG9zaXRpb25lZCBlbGVtZW50IHJlbmRlcmVkIGFib3ZlIHRoZSB2aWV3cG9ydCAob25seSBiZWxvdykuXG4gICAgICAvLyBGbGlwIHRoZSBtZW51LCByZW5kZXIgYmVsb3dcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICAgIG1heEhlaWdodDogcHJlZmVycmVkTWF4SGVpZ2h0XG4gICAgICB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHBsYWNlbWVudCBwcm92aWRlZCBcXFwiXCIuY29uY2F0KHByZWZlcnJlZFBsYWNlbWVudCwgXCJcXFwiLlwiKSk7XG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRTdGF0ZTtcbn1cblxuLy8gTWVudSBDb21wb25lbnRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBhbGlnblRvQ29udHJvbChwbGFjZW1lbnQpIHtcbiAgdmFyIHBsYWNlbWVudFRvQ1NTUHJvcCA9IHtcbiAgICBib3R0b206ICd0b3AnLFxuICAgIHRvcDogJ2JvdHRvbSdcbiAgfTtcbiAgcmV0dXJuIHBsYWNlbWVudCA/IHBsYWNlbWVudFRvQ1NTUHJvcFtwbGFjZW1lbnRdIDogJ2JvdHRvbSc7XG59XG52YXIgY29lcmNlUGxhY2VtZW50ID0gZnVuY3Rpb24gY29lcmNlUGxhY2VtZW50KHApIHtcbiAgcmV0dXJuIHAgPT09ICdhdXRvJyA/ICdib3R0b20nIDogcDtcbn07XG52YXIgbWVudUNTUyA9IGZ1bmN0aW9uIG1lbnVDU1MoX3JlZjIsIHVuc3R5bGVkKSB7XG4gIHZhciBfb2JqZWN0U3ByZWFkMjtcbiAgdmFyIHBsYWNlbWVudCA9IF9yZWYyLnBsYWNlbWVudCxcbiAgICBfcmVmMiR0aGVtZSA9IF9yZWYyLnRoZW1lLFxuICAgIGJvcmRlclJhZGl1cyA9IF9yZWYyJHRoZW1lLmJvcmRlclJhZGl1cyxcbiAgICBzcGFjaW5nID0gX3JlZjIkdGhlbWUuc3BhY2luZyxcbiAgICBjb2xvcnMgPSBfcmVmMiR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKChfb2JqZWN0U3ByZWFkMiA9IHtcbiAgICBsYWJlbDogJ21lbnUnXG4gIH0sIF9kZWZpbmVQcm9wZXJ0eShfb2JqZWN0U3ByZWFkMiwgYWxpZ25Ub0NvbnRyb2wocGxhY2VtZW50KSwgJzEwMCUnKSwgX2RlZmluZVByb3BlcnR5KF9vYmplY3RTcHJlYWQyLCBcInBvc2l0aW9uXCIsICdhYnNvbHV0ZScpLCBfZGVmaW5lUHJvcGVydHkoX29iamVjdFNwcmVhZDIsIFwid2lkdGhcIiwgJzEwMCUnKSwgX2RlZmluZVByb3BlcnR5KF9vYmplY3RTcHJlYWQyLCBcInpJbmRleFwiLCAxKSwgX29iamVjdFNwcmVhZDIpLCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJhY2tncm91bmRDb2xvcjogY29sb3JzLm5ldXRyYWwwLFxuICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzLFxuICAgIGJveFNoYWRvdzogJzAgMCAwIDFweCBoc2xhKDAsIDAlLCAwJSwgMC4xKSwgMCA0cHggMTFweCBoc2xhKDAsIDAlLCAwJSwgMC4xKScsXG4gICAgbWFyZ2luQm90dG9tOiBzcGFjaW5nLm1lbnVHdXR0ZXIsXG4gICAgbWFyZ2luVG9wOiBzcGFjaW5nLm1lbnVHdXR0ZXJcbiAgfSk7XG59O1xudmFyIFBvcnRhbFBsYWNlbWVudENvbnRleHQgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29udGV4dChudWxsKTtcblxuLy8gTk9URTogaW50ZXJuYWwgb25seVxudmFyIE1lbnVQbGFjZXIgPSBmdW5jdGlvbiBNZW51UGxhY2VyKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIG1pbk1lbnVIZWlnaHQgPSBwcm9wcy5taW5NZW51SGVpZ2h0LFxuICAgIG1heE1lbnVIZWlnaHQgPSBwcm9wcy5tYXhNZW51SGVpZ2h0LFxuICAgIG1lbnVQbGFjZW1lbnQgPSBwcm9wcy5tZW51UGxhY2VtZW50LFxuICAgIG1lbnVQb3NpdGlvbiA9IHByb3BzLm1lbnVQb3NpdGlvbixcbiAgICBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXcgPSBwcm9wcy5tZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXcsXG4gICAgdGhlbWUgPSBwcm9wcy50aGVtZTtcbiAgdmFyIF9yZWYzID0gdXNlQ29udGV4dChQb3J0YWxQbGFjZW1lbnRDb250ZXh0KSB8fCB7fSxcbiAgICBzZXRQb3J0YWxQbGFjZW1lbnQgPSBfcmVmMy5zZXRQb3J0YWxQbGFjZW1lbnQ7XG4gIHZhciByZWYgPSB1c2VSZWYobnVsbCk7XG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZShtYXhNZW51SGVpZ2h0KSxcbiAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICBtYXhIZWlnaHQgPSBfdXNlU3RhdGUyWzBdLFxuICAgIHNldE1heEhlaWdodCA9IF91c2VTdGF0ZTJbMV07XG4gIHZhciBfdXNlU3RhdGUzID0gdXNlU3RhdGUobnVsbCksXG4gICAgX3VzZVN0YXRlNCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTMsIDIpLFxuICAgIHBsYWNlbWVudCA9IF91c2VTdGF0ZTRbMF0sXG4gICAgc2V0UGxhY2VtZW50ID0gX3VzZVN0YXRlNFsxXTtcbiAgdmFyIGNvbnRyb2xIZWlnaHQgPSB0aGVtZS5zcGFjaW5nLmNvbnRyb2xIZWlnaHQ7XG4gIHVzZUxheW91dEVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1lbnVFbCA9IHJlZi5jdXJyZW50O1xuICAgIGlmICghbWVudUVsKSByZXR1cm47XG5cbiAgICAvLyBETyBOT1Qgc2Nyb2xsIGlmIHBvc2l0aW9uIGlzIGZpeGVkXG4gICAgdmFyIGlzRml4ZWRQb3NpdGlvbiA9IG1lbnVQb3NpdGlvbiA9PT0gJ2ZpeGVkJztcbiAgICB2YXIgc2hvdWxkU2Nyb2xsID0gbWVudVNob3VsZFNjcm9sbEludG9WaWV3ICYmICFpc0ZpeGVkUG9zaXRpb247XG4gICAgdmFyIHN0YXRlID0gZ2V0TWVudVBsYWNlbWVudCh7XG4gICAgICBtYXhIZWlnaHQ6IG1heE1lbnVIZWlnaHQsXG4gICAgICBtZW51RWw6IG1lbnVFbCxcbiAgICAgIG1pbkhlaWdodDogbWluTWVudUhlaWdodCxcbiAgICAgIHBsYWNlbWVudDogbWVudVBsYWNlbWVudCxcbiAgICAgIHNob3VsZFNjcm9sbDogc2hvdWxkU2Nyb2xsLFxuICAgICAgaXNGaXhlZFBvc2l0aW9uOiBpc0ZpeGVkUG9zaXRpb24sXG4gICAgICBjb250cm9sSGVpZ2h0OiBjb250cm9sSGVpZ2h0XG4gICAgfSk7XG4gICAgc2V0TWF4SGVpZ2h0KHN0YXRlLm1heEhlaWdodCk7XG4gICAgc2V0UGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCk7XG4gICAgc2V0UG9ydGFsUGxhY2VtZW50ID09PSBudWxsIHx8IHNldFBvcnRhbFBsYWNlbWVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2V0UG9ydGFsUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCk7XG4gIH0sIFttYXhNZW51SGVpZ2h0LCBtZW51UGxhY2VtZW50LCBtZW51UG9zaXRpb24sIG1lbnVTaG91bGRTY3JvbGxJbnRvVmlldywgbWluTWVudUhlaWdodCwgc2V0UG9ydGFsUGxhY2VtZW50LCBjb250cm9sSGVpZ2h0XSk7XG4gIHJldHVybiBjaGlsZHJlbih7XG4gICAgcmVmOiByZWYsXG4gICAgcGxhY2VyUHJvcHM6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJvcHMpLCB7fSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQgfHwgY29lcmNlUGxhY2VtZW50KG1lbnVQbGFjZW1lbnQpLFxuICAgICAgbWF4SGVpZ2h0OiBtYXhIZWlnaHRcbiAgICB9KVxuICB9KTtcbn07XG52YXIgTWVudSA9IGZ1bmN0aW9uIE1lbnUocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJSZWYgPSBwcm9wcy5pbm5lclJlZixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcztcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ21lbnUnLCB7XG4gICAgbWVudTogdHJ1ZVxuICB9KSwge1xuICAgIHJlZjogaW5uZXJSZWZcbiAgfSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG52YXIgTWVudSQxID0gTWVudTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZW51IExpc3Rcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgbWVudUxpc3RDU1MgPSBmdW5jdGlvbiBtZW51TGlzdENTUyhfcmVmNCwgdW5zdHlsZWQpIHtcbiAgdmFyIG1heEhlaWdodCA9IF9yZWY0Lm1heEhlaWdodCxcbiAgICBiYXNlVW5pdCA9IF9yZWY0LnRoZW1lLnNwYWNpbmcuYmFzZVVuaXQ7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBtYXhIZWlnaHQ6IG1heEhlaWdodCxcbiAgICBvdmVyZmxvd1k6ICdhdXRvJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAvLyByZXF1aXJlZCBmb3Igb2Zmc2V0W0hlaWdodCwgVG9wXSA+IGtleWJvYXJkIHNjcm9sbFxuICAgIFdlYmtpdE92ZXJmbG93U2Nyb2xsaW5nOiAndG91Y2gnXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgcGFkZGluZ0JvdHRvbTogYmFzZVVuaXQsXG4gICAgcGFkZGluZ1RvcDogYmFzZVVuaXRcbiAgfSk7XG59O1xudmFyIE1lbnVMaXN0ID0gZnVuY3Rpb24gTWVudUxpc3QocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHMsXG4gICAgaW5uZXJSZWYgPSBwcm9wcy5pbm5lclJlZixcbiAgICBpc011bHRpID0gcHJvcHMuaXNNdWx0aTtcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ21lbnVMaXN0Jywge1xuICAgICdtZW51LWxpc3QnOiB0cnVlLFxuICAgICdtZW51LWxpc3QtLWlzLW11bHRpJzogaXNNdWx0aVxuICB9KSwge1xuICAgIHJlZjogaW5uZXJSZWZcbiAgfSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWVudSBOb3RpY2VzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIG5vdGljZUNTUyA9IGZ1bmN0aW9uIG5vdGljZUNTUyhfcmVmNSwgdW5zdHlsZWQpIHtcbiAgdmFyIF9yZWY1JHRoZW1lID0gX3JlZjUudGhlbWUsXG4gICAgYmFzZVVuaXQgPSBfcmVmNSR0aGVtZS5zcGFjaW5nLmJhc2VVbml0LFxuICAgIGNvbG9ycyA9IF9yZWY1JHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBjb2xvcjogY29sb3JzLm5ldXRyYWw0MCxcbiAgICBwYWRkaW5nOiBcIlwiLmNvbmNhdChiYXNlVW5pdCAqIDIsIFwicHggXCIpLmNvbmNhdChiYXNlVW5pdCAqIDMsIFwicHhcIilcbiAgfSk7XG59O1xudmFyIG5vT3B0aW9uc01lc3NhZ2VDU1MgPSBub3RpY2VDU1M7XG52YXIgbG9hZGluZ01lc3NhZ2VDU1MgPSBub3RpY2VDU1M7XG52YXIgTm9PcHRpb25zTWVzc2FnZSA9IGZ1bmN0aW9uIE5vT3B0aW9uc01lc3NhZ2UoX3JlZjYpIHtcbiAgdmFyIF9yZWY2JGNoaWxkcmVuID0gX3JlZjYuY2hpbGRyZW4sXG4gICAgY2hpbGRyZW4gPSBfcmVmNiRjaGlsZHJlbiA9PT0gdm9pZCAwID8gJ05vIG9wdGlvbnMnIDogX3JlZjYkY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IF9yZWY2LmlubmVyUHJvcHMsXG4gICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWY2LCBfZXhjbHVkZWQkMyk7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN0UHJvcHMpLCB7fSwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICBpbm5lclByb3BzOiBpbm5lclByb3BzXG4gIH0pLCAnbm9PcHRpb25zTWVzc2FnZScsIHtcbiAgICAnbWVudS1ub3RpY2UnOiB0cnVlLFxuICAgICdtZW51LW5vdGljZS0tbm8tb3B0aW9ucyc6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xudmFyIExvYWRpbmdNZXNzYWdlID0gZnVuY3Rpb24gTG9hZGluZ01lc3NhZ2UoX3JlZjcpIHtcbiAgdmFyIF9yZWY3JGNoaWxkcmVuID0gX3JlZjcuY2hpbGRyZW4sXG4gICAgY2hpbGRyZW4gPSBfcmVmNyRjaGlsZHJlbiA9PT0gdm9pZCAwID8gJ0xvYWRpbmcuLi4nIDogX3JlZjckY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IF9yZWY3LmlubmVyUHJvcHMsXG4gICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWY3LCBfZXhjbHVkZWQyJDEpO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdFByb3BzKSwge30sIHtcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wczogaW5uZXJQcm9wc1xuICB9KSwgJ2xvYWRpbmdNZXNzYWdlJywge1xuICAgICdtZW51LW5vdGljZSc6IHRydWUsXG4gICAgJ21lbnUtbm90aWNlLS1sb2FkaW5nJzogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWVudSBQb3J0YWxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgbWVudVBvcnRhbENTUyA9IGZ1bmN0aW9uIG1lbnVQb3J0YWxDU1MoX3JlZjgpIHtcbiAgdmFyIHJlY3QgPSBfcmVmOC5yZWN0LFxuICAgIG9mZnNldCA9IF9yZWY4Lm9mZnNldCxcbiAgICBwb3NpdGlvbiA9IF9yZWY4LnBvc2l0aW9uO1xuICByZXR1cm4ge1xuICAgIGxlZnQ6IHJlY3QubGVmdCxcbiAgICBwb3NpdGlvbjogcG9zaXRpb24sXG4gICAgdG9wOiBvZmZzZXQsXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgekluZGV4OiAxXG4gIH07XG59O1xudmFyIE1lbnVQb3J0YWwgPSBmdW5jdGlvbiBNZW51UG9ydGFsKHByb3BzKSB7XG4gIHZhciBhcHBlbmRUbyA9IHByb3BzLmFwcGVuZFRvLFxuICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgY29udHJvbEVsZW1lbnQgPSBwcm9wcy5jb250cm9sRWxlbWVudCxcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBtZW51UGxhY2VtZW50ID0gcHJvcHMubWVudVBsYWNlbWVudCxcbiAgICBtZW51UG9zaXRpb24gPSBwcm9wcy5tZW51UG9zaXRpb247XG4gIHZhciBtZW51UG9ydGFsUmVmID0gdXNlUmVmKG51bGwpO1xuICB2YXIgY2xlYW51cFJlZiA9IHVzZVJlZihudWxsKTtcbiAgdmFyIF91c2VTdGF0ZTUgPSB1c2VTdGF0ZShjb2VyY2VQbGFjZW1lbnQobWVudVBsYWNlbWVudCkpLFxuICAgIF91c2VTdGF0ZTYgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGU1LCAyKSxcbiAgICBwbGFjZW1lbnQgPSBfdXNlU3RhdGU2WzBdLFxuICAgIHNldFBvcnRhbFBsYWNlbWVudCA9IF91c2VTdGF0ZTZbMV07XG4gIHZhciBwb3J0YWxQbGFjZW1lbnRDb250ZXh0ID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNldFBvcnRhbFBsYWNlbWVudDogc2V0UG9ydGFsUGxhY2VtZW50XG4gICAgfTtcbiAgfSwgW10pO1xuICB2YXIgX3VzZVN0YXRlNyA9IHVzZVN0YXRlKG51bGwpLFxuICAgIF91c2VTdGF0ZTggPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGU3LCAyKSxcbiAgICBjb21wdXRlZFBvc2l0aW9uID0gX3VzZVN0YXRlOFswXSxcbiAgICBzZXRDb21wdXRlZFBvc2l0aW9uID0gX3VzZVN0YXRlOFsxXTtcbiAgdmFyIHVwZGF0ZUNvbXB1dGVkUG9zaXRpb24gPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFjb250cm9sRWxlbWVudCkgcmV0dXJuO1xuICAgIHZhciByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRPYmooY29udHJvbEVsZW1lbnQpO1xuICAgIHZhciBzY3JvbGxEaXN0YW5jZSA9IG1lbnVQb3NpdGlvbiA9PT0gJ2ZpeGVkJyA/IDAgOiB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgdmFyIG9mZnNldCA9IHJlY3RbcGxhY2VtZW50XSArIHNjcm9sbERpc3RhbmNlO1xuICAgIGlmIChvZmZzZXQgIT09IChjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ub2Zmc2V0KSB8fCByZWN0LmxlZnQgIT09IChjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ucmVjdC5sZWZ0KSB8fCByZWN0LndpZHRoICE9PSAoY29tcHV0ZWRQb3NpdGlvbiA9PT0gbnVsbCB8fCBjb21wdXRlZFBvc2l0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb21wdXRlZFBvc2l0aW9uLnJlY3Qud2lkdGgpKSB7XG4gICAgICBzZXRDb21wdXRlZFBvc2l0aW9uKHtcbiAgICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICAgIHJlY3Q6IHJlY3RcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2NvbnRyb2xFbGVtZW50LCBtZW51UG9zaXRpb24sIHBsYWNlbWVudCwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gbnVsbCB8fCBjb21wdXRlZFBvc2l0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb21wdXRlZFBvc2l0aW9uLm9mZnNldCwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gbnVsbCB8fCBjb21wdXRlZFBvc2l0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb21wdXRlZFBvc2l0aW9uLnJlY3QubGVmdCwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gbnVsbCB8fCBjb21wdXRlZFBvc2l0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb21wdXRlZFBvc2l0aW9uLnJlY3Qud2lkdGhdKTtcbiAgdXNlTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICB1cGRhdGVDb21wdXRlZFBvc2l0aW9uKCk7XG4gIH0sIFt1cGRhdGVDb21wdXRlZFBvc2l0aW9uXSk7XG4gIHZhciBydW5BdXRvVXBkYXRlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgY2xlYW51cFJlZi5jdXJyZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjbGVhbnVwUmVmLmN1cnJlbnQoKTtcbiAgICAgIGNsZWFudXBSZWYuY3VycmVudCA9IG51bGw7XG4gICAgfVxuICAgIGlmIChjb250cm9sRWxlbWVudCAmJiBtZW51UG9ydGFsUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFudXBSZWYuY3VycmVudCA9IGF1dG9VcGRhdGUoY29udHJvbEVsZW1lbnQsIG1lbnVQb3J0YWxSZWYuY3VycmVudCwgdXBkYXRlQ29tcHV0ZWRQb3NpdGlvbiwge1xuICAgICAgICBlbGVtZW50UmVzaXplOiAnUmVzaXplT2JzZXJ2ZXInIGluIHdpbmRvd1xuICAgICAgfSk7XG4gICAgfVxuICB9LCBbY29udHJvbEVsZW1lbnQsIHVwZGF0ZUNvbXB1dGVkUG9zaXRpb25dKTtcbiAgdXNlTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBydW5BdXRvVXBkYXRlKCk7XG4gIH0sIFtydW5BdXRvVXBkYXRlXSk7XG4gIHZhciBzZXRNZW51UG9ydGFsRWxlbWVudCA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChtZW51UG9ydGFsRWxlbWVudCkge1xuICAgIG1lbnVQb3J0YWxSZWYuY3VycmVudCA9IG1lbnVQb3J0YWxFbGVtZW50O1xuICAgIHJ1bkF1dG9VcGRhdGUoKTtcbiAgfSwgW3J1bkF1dG9VcGRhdGVdKTtcblxuICAvLyBiYWlsIGVhcmx5IGlmIHJlcXVpcmVkIGVsZW1lbnRzIGFyZW4ndCBwcmVzZW50XG4gIGlmICghYXBwZW5kVG8gJiYgbWVudVBvc2l0aW9uICE9PSAnZml4ZWQnIHx8ICFjb21wdXRlZFBvc2l0aW9uKSByZXR1cm4gbnVsbDtcblxuICAvLyBzYW1lIHdyYXBwZXIgZWxlbWVudCB3aGV0aGVyIGZpeGVkIG9yIHBvcnRhbGxlZFxuICB2YXIgbWVudVdyYXBwZXIgPSBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe1xuICAgIHJlZjogc2V0TWVudVBvcnRhbEVsZW1lbnRcbiAgfSwgZ2V0U3R5bGVQcm9wcyhfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHByb3BzKSwge30sIHtcbiAgICBvZmZzZXQ6IGNvbXB1dGVkUG9zaXRpb24ub2Zmc2V0LFxuICAgIHBvc2l0aW9uOiBtZW51UG9zaXRpb24sXG4gICAgcmVjdDogY29tcHV0ZWRQb3NpdGlvbi5yZWN0XG4gIH0pLCAnbWVudVBvcnRhbCcsIHtcbiAgICAnbWVudS1wb3J0YWwnOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xuICByZXR1cm4ganN4KFBvcnRhbFBsYWNlbWVudENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogcG9ydGFsUGxhY2VtZW50Q29udGV4dFxuICB9LCBhcHBlbmRUbyA/IC8qI19fUFVSRV9fKi9jcmVhdGVQb3J0YWwobWVudVdyYXBwZXIsIGFwcGVuZFRvKSA6IG1lbnVXcmFwcGVyKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUm9vdCBDb250YWluZXJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgY29udGFpbmVyQ1NTID0gZnVuY3Rpb24gY29udGFpbmVyQ1NTKF9yZWYpIHtcbiAgdmFyIGlzRGlzYWJsZWQgPSBfcmVmLmlzRGlzYWJsZWQsXG4gICAgaXNSdGwgPSBfcmVmLmlzUnRsO1xuICByZXR1cm4ge1xuICAgIGxhYmVsOiAnY29udGFpbmVyJyxcbiAgICBkaXJlY3Rpb246IGlzUnRsID8gJ3J0bCcgOiB1bmRlZmluZWQsXG4gICAgcG9pbnRlckV2ZW50czogaXNEaXNhYmxlZCA/ICdub25lJyA6IHVuZGVmaW5lZCxcbiAgICAvLyBjYW5jZWwgbW91c2UgZXZlbnRzIHdoZW4gZGlzYWJsZWRcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJ1xuICB9O1xufTtcbnZhciBTZWxlY3RDb250YWluZXIgPSBmdW5jdGlvbiBTZWxlY3RDb250YWluZXIocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHMsXG4gICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgaXNSdGwgPSBwcm9wcy5pc1J0bDtcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2NvbnRhaW5lcicsIHtcbiAgICAnLS1pcy1kaXNhYmxlZCc6IGlzRGlzYWJsZWQsXG4gICAgJy0taXMtcnRsJzogaXNSdGxcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFZhbHVlIENvbnRhaW5lclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciB2YWx1ZUNvbnRhaW5lckNTUyA9IGZ1bmN0aW9uIHZhbHVlQ29udGFpbmVyQ1NTKF9yZWYyLCB1bnN0eWxlZCkge1xuICB2YXIgc3BhY2luZyA9IF9yZWYyLnRoZW1lLnNwYWNpbmcsXG4gICAgaXNNdWx0aSA9IF9yZWYyLmlzTXVsdGksXG4gICAgaGFzVmFsdWUgPSBfcmVmMi5oYXNWYWx1ZSxcbiAgICBjb250cm9sU2hvdWxkUmVuZGVyVmFsdWUgPSBfcmVmMi5zZWxlY3RQcm9wcy5jb250cm9sU2hvdWxkUmVuZGVyVmFsdWU7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBkaXNwbGF5OiBpc011bHRpICYmIGhhc1ZhbHVlICYmIGNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZSA/ICdmbGV4JyA6ICdncmlkJyxcbiAgICBmbGV4OiAxLFxuICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAgV2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6ICd0b3VjaCcsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgcGFkZGluZzogXCJcIi5jb25jYXQoc3BhY2luZy5iYXNlVW5pdCAvIDIsIFwicHggXCIpLmNvbmNhdChzcGFjaW5nLmJhc2VVbml0ICogMiwgXCJweFwiKVxuICB9KTtcbn07XG52YXIgVmFsdWVDb250YWluZXIgPSBmdW5jdGlvbiBWYWx1ZUNvbnRhaW5lcihwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBpc011bHRpID0gcHJvcHMuaXNNdWx0aSxcbiAgICBoYXNWYWx1ZSA9IHByb3BzLmhhc1ZhbHVlO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAndmFsdWVDb250YWluZXInLCB7XG4gICAgJ3ZhbHVlLWNvbnRhaW5lcic6IHRydWUsXG4gICAgJ3ZhbHVlLWNvbnRhaW5lci0taXMtbXVsdGknOiBpc011bHRpLFxuICAgICd2YWx1ZS1jb250YWluZXItLWhhcy12YWx1ZSc6IGhhc1ZhbHVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJbmRpY2F0b3IgQ29udGFpbmVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGluZGljYXRvcnNDb250YWluZXJDU1MgPSBmdW5jdGlvbiBpbmRpY2F0b3JzQ29udGFpbmVyQ1NTKCkge1xuICByZXR1cm4ge1xuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4U2hyaW5rOiAwXG4gIH07XG59O1xudmFyIEluZGljYXRvcnNDb250YWluZXIgPSBmdW5jdGlvbiBJbmRpY2F0b3JzQ29udGFpbmVyKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnaW5kaWNhdG9yc0NvbnRhaW5lcicsIHtcbiAgICBpbmRpY2F0b3JzOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcblxudmFyIF90ZW1wbGF0ZU9iamVjdDtcbnZhciBfZXhjbHVkZWQkMiA9IFtcInNpemVcIl0sXG4gIF9leGNsdWRlZDIgPSBbXCJpbm5lclByb3BzXCIsIFwiaXNSdGxcIiwgXCJzaXplXCJdO1xuZnVuY3Rpb24gX0VNT1RJT05fU1RSSU5HSUZJRURfQ1NTX0VSUk9SX18oKSB7IHJldHVybiBcIllvdSBoYXZlIHRyaWVkIHRvIHN0cmluZ2lmeSBvYmplY3QgcmV0dXJuZWQgZnJvbSBgY3NzYCBmdW5jdGlvbi4gSXQgaXNuJ3Qgc3VwcG9zZWQgdG8gYmUgdXNlZCBkaXJlY3RseSAoZS5nLiBhcyB2YWx1ZSBvZiB0aGUgYGNsYXNzTmFtZWAgcHJvcCksIGJ1dCByYXRoZXIgaGFuZGVkIHRvIGVtb3Rpb24gc28gaXQgY2FuIGhhbmRsZSBpdCAoZS5nLiBhcyB2YWx1ZSBvZiBgY3NzYCBwcm9wKS5cIjsgfVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgSWNvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxudmFyIF9yZWYyID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8ge1xuICBuYW1lOiBcIjhtbWtjZ1wiLFxuICBzdHlsZXM6IFwiZGlzcGxheTppbmxpbmUtYmxvY2s7ZmlsbDpjdXJyZW50Q29sb3I7bGluZS1oZWlnaHQ6MTtzdHJva2U6Y3VycmVudENvbG9yO3N0cm9rZS13aWR0aDowXCJcbn0gOiB7XG4gIG5hbWU6IFwidGo1YmRlLVN2Z1wiLFxuICBzdHlsZXM6IFwiZGlzcGxheTppbmxpbmUtYmxvY2s7ZmlsbDpjdXJyZW50Q29sb3I7bGluZS1oZWlnaHQ6MTtzdHJva2U6Y3VycmVudENvbG9yO3N0cm9rZS13aWR0aDowO2xhYmVsOlN2ZztcIixcbiAgbWFwOiBcIi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltbHVaR2xqWVhSdmNuTXVkSE40SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVhsQ1NTSXNJbVpwYkdVaU9pSnBibVJwWTJGMGIzSnpMblJ6ZUNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLaUJBYW5ONElHcHplQ0FxTDF4dWFXMXdiM0owSUhzZ1NsTllMQ0JTWldGamRFNXZaR1VnZlNCbWNtOXRJQ2R5WldGamRDYzdYRzVwYlhCdmNuUWdleUJxYzNnc0lHdGxlV1p5WVcxbGN5QjlJR1p5YjIwZ0owQmxiVzkwYVc5dUwzSmxZV04wSnp0Y2JseHVhVzF3YjNKMElIdGNiaUFnUTI5dGJXOXVVSEp2Y0hOQmJtUkRiR0Z6YzA1aGJXVXNYRzRnSUVOVFUwOWlhbVZqZEZkcGRHaE1ZV0psYkN4Y2JpQWdSM0p2ZFhCQ1lYTmxMRnh1ZlNCbWNtOXRJQ2N1TGk5MGVYQmxjeWM3WEc1cGJYQnZjblFnZXlCblpYUlRkSGxzWlZCeWIzQnpJSDBnWm5KdmJTQW5MaTR2ZFhScGJITW5PMXh1WEc0dkx5QTlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmk4dklFUnliM0JrYjNkdUlDWWdRMnhsWVhJZ1NXTnZibk5jYmk4dklEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVnh1WEc1amIyNXpkQ0JUZG1jZ1BTQW9lMXh1SUNCemFYcGxMRnh1SUNBdUxpNXdjbTl3YzF4dWZUb2dTbE5ZTGtsdWRISnBibk5wWTBWc1pXMWxiblJ6V3lkemRtY25YU0FtSUhzZ2MybDZaVG9nYm5WdFltVnlJSDBwSUQwK0lDaGNiaUFnUEhOMloxeHVJQ0FnSUdobGFXZG9kRDE3YzJsNlpYMWNiaUFnSUNCM2FXUjBhRDE3YzJsNlpYMWNiaUFnSUNCMmFXVjNRbTk0UFZ3aU1DQXdJREl3SURJd1hDSmNiaUFnSUNCaGNtbGhMV2hwWkdSbGJqMWNJblJ5ZFdWY0lseHVJQ0FnSUdadlkzVnpZV0pzWlQxY0ltWmhiSE5sWENKY2JpQWdJQ0JqYzNNOWUzdGNiaUFnSUNBZ0lHUnBjM0JzWVhrNklDZHBibXhwYm1VdFlteHZZMnNuTEZ4dUlDQWdJQ0FnWm1sc2JEb2dKMk4xY25KbGJuUkRiMnh2Y2ljc1hHNGdJQ0FnSUNCc2FXNWxTR1ZwWjJoME9pQXhMRnh1SUNBZ0lDQWdjM1J5YjJ0bE9pQW5ZM1Z5Y21WdWRFTnZiRzl5Snl4Y2JpQWdJQ0FnSUhOMGNtOXJaVmRwWkhSb09pQXdMRnh1SUNBZ0lIMTlYRzRnSUNBZ2V5NHVMbkJ5YjNCemZWeHVJQ0F2UGx4dUtUdGNibHh1Wlhod2IzSjBJSFI1Y0dVZ1EzSnZjM05KWTI5dVVISnZjSE1nUFNCS1UxZ3VTVzUwY21sdWMybGpSV3hsYldWdWRITmJKM04yWnlkZElDWWdleUJ6YVhwbFB6b2diblZ0WW1WeUlIMDdYRzVsZUhCdmNuUWdZMjl1YzNRZ1EzSnZjM05KWTI5dUlEMGdLSEJ5YjNCek9pQkRjbTl6YzBsamIyNVFjbTl3Y3lrZ1BUNGdLRnh1SUNBOFUzWm5JSE5wZW1VOWV6SXdmU0I3TGk0dWNISnZjSE45UGx4dUlDQWdJRHh3WVhSb0lHUTlYQ0pOTVRRdU16UTRJREUwTGpnME9XTXRNQzQwTmprZ01DNDBOamt0TVM0eU1qa2dNQzQwTmprdE1TNDJPVGNnTUd3dE1pNDJOVEV0TXk0d016QXRNaTQyTlRFZ015NHdNamxqTFRBdU5EWTVJREF1TkRZNUxURXVNakk1SURBdU5EWTVMVEV1TmprM0lEQXRNQzQwTmprdE1DNDBOamt0TUM0ME5qa3RNUzR5TWprZ01DMHhMalk1TjJ3eUxqYzFPQzB6TGpFMUxUSXVOelU1TFRNdU1UVXlZeTB3TGpRMk9TMHdMalEyT1Mwd0xqUTJPUzB4TGpJeU9DQXdMVEV1TmprM2N6RXVNakk0TFRBdU5EWTVJREV1TmprM0lEQnNNaTQyTlRJZ015NHdNekVnTWk0Mk5URXRNeTR3TXpGak1DNDBOamt0TUM0ME5qa2dNUzR5TWpndE1DNDBOamtnTVM0Mk9UY2dNSE13TGpRMk9TQXhMakl5T1NBd0lERXVOamszYkMweUxqYzFPQ0F6TGpFMU1pQXlMamMxT0NBekxqRTFZekF1TkRZNUlEQXVORFk1SURBdU5EWTVJREV1TWpJNUlEQWdNUzQyT1RoNlhDSWdMejVjYmlBZ1BDOVRkbWMrWEc0cE8xeHVaWGh3YjNKMElIUjVjR1VnUkc5M2JrTm9aWFp5YjI1UWNtOXdjeUE5SUVwVFdDNUpiblJ5YVc1emFXTkZiR1Z0Wlc1MGMxc25jM1puSjEwZ0ppQjdJSE5wZW1VL09pQnVkVzFpWlhJZ2ZUdGNibVY0Y0c5eWRDQmpiMjV6ZENCRWIzZHVRMmhsZG5KdmJpQTlJQ2h3Y205d2N6b2dSRzkzYmtOb1pYWnliMjVRY205d2N5a2dQVDRnS0Z4dUlDQThVM1puSUhOcGVtVTllekl3ZlNCN0xpNHVjSEp2Y0hOOVBseHVJQ0FnSUR4d1lYUm9JR1E5WENKTk5DNDFNVFlnTnk0MU5EaGpNQzQwTXpZdE1DNDBORFlnTVM0d05ETXRNQzQwT0RFZ01TNDFOellnTUd3ekxqa3dPQ0F6TGpjME55QXpMamt3T0MwekxqYzBOMk13TGpVek15MHdMalE0TVNBeExqRTBNUzB3TGpRME5pQXhMalUzTkNBd0lEQXVORE0ySURBdU5EUTFJREF1TkRBNElERXVNVGszSURBZ01TNDJNVFV0TUM0ME1EWWdNQzQwTVRndE5DNDJPVFVnTkM0MU1ESXROQzQyT1RVZ05DNDFNREl0TUM0eU1UY2dNQzR5TWpNdE1DNDFNRElnTUM0ek16VXRNQzQzT0RjZ01DNHpNelZ6TFRBdU5UY3RNQzR4TVRJdE1DNDNPRGt0TUM0ek16VmpNQ0F3TFRRdU1qZzNMVFF1TURnMExUUXVOamsxTFRRdU5UQXljeTB3TGpRek5pMHhMakUzSURBdE1TNDJNVFY2WENJZ0x6NWNiaUFnUEM5VGRtYytYRzRwTzF4dVhHNHZMeUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxY2JpOHZJRVJ5YjNCa2IzZHVJQ1lnUTJ4bFlYSWdRblYwZEc5dWMxeHVMeThnUFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVhHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdSSEp2Y0dSdmQyNUpibVJwWTJGMGIzSlFjbTl3Y3p4Y2JpQWdUM0IwYVc5dUlEMGdkVzVyYm05M2JpeGNiaUFnU1hOTmRXeDBhU0JsZUhSbGJtUnpJR0p2YjJ4bFlXNGdQU0JpYjI5c1pXRnVMRnh1SUNCSGNtOTFjQ0JsZUhSbGJtUnpJRWR5YjNWd1FtRnpaVHhQY0hScGIyNCtJRDBnUjNKdmRYQkNZWE5sUEU5d2RHbHZiajVjYmo0Z1pYaDBaVzVrY3lCRGIyMXRiMjVRY205d2MwRnVaRU5zWVhOelRtRnRaVHhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BpQjdYRzRnSUM4cUtpQlVhR1VnWTJocGJHUnlaVzRnZEc4Z1ltVWdjbVZ1WkdWeVpXUWdhVzV6YVdSbElIUm9aU0JwYm1ScFkyRjBiM0l1SUNvdlhHNGdJR05vYVd4a2NtVnVQem9nVW1WaFkzUk9iMlJsTzF4dUlDQXZLaW9nVUhKdmNITWdkR2hoZENCM2FXeHNJR0psSUhCaGMzTmxaQ0J2YmlCMGJ5QjBhR1VnWTJocGJHUnlaVzR1SUNvdlhHNGdJR2x1Ym1WeVVISnZjSE02SUVwVFdDNUpiblJ5YVc1emFXTkZiR1Z0Wlc1MGMxc25aR2wySjEwN1hHNGdJQzhxS2lCVWFHVWdabTlqZFhObFpDQnpkR0YwWlNCdlppQjBhR1VnYzJWc1pXTjBMaUFxTDF4dUlDQnBjMFp2WTNWelpXUTZJR0p2YjJ4bFlXNDdYRzRnSUdselJHbHpZV0pzWldRNklHSnZiMnhsWVc0N1hHNTlYRzVjYm1OdmJuTjBJR0poYzJWRFUxTWdQU0E4WEc0Z0lFOXdkR2x2Yml4Y2JpQWdTWE5OZFd4MGFTQmxlSFJsYm1SeklHSnZiMnhsWVc0c1hHNGdJRWR5YjNWd0lHVjRkR1Z1WkhNZ1IzSnZkWEJDWVhObFBFOXdkR2x2Ymo1Y2JqNG9YRzRnSUh0Y2JpQWdJQ0JwYzBadlkzVnpaV1FzWEc0Z0lDQWdkR2hsYldVNklIdGNiaUFnSUNBZ0lITndZV05wYm1jNklIc2dZbUZ6WlZWdWFYUWdmU3hjYmlBZ0lDQWdJR052Ykc5eWN5eGNiaUFnSUNCOUxGeHVJQ0I5T2x4dUlDQWdJSHdnUkhKdmNHUnZkMjVKYm1ScFkyRjBiM0pRY205d2N6eFBjSFJwYjI0c0lFbHpUWFZzZEdrc0lFZHliM1Z3UGx4dUlDQWdJSHdnUTJ4bFlYSkpibVJwWTJGMGIzSlFjbTl3Y3p4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQaXhjYmlBZ2RXNXpkSGxzWldRNklHSnZiMnhsWVc1Y2JpazZJRU5UVTA5aWFtVmpkRmRwZEdoTVlXSmxiQ0E5UGlBb2UxeHVJQ0JzWVdKbGJEb2dKMmx1WkdsallYUnZja052Ym5SaGFXNWxjaWNzWEc0Z0lHUnBjM0JzWVhrNklDZG1iR1Y0Snl4Y2JpQWdkSEpoYm5OcGRHbHZiam9nSjJOdmJHOXlJREUxTUcxekp5eGNiaUFnTGk0dUtIVnVjM1I1YkdWa1hHNGdJQ0FnUHlCN2ZWeHVJQ0FnSURvZ2UxeHVJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ2FYTkdiMk4xYzJWa0lEOGdZMjlzYjNKekxtNWxkWFJ5WVd3Mk1DQTZJR052Ykc5eWN5NXVaWFYwY21Gc01qQXNYRzRnSUNBZ0lDQWdJSEJoWkdScGJtYzZJR0poYzJWVmJtbDBJQ29nTWl4Y2JpQWdJQ0FnSUNBZ0p6cG9iM1psY2ljNklIdGNiaUFnSUNBZ0lDQWdJQ0JqYjJ4dmNqb2dhWE5HYjJOMWMyVmtJRDhnWTI5c2IzSnpMbTVsZFhSeVlXdzRNQ0E2SUdOdmJHOXljeTV1WlhWMGNtRnNOREFzWEc0Z0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNCOUtTeGNibjBwTzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnWkhKdmNHUnZkMjVKYm1ScFkyRjBiM0pEVTFNZ1BTQmlZWE5sUTFOVE8xeHVaWGh3YjNKMElHTnZibk4wSUVSeWIzQmtiM2R1U1c1a2FXTmhkRzl5SUQwZ1BGeHVJQ0JQY0hScGIyNHNYRzRnSUVselRYVnNkR2tnWlhoMFpXNWtjeUJpYjI5c1pXRnVMRnh1SUNCSGNtOTFjQ0JsZUhSbGJtUnpJRWR5YjNWd1FtRnpaVHhQY0hScGIyNCtYRzQrS0Z4dUlDQndjbTl3Y3pvZ1JISnZjR1J2ZDI1SmJtUnBZMkYwYjNKUWNtOXdjenhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BseHVLU0E5UGlCN1hHNGdJR052Ym5OMElIc2dZMmhwYkdSeVpXNHNJR2x1Ym1WeVVISnZjSE1nZlNBOUlIQnliM0J6TzF4dUlDQnlaWFIxY200Z0tGeHVJQ0FnSUR4a2FYWmNiaUFnSUNBZ0lIc3VMaTVuWlhSVGRIbHNaVkJ5YjNCektIQnliM0J6TENBblpISnZjR1J2ZDI1SmJtUnBZMkYwYjNJbkxDQjdYRzRnSUNBZ0lDQWdJR2x1WkdsallYUnZjam9nZEhKMVpTeGNiaUFnSUNBZ0lDQWdKMlJ5YjNCa2IzZHVMV2x1WkdsallYUnZjaWM2SUhSeWRXVXNYRzRnSUNBZ0lDQjlLWDFjYmlBZ0lDQWdJSHN1TGk1cGJtNWxjbEJ5YjNCemZWeHVJQ0FnSUQ1Y2JpQWdJQ0FnSUh0amFHbHNaSEpsYmlCOGZDQThSRzkzYmtOb1pYWnliMjRnTHo1OVhHNGdJQ0FnUEM5a2FYWStYRzRnSUNrN1hHNTlPMXh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUVOc1pXRnlTVzVrYVdOaGRHOXlVSEp2Y0hNOFhHNGdJRTl3ZEdsdmJpQTlJSFZ1YTI1dmQyNHNYRzRnSUVselRYVnNkR2tnWlhoMFpXNWtjeUJpYjI5c1pXRnVJRDBnWW05dmJHVmhiaXhjYmlBZ1IzSnZkWEFnWlhoMFpXNWtjeUJIY205MWNFSmhjMlU4VDNCMGFXOXVQaUE5SUVkeWIzVndRbUZ6WlR4UGNIUnBiMjQrWEc0K0lHVjRkR1Z1WkhNZ1EyOXRiVzl1VUhKdmNITkJibVJEYkdGemMwNWhiV1U4VDNCMGFXOXVMQ0JKYzAxMWJIUnBMQ0JIY205MWNENGdlMXh1SUNBdktpb2dWR2hsSUdOb2FXeGtjbVZ1SUhSdklHSmxJSEpsYm1SbGNtVmtJR2x1YzJsa1pTQjBhR1VnYVc1a2FXTmhkRzl5TGlBcUwxeHVJQ0JqYUdsc1pISmxiajg2SUZKbFlXTjBUbTlrWlR0Y2JpQWdMeW9xSUZCeWIzQnpJSFJvWVhRZ2QybHNiQ0JpWlNCd1lYTnpaV1FnYjI0Z2RHOGdkR2hsSUdOb2FXeGtjbVZ1TGlBcUwxeHVJQ0JwYm01bGNsQnliM0J6T2lCS1UxZ3VTVzUwY21sdWMybGpSV3hsYldWdWRITmJKMlJwZGlkZE8xeHVJQ0F2S2lvZ1ZHaGxJR1p2WTNWelpXUWdjM1JoZEdVZ2IyWWdkR2hsSUhObGJHVmpkQzRnS2k5Y2JpQWdhWE5HYjJOMWMyVmtPaUJpYjI5c1pXRnVPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnWTJ4bFlYSkpibVJwWTJGMGIzSkRVMU1nUFNCaVlYTmxRMU5UTzF4dVpYaHdiM0owSUdOdmJuTjBJRU5zWldGeVNXNWthV05oZEc5eUlEMGdQRnh1SUNCUGNIUnBiMjRzWEc0Z0lFbHpUWFZzZEdrZ1pYaDBaVzVrY3lCaWIyOXNaV0Z1TEZ4dUlDQkhjbTkxY0NCbGVIUmxibVJ6SUVkeWIzVndRbUZ6WlR4UGNIUnBiMjQrWEc0K0tGeHVJQ0J3Y205d2N6b2dRMnhsWVhKSmJtUnBZMkYwYjNKUWNtOXdjenhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BseHVLU0E5UGlCN1hHNGdJR052Ym5OMElIc2dZMmhwYkdSeVpXNHNJR2x1Ym1WeVVISnZjSE1nZlNBOUlIQnliM0J6TzF4dUlDQnlaWFIxY200Z0tGeHVJQ0FnSUR4a2FYWmNiaUFnSUNBZ0lIc3VMaTVuWlhSVGRIbHNaVkJ5YjNCektIQnliM0J6TENBblkyeGxZWEpKYm1ScFkyRjBiM0luTENCN1hHNGdJQ0FnSUNBZ0lHbHVaR2xqWVhSdmNqb2dkSEoxWlN4Y2JpQWdJQ0FnSUNBZ0oyTnNaV0Z5TFdsdVpHbGpZWFJ2Y2ljNklIUnlkV1VzWEc0Z0lDQWdJQ0I5S1gxY2JpQWdJQ0FnSUhzdUxpNXBibTVsY2xCeWIzQnpmVnh1SUNBZ0lENWNiaUFnSUNBZ0lIdGphR2xzWkhKbGJpQjhmQ0E4UTNKdmMzTkpZMjl1SUM4K2ZWeHVJQ0FnSUR3dlpHbDJQbHh1SUNBcE8xeHVmVHRjYmx4dUx5OGdQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5WEc0dkx5QlRaWEJoY21GMGIzSmNiaTh2SUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBWeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRWx1WkdsallYUnZjbE5sY0dGeVlYUnZjbEJ5YjNCelBGeHVJQ0JQY0hScGIyNGdQU0IxYm10dWIzZHVMRnh1SUNCSmMwMTFiSFJwSUdWNGRHVnVaSE1nWW05dmJHVmhiaUE5SUdKdmIyeGxZVzRzWEc0Z0lFZHliM1Z3SUdWNGRHVnVaSE1nUjNKdmRYQkNZWE5sUEU5d2RHbHZiajRnUFNCSGNtOTFjRUpoYzJVOFQzQjBhVzl1UGx4dVBpQmxlSFJsYm1SeklFTnZiVzF2YmxCeWIzQnpRVzVrUTJ4aGMzTk9ZVzFsUEU5d2RHbHZiaXdnU1hOTmRXeDBhU3dnUjNKdmRYQStJSHRjYmlBZ2FYTkVhWE5oWW14bFpEb2dZbTl2YkdWaGJqdGNiaUFnYVhOR2IyTjFjMlZrT2lCaWIyOXNaV0Z1TzF4dUlDQnBibTVsY2xCeWIzQnpQem9nU2xOWUxrbHVkSEpwYm5OcFkwVnNaVzFsYm5Seld5ZHpjR0Z1SjEwN1hHNTlYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQnBibVJwWTJGMGIzSlRaWEJoY21GMGIzSkRVMU1nUFNBOFhHNGdJRTl3ZEdsdmJpeGNiaUFnU1hOTmRXeDBhU0JsZUhSbGJtUnpJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNWNiajRvWEc0Z0lIdGNiaUFnSUNCcGMwUnBjMkZpYkdWa0xGeHVJQ0FnSUhSb1pXMWxPaUI3WEc0Z0lDQWdJQ0J6Y0dGamFXNW5PaUI3SUdKaGMyVlZibWwwSUgwc1hHNGdJQ0FnSUNCamIyeHZjbk1zWEc0Z0lDQWdmU3hjYmlBZ2ZUb2dTVzVrYVdOaGRHOXlVMlZ3WVhKaGRHOXlVSEp2Y0hNOFQzQjBhVzl1TENCSmMwMTFiSFJwTENCSGNtOTFjRDRzWEc0Z0lIVnVjM1I1YkdWa09pQmliMjlzWldGdVhHNHBPaUJEVTFOUFltcGxZM1JYYVhSb1RHRmlaV3dnUFQ0Z0tIdGNiaUFnYkdGaVpXdzZJQ2RwYm1ScFkyRjBiM0pUWlhCaGNtRjBiM0luTEZ4dUlDQmhiR2xuYmxObGJHWTZJQ2R6ZEhKbGRHTm9KeXhjYmlBZ2QybGtkR2c2SURFc1hHNGdJQzR1TGloMWJuTjBlV3hsWkZ4dUlDQWdJRDhnZTMxY2JpQWdJQ0E2SUh0Y2JpQWdJQ0FnSUNBZ1ltRmphMmR5YjNWdVpFTnZiRzl5T2lCcGMwUnBjMkZpYkdWa0lEOGdZMjlzYjNKekxtNWxkWFJ5WVd3eE1DQTZJR052Ykc5eWN5NXVaWFYwY21Gc01qQXNYRzRnSUNBZ0lDQWdJRzFoY21kcGJrSnZkSFJ2YlRvZ1ltRnpaVlZ1YVhRZ0tpQXlMRnh1SUNBZ0lDQWdJQ0J0WVhKbmFXNVViM0E2SUdKaGMyVlZibWwwSUNvZ01peGNiaUFnSUNBZ0lIMHBMRnh1ZlNrN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCSmJtUnBZMkYwYjNKVFpYQmhjbUYwYjNJZ1BTQThYRzRnSUU5d2RHbHZiaXhjYmlBZ1NYTk5kV3gwYVNCbGVIUmxibVJ6SUdKdmIyeGxZVzRzWEc0Z0lFZHliM1Z3SUdWNGRHVnVaSE1nUjNKdmRYQkNZWE5sUEU5d2RHbHZiajVjYmo0b1hHNGdJSEJ5YjNCek9pQkpibVJwWTJGMGIzSlRaWEJoY21GMGIzSlFjbTl3Y3p4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQbHh1S1NBOVBpQjdYRzRnSUdOdmJuTjBJSHNnYVc1dVpYSlFjbTl3Y3lCOUlEMGdjSEp2Y0hNN1hHNGdJSEpsZEhWeWJpQW9YRzRnSUNBZ1BITndZVzVjYmlBZ0lDQWdJSHN1TGk1cGJtNWxjbEJ5YjNCemZWeHVJQ0FnSUNBZ2V5NHVMbWRsZEZOMGVXeGxVSEp2Y0hNb2NISnZjSE1zSUNkcGJtUnBZMkYwYjNKVFpYQmhjbUYwYjNJbkxDQjdYRzRnSUNBZ0lDQWdJQ2RwYm1ScFkyRjBiM0l0YzJWd1lYSmhkRzl5SnpvZ2RISjFaU3hjYmlBZ0lDQWdJSDBwZlZ4dUlDQWdJQzgrWEc0Z0lDazdYRzU5TzF4dVhHNHZMeUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxY2JpOHZJRXh2WVdScGJtZGNiaTh2SUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBWeHVYRzVqYjI1emRDQnNiMkZrYVc1blJHOTBRVzVwYldGMGFXOXVjeUE5SUd0bGVXWnlZVzFsYzJCY2JpQWdNQ1VzSURnd0pTd2dNVEF3SlNCN0lHOXdZV05wZEhrNklEQTdJSDFjYmlBZ05EQWxJSHNnYjNCaFkybDBlVG9nTVRzZ2ZWeHVZRHRjYmx4dVpYaHdiM0owSUdOdmJuTjBJR3h2WVdScGJtZEpibVJwWTJGMGIzSkRVMU1nUFNBOFhHNGdJRTl3ZEdsdmJpeGNiaUFnU1hOTmRXeDBhU0JsZUhSbGJtUnpJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNWNiajRvWEc0Z0lIdGNiaUFnSUNCcGMwWnZZM1Z6WldRc1hHNGdJQ0FnYzJsNlpTeGNiaUFnSUNCMGFHVnRaVG9nZTF4dUlDQWdJQ0FnWTI5c2IzSnpMRnh1SUNBZ0lDQWdjM0JoWTJsdVp6b2dleUJpWVhObFZXNXBkQ0I5TEZ4dUlDQWdJSDBzWEc0Z0lIMDZJRXh2WVdScGJtZEpibVJwWTJGMGIzSlFjbTl3Y3p4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQaXhjYmlBZ2RXNXpkSGxzWldRNklHSnZiMnhsWVc1Y2JpazZJRU5UVTA5aWFtVmpkRmRwZEdoTVlXSmxiQ0E5UGlBb2UxeHVJQ0JzWVdKbGJEb2dKMnh2WVdScGJtZEpibVJwWTJGMGIzSW5MRnh1SUNCa2FYTndiR0Y1T2lBblpteGxlQ2NzWEc0Z0lIUnlZVzV6YVhScGIyNDZJQ2RqYjJ4dmNpQXhOVEJ0Y3ljc1hHNGdJR0ZzYVdkdVUyVnNaam9nSjJObGJuUmxjaWNzWEc0Z0lHWnZiblJUYVhwbE9pQnphWHBsTEZ4dUlDQnNhVzVsU0dWcFoyaDBPaUF4TEZ4dUlDQnRZWEpuYVc1U2FXZG9kRG9nYzJsNlpTeGNiaUFnZEdWNGRFRnNhV2R1T2lBblkyVnVkR1Z5Snl4Y2JpQWdkbVZ5ZEdsallXeEJiR2xuYmpvZ0oyMXBaR1JzWlNjc1hHNGdJQzR1TGloMWJuTjBlV3hsWkZ4dUlDQWdJRDhnZTMxY2JpQWdJQ0E2SUh0Y2JpQWdJQ0FnSUNBZ1kyOXNiM0k2SUdselJtOWpkWE5sWkNBL0lHTnZiRzl5Y3k1dVpYVjBjbUZzTmpBZ09pQmpiMnh2Y25NdWJtVjFkSEpoYkRJd0xGeHVJQ0FnSUNBZ0lDQndZV1JrYVc1bk9pQmlZWE5sVlc1cGRDQXFJRElzWEc0Z0lDQWdJQ0I5S1N4Y2JuMHBPMXh1WEc1cGJuUmxjbVpoWTJVZ1RHOWhaR2x1WjBSdmRGQnliM0J6SUh0Y2JpQWdaR1ZzWVhrNklHNTFiV0psY2p0Y2JpQWdiMlptYzJWME9pQmliMjlzWldGdU8xeHVmVnh1WTI5dWMzUWdURzloWkdsdVowUnZkQ0E5SUNoN0lHUmxiR0Y1TENCdlptWnpaWFFnZlRvZ1RHOWhaR2x1WjBSdmRGQnliM0J6S1NBOVBpQW9YRzRnSUR4emNHRnVYRzRnSUNBZ1kzTnpQWHQ3WEc0Z0lDQWdJQ0JoYm1sdFlYUnBiMjQ2SUdBa2UyeHZZV1JwYm1kRWIzUkJibWx0WVhScGIyNXpmU0F4Y3lCbFlYTmxMV2x1TFc5MWRDQWtlMlJsYkdGNWZXMXpJR2x1Wm1sdWFYUmxPMkFzWEc0Z0lDQWdJQ0JpWVdOclozSnZkVzVrUTI5c2IzSTZJQ2RqZFhKeVpXNTBRMjlzYjNJbkxGeHVJQ0FnSUNBZ1ltOXlaR1Z5VW1Ga2FYVnpPaUFuTVdWdEp5eGNiaUFnSUNBZ0lHUnBjM0JzWVhrNklDZHBibXhwYm1VdFlteHZZMnNuTEZ4dUlDQWdJQ0FnYldGeVoybHVUR1ZtZERvZ2IyWm1jMlYwSUQ4Z0p6RmxiU2NnT2lCMWJtUmxabWx1WldRc1hHNGdJQ0FnSUNCb1pXbG5hSFE2SUNjeFpXMG5MRnh1SUNBZ0lDQWdkbVZ5ZEdsallXeEJiR2xuYmpvZ0ozUnZjQ2NzWEc0Z0lDQWdJQ0IzYVdSMGFEb2dKekZsYlNjc1hHNGdJQ0FnZlgxY2JpQWdMejVjYmlrN1hHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdURzloWkdsdVowbHVaR2xqWVhSdmNsQnliM0J6UEZ4dUlDQlBjSFJwYjI0Z1BTQjFibXR1YjNkdUxGeHVJQ0JKYzAxMWJIUnBJR1Y0ZEdWdVpITWdZbTl2YkdWaGJpQTlJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNGdQU0JIY205MWNFSmhjMlU4VDNCMGFXOXVQbHh1UGlCbGVIUmxibVJ6SUVOdmJXMXZibEJ5YjNCelFXNWtRMnhoYzNOT1lXMWxQRTl3ZEdsdmJpd2dTWE5OZFd4MGFTd2dSM0p2ZFhBK0lIdGNiaUFnTHlvcUlGQnliM0J6SUhSb1lYUWdkMmxzYkNCaVpTQndZWE56WldRZ2IyNGdkRzhnZEdobElHTm9hV3hrY21WdUxpQXFMMXh1SUNCcGJtNWxjbEJ5YjNCek9pQktVMWd1U1c1MGNtbHVjMmxqUld4bGJXVnVkSE5iSjJScGRpZGRPMXh1SUNBdktpb2dWR2hsSUdadlkzVnpaV1FnYzNSaGRHVWdiMllnZEdobElITmxiR1ZqZEM0Z0tpOWNiaUFnYVhOR2IyTjFjMlZrT2lCaWIyOXNaV0Z1TzF4dUlDQnBjMFJwYzJGaWJHVmtPaUJpYjI5c1pXRnVPMXh1SUNBdktpb2dVMlYwSUhOcGVtVWdiMllnZEdobElHTnZiblJoYVc1bGNpNGdLaTljYmlBZ2MybDZaVG9nYm5WdFltVnlPMXh1ZlZ4dVpYaHdiM0owSUdOdmJuTjBJRXh2WVdScGJtZEpibVJwWTJGMGIzSWdQU0E4WEc0Z0lFOXdkR2x2Yml4Y2JpQWdTWE5OZFd4MGFTQmxlSFJsYm1SeklHSnZiMnhsWVc0c1hHNGdJRWR5YjNWd0lHVjRkR1Z1WkhNZ1IzSnZkWEJDWVhObFBFOXdkR2x2Ymo1Y2JqNG9lMXh1SUNCcGJtNWxjbEJ5YjNCekxGeHVJQ0JwYzFKMGJDeGNiaUFnYzJsNlpTQTlJRFFzWEc0Z0lDNHVMbkpsYzNSUWNtOXdjMXh1ZlRvZ1RHOWhaR2x1WjBsdVpHbGpZWFJ2Y2xCeWIzQnpQRTl3ZEdsdmJpd2dTWE5OZFd4MGFTd2dSM0p2ZFhBK0tTQTlQaUI3WEc0Z0lISmxkSFZ5YmlBb1hHNGdJQ0FnUEdScGRseHVJQ0FnSUNBZ2V5NHVMbWRsZEZOMGVXeGxVSEp2Y0hNb1hHNGdJQ0FnSUNBZ0lIc2dMaTR1Y21WemRGQnliM0J6TENCcGJtNWxjbEJ5YjNCekxDQnBjMUowYkN3Z2MybDZaU0I5TEZ4dUlDQWdJQ0FnSUNBbmJHOWhaR2x1WjBsdVpHbGpZWFJ2Y2ljc1hHNGdJQ0FnSUNBZ0lIdGNiaUFnSUNBZ0lDQWdJQ0JwYm1ScFkyRjBiM0k2SUhSeWRXVXNYRzRnSUNBZ0lDQWdJQ0FnSjJ4dllXUnBibWN0YVc1a2FXTmhkRzl5SnpvZ2RISjFaU3hjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnS1gxY2JpQWdJQ0FnSUhzdUxpNXBibTVsY2xCeWIzQnpmVnh1SUNBZ0lENWNiaUFnSUNBZ0lEeE1iMkZrYVc1blJHOTBJR1JsYkdGNVBYc3dmU0J2Wm1aelpYUTllMmx6VW5Sc2ZTQXZQbHh1SUNBZ0lDQWdQRXh2WVdScGJtZEViM1FnWkdWc1lYazllekUyTUgwZ2IyWm1jMlYwSUM4K1hHNGdJQ0FnSUNBOFRHOWhaR2x1WjBSdmRDQmtaV3hoZVQxN016SXdmU0J2Wm1aelpYUTlleUZwYzFKMGJIMGdMejVjYmlBZ0lDQThMMlJwZGo1Y2JpQWdLVHRjYm4wN1hHNGlYWDA9ICovXCIsXG4gIHRvU3RyaW5nOiBfRU1PVElPTl9TVFJJTkdJRklFRF9DU1NfRVJST1JfX1xufTtcbnZhciBTdmcgPSBmdW5jdGlvbiBTdmcoX3JlZikge1xuICB2YXIgc2l6ZSA9IF9yZWYuc2l6ZSxcbiAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBfZXhjbHVkZWQkMik7XG4gIHJldHVybiBqc3goXCJzdmdcIiwgX2V4dGVuZHMoe1xuICAgIGhlaWdodDogc2l6ZSxcbiAgICB3aWR0aDogc2l6ZSxcbiAgICB2aWV3Qm94OiBcIjAgMCAyMCAyMFwiLFxuICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIsXG4gICAgZm9jdXNhYmxlOiBcImZhbHNlXCIsXG4gICAgY3NzOiBfcmVmMlxuICB9LCBwcm9wcykpO1xufTtcbnZhciBDcm9zc0ljb24gPSBmdW5jdGlvbiBDcm9zc0ljb24ocHJvcHMpIHtcbiAgcmV0dXJuIGpzeChTdmcsIF9leHRlbmRzKHtcbiAgICBzaXplOiAyMFxuICB9LCBwcm9wcyksIGpzeChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiXG4gIH0pKTtcbn07XG52YXIgRG93bkNoZXZyb24gPSBmdW5jdGlvbiBEb3duQ2hldnJvbihwcm9wcykge1xuICByZXR1cm4ganN4KFN2ZywgX2V4dGVuZHMoe1xuICAgIHNpemU6IDIwXG4gIH0sIHByb3BzKSwganN4KFwicGF0aFwiLCB7XG4gICAgZDogXCJNNC41MTYgNy41NDhjMC40MzYtMC40NDYgMS4wNDMtMC40ODEgMS41NzYgMGwzLjkwOCAzLjc0NyAzLjkwOC0zLjc0N2MwLjUzMy0wLjQ4MSAxLjE0MS0wLjQ0NiAxLjU3NCAwIDAuNDM2IDAuNDQ1IDAuNDA4IDEuMTk3IDAgMS42MTUtMC40MDYgMC40MTgtNC42OTUgNC41MDItNC42OTUgNC41MDItMC4yMTcgMC4yMjMtMC41MDIgMC4zMzUtMC43ODcgMC4zMzVzLTAuNTctMC4xMTItMC43ODktMC4zMzVjMCAwLTQuMjg3LTQuMDg0LTQuNjk1LTQuNTAycy0wLjQzNi0xLjE3IDAtMS42MTV6XCJcbiAgfSkpO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEJ1dHRvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgYmFzZUNTUyA9IGZ1bmN0aW9uIGJhc2VDU1MoX3JlZjMsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0ZvY3VzZWQgPSBfcmVmMy5pc0ZvY3VzZWQsXG4gICAgX3JlZjMkdGhlbWUgPSBfcmVmMy50aGVtZSxcbiAgICBiYXNlVW5pdCA9IF9yZWYzJHRoZW1lLnNwYWNpbmcuYmFzZVVuaXQsXG4gICAgY29sb3JzID0gX3JlZjMkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdpbmRpY2F0b3JDb250YWluZXInLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgICAnOmhvdmVyJzoge1xuICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsODAgOiBjb2xvcnMubmV1dHJhbDQwXG4gICAgfVxuICB9KTtcbn07XG52YXIgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xudmFyIERyb3Bkb3duSW5kaWNhdG9yID0gZnVuY3Rpb24gRHJvcGRvd25JbmRpY2F0b3IocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdkcm9wZG93bkluZGljYXRvcicsIHtcbiAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgJ2Ryb3Bkb3duLWluZGljYXRvcic6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbiB8fCBqc3goRG93bkNoZXZyb24sIG51bGwpKTtcbn07XG52YXIgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xudmFyIENsZWFySW5kaWNhdG9yID0gZnVuY3Rpb24gQ2xlYXJJbmRpY2F0b3IocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdjbGVhckluZGljYXRvcicsIHtcbiAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgJ2NsZWFyLWluZGljYXRvcic6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbiB8fCBqc3goQ3Jvc3NJY29uLCBudWxsKSk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNlcGFyYXRvclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSBmdW5jdGlvbiBpbmRpY2F0b3JTZXBhcmF0b3JDU1MoX3JlZjQsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZjQuaXNEaXNhYmxlZCxcbiAgICBfcmVmNCR0aGVtZSA9IF9yZWY0LnRoZW1lLFxuICAgIGJhc2VVbml0ID0gX3JlZjQkdGhlbWUuc3BhY2luZy5iYXNlVW5pdCxcbiAgICBjb2xvcnMgPSBfcmVmNCR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ2luZGljYXRvclNlcGFyYXRvcicsXG4gICAgYWxpZ25TZWxmOiAnc3RyZXRjaCcsXG4gICAgd2lkdGg6IDFcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgICBtYXJnaW5Cb3R0b206IGJhc2VVbml0ICogMixcbiAgICBtYXJnaW5Ub3A6IGJhc2VVbml0ICogMlxuICB9KTtcbn07XG52YXIgSW5kaWNhdG9yU2VwYXJhdG9yID0gZnVuY3Rpb24gSW5kaWNhdG9yU2VwYXJhdG9yKHByb3BzKSB7XG4gIHZhciBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcztcbiAgcmV0dXJuIGpzeChcInNwYW5cIiwgX2V4dGVuZHMoe30sIGlubmVyUHJvcHMsIGdldFN0eWxlUHJvcHMocHJvcHMsICdpbmRpY2F0b3JTZXBhcmF0b3InLCB7XG4gICAgJ2luZGljYXRvci1zZXBhcmF0b3InOiB0cnVlXG4gIH0pKSk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExvYWRpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXMoX3RlbXBsYXRlT2JqZWN0IHx8IChfdGVtcGxhdGVPYmplY3QgPSBfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsKFtcIlxcbiAgMCUsIDgwJSwgMTAwJSB7IG9wYWNpdHk6IDA7IH1cXG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cXG5cIl0pKSk7XG52YXIgbG9hZGluZ0luZGljYXRvckNTUyA9IGZ1bmN0aW9uIGxvYWRpbmdJbmRpY2F0b3JDU1MoX3JlZjUsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0ZvY3VzZWQgPSBfcmVmNS5pc0ZvY3VzZWQsXG4gICAgc2l6ZSA9IF9yZWY1LnNpemUsXG4gICAgX3JlZjUkdGhlbWUgPSBfcmVmNS50aGVtZSxcbiAgICBjb2xvcnMgPSBfcmVmNSR0aGVtZS5jb2xvcnMsXG4gICAgYmFzZVVuaXQgPSBfcmVmNSR0aGVtZS5zcGFjaW5nLmJhc2VVbml0O1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdsb2FkaW5nSW5kaWNhdG9yJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcbiAgICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICAgIGZvbnRTaXplOiBzaXplLFxuICAgIGxpbmVIZWlnaHQ6IDEsXG4gICAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgICBwYWRkaW5nOiBiYXNlVW5pdCAqIDJcbiAgfSk7XG59O1xudmFyIExvYWRpbmdEb3QgPSBmdW5jdGlvbiBMb2FkaW5nRG90KF9yZWY2KSB7XG4gIHZhciBkZWxheSA9IF9yZWY2LmRlbGF5LFxuICAgIG9mZnNldCA9IF9yZWY2Lm9mZnNldDtcbiAgcmV0dXJuIGpzeChcInNwYW5cIiwge1xuICAgIGNzczogLyojX19QVVJFX18qL2NzcyQyKHtcbiAgICAgIGFuaW1hdGlvbjogXCJcIi5jb25jYXQobG9hZGluZ0RvdEFuaW1hdGlvbnMsIFwiIDFzIGVhc2UtaW4tb3V0IFwiKS5jb25jYXQoZGVsYXksIFwibXMgaW5maW5pdGU7XCIpLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGJvcmRlclJhZGl1czogJzFlbScsXG4gICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIG1hcmdpbkxlZnQ6IG9mZnNldCA/ICcxZW0nIDogdW5kZWZpbmVkLFxuICAgICAgaGVpZ2h0OiAnMWVtJyxcbiAgICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICAgICAgd2lkdGg6ICcxZW0nXG4gICAgfSwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gXCJcIiA6IFwiO2xhYmVsOkxvYWRpbmdEb3Q7XCIsIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IFwiXCIgOiBcIi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltbHVaR2xqWVhSdmNuTXVkSE40SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVcxUlNTSXNJbVpwYkdVaU9pSnBibVJwWTJGMGIzSnpMblJ6ZUNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLaUJBYW5ONElHcHplQ0FxTDF4dWFXMXdiM0owSUhzZ1NsTllMQ0JTWldGamRFNXZaR1VnZlNCbWNtOXRJQ2R5WldGamRDYzdYRzVwYlhCdmNuUWdleUJxYzNnc0lHdGxlV1p5WVcxbGN5QjlJR1p5YjIwZ0owQmxiVzkwYVc5dUwzSmxZV04wSnp0Y2JseHVhVzF3YjNKMElIdGNiaUFnUTI5dGJXOXVVSEp2Y0hOQmJtUkRiR0Z6YzA1aGJXVXNYRzRnSUVOVFUwOWlhbVZqZEZkcGRHaE1ZV0psYkN4Y2JpQWdSM0p2ZFhCQ1lYTmxMRnh1ZlNCbWNtOXRJQ2N1TGk5MGVYQmxjeWM3WEc1cGJYQnZjblFnZXlCblpYUlRkSGxzWlZCeWIzQnpJSDBnWm5KdmJTQW5MaTR2ZFhScGJITW5PMXh1WEc0dkx5QTlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmk4dklFUnliM0JrYjNkdUlDWWdRMnhsWVhJZ1NXTnZibk5jYmk4dklEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVnh1WEc1amIyNXpkQ0JUZG1jZ1BTQW9lMXh1SUNCemFYcGxMRnh1SUNBdUxpNXdjbTl3YzF4dWZUb2dTbE5ZTGtsdWRISnBibk5wWTBWc1pXMWxiblJ6V3lkemRtY25YU0FtSUhzZ2MybDZaVG9nYm5WdFltVnlJSDBwSUQwK0lDaGNiaUFnUEhOMloxeHVJQ0FnSUdobGFXZG9kRDE3YzJsNlpYMWNiaUFnSUNCM2FXUjBhRDE3YzJsNlpYMWNiaUFnSUNCMmFXVjNRbTk0UFZ3aU1DQXdJREl3SURJd1hDSmNiaUFnSUNCaGNtbGhMV2hwWkdSbGJqMWNJblJ5ZFdWY0lseHVJQ0FnSUdadlkzVnpZV0pzWlQxY0ltWmhiSE5sWENKY2JpQWdJQ0JqYzNNOWUzdGNiaUFnSUNBZ0lHUnBjM0JzWVhrNklDZHBibXhwYm1VdFlteHZZMnNuTEZ4dUlDQWdJQ0FnWm1sc2JEb2dKMk4xY25KbGJuUkRiMnh2Y2ljc1hHNGdJQ0FnSUNCc2FXNWxTR1ZwWjJoME9pQXhMRnh1SUNBZ0lDQWdjM1J5YjJ0bE9pQW5ZM1Z5Y21WdWRFTnZiRzl5Snl4Y2JpQWdJQ0FnSUhOMGNtOXJaVmRwWkhSb09pQXdMRnh1SUNBZ0lIMTlYRzRnSUNBZ2V5NHVMbkJ5YjNCemZWeHVJQ0F2UGx4dUtUdGNibHh1Wlhod2IzSjBJSFI1Y0dVZ1EzSnZjM05KWTI5dVVISnZjSE1nUFNCS1UxZ3VTVzUwY21sdWMybGpSV3hsYldWdWRITmJKM04yWnlkZElDWWdleUJ6YVhwbFB6b2diblZ0WW1WeUlIMDdYRzVsZUhCdmNuUWdZMjl1YzNRZ1EzSnZjM05KWTI5dUlEMGdLSEJ5YjNCek9pQkRjbTl6YzBsamIyNVFjbTl3Y3lrZ1BUNGdLRnh1SUNBOFUzWm5JSE5wZW1VOWV6SXdmU0I3TGk0dWNISnZjSE45UGx4dUlDQWdJRHh3WVhSb0lHUTlYQ0pOTVRRdU16UTRJREUwTGpnME9XTXRNQzQwTmprZ01DNDBOamt0TVM0eU1qa2dNQzQwTmprdE1TNDJPVGNnTUd3dE1pNDJOVEV0TXk0d016QXRNaTQyTlRFZ015NHdNamxqTFRBdU5EWTVJREF1TkRZNUxURXVNakk1SURBdU5EWTVMVEV1TmprM0lEQXRNQzQwTmprdE1DNDBOamt0TUM0ME5qa3RNUzR5TWprZ01DMHhMalk1TjJ3eUxqYzFPQzB6TGpFMUxUSXVOelU1TFRNdU1UVXlZeTB3TGpRMk9TMHdMalEyT1Mwd0xqUTJPUzB4TGpJeU9DQXdMVEV1TmprM2N6RXVNakk0TFRBdU5EWTVJREV1TmprM0lEQnNNaTQyTlRJZ015NHdNekVnTWk0Mk5URXRNeTR3TXpGak1DNDBOamt0TUM0ME5qa2dNUzR5TWpndE1DNDBOamtnTVM0Mk9UY2dNSE13TGpRMk9TQXhMakl5T1NBd0lERXVOamszYkMweUxqYzFPQ0F6TGpFMU1pQXlMamMxT0NBekxqRTFZekF1TkRZNUlEQXVORFk1SURBdU5EWTVJREV1TWpJNUlEQWdNUzQyT1RoNlhDSWdMejVjYmlBZ1BDOVRkbWMrWEc0cE8xeHVaWGh3YjNKMElIUjVjR1VnUkc5M2JrTm9aWFp5YjI1UWNtOXdjeUE5SUVwVFdDNUpiblJ5YVc1emFXTkZiR1Z0Wlc1MGMxc25jM1puSjEwZ0ppQjdJSE5wZW1VL09pQnVkVzFpWlhJZ2ZUdGNibVY0Y0c5eWRDQmpiMjV6ZENCRWIzZHVRMmhsZG5KdmJpQTlJQ2h3Y205d2N6b2dSRzkzYmtOb1pYWnliMjVRY205d2N5a2dQVDRnS0Z4dUlDQThVM1puSUhOcGVtVTllekl3ZlNCN0xpNHVjSEp2Y0hOOVBseHVJQ0FnSUR4d1lYUm9JR1E5WENKTk5DNDFNVFlnTnk0MU5EaGpNQzQwTXpZdE1DNDBORFlnTVM0d05ETXRNQzQwT0RFZ01TNDFOellnTUd3ekxqa3dPQ0F6TGpjME55QXpMamt3T0MwekxqYzBOMk13TGpVek15MHdMalE0TVNBeExqRTBNUzB3TGpRME5pQXhMalUzTkNBd0lEQXVORE0ySURBdU5EUTFJREF1TkRBNElERXVNVGszSURBZ01TNDJNVFV0TUM0ME1EWWdNQzQwTVRndE5DNDJPVFVnTkM0MU1ESXROQzQyT1RVZ05DNDFNREl0TUM0eU1UY2dNQzR5TWpNdE1DNDFNRElnTUM0ek16VXRNQzQzT0RjZ01DNHpNelZ6TFRBdU5UY3RNQzR4TVRJdE1DNDNPRGt0TUM0ek16VmpNQ0F3TFRRdU1qZzNMVFF1TURnMExUUXVOamsxTFRRdU5UQXljeTB3TGpRek5pMHhMakUzSURBdE1TNDJNVFY2WENJZ0x6NWNiaUFnUEM5VGRtYytYRzRwTzF4dVhHNHZMeUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxY2JpOHZJRVJ5YjNCa2IzZHVJQ1lnUTJ4bFlYSWdRblYwZEc5dWMxeHVMeThnUFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVhHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdSSEp2Y0dSdmQyNUpibVJwWTJGMGIzSlFjbTl3Y3p4Y2JpQWdUM0IwYVc5dUlEMGdkVzVyYm05M2JpeGNiaUFnU1hOTmRXeDBhU0JsZUhSbGJtUnpJR0p2YjJ4bFlXNGdQU0JpYjI5c1pXRnVMRnh1SUNCSGNtOTFjQ0JsZUhSbGJtUnpJRWR5YjNWd1FtRnpaVHhQY0hScGIyNCtJRDBnUjNKdmRYQkNZWE5sUEU5d2RHbHZiajVjYmo0Z1pYaDBaVzVrY3lCRGIyMXRiMjVRY205d2MwRnVaRU5zWVhOelRtRnRaVHhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BpQjdYRzRnSUM4cUtpQlVhR1VnWTJocGJHUnlaVzRnZEc4Z1ltVWdjbVZ1WkdWeVpXUWdhVzV6YVdSbElIUm9aU0JwYm1ScFkyRjBiM0l1SUNvdlhHNGdJR05vYVd4a2NtVnVQem9nVW1WaFkzUk9iMlJsTzF4dUlDQXZLaW9nVUhKdmNITWdkR2hoZENCM2FXeHNJR0psSUhCaGMzTmxaQ0J2YmlCMGJ5QjBhR1VnWTJocGJHUnlaVzR1SUNvdlhHNGdJR2x1Ym1WeVVISnZjSE02SUVwVFdDNUpiblJ5YVc1emFXTkZiR1Z0Wlc1MGMxc25aR2wySjEwN1hHNGdJQzhxS2lCVWFHVWdabTlqZFhObFpDQnpkR0YwWlNCdlppQjBhR1VnYzJWc1pXTjBMaUFxTDF4dUlDQnBjMFp2WTNWelpXUTZJR0p2YjJ4bFlXNDdYRzRnSUdselJHbHpZV0pzWldRNklHSnZiMnhsWVc0N1hHNTlYRzVjYm1OdmJuTjBJR0poYzJWRFUxTWdQU0E4WEc0Z0lFOXdkR2x2Yml4Y2JpQWdTWE5OZFd4MGFTQmxlSFJsYm1SeklHSnZiMnhsWVc0c1hHNGdJRWR5YjNWd0lHVjRkR1Z1WkhNZ1IzSnZkWEJDWVhObFBFOXdkR2x2Ymo1Y2JqNG9YRzRnSUh0Y2JpQWdJQ0JwYzBadlkzVnpaV1FzWEc0Z0lDQWdkR2hsYldVNklIdGNiaUFnSUNBZ0lITndZV05wYm1jNklIc2dZbUZ6WlZWdWFYUWdmU3hjYmlBZ0lDQWdJR052Ykc5eWN5eGNiaUFnSUNCOUxGeHVJQ0I5T2x4dUlDQWdJSHdnUkhKdmNHUnZkMjVKYm1ScFkyRjBiM0pRY205d2N6eFBjSFJwYjI0c0lFbHpUWFZzZEdrc0lFZHliM1Z3UGx4dUlDQWdJSHdnUTJ4bFlYSkpibVJwWTJGMGIzSlFjbTl3Y3p4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQaXhjYmlBZ2RXNXpkSGxzWldRNklHSnZiMnhsWVc1Y2JpazZJRU5UVTA5aWFtVmpkRmRwZEdoTVlXSmxiQ0E5UGlBb2UxeHVJQ0JzWVdKbGJEb2dKMmx1WkdsallYUnZja052Ym5SaGFXNWxjaWNzWEc0Z0lHUnBjM0JzWVhrNklDZG1iR1Y0Snl4Y2JpQWdkSEpoYm5OcGRHbHZiam9nSjJOdmJHOXlJREUxTUcxekp5eGNiaUFnTGk0dUtIVnVjM1I1YkdWa1hHNGdJQ0FnUHlCN2ZWeHVJQ0FnSURvZ2UxeHVJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ2FYTkdiMk4xYzJWa0lEOGdZMjlzYjNKekxtNWxkWFJ5WVd3Mk1DQTZJR052Ykc5eWN5NXVaWFYwY21Gc01qQXNYRzRnSUNBZ0lDQWdJSEJoWkdScGJtYzZJR0poYzJWVmJtbDBJQ29nTWl4Y2JpQWdJQ0FnSUNBZ0p6cG9iM1psY2ljNklIdGNiaUFnSUNBZ0lDQWdJQ0JqYjJ4dmNqb2dhWE5HYjJOMWMyVmtJRDhnWTI5c2IzSnpMbTVsZFhSeVlXdzRNQ0E2SUdOdmJHOXljeTV1WlhWMGNtRnNOREFzWEc0Z0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNCOUtTeGNibjBwTzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnWkhKdmNHUnZkMjVKYm1ScFkyRjBiM0pEVTFNZ1BTQmlZWE5sUTFOVE8xeHVaWGh3YjNKMElHTnZibk4wSUVSeWIzQmtiM2R1U1c1a2FXTmhkRzl5SUQwZ1BGeHVJQ0JQY0hScGIyNHNYRzRnSUVselRYVnNkR2tnWlhoMFpXNWtjeUJpYjI5c1pXRnVMRnh1SUNCSGNtOTFjQ0JsZUhSbGJtUnpJRWR5YjNWd1FtRnpaVHhQY0hScGIyNCtYRzQrS0Z4dUlDQndjbTl3Y3pvZ1JISnZjR1J2ZDI1SmJtUnBZMkYwYjNKUWNtOXdjenhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BseHVLU0E5UGlCN1hHNGdJR052Ym5OMElIc2dZMmhwYkdSeVpXNHNJR2x1Ym1WeVVISnZjSE1nZlNBOUlIQnliM0J6TzF4dUlDQnlaWFIxY200Z0tGeHVJQ0FnSUR4a2FYWmNiaUFnSUNBZ0lIc3VMaTVuWlhSVGRIbHNaVkJ5YjNCektIQnliM0J6TENBblpISnZjR1J2ZDI1SmJtUnBZMkYwYjNJbkxDQjdYRzRnSUNBZ0lDQWdJR2x1WkdsallYUnZjam9nZEhKMVpTeGNiaUFnSUNBZ0lDQWdKMlJ5YjNCa2IzZHVMV2x1WkdsallYUnZjaWM2SUhSeWRXVXNYRzRnSUNBZ0lDQjlLWDFjYmlBZ0lDQWdJSHN1TGk1cGJtNWxjbEJ5YjNCemZWeHVJQ0FnSUQ1Y2JpQWdJQ0FnSUh0amFHbHNaSEpsYmlCOGZDQThSRzkzYmtOb1pYWnliMjRnTHo1OVhHNGdJQ0FnUEM5a2FYWStYRzRnSUNrN1hHNTlPMXh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUVOc1pXRnlTVzVrYVdOaGRHOXlVSEp2Y0hNOFhHNGdJRTl3ZEdsdmJpQTlJSFZ1YTI1dmQyNHNYRzRnSUVselRYVnNkR2tnWlhoMFpXNWtjeUJpYjI5c1pXRnVJRDBnWW05dmJHVmhiaXhjYmlBZ1IzSnZkWEFnWlhoMFpXNWtjeUJIY205MWNFSmhjMlU4VDNCMGFXOXVQaUE5SUVkeWIzVndRbUZ6WlR4UGNIUnBiMjQrWEc0K0lHVjRkR1Z1WkhNZ1EyOXRiVzl1VUhKdmNITkJibVJEYkdGemMwNWhiV1U4VDNCMGFXOXVMQ0JKYzAxMWJIUnBMQ0JIY205MWNENGdlMXh1SUNBdktpb2dWR2hsSUdOb2FXeGtjbVZ1SUhSdklHSmxJSEpsYm1SbGNtVmtJR2x1YzJsa1pTQjBhR1VnYVc1a2FXTmhkRzl5TGlBcUwxeHVJQ0JqYUdsc1pISmxiajg2SUZKbFlXTjBUbTlrWlR0Y2JpQWdMeW9xSUZCeWIzQnpJSFJvWVhRZ2QybHNiQ0JpWlNCd1lYTnpaV1FnYjI0Z2RHOGdkR2hsSUdOb2FXeGtjbVZ1TGlBcUwxeHVJQ0JwYm01bGNsQnliM0J6T2lCS1UxZ3VTVzUwY21sdWMybGpSV3hsYldWdWRITmJKMlJwZGlkZE8xeHVJQ0F2S2lvZ1ZHaGxJR1p2WTNWelpXUWdjM1JoZEdVZ2IyWWdkR2hsSUhObGJHVmpkQzRnS2k5Y2JpQWdhWE5HYjJOMWMyVmtPaUJpYjI5c1pXRnVPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnWTJ4bFlYSkpibVJwWTJGMGIzSkRVMU1nUFNCaVlYTmxRMU5UTzF4dVpYaHdiM0owSUdOdmJuTjBJRU5zWldGeVNXNWthV05oZEc5eUlEMGdQRnh1SUNCUGNIUnBiMjRzWEc0Z0lFbHpUWFZzZEdrZ1pYaDBaVzVrY3lCaWIyOXNaV0Z1TEZ4dUlDQkhjbTkxY0NCbGVIUmxibVJ6SUVkeWIzVndRbUZ6WlR4UGNIUnBiMjQrWEc0K0tGeHVJQ0J3Y205d2N6b2dRMnhsWVhKSmJtUnBZMkYwYjNKUWNtOXdjenhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BseHVLU0E5UGlCN1hHNGdJR052Ym5OMElIc2dZMmhwYkdSeVpXNHNJR2x1Ym1WeVVISnZjSE1nZlNBOUlIQnliM0J6TzF4dUlDQnlaWFIxY200Z0tGeHVJQ0FnSUR4a2FYWmNiaUFnSUNBZ0lIc3VMaTVuWlhSVGRIbHNaVkJ5YjNCektIQnliM0J6TENBblkyeGxZWEpKYm1ScFkyRjBiM0luTENCN1hHNGdJQ0FnSUNBZ0lHbHVaR2xqWVhSdmNqb2dkSEoxWlN4Y2JpQWdJQ0FnSUNBZ0oyTnNaV0Z5TFdsdVpHbGpZWFJ2Y2ljNklIUnlkV1VzWEc0Z0lDQWdJQ0I5S1gxY2JpQWdJQ0FnSUhzdUxpNXBibTVsY2xCeWIzQnpmVnh1SUNBZ0lENWNiaUFnSUNBZ0lIdGphR2xzWkhKbGJpQjhmQ0E4UTNKdmMzTkpZMjl1SUM4K2ZWeHVJQ0FnSUR3dlpHbDJQbHh1SUNBcE8xeHVmVHRjYmx4dUx5OGdQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5WEc0dkx5QlRaWEJoY21GMGIzSmNiaTh2SUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBWeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRWx1WkdsallYUnZjbE5sY0dGeVlYUnZjbEJ5YjNCelBGeHVJQ0JQY0hScGIyNGdQU0IxYm10dWIzZHVMRnh1SUNCSmMwMTFiSFJwSUdWNGRHVnVaSE1nWW05dmJHVmhiaUE5SUdKdmIyeGxZVzRzWEc0Z0lFZHliM1Z3SUdWNGRHVnVaSE1nUjNKdmRYQkNZWE5sUEU5d2RHbHZiajRnUFNCSGNtOTFjRUpoYzJVOFQzQjBhVzl1UGx4dVBpQmxlSFJsYm1SeklFTnZiVzF2YmxCeWIzQnpRVzVrUTJ4aGMzTk9ZVzFsUEU5d2RHbHZiaXdnU1hOTmRXeDBhU3dnUjNKdmRYQStJSHRjYmlBZ2FYTkVhWE5oWW14bFpEb2dZbTl2YkdWaGJqdGNiaUFnYVhOR2IyTjFjMlZrT2lCaWIyOXNaV0Z1TzF4dUlDQnBibTVsY2xCeWIzQnpQem9nU2xOWUxrbHVkSEpwYm5OcFkwVnNaVzFsYm5Seld5ZHpjR0Z1SjEwN1hHNTlYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQnBibVJwWTJGMGIzSlRaWEJoY21GMGIzSkRVMU1nUFNBOFhHNGdJRTl3ZEdsdmJpeGNiaUFnU1hOTmRXeDBhU0JsZUhSbGJtUnpJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNWNiajRvWEc0Z0lIdGNiaUFnSUNCcGMwUnBjMkZpYkdWa0xGeHVJQ0FnSUhSb1pXMWxPaUI3WEc0Z0lDQWdJQ0J6Y0dGamFXNW5PaUI3SUdKaGMyVlZibWwwSUgwc1hHNGdJQ0FnSUNCamIyeHZjbk1zWEc0Z0lDQWdmU3hjYmlBZ2ZUb2dTVzVrYVdOaGRHOXlVMlZ3WVhKaGRHOXlVSEp2Y0hNOFQzQjBhVzl1TENCSmMwMTFiSFJwTENCSGNtOTFjRDRzWEc0Z0lIVnVjM1I1YkdWa09pQmliMjlzWldGdVhHNHBPaUJEVTFOUFltcGxZM1JYYVhSb1RHRmlaV3dnUFQ0Z0tIdGNiaUFnYkdGaVpXdzZJQ2RwYm1ScFkyRjBiM0pUWlhCaGNtRjBiM0luTEZ4dUlDQmhiR2xuYmxObGJHWTZJQ2R6ZEhKbGRHTm9KeXhjYmlBZ2QybGtkR2c2SURFc1hHNGdJQzR1TGloMWJuTjBlV3hsWkZ4dUlDQWdJRDhnZTMxY2JpQWdJQ0E2SUh0Y2JpQWdJQ0FnSUNBZ1ltRmphMmR5YjNWdVpFTnZiRzl5T2lCcGMwUnBjMkZpYkdWa0lEOGdZMjlzYjNKekxtNWxkWFJ5WVd3eE1DQTZJR052Ykc5eWN5NXVaWFYwY21Gc01qQXNYRzRnSUNBZ0lDQWdJRzFoY21kcGJrSnZkSFJ2YlRvZ1ltRnpaVlZ1YVhRZ0tpQXlMRnh1SUNBZ0lDQWdJQ0J0WVhKbmFXNVViM0E2SUdKaGMyVlZibWwwSUNvZ01peGNiaUFnSUNBZ0lIMHBMRnh1ZlNrN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCSmJtUnBZMkYwYjNKVFpYQmhjbUYwYjNJZ1BTQThYRzRnSUU5d2RHbHZiaXhjYmlBZ1NYTk5kV3gwYVNCbGVIUmxibVJ6SUdKdmIyeGxZVzRzWEc0Z0lFZHliM1Z3SUdWNGRHVnVaSE1nUjNKdmRYQkNZWE5sUEU5d2RHbHZiajVjYmo0b1hHNGdJSEJ5YjNCek9pQkpibVJwWTJGMGIzSlRaWEJoY21GMGIzSlFjbTl3Y3p4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQbHh1S1NBOVBpQjdYRzRnSUdOdmJuTjBJSHNnYVc1dVpYSlFjbTl3Y3lCOUlEMGdjSEp2Y0hNN1hHNGdJSEpsZEhWeWJpQW9YRzRnSUNBZ1BITndZVzVjYmlBZ0lDQWdJSHN1TGk1cGJtNWxjbEJ5YjNCemZWeHVJQ0FnSUNBZ2V5NHVMbWRsZEZOMGVXeGxVSEp2Y0hNb2NISnZjSE1zSUNkcGJtUnBZMkYwYjNKVFpYQmhjbUYwYjNJbkxDQjdYRzRnSUNBZ0lDQWdJQ2RwYm1ScFkyRjBiM0l0YzJWd1lYSmhkRzl5SnpvZ2RISjFaU3hjYmlBZ0lDQWdJSDBwZlZ4dUlDQWdJQzgrWEc0Z0lDazdYRzU5TzF4dVhHNHZMeUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxY2JpOHZJRXh2WVdScGJtZGNiaTh2SUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBWeHVYRzVqYjI1emRDQnNiMkZrYVc1blJHOTBRVzVwYldGMGFXOXVjeUE5SUd0bGVXWnlZVzFsYzJCY2JpQWdNQ1VzSURnd0pTd2dNVEF3SlNCN0lHOXdZV05wZEhrNklEQTdJSDFjYmlBZ05EQWxJSHNnYjNCaFkybDBlVG9nTVRzZ2ZWeHVZRHRjYmx4dVpYaHdiM0owSUdOdmJuTjBJR3h2WVdScGJtZEpibVJwWTJGMGIzSkRVMU1nUFNBOFhHNGdJRTl3ZEdsdmJpeGNiaUFnU1hOTmRXeDBhU0JsZUhSbGJtUnpJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNWNiajRvWEc0Z0lIdGNiaUFnSUNCcGMwWnZZM1Z6WldRc1hHNGdJQ0FnYzJsNlpTeGNiaUFnSUNCMGFHVnRaVG9nZTF4dUlDQWdJQ0FnWTI5c2IzSnpMRnh1SUNBZ0lDQWdjM0JoWTJsdVp6b2dleUJpWVhObFZXNXBkQ0I5TEZ4dUlDQWdJSDBzWEc0Z0lIMDZJRXh2WVdScGJtZEpibVJwWTJGMGIzSlFjbTl3Y3p4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQaXhjYmlBZ2RXNXpkSGxzWldRNklHSnZiMnhsWVc1Y2JpazZJRU5UVTA5aWFtVmpkRmRwZEdoTVlXSmxiQ0E5UGlBb2UxeHVJQ0JzWVdKbGJEb2dKMnh2WVdScGJtZEpibVJwWTJGMGIzSW5MRnh1SUNCa2FYTndiR0Y1T2lBblpteGxlQ2NzWEc0Z0lIUnlZVzV6YVhScGIyNDZJQ2RqYjJ4dmNpQXhOVEJ0Y3ljc1hHNGdJR0ZzYVdkdVUyVnNaam9nSjJObGJuUmxjaWNzWEc0Z0lHWnZiblJUYVhwbE9pQnphWHBsTEZ4dUlDQnNhVzVsU0dWcFoyaDBPaUF4TEZ4dUlDQnRZWEpuYVc1U2FXZG9kRG9nYzJsNlpTeGNiaUFnZEdWNGRFRnNhV2R1T2lBblkyVnVkR1Z5Snl4Y2JpQWdkbVZ5ZEdsallXeEJiR2xuYmpvZ0oyMXBaR1JzWlNjc1hHNGdJQzR1TGloMWJuTjBlV3hsWkZ4dUlDQWdJRDhnZTMxY2JpQWdJQ0E2SUh0Y2JpQWdJQ0FnSUNBZ1kyOXNiM0k2SUdselJtOWpkWE5sWkNBL0lHTnZiRzl5Y3k1dVpYVjBjbUZzTmpBZ09pQmpiMnh2Y25NdWJtVjFkSEpoYkRJd0xGeHVJQ0FnSUNBZ0lDQndZV1JrYVc1bk9pQmlZWE5sVlc1cGRDQXFJRElzWEc0Z0lDQWdJQ0I5S1N4Y2JuMHBPMXh1WEc1cGJuUmxjbVpoWTJVZ1RHOWhaR2x1WjBSdmRGQnliM0J6SUh0Y2JpQWdaR1ZzWVhrNklHNTFiV0psY2p0Y2JpQWdiMlptYzJWME9pQmliMjlzWldGdU8xeHVmVnh1WTI5dWMzUWdURzloWkdsdVowUnZkQ0E5SUNoN0lHUmxiR0Y1TENCdlptWnpaWFFnZlRvZ1RHOWhaR2x1WjBSdmRGQnliM0J6S1NBOVBpQW9YRzRnSUR4emNHRnVYRzRnSUNBZ1kzTnpQWHQ3WEc0Z0lDQWdJQ0JoYm1sdFlYUnBiMjQ2SUdBa2UyeHZZV1JwYm1kRWIzUkJibWx0WVhScGIyNXpmU0F4Y3lCbFlYTmxMV2x1TFc5MWRDQWtlMlJsYkdGNWZXMXpJR2x1Wm1sdWFYUmxPMkFzWEc0Z0lDQWdJQ0JpWVdOclozSnZkVzVrUTI5c2IzSTZJQ2RqZFhKeVpXNTBRMjlzYjNJbkxGeHVJQ0FnSUNBZ1ltOXlaR1Z5VW1Ga2FYVnpPaUFuTVdWdEp5eGNiaUFnSUNBZ0lHUnBjM0JzWVhrNklDZHBibXhwYm1VdFlteHZZMnNuTEZ4dUlDQWdJQ0FnYldGeVoybHVUR1ZtZERvZ2IyWm1jMlYwSUQ4Z0p6RmxiU2NnT2lCMWJtUmxabWx1WldRc1hHNGdJQ0FnSUNCb1pXbG5hSFE2SUNjeFpXMG5MRnh1SUNBZ0lDQWdkbVZ5ZEdsallXeEJiR2xuYmpvZ0ozUnZjQ2NzWEc0Z0lDQWdJQ0IzYVdSMGFEb2dKekZsYlNjc1hHNGdJQ0FnZlgxY2JpQWdMejVjYmlrN1hHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdURzloWkdsdVowbHVaR2xqWVhSdmNsQnliM0J6UEZ4dUlDQlBjSFJwYjI0Z1BTQjFibXR1YjNkdUxGeHVJQ0JKYzAxMWJIUnBJR1Y0ZEdWdVpITWdZbTl2YkdWaGJpQTlJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNGdQU0JIY205MWNFSmhjMlU4VDNCMGFXOXVQbHh1UGlCbGVIUmxibVJ6SUVOdmJXMXZibEJ5YjNCelFXNWtRMnhoYzNOT1lXMWxQRTl3ZEdsdmJpd2dTWE5OZFd4MGFTd2dSM0p2ZFhBK0lIdGNiaUFnTHlvcUlGQnliM0J6SUhSb1lYUWdkMmxzYkNCaVpTQndZWE56WldRZ2IyNGdkRzhnZEdobElHTm9hV3hrY21WdUxpQXFMMXh1SUNCcGJtNWxjbEJ5YjNCek9pQktVMWd1U1c1MGNtbHVjMmxqUld4bGJXVnVkSE5iSjJScGRpZGRPMXh1SUNBdktpb2dWR2hsSUdadlkzVnpaV1FnYzNSaGRHVWdiMllnZEdobElITmxiR1ZqZEM0Z0tpOWNiaUFnYVhOR2IyTjFjMlZrT2lCaWIyOXNaV0Z1TzF4dUlDQnBjMFJwYzJGaWJHVmtPaUJpYjI5c1pXRnVPMXh1SUNBdktpb2dVMlYwSUhOcGVtVWdiMllnZEdobElHTnZiblJoYVc1bGNpNGdLaTljYmlBZ2MybDZaVG9nYm5WdFltVnlPMXh1ZlZ4dVpYaHdiM0owSUdOdmJuTjBJRXh2WVdScGJtZEpibVJwWTJGMGIzSWdQU0E4WEc0Z0lFOXdkR2x2Yml4Y2JpQWdTWE5OZFd4MGFTQmxlSFJsYm1SeklHSnZiMnhsWVc0c1hHNGdJRWR5YjNWd0lHVjRkR1Z1WkhNZ1IzSnZkWEJDWVhObFBFOXdkR2x2Ymo1Y2JqNG9lMXh1SUNCcGJtNWxjbEJ5YjNCekxGeHVJQ0JwYzFKMGJDeGNiaUFnYzJsNlpTQTlJRFFzWEc0Z0lDNHVMbkpsYzNSUWNtOXdjMXh1ZlRvZ1RHOWhaR2x1WjBsdVpHbGpZWFJ2Y2xCeWIzQnpQRTl3ZEdsdmJpd2dTWE5OZFd4MGFTd2dSM0p2ZFhBK0tTQTlQaUI3WEc0Z0lISmxkSFZ5YmlBb1hHNGdJQ0FnUEdScGRseHVJQ0FnSUNBZ2V5NHVMbWRsZEZOMGVXeGxVSEp2Y0hNb1hHNGdJQ0FnSUNBZ0lIc2dMaTR1Y21WemRGQnliM0J6TENCcGJtNWxjbEJ5YjNCekxDQnBjMUowYkN3Z2MybDZaU0I5TEZ4dUlDQWdJQ0FnSUNBbmJHOWhaR2x1WjBsdVpHbGpZWFJ2Y2ljc1hHNGdJQ0FnSUNBZ0lIdGNiaUFnSUNBZ0lDQWdJQ0JwYm1ScFkyRjBiM0k2SUhSeWRXVXNYRzRnSUNBZ0lDQWdJQ0FnSjJ4dllXUnBibWN0YVc1a2FXTmhkRzl5SnpvZ2RISjFaU3hjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnS1gxY2JpQWdJQ0FnSUhzdUxpNXBibTVsY2xCeWIzQnpmVnh1SUNBZ0lENWNiaUFnSUNBZ0lEeE1iMkZrYVc1blJHOTBJR1JsYkdGNVBYc3dmU0J2Wm1aelpYUTllMmx6VW5Sc2ZTQXZQbHh1SUNBZ0lDQWdQRXh2WVdScGJtZEViM1FnWkdWc1lYazllekUyTUgwZ2IyWm1jMlYwSUM4K1hHNGdJQ0FnSUNBOFRHOWhaR2x1WjBSdmRDQmtaV3hoZVQxN016SXdmU0J2Wm1aelpYUTlleUZwYzFKMGJIMGdMejVjYmlBZ0lDQThMMlJwZGo1Y2JpQWdLVHRjYm4wN1hHNGlYWDA9ICovXCIpXG4gIH0pO1xufTtcbnZhciBMb2FkaW5nSW5kaWNhdG9yID0gZnVuY3Rpb24gTG9hZGluZ0luZGljYXRvcihfcmVmNykge1xuICB2YXIgaW5uZXJQcm9wcyA9IF9yZWY3LmlubmVyUHJvcHMsXG4gICAgaXNSdGwgPSBfcmVmNy5pc1J0bCxcbiAgICBfcmVmNyRzaXplID0gX3JlZjcuc2l6ZSxcbiAgICBzaXplID0gX3JlZjckc2l6ZSA9PT0gdm9pZCAwID8gNCA6IF9yZWY3JHNpemUsXG4gICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWY3LCBfZXhjbHVkZWQyKTtcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RQcm9wcyksIHt9LCB7XG4gICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICBpc1J0bDogaXNSdGwsXG4gICAgc2l6ZTogc2l6ZVxuICB9KSwgJ2xvYWRpbmdJbmRpY2F0b3InLCB7XG4gICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICdsb2FkaW5nLWluZGljYXRvcic6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBqc3goTG9hZGluZ0RvdCwge1xuICAgIGRlbGF5OiAwLFxuICAgIG9mZnNldDogaXNSdGxcbiAgfSksIGpzeChMb2FkaW5nRG90LCB7XG4gICAgZGVsYXk6IDE2MCxcbiAgICBvZmZzZXQ6IHRydWVcbiAgfSksIGpzeChMb2FkaW5nRG90LCB7XG4gICAgZGVsYXk6IDMyMCxcbiAgICBvZmZzZXQ6ICFpc1J0bFxuICB9KSk7XG59O1xuXG52YXIgY3NzJDEgPSBmdW5jdGlvbiBjc3MoX3JlZiwgdW5zdHlsZWQpIHtcbiAgdmFyIGlzRGlzYWJsZWQgPSBfcmVmLmlzRGlzYWJsZWQsXG4gICAgaXNGb2N1c2VkID0gX3JlZi5pc0ZvY3VzZWQsXG4gICAgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgY29sb3JzID0gX3JlZiR0aGVtZS5jb2xvcnMsXG4gICAgYm9yZGVyUmFkaXVzID0gX3JlZiR0aGVtZS5ib3JkZXJSYWRpdXMsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnY29udHJvbCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgY3Vyc29yOiAnZGVmYXVsdCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICBtaW5IZWlnaHQ6IHNwYWNpbmcuY29udHJvbEhlaWdodCxcbiAgICBvdXRsaW5lOiAnMCAhaW1wb3J0YW50JyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB0cmFuc2l0aW9uOiAnYWxsIDEwMG1zJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJhY2tncm91bmRDb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsNSA6IGNvbG9ycy5uZXV0cmFsMCxcbiAgICBib3JkZXJDb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsMTAgOiBpc0ZvY3VzZWQgPyBjb2xvcnMucHJpbWFyeSA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMsXG4gICAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gICAgYm9yZGVyV2lkdGg6IDEsXG4gICAgYm94U2hhZG93OiBpc0ZvY3VzZWQgPyBcIjAgMCAwIDFweCBcIi5jb25jYXQoY29sb3JzLnByaW1hcnkpIDogdW5kZWZpbmVkLFxuICAgICcmOmhvdmVyJzoge1xuICAgICAgYm9yZGVyQ29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5wcmltYXJ5IDogY29sb3JzLm5ldXRyYWwzMFxuICAgIH1cbiAgfSk7XG59O1xudmFyIENvbnRyb2wgPSBmdW5jdGlvbiBDb250cm9sKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgIGlzRm9jdXNlZCA9IHByb3BzLmlzRm9jdXNlZCxcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIG1lbnVJc09wZW4gPSBwcm9wcy5tZW51SXNPcGVuO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHtcbiAgICByZWY6IGlubmVyUmVmXG4gIH0sIGdldFN0eWxlUHJvcHMocHJvcHMsICdjb250cm9sJywge1xuICAgIGNvbnRyb2w6IHRydWUsXG4gICAgJ2NvbnRyb2wtLWlzLWRpc2FibGVkJzogaXNEaXNhYmxlZCxcbiAgICAnY29udHJvbC0taXMtZm9jdXNlZCc6IGlzRm9jdXNlZCxcbiAgICAnY29udHJvbC0tbWVudS1pcy1vcGVuJzogbWVudUlzT3BlblxuICB9KSwgaW5uZXJQcm9wcywge1xuICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBpc0Rpc2FibGVkIHx8IHVuZGVmaW5lZFxuICB9KSwgY2hpbGRyZW4pO1xufTtcbnZhciBDb250cm9sJDEgPSBDb250cm9sO1xuXG52YXIgX2V4Y2x1ZGVkJDEgPSBbXCJkYXRhXCJdO1xudmFyIGdyb3VwQ1NTID0gZnVuY3Rpb24gZ3JvdXBDU1MoX3JlZiwgdW5zdHlsZWQpIHtcbiAgdmFyIHNwYWNpbmcgPSBfcmVmLnRoZW1lLnNwYWNpbmc7XG4gIHJldHVybiB1bnN0eWxlZCA/IHt9IDoge1xuICAgIHBhZGRpbmdCb3R0b206IHNwYWNpbmcuYmFzZVVuaXQgKiAyLFxuICAgIHBhZGRpbmdUb3A6IHNwYWNpbmcuYmFzZVVuaXQgKiAyXG4gIH07XG59O1xudmFyIEdyb3VwID0gZnVuY3Rpb24gR3JvdXAocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgY3ggPSBwcm9wcy5jeCxcbiAgICBnZXRTdHlsZXMgPSBwcm9wcy5nZXRTdHlsZXMsXG4gICAgZ2V0Q2xhc3NOYW1lcyA9IHByb3BzLmdldENsYXNzTmFtZXMsXG4gICAgSGVhZGluZyA9IHByb3BzLkhlYWRpbmcsXG4gICAgaGVhZGluZ1Byb3BzID0gcHJvcHMuaGVhZGluZ1Byb3BzLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIGxhYmVsID0gcHJvcHMubGFiZWwsXG4gICAgdGhlbWUgPSBwcm9wcy50aGVtZSxcbiAgICBzZWxlY3RQcm9wcyA9IHByb3BzLnNlbGVjdFByb3BzO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnZ3JvdXAnLCB7XG4gICAgZ3JvdXA6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBqc3goSGVhZGluZywgX2V4dGVuZHMoe30sIGhlYWRpbmdQcm9wcywge1xuICAgIHNlbGVjdFByb3BzOiBzZWxlY3RQcm9wcyxcbiAgICB0aGVtZTogdGhlbWUsXG4gICAgZ2V0U3R5bGVzOiBnZXRTdHlsZXMsXG4gICAgZ2V0Q2xhc3NOYW1lczogZ2V0Q2xhc3NOYW1lcyxcbiAgICBjeDogY3hcbiAgfSksIGxhYmVsKSwganN4KFwiZGl2XCIsIG51bGwsIGNoaWxkcmVuKSk7XG59O1xudmFyIGdyb3VwSGVhZGluZ0NTUyA9IGZ1bmN0aW9uIGdyb3VwSGVhZGluZ0NTUyhfcmVmMiwgdW5zdHlsZWQpIHtcbiAgdmFyIF9yZWYyJHRoZW1lID0gX3JlZjIudGhlbWUsXG4gICAgY29sb3JzID0gX3JlZjIkdGhlbWUuY29sb3JzLFxuICAgIHNwYWNpbmcgPSBfcmVmMiR0aGVtZS5zcGFjaW5nO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdncm91cCcsXG4gICAgY3Vyc29yOiAnZGVmYXVsdCcsXG4gICAgZGlzcGxheTogJ2Jsb2NrJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBjb2xvcnMubmV1dHJhbDQwLFxuICAgIGZvbnRTaXplOiAnNzUlJyxcbiAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgbWFyZ2luQm90dG9tOiAnMC4yNWVtJyxcbiAgICBwYWRkaW5nTGVmdDogc3BhY2luZy5iYXNlVW5pdCAqIDMsXG4gICAgcGFkZGluZ1JpZ2h0OiBzcGFjaW5nLmJhc2VVbml0ICogMyxcbiAgICB0ZXh0VHJhbnNmb3JtOiAndXBwZXJjYXNlJ1xuICB9KTtcbn07XG52YXIgR3JvdXBIZWFkaW5nID0gZnVuY3Rpb24gR3JvdXBIZWFkaW5nKHByb3BzKSB7XG4gIHZhciBfY2xlYW5Db21tb25Qcm9wcyA9IGNsZWFuQ29tbW9uUHJvcHMocHJvcHMpO1xuICAgIF9jbGVhbkNvbW1vblByb3BzLmRhdGE7XG4gICAgdmFyIGlubmVyUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX2NsZWFuQ29tbW9uUHJvcHMsIF9leGNsdWRlZCQxKTtcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2dyb3VwSGVhZGluZycsIHtcbiAgICAnZ3JvdXAtaGVhZGluZyc6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpKTtcbn07XG52YXIgR3JvdXAkMSA9IEdyb3VwO1xuXG52YXIgX2V4Y2x1ZGVkID0gW1wiaW5uZXJSZWZcIiwgXCJpc0Rpc2FibGVkXCIsIFwiaXNIaWRkZW5cIiwgXCJpbnB1dENsYXNzTmFtZVwiXTtcbnZhciBpbnB1dENTUyA9IGZ1bmN0aW9uIGlucHV0Q1NTKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZi5pc0Rpc2FibGVkLFxuICAgIHZhbHVlID0gX3JlZi52YWx1ZSxcbiAgICBfcmVmJHRoZW1lID0gX3JlZi50aGVtZSxcbiAgICBzcGFjaW5nID0gX3JlZiR0aGVtZS5zcGFjaW5nLFxuICAgIGNvbG9ycyA9IF9yZWYkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICB2aXNpYmlsaXR5OiBpc0Rpc2FibGVkID8gJ2hpZGRlbicgOiAndmlzaWJsZScsXG4gICAgLy8gZm9yY2UgY3NzIHRvIHJlY29tcHV0ZSB3aGVuIHZhbHVlIGNoYW5nZSBkdWUgdG8gQGVtb3Rpb24gYnVnLlxuICAgIC8vIFdlIGNhbiByZW1vdmUgaXQgd2hlbmV2ZXIgdGhlIGJ1ZyBpcyBmaXhlZC5cbiAgICB0cmFuc2Zvcm06IHZhbHVlID8gJ3RyYW5zbGF0ZVooMCknIDogJydcbiAgfSwgY29udGFpbmVyU3R5bGUpLCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIG1hcmdpbjogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgcGFkZGluZ0JvdHRvbTogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgcGFkZGluZ1RvcDogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgY29sb3I6IGNvbG9ycy5uZXV0cmFsODBcbiAgfSk7XG59O1xudmFyIHNwYWNpbmdTdHlsZSA9IHtcbiAgZ3JpZEFyZWE6ICcxIC8gMicsXG4gIGZvbnQ6ICdpbmhlcml0JyxcbiAgbWluV2lkdGg6ICcycHgnLFxuICBib3JkZXI6IDAsXG4gIG1hcmdpbjogMCxcbiAgb3V0bGluZTogMCxcbiAgcGFkZGluZzogMFxufTtcbnZhciBjb250YWluZXJTdHlsZSA9IHtcbiAgZmxleDogJzEgMSBhdXRvJyxcbiAgZGlzcGxheTogJ2lubGluZS1ncmlkJyxcbiAgZ3JpZEFyZWE6ICcxIC8gMSAvIDIgLyAzJyxcbiAgZ3JpZFRlbXBsYXRlQ29sdW1uczogJzAgbWluLWNvbnRlbnQnLFxuICAnJjphZnRlcic6IF9vYmplY3RTcHJlYWQoe1xuICAgIGNvbnRlbnQ6ICdhdHRyKGRhdGEtdmFsdWUpIFwiIFwiJyxcbiAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcbiAgICB3aGl0ZVNwYWNlOiAncHJlJ1xuICB9LCBzcGFjaW5nU3R5bGUpXG59O1xudmFyIGlucHV0U3R5bGUgPSBmdW5jdGlvbiBpbnB1dFN0eWxlKGlzSGlkZGVuKSB7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ2lucHV0JyxcbiAgICBjb2xvcjogJ2luaGVyaXQnLFxuICAgIGJhY2tncm91bmQ6IDAsXG4gICAgb3BhY2l0eTogaXNIaWRkZW4gPyAwIDogMSxcbiAgICB3aWR0aDogJzEwMCUnXG4gIH0sIHNwYWNpbmdTdHlsZSk7XG59O1xudmFyIElucHV0ID0gZnVuY3Rpb24gSW5wdXQocHJvcHMpIHtcbiAgdmFyIGN4ID0gcHJvcHMuY3gsXG4gICAgdmFsdWUgPSBwcm9wcy52YWx1ZTtcbiAgdmFyIF9jbGVhbkNvbW1vblByb3BzID0gY2xlYW5Db21tb25Qcm9wcyhwcm9wcyksXG4gICAgaW5uZXJSZWYgPSBfY2xlYW5Db21tb25Qcm9wcy5pbm5lclJlZixcbiAgICBpc0Rpc2FibGVkID0gX2NsZWFuQ29tbW9uUHJvcHMuaXNEaXNhYmxlZCxcbiAgICBpc0hpZGRlbiA9IF9jbGVhbkNvbW1vblByb3BzLmlzSGlkZGVuLFxuICAgIGlucHV0Q2xhc3NOYW1lID0gX2NsZWFuQ29tbW9uUHJvcHMuaW5wdXRDbGFzc05hbWUsXG4gICAgaW5uZXJQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfY2xlYW5Db21tb25Qcm9wcywgX2V4Y2x1ZGVkKTtcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2lucHV0Jywge1xuICAgICdpbnB1dC1jb250YWluZXInOiB0cnVlXG4gIH0pLCB7XG4gICAgXCJkYXRhLXZhbHVlXCI6IHZhbHVlIHx8ICcnXG4gIH0pLCBqc3goXCJpbnB1dFwiLCBfZXh0ZW5kcyh7XG4gICAgY2xhc3NOYW1lOiBjeCh7XG4gICAgICBpbnB1dDogdHJ1ZVxuICAgIH0sIGlucHV0Q2xhc3NOYW1lKSxcbiAgICByZWY6IGlubmVyUmVmLFxuICAgIHN0eWxlOiBpbnB1dFN0eWxlKGlzSGlkZGVuKSxcbiAgICBkaXNhYmxlZDogaXNEaXNhYmxlZFxuICB9LCBpbm5lclByb3BzKSkpO1xufTtcbnZhciBJbnB1dCQxID0gSW5wdXQ7XG5cbnZhciBtdWx0aVZhbHVlQ1NTID0gZnVuY3Rpb24gbXVsdGlWYWx1ZUNTUyhfcmVmLCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZyxcbiAgICBib3JkZXJSYWRpdXMgPSBfcmVmJHRoZW1lLmJvcmRlclJhZGl1cyxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnbXVsdGlWYWx1ZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIG1pbldpZHRoOiAwXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBjb2xvcnMubmV1dHJhbDEwLFxuICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzIC8gMixcbiAgICBtYXJnaW46IHNwYWNpbmcuYmFzZVVuaXQgLyAyXG4gIH0pO1xufTtcbnZhciBtdWx0aVZhbHVlTGFiZWxDU1MgPSBmdW5jdGlvbiBtdWx0aVZhbHVlTGFiZWxDU1MoX3JlZjIsIHVuc3R5bGVkKSB7XG4gIHZhciBfcmVmMiR0aGVtZSA9IF9yZWYyLnRoZW1lLFxuICAgIGJvcmRlclJhZGl1cyA9IF9yZWYyJHRoZW1lLmJvcmRlclJhZGl1cyxcbiAgICBjb2xvcnMgPSBfcmVmMiR0aGVtZS5jb2xvcnMsXG4gICAgY3JvcFdpdGhFbGxpcHNpcyA9IF9yZWYyLmNyb3BXaXRoRWxsaXBzaXM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgdGV4dE92ZXJmbG93OiBjcm9wV2l0aEVsbGlwc2lzIHx8IGNyb3BXaXRoRWxsaXBzaXMgPT09IHVuZGVmaW5lZCA/ICdlbGxpcHNpcycgOiB1bmRlZmluZWQsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCdcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyAvIDIsXG4gICAgY29sb3I6IGNvbG9ycy5uZXV0cmFsODAsXG4gICAgZm9udFNpemU6ICc4NSUnLFxuICAgIHBhZGRpbmc6IDMsXG4gICAgcGFkZGluZ0xlZnQ6IDZcbiAgfSk7XG59O1xudmFyIG11bHRpVmFsdWVSZW1vdmVDU1MgPSBmdW5jdGlvbiBtdWx0aVZhbHVlUmVtb3ZlQ1NTKF9yZWYzLCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZjMkdGhlbWUgPSBfcmVmMy50aGVtZSxcbiAgICBzcGFjaW5nID0gX3JlZjMkdGhlbWUuc3BhY2luZyxcbiAgICBib3JkZXJSYWRpdXMgPSBfcmVmMyR0aGVtZS5ib3JkZXJSYWRpdXMsXG4gICAgY29sb3JzID0gX3JlZjMkdGhlbWUuY29sb3JzLFxuICAgIGlzRm9jdXNlZCA9IF9yZWYzLmlzRm9jdXNlZDtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6ICdmbGV4J1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzIC8gMixcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5kYW5nZXJMaWdodCA6IHVuZGVmaW5lZCxcbiAgICBwYWRkaW5nTGVmdDogc3BhY2luZy5iYXNlVW5pdCxcbiAgICBwYWRkaW5nUmlnaHQ6IHNwYWNpbmcuYmFzZVVuaXQsXG4gICAgJzpob3Zlcic6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogY29sb3JzLmRhbmdlckxpZ2h0LFxuICAgICAgY29sb3I6IGNvbG9ycy5kYW5nZXJcbiAgICB9XG4gIH0pO1xufTtcbnZhciBNdWx0aVZhbHVlR2VuZXJpYyA9IGZ1bmN0aW9uIE11bHRpVmFsdWVHZW5lcmljKF9yZWY0KSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWY0LmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBfcmVmNC5pbm5lclByb3BzO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIGlubmVyUHJvcHMsIGNoaWxkcmVuKTtcbn07XG52YXIgTXVsdGlWYWx1ZUNvbnRhaW5lciA9IE11bHRpVmFsdWVHZW5lcmljO1xudmFyIE11bHRpVmFsdWVMYWJlbCA9IE11bHRpVmFsdWVHZW5lcmljO1xuZnVuY3Rpb24gTXVsdGlWYWx1ZVJlbW92ZShfcmVmNSkge1xuICB2YXIgY2hpbGRyZW4gPSBfcmVmNS5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gX3JlZjUuaW5uZXJQcm9wcztcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgcm9sZTogXCJidXR0b25cIlxuICB9LCBpbm5lclByb3BzKSwgY2hpbGRyZW4gfHwganN4KENyb3NzSWNvbiwge1xuICAgIHNpemU6IDE0XG4gIH0pKTtcbn1cbnZhciBNdWx0aVZhbHVlID0gZnVuY3Rpb24gTXVsdGlWYWx1ZShwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBjb21wb25lbnRzID0gcHJvcHMuY29tcG9uZW50cyxcbiAgICBkYXRhID0gcHJvcHMuZGF0YSxcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZCxcbiAgICByZW1vdmVQcm9wcyA9IHByb3BzLnJlbW92ZVByb3BzLFxuICAgIHNlbGVjdFByb3BzID0gcHJvcHMuc2VsZWN0UHJvcHM7XG4gIHZhciBDb250YWluZXIgPSBjb21wb25lbnRzLkNvbnRhaW5lcixcbiAgICBMYWJlbCA9IGNvbXBvbmVudHMuTGFiZWwsXG4gICAgUmVtb3ZlID0gY29tcG9uZW50cy5SZW1vdmU7XG4gIHJldHVybiBqc3goQ29udGFpbmVyLCB7XG4gICAgZGF0YTogZGF0YSxcbiAgICBpbm5lclByb3BzOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdtdWx0aVZhbHVlJywge1xuICAgICAgJ211bHRpLXZhbHVlJzogdHJ1ZSxcbiAgICAgICdtdWx0aS12YWx1ZS0taXMtZGlzYWJsZWQnOiBpc0Rpc2FibGVkXG4gICAgfSkpLCBpbm5lclByb3BzKSxcbiAgICBzZWxlY3RQcm9wczogc2VsZWN0UHJvcHNcbiAgfSwganN4KExhYmVsLCB7XG4gICAgZGF0YTogZGF0YSxcbiAgICBpbm5lclByb3BzOiBfb2JqZWN0U3ByZWFkKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbXVsdGlWYWx1ZUxhYmVsJywge1xuICAgICAgJ211bHRpLXZhbHVlX19sYWJlbCc6IHRydWVcbiAgICB9KSksXG4gICAgc2VsZWN0UHJvcHM6IHNlbGVjdFByb3BzXG4gIH0sIGNoaWxkcmVuKSwganN4KFJlbW92ZSwge1xuICAgIGRhdGE6IGRhdGEsXG4gICAgaW5uZXJQcm9wczogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbXVsdGlWYWx1ZVJlbW92ZScsIHtcbiAgICAgICdtdWx0aS12YWx1ZV9fcmVtb3ZlJzogdHJ1ZVxuICAgIH0pKSwge30sIHtcbiAgICAgICdhcmlhLWxhYmVsJzogXCJSZW1vdmUgXCIuY29uY2F0KGNoaWxkcmVuIHx8ICdvcHRpb24nKVxuICAgIH0sIHJlbW92ZVByb3BzKSxcbiAgICBzZWxlY3RQcm9wczogc2VsZWN0UHJvcHNcbiAgfSkpO1xufTtcbnZhciBNdWx0aVZhbHVlJDEgPSBNdWx0aVZhbHVlO1xuXG52YXIgb3B0aW9uQ1NTID0gZnVuY3Rpb24gb3B0aW9uQ1NTKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZi5pc0Rpc2FibGVkLFxuICAgIGlzRm9jdXNlZCA9IF9yZWYuaXNGb2N1c2VkLFxuICAgIGlzU2VsZWN0ZWQgPSBfcmVmLmlzU2VsZWN0ZWQsXG4gICAgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZyxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnb3B0aW9uJyxcbiAgICBjdXJzb3I6ICdkZWZhdWx0JyxcbiAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgIGZvbnRTaXplOiAnaW5oZXJpdCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gICAgV2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6ICdyZ2JhKDAsIDAsIDAsIDApJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJhY2tncm91bmRDb2xvcjogaXNTZWxlY3RlZCA/IGNvbG9ycy5wcmltYXJ5IDogaXNGb2N1c2VkID8gY29sb3JzLnByaW1hcnkyNSA6ICd0cmFuc3BhcmVudCcsXG4gICAgY29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDIwIDogaXNTZWxlY3RlZCA/IGNvbG9ycy5uZXV0cmFsMCA6ICdpbmhlcml0JyxcbiAgICBwYWRkaW5nOiBcIlwiLmNvbmNhdChzcGFjaW5nLmJhc2VVbml0ICogMiwgXCJweCBcIikuY29uY2F0KHNwYWNpbmcuYmFzZVVuaXQgKiAzLCBcInB4XCIpLFxuICAgIC8vIHByb3ZpZGUgc29tZSBhZmZvcmRhbmNlIG9uIHRvdWNoIGRldmljZXNcbiAgICAnOmFjdGl2ZSc6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogIWlzRGlzYWJsZWQgPyBpc1NlbGVjdGVkID8gY29sb3JzLnByaW1hcnkgOiBjb2xvcnMucHJpbWFyeTUwIDogdW5kZWZpbmVkXG4gICAgfVxuICB9KTtcbn07XG52YXIgT3B0aW9uID0gZnVuY3Rpb24gT3B0aW9uKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgIGlzRm9jdXNlZCA9IHByb3BzLmlzRm9jdXNlZCxcbiAgICBpc1NlbGVjdGVkID0gcHJvcHMuaXNTZWxlY3RlZCxcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnb3B0aW9uJywge1xuICAgIG9wdGlvbjogdHJ1ZSxcbiAgICAnb3B0aW9uLS1pcy1kaXNhYmxlZCc6IGlzRGlzYWJsZWQsXG4gICAgJ29wdGlvbi0taXMtZm9jdXNlZCc6IGlzRm9jdXNlZCxcbiAgICAnb3B0aW9uLS1pcy1zZWxlY3RlZCc6IGlzU2VsZWN0ZWRcbiAgfSksIHtcbiAgICByZWY6IGlubmVyUmVmLFxuICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBpc0Rpc2FibGVkXG4gIH0sIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xudmFyIE9wdGlvbiQxID0gT3B0aW9uO1xuXG52YXIgcGxhY2Vob2xkZXJDU1MgPSBmdW5jdGlvbiBwbGFjZWhvbGRlckNTUyhfcmVmLCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZyxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAncGxhY2Vob2xkZXInLFxuICAgIGdyaWRBcmVhOiAnMSAvIDEgLyAyIC8gMydcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBjb2xvcjogY29sb3JzLm5ldXRyYWw1MCxcbiAgICBtYXJnaW5MZWZ0OiBzcGFjaW5nLmJhc2VVbml0IC8gMixcbiAgICBtYXJnaW5SaWdodDogc3BhY2luZy5iYXNlVW5pdCAvIDJcbiAgfSk7XG59O1xudmFyIFBsYWNlaG9sZGVyID0gZnVuY3Rpb24gUGxhY2Vob2xkZXIocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdwbGFjZWhvbGRlcicsIHtcbiAgICBwbGFjZWhvbGRlcjogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG52YXIgUGxhY2Vob2xkZXIkMSA9IFBsYWNlaG9sZGVyO1xuXG52YXIgY3NzID0gZnVuY3Rpb24gY3NzKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZi5pc0Rpc2FibGVkLFxuICAgIF9yZWYkdGhlbWUgPSBfcmVmLnRoZW1lLFxuICAgIHNwYWNpbmcgPSBfcmVmJHRoZW1lLnNwYWNpbmcsXG4gICAgY29sb3JzID0gX3JlZiR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ3NpbmdsZVZhbHVlJyxcbiAgICBncmlkQXJlYTogJzEgLyAxIC8gMiAvIDMnLFxuICAgIG1heFdpZHRoOiAnMTAwJScsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWw0MCA6IGNvbG9ycy5uZXV0cmFsODAsXG4gICAgbWFyZ2luTGVmdDogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgbWFyZ2luUmlnaHQ6IHNwYWNpbmcuYmFzZVVuaXQgLyAyXG4gIH0pO1xufTtcbnZhciBTaW5nbGVWYWx1ZSA9IGZ1bmN0aW9uIFNpbmdsZVZhbHVlKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnc2luZ2xlVmFsdWUnLCB7XG4gICAgJ3NpbmdsZS12YWx1ZSc6IHRydWUsXG4gICAgJ3NpbmdsZS12YWx1ZS0taXMtZGlzYWJsZWQnOiBpc0Rpc2FibGVkXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcbnZhciBTaW5nbGVWYWx1ZSQxID0gU2luZ2xlVmFsdWU7XG5cbnZhciBjb21wb25lbnRzID0ge1xuICBDbGVhckluZGljYXRvcjogQ2xlYXJJbmRpY2F0b3IsXG4gIENvbnRyb2w6IENvbnRyb2wkMSxcbiAgRHJvcGRvd25JbmRpY2F0b3I6IERyb3Bkb3duSW5kaWNhdG9yLFxuICBEb3duQ2hldnJvbjogRG93bkNoZXZyb24sXG4gIENyb3NzSWNvbjogQ3Jvc3NJY29uLFxuICBHcm91cDogR3JvdXAkMSxcbiAgR3JvdXBIZWFkaW5nOiBHcm91cEhlYWRpbmcsXG4gIEluZGljYXRvcnNDb250YWluZXI6IEluZGljYXRvcnNDb250YWluZXIsXG4gIEluZGljYXRvclNlcGFyYXRvcjogSW5kaWNhdG9yU2VwYXJhdG9yLFxuICBJbnB1dDogSW5wdXQkMSxcbiAgTG9hZGluZ0luZGljYXRvcjogTG9hZGluZ0luZGljYXRvcixcbiAgTWVudTogTWVudSQxLFxuICBNZW51TGlzdDogTWVudUxpc3QsXG4gIE1lbnVQb3J0YWw6IE1lbnVQb3J0YWwsXG4gIExvYWRpbmdNZXNzYWdlOiBMb2FkaW5nTWVzc2FnZSxcbiAgTm9PcHRpb25zTWVzc2FnZTogTm9PcHRpb25zTWVzc2FnZSxcbiAgTXVsdGlWYWx1ZTogTXVsdGlWYWx1ZSQxLFxuICBNdWx0aVZhbHVlQ29udGFpbmVyOiBNdWx0aVZhbHVlQ29udGFpbmVyLFxuICBNdWx0aVZhbHVlTGFiZWw6IE11bHRpVmFsdWVMYWJlbCxcbiAgTXVsdGlWYWx1ZVJlbW92ZTogTXVsdGlWYWx1ZVJlbW92ZSxcbiAgT3B0aW9uOiBPcHRpb24kMSxcbiAgUGxhY2Vob2xkZXI6IFBsYWNlaG9sZGVyJDEsXG4gIFNlbGVjdENvbnRhaW5lcjogU2VsZWN0Q29udGFpbmVyLFxuICBTaW5nbGVWYWx1ZTogU2luZ2xlVmFsdWUkMSxcbiAgVmFsdWVDb250YWluZXI6IFZhbHVlQ29udGFpbmVyXG59O1xudmFyIGRlZmF1bHRDb21wb25lbnRzID0gZnVuY3Rpb24gZGVmYXVsdENvbXBvbmVudHMocHJvcHMpIHtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgY29tcG9uZW50cyksIHByb3BzLmNvbXBvbmVudHMpO1xufTtcblxuZXhwb3J0IHsgaXNNb2JpbGVEZXZpY2UgYXMgQSwgbXVsdGlWYWx1ZUFzVmFsdWUgYXMgQiwgc2luZ2xlVmFsdWVBc1ZhbHVlIGFzIEMsIHZhbHVlVGVybmFyeSBhcyBELCBjbGFzc05hbWVzIGFzIEUsIGRlZmF1bHRDb21wb25lbnRzIGFzIEYsIGlzRG9jdW1lbnRFbGVtZW50IGFzIEcsIGNsZWFuVmFsdWUgYXMgSCwgc2Nyb2xsSW50b1ZpZXcgYXMgSSwgbm9vcCBhcyBKLCBub3ROdWxsaXNoIGFzIEssIGhhbmRsZUlucHV0Q2hhbmdlIGFzIEwsIE1lbnVQbGFjZXIgYXMgTSwgY2xlYXJJbmRpY2F0b3JDU1MgYXMgYSwgY29udGFpbmVyQ1NTIGFzIGIsIGNvbXBvbmVudHMgYXMgYywgY3NzJDEgYXMgZCwgZHJvcGRvd25JbmRpY2F0b3JDU1MgYXMgZSwgZ3JvdXBIZWFkaW5nQ1NTIGFzIGYsIGdyb3VwQ1NTIGFzIGcsIGluZGljYXRvclNlcGFyYXRvckNTUyBhcyBoLCBpbmRpY2F0b3JzQ29udGFpbmVyQ1NTIGFzIGksIGlucHV0Q1NTIGFzIGosIGxvYWRpbmdNZXNzYWdlQ1NTIGFzIGssIGxvYWRpbmdJbmRpY2F0b3JDU1MgYXMgbCwgbWVudUNTUyBhcyBtLCBtZW51TGlzdENTUyBhcyBuLCBtZW51UG9ydGFsQ1NTIGFzIG8sIG11bHRpVmFsdWVDU1MgYXMgcCwgbXVsdGlWYWx1ZUxhYmVsQ1NTIGFzIHEsIHJlbW92ZVByb3BzIGFzIHIsIHN1cHBvcnRzUGFzc2l2ZUV2ZW50cyBhcyBzLCBtdWx0aVZhbHVlUmVtb3ZlQ1NTIGFzIHQsIG5vT3B0aW9uc01lc3NhZ2VDU1MgYXMgdSwgb3B0aW9uQ1NTIGFzIHYsIHBsYWNlaG9sZGVyQ1NTIGFzIHcsIGNzcyBhcyB4LCB2YWx1ZUNvbnRhaW5lckNTUyBhcyB5LCBpc1RvdWNoQ2FwYWJsZSBhcyB6IH07XG4iLCJ2YXIgc2FmZUlzTmFOID0gTnVtYmVyLmlzTmFOIHx8XG4gICAgZnVuY3Rpb24gcG9ueWZpbGwodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgdmFsdWUgIT09IHZhbHVlO1xuICAgIH07XG5mdW5jdGlvbiBpc0VxdWFsKGZpcnN0LCBzZWNvbmQpIHtcbiAgICBpZiAoZmlyc3QgPT09IHNlY29uZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHNhZmVJc05hTihmaXJzdCkgJiYgc2FmZUlzTmFOKHNlY29uZCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGFyZUlucHV0c0VxdWFsKG5ld0lucHV0cywgbGFzdElucHV0cykge1xuICAgIGlmIChuZXdJbnB1dHMubGVuZ3RoICE9PSBsYXN0SW5wdXRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV3SW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICghaXNFcXVhbChuZXdJbnB1dHNbaV0sIGxhc3RJbnB1dHNbaV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIG1lbW9pemVPbmUocmVzdWx0Rm4sIGlzRXF1YWwpIHtcbiAgICBpZiAoaXNFcXVhbCA9PT0gdm9pZCAwKSB7IGlzRXF1YWwgPSBhcmVJbnB1dHNFcXVhbDsgfVxuICAgIHZhciBjYWNoZSA9IG51bGw7XG4gICAgZnVuY3Rpb24gbWVtb2l6ZWQoKSB7XG4gICAgICAgIHZhciBuZXdBcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBuZXdBcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhY2hlICYmIGNhY2hlLmxhc3RUaGlzID09PSB0aGlzICYmIGlzRXF1YWwobmV3QXJncywgY2FjaGUubGFzdEFyZ3MpKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGUubGFzdFJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGFzdFJlc3VsdCA9IHJlc3VsdEZuLmFwcGx5KHRoaXMsIG5ld0FyZ3MpO1xuICAgICAgICBjYWNoZSA9IHtcbiAgICAgICAgICAgIGxhc3RSZXN1bHQ6IGxhc3RSZXN1bHQsXG4gICAgICAgICAgICBsYXN0QXJnczogbmV3QXJncyxcbiAgICAgICAgICAgIGxhc3RUaGlzOiB0aGlzLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbGFzdFJlc3VsdDtcbiAgICB9XG4gICAgbWVtb2l6ZWQuY2xlYXIgPSBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICAgICAgY2FjaGUgPSBudWxsO1xuICAgIH07XG4gICAgcmV0dXJuIG1lbW9pemVkO1xufVxuXG5leHBvcnQgeyBtZW1vaXplT25lIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBfZXh0ZW5kcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzJztcbmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDInO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjayc7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzJztcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHMnO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlcic7XG5pbXBvcnQgX3RvQ29uc3VtYWJsZUFycmF5IGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZU1lbW8sIEZyYWdtZW50LCB1c2VSZWYsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHIgYXMgcmVtb3ZlUHJvcHMsIHMgYXMgc3VwcG9ydHNQYXNzaXZlRXZlbnRzLCBhIGFzIGNsZWFySW5kaWNhdG9yQ1NTLCBiIGFzIGNvbnRhaW5lckNTUywgZCBhcyBjc3MkMSwgZSBhcyBkcm9wZG93bkluZGljYXRvckNTUywgZyBhcyBncm91cENTUywgZiBhcyBncm91cEhlYWRpbmdDU1MsIGkgYXMgaW5kaWNhdG9yc0NvbnRhaW5lckNTUywgaCBhcyBpbmRpY2F0b3JTZXBhcmF0b3JDU1MsIGogYXMgaW5wdXRDU1MsIGwgYXMgbG9hZGluZ0luZGljYXRvckNTUywgayBhcyBsb2FkaW5nTWVzc2FnZUNTUywgbSBhcyBtZW51Q1NTLCBuIGFzIG1lbnVMaXN0Q1NTLCBvIGFzIG1lbnVQb3J0YWxDU1MsIHAgYXMgbXVsdGlWYWx1ZUNTUywgcSBhcyBtdWx0aVZhbHVlTGFiZWxDU1MsIHQgYXMgbXVsdGlWYWx1ZVJlbW92ZUNTUywgdSBhcyBub09wdGlvbnNNZXNzYWdlQ1NTLCB2IGFzIG9wdGlvbkNTUywgdyBhcyBwbGFjZWhvbGRlckNTUywgeCBhcyBjc3MkMiwgeSBhcyB2YWx1ZUNvbnRhaW5lckNTUywgeiBhcyBpc1RvdWNoQ2FwYWJsZSwgQSBhcyBpc01vYmlsZURldmljZSwgQiBhcyBtdWx0aVZhbHVlQXNWYWx1ZSwgQyBhcyBzaW5nbGVWYWx1ZUFzVmFsdWUsIEQgYXMgdmFsdWVUZXJuYXJ5LCBFIGFzIGNsYXNzTmFtZXMsIEYgYXMgZGVmYXVsdENvbXBvbmVudHMsIEcgYXMgaXNEb2N1bWVudEVsZW1lbnQsIEggYXMgY2xlYW5WYWx1ZSwgSSBhcyBzY3JvbGxJbnRvVmlldywgSiBhcyBub29wLCBNIGFzIE1lbnVQbGFjZXIsIEsgYXMgbm90TnVsbGlzaCB9IGZyb20gJy4vaW5kZXgtNjQxZWU1YjguZXNtLmpzJztcbmltcG9ydCB7IGpzeCwgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IG1lbW9pemVPbmUgZnJvbSAnbWVtb2l6ZS1vbmUnO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllcyc7XG5cbmZ1bmN0aW9uIF9FTU9USU9OX1NUUklOR0lGSUVEX0NTU19FUlJPUl9fJDIoKSB7IHJldHVybiBcIllvdSBoYXZlIHRyaWVkIHRvIHN0cmluZ2lmeSBvYmplY3QgcmV0dXJuZWQgZnJvbSBgY3NzYCBmdW5jdGlvbi4gSXQgaXNuJ3Qgc3VwcG9zZWQgdG8gYmUgdXNlZCBkaXJlY3RseSAoZS5nLiBhcyB2YWx1ZSBvZiB0aGUgYGNsYXNzTmFtZWAgcHJvcCksIGJ1dCByYXRoZXIgaGFuZGVkIHRvIGVtb3Rpb24gc28gaXQgY2FuIGhhbmRsZSBpdCAoZS5nLiBhcyB2YWx1ZSBvZiBgY3NzYCBwcm9wKS5cIjsgfVxuXG4vLyBBc3Npc3RpdmUgdGV4dCB0byBkZXNjcmliZSB2aXN1YWwgZWxlbWVudHMuIEhpZGRlbiBmb3Igc2lnaHRlZCB1c2Vycy5cbnZhciBfcmVmID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8ge1xuICBuYW1lOiBcIjdwZzBjai1hMTF5VGV4dFwiLFxuICBzdHlsZXM6IFwibGFiZWw6YTExeVRleHQ7ei1pbmRleDo5OTk5O2JvcmRlcjowO2NsaXA6cmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpO2hlaWdodDoxcHg7d2lkdGg6MXB4O3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7d2hpdGUtc3BhY2U6bm93cmFwXCJcbn0gOiB7XG4gIG5hbWU6IFwiMWY0M2F2ei1hMTF5VGV4dC1BMTF5VGV4dFwiLFxuICBzdHlsZXM6IFwibGFiZWw6YTExeVRleHQ7ei1pbmRleDo5OTk5O2JvcmRlcjowO2NsaXA6cmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpO2hlaWdodDoxcHg7d2lkdGg6MXB4O3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7d2hpdGUtc3BhY2U6bm93cmFwO2xhYmVsOkExMXlUZXh0O1wiLFxuICBtYXA6IFwiLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWtFeE1YbFVaWGgwTG5SemVDSmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRlBTU0lzSW1acGJHVWlPaUpCTVRGNVZHVjRkQzUwYzNnaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaW9nUUdwemVDQnFjM2dnS2k5Y2JtbHRjRzl5ZENCN0lFcFRXQ0I5SUdaeWIyMGdKM0psWVdOMEp6dGNibWx0Y0c5eWRDQjdJR3B6ZUNCOUlHWnliMjBnSjBCbGJXOTBhVzl1TDNKbFlXTjBKenRjYmx4dUx5OGdRWE56YVhOMGFYWmxJSFJsZUhRZ2RHOGdaR1Z6WTNKcFltVWdkbWx6ZFdGc0lHVnNaVzFsYm5SekxpQklhV1JrWlc0Z1ptOXlJSE5wWjJoMFpXUWdkWE5sY25NdVhHNWpiMjV6ZENCQk1URjVWR1Y0ZENBOUlDaHdjbTl3Y3pvZ1NsTllMa2x1ZEhKcGJuTnBZMFZzWlcxbGJuUnpXeWR6Y0dGdUoxMHBJRDArSUNoY2JpQWdQSE53WVc1Y2JpQWdJQ0JqYzNNOWUzdGNiaUFnSUNBZ0lHeGhZbVZzT2lBbllURXhlVlJsZUhRbkxGeHVJQ0FnSUNBZ2VrbHVaR1Y0T2lBNU9UazVMRnh1SUNBZ0lDQWdZbTl5WkdWeU9pQXdMRnh1SUNBZ0lDQWdZMnhwY0RvZ0ozSmxZM1FvTVhCNExDQXhjSGdzSURGd2VDd2dNWEI0S1Njc1hHNGdJQ0FnSUNCb1pXbG5hSFE2SURFc1hHNGdJQ0FnSUNCM2FXUjBhRG9nTVN4Y2JpQWdJQ0FnSUhCdmMybDBhVzl1T2lBbllXSnpiMngxZEdVbkxGeHVJQ0FnSUNBZ2IzWmxjbVpzYjNjNklDZG9hV1JrWlc0bkxGeHVJQ0FnSUNBZ2NHRmtaR2x1WnpvZ01DeGNiaUFnSUNBZ0lIZG9hWFJsVTNCaFkyVTZJQ2R1YjNkeVlYQW5MRnh1SUNBZ0lIMTlYRzRnSUNBZ2V5NHVMbkJ5YjNCemZWeHVJQ0F2UGx4dUtUdGNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdRVEV4ZVZSbGVIUTdYRzRpWFgwPSAqL1wiLFxuICB0b1N0cmluZzogX0VNT1RJT05fU1RSSU5HSUZJRURfQ1NTX0VSUk9SX18kMlxufTtcbnZhciBBMTF5VGV4dCA9IGZ1bmN0aW9uIEExMXlUZXh0KHByb3BzKSB7XG4gIHJldHVybiBqc3goXCJzcGFuXCIsIF9leHRlbmRzKHtcbiAgICBjc3M6IF9yZWZcbiAgfSwgcHJvcHMpKTtcbn07XG52YXIgQTExeVRleHQkMSA9IEExMXlUZXh0O1xuXG52YXIgZGVmYXVsdEFyaWFMaXZlTWVzc2FnZXMgPSB7XG4gIGd1aWRhbmNlOiBmdW5jdGlvbiBndWlkYW5jZShwcm9wcykge1xuICAgIHZhciBpc1NlYXJjaGFibGUgPSBwcm9wcy5pc1NlYXJjaGFibGUsXG4gICAgICBpc011bHRpID0gcHJvcHMuaXNNdWx0aSxcbiAgICAgIHRhYlNlbGVjdHNWYWx1ZSA9IHByb3BzLnRhYlNlbGVjdHNWYWx1ZSxcbiAgICAgIGNvbnRleHQgPSBwcm9wcy5jb250ZXh0LFxuICAgICAgaXNJbml0aWFsRm9jdXMgPSBwcm9wcy5pc0luaXRpYWxGb2N1cztcbiAgICBzd2l0Y2ggKGNvbnRleHQpIHtcbiAgICAgIGNhc2UgJ21lbnUnOlxuICAgICAgICByZXR1cm4gXCJVc2UgVXAgYW5kIERvd24gdG8gY2hvb3NlIG9wdGlvbnMsIHByZXNzIEVudGVyIHRvIHNlbGVjdCB0aGUgY3VycmVudGx5IGZvY3VzZWQgb3B0aW9uLCBwcmVzcyBFc2NhcGUgdG8gZXhpdCB0aGUgbWVudVwiLmNvbmNhdCh0YWJTZWxlY3RzVmFsdWUgPyAnLCBwcmVzcyBUYWIgdG8gc2VsZWN0IHRoZSBvcHRpb24gYW5kIGV4aXQgdGhlIG1lbnUnIDogJycsIFwiLlwiKTtcbiAgICAgIGNhc2UgJ2lucHV0JzpcbiAgICAgICAgcmV0dXJuIGlzSW5pdGlhbEZvY3VzID8gXCJcIi5jb25jYXQocHJvcHNbJ2FyaWEtbGFiZWwnXSB8fCAnU2VsZWN0JywgXCIgaXMgZm9jdXNlZCBcIikuY29uY2F0KGlzU2VhcmNoYWJsZSA/ICcsdHlwZSB0byByZWZpbmUgbGlzdCcgOiAnJywgXCIsIHByZXNzIERvd24gdG8gb3BlbiB0aGUgbWVudSwgXCIpLmNvbmNhdChpc011bHRpID8gJyBwcmVzcyBsZWZ0IHRvIGZvY3VzIHNlbGVjdGVkIHZhbHVlcycgOiAnJykgOiAnJztcbiAgICAgIGNhc2UgJ3ZhbHVlJzpcbiAgICAgICAgcmV0dXJuICdVc2UgbGVmdCBhbmQgcmlnaHQgdG8gdG9nZ2xlIGJldHdlZW4gZm9jdXNlZCB2YWx1ZXMsIHByZXNzIEJhY2tzcGFjZSB0byByZW1vdmUgdGhlIGN1cnJlbnRseSBmb2N1c2VkIHZhbHVlJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH0sXG4gIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShwcm9wcykge1xuICAgIHZhciBhY3Rpb24gPSBwcm9wcy5hY3Rpb24sXG4gICAgICBfcHJvcHMkbGFiZWwgPSBwcm9wcy5sYWJlbCxcbiAgICAgIGxhYmVsID0gX3Byb3BzJGxhYmVsID09PSB2b2lkIDAgPyAnJyA6IF9wcm9wcyRsYWJlbCxcbiAgICAgIGxhYmVscyA9IHByb3BzLmxhYmVscyxcbiAgICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkO1xuICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICBjYXNlICdkZXNlbGVjdC1vcHRpb24nOlxuICAgICAgY2FzZSAncG9wLXZhbHVlJzpcbiAgICAgIGNhc2UgJ3JlbW92ZS12YWx1ZSc6XG4gICAgICAgIHJldHVybiBcIm9wdGlvbiBcIi5jb25jYXQobGFiZWwsIFwiLCBkZXNlbGVjdGVkLlwiKTtcbiAgICAgIGNhc2UgJ2NsZWFyJzpcbiAgICAgICAgcmV0dXJuICdBbGwgc2VsZWN0ZWQgb3B0aW9ucyBoYXZlIGJlZW4gY2xlYXJlZC4nO1xuICAgICAgY2FzZSAnaW5pdGlhbC1pbnB1dC1mb2N1cyc6XG4gICAgICAgIHJldHVybiBcIm9wdGlvblwiLmNvbmNhdChsYWJlbHMubGVuZ3RoID4gMSA/ICdzJyA6ICcnLCBcIiBcIikuY29uY2F0KGxhYmVscy5qb2luKCcsJyksIFwiLCBzZWxlY3RlZC5cIik7XG4gICAgICBjYXNlICdzZWxlY3Qtb3B0aW9uJzpcbiAgICAgICAgcmV0dXJuIGlzRGlzYWJsZWQgPyBcIm9wdGlvbiBcIi5jb25jYXQobGFiZWwsIFwiIGlzIGRpc2FibGVkLiBTZWxlY3QgYW5vdGhlciBvcHRpb24uXCIpIDogXCJvcHRpb24gXCIuY29uY2F0KGxhYmVsLCBcIiwgc2VsZWN0ZWQuXCIpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfSxcbiAgb25Gb2N1czogZnVuY3Rpb24gb25Gb2N1cyhwcm9wcykge1xuICAgIHZhciBjb250ZXh0ID0gcHJvcHMuY29udGV4dCxcbiAgICAgIGZvY3VzZWQgPSBwcm9wcy5mb2N1c2VkLFxuICAgICAgb3B0aW9ucyA9IHByb3BzLm9wdGlvbnMsXG4gICAgICBfcHJvcHMkbGFiZWwyID0gcHJvcHMubGFiZWwsXG4gICAgICBsYWJlbCA9IF9wcm9wcyRsYWJlbDIgPT09IHZvaWQgMCA/ICcnIDogX3Byb3BzJGxhYmVsMixcbiAgICAgIHNlbGVjdFZhbHVlID0gcHJvcHMuc2VsZWN0VmFsdWUsXG4gICAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZCxcbiAgICAgIGlzU2VsZWN0ZWQgPSBwcm9wcy5pc1NlbGVjdGVkLFxuICAgICAgaXNBcHBsZURldmljZSA9IHByb3BzLmlzQXBwbGVEZXZpY2U7XG4gICAgdmFyIGdldEFycmF5SW5kZXggPSBmdW5jdGlvbiBnZXRBcnJheUluZGV4KGFyciwgaXRlbSkge1xuICAgICAgcmV0dXJuIGFyciAmJiBhcnIubGVuZ3RoID8gXCJcIi5jb25jYXQoYXJyLmluZGV4T2YoaXRlbSkgKyAxLCBcIiBvZiBcIikuY29uY2F0KGFyci5sZW5ndGgpIDogJyc7XG4gICAgfTtcbiAgICBpZiAoY29udGV4dCA9PT0gJ3ZhbHVlJyAmJiBzZWxlY3RWYWx1ZSkge1xuICAgICAgcmV0dXJuIFwidmFsdWUgXCIuY29uY2F0KGxhYmVsLCBcIiBmb2N1c2VkLCBcIikuY29uY2F0KGdldEFycmF5SW5kZXgoc2VsZWN0VmFsdWUsIGZvY3VzZWQpLCBcIi5cIik7XG4gICAgfVxuICAgIGlmIChjb250ZXh0ID09PSAnbWVudScgJiYgaXNBcHBsZURldmljZSkge1xuICAgICAgdmFyIGRpc2FibGVkID0gaXNEaXNhYmxlZCA/ICcgZGlzYWJsZWQnIDogJyc7XG4gICAgICB2YXIgc3RhdHVzID0gXCJcIi5jb25jYXQoaXNTZWxlY3RlZCA/ICcgc2VsZWN0ZWQnIDogJycpLmNvbmNhdChkaXNhYmxlZCk7XG4gICAgICByZXR1cm4gXCJcIi5jb25jYXQobGFiZWwpLmNvbmNhdChzdGF0dXMsIFwiLCBcIikuY29uY2F0KGdldEFycmF5SW5kZXgob3B0aW9ucywgZm9jdXNlZCksIFwiLlwiKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9LFxuICBvbkZpbHRlcjogZnVuY3Rpb24gb25GaWx0ZXIocHJvcHMpIHtcbiAgICB2YXIgaW5wdXRWYWx1ZSA9IHByb3BzLmlucHV0VmFsdWUsXG4gICAgICByZXN1bHRzTWVzc2FnZSA9IHByb3BzLnJlc3VsdHNNZXNzYWdlO1xuICAgIHJldHVybiBcIlwiLmNvbmNhdChyZXN1bHRzTWVzc2FnZSkuY29uY2F0KGlucHV0VmFsdWUgPyAnIGZvciBzZWFyY2ggdGVybSAnICsgaW5wdXRWYWx1ZSA6ICcnLCBcIi5cIik7XG4gIH1cbn07XG5cbnZhciBMaXZlUmVnaW9uID0gZnVuY3Rpb24gTGl2ZVJlZ2lvbihwcm9wcykge1xuICB2YXIgYXJpYVNlbGVjdGlvbiA9IHByb3BzLmFyaWFTZWxlY3Rpb24sXG4gICAgZm9jdXNlZE9wdGlvbiA9IHByb3BzLmZvY3VzZWRPcHRpb24sXG4gICAgZm9jdXNlZFZhbHVlID0gcHJvcHMuZm9jdXNlZFZhbHVlLFxuICAgIGZvY3VzYWJsZU9wdGlvbnMgPSBwcm9wcy5mb2N1c2FibGVPcHRpb25zLFxuICAgIGlzRm9jdXNlZCA9IHByb3BzLmlzRm9jdXNlZCxcbiAgICBzZWxlY3RWYWx1ZSA9IHByb3BzLnNlbGVjdFZhbHVlLFxuICAgIHNlbGVjdFByb3BzID0gcHJvcHMuc2VsZWN0UHJvcHMsXG4gICAgaWQgPSBwcm9wcy5pZCxcbiAgICBpc0FwcGxlRGV2aWNlID0gcHJvcHMuaXNBcHBsZURldmljZTtcbiAgdmFyIGFyaWFMaXZlTWVzc2FnZXMgPSBzZWxlY3RQcm9wcy5hcmlhTGl2ZU1lc3NhZ2VzLFxuICAgIGdldE9wdGlvbkxhYmVsID0gc2VsZWN0UHJvcHMuZ2V0T3B0aW9uTGFiZWwsXG4gICAgaW5wdXRWYWx1ZSA9IHNlbGVjdFByb3BzLmlucHV0VmFsdWUsXG4gICAgaXNNdWx0aSA9IHNlbGVjdFByb3BzLmlzTXVsdGksXG4gICAgaXNPcHRpb25EaXNhYmxlZCA9IHNlbGVjdFByb3BzLmlzT3B0aW9uRGlzYWJsZWQsXG4gICAgaXNTZWFyY2hhYmxlID0gc2VsZWN0UHJvcHMuaXNTZWFyY2hhYmxlLFxuICAgIG1lbnVJc09wZW4gPSBzZWxlY3RQcm9wcy5tZW51SXNPcGVuLFxuICAgIG9wdGlvbnMgPSBzZWxlY3RQcm9wcy5vcHRpb25zLFxuICAgIHNjcmVlblJlYWRlclN0YXR1cyA9IHNlbGVjdFByb3BzLnNjcmVlblJlYWRlclN0YXR1cyxcbiAgICB0YWJTZWxlY3RzVmFsdWUgPSBzZWxlY3RQcm9wcy50YWJTZWxlY3RzVmFsdWUsXG4gICAgaXNMb2FkaW5nID0gc2VsZWN0UHJvcHMuaXNMb2FkaW5nO1xuICB2YXIgYXJpYUxhYmVsID0gc2VsZWN0UHJvcHNbJ2FyaWEtbGFiZWwnXTtcbiAgdmFyIGFyaWFMaXZlID0gc2VsZWN0UHJvcHNbJ2FyaWEtbGl2ZSddO1xuXG4gIC8vIFVwZGF0ZSBhcmlhIGxpdmUgbWVzc2FnZSBjb25maWd1cmF0aW9uIHdoZW4gcHJvcCBjaGFuZ2VzXG4gIHZhciBtZXNzYWdlcyA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGRlZmF1bHRBcmlhTGl2ZU1lc3NhZ2VzKSwgYXJpYUxpdmVNZXNzYWdlcyB8fCB7fSk7XG4gIH0sIFthcmlhTGl2ZU1lc3NhZ2VzXSk7XG5cbiAgLy8gVXBkYXRlIGFyaWEgbGl2ZSBzZWxlY3RlZCBvcHRpb24gd2hlbiBwcm9wIGNoYW5nZXNcbiAgdmFyIGFyaWFTZWxlY3RlZCA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBtZXNzYWdlID0gJyc7XG4gICAgaWYgKGFyaWFTZWxlY3Rpb24gJiYgbWVzc2FnZXMub25DaGFuZ2UpIHtcbiAgICAgIHZhciBvcHRpb24gPSBhcmlhU2VsZWN0aW9uLm9wdGlvbixcbiAgICAgICAgc2VsZWN0ZWRPcHRpb25zID0gYXJpYVNlbGVjdGlvbi5vcHRpb25zLFxuICAgICAgICByZW1vdmVkVmFsdWUgPSBhcmlhU2VsZWN0aW9uLnJlbW92ZWRWYWx1ZSxcbiAgICAgICAgcmVtb3ZlZFZhbHVlcyA9IGFyaWFTZWxlY3Rpb24ucmVtb3ZlZFZhbHVlcyxcbiAgICAgICAgdmFsdWUgPSBhcmlhU2VsZWN0aW9uLnZhbHVlO1xuICAgICAgLy8gc2VsZWN0LW9wdGlvbiB3aGVuICFpc011bHRpIGRvZXMgbm90IHJldHVybiBvcHRpb24gc28gd2UgYXNzdW1lIHNlbGVjdGVkIG9wdGlvbiBpcyB2YWx1ZVxuICAgICAgdmFyIGFzT3B0aW9uID0gZnVuY3Rpb24gYXNPcHRpb24odmFsKSB7XG4gICAgICAgIHJldHVybiAhQXJyYXkuaXNBcnJheSh2YWwpID8gdmFsIDogbnVsbDtcbiAgICAgIH07XG5cbiAgICAgIC8vIElmIHRoZXJlIGlzIGp1c3Qgb25lIGl0ZW0gZnJvbSB0aGUgYWN0aW9uIHRoZW4gZ2V0IGl0cyBsYWJlbFxuICAgICAgdmFyIHNlbGVjdGVkID0gcmVtb3ZlZFZhbHVlIHx8IG9wdGlvbiB8fCBhc09wdGlvbih2YWx1ZSk7XG4gICAgICB2YXIgbGFiZWwgPSBzZWxlY3RlZCA/IGdldE9wdGlvbkxhYmVsKHNlbGVjdGVkKSA6ICcnO1xuXG4gICAgICAvLyBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgaXRlbXMgZnJvbSB0aGUgYWN0aW9uIHRoZW4gcmV0dXJuIGFuIGFycmF5IG9mIGxhYmVsc1xuICAgICAgdmFyIG11bHRpU2VsZWN0ZWQgPSBzZWxlY3RlZE9wdGlvbnMgfHwgcmVtb3ZlZFZhbHVlcyB8fCB1bmRlZmluZWQ7XG4gICAgICB2YXIgbGFiZWxzID0gbXVsdGlTZWxlY3RlZCA/IG11bHRpU2VsZWN0ZWQubWFwKGdldE9wdGlvbkxhYmVsKSA6IFtdO1xuICAgICAgdmFyIG9uQ2hhbmdlUHJvcHMgPSBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgLy8gbXVsdGlTZWxlY3RlZCBpdGVtcyBhcmUgdXN1YWxseSBpdGVtcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIHNlbGVjdGVkXG4gICAgICAgIC8vIG9yIHNldCBieSB0aGUgdXNlciBhcyBhIGRlZmF1bHQgdmFsdWUgc28gd2UgYXNzdW1lIHRoZXkgYXJlIG5vdCBkaXNhYmxlZFxuICAgICAgICBpc0Rpc2FibGVkOiBzZWxlY3RlZCAmJiBpc09wdGlvbkRpc2FibGVkKHNlbGVjdGVkLCBzZWxlY3RWYWx1ZSksXG4gICAgICAgIGxhYmVsOiBsYWJlbCxcbiAgICAgICAgbGFiZWxzOiBsYWJlbHNcbiAgICAgIH0sIGFyaWFTZWxlY3Rpb24pO1xuICAgICAgbWVzc2FnZSA9IG1lc3NhZ2VzLm9uQ2hhbmdlKG9uQ2hhbmdlUHJvcHMpO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSwgW2FyaWFTZWxlY3Rpb24sIG1lc3NhZ2VzLCBpc09wdGlvbkRpc2FibGVkLCBzZWxlY3RWYWx1ZSwgZ2V0T3B0aW9uTGFiZWxdKTtcbiAgdmFyIGFyaWFGb2N1c2VkID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGZvY3VzTXNnID0gJyc7XG4gICAgdmFyIGZvY3VzZWQgPSBmb2N1c2VkT3B0aW9uIHx8IGZvY3VzZWRWYWx1ZTtcbiAgICB2YXIgaXNTZWxlY3RlZCA9ICEhKGZvY3VzZWRPcHRpb24gJiYgc2VsZWN0VmFsdWUgJiYgc2VsZWN0VmFsdWUuaW5jbHVkZXMoZm9jdXNlZE9wdGlvbikpO1xuICAgIGlmIChmb2N1c2VkICYmIG1lc3NhZ2VzLm9uRm9jdXMpIHtcbiAgICAgIHZhciBvbkZvY3VzUHJvcHMgPSB7XG4gICAgICAgIGZvY3VzZWQ6IGZvY3VzZWQsXG4gICAgICAgIGxhYmVsOiBnZXRPcHRpb25MYWJlbChmb2N1c2VkKSxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNPcHRpb25EaXNhYmxlZChmb2N1c2VkLCBzZWxlY3RWYWx1ZSksXG4gICAgICAgIGlzU2VsZWN0ZWQ6IGlzU2VsZWN0ZWQsXG4gICAgICAgIG9wdGlvbnM6IGZvY3VzYWJsZU9wdGlvbnMsXG4gICAgICAgIGNvbnRleHQ6IGZvY3VzZWQgPT09IGZvY3VzZWRPcHRpb24gPyAnbWVudScgOiAndmFsdWUnLFxuICAgICAgICBzZWxlY3RWYWx1ZTogc2VsZWN0VmFsdWUsXG4gICAgICAgIGlzQXBwbGVEZXZpY2U6IGlzQXBwbGVEZXZpY2VcbiAgICAgIH07XG4gICAgICBmb2N1c01zZyA9IG1lc3NhZ2VzLm9uRm9jdXMob25Gb2N1c1Byb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvY3VzTXNnO1xuICB9LCBbZm9jdXNlZE9wdGlvbiwgZm9jdXNlZFZhbHVlLCBnZXRPcHRpb25MYWJlbCwgaXNPcHRpb25EaXNhYmxlZCwgbWVzc2FnZXMsIGZvY3VzYWJsZU9wdGlvbnMsIHNlbGVjdFZhbHVlLCBpc0FwcGxlRGV2aWNlXSk7XG4gIHZhciBhcmlhUmVzdWx0cyA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXN1bHRzTXNnID0gJyc7XG4gICAgaWYgKG1lbnVJc09wZW4gJiYgb3B0aW9ucy5sZW5ndGggJiYgIWlzTG9hZGluZyAmJiBtZXNzYWdlcy5vbkZpbHRlcikge1xuICAgICAgdmFyIHJlc3VsdHNNZXNzYWdlID0gc2NyZWVuUmVhZGVyU3RhdHVzKHtcbiAgICAgICAgY291bnQ6IGZvY3VzYWJsZU9wdGlvbnMubGVuZ3RoXG4gICAgICB9KTtcbiAgICAgIHJlc3VsdHNNc2cgPSBtZXNzYWdlcy5vbkZpbHRlcih7XG4gICAgICAgIGlucHV0VmFsdWU6IGlucHV0VmFsdWUsXG4gICAgICAgIHJlc3VsdHNNZXNzYWdlOiByZXN1bHRzTWVzc2FnZVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzTXNnO1xuICB9LCBbZm9jdXNhYmxlT3B0aW9ucywgaW5wdXRWYWx1ZSwgbWVudUlzT3BlbiwgbWVzc2FnZXMsIG9wdGlvbnMsIHNjcmVlblJlYWRlclN0YXR1cywgaXNMb2FkaW5nXSk7XG4gIHZhciBpc0luaXRpYWxGb2N1cyA9IChhcmlhU2VsZWN0aW9uID09PSBudWxsIHx8IGFyaWFTZWxlY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFyaWFTZWxlY3Rpb24uYWN0aW9uKSA9PT0gJ2luaXRpYWwtaW5wdXQtZm9jdXMnO1xuICB2YXIgYXJpYUd1aWRhbmNlID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGd1aWRhbmNlTXNnID0gJyc7XG4gICAgaWYgKG1lc3NhZ2VzLmd1aWRhbmNlKSB7XG4gICAgICB2YXIgY29udGV4dCA9IGZvY3VzZWRWYWx1ZSA/ICd2YWx1ZScgOiBtZW51SXNPcGVuID8gJ21lbnUnIDogJ2lucHV0JztcbiAgICAgIGd1aWRhbmNlTXNnID0gbWVzc2FnZXMuZ3VpZGFuY2Uoe1xuICAgICAgICAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCxcbiAgICAgICAgY29udGV4dDogY29udGV4dCxcbiAgICAgICAgaXNEaXNhYmxlZDogZm9jdXNlZE9wdGlvbiAmJiBpc09wdGlvbkRpc2FibGVkKGZvY3VzZWRPcHRpb24sIHNlbGVjdFZhbHVlKSxcbiAgICAgICAgaXNNdWx0aTogaXNNdWx0aSxcbiAgICAgICAgaXNTZWFyY2hhYmxlOiBpc1NlYXJjaGFibGUsXG4gICAgICAgIHRhYlNlbGVjdHNWYWx1ZTogdGFiU2VsZWN0c1ZhbHVlLFxuICAgICAgICBpc0luaXRpYWxGb2N1czogaXNJbml0aWFsRm9jdXNcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZ3VpZGFuY2VNc2c7XG4gIH0sIFthcmlhTGFiZWwsIGZvY3VzZWRPcHRpb24sIGZvY3VzZWRWYWx1ZSwgaXNNdWx0aSwgaXNPcHRpb25EaXNhYmxlZCwgaXNTZWFyY2hhYmxlLCBtZW51SXNPcGVuLCBtZXNzYWdlcywgc2VsZWN0VmFsdWUsIHRhYlNlbGVjdHNWYWx1ZSwgaXNJbml0aWFsRm9jdXNdKTtcbiAgdmFyIFNjcmVlblJlYWRlclRleHQgPSBqc3goRnJhZ21lbnQsIG51bGwsIGpzeChcInNwYW5cIiwge1xuICAgIGlkOiBcImFyaWEtc2VsZWN0aW9uXCJcbiAgfSwgYXJpYVNlbGVjdGVkKSwganN4KFwic3BhblwiLCB7XG4gICAgaWQ6IFwiYXJpYS1mb2N1c2VkXCJcbiAgfSwgYXJpYUZvY3VzZWQpLCBqc3goXCJzcGFuXCIsIHtcbiAgICBpZDogXCJhcmlhLXJlc3VsdHNcIlxuICB9LCBhcmlhUmVzdWx0cyksIGpzeChcInNwYW5cIiwge1xuICAgIGlkOiBcImFyaWEtZ3VpZGFuY2VcIlxuICB9LCBhcmlhR3VpZGFuY2UpKTtcbiAgcmV0dXJuIGpzeChGcmFnbWVudCwgbnVsbCwganN4KEExMXlUZXh0JDEsIHtcbiAgICBpZDogaWRcbiAgfSwgaXNJbml0aWFsRm9jdXMgJiYgU2NyZWVuUmVhZGVyVGV4dCksIGpzeChBMTF5VGV4dCQxLCB7XG4gICAgXCJhcmlhLWxpdmVcIjogYXJpYUxpdmUsXG4gICAgXCJhcmlhLWF0b21pY1wiOiBcImZhbHNlXCIsXG4gICAgXCJhcmlhLXJlbGV2YW50XCI6IFwiYWRkaXRpb25zIHRleHRcIixcbiAgICByb2xlOiBcImxvZ1wiXG4gIH0sIGlzRm9jdXNlZCAmJiAhaXNJbml0aWFsRm9jdXMgJiYgU2NyZWVuUmVhZGVyVGV4dCkpO1xufTtcbnZhciBMaXZlUmVnaW9uJDEgPSBMaXZlUmVnaW9uO1xuXG52YXIgZGlhY3JpdGljcyA9IFt7XG4gIGJhc2U6ICdBJyxcbiAgbGV0dGVyczogXCJBXFx1MjRCNlxcdUZGMjFcXHhDMFxceEMxXFx4QzJcXHUxRUE2XFx1MUVBNFxcdTFFQUFcXHUxRUE4XFx4QzNcXHUwMTAwXFx1MDEwMlxcdTFFQjBcXHUxRUFFXFx1MUVCNFxcdTFFQjJcXHUwMjI2XFx1MDFFMFxceEM0XFx1MDFERVxcdTFFQTJcXHhDNVxcdTAxRkFcXHUwMUNEXFx1MDIwMFxcdTAyMDJcXHUxRUEwXFx1MUVBQ1xcdTFFQjZcXHUxRTAwXFx1MDEwNFxcdTAyM0FcXHUyQzZGXCJcbn0sIHtcbiAgYmFzZTogJ0FBJyxcbiAgbGV0dGVyczogXCJcXHVBNzMyXCJcbn0sIHtcbiAgYmFzZTogJ0FFJyxcbiAgbGV0dGVyczogXCJcXHhDNlxcdTAxRkNcXHUwMUUyXCJcbn0sIHtcbiAgYmFzZTogJ0FPJyxcbiAgbGV0dGVyczogXCJcXHVBNzM0XCJcbn0sIHtcbiAgYmFzZTogJ0FVJyxcbiAgbGV0dGVyczogXCJcXHVBNzM2XCJcbn0sIHtcbiAgYmFzZTogJ0FWJyxcbiAgbGV0dGVyczogXCJcXHVBNzM4XFx1QTczQVwiXG59LCB7XG4gIGJhc2U6ICdBWScsXG4gIGxldHRlcnM6IFwiXFx1QTczQ1wiXG59LCB7XG4gIGJhc2U6ICdCJyxcbiAgbGV0dGVyczogXCJCXFx1MjRCN1xcdUZGMjJcXHUxRTAyXFx1MUUwNFxcdTFFMDZcXHUwMjQzXFx1MDE4MlxcdTAxODFcIlxufSwge1xuICBiYXNlOiAnQycsXG4gIGxldHRlcnM6IFwiQ1xcdTI0QjhcXHVGRjIzXFx1MDEwNlxcdTAxMDhcXHUwMTBBXFx1MDEwQ1xceEM3XFx1MUUwOFxcdTAxODdcXHUwMjNCXFx1QTczRVwiXG59LCB7XG4gIGJhc2U6ICdEJyxcbiAgbGV0dGVyczogXCJEXFx1MjRCOVxcdUZGMjRcXHUxRTBBXFx1MDEwRVxcdTFFMENcXHUxRTEwXFx1MUUxMlxcdTFFMEVcXHUwMTEwXFx1MDE4QlxcdTAxOEFcXHUwMTg5XFx1QTc3OVwiXG59LCB7XG4gIGJhc2U6ICdEWicsXG4gIGxldHRlcnM6IFwiXFx1MDFGMVxcdTAxQzRcIlxufSwge1xuICBiYXNlOiAnRHonLFxuICBsZXR0ZXJzOiBcIlxcdTAxRjJcXHUwMUM1XCJcbn0sIHtcbiAgYmFzZTogJ0UnLFxuICBsZXR0ZXJzOiBcIkVcXHUyNEJBXFx1RkYyNVxceEM4XFx4QzlcXHhDQVxcdTFFQzBcXHUxRUJFXFx1MUVDNFxcdTFFQzJcXHUxRUJDXFx1MDExMlxcdTFFMTRcXHUxRTE2XFx1MDExNFxcdTAxMTZcXHhDQlxcdTFFQkFcXHUwMTFBXFx1MDIwNFxcdTAyMDZcXHUxRUI4XFx1MUVDNlxcdTAyMjhcXHUxRTFDXFx1MDExOFxcdTFFMThcXHUxRTFBXFx1MDE5MFxcdTAxOEVcIlxufSwge1xuICBiYXNlOiAnRicsXG4gIGxldHRlcnM6IFwiRlxcdTI0QkJcXHVGRjI2XFx1MUUxRVxcdTAxOTFcXHVBNzdCXCJcbn0sIHtcbiAgYmFzZTogJ0cnLFxuICBsZXR0ZXJzOiBcIkdcXHUyNEJDXFx1RkYyN1xcdTAxRjRcXHUwMTFDXFx1MUUyMFxcdTAxMUVcXHUwMTIwXFx1MDFFNlxcdTAxMjJcXHUwMUU0XFx1MDE5M1xcdUE3QTBcXHVBNzdEXFx1QTc3RVwiXG59LCB7XG4gIGJhc2U6ICdIJyxcbiAgbGV0dGVyczogXCJIXFx1MjRCRFxcdUZGMjhcXHUwMTI0XFx1MUUyMlxcdTFFMjZcXHUwMjFFXFx1MUUyNFxcdTFFMjhcXHUxRTJBXFx1MDEyNlxcdTJDNjdcXHUyQzc1XFx1QTc4RFwiXG59LCB7XG4gIGJhc2U6ICdJJyxcbiAgbGV0dGVyczogXCJJXFx1MjRCRVxcdUZGMjlcXHhDQ1xceENEXFx4Q0VcXHUwMTI4XFx1MDEyQVxcdTAxMkNcXHUwMTMwXFx4Q0ZcXHUxRTJFXFx1MUVDOFxcdTAxQ0ZcXHUwMjA4XFx1MDIwQVxcdTFFQ0FcXHUwMTJFXFx1MUUyQ1xcdTAxOTdcIlxufSwge1xuICBiYXNlOiAnSicsXG4gIGxldHRlcnM6IFwiSlxcdTI0QkZcXHVGRjJBXFx1MDEzNFxcdTAyNDhcIlxufSwge1xuICBiYXNlOiAnSycsXG4gIGxldHRlcnM6IFwiS1xcdTI0QzBcXHVGRjJCXFx1MUUzMFxcdTAxRThcXHUxRTMyXFx1MDEzNlxcdTFFMzRcXHUwMTk4XFx1MkM2OVxcdUE3NDBcXHVBNzQyXFx1QTc0NFxcdUE3QTJcIlxufSwge1xuICBiYXNlOiAnTCcsXG4gIGxldHRlcnM6IFwiTFxcdTI0QzFcXHVGRjJDXFx1MDEzRlxcdTAxMzlcXHUwMTNEXFx1MUUzNlxcdTFFMzhcXHUwMTNCXFx1MUUzQ1xcdTFFM0FcXHUwMTQxXFx1MDIzRFxcdTJDNjJcXHUyQzYwXFx1QTc0OFxcdUE3NDZcXHVBNzgwXCJcbn0sIHtcbiAgYmFzZTogJ0xKJyxcbiAgbGV0dGVyczogXCJcXHUwMUM3XCJcbn0sIHtcbiAgYmFzZTogJ0xqJyxcbiAgbGV0dGVyczogXCJcXHUwMUM4XCJcbn0sIHtcbiAgYmFzZTogJ00nLFxuICBsZXR0ZXJzOiBcIk1cXHUyNEMyXFx1RkYyRFxcdTFFM0VcXHUxRTQwXFx1MUU0MlxcdTJDNkVcXHUwMTlDXCJcbn0sIHtcbiAgYmFzZTogJ04nLFxuICBsZXR0ZXJzOiBcIk5cXHUyNEMzXFx1RkYyRVxcdTAxRjhcXHUwMTQzXFx4RDFcXHUxRTQ0XFx1MDE0N1xcdTFFNDZcXHUwMTQ1XFx1MUU0QVxcdTFFNDhcXHUwMjIwXFx1MDE5RFxcdUE3OTBcXHVBN0E0XCJcbn0sIHtcbiAgYmFzZTogJ05KJyxcbiAgbGV0dGVyczogXCJcXHUwMUNBXCJcbn0sIHtcbiAgYmFzZTogJ05qJyxcbiAgbGV0dGVyczogXCJcXHUwMUNCXCJcbn0sIHtcbiAgYmFzZTogJ08nLFxuICBsZXR0ZXJzOiBcIk9cXHUyNEM0XFx1RkYyRlxceEQyXFx4RDNcXHhENFxcdTFFRDJcXHUxRUQwXFx1MUVENlxcdTFFRDRcXHhENVxcdTFFNENcXHUwMjJDXFx1MUU0RVxcdTAxNENcXHUxRTUwXFx1MUU1MlxcdTAxNEVcXHUwMjJFXFx1MDIzMFxceEQ2XFx1MDIyQVxcdTFFQ0VcXHUwMTUwXFx1MDFEMVxcdTAyMENcXHUwMjBFXFx1MDFBMFxcdTFFRENcXHUxRURBXFx1MUVFMFxcdTFFREVcXHUxRUUyXFx1MUVDQ1xcdTFFRDhcXHUwMUVBXFx1MDFFQ1xceEQ4XFx1MDFGRVxcdTAxODZcXHUwMTlGXFx1QTc0QVxcdUE3NENcIlxufSwge1xuICBiYXNlOiAnT0knLFxuICBsZXR0ZXJzOiBcIlxcdTAxQTJcIlxufSwge1xuICBiYXNlOiAnT08nLFxuICBsZXR0ZXJzOiBcIlxcdUE3NEVcIlxufSwge1xuICBiYXNlOiAnT1UnLFxuICBsZXR0ZXJzOiBcIlxcdTAyMjJcIlxufSwge1xuICBiYXNlOiAnUCcsXG4gIGxldHRlcnM6IFwiUFxcdTI0QzVcXHVGRjMwXFx1MUU1NFxcdTFFNTZcXHUwMUE0XFx1MkM2M1xcdUE3NTBcXHVBNzUyXFx1QTc1NFwiXG59LCB7XG4gIGJhc2U6ICdRJyxcbiAgbGV0dGVyczogXCJRXFx1MjRDNlxcdUZGMzFcXHVBNzU2XFx1QTc1OFxcdTAyNEFcIlxufSwge1xuICBiYXNlOiAnUicsXG4gIGxldHRlcnM6IFwiUlxcdTI0QzdcXHVGRjMyXFx1MDE1NFxcdTFFNThcXHUwMTU4XFx1MDIxMFxcdTAyMTJcXHUxRTVBXFx1MUU1Q1xcdTAxNTZcXHUxRTVFXFx1MDI0Q1xcdTJDNjRcXHVBNzVBXFx1QTdBNlxcdUE3ODJcIlxufSwge1xuICBiYXNlOiAnUycsXG4gIGxldHRlcnM6IFwiU1xcdTI0QzhcXHVGRjMzXFx1MUU5RVxcdTAxNUFcXHUxRTY0XFx1MDE1Q1xcdTFFNjBcXHUwMTYwXFx1MUU2NlxcdTFFNjJcXHUxRTY4XFx1MDIxOFxcdTAxNUVcXHUyQzdFXFx1QTdBOFxcdUE3ODRcIlxufSwge1xuICBiYXNlOiAnVCcsXG4gIGxldHRlcnM6IFwiVFxcdTI0QzlcXHVGRjM0XFx1MUU2QVxcdTAxNjRcXHUxRTZDXFx1MDIxQVxcdTAxNjJcXHUxRTcwXFx1MUU2RVxcdTAxNjZcXHUwMUFDXFx1MDFBRVxcdTAyM0VcXHVBNzg2XCJcbn0sIHtcbiAgYmFzZTogJ1RaJyxcbiAgbGV0dGVyczogXCJcXHVBNzI4XCJcbn0sIHtcbiAgYmFzZTogJ1UnLFxuICBsZXR0ZXJzOiBcIlVcXHUyNENBXFx1RkYzNVxceEQ5XFx4REFcXHhEQlxcdTAxNjhcXHUxRTc4XFx1MDE2QVxcdTFFN0FcXHUwMTZDXFx4RENcXHUwMURCXFx1MDFEN1xcdTAxRDVcXHUwMUQ5XFx1MUVFNlxcdTAxNkVcXHUwMTcwXFx1MDFEM1xcdTAyMTRcXHUwMjE2XFx1MDFBRlxcdTFFRUFcXHUxRUU4XFx1MUVFRVxcdTFFRUNcXHUxRUYwXFx1MUVFNFxcdTFFNzJcXHUwMTcyXFx1MUU3NlxcdTFFNzRcXHUwMjQ0XCJcbn0sIHtcbiAgYmFzZTogJ1YnLFxuICBsZXR0ZXJzOiBcIlZcXHUyNENCXFx1RkYzNlxcdTFFN0NcXHUxRTdFXFx1MDFCMlxcdUE3NUVcXHUwMjQ1XCJcbn0sIHtcbiAgYmFzZTogJ1ZZJyxcbiAgbGV0dGVyczogXCJcXHVBNzYwXCJcbn0sIHtcbiAgYmFzZTogJ1cnLFxuICBsZXR0ZXJzOiBcIldcXHUyNENDXFx1RkYzN1xcdTFFODBcXHUxRTgyXFx1MDE3NFxcdTFFODZcXHUxRTg0XFx1MUU4OFxcdTJDNzJcIlxufSwge1xuICBiYXNlOiAnWCcsXG4gIGxldHRlcnM6IFwiWFxcdTI0Q0RcXHVGRjM4XFx1MUU4QVxcdTFFOENcIlxufSwge1xuICBiYXNlOiAnWScsXG4gIGxldHRlcnM6IFwiWVxcdTI0Q0VcXHVGRjM5XFx1MUVGMlxceEREXFx1MDE3NlxcdTFFRjhcXHUwMjMyXFx1MUU4RVxcdTAxNzhcXHUxRUY2XFx1MUVGNFxcdTAxQjNcXHUwMjRFXFx1MUVGRVwiXG59LCB7XG4gIGJhc2U6ICdaJyxcbiAgbGV0dGVyczogXCJaXFx1MjRDRlxcdUZGM0FcXHUwMTc5XFx1MUU5MFxcdTAxN0JcXHUwMTdEXFx1MUU5MlxcdTFFOTRcXHUwMUI1XFx1MDIyNFxcdTJDN0ZcXHUyQzZCXFx1QTc2MlwiXG59LCB7XG4gIGJhc2U6ICdhJyxcbiAgbGV0dGVyczogXCJhXFx1MjREMFxcdUZGNDFcXHUxRTlBXFx4RTBcXHhFMVxceEUyXFx1MUVBN1xcdTFFQTVcXHUxRUFCXFx1MUVBOVxceEUzXFx1MDEwMVxcdTAxMDNcXHUxRUIxXFx1MUVBRlxcdTFFQjVcXHUxRUIzXFx1MDIyN1xcdTAxRTFcXHhFNFxcdTAxREZcXHUxRUEzXFx4RTVcXHUwMUZCXFx1MDFDRVxcdTAyMDFcXHUwMjAzXFx1MUVBMVxcdTFFQURcXHUxRUI3XFx1MUUwMVxcdTAxMDVcXHUyQzY1XFx1MDI1MFwiXG59LCB7XG4gIGJhc2U6ICdhYScsXG4gIGxldHRlcnM6IFwiXFx1QTczM1wiXG59LCB7XG4gIGJhc2U6ICdhZScsXG4gIGxldHRlcnM6IFwiXFx4RTZcXHUwMUZEXFx1MDFFM1wiXG59LCB7XG4gIGJhc2U6ICdhbycsXG4gIGxldHRlcnM6IFwiXFx1QTczNVwiXG59LCB7XG4gIGJhc2U6ICdhdScsXG4gIGxldHRlcnM6IFwiXFx1QTczN1wiXG59LCB7XG4gIGJhc2U6ICdhdicsXG4gIGxldHRlcnM6IFwiXFx1QTczOVxcdUE3M0JcIlxufSwge1xuICBiYXNlOiAnYXknLFxuICBsZXR0ZXJzOiBcIlxcdUE3M0RcIlxufSwge1xuICBiYXNlOiAnYicsXG4gIGxldHRlcnM6IFwiYlxcdTI0RDFcXHVGRjQyXFx1MUUwM1xcdTFFMDVcXHUxRTA3XFx1MDE4MFxcdTAxODNcXHUwMjUzXCJcbn0sIHtcbiAgYmFzZTogJ2MnLFxuICBsZXR0ZXJzOiBcImNcXHUyNEQyXFx1RkY0M1xcdTAxMDdcXHUwMTA5XFx1MDEwQlxcdTAxMERcXHhFN1xcdTFFMDlcXHUwMTg4XFx1MDIzQ1xcdUE3M0ZcXHUyMTg0XCJcbn0sIHtcbiAgYmFzZTogJ2QnLFxuICBsZXR0ZXJzOiBcImRcXHUyNEQzXFx1RkY0NFxcdTFFMEJcXHUwMTBGXFx1MUUwRFxcdTFFMTFcXHUxRTEzXFx1MUUwRlxcdTAxMTFcXHUwMThDXFx1MDI1NlxcdTAyNTdcXHVBNzdBXCJcbn0sIHtcbiAgYmFzZTogJ2R6JyxcbiAgbGV0dGVyczogXCJcXHUwMUYzXFx1MDFDNlwiXG59LCB7XG4gIGJhc2U6ICdlJyxcbiAgbGV0dGVyczogXCJlXFx1MjRENFxcdUZGNDVcXHhFOFxceEU5XFx4RUFcXHUxRUMxXFx1MUVCRlxcdTFFQzVcXHUxRUMzXFx1MUVCRFxcdTAxMTNcXHUxRTE1XFx1MUUxN1xcdTAxMTVcXHUwMTE3XFx4RUJcXHUxRUJCXFx1MDExQlxcdTAyMDVcXHUwMjA3XFx1MUVCOVxcdTFFQzdcXHUwMjI5XFx1MUUxRFxcdTAxMTlcXHUxRTE5XFx1MUUxQlxcdTAyNDdcXHUwMjVCXFx1MDFERFwiXG59LCB7XG4gIGJhc2U6ICdmJyxcbiAgbGV0dGVyczogXCJmXFx1MjRENVxcdUZGNDZcXHUxRTFGXFx1MDE5MlxcdUE3N0NcIlxufSwge1xuICBiYXNlOiAnZycsXG4gIGxldHRlcnM6IFwiZ1xcdTI0RDZcXHVGRjQ3XFx1MDFGNVxcdTAxMURcXHUxRTIxXFx1MDExRlxcdTAxMjFcXHUwMUU3XFx1MDEyM1xcdTAxRTVcXHUwMjYwXFx1QTdBMVxcdTFENzlcXHVBNzdGXCJcbn0sIHtcbiAgYmFzZTogJ2gnLFxuICBsZXR0ZXJzOiBcImhcXHUyNEQ3XFx1RkY0OFxcdTAxMjVcXHUxRTIzXFx1MUUyN1xcdTAyMUZcXHUxRTI1XFx1MUUyOVxcdTFFMkJcXHUxRTk2XFx1MDEyN1xcdTJDNjhcXHUyQzc2XFx1MDI2NVwiXG59LCB7XG4gIGJhc2U6ICdodicsXG4gIGxldHRlcnM6IFwiXFx1MDE5NVwiXG59LCB7XG4gIGJhc2U6ICdpJyxcbiAgbGV0dGVyczogXCJpXFx1MjREOFxcdUZGNDlcXHhFQ1xceEVEXFx4RUVcXHUwMTI5XFx1MDEyQlxcdTAxMkRcXHhFRlxcdTFFMkZcXHUxRUM5XFx1MDFEMFxcdTAyMDlcXHUwMjBCXFx1MUVDQlxcdTAxMkZcXHUxRTJEXFx1MDI2OFxcdTAxMzFcIlxufSwge1xuICBiYXNlOiAnaicsXG4gIGxldHRlcnM6IFwialxcdTI0RDlcXHVGRjRBXFx1MDEzNVxcdTAxRjBcXHUwMjQ5XCJcbn0sIHtcbiAgYmFzZTogJ2snLFxuICBsZXR0ZXJzOiBcImtcXHUyNERBXFx1RkY0QlxcdTFFMzFcXHUwMUU5XFx1MUUzM1xcdTAxMzdcXHUxRTM1XFx1MDE5OVxcdTJDNkFcXHVBNzQxXFx1QTc0M1xcdUE3NDVcXHVBN0EzXCJcbn0sIHtcbiAgYmFzZTogJ2wnLFxuICBsZXR0ZXJzOiBcImxcXHUyNERCXFx1RkY0Q1xcdTAxNDBcXHUwMTNBXFx1MDEzRVxcdTFFMzdcXHUxRTM5XFx1MDEzQ1xcdTFFM0RcXHUxRTNCXFx1MDE3RlxcdTAxNDJcXHUwMTlBXFx1MDI2QlxcdTJDNjFcXHVBNzQ5XFx1QTc4MVxcdUE3NDdcIlxufSwge1xuICBiYXNlOiAnbGonLFxuICBsZXR0ZXJzOiBcIlxcdTAxQzlcIlxufSwge1xuICBiYXNlOiAnbScsXG4gIGxldHRlcnM6IFwibVxcdTI0RENcXHVGRjREXFx1MUUzRlxcdTFFNDFcXHUxRTQzXFx1MDI3MVxcdTAyNkZcIlxufSwge1xuICBiYXNlOiAnbicsXG4gIGxldHRlcnM6IFwiblxcdTI0RERcXHVGRjRFXFx1MDFGOVxcdTAxNDRcXHhGMVxcdTFFNDVcXHUwMTQ4XFx1MUU0N1xcdTAxNDZcXHUxRTRCXFx1MUU0OVxcdTAxOUVcXHUwMjcyXFx1MDE0OVxcdUE3OTFcXHVBN0E1XCJcbn0sIHtcbiAgYmFzZTogJ25qJyxcbiAgbGV0dGVyczogXCJcXHUwMUNDXCJcbn0sIHtcbiAgYmFzZTogJ28nLFxuICBsZXR0ZXJzOiBcIm9cXHUyNERFXFx1RkY0RlxceEYyXFx4RjNcXHhGNFxcdTFFRDNcXHUxRUQxXFx1MUVEN1xcdTFFRDVcXHhGNVxcdTFFNERcXHUwMjJEXFx1MUU0RlxcdTAxNERcXHUxRTUxXFx1MUU1M1xcdTAxNEZcXHUwMjJGXFx1MDIzMVxceEY2XFx1MDIyQlxcdTFFQ0ZcXHUwMTUxXFx1MDFEMlxcdTAyMERcXHUwMjBGXFx1MDFBMVxcdTFFRERcXHUxRURCXFx1MUVFMVxcdTFFREZcXHUxRUUzXFx1MUVDRFxcdTFFRDlcXHUwMUVCXFx1MDFFRFxceEY4XFx1MDFGRlxcdTAyNTRcXHVBNzRCXFx1QTc0RFxcdTAyNzVcIlxufSwge1xuICBiYXNlOiAnb2knLFxuICBsZXR0ZXJzOiBcIlxcdTAxQTNcIlxufSwge1xuICBiYXNlOiAnb3UnLFxuICBsZXR0ZXJzOiBcIlxcdTAyMjNcIlxufSwge1xuICBiYXNlOiAnb28nLFxuICBsZXR0ZXJzOiBcIlxcdUE3NEZcIlxufSwge1xuICBiYXNlOiAncCcsXG4gIGxldHRlcnM6IFwicFxcdTI0REZcXHVGRjUwXFx1MUU1NVxcdTFFNTdcXHUwMUE1XFx1MUQ3RFxcdUE3NTFcXHVBNzUzXFx1QTc1NVwiXG59LCB7XG4gIGJhc2U6ICdxJyxcbiAgbGV0dGVyczogXCJxXFx1MjRFMFxcdUZGNTFcXHUwMjRCXFx1QTc1N1xcdUE3NTlcIlxufSwge1xuICBiYXNlOiAncicsXG4gIGxldHRlcnM6IFwiclxcdTI0RTFcXHVGRjUyXFx1MDE1NVxcdTFFNTlcXHUwMTU5XFx1MDIxMVxcdTAyMTNcXHUxRTVCXFx1MUU1RFxcdTAxNTdcXHUxRTVGXFx1MDI0RFxcdTAyN0RcXHVBNzVCXFx1QTdBN1xcdUE3ODNcIlxufSwge1xuICBiYXNlOiAncycsXG4gIGxldHRlcnM6IFwic1xcdTI0RTJcXHVGRjUzXFx4REZcXHUwMTVCXFx1MUU2NVxcdTAxNURcXHUxRTYxXFx1MDE2MVxcdTFFNjdcXHUxRTYzXFx1MUU2OVxcdTAyMTlcXHUwMTVGXFx1MDIzRlxcdUE3QTlcXHVBNzg1XFx1MUU5QlwiXG59LCB7XG4gIGJhc2U6ICd0JyxcbiAgbGV0dGVyczogXCJ0XFx1MjRFM1xcdUZGNTRcXHUxRTZCXFx1MUU5N1xcdTAxNjVcXHUxRTZEXFx1MDIxQlxcdTAxNjNcXHUxRTcxXFx1MUU2RlxcdTAxNjdcXHUwMUFEXFx1MDI4OFxcdTJDNjZcXHVBNzg3XCJcbn0sIHtcbiAgYmFzZTogJ3R6JyxcbiAgbGV0dGVyczogXCJcXHVBNzI5XCJcbn0sIHtcbiAgYmFzZTogJ3UnLFxuICBsZXR0ZXJzOiBcInVcXHUyNEU0XFx1RkY1NVxceEY5XFx4RkFcXHhGQlxcdTAxNjlcXHUxRTc5XFx1MDE2QlxcdTFFN0JcXHUwMTZEXFx4RkNcXHUwMURDXFx1MDFEOFxcdTAxRDZcXHUwMURBXFx1MUVFN1xcdTAxNkZcXHUwMTcxXFx1MDFENFxcdTAyMTVcXHUwMjE3XFx1MDFCMFxcdTFFRUJcXHUxRUU5XFx1MUVFRlxcdTFFRURcXHUxRUYxXFx1MUVFNVxcdTFFNzNcXHUwMTczXFx1MUU3N1xcdTFFNzVcXHUwMjg5XCJcbn0sIHtcbiAgYmFzZTogJ3YnLFxuICBsZXR0ZXJzOiBcInZcXHUyNEU1XFx1RkY1NlxcdTFFN0RcXHUxRTdGXFx1MDI4QlxcdUE3NUZcXHUwMjhDXCJcbn0sIHtcbiAgYmFzZTogJ3Z5JyxcbiAgbGV0dGVyczogXCJcXHVBNzYxXCJcbn0sIHtcbiAgYmFzZTogJ3cnLFxuICBsZXR0ZXJzOiBcIndcXHUyNEU2XFx1RkY1N1xcdTFFODFcXHUxRTgzXFx1MDE3NVxcdTFFODdcXHUxRTg1XFx1MUU5OFxcdTFFODlcXHUyQzczXCJcbn0sIHtcbiAgYmFzZTogJ3gnLFxuICBsZXR0ZXJzOiBcInhcXHUyNEU3XFx1RkY1OFxcdTFFOEJcXHUxRThEXCJcbn0sIHtcbiAgYmFzZTogJ3knLFxuICBsZXR0ZXJzOiBcInlcXHUyNEU4XFx1RkY1OVxcdTFFRjNcXHhGRFxcdTAxNzdcXHUxRUY5XFx1MDIzM1xcdTFFOEZcXHhGRlxcdTFFRjdcXHUxRTk5XFx1MUVGNVxcdTAxQjRcXHUwMjRGXFx1MUVGRlwiXG59LCB7XG4gIGJhc2U6ICd6JyxcbiAgbGV0dGVyczogXCJ6XFx1MjRFOVxcdUZGNUFcXHUwMTdBXFx1MUU5MVxcdTAxN0NcXHUwMTdFXFx1MUU5M1xcdTFFOTVcXHUwMUI2XFx1MDIyNVxcdTAyNDBcXHUyQzZDXFx1QTc2M1wiXG59XTtcbnZhciBhbnlEaWFjcml0aWMgPSBuZXcgUmVnRXhwKCdbJyArIGRpYWNyaXRpY3MubWFwKGZ1bmN0aW9uIChkKSB7XG4gIHJldHVybiBkLmxldHRlcnM7XG59KS5qb2luKCcnKSArICddJywgJ2cnKTtcbnZhciBkaWFjcml0aWNUb0Jhc2UgPSB7fTtcbmZvciAodmFyIGkgPSAwOyBpIDwgZGlhY3JpdGljcy5sZW5ndGg7IGkrKykge1xuICB2YXIgZGlhY3JpdGljID0gZGlhY3JpdGljc1tpXTtcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBkaWFjcml0aWMubGV0dGVycy5sZW5ndGg7IGorKykge1xuICAgIGRpYWNyaXRpY1RvQmFzZVtkaWFjcml0aWMubGV0dGVyc1tqXV0gPSBkaWFjcml0aWMuYmFzZTtcbiAgfVxufVxudmFyIHN0cmlwRGlhY3JpdGljcyA9IGZ1bmN0aW9uIHN0cmlwRGlhY3JpdGljcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKGFueURpYWNyaXRpYywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgcmV0dXJuIGRpYWNyaXRpY1RvQmFzZVttYXRjaF07XG4gIH0pO1xufTtcblxudmFyIG1lbW9pemVkU3RyaXBEaWFjcml0aWNzRm9ySW5wdXQgPSBtZW1vaXplT25lKHN0cmlwRGlhY3JpdGljcyk7XG52YXIgdHJpbVN0cmluZyA9IGZ1bmN0aW9uIHRyaW1TdHJpbmcoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgJycpO1xufTtcbnZhciBkZWZhdWx0U3RyaW5naWZ5ID0gZnVuY3Rpb24gZGVmYXVsdFN0cmluZ2lmeShvcHRpb24pIHtcbiAgcmV0dXJuIFwiXCIuY29uY2F0KG9wdGlvbi5sYWJlbCwgXCIgXCIpLmNvbmNhdChvcHRpb24udmFsdWUpO1xufTtcbnZhciBjcmVhdGVGaWx0ZXIgPSBmdW5jdGlvbiBjcmVhdGVGaWx0ZXIoY29uZmlnKSB7XG4gIHJldHVybiBmdW5jdGlvbiAob3B0aW9uLCByYXdJbnB1dCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICAgIGlmIChvcHRpb24uZGF0YS5fX2lzTmV3X18pIHJldHVybiB0cnVlO1xuICAgIHZhciBfaWdub3JlQ2FzZSRpZ25vcmVBY2MgPSBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgaWdub3JlQ2FzZTogdHJ1ZSxcbiAgICAgICAgaWdub3JlQWNjZW50czogdHJ1ZSxcbiAgICAgICAgc3RyaW5naWZ5OiBkZWZhdWx0U3RyaW5naWZ5LFxuICAgICAgICB0cmltOiB0cnVlLFxuICAgICAgICBtYXRjaEZyb206ICdhbnknXG4gICAgICB9LCBjb25maWcpLFxuICAgICAgaWdub3JlQ2FzZSA9IF9pZ25vcmVDYXNlJGlnbm9yZUFjYy5pZ25vcmVDYXNlLFxuICAgICAgaWdub3JlQWNjZW50cyA9IF9pZ25vcmVDYXNlJGlnbm9yZUFjYy5pZ25vcmVBY2NlbnRzLFxuICAgICAgc3RyaW5naWZ5ID0gX2lnbm9yZUNhc2UkaWdub3JlQWNjLnN0cmluZ2lmeSxcbiAgICAgIHRyaW0gPSBfaWdub3JlQ2FzZSRpZ25vcmVBY2MudHJpbSxcbiAgICAgIG1hdGNoRnJvbSA9IF9pZ25vcmVDYXNlJGlnbm9yZUFjYy5tYXRjaEZyb207XG4gICAgdmFyIGlucHV0ID0gdHJpbSA/IHRyaW1TdHJpbmcocmF3SW5wdXQpIDogcmF3SW5wdXQ7XG4gICAgdmFyIGNhbmRpZGF0ZSA9IHRyaW0gPyB0cmltU3RyaW5nKHN0cmluZ2lmeShvcHRpb24pKSA6IHN0cmluZ2lmeShvcHRpb24pO1xuICAgIGlmIChpZ25vcmVDYXNlKSB7XG4gICAgICBpbnB1dCA9IGlucHV0LnRvTG93ZXJDYXNlKCk7XG4gICAgICBjYW5kaWRhdGUgPSBjYW5kaWRhdGUudG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gICAgaWYgKGlnbm9yZUFjY2VudHMpIHtcbiAgICAgIGlucHV0ID0gbWVtb2l6ZWRTdHJpcERpYWNyaXRpY3NGb3JJbnB1dChpbnB1dCk7XG4gICAgICBjYW5kaWRhdGUgPSBzdHJpcERpYWNyaXRpY3MoY2FuZGlkYXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoRnJvbSA9PT0gJ3N0YXJ0JyA/IGNhbmRpZGF0ZS5zdWJzdHIoMCwgaW5wdXQubGVuZ3RoKSA9PT0gaW5wdXQgOiBjYW5kaWRhdGUuaW5kZXhPZihpbnB1dCkgPiAtMTtcbiAgfTtcbn07XG5cbnZhciBfZXhjbHVkZWQgPSBbXCJpbm5lclJlZlwiXTtcbmZ1bmN0aW9uIER1bW15SW5wdXQoX3JlZikge1xuICB2YXIgaW5uZXJSZWYgPSBfcmVmLmlubmVyUmVmLFxuICAgIHByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIF9leGNsdWRlZCk7XG4gIC8vIFJlbW92ZSBhbmltYXRpb24gcHJvcHMgbm90IG1lYW50IGZvciBIVE1MIGVsZW1lbnRzXG4gIHZhciBmaWx0ZXJlZFByb3BzID0gcmVtb3ZlUHJvcHMocHJvcHMsICdvbkV4aXRlZCcsICdpbicsICdlbnRlcicsICdleGl0JywgJ2FwcGVhcicpO1xuICByZXR1cm4ganN4KFwiaW5wdXRcIiwgX2V4dGVuZHMoe1xuICAgIHJlZjogaW5uZXJSZWZcbiAgfSwgZmlsdGVyZWRQcm9wcywge1xuICAgIGNzczogLyojX19QVVJFX18qL2Nzcyh7XG4gICAgICBsYWJlbDogJ2R1bW15SW5wdXQnLFxuICAgICAgLy8gZ2V0IHJpZCBvZiBhbnkgZGVmYXVsdCBzdHlsZXNcbiAgICAgIGJhY2tncm91bmQ6IDAsXG4gICAgICBib3JkZXI6IDAsXG4gICAgICAvLyBpbXBvcnRhbnQhIHRoaXMgaGlkZXMgdGhlIGZsYXNoaW5nIGN1cnNvclxuICAgICAgY2FyZXRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgIGZvbnRTaXplOiAnaW5oZXJpdCcsXG4gICAgICBncmlkQXJlYTogJzEgLyAxIC8gMiAvIDMnLFxuICAgICAgb3V0bGluZTogMCxcbiAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAvLyBpbXBvcnRhbnQhIHdpdGhvdXQgYHdpZHRoYCBicm93c2VycyB3b24ndCBhbGxvdyBmb2N1c1xuICAgICAgd2lkdGg6IDEsXG4gICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIGRlc2t0b3BcbiAgICAgIGNvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgLy8gcmVtb3ZlIGN1cnNvciBvbiBtb2JpbGUgd2hpbHN0IG1haW50YWluaW5nIFwic2Nyb2xsIGludG8gdmlld1wiIGJlaGF2aW91clxuICAgICAgbGVmdDogLTEwMCxcbiAgICAgIG9wYWNpdHk6IDAsXG4gICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKC4wMSknXG4gICAgfSwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gXCJcIiA6IFwiO2xhYmVsOkR1bW15SW5wdXQ7XCIsIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IFwiXCIgOiBcIi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklrUjFiVzE1U1c1d2RYUXVkSE40SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVhsQ1RTSXNJbVpwYkdVaU9pSkVkVzF0ZVVsdWNIVjBMblJ6ZUNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLaUJBYW5ONElHcHplQ0FxTDF4dWFXMXdiM0owSUhzZ1NsTllMQ0JTWldZZ2ZTQm1jbTl0SUNkeVpXRmpkQ2M3WEc1cGJYQnZjblFnZXlCcWMzZ2dmU0JtY205dElDZEFaVzF2ZEdsdmJpOXlaV0ZqZENjN1hHNXBiWEJ2Y25RZ2V5QnlaVzF2ZG1WUWNtOXdjeUI5SUdaeWIyMGdKeTR1TDNWMGFXeHpKenRjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnWm5WdVkzUnBiMjRnUkhWdGJYbEpibkIxZENoN1hHNGdJR2x1Ym1WeVVtVm1MRnh1SUNBdUxpNXdjbTl3YzF4dWZUb2dTbE5ZTGtsdWRISnBibk5wWTBWc1pXMWxiblJ6V3lkcGJuQjFkQ2RkSUNZZ2UxeHVJQ0J5WldGa2IyNXNlU0JwYm01bGNsSmxaam9nVW1WbVBFaFVUVXhKYm5CMWRFVnNaVzFsYm5RK08xeHVmU2tnZTF4dUlDQXZMeUJTWlcxdmRtVWdZVzVwYldGMGFXOXVJSEJ5YjNCeklHNXZkQ0J0WldGdWRDQm1iM0lnU0ZSTlRDQmxiR1Z0Wlc1MGMxeHVJQ0JqYjI1emRDQm1hV3gwWlhKbFpGQnliM0J6SUQwZ2NtVnRiM1psVUhKdmNITW9YRzRnSUNBZ2NISnZjSE1zWEc0Z0lDQWdKMjl1UlhocGRHVmtKeXhjYmlBZ0lDQW5hVzRuTEZ4dUlDQWdJQ2RsYm5SbGNpY3NYRzRnSUNBZ0oyVjRhWFFuTEZ4dUlDQWdJQ2RoY0hCbFlYSW5YRzRnSUNrN1hHNWNiaUFnY21WMGRYSnVJQ2hjYmlBZ0lDQThhVzV3ZFhSY2JpQWdJQ0FnSUhKbFpqMTdhVzV1WlhKU1pXWjlYRzRnSUNBZ0lDQjdMaTR1Wm1sc2RHVnlaV1JRY205d2MzMWNiaUFnSUNBZ0lHTnpjejE3ZTF4dUlDQWdJQ0FnSUNCc1lXSmxiRG9nSjJSMWJXMTVTVzV3ZFhRbkxGeHVJQ0FnSUNBZ0lDQXZMeUJuWlhRZ2NtbGtJRzltSUdGdWVTQmtaV1poZFd4MElITjBlV3hsYzF4dUlDQWdJQ0FnSUNCaVlXTnJaM0p2ZFc1a09pQXdMRnh1SUNBZ0lDQWdJQ0JpYjNKa1pYSTZJREFzWEc0Z0lDQWdJQ0FnSUM4dklHbHRjRzl5ZEdGdWRDRWdkR2hwY3lCb2FXUmxjeUIwYUdVZ1pteGhjMmhwYm1jZ1kzVnljMjl5WEc0Z0lDQWdJQ0FnSUdOaGNtVjBRMjlzYjNJNklDZDBjbUZ1YzNCaGNtVnVkQ2NzWEc0Z0lDQWdJQ0FnSUdadmJuUlRhWHBsT2lBbmFXNW9aWEpwZENjc1hHNGdJQ0FnSUNBZ0lHZHlhV1JCY21WaE9pQW5NU0F2SURFZ0x5QXlJQzhnTXljc1hHNGdJQ0FnSUNBZ0lHOTFkR3hwYm1VNklEQXNYRzRnSUNBZ0lDQWdJSEJoWkdScGJtYzZJREFzWEc0Z0lDQWdJQ0FnSUM4dklHbHRjRzl5ZEdGdWRDRWdkMmwwYUc5MWRDQmdkMmxrZEdoZ0lHSnliM2R6WlhKeklIZHZiaWQwSUdGc2JHOTNJR1p2WTNWelhHNGdJQ0FnSUNBZ0lIZHBaSFJvT2lBeExGeHVYRzRnSUNBZ0lDQWdJQzh2SUhKbGJXOTJaU0JqZFhKemIzSWdiMjRnWkdWemEzUnZjRnh1SUNBZ0lDQWdJQ0JqYjJ4dmNqb2dKM1J5WVc1emNHRnlaVzUwSnl4Y2JseHVJQ0FnSUNBZ0lDQXZMeUJ5WlcxdmRtVWdZM1Z5YzI5eUlHOXVJRzF2WW1sc1pTQjNhR2xzYzNRZ2JXRnBiblJoYVc1cGJtY2dYQ0p6WTNKdmJHd2dhVzUwYnlCMmFXVjNYQ0lnWW1Wb1lYWnBiM1Z5WEc0Z0lDQWdJQ0FnSUd4bFpuUTZJQzB4TURBc1hHNGdJQ0FnSUNBZ0lHOXdZV05wZEhrNklEQXNYRzRnSUNBZ0lDQWdJSEJ2YzJsMGFXOXVPaUFuY21Wc1lYUnBkbVVuTEZ4dUlDQWdJQ0FnSUNCMGNtRnVjMlp2Y20wNklDZHpZMkZzWlNndU1ERXBKeXhjYmlBZ0lDQWdJSDE5WEc0Z0lDQWdMejVjYmlBZ0tUdGNibjFjYmlKZGZRPT0gKi9cIilcbiAgfSkpO1xufVxuXG52YXIgY2FuY2VsU2Nyb2xsID0gZnVuY3Rpb24gY2FuY2VsU2Nyb2xsKGV2ZW50KSB7XG4gIGlmIChldmVudC5jYW5jZWxhYmxlKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbn07XG5mdW5jdGlvbiB1c2VTY3JvbGxDYXB0dXJlKF9yZWYpIHtcbiAgdmFyIGlzRW5hYmxlZCA9IF9yZWYuaXNFbmFibGVkLFxuICAgIG9uQm90dG9tQXJyaXZlID0gX3JlZi5vbkJvdHRvbUFycml2ZSxcbiAgICBvbkJvdHRvbUxlYXZlID0gX3JlZi5vbkJvdHRvbUxlYXZlLFxuICAgIG9uVG9wQXJyaXZlID0gX3JlZi5vblRvcEFycml2ZSxcbiAgICBvblRvcExlYXZlID0gX3JlZi5vblRvcExlYXZlO1xuICB2YXIgaXNCb3R0b20gPSB1c2VSZWYoZmFsc2UpO1xuICB2YXIgaXNUb3AgPSB1c2VSZWYoZmFsc2UpO1xuICB2YXIgdG91Y2hTdGFydCA9IHVzZVJlZigwKTtcbiAgdmFyIHNjcm9sbFRhcmdldCA9IHVzZVJlZihudWxsKTtcbiAgdmFyIGhhbmRsZUV2ZW50RGVsdGEgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoZXZlbnQsIGRlbHRhKSB7XG4gICAgaWYgKHNjcm9sbFRhcmdldC5jdXJyZW50ID09PSBudWxsKSByZXR1cm47XG4gICAgdmFyIF9zY3JvbGxUYXJnZXQkY3VycmVudCA9IHNjcm9sbFRhcmdldC5jdXJyZW50LFxuICAgICAgc2Nyb2xsVG9wID0gX3Njcm9sbFRhcmdldCRjdXJyZW50LnNjcm9sbFRvcCxcbiAgICAgIHNjcm9sbEhlaWdodCA9IF9zY3JvbGxUYXJnZXQkY3VycmVudC5zY3JvbGxIZWlnaHQsXG4gICAgICBjbGllbnRIZWlnaHQgPSBfc2Nyb2xsVGFyZ2V0JGN1cnJlbnQuY2xpZW50SGVpZ2h0O1xuICAgIHZhciB0YXJnZXQgPSBzY3JvbGxUYXJnZXQuY3VycmVudDtcbiAgICB2YXIgaXNEZWx0YVBvc2l0aXZlID0gZGVsdGEgPiAwO1xuICAgIHZhciBhdmFpbGFibGVTY3JvbGwgPSBzY3JvbGxIZWlnaHQgLSBjbGllbnRIZWlnaHQgLSBzY3JvbGxUb3A7XG4gICAgdmFyIHNob3VsZENhbmNlbFNjcm9sbCA9IGZhbHNlO1xuXG4gICAgLy8gcmVzZXQgYm90dG9tL3RvcCBmbGFnc1xuICAgIGlmIChhdmFpbGFibGVTY3JvbGwgPiBkZWx0YSAmJiBpc0JvdHRvbS5jdXJyZW50KSB7XG4gICAgICBpZiAob25Cb3R0b21MZWF2ZSkgb25Cb3R0b21MZWF2ZShldmVudCk7XG4gICAgICBpc0JvdHRvbS5jdXJyZW50ID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChpc0RlbHRhUG9zaXRpdmUgJiYgaXNUb3AuY3VycmVudCkge1xuICAgICAgaWYgKG9uVG9wTGVhdmUpIG9uVG9wTGVhdmUoZXZlbnQpO1xuICAgICAgaXNUb3AuY3VycmVudCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIGJvdHRvbSBsaW1pdFxuICAgIGlmIChpc0RlbHRhUG9zaXRpdmUgJiYgZGVsdGEgPiBhdmFpbGFibGVTY3JvbGwpIHtcbiAgICAgIGlmIChvbkJvdHRvbUFycml2ZSAmJiAhaXNCb3R0b20uY3VycmVudCkge1xuICAgICAgICBvbkJvdHRvbUFycml2ZShldmVudCk7XG4gICAgICB9XG4gICAgICB0YXJnZXQuc2Nyb2xsVG9wID0gc2Nyb2xsSGVpZ2h0O1xuICAgICAgc2hvdWxkQ2FuY2VsU2Nyb2xsID0gdHJ1ZTtcbiAgICAgIGlzQm90dG9tLmN1cnJlbnQgPSB0cnVlO1xuXG4gICAgICAvLyB0b3AgbGltaXRcbiAgICB9IGVsc2UgaWYgKCFpc0RlbHRhUG9zaXRpdmUgJiYgLWRlbHRhID4gc2Nyb2xsVG9wKSB7XG4gICAgICBpZiAob25Ub3BBcnJpdmUgJiYgIWlzVG9wLmN1cnJlbnQpIHtcbiAgICAgICAgb25Ub3BBcnJpdmUoZXZlbnQpO1xuICAgICAgfVxuICAgICAgdGFyZ2V0LnNjcm9sbFRvcCA9IDA7XG4gICAgICBzaG91bGRDYW5jZWxTY3JvbGwgPSB0cnVlO1xuICAgICAgaXNUb3AuY3VycmVudCA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gY2FuY2VsIHNjcm9sbFxuICAgIGlmIChzaG91bGRDYW5jZWxTY3JvbGwpIHtcbiAgICAgIGNhbmNlbFNjcm9sbChldmVudCk7XG4gICAgfVxuICB9LCBbb25Cb3R0b21BcnJpdmUsIG9uQm90dG9tTGVhdmUsIG9uVG9wQXJyaXZlLCBvblRvcExlYXZlXSk7XG4gIHZhciBvbldoZWVsID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgaGFuZGxlRXZlbnREZWx0YShldmVudCwgZXZlbnQuZGVsdGFZKTtcbiAgfSwgW2hhbmRsZUV2ZW50RGVsdGFdKTtcbiAgdmFyIG9uVG91Y2hTdGFydCA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldmVudCkge1xuICAgIC8vIHNldCB0b3VjaCBzdGFydCBzbyB3ZSBjYW4gY2FsY3VsYXRlIHRvdWNobW92ZSBkZWx0YVxuICAgIHRvdWNoU3RhcnQuY3VycmVudCA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFk7XG4gIH0sIFtdKTtcbiAgdmFyIG9uVG91Y2hNb3ZlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdmFyIGRlbHRhWSA9IHRvdWNoU3RhcnQuY3VycmVudCAtIGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFk7XG4gICAgaGFuZGxlRXZlbnREZWx0YShldmVudCwgZGVsdGFZKTtcbiAgfSwgW2hhbmRsZUV2ZW50RGVsdGFdKTtcbiAgdmFyIHN0YXJ0TGlzdGVuaW5nID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGVsKSB7XG4gICAgLy8gYmFpbCBlYXJseSBpZiBubyBlbGVtZW50IGlzIGF2YWlsYWJsZSB0byBhdHRhY2ggdG9cbiAgICBpZiAoIWVsKSByZXR1cm47XG4gICAgdmFyIG5vdFBhc3NpdmUgPSBzdXBwb3J0c1Bhc3NpdmVFdmVudHMgPyB7XG4gICAgICBwYXNzaXZlOiBmYWxzZVxuICAgIH0gOiBmYWxzZTtcbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIG9uV2hlZWwsIG5vdFBhc3NpdmUpO1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBvblRvdWNoU3RhcnQsIG5vdFBhc3NpdmUpO1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIG9uVG91Y2hNb3ZlLCBub3RQYXNzaXZlKTtcbiAgfSwgW29uVG91Y2hNb3ZlLCBvblRvdWNoU3RhcnQsIG9uV2hlZWxdKTtcbiAgdmFyIHN0b3BMaXN0ZW5pbmcgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoZWwpIHtcbiAgICAvLyBiYWlsIGVhcmx5IGlmIG5vIGVsZW1lbnQgaXMgYXZhaWxhYmxlIHRvIGRldGFjaCBmcm9tXG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgb25XaGVlbCwgZmFsc2UpO1xuICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBvblRvdWNoU3RhcnQsIGZhbHNlKTtcbiAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBvblRvdWNoTW92ZSwgZmFsc2UpO1xuICB9LCBbb25Ub3VjaE1vdmUsIG9uVG91Y2hTdGFydCwgb25XaGVlbF0pO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmICghaXNFbmFibGVkKSByZXR1cm47XG4gICAgdmFyIGVsZW1lbnQgPSBzY3JvbGxUYXJnZXQuY3VycmVudDtcbiAgICBzdGFydExpc3RlbmluZyhlbGVtZW50KTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgc3RvcExpc3RlbmluZyhlbGVtZW50KTtcbiAgICB9O1xuICB9LCBbaXNFbmFibGVkLCBzdGFydExpc3RlbmluZywgc3RvcExpc3RlbmluZ10pO1xuICByZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICBzY3JvbGxUYXJnZXQuY3VycmVudCA9IGVsZW1lbnQ7XG4gIH07XG59XG5cbnZhciBTVFlMRV9LRVlTID0gWydib3hTaXppbmcnLCAnaGVpZ2h0JywgJ292ZXJmbG93JywgJ3BhZGRpbmdSaWdodCcsICdwb3NpdGlvbiddO1xudmFyIExPQ0tfU1RZTEVTID0ge1xuICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgLy8gYWNjb3VudCBmb3IgcG9zc2libGUgZGVjbGFyYXRpb24gYHdpZHRoOiAxMDAlO2Agb24gYm9keVxuICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICBoZWlnaHQ6ICcxMDAlJ1xufTtcbmZ1bmN0aW9uIHByZXZlbnRUb3VjaE1vdmUoZSkge1xuICBpZiAoZS5jYW5jZWxhYmxlKSBlLnByZXZlbnREZWZhdWx0KCk7XG59XG5mdW5jdGlvbiBhbGxvd1RvdWNoTW92ZShlKSB7XG4gIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG59XG5mdW5jdGlvbiBwcmV2ZW50SW5lcnRpYVNjcm9sbCgpIHtcbiAgdmFyIHRvcCA9IHRoaXMuc2Nyb2xsVG9wO1xuICB2YXIgdG90YWxTY3JvbGwgPSB0aGlzLnNjcm9sbEhlaWdodDtcbiAgdmFyIGN1cnJlbnRTY3JvbGwgPSB0b3AgKyB0aGlzLm9mZnNldEhlaWdodDtcbiAgaWYgKHRvcCA9PT0gMCkge1xuICAgIHRoaXMuc2Nyb2xsVG9wID0gMTtcbiAgfSBlbHNlIGlmIChjdXJyZW50U2Nyb2xsID09PSB0b3RhbFNjcm9sbCkge1xuICAgIHRoaXMuc2Nyb2xsVG9wID0gdG9wIC0gMTtcbiAgfVxufVxuXG4vLyBgb250b3VjaHN0YXJ0YCBjaGVjayB3b3JrcyBvbiBtb3N0IGJyb3dzZXJzXG4vLyBgbWF4VG91Y2hQb2ludHNgIHdvcmtzIG9uIElFMTAvMTEgYW5kIFN1cmZhY2VcbmZ1bmN0aW9uIGlzVG91Y2hEZXZpY2UoKSB7XG4gIHJldHVybiAnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3cgfHwgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzO1xufVxudmFyIGNhblVzZURPTSA9ICEhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG52YXIgYWN0aXZlU2Nyb2xsTG9ja3MgPSAwO1xudmFyIGxpc3RlbmVyT3B0aW9ucyA9IHtcbiAgY2FwdHVyZTogZmFsc2UsXG4gIHBhc3NpdmU6IGZhbHNlXG59O1xuZnVuY3Rpb24gdXNlU2Nyb2xsTG9jayhfcmVmKSB7XG4gIHZhciBpc0VuYWJsZWQgPSBfcmVmLmlzRW5hYmxlZCxcbiAgICBfcmVmJGFjY291bnRGb3JTY3JvbGwgPSBfcmVmLmFjY291bnRGb3JTY3JvbGxiYXJzLFxuICAgIGFjY291bnRGb3JTY3JvbGxiYXJzID0gX3JlZiRhY2NvdW50Rm9yU2Nyb2xsID09PSB2b2lkIDAgPyB0cnVlIDogX3JlZiRhY2NvdW50Rm9yU2Nyb2xsO1xuICB2YXIgb3JpZ2luYWxTdHlsZXMgPSB1c2VSZWYoe30pO1xuICB2YXIgc2Nyb2xsVGFyZ2V0ID0gdXNlUmVmKG51bGwpO1xuICB2YXIgYWRkU2Nyb2xsTG9jayA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uICh0b3VjaFNjcm9sbFRhcmdldCkge1xuICAgIGlmICghY2FuVXNlRE9NKSByZXR1cm47XG4gICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmJvZHk7XG4gICAgdmFyIHRhcmdldFN0eWxlID0gdGFyZ2V0ICYmIHRhcmdldC5zdHlsZTtcbiAgICBpZiAoYWNjb3VudEZvclNjcm9sbGJhcnMpIHtcbiAgICAgIC8vIHN0b3JlIGFueSBzdHlsZXMgYWxyZWFkeSBhcHBsaWVkIHRvIHRoZSBib2R5XG4gICAgICBTVFlMRV9LRVlTLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsID0gdGFyZ2V0U3R5bGUgJiYgdGFyZ2V0U3R5bGVba2V5XTtcbiAgICAgICAgb3JpZ2luYWxTdHlsZXMuY3VycmVudFtrZXldID0gdmFsO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gYXBwbHkgdGhlIGxvY2sgc3R5bGVzIGFuZCBwYWRkaW5nIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHNjcm9sbCBsb2NrXG4gICAgaWYgKGFjY291bnRGb3JTY3JvbGxiYXJzICYmIGFjdGl2ZVNjcm9sbExvY2tzIDwgMSkge1xuICAgICAgdmFyIGN1cnJlbnRQYWRkaW5nID0gcGFyc2VJbnQob3JpZ2luYWxTdHlsZXMuY3VycmVudC5wYWRkaW5nUmlnaHQsIDEwKSB8fCAwO1xuICAgICAgdmFyIGNsaWVudFdpZHRoID0gZG9jdW1lbnQuYm9keSA/IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggOiAwO1xuICAgICAgdmFyIGFkanVzdGVkUGFkZGluZyA9IHdpbmRvdy5pbm5lcldpZHRoIC0gY2xpZW50V2lkdGggKyBjdXJyZW50UGFkZGluZyB8fCAwO1xuICAgICAgT2JqZWN0LmtleXMoTE9DS19TVFlMRVMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsID0gTE9DS19TVFlMRVNba2V5XTtcbiAgICAgICAgaWYgKHRhcmdldFN0eWxlKSB7XG4gICAgICAgICAgdGFyZ2V0U3R5bGVba2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAodGFyZ2V0U3R5bGUpIHtcbiAgICAgICAgdGFyZ2V0U3R5bGUucGFkZGluZ1JpZ2h0ID0gXCJcIi5jb25jYXQoYWRqdXN0ZWRQYWRkaW5nLCBcInB4XCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGFjY291bnQgZm9yIHRvdWNoIGRldmljZXNcbiAgICBpZiAodGFyZ2V0ICYmIGlzVG91Y2hEZXZpY2UoKSkge1xuICAgICAgLy8gTW9iaWxlIFNhZmFyaSBpZ25vcmVzIHsgb3ZlcmZsb3c6IGhpZGRlbiB9IGRlY2xhcmF0aW9uIG9uIHRoZSBib2R5LlxuICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHByZXZlbnRUb3VjaE1vdmUsIGxpc3RlbmVyT3B0aW9ucyk7XG5cbiAgICAgIC8vIEFsbG93IHNjcm9sbCBvbiBwcm92aWRlZCB0YXJnZXRcbiAgICAgIGlmICh0b3VjaFNjcm9sbFRhcmdldCkge1xuICAgICAgICB0b3VjaFNjcm9sbFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgcHJldmVudEluZXJ0aWFTY3JvbGwsIGxpc3RlbmVyT3B0aW9ucyk7XG4gICAgICAgIHRvdWNoU2Nyb2xsVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGFsbG93VG91Y2hNb3ZlLCBsaXN0ZW5lck9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGluY3JlbWVudCBhY3RpdmUgc2Nyb2xsIGxvY2tzXG4gICAgYWN0aXZlU2Nyb2xsTG9ja3MgKz0gMTtcbiAgfSwgW2FjY291bnRGb3JTY3JvbGxiYXJzXSk7XG4gIHZhciByZW1vdmVTY3JvbGxMb2NrID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKHRvdWNoU2Nyb2xsVGFyZ2V0KSB7XG4gICAgaWYgKCFjYW5Vc2VET00pIHJldHVybjtcbiAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuYm9keTtcbiAgICB2YXIgdGFyZ2V0U3R5bGUgPSB0YXJnZXQgJiYgdGFyZ2V0LnN0eWxlO1xuXG4gICAgLy8gc2FmZWx5IGRlY3JlbWVudCBhY3RpdmUgc2Nyb2xsIGxvY2tzXG4gICAgYWN0aXZlU2Nyb2xsTG9ja3MgPSBNYXRoLm1heChhY3RpdmVTY3JvbGxMb2NrcyAtIDEsIDApO1xuXG4gICAgLy8gcmVhcHBseSBvcmlnaW5hbCBib2R5IHN0eWxlcywgaWYgYW55XG4gICAgaWYgKGFjY291bnRGb3JTY3JvbGxiYXJzICYmIGFjdGl2ZVNjcm9sbExvY2tzIDwgMSkge1xuICAgICAgU1RZTEVfS0VZUy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbCA9IG9yaWdpbmFsU3R5bGVzLmN1cnJlbnRba2V5XTtcbiAgICAgICAgaWYgKHRhcmdldFN0eWxlKSB7XG4gICAgICAgICAgdGFyZ2V0U3R5bGVba2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlIHRvdWNoIGxpc3RlbmVyc1xuICAgIGlmICh0YXJnZXQgJiYgaXNUb3VjaERldmljZSgpKSB7XG4gICAgICB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgcHJldmVudFRvdWNoTW92ZSwgbGlzdGVuZXJPcHRpb25zKTtcbiAgICAgIGlmICh0b3VjaFNjcm9sbFRhcmdldCkge1xuICAgICAgICB0b3VjaFNjcm9sbFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgcHJldmVudEluZXJ0aWFTY3JvbGwsIGxpc3RlbmVyT3B0aW9ucyk7XG4gICAgICAgIHRvdWNoU2Nyb2xsVGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGFsbG93VG91Y2hNb3ZlLCBsaXN0ZW5lck9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2FjY291bnRGb3JTY3JvbGxiYXJzXSk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFpc0VuYWJsZWQpIHJldHVybjtcbiAgICB2YXIgZWxlbWVudCA9IHNjcm9sbFRhcmdldC5jdXJyZW50O1xuICAgIGFkZFNjcm9sbExvY2soZWxlbWVudCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlbW92ZVNjcm9sbExvY2soZWxlbWVudCk7XG4gICAgfTtcbiAgfSwgW2lzRW5hYmxlZCwgYWRkU2Nyb2xsTG9jaywgcmVtb3ZlU2Nyb2xsTG9ja10pO1xuICByZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICBzY3JvbGxUYXJnZXQuY3VycmVudCA9IGVsZW1lbnQ7XG4gIH07XG59XG5cbmZ1bmN0aW9uIF9FTU9USU9OX1NUUklOR0lGSUVEX0NTU19FUlJPUl9fJDEoKSB7IHJldHVybiBcIllvdSBoYXZlIHRyaWVkIHRvIHN0cmluZ2lmeSBvYmplY3QgcmV0dXJuZWQgZnJvbSBgY3NzYCBmdW5jdGlvbi4gSXQgaXNuJ3Qgc3VwcG9zZWQgdG8gYmUgdXNlZCBkaXJlY3RseSAoZS5nLiBhcyB2YWx1ZSBvZiB0aGUgYGNsYXNzTmFtZWAgcHJvcCksIGJ1dCByYXRoZXIgaGFuZGVkIHRvIGVtb3Rpb24gc28gaXQgY2FuIGhhbmRsZSBpdCAoZS5nLiBhcyB2YWx1ZSBvZiBgY3NzYCBwcm9wKS5cIjsgfVxudmFyIGJsdXJTZWxlY3RJbnB1dCA9IGZ1bmN0aW9uIGJsdXJTZWxlY3RJbnB1dChldmVudCkge1xuICB2YXIgZWxlbWVudCA9IGV2ZW50LnRhcmdldDtcbiAgcmV0dXJuIGVsZW1lbnQub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIGVsZW1lbnQub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcbn07XG52YXIgX3JlZjIkMSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IHtcbiAgbmFtZTogXCIxa2ZkYjBlXCIsXG4gIHN0eWxlczogXCJwb3NpdGlvbjpmaXhlZDtsZWZ0OjA7Ym90dG9tOjA7cmlnaHQ6MDt0b3A6MFwiXG59IDoge1xuICBuYW1lOiBcImJwOGN1YS1TY3JvbGxNYW5hZ2VyXCIsXG4gIHN0eWxlczogXCJwb3NpdGlvbjpmaXhlZDtsZWZ0OjA7Ym90dG9tOjA7cmlnaHQ6MDt0b3A6MDtsYWJlbDpTY3JvbGxNYW5hZ2VyO1wiLFxuICBtYXA6IFwiLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWxOamNtOXNiRTFoYm1GblpYSXVkSE40SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVc5RVZTSXNJbVpwYkdVaU9pSlRZM0p2Ykd4TllXNWhaMlZ5TG5SemVDSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2lCQWFuTjRJR3B6ZUNBcUwxeHVhVzF3YjNKMElIc2dhbk40SUgwZ1puSnZiU0FuUUdWdGIzUnBiMjR2Y21WaFkzUW5PMXh1YVcxd2IzSjBJSHNnUm5KaFoyMWxiblFzSUZKbFlXTjBSV3hsYldWdWRDd2dVbVZtUTJGc2JHSmhZMnNzSUUxdmRYTmxSWFpsYm5RZ2ZTQm1jbTl0SUNkeVpXRmpkQ2M3WEc1cGJYQnZjblFnZFhObFUyTnliMnhzUTJGd2RIVnlaU0JtY205dElDY3VMM1Z6WlZOamNtOXNiRU5oY0hSMWNtVW5PMXh1YVcxd2IzSjBJSFZ6WlZOamNtOXNiRXh2WTJzZ1puSnZiU0FuTGk5MWMyVlRZM0p2Ykd4TWIyTnJKenRjYmx4dWFXNTBaWEptWVdObElGQnliM0J6SUh0Y2JpQWdjbVZoWkc5dWJIa2dZMmhwYkdSeVpXNDZJQ2h5WldZNklGSmxaa05oYkd4aVlXTnJQRWhVVFV4RmJHVnRaVzUwUGlrZ1BUNGdVbVZoWTNSRmJHVnRaVzUwTzF4dUlDQnlaV0ZrYjI1c2VTQnNiMk5yUlc1aFlteGxaRG9nWW05dmJHVmhianRjYmlBZ2NtVmhaRzl1YkhrZ1kyRndkSFZ5WlVWdVlXSnNaV1E2SUdKdmIyeGxZVzQ3WEc0Z0lISmxZV1J2Ym14NUlHOXVRbTkwZEc5dFFYSnlhWFpsUHpvZ0tHVjJaVzUwT2lCWGFHVmxiRVYyWlc1MElId2dWRzkxWTJoRmRtVnVkQ2tnUFQ0Z2RtOXBaRHRjYmlBZ2NtVmhaRzl1YkhrZ2IyNUNiM1IwYjIxTVpXRjJaVDg2SUNobGRtVnVkRG9nVjJobFpXeEZkbVZ1ZENCOElGUnZkV05vUlhabGJuUXBJRDArSUhadmFXUTdYRzRnSUhKbFlXUnZibXg1SUc5dVZHOXdRWEp5YVhabFB6b2dLR1YyWlc1ME9pQlhhR1ZsYkVWMlpXNTBJSHdnVkc5MVkyaEZkbVZ1ZENrZ1BUNGdkbTlwWkR0Y2JpQWdjbVZoWkc5dWJIa2diMjVVYjNCTVpXRjJaVDg2SUNobGRtVnVkRG9nVjJobFpXeEZkbVZ1ZENCOElGUnZkV05vUlhabGJuUXBJRDArSUhadmFXUTdYRzU5WEc1Y2JtTnZibk4wSUdKc2RYSlRaV3hsWTNSSmJuQjFkQ0E5SUNobGRtVnVkRG9nVFc5MWMyVkZkbVZ1ZER4SVZFMU1SR2wyUld4bGJXVnVkRDRwSUQwK0lIdGNiaUFnWTI5dWMzUWdaV3hsYldWdWRDQTlJR1YyWlc1MExuUmhjbWRsZENCaGN5QklWRTFNUkdsMlJXeGxiV1Z1ZER0Y2JpQWdjbVYwZFhKdUlDaGNiaUFnSUNCbGJHVnRaVzUwTG05M2JtVnlSRzlqZFcxbGJuUXVZV04wYVhabFJXeGxiV1Z1ZENBbUpseHVJQ0FnSUNobGJHVnRaVzUwTG05M2JtVnlSRzlqZFcxbGJuUXVZV04wYVhabFJXeGxiV1Z1ZENCaGN5QklWRTFNUld4bGJXVnVkQ2t1WW14MWNpZ3BYRzRnSUNrN1hHNTlPMXh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0JtZFc1amRHbHZiaUJUWTNKdmJHeE5ZVzVoWjJWeUtIdGNiaUFnWTJocGJHUnlaVzRzWEc0Z0lHeHZZMnRGYm1GaWJHVmtMRnh1SUNCallYQjBkWEpsUlc1aFlteGxaQ0E5SUhSeWRXVXNYRzRnSUc5dVFtOTBkRzl0UVhKeWFYWmxMRnh1SUNCdmJrSnZkSFJ2YlV4bFlYWmxMRnh1SUNCdmJsUnZjRUZ5Y21sMlpTeGNiaUFnYjI1VWIzQk1aV0YyWlN4Y2JuMDZJRkJ5YjNCektTQjdYRzRnSUdOdmJuTjBJSE5sZEZOamNtOXNiRU5oY0hSMWNtVlVZWEpuWlhRZ1BTQjFjMlZUWTNKdmJHeERZWEIwZFhKbEtIdGNiaUFnSUNCcGMwVnVZV0pzWldRNklHTmhjSFIxY21WRmJtRmliR1ZrTEZ4dUlDQWdJRzl1UW05MGRHOXRRWEp5YVhabExGeHVJQ0FnSUc5dVFtOTBkRzl0VEdWaGRtVXNYRzRnSUNBZ2IyNVViM0JCY25KcGRtVXNYRzRnSUNBZ2IyNVViM0JNWldGMlpTeGNiaUFnZlNrN1hHNGdJR052Ym5OMElITmxkRk5qY205c2JFeHZZMnRVWVhKblpYUWdQU0IxYzJWVFkzSnZiR3hNYjJOcktIc2dhWE5GYm1GaWJHVmtPaUJzYjJOclJXNWhZbXhsWkNCOUtUdGNibHh1SUNCamIyNXpkQ0IwWVhKblpYUlNaV1k2SUZKbFprTmhiR3hpWVdOclBFaFVUVXhGYkdWdFpXNTBQaUE5SUNobGJHVnRaVzUwS1NBOVBpQjdYRzRnSUNBZ2MyVjBVMk55YjJ4c1EyRndkSFZ5WlZSaGNtZGxkQ2hsYkdWdFpXNTBLVHRjYmlBZ0lDQnpaWFJUWTNKdmJHeE1iMk5yVkdGeVoyVjBLR1ZzWlcxbGJuUXBPMXh1SUNCOU8xeHVYRzRnSUhKbGRIVnliaUFvWEc0Z0lDQWdQRVp5WVdkdFpXNTBQbHh1SUNBZ0lDQWdlMnh2WTJ0RmJtRmliR1ZrSUNZbUlDaGNiaUFnSUNBZ0lDQWdQR1JwZGx4dUlDQWdJQ0FnSUNBZ0lHOXVRMnhwWTJzOWUySnNkWEpUWld4bFkzUkpibkIxZEgxY2JpQWdJQ0FnSUNBZ0lDQmpjM005ZTNzZ2NHOXphWFJwYjI0NklDZG1hWGhsWkNjc0lHeGxablE2SURBc0lHSnZkSFJ2YlRvZ01Dd2djbWxuYUhRNklEQXNJSFJ2Y0RvZ01DQjlmVnh1SUNBZ0lDQWdJQ0F2UGx4dUlDQWdJQ0FnS1gxY2JpQWdJQ0FnSUh0amFHbHNaSEpsYmloMFlYSm5aWFJTWldZcGZWeHVJQ0FnSUR3dlJuSmhaMjFsYm5RK1hHNGdJQ2s3WEc1OVhHNGlYWDA9ICovXCIsXG4gIHRvU3RyaW5nOiBfRU1PVElPTl9TVFJJTkdJRklFRF9DU1NfRVJST1JfXyQxXG59O1xuZnVuY3Rpb24gU2Nyb2xsTWFuYWdlcihfcmVmKSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgbG9ja0VuYWJsZWQgPSBfcmVmLmxvY2tFbmFibGVkLFxuICAgIF9yZWYkY2FwdHVyZUVuYWJsZWQgPSBfcmVmLmNhcHR1cmVFbmFibGVkLFxuICAgIGNhcHR1cmVFbmFibGVkID0gX3JlZiRjYXB0dXJlRW5hYmxlZCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9yZWYkY2FwdHVyZUVuYWJsZWQsXG4gICAgb25Cb3R0b21BcnJpdmUgPSBfcmVmLm9uQm90dG9tQXJyaXZlLFxuICAgIG9uQm90dG9tTGVhdmUgPSBfcmVmLm9uQm90dG9tTGVhdmUsXG4gICAgb25Ub3BBcnJpdmUgPSBfcmVmLm9uVG9wQXJyaXZlLFxuICAgIG9uVG9wTGVhdmUgPSBfcmVmLm9uVG9wTGVhdmU7XG4gIHZhciBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0ID0gdXNlU2Nyb2xsQ2FwdHVyZSh7XG4gICAgaXNFbmFibGVkOiBjYXB0dXJlRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZTogb25Cb3R0b21BcnJpdmUsXG4gICAgb25Cb3R0b21MZWF2ZTogb25Cb3R0b21MZWF2ZSxcbiAgICBvblRvcEFycml2ZTogb25Ub3BBcnJpdmUsXG4gICAgb25Ub3BMZWF2ZTogb25Ub3BMZWF2ZVxuICB9KTtcbiAgdmFyIHNldFNjcm9sbExvY2tUYXJnZXQgPSB1c2VTY3JvbGxMb2NrKHtcbiAgICBpc0VuYWJsZWQ6IGxvY2tFbmFibGVkXG4gIH0pO1xuICB2YXIgdGFyZ2V0UmVmID0gZnVuY3Rpb24gdGFyZ2V0UmVmKGVsZW1lbnQpIHtcbiAgICBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0KGVsZW1lbnQpO1xuICAgIHNldFNjcm9sbExvY2tUYXJnZXQoZWxlbWVudCk7XG4gIH07XG4gIHJldHVybiBqc3goRnJhZ21lbnQsIG51bGwsIGxvY2tFbmFibGVkICYmIGpzeChcImRpdlwiLCB7XG4gICAgb25DbGljazogYmx1clNlbGVjdElucHV0LFxuICAgIGNzczogX3JlZjIkMVxuICB9KSwgY2hpbGRyZW4odGFyZ2V0UmVmKSk7XG59XG5cbmZ1bmN0aW9uIF9FTU9USU9OX1NUUklOR0lGSUVEX0NTU19FUlJPUl9fKCkgeyByZXR1cm4gXCJZb3UgaGF2ZSB0cmllZCB0byBzdHJpbmdpZnkgb2JqZWN0IHJldHVybmVkIGZyb20gYGNzc2AgZnVuY3Rpb24uIEl0IGlzbid0IHN1cHBvc2VkIHRvIGJlIHVzZWQgZGlyZWN0bHkgKGUuZy4gYXMgdmFsdWUgb2YgdGhlIGBjbGFzc05hbWVgIHByb3ApLCBidXQgcmF0aGVyIGhhbmRlZCB0byBlbW90aW9uIHNvIGl0IGNhbiBoYW5kbGUgaXQgKGUuZy4gYXMgdmFsdWUgb2YgYGNzc2AgcHJvcCkuXCI7IH1cbnZhciBfcmVmMiA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IHtcbiAgbmFtZTogXCIxYTBybzRuLXJlcXVpcmVkSW5wdXRcIixcbiAgc3R5bGVzOiBcImxhYmVsOnJlcXVpcmVkSW5wdXQ7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7d2lkdGg6MTAwJVwiXG59IDoge1xuICBuYW1lOiBcIjVra3hiMi1yZXF1aXJlZElucHV0LVJlcXVpcmVkSW5wdXRcIixcbiAgc3R5bGVzOiBcImxhYmVsOnJlcXVpcmVkSW5wdXQ7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7d2lkdGg6MTAwJTtsYWJlbDpSZXF1aXJlZElucHV0O1wiLFxuICBtYXA6IFwiLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWxKbGNYVnBjbVZrU1c1d2RYUXVkSE40SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVdOSklpd2labWxzWlNJNklsSmxjWFZwY21Wa1NXNXdkWFF1ZEhONElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xSUVCcWMzZ2dhbk40SUNvdlhHNXBiWEJ2Y25RZ2V5QkdiMk4xYzBWMlpXNTBTR0Z1Wkd4bGNpd2dSblZ1WTNScGIyNURiMjF3YjI1bGJuUWdmU0JtY205dElDZHlaV0ZqZENjN1hHNXBiWEJ2Y25RZ2V5QnFjM2dnZlNCbWNtOXRJQ2RBWlcxdmRHbHZiaTl5WldGamRDYzdYRzVjYm1OdmJuTjBJRkpsY1hWcGNtVmtTVzV3ZFhRNklFWjFibU4wYVc5dVEyOXRjRzl1Wlc1MFBIdGNiaUFnY21WaFpHOXViSGtnYm1GdFpUODZJSE4wY21sdVp6dGNiaUFnY21WaFpHOXViSGtnYjI1R2IyTjFjem9nUm05amRYTkZkbVZ1ZEVoaGJtUnNaWEk4U0ZSTlRFbHVjSFYwUld4bGJXVnVkRDQ3WEc1OVBpQTlJQ2g3SUc1aGJXVXNJRzl1Um05amRYTWdmU2tnUFQ0Z0tGeHVJQ0E4YVc1d2RYUmNiaUFnSUNCeVpYRjFhWEpsWkZ4dUlDQWdJRzVoYldVOWUyNWhiV1Y5WEc0Z0lDQWdkR0ZpU1c1a1pYZzlleTB4ZlZ4dUlDQWdJR0Z5YVdFdGFHbGtaR1Z1UFZ3aWRISjFaVndpWEc0Z0lDQWdiMjVHYjJOMWN6MTdiMjVHYjJOMWMzMWNiaUFnSUNCamMzTTllM3RjYmlBZ0lDQWdJR3hoWW1Wc09pQW5jbVZ4ZFdseVpXUkpibkIxZENjc1hHNGdJQ0FnSUNCdmNHRmphWFI1T2lBd0xGeHVJQ0FnSUNBZ2NHOXBiblJsY2tWMlpXNTBjem9nSjI1dmJtVW5MRnh1SUNBZ0lDQWdjRzl6YVhScGIyNDZJQ2RoWW5OdmJIVjBaU2NzWEc0Z0lDQWdJQ0JpYjNSMGIyMDZJREFzWEc0Z0lDQWdJQ0JzWldaME9pQXdMRnh1SUNBZ0lDQWdjbWxuYUhRNklEQXNYRzRnSUNBZ0lDQjNhV1IwYURvZ0p6RXdNQ1VuTEZ4dUlDQWdJSDE5WEc0Z0lDQWdMeThnVUhKbGRtVnVkQ0JnVTNkcGRHTm9hVzVuSUdaeWIyMGdkVzVqYjI1MGNtOXNiR1ZrSUhSdklHTnZiblJ5YjJ4c1pXUmdJR1Z5Y205eVhHNGdJQ0FnZG1Gc2RXVTlYQ0pjSWx4dUlDQWdJRzl1UTJoaGJtZGxQWHNvS1NBOVBpQjdmWDFjYmlBZ0x6NWNiaWs3WEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUZKbGNYVnBjbVZrU1c1d2RYUTdYRzRpWFgwPSAqL1wiLFxuICB0b1N0cmluZzogX0VNT1RJT05fU1RSSU5HSUZJRURfQ1NTX0VSUk9SX19cbn07XG52YXIgUmVxdWlyZWRJbnB1dCA9IGZ1bmN0aW9uIFJlcXVpcmVkSW5wdXQoX3JlZikge1xuICB2YXIgbmFtZSA9IF9yZWYubmFtZSxcbiAgICBvbkZvY3VzID0gX3JlZi5vbkZvY3VzO1xuICByZXR1cm4ganN4KFwiaW5wdXRcIiwge1xuICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgdGFiSW5kZXg6IC0xLFxuICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIsXG4gICAgb25Gb2N1czogb25Gb2N1cyxcbiAgICBjc3M6IF9yZWYyXG4gICAgLy8gUHJldmVudCBgU3dpdGNoaW5nIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWRgIGVycm9yXG4gICAgLFxuICAgIHZhbHVlOiBcIlwiLFxuICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSgpIHt9XG4gIH0pO1xufTtcbnZhciBSZXF1aXJlZElucHV0JDEgPSBSZXF1aXJlZElucHV0O1xuXG4vLy8gPHJlZmVyZW5jZSB0eXBlcz1cInVzZXItYWdlbnQtZGF0YS10eXBlc1wiIC8+XG5cbmZ1bmN0aW9uIHRlc3RQbGF0Zm9ybShyZSkge1xuICB2YXIgX3dpbmRvdyRuYXZpZ2F0b3IkdXNlO1xuICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lm5hdmlnYXRvciAhPSBudWxsID8gcmUudGVzdCgoKF93aW5kb3ckbmF2aWdhdG9yJHVzZSA9IHdpbmRvdy5uYXZpZ2F0b3JbJ3VzZXJBZ2VudERhdGEnXSkgPT09IG51bGwgfHwgX3dpbmRvdyRuYXZpZ2F0b3IkdXNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfd2luZG93JG5hdmlnYXRvciR1c2UucGxhdGZvcm0pIHx8IHdpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0pIDogZmFsc2U7XG59XG5mdW5jdGlvbiBpc0lQaG9uZSgpIHtcbiAgcmV0dXJuIHRlc3RQbGF0Zm9ybSgvXmlQaG9uZS9pKTtcbn1cbmZ1bmN0aW9uIGlzTWFjKCkge1xuICByZXR1cm4gdGVzdFBsYXRmb3JtKC9eTWFjL2kpO1xufVxuZnVuY3Rpb24gaXNJUGFkKCkge1xuICByZXR1cm4gdGVzdFBsYXRmb3JtKC9eaVBhZC9pKSB8fFxuICAvLyBpUGFkT1MgMTMgbGllcyBhbmQgc2F5cyBpdCdzIGEgTWFjLCBidXQgd2UgY2FuIGRpc3Rpbmd1aXNoIGJ5IGRldGVjdGluZyB0b3VjaCBzdXBwb3J0LlxuICBpc01hYygpICYmIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDE7XG59XG5mdW5jdGlvbiBpc0lPUygpIHtcbiAgcmV0dXJuIGlzSVBob25lKCkgfHwgaXNJUGFkKCk7XG59XG5mdW5jdGlvbiBpc0FwcGxlRGV2aWNlKCkge1xuICByZXR1cm4gaXNNYWMoKSB8fCBpc0lPUygpO1xufVxuXG52YXIgZm9ybWF0R3JvdXBMYWJlbCA9IGZ1bmN0aW9uIGZvcm1hdEdyb3VwTGFiZWwoZ3JvdXApIHtcbiAgcmV0dXJuIGdyb3VwLmxhYmVsO1xufTtcbnZhciBnZXRPcHRpb25MYWJlbCQxID0gZnVuY3Rpb24gZ2V0T3B0aW9uTGFiZWwob3B0aW9uKSB7XG4gIHJldHVybiBvcHRpb24ubGFiZWw7XG59O1xudmFyIGdldE9wdGlvblZhbHVlJDEgPSBmdW5jdGlvbiBnZXRPcHRpb25WYWx1ZShvcHRpb24pIHtcbiAgcmV0dXJuIG9wdGlvbi52YWx1ZTtcbn07XG52YXIgaXNPcHRpb25EaXNhYmxlZCA9IGZ1bmN0aW9uIGlzT3B0aW9uRGlzYWJsZWQob3B0aW9uKSB7XG4gIHJldHVybiAhIW9wdGlvbi5pc0Rpc2FibGVkO1xufTtcblxudmFyIGRlZmF1bHRTdHlsZXMgPSB7XG4gIGNsZWFySW5kaWNhdG9yOiBjbGVhckluZGljYXRvckNTUyxcbiAgY29udGFpbmVyOiBjb250YWluZXJDU1MsXG4gIGNvbnRyb2w6IGNzcyQxLFxuICBkcm9wZG93bkluZGljYXRvcjogZHJvcGRvd25JbmRpY2F0b3JDU1MsXG4gIGdyb3VwOiBncm91cENTUyxcbiAgZ3JvdXBIZWFkaW5nOiBncm91cEhlYWRpbmdDU1MsXG4gIGluZGljYXRvcnNDb250YWluZXI6IGluZGljYXRvcnNDb250YWluZXJDU1MsXG4gIGluZGljYXRvclNlcGFyYXRvcjogaW5kaWNhdG9yU2VwYXJhdG9yQ1NTLFxuICBpbnB1dDogaW5wdXRDU1MsXG4gIGxvYWRpbmdJbmRpY2F0b3I6IGxvYWRpbmdJbmRpY2F0b3JDU1MsXG4gIGxvYWRpbmdNZXNzYWdlOiBsb2FkaW5nTWVzc2FnZUNTUyxcbiAgbWVudTogbWVudUNTUyxcbiAgbWVudUxpc3Q6IG1lbnVMaXN0Q1NTLFxuICBtZW51UG9ydGFsOiBtZW51UG9ydGFsQ1NTLFxuICBtdWx0aVZhbHVlOiBtdWx0aVZhbHVlQ1NTLFxuICBtdWx0aVZhbHVlTGFiZWw6IG11bHRpVmFsdWVMYWJlbENTUyxcbiAgbXVsdGlWYWx1ZVJlbW92ZTogbXVsdGlWYWx1ZVJlbW92ZUNTUyxcbiAgbm9PcHRpb25zTWVzc2FnZTogbm9PcHRpb25zTWVzc2FnZUNTUyxcbiAgb3B0aW9uOiBvcHRpb25DU1MsXG4gIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlckNTUyxcbiAgc2luZ2xlVmFsdWU6IGNzcyQyLFxuICB2YWx1ZUNvbnRhaW5lcjogdmFsdWVDb250YWluZXJDU1Ncbn07XG4vLyBNZXJnZSBVdGlsaXR5XG4vLyBBbGxvd3MgY29uc3VtZXJzIHRvIGV4dGVuZCBhIGJhc2UgU2VsZWN0IHdpdGggYWRkaXRpb25hbCBzdHlsZXNcblxuZnVuY3Rpb24gbWVyZ2VTdHlsZXMoc291cmNlKSB7XG4gIHZhciB0YXJnZXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAvLyBpbml0aWFsaXplIHdpdGggc291cmNlIHN0eWxlc1xuICB2YXIgc3R5bGVzID0gX29iamVjdFNwcmVhZCh7fSwgc291cmNlKTtcblxuICAvLyBtYXNzYWdlIGluIHRhcmdldCBzdHlsZXNcbiAgT2JqZWN0LmtleXModGFyZ2V0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXlBc1N0cmluZykge1xuICAgIHZhciBrZXkgPSBrZXlBc1N0cmluZztcbiAgICBpZiAoc291cmNlW2tleV0pIHtcbiAgICAgIHN0eWxlc1trZXldID0gZnVuY3Rpb24gKHJzQ3NzLCBwcm9wcykge1xuICAgICAgICByZXR1cm4gdGFyZ2V0W2tleV0oc291cmNlW2tleV0ocnNDc3MsIHByb3BzKSwgcHJvcHMpO1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVzW2tleV0gPSB0YXJnZXRba2V5XTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gc3R5bGVzO1xufVxuXG52YXIgY29sb3JzID0ge1xuICBwcmltYXJ5OiAnIzI2ODRGRicsXG4gIHByaW1hcnk3NTogJyM0QzlBRkYnLFxuICBwcmltYXJ5NTA6ICcjQjJENEZGJyxcbiAgcHJpbWFyeTI1OiAnI0RFRUJGRicsXG4gIGRhbmdlcjogJyNERTM1MEInLFxuICBkYW5nZXJMaWdodDogJyNGRkJEQUQnLFxuICBuZXV0cmFsMDogJ2hzbCgwLCAwJSwgMTAwJSknLFxuICBuZXV0cmFsNTogJ2hzbCgwLCAwJSwgOTUlKScsXG4gIG5ldXRyYWwxMDogJ2hzbCgwLCAwJSwgOTAlKScsXG4gIG5ldXRyYWwyMDogJ2hzbCgwLCAwJSwgODAlKScsXG4gIG5ldXRyYWwzMDogJ2hzbCgwLCAwJSwgNzAlKScsXG4gIG5ldXRyYWw0MDogJ2hzbCgwLCAwJSwgNjAlKScsXG4gIG5ldXRyYWw1MDogJ2hzbCgwLCAwJSwgNTAlKScsXG4gIG5ldXRyYWw2MDogJ2hzbCgwLCAwJSwgNDAlKScsXG4gIG5ldXRyYWw3MDogJ2hzbCgwLCAwJSwgMzAlKScsXG4gIG5ldXRyYWw4MDogJ2hzbCgwLCAwJSwgMjAlKScsXG4gIG5ldXRyYWw5MDogJ2hzbCgwLCAwJSwgMTAlKSdcbn07XG52YXIgYm9yZGVyUmFkaXVzID0gNDtcbi8vIFVzZWQgdG8gY2FsY3VsYXRlIGNvbnNpc3RlbnQgbWFyZ2luL3BhZGRpbmcgb24gZWxlbWVudHNcbnZhciBiYXNlVW5pdCA9IDQ7XG4vLyBUaGUgbWluaW11bSBoZWlnaHQgb2YgdGhlIGNvbnRyb2xcbnZhciBjb250cm9sSGVpZ2h0ID0gMzg7XG4vLyBUaGUgYW1vdW50IG9mIHNwYWNlIGJldHdlZW4gdGhlIGNvbnRyb2wgYW5kIG1lbnUgKi9cbnZhciBtZW51R3V0dGVyID0gYmFzZVVuaXQgKiAyO1xudmFyIHNwYWNpbmcgPSB7XG4gIGJhc2VVbml0OiBiYXNlVW5pdCxcbiAgY29udHJvbEhlaWdodDogY29udHJvbEhlaWdodCxcbiAgbWVudUd1dHRlcjogbWVudUd1dHRlclxufTtcbnZhciBkZWZhdWx0VGhlbWUgPSB7XG4gIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzLFxuICBjb2xvcnM6IGNvbG9ycyxcbiAgc3BhY2luZzogc3BhY2luZ1xufTtcblxudmFyIGRlZmF1bHRQcm9wcyA9IHtcbiAgJ2FyaWEtbGl2ZSc6ICdwb2xpdGUnLFxuICBiYWNrc3BhY2VSZW1vdmVzVmFsdWU6IHRydWUsXG4gIGJsdXJJbnB1dE9uU2VsZWN0OiBpc1RvdWNoQ2FwYWJsZSgpLFxuICBjYXB0dXJlTWVudVNjcm9sbDogIWlzVG91Y2hDYXBhYmxlKCksXG4gIGNsYXNzTmFtZXM6IHt9LFxuICBjbG9zZU1lbnVPblNlbGVjdDogdHJ1ZSxcbiAgY2xvc2VNZW51T25TY3JvbGw6IGZhbHNlLFxuICBjb21wb25lbnRzOiB7fSxcbiAgY29udHJvbFNob3VsZFJlbmRlclZhbHVlOiB0cnVlLFxuICBlc2NhcGVDbGVhcnNWYWx1ZTogZmFsc2UsXG4gIGZpbHRlck9wdGlvbjogY3JlYXRlRmlsdGVyKCksXG4gIGZvcm1hdEdyb3VwTGFiZWw6IGZvcm1hdEdyb3VwTGFiZWwsXG4gIGdldE9wdGlvbkxhYmVsOiBnZXRPcHRpb25MYWJlbCQxLFxuICBnZXRPcHRpb25WYWx1ZTogZ2V0T3B0aW9uVmFsdWUkMSxcbiAgaXNEaXNhYmxlZDogZmFsc2UsXG4gIGlzTG9hZGluZzogZmFsc2UsXG4gIGlzTXVsdGk6IGZhbHNlLFxuICBpc1J0bDogZmFsc2UsXG4gIGlzU2VhcmNoYWJsZTogdHJ1ZSxcbiAgaXNPcHRpb25EaXNhYmxlZDogaXNPcHRpb25EaXNhYmxlZCxcbiAgbG9hZGluZ01lc3NhZ2U6IGZ1bmN0aW9uIGxvYWRpbmdNZXNzYWdlKCkge1xuICAgIHJldHVybiAnTG9hZGluZy4uLic7XG4gIH0sXG4gIG1heE1lbnVIZWlnaHQ6IDMwMCxcbiAgbWluTWVudUhlaWdodDogMTQwLFxuICBtZW51SXNPcGVuOiBmYWxzZSxcbiAgbWVudVBsYWNlbWVudDogJ2JvdHRvbScsXG4gIG1lbnVQb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgbWVudVNob3VsZEJsb2NrU2Nyb2xsOiBmYWxzZSxcbiAgbWVudVNob3VsZFNjcm9sbEludG9WaWV3OiAhaXNNb2JpbGVEZXZpY2UoKSxcbiAgbm9PcHRpb25zTWVzc2FnZTogZnVuY3Rpb24gbm9PcHRpb25zTWVzc2FnZSgpIHtcbiAgICByZXR1cm4gJ05vIG9wdGlvbnMnO1xuICB9LFxuICBvcGVuTWVudU9uRm9jdXM6IGZhbHNlLFxuICBvcGVuTWVudU9uQ2xpY2s6IHRydWUsXG4gIG9wdGlvbnM6IFtdLFxuICBwYWdlU2l6ZTogNSxcbiAgcGxhY2Vob2xkZXI6ICdTZWxlY3QuLi4nLFxuICBzY3JlZW5SZWFkZXJTdGF0dXM6IGZ1bmN0aW9uIHNjcmVlblJlYWRlclN0YXR1cyhfcmVmKSB7XG4gICAgdmFyIGNvdW50ID0gX3JlZi5jb3VudDtcbiAgICByZXR1cm4gXCJcIi5jb25jYXQoY291bnQsIFwiIHJlc3VsdFwiKS5jb25jYXQoY291bnQgIT09IDEgPyAncycgOiAnJywgXCIgYXZhaWxhYmxlXCIpO1xuICB9LFxuICBzdHlsZXM6IHt9LFxuICB0YWJJbmRleDogMCxcbiAgdGFiU2VsZWN0c1ZhbHVlOiB0cnVlLFxuICB1bnN0eWxlZDogZmFsc2Vcbn07XG5mdW5jdGlvbiB0b0NhdGVnb3JpemVkT3B0aW9uKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlLCBpbmRleCkge1xuICB2YXIgaXNEaXNhYmxlZCA9IF9pc09wdGlvbkRpc2FibGVkKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlKTtcbiAgdmFyIGlzU2VsZWN0ZWQgPSBfaXNPcHRpb25TZWxlY3RlZChwcm9wcywgb3B0aW9uLCBzZWxlY3RWYWx1ZSk7XG4gIHZhciBsYWJlbCA9IGdldE9wdGlvbkxhYmVsKHByb3BzLCBvcHRpb24pO1xuICB2YXIgdmFsdWUgPSBnZXRPcHRpb25WYWx1ZShwcm9wcywgb3B0aW9uKTtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnb3B0aW9uJyxcbiAgICBkYXRhOiBvcHRpb24sXG4gICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICBpc1NlbGVjdGVkOiBpc1NlbGVjdGVkLFxuICAgIGxhYmVsOiBsYWJlbCxcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgaW5kZXg6IGluZGV4XG4gIH07XG59XG5mdW5jdGlvbiBidWlsZENhdGVnb3JpemVkT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpIHtcbiAgcmV0dXJuIHByb3BzLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChncm91cE9yT3B0aW9uLCBncm91cE9yT3B0aW9uSW5kZXgpIHtcbiAgICBpZiAoJ29wdGlvbnMnIGluIGdyb3VwT3JPcHRpb24pIHtcbiAgICAgIHZhciBjYXRlZ29yaXplZE9wdGlvbnMgPSBncm91cE9yT3B0aW9uLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24sIG9wdGlvbkluZGV4KSB7XG4gICAgICAgIHJldHVybiB0b0NhdGVnb3JpemVkT3B0aW9uKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlLCBvcHRpb25JbmRleCk7XG4gICAgICB9KS5maWx0ZXIoZnVuY3Rpb24gKGNhdGVnb3JpemVkT3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBpc0ZvY3VzYWJsZShwcm9wcywgY2F0ZWdvcml6ZWRPcHRpb24pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gY2F0ZWdvcml6ZWRPcHRpb25zLmxlbmd0aCA+IDAgPyB7XG4gICAgICAgIHR5cGU6ICdncm91cCcsXG4gICAgICAgIGRhdGE6IGdyb3VwT3JPcHRpb24sXG4gICAgICAgIG9wdGlvbnM6IGNhdGVnb3JpemVkT3B0aW9ucyxcbiAgICAgICAgaW5kZXg6IGdyb3VwT3JPcHRpb25JbmRleFxuICAgICAgfSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdmFyIGNhdGVnb3JpemVkT3B0aW9uID0gdG9DYXRlZ29yaXplZE9wdGlvbihwcm9wcywgZ3JvdXBPck9wdGlvbiwgc2VsZWN0VmFsdWUsIGdyb3VwT3JPcHRpb25JbmRleCk7XG4gICAgcmV0dXJuIGlzRm9jdXNhYmxlKHByb3BzLCBjYXRlZ29yaXplZE9wdGlvbikgPyBjYXRlZ29yaXplZE9wdGlvbiA6IHVuZGVmaW5lZDtcbiAgfSkuZmlsdGVyKG5vdE51bGxpc2gpO1xufVxuZnVuY3Rpb24gYnVpbGRGb2N1c2FibGVPcHRpb25zRnJvbUNhdGVnb3JpemVkT3B0aW9ucyhjYXRlZ29yaXplZE9wdGlvbnMpIHtcbiAgcmV0dXJuIGNhdGVnb3JpemVkT3B0aW9ucy5yZWR1Y2UoZnVuY3Rpb24gKG9wdGlvbnNBY2N1bXVsYXRvciwgY2F0ZWdvcml6ZWRPcHRpb24pIHtcbiAgICBpZiAoY2F0ZWdvcml6ZWRPcHRpb24udHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgb3B0aW9uc0FjY3VtdWxhdG9yLnB1c2guYXBwbHkob3B0aW9uc0FjY3VtdWxhdG9yLCBfdG9Db25zdW1hYmxlQXJyYXkoY2F0ZWdvcml6ZWRPcHRpb24ub3B0aW9ucy5tYXAoZnVuY3Rpb24gKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uLmRhdGE7XG4gICAgICB9KSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zQWNjdW11bGF0b3IucHVzaChjYXRlZ29yaXplZE9wdGlvbi5kYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnNBY2N1bXVsYXRvcjtcbiAgfSwgW10pO1xufVxuZnVuY3Rpb24gYnVpbGRGb2N1c2FibGVPcHRpb25zV2l0aElkcyhjYXRlZ29yaXplZE9wdGlvbnMsIG9wdGlvbklkKSB7XG4gIHJldHVybiBjYXRlZ29yaXplZE9wdGlvbnMucmVkdWNlKGZ1bmN0aW9uIChvcHRpb25zQWNjdW11bGF0b3IsIGNhdGVnb3JpemVkT3B0aW9uKSB7XG4gICAgaWYgKGNhdGVnb3JpemVkT3B0aW9uLnR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgIG9wdGlvbnNBY2N1bXVsYXRvci5wdXNoLmFwcGx5KG9wdGlvbnNBY2N1bXVsYXRvciwgX3RvQ29uc3VtYWJsZUFycmF5KGNhdGVnb3JpemVkT3B0aW9uLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiBvcHRpb24uZGF0YSxcbiAgICAgICAgICBpZDogXCJcIi5jb25jYXQob3B0aW9uSWQsIFwiLVwiKS5jb25jYXQoY2F0ZWdvcml6ZWRPcHRpb24uaW5kZXgsIFwiLVwiKS5jb25jYXQob3B0aW9uLmluZGV4KVxuICAgICAgICB9O1xuICAgICAgfSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9uc0FjY3VtdWxhdG9yLnB1c2goe1xuICAgICAgICBkYXRhOiBjYXRlZ29yaXplZE9wdGlvbi5kYXRhLFxuICAgICAgICBpZDogXCJcIi5jb25jYXQob3B0aW9uSWQsIFwiLVwiKS5jb25jYXQoY2F0ZWdvcml6ZWRPcHRpb24uaW5kZXgpXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnNBY2N1bXVsYXRvcjtcbiAgfSwgW10pO1xufVxuZnVuY3Rpb24gYnVpbGRGb2N1c2FibGVPcHRpb25zKHByb3BzLCBzZWxlY3RWYWx1ZSkge1xuICByZXR1cm4gYnVpbGRGb2N1c2FibGVPcHRpb25zRnJvbUNhdGVnb3JpemVkT3B0aW9ucyhidWlsZENhdGVnb3JpemVkT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGlzRm9jdXNhYmxlKHByb3BzLCBjYXRlZ29yaXplZE9wdGlvbikge1xuICB2YXIgX3Byb3BzJGlucHV0VmFsdWUgPSBwcm9wcy5pbnB1dFZhbHVlLFxuICAgIGlucHV0VmFsdWUgPSBfcHJvcHMkaW5wdXRWYWx1ZSA9PT0gdm9pZCAwID8gJycgOiBfcHJvcHMkaW5wdXRWYWx1ZTtcbiAgdmFyIGRhdGEgPSBjYXRlZ29yaXplZE9wdGlvbi5kYXRhLFxuICAgIGlzU2VsZWN0ZWQgPSBjYXRlZ29yaXplZE9wdGlvbi5pc1NlbGVjdGVkLFxuICAgIGxhYmVsID0gY2F0ZWdvcml6ZWRPcHRpb24ubGFiZWwsXG4gICAgdmFsdWUgPSBjYXRlZ29yaXplZE9wdGlvbi52YWx1ZTtcbiAgcmV0dXJuICghc2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyhwcm9wcykgfHwgIWlzU2VsZWN0ZWQpICYmIF9maWx0ZXJPcHRpb24ocHJvcHMsIHtcbiAgICBsYWJlbDogbGFiZWwsXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIGRhdGE6IGRhdGFcbiAgfSwgaW5wdXRWYWx1ZSk7XG59XG5mdW5jdGlvbiBnZXROZXh0Rm9jdXNlZFZhbHVlKHN0YXRlLCBuZXh0U2VsZWN0VmFsdWUpIHtcbiAgdmFyIGZvY3VzZWRWYWx1ZSA9IHN0YXRlLmZvY3VzZWRWYWx1ZSxcbiAgICBsYXN0U2VsZWN0VmFsdWUgPSBzdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgdmFyIGxhc3RGb2N1c2VkSW5kZXggPSBsYXN0U2VsZWN0VmFsdWUuaW5kZXhPZihmb2N1c2VkVmFsdWUpO1xuICBpZiAobGFzdEZvY3VzZWRJbmRleCA+IC0xKSB7XG4gICAgdmFyIG5leHRGb2N1c2VkSW5kZXggPSBuZXh0U2VsZWN0VmFsdWUuaW5kZXhPZihmb2N1c2VkVmFsdWUpO1xuICAgIGlmIChuZXh0Rm9jdXNlZEluZGV4ID4gLTEpIHtcbiAgICAgIC8vIHRoZSBmb2N1c2VkIHZhbHVlIGlzIHN0aWxsIGluIHRoZSBzZWxlY3RWYWx1ZSwgcmV0dXJuIGl0XG4gICAgICByZXR1cm4gZm9jdXNlZFZhbHVlO1xuICAgIH0gZWxzZSBpZiAobGFzdEZvY3VzZWRJbmRleCA8IG5leHRTZWxlY3RWYWx1ZS5sZW5ndGgpIHtcbiAgICAgIC8vIHRoZSBmb2N1c2VkVmFsdWUgaXMgbm90IHByZXNlbnQgaW4gdGhlIG5leHQgc2VsZWN0VmFsdWUgYXJyYXkgYnlcbiAgICAgIC8vIHJlZmVyZW5jZSwgc28gcmV0dXJuIHRoZSBuZXcgdmFsdWUgYXQgdGhlIHNhbWUgaW5kZXhcbiAgICAgIHJldHVybiBuZXh0U2VsZWN0VmFsdWVbbGFzdEZvY3VzZWRJbmRleF07XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gZ2V0TmV4dEZvY3VzZWRPcHRpb24oc3RhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIGxhc3RGb2N1c2VkT3B0aW9uID0gc3RhdGUuZm9jdXNlZE9wdGlvbjtcbiAgcmV0dXJuIGxhc3RGb2N1c2VkT3B0aW9uICYmIG9wdGlvbnMuaW5kZXhPZihsYXN0Rm9jdXNlZE9wdGlvbikgPiAtMSA/IGxhc3RGb2N1c2VkT3B0aW9uIDogb3B0aW9uc1swXTtcbn1cbnZhciBnZXRGb2N1c2VkT3B0aW9uSWQgPSBmdW5jdGlvbiBnZXRGb2N1c2VkT3B0aW9uSWQoZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMsIGZvY3VzZWRPcHRpb24pIHtcbiAgdmFyIF9mb2N1c2FibGVPcHRpb25zV2l0aDtcbiAgdmFyIGZvY3VzZWRPcHRpb25JZCA9IChfZm9jdXNhYmxlT3B0aW9uc1dpdGggPSBmb2N1c2FibGVPcHRpb25zV2l0aElkcy5maW5kKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICByZXR1cm4gb3B0aW9uLmRhdGEgPT09IGZvY3VzZWRPcHRpb247XG4gIH0pKSA9PT0gbnVsbCB8fCBfZm9jdXNhYmxlT3B0aW9uc1dpdGggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9mb2N1c2FibGVPcHRpb25zV2l0aC5pZDtcbiAgcmV0dXJuIGZvY3VzZWRPcHRpb25JZCB8fCBudWxsO1xufTtcbnZhciBnZXRPcHRpb25MYWJlbCA9IGZ1bmN0aW9uIGdldE9wdGlvbkxhYmVsKHByb3BzLCBkYXRhKSB7XG4gIHJldHVybiBwcm9wcy5nZXRPcHRpb25MYWJlbChkYXRhKTtcbn07XG52YXIgZ2V0T3B0aW9uVmFsdWUgPSBmdW5jdGlvbiBnZXRPcHRpb25WYWx1ZShwcm9wcywgZGF0YSkge1xuICByZXR1cm4gcHJvcHMuZ2V0T3B0aW9uVmFsdWUoZGF0YSk7XG59O1xuZnVuY3Rpb24gX2lzT3B0aW9uRGlzYWJsZWQocHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiBwcm9wcy5pc09wdGlvbkRpc2FibGVkID09PSAnZnVuY3Rpb24nID8gcHJvcHMuaXNPcHRpb25EaXNhYmxlZChvcHRpb24sIHNlbGVjdFZhbHVlKSA6IGZhbHNlO1xufVxuZnVuY3Rpb24gX2lzT3B0aW9uU2VsZWN0ZWQocHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpIHtcbiAgaWYgKHNlbGVjdFZhbHVlLmluZGV4T2Yob3B0aW9uKSA+IC0xKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKHR5cGVvZiBwcm9wcy5pc09wdGlvblNlbGVjdGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHByb3BzLmlzT3B0aW9uU2VsZWN0ZWQob3B0aW9uLCBzZWxlY3RWYWx1ZSk7XG4gIH1cbiAgdmFyIGNhbmRpZGF0ZSA9IGdldE9wdGlvblZhbHVlKHByb3BzLCBvcHRpb24pO1xuICByZXR1cm4gc2VsZWN0VmFsdWUuc29tZShmdW5jdGlvbiAoaSkge1xuICAgIHJldHVybiBnZXRPcHRpb25WYWx1ZShwcm9wcywgaSkgPT09IGNhbmRpZGF0ZTtcbiAgfSk7XG59XG5mdW5jdGlvbiBfZmlsdGVyT3B0aW9uKHByb3BzLCBvcHRpb24sIGlucHV0VmFsdWUpIHtcbiAgcmV0dXJuIHByb3BzLmZpbHRlck9wdGlvbiA/IHByb3BzLmZpbHRlck9wdGlvbihvcHRpb24sIGlucHV0VmFsdWUpIDogdHJ1ZTtcbn1cbnZhciBzaG91bGRIaWRlU2VsZWN0ZWRPcHRpb25zID0gZnVuY3Rpb24gc2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyhwcm9wcykge1xuICB2YXIgaGlkZVNlbGVjdGVkT3B0aW9ucyA9IHByb3BzLmhpZGVTZWxlY3RlZE9wdGlvbnMsXG4gICAgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGk7XG4gIGlmIChoaWRlU2VsZWN0ZWRPcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiBpc011bHRpO1xuICByZXR1cm4gaGlkZVNlbGVjdGVkT3B0aW9ucztcbn07XG52YXIgaW5zdGFuY2VJZCA9IDE7XG52YXIgU2VsZWN0ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhTZWxlY3QsIF9Db21wb25lbnQpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFNlbGVjdCk7XG4gIC8vIE1pc2MuIEluc3RhbmNlIFByb3BlcnRpZXNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gVE9ET1xuXG4gIC8vIFJlZnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gTGlmZWN5Y2xlXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGZ1bmN0aW9uIFNlbGVjdChfcHJvcHMpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNlbGVjdCk7XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBfcHJvcHMpO1xuICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgYXJpYVNlbGVjdGlvbjogbnVsbCxcbiAgICAgIGZvY3VzZWRPcHRpb246IG51bGwsXG4gICAgICBmb2N1c2VkT3B0aW9uSWQ6IG51bGwsXG4gICAgICBmb2N1c2FibGVPcHRpb25zV2l0aElkczogW10sXG4gICAgICBmb2N1c2VkVmFsdWU6IG51bGwsXG4gICAgICBpbnB1dElzSGlkZGVuOiBmYWxzZSxcbiAgICAgIGlzRm9jdXNlZDogZmFsc2UsXG4gICAgICBzZWxlY3RWYWx1ZTogW10sXG4gICAgICBjbGVhckZvY3VzVmFsdWVPblVwZGF0ZTogZmFsc2UsXG4gICAgICBwcmV2V2FzRm9jdXNlZDogZmFsc2UsXG4gICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgIHByZXZQcm9wczogdW5kZWZpbmVkLFxuICAgICAgaW5zdGFuY2VQcmVmaXg6ICcnXG4gICAgfTtcbiAgICBfdGhpcy5ibG9ja09wdGlvbkhvdmVyID0gZmFsc2U7XG4gICAgX3RoaXMuaXNDb21wb3NpbmcgPSBmYWxzZTtcbiAgICBfdGhpcy5jb21tb25Qcm9wcyA9IHZvaWQgMDtcbiAgICBfdGhpcy5pbml0aWFsVG91Y2hYID0gMDtcbiAgICBfdGhpcy5pbml0aWFsVG91Y2hZID0gMDtcbiAgICBfdGhpcy5vcGVuQWZ0ZXJGb2N1cyA9IGZhbHNlO1xuICAgIF90aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gZmFsc2U7XG4gICAgX3RoaXMudXNlcklzRHJhZ2dpbmcgPSB2b2lkIDA7XG4gICAgX3RoaXMuaXNBcHBsZURldmljZSA9IGlzQXBwbGVEZXZpY2UoKTtcbiAgICBfdGhpcy5jb250cm9sUmVmID0gbnVsbDtcbiAgICBfdGhpcy5nZXRDb250cm9sUmVmID0gZnVuY3Rpb24gKHJlZikge1xuICAgICAgX3RoaXMuY29udHJvbFJlZiA9IHJlZjtcbiAgICB9O1xuICAgIF90aGlzLmZvY3VzZWRPcHRpb25SZWYgPSBudWxsO1xuICAgIF90aGlzLmdldEZvY3VzZWRPcHRpb25SZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICBfdGhpcy5mb2N1c2VkT3B0aW9uUmVmID0gcmVmO1xuICAgIH07XG4gICAgX3RoaXMubWVudUxpc3RSZWYgPSBudWxsO1xuICAgIF90aGlzLmdldE1lbnVMaXN0UmVmID0gZnVuY3Rpb24gKHJlZikge1xuICAgICAgX3RoaXMubWVudUxpc3RSZWYgPSByZWY7XG4gICAgfTtcbiAgICBfdGhpcy5pbnB1dFJlZiA9IG51bGw7XG4gICAgX3RoaXMuZ2V0SW5wdXRSZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICBfdGhpcy5pbnB1dFJlZiA9IHJlZjtcbiAgICB9O1xuICAgIF90aGlzLmZvY3VzID0gX3RoaXMuZm9jdXNJbnB1dDtcbiAgICBfdGhpcy5ibHVyID0gX3RoaXMuYmx1cklucHV0O1xuICAgIF90aGlzLm9uQ2hhbmdlID0gZnVuY3Rpb24gKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgb25DaGFuZ2UgPSBfdGhpcyRwcm9wcy5vbkNoYW5nZSxcbiAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzLm5hbWU7XG4gICAgICBhY3Rpb25NZXRhLm5hbWUgPSBuYW1lO1xuICAgICAgX3RoaXMuYXJpYU9uQ2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICAgIG9uQ2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICB9O1xuICAgIF90aGlzLnNldFZhbHVlID0gZnVuY3Rpb24gKG5ld1ZhbHVlLCBhY3Rpb24sIG9wdGlvbikge1xuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IF90aGlzLnByb3BzLFxuICAgICAgICBjbG9zZU1lbnVPblNlbGVjdCA9IF90aGlzJHByb3BzMi5jbG9zZU1lbnVPblNlbGVjdCxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzMi5pc011bHRpLFxuICAgICAgICBpbnB1dFZhbHVlID0gX3RoaXMkcHJvcHMyLmlucHV0VmFsdWU7XG4gICAgICBfdGhpcy5vbklucHV0Q2hhbmdlKCcnLCB7XG4gICAgICAgIGFjdGlvbjogJ3NldC12YWx1ZScsXG4gICAgICAgIHByZXZJbnB1dFZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICB9KTtcbiAgICAgIGlmIChjbG9zZU1lbnVPblNlbGVjdCkge1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlOiAhaXNNdWx0aVxuICAgICAgICB9KTtcbiAgICAgICAgX3RoaXMub25NZW51Q2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIC8vIHdoZW4gdGhlIHNlbGVjdCB2YWx1ZSBzaG91bGQgY2hhbmdlLCB3ZSBzaG91bGQgcmVzZXQgZm9jdXNlZFZhbHVlXG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGNsZWFyRm9jdXNWYWx1ZU9uVXBkYXRlOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIF90aGlzLm9uQ2hhbmdlKG5ld1ZhbHVlLCB7XG4gICAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgICBvcHRpb246IG9wdGlvblxuICAgICAgfSk7XG4gICAgfTtcbiAgICBfdGhpcy5zZWxlY3RPcHRpb24gPSBmdW5jdGlvbiAobmV3VmFsdWUpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgYmx1cklucHV0T25TZWxlY3QgPSBfdGhpcyRwcm9wczMuYmx1cklucHV0T25TZWxlY3QsXG4gICAgICAgIGlzTXVsdGkgPSBfdGhpcyRwcm9wczMuaXNNdWx0aSxcbiAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzMy5uYW1lO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICB2YXIgZGVzZWxlY3RlZCA9IGlzTXVsdGkgJiYgX3RoaXMuaXNPcHRpb25TZWxlY3RlZChuZXdWYWx1ZSwgc2VsZWN0VmFsdWUpO1xuICAgICAgdmFyIGlzRGlzYWJsZWQgPSBfdGhpcy5pc09wdGlvbkRpc2FibGVkKG5ld1ZhbHVlLCBzZWxlY3RWYWx1ZSk7XG4gICAgICBpZiAoZGVzZWxlY3RlZCkge1xuICAgICAgICB2YXIgY2FuZGlkYXRlID0gX3RoaXMuZ2V0T3B0aW9uVmFsdWUobmV3VmFsdWUpO1xuICAgICAgICBfdGhpcy5zZXRWYWx1ZShtdWx0aVZhbHVlQXNWYWx1ZShzZWxlY3RWYWx1ZS5maWx0ZXIoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuZ2V0T3B0aW9uVmFsdWUoaSkgIT09IGNhbmRpZGF0ZTtcbiAgICAgICAgfSkpLCAnZGVzZWxlY3Qtb3B0aW9uJywgbmV3VmFsdWUpO1xuICAgICAgfSBlbHNlIGlmICghaXNEaXNhYmxlZCkge1xuICAgICAgICAvLyBTZWxlY3Qgb3B0aW9uIGlmIG9wdGlvbiBpcyBub3QgZGlzYWJsZWRcbiAgICAgICAgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgICBfdGhpcy5zZXRWYWx1ZShtdWx0aVZhbHVlQXNWYWx1ZShbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHNlbGVjdFZhbHVlKSwgW25ld1ZhbHVlXSkpLCAnc2VsZWN0LW9wdGlvbicsIG5ld1ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpcy5zZXRWYWx1ZShzaW5nbGVWYWx1ZUFzVmFsdWUobmV3VmFsdWUpLCAnc2VsZWN0LW9wdGlvbicpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfdGhpcy5hcmlhT25DaGFuZ2Uoc2luZ2xlVmFsdWVBc1ZhbHVlKG5ld1ZhbHVlKSwge1xuICAgICAgICAgIGFjdGlvbjogJ3NlbGVjdC1vcHRpb24nLFxuICAgICAgICAgIG9wdGlvbjogbmV3VmFsdWUsXG4gICAgICAgICAgbmFtZTogbmFtZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGJsdXJJbnB1dE9uU2VsZWN0KSB7XG4gICAgICAgIF90aGlzLmJsdXJJbnB1dCgpO1xuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMucmVtb3ZlVmFsdWUgPSBmdW5jdGlvbiAocmVtb3ZlZFZhbHVlKSB7XG4gICAgICB2YXIgaXNNdWx0aSA9IF90aGlzLnByb3BzLmlzTXVsdGk7XG4gICAgICB2YXIgc2VsZWN0VmFsdWUgPSBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIHZhciBjYW5kaWRhdGUgPSBfdGhpcy5nZXRPcHRpb25WYWx1ZShyZW1vdmVkVmFsdWUpO1xuICAgICAgdmFyIG5ld1ZhbHVlQXJyYXkgPSBzZWxlY3RWYWx1ZS5maWx0ZXIoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLmdldE9wdGlvblZhbHVlKGkpICE9PSBjYW5kaWRhdGU7XG4gICAgICB9KTtcbiAgICAgIHZhciBuZXdWYWx1ZSA9IHZhbHVlVGVybmFyeShpc011bHRpLCBuZXdWYWx1ZUFycmF5LCBuZXdWYWx1ZUFycmF5WzBdIHx8IG51bGwpO1xuICAgICAgX3RoaXMub25DaGFuZ2UobmV3VmFsdWUsIHtcbiAgICAgICAgYWN0aW9uOiAncmVtb3ZlLXZhbHVlJyxcbiAgICAgICAgcmVtb3ZlZFZhbHVlOiByZW1vdmVkVmFsdWVcbiAgICAgIH0pO1xuICAgICAgX3RoaXMuZm9jdXNJbnB1dCgpO1xuICAgIH07XG4gICAgX3RoaXMuY2xlYXJWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBzZWxlY3RWYWx1ZSA9IF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlO1xuICAgICAgX3RoaXMub25DaGFuZ2UodmFsdWVUZXJuYXJ5KF90aGlzLnByb3BzLmlzTXVsdGksIFtdLCBudWxsKSwge1xuICAgICAgICBhY3Rpb246ICdjbGVhcicsXG4gICAgICAgIHJlbW92ZWRWYWx1ZXM6IHNlbGVjdFZhbHVlXG4gICAgICB9KTtcbiAgICB9O1xuICAgIF90aGlzLnBvcFZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGlzTXVsdGkgPSBfdGhpcy5wcm9wcy5pc011bHRpO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICB2YXIgbGFzdFNlbGVjdGVkVmFsdWUgPSBzZWxlY3RWYWx1ZVtzZWxlY3RWYWx1ZS5sZW5ndGggLSAxXTtcbiAgICAgIHZhciBuZXdWYWx1ZUFycmF5ID0gc2VsZWN0VmFsdWUuc2xpY2UoMCwgc2VsZWN0VmFsdWUubGVuZ3RoIC0gMSk7XG4gICAgICB2YXIgbmV3VmFsdWUgPSB2YWx1ZVRlcm5hcnkoaXNNdWx0aSwgbmV3VmFsdWVBcnJheSwgbmV3VmFsdWVBcnJheVswXSB8fCBudWxsKTtcbiAgICAgIGlmIChsYXN0U2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICBfdGhpcy5vbkNoYW5nZShuZXdWYWx1ZSwge1xuICAgICAgICAgIGFjdGlvbjogJ3BvcC12YWx1ZScsXG4gICAgICAgICAgcmVtb3ZlZFZhbHVlOiBsYXN0U2VsZWN0ZWRWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLmdldEZvY3VzZWRPcHRpb25JZCA9IGZ1bmN0aW9uIChmb2N1c2VkT3B0aW9uKSB7XG4gICAgICByZXR1cm4gZ2V0Rm9jdXNlZE9wdGlvbklkKF90aGlzLnN0YXRlLmZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLCBmb2N1c2VkT3B0aW9uKTtcbiAgICB9O1xuICAgIF90aGlzLmdldEZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGJ1aWxkRm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMoYnVpbGRDYXRlZ29yaXplZE9wdGlvbnMoX3RoaXMucHJvcHMsIF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlKSwgX3RoaXMuZ2V0RWxlbWVudElkKCdvcHRpb24nKSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICB9O1xuICAgIF90aGlzLmN4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG4gICAgICByZXR1cm4gY2xhc3NOYW1lcy5hcHBseSh2b2lkIDAsIFtfdGhpcy5wcm9wcy5jbGFzc05hbWVQcmVmaXhdLmNvbmNhdChhcmdzKSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRPcHRpb25MYWJlbCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICByZXR1cm4gZ2V0T3B0aW9uTGFiZWwoX3RoaXMucHJvcHMsIGRhdGEpO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0T3B0aW9uVmFsdWUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgcmV0dXJuIGdldE9wdGlvblZhbHVlKF90aGlzLnByb3BzLCBkYXRhKTtcbiAgICB9O1xuICAgIF90aGlzLmdldFN0eWxlcyA9IGZ1bmN0aW9uIChrZXksIHByb3BzKSB7XG4gICAgICB2YXIgdW5zdHlsZWQgPSBfdGhpcy5wcm9wcy51bnN0eWxlZDtcbiAgICAgIHZhciBiYXNlID0gZGVmYXVsdFN0eWxlc1trZXldKHByb3BzLCB1bnN0eWxlZCk7XG4gICAgICBiYXNlLmJveFNpemluZyA9ICdib3JkZXItYm94JztcbiAgICAgIHZhciBjdXN0b20gPSBfdGhpcy5wcm9wcy5zdHlsZXNba2V5XTtcbiAgICAgIHJldHVybiBjdXN0b20gPyBjdXN0b20oYmFzZSwgcHJvcHMpIDogYmFzZTtcbiAgICB9O1xuICAgIF90aGlzLmdldENsYXNzTmFtZXMgPSBmdW5jdGlvbiAoa2V5LCBwcm9wcykge1xuICAgICAgdmFyIF90aGlzJHByb3BzJGNsYXNzTmFtZSwgX3RoaXMkcHJvcHMkY2xhc3NOYW1lMjtcbiAgICAgIHJldHVybiAoX3RoaXMkcHJvcHMkY2xhc3NOYW1lID0gKF90aGlzJHByb3BzJGNsYXNzTmFtZTIgPSBfdGhpcy5wcm9wcy5jbGFzc05hbWVzKVtrZXldKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRjbGFzc05hbWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGNsYXNzTmFtZS5jYWxsKF90aGlzJHByb3BzJGNsYXNzTmFtZTIsIHByb3BzKTtcbiAgICB9O1xuICAgIF90aGlzLmdldEVsZW1lbnRJZCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gXCJcIi5jb25jYXQoX3RoaXMuc3RhdGUuaW5zdGFuY2VQcmVmaXgsIFwiLVwiKS5jb25jYXQoZWxlbWVudCk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRDb21wb25lbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGRlZmF1bHRDb21wb25lbnRzKF90aGlzLnByb3BzKTtcbiAgICB9O1xuICAgIF90aGlzLmJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKF90aGlzLnByb3BzLCBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRDYXRlZ29yaXplZE9wdGlvbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMucHJvcHMubWVudUlzT3BlbiA/IF90aGlzLmJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKCkgOiBbXTtcbiAgICB9O1xuICAgIF90aGlzLmJ1aWxkRm9jdXNhYmxlT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBidWlsZEZvY3VzYWJsZU9wdGlvbnNGcm9tQ2F0ZWdvcml6ZWRPcHRpb25zKF90aGlzLmJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKCkpO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5wcm9wcy5tZW51SXNPcGVuID8gX3RoaXMuYnVpbGRGb2N1c2FibGVPcHRpb25zKCkgOiBbXTtcbiAgICB9O1xuICAgIF90aGlzLmFyaWFPbkNoYW5nZSA9IGZ1bmN0aW9uICh2YWx1ZSwgYWN0aW9uTWV0YSkge1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBhcmlhU2VsZWN0aW9uOiBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgfSwgYWN0aW9uTWV0YSlcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMub25NZW51TW91c2VEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIF90aGlzLmZvY3VzSW5wdXQoKTtcbiAgICB9O1xuICAgIF90aGlzLm9uTWVudU1vdXNlTW92ZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgX3RoaXMuYmxvY2tPcHRpb25Ib3ZlciA9IGZhbHNlO1xuICAgIH07XG4gICAgX3RoaXMub25Db250cm9sTW91c2VEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAvLyBFdmVudCBjYXB0dXJlZCBieSBkcm9wZG93biBpbmRpY2F0b3JcbiAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBvcGVuTWVudU9uQ2xpY2sgPSBfdGhpcy5wcm9wcy5vcGVuTWVudU9uQ2xpY2s7XG4gICAgICBpZiAoIV90aGlzLnN0YXRlLmlzRm9jdXNlZCkge1xuICAgICAgICBpZiAob3Blbk1lbnVPbkNsaWNrKSB7XG4gICAgICAgICAgX3RoaXMub3BlbkFmdGVyRm9jdXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIF90aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgIH0gZWxzZSBpZiAoIV90aGlzLnByb3BzLm1lbnVJc09wZW4pIHtcbiAgICAgICAgaWYgKG9wZW5NZW51T25DbGljaykge1xuICAgICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdURVhUQVJFQScpIHtcbiAgICAgICAgICBfdGhpcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdURVhUQVJFQScpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JNb3VzZURvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIC8vIGlnbm9yZSBtb3VzZSBldmVudHMgdGhhdCB3ZXJlbid0IHRyaWdnZXJlZCBieSB0aGUgcHJpbWFyeSBidXR0b25cbiAgICAgIGlmIChldmVudCAmJiBldmVudC50eXBlID09PSAnbW91c2Vkb3duJyAmJiBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKF90aGlzLnByb3BzLmlzRGlzYWJsZWQpIHJldHVybjtcbiAgICAgIHZhciBfdGhpcyRwcm9wczQgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzNC5pc011bHRpLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHM0Lm1lbnVJc09wZW47XG4gICAgICBfdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlOiAhaXNNdWx0aVxuICAgICAgICB9KTtcbiAgICAgICAgX3RoaXMub25NZW51Q2xvc2UoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgfVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuICAgIF90aGlzLm9uQ2xlYXJJbmRpY2F0b3JNb3VzZURvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIC8vIGlnbm9yZSBtb3VzZSBldmVudHMgdGhhdCB3ZXJlbid0IHRyaWdnZXJlZCBieSB0aGUgcHJpbWFyeSBidXR0b25cbiAgICAgIGlmIChldmVudCAmJiBldmVudC50eXBlID09PSAnbW91c2Vkb3duJyAmJiBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgX3RoaXMuY2xlYXJWYWx1ZSgpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIF90aGlzLm9wZW5BZnRlckZvY3VzID0gZmFsc2U7XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3RvdWNoZW5kJykge1xuICAgICAgICBfdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uU2Nyb2xsID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAodHlwZW9mIF90aGlzLnByb3BzLmNsb3NlTWVudU9uU2Nyb2xsID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIGlzRG9jdW1lbnRFbGVtZW50KGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICBfdGhpcy5wcm9wcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBfdGhpcy5wcm9wcy5jbG9zZU1lbnVPblNjcm9sbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBpZiAoX3RoaXMucHJvcHMuY2xvc2VNZW51T25TY3JvbGwoZXZlbnQpKSB7XG4gICAgICAgICAgX3RoaXMucHJvcHMub25NZW51Q2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMub25Db21wb3NpdGlvblN0YXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuaXNDb21wb3NpbmcgPSB0cnVlO1xuICAgIH07XG4gICAgX3RoaXMub25Db21wb3NpdGlvbkVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLmlzQ29tcG9zaW5nID0gZmFsc2U7XG4gICAgfTtcbiAgICBfdGhpcy5vblRvdWNoU3RhcnQgPSBmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgIHZhciB0b3VjaGVzID0gX3JlZjIudG91Y2hlcztcbiAgICAgIHZhciB0b3VjaCA9IHRvdWNoZXMgJiYgdG91Y2hlcy5pdGVtKDApO1xuICAgICAgaWYgKCF0b3VjaCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBfdGhpcy5pbml0aWFsVG91Y2hYID0gdG91Y2guY2xpZW50WDtcbiAgICAgIF90aGlzLmluaXRpYWxUb3VjaFkgPSB0b3VjaC5jbGllbnRZO1xuICAgICAgX3RoaXMudXNlcklzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB9O1xuICAgIF90aGlzLm9uVG91Y2hNb3ZlID0gZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICB2YXIgdG91Y2hlcyA9IF9yZWYzLnRvdWNoZXM7XG4gICAgICB2YXIgdG91Y2ggPSB0b3VjaGVzICYmIHRvdWNoZXMuaXRlbSgwKTtcbiAgICAgIGlmICghdG91Y2gpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIGRlbHRhWCA9IE1hdGguYWJzKHRvdWNoLmNsaWVudFggLSBfdGhpcy5pbml0aWFsVG91Y2hYKTtcbiAgICAgIHZhciBkZWx0YVkgPSBNYXRoLmFicyh0b3VjaC5jbGllbnRZIC0gX3RoaXMuaW5pdGlhbFRvdWNoWSk7XG4gICAgICB2YXIgbW92ZVRocmVzaG9sZCA9IDU7XG4gICAgICBfdGhpcy51c2VySXNEcmFnZ2luZyA9IGRlbHRhWCA+IG1vdmVUaHJlc2hvbGQgfHwgZGVsdGFZID4gbW92ZVRocmVzaG9sZDtcbiAgICB9O1xuICAgIF90aGlzLm9uVG91Y2hFbmQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChfdGhpcy51c2VySXNEcmFnZ2luZykgcmV0dXJuO1xuXG4gICAgICAvLyBjbG9zZSB0aGUgbWVudSBpZiB0aGUgdXNlciB0YXBzIG91dHNpZGVcbiAgICAgIC8vIHdlJ3JlIGNoZWNraW5nIG9uIGV2ZW50LnRhcmdldCBoZXJlIGluc3RlYWQgb2YgZXZlbnQuY3VycmVudFRhcmdldCwgYmVjYXVzZSB3ZSB3YW50IHRvIGFzc2VydCBpbmZvcm1hdGlvblxuICAgICAgLy8gb24gZXZlbnRzIG9uIGNoaWxkIGVsZW1lbnRzLCBub3QgdGhlIGRvY3VtZW50ICh3aGljaCB3ZSd2ZSBhdHRhY2hlZCB0aGlzIGhhbmRsZXIgdG8pLlxuICAgICAgaWYgKF90aGlzLmNvbnRyb2xSZWYgJiYgIV90aGlzLmNvbnRyb2xSZWYuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJiBfdGhpcy5tZW51TGlzdFJlZiAmJiAhX3RoaXMubWVudUxpc3RSZWYuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICBfdGhpcy5ibHVySW5wdXQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gcmVzZXQgbW92ZSB2YXJzXG4gICAgICBfdGhpcy5pbml0aWFsVG91Y2hYID0gMDtcbiAgICAgIF90aGlzLmluaXRpYWxUb3VjaFkgPSAwO1xuICAgIH07XG4gICAgX3RoaXMub25Db250cm9sVG91Y2hFbmQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChfdGhpcy51c2VySXNEcmFnZ2luZykgcmV0dXJuO1xuICAgICAgX3RoaXMub25Db250cm9sTW91c2VEb3duKGV2ZW50KTtcbiAgICB9O1xuICAgIF90aGlzLm9uQ2xlYXJJbmRpY2F0b3JUb3VjaEVuZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnVzZXJJc0RyYWdnaW5nKSByZXR1cm47XG4gICAgICBfdGhpcy5vbkNsZWFySW5kaWNhdG9yTW91c2VEb3duKGV2ZW50KTtcbiAgICB9O1xuICAgIF90aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JUb3VjaEVuZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnVzZXJJc0RyYWdnaW5nKSByZXR1cm47XG4gICAgICBfdGhpcy5vbkRyb3Bkb3duSW5kaWNhdG9yTW91c2VEb3duKGV2ZW50KTtcbiAgICB9O1xuICAgIF90aGlzLmhhbmRsZUlucHV0Q2hhbmdlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgcHJldklucHV0VmFsdWUgPSBfdGhpcy5wcm9wcy5pbnB1dFZhbHVlO1xuICAgICAgdmFyIGlucHV0VmFsdWUgPSBldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlO1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoaW5wdXRWYWx1ZSwge1xuICAgICAgICBhY3Rpb246ICdpbnB1dC1jaGFuZ2UnLFxuICAgICAgICBwcmV2SW5wdXRWYWx1ZTogcHJldklucHV0VmFsdWVcbiAgICAgIH0pO1xuICAgICAgaWYgKCFfdGhpcy5wcm9wcy5tZW51SXNPcGVuKSB7XG4gICAgICAgIF90aGlzLm9uTWVudU9wZW4oKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uSW5wdXRGb2N1cyA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnByb3BzLm9uRm9jdXMpIHtcbiAgICAgICAgX3RoaXMucHJvcHMub25Gb2N1cyhldmVudCk7XG4gICAgICB9XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogZmFsc2UsXG4gICAgICAgIGlzRm9jdXNlZDogdHJ1ZVxuICAgICAgfSk7XG4gICAgICBpZiAoX3RoaXMub3BlbkFmdGVyRm9jdXMgfHwgX3RoaXMucHJvcHMub3Blbk1lbnVPbkZvY3VzKSB7XG4gICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgfVxuICAgICAgX3RoaXMub3BlbkFmdGVyRm9jdXMgPSBmYWxzZTtcbiAgICB9O1xuICAgIF90aGlzLm9uSW5wdXRCbHVyID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgcHJldklucHV0VmFsdWUgPSBfdGhpcy5wcm9wcy5pbnB1dFZhbHVlO1xuICAgICAgaWYgKF90aGlzLm1lbnVMaXN0UmVmICYmIF90aGlzLm1lbnVMaXN0UmVmLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgIF90aGlzLmlucHV0UmVmLmZvY3VzKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChfdGhpcy5wcm9wcy5vbkJsdXIpIHtcbiAgICAgICAgX3RoaXMucHJvcHMub25CbHVyKGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoJycsIHtcbiAgICAgICAgYWN0aW9uOiAnaW5wdXQtYmx1cicsXG4gICAgICAgIHByZXZJbnB1dFZhbHVlOiBwcmV2SW5wdXRWYWx1ZVxuICAgICAgfSk7XG4gICAgICBfdGhpcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkVmFsdWU6IG51bGwsXG4gICAgICAgIGlzRm9jdXNlZDogZmFsc2VcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMub25PcHRpb25Ib3ZlciA9IGZ1bmN0aW9uIChmb2N1c2VkT3B0aW9uKSB7XG4gICAgICBpZiAoX3RoaXMuYmxvY2tPcHRpb25Ib3ZlciB8fCBfdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uID09PSBmb2N1c2VkT3B0aW9uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBvcHRpb25zID0gX3RoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgdmFyIGZvY3VzZWRPcHRpb25JbmRleCA9IG9wdGlvbnMuaW5kZXhPZihmb2N1c2VkT3B0aW9uKTtcbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNlZE9wdGlvbixcbiAgICAgICAgZm9jdXNlZE9wdGlvbklkOiBmb2N1c2VkT3B0aW9uSW5kZXggPiAtMSA/IF90aGlzLmdldEZvY3VzZWRPcHRpb25JZChmb2N1c2VkT3B0aW9uKSA6IG51bGxcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMuc2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBzaG91bGRIaWRlU2VsZWN0ZWRPcHRpb25zKF90aGlzLnByb3BzKTtcbiAgICB9O1xuICAgIF90aGlzLm9uVmFsdWVJbnB1dEZvY3VzID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBfdGhpcy5mb2N1cygpO1xuICAgIH07XG4gICAgX3RoaXMub25LZXlEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM1ID0gX3RoaXMucHJvcHMsXG4gICAgICAgIGlzTXVsdGkgPSBfdGhpcyRwcm9wczUuaXNNdWx0aSxcbiAgICAgICAgYmFja3NwYWNlUmVtb3Zlc1ZhbHVlID0gX3RoaXMkcHJvcHM1LmJhY2tzcGFjZVJlbW92ZXNWYWx1ZSxcbiAgICAgICAgZXNjYXBlQ2xlYXJzVmFsdWUgPSBfdGhpcyRwcm9wczUuZXNjYXBlQ2xlYXJzVmFsdWUsXG4gICAgICAgIGlucHV0VmFsdWUgPSBfdGhpcyRwcm9wczUuaW5wdXRWYWx1ZSxcbiAgICAgICAgaXNDbGVhcmFibGUgPSBfdGhpcyRwcm9wczUuaXNDbGVhcmFibGUsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczUuaXNEaXNhYmxlZCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzNS5tZW51SXNPcGVuLFxuICAgICAgICBvbktleURvd24gPSBfdGhpcyRwcm9wczUub25LZXlEb3duLFxuICAgICAgICB0YWJTZWxlY3RzVmFsdWUgPSBfdGhpcyRwcm9wczUudGFiU2VsZWN0c1ZhbHVlLFxuICAgICAgICBvcGVuTWVudU9uRm9jdXMgPSBfdGhpcyRwcm9wczUub3Blbk1lbnVPbkZvY3VzO1xuICAgICAgdmFyIF90aGlzJHN0YXRlID0gX3RoaXMuc3RhdGUsXG4gICAgICAgIGZvY3VzZWRPcHRpb24gPSBfdGhpcyRzdGF0ZS5mb2N1c2VkT3B0aW9uLFxuICAgICAgICBmb2N1c2VkVmFsdWUgPSBfdGhpcyRzdGF0ZS5mb2N1c2VkVmFsdWUsXG4gICAgICAgIHNlbGVjdFZhbHVlID0gX3RoaXMkc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICBpZiAoaXNEaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgaWYgKHR5cGVvZiBvbktleURvd24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb25LZXlEb3duKGV2ZW50KTtcbiAgICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQmxvY2sgb3B0aW9uIGhvdmVyIGV2ZW50cyB3aGVuIHRoZSB1c2VyIGhhcyBqdXN0IHByZXNzZWQgYSBrZXlcbiAgICAgIF90aGlzLmJsb2NrT3B0aW9uSG92ZXIgPSB0cnVlO1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICBpZiAoIWlzTXVsdGkgfHwgaW5wdXRWYWx1ZSkgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzVmFsdWUoJ3ByZXZpb3VzJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgIGlmICghaXNNdWx0aSB8fCBpbnB1dFZhbHVlKSByZXR1cm47XG4gICAgICAgICAgX3RoaXMuZm9jdXNWYWx1ZSgnbmV4dCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgICAgIGlmIChpbnB1dFZhbHVlKSByZXR1cm47XG4gICAgICAgICAgaWYgKGZvY3VzZWRWYWx1ZSkge1xuICAgICAgICAgICAgX3RoaXMucmVtb3ZlVmFsdWUoZm9jdXNlZFZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFiYWNrc3BhY2VSZW1vdmVzVmFsdWUpIHJldHVybjtcbiAgICAgICAgICAgIGlmIChpc011bHRpKSB7XG4gICAgICAgICAgICAgIF90aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzQ2xlYXJhYmxlKSB7XG4gICAgICAgICAgICAgIF90aGlzLmNsZWFyVmFsdWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgICAgaWYgKF90aGlzLmlzQ29tcG9zaW5nKSByZXR1cm47XG4gICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5IHx8ICFtZW51SXNPcGVuIHx8ICF0YWJTZWxlY3RzVmFsdWUgfHwgIWZvY3VzZWRPcHRpb24gfHxcbiAgICAgICAgICAvLyBkb24ndCBjYXB0dXJlIHRoZSBldmVudCBpZiB0aGUgbWVudSBvcGVucyBvbiBmb2N1cyBhbmQgdGhlIGZvY3VzZWRcbiAgICAgICAgICAvLyBvcHRpb24gaXMgYWxyZWFkeSBzZWxlY3RlZDsgaXQgYnJlYWtzIHRoZSBmbG93IG9mIG5hdmlnYXRpb25cbiAgICAgICAgICBvcGVuTWVudU9uRm9jdXMgJiYgX3RoaXMuaXNPcHRpb25TZWxlY3RlZChmb2N1c2VkT3B0aW9uLCBzZWxlY3RWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgX3RoaXMuc2VsZWN0T3B0aW9uKGZvY3VzZWRPcHRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDIyOSkge1xuICAgICAgICAgICAgLy8gaWdub3JlIHRoZSBrZXlkb3duIGV2ZW50IGZyb20gYW4gSW5wdXQgTWV0aG9kIEVkaXRvcihJTUUpXG4gICAgICAgICAgICAvLyByZWYuIGh0dHBzOi8vd3d3LnczLm9yZy9UUi91aWV2ZW50cy8jZGV0ZXJtaW5lLWtleWRvd24ta2V5dXAta2V5Q29kZVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtZW51SXNPcGVuKSB7XG4gICAgICAgICAgICBpZiAoIWZvY3VzZWRPcHRpb24pIHJldHVybjtcbiAgICAgICAgICAgIGlmIChfdGhpcy5pc0NvbXBvc2luZykgcmV0dXJuO1xuICAgICAgICAgICAgX3RoaXMuc2VsZWN0T3B0aW9uKGZvY3VzZWRPcHRpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoJycsIHtcbiAgICAgICAgICAgICAgYWN0aW9uOiAnbWVudS1jbG9zZScsXG4gICAgICAgICAgICAgIHByZXZJbnB1dFZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIF90aGlzLm9uTWVudUNsb3NlKCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0NsZWFyYWJsZSAmJiBlc2NhcGVDbGVhcnNWYWx1ZSkge1xuICAgICAgICAgICAgX3RoaXMuY2xlYXJWYWx1ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnICc6XG4gICAgICAgICAgLy8gc3BhY2VcbiAgICAgICAgICBpZiAoaW5wdXRWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIW1lbnVJc09wZW4pIHtcbiAgICAgICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZm9jdXNlZE9wdGlvbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLnNlbGVjdE9wdGlvbihmb2N1c2VkT3B0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgaWYgKG1lbnVJc09wZW4pIHtcbiAgICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCd1cCcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfdGhpcy5vcGVuTWVudSgnbGFzdCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICAgICAgX3RoaXMuZm9jdXNPcHRpb24oJ2Rvd24nKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgX3RoaXMub3Blbk1lbnUoJ2ZpcnN0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdQYWdlVXAnOlxuICAgICAgICAgIGlmICghbWVudUlzT3BlbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCdwYWdldXAnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUGFnZURvd24nOlxuICAgICAgICAgIGlmICghbWVudUlzT3BlbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCdwYWdlZG93bicpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgICBpZiAoIW1lbnVJc09wZW4pIHJldHVybjtcbiAgICAgICAgICBfdGhpcy5mb2N1c09wdGlvbignZmlyc3QnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRW5kJzpcbiAgICAgICAgICBpZiAoIW1lbnVJc09wZW4pIHJldHVybjtcbiAgICAgICAgICBfdGhpcy5mb2N1c09wdGlvbignbGFzdCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfTtcbiAgICBfdGhpcy5zdGF0ZS5pbnN0YW5jZVByZWZpeCA9ICdyZWFjdC1zZWxlY3QtJyArIChfdGhpcy5wcm9wcy5pbnN0YW5jZUlkIHx8ICsraW5zdGFuY2VJZCk7XG4gICAgX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWUgPSBjbGVhblZhbHVlKF9wcm9wcy52YWx1ZSk7XG4gICAgLy8gU2V0IGZvY3VzZWRPcHRpb24gaWYgbWVudUlzT3BlbiBpcyBzZXQgb24gaW5pdCAoZS5nLiBkZWZhdWx0TWVudUlzT3BlbilcbiAgICBpZiAoX3Byb3BzLm1lbnVJc09wZW4gJiYgX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWUubGVuZ3RoKSB7XG4gICAgICB2YXIgZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMgPSBfdGhpcy5nZXRGb2N1c2FibGVPcHRpb25zV2l0aElkcygpO1xuICAgICAgdmFyIGZvY3VzYWJsZU9wdGlvbnMgPSBfdGhpcy5idWlsZEZvY3VzYWJsZU9wdGlvbnMoKTtcbiAgICAgIHZhciBvcHRpb25JbmRleCA9IGZvY3VzYWJsZU9wdGlvbnMuaW5kZXhPZihfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZVswXSk7XG4gICAgICBfdGhpcy5zdGF0ZS5mb2N1c2FibGVPcHRpb25zV2l0aElkcyA9IGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzO1xuICAgICAgX3RoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbiA9IGZvY3VzYWJsZU9wdGlvbnNbb3B0aW9uSW5kZXhdO1xuICAgICAgX3RoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbklkID0gZ2V0Rm9jdXNlZE9wdGlvbklkKGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLCBmb2N1c2FibGVPcHRpb25zW29wdGlvbkluZGV4XSk7XG4gICAgfVxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoU2VsZWN0LCBbe1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIHRoaXMuc3RhcnRMaXN0ZW5pbmdDb21wb3NpdGlvbigpO1xuICAgICAgdGhpcy5zdGFydExpc3RlbmluZ1RvVG91Y2goKTtcbiAgICAgIGlmICh0aGlzLnByb3BzLmNsb3NlTWVudU9uU2Nyb2xsICYmIGRvY3VtZW50ICYmIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgLy8gTGlzdGVuIHRvIGFsbCBzY3JvbGwgZXZlbnRzLCBhbmQgZmlsdGVyIHRoZW0gb3V0IGluc2lkZSBvZiAnb25TY3JvbGwnXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucHJvcHMuYXV0b0ZvY3VzKSB7XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBTY3JvbGwgZm9jdXNlZE9wdGlvbiBpbnRvIHZpZXcgaWYgbWVudUlzT3BlbiBpcyBzZXQgb24gbW91bnQgKGUuZy4gZGVmYXVsdE1lbnVJc09wZW4pXG4gICAgICBpZiAodGhpcy5wcm9wcy5tZW51SXNPcGVuICYmIHRoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbiAmJiB0aGlzLm1lbnVMaXN0UmVmICYmIHRoaXMuZm9jdXNlZE9wdGlvblJlZikge1xuICAgICAgICBzY3JvbGxJbnRvVmlldyh0aGlzLm1lbnVMaXN0UmVmLCB0aGlzLmZvY3VzZWRPcHRpb25SZWYpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnREaWRVcGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgICAgdmFyIF90aGlzJHByb3BzNiA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczYuaXNEaXNhYmxlZCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzNi5tZW51SXNPcGVuO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgaWYgKFxuICAgICAgLy8gZW5zdXJlIGZvY3VzIGlzIHJlc3RvcmVkIGNvcnJlY3RseSB3aGVuIHRoZSBjb250cm9sIGJlY29tZXMgZW5hYmxlZFxuICAgICAgaXNGb2N1c2VkICYmICFpc0Rpc2FibGVkICYmIHByZXZQcm9wcy5pc0Rpc2FibGVkIHx8XG4gICAgICAvLyBlbnN1cmUgZm9jdXMgaXMgb24gdGhlIElucHV0IHdoZW4gdGhlIG1lbnUgb3BlbnNcbiAgICAgIGlzRm9jdXNlZCAmJiBtZW51SXNPcGVuICYmICFwcmV2UHJvcHMubWVudUlzT3Blbikge1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0ZvY3VzZWQgJiYgaXNEaXNhYmxlZCAmJiAhcHJldlByb3BzLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgLy8gZW5zdXJlIHNlbGVjdCBzdGF0ZSBnZXRzIGJsdXJyZWQgaW4gY2FzZSBTZWxlY3QgaXMgcHJvZ3JhbW1hdGljYWxseSBkaXNhYmxlZCB3aGlsZSBmb2N1c2VkXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1kaWQtdXBkYXRlLXNldC1zdGF0ZVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBpc0ZvY3VzZWQ6IGZhbHNlXG4gICAgICAgIH0sIHRoaXMub25NZW51Q2xvc2UpO1xuICAgICAgfSBlbHNlIGlmICghaXNGb2N1c2VkICYmICFpc0Rpc2FibGVkICYmIHByZXZQcm9wcy5pc0Rpc2FibGVkICYmIHRoaXMuaW5wdXRSZWYgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgLy8gZW5zdXJlIHNlbGVjdCBzdGF0ZSBnZXRzIGZvY3VzZWQgaW4gY2FzZSBTZWxlY3QgaXMgcHJvZ3JhbWF0aWNhbGx5IHJlLWVuYWJsZWQgd2hpbGUgZm9jdXNlZCAoRmlyZWZveClcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWRpZC11cGRhdGUtc2V0LXN0YXRlXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGlzRm9jdXNlZDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gc2Nyb2xsIHRoZSBmb2N1c2VkIG9wdGlvbiBpbnRvIHZpZXcgaWYgbmVjZXNzYXJ5XG4gICAgICBpZiAodGhpcy5tZW51TGlzdFJlZiAmJiB0aGlzLmZvY3VzZWRPcHRpb25SZWYgJiYgdGhpcy5zY3JvbGxUb0ZvY3VzZWRPcHRpb25PblVwZGF0ZSkge1xuICAgICAgICBzY3JvbGxJbnRvVmlldyh0aGlzLm1lbnVMaXN0UmVmLCB0aGlzLmZvY3VzZWRPcHRpb25SZWYpO1xuICAgICAgICB0aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nQ29tcG9zaXRpb24oKTtcbiAgICAgIHRoaXMuc3RvcExpc3RlbmluZ1RvVG91Y2goKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIENvbnN1bWVyIEhhbmRsZXJzXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIH0sIHtcbiAgICBrZXk6IFwib25NZW51T3BlblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbk1lbnVPcGVuKCkge1xuICAgICAgdGhpcy5wcm9wcy5vbk1lbnVPcGVuKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uTWVudUNsb3NlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uTWVudUNsb3NlKCkge1xuICAgICAgdGhpcy5vbklucHV0Q2hhbmdlKCcnLCB7XG4gICAgICAgIGFjdGlvbjogJ21lbnUtY2xvc2UnLFxuICAgICAgICBwcmV2SW5wdXRWYWx1ZTogdGhpcy5wcm9wcy5pbnB1dFZhbHVlXG4gICAgICB9KTtcbiAgICAgIHRoaXMucHJvcHMub25NZW51Q2xvc2UoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25JbnB1dENoYW5nZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbklucHV0Q2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgICB0aGlzLnByb3BzLm9uSW5wdXRDaGFuZ2UobmV3VmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIE1ldGhvZHNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgfSwge1xuICAgIGtleTogXCJmb2N1c0lucHV0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZvY3VzSW5wdXQoKSB7XG4gICAgICBpZiAoIXRoaXMuaW5wdXRSZWYpIHJldHVybjtcbiAgICAgIHRoaXMuaW5wdXRSZWYuZm9jdXMoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYmx1cklucHV0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJsdXJJbnB1dCgpIHtcbiAgICAgIGlmICghdGhpcy5pbnB1dFJlZikgcmV0dXJuO1xuICAgICAgdGhpcy5pbnB1dFJlZi5ibHVyKCk7XG4gICAgfVxuXG4gICAgLy8gYWxpYXNlZCBmb3IgY29uc3VtZXJzXG4gIH0sIHtcbiAgICBrZXk6IFwib3Blbk1lbnVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb3Blbk1lbnUoZm9jdXNPcHRpb24pIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHN0YXRlMiA9IHRoaXMuc3RhdGUsXG4gICAgICAgIHNlbGVjdFZhbHVlID0gX3RoaXMkc3RhdGUyLnNlbGVjdFZhbHVlLFxuICAgICAgICBpc0ZvY3VzZWQgPSBfdGhpcyRzdGF0ZTIuaXNGb2N1c2VkO1xuICAgICAgdmFyIGZvY3VzYWJsZU9wdGlvbnMgPSB0aGlzLmJ1aWxkRm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgdmFyIG9wZW5BdEluZGV4ID0gZm9jdXNPcHRpb24gPT09ICdmaXJzdCcgPyAwIDogZm9jdXNhYmxlT3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgaWYgKCF0aGlzLnByb3BzLmlzTXVsdGkpIHtcbiAgICAgICAgdmFyIHNlbGVjdGVkSW5kZXggPSBmb2N1c2FibGVPcHRpb25zLmluZGV4T2Yoc2VsZWN0VmFsdWVbMF0pO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgb3BlbkF0SW5kZXggPSBzZWxlY3RlZEluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIG9ubHkgc2Nyb2xsIGlmIHRoZSBtZW51IGlzbid0IGFscmVhZHkgb3BlblxuICAgICAgdGhpcy5zY3JvbGxUb0ZvY3VzZWRPcHRpb25PblVwZGF0ZSA9ICEoaXNGb2N1c2VkICYmIHRoaXMubWVudUxpc3RSZWYpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogZmFsc2UsXG4gICAgICAgIGZvY3VzZWRWYWx1ZTogbnVsbCxcbiAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNhYmxlT3B0aW9uc1tvcGVuQXRJbmRleF0sXG4gICAgICAgIGZvY3VzZWRPcHRpb25JZDogdGhpcy5nZXRGb2N1c2VkT3B0aW9uSWQoZm9jdXNhYmxlT3B0aW9uc1tvcGVuQXRJbmRleF0pXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfdGhpczIub25NZW51T3BlbigpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImZvY3VzVmFsdWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9jdXNWYWx1ZShkaXJlY3Rpb24pIHtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTMgPSB0aGlzLnN0YXRlLFxuICAgICAgICBzZWxlY3RWYWx1ZSA9IF90aGlzJHN0YXRlMy5zZWxlY3RWYWx1ZSxcbiAgICAgICAgZm9jdXNlZFZhbHVlID0gX3RoaXMkc3RhdGUzLmZvY3VzZWRWYWx1ZTtcblxuICAgICAgLy8gT25seSBtdWx0aXNlbGVjdHMgc3VwcG9ydCB2YWx1ZSBmb2N1c2luZ1xuICAgICAgaWYgKCF0aGlzLnByb3BzLmlzTXVsdGkpIHJldHVybjtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkT3B0aW9uOiBudWxsXG4gICAgICB9KTtcbiAgICAgIHZhciBmb2N1c2VkSW5kZXggPSBzZWxlY3RWYWx1ZS5pbmRleE9mKGZvY3VzZWRWYWx1ZSk7XG4gICAgICBpZiAoIWZvY3VzZWRWYWx1ZSkge1xuICAgICAgICBmb2N1c2VkSW5kZXggPSAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBsYXN0SW5kZXggPSBzZWxlY3RWYWx1ZS5sZW5ndGggLSAxO1xuICAgICAgdmFyIG5leHRGb2N1cyA9IC0xO1xuICAgICAgaWYgKCFzZWxlY3RWYWx1ZS5sZW5ndGgpIHJldHVybjtcbiAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ3ByZXZpb3VzJzpcbiAgICAgICAgICBpZiAoZm9jdXNlZEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAvLyBkb24ndCBjeWNsZSBmcm9tIHRoZSBzdGFydCB0byB0aGUgZW5kXG4gICAgICAgICAgICBuZXh0Rm9jdXMgPSAwO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZm9jdXNlZEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgLy8gaWYgbm90aGluZyBpcyBmb2N1c2VkLCBmb2N1cyB0aGUgbGFzdCB2YWx1ZSBmaXJzdFxuICAgICAgICAgICAgbmV4dEZvY3VzID0gbGFzdEluZGV4O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggLSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbmV4dCc6XG4gICAgICAgICAgaWYgKGZvY3VzZWRJbmRleCA+IC0xICYmIGZvY3VzZWRJbmRleCA8IGxhc3RJbmRleCkge1xuICAgICAgICAgICAgbmV4dEZvY3VzID0gZm9jdXNlZEluZGV4ICsgMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaW5wdXRJc0hpZGRlbjogbmV4dEZvY3VzICE9PSAtMSxcbiAgICAgICAgZm9jdXNlZFZhbHVlOiBzZWxlY3RWYWx1ZVtuZXh0Rm9jdXNdXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9jdXNPcHRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9jdXNPcHRpb24oKSB7XG4gICAgICB2YXIgZGlyZWN0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAnZmlyc3QnO1xuICAgICAgdmFyIHBhZ2VTaXplID0gdGhpcy5wcm9wcy5wYWdlU2l6ZTtcbiAgICAgIHZhciBmb2N1c2VkT3B0aW9uID0gdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uO1xuICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLmdldEZvY3VzYWJsZU9wdGlvbnMoKTtcbiAgICAgIGlmICghb3B0aW9ucy5sZW5ndGgpIHJldHVybjtcbiAgICAgIHZhciBuZXh0Rm9jdXMgPSAwOyAvLyBoYW5kbGVzICdmaXJzdCdcbiAgICAgIHZhciBmb2N1c2VkSW5kZXggPSBvcHRpb25zLmluZGV4T2YoZm9jdXNlZE9wdGlvbik7XG4gICAgICBpZiAoIWZvY3VzZWRPcHRpb24pIHtcbiAgICAgICAgZm9jdXNlZEluZGV4ID0gLTE7XG4gICAgICB9XG4gICAgICBpZiAoZGlyZWN0aW9uID09PSAndXAnKSB7XG4gICAgICAgIG5leHRGb2N1cyA9IGZvY3VzZWRJbmRleCA+IDAgPyBmb2N1c2VkSW5kZXggLSAxIDogb3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdkb3duJykge1xuICAgICAgICBuZXh0Rm9jdXMgPSAoZm9jdXNlZEluZGV4ICsgMSkgJSBvcHRpb25zLmxlbmd0aDtcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAncGFnZXVwJykge1xuICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggLSBwYWdlU2l6ZTtcbiAgICAgICAgaWYgKG5leHRGb2N1cyA8IDApIG5leHRGb2N1cyA9IDA7XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3BhZ2Vkb3duJykge1xuICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggKyBwYWdlU2l6ZTtcbiAgICAgICAgaWYgKG5leHRGb2N1cyA+IG9wdGlvbnMubGVuZ3RoIC0gMSkgbmV4dEZvY3VzID0gb3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdsYXN0Jykge1xuICAgICAgICBuZXh0Rm9jdXMgPSBvcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICB9XG4gICAgICB0aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkT3B0aW9uOiBvcHRpb25zW25leHRGb2N1c10sXG4gICAgICAgIGZvY3VzZWRWYWx1ZTogbnVsbCxcbiAgICAgICAgZm9jdXNlZE9wdGlvbklkOiB0aGlzLmdldEZvY3VzZWRPcHRpb25JZChvcHRpb25zW25leHRGb2N1c10pXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VGhlbWVcIixcbiAgICB2YWx1ZTpcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBHZXR0ZXJzXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICBmdW5jdGlvbiBnZXRUaGVtZSgpIHtcbiAgICAgIC8vIFVzZSB0aGUgZGVmYXVsdCB0aGVtZSBpZiB0aGVyZSBhcmUgbm8gY3VzdG9taXNhdGlvbnMuXG4gICAgICBpZiAoIXRoaXMucHJvcHMudGhlbWUpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRUaGVtZTtcbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSB0aGVtZSBwcm9wIGlzIGEgZnVuY3Rpb24sIGFzc3VtZSB0aGUgZnVuY3Rpb25cbiAgICAgIC8vIGtub3dzIGhvdyB0byBtZXJnZSB0aGUgcGFzc2VkLWluIGRlZmF1bHQgdGhlbWUgd2l0aFxuICAgICAgLy8gaXRzIG93biBtb2RpZmljYXRpb25zLlxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLnRoZW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLnRoZW1lKGRlZmF1bHRUaGVtZSk7XG4gICAgICB9XG4gICAgICAvLyBPdGhlcndpc2UsIGlmIGEgcGxhaW4gdGhlbWUgb2JqZWN0IHdhcyBwYXNzZWQgaW4sXG4gICAgICAvLyBvdmVybGF5IGl0IHdpdGggdGhlIGRlZmF1bHQgdGhlbWUuXG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBkZWZhdWx0VGhlbWUpLCB0aGlzLnByb3BzLnRoZW1lKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q29tbW9uUHJvcHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29tbW9uUHJvcHMoKSB7XG4gICAgICB2YXIgY2xlYXJWYWx1ZSA9IHRoaXMuY2xlYXJWYWx1ZSxcbiAgICAgICAgY3ggPSB0aGlzLmN4LFxuICAgICAgICBnZXRTdHlsZXMgPSB0aGlzLmdldFN0eWxlcyxcbiAgICAgICAgZ2V0Q2xhc3NOYW1lcyA9IHRoaXMuZ2V0Q2xhc3NOYW1lcyxcbiAgICAgICAgZ2V0VmFsdWUgPSB0aGlzLmdldFZhbHVlLFxuICAgICAgICBzZWxlY3RPcHRpb24gPSB0aGlzLnNlbGVjdE9wdGlvbixcbiAgICAgICAgc2V0VmFsdWUgPSB0aGlzLnNldFZhbHVlLFxuICAgICAgICBwcm9wcyA9IHRoaXMucHJvcHM7XG4gICAgICB2YXIgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGksXG4gICAgICAgIGlzUnRsID0gcHJvcHMuaXNSdGwsXG4gICAgICAgIG9wdGlvbnMgPSBwcm9wcy5vcHRpb25zO1xuICAgICAgdmFyIGhhc1ZhbHVlID0gdGhpcy5oYXNWYWx1ZSgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2xlYXJWYWx1ZTogY2xlYXJWYWx1ZSxcbiAgICAgICAgY3g6IGN4LFxuICAgICAgICBnZXRTdHlsZXM6IGdldFN0eWxlcyxcbiAgICAgICAgZ2V0Q2xhc3NOYW1lczogZ2V0Q2xhc3NOYW1lcyxcbiAgICAgICAgZ2V0VmFsdWU6IGdldFZhbHVlLFxuICAgICAgICBoYXNWYWx1ZTogaGFzVmFsdWUsXG4gICAgICAgIGlzTXVsdGk6IGlzTXVsdGksXG4gICAgICAgIGlzUnRsOiBpc1J0bCxcbiAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgc2VsZWN0T3B0aW9uOiBzZWxlY3RPcHRpb24sXG4gICAgICAgIHNlbGVjdFByb3BzOiBwcm9wcyxcbiAgICAgICAgc2V0VmFsdWU6IHNldFZhbHVlLFxuICAgICAgICB0aGVtZTogdGhpcy5nZXRUaGVtZSgpXG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYXNWYWx1ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNWYWx1ZSgpIHtcbiAgICAgIHZhciBzZWxlY3RWYWx1ZSA9IHRoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICByZXR1cm4gc2VsZWN0VmFsdWUubGVuZ3RoID4gMDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGFzT3B0aW9uc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNPcHRpb25zKCkge1xuICAgICAgcmV0dXJuICEhdGhpcy5nZXRGb2N1c2FibGVPcHRpb25zKCkubGVuZ3RoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc0NsZWFyYWJsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0NsZWFyYWJsZSgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczcgPSB0aGlzLnByb3BzLFxuICAgICAgICBpc0NsZWFyYWJsZSA9IF90aGlzJHByb3BzNy5pc0NsZWFyYWJsZSxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzNy5pc011bHRpO1xuXG4gICAgICAvLyBzaW5nbGUgc2VsZWN0LCBieSBkZWZhdWx0LCBJUyBOT1QgY2xlYXJhYmxlXG4gICAgICAvLyBtdWx0aSBzZWxlY3QsIGJ5IGRlZmF1bHQsIElTIGNsZWFyYWJsZVxuICAgICAgaWYgKGlzQ2xlYXJhYmxlID09PSB1bmRlZmluZWQpIHJldHVybiBpc011bHRpO1xuICAgICAgcmV0dXJuIGlzQ2xlYXJhYmxlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc09wdGlvbkRpc2FibGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzT3B0aW9uRGlzYWJsZWQob3B0aW9uLCBzZWxlY3RWYWx1ZSkge1xuICAgICAgcmV0dXJuIF9pc09wdGlvbkRpc2FibGVkKHRoaXMucHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc09wdGlvblNlbGVjdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzT3B0aW9uU2VsZWN0ZWQob3B0aW9uLCBzZWxlY3RWYWx1ZSkge1xuICAgICAgcmV0dXJuIF9pc09wdGlvblNlbGVjdGVkKHRoaXMucHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmaWx0ZXJPcHRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZmlsdGVyT3B0aW9uKG9wdGlvbiwgaW5wdXRWYWx1ZSkge1xuICAgICAgcmV0dXJuIF9maWx0ZXJPcHRpb24odGhpcy5wcm9wcywgb3B0aW9uLCBpbnB1dFZhbHVlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9ybWF0T3B0aW9uTGFiZWxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9ybWF0T3B0aW9uTGFiZWwoZGF0YSwgY29udGV4dCkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLmZvcm1hdE9wdGlvbkxhYmVsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhciBfaW5wdXRWYWx1ZSA9IHRoaXMucHJvcHMuaW5wdXRWYWx1ZTtcbiAgICAgICAgdmFyIF9zZWxlY3RWYWx1ZSA9IHRoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmZvcm1hdE9wdGlvbkxhYmVsKGRhdGEsIHtcbiAgICAgICAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgICAgICAgIGlucHV0VmFsdWU6IF9pbnB1dFZhbHVlLFxuICAgICAgICAgIHNlbGVjdFZhbHVlOiBfc2VsZWN0VmFsdWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25MYWJlbChkYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9ybWF0R3JvdXBMYWJlbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JtYXRHcm91cExhYmVsKGRhdGEpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmZvcm1hdEdyb3VwTGFiZWwoZGF0YSk7XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gTW91c2UgSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgfSwge1xuICAgIGtleTogXCJzdGFydExpc3RlbmluZ0NvbXBvc2l0aW9uXCIsXG4gICAgdmFsdWU6XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gQ29tcG9zaXRpb24gSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIGZ1bmN0aW9uIHN0YXJ0TGlzdGVuaW5nQ29tcG9zaXRpb24oKSB7XG4gICAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3NpdGlvbnN0YXJ0JywgdGhpcy5vbkNvbXBvc2l0aW9uU3RhcnQsIGZhbHNlKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY29tcG9zaXRpb25lbmQnLCB0aGlzLm9uQ29tcG9zaXRpb25FbmQsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RvcExpc3RlbmluZ0NvbXBvc2l0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3BMaXN0ZW5pbmdDb21wb3NpdGlvbigpIHtcbiAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uc3RhcnQnLCB0aGlzLm9uQ29tcG9zaXRpb25TdGFydCk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uZW5kJywgdGhpcy5vbkNvbXBvc2l0aW9uRW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RhcnRMaXN0ZW5pbmdUb1RvdWNoXCIsXG4gICAgdmFsdWU6XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gVG91Y2ggSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIGZ1bmN0aW9uIHN0YXJ0TGlzdGVuaW5nVG9Ub3VjaCgpIHtcbiAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLm9uVG91Y2hTdGFydCwgZmFsc2UpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLm9uVG91Y2hNb3ZlLCBmYWxzZSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5vblRvdWNoRW5kLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInN0b3BMaXN0ZW5pbmdUb1RvdWNoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3BMaXN0ZW5pbmdUb1RvdWNoKCkge1xuICAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMub25Ub3VjaFN0YXJ0KTtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5vblRvdWNoTW92ZSk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5vblRvdWNoRW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVySW5wdXRcIixcbiAgICB2YWx1ZTpcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBSZW5kZXJlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBmdW5jdGlvbiByZW5kZXJJbnB1dCgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczggPSB0aGlzLnByb3BzLFxuICAgICAgICBpc0Rpc2FibGVkID0gX3RoaXMkcHJvcHM4LmlzRGlzYWJsZWQsXG4gICAgICAgIGlzU2VhcmNoYWJsZSA9IF90aGlzJHByb3BzOC5pc1NlYXJjaGFibGUsXG4gICAgICAgIGlucHV0SWQgPSBfdGhpcyRwcm9wczguaW5wdXRJZCxcbiAgICAgICAgaW5wdXRWYWx1ZSA9IF90aGlzJHByb3BzOC5pbnB1dFZhbHVlLFxuICAgICAgICB0YWJJbmRleCA9IF90aGlzJHByb3BzOC50YWJJbmRleCxcbiAgICAgICAgZm9ybSA9IF90aGlzJHByb3BzOC5mb3JtLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHM4Lm1lbnVJc09wZW4sXG4gICAgICAgIHJlcXVpcmVkID0gX3RoaXMkcHJvcHM4LnJlcXVpcmVkO1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHMgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgSW5wdXQgPSBfdGhpcyRnZXRDb21wb25lbnRzLklucHV0O1xuICAgICAgdmFyIF90aGlzJHN0YXRlNCA9IHRoaXMuc3RhdGUsXG4gICAgICAgIGlucHV0SXNIaWRkZW4gPSBfdGhpcyRzdGF0ZTQuaW5wdXRJc0hpZGRlbixcbiAgICAgICAgYXJpYVNlbGVjdGlvbiA9IF90aGlzJHN0YXRlNC5hcmlhU2VsZWN0aW9uO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBpZCA9IGlucHV0SWQgfHwgdGhpcy5nZXRFbGVtZW50SWQoJ2lucHV0Jyk7XG5cbiAgICAgIC8vIGFyaWEgYXR0cmlidXRlcyBtYWtlcyB0aGUgSlNYIFwibm9pc3lcIiwgc2VwYXJhdGVkIGZvciBjbGFyaXR5XG4gICAgICB2YXIgYXJpYUF0dHJpYnV0ZXMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdsaXN0JyxcbiAgICAgICAgJ2FyaWEtZXhwYW5kZWQnOiBtZW51SXNPcGVuLFxuICAgICAgICAnYXJpYS1oYXNwb3B1cCc6IHRydWUsXG4gICAgICAgICdhcmlhLWVycm9ybWVzc2FnZSc6IHRoaXMucHJvcHNbJ2FyaWEtZXJyb3JtZXNzYWdlJ10sXG4gICAgICAgICdhcmlhLWludmFsaWQnOiB0aGlzLnByb3BzWydhcmlhLWludmFsaWQnXSxcbiAgICAgICAgJ2FyaWEtbGFiZWwnOiB0aGlzLnByb3BzWydhcmlhLWxhYmVsJ10sXG4gICAgICAgICdhcmlhLWxhYmVsbGVkYnknOiB0aGlzLnByb3BzWydhcmlhLWxhYmVsbGVkYnknXSxcbiAgICAgICAgJ2FyaWEtcmVxdWlyZWQnOiByZXF1aXJlZCxcbiAgICAgICAgcm9sZTogJ2NvbWJvYm94JyxcbiAgICAgICAgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCc6IHRoaXMuaXNBcHBsZURldmljZSA/IHVuZGVmaW5lZCA6IHRoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbklkIHx8ICcnXG4gICAgICB9LCBtZW51SXNPcGVuICYmIHtcbiAgICAgICAgJ2FyaWEtY29udHJvbHMnOiB0aGlzLmdldEVsZW1lbnRJZCgnbGlzdGJveCcpXG4gICAgICB9KSwgIWlzU2VhcmNoYWJsZSAmJiB7XG4gICAgICAgICdhcmlhLXJlYWRvbmx5JzogdHJ1ZVxuICAgICAgfSksIHRoaXMuaGFzVmFsdWUoKSA/IChhcmlhU2VsZWN0aW9uID09PSBudWxsIHx8IGFyaWFTZWxlY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFyaWFTZWxlY3Rpb24uYWN0aW9uKSA9PT0gJ2luaXRpYWwtaW5wdXQtZm9jdXMnICYmIHtcbiAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiB0aGlzLmdldEVsZW1lbnRJZCgnbGl2ZS1yZWdpb24nKVxuICAgICAgfSA6IHtcbiAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiB0aGlzLmdldEVsZW1lbnRJZCgncGxhY2Vob2xkZXInKVxuICAgICAgfSk7XG4gICAgICBpZiAoIWlzU2VhcmNoYWJsZSkge1xuICAgICAgICAvLyB1c2UgYSBkdW1teSBpbnB1dCB0byBtYWludGFpbiBmb2N1cy9ibHVyIGZ1bmN0aW9uYWxpdHlcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KER1bW15SW5wdXQsIF9leHRlbmRzKHtcbiAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgaW5uZXJSZWY6IHRoaXMuZ2V0SW5wdXRSZWYsXG4gICAgICAgICAgb25CbHVyOiB0aGlzLm9uSW5wdXRCbHVyLFxuICAgICAgICAgIG9uQ2hhbmdlOiBub29wLFxuICAgICAgICAgIG9uRm9jdXM6IHRoaXMub25JbnB1dEZvY3VzLFxuICAgICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICAgIHRhYkluZGV4OiB0YWJJbmRleCxcbiAgICAgICAgICBpbnB1dE1vZGU6IFwibm9uZVwiLFxuICAgICAgICAgIGZvcm06IGZvcm0sXG4gICAgICAgICAgdmFsdWU6IFwiXCJcbiAgICAgICAgfSwgYXJpYUF0dHJpYnV0ZXMpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbnB1dCwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGF1dG9DYXBpdGFsaXplOiBcIm5vbmVcIixcbiAgICAgICAgYXV0b0NvbXBsZXRlOiBcIm9mZlwiLFxuICAgICAgICBhdXRvQ29ycmVjdDogXCJvZmZcIixcbiAgICAgICAgaWQ6IGlkLFxuICAgICAgICBpbm5lclJlZjogdGhpcy5nZXRJbnB1dFJlZixcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNIaWRkZW46IGlucHV0SXNIaWRkZW4sXG4gICAgICAgIG9uQmx1cjogdGhpcy5vbklucHV0Qmx1cixcbiAgICAgICAgb25DaGFuZ2U6IHRoaXMuaGFuZGxlSW5wdXRDaGFuZ2UsXG4gICAgICAgIG9uRm9jdXM6IHRoaXMub25JbnB1dEZvY3VzLFxuICAgICAgICBzcGVsbENoZWNrOiBcImZhbHNlXCIsXG4gICAgICAgIHRhYkluZGV4OiB0YWJJbmRleCxcbiAgICAgICAgZm9ybTogZm9ybSxcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICB9LCBhcmlhQXR0cmlidXRlcykpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJQbGFjZWhvbGRlck9yVmFsdWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyUGxhY2Vob2xkZXJPclZhbHVlKCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czIgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgTXVsdGlWYWx1ZSA9IF90aGlzJGdldENvbXBvbmVudHMyLk11bHRpVmFsdWUsXG4gICAgICAgIE11bHRpVmFsdWVDb250YWluZXIgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5NdWx0aVZhbHVlQ29udGFpbmVyLFxuICAgICAgICBNdWx0aVZhbHVlTGFiZWwgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5NdWx0aVZhbHVlTGFiZWwsXG4gICAgICAgIE11bHRpVmFsdWVSZW1vdmUgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5NdWx0aVZhbHVlUmVtb3ZlLFxuICAgICAgICBTaW5nbGVWYWx1ZSA9IF90aGlzJGdldENvbXBvbmVudHMyLlNpbmdsZVZhbHVlLFxuICAgICAgICBQbGFjZWhvbGRlciA9IF90aGlzJGdldENvbXBvbmVudHMyLlBsYWNlaG9sZGVyO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBfdGhpcyRwcm9wczkgPSB0aGlzLnByb3BzLFxuICAgICAgICBjb250cm9sU2hvdWxkUmVuZGVyVmFsdWUgPSBfdGhpcyRwcm9wczkuY29udHJvbFNob3VsZFJlbmRlclZhbHVlLFxuICAgICAgICBpc0Rpc2FibGVkID0gX3RoaXMkcHJvcHM5LmlzRGlzYWJsZWQsXG4gICAgICAgIGlzTXVsdGkgPSBfdGhpcyRwcm9wczkuaXNNdWx0aSxcbiAgICAgICAgaW5wdXRWYWx1ZSA9IF90aGlzJHByb3BzOS5pbnB1dFZhbHVlLFxuICAgICAgICBwbGFjZWhvbGRlciA9IF90aGlzJHByb3BzOS5wbGFjZWhvbGRlcjtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTUgPSB0aGlzLnN0YXRlLFxuICAgICAgICBzZWxlY3RWYWx1ZSA9IF90aGlzJHN0YXRlNS5zZWxlY3RWYWx1ZSxcbiAgICAgICAgZm9jdXNlZFZhbHVlID0gX3RoaXMkc3RhdGU1LmZvY3VzZWRWYWx1ZSxcbiAgICAgICAgaXNGb2N1c2VkID0gX3RoaXMkc3RhdGU1LmlzRm9jdXNlZDtcbiAgICAgIGlmICghdGhpcy5oYXNWYWx1ZSgpIHx8ICFjb250cm9sU2hvdWxkUmVuZGVyVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0VmFsdWUgPyBudWxsIDogLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUGxhY2Vob2xkZXIsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICAgIGtleTogXCJwbGFjZWhvbGRlclwiLFxuICAgICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgICAgaW5uZXJQcm9wczoge1xuICAgICAgICAgICAgaWQ6IHRoaXMuZ2V0RWxlbWVudElkKCdwbGFjZWhvbGRlcicpXG4gICAgICAgICAgfVxuICAgICAgICB9KSwgcGxhY2Vob2xkZXIpO1xuICAgICAgfVxuICAgICAgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdFZhbHVlLm1hcChmdW5jdGlvbiAob3B0LCBpbmRleCkge1xuICAgICAgICAgIHZhciBpc09wdGlvbkZvY3VzZWQgPSBvcHQgPT09IGZvY3VzZWRWYWx1ZTtcbiAgICAgICAgICB2YXIga2V5ID0gXCJcIi5jb25jYXQoX3RoaXMzLmdldE9wdGlvbkxhYmVsKG9wdCksIFwiLVwiKS5jb25jYXQoX3RoaXMzLmdldE9wdGlvblZhbHVlKG9wdCkpO1xuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChNdWx0aVZhbHVlLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgICAgICAgQ29udGFpbmVyOiBNdWx0aVZhbHVlQ29udGFpbmVyLFxuICAgICAgICAgICAgICBMYWJlbDogTXVsdGlWYWx1ZUxhYmVsLFxuICAgICAgICAgICAgICBSZW1vdmU6IE11bHRpVmFsdWVSZW1vdmVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc0ZvY3VzZWQ6IGlzT3B0aW9uRm9jdXNlZCxcbiAgICAgICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICAgIHJlbW92ZVByb3BzOiB7XG4gICAgICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMy5yZW1vdmVWYWx1ZShvcHQpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvblRvdWNoRW5kOiBmdW5jdGlvbiBvblRvdWNoRW5kKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczMucmVtb3ZlVmFsdWUob3B0KTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb25Nb3VzZURvd246IGZ1bmN0aW9uIG9uTW91c2VEb3duKGUpIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkYXRhOiBvcHRcbiAgICAgICAgICB9KSwgX3RoaXMzLmZvcm1hdE9wdGlvbkxhYmVsKG9wdCwgJ3ZhbHVlJykpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChpbnB1dFZhbHVlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIHNpbmdsZVZhbHVlID0gc2VsZWN0VmFsdWVbMF07XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2luZ2xlVmFsdWUsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBkYXRhOiBzaW5nbGVWYWx1ZSxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZFxuICAgICAgfSksIHRoaXMuZm9ybWF0T3B0aW9uTGFiZWwoc2luZ2xlVmFsdWUsICd2YWx1ZScpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyQ2xlYXJJbmRpY2F0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQ2xlYXJJbmRpY2F0b3IoKSB7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czMgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgQ2xlYXJJbmRpY2F0b3IgPSBfdGhpcyRnZXRDb21wb25lbnRzMy5DbGVhckluZGljYXRvcjtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMCA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczEwLmlzRGlzYWJsZWQsXG4gICAgICAgIGlzTG9hZGluZyA9IF90aGlzJHByb3BzMTAuaXNMb2FkaW5nO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgaWYgKCF0aGlzLmlzQ2xlYXJhYmxlKCkgfHwgIUNsZWFySW5kaWNhdG9yIHx8IGlzRGlzYWJsZWQgfHwgIXRoaXMuaGFzVmFsdWUoKSB8fCBpc0xvYWRpbmcpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgaW5uZXJQcm9wcyA9IHtcbiAgICAgICAgb25Nb3VzZURvd246IHRoaXMub25DbGVhckluZGljYXRvck1vdXNlRG93bixcbiAgICAgICAgb25Ub3VjaEVuZDogdGhpcy5vbkNsZWFySW5kaWNhdG9yVG91Y2hFbmQsXG4gICAgICAgICdhcmlhLWhpZGRlbic6ICd0cnVlJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDbGVhckluZGljYXRvciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlubmVyUHJvcHM6IGlubmVyUHJvcHMsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckxvYWRpbmdJbmRpY2F0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyTG9hZGluZ0luZGljYXRvcigpIHtcbiAgICAgIHZhciBfdGhpcyRnZXRDb21wb25lbnRzNCA9IHRoaXMuZ2V0Q29tcG9uZW50cygpLFxuICAgICAgICBMb2FkaW5nSW5kaWNhdG9yID0gX3RoaXMkZ2V0Q29tcG9uZW50czQuTG9hZGluZ0luZGljYXRvcjtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMSA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczExLmlzRGlzYWJsZWQsXG4gICAgICAgIGlzTG9hZGluZyA9IF90aGlzJHByb3BzMTEuaXNMb2FkaW5nO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgaWYgKCFMb2FkaW5nSW5kaWNhdG9yIHx8ICFpc0xvYWRpbmcpIHJldHVybiBudWxsO1xuICAgICAgdmFyIGlubmVyUHJvcHMgPSB7XG4gICAgICAgICdhcmlhLWhpZGRlbic6ICd0cnVlJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMb2FkaW5nSW5kaWNhdG9yLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWRcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVySW5kaWNhdG9yU2VwYXJhdG9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckluZGljYXRvclNlcGFyYXRvcigpIHtcbiAgICAgIHZhciBfdGhpcyRnZXRDb21wb25lbnRzNSA9IHRoaXMuZ2V0Q29tcG9uZW50cygpLFxuICAgICAgICBEcm9wZG93bkluZGljYXRvciA9IF90aGlzJGdldENvbXBvbmVudHM1LkRyb3Bkb3duSW5kaWNhdG9yLFxuICAgICAgICBJbmRpY2F0b3JTZXBhcmF0b3IgPSBfdGhpcyRnZXRDb21wb25lbnRzNS5JbmRpY2F0b3JTZXBhcmF0b3I7XG5cbiAgICAgIC8vIHNlcGFyYXRvciBkb2Vzbid0IG1ha2Ugc2Vuc2Ugd2l0aG91dCB0aGUgZHJvcGRvd24gaW5kaWNhdG9yXG4gICAgICBpZiAoIURyb3Bkb3duSW5kaWNhdG9yIHx8ICFJbmRpY2F0b3JTZXBhcmF0b3IpIHJldHVybiBudWxsO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBpc0Rpc2FibGVkID0gdGhpcy5wcm9wcy5pc0Rpc2FibGVkO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEluZGljYXRvclNlcGFyYXRvciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckRyb3Bkb3duSW5kaWNhdG9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckRyb3Bkb3duSW5kaWNhdG9yKCkge1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHM2ID0gdGhpcy5nZXRDb21wb25lbnRzKCksXG4gICAgICAgIERyb3Bkb3duSW5kaWNhdG9yID0gX3RoaXMkZ2V0Q29tcG9uZW50czYuRHJvcGRvd25JbmRpY2F0b3I7XG4gICAgICBpZiAoIURyb3Bkb3duSW5kaWNhdG9yKSByZXR1cm4gbnVsbDtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgaXNEaXNhYmxlZCA9IHRoaXMucHJvcHMuaXNEaXNhYmxlZDtcbiAgICAgIHZhciBpc0ZvY3VzZWQgPSB0aGlzLnN0YXRlLmlzRm9jdXNlZDtcbiAgICAgIHZhciBpbm5lclByb3BzID0ge1xuICAgICAgICBvbk1vdXNlRG93bjogdGhpcy5vbkRyb3Bkb3duSW5kaWNhdG9yTW91c2VEb3duLFxuICAgICAgICBvblRvdWNoRW5kOiB0aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JUb3VjaEVuZCxcbiAgICAgICAgJ2FyaWEtaGlkZGVuJzogJ3RydWUnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KERyb3Bkb3duSW5kaWNhdG9yLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWRcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyTWVudVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJNZW51KCkge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czcgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgR3JvdXAgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5Hcm91cCxcbiAgICAgICAgR3JvdXBIZWFkaW5nID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuR3JvdXBIZWFkaW5nLFxuICAgICAgICBNZW51ID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuTWVudSxcbiAgICAgICAgTWVudUxpc3QgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5NZW51TGlzdCxcbiAgICAgICAgTWVudVBvcnRhbCA9IF90aGlzJGdldENvbXBvbmVudHM3Lk1lbnVQb3J0YWwsXG4gICAgICAgIExvYWRpbmdNZXNzYWdlID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuTG9hZGluZ01lc3NhZ2UsXG4gICAgICAgIE5vT3B0aW9uc01lc3NhZ2UgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5Ob09wdGlvbnNNZXNzYWdlLFxuICAgICAgICBPcHRpb24gPSBfdGhpcyRnZXRDb21wb25lbnRzNy5PcHRpb247XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIGZvY3VzZWRPcHRpb24gPSB0aGlzLnN0YXRlLmZvY3VzZWRPcHRpb247XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMiA9IHRoaXMucHJvcHMsXG4gICAgICAgIGNhcHR1cmVNZW51U2Nyb2xsID0gX3RoaXMkcHJvcHMxMi5jYXB0dXJlTWVudVNjcm9sbCxcbiAgICAgICAgaW5wdXRWYWx1ZSA9IF90aGlzJHByb3BzMTIuaW5wdXRWYWx1ZSxcbiAgICAgICAgaXNMb2FkaW5nID0gX3RoaXMkcHJvcHMxMi5pc0xvYWRpbmcsXG4gICAgICAgIGxvYWRpbmdNZXNzYWdlID0gX3RoaXMkcHJvcHMxMi5sb2FkaW5nTWVzc2FnZSxcbiAgICAgICAgbWluTWVudUhlaWdodCA9IF90aGlzJHByb3BzMTIubWluTWVudUhlaWdodCxcbiAgICAgICAgbWF4TWVudUhlaWdodCA9IF90aGlzJHByb3BzMTIubWF4TWVudUhlaWdodCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzMTIubWVudUlzT3BlbixcbiAgICAgICAgbWVudVBsYWNlbWVudCA9IF90aGlzJHByb3BzMTIubWVudVBsYWNlbWVudCxcbiAgICAgICAgbWVudVBvc2l0aW9uID0gX3RoaXMkcHJvcHMxMi5tZW51UG9zaXRpb24sXG4gICAgICAgIG1lbnVQb3J0YWxUYXJnZXQgPSBfdGhpcyRwcm9wczEyLm1lbnVQb3J0YWxUYXJnZXQsXG4gICAgICAgIG1lbnVTaG91bGRCbG9ja1Njcm9sbCA9IF90aGlzJHByb3BzMTIubWVudVNob3VsZEJsb2NrU2Nyb2xsLFxuICAgICAgICBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXcgPSBfdGhpcyRwcm9wczEyLm1lbnVTaG91bGRTY3JvbGxJbnRvVmlldyxcbiAgICAgICAgbm9PcHRpb25zTWVzc2FnZSA9IF90aGlzJHByb3BzMTIubm9PcHRpb25zTWVzc2FnZSxcbiAgICAgICAgb25NZW51U2Nyb2xsVG9Ub3AgPSBfdGhpcyRwcm9wczEyLm9uTWVudVNjcm9sbFRvVG9wLFxuICAgICAgICBvbk1lbnVTY3JvbGxUb0JvdHRvbSA9IF90aGlzJHByb3BzMTIub25NZW51U2Nyb2xsVG9Cb3R0b207XG4gICAgICBpZiAoIW1lbnVJc09wZW4pIHJldHVybiBudWxsO1xuXG4gICAgICAvLyBUT0RPOiBJbnRlcm5hbCBPcHRpb24gVHlwZSBoZXJlXG4gICAgICB2YXIgcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKHByb3BzLCBpZCkge1xuICAgICAgICB2YXIgdHlwZSA9IHByb3BzLnR5cGUsXG4gICAgICAgICAgZGF0YSA9IHByb3BzLmRhdGEsXG4gICAgICAgICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgICAgICAgaXNTZWxlY3RlZCA9IHByb3BzLmlzU2VsZWN0ZWQsXG4gICAgICAgICAgbGFiZWwgPSBwcm9wcy5sYWJlbCxcbiAgICAgICAgICB2YWx1ZSA9IHByb3BzLnZhbHVlO1xuICAgICAgICB2YXIgaXNGb2N1c2VkID0gZm9jdXNlZE9wdGlvbiA9PT0gZGF0YTtcbiAgICAgICAgdmFyIG9uSG92ZXIgPSBpc0Rpc2FibGVkID8gdW5kZWZpbmVkIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpczQub25PcHRpb25Ib3ZlcihkYXRhKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG9uU2VsZWN0ID0gaXNEaXNhYmxlZCA/IHVuZGVmaW5lZCA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXM0LnNlbGVjdE9wdGlvbihkYXRhKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG9wdGlvbklkID0gXCJcIi5jb25jYXQoX3RoaXM0LmdldEVsZW1lbnRJZCgnb3B0aW9uJyksIFwiLVwiKS5jb25jYXQoaWQpO1xuICAgICAgICB2YXIgaW5uZXJQcm9wcyA9IHtcbiAgICAgICAgICBpZDogb3B0aW9uSWQsXG4gICAgICAgICAgb25DbGljazogb25TZWxlY3QsXG4gICAgICAgICAgb25Nb3VzZU1vdmU6IG9uSG92ZXIsXG4gICAgICAgICAgb25Nb3VzZU92ZXI6IG9uSG92ZXIsXG4gICAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAgIHJvbGU6ICdvcHRpb24nLFxuICAgICAgICAgICdhcmlhLXNlbGVjdGVkJzogX3RoaXM0LmlzQXBwbGVEZXZpY2UgPyB1bmRlZmluZWQgOiBpc1NlbGVjdGVkIC8vIGlzIG5vdCBzdXBwb3J0ZWQgb24gQXBwbGUgZGV2aWNlc1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChPcHRpb24sIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICAgIGlubmVyUHJvcHM6IGlubmVyUHJvcHMsXG4gICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICAgIGlzU2VsZWN0ZWQ6IGlzU2VsZWN0ZWQsXG4gICAgICAgICAga2V5OiBvcHRpb25JZCxcbiAgICAgICAgICBsYWJlbDogbGFiZWwsXG4gICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgICAgaW5uZXJSZWY6IGlzRm9jdXNlZCA/IF90aGlzNC5nZXRGb2N1c2VkT3B0aW9uUmVmIDogdW5kZWZpbmVkXG4gICAgICAgIH0pLCBfdGhpczQuZm9ybWF0T3B0aW9uTGFiZWwocHJvcHMuZGF0YSwgJ21lbnUnKSk7XG4gICAgICB9O1xuICAgICAgdmFyIG1lbnVVSTtcbiAgICAgIGlmICh0aGlzLmhhc09wdGlvbnMoKSkge1xuICAgICAgICBtZW51VUkgPSB0aGlzLmdldENhdGVnb3JpemVkT3B0aW9ucygpLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgICAgIHZhciBfZGF0YSA9IGl0ZW0uZGF0YSxcbiAgICAgICAgICAgICAgb3B0aW9ucyA9IGl0ZW0ub3B0aW9ucyxcbiAgICAgICAgICAgICAgZ3JvdXBJbmRleCA9IGl0ZW0uaW5kZXg7XG4gICAgICAgICAgICB2YXIgZ3JvdXBJZCA9IFwiXCIuY29uY2F0KF90aGlzNC5nZXRFbGVtZW50SWQoJ2dyb3VwJyksIFwiLVwiKS5jb25jYXQoZ3JvdXBJbmRleCk7XG4gICAgICAgICAgICB2YXIgaGVhZGluZ0lkID0gXCJcIi5jb25jYXQoZ3JvdXBJZCwgXCItaGVhZGluZ1wiKTtcbiAgICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChHcm91cCwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgICAgICAgIGtleTogZ3JvdXBJZCxcbiAgICAgICAgICAgICAgZGF0YTogX2RhdGEsXG4gICAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAgICAgICAgIEhlYWRpbmc6IEdyb3VwSGVhZGluZyxcbiAgICAgICAgICAgICAgaGVhZGluZ1Byb3BzOiB7XG4gICAgICAgICAgICAgICAgaWQ6IGhlYWRpbmdJZCxcbiAgICAgICAgICAgICAgICBkYXRhOiBpdGVtLmRhdGFcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbGFiZWw6IF90aGlzNC5mb3JtYXRHcm91cExhYmVsKGl0ZW0uZGF0YSlcbiAgICAgICAgICAgIH0pLCBpdGVtLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcihvcHRpb24sIFwiXCIuY29uY2F0KGdyb3VwSW5kZXgsIFwiLVwiKS5jb25jYXQob3B0aW9uLmluZGV4KSk7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICdvcHRpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVuZGVyKGl0ZW0sIFwiXCIuY29uY2F0KGl0ZW0uaW5kZXgpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChpc0xvYWRpbmcpIHtcbiAgICAgICAgdmFyIG1lc3NhZ2UgPSBsb2FkaW5nTWVzc2FnZSh7XG4gICAgICAgICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG1lc3NhZ2UgPT09IG51bGwpIHJldHVybiBudWxsO1xuICAgICAgICBtZW51VUkgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMb2FkaW5nTWVzc2FnZSwgY29tbW9uUHJvcHMsIG1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIF9tZXNzYWdlID0gbm9PcHRpb25zTWVzc2FnZSh7XG4gICAgICAgICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKF9tZXNzYWdlID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgbWVudVVJID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTm9PcHRpb25zTWVzc2FnZSwgY29tbW9uUHJvcHMsIF9tZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIHZhciBtZW51UGxhY2VtZW50UHJvcHMgPSB7XG4gICAgICAgIG1pbk1lbnVIZWlnaHQ6IG1pbk1lbnVIZWlnaHQsXG4gICAgICAgIG1heE1lbnVIZWlnaHQ6IG1heE1lbnVIZWlnaHQsXG4gICAgICAgIG1lbnVQbGFjZW1lbnQ6IG1lbnVQbGFjZW1lbnQsXG4gICAgICAgIG1lbnVQb3NpdGlvbjogbWVudVBvc2l0aW9uLFxuICAgICAgICBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXc6IG1lbnVTaG91bGRTY3JvbGxJbnRvVmlld1xuICAgICAgfTtcbiAgICAgIHZhciBtZW51RWxlbWVudCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE1lbnVQbGFjZXIsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywgbWVudVBsYWNlbWVudFByb3BzKSwgZnVuY3Rpb24gKF9yZWY0KSB7XG4gICAgICAgIHZhciByZWYgPSBfcmVmNC5yZWYsXG4gICAgICAgICAgX3JlZjQkcGxhY2VyUHJvcHMgPSBfcmVmNC5wbGFjZXJQcm9wcyxcbiAgICAgICAgICBwbGFjZW1lbnQgPSBfcmVmNCRwbGFjZXJQcm9wcy5wbGFjZW1lbnQsXG4gICAgICAgICAgbWF4SGVpZ2h0ID0gX3JlZjQkcGxhY2VyUHJvcHMubWF4SGVpZ2h0O1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTWVudSwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCBtZW51UGxhY2VtZW50UHJvcHMsIHtcbiAgICAgICAgICBpbm5lclJlZjogcmVmLFxuICAgICAgICAgIGlubmVyUHJvcHM6IHtcbiAgICAgICAgICAgIG9uTW91c2VEb3duOiBfdGhpczQub25NZW51TW91c2VEb3duLFxuICAgICAgICAgICAgb25Nb3VzZU1vdmU6IF90aGlzNC5vbk1lbnVNb3VzZU1vdmVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlzTG9hZGluZzogaXNMb2FkaW5nLFxuICAgICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50XG4gICAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTY3JvbGxNYW5hZ2VyLCB7XG4gICAgICAgICAgY2FwdHVyZUVuYWJsZWQ6IGNhcHR1cmVNZW51U2Nyb2xsLFxuICAgICAgICAgIG9uVG9wQXJyaXZlOiBvbk1lbnVTY3JvbGxUb1RvcCxcbiAgICAgICAgICBvbkJvdHRvbUFycml2ZTogb25NZW51U2Nyb2xsVG9Cb3R0b20sXG4gICAgICAgICAgbG9ja0VuYWJsZWQ6IG1lbnVTaG91bGRCbG9ja1Njcm9sbFxuICAgICAgICB9LCBmdW5jdGlvbiAoc2Nyb2xsVGFyZ2V0UmVmKSB7XG4gICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE1lbnVMaXN0LCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgICAgIGlubmVyUmVmOiBmdW5jdGlvbiBpbm5lclJlZihpbnN0YW5jZSkge1xuICAgICAgICAgICAgICBfdGhpczQuZ2V0TWVudUxpc3RSZWYoaW5zdGFuY2UpO1xuICAgICAgICAgICAgICBzY3JvbGxUYXJnZXRSZWYoaW5zdGFuY2UpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlubmVyUHJvcHM6IHtcbiAgICAgICAgICAgICAgcm9sZTogJ2xpc3Rib3gnLFxuICAgICAgICAgICAgICAnYXJpYS1tdWx0aXNlbGVjdGFibGUnOiBjb21tb25Qcm9wcy5pc011bHRpLFxuICAgICAgICAgICAgICBpZDogX3RoaXM0LmdldEVsZW1lbnRJZCgnbGlzdGJveCcpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNMb2FkaW5nOiBpc0xvYWRpbmcsXG4gICAgICAgICAgICBtYXhIZWlnaHQ6IG1heEhlaWdodCxcbiAgICAgICAgICAgIGZvY3VzZWRPcHRpb246IGZvY3VzZWRPcHRpb25cbiAgICAgICAgICB9KSwgbWVudVVJKTtcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIHBvc2l0aW9uaW5nIGJlaGF2aW91ciBpcyBhbG1vc3QgaWRlbnRpY2FsIGZvciBwb3J0YWxsZWQgYW5kIGZpeGVkLFxuICAgICAgLy8gc28gd2UgdXNlIHRoZSBzYW1lIGNvbXBvbmVudC4gdGhlIGFjdHVhbCBwb3J0YWxsaW5nIGxvZ2ljIGlzIGZvcmtlZFxuICAgICAgLy8gd2l0aGluIHRoZSBjb21wb25lbnQgYmFzZWQgb24gYG1lbnVQb3NpdGlvbmBcbiAgICAgIHJldHVybiBtZW51UG9ydGFsVGFyZ2V0IHx8IG1lbnVQb3NpdGlvbiA9PT0gJ2ZpeGVkJyA/IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE1lbnVQb3J0YWwsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBhcHBlbmRUbzogbWVudVBvcnRhbFRhcmdldCxcbiAgICAgICAgY29udHJvbEVsZW1lbnQ6IHRoaXMuY29udHJvbFJlZixcbiAgICAgICAgbWVudVBsYWNlbWVudDogbWVudVBsYWNlbWVudCxcbiAgICAgICAgbWVudVBvc2l0aW9uOiBtZW51UG9zaXRpb25cbiAgICAgIH0pLCBtZW51RWxlbWVudCkgOiBtZW51RWxlbWVudDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyRm9ybUZpZWxkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckZvcm1GaWVsZCgpIHtcbiAgICAgIHZhciBfdGhpczUgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzMTMgPSB0aGlzLnByb3BzLFxuICAgICAgICBkZWxpbWl0ZXIgPSBfdGhpcyRwcm9wczEzLmRlbGltaXRlcixcbiAgICAgICAgaXNEaXNhYmxlZCA9IF90aGlzJHByb3BzMTMuaXNEaXNhYmxlZCxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzMTMuaXNNdWx0aSxcbiAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzMTMubmFtZSxcbiAgICAgICAgcmVxdWlyZWQgPSBfdGhpcyRwcm9wczEzLnJlcXVpcmVkO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIGlmIChyZXF1aXJlZCAmJiAhdGhpcy5oYXNWYWx1ZSgpICYmICFpc0Rpc2FibGVkKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChSZXF1aXJlZElucHV0JDEsIHtcbiAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgIG9uRm9jdXM6IHRoaXMub25WYWx1ZUlucHV0Rm9jdXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoIW5hbWUgfHwgaXNEaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgaWYgKGRlbGltaXRlcikge1xuICAgICAgICAgIHZhciB2YWx1ZSA9IHNlbGVjdFZhbHVlLm1hcChmdW5jdGlvbiAob3B0KSB7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXM1LmdldE9wdGlvblZhbHVlKG9wdCk7XG4gICAgICAgICAgfSkuam9pbihkZWxpbWl0ZXIpO1xuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICB0eXBlOiBcImhpZGRlblwiLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGlucHV0ID0gc2VsZWN0VmFsdWUubGVuZ3RoID4gMCA/IHNlbGVjdFZhbHVlLm1hcChmdW5jdGlvbiAob3B0LCBpKSB7XG4gICAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgIGtleTogXCJpLVwiLmNvbmNhdChpKSxcbiAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICAgICAgdmFsdWU6IF90aGlzNS5nZXRPcHRpb25WYWx1ZShvcHQpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KSA6IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIHR5cGU6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgICB2YWx1ZTogXCJcIlxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBudWxsLCBpbnB1dCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBfdmFsdWUgPSBzZWxlY3RWYWx1ZVswXSA/IHRoaXMuZ2V0T3B0aW9uVmFsdWUoc2VsZWN0VmFsdWVbMF0pIDogJyc7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtcbiAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgIHR5cGU6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgdmFsdWU6IF92YWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyTGl2ZVJlZ2lvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJMaXZlUmVnaW9uKCkge1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTYgPSB0aGlzLnN0YXRlLFxuICAgICAgICBhcmlhU2VsZWN0aW9uID0gX3RoaXMkc3RhdGU2LmFyaWFTZWxlY3Rpb24sXG4gICAgICAgIGZvY3VzZWRPcHRpb24gPSBfdGhpcyRzdGF0ZTYuZm9jdXNlZE9wdGlvbixcbiAgICAgICAgZm9jdXNlZFZhbHVlID0gX3RoaXMkc3RhdGU2LmZvY3VzZWRWYWx1ZSxcbiAgICAgICAgaXNGb2N1c2VkID0gX3RoaXMkc3RhdGU2LmlzRm9jdXNlZCxcbiAgICAgICAgc2VsZWN0VmFsdWUgPSBfdGhpcyRzdGF0ZTYuc2VsZWN0VmFsdWU7XG4gICAgICB2YXIgZm9jdXNhYmxlT3B0aW9ucyA9IHRoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExpdmVSZWdpb24kMSwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlkOiB0aGlzLmdldEVsZW1lbnRJZCgnbGl2ZS1yZWdpb24nKSxcbiAgICAgICAgYXJpYVNlbGVjdGlvbjogYXJpYVNlbGVjdGlvbixcbiAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNlZE9wdGlvbixcbiAgICAgICAgZm9jdXNlZFZhbHVlOiBmb2N1c2VkVmFsdWUsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkLFxuICAgICAgICBzZWxlY3RWYWx1ZTogc2VsZWN0VmFsdWUsXG4gICAgICAgIGZvY3VzYWJsZU9wdGlvbnM6IGZvY3VzYWJsZU9wdGlvbnMsXG4gICAgICAgIGlzQXBwbGVEZXZpY2U6IHRoaXMuaXNBcHBsZURldmljZVxuICAgICAgfSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHM4ID0gdGhpcy5nZXRDb21wb25lbnRzKCksXG4gICAgICAgIENvbnRyb2wgPSBfdGhpcyRnZXRDb21wb25lbnRzOC5Db250cm9sLFxuICAgICAgICBJbmRpY2F0b3JzQ29udGFpbmVyID0gX3RoaXMkZ2V0Q29tcG9uZW50czguSW5kaWNhdG9yc0NvbnRhaW5lcixcbiAgICAgICAgU2VsZWN0Q29udGFpbmVyID0gX3RoaXMkZ2V0Q29tcG9uZW50czguU2VsZWN0Q29udGFpbmVyLFxuICAgICAgICBWYWx1ZUNvbnRhaW5lciA9IF90aGlzJGdldENvbXBvbmVudHM4LlZhbHVlQ29udGFpbmVyO1xuICAgICAgdmFyIF90aGlzJHByb3BzMTQgPSB0aGlzLnByb3BzLFxuICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczE0LmNsYXNzTmFtZSxcbiAgICAgICAgaWQgPSBfdGhpcyRwcm9wczE0LmlkLFxuICAgICAgICBpc0Rpc2FibGVkID0gX3RoaXMkcHJvcHMxNC5pc0Rpc2FibGVkLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHMxNC5tZW51SXNPcGVuO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcyA9IHRoaXMuZ2V0Q29tbW9uUHJvcHMoKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTZWxlY3RDb250YWluZXIsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICAgICAgaW5uZXJQcm9wczoge1xuICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICBvbktleURvd246IHRoaXMub25LZXlEb3duXG4gICAgICAgIH0sXG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkXG4gICAgICB9KSwgdGhpcy5yZW5kZXJMaXZlUmVnaW9uKCksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENvbnRyb2wsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBpbm5lclJlZjogdGhpcy5nZXRDb250cm9sUmVmLFxuICAgICAgICBpbm5lclByb3BzOiB7XG4gICAgICAgICAgb25Nb3VzZURvd246IHRoaXMub25Db250cm9sTW91c2VEb3duLFxuICAgICAgICAgIG9uVG91Y2hFbmQ6IHRoaXMub25Db250cm9sVG91Y2hFbmRcbiAgICAgICAgfSxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgIG1lbnVJc09wZW46IG1lbnVJc09wZW5cbiAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChWYWx1ZUNvbnRhaW5lciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWRcbiAgICAgIH0pLCB0aGlzLnJlbmRlclBsYWNlaG9sZGVyT3JWYWx1ZSgpLCB0aGlzLnJlbmRlcklucHV0KCkpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbmRpY2F0b3JzQ29udGFpbmVyLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZFxuICAgICAgfSksIHRoaXMucmVuZGVyQ2xlYXJJbmRpY2F0b3IoKSwgdGhpcy5yZW5kZXJMb2FkaW5nSW5kaWNhdG9yKCksIHRoaXMucmVuZGVySW5kaWNhdG9yU2VwYXJhdG9yKCksIHRoaXMucmVuZGVyRHJvcGRvd25JbmRpY2F0b3IoKSkpLCB0aGlzLnJlbmRlck1lbnUoKSwgdGhpcy5yZW5kZXJGb3JtRmllbGQoKSk7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhwcm9wcywgc3RhdGUpIHtcbiAgICAgIHZhciBwcmV2UHJvcHMgPSBzdGF0ZS5wcmV2UHJvcHMsXG4gICAgICAgIGNsZWFyRm9jdXNWYWx1ZU9uVXBkYXRlID0gc3RhdGUuY2xlYXJGb2N1c1ZhbHVlT25VcGRhdGUsXG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZSA9IHN0YXRlLmlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZSxcbiAgICAgICAgYXJpYVNlbGVjdGlvbiA9IHN0YXRlLmFyaWFTZWxlY3Rpb24sXG4gICAgICAgIGlzRm9jdXNlZCA9IHN0YXRlLmlzRm9jdXNlZCxcbiAgICAgICAgcHJldldhc0ZvY3VzZWQgPSBzdGF0ZS5wcmV2V2FzRm9jdXNlZCxcbiAgICAgICAgaW5zdGFuY2VQcmVmaXggPSBzdGF0ZS5pbnN0YW5jZVByZWZpeDtcbiAgICAgIHZhciBvcHRpb25zID0gcHJvcHMub3B0aW9ucyxcbiAgICAgICAgdmFsdWUgPSBwcm9wcy52YWx1ZSxcbiAgICAgICAgbWVudUlzT3BlbiA9IHByb3BzLm1lbnVJc09wZW4sXG4gICAgICAgIGlucHV0VmFsdWUgPSBwcm9wcy5pbnB1dFZhbHVlLFxuICAgICAgICBpc011bHRpID0gcHJvcHMuaXNNdWx0aTtcbiAgICAgIHZhciBzZWxlY3RWYWx1ZSA9IGNsZWFuVmFsdWUodmFsdWUpO1xuICAgICAgdmFyIG5ld01lbnVPcHRpb25zU3RhdGUgPSB7fTtcbiAgICAgIGlmIChwcmV2UHJvcHMgJiYgKHZhbHVlICE9PSBwcmV2UHJvcHMudmFsdWUgfHwgb3B0aW9ucyAhPT0gcHJldlByb3BzLm9wdGlvbnMgfHwgbWVudUlzT3BlbiAhPT0gcHJldlByb3BzLm1lbnVJc09wZW4gfHwgaW5wdXRWYWx1ZSAhPT0gcHJldlByb3BzLmlucHV0VmFsdWUpKSB7XG4gICAgICAgIHZhciBmb2N1c2FibGVPcHRpb25zID0gbWVudUlzT3BlbiA/IGJ1aWxkRm9jdXNhYmxlT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpIDogW107XG4gICAgICAgIHZhciBmb2N1c2FibGVPcHRpb25zV2l0aElkcyA9IG1lbnVJc09wZW4gPyBidWlsZEZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzKGJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKHByb3BzLCBzZWxlY3RWYWx1ZSksIFwiXCIuY29uY2F0KGluc3RhbmNlUHJlZml4LCBcIi1vcHRpb25cIikpIDogW107XG4gICAgICAgIHZhciBmb2N1c2VkVmFsdWUgPSBjbGVhckZvY3VzVmFsdWVPblVwZGF0ZSA/IGdldE5leHRGb2N1c2VkVmFsdWUoc3RhdGUsIHNlbGVjdFZhbHVlKSA6IG51bGw7XG4gICAgICAgIHZhciBmb2N1c2VkT3B0aW9uID0gZ2V0TmV4dEZvY3VzZWRPcHRpb24oc3RhdGUsIGZvY3VzYWJsZU9wdGlvbnMpO1xuICAgICAgICB2YXIgZm9jdXNlZE9wdGlvbklkID0gZ2V0Rm9jdXNlZE9wdGlvbklkKGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLCBmb2N1c2VkT3B0aW9uKTtcbiAgICAgICAgbmV3TWVudU9wdGlvbnNTdGF0ZSA9IHtcbiAgICAgICAgICBzZWxlY3RWYWx1ZTogc2VsZWN0VmFsdWUsXG4gICAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNlZE9wdGlvbixcbiAgICAgICAgICBmb2N1c2VkT3B0aW9uSWQ6IGZvY3VzZWRPcHRpb25JZCxcbiAgICAgICAgICBmb2N1c2FibGVPcHRpb25zV2l0aElkczogZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMsXG4gICAgICAgICAgZm9jdXNlZFZhbHVlOiBmb2N1c2VkVmFsdWUsXG4gICAgICAgICAgY2xlYXJGb2N1c1ZhbHVlT25VcGRhdGU6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICAvLyBzb21lIHVwZGF0ZXMgc2hvdWxkIHRvZ2dsZSB0aGUgc3RhdGUgb2YgdGhlIGlucHV0IHZpc2liaWxpdHlcbiAgICAgIHZhciBuZXdJbnB1dElzSGlkZGVuU3RhdGUgPSBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGUgIT0gbnVsbCAmJiBwcm9wcyAhPT0gcHJldlByb3BzID8ge1xuICAgICAgICBpbnB1dElzSGlkZGVuOiBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGUsXG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogdW5kZWZpbmVkXG4gICAgICB9IDoge307XG4gICAgICB2YXIgbmV3QXJpYVNlbGVjdGlvbiA9IGFyaWFTZWxlY3Rpb247XG4gICAgICB2YXIgaGFzS2VwdEZvY3VzID0gaXNGb2N1c2VkICYmIHByZXZXYXNGb2N1c2VkO1xuICAgICAgaWYgKGlzRm9jdXNlZCAmJiAhaGFzS2VwdEZvY3VzKSB7XG4gICAgICAgIC8vIElmIGB2YWx1ZWAgb3IgYGRlZmF1bHRWYWx1ZWAgcHJvcHMgYXJlIG5vdCBlbXB0eSB0aGVuIGFubm91bmNlIHRoZW1cbiAgICAgICAgLy8gd2hlbiB0aGUgU2VsZWN0IGlzIGluaXRpYWxseSBmb2N1c2VkXG4gICAgICAgIG5ld0FyaWFTZWxlY3Rpb24gPSB7XG4gICAgICAgICAgdmFsdWU6IHZhbHVlVGVybmFyeShpc011bHRpLCBzZWxlY3RWYWx1ZSwgc2VsZWN0VmFsdWVbMF0gfHwgbnVsbCksXG4gICAgICAgICAgb3B0aW9uczogc2VsZWN0VmFsdWUsXG4gICAgICAgICAgYWN0aW9uOiAnaW5pdGlhbC1pbnB1dC1mb2N1cydcbiAgICAgICAgfTtcbiAgICAgICAgaGFzS2VwdEZvY3VzID0gIXByZXZXYXNGb2N1c2VkO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgJ2luaXRpYWwtaW5wdXQtZm9jdXMnIGFjdGlvbiBoYXMgYmVlbiBzZXQgYWxyZWFkeVxuICAgICAgLy8gdGhlbiByZXNldCB0aGUgYXJpYVNlbGVjdGlvbiB0byBudWxsXG4gICAgICBpZiAoKGFyaWFTZWxlY3Rpb24gPT09IG51bGwgfHwgYXJpYVNlbGVjdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXJpYVNlbGVjdGlvbi5hY3Rpb24pID09PSAnaW5pdGlhbC1pbnB1dC1mb2N1cycpIHtcbiAgICAgICAgbmV3QXJpYVNlbGVjdGlvbiA9IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG5ld01lbnVPcHRpb25zU3RhdGUpLCBuZXdJbnB1dElzSGlkZGVuU3RhdGUpLCB7fSwge1xuICAgICAgICBwcmV2UHJvcHM6IHByb3BzLFxuICAgICAgICBhcmlhU2VsZWN0aW9uOiBuZXdBcmlhU2VsZWN0aW9uLFxuICAgICAgICBwcmV2V2FzRm9jdXNlZDogaGFzS2VwdEZvY3VzXG4gICAgICB9KTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFNlbGVjdDtcbn0oQ29tcG9uZW50KTtcblNlbGVjdC5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5cbmV4cG9ydCB7IFNlbGVjdCBhcyBTLCBkZWZhdWx0UHJvcHMgYXMgYSwgZ2V0T3B0aW9uTGFiZWwkMSBhcyBiLCBjcmVhdGVGaWx0ZXIgYXMgYywgZGVmYXVsdFRoZW1lIGFzIGQsIGdldE9wdGlvblZhbHVlJDEgYXMgZywgbWVyZ2VTdHlsZXMgYXMgbSB9O1xuIiwiaW1wb3J0IHsgdSBhcyB1c2VTdGF0ZU1hbmFnZXIgfSBmcm9tICcuL3VzZVN0YXRlTWFuYWdlci03ZTFlODQ4OS5lc20uanMnO1xuZXhwb3J0IHsgdSBhcyB1c2VTdGF0ZU1hbmFnZXIgfSBmcm9tICcuL3VzZVN0YXRlTWFuYWdlci03ZTFlODQ4OS5lc20uanMnO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFMgYXMgU2VsZWN0IH0gZnJvbSAnLi9TZWxlY3QtYWFiMDI3ZjMuZXNtLmpzJztcbmV4cG9ydCB7IGMgYXMgY3JlYXRlRmlsdGVyLCBkIGFzIGRlZmF1bHRUaGVtZSwgbSBhcyBtZXJnZVN0eWxlcyB9IGZyb20gJy4vU2VsZWN0LWFhYjAyN2YzLmVzbS5qcyc7XG5pbXBvcnQgeyBDYWNoZVByb3ZpZGVyIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IGNyZWF0ZUNhY2hlIGZyb20gJ0BlbW90aW9uL2NhY2hlJztcbmV4cG9ydCB7IGMgYXMgY29tcG9uZW50cyB9IGZyb20gJy4vaW5kZXgtNjQxZWU1YjguZXNtLmpzJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RTcHJlYWQyJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5JztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllcyc7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0cyc7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlU3VwZXInO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5JztcbmltcG9ydCAnbWVtb2l6ZS1vbmUnO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZic7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdGFnZ2VkVGVtcGxhdGVMaXRlcmFsJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eSc7XG5pbXBvcnQgJ3JlYWN0LWRvbSc7XG5pbXBvcnQgJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0ICd1c2UtaXNvbW9ycGhpYy1sYXlvdXQtZWZmZWN0JztcblxudmFyIFN0YXRlTWFuYWdlZFNlbGVjdCA9IC8qI19fUFVSRV9fKi9mb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7XG4gIHZhciBiYXNlU2VsZWN0UHJvcHMgPSB1c2VTdGF0ZU1hbmFnZXIocHJvcHMpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2VsZWN0LCBfZXh0ZW5kcyh7XG4gICAgcmVmOiByZWZcbiAgfSwgYmFzZVNlbGVjdFByb3BzKSk7XG59KTtcbnZhciBTdGF0ZU1hbmFnZWRTZWxlY3QkMSA9IFN0YXRlTWFuYWdlZFNlbGVjdDtcblxudmFyIE5vbmNlUHJvdmlkZXIgPSAoZnVuY3Rpb24gKF9yZWYpIHtcbiAgdmFyIG5vbmNlID0gX3JlZi5ub25jZSxcbiAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgY2FjaGVLZXkgPSBfcmVmLmNhY2hlS2V5O1xuICB2YXIgZW1vdGlvbkNhY2hlID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNhY2hlKHtcbiAgICAgIGtleTogY2FjaGVLZXksXG4gICAgICBub25jZTogbm9uY2VcbiAgICB9KTtcbiAgfSwgW2NhY2hlS2V5LCBub25jZV0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ2FjaGVQcm92aWRlciwge1xuICAgIHZhbHVlOiBlbW90aW9uQ2FjaGVcbiAgfSwgY2hpbGRyZW4pO1xufSk7XG5cbmV4cG9ydCB7IE5vbmNlUHJvdmlkZXIsIFN0YXRlTWFuYWdlZFNlbGVjdCQxIGFzIGRlZmF1bHQgfTtcbiIsIi8vIHNyYy9pbmRleC50c1xuaW1wb3J0IHsgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG52YXIgRU1QVFlfVkFMVUUgPSBTeW1ib2woXCJ1c2VMYXp5UmVmIGVtcHR5IHZhbHVlXCIpO1xudmFyIHVzZUxhenlSZWYgPSAoaW5pdCkgPT4ge1xuICBjb25zdCByZXN1bHRSZWYgPSB1c2VSZWYoRU1QVFlfVkFMVUUpO1xuICBpZiAocmVzdWx0UmVmLmN1cnJlbnQgPT09IEVNUFRZX1ZBTFVFKSB7XG4gICAgcmVzdWx0UmVmLmN1cnJlbnQgPSBpbml0KCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdFJlZjtcbn07XG5leHBvcnQge1xuICBFTVBUWV9WQUxVRSxcbiAgdXNlTGF6eVJlZlxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsImltcG9ydCB7IHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuXG5mdW5jdGlvbiB1c2VJc01vdW50ZWRSZWYoKSB7XHJcbiAgICB2YXIgaXNNb3VudGVkUmVmID0gdXNlUmVmKGZhbHNlKTtcclxuICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaXNNb3VudGVkUmVmLmN1cnJlbnQgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlzTW91bnRlZFJlZi5jdXJyZW50ID0gZmFsc2U7XHJcbiAgICAgICAgfTtcclxuICAgIH0sIFtdKTtcclxuICAgIHJldHVybiBpc01vdW50ZWRSZWY7XHJcbn1cblxuZXhwb3J0IHsgdXNlSXNNb3VudGVkUmVmIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZS1pcy1tb3VudGVkLXJlZi5lcy5qcy5tYXBcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCBmcm9tICd1c2UtaXNvbW9ycGhpYy1sYXlvdXQtZWZmZWN0JztcblxudmFyIHVzZUxhdGVzdCA9IGZ1bmN0aW9uIHVzZUxhdGVzdCh2YWx1ZSkge1xuICB2YXIgcmVmID0gUmVhY3QudXNlUmVmKHZhbHVlKTtcbiAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZWY7XG59O1xuXG5leHBvcnQgeyB1c2VMYXRlc3QgYXMgZGVmYXVsdCB9O1xuIiwiLy8gc3JjL29wdGlvbl9yZXN1bHQudHNcbmZ1bmN0aW9uIE9rKHJlc3VsdCkge1xuICBjb25zdCBzZWxmID0ge1xuICAgIGlzT2s6ICgpID0+IHRydWUsXG4gICAgaXNPa0FuZDogKGZuKSA9PiBmbihyZXN1bHQpLFxuICAgIGlzRXJyOiAoKSA9PiBmYWxzZSxcbiAgICBpc0VyckFuZDogKCkgPT4gZmFsc2UsXG4gICAgb2s6ICgpID0+IFNvbWUocmVzdWx0KSxcbiAgICBlcnI6ICgpID0+IE5vbmUoKSxcbiAgICBtYXA6IChmbikgPT4gT2soZm4ocmVzdWx0KSksXG4gICAgbWFwT3I6IChfLCBmbikgPT4gZm4ocmVzdWx0KSxcbiAgICBtYXBPckVsc2U6IChfLCBmbikgPT4gZm4ocmVzdWx0KSxcbiAgICBtYXBFcnI6ICgpID0+IE9rKHJlc3VsdCksXG4gICAgZXhwZWN0OiAoKSA9PiByZXN1bHQsXG4gICAgZXhwZWN0RXJyOiAobXNnKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICB9LFxuICAgIHVud3JhcDogKCkgPT4gcmVzdWx0LFxuICAgIHVud3JhcEVycjogKCkgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3Jlc3VsdH1gKTtcbiAgICB9LFxuICAgIHVud3JhcE9yOiAoKSA9PiByZXN1bHQsXG4gICAgdW53cmFwT3JFbHNlOiAoKSA9PiByZXN1bHQsXG4gICAgYW5kOiAocmVzKSA9PiByZXMsXG4gICAgYW5kVGhlbjogKGdldFJlcykgPT4gZ2V0UmVzKHJlc3VsdCksXG4gICAgb3I6ICgpID0+IE9rKHJlc3VsdCksXG4gICAgb3JFbHNlOiAoKSA9PiBPayhyZXN1bHQpXG4gIH07XG4gIHJldHVybiBzZWxmO1xufVxuZnVuY3Rpb24gRXJyKGVycikge1xuICBjb25zdCBzZWxmID0ge1xuICAgIGlzT2s6ICgpID0+IGZhbHNlLFxuICAgIGlzT2tBbmQ6ICgpID0+IGZhbHNlLFxuICAgIGlzRXJyOiAoKSA9PiB0cnVlLFxuICAgIGlzRXJyQW5kOiAoZm4pID0+IGZuKGVyciksXG4gICAgb2s6ICgpID0+IE5vbmUoKSxcbiAgICBlcnI6ICgpID0+IFNvbWUoZXJyKSxcbiAgICBtYXA6ICgpID0+IEVycihlcnIpLFxuICAgIG1hcE9yOiAoZGVmYXVsdFZhbHVlKSA9PiBkZWZhdWx0VmFsdWUsXG4gICAgbWFwT3JFbHNlOiAoZ2V0RGVmYXVsdFZhbHVlKSA9PiBnZXREZWZhdWx0VmFsdWUoZXJyKSxcbiAgICBtYXBFcnI6IChmbikgPT4gRXJyKGZuKGVycikpLFxuICAgIGV4cGVjdDogKG1zZykgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgfSxcbiAgICBleHBlY3RFcnI6ICgpID0+IGVycixcbiAgICB1bndyYXA6ICgpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtlcnJ9YCk7XG4gICAgfSxcbiAgICB1bndyYXBFcnI6ICgpID0+IGVycixcbiAgICB1bndyYXBPcjogKGRlZmF1bHRWYWx1ZSkgPT4gZGVmYXVsdFZhbHVlLFxuICAgIHVud3JhcE9yRWxzZTogKGdldERlZmF1bHRWYWx1ZSkgPT4gZ2V0RGVmYXVsdFZhbHVlKGVyciksXG4gICAgYW5kOiAoKSA9PiBFcnIoZXJyKSxcbiAgICBhbmRUaGVuOiAoKSA9PiBFcnIoZXJyKSxcbiAgICBvcjogKHJlcykgPT4gcmVzLFxuICAgIG9yRWxzZTogKGdldFJlcykgPT4gZ2V0UmVzKGVycilcbiAgfTtcbiAgcmV0dXJuIHNlbGY7XG59XG5mdW5jdGlvbiBOb25lKCkge1xuICBjb25zdCBzZWxmID0ge1xuICAgIGFuZDogKCkgPT4gTm9uZSgpLFxuICAgIGFuZFRoZW46ICgpID0+IE5vbmUoKSxcbiAgICBleHBlY3Q6IChtc2cpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgIH0sXG4gICAgZmlsdGVyOiAoKSA9PiBzZWxmLFxuICAgIGlzU29tZTogKCkgPT4gZmFsc2UsXG4gICAgaXNTb21lQW5kOiAoKSA9PiBmYWxzZSxcbiAgICBpc05vbmU6ICgpID0+IHRydWUsXG4gICAgbWFwOiAoKSA9PiBOb25lKCksXG4gICAgbWFwT3I6IChkZWZhdWx0VmFsdWUpID0+IGRlZmF1bHRWYWx1ZSxcbiAgICBtYXBPckVsc2U6IChnZXREZWZhdWx0VmFsdWUpID0+IGdldERlZmF1bHRWYWx1ZSgpLFxuICAgIG9rT3I6IChlcnIpID0+IEVycihlcnIpLFxuICAgIG9rT3JFbHNlOiAoZ2V0RXJyKSA9PiBFcnIoZ2V0RXJyKCkpLFxuICAgIG9yOiAob3B0KSA9PiBvcHQsXG4gICAgb3JFbHNlOiAoZm4pID0+IGZuKCksXG4gICAgdW53cmFwOiAoKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJwYW5pYyEgY2FsbCBgdW53cmFwYCBvbiBhIGBOb25lYCB2YWx1ZVwiKTtcbiAgICB9LFxuICAgIHVud3JhcE9yOiAoZGVmYXVsdFZhbHVlKSA9PiBkZWZhdWx0VmFsdWUsXG4gICAgdW53cmFwT3JFbHNlOiAoZ2V0RGVmYXVsdFZhbHVlKSA9PiBnZXREZWZhdWx0VmFsdWUoKSxcbiAgICB4b3I6IChvcHQpID0+IHtcbiAgICAgIGlmIChvcHQuaXNTb21lKCkpIHtcbiAgICAgICAgcmV0dXJuIG9wdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZWxmO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHNlbGY7XG59XG5mdW5jdGlvbiBTb21lKHZhbHVlKSB7XG4gIGNvbnN0IHNlbGYgPSB7XG4gICAgYW5kOiAob3B0KSA9PiBvcHQsXG4gICAgYW5kVGhlbjogKGZuKSA9PiBmbih2YWx1ZSksXG4gICAgZXhwZWN0OiAoKSA9PiB2YWx1ZSxcbiAgICBmaWx0ZXI6IChmbikgPT4ge1xuICAgICAgaWYgKGZuKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gc2VsZjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBOb25lKCk7XG4gICAgfSxcbiAgICBpc1NvbWU6ICgpID0+IHRydWUsXG4gICAgaXNTb21lQW5kOiAoZm4pID0+IGZuKHZhbHVlKSxcbiAgICBpc05vbmU6ICgpID0+IGZhbHNlLFxuICAgIG1hcDogKGZuKSA9PiBTb21lKGZuKHZhbHVlKSksXG4gICAgbWFwT3I6IChfLCBmbikgPT4gZm4odmFsdWUpLFxuICAgIG1hcE9yRWxzZTogKF8sIGZuKSA9PiBmbih2YWx1ZSksXG4gICAgb2tPcjogKCkgPT4gT2sodmFsdWUpLFxuICAgIG9rT3JFbHNlOiAoKSA9PiBPayh2YWx1ZSksXG4gICAgb3I6ICgpID0+IHNlbGYsXG4gICAgb3JFbHNlOiAoKSA9PiBzZWxmLFxuICAgIHVud3JhcDogKCkgPT4gdmFsdWUsXG4gICAgdW53cmFwT3I6ICgpID0+IHZhbHVlLFxuICAgIHVud3JhcE9yRWxzZTogKCkgPT4gdmFsdWUsXG4gICAgeG9yOiAob3B0KSA9PiB7XG4gICAgICBpZiAob3B0LmlzTm9uZSgpKSB7XG4gICAgICAgIHJldHVybiBzZWxmO1xuICAgICAgfVxuICAgICAgcmV0dXJuIE5vbmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiBzZWxmO1xufVxuXG4vLyBzcmMvdG9fb3B0aW9uLnRzXG5mdW5jdGlvbiB0b09wdGlvbihhcmcpIHtcbiAgaWYgKGFyZyA9PT0gbnVsbCB8fCBhcmcgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiBOb25lKCk7XG4gIH1cbiAgcmV0dXJuIFNvbWUoYXJnKTtcbn1cblxuLy8gc3JjL2dldF9yZXN1bHQudHNcbmZ1bmN0aW9uIGdldFJlc3VsdChwcm9taXNlKSB7XG4gIHJldHVybiBwcm9taXNlLnRoZW4oXG4gICAgKHJlc3BvbnNlKSA9PiBPayhyZXNwb25zZSksXG4gICAgKGVycikgPT4gRXJyKGVycilcbiAgKTtcbn1cblxuLy8gc3JjL3Vud3JhcC50c1xuZnVuY3Rpb24gdW53cmFwKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBwYW5pYyEgY2FsbCBcXGB1bndyYXBcXGAgb24gYSBcXGAke3ZhbHVlfVxcYCB2YWx1ZWApO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLy8gc3JjL3Vud3JhcF9vci50c1xuZnVuY3Rpb24gdW53cmFwT3IodmFsdWUsIGRlZmF1bHRWYWx1ZSkge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vLyBzcmMvdW53cmFwX29yX2Vsc2UudHNcbmZ1bmN0aW9uIHVud3JhcE9yRWxzZSh2YWx1ZSwgZ2V0RGVmYXVsdFZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGdldERlZmF1bHRWYWx1ZSgpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLy8gc3JjL3RyeV9jYXRjaC50c1xuZnVuY3Rpb24gdHJ5Q2F0Y2goZm4pIHtcbiAgbGV0IHJlc3VsdDtcbiAgdHJ5IHtcbiAgICByZXN1bHQgPSBmbigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIEVycihlKTtcbiAgfVxuICByZXR1cm4gT2socmVzdWx0KTtcbn1cbmV4cG9ydCB7XG4gIEVycixcbiAgTm9uZSxcbiAgT2ssXG4gIFNvbWUsXG4gIGdldFJlc3VsdCxcbiAgdG9PcHRpb24sXG4gIHRyeUNhdGNoLFxuICB1bndyYXAsXG4gIHVud3JhcE9yLFxuICB1bndyYXBPckVsc2Vcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwIiwidmFyIGU9c2V0VGltZW91dDtmdW5jdGlvbiB0KHQsbil7dmFyIHU9bi51c2VDYWNoZWRTZXRUaW1lb3V0P2U6c2V0VGltZW91dDtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3UoZSx0KX0pKX1mdW5jdGlvbiBuKGUpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSx1PW4udXNlQ2FjaGVkU2V0VGltZW91dCxyPXQoZSx7dXNlQ2FjaGVkU2V0VGltZW91dDp1fSk7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gci50aGVuKChmdW5jdGlvbigpe3JldHVybiBlfSkpfXJldHVybiBvLnRoZW49ZnVuY3Rpb24oKXtyZXR1cm4gci50aGVuLmFwcGx5KHIsYXJndW1lbnRzKX0sby5jYXRjaD1Qcm9taXNlLnJlc29sdmUoKS5jYXRjaCxvfWV4cG9ydCBkZWZhdWx0IG47XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmZ1bmN0aW9uIGNvbXBvc2VSZWZzKCkge1xuICAgIHZhciByZWZzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgcmVmc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICBpZiAocmVmcy5sZW5ndGggPT09IDIpIHsgLy8gbWljcm8tb3B0aW1pemUgdGhlIGhvdCBwYXRoXG4gICAgICAgIHJldHVybiBjb21wb3NlVHdvUmVmcyhyZWZzWzBdLCByZWZzWzFdKSB8fCBudWxsO1xuICAgIH1cbiAgICB2YXIgY29tcG9zZWRSZWYgPSByZWZzLnNsaWNlKDEpLnJlZHVjZShmdW5jdGlvbiAoc2VtaUNvbWJpbmVkUmVmLCByZWZUb0luY2x1ZGUpIHsgcmV0dXJuIGNvbXBvc2VUd29SZWZzKHNlbWlDb21iaW5lZFJlZiwgcmVmVG9JbmNsdWRlKTsgfSwgcmVmc1swXSk7XG4gICAgcmV0dXJuIGNvbXBvc2VkUmVmIHx8IG51bGw7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBjb21wb3NlUmVmcztcbnZhciBjb21wb3NlZFJlZkNhY2hlID0gbmV3IFdlYWtNYXAoKTtcbmZ1bmN0aW9uIGNvbXBvc2VUd29SZWZzKHJlZjEsIHJlZjIpIHtcbiAgICBpZiAocmVmMSAmJiByZWYyKSB7XG4gICAgICAgIHZhciByZWYxQ2FjaGUgPSBjb21wb3NlZFJlZkNhY2hlLmdldChyZWYxKSB8fCBuZXcgV2Vha01hcCgpO1xuICAgICAgICBjb21wb3NlZFJlZkNhY2hlLnNldChyZWYxLCByZWYxQ2FjaGUpO1xuICAgICAgICB2YXIgY29tcG9zZWRSZWYgPSByZWYxQ2FjaGUuZ2V0KHJlZjIpIHx8IChmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHVwZGF0ZVJlZihyZWYxLCBpbnN0YW5jZSk7XG4gICAgICAgICAgICB1cGRhdGVSZWYocmVmMiwgaW5zdGFuY2UpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVmMUNhY2hlLnNldChyZWYyLCBjb21wb3NlZFJlZik7XG4gICAgICAgIHJldHVybiBjb21wb3NlZFJlZjtcbiAgICB9XG4gICAgaWYgKCFyZWYxKSB7XG4gICAgICAgIHJldHVybiByZWYyO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJlZjE7XG4gICAgfVxufVxuZnVuY3Rpb24gdXBkYXRlUmVmKHJlZiwgaW5zdGFuY2UpIHtcbiAgICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZWYoaW5zdGFuY2UpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSBpbnN0YW5jZTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb21wb3NlUmVmcy5qcy5tYXAiLCIvLyBzcmMvaW5kZXgudHNcbmltcG9ydCBTZWxlY3QgZnJvbSBcInJlYWN0LXNlbGVjdFwiO1xuXG4vLyBzcmMvdXNlQXN5bmNQYWdpbmF0ZS50c1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgYXMgdXNlQ2FsbGJhY2syLCB1c2VTdGF0ZSBhcyB1c2VTdGF0ZTIgfSBmcm9tIFwicmVhY3RcIjtcblxuLy8gc3JjL3VzZUFzeW5jUGFnaW5hdGVCYXNlLnRzXG5pbXBvcnQgeyB1c2VMYXp5UmVmIH0gZnJvbSBcIkB2dGFpdHMvdXNlLWxhenktcmVmXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdXNlSXNNb3VudGVkUmVmIGZyb20gXCJ1c2UtaXMtbW91bnRlZC1yZWZcIjtcbmltcG9ydCB1c2VMYXRlc3QgZnJvbSBcInVzZS1sYXRlc3RcIjtcblxuLy8gc3JjL2RlZmF1bHRSZWR1Y2VPcHRpb25zLnRzXG52YXIgZGVmYXVsdFJlZHVjZU9wdGlvbnMgPSAocHJldk9wdGlvbnMsIGxvYWRlZE9wdGlvbnMpID0+IFsuLi5wcmV2T3B0aW9ucywgLi4ubG9hZGVkT3B0aW9uc107XG5cbi8vIHNyYy9kZWZhdWx0U2hvdWxkTG9hZE1vcmUudHNcbnZhciBBVkFJTEFCTEVfREVMVEEgPSAxMDtcbnZhciBkZWZhdWx0U2hvdWxkTG9hZE1vcmUgPSAoc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQsIHNjcm9sbFRvcCkgPT4ge1xuICBjb25zdCBib3R0b21Cb3JkZXIgPSBzY3JvbGxIZWlnaHQgLSBjbGllbnRIZWlnaHQgLSBBVkFJTEFCTEVfREVMVEE7XG4gIHJldHVybiBib3R0b21Cb3JkZXIgPCBzY3JvbGxUb3A7XG59O1xuXG4vLyBzcmMvZ2V0SW5pdGlhbENhY2hlLnRzXG52YXIgZ2V0SW5pdGlhbENhY2hlID0gKHBhcmFtcykgPT4gKHtcbiAgaXNGaXJzdExvYWQ6IHRydWUsXG4gIG9wdGlvbnM6IFtdLFxuICBoYXNNb3JlOiB0cnVlLFxuICBpc0xvYWRpbmc6IGZhbHNlLFxuICBsb2NrZWRVbnRpbDogMCxcbiAgYWRkaXRpb25hbDogcGFyYW1zLmFkZGl0aW9uYWxcbn0pO1xuXG4vLyBzcmMvZ2V0SW5pdGlhbE9wdGlvbnNDYWNoZS50c1xudmFyIGdldEluaXRpYWxPcHRpb25zQ2FjaGUgPSAoe1xuICBvcHRpb25zLFxuICBkZWZhdWx0T3B0aW9ucyxcbiAgYWRkaXRpb25hbCxcbiAgZGVmYXVsdEFkZGl0aW9uYWxcbn0pID0+IHtcbiAgY29uc3QgaW5pdGlhbE9wdGlvbnMgPSBkZWZhdWx0T3B0aW9ucyA9PT0gdHJ1ZSA/IG51bGwgOiBBcnJheS5pc0FycmF5KGRlZmF1bHRPcHRpb25zKSA/IGRlZmF1bHRPcHRpb25zIDogb3B0aW9ucztcbiAgaWYgKGluaXRpYWxPcHRpb25zKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwiXCI6IHtcbiAgICAgICAgaXNGaXJzdExvYWQ6IGZhbHNlLFxuICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICBvcHRpb25zOiBpbml0aWFsT3B0aW9ucyxcbiAgICAgICAgaGFzTW9yZTogdHJ1ZSxcbiAgICAgICAgbG9ja2VkVW50aWw6IDAsXG4gICAgICAgIGFkZGl0aW9uYWw6IGRlZmF1bHRBZGRpdGlvbmFsIHx8IGFkZGl0aW9uYWxcbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIHJldHVybiB7fTtcbn07XG5cbi8vIHNyYy9yZXF1ZXN0T3B0aW9ucy50c1xuaW1wb3J0IHsgZ2V0UmVzdWx0IH0gZnJvbSBcImtydXN0eWtyYWJcIjtcbmltcG9ydCBzbGVlcCBmcm9tIFwic2xlZXAtcHJvbWlzZVwiO1xuXG4vLyBzcmMvdmFsaWRhdGVSZXNwb25zZS50c1xudmFyIGVycm9yVGV4dCA9ICdbcmVhY3Qtc2VsZWN0LWFzeW5jLXBhZ2luYXRlXSByZXNwb25zZSBvZiBcImxvYWRPcHRpb25zXCIgc2hvdWxkIGJlIGFuIG9iamVjdCB3aXRoIFwib3B0aW9uc1wiIHByb3AsIHdoaWNoIGNvbnRhaW5zIGFycmF5IG9mIG9wdGlvbnMuJztcbnZhciBjaGVja0lzUmVzcG9uc2UgPSAocmVzcG9uc2UpID0+IHtcbiAgaWYgKCFyZXNwb25zZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCB7IG9wdGlvbnMsIGhhc01vcmUgfSA9IHJlc3BvbnNlO1xuICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHR5cGVvZiBoYXNNb3JlICE9PSBcImJvb2xlYW5cIiAmJiB0eXBlb2YgaGFzTW9yZSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgdmFsaWRhdGVSZXNwb25zZSA9IChyZXNwb25zZSkgPT4ge1xuICBpZiAoIWNoZWNrSXNSZXNwb25zZShyZXNwb25zZSkpIHtcbiAgICBjb25zb2xlLmVycm9yKGVycm9yVGV4dCwgXCJSZWNlaXZlZDpcIiwgcmVzcG9uc2UpO1xuICAgIHRocm93IG5ldyBFcnJvcihlcnJvclRleHQpO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcblxuLy8gc3JjL3JlcXVlc3RPcHRpb25zLnRzXG52YXIgcmVxdWVzdE9wdGlvbnMgPSBhc3luYyAoY2FsbGVyLCBwYXJhbXNSZWYsIG9wdGlvbnNDYWNoZVJlZiwgZGVib3VuY2VUaW1lb3V0LCBzZXRPcHRpb25zQ2FjaGUsIHJlZHVjZU9wdGlvbnMsIGlzTW91bnRlZFJlZikgPT4ge1xuICBjb25zdCBjdXJyZW50SW5wdXRWYWx1ZSA9IHBhcmFtc1JlZi5jdXJyZW50LmlucHV0VmFsdWU7XG4gIGNvbnN0IGlzQ2FjaGVFbXB0eSA9ICFvcHRpb25zQ2FjaGVSZWYuY3VycmVudFtjdXJyZW50SW5wdXRWYWx1ZV07XG4gIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gaXNDYWNoZUVtcHR5ID8gZ2V0SW5pdGlhbENhY2hlKHBhcmFtc1JlZi5jdXJyZW50KSA6IG9wdGlvbnNDYWNoZVJlZi5jdXJyZW50W2N1cnJlbnRJbnB1dFZhbHVlXTtcbiAgaWYgKGN1cnJlbnRPcHRpb25zLmlzTG9hZGluZyB8fCAhY3VycmVudE9wdGlvbnMuaGFzTW9yZSB8fCBjdXJyZW50T3B0aW9ucy5sb2NrZWRVbnRpbCA+IERhdGUubm93KCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgc2V0T3B0aW9uc0NhY2hlKFxuICAgIChwcmV2T3B0aW9uc0NhY2hlKSA9PiAoe1xuICAgICAgLi4ucHJldk9wdGlvbnNDYWNoZSxcbiAgICAgIFtjdXJyZW50SW5wdXRWYWx1ZV06IHtcbiAgICAgICAgLi4uY3VycmVudE9wdGlvbnMsXG4gICAgICAgIGlzTG9hZGluZzogdHJ1ZVxuICAgICAgfVxuICAgIH0pXG4gICk7XG4gIGlmIChkZWJvdW5jZVRpbWVvdXQgPiAwICYmIGNhbGxlciA9PT0gXCJpbnB1dC1jaGFuZ2VcIikge1xuICAgIGF3YWl0IHNsZWVwKGRlYm91bmNlVGltZW91dCk7XG4gICAgY29uc3QgbmV3SW5wdXRWYWx1ZSA9IHBhcmFtc1JlZi5jdXJyZW50LmlucHV0VmFsdWU7XG4gICAgaWYgKGN1cnJlbnRJbnB1dFZhbHVlICE9PSBuZXdJbnB1dFZhbHVlKSB7XG4gICAgICBzZXRPcHRpb25zQ2FjaGUoKHByZXZPcHRpb25zQ2FjaGUpID0+IHtcbiAgICAgICAgaWYgKGlzQ2FjaGVFbXB0eSkge1xuICAgICAgICAgIGNvbnN0IHsgW2N1cnJlbnRJbnB1dFZhbHVlXTogaXRlbUZvckRlbGV0ZSwgLi4ucmVzdENhY2hlIH0gPSBwcmV2T3B0aW9uc0NhY2hlO1xuICAgICAgICAgIHJldHVybiByZXN0Q2FjaGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2T3B0aW9uc0NhY2hlLFxuICAgICAgICAgIFtjdXJyZW50SW5wdXRWYWx1ZV06IHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnRPcHRpb25zLFxuICAgICAgICAgICAgaXNMb2FkaW5nOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBjb25zdCB7IGxvYWRPcHRpb25zLCByZWxvYWRPbkVycm9yVGltZW91dCA9IDAgfSA9IHBhcmFtc1JlZi5jdXJyZW50O1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRSZXN1bHQoXG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihcbiAgICAgICgpID0+IGxvYWRPcHRpb25zKFxuICAgICAgICBjdXJyZW50SW5wdXRWYWx1ZSxcbiAgICAgICAgY3VycmVudE9wdGlvbnMub3B0aW9ucyxcbiAgICAgICAgY3VycmVudE9wdGlvbnMuYWRkaXRpb25hbFxuICAgICAgKVxuICAgIClcbiAgKTtcbiAgaWYgKCFpc01vdW50ZWRSZWYuY3VycmVudCkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAocmVzdWx0LmlzRXJyKCkpIHtcbiAgICBzZXRPcHRpb25zQ2FjaGUoKHByZXZPcHRpb25zQ2FjaGUpID0+ICh7XG4gICAgICAuLi5wcmV2T3B0aW9uc0NhY2hlLFxuICAgICAgW2N1cnJlbnRJbnB1dFZhbHVlXToge1xuICAgICAgICAuLi5jdXJyZW50T3B0aW9ucyxcbiAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgbG9ja2VkVW50aWw6IERhdGUubm93KCkgKyByZWxvYWRPbkVycm9yVGltZW91dFxuICAgICAgfVxuICAgIH0pKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgcmVzcG9uc2UgPSByZXN1bHQudW53cmFwKCk7XG4gIGlmICh2YWxpZGF0ZVJlc3BvbnNlKHJlc3BvbnNlKSkge1xuICAgIGNvbnN0IHsgb3B0aW9ucywgaGFzTW9yZSB9ID0gcmVzcG9uc2U7XG4gICAgY29uc3QgbmV3QWRkaXRpb25hbCA9IE9iamVjdC5oYXNPd24ocmVzcG9uc2UsIFwiYWRkaXRpb25hbFwiKSA/IHJlc3BvbnNlLmFkZGl0aW9uYWwgOiBjdXJyZW50T3B0aW9ucy5hZGRpdGlvbmFsO1xuICAgIHNldE9wdGlvbnNDYWNoZSgocHJldk9wdGlvbnNDYWNoZSkgPT4gKHtcbiAgICAgIC4uLnByZXZPcHRpb25zQ2FjaGUsXG4gICAgICBbY3VycmVudElucHV0VmFsdWVdOiB7XG4gICAgICAgIC4uLmN1cnJlbnRPcHRpb25zLFxuICAgICAgICBvcHRpb25zOiByZWR1Y2VPcHRpb25zKGN1cnJlbnRPcHRpb25zLm9wdGlvbnMsIG9wdGlvbnMsIG5ld0FkZGl0aW9uYWwpLFxuICAgICAgICBoYXNNb3JlOiAhIWhhc01vcmUsXG4gICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgIGlzRmlyc3RMb2FkOiBmYWxzZSxcbiAgICAgICAgYWRkaXRpb25hbDogbmV3QWRkaXRpb25hbFxuICAgICAgfVxuICAgIH0pKTtcbiAgfVxufTtcblxuLy8gc3JjL3VzZUFzeW5jUGFnaW5hdGVCYXNlLnRzXG52YXIgaW5jcmVhc2VTdGF0ZUlkID0gKHByZXZTdGF0ZUlkKSA9PiBwcmV2U3RhdGVJZCArIDE7XG52YXIgdXNlQXN5bmNQYWdpbmF0ZUJhc2UgPSAocGFyYW1zLCBkZXBzID0gW10pID0+IHtcbiAgY29uc3Qge1xuICAgIGRlZmF1bHRPcHRpb25zLFxuICAgIGxvYWRPcHRpb25zT25NZW51T3BlbiA9IHRydWUsXG4gICAgZGVib3VuY2VUaW1lb3V0ID0gMCxcbiAgICBpbnB1dFZhbHVlLFxuICAgIG1lbnVJc09wZW4sXG4gICAgZmlsdGVyT3B0aW9uID0gbnVsbCxcbiAgICByZWR1Y2VPcHRpb25zID0gZGVmYXVsdFJlZHVjZU9wdGlvbnMsXG4gICAgc2hvdWxkTG9hZE1vcmUgPSBkZWZhdWx0U2hvdWxkTG9hZE1vcmVcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgaXNNb3VudGVkUmVmID0gdXNlSXNNb3VudGVkUmVmKCk7XG4gIGNvbnN0IHJlZHVjZU9wdGlvbnNSZWYgPSB1c2VMYXRlc3QocmVkdWNlT3B0aW9ucyk7XG4gIGNvbnN0IGxvYWRPcHRpb25zT25NZW51T3BlblJlZiA9IHVzZUxhdGVzdChsb2FkT3B0aW9uc09uTWVudU9wZW4pO1xuICBjb25zdCBpc0luaXRSZWYgPSB1c2VSZWYodHJ1ZSk7XG4gIGNvbnN0IHBhcmFtc1JlZiA9IHVzZVJlZihwYXJhbXMpO1xuICBwYXJhbXNSZWYuY3VycmVudCA9IHBhcmFtcztcbiAgY29uc3QgW19zdGF0ZUlkLCBzZXRTdGF0ZUlkXSA9IHVzZVN0YXRlKDApO1xuICBjb25zdCBvcHRpb25zQ2FjaGVSZWYgPSB1c2VMYXp5UmVmKCgpID0+IGdldEluaXRpYWxPcHRpb25zQ2FjaGUocGFyYW1zKSk7XG4gIGNvbnN0IGNhbGxSZXF1ZXN0T3B0aW9uc1JlZiA9IHVzZUxhdGVzdChcbiAgICAoY2FsbGVyKSA9PiB7XG4gICAgICByZXF1ZXN0T3B0aW9ucyhcbiAgICAgICAgY2FsbGVyLFxuICAgICAgICBwYXJhbXNSZWYsXG4gICAgICAgIG9wdGlvbnNDYWNoZVJlZixcbiAgICAgICAgZGVib3VuY2VUaW1lb3V0LFxuICAgICAgICAocmVkdWNlU3RhdGUpID0+IHtcbiAgICAgICAgICBvcHRpb25zQ2FjaGVSZWYuY3VycmVudCA9IHJlZHVjZVN0YXRlKG9wdGlvbnNDYWNoZVJlZi5jdXJyZW50KTtcbiAgICAgICAgICBpZiAoaXNNb3VudGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHNldFN0YXRlSWQoaW5jcmVhc2VTdGF0ZUlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlZHVjZU9wdGlvbnNSZWYuY3VycmVudCxcbiAgICAgICAgaXNNb3VudGVkUmVmXG4gICAgICApO1xuICAgIH1cbiAgKTtcbiAgY29uc3QgaGFuZGxlU2Nyb2xsZWRUb0JvdHRvbSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50SW5wdXRWYWx1ZSA9IHBhcmFtc1JlZi5jdXJyZW50LmlucHV0VmFsdWU7XG4gICAgY29uc3QgY3VycmVudE9wdGlvbnMyID0gb3B0aW9uc0NhY2hlUmVmLmN1cnJlbnRbY3VycmVudElucHV0VmFsdWVdO1xuICAgIGlmIChjdXJyZW50T3B0aW9uczIpIHtcbiAgICAgIGNhbGxSZXF1ZXN0T3B0aW9uc1JlZi5jdXJyZW50KFwibWVudS1zY3JvbGxcIik7XG4gICAgfVxuICB9LCBbY2FsbFJlcXVlc3RPcHRpb25zUmVmLCBvcHRpb25zQ2FjaGVSZWZdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNJbml0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGlzSW5pdFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnNDYWNoZVJlZi5jdXJyZW50ID0ge307XG4gICAgICBzZXRTdGF0ZUlkKGluY3JlYXNlU3RhdGVJZCk7XG4gICAgfVxuICAgIGlmIChkZWZhdWx0T3B0aW9ucyA9PT0gdHJ1ZSkge1xuICAgICAgY2FsbFJlcXVlc3RPcHRpb25zUmVmLmN1cnJlbnQoXCJhdXRvbG9hZFwiKTtcbiAgICB9XG4gIH0sIGRlcHMpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChtZW51SXNPcGVuICYmICFvcHRpb25zQ2FjaGVSZWYuY3VycmVudFtpbnB1dFZhbHVlXSkge1xuICAgICAgY2FsbFJlcXVlc3RPcHRpb25zUmVmLmN1cnJlbnQoXCJpbnB1dC1jaGFuZ2VcIik7XG4gICAgfVxuICB9LCBbY2FsbFJlcXVlc3RPcHRpb25zUmVmLCBpbnB1dFZhbHVlLCBtZW51SXNPcGVuLCBvcHRpb25zQ2FjaGVSZWZdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAobWVudUlzT3BlbiAmJiAhb3B0aW9uc0NhY2hlUmVmLmN1cnJlbnRbXCJcIl0gJiYgbG9hZE9wdGlvbnNPbk1lbnVPcGVuUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNhbGxSZXF1ZXN0T3B0aW9uc1JlZi5jdXJyZW50KFwibWVudS10b2dnbGVcIik7XG4gICAgfVxuICB9LCBbXG4gICAgY2FsbFJlcXVlc3RPcHRpb25zUmVmLFxuICAgIGxvYWRPcHRpb25zT25NZW51T3BlblJlZixcbiAgICBtZW51SXNPcGVuLFxuICAgIG9wdGlvbnNDYWNoZVJlZlxuICBdKTtcbiAgY29uc3QgY3VycmVudE9wdGlvbnMgPSBvcHRpb25zQ2FjaGVSZWYuY3VycmVudFtpbnB1dFZhbHVlXSB8fCBnZXRJbml0aWFsQ2FjaGUocGFyYW1zKTtcbiAgcmV0dXJuIHtcbiAgICBoYW5kbGVTY3JvbGxlZFRvQm90dG9tLFxuICAgIHNob3VsZExvYWRNb3JlLFxuICAgIGZpbHRlck9wdGlvbixcbiAgICBpc0xvYWRpbmc6IGN1cnJlbnRPcHRpb25zLmlzTG9hZGluZyB8fCBjdXJyZW50T3B0aW9ucy5sb2NrZWRVbnRpbCA+IERhdGUubm93KCksXG4gICAgaXNGaXJzdExvYWQ6IGN1cnJlbnRPcHRpb25zLmlzRmlyc3RMb2FkLFxuICAgIG9wdGlvbnM6IGN1cnJlbnRPcHRpb25zLm9wdGlvbnNcbiAgfTtcbn07XG5cbi8vIHNyYy91c2VBc3luY1BhZ2luYXRlLnRzXG52YXIgdXNlQXN5bmNQYWdpbmF0ZSA9IChwYXJhbXMsIGRlcHMgPSBbXSkgPT4ge1xuICBjb25zdCB7XG4gICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZVBhcmFtLFxuICAgIG1lbnVJc09wZW46IG1lbnVJc09wZW5QYXJhbSxcbiAgICBkZWZhdWx0SW5wdXRWYWx1ZTogZGVmYXVsdElucHV0VmFsdWVQYXJhbSxcbiAgICBkZWZhdWx0TWVudUlzT3BlbjogZGVmYXVsdE1lbnVJc09wZW5QYXJhbSxcbiAgICBvbklucHV0Q2hhbmdlOiBvbklucHV0Q2hhbmdlUGFyYW0sXG4gICAgb25NZW51Q2xvc2U6IG9uTWVudUNsb3NlUGFyYW0sXG4gICAgb25NZW51T3Blbjogb25NZW51T3BlblBhcmFtXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IFtpbnB1dFZhbHVlU3RhdGUsIHNldElucHV0VmFsdWVdID0gdXNlU3RhdGUyKFxuICAgIGRlZmF1bHRJbnB1dFZhbHVlUGFyYW0gfHwgXCJcIlxuICApO1xuICBjb25zdCBbbWVudUlzT3BlblN0YXRlLCBzZXRNZW51SXNPcGVuXSA9IHVzZVN0YXRlMighIWRlZmF1bHRNZW51SXNPcGVuUGFyYW0pO1xuICBjb25zdCBpbnB1dFZhbHVlID0gdHlwZW9mIGlucHV0VmFsdWVQYXJhbSA9PT0gXCJzdHJpbmdcIiA/IGlucHV0VmFsdWVQYXJhbSA6IGlucHV0VmFsdWVTdGF0ZTtcbiAgY29uc3QgbWVudUlzT3BlbiA9IHR5cGVvZiBtZW51SXNPcGVuUGFyYW0gPT09IFwiYm9vbGVhblwiID8gbWVudUlzT3BlblBhcmFtIDogbWVudUlzT3BlblN0YXRlO1xuICBjb25zdCBvbklucHV0Q2hhbmdlID0gdXNlQ2FsbGJhY2syKFxuICAgIChuZXh0SW5wdXRWYWx1ZSwgYWN0aW9uTWV0YSkgPT4ge1xuICAgICAgaWYgKG9uSW5wdXRDaGFuZ2VQYXJhbSkge1xuICAgICAgICBvbklucHV0Q2hhbmdlUGFyYW0obmV4dElucHV0VmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgICAgfVxuICAgICAgc2V0SW5wdXRWYWx1ZShuZXh0SW5wdXRWYWx1ZSk7XG4gICAgfSxcbiAgICBbb25JbnB1dENoYW5nZVBhcmFtXVxuICApO1xuICBjb25zdCBvbk1lbnVDbG9zZSA9IHVzZUNhbGxiYWNrMigoKSA9PiB7XG4gICAgaWYgKG9uTWVudUNsb3NlUGFyYW0pIHtcbiAgICAgIG9uTWVudUNsb3NlUGFyYW0oKTtcbiAgICB9XG4gICAgc2V0TWVudUlzT3BlbihmYWxzZSk7XG4gIH0sIFtvbk1lbnVDbG9zZVBhcmFtXSk7XG4gIGNvbnN0IG9uTWVudU9wZW4gPSB1c2VDYWxsYmFjazIoKCkgPT4ge1xuICAgIGlmIChvbk1lbnVPcGVuUGFyYW0pIHtcbiAgICAgIG9uTWVudU9wZW5QYXJhbSgpO1xuICAgIH1cbiAgICBzZXRNZW51SXNPcGVuKHRydWUpO1xuICB9LCBbb25NZW51T3BlblBhcmFtXSk7XG4gIGNvbnN0IGJhc2VSZXN1bHQgPSB1c2VBc3luY1BhZ2luYXRlQmFzZShcbiAgICB7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBpbnB1dFZhbHVlLFxuICAgICAgbWVudUlzT3BlblxuICAgIH0sXG4gICAgZGVwc1xuICApO1xuICByZXR1cm4ge1xuICAgIC4uLmJhc2VSZXN1bHQsXG4gICAgaW5wdXRWYWx1ZSxcbiAgICBtZW51SXNPcGVuLFxuICAgIG9uSW5wdXRDaGFuZ2UsXG4gICAgb25NZW51Q2xvc2UsXG4gICAgb25NZW51T3BlblxuICB9O1xufTtcblxuLy8gc3JjL3VzZUNvbXBvbmVudHMudHNcbmltcG9ydCB7IHVzZU1lbW8gYXMgdXNlTWVtbzIgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNvbXBvbmVudHMgYXMgZGVmYXVsdENvbXBvbmVudHMgfSBmcm9tIFwicmVhY3Qtc2VsZWN0XCI7XG5cbi8vIHNyYy93cmFwTWVudUxpc3QudHN4XG5pbXBvcnQgY29tcG9zZVJlZnMgZnJvbSBcIkBzZXpuYW0vY29tcG9zZS1yZWFjdC1yZWZzXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayBhcyB1c2VDYWxsYmFjazMsIHVzZUVmZmVjdCBhcyB1c2VFZmZlY3QyLCB1c2VNZW1vLCB1c2VSZWYgYXMgdXNlUmVmMiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsganN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG52YXIgQ0hFQ0tfVElNRU9VVCA9IDMwMDtcbmZ1bmN0aW9uIHdyYXBNZW51TGlzdChNZW51TGlzdDIpIHtcbiAgZnVuY3Rpb24gV3JhcHBlZE1lbnVMaXN0KHByb3BzKSB7XG4gICAgY29uc3QgeyBzZWxlY3RQcm9wcywgaW5uZXJSZWYgfSA9IHByb3BzO1xuICAgIGNvbnN0IHsgaGFuZGxlU2Nyb2xsZWRUb0JvdHRvbSwgc2hvdWxkTG9hZE1vcmUgfSA9IHNlbGVjdFByb3BzO1xuICAgIGNvbnN0IGNoZWNrVGltZW91dFJlZiA9IHVzZVJlZjIobnVsbCk7XG4gICAgY29uc3QgbWVudUxpc3RSZWYgPSB1c2VSZWYyKG51bGwpO1xuICAgIGNvbnN0IHNob3VsZEhhbmRsZSA9IHVzZUNhbGxiYWNrMygoKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IG1lbnVMaXN0UmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoIWVsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gZWw7XG4gICAgICByZXR1cm4gc2hvdWxkTG9hZE1vcmUoc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQsIHNjcm9sbFRvcCk7XG4gICAgfSwgW3Nob3VsZExvYWRNb3JlXSk7XG4gICAgY29uc3QgY2hlY2tBbmRIYW5kbGUgPSB1c2VDYWxsYmFjazMoKCkgPT4ge1xuICAgICAgaWYgKHNob3VsZEhhbmRsZSgpKSB7XG4gICAgICAgIGlmIChoYW5kbGVTY3JvbGxlZFRvQm90dG9tKSB7XG4gICAgICAgICAgaGFuZGxlU2Nyb2xsZWRUb0JvdHRvbSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW3Nob3VsZEhhbmRsZSwgaGFuZGxlU2Nyb2xsZWRUb0JvdHRvbV0pO1xuICAgIGNvbnN0IHNldENoZWNrQW5kSGFuZGxlVGltZW91dCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgY29uc3QgcmVzID0gKCkgPT4ge1xuICAgICAgICBjaGVja0FuZEhhbmRsZSgpO1xuICAgICAgICBjaGVja1RpbWVvdXRSZWYuY3VycmVudCA9IHNldFRpbWVvdXQocmVzLCBDSEVDS19USU1FT1VUKTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0sIFtjaGVja0FuZEhhbmRsZV0pO1xuICAgIHVzZUVmZmVjdDIoKCkgPT4ge1xuICAgICAgc2V0Q2hlY2tBbmRIYW5kbGVUaW1lb3V0KCk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBpZiAoY2hlY2tUaW1lb3V0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQoY2hlY2tUaW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIE1lbnVMaXN0MixcbiAgICAgIHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIGlubmVyUmVmOiBjb21wb3NlUmVmcyhpbm5lclJlZiwgbWVudUxpc3RSZWYpXG4gICAgICB9XG4gICAgKTtcbiAgfVxuICByZXR1cm4gV3JhcHBlZE1lbnVMaXN0O1xufVxuXG4vLyBzcmMvdXNlQ29tcG9uZW50cy50c1xudmFyIE1lbnVMaXN0ID0gd3JhcE1lbnVMaXN0KFxuICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IGZpeCB0eXBlc1xuICBkZWZhdWx0Q29tcG9uZW50cy5NZW51TGlzdFxuKTtcbnZhciB1c2VDb21wb25lbnRzID0gKGNvbXBvbmVudHMpID0+IHVzZU1lbW8yKFxuICAoKSA9PiAoe1xuICAgIE1lbnVMaXN0LFxuICAgIC4uLmNvbXBvbmVudHNcbiAgfSksXG4gIFtjb21wb25lbnRzXVxuKTtcblxuLy8gc3JjL3dpdGhBc3luY1BhZ2luYXRlLnRzeFxuaW1wb3J0IHsganN4IGFzIGpzeDIgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbnZhciBkZWZhdWx0Q2FjaGVVbmlxcyA9IFtdO1xudmFyIGRlZmF1bHRDb21wb25lbnRzMiA9IHt9O1xuZnVuY3Rpb24gd2l0aEFzeW5jUGFnaW5hdGUoU2VsZWN0Q29tcG9uZW50KSB7XG4gIGZ1bmN0aW9uIFdpdGhBc3luY1BhZ2luYXRlKHByb3BzKSB7XG4gICAgY29uc3Qge1xuICAgICAgY29tcG9uZW50cyA9IGRlZmF1bHRDb21wb25lbnRzMixcbiAgICAgIHNlbGVjdFJlZiA9IHZvaWQgMCxcbiAgICAgIGlzTG9hZGluZzogaXNMb2FkaW5nUHJvcCxcbiAgICAgIGNhY2hlVW5pcXMgPSBkZWZhdWx0Q2FjaGVVbmlxcyxcbiAgICAgIC4uLnJlc3RcbiAgICB9ID0gcHJvcHM7XG4gICAgY29uc3QgYXN5bmNQYWdpbmF0ZVByb3BzID0gdXNlQXN5bmNQYWdpbmF0ZShyZXN0LCBjYWNoZVVuaXFzKTtcbiAgICBjb25zdCBwcm9jZXNzZWRDb21wb25lbnRzID0gdXNlQ29tcG9uZW50cyhcbiAgICAgIGNvbXBvbmVudHNcbiAgICApO1xuICAgIGNvbnN0IGlzTG9hZGluZyA9IHR5cGVvZiBpc0xvYWRpbmdQcm9wID09PSBcImJvb2xlYW5cIiA/IGlzTG9hZGluZ1Byb3AgOiBhc3luY1BhZ2luYXRlUHJvcHMuaXNMb2FkaW5nO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4MihcbiAgICAgIFNlbGVjdENvbXBvbmVudCxcbiAgICAgIHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIC4uLmFzeW5jUGFnaW5hdGVQcm9wcyxcbiAgICAgICAgaXNMb2FkaW5nLFxuICAgICAgICBjb21wb25lbnRzOiBwcm9jZXNzZWRDb21wb25lbnRzLFxuICAgICAgICByZWY6IHNlbGVjdFJlZlxuICAgICAgfVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIFdpdGhBc3luY1BhZ2luYXRlO1xufVxuXG4vLyBzcmMvcmVkdWNlR3JvdXBlZE9wdGlvbnMudHNcbnZhciBjaGVja0dyb3VwID0gKGdyb3VwKSA9PiB7XG4gIGlmICghZ3JvdXApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgeyBsYWJlbCwgb3B0aW9ucyB9ID0gZ3JvdXA7XG4gIGlmICh0eXBlb2YgbGFiZWwgIT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIGxhYmVsICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgcmVkdWNlR3JvdXBlZE9wdGlvbnMgPSAocHJldk9wdGlvbnMsIGxvYWRlZE9wdGlvbnMpID0+IHtcbiAgY29uc3QgcmVzID0gcHJldk9wdGlvbnMuc2xpY2UoKTtcbiAgY29uc3QgbWFwTGFiZWxUb0luZGV4ID0ge307XG4gIGxldCBwcmV2T3B0aW9uc0luZGV4ID0gMDtcbiAgY29uc3QgcHJldk9wdGlvbnNMZW5ndGggPSBwcmV2T3B0aW9ucy5sZW5ndGg7XG4gIGZvciAoY29uc3Qgb3B0aW9uT3JHcm91cCBvZiBsb2FkZWRPcHRpb25zKSB7XG4gICAgY29uc3QgZ3JvdXAgPSBjaGVja0dyb3VwKG9wdGlvbk9yR3JvdXApID8gb3B0aW9uT3JHcm91cCA6IHtcbiAgICAgIG9wdGlvbnM6IFtvcHRpb25Pckdyb3VwXVxuICAgIH07XG4gICAgY29uc3QgeyBsYWJlbCA9IFwiXCIgfSA9IGdyb3VwO1xuICAgIGxldCBncm91cEluZGV4ID0gbWFwTGFiZWxUb0luZGV4W2xhYmVsXTtcbiAgICBpZiAodHlwZW9mIGdyb3VwSW5kZXggIT09IFwibnVtYmVyXCIpIHtcbiAgICAgIGZvciAoOyBwcmV2T3B0aW9uc0luZGV4IDwgcHJldk9wdGlvbnNMZW5ndGggJiYgdHlwZW9mIG1hcExhYmVsVG9JbmRleFtsYWJlbF0gIT09IFwibnVtYmVyXCI7ICsrcHJldk9wdGlvbnNJbmRleCkge1xuICAgICAgICBjb25zdCBwcmV2R3JvdXAgPSBwcmV2T3B0aW9uc1twcmV2T3B0aW9uc0luZGV4XTtcbiAgICAgICAgaWYgKGNoZWNrR3JvdXAocHJldkdyb3VwKSkge1xuICAgICAgICAgIG1hcExhYmVsVG9JbmRleFtwcmV2R3JvdXAubGFiZWwgfHwgXCJcIl0gPSBwcmV2T3B0aW9uc0luZGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBncm91cEluZGV4ID0gbWFwTGFiZWxUb0luZGV4W2xhYmVsXTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBncm91cEluZGV4ICE9PSBcIm51bWJlclwiKSB7XG4gICAgICBtYXBMYWJlbFRvSW5kZXhbbGFiZWxdID0gcmVzLmxlbmd0aDtcbiAgICAgIHJlcy5wdXNoKGdyb3VwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzW2dyb3VwSW5kZXhdID0ge1xuICAgICAgICAuLi5yZXNbZ3JvdXBJbmRleF0sXG4gICAgICAgIG9wdGlvbnM6IFsuLi5yZXNbZ3JvdXBJbmRleF0ub3B0aW9ucywgLi4uZ3JvdXAub3B0aW9uc11cbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59O1xuXG4vLyBzcmMvaW5kZXgudHNcbnZhciBBc3luY1BhZ2luYXRlID0gd2l0aEFzeW5jUGFnaW5hdGUoU2VsZWN0KTtcbmV4cG9ydCB7XG4gIEFzeW5jUGFnaW5hdGUsXG4gIGNoZWNrSXNSZXNwb25zZSxcbiAgcmVkdWNlR3JvdXBlZE9wdGlvbnMsXG4gIHVzZUFzeW5jUGFnaW5hdGUsXG4gIHVzZUFzeW5jUGFnaW5hdGVCYXNlLFxuICB1c2VDb21wb25lbnRzLFxuICB2YWxpZGF0ZVJlc3BvbnNlLFxuICB3aXRoQXN5bmNQYWdpbmF0ZSxcbiAgd3JhcE1lbnVMaXN0XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiaW1wb3J0IHtTaG9wfSBmcm9tIFwiLi9zaG9wXCJcblxuZXhwb3J0IGNsYXNzIExheW91dGVyRGF0YSB7XG4gICAgZmlyc3RuYW1lOiBzdHJpbmdcbiAgICBjb21wYW55OiBzdHJpbmdcbiAgICBsYXN0bmFtZTogc3RyaW5nXG4gICAgc3RyZWV0OiBzdHJpbmdcbiAgICBob3VzZU51bWJlcjogc3RyaW5nXG4gICAgemlwOiBzdHJpbmdcbiAgICBjaXR5OiBzdHJpbmdcbiAgICBwaG9uZTogc3RyaW5nXG4gICAgY291bnRyeTogc3RyaW5nXG4gICAgdXN0aWQ6IHN0cmluZ1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZmlyc3RuYW1lID0gXCJcIlxuICAgICAgICB0aGlzLmNvbXBhbnkgPSBcIlwiXG4gICAgICAgIHRoaXMubGFzdG5hbWUgPSBcIlwiXG4gICAgICAgIHRoaXMuc3RyZWV0ID0gXCJcIlxuICAgICAgICB0aGlzLmhvdXNlTnVtYmVyID0gXCJcIlxuICAgICAgICB0aGlzLnppcCA9IFwiXCJcbiAgICAgICAgdGhpcy5jaXR5ID0gXCJcIlxuICAgICAgICB0aGlzLnBob25lID0gXCJcIlxuICAgICAgICB0aGlzLmNvdW50cnkgPSBcIlwiXG4gICAgICAgIHRoaXMudXN0aWQgPSBcIlwiXG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIENvbnRhY3Qge1xuICAgIHVpZDogbnVtYmVyXG4gICAgdXNlcm5hbWU6IHN0cmluZ1xuICAgIGVtYWlsOiBzdHJpbmdcbiAgICBwYXNzd29yZDogc3RyaW5nXG4gICAgdXVpZDogc3RyaW5nXG4gICAgc2hvcHM6IFNob3BbXVxuICAgIGxheW91dGVyX2RhdGE6IExheW91dGVyRGF0YVxuXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy51aWQgPSAwXG4gICAgICAgIHRoaXMudXVpZCA9IFwiXCJcbiAgICAgICAgdGhpcy51c2VybmFtZSA9IFwiXCJcbiAgICAgICAgdGhpcy5lbWFpbCA9IFwiXCJcbiAgICAgICAgdGhpcy5wYXNzd29yZCA9IFwiXCJcbiAgICAgICAgdGhpcy5zaG9wcyA9IFtdXG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YSA9IG5ldyBMYXlvdXRlckRhdGEoKVxuICAgIH1cblxuICAgIHBhcnNlRnJvbUpzb24oaXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMudWlkID0gaXRlbS5jb250YWN0LnVpZFxuICAgICAgICB0aGlzLnV1aWQgPSBpdGVtLmNvbnRhY3QudXVpZFxuICAgICAgICB0aGlzLmVtYWlsID0gaXRlbS5jb250YWN0LmVtYWlsXG4gICAgICAgIHRoaXMudXNlcm5hbWUgPSBpdGVtLmNvbnRhY3QudXNlcm5hbWVcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLmZpcnN0bmFtZSA9IGl0ZW0uY29udGFjdC5sYXlvdXRlcl9kYXRhLmZpcnN0bmFtZVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuY29tcGFueSA9IGl0ZW0uY29udGFjdC5sYXlvdXRlcl9kYXRhLmNvbXBhbnlcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLmxhc3RuYW1lID0gaXRlbS5jb250YWN0LmxheW91dGVyX2RhdGEubGFzdG5hbWVcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLnN0cmVldCA9IGl0ZW0uY29udGFjdC5sYXlvdXRlcl9kYXRhLnN0cmVldFxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuaG91c2VOdW1iZXIgPSBpdGVtLmNvbnRhY3QubGF5b3V0ZXJfZGF0YS5ob3VzZU51bWJlclxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuemlwID0gaXRlbS5jb250YWN0LmxheW91dGVyX2RhdGEuemlwXG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS5jaXR5ID0gaXRlbS5jb250YWN0LmxheW91dGVyX2RhdGEuY2l0eVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEucGhvbmUgPSBpdGVtLmNvbnRhY3QubGF5b3V0ZXJfZGF0YS5waG9uZVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuY291bnRyeSA9IGl0ZW0uY29udGFjdC5sYXlvdXRlcl9kYXRhLmNvdW50cnlcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLnVzdGlkID0gaXRlbS5jb250YWN0LmxheW91dGVyX2RhdGEudXN0aWRcbiAgICB9XG5cbiAgICBwYXJzZUZyb21Gb3JtRGF0YShmb3JtZGF0YTogYW55LCBzaG9wOiBTaG9wID0gbnVsbCkge1xuXG4gICAgICAgIHRoaXMuZW1haWwgPSBmb3JtZGF0YS5lbWFpbFxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuY29tcGFueSA9IGZvcm1kYXRhLmNvbXBhbnlcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLmZpcnN0bmFtZSA9IGZvcm1kYXRhLmZpcnN0bmFtZVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEubGFzdG5hbWUgPSBmb3JtZGF0YS5sYXN0bmFtZVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuc3RyZWV0ID0gZm9ybWRhdGEuc3RyZWV0XG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS5ob3VzZU51bWJlciA9IGZvcm1kYXRhLmhvdXNlTnVtYmVyXG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS56aXAgPSBmb3JtZGF0YS56aXBcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLmNpdHkgPSBmb3JtZGF0YS5jaXR5XG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS5waG9uZSA9IGZvcm1kYXRhLnBob25lXG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS5jb3VudHJ5ID0gZm9ybWRhdGEuY291bnRyeVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEudXN0aWQgPSBmb3JtZGF0YS51c3RpZFxuICAgICAgICBpZihzaG9wKSB7XG4gICAgICAgICAgICB0aGlzLnNob3BzLnB1c2goc2hvcClcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsImltcG9ydCB7YXV0b0luamVjdGFibGUsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiLi90b2tlblwiO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IENvbnRhY3QgfSBmcm9tIFwiLi4vbW9kZWwvY29udGFjdFwiO1xuaW1wb3J0IHsgQWRkcmVzcyB9IGZyb20gXCIuLi9tb2RlbC9hZGRyZXNzXCI7XG5pbXBvcnQgeyBTaG9wIH0gZnJvbSBcIi4uL21vZGVsL3Nob3BcIjtcblxuQHNpbmdsZXRvbigpXG5AYXV0b0luamVjdGFibGUoKVxuY2xhc3MgQ29udGFjdFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRva2VuPzogVG9rZW4pIHt9XG5cbiAgYXN5bmMgY3JlYXRlQ29udGFjdChjb250YWN0OiBDb250YWN0KTogUHJvbWlzZTxDb250YWN0PiB7XG5cbiAgICByZXR1cm4gYXdhaXQgYXhpb3MucG9zdCgnL2FwcHMvYXBpL2NvbnRhY3QvY3JlYXRlJywgeydjb250YWN0JzogY29udGFjdH0gLHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLnRva2VuPy5jdXJyZW50VG9rZW5cbiAgICAgIH1cbiAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZUNvbnRhY3QoY29udGFjdDogQ29udGFjdCk6IFByb21pc2U8Q29udGFjdD4ge1xuXG4gICAgcmV0dXJuIGF3YWl0IGF4aW9zLnB1dCgnL2FwcHMvYXBpL2NvbnRhY3QvdXBkYXRlLycgKyBjb250YWN0LnV1aWQsIHsnY29udGFjdCc6IGNvbnRhY3R9ICx7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICB9XG4gICAgfSkudGhlbigoIHJlc3BvbnNlICkgPT4ge1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnZXRDb250YWN0cyhzZWFyY2hRdWVyeTogU3RyaW5nLCBwYWdlOiBOdW1iZXIsIHNob3A6IFNob3ApOiBQcm9taXNlPENvbnRhY3RbXT4ge1xuXG4gICAgcmV0dXJuIGF3YWl0IGF4aW9zLmdldCgnL2FwcHMvYXBpL2NvbnRhY3QvYWxsYnlzaG9wLycgKyBzaG9wLnV1aWQgKyAnP3Rlcm09JyArIHNlYXJjaFF1ZXJ5ICsgJyZwYWdlPScgKyBwYWdlLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICAgIH1cbiAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICBsZXQgY29udGFjdCA9IG5ldyBDb250YWN0O1xuICAgICAgICAgIGNvbnRhY3QucGFyc2VGcm9tSnNvbih7Y29udGFjdDogaXRlbX0pO1xuICAgICAgICAgIHJldHVybiBjb250YWN0O1xuICAgICAgICB9KVxuICAgIFxuICAgIH0pO1xuICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29udGFjdFNlcnZpY2VcbiIsImltcG9ydCB2YWxpZGF0ZSBmcm9tICcuL3ZhbGlkYXRlLmpzJztcbmNvbnN0IGJ5dGVUb0hleCA9IFtdO1xuZm9yIChsZXQgaSA9IDA7IGkgPCAyNTY7ICsraSkge1xuICAgIGJ5dGVUb0hleC5wdXNoKChpICsgMHgxMDApLnRvU3RyaW5nKDE2KS5zbGljZSgxKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdW5zYWZlU3RyaW5naWZ5KGFyciwgb2Zmc2V0ID0gMCkge1xuICAgIHJldHVybiAoYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAwXV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDFdXSArXG4gICAgICAgIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMl1dICtcbiAgICAgICAgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAzXV0gK1xuICAgICAgICAnLScgK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDRdXSArXG4gICAgICAgIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgNV1dICtcbiAgICAgICAgJy0nICtcbiAgICAgICAgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA2XV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDddXSArXG4gICAgICAgICctJyArXG4gICAgICAgIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgOF1dICtcbiAgICAgICAgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA5XV0gK1xuICAgICAgICAnLScgK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDEwXV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDExXV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDEyXV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDEzXV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDE0XV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDE1XV0pLnRvTG93ZXJDYXNlKCk7XG59XG5mdW5jdGlvbiBzdHJpbmdpZnkoYXJyLCBvZmZzZXQgPSAwKSB7XG4gICAgY29uc3QgdXVpZCA9IHVuc2FmZVN0cmluZ2lmeShhcnIsIG9mZnNldCk7XG4gICAgaWYgKCF2YWxpZGF0ZSh1dWlkKSkge1xuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoJ1N0cmluZ2lmaWVkIFVVSUQgaXMgaW52YWxpZCcpO1xuICAgIH1cbiAgICByZXR1cm4gdXVpZDtcbn1cbmV4cG9ydCBkZWZhdWx0IHN0cmluZ2lmeTtcbiIsImxldCBnZXRSYW5kb21WYWx1ZXM7XG5jb25zdCBybmRzOCA9IG5ldyBVaW50OEFycmF5KDE2KTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJuZygpIHtcbiAgICBpZiAoIWdldFJhbmRvbVZhbHVlcykge1xuICAgICAgICBpZiAodHlwZW9mIGNyeXB0byA9PT0gJ3VuZGVmaW5lZCcgfHwgIWNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignY3J5cHRvLmdldFJhbmRvbVZhbHVlcygpIG5vdCBzdXBwb3J0ZWQuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdXVpZGpzL3V1aWQjZ2V0cmFuZG9tdmFsdWVzLW5vdC1zdXBwb3J0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBnZXRSYW5kb21WYWx1ZXMgPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzLmJpbmQoY3J5cHRvKTtcbiAgICB9XG4gICAgcmV0dXJuIGdldFJhbmRvbVZhbHVlcyhybmRzOCk7XG59XG4iLCJjb25zdCByYW5kb21VVUlEID0gdHlwZW9mIGNyeXB0byAhPT0gJ3VuZGVmaW5lZCcgJiYgY3J5cHRvLnJhbmRvbVVVSUQgJiYgY3J5cHRvLnJhbmRvbVVVSUQuYmluZChjcnlwdG8pO1xuZXhwb3J0IGRlZmF1bHQgeyByYW5kb21VVUlEIH07XG4iLCJpbXBvcnQgbmF0aXZlIGZyb20gJy4vbmF0aXZlLmpzJztcbmltcG9ydCBybmcgZnJvbSAnLi9ybmcuanMnO1xuaW1wb3J0IHsgdW5zYWZlU3RyaW5naWZ5IH0gZnJvbSAnLi9zdHJpbmdpZnkuanMnO1xuZnVuY3Rpb24gdjQob3B0aW9ucywgYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAobmF0aXZlLnJhbmRvbVVVSUQgJiYgIWJ1ZiAmJiAhb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gbmF0aXZlLnJhbmRvbVVVSUQoKTtcbiAgICB9XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgY29uc3Qgcm5kcyA9IG9wdGlvbnMucmFuZG9tIHx8IChvcHRpb25zLnJuZyB8fCBybmcpKCk7XG4gICAgcm5kc1s2XSA9IChybmRzWzZdICYgMHgwZikgfCAweDQwO1xuICAgIHJuZHNbOF0gPSAocm5kc1s4XSAmIDB4M2YpIHwgMHg4MDtcbiAgICBpZiAoYnVmKSB7XG4gICAgICAgIG9mZnNldCA9IG9mZnNldCB8fCAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDE2OyArK2kpIHtcbiAgICAgICAgICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHJuZHNbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJ1ZjtcbiAgICB9XG4gICAgcmV0dXJuIHVuc2FmZVN0cmluZ2lmeShybmRzKTtcbn1cbmV4cG9ydCBkZWZhdWx0IHY0O1xuIiwiaW1wb3J0IHt2NCBhcyB1dWlkdjR9IGZyb20gJ3V1aWQnXG5cbmV4cG9ydCBjbGFzcyBBY2NvdW50IHtcbiAgICB1aWQ6IE51bWJlclxuICAgIGFwcGVuZGl4OiBTdHJpbmdcbiAgICB0aXRsZTogU3RyaW5nXG4gICAgdXVpZDogU3RyaW5nXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy51aWQgPSAwXG4gICAgICAgIHRoaXMudXVpZCA9IFwiXCJcbiAgICAgICAgdGhpcy5hcHBlbmRpeCA9IFwiXCJcbiAgICAgICAgdGhpcy50aXRsZSA9IFwiXCJcbiAgICB9XG5cbiAgICBwYXJzZUZyb21Kc29uKGl0ZW06IGFueSkge1xuICAgICAgICB0aGlzLnVpZCA9IGl0ZW0uYWNjb3VudC51aWRcbiAgICAgICAgdGhpcy51dWlkID0gaXRlbS5hY2NvdW50LnV1aWRcbiAgICAgICAgdGhpcy50aXRsZSA9IGl0ZW0uYWNjb3VudC50aXRsZVxuICAgICAgICB0aGlzLmFwcGVuZGl4ID0gaXRlbS5hY2NvdW50LmFwcGVuZGl4XG4gICAgfVxufSIsImltcG9ydCB7djQgYXMgdXVpZHY0fSBmcm9tICd1dWlkJ1xuaW1wb3J0IHtDb250YWN0fSBmcm9tIFwiLi9jb250YWN0XCJcbmltcG9ydCB7U2hvcH0gZnJvbSBcIi4vc2hvcFwiXG5cbmV4cG9ydCBjbGFzcyBBZGRyZXNzIHtcbiAgICB1aWQ6IE51bWJlclxuICAgIHV1aWQ6IFN0cmluZ1xuICAgIGZpcnN0bmFtZTogU3RyaW5nXG4gICAgbGFzdG5hbWU6IFN0cmluZ1xuICAgIHN0cmVldDogU3RyaW5nXG4gICAgaG91c2VOdW1iZXI6IFN0cmluZ1xuICAgIHppcDogU3RyaW5nXG4gICAgY29tcGFueTogU3RyaW5nXG4gICAgY29tcGFueTI6IFN0cmluZ1xuICAgIHBob25lOiBTdHJpbmdcbiAgICBjb3VudHJ5OiBTdHJpbmdcbiAgICB1c3RpZDogU3RyaW5nXG4gICAgY2l0eTogU3RyaW5nXG4gICAgZW1haWw6IFN0cmluZ1xuICAgIGNvbnRhY3Q6IENvbnRhY3RcbiAgICB0eXBlOiBOdW1iZXJcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnVpZCA9IDBcbiAgICAgICAgdGhpcy51dWlkID0gXCJcIlxuICAgICAgICB0aGlzLmZpcnN0bmFtZSA9IFwiXCJcbiAgICAgICAgdGhpcy5sYXN0bmFtZSA9IFwiXCJcbiAgICAgICAgdGhpcy5zdHJlZXQgPSBcIlwiXG4gICAgICAgIHRoaXMuaG91c2VOdW1iZXIgPSBcIlwiXG4gICAgICAgIHRoaXMuemlwID0gXCJcIlxuICAgICAgICB0aGlzLmNvbXBhbnkgPSBcIlwiXG4gICAgICAgIHRoaXMuY29tcGFueTIgPSBcIlwiXG4gICAgICAgIHRoaXMuY2l0eSA9IFwiXCJcbiAgICAgICAgdGhpcy5lbWFpbCA9IFwiXCJcbiAgICAgICAgdGhpcy5jb3VudHJ5ID0gXCJcIlxuICAgICAgICB0aGlzLnVzdGlkID0gXCJcIlxuICAgICAgICB0aGlzLmNvbnRhY3QgPSBuZXcgQ29udGFjdCgpXG4gICAgICAgIHRoaXMudHlwZSA9IDBcbiAgICB9XG5cbiAgICBwYXJzZUZyb21Kc29uKGl0ZW06IGFueSkge1xuICAgICAgICB0aGlzLnVpZCA9IGl0ZW0udWlkXG4gICAgICAgIHRoaXMudXVpZCA9IGl0ZW0udXVpZFxuICAgICAgICB0aGlzLmZpcnN0bmFtZSA9IGl0ZW0uZmlyc3RuYW1lXG4gICAgICAgIHRoaXMubGFzdG5hbWUgPSBpdGVtLmxhc3RuYW1lXG4gICAgICAgIHRoaXMuc3RyZWV0ID0gaXRlbS5zdHJlZXRcbiAgICAgICAgdGhpcy5ob3VzZU51bWJlciA9IGl0ZW0uaG91c2VOdW1iZXJcbiAgICAgICAgdGhpcy56aXAgPSBpdGVtLnppcFxuICAgICAgICB0aGlzLmNvbXBhbnkgPSBpdGVtLmNvbXBhbnlcbiAgICAgICAgdGhpcy5jb21wYW55MiA9IGl0ZW0uY29tcGFueTJcbiAgICAgICAgdGhpcy5waG9uZSA9IGl0ZW0ucGhvbmVcbiAgICAgICAgdGhpcy5jaXR5ID0gaXRlbS5jaXR5XG4gICAgICAgIHRoaXMuZW1haWwgPSBpdGVtLmVtYWlsXG4gICAgICAgIHRoaXMudHlwZSA9IGl0ZW0udHlwZVxuICAgICAgICB0aGlzLmNvdW50cnkgPSBpdGVtLmNvdW50cnlcbiAgICAgICAgdGhpcy51c3RpZCA9IGl0ZW0udXN0aWRcbiAgICB9XG5cbiAgICBwYXJzZUZyb21Gb3JtRGF0YShmb3JtZGF0YTogYW55KSB7XG5cbiAgICAgICAgdGhpcy5lbWFpbCA9IGZvcm1kYXRhLmVtYWlsXG4gICAgICAgIHRoaXMuY29tcGFueSA9IGZvcm1kYXRhLmNvbXBhbnlcbiAgICAgICAgdGhpcy5maXJzdG5hbWUgPSBmb3JtZGF0YS5maXJzdG5hbWVcbiAgICAgICAgdGhpcy5sYXN0bmFtZSA9IGZvcm1kYXRhLmxhc3RuYW1lXG4gICAgICAgIHRoaXMuc3RyZWV0ID0gZm9ybWRhdGEuc3RyZWV0XG4gICAgICAgIHRoaXMuaG91c2VOdW1iZXIgPSBmb3JtZGF0YS5ob3VzZU51bWJlclxuICAgICAgICB0aGlzLnppcCA9IGZvcm1kYXRhLnppcFxuICAgICAgICB0aGlzLmNpdHkgPSBmb3JtZGF0YS5jaXR5XG4gICAgICAgIHRoaXMucGhvbmUgPSBmb3JtZGF0YS5waG9uZVxuICAgICAgICB0aGlzLmNvdW50cnkgPSBmb3JtZGF0YS5jb3VudHJ5XG4gICAgICAgIHRoaXMudXN0aWQgPSBmb3JtZGF0YS51c3RpZFxuICAgIH1cbn0iLCJpbnRlcmZhY2UgUGFyYW0ge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXJcbn1cblxuZXhwb3J0IGNsYXNzIFNwZWNpYWxQcm9kdWN0VHlwZU9iamVjdCB7XG4gICAgcGFyYW1zOiBBcnJheTxQYXJhbT4gPSBbXVxuICAgIHR5cDogTnVtYmVyID0gMFxuXG4gICAgcGFyc2VGcm9tSnNvbihpdGVtOiBhbnkpIHtcbiAgICAgICAgdGhpcy50eXAgPSBpdGVtLnR5cFxuICAgICAgICB0aGlzLnBhcmFtcyA9IGl0ZW0ucGFyYW1zXG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvZHVjdCB7XG4gICAgaWQ6IE51bWJlciA9IDBcbiAgICB0aXRsZTogU3RyaW5nID0gXCJcIlxuICAgIHV1aWQ6IFN0cmluZyA9IFwiXCJcbiAgICBzcGVjaWFsUHJvZHVjdFR5cGVPYmplY3Q6IFNwZWNpYWxQcm9kdWN0VHlwZU9iamVjdCA9IG5ldyBTcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QoKVxuXG4gICAgcGFyc2VGcm9tSnNvbihpdGVtOiBhbnkpIHtcbiAgICAgICAgdGhpcy5pZCA9IGl0ZW0uaWRcbiAgICAgICAgdGhpcy50aXRsZSA9IGl0ZW0udGl0bGVcbiAgICAgICAgdGhpcy51dWlkID0gaXRlbS51dWlkXG4gICAgICAgIHRoaXMuc3BlY2lhbFByb2R1Y3RUeXBlT2JqZWN0LnBhcnNlRnJvbUpzb24oaXRlbS5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QpXG4gICAgfVxufSIsImV4cG9ydCBjbGFzcyBQcmljZSB7XHJcbiAgICBuZXQ6IG51bWJlciA9IDBcclxuICAgIHZhdDogbnVtYmVyID0gMFxyXG4gICAgZ3Jvc3M6IG51bWJlciA9IDBcclxuXHJcbiAgICBhbGxOZXQ6IG51bWJlciA9IDBcclxuICAgIGFsbFZhdDogbnVtYmVyID0gMFxyXG4gICAgYWxsR3Jvc3M6IG51bWJlciA9IDBcclxuXHJcbiAgICBwYXJzZUZyb21Kc29uKGl0ZW06IGFueSkge1xyXG4gICAgICAgIHRoaXMubmV0ID0gaXRlbS5uZXRcclxuICAgICAgICB0aGlzLnZhdCA9IGl0ZW0udmF0XHJcbiAgICAgICAgdGhpcy5ncm9zcyA9IGl0ZW0uZ3Jvc3NcclxuICAgICAgICB0aGlzLmFsbE5ldCA9IGl0ZW0uYWxsTmV0XHJcbiAgICAgICAgdGhpcy5hbGxWYXQgPSBpdGVtLmFsbFZhdFxyXG4gICAgICAgIHRoaXMuYWxsR3Jvc3MgPSBpdGVtLmFsbEdyb3NzXHJcbiAgICB9XHJcbn0iLCJpbXBvcnQge3Y0IGFzIHV1aWR2NH0gZnJvbSAndXVpZCdcclxuaW1wb3J0IHtQcm9kdWN0fSBmcm9tIFwiLi9wcm9kdWN0XCJcclxuaW1wb3J0IHtQcmljZX0gZnJvbSBcIi4vcHJpY2VcIlxyXG5cclxuZXhwb3J0IGNsYXNzIFBvcyB7XHJcbiAgICB1dWlkOiBTdHJpbmcgPSBcIlwiXHJcbiAgICBwcm9kdWN0OiBQcm9kdWN0ID0gbmV3IFByb2R1Y3QoKVxyXG4gICAgc3RhdHVzOiBOdW1iZXIgPSAxMFxyXG4gICAgY291bnQ6IE51bWJlciA9IDFcclxuICAgIHByaWNlOiBQcmljZSA9IG5ldyBQcmljZSgpXHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy51dWlkID0gdXVpZHY0KClcclxuICAgIH1cclxuXHJcbiAgICBwYXJzZUZyb21Kc29uKGl0ZW06IGFueSkge1xyXG4gICAgICAgIHRoaXMuY291bnQgPSBpdGVtLnByaWNlLmNvdW50XHJcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBpdGVtLnN0YXR1c1xyXG4gICAgICAgIHRoaXMudXVpZCA9IGl0ZW0udXVpZFxyXG4gICAgICAgIHRoaXMucHJpY2UucGFyc2VGcm9tSnNvbihpdGVtLnByaWNlKVxyXG4gICAgICAgIHRoaXMucHJvZHVjdC5wYXJzZUZyb21Kc29uKGl0ZW0ucHJvZHVjdClcclxuICAgIH1cclxufSIsImV4cG9ydCBjbGFzcyBQYXltZW50IHtcbiAgICB1aWQ6IE51bWJlciA9IDBcbiAgICB0aXRsZTogU3RyaW5nID0gXCJcIlxuICAgIHV1aWQ6IFN0cmluZyA9IFwiXCJcblxuICAgIHBhcnNlRnJvbUpzb24oaXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMudWlkID0gaXRlbS5wYXltZW50LnVpZFxuICAgICAgICB0aGlzLnRpdGxlID0gaXRlbS5wYXltZW50LnRpdGxlXG4gICAgICAgIHRoaXMudXVpZCA9IFN0cmluZyhpdGVtLnBheW1lbnQudXVpZClcbiAgICB9XG59IiwiXG5leHBvcnQgY2xhc3MgU2hpcHBpbmcge1xuICAgIHVpZDogTnVtYmVyID0gMFxuICAgIHRpdGxlOiBTdHJpbmcgPSBcIlwiXG4gICAgdXVpZDogU3RyaW5nID0gXCJcIlxuXG4gICAgcGFyc2VGcm9tSnNvbihpdGVtOiBhbnkpIHtcbiAgICAgICAgdGhpcy51aWQgPSBpdGVtLnNoaXBwaW5nLnVpZFxuICAgICAgICB0aGlzLnRpdGxlID0gaXRlbS5zaGlwcGluZy50aXRsZVxuICAgICAgICB0aGlzLnV1aWQgPSBTdHJpbmcoaXRlbS5zaGlwcGluZy51dWlkKVxuICAgIH1cbn0iLCJpbXBvcnQge3Y0IGFzIHV1aWR2NH0gZnJvbSAndXVpZCdcbmltcG9ydCB7Q29udGFjdH0gZnJvbSBcIi4vY29udGFjdFwiXG5pbXBvcnQge0FjY291bnR9IGZyb20gXCIuL2FjY291bnRcIlxuaW1wb3J0IHtBZGRyZXNzfSBmcm9tIFwiLi9hZGRyZXNzXCJcbmltcG9ydCB7UG9zfSBmcm9tIFwiLi9wb3NcIlxuaW1wb3J0IHtQYXltZW50fSBmcm9tIFwiLi9wYXltZW50XCJcbmltcG9ydCB7U2hpcHBpbmd9IGZyb20gXCIuL3NoaXBwaW5nXCJcbmltcG9ydCB7U2hvcH0gZnJvbSBcIi4vc2hvcFwiXG5cbmNsYXNzIE9yZGVyIHtcblxuICAgIGFsaWFzOiBTdHJpbmdcbiAgICB1dWlkOiBTdHJpbmdcbiAgICBkcmFmdDogQm9vbGVhblxuICAgIHNhdmVkOiBib29sZWFuXG5cbiAgICBjb250YWN0OiBDb250YWN0ID0gbmV3IENvbnRhY3QoKVxuICAgIGFjY291bnQ6IEFjY291bnQgPSBuZXcgQWNjb3VudCgpXG4gICAgZGVsaXZlcnlBZGRyZXNzOiBBZGRyZXNzID0gbmV3IEFkZHJlc3MoKVxuICAgIHNlbmRlckFkZHJlc3M6IEFkZHJlc3MgPSBuZXcgQWRkcmVzcygpXG4gICAgaW52b2ljZUFkZHJlc3M6IEFkZHJlc3MgPSBuZXcgQWRkcmVzcygpXG5cbiAgICBwb3NpdGlvbnM6IEFycmF5PFBvcz4gPSBbXVxuXG4gICAgcGF5bWVudDogUGF5bWVudCA9IG5ldyBQYXltZW50KClcbiAgICBzaGlwcGluZzogU2hpcHBpbmcgPSBuZXcgU2hpcHBpbmcoKVxuXG4gICAgYmFza2V0RmllbGQxOiBTdHJpbmdcbiAgICBiYXNrZXRGaWVsZDI6IFN0cmluZ1xuXG4gICAgdHlwZTogTnVtYmVyXG4gICAgc2hvcDogU2hvcCA9IG5ldyBTaG9wKClcblxuICAgIG5ldDogbnVtYmVyXG4gICAgdmF0OiBudW1iZXJcbiAgICBncm9zczogbnVtYmVyXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy51dWlkID0gdXVpZHY0KClcbiAgICAgICAgdGhpcy5iYXNrZXRGaWVsZDEgPSBcIlwiXG4gICAgICAgIHRoaXMuYmFza2V0RmllbGQyID0gXCJcIlxuICAgICAgICB0aGlzLmRyYWZ0ID0gdHJ1ZVxuICAgICAgICB0aGlzLnNhdmVkID0gZmFsc2VcbiAgICB9XG5cbiAgICBhZGRQb3NpdGlvbihwb3M6IFBvcykge1xuICAgICAgICB0aGlzLnBvc2l0aW9ucy5wdXNoKHBvcylcbiAgICB9XG5cbiAgICBwYXJzZUZyb21Kc29uKGl0ZW06IGFueSkge1xuICAgICAgICB0aGlzLnNob3AucGFyc2VGcm9tSnNvbihpdGVtKVxuICAgICAgICB0aGlzLmNvbnRhY3QucGFyc2VGcm9tSnNvbihpdGVtKVxuICAgICAgICB0aGlzLmFjY291bnQucGFyc2VGcm9tSnNvbihpdGVtKVxuICAgICAgICB0aGlzLnNoaXBwaW5nLnBhcnNlRnJvbUpzb24oaXRlbSlcbiAgICAgICAgdGhpcy5wYXltZW50LnBhcnNlRnJvbUpzb24oaXRlbSlcbiAgICAgICAgdGhpcy5pbnZvaWNlQWRkcmVzcy5wYXJzZUZyb21Kc29uKGl0ZW0uaW52b2ljZUFkZHJlc3MpXG4gICAgICAgIHRoaXMuZGVsaXZlcnlBZGRyZXNzLnBhcnNlRnJvbUpzb24oaXRlbS5kZWxpdmVyeUFkZHJlc3MpXG4gICAgICAgIHRoaXMuc2VuZGVyQWRkcmVzcy5wYXJzZUZyb21Kc29uKGl0ZW0uc2VuZGVyQWRkcmVzcylcbiAgICAgICAgdGhpcy5hbGlhcyA9IGl0ZW0uYWxpYXNcbiAgICAgICAgdGhpcy51dWlkID0gaXRlbS51dWlkXG4gICAgICAgIHRoaXMudHlwZSA9IGl0ZW0udHlwZVxuICAgICAgICB0aGlzLmRyYWZ0ID0gaXRlbS5kcmFmdFxuICAgICAgICB0aGlzLnNhdmVkID0gdHJ1ZVxuICAgICAgICB0aGlzLmJhc2tldEZpZWxkMSA9IGl0ZW0uYmFza2V0RmllbGQxXG4gICAgICAgIHRoaXMuYmFza2V0RmllbGQyID0gaXRlbS5iYXNrZXRGaWVsZDJcblxuICAgICAgICBpdGVtLnBvc2l0aW9ucy5tYXAoKGUpID0+IHtcbiAgICAgICAgICAgIGxldCBwb3MgPSBuZXcgUG9zKClcbiAgICAgICAgICAgIHBvcy5wYXJzZUZyb21Kc29uKGUpXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9ucy5wdXNoKHBvcylcbiAgICAgICAgfSlcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyXG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cblxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXG5cblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wsIEl0ZXJhdG9yICovXG5cbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xuICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xuICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xufVxuXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XG4gIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XG4gICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XG4gICAgICB9XG4gICAgICByZXR1cm4gdDtcbiAgfVxuICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XG4gIHZhciB0ID0ge307XG4gIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgdFtwXSA9IHNbcF07XG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgfVxuICByZXR1cm4gdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcbiAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19lc0RlY29yYXRlKGN0b3IsIGRlc2NyaXB0b3JJbiwgZGVjb3JhdG9ycywgY29udGV4dEluLCBpbml0aWFsaXplcnMsIGV4dHJhSW5pdGlhbGl6ZXJzKSB7XG4gIGZ1bmN0aW9uIGFjY2VwdChmKSB7IGlmIChmICE9PSB2b2lkIDAgJiYgdHlwZW9mIGYgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZ1bmN0aW9uIGV4cGVjdGVkXCIpOyByZXR1cm4gZjsgfVxuICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xuICB2YXIgdGFyZ2V0ID0gIWRlc2NyaXB0b3JJbiAmJiBjdG9yID8gY29udGV4dEluW1wic3RhdGljXCJdID8gY3RvciA6IGN0b3IucHJvdG90eXBlIDogbnVsbDtcbiAgdmFyIGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9ySW4gfHwgKHRhcmdldCA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBjb250ZXh0SW4ubmFtZSkgOiB7fSk7XG4gIHZhciBfLCBkb25lID0gZmFsc2U7XG4gIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgY29udGV4dCA9IHt9O1xuICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XG4gICAgICBmb3IgKHZhciBwIGluIGNvbnRleHRJbi5hY2Nlc3MpIGNvbnRleHQuYWNjZXNzW3BdID0gY29udGV4dEluLmFjY2Vzc1twXTtcbiAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgPSBmdW5jdGlvbiAoZikgeyBpZiAoZG9uZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZFwiKTsgZXh0cmFJbml0aWFsaXplcnMucHVzaChhY2NlcHQoZiB8fCBudWxsKSk7IH07XG4gICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcbiAgICAgIGlmIChraW5kID09PSBcImFjY2Vzc29yXCIpIHtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSB2b2lkIDApIGNvbnRpbnVlO1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcbiAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuZ2V0KSkgZGVzY3JpcHRvci5nZXQgPSBfO1xuICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5zZXQpKSBkZXNjcmlwdG9yLnNldCA9IF87XG4gICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKF8gPSBhY2NlcHQocmVzdWx0KSkge1xuICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xuICAgICAgICAgIGVsc2UgZGVzY3JpcHRvcltrZXldID0gXztcbiAgICAgIH1cbiAgfVxuICBpZiAodGFyZ2V0KSBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBjb250ZXh0SW4ubmFtZSwgZGVzY3JpcHRvcik7XG4gIGRvbmUgPSB0cnVlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fcnVuSW5pdGlhbGl6ZXJzKHRoaXNBcmcsIGluaXRpYWxpemVycywgdmFsdWUpIHtcbiAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW5pdGlhbGl6ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YWx1ZSA9IHVzZVZhbHVlID8gaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZywgdmFsdWUpIDogaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZyk7XG4gIH1cbiAgcmV0dXJuIHVzZVZhbHVlID8gdmFsdWUgOiB2b2lkIDA7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19wcm9wS2V5KHgpIHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSBcInN5bWJvbFwiID8geCA6IFwiXCIuY29uY2F0KHgpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fc2V0RnVuY3Rpb25OYW1lKGYsIG5hbWUsIHByZWZpeCkge1xuICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZiwgXCJuYW1lXCIsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogcHJlZml4ID8gXCJcIi5jb25jYXQocHJlZml4LCBcIiBcIiwgbmFtZSkgOiBuYW1lIH0pO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcbiAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZyA9IE9iamVjdC5jcmVhdGUoKHR5cGVvZiBJdGVyYXRvciA9PT0gXCJmdW5jdGlvblwiID8gSXRlcmF0b3IgOiBPYmplY3QpLnByb3RvdHlwZSk7XG4gIHJldHVybiBnLm5leHQgPSB2ZXJiKDApLCBnW1widGhyb3dcIl0gPSB2ZXJiKDEpLCBnW1wicmV0dXJuXCJdID0gdmVyYigyKSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICB9XG59XG5cbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSwgayk7XG4gIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICBvW2syXSA9IG1ba107XG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XG4gIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgcCkpIF9fY3JlYXRlQmluZGluZyhvLCBtLCBwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcbiAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcbiAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIW0pIHJldHVybiBvO1xuICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgdHJ5IHtcbiAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICB9XG4gIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICB9XG4gICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgfVxuICByZXR1cm4gYXI7XG59XG5cbi8qKiBAZGVwcmVjYXRlZCAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xuICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcbiAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcbiAgcmV0dXJuIGFyO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgKi9cbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHtcbiAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XG4gIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcbiAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxuICAgICAgICAgIHJba10gPSBhW2pdO1xuICByZXR1cm4gcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcbiAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xuICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgIH1cbiAgfVxuICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xuICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XG4gIHJldHVybiBpID0gT2JqZWN0LmNyZWF0ZSgodHlwZW9mIEFzeW5jSXRlcmF0b3IgPT09IFwiZnVuY3Rpb25cIiA/IEFzeW5jSXRlcmF0b3IgOiBPYmplY3QpLnByb3RvdHlwZSksIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiwgYXdhaXRSZXR1cm4pLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XG4gIGZ1bmN0aW9uIGF3YWl0UmV0dXJuKGYpIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUodikudGhlbihmLCByZWplY3QpOyB9OyB9XG4gIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpZiAoZ1tuXSkgeyBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyBpZiAoZikgaVtuXSA9IGYoaVtuXSk7IH0gfVxuICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XG4gIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxuICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XG4gIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cbiAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XG4gIHZhciBpLCBwO1xuICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xuICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBmYWxzZSB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XG4gIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcbiAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxuICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xuICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICByZXR1cm4gY29va2VkO1xufTtcblxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgXCJkZWZhdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHYgfSk7XG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcbiAgb1tcImRlZmF1bHRcIl0gPSB2O1xufTtcblxudmFyIG93bktleXMgPSBmdW5jdGlvbihvKSB7XG4gIG93bktleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiAobykge1xuICAgIHZhciBhciA9IFtdO1xuICAgIGZvciAodmFyIGsgaW4gbykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBrKSkgYXJbYXIubGVuZ3RoXSA9IGs7XG4gICAgcmV0dXJuIGFyO1xuICB9O1xuICByZXR1cm4gb3duS2V5cyhvKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XG4gIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrID0gb3duS2V5cyhtb2QpLCBpID0gMDsgaSA8IGsubGVuZ3RoOyBpKyspIGlmIChrW2ldICE9PSBcImRlZmF1bHRcIikgX19jcmVhdGVCaW5kaW5nKHJlc3VsdCwgbW9kLCBrW2ldKTtcbiAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0RGVmYXVsdChtb2QpIHtcbiAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRHZXQocmVjZWl2ZXIsIHN0YXRlLCBraW5kLCBmKSB7XG4gIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcbiAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgcmVhZCBwcml2YXRlIG1lbWJlciBmcm9tIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XG4gIHJldHVybiBraW5kID09PSBcIm1cIiA/IGYgOiBraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlcikgOiBmID8gZi52YWx1ZSA6IHN0YXRlLmdldChyZWNlaXZlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHJlY2VpdmVyLCBzdGF0ZSwgdmFsdWUsIGtpbmQsIGYpIHtcbiAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xuICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBzZXR0ZXJcIik7XG4gIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XG4gIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xuICBpZiAocmVjZWl2ZXIgPT09IG51bGwgfHwgKHR5cGVvZiByZWNlaXZlciAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgcmVjZWl2ZXIgIT09IFwiZnVuY3Rpb25cIikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgdXNlICdpbicgb3BlcmF0b3Igb24gbm9uLW9iamVjdFwiKTtcbiAgcmV0dXJuIHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgPT09IHN0YXRlIDogc3RhdGUuaGFzKHJlY2VpdmVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYWRkRGlzcG9zYWJsZVJlc291cmNlKGVudiwgdmFsdWUsIGFzeW5jKSB7XG4gIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdm9pZCAwKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZC5cIik7XG4gICAgdmFyIGRpc3Bvc2UsIGlubmVyO1xuICAgIGlmIChhc3luYykge1xuICAgICAgaWYgKCFTeW1ib2wuYXN5bmNEaXNwb3NlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jRGlzcG9zZSBpcyBub3QgZGVmaW5lZC5cIik7XG4gICAgICBkaXNwb3NlID0gdmFsdWVbU3ltYm9sLmFzeW5jRGlzcG9zZV07XG4gICAgfVxuICAgIGlmIChkaXNwb3NlID09PSB2b2lkIDApIHtcbiAgICAgIGlmICghU3ltYm9sLmRpc3Bvc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuZGlzcG9zZSBpcyBub3QgZGVmaW5lZC5cIik7XG4gICAgICBkaXNwb3NlID0gdmFsdWVbU3ltYm9sLmRpc3Bvc2VdO1xuICAgICAgaWYgKGFzeW5jKSBpbm5lciA9IGRpc3Bvc2U7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZGlzcG9zZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IG5vdCBkaXNwb3NhYmxlLlwiKTtcbiAgICBpZiAoaW5uZXIpIGRpc3Bvc2UgPSBmdW5jdGlvbigpIHsgdHJ5IHsgaW5uZXIuY2FsbCh0aGlzKTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gUHJvbWlzZS5yZWplY3QoZSk7IH0gfTtcbiAgICBlbnYuc3RhY2sucHVzaCh7IHZhbHVlOiB2YWx1ZSwgZGlzcG9zZTogZGlzcG9zZSwgYXN5bmM6IGFzeW5jIH0pO1xuICB9XG4gIGVsc2UgaWYgKGFzeW5jKSB7XG4gICAgZW52LnN0YWNrLnB1c2goeyBhc3luYzogdHJ1ZSB9KTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbnZhciBfU3VwcHJlc3NlZEVycm9yID0gdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XG4gIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICByZXR1cm4gZS5uYW1lID0gXCJTdXBwcmVzc2VkRXJyb3JcIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fZGlzcG9zZVJlc291cmNlcyhlbnYpIHtcbiAgZnVuY3Rpb24gZmFpbChlKSB7XG4gICAgZW52LmVycm9yID0gZW52Lmhhc0Vycm9yID8gbmV3IF9TdXBwcmVzc2VkRXJyb3IoZSwgZW52LmVycm9yLCBcIkFuIGVycm9yIHdhcyBzdXBwcmVzc2VkIGR1cmluZyBkaXNwb3NhbC5cIikgOiBlO1xuICAgIGVudi5oYXNFcnJvciA9IHRydWU7XG4gIH1cbiAgdmFyIHIsIHMgPSAwO1xuICBmdW5jdGlvbiBuZXh0KCkge1xuICAgIHdoaWxlIChyID0gZW52LnN0YWNrLnBvcCgpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIXIuYXN5bmMgJiYgcyA9PT0gMSkgcmV0dXJuIHMgPSAwLCBlbnYuc3RhY2sucHVzaChyKSwgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihuZXh0KTtcbiAgICAgICAgaWYgKHIuZGlzcG9zZSkge1xuICAgICAgICAgIHZhciByZXN1bHQgPSByLmRpc3Bvc2UuY2FsbChyLnZhbHVlKTtcbiAgICAgICAgICBpZiAoci5hc3luYykgcmV0dXJuIHMgfD0gMiwgUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCkudGhlbihuZXh0LCBmdW5jdGlvbihlKSB7IGZhaWwoZSk7IHJldHVybiBuZXh0KCk7IH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgcyB8PSAxO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgZmFpbChlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHMgPT09IDEpIHJldHVybiBlbnYuaGFzRXJyb3IgPyBQcm9taXNlLnJlamVjdChlbnYuZXJyb3IpIDogUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgaWYgKGVudi5oYXNFcnJvcikgdGhyb3cgZW52LmVycm9yO1xuICB9XG4gIHJldHVybiBuZXh0KCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3Jld3JpdGVSZWxhdGl2ZUltcG9ydEV4dGVuc2lvbihwYXRoLCBwcmVzZXJ2ZUpzeCkge1xuICBpZiAodHlwZW9mIHBhdGggPT09IFwic3RyaW5nXCIgJiYgL15cXC5cXC4/XFwvLy50ZXN0KHBhdGgpKSB7XG4gICAgICByZXR1cm4gcGF0aC5yZXBsYWNlKC9cXC4odHN4KSR8KCg/OlxcLmQpPykoKD86XFwuW14uL10rPyk/KVxcLihbY21dPyl0cyQvaSwgZnVuY3Rpb24gKG0sIHRzeCwgZCwgZXh0LCBjbSkge1xuICAgICAgICAgIHJldHVybiB0c3ggPyBwcmVzZXJ2ZUpzeCA/IFwiLmpzeFwiIDogXCIuanNcIiA6IGQgJiYgKCFleHQgfHwgIWNtKSA/IG0gOiAoZCArIGV4dCArIFwiLlwiICsgY20udG9Mb3dlckNhc2UoKSArIFwianNcIik7XG4gICAgICB9KTtcbiAgfVxuICByZXR1cm4gcGF0aDtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBfX2V4dGVuZHMsXG4gIF9fYXNzaWduLFxuICBfX3Jlc3QsXG4gIF9fZGVjb3JhdGUsXG4gIF9fcGFyYW0sXG4gIF9fZXNEZWNvcmF0ZSxcbiAgX19ydW5Jbml0aWFsaXplcnMsXG4gIF9fcHJvcEtleSxcbiAgX19zZXRGdW5jdGlvbk5hbWUsXG4gIF9fbWV0YWRhdGEsXG4gIF9fYXdhaXRlcixcbiAgX19nZW5lcmF0b3IsXG4gIF9fY3JlYXRlQmluZGluZyxcbiAgX19leHBvcnRTdGFyLFxuICBfX3ZhbHVlcyxcbiAgX19yZWFkLFxuICBfX3NwcmVhZCxcbiAgX19zcHJlYWRBcnJheXMsXG4gIF9fc3ByZWFkQXJyYXksXG4gIF9fYXdhaXQsXG4gIF9fYXN5bmNHZW5lcmF0b3IsXG4gIF9fYXN5bmNEZWxlZ2F0b3IsXG4gIF9fYXN5bmNWYWx1ZXMsXG4gIF9fbWFrZVRlbXBsYXRlT2JqZWN0LFxuICBfX2ltcG9ydFN0YXIsXG4gIF9faW1wb3J0RGVmYXVsdCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZEdldCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZEluLFxuICBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZSxcbiAgX19kaXNwb3NlUmVzb3VyY2VzLFxuICBfX3Jld3JpdGVSZWxhdGl2ZUltcG9ydEV4dGVuc2lvbixcbn07XG4iLCJleHBvcnQgZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbic7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pc0Z1bmN0aW9uLmpzLm1hcCIsImV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFcnJvckNsYXNzKGNyZWF0ZUltcGwpIHtcbiAgICB2YXIgX3N1cGVyID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7XG4gICAgICAgIEVycm9yLmNhbGwoaW5zdGFuY2UpO1xuICAgICAgICBpbnN0YW5jZS5zdGFjayA9IG5ldyBFcnJvcigpLnN0YWNrO1xuICAgIH07XG4gICAgdmFyIGN0b3JGdW5jID0gY3JlYXRlSW1wbChfc3VwZXIpO1xuICAgIGN0b3JGdW5jLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTtcbiAgICBjdG9yRnVuYy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yRnVuYztcbiAgICByZXR1cm4gY3RvckZ1bmM7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcmVhdGVFcnJvckNsYXNzLmpzLm1hcCIsImltcG9ydCB7IGNyZWF0ZUVycm9yQ2xhc3MgfSBmcm9tICcuL2NyZWF0ZUVycm9yQ2xhc3MnO1xuZXhwb3J0IHZhciBVbnN1YnNjcmlwdGlvbkVycm9yID0gY3JlYXRlRXJyb3JDbGFzcyhmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIFVuc3Vic2NyaXB0aW9uRXJyb3JJbXBsKGVycm9ycykge1xuICAgICAgICBfc3VwZXIodGhpcyk7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IGVycm9yc1xuICAgICAgICAgICAgPyBlcnJvcnMubGVuZ3RoICsgXCIgZXJyb3JzIG9jY3VycmVkIGR1cmluZyB1bnN1YnNjcmlwdGlvbjpcXG5cIiArIGVycm9ycy5tYXAoZnVuY3Rpb24gKGVyciwgaSkgeyByZXR1cm4gaSArIDEgKyBcIikgXCIgKyBlcnIudG9TdHJpbmcoKTsgfSkuam9pbignXFxuICAnKVxuICAgICAgICAgICAgOiAnJztcbiAgICAgICAgdGhpcy5uYW1lID0gJ1Vuc3Vic2NyaXB0aW9uRXJyb3InO1xuICAgICAgICB0aGlzLmVycm9ycyA9IGVycm9ycztcbiAgICB9O1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1VbnN1YnNjcmlwdGlvbkVycm9yLmpzLm1hcCIsImV4cG9ydCBmdW5jdGlvbiBhcnJSZW1vdmUoYXJyLCBpdGVtKSB7XG4gICAgaWYgKGFycikge1xuICAgICAgICB2YXIgaW5kZXggPSBhcnIuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgMCA8PSBpbmRleCAmJiBhcnIuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcnJSZW1vdmUuanMubWFwIiwiaW1wb3J0IHsgX19yZWFkLCBfX3NwcmVhZEFycmF5LCBfX3ZhbHVlcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJy4vdXRpbC9pc0Z1bmN0aW9uJztcbmltcG9ydCB7IFVuc3Vic2NyaXB0aW9uRXJyb3IgfSBmcm9tICcuL3V0aWwvVW5zdWJzY3JpcHRpb25FcnJvcic7XG5pbXBvcnQgeyBhcnJSZW1vdmUgfSBmcm9tICcuL3V0aWwvYXJyUmVtb3ZlJztcbnZhciBTdWJzY3JpcHRpb24gPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFN1YnNjcmlwdGlvbihpbml0aWFsVGVhcmRvd24pIHtcbiAgICAgICAgdGhpcy5pbml0aWFsVGVhcmRvd24gPSBpbml0aWFsVGVhcmRvd247XG4gICAgICAgIHRoaXMuY2xvc2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3BhcmVudGFnZSA9IG51bGw7XG4gICAgICAgIHRoaXMuX2ZpbmFsaXplcnMgPSBudWxsO1xuICAgIH1cbiAgICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZV8xLCBfYSwgZV8yLCBfYjtcbiAgICAgICAgdmFyIGVycm9ycztcbiAgICAgICAgaWYgKCF0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZWQgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIF9wYXJlbnRhZ2UgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgICAgICAgICBpZiAoX3BhcmVudGFnZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3BhcmVudGFnZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoX3BhcmVudGFnZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF9wYXJlbnRhZ2VfMSA9IF9fdmFsdWVzKF9wYXJlbnRhZ2UpLCBfcGFyZW50YWdlXzFfMSA9IF9wYXJlbnRhZ2VfMS5uZXh0KCk7ICFfcGFyZW50YWdlXzFfMS5kb25lOyBfcGFyZW50YWdlXzFfMSA9IF9wYXJlbnRhZ2VfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFyZW50XzEgPSBfcGFyZW50YWdlXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRfMS5yZW1vdmUodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfcGFyZW50YWdlXzFfMSAmJiAhX3BhcmVudGFnZV8xXzEuZG9uZSAmJiAoX2EgPSBfcGFyZW50YWdlXzEucmV0dXJuKSkgX2EuY2FsbChfcGFyZW50YWdlXzEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBfcGFyZW50YWdlLnJlbW92ZSh0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgaW5pdGlhbEZpbmFsaXplciA9IHRoaXMuaW5pdGlhbFRlYXJkb3duO1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24oaW5pdGlhbEZpbmFsaXplcikpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpbml0aWFsRmluYWxpemVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IGUgaW5zdGFuY2VvZiBVbnN1YnNjcmlwdGlvbkVycm9yID8gZS5lcnJvcnMgOiBbZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIF9maW5hbGl6ZXJzID0gdGhpcy5fZmluYWxpemVycztcbiAgICAgICAgICAgIGlmIChfZmluYWxpemVycykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbmFsaXplcnMgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF9maW5hbGl6ZXJzXzEgPSBfX3ZhbHVlcyhfZmluYWxpemVycyksIF9maW5hbGl6ZXJzXzFfMSA9IF9maW5hbGl6ZXJzXzEubmV4dCgpOyAhX2ZpbmFsaXplcnNfMV8xLmRvbmU7IF9maW5hbGl6ZXJzXzFfMSA9IF9maW5hbGl6ZXJzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmluYWxpemVyID0gX2ZpbmFsaXplcnNfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjRmluYWxpemVyKGZpbmFsaXplcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gZXJyb3JzICE9PSBudWxsICYmIGVycm9ycyAhPT0gdm9pZCAwID8gZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIFVuc3Vic2NyaXB0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQoZXJyb3JzKSksIF9fcmVhZChlcnIuZXJyb3JzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZV8yXzEpIHsgZV8yID0geyBlcnJvcjogZV8yXzEgfTsgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9maW5hbGl6ZXJzXzFfMSAmJiAhX2ZpbmFsaXplcnNfMV8xLmRvbmUgJiYgKF9iID0gX2ZpbmFsaXplcnNfMS5yZXR1cm4pKSBfYi5jYWxsKF9maW5hbGl6ZXJzXzEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yKSB0aHJvdyBlXzIuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFVuc3Vic2NyaXB0aW9uRXJyb3IoZXJyb3JzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAodGVhcmRvd24pIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAodGVhcmRvd24gJiYgdGVhcmRvd24gIT09IHRoaXMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgICAgIGV4ZWNGaW5hbGl6ZXIodGVhcmRvd24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRlYXJkb3duIGluc3RhbmNlb2YgU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ZWFyZG93bi5jbG9zZWQgfHwgdGVhcmRvd24uX2hhc1BhcmVudCh0aGlzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRlYXJkb3duLl9hZGRQYXJlbnQodGhpcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICh0aGlzLl9maW5hbGl6ZXJzID0gKF9hID0gdGhpcy5fZmluYWxpemVycykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogW10pLnB1c2godGVhcmRvd24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLl9oYXNQYXJlbnQgPSBmdW5jdGlvbiAocGFyZW50KSB7XG4gICAgICAgIHZhciBfcGFyZW50YWdlID0gdGhpcy5fcGFyZW50YWdlO1xuICAgICAgICByZXR1cm4gX3BhcmVudGFnZSA9PT0gcGFyZW50IHx8IChBcnJheS5pc0FycmF5KF9wYXJlbnRhZ2UpICYmIF9wYXJlbnRhZ2UuaW5jbHVkZXMocGFyZW50KSk7XG4gICAgfTtcbiAgICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLl9hZGRQYXJlbnQgPSBmdW5jdGlvbiAocGFyZW50KSB7XG4gICAgICAgIHZhciBfcGFyZW50YWdlID0gdGhpcy5fcGFyZW50YWdlO1xuICAgICAgICB0aGlzLl9wYXJlbnRhZ2UgPSBBcnJheS5pc0FycmF5KF9wYXJlbnRhZ2UpID8gKF9wYXJlbnRhZ2UucHVzaChwYXJlbnQpLCBfcGFyZW50YWdlKSA6IF9wYXJlbnRhZ2UgPyBbX3BhcmVudGFnZSwgcGFyZW50XSA6IHBhcmVudDtcbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUuX3JlbW92ZVBhcmVudCA9IGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgdmFyIF9wYXJlbnRhZ2UgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgICAgIGlmIChfcGFyZW50YWdlID09PSBwYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX3BhcmVudGFnZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfcGFyZW50YWdlKSkge1xuICAgICAgICAgICAgYXJyUmVtb3ZlKF9wYXJlbnRhZ2UsIHBhcmVudCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKHRlYXJkb3duKSB7XG4gICAgICAgIHZhciBfZmluYWxpemVycyA9IHRoaXMuX2ZpbmFsaXplcnM7XG4gICAgICAgIF9maW5hbGl6ZXJzICYmIGFyclJlbW92ZShfZmluYWxpemVycywgdGVhcmRvd24pO1xuICAgICAgICBpZiAodGVhcmRvd24gaW5zdGFuY2VvZiBTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRlYXJkb3duLl9yZW1vdmVQYXJlbnQodGhpcyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbi5FTVBUWSA9IChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlbXB0eSA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgZW1wdHkuY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGVtcHR5O1xuICAgIH0pKCk7XG4gICAgcmV0dXJuIFN1YnNjcmlwdGlvbjtcbn0oKSk7XG5leHBvcnQgeyBTdWJzY3JpcHRpb24gfTtcbmV4cG9ydCB2YXIgRU1QVFlfU1VCU0NSSVBUSU9OID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3Vic2NyaXB0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuICh2YWx1ZSBpbnN0YW5jZW9mIFN1YnNjcmlwdGlvbiB8fFxuICAgICAgICAodmFsdWUgJiYgJ2Nsb3NlZCcgaW4gdmFsdWUgJiYgaXNGdW5jdGlvbih2YWx1ZS5yZW1vdmUpICYmIGlzRnVuY3Rpb24odmFsdWUuYWRkKSAmJiBpc0Z1bmN0aW9uKHZhbHVlLnVuc3Vic2NyaWJlKSkpO1xufVxuZnVuY3Rpb24gZXhlY0ZpbmFsaXplcihmaW5hbGl6ZXIpIHtcbiAgICBpZiAoaXNGdW5jdGlvbihmaW5hbGl6ZXIpKSB7XG4gICAgICAgIGZpbmFsaXplcigpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZmluYWxpemVyLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3Vic2NyaXB0aW9uLmpzLm1hcCIsImV4cG9ydCB2YXIgY29uZmlnID0ge1xuICAgIG9uVW5oYW5kbGVkRXJyb3I6IG51bGwsXG4gICAgb25TdG9wcGVkTm90aWZpY2F0aW9uOiBudWxsLFxuICAgIFByb21pc2U6IHVuZGVmaW5lZCxcbiAgICB1c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nOiBmYWxzZSxcbiAgICB1c2VEZXByZWNhdGVkTmV4dENvbnRleHQ6IGZhbHNlLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbmZpZy5qcy5tYXAiLCJpbXBvcnQgeyBfX3JlYWQsIF9fc3ByZWFkQXJyYXkgfSBmcm9tIFwidHNsaWJcIjtcbmV4cG9ydCB2YXIgdGltZW91dFByb3ZpZGVyID0ge1xuICAgIHNldFRpbWVvdXQ6IGZ1bmN0aW9uIChoYW5kbGVyLCB0aW1lb3V0KSB7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMjsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pIC0gMl0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkZWxlZ2F0ZSA9IHRpbWVvdXRQcm92aWRlci5kZWxlZ2F0ZTtcbiAgICAgICAgaWYgKGRlbGVnYXRlID09PSBudWxsIHx8IGRlbGVnYXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZWxlZ2F0ZS5zZXRUaW1lb3V0KSB7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuc2V0VGltZW91dC5hcHBseShkZWxlZ2F0ZSwgX19zcHJlYWRBcnJheShbaGFuZGxlciwgdGltZW91dF0sIF9fcmVhZChhcmdzKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0LmFwcGx5KHZvaWQgMCwgX19zcHJlYWRBcnJheShbaGFuZGxlciwgdGltZW91dF0sIF9fcmVhZChhcmdzKSkpO1xuICAgIH0sXG4gICAgY2xlYXJUaW1lb3V0OiBmdW5jdGlvbiAoaGFuZGxlKSB7XG4gICAgICAgIHZhciBkZWxlZ2F0ZSA9IHRpbWVvdXRQcm92aWRlci5kZWxlZ2F0ZTtcbiAgICAgICAgcmV0dXJuICgoZGVsZWdhdGUgPT09IG51bGwgfHwgZGVsZWdhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRlbGVnYXRlLmNsZWFyVGltZW91dCkgfHwgY2xlYXJUaW1lb3V0KShoYW5kbGUpO1xuICAgIH0sXG4gICAgZGVsZWdhdGU6IHVuZGVmaW5lZCxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aW1lb3V0UHJvdmlkZXIuanMubWFwIiwiaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7IHRpbWVvdXRQcm92aWRlciB9IGZyb20gJy4uL3NjaGVkdWxlci90aW1lb3V0UHJvdmlkZXInO1xuZXhwb3J0IGZ1bmN0aW9uIHJlcG9ydFVuaGFuZGxlZEVycm9yKGVycikge1xuICAgIHRpbWVvdXRQcm92aWRlci5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG9uVW5oYW5kbGVkRXJyb3IgPSBjb25maWcub25VbmhhbmRsZWRFcnJvcjtcbiAgICAgICAgaWYgKG9uVW5oYW5kbGVkRXJyb3IpIHtcbiAgICAgICAgICAgIG9uVW5oYW5kbGVkRXJyb3IoZXJyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVwb3J0VW5oYW5kbGVkRXJyb3IuanMubWFwIiwiZXhwb3J0IGZ1bmN0aW9uIG5vb3AoKSB7IH1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW5vb3AuanMubWFwIiwiaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi4vY29uZmlnJztcbnZhciBjb250ZXh0ID0gbnVsbDtcbmV4cG9ydCBmdW5jdGlvbiBlcnJvckNvbnRleHQoY2IpIHtcbiAgICBpZiAoY29uZmlnLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcpIHtcbiAgICAgICAgdmFyIGlzUm9vdCA9ICFjb250ZXh0O1xuICAgICAgICBpZiAoaXNSb290KSB7XG4gICAgICAgICAgICBjb250ZXh0ID0geyBlcnJvclRocm93bjogZmFsc2UsIGVycm9yOiBudWxsIH07XG4gICAgICAgIH1cbiAgICAgICAgY2IoKTtcbiAgICAgICAgaWYgKGlzUm9vdCkge1xuICAgICAgICAgICAgdmFyIF9hID0gY29udGV4dCwgZXJyb3JUaHJvd24gPSBfYS5lcnJvclRocm93biwgZXJyb3IgPSBfYS5lcnJvcjtcbiAgICAgICAgICAgIGNvbnRleHQgPSBudWxsO1xuICAgICAgICAgICAgaWYgKGVycm9yVGhyb3duKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNiKCk7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGNhcHR1cmVFcnJvcihlcnIpIHtcbiAgICBpZiAoY29uZmlnLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcgJiYgY29udGV4dCkge1xuICAgICAgICBjb250ZXh0LmVycm9yVGhyb3duID0gdHJ1ZTtcbiAgICAgICAgY29udGV4dC5lcnJvciA9IGVycjtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lcnJvckNvbnRleHQuanMubWFwIiwiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnLi91dGlsL2lzRnVuY3Rpb24nO1xuaW1wb3J0IHsgaXNTdWJzY3JpcHRpb24sIFN1YnNjcmlwdGlvbiB9IGZyb20gJy4vU3Vic2NyaXB0aW9uJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IHJlcG9ydFVuaGFuZGxlZEVycm9yIH0gZnJvbSAnLi91dGlsL3JlcG9ydFVuaGFuZGxlZEVycm9yJztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICcuL3V0aWwvbm9vcCc7XG5pbXBvcnQgeyBuZXh0Tm90aWZpY2F0aW9uLCBlcnJvck5vdGlmaWNhdGlvbiwgQ09NUExFVEVfTk9USUZJQ0FUSU9OIH0gZnJvbSAnLi9Ob3RpZmljYXRpb25GYWN0b3JpZXMnO1xuaW1wb3J0IHsgdGltZW91dFByb3ZpZGVyIH0gZnJvbSAnLi9zY2hlZHVsZXIvdGltZW91dFByb3ZpZGVyJztcbmltcG9ydCB7IGNhcHR1cmVFcnJvciB9IGZyb20gJy4vdXRpbC9lcnJvckNvbnRleHQnO1xudmFyIFN1YnNjcmliZXIgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhTdWJzY3JpYmVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFN1YnNjcmliZXIoZGVzdGluYXRpb24pIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuaXNTdG9wcGVkID0gZmFsc2U7XG4gICAgICAgIGlmIChkZXN0aW5hdGlvbikge1xuICAgICAgICAgICAgX3RoaXMuZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbjtcbiAgICAgICAgICAgIGlmIChpc1N1YnNjcmlwdGlvbihkZXN0aW5hdGlvbikpIHtcbiAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5hZGQoX3RoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgX3RoaXMuZGVzdGluYXRpb24gPSBFTVBUWV9PQlNFUlZFUjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFN1YnNjcmliZXIuY3JlYXRlID0gZnVuY3Rpb24gKG5leHQsIGVycm9yLCBjb21wbGV0ZSkge1xuICAgICAgICByZXR1cm4gbmV3IFNhZmVTdWJzY3JpYmVyKG5leHQsIGVycm9yLCBjb21wbGV0ZSk7XG4gICAgfTtcbiAgICBTdWJzY3JpYmVyLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLmlzU3RvcHBlZCkge1xuICAgICAgICAgICAgaGFuZGxlU3RvcHBlZE5vdGlmaWNhdGlvbihuZXh0Tm90aWZpY2F0aW9uKHZhbHVlKSwgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9uZXh0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaWJlci5wcm90b3R5cGUuZXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGlmICh0aGlzLmlzU3RvcHBlZCkge1xuICAgICAgICAgICAgaGFuZGxlU3RvcHBlZE5vdGlmaWNhdGlvbihlcnJvck5vdGlmaWNhdGlvbihlcnIpLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNTdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yKGVycik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmliZXIucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5pc1N0b3BwZWQpIHtcbiAgICAgICAgICAgIGhhbmRsZVN0b3BwZWROb3RpZmljYXRpb24oQ09NUExFVEVfTk9USUZJQ0FUSU9OLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNTdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2NvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmliZXIucHJvdG90eXBlLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICB0aGlzLmlzU3RvcHBlZCA9IHRydWU7XG4gICAgICAgICAgICBfc3VwZXIucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB0aGlzLmRlc3RpbmF0aW9uID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaWJlci5wcm90b3R5cGUuX25leHQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdGhpcy5kZXN0aW5hdGlvbi5uZXh0KHZhbHVlKTtcbiAgICB9O1xuICAgIFN1YnNjcmliZXIucHJvdG90eXBlLl9lcnJvciA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuZGVzdGluYXRpb24uZXJyb3IoZXJyKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaWJlci5wcm90b3R5cGUuX2NvbXBsZXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gU3Vic2NyaWJlcjtcbn0oU3Vic2NyaXB0aW9uKSk7XG5leHBvcnQgeyBTdWJzY3JpYmVyIH07XG52YXIgX2JpbmQgPSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZDtcbmZ1bmN0aW9uIGJpbmQoZm4sIHRoaXNBcmcpIHtcbiAgICByZXR1cm4gX2JpbmQuY2FsbChmbiwgdGhpc0FyZyk7XG59XG52YXIgQ29uc3VtZXJPYnNlcnZlciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQ29uc3VtZXJPYnNlcnZlcihwYXJ0aWFsT2JzZXJ2ZXIpIHtcbiAgICAgICAgdGhpcy5wYXJ0aWFsT2JzZXJ2ZXIgPSBwYXJ0aWFsT2JzZXJ2ZXI7XG4gICAgfVxuICAgIENvbnN1bWVyT2JzZXJ2ZXIucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIHBhcnRpYWxPYnNlcnZlciA9IHRoaXMucGFydGlhbE9ic2VydmVyO1xuICAgICAgICBpZiAocGFydGlhbE9ic2VydmVyLm5leHQpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcGFydGlhbE9ic2VydmVyLm5leHQodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVW5oYW5kbGVkRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBDb25zdW1lck9ic2VydmVyLnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdmFyIHBhcnRpYWxPYnNlcnZlciA9IHRoaXMucGFydGlhbE9ic2VydmVyO1xuICAgICAgICBpZiAocGFydGlhbE9ic2VydmVyLmVycm9yKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHBhcnRpYWxPYnNlcnZlci5lcnJvcihlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVW5oYW5kbGVkRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaGFuZGxlVW5oYW5kbGVkRXJyb3IoZXJyKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQ29uc3VtZXJPYnNlcnZlci5wcm90b3R5cGUuY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwYXJ0aWFsT2JzZXJ2ZXIgPSB0aGlzLnBhcnRpYWxPYnNlcnZlcjtcbiAgICAgICAgaWYgKHBhcnRpYWxPYnNlcnZlci5jb21wbGV0ZSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBwYXJ0aWFsT2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGhhbmRsZVVuaGFuZGxlZEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIENvbnN1bWVyT2JzZXJ2ZXI7XG59KCkpO1xudmFyIFNhZmVTdWJzY3JpYmVyID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoU2FmZVN1YnNjcmliZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gU2FmZVN1YnNjcmliZXIob2JzZXJ2ZXJPck5leHQsIGVycm9yLCBjb21wbGV0ZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICB2YXIgcGFydGlhbE9ic2VydmVyO1xuICAgICAgICBpZiAoaXNGdW5jdGlvbihvYnNlcnZlck9yTmV4dCkgfHwgIW9ic2VydmVyT3JOZXh0KSB7XG4gICAgICAgICAgICBwYXJ0aWFsT2JzZXJ2ZXIgPSB7XG4gICAgICAgICAgICAgICAgbmV4dDogKG9ic2VydmVyT3JOZXh0ICE9PSBudWxsICYmIG9ic2VydmVyT3JOZXh0ICE9PSB2b2lkIDAgPyBvYnNlcnZlck9yTmV4dCA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yICE9PSBudWxsICYmIGVycm9yICE9PSB2b2lkIDAgPyBlcnJvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogY29tcGxldGUgIT09IG51bGwgJiYgY29tcGxldGUgIT09IHZvaWQgMCA/IGNvbXBsZXRlIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBjb250ZXh0XzE7XG4gICAgICAgICAgICBpZiAoX3RoaXMgJiYgY29uZmlnLnVzZURlcHJlY2F0ZWROZXh0Q29udGV4dCkge1xuICAgICAgICAgICAgICAgIGNvbnRleHRfMSA9IE9iamVjdC5jcmVhdGUob2JzZXJ2ZXJPck5leHQpO1xuICAgICAgICAgICAgICAgIGNvbnRleHRfMS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF90aGlzLnVuc3Vic2NyaWJlKCk7IH07XG4gICAgICAgICAgICAgICAgcGFydGlhbE9ic2VydmVyID0ge1xuICAgICAgICAgICAgICAgICAgICBuZXh0OiBvYnNlcnZlck9yTmV4dC5uZXh0ICYmIGJpbmQob2JzZXJ2ZXJPck5leHQubmV4dCwgY29udGV4dF8xKSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IG9ic2VydmVyT3JOZXh0LmVycm9yICYmIGJpbmQob2JzZXJ2ZXJPck5leHQuZXJyb3IsIGNvbnRleHRfMSksXG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBvYnNlcnZlck9yTmV4dC5jb21wbGV0ZSAmJiBiaW5kKG9ic2VydmVyT3JOZXh0LmNvbXBsZXRlLCBjb250ZXh0XzEpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJ0aWFsT2JzZXJ2ZXIgPSBvYnNlcnZlck9yTmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBfdGhpcy5kZXN0aW5hdGlvbiA9IG5ldyBDb25zdW1lck9ic2VydmVyKHBhcnRpYWxPYnNlcnZlcik7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgcmV0dXJuIFNhZmVTdWJzY3JpYmVyO1xufShTdWJzY3JpYmVyKSk7XG5leHBvcnQgeyBTYWZlU3Vic2NyaWJlciB9O1xuZnVuY3Rpb24gaGFuZGxlVW5oYW5kbGVkRXJyb3IoZXJyb3IpIHtcbiAgICBpZiAoY29uZmlnLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcpIHtcbiAgICAgICAgY2FwdHVyZUVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJlcG9ydFVuaGFuZGxlZEVycm9yKGVycm9yKTtcbiAgICB9XG59XG5mdW5jdGlvbiBkZWZhdWx0RXJyb3JIYW5kbGVyKGVycikge1xuICAgIHRocm93IGVycjtcbn1cbmZ1bmN0aW9uIGhhbmRsZVN0b3BwZWROb3RpZmljYXRpb24obm90aWZpY2F0aW9uLCBzdWJzY3JpYmVyKSB7XG4gICAgdmFyIG9uU3RvcHBlZE5vdGlmaWNhdGlvbiA9IGNvbmZpZy5vblN0b3BwZWROb3RpZmljYXRpb247XG4gICAgb25TdG9wcGVkTm90aWZpY2F0aW9uICYmIHRpbWVvdXRQcm92aWRlci5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uU3RvcHBlZE5vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIHN1YnNjcmliZXIpOyB9KTtcbn1cbmV4cG9ydCB2YXIgRU1QVFlfT0JTRVJWRVIgPSB7XG4gICAgY2xvc2VkOiB0cnVlLFxuICAgIG5leHQ6IG5vb3AsXG4gICAgZXJyb3I6IGRlZmF1bHRFcnJvckhhbmRsZXIsXG4gICAgY29tcGxldGU6IG5vb3AsXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3Vic2NyaWJlci5qcy5tYXAiLCJleHBvcnQgdmFyIG9ic2VydmFibGUgPSAoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLm9ic2VydmFibGUpIHx8ICdAQG9ic2VydmFibGUnOyB9KSgpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9b2JzZXJ2YWJsZS5qcy5tYXAiLCJleHBvcnQgZnVuY3Rpb24gaWRlbnRpdHkoeCkge1xuICAgIHJldHVybiB4O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aWRlbnRpdHkuanMubWFwIiwiaW1wb3J0IHsgaWRlbnRpdHkgfSBmcm9tICcuL2lkZW50aXR5JztcbmV4cG9ydCBmdW5jdGlvbiBwaXBlKCkge1xuICAgIHZhciBmbnMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBmbnNbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgcmV0dXJuIHBpcGVGcm9tQXJyYXkoZm5zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwaXBlRnJvbUFycmF5KGZucykge1xuICAgIGlmIChmbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBpZGVudGl0eTtcbiAgICB9XG4gICAgaWYgKGZucy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIGZuc1swXTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHBpcGVkKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBmbnMucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBmbikgeyByZXR1cm4gZm4ocHJldik7IH0sIGlucHV0KTtcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGlwZS5qcy5tYXAiLCJpbXBvcnQgeyBTYWZlU3Vic2NyaWJlciwgU3Vic2NyaWJlciB9IGZyb20gJy4vU3Vic2NyaWJlcic7XG5pbXBvcnQgeyBpc1N1YnNjcmlwdGlvbiB9IGZyb20gJy4vU3Vic2NyaXB0aW9uJztcbmltcG9ydCB7IG9ic2VydmFibGUgYXMgU3ltYm9sX29ic2VydmFibGUgfSBmcm9tICcuL3N5bWJvbC9vYnNlcnZhYmxlJztcbmltcG9ydCB7IHBpcGVGcm9tQXJyYXkgfSBmcm9tICcuL3V0aWwvcGlwZSc7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnLi91dGlsL2lzRnVuY3Rpb24nO1xuaW1wb3J0IHsgZXJyb3JDb250ZXh0IH0gZnJvbSAnLi91dGlsL2Vycm9yQ29udGV4dCc7XG52YXIgT2JzZXJ2YWJsZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gT2JzZXJ2YWJsZShzdWJzY3JpYmUpIHtcbiAgICAgICAgaWYgKHN1YnNjcmliZSkge1xuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaWJlID0gc3Vic2NyaWJlO1xuICAgICAgICB9XG4gICAgfVxuICAgIE9ic2VydmFibGUucHJvdG90eXBlLmxpZnQgPSBmdW5jdGlvbiAob3BlcmF0b3IpIHtcbiAgICAgICAgdmFyIG9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZSgpO1xuICAgICAgICBvYnNlcnZhYmxlLnNvdXJjZSA9IHRoaXM7XG4gICAgICAgIG9ic2VydmFibGUub3BlcmF0b3IgPSBvcGVyYXRvcjtcbiAgICAgICAgcmV0dXJuIG9ic2VydmFibGU7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZS5zdWJzY3JpYmUgPSBmdW5jdGlvbiAob2JzZXJ2ZXJPck5leHQsIGVycm9yLCBjb21wbGV0ZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgc3Vic2NyaWJlciA9IGlzU3Vic2NyaWJlcihvYnNlcnZlck9yTmV4dCkgPyBvYnNlcnZlck9yTmV4dCA6IG5ldyBTYWZlU3Vic2NyaWJlcihvYnNlcnZlck9yTmV4dCwgZXJyb3IsIGNvbXBsZXRlKTtcbiAgICAgICAgZXJyb3JDb250ZXh0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IF90aGlzLCBvcGVyYXRvciA9IF9hLm9wZXJhdG9yLCBzb3VyY2UgPSBfYS5zb3VyY2U7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLmFkZChvcGVyYXRvclxuICAgICAgICAgICAgICAgID9cbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IuY2FsbChzdWJzY3JpYmVyLCBzb3VyY2UpXG4gICAgICAgICAgICAgICAgOiBzb3VyY2VcbiAgICAgICAgICAgICAgICAgICAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuX3N1YnNjcmliZShzdWJzY3JpYmVyKVxuICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5fdHJ5U3Vic2NyaWJlKHN1YnNjcmliZXIpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzdWJzY3JpYmVyO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5wcm90b3R5cGUuX3RyeVN1YnNjcmliZSA9IGZ1bmN0aW9uIChzaW5rKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc3Vic2NyaWJlKHNpbmspO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHNpbmsuZXJyb3IoZXJyKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIChuZXh0LCBwcm9taXNlQ3Rvcikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBwcm9taXNlQ3RvciA9IGdldFByb21pc2VDdG9yKHByb21pc2VDdG9yKTtcbiAgICAgICAgcmV0dXJuIG5ldyBwcm9taXNlQ3RvcihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB2YXIgc3Vic2NyaWJlciA9IG5ldyBTYWZlU3Vic2NyaWJlcih7XG4gICAgICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IHJlamVjdCxcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogcmVzb2x2ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgX3RoaXMuc3Vic2NyaWJlKHN1YnNjcmliZXIpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIE9ic2VydmFibGUucHJvdG90eXBlLl9zdWJzY3JpYmUgPSBmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiAoX2EgPSB0aGlzLnNvdXJjZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnN1YnNjcmliZShzdWJzY3JpYmVyKTtcbiAgICB9O1xuICAgIE9ic2VydmFibGUucHJvdG90eXBlW1N5bWJvbF9vYnNlcnZhYmxlXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgb3BlcmF0aW9ucyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgb3BlcmF0aW9uc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwaXBlRnJvbUFycmF5KG9wZXJhdGlvbnMpKHRoaXMpO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5wcm90b3R5cGUudG9Qcm9taXNlID0gZnVuY3Rpb24gKHByb21pc2VDdG9yKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHByb21pc2VDdG9yID0gZ2V0UHJvbWlzZUN0b3IocHJvbWlzZUN0b3IpO1xuICAgICAgICByZXR1cm4gbmV3IHByb21pc2VDdG9yKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZTtcbiAgICAgICAgICAgIF90aGlzLnN1YnNjcmliZShmdW5jdGlvbiAoeCkgeyByZXR1cm4gKHZhbHVlID0geCk7IH0sIGZ1bmN0aW9uIChlcnIpIHsgcmV0dXJuIHJlamVjdChlcnIpOyB9LCBmdW5jdGlvbiAoKSB7IHJldHVybiByZXNvbHZlKHZhbHVlKTsgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5jcmVhdGUgPSBmdW5jdGlvbiAoc3Vic2NyaWJlKSB7XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShzdWJzY3JpYmUpO1xuICAgIH07XG4gICAgcmV0dXJuIE9ic2VydmFibGU7XG59KCkpO1xuZXhwb3J0IHsgT2JzZXJ2YWJsZSB9O1xuZnVuY3Rpb24gZ2V0UHJvbWlzZUN0b3IocHJvbWlzZUN0b3IpIHtcbiAgICB2YXIgX2E7XG4gICAgcmV0dXJuIChfYSA9IHByb21pc2VDdG9yICE9PSBudWxsICYmIHByb21pc2VDdG9yICE9PSB2b2lkIDAgPyBwcm9taXNlQ3RvciA6IGNvbmZpZy5Qcm9taXNlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBQcm9taXNlO1xufVxuZnVuY3Rpb24gaXNPYnNlcnZlcih2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAmJiBpc0Z1bmN0aW9uKHZhbHVlLm5leHQpICYmIGlzRnVuY3Rpb24odmFsdWUuZXJyb3IpICYmIGlzRnVuY3Rpb24odmFsdWUuY29tcGxldGUpO1xufVxuZnVuY3Rpb24gaXNTdWJzY3JpYmVyKHZhbHVlKSB7XG4gICAgcmV0dXJuICh2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIFN1YnNjcmliZXIpIHx8IChpc09ic2VydmVyKHZhbHVlKSAmJiBpc1N1YnNjcmlwdGlvbih2YWx1ZSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9T2JzZXJ2YWJsZS5qcy5tYXAiLCJpbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnLi9pc0Z1bmN0aW9uJztcbmV4cG9ydCBmdW5jdGlvbiBoYXNMaWZ0KHNvdXJjZSkge1xuICAgIHJldHVybiBpc0Z1bmN0aW9uKHNvdXJjZSA9PT0gbnVsbCB8fCBzb3VyY2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNvdXJjZS5saWZ0KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBvcGVyYXRlKGluaXQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgICBpZiAoaGFzTGlmdChzb3VyY2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gc291cmNlLmxpZnQoZnVuY3Rpb24gKGxpZnRlZFNvdXJjZSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbml0KGxpZnRlZFNvdXJjZSwgdGhpcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1VuYWJsZSB0byBsaWZ0IHVua25vd24gT2JzZXJ2YWJsZSB0eXBlJyk7XG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxpZnQuanMubWFwIiwiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBTdWJzY3JpYmVyIH0gZnJvbSAnLi4vU3Vic2NyaWJlcic7XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlT3BlcmF0b3JTdWJzY3JpYmVyKGRlc3RpbmF0aW9uLCBvbk5leHQsIG9uQ29tcGxldGUsIG9uRXJyb3IsIG9uRmluYWxpemUpIHtcbiAgICByZXR1cm4gbmV3IE9wZXJhdG9yU3Vic2NyaWJlcihkZXN0aW5hdGlvbiwgb25OZXh0LCBvbkNvbXBsZXRlLCBvbkVycm9yLCBvbkZpbmFsaXplKTtcbn1cbnZhciBPcGVyYXRvclN1YnNjcmliZXIgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhPcGVyYXRvclN1YnNjcmliZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gT3BlcmF0b3JTdWJzY3JpYmVyKGRlc3RpbmF0aW9uLCBvbk5leHQsIG9uQ29tcGxldGUsIG9uRXJyb3IsIG9uRmluYWxpemUsIHNob3VsZFVuc3Vic2NyaWJlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIGRlc3RpbmF0aW9uKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5vbkZpbmFsaXplID0gb25GaW5hbGl6ZTtcbiAgICAgICAgX3RoaXMuc2hvdWxkVW5zdWJzY3JpYmUgPSBzaG91bGRVbnN1YnNjcmliZTtcbiAgICAgICAgX3RoaXMuX25leHQgPSBvbk5leHRcbiAgICAgICAgICAgID8gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgb25OZXh0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogX3N1cGVyLnByb3RvdHlwZS5fbmV4dDtcbiAgICAgICAgX3RoaXMuX2Vycm9yID0gb25FcnJvclxuICAgICAgICAgICAgPyBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBfc3VwZXIucHJvdG90eXBlLl9lcnJvcjtcbiAgICAgICAgX3RoaXMuX2NvbXBsZXRlID0gb25Db21wbGV0ZVxuICAgICAgICAgICAgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgb25Db21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBfc3VwZXIucHJvdG90eXBlLl9jb21wbGV0ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPcGVyYXRvclN1YnNjcmliZXIucHJvdG90eXBlLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICghdGhpcy5zaG91bGRVbnN1YnNjcmliZSB8fCB0aGlzLnNob3VsZFVuc3Vic2NyaWJlKCkpIHtcbiAgICAgICAgICAgIHZhciBjbG9zZWRfMSA9IHRoaXMuY2xvc2VkO1xuICAgICAgICAgICAgX3N1cGVyLnByb3RvdHlwZS51bnN1YnNjcmliZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgIWNsb3NlZF8xICYmICgoX2EgPSB0aGlzLm9uRmluYWxpemUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHRoaXMpKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIE9wZXJhdG9yU3Vic2NyaWJlcjtcbn0oU3Vic2NyaWJlcikpO1xuZXhwb3J0IHsgT3BlcmF0b3JTdWJzY3JpYmVyIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1PcGVyYXRvclN1YnNjcmliZXIuanMubWFwIiwiaW1wb3J0IHsgY3JlYXRlRXJyb3JDbGFzcyB9IGZyb20gJy4vY3JlYXRlRXJyb3JDbGFzcyc7XG5leHBvcnQgdmFyIE9iamVjdFVuc3Vic2NyaWJlZEVycm9yID0gY3JlYXRlRXJyb3JDbGFzcyhmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIE9iamVjdFVuc3Vic2NyaWJlZEVycm9ySW1wbCgpIHtcbiAgICAgICAgX3N1cGVyKHRoaXMpO1xuICAgICAgICB0aGlzLm5hbWUgPSAnT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3InO1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSAnb2JqZWN0IHVuc3Vic2NyaWJlZCc7XG4gICAgfTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9T2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IuanMubWFwIiwiaW1wb3J0IHsgX19leHRlbmRzLCBfX3ZhbHVlcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJy4vT2JzZXJ2YWJsZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIEVNUFRZX1NVQlNDUklQVElPTiB9IGZyb20gJy4vU3Vic2NyaXB0aW9uJztcbmltcG9ydCB7IE9iamVjdFVuc3Vic2NyaWJlZEVycm9yIH0gZnJvbSAnLi91dGlsL09iamVjdFVuc3Vic2NyaWJlZEVycm9yJztcbmltcG9ydCB7IGFyclJlbW92ZSB9IGZyb20gJy4vdXRpbC9hcnJSZW1vdmUnO1xuaW1wb3J0IHsgZXJyb3JDb250ZXh0IH0gZnJvbSAnLi91dGlsL2Vycm9yQ29udGV4dCc7XG52YXIgU3ViamVjdCA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFN1YmplY3QsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gU3ViamVjdCgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuY2xvc2VkID0gZmFsc2U7XG4gICAgICAgIF90aGlzLmN1cnJlbnRPYnNlcnZlcnMgPSBudWxsO1xuICAgICAgICBfdGhpcy5vYnNlcnZlcnMgPSBbXTtcbiAgICAgICAgX3RoaXMuaXNTdG9wcGVkID0gZmFsc2U7XG4gICAgICAgIF90aGlzLmhhc0Vycm9yID0gZmFsc2U7XG4gICAgICAgIF90aGlzLnRocm93bkVycm9yID0gbnVsbDtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBTdWJqZWN0LnByb3RvdHlwZS5saWZ0ID0gZnVuY3Rpb24gKG9wZXJhdG9yKSB7XG4gICAgICAgIHZhciBzdWJqZWN0ID0gbmV3IEFub255bW91c1N1YmplY3QodGhpcywgdGhpcyk7XG4gICAgICAgIHN1YmplY3Qub3BlcmF0b3IgPSBvcGVyYXRvcjtcbiAgICAgICAgcmV0dXJuIHN1YmplY3Q7XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5fdGhyb3dJZkNsb3NlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBlcnJvckNvbnRleHQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGVfMSwgX2E7XG4gICAgICAgICAgICBfdGhpcy5fdGhyb3dJZkNsb3NlZCgpO1xuICAgICAgICAgICAgaWYgKCFfdGhpcy5pc1N0b3BwZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIV90aGlzLmN1cnJlbnRPYnNlcnZlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuY3VycmVudE9ic2VydmVycyA9IEFycmF5LmZyb20oX3RoaXMub2JzZXJ2ZXJzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyhfdGhpcy5jdXJyZW50T2JzZXJ2ZXJzKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9ic2VydmVyID0gX2MudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuZXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGVycm9yQ29udGV4dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfdGhpcy5fdGhyb3dJZkNsb3NlZCgpO1xuICAgICAgICAgICAgaWYgKCFfdGhpcy5pc1N0b3BwZWQpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5oYXNFcnJvciA9IF90aGlzLmlzU3RvcHBlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgX3RoaXMudGhyb3duRXJyb3IgPSBlcnI7XG4gICAgICAgICAgICAgICAgdmFyIG9ic2VydmVycyA9IF90aGlzLm9ic2VydmVycztcbiAgICAgICAgICAgICAgICB3aGlsZSAob2JzZXJ2ZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlcnMuc2hpZnQoKS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgZXJyb3JDb250ZXh0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzLl90aHJvd0lmQ2xvc2VkKCk7XG4gICAgICAgICAgICBpZiAoIV90aGlzLmlzU3RvcHBlZCkge1xuICAgICAgICAgICAgICAgIF90aGlzLmlzU3RvcHBlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdmFyIG9ic2VydmVycyA9IF90aGlzLm9ic2VydmVycztcbiAgICAgICAgICAgICAgICB3aGlsZSAob2JzZXJ2ZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlcnMuc2hpZnQoKS5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5pc1N0b3BwZWQgPSB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXJzID0gdGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbDtcbiAgICB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTdWJqZWN0LnByb3RvdHlwZSwgXCJvYnNlcnZlZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuICgoX2EgPSB0aGlzLm9ic2VydmVycykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkgPiAwO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgU3ViamVjdC5wcm90b3R5cGUuX3RyeVN1YnNjcmliZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHRoaXMuX3Rocm93SWZDbG9zZWQoKTtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5wcm90b3R5cGUuX3RyeVN1YnNjcmliZS5jYWxsKHRoaXMsIHN1YnNjcmliZXIpO1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHRoaXMuX3Rocm93SWZDbG9zZWQoKTtcbiAgICAgICAgdGhpcy5fY2hlY2tGaW5hbGl6ZWRTdGF0dXNlcyhzdWJzY3JpYmVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lubmVyU3Vic2NyaWJlKHN1YnNjcmliZXIpO1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuX2lubmVyU3Vic2NyaWJlID0gZnVuY3Rpb24gKHN1YnNjcmliZXIpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIF9hID0gdGhpcywgaGFzRXJyb3IgPSBfYS5oYXNFcnJvciwgaXNTdG9wcGVkID0gX2EuaXNTdG9wcGVkLCBvYnNlcnZlcnMgPSBfYS5vYnNlcnZlcnM7XG4gICAgICAgIGlmIChoYXNFcnJvciB8fCBpc1N0b3BwZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBFTVBUWV9TVUJTQ1JJUFRJT047XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbDtcbiAgICAgICAgb2JzZXJ2ZXJzLnB1c2goc3Vic2NyaWJlcik7XG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzLmN1cnJlbnRPYnNlcnZlcnMgPSBudWxsO1xuICAgICAgICAgICAgYXJyUmVtb3ZlKG9ic2VydmVycywgc3Vic2NyaWJlcik7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuX2NoZWNrRmluYWxpemVkU3RhdHVzZXMgPSBmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBoYXNFcnJvciA9IF9hLmhhc0Vycm9yLCB0aHJvd25FcnJvciA9IF9hLnRocm93bkVycm9yLCBpc1N0b3BwZWQgPSBfYS5pc1N0b3BwZWQ7XG4gICAgICAgIGlmIChoYXNFcnJvcikge1xuICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcih0aHJvd25FcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNTdG9wcGVkKSB7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YmplY3QucHJvdG90eXBlLmFzT2JzZXJ2YWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZSgpO1xuICAgICAgICBvYnNlcnZhYmxlLnNvdXJjZSA9IHRoaXM7XG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlO1xuICAgIH07XG4gICAgU3ViamVjdC5jcmVhdGUgPSBmdW5jdGlvbiAoZGVzdGluYXRpb24sIHNvdXJjZSkge1xuICAgICAgICByZXR1cm4gbmV3IEFub255bW91c1N1YmplY3QoZGVzdGluYXRpb24sIHNvdXJjZSk7XG4gICAgfTtcbiAgICByZXR1cm4gU3ViamVjdDtcbn0oT2JzZXJ2YWJsZSkpO1xuZXhwb3J0IHsgU3ViamVjdCB9O1xudmFyIEFub255bW91c1N1YmplY3QgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhBbm9ueW1vdXNTdWJqZWN0LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEFub255bW91c1N1YmplY3QoZGVzdGluYXRpb24sIHNvdXJjZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uO1xuICAgICAgICBfdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgQW5vbnltb3VzU3ViamVjdC5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAoX2IgPSAoX2EgPSB0aGlzLmRlc3RpbmF0aW9uKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubmV4dCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIHZhbHVlKTtcbiAgICB9O1xuICAgIEFub255bW91c1N1YmplY3QucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAoX2IgPSAoX2EgPSB0aGlzLmRlc3RpbmF0aW9uKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZXJyb3IpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCBlcnIpO1xuICAgIH07XG4gICAgQW5vbnltb3VzU3ViamVjdC5wcm90b3R5cGUuY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIChfYiA9IChfYSA9IHRoaXMuZGVzdGluYXRpb24pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jb21wbGV0ZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpO1xuICAgIH07XG4gICAgQW5vbnltb3VzU3ViamVjdC5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHJldHVybiAoX2IgPSAoX2EgPSB0aGlzLnNvdXJjZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnN1YnNjcmliZShzdWJzY3JpYmVyKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogRU1QVFlfU1VCU0NSSVBUSU9OO1xuICAgIH07XG4gICAgcmV0dXJuIEFub255bW91c1N1YmplY3Q7XG59KFN1YmplY3QpKTtcbmV4cG9ydCB7IEFub255bW91c1N1YmplY3QgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVN1YmplY3QuanMubWFwIiwiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAnLi9TdWJqZWN0JztcbnZhciBCZWhhdmlvclN1YmplY3QgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhCZWhhdmlvclN1YmplY3QsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQmVoYXZpb3JTdWJqZWN0KF92YWx1ZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5fdmFsdWUgPSBfdmFsdWU7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJlaGF2aW9yU3ViamVjdC5wcm90b3R5cGUsIFwidmFsdWVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBCZWhhdmlvclN1YmplY3QucHJvdG90eXBlLl9zdWJzY3JpYmUgPSBmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB2YXIgc3Vic2NyaXB0aW9uID0gX3N1cGVyLnByb3RvdHlwZS5fc3Vic2NyaWJlLmNhbGwodGhpcywgc3Vic2NyaWJlcik7XG4gICAgICAgICFzdWJzY3JpcHRpb24uY2xvc2VkICYmIHN1YnNjcmliZXIubmV4dCh0aGlzLl92YWx1ZSk7XG4gICAgICAgIHJldHVybiBzdWJzY3JpcHRpb247XG4gICAgfTtcbiAgICBCZWhhdmlvclN1YmplY3QucHJvdG90eXBlLmdldFZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBoYXNFcnJvciA9IF9hLmhhc0Vycm9yLCB0aHJvd25FcnJvciA9IF9hLnRocm93bkVycm9yLCBfdmFsdWUgPSBfYS5fdmFsdWU7XG4gICAgICAgIGlmIChoYXNFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgdGhyb3duRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGhyb3dJZkNsb3NlZCgpO1xuICAgICAgICByZXR1cm4gX3ZhbHVlO1xuICAgIH07XG4gICAgQmVoYXZpb3JTdWJqZWN0LnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUubmV4dC5jYWxsKHRoaXMsICh0aGlzLl92YWx1ZSA9IHZhbHVlKSk7XG4gICAgfTtcbiAgICByZXR1cm4gQmVoYXZpb3JTdWJqZWN0O1xufShTdWJqZWN0KSk7XG5leHBvcnQgeyBCZWhhdmlvclN1YmplY3QgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJlaGF2aW9yU3ViamVjdC5qcy5tYXAiLCJleHBvcnQgdmFyIGRhdGVUaW1lc3RhbXBQcm92aWRlciA9IHtcbiAgICBub3c6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChkYXRlVGltZXN0YW1wUHJvdmlkZXIuZGVsZWdhdGUgfHwgRGF0ZSkubm93KCk7XG4gICAgfSxcbiAgICBkZWxlZ2F0ZTogdW5kZWZpbmVkLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGVUaW1lc3RhbXBQcm92aWRlci5qcy5tYXAiLCJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJy4uL1N1YnNjcmlwdGlvbic7XG52YXIgQWN0aW9uID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQWN0aW9uLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEFjdGlvbihzY2hlZHVsZXIsIHdvcmspIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgfVxuICAgIEFjdGlvbi5wcm90b3R5cGUuc2NoZWR1bGUgPSBmdW5jdGlvbiAoc3RhdGUsIGRlbGF5KSB7XG4gICAgICAgIGlmIChkZWxheSA9PT0gdm9pZCAwKSB7IGRlbGF5ID0gMDsgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIHJldHVybiBBY3Rpb247XG59KFN1YnNjcmlwdGlvbikpO1xuZXhwb3J0IHsgQWN0aW9uIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BY3Rpb24uanMubWFwIiwiaW1wb3J0IHsgX19yZWFkLCBfX3NwcmVhZEFycmF5IH0gZnJvbSBcInRzbGliXCI7XG5leHBvcnQgdmFyIGludGVydmFsUHJvdmlkZXIgPSB7XG4gICAgc2V0SW50ZXJ2YWw6IGZ1bmN0aW9uIChoYW5kbGVyLCB0aW1lb3V0KSB7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMjsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pIC0gMl0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkZWxlZ2F0ZSA9IGludGVydmFsUHJvdmlkZXIuZGVsZWdhdGU7XG4gICAgICAgIGlmIChkZWxlZ2F0ZSA9PT0gbnVsbCB8fCBkZWxlZ2F0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVsZWdhdGUuc2V0SW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5zZXRJbnRlcnZhbC5hcHBseShkZWxlZ2F0ZSwgX19zcHJlYWRBcnJheShbaGFuZGxlciwgdGltZW91dF0sIF9fcmVhZChhcmdzKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXRJbnRlcnZhbC5hcHBseSh2b2lkIDAsIF9fc3ByZWFkQXJyYXkoW2hhbmRsZXIsIHRpbWVvdXRdLCBfX3JlYWQoYXJncykpKTtcbiAgICB9LFxuICAgIGNsZWFySW50ZXJ2YWw6IGZ1bmN0aW9uIChoYW5kbGUpIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gaW50ZXJ2YWxQcm92aWRlci5kZWxlZ2F0ZTtcbiAgICAgICAgcmV0dXJuICgoZGVsZWdhdGUgPT09IG51bGwgfHwgZGVsZWdhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRlbGVnYXRlLmNsZWFySW50ZXJ2YWwpIHx8IGNsZWFySW50ZXJ2YWwpKGhhbmRsZSk7XG4gICAgfSxcbiAgICBkZWxlZ2F0ZTogdW5kZWZpbmVkLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWludGVydmFsUHJvdmlkZXIuanMubWFwIiwiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICcuL0FjdGlvbic7XG5pbXBvcnQgeyBpbnRlcnZhbFByb3ZpZGVyIH0gZnJvbSAnLi9pbnRlcnZhbFByb3ZpZGVyJztcbmltcG9ydCB7IGFyclJlbW92ZSB9IGZyb20gJy4uL3V0aWwvYXJyUmVtb3ZlJztcbnZhciBBc3luY0FjdGlvbiA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEFzeW5jQWN0aW9uLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEFzeW5jQWN0aW9uKHNjaGVkdWxlciwgd29yaykge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBzY2hlZHVsZXIsIHdvcmspIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjtcbiAgICAgICAgX3RoaXMud29yayA9IHdvcms7XG4gICAgICAgIF90aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBBc3luY0FjdGlvbi5wcm90b3R5cGUuc2NoZWR1bGUgPSBmdW5jdGlvbiAoc3RhdGUsIGRlbGF5KSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICAgICAgICB2YXIgaWQgPSB0aGlzLmlkO1xuICAgICAgICB2YXIgc2NoZWR1bGVyID0gdGhpcy5zY2hlZHVsZXI7XG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmlkID0gdGhpcy5yZWN5Y2xlQXN5bmNJZChzY2hlZHVsZXIsIGlkLCBkZWxheSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wZW5kaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kZWxheSA9IGRlbGF5O1xuICAgICAgICB0aGlzLmlkID0gKF9hID0gdGhpcy5pZCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdGhpcy5yZXF1ZXN0QXN5bmNJZChzY2hlZHVsZXIsIHRoaXMuaWQsIGRlbGF5KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBBc3luY0FjdGlvbi5wcm90b3R5cGUucmVxdWVzdEFzeW5jSWQgPSBmdW5jdGlvbiAoc2NoZWR1bGVyLCBfaWQsIGRlbGF5KSB7XG4gICAgICAgIGlmIChkZWxheSA9PT0gdm9pZCAwKSB7IGRlbGF5ID0gMDsgfVxuICAgICAgICByZXR1cm4gaW50ZXJ2YWxQcm92aWRlci5zZXRJbnRlcnZhbChzY2hlZHVsZXIuZmx1c2guYmluZChzY2hlZHVsZXIsIHRoaXMpLCBkZWxheSk7XG4gICAgfTtcbiAgICBBc3luY0FjdGlvbi5wcm90b3R5cGUucmVjeWNsZUFzeW5jSWQgPSBmdW5jdGlvbiAoX3NjaGVkdWxlciwgaWQsIGRlbGF5KSB7XG4gICAgICAgIGlmIChkZWxheSA9PT0gdm9pZCAwKSB7IGRlbGF5ID0gMDsgfVxuICAgICAgICBpZiAoZGVsYXkgIT0gbnVsbCAmJiB0aGlzLmRlbGF5ID09PSBkZWxheSAmJiB0aGlzLnBlbmRpbmcgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gaWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICAgIGludGVydmFsUHJvdmlkZXIuY2xlYXJJbnRlcnZhbChpZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKHN0YXRlLCBkZWxheSkge1xuICAgICAgICBpZiAodGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRXJyb3IoJ2V4ZWN1dGluZyBhIGNhbmNlbGxlZCBhY3Rpb24nKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgdmFyIGVycm9yID0gdGhpcy5fZXhlY3V0ZShzdGF0ZSwgZGVsYXkpO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnBlbmRpbmcgPT09IGZhbHNlICYmIHRoaXMuaWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5pZCA9IHRoaXMucmVjeWNsZUFzeW5jSWQodGhpcy5zY2hlZHVsZXIsIHRoaXMuaWQsIG51bGwpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBBc3luY0FjdGlvbi5wcm90b3R5cGUuX2V4ZWN1dGUgPSBmdW5jdGlvbiAoc3RhdGUsIF9kZWxheSkge1xuICAgICAgICB2YXIgZXJyb3JlZCA9IGZhbHNlO1xuICAgICAgICB2YXIgZXJyb3JWYWx1ZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMud29yayhzdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGVycm9yZWQgPSB0cnVlO1xuICAgICAgICAgICAgZXJyb3JWYWx1ZSA9IGUgPyBlIDogbmV3IEVycm9yKCdTY2hlZHVsZWQgYWN0aW9uIHRocmV3IGZhbHN5IGVycm9yJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yZWQpIHtcbiAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHJldHVybiBlcnJvclZhbHVlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBBc3luY0FjdGlvbi5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghdGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMsIGlkID0gX2EuaWQsIHNjaGVkdWxlciA9IF9hLnNjaGVkdWxlcjtcbiAgICAgICAgICAgIHZhciBhY3Rpb25zID0gc2NoZWR1bGVyLmFjdGlvbnM7XG4gICAgICAgICAgICB0aGlzLndvcmsgPSB0aGlzLnN0YXRlID0gdGhpcy5zY2hlZHVsZXIgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBhcnJSZW1vdmUoYWN0aW9ucywgdGhpcyk7XG4gICAgICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaWQgPSB0aGlzLnJlY3ljbGVBc3luY0lkKHNjaGVkdWxlciwgaWQsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5kZWxheSA9IG51bGw7XG4gICAgICAgICAgICBfc3VwZXIucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBBc3luY0FjdGlvbjtcbn0oQWN0aW9uKSk7XG5leHBvcnQgeyBBc3luY0FjdGlvbiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QXN5bmNBY3Rpb24uanMubWFwIiwiaW1wb3J0IHsgZGF0ZVRpbWVzdGFtcFByb3ZpZGVyIH0gZnJvbSAnLi9zY2hlZHVsZXIvZGF0ZVRpbWVzdGFtcFByb3ZpZGVyJztcbnZhciBTY2hlZHVsZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFNjaGVkdWxlcihzY2hlZHVsZXJBY3Rpb25DdG9yLCBub3cpIHtcbiAgICAgICAgaWYgKG5vdyA9PT0gdm9pZCAwKSB7IG5vdyA9IFNjaGVkdWxlci5ub3c7IH1cbiAgICAgICAgdGhpcy5zY2hlZHVsZXJBY3Rpb25DdG9yID0gc2NoZWR1bGVyQWN0aW9uQ3RvcjtcbiAgICAgICAgdGhpcy5ub3cgPSBub3c7XG4gICAgfVxuICAgIFNjaGVkdWxlci5wcm90b3R5cGUuc2NoZWR1bGUgPSBmdW5jdGlvbiAod29yaywgZGVsYXksIHN0YXRlKSB7XG4gICAgICAgIGlmIChkZWxheSA9PT0gdm9pZCAwKSB7IGRlbGF5ID0gMDsgfVxuICAgICAgICByZXR1cm4gbmV3IHRoaXMuc2NoZWR1bGVyQWN0aW9uQ3Rvcih0aGlzLCB3b3JrKS5zY2hlZHVsZShzdGF0ZSwgZGVsYXkpO1xuICAgIH07XG4gICAgU2NoZWR1bGVyLm5vdyA9IGRhdGVUaW1lc3RhbXBQcm92aWRlci5ub3c7XG4gICAgcmV0dXJuIFNjaGVkdWxlcjtcbn0oKSk7XG5leHBvcnQgeyBTY2hlZHVsZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNjaGVkdWxlci5qcy5tYXAiLCJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IFNjaGVkdWxlciB9IGZyb20gJy4uL1NjaGVkdWxlcic7XG52YXIgQXN5bmNTY2hlZHVsZXIgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhBc3luY1NjaGVkdWxlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBBc3luY1NjaGVkdWxlcihTY2hlZHVsZXJBY3Rpb24sIG5vdykge1xuICAgICAgICBpZiAobm93ID09PSB2b2lkIDApIHsgbm93ID0gU2NoZWR1bGVyLm5vdzsgfVxuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBTY2hlZHVsZXJBY3Rpb24sIG5vdykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuYWN0aW9ucyA9IFtdO1xuICAgICAgICBfdGhpcy5fYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgQXN5bmNTY2hlZHVsZXIucHJvdG90eXBlLmZsdXNoID0gZnVuY3Rpb24gKGFjdGlvbikge1xuICAgICAgICB2YXIgYWN0aW9ucyA9IHRoaXMuYWN0aW9ucztcbiAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZSkge1xuICAgICAgICAgICAgYWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVycm9yO1xuICAgICAgICB0aGlzLl9hY3RpdmUgPSB0cnVlO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICBpZiAoKGVycm9yID0gYWN0aW9uLmV4ZWN1dGUoYWN0aW9uLnN0YXRlLCBhY3Rpb24uZGVsYXkpKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IHdoaWxlICgoYWN0aW9uID0gYWN0aW9ucy5zaGlmdCgpKSk7XG4gICAgICAgIHRoaXMuX2FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHdoaWxlICgoYWN0aW9uID0gYWN0aW9ucy5zaGlmdCgpKSkge1xuICAgICAgICAgICAgICAgIGFjdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBBc3luY1NjaGVkdWxlcjtcbn0oU2NoZWR1bGVyKSk7XG5leHBvcnQgeyBBc3luY1NjaGVkdWxlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QXN5bmNTY2hlZHVsZXIuanMubWFwIiwiaW1wb3J0IHsgQXN5bmNBY3Rpb24gfSBmcm9tICcuL0FzeW5jQWN0aW9uJztcbmltcG9ydCB7IEFzeW5jU2NoZWR1bGVyIH0gZnJvbSAnLi9Bc3luY1NjaGVkdWxlcic7XG5leHBvcnQgdmFyIGFzeW5jU2NoZWR1bGVyID0gbmV3IEFzeW5jU2NoZWR1bGVyKEFzeW5jQWN0aW9uKTtcbmV4cG9ydCB2YXIgYXN5bmMgPSBhc3luY1NjaGVkdWxlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFzeW5jLmpzLm1hcCIsImltcG9ydCB7IGFzeW5jU2NoZWR1bGVyIH0gZnJvbSAnLi4vc2NoZWR1bGVyL2FzeW5jJztcbmltcG9ydCB7IG9wZXJhdGUgfSBmcm9tICcuLi91dGlsL2xpZnQnO1xuaW1wb3J0IHsgY3JlYXRlT3BlcmF0b3JTdWJzY3JpYmVyIH0gZnJvbSAnLi9PcGVyYXRvclN1YnNjcmliZXInO1xuZXhwb3J0IGZ1bmN0aW9uIGRlYm91bmNlVGltZShkdWVUaW1lLCBzY2hlZHVsZXIpIHtcbiAgICBpZiAoc2NoZWR1bGVyID09PSB2b2lkIDApIHsgc2NoZWR1bGVyID0gYXN5bmNTY2hlZHVsZXI7IH1cbiAgICByZXR1cm4gb3BlcmF0ZShmdW5jdGlvbiAoc291cmNlLCBzdWJzY3JpYmVyKSB7XG4gICAgICAgIHZhciBhY3RpdmVUYXNrID0gbnVsbDtcbiAgICAgICAgdmFyIGxhc3RWYWx1ZSA9IG51bGw7XG4gICAgICAgIHZhciBsYXN0VGltZSA9IG51bGw7XG4gICAgICAgIHZhciBlbWl0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGFjdGl2ZVRhc2spIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVUYXNrLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgYWN0aXZlVGFzayA9IG51bGw7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gbGFzdFZhbHVlO1xuICAgICAgICAgICAgICAgIGxhc3RWYWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gZW1pdFdoZW5JZGxlKCkge1xuICAgICAgICAgICAgdmFyIHRhcmdldFRpbWUgPSBsYXN0VGltZSArIGR1ZVRpbWU7XG4gICAgICAgICAgICB2YXIgbm93ID0gc2NoZWR1bGVyLm5vdygpO1xuICAgICAgICAgICAgaWYgKG5vdyA8IHRhcmdldFRpbWUpIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVUYXNrID0gdGhpcy5zY2hlZHVsZSh1bmRlZmluZWQsIHRhcmdldFRpbWUgLSBub3cpO1xuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuYWRkKGFjdGl2ZVRhc2spO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVtaXQoKTtcbiAgICAgICAgfVxuICAgICAgICBzb3VyY2Uuc3Vic2NyaWJlKGNyZWF0ZU9wZXJhdG9yU3Vic2NyaWJlcihzdWJzY3JpYmVyLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGxhc3RWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgbGFzdFRpbWUgPSBzY2hlZHVsZXIubm93KCk7XG4gICAgICAgICAgICBpZiAoIWFjdGl2ZVRhc2spIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVUYXNrID0gc2NoZWR1bGVyLnNjaGVkdWxlKGVtaXRXaGVuSWRsZSwgZHVlVGltZSk7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5hZGQoYWN0aXZlVGFzayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGVtaXQoKTtcbiAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgfSwgdW5kZWZpbmVkLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsYXN0VmFsdWUgPSBhY3RpdmVUYXNrID0gbnVsbDtcbiAgICAgICAgfSkpO1xuICAgIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGVib3VuY2VUaW1lLmpzLm1hcCIsImltcG9ydCB7c2luZ2xldG9ufSBmcm9tIFwidHN5cmluZ2UtbmVvXCJcbmltcG9ydCBPcmRlciBmcm9tIFwiLi4vbW9kZWwvb3JkZXJcIlxuaW1wb3J0IHtvYnNlcnZlT2JqZWN0fSBmcm9tIFwiLi4vbGliL29iLW9iXCJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdH0gZnJvbSBcInJ4anNcIlxuXG5Ac2luZ2xldG9uKClcbmNsYXNzIE9yZGVyU3RhdGUge1xuXG4gICAgb3JkZXJzOiBBcnJheTxPcmRlcj5cbiAgICBwcml2YXRlIGN1cnJlbnRPcmRlcjogQmVoYXZpb3JTdWJqZWN0PE9yZGVyPlxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudE9yZGVyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxPcmRlcj4obmV3IE9yZGVyKCkpXG4gICAgfVxuXG4gICAgZ2V0Q3VycmVudE9yZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50T3JkZXJcbiAgICB9XG5cbiAgICBzZXRDdXJyZW50T3JkZXIob3JkZXI6IE9yZGVyKSB7XG4gICAgICAgIHRoaXMuY3VycmVudE9yZGVyLm5leHQob3JkZXIpXG4gICAgfVxuXG4gICAgZ2V0T3JkZXIodXVpZDogU3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9yZGVycy5tYXAoKGUpID0+IGUudXVpZCA9PSB1dWlkKVxuICAgIH1cblxuICAgIHVwZGF0ZU9yZGVyKG9yZGVyOiBPcmRlcikge1xuICAgICAgICB0aGlzLm9yZGVycy5wdXNoKG9yZGVyKVxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdGF0ZVxuIiwidmFyIG4sbCx1LHQsaSxyLG8sZSxmLGMscyxhLGgscD17fSx2PVtdLHk9L2FjaXR8ZXgoPzpzfGd8bnxwfCQpfHJwaHxncmlkfG93c3xtbmN8bnR3fGluZVtjaF18em9vfF5vcmR8aXRlcmEvaSxkPUFycmF5LmlzQXJyYXk7ZnVuY3Rpb24gdyhuLGwpe2Zvcih2YXIgdSBpbiBsKW5bdV09bFt1XTtyZXR1cm4gbn1mdW5jdGlvbiBfKG4pe24mJm4ucGFyZW50Tm9kZSYmbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pfWZ1bmN0aW9uIGcobCx1LHQpe3ZhciBpLHIsbyxlPXt9O2ZvcihvIGluIHUpXCJrZXlcIj09bz9pPXVbb106XCJyZWZcIj09bz9yPXVbb106ZVtvXT11W29dO2lmKGFyZ3VtZW50cy5sZW5ndGg+MiYmKGUuY2hpbGRyZW49YXJndW1lbnRzLmxlbmd0aD4zP24uY2FsbChhcmd1bWVudHMsMik6dCksXCJmdW5jdGlvblwiPT10eXBlb2YgbCYmbnVsbCE9bC5kZWZhdWx0UHJvcHMpZm9yKG8gaW4gbC5kZWZhdWx0UHJvcHMpdm9pZCAwPT09ZVtvXSYmKGVbb109bC5kZWZhdWx0UHJvcHNbb10pO3JldHVybiBtKGwsZSxpLHIsbnVsbCl9ZnVuY3Rpb24gbShuLHQsaSxyLG8pe3ZhciBlPXt0eXBlOm4scHJvcHM6dCxrZXk6aSxyZWY6cixfX2s6bnVsbCxfXzpudWxsLF9fYjowLF9fZTpudWxsLF9fYzpudWxsLGNvbnN0cnVjdG9yOnZvaWQgMCxfX3Y6bnVsbD09bz8rK3U6byxfX2k6LTEsX191OjB9O3JldHVybiBudWxsPT1vJiZudWxsIT1sLnZub2RlJiZsLnZub2RlKGUpLGV9ZnVuY3Rpb24gYigpe3JldHVybntjdXJyZW50Om51bGx9fWZ1bmN0aW9uIGsobil7cmV0dXJuIG4uY2hpbGRyZW59ZnVuY3Rpb24geChuLGwpe3RoaXMucHJvcHM9bix0aGlzLmNvbnRleHQ9bH1mdW5jdGlvbiBDKG4sbCl7aWYobnVsbD09bClyZXR1cm4gbi5fXz9DKG4uX18sbi5fX2krMSk6bnVsbDtmb3IodmFyIHU7bDxuLl9fay5sZW5ndGg7bCsrKWlmKG51bGwhPSh1PW4uX19rW2xdKSYmbnVsbCE9dS5fX2UpcmV0dXJuIHUuX19lO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIG4udHlwZT9DKG4pOm51bGx9ZnVuY3Rpb24gUyhuKXt2YXIgbCx1O2lmKG51bGwhPShuPW4uX18pJiZudWxsIT1uLl9fYyl7Zm9yKG4uX19lPW4uX19jLmJhc2U9bnVsbCxsPTA7bDxuLl9fay5sZW5ndGg7bCsrKWlmKG51bGwhPSh1PW4uX19rW2xdKSYmbnVsbCE9dS5fX2Upe24uX19lPW4uX19jLmJhc2U9dS5fX2U7YnJlYWt9cmV0dXJuIFMobil9fWZ1bmN0aW9uIE0obil7KCFuLl9fZCYmKG4uX19kPSEwKSYmaS5wdXNoKG4pJiYhUC5fX3IrK3x8ciE9PWwuZGVib3VuY2VSZW5kZXJpbmcpJiYoKHI9bC5kZWJvdW5jZVJlbmRlcmluZyl8fG8pKFApfWZ1bmN0aW9uIFAoKXt2YXIgbix1LHQscixvLGYsYyxzO2ZvcihpLnNvcnQoZSk7bj1pLnNoaWZ0KCk7KW4uX19kJiYodT1pLmxlbmd0aCxyPXZvaWQgMCxmPShvPSh0PW4pLl9fdikuX19lLGM9W10scz1bXSx0Ll9fUCYmKChyPXcoe30sbykpLl9fdj1vLl9fdisxLGwudm5vZGUmJmwudm5vZGUociksaih0Ll9fUCxyLG8sdC5fX24sdC5fX1AubmFtZXNwYWNlVVJJLDMyJm8uX191P1tmXTpudWxsLGMsbnVsbD09Zj9DKG8pOmYsISEoMzImby5fX3UpLHMpLHIuX192PW8uX192LHIuX18uX19rW3IuX19pXT1yLHooYyxyLHMpLHIuX19lIT1mJiZTKHIpKSxpLmxlbmd0aD51JiZpLnNvcnQoZSkpO1AuX19yPTB9ZnVuY3Rpb24gJChuLGwsdSx0LGkscixvLGUsZixjLHMpe3ZhciBhLGgseSxkLHcsXyxnPXQmJnQuX19rfHx2LG09bC5sZW5ndGg7Zm9yKGY9SSh1LGwsZyxmLG0pLGE9MDthPG07YSsrKW51bGwhPSh5PXUuX19rW2FdKSYmKGg9LTE9PT15Ll9faT9wOmdbeS5fX2ldfHxwLHkuX19pPWEsXz1qKG4seSxoLGkscixvLGUsZixjLHMpLGQ9eS5fX2UseS5yZWYmJmgucmVmIT15LnJlZiYmKGgucmVmJiZWKGgucmVmLG51bGwseSkscy5wdXNoKHkucmVmLHkuX19jfHxkLHkpKSxudWxsPT13JiZudWxsIT1kJiYodz1kKSw0JnkuX191fHxoLl9faz09PXkuX19rP2Y9QSh5LGYsbik6XCJmdW5jdGlvblwiPT10eXBlb2YgeS50eXBlJiZ2b2lkIDAhPT1fP2Y9XzpkJiYoZj1kLm5leHRTaWJsaW5nKSx5Ll9fdSY9LTcpO3JldHVybiB1Ll9fZT13LGZ9ZnVuY3Rpb24gSShuLGwsdSx0LGkpe3ZhciByLG8sZSxmLGMscz11Lmxlbmd0aCxhPXMsaD0wO2ZvcihuLl9faz1uZXcgQXJyYXkoaSkscj0wO3I8aTtyKyspbnVsbCE9KG89bFtyXSkmJlwiYm9vbGVhblwiIT10eXBlb2YgbyYmXCJmdW5jdGlvblwiIT10eXBlb2Ygbz8oZj1yK2gsKG89bi5fX2tbcl09XCJzdHJpbmdcIj09dHlwZW9mIG98fFwibnVtYmVyXCI9PXR5cGVvZiBvfHxcImJpZ2ludFwiPT10eXBlb2Ygb3x8by5jb25zdHJ1Y3Rvcj09U3RyaW5nP20obnVsbCxvLG51bGwsbnVsbCxudWxsKTpkKG8pP20oayx7Y2hpbGRyZW46b30sbnVsbCxudWxsLG51bGwpOnZvaWQgMD09PW8uY29uc3RydWN0b3ImJm8uX19iPjA/bShvLnR5cGUsby5wcm9wcyxvLmtleSxvLnJlZj9vLnJlZjpudWxsLG8uX192KTpvKS5fXz1uLG8uX19iPW4uX19iKzEsZT1udWxsLC0xIT09KGM9by5fX2k9TChvLHUsZixhKSkmJihhLS0sKGU9dVtjXSkmJihlLl9fdXw9MikpLG51bGw9PWV8fG51bGw9PT1lLl9fdj8oLTE9PWMmJmgtLSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBvLnR5cGUmJihvLl9fdXw9NCkpOmMhPWYmJihjPT1mLTE/aC0tOmM9PWYrMT9oKys6KGM+Zj9oLS06aCsrLG8uX191fD00KSkpOm4uX19rW3JdPW51bGw7aWYoYSlmb3Iocj0wO3I8cztyKyspbnVsbCE9KGU9dVtyXSkmJjA9PSgyJmUuX191KSYmKGUuX19lPT10JiYodD1DKGUpKSxxKGUsZSkpO3JldHVybiB0fWZ1bmN0aW9uIEEobixsLHUpe3ZhciB0LGk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygbi50eXBlKXtmb3IodD1uLl9fayxpPTA7dCYmaTx0Lmxlbmd0aDtpKyspdFtpXSYmKHRbaV0uX189bixsPUEodFtpXSxsLHUpKTtyZXR1cm4gbH1uLl9fZSE9bCYmKGwmJm4udHlwZSYmIXUuY29udGFpbnMobCkmJihsPUMobikpLHUuaW5zZXJ0QmVmb3JlKG4uX19lLGx8fG51bGwpLGw9bi5fX2UpO2Rve2w9bCYmbC5uZXh0U2libGluZ313aGlsZShudWxsIT1sJiY4PT1sLm5vZGVUeXBlKTtyZXR1cm4gbH1mdW5jdGlvbiBIKG4sbCl7cmV0dXJuIGw9bHx8W10sbnVsbD09bnx8XCJib29sZWFuXCI9PXR5cGVvZiBufHwoZChuKT9uLnNvbWUoZnVuY3Rpb24obil7SChuLGwpfSk6bC5wdXNoKG4pKSxsfWZ1bmN0aW9uIEwobixsLHUsdCl7dmFyIGkscixvPW4ua2V5LGU9bi50eXBlLGY9bFt1XTtpZihudWxsPT09Znx8ZiYmbz09Zi5rZXkmJmU9PT1mLnR5cGUmJjA9PSgyJmYuX191KSlyZXR1cm4gdTtpZih0PihudWxsIT1mJiYwPT0oMiZmLl9fdSk/MTowKSlmb3IoaT11LTEscj11KzE7aT49MHx8cjxsLmxlbmd0aDspe2lmKGk+PTApe2lmKChmPWxbaV0pJiYwPT0oMiZmLl9fdSkmJm89PWYua2V5JiZlPT09Zi50eXBlKXJldHVybiBpO2ktLX1pZihyPGwubGVuZ3RoKXtpZigoZj1sW3JdKSYmMD09KDImZi5fX3UpJiZvPT1mLmtleSYmZT09PWYudHlwZSlyZXR1cm4gcjtyKyt9fXJldHVybi0xfWZ1bmN0aW9uIFQobixsLHUpe1wiLVwiPT1sWzBdP24uc2V0UHJvcGVydHkobCxudWxsPT11P1wiXCI6dSk6bltsXT1udWxsPT11P1wiXCI6XCJudW1iZXJcIiE9dHlwZW9mIHV8fHkudGVzdChsKT91OnUrXCJweFwifWZ1bmN0aW9uIEYobixsLHUsdCxpKXt2YXIgcjtuOmlmKFwic3R5bGVcIj09bClpZihcInN0cmluZ1wiPT10eXBlb2YgdSluLnN0eWxlLmNzc1RleHQ9dTtlbHNle2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0JiYobi5zdHlsZS5jc3NUZXh0PXQ9XCJcIiksdClmb3IobCBpbiB0KXUmJmwgaW4gdXx8VChuLnN0eWxlLGwsXCJcIik7aWYodSlmb3IobCBpbiB1KXQmJnVbbF09PT10W2xdfHxUKG4uc3R5bGUsbCx1W2xdKX1lbHNlIGlmKFwib1wiPT1sWzBdJiZcIm5cIj09bFsxXSlyPWwhPShsPWwucmVwbGFjZShmLFwiJDFcIikpLGw9bC50b0xvd2VyQ2FzZSgpaW4gbnx8XCJvbkZvY3VzT3V0XCI9PWx8fFwib25Gb2N1c0luXCI9PWw/bC50b0xvd2VyQ2FzZSgpLnNsaWNlKDIpOmwuc2xpY2UoMiksbi5sfHwobi5sPXt9KSxuLmxbbCtyXT11LHU/dD91LnU9dC51Oih1LnU9YyxuLmFkZEV2ZW50TGlzdGVuZXIobCxyP2E6cyxyKSk6bi5yZW1vdmVFdmVudExpc3RlbmVyKGwscj9hOnMscik7ZWxzZXtpZihcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI9PWkpbD1sLnJlcGxhY2UoL3hsaW5rKEh8OmgpLyxcImhcIikucmVwbGFjZSgvc05hbWUkLyxcInNcIik7ZWxzZSBpZihcIndpZHRoXCIhPWwmJlwiaGVpZ2h0XCIhPWwmJlwiaHJlZlwiIT1sJiZcImxpc3RcIiE9bCYmXCJmb3JtXCIhPWwmJlwidGFiSW5kZXhcIiE9bCYmXCJkb3dubG9hZFwiIT1sJiZcInJvd1NwYW5cIiE9bCYmXCJjb2xTcGFuXCIhPWwmJlwicm9sZVwiIT1sJiZcInBvcG92ZXJcIiE9bCYmbCBpbiBuKXRyeXtuW2xdPW51bGw9PXU/XCJcIjp1O2JyZWFrIG59Y2F0Y2gobil7fVwiZnVuY3Rpb25cIj09dHlwZW9mIHV8fChudWxsPT11fHwhMT09PXUmJlwiLVwiIT1sWzRdP24ucmVtb3ZlQXR0cmlidXRlKGwpOm4uc2V0QXR0cmlidXRlKGwsXCJwb3BvdmVyXCI9PWwmJjE9PXU/XCJcIjp1KSl9fWZ1bmN0aW9uIE8obil7cmV0dXJuIGZ1bmN0aW9uKHUpe2lmKHRoaXMubCl7dmFyIHQ9dGhpcy5sW3UudHlwZStuXTtpZihudWxsPT11LnQpdS50PWMrKztlbHNlIGlmKHUudDx0LnUpcmV0dXJuO3JldHVybiB0KGwuZXZlbnQ/bC5ldmVudCh1KTp1KX19fWZ1bmN0aW9uIGoobix1LHQsaSxyLG8sZSxmLGMscyl7dmFyIGEsaCxwLHYseSxnLG0sYixDLFMsTSxQLEksQSxILEwsVCxGPXUudHlwZTtpZih2b2lkIDAhPT11LmNvbnN0cnVjdG9yKXJldHVybiBudWxsOzEyOCZ0Ll9fdSYmKGM9ISEoMzImdC5fX3UpLG89W2Y9dS5fX2U9dC5fX2VdKSwoYT1sLl9fYikmJmEodSk7bjppZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBGKXRyeXtpZihiPXUucHJvcHMsQz1cInByb3RvdHlwZVwiaW4gRiYmRi5wcm90b3R5cGUucmVuZGVyLFM9KGE9Ri5jb250ZXh0VHlwZSkmJmlbYS5fX2NdLE09YT9TP1MucHJvcHMudmFsdWU6YS5fXzppLHQuX19jP209KGg9dS5fX2M9dC5fX2MpLl9fPWguX19FOihDP3UuX19jPWg9bmV3IEYoYixNKToodS5fX2M9aD1uZXcgeChiLE0pLGguY29uc3RydWN0b3I9RixoLnJlbmRlcj1CKSxTJiZTLnN1YihoKSxoLnByb3BzPWIsaC5zdGF0ZXx8KGguc3RhdGU9e30pLGguY29udGV4dD1NLGguX19uPWkscD1oLl9fZD0hMCxoLl9faD1bXSxoLl9zYj1bXSksQyYmbnVsbD09aC5fX3MmJihoLl9fcz1oLnN0YXRlKSxDJiZudWxsIT1GLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyYmKGguX19zPT1oLnN0YXRlJiYoaC5fX3M9dyh7fSxoLl9fcykpLHcoaC5fX3MsRi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoYixoLl9fcykpKSx2PWgucHJvcHMseT1oLnN0YXRlLGguX192PXUscClDJiZudWxsPT1GLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyYmbnVsbCE9aC5jb21wb25lbnRXaWxsTW91bnQmJmguY29tcG9uZW50V2lsbE1vdW50KCksQyYmbnVsbCE9aC5jb21wb25lbnREaWRNb3VudCYmaC5fX2gucHVzaChoLmNvbXBvbmVudERpZE1vdW50KTtlbHNle2lmKEMmJm51bGw9PUYuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzJiZiIT09diYmbnVsbCE9aC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZoLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoYixNKSwhaC5fX2UmJihudWxsIT1oLnNob3VsZENvbXBvbmVudFVwZGF0ZSYmITE9PT1oLnNob3VsZENvbXBvbmVudFVwZGF0ZShiLGguX19zLE0pfHx1Ll9fdj09dC5fX3YpKXtmb3IodS5fX3YhPXQuX192JiYoaC5wcm9wcz1iLGguc3RhdGU9aC5fX3MsaC5fX2Q9ITEpLHUuX19lPXQuX19lLHUuX19rPXQuX19rLHUuX19rLnNvbWUoZnVuY3Rpb24obil7biYmKG4uX189dSl9KSxQPTA7UDxoLl9zYi5sZW5ndGg7UCsrKWguX19oLnB1c2goaC5fc2JbUF0pO2guX3NiPVtdLGguX19oLmxlbmd0aCYmZS5wdXNoKGgpO2JyZWFrIG59bnVsbCE9aC5jb21wb25lbnRXaWxsVXBkYXRlJiZoLmNvbXBvbmVudFdpbGxVcGRhdGUoYixoLl9fcyxNKSxDJiZudWxsIT1oLmNvbXBvbmVudERpZFVwZGF0ZSYmaC5fX2gucHVzaChmdW5jdGlvbigpe2guY29tcG9uZW50RGlkVXBkYXRlKHYseSxnKX0pfWlmKGguY29udGV4dD1NLGgucHJvcHM9YixoLl9fUD1uLGguX19lPSExLEk9bC5fX3IsQT0wLEMpe2ZvcihoLnN0YXRlPWguX19zLGguX19kPSExLEkmJkkodSksYT1oLnJlbmRlcihoLnByb3BzLGguc3RhdGUsaC5jb250ZXh0KSxIPTA7SDxoLl9zYi5sZW5ndGg7SCsrKWguX19oLnB1c2goaC5fc2JbSF0pO2guX3NiPVtdfWVsc2UgZG97aC5fX2Q9ITEsSSYmSSh1KSxhPWgucmVuZGVyKGgucHJvcHMsaC5zdGF0ZSxoLmNvbnRleHQpLGguc3RhdGU9aC5fX3N9d2hpbGUoaC5fX2QmJisrQTwyNSk7aC5zdGF0ZT1oLl9fcyxudWxsIT1oLmdldENoaWxkQ29udGV4dCYmKGk9dyh3KHt9LGkpLGguZ2V0Q2hpbGRDb250ZXh0KCkpKSxDJiYhcCYmbnVsbCE9aC5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSYmKGc9aC5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSh2LHkpKSxmPSQobixkKEw9bnVsbCE9YSYmYS50eXBlPT09ayYmbnVsbD09YS5rZXk/YS5wcm9wcy5jaGlsZHJlbjphKT9MOltMXSx1LHQsaSxyLG8sZSxmLGMscyksaC5iYXNlPXUuX19lLHUuX191Jj0tMTYxLGguX19oLmxlbmd0aCYmZS5wdXNoKGgpLG0mJihoLl9fRT1oLl9fPW51bGwpfWNhdGNoKG4pe2lmKHUuX192PW51bGwsY3x8bnVsbCE9bylpZihuLnRoZW4pe2Zvcih1Ll9fdXw9Yz8xNjA6MTI4O2YmJjg9PWYubm9kZVR5cGUmJmYubmV4dFNpYmxpbmc7KWY9Zi5uZXh0U2libGluZztvW28uaW5kZXhPZihmKV09bnVsbCx1Ll9fZT1mfWVsc2UgZm9yKFQ9by5sZW5ndGg7VC0tOylfKG9bVF0pO2Vsc2UgdS5fX2U9dC5fX2UsdS5fX2s9dC5fX2s7bC5fX2Uobix1LHQpfWVsc2UgbnVsbD09byYmdS5fX3Y9PXQuX192Pyh1Ll9faz10Ll9fayx1Ll9fZT10Ll9fZSk6Zj11Ll9fZT1OKHQuX19lLHUsdCxpLHIsbyxlLGMscyk7cmV0dXJuKGE9bC5kaWZmZWQpJiZhKHUpLDEyOCZ1Ll9fdT92b2lkIDA6Zn1mdW5jdGlvbiB6KG4sdSx0KXtmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKylWKHRbaV0sdFsrK2ldLHRbKytpXSk7bC5fX2MmJmwuX19jKHUsbiksbi5zb21lKGZ1bmN0aW9uKHUpe3RyeXtuPXUuX19oLHUuX19oPVtdLG4uc29tZShmdW5jdGlvbihuKXtuLmNhbGwodSl9KX1jYXRjaChuKXtsLl9fZShuLHUuX192KX19KX1mdW5jdGlvbiBOKHUsdCxpLHIsbyxlLGYsYyxzKXt2YXIgYSxoLHYseSx3LGcsbSxiPWkucHJvcHMsaz10LnByb3BzLHg9dC50eXBlO2lmKFwic3ZnXCI9PXg/bz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI6XCJtYXRoXCI9PXg/bz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIjpvfHwobz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIiksbnVsbCE9ZSlmb3IoYT0wO2E8ZS5sZW5ndGg7YSsrKWlmKCh3PWVbYV0pJiZcInNldEF0dHJpYnV0ZVwiaW4gdz09ISF4JiYoeD93LmxvY2FsTmFtZT09eDozPT13Lm5vZGVUeXBlKSl7dT13LGVbYV09bnVsbDticmVha31pZihudWxsPT11KXtpZihudWxsPT14KXJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShrKTt1PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhvLHgsay5pcyYmayksYyYmKGwuX19tJiZsLl9fbSh0LGUpLGM9ITEpLGU9bnVsbH1pZihudWxsPT09eCliPT09a3x8YyYmdS5kYXRhPT09a3x8KHUuZGF0YT1rKTtlbHNle2lmKGU9ZSYmbi5jYWxsKHUuY2hpbGROb2RlcyksYj1pLnByb3BzfHxwLCFjJiZudWxsIT1lKWZvcihiPXt9LGE9MDthPHUuYXR0cmlidXRlcy5sZW5ndGg7YSsrKWJbKHc9dS5hdHRyaWJ1dGVzW2FdKS5uYW1lXT13LnZhbHVlO2ZvcihhIGluIGIpaWYodz1iW2FdLFwiY2hpbGRyZW5cIj09YSk7ZWxzZSBpZihcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PWEpdj13O2Vsc2UgaWYoIShhIGluIGspKXtpZihcInZhbHVlXCI9PWEmJlwiZGVmYXVsdFZhbHVlXCJpbiBrfHxcImNoZWNrZWRcIj09YSYmXCJkZWZhdWx0Q2hlY2tlZFwiaW4gayljb250aW51ZTtGKHUsYSxudWxsLHcsbyl9Zm9yKGEgaW4gayl3PWtbYV0sXCJjaGlsZHJlblwiPT1hP3k9dzpcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PWE/aD13OlwidmFsdWVcIj09YT9nPXc6XCJjaGVja2VkXCI9PWE/bT13OmMmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHd8fGJbYV09PT13fHxGKHUsYSx3LGJbYV0sbyk7aWYoaCljfHx2JiYoaC5fX2h0bWw9PT12Ll9faHRtbHx8aC5fX2h0bWw9PT11LmlubmVySFRNTCl8fCh1LmlubmVySFRNTD1oLl9faHRtbCksdC5fX2s9W107ZWxzZSBpZih2JiYodS5pbm5lckhUTUw9XCJcIiksJCh1LGQoeSk/eTpbeV0sdCxpLHIsXCJmb3JlaWduT2JqZWN0XCI9PXg/XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI6byxlLGYsZT9lWzBdOmkuX19rJiZDKGksMCksYyxzKSxudWxsIT1lKWZvcihhPWUubGVuZ3RoO2EtLTspXyhlW2FdKTtjfHwoYT1cInZhbHVlXCIsXCJwcm9ncmVzc1wiPT14JiZudWxsPT1nP3UucmVtb3ZlQXR0cmlidXRlKFwidmFsdWVcIik6dm9pZCAwIT09ZyYmKGchPT11W2FdfHxcInByb2dyZXNzXCI9PXgmJiFnfHxcIm9wdGlvblwiPT14JiZnIT09YlthXSkmJkYodSxhLGcsYlthXSxvKSxhPVwiY2hlY2tlZFwiLHZvaWQgMCE9PW0mJm0hPT11W2FdJiZGKHUsYSxtLGJbYV0sbykpfXJldHVybiB1fWZ1bmN0aW9uIFYobix1LHQpe3RyeXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBuKXt2YXIgaT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBuLl9fdTtpJiZuLl9fdSgpLGkmJm51bGw9PXV8fChuLl9fdT1uKHUpKX1lbHNlIG4uY3VycmVudD11fWNhdGNoKG4pe2wuX19lKG4sdCl9fWZ1bmN0aW9uIHEobix1LHQpe3ZhciBpLHI7aWYobC51bm1vdW50JiZsLnVubW91bnQobiksKGk9bi5yZWYpJiYoaS5jdXJyZW50JiZpLmN1cnJlbnQhPT1uLl9fZXx8VihpLG51bGwsdSkpLG51bGwhPShpPW4uX19jKSl7aWYoaS5jb21wb25lbnRXaWxsVW5tb3VudCl0cnl7aS5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKG4pe2wuX19lKG4sdSl9aS5iYXNlPWkuX19QPW51bGx9aWYoaT1uLl9faylmb3Iocj0wO3I8aS5sZW5ndGg7cisrKWlbcl0mJnEoaVtyXSx1LHR8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIG4udHlwZSk7dHx8XyhuLl9fZSksbi5fX2M9bi5fXz1uLl9fZT12b2lkIDB9ZnVuY3Rpb24gQihuLGwsdSl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3Iobix1KX1mdW5jdGlvbiBEKHUsdCxpKXt2YXIgcixvLGUsZjt0PT1kb2N1bWVudCYmKHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSxsLl9fJiZsLl9fKHUsdCksbz0ocj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBpKT9udWxsOmkmJmkuX19rfHx0Ll9fayxlPVtdLGY9W10saih0LHU9KCFyJiZpfHx0KS5fX2s9ZyhrLG51bGwsW3VdKSxvfHxwLHAsdC5uYW1lc3BhY2VVUkksIXImJmk/W2ldOm8/bnVsbDp0LmZpcnN0Q2hpbGQ/bi5jYWxsKHQuY2hpbGROb2Rlcyk6bnVsbCxlLCFyJiZpP2k6bz9vLl9fZTp0LmZpcnN0Q2hpbGQscixmKSx6KGUsdSxmKX1mdW5jdGlvbiBFKG4sbCl7RChuLGwsRSl9ZnVuY3Rpb24gRyhsLHUsdCl7dmFyIGkscixvLGUsZj13KHt9LGwucHJvcHMpO2ZvcihvIGluIGwudHlwZSYmbC50eXBlLmRlZmF1bHRQcm9wcyYmKGU9bC50eXBlLmRlZmF1bHRQcm9wcyksdSlcImtleVwiPT1vP2k9dVtvXTpcInJlZlwiPT1vP3I9dVtvXTpmW29dPXZvaWQgMD09PXVbb10mJnZvaWQgMCE9PWU/ZVtvXTp1W29dO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjImJihmLmNoaWxkcmVuPWFyZ3VtZW50cy5sZW5ndGg+Mz9uLmNhbGwoYXJndW1lbnRzLDIpOnQpLG0obC50eXBlLGYsaXx8bC5rZXkscnx8bC5yZWYsbnVsbCl9ZnVuY3Rpb24gSihuLGwpe3ZhciB1PXtfX2M6bD1cIl9fY0NcIitoKyssX186bixDb25zdW1lcjpmdW5jdGlvbihuLGwpe3JldHVybiBuLmNoaWxkcmVuKGwpfSxQcm92aWRlcjpmdW5jdGlvbihuKXt2YXIgdSx0O3JldHVybiB0aGlzLmdldENoaWxkQ29udGV4dHx8KHU9bmV3IFNldCwodD17fSlbbF09dGhpcyx0aGlzLmdldENoaWxkQ29udGV4dD1mdW5jdGlvbigpe3JldHVybiB0fSx0aGlzLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dT1udWxsfSx0aGlzLnNob3VsZENvbXBvbmVudFVwZGF0ZT1mdW5jdGlvbihuKXt0aGlzLnByb3BzLnZhbHVlIT09bi52YWx1ZSYmdS5mb3JFYWNoKGZ1bmN0aW9uKG4pe24uX19lPSEwLE0obil9KX0sdGhpcy5zdWI9ZnVuY3Rpb24obil7dS5hZGQobik7dmFyIGw9bi5jb21wb25lbnRXaWxsVW5tb3VudDtuLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dSYmdS5kZWxldGUobiksbCYmbC5jYWxsKG4pfX0pLG4uY2hpbGRyZW59fTtyZXR1cm4gdS5Qcm92aWRlci5fXz11LkNvbnN1bWVyLmNvbnRleHRUeXBlPXV9bj12LnNsaWNlLGw9e19fZTpmdW5jdGlvbihuLGwsdSx0KXtmb3IodmFyIGkscixvO2w9bC5fXzspaWYoKGk9bC5fX2MpJiYhaS5fXyl0cnl7aWYoKHI9aS5jb25zdHJ1Y3RvcikmJm51bGwhPXIuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yJiYoaS5zZXRTdGF0ZShyLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihuKSksbz1pLl9fZCksbnVsbCE9aS5jb21wb25lbnREaWRDYXRjaCYmKGkuY29tcG9uZW50RGlkQ2F0Y2gobix0fHx7fSksbz1pLl9fZCksbylyZXR1cm4gaS5fX0U9aX1jYXRjaChsKXtuPWx9dGhyb3cgbn19LHU9MCx0PWZ1bmN0aW9uKG4pe3JldHVybiBudWxsIT1uJiZudWxsPT1uLmNvbnN0cnVjdG9yfSx4LnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihuLGwpe3ZhciB1O3U9bnVsbCE9dGhpcy5fX3MmJnRoaXMuX19zIT09dGhpcy5zdGF0ZT90aGlzLl9fczp0aGlzLl9fcz13KHt9LHRoaXMuc3RhdGUpLFwiZnVuY3Rpb25cIj09dHlwZW9mIG4mJihuPW4odyh7fSx1KSx0aGlzLnByb3BzKSksbiYmdyh1LG4pLG51bGwhPW4mJnRoaXMuX192JiYobCYmdGhpcy5fc2IucHVzaChsKSxNKHRoaXMpKX0seC5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24obil7dGhpcy5fX3YmJih0aGlzLl9fZT0hMCxuJiZ0aGlzLl9faC5wdXNoKG4pLE0odGhpcykpfSx4LnByb3RvdHlwZS5yZW5kZXI9ayxpPVtdLG89XCJmdW5jdGlvblwiPT10eXBlb2YgUHJvbWlzZT9Qcm9taXNlLnByb3RvdHlwZS50aGVuLmJpbmQoUHJvbWlzZS5yZXNvbHZlKCkpOnNldFRpbWVvdXQsZT1mdW5jdGlvbihuLGwpe3JldHVybiBuLl9fdi5fX2ItbC5fX3YuX19ifSxQLl9fcj0wLGY9LyhQb2ludGVyQ2FwdHVyZSkkfENhcHR1cmUkL2ksYz0wLHM9TyghMSksYT1PKCEwKSxoPTA7ZXhwb3J0e3ggYXMgQ29tcG9uZW50LGsgYXMgRnJhZ21lbnQsRyBhcyBjbG9uZUVsZW1lbnQsSiBhcyBjcmVhdGVDb250ZXh0LGcgYXMgY3JlYXRlRWxlbWVudCxiIGFzIGNyZWF0ZVJlZixnIGFzIGgsRSBhcyBoeWRyYXRlLHQgYXMgaXNWYWxpZEVsZW1lbnQsbCBhcyBvcHRpb25zLEQgYXMgcmVuZGVyLEggYXMgdG9DaGlsZEFycmF5fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXByZWFjdC5tb2R1bGUuanMubWFwXG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5leHBvcnQgdmFyIERlZmF1bHRDb250ZXh0ID0ge1xuICBjb2xvcjogdW5kZWZpbmVkLFxuICBzaXplOiB1bmRlZmluZWQsXG4gIGNsYXNzTmFtZTogdW5kZWZpbmVkLFxuICBzdHlsZTogdW5kZWZpbmVkLFxuICBhdHRyOiB1bmRlZmluZWRcbn07XG5leHBvcnQgdmFyIEljb25Db250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dCAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChEZWZhdWx0Q29udGV4dCk7IiwidmFyIF9leGNsdWRlZCA9IFtcImF0dHJcIiwgXCJzaXplXCIsIFwidGl0bGVcIl07XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSB0eXBlb2YgaSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gdHlwZW9mIHQgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gdHlwZW9mIGkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgSWNvbkNvbnRleHQsIERlZmF1bHRDb250ZXh0IH0gZnJvbSBcIi4vaWNvbkNvbnRleHQubWpzXCI7XG5mdW5jdGlvbiBUcmVlMkVsZW1lbnQodHJlZSkge1xuICByZXR1cm4gdHJlZSAmJiB0cmVlLm1hcCgobm9kZSwgaSkgPT4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQobm9kZS50YWcsIF9vYmplY3RTcHJlYWQoe1xuICAgIGtleTogaVxuICB9LCBub2RlLmF0dHIpLCBUcmVlMkVsZW1lbnQobm9kZS5jaGlsZCkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBHZW5JY29uKGRhdGEpIHtcbiAgcmV0dXJuIHByb3BzID0+IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEljb25CYXNlLCBfZXh0ZW5kcyh7XG4gICAgYXR0cjogX29iamVjdFNwcmVhZCh7fSwgZGF0YS5hdHRyKVxuICB9LCBwcm9wcyksIFRyZWUyRWxlbWVudChkYXRhLmNoaWxkKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gSWNvbkJhc2UocHJvcHMpIHtcbiAgdmFyIGVsZW0gPSBjb25mID0+IHtcbiAgICB2YXIge1xuICAgICAgICBhdHRyLFxuICAgICAgICBzaXplLFxuICAgICAgICB0aXRsZVxuICAgICAgfSA9IHByb3BzLFxuICAgICAgc3ZnUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZCk7XG4gICAgdmFyIGNvbXB1dGVkU2l6ZSA9IHNpemUgfHwgY29uZi5zaXplIHx8IFwiMWVtXCI7XG4gICAgdmFyIGNsYXNzTmFtZTtcbiAgICBpZiAoY29uZi5jbGFzc05hbWUpIGNsYXNzTmFtZSA9IGNvbmYuY2xhc3NOYW1lO1xuICAgIGlmIChwcm9wcy5jbGFzc05hbWUpIGNsYXNzTmFtZSA9IChjbGFzc05hbWUgPyBjbGFzc05hbWUgKyBcIiBcIiA6IFwiXCIpICsgcHJvcHMuY2xhc3NOYW1lO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCBfZXh0ZW5kcyh7XG4gICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICBmaWxsOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgc3Ryb2tlV2lkdGg6IFwiMFwiXG4gICAgfSwgY29uZi5hdHRyLCBhdHRyLCBzdmdQcm9wcywge1xuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgICBzdHlsZTogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgY29sb3I6IHByb3BzLmNvbG9yIHx8IGNvbmYuY29sb3JcbiAgICAgIH0sIGNvbmYuc3R5bGUpLCBwcm9wcy5zdHlsZSksXG4gICAgICBoZWlnaHQ6IGNvbXB1dGVkU2l6ZSxcbiAgICAgIHdpZHRoOiBjb21wdXRlZFNpemUsXG4gICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgfSksIHRpdGxlICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwidGl0bGVcIiwgbnVsbCwgdGl0bGUpLCBwcm9wcy5jaGlsZHJlbik7XG4gIH07XG4gIHJldHVybiBJY29uQ29udGV4dCAhPT0gdW5kZWZpbmVkID8gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbkNvbnRleHQuQ29uc3VtZXIsIG51bGwsIGNvbmYgPT4gZWxlbShjb25mKSkgOiBlbGVtKERlZmF1bHRDb250ZXh0KTtcbn0iLCIvLyBUSElTIEZJTEUgSVMgQVVUTyBHRU5FUkFURURcbmltcG9ydCB7IEdlbkljb24gfSBmcm9tICcuLi9saWIvaW5kZXgubWpzJztcbmV4cG9ydCBmdW5jdGlvbiBIaUFjYWRlbWljQ2FwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4zOTQgMi4wOGExIDEgMCAwMC0uNzg4IDBsLTcgM2ExIDEgMCAwMDAgMS44NEw1LjI1IDguMDUxYS45OTkuOTk5IDAgMDEuMzU2LS4yNTdsNC0xLjcxNGExIDEgMCAxMS43ODggMS44MzhMNy42NjcgOS4wODhsMS45NC44MzFhMSAxIDAgMDAuNzg3IDBsNy0zYTEgMSAwIDAwMC0xLjgzOGwtNy0zek0zLjMxIDkuMzk3TDUgMTAuMTJ2NC4xMDJhOC45NjkgOC45NjkgMCAwMC0xLjA1LS4xNzQgMSAxIDAgMDEtLjg5LS44OSAxMS4xMTUgMTEuMTE1IDAgMDEuMjUtMy43NjJ6TTkuMyAxNi41NzNBOS4wMjYgOS4wMjYgMCAwMDcgMTQuOTM1di0zLjk1N2wxLjgxOC43OGEzIDMgMCAwMDIuMzY0IDBsNS41MDgtMi4zNjFhMTEuMDI2IDExLjAyNiAwIDAxLjI1IDMuNzYyIDEgMSAwIDAxLS44OS44OSA4Ljk2OCA4Ljk2OCAwIDAwLTUuMzUgMi41MjQgMSAxIDAgMDEtMS40IDB6TTYgMThhMSAxIDAgMDAxLTF2LTIuMDY1YTguOTM1IDguOTM1IDAgMDAtMi0uNzEyVjE3YTEgMSAwIDAwMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlBZGp1c3RtZW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA0YTEgMSAwIDAwLTIgMHY3LjI2OGEyIDIgMCAwMDAgMy40NjRWMTZhMSAxIDAgMTAyIDB2LTEuMjY4YTIgMiAwIDAwMC0zLjQ2NFY0ek0xMSA0YTEgMSAwIDEwLTIgMHYxLjI2OGEyIDIgMCAwMDAgMy40NjRWMTZhMSAxIDAgMTAyIDBWOC43MzJhMiAyIDAgMDAwLTMuNDY0VjR6TTE2IDNhMSAxIDAgMDExIDF2Ny4yNjhhMiAyIDAgMDEwIDMuNDY0VjE2YTEgMSAwIDExLTIgMHYtMS4yNjhhMiAyIDAgMDEwLTMuNDY0VjRhMSAxIDAgMDExLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFubm90YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xOCAxM1Y1YTIgMiAwIDAwLTItMkg0YTIgMiAwIDAwLTIgMnY4YTIgMiAwIDAwMiAyaDNsMyAzIDMtM2gzYTIgMiAwIDAwMi0yek01IDdhMSAxIDAgMDExLTFoOGExIDEgMCAxMTAgMkg2YTEgMSAwIDAxLTEtMXptMSAzYTEgMSAwIDEwMCAyaDNhMSAxIDAgMTAwLTJINnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgM2EyIDIgMCAxMDAgNGgxMmEyIDIgMCAxMDAtNEg0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyA4aDE0djdhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yVjh6bTUgM2ExIDEgMCAwMTEtMWgyYTEgMSAwIDExMCAySDlhMSAxIDAgMDEtMS0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dDaXJjbGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnptMS0xMWExIDEgMCAxMC0yIDB2My41ODZMNy43MDcgOS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMyAzYTEgMSAwIDAwMS40MTQgMGwzLTNhMSAxIDAgMDAtMS40MTQtMS40MTRMMTEgMTAuNTg2Vjd6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlBcnJvd0NpcmNsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2em0uNzA3LTEwLjI5M2ExIDEgMCAwMC0xLjQxNC0xLjQxNGwtMyAzYTEgMSAwIDAwMCAxLjQxNGwzIDNhMSAxIDAgMDAxLjQxNC0xLjQxNEw5LjQxNCAxMUgxM2ExIDEgMCAxMDAtMkg5LjQxNGwxLjI5My0xLjI5M3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93Q2lyY2xlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2em0zLjcwNy04LjcwN2wtMy0zYTEgMSAwIDAwLTEuNDE0IDEuNDE0TDEwLjU4NiA5SDdhMSAxIDAgMTAwIDJoMy41ODZsLTEuMjkzIDEuMjkzYTEgMSAwIDEwMS40MTQgMS40MTRsMy0zYTEgMSAwIDAwMC0xLjQxNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93Q2lyY2xlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2em0zLjcwNy04LjcwN2wtMy0zYTEgMSAwIDAwLTEuNDE0IDBsLTMgM2ExIDEgMCAwMDEuNDE0IDEuNDE0TDkgOS40MTRWMTNhMSAxIDAgMTAyIDBWOS40MTRsMS4yOTMgMS4yOTNhMSAxIDAgMDAxLjQxNC0xLjQxNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE2LjcwNyAxMC4yOTNhMSAxIDAgMDEwIDEuNDE0bC02IDZhMSAxIDAgMDEtMS40MTQgMGwtNi02YTEgMSAwIDExMS40MTQtMS40MTRMOSAxNC41ODZWM2ExIDEgMCAwMTIgMHYxMS41ODZsNC4yOTMtNC4yOTNhMSAxIDAgMDExLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOS43MDcgMTYuNzA3YTEgMSAwIDAxLTEuNDE0IDBsLTYtNmExIDEgMCAwMTAtMS40MTRsNi02YTEgMSAwIDAxMS40MTQgMS40MTRMNS40MTQgOUgxN2ExIDEgMCAxMTAgMkg1LjQxNGw0LjI5MyA0LjI5M2ExIDEgMCAwMTAgMS40MTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlBcnJvd05hcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNC43MDcgMTIuMjkzYTEgMSAwIDAxMCAxLjQxNGwtNCA0YTEgMSAwIDAxLTEuNDE0IDBsLTQtNGExIDEgMCAxMTEuNDE0LTEuNDE0TDkgMTQuNTg2VjNhMSAxIDAgMDEyIDB2MTEuNTg2bDIuMjkzLTIuMjkzYTEgMSAwIDAxMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93TmFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTcuNzA3IDE0LjcwN2ExIDEgMCAwMS0xLjQxNCAwbC00LTRhMSAxIDAgMDEwLTEuNDE0bDQtNGExIDEgMCAwMTEuNDE0IDEuNDE0TDUuNDE0IDlIMTdhMSAxIDAgMTEwIDJINS40MTRsMi4yOTMgMi4yOTNhMSAxIDAgMDEwIDEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dOYXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEyLjI5MyA1LjI5M2ExIDEgMCAwMTEuNDE0IDBsNCA0YTEgMSAwIDAxMCAxLjQxNGwtNCA0YTEgMSAwIDAxLTEuNDE0LTEuNDE0TDE0LjU4NiAxMUgzYTEgMSAwIDExMC0yaDExLjU4NmwtMi4yOTMtMi4yOTNhMSAxIDAgMDEwLTEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dOYXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUuMjkzIDcuNzA3YTEgMSAwIDAxMC0xLjQxNGw0LTRhMSAxIDAgMDExLjQxNCAwbDQgNGExIDEgMCAwMS0xLjQxNCAxLjQxNEwxMSA1LjQxNFYxN2ExIDEgMCAxMS0yIDBWNS40MTRMNi43MDcgNy43MDdhMSAxIDAgMDEtMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMC4yOTMgMy4yOTNhMSAxIDAgMDExLjQxNCAwbDYgNmExIDEgMCAwMTAgMS40MTRsLTYgNmExIDEgMCAwMS0xLjQxNC0xLjQxNEwxNC41ODYgMTFIM2ExIDEgMCAxMTAtMmgxMS41ODZsLTQuMjkzLTQuMjkzYTEgMSAwIDAxMC0xLjQxNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93U21Eb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTQuNzA3IDEwLjI5M2ExIDEgMCAwMTAgMS40MTRsLTQgNGExIDEgMCAwMS0xLjQxNCAwbC00LTRhMSAxIDAgMTExLjQxNC0xLjQxNEw5IDEyLjU4NlY1YTEgMSAwIDAxMiAwdjcuNTg2bDIuMjkzLTIuMjkzYTEgMSAwIDAxMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93U21MZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOS43MDcgMTQuNzA3YTEgMSAwIDAxLTEuNDE0IDBsLTQtNGExIDEgMCAwMTAtMS40MTRsNC00YTEgMSAwIDAxMS40MTQgMS40MTRMNy40MTQgOUgxNWExIDEgMCAxMTAgMkg3LjQxNGwyLjI5MyAyLjI5M2ExIDEgMCAwMTAgMS40MTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlBcnJvd1NtUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMC4yOTMgNS4yOTNhMSAxIDAgMDExLjQxNCAwbDQgNGExIDEgMCAwMTAgMS40MTRsLTQgNGExIDEgMCAwMS0xLjQxNC0xLjQxNEwxMi41ODYgMTFINWExIDEgMCAxMTAtMmg3LjU4NmwtMi4yOTMtMi4yOTNhMSAxIDAgMDEwLTEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dTbVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNS4yOTMgOS43MDdhMSAxIDAgMDEwLTEuNDE0bDQtNGExIDEgMCAwMTEuNDE0IDBsNCA0YTEgMSAwIDAxLTEuNDE0IDEuNDE0TDExIDcuNDE0VjE1YTEgMSAwIDExLTIgMFY3LjQxNEw2LjcwNyA5LjcwN2ExIDEgMCAwMS0xLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMuMjkzIDkuNzA3YTEgMSAwIDAxMC0xLjQxNGw2LTZhMSAxIDAgMDExLjQxNCAwbDYgNmExIDEgMCAwMS0xLjQxNCAxLjQxNEwxMSA1LjQxNFYxN2ExIDEgMCAxMS0yIDBWNS40MTRMNC43MDcgOS43MDdhMSAxIDAgMDEtMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93c0V4cGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgNGExIDEgMCAwMTEtMWg0YTEgMSAwIDAxMCAySDYuNDE0bDIuMjkzIDIuMjkzYTEgMSAwIDAxLTEuNDE0IDEuNDE0TDUgNi40MTRWOGExIDEgMCAwMS0yIDBWNHptOSAxYTEgMSAwIDExMC0yaDRhMSAxIDAgMDExIDF2NGExIDEgMCAxMS0yIDBWNi40MTRsLTIuMjkzIDIuMjkzYTEgMSAwIDExLTEuNDE0LTEuNDE0TDEzLjU4NiA1SDEyem0tOSA3YTEgMSAwIDExMiAwdjEuNTg2bDIuMjkzLTIuMjkzYTEgMSAwIDAxMS40MTQgMS40MTRMNi40MTQgMTVIOGExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXYtNHptMTMtMWExIDEgMCAwMTEgMXY0YTEgMSAwIDAxLTEgMWgtNGExIDEgMCAxMTAtMmgxLjU4NmwtMi4yOTMtMi4yOTNhMSAxIDAgMDExLjQxNC0xLjQxNEwxNSAxMy41ODZWMTJhMSAxIDAgMDExLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlBdFN5bWJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE0LjI0MyA1Ljc1N2E2IDYgMCAxMC0uOTg2IDkuMjg0IDEgMSAwIDExMS4wODcgMS42NzhBOCA4IDAgMTExOCAxMGEzIDMgMCAwMS00LjggMi40MDFBNCA0IDAgMTExNCAxMGExIDEgMCAxMDIgMGMwLTEuNTM3LS41ODYtMy4wNy0xLjc1Ny00LjI0M3pNMTIgMTBhMiAyIDAgMTAtNCAwIDIgMiAwIDAwNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQmFja3NwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNi43MDcgNC44NzlBMyAzIDAgMDE4LjgyOCA0SDE1YTMgMyAwIDAxMyAzdjZhMyAzIDAgMDEtMyAzSDguODI4YTMgMyAwIDAxLTIuMTItLjg3OWwtNC40MTUtNC40MTRhMSAxIDAgMDEwLTEuNDE0bDQuNDE0LTQuNDE0em00IDIuNDE0YTEgMSAwIDAwLTEuNDE0IDEuNDE0TDEwLjU4NiAxMGwtMS4yOTMgMS4yOTNhMSAxIDAgMTAxLjQxNCAxLjQxNEwxMiAxMS40MTRsMS4yOTMgMS4yOTNhMSAxIDAgMDAxLjQxNC0xLjQxNEwxMy40MTQgMTBsMS4yOTMtMS4yOTNhMSAxIDAgMDAtMS40MTQtMS40MTRMMTIgOC41ODZsLTEuMjkzLTEuMjkzelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQmFkZ2VDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYuMjY3IDMuNDU1YTMuMDY2IDMuMDY2IDAgMDAxLjc0NS0uNzIzIDMuMDY2IDMuMDY2IDAgMDEzLjk3NiAwIDMuMDY2IDMuMDY2IDAgMDAxLjc0NS43MjMgMy4wNjYgMy4wNjYgMCAwMTIuODEyIDIuODEyYy4wNTEuNjQzLjMwNCAxLjI1NC43MjMgMS43NDVhMy4wNjYgMy4wNjYgMCAwMTAgMy45NzYgMy4wNjYgMy4wNjYgMCAwMC0uNzIzIDEuNzQ1IDMuMDY2IDMuMDY2IDAgMDEtMi44MTIgMi44MTIgMy4wNjYgMy4wNjYgMCAwMC0xLjc0NS43MjMgMy4wNjYgMy4wNjYgMCAwMS0zLjk3NiAwIDMuMDY2IDMuMDY2IDAgMDAtMS43NDUtLjcyMyAzLjA2NiAzLjA2NiAwIDAxLTIuODEyLTIuODEyIDMuMDY2IDMuMDY2IDAgMDAtLjcyMy0xLjc0NSAzLjA2NiAzLjA2NiAwIDAxMC0zLjk3NiAzLjA2NiAzLjA2NiAwIDAwLjcyMy0xLjc0NSAzLjA2NiAzLjA2NiAwIDAxMi44MTItMi44MTJ6bTcuNDQgNS4yNTJhMSAxIDAgMDAtMS40MTQtMS40MTRMOSAxMC41ODYgNy43MDcgOS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMiAyYTEgMSAwIDAwMS40MTQgMGw0LTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlCYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMy40NzcgMTQuODlBNiA2IDAgMDE1LjExIDYuNTI0bDguMzY3IDguMzY4em0xLjQxNC0xLjQxNEw2LjUyNCA1LjExYTYgNiAwIDAxOC4zNjcgOC4zNjd6TTE4IDEwYTggOCAwIDExLTE2IDAgOCA4IDAgMDExNiAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQmVha2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNyAyYTEgMSAwIDAwLS43MDcgMS43MDdMNyA0LjQxNHYzLjc1OGExIDEgMCAwMS0uMjkzLjcwN2wtNCA0Qy44MTcgMTQuNzY5IDIuMTU2IDE4IDQuODI4IDE4aDEwLjM0M2MyLjY3MyAwIDQuMDEyLTMuMjMxIDIuMTIyLTUuMTIxbC00LTRBMSAxIDAgMDExMyA4LjE3MlY0LjQxNGwuNzA3LS43MDdBMSAxIDAgMDAxMyAySDd6bTIgNi4xNzJWNGgydjQuMTcyYTMgMyAwIDAwLjg3OSAyLjEybDEuMDI3IDEuMDI4YTQgNCAwIDAwLTIuMTcxLjEwMmwtLjQ3LjE1NmE0IDQgMCAwMS0yLjUzIDBsLS41NjMtLjE4N2ExLjk5MyAxLjk5MyAwIDAwLS4xMTQtLjAzNWwxLjA2My0xLjA2M0EzIDMgMCAwMDkgOC4xNzJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlCZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAyYTYgNiAwIDAwLTYgNnYzLjU4NmwtLjcwNy43MDdBMSAxIDAgMDA0IDE0aDEyYTEgMSAwIDAwLjcwNy0xLjcwN0wxNiAxMS41ODZWOGE2IDYgMCAwMC02LTZ6TTEwIDE4YTMgMyAwIDAxLTMtM2g2YTMgMyAwIDAxLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQm9va09wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNC44MDRBNy45NjggNy45NjggMCAwMDUuNSA0Yy0xLjI1NSAwLTIuNDQzLjI5LTMuNS44MDR2MTBBNy45NjkgNy45NjkgMCAwMTUuNSAxNGMxLjY2OSAwIDMuMjE4LjUxIDQuNSAxLjM4NUE3Ljk2MiA3Ljk2MiAwIDAxMTQuNSAxNGMxLjI1NSAwIDIuNDQzLjI5IDMuNS44MDR2LTEwQTcuOTY4IDcuOTY4IDAgMDAxNC41IDRjLTEuMjU1IDAtMi40NDMuMjktMy41LjgwNFYxMmExIDEgMCAxMS0yIDBWNC44MDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUJvb2ttYXJrQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyA1YTIgMiAwIDAxMi0yaDEwYTIgMiAwIDAxMiAydjEwYTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMlY1em0xMSAxSDZ2OGw0LTIgNCAyVjZ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlCb29rbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA0YTIgMiAwIDAxMi0yaDZhMiAyIDAgMDEyIDJ2MTRsLTUtMi41TDUgMThWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQnJpZWZjYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNiA2VjVhMyAzIDAgMDEzLTNoMmEzIDMgMCAwMTMgM3YxaDJhMiAyIDAgMDEyIDJ2My41N0EyMi45NTIgMjIuOTUyIDAgMDExMCAxM2EyMi45NSAyMi45NSAwIDAxLTgtMS40M1Y4YTIgMiAwIDAxMi0yaDJ6bTItMWExIDEgMCAwMTEtMWgyYTEgMSAwIDAxMSAxdjFIOFY1em0xIDVhMSAxIDAgMDExLTFoLjAxYTEgMSAwIDExMCAySDEwYTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTMuNjkyVjE2YTIgMiAwIDAwMiAyaDEyYTIgMiAwIDAwMi0ydi0yLjMwOEEyNC45NzQgMjQuOTc0IDAgMDExMCAxNWMtMi43OTYgMC01LjQ4Ny0uNDYtOC0xLjMwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2FrZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYgM2ExIDEgMCAwMTEtMWguMDFhMSAxIDAgMDEwIDJIN2ExIDEgMCAwMS0xLTF6bTIgM2ExIDEgMCAwMC0yIDB2MWEyIDIgMCAwMC0yIDJ2MWEyIDIgMCAwMC0yIDJ2LjY4M2EzLjcgMy43IDAgMDExLjA1NS40ODUgMS43MDQgMS43MDQgMCAwMDEuODkgMCAzLjcwNCAzLjcwNCAwIDAxNC4xMSAwIDEuNzA0IDEuNzA0IDAgMDAxLjg5IDAgMy43MDQgMy43MDQgMCAwMTQuMTEgMCAxLjcwNCAxLjcwNCAwIDAwMS44OSAwQTMuNyAzLjcgMCAwMTE4IDEyLjY4M1YxMmEyIDIgMCAwMC0yLTJWOWEyIDIgMCAwMC0yLTJWNmExIDEgMCAxMC0yIDB2MWgtMVY2YTEgMSAwIDEwLTIgMHYxSDhWNnptMTAgOC44NjhhMy43MDQgMy43MDQgMCAwMS00LjA1NS0uMDM2IDEuNzA0IDEuNzA0IDAgMDAtMS44OSAwIDMuNzA0IDMuNzA0IDAgMDEtNC4xMSAwIDEuNzA0IDEuNzA0IDAgMDAtMS44OSAwQTMuNzA0IDMuNzA0IDAgMDEyIDE0Ljg2OFYxN2ExIDEgMCAwMDEgMWgxNGExIDEgMCAwMDEtMXYtMi4xMzJ6TTkgM2ExIDEgMCAwMTEtMWguMDFhMSAxIDAgMTEwIDJIMTBhMSAxIDAgMDEtMS0xem0zIDBhMSAxIDAgMDExLTFoLjAxYTEgMSAwIDExMCAySDEzYTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNhbGN1bGF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk02IDJhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyaDhhMiAyIDAgMDAyLTJWNGEyIDIgMCAwMC0yLTJINnptMSAyYTEgMSAwIDAwMCAyaDZhMSAxIDAgMTAwLTJIN3ptNiA3YTEgMSAwIDAxMSAxdjNhMSAxIDAgMTEtMiAwdi0zYTEgMSAwIDAxMS0xem0tMyAzYTEgMSAwIDEwMCAyaC4wMWExIDEgMCAxMDAtMkgxMHptLTQgMWExIDEgMCAwMTEtMWguMDFhMSAxIDAgMTEwIDJIN2ExIDEgMCAwMS0xLTF6bTEtNGExIDEgMCAxMDAgMmguMDFhMSAxIDAgMTAwLTJIN3ptMiAxYTEgMSAwIDAxMS0xaC4wMWExIDEgMCAxMTAgMkgxMGExIDEgMCAwMS0xLTF6bTQtNGExIDEgMCAxMDAgMmguMDFhMSAxIDAgMTAwLTJIMTN6TTkgOWExIDEgMCAwMTEtMWguMDFhMSAxIDAgMTEwIDJIMTBhMSAxIDAgMDEtMS0xek03IDhhMSAxIDAgMDAwIDJoLjAxYTEgMSAwIDAwMC0ySDd6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDYWxlbmRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYgMmExIDEgMCAwMC0xIDF2MUg0YTIgMiAwIDAwLTIgMnYxMGEyIDIgMCAwMDIgMmgxMmEyIDIgMCAwMDItMlY2YTIgMiAwIDAwLTItMmgtMVYzYTEgMSAwIDEwLTIgMHYxSDdWM2ExIDEgMCAwMC0xLTF6bTAgNWExIDEgMCAwMDAgMmg4YTEgMSAwIDEwMC0ySDZ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDVhMiAyIDAgMDAtMiAydjhhMiAyIDAgMDAyIDJoMTJhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJoLTEuNTg2YTEgMSAwIDAxLS43MDctLjI5M2wtMS4xMjEtMS4xMjFBMiAyIDAgMDAxMS4xNzIgM0g4LjgyOGEyIDIgMCAwMC0xLjQxNC41ODZMNi4yOTMgNC43MDdBMSAxIDAgMDE1LjU4NiA1SDR6bTYgOWEzIDMgMCAxMDAtNiAzIDMgMCAwMDAgNnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDRhMiAyIDAgMDAtMiAydjRhMiAyIDAgMDAyIDJWNmgxMGEyIDIgMCAwMC0yLTJINHptMiA2YTIgMiAwIDAxMi0yaDhhMiAyIDAgMDEyIDJ2NGEyIDIgMCAwMS0yIDJIOGEyIDIgMCAwMS0yLTJ2LTR6bTYgNGEyIDIgMCAxMDAtNCAyIDIgMCAwMDAgNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNoYXJ0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDExYTEgMSAwIDAxMS0xaDJhMSAxIDAgMDExIDF2NWExIDEgMCAwMS0xIDFIM2ExIDEgMCAwMS0xLTF2LTV6TTggN2ExIDEgMCAwMTEtMWgyYTEgMSAwIDAxMSAxdjlhMSAxIDAgMDEtMSAxSDlhMSAxIDAgMDEtMS0xVjd6TTE0IDRhMSAxIDAgMDExLTFoMmExIDEgMCAwMTEgMXYxMmExIDEgMCAwMS0xIDFoLTJhMSAxIDAgMDEtMS0xVjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNoYXJ0UGllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDEwYTggOCAwIDAxOC04djhoOGE4IDggMCAxMS0xNiAwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyLjI1MkE4LjAxNCA4LjAxNCAwIDAxMTcuNzQ4IDhIMTJWMi4yNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNoYXJ0U3F1YXJlQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNSAzYTIgMiAwIDAwLTIgMnYxMGEyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMlY1YTIgMiAwIDAwLTItMkg1em05IDRhMSAxIDAgMTAtMiAwdjZhMSAxIDAgMTAyIDBWN3ptLTMgMmExIDEgMCAxMC0yIDB2NGExIDEgMCAxMDIgMFY5em0tMyAzYTEgMSAwIDEwLTIgMHYxYTEgMSAwIDEwMiAwdi0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hhdEFsdDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNWEyIDIgMCAwMTItMmg3YTIgMiAwIDAxMiAydjRhMiAyIDAgMDEtMiAySDlsLTMgM3YtM0g0YTIgMiAwIDAxLTItMlY1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA3djJhNCA0IDAgMDEtNCA0SDkuODI4bC0xLjc2NiAxLjc2N2MuMjguMTQ5LjU5OS4yMzMuOTM4LjIzM2gybDMgM3YtM2gyYTIgMiAwIDAwMi0yVjlhMiAyIDAgMDAtMi0yaC0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGF0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTggNXY4YTIgMiAwIDAxLTIgMmgtNWwtNSA0di00SDRhMiAyIDAgMDEtMi0yVjVhMiAyIDAgMDEyLTJoMTJhMiAyIDAgMDEyIDJ6TTcgOEg1djJoMlY4em0yIDBoMnYySDlWOHptNiAwaC0ydjJoMlY4elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDEwYzAgMy44NjYtMy41ODIgNy04IDdhOC44NDEgOC44NDEgMCAwMS00LjA4My0uOThMMiAxN2wxLjMzOC0zLjEyM0MyLjQ5MyAxMi43NjcgMiAxMS40MzQgMiAxMGMwLTMuODY2IDMuNTgyLTcgOC03czggMy4xMzQgOCA3ek03IDlINXYyaDJWOXptOCAwaC0ydjJoMlY5ek05IDloMnYySDlWOXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNoZWNrQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnptMy43MDctOS4yOTNhMSAxIDAgMDAtMS40MTQtMS40MTRMOSAxMC41ODYgNy43MDcgOS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMiAyYTEgMSAwIDAwMS40MTQgMGw0LTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE2LjcwNyA1LjI5M2ExIDEgMCAwMTAgMS40MTRsLTggOGExIDEgMCAwMS0xLjQxNCAwbC00LTRhMSAxIDAgMDExLjQxNC0xLjQxNEw4IDEyLjU4Nmw3LjI5My03LjI5M2ExIDEgMCAwMTEuNDE0IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGV2cm9uRG91YmxlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE1LjcwNyA0LjI5M2ExIDEgMCAwMTAgMS40MTRsLTUgNWExIDEgMCAwMS0xLjQxNCAwbC01LTVhMSAxIDAgMDExLjQxNC0xLjQxNEwxMCA4LjU4Nmw0LjI5My00LjI5M2ExIDEgMCAwMTEuNDE0IDB6bTAgNmExIDEgMCAwMTAgMS40MTRsLTUgNWExIDEgMCAwMS0xLjQxNCAwbC01LTVhMSAxIDAgMTExLjQxNC0xLjQxNEwxMCAxNC41ODZsNC4yOTMtNC4yOTNhMSAxIDAgMDExLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hldnJvbkRvdWJsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNS43MDcgMTUuNzA3YTEgMSAwIDAxLTEuNDE0IDBsLTUtNWExIDEgMCAwMTAtMS40MTRsNS01YTEgMSAwIDExMS40MTQgMS40MTRMMTEuNDE0IDEwbDQuMjkzIDQuMjkzYTEgMSAwIDAxMCAxLjQxNHptLTYgMGExIDEgMCAwMS0xLjQxNCAwbC01LTVhMSAxIDAgMDEwLTEuNDE0bDUtNWExIDEgMCAwMTEuNDE0IDEuNDE0TDUuNDE0IDEwbDQuMjkzIDQuMjkzYTEgMSAwIDAxMCAxLjQxNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNoZXZyb25Eb3VibGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwLjI5MyAxNS43MDdhMSAxIDAgMDEwLTEuNDE0TDE0LjU4NiAxMGwtNC4yOTMtNC4yOTNhMSAxIDAgMTExLjQxNC0xLjQxNGw1IDVhMSAxIDAgMDEwIDEuNDE0bC01IDVhMSAxIDAgMDEtMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00LjI5MyAxNS43MDdhMSAxIDAgMDEwLTEuNDE0TDguNTg2IDEwIDQuMjkzIDUuNzA3YTEgMSAwIDAxMS40MTQtMS40MTRsNSA1YTEgMSAwIDAxMCAxLjQxNGwtNSA1YTEgMSAwIDAxLTEuNDE0IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGV2cm9uRG91YmxlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00LjI5MyAxNS43MDdhMSAxIDAgMDEwLTEuNDE0bDUtNWExIDEgMCAwMTEuNDE0IDBsNSA1YTEgMSAwIDAxLTEuNDE0IDEuNDE0TDEwIDExLjQxNGwtNC4yOTMgNC4yOTNhMSAxIDAgMDEtMS40MTQgMHptMC02YTEgMSAwIDAxMC0xLjQxNGw1LTVhMSAxIDAgMDExLjQxNCAwbDUgNWExIDEgMCAwMS0xLjQxNCAxLjQxNEwxMCA1LjQxNCA1LjcwNyA5LjcwN2ExIDEgMCAwMS0xLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hldnJvbkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01LjI5MyA3LjI5M2ExIDEgMCAwMTEuNDE0IDBMMTAgMTAuNTg2bDMuMjkzLTMuMjkzYTEgMSAwIDExMS40MTQgMS40MTRsLTQgNGExIDEgMCAwMS0xLjQxNCAwbC00LTRhMSAxIDAgMDEwLTEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hldnJvbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMi43MDcgNS4yOTNhMSAxIDAgMDEwIDEuNDE0TDkuNDE0IDEwbDMuMjkzIDMuMjkzYTEgMSAwIDAxLTEuNDE0IDEuNDE0bC00LTRhMSAxIDAgMDEwLTEuNDE0bDQtNGExIDEgMCAwMTEuNDE0IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGV2cm9uUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03LjI5MyAxNC43MDdhMSAxIDAgMDEwLTEuNDE0TDEwLjU4NiAxMCA3LjI5MyA2LjcwN2ExIDEgMCAwMTEuNDE0LTEuNDE0bDQgNGExIDEgMCAwMTAgMS40MTRsLTQgNGExIDEgMCAwMS0xLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hldnJvblVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTQuNzA3IDEyLjcwN2ExIDEgMCAwMS0xLjQxNCAwTDEwIDkuNDE0bC0zLjI5MyAzLjI5M2ExIDEgMCAwMS0xLjQxNC0xLjQxNGw0LTRhMSAxIDAgMDExLjQxNCAwbDQgNGExIDEgMCAwMTAgMS40MTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3SDd2Nmg2Vjd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03IDJhMSAxIDAgMDEyIDB2MWgyVjJhMSAxIDAgMTEyIDB2MWgyYTIgMiAwIDAxMiAydjJoMWExIDEgMCAxMTAgMmgtMXYyaDFhMSAxIDAgMTEwIDJoLTF2MmEyIDIgMCAwMS0yIDJoLTJ2MWExIDEgMCAxMS0yIDB2LTFIOXYxYTEgMSAwIDExLTIgMHYtMUg1YTIgMiAwIDAxLTItMnYtMkgyYTEgMSAwIDExMC0yaDFWOUgyYTEgMSAwIDAxMC0yaDFWNWEyIDIgMCAwMTItMmgyVjJ6TTUgNWgxMHYxMEg1VjV6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDbGlwYm9hcmRDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAyYTEgMSAwIDAwMCAyaDJhMSAxIDAgMTAwLTJIOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgNWEyIDIgMCAwMTItMiAzIDMgMCAwMDMgM2gyYTMgMyAwIDAwMy0zIDIgMiAwIDAxMiAydjExYTIgMiAwIDAxLTIgMkg2YTIgMiAwIDAxLTItMlY1em05LjcwNyA1LjcwN2ExIDEgMCAwMC0xLjQxNC0xLjQxNEw5IDEyLjU4NmwtMS4yOTMtMS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMiAyYTEgMSAwIDAwMS40MTQgMGw0LTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDbGlwYm9hcmRDb3B5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDJhMSAxIDAgMDAwIDJoMmExIDEgMCAxMDAtMkg4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVhMiAyIDAgMDEyLTIgMyAzIDAgMDAzIDNoMmEzIDMgMCAwMDMtMyAyIDIgMCAwMTIgMnY2aC00LjU4NmwxLjI5My0xLjI5M2ExIDEgMCAwMC0xLjQxNC0xLjQxNGwtMyAzYTEgMSAwIDAwMCAxLjQxNGwzIDNhMSAxIDAgMDAxLjQxNC0xLjQxNEwxMC40MTQgMTNIMTV2M2EyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJWNXpNMTUgMTFoMmExIDEgMCAxMTAgMmgtMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2xpcGJvYXJkTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAyYTEgMSAwIDAwMCAyaDJhMSAxIDAgMTAwLTJIOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgNWEyIDIgMCAwMTItMiAzIDMgMCAwMDMgM2gyYTMgMyAwIDAwMy0zIDIgMiAwIDAxMiAydjExYTIgMiAwIDAxLTIgMkg2YTIgMiAwIDAxLTItMlY1em0zIDRhMSAxIDAgMDAwIDJoLjAxYTEgMSAwIDEwMC0ySDd6bTMgMGExIDEgMCAwMDAgMmgzYTEgMSAwIDEwMC0yaC0zem0tMyA0YTEgMSAwIDEwMCAyaC4wMWExIDEgMCAxMDAtMkg3em0zIDBhMSAxIDAgMTAwIDJoM2ExIDEgMCAxMDAtMmgtM3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNsaXBib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAzYTEgMSAwIDAxMS0xaDJhMSAxIDAgMTEwIDJIOWExIDEgMCAwMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgM2EyIDIgMCAwMC0yIDJ2MTFhMiAyIDAgMDAyIDJoOGEyIDIgMCAwMDItMlY1YTIgMiAwIDAwLTItMiAzIDMgMCAwMS0zIDNIOWEzIDMgMCAwMS0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnptMS0xMmExIDEgMCAxMC0yIDB2NGExIDEgMCAwMC4yOTMuNzA3bDIuODI4IDIuODI5YTEgMSAwIDEwMS40MTUtMS40MTVMMTEgOS41ODZWNnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNsb3VkRG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDkuNUEzLjUgMy41IDAgMDA1LjUgMTNIOXYyLjU4NmwtMS4yOTMtMS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMyAzYTEgMSAwIDAwMS40MTQgMGwzLTNhMSAxIDAgMDAtMS40MTQtMS40MTRMMTEgMTUuNTg2VjEzaDIuNWE0LjUgNC41IDAgMTAtLjYxNi04Ljk1OCA0LjAwMiA0LjAwMiAwIDEwLTcuNzUzIDEuOTc3QTMuNSAzLjUgMCAwMDIgOS41em05IDMuNUg5VjhhMSAxIDAgMDEyIDB2NXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNsb3VkVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgMTNhMy41IDMuNSAwIDAxLS4zNjktNi45OCA0IDQgMCAxMTcuNzUzLTEuOTc3QTQuNSA0LjUgMCAxMTEzLjUgMTNIMTFWOS40MTNsMS4yOTMgMS4yOTNhMSAxIDAgMDAxLjQxNC0xLjQxNGwtMy0zYTEgMSAwIDAwLTEuNDE0IDBsLTMgM2ExIDEgMCAwMDEuNDE0IDEuNDE0TDkgOS40MTRWMTNINS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDEzaDJ2NWExIDEgMCAxMS0yIDB2LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgMTZhMy41IDMuNSAwIDAxLS4zNjktNi45OCA0IDQgMCAxMTcuNzUzLTEuOTc3QTQuNSA0LjUgMCAxMTEzLjUgMTZoLTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMi4zMTYgMy4wNTFhMSAxIDAgMDEuNjMzIDEuMjY1bC00IDEyYTEgMSAwIDExLTEuODk4LS42MzJsNC0xMmExIDEgMCAwMTEuMjY1LS42MzN6TTUuNzA3IDYuMjkzYTEgMSAwIDAxMCAxLjQxNEwzLjQxNCAxMGwyLjI5MyAyLjI5M2ExIDEgMCAxMS0xLjQxNCAxLjQxNGwtMy0zYTEgMSAwIDAxMC0xLjQxNGwzLTNhMSAxIDAgMDExLjQxNCAwem04LjU4NiAwYTEgMSAwIDAxMS40MTQgMGwzIDNhMSAxIDAgMDEwIDEuNDE0bC0zIDNhMSAxIDAgMTEtMS40MTQtMS40MTRMMTYuNTg2IDEwbC0yLjI5My0yLjI5M2ExIDEgMCAwMTAtMS40MTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMS40OSAzLjE3Yy0uMzgtMS41Ni0yLjYtMS41Ni0yLjk4IDBhMS41MzIgMS41MzIgMCAwMS0yLjI4Ni45NDhjLTEuMzcyLS44MzYtMi45NDIuNzM0LTIuMTA2IDIuMTA2LjU0Ljg4Ni4wNjEgMi4wNDItLjk0NyAyLjI4Ny0xLjU2MS4zNzktMS41NjEgMi42IDAgMi45NzhhMS41MzIgMS41MzIgMCAwMS45NDcgMi4yODdjLS44MzYgMS4zNzIuNzM0IDIuOTQyIDIuMTA2IDIuMTA2YTEuNTMyIDEuNTMyIDAgMDEyLjI4Ny45NDdjLjM3OSAxLjU2MSAyLjYgMS41NjEgMi45NzggMGExLjUzMyAxLjUzMyAwIDAxMi4yODctLjk0N2MxLjM3Mi44MzYgMi45NDItLjczNCAyLjEwNi0yLjEwNmExLjUzMyAxLjUzMyAwIDAxLjk0Ny0yLjI4N2MxLjU2MS0uMzc5IDEuNTYxLTIuNiAwLTIuOTc4YTEuNTMyIDEuNTMyIDAgMDEtLjk0Ny0yLjI4N2MuODM2LTEuMzcyLS43MzQtMi45NDItMi4xMDYtMi4xMDZhMS41MzIgMS41MzIgMCAwMS0yLjI4Ny0uOTQ3ek0xMCAxM2EzIDMgMCAxMDAtNiAzIDMgMCAwMDAgNnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNvbGxlY3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgM2ExIDEgMCAwMDAgMmg2YTEgMSAwIDEwMC0ySDd6TTQgN2ExIDEgMCAwMTEtMWgxMGExIDEgMCAxMTAgMkg1YTEgMSAwIDAxLTEtMXpNMiAxMWEyIDIgMCAwMTItMmgxMmEyIDIgMCAwMTIgMnY0YTIgMiAwIDAxLTIgMkg0YTIgMiAwIDAxLTItMnYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ29sb3JTd2F0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDJhMiAyIDAgMDAtMiAydjExYTMgMyAwIDEwNiAwVjRhMiAyIDAgMDAtMi0ySDR6bTEgMTRhMSAxIDAgMTAwLTIgMSAxIDAgMDAwIDJ6bTUtMS43NTdsNC45LTQuOWEyIDIgMCAwMDAtMi44MjhMMTMuNDg1IDUuMWEyIDIgMCAwMC0yLjgyOCAwTDEwIDUuNzU3djguNDg2ek0xNiAxOEg5LjA3MWw2LTZIMTZhMiAyIDAgMDEyIDJ2MmEyIDIgMCAwMS0yIDJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDcmVkaXRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRhMiAyIDAgMDAtMiAydjFoMTZWNmEyIDIgMCAwMC0yLTJINHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDlIMnY1YTIgMiAwIDAwMiAyaDEyYTIgMiAwIDAwMi0yVjl6TTQgMTNhMSAxIDAgMDExLTFoMWExIDEgMCAxMTAgMkg1YTEgMSAwIDAxLTEtMXptNS0xYTEgMSAwIDEwMCAyaDFhMSAxIDAgMTAwLTJIOXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUN1YmVUcmFuc3BhcmVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTkuNTA0IDEuMTMyYTEgMSAwIDAxLjk5MiAwbDEuNzUgMWExIDEgMCAxMS0uOTkyIDEuNzM2TDEwIDMuMTUybC0xLjI1NC43MTZhMSAxIDAgMTEtLjk5Mi0xLjczNmwxLjc1LTF6TTUuNjE4IDQuNTA0YTEgMSAwIDAxLS4zNzIgMS4zNjRMNS4wMTYgNmwuMjMuMTMyYTEgMSAwIDExLS45OTIgMS43MzZMNCA3LjcyM1Y4YTEgMSAwIDAxLTIgMFY2YS45OTYuOTk2IDAgMDEuNTItLjg3OGwxLjczNC0uOTlhMSAxIDAgMDExLjM2NC4zNzJ6bTguNzY0IDBhMSAxIDAgMDExLjM2NC0uMzcybDEuNzMzLjk5QTEuMDAyIDEuMDAyIDAgMDExOCA2djJhMSAxIDAgMTEtMiAwdi0uMjc3bC0uMjU0LjE0NWExIDEgMCAxMS0uOTkyLTEuNzM2bC4yMy0uMTMyLS4yMy0uMTMyYTEgMSAwIDAxLS4zNzItMS4zNjR6bS03IDRhMSAxIDAgMDExLjM2NC0uMzcyTDEwIDguODQ4bDEuMjU0LS43MTZhMSAxIDAgMTEuOTkyIDEuNzM2TDExIDEwLjU4VjEyYTEgMSAwIDExLTIgMHYtMS40MmwtMS4yNDYtLjcxMmExIDEgMCAwMS0uMzcyLTEuMzY0ek0zIDExYTEgMSAwIDAxMSAxdjEuNDJsMS4yNDYuNzEyYTEgMSAwIDExLS45OTIgMS43MzZsLTEuNzUtMUExIDEgMCAwMTIgMTR2LTJhMSAxIDAgMDExLTF6bTE0IDBhMSAxIDAgMDExIDF2MmExIDEgMCAwMS0uNTA0Ljg2OGwtMS43NSAxYTEgMSAwIDExLS45OTItMS43MzZMMTYgMTMuNDJWMTJhMSAxIDAgMDExLTF6bS05LjYxOCA1LjUwNGExIDEgMCAwMTEuMzY0LS4zNzJsLjI1NC4xNDVWMTZhMSAxIDAgMTEyIDB2LjI3N2wuMjU0LS4xNDVhMSAxIDAgMTEuOTkyIDEuNzM2bC0xLjczNS45OTJhLjk5NS45OTUgMCAwMS0xLjAyMiAwbC0xLjczNS0uOTkyYTEgMSAwIDAxLS4zNzItMS4zNjR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDdWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxN2ExIDEgMCAwMDEuNDQ3Ljg5NGw0LTJBMSAxIDAgMDAxNyAxNVY5LjIzNmExIDEgMCAwMC0xLjQ0Ny0uODk0bC00IDJhMSAxIDAgMDAtLjU1My44OTRWMTd6TTE1LjIxMSA2LjI3NmExIDEgMCAwMDAtMS43ODhsLTQuNzY0LTIuMzgyYTEgMSAwIDAwLS44OTQgMEw0Ljc4OSA0LjQ4OGExIDEgMCAwMDAgMS43ODhsNC43NjQgMi4zODJhMSAxIDAgMDAuODk0IDBsNC43NjQtMi4zODJ6TTQuNDQ3IDguMzQyQTEgMSAwIDAwMyA5LjIzNlYxNWExIDEgMCAwMC41NTMuODk0bDQgMkExIDEgMCAwMDkgMTd2LTUuNzY0YTEgMSAwIDAwLS41NTMtLjg5NGwtNC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDdXJyZW5jeUJhbmdsYWRlc2hpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnpNNyA0YTEgMSAwIDAwMCAyIDEgMSAwIDAxMSAxdjFIN2ExIDEgMCAwMDAgMmgxdjNhMyAzIDAgMTA2IDB2LTFhMSAxIDAgMTAtMiAwdjFhMSAxIDAgMTEtMiAwdi0zaDNhMSAxIDAgMTAwLTJoLTNWN2EzIDMgMCAwMC0zLTN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDdXJyZW5jeURvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC40MzMgNy40MThjLjE1NS0uMTAzLjM0Ni0uMTk2LjU2Ny0uMjY3djEuNjk4YTIuMzA1IDIuMzA1IDAgMDEtLjU2Ny0uMjY3QzguMDcgOC4zNCA4IDguMTE0IDggOGMwLS4xMTQuMDctLjM0LjQzMy0uNTgyek0xMSAxMi44NDl2LTEuNjk4Yy4yMi4wNzEuNDEyLjE2NC41NjcuMjY3LjM2NC4yNDMuNDMzLjQ2OC40MzMuNTgyIDAgLjExNC0uMDcuMzQtLjQzMy41ODJhMi4zMDUgMi4zMDUgMCAwMS0uNTY3LjI2N3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6bTEtMTNhMSAxIDAgMTAtMiAwdi4wOTJhNC41MzUgNC41MzUgMCAwMC0xLjY3Ni42NjJDNi42MDIgNi4yMzQgNiA3LjAwOSA2IDhjMCAuOTkuNjAyIDEuNzY1IDEuMzI0IDIuMjQ2LjQ4LjMyIDEuMDU0LjU0NSAxLjY3Ni42NjJ2MS45NDFjLS4zOTEtLjEyNy0uNjgtLjMxNy0uODQzLS41MDRhMSAxIDAgMTAtMS41MSAxLjMxYy41NjIuNjQ5IDEuNDEzIDEuMDc2IDIuMzUzIDEuMjUzVjE1YTEgMSAwIDEwMiAwdi0uMDkyYTQuNTM1IDQuNTM1IDAgMDAxLjY3Ni0uNjYyQzEzLjM5OCAxMy43NjYgMTQgMTIuOTkxIDE0IDEyYzAtLjk5LS42MDItMS43NjUtMS4zMjQtMi4yNDZBNC41MzUgNC41MzUgMCAwMDExIDkuMDkyVjcuMTUxYy4zOTEuMTI3LjY4LjMxNy44NDMuNTA0YTEgMSAwIDEwMS41MTEtMS4zMWMtLjU2My0uNjQ5LTEuNDEzLTEuMDc2LTIuMzU0LTEuMjUzVjV6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDdXJyZW5jeUV1cm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2ek04LjczNiA2Ljk3OUM5LjIwOCA2LjE5MyA5LjY5NiA2IDEwIDZjLjMwNCAwIC43OTIuMTkzIDEuMjY0Ljk3OWExIDEgMCAwMDEuNzE1LTEuMDI5QzEyLjI3OSA0Ljc4NCAxMS4yMzIgNCAxMCA0cy0yLjI3OS43ODQtMi45NzkgMS45NWMtLjI4NS40NzUtLjUwNyAxLS42NyAxLjU1SDZhMSAxIDAgMDAwIDJoLjAxM2E5LjM1OCA5LjM1OCAwIDAwMCAxSDZhMSAxIDAgMTAwIDJoLjM1MWMuMTYzLjU1LjM4NSAxLjA3NS42NyAxLjU1QzcuNzIxIDE1LjIxNiA4Ljc2OCAxNiAxMCAxNnMyLjI3OS0uNzg0IDIuOTc5LTEuOTVhMSAxIDAgMTAtMS43MTUtMS4wMjljLS40NzIuNzg2LS45Ni45NzktMS4yNjQuOTc5LS4zMDQgMC0uNzkyLS4xOTMtMS4yNjQtLjk3OWE0LjI2NSA0LjI2NSAwIDAxLS4yNjQtLjUyMUgxMGExIDEgMCAxMDAtMkg4LjAxN2E3LjM2IDcuMzYgMCAwMTAtMUgxMGExIDEgMCAxMDAtMkg4LjQ3MmMuMDgtLjE4NS4xNjctLjM2LjI2NC0uNTIxelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ3VycmVuY3lQb3VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6bTEtMTRhMyAzIDAgMDAtMyAzdjJIN2ExIDEgMCAwMDAgMmgxdjFhMSAxIDAgMDEtMSAxIDEgMSAwIDEwMCAyaDZhMSAxIDAgMTAwLTJIOS44M2MuMTEtLjMxMy4xNy0uNjUuMTctMXYtMWgxYTEgMSAwIDEwMC0yaC0xVjdhMSAxIDAgMTEyIDAgMSAxIDAgMTAyIDAgMyAzIDAgMDAtMy0zelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ3VycmVuY3lSdXBlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6TTcgNWExIDEgMCAxMDAgMmgxYTIgMiAwIDAxMS43MzIgMUg3YTEgMSAwIDEwMCAyaDIuNzMyQTIgMiAwIDAxOCAxMUg3YTEgMSAwIDAwLS43MDcgMS43MDdsMyAzYTEgMSAwIDAwMS40MTQtMS40MTRsLTEuNDgzLTEuNDg0QTQuMDA4IDQuMDA4IDAgMDAxMS44NzQgMTBIMTNhMSAxIDAgMTAwLTJoLTEuMTI2YTMuOTc2IDMuOTc2IDAgMDAtLjQxLTFIMTNhMSAxIDAgMTAwLTJIN3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUN1cnJlbmN5WWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnpNNy44NTggNS40ODVhMSAxIDAgMDAtMS43MTUgMS4wM0w3LjYzMyA5SDdhMSAxIDAgMTAwIDJoMS44MzRsLjE2Ni4yNzdWMTJIN2ExIDEgMCAxMDAgMmgydjFhMSAxIDAgMTAyIDB2LTFoMmExIDEgMCAxMDAtMmgtMnYtLjcyM2wuMTY2LS4yNzdIMTNhMSAxIDAgMTAwLTJoLS42MzRsMS40OTItMi40ODZhMSAxIDAgMTAtMS43MTYtMS4wMjlMMTAuMDM0IDloLS4wNjhMNy44NTggNS40ODV6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDdXJzb3JDbGljayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYuNjcyIDEuOTExYTEgMSAwIDEwLTEuOTMyLjUxOGwuMjU5Ljk2NmExIDEgMCAwMDEuOTMyLS41MThsLS4yNi0uOTY2ek0yLjQyOSA0Ljc0YTEgMSAwIDEwLS41MTcgMS45MzJsLjk2Ni4yNTlhMSAxIDAgMDAuNTE3LTEuOTMybC0uOTY2LS4yNnptOC44MTQtLjU2OWExIDEgMCAwMC0xLjQxNS0xLjQxNGwtLjcwNy43MDdhMSAxIDAgMTAxLjQxNSAxLjQxNWwuNzA3LS43MDh6bS03LjA3MSA3LjA3MmwuNzA3LS43MDdBMSAxIDAgMDAzLjQ2NSA5LjEybC0uNzA4LjcwN2ExIDEgMCAwMDEuNDE1IDEuNDE1em0zLjItNS4xNzFhMSAxIDAgMDAtMS4zIDEuM2w0IDEwYTEgMSAwIDAwMS44MjMuMDc1bDEuMzgtMi43NTkgMy4wMTggMy4wMmExIDEgMCAwMDEuNDE0LTEuNDE1bC0zLjAxOS0zLjAyIDIuNzYtMS4zNzlhMSAxIDAgMDAtLjA3Ni0xLjgyMmwtMTAtNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURhdGFiYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEydjNjMCAxLjY1NyAzLjEzNCAzIDcgM3M3LTEuMzQzIDctM3YtM2MwIDEuNjU3LTMuMTM0IDMtNyAzcy03LTEuMzQzLTctM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA3djNjMCAxLjY1NyAzLjEzNCAzIDcgM3M3LTEuMzQzIDctM1Y3YzAgMS42NTctMy4xMzQgMy03IDNTMyA4LjY1NyAzIDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDVjMCAxLjY1Ny0zLjEzNCAzLTcgM1MzIDYuNjU3IDMgNXMzLjEzNC0zIDctMyA3IDEuMzQzIDcgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRGVza3RvcENvbXB1dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyA1YTIgMiAwIDAxMi0yaDEwYTIgMiAwIDAxMiAydjhhMiAyIDAgMDEtMiAyaC0yLjIybC4xMjMuNDg5LjgwNC44MDRBMSAxIDAgMDExMyAxOEg3YTEgMSAwIDAxLS43MDctMS43MDdsLjgwNC0uODA0TDcuMjIgMTVINWEyIDIgMCAwMS0yLTJWNXptNS43NzEgN0g1VjVoMTB2N0g4Ljc3MXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURldmljZU1vYmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTcgMmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoNmEyIDIgMCAwMDItMlY0YTIgMiAwIDAwLTItMkg3em0zIDE0YTEgMSAwIDEwMC0yIDEgMSAwIDAwMCAyelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRGV2aWNlVGFibGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNiAyYTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMmg4YTIgMiAwIDAwMi0yVjRhMiAyIDAgMDAtMi0ySDZ6bTQgMTRhMSAxIDAgMTAwLTIgMSAxIDAgMDAwIDJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlEb2N1bWVudEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYgMmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoOGEyIDIgMCAwMDItMlY3LjQxNEEyIDIgMCAwMDE1LjQxNCA2TDEyIDIuNTg2QTIgMiAwIDAwMTAuNTg2IDJINnptNSA2YTEgMSAwIDEwLTIgMHYySDdhMSAxIDAgMTAwIDJoMnYyYTEgMSAwIDEwMiAwdi0yaDJhMSAxIDAgMTAwLTJoLTJWOHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURvY3VtZW50RG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk02IDJhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyaDhhMiAyIDAgMDAyLTJWNy40MTRBMiAyIDAgMDAxNS40MTQgNkwxMiAyLjU4NkEyIDIgMCAwMDEwLjU4NiAySDZ6bTUgNmExIDEgMCAxMC0yIDB2My41ODZsLTEuMjkzLTEuMjkzYTEgMSAwIDEwLTEuNDE0IDEuNDE0bDMgM2ExIDEgMCAwMDEuNDE0IDBsMy0zYTEgMSAwIDAwLTEuNDE0LTEuNDE0TDExIDExLjU4NlY4elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRG9jdW1lbnREdXBsaWNhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMmEyIDIgMCAwMC0yIDJ2OGEyIDIgMCAwMDIgMmg2YTIgMiAwIDAwMi0yVjYuNDE0QTIgMiAwIDAwMTYuNDE0IDVMMTQgMi41ODZBMiAyIDAgMDAxMi41ODYgMkg5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDhhMiAyIDAgMDEyLTJ2MTBoOGEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRG9jdW1lbnRSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk02IDJhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyaDhhMiAyIDAgMDAyLTJWNy40MTRBMiAyIDAgMDAxNS40MTQgNkwxMiAyLjU4NkEyIDIgMCAwMDEwLjU4NiAySDZ6bTEgOGExIDEgMCAxMDAgMmg2YTEgMSAwIDEwMC0ySDd6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlEb2N1bWVudFJlcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYgMmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoOGEyIDIgMCAwMDItMlY3LjQxNEEyIDIgMCAwMDE1LjQxNCA2TDEyIDIuNTg2QTIgMiAwIDAwMTAuNTg2IDJINnptMiAxMGExIDEgMCAxMC0yIDB2M2ExIDEgMCAxMDIgMHYtM3ptMi0zYTEgMSAwIDAxMSAxdjVhMSAxIDAgMTEtMiAwdi01YTEgMSAwIDAxMS0xem00LTFhMSAxIDAgMTAtMiAwdjdhMSAxIDAgMTAyIDBWOHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURvY3VtZW50U2VhcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRhMiAyIDAgMDEyLTJoNC41ODZBMiAyIDAgMDExMiAyLjU4NkwxNS40MTQgNkEyIDIgMCAwMTE2IDcuNDE0VjE2YTIgMiAwIDAxLTIgMmgtMS41MjhBNiA2IDAgMDA0IDkuNTI4VjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04IDEwYTQgNCAwIDAwLTMuNDQ2IDYuMDMybC0xLjI2MSAxLjI2YTEgMSAwIDEwMS40MTQgMS40MTVsMS4yNjEtMS4yNjFBNCA0IDAgMTA4IDEwem0tMiA0YTIgMiAwIDExNCAwIDIgMiAwIDAxLTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURvY3VtZW50VGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgNGEyIDIgMCAwMTItMmg0LjU4NkEyIDIgMCAwMTEyIDIuNTg2TDE1LjQxNCA2QTIgMiAwIDAxMTYgNy40MTRWMTZhMiAyIDAgMDEtMiAySDZhMiAyIDAgMDEtMi0yVjR6bTIgNmExIDEgMCAwMTEtMWg2YTEgMSAwIDExMCAySDdhMSAxIDAgMDEtMS0xem0xIDNhMSAxIDAgMTAwIDJoNmExIDEgMCAxMDAtMkg3elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRG9jdW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDRhMiAyIDAgMDEyLTJoNC41ODZBMiAyIDAgMDExMiAyLjU4NkwxNS40MTQgNkEyIDIgMCAwMTE2IDcuNDE0VjE2YTIgMiAwIDAxLTIgMkg2YTIgMiAwIDAxLTItMlY0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRG90c0NpcmNsZUhvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2ek03IDlINXYyaDJWOXptOCAwaC0ydjJoMlY5ek05IDloMnYySDlWOXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURvdHNIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEwYTIgMiAwIDExLTQgMCAyIDIgMCAwMTQgMHpNMTIgMTBhMiAyIDAgMTEtNCAwIDIgMiAwIDAxNCAwek0xNiAxMmEyIDIgMCAxMDAtNCAyIDIgMCAwMDAgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRG90c1ZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA2YTIgMiAwIDExMC00IDIgMiAwIDAxMCA0ek0xMCAxMmEyIDIgMCAxMTAtNCAyIDIgMCAwMTAgNHpNMTAgMThhMiAyIDAgMTEwLTQgMiAyIDAgMDEwIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyAxN2ExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXptMy4yOTMtNy43MDdhMSAxIDAgMDExLjQxNCAwTDkgMTAuNTg2VjNhMSAxIDAgMTEyIDB2Ny41ODZsMS4yOTMtMS4yOTNhMSAxIDAgMTExLjQxNCAxLjQxNGwtMyAzYTEgMSAwIDAxLTEuNDE0IDBsLTMtM2ExIDEgMCAwMTAtMS40MTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlEdXBsaWNhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOWEyIDIgMCAwMTItMmg2YTIgMiAwIDAxMiAydjZhMiAyIDAgMDEtMiAySDlhMiAyIDAgMDEtMi0yVjl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgM2EyIDIgMCAwMC0yIDJ2NmEyIDIgMCAwMDIgMlY1aDhhMiAyIDAgMDAtMi0ySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUVtb2ppSGFwcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2ek03IDlhMSAxIDAgMTAwLTIgMSAxIDAgMDAwIDJ6bTctMWExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6bS0uNDY0IDUuNTM1YTEgMSAwIDEwLTEuNDE1LTEuNDE0IDMgMyAwIDAxLTQuMjQyIDAgMSAxIDAgMDAtMS40MTUgMS40MTQgNSA1IDAgMDA3LjA3MiAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRW1vamlTYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2ek03IDlhMSAxIDAgMTAwLTIgMSAxIDAgMDAwIDJ6bTctMWExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6bS03LjUzNiA1Ljg3OWExIDEgMCAwMDEuNDE1IDAgMyAzIDAgMDE0LjI0MiAwIDEgMSAwIDAwMS40MTUtMS40MTUgNSA1IDAgMDAtNy4wNzIgMCAxIDEgMCAwMDAgMS40MTV6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlFeGNsYW1hdGlvbkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDEwYTggOCAwIDExLTE2IDAgOCA4IDAgMDExNiAwem0tNyA0YTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHptLTEtOWExIDEgMCAwMC0xIDF2NGExIDEgMCAxMDIgMFY2YTEgMSAwIDAwLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOC4yNTcgMy4wOTljLjc2NS0xLjM2IDIuNzIyLTEuMzYgMy40ODYgMGw1LjU4IDkuOTJjLjc1IDEuMzM0LS4yMTMgMi45OC0xLjc0MiAyLjk4SDQuNDJjLTEuNTMgMC0yLjQ5My0xLjY0Ni0xLjc0My0yLjk4bDUuNTgtOS45MnpNMTEgMTNhMSAxIDAgMTEtMiAwIDEgMSAwIDAxMiAwem0tMS04YTEgMSAwIDAwLTEgMXYzYTEgMSAwIDAwMiAwVjZhMSAxIDAgMDAtMS0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRXh0ZXJuYWxMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAzYTEgMSAwIDEwMCAyaDIuNTg2bC02LjI5MyA2LjI5M2ExIDEgMCAxMDEuNDE0IDEuNDE0TDE1IDYuNDE0VjlhMSAxIDAgMTAyIDBWNGExIDEgMCAwMC0xLTFoLTV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNWEyIDIgMCAwMC0yIDJ2OGEyIDIgMCAwMDIgMmg4YTIgMiAwIDAwMi0ydi0zYTEgMSAwIDEwLTIgMHYzSDVWN2gzYTEgMSAwIDAwMC0ySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUV5ZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMuNzA3IDIuMjkzYTEgMSAwIDAwLTEuNDE0IDEuNDE0bDE0IDE0YTEgMSAwIDAwMS40MTQtMS40MTRsLTEuNDczLTEuNDczQTEwLjAxNCAxMC4wMTQgMCAwMDE5LjU0MiAxMEMxOC4yNjggNS45NDMgMTQuNDc4IDMgMTAgM2E5Ljk1OCA5Ljk1OCAwIDAwLTQuNTEyIDEuMDc0bC0xLjc4LTEuNzgxem00LjI2MSA0LjI2bDEuNTE0IDEuNTE1YTIuMDAzIDIuMDAzIDAgMDEyLjQ1IDIuNDVsMS41MTQgMS41MTRhNCA0IDAgMDAtNS40NzgtNS40Nzh6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi40NTQgMTYuNjk3TDkuNzUgMTMuOTkyYTQgNCAwIDAxLTMuNzQyLTMuNzQxTDIuMzM1IDYuNTc4QTkuOTggOS45OCAwIDAwLjQ1OCAxMGMxLjI3NCA0LjA1NyA1LjA2NSA3IDkuNTQyIDcgLjg0NyAwIDEuNjY5LS4xMDUgMi40NTQtLjMwM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRXllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxMmEyIDIgMCAxMDAtNCAyIDIgMCAwMDAgNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTS40NTggMTBDMS43MzIgNS45NDMgNS41MjIgMyAxMCAzczguMjY4IDIuOTQzIDkuNTQyIDdjLTEuMjc0IDQuMDU3LTUuMDY0IDctOS41NDIgN1MxLjczMiAxNC4wNTcuNDU4IDEwek0xNCAxMGE0IDQgMCAxMS04IDAgNCA0IDAgMDE4IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlGYXN0Rm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41NTUgNS4xNjhBMSAxIDAgMDAzIDZ2OGExIDEgMCAwMDEuNTU1LjgzMkwxMCAxMS4yMDJWMTRhMSAxIDAgMDAxLjU1NS44MzJsNi00YTEgMSAwIDAwMC0xLjY2NGwtNi00QTEgMSAwIDAwMTAgNnYyLjc5OGwtNS40NDUtMy42M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRmlsbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgM2EyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJoMTJhMiAyIDAgMDAyLTJWNWEyIDIgMCAwMC0yLTJINHptMyAyaDZ2NEg3VjV6bTggOHYyaDF2LTJoLTF6bS0yLTJIN3Y0aDZ2LTR6bTIgMGgxVjloLTF2MnptMS00VjVoLTF2Mmgxek01IDV2Mkg0VjVoMXptMCA0SDR2MmgxVjl6bS0xIDRoMXYySDR2LTJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlGaWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zIDNhMSAxIDAgMDExLTFoMTJhMSAxIDAgMDExIDF2M2ExIDEgMCAwMS0uMjkzLjcwN0wxMiAxMS40MTRWMTVhMSAxIDAgMDEtLjI5My43MDdsLTIgMkExIDEgMCAwMTggMTd2LTUuNTg2TDMuMjkzIDYuNzA3QTEgMSAwIDAxMyA2VjN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlGaW5nZXJQcmludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYuNjI1IDIuNjU1QTkgOSAwIDAxMTkgMTFhMSAxIDAgMTEtMiAwIDcgNyAwIDAwLTkuNjI1LTYuNDkyIDEgMSAwIDExLS43NS0xLjg1M3pNNC42NjIgNC45NTlBMSAxIDAgMDE0Ljc1IDYuMzcgNi45NyA2Ljk3IDAgMDAzIDExYTEgMSAwIDExLTIgMCA4Ljk3IDguOTcgMCAwMTIuMjUtNS45NTMgMSAxIDAgMDExLjQxMi0uMDg4elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUgMTFhNSA1IDAgMTExMCAwIDEgMSAwIDExLTIgMCAzIDMgMCAxMC02IDBjMCAxLjY3Ny0uMzQ1IDMuMjc2LS45NjggNC43MjlhMSAxIDAgMTEtMS44MzgtLjc4OUE5Ljk2NCA5Ljk2NCAwIDAwNSAxMXptOC45MjEgMi4wMTJhMSAxIDAgMDEuODMxIDEuMTQ1IDE5Ljg2IDE5Ljg2IDAgMDEtLjU0NSAyLjQzNiAxIDEgMCAxMS0xLjkyLS41NThjLjIwNy0uNzEzLjM3MS0xLjQ0NS40OS0yLjE5MmExIDEgMCAwMTEuMTQ0LS44M3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxMGExIDEgMCAwMTEgMWMwIDIuMjM2LS40NiA0LjM2OC0xLjI5IDYuMzA0YTEgMSAwIDAxLTEuODM4LS43ODlBMTMuOTUyIDEzLjk1MiAwIDAwOSAxMWExIDEgMCAwMTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMi4zOTUgMi41NTNhMSAxIDAgMDAtMS40NS0uMzg1Yy0uMzQ1LjIzLS42MTQuNTU4LS44MjIuODgtLjIxNC4zMy0uNDAzLjcxMy0uNTcgMS4xMTYtLjMzNC44MDQtLjYxNCAxLjc2OC0uODQgMi43MzRhMzEuMzY1IDMxLjM2NSAwIDAwLS42MTMgMy41OCAyLjY0IDIuNjQgMCAwMS0uOTQ1LTEuMDY3Yy0uMzI4LS42OC0uMzk4LTEuNTM0LS4zOTgtMi42NTRBMSAxIDAgMDA1LjA1IDYuMDUgNi45ODEgNi45ODEgMCAwMDMgMTFhNyA3IDAgMTAxMS45NS00Ljk1Yy0uNTkyLS41OTEtLjk4LS45ODUtMS4zNDgtMS40NjctLjM2My0uNDc2LS43MjQtMS4wNjMtMS4yMDctMi4wM3pNMTIuMTIgMTUuMTJBMyAzIDAgMDE3IDEzcy44NzkuNSAyLjUuNWMwLTEgLjUtNCAxLjI1LTQuNS41IDEgLjc4NiAxLjI5MyAxLjM3MSAxLjg3OUEyLjk5IDIuOTkgMCAwMTEzIDEzYTIuOTkgMi45OSAwIDAxLS44NzkgMi4xMjF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyA2YTMgMyAwIDAxMy0zaDEwYTEgMSAwIDAxLjggMS42TDE0LjI1IDhsMi41NSAzLjRBMSAxIDAgMDExNiAxM0g2YTEgMSAwIDAwLTEgMXYzYTEgMSAwIDExLTIgMFY2elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRm9sZGVyQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNCA0YTIgMiAwIDAwLTIgMnY4YTIgMiAwIDAwMiAyaDEyYTIgMiAwIDAwMi0yVjhhMiAyIDAgMDAtMi0yaC01TDkgNEg0em03IDVhMSAxIDAgMTAtMiAwdjFIOGExIDEgMCAxMDAgMmgxdjFhMSAxIDAgMTAyIDB2LTFoMWExIDEgMCAxMDAtMmgtMVY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlGb2xkZXJEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgNGEyIDIgMCAwMC0yIDJ2OGEyIDIgMCAwMDIgMmgxMmEyIDIgMCAwMDItMlY4YTIgMiAwIDAwLTItMmgtNUw5IDRINHptNyA1YTEgMSAwIDEwLTIgMHYxLjU4NmwtLjI5My0uMjkzYTEgMSAwIDEwLTEuNDE0IDEuNDE0bDIgMiAuMDAyLjAwMmEuOTk3Ljk5NyAwIDAwMS40MSAwbC4wMDItLjAwMiAyLTJhMSAxIDAgMDAtMS40MTQtMS40MTRsLS4yOTMuMjkzVjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUZvbGRlck9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDZhMiAyIDAgMDEyLTJoNGwyIDJoNGEyIDIgMCAwMTIgMnYxSDhhMyAzIDAgMDAtMyAzdjEuNWExLjUgMS41IDAgMDEtMyAwVjZ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEyYTIgMiAwIDAxMi0yaDhhMiAyIDAgMDEyIDJ2MmEyIDIgMCAwMS0yIDJIMmgyYTIgMiAwIDAwMi0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlGb2xkZXJSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDRhMiAyIDAgMDAtMiAydjhhMiAyIDAgMDAyIDJoMTJhMiAyIDAgMDAyLTJWOGEyIDIgMCAwMC0yLTJoLTVMOSA0SDR6bTQgNmExIDEgMCAxMDAgMmg0YTEgMSAwIDEwMC0ySDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA2YTIgMiAwIDAxMi0yaDVsMiAyaDVhMiAyIDAgMDEyIDJ2NmEyIDIgMCAwMS0yIDJINGEyIDIgMCAwMS0yLTJWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpR2lmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUgNWEzIDMgMCAwMTUtMi4yMzZBMyAzIDAgMDExNC44MyA2SDE2YTIgMiAwIDExMCA0aC01VjlhMSAxIDAgMTAtMiAwdjFINGEyIDIgMCAxMTAtNGgxLjE3QzUuMDYgNS42ODcgNSA1LjM1IDUgNXptNCAxVjVhMSAxIDAgMTAtMSAxaDF6bTMgMGExIDEgMCAxMC0xLTF2MWgxelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMUgzdjVhMiAyIDAgMDAyIDJoNHYtN3pNMTEgMThoNGEyIDIgMCAwMDItMnYtNWgtNnY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlHbG9iZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQuMDgzIDloMS45NDZjLjA4OS0xLjU0Ni4zODMtMi45Ny44MzctNC4xMThBNi4wMDQgNi4wMDQgMCAwMDQuMDgzIDl6TTEwIDJhOCA4IDAgMTAwIDE2IDggOCAwIDAwMC0xNnptMCAyYy0uMDc2IDAtLjIzMi4wMzItLjQ2NS4yNjItLjIzOC4yMzQtLjQ5Ny42MjMtLjczNyAxLjE4Mi0uMzg5LjkwNy0uNjczIDIuMTQyLS43NjYgMy41NTZoMy45MzZjLS4wOTMtMS40MTQtLjM3Ny0yLjY0OS0uNzY2LTMuNTU2LS4yNC0uNTYtLjUtLjk0OC0uNzM3LTEuMTgyQzEwLjIzMiA0LjAzMiAxMC4wNzYgNCAxMCA0em0zLjk3MSA1Yy0uMDg5LTEuNTQ2LS4zODMtMi45Ny0uODM3LTQuMTE4QTYuMDA0IDYuMDA0IDAgMDExNS45MTcgOWgtMS45NDZ6bS0yLjAwMyAySDguMDMyYy4wOTMgMS40MTQuMzc3IDIuNjQ5Ljc2NiAzLjU1Ni4yNC41Ni41Ljk0OC43MzcgMS4xODIuMjMzLjIzLjM4OS4yNjIuNDY1LjI2Mi4wNzYgMCAuMjMyLS4wMzIuNDY1LS4yNjIuMjM4LS4yMzQuNDk4LS42MjMuNzM3LTEuMTgyLjM4OS0uOTA3LjY3My0yLjE0Mi43NjYtMy41NTZ6bTEuMTY2IDQuMTE4Yy40NTQtMS4xNDcuNzQ4LTIuNTcyLjgzNy00LjExOGgxLjk0NmE2LjAwNCA2LjAwNCAwIDAxLTIuNzgzIDQuMTE4em0tNi4yNjggMEM2LjQxMiAxMy45NyA2LjExOCAxMi41NDYgNi4wMyAxMUg0LjA4M2E2LjAwNCA2LjAwNCAwIDAwMi43ODMgNC4xMTh6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlHbG9iZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6TTQuMzMyIDguMDI3YTYuMDEyIDYuMDEyIDAgMDExLjkxMi0yLjcwNkM2LjUxMiA1LjczIDYuOTc0IDYgNy41IDZBMS41IDEuNSAwIDAxOSA3LjVWOGEyIDIgMCAwMDQgMCAyIDIgMCAwMTEuNTIzLTEuOTQzQTUuOTc3IDUuOTc3IDAgMDExNiAxMGMwIC4zNC0uMDI4LjY3NS0uMDgzIDFIMTVhMiAyIDAgMDAtMiAydjIuMTk3QTUuOTczIDUuOTczIDAgMDExMCAxNnYtMmEyIDIgMCAwMC0yLTIgMiAyIDAgMDEtMi0yIDIgMiAwIDAwLTEuNjY4LTEuOTczelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpSGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTkgM2ExIDEgMCAwMTIgMHY1LjVhLjUuNSAwIDAwMSAwVjRhMSAxIDAgMTEyIDB2NC41YS41LjUgMCAwMDEgMFY2YTEgMSAwIDExMiAwdjVhNyA3IDAgMTEtMTQgMFY5YTEgMSAwIDAxMiAwdjIuNWEuNS41IDAgMDAxIDBWNGExIDEgMCAwMTIgMHY0LjVhLjUuNSAwIDAwMSAwVjN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlIYXNodGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOS4yNDMgMy4wM2ExIDEgMCAwMS43MjcgMS4yMTNMOS41MyA2aDIuOTRsLjU2LTIuMjQzYTEgMSAwIDExMS45NC40ODZMMTQuNTMgNkgxN2ExIDEgMCAxMTAgMmgtMi45N2wtMSA0SDE1YTEgMSAwIDExMCAyaC0yLjQ3bC0uNTYgMi4yNDJhMSAxIDAgMTEtMS45NC0uNDg1TDEwLjQ3IDE0SDcuNTNsLS41NiAyLjI0MmExIDEgMCAxMS0xLjk0LS40ODVMNS40NyAxNEgzYTEgMSAwIDExMC0yaDIuOTdsMS00SDVhMSAxIDAgMTEwLTJoMi40N2wuNTYtMi4yNDNhMSAxIDAgMDExLjIxMy0uNzI3ek05LjAzIDhsLTEgNGgyLjkzOGwxLTRIOS4wMzF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMuMTcyIDUuMTcyYTQgNCAwIDAxNS42NTYgMEwxMCA2LjM0M2wxLjE3Mi0xLjE3MWE0IDQgMCAxMTUuNjU2IDUuNjU2TDEwIDE3LjY1N2wtNi44MjgtNi44MjlhNCA0IDAgMDEwLTUuNjU2elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNzA3IDIuMjkzYTEgMSAwIDAwLTEuNDE0IDBsLTcgN2ExIDEgMCAwMDEuNDE0IDEuNDE0TDQgMTAuNDE0VjE3YTEgMSAwIDAwMSAxaDJhMSAxIDAgMDAxLTF2LTJhMSAxIDAgMDExLTFoMmExIDEgMCAwMTEgMXYyYTEgMSAwIDAwMSAxaDJhMSAxIDAgMDAxLTF2LTYuNTg2bC4yOTMuMjkzYTEgMSAwIDAwMS40MTQtMS40MTRsLTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpSWRlbnRpZmljYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAyYTEgMSAwIDAwLTEgMXYxYTEgMSAwIDAwMiAwVjNhMSAxIDAgMDAtMS0xek00IDRoM2EzIDMgMCAwMDYgMGgzYTIgMiAwIDAxMiAydjlhMiAyIDAgMDEtMiAySDRhMiAyIDAgMDEtMi0yVjZhMiAyIDAgMDEyLTJ6bTIuNSA3YTEuNSAxLjUgMCAxMDAtMyAxLjUgMS41IDAgMDAwIDN6bTIuNDUgNGEyLjUgMi41IDAgMTAtNC45IDBoNC45ek0xMiA5YTEgMSAwIDEwMCAyaDNhMSAxIDAgMTAwLTJoLTN6bS0xIDRhMSAxIDAgMDExLTFoMmExIDEgMCAxMTAgMmgtMmExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlJbmJveEluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjcwNyA3LjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNGwyIDJhMSAxIDAgMDAxLjQxNCAwbDItMmExIDEgMCAwMC0xLjQxNC0xLjQxNEwxMSA3LjU4NlYzYTEgMSAwIDEwLTIgMHY0LjU4NmwtLjI5My0uMjkzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVhMiAyIDAgMDEyLTJoMWExIDEgMCAwMTAgMkg1djdoMmwxIDJoNGwxLTJoMlY1aC0xYTEgMSAwIDExMC0yaDFhMiAyIDAgMDEyIDJ2MTBhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNSAzYTIgMiAwIDAwLTIgMnYxMGEyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMlY1YTIgMiAwIDAwLTItMkg1em0wIDJoMTB2N2gtMmwtMSAySDhsLTEtMkg1VjV6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlJbmZvcm1hdGlvbkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDEwYTggOCAwIDExLTE2IDAgOCA4IDAgMDExNiAwem0tNy00YTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHpNOSA5YTEgMSAwIDAwMCAydjNhMSAxIDAgMDAxIDFoMWExIDEgMCAxMDAtMnYtM2ExIDEgMCAwMC0xLTFIOXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUtleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDhhNiA2IDAgMDEtNy43NDMgNS43NDNMMTAgMTRsLTEgMS0xIDFINnYySDJ2LTRsNC4yNTctNC4yNTdBNiA2IDAgMTExOCA4em0tNi00YTEgMSAwIDEwMCAyIDIgMiAwIDAxMiAyIDEgMSAwIDEwMiAwIDQgNCAwIDAwLTQtNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUxpYnJhcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMC40OTYgMi4xMzJhMSAxIDAgMDAtLjk5MiAwbC03IDRBMSAxIDAgMDAzIDh2N2ExIDEgMCAxMDAgMmgxNGExIDEgMCAxMDAtMlY4YTEgMSAwIDAwLjQ5Ni0xLjg2OGwtNy00ek02IDlhMSAxIDAgMDAtMSAxdjNhMSAxIDAgMTAyIDB2LTNhMSAxIDAgMDAtMS0xem0zIDFhMSAxIDAgMDEyIDB2M2ExIDEgMCAxMS0yIDB2LTN6bTUtMWExIDEgMCAwMC0xIDF2M2ExIDEgMCAxMDIgMHYtM2ExIDEgMCAwMC0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlMaWdodEJ1bGIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDNhMSAxIDAgMTAtMiAwdjFhMSAxIDAgMTAyIDBWM3pNMTUuNjU3IDUuNzU3YTEgMSAwIDAwLTEuNDE0LTEuNDE0bC0uNzA3LjcwN2ExIDEgMCAwMDEuNDE0IDEuNDE0bC43MDctLjcwN3pNMTggMTBhMSAxIDAgMDEtMSAxaC0xYTEgMSAwIDExMC0yaDFhMSAxIDAgMDExIDF6TTUuMDUgNi40NjRBMSAxIDAgMTA2LjQ2NCA1LjA1bC0uNzA3LS43MDdhMSAxIDAgMDAtMS40MTQgMS40MTRsLjcwNy43MDd6TTUgMTBhMSAxIDAgMDEtMSAxSDNhMSAxIDAgMTEwLTJoMWExIDEgMCAwMTEgMXpNOCAxNnYtMWg0djFhMiAyIDAgMTEtNCAwek0xMiAxNGMuMDE1LS4zNC4yMDgtLjY0Ni40NzctLjg1OWE0IDQgMCAxMC00Ljk1NCAwYy4yNy4yMTMuNDYyLjUxOS40NzYuODU5aDQuMDAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlMaWdodG5pbmdCb2x0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTEuMyAxLjA0NkExIDEgMCAwMTEyIDJ2NWg0YTEgMSAwIDAxLjgyIDEuNTczbC03IDEwQTEgMSAwIDAxOCAxOHYtNUg0YTEgMSAwIDAxLS44Mi0xLjU3M2w3LTEwYTEgMSAwIDAxMS4xMi0uMzh6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTIuNTg2IDQuNTg2YTIgMiAwIDExMi44MjggMi44MjhsLTMgM2EyIDIgMCAwMS0yLjgyOCAwIDEgMSAwIDAwLTEuNDE0IDEuNDE0IDQgNCAwIDAwNS42NTYgMGwzLTNhNCA0IDAgMDAtNS42NTYtNS42NTZsLTEuNSAxLjVhMSAxIDAgMTAxLjQxNCAxLjQxNGwxLjUtMS41em0tNSA1YTIgMiAwIDAxMi44MjggMCAxIDEgMCAxMDEuNDE0LTEuNDE0IDQgNCAwIDAwLTUuNjU2IDBsLTMgM2E0IDQgMCAxMDUuNjU2IDUuNjU2bDEuNS0xLjVhMSAxIDAgMTAtMS40MTQtMS40MTRsLTEuNSAxLjVhMiAyIDAgMTEtMi44MjgtMi44MjhsMy0zelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTG9jYXRpb25NYXJrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01LjA1IDQuMDVhNyA3IDAgMTE5LjkgOS45TDEwIDE4LjlsLTQuOTUtNC45NWE3IDcgMCAwMTAtOS45ek0xMCAxMWEyIDIgMCAxMDAtNCAyIDIgMCAwMDAgNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUxvY2tDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01IDlWN2E1IDUgMCAwMTEwIDB2MmEyIDIgMCAwMTIgMnY1YTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMnYtNWEyIDIgMCAwMTItMnptOC0ydjJIN1Y3YTMgMyAwIDAxNiAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTG9ja09wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDJhNSA1IDAgMDAtNSA1djJhMiAyIDAgMDAtMiAydjVhMiAyIDAgMDAyIDJoMTBhMiAyIDAgMDAyLTJ2LTVhMiAyIDAgMDAtMi0ySDdWN2EzIDMgMCAwMTUuOTA1LS43NSAxIDEgMCAwMDEuOTM3LS41QTUuMDAyIDUuMDAyIDAgMDAxMCAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlMb2dpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgM2ExIDEgMCAwMTEgMXYxMmExIDEgMCAxMS0yIDBWNGExIDEgMCAwMTEtMXptNy43MDcgMy4yOTNhMSAxIDAgMDEwIDEuNDE0TDkuNDE0IDlIMTdhMSAxIDAgMTEwIDJIOS40MTRsMS4yOTMgMS4yOTNhMSAxIDAgMDEtMS40MTQgMS40MTRsLTMtM2ExIDEgMCAwMTAtMS40MTRsMy0zYTEgMSAwIDAxMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUxvZ291dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgM2ExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMTAyIDBWNGExIDEgMCAwMC0xLTF6bTEwLjI5MyA5LjI5M2ExIDEgMCAwMDEuNDE0IDEuNDE0bDMtM2ExIDEgMCAwMDAtMS40MTRsLTMtM2ExIDEgMCAxMC0xLjQxNCAxLjQxNEwxNC41ODYgOUg3YTEgMSAwIDEwMCAyaDcuNTg2bC0xLjI5MyAxLjI5M3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU1haWxPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMi45NCA2LjQxMkEyIDIgMCAwMDIgOC4xMDhWMTZhMiAyIDAgMDAyIDJoMTJhMiAyIDAgMDAyLTJWOC4xMDhhMiAyIDAgMDAtLjk0LTEuNjk2bC02LTMuNzVhMiAyIDAgMDAtMi4xMiAwbC02IDMuNzV6bTIuNjE1IDIuNDIzYTEgMSAwIDEwLTEuMTEgMS42NjRsNSAzLjMzM2ExIDEgMCAwMDEuMTEgMGw1LTMuMzMzYTEgMSAwIDAwLTEuMTEtMS42NjRMMTAgMTEuNzk4IDUuNTU1IDguODM1elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTWFpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi4wMDMgNS44ODRMMTAgOS44ODJsNy45OTctMy45OThBMiAyIDAgMDAxNiA0SDRhMiAyIDAgMDAtMS45OTcgMS44ODR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDguMTE4bC04IDQtOC00VjE0YTIgMiAwIDAwMiAyaDEyYTIgMiAwIDAwMi0yVjguMTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlNYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMiAxLjU4NmwtNCA0djEyLjgyOGw0LTRWMS41ODZ6TTMuNzA3IDMuMjkzQTEgMSAwIDAwMiA0djEwYTEgMSAwIDAwLjI5My43MDdMNiAxOC40MTRWNS41ODZMMy43MDcgMy4yOTN6TTE3LjcwNyA1LjI5M0wxNCAxLjU4NnYxMi44MjhsMi4yOTMgMi4yOTNBMSAxIDAgMDAxOCAxNlY2YTEgMSAwIDAwLS4yOTMtLjcwN3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU1lbnVBbHQxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyA1YTEgMSAwIDAxMS0xaDEyYTEgMSAwIDExMCAySDRhMSAxIDAgMDEtMS0xek0zIDEwYTEgMSAwIDAxMS0xaDZhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6TTMgMTVhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlNZW51QWx0MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgNWExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpNMyAxMGExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpNMyAxNWExIDEgMCAwMTEtMWg2YTEgMSAwIDExMCAySDRhMSAxIDAgMDEtMS0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTWVudUFsdDMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zIDVhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6TTMgMTBhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6TTkgMTVhMSAxIDAgMDExLTFoNmExIDEgMCAxMTAgMmgtNmExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlNZW51QWx0NCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgN2ExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpNMyAxM2ExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU1lbnUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zIDVhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6TTMgMTBhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6TTMgMTVhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlNaWNyb3Bob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNyA0YTMgMyAwIDAxNiAwdjRhMyAzIDAgMTEtNiAwVjR6bTQgMTAuOTNBNy4wMDEgNy4wMDEgMCAwMDE3IDhhMSAxIDAgMTAtMiAwQTUgNSAwIDAxNSA4YTEgMSAwIDAwLTIgMCA3LjAwMSA3LjAwMSAwIDAwNiA2LjkzVjE3SDZhMSAxIDAgMTAwIDJoOGExIDEgMCAxMDAtMmgtM3YtMi4wN3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU1pbnVzQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnpNNyA5YTEgMSAwIDAwMCAyaDZhMSAxIDAgMTAwLTJIN3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU1pbnVzU20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01IDEwYTEgMSAwIDAxMS0xaDhhMSAxIDAgMTEwIDJINmExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgMTBhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlNb29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4yOTMgMTMuMjkzQTggOCAwIDAxNi43MDcgMi43MDdhOC4wMDEgOC4wMDEgMCAxMDEwLjU4NiAxMC41ODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU11c2ljTm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggM2ExIDEgMCAwMC0xLjE5Ni0uOThsLTEwIDJBMSAxIDAgMDA2IDV2OS4xMTRBNC4zNjkgNC4zNjkgMCAwMDUgMTRjLTEuNjU3IDAtMyAuODk1LTMgMnMxLjM0MyAyIDMgMiAzLS44OTUgMy0yVjcuODJsOC0xLjZ2NS44OTRBNC4zNyA0LjM3IDAgMDAxNSAxMmMtMS42NTcgMC0zIC44OTUtMyAyczEuMzQzIDIgMyAyIDMtLjg5NSAzLTJWM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTmV3c3BhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMiA1YTIgMiAwIDAxMi0yaDhhMiAyIDAgMDEyIDJ2MTBhMiAyIDAgMDAyIDJINGEyIDIgMCAwMS0yLTJWNXptMyAxaDZ2NEg1VjZ6bTYgNkg1djJoNnYtMnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDdoMWEyIDIgMCAwMTIgMnY1LjVhMS41IDEuNSAwIDAxLTMgMFY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPZmZpY2VCdWlsZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgNGEyIDIgMCAwMTItMmg4YTIgMiAwIDAxMiAydjEyYTEgMSAwIDExMCAyaC0zYTEgMSAwIDAxLTEtMXYtMmExIDEgMCAwMC0xLTFIOWExIDEgMCAwMC0xIDF2MmExIDEgMCAwMS0xIDFINGExIDEgMCAxMTAtMlY0em0zIDFoMnYySDdWNXptMiA0SDd2MmgyVjl6bTItNGgydjJoLTJWNXptMiA0aC0ydjJoMlY5elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGFwZXJBaXJwbGFuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuODk0IDIuNTUzYTEgMSAwIDAwLTEuNzg4IDBsLTcgMTRhMSAxIDAgMDAxLjE2OSAxLjQwOWw1LTEuNDI5QTEgMSAwIDAwOSAxNS41NzFWMTFhMSAxIDAgMTEyIDB2NC41NzFhMSAxIDAgMDAuNzI1Ljk2Mmw1IDEuNDI4YTEgMSAwIDAwMS4xNy0xLjQwOGwtNy0xNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGFwZXJDbGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOCA0YTMgMyAwIDAwLTMgM3Y0YTUgNSAwIDAwMTAgMFY3YTEgMSAwIDExMiAwdjRhNyA3IDAgMTEtMTQgMFY3YTUgNSAwIDAxMTAgMHY0YTMgMyAwIDExLTYgMFY3YTEgMSAwIDAxMiAwdjRhMSAxIDAgMTAyIDBWN2EzIDMgMCAwMC0zLTN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQYXVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDEwYTggOCAwIDExLTE2IDAgOCA4IDAgMDExNiAwek03IDhhMSAxIDAgMDEyIDB2NGExIDEgMCAxMS0yIDBWOHptNS0xYTEgMSAwIDAwLTEgMXY0YTEgMSAwIDEwMiAwVjhhMSAxIDAgMDAtMS0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGVuY2lsQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy40MTQgMi41ODZhMiAyIDAgMDAtMi44MjggMEw3IDEwLjE3MlYxM2gyLjgyOGw3LjU4Ni03LjU4NmEyIDIgMCAwMDAtMi44Mjh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDZhMiAyIDAgMDEyLTJoNGExIDEgMCAwMTAgMkg0djEwaDEwdi00YTEgMSAwIDExMiAwdjRhMiAyIDAgMDEtMiAySDRhMiAyIDAgMDEtMi0yVjZ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQZW5jaWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjU4NiAzLjU4NmEyIDIgMCAxMTIuODI4IDIuODI4bC0uNzkzLjc5My0yLjgyOC0yLjgyOC43OTMtLjc5M3pNMTEuMzc5IDUuNzkzTDMgMTQuMTcyVjE3aDIuODI4bDguMzgtOC4zNzktMi44My0yLjgyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGhvbmVJbmNvbWluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNDE0IDdsMy4yOTMtMy4yOTNhMSAxIDAgMDAtMS40MTQtMS40MTRMMTMgNS41ODZWNGExIDEgMCAxMC0yIDB2NC4wMDNhLjk5Ni45OTYgMCAwMC42MTcuOTIxQS45OTcuOTk3IDAgMDAxMiA5aDRhMSAxIDAgMTAwLTJoLTEuNTg2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDNhMSAxIDAgMDExLTFoMi4xNTNhMSAxIDAgMDEuOTg2LjgzNmwuNzQgNC40MzVhMSAxIDAgMDEtLjU0IDEuMDZsLTEuNTQ4Ljc3M2ExMS4wMzcgMTEuMDM3IDAgMDA2LjEwNSA2LjEwNWwuNzc0LTEuNTQ4YTEgMSAwIDAxMS4wNTktLjU0bDQuNDM1Ljc0YTEgMSAwIDAxLjgzNi45ODZWMTdhMSAxIDAgMDEtMSAxaC0yQzcuODIgMTggMiAxMi4xOCAyIDVWM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGhvbmVNaXNzZWRDYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDNhMSAxIDAgMDExLTFoMi4xNTNhMSAxIDAgMDEuOTg2LjgzNmwuNzQgNC40MzVhMSAxIDAgMDEtLjU0IDEuMDZsLTEuNTQ4Ljc3M2ExMS4wMzcgMTEuMDM3IDAgMDA2LjEwNSA2LjEwNWwuNzc0LTEuNTQ4YTEgMSAwIDAxMS4wNTktLjU0bDQuNDM1Ljc0YTEgMSAwIDAxLjgzNi45ODZWMTdhMSAxIDAgMDEtMSAxaC0yQzcuODIgMTggMiAxMi4xOCAyIDVWM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNzA3IDMuMjkzYTEgMSAwIDAxMCAxLjQxNEwxNS40MTQgNmwxLjI5MyAxLjI5M2ExIDEgMCAwMS0xLjQxNCAxLjQxNEwxNCA3LjQxNGwtMS4yOTMgMS4yOTNhMSAxIDAgMTEtMS40MTQtMS40MTRMMTIuNTg2IDZsLTEuMjkzLTEuMjkzYTEgMSAwIDAxMS40MTQtMS40MTRMMTQgNC41ODZsMS4yOTMtMS4yOTNhMSAxIDAgMDExLjQxNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQaG9uZU91dGdvaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy45MjQgMi42MTdhLjk5Ny45OTcgMCAwMC0uMjE1LS4zMjJsLS4wMDQtLjAwNEEuOTk3Ljk5NyAwIDAwMTcgMmgtNGExIDEgMCAxMDAgMmgxLjU4NmwtMy4yOTMgMy4yOTNhMSAxIDAgMDAxLjQxNCAxLjQxNEwxNiA1LjQxNFY3YTEgMSAwIDEwMiAwVjNhLjk5Ny45OTcgMCAwMC0uMDc2LS4zODN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgM2ExIDEgMCAwMTEtMWgyLjE1M2ExIDEgMCAwMS45ODYuODM2bC43NCA0LjQzNWExIDEgMCAwMS0uNTQgMS4wNmwtMS41NDguNzczYTExLjAzNyAxMS4wMzcgMCAwMDYuMTA1IDYuMTA1bC43NzQtMS41NDhhMSAxIDAgMDExLjA1OS0uNTRsNC40MzUuNzRhMSAxIDAgMDEuODM2Ljk4NlYxN2ExIDEgMCAwMS0xIDFoLTJDNy44MiAxOCAyIDEyLjE4IDIgNVYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAzYTEgMSAwIDAxMS0xaDIuMTUzYTEgMSAwIDAxLjk4Ni44MzZsLjc0IDQuNDM1YTEgMSAwIDAxLS41NCAxLjA2bC0xLjU0OC43NzNhMTEuMDM3IDExLjAzNyAwIDAwNi4xMDUgNi4xMDVsLjc3NC0xLjU0OGExIDEgMCAwMTEuMDU5LS41NGw0LjQzNS43NGExIDEgMCAwMS44MzYuOTg2VjE3YTEgMSAwIDAxLTEgMWgtMkM3LjgyIDE4IDIgMTIuMTggMiA1VjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVBob3RvZ3JhcGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDNhMiAyIDAgMDAtMiAydjEwYTIgMiAwIDAwMiAyaDEyYTIgMiAwIDAwMi0yVjVhMiAyIDAgMDAtMi0ySDR6bTEyIDEySDRsNC04IDMgNiAyLTQgMyA2elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGxheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6TTkuNTU1IDcuMTY4QTEgMSAwIDAwOCA4djRhMSAxIDAgMDAxLjU1NS44MzJsMy0yYTEgMSAwIDAwMC0xLjY2NGwtMy0yelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGx1c0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6bTEtMTFhMSAxIDAgMTAtMiAwdjJIN2ExIDEgMCAxMDAgMmgydjJhMSAxIDAgMTAyIDB2LTJoMmExIDEgMCAxMDAtMmgtMlY3elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGx1c1NtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgNWExIDEgMCAwMTEgMXYzaDNhMSAxIDAgMTEwIDJoLTN2M2ExIDEgMCAxMS0yIDB2LTNINmExIDEgMCAxMTAtMmgzVjZhMSAxIDAgMDExLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgM2ExIDEgMCAwMTEgMXY1aDVhMSAxIDAgMTEwIDJoLTV2NWExIDEgMCAxMS0yIDB2LTVINGExIDEgMCAxMTAtMmg1VjRhMSAxIDAgMDExLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQcmVzZW50YXRpb25DaGFydEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgM2ExIDEgMCAwMDAgMnY4YTIgMiAwIDAwMiAyaDIuNTg2bC0xLjI5MyAxLjI5M2ExIDEgMCAxMDEuNDE0IDEuNDE0TDEwIDE1LjQxNGwyLjI5MyAyLjI5M2ExIDEgMCAwMDEuNDE0LTEuNDE0TDEyLjQxNCAxNUgxNWEyIDIgMCAwMDItMlY1YTEgMSAwIDEwMC0ySDN6bTExIDRhMSAxIDAgMTAtMiAwdjRhMSAxIDAgMTAyIDBWN3ptLTMgMWExIDEgMCAxMC0yIDB2M2ExIDEgMCAxMDIgMFY4ek04IDlhMSAxIDAgMDAtMiAwdjJhMSAxIDAgMTAyIDBWOXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVByZXNlbnRhdGlvbkNoYXJ0TGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgM2ExIDEgMCAwMDAgMnY4YTIgMiAwIDAwMiAyaDIuNTg2bC0xLjI5MyAxLjI5M2ExIDEgMCAxMDEuNDE0IDEuNDE0TDEwIDE1LjQxNGwyLjI5MyAyLjI5M2ExIDEgMCAwMDEuNDE0LTEuNDE0TDEyLjQxNCAxNUgxNWEyIDIgMCAwMDItMlY1YTEgMSAwIDEwMC0ySDN6bTExLjcwNyA0LjcwN2ExIDEgMCAwMC0xLjQxNC0xLjQxNEwxMCA5LjU4NiA4LjcwNyA4LjI5M2ExIDEgMCAwMC0xLjQxNCAwbC0yIDJhMSAxIDAgMTAxLjQxNCAxLjQxNEw4IDEwLjQxNGwxLjI5MyAxLjI5M2ExIDEgMCAwMDEuNDE0IDBsNC00elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUHJpbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUgNHYzSDRhMiAyIDAgMDAtMiAydjNhMiAyIDAgMDAyIDJoMXYyYTIgMiAwIDAwMiAyaDZhMiAyIDAgMDAyLTJ2LTJoMWEyIDIgMCAwMDItMlY5YTIgMiAwIDAwLTItMmgtMVY0YTIgMiAwIDAwLTItMkg3YTIgMiAwIDAwLTIgMnptOCAwSDd2M2g2VjR6bTAgOEg3djRoNnYtNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVB1enpsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMy41YTEuNSAxLjUgMCAwMTMgMFY0YTEgMSAwIDAwMSAxaDNhMSAxIDAgMDExIDF2M2ExIDEgMCAwMS0xIDFoLS41YTEuNSAxLjUgMCAwMDAgM2guNWExIDEgMCAwMTEgMXYzYTEgMSAwIDAxLTEgMWgtM2ExIDEgMCAwMS0xLTF2LS41YTEuNSAxLjUgMCAwMC0zIDB2LjVhMSAxIDAgMDEtMSAxSDZhMSAxIDAgMDEtMS0xdi0zYTEgMSAwIDAwLTEtMWgtLjVhMS41IDEuNSAwIDAxMC0zSDRhMSAxIDAgMDAxLTFWNmExIDEgMCAwMTEtMWgzYTEgMSAwIDAwMS0xdi0uNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUXJjb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyA0YTEgMSAwIDAxMS0xaDNhMSAxIDAgMDExIDF2M2ExIDEgMCAwMS0xIDFINGExIDEgMCAwMS0xLTFWNHptMiAyVjVoMXYxSDV6TTMgMTNhMSAxIDAgMDExLTFoM2ExIDEgMCAwMTEgMXYzYTEgMSAwIDAxLTEgMUg0YTEgMSAwIDAxLTEtMXYtM3ptMiAydi0xaDF2MUg1ek0xMyAzYTEgMSAwIDAwLTEgMXYzYTEgMSAwIDAwMSAxaDNhMSAxIDAgMDAxLTFWNGExIDEgMCAwMC0xLTFoLTN6bTEgMnYxaDFWNWgtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDRhMSAxIDAgMTAtMiAwdjFhMSAxIDAgMDAyIDBWNHpNMTAgN2ExIDEgMCAwMTEgMXYxaDJhMSAxIDAgMTEwIDJoLTNhMSAxIDAgMDEtMS0xVjhhMSAxIDAgMDExLTF6TTE2IDlhMSAxIDAgMTAwIDIgMSAxIDAgMDAwLTJ6TTkgMTNhMSAxIDAgMDExLTFoMWExIDEgMCAxMTAgMnYyYTEgMSAwIDExLTIgMHYtM3pNNyAxMWExIDEgMCAxMDAtMkg0YTEgMSAwIDEwMCAyaDN6TTE3IDEzYTEgMSAwIDAxLTEgMWgtMmExIDEgMCAxMTAtMmgyYTEgMSAwIDAxMSAxek0xNiAxN2ExIDEgMCAxMDAtMmgtM2ExIDEgMCAxMDAgMmgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlRdWVzdGlvbk1hcmtDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xOCAxMGE4IDggMCAxMS0xNiAwIDggOCAwIDAxMTYgMHptLTgtM2ExIDEgMCAwMC0uODY3LjUgMSAxIDAgMTEtMS43MzEtMUEzIDMgMCAwMTEzIDhhMy4wMDEgMy4wMDEgMCAwMS0yIDIuODNWMTFhMSAxIDAgMTEtMiAwdi0xYTEgMSAwIDAxMS0xIDEgMSAwIDEwMC0yem0wIDhhMSAxIDAgMTAwLTIgMSAxIDAgMDAwIDJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlSZWNlaXB0UmVmdW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNSAyYTIgMiAwIDAwLTIgMnYxNGwzLjUtMiAzLjUgMiAzLjUtMiAzLjUgMlY0YTIgMiAwIDAwLTItMkg1em00LjcwNyAzLjcwN2ExIDEgMCAwMC0xLjQxNC0xLjQxNGwtMyAzYTEgMSAwIDAwMCAxLjQxNGwzIDNhMSAxIDAgMDAxLjQxNC0xLjQxNEw4LjQxNCA5SDEwYTMgMyAwIDAxMyAzdjFhMSAxIDAgMTAyIDB2LTFhNSA1IDAgMDAtNS01SDguNDE0bDEuMjkzLTEuMjkzelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUmVjZWlwdFRheCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUgMmEyIDIgMCAwMC0yIDJ2MTRsMy41LTIgMy41IDIgMy41LTIgMy41IDJWNGEyIDIgMCAwMC0yLTJINXptMi41IDNhMS41IDEuNSAwIDEwMCAzIDEuNSAxLjUgMCAwMDAtM3ptNi4yMDcuMjkzYTEgMSAwIDAwLTEuNDE0IDBsLTYgNmExIDEgMCAxMDEuNDE0IDEuNDE0bDYtNmExIDEgMCAwMDAtMS40MTR6TTEyLjUgMTBhMS41IDEuNSAwIDEwMCAzIDEuNSAxLjUgMCAwMDAtM3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVJlZnJlc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDJhMSAxIDAgMDExIDF2Mi4xMDFhNy4wMDIgNy4wMDIgMCAwMTExLjYwMSAyLjU2NiAxIDEgMCAxMS0xLjg4NS42NjZBNS4wMDIgNS4wMDIgMCAwMDUuOTk5IDdIOWExIDEgMCAwMTAgMkg0YTEgMSAwIDAxLTEtMVYzYTEgMSAwIDAxMS0xem0uMDA4IDkuMDU3YTEgMSAwIDAxMS4yNzYuNjFBNS4wMDIgNS4wMDIgMCAwMDE0LjAwMSAxM0gxMWExIDEgMCAxMTAtMmg1YTEgMSAwIDAxMSAxdjVhMSAxIDAgMTEtMiAwdi0yLjEwMWE3LjAwMiA3LjAwMiAwIDAxLTExLjYwMS0yLjU2NiAxIDEgMCAwMS42MS0xLjI3NnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVJlcGx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNy43MDcgMy4yOTNhMSAxIDAgMDEwIDEuNDE0TDUuNDE0IDdIMTFhNyA3IDAgMDE3IDd2MmExIDEgMCAxMS0yIDB2LTJhNSA1IDAgMDAtNS01SDUuNDE0bDIuMjkzIDIuMjkzYTEgMSAwIDExLTEuNDE0IDEuNDE0bC00LTRhMSAxIDAgMDEwLTEuNDE0bDQtNGExIDEgMCAwMTEuNDE0IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlSZXdpbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNDQ1IDE0LjgzMkExIDEgMCAwMDEwIDE0di0yLjc5OGw1LjQ0NSAzLjYzQTEgMSAwIDAwMTcgMTRWNmExIDEgMCAwMC0xLjU1NS0uODMyTDEwIDguNzk4VjZhMSAxIDAgMDAtMS41NTUtLjgzMmwtNiA0YTEgMSAwIDAwMCAxLjY2NGw2IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVJzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAzYTEgMSAwIDAwMCAyYzUuNTIzIDAgMTAgNC40NzcgMTAgMTBhMSAxIDAgMTAyIDBDMTcgOC4zNzMgMTEuNjI3IDMgNSAzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDlhMSAxIDAgMDExLTEgNyA3IDAgMDE3IDcgMSAxIDAgMTEtMiAwIDUgNSAwIDAwLTUtNSAxIDEgMCAwMS0xLTF6TTMgMTVhMiAyIDAgMTE0IDAgMiAyIDAgMDEtNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlTYXZlQXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNzA3IDcuMjkzYTEgMSAwIDAwLTEuNDE0IDEuNDE0bDMgM2ExIDEgMCAwMDEuNDE0IDBsMy0zYTEgMSAwIDAwLTEuNDE0LTEuNDE0TDEzIDguNTg2VjVoM2EyIDIgMCAwMTIgMnY1YTIgMiAwIDAxLTIgMkg4YTIgMiAwIDAxLTItMlY3YTIgMiAwIDAxMi0yaDN2My41ODZMOS43MDcgNy4yOTN6TTExIDNhMSAxIDAgMTEyIDB2MmgtMlYzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDlhMiAyIDAgMDAtMiAydjVhMiAyIDAgMDAyIDJoOGEyIDIgMCAwMDItMkg0Vjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNzA3IDEwLjI5M2ExIDEgMCAxMC0xLjQxNCAxLjQxNGwzIDNhMSAxIDAgMDAxLjQxNCAwbDMtM2ExIDEgMCAwMC0xLjQxNC0xLjQxNEwxMSAxMS41ODZWNmg1YTIgMiAwIDAxMiAydjdhMiAyIDAgMDEtMiAySDRhMiAyIDAgMDEtMi0yVjhhMiAyIDAgMDEyLTJoNXY1LjU4NmwtMS4yOTMtMS4yOTN6TTkgNGExIDEgMCAwMTIgMHYySDlWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2NhbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAyYTEgMSAwIDAxMSAxdjEuMzIzbDMuOTU0IDEuNTgyIDEuNTk5LS44YTEgMSAwIDAxLjg5NCAxLjc5bC0xLjIzMy42MTYgMS43MzggNS40MmExIDEgMCAwMS0uMjg1IDEuMDVBMy45ODkgMy45ODkgMCAwMTE1IDE1YTMuOTg5IDMuOTg5IDAgMDEtMi42NjctMS4wMTkgMSAxIDAgMDEtLjI4NS0xLjA1bDEuNzE1LTUuMzQ5TDExIDYuNDc3VjE2aDJhMSAxIDAgMTEwIDJIN2ExIDEgMCAxMTAtMmgyVjYuNDc3TDYuMjM3IDcuNTgybDEuNzE1IDUuMzQ5YTEgMSAwIDAxLS4yODUgMS4wNUEzLjk4OSAzLjk4OSAwIDAxNSAxNWEzLjk4OSAzLjk4OSAwIDAxLTIuNjY3LTEuMDE5IDEgMSAwIDAxLS4yODUtMS4wNWwxLjczOC01LjQyLTEuMjMzLS42MTdhMSAxIDAgMDEuODk0LTEuNzg4bDEuNTk5Ljc5OUw5IDQuMzIzVjNhMSAxIDAgMDExLTF6bS01IDguMjc0bC0uODE4IDIuNTUyYy4yNS4xMTIuNTI2LjE3NC44MTguMTc0LjI5MiAwIC41NjktLjA2Mi44MTgtLjE3NEw1IDEwLjI3NHptMTAgMGwtLjgxOCAyLjU1MmMuMjUuMTEyLjUyNi4xNzQuODE4LjE3NC4yOTIgMCAuNTY5LS4wNjIuODE4LS4xNzRMMTUgMTAuMjc0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2Npc3NvcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01LjUgMmEzLjUgMy41IDAgMTAxLjY2NSA2LjU4TDguNTg1IDEwbC0xLjQyIDEuNDJhMy41IDMuNSAwIDEwMS40MTQgMS40MTRsOC4xMjgtOC4xMjdhMSAxIDAgMDAtMS40MTQtMS40MTRMMTAgOC41ODZsLTEuNDItMS40MkEzLjUgMy41IDAgMDA1LjUgMnpNNCA1LjVhMS41IDEuNSAwIDExMyAwIDEuNSAxLjUgMCAwMS0zIDB6bTAgOWExLjUgMS41IDAgMTEzIDAgMS41IDEuNSAwIDAxLTMgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjgyOCAxMS40MTRhMSAxIDAgMDAtMS40MTQgMS40MTRsMy44NzkgMy44OGExIDEgMCAwMDEuNDE0LTEuNDE1bC0zLjg3OS0zLjg3OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2VhcmNoQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDlhMiAyIDAgMTE0IDAgMiAyIDAgMDEtNCAwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnptMS0xM2E0IDQgMCAwMC0zLjQ0NiA2LjAzMmwtMi4yNjEgMi4yNmExIDEgMCAxMDEuNDE0IDEuNDE1bDIuMjYxLTIuMjYxQTQgNCAwIDEwMTEgNXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggNGE0IDQgMCAxMDAgOCA0IDQgMCAwMDAtOHpNMiA4YTYgNiAwIDExMTAuODkgMy40NzZsNC44MTcgNC44MTdhMSAxIDAgMDEtMS40MTQgMS40MTRsLTQuODE2LTQuODE2QTYgNiAwIDAxMiA4elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2VsZWN0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAzYTEgMSAwIDAxLjcwNy4yOTNsMyAzYTEgMSAwIDAxLTEuNDE0IDEuNDE0TDEwIDUuNDE0IDcuNzA3IDcuNzA3YTEgMSAwIDAxLTEuNDE0LTEuNDE0bDMtM0ExIDEgMCAwMTEwIDN6bS0zLjcwNyA5LjI5M2ExIDEgMCAwMTEuNDE0IDBMMTAgMTQuNTg2bDIuMjkzLTIuMjkzYTEgMSAwIDAxMS40MTQgMS40MTRsLTMgM2ExIDEgMCAwMS0xLjQxNCAwbC0zLTNhMSAxIDAgMDEwLTEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2VydmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMiA1YTIgMiAwIDAxMi0yaDEyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAySDRhMiAyIDAgMDEtMi0yVjV6bTE0IDFhMSAxIDAgMTEtMiAwIDEgMSAwIDAxMiAwek0yIDEzYTIgMiAwIDAxMi0yaDEyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAySDRhMiAyIDAgMDEtMi0ydi0yem0xNCAxYTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA4YTMgMyAwIDEwLTIuOTc3LTIuNjNsLTQuOTQgMi40N2EzIDMgMCAxMDAgNC4zMTlsNC45NCAyLjQ3YTMgMyAwIDEwLjg5NS0xLjc4OWwtNC45NC0yLjQ3YTMuMDI3IDMuMDI3IDAgMDAwLS43NGw0Ljk0LTIuNDdDMTMuNDU2IDcuNjggMTQuMTkgOCAxNSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlTaGllbGRDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIuMTY2IDQuOTk5QTExLjk1NCAxMS45NTQgMCAwMDEwIDEuOTQ0IDExLjk1NCAxMS45NTQgMCAwMDE3LjgzNCA1Yy4xMS42NS4xNjYgMS4zMi4xNjYgMi4wMDEgMCA1LjIyNS0zLjM0IDkuNjctOCAxMS4zMTdDNS4zNCAxNi42NyAyIDEyLjIyNSAyIDdjMC0uNjgyLjA1Ny0xLjM1LjE2Ni0yLjAwMXptMTEuNTQxIDMuNzA4YTEgMSAwIDAwLTEuNDE0LTEuNDE0TDkgMTAuNTg2IDcuNzA3IDkuMjkzYTEgMSAwIDAwLTEuNDE0IDEuNDE0bDIgMmExIDEgMCAwMDEuNDE0IDBsNC00elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2hpZWxkRXhjbGFtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxLjk0NEExMS45NTQgMTEuOTU0IDAgMDEyLjE2NiA1QzIuMDU2IDUuNjQ5IDIgNi4zMTkgMiA3YzAgNS4yMjUgMy4zNCA5LjY3IDggMTEuMzE3QzE0LjY2IDE2LjY3IDE4IDEyLjIyNSAxOCA3YzAtLjY4Mi0uMDU3LTEuMzUtLjE2Ni0yLjAwMUExMS45NTQgMTEuOTU0IDAgMDExMCAxLjk0NHpNMTEgMTRhMSAxIDAgMTEtMiAwIDEgMSAwIDAxMiAwem0wLTdhMSAxIDAgMTAtMiAwdjNhMSAxIDAgMTAyIDBWN3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNob3BwaW5nQmFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMmE0IDQgMCAwMC00IDR2MUg1YTEgMSAwIDAwLS45OTQuODlsLTEgOUExIDEgMCAwMDQgMThoMTJhMSAxIDAgMDAuOTk0LTEuMTFsLTEtOUExIDEgMCAwMDE1IDdoLTFWNmE0IDQgMCAwMC00LTR6bTIgNVY2YTIgMiAwIDEwLTQgMHYxaDR6bS02IDNhMSAxIDAgMTEyIDAgMSAxIDAgMDEtMiAwem03LTFhMSAxIDAgMTAwIDIgMSAxIDAgMDAwLTJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlTaG9wcGluZ0NhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMWExIDEgMCAwMDAgMmgxLjIybC4zMDUgMS4yMjJhLjk5Ny45OTcgMCAwMC4wMS4wNDJsMS4zNTggNS40My0uODkzLjg5MkMzLjc0IDExLjg0NiA0LjYzMiAxNCA2LjQxNCAxNEgxNWExIDEgMCAwMDAtMkg2LjQxNGwxLTFIMTRhMSAxIDAgMDAuODk0LS41NTNsMy02QTEgMSAwIDAwMTcgM0g2LjI4bC0uMzEtMS4yNDNBMSAxIDAgMDA1IDFIM3pNMTYgMTYuNWExLjUgMS41IDAgMTEtMyAwIDEuNSAxLjUgMCAwMTMgMHpNNi41IDE4YTEuNSAxLjUgMCAxMDAtMyAxLjUgMS41IDAgMDAwIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNvcnRBc2NlbmRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM2ExIDEgMCAwMDAgMmgxMWExIDEgMCAxMDAtMkgzek0zIDdhMSAxIDAgMDAwIDJoNWExIDEgMCAwMDAtMkgzek0zIDExYTEgMSAwIDEwMCAyaDRhMSAxIDAgMTAwLTJIM3pNMTMgMTZhMSAxIDAgMTAyIDB2LTUuNTg2bDEuMjkzIDEuMjkzYTEgMSAwIDAwMS40MTQtMS40MTRsLTMtM2ExIDEgMCAwMC0xLjQxNCAwbC0zIDNhMSAxIDAgMTAxLjQxNCAxLjQxNEwxMyAxMC40MTRWMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNvcnREZXNjZW5kaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDNhMSAxIDAgMDAwIDJoMTFhMSAxIDAgMTAwLTJIM3pNMyA3YTEgMSAwIDAwMCAyaDdhMSAxIDAgMTAwLTJIM3pNMyAxMWExIDEgMCAxMDAgMmg0YTEgMSAwIDEwMC0ySDN6TTE1IDhhMSAxIDAgMTAtMiAwdjUuNTg2bC0xLjI5My0xLjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNGwzIDNhMSAxIDAgMDAxLjQxNCAwbDMtM2ExIDEgMCAwMC0xLjQxNC0xLjQxNEwxNSAxMy41ODZWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU3BhcmtsZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01IDJhMSAxIDAgMDExIDF2MWgxYTEgMSAwIDAxMCAySDZ2MWExIDEgMCAwMS0yIDBWNkgzYTEgMSAwIDAxMC0yaDFWM2ExIDEgMCAwMTEtMXptMCAxMGExIDEgMCAwMTEgMXYxaDFhMSAxIDAgMTEwIDJINnYxYTEgMSAwIDExLTIgMHYtMUgzYTEgMSAwIDExMC0yaDF2LTFhMSAxIDAgMDExLTF6TTEyIDJhMSAxIDAgMDEuOTY3Ljc0NEwxNC4xNDYgNy4yIDE3LjUgOS4xMzRhMSAxIDAgMDEwIDEuNzMybC0zLjM1NCAxLjkzNS0xLjE4IDQuNDU1YTEgMSAwIDAxLTEuOTMzIDBMOS44NTQgMTIuOCA2LjUgMTAuODY2YTEgMSAwIDAxMC0xLjczMmwzLjM1NC0xLjkzNSAxLjE4LTQuNDU1QTEgMSAwIDAxMTIgMnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNwZWFrZXJwaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDNhMSAxIDAgMDAtMS40NDctLjg5NEw4Ljc2MyA2SDVhMyAzIDAgMDAwIDZoLjI4bDEuNzcxIDUuMzE2QTEgMSAwIDAwOCAxOGgxYTEgMSAwIDAwMS0xdi00LjM4Mmw2LjU1MyAzLjI3NkExIDEgMCAwMDE4IDE1VjN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlTdGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjA0OSAyLjkyN2MuMy0uOTIxIDEuNjAzLS45MjEgMS45MDIgMGwxLjA3IDMuMjkyYTEgMSAwIDAwLjk1LjY5aDMuNDYyYy45NjkgMCAxLjM3MSAxLjI0LjU4OCAxLjgxbC0yLjggMi4wMzRhMSAxIDAgMDAtLjM2NCAxLjExOGwxLjA3IDMuMjkyYy4zLjkyMS0uNzU1IDEuNjg4LTEuNTQgMS4xMThsLTIuOC0yLjAzNGExIDEgMCAwMC0xLjE3NSAwbC0yLjggMi4wMzRjLS43ODQuNTctMS44MzgtLjE5Ny0xLjUzOS0xLjExOGwxLjA3LTMuMjkyYTEgMSAwIDAwLS4zNjQtMS4xMThMMi45OCA4LjcyYy0uNzgzLS41Ny0uMzgtMS44MS41ODgtMS44MWgzLjQ2MWExIDEgMCAwMC45NTEtLjY5bDEuMDctMy4yOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVN0YXR1c09mZmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNzA3IDIuMjkzYTEgMSAwIDAwLTEuNDE0IDEuNDE0bDYuOTIxIDYuOTIyYy4wNS4wNjIuMTA1LjExOC4xNjguMTY3bDYuOTEgNi45MTFhMSAxIDAgMDAxLjQxNS0xLjQxNGwtLjY3NS0uNjc1YTkuMDAxIDkuMDAxIDAgMDAtLjY2OC0xMS45ODJBMSAxIDAgMTAxNC45NSA1LjA1YTcuMDAyIDcuMDAyIDAgMDEuNjU3IDkuMTQzbC0xLjQzNS0xLjQzNWE1LjAwMiA1LjAwMiAwIDAwLS42MzYtNi4yOTRBMSAxIDAgMDAxMi4xMiA3Ljg4Yy45MjQuOTIzIDEuMTIgMi4zLjU4NyAzLjQxNWwtMS45OTItMS45OTJhLjkyMi45MjIgMCAwMC0uMDE4LS4wMThsLTYuOTktNi45OTF6TTMuMjM4IDguMTg3YTEgMSAwIDAwLTEuOTMzLS41MTZjLS44IDMtLjAyNSA2LjMzNiAyLjMzMSA4LjY5M2ExIDEgMCAwMDEuNDE0LTEuNDE1IDYuOTk3IDYuOTk3IDAgMDEtMS44MTItNi43NjJ6TTcuNCAxMS41YTEgMSAwIDEwLTEuNzMgMWMuMjE0LjM3MS40OC43Mi43OTUgMS4wMzVhMSAxIDAgMDAxLjQxNC0xLjQxNGMtLjE5MS0uMTkxLS4zNS0uNC0uNDc4LS42MjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVN0YXR1c09ubGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUuMDUgMy42MzZhMSAxIDAgMDEwIDEuNDE0IDcgNyAwIDAwMCA5LjkgMSAxIDAgMTEtMS40MTQgMS40MTQgOSA5IDAgMDEwLTEyLjcyOCAxIDEgMCAwMTEuNDE0IDB6bTkuOSAwYTEgMSAwIDAxMS40MTQgMCA5IDkgMCAwMTAgMTIuNzI4IDEgMSAwIDExLTEuNDE0LTEuNDE0IDcgNyAwIDAwMC05LjkgMSAxIDAgMDEwLTEuNDE0ek03Ljg3OSA2LjQ2NGExIDEgMCAwMTAgMS40MTQgMyAzIDAgMDAwIDQuMjQzIDEgMSAwIDExLTEuNDE1IDEuNDE0IDUgNSAwIDAxMC03LjA3IDEgMSAwIDAxMS40MTUgMHptNC4yNDIgMGExIDEgMCAwMTEuNDE1IDAgNSA1IDAgMDEwIDcuMDcyIDEgMSAwIDAxLTEuNDE1LTEuNDE1IDMgMyAwIDAwMC00LjI0MiAxIDEgMCAwMTAtMS40MTV6TTEwIDlhMSAxIDAgMDExIDF2LjAxYTEgMSAwIDExLTIgMFYxMGExIDEgMCAwMTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVN0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2ek04IDdhMSAxIDAgMDAtMSAxdjRhMSAxIDAgMDAxIDFoNGExIDEgMCAwMDEtMVY4YTEgMSAwIDAwLTEtMUg4elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU3VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMmExIDEgMCAwMTEgMXYxYTEgMSAwIDExLTIgMFYzYTEgMSAwIDAxMS0xem00IDhhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwem0tLjQ2NCA0Ljk1bC43MDcuNzA3YTEgMSAwIDAwMS40MTQtMS40MTRsLS43MDctLjcwN2ExIDEgMCAwMC0xLjQxNCAxLjQxNHptMi4xMi0xMC42MDdhMSAxIDAgMDEwIDEuNDE0bC0uNzA2LjcwN2ExIDEgMCAxMS0xLjQxNC0xLjQxNGwuNzA3LS43MDdhMSAxIDAgMDExLjQxNCAwek0xNyAxMWExIDEgMCAxMDAtMmgtMWExIDEgMCAxMDAgMmgxem0tNyA0YTEgMSAwIDAxMSAxdjFhMSAxIDAgMTEtMiAwdi0xYTEgMSAwIDAxMS0xek01LjA1IDYuNDY0QTEgMSAwIDEwNi40NjUgNS4wNWwtLjcwOC0uNzA3YTEgMSAwIDAwLTEuNDE0IDEuNDE0bC43MDcuNzA3em0xLjQxNCA4LjQ4NmwtLjcwNy43MDdhMSAxIDAgMDEtMS40MTQtMS40MTRsLjcwNy0uNzA3YTEgMSAwIDAxMS40MTQgMS40MTR6TTQgMTFhMSAxIDAgMTAwLTJIM2ExIDEgMCAwMDAgMmgxelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU3VwcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDEwYTggOCAwIDExLTE2IDAgOCA4IDAgMDExNiAwem0tMiAwYzAgLjk5My0uMjQxIDEuOTI5LS42NjggMi43NTRsLTEuNTI0LTEuNTI1YTMuOTk3IDMuOTk3IDAgMDAuMDc4LTIuMTgzbDEuNTYyLTEuNTYyQzE1LjgwMiA4LjI0OSAxNiA5LjEgMTYgMTB6bS01LjE2NSAzLjkxM2wxLjU4IDEuNThBNS45OCA1Ljk4IDAgMDExMCAxNmE1Ljk3NiA1Ljk3NiAwIDAxLTIuNTE2LS41NTJsMS41NjItMS41NjJhNC4wMDYgNC4wMDYgMCAwMDEuNzg5LjAyN3ptLTQuNjc3LTIuNzk2YTQuMDAyIDQuMDAyIDAgMDEtLjA0MS0yLjA4bC0uMDguMDgtMS41My0xLjUzM0E1Ljk4IDUuOTggMCAwMDQgMTBjMCAuOTU0LjIyMyAxLjg1Ni42MTkgMi42NTdsMS41NC0xLjU0em0xLjA4OC02LjQ1QTUuOTc0IDUuOTc0IDAgMDExMCA0Yy45NTQgMCAxLjg1Ni4yMjMgMi42NTcuNjE5bC0xLjU0IDEuNTRhNC4wMDIgNC4wMDIgMCAwMC0yLjM0Ni4wMzNMNy4yNDYgNC42Njh6TTEyIDEwYTIgMiAwIDExLTQgMCAyIDIgMCAwMTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVN3aXRjaEhvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNWExIDEgMCAxMDAgMmg1LjU4NmwtMS4yOTMgMS4yOTNhMSAxIDAgMDAxLjQxNCAxLjQxNGwzLTNhMSAxIDAgMDAwLTEuNDE0bC0zLTNhMSAxIDAgMTAtMS40MTQgMS40MTRMMTMuNTg2IDVIOHpNMTIgMTVhMSAxIDAgMTAwLTJINi40MTRsMS4yOTMtMS4yOTNhMSAxIDAgMTAtMS40MTQtMS40MTRsLTMgM2ExIDEgMCAwMDAgMS40MTRsMyAzYTEgMSAwIDAwMS40MTQtMS40MTRMNi40MTQgMTVIMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVN3aXRjaFZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEyYTEgMSAwIDEwMiAwVjYuNDE0bDEuMjkzIDEuMjkzYTEgMSAwIDAwMS40MTQtMS40MTRsLTMtM2ExIDEgMCAwMC0xLjQxNCAwbC0zIDNhMSAxIDAgMDAxLjQxNCAxLjQxNEw1IDYuNDE0VjEyek0xNSA4YTEgMSAwIDEwLTIgMHY1LjU4NmwtMS4yOTMtMS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMyAzYTEgMSAwIDAwMS40MTQgMGwzLTNhMSAxIDAgMDAtMS40MTQtMS40MTRMMTUgMTMuNTg2Vjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVRhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNSA0YTMgMyAwIDAwLTMgM3Y2YTMgMyAwIDAwMyAzaDEwYTMgMyAwIDAwMy0zVjdhMyAzIDAgMDAtMy0zSDV6bS0xIDl2LTFoNXYySDVhMSAxIDAgMDEtMS0xem03IDFoNGExIDEgMCAwMDEtMXYtMWgtNXYyem0wLTRoNVY4aC01djJ6TTkgOEg0djJoNVY4elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTcuNzA3IDkuMjkzYTEgMSAwIDAxMCAxLjQxNGwtNyA3YTEgMSAwIDAxLTEuNDE0IDBsLTctN0EuOTk3Ljk5NyAwIDAxMiAxMFY1YTMgMyAwIDAxMy0zaDVjLjI1NiAwIC41MTIuMDk4LjcwNy4yOTNsNyA3ek01IDZhMSAxIDAgMTAwLTIgMSAxIDAgMDAwIDJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlUZW1wbGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA0YTEgMSAwIDAxMS0xaDEyYTEgMSAwIDAxMSAxdjJhMSAxIDAgMDEtMSAxSDRhMSAxIDAgMDEtMS0xVjR6TTMgMTBhMSAxIDAgMDExLTFoNmExIDEgMCAwMTEgMXY2YTEgMSAwIDAxLTEgMUg0YTEgMSAwIDAxLTEtMXYtNnpNMTQgOWExIDEgMCAwMC0xIDF2NmExIDEgMCAwMDEgMWgyYTEgMSAwIDAwMS0xdi02YTEgMSAwIDAwLTEtMWgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVGVybWluYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDVhMiAyIDAgMDEyLTJoMTJhMiAyIDAgMDEyIDJ2MTBhMiAyIDAgMDEtMiAySDRhMiAyIDAgMDEtMi0yVjV6bTMuMjkzIDEuMjkzYTEgMSAwIDAxMS40MTQgMGwzIDNhMSAxIDAgMDEwIDEuNDE0bC0zIDNhMSAxIDAgMDEtMS40MTQtMS40MTRMNy41ODYgMTAgNS4yOTMgNy43MDdhMSAxIDAgMDEwLTEuNDE0ek0xMSAxMmExIDEgMCAxMDAgMmgzYTEgMSAwIDEwMC0yaC0zelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVGh1bWJEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5LjVhMS41IDEuNSAwIDExLTMgMHYtNmExLjUgMS41IDAgMDEzIDB2NnpNMTQgOS42Njd2LTUuNDNhMiAyIDAgMDAtMS4xMDUtMS43OWwtLjA1LS4wMjVBNCA0IDAgMDAxMS4wNTUgMkg1LjY0YTIgMiAwIDAwLTEuOTYyIDEuNjA4bC0xLjIgNkEyIDIgMCAwMDQuNDQgMTJIOHY0YTIgMiAwIDAwMiAyIDEgMSAwIDAwMS0xdi0uNjY3YTQgNCAwIDAxLjgtMi40bDEuNC0xLjg2NmE0IDQgMCAwMC44LTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVGh1bWJVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxMC41YTEuNSAxLjUgMCAxMTMgMHY2YTEuNSAxLjUgMCAwMS0zIDB2LTZ6TTYgMTAuMzMzdjUuNDNhMiAyIDAgMDAxLjEwNiAxLjc5bC4wNS4wMjVBNCA0IDAgMDA4Ljk0MyAxOGg1LjQxNmEyIDIgMCAwMDEuOTYyLTEuNjA4bDEuMi02QTIgMiAwIDAwMTUuNTYgOEgxMlY0YTIgMiAwIDAwLTItMiAxIDEgMCAwMC0xIDF2LjY2N2E0IDQgMCAwMS0uOCAyLjRMNi44IDcuOTMzYTQgNCAwIDAwLS44IDIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVGlja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDZhMiAyIDAgMDEyLTJoMTJhMiAyIDAgMDEyIDJ2MmEyIDIgMCAxMDAgNHYyYTIgMiAwIDAxLTIgMkg0YTIgMiAwIDAxLTItMnYtMmEyIDIgMCAxMDAtNFY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlUcmFuc2xhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03IDJhMSAxIDAgMDExIDF2MWgzYTEgMSAwIDExMCAySDkuNTc4YTE4Ljg3IDE4Ljg3IDAgMDEtMS43MjQgNC43OGMuMjkuMzU0LjU5Ni42OTYuOTE0IDEuMDI2YTEgMSAwIDExLTEuNDQgMS4zODljLS4xODgtLjE5Ni0uMzczLS4zOTYtLjU1NC0uNmExOS4wOTggMTkuMDk4IDAgMDEtMy4xMDcgMy41NjcgMSAxIDAgMDEtMS4zMzQtMS40OSAxNy4wODcgMTcuMDg3IDAgMDAzLjEzLTMuNzMzIDE4Ljk5MiAxOC45OTIgMCAwMS0xLjQ4Ny0yLjQ5NCAxIDEgMCAxMTEuNzktLjg5Yy4yMzQuNDcuNDg5LjkyOC43NjQgMS4zNzIuNDE3LS45MzQuNzUyLTEuOTEzLjk5Ny0yLjkyN0gzYTEgMSAwIDExMC0yaDNWM2ExIDEgMCAwMTEtMXptNiA2YTEgMSAwIDAxLjg5NC41NTNsMi45OTEgNS45ODJhLjg2OS44NjkgMCAwMS4wMi4wMzdsLjk5IDEuOThhMSAxIDAgMTEtMS43OS44OTVMMTUuMzgzIDE2aC00Ljc2NGwtLjcyNCAxLjQ0N2ExIDEgMCAxMS0xLjc4OC0uODk0bC45OS0xLjk4LjAxOS0uMDM4IDIuOTktNS45ODJBMSAxIDAgMDExMyA4em0tMS4zODIgNmgyLjc2NEwxMyAxMS4yMzYgMTEuNjE4IDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVHJhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk05IDJhMSAxIDAgMDAtLjg5NC41NTNMNy4zODIgNEg0YTEgMSAwIDAwMCAydjEwYTIgMiAwIDAwMiAyaDhhMiAyIDAgMDAyLTJWNmExIDEgMCAxMDAtMmgtMy4zODJsLS43MjQtMS40NDdBMSAxIDAgMDAxMSAySDl6TTcgOGExIDEgMCAwMTIgMHY2YTEgMSAwIDExLTIgMFY4em01LTFhMSAxIDAgMDAtMSAxdjZhMSAxIDAgMTAyIDBWOGExIDEgMCAwMC0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlUcmVuZGluZ0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMiAxM2ExIDEgMCAxMDAgMmg1YTEgMSAwIDAwMS0xVjlhMSAxIDAgMTAtMiAwdjIuNTg2bC00LjI5My00LjI5M2ExIDEgMCAwMC0xLjQxNCAwTDggOS41ODYgMy43MDcgNS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsNSA1YTEgMSAwIDAwMS40MTQgMEwxMSA5LjQxNCAxNC41ODYgMTNIMTJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlUcmVuZGluZ1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTIgN2ExIDEgMCAxMTAtMmg1YTEgMSAwIDAxMSAxdjVhMSAxIDAgMTEtMiAwVjguNDE0bC00LjI5MyA0LjI5M2ExIDEgMCAwMS0xLjQxNCAwTDggMTAuNDE0bC00LjI5MyA0LjI5M2ExIDEgMCAwMS0xLjQxNC0xLjQxNGw1LTVhMSAxIDAgMDExLjQxNCAwTDExIDEwLjU4NiAxNC41ODYgN0gxMnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVRydWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE2LjVhMS41IDEuNSAwIDExLTMgMCAxLjUgMS41IDAgMDEzIDB6TTE1IDE2LjVhMS41IDEuNSAwIDExLTMgMCAxLjUgMS41IDAgMDEzIDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNGExIDEgMCAwMC0xIDF2MTBhMSAxIDAgMDAxIDFoMS4wNWEyLjUgMi41IDAgMDE0LjkgMEgxMGExIDEgMCAwMDEtMVY1YTEgMSAwIDAwLTEtMUgzek0xNCA3YTEgMSAwIDAwLTEgMXY2LjA1QTIuNSAyLjUgMCAwMTE1Ljk1IDE2SDE3YTEgMSAwIDAwMS0xdi01YTEgMSAwIDAwLS4yOTMtLjcwN2wtMi0yQTEgMSAwIDAwMTUgN2gtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyAxN2ExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpNNi4yOTMgNi43MDdhMSAxIDAgMDEwLTEuNDE0bDMtM2ExIDEgMCAwMTEuNDE0IDBsMyAzYTEgMSAwIDAxLTEuNDE0IDEuNDE0TDExIDUuNDE0VjEzYTEgMSAwIDExLTIgMFY1LjQxNEw3LjcwNyA2LjcwN2ExIDEgMCAwMS0xLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVXNlckFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA5YTMgMyAwIDEwMC02IDMgMyAwIDAwMCA2ek04IDExYTYgNiAwIDAxNiA2SDJhNiA2IDAgMDE2LTZ6TTE2IDdhMSAxIDAgMTAtMiAwdjFoLTFhMSAxIDAgMTAwIDJoMXYxYTEgMSAwIDEwMiAwdi0xaDFhMSAxIDAgMTAwLTJoLTFWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVXNlckNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDEwYTggOCAwIDExLTE2IDAgOCA4IDAgMDExNiAwem0tNi0zYTIgMiAwIDExLTQgMCAyIDIgMCAwMTQgMHptLTIgNGE1IDUgMCAwMC00LjU0NiAyLjkxNkE1Ljk4NiA1Ljk4NiAwIDAwMTAgMTZhNS45ODYgNS45ODYgMCAwMDQuNTQ2LTIuMDg0QTUgNSAwIDAwMTAgMTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlVc2VyR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDZhMyAzIDAgMTEtNiAwIDMgMyAwIDAxNiAwek0xOCA4YTIgMiAwIDExLTQgMCAyIDIgMCAwMTQgMHpNMTQgMTVhNCA0IDAgMDAtOCAwdjNoOHYtM3pNNiA4YTIgMiAwIDExLTQgMCAyIDIgMCAwMTQgMHpNMTYgMTh2LTNhNS45NzIgNS45NzIgMCAwMC0uNzUtMi45MDZBMy4wMDUgMy4wMDUgMCAwMTE5IDE1djNoLTN6TTQuNzUgMTIuMDk0QTUuOTczIDUuOTczIDAgMDA0IDE1djNIMXYtM2EzIDMgMCAwMTMuNzUtMi45MDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVVzZXJSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDZhMyAzIDAgMTEtNiAwIDMgMyAwIDAxNiAwek0xNCAxN2E2IDYgMCAwMC0xMiAwaDEyek0xMyA4YTEgMSAwIDEwMCAyaDRhMSAxIDAgMTAwLTJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCA5YTMgMyAwIDEwMC02IDMgMyAwIDAwMCA2em0tNyA5YTcgNyAwIDExMTQgMEgzelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVXNlcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNmEzIDMgMCAxMS02IDAgMyAzIDAgMDE2IDB6TTE3IDZhMyAzIDAgMTEtNiAwIDMgMyAwIDAxNiAwek0xMi45MyAxN2MuMDQ2LS4zMjcuMDctLjY2LjA3LTFhNi45NyA2Ljk3IDAgMDAtMS41LTQuMzNBNSA1IDAgMDExOSAxNnYxaC02LjA3ek02IDExYTUgNSAwIDAxNSA1djFIMXYtMWE1IDUgMCAwMTUtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVmFyaWFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00LjY0OSAzLjA4NEExIDEgMCAwMTUuMTYzIDQuNCAxMy45NSAxMy45NSAwIDAwNCAxMGMwIDEuOTkzLjQxNiAzLjg4NiAxLjE2NCA1LjZhMSAxIDAgMDEtMS44MzIuOEExNS45NSAxNS45NSAwIDAxMiAxMGMwLTIuMjc0LjQ3NS00LjQ0IDEuMzMyLTYuNGExIDEgMCAwMTEuMzE3LS41MTZ6TTEyLjk2IDdhMyAzIDAgMDAtMi4zNDIgMS4xMjZsLS4zMjguNDEtLjExMS0uMjc5QTIgMiAwIDAwOC4zMjMgN0g4YTEgMSAwIDAwMCAyaC4zMjNsLjUzMiAxLjMzLTEuMDM1IDEuMjk1YTEgMSAwIDAxLS43ODEuMzc1SDdhMSAxIDAgMTAwIDJoLjAzOWEzIDMgMCAwMDIuMzQyLTEuMTI2bC4zMjgtLjQxLjExMS4yNzlBMiAyIDAgMDAxMS42NzcgMTRIMTJhMSAxIDAgMTAwLTJoLS4zMjNsLS41MzItMS4zMyAxLjAzNS0xLjI5NUExIDEgMCAwMTEyLjk2MSA5SDEzYTEgMSAwIDEwMC0yaC0uMDM5em0xLjg3NC0yLjZhMSAxIDAgMDExLjgzMy0uOEExNS45NSAxNS45NSAwIDAxMTggMTBjMCAyLjI3NC0uNDc1IDQuNDQtMS4zMzIgNi40YTEgMSAwIDExLTEuODMyLS44QTEzLjk0OSAxMy45NDkgMCAwMDE2IDEwYzAtMS45OTMtLjQxNi0zLjg4Ni0xLjE2NS01LjZ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlWaWRlb0NhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA2YTIgMiAwIDAxMi0yaDZhMiAyIDAgMDEyIDJ2OGEyIDIgMCAwMS0yIDJINGEyIDIgMCAwMS0yLTJWNnpNMTQuNTUzIDcuMTA2QTEgMSAwIDAwMTQgOHY0YTEgMSAwIDAwLjU1My44OTRsMiAxQTEgMSAwIDAwMTggMTNWN2ExIDEgMCAwMC0xLjQ0Ny0uODk0bC0yIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVZpZXdCb2FyZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNGExIDEgMCAwMTEtMWgyYTEgMSAwIDAxMSAxdjEyYTEgMSAwIDAxLTEgMUgzYTEgMSAwIDAxLTEtMVY0ek04IDRhMSAxIDAgMDExLTFoMmExIDEgMCAwMTEgMXYxMmExIDEgMCAwMS0xIDFIOWExIDEgMCAwMS0xLTFWNHpNMTUgM2ExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMmExIDEgMCAwMDEtMVY0YTEgMSAwIDAwLTEtMWgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVmlld0dyaWRBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgM2EyIDIgMCAwMC0yIDJ2MmEyIDIgMCAwMDIgMmgyYTIgMiAwIDAwMi0yVjVhMiAyIDAgMDAtMi0ySDV6TTUgMTFhMiAyIDAgMDAtMiAydjJhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMnYtMmEyIDIgMCAwMC0yLTJINXpNMTEgNWEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAyaC0yYTIgMiAwIDAxLTItMlY1ek0xNCAxMWExIDEgMCAwMTEgMXYxaDFhMSAxIDAgMTEwIDJoLTF2MWExIDEgMCAxMS0yIDB2LTFoLTFhMSAxIDAgMTEwLTJoMXYtMWExIDEgMCAwMTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVmlld0dyaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgM2EyIDIgMCAwMC0yIDJ2MmEyIDIgMCAwMDIgMmgyYTIgMiAwIDAwMi0yVjVhMiAyIDAgMDAtMi0ySDV6TTUgMTFhMiAyIDAgMDAtMiAydjJhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMnYtMmEyIDIgMCAwMC0yLTJINXpNMTEgNWEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAyaC0yYTIgMiAwIDAxLTItMlY1ek0xMSAxM2EyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAyaC0yYTIgMiAwIDAxLTItMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVmlld0xpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zIDRhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6bTAgNGExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXptMCA0YTEgMSAwIDAxMS0xaDEyYTEgMSAwIDExMCAySDRhMSAxIDAgMDEtMS0xem0wIDRhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlWb2x1bWVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk05LjM4MyAzLjA3NkExIDEgMCAwMTEwIDR2MTJhMSAxIDAgMDEtMS43MDcuNzA3TDQuNTg2IDEzSDJhMSAxIDAgMDEtMS0xVjhhMSAxIDAgMDExLTFoMi41ODZsMy43MDctMy43MDdhMSAxIDAgMDExLjA5LS4yMTd6TTEyLjI5MyA3LjI5M2ExIDEgMCAwMTEuNDE0IDBMMTUgOC41ODZsMS4yOTMtMS4yOTNhMSAxIDAgMTExLjQxNCAxLjQxNEwxNi40MTQgMTBsMS4yOTMgMS4yOTNhMSAxIDAgMDEtMS40MTQgMS40MTRMMTUgMTEuNDE0bC0xLjI5MyAxLjI5M2ExIDEgMCAwMS0xLjQxNC0xLjQxNEwxMy41ODYgMTBsLTEuMjkzLTEuMjkzYTEgMSAwIDAxMC0xLjQxNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVZvbHVtZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOS4zODMgMy4wNzZBMSAxIDAgMDExMCA0djEyYTEgMSAwIDAxLTEuNzA3LjcwN0w0LjU4NiAxM0gyYTEgMSAwIDAxLTEtMVY4YTEgMSAwIDAxMS0xaDIuNTg2bDMuNzA3LTMuNzA3YTEgMSAwIDAxMS4wOS0uMjE3ek0xNC42NTcgMi45MjlhMSAxIDAgMDExLjQxNCAwQTkuOTcyIDkuOTcyIDAgMDExOSAxMGE5Ljk3MiA5Ljk3MiAwIDAxLTIuOTI5IDcuMDcxIDEgMSAwIDAxLTEuNDE0LTEuNDE0QTcuOTcxIDcuOTcxIDAgMDAxNyAxMGMwLTIuMjEtLjg5NC00LjIwOC0yLjM0My01LjY1N2ExIDEgMCAwMTAtMS40MTR6bS0yLjgyOSAyLjgyOGExIDEgMCAwMTEuNDE1IDBBNS45ODMgNS45ODMgMCAwMTE1IDEwYTUuOTg0IDUuOTg0IDAgMDEtMS43NTcgNC4yNDMgMSAxIDAgMDEtMS40MTUtMS40MTVBMy45ODQgMy45ODQgMCAwMDEzIDEwYTMuOTgzIDMuOTgzIDAgMDAtMS4xNzItMi44MjggMSAxIDAgMDEwLTEuNDE1elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpV2lmaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE3Ljc3OCA4LjIyMmMtNC4yOTYtNC4yOTYtMTEuMjYtNC4yOTYtMTUuNTU2IDBBMSAxIDAgMDEuODA4IDYuODA4YzUuMDc2LTUuMDc3IDEzLjMwOC01LjA3NyAxOC4zODQgMGExIDEgMCAwMS0xLjQxNCAxLjQxNHpNMTQuOTUgMTEuMDVhNyA3IDAgMDAtOS45IDAgMSAxIDAgMDEtMS40MTQtMS40MTQgOSA5IDAgMDExMi43MjggMCAxIDEgMCAwMS0xLjQxNCAxLjQxNHpNMTIuMTIgMTMuODhhMyAzIDAgMDAtNC4yNDIgMCAxIDEgMCAwMS0xLjQxNS0xLjQxNSA1IDUgMCAwMTcuMDcyIDAgMSAxIDAgMDEtMS40MTUgMS40MTV6TTkgMTZhMSAxIDAgMDExLTFoLjAxYTEgMSAwIDExMCAySDEwYTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVhDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2ek04LjcwNyA3LjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNEw4LjU4NiAxMGwtMS4yOTMgMS4yOTNhMSAxIDAgMTAxLjQxNCAxLjQxNEwxMCAxMS40MTRsMS4yOTMgMS4yOTNhMSAxIDAgMDAxLjQxNC0xLjQxNEwxMS40MTQgMTBsMS4yOTMtMS4yOTNhMSAxIDAgMDAtMS40MTQtMS40MTRMMTAgOC41ODYgOC43MDcgNy4yOTN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlYIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNC4yOTMgNC4yOTNhMSAxIDAgMDExLjQxNCAwTDEwIDguNTg2bDQuMjkzLTQuMjkzYTEgMSAwIDExMS40MTQgMS40MTRMMTEuNDE0IDEwbDQuMjkzIDQuMjkzYTEgMSAwIDAxLTEuNDE0IDEuNDE0TDEwIDExLjQxNGwtNC4yOTMgNC4yOTNhMSAxIDAgMDEtMS40MTQtMS40MTRMOC41ODYgMTAgNC4yOTMgNS43MDdhMSAxIDAgMDEwLTEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpWm9vbUluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDhhMSAxIDAgMDExLTFoMVY2YTEgMSAwIDAxMiAwdjFoMWExIDEgMCAxMTAgMkg5djFhMSAxIDAgMTEtMiAwVjlINmExIDEgMCAwMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDhhNiA2IDAgMTExMC44OSAzLjQ3Nmw0LjgxNyA0LjgxN2ExIDEgMCAwMS0xLjQxNCAxLjQxNGwtNC44MTYtNC44MTZBNiA2IDAgMDEyIDh6bTYtNGE0IDQgMCAxMDAgOCA0IDQgMCAwMDAtOHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVpvb21PdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04IDRhNCA0IDAgMTAwIDggNCA0IDAgMDAwLTh6TTIgOGE2IDYgMCAxMTEwLjg5IDMuNDc2bDQuODE3IDQuODE3YTEgMSAwIDAxLTEuNDE0IDEuNDE0bC00LjgxNi00LjgxNkE2IDYgMCAwMTIgOHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01IDhhMSAxIDAgMDExLTFoNGExIDEgMCAxMTAgMkg2YTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBY2FkZW1pY0NhcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTRsOS01LTktNS05IDUgOSA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNGw2LjE2LTMuNDIyYTEyLjA4MyAxMi4wODMgMCAwMS42NjUgNi40NzlBMTEuOTUyIDExLjk1MiAwIDAwMTIgMjAuMDU1YTExLjk1MiAxMS45NTIgMCAwMC02LjgyNC0yLjk5OCAxMi4wNzggMTIuMDc4IDAgMDEuNjY1LTYuNDc5TDEyIDE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiAxNGw5LTUtOS01LTkgNSA5IDV6bTAgMGw2LjE2LTMuNDIyYTEyLjA4MyAxMi4wODMgMCAwMS42NjUgNi40NzlBMTEuOTUyIDExLjk1MiAwIDAwMTIgMjAuMDU1YTExLjk1MiAxMS45NTIgMCAwMC02LjgyNC0yLjk5OCAxMi4wNzggMTIuMDc4IDAgMDEuNjY1LTYuNDc5TDEyIDE0em0tNCA2di03LjVsNC0yLjIyMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQWRqdXN0bWVudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDZWNG0wIDJhMiAyIDAgMTAwIDRtMC00YTIgMiAwIDExMCA0bS02IDhhMiAyIDAgMTAwLTRtMCA0YTIgMiAwIDExMC00bTAgNHYybTAtNlY0bTYgNnYxMG02LTJhMiAyIDAgMTAwLTRtMCA0YTIgMiAwIDExMC00bTAgNHYybTAtNlY0XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBbm5vdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDhoMTBNNyAxMmg0bTEgOGwtNC00SDVhMiAyIDAgMDEtMi0yVjZhMiAyIDAgMDEyLTJoMTRhMiAyIDAgMDEyIDJ2OGEyIDIgMCAwMS0yIDJoLTNsLTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTUgOGgxNE01IDhhMiAyIDAgMTEwLTRoMTRhMiAyIDAgMTEwIDRNNSA4djEwYTIgMiAwIDAwMiAyaDEwYTIgMiAwIDAwMi0yVjhtLTkgNGg0XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd0NpcmNsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDEzbC0zIDNtMCAwbC0zLTNtMyAzVjhtMCAxM2E5IDkgMCAxMTAtMTggOSA5IDAgMDEwIDE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dDaXJjbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMSAxNWwtMy0zbTAgMGwzLTNtLTMgM2g4TTMgMTJhOSA5IDAgMTExOCAwIDkgOSAwIDAxLTE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd0NpcmNsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMyA5bDMgM20wIDBsLTMgM20zLTNIOG0xMyAwYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dDaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxMWwzLTNtMCAwbDMgM20tMy0zdjhtMC0xM2E5IDkgMCAxMTAgMTggOSA5IDAgMDEwLTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xOSAxNGwtNyA3bTAgMGwtNy03bTcgN1YzXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEwIDE5bC03LTdtMCAwbDctN20tNyA3aDE4XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd05hcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE2IDE3bC00IDRtMCAwbC00LTRtNCA0VjNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFycm93TmFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNyAxNmwtNC00bTAgMGw0LTRtLTQgNGgxOFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dOYXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcgOGw0IDRtMCAwbC00IDRtNC00SDNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFycm93TmFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggN2w0LTRtMCAwbDQgNG0tNC00djE4XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNCA1bDcgN20wIDBsLTcgN203LTdIM1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dTbURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE3IDEzbC01IDVtMCAwbC01LTVtNSA1VjZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFycm93U21MZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMSAxN2wtNS01bTAgMGw1LTVtLTUgNWgxMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dTbVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMyA3bDUgNW0wIDBsLTUgNW01LTVINlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dTbVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDExbDUtNW0wIDBsNSA1bS01LTV2MTJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTUgMTBsNy03bTAgMGw3IDdtLTctN3YxOFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dzRXhwYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00IDhWNG0wIDBoNE00IDRsNSA1bTExLTFWNG0wIDBoLTRtNCAwbC01IDVNNCAxNnY0bTAgMGg0bS00IDBsNS01bTExIDVsLTUtNW01IDV2LTRtMCA0aC00XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBdFN5bWJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTYgMTJhNCA0IDAgMTAtOCAwIDQgNCAwIDAwOCAwem0wIDB2MS41YTIuNSAyLjUgMCAwMDUgMFYxMmE5IDkgMCAxMC05IDltNC41LTEuMjA2YTguOTU5IDguOTU5IDAgMDEtNC41IDEuMjA3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVCYWNrc3BhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDE0bDItMm0wIDBsMi0ybS0yIDJsLTItMm0yIDJsMiAyTTMgMTJsNi40MTQgNi40MTRhMiAyIDAgMDAxLjQxNC41ODZIMTlhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJoLTguMTcyYTIgMiAwIDAwLTEuNDE0LjU4NkwzIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQmFkZ2VDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxMmwyIDIgNC00TTcuODM1IDQuNjk3YTMuNDIgMy40MiAwIDAwMS45NDYtLjgwNiAzLjQyIDMuNDIgMCAwMTQuNDM4IDAgMy40MiAzLjQyIDAgMDAxLjk0Ni44MDYgMy40MiAzLjQyIDAgMDEzLjEzOCAzLjEzOCAzLjQyIDMuNDIgMCAwMC44MDYgMS45NDYgMy40MiAzLjQyIDAgMDEwIDQuNDM4IDMuNDIgMy40MiAwIDAwLS44MDYgMS45NDYgMy40MiAzLjQyIDAgMDEtMy4xMzggMy4xMzggMy40MiAzLjQyIDAgMDAtMS45NDYuODA2IDMuNDIgMy40MiAwIDAxLTQuNDM4IDAgMy40MiAzLjQyIDAgMDAtMS45NDYtLjgwNiAzLjQyIDMuNDIgMCAwMS0zLjEzOC0zLjEzOCAzLjQyIDMuNDIgMCAwMC0uODA2LTEuOTQ2IDMuNDIgMy40MiAwIDAxMC00LjQzOCAzLjQyIDMuNDIgMCAwMC44MDYtMS45NDYgMy40MiAzLjQyIDAgMDEzLjEzOC0zLjEzOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUJhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTguMzY0IDE4LjM2NEE5IDkgMCAwMDUuNjM2IDUuNjM2bTEyLjcyOCAxMi43MjhBOSA5IDAgMDE1LjYzNiA1LjYzNm0xMi43MjggMTIuNzI4TDUuNjM2IDUuNjM2XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVCZWFrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE5LjQyOCAxNS40MjhhMiAyIDAgMDAtMS4wMjItLjU0N2wtMi4zODctLjQ3N2E2IDYgMCAwMC0zLjg2LjUxN2wtLjMxOC4xNThhNiA2IDAgMDEtMy44Ni41MTdMNi4wNSAxNS4yMWEyIDIgMCAwMC0xLjgwNi41NDdNOCA0aDhsLTEgMXY1LjE3MmEyIDIgMCAwMC41ODYgMS40MTRsNSA1YzEuMjYgMS4yNi4zNjcgMy40MTQtMS40MTUgMy40MTRINC44MjhjLTEuNzgyIDAtMi42NzQtMi4xNTQtMS40MTQtMy40MTRsNS01QTIgMiAwIDAwOSAxMC4xNzJWNUw4IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVCZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNSAxN2g1bC0xLjQwNS0xLjQwNUEyLjAzMiAyLjAzMiAwIDAxMTggMTQuMTU4VjExYTYuMDAyIDYuMDAyIDAgMDAtNC01LjY1OVY1YTIgMiAwIDEwLTQgMHYuMzQxQzcuNjcgNi4xNjUgNiA4LjM4OCA2IDExdjMuMTU5YzAgLjUzOC0uMjE0IDEuMDU1LS41OTUgMS40MzZMNCAxN2g1bTYgMHYxYTMgMyAwIDExLTYgMHYtMW02IDBIOVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQm9va09wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDYuMjUzdjEzbTAtMTNDMTAuODMyIDUuNDc3IDkuMjQ2IDUgNy41IDVTNC4xNjggNS40NzcgMyA2LjI1M3YxM0M0LjE2OCAxOC40NzcgNS43NTQgMTggNy41IDE4czMuMzMyLjQ3NyA0LjUgMS4yNTNtMC0xM0MxMy4xNjggNS40NzcgMTQuNzU0IDUgMTYuNSA1YzEuNzQ3IDAgMy4zMzIuNDc3IDQuNSAxLjI1M3YxM0MxOS44MzIgMTguNDc3IDE4LjI0NyAxOCAxNi41IDE4Yy0xLjc0NiAwLTMuMzMyLjQ3Ny00LjUgMS4yNTNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUJvb2ttYXJrQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNiA0djEybC00LTItNCAyVjRNNiAyMGgxMmEyIDIgMCAwMDItMlY2YTIgMiAwIDAwLTItMkg2YTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUJvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk01IDVhMiAyIDAgMDEyLTJoMTBhMiAyIDAgMDEyIDJ2MTZsLTctMy41TDUgMjFWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUJyaWVmY2FzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMjEgMTMuMjU1QTIzLjkzMSAyMy45MzEgMCAwMTEyIDE1Yy0zLjE4MyAwLTYuMjItLjYyLTktMS43NDVNMTYgNlY0YTIgMiAwIDAwLTItMmgtNGEyIDIgMCAwMC0yIDJ2Mm00IDZoLjAxTTUgMjBoMTRhMiAyIDAgMDAyLTJWOGEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0yMSAxNS41NDZjLS41MjMgMC0xLjA0Ni4xNTEtMS41LjQ1NGEyLjcwNCAyLjcwNCAwIDAxLTMgMCAyLjcwNCAyLjcwNCAwIDAwLTMgMCAyLjcwNCAyLjcwNCAwIDAxLTMgMCAyLjcwNCAyLjcwNCAwIDAwLTMgMCAyLjcwNCAyLjcwNCAwIDAxLTMgMCAyLjcwMSAyLjcwMSAwIDAwLTEuNS0uNDU0TTkgNnYybTMtMnYybTMtMnYyTTkgM2guMDFNMTIgM2guMDFNMTUgM2guMDFNMjEgMjF2LTdhMiAyIDAgMDAtMi0ySDVhMiAyIDAgMDAtMiAydjdoMTh6bS0zLTl2LTJhMiAyIDAgMDAtMi0ySDhhMiAyIDAgMDAtMiAydjJoMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDYWxjdWxhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDdoNm0wIDEwdi0zbS0zIDNoLjAxTTkgMTdoLjAxTTkgMTRoLjAxTTEyIDE0aC4wMU0xNSAxMWguMDFNMTIgMTFoLjAxTTkgMTFoLjAxTTcgMjFoMTBhMiAyIDAgMDAyLTJWNWEyIDIgMCAwMC0yLTJIN2EyIDIgMCAwMC0yIDJ2MTRhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDYWxlbmRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOCA3VjNtOCA0VjNtLTkgOGgxME01IDIxaDE0YTIgMiAwIDAwMi0yVjdhMiAyIDAgMDAtMi0ySDVhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDlhMiAyIDAgMDEyLTJoLjkzYTIgMiAwIDAwMS42NjQtLjg5bC44MTItMS4yMkEyIDIgMCAwMTEwLjA3IDRoMy44NmEyIDIgMCAwMTEuNjY0Ljg5bC44MTIgMS4yMkEyIDIgMCAwMDE4LjA3IDdIMTlhMiAyIDAgMDEyIDJ2OWEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJWOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTUgMTNhMyAzIDAgMTEtNiAwIDMgMyAwIDAxNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2FzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcgOVY3YTIgMiAwIDAwLTItMkg1YTIgMiAwIDAwLTIgMnY2YTIgMiAwIDAwMiAyaDJtMiA0aDEwYTIgMiAwIDAwMi0ydi02YTIgMiAwIDAwLTItMkg5YTIgMiAwIDAwLTIgMnY2YTIgMiAwIDAwMiAyem03LTVhMiAyIDAgMTEtNCAwIDIgMiAwIDAxNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hhcnRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTl2LTZhMiAyIDAgMDAtMi0ySDVhMiAyIDAgMDAtMiAydjZhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMnptMCAwVjlhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMnYxMG0tNiAwYTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJtMCAwVjVhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMnYxNGEyIDIgMCAwMS0yIDJoLTJhMiAyIDAgMDEtMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hhcnRQaWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTExIDMuMDU1QTkuMDAxIDkuMDAxIDAgMTAyMC45NDUgMTNIMTFWMy4wNTV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIwLjQ4OCA5SDE1VjMuNTEyQTkuMDI1IDkuMDI1IDAgMDEyMC40ODggOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNoYXJ0U3F1YXJlQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNiA4djhtLTQtNXY1bS00LTJ2Mm0tMiA0aDEyYTIgMiAwIDAwMi0yVjZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hhdEFsdDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE3IDhoMmEyIDIgMCAwMTIgMnY2YTIgMiAwIDAxLTIgMmgtMnY0bC00LTRIOWExLjk5NCAxLjk5NCAwIDAxLTEuNDE0LS41ODZtMCAwTDExIDE0aDRhMiAyIDAgMDAyLTJWNmEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2NmEyIDIgMCAwMDIgMmgydjRsLjU4Ni0uNTg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hhdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOCAxMGguMDFNMTIgMTBoLjAxTTE2IDEwaC4wMU05IDE2SDVhMiAyIDAgMDEtMi0yVjZhMiAyIDAgMDEyLTJoMTRhMiAyIDAgMDEyIDJ2OGEyIDIgMCAwMS0yIDJoLTVsLTUgNXYtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNoYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggMTJoLjAxTTEyIDEyaC4wMU0xNiAxMmguMDFNMjEgMTJjMCA0LjQxOC00LjAzIDgtOSA4YTkuODYzIDkuODYzIDAgMDEtNC4yNTUtLjk0OUwzIDIwbDEuMzk1LTMuNzJDMy41MTIgMTUuMDQyIDMgMTMuNTc0IDMgMTJjMC00LjQxOCA0LjAzLTggOS04czkgMy41ODIgOSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hlY2tDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTJsMiAyIDQtNG02IDJhOSA5IDAgMTEtMTggMCA5IDkgMCAwMTE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNSAxM2w0IDRMMTkgN1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hldnJvbkRvdWJsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE5IDEzbC03IDctNy03bTE0LThsLTcgNy03LTdcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNoZXZyb25Eb3VibGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMSAxOWwtNy03IDctN204IDE0bC03LTcgNy03XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGV2cm9uRG91YmxlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEzIDVsNyA3LTcgN001IDVsNyA3LTcgN1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hldnJvbkRvdWJsZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk01IDExbDctNyA3IDdNNSAxOWw3LTcgNyA3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGV2cm9uRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTkgOWwtNyA3LTctN1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hldnJvbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDE5bC03LTcgNy03XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGV2cm9uUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgNWw3IDctNyA3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGV2cm9uVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTUgMTVsNy03IDcgN1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAzdjJtNi0ydjJNOSAxOXYybTYtMnYyTTUgOUgzbTIgNkgzbTE4LTZoLTJtMiA2aC0yTTcgMTloMTBhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJIN2EyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJ6TTkgOWg2djZIOVY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2xpcGJvYXJkQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgNUg3YTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMlY3YTIgMiAwIDAwLTItMmgtMk05IDVhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMk05IDVhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMm0tNiA5bDIgMiA0LTRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNsaXBib2FyZENvcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggNUg2YTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMnYtMU04IDVhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMk04IDVhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMm0wIDBoMmEyIDIgMCAwMTIgMnYzbTIgNEgxMG0wIDBsMy0zbS0zIDNsMyAzXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDbGlwYm9hcmRMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDVIN2EyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoMTBhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJoLTJNOSA1YTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJNOSA1YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJtLTMgN2gzbS0zIDRoM20tNi00aC4wMU05IDE2aC4wMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2xpcGJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDVIN2EyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoMTBhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJoLTJNOSA1YTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJNOSA1YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiA4djRsMyAzbTYtM2E5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNsb3VkRG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTcgMTZhNCA0IDAgMDEtLjg4LTcuOTAzQTUgNSAwIDExMTUuOSA2TDE2IDZhNSA1IDAgMDExIDkuOU05IDE5bDMgM20wIDBsMy0zbS0zIDNWMTBcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNsb3VkVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDE2YTQgNCAwIDAxLS44OC03LjkwM0E1IDUgMCAxMTE1LjkgNkwxNiA2YTUgNSAwIDAxMSA5LjlNMTUgMTNsLTMtM20wIDBsLTMgM20zLTN2MTJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDE1YTQgNCAwIDAwNCA0aDlhNSA1IDAgMTAtLjEtOS45OTkgNS4wMDIgNS4wMDIgMCAxMC05Ljc4IDIuMDk2QTQuMDAxIDQuMDAxIDAgMDAzIDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTAgMjBsNC0xNm00IDRsNCA0LTQgNE02IDE2bC00LTQgNC00XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEwLjMyNSA0LjMxN2MuNDI2LTEuNzU2IDIuOTI0LTEuNzU2IDMuMzUgMGExLjcyNCAxLjcyNCAwIDAwMi41NzMgMS4wNjZjMS41NDMtLjk0IDMuMzEuODI2IDIuMzcgMi4zN2ExLjcyNCAxLjcyNCAwIDAwMS4wNjUgMi41NzJjMS43NTYuNDI2IDEuNzU2IDIuOTI0IDAgMy4zNWExLjcyNCAxLjcyNCAwIDAwLTEuMDY2IDIuNTczYy45NCAxLjU0My0uODI2IDMuMzEtMi4zNyAyLjM3YTEuNzI0IDEuNzI0IDAgMDAtMi41NzIgMS4wNjVjLS40MjYgMS43NTYtMi45MjQgMS43NTYtMy4zNSAwYTEuNzI0IDEuNzI0IDAgMDAtMi41NzMtMS4wNjZjLTEuNTQzLjk0LTMuMzEtLjgyNi0yLjM3LTIuMzdhMS43MjQgMS43MjQgMCAwMC0xLjA2NS0yLjU3MmMtMS43NTYtLjQyNi0xLjc1Ni0yLjkyNCAwLTMuMzVhMS43MjQgMS43MjQgMCAwMDEuMDY2LTIuNTczYy0uOTQtMS41NDMuODI2LTMuMzEgMi4zNy0yLjM3Ljk5Ni42MDggMi4yOTYuMDcgMi41NzItMS4wNjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDEyYTMgMyAwIDExLTYgMCAzIDMgMCAwMTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNvbGxlY3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE5IDExSDVtMTQgMGEyIDIgMCAwMTIgMnY2YTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMnYtNmEyIDIgMCAwMTItMm0xNCAwVjlhMiAyIDAgMDAtMi0yTTUgMTFWOWEyIDIgMCAwMTItMm0wIDBWNWEyIDIgMCAwMTItMmg2YTIgMiAwIDAxMiAydjJNNyA3aDEwXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDb2xvclN3YXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNyAyMWE0IDQgMCAwMS00LTRWNWEyIDIgMCAwMTItMmg0YTIgMiAwIDAxMiAydjEyYTQgNCAwIDAxLTQgNHptMCAwaDEyYTIgMiAwIDAwMi0ydi00YTIgMiAwIDAwLTItMmgtMi4zNDNNMTEgNy4zNDNsMS42NTctMS42NTdhMiAyIDAgMDEyLjgyOCAwbDIuODI5IDIuODI5YTIgMiAwIDAxMCAyLjgyOGwtOC40ODYgOC40ODVNNyAxN2guMDFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNyZWRpdENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTMgMTBoMThNNyAxNWgxbTQgMGgxbS03IDRoMTJhMyAzIDAgMDAzLTNWOGEzIDMgMCAwMC0zLTNINmEzIDMgMCAwMC0zIDN2OGEzIDMgMCAwMDMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUN1YmVUcmFuc3BhcmVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTQgMTBsLTIgMW0wIDBsLTItMW0yIDF2Mi41TTIwIDdsLTIgMW0yLTFsLTItMW0yIDF2Mi41TTE0IDRsLTItMS0yIDFNNCA3bDItMU00IDdsMiAxTTQgN3YyLjVNMTIgMjFsLTItMW0yIDFsMi0xbS0yIDF2LTIuNU02IDE4bC0yLTF2LTIuNU0xOCAxOGwyLTF2LTIuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ3ViZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMjAgN2wtOC00LTggNG0xNiAwbC04IDRtOC00djEwbC04IDRtMC0xMEw0IDdtOCA0djEwTTQgN3YxMGw4IDRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUN1cnJlbmN5QmFuZ2xhZGVzaGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTExIDExVjlhMiAyIDAgMDAtMi0ybTIgNHY0YTIgMiAwIDEwNCAwdi0xbS00LTNIOW0yIDBoNG02IDFhOSA5IDAgMTEtMTggMCA5IDkgMCAwMTE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDdXJyZW5jeURvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgOGMtMS42NTcgMC0zIC44OTUtMyAyczEuMzQzIDIgMyAyIDMgLjg5NSAzIDItMS4zNDMgMi0zIDJtMC04YzEuMTEgMCAyLjA4LjQwMiAyLjU5OSAxTTEyIDhWN20wIDF2OG0wIDB2MW0wLTFjLTEuMTEgMC0yLjA4LS40MDItMi41OTktMU0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUN1cnJlbmN5RXVybyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTQuMTIxIDE1LjUzNmMtMS4xNzEgMS45NTItMy4wNyAxLjk1Mi00LjI0MiAwLTEuMTcyLTEuOTUzLTEuMTcyLTUuMTE5IDAtNy4wNzIgMS4xNzEtMS45NTIgMy4wNy0xLjk1MiA0LjI0MiAwTTggMTAuNWg0bS00IDNoNG05LTEuNWE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUN1cnJlbmN5UG91bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDlhMiAyIDAgMTAtNCAwdjVhMiAyIDAgMDEtMiAyaDZtLTYtNGg0bTggMGE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUN1cnJlbmN5UnVwZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgOGg2bS01IDBhMyAzIDAgMTEwIDZIOWwzIDNtLTMtNmg2bTYgMWE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUN1cnJlbmN5WWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDhsMyA1bTAgMGwzLTVtLTMgNXY0bS0zLTVoNm0tNiAzaDZtNi0zYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ3Vyc29yQ2xpY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDE1bC0yIDVMOSA5bDExIDQtNSAyem0wIDBsNSA1TTcuMTg4IDIuMjM5bC43NzcgMi44OTdNNS4xMzYgNy45NjVsLTIuODk4LS43NzdNMTMuOTUgNC4wNWwtMi4xMjIgMi4xMjJtLTUuNjU3IDUuNjU2bC0yLjEyIDIuMTIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEYXRhYmFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCA3djEwYzAgMi4yMSAzLjU4MiA0IDggNHM4LTEuNzkgOC00VjdNNCA3YzAgMi4yMSAzLjU4MiA0IDggNHM4LTEuNzkgOC00TTQgN2MwLTIuMjEgMy41ODItNCA4LTRzOCAxLjc5IDggNG0wIDVjMCAyLjIxLTMuNTgyIDQtOCA0cy04LTEuNzktOC00XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEZXNrdG9wQ29tcHV0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkuNzUgMTdMOSAyMGwtMSAxaDhsLTEtMS0uNzUtM00zIDEzaDE4TTUgMTdoMTRhMiAyIDAgMDAyLTJWNWEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEZXZpY2VNb2JpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDE4aC4wMU04IDIxaDhhMiAyIDAgMDAyLTJWNWEyIDIgMCAwMC0yLTJIOGEyIDIgMCAwMC0yIDJ2MTRhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEZXZpY2VUYWJsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDE4aC4wMU03IDIxaDEwYTIgMiAwIDAwMi0yVjVhMiAyIDAgMDAtMi0ySDdhMiAyIDAgMDAtMiAydjE0YTIgMiAwIDAwMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRG9jdW1lbnRBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTNoNm0tMy0zdjZtNSA1SDdhMiAyIDAgMDEtMi0yVjVhMiAyIDAgMDEyLTJoNS41ODZhMSAxIDAgMDEuNzA3LjI5M2w1LjQxNCA1LjQxNGExIDEgMCAwMS4yOTMuNzA3VjE5YTIgMiAwIDAxLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZURvY3VtZW50RG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDEwdjZtMCAwbC0zLTNtMyAzbDMtM20yIDhIN2EyIDIgMCAwMS0yLTJWNWEyIDIgMCAwMTItMmg1LjU4NmExIDEgMCAwMS43MDcuMjkzbDUuNDE0IDUuNDE0YTEgMSAwIDAxLjI5My43MDdWMTlhMiAyIDAgMDEtMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRG9jdW1lbnREdXBsaWNhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggN3Y4YTIgMiAwIDAwMiAyaDZNOCA3VjVhMiAyIDAgMDEyLTJoNC41ODZhMSAxIDAgMDEuNzA3LjI5M2w0LjQxNCA0LjQxNGExIDEgMCAwMS4yOTMuNzA3VjE1YTIgMiAwIDAxLTIgMmgtMk04IDdINmEyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJoOGEyIDIgMCAwMDItMnYtMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRG9jdW1lbnRSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTNoNm0yIDhIN2EyIDIgMCAwMS0yLTJWNWEyIDIgMCAwMTItMmg1LjU4NmExIDEgMCAwMS43MDcuMjkzbDUuNDE0IDUuNDE0YTEgMSAwIDAxLjI5My43MDdWMTlhMiAyIDAgMDEtMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRG9jdW1lbnRSZXBvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTd2LTJtMyAydi00bTMgNHYtNm0yIDEwSDdhMiAyIDAgMDEtMi0yVjVhMiAyIDAgMDEyLTJoNS41ODZhMSAxIDAgMDEuNzA3LjI5M2w1LjQxNCA1LjQxNGExIDEgMCAwMS4yOTMuNzA3VjE5YTIgMiAwIDAxLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZURvY3VtZW50U2VhcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMCAyMWg3YTIgMiAwIDAwMi0yVjkuNDE0YTEgMSAwIDAwLS4yOTMtLjcwN2wtNS40MTQtNS40MTRBMSAxIDAgMDAxMi41ODYgM0g3YTIgMiAwIDAwLTIgMnYxMW0wIDVsNC44NzktNC44NzltMCAwYTMgMyAwIDEwNC4yNDMtNC4yNDIgMyAzIDAgMDAtNC4yNDMgNC4yNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEb2N1bWVudFRleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTJoNm0tNiA0aDZtMiA1SDdhMiAyIDAgMDEtMi0yVjVhMiAyIDAgMDEyLTJoNS41ODZhMSAxIDAgMDEuNzA3LjI5M2w1LjQxNCA1LjQxNGExIDEgMCAwMS4yOTMuNzA3VjE5YTIgMiAwIDAxLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZURvY3VtZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDIxaDEwYTIgMiAwIDAwMi0yVjkuNDE0YTEgMSAwIDAwLS4yOTMtLjcwN2wtNS40MTQtNS40MTRBMSAxIDAgMDAxMi41ODYgM0g3YTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZURvdHNDaXJjbGVIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04IDEyaC4wMU0xMiAxMmguMDFNMTYgMTJoLjAxTTIxIDEyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRG90c0hvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTUgMTJoLjAxTTEyIDEyaC4wMU0xOSAxMmguMDFNNiAxMmExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6bTcgMGExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6bTcgMGExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEb3RzVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDV2LjAxTTEyIDEydi4wMU0xMiAxOXYuMDFNMTIgNmExIDEgMCAxMTAtMiAxIDEgMCAwMTAgMnptMCA3YTEgMSAwIDExMC0yIDEgMSAwIDAxMCAyem0wIDdhMSAxIDAgMTEwLTIgMSAxIDAgMDEwIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCAxNnYxYTMgMyAwIDAwMyAzaDEwYTMgMyAwIDAwMy0zdi0xbS00LTRsLTQgNG0wIDBsLTQtNG00IDRWNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRHVwbGljYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04IDE2SDZhMiAyIDAgMDEtMi0yVjZhMiAyIDAgMDEyLTJoOGEyIDIgMCAwMTIgMnYybS02IDEyaDhhMiAyIDAgMDAyLTJ2LThhMiAyIDAgMDAtMi0yaC04YTIgMiAwIDAwLTIgMnY4YTIgMiAwIDAwMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRW1vamlIYXBweSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTQuODI4IDE0LjgyOGE0IDQgMCAwMS01LjY1NiAwTTkgMTBoLjAxTTE1IDEwaC4wMU0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUVtb2ppU2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05LjE3MiAxNi4xNzJhNCA0IDAgMDE1LjY1NiAwTTkgMTBoLjAxTTE1IDEwaC4wMU0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUV4Y2xhbWF0aW9uQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiA4djRtMCA0aC4wMU0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiA5djJtMCA0aC4wMW0tNi45MzggNGgxMy44NTZjMS41NCAwIDIuNTAyLTEuNjY3IDEuNzMyLTNMMTMuNzMyIDRjLS43Ny0xLjMzMy0yLjY5NC0xLjMzMy0zLjQ2NCAwTDMuMzQgMTZjLS43NyAxLjMzMy4xOTIgMyAxLjczMiAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRXh0ZXJuYWxMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMCA2SDZhMiAyIDAgMDAtMiAydjEwYTIgMiAwIDAwMiAyaDEwYTIgMiAwIDAwMi0ydi00TTE0IDRoNm0wIDB2Nm0wLTZMMTAgMTRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUV5ZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTMuODc1IDE4LjgyNUExMC4wNSAxMC4wNSAwIDAxMTIgMTljLTQuNDc4IDAtOC4yNjgtMi45NDMtOS41NDMtN2E5Ljk3IDkuOTcgMCAwMTEuNTYzLTMuMDI5bTUuODU4LjkwOGEzIDMgMCAxMTQuMjQzIDQuMjQzTTkuODc4IDkuODc4bDQuMjQyIDQuMjQyTTkuODggOS44OGwtMy4yOS0zLjI5bTcuNTMyIDcuNTMybDMuMjkgMy4yOU0zIDNsMy41OSAzLjU5bTAgMEE5Ljk1MyA5Ljk1MyAwIDAxMTIgNWM0LjQ3OCAwIDguMjY4IDIuOTQzIDkuNTQzIDdhMTAuMDI1IDEwLjAyNSAwIDAxLTQuMTMyIDUuNDExbTAgMEwyMSAyMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRXllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNSAxMmEzIDMgMCAxMS02IDAgMyAzIDAgMDE2IDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIuNDU4IDEyQzMuNzMyIDcuOTQzIDcuNTIzIDUgMTIgNWM0LjQ3OCAwIDguMjY4IDIuOTQzIDkuNTQyIDctMS4yNzQgNC4wNTctNS4wNjQgNy05LjU0MiA3LTQuNDc3IDAtOC4yNjgtMi45NDMtOS41NDItN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUZhc3RGb3J3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMS45MzMgMTIuOGExIDEgMCAwMDAtMS42TDYuNiA3LjJBMSAxIDAgMDA1IDh2OGExIDEgMCAwMDEuNi44bDUuMzMzLTR6TTE5LjkzMyAxMi44YTEgMSAwIDAwMC0xLjZsLTUuMzMzLTRBMSAxIDAgMDAxMyA4djhhMSAxIDAgMDAxLjYuOGw1LjMzMy00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRmlsbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNyA0djE2TTE3IDR2MTZNMyA4aDRtMTAgMGg0TTMgMTJoMThNMyAxNmg0bTEwIDBoNE00IDIwaDE2YTEgMSAwIDAwMS0xVjVhMSAxIDAgMDAtMS0xSDRhMSAxIDAgMDAtMSAxdjE0YTEgMSAwIDAwMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRmlsdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDRhMSAxIDAgMDExLTFoMTZhMSAxIDAgMDExIDF2Mi41ODZhMSAxIDAgMDEtLjI5My43MDdsLTYuNDE0IDYuNDE0YTEgMSAwIDAwLS4yOTMuNzA3VjE3bC00IDR2LTYuNTg2YTEgMSAwIDAwLS4yOTMtLjcwN0wzLjI5MyA3LjI5M0ExIDEgMCAwMTMgNi41ODZWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUZpbmdlclByaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiAxMWMwIDMuNTE3LTEuMDA5IDYuNzk5LTIuNzUzIDkuNTcxbS0zLjQ0LTIuMDRsLjA1NC0uMDlBMTMuOTE2IDEzLjkxNiAwIDAwOCAxMWE0IDQgMCAxMTggMGMwIDEuMDE3LS4wNyAyLjAxOS0uMjAzIDNtLTIuMTE4IDYuODQ0QTIxLjg4IDIxLjg4IDAgMDAxNS4xNzEgMTdtMy44MzkgMS4xMzJjLjY0NS0yLjI2Ni45OS00LjY1OS45OS03LjEzMkE4IDggMCAwMDggNC4wN00zIDE1LjM2NGMuNjQtMS4zMTkgMS0yLjggMS00LjM2NCAwLTEuNDU3LjM5LTIuODIzIDEuMDctNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRmlyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcuNjU3IDE4LjY1N0E4IDggMCAwMTYuMzQzIDcuMzQzUzcgOSA5IDEwYzAtMiAuNS01IDIuOTg2LTdDMTQgNSAxNi4wOSA1Ljc3NyAxNy42NTYgNy4zNDNBNy45NzUgNy45NzUgMCAwMTIwIDEzYTcuOTc1IDcuOTc1IDAgMDEtMi4zNDMgNS42NTd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkuODc5IDE2LjEyMUEzIDMgMCAxMDEyLjAxNSAxMUwxMSAxNEg5YzAgLjc2OC4yOTMgMS41MzYuODc5IDIuMTIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRmxhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyAyMXYtNG0wIDBWNWEyIDIgMCAwMTItMmg2LjVsMSAxSDIxbC0zIDYgMyA2aC04LjVsLTEtMUg1YTIgMiAwIDAwLTIgMnptOS0xMy41VjlcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUZvbGRlckFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxM2g2bS0zLTN2Nm0tOSAxVjdhMiAyIDAgMDEyLTJoNmwyIDJoNmEyIDIgMCAwMTIgMnY4YTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUZvbGRlckRvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiAxMHY2bTAgMGwtMy0zbTMgM2wzLTNNMyAxN1Y3YTIgMiAwIDAxMi0yaDZsMiAyaDZhMiAyIDAgMDEyIDJ2OGEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVGb2xkZXJPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk01IDE5YTIgMiAwIDAxLTItMlY3YTIgMiAwIDAxMi0yaDRsMiAyaDRhMiAyIDAgMDEyIDJ2MU01IDE5aDE0YTIgMiAwIDAwMi0ydi01YTIgMiAwIDAwLTItMkg5YTIgMiAwIDAwLTIgMnY1YTIgMiAwIDAxLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUZvbGRlclJlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxM2g2TTMgMTdWN2EyIDIgMCAwMTItMmg2bDIgMmg2YTIgMiAwIDAxMiAydjhhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRm9sZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDd2MTBhMiAyIDAgMDAyIDJoMTRhMiAyIDAgMDAyLTJWOWEyIDIgMCAwMC0yLTJoLTZsLTItMkg1YTIgMiAwIDAwLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUdpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDh2MTNtMC0xM1Y2YTIgMiAwIDExMiAyaC0yem0wIDBWNS41QTIuNSAyLjUgMCAxMDkuNSA4SDEyem0tNyA0aDE0TTUgMTJhMiAyIDAgMTEwLTRoMTRhMiAyIDAgMTEwIDRNNSAxMnY3YTIgMiAwIDAwMiAyaDEwYTIgMiAwIDAwMi0ydi03XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVHbG9iZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMjEgMTJhOSA5IDAgMDEtOSA5bTktOWE5IDkgMCAwMC05LTltOSA5SDNtOSA5YTkgOSAwIDAxLTktOW05IDljMS42NTcgMCAzLTQuMDMgMy05cy0xLjM0My05LTMtOW0wIDE4Yy0xLjY1NyAwLTMtNC4wMy0zLTlzMS4zNDMtOSAzLTltLTkgOWE5IDkgMCAwMTktOVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lR2xvYmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTMuMDU1IDExSDVhMiAyIDAgMDEyIDJ2MWEyIDIgMCAwMDIgMiAyIDIgMCAwMTIgMnYyLjk0NU04IDMuOTM1VjUuNUEyLjUgMi41IDAgMDAxMC41IDhoLjVhMiAyIDAgMDEyIDIgMiAyIDAgMTA0IDAgMiAyIDAgMDEyLTJoMS4wNjRNMTUgMjAuNDg4VjE4YTIgMiAwIDAxMi0yaDMuMDY0TTIxIDEyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lSGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNyAxMS41VjE0bTAtMi41di02YTEuNSAxLjUgMCAxMTMgMG0tMyA2YTEuNSAxLjUgMCAwMC0zIDB2MmE3LjUgNy41IDAgMDAxNSAwdi01YTEuNSAxLjUgMCAwMC0zIDBtLTYtM1YxMW0wLTUuNXYtMWExLjUgMS41IDAgMDEzIDB2MW0wIDBWMTFtMC01LjVhMS41IDEuNSAwIDAxMyAwdjNtMCAwVjExXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVIYXNodGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDIwbDQtMTZtMiAxNmw0LTE2TTYgOWgxNE00IDE1aDE0XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNC4zMTggNi4zMThhNC41IDQuNSAwIDAwMCA2LjM2NEwxMiAyMC4zNjRsNy42ODItNy42ODJhNC41IDQuNSAwIDAwLTYuMzY0LTYuMzY0TDEyIDcuNjM2bC0xLjMxOC0xLjMxOGE0LjUgNC41IDAgMDAtNi4zNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUhvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTMgMTJsMi0ybTAgMGw3LTcgNyA3TTUgMTB2MTBhMSAxIDAgMDAxIDFoM20xMC0xMWwyIDJtLTItMnYxMGExIDEgMCAwMS0xIDFoLTNtLTYgMGExIDEgMCAwMDEtMXYtNGExIDEgMCAwMTEtMWgyYTEgMSAwIDAxMSAxdjRhMSAxIDAgMDAxIDFtLTYgMGg2XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVJZGVudGlmaWNhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTAgNkg1YTIgMiAwIDAwLTIgMnY5YTIgMiAwIDAwMiAyaDE0YTIgMiAwIDAwMi0yVjhhMiAyIDAgMDAtMi0yaC01bS00IDBWNWEyIDIgMCAxMTQgMHYxbS00IDBhMiAyIDAgMTA0IDBtLTUgOGEyIDIgMCAxMDAtNCAyIDIgMCAwMDAgNHptMCAwYzEuMzA2IDAgMi40MTcuODM1IDIuODMgMk05IDE0YTMuMDAxIDMuMDAxIDAgMDAtMi44MyAyTTE1IDExaDNtLTMgNGgyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVJbmJveEluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04IDRINmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoMTJhMiAyIDAgMDAyLTJWNmEyIDIgMCAwMC0yLTJoLTJtLTQtMXY4bTAgMGwzLTNtLTMgM0w5IDhtLTUgNWgyLjU4NmExIDEgMCAwMS43MDcuMjkzbDIuNDE0IDIuNDE0YTEgMSAwIDAwLjcwNy4yOTNoMy4xNzJhMSAxIDAgMDAuNzA3LS4yOTNsMi40MTQtMi40MTRhMSAxIDAgMDEuNzA3LS4yOTNIMjBcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0yMCAxM1Y2YTIgMiAwIDAwLTItMkg2YTIgMiAwIDAwLTIgMnY3bTE2IDB2NWEyIDIgMCAwMS0yIDJINmEyIDIgMCAwMS0yLTJ2LTVtMTYgMGgtMi41ODZhMSAxIDAgMDAtLjcwNy4yOTNsLTIuNDE0IDIuNDE0YTEgMSAwIDAxLS43MDcuMjkzaC0zLjE3MmExIDEgMCAwMS0uNzA3LS4yOTNsLTIuNDE0LTIuNDE0QTEgMSAwIDAwNi41ODYgMTNINFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lSW5mb3JtYXRpb25DaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEzIDE2aC0xdi00aC0xbTEtNGguMDFNMjEgMTJhOSA5IDAgMTEtMTggMCA5IDkgMCAwMTE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVLZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDdhMiAyIDAgMDEyIDJtNCAwYTYgNiAwIDAxLTcuNzQzIDUuNzQzTDExIDE3SDl2Mkg3djJINGExIDEgMCAwMS0xLTF2LTIuNTg2YTEgMSAwIDAxLjI5My0uNzA3bDUuOTY0LTUuOTY0QTYgNiAwIDExMjEgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUxpYnJhcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggMTR2M200LTN2M200LTN2M00zIDIxaDE4TTMgMTBoMThNMyA3bDktNCA5IDRNNCAxMGgxNnYxMUg0VjEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTGlnaHRCdWxiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05LjY2MyAxN2g0LjY3M00xMiAzdjFtNi4zNjQgMS42MzZsLS43MDcuNzA3TTIxIDEyaC0xTTQgMTJIM20zLjM0My01LjY1N2wtLjcwNy0uNzA3bTIuODI4IDkuOWE1IDUgMCAxMTcuMDcyIDBsLS41NDguNTQ3QTMuMzc0IDMuMzc0IDAgMDAxNCAxOC40NjlWMTlhMiAyIDAgMTEtNCAwdi0uNTMxYzAtLjg5NS0uMzU2LTEuNzU0LS45ODgtMi4zODZsLS41NDgtLjU0N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUxpZ2h0bmluZ0JvbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEzIDEwVjNMNCAxNGg3djdsOS0xMWgtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUxpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEzLjgyOCAxMC4xNzJhNCA0IDAgMDAtNS42NTYgMGwtNCA0YTQgNCAwIDEwNS42NTYgNS42NTZsMS4xMDItMS4xMDFtLS43NTgtNC44OTlhNCA0IDAgMDA1LjY1NiAwbDQtNGE0IDQgMCAwMC01LjY1Ni01LjY1NmwtMS4xIDEuMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTG9jYXRpb25NYXJrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE3LjY1NyAxNi42NTdMMTMuNDE0IDIwLjlhMS45OTggMS45OTggMCAwMS0yLjgyNyAwbC00LjI0NC00LjI0M2E4IDggMCAxMTExLjMxNCAwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNSAxMWEzIDMgMCAxMS02IDAgMyAzIDAgMDE2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVMb2NrQ2xvc2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiAxNXYybS02IDRoMTJhMiAyIDAgMDAyLTJ2LTZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjZhMiAyIDAgMDAyIDJ6bTEwLTEwVjdhNCA0IDAgMDAtOCAwdjRoOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUxvY2tPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04IDExVjdhNCA0IDAgMTE4IDBtLTQgOHYybS02IDRoMTJhMiAyIDAgMDAyLTJ2LTZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjZhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVMb2dpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTEgMTZsLTQtNG0wIDBsNC00bS00IDRoMTRtLTUgNHYxYTMgMyAwIDAxLTMgM0g2YTMgMyAwIDAxLTMtM1Y3YTMgMyAwIDAxMy0zaDdhMyAzIDAgMDEzIDN2MVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTG9nb3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNyAxNmw0LTRtMCAwbC00LTRtNCA0SDdtNiA0djFhMyAzIDAgMDEtMyAzSDZhMyAzIDAgMDEtMy0zVjdhMyAzIDAgMDEzLTNoNGEzIDMgMCAwMTMgM3YxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNYWlsT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyAxOXYtOC45M2EyIDIgMCAwMS44OS0xLjY2NGw3LTQuNjY2YTIgMiAwIDAxMi4yMiAwbDcgNC42NjZBMiAyIDAgMDEyMSAxMC4wN1YxOU0zIDE5YTIgMiAwIDAwMiAyaDE0YTIgMiAwIDAwMi0yTTMgMTlsNi43NS00LjVNMjEgMTlsLTYuNzUtNC41TTMgMTBsNi43NSA0LjVNMjEgMTBsLTYuNzUgNC41bTAgMGwtMS4xNC43NmEyIDIgMCAwMS0yLjIyIDBsLTEuMTQtLjc2XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDhsNy44OSA1LjI2YTIgMiAwIDAwMi4yMiAwTDIxIDhNNSAxOWgxNGEyIDIgMCAwMDItMlY3YTIgMiAwIDAwLTItMkg1YTIgMiAwIDAwLTIgMnYxMGEyIDIgMCAwMDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZU1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAyMGwtNS40NDctMi43MjRBMSAxIDAgMDEzIDE2LjM4MlY1LjYxOGExIDEgMCAwMTEuNDQ3LS44OTRMOSA3bTAgMTNsNi0zbS02IDNWN202IDEwbDQuNTUzIDIuMjc2QTEgMSAwIDAwMjEgMTguMzgyVjcuNjE4YTEgMSAwIDAwLS41NTMtLjg5NEwxNSA0bTAgMTNWNG0wIDBMOSA3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNZW51QWx0MSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCA2aDE2TTQgMTJoOG0tOCA2aDE2XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNZW51QWx0MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCA2aDE2TTQgMTJoMTZNNCAxOGg3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNZW51QWx0MyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCA2aDE2TTQgMTJoMTZtLTcgNmg3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNZW51QWx0NCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCA4aDE2TTQgMTZoMTZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZU1lbnUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTQgNmgxNk00IDEyaDE2TTQgMThoMTZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZU1pY3JvcGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE5IDExYTcgNyAwIDAxLTcgN20wIDBhNyA3IDAgMDEtNy03bTcgN3Y0bTAgMEg4bTQgMGg0bS00LThhMyAzIDAgMDEtMy0zVjVhMyAzIDAgMTE2IDB2NmEzIDMgMCAwMS0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNaW51c0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTUgMTJIOW0xMiAwYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTWludXNTbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTggMTJINlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIwIDEySDRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZU1vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIwLjM1NCAxNS4zNTRBOSA5IDAgMDE4LjY0NiAzLjY0NiA5LjAwMyA5LjAwMyAwIDAwMTIgMjFhOS4wMDMgOS4wMDMgMCAwMDguMzU0LTUuNjQ2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTXVzaWNOb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDE5VjZsMTItM3YxM005IDE5YzAgMS4xMDUtMS4zNDMgMi0zIDJzLTMtLjg5NS0zLTIgMS4zNDMtMiAzLTIgMyAuODk1IDMgMnptMTItM2MwIDEuMTA1LTEuMzQzIDItMyAycy0zLS44OTUtMy0yIDEuMzQzLTIgMy0yIDMgLjg5NSAzIDJ6TTkgMTBsMTItM1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTmV3c3BhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xOSAyMEg1YTIgMiAwIDAxLTItMlY2YTIgMiAwIDAxMi0yaDEwYTIgMiAwIDAxMiAydjFtMiAxM2EyIDIgMCAwMS0yLTJWN20yIDEzYTIgMiAwIDAwMi0yVjlhMiAyIDAgMDAtMi0yaC0ybS00LTNIOU03IDE2aDZNNyA4aDZ2NEg3Vjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVPZmZpY2VCdWlsZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTkgMjFWNWEyIDIgMCAwMC0yLTJIN2EyIDIgMCAwMC0yIDJ2MTZtMTQgMGgybS0yIDBoLTVtLTkgMEgzbTIgMGg1TTkgN2gxbS0xIDRoMW00LTRoMW0tMSA0aDFtLTUgMTB2LTVhMSAxIDAgMDExLTFoMmExIDEgMCAwMTEgMXY1bS00IDBoNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUGFwZXJBaXJwbGFuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgMTlsOSAyLTktMTgtOSAxOCA5LTJ6bTAgMHYtOFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUGFwZXJDbGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNS4xNzIgN2wtNi41ODYgNi41ODZhMiAyIDAgMTAyLjgyOCAyLjgyOGw2LjQxNC02LjU4NmE0IDQgMCAwMC01LjY1Ni01LjY1NmwtNi40MTUgNi41ODVhNiA2IDAgMTA4LjQ4NiA4LjQ4NkwyMC41IDEzXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQYXVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTAgOXY2bTQtNnY2bTctM2E5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVBlbmNpbEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTEgNUg2YTIgMiAwIDAwLTIgMnYxMWEyIDIgMCAwMDIgMmgxMWEyIDIgMCAwMDItMnYtNW0tMS40MTQtOS40MTRhMiAyIDAgMTEyLjgyOCAyLjgyOEwxMS44MjggMTVIOXYtMi44MjhsOC41ODYtOC41ODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQZW5jaWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1LjIzMiA1LjIzMmwzLjUzNiAzLjUzNm0tMi4wMzYtNS4wMzZhMi41IDIuNSAwIDExMy41MzYgMy41MzZMNi41IDIxLjAzNkgzdi0zLjU3MkwxNi43MzIgMy43MzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQaG9uZUluY29taW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0yMSAzbC02IDZtMCAwVjRtMCA1aDVNNSAzYTIgMiAwIDAwLTIgMnYxYzAgOC4yODQgNi43MTYgMTUgMTUgMTVoMWEyIDIgMCAwMDItMnYtMy4yOGExIDEgMCAwMC0uNjg0LS45NDhsLTQuNDkzLTEuNDk4YTEgMSAwIDAwLTEuMjEuNTAybC0xLjEzIDIuMjU3YTExLjA0MiAxMS4wNDIgMCAwMS01LjUxNi01LjUxN2wyLjI1Ny0xLjEyOGExIDEgMCAwMC41MDItMS4yMUw5LjIyOCAzLjY4M0ExIDEgMCAwMDguMjc5IDNINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVBob25lTWlzc2VkQ2FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTYgOGwyLTJtMCAwbDItMm0tMiAybC0yLTJtMiAybDIgMk01IDNhMiAyIDAgMDAtMiAydjFjMCA4LjI4NCA2LjcxNiAxNSAxNSAxNWgxYTIgMiAwIDAwMi0ydi0zLjI4YTEgMSAwIDAwLS42ODQtLjk0OGwtNC40OTMtMS40OThhMSAxIDAgMDAtMS4yMS41MDJsLTEuMTMgMi4yNTdhMTEuMDQyIDExLjA0MiAwIDAxLTUuNTE2LTUuNTE3bDIuMjU3LTEuMTI4YTEgMSAwIDAwLjUwMi0xLjIxTDkuMjI4IDMuNjgzQTEgMSAwIDAwOC4yNzkgM0g1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUGhvbmVPdXRnb2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTYgM2g1bTAgMHY1bTAtNWwtNiA2TTUgM2EyIDIgMCAwMC0yIDJ2MWMwIDguMjg0IDYuNzE2IDE1IDE1IDE1aDFhMiAyIDAgMDAyLTJ2LTMuMjhhMSAxIDAgMDAtLjY4NC0uOTQ4bC00LjQ5My0xLjQ5OGExIDEgMCAwMC0xLjIxLjUwMmwtMS4xMyAyLjI1N2ExMS4wNDIgMTEuMDQyIDAgMDEtNS41MTYtNS41MTdsMi4yNTctMS4xMjhhMSAxIDAgMDAuNTAyLTEuMjFMOS4yMjggMy42ODNBMSAxIDAgMDA4LjI3OSAzSDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyA1YTIgMiAwIDAxMi0yaDMuMjhhMSAxIDAgMDEuOTQ4LjY4NGwxLjQ5OCA0LjQ5M2ExIDEgMCAwMS0uNTAyIDEuMjFsLTIuMjU3IDEuMTNhMTEuMDQyIDExLjA0MiAwIDAwNS41MTYgNS41MTZsMS4xMy0yLjI1N2ExIDEgMCAwMTEuMjEtLjUwMmw0LjQ5MyAxLjQ5OGExIDEgMCAwMS42ODQuOTQ5VjE5YTIgMiAwIDAxLTIgMmgtMUM5LjcxNiAyMSAzIDE0LjI4NCAzIDZWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVBob3RvZ3JhcGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTQgMTZsNC41ODYtNC41ODZhMiAyIDAgMDEyLjgyOCAwTDE2IDE2bS0yLTJsMS41ODYtMS41ODZhMiAyIDAgMDEyLjgyOCAwTDIwIDE0bS02LTZoLjAxTTYgMjBoMTJhMiAyIDAgMDAyLTJWNmEyIDIgMCAwMC0yLTJINmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNC43NTIgMTEuMTY4bC0zLjE5Ny0yLjEzMkExIDEgMCAwMDEwIDkuODd2NC4yNjNhMSAxIDAgMDAxLjU1NS44MzJsMy4xOTctMi4xMzJhMSAxIDAgMDAwLTEuNjY0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVBsdXNDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDl2M20wIDB2M20wLTNoM20tMyAwSDltMTIgMGE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVBsdXNTbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgNnY2bTAgMHY2bTAtNmg2bS02IDBINlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgNHYxNm04LThINFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUHJlc2VudGF0aW9uQ2hhcnRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggMTN2LTFtNCAxdi0zbTQgM1Y4TTggMjFsNC00IDQgNE0zIDRoMThNNCA0aDE2djEyYTEgMSAwIDAxLTEgMUg1YTEgMSAwIDAxLTEtMVY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUHJlc2VudGF0aW9uQ2hhcnRMaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDEybDMtMyAzIDMgNC00TTggMjFsNC00IDQgNE0zIDRoMThNNCA0aDE2djEyYTEgMSAwIDAxLTEgMUg1YTEgMSAwIDAxLTEtMVY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUHJpbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcgMTdoMmEyIDIgMCAwMDItMnYtNGEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2NGEyIDIgMCAwMDIgMmgybTIgNGg2YTIgMiAwIDAwMi0ydi00YTIgMiAwIDAwLTItMkg5YTIgMiAwIDAwLTIgMnY0YTIgMiAwIDAwMiAyem04LTEyVjVhMiAyIDAgMDAtMi0ySDlhMiAyIDAgMDAtMiAydjRoMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQdXp6bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTExIDRhMiAyIDAgMTE0IDB2MWExIDEgMCAwMDEgMWgzYTEgMSAwIDAxMSAxdjNhMSAxIDAgMDEtMSAxaC0xYTIgMiAwIDEwMCA0aDFhMSAxIDAgMDExIDF2M2ExIDEgMCAwMS0xIDFoLTNhMSAxIDAgMDEtMS0xdi0xYTIgMiAwIDEwLTQgMHYxYTEgMSAwIDAxLTEgMUg3YTEgMSAwIDAxLTEtMXYtM2ExIDEgMCAwMC0xLTFINGEyIDIgMCAxMTAtNGgxYTEgMSAwIDAwMS0xVjdhMSAxIDAgMDExLTFoM2ExIDEgMCAwMDEtMVY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUXJjb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiA0djFtNiAxMWgybS02IDBoLTJ2NG0wLTExdjNtMCAwaC4wMU0xMiAxMmg0LjAxTTE2IDIwaDRNNCAxMmg0bTEyIDBoLjAxTTUgOGgyYTEgMSAwIDAwMS0xVjVhMSAxIDAgMDAtMS0xSDVhMSAxIDAgMDAtMSAxdjJhMSAxIDAgMDAxIDF6bTEyIDBoMmExIDEgMCAwMDEtMVY1YTEgMSAwIDAwLTEtMWgtMmExIDEgMCAwMC0xIDF2MmExIDEgMCAwMDEgMXpNNSAyMGgyYTEgMSAwIDAwMS0xdi0yYTEgMSAwIDAwLTEtMUg1YTEgMSAwIDAwLTEgMXYyYTEgMSAwIDAwMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUXVlc3Rpb25NYXJrQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04LjIyOCA5Yy41NDktMS4xNjUgMi4wMy0yIDMuNzcyLTIgMi4yMSAwIDQgMS4zNDMgNCAzIDAgMS40LTEuMjc4IDIuNTc1LTMuMDA2IDIuOTA3LS41NDIuMTA0LS45OTQuNTQtLjk5NCAxLjA5M20wIDNoLjAxTTIxIDEyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUmVjZWlwdFJlZnVuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTYgMTV2LTFhNCA0IDAgMDAtNC00SDhtMCAwbDMgM20tMy0zbDMtM205IDE0VjVhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjE2bDQtMiA0IDIgNC0yIDQgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVJlY2VpcHRUYXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTRsNi02bS01LjUuNWguMDFtNC45OSA1aC4wMU0xOSAyMVY1YTIgMiAwIDAwLTItMkg3YTIgMiAwIDAwLTIgMnYxNmwzLjUtMiAzLjUgMiAzLjUtMiAzLjUgMnpNMTAgOC41YS41LjUgMCAxMS0xIDAgLjUuNSAwIDAxMSAwem01IDVhLjUuNSAwIDExLTEgMCAuNS41IDAgMDExIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVSZWZyZXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00IDR2NWguNTgybTE1LjM1NiAyQTguMDAxIDguMDAxIDAgMDA0LjU4MiA5bTAgMEg5bTExIDExdi01aC0uNTgxbTAgMGE4LjAwMyA4LjAwMyAwIDAxLTE1LjM1Ny0ybTE1LjM1NyAySDE1XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVSZXBseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyAxMGgxMGE4IDggMCAwMTggOHYyTTMgMTBsNiA2bS02LTZsNi02XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVSZXdpbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyLjA2NiAxMS4yYTEgMSAwIDAwMCAxLjZsNS4zMzQgNEExIDEgMCAwMDE5IDE2VjhhMSAxIDAgMDAtMS42LS44bC01LjMzMyA0ek00LjA2NiAxMS4yYTEgMSAwIDAwMCAxLjZsNS4zMzQgNEExIDEgMCAwMDExIDE2VjhhMSAxIDAgMDAtMS42LS44bC01LjMzNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUnNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk02IDVjNy4xOCAwIDEzIDUuODIgMTMgMTNNNiAxMWE3IDcgMCAwMTcgN20tNiAwYTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNhdmVBcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcgMTZ2MmEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJ2LTdhMiAyIDAgMDEyLTJoMm0zLTRIOWEyIDIgMCAwMC0yIDJ2N2EyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMlY3YTIgMiAwIDAwLTItMmgtMW0tMSA0bC0zIDNtMCAwbC0zLTNtMyAzVjNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggN0g1YTIgMiAwIDAwLTIgMnY5YTIgMiAwIDAwMiAyaDE0YTIgMiAwIDAwMi0yVjlhMiAyIDAgMDAtMi0yaC0zbS0xIDRsLTMgM20wIDBsLTMtM20zIDNWNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU2NhbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTMgNmwzIDFtMCAwbC0zIDlhNS4wMDIgNS4wMDIgMCAwMDYuMDAxIDBNNiA3bDMgOU02IDdsNi0ybTYgMmwzLTFtLTMgMWwtMyA5YTUuMDAyIDUuMDAyIDAgMDA2LjAwMSAwTTE4IDdsMyA5bS0zLTlsLTYtMm0wLTJ2Mm0wIDE2VjVtMCAxNkg5bTMgMGgzXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTY2lzc29ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTQuMTIxIDE0LjEyMUwxOSAxOW0tNy03bDctN20tNyA3bC0yLjg3OSAyLjg3OU0xMiAxMkw5LjEyMSA5LjEyMW0wIDUuNzU4YTMgMyAwIDEwLTQuMjQzIDQuMjQzIDMgMyAwIDAwNC4yNDMtNC4yNDN6bTAtNS43NThhMyAzIDAgMTAtNC4yNDMtNC4yNDMgMyAzIDAgMDA0LjI0MyA0LjI0M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNlYXJjaENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOCAxNmwyLjg3OS0yLjg3OW0wIDBhMyAzIDAgMTA0LjI0My00LjI0MiAzIDMgMCAwMC00LjI0MyA0LjI0MnpNMjEgMTJhOSA5IDAgMTEtMTggMCA5IDkgMCAwMTE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIxIDIxbC02LTZtMi01YTcgNyAwIDExLTE0IDAgNyA3IDAgMDExNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU2VsZWN0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggOWw0LTQgNCA0bTAgNmwtNCA0LTQtNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU2VydmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk01IDEyaDE0TTUgMTJhMiAyIDAgMDEtMi0yVjZhMiAyIDAgMDEyLTJoMTRhMiAyIDAgMDEyIDJ2NGEyIDIgMCAwMS0yIDJNNSAxMmEyIDIgMCAwMC0yIDJ2NGEyIDIgMCAwMDIgMmgxNGEyIDIgMCAwMDItMnYtNGEyIDIgMCAwMC0yLTJtLTItNGguMDFNMTcgMTZoLjAxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTaGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOC42ODQgMTMuMzQyQzguODg2IDEyLjkzOCA5IDEyLjQ4MiA5IDEyYzAtLjQ4Mi0uMTE0LS45MzgtLjMxNi0xLjM0Mm0wIDIuNjg0YTMgMyAwIDExMC0yLjY4NG0wIDIuNjg0bDYuNjMyIDMuMzE2bS02LjYzMi02bDYuNjMyLTMuMzE2bTAgMGEzIDMgMCAxMDUuMzY3LTIuNjg0IDMgMyAwIDAwLTUuMzY3IDIuNjg0em0wIDkuMzE2YTMgMyAwIDEwNS4zNjggMi42ODQgMyAzIDAgMDAtNS4zNjgtMi42ODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTaGllbGRDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxMmwyIDIgNC00bTUuNjE4LTQuMDE2QTExLjk1NSAxMS45NTUgMCAwMTEyIDIuOTQ0YTExLjk1NSAxMS45NTUgMCAwMS04LjYxOCAzLjA0QTEyLjAyIDEyLjAyIDAgMDAzIDljMCA1LjU5MSAzLjgyNCAxMC4yOSA5IDExLjYyMiA1LjE3Ni0xLjMzMiA5LTYuMDMgOS0xMS42MjIgMC0xLjA0Mi0uMTMzLTIuMDUyLS4zODItMy4wMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTaGllbGRFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMjAuNjE4IDUuOTg0QTExLjk1NSAxMS45NTUgMCAwMTEyIDIuOTQ0YTExLjk1NSAxMS45NTUgMCAwMS04LjYxOCAzLjA0QTEyLjAyIDEyLjAyIDAgMDAzIDljMCA1LjU5MSAzLjgyNCAxMC4yOSA5IDExLjYyMiA1LjE3Ni0xLjMzMiA5LTYuMDMgOS0xMS42MjIgMC0xLjA0Mi0uMTMzLTIuMDUyLS4zODItMy4wMTZ6TTEyIDl2Mm0wIDRoLjAxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTaG9wcGluZ0JhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTYgMTFWN2E0IDQgMCAwMC04IDB2NE01IDloMTRsMSAxMkg0TDUgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNob3BwaW5nQ2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyAzaDJsLjQgMk03IDEzaDEwbDQtOEg1LjRNNyAxM0w1LjQgNU03IDEzbC0yLjI5MyAyLjI5M2MtLjYzLjYzLS4xODQgMS43MDcuNzA3IDEuNzA3SDE3bTAgMGEyIDIgMCAxMDAgNCAyIDIgMCAwMDAtNHptLTggMmEyIDIgMCAxMS00IDAgMiAyIDAgMDE0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTb3J0QXNjZW5kaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDRoMTNNMyA4aDltLTkgNGg2bTQgMGw0LTRtMCAwbDQgNG0tNC00djEyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTb3J0RGVzY2VuZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyA0aDEzTTMgOGg5bS05IDRoOW01LTR2MTJtMCAwbC00LTRtNCA0bDQtNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU3BhcmtsZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTUgM3Y0TTMgNWg0TTYgMTd2NG0tMi0yaDRtNS0xNmwyLjI4NiA2Ljg1N0wyMSAxMmwtNS43MTQgMi4xNDNMMTMgMjFsLTIuMjg2LTYuODU3TDUgMTJsNS43MTQtMi4xNDNMMTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNwZWFrZXJwaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTEgNS44ODJWMTkuMjRhMS43NiAxLjc2IDAgMDEtMy40MTcuNTkybC0yLjE0Ny02LjE1TTE4IDEzYTMgMyAwIDEwMC02TTUuNDM2IDEzLjY4M0E0LjAwMSA0LjAwMSAwIDAxNyA2aDEuODMyYzQuMSAwIDcuNjI1LTEuMjM0IDkuMTY4LTN2MTRjLTEuNTQzLTEuNzY2LTUuMDY3LTMtOS4xNjgtM0g3YTMuOTg4IDMuOTg4IDAgMDEtMS41NjQtLjMxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVN0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTExLjA0OSAyLjkyN2MuMy0uOTIxIDEuNjAzLS45MjEgMS45MDIgMGwxLjUxOSA0LjY3NGExIDEgMCAwMC45NS42OWg0LjkxNWMuOTY5IDAgMS4zNzEgMS4yNC41ODggMS44MWwtMy45NzYgMi44ODhhMSAxIDAgMDAtLjM2MyAxLjExOGwxLjUxOCA0LjY3NGMuMy45MjItLjc1NSAxLjY4OC0xLjUzOCAxLjExOGwtMy45NzYtMi44ODhhMSAxIDAgMDAtMS4xNzYgMGwtMy45NzYgMi44ODhjLS43ODMuNTctMS44MzgtLjE5Ny0xLjUzOC0xLjExOGwxLjUxOC00LjY3NGExIDEgMCAwMC0uMzYzLTEuMTE4bC0zLjk3Ni0yLjg4OGMtLjc4NC0uNTctLjM4LTEuODEuNTg4LTEuODFoNC45MTRhMSAxIDAgMDAuOTUxLS42OWwxLjUxOS00LjY3NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVN0YXR1c09mZmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE4LjM2NCA1LjYzNmE5IDkgMCAwMTAgMTIuNzI4bTAgMGwtMi44MjktMi44MjltMi44MjkgMi44MjlMMjEgMjFNMTUuNTM2IDguNDY0YTUgNSAwIDAxMCA3LjA3Mm0wIDBsLTIuODI5LTIuODI5bS00LjI0MyAyLjgyOWE0Ljk3OCA0Ljk3OCAwIDAxLTEuNDE0LTIuODNtLTEuNDE0IDUuNjU4YTkgOSAwIDAxLTIuMTY3LTkuMjM4bTcuODI0IDIuMTY3YTEgMSAwIDExMS40MTQgMS40MTRtLTEuNDE0LTEuNDE0TDMgM204LjI5MyA4LjI5M2wxLjQxNCAxLjQxNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU3RhdHVzT25saW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk01LjYzNiAxOC4zNjRhOSA5IDAgMDEwLTEyLjcyOG0xMi43MjggMGE5IDkgMCAwMTAgMTIuNzI4bS05LjktMi44MjlhNSA1IDAgMDEwLTcuMDdtNy4wNzIgMGE1IDUgMCAwMTAgNy4wN00xMyAxMmExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxMGExIDEgMCAwMTEtMWg0YTEgMSAwIDAxMSAxdjRhMSAxIDAgMDEtMSAxaC00YTEgMSAwIDAxLTEtMXYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVN1biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgM3YxbTAgMTZ2MW05LTloLTFNNCAxMkgzbTE1LjM2NCA2LjM2NGwtLjcwNy0uNzA3TTYuMzQzIDYuMzQzbC0uNzA3LS43MDdtMTIuNzI4IDBsLS43MDcuNzA3TTYuMzQzIDE3LjY1N2wtLjcwNy43MDdNMTYgMTJhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU3VwcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTguMzY0IDUuNjM2bC0zLjUzNiAzLjUzNm0wIDUuNjU2bDMuNTM2IDMuNTM2TTkuMTcyIDkuMTcyTDUuNjM2IDUuNjM2bTMuNTM2IDkuMTkybC0zLjUzNiAzLjUzNk0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHptLTUgMGE0IDQgMCAxMS04IDAgNCA0IDAgMDE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTd2l0Y2hIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04IDdoMTJtMCAwbC00LTRtNCA0bC00IDRtMCA2SDRtMCAwbDQgNG0tNC00bDQtNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU3dpdGNoVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTcgMTZWNG0wIDBMMyA4bTQtNGw0IDRtNiAwdjEybTAgMGw0LTRtLTQgNGwtNC00XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVUYWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyAxMGgxOE0zIDE0aDE4bS05LTR2OG0tNyAwaDE0YTIgMiAwIDAwMi0yVjhhMiAyIDAgMDAtMi0ySDVhMiAyIDAgMDAtMiAydjhhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVUYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTcgN2guMDFNNyAzaDVjLjUxMiAwIDEuMDI0LjE5NSAxLjQxNC41ODZsNyA3YTIgMiAwIDAxMCAyLjgyOGwtNyA3YTIgMiAwIDAxLTIuODI4IDBsLTctN0ExLjk5NCAxLjk5NCAwIDAxMyAxMlY3YTQgNCAwIDAxNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVGVtcGxhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTQgNWExIDEgMCAwMTEtMWgxNGExIDEgMCAwMTEgMXYyYTEgMSAwIDAxLTEgMUg1YTEgMSAwIDAxLTEtMVY1ek00IDEzYTEgMSAwIDAxMS0xaDZhMSAxIDAgMDExIDF2NmExIDEgMCAwMS0xIDFINWExIDEgMCAwMS0xLTF2LTZ6TTE2IDEzYTEgMSAwIDAxMS0xaDJhMSAxIDAgMDExIDF2NmExIDEgMCAwMS0xIDFoLTJhMSAxIDAgMDEtMS0xdi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVGVybWluYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggOWwzIDMtMyAzbTUgMGgzTTUgMjBoMTRhMiAyIDAgMDAyLTJWNmEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVUaHVtYkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEwIDE0SDUuMjM2YTIgMiAwIDAxLTEuNzg5LTIuODk0bDMuNS03QTIgMiAwIDAxOC43MzYgM2g0LjAxOGEyIDIgMCAwMS40ODUuMDZsMy43Ni45NG0tNyAxMHY1YTIgMiAwIDAwMiAyaC4wOTZjLjUgMCAuOTA1LS40MDUuOTA1LS45MDQgMC0uNzE1LjIxMS0xLjQxMy42MDgtMi4wMDhMMTcgMTNWNG0tNyAxMGgybTUtMTBoMmEyIDIgMCAwMTIgMnY2YTIgMiAwIDAxLTIgMmgtMi41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVUaHVtYlVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNCAxMGg0Ljc2NGEyIDIgMCAwMTEuNzg5IDIuODk0bC0zLjUgN0EyIDIgMCAwMTE1LjI2MyAyMWgtNC4wMTdjLS4xNjMgMC0uMzI2LS4wMi0uNDg1LS4wNkw3IDIwbTctMTBWNWEyIDIgMCAwMC0yLTJoLS4wOTVjLS41IDAtLjkwNS40MDUtLjkwNS45MDUgMCAuNzE0LS4yMTEgMS40MTItLjYwOCAyLjAwNkw3IDExdjltNy0xMGgtMk03IDIwSDVhMiAyIDAgMDEtMi0ydi02YTIgMiAwIDAxMi0yaDIuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVGlja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNSA1djJtMCA0djJtMCA0djJNNSA1YTIgMiAwIDAwLTIgMnYzYTIgMiAwIDExMCA0djNhMiAyIDAgMDAyIDJoMTRhMiAyIDAgMDAyLTJ2LTNhMiAyIDAgMTEwLTRWN2EyIDIgMCAwMC0yLTJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVRyYW5zbGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyA1aDEyTTkgM3YybTEuMDQ4IDkuNUExOC4wMjIgMTguMDIyIDAgMDE2LjQxMiA5bTYuMDg4IDloN00xMSAyMWw1LTEwIDUgMTBNMTIuNzUxIDVDMTEuNzgzIDEwLjc3IDguMDcgMTUuNjEgMyAxOC4xMjlcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVRyYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xOSA3bC0uODY3IDEyLjE0MkEyIDIgMCAwMTE2LjEzOCAyMUg3Ljg2MmEyIDIgMCAwMS0xLjk5NS0xLjg1OEw1IDdtNSA0djZtNC02djZtMS0xMFY0YTEgMSAwIDAwLTEtMWgtNGExIDEgMCAwMC0xIDF2M000IDdoMTZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVRyZW5kaW5nRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTMgMTdoOG0wIDBWOW0wIDhsLTgtOC00IDQtNi02XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVUcmVuZGluZ1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMyA3aDhtMCAwdjhtMC04bC04IDgtNC00LTYgNlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVHJ1Y2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTdhMiAyIDAgMTEtNCAwIDIgMiAwIDAxNCAwek0xOSAxN2EyIDIgMCAxMS00IDAgMiAyIDAgMDE0IDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEzIDE2VjZhMSAxIDAgMDAtMS0xSDRhMSAxIDAgMDAtMSAxdjEwYTEgMSAwIDAwMSAxaDFtOC0xYTEgMSAwIDAxLTEgMUg5bTQtMVY4YTEgMSAwIDAxMS0xaDIuNTg2YTEgMSAwIDAxLjcwNy4yOTNsMy40MTQgMy40MTRhMSAxIDAgMDEuMjkzLjcwN1YxNmExIDEgMCAwMS0xIDFoLTFtLTYtMWExIDEgMCAwMDEgMWgxTTUgMTdhMiAyIDAgMTA0IDBtLTQgMGEyIDIgMCAxMTQgMG02IDBhMiAyIDAgMTA0IDBtLTQgMGEyIDIgMCAxMTQgMFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00IDE2djFhMyAzIDAgMDAzIDNoMTBhMyAzIDAgMDAzLTN2LTFtLTQtOGwtNC00bTAgMEw4IDhtNC00djEyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVVc2VyQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xOCA5djNtMCAwdjNtMC0zaDNtLTMgMGgtM20tMi01YTQgNCAwIDExLTggMCA0IDQgMCAwMTggMHpNMyAyMGE2IDYgMCAwMTEyIDB2MUgzdi0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVXNlckNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNS4xMjEgMTcuODA0QTEzLjkzNyAxMy45MzcgMCAwMTEyIDE2YzIuNSAwIDQuODQ3LjY1NSA2Ljg3OSAxLjgwNE0xNSAxMGEzIDMgMCAxMS02IDAgMyAzIDAgMDE2IDB6bTYgMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVVzZXJHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcgMjBoNXYtMmEzIDMgMCAwMC01LjM1Ni0xLjg1N00xNyAyMEg3bTEwIDB2LTJjMC0uNjU2LS4xMjYtMS4yODMtLjM1Ni0xLjg1N003IDIwSDJ2LTJhMyAzIDAgMDE1LjM1Ni0xLjg1N003IDIwdi0yYzAtLjY1Ni4xMjYtMS4yODMuMzU2LTEuODU3bTAgMGE1LjAwMiA1LjAwMiAwIDAxOS4yODggME0xNSA3YTMgMyAwIDExLTYgMCAzIDMgMCAwMTYgMHptNiAzYTIgMiAwIDExLTQgMCAyIDIgMCAwMTQgMHpNNyAxMGEyIDIgMCAxMS00IDAgMiAyIDAgMDE0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVVc2VyUmVtb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMyA3YTQgNCAwIDExLTggMCA0IDQgMCAwMTggMHpNOSAxNGE2IDYgMCAwMC02IDZ2MWgxMnYtMWE2IDYgMCAwMC02LTZ6TTIxIDEyaC02XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNiA3YTQgNCAwIDExLTggMCA0IDQgMCAwMTggMHpNMTIgMTRhNyA3IDAgMDAtNyA3aDE0YTcgNyAwIDAwLTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVVzZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiA0LjM1NGE0IDQgMCAxMTAgNS4yOTJNMTUgMjFIM3YtMWE2IDYgMCAwMTEyIDB2MXptMCAwaDZ2LTFhNiA2IDAgMDAtOS01LjE5N00xMyA3YTQgNCAwIDExLTggMCA0IDQgMCAwMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVZhcmlhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00Ljg3MSA0QTE3LjkyNiAxNy45MjYgMCAwMDMgMTJjMCAyLjg3NC42NzMgNS41OSAxLjg3MSA4bTE0LjEzIDBhMTcuOTI2IDE3LjkyNiAwIDAwMS44Ny04YzAtMi44NzQtLjY3My01LjU5LTEuODctOE05IDloMS4yNDZhMSAxIDAgMDEuOTYxLjcyNWwxLjU4NiA1LjU1YTEgMSAwIDAwLjk2MS43MjVIMTVtMS03aC0uMDhhMiAyIDAgMDAtMS41MTkuNjk4TDkuNiAxNS4zMDJBMiAyIDAgMDE4LjA4IDE2SDhcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVZpZGVvQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNSAxMGw0LjU1My0yLjI3NkExIDEgMCAwMTIxIDguNjE4djYuNzY0YTEgMSAwIDAxLTEuNDQ3Ljg5NEwxNSAxNE01IDE4aDhhMiAyIDAgMDAyLTJWOGEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2OGEyIDIgMCAwMDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVZpZXdCb2FyZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTdWN20wIDEwYTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMlY3YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJtMCAxMGEyIDIgMCAwMDIgMmgyYTIgMiAwIDAwMi0yTTkgN2EyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAybTAgMTBWN20wIDEwYTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJoLTJhMiAyIDAgMDAtMiAyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVWaWV3R3JpZEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcgMTR2Nm0tMy0zaDZNNiAxMGgyYTIgMiAwIDAwMi0yVjZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjJhMiAyIDAgMDAyIDJ6bTEwIDBoMmEyIDIgMCAwMDItMlY2YTIgMiAwIDAwLTItMmgtMmEyIDIgMCAwMC0yIDJ2MmEyIDIgMCAwMDIgMnpNNiAyMGgyYTIgMiAwIDAwMi0ydi0yYTIgMiAwIDAwLTItMkg2YTIgMiAwIDAwLTIgMnYyYTIgMiAwIDAwMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVmlld0dyaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTQgNmEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAySDZhMiAyIDAgMDEtMi0yVjZ6TTE0IDZhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMnYyYTIgMiAwIDAxLTIgMmgtMmEyIDIgMCAwMS0yLTJWNnpNNCAxNmEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAySDZhMiAyIDAgMDEtMi0ydi0yek0xNCAxNmEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAyaC0yYTIgMiAwIDAxLTItMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVZpZXdMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00IDZoMTZNNCAxMGgxNk00IDE0aDE2TTQgMThoMTZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVZvbHVtZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNS41ODYgMTVINGExIDEgMCAwMS0xLTF2LTRhMSAxIDAgMDExLTFoMS41ODZsNC43MDctNC43MDdDMTAuOTIzIDMuNjYzIDEyIDQuMTA5IDEyIDV2MTRjMCAuODkxLTEuMDc3IDEuMzM3LTEuNzA3LjcwN0w1LjU4NiAxNXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE3IDE0bDItMm0wIDBsMi0ybS0yIDJsLTItMm0yIDJsMiAyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVWb2x1bWVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTUuNTM2IDguNDY0YTUgNSAwIDAxMCA3LjA3Mm0yLjgyOC05LjlhOSA5IDAgMDEwIDEyLjcyOE01LjU4NiAxNUg0YTEgMSAwIDAxLTEtMXYtNGExIDEgMCAwMTEtMWgxLjU4Nmw0LjcwNy00LjcwN0MxMC45MjMgMy42NjMgMTIgNC4xMDkgMTIgNXYxNGMwIC44OTEtMS4wNzcgMS4zMzctMS43MDcuNzA3TDUuNTg2IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lV2lmaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOC4xMTEgMTYuNDA0YTUuNSA1LjUgMCAwMTcuNzc4IDBNMTIgMjBoLjAxbS03LjA4LTcuMDcxYzMuOTA0LTMuOTA1IDEwLjIzNi0zLjkwNSAxNC4xNDEgME0xLjM5NCA5LjM5M2M1Ljg1Ny01Ljg1NyAxNS4zNTUtNS44NTcgMjEuMjEzIDBcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVhDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEwIDE0bDItMm0wIDBsMi0ybS0yIDJsLTItMm0yIDJsMiAybTctMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTYgMThMMTggNk02IDZsMTIgMTJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVpvb21JbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMjEgMjFsLTYtNm0yLTVhNyA3IDAgMTEtMTQgMCA3IDcgMCAwMTE0IDB6TTEwIDd2M20wIDB2M20wLTNoM20tMyAwSDdcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVpvb21PdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIxIDIxbC02LTZtMi01YTcgNyAwIDExLTE0IDAgNyA3IDAgMDExNCAwek0xMyAxMEg3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbiIsImNvbnN0IENMQVNTX1BBUlRfU0VQQVJBVE9SID0gJy0nO1xuZnVuY3Rpb24gY3JlYXRlQ2xhc3NHcm91cFV0aWxzKGNvbmZpZykge1xuICBjb25zdCBjbGFzc01hcCA9IGNyZWF0ZUNsYXNzTWFwKGNvbmZpZyk7XG4gIGNvbnN0IHtcbiAgICBjb25mbGljdGluZ0NsYXNzR3JvdXBzLFxuICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyc1xuICB9ID0gY29uZmlnO1xuICBmdW5jdGlvbiBnZXRDbGFzc0dyb3VwSWQoY2xhc3NOYW1lKSB7XG4gICAgY29uc3QgY2xhc3NQYXJ0cyA9IGNsYXNzTmFtZS5zcGxpdChDTEFTU19QQVJUX1NFUEFSQVRPUik7XG4gICAgLy8gQ2xhc3NlcyBsaWtlIGAtaW5zZXQtMWAgcHJvZHVjZSBhbiBlbXB0eSBzdHJpbmcgYXMgZmlyc3QgY2xhc3NQYXJ0LiBXZSBhc3N1bWUgdGhhdCBjbGFzc2VzIGZvciBuZWdhdGl2ZSB2YWx1ZXMgYXJlIHVzZWQgY29ycmVjdGx5IGFuZCByZW1vdmUgaXQgZnJvbSBjbGFzc1BhcnRzLlxuICAgIGlmIChjbGFzc1BhcnRzWzBdID09PSAnJyAmJiBjbGFzc1BhcnRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgY2xhc3NQYXJ0cy5zaGlmdCgpO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0R3JvdXBSZWN1cnNpdmUoY2xhc3NQYXJ0cywgY2xhc3NNYXApIHx8IGdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eShjbGFzc05hbWUpO1xuICB9XG4gIGZ1bmN0aW9uIGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyhjbGFzc0dyb3VwSWQsIGhhc1Bvc3RmaXhNb2RpZmllcikge1xuICAgIGNvbnN0IGNvbmZsaWN0cyA9IGNvbmZsaWN0aW5nQ2xhc3NHcm91cHNbY2xhc3NHcm91cElkXSB8fCBbXTtcbiAgICBpZiAoaGFzUG9zdGZpeE1vZGlmaWVyICYmIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyc1tjbGFzc0dyb3VwSWRdKSB7XG4gICAgICByZXR1cm4gWy4uLmNvbmZsaWN0cywgLi4uY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzW2NsYXNzR3JvdXBJZF1dO1xuICAgIH1cbiAgICByZXR1cm4gY29uZmxpY3RzO1xuICB9XG4gIHJldHVybiB7XG4gICAgZ2V0Q2xhc3NHcm91cElkLFxuICAgIGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkc1xuICB9O1xufVxuZnVuY3Rpb24gZ2V0R3JvdXBSZWN1cnNpdmUoY2xhc3NQYXJ0cywgY2xhc3NQYXJ0T2JqZWN0KSB7XG4gIGlmIChjbGFzc1BhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBjbGFzc1BhcnRPYmplY3QuY2xhc3NHcm91cElkO1xuICB9XG4gIGNvbnN0IGN1cnJlbnRDbGFzc1BhcnQgPSBjbGFzc1BhcnRzWzBdO1xuICBjb25zdCBuZXh0Q2xhc3NQYXJ0T2JqZWN0ID0gY2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LmdldChjdXJyZW50Q2xhc3NQYXJ0KTtcbiAgY29uc3QgY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0ID0gbmV4dENsYXNzUGFydE9iamVjdCA/IGdldEdyb3VwUmVjdXJzaXZlKGNsYXNzUGFydHMuc2xpY2UoMSksIG5leHRDbGFzc1BhcnRPYmplY3QpIDogdW5kZWZpbmVkO1xuICBpZiAoY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0KSB7XG4gICAgcmV0dXJuIGNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydDtcbiAgfVxuICBpZiAoY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBjbGFzc1Jlc3QgPSBjbGFzc1BhcnRzLmpvaW4oQ0xBU1NfUEFSVF9TRVBBUkFUT1IpO1xuICByZXR1cm4gY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMuZmluZCgoe1xuICAgIHZhbGlkYXRvclxuICB9KSA9PiB2YWxpZGF0b3IoY2xhc3NSZXN0KSk/LmNsYXNzR3JvdXBJZDtcbn1cbmNvbnN0IGFyYml0cmFyeVByb3BlcnR5UmVnZXggPSAvXlxcWyguKylcXF0kLztcbmZ1bmN0aW9uIGdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eShjbGFzc05hbWUpIHtcbiAgaWYgKGFyYml0cmFyeVByb3BlcnR5UmVnZXgudGVzdChjbGFzc05hbWUpKSB7XG4gICAgY29uc3QgYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUgPSBhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4LmV4ZWMoY2xhc3NOYW1lKVsxXTtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IGFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lPy5zdWJzdHJpbmcoMCwgYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUuaW5kZXhPZignOicpKTtcbiAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgIC8vIEkgdXNlIHR3byBkb3RzIGhlcmUgYmVjYXVzZSBvbmUgZG90IGlzIHVzZWQgYXMgcHJlZml4IGZvciBjbGFzcyBncm91cHMgaW4gcGx1Z2luc1xuICAgICAgcmV0dXJuICdhcmJpdHJhcnkuLicgKyBwcm9wZXJ0eTtcbiAgICB9XG4gIH1cbn1cbi8qKlxuICogRXhwb3J0ZWQgZm9yIHRlc3Rpbmcgb25seVxuICovXG5mdW5jdGlvbiBjcmVhdGVDbGFzc01hcChjb25maWcpIHtcbiAgY29uc3Qge1xuICAgIHRoZW1lLFxuICAgIHByZWZpeFxuICB9ID0gY29uZmlnO1xuICBjb25zdCBjbGFzc01hcCA9IHtcbiAgICBuZXh0UGFydDogbmV3IE1hcCgpLFxuICAgIHZhbGlkYXRvcnM6IFtdXG4gIH07XG4gIGNvbnN0IHByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMgPSBnZXRQcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzKE9iamVjdC5lbnRyaWVzKGNvbmZpZy5jbGFzc0dyb3VwcyksIHByZWZpeCk7XG4gIHByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMuZm9yRWFjaCgoW2NsYXNzR3JvdXBJZCwgY2xhc3NHcm91cF0pID0+IHtcbiAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KGNsYXNzR3JvdXAsIGNsYXNzTWFwLCBjbGFzc0dyb3VwSWQsIHRoZW1lKTtcbiAgfSk7XG4gIHJldHVybiBjbGFzc01hcDtcbn1cbmZ1bmN0aW9uIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoY2xhc3NHcm91cCwgY2xhc3NQYXJ0T2JqZWN0LCBjbGFzc0dyb3VwSWQsIHRoZW1lKSB7XG4gIGNsYXNzR3JvdXAuZm9yRWFjaChjbGFzc0RlZmluaXRpb24gPT4ge1xuICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgY2xhc3NQYXJ0T2JqZWN0VG9FZGl0ID0gY2xhc3NEZWZpbml0aW9uID09PSAnJyA/IGNsYXNzUGFydE9iamVjdCA6IGdldFBhcnQoY2xhc3NQYXJ0T2JqZWN0LCBjbGFzc0RlZmluaXRpb24pO1xuICAgICAgY2xhc3NQYXJ0T2JqZWN0VG9FZGl0LmNsYXNzR3JvdXBJZCA9IGNsYXNzR3JvdXBJZDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChpc1RoZW1lR2V0dGVyKGNsYXNzRGVmaW5pdGlvbikpIHtcbiAgICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShjbGFzc0RlZmluaXRpb24odGhlbWUpLCBjbGFzc1BhcnRPYmplY3QsIGNsYXNzR3JvdXBJZCwgdGhlbWUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5wdXNoKHtcbiAgICAgICAgdmFsaWRhdG9yOiBjbGFzc0RlZmluaXRpb24sXG4gICAgICAgIGNsYXNzR3JvdXBJZFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIE9iamVjdC5lbnRyaWVzKGNsYXNzRGVmaW5pdGlvbikuZm9yRWFjaCgoW2tleSwgY2xhc3NHcm91cF0pID0+IHtcbiAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoY2xhc3NHcm91cCwgZ2V0UGFydChjbGFzc1BhcnRPYmplY3QsIGtleSksIGNsYXNzR3JvdXBJZCwgdGhlbWUpO1xuICAgIH0pO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGdldFBhcnQoY2xhc3NQYXJ0T2JqZWN0LCBwYXRoKSB7XG4gIGxldCBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0ID0gY2xhc3NQYXJ0T2JqZWN0O1xuICBwYXRoLnNwbGl0KENMQVNTX1BBUlRfU0VQQVJBVE9SKS5mb3JFYWNoKHBhdGhQYXJ0ID0+IHtcbiAgICBpZiAoIWN1cnJlbnRDbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuaGFzKHBhdGhQYXJ0KSkge1xuICAgICAgY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5zZXQocGF0aFBhcnQsIHtcbiAgICAgICAgbmV4dFBhcnQ6IG5ldyBNYXAoKSxcbiAgICAgICAgdmFsaWRhdG9yczogW11cbiAgICAgIH0pO1xuICAgIH1cbiAgICBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0ID0gY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5nZXQocGF0aFBhcnQpO1xuICB9KTtcbiAgcmV0dXJuIGN1cnJlbnRDbGFzc1BhcnRPYmplY3Q7XG59XG5mdW5jdGlvbiBpc1RoZW1lR2V0dGVyKGZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmMuaXNUaGVtZUdldHRlcjtcbn1cbmZ1bmN0aW9uIGdldFByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMoY2xhc3NHcm91cEVudHJpZXMsIHByZWZpeCkge1xuICBpZiAoIXByZWZpeCkge1xuICAgIHJldHVybiBjbGFzc0dyb3VwRW50cmllcztcbiAgfVxuICByZXR1cm4gY2xhc3NHcm91cEVudHJpZXMubWFwKChbY2xhc3NHcm91cElkLCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgIGNvbnN0IHByZWZpeGVkQ2xhc3NHcm91cCA9IGNsYXNzR3JvdXAubWFwKGNsYXNzRGVmaW5pdGlvbiA9PiB7XG4gICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHByZWZpeCArIGNsYXNzRGVmaW5pdGlvbjtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGNsYXNzRGVmaW5pdGlvbikubWFwKChba2V5LCB2YWx1ZV0pID0+IFtwcmVmaXggKyBrZXksIHZhbHVlXSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNsYXNzRGVmaW5pdGlvbjtcbiAgICB9KTtcbiAgICByZXR1cm4gW2NsYXNzR3JvdXBJZCwgcHJlZml4ZWRDbGFzc0dyb3VwXTtcbiAgfSk7XG59XG5cbi8vIExSVSBjYWNoZSBpbnNwaXJlZCBmcm9tIGhhc2hscnUgKGh0dHBzOi8vZ2l0aHViLmNvbS9kb21pbmljdGFyci9oYXNobHJ1L2Jsb2IvdjEuMC40L2luZGV4LmpzKSBidXQgb2JqZWN0IHJlcGxhY2VkIHdpdGggTWFwIHRvIGltcHJvdmUgcGVyZm9ybWFuY2VcbmZ1bmN0aW9uIGNyZWF0ZUxydUNhY2hlKG1heENhY2hlU2l6ZSkge1xuICBpZiAobWF4Q2FjaGVTaXplIDwgMSkge1xuICAgIHJldHVybiB7XG4gICAgICBnZXQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgIHNldDogKCkgPT4ge31cbiAgICB9O1xuICB9XG4gIGxldCBjYWNoZVNpemUgPSAwO1xuICBsZXQgY2FjaGUgPSBuZXcgTWFwKCk7XG4gIGxldCBwcmV2aW91c0NhY2hlID0gbmV3IE1hcCgpO1xuICBmdW5jdGlvbiB1cGRhdGUoa2V5LCB2YWx1ZSkge1xuICAgIGNhY2hlLnNldChrZXksIHZhbHVlKTtcbiAgICBjYWNoZVNpemUrKztcbiAgICBpZiAoY2FjaGVTaXplID4gbWF4Q2FjaGVTaXplKSB7XG4gICAgICBjYWNoZVNpemUgPSAwO1xuICAgICAgcHJldmlvdXNDYWNoZSA9IGNhY2hlO1xuICAgICAgY2FjaGUgPSBuZXcgTWFwKCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgZ2V0KGtleSkge1xuICAgICAgbGV0IHZhbHVlID0gY2FjaGUuZ2V0KGtleSk7XG4gICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoKHZhbHVlID0gcHJldmlvdXNDYWNoZS5nZXQoa2V5KSkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cGRhdGUoa2V5LCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNldChrZXksIHZhbHVlKSB7XG4gICAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgICAgY2FjaGUuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXBkYXRlKGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbmNvbnN0IElNUE9SVEFOVF9NT0RJRklFUiA9ICchJztcbmZ1bmN0aW9uIGNyZWF0ZVBhcnNlQ2xhc3NOYW1lKGNvbmZpZykge1xuICBjb25zdCB7XG4gICAgc2VwYXJhdG9yLFxuICAgIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lXG4gIH0gPSBjb25maWc7XG4gIGNvbnN0IGlzU2VwYXJhdG9yU2luZ2xlQ2hhcmFjdGVyID0gc2VwYXJhdG9yLmxlbmd0aCA9PT0gMTtcbiAgY29uc3QgZmlyc3RTZXBhcmF0b3JDaGFyYWN0ZXIgPSBzZXBhcmF0b3JbMF07XG4gIGNvbnN0IHNlcGFyYXRvckxlbmd0aCA9IHNlcGFyYXRvci5sZW5ndGg7XG4gIC8vIHBhcnNlQ2xhc3NOYW1lIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS90YWlsd2luZGxhYnMvdGFpbHdpbmRjc3MvYmxvYi92My4yLjIvc3JjL3V0aWwvc3BsaXRBdFRvcExldmVsT25seS5qc1xuICBmdW5jdGlvbiBwYXJzZUNsYXNzTmFtZShjbGFzc05hbWUpIHtcbiAgICBjb25zdCBtb2RpZmllcnMgPSBbXTtcbiAgICBsZXQgYnJhY2tldERlcHRoID0gMDtcbiAgICBsZXQgbW9kaWZpZXJTdGFydCA9IDA7XG4gICAgbGV0IHBvc3RmaXhNb2RpZmllclBvc2l0aW9uO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjbGFzc05hbWUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBsZXQgY3VycmVudENoYXJhY3RlciA9IGNsYXNzTmFtZVtpbmRleF07XG4gICAgICBpZiAoYnJhY2tldERlcHRoID09PSAwKSB7XG4gICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSBmaXJzdFNlcGFyYXRvckNoYXJhY3RlciAmJiAoaXNTZXBhcmF0b3JTaW5nbGVDaGFyYWN0ZXIgfHwgY2xhc3NOYW1lLnNsaWNlKGluZGV4LCBpbmRleCArIHNlcGFyYXRvckxlbmd0aCkgPT09IHNlcGFyYXRvcikpIHtcbiAgICAgICAgICBtb2RpZmllcnMucHVzaChjbGFzc05hbWUuc2xpY2UobW9kaWZpZXJTdGFydCwgaW5kZXgpKTtcbiAgICAgICAgICBtb2RpZmllclN0YXJ0ID0gaW5kZXggKyBzZXBhcmF0b3JMZW5ndGg7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICcvJykge1xuICAgICAgICAgIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uID0gaW5kZXg7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSAnWycpIHtcbiAgICAgICAgYnJhY2tldERlcHRoKys7XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICddJykge1xuICAgICAgICBicmFja2V0RGVwdGgtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllciA9IG1vZGlmaWVycy5sZW5ndGggPT09IDAgPyBjbGFzc05hbWUgOiBjbGFzc05hbWUuc3Vic3RyaW5nKG1vZGlmaWVyU3RhcnQpO1xuICAgIGNvbnN0IGhhc0ltcG9ydGFudE1vZGlmaWVyID0gYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllci5zdGFydHNXaXRoKElNUE9SVEFOVF9NT0RJRklFUik7XG4gICAgY29uc3QgYmFzZUNsYXNzTmFtZSA9IGhhc0ltcG9ydGFudE1vZGlmaWVyID8gYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllci5zdWJzdHJpbmcoMSkgOiBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyO1xuICAgIGNvbnN0IG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gPSBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiAmJiBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA+IG1vZGlmaWVyU3RhcnQgPyBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiAtIG1vZGlmaWVyU3RhcnQgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZGlmaWVycyxcbiAgICAgIGhhc0ltcG9ydGFudE1vZGlmaWVyLFxuICAgICAgYmFzZUNsYXNzTmFtZSxcbiAgICAgIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb25cbiAgICB9O1xuICB9XG4gIGlmIChleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBwYXJzZUNsYXNzTmFtZUV4cGVyaW1lbnRhbChjbGFzc05hbWUpIHtcbiAgICAgIHJldHVybiBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSh7XG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgcGFyc2VDbGFzc05hbWVcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIHBhcnNlQ2xhc3NOYW1lO1xufVxuLyoqXG4gKiBTb3J0cyBtb2RpZmllcnMgYWNjb3JkaW5nIHRvIGZvbGxvd2luZyBzY2hlbWE6XG4gKiAtIFByZWRlZmluZWQgbW9kaWZpZXJzIGFyZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHlcbiAqIC0gV2hlbiBhbiBhcmJpdHJhcnkgdmFyaWFudCBhcHBlYXJzLCBpdCBtdXN0IGJlIHByZXNlcnZlZCB3aGljaCBtb2RpZmllcnMgYXJlIGJlZm9yZSBhbmQgYWZ0ZXIgaXRcbiAqL1xuZnVuY3Rpb24gc29ydE1vZGlmaWVycyhtb2RpZmllcnMpIHtcbiAgaWYgKG1vZGlmaWVycy5sZW5ndGggPD0gMSkge1xuICAgIHJldHVybiBtb2RpZmllcnM7XG4gIH1cbiAgY29uc3Qgc29ydGVkTW9kaWZpZXJzID0gW107XG4gIGxldCB1bnNvcnRlZE1vZGlmaWVycyA9IFtdO1xuICBtb2RpZmllcnMuZm9yRWFjaChtb2RpZmllciA9PiB7XG4gICAgY29uc3QgaXNBcmJpdHJhcnlWYXJpYW50ID0gbW9kaWZpZXJbMF0gPT09ICdbJztcbiAgICBpZiAoaXNBcmJpdHJhcnlWYXJpYW50KSB7XG4gICAgICBzb3J0ZWRNb2RpZmllcnMucHVzaCguLi51bnNvcnRlZE1vZGlmaWVycy5zb3J0KCksIG1vZGlmaWVyKTtcbiAgICAgIHVuc29ydGVkTW9kaWZpZXJzID0gW107XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuc29ydGVkTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xuICAgIH1cbiAgfSk7XG4gIHNvcnRlZE1vZGlmaWVycy5wdXNoKC4uLnVuc29ydGVkTW9kaWZpZXJzLnNvcnQoKSk7XG4gIHJldHVybiBzb3J0ZWRNb2RpZmllcnM7XG59XG5mdW5jdGlvbiBjcmVhdGVDb25maWdVdGlscyhjb25maWcpIHtcbiAgcmV0dXJuIHtcbiAgICBjYWNoZTogY3JlYXRlTHJ1Q2FjaGUoY29uZmlnLmNhY2hlU2l6ZSksXG4gICAgcGFyc2VDbGFzc05hbWU6IGNyZWF0ZVBhcnNlQ2xhc3NOYW1lKGNvbmZpZyksXG4gICAgLi4uY3JlYXRlQ2xhc3NHcm91cFV0aWxzKGNvbmZpZylcbiAgfTtcbn1cbmNvbnN0IFNQTElUX0NMQVNTRVNfUkVHRVggPSAvXFxzKy87XG5mdW5jdGlvbiBtZXJnZUNsYXNzTGlzdChjbGFzc0xpc3QsIGNvbmZpZ1V0aWxzKSB7XG4gIGNvbnN0IHtcbiAgICBwYXJzZUNsYXNzTmFtZSxcbiAgICBnZXRDbGFzc0dyb3VwSWQsXG4gICAgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzXG4gIH0gPSBjb25maWdVdGlscztcbiAgLyoqXG4gICAqIFNldCBvZiBjbGFzc0dyb3VwSWRzIGluIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAqIGB7aW1wb3J0YW50TW9kaWZpZXJ9e3ZhcmlhbnRNb2RpZmllcnN9e2NsYXNzR3JvdXBJZH1gXG4gICAqIEBleGFtcGxlICdmbG9hdCdcbiAgICogQGV4YW1wbGUgJ2hvdmVyOmZvY3VzOmJnLWNvbG9yJ1xuICAgKiBAZXhhbXBsZSAnbWQ6IXByJ1xuICAgKi9cbiAgY29uc3QgY2xhc3NHcm91cHNJbkNvbmZsaWN0ID0gbmV3IFNldCgpO1xuICByZXR1cm4gY2xhc3NMaXN0LnRyaW0oKS5zcGxpdChTUExJVF9DTEFTU0VTX1JFR0VYKS5tYXAob3JpZ2luYWxDbGFzc05hbWUgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG1vZGlmaWVycyxcbiAgICAgIGhhc0ltcG9ydGFudE1vZGlmaWVyLFxuICAgICAgYmFzZUNsYXNzTmFtZSxcbiAgICAgIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb25cbiAgICB9ID0gcGFyc2VDbGFzc05hbWUob3JpZ2luYWxDbGFzc05hbWUpO1xuICAgIGxldCBoYXNQb3N0Zml4TW9kaWZpZXIgPSBCb29sZWFuKG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24pO1xuICAgIGxldCBjbGFzc0dyb3VwSWQgPSBnZXRDbGFzc0dyb3VwSWQoaGFzUG9zdGZpeE1vZGlmaWVyID8gYmFzZUNsYXNzTmFtZS5zdWJzdHJpbmcoMCwgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbikgOiBiYXNlQ2xhc3NOYW1lKTtcbiAgICBpZiAoIWNsYXNzR3JvdXBJZCkge1xuICAgICAgaWYgKCFoYXNQb3N0Zml4TW9kaWZpZXIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpc1RhaWx3aW5kQ2xhc3M6IGZhbHNlLFxuICAgICAgICAgIG9yaWdpbmFsQ2xhc3NOYW1lXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjbGFzc0dyb3VwSWQgPSBnZXRDbGFzc0dyb3VwSWQoYmFzZUNsYXNzTmFtZSk7XG4gICAgICBpZiAoIWNsYXNzR3JvdXBJZCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlzVGFpbHdpbmRDbGFzczogZmFsc2UsXG4gICAgICAgICAgb3JpZ2luYWxDbGFzc05hbWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGhhc1Bvc3RmaXhNb2RpZmllciA9IGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB2YXJpYW50TW9kaWZpZXIgPSBzb3J0TW9kaWZpZXJzKG1vZGlmaWVycykuam9pbignOicpO1xuICAgIGNvbnN0IG1vZGlmaWVySWQgPSBoYXNJbXBvcnRhbnRNb2RpZmllciA/IHZhcmlhbnRNb2RpZmllciArIElNUE9SVEFOVF9NT0RJRklFUiA6IHZhcmlhbnRNb2RpZmllcjtcbiAgICByZXR1cm4ge1xuICAgICAgaXNUYWlsd2luZENsYXNzOiB0cnVlLFxuICAgICAgbW9kaWZpZXJJZCxcbiAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgIG9yaWdpbmFsQ2xhc3NOYW1lLFxuICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyXG4gICAgfTtcbiAgfSkucmV2ZXJzZSgpXG4gIC8vIExhc3QgY2xhc3MgaW4gY29uZmxpY3Qgd2lucywgc28gd2UgbmVlZCB0byBmaWx0ZXIgY29uZmxpY3RpbmcgY2xhc3NlcyBpbiByZXZlcnNlIG9yZGVyLlxuICAuZmlsdGVyKHBhcnNlZCA9PiB7XG4gICAgaWYgKCFwYXJzZWQuaXNUYWlsd2luZENsYXNzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3Qge1xuICAgICAgbW9kaWZpZXJJZCxcbiAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgIGhhc1Bvc3RmaXhNb2RpZmllclxuICAgIH0gPSBwYXJzZWQ7XG4gICAgY29uc3QgY2xhc3NJZCA9IG1vZGlmaWVySWQgKyBjbGFzc0dyb3VwSWQ7XG4gICAgaWYgKGNsYXNzR3JvdXBzSW5Db25mbGljdC5oYXMoY2xhc3NJZCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY2xhc3NHcm91cHNJbkNvbmZsaWN0LmFkZChjbGFzc0lkKTtcbiAgICBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMoY2xhc3NHcm91cElkLCBoYXNQb3N0Zml4TW9kaWZpZXIpLmZvckVhY2goZ3JvdXAgPT4gY2xhc3NHcm91cHNJbkNvbmZsaWN0LmFkZChtb2RpZmllcklkICsgZ3JvdXApKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSkucmV2ZXJzZSgpLm1hcChwYXJzZWQgPT4gcGFyc2VkLm9yaWdpbmFsQ2xhc3NOYW1lKS5qb2luKCcgJyk7XG59XG5cbi8qKlxuICogVGhlIGNvZGUgaW4gdGhpcyBmaWxlIGlzIGNvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeCBhbmQgbW9kaWZpZWQgdG8gc3VpdCB0aGUgbmVlZHMgb2YgdGFpbHdpbmQtbWVyZ2UgYmV0dGVyLlxuICpcbiAqIFNwZWNpZmljYWxseTpcbiAqIC0gUnVudGltZSBjb2RlIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL3NyYy9pbmRleC5qc1xuICogLSBUeXBlU2NyaXB0IHR5cGVzIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL2Nsc3guZC50c1xuICpcbiAqIE9yaWdpbmFsIGNvZGUgaGFzIE1JVCBsaWNlbnNlOiBDb3B5cmlnaHQgKGMpIEx1a2UgRWR3YXJkcyA8bHVrZS5lZHdhcmRzMDVAZ21haWwuY29tPiAobHVrZWVkLmNvbSlcbiAqL1xuZnVuY3Rpb24gdHdKb2luKCkge1xuICBsZXQgaW5kZXggPSAwO1xuICBsZXQgYXJndW1lbnQ7XG4gIGxldCByZXNvbHZlZFZhbHVlO1xuICBsZXQgc3RyaW5nID0gJyc7XG4gIHdoaWxlIChpbmRleCA8IGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICBpZiAoYXJndW1lbnQgPSBhcmd1bWVudHNbaW5kZXgrK10pIHtcbiAgICAgIGlmIChyZXNvbHZlZFZhbHVlID0gdG9WYWx1ZShhcmd1bWVudCkpIHtcbiAgICAgICAgc3RyaW5nICYmIChzdHJpbmcgKz0gJyAnKTtcbiAgICAgICAgc3RyaW5nICs9IHJlc29sdmVkVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHJpbmc7XG59XG5mdW5jdGlvbiB0b1ZhbHVlKG1peCkge1xuICBpZiAodHlwZW9mIG1peCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbWl4O1xuICB9XG4gIGxldCByZXNvbHZlZFZhbHVlO1xuICBsZXQgc3RyaW5nID0gJyc7XG4gIGZvciAobGV0IGsgPSAwOyBrIDwgbWl4Lmxlbmd0aDsgaysrKSB7XG4gICAgaWYgKG1peFtrXSkge1xuICAgICAgaWYgKHJlc29sdmVkVmFsdWUgPSB0b1ZhbHVlKG1peFtrXSkpIHtcbiAgICAgICAgc3RyaW5nICYmIChzdHJpbmcgKz0gJyAnKTtcbiAgICAgICAgc3RyaW5nICs9IHJlc29sdmVkVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHJpbmc7XG59XG5mdW5jdGlvbiBjcmVhdGVUYWlsd2luZE1lcmdlKGNyZWF0ZUNvbmZpZ0ZpcnN0LCAuLi5jcmVhdGVDb25maWdSZXN0KSB7XG4gIGxldCBjb25maWdVdGlscztcbiAgbGV0IGNhY2hlR2V0O1xuICBsZXQgY2FjaGVTZXQ7XG4gIGxldCBmdW5jdGlvblRvQ2FsbCA9IGluaXRUYWlsd2luZE1lcmdlO1xuICBmdW5jdGlvbiBpbml0VGFpbHdpbmRNZXJnZShjbGFzc0xpc3QpIHtcbiAgICBjb25zdCBjb25maWcgPSBjcmVhdGVDb25maWdSZXN0LnJlZHVjZSgocHJldmlvdXNDb25maWcsIGNyZWF0ZUNvbmZpZ0N1cnJlbnQpID0+IGNyZWF0ZUNvbmZpZ0N1cnJlbnQocHJldmlvdXNDb25maWcpLCBjcmVhdGVDb25maWdGaXJzdCgpKTtcbiAgICBjb25maWdVdGlscyA9IGNyZWF0ZUNvbmZpZ1V0aWxzKGNvbmZpZyk7XG4gICAgY2FjaGVHZXQgPSBjb25maWdVdGlscy5jYWNoZS5nZXQ7XG4gICAgY2FjaGVTZXQgPSBjb25maWdVdGlscy5jYWNoZS5zZXQ7XG4gICAgZnVuY3Rpb25Ub0NhbGwgPSB0YWlsd2luZE1lcmdlO1xuICAgIHJldHVybiB0YWlsd2luZE1lcmdlKGNsYXNzTGlzdCk7XG4gIH1cbiAgZnVuY3Rpb24gdGFpbHdpbmRNZXJnZShjbGFzc0xpc3QpIHtcbiAgICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZUdldChjbGFzc0xpc3QpO1xuICAgIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IG1lcmdlQ2xhc3NMaXN0KGNsYXNzTGlzdCwgY29uZmlnVXRpbHMpO1xuICAgIGNhY2hlU2V0KGNsYXNzTGlzdCwgcmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiBjYWxsVGFpbHdpbmRNZXJnZSgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb25Ub0NhbGwodHdKb2luLmFwcGx5KG51bGwsIGFyZ3VtZW50cykpO1xuICB9O1xufVxuZnVuY3Rpb24gZnJvbVRoZW1lKGtleSkge1xuICBjb25zdCB0aGVtZUdldHRlciA9IHRoZW1lID0+IHRoZW1lW2tleV0gfHwgW107XG4gIHRoZW1lR2V0dGVyLmlzVGhlbWVHZXR0ZXIgPSB0cnVlO1xuICByZXR1cm4gdGhlbWVHZXR0ZXI7XG59XG5jb25zdCBhcmJpdHJhcnlWYWx1ZVJlZ2V4ID0gL15cXFsoPzooW2Etei1dKyk6KT8oLispXFxdJC9pO1xuY29uc3QgZnJhY3Rpb25SZWdleCA9IC9eXFxkK1xcL1xcZCskLztcbmNvbnN0IHN0cmluZ0xlbmd0aHMgPSAvKiNfX1BVUkVfXyovbmV3IFNldChbJ3B4JywgJ2Z1bGwnLCAnc2NyZWVuJ10pO1xuY29uc3QgdHNoaXJ0VW5pdFJlZ2V4ID0gL14oXFxkKyhcXC5cXGQrKT8pPyh4c3xzbXxtZHxsZ3x4bCkkLztcbmNvbnN0IGxlbmd0aFVuaXRSZWdleCA9IC9cXGQrKCV8cHh8cj9lbXxbc2RsXT92KFtod2liXXxtaW58bWF4KXxwdHxwY3xpbnxjbXxtbXxjYXB8Y2h8ZXh8cj9saHxjcSh3fGh8aXxifG1pbnxtYXgpKXxcXGIoY2FsY3xtaW58bWF4fGNsYW1wKVxcKC4rXFwpfF4wJC87XG5jb25zdCBjb2xvckZ1bmN0aW9uUmVnZXggPSAvXihyZ2JhP3xoc2xhP3xod2J8KG9rKT8obGFifGxjaCkpXFwoLitcXCkkLztcbi8vIFNoYWRvdyBhbHdheXMgYmVnaW5zIHdpdGggeCBhbmQgeSBvZmZzZXQgc2VwYXJhdGVkIGJ5IHVuZGVyc2NvcmUgb3B0aW9uYWxseSBwcmVwZW5kZWQgYnkgaW5zZXRcbmNvbnN0IHNoYWRvd1JlZ2V4ID0gL14oaW5zZXRfKT8tPygoXFxkKyk/XFwuPyhcXGQrKVthLXpdK3wwKV8tPygoXFxkKyk/XFwuPyhcXGQrKVthLXpdK3wwKS87XG5jb25zdCBpbWFnZVJlZ2V4ID0gL14odXJsfGltYWdlfGltYWdlLXNldHxjcm9zcy1mYWRlfGVsZW1lbnR8KHJlcGVhdGluZy0pPyhsaW5lYXJ8cmFkaWFsfGNvbmljKS1ncmFkaWVudClcXCguK1xcKSQvO1xuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIGlzTnVtYmVyKHZhbHVlKSB8fCBzdHJpbmdMZW5ndGhzLmhhcyh2YWx1ZSkgfHwgZnJhY3Rpb25SZWdleC50ZXN0KHZhbHVlKTtcbn1cbmZ1bmN0aW9uIGlzQXJiaXRyYXJ5TGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnbGVuZ3RoJywgaXNMZW5ndGhPbmx5KTtcbn1cbmZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gIHJldHVybiBCb29sZWFuKHZhbHVlKSAmJiAhTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpO1xufVxuZnVuY3Rpb24gaXNBcmJpdHJhcnlOdW1iZXIodmFsdWUpIHtcbiAgcmV0dXJuIGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdudW1iZXInLCBpc051bWJlcik7XG59XG5mdW5jdGlvbiBpc0ludGVnZXIodmFsdWUpIHtcbiAgcmV0dXJuIEJvb2xlYW4odmFsdWUpICYmIE51bWJlci5pc0ludGVnZXIoTnVtYmVyKHZhbHVlKSk7XG59XG5mdW5jdGlvbiBpc1BlcmNlbnQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlLmVuZHNXaXRoKCclJykgJiYgaXNOdW1iZXIodmFsdWUuc2xpY2UoMCwgLTEpKTtcbn1cbmZ1bmN0aW9uIGlzQXJiaXRyYXJ5VmFsdWUodmFsdWUpIHtcbiAgcmV0dXJuIGFyYml0cmFyeVZhbHVlUmVnZXgudGVzdCh2YWx1ZSk7XG59XG5mdW5jdGlvbiBpc1RzaGlydFNpemUodmFsdWUpIHtcbiAgcmV0dXJuIHRzaGlydFVuaXRSZWdleC50ZXN0KHZhbHVlKTtcbn1cbmNvbnN0IHNpemVMYWJlbHMgPSAvKiNfX1BVUkVfXyovbmV3IFNldChbJ2xlbmd0aCcsICdzaXplJywgJ3BlcmNlbnRhZ2UnXSk7XG5mdW5jdGlvbiBpc0FyYml0cmFyeVNpemUodmFsdWUpIHtcbiAgcmV0dXJuIGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsIHNpemVMYWJlbHMsIGlzTmV2ZXIpO1xufVxuZnVuY3Rpb24gaXNBcmJpdHJhcnlQb3NpdGlvbih2YWx1ZSkge1xuICByZXR1cm4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ3Bvc2l0aW9uJywgaXNOZXZlcik7XG59XG5jb25zdCBpbWFnZUxhYmVscyA9IC8qI19fUFVSRV9fKi9uZXcgU2V0KFsnaW1hZ2UnLCAndXJsJ10pO1xuZnVuY3Rpb24gaXNBcmJpdHJhcnlJbWFnZSh2YWx1ZSkge1xuICByZXR1cm4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgaW1hZ2VMYWJlbHMsIGlzSW1hZ2UpO1xufVxuZnVuY3Rpb24gaXNBcmJpdHJhcnlTaGFkb3codmFsdWUpIHtcbiAgcmV0dXJuIGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICcnLCBpc1NoYWRvdyk7XG59XG5mdW5jdGlvbiBpc0FueSgpIHtcbiAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCBsYWJlbCwgdGVzdFZhbHVlKSB7XG4gIGNvbnN0IHJlc3VsdCA9IGFyYml0cmFyeVZhbHVlUmVnZXguZXhlYyh2YWx1ZSk7XG4gIGlmIChyZXN1bHQpIHtcbiAgICBpZiAocmVzdWx0WzFdKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGxhYmVsID09PSAnc3RyaW5nJyA/IHJlc3VsdFsxXSA9PT0gbGFiZWwgOiBsYWJlbC5oYXMocmVzdWx0WzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIHRlc3RWYWx1ZShyZXN1bHRbMl0pO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGlzTGVuZ3RoT25seSh2YWx1ZSkge1xuICAvLyBgY29sb3JGdW5jdGlvblJlZ2V4YCBjaGVjayBpcyBuZWNlc3NhcnkgYmVjYXVzZSBjb2xvciBmdW5jdGlvbnMgY2FuIGhhdmUgcGVyY2VudGFnZXMgaW4gdGhlbSB3aGljaCB3aGljaCB3b3VsZCBiZSBpbmNvcnJlY3RseSBjbGFzc2lmaWVkIGFzIGxlbmd0aHMuXG4gIC8vIEZvciBleGFtcGxlLCBgaHNsKDAgMCUgMCUpYCB3b3VsZCBiZSBjbGFzc2lmaWVkIGFzIGEgbGVuZ3RoIHdpdGhvdXQgdGhpcyBjaGVjay5cbiAgLy8gSSBjb3VsZCBhbHNvIHVzZSBsb29rYmVoaW5kIGFzc2VydGlvbiBpbiBgbGVuZ3RoVW5pdFJlZ2V4YCBidXQgdGhhdCBpc24ndCBzdXBwb3J0ZWQgd2lkZWx5IGVub3VnaC5cbiAgcmV0dXJuIGxlbmd0aFVuaXRSZWdleC50ZXN0KHZhbHVlKSAmJiAhY29sb3JGdW5jdGlvblJlZ2V4LnRlc3QodmFsdWUpO1xufVxuZnVuY3Rpb24gaXNOZXZlcigpIHtcbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gaXNTaGFkb3codmFsdWUpIHtcbiAgcmV0dXJuIHNoYWRvd1JlZ2V4LnRlc3QodmFsdWUpO1xufVxuZnVuY3Rpb24gaXNJbWFnZSh2YWx1ZSkge1xuICByZXR1cm4gaW1hZ2VSZWdleC50ZXN0KHZhbHVlKTtcbn1cbmNvbnN0IHZhbGlkYXRvcnMgPSAvKiNfX1BVUkVfXyovT2JqZWN0LmRlZmluZVByb3BlcnR5KHtcbiAgX19wcm90b19fOiBudWxsLFxuICBpc0FueSxcbiAgaXNBcmJpdHJhcnlJbWFnZSxcbiAgaXNBcmJpdHJhcnlMZW5ndGgsXG4gIGlzQXJiaXRyYXJ5TnVtYmVyLFxuICBpc0FyYml0cmFyeVBvc2l0aW9uLFxuICBpc0FyYml0cmFyeVNoYWRvdyxcbiAgaXNBcmJpdHJhcnlTaXplLFxuICBpc0FyYml0cmFyeVZhbHVlLFxuICBpc0ludGVnZXIsXG4gIGlzTGVuZ3RoLFxuICBpc051bWJlcixcbiAgaXNQZXJjZW50LFxuICBpc1RzaGlydFNpemVcbn0sIFN5bWJvbC50b1N0cmluZ1RhZywge1xuICB2YWx1ZTogJ01vZHVsZSdcbn0pO1xuZnVuY3Rpb24gZ2V0RGVmYXVsdENvbmZpZygpIHtcbiAgY29uc3QgY29sb3JzID0gZnJvbVRoZW1lKCdjb2xvcnMnKTtcbiAgY29uc3Qgc3BhY2luZyA9IGZyb21UaGVtZSgnc3BhY2luZycpO1xuICBjb25zdCBibHVyID0gZnJvbVRoZW1lKCdibHVyJyk7XG4gIGNvbnN0IGJyaWdodG5lc3MgPSBmcm9tVGhlbWUoJ2JyaWdodG5lc3MnKTtcbiAgY29uc3QgYm9yZGVyQ29sb3IgPSBmcm9tVGhlbWUoJ2JvcmRlckNvbG9yJyk7XG4gIGNvbnN0IGJvcmRlclJhZGl1cyA9IGZyb21UaGVtZSgnYm9yZGVyUmFkaXVzJyk7XG4gIGNvbnN0IGJvcmRlclNwYWNpbmcgPSBmcm9tVGhlbWUoJ2JvcmRlclNwYWNpbmcnKTtcbiAgY29uc3QgYm9yZGVyV2lkdGggPSBmcm9tVGhlbWUoJ2JvcmRlcldpZHRoJyk7XG4gIGNvbnN0IGNvbnRyYXN0ID0gZnJvbVRoZW1lKCdjb250cmFzdCcpO1xuICBjb25zdCBncmF5c2NhbGUgPSBmcm9tVGhlbWUoJ2dyYXlzY2FsZScpO1xuICBjb25zdCBodWVSb3RhdGUgPSBmcm9tVGhlbWUoJ2h1ZVJvdGF0ZScpO1xuICBjb25zdCBpbnZlcnQgPSBmcm9tVGhlbWUoJ2ludmVydCcpO1xuICBjb25zdCBnYXAgPSBmcm9tVGhlbWUoJ2dhcCcpO1xuICBjb25zdCBncmFkaWVudENvbG9yU3RvcHMgPSBmcm9tVGhlbWUoJ2dyYWRpZW50Q29sb3JTdG9wcycpO1xuICBjb25zdCBncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucyA9IGZyb21UaGVtZSgnZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMnKTtcbiAgY29uc3QgaW5zZXQgPSBmcm9tVGhlbWUoJ2luc2V0Jyk7XG4gIGNvbnN0IG1hcmdpbiA9IGZyb21UaGVtZSgnbWFyZ2luJyk7XG4gIGNvbnN0IG9wYWNpdHkgPSBmcm9tVGhlbWUoJ29wYWNpdHknKTtcbiAgY29uc3QgcGFkZGluZyA9IGZyb21UaGVtZSgncGFkZGluZycpO1xuICBjb25zdCBzYXR1cmF0ZSA9IGZyb21UaGVtZSgnc2F0dXJhdGUnKTtcbiAgY29uc3Qgc2NhbGUgPSBmcm9tVGhlbWUoJ3NjYWxlJyk7XG4gIGNvbnN0IHNlcGlhID0gZnJvbVRoZW1lKCdzZXBpYScpO1xuICBjb25zdCBza2V3ID0gZnJvbVRoZW1lKCdza2V3Jyk7XG4gIGNvbnN0IHNwYWNlID0gZnJvbVRoZW1lKCdzcGFjZScpO1xuICBjb25zdCB0cmFuc2xhdGUgPSBmcm9tVGhlbWUoJ3RyYW5zbGF0ZScpO1xuICBjb25zdCBnZXRPdmVyc2Nyb2xsID0gKCkgPT4gWydhdXRvJywgJ2NvbnRhaW4nLCAnbm9uZSddO1xuICBjb25zdCBnZXRPdmVyZmxvdyA9ICgpID0+IFsnYXV0bycsICdoaWRkZW4nLCAnY2xpcCcsICd2aXNpYmxlJywgJ3Njcm9sbCddO1xuICBjb25zdCBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkgPSAoKSA9PiBbJ2F1dG8nLCBpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nXTtcbiAgY29uc3QgZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkgPSAoKSA9PiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZ107XG4gIGNvbnN0IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSA9ICgpID0+IFsnJywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXTtcbiAgY29uc3QgZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkgPSAoKSA9PiBbJ2F1dG8nLCBpc051bWJlciwgaXNBcmJpdHJhcnlWYWx1ZV07XG4gIGNvbnN0IGdldFBvc2l0aW9ucyA9ICgpID0+IFsnYm90dG9tJywgJ2NlbnRlcicsICdsZWZ0JywgJ2xlZnQtYm90dG9tJywgJ2xlZnQtdG9wJywgJ3JpZ2h0JywgJ3JpZ2h0LWJvdHRvbScsICdyaWdodC10b3AnLCAndG9wJ107XG4gIGNvbnN0IGdldExpbmVTdHlsZXMgPSAoKSA9PiBbJ3NvbGlkJywgJ2Rhc2hlZCcsICdkb3R0ZWQnLCAnZG91YmxlJywgJ25vbmUnXTtcbiAgY29uc3QgZ2V0QmxlbmRNb2RlcyA9ICgpID0+IFsnbm9ybWFsJywgJ211bHRpcGx5JywgJ3NjcmVlbicsICdvdmVybGF5JywgJ2RhcmtlbicsICdsaWdodGVuJywgJ2NvbG9yLWRvZGdlJywgJ2NvbG9yLWJ1cm4nLCAnaGFyZC1saWdodCcsICdzb2Z0LWxpZ2h0JywgJ2RpZmZlcmVuY2UnLCAnZXhjbHVzaW9uJywgJ2h1ZScsICdzYXR1cmF0aW9uJywgJ2NvbG9yJywgJ2x1bWlub3NpdHknXTtcbiAgY29uc3QgZ2V0QWxpZ24gPSAoKSA9PiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmV0d2VlbicsICdhcm91bmQnLCAnZXZlbmx5JywgJ3N0cmV0Y2gnXTtcbiAgY29uc3QgZ2V0WmVyb0FuZEVtcHR5ID0gKCkgPT4gWycnLCAnMCcsIGlzQXJiaXRyYXJ5VmFsdWVdO1xuICBjb25zdCBnZXRCcmVha3MgPSAoKSA9PiBbJ2F1dG8nLCAnYXZvaWQnLCAnYWxsJywgJ2F2b2lkLXBhZ2UnLCAncGFnZScsICdsZWZ0JywgJ3JpZ2h0JywgJ2NvbHVtbiddO1xuICBjb25zdCBnZXROdW1iZXIgPSAoKSA9PiBbaXNOdW1iZXIsIGlzQXJiaXRyYXJ5TnVtYmVyXTtcbiAgY29uc3QgZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5ID0gKCkgPT4gW2lzTnVtYmVyLCBpc0FyYml0cmFyeVZhbHVlXTtcbiAgcmV0dXJuIHtcbiAgICBjYWNoZVNpemU6IDUwMCxcbiAgICBzZXBhcmF0b3I6ICc6JyxcbiAgICB0aGVtZToge1xuICAgICAgY29sb3JzOiBbaXNBbnldLFxuICAgICAgc3BhY2luZzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0sXG4gICAgICBibHVyOiBbJ25vbmUnLCAnJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXSxcbiAgICAgIGJyaWdodG5lc3M6IGdldE51bWJlcigpLFxuICAgICAgYm9yZGVyQ29sb3I6IFtjb2xvcnNdLFxuICAgICAgYm9yZGVyUmFkaXVzOiBbJ25vbmUnLCAnJywgJ2Z1bGwnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdLFxuICAgICAgYm9yZGVyU3BhY2luZzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgIGJvcmRlcldpZHRoOiBnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkoKSxcbiAgICAgIGNvbnRyYXN0OiBnZXROdW1iZXIoKSxcbiAgICAgIGdyYXlzY2FsZTogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICBodWVSb3RhdGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgaW52ZXJ0OiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgIGdhcDogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgIGdyYWRpZW50Q29sb3JTdG9wczogW2NvbG9yc10sXG4gICAgICBncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uczogW2lzUGVyY2VudCwgaXNBcmJpdHJhcnlMZW5ndGhdLFxuICAgICAgaW5zZXQ6IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSgpLFxuICAgICAgbWFyZ2luOiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSxcbiAgICAgIG9wYWNpdHk6IGdldE51bWJlcigpLFxuICAgICAgcGFkZGluZzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgIHNhdHVyYXRlOiBnZXROdW1iZXIoKSxcbiAgICAgIHNjYWxlOiBnZXROdW1iZXIoKSxcbiAgICAgIHNlcGlhOiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgIHNrZXc6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgc3BhY2U6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICB0cmFuc2xhdGU6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICB9LFxuICAgIGNsYXNzR3JvdXBzOiB7XG4gICAgICAvLyBMYXlvdXRcbiAgICAgIC8qKlxuICAgICAgICogQXNwZWN0IFJhdGlvXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYXNwZWN0LXJhdGlvXG4gICAgICAgKi9cbiAgICAgIGFzcGVjdDogW3tcbiAgICAgICAgYXNwZWN0OiBbJ2F1dG8nLCAnc3F1YXJlJywgJ3ZpZGVvJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBDb250YWluZXJcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250YWluZXJcbiAgICAgICAqL1xuICAgICAgY29udGFpbmVyOiBbJ2NvbnRhaW5lciddLFxuICAgICAgLyoqXG4gICAgICAgKiBDb2x1bW5zXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29sdW1uc1xuICAgICAgICovXG4gICAgICBjb2x1bW5zOiBbe1xuICAgICAgICBjb2x1bW5zOiBbaXNUc2hpcnRTaXplXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJyZWFrIEFmdGVyXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstYWZ0ZXJcbiAgICAgICAqL1xuICAgICAgJ2JyZWFrLWFmdGVyJzogW3tcbiAgICAgICAgJ2JyZWFrLWFmdGVyJzogZ2V0QnJlYWtzKClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCcmVhayBCZWZvcmVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1iZWZvcmVcbiAgICAgICAqL1xuICAgICAgJ2JyZWFrLWJlZm9yZSc6IFt7XG4gICAgICAgICdicmVhay1iZWZvcmUnOiBnZXRCcmVha3MoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJyZWFrIEluc2lkZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWluc2lkZVxuICAgICAgICovXG4gICAgICAnYnJlYWstaW5zaWRlJzogW3tcbiAgICAgICAgJ2JyZWFrLWluc2lkZSc6IFsnYXV0bycsICdhdm9pZCcsICdhdm9pZC1wYWdlJywgJ2F2b2lkLWNvbHVtbiddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm94IERlY29yYXRpb24gQnJlYWtcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtZGVjb3JhdGlvbi1icmVha1xuICAgICAgICovXG4gICAgICAnYm94LWRlY29yYXRpb24nOiBbe1xuICAgICAgICAnYm94LWRlY29yYXRpb24nOiBbJ3NsaWNlJywgJ2Nsb25lJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3ggU2l6aW5nXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LXNpemluZ1xuICAgICAgICovXG4gICAgICBib3g6IFt7XG4gICAgICAgIGJveDogWydib3JkZXInLCAnY29udGVudCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRGlzcGxheVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Rpc3BsYXlcbiAgICAgICAqL1xuICAgICAgZGlzcGxheTogWydibG9jaycsICdpbmxpbmUtYmxvY2snLCAnaW5saW5lJywgJ2ZsZXgnLCAnaW5saW5lLWZsZXgnLCAndGFibGUnLCAnaW5saW5lLXRhYmxlJywgJ3RhYmxlLWNhcHRpb24nLCAndGFibGUtY2VsbCcsICd0YWJsZS1jb2x1bW4nLCAndGFibGUtY29sdW1uLWdyb3VwJywgJ3RhYmxlLWZvb3Rlci1ncm91cCcsICd0YWJsZS1oZWFkZXItZ3JvdXAnLCAndGFibGUtcm93LWdyb3VwJywgJ3RhYmxlLXJvdycsICdmbG93LXJvb3QnLCAnZ3JpZCcsICdpbmxpbmUtZ3JpZCcsICdjb250ZW50cycsICdsaXN0LWl0ZW0nLCAnaGlkZGVuJ10sXG4gICAgICAvKipcbiAgICAgICAqIEZsb2F0c1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Zsb2F0XG4gICAgICAgKi9cbiAgICAgIGZsb2F0OiBbe1xuICAgICAgICBmbG9hdDogWydyaWdodCcsICdsZWZ0JywgJ25vbmUnLCAnc3RhcnQnLCAnZW5kJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBDbGVhclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NsZWFyXG4gICAgICAgKi9cbiAgICAgIGNsZWFyOiBbe1xuICAgICAgICBjbGVhcjogWydsZWZ0JywgJ3JpZ2h0JywgJ2JvdGgnLCAnbm9uZScsICdzdGFydCcsICdlbmQnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIElzb2xhdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2lzb2xhdGlvblxuICAgICAgICovXG4gICAgICBpc29sYXRpb246IFsnaXNvbGF0ZScsICdpc29sYXRpb24tYXV0byddLFxuICAgICAgLyoqXG4gICAgICAgKiBPYmplY3QgRml0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb2JqZWN0LWZpdFxuICAgICAgICovXG4gICAgICAnb2JqZWN0LWZpdCc6IFt7XG4gICAgICAgIG9iamVjdDogWydjb250YWluJywgJ2NvdmVyJywgJ2ZpbGwnLCAnbm9uZScsICdzY2FsZS1kb3duJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPYmplY3QgUG9zaXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vYmplY3QtcG9zaXRpb25cbiAgICAgICAqL1xuICAgICAgJ29iamVjdC1wb3NpdGlvbic6IFt7XG4gICAgICAgIG9iamVjdDogWy4uLmdldFBvc2l0aW9ucygpLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE92ZXJmbG93XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAqL1xuICAgICAgb3ZlcmZsb3c6IFt7XG4gICAgICAgIG92ZXJmbG93OiBnZXRPdmVyZmxvdygpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3ZlcmZsb3cgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgKi9cbiAgICAgICdvdmVyZmxvdy14JzogW3tcbiAgICAgICAgJ292ZXJmbG93LXgnOiBnZXRPdmVyZmxvdygpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3ZlcmZsb3cgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgKi9cbiAgICAgICdvdmVyZmxvdy15JzogW3tcbiAgICAgICAgJ292ZXJmbG93LXknOiBnZXRPdmVyZmxvdygpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAqL1xuICAgICAgb3ZlcnNjcm9sbDogW3tcbiAgICAgICAgb3ZlcnNjcm9sbDogZ2V0T3ZlcnNjcm9sbCgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvciBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICovXG4gICAgICAnb3ZlcnNjcm9sbC14JzogW3tcbiAgICAgICAgJ292ZXJzY3JvbGwteCc6IGdldE92ZXJzY3JvbGwoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE92ZXJzY3JvbGwgQmVoYXZpb3IgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAqL1xuICAgICAgJ292ZXJzY3JvbGwteSc6IFt7XG4gICAgICAgICdvdmVyc2Nyb2xsLXknOiBnZXRPdmVyc2Nyb2xsKClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQb3NpdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Bvc2l0aW9uXG4gICAgICAgKi9cbiAgICAgIHBvc2l0aW9uOiBbJ3N0YXRpYycsICdmaXhlZCcsICdhYnNvbHV0ZScsICdyZWxhdGl2ZScsICdzdGlja3knXSxcbiAgICAgIC8qKlxuICAgICAgICogVG9wIC8gUmlnaHQgLyBCb3R0b20gLyBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgIGluc2V0OiBbe1xuICAgICAgICBpbnNldDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFJpZ2h0IC8gTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICAnaW5zZXQteCc6IFt7XG4gICAgICAgICdpbnNldC14JzogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRvcCAvIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICAnaW5zZXQteSc6IFt7XG4gICAgICAgICdpbnNldC15JzogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgIHN0YXJ0OiBbe1xuICAgICAgICBzdGFydDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICBlbmQ6IFt7XG4gICAgICAgIGVuZDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRvcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICB0b3A6IFt7XG4gICAgICAgIHRvcDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgIHJpZ2h0OiBbe1xuICAgICAgICByaWdodDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICBib3R0b206IFt7XG4gICAgICAgIGJvdHRvbTogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAqL1xuICAgICAgbGVmdDogW3tcbiAgICAgICAgbGVmdDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFZpc2liaWxpdHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy92aXNpYmlsaXR5XG4gICAgICAgKi9cbiAgICAgIHZpc2liaWxpdHk6IFsndmlzaWJsZScsICdpbnZpc2libGUnLCAnY29sbGFwc2UnXSxcbiAgICAgIC8qKlxuICAgICAgICogWi1JbmRleFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3otaW5kZXhcbiAgICAgICAqL1xuICAgICAgejogW3tcbiAgICAgICAgejogWydhdXRvJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvLyBGbGV4Ym94IGFuZCBHcmlkXG4gICAgICAvKipcbiAgICAgICAqIEZsZXggQmFzaXNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWJhc2lzXG4gICAgICAgKi9cbiAgICAgIGJhc2lzOiBbe1xuICAgICAgICBiYXNpczogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBGbGV4IERpcmVjdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtZGlyZWN0aW9uXG4gICAgICAgKi9cbiAgICAgICdmbGV4LWRpcmVjdGlvbic6IFt7XG4gICAgICAgIGZsZXg6IFsncm93JywgJ3Jvdy1yZXZlcnNlJywgJ2NvbCcsICdjb2wtcmV2ZXJzZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRmxleCBXcmFwXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC13cmFwXG4gICAgICAgKi9cbiAgICAgICdmbGV4LXdyYXAnOiBbe1xuICAgICAgICBmbGV4OiBbJ3dyYXAnLCAnd3JhcC1yZXZlcnNlJywgJ25vd3JhcCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRmxleFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXhcbiAgICAgICAqL1xuICAgICAgZmxleDogW3tcbiAgICAgICAgZmxleDogWycxJywgJ2F1dG8nLCAnaW5pdGlhbCcsICdub25lJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBGbGV4IEdyb3dcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWdyb3dcbiAgICAgICAqL1xuICAgICAgZ3JvdzogW3tcbiAgICAgICAgZ3JvdzogZ2V0WmVyb0FuZEVtcHR5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBGbGV4IFNocmlua1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtc2hyaW5rXG4gICAgICAgKi9cbiAgICAgIHNocmluazogW3tcbiAgICAgICAgc2hyaW5rOiBnZXRaZXJvQW5kRW1wdHkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE9yZGVyXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3JkZXJcbiAgICAgICAqL1xuICAgICAgb3JkZXI6IFt7XG4gICAgICAgIG9yZGVyOiBbJ2ZpcnN0JywgJ2xhc3QnLCAnbm9uZScsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIFRlbXBsYXRlIENvbHVtbnNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXRlbXBsYXRlLWNvbHVtbnNcbiAgICAgICAqL1xuICAgICAgJ2dyaWQtY29scyc6IFt7XG4gICAgICAgICdncmlkLWNvbHMnOiBbaXNBbnldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBDb2x1bW4gU3RhcnQgLyBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICovXG4gICAgICAnY29sLXN0YXJ0LWVuZCc6IFt7XG4gICAgICAgIGNvbDogWydhdXRvJywge1xuICAgICAgICAgIHNwYW46IFsnZnVsbCcsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgICAgfSwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIENvbHVtbiBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgKi9cbiAgICAgICdjb2wtc3RhcnQnOiBbe1xuICAgICAgICAnY29sLXN0YXJ0JzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgQ29sdW1uIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgKi9cbiAgICAgICdjb2wtZW5kJzogW3tcbiAgICAgICAgJ2NvbC1lbmQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBUZW1wbGF0ZSBSb3dzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC10ZW1wbGF0ZS1yb3dzXG4gICAgICAgKi9cbiAgICAgICdncmlkLXJvd3MnOiBbe1xuICAgICAgICAnZ3JpZC1yb3dzJzogW2lzQW55XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgUm93IFN0YXJ0IC8gRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAqL1xuICAgICAgJ3Jvdy1zdGFydC1lbmQnOiBbe1xuICAgICAgICByb3c6IFsnYXV0bycsIHtcbiAgICAgICAgICBzcGFuOiBbaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgICB9LCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgUm93IFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAqL1xuICAgICAgJ3Jvdy1zdGFydCc6IFt7XG4gICAgICAgICdyb3ctc3RhcnQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBSb3cgRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAqL1xuICAgICAgJ3Jvdy1lbmQnOiBbe1xuICAgICAgICAncm93LWVuZCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIEF1dG8gRmxvd1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1mbG93XG4gICAgICAgKi9cbiAgICAgICdncmlkLWZsb3cnOiBbe1xuICAgICAgICAnZ3JpZC1mbG93JzogWydyb3cnLCAnY29sJywgJ2RlbnNlJywgJ3Jvdy1kZW5zZScsICdjb2wtZGVuc2UnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgQXV0byBDb2x1bW5zXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLWNvbHVtbnNcbiAgICAgICAqL1xuICAgICAgJ2F1dG8tY29scyc6IFt7XG4gICAgICAgICdhdXRvLWNvbHMnOiBbJ2F1dG8nLCAnbWluJywgJ21heCcsICdmcicsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBBdXRvIFJvd3NcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tcm93c1xuICAgICAgICovXG4gICAgICAnYXV0by1yb3dzJzogW3tcbiAgICAgICAgJ2F1dG8tcm93cyc6IFsnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZyJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHYXBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAqL1xuICAgICAgZ2FwOiBbe1xuICAgICAgICBnYXA6IFtnYXBdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR2FwIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAqL1xuICAgICAgJ2dhcC14JzogW3tcbiAgICAgICAgJ2dhcC14JzogW2dhcF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHYXAgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICovXG4gICAgICAnZ2FwLXknOiBbe1xuICAgICAgICAnZ2FwLXknOiBbZ2FwXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEp1c3RpZnkgQ29udGVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3RpZnktY29udGVudFxuICAgICAgICovXG4gICAgICAnanVzdGlmeS1jb250ZW50JzogW3tcbiAgICAgICAganVzdGlmeTogWydub3JtYWwnLCAuLi5nZXRBbGlnbigpXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEp1c3RpZnkgSXRlbXNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LWl0ZW1zXG4gICAgICAgKi9cbiAgICAgICdqdXN0aWZ5LWl0ZW1zJzogW3tcbiAgICAgICAgJ2p1c3RpZnktaXRlbXMnOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogSnVzdGlmeSBTZWxmXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1zZWxmXG4gICAgICAgKi9cbiAgICAgICdqdXN0aWZ5LXNlbGYnOiBbe1xuICAgICAgICAnanVzdGlmeS1zZWxmJzogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQWxpZ24gQ29udGVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLWNvbnRlbnRcbiAgICAgICAqL1xuICAgICAgJ2FsaWduLWNvbnRlbnQnOiBbe1xuICAgICAgICBjb250ZW50OiBbJ25vcm1hbCcsIC4uLmdldEFsaWduKCksICdiYXNlbGluZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQWxpZ24gSXRlbXNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1pdGVtc1xuICAgICAgICovXG4gICAgICAnYWxpZ24taXRlbXMnOiBbe1xuICAgICAgICBpdGVtczogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2Jhc2VsaW5lJywgJ3N0cmV0Y2gnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEFsaWduIFNlbGZcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1zZWxmXG4gICAgICAgKi9cbiAgICAgICdhbGlnbi1zZWxmJzogW3tcbiAgICAgICAgc2VsZjogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCcsICdiYXNlbGluZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGxhY2UgQ29udGVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLWNvbnRlbnRcbiAgICAgICAqL1xuICAgICAgJ3BsYWNlLWNvbnRlbnQnOiBbe1xuICAgICAgICAncGxhY2UtY29udGVudCc6IFsuLi5nZXRBbGlnbigpLCAnYmFzZWxpbmUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBsYWNlIEl0ZW1zXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2UtaXRlbXNcbiAgICAgICAqL1xuICAgICAgJ3BsYWNlLWl0ZW1zJzogW3tcbiAgICAgICAgJ3BsYWNlLWl0ZW1zJzogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2Jhc2VsaW5lJywgJ3N0cmV0Y2gnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBsYWNlIFNlbGZcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1zZWxmXG4gICAgICAgKi9cbiAgICAgICdwbGFjZS1zZWxmJzogW3tcbiAgICAgICAgJ3BsYWNlLXNlbGYnOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ11cbiAgICAgIH1dLFxuICAgICAgLy8gU3BhY2luZ1xuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICovXG4gICAgICBwOiBbe1xuICAgICAgICBwOiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHB4OiBbe1xuICAgICAgICBweDogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZyBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICovXG4gICAgICBweTogW3tcbiAgICAgICAgcHk6IFtwYWRkaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBhZGRpbmcgU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHBzOiBbe1xuICAgICAgICBwczogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZyBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHBlOiBbe1xuICAgICAgICBwZTogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZyBUb3BcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHB0OiBbe1xuICAgICAgICBwdDogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZyBSaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAqL1xuICAgICAgcHI6IFt7XG4gICAgICAgIHByOiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAqL1xuICAgICAgcGI6IFt7XG4gICAgICAgIHBiOiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHBsOiBbe1xuICAgICAgICBwbDogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgKi9cbiAgICAgIG06IFt7XG4gICAgICAgIG06IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbXg6IFt7XG4gICAgICAgIG14OiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpbiBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgKi9cbiAgICAgIG15OiBbe1xuICAgICAgICBteTogW21hcmdpbl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNYXJnaW4gU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbXM6IFt7XG4gICAgICAgIG1zOiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpbiBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbWU6IFt7XG4gICAgICAgIG1lOiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpbiBUb3BcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbXQ6IFt7XG4gICAgICAgIG10OiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpbiBSaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICovXG4gICAgICBtcjogW3tcbiAgICAgICAgbXI6IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICovXG4gICAgICBtYjogW3tcbiAgICAgICAgbWI6IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbWw6IFt7XG4gICAgICAgIG1sOiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNwYWNlIEJldHdlZW4gWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgKi9cbiAgICAgICdzcGFjZS14JzogW3tcbiAgICAgICAgJ3NwYWNlLXgnOiBbc3BhY2VdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU3BhY2UgQmV0d2VlbiBYIFJldmVyc2VcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICovXG4gICAgICAnc3BhY2UteC1yZXZlcnNlJzogWydzcGFjZS14LXJldmVyc2UnXSxcbiAgICAgIC8qKlxuICAgICAgICogU3BhY2UgQmV0d2VlbiBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAqL1xuICAgICAgJ3NwYWNlLXknOiBbe1xuICAgICAgICAnc3BhY2UteSc6IFtzcGFjZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTcGFjZSBCZXR3ZWVuIFkgUmV2ZXJzZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgKi9cbiAgICAgICdzcGFjZS15LXJldmVyc2UnOiBbJ3NwYWNlLXktcmV2ZXJzZSddLFxuICAgICAgLy8gU2l6aW5nXG4gICAgICAvKipcbiAgICAgICAqIFdpZHRoXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2lkdGhcbiAgICAgICAqL1xuICAgICAgdzogW3tcbiAgICAgICAgdzogWydhdXRvJywgJ21pbicsICdtYXgnLCAnZml0JywgJ3N2dycsICdsdncnLCAnZHZ3JywgaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNaW4tV2lkdGhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taW4td2lkdGhcbiAgICAgICAqL1xuICAgICAgJ21pbi13JzogW3tcbiAgICAgICAgJ21pbi13JzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWF4LVdpZHRoXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWF4LXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdtYXgtdyc6IFt7XG4gICAgICAgICdtYXgtdyc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbm9uZScsICdmdWxsJywgJ21pbicsICdtYXgnLCAnZml0JywgJ3Byb3NlJywge1xuICAgICAgICAgIHNjcmVlbjogW2lzVHNoaXJ0U2l6ZV1cbiAgICAgICAgfSwgaXNUc2hpcnRTaXplXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEhlaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2hlaWdodFxuICAgICAgICovXG4gICAgICBoOiBbe1xuICAgICAgICBoOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ2F1dG8nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1pbi1IZWlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taW4taGVpZ2h0XG4gICAgICAgKi9cbiAgICAgICdtaW4taCc6IFt7XG4gICAgICAgICdtaW4taCc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1heC1IZWlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXgtaGVpZ2h0XG4gICAgICAgKi9cbiAgICAgICdtYXgtaCc6IFt7XG4gICAgICAgICdtYXgtaCc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNpemVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zaXplXG4gICAgICAgKi9cbiAgICAgIHNpemU6IFt7XG4gICAgICAgIHNpemU6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZpdCddXG4gICAgICB9XSxcbiAgICAgIC8vIFR5cG9ncmFwaHlcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBTaXplXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zaXplXG4gICAgICAgKi9cbiAgICAgICdmb250LXNpemUnOiBbe1xuICAgICAgICB0ZXh0OiBbJ2Jhc2UnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5TGVuZ3RoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEZvbnQgU21vb3RoaW5nXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zbW9vdGhpbmdcbiAgICAgICAqL1xuICAgICAgJ2ZvbnQtc21vb3RoaW5nJzogWydhbnRpYWxpYXNlZCcsICdzdWJwaXhlbC1hbnRpYWxpYXNlZCddLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFN0eWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zdHlsZVxuICAgICAgICovXG4gICAgICAnZm9udC1zdHlsZSc6IFsnaXRhbGljJywgJ25vdC1pdGFsaWMnXSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBXZWlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXdlaWdodFxuICAgICAgICovXG4gICAgICAnZm9udC13ZWlnaHQnOiBbe1xuICAgICAgICBmb250OiBbJ3RoaW4nLCAnZXh0cmFsaWdodCcsICdsaWdodCcsICdub3JtYWwnLCAnbWVkaXVtJywgJ3NlbWlib2xkJywgJ2JvbGQnLCAnZXh0cmFib2xkJywgJ2JsYWNrJywgaXNBcmJpdHJhcnlOdW1iZXJdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBGYW1pbHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LWZhbWlseVxuICAgICAgICovXG4gICAgICAnZm9udC1mYW1pbHknOiBbe1xuICAgICAgICBmb250OiBbaXNBbnldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICovXG4gICAgICAnZnZuLW5vcm1hbCc6IFsnbm9ybWFsLW51bXMnXSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICovXG4gICAgICAnZnZuLW9yZGluYWwnOiBbJ29yZGluYWwnXSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICovXG4gICAgICAnZnZuLXNsYXNoZWQtemVybyc6IFsnc2xhc2hlZC16ZXJvJ10sXG4gICAgICAvKipcbiAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAqL1xuICAgICAgJ2Z2bi1maWd1cmUnOiBbJ2xpbmluZy1udW1zJywgJ29sZHN0eWxlLW51bXMnXSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICovXG4gICAgICAnZnZuLXNwYWNpbmcnOiBbJ3Byb3BvcnRpb25hbC1udW1zJywgJ3RhYnVsYXItbnVtcyddLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgKi9cbiAgICAgICdmdm4tZnJhY3Rpb24nOiBbJ2RpYWdvbmFsLWZyYWN0aW9ucycsICdzdGFja2VkLWZyYWN0b25zJ10sXG4gICAgICAvKipcbiAgICAgICAqIExldHRlciBTcGFjaW5nXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGV0dGVyLXNwYWNpbmdcbiAgICAgICAqL1xuICAgICAgdHJhY2tpbmc6IFt7XG4gICAgICAgIHRyYWNraW5nOiBbJ3RpZ2h0ZXInLCAndGlnaHQnLCAnbm9ybWFsJywgJ3dpZGUnLCAnd2lkZXInLCAnd2lkZXN0JywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBMaW5lIENsYW1wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGluZS1jbGFtcFxuICAgICAgICovXG4gICAgICAnbGluZS1jbGFtcCc6IFt7XG4gICAgICAgICdsaW5lLWNsYW1wJzogWydub25lJywgaXNOdW1iZXIsIGlzQXJiaXRyYXJ5TnVtYmVyXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIExpbmUgSGVpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGluZS1oZWlnaHRcbiAgICAgICAqL1xuICAgICAgbGVhZGluZzogW3tcbiAgICAgICAgbGVhZGluZzogWydub25lJywgJ3RpZ2h0JywgJ3NudWcnLCAnbm9ybWFsJywgJ3JlbGF4ZWQnLCAnbG9vc2UnLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBMaXN0IFN0eWxlIEltYWdlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGlzdC1zdHlsZS1pbWFnZVxuICAgICAgICovXG4gICAgICAnbGlzdC1pbWFnZSc6IFt7XG4gICAgICAgICdsaXN0LWltYWdlJzogWydub25lJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBMaXN0IFN0eWxlIFR5cGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLXR5cGVcbiAgICAgICAqL1xuICAgICAgJ2xpc3Qtc3R5bGUtdHlwZSc6IFt7XG4gICAgICAgIGxpc3Q6IFsnbm9uZScsICdkaXNjJywgJ2RlY2ltYWwnLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIExpc3QgU3R5bGUgUG9zaXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLXBvc2l0aW9uXG4gICAgICAgKi9cbiAgICAgICdsaXN0LXN0eWxlLXBvc2l0aW9uJzogW3tcbiAgICAgICAgbGlzdDogWydpbnNpZGUnLCAnb3V0c2lkZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGxhY2Vob2xkZXIgQ29sb3JcbiAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZWhvbGRlci1jb2xvclxuICAgICAgICovXG4gICAgICAncGxhY2Vob2xkZXItY29sb3InOiBbe1xuICAgICAgICBwbGFjZWhvbGRlcjogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQbGFjZWhvbGRlciBPcGFjaXR5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Vob2xkZXItb3BhY2l0eVxuICAgICAgICovXG4gICAgICAncGxhY2Vob2xkZXItb3BhY2l0eSc6IFt7XG4gICAgICAgICdwbGFjZWhvbGRlci1vcGFjaXR5JzogW29wYWNpdHldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBBbGlnbm1lbnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWFsaWduXG4gICAgICAgKi9cbiAgICAgICd0ZXh0LWFsaWdubWVudCc6IFt7XG4gICAgICAgIHRleHQ6IFsnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnLCAnanVzdGlmeScsICdzdGFydCcsICdlbmQnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWNvbG9yXG4gICAgICAgKi9cbiAgICAgICd0ZXh0LWNvbG9yJzogW3tcbiAgICAgICAgdGV4dDogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IE9wYWNpdHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LW9wYWNpdHlcbiAgICAgICAqL1xuICAgICAgJ3RleHQtb3BhY2l0eSc6IFt7XG4gICAgICAgICd0ZXh0LW9wYWNpdHknOiBbb3BhY2l0eV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IERlY29yYXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb25cbiAgICAgICAqL1xuICAgICAgJ3RleHQtZGVjb3JhdGlvbic6IFsndW5kZXJsaW5lJywgJ292ZXJsaW5lJywgJ2xpbmUtdGhyb3VnaCcsICduby11bmRlcmxpbmUnXSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBEZWNvcmF0aW9uIFN0eWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLXN0eWxlXG4gICAgICAgKi9cbiAgICAgICd0ZXh0LWRlY29yYXRpb24tc3R5bGUnOiBbe1xuICAgICAgICBkZWNvcmF0aW9uOiBbLi4uZ2V0TGluZVN0eWxlcygpLCAnd2F2eSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBEZWNvcmF0aW9uIFRoaWNrbmVzc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvbi10aGlja25lc3NcbiAgICAgICAqL1xuICAgICAgJ3RleHQtZGVjb3JhdGlvbi10aGlja25lc3MnOiBbe1xuICAgICAgICBkZWNvcmF0aW9uOiBbJ2F1dG8nLCAnZnJvbS1mb250JywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgVW5kZXJsaW5lIE9mZnNldFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtdW5kZXJsaW5lLW9mZnNldFxuICAgICAgICovXG4gICAgICAndW5kZXJsaW5lLW9mZnNldCc6IFt7XG4gICAgICAgICd1bmRlcmxpbmUtb2Zmc2V0JzogWydhdXRvJywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBEZWNvcmF0aW9uIENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICd0ZXh0LWRlY29yYXRpb24tY29sb3InOiBbe1xuICAgICAgICBkZWNvcmF0aW9uOiBbY29sb3JzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgVHJhbnNmb3JtXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC10cmFuc2Zvcm1cbiAgICAgICAqL1xuICAgICAgJ3RleHQtdHJhbnNmb3JtJzogWyd1cHBlcmNhc2UnLCAnbG93ZXJjYXNlJywgJ2NhcGl0YWxpemUnLCAnbm9ybWFsLWNhc2UnXSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBPdmVyZmxvd1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtb3ZlcmZsb3dcbiAgICAgICAqL1xuICAgICAgJ3RleHQtb3ZlcmZsb3cnOiBbJ3RydW5jYXRlJywgJ3RleHQtZWxsaXBzaXMnLCAndGV4dC1jbGlwJ10sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgV3JhcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtd3JhcFxuICAgICAgICovXG4gICAgICAndGV4dC13cmFwJzogW3tcbiAgICAgICAgdGV4dDogWyd3cmFwJywgJ25vd3JhcCcsICdiYWxhbmNlJywgJ3ByZXR0eSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBJbmRlbnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWluZGVudFxuICAgICAgICovXG4gICAgICBpbmRlbnQ6IFt7XG4gICAgICAgIGluZGVudDogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFZlcnRpY2FsIEFsaWdubWVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3ZlcnRpY2FsLWFsaWduXG4gICAgICAgKi9cbiAgICAgICd2ZXJ0aWNhbC1hbGlnbic6IFt7XG4gICAgICAgIGFsaWduOiBbJ2Jhc2VsaW5lJywgJ3RvcCcsICdtaWRkbGUnLCAnYm90dG9tJywgJ3RleHQtdG9wJywgJ3RleHQtYm90dG9tJywgJ3N1YicsICdzdXBlcicsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogV2hpdGVzcGFjZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3doaXRlc3BhY2VcbiAgICAgICAqL1xuICAgICAgd2hpdGVzcGFjZTogW3tcbiAgICAgICAgd2hpdGVzcGFjZTogWydub3JtYWwnLCAnbm93cmFwJywgJ3ByZScsICdwcmUtbGluZScsICdwcmUtd3JhcCcsICdicmVhay1zcGFjZXMnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFdvcmQgQnJlYWtcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93b3JkLWJyZWFrXG4gICAgICAgKi9cbiAgICAgIGJyZWFrOiBbe1xuICAgICAgICBicmVhazogWydub3JtYWwnLCAnd29yZHMnLCAnYWxsJywgJ2tlZXAnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEh5cGhlbnNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9oeXBoZW5zXG4gICAgICAgKi9cbiAgICAgIGh5cGhlbnM6IFt7XG4gICAgICAgIGh5cGhlbnM6IFsnbm9uZScsICdtYW51YWwnLCAnYXV0byddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQ29udGVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbnRlbnRcbiAgICAgICAqL1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgY29udGVudDogWydub25lJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLy8gQmFja2dyb3VuZHNcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBBdHRhY2htZW50XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1hdHRhY2htZW50XG4gICAgICAgKi9cbiAgICAgICdiZy1hdHRhY2htZW50JzogW3tcbiAgICAgICAgYmc6IFsnZml4ZWQnLCAnbG9jYWwnLCAnc2Nyb2xsJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIENsaXBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWNsaXBcbiAgICAgICAqL1xuICAgICAgJ2JnLWNsaXAnOiBbe1xuICAgICAgICAnYmctY2xpcCc6IFsnYm9yZGVyJywgJ3BhZGRpbmcnLCAnY29udGVudCcsICd0ZXh0J11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIE9wYWNpdHlcbiAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLW9wYWNpdHlcbiAgICAgICAqL1xuICAgICAgJ2JnLW9wYWNpdHknOiBbe1xuICAgICAgICAnYmctb3BhY2l0eSc6IFtvcGFjaXR5XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgT3JpZ2luXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1vcmlnaW5cbiAgICAgICAqL1xuICAgICAgJ2JnLW9yaWdpbic6IFt7XG4gICAgICAgICdiZy1vcmlnaW4nOiBbJ2JvcmRlcicsICdwYWRkaW5nJywgJ2NvbnRlbnQnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgUG9zaXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXBvc2l0aW9uXG4gICAgICAgKi9cbiAgICAgICdiZy1wb3NpdGlvbic6IFt7XG4gICAgICAgIGJnOiBbLi4uZ2V0UG9zaXRpb25zKCksIGlzQXJiaXRyYXJ5UG9zaXRpb25dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBSZXBlYXRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXJlcGVhdFxuICAgICAgICovXG4gICAgICAnYmctcmVwZWF0JzogW3tcbiAgICAgICAgYmc6IFsnbm8tcmVwZWF0Jywge1xuICAgICAgICAgIHJlcGVhdDogWycnLCAneCcsICd5JywgJ3JvdW5kJywgJ3NwYWNlJ11cbiAgICAgICAgfV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIFNpemVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXNpemVcbiAgICAgICAqL1xuICAgICAgJ2JnLXNpemUnOiBbe1xuICAgICAgICBiZzogWydhdXRvJywgJ2NvdmVyJywgJ2NvbnRhaW4nLCBpc0FyYml0cmFyeVNpemVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBJbWFnZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtaW1hZ2VcbiAgICAgICAqL1xuICAgICAgJ2JnLWltYWdlJzogW3tcbiAgICAgICAgYmc6IFsnbm9uZScsIHtcbiAgICAgICAgICAnZ3JhZGllbnQtdG8nOiBbJ3QnLCAndHInLCAncicsICdicicsICdiJywgJ2JsJywgJ2wnLCAndGwnXVxuICAgICAgICB9LCBpc0FyYml0cmFyeUltYWdlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdiZy1jb2xvcic6IFt7XG4gICAgICAgIGJnOiBbY29sb3JzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIEZyb20gUG9zaXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICovXG4gICAgICAnZ3JhZGllbnQtZnJvbS1wb3MnOiBbe1xuICAgICAgICBmcm9tOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVmlhIFBvc2l0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAqL1xuICAgICAgJ2dyYWRpZW50LXZpYS1wb3MnOiBbe1xuICAgICAgICB2aWE6IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBUbyBQb3NpdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgKi9cbiAgICAgICdncmFkaWVudC10by1wb3MnOiBbe1xuICAgICAgICB0bzogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIEZyb21cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICovXG4gICAgICAnZ3JhZGllbnQtZnJvbSc6IFt7XG4gICAgICAgIGZyb206IFtncmFkaWVudENvbG9yU3RvcHNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVmlhXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAqL1xuICAgICAgJ2dyYWRpZW50LXZpYSc6IFt7XG4gICAgICAgIHZpYTogW2dyYWRpZW50Q29sb3JTdG9wc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBUb1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgKi9cbiAgICAgICdncmFkaWVudC10byc6IFt7XG4gICAgICAgIHRvOiBbZ3JhZGllbnRDb2xvclN0b3BzXVxuICAgICAgfV0sXG4gICAgICAvLyBCb3JkZXJzXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgIHJvdW5kZWQ6IFt7XG4gICAgICAgIHJvdW5kZWQ6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtcyc6IFt7XG4gICAgICAgICdyb3VuZGVkLXMnOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1lJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtZSc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3BcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLXQnOiBbe1xuICAgICAgICAncm91bmRlZC10JzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1yJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtcic6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b21cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLWInOiBbe1xuICAgICAgICAncm91bmRlZC1iJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLWwnOiBbe1xuICAgICAgICAncm91bmRlZC1sJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0IFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1zcyc6IFt7XG4gICAgICAgICdyb3VuZGVkLXNzJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0IEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtc2UnOiBbe1xuICAgICAgICAncm91bmRlZC1zZSc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmQgRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1lZSc6IFt7XG4gICAgICAgICdyb3VuZGVkLWVlJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZCBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtZXMnOiBbe1xuICAgICAgICAncm91bmRlZC1lcyc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3AgTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtdGwnOiBbe1xuICAgICAgICAncm91bmRlZC10bCc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3AgUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLXRyJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtdHInOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgQm90dG9tIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1icic6IFt7XG4gICAgICAgICdyb3VuZGVkLWJyJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbSBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1ibCc6IFt7XG4gICAgICAgICdyb3VuZGVkLWJsJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgV2lkdGhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13JzogW3tcbiAgICAgICAgYm9yZGVyOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13LXgnOiBbe1xuICAgICAgICAnYm9yZGVyLXgnOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13LXknOiBbe1xuICAgICAgICAnYm9yZGVyLXknOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoIFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItdy1zJzogW3tcbiAgICAgICAgJ2JvcmRlci1zJzogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBXaWR0aCBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13LWUnOiBbe1xuICAgICAgICAnYm9yZGVyLWUnOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoIFRvcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXctdCc6IFt7XG4gICAgICAgICdib3JkZXItdCc6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgV2lkdGggUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13LXInOiBbe1xuICAgICAgICAnYm9yZGVyLXInOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXctYic6IFt7XG4gICAgICAgICdib3JkZXItYic6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgV2lkdGggTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXctbCc6IFt7XG4gICAgICAgICdib3JkZXItbCc6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgT3BhY2l0eVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1vcGFjaXR5XG4gICAgICAgKi9cbiAgICAgICdib3JkZXItb3BhY2l0eSc6IFt7XG4gICAgICAgICdib3JkZXItb3BhY2l0eSc6IFtvcGFjaXR5XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBTdHlsZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zdHlsZVxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXN0eWxlJzogW3tcbiAgICAgICAgYm9yZGVyOiBbLi4uZ2V0TGluZVN0eWxlcygpLCAnaGlkZGVuJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBEaXZpZGUgV2lkdGggWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICovXG4gICAgICAnZGl2aWRlLXgnOiBbe1xuICAgICAgICAnZGl2aWRlLXgnOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRGl2aWRlIFdpZHRoIFggUmV2ZXJzZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICovXG4gICAgICAnZGl2aWRlLXgtcmV2ZXJzZSc6IFsnZGl2aWRlLXgtcmV2ZXJzZSddLFxuICAgICAgLyoqXG4gICAgICAgKiBEaXZpZGUgV2lkdGggWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICovXG4gICAgICAnZGl2aWRlLXknOiBbe1xuICAgICAgICAnZGl2aWRlLXknOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRGl2aWRlIFdpZHRoIFkgUmV2ZXJzZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICovXG4gICAgICAnZGl2aWRlLXktcmV2ZXJzZSc6IFsnZGl2aWRlLXktcmV2ZXJzZSddLFxuICAgICAgLyoqXG4gICAgICAgKiBEaXZpZGUgT3BhY2l0eVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1vcGFjaXR5XG4gICAgICAgKi9cbiAgICAgICdkaXZpZGUtb3BhY2l0eSc6IFt7XG4gICAgICAgICdkaXZpZGUtb3BhY2l0eSc6IFtvcGFjaXR5XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIERpdmlkZSBTdHlsZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1zdHlsZVxuICAgICAgICovXG4gICAgICAnZGl2aWRlLXN0eWxlJzogW3tcbiAgICAgICAgZGl2aWRlOiBnZXRMaW5lU3R5bGVzKClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1jb2xvcic6IFt7XG4gICAgICAgIGJvcmRlcjogW2JvcmRlckNvbG9yXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBDb2xvciBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sb3IteCc6IFt7XG4gICAgICAgICdib3JkZXIteCc6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sb3IgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICovXG4gICAgICAnYm9yZGVyLWNvbG9yLXknOiBbe1xuICAgICAgICAnYm9yZGVyLXknOiBbYm9yZGVyQ29sb3JdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIENvbG9yIFRvcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICovXG4gICAgICAnYm9yZGVyLWNvbG9yLXQnOiBbe1xuICAgICAgICAnYm9yZGVyLXQnOiBbYm9yZGVyQ29sb3JdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIENvbG9yIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sb3Itcic6IFt7XG4gICAgICAgICdib3JkZXItcic6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sb3IgQm90dG9tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sb3ItYic6IFt7XG4gICAgICAgICdib3JkZXItYic6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sb3IgTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICovXG4gICAgICAnYm9yZGVyLWNvbG9yLWwnOiBbe1xuICAgICAgICAnYm9yZGVyLWwnOiBbYm9yZGVyQ29sb3JdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRGl2aWRlIENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdkaXZpZGUtY29sb3InOiBbe1xuICAgICAgICBkaXZpZGU6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPdXRsaW5lIFN0eWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1zdHlsZVxuICAgICAgICovXG4gICAgICAnb3V0bGluZS1zdHlsZSc6IFt7XG4gICAgICAgIG91dGxpbmU6IFsnJywgLi4uZ2V0TGluZVN0eWxlcygpXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE91dGxpbmUgT2Zmc2V0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1vZmZzZXRcbiAgICAgICAqL1xuICAgICAgJ291dGxpbmUtb2Zmc2V0JzogW3tcbiAgICAgICAgJ291dGxpbmUtb2Zmc2V0JzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE91dGxpbmUgV2lkdGhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdvdXRsaW5lLXcnOiBbe1xuICAgICAgICBvdXRsaW5lOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE91dGxpbmUgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdvdXRsaW5lLWNvbG9yJzogW3tcbiAgICAgICAgb3V0bGluZTogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaW5nIFdpZHRoXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy13aWR0aFxuICAgICAgICovXG4gICAgICAncmluZy13JzogW3tcbiAgICAgICAgcmluZzogZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaW5nIFdpZHRoIEluc2V0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy13aWR0aFxuICAgICAgICovXG4gICAgICAncmluZy13LWluc2V0JzogWydyaW5nLWluc2V0J10sXG4gICAgICAvKipcbiAgICAgICAqIFJpbmcgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdyaW5nLWNvbG9yJzogW3tcbiAgICAgICAgcmluZzogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaW5nIE9wYWNpdHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9wYWNpdHlcbiAgICAgICAqL1xuICAgICAgJ3Jpbmctb3BhY2l0eSc6IFt7XG4gICAgICAgICdyaW5nLW9wYWNpdHknOiBbb3BhY2l0eV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaW5nIE9mZnNldCBXaWR0aFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb2Zmc2V0LXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdyaW5nLW9mZnNldC13JzogW3tcbiAgICAgICAgJ3Jpbmctb2Zmc2V0JzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaW5nIE9mZnNldCBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb2Zmc2V0LWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdyaW5nLW9mZnNldC1jb2xvcic6IFt7XG4gICAgICAgICdyaW5nLW9mZnNldCc6IFtjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8vIEVmZmVjdHNcbiAgICAgIC8qKlxuICAgICAgICogQm94IFNoYWRvd1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaGFkb3dcbiAgICAgICAqL1xuICAgICAgc2hhZG93OiBbe1xuICAgICAgICBzaGFkb3c6IFsnJywgJ2lubmVyJywgJ25vbmUnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5U2hhZG93XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJveCBTaGFkb3cgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2hhZG93LWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdzaGFkb3ctY29sb3InOiBbe1xuICAgICAgICBzaGFkb3c6IFtpc0FueV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPcGFjaXR5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3BhY2l0eVxuICAgICAgICovXG4gICAgICBvcGFjaXR5OiBbe1xuICAgICAgICBvcGFjaXR5OiBbb3BhY2l0eV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNaXggQmxlbmQgTW9kZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21peC1ibGVuZC1tb2RlXG4gICAgICAgKi9cbiAgICAgICdtaXgtYmxlbmQnOiBbe1xuICAgICAgICAnbWl4LWJsZW5kJzogWy4uLmdldEJsZW5kTW9kZXMoKSwgJ3BsdXMtbGlnaHRlcicsICdwbHVzLWRhcmtlciddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBCbGVuZCBNb2RlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1ibGVuZC1tb2RlXG4gICAgICAgKi9cbiAgICAgICdiZy1ibGVuZCc6IFt7XG4gICAgICAgICdiZy1ibGVuZCc6IGdldEJsZW5kTW9kZXMoKVxuICAgICAgfV0sXG4gICAgICAvLyBGaWx0ZXJzXG4gICAgICAvKipcbiAgICAgICAqIEZpbHRlclxuICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZpbHRlclxuICAgICAgICovXG4gICAgICBmaWx0ZXI6IFt7XG4gICAgICAgIGZpbHRlcjogWycnLCAnbm9uZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmx1clxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JsdXJcbiAgICAgICAqL1xuICAgICAgYmx1cjogW3tcbiAgICAgICAgYmx1cjogW2JsdXJdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQnJpZ2h0bmVzc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyaWdodG5lc3NcbiAgICAgICAqL1xuICAgICAgYnJpZ2h0bmVzczogW3tcbiAgICAgICAgYnJpZ2h0bmVzczogW2JyaWdodG5lc3NdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQ29udHJhc3RcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250cmFzdFxuICAgICAgICovXG4gICAgICBjb250cmFzdDogW3tcbiAgICAgICAgY29udHJhc3Q6IFtjb250cmFzdF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBEcm9wIFNoYWRvd1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Ryb3Atc2hhZG93XG4gICAgICAgKi9cbiAgICAgICdkcm9wLXNoYWRvdyc6IFt7XG4gICAgICAgICdkcm9wLXNoYWRvdyc6IFsnJywgJ25vbmUnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JheXNjYWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JheXNjYWxlXG4gICAgICAgKi9cbiAgICAgIGdyYXlzY2FsZTogW3tcbiAgICAgICAgZ3JheXNjYWxlOiBbZ3JheXNjYWxlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEh1ZSBSb3RhdGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9odWUtcm90YXRlXG4gICAgICAgKi9cbiAgICAgICdodWUtcm90YXRlJzogW3tcbiAgICAgICAgJ2h1ZS1yb3RhdGUnOiBbaHVlUm90YXRlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEludmVydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ludmVydFxuICAgICAgICovXG4gICAgICBpbnZlcnQ6IFt7XG4gICAgICAgIGludmVydDogW2ludmVydF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTYXR1cmF0ZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NhdHVyYXRlXG4gICAgICAgKi9cbiAgICAgIHNhdHVyYXRlOiBbe1xuICAgICAgICBzYXR1cmF0ZTogW3NhdHVyYXRlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNlcGlhXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2VwaWFcbiAgICAgICAqL1xuICAgICAgc2VwaWE6IFt7XG4gICAgICAgIHNlcGlhOiBbc2VwaWFdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgRmlsdGVyXG4gICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtZmlsdGVyXG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1maWx0ZXInOiBbe1xuICAgICAgICAnYmFja2Ryb3AtZmlsdGVyJzogWycnLCAnbm9uZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgQmx1clxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWJsdXJcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLWJsdXInOiBbe1xuICAgICAgICAnYmFja2Ryb3AtYmx1cic6IFtibHVyXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIEJyaWdodG5lc3NcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1icmlnaHRuZXNzXG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1icmlnaHRuZXNzJzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLWJyaWdodG5lc3MnOiBbYnJpZ2h0bmVzc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZHJvcCBDb250cmFzdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWNvbnRyYXN0XG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1jb250cmFzdCc6IFt7XG4gICAgICAgICdiYWNrZHJvcC1jb250cmFzdCc6IFtjb250cmFzdF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZHJvcCBHcmF5c2NhbGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1ncmF5c2NhbGVcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLWdyYXlzY2FsZSc6IFt7XG4gICAgICAgICdiYWNrZHJvcC1ncmF5c2NhbGUnOiBbZ3JheXNjYWxlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIEh1ZSBSb3RhdGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1odWUtcm90YXRlXG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1odWUtcm90YXRlJzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLWh1ZS1yb3RhdGUnOiBbaHVlUm90YXRlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIEludmVydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWludmVydFxuICAgICAgICovXG4gICAgICAnYmFja2Ryb3AtaW52ZXJ0JzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLWludmVydCc6IFtpbnZlcnRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgT3BhY2l0eVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLW9wYWNpdHlcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLW9wYWNpdHknOiBbe1xuICAgICAgICAnYmFja2Ryb3Atb3BhY2l0eSc6IFtvcGFjaXR5XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIFNhdHVyYXRlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atc2F0dXJhdGVcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLXNhdHVyYXRlJzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLXNhdHVyYXRlJzogW3NhdHVyYXRlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIFNlcGlhXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atc2VwaWFcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLXNlcGlhJzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLXNlcGlhJzogW3NlcGlhXVxuICAgICAgfV0sXG4gICAgICAvLyBUYWJsZXNcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIENvbGxhcHNlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbGxhcHNlXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sbGFwc2UnOiBbe1xuICAgICAgICBib3JkZXI6IFsnY29sbGFwc2UnLCAnc2VwYXJhdGUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBTcGFjaW5nXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1zcGFjaW5nJzogW3tcbiAgICAgICAgJ2JvcmRlci1zcGFjaW5nJzogW2JvcmRlclNwYWNpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFNwYWNpbmcgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItc3BhY2luZy14JzogW3tcbiAgICAgICAgJ2JvcmRlci1zcGFjaW5nLXgnOiBbYm9yZGVyU3BhY2luZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgU3BhY2luZyBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1zcGFjaW5nLXknOiBbe1xuICAgICAgICAnYm9yZGVyLXNwYWNpbmcteSc6IFtib3JkZXJTcGFjaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRhYmxlIExheW91dFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RhYmxlLWxheW91dFxuICAgICAgICovXG4gICAgICAndGFibGUtbGF5b3V0JzogW3tcbiAgICAgICAgdGFibGU6IFsnYXV0bycsICdmaXhlZCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQ2FwdGlvbiBTaWRlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY2FwdGlvbi1zaWRlXG4gICAgICAgKi9cbiAgICAgIGNhcHRpb246IFt7XG4gICAgICAgIGNhcHRpb246IFsndG9wJywgJ2JvdHRvbSddXG4gICAgICB9XSxcbiAgICAgIC8vIFRyYW5zaXRpb25zIGFuZCBBbmltYXRpb25cbiAgICAgIC8qKlxuICAgICAgICogVHJhbmlzaXRpb24gUHJvcGVydHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLXByb3BlcnR5XG4gICAgICAgKi9cbiAgICAgIHRyYW5zaXRpb246IFt7XG4gICAgICAgIHRyYW5zaXRpb246IFsnbm9uZScsICdhbGwnLCAnJywgJ2NvbG9ycycsICdvcGFjaXR5JywgJ3NoYWRvdycsICd0cmFuc2Zvcm0nLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zaXRpb24gRHVyYXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLWR1cmF0aW9uXG4gICAgICAgKi9cbiAgICAgIGR1cmF0aW9uOiBbe1xuICAgICAgICBkdXJhdGlvbjogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUcmFuc2l0aW9uIFRpbWluZyBGdW5jdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uXG4gICAgICAgKi9cbiAgICAgIGVhc2U6IFt7XG4gICAgICAgIGVhc2U6IFsnbGluZWFyJywgJ2luJywgJ291dCcsICdpbi1vdXQnLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zaXRpb24gRGVsYXlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLWRlbGF5XG4gICAgICAgKi9cbiAgICAgIGRlbGF5OiBbe1xuICAgICAgICBkZWxheTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBBbmltYXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbmltYXRpb25cbiAgICAgICAqL1xuICAgICAgYW5pbWF0ZTogW3tcbiAgICAgICAgYW5pbWF0ZTogWydub25lJywgJ3NwaW4nLCAncGluZycsICdwdWxzZScsICdib3VuY2UnLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvLyBUcmFuc2Zvcm1zXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zZm9ybVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zZm9ybVxuICAgICAgICovXG4gICAgICB0cmFuc2Zvcm06IFt7XG4gICAgICAgIHRyYW5zZm9ybTogWycnLCAnZ3B1JywgJ25vbmUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjYWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAqL1xuICAgICAgc2NhbGU6IFt7XG4gICAgICAgIHNjYWxlOiBbc2NhbGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2NhbGUgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgKi9cbiAgICAgICdzY2FsZS14JzogW3tcbiAgICAgICAgJ3NjYWxlLXgnOiBbc2NhbGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2NhbGUgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgKi9cbiAgICAgICdzY2FsZS15JzogW3tcbiAgICAgICAgJ3NjYWxlLXknOiBbc2NhbGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUm90YXRlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvcm90YXRlXG4gICAgICAgKi9cbiAgICAgIHJvdGF0ZTogW3tcbiAgICAgICAgcm90YXRlOiBbaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zbGF0ZSBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNsYXRlXG4gICAgICAgKi9cbiAgICAgICd0cmFuc2xhdGUteCc6IFt7XG4gICAgICAgICd0cmFuc2xhdGUteCc6IFt0cmFuc2xhdGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVHJhbnNsYXRlIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2xhdGVcbiAgICAgICAqL1xuICAgICAgJ3RyYW5zbGF0ZS15JzogW3tcbiAgICAgICAgJ3RyYW5zbGF0ZS15JzogW3RyYW5zbGF0ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTa2V3IFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9za2V3XG4gICAgICAgKi9cbiAgICAgICdza2V3LXgnOiBbe1xuICAgICAgICAnc2tldy14JzogW3NrZXddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2tldyBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2tld1xuICAgICAgICovXG4gICAgICAnc2tldy15JzogW3tcbiAgICAgICAgJ3NrZXcteSc6IFtza2V3XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zZm9ybSBPcmlnaW5cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2Zvcm0tb3JpZ2luXG4gICAgICAgKi9cbiAgICAgICd0cmFuc2Zvcm0tb3JpZ2luJzogW3tcbiAgICAgICAgb3JpZ2luOiBbJ2NlbnRlcicsICd0b3AnLCAndG9wLXJpZ2h0JywgJ3JpZ2h0JywgJ2JvdHRvbS1yaWdodCcsICdib3R0b20nLCAnYm90dG9tLWxlZnQnLCAnbGVmdCcsICd0b3AtbGVmdCcsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8vIEludGVyYWN0aXZpdHlcbiAgICAgIC8qKlxuICAgICAgICogQWNjZW50IENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWNjZW50LWNvbG9yXG4gICAgICAgKi9cbiAgICAgIGFjY2VudDogW3tcbiAgICAgICAgYWNjZW50OiBbJ2F1dG8nLCBjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQXBwZWFyYW5jZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FwcGVhcmFuY2VcbiAgICAgICAqL1xuICAgICAgYXBwZWFyYW5jZTogW3tcbiAgICAgICAgYXBwZWFyYW5jZTogWydub25lJywgJ2F1dG8nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEN1cnNvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2N1cnNvclxuICAgICAgICovXG4gICAgICBjdXJzb3I6IFt7XG4gICAgICAgIGN1cnNvcjogWydhdXRvJywgJ2RlZmF1bHQnLCAncG9pbnRlcicsICd3YWl0JywgJ3RleHQnLCAnbW92ZScsICdoZWxwJywgJ25vdC1hbGxvd2VkJywgJ25vbmUnLCAnY29udGV4dC1tZW51JywgJ3Byb2dyZXNzJywgJ2NlbGwnLCAnY3Jvc3NoYWlyJywgJ3ZlcnRpY2FsLXRleHQnLCAnYWxpYXMnLCAnY29weScsICduby1kcm9wJywgJ2dyYWInLCAnZ3JhYmJpbmcnLCAnYWxsLXNjcm9sbCcsICdjb2wtcmVzaXplJywgJ3Jvdy1yZXNpemUnLCAnbi1yZXNpemUnLCAnZS1yZXNpemUnLCAncy1yZXNpemUnLCAndy1yZXNpemUnLCAnbmUtcmVzaXplJywgJ253LXJlc2l6ZScsICdzZS1yZXNpemUnLCAnc3ctcmVzaXplJywgJ2V3LXJlc2l6ZScsICducy1yZXNpemUnLCAnbmVzdy1yZXNpemUnLCAnbndzZS1yZXNpemUnLCAnem9vbS1pbicsICd6b29tLW91dCcsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQ2FyZXQgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0LWluLXRpbWUtbW9kZSNjYXJldC1jb2xvci11dGlsaXRpZXNcbiAgICAgICAqL1xuICAgICAgJ2NhcmV0LWNvbG9yJzogW3tcbiAgICAgICAgY2FyZXQ6IFtjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUG9pbnRlciBFdmVudHNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wb2ludGVyLWV2ZW50c1xuICAgICAgICovXG4gICAgICAncG9pbnRlci1ldmVudHMnOiBbe1xuICAgICAgICAncG9pbnRlci1ldmVudHMnOiBbJ25vbmUnLCAnYXV0byddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUmVzaXplXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmVzaXplXG4gICAgICAgKi9cbiAgICAgIHJlc2l6ZTogW3tcbiAgICAgICAgcmVzaXplOiBbJ25vbmUnLCAneScsICd4JywgJyddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIEJlaGF2aW9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtYmVoYXZpb3InOiBbe1xuICAgICAgICBzY3JvbGw6IFsnYXV0bycsICdzbW9vdGgnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBNYXJnaW5cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtbSc6IFt7XG4gICAgICAgICdzY3JvbGwtbSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgTWFyZ2luIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtbXgnOiBbe1xuICAgICAgICAnc2Nyb2xsLW14JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBNYXJnaW4gWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1teSc6IFt7XG4gICAgICAgICdzY3JvbGwtbXknOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIE1hcmdpbiBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1tcyc6IFt7XG4gICAgICAgICdzY3JvbGwtbXMnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIE1hcmdpbiBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtbWUnOiBbe1xuICAgICAgICAnc2Nyb2xsLW1lJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBNYXJnaW4gVG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLW10JzogW3tcbiAgICAgICAgJ3Njcm9sbC1tdCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgTWFyZ2luIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLW1yJzogW3tcbiAgICAgICAgJ3Njcm9sbC1tcic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgTWFyZ2luIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1tYic6IFt7XG4gICAgICAgICdzY3JvbGwtbWInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIE1hcmdpbiBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLW1sJzogW3tcbiAgICAgICAgJ3Njcm9sbC1tbCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZ1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtcCc6IFt7XG4gICAgICAgICdzY3JvbGwtcCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZyBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1weCc6IFt7XG4gICAgICAgICdzY3JvbGwtcHgnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmcgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtcHknOiBbe1xuICAgICAgICAnc2Nyb2xsLXB5JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1wcyc6IFt7XG4gICAgICAgICdzY3JvbGwtcHMnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmcgRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1wZSc6IFt7XG4gICAgICAgICdzY3JvbGwtcGUnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmcgVG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1wdCc6IFt7XG4gICAgICAgICdzY3JvbGwtcHQnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmcgUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICovXG4gICAgICAnc2Nyb2xsLXByJzogW3tcbiAgICAgICAgJ3Njcm9sbC1wcic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZyBCb3R0b21cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICovXG4gICAgICAnc2Nyb2xsLXBiJzogW3tcbiAgICAgICAgJ3Njcm9sbC1wYic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZyBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1wbCc6IFt7XG4gICAgICAgICdzY3JvbGwtcGwnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFNuYXAgQWxpZ25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC1hbGlnblxuICAgICAgICovXG4gICAgICAnc25hcC1hbGlnbic6IFt7XG4gICAgICAgIHNuYXA6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdhbGlnbi1ub25lJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgU25hcCBTdG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtc3RvcFxuICAgICAgICovXG4gICAgICAnc25hcC1zdG9wJzogW3tcbiAgICAgICAgc25hcDogWydub3JtYWwnLCAnYWx3YXlzJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgU25hcCBUeXBlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtdHlwZVxuICAgICAgICovXG4gICAgICAnc25hcC10eXBlJzogW3tcbiAgICAgICAgc25hcDogWydub25lJywgJ3gnLCAneScsICdib3RoJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgU25hcCBUeXBlIFN0cmljdG5lc3NcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC10eXBlXG4gICAgICAgKi9cbiAgICAgICdzbmFwLXN0cmljdG5lc3MnOiBbe1xuICAgICAgICBzbmFwOiBbJ21hbmRhdG9yeScsICdwcm94aW1pdHknXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRvdWNoIEFjdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICovXG4gICAgICB0b3VjaDogW3tcbiAgICAgICAgdG91Y2g6IFsnYXV0bycsICdub25lJywgJ21hbmlwdWxhdGlvbiddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVG91Y2ggQWN0aW9uIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAqL1xuICAgICAgJ3RvdWNoLXgnOiBbe1xuICAgICAgICAndG91Y2gtcGFuJzogWyd4JywgJ2xlZnQnLCAncmlnaHQnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRvdWNoIEFjdGlvbiBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgKi9cbiAgICAgICd0b3VjaC15JzogW3tcbiAgICAgICAgJ3RvdWNoLXBhbic6IFsneScsICd1cCcsICdkb3duJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUb3VjaCBBY3Rpb24gUGluY2ggWm9vbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICovXG4gICAgICAndG91Y2gtcHonOiBbJ3RvdWNoLXBpbmNoLXpvb20nXSxcbiAgICAgIC8qKlxuICAgICAgICogVXNlciBTZWxlY3RcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy91c2VyLXNlbGVjdFxuICAgICAgICovXG4gICAgICBzZWxlY3Q6IFt7XG4gICAgICAgIHNlbGVjdDogWydub25lJywgJ3RleHQnLCAnYWxsJywgJ2F1dG8nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFdpbGwgQ2hhbmdlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2lsbC1jaGFuZ2VcbiAgICAgICAqL1xuICAgICAgJ3dpbGwtY2hhbmdlJzogW3tcbiAgICAgICAgJ3dpbGwtY2hhbmdlJzogWydhdXRvJywgJ3Njcm9sbCcsICdjb250ZW50cycsICd0cmFuc2Zvcm0nLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvLyBTVkdcbiAgICAgIC8qKlxuICAgICAgICogRmlsbFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZpbGxcbiAgICAgICAqL1xuICAgICAgZmlsbDogW3tcbiAgICAgICAgZmlsbDogW2NvbG9ycywgJ25vbmUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFN0cm9rZSBXaWR0aFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3N0cm9rZS13aWR0aFxuICAgICAgICovXG4gICAgICAnc3Ryb2tlLXcnOiBbe1xuICAgICAgICBzdHJva2U6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGgsIGlzQXJiaXRyYXJ5TnVtYmVyXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFN0cm9rZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3N0cm9rZVxuICAgICAgICovXG4gICAgICBzdHJva2U6IFt7XG4gICAgICAgIHN0cm9rZTogW2NvbG9ycywgJ25vbmUnXVxuICAgICAgfV0sXG4gICAgICAvLyBBY2Nlc3NpYmlsaXR5XG4gICAgICAvKipcbiAgICAgICAqIFNjcmVlbiBSZWFkZXJzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NyZWVuLXJlYWRlcnNcbiAgICAgICAqL1xuICAgICAgc3I6IFsnc3Itb25seScsICdub3Qtc3Itb25seSddLFxuICAgICAgLyoqXG4gICAgICAgKiBGb3JjZWQgQ29sb3IgQWRqdXN0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9yY2VkLWNvbG9yLWFkanVzdFxuICAgICAgICovXG4gICAgICAnZm9yY2VkLWNvbG9yLWFkanVzdCc6IFt7XG4gICAgICAgICdmb3JjZWQtY29sb3ItYWRqdXN0JzogWydhdXRvJywgJ25vbmUnXVxuICAgICAgfV1cbiAgICB9LFxuICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cHM6IHtcbiAgICAgIG92ZXJmbG93OiBbJ292ZXJmbG93LXgnLCAnb3ZlcmZsb3cteSddLFxuICAgICAgb3ZlcnNjcm9sbDogWydvdmVyc2Nyb2xsLXgnLCAnb3ZlcnNjcm9sbC15J10sXG4gICAgICBpbnNldDogWydpbnNldC14JywgJ2luc2V0LXknLCAnc3RhcnQnLCAnZW5kJywgJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddLFxuICAgICAgJ2luc2V0LXgnOiBbJ3JpZ2h0JywgJ2xlZnQnXSxcbiAgICAgICdpbnNldC15JzogWyd0b3AnLCAnYm90dG9tJ10sXG4gICAgICBmbGV4OiBbJ2Jhc2lzJywgJ2dyb3cnLCAnc2hyaW5rJ10sXG4gICAgICBnYXA6IFsnZ2FwLXgnLCAnZ2FwLXknXSxcbiAgICAgIHA6IFsncHgnLCAncHknLCAncHMnLCAncGUnLCAncHQnLCAncHInLCAncGInLCAncGwnXSxcbiAgICAgIHB4OiBbJ3ByJywgJ3BsJ10sXG4gICAgICBweTogWydwdCcsICdwYiddLFxuICAgICAgbTogWydteCcsICdteScsICdtcycsICdtZScsICdtdCcsICdtcicsICdtYicsICdtbCddLFxuICAgICAgbXg6IFsnbXInLCAnbWwnXSxcbiAgICAgIG15OiBbJ210JywgJ21iJ10sXG4gICAgICBzaXplOiBbJ3cnLCAnaCddLFxuICAgICAgJ2ZvbnQtc2l6ZSc6IFsnbGVhZGluZyddLFxuICAgICAgJ2Z2bi1ub3JtYWwnOiBbJ2Z2bi1vcmRpbmFsJywgJ2Z2bi1zbGFzaGVkLXplcm8nLCAnZnZuLWZpZ3VyZScsICdmdm4tc3BhY2luZycsICdmdm4tZnJhY3Rpb24nXSxcbiAgICAgICdmdm4tb3JkaW5hbCc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICdmdm4tZmlndXJlJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAnZnZuLXNwYWNpbmcnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICdmdm4tZnJhY3Rpb24nOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICdsaW5lLWNsYW1wJzogWydkaXNwbGF5JywgJ292ZXJmbG93J10sXG4gICAgICByb3VuZGVkOiBbJ3JvdW5kZWQtcycsICdyb3VuZGVkLWUnLCAncm91bmRlZC10JywgJ3JvdW5kZWQtcicsICdyb3VuZGVkLWInLCAncm91bmRlZC1sJywgJ3JvdW5kZWQtc3MnLCAncm91bmRlZC1zZScsICdyb3VuZGVkLWVlJywgJ3JvdW5kZWQtZXMnLCAncm91bmRlZC10bCcsICdyb3VuZGVkLXRyJywgJ3JvdW5kZWQtYnInLCAncm91bmRlZC1ibCddLFxuICAgICAgJ3JvdW5kZWQtcyc6IFsncm91bmRlZC1zcycsICdyb3VuZGVkLWVzJ10sXG4gICAgICAncm91bmRlZC1lJzogWydyb3VuZGVkLXNlJywgJ3JvdW5kZWQtZWUnXSxcbiAgICAgICdyb3VuZGVkLXQnOiBbJ3JvdW5kZWQtdGwnLCAncm91bmRlZC10ciddLFxuICAgICAgJ3JvdW5kZWQtcic6IFsncm91bmRlZC10cicsICdyb3VuZGVkLWJyJ10sXG4gICAgICAncm91bmRlZC1iJzogWydyb3VuZGVkLWJyJywgJ3JvdW5kZWQtYmwnXSxcbiAgICAgICdyb3VuZGVkLWwnOiBbJ3JvdW5kZWQtdGwnLCAncm91bmRlZC1ibCddLFxuICAgICAgJ2JvcmRlci1zcGFjaW5nJzogWydib3JkZXItc3BhY2luZy14JywgJ2JvcmRlci1zcGFjaW5nLXknXSxcbiAgICAgICdib3JkZXItdyc6IFsnYm9yZGVyLXctcycsICdib3JkZXItdy1lJywgJ2JvcmRlci13LXQnLCAnYm9yZGVyLXctcicsICdib3JkZXItdy1iJywgJ2JvcmRlci13LWwnXSxcbiAgICAgICdib3JkZXItdy14JzogWydib3JkZXItdy1yJywgJ2JvcmRlci13LWwnXSxcbiAgICAgICdib3JkZXItdy15JzogWydib3JkZXItdy10JywgJ2JvcmRlci13LWInXSxcbiAgICAgICdib3JkZXItY29sb3InOiBbJ2JvcmRlci1jb2xvci10JywgJ2JvcmRlci1jb2xvci1yJywgJ2JvcmRlci1jb2xvci1iJywgJ2JvcmRlci1jb2xvci1sJ10sXG4gICAgICAnYm9yZGVyLWNvbG9yLXgnOiBbJ2JvcmRlci1jb2xvci1yJywgJ2JvcmRlci1jb2xvci1sJ10sXG4gICAgICAnYm9yZGVyLWNvbG9yLXknOiBbJ2JvcmRlci1jb2xvci10JywgJ2JvcmRlci1jb2xvci1iJ10sXG4gICAgICAnc2Nyb2xsLW0nOiBbJ3Njcm9sbC1teCcsICdzY3JvbGwtbXknLCAnc2Nyb2xsLW1zJywgJ3Njcm9sbC1tZScsICdzY3JvbGwtbXQnLCAnc2Nyb2xsLW1yJywgJ3Njcm9sbC1tYicsICdzY3JvbGwtbWwnXSxcbiAgICAgICdzY3JvbGwtbXgnOiBbJ3Njcm9sbC1tcicsICdzY3JvbGwtbWwnXSxcbiAgICAgICdzY3JvbGwtbXknOiBbJ3Njcm9sbC1tdCcsICdzY3JvbGwtbWInXSxcbiAgICAgICdzY3JvbGwtcCc6IFsnc2Nyb2xsLXB4JywgJ3Njcm9sbC1weScsICdzY3JvbGwtcHMnLCAnc2Nyb2xsLXBlJywgJ3Njcm9sbC1wdCcsICdzY3JvbGwtcHInLCAnc2Nyb2xsLXBiJywgJ3Njcm9sbC1wbCddLFxuICAgICAgJ3Njcm9sbC1weCc6IFsnc2Nyb2xsLXByJywgJ3Njcm9sbC1wbCddLFxuICAgICAgJ3Njcm9sbC1weSc6IFsnc2Nyb2xsLXB0JywgJ3Njcm9sbC1wYiddLFxuICAgICAgdG91Y2g6IFsndG91Y2gteCcsICd0b3VjaC15JywgJ3RvdWNoLXB6J10sXG4gICAgICAndG91Y2gteCc6IFsndG91Y2gnXSxcbiAgICAgICd0b3VjaC15JzogWyd0b3VjaCddLFxuICAgICAgJ3RvdWNoLXB6JzogWyd0b3VjaCddXG4gICAgfSxcbiAgICBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnM6IHtcbiAgICAgICdmb250LXNpemUnOiBbJ2xlYWRpbmcnXVxuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gYmFzZUNvbmZpZyBDb25maWcgd2hlcmUgb3RoZXIgY29uZmlnIHdpbGwgYmUgbWVyZ2VkIGludG8uIFRoaXMgb2JqZWN0IHdpbGwgYmUgbXV0YXRlZC5cbiAqIEBwYXJhbSBjb25maWdFeHRlbnNpb24gUGFydGlhbCBjb25maWcgdG8gbWVyZ2UgaW50byB0aGUgYGJhc2VDb25maWdgLlxuICovXG5mdW5jdGlvbiBtZXJnZUNvbmZpZ3MoYmFzZUNvbmZpZywge1xuICBjYWNoZVNpemUsXG4gIHByZWZpeCxcbiAgc2VwYXJhdG9yLFxuICBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSxcbiAgZXh0ZW5kID0ge30sXG4gIG92ZXJyaWRlID0ge31cbn0pIHtcbiAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnY2FjaGVTaXplJywgY2FjaGVTaXplKTtcbiAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAncHJlZml4JywgcHJlZml4KTtcbiAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnc2VwYXJhdG9yJywgc2VwYXJhdG9yKTtcbiAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUnLCBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSk7XG4gIGZvciAoY29uc3QgY29uZmlnS2V5IGluIG92ZXJyaWRlKSB7XG4gICAgb3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzKGJhc2VDb25maWdbY29uZmlnS2V5XSwgb3ZlcnJpZGVbY29uZmlnS2V5XSk7XG4gIH1cbiAgZm9yIChjb25zdCBrZXkgaW4gZXh0ZW5kKSB7XG4gICAgbWVyZ2VDb25maWdQcm9wZXJ0aWVzKGJhc2VDb25maWdba2V5XSwgZXh0ZW5kW2tleV0pO1xuICB9XG4gIHJldHVybiBiYXNlQ29uZmlnO1xufVxuZnVuY3Rpb24gb3ZlcnJpZGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBvdmVycmlkZUtleSwgb3ZlcnJpZGVWYWx1ZSkge1xuICBpZiAob3ZlcnJpZGVWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgYmFzZU9iamVjdFtvdmVycmlkZUtleV0gPSBvdmVycmlkZVZhbHVlO1xuICB9XG59XG5mdW5jdGlvbiBvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMoYmFzZU9iamVjdCwgb3ZlcnJpZGVPYmplY3QpIHtcbiAgaWYgKG92ZXJyaWRlT2JqZWN0KSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb3ZlcnJpZGVPYmplY3QpIHtcbiAgICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZU9iamVjdCwga2V5LCBvdmVycmlkZU9iamVjdFtrZXldKTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIG1lcmdlQ29uZmlnUHJvcGVydGllcyhiYXNlT2JqZWN0LCBtZXJnZU9iamVjdCkge1xuICBpZiAobWVyZ2VPYmplY3QpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBtZXJnZU9iamVjdCkge1xuICAgICAgY29uc3QgbWVyZ2VWYWx1ZSA9IG1lcmdlT2JqZWN0W2tleV07XG4gICAgICBpZiAobWVyZ2VWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGJhc2VPYmplY3Rba2V5XSA9IChiYXNlT2JqZWN0W2tleV0gfHwgW10pLmNvbmNhdChtZXJnZVZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGV4dGVuZFRhaWx3aW5kTWVyZ2UoY29uZmlnRXh0ZW5zaW9uLCAuLi5jcmVhdGVDb25maWcpIHtcbiAgcmV0dXJuIHR5cGVvZiBjb25maWdFeHRlbnNpb24gPT09ICdmdW5jdGlvbicgPyBjcmVhdGVUYWlsd2luZE1lcmdlKGdldERlZmF1bHRDb25maWcsIGNvbmZpZ0V4dGVuc2lvbiwgLi4uY3JlYXRlQ29uZmlnKSA6IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoKCkgPT4gbWVyZ2VDb25maWdzKGdldERlZmF1bHRDb25maWcoKSwgY29uZmlnRXh0ZW5zaW9uKSwgLi4uY3JlYXRlQ29uZmlnKTtcbn1cbmNvbnN0IHR3TWVyZ2UgPSAvKiNfX1BVUkVfXyovY3JlYXRlVGFpbHdpbmRNZXJnZShnZXREZWZhdWx0Q29uZmlnKTtcbmV4cG9ydCB7IGNyZWF0ZVRhaWx3aW5kTWVyZ2UsIGV4dGVuZFRhaWx3aW5kTWVyZ2UsIGZyb21UaGVtZSwgZ2V0RGVmYXVsdENvbmZpZywgbWVyZ2VDb25maWdzLCB0d0pvaW4sIHR3TWVyZ2UsIHZhbGlkYXRvcnMgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJ1bmRsZS1tanMubWpzLm1hcFxuIiwiZnVuY3Rpb24gaXNPYmplY3QoaXRlbSkge1xuICByZXR1cm4gaXRlbSAhPT0gbnVsbCAmJiB0eXBlb2YgaXRlbSA9PT0gXCJvYmplY3RcIiAmJiBpdGVtLmNvbnN0cnVjdG9yID09PSBPYmplY3Q7XG59XG5cbmV4cG9ydCB7IGlzT2JqZWN0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1vYmplY3QubWpzLm1hcFxuIiwiaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tICcuL2lzLW9iamVjdC5tanMnO1xuXG5mdW5jdGlvbiBjbG9uZURlZXAoc291cmNlKSB7XG4gIGlmICghaXNPYmplY3Qoc291cmNlKSkge1xuICAgIHJldHVybiBzb3VyY2U7XG4gIH1cbiAgY29uc3Qgb3V0cHV0ID0ge307XG4gIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgIG91dHB1dFtrZXldID0gY2xvbmVEZWVwKHNvdXJjZVtrZXldKTtcbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufVxuXG5leHBvcnQgeyBjbG9uZURlZXAgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNsb25lLWRlZXAubWpzLm1hcFxuIiwiaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnLi9jbG9uZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJy4vaXMtb2JqZWN0Lm1qcyc7XG5cbmZ1bmN0aW9uIG1lcmdlRGVlcCh0YXJnZXQsIHNvdXJjZSkge1xuICBpZiAoaXNPYmplY3Qoc291cmNlKSAmJiBPYmplY3Qua2V5cyhzb3VyY2UpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBjbG9uZURlZXAoeyAuLi50YXJnZXQsIC4uLnNvdXJjZSB9KTtcbiAgfVxuICBjb25zdCBvdXRwdXQgPSB7IC4uLnRhcmdldCwgLi4uc291cmNlIH07XG4gIGlmIChpc09iamVjdChzb3VyY2UpICYmIGlzT2JqZWN0KHRhcmdldCkpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzb3VyY2UpIHtcbiAgICAgIGlmIChpc09iamVjdChzb3VyY2Vba2V5XSkgJiYga2V5IGluIHRhcmdldCAmJiBpc09iamVjdCh0YXJnZXRba2V5XSkpIHtcbiAgICAgICAgb3V0cHV0W2tleV0gPSBtZXJnZURlZXAodGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dHB1dFtrZXldID0gaXNPYmplY3Qoc291cmNlW2tleV0pID8gY2xvbmVEZWVwKHNvdXJjZVtrZXldKSA6IHNvdXJjZVtrZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufVxuXG5leHBvcnQgeyBtZXJnZURlZXAgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1lcmdlLWRlZXAubWpzLm1hcFxuIiwiZnVuY3Rpb24gY3JlYXRlVGhlbWUoaW5wdXQpIHtcbiAgcmV0dXJuIGlucHV0O1xufVxuXG5leHBvcnQgeyBjcmVhdGVUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y3JlYXRlLXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgYWNjb3JkaW9uVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImRpdmlkZS15IGRpdmlkZS1ncmF5LTIwMCBib3JkZXItZ3JheS0yMDAgZGFyazpkaXZpZGUtZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS03MDBcIixcbiAgICBmbHVzaDoge1xuICAgICAgb2ZmOiBcInJvdW5kZWQtbGcgYm9yZGVyXCIsXG4gICAgICBvbjogXCJib3JkZXItYlwiXG4gICAgfVxuICB9LFxuICBjb250ZW50OiB7XG4gICAgYmFzZTogXCJwLTUgZmlyc3Q6cm91bmRlZC10LWxnIGxhc3Q6cm91bmRlZC1iLWxnIGRhcms6YmctZ3JheS05MDBcIlxuICB9LFxuICB0aXRsZToge1xuICAgIGFycm93OiB7XG4gICAgICBiYXNlOiBcImgtNiB3LTYgc2hyaW5rLTBcIixcbiAgICAgIG9wZW46IHtcbiAgICAgICAgb2ZmOiBcIlwiLFxuICAgICAgICBvbjogXCJyb3RhdGUtMTgwXCJcbiAgICAgIH1cbiAgICB9LFxuICAgIGJhc2U6IFwiZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwLTUgdGV4dC1sZWZ0IGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDAgZmlyc3Q6cm91bmRlZC10LWxnIGxhc3Q6cm91bmRlZC1iLWxnIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICAgIGZsdXNoOiB7XG4gICAgICBvZmY6IFwiaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JheS0yMDAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS04MDBcIixcbiAgICAgIG9uOiBcImJnLXRyYW5zcGFyZW50IGRhcms6YmctdHJhbnNwYXJlbnRcIlxuICAgIH0sXG4gICAgaGVhZGluZzogXCJcIixcbiAgICBvcGVuOiB7XG4gICAgICBvZmY6IFwiXCIsXG4gICAgICBvbjogXCJiZy1ncmF5LTEwMCB0ZXh0LWdyYXktOTAwIGRhcms6YmctZ3JheS04MDAgZGFyazp0ZXh0LXdoaXRlXCJcbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBhY2NvcmRpb25UaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBhbGVydFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBiYXNlOiBcImZsZXggZmxleC1jb2wgZ2FwLTIgcC00IHRleHQtc21cIixcbiAgYm9yZGVyQWNjZW50OiBcImJvcmRlci10LTRcIixcbiAgY2xvc2VCdXR0b246IHtcbiAgICBiYXNlOiBcIi1tLTEuNSBtbC1hdXRvIGlubGluZS1mbGV4IGgtOCB3LTggcm91bmRlZC1sZyBwLTEuNSBmb2N1czpyaW5nLTJcIixcbiAgICBpY29uOiBcImgtNSB3LTVcIixcbiAgICBjb2xvcjoge1xuICAgICAgaW5mbzogXCJiZy1jeWFuLTEwMCB0ZXh0LWN5YW4tNTAwIGhvdmVyOmJnLWN5YW4tMjAwIGZvY3VzOnJpbmctY3lhbi00MDAgZGFyazpiZy1jeWFuLTIwMCBkYXJrOnRleHQtY3lhbi02MDAgZGFyazpob3ZlcjpiZy1jeWFuLTMwMFwiLFxuICAgICAgZ3JheTogXCJiZy1ncmF5LTEwMCB0ZXh0LWdyYXktNTAwIGhvdmVyOmJnLWdyYXktMjAwIGZvY3VzOnJpbmctZ3JheS00MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS0zMDAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGVcIixcbiAgICAgIGZhaWx1cmU6IFwiYmctcmVkLTEwMCB0ZXh0LXJlZC01MDAgaG92ZXI6YmctcmVkLTIwMCBmb2N1czpyaW5nLXJlZC00MDAgZGFyazpiZy1yZWQtMjAwIGRhcms6dGV4dC1yZWQtNjAwIGRhcms6aG92ZXI6YmctcmVkLTMwMFwiLFxuICAgICAgc3VjY2VzczogXCJiZy1ncmVlbi0xMDAgdGV4dC1ncmVlbi01MDAgaG92ZXI6YmctZ3JlZW4tMjAwIGZvY3VzOnJpbmctZ3JlZW4tNDAwIGRhcms6YmctZ3JlZW4tMjAwIGRhcms6dGV4dC1ncmVlbi02MDAgZGFyazpob3ZlcjpiZy1ncmVlbi0zMDBcIixcbiAgICAgIHdhcm5pbmc6IFwiYmcteWVsbG93LTEwMCB0ZXh0LXllbGxvdy01MDAgaG92ZXI6YmcteWVsbG93LTIwMCBmb2N1czpyaW5nLXllbGxvdy00MDAgZGFyazpiZy15ZWxsb3ctMjAwIGRhcms6dGV4dC15ZWxsb3ctNjAwIGRhcms6aG92ZXI6YmcteWVsbG93LTMwMFwiLFxuICAgICAgcmVkOiBcImJnLXJlZC0xMDAgdGV4dC1yZWQtNTAwIGhvdmVyOmJnLXJlZC0yMDAgZm9jdXM6cmluZy1yZWQtNDAwIGRhcms6YmctcmVkLTIwMCBkYXJrOnRleHQtcmVkLTYwMCBkYXJrOmhvdmVyOmJnLXJlZC0zMDBcIixcbiAgICAgIGdyZWVuOiBcImJnLWdyZWVuLTEwMCB0ZXh0LWdyZWVuLTUwMCBob3ZlcjpiZy1ncmVlbi0yMDAgZm9jdXM6cmluZy1ncmVlbi00MDAgZGFyazpiZy1ncmVlbi0yMDAgZGFyazp0ZXh0LWdyZWVuLTYwMCBkYXJrOmhvdmVyOmJnLWdyZWVuLTMwMFwiLFxuICAgICAgeWVsbG93OiBcImJnLXllbGxvdy0xMDAgdGV4dC15ZWxsb3ctNTAwIGhvdmVyOmJnLXllbGxvdy0yMDAgZm9jdXM6cmluZy15ZWxsb3ctNDAwIGRhcms6YmcteWVsbG93LTIwMCBkYXJrOnRleHQteWVsbG93LTYwMCBkYXJrOmhvdmVyOmJnLXllbGxvdy0zMDBcIixcbiAgICAgIGJsdWU6IFwiYmctYmx1ZS0xMDAgdGV4dC1ibHVlLTUwMCBob3ZlcjpiZy1ibHVlLTIwMCBmb2N1czpyaW5nLWJsdWUtNDAwIGRhcms6YmctYmx1ZS0yMDAgZGFyazp0ZXh0LWJsdWUtNjAwIGRhcms6aG92ZXI6YmctYmx1ZS0zMDBcIixcbiAgICAgIGN5YW46IFwiYmctY3lhbi0xMDAgdGV4dC1jeWFuLTUwMCBob3ZlcjpiZy1jeWFuLTIwMCBmb2N1czpyaW5nLWN5YW4tNDAwIGRhcms6YmctY3lhbi0yMDAgZGFyazp0ZXh0LWN5YW4tNjAwIGRhcms6aG92ZXI6YmctY3lhbi0zMDBcIixcbiAgICAgIHBpbms6IFwiYmctcGluay0xMDAgdGV4dC1waW5rLTUwMCBob3ZlcjpiZy1waW5rLTIwMCBmb2N1czpyaW5nLXBpbmstNDAwIGRhcms6YmctcGluay0yMDAgZGFyazp0ZXh0LXBpbmstNjAwIGRhcms6aG92ZXI6YmctcGluay0zMDBcIixcbiAgICAgIGxpbWU6IFwiYmctbGltZS0xMDAgdGV4dC1saW1lLTUwMCBob3ZlcjpiZy1saW1lLTIwMCBmb2N1czpyaW5nLWxpbWUtNDAwIGRhcms6YmctbGltZS0yMDAgZGFyazp0ZXh0LWxpbWUtNjAwIGRhcms6aG92ZXI6YmctbGltZS0zMDBcIixcbiAgICAgIGRhcms6IFwiYmctZ3JheS0xMDAgdGV4dC1ncmF5LTUwMCBob3ZlcjpiZy1ncmF5LTIwMCBmb2N1czpyaW5nLWdyYXktNDAwIGRhcms6YmctZ3JheS0yMDAgZGFyazp0ZXh0LWdyYXktNjAwIGRhcms6aG92ZXI6YmctZ3JheS0zMDBcIixcbiAgICAgIGluZGlnbzogXCJiZy1pbmRpZ28tMTAwIHRleHQtaW5kaWdvLTUwMCBob3ZlcjpiZy1pbmRpZ28tMjAwIGZvY3VzOnJpbmctaW5kaWdvLTQwMCBkYXJrOmJnLWluZGlnby0yMDAgZGFyazp0ZXh0LWluZGlnby02MDAgZGFyazpob3ZlcjpiZy1pbmRpZ28tMzAwXCIsXG4gICAgICBwdXJwbGU6IFwiYmctcHVycGxlLTEwMCB0ZXh0LXB1cnBsZS01MDAgaG92ZXI6YmctcHVycGxlLTIwMCBmb2N1czpyaW5nLXB1cnBsZS00MDAgZGFyazpiZy1wdXJwbGUtMjAwIGRhcms6dGV4dC1wdXJwbGUtNjAwIGRhcms6aG92ZXI6YmctcHVycGxlLTMwMFwiLFxuICAgICAgdGVhbDogXCJiZy10ZWFsLTEwMCB0ZXh0LXRlYWwtNTAwIGhvdmVyOmJnLXRlYWwtMjAwIGZvY3VzOnJpbmctdGVhbC00MDAgZGFyazpiZy10ZWFsLTIwMCBkYXJrOnRleHQtdGVhbC02MDAgZGFyazpob3ZlcjpiZy10ZWFsLTMwMFwiLFxuICAgICAgbGlnaHQ6IFwiYmctZ3JheS01MCB0ZXh0LWdyYXktNTAwIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOnJpbmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS0yMDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGVcIlxuICAgIH1cbiAgfSxcbiAgY29sb3I6IHtcbiAgICBpbmZvOiBcImJvcmRlci1jeWFuLTUwMCBiZy1jeWFuLTEwMCB0ZXh0LWN5YW4tNzAwIGRhcms6YmctY3lhbi0yMDAgZGFyazp0ZXh0LWN5YW4tODAwXCIsXG4gICAgZ3JheTogXCJib3JkZXItZ3JheS01MDAgYmctZ3JheS0xMDAgdGV4dC1ncmF5LTcwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTMwMFwiLFxuICAgIGZhaWx1cmU6IFwiYm9yZGVyLXJlZC01MDAgYmctcmVkLTEwMCB0ZXh0LXJlZC03MDAgZGFyazpiZy1yZWQtMjAwIGRhcms6dGV4dC1yZWQtODAwXCIsXG4gICAgc3VjY2VzczogXCJib3JkZXItZ3JlZW4tNTAwIGJnLWdyZWVuLTEwMCB0ZXh0LWdyZWVuLTcwMCBkYXJrOmJnLWdyZWVuLTIwMCBkYXJrOnRleHQtZ3JlZW4tODAwXCIsXG4gICAgd2FybmluZzogXCJib3JkZXIteWVsbG93LTUwMCBiZy15ZWxsb3ctMTAwIHRleHQteWVsbG93LTcwMCBkYXJrOmJnLXllbGxvdy0yMDAgZGFyazp0ZXh0LXllbGxvdy04MDBcIixcbiAgICByZWQ6IFwiYm9yZGVyLXJlZC01MDAgYmctcmVkLTEwMCB0ZXh0LXJlZC03MDAgZGFyazpiZy1yZWQtMjAwIGRhcms6dGV4dC1yZWQtODAwXCIsXG4gICAgZ3JlZW46IFwiYm9yZGVyLWdyZWVuLTUwMCBiZy1ncmVlbi0xMDAgdGV4dC1ncmVlbi03MDAgZGFyazpiZy1ncmVlbi0yMDAgZGFyazp0ZXh0LWdyZWVuLTgwMFwiLFxuICAgIHllbGxvdzogXCJib3JkZXIteWVsbG93LTUwMCBiZy15ZWxsb3ctMTAwIHRleHQteWVsbG93LTcwMCBkYXJrOmJnLXllbGxvdy0yMDAgZGFyazp0ZXh0LXllbGxvdy04MDBcIixcbiAgICBibHVlOiBcImJvcmRlci1ibHVlLTUwMCBiZy1ibHVlLTEwMCB0ZXh0LWJsdWUtNzAwIGRhcms6YmctYmx1ZS0yMDAgZGFyazp0ZXh0LWJsdWUtODAwXCIsXG4gICAgY3lhbjogXCJib3JkZXItY3lhbi01MDAgYmctY3lhbi0xMDAgdGV4dC1jeWFuLTcwMCBkYXJrOmJnLWN5YW4tMjAwIGRhcms6dGV4dC1jeWFuLTgwMFwiLFxuICAgIHBpbms6IFwiYm9yZGVyLXBpbmstNTAwIGJnLXBpbmstMTAwIHRleHQtcGluay03MDAgZGFyazpiZy1waW5rLTIwMCBkYXJrOnRleHQtcGluay04MDBcIixcbiAgICBsaW1lOiBcImJvcmRlci1saW1lLTUwMCBiZy1saW1lLTEwMCB0ZXh0LWxpbWUtNzAwIGRhcms6YmctbGltZS0yMDAgZGFyazp0ZXh0LWxpbWUtODAwXCIsXG4gICAgZGFyazogXCJib3JkZXItZ3JheS02MDAgYmctZ3JheS04MDAgdGV4dC1ncmF5LTIwMCBkYXJrOmJnLWdyYXktOTAwIGRhcms6dGV4dC1ncmF5LTMwMFwiLFxuICAgIGluZGlnbzogXCJib3JkZXItaW5kaWdvLTUwMCBiZy1pbmRpZ28tMTAwIHRleHQtaW5kaWdvLTcwMCBkYXJrOmJnLWluZGlnby0yMDAgZGFyazp0ZXh0LWluZGlnby04MDBcIixcbiAgICBwdXJwbGU6IFwiYm9yZGVyLXB1cnBsZS01MDAgYmctcHVycGxlLTEwMCB0ZXh0LXB1cnBsZS03MDAgZGFyazpiZy1wdXJwbGUtMjAwIGRhcms6dGV4dC1wdXJwbGUtODAwXCIsXG4gICAgdGVhbDogXCJib3JkZXItdGVhbC01MDAgYmctdGVhbC0xMDAgdGV4dC10ZWFsLTcwMCBkYXJrOmJnLXRlYWwtMjAwIGRhcms6dGV4dC10ZWFsLTgwMFwiLFxuICAgIGxpZ2h0OiBcImJvcmRlci1ncmF5LTQwMCBiZy1ncmF5LTUwIHRleHQtZ3JheS02MDAgZGFyazpiZy1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS0yMDBcIlxuICB9LFxuICBpY29uOiBcIm1yLTMgaW5saW5lIGgtNSB3LTUgZmxleC1zaHJpbmstMFwiLFxuICByb3VuZGVkOiBcInJvdW5kZWQtbGdcIixcbiAgd3JhcHBlcjogXCJmbGV4IGl0ZW1zLWNlbnRlclwiXG59KTtcblxuZXhwb3J0IHsgYWxlcnRUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBhdmF0YXJUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc3BhY2UteC00IHJvdW5kZWRcIixcbiAgICBib3JkZXJlZDogXCJwLTEgcmluZy0yXCIsXG4gICAgcm91bmRlZDogXCJyb3VuZGVkLWZ1bGxcIixcbiAgICBjb2xvcjoge1xuICAgICAgZGFyazogXCJyaW5nLWdyYXktODAwIGRhcms6cmluZy1ncmF5LTgwMFwiLFxuICAgICAgZmFpbHVyZTogXCJyaW5nLXJlZC01MDAgZGFyazpyaW5nLXJlZC03MDBcIixcbiAgICAgIGdyYXk6IFwicmluZy1ncmF5LTUwMCBkYXJrOnJpbmctZ3JheS00MDBcIixcbiAgICAgIGluZm86IFwicmluZy1jeWFuLTQwMCBkYXJrOnJpbmctY3lhbi04MDBcIixcbiAgICAgIGxpZ2h0OiBcInJpbmctZ3JheS0zMDAgZGFyazpyaW5nLWdyYXktNTAwXCIsXG4gICAgICBwdXJwbGU6IFwicmluZy1wdXJwbGUtNTAwIGRhcms6cmluZy1wdXJwbGUtNjAwXCIsXG4gICAgICBzdWNjZXNzOiBcInJpbmctZ3JlZW4tNTAwIGRhcms6cmluZy1ncmVlbi01MDBcIixcbiAgICAgIHdhcm5pbmc6IFwicmluZy15ZWxsb3ctMzAwIGRhcms6cmluZy15ZWxsb3ctNTAwXCIsXG4gICAgICBwaW5rOiBcInJpbmctcGluay01MDAgZGFyazpyaW5nLXBpbmstNTAwXCJcbiAgICB9LFxuICAgIGltZzoge1xuICAgICAgYmFzZTogXCJyb3VuZGVkXCIsXG4gICAgICBvZmY6IFwicmVsYXRpdmUgb3ZlcmZsb3ctaGlkZGVuIGJnLWdyYXktMTAwIGRhcms6YmctZ3JheS02MDBcIixcbiAgICAgIG9uOiBcIlwiLFxuICAgICAgcGxhY2Vob2xkZXI6IFwiYWJzb2x1dGUgLWJvdHRvbS0xIGgtYXV0byB3LWF1dG8gdGV4dC1ncmF5LTQwMFwiXG4gICAgfSxcbiAgICBzaXplOiB7XG4gICAgICB4czogXCJoLTYgdy02XCIsXG4gICAgICBzbTogXCJoLTggdy04XCIsXG4gICAgICBtZDogXCJoLTEwIHctMTBcIixcbiAgICAgIGxnOiBcImgtMjAgdy0yMFwiLFxuICAgICAgeGw6IFwiaC0zNiB3LTM2XCJcbiAgICB9LFxuICAgIHN0YWNrZWQ6IFwicmluZy0yIHJpbmctZ3JheS0zMDAgZGFyazpyaW5nLWdyYXktNTAwXCIsXG4gICAgc3RhdHVzUG9zaXRpb246IHtcbiAgICAgIFwiYm90dG9tLWxlZnRcIjogXCItYm90dG9tLTEgLWxlZnQtMVwiLFxuICAgICAgXCJib3R0b20tY2VudGVyXCI6IFwiLWJvdHRvbS0xXCIsXG4gICAgICBcImJvdHRvbS1yaWdodFwiOiBcIi1ib3R0b20tMSAtcmlnaHQtMVwiLFxuICAgICAgXCJ0b3AtbGVmdFwiOiBcIi1sZWZ0LTEgLXRvcC0xXCIsXG4gICAgICBcInRvcC1jZW50ZXJcIjogXCItdG9wLTFcIixcbiAgICAgIFwidG9wLXJpZ2h0XCI6IFwiLXJpZ2h0LTEgLXRvcC0xXCIsXG4gICAgICBcImNlbnRlci1yaWdodFwiOiBcIi1yaWdodC0xXCIsXG4gICAgICBjZW50ZXI6IFwiXCIsXG4gICAgICBcImNlbnRlci1sZWZ0XCI6IFwiLWxlZnQtMVwiXG4gICAgfSxcbiAgICBzdGF0dXM6IHtcbiAgICAgIGF3YXk6IFwiYmcteWVsbG93LTQwMFwiLFxuICAgICAgYmFzZTogXCJhYnNvbHV0ZSBoLTMuNSB3LTMuNSByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLXdoaXRlIGRhcms6Ym9yZGVyLWdyYXktODAwXCIsXG4gICAgICBidXN5OiBcImJnLXJlZC00MDBcIixcbiAgICAgIG9mZmxpbmU6IFwiYmctZ3JheS00MDBcIixcbiAgICAgIG9ubGluZTogXCJiZy1ncmVlbi00MDBcIlxuICAgIH0sXG4gICAgaW5pdGlhbHM6IHtcbiAgICAgIHRleHQ6IFwiZm9udC1tZWRpdW0gdGV4dC1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS0zMDBcIixcbiAgICAgIGJhc2U6IFwicmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIG92ZXJmbG93LWhpZGRlbiBiZy1ncmF5LTEwMCBkYXJrOmJnLWdyYXktNjAwXCJcbiAgICB9XG4gIH0sXG4gIGdyb3VwOiB7XG4gICAgYmFzZTogXCJmbGV4IC1zcGFjZS14LTRcIlxuICB9LFxuICBncm91cENvdW50ZXI6IHtcbiAgICBiYXNlOiBcInJlbGF0aXZlIGZsZXggaC0xMCB3LTEwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWZ1bGwgYmctZ3JheS03MDAgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXdoaXRlIHJpbmctMiByaW5nLWdyYXktMzAwIGhvdmVyOmJnLWdyYXktNjAwIGRhcms6cmluZy1ncmF5LTUwMFwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBhdmF0YXJUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBiYWRnZVRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJmbGV4IGgtZml0IGl0ZW1zLWNlbnRlciBnYXAtMSBmb250LXNlbWlib2xkXCIsXG4gICAgY29sb3I6IHtcbiAgICAgIGluZm86IFwiYmctY3lhbi0xMDAgdGV4dC1jeWFuLTgwMCBncm91cC1ob3ZlcjpiZy1jeWFuLTIwMCBkYXJrOmJnLWN5YW4tMjAwIGRhcms6dGV4dC1jeWFuLTgwMCBkYXJrOmdyb3VwLWhvdmVyOmJnLWN5YW4tMzAwXCIsXG4gICAgICBncmF5OiBcImJnLWdyYXktMTAwIHRleHQtZ3JheS04MDAgZ3JvdXAtaG92ZXI6YmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS0zMDAgZGFyazpncm91cC1ob3ZlcjpiZy1ncmF5LTYwMFwiLFxuICAgICAgZmFpbHVyZTogXCJiZy1yZWQtMTAwIHRleHQtcmVkLTgwMCBncm91cC1ob3ZlcjpiZy1yZWQtMjAwIGRhcms6YmctcmVkLTIwMCBkYXJrOnRleHQtcmVkLTkwMCBkYXJrOmdyb3VwLWhvdmVyOmJnLXJlZC0zMDBcIixcbiAgICAgIHN1Y2Nlc3M6IFwiYmctZ3JlZW4tMTAwIHRleHQtZ3JlZW4tODAwIGdyb3VwLWhvdmVyOmJnLWdyZWVuLTIwMCBkYXJrOmJnLWdyZWVuLTIwMCBkYXJrOnRleHQtZ3JlZW4tOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctZ3JlZW4tMzAwXCIsXG4gICAgICB3YXJuaW5nOiBcImJnLXllbGxvdy0xMDAgdGV4dC15ZWxsb3ctODAwIGdyb3VwLWhvdmVyOmJnLXllbGxvdy0yMDAgZGFyazpiZy15ZWxsb3ctMjAwIGRhcms6dGV4dC15ZWxsb3ctOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmcteWVsbG93LTMwMFwiLFxuICAgICAgaW5kaWdvOiBcImJnLWluZGlnby0xMDAgdGV4dC1pbmRpZ28tODAwIGdyb3VwLWhvdmVyOmJnLWluZGlnby0yMDAgZGFyazpiZy1pbmRpZ28tMjAwIGRhcms6dGV4dC1pbmRpZ28tOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctaW5kaWdvLTMwMFwiLFxuICAgICAgcHVycGxlOiBcImJnLXB1cnBsZS0xMDAgdGV4dC1wdXJwbGUtODAwIGdyb3VwLWhvdmVyOmJnLXB1cnBsZS0yMDAgZGFyazpiZy1wdXJwbGUtMjAwIGRhcms6dGV4dC1wdXJwbGUtOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctcHVycGxlLTMwMFwiLFxuICAgICAgcGluazogXCJiZy1waW5rLTEwMCB0ZXh0LXBpbmstODAwIGdyb3VwLWhvdmVyOmJnLXBpbmstMjAwIGRhcms6YmctcGluay0yMDAgZGFyazp0ZXh0LXBpbmstOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctcGluay0zMDBcIixcbiAgICAgIGJsdWU6IFwiYmctYmx1ZS0xMDAgdGV4dC1ibHVlLTgwMCBncm91cC1ob3ZlcjpiZy1ibHVlLTIwMCBkYXJrOmJnLWJsdWUtMjAwIGRhcms6dGV4dC1ibHVlLTkwMCBkYXJrOmdyb3VwLWhvdmVyOmJnLWJsdWUtMzAwXCIsXG4gICAgICBjeWFuOiBcImJnLWN5YW4tMTAwIHRleHQtY3lhbi04MDAgZ3JvdXAtaG92ZXI6YmctY3lhbi0yMDAgZGFyazpiZy1jeWFuLTIwMCBkYXJrOnRleHQtY3lhbi05MDAgZGFyazpncm91cC1ob3ZlcjpiZy1jeWFuLTMwMFwiLFxuICAgICAgZGFyazogXCJiZy1ncmF5LTYwMCB0ZXh0LWdyYXktMTAwIGdyb3VwLWhvdmVyOmJnLWdyYXktNTAwIGRhcms6YmctZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktMjAwIGRhcms6Z3JvdXAtaG92ZXI6YmctZ3JheS03MDBcIixcbiAgICAgIGxpZ2h0OiBcImJnLWdyYXktMjAwIHRleHQtZ3JheS04MDAgZ3JvdXAtaG92ZXI6YmctZ3JheS0zMDAgZGFyazpiZy1ncmF5LTQwMCBkYXJrOnRleHQtZ3JheS05MDAgZGFyazpncm91cC1ob3ZlcjpiZy1ncmF5LTUwMFwiLFxuICAgICAgZ3JlZW46IFwiYmctZ3JlZW4tMTAwIHRleHQtZ3JlZW4tODAwIGdyb3VwLWhvdmVyOmJnLWdyZWVuLTIwMCBkYXJrOmJnLWdyZWVuLTIwMCBkYXJrOnRleHQtZ3JlZW4tOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctZ3JlZW4tMzAwXCIsXG4gICAgICBsaW1lOiBcImJnLWxpbWUtMTAwIHRleHQtbGltZS04MDAgZ3JvdXAtaG92ZXI6YmctbGltZS0yMDAgZGFyazpiZy1saW1lLTIwMCBkYXJrOnRleHQtbGltZS05MDAgZGFyazpncm91cC1ob3ZlcjpiZy1saW1lLTMwMFwiLFxuICAgICAgcmVkOiBcImJnLXJlZC0xMDAgdGV4dC1yZWQtODAwIGdyb3VwLWhvdmVyOmJnLXJlZC0yMDAgZGFyazpiZy1yZWQtMjAwIGRhcms6dGV4dC1yZWQtOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctcmVkLTMwMFwiLFxuICAgICAgdGVhbDogXCJiZy10ZWFsLTEwMCB0ZXh0LXRlYWwtODAwIGdyb3VwLWhvdmVyOmJnLXRlYWwtMjAwIGRhcms6YmctdGVhbC0yMDAgZGFyazp0ZXh0LXRlYWwtOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctdGVhbC0zMDBcIixcbiAgICAgIHllbGxvdzogXCJiZy15ZWxsb3ctMTAwIHRleHQteWVsbG93LTgwMCBncm91cC1ob3ZlcjpiZy15ZWxsb3ctMjAwIGRhcms6YmcteWVsbG93LTIwMCBkYXJrOnRleHQteWVsbG93LTkwMCBkYXJrOmdyb3VwLWhvdmVyOmJnLXllbGxvdy0zMDBcIlxuICAgIH0sXG4gICAgaHJlZjogXCJncm91cFwiLFxuICAgIHNpemU6IHtcbiAgICAgIHhzOiBcInAtMSB0ZXh0LXhzXCIsXG4gICAgICBzbTogXCJwLTEuNSB0ZXh0LXNtXCJcbiAgICB9XG4gIH0sXG4gIGljb246IHtcbiAgICBvZmY6IFwicm91bmRlZCBweC0yIHB5LTAuNVwiLFxuICAgIG9uOiBcInJvdW5kZWQtZnVsbCBwLTEuNVwiLFxuICAgIHNpemU6IHtcbiAgICAgIHhzOiBcImgtMyB3LTNcIixcbiAgICAgIHNtOiBcImgtMy41IHctMy41XCJcbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBiYWRnZVRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGJsb2NrcXVvdGVUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwidGV4dC14bCBmb250LXNlbWlib2xkIGl0YWxpYyB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBibG9ja3F1b3RlVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgYnJlYWRjcnVtYlRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJcIixcbiAgICBsaXN0OiBcImZsZXggaXRlbXMtY2VudGVyXCJcbiAgfSxcbiAgaXRlbToge1xuICAgIGJhc2U6IFwiZ3JvdXAgZmxleCBpdGVtcy1jZW50ZXJcIixcbiAgICBjaGV2cm9uOiBcIm14LTEgaC00IHctNCB0ZXh0LWdyYXktNDAwIGdyb3VwLWZpcnN0OmhpZGRlbiBtZDpteC0yXCIsXG4gICAgaHJlZjoge1xuICAgICAgb2ZmOiBcImZsZXggaXRlbXMtY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIixcbiAgICAgIG9uOiBcImZsZXggaXRlbXMtY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMCBob3Zlcjp0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC1ncmF5LTQwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGVcIlxuICAgIH0sXG4gICAgaWNvbjogXCJtci0yIGgtNCB3LTRcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgYnJlYWRjcnVtYlRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGJ1dHRvblRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBiYXNlOiBcImdyb3VwIHJlbGF0aXZlIGZsZXggaXRlbXMtc3RyZXRjaCBqdXN0aWZ5LWNlbnRlciBwLTAuNSB0ZXh0LWNlbnRlciBmb250LW1lZGl1bSB0cmFuc2l0aW9uLVtjb2xvcixiYWNrZ3JvdW5kLWNvbG9yLGJvcmRlci1jb2xvcix0ZXh0LWRlY29yYXRpb24tY29sb3IsZmlsbCxzdHJva2UsYm94LXNoYWRvd10gZm9jdXM6ei0xMCBmb2N1czpvdXRsaW5lLW5vbmVcIixcbiAgZnVsbFNpemVkOiBcInctZnVsbFwiLFxuICBjb2xvcjoge1xuICAgIGRhcms6IFwiYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCBiZy1ncmF5LTgwMCB0ZXh0LXdoaXRlIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyYXktMzAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JheS05MDAgZGFyazpib3JkZXItZ3JheS03MDAgZGFyazpiZy1ncmF5LTgwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS04MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLWdyYXktNzAwXCIsXG4gICAgZmFpbHVyZTogXCJib3JkZXIgYm9yZGVyLXRyYW5zcGFyZW50IGJnLXJlZC03MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1yZWQtMzAwIGVuYWJsZWQ6aG92ZXI6YmctcmVkLTgwMCBkYXJrOmJnLXJlZC02MDAgZGFyazpmb2N1czpyaW5nLXJlZC05MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLXJlZC03MDBcIixcbiAgICBncmF5OiBcIjpyaW5nLWN5YW4tNzAwIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgdGV4dC1ncmF5LTkwMCBmb2N1czp0ZXh0LWN5YW4tNzAwIGZvY3VzOnJpbmctNCBlbmFibGVkOmhvdmVyOmJnLWdyYXktMTAwIGVuYWJsZWQ6aG92ZXI6dGV4dC1jeWFuLTcwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLXRyYW5zcGFyZW50IGRhcms6dGV4dC1ncmF5LTQwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6YmctZ3JheS03MDAgZGFyazplbmFibGVkOmhvdmVyOnRleHQtd2hpdGVcIixcbiAgICBpbmZvOiBcImJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgYmctY3lhbi03MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1jeWFuLTMwMCBlbmFibGVkOmhvdmVyOmJnLWN5YW4tODAwIGRhcms6YmctY3lhbi02MDAgZGFyazpmb2N1czpyaW5nLWN5YW4tODAwIGRhcms6ZW5hYmxlZDpob3ZlcjpiZy1jeWFuLTcwMFwiLFxuICAgIGxpZ2h0OiBcImJvcmRlciBib3JkZXItZ3JheS0zMDAgYmctd2hpdGUgdGV4dC1ncmF5LTkwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1jeWFuLTMwMCBlbmFibGVkOmhvdmVyOmJnLWdyYXktMTAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctZ3JheS02MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1ncmF5LTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6Ym9yZGVyLWdyYXktNzAwIGRhcms6ZW5hYmxlZDpob3ZlcjpiZy1ncmF5LTcwMFwiLFxuICAgIHB1cnBsZTogXCJib3JkZXIgYm9yZGVyLXRyYW5zcGFyZW50IGJnLXB1cnBsZS03MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1wdXJwbGUtMzAwIGVuYWJsZWQ6aG92ZXI6YmctcHVycGxlLTgwMCBkYXJrOmJnLXB1cnBsZS02MDAgZGFyazpmb2N1czpyaW5nLXB1cnBsZS05MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLXB1cnBsZS03MDBcIixcbiAgICBzdWNjZXNzOiBcImJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgYmctZ3JlZW4tNzAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JlZW4tMzAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JlZW4tODAwIGRhcms6YmctZ3JlZW4tNjAwIGRhcms6Zm9jdXM6cmluZy1ncmVlbi04MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLWdyZWVuLTcwMFwiLFxuICAgIHdhcm5pbmc6IFwiYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCBiZy15ZWxsb3ctNDAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmcteWVsbG93LTMwMCBlbmFibGVkOmhvdmVyOmJnLXllbGxvdy01MDAgZGFyazpmb2N1czpyaW5nLXllbGxvdy05MDBcIixcbiAgICBibHVlOiBcImJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgYmctYmx1ZS03MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ibHVlLTMwMCBlbmFibGVkOmhvdmVyOmJnLWJsdWUtODAwIGRhcms6YmctYmx1ZS02MDAgZGFyazpob3ZlcjpiZy1ibHVlLTcwMCBkYXJrOmZvY3VzOnJpbmctYmx1ZS04MDBcIixcbiAgICBjeWFuOiBcImJvcmRlciBib3JkZXItY3lhbi0zMDAgYmctd2hpdGUgdGV4dC1jeWFuLTkwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1jeWFuLTMwMCBlbmFibGVkOmhvdmVyOmJnLWN5YW4tMTAwIGRhcms6Ym9yZGVyLWN5YW4tNjAwIGRhcms6YmctY3lhbi02MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1jeWFuLTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6Ym9yZGVyLWN5YW4tNzAwIGRhcms6ZW5hYmxlZDpob3ZlcjpiZy1jeWFuLTcwMFwiLFxuICAgIGdyZWVuOiBcImJvcmRlciBib3JkZXItZ3JlZW4tMzAwIGJnLXdoaXRlIHRleHQtZ3JlZW4tOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyZWVuLTMwMCBlbmFibGVkOmhvdmVyOmJnLWdyZWVuLTEwMCBkYXJrOmJvcmRlci1ncmVlbi02MDAgZGFyazpiZy1ncmVlbi02MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1ncmVlbi03MDAgZGFyazplbmFibGVkOmhvdmVyOmJvcmRlci1ncmVlbi03MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLWdyZWVuLTcwMFwiLFxuICAgIGluZGlnbzogXCJib3JkZXIgYm9yZGVyLWluZGlnby0zMDAgYmctd2hpdGUgdGV4dC1pbmRpZ28tOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWluZGlnby0zMDAgZW5hYmxlZDpob3ZlcjpiZy1pbmRpZ28tMTAwIGRhcms6Ym9yZGVyLWluZGlnby02MDAgZGFyazpiZy1pbmRpZ28tNjAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOnJpbmctaW5kaWdvLTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6Ym9yZGVyLWluZGlnby03MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLWluZGlnby03MDBcIixcbiAgICBsaW1lOiBcImJvcmRlciBib3JkZXItbGltZS0zMDAgYmctd2hpdGUgdGV4dC1saW1lLTkwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1saW1lLTMwMCBlbmFibGVkOmhvdmVyOmJnLWxpbWUtMTAwIGRhcms6Ym9yZGVyLWxpbWUtNjAwIGRhcms6YmctbGltZS02MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1saW1lLTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6Ym9yZGVyLWxpbWUtNzAwIGRhcms6ZW5hYmxlZDpob3ZlcjpiZy1saW1lLTcwMFwiLFxuICAgIHBpbms6IFwiYm9yZGVyIGJvcmRlci1waW5rLTMwMCBiZy13aGl0ZSB0ZXh0LXBpbmstOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXBpbmstMzAwIGVuYWJsZWQ6aG92ZXI6YmctcGluay0xMDAgZGFyazpib3JkZXItcGluay02MDAgZGFyazpiZy1waW5rLTYwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLXBpbmstNzAwIGRhcms6ZW5hYmxlZDpob3Zlcjpib3JkZXItcGluay03MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLXBpbmstNzAwXCIsXG4gICAgcmVkOiBcImJvcmRlciBib3JkZXItcmVkLTMwMCBiZy13aGl0ZSB0ZXh0LXJlZC05MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcmVkLTMwMCBlbmFibGVkOmhvdmVyOmJnLXJlZC0xMDAgZGFyazpib3JkZXItcmVkLTYwMCBkYXJrOmJnLXJlZC02MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1yZWQtNzAwIGRhcms6ZW5hYmxlZDpob3Zlcjpib3JkZXItcmVkLTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6YmctcmVkLTcwMFwiLFxuICAgIHRlYWw6IFwiYm9yZGVyIGJvcmRlci10ZWFsLTMwMCBiZy13aGl0ZSB0ZXh0LXRlYWwtOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXRlYWwtMzAwIGVuYWJsZWQ6aG92ZXI6YmctdGVhbC0xMDAgZGFyazpib3JkZXItdGVhbC02MDAgZGFyazpiZy10ZWFsLTYwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLXRlYWwtNzAwIGRhcms6ZW5hYmxlZDpob3Zlcjpib3JkZXItdGVhbC03MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLXRlYWwtNzAwXCIsXG4gICAgeWVsbG93OiBcImJvcmRlciBib3JkZXIteWVsbG93LTMwMCBiZy13aGl0ZSB0ZXh0LXllbGxvdy05MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmcteWVsbG93LTMwMCBlbmFibGVkOmhvdmVyOmJnLXllbGxvdy0xMDAgZGFyazpib3JkZXIteWVsbG93LTYwMCBkYXJrOmJnLXllbGxvdy02MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy15ZWxsb3ctNzAwIGRhcms6ZW5hYmxlZDpob3Zlcjpib3JkZXIteWVsbG93LTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6YmcteWVsbG93LTcwMFwiXG4gIH0sXG4gIGRpc2FibGVkOiBcImN1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTUwXCIsXG4gIGlzUHJvY2Vzc2luZzogXCJjdXJzb3Itd2FpdFwiLFxuICBzcGlubmVyU2xvdDogXCJhYnNvbHV0ZSB0b3AtMCBmbGV4IGgtZnVsbCBpdGVtcy1jZW50ZXJcIixcbiAgc3Bpbm5lckxlZnRQb3NpdGlvbjoge1xuICAgIHhzOiBcImxlZnQtMlwiLFxuICAgIHNtOiBcImxlZnQtM1wiLFxuICAgIG1kOiBcImxlZnQtNFwiLFxuICAgIGxnOiBcImxlZnQtNVwiLFxuICAgIHhsOiBcImxlZnQtNlwiXG4gIH0sXG4gIGdyYWRpZW50OiB7XG4gICAgY3lhbjogXCJiZy1ncmFkaWVudC10by1yIGZyb20tY3lhbi00MDAgdmlhLWN5YW4tNTAwIHRvLWN5YW4tNjAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctY3lhbi0zMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1iciBkYXJrOmZvY3VzOnJpbmctY3lhbi04MDBcIixcbiAgICBmYWlsdXJlOiBcImJnLWdyYWRpZW50LXRvLXIgZnJvbS1yZWQtNDAwIHZpYS1yZWQtNTAwIHRvLXJlZC02MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1yZWQtMzAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JhZGllbnQtdG8tYnIgZGFyazpmb2N1czpyaW5nLXJlZC04MDBcIixcbiAgICBpbmZvOiBcImJnLWdyYWRpZW50LXRvLXIgZnJvbS1jeWFuLTUwMCB2aWEtY3lhbi02MDAgdG8tY3lhbi03MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1jeWFuLTMwMCBlbmFibGVkOmhvdmVyOmJnLWdyYWRpZW50LXRvLWJyIGRhcms6Zm9jdXM6cmluZy1jeWFuLTgwMFwiLFxuICAgIGxpbWU6IFwiYmctZ3JhZGllbnQtdG8tciBmcm9tLWxpbWUtMjAwIHZpYS1saW1lLTQwMCB0by1saW1lLTUwMCB0ZXh0LWdyYXktOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWxpbWUtMzAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JhZGllbnQtdG8tYnIgZGFyazpmb2N1czpyaW5nLWxpbWUtODAwXCIsXG4gICAgcGluazogXCJiZy1ncmFkaWVudC10by1yIGZyb20tcGluay00MDAgdmlhLXBpbmstNTAwIHRvLXBpbmstNjAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcGluay0zMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1iciBkYXJrOmZvY3VzOnJpbmctcGluay04MDBcIixcbiAgICBwdXJwbGU6IFwiYmctZ3JhZGllbnQtdG8tciBmcm9tLXB1cnBsZS01MDAgdmlhLXB1cnBsZS02MDAgdG8tcHVycGxlLTcwMCB0ZXh0LXdoaXRlIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXB1cnBsZS0zMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1iciBkYXJrOmZvY3VzOnJpbmctcHVycGxlLTgwMFwiLFxuICAgIHN1Y2Nlc3M6IFwiYmctZ3JhZGllbnQtdG8tciBmcm9tLWdyZWVuLTQwMCB2aWEtZ3JlZW4tNTAwIHRvLWdyZWVuLTYwMCB0ZXh0LXdoaXRlIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyZWVuLTMwMCBlbmFibGVkOmhvdmVyOmJnLWdyYWRpZW50LXRvLWJyIGRhcms6Zm9jdXM6cmluZy1ncmVlbi04MDBcIixcbiAgICB0ZWFsOiBcImJnLWdyYWRpZW50LXRvLXIgZnJvbS10ZWFsLTQwMCB2aWEtdGVhbC01MDAgdG8tdGVhbC02MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy10ZWFsLTMwMCBlbmFibGVkOmhvdmVyOmJnLWdyYWRpZW50LXRvLWJyIGRhcms6Zm9jdXM6cmluZy10ZWFsLTgwMFwiXG4gIH0sXG4gIGdyYWRpZW50RHVvVG9uZToge1xuICAgIGN5YW5Ub0JsdWU6IFwiYmctZ3JhZGllbnQtdG8tciBmcm9tLWN5YW4tNTAwIHRvLWN5YW4tNTAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctY3lhbi0zMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1ibCBkYXJrOmZvY3VzOnJpbmctY3lhbi04MDBcIixcbiAgICBncmVlblRvQmx1ZTogXCJiZy1ncmFkaWVudC10by1iciBmcm9tLWdyZWVuLTQwMCB0by1jeWFuLTYwMCB0ZXh0LXdoaXRlIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyZWVuLTIwMCBlbmFibGVkOmhvdmVyOmJnLWdyYWRpZW50LXRvLWJsIGRhcms6Zm9jdXM6cmluZy1ncmVlbi04MDBcIixcbiAgICBwaW5rVG9PcmFuZ2U6IFwiYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1waW5rLTUwMCB0by1vcmFuZ2UtNDAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcGluay0yMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1ibCBkYXJrOmZvY3VzOnJpbmctcGluay04MDBcIixcbiAgICBwdXJwbGVUb0JsdWU6IFwiYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1wdXJwbGUtNjAwIHRvLWN5YW4tNTAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctY3lhbi0zMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1ibCBkYXJrOmZvY3VzOnJpbmctY3lhbi04MDBcIixcbiAgICBwdXJwbGVUb1Bpbms6IFwiYmctZ3JhZGllbnQtdG8tciBmcm9tLXB1cnBsZS01MDAgdG8tcGluay01MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1wdXJwbGUtMjAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JhZGllbnQtdG8tbCBkYXJrOmZvY3VzOnJpbmctcHVycGxlLTgwMFwiLFxuICAgIHJlZFRvWWVsbG93OiBcImJnLWdyYWRpZW50LXRvLXIgZnJvbS1yZWQtMjAwIHZpYS1yZWQtMzAwIHRvLXllbGxvdy0yMDAgdGV4dC1ncmF5LTkwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1yZWQtMTAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JhZGllbnQtdG8tYmwgZGFyazpmb2N1czpyaW5nLXJlZC00MDBcIixcbiAgICB0ZWFsVG9MaW1lOiBcImJnLWdyYWRpZW50LXRvLXIgZnJvbS10ZWFsLTIwMCB0by1saW1lLTIwMCB0ZXh0LWdyYXktOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWxpbWUtMjAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JhZGllbnQtdG8tbCBlbmFibGVkOmhvdmVyOmZyb20tdGVhbC0yMDAgZW5hYmxlZDpob3Zlcjp0by1saW1lLTIwMCBlbmFibGVkOmhvdmVyOnRleHQtZ3JheS05MDAgZGFyazpmb2N1czpyaW5nLXRlYWwtNzAwXCJcbiAgfSxcbiAgaW5uZXI6IHtcbiAgICBiYXNlOiBcImZsZXggaXRlbXMtc3RyZXRjaCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDBcIixcbiAgICBwb3NpdGlvbjoge1xuICAgICAgbm9uZTogXCJcIixcbiAgICAgIHN0YXJ0OiBcInJvdW5kZWQtci1ub25lXCIsXG4gICAgICBtaWRkbGU6IFwicm91bmRlZC1ub25lXCIsXG4gICAgICBlbmQ6IFwicm91bmRlZC1sLW5vbmVcIlxuICAgIH0sXG4gICAgb3V0bGluZTogXCJib3JkZXIgYm9yZGVyLXRyYW5zcGFyZW50XCIsXG4gICAgaXNQcm9jZXNzaW5nUGFkZGluZzoge1xuICAgICAgeHM6IFwicGwtOFwiLFxuICAgICAgc206IFwicGwtMTBcIixcbiAgICAgIG1kOiBcInBsLTEyXCIsXG4gICAgICBsZzogXCJwbC0xNlwiLFxuICAgICAgeGw6IFwicGwtMjBcIlxuICAgIH1cbiAgfSxcbiAgbGFiZWw6IFwibWwtMiBpbmxpbmUtZmxleCBoLTQgdy00IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWZ1bGwgYmctY3lhbi0yMDAgdGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtY3lhbi04MDBcIixcbiAgb3V0bGluZToge1xuICAgIGNvbG9yOiB7XG4gICAgICBncmF5OiBcImJvcmRlciBib3JkZXItZ3JheS05MDAgZGFyazpib3JkZXItd2hpdGVcIixcbiAgICAgIGRlZmF1bHQ6IFwiYm9yZGVyLTBcIixcbiAgICAgIGxpZ2h0OiBcIlwiXG4gICAgfSxcbiAgICBvZmY6IFwiXCIsXG4gICAgb246IFwiZmxleCB3LWZ1bGwganVzdGlmeS1jZW50ZXIgYmctd2hpdGUgdGV4dC1ncmF5LTkwMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi03NSBlYXNlLWluIGdyb3VwLWVuYWJsZWQ6Z3JvdXAtaG92ZXI6Ymctb3BhY2l0eS0wIGdyb3VwLWVuYWJsZWQ6Z3JvdXAtaG92ZXI6dGV4dC1pbmhlcml0IGRhcms6YmctZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCIsXG4gICAgcGlsbDoge1xuICAgICAgb2ZmOiBcInJvdW5kZWQtbWRcIixcbiAgICAgIG9uOiBcInJvdW5kZWQtZnVsbFwiXG4gICAgfVxuICB9LFxuICBwaWxsOiB7XG4gICAgb2ZmOiBcInJvdW5kZWQtbGdcIixcbiAgICBvbjogXCJyb3VuZGVkLWZ1bGxcIlxuICB9LFxuICBzaXplOiB7XG4gICAgeHM6IFwicHgtMiBweS0xIHRleHQteHNcIixcbiAgICBzbTogXCJweC0zIHB5LTEuNSB0ZXh0LXNtXCIsXG4gICAgbWQ6IFwicHgtNCBweS0yIHRleHQtc21cIixcbiAgICBsZzogXCJweC01IHB5LTIuNSB0ZXh0LWJhc2VcIixcbiAgICB4bDogXCJweC02IHB5LTMgdGV4dC1iYXNlXCJcbiAgfVxufSk7XG5jb25zdCBidXR0b25Hcm91cFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBiYXNlOiBcImlubGluZS1mbGV4XCIsXG4gIHBvc2l0aW9uOiB7XG4gICAgbm9uZTogXCJcIixcbiAgICBzdGFydDogXCJyb3VuZGVkLXItbm9uZSBmb2N1czpyaW5nLTJcIixcbiAgICBtaWRkbGU6IFwicm91bmRlZC1ub25lIGJvcmRlci1sLTAgcGwtMCBmb2N1czpyaW5nLTJcIixcbiAgICBlbmQ6IFwicm91bmRlZC1sLW5vbmUgYm9yZGVyLWwtMCBwbC0wIGZvY3VzOnJpbmctMlwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBidXR0b25Hcm91cFRoZW1lLCBidXR0b25UaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBjYXJkVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImZsZXggcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWdyYXktMjAwIGJnLXdoaXRlIHNoYWRvdy1tZCBkYXJrOmJvcmRlci1ncmF5LTcwMCBkYXJrOmJnLWdyYXktODAwXCIsXG4gICAgY2hpbGRyZW46IFwiZmxleCBoLWZ1bGwgZmxleC1jb2wganVzdGlmeS1jZW50ZXIgZ2FwLTQgcC02XCIsXG4gICAgaG9yaXpvbnRhbDoge1xuICAgICAgb2ZmOiBcImZsZXgtY29sXCIsXG4gICAgICBvbjogXCJmbGV4LWNvbCBtZDptYXgtdy14bCBtZDpmbGV4LXJvd1wiXG4gICAgfSxcbiAgICBocmVmOiBcImhvdmVyOmJnLWdyYXktMTAwIGRhcms6aG92ZXI6YmctZ3JheS03MDBcIlxuICB9LFxuICBpbWc6IHtcbiAgICBiYXNlOiBcIlwiLFxuICAgIGhvcml6b250YWw6IHtcbiAgICAgIG9mZjogXCJyb3VuZGVkLXQtbGdcIixcbiAgICAgIG9uOiBcImgtOTYgdy1mdWxsIHJvdW5kZWQtdC1sZyBvYmplY3QtY292ZXIgbWQ6aC1hdXRvIG1kOnctNDggbWQ6cm91bmRlZC1ub25lIG1kOnJvdW5kZWQtbC1sZ1wiXG4gICAgfVxuICB9XG59KTtcblxuZXhwb3J0IHsgY2FyZFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGNhcm91c2VsVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcInJlbGF0aXZlIGgtZnVsbCB3LWZ1bGxcIixcbiAgICBsZWZ0Q29udHJvbDogXCJhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgZmxleCBoLWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB4LTQgZm9jdXM6b3V0bGluZS1ub25lXCIsXG4gICAgcmlnaHRDb250cm9sOiBcImFic29sdXRlIHJpZ2h0LTAgdG9wLTAgZmxleCBoLWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB4LTQgZm9jdXM6b3V0bGluZS1ub25lXCJcbiAgfSxcbiAgaW5kaWNhdG9yczoge1xuICAgIGFjdGl2ZToge1xuICAgICAgb2ZmOiBcImJnLXdoaXRlLzUwIGhvdmVyOmJnLXdoaXRlIGRhcms6YmctZ3JheS04MDAvNTAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMFwiLFxuICAgICAgb246IFwiYmctd2hpdGUgZGFyazpiZy1ncmF5LTgwMFwiXG4gICAgfSxcbiAgICBiYXNlOiBcImgtMyB3LTMgcm91bmRlZC1mdWxsXCIsXG4gICAgd3JhcHBlcjogXCJhYnNvbHV0ZSBib3R0b20tNSBsZWZ0LTEvMiBmbGV4IC10cmFuc2xhdGUteC0xLzIgc3BhY2UteC0zXCJcbiAgfSxcbiAgaXRlbToge1xuICAgIGJhc2U6IFwiYWJzb2x1dGUgbGVmdC0xLzIgdG9wLTEvMiBibG9jayB3LWZ1bGwgLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yXCIsXG4gICAgd3JhcHBlcjoge1xuICAgICAgb2ZmOiBcInctZnVsbCBmbGV4LXNocmluay0wIHRyYW5zZm9ybSBjdXJzb3ItZGVmYXVsdCBzbmFwLWNlbnRlclwiLFxuICAgICAgb246IFwidy1mdWxsIGZsZXgtc2hyaW5rLTAgdHJhbnNmb3JtIGN1cnNvci1ncmFiIHNuYXAtY2VudGVyXCJcbiAgICB9XG4gIH0sXG4gIGNvbnRyb2w6IHtcbiAgICBiYXNlOiBcImlubGluZS1mbGV4IGgtOCB3LTggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBiZy13aGl0ZS8zMCBncm91cC1ob3ZlcjpiZy13aGl0ZS81MCBncm91cC1mb2N1czpvdXRsaW5lLW5vbmUgZ3JvdXAtZm9jdXM6cmluZy00IGdyb3VwLWZvY3VzOnJpbmctd2hpdGUgZGFyazpiZy1ncmF5LTgwMC8zMCBkYXJrOmdyb3VwLWhvdmVyOmJnLWdyYXktODAwLzYwIGRhcms6Z3JvdXAtZm9jdXM6cmluZy1ncmF5LTgwMC83MCBzbTpoLTEwIHNtOnctMTBcIixcbiAgICBpY29uOiBcImgtNSB3LTUgdGV4dC13aGl0ZSBkYXJrOnRleHQtZ3JheS04MDAgc206aC02IHNtOnctNlwiXG4gIH0sXG4gIHNjcm9sbENvbnRhaW5lcjoge1xuICAgIGJhc2U6IFwiZmxleCBoLWZ1bGwgc25hcC1tYW5kYXRvcnkgb3ZlcmZsb3cteS1oaWRkZW4gb3ZlcmZsb3cteC1zY3JvbGwgc2Nyb2xsLXNtb290aCByb3VuZGVkLWxnXCIsXG4gICAgc25hcDogXCJzbmFwLXhcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgY2Fyb3VzZWxUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBjaGVja2JveFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJoLTQgdy00IHJvdW5kZWQgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTEwMCBmb2N1czpyaW5nLTIgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTcwMFwiLFxuICAgIGNvbG9yOiB7XG4gICAgICBkZWZhdWx0OiBcInRleHQtY3lhbi02MDAgZm9jdXM6cmluZy1jeWFuLTYwMCBkYXJrOnJpbmctb2Zmc2V0LWdyYXktODAwIGRhcms6Zm9jdXM6cmluZy1jeWFuLTYwMFwiLFxuICAgICAgZGFyazogXCJ0ZXh0LWdyYXktODAwIGZvY3VzOnJpbmctZ3JheS04MDAgZGFyazpyaW5nLW9mZnNldC1ncmF5LTgwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS04MDBcIixcbiAgICAgIGZhaWx1cmU6IFwidGV4dC1yZWQtOTAwIGZvY3VzOnJpbmctcmVkLTkwMCBkYXJrOnJpbmctb2Zmc2V0LXJlZC05MDAgZGFyazpmb2N1czpyaW5nLXJlZC05MDBcIixcbiAgICAgIGdyYXk6IFwidGV4dC1ncmF5LTkwMCBmb2N1czpyaW5nLWdyYXktOTAwIGRhcms6cmluZy1vZmZzZXQtZ3JheS05MDAgZGFyazpmb2N1czpyaW5nLWdyYXktOTAwXCIsXG4gICAgICBpbmZvOiBcInRleHQtY3lhbi04MDAgZm9jdXM6cmluZy1jeWFuLTgwMCBkYXJrOnJpbmctb2Zmc2V0LWdyYXktODAwIGRhcms6Zm9jdXM6cmluZy1jeWFuLTgwMFwiLFxuICAgICAgbGlnaHQ6IFwidGV4dC1ncmF5LTkwMCBmb2N1czpyaW5nLWdyYXktOTAwIGRhcms6cmluZy1vZmZzZXQtZ3JheS05MDAgZGFyazpmb2N1czpyaW5nLWdyYXktOTAwXCIsXG4gICAgICBwdXJwbGU6IFwidGV4dC1wdXJwbGUtNjAwIGZvY3VzOnJpbmctcHVycGxlLTYwMCBkYXJrOnJpbmctb2Zmc2V0LXB1cnBsZS02MDAgZGFyazpmb2N1czpyaW5nLXB1cnBsZS02MDBcIixcbiAgICAgIHN1Y2Nlc3M6IFwidGV4dC1ncmVlbi04MDAgZm9jdXM6cmluZy1ncmVlbi04MDAgZGFyazpyaW5nLW9mZnNldC1ncmVlbi04MDAgZGFyazpmb2N1czpyaW5nLWdyZWVuLTgwMFwiLFxuICAgICAgd2FybmluZzogXCJ0ZXh0LXllbGxvdy00MDAgZm9jdXM6cmluZy15ZWxsb3ctNDAwIGRhcms6cmluZy1vZmZzZXQteWVsbG93LTQwMCBkYXJrOmZvY3VzOnJpbmcteWVsbG93LTQwMFwiLFxuICAgICAgYmx1ZTogXCJ0ZXh0LWJsdWUtNzAwIGZvY3VzOnJpbmctYmx1ZS02MDAgZGFyazpyaW5nLW9mZnNldC1ibHVlLTcwMCBkYXJrOmZvY3VzOnJpbmctYmx1ZS03MDBcIixcbiAgICAgIGN5YW46IFwidGV4dC1jeWFuLTYwMCBmb2N1czpyaW5nLWN5YW4tNjAwIGRhcms6cmluZy1vZmZzZXQtY3lhbi02MDAgZGFyazpmb2N1czpyaW5nLWN5YW4tNjAwXCIsXG4gICAgICBncmVlbjogXCJ0ZXh0LWdyZWVuLTYwMCBmb2N1czpyaW5nLWdyZWVuLTYwMCBkYXJrOnJpbmctb2Zmc2V0LWdyZWVuLTYwMCBkYXJrOmZvY3VzOnJpbmctZ3JlZW4tNjAwXCIsXG4gICAgICBpbmRpZ286IFwidGV4dC1pbmRpZ28tNzAwIGZvY3VzOnJpbmctaW5kaWdvLTcwMCBkYXJrOnJpbmctb2Zmc2V0LWluZGlnby03MDAgZGFyazpmb2N1czpyaW5nLWluZGlnby03MDBcIixcbiAgICAgIGxpbWU6IFwidGV4dC1saW1lLTcwMCBmb2N1czpyaW5nLWxpbWUtNzAwIGRhcms6cmluZy1vZmZzZXQtbGltZS03MDAgZGFyazpmb2N1czpyaW5nLWxpbWUtNzAwXCIsXG4gICAgICBwaW5rOiBcInRleHQtcGluay02MDAgZm9jdXM6cmluZy1waW5rLTYwMCBkYXJrOnJpbmctb2Zmc2V0LXBpbmstNjAwIGRhcms6Zm9jdXM6cmluZy1waW5rLTYwMFwiLFxuICAgICAgcmVkOiBcInRleHQtcmVkLTYwMCBmb2N1czpyaW5nLXJlZC02MDAgZGFyazpyaW5nLW9mZnNldC1yZWQtNjAwIGRhcms6Zm9jdXM6cmluZy1yZWQtNjAwXCIsXG4gICAgICB0ZWFsOiBcInRleHQtdGVhbC02MDAgZm9jdXM6cmluZy10ZWFsLTYwMCBkYXJrOnJpbmctb2Zmc2V0LXRlYWwtNjAwIGRhcms6Zm9jdXM6cmluZy10ZWFsLTYwMFwiLFxuICAgICAgeWVsbG93OiBcInRleHQteWVsbG93LTQwMCBmb2N1czpyaW5nLXllbGxvdy00MDAgZGFyazpyaW5nLW9mZnNldC15ZWxsb3ctNDAwIGRhcms6Zm9jdXM6cmluZy15ZWxsb3ctNDAwXCJcbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBjaGVja2JveFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGNsaXBib2FyZFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBidXR0b246IHtcbiAgICBiYXNlOiBcImlubGluZS1mbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBiZy1ibHVlLTcwMCBweC01IHB5LTMgaG92ZXI6YmctYmx1ZS04MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWJsdWUtMzAwIGRhcms6YmctYmx1ZS02MDAgZGFyazpob3ZlcjpiZy1ibHVlLTcwMCBkYXJrOmZvY3VzOnJpbmctYmx1ZS04MDBcIixcbiAgICBsYWJlbDogXCJ0ZXh0LWNlbnRlciB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtd2hpdGUgc206dy1hdXRvXCJcbiAgfSxcbiAgd2l0aEljb246IHtcbiAgICBiYXNlOiBcImFic29sdXRlIGVuZC0yIHRvcC0xLzIgaW5saW5lLWZsZXggLXRyYW5zbGF0ZS15LTEvMiBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBwLTIgdGV4dC1ncmF5LTUwMCBob3ZlcjpiZy1ncmF5LTEwMCBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMFwiLFxuICAgIGljb246IHtcbiAgICAgIGRlZmF1bHRJY29uOiBcImgtNCB3LTRcIixcbiAgICAgIHN1Y2Nlc3NJY29uOiBcImgtNCB3LTQgdGV4dC1ibHVlLTcwMCBkYXJrOnRleHQtYmx1ZS01MDBcIlxuICAgIH1cbiAgfSxcbiAgd2l0aEljb25UZXh0OiB7XG4gICAgYmFzZTogXCJhYnNvbHV0ZSBlbmQtMi41IHRvcC0xLzIgaW5saW5lLWZsZXggLXRyYW5zbGF0ZS15LTEvMiBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWdyYXktMjAwIGJnLXdoaXRlIHB4LTIuNSBweS0yIHRleHQtZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTgwMCBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMFwiLFxuICAgIGljb246IHtcbiAgICAgIGRlZmF1bHRJY29uOiBcIm1lLTEuNSBoLTMgdy0zXCIsXG4gICAgICBzdWNjZXNzSWNvbjogXCJtZS0xLjUgaC0zIHctMyB0ZXh0LWJsdWUtNzAwIGRhcms6dGV4dC1ibHVlLTUwMFwiXG4gICAgfSxcbiAgICBsYWJlbDoge1xuICAgICAgYmFzZTogXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXJcIixcbiAgICAgIGRlZmF1bHRUZXh0OiBcInRleHQteHMgZm9udC1zZW1pYm9sZFwiLFxuICAgICAgc3VjY2Vzc1RleHQ6IFwidGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtYmx1ZS03MDAgZGFyazp0ZXh0LWJsdWUtNTAwXCJcbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBjbGlwYm9hcmRUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBkYXJrVGhlbWVUb2dnbGVUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwicm91bmRlZC1sZyBwLTIuNSB0ZXh0LXNtIHRleHQtZ3JheS01MDAgaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyYXktMjAwIGRhcms6dGV4dC1ncmF5LTQwMCBkYXJrOmhvdmVyOmJnLWdyYXktNzAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTcwMFwiLFxuICAgIGljb246IFwiaC01IHctNVwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBkYXJrVGhlbWVUb2dnbGVUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBkYXRlUGlja2VyVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcInJlbGF0aXZlXCJcbiAgfSxcbiAgcG9wdXA6IHtcbiAgICByb290OiB7XG4gICAgICBiYXNlOiBcImFic29sdXRlIHRvcC0xMCB6LTUwIGJsb2NrIHB0LTJcIixcbiAgICAgIGlubGluZTogXCJyZWxhdGl2ZSB0b3AtMCB6LWF1dG9cIixcbiAgICAgIGlubmVyOiBcImlubGluZS1ibG9jayByb3VuZGVkLWxnIGJnLXdoaXRlIHAtNCBzaGFkb3ctbGcgZGFyazpiZy1ncmF5LTcwMFwiXG4gICAgfSxcbiAgICBoZWFkZXI6IHtcbiAgICAgIGJhc2U6IFwiXCIsXG4gICAgICB0aXRsZTogXCJweC0yIHB5LTMgdGV4dC1jZW50ZXIgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiLFxuICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgIGJhc2U6IFwibWItMiBmbGV4IGp1c3RpZnktYmV0d2VlblwiLFxuICAgICAgICBidXR0b246IHtcbiAgICAgICAgICBiYXNlOiBcInJvdW5kZWQtbGcgYmctd2hpdGUgcHgtNSBweS0yLjUgdGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWdyYXktMjAwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS02MDBcIixcbiAgICAgICAgICBwcmV2OiBcIlwiLFxuICAgICAgICAgIG5leHQ6IFwiXCIsXG4gICAgICAgICAgdmlldzogXCJcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICB2aWV3OiB7XG4gICAgICBiYXNlOiBcInAtMVwiXG4gICAgfSxcbiAgICBmb290ZXI6IHtcbiAgICAgIGJhc2U6IFwibXQtMiBmbGV4IHNwYWNlLXgtMlwiLFxuICAgICAgYnV0dG9uOiB7XG4gICAgICAgIGJhc2U6IFwidy1mdWxsIHJvdW5kZWQtbGcgcHgtNSBweS0yIHRleHQtY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW0gZm9jdXM6cmluZy00IGZvY3VzOnJpbmctY3lhbi0zMDBcIixcbiAgICAgICAgdG9kYXk6IFwiYmctY3lhbi03MDAgdGV4dC13aGl0ZSBob3ZlcjpiZy1jeWFuLTgwMCBkYXJrOmJnLWN5YW4tNjAwIGRhcms6aG92ZXI6YmctY3lhbi03MDBcIixcbiAgICAgICAgY2xlYXI6IFwiYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy13aGl0ZSB0ZXh0LWdyYXktOTAwIGhvdmVyOmJnLWdyYXktMTAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS02MDBcIlxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgdmlld3M6IHtcbiAgICBkYXlzOiB7XG4gICAgICBoZWFkZXI6IHtcbiAgICAgICAgYmFzZTogXCJtYi0xIGdyaWQgZ3JpZC1jb2xzLTdcIixcbiAgICAgICAgdGl0bGU6IFwiaC02IHRleHQtY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW0gbGVhZGluZy02IHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCJcbiAgICAgIH0sXG4gICAgICBpdGVtczoge1xuICAgICAgICBiYXNlOiBcImdyaWQgdy02NCBncmlkLWNvbHMtN1wiLFxuICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgYmFzZTogXCJibG9jayBmbGV4LTEgY3Vyc29yLXBvaW50ZXIgcm91bmRlZC1sZyBib3JkZXItMCB0ZXh0LWNlbnRlciB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgbGVhZGluZy05IHRleHQtZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS02MDBcIixcbiAgICAgICAgICBzZWxlY3RlZDogXCJiZy1jeWFuLTcwMCB0ZXh0LXdoaXRlIGhvdmVyOmJnLWN5YW4tNjAwXCIsXG4gICAgICAgICAgZGlzYWJsZWQ6IFwidGV4dC1ncmF5LTUwMFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIG1vbnRoczoge1xuICAgICAgaXRlbXM6IHtcbiAgICAgICAgYmFzZTogXCJncmlkIHctNjQgZ3JpZC1jb2xzLTRcIixcbiAgICAgICAgaXRlbToge1xuICAgICAgICAgIGJhc2U6IFwiYmxvY2sgZmxleC0xIGN1cnNvci1wb2ludGVyIHJvdW5kZWQtbGcgYm9yZGVyLTAgdGV4dC1jZW50ZXIgdGV4dC1zbSBmb250LXNlbWlib2xkIGxlYWRpbmctOSB0ZXh0LWdyYXktOTAwIGhvdmVyOmJnLWdyYXktMTAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmhvdmVyOmJnLWdyYXktNjAwXCIsXG4gICAgICAgICAgc2VsZWN0ZWQ6IFwiYmctY3lhbi03MDAgdGV4dC13aGl0ZSBob3ZlcjpiZy1jeWFuLTYwMFwiLFxuICAgICAgICAgIGRpc2FibGVkOiBcInRleHQtZ3JheS01MDBcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICB5ZWFyczoge1xuICAgICAgaXRlbXM6IHtcbiAgICAgICAgYmFzZTogXCJncmlkIHctNjQgZ3JpZC1jb2xzLTRcIixcbiAgICAgICAgaXRlbToge1xuICAgICAgICAgIGJhc2U6IFwiYmxvY2sgZmxleC0xIGN1cnNvci1wb2ludGVyIHJvdW5kZWQtbGcgYm9yZGVyLTAgdGV4dC1jZW50ZXIgdGV4dC1zbSBmb250LXNlbWlib2xkIGxlYWRpbmctOSB0ZXh0LWdyYXktOTAwIGhvdmVyOmJnLWdyYXktMTAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmhvdmVyOmJnLWdyYXktNjAwXCIsXG4gICAgICAgICAgc2VsZWN0ZWQ6IFwiYmctY3lhbi03MDAgdGV4dC13aGl0ZSBob3ZlcjpiZy1jeWFuLTYwMFwiLFxuICAgICAgICAgIGRpc2FibGVkOiBcInRleHQtZ3JheS01MDBcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBkZWNhZGVzOiB7XG4gICAgICBpdGVtczoge1xuICAgICAgICBiYXNlOiBcImdyaWQgdy02NCBncmlkLWNvbHMtNFwiLFxuICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgYmFzZTogXCJibG9jayBmbGV4LTEgY3Vyc29yLXBvaW50ZXIgcm91bmRlZC1sZyBib3JkZXItMCB0ZXh0LWNlbnRlciB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgbGVhZGluZy05IHRleHQtZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS02MDBcIixcbiAgICAgICAgICBzZWxlY3RlZDogXCJiZy1jeWFuLTcwMCB0ZXh0LXdoaXRlIGhvdmVyOmJnLWN5YW4tNjAwXCIsXG4gICAgICAgICAgZGlzYWJsZWQ6IFwidGV4dC1ncmF5LTUwMFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBkYXRlUGlja2VyVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgZHJhd2VyVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImZpeGVkIHotNDAgb3ZlcmZsb3cteS1hdXRvIGJnLXdoaXRlIHAtNCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkYXJrOmJnLWdyYXktODAwXCIsXG4gICAgYmFja2Ryb3A6IFwiZml4ZWQgaW5zZXQtMCB6LTMwIGJnLWdyYXktOTAwLzUwIGRhcms6YmctZ3JheS05MDAvODBcIixcbiAgICBlZGdlOiBcImJvdHRvbS0xNlwiLFxuICAgIHBvc2l0aW9uOiB7XG4gICAgICB0b3A6IHtcbiAgICAgICAgb246IFwibGVmdC0wIHJpZ2h0LTAgdG9wLTAgdy1mdWxsIHRyYW5zZm9ybS1ub25lXCIsXG4gICAgICAgIG9mZjogXCJsZWZ0LTAgcmlnaHQtMCB0b3AtMCB3LWZ1bGwgLXRyYW5zbGF0ZS15LWZ1bGxcIlxuICAgICAgfSxcbiAgICAgIHJpZ2h0OiB7XG4gICAgICAgIG9uOiBcInJpZ2h0LTAgdG9wLTAgaC1zY3JlZW4gdy04MCB0cmFuc2Zvcm0tbm9uZVwiLFxuICAgICAgICBvZmY6IFwicmlnaHQtMCB0b3AtMCBoLXNjcmVlbiB3LTgwIHRyYW5zbGF0ZS14LWZ1bGxcIlxuICAgICAgfSxcbiAgICAgIGJvdHRvbToge1xuICAgICAgICBvbjogXCJib3R0b20tMCBsZWZ0LTAgcmlnaHQtMCB3LWZ1bGwgdHJhbnNmb3JtLW5vbmVcIixcbiAgICAgICAgb2ZmOiBcImJvdHRvbS0wIGxlZnQtMCByaWdodC0wIHctZnVsbCB0cmFuc2xhdGUteS1mdWxsXCJcbiAgICAgIH0sXG4gICAgICBsZWZ0OiB7XG4gICAgICAgIG9uOiBcImxlZnQtMCB0b3AtMCBoLXNjcmVlbiB3LTgwIHRyYW5zZm9ybS1ub25lXCIsXG4gICAgICAgIG9mZjogXCJsZWZ0LTAgdG9wLTAgaC1zY3JlZW4gdy04MCAtdHJhbnNsYXRlLXgtZnVsbFwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBoZWFkZXI6IHtcbiAgICBpbm5lcjoge1xuICAgICAgY2xvc2VCdXR0b246IFwiYWJzb2x1dGUgZW5kLTIuNSB0b3AtMi41IGZsZXggaC04IHctOCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBiZy10cmFuc3BhcmVudCB0ZXh0LXNtIHRleHQtZ3JheS00MDAgaG92ZXI6YmctZ3JheS0yMDAgaG92ZXI6dGV4dC1ncmF5LTkwMCBkYXJrOmhvdmVyOmJnLWdyYXktNjAwIGRhcms6aG92ZXI6dGV4dC13aGl0ZVwiLFxuICAgICAgY2xvc2VJY29uOiBcImgtNCB3LTRcIixcbiAgICAgIHRpdGxlSWNvbjogXCJtZS0yLjUgaC00IHctNFwiLFxuICAgICAgdGl0bGVUZXh0OiBcIm1iLTQgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHRleHQtYmFzZSBmb250LXNlbWlib2xkIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCJcbiAgICB9LFxuICAgIGNvbGxhcHNlZDoge1xuICAgICAgb246IFwiaGlkZGVuXCIsXG4gICAgICBvZmY6IFwiYmxvY2tcIlxuICAgIH1cbiAgfSxcbiAgaXRlbXM6IHtcbiAgICBiYXNlOiBcIlwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBkcmF3ZXJUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBkcm9wZG93blRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBhcnJvd0ljb246IFwibWwtMiBoLTQgdy00XCIsXG4gIGNvbnRlbnQ6IFwicHktMSBmb2N1czpvdXRsaW5lLW5vbmVcIixcbiAgZmxvYXRpbmc6IHtcbiAgICBhbmltYXRpb246IFwidHJhbnNpdGlvbi1vcGFjaXR5XCIsXG4gICAgYXJyb3c6IHtcbiAgICAgIGJhc2U6IFwiYWJzb2x1dGUgei0xMCBoLTIgdy0yIHJvdGF0ZS00NVwiLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZGFyazogXCJiZy1ncmF5LTkwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgICAgIGxpZ2h0OiBcImJnLXdoaXRlXCIsXG4gICAgICAgIGF1dG86IFwiYmctd2hpdGUgZGFyazpiZy1ncmF5LTcwMFwiXG4gICAgICB9LFxuICAgICAgcGxhY2VtZW50OiBcIi00cHhcIlxuICAgIH0sXG4gICAgYmFzZTogXCJ6LTEwIHctZml0IGRpdmlkZS15IGRpdmlkZS1ncmF5LTEwMCByb3VuZGVkIHNoYWRvdyBmb2N1czpvdXRsaW5lLW5vbmVcIixcbiAgICBjb250ZW50OiBcInB5LTEgdGV4dC1zbSB0ZXh0LWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTIwMFwiLFxuICAgIGRpdmlkZXI6IFwibXktMSBoLXB4IGJnLWdyYXktMTAwIGRhcms6YmctZ3JheS02MDBcIixcbiAgICBoZWFkZXI6IFwiYmxvY2sgcHgtNCBweS0yIHRleHQtc20gdGV4dC1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS0yMDBcIixcbiAgICBoaWRkZW46IFwiaW52aXNpYmxlIG9wYWNpdHktMFwiLFxuICAgIGl0ZW06IHtcbiAgICAgIGNvbnRhaW5lcjogXCJcIixcbiAgICAgIGJhc2U6IFwiZmxleCB3LWZ1bGwgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnQgcHgtNCBweS0yIHRleHQtc20gdGV4dC1ncmF5LTcwMCBob3ZlcjpiZy1ncmF5LTEwMCBmb2N1czpiZy1ncmF5LTEwMCBmb2N1czpvdXRsaW5lLW5vbmUgZGFyazp0ZXh0LWdyYXktMjAwIGRhcms6aG92ZXI6YmctZ3JheS02MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6YmctZ3JheS02MDAgZGFyazpmb2N1czp0ZXh0LXdoaXRlXCIsXG4gICAgICBpY29uOiBcIm1yLTIgaC00IHctNFwiXG4gICAgfSxcbiAgICBzdHlsZToge1xuICAgICAgZGFyazogXCJiZy1ncmF5LTkwMCB0ZXh0LXdoaXRlIGRhcms6YmctZ3JheS03MDBcIixcbiAgICAgIGxpZ2h0OiBcImJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgdGV4dC1ncmF5LTkwMFwiLFxuICAgICAgYXV0bzogXCJib3JkZXIgYm9yZGVyLWdyYXktMjAwIGJnLXdoaXRlIHRleHQtZ3JheS05MDAgZGFyazpib3JkZXItbm9uZSBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZVwiXG4gICAgfSxcbiAgICB0YXJnZXQ6IFwidy1maXRcIlxuICB9LFxuICBpbmxpbmVXcmFwcGVyOiBcImZsZXggaXRlbXMtY2VudGVyXCJcbn0pO1xuXG5leHBvcnQgeyBkcm9wZG93blRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGZpbGVJbnB1dFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJmbGV4XCJcbiAgfSxcbiAgZmllbGQ6IHtcbiAgICBiYXNlOiBcInJlbGF0aXZlIHctZnVsbFwiLFxuICAgIGlucHV0OiB7XG4gICAgICBiYXNlOiBcImJsb2NrIHctZnVsbCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1sZyBib3JkZXIgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTBcIixcbiAgICAgIHNpemVzOiB7XG4gICAgICAgIHNtOiBcInNtOnRleHQteHNcIixcbiAgICAgICAgbWQ6IFwidGV4dC1zbVwiLFxuICAgICAgICBsZzogXCJzbTp0ZXh0LWJhc2VcIlxuICAgICAgfSxcbiAgICAgIGNvbG9yczoge1xuICAgICAgICBncmF5OiBcImJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTUwIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGZvY3VzOnJpbmctY3lhbi01MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpwbGFjZWhvbGRlci1ncmF5LTQwMCBkYXJrOmZvY3VzOmJvcmRlci1jeWFuLTUwMCBkYXJrOmZvY3VzOnJpbmctY3lhbi01MDBcIixcbiAgICAgICAgaW5mbzogXCJib3JkZXItY3lhbi01MDAgYmctY3lhbi01MCB0ZXh0LWN5YW4tOTAwIHBsYWNlaG9sZGVyLWN5YW4tNzAwIGZvY3VzOmJvcmRlci1jeWFuLTUwMCBmb2N1czpyaW5nLWN5YW4tNTAwIGRhcms6Ym9yZGVyLWN5YW4tNDAwIGRhcms6YmctY3lhbi0xMDAgZGFyazpmb2N1czpib3JkZXItY3lhbi01MDAgZGFyazpmb2N1czpyaW5nLWN5YW4tNTAwXCIsXG4gICAgICAgIGZhaWx1cmU6IFwiYm9yZGVyLXJlZC01MDAgYmctcmVkLTUwIHRleHQtcmVkLTkwMCBwbGFjZWhvbGRlci1yZWQtNzAwIGZvY3VzOmJvcmRlci1yZWQtNTAwIGZvY3VzOnJpbmctcmVkLTUwMCBkYXJrOmJvcmRlci1yZWQtNDAwIGRhcms6YmctcmVkLTEwMCBkYXJrOmZvY3VzOmJvcmRlci1yZWQtNTAwIGRhcms6Zm9jdXM6cmluZy1yZWQtNTAwXCIsXG4gICAgICAgIHdhcm5pbmc6IFwiYm9yZGVyLXllbGxvdy01MDAgYmcteWVsbG93LTUwIHRleHQteWVsbG93LTkwMCBwbGFjZWhvbGRlci15ZWxsb3ctNzAwIGZvY3VzOmJvcmRlci15ZWxsb3ctNTAwIGZvY3VzOnJpbmcteWVsbG93LTUwMCBkYXJrOmJvcmRlci15ZWxsb3ctNDAwIGRhcms6YmcteWVsbG93LTEwMCBkYXJrOmZvY3VzOmJvcmRlci15ZWxsb3ctNTAwIGRhcms6Zm9jdXM6cmluZy15ZWxsb3ctNTAwXCIsXG4gICAgICAgIHN1Y2Nlc3M6IFwiYm9yZGVyLWdyZWVuLTUwMCBiZy1ncmVlbi01MCB0ZXh0LWdyZWVuLTkwMCBwbGFjZWhvbGRlci1ncmVlbi03MDAgZm9jdXM6Ym9yZGVyLWdyZWVuLTUwMCBmb2N1czpyaW5nLWdyZWVuLTUwMCBkYXJrOmJvcmRlci1ncmVlbi00MDAgZGFyazpiZy1ncmVlbi0xMDAgZGFyazpmb2N1czpib3JkZXItZ3JlZW4tNTAwIGRhcms6Zm9jdXM6cmluZy1ncmVlbi01MDBcIlxuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IGZpbGVJbnB1dFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGZsb2F0aW5nTGFiZWxUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgaW5wdXQ6IHtcbiAgICBkZWZhdWx0OiB7XG4gICAgICBmaWxsZWQ6IHtcbiAgICAgICAgc206IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtdC1sZyBib3JkZXItMCBib3JkZXItYi0yIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTUwIHB4LTIuNSBwYi0yLjUgcHQtNSB0ZXh0LXhzIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWJsdWUtNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIixcbiAgICAgICAgbWQ6IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtdC1sZyBib3JkZXItMCBib3JkZXItYi0yIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTUwIHB4LTIuNSBwYi0yLjUgcHQtNSB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWJsdWUtNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIlxuICAgICAgfSxcbiAgICAgIG91dGxpbmVkOiB7XG4gICAgICAgIHNtOiBcInBlZXIgYmxvY2sgdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0zMDAgYmctdHJhbnNwYXJlbnQgcHgtMi41IHBiLTIuNSBwdC00IHRleHQteHMgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItYmx1ZS02MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIixcbiAgICAgICAgbWQ6IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy10cmFuc3BhcmVudCBweC0yLjUgcGItMi41IHB0LTQgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGZvY3VzOmJvcmRlci1ibHVlLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1ibHVlLTUwMFwiXG4gICAgICB9LFxuICAgICAgc3RhbmRhcmQ6IHtcbiAgICAgICAgc206IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLWdyYXktMzAwIGJnLXRyYW5zcGFyZW50IHB4LTAgcHktMi41IHRleHQteHMgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItYmx1ZS02MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIixcbiAgICAgICAgbWQ6IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLWdyYXktMzAwIGJnLXRyYW5zcGFyZW50IHB4LTAgcHktMi41IHRleHQtc20gdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItYmx1ZS02MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIlxuICAgICAgfVxuICAgIH0sXG4gICAgc3VjY2Vzczoge1xuICAgICAgZmlsbGVkOiB7XG4gICAgICAgIHNtOiBcInBlZXIgYmxvY2sgdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSByb3VuZGVkLXQtbGcgYm9yZGVyLTAgYm9yZGVyLWItMiBib3JkZXItZ3JlZW4tNjAwIGJnLWdyYXktNTAgcHgtMi41IHBiLTIuNSBwdC01IHRleHQteHMgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItZ3JlZW4tNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItZ3JlZW4tNTAwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6Ym9yZGVyLWdyZWVuLTUwMFwiLFxuICAgICAgICBtZDogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgcm91bmRlZC10LWxnIGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLWdyZWVuLTYwMCBiZy1ncmF5LTUwIHB4LTIuNSBwYi0yLjUgcHQtNSB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWdyZWVuLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLWdyZWVuLTUwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1ncmVlbi01MDBcIlxuICAgICAgfSxcbiAgICAgIG91dGxpbmVkOiB7XG4gICAgICAgIHNtOiBcInBlZXIgYmxvY2sgdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JlZW4tNjAwIGJnLXRyYW5zcGFyZW50IHB4LTIuNSBwYi0yLjUgcHQtNCB0ZXh0LXhzIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWdyZWVuLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLWdyZWVuLTUwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItZ3JlZW4tNTAwXCIsXG4gICAgICAgIG1kOiBcInBlZXIgYmxvY2sgdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JlZW4tNjAwIGJnLXRyYW5zcGFyZW50IHB4LTIuNSBwYi0yLjUgcHQtNCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWdyZWVuLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLWdyZWVuLTUwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItZ3JlZW4tNTAwXCJcbiAgICAgIH0sXG4gICAgICBzdGFuZGFyZDoge1xuICAgICAgICBzbTogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgYm9yZGVyLTAgYm9yZGVyLWItMiBib3JkZXItZ3JlZW4tNjAwIGJnLXRyYW5zcGFyZW50IHB4LTAgcHktMi41IHRleHQteHMgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItZ3JlZW4tNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItZ3JlZW4tNTAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1ncmVlbi01MDBcIixcbiAgICAgICAgbWQ6IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLWdyZWVuLTYwMCBiZy10cmFuc3BhcmVudCBweC0wIHB5LTIuNSB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWdyZWVuLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLWdyZWVuLTUwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItZ3JlZW4tNTAwXCJcbiAgICAgIH1cbiAgICB9LFxuICAgIGVycm9yOiB7XG4gICAgICBmaWxsZWQ6IHtcbiAgICAgICAgc206IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtdC1sZyBib3JkZXItMCBib3JkZXItYi0yIGJvcmRlci1yZWQtNjAwIGJnLWdyYXktNTAgcHgtMi41IHBiLTIuNSBwdC01IHRleHQteHMgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItcmVkLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLXJlZC01MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItcmVkLTUwMFwiLFxuICAgICAgICBtZDogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgcm91bmRlZC10LWxnIGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLXJlZC02MDAgYmctZ3JheS01MCBweC0yLjUgcGItMi41IHB0LTUgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGZvY3VzOmJvcmRlci1yZWQtNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItcmVkLTUwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1yZWQtNTAwXCJcbiAgICAgIH0sXG4gICAgICBvdXRsaW5lZDoge1xuICAgICAgICBzbTogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXJlZC02MDAgYmctdHJhbnNwYXJlbnQgcHgtMi41IHBiLTIuNSBwdC00IHRleHQteHMgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItcmVkLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLXJlZC01MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6Ym9yZGVyLXJlZC01MDBcIixcbiAgICAgICAgbWQ6IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1yZWQtNjAwIGJnLXRyYW5zcGFyZW50IHB4LTIuNSBwYi0yLjUgcHQtNCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLXJlZC02MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBkYXJrOmJvcmRlci1yZWQtNTAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1yZWQtNTAwXCJcbiAgICAgIH0sXG4gICAgICBzdGFuZGFyZDoge1xuICAgICAgICBzbTogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgYm9yZGVyLTAgYm9yZGVyLWItMiBib3JkZXItcmVkLTYwMCBiZy10cmFuc3BhcmVudCBweC0wIHB5LTIuNSB0ZXh0LXhzIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLXJlZC02MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBkYXJrOmJvcmRlci1yZWQtNTAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1yZWQtNTAwXCIsXG4gICAgICAgIG1kOiBcInBlZXIgYmxvY2sgdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSBib3JkZXItMCBib3JkZXItYi0yIGJvcmRlci1yZWQtNjAwIGJnLXRyYW5zcGFyZW50IHB4LTAgcHktMi41IHRleHQtc20gdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItcmVkLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLXJlZC01MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6Ym9yZGVyLXJlZC01MDBcIlxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbGFiZWw6IHtcbiAgICBkZWZhdWx0OiB7XG4gICAgICBmaWxsZWQ6IHtcbiAgICAgICAgc206IFwiYWJzb2x1dGUgbGVmdC0yLjUgdG9wLTQgei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS00IHNjYWxlLTc1IHRleHQteHMgdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgcGVlci1wbGFjZWhvbGRlci1zaG93bjp0cmFuc2xhdGUteS0wIHBlZXItcGxhY2Vob2xkZXItc2hvd246c2NhbGUtMTAwIHBlZXItZm9jdXM6LXRyYW5zbGF0ZS15LTQgcGVlci1mb2N1czpzY2FsZS03NSBwZWVyLWZvY3VzOnRleHQtYmx1ZS02MDAgZGFyazp0ZXh0LWdyYXktNDAwIHBlZXItZm9jdXM6ZGFyazp0ZXh0LWJsdWUtNTAwXCIsXG4gICAgICAgIG1kOiBcImFic29sdXRlIGxlZnQtMi41IHRvcC00IHotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNCBzY2FsZS03NSB0ZXh0LXNtIHRleHQtZ3JheS01MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dHJhbnNsYXRlLXktMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS00IHBlZXItZm9jdXM6c2NhbGUtNzUgcGVlci1mb2N1czp0ZXh0LWJsdWUtNjAwIGRhcms6dGV4dC1ncmF5LTQwMCBwZWVyLWZvY3VzOmRhcms6dGV4dC1ibHVlLTUwMFwiXG4gICAgICB9LFxuICAgICAgb3V0bGluZWQ6IHtcbiAgICAgICAgc206IFwiYWJzb2x1dGUgbGVmdC0xIHRvcC0yIHotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNCBzY2FsZS03NSBiZy13aGl0ZSBweC0yIHRleHQteHMgdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgcGVlci1wbGFjZWhvbGRlci1zaG93bjp0b3AtMS8yIHBlZXItcGxhY2Vob2xkZXItc2hvd246LXRyYW5zbGF0ZS15LTEvMiBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOnRvcC0yIHBlZXItZm9jdXM6LXRyYW5zbGF0ZS15LTQgcGVlci1mb2N1czpzY2FsZS03NSBwZWVyLWZvY3VzOnB4LTIgcGVlci1mb2N1czp0ZXh0LWJsdWUtNjAwIGRhcms6YmctZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktNDAwIHBlZXItZm9jdXM6ZGFyazp0ZXh0LWJsdWUtNTAwXCIsXG4gICAgICAgIG1kOiBcImFic29sdXRlIGxlZnQtMSB0b3AtMiB6LTEwIG9yaWdpbi1bMF0gLXRyYW5zbGF0ZS15LTQgc2NhbGUtNzUgYmctd2hpdGUgcHgtMiB0ZXh0LXNtIHRleHQtZ3JheS01MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dG9wLTEvMiBwZWVyLXBsYWNlaG9sZGVyLXNob3duOi10cmFuc2xhdGUteS0xLzIgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czp0b3AtMiBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS00IHBlZXItZm9jdXM6c2NhbGUtNzUgcGVlci1mb2N1czpweC0yIHBlZXItZm9jdXM6dGV4dC1ibHVlLTYwMCBkYXJrOmJnLWdyYXktOTAwIGRhcms6dGV4dC1ncmF5LTQwMCBwZWVyLWZvY3VzOmRhcms6dGV4dC1ibHVlLTUwMFwiXG4gICAgICB9LFxuICAgICAgc3RhbmRhcmQ6IHtcbiAgICAgICAgc206IFwiYWJzb2x1dGUgdG9wLTMgLXotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNiBzY2FsZS03NSB0ZXh0LXhzIHRleHQtZ3JheS01MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dHJhbnNsYXRlLXktMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOmxlZnQtMCBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS02IHBlZXItZm9jdXM6c2NhbGUtNzUgcGVlci1mb2N1czp0ZXh0LWJsdWUtNjAwIGRhcms6dGV4dC1ncmF5LTQwMCBwZWVyLWZvY3VzOmRhcms6dGV4dC1ibHVlLTUwMFwiLFxuICAgICAgICBtZDogXCJhYnNvbHV0ZSB0b3AtMyAtei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS02IHNjYWxlLTc1IHRleHQtc20gdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgcGVlci1wbGFjZWhvbGRlci1zaG93bjp0cmFuc2xhdGUteS0wIHBlZXItcGxhY2Vob2xkZXItc2hvd246c2NhbGUtMTAwIHBlZXItZm9jdXM6bGVmdC0wIHBlZXItZm9jdXM6LXRyYW5zbGF0ZS15LTYgcGVlci1mb2N1czpzY2FsZS03NSBwZWVyLWZvY3VzOnRleHQtYmx1ZS02MDAgZGFyazp0ZXh0LWdyYXktNDAwIHBlZXItZm9jdXM6ZGFyazp0ZXh0LWJsdWUtNTAwXCJcbiAgICAgIH1cbiAgICB9LFxuICAgIHN1Y2Nlc3M6IHtcbiAgICAgIGZpbGxlZDoge1xuICAgICAgICBzbTogXCJhYnNvbHV0ZSBsZWZ0LTIuNSB0b3AtNCB6LTEwIG9yaWdpbi1bMF0gLXRyYW5zbGF0ZS15LTQgc2NhbGUtNzUgdGV4dC1zbSB0ZXh0LWdyZWVuLTYwMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgcGVlci1wbGFjZWhvbGRlci1zaG93bjp0cmFuc2xhdGUteS0wIHBlZXItcGxhY2Vob2xkZXItc2hvd246c2NhbGUtMTAwIHBlZXItZm9jdXM6LXRyYW5zbGF0ZS15LTQgcGVlci1mb2N1czpzY2FsZS03NSBkYXJrOnRleHQtZ3JlZW4tNTAwXCIsXG4gICAgICAgIG1kOiBcImFic29sdXRlIGxlZnQtMi41IHRvcC00IHotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNCBzY2FsZS03NSB0ZXh0LXNtIHRleHQtZ3JlZW4tNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRyYW5zbGF0ZS15LTAgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNCBwZWVyLWZvY3VzOnNjYWxlLTc1IGRhcms6dGV4dC1ncmVlbi01MDBcIlxuICAgICAgfSxcbiAgICAgIG91dGxpbmVkOiB7XG4gICAgICAgIHNtOiBcImFic29sdXRlIGxlZnQtMSB0b3AtMiB6LTEwIG9yaWdpbi1bMF0gLXRyYW5zbGF0ZS15LTQgc2NhbGUtNzUgYmctd2hpdGUgcHgtMiB0ZXh0LXNtIHRleHQtZ3JlZW4tNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRvcC0xLzIgcGVlci1wbGFjZWhvbGRlci1zaG93bjotdHJhbnNsYXRlLXktMS8yIHBlZXItcGxhY2Vob2xkZXItc2hvd246c2NhbGUtMTAwIHBlZXItZm9jdXM6dG9wLTIgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNCBwZWVyLWZvY3VzOnNjYWxlLTc1IHBlZXItZm9jdXM6cHgtMiBkYXJrOmJnLWdyYXktOTAwIGRhcms6dGV4dC1ncmVlbi01MDBcIixcbiAgICAgICAgbWQ6IFwiYWJzb2x1dGUgbGVmdC0xIHRvcC0yIHotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNCBzY2FsZS03NSBiZy13aGl0ZSBweC0yIHRleHQtc20gdGV4dC1ncmVlbi02MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dG9wLTEvMiBwZWVyLXBsYWNlaG9sZGVyLXNob3duOi10cmFuc2xhdGUteS0xLzIgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czp0b3AtMiBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS00IHBlZXItZm9jdXM6c2NhbGUtNzUgcGVlci1mb2N1czpweC0yIGRhcms6YmctZ3JheS05MDAgZGFyazp0ZXh0LWdyZWVuLTUwMFwiXG4gICAgICB9LFxuICAgICAgc3RhbmRhcmQ6IHtcbiAgICAgICAgc206IFwiYWJzb2x1dGUgdG9wLTMgLXotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNiBzY2FsZS03NSB0ZXh0LXhzIHRleHQtZ3JlZW4tNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRyYW5zbGF0ZS15LTAgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czpsZWZ0LTAgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNiBwZWVyLWZvY3VzOnNjYWxlLTc1IGRhcms6dGV4dC1ncmVlbi01MDBcIixcbiAgICAgICAgbWQ6IFwiYWJzb2x1dGUgdG9wLTMgLXotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNiBzY2FsZS03NSB0ZXh0LXNtIHRleHQtZ3JlZW4tNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRyYW5zbGF0ZS15LTAgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czpsZWZ0LTAgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNiBwZWVyLWZvY3VzOnNjYWxlLTc1IGRhcms6dGV4dC1ncmVlbi01MDBcIlxuICAgICAgfVxuICAgIH0sXG4gICAgZXJyb3I6IHtcbiAgICAgIGZpbGxlZDoge1xuICAgICAgICBzbTogXCJhYnNvbHV0ZSBsZWZ0LTIuNSB0b3AtNCB6LTEwIG9yaWdpbi1bMF0gLXRyYW5zbGF0ZS15LTQgc2NhbGUtNzUgdGV4dC14cyB0ZXh0LXJlZC02MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dHJhbnNsYXRlLXktMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS00IHBlZXItZm9jdXM6c2NhbGUtNzUgZGFyazp0ZXh0LXJlZC01MDBcIixcbiAgICAgICAgbWQ6IFwiYWJzb2x1dGUgbGVmdC0yLjUgdG9wLTQgei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS00IHNjYWxlLTc1IHRleHQteHMgdGV4dC1yZWQtNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRyYW5zbGF0ZS15LTAgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNCBwZWVyLWZvY3VzOnNjYWxlLTc1IGRhcms6dGV4dC1yZWQtNTAwXCJcbiAgICAgIH0sXG4gICAgICBvdXRsaW5lZDoge1xuICAgICAgICBzbTogXCJhYnNvbHV0ZSBsZWZ0LTEgdG9wLTIgei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS00IHNjYWxlLTc1IGJnLXdoaXRlIHB4LTIgdGV4dC14cyB0ZXh0LXJlZC02MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dG9wLTEvMiBwZWVyLXBsYWNlaG9sZGVyLXNob3duOi10cmFuc2xhdGUteS0xLzIgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czp0b3AtMiBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS00IHBlZXItZm9jdXM6c2NhbGUtNzUgcGVlci1mb2N1czpweC0yIGRhcms6YmctZ3JheS05MDAgZGFyazp0ZXh0LXJlZC01MDBcIixcbiAgICAgICAgbWQ6IFwiYWJzb2x1dGUgbGVmdC0xIHRvcC0yIHotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNCBzY2FsZS03NSBiZy13aGl0ZSBweC0yIHRleHQteHMgdGV4dC1yZWQtNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRvcC0xLzIgcGVlci1wbGFjZWhvbGRlci1zaG93bjotdHJhbnNsYXRlLXktMS8yIHBlZXItcGxhY2Vob2xkZXItc2hvd246c2NhbGUtMTAwIHBlZXItZm9jdXM6dG9wLTIgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNCBwZWVyLWZvY3VzOnNjYWxlLTc1IHBlZXItZm9jdXM6cHgtMiBkYXJrOmJnLWdyYXktOTAwIGRhcms6dGV4dC1yZWQtNTAwXCJcbiAgICAgIH0sXG4gICAgICBzdGFuZGFyZDoge1xuICAgICAgICBzbTogXCJhYnNvbHV0ZSB0b3AtMyAtei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS02IHNjYWxlLTc1IHRleHQteHMgdGV4dC1yZWQtNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRyYW5zbGF0ZS15LTAgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czpsZWZ0LTAgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNiBwZWVyLWZvY3VzOnNjYWxlLTc1IGRhcms6dGV4dC1yZWQtNTAwXCIsXG4gICAgICAgIG1kOiBcImFic29sdXRlIHRvcC0zIC16LTEwIG9yaWdpbi1bMF0gLXRyYW5zbGF0ZS15LTYgc2NhbGUtNzUgdGV4dC1zbSB0ZXh0LXJlZC02MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dHJhbnNsYXRlLXktMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOmxlZnQtMCBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS02IHBlZXItZm9jdXM6c2NhbGUtNzUgZGFyazp0ZXh0LXJlZC01MDBcIlxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgaGVscGVyVGV4dDoge1xuICAgIGRlZmF1bHQ6IFwibXQtMiB0ZXh0LXhzIHRleHQtZ3JheS02MDAgZGFyazp0ZXh0LWdyYXktNDAwXCIsXG4gICAgc3VjY2VzczogXCJtdC0yIHRleHQteHMgdGV4dC1ncmVlbi02MDAgZGFyazp0ZXh0LWdyZWVuLTQwMFwiLFxuICAgIGVycm9yOiBcIm10LTIgdGV4dC14cyB0ZXh0LXJlZC02MDAgZGFyazp0ZXh0LXJlZC00MDBcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgZmxvYXRpbmdMYWJlbFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGZvb3RlclRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJ3LWZ1bGwgcm91bmRlZC1sZyBiZy13aGl0ZSBzaGFkb3cgZGFyazpiZy1ncmF5LTgwMCBtZDpmbGV4IG1kOml0ZW1zLWNlbnRlciBtZDpqdXN0aWZ5LWJldHdlZW5cIixcbiAgICBjb250YWluZXI6IFwidy1mdWxsIHAtNlwiLFxuICAgIGJnRGFyazogXCJiZy1ncmF5LTgwMFwiXG4gIH0sXG4gIGdyb3VwTGluazoge1xuICAgIGJhc2U6IFwiZmxleCBmbGV4LXdyYXAgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC13aGl0ZVwiLFxuICAgIGxpbms6IHtcbiAgICAgIGJhc2U6IFwibWUtNCBsYXN0Om1yLTAgbWQ6bXItNlwiLFxuICAgICAgaHJlZjogXCJob3Zlcjp1bmRlcmxpbmVcIlxuICAgIH0sXG4gICAgY29sOiBcImZsZXgtY29sIHNwYWNlLXktNFwiXG4gIH0sXG4gIGljb246IHtcbiAgICBiYXNlOiBcInRleHQtZ3JheS01MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlXCIsXG4gICAgc2l6ZTogXCJoLTUgdy01XCJcbiAgfSxcbiAgdGl0bGU6IHtcbiAgICBiYXNlOiBcIm1iLTYgdGV4dC1zbSBmb250LXNlbWlib2xkIHVwcGVyY2FzZSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC13aGl0ZVwiXG4gIH0sXG4gIGRpdmlkZXI6IHtcbiAgICBiYXNlOiBcIm15LTYgdy1mdWxsIGJvcmRlci1ncmF5LTIwMCBkYXJrOmJvcmRlci1ncmF5LTcwMCBzbTpteC1hdXRvIGxnOm15LThcIlxuICB9LFxuICBjb3B5cmlnaHQ6IHtcbiAgICBiYXNlOiBcInRleHQtc20gdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDAgc206dGV4dC1jZW50ZXJcIixcbiAgICBocmVmOiBcIm1sLTEgaG92ZXI6dW5kZXJsaW5lXCIsXG4gICAgc3BhbjogXCJtbC0xXCJcbiAgfSxcbiAgYnJhbmQ6IHtcbiAgICBiYXNlOiBcIm1iLTQgZmxleCBpdGVtcy1jZW50ZXIgc206bWItMFwiLFxuICAgIGltZzogXCJtci0zIGgtOFwiLFxuICAgIHNwYW46IFwic2VsZi1jZW50ZXIgd2hpdGVzcGFjZS1ub3dyYXAgdGV4dC0yeGwgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktODAwIGRhcms6dGV4dC13aGl0ZVwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBmb290ZXJUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBoZWxwZXJUZXh0VGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcIm10LTIgdGV4dC1zbVwiLFxuICAgIGNvbG9yczoge1xuICAgICAgZ3JheTogXCJ0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICAgICAgaW5mbzogXCJ0ZXh0LWN5YW4tNzAwIGRhcms6dGV4dC1jeWFuLTgwMFwiLFxuICAgICAgc3VjY2VzczogXCJ0ZXh0LWdyZWVuLTYwMCBkYXJrOnRleHQtZ3JlZW4tNTAwXCIsXG4gICAgICBmYWlsdXJlOiBcInRleHQtcmVkLTYwMCBkYXJrOnRleHQtcmVkLTUwMFwiLFxuICAgICAgd2FybmluZzogXCJ0ZXh0LXllbGxvdy01MDAgZGFyazp0ZXh0LXllbGxvdy02MDBcIlxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IGhlbHBlclRleHRUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBoclRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJteS04IGgtcHggYm9yZGVyLTAgYmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTcwMFwiXG4gIH0sXG4gIHRyaW1tZWQ6IHtcbiAgICBiYXNlOiBcIm14LWF1dG8gbXktNCBoLTEgdy00OCByb3VuZGVkIGJvcmRlci0wIGJnLWdyYXktMTAwIGRhcms6YmctZ3JheS03MDAgbWQ6bXktMTBcIlxuICB9LFxuICBpY29uOiB7XG4gICAgYmFzZTogXCJpbmxpbmUtZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCIsXG4gICAgaHJMaW5lOiBcIm15LTggaC0xIHctNjQgcm91bmRlZCBib3JkZXItMCBiZy1ncmF5LTIwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgaWNvbjoge1xuICAgICAgYmFzZTogXCJhYnNvbHV0ZSBsZWZ0LTEvMiAtdHJhbnNsYXRlLXgtMS8yIGJnLXdoaXRlIHB4LTQgZGFyazpiZy1ncmF5LTkwMFwiLFxuICAgICAgaWNvbjogXCJoLTQgdy00IHRleHQtZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktMzAwXCJcbiAgICB9XG4gIH0sXG4gIHRleHQ6IHtcbiAgICBiYXNlOiBcImlubGluZS1mbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIixcbiAgICBockxpbmU6IFwibXktOCBoLXB4IHctNjQgYm9yZGVyLTAgYmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTcwMFwiLFxuICAgIHRleHQ6IFwiYWJzb2x1dGUgbGVmdC0xLzIgLXRyYW5zbGF0ZS14LTEvMiBiZy13aGl0ZSBweC0zIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazpiZy1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGVcIlxuICB9LFxuICBzcXVhcmU6IHtcbiAgICBiYXNlOiBcIm14LWF1dG8gbXktOCBoLTggdy04IHJvdW5kZWQgYm9yZGVyLTAgYmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTcwMCBtZDpteS0xMlwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBoclRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGtiZFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJyb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctZ3JheS0xMDAgcHgtMiBweS0xLjUgdGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtZ3JheS04MDAgZGFyazpib3JkZXItZ3JheS01MDAgZGFyazpiZy1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS0xMDBcIixcbiAgICBpY29uOiBcImlubGluZS1ibG9ja1wiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBrYmRUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBsYWJlbFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJ0ZXh0LXNtIGZvbnQtbWVkaXVtXCIsXG4gICAgZGlzYWJsZWQ6IFwib3BhY2l0eS01MFwiLFxuICAgIGNvbG9yczoge1xuICAgICAgZGVmYXVsdDogXCJ0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiLFxuICAgICAgaW5mbzogXCJ0ZXh0LWN5YW4tNTAwIGRhcms6dGV4dC1jeWFuLTYwMFwiLFxuICAgICAgZmFpbHVyZTogXCJ0ZXh0LXJlZC03MDAgZGFyazp0ZXh0LXJlZC01MDBcIixcbiAgICAgIHdhcm5pbmc6IFwidGV4dC15ZWxsb3ctNTAwIGRhcms6dGV4dC15ZWxsb3ctNjAwXCIsXG4gICAgICBzdWNjZXNzOiBcInRleHQtZ3JlZW4tNzAwIGRhcms6dGV4dC1ncmVlbi01MDBcIlxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IGxhYmVsVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgbGlzdFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJsaXN0LWluc2lkZSBzcGFjZS15LTEgdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIixcbiAgICBvcmRlcmVkOiB7XG4gICAgICBvZmY6IFwibGlzdC1kaXNjXCIsXG4gICAgICBvbjogXCJsaXN0LWRlY2ltYWxcIlxuICAgIH0sXG4gICAgaG9yaXpvbnRhbDogXCJmbGV4IGxpc3Qtbm9uZSBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNwYWNlLXgtNCBzcGFjZS15LTBcIixcbiAgICB1bnN0eWxlZDogXCJsaXN0LW5vbmVcIixcbiAgICBuZXN0ZWQ6IFwibXQtMiBwcy01XCJcbiAgfSxcbiAgaXRlbToge1xuICAgIHdpdGhJY29uOiB7XG4gICAgICBvZmY6IFwiXCIsXG4gICAgICBvbjogXCJmbGV4IGl0ZW1zLWNlbnRlclwiXG4gICAgfSxcbiAgICBpY29uOiBcIm1lLTIgaC0zLjUgdy0zLjUgZmxleC1zaHJpbmstMFwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBsaXN0VGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgbGlzdEdyb3VwVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImxpc3Qtbm9uZSByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgdGV4dC1sZWZ0IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZVwiXG4gIH0sXG4gIGl0ZW06IHtcbiAgICBiYXNlOiBcIlsmPipdOmZpcnN0OnJvdW5kZWQtdC1sZyBbJj4qXTpsYXN0OnJvdW5kZWQtYi1sZyBbJj4qXTpsYXN0OmJvcmRlci1iLTBcIixcbiAgICBsaW5rOiB7XG4gICAgICBiYXNlOiBcImZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBib3JkZXItYiBib3JkZXItZ3JheS0yMDAgcHgtNCBweS0yIGRhcms6Ym9yZGVyLWdyYXktNjAwXCIsXG4gICAgICBhY3RpdmU6IHtcbiAgICAgICAgb2ZmOiBcImhvdmVyOmJnLWdyYXktMTAwIGhvdmVyOnRleHQtY3lhbi03MDAgZm9jdXM6dGV4dC1jeWFuLTcwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctY3lhbi03MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpob3ZlcjpiZy1ncmF5LTYwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGUgZGFyazpmb2N1czp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1ncmF5LTUwMFwiLFxuICAgICAgICBvbjogXCJiZy1jeWFuLTcwMCB0ZXh0LXdoaXRlIGRhcms6YmctZ3JheS04MDBcIlxuICAgICAgfSxcbiAgICAgIGRpc2FibGVkOiB7XG4gICAgICAgIG9mZjogXCJcIixcbiAgICAgICAgb246IFwiY3Vyc29yLW5vdC1hbGxvd2VkIGJnLWdyYXktMTAwIHRleHQtZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDAgaG92ZXI6dGV4dC1ncmF5LTkwMCBmb2N1czp0ZXh0LWdyYXktOTAwXCJcbiAgICAgIH0sXG4gICAgICBocmVmOiB7XG4gICAgICAgIG9mZjogXCJcIixcbiAgICAgICAgb246IFwiXCJcbiAgICAgIH0sXG4gICAgICBpY29uOiBcIm1yLTIgaC00IHctNCBmaWxsLWN1cnJlbnRcIlxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IGxpc3RHcm91cFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IG5hdmJhclRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJiZy13aGl0ZSBweC0yIHB5LTIuNSBkYXJrOmJvcmRlci1ncmF5LTcwMCBkYXJrOmJnLWdyYXktODAwIHNtOnB4LTRcIixcbiAgICByb3VuZGVkOiB7XG4gICAgICBvbjogXCJyb3VuZGVkXCIsXG4gICAgICBvZmY6IFwiXCJcbiAgICB9LFxuICAgIGJvcmRlcmVkOiB7XG4gICAgICBvbjogXCJib3JkZXJcIixcbiAgICAgIG9mZjogXCJcIlxuICAgIH0sXG4gICAgaW5uZXI6IHtcbiAgICAgIGJhc2U6IFwibXgtYXV0byBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCIsXG4gICAgICBmbHVpZDoge1xuICAgICAgICBvbjogXCJcIixcbiAgICAgICAgb2ZmOiBcImNvbnRhaW5lclwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBicmFuZDoge1xuICAgIGJhc2U6IFwiZmxleCBpdGVtcy1jZW50ZXJcIlxuICB9LFxuICBjb2xsYXBzZToge1xuICAgIGJhc2U6IFwidy1mdWxsIG1kOmJsb2NrIG1kOnctYXV0b1wiLFxuICAgIGxpc3Q6IFwibXQtNCBmbGV4IGZsZXgtY29sIG1kOm10LTAgbWQ6ZmxleC1yb3cgbWQ6c3BhY2UteC04IG1kOnRleHQtc20gbWQ6Zm9udC1tZWRpdW1cIixcbiAgICBoaWRkZW46IHtcbiAgICAgIG9uOiBcImhpZGRlblwiLFxuICAgICAgb2ZmOiBcIlwiXG4gICAgfVxuICB9LFxuICBsaW5rOiB7XG4gICAgYmFzZTogXCJibG9jayBweS0yIHBsLTMgcHItNCBtZDpwLTBcIixcbiAgICBhY3RpdmU6IHtcbiAgICAgIG9uOiBcImJnLWN5YW4tNzAwIHRleHQtd2hpdGUgZGFyazp0ZXh0LXdoaXRlIG1kOmJnLXRyYW5zcGFyZW50IG1kOnRleHQtY3lhbi03MDBcIixcbiAgICAgIG9mZjogXCJib3JkZXItYiBib3JkZXItZ3JheS0xMDAgdGV4dC1ncmF5LTcwMCBob3ZlcjpiZy1ncmF5LTUwIGRhcms6Ym9yZGVyLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTQwMCBkYXJrOmhvdmVyOmJnLWdyYXktNzAwIGRhcms6aG92ZXI6dGV4dC13aGl0ZSBtZDpib3JkZXItMCBtZDpob3ZlcjpiZy10cmFuc3BhcmVudCBtZDpob3Zlcjp0ZXh0LWN5YW4tNzAwIG1kOmRhcms6aG92ZXI6YmctdHJhbnNwYXJlbnQgbWQ6ZGFyazpob3Zlcjp0ZXh0LXdoaXRlXCJcbiAgICB9LFxuICAgIGRpc2FibGVkOiB7XG4gICAgICBvbjogXCJ0ZXh0LWdyYXktNDAwIGhvdmVyOmN1cnNvci1ub3QtYWxsb3dlZCBkYXJrOnRleHQtZ3JheS02MDBcIixcbiAgICAgIG9mZjogXCJcIlxuICAgIH1cbiAgfSxcbiAgdG9nZ2xlOiB7XG4gICAgYmFzZTogXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1sZyBwLTIgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ncmF5LTIwMCBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS02MDAgbWQ6aGlkZGVuXCIsXG4gICAgaWNvbjogXCJoLTYgdy02IHNocmluay0wXCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IG5hdmJhclRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuaW1wb3J0IHsgZHJvcGRvd25UaGVtZSB9IGZyb20gJy4uL0Ryb3Bkb3duL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBuYXZiYXJUaGVtZSB9IGZyb20gJy4uL05hdmJhci90aGVtZS5tanMnO1xuXG5jb25zdCBtZWdhTWVudVRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICAuLi5uYXZiYXJUaGVtZSxcbiAgZHJvcGRvd246IHtcbiAgICBiYXNlOiBcIlwiLFxuICAgIHRvZ2dsZToge1xuICAgICAgLi4uZHJvcGRvd25UaGVtZSxcbiAgICAgIGZsb2F0aW5nOiB7XG4gICAgICAgIC4uLmRyb3Bkb3duVGhlbWUuZmxvYXRpbmcsXG4gICAgICAgIGJhc2U6IHR3TWVyZ2UoZHJvcGRvd25UaGVtZS5mbG9hdGluZy5iYXNlLCBcIm10LTIgYmxvY2tcIiksXG4gICAgICAgIGNvbnRlbnQ6IHR3TWVyZ2UoZHJvcGRvd25UaGVtZS5mbG9hdGluZy5jb250ZW50LCBcInRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCIpLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIC4uLmRyb3Bkb3duVGhlbWUuZmxvYXRpbmcuc3R5bGUsXG4gICAgICAgICAgYXV0bzogdHdNZXJnZShkcm9wZG93blRoZW1lLmZsb2F0aW5nLnN0eWxlLmF1dG8sIFwidGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIilcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGlubGluZVdyYXBwZXI6IHR3TWVyZ2UoZHJvcGRvd25UaGVtZS5pbmxpbmVXcmFwcGVyLCBcImZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIilcbiAgICB9XG4gIH0sXG4gIGRyb3Bkb3duVG9nZ2xlOiB7XG4gICAgYmFzZTogdHdNZXJnZShuYXZiYXJUaGVtZS5saW5rLmJhc2UsIG5hdmJhclRoZW1lLmxpbmsuYWN0aXZlLm9mZiwgXCJmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCIpXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBtZWdhTWVudVRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IG1vZGFsVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImZpeGVkIGluc2V0LXgtMCB0b3AtMCB6LTUwIGgtc2NyZWVuIG92ZXJmbG93LXktYXV0byBvdmVyZmxvdy14LWhpZGRlbiBtZDppbnNldC0wIG1kOmgtZnVsbFwiLFxuICAgIHNob3c6IHtcbiAgICAgIG9uOiBcImZsZXggYmctZ3JheS05MDAgYmctb3BhY2l0eS01MCBkYXJrOmJnLW9wYWNpdHktODBcIixcbiAgICAgIG9mZjogXCJoaWRkZW5cIlxuICAgIH0sXG4gICAgc2l6ZXM6IHtcbiAgICAgIHNtOiBcIm1heC13LXNtXCIsXG4gICAgICBtZDogXCJtYXgtdy1tZFwiLFxuICAgICAgbGc6IFwibWF4LXctbGdcIixcbiAgICAgIHhsOiBcIm1heC13LXhsXCIsXG4gICAgICBcIjJ4bFwiOiBcIm1heC13LTJ4bFwiLFxuICAgICAgXCIzeGxcIjogXCJtYXgtdy0zeGxcIixcbiAgICAgIFwiNHhsXCI6IFwibWF4LXctNHhsXCIsXG4gICAgICBcIjV4bFwiOiBcIm1heC13LTV4bFwiLFxuICAgICAgXCI2eGxcIjogXCJtYXgtdy02eGxcIixcbiAgICAgIFwiN3hsXCI6IFwibWF4LXctN3hsXCJcbiAgICB9LFxuICAgIHBvc2l0aW9uczoge1xuICAgICAgXCJ0b3AtbGVmdFwiOiBcIml0ZW1zLXN0YXJ0IGp1c3RpZnktc3RhcnRcIixcbiAgICAgIFwidG9wLWNlbnRlclwiOiBcIml0ZW1zLXN0YXJ0IGp1c3RpZnktY2VudGVyXCIsXG4gICAgICBcInRvcC1yaWdodFwiOiBcIml0ZW1zLXN0YXJ0IGp1c3RpZnktZW5kXCIsXG4gICAgICBcImNlbnRlci1sZWZ0XCI6IFwiaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnRcIixcbiAgICAgIGNlbnRlcjogXCJpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIixcbiAgICAgIFwiY2VudGVyLXJpZ2h0XCI6IFwiaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kXCIsXG4gICAgICBcImJvdHRvbS1yaWdodFwiOiBcIml0ZW1zLWVuZCBqdXN0aWZ5LWVuZFwiLFxuICAgICAgXCJib3R0b20tY2VudGVyXCI6IFwiaXRlbXMtZW5kIGp1c3RpZnktY2VudGVyXCIsXG4gICAgICBcImJvdHRvbS1sZWZ0XCI6IFwiaXRlbXMtZW5kIGp1c3RpZnktc3RhcnRcIlxuICAgIH1cbiAgfSxcbiAgY29udGVudDoge1xuICAgIGJhc2U6IFwicmVsYXRpdmUgaC1mdWxsIHctZnVsbCBwLTQgbWQ6aC1hdXRvXCIsXG4gICAgaW5uZXI6IFwicmVsYXRpdmUgZmxleCBtYXgtaC1bOTBkdmhdIGZsZXgtY29sIHJvdW5kZWQtbGcgYmctd2hpdGUgc2hhZG93IGRhcms6YmctZ3JheS03MDBcIlxuICB9LFxuICBib2R5OiB7XG4gICAgYmFzZTogXCJmbGV4LTEgb3ZlcmZsb3ctYXV0byBwLTZcIixcbiAgICBwb3B1cDogXCJwdC0wXCJcbiAgfSxcbiAgaGVhZGVyOiB7XG4gICAgYmFzZTogXCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiByb3VuZGVkLXQgYm9yZGVyLWIgcC01IGRhcms6Ym9yZGVyLWdyYXktNjAwXCIsXG4gICAgcG9wdXA6IFwiYm9yZGVyLWItMCBwLTJcIixcbiAgICB0aXRsZTogXCJ0ZXh0LXhsIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCIsXG4gICAgY2xvc2U6IHtcbiAgICAgIGJhc2U6IFwibWwtYXV0byBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1sZyBiZy10cmFuc3BhcmVudCBwLTEuNSB0ZXh0LXNtIHRleHQtZ3JheS00MDAgaG92ZXI6YmctZ3JheS0yMDAgaG92ZXI6dGV4dC1ncmF5LTkwMCBkYXJrOmhvdmVyOmJnLWdyYXktNjAwIGRhcms6aG92ZXI6dGV4dC13aGl0ZVwiLFxuICAgICAgaWNvbjogXCJoLTUgdy01XCJcbiAgICB9XG4gIH0sXG4gIGZvb3Rlcjoge1xuICAgIGJhc2U6IFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yIHJvdW5kZWQtYiBib3JkZXItZ3JheS0yMDAgcC02IGRhcms6Ym9yZGVyLWdyYXktNjAwXCIsXG4gICAgcG9wdXA6IFwiYm9yZGVyLXRcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgbW9kYWxUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBwYWdpbmF0aW9uVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIGJhc2U6IFwiXCIsXG4gIGxheW91dDoge1xuICAgIHRhYmxlOiB7XG4gICAgICBiYXNlOiBcInRleHQtc20gdGV4dC1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS00MDBcIixcbiAgICAgIHNwYW46IFwiZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiXG4gICAgfVxuICB9LFxuICBwYWdlczoge1xuICAgIGJhc2U6IFwieHM6bXQtMCBtdC0yIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciAtc3BhY2UteC1weFwiLFxuICAgIHNob3dJY29uOiBcImlubGluZS1mbGV4XCIsXG4gICAgcHJldmlvdXM6IHtcbiAgICAgIGJhc2U6IFwibWwtMCByb3VuZGVkLWwtbGcgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy13aGl0ZSBweC0zIHB5LTIgbGVhZGluZy10aWdodCB0ZXh0LWdyYXktNTAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JheS0xMDAgZW5hYmxlZDpob3Zlcjp0ZXh0LWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNzAwIGRhcms6YmctZ3JheS04MDAgZGFyazp0ZXh0LWdyYXktNDAwIGVuYWJsZWQ6ZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBlbmFibGVkOmRhcms6aG92ZXI6dGV4dC13aGl0ZVwiLFxuICAgICAgaWNvbjogXCJoLTUgdy01XCJcbiAgICB9LFxuICAgIG5leHQ6IHtcbiAgICAgIGJhc2U6IFwicm91bmRlZC1yLWxnIGJvcmRlciBib3JkZXItZ3JheS0zMDAgYmctd2hpdGUgcHgtMyBweS0yIGxlYWRpbmctdGlnaHQgdGV4dC1ncmF5LTUwMCBlbmFibGVkOmhvdmVyOmJnLWdyYXktMTAwIGVuYWJsZWQ6aG92ZXI6dGV4dC1ncmF5LTcwMCBkYXJrOmJvcmRlci1ncmF5LTcwMCBkYXJrOmJnLWdyYXktODAwIGRhcms6dGV4dC1ncmF5LTQwMCBlbmFibGVkOmRhcms6aG92ZXI6YmctZ3JheS03MDAgZW5hYmxlZDpkYXJrOmhvdmVyOnRleHQtd2hpdGVcIixcbiAgICAgIGljb246IFwiaC01IHctNVwiXG4gICAgfSxcbiAgICBzZWxlY3Rvcjoge1xuICAgICAgYmFzZTogXCJ3LTEyIGJvcmRlciBib3JkZXItZ3JheS0zMDAgYmctd2hpdGUgcHktMiBsZWFkaW5nLXRpZ2h0IHRleHQtZ3JheS01MDAgZW5hYmxlZDpob3ZlcjpiZy1ncmF5LTEwMCBlbmFibGVkOmhvdmVyOnRleHQtZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS03MDAgZGFyazpiZy1ncmF5LTgwMCBkYXJrOnRleHQtZ3JheS00MDAgZW5hYmxlZDpkYXJrOmhvdmVyOmJnLWdyYXktNzAwIGVuYWJsZWQ6ZGFyazpob3Zlcjp0ZXh0LXdoaXRlXCIsXG4gICAgICBhY3RpdmU6IFwiYmctY3lhbi01MCB0ZXh0LWN5YW4tNjAwIGhvdmVyOmJnLWN5YW4tMTAwIGhvdmVyOnRleHQtY3lhbi03MDAgZGFyazpib3JkZXItZ3JheS03MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGVcIixcbiAgICAgIGRpc2FibGVkOiBcImN1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTUwXCJcbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBwYWdpbmF0aW9uVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImNvbnN0IHBvcG92ZXJUaGVtZSA9IHtcbiAgYmFzZTogXCJhYnNvbHV0ZSB6LTIwIGlubGluZS1ibG9jayB3LW1heCBtYXgtdy1bMTAwdnddIGJnLXdoaXRlIG91dGxpbmUtbm9uZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtbGcgc2hhZG93LXNtIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctZ3JheS04MDBcIixcbiAgY29udGVudDogXCJ6LTEwIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLVs3cHhdXCIsXG4gIGFycm93OiB7XG4gICAgYmFzZTogXCJhYnNvbHV0ZSBoLTIgdy0yIHotMCByb3RhdGUtNDUgbWl4LWJsZW5kLWxpZ2h0ZW4gYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktODAwIGRhcms6bWl4LWJsZW5kLWNvbG9yXCIsXG4gICAgcGxhY2VtZW50OiBcIi00cHhcIlxuICB9XG59O1xuXG5leHBvcnQgeyBwb3BvdmVyVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgcHJvZ3Jlc3NUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgYmFzZTogXCJ3LWZ1bGwgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbCBiZy1ncmF5LTIwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gIGxhYmVsOiBcIm1iLTEgZmxleCBqdXN0aWZ5LWJldHdlZW4gZm9udC1tZWRpdW0gZGFyazp0ZXh0LXdoaXRlXCIsXG4gIGJhcjogXCJzcGFjZS14LTIgcm91bmRlZC1mdWxsIHRleHQtY2VudGVyIGZvbnQtbWVkaXVtIGxlYWRpbmctbm9uZSB0ZXh0LWN5YW4tMzAwIGRhcms6dGV4dC1jeWFuLTEwMFwiLFxuICBjb2xvcjoge1xuICAgIGRhcms6IFwiYmctZ3JheS02MDAgZGFyazpiZy1ncmF5LTMwMFwiLFxuICAgIGJsdWU6IFwiYmctYmx1ZS02MDBcIixcbiAgICByZWQ6IFwiYmctcmVkLTYwMCBkYXJrOmJnLXJlZC01MDBcIixcbiAgICBncmVlbjogXCJiZy1ncmVlbi02MDAgZGFyazpiZy1ncmVlbi01MDBcIixcbiAgICB5ZWxsb3c6IFwiYmcteWVsbG93LTQwMFwiLFxuICAgIGluZGlnbzogXCJiZy1pbmRpZ28tNjAwIGRhcms6YmctaW5kaWdvLTUwMFwiLFxuICAgIHB1cnBsZTogXCJiZy1wdXJwbGUtNjAwIGRhcms6YmctcHVycGxlLTUwMFwiLFxuICAgIGN5YW46IFwiYmctY3lhbi02MDBcIixcbiAgICBncmF5OiBcImJnLWdyYXktNTAwXCIsXG4gICAgbGltZTogXCJiZy1saW1lLTYwMFwiLFxuICAgIHBpbms6IFwiYmctcGluay01MDBcIixcbiAgICB0ZWFsOiBcImJnLXRlYWwtNjAwXCJcbiAgfSxcbiAgc2l6ZToge1xuICAgIHNtOiBcImgtMS41XCIsXG4gICAgbWQ6IFwiaC0yLjVcIixcbiAgICBsZzogXCJoLTRcIixcbiAgICB4bDogXCJoLTZcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgcHJvZ3Jlc3NUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCByYWRpb1RoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJoLTQgdy00IGJvcmRlciBib3JkZXItZ3JheS0zMDAgdGV4dC1jeWFuLTYwMCBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1jeWFuLTUwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6Zm9jdXM6YmctY3lhbi02MDAgZGFyazpmb2N1czpyaW5nLWN5YW4tNjAwXCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IHJhZGlvVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgcmFuZ2VTbGlkZXJUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwiZmxleFwiXG4gIH0sXG4gIGZpZWxkOiB7XG4gICAgYmFzZTogXCJyZWxhdGl2ZSB3LWZ1bGxcIixcbiAgICBpbnB1dDoge1xuICAgICAgYmFzZTogXCJ3LWZ1bGwgY3Vyc29yLXBvaW50ZXIgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtbGcgYmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTcwMFwiLFxuICAgICAgc2l6ZXM6IHtcbiAgICAgICAgc206IFwiaC0xXCIsXG4gICAgICAgIG1kOiBcImgtMlwiLFxuICAgICAgICBsZzogXCJoLTNcIlxuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IHJhbmdlU2xpZGVyVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgcmF0aW5nVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImZsZXggaXRlbXMtY2VudGVyXCJcbiAgfSxcbiAgc3Rhcjoge1xuICAgIGVtcHR5OiBcInRleHQtZ3JheS0zMDAgZGFyazp0ZXh0LWdyYXktNTAwXCIsXG4gICAgZmlsbGVkOiBcInRleHQteWVsbG93LTQwMFwiLFxuICAgIHNpemVzOiB7XG4gICAgICBzbTogXCJoLTUgdy01XCIsXG4gICAgICBtZDogXCJoLTcgdy03XCIsXG4gICAgICBsZzogXCJoLTEwIHctMTBcIlxuICAgIH1cbiAgfVxufSk7XG5jb25zdCByYXRpbmdBZHZhbmNlZFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBiYXNlOiBcImZsZXggaXRlbXMtY2VudGVyXCIsXG4gIGxhYmVsOiBcInRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1jeWFuLTYwMCBkYXJrOnRleHQtY3lhbi01MDBcIixcbiAgcHJvZ3Jlc3M6IHtcbiAgICBiYXNlOiBcIm14LTQgaC01IHctMi80IHJvdW5kZWQgYmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTcwMFwiLFxuICAgIGZpbGw6IFwiaC01IHJvdW5kZWQgYmcteWVsbG93LTQwMFwiLFxuICAgIGxhYmVsOiBcInRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1jeWFuLTYwMCBkYXJrOnRleHQtY3lhbi01MDBcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgcmF0aW5nQWR2YW5jZWRUaGVtZSwgcmF0aW5nVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3Qgc2VsZWN0VGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIGJhc2U6IFwiZmxleFwiLFxuICBhZGRvbjogXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1sLW1kIGJvcmRlciBib3JkZXItci0wIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTIwMCBweC0zIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNjAwIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICBmaWVsZDoge1xuICAgIGJhc2U6IFwicmVsYXRpdmUgdy1mdWxsXCIsXG4gICAgaWNvbjoge1xuICAgICAgYmFzZTogXCJwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIGluc2V0LXktMCBsZWZ0LTAgZmxleCBpdGVtcy1jZW50ZXIgcGwtM1wiLFxuICAgICAgc3ZnOiBcImgtNSB3LTUgdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIlxuICAgIH0sXG4gICAgc2VsZWN0OiB7XG4gICAgICBiYXNlOiBcImJsb2NrIHctZnVsbCBib3JkZXIgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTBcIixcbiAgICAgIHdpdGhJY29uOiB7XG4gICAgICAgIG9uOiBcInBsLTEwXCIsXG4gICAgICAgIG9mZjogXCJcIlxuICAgICAgfSxcbiAgICAgIHdpdGhBZGRvbjoge1xuICAgICAgICBvbjogXCJyb3VuZGVkLXItbGdcIixcbiAgICAgICAgb2ZmOiBcInJvdW5kZWQtbGdcIlxuICAgICAgfSxcbiAgICAgIHdpdGhTaGFkb3c6IHtcbiAgICAgICAgb246IFwic2hhZG93LXNtIGRhcms6c2hhZG93LXNtLWxpZ2h0XCIsXG4gICAgICAgIG9mZjogXCJcIlxuICAgICAgfSxcbiAgICAgIHNpemVzOiB7XG4gICAgICAgIHNtOiBcInAtMiBzbTp0ZXh0LXhzXCIsXG4gICAgICAgIG1kOiBcInAtMi41IHRleHQtc21cIixcbiAgICAgICAgbGc6IFwicC00IHNtOnRleHQtYmFzZVwiXG4gICAgICB9LFxuICAgICAgY29sb3JzOiB7XG4gICAgICAgIGdyYXk6IFwiYm9yZGVyLWdyYXktMzAwIGJnLWdyYXktNTAgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItY3lhbi01MDAgZm9jdXM6cmluZy1jeWFuLTUwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOnBsYWNlaG9sZGVyLWdyYXktNDAwIGRhcms6Zm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGRhcms6Zm9jdXM6cmluZy1jeWFuLTUwMFwiLFxuICAgICAgICBpbmZvOiBcImJvcmRlci1jeWFuLTUwMCBiZy1jeWFuLTUwIHRleHQtY3lhbi05MDAgcGxhY2Vob2xkZXItY3lhbi03MDAgZm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGZvY3VzOnJpbmctY3lhbi01MDAgZGFyazpib3JkZXItY3lhbi00MDAgZGFyazpiZy1jeWFuLTEwMCBkYXJrOmZvY3VzOmJvcmRlci1jeWFuLTUwMCBkYXJrOmZvY3VzOnJpbmctY3lhbi01MDBcIixcbiAgICAgICAgZmFpbHVyZTogXCJib3JkZXItcmVkLTUwMCBiZy1yZWQtNTAgdGV4dC1yZWQtOTAwIHBsYWNlaG9sZGVyLXJlZC03MDAgZm9jdXM6Ym9yZGVyLXJlZC01MDAgZm9jdXM6cmluZy1yZWQtNTAwIGRhcms6Ym9yZGVyLXJlZC00MDAgZGFyazpiZy1yZWQtMTAwIGRhcms6Zm9jdXM6Ym9yZGVyLXJlZC01MDAgZGFyazpmb2N1czpyaW5nLXJlZC01MDBcIixcbiAgICAgICAgd2FybmluZzogXCJib3JkZXIteWVsbG93LTUwMCBiZy15ZWxsb3ctNTAgdGV4dC15ZWxsb3ctOTAwIHBsYWNlaG9sZGVyLXllbGxvdy03MDAgZm9jdXM6Ym9yZGVyLXllbGxvdy01MDAgZm9jdXM6cmluZy15ZWxsb3ctNTAwIGRhcms6Ym9yZGVyLXllbGxvdy00MDAgZGFyazpiZy15ZWxsb3ctMTAwIGRhcms6Zm9jdXM6Ym9yZGVyLXllbGxvdy01MDAgZGFyazpmb2N1czpyaW5nLXllbGxvdy01MDBcIixcbiAgICAgICAgc3VjY2VzczogXCJib3JkZXItZ3JlZW4tNTAwIGJnLWdyZWVuLTUwIHRleHQtZ3JlZW4tOTAwIHBsYWNlaG9sZGVyLWdyZWVuLTcwMCBmb2N1czpib3JkZXItZ3JlZW4tNTAwIGZvY3VzOnJpbmctZ3JlZW4tNTAwIGRhcms6Ym9yZGVyLWdyZWVuLTQwMCBkYXJrOmJnLWdyZWVuLTEwMCBkYXJrOmZvY3VzOmJvcmRlci1ncmVlbi01MDAgZGFyazpmb2N1czpyaW5nLWdyZWVuLTUwMFwiXG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcblxuZXhwb3J0IHsgc2VsZWN0VGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3Qgc2lkZWJhclRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJoLWZ1bGxcIixcbiAgICBjb2xsYXBzZWQ6IHtcbiAgICAgIG9uOiBcInctMTZcIixcbiAgICAgIG9mZjogXCJ3LTY0XCJcbiAgICB9LFxuICAgIGlubmVyOiBcImgtZnVsbCBvdmVyZmxvdy15LWF1dG8gb3ZlcmZsb3cteC1oaWRkZW4gcm91bmRlZCBiZy1ncmF5LTUwIHB4LTMgcHktNCBkYXJrOmJnLWdyYXktODAwXCJcbiAgfSxcbiAgY29sbGFwc2U6IHtcbiAgICBidXR0b246IFwiZ3JvdXAgZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIHJvdW5kZWQtbGcgcC0yIHRleHQtYmFzZSBmb250LW5vcm1hbCB0ZXh0LWdyYXktOTAwIHRyYW5zaXRpb24gZHVyYXRpb24tNzUgaG92ZXI6YmctZ3JheS0xMDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS03MDBcIixcbiAgICBpY29uOiB7XG4gICAgICBiYXNlOiBcImgtNiB3LTYgdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uIGR1cmF0aW9uLTc1IGdyb3VwLWhvdmVyOnRleHQtZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktNDAwIGRhcms6Z3JvdXAtaG92ZXI6dGV4dC13aGl0ZVwiLFxuICAgICAgb3Blbjoge1xuICAgICAgICBvZmY6IFwiXCIsXG4gICAgICAgIG9uOiBcInRleHQtZ3JheS05MDBcIlxuICAgICAgfVxuICAgIH0sXG4gICAgbGFiZWw6IHtcbiAgICAgIGJhc2U6IFwibWwtMyBmbGV4LTEgd2hpdGVzcGFjZS1ub3dyYXAgdGV4dC1sZWZ0XCIsXG4gICAgICBpY29uOiB7XG4gICAgICAgIGJhc2U6IFwiaC02IHctNiB0cmFuc2l0aW9uIGRlbGF5LTAgZWFzZS1pbi1vdXRcIixcbiAgICAgICAgb3Blbjoge1xuICAgICAgICAgIG9uOiBcInJvdGF0ZS0xODBcIixcbiAgICAgICAgICBvZmY6IFwiXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgbGlzdDogXCJzcGFjZS15LTIgcHktMlwiXG4gIH0sXG4gIGN0YToge1xuICAgIGJhc2U6IFwibXQtNiByb3VuZGVkLWxnIGJnLWdyYXktMTAwIHAtNCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgY29sb3I6IHtcbiAgICAgIGJsdWU6IFwiYmctY3lhbi01MCBkYXJrOmJnLWN5YW4tOTAwXCIsXG4gICAgICBkYXJrOiBcImJnLWRhcmstNTAgZGFyazpiZy1kYXJrLTkwMFwiLFxuICAgICAgZmFpbHVyZTogXCJiZy1yZWQtNTAgZGFyazpiZy1yZWQtOTAwXCIsXG4gICAgICBncmF5OiBcImJnLWFsdGVybmF0aXZlLTUwIGRhcms6YmctYWx0ZXJuYXRpdmUtOTAwXCIsXG4gICAgICBncmVlbjogXCJiZy1ncmVlbi01MCBkYXJrOmJnLWdyZWVuLTkwMFwiLFxuICAgICAgbGlnaHQ6IFwiYmctbGlnaHQtNTAgZGFyazpiZy1saWdodC05MDBcIixcbiAgICAgIHJlZDogXCJiZy1yZWQtNTAgZGFyazpiZy1yZWQtOTAwXCIsXG4gICAgICBwdXJwbGU6IFwiYmctcHVycGxlLTUwIGRhcms6YmctcHVycGxlLTkwMFwiLFxuICAgICAgc3VjY2VzczogXCJiZy1ncmVlbi01MCBkYXJrOmJnLWdyZWVuLTkwMFwiLFxuICAgICAgeWVsbG93OiBcImJnLXllbGxvdy01MCBkYXJrOmJnLXllbGxvdy05MDBcIixcbiAgICAgIHdhcm5pbmc6IFwiYmcteWVsbG93LTUwIGRhcms6YmcteWVsbG93LTkwMFwiXG4gICAgfVxuICB9LFxuICBpdGVtOiB7XG4gICAgYmFzZTogXCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIHAtMiB0ZXh0LWJhc2UgZm9udC1ub3JtYWwgdGV4dC1ncmF5LTkwMCBob3ZlcjpiZy1ncmF5LTEwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1ncmF5LTcwMFwiLFxuICAgIGFjdGl2ZTogXCJiZy1ncmF5LTEwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgY29sbGFwc2VkOiB7XG4gICAgICBpbnNpZGVDb2xsYXBzZTogXCJncm91cCB3LWZ1bGwgcGwtOCB0cmFuc2l0aW9uIGR1cmF0aW9uLTc1XCIsXG4gICAgICBub0ljb246IFwiZm9udC1ib2xkXCJcbiAgICB9LFxuICAgIGNvbnRlbnQ6IHtcbiAgICAgIGJhc2U6IFwiZmxleC0xIHdoaXRlc3BhY2Utbm93cmFwIHB4LTNcIlxuICAgIH0sXG4gICAgaWNvbjoge1xuICAgICAgYmFzZTogXCJoLTYgdy02IGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uIGR1cmF0aW9uLTc1IGdyb3VwLWhvdmVyOnRleHQtZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktNDAwIGRhcms6Z3JvdXAtaG92ZXI6dGV4dC13aGl0ZVwiLFxuICAgICAgYWN0aXZlOiBcInRleHQtZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktMTAwXCJcbiAgICB9LFxuICAgIGxhYmVsOiBcIlwiLFxuICAgIGxpc3RJdGVtOiBcIlwiXG4gIH0sXG4gIGl0ZW1zOiB7XG4gICAgYmFzZTogXCJcIlxuICB9LFxuICBpdGVtR3JvdXA6IHtcbiAgICBiYXNlOiBcIm10LTQgc3BhY2UteS0yIGJvcmRlci10IGJvcmRlci1ncmF5LTIwMCBwdC00IGZpcnN0Om10LTAgZmlyc3Q6Ym9yZGVyLXQtMCBmaXJzdDpwdC0wIGRhcms6Ym9yZGVyLWdyYXktNzAwXCJcbiAgfSxcbiAgbG9nbzoge1xuICAgIGJhc2U6IFwibWItNSBmbGV4IGl0ZW1zLWNlbnRlciBwbC0yLjVcIixcbiAgICBjb2xsYXBzZWQ6IHtcbiAgICAgIG9uOiBcImhpZGRlblwiLFxuICAgICAgb2ZmOiBcInNlbGYtY2VudGVyIHdoaXRlc3BhY2Utbm93cmFwIHRleHQteGwgZm9udC1zZW1pYm9sZCBkYXJrOnRleHQtd2hpdGVcIlxuICAgIH0sXG4gICAgaW1nOiBcIm1yLTMgaC02IHNtOmgtN1wiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBzaWRlYmFyVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3Qgc3Bpbm5lclRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBiYXNlOiBcImlubGluZSBhbmltYXRlLXNwaW4gdGV4dC1ncmF5LTIwMFwiLFxuICBjb2xvcjoge1xuICAgIGZhaWx1cmU6IFwiZmlsbC1yZWQtNjAwXCIsXG4gICAgZ3JheTogXCJmaWxsLWdyYXktNjAwXCIsXG4gICAgaW5mbzogXCJmaWxsLWN5YW4tNjAwXCIsXG4gICAgcGluazogXCJmaWxsLXBpbmstNjAwXCIsXG4gICAgcHVycGxlOiBcImZpbGwtcHVycGxlLTYwMFwiLFxuICAgIHN1Y2Nlc3M6IFwiZmlsbC1ncmVlbi01MDBcIixcbiAgICB3YXJuaW5nOiBcImZpbGwteWVsbG93LTQwMFwiXG4gIH0sXG4gIGxpZ2h0OiB7XG4gICAgb2ZmOiB7XG4gICAgICBiYXNlOiBcImRhcms6dGV4dC1ncmF5LTYwMFwiLFxuICAgICAgY29sb3I6IHtcbiAgICAgICAgZmFpbHVyZTogXCJcIixcbiAgICAgICAgZ3JheTogXCJkYXJrOmZpbGwtZ3JheS0zMDBcIixcbiAgICAgICAgaW5mbzogXCJcIixcbiAgICAgICAgcGluazogXCJcIixcbiAgICAgICAgcHVycGxlOiBcIlwiLFxuICAgICAgICBzdWNjZXNzOiBcIlwiLFxuICAgICAgICB3YXJuaW5nOiBcIlwiXG4gICAgICB9XG4gICAgfSxcbiAgICBvbjoge1xuICAgICAgYmFzZTogXCJcIixcbiAgICAgIGNvbG9yOiB7XG4gICAgICAgIGZhaWx1cmU6IFwiXCIsXG4gICAgICAgIGdyYXk6IFwiXCIsXG4gICAgICAgIGluZm86IFwiXCIsXG4gICAgICAgIHBpbms6IFwiXCIsXG4gICAgICAgIHB1cnBsZTogXCJcIixcbiAgICAgICAgc3VjY2VzczogXCJcIixcbiAgICAgICAgd2FybmluZzogXCJcIlxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgc2l6ZToge1xuICAgIHhzOiBcImgtMyB3LTNcIixcbiAgICBzbTogXCJoLTQgdy00XCIsXG4gICAgbWQ6IFwiaC02IHctNlwiLFxuICAgIGxnOiBcImgtOCB3LThcIixcbiAgICB4bDogXCJoLTEwIHctMTBcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgc3Bpbm5lclRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IHRhYmxlVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcInctZnVsbCB0ZXh0LWxlZnQgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICAgIHNoYWRvdzogXCJhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgLXotMTAgaC1mdWxsIHctZnVsbCByb3VuZGVkLWxnIGJnLXdoaXRlIGRyb3Atc2hhZG93LW1kIGRhcms6YmctYmxhY2tcIixcbiAgICB3cmFwcGVyOiBcInJlbGF0aXZlXCJcbiAgfSxcbiAgYm9keToge1xuICAgIGJhc2U6IFwiZ3JvdXAvYm9keVwiLFxuICAgIGNlbGw6IHtcbiAgICAgIGJhc2U6IFwicHgtNiBweS00IGdyb3VwLWZpcnN0L2JvZHk6Z3JvdXAtZmlyc3Qvcm93OmZpcnN0OnJvdW5kZWQtdGwtbGcgZ3JvdXAtZmlyc3QvYm9keTpncm91cC1maXJzdC9yb3c6bGFzdDpyb3VuZGVkLXRyLWxnIGdyb3VwLWxhc3QvYm9keTpncm91cC1sYXN0L3JvdzpmaXJzdDpyb3VuZGVkLWJsLWxnIGdyb3VwLWxhc3QvYm9keTpncm91cC1sYXN0L3JvdzpsYXN0OnJvdW5kZWQtYnItbGdcIlxuICAgIH1cbiAgfSxcbiAgaGVhZDoge1xuICAgIGJhc2U6IFwiZ3JvdXAvaGVhZCB0ZXh0LXhzIHVwcGVyY2FzZSB0ZXh0LWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICAgIGNlbGw6IHtcbiAgICAgIGJhc2U6IFwiYmctZ3JheS01MCBweC02IHB5LTMgZ3JvdXAtZmlyc3QvaGVhZDpmaXJzdDpyb3VuZGVkLXRsLWxnIGdyb3VwLWZpcnN0L2hlYWQ6bGFzdDpyb3VuZGVkLXRyLWxnIGRhcms6YmctZ3JheS03MDBcIlxuICAgIH1cbiAgfSxcbiAgcm93OiB7XG4gICAgYmFzZTogXCJncm91cC9yb3dcIixcbiAgICBob3ZlcmVkOiBcImhvdmVyOmJnLWdyYXktNTAgZGFyazpob3ZlcjpiZy1ncmF5LTYwMFwiLFxuICAgIHN0cmlwZWQ6IFwib2RkOmJnLXdoaXRlIGV2ZW46YmctZ3JheS01MCBvZGQ6ZGFyazpiZy1ncmF5LTgwMCBldmVuOmRhcms6YmctZ3JheS03MDBcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgdGFibGVUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCB0YWJUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgYmFzZTogXCJmbGV4IGZsZXgtY29sIGdhcC0yXCIsXG4gIHRhYmxpc3Q6IHtcbiAgICBiYXNlOiBcImZsZXggdGV4dC1jZW50ZXJcIixcbiAgICB2YXJpYW50OiB7XG4gICAgICBkZWZhdWx0OiBcImZsZXgtd3JhcCBib3JkZXItYiBib3JkZXItZ3JheS0yMDAgZGFyazpib3JkZXItZ3JheS03MDBcIixcbiAgICAgIHVuZGVybGluZTogXCItbWItcHggZmxleC13cmFwIGJvcmRlci1iIGJvcmRlci1ncmF5LTIwMCBkYXJrOmJvcmRlci1ncmF5LTcwMFwiLFxuICAgICAgcGlsbHM6IFwiZmxleC13cmFwIHNwYWNlLXgtMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCIsXG4gICAgICBmdWxsV2lkdGg6IFwiZ3JpZCB3LWZ1bGwgZ3JpZC1mbG93LWNvbCBkaXZpZGUteCBkaXZpZGUtZ3JheS0yMDAgcm91bmRlZC1ub25lIHRleHQtc20gZm9udC1tZWRpdW0gc2hhZG93IGRhcms6ZGl2aWRlLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTQwMFwiXG4gICAgfSxcbiAgICB0YWJpdGVtOiB7XG4gICAgICBiYXNlOiBcImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtdC1sZyBwLTQgdGV4dC1zbSBmb250LW1lZGl1bSBmaXJzdDptbC0wIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1jeWFuLTMwMCBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6dGV4dC1ncmF5LTQwMCBkaXNhYmxlZDpkYXJrOnRleHQtZ3JheS01MDBcIixcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGJhc2U6IFwicm91bmRlZC10LWxnXCIsXG4gICAgICAgICAgYWN0aXZlOiB7XG4gICAgICAgICAgICBvbjogXCJiZy1ncmF5LTEwMCB0ZXh0LWN5YW4tNjAwIGRhcms6YmctZ3JheS04MDAgZGFyazp0ZXh0LWN5YW4tNTAwXCIsXG4gICAgICAgICAgICBvZmY6IFwidGV4dC1ncmF5LTUwMCBob3ZlcjpiZy1ncmF5LTUwIGhvdmVyOnRleHQtZ3JheS02MDAgZGFyazp0ZXh0LWdyYXktNDAwIGRhcms6aG92ZXI6YmctZ3JheS04MDAgZGFyazpob3Zlcjp0ZXh0LWdyYXktMzAwXCJcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHVuZGVybGluZToge1xuICAgICAgICAgIGJhc2U6IFwicm91bmRlZC10LWxnXCIsXG4gICAgICAgICAgYWN0aXZlOiB7XG4gICAgICAgICAgICBvbjogXCJhY3RpdmUgcm91bmRlZC10LWxnIGJvcmRlci1iLTIgYm9yZGVyLWN5YW4tNjAwIHRleHQtY3lhbi02MDAgZGFyazpib3JkZXItY3lhbi01MDAgZGFyazp0ZXh0LWN5YW4tNTAwXCIsXG4gICAgICAgICAgICBvZmY6IFwiYm9yZGVyLWItMiBib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1ncmF5LTUwMCBob3Zlcjpib3JkZXItZ3JheS0zMDAgaG92ZXI6dGV4dC1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpob3Zlcjp0ZXh0LWdyYXktMzAwXCJcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHBpbGxzOiB7XG4gICAgICAgICAgYmFzZTogXCJcIixcbiAgICAgICAgICBhY3RpdmU6IHtcbiAgICAgICAgICAgIG9uOiBcInJvdW5kZWQtbGcgYmctY3lhbi02MDAgdGV4dC13aGl0ZVwiLFxuICAgICAgICAgICAgb2ZmOiBcInJvdW5kZWQtbGcgaG92ZXI6YmctZ3JheS0xMDAgaG92ZXI6dGV4dC1ncmF5LTkwMCBkYXJrOmhvdmVyOmJnLWdyYXktODAwIGRhcms6aG92ZXI6dGV4dC13aGl0ZVwiXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBmdWxsV2lkdGg6IHtcbiAgICAgICAgICBiYXNlOiBcIm1sLTAgZmxleCB3LWZ1bGwgcm91bmRlZC1ub25lIGZpcnN0Om1sLTBcIixcbiAgICAgICAgICBhY3RpdmU6IHtcbiAgICAgICAgICAgIG9uOiBcImFjdGl2ZSByb3VuZGVkLW5vbmUgYmctZ3JheS0xMDAgcC00IHRleHQtZ3JheS05MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGVcIixcbiAgICAgICAgICAgIG9mZjogXCJyb3VuZGVkLW5vbmUgYmctd2hpdGUgaG92ZXI6YmctZ3JheS01MCBob3Zlcjp0ZXh0LWdyYXktNzAwIGRhcms6YmctZ3JheS04MDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGVcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGljb246IFwibXItMiBoLTUgdy01XCJcbiAgICB9XG4gIH0sXG4gIHRhYml0ZW1jb250YWluZXI6IHtcbiAgICBiYXNlOiBcIlwiLFxuICAgIHZhcmlhbnQ6IHtcbiAgICAgIGRlZmF1bHQ6IFwiXCIsXG4gICAgICB1bmRlcmxpbmU6IFwiXCIsXG4gICAgICBwaWxsczogXCJcIixcbiAgICAgIGZ1bGxXaWR0aDogXCJcIlxuICAgIH1cbiAgfSxcbiAgdGFicGFuZWw6IFwicHktM1wiXG59KTtcblxuZXhwb3J0IHsgdGFiVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgdGV4dGFyZWFUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgYmFzZTogXCJibG9jayB3LWZ1bGwgcm91bmRlZC1sZyBib3JkZXIgdGV4dC1zbSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MFwiLFxuICBjb2xvcnM6IHtcbiAgICBncmF5OiBcImJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTUwIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGZvY3VzOnJpbmctY3lhbi01MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpwbGFjZWhvbGRlci1ncmF5LTQwMCBkYXJrOmZvY3VzOmJvcmRlci1jeWFuLTUwMCBkYXJrOmZvY3VzOnJpbmctY3lhbi01MDBcIixcbiAgICBpbmZvOiBcImJvcmRlci1jeWFuLTUwMCBiZy1jeWFuLTUwIHRleHQtY3lhbi05MDAgcGxhY2Vob2xkZXItY3lhbi03MDAgZm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGZvY3VzOnJpbmctY3lhbi01MDAgZGFyazpib3JkZXItY3lhbi00MDAgZGFyazpiZy1jeWFuLTEwMCBkYXJrOmZvY3VzOmJvcmRlci1jeWFuLTUwMCBkYXJrOmZvY3VzOnJpbmctY3lhbi01MDBcIixcbiAgICBmYWlsdXJlOiBcImJvcmRlci1yZWQtNTAwIGJnLXJlZC01MCB0ZXh0LXJlZC05MDAgcGxhY2Vob2xkZXItcmVkLTcwMCBmb2N1czpib3JkZXItcmVkLTUwMCBmb2N1czpyaW5nLXJlZC01MDAgZGFyazpib3JkZXItcmVkLTQwMCBkYXJrOmJnLXJlZC0xMDAgZGFyazpmb2N1czpib3JkZXItcmVkLTUwMCBkYXJrOmZvY3VzOnJpbmctcmVkLTUwMFwiLFxuICAgIHdhcm5pbmc6IFwiYm9yZGVyLXllbGxvdy01MDAgYmcteWVsbG93LTUwIHRleHQteWVsbG93LTkwMCBwbGFjZWhvbGRlci15ZWxsb3ctNzAwIGZvY3VzOmJvcmRlci15ZWxsb3ctNTAwIGZvY3VzOnJpbmcteWVsbG93LTUwMCBkYXJrOmJvcmRlci15ZWxsb3ctNDAwIGRhcms6YmcteWVsbG93LTEwMCBkYXJrOmZvY3VzOmJvcmRlci15ZWxsb3ctNTAwIGRhcms6Zm9jdXM6cmluZy15ZWxsb3ctNTAwXCIsXG4gICAgc3VjY2VzczogXCJib3JkZXItZ3JlZW4tNTAwIGJnLWdyZWVuLTUwIHRleHQtZ3JlZW4tOTAwIHBsYWNlaG9sZGVyLWdyZWVuLTcwMCBmb2N1czpib3JkZXItZ3JlZW4tNTAwIGZvY3VzOnJpbmctZ3JlZW4tNTAwIGRhcms6Ym9yZGVyLWdyZWVuLTQwMCBkYXJrOmJnLWdyZWVuLTEwMCBkYXJrOmZvY3VzOmJvcmRlci1ncmVlbi01MDAgZGFyazpmb2N1czpyaW5nLWdyZWVuLTUwMFwiXG4gIH0sXG4gIHdpdGhTaGFkb3c6IHtcbiAgICBvbjogXCJzaGFkb3ctc20gZGFyazpzaGFkb3ctc20tbGlnaHRcIixcbiAgICBvZmY6IFwiXCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IHRleHRhcmVhVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgdGV4dElucHV0VGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIGJhc2U6IFwiZmxleFwiLFxuICBhZGRvbjogXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1sLW1kIGJvcmRlciBib3JkZXItci0wIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTIwMCBweC0zIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNjAwIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICBmaWVsZDoge1xuICAgIGJhc2U6IFwicmVsYXRpdmUgdy1mdWxsXCIsXG4gICAgaWNvbjoge1xuICAgICAgYmFzZTogXCJwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIGluc2V0LXktMCBsZWZ0LTAgZmxleCBpdGVtcy1jZW50ZXIgcGwtM1wiLFxuICAgICAgc3ZnOiBcImgtNSB3LTUgdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIlxuICAgIH0sXG4gICAgcmlnaHRJY29uOiB7XG4gICAgICBiYXNlOiBcInBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgaW5zZXQteS0wIHJpZ2h0LTAgZmxleCBpdGVtcy1jZW50ZXIgcHItM1wiLFxuICAgICAgc3ZnOiBcImgtNSB3LTUgdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIlxuICAgIH0sXG4gICAgaW5wdXQ6IHtcbiAgICAgIGJhc2U6IFwiYmxvY2sgdy1mdWxsIGJvcmRlciBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MFwiLFxuICAgICAgc2l6ZXM6IHtcbiAgICAgICAgc206IFwicC0yIHNtOnRleHQteHNcIixcbiAgICAgICAgbWQ6IFwicC0yLjUgdGV4dC1zbVwiLFxuICAgICAgICBsZzogXCJwLTQgc206dGV4dC1iYXNlXCJcbiAgICAgIH0sXG4gICAgICBjb2xvcnM6IHtcbiAgICAgICAgZ3JheTogXCJib3JkZXItZ3JheS0zMDAgYmctZ3JheS01MCB0ZXh0LWdyYXktOTAwIGZvY3VzOmJvcmRlci1jeWFuLTUwMCBmb2N1czpyaW5nLWN5YW4tNTAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6cGxhY2Vob2xkZXItZ3JheS00MDAgZGFyazpmb2N1czpib3JkZXItY3lhbi01MDAgZGFyazpmb2N1czpyaW5nLWN5YW4tNTAwXCIsXG4gICAgICAgIGluZm86IFwiYm9yZGVyLWN5YW4tNTAwIGJnLWN5YW4tNTAgdGV4dC1jeWFuLTkwMCBwbGFjZWhvbGRlci1jeWFuLTcwMCBmb2N1czpib3JkZXItY3lhbi01MDAgZm9jdXM6cmluZy1jeWFuLTUwMCBkYXJrOmJvcmRlci1jeWFuLTQwMCBkYXJrOmJnLWN5YW4tMTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGRhcms6Zm9jdXM6cmluZy1jeWFuLTUwMFwiLFxuICAgICAgICBmYWlsdXJlOiBcImJvcmRlci1yZWQtNTAwIGJnLXJlZC01MCB0ZXh0LXJlZC05MDAgcGxhY2Vob2xkZXItcmVkLTcwMCBmb2N1czpib3JkZXItcmVkLTUwMCBmb2N1czpyaW5nLXJlZC01MDAgZGFyazpib3JkZXItcmVkLTQwMCBkYXJrOmJnLXJlZC0xMDAgZGFyazpmb2N1czpib3JkZXItcmVkLTUwMCBkYXJrOmZvY3VzOnJpbmctcmVkLTUwMFwiLFxuICAgICAgICB3YXJuaW5nOiBcImJvcmRlci15ZWxsb3ctNTAwIGJnLXllbGxvdy01MCB0ZXh0LXllbGxvdy05MDAgcGxhY2Vob2xkZXIteWVsbG93LTcwMCBmb2N1czpib3JkZXIteWVsbG93LTUwMCBmb2N1czpyaW5nLXllbGxvdy01MDAgZGFyazpib3JkZXIteWVsbG93LTQwMCBkYXJrOmJnLXllbGxvdy0xMDAgZGFyazpmb2N1czpib3JkZXIteWVsbG93LTUwMCBkYXJrOmZvY3VzOnJpbmcteWVsbG93LTUwMFwiLFxuICAgICAgICBzdWNjZXNzOiBcImJvcmRlci1ncmVlbi01MDAgYmctZ3JlZW4tNTAgdGV4dC1ncmVlbi05MDAgcGxhY2Vob2xkZXItZ3JlZW4tNzAwIGZvY3VzOmJvcmRlci1ncmVlbi01MDAgZm9jdXM6cmluZy1ncmVlbi01MDAgZGFyazpib3JkZXItZ3JlZW4tNDAwIGRhcms6YmctZ3JlZW4tMTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWdyZWVuLTUwMCBkYXJrOmZvY3VzOnJpbmctZ3JlZW4tNTAwXCJcbiAgICAgIH0sXG4gICAgICB3aXRoUmlnaHRJY29uOiB7XG4gICAgICAgIG9uOiBcInByLTEwXCIsXG4gICAgICAgIG9mZjogXCJcIlxuICAgICAgfSxcbiAgICAgIHdpdGhJY29uOiB7XG4gICAgICAgIG9uOiBcInBsLTEwXCIsXG4gICAgICAgIG9mZjogXCJcIlxuICAgICAgfSxcbiAgICAgIHdpdGhBZGRvbjoge1xuICAgICAgICBvbjogXCJyb3VuZGVkLXItbGdcIixcbiAgICAgICAgb2ZmOiBcInJvdW5kZWQtbGdcIlxuICAgICAgfSxcbiAgICAgIHdpdGhTaGFkb3c6IHtcbiAgICAgICAgb246IFwic2hhZG93LXNtIGRhcms6c2hhZG93LXNtLWxpZ2h0XCIsXG4gICAgICAgIG9mZjogXCJcIlxuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IHRleHRJbnB1dFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IHRpbWVsaW5lVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBkaXJlY3Rpb246IHtcbiAgICAgIGhvcml6b250YWw6IFwic206ZmxleFwiLFxuICAgICAgdmVydGljYWw6IFwicmVsYXRpdmUgYm9yZGVyLWwgYm9yZGVyLWdyYXktMjAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCJcbiAgICB9XG4gIH0sXG4gIGl0ZW06IHtcbiAgICByb290OiB7XG4gICAgICBob3Jpem9udGFsOiBcInJlbGF0aXZlIG1iLTYgc206bWItMFwiLFxuICAgICAgdmVydGljYWw6IFwibWItMTAgbWwtNlwiXG4gICAgfSxcbiAgICBjb250ZW50OiB7XG4gICAgICByb290OiB7XG4gICAgICAgIGJhc2U6IFwiXCIsXG4gICAgICAgIGhvcml6b250YWw6IFwibXQtMyBzbTpwci04XCIsXG4gICAgICAgIHZlcnRpY2FsOiBcIlwiXG4gICAgICB9LFxuICAgICAgYm9keToge1xuICAgICAgICBiYXNlOiBcIm1iLTQgdGV4dC1iYXNlIGZvbnQtbm9ybWFsIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCJcbiAgICAgIH0sXG4gICAgICB0aW1lOiB7XG4gICAgICAgIGJhc2U6IFwibWItMSB0ZXh0LXNtIGZvbnQtbm9ybWFsIGxlYWRpbmctbm9uZSB0ZXh0LWdyYXktNDAwIGRhcms6dGV4dC1ncmF5LTUwMFwiXG4gICAgICB9LFxuICAgICAgdGl0bGU6IHtcbiAgICAgICAgYmFzZTogXCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGVcIlxuICAgICAgfVxuICAgIH0sXG4gICAgcG9pbnQ6IHtcbiAgICAgIGhvcml6b250YWw6IFwiZmxleCBpdGVtcy1jZW50ZXJcIixcbiAgICAgIGxpbmU6IFwiaGlkZGVuIGgtMC41IHctZnVsbCBiZy1ncmF5LTIwMCBkYXJrOmJnLWdyYXktNzAwIHNtOmZsZXhcIixcbiAgICAgIG1hcmtlcjoge1xuICAgICAgICBiYXNlOiB7XG4gICAgICAgICAgaG9yaXpvbnRhbDogXCJhYnNvbHV0ZSAtbGVmdC0xLjUgaC0zIHctMyByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci13aGl0ZSBiZy1ncmF5LTIwMCBkYXJrOmJvcmRlci1ncmF5LTkwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgICAgICAgdmVydGljYWw6IFwiYWJzb2x1dGUgLWxlZnQtMS41IG10LTEuNSBoLTMgdy0zIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLXdoaXRlIGJnLWdyYXktMjAwIGRhcms6Ym9yZGVyLWdyYXktOTAwIGRhcms6YmctZ3JheS03MDBcIlxuICAgICAgICB9LFxuICAgICAgICBpY29uOiB7XG4gICAgICAgICAgYmFzZTogXCJoLTMgdy0zIHRleHQtY3lhbi02MDAgZGFyazp0ZXh0LWN5YW4tMzAwXCIsXG4gICAgICAgICAgd3JhcHBlcjogXCJhYnNvbHV0ZSAtbGVmdC0zIGZsZXggaC02IHctNiBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIGJnLWN5YW4tMjAwIHJpbmctOCByaW5nLXdoaXRlIGRhcms6YmctY3lhbi05MDAgZGFyazpyaW5nLWdyYXktOTAwXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHZlcnRpY2FsOiBcIlwiXG4gICAgfVxuICB9XG59KTtcblxuZXhwb3J0IHsgdGltZWxpbmVUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCB0b2FzdFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJmbGV4IHctZnVsbCBtYXgtdy14cyBpdGVtcy1jZW50ZXIgcm91bmRlZC1sZyBiZy13aGl0ZSBwLTQgdGV4dC1ncmF5LTUwMCBzaGFkb3cgZGFyazpiZy1ncmF5LTgwMCBkYXJrOnRleHQtZ3JheS00MDBcIixcbiAgICBjbG9zZWQ6IFwib3BhY2l0eS0wIGVhc2Utb3V0XCJcbiAgfSxcbiAgdG9nZ2xlOiB7XG4gICAgYmFzZTogXCItbS0xLjUgbWwtYXV0byBpbmxpbmUtZmxleCBoLTggdy04IHJvdW5kZWQtbGcgYmctd2hpdGUgcC0xLjUgdGV4dC1ncmF5LTQwMCBob3ZlcjpiZy1ncmF5LTEwMCBob3Zlcjp0ZXh0LWdyYXktOTAwIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWdyYXktMzAwIGRhcms6YmctZ3JheS04MDAgZGFyazp0ZXh0LWdyYXktNTAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlXCIsXG4gICAgaWNvbjogXCJoLTUgdy01IHNocmluay0wXCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IHRvYXN0VGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgdG9nZ2xlU3dpdGNoVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImdyb3VwIGZsZXggcm91bmRlZC1sZyBmb2N1czpvdXRsaW5lLW5vbmVcIixcbiAgICBhY3RpdmU6IHtcbiAgICAgIG9uOiBcImN1cnNvci1wb2ludGVyXCIsXG4gICAgICBvZmY6IFwiY3Vyc29yLW5vdC1hbGxvd2VkIG9wYWNpdHktNTBcIlxuICAgIH0sXG4gICAgbGFiZWw6IFwibXMtMyBtdC0wLjUgdGV4dC1zdGFydCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktMzAwXCJcbiAgfSxcbiAgdG9nZ2xlOiB7XG4gICAgYmFzZTogXCJyZWxhdGl2ZSByb3VuZGVkLWZ1bGwgYm9yZGVyIGFmdGVyOmFic29sdXRlIGFmdGVyOnJvdW5kZWQtZnVsbCBhZnRlcjpiZy13aGl0ZSBhZnRlcjp0cmFuc2l0aW9uLWFsbCBncm91cC1mb2N1czpyaW5nLTQgZ3JvdXAtZm9jdXM6cmluZy1jeWFuLTUwMC8yNVwiLFxuICAgIGNoZWNrZWQ6IHtcbiAgICAgIG9uOiBcImFmdGVyOnRyYW5zbGF0ZS14LWZ1bGwgYWZ0ZXI6Ym9yZGVyLXdoaXRlIHJ0bDphZnRlcjotdHJhbnNsYXRlLXgtZnVsbFwiLFxuICAgICAgb2ZmOiBcImJvcmRlci1ncmF5LTIwMCBiZy1ncmF5LTIwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgICBjb2xvcjoge1xuICAgICAgICBibHVlOiBcImJvcmRlci1jeWFuLTcwMCBiZy1jeWFuLTcwMFwiLFxuICAgICAgICBkYXJrOiBcImJnLWRhcmstNzAwIGJvcmRlci1kYXJrLTkwMFwiLFxuICAgICAgICBmYWlsdXJlOiBcImJvcmRlci1yZWQtOTAwIGJnLXJlZC03MDBcIixcbiAgICAgICAgZ3JheTogXCJib3JkZXItZ3JheS02MDAgYmctZ3JheS01MDBcIixcbiAgICAgICAgZ3JlZW46IFwiYm9yZGVyLWdyZWVuLTcwMCBiZy1ncmVlbi02MDBcIixcbiAgICAgICAgbGlnaHQ6IFwiYmctbGlnaHQtNzAwIGJvcmRlci1saWdodC05MDBcIixcbiAgICAgICAgcmVkOiBcImJvcmRlci1yZWQtOTAwIGJnLXJlZC03MDBcIixcbiAgICAgICAgcHVycGxlOiBcImJvcmRlci1wdXJwbGUtOTAwIGJnLXB1cnBsZS03MDBcIixcbiAgICAgICAgc3VjY2VzczogXCJib3JkZXItZ3JlZW4tNTAwIGJnLWdyZWVuLTUwMFwiLFxuICAgICAgICB5ZWxsb3c6IFwiYm9yZGVyLXllbGxvdy00MDAgYmcteWVsbG93LTQwMFwiLFxuICAgICAgICB3YXJuaW5nOiBcImJvcmRlci15ZWxsb3ctNjAwIGJnLXllbGxvdy02MDBcIixcbiAgICAgICAgY3lhbjogXCJib3JkZXItY3lhbi01MDAgYmctY3lhbi01MDBcIixcbiAgICAgICAgbGltZTogXCJib3JkZXItbGltZS00MDAgYmctbGltZS00MDBcIixcbiAgICAgICAgaW5kaWdvOiBcImJvcmRlci1pbmRpZ28tNDAwIGJnLWluZGlnby00MDBcIixcbiAgICAgICAgdGVhbDogXCJiZy1ncmFkaWVudC10by1yIGZyb20tdGVhbC00MDAgdmlhLXRlYWwtNTAwIHRvLXRlYWwtNjAwIGhvdmVyOmJnLWdyYWRpZW50LXRvLWJyIGZvY3VzOnJpbmctNFwiLFxuICAgICAgICBpbmZvOiBcImJvcmRlci1jeWFuLTYwMCBiZy1jeWFuLTYwMFwiLFxuICAgICAgICBwaW5rOiBcImJvcmRlci1waW5rLTYwMCBiZy1waW5rLTYwMFwiXG4gICAgICB9XG4gICAgfSxcbiAgICBzaXplczoge1xuICAgICAgc206IFwiaC01IHctOSBtaW4tdy05IGFmdGVyOmxlZnQtcHggYWZ0ZXI6dG9wLXB4IGFmdGVyOmgtNCBhZnRlcjp3LTQgcnRsOmFmdGVyOnJpZ2h0LXB4XCIsXG4gICAgICBtZDogXCJoLTYgdy0xMSBtaW4tdy0xMSBhZnRlcjpsZWZ0LXB4IGFmdGVyOnRvcC1weCBhZnRlcjpoLTUgYWZ0ZXI6dy01IHJ0bDphZnRlcjpyaWdodC1weFwiLFxuICAgICAgbGc6IFwiaC03IHctMTQgbWluLXctMTQgYWZ0ZXI6bGVmdC0xIGFmdGVyOnRvcC0wLjUgYWZ0ZXI6aC02IGFmdGVyOnctNiBydGw6YWZ0ZXI6cmlnaHQtMVwiXG4gICAgfVxuICB9XG59KTtcblxuZXhwb3J0IHsgdG9nZ2xlU3dpdGNoVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgdG9vbHRpcFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICB0YXJnZXQ6IFwidy1maXRcIixcbiAgYW5pbWF0aW9uOiBcInRyYW5zaXRpb24tb3BhY2l0eVwiLFxuICBhcnJvdzoge1xuICAgIGJhc2U6IFwiYWJzb2x1dGUgei0xMCBoLTIgdy0yIHJvdGF0ZS00NVwiLFxuICAgIHN0eWxlOiB7XG4gICAgICBkYXJrOiBcImJnLWdyYXktOTAwIGRhcms6YmctZ3JheS03MDBcIixcbiAgICAgIGxpZ2h0OiBcImJnLXdoaXRlXCIsXG4gICAgICBhdXRvOiBcImJnLXdoaXRlIGRhcms6YmctZ3JheS03MDBcIlxuICAgIH0sXG4gICAgcGxhY2VtZW50OiBcIi00cHhcIlxuICB9LFxuICBiYXNlOiBcImFic29sdXRlIHotMTAgaW5saW5lLWJsb2NrIHJvdW5kZWQtbGcgcHgtMyBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gc2hhZG93LXNtXCIsXG4gIGhpZGRlbjogXCJpbnZpc2libGUgb3BhY2l0eS0wXCIsXG4gIHN0eWxlOiB7XG4gICAgZGFyazogXCJiZy1ncmF5LTkwMCB0ZXh0LXdoaXRlIGRhcms6YmctZ3JheS03MDBcIixcbiAgICBsaWdodDogXCJib3JkZXIgYm9yZGVyLWdyYXktMjAwIGJnLXdoaXRlIHRleHQtZ3JheS05MDBcIixcbiAgICBhdXRvOiBcImJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgdGV4dC1ncmF5LTkwMCBkYXJrOmJvcmRlci1ub25lIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LXdoaXRlXCJcbiAgfSxcbiAgY29udGVudDogXCJyZWxhdGl2ZSB6LTIwXCJcbn0pO1xuXG5leHBvcnQgeyB0b29sdGlwVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGFjY29yZGlvblRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0FjY29yZGlvbi90aGVtZS5tanMnO1xuaW1wb3J0IHsgYWxlcnRUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9BbGVydC90aGVtZS5tanMnO1xuaW1wb3J0IHsgYXZhdGFyVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvQXZhdGFyL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBiYWRnZVRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0JhZGdlL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBibG9ja3F1b3RlVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvQmxvY2txdW90ZS90aGVtZS5tanMnO1xuaW1wb3J0IHsgYnJlYWRjcnVtYlRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0JyZWFkY3J1bWIvdGhlbWUubWpzJztcbmltcG9ydCB7IGJ1dHRvblRoZW1lLCBidXR0b25Hcm91cFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0J1dHRvbi90aGVtZS5tanMnO1xuaW1wb3J0IHsgY2FyZFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0NhcmQvdGhlbWUubWpzJztcbmltcG9ydCB7IGNhcm91c2VsVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2Fyb3VzZWwvdGhlbWUubWpzJztcbmltcG9ydCB7IGNoZWNrYm94VGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2hlY2tib3gvdGhlbWUubWpzJztcbmltcG9ydCB7IGNsaXBib2FyZFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0NsaXBib2FyZC90aGVtZS5tanMnO1xuaW1wb3J0IHsgZGFya1RoZW1lVG9nZ2xlVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvRGFya1RoZW1lVG9nZ2xlL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBkYXRlUGlja2VyVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvRGF0ZXBpY2tlci90aGVtZS5tanMnO1xuaW1wb3J0IHsgZHJhd2VyVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvRHJhd2VyL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBkcm9wZG93blRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0Ryb3Bkb3duL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBmaWxlSW5wdXRUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9GaWxlSW5wdXQvdGhlbWUubWpzJztcbmltcG9ydCB7IGZsb2F0aW5nTGFiZWxUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9GbG9hdGluZ0xhYmVsL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBmb290ZXJUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9Gb290ZXIvdGhlbWUubWpzJztcbmltcG9ydCB7IGhlbHBlclRleHRUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9IZWxwZXJUZXh0L3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBoclRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0hSL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBrYmRUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9LYmQvdGhlbWUubWpzJztcbmltcG9ydCB7IGxhYmVsVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvTGFiZWwvdGhlbWUubWpzJztcbmltcG9ydCB7IGxpc3RUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9MaXN0L3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBsaXN0R3JvdXBUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9MaXN0R3JvdXAvdGhlbWUubWpzJztcbmltcG9ydCB7IG1lZ2FNZW51VGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvTWVnYU1lbnUvdGhlbWUubWpzJztcbmltcG9ydCB7IG1vZGFsVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvTW9kYWwvdGhlbWUubWpzJztcbmltcG9ydCB7IG5hdmJhclRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL05hdmJhci90aGVtZS5tanMnO1xuaW1wb3J0IHsgcGFnaW5hdGlvblRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1BhZ2luYXRpb24vdGhlbWUubWpzJztcbmltcG9ydCB7IHBvcG92ZXJUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9Qb3BvdmVyL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBwcm9ncmVzc1RoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1Byb2dyZXNzL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyByYWRpb1RoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1JhZGlvL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyByYW5nZVNsaWRlclRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1JhbmdlU2xpZGVyL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyByYXRpbmdUaGVtZSwgcmF0aW5nQWR2YW5jZWRUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9SYXRpbmcvdGhlbWUubWpzJztcbmltcG9ydCB7IHNlbGVjdFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1NlbGVjdC90aGVtZS5tanMnO1xuaW1wb3J0IHsgc2lkZWJhclRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1NpZGViYXIvdGhlbWUubWpzJztcbmltcG9ydCB7IHNwaW5uZXJUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9TcGlubmVyL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyB0YWJsZVRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1RhYmxlL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyB0YWJUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9UYWJzL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyB0ZXh0YXJlYVRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1RleHRhcmVhL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyB0ZXh0SW5wdXRUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9UZXh0SW5wdXQvdGhlbWUubWpzJztcbmltcG9ydCB7IHRpbWVsaW5lVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvVGltZWxpbmUvdGhlbWUubWpzJztcbmltcG9ydCB7IHRvYXN0VGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvVG9hc3QvdGhlbWUubWpzJztcbmltcG9ydCB7IHRvZ2dsZVN3aXRjaFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1RvZ2dsZVN3aXRjaC90aGVtZS5tanMnO1xuaW1wb3J0IHsgdG9vbHRpcFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1Rvb2x0aXAvdGhlbWUubWpzJztcblxuY29uc3QgdGhlbWUgPSB7XG4gIGFjY29yZGlvbjogYWNjb3JkaW9uVGhlbWUsXG4gIGFsZXJ0OiBhbGVydFRoZW1lLFxuICBhdmF0YXI6IGF2YXRhclRoZW1lLFxuICBiYWRnZTogYmFkZ2VUaGVtZSxcbiAgYmxvY2txdW90ZTogYmxvY2txdW90ZVRoZW1lLFxuICBicmVhZGNydW1iOiBicmVhZGNydW1iVGhlbWUsXG4gIGJ1dHRvbjogYnV0dG9uVGhlbWUsXG4gIGJ1dHRvbkdyb3VwOiBidXR0b25Hcm91cFRoZW1lLFxuICBjYXJkOiBjYXJkVGhlbWUsXG4gIGNhcm91c2VsOiBjYXJvdXNlbFRoZW1lLFxuICBjaGVja2JveDogY2hlY2tib3hUaGVtZSxcbiAgY2xpcGJvYXJkOiBjbGlwYm9hcmRUaGVtZSxcbiAgZGF0ZXBpY2tlcjogZGF0ZVBpY2tlclRoZW1lLFxuICBkYXJrVGhlbWVUb2dnbGU6IGRhcmtUaGVtZVRvZ2dsZVRoZW1lLFxuICBkcmF3ZXI6IGRyYXdlclRoZW1lLFxuICBkcm9wZG93bjogZHJvcGRvd25UaGVtZSxcbiAgZmlsZUlucHV0OiBmaWxlSW5wdXRUaGVtZSxcbiAgZmxvYXRpbmdMYWJlbDogZmxvYXRpbmdMYWJlbFRoZW1lLFxuICBmb290ZXI6IGZvb3RlclRoZW1lLFxuICBoZWxwZXJUZXh0OiBoZWxwZXJUZXh0VGhlbWUsXG4gIGhyOiBoclRoZW1lLFxuICBrYmQ6IGtiZFRoZW1lLFxuICBsYWJlbDogbGFiZWxUaGVtZSxcbiAgbGlzdEdyb3VwOiBsaXN0R3JvdXBUaGVtZSxcbiAgbGlzdDogbGlzdFRoZW1lLFxuICBtZWdhTWVudTogbWVnYU1lbnVUaGVtZSxcbiAgbW9kYWw6IG1vZGFsVGhlbWUsXG4gIG5hdmJhcjogbmF2YmFyVGhlbWUsXG4gIHBhZ2luYXRpb246IHBhZ2luYXRpb25UaGVtZSxcbiAgcG9wb3ZlcjogcG9wb3ZlclRoZW1lLFxuICBwcm9ncmVzczogcHJvZ3Jlc3NUaGVtZSxcbiAgcmFkaW86IHJhZGlvVGhlbWUsXG4gIHJhbmdlU2xpZGVyOiByYW5nZVNsaWRlclRoZW1lLFxuICByYXRpbmc6IHJhdGluZ1RoZW1lLFxuICByYXRpbmdBZHZhbmNlZDogcmF0aW5nQWR2YW5jZWRUaGVtZSxcbiAgc2VsZWN0OiBzZWxlY3RUaGVtZSxcbiAgdGV4dElucHV0OiB0ZXh0SW5wdXRUaGVtZSxcbiAgdGV4dGFyZWE6IHRleHRhcmVhVGhlbWUsXG4gIHRvZ2dsZVN3aXRjaDogdG9nZ2xlU3dpdGNoVGhlbWUsXG4gIHNpZGViYXI6IHNpZGViYXJUaGVtZSxcbiAgc3Bpbm5lcjogc3Bpbm5lclRoZW1lLFxuICB0YWJsZTogdGFibGVUaGVtZSxcbiAgdGFiczogdGFiVGhlbWUsXG4gIHRpbWVsaW5lOiB0aW1lbGluZVRoZW1lLFxuICB0b2FzdDogdG9hc3RUaGVtZSxcbiAgdG9vbHRpcDogdG9vbHRpcFRoZW1lXG59O1xuXG5leHBvcnQgeyB0aGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnLi4vaGVscGVycy9jbG9uZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHRoZW1lIH0gZnJvbSAnLi4vdGhlbWUubWpzJztcblxuY29uc3Qgc3RvcmUgPSB7XG4gIHRoZW1lOiBjbG9uZURlZXAodGhlbWUpXG59O1xuZnVuY3Rpb24gc2V0VGhlbWVNb2RlKG1vZGUpIHtcbiAgc3RvcmUubW9kZSA9IG1vZGU7XG59XG5mdW5jdGlvbiBnZXRUaGVtZU1vZGUoKSB7XG4gIHJldHVybiBzdG9yZS5tb2RlO1xufVxuZnVuY3Rpb24gc2V0VGhlbWUodGhlbWUkMSkge1xuICBpZiAodGhlbWUkMSkgc3RvcmUudGhlbWUgPSBtZXJnZURlZXAodGhlbWUsIHRoZW1lJDEpO1xufVxuZnVuY3Rpb24gZ2V0VGhlbWUoKSB7XG4gIHJldHVybiBjbG9uZURlZXAoc3RvcmUudGhlbWUpO1xufVxuXG5leHBvcnQgeyBnZXRUaGVtZSwgZ2V0VGhlbWVNb2RlLCBzZXRUaGVtZSwgc2V0VGhlbWVNb2RlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBBY2NvcmRpb25QYW5lbENvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VBY2NvcmRpb25Db250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChBY2NvcmRpb25QYW5lbENvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VBY2NvcmRpb25Db250ZXh0IHNob3VsZCBiZSB1c2VkIHdpdGhpbiB0aGUgQWNjb3JkaW9uUGFuZWxDb250ZXh0IHByb3ZpZGVyIVwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cblxuZXhwb3J0IHsgQWNjb3JkaW9uUGFuZWxDb250ZXh0LCB1c2VBY2NvcmRpb25Db250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BY2NvcmRpb25QYW5lbENvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgdXNlQWNjb3JkaW9uQ29udGV4dCB9IGZyb20gJy4vQWNjb3JkaW9uUGFuZWxDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IEFjY29yZGlvbkNvbnRlbnQgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgeyBpc09wZW4gfSA9IHVzZUFjY29yZGlvbkNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5hY2NvcmRpb24uY29udGVudCwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLFxuICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWFjY29yZGlvbi1jb250ZW50XCIsXG4gICAgICBoaWRkZW46ICFpc09wZW4sXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApO1xufTtcblxuZXhwb3J0IHsgQWNjb3JkaW9uQ29udGVudCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QWNjb3JkaW9uQ29udGVudC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEFjY29yZGlvblBhbmVsQ29udGV4dCB9IGZyb20gJy4vQWNjb3JkaW9uUGFuZWxDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IEFjY29yZGlvblBhbmVsID0gKHsgY2hpbGRyZW4sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgeyBhbHdheXNPcGVuIH0gPSBwcm9wcztcbiAgY29uc3QgW2lzT3Blbiwgc2V0T3Blbl0gPSB1c2VTdGF0ZShwcm9wcy5pc09wZW4pO1xuICBjb25zdCBwcm92aWRlciA9IGFsd2F5c09wZW4gPyB7XG4gICAgLi4ucHJvcHMsXG4gICAgaXNPcGVuLFxuICAgIHNldE9wZW46ICgpID0+IHNldE9wZW4oIWlzT3BlbilcbiAgfSA6IHByb3BzO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChBY2NvcmRpb25QYW5lbENvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHByb3ZpZGVyLCBjaGlsZHJlbiB9KTtcbn07XG5cbmV4cG9ydCB7IEFjY29yZGlvblBhbmVsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BY2NvcmRpb25QYW5lbC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyB1c2VBY2NvcmRpb25Db250ZXh0IH0gZnJvbSAnLi9BY2NvcmRpb25QYW5lbENvbnRleHQubWpzJztcblxuY29uc3QgQWNjb3JkaW9uVGl0bGUgPSAoe1xuICBhczogSGVhZGluZyA9IFwiaDJcIixcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHsgYXJyb3dJY29uOiBBcnJvd0ljb24sIGZsdXNoLCBpc09wZW4sIHNldE9wZW4gfSA9IHVzZUFjY29yZGlvbkNvbnRleHQoKTtcbiAgY29uc3Qgb25DbGljayA9ICgpID0+IHR5cGVvZiBzZXRPcGVuICE9PSBcInVuZGVmaW5lZFwiICYmIHNldE9wZW4oKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5hY2NvcmRpb24udGl0bGUsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgIFwiYnV0dG9uXCIsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIHRoZW1lLmZsdXNoW2ZsdXNoID8gXCJvblwiIDogXCJvZmZcIl0sIHRoZW1lLm9wZW5baXNPcGVuID8gXCJvblwiIDogXCJvZmZcIl0sIGNsYXNzTmFtZSksXG4gICAgICBvbkNsaWNrLFxuICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChIZWFkaW5nLCB7IGNsYXNzTmFtZTogdGhlbWUuaGVhZGluZywgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWFjY29yZGlvbi1oZWFkaW5nXCIsIGNoaWxkcmVuIH0pLFxuICAgICAgICBBcnJvd0ljb24gJiYgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICBBcnJvd0ljb24sXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmFycm93LmJhc2UsIHRoZW1lLmFycm93Lm9wZW5baXNPcGVuID8gXCJvblwiIDogXCJvZmZcIl0pLFxuICAgICAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWFjY29yZGlvbi1hcnJvd1wiXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICBdXG4gICAgfVxuICApO1xufTtcblxuZXhwb3J0IHsgQWNjb3JkaW9uVGl0bGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFjY29yZGlvblRpdGxlLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VNZW1vLCBDaGlsZHJlbiwgY2xvbmVFbGVtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSGlDaGV2cm9uRG93biB9IGZyb20gJ3JlYWN0LWljb25zL2hpJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IEFjY29yZGlvbkNvbnRlbnQgfSBmcm9tICcuL0FjY29yZGlvbkNvbnRlbnQubWpzJztcbmltcG9ydCB7IEFjY29yZGlvblBhbmVsIH0gZnJvbSAnLi9BY2NvcmRpb25QYW5lbC5tanMnO1xuaW1wb3J0IHsgQWNjb3JkaW9uVGl0bGUgfSBmcm9tICcuL0FjY29yZGlvblRpdGxlLm1qcyc7XG5cbmNvbnN0IEFjY29yZGlvbkNvbXBvbmVudCA9ICh7XG4gIGFsd2F5c09wZW4gPSBmYWxzZSxcbiAgYXJyb3dJY29uID0gSGlDaGV2cm9uRG93bixcbiAgY2hpbGRyZW4sXG4gIGZsdXNoID0gZmFsc2UsXG4gIGNvbGxhcHNlQWxsID0gZmFsc2UsXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IFtpc09wZW4sIHNldE9wZW5dID0gdXNlU3RhdGUoY29sbGFwc2VBbGwgPyAtMSA6IDApO1xuICBjb25zdCBwYW5lbHMgPSB1c2VNZW1vKFxuICAgICgpID0+IENoaWxkcmVuLm1hcChcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgKGNoaWxkLCBpKSA9PiBjbG9uZUVsZW1lbnQoY2hpbGQsIHtcbiAgICAgICAgYWx3YXlzT3BlbixcbiAgICAgICAgYXJyb3dJY29uLFxuICAgICAgICBmbHVzaCxcbiAgICAgICAgaXNPcGVuOiBpc09wZW4gPT09IGksXG4gICAgICAgIHNldE9wZW46ICgpID0+IHNldE9wZW4oaXNPcGVuID09PSBpID8gLTEgOiBpKVxuICAgICAgfSlcbiAgICApLFxuICAgIFthbHdheXNPcGVuLCBhcnJvd0ljb24sIGNoaWxkcmVuLCBmbHVzaCwgaXNPcGVuXVxuICApO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmFjY29yZGlvbi5yb290LCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwiZGl2XCIsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIHRoZW1lLmZsdXNoW2ZsdXNoID8gXCJvblwiIDogXCJvZmZcIl0sIGNsYXNzTmFtZSksXG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYWNjb3JkaW9uXCIsXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuOiBwYW5lbHNcbiAgICB9XG4gICk7XG59O1xuQWNjb3JkaW9uQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJBY2NvcmRpb25cIjtcbkFjY29yZGlvblBhbmVsLmRpc3BsYXlOYW1lID0gXCJBY2NvcmRpb24uUGFuZWxcIjtcbkFjY29yZGlvblRpdGxlLmRpc3BsYXlOYW1lID0gXCJBY2NvcmRpb24uVGl0bGVcIjtcbkFjY29yZGlvbkNvbnRlbnQuZGlzcGxheU5hbWUgPSBcIkFjY29yZGlvbi5Db250ZW50XCI7XG5jb25zdCBBY2NvcmRpb24gPSBPYmplY3QuYXNzaWduKEFjY29yZGlvbkNvbXBvbmVudCwge1xuICBQYW5lbDogQWNjb3JkaW9uUGFuZWwsXG4gIFRpdGxlOiBBY2NvcmRpb25UaXRsZSxcbiAgQ29udGVudDogQWNjb3JkaW9uQ29udGVudFxufSk7XG5cbmV4cG9ydCB7IEFjY29yZGlvbiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QWNjb3JkaW9uLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgQXZhdGFyR3JvdXAgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmF2YXRhci5ncm91cCwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IFwiZGF0YS10ZXN0aWRcIjogXCJhdmF0YXItZ3JvdXAtZWxlbWVudFwiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcbkF2YXRhckdyb3VwLmRpc3BsYXlOYW1lID0gXCJBdmF0YXIuR3JvdXBcIjtcblxuZXhwb3J0IHsgQXZhdGFyR3JvdXAgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUF2YXRhckdyb3VwLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeHMgfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IEF2YXRhckdyb3VwQ291bnRlciA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgaHJlZixcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIHRvdGFsLFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmF2YXRhci5ncm91cENvdW50ZXIsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiYVwiLCB7IGhyZWYsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW46IFtcbiAgICBcIitcIixcbiAgICB0b3RhbFxuICBdIH0pO1xufTtcbkF2YXRhckdyb3VwQ291bnRlci5kaXNwbGF5TmFtZSA9IFwiQXZhdGFyLkdyb3VwQ291bnRlclwiO1xuXG5leHBvcnQgeyBBdmF0YXJHcm91cENvdW50ZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUF2YXRhckdyb3VwQ291bnRlci5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBBdmF0YXJHcm91cCB9IGZyb20gJy4vQXZhdGFyR3JvdXAubWpzJztcbmltcG9ydCB7IEF2YXRhckdyb3VwQ291bnRlciB9IGZyb20gJy4vQXZhdGFyR3JvdXBDb3VudGVyLm1qcyc7XG5cbmNvbnN0IEF2YXRhckNvbXBvbmVudCA9ICh7XG4gIGFsdCA9IFwiXCIsXG4gIGJvcmRlcmVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGNvbG9yID0gXCJsaWdodFwiLFxuICBpbWcsXG4gIHBsYWNlaG9sZGVySW5pdGlhbHMgPSBcIlwiLFxuICByb3VuZGVkID0gZmFsc2UsXG4gIHNpemUgPSBcIm1kXCIsXG4gIHN0YWNrZWQgPSBmYWxzZSxcbiAgc3RhdHVzLFxuICBzdGF0dXNQb3NpdGlvbiA9IFwidG9wLWxlZnRcIixcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuYXZhdGFyLCBjdXN0b21UaGVtZSk7XG4gIGNvbnN0IGltZ0NsYXNzTmFtZSA9IHR3TWVyZ2UoXG4gICAgdGhlbWUucm9vdC5pbWcuYmFzZSxcbiAgICBib3JkZXJlZCAmJiB0aGVtZS5yb290LmJvcmRlcmVkLFxuICAgIGJvcmRlcmVkICYmIHRoZW1lLnJvb3QuY29sb3JbY29sb3JdLFxuICAgIHJvdW5kZWQgJiYgdGhlbWUucm9vdC5yb3VuZGVkLFxuICAgIHN0YWNrZWQgJiYgdGhlbWUucm9vdC5zdGFja2VkLFxuICAgIHRoZW1lLnJvb3QuaW1nLm9uLFxuICAgIHRoZW1lLnJvb3Quc2l6ZVtzaXplXVxuICApO1xuICBjb25zdCBpbWdQcm9wcyA9IHtcbiAgICBjbGFzc05hbWU6IHR3TWVyZ2UoaW1nQ2xhc3NOYW1lLCB0aGVtZS5yb290LmltZy5vbiksXG4gICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWF2YXRhci1pbWdcIlxuICB9O1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCBjbGFzc05hbWUpLCBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYXZhdGFyXCIsIC4uLnByb3BzLCBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcInJlbGF0aXZlXCIsIGNoaWxkcmVuOiBbXG4gICAgICBpbWcgPyB0eXBlb2YgaW1nID09PSBcInN0cmluZ1wiID8gLyogQF9fUFVSRV9fICovIGpzeChcImltZ1wiLCB7IGFsdCwgc3JjOiBpbWcsIC4uLmltZ1Byb3BzIH0pIDogaW1nKHsgYWx0LCAuLi5pbWdQcm9wcyB9KSA6IHBsYWNlaG9sZGVySW5pdGlhbHMgPyAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgdGhlbWUucm9vdC5pbWcub2ZmLFxuICAgICAgICAgICAgdGhlbWUucm9vdC5pbml0aWFscy5iYXNlLFxuICAgICAgICAgICAgc3RhY2tlZCAmJiB0aGVtZS5yb290LnN0YWNrZWQsXG4gICAgICAgICAgICBib3JkZXJlZCAmJiB0aGVtZS5yb290LmJvcmRlcmVkLFxuICAgICAgICAgICAgYm9yZGVyZWQgJiYgdGhlbWUucm9vdC5jb2xvcltjb2xvcl0sXG4gICAgICAgICAgICB0aGVtZS5yb290LnNpemVbc2l6ZV0sXG4gICAgICAgICAgICByb3VuZGVkICYmIHRoZW1lLnJvb3Qucm91bmRlZFxuICAgICAgICAgICksXG4gICAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWF2YXRhci1pbml0aWFscy1wbGFjZWhvbGRlclwiLFxuICAgICAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmluaXRpYWxzLnRleHQpLCBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYXZhdGFyLWluaXRpYWxzLXBsYWNlaG9sZGVyLXRleHRcIiwgY2hpbGRyZW46IHBsYWNlaG9sZGVySW5pdGlhbHMgfSlcbiAgICAgICAgfVxuICAgICAgKSA6IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UoaW1nQ2xhc3NOYW1lLCB0aGVtZS5yb290LmltZy5vZmYpLCBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYXZhdGFyLWltZ1wiLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgXCJzdmdcIixcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogdGhlbWUucm9vdC5pbWcucGxhY2Vob2xkZXIsXG4gICAgICAgICAgZmlsbDogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgICB2aWV3Qm94OiBcIjAgMCAyMCAyMFwiLFxuICAgICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgICAgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJwYXRoXCIsIHsgZmlsbFJ1bGU6IFwiZXZlbm9kZFwiLCBkOiBcIk0xMCA5YTMgMyAwIDEwMC02IDMgMyAwIDAwMCA2em0tNyA5YTcgNyAwIDExMTQgMEgzelwiLCBjbGlwUnVsZTogXCJldmVub2RkXCIgfSlcbiAgICAgICAgfVxuICAgICAgKSB9KSxcbiAgICAgIHN0YXR1cyAmJiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICBcInNwYW5cIixcbiAgICAgICAge1xuICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1hdmF0YXItc3RhdHVzXCIsXG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgdGhlbWUucm9vdC5zdGF0dXMuYmFzZSxcbiAgICAgICAgICAgIHRoZW1lLnJvb3Quc3RhdHVzW3N0YXR1c10sXG4gICAgICAgICAgICB0aGVtZS5yb290LnN0YXR1c1Bvc2l0aW9uW3N0YXR1c1Bvc2l0aW9uXVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgKVxuICAgIF0gfSksXG4gICAgY2hpbGRyZW4gJiYgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNoaWxkcmVuIH0pXG4gIF0gfSk7XG59O1xuQXZhdGFyQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJBdmF0YXJcIjtcbmNvbnN0IEF2YXRhciA9IE9iamVjdC5hc3NpZ24oQXZhdGFyQ29tcG9uZW50LCB7XG4gIEdyb3VwOiBBdmF0YXJHcm91cCxcbiAgQ291bnRlcjogQXZhdGFyR3JvdXBDb3VudGVyXG59KTtcblxuZXhwb3J0IHsgQXZhdGFyIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BdmF0YXIubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4LCBqc3hzIH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBCYWRnZSA9ICh7XG4gIGNoaWxkcmVuLFxuICBjb2xvciA9IFwiaW5mb1wiLFxuICBocmVmLFxuICBpY29uOiBJY29uLFxuICBzaXplID0gXCJ4c1wiLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmJhZGdlLCBjdXN0b21UaGVtZSk7XG4gIGNvbnN0IENvbnRlbnQgPSAoKSA9PiAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICBcInNwYW5cIixcbiAgICB7XG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgIHRoZW1lLnJvb3QuYmFzZSxcbiAgICAgICAgdGhlbWUucm9vdC5jb2xvcltjb2xvcl0sXG4gICAgICAgIHRoZW1lLnJvb3Quc2l6ZVtzaXplXSxcbiAgICAgICAgdGhlbWUuaWNvbltJY29uID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKSxcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1iYWRnZVwiLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICBJY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuaWNvbi5zaXplW3NpemVdLCBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYmFkZ2UtaWNvblwiIH0pLFxuICAgICAgICBjaGlsZHJlbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNoaWxkcmVuIH0pXG4gICAgICBdXG4gICAgfVxuICApO1xuICByZXR1cm4gaHJlZiA/IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJhXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5yb290LmhyZWYsIGhyZWYsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KENvbnRlbnQsIHt9KSB9KSA6IC8qIEBfX1BVUkVfXyAqLyBqc3goQ29udGVudCwge30pO1xufTtcbkJhZGdlLmRpc3BsYXlOYW1lID0gXCJCYWRnZVwiO1xuXG5leHBvcnQgeyBCYWRnZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QmFkZ2UubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4LCBqc3hzIH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBTcGlubmVyID0gKHtcbiAgY2xhc3NOYW1lLFxuICBjb2xvciA9IFwiaW5mb1wiLFxuICBsaWdodCxcbiAgc2l6ZSA9IFwibWRcIixcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuc3Bpbm5lciwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyByb2xlOiBcInN0YXR1c1wiLCAuLi5wcm9wcywgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgIFwic3ZnXCIsXG4gICAge1xuICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICB2aWV3Qm94OiBcIjAgMCAxMDAgMTAxXCIsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgIHRoZW1lLmJhc2UsXG4gICAgICAgIHRoZW1lLmNvbG9yW2NvbG9yXSxcbiAgICAgICAgdGhlbWUubGlnaHRbbGlnaHQgPyBcIm9uXCIgOiBcIm9mZlwiXS5iYXNlLFxuICAgICAgICB0aGVtZS5saWdodFtsaWdodCA/IFwib25cIiA6IFwib2ZmXCJdLmNvbG9yW2NvbG9yXSxcbiAgICAgICAgdGhlbWUuc2l6ZVtzaXplXSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApLFxuICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICBcInBhdGhcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkOiBcIk0xMDAgNTAuNTkwOEMxMDAgNzguMjA1MSA3Ny42MTQyIDEwMC41OTEgNTAgMTAwLjU5MUMyMi4zODU4IDEwMC41OTEgMCA3OC4yMDUxIDAgNTAuNTkwOEMwIDIyLjk3NjYgMjIuMzg1OCAwLjU5MDgyIDUwIDAuNTkwODJDNzcuNjE0MiAwLjU5MDgyIDEwMCAyMi45NzY2IDEwMCA1MC41OTA4Wk05LjA4MTQ0IDUwLjU5MDhDOS4wODE0NCA3My4xODk1IDI3LjQwMTMgOTEuNTA5NCA1MCA5MS41MDk0QzcyLjU5ODcgOTEuNTA5NCA5MC45MTg2IDczLjE4OTUgOTAuOTE4NiA1MC41OTA4QzkwLjkxODYgMjcuOTkyMSA3Mi41OTg3IDkuNjcyMjYgNTAgOS42NzIyNkMyNy40MDEzIDkuNjcyMjYgOS4wODE0NCAyNy45OTIxIDkuMDgxNDQgNTAuNTkwOFpcIixcbiAgICAgICAgICAgIGZpbGw6IFwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICB9XG4gICAgICAgICksXG4gICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgXCJwYXRoXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZDogXCJNOTMuOTY3NiAzOS4wNDA5Qzk2LjM5MyAzOC40MDM4IDk3Ljg2MjQgMzUuOTExNiA5Ny4wMDc5IDMzLjU1MzlDOTUuMjkzMiAyOC44MjI3IDkyLjg3MSAyNC4zNjkyIDg5LjgxNjcgMjAuMzQ4Qzg1Ljg0NTIgMTUuMTE5MiA4MC44ODI2IDEwLjcyMzggNzUuMjEyNCA3LjQxMjg5QzY5LjU0MjIgNC4xMDE5NCA2My4yNzU0IDEuOTQwMjUgNTYuNzY5OCAxLjA1MTI0QzUxLjc2NjYgMC4zNjc1NDEgNDYuNjk3NiAwLjQ0Njg0MyA0MS43MzQ1IDEuMjc4NzNDMzkuMjYxMyAxLjY5MzI4IDM3LjgxMyA0LjE5Nzc4IDM4LjQ1MDEgNi42MjMyNkMzOS4wODczIDkuMDQ4NzQgNDEuNTY5NCAxMC40NzE3IDQ0LjA1MDUgMTAuMTA3MUM0Ny44NTExIDkuNTQ4NTUgNTEuNzE5MSA5LjUyNjg5IDU1LjU0MDIgMTAuMDQ5MUM2MC44NjQyIDEwLjc3NjYgNjUuOTkyOCAxMi41NDU3IDcwLjYzMzEgMTUuMjU1MkM3NS4yNzM1IDE3Ljk2NDggNzkuMzM0NyAyMS41NjE5IDgyLjU4NDkgMjUuODQxQzg0LjkxNzUgMjguOTEyMSA4Ni43OTk3IDMyLjI5MTMgODguMTgxMSAzNS44NzU4Qzg5LjA4MyAzOC4yMTU4IDkxLjU0MjEgMzkuNjc4MSA5My45Njc2IDM5LjA0MDlaXCIsXG4gICAgICAgICAgICBmaWxsOiBcImN1cnJlbnRGaWxsXCJcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIF1cbiAgICB9XG4gICkgfSk7XG59O1xuU3Bpbm5lci5kaXNwbGF5TmFtZSA9IFwiU3Bpbm5lclwiO1xuXG5leHBvcnQgeyBTcGlubmVyIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TcGlubmVyLm1qcy5tYXBcbiIsImltcG9ydCB7IGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IEJ1dHRvbkJhc2UgPSBmb3J3YXJkUmVmKFxuICAoeyBjaGlsZHJlbiwgYXM6IENvbXBvbmVudCwgaHJlZiwgdHlwZSA9IFwiYnV0dG9uXCIsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IEJhc2VDb21wb25lbnQgPSBDb21wb25lbnQgfHwgKGhyZWYgPyBcImFcIiA6IFwiYnV0dG9uXCIpO1xuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KEJhc2VDb21wb25lbnQsIHsgcmVmLCBocmVmLCB0eXBlLCAuLi5wcm9wcyB9LCBjaGlsZHJlbik7XG4gIH1cbik7XG5CdXR0b25CYXNlLmRpc3BsYXlOYW1lID0gXCJCdXR0b25CYXNlQ29tcG9uZW50XCI7XG5cbmV4cG9ydCB7IEJ1dHRvbkJhc2UgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJ1dHRvbkJhc2UubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdXNlTWVtbywgQ2hpbGRyZW4sIGlzVmFsaWRFbGVtZW50LCBjbG9uZUVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuL0J1dHRvbi5tanMnO1xuXG5jb25zdCBwcm9jZXNzQ2hpbGRyZW4gPSAoY2hpbGRyZW4sIG91dGxpbmUsIHBpbGwpID0+IHtcbiAgcmV0dXJuIENoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgIGlmIChpc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uSW5Hcm91cFByb3AgPSBjaGlsZC50eXBlID09IEJ1dHRvbiA/IHsgcG9zaXRpb25Jbkdyb3VwOiBkZXRlcm1pbmVQb3NpdGlvbihpbmRleCwgQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pKSB9IDoge307XG4gICAgICBpZiAoY2hpbGQucHJvcHMuY2hpbGRyZW4pIHtcbiAgICAgICAgcmV0dXJuIGNsb25lRWxlbWVudChjaGlsZCwge1xuICAgICAgICAgIC4uLmNoaWxkLnByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuOiBwcm9jZXNzQ2hpbGRyZW4oY2hpbGQucHJvcHMuY2hpbGRyZW4sIG91dGxpbmUsIHBpbGwpLFxuICAgICAgICAgIC4uLnBvc2l0aW9uSW5Hcm91cFByb3BcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICAgICAgb3V0bGluZSxcbiAgICAgICAgICBwaWxsLFxuICAgICAgICAgIC4uLnBvc2l0aW9uSW5Hcm91cFByb3BcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjaGlsZDtcbiAgfSk7XG59O1xuY29uc3QgZGV0ZXJtaW5lUG9zaXRpb24gPSAoaW5kZXgsIHRvdGFsQ2hpbGRyZW4pID0+IHtcbiAgcmV0dXJuIGluZGV4ID09PSAwID8gXCJzdGFydFwiIDogaW5kZXggPT09IHRvdGFsQ2hpbGRyZW4gLSAxID8gXCJlbmRcIiA6IFwibWlkZGxlXCI7XG59O1xuY29uc3QgQnV0dG9uR3JvdXAgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBvdXRsaW5lLFxuICBwaWxsLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgaXRlbXMgPSB1c2VNZW1vKCgpID0+IHByb2Nlc3NDaGlsZHJlbihjaGlsZHJlbiwgb3V0bGluZSwgcGlsbCksIFtjaGlsZHJlbiwgb3V0bGluZSwgcGlsbF0pO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmJ1dHRvbkdyb3VwLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIHJvbGU6IFwiZ3JvdXBcIiwgLi4ucHJvcHMsIGNoaWxkcmVuOiBpdGVtcyB9KTtcbn07XG5CdXR0b25Hcm91cC5kaXNwbGF5TmFtZSA9IFwiQnV0dG9uLkdyb3VwXCI7XG5cbmV4cG9ydCB7IEJ1dHRvbkdyb3VwIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1CdXR0b25Hcm91cC5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3gsIGpzeHMsIEZyYWdtZW50IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuLi9TcGlubmVyL1NwaW5uZXIubWpzJztcbmltcG9ydCB7IEJ1dHRvbkJhc2UgfSBmcm9tICcuL0J1dHRvbkJhc2UubWpzJztcbmltcG9ydCB7IEJ1dHRvbkdyb3VwIH0gZnJvbSAnLi9CdXR0b25Hcm91cC5tanMnO1xuXG5jb25zdCBCdXR0b25Db21wb25lbnQgPSBmb3J3YXJkUmVmKFxuICAoe1xuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgICBjb2xvciA9IFwiaW5mb1wiLFxuICAgIGRpc2FibGVkLFxuICAgIGZ1bGxTaXplZCxcbiAgICBpc1Byb2Nlc3NpbmcgPSBmYWxzZSxcbiAgICBwcm9jZXNzaW5nTGFiZWwgPSBcIkxvYWRpbmcuLi5cIixcbiAgICBwcm9jZXNzaW5nU3Bpbm5lcixcbiAgICBncmFkaWVudER1b1RvbmUsXG4gICAgZ3JhZGllbnRNb25vY2hyb21lLFxuICAgIGxhYmVsLFxuICAgIG91dGxpbmUgPSBmYWxzZSxcbiAgICBwaWxsID0gZmFsc2UsXG4gICAgcG9zaXRpb25Jbkdyb3VwID0gXCJub25lXCIsXG4gICAgc2l6ZSA9IFwibWRcIixcbiAgICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgICAuLi5wcm9wc1xuICB9LCByZWYpID0+IHtcbiAgICBjb25zdCB7IGJ1dHRvbkdyb3VwOiBncm91cFRoZW1lLCBidXR0b246IGJ1dHRvblRoZW1lIH0gPSBnZXRUaGVtZSgpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGJ1dHRvblRoZW1lLCBjdXN0b21UaGVtZSk7XG4gICAgY29uc3QgdGhlaXJQcm9wcyA9IHByb3BzO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgQnV0dG9uQmFzZSxcbiAgICAgIHtcbiAgICAgICAgcmVmLFxuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgIHRoZW1lLmJhc2UsXG4gICAgICAgICAgZGlzYWJsZWQgJiYgdGhlbWUuZGlzYWJsZWQsXG4gICAgICAgICAgIWdyYWRpZW50RHVvVG9uZSAmJiAhZ3JhZGllbnRNb25vY2hyb21lICYmIHRoZW1lLmNvbG9yW2NvbG9yXSxcbiAgICAgICAgICBncmFkaWVudER1b1RvbmUgJiYgIWdyYWRpZW50TW9ub2Nocm9tZSAmJiB0aGVtZS5ncmFkaWVudER1b1RvbmVbZ3JhZGllbnREdW9Ub25lXSxcbiAgICAgICAgICAhZ3JhZGllbnREdW9Ub25lICYmIGdyYWRpZW50TW9ub2Nocm9tZSAmJiB0aGVtZS5ncmFkaWVudFtncmFkaWVudE1vbm9jaHJvbWVdLFxuICAgICAgICAgIG91dGxpbmUgJiYgKHRoZW1lLm91dGxpbmUuY29sb3JbY29sb3JdID8/IHRoZW1lLm91dGxpbmUuY29sb3IuZGVmYXVsdCksXG4gICAgICAgICAgdGhlbWUucGlsbFtwaWxsID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgZnVsbFNpemVkICYmIHRoZW1lLmZ1bGxTaXplZCxcbiAgICAgICAgICBncm91cFRoZW1lLnBvc2l0aW9uW3Bvc2l0aW9uSW5Hcm91cF0sXG4gICAgICAgICAgY2xhc3NOYW1lXG4gICAgICAgICksXG4gICAgICAgIC4uLnRoZWlyUHJvcHMsXG4gICAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICAgICAgdGhlbWUuaW5uZXIuYmFzZSxcbiAgICAgICAgICAgICAgdGhlbWUub3V0bGluZVtvdXRsaW5lID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgICAgIHRoZW1lLm91dGxpbmUucGlsbFtvdXRsaW5lICYmIHBpbGwgPyBcIm9uXCIgOiBcIm9mZlwiXSxcbiAgICAgICAgICAgICAgdGhlbWUuc2l6ZVtzaXplXSxcbiAgICAgICAgICAgICAgb3V0bGluZSAmJiAhdGhlbWUub3V0bGluZS5jb2xvcltjb2xvcl0gJiYgdGhlbWUuaW5uZXIub3V0bGluZSxcbiAgICAgICAgICAgICAgaXNQcm9jZXNzaW5nICYmIHRoZW1lLmlzUHJvY2Vzc2luZyxcbiAgICAgICAgICAgICAgaXNQcm9jZXNzaW5nICYmIHRoZW1lLmlubmVyLmlzUHJvY2Vzc2luZ1BhZGRpbmdbc2l6ZV0sXG4gICAgICAgICAgICAgIHRoZW1lLmlubmVyLnBvc2l0aW9uW3Bvc2l0aW9uSW5Hcm91cF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeHMoRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgaXNQcm9jZXNzaW5nICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnNwaW5uZXJTbG90LCB0aGVtZS5zcGlubmVyTGVmdFBvc2l0aW9uW3NpemVdKSwgY2hpbGRyZW46IHByb2Nlc3NpbmdTcGlubmVyIHx8IC8qIEBfX1BVUkVfXyAqLyBqc3goU3Bpbm5lciwgeyBzaXplIH0pIH0pLFxuICAgICAgICAgICAgICB0eXBlb2YgY2hpbGRyZW4gIT09IFwidW5kZWZpbmVkXCIgPyBjaGlsZHJlbiA6IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWJ1dHRvbi1sYWJlbFwiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUubGFiZWwpLCBjaGlsZHJlbjogaXNQcm9jZXNzaW5nID8gcHJvY2Vzc2luZ0xhYmVsIDogbGFiZWwgfSlcbiAgICAgICAgICAgIF0gfSlcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIH1cbiAgICApO1xuICB9XG4pO1xuQnV0dG9uQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJCdXR0b25cIjtcbmNvbnN0IEJ1dHRvbiA9IE9iamVjdC5hc3NpZ24oQnV0dG9uQ29tcG9uZW50LCB7XG4gIEdyb3VwOiBCdXR0b25Hcm91cFxufSk7XG5cbmV4cG9ydCB7IEJ1dHRvbiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QnV0dG9uLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uL0J1dHRvbi9CdXR0b24ubWpzJztcbmltcG9ydCAnLi4vQnV0dG9uL0J1dHRvbkdyb3VwLm1qcyc7XG5cbmNvbnN0IEJhbm5lckNvbGxhcHNlQnV0dG9uID0gKHsgY2hpbGRyZW4sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3Qgb25DbGljayA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IGNvbGxhcHNlQnV0dG9uID0gZXZlbnQudGFyZ2V0O1xuICAgIGNvbnN0IHBhcmVudEJhbm5lciA9IGNvbGxhcHNlQnV0dG9uLmNsb3Nlc3QoJ1tyb2xlPVwiYmFubmVyXCJdJyk7XG4gICAgcGFyZW50QmFubmVyPy5yZW1vdmUoKTtcbiAgfTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goQnV0dG9uLCB7IG9uQ2xpY2ssIC4uLnByb3BzLCBjaGlsZHJlbiB9KTtcbn07XG5CYW5uZXJDb2xsYXBzZUJ1dHRvbi5kaXNwbGF5TmFtZSA9IFwiQmFubmVyLkNvbGxhcHNlQnV0dG9uXCI7XG5cbmV4cG9ydCB7IEJhbm5lckNvbGxhcHNlQnV0dG9uIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1CYW5uZXJDb2xsYXBzZUJ1dHRvbi5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBCYW5uZXJDb2xsYXBzZUJ1dHRvbiB9IGZyb20gJy4vQmFubmVyQ29sbGFwc2VCdXR0b24ubWpzJztcblxuY29uc3QgQmFubmVyQ29tcG9uZW50ID0gKHsgY2hpbGRyZW4sIC4uLnByb3BzIH0pID0+IHtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYmFubmVyXCIsIHJvbGU6IFwiYmFubmVyXCIsIHRhYkluZGV4OiAtMSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcbkJhbm5lckNvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiQmFubmVyXCI7XG5jb25zdCBCYW5uZXIgPSBPYmplY3QuYXNzaWduKEJhbm5lckNvbXBvbmVudCwge1xuICBDb2xsYXBzZUJ1dHRvbjogQmFubmVyQ29sbGFwc2VCdXR0b25cbn0pO1xuXG5leHBvcnQgeyBCYW5uZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJhbm5lci5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSGlPdXRsaW5lQ2hldnJvblJpZ2h0IH0gZnJvbSAncmVhY3QtaWNvbnMvaGknO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBCcmVhZGNydW1iSXRlbSA9IGZvcndhcmRSZWYoXG4gICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGhyZWYsIGljb246IEljb24sIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCBpc0xpbmsgPSB0eXBlb2YgaHJlZiAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgICBjb25zdCBDb21wb25lbnQgPSBpc0xpbmsgPyBcImFcIiA6IFwic3BhblwiO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuYnJlYWRjcnVtYi5pdGVtLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwibGlcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuOiBbXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KEhpT3V0bGluZUNoZXZyb25SaWdodCwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuY2hldnJvbiwgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWJyZWFkY3J1bWItc2VwYXJhdG9yXCIgfSksXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICAgICAgQ29tcG9uZW50LFxuICAgICAgICB7XG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIGNsYXNzTmFtZTogdGhlbWUuaHJlZltpc0xpbmsgPyBcIm9uXCIgOiBcIm9mZlwiXSxcbiAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYnJlYWRjcnVtYi1pdGVtXCIsXG4gICAgICAgICAgaHJlZixcbiAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgSWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBjbGFzc05hbWU6IHRoZW1lLmljb24gfSksXG4gICAgICAgICAgICBjaGlsZHJlblxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKVxuICAgIF0gfSk7XG4gIH1cbik7XG5CcmVhZGNydW1iSXRlbS5kaXNwbGF5TmFtZSA9IFwiQnJlYWRjcnVtYi5JdGVtXCI7XG5cbmV4cG9ydCB7IEJyZWFkY3J1bWJJdGVtIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1CcmVhZGNydW1iSXRlbS5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBCcmVhZGNydW1iSXRlbSB9IGZyb20gJy4vQnJlYWRjcnVtYkl0ZW0ubWpzJztcblxuY29uc3QgQnJlYWRjcnVtYkNvbXBvbmVudCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmJyZWFkY3J1bWIucm9vdCwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcIm5hdlwiLCB7IFwiYXJpYS1sYWJlbFwiOiBcIkJyZWFkY3J1bWJcIiwgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIC4uLnByb3BzLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcIm9sXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5saXN0LCBjaGlsZHJlbiB9KSB9KTtcbn07XG5CcmVhZGNydW1iQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJCcmVhZGNydW1iXCI7XG5jb25zdCBCcmVhZGNydW1iID0gT2JqZWN0LmFzc2lnbihCcmVhZGNydW1iQ29tcG9uZW50LCB7XG4gIEl0ZW06IEJyZWFkY3J1bWJJdGVtXG59KTtcblxuZXhwb3J0IHsgQnJlYWRjcnVtYiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QnJlYWRjcnVtYi5tanMubWFwXG4iLCIvKiFcblx0Q29weXJpZ2h0IChjKSAyMDE4IEplZCBXYXRzb24uXG5cdExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAoTUlUKSwgc2VlXG5cdGh0dHA6Ly9qZWR3YXRzb24uZ2l0aHViLmlvL2NsYXNzbmFtZXNcbiovXG4vKiBnbG9iYWwgZGVmaW5lICovXG5cbihmdW5jdGlvbiAoKSB7XG5cdCd1c2Ugc3RyaWN0JztcblxuXHR2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cblx0ZnVuY3Rpb24gY2xhc3NOYW1lcyAoKSB7XG5cdFx0dmFyIGNsYXNzZXMgPSAnJztcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0aWYgKGFyZykge1xuXHRcdFx0XHRjbGFzc2VzID0gYXBwZW5kQ2xhc3MoY2xhc3NlcywgcGFyc2VWYWx1ZShhcmcpKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY2xhc3Nlcztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlVmFsdWUgKGFyZykge1xuXHRcdGlmICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuXHRcdFx0cmV0dXJuIGFyZztcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIGFyZyAhPT0gJ29iamVjdCcpIHtcblx0XHRcdHJldHVybiAnJztcblx0XHR9XG5cblx0XHRpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0XHRyZXR1cm4gY2xhc3NOYW1lcy5hcHBseShudWxsLCBhcmcpO1xuXHRcdH1cblxuXHRcdGlmIChhcmcudG9TdHJpbmcgIT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcgJiYgIWFyZy50b1N0cmluZy50b1N0cmluZygpLmluY2x1ZGVzKCdbbmF0aXZlIGNvZGVdJykpIHtcblx0XHRcdHJldHVybiBhcmcudG9TdHJpbmcoKTtcblx0XHR9XG5cblx0XHR2YXIgY2xhc3NlcyA9ICcnO1xuXG5cdFx0Zm9yICh2YXIga2V5IGluIGFyZykge1xuXHRcdFx0aWYgKGhhc093bi5jYWxsKGFyZywga2V5KSAmJiBhcmdba2V5XSkge1xuXHRcdFx0XHRjbGFzc2VzID0gYXBwZW5kQ2xhc3MoY2xhc3Nlcywga2V5KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY2xhc3Nlcztcblx0fVxuXG5cdGZ1bmN0aW9uIGFwcGVuZENsYXNzICh2YWx1ZSwgbmV3Q2xhc3MpIHtcblx0XHRpZiAoIW5ld0NsYXNzKSB7XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fVxuXHRcblx0XHRpZiAodmFsdWUpIHtcblx0XHRcdHJldHVybiB2YWx1ZSArICcgJyArIG5ld0NsYXNzO1xuXHRcdH1cblx0XG5cdFx0cmV0dXJuIHZhbHVlICsgbmV3Q2xhc3M7XG5cdH1cblxuXHRpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRjbGFzc05hbWVzLmRlZmF1bHQgPSBjbGFzc05hbWVzO1xuXHRcdG1vZHVsZS5leHBvcnRzID0gY2xhc3NOYW1lcztcblx0fSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09PSAnb2JqZWN0JyAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gcmVnaXN0ZXIgYXMgJ2NsYXNzbmFtZXMnLCBjb25zaXN0ZW50IHdpdGggbnBtIHBhY2thZ2UgbmFtZVxuXHRcdGRlZmluZSgnY2xhc3NuYW1lcycsIFtdLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gY2xhc3NOYW1lcztcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHR3aW5kb3cuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG5cdH1cbn0oKSk7XG4iLCJmdW5jdGlvbiBkZWJvdW5jZShmdW5jdGlvbl8sIHdhaXQgPSAxMDAsIG9wdGlvbnMgPSB7fSkge1xuXHRpZiAodHlwZW9mIGZ1bmN0aW9uXyAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYEV4cGVjdGVkIHRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8gYmUgYSBmdW5jdGlvbiwgZ290IFxcYCR7dHlwZW9mIGZ1bmN0aW9uX31cXGAuYCk7XG5cdH1cblxuXHRpZiAod2FpdCA8IDApIHtcblx0XHR0aHJvdyBuZXcgUmFuZ2VFcnJvcignYHdhaXRgIG11c3Qgbm90IGJlIG5lZ2F0aXZlLicpO1xuXHR9XG5cblx0Ly8gVE9ETzogRGVwcmVjYXRlIHRoZSBib29sZWFuIHBhcmFtZXRlciBhdCBzb21lIHBvaW50LlxuXHRjb25zdCB7aW1tZWRpYXRlfSA9IHR5cGVvZiBvcHRpb25zID09PSAnYm9vbGVhbicgPyB7aW1tZWRpYXRlOiBvcHRpb25zfSA6IG9wdGlvbnM7XG5cblx0bGV0IHN0b3JlZENvbnRleHQ7XG5cdGxldCBzdG9yZWRBcmd1bWVudHM7XG5cdGxldCB0aW1lb3V0SWQ7XG5cdGxldCB0aW1lc3RhbXA7XG5cdGxldCByZXN1bHQ7XG5cblx0ZnVuY3Rpb24gcnVuKCkge1xuXHRcdGNvbnN0IGNhbGxDb250ZXh0ID0gc3RvcmVkQ29udGV4dDtcblx0XHRjb25zdCBjYWxsQXJndW1lbnRzID0gc3RvcmVkQXJndW1lbnRzO1xuXHRcdHN0b3JlZENvbnRleHQgPSB1bmRlZmluZWQ7XG5cdFx0c3RvcmVkQXJndW1lbnRzID0gdW5kZWZpbmVkO1xuXHRcdHJlc3VsdCA9IGZ1bmN0aW9uXy5hcHBseShjYWxsQ29udGV4dCwgY2FsbEFyZ3VtZW50cyk7XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdGZ1bmN0aW9uIGxhdGVyKCkge1xuXHRcdGNvbnN0IGxhc3QgPSBEYXRlLm5vdygpIC0gdGltZXN0YW1wO1xuXG5cdFx0aWYgKGxhc3QgPCB3YWl0ICYmIGxhc3QgPj0gMCkge1xuXHRcdFx0dGltZW91dElkID0gc2V0VGltZW91dChsYXRlciwgd2FpdCAtIGxhc3QpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aW1lb3V0SWQgPSB1bmRlZmluZWQ7XG5cblx0XHRcdGlmICghaW1tZWRpYXRlKSB7XG5cdFx0XHRcdHJlc3VsdCA9IHJ1bigpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGNvbnN0IGRlYm91bmNlZCA9IGZ1bmN0aW9uICguLi5hcmd1bWVudHNfKSB7XG5cdFx0aWYgKHN0b3JlZENvbnRleHQgJiYgdGhpcyAhPT0gc3RvcmVkQ29udGV4dCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdEZWJvdW5jZWQgbWV0aG9kIGNhbGxlZCB3aXRoIGRpZmZlcmVudCBjb250ZXh0cy4nKTtcblx0XHR9XG5cblx0XHRzdG9yZWRDb250ZXh0ID0gdGhpczsgLy8gZXNsaW50LWRpc2FibGUtbGluZSB1bmljb3JuL25vLXRoaXMtYXNzaWdubWVudFxuXHRcdHN0b3JlZEFyZ3VtZW50cyA9IGFyZ3VtZW50c187XG5cdFx0dGltZXN0YW1wID0gRGF0ZS5ub3coKTtcblxuXHRcdGNvbnN0IGNhbGxOb3cgPSBpbW1lZGlhdGUgJiYgIXRpbWVvdXRJZDtcblxuXHRcdGlmICghdGltZW91dElkKSB7XG5cdFx0XHR0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0KTtcblx0XHR9XG5cblx0XHRpZiAoY2FsbE5vdykge1xuXHRcdFx0cmVzdWx0ID0gcnVuKCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fTtcblxuXHRkZWJvdW5jZWQuY2xlYXIgPSAoKSA9PiB7XG5cdFx0aWYgKCF0aW1lb3V0SWQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjbGVhclRpbWVvdXQodGltZW91dElkKTtcblx0XHR0aW1lb3V0SWQgPSB1bmRlZmluZWQ7XG5cdH07XG5cblx0ZGVib3VuY2VkLmZsdXNoID0gKCkgPT4ge1xuXHRcdGlmICghdGltZW91dElkKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0ZGVib3VuY2VkLnRyaWdnZXIoKTtcblx0fTtcblxuXHRkZWJvdW5jZWQudHJpZ2dlciA9ICgpID0+IHtcblx0XHRyZXN1bHQgPSBydW4oKTtcblxuXHRcdGRlYm91bmNlZC5jbGVhcigpO1xuXHR9O1xuXG5cdHJldHVybiBkZWJvdW5jZWQ7XG59XG5cbi8vIEFkZHMgY29tcGF0aWJpbGl0eSBmb3IgRVMgbW9kdWxlc1xubW9kdWxlLmV4cG9ydHMuZGVib3VuY2UgPSBkZWJvdW5jZTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWJvdW5jZTtcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2RlYm91bmNlJztcbmltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuXG52YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmTm9ybWFsUHJvcCA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3Aob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fcHVibGljRmllbGQgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBfX2RlZk5vcm1hbFByb3Aob2JqLCB0eXBlb2Yga2V5ICE9PSBcInN5bWJvbFwiID8ga2V5ICsgXCJcIiA6IGtleSwgdmFsdWUpO1xuY29uc3QgU0NST0xMX0VORF9ERUJPVU5DRSA9IDMwMDtcbmNvbnN0IExFRlRfQlVUVE9OID0gMDtcbmNsYXNzIFNjcm9sbENvbnRhaW5lciBleHRlbmRzIFB1cmVDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwiY29udGFpbmVyXCIpO1xuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJzY3JvbGxpbmdcIik7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcInN0YXJ0ZWRcIik7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcInByZXNzZWRcIik7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcImlzTW9iaWxlXCIsIGZhbHNlKTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwiaW50ZXJuYWxcIik7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcInNjcm9sbExlZnRcIik7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcInNjcm9sbFRvcFwiKTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwiY2xpZW50WFwiKTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwiY2xpZW50WVwiKTtcbiAgICAvLyBTaW11bGF0ZSAnb25FbmRTY3JvbGwnIGV2ZW50IHRoYXQgZmlyZXMgd2hlbiBzY3JvbGxpbmcgaXMgc3RvcHBlZFxuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJvbkVuZFNjcm9sbFwiLCAoKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbGluZyA9IGZhbHNlO1xuICAgICAgaWYgKCF0aGlzLnByZXNzZWQgJiYgdGhpcy5zdGFydGVkKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc0VuZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJvblNjcm9sbFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lci5jdXJyZW50O1xuICAgICAgaWYgKGNvbnRhaW5lci5zY3JvbGxMZWZ0ICE9PSB0aGlzLnNjcm9sbExlZnQgfHwgY29udGFpbmVyLnNjcm9sbFRvcCAhPT0gdGhpcy5zY3JvbGxUb3ApIHtcbiAgICAgICAgdGhpcy5zY3JvbGxpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnByb2Nlc3NTY3JvbGwoKTtcbiAgICAgICAgdGhpcy5vbkVuZFNjcm9sbCgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJvblRvdWNoU3RhcnRcIiwgKGUpID0+IHtcbiAgICAgIGNvbnN0IHsgbmF0aXZlTW9iaWxlU2Nyb2xsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgaWYgKHRoaXMuaXNEcmFnZ2FibGUoZS50YXJnZXQpKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWwgPSB0cnVlO1xuICAgICAgICBpZiAobmF0aXZlTW9iaWxlU2Nyb2xsICYmIHRoaXMuc2Nyb2xsaW5nKSB7XG4gICAgICAgICAgdGhpcy5wcmVzc2VkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB0b3VjaCA9IGUudG91Y2hlc1swXTtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NDbGljayh0b3VjaC5jbGllbnRYLCB0b3VjaC5jbGllbnRZKTtcbiAgICAgICAgICBpZiAoIW5hdGl2ZU1vYmlsZVNjcm9sbCAmJiB0aGlzLnByb3BzLnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwib25Ub3VjaEVuZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IG5hdGl2ZU1vYmlsZVNjcm9sbCB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGlmICh0aGlzLnByZXNzZWQpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhcnRlZCAmJiAoIXRoaXMuc2Nyb2xsaW5nIHx8ICFuYXRpdmVNb2JpbGVTY3JvbGwpKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzRW5kKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5wcmVzc2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJvblRvdWNoTW92ZVwiLCAoZSkgPT4ge1xuICAgICAgY29uc3QgeyBuYXRpdmVNb2JpbGVTY3JvbGwgfSA9IHRoaXMucHJvcHM7XG4gICAgICBpZiAodGhpcy5wcmVzc2VkICYmICghbmF0aXZlTW9iaWxlU2Nyb2xsIHx8ICF0aGlzLmlzTW9iaWxlKSkge1xuICAgICAgICBjb25zdCB0b3VjaCA9IGUudG91Y2hlc1swXTtcbiAgICAgICAgaWYgKHRvdWNoKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzTW92ZSh0b3VjaC5jbGllbnRYLCB0b3VjaC5jbGllbnRZKTtcbiAgICAgICAgfVxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwib25Nb3VzZURvd25cIiwgKGUpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzRHJhZ2dhYmxlKGUudGFyZ2V0KSAmJiB0aGlzLmlzU2Nyb2xsYWJsZSgpKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWwgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5wcm9wcz8uYnV0dG9ucz8uaW5kZXhPZihlLmJ1dHRvbikgIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzQ2xpY2soZS5jbGllbnRYLCBlLmNsaWVudFkpO1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBpZiAodGhpcy5wcm9wcy5zdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcIm9uTW91c2VNb3ZlXCIsIChlKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcmVzc2VkKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc01vdmUoZS5jbGllbnRYLCBlLmNsaWVudFkpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwib25Nb3VzZVVwXCIsIChlKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcmVzc2VkKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXJ0ZWQpIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NFbmQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmludGVybmFsID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5wcmVzc2VkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uQ2xpY2spIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25DbGljayhlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5zdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5jb250YWluZXIgPSBSZWFjdC5jcmVhdGVSZWYoKTtcbiAgICB0aGlzLm9uRW5kU2Nyb2xsID0gZGVib3VuY2UodGhpcy5vbkVuZFNjcm9sbCwgU0NST0xMX0VORF9ERUJPVU5DRSk7XG4gICAgdGhpcy5zY3JvbGxpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnN0YXJ0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnByZXNzZWQgPSBmYWxzZTtcbiAgICB0aGlzLmludGVybmFsID0gZmFsc2U7XG4gICAgdGhpcy5nZXRSZWYgPSB0aGlzLmdldFJlZi5iaW5kKHRoaXMpO1xuICB9XG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIGNvbnN0IHsgbmF0aXZlTW9iaWxlU2Nyb2xsIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyLmN1cnJlbnQ7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMub25Nb3VzZVVwKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLm9uTW91c2VNb3ZlKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCB0aGlzLm9uVG91Y2hNb3ZlLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIiwgdGhpcy5vblRvdWNoRW5kKTtcbiAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIiwgdGhpcy5vblRvdWNoU3RhcnQsIHtcbiAgICAgIHBhc3NpdmU6IGZhbHNlXG4gICAgfSk7XG4gICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgdGhpcy5vbk1vdXNlRG93biwge1xuICAgICAgcGFzc2l2ZTogZmFsc2VcbiAgICB9KTtcbiAgICBpZiAobmF0aXZlTW9iaWxlU2Nyb2xsKSB7XG4gICAgICB0aGlzLmlzTW9iaWxlID0gdGhpcy5pc01vYmlsZURldmljZSgpO1xuICAgICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgdGhpcy5vbk1vdXNlVXApO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMub25Nb3VzZU1vdmUpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIHRoaXMub25Ub3VjaE1vdmUpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIiwgdGhpcy5vblRvdWNoRW5kKTtcbiAgfVxuICBnZXRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRhaW5lci5jdXJyZW50O1xuICB9XG4gIGlzTW9iaWxlRGV2aWNlKCkge1xuICAgIHJldHVybiB0eXBlb2Ygd2luZG93Lm9yaWVudGF0aW9uICE9PSBcInVuZGVmaW5lZFwiIHx8IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihcIklFTW9iaWxlXCIpICE9PSAtMTtcbiAgfVxuICBpc0RyYWdnYWJsZSh0YXJnZXQpIHtcbiAgICBjb25zdCBpZ25vcmVFbGVtZW50cyA9IHRoaXMucHJvcHMuaWdub3JlRWxlbWVudHM7XG4gICAgaWYgKGlnbm9yZUVsZW1lbnRzKSB7XG4gICAgICBjb25zdCBjbG9zZXN0ID0gdGFyZ2V0LmNsb3Nlc3QoaWdub3JlRWxlbWVudHMpO1xuICAgICAgcmV0dXJuIGNsb3Nlc3QgPT09IG51bGwgfHwgY2xvc2VzdC5jb250YWlucyh0aGlzLmdldEVsZW1lbnQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBpc1Njcm9sbGFibGUoKSB7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jb250YWluZXIuY3VycmVudDtcbiAgICByZXR1cm4gY29udGFpbmVyICYmIChjb250YWluZXIuc2Nyb2xsV2lkdGggPiBjb250YWluZXIuY2xpZW50V2lkdGggfHwgY29udGFpbmVyLnNjcm9sbEhlaWdodCA+IGNvbnRhaW5lci5jbGllbnRIZWlnaHQpO1xuICB9XG4gIHByb2Nlc3NDbGljayhjbGllbnRYLCBjbGllbnRZKSB7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jb250YWluZXIuY3VycmVudDtcbiAgICB0aGlzLnNjcm9sbExlZnQgPSBjb250YWluZXI/LnNjcm9sbExlZnQ7XG4gICAgdGhpcy5zY3JvbGxUb3AgPSBjb250YWluZXI/LnNjcm9sbFRvcDtcbiAgICB0aGlzLmNsaWVudFggPSBjbGllbnRYO1xuICAgIHRoaXMuY2xpZW50WSA9IGNsaWVudFk7XG4gICAgdGhpcy5wcmVzc2VkID0gdHJ1ZTtcbiAgfVxuICBwcm9jZXNzU3RhcnQoY2hhbmdlQ3Vyc29yID0gdHJ1ZSkge1xuICAgIGNvbnN0IHsgb25TdGFydFNjcm9sbCB9ID0gdGhpcy5wcm9wcztcbiAgICB0aGlzLnN0YXJ0ZWQgPSB0cnVlO1xuICAgIGlmIChjaGFuZ2VDdXJzb3IpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChcImN1cnNvci1ncmFiXCIpO1xuICAgIH1cbiAgICBpZiAob25TdGFydFNjcm9sbCkge1xuICAgICAgb25TdGFydFNjcm9sbCh7XG4gICAgICAgIGV4dGVybmFsOiAhdGhpcy5pbnRlcm5hbFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcbiAgfVxuICAvLyBQcm9jZXNzIG5hdGl2ZSBzY3JvbGwgKHNjcm9sbGJhciwgbW9iaWxlIHNjcm9sbClcbiAgcHJvY2Vzc1Njcm9sbCgpIHtcbiAgICBpZiAodGhpcy5zdGFydGVkKSB7XG4gICAgICBjb25zdCB7IG9uU2Nyb2xsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgaWYgKG9uU2Nyb2xsKSB7XG4gICAgICAgIG9uU2Nyb2xsKHtcbiAgICAgICAgICBleHRlcm5hbDogIXRoaXMuaW50ZXJuYWxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvY2Vzc1N0YXJ0KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgLy8gUHJvY2VzcyBub24tbmF0aXZlIHNjcm9sbFxuICBwcm9jZXNzTW92ZShuZXdDbGllbnRYLCBuZXdDbGllbnRZKSB7XG4gICAgY29uc3QgeyBob3Jpem9udGFsLCB2ZXJ0aWNhbCwgYWN0aXZhdGlvbkRpc3RhbmNlLCBvblNjcm9sbCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lci5jdXJyZW50O1xuICAgIGlmICghdGhpcy5zdGFydGVkKSB7XG4gICAgICBpZiAoaG9yaXpvbnRhbCAmJiBNYXRoLmFicyhuZXdDbGllbnRYIC0gdGhpcy5jbGllbnRYKSA+IGFjdGl2YXRpb25EaXN0YW5jZSB8fCB2ZXJ0aWNhbCAmJiBNYXRoLmFicyhuZXdDbGllbnRZIC0gdGhpcy5jbGllbnRZKSA+IGFjdGl2YXRpb25EaXN0YW5jZSkge1xuICAgICAgICB0aGlzLmNsaWVudFggPSBuZXdDbGllbnRYO1xuICAgICAgICB0aGlzLmNsaWVudFkgPSBuZXdDbGllbnRZO1xuICAgICAgICB0aGlzLnByb2Nlc3NTdGFydCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaG9yaXpvbnRhbCkge1xuICAgICAgICBjb250YWluZXIuc2Nyb2xsTGVmdCAtPSBuZXdDbGllbnRYIC0gdGhpcy5jbGllbnRYO1xuICAgICAgfVxuICAgICAgaWYgKHZlcnRpY2FsKSB7XG4gICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgLT0gbmV3Q2xpZW50WSAtIHRoaXMuY2xpZW50WTtcbiAgICAgIH1cbiAgICAgIGlmIChvblNjcm9sbCkge1xuICAgICAgICBvblNjcm9sbCh7IGV4dGVybmFsOiAhdGhpcy5pbnRlcm5hbCB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2xpZW50WCA9IG5ld0NsaWVudFg7XG4gICAgICB0aGlzLmNsaWVudFkgPSBuZXdDbGllbnRZO1xuICAgICAgdGhpcy5zY3JvbGxMZWZ0ID0gY29udGFpbmVyLnNjcm9sbExlZnQ7XG4gICAgICB0aGlzLnNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XG4gICAgfVxuICB9XG4gIHByb2Nlc3NFbmQoKSB7XG4gICAgY29uc3QgeyBvbkVuZFNjcm9sbCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lci5jdXJyZW50O1xuICAgIGlmIChjb250YWluZXIgJiYgb25FbmRTY3JvbGwpIHtcbiAgICAgIG9uRW5kU2Nyb2xsKHtcbiAgICAgICAgZXh0ZXJuYWw6ICF0aGlzLmludGVybmFsXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5wcmVzc2VkID0gZmFsc2U7XG4gICAgdGhpcy5zdGFydGVkID0gZmFsc2U7XG4gICAgdGhpcy5zY3JvbGxpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmludGVybmFsID0gZmFsc2U7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKFwiY3Vyc29yLWdyYWJcIik7XG4gICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICB9XG4gIGdldFJlZihlbCkge1xuICAgIFt0aGlzLmNvbnRhaW5lciwgdGhpcy5wcm9wcy5pbm5lclJlZl0uZm9yRWFjaCgocmVmKSA9PiB7XG4gICAgICBpZiAocmVmKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcmVmID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICByZWYoZWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlZi5jdXJyZW50ID0gZWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBjaGlsZHJlbiwgZHJhZ2dpbmdDbGFzc05hbWUsIGNsYXNzTmFtZSwgc3R5bGUsIGhpZGVTY3JvbGxiYXJzIH0gPSB0aGlzLnByb3BzO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgXCJkaXZcIixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc25hbWVzKGNsYXNzTmFtZSwgdGhpcy5wcmVzc2VkICYmIGRyYWdnaW5nQ2xhc3NOYW1lLCB7XG4gICAgICAgICAgXCIhc2Nyb2xsLWF1dG8gWyY+Kl06cG9pbnRlci1ldmVudHMtbm9uZSBbJj4qXTpjdXJzb3ItZ3JhYlwiOiB0aGlzLnByZXNzZWQsXG4gICAgICAgICAgXCJvdmVyZmxvdy1hdXRvXCI6IHRoaXMuaXNNb2JpbGUsXG4gICAgICAgICAgXCJvdmVyZmxvdy1oaWRkZW4gIW92ZXJmbG93LXgtaGlkZGVuIFtvdmVyZmxvdzotbW96LXNjcm9sbGJhcnMtbm9uZV0gW3Njcm9sbGJhci13aWR0aDpub25lXVwiOiBoaWRlU2Nyb2xsYmFycyxcbiAgICAgICAgICBcIlsmOjotd2Via2l0LXNjcm9sbGJhcl06Wy13ZWJraXQtYXBwZWFyYW5jZTpub25lICFpbXBvcnRhbnRdIFsmOjotd2Via2l0LXNjcm9sbGJhcl06IWhpZGRlbiBbJjo6LXdlYmtpdC1zY3JvbGxiYXJdOiFoLTAgWyY6Oi13ZWJraXQtc2Nyb2xsYmFyXTohdy0wIFsmOjotd2Via2l0LXNjcm9sbGJhcl06IWJnLXRyYW5zcGFyZW50XCI6IGhpZGVTY3JvbGxiYXJzXG4gICAgICAgIH0pLFxuICAgICAgICBzdHlsZSxcbiAgICAgICAgcmVmOiB0aGlzLmdldFJlZixcbiAgICAgICAgb25TY3JvbGw6IHRoaXMub25TY3JvbGwsXG4gICAgICAgIGNoaWxkcmVuXG4gICAgICB9XG4gICAgKTtcbiAgfVxufVxuX19wdWJsaWNGaWVsZChTY3JvbGxDb250YWluZXIsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgbmF0aXZlTW9iaWxlU2Nyb2xsOiB0cnVlLFxuICBoaWRlU2Nyb2xsYmFyczogdHJ1ZSxcbiAgYWN0aXZhdGlvbkRpc3RhbmNlOiAxMCxcbiAgdmVydGljYWw6IHRydWUsXG4gIGhvcml6b250YWw6IHRydWUsXG4gIHN0b3BQcm9wYWdhdGlvbjogZmFsc2UsXG4gIHN0eWxlOiB7fSxcbiAgYnV0dG9uczogW0xFRlRfQlVUVE9OXVxufSk7XG5cbmV4cG9ydCB7IFNjcm9sbENvbnRhaW5lciBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBDaGVja2JveCA9IGZvcndhcmRSZWYoXG4gICh7IGNsYXNzTmFtZSwgY29sb3IgPSBcImRlZmF1bHRcIiwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuY2hlY2tib3gsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwiaW5wdXRcIixcbiAgICAgIHtcbiAgICAgICAgcmVmLFxuICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmJhc2UsIHRoZW1lLnJvb3QuY29sb3JbY29sb3JdLCBjbGFzc05hbWUpLFxuICAgICAgICAuLi5wcm9wc1xuICAgICAgfVxuICAgICk7XG4gIH1cbik7XG5DaGVja2JveC5kaXNwbGF5TmFtZSA9IFwiQ2hlY2tib3hcIjtcblxuZXhwb3J0IHsgQ2hlY2tib3ggfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNoZWNrYm94Lm1qcy5tYXBcbiIsImltcG9ydCB7IGlzU2hhZG93Um9vdCwgaXNIVE1MRWxlbWVudCB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuXG5mdW5jdGlvbiBhY3RpdmVFbGVtZW50KGRvYykge1xuICBsZXQgYWN0aXZlRWxlbWVudCA9IGRvYy5hY3RpdmVFbGVtZW50O1xuICB3aGlsZSAoKChfYWN0aXZlRWxlbWVudCA9IGFjdGl2ZUVsZW1lbnQpID09IG51bGwgfHwgKF9hY3RpdmVFbGVtZW50ID0gX2FjdGl2ZUVsZW1lbnQuc2hhZG93Um9vdCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hY3RpdmVFbGVtZW50LmFjdGl2ZUVsZW1lbnQpICE9IG51bGwpIHtcbiAgICB2YXIgX2FjdGl2ZUVsZW1lbnQ7XG4gICAgYWN0aXZlRWxlbWVudCA9IGFjdGl2ZUVsZW1lbnQuc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50O1xuICB9XG4gIHJldHVybiBhY3RpdmVFbGVtZW50O1xufVxuZnVuY3Rpb24gY29udGFpbnMocGFyZW50LCBjaGlsZCkge1xuICBpZiAoIXBhcmVudCB8fCAhY2hpbGQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3Qgcm9vdE5vZGUgPSBjaGlsZC5nZXRSb290Tm9kZSA9PSBudWxsID8gdm9pZCAwIDogY2hpbGQuZ2V0Um9vdE5vZGUoKTtcblxuICAvLyBGaXJzdCwgYXR0ZW1wdCB3aXRoIGZhc3RlciBuYXRpdmUgbWV0aG9kXG4gIGlmIChwYXJlbnQuY29udGFpbnMoY2hpbGQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyB0aGVuIGZhbGxiYWNrIHRvIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiB3aXRoIFNoYWRvdyBET00gc3VwcG9ydFxuICBpZiAocm9vdE5vZGUgJiYgaXNTaGFkb3dSb290KHJvb3ROb2RlKSkge1xuICAgIGxldCBuZXh0ID0gY2hpbGQ7XG4gICAgd2hpbGUgKG5leHQpIHtcbiAgICAgIGlmIChwYXJlbnQgPT09IG5leHQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBuZXh0ID0gbmV4dC5wYXJlbnROb2RlIHx8IG5leHQuaG9zdDtcbiAgICB9XG4gIH1cblxuICAvLyBHaXZlIHVwLCB0aGUgcmVzdWx0IGlzIGZhbHNlXG4gIHJldHVybiBmYWxzZTtcbn1cbi8vIEF2b2lkIENocm9tZSBEZXZUb29scyBibHVlIHdhcm5pbmcuXG5mdW5jdGlvbiBnZXRQbGF0Zm9ybSgpIHtcbiAgY29uc3QgdWFEYXRhID0gbmF2aWdhdG9yLnVzZXJBZ2VudERhdGE7XG4gIGlmICh1YURhdGEgIT0gbnVsbCAmJiB1YURhdGEucGxhdGZvcm0pIHtcbiAgICByZXR1cm4gdWFEYXRhLnBsYXRmb3JtO1xuICB9XG4gIHJldHVybiBuYXZpZ2F0b3IucGxhdGZvcm07XG59XG5mdW5jdGlvbiBnZXRVc2VyQWdlbnQoKSB7XG4gIGNvbnN0IHVhRGF0YSA9IG5hdmlnYXRvci51c2VyQWdlbnREYXRhO1xuICBpZiAodWFEYXRhICYmIEFycmF5LmlzQXJyYXkodWFEYXRhLmJyYW5kcykpIHtcbiAgICByZXR1cm4gdWFEYXRhLmJyYW5kcy5tYXAoX3JlZiA9PiB7XG4gICAgICBsZXQge1xuICAgICAgICBicmFuZCxcbiAgICAgICAgdmVyc2lvblxuICAgICAgfSA9IF9yZWY7XG4gICAgICByZXR1cm4gYnJhbmQgKyBcIi9cIiArIHZlcnNpb247XG4gICAgfSkuam9pbignICcpO1xuICB9XG4gIHJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50O1xufVxuXG4vLyBMaWNlbnNlOiBodHRwczovL2dpdGh1Yi5jb20vYWRvYmUvcmVhY3Qtc3BlY3RydW0vYmxvYi9iMzVkNWMwMmZlOTAwYmFkY2NkMGNmMWE4ZjIzYmI1OTM0MTlmMjM4L3BhY2thZ2VzL0ByZWFjdC1hcmlhL3V0aWxzL3NyYy9pc1ZpcnR1YWxFdmVudC50c1xuZnVuY3Rpb24gaXNWaXJ0dWFsQ2xpY2soZXZlbnQpIHtcbiAgLy8gRklYTUU6IEZpcmVmb3ggaXMgbm93IGVtaXR0aW5nIGEgZGVwcmVjYXRpb24gd2FybmluZyBmb3IgYG1veklucHV0U291cmNlYC5cbiAgLy8gVHJ5IHRvIGZpbmQgYSB3b3JrYXJvdW5kIGZvciB0aGlzLiBgcmVhY3QtYXJpYWAgc291cmNlIHN0aWxsIGhhcyB0aGUgY2hlY2suXG4gIGlmIChldmVudC5tb3pJbnB1dFNvdXJjZSA9PT0gMCAmJiBldmVudC5pc1RydXN0ZWQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoaXNBbmRyb2lkKCkgJiYgZXZlbnQucG9pbnRlclR5cGUpIHtcbiAgICByZXR1cm4gZXZlbnQudHlwZSA9PT0gJ2NsaWNrJyAmJiBldmVudC5idXR0b25zID09PSAxO1xuICB9XG4gIHJldHVybiBldmVudC5kZXRhaWwgPT09IDAgJiYgIWV2ZW50LnBvaW50ZXJUeXBlO1xufVxuZnVuY3Rpb24gaXNWaXJ0dWFsUG9pbnRlckV2ZW50KGV2ZW50KSB7XG4gIGlmIChpc0pTRE9NKCkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuICFpc0FuZHJvaWQoKSAmJiBldmVudC53aWR0aCA9PT0gMCAmJiBldmVudC5oZWlnaHQgPT09IDAgfHwgaXNBbmRyb2lkKCkgJiYgZXZlbnQud2lkdGggPT09IDEgJiYgZXZlbnQuaGVpZ2h0ID09PSAxICYmIGV2ZW50LnByZXNzdXJlID09PSAwICYmIGV2ZW50LmRldGFpbCA9PT0gMCAmJiBldmVudC5wb2ludGVyVHlwZSA9PT0gJ21vdXNlJyB8fFxuICAvLyBpT1MgVm9pY2VPdmVyIHJldHVybnMgMC4zMzPigKIgZm9yIHdpZHRoL2hlaWdodC5cbiAgZXZlbnQud2lkdGggPCAxICYmIGV2ZW50LmhlaWdodCA8IDEgJiYgZXZlbnQucHJlc3N1cmUgPT09IDAgJiYgZXZlbnQuZGV0YWlsID09PSAwICYmIGV2ZW50LnBvaW50ZXJUeXBlID09PSAndG91Y2gnO1xufVxuZnVuY3Rpb24gaXNTYWZhcmkoKSB7XG4gIC8vIENocm9tZSBEZXZUb29scyBkb2VzIG5vdCBjb21wbGFpbiBhYm91dCBuYXZpZ2F0b3IudmVuZG9yXG4gIHJldHVybiAvYXBwbGUvaS50ZXN0KG5hdmlnYXRvci52ZW5kb3IpO1xufVxuZnVuY3Rpb24gaXNBbmRyb2lkKCkge1xuICBjb25zdCByZSA9IC9hbmRyb2lkL2k7XG4gIHJldHVybiByZS50ZXN0KGdldFBsYXRmb3JtKCkpIHx8IHJlLnRlc3QoZ2V0VXNlckFnZW50KCkpO1xufVxuZnVuY3Rpb24gaXNNYWMoKSB7XG4gIHJldHVybiBnZXRQbGF0Zm9ybSgpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnbWFjJykgJiYgIW5hdmlnYXRvci5tYXhUb3VjaFBvaW50cztcbn1cbmZ1bmN0aW9uIGlzSlNET00oKSB7XG4gIHJldHVybiBnZXRVc2VyQWdlbnQoKS5pbmNsdWRlcygnanNkb20vJyk7XG59XG5mdW5jdGlvbiBpc01vdXNlTGlrZVBvaW50ZXJUeXBlKHBvaW50ZXJUeXBlLCBzdHJpY3QpIHtcbiAgLy8gT24gc29tZSBMaW51eCBtYWNoaW5lcyB3aXRoIENocm9taXVtLCBtb3VzZSBpbnB1dHMgcmV0dXJuIGEgYHBvaW50ZXJUeXBlYFxuICAvLyBvZiBcInBlblwiOiBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzIwMTVcbiAgY29uc3QgdmFsdWVzID0gWydtb3VzZScsICdwZW4nXTtcbiAgaWYgKCFzdHJpY3QpIHtcbiAgICB2YWx1ZXMucHVzaCgnJywgdW5kZWZpbmVkKTtcbiAgfVxuICByZXR1cm4gdmFsdWVzLmluY2x1ZGVzKHBvaW50ZXJUeXBlKTtcbn1cbmZ1bmN0aW9uIGlzUmVhY3RFdmVudChldmVudCkge1xuICByZXR1cm4gJ25hdGl2ZUV2ZW50JyBpbiBldmVudDtcbn1cbmZ1bmN0aW9uIGlzUm9vdEVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gZWxlbWVudC5tYXRjaGVzKCdodG1sLGJvZHknKTtcbn1cbmZ1bmN0aW9uIGdldERvY3VtZW50KG5vZGUpIHtcbiAgcmV0dXJuIChub2RlID09IG51bGwgPyB2b2lkIDAgOiBub2RlLm93bmVyRG9jdW1lbnQpIHx8IGRvY3VtZW50O1xufVxuZnVuY3Rpb24gaXNFdmVudFRhcmdldFdpdGhpbihldmVudCwgbm9kZSkge1xuICBpZiAobm9kZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICgnY29tcG9zZWRQYXRoJyBpbiBldmVudCkge1xuICAgIHJldHVybiBldmVudC5jb21wb3NlZFBhdGgoKS5pbmNsdWRlcyhub2RlKTtcbiAgfVxuXG4gIC8vIFRTIHRoaW5rcyBgZXZlbnRgIGlzIG9mIHR5cGUgbmV2ZXIgYXMgaXQgYXNzdW1lcyBhbGwgYnJvd3NlcnMgc3VwcG9ydCBjb21wb3NlZFBhdGgsIGJ1dCBicm93c2VycyB3aXRob3V0IHNoYWRvdyBkb20gZG9uJ3RcbiAgY29uc3QgZSA9IGV2ZW50O1xuICByZXR1cm4gZS50YXJnZXQgIT0gbnVsbCAmJiBub2RlLmNvbnRhaW5zKGUudGFyZ2V0KTtcbn1cbmZ1bmN0aW9uIGdldFRhcmdldChldmVudCkge1xuICBpZiAoJ2NvbXBvc2VkUGF0aCcgaW4gZXZlbnQpIHtcbiAgICByZXR1cm4gZXZlbnQuY29tcG9zZWRQYXRoKClbMF07XG4gIH1cblxuICAvLyBUUyB0aGlua3MgYGV2ZW50YCBpcyBvZiB0eXBlIG5ldmVyIGFzIGl0IGFzc3VtZXMgYWxsIGJyb3dzZXJzIHN1cHBvcnRcbiAgLy8gYGNvbXBvc2VkUGF0aCgpYCwgYnV0IGJyb3dzZXJzIHdpdGhvdXQgc2hhZG93IERPTSBkb24ndC5cbiAgcmV0dXJuIGV2ZW50LnRhcmdldDtcbn1cbmNvbnN0IFRZUEVBQkxFX1NFTEVDVE9SID0gXCJpbnB1dDpub3QoW3R5cGU9J2hpZGRlbiddKTpub3QoW2Rpc2FibGVkXSksXCIgKyBcIltjb250ZW50ZWRpdGFibGVdOm5vdChbY29udGVudGVkaXRhYmxlPSdmYWxzZSddKSx0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSlcIjtcbmZ1bmN0aW9uIGlzVHlwZWFibGVFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkgJiYgZWxlbWVudC5tYXRjaGVzKFRZUEVBQkxFX1NFTEVDVE9SKTtcbn1cbmZ1bmN0aW9uIHN0b3BFdmVudChldmVudCkge1xuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbn1cbmZ1bmN0aW9uIGlzVHlwZWFibGVDb21ib2JveChlbGVtZW50KSB7XG4gIGlmICghZWxlbWVudCkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3JvbGUnKSA9PT0gJ2NvbWJvYm94JyAmJiBpc1R5cGVhYmxlRWxlbWVudChlbGVtZW50KTtcbn1cblxuZXhwb3J0IHsgVFlQRUFCTEVfU0VMRUNUT1IsIGFjdGl2ZUVsZW1lbnQsIGNvbnRhaW5zLCBnZXREb2N1bWVudCwgZ2V0UGxhdGZvcm0sIGdldFRhcmdldCwgZ2V0VXNlckFnZW50LCBpc0FuZHJvaWQsIGlzRXZlbnRUYXJnZXRXaXRoaW4sIGlzSlNET00sIGlzTWFjLCBpc01vdXNlTGlrZVBvaW50ZXJUeXBlLCBpc1JlYWN0RXZlbnQsIGlzUm9vdEVsZW1lbnQsIGlzU2FmYXJpLCBpc1R5cGVhYmxlQ29tYm9ib3gsIGlzVHlwZWFibGVFbGVtZW50LCBpc1ZpcnR1YWxDbGljaywgaXNWaXJ0dWFsUG9pbnRlckV2ZW50LCBzdG9wRXZlbnQgfTtcbiIsIi8qIVxuKiB0YWJiYWJsZSA2LjIuMFxuKiBAbGljZW5zZSBNSVQsIGh0dHBzOi8vZ2l0aHViLmNvbS9mb2N1cy10cmFwL3RhYmJhYmxlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiovXG4vLyBOT1RFOiBzZXBhcmF0ZSBgOm5vdCgpYCBzZWxlY3RvcnMgaGFzIGJyb2FkZXIgYnJvd3NlciBzdXBwb3J0IHRoYW4gdGhlIG5ld2VyXG4vLyAgYDpub3QoW2luZXJ0XSwgW2luZXJ0XSAqKWAgKEZlYiAyMDIzKVxuLy8gQ0FSRUZVTDogSlNEb20gZG9lcyBub3Qgc3VwcG9ydCBgOm5vdChbaW5lcnRdICopYCBhcyBhIHNlbGVjdG9yOyB1c2luZyBpdCBjYXVzZXNcbi8vICB0aGUgZW50aXJlIHF1ZXJ5IHRvIGZhaWwsIHJlc3VsdGluZyBpbiBubyBub2RlcyBmb3VuZCwgd2hpY2ggd2lsbCBicmVhayBhIGxvdFxuLy8gIG9mIHRoaW5ncy4uLiBzbyB3ZSBoYXZlIHRvIHJlbHkgb24gSlMgdG8gaWRlbnRpZnkgbm9kZXMgaW5zaWRlIGFuIGluZXJ0IGNvbnRhaW5lclxudmFyIGNhbmRpZGF0ZVNlbGVjdG9ycyA9IFsnaW5wdXQ6bm90KFtpbmVydF0pJywgJ3NlbGVjdDpub3QoW2luZXJ0XSknLCAndGV4dGFyZWE6bm90KFtpbmVydF0pJywgJ2FbaHJlZl06bm90KFtpbmVydF0pJywgJ2J1dHRvbjpub3QoW2luZXJ0XSknLCAnW3RhYmluZGV4XTpub3Qoc2xvdCk6bm90KFtpbmVydF0pJywgJ2F1ZGlvW2NvbnRyb2xzXTpub3QoW2luZXJ0XSknLCAndmlkZW9bY29udHJvbHNdOm5vdChbaW5lcnRdKScsICdbY29udGVudGVkaXRhYmxlXTpub3QoW2NvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCJdKTpub3QoW2luZXJ0XSknLCAnZGV0YWlscz5zdW1tYXJ5OmZpcnN0LW9mLXR5cGU6bm90KFtpbmVydF0pJywgJ2RldGFpbHM6bm90KFtpbmVydF0pJ107XG52YXIgY2FuZGlkYXRlU2VsZWN0b3IgPSAvKiAjX19QVVJFX18gKi9jYW5kaWRhdGVTZWxlY3RvcnMuam9pbignLCcpO1xudmFyIE5vRWxlbWVudCA9IHR5cGVvZiBFbGVtZW50ID09PSAndW5kZWZpbmVkJztcbnZhciBtYXRjaGVzID0gTm9FbGVtZW50ID8gZnVuY3Rpb24gKCkge30gOiBFbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzIHx8IEVsZW1lbnQucHJvdG90eXBlLm1zTWF0Y2hlc1NlbGVjdG9yIHx8IEVsZW1lbnQucHJvdG90eXBlLndlYmtpdE1hdGNoZXNTZWxlY3RvcjtcbnZhciBnZXRSb290Tm9kZSA9ICFOb0VsZW1lbnQgJiYgRWxlbWVudC5wcm90b3R5cGUuZ2V0Um9vdE5vZGUgPyBmdW5jdGlvbiAoZWxlbWVudCkge1xuICB2YXIgX2VsZW1lbnQkZ2V0Um9vdE5vZGU7XG4gIHJldHVybiBlbGVtZW50ID09PSBudWxsIHx8IGVsZW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZWxlbWVudCRnZXRSb290Tm9kZSA9IGVsZW1lbnQuZ2V0Um9vdE5vZGUpID09PSBudWxsIHx8IF9lbGVtZW50JGdldFJvb3ROb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZWxlbWVudCRnZXRSb290Tm9kZS5jYWxsKGVsZW1lbnQpO1xufSA6IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50ID09PSBudWxsIHx8IGVsZW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVsZW1lbnQub3duZXJEb2N1bWVudDtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIG5vZGUgaXMgaW5lcnQgb3IgaW4gYW4gaW5lcnQgYW5jZXN0b3IuXG4gKiBAcGFyYW0ge0VsZW1lbnR9IFtub2RlXVxuICogQHBhcmFtIHtib29sZWFufSBbbG9va1VwXSBJZiB0cnVlIGFuZCBgbm9kZWAgaXMgbm90IGluZXJ0LCBsb29rcyB1cCBhdCBhbmNlc3RvcnMgdG9cbiAqICBzZWUgaWYgYW55IG9mIHRoZW0gYXJlIGluZXJ0LiBJZiBmYWxzZSwgb25seSBgbm9kZWAgaXRzZWxmIGlzIGNvbnNpZGVyZWQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBpbmVydCBpdHNlbGYgb3IgYnkgd2F5IG9mIGJlaW5nIGluIGFuIGluZXJ0IGFuY2VzdG9yLlxuICogIEZhbHNlIGlmIGBub2RlYCBpcyBmYWxzeS5cbiAqL1xudmFyIGlzSW5lcnQgPSBmdW5jdGlvbiBpc0luZXJ0KG5vZGUsIGxvb2tVcCkge1xuICB2YXIgX25vZGUkZ2V0QXR0cmlidXRlO1xuICBpZiAobG9va1VwID09PSB2b2lkIDApIHtcbiAgICBsb29rVXAgPSB0cnVlO1xuICB9XG4gIC8vIENBUkVGVUw6IEpTRG9tIGRvZXMgbm90IHN1cHBvcnQgaW5lcnQgYXQgYWxsLCBzbyB3ZSBjYW4ndCB1c2UgdGhlIGBIVE1MRWxlbWVudC5pbmVydGBcbiAgLy8gIEpTIEFQSSBwcm9wZXJ0eTsgd2UgaGF2ZSB0byBjaGVjayB0aGUgYXR0cmlidXRlLCB3aGljaCBjYW4gZWl0aGVyIGJlIGVtcHR5IG9yICd0cnVlJztcbiAgLy8gIGlmIGl0J3MgYG51bGxgIChub3Qgc3BlY2lmaWVkKSBvciAnZmFsc2UnLCBpdCdzIGFuIGFjdGl2ZSBlbGVtZW50XG4gIHZhciBpbmVydEF0dCA9IG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9ub2RlJGdldEF0dHJpYnV0ZSA9IG5vZGUuZ2V0QXR0cmlidXRlKSA9PT0gbnVsbCB8fCBfbm9kZSRnZXRBdHRyaWJ1dGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9ub2RlJGdldEF0dHJpYnV0ZS5jYWxsKG5vZGUsICdpbmVydCcpO1xuICB2YXIgaW5lcnQgPSBpbmVydEF0dCA9PT0gJycgfHwgaW5lcnRBdHQgPT09ICd0cnVlJztcblxuICAvLyBOT1RFOiB0aGlzIGNvdWxkIGFsc28gYmUgaGFuZGxlZCB3aXRoIGBub2RlLm1hdGNoZXMoJ1tpbmVydF0sIDppcyhbaW5lcnRdICopJylgXG4gIC8vICBpZiBpdCB3ZXJlbid0IGZvciBgbWF0Y2hlcygpYCBub3QgYmVpbmcgYSBmdW5jdGlvbiBvbiBzaGFkb3cgcm9vdHM7IHRoZSBmb2xsb3dpbmdcbiAgLy8gIGNvZGUgd29ya3MgZm9yIGFueSBraW5kIG9mIG5vZGVcbiAgLy8gQ0FSRUZVTDogSlNEb20gZG9lcyBub3QgYXBwZWFyIHRvIHN1cHBvcnQgY2VydGFpbiBzZWxlY3RvcnMgbGlrZSBgOm5vdChbaW5lcnRdICopYFxuICAvLyAgc28gaXQgbGlrZWx5IHdvdWxkIG5vdCBzdXBwb3J0IGA6aXMoW2luZXJ0XSAqKWAgZWl0aGVyLi4uXG4gIHZhciByZXN1bHQgPSBpbmVydCB8fCBsb29rVXAgJiYgbm9kZSAmJiBpc0luZXJ0KG5vZGUucGFyZW50Tm9kZSk7IC8vIHJlY3Vyc2l2ZVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgaWYgYSBub2RlJ3MgY29udGVudCBpcyBlZGl0YWJsZS5cbiAqIEBwYXJhbSB7RWxlbWVudH0gW25vZGVdXG4gKiBAcmV0dXJucyBUcnVlIGlmIGl0J3MgY29udGVudC1lZGl0YWJsZTsgZmFsc2UgaWYgaXQncyBub3Qgb3IgYG5vZGVgIGlzIGZhbHN5LlxuICovXG52YXIgaXNDb250ZW50RWRpdGFibGUgPSBmdW5jdGlvbiBpc0NvbnRlbnRFZGl0YWJsZShub2RlKSB7XG4gIHZhciBfbm9kZSRnZXRBdHRyaWJ1dGUyO1xuICAvLyBDQVJFRlVMOiBKU0RvbSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBgSFRNTEVsZW1lbnQuaXNDb250ZW50RWRpdGFibGVgIEFQSSBzbyB3ZSBoYXZlXG4gIC8vICB0byB1c2UgdGhlIGF0dHJpYnV0ZSBkaXJlY3RseSB0byBjaGVjayBmb3IgdGhpcywgd2hpY2ggY2FuIGVpdGhlciBiZSBlbXB0eSBvciAndHJ1ZSc7XG4gIC8vICBpZiBpdCdzIGBudWxsYCAobm90IHNwZWNpZmllZCkgb3IgJ2ZhbHNlJywgaXQncyBhIG5vbi1lZGl0YWJsZSBlbGVtZW50XG4gIHZhciBhdHRWYWx1ZSA9IG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9ub2RlJGdldEF0dHJpYnV0ZTIgPSBub2RlLmdldEF0dHJpYnV0ZSkgPT09IG51bGwgfHwgX25vZGUkZ2V0QXR0cmlidXRlMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX25vZGUkZ2V0QXR0cmlidXRlMi5jYWxsKG5vZGUsICdjb250ZW50ZWRpdGFibGUnKTtcbiAgcmV0dXJuIGF0dFZhbHVlID09PSAnJyB8fCBhdHRWYWx1ZSA9PT0gJ3RydWUnO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGVsIGNvbnRhaW5lciB0byBjaGVjayBpblxuICogQHBhcmFtIHtib29sZWFufSBpbmNsdWRlQ29udGFpbmVyIGFkZCBjb250YWluZXIgdG8gY2hlY2tcbiAqIEBwYXJhbSB7KG5vZGU6IEVsZW1lbnQpID0+IGJvb2xlYW59IGZpbHRlciBmaWx0ZXIgY2FuZGlkYXRlc1xuICogQHJldHVybnMge0VsZW1lbnRbXX1cbiAqL1xudmFyIGdldENhbmRpZGF0ZXMgPSBmdW5jdGlvbiBnZXRDYW5kaWRhdGVzKGVsLCBpbmNsdWRlQ29udGFpbmVyLCBmaWx0ZXIpIHtcbiAgLy8gZXZlbiBpZiBgaW5jbHVkZUNvbnRhaW5lcj1mYWxzZWAsIHdlIHN0aWxsIGhhdmUgdG8gY2hlY2sgaXQgZm9yIGluZXJ0bmVzcyBiZWNhdXNlXG4gIC8vICBpZiBpdCdzIGluZXJ0LCBhbGwgaXRzIGNoaWxkcmVuIGFyZSBpbmVydFxuICBpZiAoaXNJbmVydChlbCkpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgdmFyIGNhbmRpZGF0ZXMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoZWwucXVlcnlTZWxlY3RvckFsbChjYW5kaWRhdGVTZWxlY3RvcikpO1xuICBpZiAoaW5jbHVkZUNvbnRhaW5lciAmJiBtYXRjaGVzLmNhbGwoZWwsIGNhbmRpZGF0ZVNlbGVjdG9yKSkge1xuICAgIGNhbmRpZGF0ZXMudW5zaGlmdChlbCk7XG4gIH1cbiAgY2FuZGlkYXRlcyA9IGNhbmRpZGF0ZXMuZmlsdGVyKGZpbHRlcik7XG4gIHJldHVybiBjYW5kaWRhdGVzO1xufTtcblxuLyoqXG4gKiBAY2FsbGJhY2sgR2V0U2hhZG93Um9vdFxuICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IHRvIGNoZWNrIGZvciBzaGFkb3cgcm9vdFxuICogQHJldHVybnMge1NoYWRvd1Jvb3R8Ym9vbGVhbn0gU2hhZG93Um9vdCBpZiBhdmFpbGFibGUgb3IgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIGEgc2hhZG93Um9vdCBpcyBhdHRhY2hlZCBidXQgbm90IGF2YWlsYWJsZS5cbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBTaGFkb3dSb290RmlsdGVyXG4gKiBAcGFyYW0ge0VsZW1lbnR9IHNoYWRvd0hvc3ROb2RlIHRoZSBlbGVtZW50IHdoaWNoIGNvbnRhaW5zIHNoYWRvdyBjb250ZW50XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiBhIHNoYWRvdyByb290IGNvdWxkIHBvdGVudGlhbGx5IGNvbnRhaW4gdmFsaWQgY2FuZGlkYXRlcy5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENhbmRpZGF0ZVNjb3BlXG4gKiBAcHJvcGVydHkge0VsZW1lbnR9IHNjb3BlUGFyZW50IGNvbnRhaW5zIGlubmVyIGNhbmRpZGF0ZXNcbiAqIEBwcm9wZXJ0eSB7RWxlbWVudFtdfSBjYW5kaWRhdGVzIGxpc3Qgb2YgY2FuZGlkYXRlcyBmb3VuZCBpbiB0aGUgc2NvcGUgcGFyZW50XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBJdGVyYXRpdmVPcHRpb25zXG4gKiBAcHJvcGVydHkge0dldFNoYWRvd1Jvb3R8Ym9vbGVhbn0gZ2V0U2hhZG93Um9vdCB0cnVlIGlmIHNoYWRvdyBzdXBwb3J0IGlzIGVuYWJsZWQ7IGZhbHN5IGlmIG5vdDtcbiAqICBpZiBhIGZ1bmN0aW9uLCBpbXBsaWVzIHNoYWRvdyBzdXBwb3J0IGlzIGVuYWJsZWQgYW5kIGVpdGhlciByZXR1cm5zIHRoZSBzaGFkb3cgcm9vdCBvZiBhbiBlbGVtZW50XG4gKiAgb3IgYSBib29sZWFuIHN0YXRpbmcgaWYgaXQgaGFzIGFuIHVuZGlzY2xvc2VkIHNoYWRvdyByb290XG4gKiBAcHJvcGVydHkgeyhub2RlOiBFbGVtZW50KSA9PiBib29sZWFufSBmaWx0ZXIgZmlsdGVyIGNhbmRpZGF0ZXNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZmxhdHRlbiBpZiB0cnVlIHRoZW4gcmVzdWx0IHdpbGwgZmxhdHRlbiBhbnkgQ2FuZGlkYXRlU2NvcGUgaW50byB0aGUgcmV0dXJuZWQgbGlzdFxuICogQHByb3BlcnR5IHtTaGFkb3dSb290RmlsdGVyfSBzaGFkb3dSb290RmlsdGVyIGZpbHRlciBzaGFkb3cgcm9vdHM7XG4gKi9cblxuLyoqXG4gKiBAcGFyYW0ge0VsZW1lbnRbXX0gZWxlbWVudHMgbGlzdCBvZiBlbGVtZW50IGNvbnRhaW5lcnMgdG8gbWF0Y2ggY2FuZGlkYXRlcyBmcm9tXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluY2x1ZGVDb250YWluZXIgYWRkIGNvbnRhaW5lciBsaXN0IHRvIGNoZWNrXG4gKiBAcGFyYW0ge0l0ZXJhdGl2ZU9wdGlvbnN9IG9wdGlvbnNcbiAqIEByZXR1cm5zIHtBcnJheS48RWxlbWVudHxDYW5kaWRhdGVTY29wZT59XG4gKi9cbnZhciBnZXRDYW5kaWRhdGVzSXRlcmF0aXZlbHkgPSBmdW5jdGlvbiBnZXRDYW5kaWRhdGVzSXRlcmF0aXZlbHkoZWxlbWVudHMsIGluY2x1ZGVDb250YWluZXIsIG9wdGlvbnMpIHtcbiAgdmFyIGNhbmRpZGF0ZXMgPSBbXTtcbiAgdmFyIGVsZW1lbnRzVG9DaGVjayA9IEFycmF5LmZyb20oZWxlbWVudHMpO1xuICB3aGlsZSAoZWxlbWVudHNUb0NoZWNrLmxlbmd0aCkge1xuICAgIHZhciBlbGVtZW50ID0gZWxlbWVudHNUb0NoZWNrLnNoaWZ0KCk7XG4gICAgaWYgKGlzSW5lcnQoZWxlbWVudCwgZmFsc2UpKSB7XG4gICAgICAvLyBubyBuZWVkIHRvIGxvb2sgdXAgc2luY2Ugd2UncmUgZHJpbGxpbmcgZG93blxuICAgICAgLy8gYW55dGhpbmcgaW5zaWRlIHRoaXMgY29udGFpbmVyIHdpbGwgYWxzbyBiZSBpbmVydFxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChlbGVtZW50LnRhZ05hbWUgPT09ICdTTE9UJykge1xuICAgICAgLy8gYWRkIHNoYWRvdyBkb20gc2xvdCBzY29wZSAoc2xvdCBpdHNlbGYgY2Fubm90IGJlIGZvY3VzYWJsZSlcbiAgICAgIHZhciBhc3NpZ25lZCA9IGVsZW1lbnQuYXNzaWduZWRFbGVtZW50cygpO1xuICAgICAgdmFyIGNvbnRlbnQgPSBhc3NpZ25lZC5sZW5ndGggPyBhc3NpZ25lZCA6IGVsZW1lbnQuY2hpbGRyZW47XG4gICAgICB2YXIgbmVzdGVkQ2FuZGlkYXRlcyA9IGdldENhbmRpZGF0ZXNJdGVyYXRpdmVseShjb250ZW50LCB0cnVlLCBvcHRpb25zKTtcbiAgICAgIGlmIChvcHRpb25zLmZsYXR0ZW4pIHtcbiAgICAgICAgY2FuZGlkYXRlcy5wdXNoLmFwcGx5KGNhbmRpZGF0ZXMsIG5lc3RlZENhbmRpZGF0ZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FuZGlkYXRlcy5wdXNoKHtcbiAgICAgICAgICBzY29wZVBhcmVudDogZWxlbWVudCxcbiAgICAgICAgICBjYW5kaWRhdGVzOiBuZXN0ZWRDYW5kaWRhdGVzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBjaGVjayBjYW5kaWRhdGUgZWxlbWVudFxuICAgICAgdmFyIHZhbGlkQ2FuZGlkYXRlID0gbWF0Y2hlcy5jYWxsKGVsZW1lbnQsIGNhbmRpZGF0ZVNlbGVjdG9yKTtcbiAgICAgIGlmICh2YWxpZENhbmRpZGF0ZSAmJiBvcHRpb25zLmZpbHRlcihlbGVtZW50KSAmJiAoaW5jbHVkZUNvbnRhaW5lciB8fCAhZWxlbWVudHMuaW5jbHVkZXMoZWxlbWVudCkpKSB7XG4gICAgICAgIGNhbmRpZGF0ZXMucHVzaChlbGVtZW50KTtcbiAgICAgIH1cblxuICAgICAgLy8gaXRlcmF0ZSBvdmVyIHNoYWRvdyBjb250ZW50IGlmIHBvc3NpYmxlXG4gICAgICB2YXIgc2hhZG93Um9vdCA9IGVsZW1lbnQuc2hhZG93Um9vdCB8fFxuICAgICAgLy8gY2hlY2sgZm9yIGFuIHVuZGlzY2xvc2VkIHNoYWRvd1xuICAgICAgdHlwZW9mIG9wdGlvbnMuZ2V0U2hhZG93Um9vdCA9PT0gJ2Z1bmN0aW9uJyAmJiBvcHRpb25zLmdldFNoYWRvd1Jvb3QoZWxlbWVudCk7XG5cbiAgICAgIC8vIG5vIGluZXJ0IGxvb2sgdXAgYmVjYXVzZSB3ZSdyZSBhbHJlYWR5IGRyaWxsaW5nIGRvd24gYW5kIGNoZWNraW5nIGZvciBpbmVydG5lc3NcbiAgICAgIC8vICBvbiB0aGUgd2F5IGRvd24sIHNvIGFsbCBjb250YWluZXJzIHRvIHRoaXMgcm9vdCBub2RlIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlblxuICAgICAgLy8gIHZldHRlZCBhcyBub24taW5lcnRcbiAgICAgIHZhciB2YWxpZFNoYWRvd1Jvb3QgPSAhaXNJbmVydChzaGFkb3dSb290LCBmYWxzZSkgJiYgKCFvcHRpb25zLnNoYWRvd1Jvb3RGaWx0ZXIgfHwgb3B0aW9ucy5zaGFkb3dSb290RmlsdGVyKGVsZW1lbnQpKTtcbiAgICAgIGlmIChzaGFkb3dSb290ICYmIHZhbGlkU2hhZG93Um9vdCkge1xuICAgICAgICAvLyBhZGQgc2hhZG93IGRvbSBzY29wZSBJSUYgYSBzaGFkb3cgcm9vdCBub2RlIHdhcyBnaXZlbjsgb3RoZXJ3aXNlLCBhbiB1bmRpc2Nsb3NlZFxuICAgICAgICAvLyAgc2hhZG93IGV4aXN0cywgc28gbG9vayBhdCBsaWdodCBkb20gY2hpbGRyZW4gYXMgZmFsbGJhY2sgQlVUIGNyZWF0ZSBhIHNjb3BlIGZvciBhbnlcbiAgICAgICAgLy8gIGNoaWxkIGNhbmRpZGF0ZXMgZm91bmQgYmVjYXVzZSB0aGV5J3JlIGxpa2VseSBzbG90dGVkIGVsZW1lbnRzIChlbGVtZW50cyB0aGF0IGFyZVxuICAgICAgICAvLyAgY2hpbGRyZW4gb2YgdGhlIHdlYiBjb21wb25lbnQgZWxlbWVudCAod2hpY2ggaGFzIHRoZSBzaGFkb3cpLCBpbiB0aGUgbGlnaHQgZG9tLCBidXRcbiAgICAgICAgLy8gIHNsb3R0ZWQgc29tZXdoZXJlIF9pbnNpZGVfIHRoZSB1bmRpc2Nsb3NlZCBzaGFkb3cpIC0tIHRoZSBzY29wZSBpcyBjcmVhdGVkIGJlbG93LFxuICAgICAgICAvLyAgX2FmdGVyXyB3ZSByZXR1cm4gZnJvbSB0aGlzIHJlY3Vyc2l2ZSBjYWxsXG4gICAgICAgIHZhciBfbmVzdGVkQ2FuZGlkYXRlcyA9IGdldENhbmRpZGF0ZXNJdGVyYXRpdmVseShzaGFkb3dSb290ID09PSB0cnVlID8gZWxlbWVudC5jaGlsZHJlbiA6IHNoYWRvd1Jvb3QuY2hpbGRyZW4sIHRydWUsIG9wdGlvbnMpO1xuICAgICAgICBpZiAob3B0aW9ucy5mbGF0dGVuKSB7XG4gICAgICAgICAgY2FuZGlkYXRlcy5wdXNoLmFwcGx5KGNhbmRpZGF0ZXMsIF9uZXN0ZWRDYW5kaWRhdGVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goe1xuICAgICAgICAgICAgc2NvcGVQYXJlbnQ6IGVsZW1lbnQsXG4gICAgICAgICAgICBjYW5kaWRhdGVzOiBfbmVzdGVkQ2FuZGlkYXRlc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB0aGVyZSdzIG5vdCBzaGFkb3cgc28ganVzdCBkaWcgaW50byB0aGUgZWxlbWVudCdzIChsaWdodCBkb20pIGNoaWxkcmVuXG4gICAgICAgIC8vICBfX3dpdGhvdXRfXyBnaXZpbmcgdGhlIGVsZW1lbnQgc3BlY2lhbCBzY29wZSB0cmVhdG1lbnRcbiAgICAgICAgZWxlbWVudHNUb0NoZWNrLnVuc2hpZnQuYXBwbHkoZWxlbWVudHNUb0NoZWNrLCBlbGVtZW50LmNoaWxkcmVuKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbmRpZGF0ZXM7XG59O1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBub2RlIGhhcyBhbiBleHBsaWNpdGx5IHNwZWNpZmllZCBgdGFiaW5kZXhgIGF0dHJpYnV0ZS5cbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IG5vZGVcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHNvOyBmYWxzZSBpZiBub3QuXG4gKi9cbnZhciBoYXNUYWJJbmRleCA9IGZ1bmN0aW9uIGhhc1RhYkluZGV4KG5vZGUpIHtcbiAgcmV0dXJuICFpc05hTihwYXJzZUludChub2RlLmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKSwgMTApKTtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lIHRoZSB0YWIgaW5kZXggb2YgYSBnaXZlbiBub2RlLlxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gbm9kZVxuICogQHJldHVybnMge251bWJlcn0gVGFiIG9yZGVyIChuZWdhdGl2ZSwgMCwgb3IgcG9zaXRpdmUgbnVtYmVyKS5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBgbm9kZWAgaXMgZmFsc3kuXG4gKi9cbnZhciBnZXRUYWJJbmRleCA9IGZ1bmN0aW9uIGdldFRhYkluZGV4KG5vZGUpIHtcbiAgaWYgKCFub2RlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyBub2RlIHByb3ZpZGVkJyk7XG4gIH1cbiAgaWYgKG5vZGUudGFiSW5kZXggPCAwKSB7XG4gICAgLy8gaW4gQ2hyb21lLCA8ZGV0YWlscy8+LCA8YXVkaW8gY29udHJvbHMvPiBhbmQgPHZpZGVvIGNvbnRyb2xzLz4gZWxlbWVudHMgZ2V0IGEgZGVmYXVsdFxuICAgIC8vIGB0YWJJbmRleGAgb2YgLTEgd2hlbiB0aGUgJ3RhYmluZGV4JyBhdHRyaWJ1dGUgaXNuJ3Qgc3BlY2lmaWVkIGluIHRoZSBET00sXG4gICAgLy8geWV0IHRoZXkgYXJlIHN0aWxsIHBhcnQgb2YgdGhlIHJlZ3VsYXIgdGFiIG9yZGVyOyBpbiBGRiwgdGhleSBnZXQgYSBkZWZhdWx0XG4gICAgLy8gYHRhYkluZGV4YCBvZiAwOyBzaW5jZSBDaHJvbWUgc3RpbGwgcHV0cyB0aG9zZSBlbGVtZW50cyBpbiB0aGUgcmVndWxhciB0YWJcbiAgICAvLyBvcmRlciwgY29uc2lkZXIgdGhlaXIgdGFiIGluZGV4IHRvIGJlIDAuXG4gICAgLy8gQWxzbyBicm93c2VycyBkbyBub3QgcmV0dXJuIGB0YWJJbmRleGAgY29ycmVjdGx5IGZvciBjb250ZW50RWRpdGFibGUgbm9kZXM7XG4gICAgLy8gc28gaWYgdGhleSBkb24ndCBoYXZlIGEgdGFiaW5kZXggYXR0cmlidXRlIHNwZWNpZmljYWxseSBzZXQsIGFzc3VtZSBpdCdzIDAuXG4gICAgaWYgKCgvXihBVURJT3xWSURFT3xERVRBSUxTKSQvLnRlc3Qobm9kZS50YWdOYW1lKSB8fCBpc0NvbnRlbnRFZGl0YWJsZShub2RlKSkgJiYgIWhhc1RhYkluZGV4KG5vZGUpKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5vZGUudGFiSW5kZXg7XG59O1xuXG4vKipcbiAqIERldGVybWluZSB0aGUgdGFiIGluZGV4IG9mIGEgZ2l2ZW4gbm9kZSBfX2ZvciBzb3J0IG9yZGVyIHB1cnBvc2VzX18uXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBub2RlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1Njb3BlXSBUcnVlIGZvciBhIGN1c3RvbSBlbGVtZW50IHdpdGggc2hhZG93IHJvb3Qgb3Igc2xvdCB0aGF0LCBieSBkZWZhdWx0LFxuICogIGhhcyB0YWJJbmRleCAtMSwgYnV0IG5lZWRzIHRvIGJlIHNvcnRlZCBieSBkb2N1bWVudCBvcmRlciBpbiBvcmRlciBmb3IgaXRzIGNvbnRlbnQgdG8gYmVcbiAqICBpbnNlcnRlZCBpbnRvIHRoZSBjb3JyZWN0IHNvcnQgcG9zaXRpb24uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBUYWIgb3JkZXIgKG5lZ2F0aXZlLCAwLCBvciBwb3NpdGl2ZSBudW1iZXIpLlxuICovXG52YXIgZ2V0U29ydE9yZGVyVGFiSW5kZXggPSBmdW5jdGlvbiBnZXRTb3J0T3JkZXJUYWJJbmRleChub2RlLCBpc1Njb3BlKSB7XG4gIHZhciB0YWJJbmRleCA9IGdldFRhYkluZGV4KG5vZGUpO1xuICBpZiAodGFiSW5kZXggPCAwICYmIGlzU2NvcGUgJiYgIWhhc1RhYkluZGV4KG5vZGUpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgcmV0dXJuIHRhYkluZGV4O1xufTtcbnZhciBzb3J0T3JkZXJlZFRhYmJhYmxlcyA9IGZ1bmN0aW9uIHNvcnRPcmRlcmVkVGFiYmFibGVzKGEsIGIpIHtcbiAgcmV0dXJuIGEudGFiSW5kZXggPT09IGIudGFiSW5kZXggPyBhLmRvY3VtZW50T3JkZXIgLSBiLmRvY3VtZW50T3JkZXIgOiBhLnRhYkluZGV4IC0gYi50YWJJbmRleDtcbn07XG52YXIgaXNJbnB1dCA9IGZ1bmN0aW9uIGlzSW5wdXQobm9kZSkge1xuICByZXR1cm4gbm9kZS50YWdOYW1lID09PSAnSU5QVVQnO1xufTtcbnZhciBpc0hpZGRlbklucHV0ID0gZnVuY3Rpb24gaXNIaWRkZW5JbnB1dChub2RlKSB7XG4gIHJldHVybiBpc0lucHV0KG5vZGUpICYmIG5vZGUudHlwZSA9PT0gJ2hpZGRlbic7XG59O1xudmFyIGlzRGV0YWlsc1dpdGhTdW1tYXJ5ID0gZnVuY3Rpb24gaXNEZXRhaWxzV2l0aFN1bW1hcnkobm9kZSkge1xuICB2YXIgciA9IG5vZGUudGFnTmFtZSA9PT0gJ0RFVEFJTFMnICYmIEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShub2RlLmNoaWxkcmVuKS5zb21lKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHJldHVybiBjaGlsZC50YWdOYW1lID09PSAnU1VNTUFSWSc7XG4gIH0pO1xuICByZXR1cm4gcjtcbn07XG52YXIgZ2V0Q2hlY2tlZFJhZGlvID0gZnVuY3Rpb24gZ2V0Q2hlY2tlZFJhZGlvKG5vZGVzLCBmb3JtKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAobm9kZXNbaV0uY2hlY2tlZCAmJiBub2Rlc1tpXS5mb3JtID09PSBmb3JtKSB7XG4gICAgICByZXR1cm4gbm9kZXNbaV07XG4gICAgfVxuICB9XG59O1xudmFyIGlzVGFiYmFibGVSYWRpbyA9IGZ1bmN0aW9uIGlzVGFiYmFibGVSYWRpbyhub2RlKSB7XG4gIGlmICghbm9kZS5uYW1lKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIHJhZGlvU2NvcGUgPSBub2RlLmZvcm0gfHwgZ2V0Um9vdE5vZGUobm9kZSk7XG4gIHZhciBxdWVyeVJhZGlvcyA9IGZ1bmN0aW9uIHF1ZXJ5UmFkaW9zKG5hbWUpIHtcbiAgICByZXR1cm4gcmFkaW9TY29wZS5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPVwicmFkaW9cIl1bbmFtZT1cIicgKyBuYW1lICsgJ1wiXScpO1xuICB9O1xuICB2YXIgcmFkaW9TZXQ7XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LkNTUyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5DU1MuZXNjYXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmFkaW9TZXQgPSBxdWVyeVJhZGlvcyh3aW5kb3cuQ1NTLmVzY2FwZShub2RlLm5hbWUpKTtcbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgcmFkaW9TZXQgPSBxdWVyeVJhZGlvcyhub2RlLm5hbWUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0xvb2tzIGxpa2UgeW91IGhhdmUgYSByYWRpbyBidXR0b24gd2l0aCBhIG5hbWUgYXR0cmlidXRlIGNvbnRhaW5pbmcgaW52YWxpZCBDU1Mgc2VsZWN0b3IgY2hhcmFjdGVycyBhbmQgbmVlZCB0aGUgQ1NTLmVzY2FwZSBwb2x5ZmlsbDogJXMnLCBlcnIubWVzc2FnZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHZhciBjaGVja2VkID0gZ2V0Q2hlY2tlZFJhZGlvKHJhZGlvU2V0LCBub2RlLmZvcm0pO1xuICByZXR1cm4gIWNoZWNrZWQgfHwgY2hlY2tlZCA9PT0gbm9kZTtcbn07XG52YXIgaXNSYWRpbyA9IGZ1bmN0aW9uIGlzUmFkaW8obm9kZSkge1xuICByZXR1cm4gaXNJbnB1dChub2RlKSAmJiBub2RlLnR5cGUgPT09ICdyYWRpbyc7XG59O1xudmFyIGlzTm9uVGFiYmFibGVSYWRpbyA9IGZ1bmN0aW9uIGlzTm9uVGFiYmFibGVSYWRpbyhub2RlKSB7XG4gIHJldHVybiBpc1JhZGlvKG5vZGUpICYmICFpc1RhYmJhYmxlUmFkaW8obm9kZSk7XG59O1xuXG4vLyBkZXRlcm1pbmVzIGlmIGEgbm9kZSBpcyB1bHRpbWF0ZWx5IGF0dGFjaGVkIHRvIHRoZSB3aW5kb3cncyBkb2N1bWVudFxudmFyIGlzTm9kZUF0dGFjaGVkID0gZnVuY3Rpb24gaXNOb2RlQXR0YWNoZWQobm9kZSkge1xuICB2YXIgX25vZGVSb290O1xuICAvLyBUaGUgcm9vdCBub2RlIGlzIHRoZSBzaGFkb3cgcm9vdCBpZiB0aGUgbm9kZSBpcyBpbiBhIHNoYWRvdyBET007IHNvbWUgZG9jdW1lbnQgb3RoZXJ3aXNlXG4gIC8vICAoYnV0IE5PVCBfdGhlXyBkb2N1bWVudDsgc2VlIHNlY29uZCAnSWYnIGNvbW1lbnQgYmVsb3cgZm9yIG1vcmUpLlxuICAvLyBJZiByb290Tm9kZSBpcyBzaGFkb3cgcm9vdCwgaXQnbGwgaGF2ZSBhIGhvc3QsIHdoaWNoIGlzIHRoZSBlbGVtZW50IHRvIHdoaWNoIHRoZSBzaGFkb3dcbiAgLy8gIGlzIGF0dGFjaGVkLCBhbmQgdGhlIG9uZSB3ZSBuZWVkIHRvIGNoZWNrIGlmIGl0J3MgaW4gdGhlIGRvY3VtZW50IG9yIG5vdCAoYmVjYXVzZSB0aGVcbiAgLy8gIHNoYWRvdywgYW5kIGFsbCBub2RlcyBpdCBjb250YWlucywgaXMgbmV2ZXIgY29uc2lkZXJlZCBpbiB0aGUgZG9jdW1lbnQgc2luY2Ugc2hhZG93c1xuICAvLyAgYmVoYXZlIGxpa2Ugc2VsZi1jb250YWluZWQgRE9NczsgYnV0IGlmIHRoZSBzaGFkb3cncyBIT1NULCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBkb2N1bWVudCxcbiAgLy8gIGlzIGhpZGRlbiwgb3IgaXMgbm90IGluIHRoZSBkb2N1bWVudCBpdHNlbGYgYnV0IGlzIGRldGFjaGVkLCBpdCB3aWxsIGFmZmVjdCB0aGUgc2hhZG93J3NcbiAgLy8gIHZpc2liaWxpdHksIGluY2x1ZGluZyBhbGwgdGhlIG5vZGVzIGl0IGNvbnRhaW5zKS4gVGhlIGhvc3QgY291bGQgYmUgYW55IG5vcm1hbCBub2RlLFxuICAvLyAgb3IgYSBjdXN0b20gZWxlbWVudCAoaS5lLiB3ZWIgY29tcG9uZW50KS4gRWl0aGVyIHdheSwgdGhhdCdzIHRoZSBvbmUgdGhhdCBpcyBjb25zaWRlcmVkXG4gIC8vICBwYXJ0IG9mIHRoZSBkb2N1bWVudCwgbm90IHRoZSBzaGFkb3cgcm9vdCwgbm9yIGFueSBvZiBpdHMgY2hpbGRyZW4gKGkuZS4gdGhlIG5vZGUgYmVpbmdcbiAgLy8gIHRlc3RlZCkuXG4gIC8vIFRvIGZ1cnRoZXIgY29tcGxpY2F0ZSB0aGluZ3MsIHdlIGhhdmUgdG8gbG9vayBhbGwgdGhlIHdheSB1cCB1bnRpbCB3ZSBmaW5kIGEgc2hhZG93IEhPU1RcbiAgLy8gIHRoYXQgaXMgYXR0YWNoZWQgKG9yIGZpbmQgbm9uZSkgYmVjYXVzZSB0aGUgbm9kZSBtaWdodCBiZSBpbiBuZXN0ZWQgc2hhZG93cy4uLlxuICAvLyBJZiByb290Tm9kZSBpcyBub3QgYSBzaGFkb3cgcm9vdCwgaXQgd29uJ3QgaGF2ZSBhIGhvc3QsIGFuZCBzbyByb290Tm9kZSBzaG91bGQgYmUgdGhlXG4gIC8vICBkb2N1bWVudCAocGVyIHRoZSBkb2NzKSBhbmQgd2hpbGUgaXQncyBhIERvY3VtZW50LXR5cGUgb2JqZWN0LCB0aGF0IGRvY3VtZW50IGRvZXMgbm90XG4gIC8vICBhcHBlYXIgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIG5vZGUncyBgb3duZXJEb2N1bWVudGAgZm9yIHNvbWUgcmVhc29uLCBzbyBpdCdzIHNhZmVyXG4gIC8vICB0byBpZ25vcmUgdGhlIHJvb3ROb2RlIGF0IHRoaXMgcG9pbnQsIGFuZCB1c2UgYG5vZGUub3duZXJEb2N1bWVudGAuIE90aGVyd2lzZSxcbiAgLy8gIHVzaW5nIGByb290Tm9kZS5jb250YWlucyhub2RlKWAgd2lsbCBfYWx3YXlzXyBiZSB0cnVlIHdlJ2xsIGdldCBmYWxzZS1wb3NpdGl2ZXMgd2hlblxuICAvLyAgbm9kZSBpcyBhY3R1YWxseSBkZXRhY2hlZC5cbiAgLy8gTk9URTogSWYgYG5vZGVSb290SG9zdGAgb3IgYG5vZGVgIGhhcHBlbnMgdG8gYmUgdGhlIGBkb2N1bWVudGAgaXRzZWxmICh3aGljaCBpcyBwb3NzaWJsZVxuICAvLyAgaWYgYSB0YWJiYWJsZS9mb2N1c2FibGUgbm9kZSB3YXMgcXVpY2tseSBhZGRlZCB0byB0aGUgRE9NLCBmb2N1c2VkLCBhbmQgdGhlbiByZW1vdmVkXG4gIC8vICBmcm9tIHRoZSBET00gYXMgaW4gaHR0cHM6Ly9naXRodWIuY29tL2ZvY3VzLXRyYXAvZm9jdXMtdHJhcC1yZWFjdC9pc3N1ZXMvOTA1KSwgdGhlblxuICAvLyAgYG93bmVyRG9jdW1lbnRgIHdpbGwgYmUgYG51bGxgLCBoZW5jZSB0aGUgb3B0aW9uYWwgY2hhaW5pbmcgb24gaXQuXG4gIHZhciBub2RlUm9vdCA9IG5vZGUgJiYgZ2V0Um9vdE5vZGUobm9kZSk7XG4gIHZhciBub2RlUm9vdEhvc3QgPSAoX25vZGVSb290ID0gbm9kZVJvb3QpID09PSBudWxsIHx8IF9ub2RlUm9vdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX25vZGVSb290Lmhvc3Q7XG5cbiAgLy8gaW4gc29tZSBjYXNlcywgYSBkZXRhY2hlZCBub2RlIHdpbGwgcmV0dXJuIGl0c2VsZiBhcyB0aGUgcm9vdCBpbnN0ZWFkIG9mIGEgZG9jdW1lbnQgb3JcbiAgLy8gIHNoYWRvdyByb290IG9iamVjdCwgaW4gd2hpY2ggY2FzZSwgd2Ugc2hvdWxkbid0IHRyeSB0byBsb29rIGZ1cnRoZXIgdXAgdGhlIGhvc3QgY2hhaW5cbiAgdmFyIGF0dGFjaGVkID0gZmFsc2U7XG4gIGlmIChub2RlUm9vdCAmJiBub2RlUm9vdCAhPT0gbm9kZSkge1xuICAgIHZhciBfbm9kZVJvb3RIb3N0LCBfbm9kZVJvb3RIb3N0JG93bmVyRG8sIF9ub2RlJG93bmVyRG9jdW1lbnQ7XG4gICAgYXR0YWNoZWQgPSAhISgoX25vZGVSb290SG9zdCA9IG5vZGVSb290SG9zdCkgIT09IG51bGwgJiYgX25vZGVSb290SG9zdCAhPT0gdm9pZCAwICYmIChfbm9kZVJvb3RIb3N0JG93bmVyRG8gPSBfbm9kZVJvb3RIb3N0Lm93bmVyRG9jdW1lbnQpICE9PSBudWxsICYmIF9ub2RlUm9vdEhvc3Qkb3duZXJEbyAhPT0gdm9pZCAwICYmIF9ub2RlUm9vdEhvc3Qkb3duZXJEby5jb250YWlucyhub2RlUm9vdEhvc3QpIHx8IG5vZGUgIT09IG51bGwgJiYgbm9kZSAhPT0gdm9pZCAwICYmIChfbm9kZSRvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50KSAhPT0gbnVsbCAmJiBfbm9kZSRvd25lckRvY3VtZW50ICE9PSB2b2lkIDAgJiYgX25vZGUkb3duZXJEb2N1bWVudC5jb250YWlucyhub2RlKSk7XG4gICAgd2hpbGUgKCFhdHRhY2hlZCAmJiBub2RlUm9vdEhvc3QpIHtcbiAgICAgIHZhciBfbm9kZVJvb3QyLCBfbm9kZVJvb3RIb3N0MiwgX25vZGVSb290SG9zdDIkb3duZXJEO1xuICAgICAgLy8gc2luY2UgaXQncyBub3QgYXR0YWNoZWQgYW5kIHdlIGhhdmUgYSByb290IGhvc3QsIHRoZSBub2RlIE1VU1QgYmUgaW4gYSBuZXN0ZWQgc2hhZG93IERPTSxcbiAgICAgIC8vICB3aGljaCBtZWFucyB3ZSBuZWVkIHRvIGdldCB0aGUgaG9zdCdzIGhvc3QgYW5kIGNoZWNrIGlmIHRoYXQgcGFyZW50IGhvc3QgaXMgY29udGFpbmVkXG4gICAgICAvLyAgaW4gKGkuZS4gYXR0YWNoZWQgdG8pIHRoZSBkb2N1bWVudFxuICAgICAgbm9kZVJvb3QgPSBnZXRSb290Tm9kZShub2RlUm9vdEhvc3QpO1xuICAgICAgbm9kZVJvb3RIb3N0ID0gKF9ub2RlUm9vdDIgPSBub2RlUm9vdCkgPT09IG51bGwgfHwgX25vZGVSb290MiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX25vZGVSb290Mi5ob3N0O1xuICAgICAgYXR0YWNoZWQgPSAhISgoX25vZGVSb290SG9zdDIgPSBub2RlUm9vdEhvc3QpICE9PSBudWxsICYmIF9ub2RlUm9vdEhvc3QyICE9PSB2b2lkIDAgJiYgKF9ub2RlUm9vdEhvc3QyJG93bmVyRCA9IF9ub2RlUm9vdEhvc3QyLm93bmVyRG9jdW1lbnQpICE9PSBudWxsICYmIF9ub2RlUm9vdEhvc3QyJG93bmVyRCAhPT0gdm9pZCAwICYmIF9ub2RlUm9vdEhvc3QyJG93bmVyRC5jb250YWlucyhub2RlUm9vdEhvc3QpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGF0dGFjaGVkO1xufTtcbnZhciBpc1plcm9BcmVhID0gZnVuY3Rpb24gaXNaZXJvQXJlYShub2RlKSB7XG4gIHZhciBfbm9kZSRnZXRCb3VuZGluZ0NsaWUgPSBub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgIHdpZHRoID0gX25vZGUkZ2V0Qm91bmRpbmdDbGllLndpZHRoLFxuICAgIGhlaWdodCA9IF9ub2RlJGdldEJvdW5kaW5nQ2xpZS5oZWlnaHQ7XG4gIHJldHVybiB3aWR0aCA9PT0gMCAmJiBoZWlnaHQgPT09IDA7XG59O1xudmFyIGlzSGlkZGVuID0gZnVuY3Rpb24gaXNIaWRkZW4obm9kZSwgX3JlZikge1xuICB2YXIgZGlzcGxheUNoZWNrID0gX3JlZi5kaXNwbGF5Q2hlY2ssXG4gICAgZ2V0U2hhZG93Um9vdCA9IF9yZWYuZ2V0U2hhZG93Um9vdDtcbiAgLy8gTk9URTogdmlzaWJpbGl0eSB3aWxsIGJlIGB1bmRlZmluZWRgIGlmIG5vZGUgaXMgZGV0YWNoZWQgZnJvbSB0aGUgZG9jdW1lbnRcbiAgLy8gIChzZWUgbm90ZXMgYWJvdXQgdGhpcyBmdXJ0aGVyIGRvd24pLCB3aGljaCBtZWFucyB3ZSB3aWxsIGNvbnNpZGVyIGl0IHZpc2libGVcbiAgLy8gICh0aGlzIGlzIGxlZ2FjeSBiZWhhdmlvciBmcm9tIGEgdmVyeSBsb25nIHdheSBiYWNrKVxuICAvLyBOT1RFOiB3ZSBjaGVjayB0aGlzIHJlZ2FyZGxlc3Mgb2YgYGRpc3BsYXlDaGVjaz1cIm5vbmVcImAgYmVjYXVzZSB0aGlzIGlzIGFcbiAgLy8gIF92aXNpYmlsaXR5XyBjaGVjaywgbm90IGEgX2Rpc3BsYXlfIGNoZWNrXG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKG5vZGUpLnZpc2liaWxpdHkgPT09ICdoaWRkZW4nKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIGlzRGlyZWN0U3VtbWFyeSA9IG1hdGNoZXMuY2FsbChub2RlLCAnZGV0YWlscz5zdW1tYXJ5OmZpcnN0LW9mLXR5cGUnKTtcbiAgdmFyIG5vZGVVbmRlckRldGFpbHMgPSBpc0RpcmVjdFN1bW1hcnkgPyBub2RlLnBhcmVudEVsZW1lbnQgOiBub2RlO1xuICBpZiAobWF0Y2hlcy5jYWxsKG5vZGVVbmRlckRldGFpbHMsICdkZXRhaWxzOm5vdChbb3Blbl0pIConKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICghZGlzcGxheUNoZWNrIHx8IGRpc3BsYXlDaGVjayA9PT0gJ2Z1bGwnIHx8IGRpc3BsYXlDaGVjayA9PT0gJ2xlZ2FjeS1mdWxsJykge1xuICAgIGlmICh0eXBlb2YgZ2V0U2hhZG93Um9vdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gZmlndXJlIG91dCBpZiB3ZSBzaG91bGQgY29uc2lkZXIgdGhlIG5vZGUgdG8gYmUgaW4gYW4gdW5kaXNjbG9zZWQgc2hhZG93IGFuZCB1c2UgdGhlXG4gICAgICAvLyAgJ25vbi16ZXJvLWFyZWEnIGZhbGxiYWNrXG4gICAgICB2YXIgb3JpZ2luYWxOb2RlID0gbm9kZTtcbiAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgIHZhciBwYXJlbnRFbGVtZW50ID0gbm9kZS5wYXJlbnRFbGVtZW50O1xuICAgICAgICB2YXIgcm9vdE5vZGUgPSBnZXRSb290Tm9kZShub2RlKTtcbiAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQgJiYgIXBhcmVudEVsZW1lbnQuc2hhZG93Um9vdCAmJiBnZXRTaGFkb3dSb290KHBhcmVudEVsZW1lbnQpID09PSB0cnVlIC8vIGNoZWNrIGlmIHRoZXJlJ3MgYW4gdW5kaXNjbG9zZWQgc2hhZG93XG4gICAgICAgICkge1xuICAgICAgICAgIC8vIG5vZGUgaGFzIGFuIHVuZGlzY2xvc2VkIHNoYWRvdyB3aGljaCBtZWFucyB3ZSBjYW4gb25seSB0cmVhdCBpdCBhcyBhIGJsYWNrIGJveCwgc28gd2VcbiAgICAgICAgICAvLyAgZmFsbCBiYWNrIHRvIGEgbm9uLXplcm8tYXJlYSB0ZXN0XG4gICAgICAgICAgcmV0dXJuIGlzWmVyb0FyZWEobm9kZSk7XG4gICAgICAgIH0gZWxzZSBpZiAobm9kZS5hc3NpZ25lZFNsb3QpIHtcbiAgICAgICAgICAvLyBpdGVyYXRlIHVwIHNsb3RcbiAgICAgICAgICBub2RlID0gbm9kZS5hc3NpZ25lZFNsb3Q7XG4gICAgICAgIH0gZWxzZSBpZiAoIXBhcmVudEVsZW1lbnQgJiYgcm9vdE5vZGUgIT09IG5vZGUub3duZXJEb2N1bWVudCkge1xuICAgICAgICAgIC8vIGNyb3NzIHNoYWRvdyBib3VuZGFyeVxuICAgICAgICAgIG5vZGUgPSByb290Tm9kZS5ob3N0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGl0ZXJhdGUgdXAgbm9ybWFsIGRvbVxuICAgICAgICAgIG5vZGUgPSBwYXJlbnRFbGVtZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBub2RlID0gb3JpZ2luYWxOb2RlO1xuICAgIH1cbiAgICAvLyBlbHNlLCBgZ2V0U2hhZG93Um9vdGAgbWlnaHQgYmUgdHJ1ZSwgYnV0IGFsbCB0aGF0IGRvZXMgaXMgZW5hYmxlIHNoYWRvdyBET00gc3VwcG9ydFxuICAgIC8vICAoaS5lLiBpdCBkb2VzIG5vdCBhbHNvIHByZXN1bWUgdGhhdCBhbGwgbm9kZXMgbWlnaHQgaGF2ZSB1bmRpc2Nsb3NlZCBzaGFkb3dzKTsgb3JcbiAgICAvLyAgaXQgbWlnaHQgYmUgYSBmYWxzeSB2YWx1ZSwgd2hpY2ggbWVhbnMgc2hhZG93IERPTSBzdXBwb3J0IGlzIGRpc2FibGVkXG5cbiAgICAvLyBTaW5jZSB3ZSBkaWRuJ3QgZmluZCBpdCBzaXR0aW5nIGluIGFuIHVuZGlzY2xvc2VkIHNoYWRvdyAob3Igc2hhZG93cyBhcmUgZGlzYWJsZWQpXG4gICAgLy8gIG5vdyB3ZSBjYW4ganVzdCB0ZXN0IHRvIHNlZSBpZiBpdCB3b3VsZCBub3JtYWxseSBiZSB2aXNpYmxlIG9yIG5vdCwgcHJvdmlkZWQgaXQnc1xuICAgIC8vICBhdHRhY2hlZCB0byB0aGUgbWFpbiBkb2N1bWVudC5cbiAgICAvLyBOT1RFOiBXZSBtdXN0IGNvbnNpZGVyIGNhc2Ugd2hlcmUgbm9kZSBpcyBpbnNpZGUgYSBzaGFkb3cgRE9NIGFuZCBnaXZlbiBkaXJlY3RseSB0b1xuICAgIC8vICBgaXNUYWJiYWJsZSgpYCBvciBgaXNGb2N1c2FibGUoKWAgLS0gcmVnYXJkbGVzcyBvZiBgZ2V0U2hhZG93Um9vdGAgb3B0aW9uIHNldHRpbmcuXG5cbiAgICBpZiAoaXNOb2RlQXR0YWNoZWQobm9kZSkpIHtcbiAgICAgIC8vIHRoaXMgd29ya3Mgd2hlcmV2ZXIgdGhlIG5vZGUgaXM6IGlmIHRoZXJlJ3MgYXQgbGVhc3Qgb25lIGNsaWVudCByZWN0LCBpdCdzXG4gICAgICAvLyAgc29tZWhvdyBkaXNwbGF5ZWQ7IGl0IGFsc28gY292ZXJzIHRoZSBDU1MgJ2Rpc3BsYXk6IGNvbnRlbnRzJyBjYXNlIHdoZXJlIHRoZVxuICAgICAgLy8gIG5vZGUgaXRzZWxmIGlzIGhpZGRlbiBpbiBwbGFjZSBvZiBpdHMgY29udGVudHM7IGFuZCB0aGVyZSdzIG5vIG5lZWQgdG8gc2VhcmNoXG4gICAgICAvLyAgdXAgdGhlIGhpZXJhcmNoeSBlaXRoZXJcbiAgICAgIHJldHVybiAhbm9kZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvLyBFbHNlLCB0aGUgbm9kZSBpc24ndCBhdHRhY2hlZCB0byB0aGUgZG9jdW1lbnQsIHdoaWNoIG1lYW5zIHRoZSBgZ2V0Q2xpZW50UmVjdHMoKWBcbiAgICAvLyAgQVBJIHdpbGwgX19hbHdheXNfXyByZXR1cm4gemVybyByZWN0cyAodGhpcyBjYW4gaGFwcGVuLCBmb3IgZXhhbXBsZSwgaWYgUmVhY3RcbiAgICAvLyAgaXMgdXNlZCB0byByZW5kZXIgbm9kZXMgb250byBhIGRldGFjaGVkIHRyZWUsIGFzIGNvbmZpcm1lZCBpbiB0aGlzIHRocmVhZDpcbiAgICAvLyAgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy85MTE3I2lzc3VlY29tbWVudC0yODQyMjg4NzApXG4gICAgLy9cbiAgICAvLyBJdCBhbHNvIG1lYW5zIHRoYXQgZXZlbiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShub2RlKS5kaXNwbGF5IHdpbGwgcmV0dXJuIGB1bmRlZmluZWRgXG4gICAgLy8gIGJlY2F1c2Ugc3R5bGVzIGFyZSBvbmx5IGNvbXB1dGVkIGZvciBub2RlcyB0aGF0IGFyZSBpbiB0aGUgZG9jdW1lbnQuXG4gICAgLy9cbiAgICAvLyBOT1RFOiBUSElTIEhBUyBCRUVOIFRIRSBDQVNFIEZPUiBZRUFSUy4gSXQgaXMgbm90IG5ldywgbm9yIGlzIGl0IGNhdXNlZCBieSB0YWJiYWJsZVxuICAgIC8vICBzb21laG93LiBUaG91Z2ggaXQgd2FzIG5ldmVyIHN0YXRlZCBvZmZpY2lhbGx5LCBhbnlvbmUgd2hvIGhhcyBldmVyIHVzZWQgdGFiYmFibGVcbiAgICAvLyAgQVBJcyBvbiBub2RlcyBpbiBkZXRhY2hlZCBjb250YWluZXJzIGhhcyBhY3R1YWxseSBpbXBsaWNpdGx5IHVzZWQgdGFiYmFibGUgaW4gd2hhdFxuICAgIC8vICB3YXMgbGF0ZXIgKGFzIG9mIHY1LjIuMCBvbiBBcHIgOSwgMjAyMSkgY2FsbGVkIGBkaXNwbGF5Q2hlY2s9XCJub25lXCJgIG1vZGUgLS0gZXNzZW50aWFsbHlcbiAgICAvLyAgY29uc2lkZXJpbmcgX19ldmVyeXRoaW5nX18gdG8gYmUgdmlzaWJsZSBiZWNhdXNlIG9mIHRoZSBpbm5hYmlsaXR5IHRvIGRldGVybWluZSBzdHlsZXMuXG4gICAgLy9cbiAgICAvLyB2Ni4wLjA6IEFzIG9mIHRoaXMgbWFqb3IgcmVsZWFzZSwgdGhlIGRlZmF1bHQgJ2Z1bGwnIG9wdGlvbiBfX25vIGxvbmdlciB0cmVhdHMgZGV0YWNoZWRcbiAgICAvLyAgbm9kZXMgYXMgdmlzaWJsZSB3aXRoIHRoZSAnbm9uZScgZmFsbGJhY2suX19cbiAgICBpZiAoZGlzcGxheUNoZWNrICE9PSAnbGVnYWN5LWZ1bGwnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTsgLy8gaGlkZGVuXG4gICAgfVxuICAgIC8vIGVsc2UsIGZhbGxiYWNrIHRvICdub25lJyBtb2RlIGFuZCBjb25zaWRlciB0aGUgbm9kZSB2aXNpYmxlXG4gIH0gZWxzZSBpZiAoZGlzcGxheUNoZWNrID09PSAnbm9uLXplcm8tYXJlYScpIHtcbiAgICAvLyBOT1RFOiBFdmVuIHRob3VnaCB0aGlzIHRlc3RzIHRoYXQgdGhlIG5vZGUncyBjbGllbnQgcmVjdCBpcyBub24temVybyB0byBkZXRlcm1pbmVcbiAgICAvLyAgd2hldGhlciBpdCdzIGRpc3BsYXllZCwgYW5kIHRoYXQgYSBkZXRhY2hlZCBub2RlIHdpbGwgX19hbHdheXNfXyBoYXZlIGEgemVyby1hcmVhXG4gICAgLy8gIGNsaWVudCByZWN0LCB3ZSBkb24ndCBzcGVjaWFsLWNhc2UgZm9yIHdoZXRoZXIgdGhlIG5vZGUgaXMgYXR0YWNoZWQgb3Igbm90LiBJblxuICAgIC8vICB0aGlzIG1vZGUsIHdlIGRvIHdhbnQgdG8gY29uc2lkZXIgbm9kZXMgdGhhdCBoYXZlIGEgemVybyBhcmVhIHRvIGJlIGhpZGRlbiBhdCBhbGxcbiAgICAvLyAgdGltZXMsIGFuZCB0aGF0IGluY2x1ZGVzIGF0dGFjaGVkIG9yIG5vdC5cbiAgICByZXR1cm4gaXNaZXJvQXJlYShub2RlKTtcbiAgfVxuXG4gIC8vIHZpc2libGUsIGFzIGZhciBhcyB3ZSBjYW4gdGVsbCwgb3IgcGVyIGN1cnJlbnQgYGRpc3BsYXlDaGVjaz1ub25lYCBtb2RlLCB3ZSBhc3N1bWVcbiAgLy8gIGl0J3MgdmlzaWJsZVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vLyBmb3JtIGZpZWxkcyAobmVzdGVkKSBpbnNpZGUgYSBkaXNhYmxlZCBmaWVsZHNldCBhcmUgbm90IGZvY3VzYWJsZS90YWJiYWJsZVxuLy8gIHVubGVzcyB0aGV5IGFyZSBpbiB0aGUgX2ZpcnN0XyA8bGVnZW5kPiBlbGVtZW50IG9mIHRoZSB0b3AtbW9zdCBkaXNhYmxlZFxuLy8gIGZpZWxkc2V0XG52YXIgaXNEaXNhYmxlZEZyb21GaWVsZHNldCA9IGZ1bmN0aW9uIGlzRGlzYWJsZWRGcm9tRmllbGRzZXQobm9kZSkge1xuICBpZiAoL14oSU5QVVR8QlVUVE9OfFNFTEVDVHxURVhUQVJFQSkkLy50ZXN0KG5vZGUudGFnTmFtZSkpIHtcbiAgICB2YXIgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50RWxlbWVudDtcbiAgICAvLyBjaGVjayBpZiBgbm9kZWAgaXMgY29udGFpbmVkIGluIGEgZGlzYWJsZWQgPGZpZWxkc2V0PlxuICAgIHdoaWxlIChwYXJlbnROb2RlKSB7XG4gICAgICBpZiAocGFyZW50Tm9kZS50YWdOYW1lID09PSAnRklFTERTRVQnICYmIHBhcmVudE5vZGUuZGlzYWJsZWQpIHtcbiAgICAgICAgLy8gbG9vayBmb3IgdGhlIGZpcnN0IDxsZWdlbmQ+IGFtb25nIHRoZSBjaGlsZHJlbiBvZiB0aGUgZGlzYWJsZWQgPGZpZWxkc2V0PlxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmVudE5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgY2hpbGQgPSBwYXJlbnROb2RlLmNoaWxkcmVuLml0ZW0oaSk7XG4gICAgICAgICAgLy8gd2hlbiB0aGUgZmlyc3QgPGxlZ2VuZD4gKGluIGRvY3VtZW50IG9yZGVyKSBpcyBmb3VuZFxuICAgICAgICAgIGlmIChjaGlsZC50YWdOYW1lID09PSAnTEVHRU5EJykge1xuICAgICAgICAgICAgLy8gaWYgaXRzIHBhcmVudCA8ZmllbGRzZXQ+IGlzIG5vdCBuZXN0ZWQgaW4gYW5vdGhlciBkaXNhYmxlZCA8ZmllbGRzZXQ+LFxuICAgICAgICAgICAgLy8gcmV0dXJuIHdoZXRoZXIgYG5vZGVgIGlzIGEgZGVzY2VuZGFudCBvZiBpdHMgZmlyc3QgPGxlZ2VuZD5cbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVzLmNhbGwocGFyZW50Tm9kZSwgJ2ZpZWxkc2V0W2Rpc2FibGVkXSAqJykgPyB0cnVlIDogIWNoaWxkLmNvbnRhaW5zKG5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyB0aGUgZGlzYWJsZWQgPGZpZWxkc2V0PiBjb250YWluaW5nIGBub2RlYCBoYXMgbm8gPGxlZ2VuZD5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5wYXJlbnRFbGVtZW50O1xuICAgIH1cbiAgfVxuXG4gIC8vIGVsc2UsIG5vZGUncyB0YWJiYWJsZS9mb2N1c2FibGUgc3RhdGUgc2hvdWxkIG5vdCBiZSBhZmZlY3RlZCBieSBhIGZpZWxkc2V0J3NcbiAgLy8gIGVuYWJsZWQvZGlzYWJsZWQgc3RhdGVcbiAgcmV0dXJuIGZhbHNlO1xufTtcbnZhciBpc05vZGVNYXRjaGluZ1NlbGVjdG9yRm9jdXNhYmxlID0gZnVuY3Rpb24gaXNOb2RlTWF0Y2hpbmdTZWxlY3RvckZvY3VzYWJsZShvcHRpb25zLCBub2RlKSB7XG4gIGlmIChub2RlLmRpc2FibGVkIHx8XG4gIC8vIHdlIG11c3QgZG8gYW4gaW5lcnQgbG9vayB1cCB0byBmaWx0ZXIgb3V0IGFueSBlbGVtZW50cyBpbnNpZGUgYW4gaW5lcnQgYW5jZXN0b3JcbiAgLy8gIGJlY2F1c2Ugd2UncmUgbGltaXRlZCBpbiB0aGUgdHlwZSBvZiBzZWxlY3RvcnMgd2UgY2FuIHVzZSBpbiBKU0RvbSAoc2VlIHJlbGF0ZWRcbiAgLy8gIG5vdGUgcmVsYXRlZCB0byBgY2FuZGlkYXRlU2VsZWN0b3JzYClcbiAgaXNJbmVydChub2RlKSB8fCBpc0hpZGRlbklucHV0KG5vZGUpIHx8IGlzSGlkZGVuKG5vZGUsIG9wdGlvbnMpIHx8XG4gIC8vIEZvciBhIGRldGFpbHMgZWxlbWVudCB3aXRoIGEgc3VtbWFyeSwgdGhlIHN1bW1hcnkgZWxlbWVudCBnZXRzIHRoZSBmb2N1c1xuICBpc0RldGFpbHNXaXRoU3VtbWFyeShub2RlKSB8fCBpc0Rpc2FibGVkRnJvbUZpZWxkc2V0KG5vZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBpc05vZGVNYXRjaGluZ1NlbGVjdG9yVGFiYmFibGUgPSBmdW5jdGlvbiBpc05vZGVNYXRjaGluZ1NlbGVjdG9yVGFiYmFibGUob3B0aW9ucywgbm9kZSkge1xuICBpZiAoaXNOb25UYWJiYWJsZVJhZGlvKG5vZGUpIHx8IGdldFRhYkluZGV4KG5vZGUpIDwgMCB8fCAhaXNOb2RlTWF0Y2hpbmdTZWxlY3RvckZvY3VzYWJsZShvcHRpb25zLCBub2RlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgaXNWYWxpZFNoYWRvd1Jvb3RUYWJiYWJsZSA9IGZ1bmN0aW9uIGlzVmFsaWRTaGFkb3dSb290VGFiYmFibGUoc2hhZG93SG9zdE5vZGUpIHtcbiAgdmFyIHRhYkluZGV4ID0gcGFyc2VJbnQoc2hhZG93SG9zdE5vZGUuZ2V0QXR0cmlidXRlKCd0YWJpbmRleCcpLCAxMCk7XG4gIGlmIChpc05hTih0YWJJbmRleCkgfHwgdGFiSW5kZXggPj0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIC8vIElmIGEgY3VzdG9tIGVsZW1lbnQgaGFzIGFuIGV4cGxpY2l0IG5lZ2F0aXZlIHRhYmluZGV4LFxuICAvLyBicm93c2VycyB3aWxsIG5vdCBhbGxvdyB0YWIgdGFyZ2V0aW5nIHNhaWQgZWxlbWVudCdzIGNoaWxkcmVuLlxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7QXJyYXkuPEVsZW1lbnR8Q2FuZGlkYXRlU2NvcGU+fSBjYW5kaWRhdGVzXG4gKiBAcmV0dXJucyBFbGVtZW50W11cbiAqL1xudmFyIHNvcnRCeU9yZGVyID0gZnVuY3Rpb24gc29ydEJ5T3JkZXIoY2FuZGlkYXRlcykge1xuICB2YXIgcmVndWxhclRhYmJhYmxlcyA9IFtdO1xuICB2YXIgb3JkZXJlZFRhYmJhYmxlcyA9IFtdO1xuICBjYW5kaWRhdGVzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGkpIHtcbiAgICB2YXIgaXNTY29wZSA9ICEhaXRlbS5zY29wZVBhcmVudDtcbiAgICB2YXIgZWxlbWVudCA9IGlzU2NvcGUgPyBpdGVtLnNjb3BlUGFyZW50IDogaXRlbTtcbiAgICB2YXIgY2FuZGlkYXRlVGFiaW5kZXggPSBnZXRTb3J0T3JkZXJUYWJJbmRleChlbGVtZW50LCBpc1Njb3BlKTtcbiAgICB2YXIgZWxlbWVudHMgPSBpc1Njb3BlID8gc29ydEJ5T3JkZXIoaXRlbS5jYW5kaWRhdGVzKSA6IGVsZW1lbnQ7XG4gICAgaWYgKGNhbmRpZGF0ZVRhYmluZGV4ID09PSAwKSB7XG4gICAgICBpc1Njb3BlID8gcmVndWxhclRhYmJhYmxlcy5wdXNoLmFwcGx5KHJlZ3VsYXJUYWJiYWJsZXMsIGVsZW1lbnRzKSA6IHJlZ3VsYXJUYWJiYWJsZXMucHVzaChlbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3JkZXJlZFRhYmJhYmxlcy5wdXNoKHtcbiAgICAgICAgZG9jdW1lbnRPcmRlcjogaSxcbiAgICAgICAgdGFiSW5kZXg6IGNhbmRpZGF0ZVRhYmluZGV4LFxuICAgICAgICBpdGVtOiBpdGVtLFxuICAgICAgICBpc1Njb3BlOiBpc1Njb3BlLFxuICAgICAgICBjb250ZW50OiBlbGVtZW50c1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG9yZGVyZWRUYWJiYWJsZXMuc29ydChzb3J0T3JkZXJlZFRhYmJhYmxlcykucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHNvcnRhYmxlKSB7XG4gICAgc29ydGFibGUuaXNTY29wZSA/IGFjYy5wdXNoLmFwcGx5KGFjYywgc29ydGFibGUuY29udGVudCkgOiBhY2MucHVzaChzb3J0YWJsZS5jb250ZW50KTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSkuY29uY2F0KHJlZ3VsYXJUYWJiYWJsZXMpO1xufTtcbnZhciB0YWJiYWJsZSA9IGZ1bmN0aW9uIHRhYmJhYmxlKGNvbnRhaW5lciwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIGNhbmRpZGF0ZXM7XG4gIGlmIChvcHRpb25zLmdldFNoYWRvd1Jvb3QpIHtcbiAgICBjYW5kaWRhdGVzID0gZ2V0Q2FuZGlkYXRlc0l0ZXJhdGl2ZWx5KFtjb250YWluZXJdLCBvcHRpb25zLmluY2x1ZGVDb250YWluZXIsIHtcbiAgICAgIGZpbHRlcjogaXNOb2RlTWF0Y2hpbmdTZWxlY3RvclRhYmJhYmxlLmJpbmQobnVsbCwgb3B0aW9ucyksXG4gICAgICBmbGF0dGVuOiBmYWxzZSxcbiAgICAgIGdldFNoYWRvd1Jvb3Q6IG9wdGlvbnMuZ2V0U2hhZG93Um9vdCxcbiAgICAgIHNoYWRvd1Jvb3RGaWx0ZXI6IGlzVmFsaWRTaGFkb3dSb290VGFiYmFibGVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBjYW5kaWRhdGVzID0gZ2V0Q2FuZGlkYXRlcyhjb250YWluZXIsIG9wdGlvbnMuaW5jbHVkZUNvbnRhaW5lciwgaXNOb2RlTWF0Y2hpbmdTZWxlY3RvclRhYmJhYmxlLmJpbmQobnVsbCwgb3B0aW9ucykpO1xuICB9XG4gIHJldHVybiBzb3J0QnlPcmRlcihjYW5kaWRhdGVzKTtcbn07XG52YXIgZm9jdXNhYmxlID0gZnVuY3Rpb24gZm9jdXNhYmxlKGNvbnRhaW5lciwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIGNhbmRpZGF0ZXM7XG4gIGlmIChvcHRpb25zLmdldFNoYWRvd1Jvb3QpIHtcbiAgICBjYW5kaWRhdGVzID0gZ2V0Q2FuZGlkYXRlc0l0ZXJhdGl2ZWx5KFtjb250YWluZXJdLCBvcHRpb25zLmluY2x1ZGVDb250YWluZXIsIHtcbiAgICAgIGZpbHRlcjogaXNOb2RlTWF0Y2hpbmdTZWxlY3RvckZvY3VzYWJsZS5iaW5kKG51bGwsIG9wdGlvbnMpLFxuICAgICAgZmxhdHRlbjogdHJ1ZSxcbiAgICAgIGdldFNoYWRvd1Jvb3Q6IG9wdGlvbnMuZ2V0U2hhZG93Um9vdFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGNhbmRpZGF0ZXMgPSBnZXRDYW5kaWRhdGVzKGNvbnRhaW5lciwgb3B0aW9ucy5pbmNsdWRlQ29udGFpbmVyLCBpc05vZGVNYXRjaGluZ1NlbGVjdG9yRm9jdXNhYmxlLmJpbmQobnVsbCwgb3B0aW9ucykpO1xuICB9XG4gIHJldHVybiBjYW5kaWRhdGVzO1xufTtcbnZhciBpc1RhYmJhYmxlID0gZnVuY3Rpb24gaXNUYWJiYWJsZShub2RlLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBpZiAoIW5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIG5vZGUgcHJvdmlkZWQnKTtcbiAgfVxuICBpZiAobWF0Y2hlcy5jYWxsKG5vZGUsIGNhbmRpZGF0ZVNlbGVjdG9yKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGlzTm9kZU1hdGNoaW5nU2VsZWN0b3JUYWJiYWJsZShvcHRpb25zLCBub2RlKTtcbn07XG52YXIgZm9jdXNhYmxlQ2FuZGlkYXRlU2VsZWN0b3IgPSAvKiAjX19QVVJFX18gKi9jYW5kaWRhdGVTZWxlY3RvcnMuY29uY2F0KCdpZnJhbWUnKS5qb2luKCcsJyk7XG52YXIgaXNGb2N1c2FibGUgPSBmdW5jdGlvbiBpc0ZvY3VzYWJsZShub2RlLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBpZiAoIW5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIG5vZGUgcHJvdmlkZWQnKTtcbiAgfVxuICBpZiAobWF0Y2hlcy5jYWxsKG5vZGUsIGZvY3VzYWJsZUNhbmRpZGF0ZVNlbGVjdG9yKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGlzTm9kZU1hdGNoaW5nU2VsZWN0b3JGb2N1c2FibGUob3B0aW9ucywgbm9kZSk7XG59O1xuXG5leHBvcnQgeyBmb2N1c2FibGUsIGdldFRhYkluZGV4LCBpc0ZvY3VzYWJsZSwgaXNUYWJiYWJsZSwgdGFiYmFibGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmVzbS5qcy5tYXBcbiIsImltcG9ydCB7IGNvbXB1dGVQb3NpdGlvbiwgYXJyb3cgYXMgYXJyb3ckMiwgb2Zmc2V0IGFzIG9mZnNldCQxLCBzaGlmdCBhcyBzaGlmdCQxLCBsaW1pdFNoaWZ0IGFzIGxpbWl0U2hpZnQkMSwgZmxpcCBhcyBmbGlwJDEsIHNpemUgYXMgc2l6ZSQxLCBhdXRvUGxhY2VtZW50IGFzIGF1dG9QbGFjZW1lbnQkMSwgaGlkZSBhcyBoaWRlJDEsIGlubGluZSBhcyBpbmxpbmUkMSB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuZXhwb3J0IHsgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIHBsYXRmb3JtIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5cbnZhciBpbmRleCA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgPyB1c2VMYXlvdXRFZmZlY3QgOiB1c2VFZmZlY3Q7XG5cbi8vIEZvcmsgb2YgYGZhc3QtZGVlcC1lcXVhbGAgdGhhdCBvbmx5IGRvZXMgdGhlIGNvbXBhcmlzb25zIHdlIG5lZWQgYW5kIGNvbXBhcmVzXG4vLyBmdW5jdGlvbnNcbmZ1bmN0aW9uIGRlZXBFcXVhbChhLCBiKSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHR5cGVvZiBhICE9PSB0eXBlb2YgYikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodHlwZW9mIGEgPT09ICdmdW5jdGlvbicgJiYgYS50b1N0cmluZygpID09PSBiLnRvU3RyaW5nKCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBsZXQgbGVuZ3RoO1xuICBsZXQgaTtcbiAgbGV0IGtleXM7XG4gIGlmIChhICYmIGIgJiYgdHlwZW9mIGEgPT09ICdvYmplY3QnKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgIGxlbmd0aCA9IGEubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOykge1xuICAgICAgICBpZiAoIWRlZXBFcXVhbChhW2ldLCBiW2ldKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGtleXMgPSBPYmplY3Qua2V5cyhhKTtcbiAgICBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICBpZiAobGVuZ3RoICE9PSBPYmplY3Qua2V5cyhiKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KSB7XG4gICAgICBpZiAoIXt9Lmhhc093blByb3BlcnR5LmNhbGwoYiwga2V5c1tpXSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgICBpZiAoa2V5ID09PSAnX293bmVyJyAmJiBhLiQkdHlwZW9mKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFkZWVwRXF1YWwoYVtrZXldLCBiW2tleV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGEgIT09IGEgJiYgYiAhPT0gYjtcbn1cblxuZnVuY3Rpb24gZ2V0RFBSKGVsZW1lbnQpIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgY29uc3Qgd2luID0gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IHx8IHdpbmRvdztcbiAgcmV0dXJuIHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG59XG5cbmZ1bmN0aW9uIHJvdW5kQnlEUFIoZWxlbWVudCwgdmFsdWUpIHtcbiAgY29uc3QgZHByID0gZ2V0RFBSKGVsZW1lbnQpO1xuICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIGRwcikgLyBkcHI7XG59XG5cbmZ1bmN0aW9uIHVzZUxhdGVzdFJlZih2YWx1ZSkge1xuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWYodmFsdWUpO1xuICBpbmRleCgoKSA9PiB7XG4gICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZWY7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhIGZsb2F0aW5nIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdXNlRmxvYXRpbmdcbiAqL1xuZnVuY3Rpb24gdXNlRmxvYXRpbmcob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQgPSAnYm90dG9tJyxcbiAgICBzdHJhdGVneSA9ICdhYnNvbHV0ZScsXG4gICAgbWlkZGxld2FyZSA9IFtdLFxuICAgIHBsYXRmb3JtLFxuICAgIGVsZW1lbnRzOiB7XG4gICAgICByZWZlcmVuY2U6IGV4dGVybmFsUmVmZXJlbmNlLFxuICAgICAgZmxvYXRpbmc6IGV4dGVybmFsRmxvYXRpbmdcbiAgICB9ID0ge30sXG4gICAgdHJhbnNmb3JtID0gdHJ1ZSxcbiAgICB3aGlsZUVsZW1lbnRzTW91bnRlZCxcbiAgICBvcGVuXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBbZGF0YSwgc2V0RGF0YV0gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgeDogMCxcbiAgICB5OiAwLFxuICAgIHN0cmF0ZWd5LFxuICAgIHBsYWNlbWVudCxcbiAgICBtaWRkbGV3YXJlRGF0YToge30sXG4gICAgaXNQb3NpdGlvbmVkOiBmYWxzZVxuICB9KTtcbiAgY29uc3QgW2xhdGVzdE1pZGRsZXdhcmUsIHNldExhdGVzdE1pZGRsZXdhcmVdID0gUmVhY3QudXNlU3RhdGUobWlkZGxld2FyZSk7XG4gIGlmICghZGVlcEVxdWFsKGxhdGVzdE1pZGRsZXdhcmUsIG1pZGRsZXdhcmUpKSB7XG4gICAgc2V0TGF0ZXN0TWlkZGxld2FyZShtaWRkbGV3YXJlKTtcbiAgfVxuICBjb25zdCBbX3JlZmVyZW5jZSwgX3NldFJlZmVyZW5jZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW19mbG9hdGluZywgX3NldEZsb2F0aW5nXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBzZXRSZWZlcmVuY2UgPSBSZWFjdC51c2VDYWxsYmFjayhub2RlID0+IHtcbiAgICBpZiAobm9kZSAhPT0gcmVmZXJlbmNlUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJlZmVyZW5jZVJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgIF9zZXRSZWZlcmVuY2Uobm9kZSk7XG4gICAgfVxuICB9LCBbXSk7XG4gIGNvbnN0IHNldEZsb2F0aW5nID0gUmVhY3QudXNlQ2FsbGJhY2sobm9kZSA9PiB7XG4gICAgaWYgKG5vZGUgIT09IGZsb2F0aW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgIGZsb2F0aW5nUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgX3NldEZsb2F0aW5nKG5vZGUpO1xuICAgIH1cbiAgfSwgW10pO1xuICBjb25zdCByZWZlcmVuY2VFbCA9IGV4dGVybmFsUmVmZXJlbmNlIHx8IF9yZWZlcmVuY2U7XG4gIGNvbnN0IGZsb2F0aW5nRWwgPSBleHRlcm5hbEZsb2F0aW5nIHx8IF9mbG9hdGluZztcbiAgY29uc3QgcmVmZXJlbmNlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBmbG9hdGluZ1JlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgZGF0YVJlZiA9IFJlYWN0LnVzZVJlZihkYXRhKTtcbiAgY29uc3QgaGFzV2hpbGVFbGVtZW50c01vdW50ZWQgPSB3aGlsZUVsZW1lbnRzTW91bnRlZCAhPSBudWxsO1xuICBjb25zdCB3aGlsZUVsZW1lbnRzTW91bnRlZFJlZiA9IHVzZUxhdGVzdFJlZih3aGlsZUVsZW1lbnRzTW91bnRlZCk7XG4gIGNvbnN0IHBsYXRmb3JtUmVmID0gdXNlTGF0ZXN0UmVmKHBsYXRmb3JtKTtcbiAgY29uc3Qgb3BlblJlZiA9IHVzZUxhdGVzdFJlZihvcGVuKTtcbiAgY29uc3QgdXBkYXRlID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghcmVmZXJlbmNlUmVmLmN1cnJlbnQgfHwgIWZsb2F0aW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgcGxhY2VtZW50LFxuICAgICAgc3RyYXRlZ3ksXG4gICAgICBtaWRkbGV3YXJlOiBsYXRlc3RNaWRkbGV3YXJlXG4gICAgfTtcbiAgICBpZiAocGxhdGZvcm1SZWYuY3VycmVudCkge1xuICAgICAgY29uZmlnLnBsYXRmb3JtID0gcGxhdGZvcm1SZWYuY3VycmVudDtcbiAgICB9XG4gICAgY29tcHV0ZVBvc2l0aW9uKHJlZmVyZW5jZVJlZi5jdXJyZW50LCBmbG9hdGluZ1JlZi5jdXJyZW50LCBjb25maWcpLnRoZW4oZGF0YSA9PiB7XG4gICAgICBjb25zdCBmdWxsRGF0YSA9IHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgLy8gVGhlIGZsb2F0aW5nIGVsZW1lbnQncyBwb3NpdGlvbiBtYXkgYmUgcmVjb21wdXRlZCB3aGlsZSBpdCdzIGNsb3NlZFxuICAgICAgICAvLyBidXQgc3RpbGwgbW91bnRlZCAoc3VjaCBhcyB3aGVuIHRyYW5zaXRpb25pbmcgb3V0KS4gVG8gZW5zdXJlXG4gICAgICAgIC8vIGBpc1Bvc2l0aW9uZWRgIHdpbGwgYmUgYGZhbHNlYCBpbml0aWFsbHkgb24gdGhlIG5leHQgb3BlbiwgYXZvaWRcbiAgICAgICAgLy8gc2V0dGluZyBpdCB0byBgdHJ1ZWAgd2hlbiBgb3BlbiA9PT0gZmFsc2VgIChtdXN0IGJlIHNwZWNpZmllZCkuXG4gICAgICAgIGlzUG9zaXRpb25lZDogb3BlblJlZi5jdXJyZW50ICE9PSBmYWxzZVxuICAgICAgfTtcbiAgICAgIGlmIChpc01vdW50ZWRSZWYuY3VycmVudCAmJiAhZGVlcEVxdWFsKGRhdGFSZWYuY3VycmVudCwgZnVsbERhdGEpKSB7XG4gICAgICAgIGRhdGFSZWYuY3VycmVudCA9IGZ1bGxEYXRhO1xuICAgICAgICBSZWFjdERPTS5mbHVzaFN5bmMoKCkgPT4ge1xuICAgICAgICAgIHNldERhdGEoZnVsbERhdGEpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW2xhdGVzdE1pZGRsZXdhcmUsIHBsYWNlbWVudCwgc3RyYXRlZ3ksIHBsYXRmb3JtUmVmLCBvcGVuUmVmXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAob3BlbiA9PT0gZmFsc2UgJiYgZGF0YVJlZi5jdXJyZW50LmlzUG9zaXRpb25lZCkge1xuICAgICAgZGF0YVJlZi5jdXJyZW50LmlzUG9zaXRpb25lZCA9IGZhbHNlO1xuICAgICAgc2V0RGF0YShkYXRhID0+ICh7XG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIGlzUG9zaXRpb25lZDogZmFsc2VcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIFtvcGVuXSk7XG4gIGNvbnN0IGlzTW91bnRlZFJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpc01vdW50ZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlzTW91bnRlZFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgfTtcbiAgfSwgW10pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKHJlZmVyZW5jZUVsKSByZWZlcmVuY2VSZWYuY3VycmVudCA9IHJlZmVyZW5jZUVsO1xuICAgIGlmIChmbG9hdGluZ0VsKSBmbG9hdGluZ1JlZi5jdXJyZW50ID0gZmxvYXRpbmdFbDtcbiAgICBpZiAocmVmZXJlbmNlRWwgJiYgZmxvYXRpbmdFbCkge1xuICAgICAgaWYgKHdoaWxlRWxlbWVudHNNb3VudGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHdoaWxlRWxlbWVudHNNb3VudGVkUmVmLmN1cnJlbnQocmVmZXJlbmNlRWwsIGZsb2F0aW5nRWwsIHVwZGF0ZSk7XG4gICAgICB9XG4gICAgICB1cGRhdGUoKTtcbiAgICB9XG4gIH0sIFtyZWZlcmVuY2VFbCwgZmxvYXRpbmdFbCwgdXBkYXRlLCB3aGlsZUVsZW1lbnRzTW91bnRlZFJlZiwgaGFzV2hpbGVFbGVtZW50c01vdW50ZWRdKTtcbiAgY29uc3QgcmVmcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICByZWZlcmVuY2U6IHJlZmVyZW5jZVJlZixcbiAgICBmbG9hdGluZzogZmxvYXRpbmdSZWYsXG4gICAgc2V0UmVmZXJlbmNlLFxuICAgIHNldEZsb2F0aW5nXG4gIH0pLCBbc2V0UmVmZXJlbmNlLCBzZXRGbG9hdGluZ10pO1xuICBjb25zdCBlbGVtZW50cyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICByZWZlcmVuY2U6IHJlZmVyZW5jZUVsLFxuICAgIGZsb2F0aW5nOiBmbG9hdGluZ0VsXG4gIH0pLCBbcmVmZXJlbmNlRWwsIGZsb2F0aW5nRWxdKTtcbiAgY29uc3QgZmxvYXRpbmdTdHlsZXMgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsU3R5bGVzID0ge1xuICAgICAgcG9zaXRpb246IHN0cmF0ZWd5LFxuICAgICAgbGVmdDogMCxcbiAgICAgIHRvcDogMFxuICAgIH07XG4gICAgaWYgKCFlbGVtZW50cy5mbG9hdGluZykge1xuICAgICAgcmV0dXJuIGluaXRpYWxTdHlsZXM7XG4gICAgfVxuICAgIGNvbnN0IHggPSByb3VuZEJ5RFBSKGVsZW1lbnRzLmZsb2F0aW5nLCBkYXRhLngpO1xuICAgIGNvbnN0IHkgPSByb3VuZEJ5RFBSKGVsZW1lbnRzLmZsb2F0aW5nLCBkYXRhLnkpO1xuICAgIGlmICh0cmFuc2Zvcm0pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmluaXRpYWxTdHlsZXMsXG4gICAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoXCIgKyB4ICsgXCJweCwgXCIgKyB5ICsgXCJweClcIixcbiAgICAgICAgLi4uKGdldERQUihlbGVtZW50cy5mbG9hdGluZykgPj0gMS41ICYmIHtcbiAgICAgICAgICB3aWxsQ2hhbmdlOiAndHJhbnNmb3JtJ1xuICAgICAgICB9KVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHBvc2l0aW9uOiBzdHJhdGVneSxcbiAgICAgIGxlZnQ6IHgsXG4gICAgICB0b3A6IHlcbiAgICB9O1xuICB9LCBbc3RyYXRlZ3ksIHRyYW5zZm9ybSwgZWxlbWVudHMuZmxvYXRpbmcsIGRhdGEueCwgZGF0YS55XSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgLi4uZGF0YSxcbiAgICB1cGRhdGUsXG4gICAgcmVmcyxcbiAgICBlbGVtZW50cyxcbiAgICBmbG9hdGluZ1N0eWxlc1xuICB9KSwgW2RhdGEsIHVwZGF0ZSwgcmVmcywgZWxlbWVudHMsIGZsb2F0aW5nU3R5bGVzXSk7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogVGhpcyB3cmFwcyB0aGUgY29yZSBgYXJyb3dgIG1pZGRsZXdhcmUgdG8gYWxsb3cgUmVhY3QgcmVmcyBhcyB0aGUgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyQxID0gb3B0aW9ucyA9PiB7XG4gIGZ1bmN0aW9uIGlzUmVmKHZhbHVlKSB7XG4gICAgcmV0dXJuIHt9Lmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjdXJyZW50Jyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYXJyb3cnLFxuICAgIG9wdGlvbnMsXG4gICAgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZWxlbWVudCxcbiAgICAgICAgcGFkZGluZ1xuICAgICAgfSA9IHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nID8gb3B0aW9ucyhzdGF0ZSkgOiBvcHRpb25zO1xuICAgICAgaWYgKGVsZW1lbnQgJiYgaXNSZWYoZWxlbWVudCkpIHtcbiAgICAgICAgaWYgKGVsZW1lbnQuY3VycmVudCAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGFycm93JDIoe1xuICAgICAgICAgICAgZWxlbWVudDogZWxlbWVudC5jdXJyZW50LFxuICAgICAgICAgICAgcGFkZGluZ1xuICAgICAgICAgIH0pLmZuKHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gYXJyb3ckMih7XG4gICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICBwYWRkaW5nXG4gICAgICAgIH0pLmZuKHN0YXRlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSAob3B0aW9ucywgZGVwcykgPT4gKHtcbiAgLi4ub2Zmc2V0JDEob3B0aW9ucyksXG4gIG9wdGlvbnM6IFtvcHRpb25zLCBkZXBzXVxufSk7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IChvcHRpb25zLCBkZXBzKSA9PiAoe1xuICAuLi5zaGlmdCQxKG9wdGlvbnMpLFxuICBvcHRpb25zOiBbb3B0aW9ucywgZGVwc11cbn0pO1xuXG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gKG9wdGlvbnMsIGRlcHMpID0+ICh7XG4gIC4uLmxpbWl0U2hpZnQkMShvcHRpb25zKSxcbiAgb3B0aW9uczogW29wdGlvbnMsIGRlcHNdXG59KTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgZmxpcHBpbmcgdGhlIGBwbGFjZW1lbnRgXG4gKiBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcgd2hlbiB0aGUgcHJlZmVycmVkIHBsYWNlbWVudChzKSB3aWxsIG92ZXJmbG93IHRoZVxuICogY2xpcHBpbmcgYm91bmRhcnkuIEFsdGVybmF0aXZlIHRvIGBhdXRvUGxhY2VtZW50YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwXG4gKi9cbmNvbnN0IGZsaXAgPSAob3B0aW9ucywgZGVwcykgPT4gKHtcbiAgLi4uZmxpcCQxKG9wdGlvbnMpLFxuICBvcHRpb25zOiBbb3B0aW9ucywgZGVwc11cbn0pO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSAob3B0aW9ucywgZGVwcykgPT4gKHtcbiAgLi4uc2l6ZSQxKG9wdGlvbnMpLFxuICBvcHRpb25zOiBbb3B0aW9ucywgZGVwc11cbn0pO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBjaG9vc2luZyB0aGUgcGxhY2VtZW50XG4gKiB0aGF0IGhhcyB0aGUgbW9zdCBzcGFjZSBhdmFpbGFibGUgYXV0b21hdGljYWxseSwgd2l0aG91dCBuZWVkaW5nIHRvIHNwZWNpZnkgYVxuICogcHJlZmVycmVkIHBsYWNlbWVudC4gQWx0ZXJuYXRpdmUgdG8gYGZsaXBgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9QbGFjZW1lbnRcbiAqL1xuY29uc3QgYXV0b1BsYWNlbWVudCA9IChvcHRpb25zLCBkZXBzKSA9PiAoe1xuICAuLi5hdXRvUGxhY2VtZW50JDEob3B0aW9ucyksXG4gIG9wdGlvbnM6IFtvcHRpb25zLCBkZXBzXVxufSk7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gKG9wdGlvbnMsIGRlcHMpID0+ICh7XG4gIC4uLmhpZGUkMShvcHRpb25zKSxcbiAgb3B0aW9uczogW29wdGlvbnMsIGRlcHNdXG59KTtcblxuLyoqXG4gKiBQcm92aWRlcyBpbXByb3ZlZCBwb3NpdGlvbmluZyBmb3IgaW5saW5lIHJlZmVyZW5jZSBlbGVtZW50cyB0aGF0IGNhbiBzcGFuXG4gKiBvdmVyIG11bHRpcGxlIGxpbmVzLCBzdWNoIGFzIGh5cGVybGlua3Mgb3IgcmFuZ2Ugc2VsZWN0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9pbmxpbmVcbiAqL1xuY29uc3QgaW5saW5lID0gKG9wdGlvbnMsIGRlcHMpID0+ICh7XG4gIC4uLmlubGluZSQxKG9wdGlvbnMpLFxuICBvcHRpb25zOiBbb3B0aW9ucywgZGVwc11cbn0pO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIFRoaXMgd3JhcHMgdGhlIGNvcmUgYGFycm93YCBtaWRkbGV3YXJlIHRvIGFsbG93IFJlYWN0IHJlZnMgYXMgdGhlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSAob3B0aW9ucywgZGVwcykgPT4gKHtcbiAgLi4uYXJyb3ckMShvcHRpb25zKSxcbiAgb3B0aW9uczogW29wdGlvbnMsIGRlcHNdXG59KTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBzaGlmdCwgc2l6ZSwgdXNlRmxvYXRpbmcgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUxheW91dEVmZmVjdCwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBzdG9wRXZlbnQsIGdldERvY3VtZW50LCBpc01vdXNlTGlrZVBvaW50ZXJUeXBlLCBjb250YWlucywgYWN0aXZlRWxlbWVudCwgaXNTYWZhcmksIGlzVHlwZWFibGVDb21ib2JveCwgaXNWaXJ0dWFsQ2xpY2ssIGlzVmlydHVhbFBvaW50ZXJFdmVudCwgZ2V0VGFyZ2V0LCBnZXRQbGF0Zm9ybSwgaXNUeXBlYWJsZUVsZW1lbnQsIGlzUmVhY3RFdmVudCwgaXNSb290RWxlbWVudCwgaXNFdmVudFRhcmdldFdpdGhpbiwgaXNNYWMsIGdldFVzZXJBZ2VudCB9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdC91dGlscyc7XG5pbXBvcnQgeyBmbG9vciwgZXZhbHVhdGUgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgaXNFbGVtZW50LCBnZXROb2RlTmFtZSwgaXNIVE1MRWxlbWVudCwgZ2V0V2luZG93LCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGdldFBhcmVudE5vZGUgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcbmltcG9ydCB7IHRhYmJhYmxlLCBpc1RhYmJhYmxlIH0gZnJvbSAndGFiYmFibGUnO1xuaW1wb3J0ICogYXMgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB7IGdldE92ZXJmbG93QW5jZXN0b3JzLCB1c2VGbG9hdGluZyBhcyB1c2VGbG9hdGluZyQxLCBvZmZzZXQsIGRldGVjdE92ZXJmbG93IH0gZnJvbSAnQGZsb2F0aW5nLXVpL3JlYWN0LWRvbSc7XG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBwbGF0Zm9ybSwgc2hpZnQsIHNpemUgfSBmcm9tICdAZmxvYXRpbmctdWkvcmVhY3QtZG9tJztcblxuLyoqXG4gKiBNZXJnZXMgYW4gYXJyYXkgb2YgcmVmcyBpbnRvIGEgc2luZ2xlIG1lbW9pemVkIGNhbGxiYWNrIHJlZiBvciBgbnVsbGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvcmVhY3QtdXRpbHMjdXNlbWVyZ2VyZWZzXG4gKi9cbmZ1bmN0aW9uIHVzZU1lcmdlUmVmcyhyZWZzKSB7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBpZiAocmVmcy5ldmVyeShyZWYgPT4gcmVmID09IG51bGwpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlID0+IHtcbiAgICAgIHJlZnMuZm9yRWFjaChyZWYgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJlZih2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVmICE9IG51bGwpIHtcbiAgICAgICAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgcmVmcyk7XG59XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tdWkvbWF0ZXJpYWwtdWkvaXNzdWVzLzQxMTkwI2lzc3VlY29tbWVudC0yMDQwODczMzc5XG5jb25zdCBTYWZlUmVhY3QgPSB7XG4gIC4uLlJlYWN0XG59O1xuXG5jb25zdCB1c2VJbnNlcnRpb25FZmZlY3QgPSBTYWZlUmVhY3QudXNlSW5zZXJ0aW9uRWZmZWN0O1xuY29uc3QgdXNlU2FmZUluc2VydGlvbkVmZmVjdCA9IHVzZUluc2VydGlvbkVmZmVjdCB8fCAoZm4gPT4gZm4oKSk7XG5mdW5jdGlvbiB1c2VFZmZlY3RFdmVudChjYWxsYmFjaykge1xuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWYoKCkgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNhbGwgYW4gZXZlbnQgaGFuZGxlciB3aGlsZSByZW5kZXJpbmcuJyk7XG4gICAgfVxuICB9KTtcbiAgdXNlU2FmZUluc2VydGlvbkVmZmVjdCgoKSA9PiB7XG4gICAgcmVmLmN1cnJlbnQgPSBjYWxsYmFjaztcbiAgfSk7XG4gIHJldHVybiBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICByZXR1cm4gcmVmLmN1cnJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZi5jdXJyZW50KC4uLmFyZ3MpO1xuICB9LCBbXSk7XG59XG5cbmNvbnN0IEFSUk9XX1VQID0gJ0Fycm93VXAnO1xuY29uc3QgQVJST1dfRE9XTiA9ICdBcnJvd0Rvd24nO1xuY29uc3QgQVJST1dfTEVGVCA9ICdBcnJvd0xlZnQnO1xuY29uc3QgQVJST1dfUklHSFQgPSAnQXJyb3dSaWdodCc7XG5mdW5jdGlvbiBpc0RpZmZlcmVudFJvdyhpbmRleCwgY29scywgcHJldlJvdykge1xuICByZXR1cm4gTWF0aC5mbG9vcihpbmRleCAvIGNvbHMpICE9PSBwcmV2Um93O1xufVxuZnVuY3Rpb24gaXNJbmRleE91dE9mQm91bmRzKGxpc3RSZWYsIGluZGV4KSB7XG4gIHJldHVybiBpbmRleCA8IDAgfHwgaW5kZXggPj0gbGlzdFJlZi5jdXJyZW50Lmxlbmd0aDtcbn1cbmZ1bmN0aW9uIGdldE1pbkluZGV4KGxpc3RSZWYsIGRpc2FibGVkSW5kaWNlcykge1xuICByZXR1cm4gZmluZE5vbkRpc2FibGVkSW5kZXgobGlzdFJlZiwge1xuICAgIGRpc2FibGVkSW5kaWNlc1xuICB9KTtcbn1cbmZ1bmN0aW9uIGdldE1heEluZGV4KGxpc3RSZWYsIGRpc2FibGVkSW5kaWNlcykge1xuICByZXR1cm4gZmluZE5vbkRpc2FibGVkSW5kZXgobGlzdFJlZiwge1xuICAgIGRlY3JlbWVudDogdHJ1ZSxcbiAgICBzdGFydGluZ0luZGV4OiBsaXN0UmVmLmN1cnJlbnQubGVuZ3RoLFxuICAgIGRpc2FibGVkSW5kaWNlc1xuICB9KTtcbn1cbmZ1bmN0aW9uIGZpbmROb25EaXNhYmxlZEluZGV4KGxpc3RSZWYsIF90ZW1wKSB7XG4gIGxldCB7XG4gICAgc3RhcnRpbmdJbmRleCA9IC0xLFxuICAgIGRlY3JlbWVudCA9IGZhbHNlLFxuICAgIGRpc2FibGVkSW5kaWNlcyxcbiAgICBhbW91bnQgPSAxXG4gIH0gPSBfdGVtcCA9PT0gdm9pZCAwID8ge30gOiBfdGVtcDtcbiAgY29uc3QgbGlzdCA9IGxpc3RSZWYuY3VycmVudDtcbiAgbGV0IGluZGV4ID0gc3RhcnRpbmdJbmRleDtcbiAgZG8ge1xuICAgIGluZGV4ICs9IGRlY3JlbWVudCA/IC1hbW91bnQgOiBhbW91bnQ7XG4gIH0gd2hpbGUgKGluZGV4ID49IDAgJiYgaW5kZXggPD0gbGlzdC5sZW5ndGggLSAxICYmIGlzRGlzYWJsZWQobGlzdCwgaW5kZXgsIGRpc2FibGVkSW5kaWNlcykpO1xuICByZXR1cm4gaW5kZXg7XG59XG5mdW5jdGlvbiBnZXRHcmlkTmF2aWdhdGVkSW5kZXgoZWxlbWVudHNSZWYsIF9yZWYpIHtcbiAgbGV0IHtcbiAgICBldmVudCxcbiAgICBvcmllbnRhdGlvbixcbiAgICBsb29wLFxuICAgIGNvbHMsXG4gICAgZGlzYWJsZWRJbmRpY2VzLFxuICAgIG1pbkluZGV4LFxuICAgIG1heEluZGV4LFxuICAgIHByZXZJbmRleCxcbiAgICBzdG9wRXZlbnQ6IHN0b3AgPSBmYWxzZVxuICB9ID0gX3JlZjtcbiAgbGV0IG5leHRJbmRleCA9IHByZXZJbmRleDtcbiAgaWYgKGV2ZW50LmtleSA9PT0gQVJST1dfVVApIHtcbiAgICBzdG9wICYmIHN0b3BFdmVudChldmVudCk7XG4gICAgaWYgKHByZXZJbmRleCA9PT0gLTEpIHtcbiAgICAgIG5leHRJbmRleCA9IG1heEluZGV4O1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0SW5kZXggPSBmaW5kTm9uRGlzYWJsZWRJbmRleChlbGVtZW50c1JlZiwge1xuICAgICAgICBzdGFydGluZ0luZGV4OiBuZXh0SW5kZXgsXG4gICAgICAgIGFtb3VudDogY29scyxcbiAgICAgICAgZGVjcmVtZW50OiB0cnVlLFxuICAgICAgICBkaXNhYmxlZEluZGljZXNcbiAgICAgIH0pO1xuICAgICAgaWYgKGxvb3AgJiYgKHByZXZJbmRleCAtIGNvbHMgPCBtaW5JbmRleCB8fCBuZXh0SW5kZXggPCAwKSkge1xuICAgICAgICBjb25zdCBjb2wgPSBwcmV2SW5kZXggJSBjb2xzO1xuICAgICAgICBjb25zdCBtYXhDb2wgPSBtYXhJbmRleCAlIGNvbHM7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IG1heEluZGV4IC0gKG1heENvbCAtIGNvbCk7XG4gICAgICAgIGlmIChtYXhDb2wgPT09IGNvbCkge1xuICAgICAgICAgIG5leHRJbmRleCA9IG1heEluZGV4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5leHRJbmRleCA9IG1heENvbCA+IGNvbCA/IG9mZnNldCA6IG9mZnNldCAtIGNvbHM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzSW5kZXhPdXRPZkJvdW5kcyhlbGVtZW50c1JlZiwgbmV4dEluZGV4KSkge1xuICAgICAgbmV4dEluZGV4ID0gcHJldkluZGV4O1xuICAgIH1cbiAgfVxuICBpZiAoZXZlbnQua2V5ID09PSBBUlJPV19ET1dOKSB7XG4gICAgc3RvcCAmJiBzdG9wRXZlbnQoZXZlbnQpO1xuICAgIGlmIChwcmV2SW5kZXggPT09IC0xKSB7XG4gICAgICBuZXh0SW5kZXggPSBtaW5JbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dEluZGV4ID0gZmluZE5vbkRpc2FibGVkSW5kZXgoZWxlbWVudHNSZWYsIHtcbiAgICAgICAgc3RhcnRpbmdJbmRleDogcHJldkluZGV4LFxuICAgICAgICBhbW91bnQ6IGNvbHMsXG4gICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgfSk7XG4gICAgICBpZiAobG9vcCAmJiBwcmV2SW5kZXggKyBjb2xzID4gbWF4SW5kZXgpIHtcbiAgICAgICAgbmV4dEluZGV4ID0gZmluZE5vbkRpc2FibGVkSW5kZXgoZWxlbWVudHNSZWYsIHtcbiAgICAgICAgICBzdGFydGluZ0luZGV4OiBwcmV2SW5kZXggJSBjb2xzIC0gY29scyxcbiAgICAgICAgICBhbW91bnQ6IGNvbHMsXG4gICAgICAgICAgZGlzYWJsZWRJbmRpY2VzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNJbmRleE91dE9mQm91bmRzKGVsZW1lbnRzUmVmLCBuZXh0SW5kZXgpKSB7XG4gICAgICBuZXh0SW5kZXggPSBwcmV2SW5kZXg7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVtYWlucyBvbiB0aGUgc2FtZSByb3cvY29sdW1uLlxuICBpZiAob3JpZW50YXRpb24gPT09ICdib3RoJykge1xuICAgIGNvbnN0IHByZXZSb3cgPSBmbG9vcihwcmV2SW5kZXggLyBjb2xzKTtcbiAgICBpZiAoZXZlbnQua2V5ID09PSBBUlJPV19SSUdIVCkge1xuICAgICAgc3RvcCAmJiBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgaWYgKHByZXZJbmRleCAlIGNvbHMgIT09IGNvbHMgLSAxKSB7XG4gICAgICAgIG5leHRJbmRleCA9IGZpbmROb25EaXNhYmxlZEluZGV4KGVsZW1lbnRzUmVmLCB7XG4gICAgICAgICAgc3RhcnRpbmdJbmRleDogcHJldkluZGV4LFxuICAgICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGxvb3AgJiYgaXNEaWZmZXJlbnRSb3cobmV4dEluZGV4LCBjb2xzLCBwcmV2Um93KSkge1xuICAgICAgICAgIG5leHRJbmRleCA9IGZpbmROb25EaXNhYmxlZEluZGV4KGVsZW1lbnRzUmVmLCB7XG4gICAgICAgICAgICBzdGFydGluZ0luZGV4OiBwcmV2SW5kZXggLSBwcmV2SW5kZXggJSBjb2xzIC0gMSxcbiAgICAgICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGxvb3ApIHtcbiAgICAgICAgbmV4dEluZGV4ID0gZmluZE5vbkRpc2FibGVkSW5kZXgoZWxlbWVudHNSZWYsIHtcbiAgICAgICAgICBzdGFydGluZ0luZGV4OiBwcmV2SW5kZXggLSBwcmV2SW5kZXggJSBjb2xzIC0gMSxcbiAgICAgICAgICBkaXNhYmxlZEluZGljZXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoaXNEaWZmZXJlbnRSb3cobmV4dEluZGV4LCBjb2xzLCBwcmV2Um93KSkge1xuICAgICAgICBuZXh0SW5kZXggPSBwcmV2SW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChldmVudC5rZXkgPT09IEFSUk9XX0xFRlQpIHtcbiAgICAgIHN0b3AgJiYgc3RvcEV2ZW50KGV2ZW50KTtcbiAgICAgIGlmIChwcmV2SW5kZXggJSBjb2xzICE9PSAwKSB7XG4gICAgICAgIG5leHRJbmRleCA9IGZpbmROb25EaXNhYmxlZEluZGV4KGVsZW1lbnRzUmVmLCB7XG4gICAgICAgICAgc3RhcnRpbmdJbmRleDogcHJldkluZGV4LFxuICAgICAgICAgIGRlY3JlbWVudDogdHJ1ZSxcbiAgICAgICAgICBkaXNhYmxlZEluZGljZXNcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChsb29wICYmIGlzRGlmZmVyZW50Um93KG5leHRJbmRleCwgY29scywgcHJldlJvdykpIHtcbiAgICAgICAgICBuZXh0SW5kZXggPSBmaW5kTm9uRGlzYWJsZWRJbmRleChlbGVtZW50c1JlZiwge1xuICAgICAgICAgICAgc3RhcnRpbmdJbmRleDogcHJldkluZGV4ICsgKGNvbHMgLSBwcmV2SW5kZXggJSBjb2xzKSxcbiAgICAgICAgICAgIGRlY3JlbWVudDogdHJ1ZSxcbiAgICAgICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGxvb3ApIHtcbiAgICAgICAgbmV4dEluZGV4ID0gZmluZE5vbkRpc2FibGVkSW5kZXgoZWxlbWVudHNSZWYsIHtcbiAgICAgICAgICBzdGFydGluZ0luZGV4OiBwcmV2SW5kZXggKyAoY29scyAtIHByZXZJbmRleCAlIGNvbHMpLFxuICAgICAgICAgIGRlY3JlbWVudDogdHJ1ZSxcbiAgICAgICAgICBkaXNhYmxlZEluZGljZXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoaXNEaWZmZXJlbnRSb3cobmV4dEluZGV4LCBjb2xzLCBwcmV2Um93KSkge1xuICAgICAgICBuZXh0SW5kZXggPSBwcmV2SW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGxhc3RSb3cgPSBmbG9vcihtYXhJbmRleCAvIGNvbHMpID09PSBwcmV2Um93O1xuICAgIGlmIChpc0luZGV4T3V0T2ZCb3VuZHMoZWxlbWVudHNSZWYsIG5leHRJbmRleCkpIHtcbiAgICAgIGlmIChsb29wICYmIGxhc3RSb3cpIHtcbiAgICAgICAgbmV4dEluZGV4ID0gZXZlbnQua2V5ID09PSBBUlJPV19MRUZUID8gbWF4SW5kZXggOiBmaW5kTm9uRGlzYWJsZWRJbmRleChlbGVtZW50c1JlZiwge1xuICAgICAgICAgIHN0YXJ0aW5nSW5kZXg6IHByZXZJbmRleCAtIHByZXZJbmRleCAlIGNvbHMgLSAxLFxuICAgICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5leHRJbmRleCA9IHByZXZJbmRleDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5leHRJbmRleDtcbn1cblxuLyoqIEZvciBlYWNoIGNlbGwgaW5kZXgsIGdldHMgdGhlIGl0ZW0gaW5kZXggdGhhdCBvY2N1cGllcyB0aGF0IGNlbGwgKi9cbmZ1bmN0aW9uIGJ1aWxkQ2VsbE1hcChzaXplcywgY29scywgZGVuc2UpIHtcbiAgY29uc3QgY2VsbE1hcCA9IFtdO1xuICBsZXQgc3RhcnRJbmRleCA9IDA7XG4gIHNpemVzLmZvckVhY2goKF9yZWYyLCBpbmRleCkgPT4ge1xuICAgIGxldCB7XG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodFxuICAgIH0gPSBfcmVmMjtcbiAgICBpZiAod2lkdGggPiBjb2xzKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIltGbG9hdGluZyBVSV06IEludmFsaWQgZ3JpZCAtIGl0ZW0gd2lkdGggYXQgaW5kZXggXCIgKyBpbmRleCArIFwiIGlzIGdyZWF0ZXIgdGhhbiBncmlkIGNvbHVtbnNcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBpdGVtUGxhY2VkID0gZmFsc2U7XG4gICAgaWYgKGRlbnNlKSB7XG4gICAgICBzdGFydEluZGV4ID0gMDtcbiAgICB9XG4gICAgd2hpbGUgKCFpdGVtUGxhY2VkKSB7XG4gICAgICBjb25zdCB0YXJnZXRDZWxscyA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aWR0aDsgaSsrKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgaGVpZ2h0OyBqKyspIHtcbiAgICAgICAgICB0YXJnZXRDZWxscy5wdXNoKHN0YXJ0SW5kZXggKyBpICsgaiAqIGNvbHMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc3RhcnRJbmRleCAlIGNvbHMgKyB3aWR0aCA8PSBjb2xzICYmIHRhcmdldENlbGxzLmV2ZXJ5KGNlbGwgPT4gY2VsbE1hcFtjZWxsXSA9PSBudWxsKSkge1xuICAgICAgICB0YXJnZXRDZWxscy5mb3JFYWNoKGNlbGwgPT4ge1xuICAgICAgICAgIGNlbGxNYXBbY2VsbF0gPSBpbmRleDtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0ZW1QbGFjZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhcnRJbmRleCsrO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gY29udmVydCBpbnRvIGEgbm9uLXNwYXJzZSBhcnJheVxuICByZXR1cm4gWy4uLmNlbGxNYXBdO1xufVxuXG4vKiogR2V0cyBjZWxsIGluZGV4IG9mIGFuIGl0ZW0ncyBjb3JuZXIgb3IgLTEgd2hlbiBpbmRleCBpcyAtMS4gKi9cbmZ1bmN0aW9uIGdldENlbGxJbmRleE9mQ29ybmVyKGluZGV4LCBzaXplcywgY2VsbE1hcCwgY29scywgY29ybmVyKSB7XG4gIGlmIChpbmRleCA9PT0gLTEpIHJldHVybiAtMTtcbiAgY29uc3QgZmlyc3RDZWxsSW5kZXggPSBjZWxsTWFwLmluZGV4T2YoaW5kZXgpO1xuICBjb25zdCBzaXplSXRlbSA9IHNpemVzW2luZGV4XTtcbiAgc3dpdGNoIChjb3JuZXIpIHtcbiAgICBjYXNlICd0bCc6XG4gICAgICByZXR1cm4gZmlyc3RDZWxsSW5kZXg7XG4gICAgY2FzZSAndHInOlxuICAgICAgaWYgKCFzaXplSXRlbSkge1xuICAgICAgICByZXR1cm4gZmlyc3RDZWxsSW5kZXg7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmlyc3RDZWxsSW5kZXggKyBzaXplSXRlbS53aWR0aCAtIDE7XG4gICAgY2FzZSAnYmwnOlxuICAgICAgaWYgKCFzaXplSXRlbSkge1xuICAgICAgICByZXR1cm4gZmlyc3RDZWxsSW5kZXg7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmlyc3RDZWxsSW5kZXggKyAoc2l6ZUl0ZW0uaGVpZ2h0IC0gMSkgKiBjb2xzO1xuICAgIGNhc2UgJ2JyJzpcbiAgICAgIHJldHVybiBjZWxsTWFwLmxhc3RJbmRleE9mKGluZGV4KTtcbiAgfVxufVxuXG4vKiogR2V0cyBhbGwgY2VsbCBpbmRpY2VzIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgc3BlY2lmaWVkIGluZGljZXMgKi9cbmZ1bmN0aW9uIGdldENlbGxJbmRpY2VzKGluZGljZXMsIGNlbGxNYXApIHtcbiAgcmV0dXJuIGNlbGxNYXAuZmxhdE1hcCgoaW5kZXgsIGNlbGxJbmRleCkgPT4gaW5kaWNlcy5pbmNsdWRlcyhpbmRleCkgPyBbY2VsbEluZGV4XSA6IFtdKTtcbn1cbmZ1bmN0aW9uIGlzRGlzYWJsZWQobGlzdCwgaW5kZXgsIGRpc2FibGVkSW5kaWNlcykge1xuICBpZiAoZGlzYWJsZWRJbmRpY2VzKSB7XG4gICAgcmV0dXJuIGRpc2FibGVkSW5kaWNlcy5pbmNsdWRlcyhpbmRleCk7XG4gIH1cbiAgY29uc3QgZWxlbWVudCA9IGxpc3RbaW5kZXhdO1xuICByZXR1cm4gZWxlbWVudCA9PSBudWxsIHx8IGVsZW1lbnQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJykgPT09ICd0cnVlJztcbn1cblxubGV0IHJhZklkID0gMDtcbmZ1bmN0aW9uIGVucXVldWVGb2N1cyhlbCwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBwcmV2ZW50U2Nyb2xsID0gZmFsc2UsXG4gICAgY2FuY2VsUHJldmlvdXMgPSB0cnVlLFxuICAgIHN5bmMgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY2FuY2VsUHJldmlvdXMgJiYgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpO1xuICBjb25zdCBleGVjID0gKCkgPT4gZWwgPT0gbnVsbCA/IHZvaWQgMCA6IGVsLmZvY3VzKHtcbiAgICBwcmV2ZW50U2Nyb2xsXG4gIH0pO1xuICBpZiAoc3luYykge1xuICAgIGV4ZWMoKTtcbiAgfSBlbHNlIHtcbiAgICByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShleGVjKTtcbiAgfVxufVxuXG52YXIgaW5kZXggPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnID8gdXNlTGF5b3V0RWZmZWN0IDogdXNlRWZmZWN0O1xuXG5mdW5jdGlvbiBzb3J0QnlEb2N1bWVudFBvc2l0aW9uKGEsIGIpIHtcbiAgY29uc3QgcG9zaXRpb24gPSBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpO1xuICBpZiAocG9zaXRpb24gJiBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORyB8fCBwb3NpdGlvbiAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGlmIChwb3NpdGlvbiAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HIHx8IHBvc2l0aW9uICYgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlOUykge1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuZnVuY3Rpb24gYXJlTWFwc0VxdWFsKG1hcDEsIG1hcDIpIHtcbiAgaWYgKG1hcDEuc2l6ZSAhPT0gbWFwMi5zaXplKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIG1hcDEuZW50cmllcygpKSB7XG4gICAgaWYgKHZhbHVlICE9PSBtYXAyLmdldChrZXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuY29uc3QgRmxvYXRpbmdMaXN0Q29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgcmVnaXN0ZXI6ICgpID0+IHt9LFxuICB1bnJlZ2lzdGVyOiAoKSA9PiB7fSxcbiAgbWFwOiAvKiNfX1BVUkVfXyovbmV3IE1hcCgpLFxuICBlbGVtZW50c1JlZjoge1xuICAgIGN1cnJlbnQ6IFtdXG4gIH1cbn0pO1xuLyoqXG4gKiBQcm92aWRlcyBjb250ZXh0IGZvciBhIGxpc3Qgb2YgaXRlbXMgd2l0aGluIHRoZSBmbG9hdGluZyBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL0Zsb2F0aW5nTGlzdFxuICovXG5mdW5jdGlvbiBGbG9hdGluZ0xpc3QocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNoaWxkcmVuLFxuICAgIGVsZW1lbnRzUmVmLFxuICAgIGxhYmVsc1JlZlxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IFttYXAsIHNldE1hcF0gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PiBuZXcgTWFwKCkpO1xuICBjb25zdCByZWdpc3RlciA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIHNldE1hcChwcmV2TWFwID0+IG5ldyBNYXAocHJldk1hcCkuc2V0KG5vZGUsIG51bGwpKTtcbiAgfSwgW10pO1xuICBjb25zdCB1bnJlZ2lzdGVyID0gUmVhY3QudXNlQ2FsbGJhY2sobm9kZSA9PiB7XG4gICAgc2V0TWFwKHByZXZNYXAgPT4ge1xuICAgICAgY29uc3QgbWFwID0gbmV3IE1hcChwcmV2TWFwKTtcbiAgICAgIG1hcC5kZWxldGUobm9kZSk7XG4gICAgICByZXR1cm4gbWFwO1xuICAgIH0pO1xuICB9LCBbXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBjb25zdCBuZXdNYXAgPSBuZXcgTWFwKG1hcCk7XG4gICAgY29uc3Qgbm9kZXMgPSBBcnJheS5mcm9tKG5ld01hcC5rZXlzKCkpLnNvcnQoc29ydEJ5RG9jdW1lbnRQb3NpdGlvbik7XG4gICAgbm9kZXMuZm9yRWFjaCgobm9kZSwgaW5kZXgpID0+IHtcbiAgICAgIG5ld01hcC5zZXQobm9kZSwgaW5kZXgpO1xuICAgIH0pO1xuICAgIGlmICghYXJlTWFwc0VxdWFsKG1hcCwgbmV3TWFwKSkge1xuICAgICAgc2V0TWFwKG5ld01hcCk7XG4gICAgfVxuICB9LCBbbWFwXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChGbG9hdGluZ0xpc3RDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICAgIHJlZ2lzdGVyLFxuICAgICAgdW5yZWdpc3RlcixcbiAgICAgIG1hcCxcbiAgICAgIGVsZW1lbnRzUmVmLFxuICAgICAgbGFiZWxzUmVmXG4gICAgfSksIFtyZWdpc3RlciwgdW5yZWdpc3RlciwgbWFwLCBlbGVtZW50c1JlZiwgbGFiZWxzUmVmXSlcbiAgfSwgY2hpbGRyZW4pO1xufVxuLyoqXG4gKiBVc2VkIHRvIHJlZ2lzdGVyIGEgbGlzdCBpdGVtIGFuZCBpdHMgaW5kZXggKERPTSBwb3NpdGlvbikgaW4gdGhlXG4gKiBgRmxvYXRpbmdMaXN0YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9GbG9hdGluZ0xpc3QjdXNlbGlzdGl0ZW1cbiAqL1xuZnVuY3Rpb24gdXNlTGlzdEl0ZW0ocHJvcHMpIHtcbiAgaWYgKHByb3BzID09PSB2b2lkIDApIHtcbiAgICBwcm9wcyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBsYWJlbFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHtcbiAgICByZWdpc3RlcixcbiAgICB1bnJlZ2lzdGVyLFxuICAgIG1hcCxcbiAgICBlbGVtZW50c1JlZixcbiAgICBsYWJlbHNSZWZcbiAgfSA9IFJlYWN0LnVzZUNvbnRleHQoRmxvYXRpbmdMaXN0Q29udGV4dCk7XG4gIGNvbnN0IFtpbmRleCQxLCBzZXRJbmRleF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgY29tcG9uZW50UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCByZWYgPSBSZWFjdC51c2VDYWxsYmFjayhub2RlID0+IHtcbiAgICBjb21wb25lbnRSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgaWYgKGluZGV4JDEgIT09IG51bGwpIHtcbiAgICAgIGVsZW1lbnRzUmVmLmN1cnJlbnRbaW5kZXgkMV0gPSBub2RlO1xuICAgICAgaWYgKGxhYmVsc1JlZikge1xuICAgICAgICB2YXIgX25vZGUkdGV4dENvbnRlbnQ7XG4gICAgICAgIGNvbnN0IGlzTGFiZWxEZWZpbmVkID0gbGFiZWwgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgbGFiZWxzUmVmLmN1cnJlbnRbaW5kZXgkMV0gPSBpc0xhYmVsRGVmaW5lZCA/IGxhYmVsIDogKF9ub2RlJHRleHRDb250ZW50ID0gbm9kZSA9PSBudWxsID8gdm9pZCAwIDogbm9kZS50ZXh0Q29udGVudCkgIT0gbnVsbCA/IF9ub2RlJHRleHRDb250ZW50IDogbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpbmRleCQxLCBlbGVtZW50c1JlZiwgbGFiZWxzUmVmLCBsYWJlbF0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgY29uc3Qgbm9kZSA9IGNvbXBvbmVudFJlZi5jdXJyZW50O1xuICAgIGlmIChub2RlKSB7XG4gICAgICByZWdpc3Rlcihub2RlKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHVucmVnaXN0ZXIobm9kZSk7XG4gICAgICB9O1xuICAgIH1cbiAgfSwgW3JlZ2lzdGVyLCB1bnJlZ2lzdGVyXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBjb25zdCBpbmRleCA9IGNvbXBvbmVudFJlZi5jdXJyZW50ID8gbWFwLmdldChjb21wb25lbnRSZWYuY3VycmVudCkgOiBudWxsO1xuICAgIGlmIChpbmRleCAhPSBudWxsKSB7XG4gICAgICBzZXRJbmRleChpbmRleCk7XG4gICAgfVxuICB9LCBbbWFwXSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgcmVmLFxuICAgIGluZGV4OiBpbmRleCQxID09IG51bGwgPyAtMSA6IGluZGV4JDFcbiAgfSksIFtpbmRleCQxLCByZWZdKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVySnN4KHJlbmRlciwgY29tcHV0ZWRQcm9wcykge1xuICBpZiAodHlwZW9mIHJlbmRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiByZW5kZXIoY29tcHV0ZWRQcm9wcyk7XG4gIH1cbiAgaWYgKHJlbmRlcikge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KHJlbmRlciwgY29tcHV0ZWRQcm9wcyk7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIGNvbXB1dGVkUHJvcHMpO1xufVxuY29uc3QgQ29tcG9zaXRlQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgYWN0aXZlSW5kZXg6IDAsXG4gIG9uTmF2aWdhdGU6ICgpID0+IHt9XG59KTtcbmNvbnN0IGhvcml6b250YWxLZXlzID0gW0FSUk9XX0xFRlQsIEFSUk9XX1JJR0hUXTtcbmNvbnN0IHZlcnRpY2FsS2V5cyA9IFtBUlJPV19VUCwgQVJST1dfRE9XTl07XG5jb25zdCBhbGxLZXlzID0gWy4uLmhvcml6b250YWxLZXlzLCAuLi52ZXJ0aWNhbEtleXNdO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzaW5nbGUgdGFiIHN0b3Agd2hvc2UgaXRlbXMgYXJlIG5hdmlnYXRlZCBieSBhcnJvdyBrZXlzLCB3aGljaFxuICogcHJvdmlkZXMgbGlzdCBuYXZpZ2F0aW9uIG91dHNpZGUgb2YgZmxvYXRpbmcgZWxlbWVudCBjb250ZXh0cy5cbiAqXG4gKiBUaGlzIGlzIHVzZWZ1bCB0byBlbmFibGUgbmF2aWdhdGlvbiBvZiBhIGxpc3Qgb2YgaXRlbXMgdGhhdCBhcmVu4oCZdCBwYXJ0IG9mIGFcbiAqIGZsb2F0aW5nIGVsZW1lbnQuIEEgbWVudWJhciBpcyBhbiBleGFtcGxlIG9mIGEgY29tcG9zaXRlLCB3aXRoIGVhY2ggcmVmZXJlbmNlXG4gKiBlbGVtZW50IGJlaW5nIGFuIGl0ZW0uXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvQ29tcG9zaXRlXG4gKi9cbmNvbnN0IENvbXBvc2l0ZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIENvbXBvc2l0ZShwcm9wcywgZm9yd2FyZGVkUmVmKSB7XG4gIGNvbnN0IHtcbiAgICByZW5kZXIsXG4gICAgb3JpZW50YXRpb24gPSAnYm90aCcsXG4gICAgbG9vcCA9IHRydWUsXG4gICAgY29scyA9IDEsXG4gICAgZGlzYWJsZWRJbmRpY2VzLFxuICAgIGFjdGl2ZUluZGV4OiBleHRlcm5hbEFjdGl2ZUluZGV4LFxuICAgIG9uTmF2aWdhdGU6IGV4dGVybmFsU2V0QWN0aXZlSW5kZXgsXG4gICAgaXRlbVNpemVzLFxuICAgIGRlbnNlID0gZmFsc2UsXG4gICAgLi4uZG9tUHJvcHNcbiAgfSA9IHByb3BzO1xuICBjb25zdCBbaW50ZXJuYWxBY3RpdmVJbmRleCwgaW50ZXJuYWxTZXRBY3RpdmVJbmRleF0gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgY29uc3QgYWN0aXZlSW5kZXggPSBleHRlcm5hbEFjdGl2ZUluZGV4ICE9IG51bGwgPyBleHRlcm5hbEFjdGl2ZUluZGV4IDogaW50ZXJuYWxBY3RpdmVJbmRleDtcbiAgY29uc3Qgb25OYXZpZ2F0ZSA9IHVzZUVmZmVjdEV2ZW50KGV4dGVybmFsU2V0QWN0aXZlSW5kZXggIT0gbnVsbCA/IGV4dGVybmFsU2V0QWN0aXZlSW5kZXggOiBpbnRlcm5hbFNldEFjdGl2ZUluZGV4KTtcbiAgY29uc3QgZWxlbWVudHNSZWYgPSBSZWFjdC51c2VSZWYoW10pO1xuICBjb25zdCByZW5kZXJFbGVtZW50UHJvcHMgPSByZW5kZXIgJiYgdHlwZW9mIHJlbmRlciAhPT0gJ2Z1bmN0aW9uJyA/IHJlbmRlci5wcm9wcyA6IHt9O1xuICBjb25zdCBjb250ZXh0VmFsdWUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgYWN0aXZlSW5kZXgsXG4gICAgb25OYXZpZ2F0ZVxuICB9KSwgW2FjdGl2ZUluZGV4LCBvbk5hdmlnYXRlXSk7XG4gIGNvbnN0IGlzR3JpZCA9IGNvbHMgPiAxO1xuICBmdW5jdGlvbiBoYW5kbGVLZXlEb3duKGV2ZW50KSB7XG4gICAgaWYgKCFhbGxLZXlzLmluY2x1ZGVzKGV2ZW50LmtleSkpIHJldHVybjtcbiAgICBsZXQgbmV4dEluZGV4ID0gYWN0aXZlSW5kZXg7XG4gICAgY29uc3QgbWluSW5kZXggPSBnZXRNaW5JbmRleChlbGVtZW50c1JlZiwgZGlzYWJsZWRJbmRpY2VzKTtcbiAgICBjb25zdCBtYXhJbmRleCA9IGdldE1heEluZGV4KGVsZW1lbnRzUmVmLCBkaXNhYmxlZEluZGljZXMpO1xuICAgIGlmIChpc0dyaWQpIHtcbiAgICAgIGNvbnN0IHNpemVzID0gaXRlbVNpemVzIHx8IEFycmF5LmZyb20oe1xuICAgICAgICBsZW5ndGg6IGVsZW1lbnRzUmVmLmN1cnJlbnQubGVuZ3RoXG4gICAgICB9LCAoKSA9PiAoe1xuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgaGVpZ2h0OiAxXG4gICAgICB9KSk7XG4gICAgICAvLyBUbyBjYWxjdWxhdGUgbW92ZW1lbnRzIG9uIHRoZSBncmlkLCB3ZSB1c2UgaHlwb3RoZXRpY2FsIGNlbGwgaW5kaWNlc1xuICAgICAgLy8gYXMgaWYgZXZlcnkgaXRlbSB3YXMgMXgxLCB0aGVuIGNvbnZlcnQgYmFjayB0byByZWFsIGluZGljZXMuXG4gICAgICBjb25zdCBjZWxsTWFwID0gYnVpbGRDZWxsTWFwKHNpemVzLCBjb2xzLCBkZW5zZSk7XG4gICAgICBjb25zdCBtaW5HcmlkSW5kZXggPSBjZWxsTWFwLmZpbmRJbmRleChpbmRleCA9PiBpbmRleCAhPSBudWxsICYmICFpc0Rpc2FibGVkKGVsZW1lbnRzUmVmLmN1cnJlbnQsIGluZGV4LCBkaXNhYmxlZEluZGljZXMpKTtcbiAgICAgIC8vIGxhc3QgZW5hYmxlZCBpbmRleFxuICAgICAgY29uc3QgbWF4R3JpZEluZGV4ID0gY2VsbE1hcC5yZWR1Y2UoKGZvdW5kSW5kZXgsIGluZGV4LCBjZWxsSW5kZXgpID0+IGluZGV4ICE9IG51bGwgJiYgIWlzRGlzYWJsZWQoZWxlbWVudHNSZWYuY3VycmVudCwgaW5kZXgsIGRpc2FibGVkSW5kaWNlcykgPyBjZWxsSW5kZXggOiBmb3VuZEluZGV4LCAtMSk7XG4gICAgICBuZXh0SW5kZXggPSBjZWxsTWFwW2dldEdyaWROYXZpZ2F0ZWRJbmRleCh7XG4gICAgICAgIGN1cnJlbnQ6IGNlbGxNYXAubWFwKGl0ZW1JbmRleCA9PiBpdGVtSW5kZXggPyBlbGVtZW50c1JlZi5jdXJyZW50W2l0ZW1JbmRleF0gOiBudWxsKVxuICAgICAgfSwge1xuICAgICAgICBldmVudCxcbiAgICAgICAgb3JpZW50YXRpb24sXG4gICAgICAgIGxvb3AsXG4gICAgICAgIGNvbHMsXG4gICAgICAgIC8vIHRyZWF0IHVuZGVmaW5lZCAoZW1wdHkgZ3JpZCBzcGFjZXMpIGFzIGRpc2FibGVkIGluZGljZXMgc28gd2VcbiAgICAgICAgLy8gZG9uJ3QgZW5kIHVwIGluIHRoZW1cbiAgICAgICAgZGlzYWJsZWRJbmRpY2VzOiBnZXRDZWxsSW5kaWNlcyhbLi4uKGRpc2FibGVkSW5kaWNlcyB8fCBlbGVtZW50c1JlZi5jdXJyZW50Lm1hcCgoXywgaW5kZXgpID0+IGlzRGlzYWJsZWQoZWxlbWVudHNSZWYuY3VycmVudCwgaW5kZXgpID8gaW5kZXggOiB1bmRlZmluZWQpKSwgdW5kZWZpbmVkXSwgY2VsbE1hcCksXG4gICAgICAgIG1pbkluZGV4OiBtaW5HcmlkSW5kZXgsXG4gICAgICAgIG1heEluZGV4OiBtYXhHcmlkSW5kZXgsXG4gICAgICAgIHByZXZJbmRleDogZ2V0Q2VsbEluZGV4T2ZDb3JuZXIoYWN0aXZlSW5kZXggPiBtYXhJbmRleCA/IG1pbkluZGV4IDogYWN0aXZlSW5kZXgsIHNpemVzLCBjZWxsTWFwLCBjb2xzLFxuICAgICAgICAvLyB1c2UgYSBjb3JuZXIgbWF0Y2hpbmcgdGhlIGVkZ2UgY2xvc2VzdCB0byB0aGUgZGlyZWN0aW9uIHdlJ3JlXG4gICAgICAgIC8vIG1vdmluZyBpbiBzbyB3ZSBkb24ndCBlbmQgdXAgaW4gdGhlIHNhbWUgaXRlbS4gUHJlZmVyXG4gICAgICAgIC8vIHRvcC9sZWZ0IG92ZXIgYm90dG9tL3JpZ2h0LlxuICAgICAgICBldmVudC5rZXkgPT09IEFSUk9XX0RPV04gPyAnYmwnIDogZXZlbnQua2V5ID09PSBBUlJPV19SSUdIVCA/ICd0cicgOiAndGwnKVxuICAgICAgfSldOyAvLyBuYXZpZ2F0ZWQgY2VsbCB3aWxsIG5ldmVyIGJlIG51bGxpc2hcbiAgICB9XG4gICAgY29uc3QgdG9FbmRLZXlzID0ge1xuICAgICAgaG9yaXpvbnRhbDogW0FSUk9XX1JJR0hUXSxcbiAgICAgIHZlcnRpY2FsOiBbQVJST1dfRE9XTl0sXG4gICAgICBib3RoOiBbQVJST1dfUklHSFQsIEFSUk9XX0RPV05dXG4gICAgfVtvcmllbnRhdGlvbl07XG4gICAgY29uc3QgdG9TdGFydEtleXMgPSB7XG4gICAgICBob3Jpem9udGFsOiBbQVJST1dfTEVGVF0sXG4gICAgICB2ZXJ0aWNhbDogW0FSUk9XX1VQXSxcbiAgICAgIGJvdGg6IFtBUlJPV19MRUZULCBBUlJPV19VUF1cbiAgICB9W29yaWVudGF0aW9uXTtcbiAgICBjb25zdCBwcmV2ZW50ZWRLZXlzID0gaXNHcmlkID8gYWxsS2V5cyA6IHtcbiAgICAgIGhvcml6b250YWw6IGhvcml6b250YWxLZXlzLFxuICAgICAgdmVydGljYWw6IHZlcnRpY2FsS2V5cyxcbiAgICAgIGJvdGg6IGFsbEtleXNcbiAgICB9W29yaWVudGF0aW9uXTtcbiAgICBpZiAobmV4dEluZGV4ID09PSBhY3RpdmVJbmRleCAmJiBbLi4udG9FbmRLZXlzLCAuLi50b1N0YXJ0S2V5c10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgaWYgKGxvb3AgJiYgbmV4dEluZGV4ID09PSBtYXhJbmRleCAmJiB0b0VuZEtleXMuaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICBuZXh0SW5kZXggPSBtaW5JbmRleDtcbiAgICAgIH0gZWxzZSBpZiAobG9vcCAmJiBuZXh0SW5kZXggPT09IG1pbkluZGV4ICYmIHRvU3RhcnRLZXlzLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgbmV4dEluZGV4ID0gbWF4SW5kZXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXh0SW5kZXggPSBmaW5kTm9uRGlzYWJsZWRJbmRleChlbGVtZW50c1JlZiwge1xuICAgICAgICAgIHN0YXJ0aW5nSW5kZXg6IG5leHRJbmRleCxcbiAgICAgICAgICBkZWNyZW1lbnQ6IHRvU3RhcnRLZXlzLmluY2x1ZGVzKGV2ZW50LmtleSksXG4gICAgICAgICAgZGlzYWJsZWRJbmRpY2VzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobmV4dEluZGV4ICE9PSBhY3RpdmVJbmRleCAmJiAhaXNJbmRleE91dE9mQm91bmRzKGVsZW1lbnRzUmVmLCBuZXh0SW5kZXgpKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGlmIChwcmV2ZW50ZWRLZXlzLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICAgIG9uTmF2aWdhdGUobmV4dEluZGV4KTtcblxuICAgICAgLy8gV2FpdCBmb3IgRm9jdXNNYW5hZ2VyIGByZXR1cm5Gb2N1c2AgdG8gZXhlY3V0ZS5cbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgZW5xdWV1ZUZvY3VzKGVsZW1lbnRzUmVmLmN1cnJlbnRbbmV4dEluZGV4XSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgY29tcHV0ZWRQcm9wcyA9IHtcbiAgICAuLi5kb21Qcm9wcyxcbiAgICAuLi5yZW5kZXJFbGVtZW50UHJvcHMsXG4gICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgJ2FyaWEtb3JpZW50YXRpb24nOiBvcmllbnRhdGlvbiA9PT0gJ2JvdGgnID8gdW5kZWZpbmVkIDogb3JpZW50YXRpb24sXG4gICAgb25LZXlEb3duKGUpIHtcbiAgICAgIGRvbVByb3BzLm9uS2V5RG93biA9PSBudWxsIHx8IGRvbVByb3BzLm9uS2V5RG93bihlKTtcbiAgICAgIHJlbmRlckVsZW1lbnRQcm9wcy5vbktleURvd24gPT0gbnVsbCB8fCByZW5kZXJFbGVtZW50UHJvcHMub25LZXlEb3duKGUpO1xuICAgICAgaGFuZGxlS2V5RG93bihlKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb21wb3NpdGVDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IGNvbnRleHRWYWx1ZVxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChGbG9hdGluZ0xpc3QsIHtcbiAgICBlbGVtZW50c1JlZjogZWxlbWVudHNSZWZcbiAgfSwgcmVuZGVySnN4KHJlbmRlciwgY29tcHV0ZWRQcm9wcykpKTtcbn0pO1xuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvQ29tcG9zaXRlXG4gKi9cbmNvbnN0IENvbXBvc2l0ZUl0ZW0gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBDb21wb3NpdGVJdGVtKHByb3BzLCBmb3J3YXJkZWRSZWYpIHtcbiAgY29uc3Qge1xuICAgIHJlbmRlcixcbiAgICAuLi5kb21Qcm9wc1xuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHJlbmRlckVsZW1lbnRQcm9wcyA9IHJlbmRlciAmJiB0eXBlb2YgcmVuZGVyICE9PSAnZnVuY3Rpb24nID8gcmVuZGVyLnByb3BzIDoge307XG4gIGNvbnN0IHtcbiAgICBhY3RpdmVJbmRleCxcbiAgICBvbk5hdmlnYXRlXG4gIH0gPSBSZWFjdC51c2VDb250ZXh0KENvbXBvc2l0ZUNvbnRleHQpO1xuICBjb25zdCB7XG4gICAgcmVmLFxuICAgIGluZGV4XG4gIH0gPSB1c2VMaXN0SXRlbSgpO1xuICBjb25zdCBtZXJnZWRSZWYgPSB1c2VNZXJnZVJlZnMoW3JlZiwgZm9yd2FyZGVkUmVmLCByZW5kZXJFbGVtZW50UHJvcHMucmVmXSk7XG4gIGNvbnN0IGlzQWN0aXZlID0gYWN0aXZlSW5kZXggPT09IGluZGV4O1xuICBjb25zdCBjb21wdXRlZFByb3BzID0ge1xuICAgIC4uLmRvbVByb3BzLFxuICAgIC4uLnJlbmRlckVsZW1lbnRQcm9wcyxcbiAgICByZWY6IG1lcmdlZFJlZixcbiAgICB0YWJJbmRleDogaXNBY3RpdmUgPyAwIDogLTEsXG4gICAgJ2RhdGEtYWN0aXZlJzogaXNBY3RpdmUgPyAnJyA6IHVuZGVmaW5lZCxcbiAgICBvbkZvY3VzKGUpIHtcbiAgICAgIGRvbVByb3BzLm9uRm9jdXMgPT0gbnVsbCB8fCBkb21Qcm9wcy5vbkZvY3VzKGUpO1xuICAgICAgcmVuZGVyRWxlbWVudFByb3BzLm9uRm9jdXMgPT0gbnVsbCB8fCByZW5kZXJFbGVtZW50UHJvcHMub25Gb2N1cyhlKTtcbiAgICAgIG9uTmF2aWdhdGUoaW5kZXgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHJlbmRlckpzeChyZW5kZXIsIGNvbXB1dGVkUHJvcHMpO1xufSk7XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH07XG4gIHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuXG5sZXQgc2VydmVySGFuZG9mZkNvbXBsZXRlID0gZmFsc2U7XG5sZXQgY291bnQgPSAwO1xuY29uc3QgZ2VuSWQgPSAoKSA9PiAvLyBFbnN1cmUgdGhlIGlkIGlzIHVuaXF1ZSB3aXRoIG11bHRpcGxlIGluZGVwZW5kZW50IHZlcnNpb25zIG9mIEZsb2F0aW5nIFVJXG4vLyBvbiA8UmVhY3QgMThcblwiZmxvYXRpbmctdWktXCIgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA2KSArIGNvdW50Kys7XG5mdW5jdGlvbiB1c2VGbG9hdGluZ0lkKCkge1xuICBjb25zdCBbaWQsIHNldElkXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+IHNlcnZlckhhbmRvZmZDb21wbGV0ZSA/IGdlbklkKCkgOiB1bmRlZmluZWQpO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKGlkID09IG51bGwpIHtcbiAgICAgIHNldElkKGdlbklkKCkpO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtdKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXJ2ZXJIYW5kb2ZmQ29tcGxldGUgPSB0cnVlO1xuICB9LCBbXSk7XG4gIHJldHVybiBpZDtcbn1cbmNvbnN0IHVzZVJlYWN0SWQgPSBTYWZlUmVhY3QudXNlSWQ7XG5cbi8qKlxuICogVXNlcyBSZWFjdCAxOCdzIGJ1aWx0LWluIGB1c2VJZCgpYCB3aGVuIGF2YWlsYWJsZSwgb3IgZmFsbHMgYmFjayB0byBhXG4gKiBzbGlnaHRseSBsZXNzIHBlcmZvcm1hbnQgKHJlcXVpcmluZyBhIGRvdWJsZSByZW5kZXIpIGltcGxlbWVudGF0aW9uIGZvclxuICogZWFybGllciBSZWFjdCB2ZXJzaW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9yZWFjdC11dGlscyN1c2VpZFxuICovXG5jb25zdCB1c2VJZCA9IHVzZVJlYWN0SWQgfHwgdXNlRmxvYXRpbmdJZDtcblxubGV0IGRldk1lc3NhZ2VTZXQ7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gIGRldk1lc3NhZ2VTZXQgPSAvKiNfX1BVUkVfXyovbmV3IFNldCgpO1xufVxuZnVuY3Rpb24gd2FybigpIHtcbiAgdmFyIF9kZXZNZXNzYWdlU2V0O1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgbWVzc2FnZXMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgbWVzc2FnZXNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cbiAgY29uc3QgbWVzc2FnZSA9IFwiRmxvYXRpbmcgVUk6IFwiICsgbWVzc2FnZXMuam9pbignICcpO1xuICBpZiAoISgoX2Rldk1lc3NhZ2VTZXQgPSBkZXZNZXNzYWdlU2V0KSAhPSBudWxsICYmIF9kZXZNZXNzYWdlU2V0LmhhcyhtZXNzYWdlKSkpIHtcbiAgICB2YXIgX2Rldk1lc3NhZ2VTZXQyO1xuICAgIChfZGV2TWVzc2FnZVNldDIgPSBkZXZNZXNzYWdlU2V0KSA9PSBudWxsIHx8IF9kZXZNZXNzYWdlU2V0Mi5hZGQobWVzc2FnZSk7XG4gICAgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICB9XG59XG5mdW5jdGlvbiBlcnJvcigpIHtcbiAgdmFyIF9kZXZNZXNzYWdlU2V0MztcbiAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBtZXNzYWdlcyA9IG5ldyBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgIG1lc3NhZ2VzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gIH1cbiAgY29uc3QgbWVzc2FnZSA9IFwiRmxvYXRpbmcgVUk6IFwiICsgbWVzc2FnZXMuam9pbignICcpO1xuICBpZiAoISgoX2Rldk1lc3NhZ2VTZXQzID0gZGV2TWVzc2FnZVNldCkgIT0gbnVsbCAmJiBfZGV2TWVzc2FnZVNldDMuaGFzKG1lc3NhZ2UpKSkge1xuICAgIHZhciBfZGV2TWVzc2FnZVNldDQ7XG4gICAgKF9kZXZNZXNzYWdlU2V0NCA9IGRldk1lc3NhZ2VTZXQpID09IG51bGwgfHwgX2Rldk1lc3NhZ2VTZXQ0LmFkZChtZXNzYWdlKTtcbiAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICB9XG59XG5cbi8qKlxuICogUmVuZGVycyBhIHBvaW50aW5nIGFycm93IHRyaWFuZ2xlLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL0Zsb2F0aW5nQXJyb3dcbiAqL1xuY29uc3QgRmxvYXRpbmdBcnJvdyA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEZsb2F0aW5nQXJyb3cocHJvcHMsIHJlZikge1xuICBjb25zdCB7XG4gICAgY29udGV4dDoge1xuICAgICAgcGxhY2VtZW50LFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgZmxvYXRpbmdcbiAgICAgIH0sXG4gICAgICBtaWRkbGV3YXJlRGF0YToge1xuICAgICAgICBhcnJvd1xuICAgICAgfVxuICAgIH0sXG4gICAgd2lkdGggPSAxNCxcbiAgICBoZWlnaHQgPSA3LFxuICAgIHRpcFJhZGl1cyA9IDAsXG4gICAgc3Ryb2tlV2lkdGggPSAwLFxuICAgIHN0YXRpY09mZnNldCxcbiAgICBzdHJva2UsXG4gICAgZCxcbiAgICBzdHlsZToge1xuICAgICAgdHJhbnNmb3JtLFxuICAgICAgLi4ucmVzdFN0eWxlXG4gICAgfSA9IHt9LFxuICAgIC4uLnJlc3RcbiAgfSA9IHByb3BzO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgaWYgKCFyZWYpIHtcbiAgICAgIHdhcm4oJ1RoZSBgcmVmYCBwcm9wIGlzIHJlcXVpcmVkIGZvciBgRmxvYXRpbmdBcnJvd2AuJyk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGNsaXBQYXRoSWQgPSB1c2VJZCgpO1xuICBjb25zdCBbaXNSVEwsIHNldElzUlRMXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzI5MzJcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmICghZmxvYXRpbmcpIHJldHVybjtcbiAgICBjb25zdCBpc1JUTCA9IGdldENvbXB1dGVkU3R5bGUoZmxvYXRpbmcpLmRpcmVjdGlvbiA9PT0gJ3J0bCc7XG4gICAgaWYgKGlzUlRMKSB7XG4gICAgICBzZXRJc1JUTCh0cnVlKTtcbiAgICB9XG4gIH0sIFtmbG9hdGluZ10pO1xuICBpZiAoIWZsb2F0aW5nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBTdHJva2VzIG11c3QgYmUgZG91YmxlIHRoZSBib3JkZXIgd2lkdGgsIHRoaXMgZW5zdXJlcyB0aGUgc3Ryb2tlJ3Mgd2lkdGhcbiAgLy8gd29ya3MgYXMgeW91J2QgZXhwZWN0LlxuICBjb25zdCBjb21wdXRlZFN0cm9rZVdpZHRoID0gc3Ryb2tlV2lkdGggKiAyO1xuICBjb25zdCBoYWxmU3Ryb2tlV2lkdGggPSBjb21wdXRlZFN0cm9rZVdpZHRoIC8gMjtcbiAgY29uc3Qgc3ZnWCA9IHdpZHRoIC8gMiAqICh0aXBSYWRpdXMgLyAtOCArIDEpO1xuICBjb25zdCBzdmdZID0gaGVpZ2h0IC8gMiAqIHRpcFJhZGl1cyAvIDQ7XG4gIGNvbnN0IFtzaWRlLCBhbGlnbm1lbnRdID0gcGxhY2VtZW50LnNwbGl0KCctJyk7XG4gIGNvbnN0IGlzQ3VzdG9tU2hhcGUgPSAhIWQ7XG4gIGNvbnN0IGlzVmVydGljYWxTaWRlID0gc2lkZSA9PT0gJ3RvcCcgfHwgc2lkZSA9PT0gJ2JvdHRvbSc7XG4gIGNvbnN0IHlPZmZzZXRQcm9wID0gc3RhdGljT2Zmc2V0ICYmIGFsaWdubWVudCA9PT0gJ2VuZCcgPyAnYm90dG9tJyA6ICd0b3AnO1xuICBsZXQgeE9mZnNldFByb3AgPSBzdGF0aWNPZmZzZXQgJiYgYWxpZ25tZW50ID09PSAnZW5kJyA/ICdyaWdodCcgOiAnbGVmdCc7XG4gIGlmIChzdGF0aWNPZmZzZXQgJiYgaXNSVEwpIHtcbiAgICB4T2Zmc2V0UHJvcCA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyAnbGVmdCcgOiAncmlnaHQnO1xuICB9XG4gIGNvbnN0IGFycm93WCA9IChhcnJvdyA9PSBudWxsID8gdm9pZCAwIDogYXJyb3cueCkgIT0gbnVsbCA/IHN0YXRpY09mZnNldCB8fCBhcnJvdy54IDogJyc7XG4gIGNvbnN0IGFycm93WSA9IChhcnJvdyA9PSBudWxsID8gdm9pZCAwIDogYXJyb3cueSkgIT0gbnVsbCA/IHN0YXRpY09mZnNldCB8fCBhcnJvdy55IDogJyc7XG4gIGNvbnN0IGRWYWx1ZSA9IGQgfHwgJ00wLDAnICsgKFwiIEhcIiArIHdpZHRoKSArIChcIiBMXCIgKyAod2lkdGggLSBzdmdYKSArIFwiLFwiICsgKGhlaWdodCAtIHN2Z1kpKSArIChcIiBRXCIgKyB3aWR0aCAvIDIgKyBcIixcIiArIGhlaWdodCArIFwiIFwiICsgc3ZnWCArIFwiLFwiICsgKGhlaWdodCAtIHN2Z1kpKSArICcgWic7XG4gIGNvbnN0IHJvdGF0aW9uID0ge1xuICAgIHRvcDogaXNDdXN0b21TaGFwZSA/ICdyb3RhdGUoMTgwZGVnKScgOiAnJyxcbiAgICBsZWZ0OiBpc0N1c3RvbVNoYXBlID8gJ3JvdGF0ZSg5MGRlZyknIDogJ3JvdGF0ZSgtOTBkZWcpJyxcbiAgICBib3R0b206IGlzQ3VzdG9tU2hhcGUgPyAnJyA6ICdyb3RhdGUoMTgwZGVnKScsXG4gICAgcmlnaHQ6IGlzQ3VzdG9tU2hhcGUgPyAncm90YXRlKC05MGRlZyknIDogJ3JvdGF0ZSg5MGRlZyknXG4gIH1bc2lkZV07XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCBfZXh0ZW5kcyh7fSwgcmVzdCwge1xuICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSxcbiAgICByZWY6IHJlZixcbiAgICB3aWR0aDogaXNDdXN0b21TaGFwZSA/IHdpZHRoIDogd2lkdGggKyBjb21wdXRlZFN0cm9rZVdpZHRoLFxuICAgIGhlaWdodDogd2lkdGgsXG4gICAgdmlld0JveDogXCIwIDAgXCIgKyB3aWR0aCArIFwiIFwiICsgKGhlaWdodCA+IHdpZHRoID8gaGVpZ2h0IDogd2lkdGgpLFxuICAgIHN0eWxlOiB7XG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgIFt4T2Zmc2V0UHJvcF06IGFycm93WCxcbiAgICAgIFt5T2Zmc2V0UHJvcF06IGFycm93WSxcbiAgICAgIFtzaWRlXTogaXNWZXJ0aWNhbFNpZGUgfHwgaXNDdXN0b21TaGFwZSA/ICcxMDAlJyA6IFwiY2FsYygxMDAlIC0gXCIgKyBjb21wdXRlZFN0cm9rZVdpZHRoIC8gMiArIFwicHgpXCIsXG4gICAgICB0cmFuc2Zvcm06IFwiXCIgKyByb3RhdGlvbiArICh0cmFuc2Zvcm0gIT0gbnVsbCA/IHRyYW5zZm9ybSA6ICcnKSxcbiAgICAgIC4uLnJlc3RTdHlsZVxuICAgIH1cbiAgfSksIGNvbXB1dGVkU3Ryb2tlV2lkdGggPiAwICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgY2xpcFBhdGg6IFwidXJsKCNcIiArIGNsaXBQYXRoSWQgKyBcIilcIixcbiAgICBmaWxsOiBcIm5vbmVcIixcbiAgICBzdHJva2U6IHN0cm9rZVxuICAgIC8vIEFjY291bnQgZm9yIHRoZSBzdHJva2Ugb24gdGhlIGZpbGwgcGF0aCByZW5kZXJlZCBiZWxvdy5cbiAgICAsXG4gICAgc3Ryb2tlV2lkdGg6IGNvbXB1dGVkU3Ryb2tlV2lkdGggKyAoZCA/IDAgOiAxKSxcbiAgICBkOiBkVmFsdWVcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgc3Ryb2tlOiBjb21wdXRlZFN0cm9rZVdpZHRoICYmICFkID8gcmVzdC5maWxsIDogJ25vbmUnLFxuICAgIGQ6IGRWYWx1ZVxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJjbGlwUGF0aFwiLCB7XG4gICAgaWQ6IGNsaXBQYXRoSWRcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJyZWN0XCIsIHtcbiAgICB4OiAtaGFsZlN0cm9rZVdpZHRoLFxuICAgIHk6IGhhbGZTdHJva2VXaWR0aCAqIChpc0N1c3RvbVNoYXBlID8gLTEgOiAxKSxcbiAgICB3aWR0aDogd2lkdGggKyBjb21wdXRlZFN0cm9rZVdpZHRoLFxuICAgIGhlaWdodDogd2lkdGhcbiAgfSkpKTtcbn0pO1xuXG5mdW5jdGlvbiBjcmVhdGVQdWJTdWIoKSB7XG4gIGNvbnN0IG1hcCA9IG5ldyBNYXAoKTtcbiAgcmV0dXJuIHtcbiAgICBlbWl0KGV2ZW50LCBkYXRhKSB7XG4gICAgICB2YXIgX21hcCRnZXQ7XG4gICAgICAoX21hcCRnZXQgPSBtYXAuZ2V0KGV2ZW50KSkgPT0gbnVsbCB8fCBfbWFwJGdldC5mb3JFYWNoKGhhbmRsZXIgPT4gaGFuZGxlcihkYXRhKSk7XG4gICAgfSxcbiAgICBvbihldmVudCwgbGlzdGVuZXIpIHtcbiAgICAgIG1hcC5zZXQoZXZlbnQsIFsuLi4obWFwLmdldChldmVudCkgfHwgW10pLCBsaXN0ZW5lcl0pO1xuICAgIH0sXG4gICAgb2ZmKGV2ZW50LCBsaXN0ZW5lcikge1xuICAgICAgdmFyIF9tYXAkZ2V0MjtcbiAgICAgIG1hcC5zZXQoZXZlbnQsICgoX21hcCRnZXQyID0gbWFwLmdldChldmVudCkpID09IG51bGwgPyB2b2lkIDAgOiBfbWFwJGdldDIuZmlsdGVyKGwgPT4gbCAhPT0gbGlzdGVuZXIpKSB8fCBbXSk7XG4gICAgfVxuICB9O1xufVxuXG5jb25zdCBGbG9hdGluZ05vZGVDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5jb25zdCBGbG9hdGluZ1RyZWVDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcGFyZW50IG5vZGUgaWQgZm9yIG5lc3RlZCBmbG9hdGluZyBlbGVtZW50cywgaWYgYXZhaWxhYmxlLlxuICogUmV0dXJucyBgbnVsbGAgZm9yIHRvcC1sZXZlbCBmbG9hdGluZyBlbGVtZW50cy5cbiAqL1xuY29uc3QgdXNlRmxvYXRpbmdQYXJlbnROb2RlSWQgPSAoKSA9PiB7XG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dDtcbiAgcmV0dXJuICgoX1JlYWN0JHVzZUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KEZsb2F0aW5nTm9kZUNvbnRleHQpKSA9PSBudWxsID8gdm9pZCAwIDogX1JlYWN0JHVzZUNvbnRleHQuaWQpIHx8IG51bGw7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG5lYXJlc3QgZmxvYXRpbmcgdHJlZSBjb250ZXh0LCBpZiBhdmFpbGFibGUuXG4gKi9cbmNvbnN0IHVzZUZsb2F0aW5nVHJlZSA9ICgpID0+IFJlYWN0LnVzZUNvbnRleHQoRmxvYXRpbmdUcmVlQ29udGV4dCk7XG5cbi8qKlxuICogUmVnaXN0ZXJzIGEgbm9kZSBpbnRvIHRoZSBgRmxvYXRpbmdUcmVlYCwgcmV0dXJuaW5nIGl0cyBpZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9GbG9hdGluZ1RyZWVcbiAqL1xuZnVuY3Rpb24gdXNlRmxvYXRpbmdOb2RlSWQoY3VzdG9tUGFyZW50SWQpIHtcbiAgY29uc3QgaWQgPSB1c2VJZCgpO1xuICBjb25zdCB0cmVlID0gdXNlRmxvYXRpbmdUcmVlKCk7XG4gIGNvbnN0IHJlYWN0UGFyZW50SWQgPSB1c2VGbG9hdGluZ1BhcmVudE5vZGVJZCgpO1xuICBjb25zdCBwYXJlbnRJZCA9IGN1c3RvbVBhcmVudElkIHx8IHJlYWN0UGFyZW50SWQ7XG4gIGluZGV4KCgpID0+IHtcbiAgICBjb25zdCBub2RlID0ge1xuICAgICAgaWQsXG4gICAgICBwYXJlbnRJZFxuICAgIH07XG4gICAgdHJlZSA9PSBudWxsIHx8IHRyZWUuYWRkTm9kZShub2RlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdHJlZSA9PSBudWxsIHx8IHRyZWUucmVtb3ZlTm9kZShub2RlKTtcbiAgICB9O1xuICB9LCBbdHJlZSwgaWQsIHBhcmVudElkXSk7XG4gIHJldHVybiBpZDtcbn1cbi8qKlxuICogUHJvdmlkZXMgcGFyZW50IG5vZGUgY29udGV4dCBmb3IgbmVzdGVkIGZsb2F0aW5nIGVsZW1lbnRzLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL0Zsb2F0aW5nVHJlZVxuICovXG5mdW5jdGlvbiBGbG9hdGluZ05vZGUocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNoaWxkcmVuLFxuICAgIGlkXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgcGFyZW50SWQgPSB1c2VGbG9hdGluZ1BhcmVudE5vZGVJZCgpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRmxvYXRpbmdOb2RlQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgICBpZCxcbiAgICAgIHBhcmVudElkXG4gICAgfSksIFtpZCwgcGFyZW50SWRdKVxuICB9LCBjaGlsZHJlbik7XG59XG4vKipcbiAqIFByb3ZpZGVzIGNvbnRleHQgZm9yIG5lc3RlZCBmbG9hdGluZyBlbGVtZW50cyB3aGVuIHRoZXkgYXJlIG5vdCBjaGlsZHJlbiBvZlxuICogZWFjaCBvdGhlciBvbiB0aGUgRE9NLlxuICogVGhpcyBpcyBub3QgbmVjZXNzYXJ5IGluIGFsbCBjYXNlcywgZXhjZXB0IHdoZW4gdGhlcmUgbXVzdCBiZSBleHBsaWNpdCBjb21tdW5pY2F0aW9uIGJldHdlZW4gcGFyZW50IGFuZCBjaGlsZCBmbG9hdGluZyBlbGVtZW50cy4gSXQgaXMgbmVjZXNzYXJ5IGZvcjpcbiAqIC0gVGhlIGBidWJibGVzYCBvcHRpb24gaW4gdGhlIGB1c2VEaXNtaXNzKClgIEhvb2tcbiAqIC0gTmVzdGVkIHZpcnR1YWwgbGlzdCBuYXZpZ2F0aW9uXG4gKiAtIE5lc3RlZCBmbG9hdGluZyBlbGVtZW50cyB0aGF0IGVhY2ggb3BlbiBvbiBob3ZlclxuICogLSBDdXN0b20gY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHBhcmVudCBhbmQgY2hpbGQgZmxvYXRpbmcgZWxlbWVudHNcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9GbG9hdGluZ1RyZWVcbiAqL1xuZnVuY3Rpb24gRmxvYXRpbmdUcmVlKHByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICBjaGlsZHJlblxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IG5vZGVzUmVmID0gUmVhY3QudXNlUmVmKFtdKTtcbiAgY29uc3QgYWRkTm9kZSA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIG5vZGVzUmVmLmN1cnJlbnQgPSBbLi4ubm9kZXNSZWYuY3VycmVudCwgbm9kZV07XG4gIH0sIFtdKTtcbiAgY29uc3QgcmVtb3ZlTm9kZSA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIG5vZGVzUmVmLmN1cnJlbnQgPSBub2Rlc1JlZi5jdXJyZW50LmZpbHRlcihuID0+IG4gIT09IG5vZGUpO1xuICB9LCBbXSk7XG4gIGNvbnN0IGV2ZW50cyA9IFJlYWN0LnVzZVN0YXRlKCgpID0+IGNyZWF0ZVB1YlN1YigpKVswXTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEZsb2F0aW5nVHJlZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgICAgbm9kZXNSZWYsXG4gICAgICBhZGROb2RlLFxuICAgICAgcmVtb3ZlTm9kZSxcbiAgICAgIGV2ZW50c1xuICAgIH0pLCBbYWRkTm9kZSwgcmVtb3ZlTm9kZSwgZXZlbnRzXSlcbiAgfSwgY2hpbGRyZW4pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVBdHRyaWJ1dGUobmFtZSkge1xuICByZXR1cm4gXCJkYXRhLWZsb2F0aW5nLXVpLVwiICsgbmFtZTtcbn1cblxuZnVuY3Rpb24gdXNlTGF0ZXN0UmVmKHZhbHVlKSB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZih2YWx1ZSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuIHJlZjtcbn1cblxuY29uc3Qgc2FmZVBvbHlnb25JZGVudGlmaWVyID0gLyojX19QVVJFX18qL2NyZWF0ZUF0dHJpYnV0ZSgnc2FmZS1wb2x5Z29uJyk7XG5mdW5jdGlvbiBnZXREZWxheSh2YWx1ZSwgcHJvcCwgcG9pbnRlclR5cGUpIHtcbiAgaWYgKHBvaW50ZXJUeXBlICYmICFpc01vdXNlTGlrZVBvaW50ZXJUeXBlKHBvaW50ZXJUeXBlKSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gdm9pZCAwIDogdmFsdWVbcHJvcF07XG59XG4vKipcbiAqIE9wZW5zIHRoZSBmbG9hdGluZyBlbGVtZW50IHdoaWxlIGhvdmVyaW5nIG92ZXIgdGhlIHJlZmVyZW5jZSBlbGVtZW50LCBsaWtlXG4gKiBDU1MgYDpob3ZlcmAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdXNlSG92ZXJcbiAqL1xuZnVuY3Rpb24gdXNlSG92ZXIoY29udGV4dCwgcHJvcHMpIHtcbiAgaWYgKHByb3BzID09PSB2b2lkIDApIHtcbiAgICBwcm9wcyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBvcGVuLFxuICAgIG9uT3BlbkNoYW5nZSxcbiAgICBkYXRhUmVmLFxuICAgIGV2ZW50cyxcbiAgICBlbGVtZW50c1xuICB9ID0gY29udGV4dDtcbiAgY29uc3Qge1xuICAgIGVuYWJsZWQgPSB0cnVlLFxuICAgIGRlbGF5ID0gMCxcbiAgICBoYW5kbGVDbG9zZSA9IG51bGwsXG4gICAgbW91c2VPbmx5ID0gZmFsc2UsXG4gICAgcmVzdE1zID0gMCxcbiAgICBtb3ZlID0gdHJ1ZVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHRyZWUgPSB1c2VGbG9hdGluZ1RyZWUoKTtcbiAgY29uc3QgcGFyZW50SWQgPSB1c2VGbG9hdGluZ1BhcmVudE5vZGVJZCgpO1xuICBjb25zdCBoYW5kbGVDbG9zZVJlZiA9IHVzZUxhdGVzdFJlZihoYW5kbGVDbG9zZSk7XG4gIGNvbnN0IGRlbGF5UmVmID0gdXNlTGF0ZXN0UmVmKGRlbGF5KTtcbiAgY29uc3Qgb3BlblJlZiA9IHVzZUxhdGVzdFJlZihvcGVuKTtcbiAgY29uc3QgcG9pbnRlclR5cGVSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgY29uc3QgdGltZW91dFJlZiA9IFJlYWN0LnVzZVJlZigtMSk7XG4gIGNvbnN0IGhhbmRsZXJSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgY29uc3QgcmVzdFRpbWVvdXRSZWYgPSBSZWFjdC51c2VSZWYoLTEpO1xuICBjb25zdCBibG9ja01vdXNlTW92ZVJlZiA9IFJlYWN0LnVzZVJlZih0cnVlKTtcbiAgY29uc3QgcGVyZm9ybWVkUG9pbnRlckV2ZW50c011dGF0aW9uUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgdW5iaW5kTW91c2VNb3ZlUmVmID0gUmVhY3QudXNlUmVmKCgpID0+IHt9KTtcbiAgY29uc3QgaXNIb3Zlck9wZW4gPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdmFyIF9kYXRhUmVmJGN1cnJlbnQkb3BlbjtcbiAgICBjb25zdCB0eXBlID0gKF9kYXRhUmVmJGN1cnJlbnQkb3BlbiA9IGRhdGFSZWYuY3VycmVudC5vcGVuRXZlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZGF0YVJlZiRjdXJyZW50JG9wZW4udHlwZTtcbiAgICByZXR1cm4gKHR5cGUgPT0gbnVsbCA/IHZvaWQgMCA6IHR5cGUuaW5jbHVkZXMoJ21vdXNlJykpICYmIHR5cGUgIT09ICdtb3VzZWRvd24nO1xuICB9LCBbZGF0YVJlZl0pO1xuXG4gIC8vIFdoZW4gY2xvc2luZyBiZWZvcmUgb3BlbmluZywgY2xlYXIgdGhlIGRlbGF5IHRpbWVvdXRzIHRvIGNhbmNlbCBpdFxuICAvLyBmcm9tIHNob3dpbmcuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgZnVuY3Rpb24gb25PcGVuQ2hhbmdlKF9yZWYpIHtcbiAgICAgIGxldCB7XG4gICAgICAgIG9wZW5cbiAgICAgIH0gPSBfcmVmO1xuICAgICAgaWYgKCFvcGVuKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgICBjbGVhclRpbWVvdXQocmVzdFRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICAgIGJsb2NrTW91c2VNb3ZlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBldmVudHMub24oJ29wZW5jaGFuZ2UnLCBvbk9wZW5DaGFuZ2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBldmVudHMub2ZmKCdvcGVuY2hhbmdlJywgb25PcGVuQ2hhbmdlKTtcbiAgICB9O1xuICB9LCBbZW5hYmxlZCwgZXZlbnRzXSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgaWYgKCFoYW5kbGVDbG9zZVJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgaWYgKCFvcGVuKSByZXR1cm47XG4gICAgZnVuY3Rpb24gb25MZWF2ZShldmVudCkge1xuICAgICAgaWYgKGlzSG92ZXJPcGVuKCkpIHtcbiAgICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlLCBldmVudCwgJ2hvdmVyJyk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudChlbGVtZW50cy5mbG9hdGluZykuZG9jdW1lbnRFbGVtZW50O1xuICAgIGh0bWwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIG9uTGVhdmUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBodG1sLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBvbkxlYXZlKTtcbiAgICB9O1xuICB9LCBbZWxlbWVudHMuZmxvYXRpbmcsIG9wZW4sIG9uT3BlbkNoYW5nZSwgZW5hYmxlZCwgaGFuZGxlQ2xvc2VSZWYsIGlzSG92ZXJPcGVuXSk7XG4gIGNvbnN0IGNsb3NlV2l0aERlbGF5ID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50LCBydW5FbHNlQnJhbmNoLCByZWFzb24pIHtcbiAgICBpZiAocnVuRWxzZUJyYW5jaCA9PT0gdm9pZCAwKSB7XG4gICAgICBydW5FbHNlQnJhbmNoID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHJlYXNvbiA9PT0gdm9pZCAwKSB7XG4gICAgICByZWFzb24gPSAnaG92ZXInO1xuICAgIH1cbiAgICBjb25zdCBjbG9zZURlbGF5ID0gZ2V0RGVsYXkoZGVsYXlSZWYuY3VycmVudCwgJ2Nsb3NlJywgcG9pbnRlclR5cGVSZWYuY3VycmVudCk7XG4gICAgaWYgKGNsb3NlRGVsYXkgJiYgIWhhbmRsZXJSZWYuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICB0aW1lb3V0UmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiBvbk9wZW5DaGFuZ2UoZmFsc2UsIGV2ZW50LCByZWFzb24pLCBjbG9zZURlbGF5KTtcbiAgICB9IGVsc2UgaWYgKHJ1bkVsc2VCcmFuY2gpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlLCBldmVudCwgcmVhc29uKTtcbiAgICB9XG4gIH0sIFtkZWxheVJlZiwgb25PcGVuQ2hhbmdlXSk7XG4gIGNvbnN0IGNsZWFudXBNb3VzZU1vdmVIYW5kbGVyID0gdXNlRWZmZWN0RXZlbnQoKCkgPT4ge1xuICAgIHVuYmluZE1vdXNlTW92ZVJlZi5jdXJyZW50KCk7XG4gICAgaGFuZGxlclJlZi5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICB9KTtcbiAgY29uc3QgY2xlYXJQb2ludGVyRXZlbnRzID0gdXNlRWZmZWN0RXZlbnQoKCkgPT4ge1xuICAgIGlmIChwZXJmb3JtZWRQb2ludGVyRXZlbnRzTXV0YXRpb25SZWYuY3VycmVudCkge1xuICAgICAgY29uc3QgYm9keSA9IGdldERvY3VtZW50KGVsZW1lbnRzLmZsb2F0aW5nKS5ib2R5O1xuICAgICAgYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJyc7XG4gICAgICBib2R5LnJlbW92ZUF0dHJpYnV0ZShzYWZlUG9seWdvbklkZW50aWZpZXIpO1xuICAgICAgcGVyZm9ybWVkUG9pbnRlckV2ZW50c011dGF0aW9uUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIFJlZ2lzdGVyaW5nIHRoZSBtb3VzZSBldmVudHMgb24gdGhlIHJlZmVyZW5jZSBkaXJlY3RseSB0byBieXBhc3MgUmVhY3Qnc1xuICAvLyBkZWxlZ2F0aW9uIHN5c3RlbS4gSWYgdGhlIGN1cnNvciB3YXMgb24gYSBkaXNhYmxlZCBlbGVtZW50IGFuZCB0aGVuIGVudGVyZWRcbiAgLy8gdGhlIHJlZmVyZW5jZSAobm8gZ2FwKSwgYG1vdXNlZW50ZXJgIGRvZXNuJ3QgZmlyZSBpbiB0aGUgZGVsZWdhdGlvbiBzeXN0ZW0uXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgZnVuY3Rpb24gaXNDbGlja0xpa2VPcGVuRXZlbnQoKSB7XG4gICAgICByZXR1cm4gZGF0YVJlZi5jdXJyZW50Lm9wZW5FdmVudCA/IFsnY2xpY2snLCAnbW91c2Vkb3duJ10uaW5jbHVkZXMoZGF0YVJlZi5jdXJyZW50Lm9wZW5FdmVudC50eXBlKSA6IGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBvbk1vdXNlRW50ZXIoZXZlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgYmxvY2tNb3VzZU1vdmVSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgaWYgKG1vdXNlT25seSAmJiAhaXNNb3VzZUxpa2VQb2ludGVyVHlwZShwb2ludGVyVHlwZVJlZi5jdXJyZW50KSB8fCByZXN0TXMgPiAwICYmICFnZXREZWxheShkZWxheVJlZi5jdXJyZW50LCAnb3BlbicpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9wZW5EZWxheSA9IGdldERlbGF5KGRlbGF5UmVmLmN1cnJlbnQsICdvcGVuJywgcG9pbnRlclR5cGVSZWYuY3VycmVudCk7XG4gICAgICBpZiAob3BlbkRlbGF5KSB7XG4gICAgICAgIHRpbWVvdXRSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoIW9wZW5SZWYuY3VycmVudCkge1xuICAgICAgICAgICAgb25PcGVuQ2hhbmdlKHRydWUsIGV2ZW50LCAnaG92ZXInKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIG9wZW5EZWxheSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbk9wZW5DaGFuZ2UodHJ1ZSwgZXZlbnQsICdob3ZlcicpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBvbk1vdXNlTGVhdmUoZXZlbnQpIHtcbiAgICAgIGlmIChpc0NsaWNrTGlrZU9wZW5FdmVudCgpKSByZXR1cm47XG4gICAgICB1bmJpbmRNb3VzZU1vdmVSZWYuY3VycmVudCgpO1xuICAgICAgY29uc3QgZG9jID0gZ2V0RG9jdW1lbnQoZWxlbWVudHMuZmxvYXRpbmcpO1xuICAgICAgY2xlYXJUaW1lb3V0KHJlc3RUaW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgaWYgKGhhbmRsZUNsb3NlUmVmLmN1cnJlbnQgJiYgZGF0YVJlZi5jdXJyZW50LmZsb2F0aW5nQ29udGV4dCkge1xuICAgICAgICAvLyBQcmV2ZW50IGNsZWFyaW5nIGBvblNjcm9sbE1vdXNlTGVhdmVgIHRpbWVvdXQuXG4gICAgICAgIGlmICghb3Blbikge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGhhbmRsZXJSZWYuY3VycmVudCA9IGhhbmRsZUNsb3NlUmVmLmN1cnJlbnQoe1xuICAgICAgICAgIC4uLmRhdGFSZWYuY3VycmVudC5mbG9hdGluZ0NvbnRleHQsXG4gICAgICAgICAgdHJlZSxcbiAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgIHk6IGV2ZW50LmNsaWVudFksXG4gICAgICAgICAgb25DbG9zZSgpIHtcbiAgICAgICAgICAgIGNsZWFyUG9pbnRlckV2ZW50cygpO1xuICAgICAgICAgICAgY2xlYW51cE1vdXNlTW92ZUhhbmRsZXIoKTtcbiAgICAgICAgICAgIGNsb3NlV2l0aERlbGF5KGV2ZW50LCB0cnVlLCAnc2FmZS1wb2x5Z29uJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgaGFuZGxlciA9IGhhbmRsZXJSZWYuY3VycmVudDtcbiAgICAgICAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGhhbmRsZXIpO1xuICAgICAgICB1bmJpbmRNb3VzZU1vdmVSZWYuY3VycmVudCA9ICgpID0+IHtcbiAgICAgICAgICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgaGFuZGxlcik7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gQWxsb3cgaW50ZXJhY3Rpdml0eSB3aXRob3V0IGBzYWZlUG9seWdvbmAgb24gdG91Y2ggZGV2aWNlcy4gV2l0aCBhXG4gICAgICAvLyBwb2ludGVyLCBhIHNob3J0IGNsb3NlIGRlbGF5IGlzIGFuIGFsdGVybmF0aXZlLCBzbyBpdCBzaG91bGQgd29ya1xuICAgICAgLy8gY29uc2lzdGVudGx5LlxuICAgICAgY29uc3Qgc2hvdWxkQ2xvc2UgPSBwb2ludGVyVHlwZVJlZi5jdXJyZW50ID09PSAndG91Y2gnID8gIWNvbnRhaW5zKGVsZW1lbnRzLmZsb2F0aW5nLCBldmVudC5yZWxhdGVkVGFyZ2V0KSA6IHRydWU7XG4gICAgICBpZiAoc2hvdWxkQ2xvc2UpIHtcbiAgICAgICAgY2xvc2VXaXRoRGVsYXkoZXZlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEVuc3VyZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBjbG9zZXMgYWZ0ZXIgc2Nyb2xsaW5nIGV2ZW4gaWYgdGhlIHBvaW50ZXJcbiAgICAvLyBkaWQgbm90IG1vdmUuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2Rpc2N1c3Npb25zLzE2OTJcbiAgICBmdW5jdGlvbiBvblNjcm9sbE1vdXNlTGVhdmUoZXZlbnQpIHtcbiAgICAgIGlmIChpc0NsaWNrTGlrZU9wZW5FdmVudCgpKSByZXR1cm47XG4gICAgICBpZiAoIWRhdGFSZWYuY3VycmVudC5mbG9hdGluZ0NvbnRleHQpIHJldHVybjtcbiAgICAgIGhhbmRsZUNsb3NlUmVmLmN1cnJlbnQgPT0gbnVsbCB8fCBoYW5kbGVDbG9zZVJlZi5jdXJyZW50KHtcbiAgICAgICAgLi4uZGF0YVJlZi5jdXJyZW50LmZsb2F0aW5nQ29udGV4dCxcbiAgICAgICAgdHJlZSxcbiAgICAgICAgeDogZXZlbnQuY2xpZW50WCxcbiAgICAgICAgeTogZXZlbnQuY2xpZW50WSxcbiAgICAgICAgb25DbG9zZSgpIHtcbiAgICAgICAgICBjbGVhclBvaW50ZXJFdmVudHMoKTtcbiAgICAgICAgICBjbGVhbnVwTW91c2VNb3ZlSGFuZGxlcigpO1xuICAgICAgICAgIGNsb3NlV2l0aERlbGF5KGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfSkoZXZlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNFbGVtZW50KGVsZW1lbnRzLmRvbVJlZmVyZW5jZSkpIHtcbiAgICAgIHZhciBfZWxlbWVudHMkZmxvYXRpbmc7XG4gICAgICBjb25zdCByZWYgPSBlbGVtZW50cy5kb21SZWZlcmVuY2U7XG4gICAgICBvcGVuICYmIHJlZi5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgb25TY3JvbGxNb3VzZUxlYXZlKTtcbiAgICAgIChfZWxlbWVudHMkZmxvYXRpbmcgPSBlbGVtZW50cy5mbG9hdGluZykgPT0gbnVsbCB8fCBfZWxlbWVudHMkZmxvYXRpbmcuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIG9uU2Nyb2xsTW91c2VMZWF2ZSk7XG4gICAgICBtb3ZlICYmIHJlZi5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlRW50ZXIsIHtcbiAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgICByZWYuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIG9uTW91c2VFbnRlcik7XG4gICAgICByZWYuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIG9uTW91c2VMZWF2ZSk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB2YXIgX2VsZW1lbnRzJGZsb2F0aW5nMjtcbiAgICAgICAgb3BlbiAmJiByZWYucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIG9uU2Nyb2xsTW91c2VMZWF2ZSk7XG4gICAgICAgIChfZWxlbWVudHMkZmxvYXRpbmcyID0gZWxlbWVudHMuZmxvYXRpbmcpID09IG51bGwgfHwgX2VsZW1lbnRzJGZsb2F0aW5nMi5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgb25TY3JvbGxNb3VzZUxlYXZlKTtcbiAgICAgICAgbW92ZSAmJiByZWYucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZUVudGVyKTtcbiAgICAgICAgcmVmLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBvbk1vdXNlRW50ZXIpO1xuICAgICAgICByZWYucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIG9uTW91c2VMZWF2ZSk7XG4gICAgICB9O1xuICAgIH1cbiAgfSwgW2VsZW1lbnRzLCBlbmFibGVkLCBjb250ZXh0LCBtb3VzZU9ubHksIHJlc3RNcywgbW92ZSwgY2xvc2VXaXRoRGVsYXksIGNsZWFudXBNb3VzZU1vdmVIYW5kbGVyLCBjbGVhclBvaW50ZXJFdmVudHMsIG9uT3BlbkNoYW5nZSwgb3Blbiwgb3BlblJlZiwgdHJlZSwgZGVsYXlSZWYsIGhhbmRsZUNsb3NlUmVmLCBkYXRhUmVmXSk7XG5cbiAgLy8gQmxvY2sgcG9pbnRlci1ldmVudHMgb2YgZXZlcnkgZWxlbWVudCBvdGhlciB0aGFuIHRoZSByZWZlcmVuY2UgYW5kIGZsb2F0aW5nXG4gIC8vIHdoaWxlIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIG9wZW4gYW5kIGhhcyBhIGBoYW5kbGVDbG9zZWAgaGFuZGxlci4gQWxzb1xuICAvLyBoYW5kbGVzIG5lc3RlZCBmbG9hdGluZyBlbGVtZW50cy5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8xNzIyXG4gIGluZGV4KCgpID0+IHtcbiAgICB2YXIgX2hhbmRsZUNsb3NlUmVmJGN1cnJlO1xuICAgIGlmICghZW5hYmxlZCkgcmV0dXJuO1xuICAgIGlmIChvcGVuICYmIChfaGFuZGxlQ2xvc2VSZWYkY3VycmUgPSBoYW5kbGVDbG9zZVJlZi5jdXJyZW50KSAhPSBudWxsICYmIF9oYW5kbGVDbG9zZVJlZiRjdXJyZS5fX29wdGlvbnMuYmxvY2tQb2ludGVyRXZlbnRzICYmIGlzSG92ZXJPcGVuKCkpIHtcbiAgICAgIGNvbnN0IGJvZHkgPSBnZXREb2N1bWVudChlbGVtZW50cy5mbG9hdGluZykuYm9keTtcbiAgICAgIGJvZHkuc2V0QXR0cmlidXRlKHNhZmVQb2x5Z29uSWRlbnRpZmllciwgJycpO1xuICAgICAgYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuICAgICAgcGVyZm9ybWVkUG9pbnRlckV2ZW50c011dGF0aW9uUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgY29uc3QgZmxvYXRpbmdFbCA9IGVsZW1lbnRzLmZsb2F0aW5nO1xuICAgICAgaWYgKGlzRWxlbWVudChlbGVtZW50cy5kb21SZWZlcmVuY2UpICYmIGZsb2F0aW5nRWwpIHtcbiAgICAgICAgdmFyIF90cmVlJG5vZGVzUmVmJGN1cnJlbjtcbiAgICAgICAgY29uc3QgcmVmID0gZWxlbWVudHMuZG9tUmVmZXJlbmNlO1xuICAgICAgICBjb25zdCBwYXJlbnRGbG9hdGluZyA9IHRyZWUgPT0gbnVsbCB8fCAoX3RyZWUkbm9kZXNSZWYkY3VycmVuID0gdHJlZS5ub2Rlc1JlZi5jdXJyZW50LmZpbmQobm9kZSA9PiBub2RlLmlkID09PSBwYXJlbnRJZCkpID09IG51bGwgfHwgKF90cmVlJG5vZGVzUmVmJGN1cnJlbiA9IF90cmVlJG5vZGVzUmVmJGN1cnJlbi5jb250ZXh0KSA9PSBudWxsID8gdm9pZCAwIDogX3RyZWUkbm9kZXNSZWYkY3VycmVuLmVsZW1lbnRzLmZsb2F0aW5nO1xuICAgICAgICBpZiAocGFyZW50RmxvYXRpbmcpIHtcbiAgICAgICAgICBwYXJlbnRGbG9hdGluZy5zdHlsZS5wb2ludGVyRXZlbnRzID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmVmLnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnYXV0byc7XG4gICAgICAgIGZsb2F0aW5nRWwuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdhdXRvJztcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICByZWYuc3R5bGUucG9pbnRlckV2ZW50cyA9ICcnO1xuICAgICAgICAgIGZsb2F0aW5nRWwuc3R5bGUucG9pbnRlckV2ZW50cyA9ICcnO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2VuYWJsZWQsIG9wZW4sIHBhcmVudElkLCBlbGVtZW50cywgdHJlZSwgaGFuZGxlQ2xvc2VSZWYsIGlzSG92ZXJPcGVuXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoIW9wZW4pIHtcbiAgICAgIHBvaW50ZXJUeXBlUmVmLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICBjbGVhbnVwTW91c2VNb3ZlSGFuZGxlcigpO1xuICAgICAgY2xlYXJQb2ludGVyRXZlbnRzKCk7XG4gICAgfVxuICB9LCBbb3BlbiwgY2xlYW51cE1vdXNlTW92ZUhhbmRsZXIsIGNsZWFyUG9pbnRlckV2ZW50c10pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhbnVwTW91c2VNb3ZlSGFuZGxlcigpO1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICBjbGVhclRpbWVvdXQocmVzdFRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICBjbGVhclBvaW50ZXJFdmVudHMoKTtcbiAgICB9O1xuICB9LCBbZW5hYmxlZCwgZWxlbWVudHMuZG9tUmVmZXJlbmNlLCBjbGVhbnVwTW91c2VNb3ZlSGFuZGxlciwgY2xlYXJQb2ludGVyRXZlbnRzXSk7XG4gIGNvbnN0IHJlZmVyZW5jZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGZ1bmN0aW9uIHNldFBvaW50ZXJSZWYoZXZlbnQpIHtcbiAgICAgIHBvaW50ZXJUeXBlUmVmLmN1cnJlbnQgPSBldmVudC5wb2ludGVyVHlwZTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIG9uUG9pbnRlckRvd246IHNldFBvaW50ZXJSZWYsXG4gICAgICBvblBvaW50ZXJFbnRlcjogc2V0UG9pbnRlclJlZixcbiAgICAgIG9uTW91c2VNb3ZlKGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBuYXRpdmVFdmVudFxuICAgICAgICB9ID0gZXZlbnQ7XG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlTW92ZSgpIHtcbiAgICAgICAgICBpZiAoIWJsb2NrTW91c2VNb3ZlUmVmLmN1cnJlbnQgJiYgIW9wZW5SZWYuY3VycmVudCkge1xuICAgICAgICAgICAgb25PcGVuQ2hhbmdlKHRydWUsIG5hdGl2ZUV2ZW50LCAnaG92ZXInKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1vdXNlT25seSAmJiAhaXNNb3VzZUxpa2VQb2ludGVyVHlwZShwb2ludGVyVHlwZVJlZi5jdXJyZW50KSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3BlbiB8fCByZXN0TXMgPT09IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY2xlYXJUaW1lb3V0KHJlc3RUaW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgICBpZiAocG9pbnRlclR5cGVSZWYuY3VycmVudCA9PT0gJ3RvdWNoJykge1xuICAgICAgICAgIGhhbmRsZU1vdXNlTW92ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3RUaW1lb3V0UmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dChoYW5kbGVNb3VzZU1vdmUsIHJlc3RNcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LCBbbW91c2VPbmx5LCBvbk9wZW5DaGFuZ2UsIG9wZW4sIG9wZW5SZWYsIHJlc3RNc10pO1xuICBjb25zdCBmbG9hdGluZyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBvbk1vdXNlRW50ZXIoKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dFJlZi5jdXJyZW50KTtcbiAgICB9LFxuICAgIG9uTW91c2VMZWF2ZShldmVudCkge1xuICAgICAgY2xvc2VXaXRoRGVsYXkoZXZlbnQubmF0aXZlRXZlbnQsIGZhbHNlKTtcbiAgICB9XG4gIH0pLCBbY2xvc2VXaXRoRGVsYXldKTtcbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4gZW5hYmxlZCA/IHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmdcbiAgfSA6IHt9LCBbZW5hYmxlZCwgcmVmZXJlbmNlLCBmbG9hdGluZ10pO1xufVxuXG5jb25zdCBOT09QID0gKCkgPT4ge307XG5jb25zdCBGbG9hdGluZ0RlbGF5R3JvdXBDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQoe1xuICBkZWxheTogMCxcbiAgaW5pdGlhbERlbGF5OiAwLFxuICB0aW1lb3V0TXM6IDAsXG4gIGN1cnJlbnRJZDogbnVsbCxcbiAgc2V0Q3VycmVudElkOiBOT09QLFxuICBzZXRTdGF0ZTogTk9PUCxcbiAgaXNJbnN0YW50UGhhc2U6IGZhbHNlXG59KTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgYHVzZURlbGF5R3JvdXAoKWAgaW5zdGVhZC5cbiAqL1xuY29uc3QgdXNlRGVsYXlHcm91cENvbnRleHQgPSAoKSA9PiBSZWFjdC51c2VDb250ZXh0KEZsb2F0aW5nRGVsYXlHcm91cENvbnRleHQpO1xuLyoqXG4gKiBQcm92aWRlcyBjb250ZXh0IGZvciBhIGdyb3VwIG9mIGZsb2F0aW5nIGVsZW1lbnRzIHRoYXQgc2hvdWxkIHNoYXJlIGFcbiAqIGBkZWxheWAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvRmxvYXRpbmdEZWxheUdyb3VwXG4gKi9cbmZ1bmN0aW9uIEZsb2F0aW5nRGVsYXlHcm91cChwcm9wcykge1xuICBjb25zdCB7XG4gICAgY2hpbGRyZW4sXG4gICAgZGVsYXksXG4gICAgdGltZW91dE1zID0gMFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVdID0gUmVhY3QudXNlUmVkdWNlcigocHJldiwgbmV4dCkgPT4gKHtcbiAgICAuLi5wcmV2LFxuICAgIC4uLm5leHRcbiAgfSksIHtcbiAgICBkZWxheSxcbiAgICB0aW1lb3V0TXMsXG4gICAgaW5pdGlhbERlbGF5OiBkZWxheSxcbiAgICBjdXJyZW50SWQ6IG51bGwsXG4gICAgaXNJbnN0YW50UGhhc2U6IGZhbHNlXG4gIH0pO1xuICBjb25zdCBpbml0aWFsQ3VycmVudElkUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBzZXRDdXJyZW50SWQgPSBSZWFjdC51c2VDYWxsYmFjayhjdXJyZW50SWQgPT4ge1xuICAgIHNldFN0YXRlKHtcbiAgICAgIGN1cnJlbnRJZFxuICAgIH0pO1xuICB9LCBbXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoc3RhdGUuY3VycmVudElkKSB7XG4gICAgICBpZiAoaW5pdGlhbEN1cnJlbnRJZFJlZi5jdXJyZW50ID09PSBudWxsKSB7XG4gICAgICAgIGluaXRpYWxDdXJyZW50SWRSZWYuY3VycmVudCA9IHN0YXRlLmN1cnJlbnRJZDtcbiAgICAgIH0gZWxzZSBpZiAoIXN0YXRlLmlzSW5zdGFudFBoYXNlKSB7XG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICBpc0luc3RhbnRQaGFzZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHN0YXRlLmlzSW5zdGFudFBoYXNlKSB7XG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICBpc0luc3RhbnRQaGFzZTogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpbml0aWFsQ3VycmVudElkUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgIH1cbiAgfSwgW3N0YXRlLmN1cnJlbnRJZCwgc3RhdGUuaXNJbnN0YW50UGhhc2VdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEZsb2F0aW5nRGVsYXlHcm91cENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzZXRTdGF0ZSxcbiAgICAgIHNldEN1cnJlbnRJZFxuICAgIH0pLCBbc3RhdGUsIHNldEN1cnJlbnRJZF0pXG4gIH0sIGNoaWxkcmVuKTtcbn1cbi8qKlxuICogRW5hYmxlcyBncm91cGluZyB3aGVuIGNhbGxlZCBpbnNpZGUgYSBjb21wb25lbnQgdGhhdCdzIGEgY2hpbGQgb2YgYVxuICogYEZsb2F0aW5nRGVsYXlHcm91cGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvRmxvYXRpbmdEZWxheUdyb3VwXG4gKi9cbmZ1bmN0aW9uIHVzZURlbGF5R3JvdXAoY29udGV4dCwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBvcGVuLFxuICAgIG9uT3BlbkNoYW5nZSxcbiAgICBmbG9hdGluZ0lkXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgaWQ6IG9wdGlvbklkXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpZCA9IG9wdGlvbklkICE9IG51bGwgPyBvcHRpb25JZCA6IGZsb2F0aW5nSWQ7XG4gIGNvbnN0IGdyb3VwQ29udGV4dCA9IHVzZURlbGF5R3JvdXBDb250ZXh0KCk7XG4gIGNvbnN0IHtcbiAgICBjdXJyZW50SWQsXG4gICAgc2V0Q3VycmVudElkLFxuICAgIGluaXRpYWxEZWxheSxcbiAgICBzZXRTdGF0ZSxcbiAgICB0aW1lb3V0TXNcbiAgfSA9IGdyb3VwQ29udGV4dDtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmICghY3VycmVudElkKSByZXR1cm47XG4gICAgc2V0U3RhdGUoe1xuICAgICAgZGVsYXk6IHtcbiAgICAgICAgb3BlbjogMSxcbiAgICAgICAgY2xvc2U6IGdldERlbGF5KGluaXRpYWxEZWxheSwgJ2Nsb3NlJylcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoY3VycmVudElkICE9PSBpZCkge1xuICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICB9XG4gIH0sIFtpZCwgb25PcGVuQ2hhbmdlLCBzZXRTdGF0ZSwgY3VycmVudElkLCBpbml0aWFsRGVsYXldKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGZ1bmN0aW9uIHVuc2V0KCkge1xuICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgZGVsYXk6IGluaXRpYWxEZWxheSxcbiAgICAgICAgY3VycmVudElkOiBudWxsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKCFjdXJyZW50SWQpIHJldHVybjtcbiAgICBpZiAoIW9wZW4gJiYgY3VycmVudElkID09PSBpZCkge1xuICAgICAgaWYgKHRpbWVvdXRNcykge1xuICAgICAgICBjb25zdCB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQodW5zZXQsIHRpbWVvdXRNcyk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgdW5zZXQoKTtcbiAgICB9XG4gIH0sIFtvcGVuLCBzZXRTdGF0ZSwgY3VycmVudElkLCBpZCwgb25PcGVuQ2hhbmdlLCBpbml0aWFsRGVsYXksIHRpbWVvdXRNc10pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKHNldEN1cnJlbnRJZCA9PT0gTk9PUCB8fCAhb3BlbikgcmV0dXJuO1xuICAgIHNldEN1cnJlbnRJZChpZCk7XG4gIH0sIFtvcGVuLCBzZXRDdXJyZW50SWQsIGlkXSk7XG4gIHJldHVybiBncm91cENvbnRleHQ7XG59XG5cbmZ1bmN0aW9uIGdldEFuY2VzdG9ycyhub2RlcywgaWQpIHtcbiAgdmFyIF9ub2RlcyRmaW5kO1xuICBsZXQgYWxsQW5jZXN0b3JzID0gW107XG4gIGxldCBjdXJyZW50UGFyZW50SWQgPSAoX25vZGVzJGZpbmQgPSBub2Rlcy5maW5kKG5vZGUgPT4gbm9kZS5pZCA9PT0gaWQpKSA9PSBudWxsID8gdm9pZCAwIDogX25vZGVzJGZpbmQucGFyZW50SWQ7XG4gIHdoaWxlIChjdXJyZW50UGFyZW50SWQpIHtcbiAgICBjb25zdCBjdXJyZW50Tm9kZSA9IG5vZGVzLmZpbmQobm9kZSA9PiBub2RlLmlkID09PSBjdXJyZW50UGFyZW50SWQpO1xuICAgIGN1cnJlbnRQYXJlbnRJZCA9IGN1cnJlbnROb2RlID09IG51bGwgPyB2b2lkIDAgOiBjdXJyZW50Tm9kZS5wYXJlbnRJZDtcbiAgICBpZiAoY3VycmVudE5vZGUpIHtcbiAgICAgIGFsbEFuY2VzdG9ycyA9IGFsbEFuY2VzdG9ycy5jb25jYXQoY3VycmVudE5vZGUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYWxsQW5jZXN0b3JzO1xufVxuXG5mdW5jdGlvbiBnZXRDaGlsZHJlbihub2RlcywgaWQpIHtcbiAgbGV0IGFsbENoaWxkcmVuID0gbm9kZXMuZmlsdGVyKG5vZGUgPT4ge1xuICAgIHZhciBfbm9kZSRjb250ZXh0O1xuICAgIHJldHVybiBub2RlLnBhcmVudElkID09PSBpZCAmJiAoKF9ub2RlJGNvbnRleHQgPSBub2RlLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRjb250ZXh0Lm9wZW4pO1xuICB9KTtcbiAgbGV0IGN1cnJlbnRDaGlsZHJlbiA9IGFsbENoaWxkcmVuO1xuICB3aGlsZSAoY3VycmVudENoaWxkcmVuLmxlbmd0aCkge1xuICAgIGN1cnJlbnRDaGlsZHJlbiA9IG5vZGVzLmZpbHRlcihub2RlID0+IHtcbiAgICAgIHZhciBfY3VycmVudENoaWxkcmVuO1xuICAgICAgcmV0dXJuIChfY3VycmVudENoaWxkcmVuID0gY3VycmVudENoaWxkcmVuKSA9PSBudWxsID8gdm9pZCAwIDogX2N1cnJlbnRDaGlsZHJlbi5zb21lKG4gPT4ge1xuICAgICAgICB2YXIgX25vZGUkY29udGV4dDI7XG4gICAgICAgIHJldHVybiBub2RlLnBhcmVudElkID09PSBuLmlkICYmICgoX25vZGUkY29udGV4dDIgPSBub2RlLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRjb250ZXh0Mi5vcGVuKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGFsbENoaWxkcmVuID0gYWxsQ2hpbGRyZW4uY29uY2F0KGN1cnJlbnRDaGlsZHJlbik7XG4gIH1cbiAgcmV0dXJuIGFsbENoaWxkcmVuO1xufVxuZnVuY3Rpb24gZ2V0RGVlcGVzdE5vZGUobm9kZXMsIGlkKSB7XG4gIGxldCBkZWVwZXN0Tm9kZUlkO1xuICBsZXQgbWF4RGVwdGggPSAtMTtcbiAgZnVuY3Rpb24gZmluZERlZXBlc3Qobm9kZUlkLCBkZXB0aCkge1xuICAgIGlmIChkZXB0aCA+IG1heERlcHRoKSB7XG4gICAgICBkZWVwZXN0Tm9kZUlkID0gbm9kZUlkO1xuICAgICAgbWF4RGVwdGggPSBkZXB0aDtcbiAgICB9XG4gICAgY29uc3QgY2hpbGRyZW4gPSBnZXRDaGlsZHJlbihub2Rlcywgbm9kZUlkKTtcbiAgICBjaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcbiAgICAgIGZpbmREZWVwZXN0KGNoaWxkLmlkLCBkZXB0aCArIDEpO1xuICAgIH0pO1xuICB9XG4gIGZpbmREZWVwZXN0KGlkLCAwKTtcbiAgcmV0dXJuIG5vZGVzLmZpbmQobm9kZSA9PiBub2RlLmlkID09PSBkZWVwZXN0Tm9kZUlkKTtcbn1cblxuLy8gTW9kaWZpZWQgdG8gYWRkIGNvbmRpdGlvbmFsIGBhcmlhLWhpZGRlbmAgc3VwcG9ydDpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90aGVLYXNoZXkvYXJpYS1oaWRkZW4vYmxvYi85MjIwYzhmNGE0ZmQzNWY2M2JlZTU1MTBhOWY0MWEzNzI2NDM4MmQ0L3NyYy9pbmRleC50c1xubGV0IGNvdW50ZXJNYXAgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbmxldCB1bmNvbnRyb2xsZWRFbGVtZW50c1NldCA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha1NldCgpO1xubGV0IG1hcmtlck1hcCA9IHt9O1xubGV0IGxvY2tDb3VudCA9IDA7XG5jb25zdCBzdXBwb3J0c0luZXJ0ID0gKCkgPT4gdHlwZW9mIEhUTUxFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiAnaW5lcnQnIGluIEhUTUxFbGVtZW50LnByb3RvdHlwZTtcbmNvbnN0IHVud3JhcEhvc3QgPSBub2RlID0+IG5vZGUgJiYgKG5vZGUuaG9zdCB8fCB1bndyYXBIb3N0KG5vZGUucGFyZW50Tm9kZSkpO1xuY29uc3QgY29ycmVjdEVsZW1lbnRzID0gKHBhcmVudCwgdGFyZ2V0cykgPT4gdGFyZ2V0cy5tYXAodGFyZ2V0ID0+IHtcbiAgaWYgKHBhcmVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuICBjb25zdCBjb3JyZWN0ZWRUYXJnZXQgPSB1bndyYXBIb3N0KHRhcmdldCk7XG4gIGlmIChwYXJlbnQuY29udGFpbnMoY29ycmVjdGVkVGFyZ2V0KSkge1xuICAgIHJldHVybiBjb3JyZWN0ZWRUYXJnZXQ7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59KS5maWx0ZXIoeCA9PiB4ICE9IG51bGwpO1xuZnVuY3Rpb24gYXBwbHlBdHRyaWJ1dGVUb090aGVycyh1bmNvcnJlY3RlZEF2b2lkRWxlbWVudHMsIGJvZHksIGFyaWFIaWRkZW4sIGluZXJ0KSB7XG4gIGNvbnN0IG1hcmtlck5hbWUgPSAnZGF0YS1mbG9hdGluZy11aS1pbmVydCc7XG4gIGNvbnN0IGNvbnRyb2xBdHRyaWJ1dGUgPSBpbmVydCA/ICdpbmVydCcgOiBhcmlhSGlkZGVuID8gJ2FyaWEtaGlkZGVuJyA6IG51bGw7XG4gIGNvbnN0IGF2b2lkRWxlbWVudHMgPSBjb3JyZWN0RWxlbWVudHMoYm9keSwgdW5jb3JyZWN0ZWRBdm9pZEVsZW1lbnRzKTtcbiAgY29uc3QgZWxlbWVudHNUb0tlZXAgPSBuZXcgU2V0KCk7XG4gIGNvbnN0IGVsZW1lbnRzVG9TdG9wID0gbmV3IFNldChhdm9pZEVsZW1lbnRzKTtcbiAgY29uc3QgaGlkZGVuRWxlbWVudHMgPSBbXTtcbiAgaWYgKCFtYXJrZXJNYXBbbWFya2VyTmFtZV0pIHtcbiAgICBtYXJrZXJNYXBbbWFya2VyTmFtZV0gPSBuZXcgV2Vha01hcCgpO1xuICB9XG4gIGNvbnN0IG1hcmtlckNvdW50ZXIgPSBtYXJrZXJNYXBbbWFya2VyTmFtZV07XG4gIGF2b2lkRWxlbWVudHMuZm9yRWFjaChrZWVwKTtcbiAgZGVlcChib2R5KTtcbiAgZWxlbWVudHNUb0tlZXAuY2xlYXIoKTtcbiAgZnVuY3Rpb24ga2VlcChlbCkge1xuICAgIGlmICghZWwgfHwgZWxlbWVudHNUb0tlZXAuaGFzKGVsKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbGVtZW50c1RvS2VlcC5hZGQoZWwpO1xuICAgIGVsLnBhcmVudE5vZGUgJiYga2VlcChlbC5wYXJlbnROb2RlKTtcbiAgfVxuICBmdW5jdGlvbiBkZWVwKHBhcmVudCkge1xuICAgIGlmICghcGFyZW50IHx8IGVsZW1lbnRzVG9TdG9wLmhhcyhwYXJlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFtdLmZvckVhY2guY2FsbChwYXJlbnQuY2hpbGRyZW4sIG5vZGUgPT4ge1xuICAgICAgaWYgKGdldE5vZGVOYW1lKG5vZGUpID09PSAnc2NyaXB0JykgcmV0dXJuO1xuICAgICAgaWYgKGVsZW1lbnRzVG9LZWVwLmhhcyhub2RlKSkge1xuICAgICAgICBkZWVwKG5vZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgYXR0ciA9IGNvbnRyb2xBdHRyaWJ1dGUgPyBub2RlLmdldEF0dHJpYnV0ZShjb250cm9sQXR0cmlidXRlKSA6IG51bGw7XG4gICAgICAgIGNvbnN0IGFscmVhZHlIaWRkZW4gPSBhdHRyICE9PSBudWxsICYmIGF0dHIgIT09ICdmYWxzZSc7XG4gICAgICAgIGNvbnN0IGNvdW50ZXJWYWx1ZSA9IChjb3VudGVyTWFwLmdldChub2RlKSB8fCAwKSArIDE7XG4gICAgICAgIGNvbnN0IG1hcmtlclZhbHVlID0gKG1hcmtlckNvdW50ZXIuZ2V0KG5vZGUpIHx8IDApICsgMTtcbiAgICAgICAgY291bnRlck1hcC5zZXQobm9kZSwgY291bnRlclZhbHVlKTtcbiAgICAgICAgbWFya2VyQ291bnRlci5zZXQobm9kZSwgbWFya2VyVmFsdWUpO1xuICAgICAgICBoaWRkZW5FbGVtZW50cy5wdXNoKG5vZGUpO1xuICAgICAgICBpZiAoY291bnRlclZhbHVlID09PSAxICYmIGFscmVhZHlIaWRkZW4pIHtcbiAgICAgICAgICB1bmNvbnRyb2xsZWRFbGVtZW50c1NldC5hZGQobm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hcmtlclZhbHVlID09PSAxKSB7XG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUobWFya2VyTmFtZSwgJycpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYWxyZWFkeUhpZGRlbiAmJiBjb250cm9sQXR0cmlidXRlKSB7XG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoY29udHJvbEF0dHJpYnV0ZSwgJ3RydWUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGxvY2tDb3VudCsrO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGhpZGRlbkVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBjb25zdCBjb3VudGVyVmFsdWUgPSAoY291bnRlck1hcC5nZXQoZWxlbWVudCkgfHwgMCkgLSAxO1xuICAgICAgY29uc3QgbWFya2VyVmFsdWUgPSAobWFya2VyQ291bnRlci5nZXQoZWxlbWVudCkgfHwgMCkgLSAxO1xuICAgICAgY291bnRlck1hcC5zZXQoZWxlbWVudCwgY291bnRlclZhbHVlKTtcbiAgICAgIG1hcmtlckNvdW50ZXIuc2V0KGVsZW1lbnQsIG1hcmtlclZhbHVlKTtcbiAgICAgIGlmICghY291bnRlclZhbHVlKSB7XG4gICAgICAgIGlmICghdW5jb250cm9sbGVkRWxlbWVudHNTZXQuaGFzKGVsZW1lbnQpICYmIGNvbnRyb2xBdHRyaWJ1dGUpIHtcbiAgICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShjb250cm9sQXR0cmlidXRlKTtcbiAgICAgICAgfVxuICAgICAgICB1bmNvbnRyb2xsZWRFbGVtZW50c1NldC5kZWxldGUoZWxlbWVudCk7XG4gICAgICB9XG4gICAgICBpZiAoIW1hcmtlclZhbHVlKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG1hcmtlck5hbWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGxvY2tDb3VudC0tO1xuICAgIGlmICghbG9ja0NvdW50KSB7XG4gICAgICBjb3VudGVyTWFwID0gbmV3IFdlYWtNYXAoKTtcbiAgICAgIGNvdW50ZXJNYXAgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgdW5jb250cm9sbGVkRWxlbWVudHNTZXQgPSBuZXcgV2Vha1NldCgpO1xuICAgICAgbWFya2VyTWFwID0ge307XG4gICAgfVxuICB9O1xufVxuZnVuY3Rpb24gbWFya090aGVycyhhdm9pZEVsZW1lbnRzLCBhcmlhSGlkZGVuLCBpbmVydCkge1xuICBpZiAoYXJpYUhpZGRlbiA9PT0gdm9pZCAwKSB7XG4gICAgYXJpYUhpZGRlbiA9IGZhbHNlO1xuICB9XG4gIGlmIChpbmVydCA9PT0gdm9pZCAwKSB7XG4gICAgaW5lcnQgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBib2R5ID0gZ2V0RG9jdW1lbnQoYXZvaWRFbGVtZW50c1swXSkuYm9keTtcbiAgcmV0dXJuIGFwcGx5QXR0cmlidXRlVG9PdGhlcnMoYXZvaWRFbGVtZW50cy5jb25jYXQoQXJyYXkuZnJvbShib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thcmlhLWxpdmVdJykpKSwgYm9keSwgYXJpYUhpZGRlbiwgaW5lcnQpO1xufVxuXG5jb25zdCBnZXRUYWJiYWJsZU9wdGlvbnMgPSAoKSA9PiAoe1xuICBnZXRTaGFkb3dSb290OiB0cnVlLFxuICBkaXNwbGF5Q2hlY2s6XG4gIC8vIEpTRE9NIGRvZXMgbm90IHN1cHBvcnQgdGhlIGB0YWJiYWJsZWAgbGlicmFyeS4gVG8gc29sdmUgdGhpcyB3ZSBjYW5cbiAgLy8gY2hlY2sgaWYgYFJlc2l6ZU9ic2VydmVyYCBpcyBhIHJlYWwgZnVuY3Rpb24gKG5vdCBwb2x5ZmlsbGVkKSwgd2hpY2hcbiAgLy8gZGV0ZXJtaW5lcyBpZiB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBpcyBKU0RPTS1saWtlLlxuICB0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicgJiYgUmVzaXplT2JzZXJ2ZXIudG9TdHJpbmcoKS5pbmNsdWRlcygnW25hdGl2ZSBjb2RlXScpID8gJ2Z1bGwnIDogJ25vbmUnXG59KTtcbmZ1bmN0aW9uIGdldFRhYmJhYmxlSW4oY29udGFpbmVyLCBkaXJlY3Rpb24pIHtcbiAgY29uc3QgYWxsVGFiYmFibGUgPSB0YWJiYWJsZShjb250YWluZXIsIGdldFRhYmJhYmxlT3B0aW9ucygpKTtcbiAgaWYgKGRpcmVjdGlvbiA9PT0gJ3ByZXYnKSB7XG4gICAgYWxsVGFiYmFibGUucmV2ZXJzZSgpO1xuICB9XG4gIGNvbnN0IGFjdGl2ZUluZGV4ID0gYWxsVGFiYmFibGUuaW5kZXhPZihhY3RpdmVFbGVtZW50KGdldERvY3VtZW50KGNvbnRhaW5lcikpKTtcbiAgY29uc3QgbmV4dFRhYmJhYmxlRWxlbWVudHMgPSBhbGxUYWJiYWJsZS5zbGljZShhY3RpdmVJbmRleCArIDEpO1xuICByZXR1cm4gbmV4dFRhYmJhYmxlRWxlbWVudHNbMF07XG59XG5mdW5jdGlvbiBnZXROZXh0VGFiYmFibGUoKSB7XG4gIHJldHVybiBnZXRUYWJiYWJsZUluKGRvY3VtZW50LmJvZHksICduZXh0Jyk7XG59XG5mdW5jdGlvbiBnZXRQcmV2aW91c1RhYmJhYmxlKCkge1xuICByZXR1cm4gZ2V0VGFiYmFibGVJbihkb2N1bWVudC5ib2R5LCAncHJldicpO1xufVxuZnVuY3Rpb24gaXNPdXRzaWRlRXZlbnQoZXZlbnQsIGNvbnRhaW5lcikge1xuICBjb25zdCBjb250YWluZXJFbGVtZW50ID0gY29udGFpbmVyIHx8IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gIGNvbnN0IHJlbGF0ZWRUYXJnZXQgPSBldmVudC5yZWxhdGVkVGFyZ2V0O1xuICByZXR1cm4gIXJlbGF0ZWRUYXJnZXQgfHwgIWNvbnRhaW5zKGNvbnRhaW5lckVsZW1lbnQsIHJlbGF0ZWRUYXJnZXQpO1xufVxuZnVuY3Rpb24gZGlzYWJsZUZvY3VzSW5zaWRlKGNvbnRhaW5lcikge1xuICBjb25zdCB0YWJiYWJsZUVsZW1lbnRzID0gdGFiYmFibGUoY29udGFpbmVyLCBnZXRUYWJiYWJsZU9wdGlvbnMoKSk7XG4gIHRhYmJhYmxlRWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICBlbGVtZW50LmRhdGFzZXQudGFiaW5kZXggPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKSB8fCAnJztcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBlbmFibGVGb2N1c0luc2lkZShjb250YWluZXIpIHtcbiAgY29uc3QgZWxlbWVudHMgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdGFiaW5kZXhdJyk7XG4gIGVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgY29uc3QgdGFiaW5kZXggPSBlbGVtZW50LmRhdGFzZXQudGFiaW5kZXg7XG4gICAgZGVsZXRlIGVsZW1lbnQuZGF0YXNldC50YWJpbmRleDtcbiAgICBpZiAodGFiaW5kZXgpIHtcbiAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsIHRhYmluZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIGdldENsb3Nlc3RUYWJiYWJsZUVsZW1lbnQodGFiYmFibGVFbGVtZW50cywgZWxlbWVudCwgZmxvYXRpbmcpIHtcbiAgY29uc3QgZWxlbWVudEluZGV4ID0gdGFiYmFibGVFbGVtZW50cy5pbmRleE9mKGVsZW1lbnQpO1xuICBmdW5jdGlvbiB0cmF2ZXJzZVRhYmJhYmxlRWxlbWVudHMobmV4dCkge1xuICAgIGNvbnN0IGF0dHIgPSBjcmVhdGVBdHRyaWJ1dGUoJ2ZvY3VzLWd1YXJkJyk7XG4gICAgbGV0IGluZGV4ID0gZWxlbWVudEluZGV4ICsgKG5leHQgPyAxIDogMCk7XG4gICAgbGV0IGN1cnJlbnRFbGVtZW50ID0gdGFiYmFibGVFbGVtZW50c1tpbmRleF07XG4gICAgd2hpbGUgKGN1cnJlbnRFbGVtZW50ICYmICghY3VycmVudEVsZW1lbnQuaXNDb25uZWN0ZWQgfHwgY3VycmVudEVsZW1lbnQuaGFzQXR0cmlidXRlKGF0dHIpIHx8IGNvbnRhaW5zKGZsb2F0aW5nLCBjdXJyZW50RWxlbWVudCkpKSB7XG4gICAgICBpZiAobmV4dCkge1xuICAgICAgICBpbmRleCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5kZXgtLTtcbiAgICAgIH1cbiAgICAgIGN1cnJlbnRFbGVtZW50ID0gdGFiYmFibGVFbGVtZW50c1tpbmRleF07XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50RWxlbWVudDtcbiAgfVxuXG4gIC8vIEZpcnN0LCB0cnkgdG8gZmluZCB0aGUgbmV4dCB0YWJiYWJsZSBlbGVtZW50XG4gIGNvbnN0IG5leHQgPSB0cmF2ZXJzZVRhYmJhYmxlRWxlbWVudHModHJ1ZSk7XG4gIGlmIChuZXh0KSB7XG4gICAgcmV0dXJuIG5leHQ7XG4gIH1cblxuICAvLyBJZiB3ZSBjYW4ndCBmaW5kIGEgbmV4dCB0YWJiYWJsZSBlbGVtZW50LCB0cnkgdG8gZmluZCB0aGUgcHJldmlvdXMgb25lXG4gIHJldHVybiB0cmF2ZXJzZVRhYmJhYmxlRWxlbWVudHMoZmFsc2UpO1xufVxuXG4vLyBTZWUgRGllZ28gSGF6J3MgU2FuZGJveCBmb3IgbWFraW5nIHRoaXMgbG9naWMgd29yayB3ZWxsIG9uIFNhZmFyaS9pT1M6XG4vLyBodHRwczovL2NvZGVzYW5kYm94LmlvL3MvdGFiYmFibGUtcG9ydGFsLWY0dG5nP2ZpbGU9L3NyYy9Gb2N1c1RyYXAudHN4XG5cbmNvbnN0IEhJRERFTl9TVFlMRVMgPSB7XG4gIGJvcmRlcjogMCxcbiAgY2xpcDogJ3JlY3QoMCAwIDAgMCknLFxuICBoZWlnaHQ6ICcxcHgnLFxuICBtYXJnaW46ICctMXB4JyxcbiAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICBwYWRkaW5nOiAwLFxuICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gIHdpZHRoOiAnMXB4JyxcbiAgdG9wOiAwLFxuICBsZWZ0OiAwXG59O1xubGV0IHRpbWVvdXRJZDtcbmZ1bmN0aW9uIHNldEFjdGl2ZUVsZW1lbnRPblRhYihldmVudCkge1xuICBpZiAoZXZlbnQua2V5ID09PSAnVGFiJykge1xuICAgIGV2ZW50LnRhcmdldDtcbiAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgfVxufVxuY29uc3QgRm9jdXNHdWFyZCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEZvY3VzR3VhcmQocHJvcHMsIHJlZikge1xuICBjb25zdCBbcm9sZSwgc2V0Um9sZV0gPSBSZWFjdC51c2VTdGF0ZSgpO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKGlzU2FmYXJpKCkpIHtcbiAgICAgIC8vIFVubGlrZSBvdGhlciBzY3JlZW4gcmVhZGVycyBzdWNoIGFzIE5WREEgYW5kIEpBV1MsIHRoZSB2aXJ0dWFsIGN1cnNvclxuICAgICAgLy8gb24gVm9pY2VPdmVyIGRvZXMgdHJpZ2dlciB0aGUgb25Gb2N1cyBldmVudCwgc28gd2UgY2FuIHVzZSB0aGUgZm9jdXNcbiAgICAgIC8vIHRyYXAgZWxlbWVudC4gT24gU2FmYXJpLCBvbmx5IGJ1dHRvbnMgdHJpZ2dlciB0aGUgb25Gb2N1cyBldmVudC5cbiAgICAgIC8vIE5COiBcImdyb3VwXCIgcm9sZSBpbiB0aGUgU2FuZGJveCBubyBsb25nZXIgYXBwZWFycyB0byB3b3JrLCBtdXN0IGJlIGFcbiAgICAgIC8vIGJ1dHRvbiByb2xlLlxuICAgICAgc2V0Um9sZSgnYnV0dG9uJyk7XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBzZXRBY3RpdmVFbGVtZW50T25UYWIpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgc2V0QWN0aXZlRWxlbWVudE9uVGFiKTtcbiAgICB9O1xuICB9LCBbXSk7XG4gIGNvbnN0IHJlc3RQcm9wcyA9IHtcbiAgICByZWYsXG4gICAgdGFiSW5kZXg6IDAsXG4gICAgLy8gUm9sZSBpcyBvbmx5IGZvciBWb2ljZU92ZXJcbiAgICByb2xlLFxuICAgICdhcmlhLWhpZGRlbic6IHJvbGUgPyB1bmRlZmluZWQgOiB0cnVlLFxuICAgIFtjcmVhdGVBdHRyaWJ1dGUoJ2ZvY3VzLWd1YXJkJyldOiAnJyxcbiAgICBzdHlsZTogSElEREVOX1NUWUxFU1xuICB9O1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIF9leHRlbmRzKHt9LCBwcm9wcywgcmVzdFByb3BzKSk7XG59KTtcblxuY29uc3QgUG9ydGFsQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuY29uc3QgYXR0ciA9IC8qI19fUFVSRV9fKi9jcmVhdGVBdHRyaWJ1dGUoJ3BvcnRhbCcpO1xuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvRmxvYXRpbmdQb3J0YWwjdXNlZmxvYXRpbmdwb3J0YWxub2RlXG4gKi9cbmZ1bmN0aW9uIHVzZUZsb2F0aW5nUG9ydGFsTm9kZShwcm9wcykge1xuICBpZiAocHJvcHMgPT09IHZvaWQgMCkge1xuICAgIHByb3BzID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIHJvb3RcbiAgfSA9IHByb3BzO1xuICBjb25zdCB1bmlxdWVJZCA9IHVzZUlkKCk7XG4gIGNvbnN0IHBvcnRhbENvbnRleHQgPSB1c2VQb3J0YWxDb250ZXh0KCk7XG4gIGNvbnN0IFtwb3J0YWxOb2RlLCBzZXRQb3J0YWxOb2RlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBwb3J0YWxOb2RlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBpbmRleCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHBvcnRhbE5vZGUgPT0gbnVsbCB8fCBwb3J0YWxOb2RlLnJlbW92ZSgpO1xuICAgICAgLy8gQWxsb3cgdGhlIHN1YnNlcXVlbnQgbGF5b3V0IGVmZmVjdHMgdG8gY3JlYXRlIGEgbmV3IG5vZGUgb24gdXBkYXRlcy5cbiAgICAgIC8vIFRoZSBwb3J0YWwgbm9kZSB3aWxsIHN0aWxsIGJlIGNsZWFuZWQgdXAgb24gdW5tb3VudC5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjQ1NFxuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICBwb3J0YWxOb2RlUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfSwgW3BvcnRhbE5vZGVdKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIC8vIFdhaXQgZm9yIHRoZSB1bmlxdWVJZCB0byBiZSBnZW5lcmF0ZWQgYmVmb3JlIGNyZWF0aW5nIHRoZSBwb3J0YWwgbm9kZSBpblxuICAgIC8vIFJlYWN0IDwxOCAodXNpbmcgYHVzZUZsb2F0aW5nSWRgIGluc3RlYWQgb2YgdGhlIG5hdGl2ZSBgdXNlSWRgKS5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzI3NzhcbiAgICBpZiAoIXVuaXF1ZUlkKSByZXR1cm47XG4gICAgaWYgKHBvcnRhbE5vZGVSZWYuY3VycmVudCkgcmV0dXJuO1xuICAgIGNvbnN0IGV4aXN0aW5nSWRSb290ID0gaWQgPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkgOiBudWxsO1xuICAgIGlmICghZXhpc3RpbmdJZFJvb3QpIHJldHVybjtcbiAgICBjb25zdCBzdWJSb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgc3ViUm9vdC5pZCA9IHVuaXF1ZUlkO1xuICAgIHN1YlJvb3Quc2V0QXR0cmlidXRlKGF0dHIsICcnKTtcbiAgICBleGlzdGluZ0lkUm9vdC5hcHBlbmRDaGlsZChzdWJSb290KTtcbiAgICBwb3J0YWxOb2RlUmVmLmN1cnJlbnQgPSBzdWJSb290O1xuICAgIHNldFBvcnRhbE5vZGUoc3ViUm9vdCk7XG4gIH0sIFtpZCwgdW5pcXVlSWRdKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmICghdW5pcXVlSWQpIHJldHVybjtcbiAgICBpZiAocG9ydGFsTm9kZVJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgbGV0IGNvbnRhaW5lciA9IHJvb3QgfHwgKHBvcnRhbENvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IHBvcnRhbENvbnRleHQucG9ydGFsTm9kZSk7XG4gICAgaWYgKGNvbnRhaW5lciAmJiAhaXNFbGVtZW50KGNvbnRhaW5lcikpIGNvbnRhaW5lciA9IGNvbnRhaW5lci5jdXJyZW50O1xuICAgIGNvbnRhaW5lciA9IGNvbnRhaW5lciB8fCBkb2N1bWVudC5ib2R5O1xuICAgIGxldCBpZFdyYXBwZXIgPSBudWxsO1xuICAgIGlmIChpZCkge1xuICAgICAgaWRXcmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBpZFdyYXBwZXIuaWQgPSBpZDtcbiAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChpZFdyYXBwZXIpO1xuICAgIH1cbiAgICBjb25zdCBzdWJSb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgc3ViUm9vdC5pZCA9IHVuaXF1ZUlkO1xuICAgIHN1YlJvb3Quc2V0QXR0cmlidXRlKGF0dHIsICcnKTtcbiAgICBjb250YWluZXIgPSBpZFdyYXBwZXIgfHwgY29udGFpbmVyO1xuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChzdWJSb290KTtcbiAgICBwb3J0YWxOb2RlUmVmLmN1cnJlbnQgPSBzdWJSb290O1xuICAgIHNldFBvcnRhbE5vZGUoc3ViUm9vdCk7XG4gIH0sIFtpZCwgcm9vdCwgdW5pcXVlSWQsIHBvcnRhbENvbnRleHRdKTtcbiAgcmV0dXJuIHBvcnRhbE5vZGU7XG59XG4vKipcbiAqIFBvcnRhbHMgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaW50byBhIGdpdmVuIGNvbnRhaW5lciBlbGVtZW50IOKAlCBieSBkZWZhdWx0LFxuICogb3V0c2lkZSBvZiB0aGUgYXBwIHJvb3QgYW5kIGludG8gdGhlIGJvZHkuXG4gKiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgY2FuIGFwcGVhciBvdXRzaWRlIGFueVxuICogcG90ZW50aWFsIHBhcmVudCBjb250YWluZXJzIHRoYXQgY2F1c2UgY2xpcHBpbmcgKHN1Y2ggYXMgYG92ZXJmbG93OiBoaWRkZW5gKSxcbiAqIHdoaWxlIHJldGFpbmluZyBpdHMgbG9jYXRpb24gaW4gdGhlIFJlYWN0IHRyZWUuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvRmxvYXRpbmdQb3J0YWxcbiAqL1xuZnVuY3Rpb24gRmxvYXRpbmdQb3J0YWwocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNoaWxkcmVuLFxuICAgIGlkLFxuICAgIHJvb3QgPSBudWxsLFxuICAgIHByZXNlcnZlVGFiT3JkZXIgPSB0cnVlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgcG9ydGFsTm9kZSA9IHVzZUZsb2F0aW5nUG9ydGFsTm9kZSh7XG4gICAgaWQsXG4gICAgcm9vdFxuICB9KTtcbiAgY29uc3QgW2ZvY3VzTWFuYWdlclN0YXRlLCBzZXRGb2N1c01hbmFnZXJTdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgYmVmb3JlT3V0c2lkZVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgYWZ0ZXJPdXRzaWRlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBiZWZvcmVJbnNpZGVSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IGFmdGVySW5zaWRlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBzaG91bGRSZW5kZXJHdWFyZHMgPVxuICAvLyBUaGUgRm9jdXNNYW5hZ2VyIGFuZCB0aGVyZWZvcmUgZmxvYXRpbmcgZWxlbWVudCBhcmUgY3VycmVudGx5IG9wZW4vXG4gIC8vIHJlbmRlcmVkLlxuICAhIWZvY3VzTWFuYWdlclN0YXRlICYmXG4gIC8vIEd1YXJkcyBhcmUgb25seSBmb3Igbm9uLW1vZGFsIGZvY3VzIG1hbmFnZW1lbnQuXG4gICFmb2N1c01hbmFnZXJTdGF0ZS5tb2RhbCAmJlxuICAvLyBEb24ndCByZW5kZXIgaWYgdW5tb3VudCBpcyB0cmFuc2l0aW9uaW5nLlxuICBmb2N1c01hbmFnZXJTdGF0ZS5vcGVuICYmIHByZXNlcnZlVGFiT3JkZXIgJiYgISEocm9vdCB8fCBwb3J0YWxOb2RlKTtcblxuICAvLyBodHRwczovL2NvZGVzYW5kYm94LmlvL3MvdGFiYmFibGUtcG9ydGFsLWY0dG5nP2ZpbGU9L3NyYy9UYWJiYWJsZVBvcnRhbC50c3hcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXBvcnRhbE5vZGUgfHwgIXByZXNlcnZlVGFiT3JkZXIgfHwgZm9jdXNNYW5hZ2VyU3RhdGUgIT0gbnVsbCAmJiBmb2N1c01hbmFnZXJTdGF0ZS5tb2RhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIE1ha2Ugc3VyZSBlbGVtZW50cyBpbnNpZGUgdGhlIHBvcnRhbCBlbGVtZW50IGFyZSB0YWJiYWJsZSBvbmx5IHdoZW4gdGhlXG4gICAgLy8gcG9ydGFsIGhhcyBhbHJlYWR5IGJlZW4gZm9jdXNlZCwgZWl0aGVyIGJ5IHRhYmJpbmcgaW50byBhIGZvY3VzIHRyYXBcbiAgICAvLyBlbGVtZW50IG91dHNpZGUgb3IgdXNpbmcgdGhlIG1vdXNlLlxuICAgIGZ1bmN0aW9uIG9uRm9jdXMoZXZlbnQpIHtcbiAgICAgIGlmIChwb3J0YWxOb2RlICYmIGlzT3V0c2lkZUV2ZW50KGV2ZW50KSkge1xuICAgICAgICBjb25zdCBmb2N1c2luZyA9IGV2ZW50LnR5cGUgPT09ICdmb2N1c2luJztcbiAgICAgICAgY29uc3QgbWFuYWdlRm9jdXMgPSBmb2N1c2luZyA/IGVuYWJsZUZvY3VzSW5zaWRlIDogZGlzYWJsZUZvY3VzSW5zaWRlO1xuICAgICAgICBtYW5hZ2VGb2N1cyhwb3J0YWxOb2RlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gTGlzdGVuIHRvIHRoZSBldmVudCBvbiB0aGUgY2FwdHVyZSBwaGFzZSBzbyB0aGV5IHJ1biBiZWZvcmUgdGhlIGZvY3VzXG4gICAgLy8gdHJhcCBlbGVtZW50cyBvbkZvY3VzIHByb3AgaXMgY2FsbGVkLlxuICAgIHBvcnRhbE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIG9uRm9jdXMsIHRydWUpO1xuICAgIHBvcnRhbE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNvdXQnLCBvbkZvY3VzLCB0cnVlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcG9ydGFsTm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c2luJywgb25Gb2N1cywgdHJ1ZSk7XG4gICAgICBwb3J0YWxOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0Jywgb25Gb2N1cywgdHJ1ZSk7XG4gICAgfTtcbiAgfSwgW3BvcnRhbE5vZGUsIHByZXNlcnZlVGFiT3JkZXIsIGZvY3VzTWFuYWdlclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBmb2N1c01hbmFnZXJTdGF0ZS5tb2RhbF0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUG9ydGFsQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgICBwcmVzZXJ2ZVRhYk9yZGVyLFxuICAgICAgYmVmb3JlT3V0c2lkZVJlZixcbiAgICAgIGFmdGVyT3V0c2lkZVJlZixcbiAgICAgIGJlZm9yZUluc2lkZVJlZixcbiAgICAgIGFmdGVySW5zaWRlUmVmLFxuICAgICAgcG9ydGFsTm9kZSxcbiAgICAgIHNldEZvY3VzTWFuYWdlclN0YXRlXG4gICAgfSksIFtwcmVzZXJ2ZVRhYk9yZGVyLCBwb3J0YWxOb2RlXSlcbiAgfSwgc2hvdWxkUmVuZGVyR3VhcmRzICYmIHBvcnRhbE5vZGUgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRm9jdXNHdWFyZCwge1xuICAgIFwiZGF0YS10eXBlXCI6IFwib3V0c2lkZVwiLFxuICAgIHJlZjogYmVmb3JlT3V0c2lkZVJlZixcbiAgICBvbkZvY3VzOiBldmVudCA9PiB7XG4gICAgICBpZiAoaXNPdXRzaWRlRXZlbnQoZXZlbnQsIHBvcnRhbE5vZGUpKSB7XG4gICAgICAgIHZhciBfYmVmb3JlSW5zaWRlUmVmJGN1cnI7XG4gICAgICAgIChfYmVmb3JlSW5zaWRlUmVmJGN1cnIgPSBiZWZvcmVJbnNpZGVSZWYuY3VycmVudCkgPT0gbnVsbCB8fCBfYmVmb3JlSW5zaWRlUmVmJGN1cnIuZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHByZXZUYWJiYWJsZSA9IGdldFByZXZpb3VzVGFiYmFibGUoKSB8fCAoZm9jdXNNYW5hZ2VyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IGZvY3VzTWFuYWdlclN0YXRlLnJlZnMuZG9tUmVmZXJlbmNlLmN1cnJlbnQpO1xuICAgICAgICBwcmV2VGFiYmFibGUgPT0gbnVsbCB8fCBwcmV2VGFiYmFibGUuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pLCBzaG91bGRSZW5kZXJHdWFyZHMgJiYgcG9ydGFsTm9kZSAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgIFwiYXJpYS1vd25zXCI6IHBvcnRhbE5vZGUuaWQsXG4gICAgc3R5bGU6IEhJRERFTl9TVFlMRVNcbiAgfSksIHBvcnRhbE5vZGUgJiYgLyojX19QVVJFX18qL1JlYWN0RE9NLmNyZWF0ZVBvcnRhbChjaGlsZHJlbiwgcG9ydGFsTm9kZSksIHNob3VsZFJlbmRlckd1YXJkcyAmJiBwb3J0YWxOb2RlICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEZvY3VzR3VhcmQsIHtcbiAgICBcImRhdGEtdHlwZVwiOiBcIm91dHNpZGVcIixcbiAgICByZWY6IGFmdGVyT3V0c2lkZVJlZixcbiAgICBvbkZvY3VzOiBldmVudCA9PiB7XG4gICAgICBpZiAoaXNPdXRzaWRlRXZlbnQoZXZlbnQsIHBvcnRhbE5vZGUpKSB7XG4gICAgICAgIHZhciBfYWZ0ZXJJbnNpZGVSZWYkY3VycmU7XG4gICAgICAgIChfYWZ0ZXJJbnNpZGVSZWYkY3VycmUgPSBhZnRlckluc2lkZVJlZi5jdXJyZW50KSA9PSBudWxsIHx8IF9hZnRlckluc2lkZVJlZiRjdXJyZS5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbmV4dFRhYmJhYmxlID0gZ2V0TmV4dFRhYmJhYmxlKCkgfHwgKGZvY3VzTWFuYWdlclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBmb2N1c01hbmFnZXJTdGF0ZS5yZWZzLmRvbVJlZmVyZW5jZS5jdXJyZW50KTtcbiAgICAgICAgbmV4dFRhYmJhYmxlID09IG51bGwgfHwgbmV4dFRhYmJhYmxlLmZvY3VzKCk7XG4gICAgICAgIChmb2N1c01hbmFnZXJTdGF0ZSA9PSBudWxsID8gdm9pZCAwIDogZm9jdXNNYW5hZ2VyU3RhdGUuY2xvc2VPbkZvY3VzT3V0KSAmJiAoZm9jdXNNYW5hZ2VyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IGZvY3VzTWFuYWdlclN0YXRlLm9uT3BlbkNoYW5nZShmYWxzZSwgZXZlbnQubmF0aXZlRXZlbnQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pKTtcbn1cbmNvbnN0IHVzZVBvcnRhbENvbnRleHQgPSAoKSA9PiBSZWFjdC51c2VDb250ZXh0KFBvcnRhbENvbnRleHQpO1xuXG5jb25zdCBMSVNUX0xJTUlUID0gMjA7XG5sZXQgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50cyA9IFtdO1xuZnVuY3Rpb24gYWRkUHJldmlvdXNseUZvY3VzZWRFbGVtZW50KGVsZW1lbnQpIHtcbiAgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50cyA9IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudHMuZmlsdGVyKGVsID0+IGVsLmlzQ29ubmVjdGVkKTtcbiAgbGV0IHRhYmJhYmxlRWwgPSBlbGVtZW50O1xuICBpZiAoIXRhYmJhYmxlRWwgfHwgZ2V0Tm9kZU5hbWUodGFiYmFibGVFbCkgPT09ICdib2R5JykgcmV0dXJuO1xuICBpZiAoIWlzVGFiYmFibGUodGFiYmFibGVFbCwgZ2V0VGFiYmFibGVPcHRpb25zKCkpKSB7XG4gICAgY29uc3QgdGFiYmFibGVDaGlsZCA9IHRhYmJhYmxlKHRhYmJhYmxlRWwsIGdldFRhYmJhYmxlT3B0aW9ucygpKVswXTtcbiAgICBpZiAodGFiYmFibGVDaGlsZCkge1xuICAgICAgdGFiYmFibGVFbCA9IHRhYmJhYmxlQ2hpbGQ7XG4gICAgfVxuICB9XG4gIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudHMucHVzaCh0YWJiYWJsZUVsKTtcbiAgaWYgKHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudHMubGVuZ3RoID4gTElTVF9MSU1JVCkge1xuICAgIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudHMgPSBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnRzLnNsaWNlKC1MSVNUX0xJTUlUKTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0UHJldmlvdXNseUZvY3VzZWRFbGVtZW50KCkge1xuICByZXR1cm4gcHJldmlvdXNseUZvY3VzZWRFbGVtZW50cy5zbGljZSgpLnJldmVyc2UoKS5maW5kKGVsID0+IGVsLmlzQ29ubmVjdGVkKTtcbn1cbmNvbnN0IFZpc3VhbGx5SGlkZGVuRGlzbWlzcyA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIFZpc3VhbGx5SGlkZGVuRGlzbWlzcyhwcm9wcywgcmVmKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgIHJlZjogcmVmLFxuICAgIHRhYkluZGV4OiAtMSxcbiAgICBzdHlsZTogSElEREVOX1NUWUxFU1xuICB9KSk7XG59KTtcbi8qKlxuICogUHJvdmlkZXMgZm9jdXMgbWFuYWdlbWVudCBmb3IgdGhlIGZsb2F0aW5nIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvRmxvYXRpbmdGb2N1c01hbmFnZXJcbiAqL1xuZnVuY3Rpb24gRmxvYXRpbmdGb2N1c01hbmFnZXIocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNvbnRleHQsXG4gICAgY2hpbGRyZW4sXG4gICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICBvcmRlciA9IFsnY29udGVudCddLFxuICAgIGd1YXJkczogX2d1YXJkcyA9IHRydWUsXG4gICAgaW5pdGlhbEZvY3VzID0gMCxcbiAgICByZXR1cm5Gb2N1cyA9IHRydWUsXG4gICAgcmVzdG9yZUZvY3VzID0gZmFsc2UsXG4gICAgbW9kYWwgPSB0cnVlLFxuICAgIHZpc3VhbGx5SGlkZGVuRGlzbWlzcyA9IGZhbHNlLFxuICAgIGNsb3NlT25Gb2N1c091dCA9IHRydWVcbiAgfSA9IHByb3BzO1xuICBjb25zdCB7XG4gICAgb3BlbixcbiAgICByZWZzLFxuICAgIG5vZGVJZCxcbiAgICBvbk9wZW5DaGFuZ2UsXG4gICAgZXZlbnRzLFxuICAgIGRhdGFSZWYsXG4gICAgZmxvYXRpbmdJZCxcbiAgICBlbGVtZW50czoge1xuICAgICAgZG9tUmVmZXJlbmNlLFxuICAgICAgZmxvYXRpbmdcbiAgICB9XG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCBpZ25vcmVJbml0aWFsRm9jdXMgPSB0eXBlb2YgaW5pdGlhbEZvY3VzID09PSAnbnVtYmVyJyAmJiBpbml0aWFsRm9jdXMgPCAwO1xuICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIGEgY29tYm9ib3ggYW5kIGlzIHR5cGVhYmxlIChlLmcuIGlucHV0L3RleHRhcmVhKSxcbiAgLy8gdGhlcmUgYXJlIGRpZmZlcmVudCBmb2N1cyBzZW1hbnRpY3MuIFRoZSBndWFyZHMgc2hvdWxkIG5vdCBiZSByZW5kZXJlZCwgYnV0XG4gIC8vIGFyaWEtaGlkZGVuIHNob3VsZCBiZSBhcHBsaWVkIHRvIGFsbCBub2RlcyBzdGlsbC4gRnVydGhlciwgdGhlIHZpc3VhbGx5XG4gIC8vIGhpZGRlbiBkaXNtaXNzIGJ1dHRvbiBzaG91bGQgb25seSBhcHBlYXIgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCwgbm90IHRoZVxuICAvLyBzdGFydC5cbiAgY29uc3QgaXNVbnRyYXBwZWRUeXBlYWJsZUNvbWJvYm94ID0gaXNUeXBlYWJsZUNvbWJvYm94KGRvbVJlZmVyZW5jZSkgJiYgaWdub3JlSW5pdGlhbEZvY3VzO1xuXG4gIC8vIEZvcmNlIHRoZSBndWFyZHMgdG8gYmUgcmVuZGVyZWQgaWYgdGhlIGBpbmVydGAgYXR0cmlidXRlIGlzIG5vdCBzdXBwb3J0ZWQuXG4gIGNvbnN0IGd1YXJkcyA9IHN1cHBvcnRzSW5lcnQoKSA/IF9ndWFyZHMgOiB0cnVlO1xuICBjb25zdCBvcmRlclJlZiA9IHVzZUxhdGVzdFJlZihvcmRlcik7XG4gIGNvbnN0IGluaXRpYWxGb2N1c1JlZiA9IHVzZUxhdGVzdFJlZihpbml0aWFsRm9jdXMpO1xuICBjb25zdCByZXR1cm5Gb2N1c1JlZiA9IHVzZUxhdGVzdFJlZihyZXR1cm5Gb2N1cyk7XG4gIGNvbnN0IHRyZWUgPSB1c2VGbG9hdGluZ1RyZWUoKTtcbiAgY29uc3QgcG9ydGFsQ29udGV4dCA9IHVzZVBvcnRhbENvbnRleHQoKTtcbiAgY29uc3Qgc3RhcnREaXNtaXNzQnV0dG9uUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBlbmREaXNtaXNzQnV0dG9uUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBwcmV2ZW50UmV0dXJuRm9jdXNSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBjb25zdCBpc1BvaW50ZXJEb3duUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgdGFiYmFibGVJbmRleFJlZiA9IFJlYWN0LnVzZVJlZigtMSk7XG4gIGNvbnN0IGlzSW5zaWRlUG9ydGFsID0gcG9ydGFsQ29udGV4dCAhPSBudWxsO1xuICBjb25zdCBmaXJzdEVsZW1lbnRDaGlsZCA9IGZsb2F0aW5nID09IG51bGwgPyB2b2lkIDAgOiBmbG9hdGluZy5maXJzdEVsZW1lbnRDaGlsZDtcbiAgLy8gSWYgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXMgYWN0aW5nIGFzIGEgcG9zaXRpb25pbmcgd3JhcHBlciByYXRoZXIgdGhhbiB0aGVcbiAgLy8gZWxlbWVudCB0aGF0IHJlY2VpdmVzIGFyaWEgcHJvcHMsIHVzZSBpdCBhcyB0aGUgZm9jdXMgcm9vdCBpbnN0ZWFkLlxuICBjb25zdCBmbG9hdGluZ0ZvY3VzTm9kZSA9IChmaXJzdEVsZW1lbnRDaGlsZCA9PSBudWxsID8gdm9pZCAwIDogZmlyc3RFbGVtZW50Q2hpbGQuaWQpID09PSBmbG9hdGluZ0lkID8gZmlyc3RFbGVtZW50Q2hpbGQgOiBmbG9hdGluZztcbiAgY29uc3QgZ2V0VGFiYmFibGVDb250ZW50ID0gdXNlRWZmZWN0RXZlbnQoZnVuY3Rpb24gKGNvbnRhaW5lcikge1xuICAgIGlmIChjb250YWluZXIgPT09IHZvaWQgMCkge1xuICAgICAgY29udGFpbmVyID0gZmxvYXRpbmdGb2N1c05vZGU7XG4gICAgfVxuICAgIHJldHVybiBjb250YWluZXIgPyB0YWJiYWJsZShjb250YWluZXIsIGdldFRhYmJhYmxlT3B0aW9ucygpKSA6IFtdO1xuICB9KTtcbiAgY29uc3QgZ2V0VGFiYmFibGVFbGVtZW50cyA9IHVzZUVmZmVjdEV2ZW50KGNvbnRhaW5lciA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IGdldFRhYmJhYmxlQ29udGVudChjb250YWluZXIpO1xuICAgIHJldHVybiBvcmRlclJlZi5jdXJyZW50Lm1hcCh0eXBlID0+IHtcbiAgICAgIGlmIChkb21SZWZlcmVuY2UgJiYgdHlwZSA9PT0gJ3JlZmVyZW5jZScpIHtcbiAgICAgICAgcmV0dXJuIGRvbVJlZmVyZW5jZTtcbiAgICAgIH1cbiAgICAgIGlmIChmbG9hdGluZ0ZvY3VzTm9kZSAmJiB0eXBlID09PSAnZmxvYXRpbmcnKSB7XG4gICAgICAgIHJldHVybiBmbG9hdGluZ0ZvY3VzTm9kZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmZpbHRlcihCb29sZWFuKS5mbGF0KCk7XG4gIH0pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuO1xuICAgIGlmICghbW9kYWwpIHJldHVybjtcbiAgICBmdW5jdGlvbiBvbktleURvd24oZXZlbnQpIHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdUYWInKSB7XG4gICAgICAgIC8vIFRoZSBmb2N1cyBndWFyZHMgaGF2ZSBub3RoaW5nIHRvIGZvY3VzLCBzbyB3ZSBuZWVkIHRvIHN0b3AgdGhlIGV2ZW50LlxuICAgICAgICBpZiAoY29udGFpbnMoZmxvYXRpbmdGb2N1c05vZGUsIGFjdGl2ZUVsZW1lbnQoZ2V0RG9jdW1lbnQoZmxvYXRpbmdGb2N1c05vZGUpKSkgJiYgZ2V0VGFiYmFibGVDb250ZW50KCkubGVuZ3RoID09PSAwICYmICFpc1VudHJhcHBlZFR5cGVhYmxlQ29tYm9ib3gpIHtcbiAgICAgICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVscyA9IGdldFRhYmJhYmxlRWxlbWVudHMoKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGV2ZW50KTtcbiAgICAgICAgaWYgKG9yZGVyUmVmLmN1cnJlbnRbMF0gPT09ICdyZWZlcmVuY2UnICYmIHRhcmdldCA9PT0gZG9tUmVmZXJlbmNlKSB7XG4gICAgICAgICAgc3RvcEV2ZW50KGV2ZW50KTtcbiAgICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIGVucXVldWVGb2N1cyhlbHNbZWxzLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW5xdWV1ZUZvY3VzKGVsc1sxXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvcmRlclJlZi5jdXJyZW50WzFdID09PSAnZmxvYXRpbmcnICYmIHRhcmdldCA9PT0gZmxvYXRpbmdGb2N1c05vZGUgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgICAgIGVucXVldWVGb2N1cyhlbHNbMF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGRvYyA9IGdldERvY3VtZW50KGZsb2F0aW5nRm9jdXNOb2RlKTtcbiAgICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93bik7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25LZXlEb3duKTtcbiAgICB9O1xuICB9LCBbZGlzYWJsZWQsIGRvbVJlZmVyZW5jZSwgZmxvYXRpbmdGb2N1c05vZGUsIG1vZGFsLCBvcmRlclJlZiwgaXNVbnRyYXBwZWRUeXBlYWJsZUNvbWJvYm94LCBnZXRUYWJiYWJsZUNvbnRlbnQsIGdldFRhYmJhYmxlRWxlbWVudHNdKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVybjtcbiAgICBpZiAoIWZsb2F0aW5nKSByZXR1cm47XG4gICAgZnVuY3Rpb24gaGFuZGxlRm9jdXNJbihldmVudCkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGV2ZW50KTtcbiAgICAgIGNvbnN0IHRhYmJhYmxlQ29udGVudCA9IGdldFRhYmJhYmxlQ29udGVudCgpO1xuICAgICAgY29uc3QgdGFiYmFibGVJbmRleCA9IHRhYmJhYmxlQ29udGVudC5pbmRleE9mKHRhcmdldCk7XG4gICAgICBpZiAodGFiYmFibGVJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGFiYmFibGVJbmRleFJlZi5jdXJyZW50ID0gdGFiYmFibGVJbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgZmxvYXRpbmcuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIGhhbmRsZUZvY3VzSW4pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBmbG9hdGluZy5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c2luJywgaGFuZGxlRm9jdXNJbik7XG4gICAgfTtcbiAgfSwgW2Rpc2FibGVkLCBmbG9hdGluZywgZ2V0VGFiYmFibGVDb250ZW50XSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm47XG4gICAgaWYgKCFjbG9zZU9uRm9jdXNPdXQpIHJldHVybjtcblxuICAgIC8vIEluIFNhZmFyaSwgYnV0dG9ucyBsb3NlIGZvY3VzIHdoZW4gcHJlc3NpbmcgdGhlbS5cbiAgICBmdW5jdGlvbiBoYW5kbGVQb2ludGVyRG93bigpIHtcbiAgICAgIGlzUG9pbnRlckRvd25SZWYuY3VycmVudCA9IHRydWU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaXNQb2ludGVyRG93blJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlRm9jdXNPdXRzaWRlKGV2ZW50KSB7XG4gICAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0gZXZlbnQucmVsYXRlZFRhcmdldDtcbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgY29uc3QgbW92ZWRUb1VucmVsYXRlZE5vZGUgPSAhKGNvbnRhaW5zKGRvbVJlZmVyZW5jZSwgcmVsYXRlZFRhcmdldCkgfHwgY29udGFpbnMoZmxvYXRpbmcsIHJlbGF0ZWRUYXJnZXQpIHx8IGNvbnRhaW5zKHJlbGF0ZWRUYXJnZXQsIGZsb2F0aW5nKSB8fCBjb250YWlucyhwb3J0YWxDb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBwb3J0YWxDb250ZXh0LnBvcnRhbE5vZGUsIHJlbGF0ZWRUYXJnZXQpIHx8IHJlbGF0ZWRUYXJnZXQgIT0gbnVsbCAmJiByZWxhdGVkVGFyZ2V0Lmhhc0F0dHJpYnV0ZShjcmVhdGVBdHRyaWJ1dGUoJ2ZvY3VzLWd1YXJkJykpIHx8IHRyZWUgJiYgKGdldENoaWxkcmVuKHRyZWUubm9kZXNSZWYuY3VycmVudCwgbm9kZUlkKS5maW5kKG5vZGUgPT4ge1xuICAgICAgICAgIHZhciBfbm9kZSRjb250ZXh0LCBfbm9kZSRjb250ZXh0MjtcbiAgICAgICAgICByZXR1cm4gY29udGFpbnMoKF9ub2RlJGNvbnRleHQgPSBub2RlLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRjb250ZXh0LmVsZW1lbnRzLmZsb2F0aW5nLCByZWxhdGVkVGFyZ2V0KSB8fCBjb250YWlucygoX25vZGUkY29udGV4dDIgPSBub2RlLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRjb250ZXh0Mi5lbGVtZW50cy5kb21SZWZlcmVuY2UsIHJlbGF0ZWRUYXJnZXQpO1xuICAgICAgICB9KSB8fCBnZXRBbmNlc3RvcnModHJlZS5ub2Rlc1JlZi5jdXJyZW50LCBub2RlSWQpLmZpbmQobm9kZSA9PiB7XG4gICAgICAgICAgdmFyIF9ub2RlJGNvbnRleHQzLCBfbm9kZSRjb250ZXh0NDtcbiAgICAgICAgICByZXR1cm4gKChfbm9kZSRjb250ZXh0MyA9IG5vZGUuY29udGV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9ub2RlJGNvbnRleHQzLmVsZW1lbnRzLmZsb2F0aW5nKSA9PT0gcmVsYXRlZFRhcmdldCB8fCAoKF9ub2RlJGNvbnRleHQ0ID0gbm9kZS5jb250ZXh0KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkY29udGV4dDQuZWxlbWVudHMuZG9tUmVmZXJlbmNlKSA9PT0gcmVsYXRlZFRhcmdldDtcbiAgICAgICAgfSkpKTtcblxuICAgICAgICAvLyBSZXN0b3JlIGZvY3VzIHRvIHRoZSBwcmV2aW91cyB0YWJiYWJsZSBlbGVtZW50IGluZGV4IHRvIHByZXZlbnRcbiAgICAgICAgLy8gZm9jdXMgZnJvbSBiZWluZyBsb3N0IG91dHNpZGUgdGhlIGZsb2F0aW5nIHRyZWUuXG4gICAgICAgIGlmIChyZXN0b3JlRm9jdXMgJiYgbW92ZWRUb1VucmVsYXRlZE5vZGUgJiYgYWN0aXZlRWxlbWVudChnZXREb2N1bWVudChmbG9hdGluZ0ZvY3VzTm9kZSkpID09PSBnZXREb2N1bWVudChmbG9hdGluZ0ZvY3VzTm9kZSkuYm9keSkge1xuICAgICAgICAgIC8vIExldCBgRmxvYXRpbmdQb3J0YWxgIGVmZmVjdCBrbm93cyB0aGF0IGZvY3VzIGlzIHN0aWxsIGluc2lkZSB0aGVcbiAgICAgICAgICAvLyBmbG9hdGluZyB0cmVlLlxuICAgICAgICAgIGlmIChpc0hUTUxFbGVtZW50KGZsb2F0aW5nRm9jdXNOb2RlKSkge1xuICAgICAgICAgICAgZmxvYXRpbmdGb2N1c05vZGUgPT0gbnVsbCB8fCBmbG9hdGluZ0ZvY3VzTm9kZS5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBwcmV2VGFiYmFibGVJbmRleCA9IHRhYmJhYmxlSW5kZXhSZWYuY3VycmVudDtcbiAgICAgICAgICBjb25zdCB0YWJiYWJsZUNvbnRlbnQgPSBnZXRUYWJiYWJsZUNvbnRlbnQoKTtcbiAgICAgICAgICBjb25zdCBub2RlVG9Gb2N1cyA9IHRhYmJhYmxlQ29udGVudFtwcmV2VGFiYmFibGVJbmRleF0gfHwgdGFiYmFibGVDb250ZW50W3RhYmJhYmxlQ29udGVudC5sZW5ndGggLSAxXSB8fCBmbG9hdGluZ0ZvY3VzTm9kZTtcbiAgICAgICAgICBpZiAoaXNIVE1MRWxlbWVudChub2RlVG9Gb2N1cykpIHtcbiAgICAgICAgICAgIG5vZGVUb0ZvY3VzLmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRm9jdXMgZGlkIG5vdCBtb3ZlIGluc2lkZSB0aGUgZmxvYXRpbmcgdHJlZSwgYW5kIHRoZXJlIGFyZSBubyB0YWJiYWJsZVxuICAgICAgICAvLyBwb3J0YWwgZ3VhcmRzIHRvIGhhbmRsZSBjbG9zaW5nLlxuICAgICAgICBpZiAoKGlzVW50cmFwcGVkVHlwZWFibGVDb21ib2JveCA/IHRydWUgOiAhbW9kYWwpICYmIHJlbGF0ZWRUYXJnZXQgJiYgbW92ZWRUb1VucmVsYXRlZE5vZGUgJiYgIWlzUG9pbnRlckRvd25SZWYuY3VycmVudCAmJlxuICAgICAgICAvLyBGaXggUmVhY3QgMTggU3RyaWN0IE1vZGUgcmV0dXJuRm9jdXMgZHVlIHRvIGRvdWJsZSByZW5kZXJpbmcuXG4gICAgICAgIHJlbGF0ZWRUYXJnZXQgIT09IGdldFByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCgpKSB7XG4gICAgICAgICAgcHJldmVudFJldHVybkZvY3VzUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgIG9uT3BlbkNoYW5nZShmYWxzZSwgZXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGZsb2F0aW5nICYmIGlzSFRNTEVsZW1lbnQoZG9tUmVmZXJlbmNlKSkge1xuICAgICAgZG9tUmVmZXJlbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgaGFuZGxlRm9jdXNPdXRzaWRlKTtcbiAgICAgIGRvbVJlZmVyZW5jZS5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIGhhbmRsZVBvaW50ZXJEb3duKTtcbiAgICAgIGZsb2F0aW5nLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgaGFuZGxlRm9jdXNPdXRzaWRlKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGRvbVJlZmVyZW5jZS5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIGhhbmRsZUZvY3VzT3V0c2lkZSk7XG4gICAgICAgIGRvbVJlZmVyZW5jZS5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIGhhbmRsZVBvaW50ZXJEb3duKTtcbiAgICAgICAgZmxvYXRpbmcucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXNvdXQnLCBoYW5kbGVGb2N1c091dHNpZGUpO1xuICAgICAgfTtcbiAgICB9XG4gIH0sIFtkaXNhYmxlZCwgZG9tUmVmZXJlbmNlLCBmbG9hdGluZywgZmxvYXRpbmdGb2N1c05vZGUsIG1vZGFsLCBub2RlSWQsIHRyZWUsIHBvcnRhbENvbnRleHQsIG9uT3BlbkNoYW5nZSwgY2xvc2VPbkZvY3VzT3V0LCByZXN0b3JlRm9jdXMsIGdldFRhYmJhYmxlQ29udGVudCwgaXNVbnRyYXBwZWRUeXBlYWJsZUNvbWJvYm94XSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdmFyIF9wb3J0YWxDb250ZXh0JHBvcnRhbDtcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVybjtcblxuICAgIC8vIERvbid0IGhpZGUgcG9ydGFscyBuZXN0ZWQgd2l0aGluIHRoZSBwYXJlbnQgcG9ydGFsLlxuICAgIGNvbnN0IHBvcnRhbE5vZGVzID0gQXJyYXkuZnJvbSgocG9ydGFsQ29udGV4dCA9PSBudWxsIHx8IChfcG9ydGFsQ29udGV4dCRwb3J0YWwgPSBwb3J0YWxDb250ZXh0LnBvcnRhbE5vZGUpID09IG51bGwgPyB2b2lkIDAgOiBfcG9ydGFsQ29udGV4dCRwb3J0YWwucXVlcnlTZWxlY3RvckFsbChcIltcIiArIGNyZWF0ZUF0dHJpYnV0ZSgncG9ydGFsJykgKyBcIl1cIikpIHx8IFtdKTtcbiAgICBpZiAoZmxvYXRpbmcpIHtcbiAgICAgIGNvbnN0IGluc2lkZUVsZW1lbnRzID0gW2Zsb2F0aW5nLCAuLi5wb3J0YWxOb2Rlcywgc3RhcnREaXNtaXNzQnV0dG9uUmVmLmN1cnJlbnQsIGVuZERpc21pc3NCdXR0b25SZWYuY3VycmVudCwgb3JkZXJSZWYuY3VycmVudC5pbmNsdWRlcygncmVmZXJlbmNlJykgfHwgaXNVbnRyYXBwZWRUeXBlYWJsZUNvbWJvYm94ID8gZG9tUmVmZXJlbmNlIDogbnVsbF0uZmlsdGVyKHggPT4geCAhPSBudWxsKTtcbiAgICAgIGNvbnN0IGNsZWFudXAgPSBtb2RhbCB8fCBpc1VudHJhcHBlZFR5cGVhYmxlQ29tYm9ib3ggPyBtYXJrT3RoZXJzKGluc2lkZUVsZW1lbnRzLCBndWFyZHMsICFndWFyZHMpIDogbWFya090aGVycyhpbnNpZGVFbGVtZW50cyk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjbGVhbnVwKCk7XG4gICAgICB9O1xuICAgIH1cbiAgfSwgW2Rpc2FibGVkLCBkb21SZWZlcmVuY2UsIGZsb2F0aW5nLCBtb2RhbCwgb3JkZXJSZWYsIHBvcnRhbENvbnRleHQsIGlzVW50cmFwcGVkVHlwZWFibGVDb21ib2JveCwgZ3VhcmRzXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoZGlzYWJsZWQgfHwgIWlzSFRNTEVsZW1lbnQoZmxvYXRpbmdGb2N1c05vZGUpKSByZXR1cm47XG4gICAgY29uc3QgZG9jID0gZ2V0RG9jdW1lbnQoZmxvYXRpbmdGb2N1c05vZGUpO1xuICAgIGNvbnN0IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA9IGFjdGl2ZUVsZW1lbnQoZG9jKTtcblxuICAgIC8vIFdhaXQgZm9yIGFueSBsYXlvdXQgZWZmZWN0IHN0YXRlIHNldHRlcnMgdG8gZXhlY3V0ZSB0byBzZXQgYHRhYkluZGV4YC5cbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICBjb25zdCBmb2N1c2FibGVFbGVtZW50cyA9IGdldFRhYmJhYmxlRWxlbWVudHMoZmxvYXRpbmdGb2N1c05vZGUpO1xuICAgICAgY29uc3QgaW5pdGlhbEZvY3VzVmFsdWUgPSBpbml0aWFsRm9jdXNSZWYuY3VycmVudDtcbiAgICAgIGNvbnN0IGVsVG9Gb2N1cyA9ICh0eXBlb2YgaW5pdGlhbEZvY3VzVmFsdWUgPT09ICdudW1iZXInID8gZm9jdXNhYmxlRWxlbWVudHNbaW5pdGlhbEZvY3VzVmFsdWVdIDogaW5pdGlhbEZvY3VzVmFsdWUuY3VycmVudCkgfHwgZmxvYXRpbmdGb2N1c05vZGU7XG4gICAgICBjb25zdCBmb2N1c0FscmVhZHlJbnNpZGVGbG9hdGluZ0VsID0gY29udGFpbnMoZmxvYXRpbmdGb2N1c05vZGUsIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCk7XG4gICAgICBpZiAoIWlnbm9yZUluaXRpYWxGb2N1cyAmJiAhZm9jdXNBbHJlYWR5SW5zaWRlRmxvYXRpbmdFbCAmJiBvcGVuKSB7XG4gICAgICAgIGVucXVldWVGb2N1cyhlbFRvRm9jdXMsIHtcbiAgICAgICAgICBwcmV2ZW50U2Nyb2xsOiBlbFRvRm9jdXMgPT09IGZsb2F0aW5nRm9jdXNOb2RlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbZGlzYWJsZWQsIG9wZW4sIGZsb2F0aW5nRm9jdXNOb2RlLCBpZ25vcmVJbml0aWFsRm9jdXMsIGdldFRhYmJhYmxlRWxlbWVudHMsIGluaXRpYWxGb2N1c1JlZl0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKGRpc2FibGVkIHx8ICFmbG9hdGluZ0ZvY3VzTm9kZSkgcmV0dXJuO1xuICAgIGxldCBwcmV2ZW50UmV0dXJuRm9jdXNTY3JvbGwgPSBmYWxzZTtcbiAgICBjb25zdCBkb2MgPSBnZXREb2N1bWVudChmbG9hdGluZ0ZvY3VzTm9kZSk7XG4gICAgY29uc3QgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50ID0gYWN0aXZlRWxlbWVudChkb2MpO1xuICAgIGNvbnN0IGNvbnRleHREYXRhID0gZGF0YVJlZi5jdXJyZW50O1xuICAgIGxldCBvcGVuRXZlbnQgPSBjb250ZXh0RGF0YS5vcGVuRXZlbnQ7XG4gICAgY29uc3QgZG9tUmVmZXJlbmNlID0gcmVmcy5kb21SZWZlcmVuY2UuY3VycmVudDtcbiAgICBhZGRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQocHJldmlvdXNseUZvY3VzZWRFbGVtZW50KTtcblxuICAgIC8vIERpc21pc3NpbmcgdmlhIG91dHNpZGUgcHJlc3Mgc2hvdWxkIGFsd2F5cyBpZ25vcmUgYHJldHVybkZvY3VzYCB0b1xuICAgIC8vIHByZXZlbnQgdW53YW50ZWQgc2Nyb2xsaW5nLlxuICAgIGZ1bmN0aW9uIG9uT3BlbkNoYW5nZShfcmVmKSB7XG4gICAgICBsZXQge1xuICAgICAgICBvcGVuLFxuICAgICAgICByZWFzb24sXG4gICAgICAgIGV2ZW50LFxuICAgICAgICBuZXN0ZWRcbiAgICAgIH0gPSBfcmVmO1xuICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgb3BlbkV2ZW50ID0gZXZlbnQ7XG4gICAgICB9XG4gICAgICBpZiAocmVhc29uID09PSAnZXNjYXBlLWtleScgJiYgcmVmcy5kb21SZWZlcmVuY2UuY3VycmVudCkge1xuICAgICAgICBhZGRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQocmVmcy5kb21SZWZlcmVuY2UuY3VycmVudCk7XG4gICAgICB9XG4gICAgICBpZiAocmVhc29uID09PSAnaG92ZXInICYmIGV2ZW50LnR5cGUgPT09ICdtb3VzZWxlYXZlJykge1xuICAgICAgICBwcmV2ZW50UmV0dXJuRm9jdXNSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAocmVhc29uICE9PSAnb3V0c2lkZS1wcmVzcycpIHJldHVybjtcbiAgICAgIGlmIChuZXN0ZWQpIHtcbiAgICAgICAgcHJldmVudFJldHVybkZvY3VzUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgcHJldmVudFJldHVybkZvY3VzU2Nyb2xsID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByZXZlbnRSZXR1cm5Gb2N1c1JlZi5jdXJyZW50ID0gIShpc1ZpcnR1YWxDbGljayhldmVudCkgfHwgaXNWaXJ0dWFsUG9pbnRlckV2ZW50KGV2ZW50KSk7XG4gICAgICB9XG4gICAgfVxuICAgIGV2ZW50cy5vbignb3BlbmNoYW5nZScsIG9uT3BlbkNoYW5nZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGV2ZW50cy5vZmYoJ29wZW5jaGFuZ2UnLCBvbk9wZW5DaGFuZ2UpO1xuICAgICAgY29uc3QgYWN0aXZlRWwgPSBhY3RpdmVFbGVtZW50KGRvYyk7XG4gICAgICBjb25zdCBpc0ZvY3VzSW5zaWRlRmxvYXRpbmdUcmVlID0gY29udGFpbnMoZmxvYXRpbmcsIGFjdGl2ZUVsKSB8fCB0cmVlICYmIGdldENoaWxkcmVuKHRyZWUubm9kZXNSZWYuY3VycmVudCwgbm9kZUlkKS5zb21lKG5vZGUgPT4ge1xuICAgICAgICB2YXIgX25vZGUkY29udGV4dDU7XG4gICAgICAgIHJldHVybiBjb250YWlucygoX25vZGUkY29udGV4dDUgPSBub2RlLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRjb250ZXh0NS5lbGVtZW50cy5mbG9hdGluZywgYWN0aXZlRWwpO1xuICAgICAgfSk7XG4gICAgICBjb25zdCBzaG91bGRGb2N1c1JlZmVyZW5jZSA9IGlzRm9jdXNJbnNpZGVGbG9hdGluZ1RyZWUgfHwgb3BlbkV2ZW50ICYmIFsnY2xpY2snLCAnbW91c2Vkb3duJ10uaW5jbHVkZXMob3BlbkV2ZW50LnR5cGUpO1xuICAgICAgaWYgKHNob3VsZEZvY3VzUmVmZXJlbmNlICYmIHJlZnMuZG9tUmVmZXJlbmNlLmN1cnJlbnQpIHtcbiAgICAgICAgYWRkUHJldmlvdXNseUZvY3VzZWRFbGVtZW50KHJlZnMuZG9tUmVmZXJlbmNlLmN1cnJlbnQpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmV0dXJuQ29udGV4dEVsZW1lbnQgPSBkb21SZWZlcmVuY2UgfHwgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50O1xuICAgICAgY29uc3QgdGFiYmFibGVFbGVtZW50cyA9IHRhYmJhYmxlKGdldERvY3VtZW50KHJldHVybkNvbnRleHRFbGVtZW50KS5ib2R5LCBnZXRUYWJiYWJsZU9wdGlvbnMoKSk7XG5cbiAgICAgIC8vIFdhaXQgZm9yIHRoZSByZXR1cm4gZWxlbWVudCB0byBnZXQgcG90ZW50aWFsbHkgZGlzY29ubmVjdGVkIGJlZm9yZVxuICAgICAgLy8gY2hlY2tpbmcuXG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIGxldCByZXR1cm5FbGVtZW50ID0gZ2V0UHJldmlvdXNseUZvY3VzZWRFbGVtZW50KCk7XG4gICAgICAgIGlmICghcmV0dXJuRWxlbWVudCAmJiBpc0hUTUxFbGVtZW50KHJldHVybkNvbnRleHRFbGVtZW50KSAmJiBmbG9hdGluZykge1xuICAgICAgICAgIHJldHVybkVsZW1lbnQgPSBnZXRDbG9zZXN0VGFiYmFibGVFbGVtZW50KHRhYmJhYmxlRWxlbWVudHMsIHJldHVybkNvbnRleHRFbGVtZW50LCBmbG9hdGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgICAgIHJldHVybkZvY3VzUmVmLmN1cnJlbnQgJiYgIXByZXZlbnRSZXR1cm5Gb2N1c1JlZi5jdXJyZW50ICYmIGlzSFRNTEVsZW1lbnQocmV0dXJuRWxlbWVudCkgJiYgKFxuICAgICAgICAvLyBJZiB0aGUgZm9jdXMgbW92ZWQgc29tZXdoZXJlIGVsc2UgYWZ0ZXIgbW91bnQsIGF2b2lkIHJldHVybmluZyBmb2N1c1xuICAgICAgICAvLyBzaW5jZSBpdCBsaWtlbHkgZW50ZXJlZCBhIGRpZmZlcmVudCBlbGVtZW50IHdoaWNoIHNob3VsZCBiZVxuICAgICAgICAvLyByZXNwZWN0ZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjYwN1xuICAgICAgICByZXR1cm5FbGVtZW50ICE9PSBhY3RpdmVFbCAmJiBhY3RpdmVFbCAhPT0gZG9jLmJvZHkgPyBpc0ZvY3VzSW5zaWRlRmxvYXRpbmdUcmVlIDogdHJ1ZSkpIHtcbiAgICAgICAgICByZXR1cm5FbGVtZW50LmZvY3VzKHtcbiAgICAgICAgICAgIHByZXZlbnRTY3JvbGw6IHByZXZlbnRSZXR1cm5Gb2N1c1Njcm9sbFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICB9LCBbZGlzYWJsZWQsIGZsb2F0aW5nLCBmbG9hdGluZ0ZvY3VzTm9kZSwgcmV0dXJuRm9jdXNSZWYsIGRhdGFSZWYsIHJlZnMsIGV2ZW50cywgdHJlZSwgbm9kZUlkXSk7XG5cbiAgLy8gU3luY2hyb25pemUgdGhlIGBjb250ZXh0YCAmIGBtb2RhbGAgdmFsdWUgdG8gdGhlIEZsb2F0aW5nUG9ydGFsIGNvbnRleHQuXG4gIC8vIEl0IHdpbGwgZGVjaWRlIHdoZXRoZXIgb3Igbm90IGl0IG5lZWRzIHRvIHJlbmRlciBpdHMgb3duIGd1YXJkcy5cbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuO1xuICAgIGlmICghcG9ydGFsQ29udGV4dCkgcmV0dXJuO1xuICAgIHBvcnRhbENvbnRleHQuc2V0Rm9jdXNNYW5hZ2VyU3RhdGUoe1xuICAgICAgbW9kYWwsXG4gICAgICBjbG9zZU9uRm9jdXNPdXQsXG4gICAgICBvcGVuLFxuICAgICAgb25PcGVuQ2hhbmdlLFxuICAgICAgcmVmc1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBwb3J0YWxDb250ZXh0LnNldEZvY3VzTWFuYWdlclN0YXRlKG51bGwpO1xuICAgIH07XG4gIH0sIFtkaXNhYmxlZCwgcG9ydGFsQ29udGV4dCwgbW9kYWwsIG9wZW4sIG9uT3BlbkNoYW5nZSwgcmVmcywgY2xvc2VPbkZvY3VzT3V0XSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVybjtcbiAgICBpZiAoIWZsb2F0aW5nRm9jdXNOb2RlKSByZXR1cm47XG4gICAgaWYgKHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyICE9PSAnZnVuY3Rpb24nKSByZXR1cm47XG4gICAgaWYgKGlnbm9yZUluaXRpYWxGb2N1cykgcmV0dXJuO1xuICAgIGNvbnN0IGhhbmRsZU11dGF0aW9uID0gKCkgPT4ge1xuICAgICAgY29uc3QgdGFiSW5kZXggPSBmbG9hdGluZ0ZvY3VzTm9kZS5nZXRBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk7XG4gICAgICBjb25zdCB0YWJiYWJsZUNvbnRlbnQgPSBnZXRUYWJiYWJsZUNvbnRlbnQoKTtcbiAgICAgIGNvbnN0IGFjdGl2ZUVsID0gYWN0aXZlRWxlbWVudChnZXREb2N1bWVudChmbG9hdGluZykpO1xuICAgICAgY29uc3QgdGFiYmFibGVJbmRleCA9IHRhYmJhYmxlQ29udGVudC5pbmRleE9mKGFjdGl2ZUVsKTtcbiAgICAgIGlmICh0YWJiYWJsZUluZGV4ICE9PSAtMSkge1xuICAgICAgICB0YWJiYWJsZUluZGV4UmVmLmN1cnJlbnQgPSB0YWJiYWJsZUluZGV4O1xuICAgICAgfVxuICAgICAgaWYgKG9yZGVyUmVmLmN1cnJlbnQuaW5jbHVkZXMoJ2Zsb2F0aW5nJykgfHwgYWN0aXZlRWwgIT09IHJlZnMuZG9tUmVmZXJlbmNlLmN1cnJlbnQgJiYgdGFiYmFibGVDb250ZW50Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAodGFiSW5kZXggIT09ICcwJykge1xuICAgICAgICAgIGZsb2F0aW5nRm9jdXNOb2RlLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRhYkluZGV4ICE9PSAnLTEnKSB7XG4gICAgICAgIGZsb2F0aW5nRm9jdXNOb2RlLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGhhbmRsZU11dGF0aW9uKCk7XG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihoYW5kbGVNdXRhdGlvbik7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShmbG9hdGluZ0ZvY3VzTm9kZSwge1xuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIH07XG4gIH0sIFtkaXNhYmxlZCwgZmxvYXRpbmcsIGZsb2F0aW5nRm9jdXNOb2RlLCByZWZzLCBvcmRlclJlZiwgZ2V0VGFiYmFibGVDb250ZW50LCBpZ25vcmVJbml0aWFsRm9jdXNdKTtcbiAgZnVuY3Rpb24gcmVuZGVyRGlzbWlzc0J1dHRvbihsb2NhdGlvbikge1xuICAgIGlmIChkaXNhYmxlZCB8fCAhdmlzdWFsbHlIaWRkZW5EaXNtaXNzIHx8ICFtb2RhbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChWaXN1YWxseUhpZGRlbkRpc21pc3MsIHtcbiAgICAgIHJlZjogbG9jYXRpb24gPT09ICdzdGFydCcgPyBzdGFydERpc21pc3NCdXR0b25SZWYgOiBlbmREaXNtaXNzQnV0dG9uUmVmLFxuICAgICAgb25DbGljazogZXZlbnQgPT4gb25PcGVuQ2hhbmdlKGZhbHNlLCBldmVudC5uYXRpdmVFdmVudClcbiAgICB9LCB0eXBlb2YgdmlzdWFsbHlIaWRkZW5EaXNtaXNzID09PSAnc3RyaW5nJyA/IHZpc3VhbGx5SGlkZGVuRGlzbWlzcyA6ICdEaXNtaXNzJyk7XG4gIH1cbiAgY29uc3Qgc2hvdWxkUmVuZGVyR3VhcmRzID0gIWRpc2FibGVkICYmIGd1YXJkcyAmJiAobW9kYWwgPyAhaXNVbnRyYXBwZWRUeXBlYWJsZUNvbWJvYm94IDogdHJ1ZSkgJiYgKGlzSW5zaWRlUG9ydGFsIHx8IG1vZGFsKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBzaG91bGRSZW5kZXJHdWFyZHMgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRm9jdXNHdWFyZCwge1xuICAgIFwiZGF0YS10eXBlXCI6IFwiaW5zaWRlXCIsXG4gICAgcmVmOiBwb3J0YWxDb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBwb3J0YWxDb250ZXh0LmJlZm9yZUluc2lkZVJlZixcbiAgICBvbkZvY3VzOiBldmVudCA9PiB7XG4gICAgICBpZiAobW9kYWwpIHtcbiAgICAgICAgY29uc3QgZWxzID0gZ2V0VGFiYmFibGVFbGVtZW50cygpO1xuICAgICAgICBlbnF1ZXVlRm9jdXMob3JkZXJbMF0gPT09ICdyZWZlcmVuY2UnID8gZWxzWzBdIDogZWxzW2Vscy5sZW5ndGggLSAxXSk7XG4gICAgICB9IGVsc2UgaWYgKHBvcnRhbENvbnRleHQgIT0gbnVsbCAmJiBwb3J0YWxDb250ZXh0LnByZXNlcnZlVGFiT3JkZXIgJiYgcG9ydGFsQ29udGV4dC5wb3J0YWxOb2RlKSB7XG4gICAgICAgIHByZXZlbnRSZXR1cm5Gb2N1c1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIGlmIChpc091dHNpZGVFdmVudChldmVudCwgcG9ydGFsQ29udGV4dC5wb3J0YWxOb2RlKSkge1xuICAgICAgICAgIGNvbnN0IG5leHRUYWJiYWJsZSA9IGdldE5leHRUYWJiYWJsZSgpIHx8IGRvbVJlZmVyZW5jZTtcbiAgICAgICAgICBuZXh0VGFiYmFibGUgPT0gbnVsbCB8fCBuZXh0VGFiYmFibGUuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgX3BvcnRhbENvbnRleHQkYmVmb3JlO1xuICAgICAgICAgIChfcG9ydGFsQ29udGV4dCRiZWZvcmUgPSBwb3J0YWxDb250ZXh0LmJlZm9yZU91dHNpZGVSZWYuY3VycmVudCkgPT0gbnVsbCB8fCBfcG9ydGFsQ29udGV4dCRiZWZvcmUuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSksICFpc1VudHJhcHBlZFR5cGVhYmxlQ29tYm9ib3ggJiYgcmVuZGVyRGlzbWlzc0J1dHRvbignc3RhcnQnKSwgY2hpbGRyZW4sIHJlbmRlckRpc21pc3NCdXR0b24oJ2VuZCcpLCBzaG91bGRSZW5kZXJHdWFyZHMgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRm9jdXNHdWFyZCwge1xuICAgIFwiZGF0YS10eXBlXCI6IFwiaW5zaWRlXCIsXG4gICAgcmVmOiBwb3J0YWxDb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBwb3J0YWxDb250ZXh0LmFmdGVySW5zaWRlUmVmLFxuICAgIG9uRm9jdXM6IGV2ZW50ID0+IHtcbiAgICAgIGlmIChtb2RhbCkge1xuICAgICAgICBlbnF1ZXVlRm9jdXMoZ2V0VGFiYmFibGVFbGVtZW50cygpWzBdKTtcbiAgICAgIH0gZWxzZSBpZiAocG9ydGFsQ29udGV4dCAhPSBudWxsICYmIHBvcnRhbENvbnRleHQucHJlc2VydmVUYWJPcmRlciAmJiBwb3J0YWxDb250ZXh0LnBvcnRhbE5vZGUpIHtcbiAgICAgICAgaWYgKGNsb3NlT25Gb2N1c091dCkge1xuICAgICAgICAgIHByZXZlbnRSZXR1cm5Gb2N1c1JlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNPdXRzaWRlRXZlbnQoZXZlbnQsIHBvcnRhbENvbnRleHQucG9ydGFsTm9kZSkpIHtcbiAgICAgICAgICBjb25zdCBwcmV2VGFiYmFibGUgPSBnZXRQcmV2aW91c1RhYmJhYmxlKCkgfHwgZG9tUmVmZXJlbmNlO1xuICAgICAgICAgIHByZXZUYWJiYWJsZSA9PSBudWxsIHx8IHByZXZUYWJiYWJsZS5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBfcG9ydGFsQ29udGV4dCRhZnRlck87XG4gICAgICAgICAgKF9wb3J0YWxDb250ZXh0JGFmdGVyTyA9IHBvcnRhbENvbnRleHQuYWZ0ZXJPdXRzaWRlUmVmLmN1cnJlbnQpID09IG51bGwgfHwgX3BvcnRhbENvbnRleHQkYWZ0ZXJPLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pKTtcbn1cblxuY29uc3QgYWN0aXZlTG9ja3MgPSAvKiNfX1BVUkVfXyovbmV3IFNldCgpO1xuLyoqXG4gKiBQcm92aWRlcyBiYXNlIHN0eWxpbmcgZm9yIGEgZml4ZWQgb3ZlcmxheSBlbGVtZW50IHRvIGRpbSBjb250ZW50IG9yIGJsb2NrXG4gKiBwb2ludGVyIGV2ZW50cyBiZWhpbmQgYSBmbG9hdGluZyBlbGVtZW50LlxuICogSXQncyBhIHJlZ3VsYXIgYDxkaXY+YCwgc28gaXQgY2FuIGJlIHN0eWxlZCB2aWEgYW55IENTUyBzb2x1dGlvbiB5b3UgcHJlZmVyLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL0Zsb2F0aW5nT3ZlcmxheVxuICovXG5jb25zdCBGbG9hdGluZ092ZXJsYXkgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBGbG9hdGluZ092ZXJsYXkocHJvcHMsIHJlZikge1xuICBjb25zdCB7XG4gICAgbG9ja1Njcm9sbCA9IGZhbHNlLFxuICAgIC4uLnJlc3RcbiAgfSA9IHByb3BzO1xuICBjb25zdCBsb2NrSWQgPSB1c2VJZCgpO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKCFsb2NrU2Nyb2xsKSByZXR1cm47XG4gICAgYWN0aXZlTG9ja3MuYWRkKGxvY2tJZCk7XG4gICAgY29uc3QgaXNJT1MgPSAvaVAoaG9uZXxhZHxvZCl8aU9TLy50ZXN0KGdldFBsYXRmb3JtKCkpO1xuICAgIGNvbnN0IGJvZHlTdHlsZSA9IGRvY3VtZW50LmJvZHkuc3R5bGU7XG4gICAgLy8gUlRMIDxib2R5PiBzY3JvbGxiYXJcbiAgICBjb25zdCBzY3JvbGxiYXJYID0gTWF0aC5yb3VuZChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCkgKyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICBjb25zdCBwYWRkaW5nUHJvcCA9IHNjcm9sbGJhclggPyAncGFkZGluZ0xlZnQnIDogJ3BhZGRpbmdSaWdodCc7XG4gICAgY29uc3Qgc2Nyb2xsYmFyV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCAtIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICBjb25zdCBzY3JvbGxYID0gYm9keVN0eWxlLmxlZnQgPyBwYXJzZUZsb2F0KGJvZHlTdHlsZS5sZWZ0KSA6IHdpbmRvdy5zY3JvbGxYO1xuICAgIGNvbnN0IHNjcm9sbFkgPSBib2R5U3R5bGUudG9wID8gcGFyc2VGbG9hdChib2R5U3R5bGUudG9wKSA6IHdpbmRvdy5zY3JvbGxZO1xuICAgIGJvZHlTdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgIGlmIChzY3JvbGxiYXJXaWR0aCkge1xuICAgICAgYm9keVN0eWxlW3BhZGRpbmdQcm9wXSA9IHNjcm9sbGJhcldpZHRoICsgXCJweFwiO1xuICAgIH1cblxuICAgIC8vIE9ubHkgaU9TIGRvZXNuJ3QgcmVzcGVjdCBgb3ZlcmZsb3c6IGhpZGRlbmAgb24gZG9jdW1lbnQuYm9keSwgYW5kIHRoaXNcbiAgICAvLyB0ZWNobmlxdWUgaGFzIGZld2VyIHNpZGUgZWZmZWN0cy5cbiAgICBpZiAoaXNJT1MpIHtcbiAgICAgIHZhciBfd2luZG93JHZpc3VhbFZpZXdwb3IsIF93aW5kb3ckdmlzdWFsVmlld3BvcjI7XG4gICAgICAvLyBpT1MgMTIgZG9lcyBub3Qgc3VwcG9ydCBgdmlzdWFsVmlld3BvcnRgLlxuICAgICAgY29uc3Qgb2Zmc2V0TGVmdCA9ICgoX3dpbmRvdyR2aXN1YWxWaWV3cG9yID0gd2luZG93LnZpc3VhbFZpZXdwb3J0KSA9PSBudWxsID8gdm9pZCAwIDogX3dpbmRvdyR2aXN1YWxWaWV3cG9yLm9mZnNldExlZnQpIHx8IDA7XG4gICAgICBjb25zdCBvZmZzZXRUb3AgPSAoKF93aW5kb3ckdmlzdWFsVmlld3BvcjIgPSB3aW5kb3cudmlzdWFsVmlld3BvcnQpID09IG51bGwgPyB2b2lkIDAgOiBfd2luZG93JHZpc3VhbFZpZXdwb3IyLm9mZnNldFRvcCkgfHwgMDtcbiAgICAgIE9iamVjdC5hc3NpZ24oYm9keVN0eWxlLCB7XG4gICAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgICB0b3A6IC0oc2Nyb2xsWSAtIE1hdGguZmxvb3Iob2Zmc2V0VG9wKSkgKyBcInB4XCIsXG4gICAgICAgIGxlZnQ6IC0oc2Nyb2xsWCAtIE1hdGguZmxvb3Iob2Zmc2V0TGVmdCkpICsgXCJweFwiLFxuICAgICAgICByaWdodDogJzAnXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGFjdGl2ZUxvY2tzLmRlbGV0ZShsb2NrSWQpO1xuICAgICAgaWYgKGFjdGl2ZUxvY2tzLnNpemUgPT09IDApIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihib2R5U3R5bGUsIHtcbiAgICAgICAgICBvdmVyZmxvdzogJycsXG4gICAgICAgICAgW3BhZGRpbmdQcm9wXTogJydcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpc0lPUykge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24oYm9keVN0eWxlLCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogJycsXG4gICAgICAgICAgICB0b3A6ICcnLFxuICAgICAgICAgICAgbGVmdDogJycsXG4gICAgICAgICAgICByaWdodDogJydcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oc2Nyb2xsWCwgc2Nyb2xsWSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LCBbbG9ja0lkLCBsb2NrU2Nyb2xsXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgcmVmOiByZWZcbiAgfSwgcmVzdCwge1xuICAgIHN0eWxlOiB7XG4gICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgIG92ZXJmbG93OiAnYXV0bycsXG4gICAgICB0b3A6IDAsXG4gICAgICByaWdodDogMCxcbiAgICAgIGJvdHRvbTogMCxcbiAgICAgIGxlZnQ6IDAsXG4gICAgICAuLi5yZXN0LnN0eWxlXG4gICAgfVxuICB9KSk7XG59KTtcblxuZnVuY3Rpb24gaXNCdXR0b25UYXJnZXQoZXZlbnQpIHtcbiAgcmV0dXJuIGlzSFRNTEVsZW1lbnQoZXZlbnQudGFyZ2V0KSAmJiBldmVudC50YXJnZXQudGFnTmFtZSA9PT0gJ0JVVFRPTic7XG59XG5mdW5jdGlvbiBpc1NwYWNlSWdub3JlZChlbGVtZW50KSB7XG4gIHJldHVybiBpc1R5cGVhYmxlRWxlbWVudChlbGVtZW50KTtcbn1cbi8qKlxuICogT3BlbnMgb3IgY2xvc2VzIHRoZSBmbG9hdGluZyBlbGVtZW50IHdoZW4gY2xpY2tpbmcgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3VzZUNsaWNrXG4gKi9cbmZ1bmN0aW9uIHVzZUNsaWNrKGNvbnRleHQsIHByb3BzKSB7XG4gIGlmIChwcm9wcyA9PT0gdm9pZCAwKSB7XG4gICAgcHJvcHMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgb3BlbixcbiAgICBvbk9wZW5DaGFuZ2UsXG4gICAgZGF0YVJlZixcbiAgICBlbGVtZW50czoge1xuICAgICAgZG9tUmVmZXJlbmNlXG4gICAgfVxuICB9ID0gY29udGV4dDtcbiAgY29uc3Qge1xuICAgIGVuYWJsZWQgPSB0cnVlLFxuICAgIGV2ZW50OiBldmVudE9wdGlvbiA9ICdjbGljaycsXG4gICAgdG9nZ2xlID0gdHJ1ZSxcbiAgICBpZ25vcmVNb3VzZSA9IGZhbHNlLFxuICAgIGtleWJvYXJkSGFuZGxlcnMgPSB0cnVlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgcG9pbnRlclR5cGVSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgY29uc3QgZGlkS2V5RG93blJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHJlZmVyZW5jZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBvblBvaW50ZXJEb3duKGV2ZW50KSB7XG4gICAgICBwb2ludGVyVHlwZVJlZi5jdXJyZW50ID0gZXZlbnQucG9pbnRlclR5cGU7XG4gICAgfSxcbiAgICBvbk1vdXNlRG93bihldmVudCkge1xuICAgICAgY29uc3QgcG9pbnRlclR5cGUgPSBwb2ludGVyVHlwZVJlZi5jdXJyZW50O1xuXG4gICAgICAvLyBJZ25vcmUgYWxsIGJ1dHRvbnMgZXhjZXB0IGZvciB0aGUgXCJtYWluXCIgYnV0dG9uLlxuICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL01vdXNlRXZlbnQvYnV0dG9uXG4gICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwKSByZXR1cm47XG4gICAgICBpZiAoZXZlbnRPcHRpb24gPT09ICdjbGljaycpIHJldHVybjtcbiAgICAgIGlmIChpc01vdXNlTGlrZVBvaW50ZXJUeXBlKHBvaW50ZXJUeXBlLCB0cnVlKSAmJiBpZ25vcmVNb3VzZSkgcmV0dXJuO1xuICAgICAgaWYgKG9wZW4gJiYgdG9nZ2xlICYmIChkYXRhUmVmLmN1cnJlbnQub3BlbkV2ZW50ID8gZGF0YVJlZi5jdXJyZW50Lm9wZW5FdmVudC50eXBlID09PSAnbW91c2Vkb3duJyA6IHRydWUpKSB7XG4gICAgICAgIG9uT3BlbkNoYW5nZShmYWxzZSwgZXZlbnQubmF0aXZlRXZlbnQsICdjbGljaycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUHJldmVudCBzdGVhbGluZyBmb2N1cyBmcm9tIHRoZSBmbG9hdGluZyBlbGVtZW50XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9uT3BlbkNoYW5nZSh0cnVlLCBldmVudC5uYXRpdmVFdmVudCwgJ2NsaWNrJyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvbkNsaWNrKGV2ZW50KSB7XG4gICAgICBjb25zdCBwb2ludGVyVHlwZSA9IHBvaW50ZXJUeXBlUmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoZXZlbnRPcHRpb24gPT09ICdtb3VzZWRvd24nICYmIHBvaW50ZXJUeXBlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcG9pbnRlclR5cGVSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGlzTW91c2VMaWtlUG9pbnRlclR5cGUocG9pbnRlclR5cGUsIHRydWUpICYmIGlnbm9yZU1vdXNlKSByZXR1cm47XG4gICAgICBpZiAob3BlbiAmJiB0b2dnbGUgJiYgKGRhdGFSZWYuY3VycmVudC5vcGVuRXZlbnQgPyBkYXRhUmVmLmN1cnJlbnQub3BlbkV2ZW50LnR5cGUgPT09ICdjbGljaycgOiB0cnVlKSkge1xuICAgICAgICBvbk9wZW5DaGFuZ2UoZmFsc2UsIGV2ZW50Lm5hdGl2ZUV2ZW50LCAnY2xpY2snKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uT3BlbkNoYW5nZSh0cnVlLCBldmVudC5uYXRpdmVFdmVudCwgJ2NsaWNrJyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvbktleURvd24oZXZlbnQpIHtcbiAgICAgIHBvaW50ZXJUeXBlUmVmLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCB8fCAha2V5Ym9hcmRIYW5kbGVycyB8fCBpc0J1dHRvblRhcmdldChldmVudCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJyAnICYmICFpc1NwYWNlSWdub3JlZChkb21SZWZlcmVuY2UpKSB7XG4gICAgICAgIC8vIFByZXZlbnQgc2Nyb2xsaW5nXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGRpZEtleURvd25SZWYuY3VycmVudCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgIGlmIChvcGVuICYmIHRvZ2dsZSkge1xuICAgICAgICAgIG9uT3BlbkNoYW5nZShmYWxzZSwgZXZlbnQubmF0aXZlRXZlbnQsICdjbGljaycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uT3BlbkNoYW5nZSh0cnVlLCBldmVudC5uYXRpdmVFdmVudCwgJ2NsaWNrJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIG9uS2V5VXAoZXZlbnQpIHtcbiAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkIHx8ICFrZXlib2FyZEhhbmRsZXJzIHx8IGlzQnV0dG9uVGFyZ2V0KGV2ZW50KSB8fCBpc1NwYWNlSWdub3JlZChkb21SZWZlcmVuY2UpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5rZXkgPT09ICcgJyAmJiBkaWRLZXlEb3duUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgZGlkS2V5RG93blJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIGlmIChvcGVuICYmIHRvZ2dsZSkge1xuICAgICAgICAgIG9uT3BlbkNoYW5nZShmYWxzZSwgZXZlbnQubmF0aXZlRXZlbnQsICdjbGljaycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uT3BlbkNoYW5nZSh0cnVlLCBldmVudC5uYXRpdmVFdmVudCwgJ2NsaWNrJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pLCBbZGF0YVJlZiwgZG9tUmVmZXJlbmNlLCBldmVudE9wdGlvbiwgaWdub3JlTW91c2UsIGtleWJvYXJkSGFuZGxlcnMsIG9uT3BlbkNoYW5nZSwgb3BlbiwgdG9nZ2xlXSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IGVuYWJsZWQgPyB7XG4gICAgcmVmZXJlbmNlXG4gIH0gOiB7fSwgW2VuYWJsZWQsIHJlZmVyZW5jZV0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVWaXJ0dWFsRWxlbWVudChkb21FbGVtZW50LCBkYXRhKSB7XG4gIGxldCBvZmZzZXRYID0gbnVsbDtcbiAgbGV0IG9mZnNldFkgPSBudWxsO1xuICBsZXQgaXNBdXRvVXBkYXRlRXZlbnQgPSBmYWxzZTtcbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0RWxlbWVudDogZG9tRWxlbWVudCB8fCB1bmRlZmluZWQsXG4gICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkge1xuICAgICAgdmFyIF9kYXRhJGRhdGFSZWYkY3VycmVudDtcbiAgICAgIGNvbnN0IGRvbVJlY3QgPSAoZG9tRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogZG9tRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkgfHwge1xuICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwXG4gICAgICB9O1xuICAgICAgY29uc3QgaXNYQXhpcyA9IGRhdGEuYXhpcyA9PT0gJ3gnIHx8IGRhdGEuYXhpcyA9PT0gJ2JvdGgnO1xuICAgICAgY29uc3QgaXNZQXhpcyA9IGRhdGEuYXhpcyA9PT0gJ3knIHx8IGRhdGEuYXhpcyA9PT0gJ2JvdGgnO1xuICAgICAgY29uc3QgY2FuVHJhY2tDdXJzb3JPbkF1dG9VcGRhdGUgPSBbJ21vdXNlZW50ZXInLCAnbW91c2Vtb3ZlJ10uaW5jbHVkZXMoKChfZGF0YSRkYXRhUmVmJGN1cnJlbnQgPSBkYXRhLmRhdGFSZWYuY3VycmVudC5vcGVuRXZlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZGF0YSRkYXRhUmVmJGN1cnJlbnQudHlwZSkgfHwgJycpICYmIGRhdGEucG9pbnRlclR5cGUgIT09ICd0b3VjaCc7XG4gICAgICBsZXQgd2lkdGggPSBkb21SZWN0LndpZHRoO1xuICAgICAgbGV0IGhlaWdodCA9IGRvbVJlY3QuaGVpZ2h0O1xuICAgICAgbGV0IHggPSBkb21SZWN0Lng7XG4gICAgICBsZXQgeSA9IGRvbVJlY3QueTtcbiAgICAgIGlmIChvZmZzZXRYID09IG51bGwgJiYgZGF0YS54ICYmIGlzWEF4aXMpIHtcbiAgICAgICAgb2Zmc2V0WCA9IGRvbVJlY3QueCAtIGRhdGEueDtcbiAgICAgIH1cbiAgICAgIGlmIChvZmZzZXRZID09IG51bGwgJiYgZGF0YS55ICYmIGlzWUF4aXMpIHtcbiAgICAgICAgb2Zmc2V0WSA9IGRvbVJlY3QueSAtIGRhdGEueTtcbiAgICAgIH1cbiAgICAgIHggLT0gb2Zmc2V0WCB8fCAwO1xuICAgICAgeSAtPSBvZmZzZXRZIHx8IDA7XG4gICAgICB3aWR0aCA9IDA7XG4gICAgICBoZWlnaHQgPSAwO1xuICAgICAgaWYgKCFpc0F1dG9VcGRhdGVFdmVudCB8fCBjYW5UcmFja0N1cnNvck9uQXV0b1VwZGF0ZSkge1xuICAgICAgICB3aWR0aCA9IGRhdGEuYXhpcyA9PT0gJ3knID8gZG9tUmVjdC53aWR0aCA6IDA7XG4gICAgICAgIGhlaWdodCA9IGRhdGEuYXhpcyA9PT0gJ3gnID8gZG9tUmVjdC5oZWlnaHQgOiAwO1xuICAgICAgICB4ID0gaXNYQXhpcyAmJiBkYXRhLnggIT0gbnVsbCA/IGRhdGEueCA6IHg7XG4gICAgICAgIHkgPSBpc1lBeGlzICYmIGRhdGEueSAhPSBudWxsID8gZGF0YS55IDogeTtcbiAgICAgIH0gZWxzZSBpZiAoaXNBdXRvVXBkYXRlRXZlbnQgJiYgIWNhblRyYWNrQ3Vyc29yT25BdXRvVXBkYXRlKSB7XG4gICAgICAgIGhlaWdodCA9IGRhdGEuYXhpcyA9PT0gJ3gnID8gZG9tUmVjdC5oZWlnaHQgOiBoZWlnaHQ7XG4gICAgICAgIHdpZHRoID0gZGF0YS5heGlzID09PSAneScgPyBkb21SZWN0LndpZHRoIDogd2lkdGg7XG4gICAgICB9XG4gICAgICBpc0F1dG9VcGRhdGVFdmVudCA9IHRydWU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICB0b3A6IHksXG4gICAgICAgIHJpZ2h0OiB4ICsgd2lkdGgsXG4gICAgICAgIGJvdHRvbTogeSArIGhlaWdodCxcbiAgICAgICAgbGVmdDogeFxuICAgICAgfTtcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBpc01vdXNlQmFzZWRFdmVudChldmVudCkge1xuICByZXR1cm4gZXZlbnQgIT0gbnVsbCAmJiBldmVudC5jbGllbnRYICE9IG51bGw7XG59XG4vKipcbiAqIFBvc2l0aW9ucyB0aGUgZmxvYXRpbmcgZWxlbWVudCByZWxhdGl2ZSB0byBhIGNsaWVudCBwb2ludCAoaW4gdGhlIHZpZXdwb3J0KSxcbiAqIHN1Y2ggYXMgdGhlIG1vdXNlIHBvc2l0aW9uLiBCeSBkZWZhdWx0LCBpdCBmb2xsb3dzIHRoZSBtb3VzZSBjdXJzb3IuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdXNlQ2xpZW50UG9pbnRcbiAqL1xuZnVuY3Rpb24gdXNlQ2xpZW50UG9pbnQoY29udGV4dCwgcHJvcHMpIHtcbiAgaWYgKHByb3BzID09PSB2b2lkIDApIHtcbiAgICBwcm9wcyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBvcGVuLFxuICAgIGRhdGFSZWYsXG4gICAgZWxlbWVudHM6IHtcbiAgICAgIGZsb2F0aW5nLFxuICAgICAgZG9tUmVmZXJlbmNlXG4gICAgfSxcbiAgICByZWZzXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgZW5hYmxlZCA9IHRydWUsXG4gICAgYXhpcyA9ICdib3RoJyxcbiAgICB4ID0gbnVsbCxcbiAgICB5ID0gbnVsbFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGluaXRpYWxSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBjb25zdCBjbGVhbnVwTGlzdGVuZXJSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IFtwb2ludGVyVHlwZSwgc2V0UG9pbnRlclR5cGVdID0gUmVhY3QudXNlU3RhdGUoKTtcbiAgY29uc3QgW3JlYWN0aXZlLCBzZXRSZWFjdGl2ZV0gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gIGNvbnN0IHNldFJlZmVyZW5jZSA9IHVzZUVmZmVjdEV2ZW50KCh4LCB5KSA9PiB7XG4gICAgaWYgKGluaXRpYWxSZWYuY3VycmVudCkgcmV0dXJuO1xuXG4gICAgLy8gUHJldmVudCBzZXR0aW5nIGlmIHRoZSBvcGVuIGV2ZW50IHdhcyBub3QgYSBtb3VzZS1saWtlIG9uZVxuICAgIC8vIChlLmcuIGZvY3VzIHRvIG9wZW4sIHRoZW4gaG92ZXIgb3ZlciB0aGUgcmVmZXJlbmNlIGVsZW1lbnQpLlxuICAgIC8vIE9ubHkgYXBwbHkgaWYgdGhlIGV2ZW50IGV4aXN0cy5cbiAgICBpZiAoZGF0YVJlZi5jdXJyZW50Lm9wZW5FdmVudCAmJiAhaXNNb3VzZUJhc2VkRXZlbnQoZGF0YVJlZi5jdXJyZW50Lm9wZW5FdmVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmVmcy5zZXRQb3NpdGlvblJlZmVyZW5jZShjcmVhdGVWaXJ0dWFsRWxlbWVudChkb21SZWZlcmVuY2UsIHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgYXhpcyxcbiAgICAgIGRhdGFSZWYsXG4gICAgICBwb2ludGVyVHlwZVxuICAgIH0pKTtcbiAgfSk7XG4gIGNvbnN0IGhhbmRsZVJlZmVyZW5jZUVudGVyT3JNb3ZlID0gdXNlRWZmZWN0RXZlbnQoZXZlbnQgPT4ge1xuICAgIGlmICh4ICE9IG51bGwgfHwgeSAhPSBudWxsKSByZXR1cm47XG4gICAgaWYgKCFvcGVuKSB7XG4gICAgICBzZXRSZWZlcmVuY2UoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XG4gICAgfSBlbHNlIGlmICghY2xlYW51cExpc3RlbmVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIC8vIElmIHRoZXJlJ3Mgbm8gY2xlYW51cCwgdGhlcmUncyBubyBsaXN0ZW5lciwgYnV0IHdlIHdhbnQgdG8gZW5zdXJlXG4gICAgICAvLyB3ZSBhZGQgdGhlIGxpc3RlbmVyIGlmIHRoZSBjdXJzb3IgbGFuZGVkIG9uIHRoZSBmbG9hdGluZyBlbGVtZW50IGFuZFxuICAgICAgLy8gdGhlbiBiYWNrIG9uIHRoZSByZWZlcmVuY2UgKGkuZS4gaXQncyBpbnRlcmFjdGl2ZSkuXG4gICAgICBzZXRSZWFjdGl2ZShbXSk7XG4gICAgfVxuICB9KTtcblxuICAvLyBJZiB0aGUgcG9pbnRlciBpcyBhIG1vdXNlLWxpa2UgcG9pbnRlciwgd2Ugd2FudCB0byBjb250aW51ZSBmb2xsb3dpbmcgdGhlXG4gIC8vIG1vdXNlIGV2ZW4gaWYgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXMgdHJhbnNpdGlvbmluZyBvdXQuIE9uIHRvdWNoXG4gIC8vIGRldmljZXMsIHRoaXMgaXMgdW5kZXNpcmFibGUgYmVjYXVzZSB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aWxsIG1vdmUgdG9cbiAgLy8gdGhlIGRpc21pc3NhbCB0b3VjaCBwb2ludC5cbiAgY29uc3Qgb3BlbkNoZWNrID0gaXNNb3VzZUxpa2VQb2ludGVyVHlwZShwb2ludGVyVHlwZSkgPyBmbG9hdGluZyA6IG9wZW47XG4gIGNvbnN0IGFkZExpc3RlbmVyID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIEV4cGxpY2l0bHkgc3BlY2lmaWVkIGB4YC9geWAgY29vcmRpbmF0ZXMgc2hvdWxkbid0IGFkZCBhIGxpc3RlbmVyLlxuICAgIGlmICghb3BlbkNoZWNrIHx8ICFlbmFibGVkIHx8IHggIT0gbnVsbCB8fCB5ICE9IG51bGwpIHJldHVybjtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZmxvYXRpbmcpO1xuICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlTW92ZShldmVudCkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGV2ZW50KTtcbiAgICAgIGlmICghY29udGFpbnMoZmxvYXRpbmcsIHRhcmdldCkpIHtcbiAgICAgICAgc2V0UmVmZXJlbmNlKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2luLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGhhbmRsZU1vdXNlTW92ZSk7XG4gICAgICAgIGNsZWFudXBMaXN0ZW5lclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFkYXRhUmVmLmN1cnJlbnQub3BlbkV2ZW50IHx8IGlzTW91c2VCYXNlZEV2ZW50KGRhdGFSZWYuY3VycmVudC5vcGVuRXZlbnQpKSB7XG4gICAgICB3aW4uYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgaGFuZGxlTW91c2VNb3ZlKTtcbiAgICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XG4gICAgICAgIHdpbi5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBoYW5kbGVNb3VzZU1vdmUpO1xuICAgICAgICBjbGVhbnVwTGlzdGVuZXJSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICB9O1xuICAgICAgY2xlYW51cExpc3RlbmVyUmVmLmN1cnJlbnQgPSBjbGVhbnVwO1xuICAgICAgcmV0dXJuIGNsZWFudXA7XG4gICAgfVxuICAgIHJlZnMuc2V0UG9zaXRpb25SZWZlcmVuY2UoZG9tUmVmZXJlbmNlKTtcbiAgfSwgW29wZW5DaGVjaywgZW5hYmxlZCwgeCwgeSwgZmxvYXRpbmcsIGRhdGFSZWYsIHJlZnMsIGRvbVJlZmVyZW5jZSwgc2V0UmVmZXJlbmNlXSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuIGFkZExpc3RlbmVyKCk7XG4gIH0sIFthZGRMaXN0ZW5lciwgcmVhY3RpdmVdKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZW5hYmxlZCAmJiAhZmxvYXRpbmcpIHtcbiAgICAgIGluaXRpYWxSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgIH1cbiAgfSwgW2VuYWJsZWQsIGZsb2F0aW5nXSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkICYmIG9wZW4pIHtcbiAgICAgIGluaXRpYWxSZWYuY3VycmVudCA9IHRydWU7XG4gICAgfVxuICB9LCBbZW5hYmxlZCwgb3Blbl0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKGVuYWJsZWQgJiYgKHggIT0gbnVsbCB8fCB5ICE9IG51bGwpKSB7XG4gICAgICBpbml0aWFsUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIHNldFJlZmVyZW5jZSh4LCB5KTtcbiAgICB9XG4gIH0sIFtlbmFibGVkLCB4LCB5LCBzZXRSZWZlcmVuY2VdKTtcbiAgY29uc3QgcmVmZXJlbmNlID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgZnVuY3Rpb24gc2V0UG9pbnRlclR5cGVSZWYoX3JlZikge1xuICAgICAgbGV0IHtcbiAgICAgICAgcG9pbnRlclR5cGVcbiAgICAgIH0gPSBfcmVmO1xuICAgICAgc2V0UG9pbnRlclR5cGUocG9pbnRlclR5cGUpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgb25Qb2ludGVyRG93bjogc2V0UG9pbnRlclR5cGVSZWYsXG4gICAgICBvblBvaW50ZXJFbnRlcjogc2V0UG9pbnRlclR5cGVSZWYsXG4gICAgICBvbk1vdXNlTW92ZTogaGFuZGxlUmVmZXJlbmNlRW50ZXJPck1vdmUsXG4gICAgICBvbk1vdXNlRW50ZXI6IGhhbmRsZVJlZmVyZW5jZUVudGVyT3JNb3ZlXG4gICAgfTtcbiAgfSwgW2hhbmRsZVJlZmVyZW5jZUVudGVyT3JNb3ZlXSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IGVuYWJsZWQgPyB7XG4gICAgcmVmZXJlbmNlXG4gIH0gOiB7fSwgW2VuYWJsZWQsIHJlZmVyZW5jZV0pO1xufVxuXG5jb25zdCBidWJibGVIYW5kbGVyS2V5cyA9IHtcbiAgcG9pbnRlcmRvd246ICdvblBvaW50ZXJEb3duJyxcbiAgbW91c2Vkb3duOiAnb25Nb3VzZURvd24nLFxuICBjbGljazogJ29uQ2xpY2snXG59O1xuY29uc3QgY2FwdHVyZUhhbmRsZXJLZXlzID0ge1xuICBwb2ludGVyZG93bjogJ29uUG9pbnRlckRvd25DYXB0dXJlJyxcbiAgbW91c2Vkb3duOiAnb25Nb3VzZURvd25DYXB0dXJlJyxcbiAgY2xpY2s6ICdvbkNsaWNrQ2FwdHVyZSdcbn07XG5jb25zdCBub3JtYWxpemVQcm9wID0gbm9ybWFsaXphYmxlID0+IHtcbiAgdmFyIF9ub3JtYWxpemFibGUkZXNjYXBlSywgX25vcm1hbGl6YWJsZSRvdXRzaWRlO1xuICByZXR1cm4ge1xuICAgIGVzY2FwZUtleTogdHlwZW9mIG5vcm1hbGl6YWJsZSA9PT0gJ2Jvb2xlYW4nID8gbm9ybWFsaXphYmxlIDogKF9ub3JtYWxpemFibGUkZXNjYXBlSyA9IG5vcm1hbGl6YWJsZSA9PSBudWxsID8gdm9pZCAwIDogbm9ybWFsaXphYmxlLmVzY2FwZUtleSkgIT0gbnVsbCA/IF9ub3JtYWxpemFibGUkZXNjYXBlSyA6IGZhbHNlLFxuICAgIG91dHNpZGVQcmVzczogdHlwZW9mIG5vcm1hbGl6YWJsZSA9PT0gJ2Jvb2xlYW4nID8gbm9ybWFsaXphYmxlIDogKF9ub3JtYWxpemFibGUkb3V0c2lkZSA9IG5vcm1hbGl6YWJsZSA9PSBudWxsID8gdm9pZCAwIDogbm9ybWFsaXphYmxlLm91dHNpZGVQcmVzcykgIT0gbnVsbCA/IF9ub3JtYWxpemFibGUkb3V0c2lkZSA6IHRydWVcbiAgfTtcbn07XG4vKipcbiAqIENsb3NlcyB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aGVuIGEgZGlzbWlzc2FsIGlzIHJlcXVlc3RlZCDigJQgYnkgZGVmYXVsdCwgd2hlblxuICogdGhlIHVzZXIgcHJlc3NlcyB0aGUgYGVzY2FwZWAga2V5IG9yIG91dHNpZGUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdXNlRGlzbWlzc1xuICovXG5mdW5jdGlvbiB1c2VEaXNtaXNzKGNvbnRleHQsIHByb3BzKSB7XG4gIGlmIChwcm9wcyA9PT0gdm9pZCAwKSB7XG4gICAgcHJvcHMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgb3BlbixcbiAgICBvbk9wZW5DaGFuZ2UsXG4gICAgZWxlbWVudHMsXG4gICAgZGF0YVJlZlxuICB9ID0gY29udGV4dDtcbiAgY29uc3Qge1xuICAgIGVuYWJsZWQgPSB0cnVlLFxuICAgIGVzY2FwZUtleSA9IHRydWUsXG4gICAgb3V0c2lkZVByZXNzOiB1bnN0YWJsZV9vdXRzaWRlUHJlc3MgPSB0cnVlLFxuICAgIG91dHNpZGVQcmVzc0V2ZW50ID0gJ3BvaW50ZXJkb3duJyxcbiAgICByZWZlcmVuY2VQcmVzcyA9IGZhbHNlLFxuICAgIHJlZmVyZW5jZVByZXNzRXZlbnQgPSAncG9pbnRlcmRvd24nLFxuICAgIGFuY2VzdG9yU2Nyb2xsID0gZmFsc2UsXG4gICAgYnViYmxlcyxcbiAgICBjYXB0dXJlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgdHJlZSA9IHVzZUZsb2F0aW5nVHJlZSgpO1xuICBjb25zdCBvdXRzaWRlUHJlc3NGbiA9IHVzZUVmZmVjdEV2ZW50KHR5cGVvZiB1bnN0YWJsZV9vdXRzaWRlUHJlc3MgPT09ICdmdW5jdGlvbicgPyB1bnN0YWJsZV9vdXRzaWRlUHJlc3MgOiAoKSA9PiBmYWxzZSk7XG4gIGNvbnN0IG91dHNpZGVQcmVzcyA9IHR5cGVvZiB1bnN0YWJsZV9vdXRzaWRlUHJlc3MgPT09ICdmdW5jdGlvbicgPyBvdXRzaWRlUHJlc3NGbiA6IHVuc3RhYmxlX291dHNpZGVQcmVzcztcbiAgY29uc3QgaW5zaWRlUmVhY3RUcmVlUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgZW5kZWRPclN0YXJ0ZWRJbnNpZGVSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBjb25zdCB7XG4gICAgZXNjYXBlS2V5OiBlc2NhcGVLZXlCdWJibGVzLFxuICAgIG91dHNpZGVQcmVzczogb3V0c2lkZVByZXNzQnViYmxlc1xuICB9ID0gbm9ybWFsaXplUHJvcChidWJibGVzKTtcbiAgY29uc3Qge1xuICAgIGVzY2FwZUtleTogZXNjYXBlS2V5Q2FwdHVyZSxcbiAgICBvdXRzaWRlUHJlc3M6IG91dHNpZGVQcmVzc0NhcHR1cmVcbiAgfSA9IG5vcm1hbGl6ZVByb3AoY2FwdHVyZSk7XG4gIGNvbnN0IGNsb3NlT25Fc2NhcGVLZXlEb3duID0gdXNlRWZmZWN0RXZlbnQoZXZlbnQgPT4ge1xuICAgIHZhciBfZGF0YVJlZiRjdXJyZW50JGZsb2E7XG4gICAgaWYgKCFvcGVuIHx8ICFlbmFibGVkIHx8ICFlc2NhcGVLZXkgfHwgZXZlbnQua2V5ICE9PSAnRXNjYXBlJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBub2RlSWQgPSAoX2RhdGFSZWYkY3VycmVudCRmbG9hID0gZGF0YVJlZi5jdXJyZW50LmZsb2F0aW5nQ29udGV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kYXRhUmVmJGN1cnJlbnQkZmxvYS5ub2RlSWQ7XG4gICAgY29uc3QgY2hpbGRyZW4gPSB0cmVlID8gZ2V0Q2hpbGRyZW4odHJlZS5ub2Rlc1JlZi5jdXJyZW50LCBub2RlSWQpIDogW107XG4gICAgaWYgKCFlc2NhcGVLZXlCdWJibGVzKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCBzaG91bGREaXNtaXNzID0gdHJ1ZTtcbiAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XG4gICAgICAgICAgdmFyIF9jaGlsZCRjb250ZXh0O1xuICAgICAgICAgIGlmICgoX2NoaWxkJGNvbnRleHQgPSBjaGlsZC5jb250ZXh0KSAhPSBudWxsICYmIF9jaGlsZCRjb250ZXh0Lm9wZW4gJiYgIWNoaWxkLmNvbnRleHQuZGF0YVJlZi5jdXJyZW50Ll9fZXNjYXBlS2V5QnViYmxlcykge1xuICAgICAgICAgICAgc2hvdWxkRGlzbWlzcyA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghc2hvdWxkRGlzbWlzcykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBvbk9wZW5DaGFuZ2UoZmFsc2UsIGlzUmVhY3RFdmVudChldmVudCkgPyBldmVudC5uYXRpdmVFdmVudCA6IGV2ZW50LCAnZXNjYXBlLWtleScpO1xuICB9KTtcbiAgY29uc3QgY2xvc2VPbkVzY2FwZUtleURvd25DYXB0dXJlID0gdXNlRWZmZWN0RXZlbnQoZXZlbnQgPT4ge1xuICAgIHZhciBfZ2V0VGFyZ2V0MjtcbiAgICBjb25zdCBjYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIHZhciBfZ2V0VGFyZ2V0O1xuICAgICAgY2xvc2VPbkVzY2FwZUtleURvd24oZXZlbnQpO1xuICAgICAgKF9nZXRUYXJnZXQgPSBnZXRUYXJnZXQoZXZlbnQpKSA9PSBudWxsIHx8IF9nZXRUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGNhbGxiYWNrKTtcbiAgICB9O1xuICAgIChfZ2V0VGFyZ2V0MiA9IGdldFRhcmdldChldmVudCkpID09IG51bGwgfHwgX2dldFRhcmdldDIuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGNhbGxiYWNrKTtcbiAgfSk7XG4gIGNvbnN0IGNsb3NlT25QcmVzc091dHNpZGUgPSB1c2VFZmZlY3RFdmVudChldmVudCA9PiB7XG4gICAgdmFyIF9kYXRhUmVmJGN1cnJlbnQkZmxvYTI7XG4gICAgLy8gR2l2ZW4gZGV2ZWxvcGVycyBjYW4gc3RvcCB0aGUgcHJvcGFnYXRpb24gb2YgdGhlIHN5bnRoZXRpYyBldmVudCxcbiAgICAvLyB3ZSBjYW4gb25seSBiZSBjb25maWRlbnQgd2l0aCBhIHBvc2l0aXZlIHZhbHVlLlxuICAgIGNvbnN0IGluc2lkZVJlYWN0VHJlZSA9IGluc2lkZVJlYWN0VHJlZVJlZi5jdXJyZW50O1xuICAgIGluc2lkZVJlYWN0VHJlZVJlZi5jdXJyZW50ID0gZmFsc2U7XG5cbiAgICAvLyBXaGVuIGNsaWNrIG91dHNpZGUgaXMgbGF6eSAoYGNsaWNrYCBldmVudCksIGhhbmRsZSBkcmFnZ2luZy5cbiAgICAvLyBEb24ndCBjbG9zZSBpZjpcbiAgICAvLyAtIFRoZSBjbGljayBzdGFydGVkIGluc2lkZSB0aGUgZmxvYXRpbmcgZWxlbWVudC5cbiAgICAvLyAtIFRoZSBjbGljayBlbmRlZCBpbnNpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQuXG4gICAgY29uc3QgZW5kZWRPclN0YXJ0ZWRJbnNpZGUgPSBlbmRlZE9yU3RhcnRlZEluc2lkZVJlZi5jdXJyZW50O1xuICAgIGVuZGVkT3JTdGFydGVkSW5zaWRlUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICBpZiAob3V0c2lkZVByZXNzRXZlbnQgPT09ICdjbGljaycgJiYgZW5kZWRPclN0YXJ0ZWRJbnNpZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGluc2lkZVJlYWN0VHJlZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG91dHNpZGVQcmVzcyA9PT0gJ2Z1bmN0aW9uJyAmJiAhb3V0c2lkZVByZXNzKGV2ZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0YXJnZXQgPSBnZXRUYXJnZXQoZXZlbnQpO1xuICAgIGNvbnN0IGluZXJ0U2VsZWN0b3IgPSBcIltcIiArIGNyZWF0ZUF0dHJpYnV0ZSgnaW5lcnQnKSArIFwiXVwiO1xuICAgIGNvbnN0IG1hcmtlcnMgPSBnZXREb2N1bWVudChlbGVtZW50cy5mbG9hdGluZykucXVlcnlTZWxlY3RvckFsbChpbmVydFNlbGVjdG9yKTtcbiAgICBsZXQgdGFyZ2V0Um9vdEFuY2VzdG9yID0gaXNFbGVtZW50KHRhcmdldCkgPyB0YXJnZXQgOiBudWxsO1xuICAgIHdoaWxlICh0YXJnZXRSb290QW5jZXN0b3IgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZSh0YXJnZXRSb290QW5jZXN0b3IpKSB7XG4gICAgICBjb25zdCBuZXh0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZSh0YXJnZXRSb290QW5jZXN0b3IpO1xuICAgICAgaWYgKGlzTGFzdFRyYXZlcnNhYmxlTm9kZShuZXh0UGFyZW50KSB8fCAhaXNFbGVtZW50KG5leHRQYXJlbnQpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgdGFyZ2V0Um9vdEFuY2VzdG9yID0gbmV4dFBhcmVudDtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgY2xpY2sgb2NjdXJyZWQgb24gYSB0aGlyZC1wYXJ0eSBlbGVtZW50IGluamVjdGVkIGFmdGVyIHRoZVxuICAgIC8vIGZsb2F0aW5nIGVsZW1lbnQgcmVuZGVyZWQuXG4gICAgaWYgKG1hcmtlcnMubGVuZ3RoICYmIGlzRWxlbWVudCh0YXJnZXQpICYmICFpc1Jvb3RFbGVtZW50KHRhcmdldCkgJiZcbiAgICAvLyBDbGlja2VkIG9uIGEgZGlyZWN0IGFuY2VzdG9yIChlLmcuIEZsb2F0aW5nT3ZlcmxheSkuXG4gICAgIWNvbnRhaW5zKHRhcmdldCwgZWxlbWVudHMuZmxvYXRpbmcpICYmXG4gICAgLy8gSWYgdGhlIHRhcmdldCByb290IGVsZW1lbnQgY29udGFpbnMgbm9uZSBvZiB0aGUgbWFya2VycywgdGhlbiB0aGVcbiAgICAvLyBlbGVtZW50IHdhcyBpbmplY3RlZCBhZnRlciB0aGUgZmxvYXRpbmcgZWxlbWVudCByZW5kZXJlZC5cbiAgICBBcnJheS5mcm9tKG1hcmtlcnMpLmV2ZXJ5KG1hcmtlciA9PiAhY29udGFpbnModGFyZ2V0Um9vdEFuY2VzdG9yLCBtYXJrZXIpKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRoZSBjbGljayBvY2N1cnJlZCBvbiB0aGUgc2Nyb2xsYmFyXG4gICAgaWYgKGlzSFRNTEVsZW1lbnQodGFyZ2V0KSAmJiBmbG9hdGluZykge1xuICAgICAgLy8gSW4gRmlyZWZveCwgYHRhcmdldC5zY3JvbGxXaWR0aCA+IHRhcmdldC5jbGllbnRXaWR0aGAgZm9yIGlubGluZVxuICAgICAgLy8gZWxlbWVudHMuXG4gICAgICBjb25zdCBjYW5TY3JvbGxYID0gdGFyZ2V0LmNsaWVudFdpZHRoID4gMCAmJiB0YXJnZXQuc2Nyb2xsV2lkdGggPiB0YXJnZXQuY2xpZW50V2lkdGg7XG4gICAgICBjb25zdCBjYW5TY3JvbGxZID0gdGFyZ2V0LmNsaWVudEhlaWdodCA+IDAgJiYgdGFyZ2V0LnNjcm9sbEhlaWdodCA+IHRhcmdldC5jbGllbnRIZWlnaHQ7XG4gICAgICBsZXQgeENvbmQgPSBjYW5TY3JvbGxZICYmIGV2ZW50Lm9mZnNldFggPiB0YXJnZXQuY2xpZW50V2lkdGg7XG5cbiAgICAgIC8vIEluIHNvbWUgYnJvd3NlcnMgaXQgaXMgcG9zc2libGUgdG8gY2hhbmdlIHRoZSA8Ym9keT4gKG9yIHdpbmRvdylcbiAgICAgIC8vIHNjcm9sbGJhciB0byB0aGUgbGVmdCBzaWRlLCBidXQgaXMgdmVyeSByYXJlIGFuZCBpcyBkaWZmaWN1bHQgdG9cbiAgICAgIC8vIGNoZWNrIGZvci4gUGx1cywgZm9yIG1vZGFsIGRpYWxvZ3Mgd2l0aCBiYWNrZHJvcHMsIGl0IGlzIG1vcmVcbiAgICAgIC8vIGltcG9ydGFudCB0aGF0IHRoZSBiYWNrZHJvcCBpcyBjaGVja2VkIGJ1dCBub3Qgc28gbXVjaCB0aGUgd2luZG93LlxuICAgICAgaWYgKGNhblNjcm9sbFkpIHtcbiAgICAgICAgY29uc3QgaXNSVEwgPSBnZXRDb21wdXRlZFN0eWxlKHRhcmdldCkuZGlyZWN0aW9uID09PSAncnRsJztcbiAgICAgICAgaWYgKGlzUlRMKSB7XG4gICAgICAgICAgeENvbmQgPSBldmVudC5vZmZzZXRYIDw9IHRhcmdldC5vZmZzZXRXaWR0aCAtIHRhcmdldC5jbGllbnRXaWR0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHhDb25kIHx8IGNhblNjcm9sbFggJiYgZXZlbnQub2Zmc2V0WSA+IHRhcmdldC5jbGllbnRIZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBub2RlSWQgPSAoX2RhdGFSZWYkY3VycmVudCRmbG9hMiA9IGRhdGFSZWYuY3VycmVudC5mbG9hdGluZ0NvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfZGF0YVJlZiRjdXJyZW50JGZsb2EyLm5vZGVJZDtcbiAgICBjb25zdCB0YXJnZXRJc0luc2lkZUNoaWxkcmVuID0gdHJlZSAmJiBnZXRDaGlsZHJlbih0cmVlLm5vZGVzUmVmLmN1cnJlbnQsIG5vZGVJZCkuc29tZShub2RlID0+IHtcbiAgICAgIHZhciBfbm9kZSRjb250ZXh0O1xuICAgICAgcmV0dXJuIGlzRXZlbnRUYXJnZXRXaXRoaW4oZXZlbnQsIChfbm9kZSRjb250ZXh0ID0gbm9kZS5jb250ZXh0KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkY29udGV4dC5lbGVtZW50cy5mbG9hdGluZyk7XG4gICAgfSk7XG4gICAgaWYgKGlzRXZlbnRUYXJnZXRXaXRoaW4oZXZlbnQsIGVsZW1lbnRzLmZsb2F0aW5nKSB8fCBpc0V2ZW50VGFyZ2V0V2l0aGluKGV2ZW50LCBlbGVtZW50cy5kb21SZWZlcmVuY2UpIHx8IHRhcmdldElzSW5zaWRlQ2hpbGRyZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY2hpbGRyZW4gPSB0cmVlID8gZ2V0Q2hpbGRyZW4odHJlZS5ub2Rlc1JlZi5jdXJyZW50LCBub2RlSWQpIDogW107XG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBzaG91bGREaXNtaXNzID0gdHJ1ZTtcbiAgICAgIGNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xuICAgICAgICB2YXIgX2NoaWxkJGNvbnRleHQyO1xuICAgICAgICBpZiAoKF9jaGlsZCRjb250ZXh0MiA9IGNoaWxkLmNvbnRleHQpICE9IG51bGwgJiYgX2NoaWxkJGNvbnRleHQyLm9wZW4gJiYgIWNoaWxkLmNvbnRleHQuZGF0YVJlZi5jdXJyZW50Ll9fb3V0c2lkZVByZXNzQnViYmxlcykge1xuICAgICAgICAgIHNob3VsZERpc21pc3MgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKCFzaG91bGREaXNtaXNzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgb25PcGVuQ2hhbmdlKGZhbHNlLCBldmVudCwgJ291dHNpZGUtcHJlc3MnKTtcbiAgfSk7XG4gIGNvbnN0IGNsb3NlT25QcmVzc091dHNpZGVDYXB0dXJlID0gdXNlRWZmZWN0RXZlbnQoZXZlbnQgPT4ge1xuICAgIHZhciBfZ2V0VGFyZ2V0NDtcbiAgICBjb25zdCBjYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIHZhciBfZ2V0VGFyZ2V0MztcbiAgICAgIGNsb3NlT25QcmVzc091dHNpZGUoZXZlbnQpO1xuICAgICAgKF9nZXRUYXJnZXQzID0gZ2V0VGFyZ2V0KGV2ZW50KSkgPT0gbnVsbCB8fCBfZ2V0VGFyZ2V0My5yZW1vdmVFdmVudExpc3RlbmVyKG91dHNpZGVQcmVzc0V2ZW50LCBjYWxsYmFjayk7XG4gICAgfTtcbiAgICAoX2dldFRhcmdldDQgPSBnZXRUYXJnZXQoZXZlbnQpKSA9PSBudWxsIHx8IF9nZXRUYXJnZXQ0LmFkZEV2ZW50TGlzdGVuZXIob3V0c2lkZVByZXNzRXZlbnQsIGNhbGxiYWNrKTtcbiAgfSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFvcGVuIHx8ICFlbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGRhdGFSZWYuY3VycmVudC5fX2VzY2FwZUtleUJ1YmJsZXMgPSBlc2NhcGVLZXlCdWJibGVzO1xuICAgIGRhdGFSZWYuY3VycmVudC5fX291dHNpZGVQcmVzc0J1YmJsZXMgPSBvdXRzaWRlUHJlc3NCdWJibGVzO1xuICAgIGZ1bmN0aW9uIG9uU2Nyb2xsKGV2ZW50KSB7XG4gICAgICBvbk9wZW5DaGFuZ2UoZmFsc2UsIGV2ZW50LCAnYW5jZXN0b3Itc2Nyb2xsJyk7XG4gICAgfVxuICAgIGNvbnN0IGRvYyA9IGdldERvY3VtZW50KGVsZW1lbnRzLmZsb2F0aW5nKTtcbiAgICBlc2NhcGVLZXkgJiYgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBlc2NhcGVLZXlDYXB0dXJlID8gY2xvc2VPbkVzY2FwZUtleURvd25DYXB0dXJlIDogY2xvc2VPbkVzY2FwZUtleURvd24sIGVzY2FwZUtleUNhcHR1cmUpO1xuICAgIG91dHNpZGVQcmVzcyAmJiBkb2MuYWRkRXZlbnRMaXN0ZW5lcihvdXRzaWRlUHJlc3NFdmVudCwgb3V0c2lkZVByZXNzQ2FwdHVyZSA/IGNsb3NlT25QcmVzc091dHNpZGVDYXB0dXJlIDogY2xvc2VPblByZXNzT3V0c2lkZSwgb3V0c2lkZVByZXNzQ2FwdHVyZSk7XG4gICAgbGV0IGFuY2VzdG9ycyA9IFtdO1xuICAgIGlmIChhbmNlc3RvclNjcm9sbCkge1xuICAgICAgaWYgKGlzRWxlbWVudChlbGVtZW50cy5kb21SZWZlcmVuY2UpKSB7XG4gICAgICAgIGFuY2VzdG9ycyA9IGdldE92ZXJmbG93QW5jZXN0b3JzKGVsZW1lbnRzLmRvbVJlZmVyZW5jZSk7XG4gICAgICB9XG4gICAgICBpZiAoaXNFbGVtZW50KGVsZW1lbnRzLmZsb2F0aW5nKSkge1xuICAgICAgICBhbmNlc3RvcnMgPSBhbmNlc3RvcnMuY29uY2F0KGdldE92ZXJmbG93QW5jZXN0b3JzKGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gICAgICB9XG4gICAgICBpZiAoIWlzRWxlbWVudChlbGVtZW50cy5yZWZlcmVuY2UpICYmIGVsZW1lbnRzLnJlZmVyZW5jZSAmJiBlbGVtZW50cy5yZWZlcmVuY2UuY29udGV4dEVsZW1lbnQpIHtcbiAgICAgICAgYW5jZXN0b3JzID0gYW5jZXN0b3JzLmNvbmNhdChnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50cy5yZWZlcmVuY2UuY29udGV4dEVsZW1lbnQpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZ25vcmUgdGhlIHZpc3VhbCB2aWV3cG9ydCBmb3Igc2Nyb2xsaW5nIGRpc21pc3NhbCAoYWxsb3cgcGluY2gtem9vbSlcbiAgICBhbmNlc3RvcnMgPSBhbmNlc3RvcnMuZmlsdGVyKGFuY2VzdG9yID0+IHtcbiAgICAgIHZhciBfZG9jJGRlZmF1bHRWaWV3O1xuICAgICAgcmV0dXJuIGFuY2VzdG9yICE9PSAoKF9kb2MkZGVmYXVsdFZpZXcgPSBkb2MuZGVmYXVsdFZpZXcpID09IG51bGwgPyB2b2lkIDAgOiBfZG9jJGRlZmF1bHRWaWV3LnZpc3VhbFZpZXdwb3J0KTtcbiAgICB9KTtcbiAgICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgICBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbCwge1xuICAgICAgICBwYXNzaXZlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZXNjYXBlS2V5ICYmIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXNjYXBlS2V5Q2FwdHVyZSA/IGNsb3NlT25Fc2NhcGVLZXlEb3duQ2FwdHVyZSA6IGNsb3NlT25Fc2NhcGVLZXlEb3duLCBlc2NhcGVLZXlDYXB0dXJlKTtcbiAgICAgIG91dHNpZGVQcmVzcyAmJiBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcihvdXRzaWRlUHJlc3NFdmVudCwgb3V0c2lkZVByZXNzQ2FwdHVyZSA/IGNsb3NlT25QcmVzc091dHNpZGVDYXB0dXJlIDogY2xvc2VPblByZXNzT3V0c2lkZSwgb3V0c2lkZVByZXNzQ2FwdHVyZSk7XG4gICAgICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgICAgIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsKTtcbiAgICAgIH0pO1xuICAgIH07XG4gIH0sIFtkYXRhUmVmLCBlbGVtZW50cywgZXNjYXBlS2V5LCBvdXRzaWRlUHJlc3MsIG91dHNpZGVQcmVzc0V2ZW50LCBvcGVuLCBvbk9wZW5DaGFuZ2UsIGFuY2VzdG9yU2Nyb2xsLCBlbmFibGVkLCBlc2NhcGVLZXlCdWJibGVzLCBvdXRzaWRlUHJlc3NCdWJibGVzLCBjbG9zZU9uRXNjYXBlS2V5RG93biwgZXNjYXBlS2V5Q2FwdHVyZSwgY2xvc2VPbkVzY2FwZUtleURvd25DYXB0dXJlLCBjbG9zZU9uUHJlc3NPdXRzaWRlLCBvdXRzaWRlUHJlc3NDYXB0dXJlLCBjbG9zZU9uUHJlc3NPdXRzaWRlQ2FwdHVyZV0pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGluc2lkZVJlYWN0VHJlZVJlZi5jdXJyZW50ID0gZmFsc2U7XG4gIH0sIFtvdXRzaWRlUHJlc3MsIG91dHNpZGVQcmVzc0V2ZW50XSk7XG4gIGNvbnN0IHJlZmVyZW5jZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBvbktleURvd246IGNsb3NlT25Fc2NhcGVLZXlEb3duLFxuICAgIFtidWJibGVIYW5kbGVyS2V5c1tyZWZlcmVuY2VQcmVzc0V2ZW50XV06IGV2ZW50ID0+IHtcbiAgICAgIGlmIChyZWZlcmVuY2VQcmVzcykge1xuICAgICAgICBvbk9wZW5DaGFuZ2UoZmFsc2UsIGV2ZW50Lm5hdGl2ZUV2ZW50LCAncmVmZXJlbmNlLXByZXNzJyk7XG4gICAgICB9XG4gICAgfVxuICB9KSwgW2Nsb3NlT25Fc2NhcGVLZXlEb3duLCBvbk9wZW5DaGFuZ2UsIHJlZmVyZW5jZVByZXNzLCByZWZlcmVuY2VQcmVzc0V2ZW50XSk7XG4gIGNvbnN0IGZsb2F0aW5nID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIG9uS2V5RG93bjogY2xvc2VPbkVzY2FwZUtleURvd24sXG4gICAgb25Nb3VzZURvd24oKSB7XG4gICAgICBlbmRlZE9yU3RhcnRlZEluc2lkZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9LFxuICAgIG9uTW91c2VVcCgpIHtcbiAgICAgIGVuZGVkT3JTdGFydGVkSW5zaWRlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgIH0sXG4gICAgW2NhcHR1cmVIYW5kbGVyS2V5c1tvdXRzaWRlUHJlc3NFdmVudF1dOiAoKSA9PiB7XG4gICAgICBpbnNpZGVSZWFjdFRyZWVSZWYuY3VycmVudCA9IHRydWU7XG4gICAgfVxuICB9KSwgW2Nsb3NlT25Fc2NhcGVLZXlEb3duLCBvdXRzaWRlUHJlc3NFdmVudF0pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiBlbmFibGVkID8ge1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZ1xuICB9IDoge30sIFtlbmFibGVkLCByZWZlcmVuY2UsIGZsb2F0aW5nXSk7XG59XG5cbmZ1bmN0aW9uIHVzZUZsb2F0aW5nUm9vdENvbnRleHQob3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgb3BlbiA9IGZhbHNlLFxuICAgIG9uT3BlbkNoYW5nZTogb25PcGVuQ2hhbmdlUHJvcCxcbiAgICBlbGVtZW50czogZWxlbWVudHNQcm9wXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBmbG9hdGluZ0lkID0gdXNlSWQoKTtcbiAgY29uc3QgZGF0YVJlZiA9IFJlYWN0LnVzZVJlZih7fSk7XG4gIGNvbnN0IFtldmVudHNdID0gUmVhY3QudXNlU3RhdGUoKCkgPT4gY3JlYXRlUHViU3ViKCkpO1xuICBjb25zdCBuZXN0ZWQgPSB1c2VGbG9hdGluZ1BhcmVudE5vZGVJZCgpICE9IG51bGw7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICBjb25zdCBvcHRpb25Eb21SZWZlcmVuY2UgPSBlbGVtZW50c1Byb3AucmVmZXJlbmNlO1xuICAgIGlmIChvcHRpb25Eb21SZWZlcmVuY2UgJiYgIWlzRWxlbWVudChvcHRpb25Eb21SZWZlcmVuY2UpKSB7XG4gICAgICBlcnJvcignQ2Fubm90IHBhc3MgYSB2aXJ0dWFsIGVsZW1lbnQgdG8gdGhlIGBlbGVtZW50cy5yZWZlcmVuY2VgIG9wdGlvbiwnLCAnYXMgaXQgbXVzdCBiZSBhIHJlYWwgRE9NIGVsZW1lbnQuIFVzZSBgcmVmcy5zZXRQb3NpdGlvblJlZmVyZW5jZSgpYCcsICdpbnN0ZWFkLicpO1xuICAgIH1cbiAgfVxuICBjb25zdCBbcG9zaXRpb25SZWZlcmVuY2UsIHNldFBvc2l0aW9uUmVmZXJlbmNlXSA9IFJlYWN0LnVzZVN0YXRlKGVsZW1lbnRzUHJvcC5yZWZlcmVuY2UpO1xuICBjb25zdCBvbk9wZW5DaGFuZ2UgPSB1c2VFZmZlY3RFdmVudCgob3BlbiwgZXZlbnQsIHJlYXNvbikgPT4ge1xuICAgIGRhdGFSZWYuY3VycmVudC5vcGVuRXZlbnQgPSBvcGVuID8gZXZlbnQgOiB1bmRlZmluZWQ7XG4gICAgZXZlbnRzLmVtaXQoJ29wZW5jaGFuZ2UnLCB7XG4gICAgICBvcGVuLFxuICAgICAgZXZlbnQsXG4gICAgICByZWFzb24sXG4gICAgICBuZXN0ZWRcbiAgICB9KTtcbiAgICBvbk9wZW5DaGFuZ2VQcm9wID09IG51bGwgfHwgb25PcGVuQ2hhbmdlUHJvcChvcGVuLCBldmVudCwgcmVhc29uKTtcbiAgfSk7XG4gIGNvbnN0IHJlZnMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgc2V0UG9zaXRpb25SZWZlcmVuY2VcbiAgfSksIFtdKTtcbiAgY29uc3QgZWxlbWVudHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgcmVmZXJlbmNlOiBwb3NpdGlvblJlZmVyZW5jZSB8fCBlbGVtZW50c1Byb3AucmVmZXJlbmNlIHx8IG51bGwsXG4gICAgZmxvYXRpbmc6IGVsZW1lbnRzUHJvcC5mbG9hdGluZyB8fCBudWxsLFxuICAgIGRvbVJlZmVyZW5jZTogZWxlbWVudHNQcm9wLnJlZmVyZW5jZVxuICB9KSwgW3Bvc2l0aW9uUmVmZXJlbmNlLCBlbGVtZW50c1Byb3AucmVmZXJlbmNlLCBlbGVtZW50c1Byb3AuZmxvYXRpbmddKTtcbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBkYXRhUmVmLFxuICAgIG9wZW4sXG4gICAgb25PcGVuQ2hhbmdlLFxuICAgIGVsZW1lbnRzLFxuICAgIGV2ZW50cyxcbiAgICBmbG9hdGluZ0lkLFxuICAgIHJlZnNcbiAgfSksIFtvcGVuLCBvbk9wZW5DaGFuZ2UsIGVsZW1lbnRzLCBldmVudHMsIGZsb2F0aW5nSWQsIHJlZnNdKTtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGEgZmxvYXRpbmcgZWxlbWVudCBhbmQgY29udGV4dCB0byBhZGQgaW50ZXJhY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3VzZUZsb2F0aW5nXG4gKi9cbmZ1bmN0aW9uIHVzZUZsb2F0aW5nKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgbm9kZUlkXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpbnRlcm5hbFJvb3RDb250ZXh0ID0gdXNlRmxvYXRpbmdSb290Q29udGV4dCh7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBlbGVtZW50czoge1xuICAgICAgcmVmZXJlbmNlOiBudWxsLFxuICAgICAgZmxvYXRpbmc6IG51bGwsXG4gICAgICAuLi5vcHRpb25zLmVsZW1lbnRzXG4gICAgfVxuICB9KTtcbiAgY29uc3Qgcm9vdENvbnRleHQgPSBvcHRpb25zLnJvb3RDb250ZXh0IHx8IGludGVybmFsUm9vdENvbnRleHQ7XG4gIGNvbnN0IGNvbXB1dGVkRWxlbWVudHMgPSByb290Q29udGV4dC5lbGVtZW50cztcbiAgY29uc3QgW19kb21SZWZlcmVuY2UsIHNldERvbVJlZmVyZW5jZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW3Bvc2l0aW9uUmVmZXJlbmNlLCBfc2V0UG9zaXRpb25SZWZlcmVuY2VdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IG9wdGlvbkRvbVJlZmVyZW5jZSA9IGNvbXB1dGVkRWxlbWVudHMgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbXB1dGVkRWxlbWVudHMucmVmZXJlbmNlO1xuICBjb25zdCBkb21SZWZlcmVuY2UgPSBvcHRpb25Eb21SZWZlcmVuY2UgfHwgX2RvbVJlZmVyZW5jZTtcbiAgY29uc3QgZG9tUmVmZXJlbmNlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCB0cmVlID0gdXNlRmxvYXRpbmdUcmVlKCk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoZG9tUmVmZXJlbmNlKSB7XG4gICAgICBkb21SZWZlcmVuY2VSZWYuY3VycmVudCA9IGRvbVJlZmVyZW5jZTtcbiAgICB9XG4gIH0sIFtkb21SZWZlcmVuY2VdKTtcbiAgY29uc3QgcG9zaXRpb24gPSB1c2VGbG9hdGluZyQxKHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGVsZW1lbnRzOiB7XG4gICAgICAuLi5jb21wdXRlZEVsZW1lbnRzLFxuICAgICAgLi4uKHBvc2l0aW9uUmVmZXJlbmNlICYmIHtcbiAgICAgICAgcmVmZXJlbmNlOiBwb3NpdGlvblJlZmVyZW5jZVxuICAgICAgfSlcbiAgICB9XG4gIH0pO1xuICBjb25zdCBzZXRQb3NpdGlvblJlZmVyZW5jZSA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIGNvbnN0IGNvbXB1dGVkUG9zaXRpb25SZWZlcmVuY2UgPSBpc0VsZW1lbnQobm9kZSkgPyB7XG4gICAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3Q6ICgpID0+IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICBjb250ZXh0RWxlbWVudDogbm9kZVxuICAgIH0gOiBub2RlO1xuICAgIC8vIFN0b3JlIHRoZSBwb3NpdGlvblJlZmVyZW5jZSBpbiBzdGF0ZSBpZiB0aGUgRE9NIHJlZmVyZW5jZSBpcyBzcGVjaWZpZWQgZXh0ZXJuYWxseSB2aWEgdGhlXG4gICAgLy8gYGVsZW1lbnRzLnJlZmVyZW5jZWAgb3B0aW9uLiBUaGlzIGVuc3VyZXMgdGhhdCBpdCB3b24ndCBiZSBvdmVycmlkZGVuIG9uIGZ1dHVyZSByZW5kZXJzLlxuICAgIF9zZXRQb3NpdGlvblJlZmVyZW5jZShjb21wdXRlZFBvc2l0aW9uUmVmZXJlbmNlKTtcbiAgICBwb3NpdGlvbi5yZWZzLnNldFJlZmVyZW5jZShjb21wdXRlZFBvc2l0aW9uUmVmZXJlbmNlKTtcbiAgfSwgW3Bvc2l0aW9uLnJlZnNdKTtcbiAgY29uc3Qgc2V0UmVmZXJlbmNlID0gUmVhY3QudXNlQ2FsbGJhY2sobm9kZSA9PiB7XG4gICAgaWYgKGlzRWxlbWVudChub2RlKSB8fCBub2RlID09PSBudWxsKSB7XG4gICAgICBkb21SZWZlcmVuY2VSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICBzZXREb21SZWZlcmVuY2Uobm9kZSk7XG4gICAgfVxuXG4gICAgLy8gQmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZm9yIHBhc3NpbmcgYSB2aXJ0dWFsIGVsZW1lbnQgdG8gYHJlZmVyZW5jZWBcbiAgICAvLyBhZnRlciBpdCBoYXMgc2V0IHRoZSBET00gcmVmZXJlbmNlLlxuICAgIGlmIChpc0VsZW1lbnQocG9zaXRpb24ucmVmcy5yZWZlcmVuY2UuY3VycmVudCkgfHwgcG9zaXRpb24ucmVmcy5yZWZlcmVuY2UuY3VycmVudCA9PT0gbnVsbCB8fFxuICAgIC8vIERvbid0IGFsbG93IHNldHRpbmcgdmlydHVhbCBlbGVtZW50cyB1c2luZyB0aGUgb2xkIHRlY2huaXF1ZSBiYWNrIHRvXG4gICAgLy8gYG51bGxgIHRvIHN1cHBvcnQgYHBvc2l0aW9uUmVmZXJlbmNlYCArIGFuIHVuc3RhYmxlIGByZWZlcmVuY2VgXG4gICAgLy8gY2FsbGJhY2sgcmVmLlxuICAgIG5vZGUgIT09IG51bGwgJiYgIWlzRWxlbWVudChub2RlKSkge1xuICAgICAgcG9zaXRpb24ucmVmcy5zZXRSZWZlcmVuY2Uobm9kZSk7XG4gICAgfVxuICB9LCBbcG9zaXRpb24ucmVmc10pO1xuICBjb25zdCByZWZzID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIC4uLnBvc2l0aW9uLnJlZnMsXG4gICAgc2V0UmVmZXJlbmNlLFxuICAgIHNldFBvc2l0aW9uUmVmZXJlbmNlLFxuICAgIGRvbVJlZmVyZW5jZTogZG9tUmVmZXJlbmNlUmVmXG4gIH0pLCBbcG9zaXRpb24ucmVmcywgc2V0UmVmZXJlbmNlLCBzZXRQb3NpdGlvblJlZmVyZW5jZV0pO1xuICBjb25zdCBlbGVtZW50cyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICAuLi5wb3NpdGlvbi5lbGVtZW50cyxcbiAgICBkb21SZWZlcmVuY2U6IGRvbVJlZmVyZW5jZVxuICB9KSwgW3Bvc2l0aW9uLmVsZW1lbnRzLCBkb21SZWZlcmVuY2VdKTtcbiAgY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICAuLi5wb3NpdGlvbixcbiAgICAuLi5yb290Q29udGV4dCxcbiAgICByZWZzLFxuICAgIGVsZW1lbnRzLFxuICAgIG5vZGVJZFxuICB9KSwgW3Bvc2l0aW9uLCByZWZzLCBlbGVtZW50cywgbm9kZUlkLCByb290Q29udGV4dF0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgcm9vdENvbnRleHQuZGF0YVJlZi5jdXJyZW50LmZsb2F0aW5nQ29udGV4dCA9IGNvbnRleHQ7XG4gICAgY29uc3Qgbm9kZSA9IHRyZWUgPT0gbnVsbCA/IHZvaWQgMCA6IHRyZWUubm9kZXNSZWYuY3VycmVudC5maW5kKG5vZGUgPT4gbm9kZS5pZCA9PT0gbm9kZUlkKTtcbiAgICBpZiAobm9kZSkge1xuICAgICAgbm9kZS5jb250ZXh0ID0gY29udGV4dDtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIC4uLnBvc2l0aW9uLFxuICAgIGNvbnRleHQsXG4gICAgcmVmcyxcbiAgICBlbGVtZW50c1xuICB9KSwgW3Bvc2l0aW9uLCByZWZzLCBlbGVtZW50cywgY29udGV4dF0pO1xufVxuXG4vKipcbiAqIE9wZW5zIHRoZSBmbG9hdGluZyBlbGVtZW50IHdoaWxlIHRoZSByZWZlcmVuY2UgZWxlbWVudCBoYXMgZm9jdXMsIGxpa2UgQ1NTXG4gKiBgOmZvY3VzYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VGb2N1c1xuICovXG5mdW5jdGlvbiB1c2VGb2N1cyhjb250ZXh0LCBwcm9wcykge1xuICBpZiAocHJvcHMgPT09IHZvaWQgMCkge1xuICAgIHByb3BzID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIG9wZW4sXG4gICAgb25PcGVuQ2hhbmdlLFxuICAgIGV2ZW50cyxcbiAgICBkYXRhUmVmLFxuICAgIGVsZW1lbnRzXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgZW5hYmxlZCA9IHRydWUsXG4gICAgdmlzaWJsZU9ubHkgPSB0cnVlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgYmxvY2tGb2N1c1JlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHRpbWVvdXRSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgY29uc3Qga2V5Ym9hcmRNb2RhbGl0eVJlZiA9IFJlYWN0LnVzZVJlZih0cnVlKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudHMuZG9tUmVmZXJlbmNlKTtcblxuICAgIC8vIElmIHRoZSByZWZlcmVuY2Ugd2FzIGZvY3VzZWQgYW5kIHRoZSB1c2VyIGxlZnQgdGhlIHRhYi93aW5kb3csIGFuZCB0aGVcbiAgICAvLyBmbG9hdGluZyBlbGVtZW50IHdhcyBub3Qgb3BlbiwgdGhlIGZvY3VzIHNob3VsZCBiZSBibG9ja2VkIHdoZW4gdGhleVxuICAgIC8vIHJldHVybiB0byB0aGUgdGFiL3dpbmRvdy5cbiAgICBmdW5jdGlvbiBvbkJsdXIoKSB7XG4gICAgICBpZiAoIW9wZW4gJiYgaXNIVE1MRWxlbWVudChlbGVtZW50cy5kb21SZWZlcmVuY2UpICYmIGVsZW1lbnRzLmRvbVJlZmVyZW5jZSA9PT0gYWN0aXZlRWxlbWVudChnZXREb2N1bWVudChlbGVtZW50cy5kb21SZWZlcmVuY2UpKSkge1xuICAgICAgICBibG9ja0ZvY3VzUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBvbktleURvd24oKSB7XG4gICAgICBrZXlib2FyZE1vZGFsaXR5UmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgIH1cbiAgICB3aW4uYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIG9uQmx1cik7XG4gICAgd2luLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbktleURvd24sIHRydWUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW4ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmx1cicsIG9uQmx1cik7XG4gICAgICB3aW4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93biwgdHJ1ZSk7XG4gICAgfTtcbiAgfSwgW2VsZW1lbnRzLmRvbVJlZmVyZW5jZSwgb3BlbiwgZW5hYmxlZF0pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZW5hYmxlZCkgcmV0dXJuO1xuICAgIGZ1bmN0aW9uIG9uT3BlbkNoYW5nZShfcmVmKSB7XG4gICAgICBsZXQge1xuICAgICAgICByZWFzb25cbiAgICAgIH0gPSBfcmVmO1xuICAgICAgaWYgKHJlYXNvbiA9PT0gJ3JlZmVyZW5jZS1wcmVzcycgfHwgcmVhc29uID09PSAnZXNjYXBlLWtleScpIHtcbiAgICAgICAgYmxvY2tGb2N1c1JlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZXZlbnRzLm9uKCdvcGVuY2hhbmdlJywgb25PcGVuQ2hhbmdlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZXZlbnRzLm9mZignb3BlbmNoYW5nZScsIG9uT3BlbkNoYW5nZSk7XG4gICAgfTtcbiAgfSwgW2V2ZW50cywgZW5hYmxlZF0pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dFJlZi5jdXJyZW50KTtcbiAgICB9O1xuICB9LCBbXSk7XG4gIGNvbnN0IHJlZmVyZW5jZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBvblBvaW50ZXJEb3duKGV2ZW50KSB7XG4gICAgICBpZiAoaXNWaXJ0dWFsUG9pbnRlckV2ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KSkgcmV0dXJuO1xuICAgICAga2V5Ym9hcmRNb2RhbGl0eVJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgfSxcbiAgICBvbk1vdXNlTGVhdmUoKSB7XG4gICAgICBibG9ja0ZvY3VzUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9LFxuICAgIG9uRm9jdXMoZXZlbnQpIHtcbiAgICAgIGlmIChibG9ja0ZvY3VzUmVmLmN1cnJlbnQpIHJldHVybjtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGdldFRhcmdldChldmVudC5uYXRpdmVFdmVudCk7XG4gICAgICBpZiAodmlzaWJsZU9ubHkgJiYgaXNFbGVtZW50KHRhcmdldCkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBNYWMgU2FmYXJpIHVucmVsaWFibHkgbWF0Y2hlcyBgOmZvY3VzLXZpc2libGVgIG9uIHRoZSByZWZlcmVuY2VcbiAgICAgICAgICAvLyBpZiBmb2N1cyB3YXMgb3V0c2lkZSB0aGUgcGFnZSBpbml0aWFsbHkgLSB1c2UgdGhlIGZhbGxiYWNrXG4gICAgICAgICAgLy8gaW5zdGVhZC5cbiAgICAgICAgICBpZiAoaXNTYWZhcmkoKSAmJiBpc01hYygpKSB0aHJvdyBFcnJvcigpO1xuICAgICAgICAgIGlmICghdGFyZ2V0Lm1hdGNoZXMoJzpmb2N1cy12aXNpYmxlJykpIHJldHVybjtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIE9sZCBicm93c2VycyB3aWxsIHRocm93IGFuIGVycm9yIHdoZW4gdXNpbmcgYDpmb2N1cy12aXNpYmxlYC5cbiAgICAgICAgICBpZiAoIWtleWJvYXJkTW9kYWxpdHlSZWYuY3VycmVudCAmJiAhaXNUeXBlYWJsZUVsZW1lbnQodGFyZ2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgb25PcGVuQ2hhbmdlKHRydWUsIGV2ZW50Lm5hdGl2ZUV2ZW50LCAnZm9jdXMnKTtcbiAgICB9LFxuICAgIG9uQmx1cihldmVudCkge1xuICAgICAgYmxvY2tGb2N1c1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0gZXZlbnQucmVsYXRlZFRhcmdldDtcbiAgICAgIGNvbnN0IG5hdGl2ZUV2ZW50ID0gZXZlbnQubmF0aXZlRXZlbnQ7XG5cbiAgICAgIC8vIEhpdCB0aGUgbm9uLW1vZGFsIGZvY3VzIG1hbmFnZW1lbnQgcG9ydGFsIGd1YXJkLiBGb2N1cyB3aWxsIGJlXG4gICAgICAvLyBtb3ZlZCBpbnRvIHRoZSBmbG9hdGluZyBlbGVtZW50IGltbWVkaWF0ZWx5IGFmdGVyLlxuICAgICAgY29uc3QgbW92ZWRUb0ZvY3VzR3VhcmQgPSBpc0VsZW1lbnQocmVsYXRlZFRhcmdldCkgJiYgcmVsYXRlZFRhcmdldC5oYXNBdHRyaWJ1dGUoY3JlYXRlQXR0cmlidXRlKCdmb2N1cy1ndWFyZCcpKSAmJiByZWxhdGVkVGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS10eXBlJykgPT09ICdvdXRzaWRlJztcblxuICAgICAgLy8gV2FpdCBmb3IgdGhlIHdpbmRvdyBibHVyIGxpc3RlbmVyIHRvIGZpcmUuXG4gICAgICB0aW1lb3V0UmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHZhciBfZGF0YVJlZiRjdXJyZW50JGZsb2E7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUVsID0gYWN0aXZlRWxlbWVudChlbGVtZW50cy5kb21SZWZlcmVuY2UgPyBlbGVtZW50cy5kb21SZWZlcmVuY2Uub3duZXJEb2N1bWVudCA6IGRvY3VtZW50KTtcblxuICAgICAgICAvLyBGb2N1cyBsZWZ0IHRoZSBwYWdlLCBrZWVwIGl0IG9wZW4uXG4gICAgICAgIGlmICghcmVsYXRlZFRhcmdldCAmJiBhY3RpdmVFbCA9PT0gZWxlbWVudHMuZG9tUmVmZXJlbmNlKSByZXR1cm47XG5cbiAgICAgICAgLy8gV2hlbiBmb2N1c2luZyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQgKGUuZy4gcmVndWxhciBjbGljayksIHRoZW5cbiAgICAgICAgLy8gY2xpY2tpbmcgaW50byB0aGUgZmxvYXRpbmcgZWxlbWVudCwgcHJldmVudCBpdCBmcm9tIGhpZGluZy5cbiAgICAgICAgLy8gTm90ZTogaXQgbXVzdCBiZSBmb2N1c2FibGUsIGUuZy4gYHRhYmluZGV4PVwiLTFcImAuXG4gICAgICAgIC8vIFdlIGNhbiBub3QgcmVseSBvbiByZWxhdGVkVGFyZ2V0IHRvIHBvaW50IHRvIHRoZSBjb3JyZWN0IGVsZW1lbnRcbiAgICAgICAgLy8gYXMgaXQgd2lsbCBvbmx5IHBvaW50IHRvIHRoZSBzaGFkb3cgaG9zdCBvZiB0aGUgbmV3bHkgZm9jdXNlZCBlbGVtZW50XG4gICAgICAgIC8vIGFuZCBub3QgdGhlIGVsZW1lbnQgdGhhdCBhY3R1YWxseSBoYXMgcmVjZWl2ZWQgZm9jdXMgaWYgaXQgaXMgbG9jYXRlZFxuICAgICAgICAvLyBpbnNpZGUgYSBzaGFkb3cgcm9vdC5cbiAgICAgICAgaWYgKGNvbnRhaW5zKChfZGF0YVJlZiRjdXJyZW50JGZsb2EgPSBkYXRhUmVmLmN1cnJlbnQuZmxvYXRpbmdDb250ZXh0KSA9PSBudWxsID8gdm9pZCAwIDogX2RhdGFSZWYkY3VycmVudCRmbG9hLnJlZnMuZmxvYXRpbmcuY3VycmVudCwgYWN0aXZlRWwpIHx8IGNvbnRhaW5zKGVsZW1lbnRzLmRvbVJlZmVyZW5jZSwgYWN0aXZlRWwpIHx8IG1vdmVkVG9Gb2N1c0d1YXJkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIG9uT3BlbkNoYW5nZShmYWxzZSwgbmF0aXZlRXZlbnQsICdmb2N1cycpO1xuICAgICAgfSk7XG4gICAgfVxuICB9KSwgW2RhdGFSZWYsIGVsZW1lbnRzLmRvbVJlZmVyZW5jZSwgb25PcGVuQ2hhbmdlLCB2aXNpYmxlT25seV0pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiBlbmFibGVkID8ge1xuICAgIHJlZmVyZW5jZVxuICB9IDoge30sIFtlbmFibGVkLCByZWZlcmVuY2VdKTtcbn1cblxuY29uc3QgQUNUSVZFX0tFWSA9ICdhY3RpdmUnO1xuY29uc3QgU0VMRUNURURfS0VZID0gJ3NlbGVjdGVkJztcbmZ1bmN0aW9uIG1lcmdlUHJvcHModXNlclByb3BzLCBwcm9wc0xpc3QsIGVsZW1lbnRLZXkpIHtcbiAgY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuICBjb25zdCBpc0l0ZW0gPSBlbGVtZW50S2V5ID09PSAnaXRlbSc7XG4gIGxldCBkb21Vc2VyUHJvcHMgPSB1c2VyUHJvcHM7XG4gIGlmIChpc0l0ZW0gJiYgdXNlclByb3BzKSB7XG4gICAgY29uc3Qge1xuICAgICAgW0FDVElWRV9LRVldOiBfLFxuICAgICAgW1NFTEVDVEVEX0tFWV06IF9fLFxuICAgICAgLi4udmFsaWRQcm9wc1xuICAgIH0gPSB1c2VyUHJvcHM7XG4gICAgZG9tVXNlclByb3BzID0gdmFsaWRQcm9wcztcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLihlbGVtZW50S2V5ID09PSAnZmxvYXRpbmcnICYmIHtcbiAgICAgIHRhYkluZGV4OiAtMVxuICAgIH0pLFxuICAgIC4uLmRvbVVzZXJQcm9wcyxcbiAgICAuLi5wcm9wc0xpc3QubWFwKHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IHByb3BzT3JHZXRQcm9wcyA9IHZhbHVlID8gdmFsdWVbZWxlbWVudEtleV0gOiBudWxsO1xuICAgICAgaWYgKHR5cGVvZiBwcm9wc09yR2V0UHJvcHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHVzZXJQcm9wcyA/IHByb3BzT3JHZXRQcm9wcyh1c2VyUHJvcHMpIDogbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9wc09yR2V0UHJvcHM7XG4gICAgfSkuY29uY2F0KHVzZXJQcm9wcykucmVkdWNlKChhY2MsIHByb3BzKSA9PiB7XG4gICAgICBpZiAoIXByb3BzKSB7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9XG4gICAgICBPYmplY3QuZW50cmllcyhwcm9wcykuZm9yRWFjaChfcmVmID0+IHtcbiAgICAgICAgbGV0IFtrZXksIHZhbHVlXSA9IF9yZWY7XG4gICAgICAgIGlmIChpc0l0ZW0gJiYgW0FDVElWRV9LRVksIFNFTEVDVEVEX0tFWV0uaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5LmluZGV4T2YoJ29uJykgPT09IDApIHtcbiAgICAgICAgICBpZiAoIW1hcC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgbWFwLnNldChrZXksIFtdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdmFyIF9tYXAkZ2V0O1xuICAgICAgICAgICAgKF9tYXAkZ2V0ID0gbWFwLmdldChrZXkpKSA9PSBudWxsIHx8IF9tYXAkZ2V0LnB1c2godmFsdWUpO1xuICAgICAgICAgICAgYWNjW2tleV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIHZhciBfbWFwJGdldDI7XG4gICAgICAgICAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICAgICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIChfbWFwJGdldDIgPSBtYXAuZ2V0KGtleSkpID09IG51bGwgPyB2b2lkIDAgOiBfbWFwJGdldDIubWFwKGZuID0+IGZuKC4uLmFyZ3MpKS5maW5kKHZhbCA9PiB2YWwgIT09IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhY2Nba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pXG4gIH07XG59XG4vKipcbiAqIE1lcmdlcyBhbiBhcnJheSBvZiBpbnRlcmFjdGlvbiBob29rcycgcHJvcHMgaW50byBwcm9wIGdldHRlcnMsIGFsbG93aW5nXG4gKiBldmVudCBoYW5kbGVyIGZ1bmN0aW9ucyB0byBiZSBjb21wb3NlZCB0b2dldGhlciB3aXRob3V0IG92ZXJ3cml0aW5nIG9uZVxuICogYW5vdGhlci5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VJbnRlcmFjdGlvbnNcbiAqL1xuZnVuY3Rpb24gdXNlSW50ZXJhY3Rpb25zKHByb3BzTGlzdCkge1xuICBpZiAocHJvcHNMaXN0ID09PSB2b2lkIDApIHtcbiAgICBwcm9wc0xpc3QgPSBbXTtcbiAgfVxuICBjb25zdCByZWZlcmVuY2VEZXBzID0gcHJvcHNMaXN0Lm1hcChrZXkgPT4ga2V5ID09IG51bGwgPyB2b2lkIDAgOiBrZXkucmVmZXJlbmNlKTtcbiAgY29uc3QgZmxvYXRpbmdEZXBzID0gcHJvcHNMaXN0Lm1hcChrZXkgPT4ga2V5ID09IG51bGwgPyB2b2lkIDAgOiBrZXkuZmxvYXRpbmcpO1xuICBjb25zdCBpdGVtRGVwcyA9IHByb3BzTGlzdC5tYXAoa2V5ID0+IGtleSA9PSBudWxsID8gdm9pZCAwIDoga2V5Lml0ZW0pO1xuICBjb25zdCBnZXRSZWZlcmVuY2VQcm9wcyA9IFJlYWN0LnVzZUNhbGxiYWNrKHVzZXJQcm9wcyA9PiBtZXJnZVByb3BzKHVzZXJQcm9wcywgcHJvcHNMaXN0LCAncmVmZXJlbmNlJyksXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgcmVmZXJlbmNlRGVwcyk7XG4gIGNvbnN0IGdldEZsb2F0aW5nUHJvcHMgPSBSZWFjdC51c2VDYWxsYmFjayh1c2VyUHJvcHMgPT4gbWVyZ2VQcm9wcyh1c2VyUHJvcHMsIHByb3BzTGlzdCwgJ2Zsb2F0aW5nJyksXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgZmxvYXRpbmdEZXBzKTtcbiAgY29uc3QgZ2V0SXRlbVByb3BzID0gUmVhY3QudXNlQ2FsbGJhY2sodXNlclByb3BzID0+IG1lcmdlUHJvcHModXNlclByb3BzLCBwcm9wc0xpc3QsICdpdGVtJyksXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgaXRlbURlcHMpO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGdldFJlZmVyZW5jZVByb3BzLFxuICAgIGdldEZsb2F0aW5nUHJvcHMsXG4gICAgZ2V0SXRlbVByb3BzXG4gIH0pLCBbZ2V0UmVmZXJlbmNlUHJvcHMsIGdldEZsb2F0aW5nUHJvcHMsIGdldEl0ZW1Qcm9wc10pO1xufVxuXG5sZXQgaXNQcmV2ZW50U2Nyb2xsU3VwcG9ydGVkID0gZmFsc2U7XG5mdW5jdGlvbiBkb1N3aXRjaChvcmllbnRhdGlvbiwgdmVydGljYWwsIGhvcml6b250YWwpIHtcbiAgc3dpdGNoIChvcmllbnRhdGlvbikge1xuICAgIGNhc2UgJ3ZlcnRpY2FsJzpcbiAgICAgIHJldHVybiB2ZXJ0aWNhbDtcbiAgICBjYXNlICdob3Jpem9udGFsJzpcbiAgICAgIHJldHVybiBob3Jpem9udGFsO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdmVydGljYWwgfHwgaG9yaXpvbnRhbDtcbiAgfVxufVxuZnVuY3Rpb24gaXNNYWluT3JpZW50YXRpb25LZXkoa2V5LCBvcmllbnRhdGlvbikge1xuICBjb25zdCB2ZXJ0aWNhbCA9IGtleSA9PT0gQVJST1dfVVAgfHwga2V5ID09PSBBUlJPV19ET1dOO1xuICBjb25zdCBob3Jpem9udGFsID0ga2V5ID09PSBBUlJPV19MRUZUIHx8IGtleSA9PT0gQVJST1dfUklHSFQ7XG4gIHJldHVybiBkb1N3aXRjaChvcmllbnRhdGlvbiwgdmVydGljYWwsIGhvcml6b250YWwpO1xufVxuZnVuY3Rpb24gaXNNYWluT3JpZW50YXRpb25Ub0VuZEtleShrZXksIG9yaWVudGF0aW9uLCBydGwpIHtcbiAgY29uc3QgdmVydGljYWwgPSBrZXkgPT09IEFSUk9XX0RPV047XG4gIGNvbnN0IGhvcml6b250YWwgPSBydGwgPyBrZXkgPT09IEFSUk9XX0xFRlQgOiBrZXkgPT09IEFSUk9XX1JJR0hUO1xuICByZXR1cm4gZG9Td2l0Y2gob3JpZW50YXRpb24sIHZlcnRpY2FsLCBob3Jpem9udGFsKSB8fCBrZXkgPT09ICdFbnRlcicgfHwga2V5ID09PSAnICcgfHwga2V5ID09PSAnJztcbn1cbmZ1bmN0aW9uIGlzQ3Jvc3NPcmllbnRhdGlvbk9wZW5LZXkoa2V5LCBvcmllbnRhdGlvbiwgcnRsKSB7XG4gIGNvbnN0IHZlcnRpY2FsID0gcnRsID8ga2V5ID09PSBBUlJPV19MRUZUIDoga2V5ID09PSBBUlJPV19SSUdIVDtcbiAgY29uc3QgaG9yaXpvbnRhbCA9IGtleSA9PT0gQVJST1dfRE9XTjtcbiAgcmV0dXJuIGRvU3dpdGNoKG9yaWVudGF0aW9uLCB2ZXJ0aWNhbCwgaG9yaXpvbnRhbCk7XG59XG5mdW5jdGlvbiBpc0Nyb3NzT3JpZW50YXRpb25DbG9zZUtleShrZXksIG9yaWVudGF0aW9uLCBydGwpIHtcbiAgY29uc3QgdmVydGljYWwgPSBydGwgPyBrZXkgPT09IEFSUk9XX1JJR0hUIDoga2V5ID09PSBBUlJPV19MRUZUO1xuICBjb25zdCBob3Jpem9udGFsID0ga2V5ID09PSBBUlJPV19VUDtcbiAgcmV0dXJuIGRvU3dpdGNoKG9yaWVudGF0aW9uLCB2ZXJ0aWNhbCwgaG9yaXpvbnRhbCk7XG59XG4vKipcbiAqIEFkZHMgYXJyb3cga2V5LWJhc2VkIG5hdmlnYXRpb24gb2YgYSBsaXN0IG9mIGl0ZW1zLCBlaXRoZXIgdXNpbmcgcmVhbCBET01cbiAqIGZvY3VzIG9yIHZpcnR1YWwgZm9jdXMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdXNlTGlzdE5hdmlnYXRpb25cbiAqL1xuZnVuY3Rpb24gdXNlTGlzdE5hdmlnYXRpb24oY29udGV4dCwgcHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIG9wZW4sXG4gICAgb25PcGVuQ2hhbmdlLFxuICAgIGVsZW1lbnRzXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgbGlzdFJlZixcbiAgICBhY3RpdmVJbmRleCxcbiAgICBvbk5hdmlnYXRlOiB1bnN0YWJsZV9vbk5hdmlnYXRlID0gKCkgPT4ge30sXG4gICAgZW5hYmxlZCA9IHRydWUsXG4gICAgc2VsZWN0ZWRJbmRleCA9IG51bGwsXG4gICAgYWxsb3dFc2NhcGUgPSBmYWxzZSxcbiAgICBsb29wID0gZmFsc2UsXG4gICAgbmVzdGVkID0gZmFsc2UsXG4gICAgcnRsID0gZmFsc2UsXG4gICAgdmlydHVhbCA9IGZhbHNlLFxuICAgIGZvY3VzSXRlbU9uT3BlbiA9ICdhdXRvJyxcbiAgICBmb2N1c0l0ZW1PbkhvdmVyID0gdHJ1ZSxcbiAgICBvcGVuT25BcnJvd0tleURvd24gPSB0cnVlLFxuICAgIGRpc2FibGVkSW5kaWNlcyA9IHVuZGVmaW5lZCxcbiAgICBvcmllbnRhdGlvbiA9ICd2ZXJ0aWNhbCcsXG4gICAgY29scyA9IDEsXG4gICAgc2Nyb2xsSXRlbUludG9WaWV3ID0gdHJ1ZSxcbiAgICB2aXJ0dWFsSXRlbVJlZixcbiAgICBpdGVtU2l6ZXMsXG4gICAgZGVuc2UgPSBmYWxzZVxuICB9ID0gcHJvcHM7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICBpZiAoYWxsb3dFc2NhcGUpIHtcbiAgICAgIGlmICghbG9vcCkge1xuICAgICAgICB3YXJuKCdgdXNlTGlzdE5hdmlnYXRpb25gIGxvb3BpbmcgbXVzdCBiZSBlbmFibGVkIHRvIGFsbG93IGVzY2FwaW5nLicpO1xuICAgICAgfVxuICAgICAgaWYgKCF2aXJ0dWFsKSB7XG4gICAgICAgIHdhcm4oJ2B1c2VMaXN0TmF2aWdhdGlvbmAgbXVzdCBiZSB2aXJ0dWFsIHRvIGFsbG93IGVzY2FwaW5nLicpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgJiYgY29scyA+IDEpIHtcbiAgICAgIHdhcm4oJ0luIGdyaWQgbGlzdCBuYXZpZ2F0aW9uIG1vZGUgKGBjb2xzYCA+IDEpLCB0aGUgYG9yaWVudGF0aW9uYCBzaG91bGQnLCAnYmUgZWl0aGVyIFwiaG9yaXpvbnRhbFwiIG9yIFwiYm90aFwiLicpO1xuICAgIH1cbiAgfVxuICBjb25zdCBwYXJlbnRJZCA9IHVzZUZsb2F0aW5nUGFyZW50Tm9kZUlkKCk7XG4gIGNvbnN0IHRyZWUgPSB1c2VGbG9hdGluZ1RyZWUoKTtcbiAgY29uc3Qgb25OYXZpZ2F0ZSA9IHVzZUVmZmVjdEV2ZW50KHVuc3RhYmxlX29uTmF2aWdhdGUpO1xuICBjb25zdCBmb2N1c0l0ZW1Pbk9wZW5SZWYgPSBSZWFjdC51c2VSZWYoZm9jdXNJdGVtT25PcGVuKTtcbiAgY29uc3QgaW5kZXhSZWYgPSBSZWFjdC51c2VSZWYoc2VsZWN0ZWRJbmRleCAhPSBudWxsID8gc2VsZWN0ZWRJbmRleCA6IC0xKTtcbiAgY29uc3Qga2V5UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBpc1BvaW50ZXJNb2RhbGl0eVJlZiA9IFJlYWN0LnVzZVJlZih0cnVlKTtcbiAgY29uc3QgcHJldmlvdXNPbk5hdmlnYXRlUmVmID0gUmVhY3QudXNlUmVmKG9uTmF2aWdhdGUpO1xuICBjb25zdCBwcmV2aW91c01vdW50ZWRSZWYgPSBSZWFjdC51c2VSZWYoISFlbGVtZW50cy5mbG9hdGluZyk7XG4gIGNvbnN0IHByZXZpb3VzT3BlblJlZiA9IFJlYWN0LnVzZVJlZihvcGVuKTtcbiAgY29uc3QgZm9yY2VTeW5jRm9jdXMgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBjb25zdCBmb3JjZVNjcm9sbEludG9WaWV3UmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgZGlzYWJsZWRJbmRpY2VzUmVmID0gdXNlTGF0ZXN0UmVmKGRpc2FibGVkSW5kaWNlcyk7XG4gIGNvbnN0IGxhdGVzdE9wZW5SZWYgPSB1c2VMYXRlc3RSZWYob3Blbik7XG4gIGNvbnN0IHNjcm9sbEl0ZW1JbnRvVmlld1JlZiA9IHVzZUxhdGVzdFJlZihzY3JvbGxJdGVtSW50b1ZpZXcpO1xuICBjb25zdCBmbG9hdGluZ1JlZiA9IHVzZUxhdGVzdFJlZihlbGVtZW50cy5mbG9hdGluZyk7XG4gIGNvbnN0IHNlbGVjdGVkSW5kZXhSZWYgPSB1c2VMYXRlc3RSZWYoc2VsZWN0ZWRJbmRleCk7XG4gIGNvbnN0IFthY3RpdmVJZCwgc2V0QWN0aXZlSWRdID0gUmVhY3QudXNlU3RhdGUoKTtcbiAgY29uc3QgW3ZpcnR1YWxJZCwgc2V0VmlydHVhbElkXSA9IFJlYWN0LnVzZVN0YXRlKCk7XG4gIGNvbnN0IGZvY3VzSXRlbSA9IHVzZUVmZmVjdEV2ZW50KGZ1bmN0aW9uIChsaXN0UmVmLCBpbmRleFJlZiwgZm9yY2VTY3JvbGxJbnRvVmlldykge1xuICAgIGlmIChmb3JjZVNjcm9sbEludG9WaWV3ID09PSB2b2lkIDApIHtcbiAgICAgIGZvcmNlU2Nyb2xsSW50b1ZpZXcgPSBmYWxzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcnVuRm9jdXMoaXRlbSkge1xuICAgICAgaWYgKHZpcnR1YWwpIHtcbiAgICAgICAgc2V0QWN0aXZlSWQoaXRlbS5pZCk7XG4gICAgICAgIHRyZWUgPT0gbnVsbCB8fCB0cmVlLmV2ZW50cy5lbWl0KCd2aXJ0dWFsZm9jdXMnLCBpdGVtKTtcbiAgICAgICAgaWYgKHZpcnR1YWxJdGVtUmVmKSB7XG4gICAgICAgICAgdmlydHVhbEl0ZW1SZWYuY3VycmVudCA9IGl0ZW07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVucXVldWVGb2N1cyhpdGVtLCB7XG4gICAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZSxcbiAgICAgICAgICAvLyBNYWMgU2FmYXJpIGRvZXMgbm90IG1vdmUgdGhlIHZpcnR1YWwgY3Vyc29yIHVubGVzcyB0aGUgZm9jdXMgY2FsbFxuICAgICAgICAgIC8vIGlzIHN5bmMuIEhvd2V2ZXIsIGZvciB0aGUgdmVyeSBmaXJzdCBmb2N1cyBjYWxsLCB3ZSBuZWVkIHRvIHdhaXRcbiAgICAgICAgICAvLyBmb3IgdGhlIHBvc2l0aW9uIHRvIGJlIHJlYWR5IGluIG9yZGVyIHRvIHByZXZlbnQgdW53YW50ZWRcbiAgICAgICAgICAvLyBzY3JvbGxpbmcuIFRoaXMgbWVhbnMgdGhlIHZpcnR1YWwgY3Vyc29yIHdpbGwgbm90IG1vdmUgdG8gdGhlIGZpcnN0XG4gICAgICAgICAgLy8gaXRlbSB3aGVuIGZpcnN0IG9wZW5pbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQsIGJ1dCB3aWxsIG9uXG4gICAgICAgICAgLy8gc3Vic2VxdWVudCBjYWxscy4gYHByZXZlbnRTY3JvbGxgIGlzIHN1cHBvcnRlZCBpbiBtb2Rlcm4gU2FmYXJpLFxuICAgICAgICAgIC8vIHNvIHdlIGNhbiB1c2UgdGhhdCBpbnN0ZWFkLlxuICAgICAgICAgIC8vIGlPUyBTYWZhcmkgbXVzdCBiZSBhc3luYyBvciB0aGUgZmlyc3QgaXRlbSB3aWxsIG5vdCBiZSBmb2N1c2VkLlxuICAgICAgICAgIHN5bmM6IGlzTWFjKCkgJiYgaXNTYWZhcmkoKSA/IGlzUHJldmVudFNjcm9sbFN1cHBvcnRlZCB8fCBmb3JjZVN5bmNGb2N1cy5jdXJyZW50IDogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGluaXRpYWxJdGVtID0gbGlzdFJlZi5jdXJyZW50W2luZGV4UmVmLmN1cnJlbnRdO1xuICAgIGlmIChpbml0aWFsSXRlbSkge1xuICAgICAgcnVuRm9jdXMoaW5pdGlhbEl0ZW0pO1xuICAgIH1cbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgY29uc3Qgd2FpdGVkSXRlbSA9IGxpc3RSZWYuY3VycmVudFtpbmRleFJlZi5jdXJyZW50XSB8fCBpbml0aWFsSXRlbTtcbiAgICAgIGlmICghd2FpdGVkSXRlbSkgcmV0dXJuO1xuICAgICAgaWYgKCFpbml0aWFsSXRlbSkge1xuICAgICAgICBydW5Gb2N1cyh3YWl0ZWRJdGVtKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNjcm9sbEludG9WaWV3T3B0aW9ucyA9IHNjcm9sbEl0ZW1JbnRvVmlld1JlZi5jdXJyZW50O1xuICAgICAgY29uc3Qgc2hvdWxkU2Nyb2xsSW50b1ZpZXcgPSBzY3JvbGxJbnRvVmlld09wdGlvbnMgJiYgaXRlbSAmJiAoZm9yY2VTY3JvbGxJbnRvVmlldyB8fCAhaXNQb2ludGVyTW9kYWxpdHlSZWYuY3VycmVudCk7XG4gICAgICBpZiAoc2hvdWxkU2Nyb2xsSW50b1ZpZXcpIHtcbiAgICAgICAgLy8gSlNET00gZG9lc24ndCBzdXBwb3J0IGAuc2Nyb2xsSW50b1ZpZXcoKWAgYnV0IGl0J3Mgd2lkZWx5IHN1cHBvcnRlZFxuICAgICAgICAvLyBieSBhbGwgYnJvd3NlcnMuXG4gICAgICAgIHdhaXRlZEl0ZW0uc2Nyb2xsSW50b1ZpZXcgPT0gbnVsbCB8fCB3YWl0ZWRJdGVtLnNjcm9sbEludG9WaWV3KHR5cGVvZiBzY3JvbGxJbnRvVmlld09wdGlvbnMgPT09ICdib29sZWFuJyA/IHtcbiAgICAgICAgICBibG9jazogJ25lYXJlc3QnLFxuICAgICAgICAgIGlubGluZTogJ25lYXJlc3QnXG4gICAgICAgIH0gOiBzY3JvbGxJbnRvVmlld09wdGlvbnMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLmZvY3VzKHtcbiAgICAgIGdldCBwcmV2ZW50U2Nyb2xsKCkge1xuICAgICAgICBpc1ByZXZlbnRTY3JvbGxTdXBwb3J0ZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIFtdKTtcblxuICAvLyBTeW5jIGBzZWxlY3RlZEluZGV4YCB0byBiZSB0aGUgYGFjdGl2ZUluZGV4YCB1cG9uIG9wZW5pbmcgdGhlIGZsb2F0aW5nXG4gIC8vIGVsZW1lbnQuIEFsc28sIHJlc2V0IGBhY3RpdmVJbmRleGAgdXBvbiBjbG9zaW5nIHRoZSBmbG9hdGluZyBlbGVtZW50LlxuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgaWYgKG9wZW4gJiYgZWxlbWVudHMuZmxvYXRpbmcpIHtcbiAgICAgIGlmIChmb2N1c0l0ZW1Pbk9wZW5SZWYuY3VycmVudCAmJiBzZWxlY3RlZEluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgLy8gUmVnYXJkbGVzcyBvZiB0aGUgcG9pbnRlciBtb2RhbGl0eSwgd2Ugd2FudCB0byBlbnN1cmUgdGhlIHNlbGVjdGVkXG4gICAgICAgIC8vIGl0ZW0gY29tZXMgaW50byB2aWV3IHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXMgb3BlbmVkLlxuICAgICAgICBmb3JjZVNjcm9sbEludG9WaWV3UmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICBpbmRleFJlZi5jdXJyZW50ID0gc2VsZWN0ZWRJbmRleDtcbiAgICAgICAgb25OYXZpZ2F0ZShzZWxlY3RlZEluZGV4KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByZXZpb3VzTW91bnRlZFJlZi5jdXJyZW50KSB7XG4gICAgICAvLyBTaW5jZSB0aGUgdXNlciBjYW4gc3BlY2lmeSBgb25OYXZpZ2F0ZWAgY29uZGl0aW9uYWxseVxuICAgICAgLy8gKG9uTmF2aWdhdGU6IG9wZW4gPyBzZXRBY3RpdmVJbmRleCA6IHNldFNlbGVjdGVkSW5kZXgpLFxuICAgICAgLy8gd2Ugc3RvcmUgYW5kIGNhbGwgdGhlIHByZXZpb3VzIGZ1bmN0aW9uLlxuICAgICAgaW5kZXhSZWYuY3VycmVudCA9IC0xO1xuICAgICAgcHJldmlvdXNPbk5hdmlnYXRlUmVmLmN1cnJlbnQobnVsbCk7XG4gICAgfVxuICB9LCBbZW5hYmxlZCwgb3BlbiwgZWxlbWVudHMuZmxvYXRpbmcsIHNlbGVjdGVkSW5kZXgsIG9uTmF2aWdhdGVdKTtcblxuICAvLyBTeW5jIGBhY3RpdmVJbmRleGAgdG8gYmUgdGhlIGZvY3VzZWQgaXRlbSB3aGlsZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBpc1xuICAvLyBvcGVuLlxuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgaWYgKG9wZW4gJiYgZWxlbWVudHMuZmxvYXRpbmcpIHtcbiAgICAgIGlmIChhY3RpdmVJbmRleCA9PSBudWxsKSB7XG4gICAgICAgIGZvcmNlU3luY0ZvY3VzLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXhSZWYuY3VycmVudCAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVzZXQgd2hpbGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgd2FzIG9wZW4gKGUuZy4gdGhlIGxpc3QgY2hhbmdlZCkuXG4gICAgICAgIGlmIChwcmV2aW91c01vdW50ZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgIGluZGV4UmVmLmN1cnJlbnQgPSAtMTtcbiAgICAgICAgICBmb2N1c0l0ZW0obGlzdFJlZiwgaW5kZXhSZWYpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5pdGlhbCBzeW5jLlxuICAgICAgICBpZiAoKCFwcmV2aW91c09wZW5SZWYuY3VycmVudCB8fCAhcHJldmlvdXNNb3VudGVkUmVmLmN1cnJlbnQpICYmIGZvY3VzSXRlbU9uT3BlblJlZi5jdXJyZW50ICYmIChrZXlSZWYuY3VycmVudCAhPSBudWxsIHx8IGZvY3VzSXRlbU9uT3BlblJlZi5jdXJyZW50ID09PSB0cnVlICYmIGtleVJlZi5jdXJyZW50ID09IG51bGwpKSB7XG4gICAgICAgICAgbGV0IHJ1bnMgPSAwO1xuICAgICAgICAgIGNvbnN0IHdhaXRGb3JMaXN0UG9wdWxhdGVkID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGxpc3RSZWYuY3VycmVudFswXSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgIC8vIEF2b2lkIGxldHRpbmcgdGhlIGJyb3dzZXIgcGFpbnQgaWYgcG9zc2libGUgb24gdGhlIGZpcnN0IHRyeSxcbiAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIHVzZSByQUYuIERvbid0IHRyeSBtb3JlIHRoYW4gdHdpY2UsIHNpbmNlIHNvbWV0aGluZ1xuICAgICAgICAgICAgICAvLyBpcyB3cm9uZyBvdGhlcndpc2UuXG4gICAgICAgICAgICAgIGlmIChydW5zIDwgMikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjaGVkdWxlciA9IHJ1bnMgPyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgOiBxdWV1ZU1pY3JvdGFzaztcbiAgICAgICAgICAgICAgICBzY2hlZHVsZXIod2FpdEZvckxpc3RQb3B1bGF0ZWQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJ1bnMrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGluZGV4UmVmLmN1cnJlbnQgPSBrZXlSZWYuY3VycmVudCA9PSBudWxsIHx8IGlzTWFpbk9yaWVudGF0aW9uVG9FbmRLZXkoa2V5UmVmLmN1cnJlbnQsIG9yaWVudGF0aW9uLCBydGwpIHx8IG5lc3RlZCA/IGdldE1pbkluZGV4KGxpc3RSZWYsIGRpc2FibGVkSW5kaWNlc1JlZi5jdXJyZW50KSA6IGdldE1heEluZGV4KGxpc3RSZWYsIGRpc2FibGVkSW5kaWNlc1JlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAga2V5UmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgICBvbk5hdmlnYXRlKGluZGV4UmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgd2FpdEZvckxpc3RQb3B1bGF0ZWQoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghaXNJbmRleE91dE9mQm91bmRzKGxpc3RSZWYsIGFjdGl2ZUluZGV4KSkge1xuICAgICAgICBpbmRleFJlZi5jdXJyZW50ID0gYWN0aXZlSW5kZXg7XG4gICAgICAgIGZvY3VzSXRlbShsaXN0UmVmLCBpbmRleFJlZiwgZm9yY2VTY3JvbGxJbnRvVmlld1JlZi5jdXJyZW50KTtcbiAgICAgICAgZm9yY2VTY3JvbGxJbnRvVmlld1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9LCBbZW5hYmxlZCwgb3BlbiwgZWxlbWVudHMuZmxvYXRpbmcsIGFjdGl2ZUluZGV4LCBzZWxlY3RlZEluZGV4UmVmLCBuZXN0ZWQsIGxpc3RSZWYsIG9yaWVudGF0aW9uLCBydGwsIG9uTmF2aWdhdGUsIGZvY3VzSXRlbSwgZGlzYWJsZWRJbmRpY2VzUmVmXSk7XG5cbiAgLy8gRW5zdXJlIHRoZSBwYXJlbnQgZmxvYXRpbmcgZWxlbWVudCBoYXMgZm9jdXMgd2hlbiBhIG5lc3RlZCBjaGlsZCBjbG9zZXNcbiAgLy8gdG8gYWxsb3cgYXJyb3cga2V5IG5hdmlnYXRpb24gdG8gd29yayBhZnRlciB0aGUgcG9pbnRlciBsZWF2ZXMgdGhlIGNoaWxkLlxuICBpbmRleCgoKSA9PiB7XG4gICAgdmFyIF9ub2RlcyRmaW5kO1xuICAgIGlmICghZW5hYmxlZCB8fCBlbGVtZW50cy5mbG9hdGluZyB8fCAhdHJlZSB8fCB2aXJ0dWFsIHx8ICFwcmV2aW91c01vdW50ZWRSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBub2RlcyA9IHRyZWUubm9kZXNSZWYuY3VycmVudDtcbiAgICBjb25zdCBwYXJlbnQgPSAoX25vZGVzJGZpbmQgPSBub2Rlcy5maW5kKG5vZGUgPT4gbm9kZS5pZCA9PT0gcGFyZW50SWQpKSA9PSBudWxsIHx8IChfbm9kZXMkZmluZCA9IF9ub2RlcyRmaW5kLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZXMkZmluZC5lbGVtZW50cy5mbG9hdGluZztcbiAgICBjb25zdCBhY3RpdmVFbCA9IGFjdGl2ZUVsZW1lbnQoZ2V0RG9jdW1lbnQoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgICBjb25zdCB0cmVlQ29udGFpbnNBY3RpdmVFbCA9IG5vZGVzLnNvbWUobm9kZSA9PiBub2RlLmNvbnRleHQgJiYgY29udGFpbnMobm9kZS5jb250ZXh0LmVsZW1lbnRzLmZsb2F0aW5nLCBhY3RpdmVFbCkpO1xuICAgIGlmIChwYXJlbnQgJiYgIXRyZWVDb250YWluc0FjdGl2ZUVsICYmIGlzUG9pbnRlck1vZGFsaXR5UmVmLmN1cnJlbnQpIHtcbiAgICAgIHBhcmVudC5mb2N1cyh7XG4gICAgICAgIHByZXZlbnRTY3JvbGw6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2VuYWJsZWQsIGVsZW1lbnRzLmZsb2F0aW5nLCB0cmVlLCBwYXJlbnRJZCwgdmlydHVhbF0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgaWYgKCF0cmVlKSByZXR1cm47XG4gICAgaWYgKCF2aXJ0dWFsKSByZXR1cm47XG4gICAgaWYgKHBhcmVudElkKSByZXR1cm47XG4gICAgZnVuY3Rpb24gaGFuZGxlVmlydHVhbEZvY3VzKGl0ZW0pIHtcbiAgICAgIHNldFZpcnR1YWxJZChpdGVtLmlkKTtcbiAgICAgIGlmICh2aXJ0dWFsSXRlbVJlZikge1xuICAgICAgICB2aXJ0dWFsSXRlbVJlZi5jdXJyZW50ID0gaXRlbTtcbiAgICAgIH1cbiAgICB9XG4gICAgdHJlZS5ldmVudHMub24oJ3ZpcnR1YWxmb2N1cycsIGhhbmRsZVZpcnR1YWxGb2N1cyk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRyZWUuZXZlbnRzLm9mZigndmlydHVhbGZvY3VzJywgaGFuZGxlVmlydHVhbEZvY3VzKTtcbiAgICB9O1xuICB9LCBbZW5hYmxlZCwgdHJlZSwgdmlydHVhbCwgcGFyZW50SWQsIHZpcnR1YWxJdGVtUmVmXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBwcmV2aW91c09uTmF2aWdhdGVSZWYuY3VycmVudCA9IG9uTmF2aWdhdGU7XG4gICAgcHJldmlvdXNNb3VudGVkUmVmLmN1cnJlbnQgPSAhIWVsZW1lbnRzLmZsb2F0aW5nO1xuICB9KTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmICghb3Blbikge1xuICAgICAga2V5UmVmLmN1cnJlbnQgPSBudWxsO1xuICAgIH1cbiAgfSwgW29wZW5dKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIHByZXZpb3VzT3BlblJlZi5jdXJyZW50ID0gb3BlbjtcbiAgfSwgW29wZW5dKTtcbiAgY29uc3QgaGFzQWN0aXZlSW5kZXggPSBhY3RpdmVJbmRleCAhPSBudWxsO1xuICBjb25zdCBpdGVtID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgZnVuY3Rpb24gc3luY0N1cnJlbnRUYXJnZXQoY3VycmVudFRhcmdldCkge1xuICAgICAgaWYgKCFvcGVuKSByZXR1cm47XG4gICAgICBjb25zdCBpbmRleCA9IGxpc3RSZWYuY3VycmVudC5pbmRleE9mKGN1cnJlbnRUYXJnZXQpO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBvbk5hdmlnYXRlKGluZGV4KTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICBvbkZvY3VzKF9yZWYpIHtcbiAgICAgICAgbGV0IHtcbiAgICAgICAgICBjdXJyZW50VGFyZ2V0XG4gICAgICAgIH0gPSBfcmVmO1xuICAgICAgICBzeW5jQ3VycmVudFRhcmdldChjdXJyZW50VGFyZ2V0KTtcbiAgICAgIH0sXG4gICAgICBvbkNsaWNrOiBfcmVmMiA9PiB7XG4gICAgICAgIGxldCB7XG4gICAgICAgICAgY3VycmVudFRhcmdldFxuICAgICAgICB9ID0gX3JlZjI7XG4gICAgICAgIHJldHVybiBjdXJyZW50VGFyZ2V0LmZvY3VzKHtcbiAgICAgICAgICBwcmV2ZW50U2Nyb2xsOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIC8vIFNhZmFyaVxuICAgICAgLi4uKGZvY3VzSXRlbU9uSG92ZXIgJiYge1xuICAgICAgICBvbk1vdXNlTW92ZShfcmVmMykge1xuICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICBjdXJyZW50VGFyZ2V0XG4gICAgICAgICAgfSA9IF9yZWYzO1xuICAgICAgICAgIHN5bmNDdXJyZW50VGFyZ2V0KGN1cnJlbnRUYXJnZXQpO1xuICAgICAgICB9LFxuICAgICAgICBvblBvaW50ZXJMZWF2ZShfcmVmNCkge1xuICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICBwb2ludGVyVHlwZVxuICAgICAgICAgIH0gPSBfcmVmNDtcbiAgICAgICAgICBpZiAoIWlzUG9pbnRlck1vZGFsaXR5UmVmLmN1cnJlbnQgfHwgcG9pbnRlclR5cGUgPT09ICd0b3VjaCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5kZXhSZWYuY3VycmVudCA9IC0xO1xuICAgICAgICAgIGZvY3VzSXRlbShsaXN0UmVmLCBpbmRleFJlZik7XG4gICAgICAgICAgb25OYXZpZ2F0ZShudWxsKTtcbiAgICAgICAgICBpZiAoIXZpcnR1YWwpIHtcbiAgICAgICAgICAgIGVucXVldWVGb2N1cyhmbG9hdGluZ1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICAgIHByZXZlbnRTY3JvbGw6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9O1xuICAgIHJldHVybiBwcm9wcztcbiAgfSwgW29wZW4sIGZsb2F0aW5nUmVmLCBmb2N1c0l0ZW0sIGZvY3VzSXRlbU9uSG92ZXIsIGxpc3RSZWYsIG9uTmF2aWdhdGUsIHZpcnR1YWxdKTtcbiAgY29uc3QgY29tbW9uT25LZXlEb3duID0gdXNlRWZmZWN0RXZlbnQoZXZlbnQgPT4ge1xuICAgIGlzUG9pbnRlck1vZGFsaXR5UmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICBmb3JjZVN5bmNGb2N1cy5jdXJyZW50ID0gdHJ1ZTtcblxuICAgIC8vIElmIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIGFuaW1hdGluZyBvdXQsIGlnbm9yZSBuYXZpZ2F0aW9uLiBPdGhlcndpc2UsXG4gICAgLy8gdGhlIGBhY3RpdmVJbmRleGAgZ2V0cyBzZXQgdG8gMCBkZXNwaXRlIG5vdCBiZWluZyBvcGVuIHNvIHRoZSBuZXh0IHRpbWVcbiAgICAvLyB0aGUgdXNlciBBcnJvd0Rvd25zLCB0aGUgZmlyc3QgaXRlbSB3b24ndCBiZSBmb2N1c2VkLlxuICAgIGlmICghbGF0ZXN0T3BlblJlZi5jdXJyZW50ICYmIGV2ZW50LmN1cnJlbnRUYXJnZXQgPT09IGZsb2F0aW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKG5lc3RlZCAmJiBpc0Nyb3NzT3JpZW50YXRpb25DbG9zZUtleShldmVudC5rZXksIG9yaWVudGF0aW9uLCBydGwpKSB7XG4gICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlLCBldmVudC5uYXRpdmVFdmVudCwgJ2xpc3QtbmF2aWdhdGlvbicpO1xuICAgICAgaWYgKGlzSFRNTEVsZW1lbnQoZWxlbWVudHMuZG9tUmVmZXJlbmNlKSAmJiAhdmlydHVhbCkge1xuICAgICAgICBlbGVtZW50cy5kb21SZWZlcmVuY2UuZm9jdXMoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gaW5kZXhSZWYuY3VycmVudDtcbiAgICBjb25zdCBtaW5JbmRleCA9IGdldE1pbkluZGV4KGxpc3RSZWYsIGRpc2FibGVkSW5kaWNlcyk7XG4gICAgY29uc3QgbWF4SW5kZXggPSBnZXRNYXhJbmRleChsaXN0UmVmLCBkaXNhYmxlZEluZGljZXMpO1xuICAgIGlmIChldmVudC5rZXkgPT09ICdIb21lJykge1xuICAgICAgc3RvcEV2ZW50KGV2ZW50KTtcbiAgICAgIGluZGV4UmVmLmN1cnJlbnQgPSBtaW5JbmRleDtcbiAgICAgIG9uTmF2aWdhdGUoaW5kZXhSZWYuY3VycmVudCk7XG4gICAgfVxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbmQnKSB7XG4gICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgaW5kZXhSZWYuY3VycmVudCA9IG1heEluZGV4O1xuICAgICAgb25OYXZpZ2F0ZShpbmRleFJlZi5jdXJyZW50KTtcbiAgICB9XG5cbiAgICAvLyBHcmlkIG5hdmlnYXRpb24uXG4gICAgaWYgKGNvbHMgPiAxKSB7XG4gICAgICBjb25zdCBzaXplcyA9IGl0ZW1TaXplcyB8fCBBcnJheS5mcm9tKHtcbiAgICAgICAgbGVuZ3RoOiBsaXN0UmVmLmN1cnJlbnQubGVuZ3RoXG4gICAgICB9LCAoKSA9PiAoe1xuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgaGVpZ2h0OiAxXG4gICAgICB9KSk7XG4gICAgICAvLyBUbyBjYWxjdWxhdGUgbW92ZW1lbnRzIG9uIHRoZSBncmlkLCB3ZSB1c2UgaHlwb3RoZXRpY2FsIGNlbGwgaW5kaWNlc1xuICAgICAgLy8gYXMgaWYgZXZlcnkgaXRlbSB3YXMgMXgxLCB0aGVuIGNvbnZlcnQgYmFjayB0byByZWFsIGluZGljZXMuXG4gICAgICBjb25zdCBjZWxsTWFwID0gYnVpbGRDZWxsTWFwKHNpemVzLCBjb2xzLCBkZW5zZSk7XG4gICAgICBjb25zdCBtaW5HcmlkSW5kZXggPSBjZWxsTWFwLmZpbmRJbmRleChpbmRleCA9PiBpbmRleCAhPSBudWxsICYmICFpc0Rpc2FibGVkKGxpc3RSZWYuY3VycmVudCwgaW5kZXgsIGRpc2FibGVkSW5kaWNlcykpO1xuICAgICAgLy8gbGFzdCBlbmFibGVkIGluZGV4XG4gICAgICBjb25zdCBtYXhHcmlkSW5kZXggPSBjZWxsTWFwLnJlZHVjZSgoZm91bmRJbmRleCwgaW5kZXgsIGNlbGxJbmRleCkgPT4gaW5kZXggIT0gbnVsbCAmJiAhaXNEaXNhYmxlZChsaXN0UmVmLmN1cnJlbnQsIGluZGV4LCBkaXNhYmxlZEluZGljZXMpID8gY2VsbEluZGV4IDogZm91bmRJbmRleCwgLTEpO1xuICAgICAgaW5kZXhSZWYuY3VycmVudCA9IGNlbGxNYXBbZ2V0R3JpZE5hdmlnYXRlZEluZGV4KHtcbiAgICAgICAgY3VycmVudDogY2VsbE1hcC5tYXAoaXRlbUluZGV4ID0+IGl0ZW1JbmRleCAhPSBudWxsID8gbGlzdFJlZi5jdXJyZW50W2l0ZW1JbmRleF0gOiBudWxsKVxuICAgICAgfSwge1xuICAgICAgICBldmVudCxcbiAgICAgICAgb3JpZW50YXRpb24sXG4gICAgICAgIGxvb3AsXG4gICAgICAgIGNvbHMsXG4gICAgICAgIC8vIHRyZWF0IHVuZGVmaW5lZCAoZW1wdHkgZ3JpZCBzcGFjZXMpIGFzIGRpc2FibGVkIGluZGljZXMgc28gd2VcbiAgICAgICAgLy8gZG9uJ3QgZW5kIHVwIGluIHRoZW1cbiAgICAgICAgZGlzYWJsZWRJbmRpY2VzOiBnZXRDZWxsSW5kaWNlcyhbLi4uKGRpc2FibGVkSW5kaWNlcyB8fCBsaXN0UmVmLmN1cnJlbnQubWFwKChfLCBpbmRleCkgPT4gaXNEaXNhYmxlZChsaXN0UmVmLmN1cnJlbnQsIGluZGV4KSA/IGluZGV4IDogdW5kZWZpbmVkKSksIHVuZGVmaW5lZF0sIGNlbGxNYXApLFxuICAgICAgICBtaW5JbmRleDogbWluR3JpZEluZGV4LFxuICAgICAgICBtYXhJbmRleDogbWF4R3JpZEluZGV4LFxuICAgICAgICBwcmV2SW5kZXg6IGdldENlbGxJbmRleE9mQ29ybmVyKGluZGV4UmVmLmN1cnJlbnQgPiBtYXhJbmRleCA/IG1pbkluZGV4IDogaW5kZXhSZWYuY3VycmVudCwgc2l6ZXMsIGNlbGxNYXAsIGNvbHMsXG4gICAgICAgIC8vIHVzZSBhIGNvcm5lciBtYXRjaGluZyB0aGUgZWRnZSBjbG9zZXN0IHRvIHRoZSBkaXJlY3Rpb25cbiAgICAgICAgLy8gd2UncmUgbW92aW5nIGluIHNvIHdlIGRvbid0IGVuZCB1cCBpbiB0aGUgc2FtZSBpdGVtLiBQcmVmZXJcbiAgICAgICAgLy8gdG9wL2xlZnQgb3ZlciBib3R0b20vcmlnaHQuXG4gICAgICAgIGV2ZW50LmtleSA9PT0gQVJST1dfRE9XTiA/ICdibCcgOiBldmVudC5rZXkgPT09IEFSUk9XX1JJR0hUID8gJ3RyJyA6ICd0bCcpLFxuICAgICAgICBzdG9wRXZlbnQ6IHRydWVcbiAgICAgIH0pXTsgLy8gbmF2aWdhdGVkIGNlbGwgd2lsbCBuZXZlciBiZSBudWxsaXNoXG5cbiAgICAgIG9uTmF2aWdhdGUoaW5kZXhSZWYuY3VycmVudCk7XG4gICAgICBpZiAob3JpZW50YXRpb24gPT09ICdib3RoJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc01haW5PcmllbnRhdGlvbktleShldmVudC5rZXksIG9yaWVudGF0aW9uKSkge1xuICAgICAgc3RvcEV2ZW50KGV2ZW50KTtcblxuICAgICAgLy8gUmVzZXQgdGhlIGluZGV4IGlmIG5vIGl0ZW0gaXMgZm9jdXNlZC5cbiAgICAgIGlmIChvcGVuICYmICF2aXJ0dWFsICYmIGFjdGl2ZUVsZW1lbnQoZXZlbnQuY3VycmVudFRhcmdldC5vd25lckRvY3VtZW50KSA9PT0gZXZlbnQuY3VycmVudFRhcmdldCkge1xuICAgICAgICBpbmRleFJlZi5jdXJyZW50ID0gaXNNYWluT3JpZW50YXRpb25Ub0VuZEtleShldmVudC5rZXksIG9yaWVudGF0aW9uLCBydGwpID8gbWluSW5kZXggOiBtYXhJbmRleDtcbiAgICAgICAgb25OYXZpZ2F0ZShpbmRleFJlZi5jdXJyZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGlzTWFpbk9yaWVudGF0aW9uVG9FbmRLZXkoZXZlbnQua2V5LCBvcmllbnRhdGlvbiwgcnRsKSkge1xuICAgICAgICBpZiAobG9vcCkge1xuICAgICAgICAgIGluZGV4UmVmLmN1cnJlbnQgPSBjdXJyZW50SW5kZXggPj0gbWF4SW5kZXggPyBhbGxvd0VzY2FwZSAmJiBjdXJyZW50SW5kZXggIT09IGxpc3RSZWYuY3VycmVudC5sZW5ndGggPyAtMSA6IG1pbkluZGV4IDogZmluZE5vbkRpc2FibGVkSW5kZXgobGlzdFJlZiwge1xuICAgICAgICAgICAgc3RhcnRpbmdJbmRleDogY3VycmVudEluZGV4LFxuICAgICAgICAgICAgZGlzYWJsZWRJbmRpY2VzXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5kZXhSZWYuY3VycmVudCA9IE1hdGgubWluKG1heEluZGV4LCBmaW5kTm9uRGlzYWJsZWRJbmRleChsaXN0UmVmLCB7XG4gICAgICAgICAgICBzdGFydGluZ0luZGV4OiBjdXJyZW50SW5kZXgsXG4gICAgICAgICAgICBkaXNhYmxlZEluZGljZXNcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChsb29wKSB7XG4gICAgICAgICAgaW5kZXhSZWYuY3VycmVudCA9IGN1cnJlbnRJbmRleCA8PSBtaW5JbmRleCA/IGFsbG93RXNjYXBlICYmIGN1cnJlbnRJbmRleCAhPT0gLTEgPyBsaXN0UmVmLmN1cnJlbnQubGVuZ3RoIDogbWF4SW5kZXggOiBmaW5kTm9uRGlzYWJsZWRJbmRleChsaXN0UmVmLCB7XG4gICAgICAgICAgICBzdGFydGluZ0luZGV4OiBjdXJyZW50SW5kZXgsXG4gICAgICAgICAgICBkZWNyZW1lbnQ6IHRydWUsXG4gICAgICAgICAgICBkaXNhYmxlZEluZGljZXNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbmRleFJlZi5jdXJyZW50ID0gTWF0aC5tYXgobWluSW5kZXgsIGZpbmROb25EaXNhYmxlZEluZGV4KGxpc3RSZWYsIHtcbiAgICAgICAgICAgIHN0YXJ0aW5nSW5kZXg6IGN1cnJlbnRJbmRleCxcbiAgICAgICAgICAgIGRlY3JlbWVudDogdHJ1ZSxcbiAgICAgICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzSW5kZXhPdXRPZkJvdW5kcyhsaXN0UmVmLCBpbmRleFJlZi5jdXJyZW50KSkge1xuICAgICAgICBvbk5hdmlnYXRlKG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25OYXZpZ2F0ZShpbmRleFJlZi5jdXJyZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBjb25zdCBhcmlhQWN0aXZlRGVzY2VuZGFudFByb3AgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdmlydHVhbCAmJiBvcGVuICYmIGhhc0FjdGl2ZUluZGV4ICYmIHtcbiAgICAgICdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnOiB2aXJ0dWFsSWQgfHwgYWN0aXZlSWRcbiAgICB9O1xuICB9LCBbdmlydHVhbCwgb3BlbiwgaGFzQWN0aXZlSW5kZXgsIHZpcnR1YWxJZCwgYWN0aXZlSWRdKTtcbiAgY29uc3QgZmxvYXRpbmcgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2FyaWEtb3JpZW50YXRpb24nOiBvcmllbnRhdGlvbiA9PT0gJ2JvdGgnID8gdW5kZWZpbmVkIDogb3JpZW50YXRpb24sXG4gICAgICAuLi4oIWlzVHlwZWFibGVDb21ib2JveChlbGVtZW50cy5kb21SZWZlcmVuY2UpICYmIGFyaWFBY3RpdmVEZXNjZW5kYW50UHJvcCksXG4gICAgICBvbktleURvd246IGNvbW1vbk9uS2V5RG93bixcbiAgICAgIG9uUG9pbnRlck1vdmUoKSB7XG4gICAgICAgIGlzUG9pbnRlck1vZGFsaXR5UmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFthcmlhQWN0aXZlRGVzY2VuZGFudFByb3AsIGNvbW1vbk9uS2V5RG93biwgZWxlbWVudHMuZG9tUmVmZXJlbmNlLCBvcmllbnRhdGlvbl0pO1xuICBjb25zdCByZWZlcmVuY2UgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBmdW5jdGlvbiBjaGVja1ZpcnR1YWxNb3VzZShldmVudCkge1xuICAgICAgaWYgKGZvY3VzSXRlbU9uT3BlbiA9PT0gJ2F1dG8nICYmIGlzVmlydHVhbENsaWNrKGV2ZW50Lm5hdGl2ZUV2ZW50KSkge1xuICAgICAgICBmb2N1c0l0ZW1Pbk9wZW5SZWYuY3VycmVudCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNoZWNrVmlydHVhbFBvaW50ZXIoZXZlbnQpIHtcbiAgICAgIC8vIGBwb2ludGVyZG93bmAgZmlyZXMgZmlyc3QsIHJlc2V0IHRoZSBzdGF0ZSB0aGVuIHBlcmZvcm0gdGhlIGNoZWNrcy5cbiAgICAgIGZvY3VzSXRlbU9uT3BlblJlZi5jdXJyZW50ID0gZm9jdXNJdGVtT25PcGVuO1xuICAgICAgaWYgKGZvY3VzSXRlbU9uT3BlbiA9PT0gJ2F1dG8nICYmIGlzVmlydHVhbFBvaW50ZXJFdmVudChldmVudC5uYXRpdmVFdmVudCkpIHtcbiAgICAgICAgZm9jdXNJdGVtT25PcGVuUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgLi4uYXJpYUFjdGl2ZURlc2NlbmRhbnRQcm9wLFxuICAgICAgb25LZXlEb3duKGV2ZW50KSB7XG4gICAgICAgIGlzUG9pbnRlck1vZGFsaXR5UmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgaXNBcnJvd0tleSA9IGV2ZW50LmtleS5pbmRleE9mKCdBcnJvdycpID09PSAwO1xuICAgICAgICBjb25zdCBpc0Nyb3NzT3BlbktleSA9IGlzQ3Jvc3NPcmllbnRhdGlvbk9wZW5LZXkoZXZlbnQua2V5LCBvcmllbnRhdGlvbiwgcnRsKTtcbiAgICAgICAgY29uc3QgaXNDcm9zc0Nsb3NlS2V5ID0gaXNDcm9zc09yaWVudGF0aW9uQ2xvc2VLZXkoZXZlbnQua2V5LCBvcmllbnRhdGlvbiwgcnRsKTtcbiAgICAgICAgY29uc3QgaXNNYWluS2V5ID0gaXNNYWluT3JpZW50YXRpb25LZXkoZXZlbnQua2V5LCBvcmllbnRhdGlvbik7XG4gICAgICAgIGNvbnN0IGlzTmF2aWdhdGlvbktleSA9IChuZXN0ZWQgPyBpc0Nyb3NzT3BlbktleSA6IGlzTWFpbktleSkgfHwgZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleS50cmltKCkgPT09ICcnO1xuICAgICAgICBpZiAodmlydHVhbCAmJiBvcGVuKSB7XG4gICAgICAgICAgY29uc3Qgcm9vdE5vZGUgPSB0cmVlID09IG51bGwgPyB2b2lkIDAgOiB0cmVlLm5vZGVzUmVmLmN1cnJlbnQuZmluZChub2RlID0+IG5vZGUucGFyZW50SWQgPT0gbnVsbCk7XG4gICAgICAgICAgY29uc3QgZGVlcGVzdE5vZGUgPSB0cmVlICYmIHJvb3ROb2RlID8gZ2V0RGVlcGVzdE5vZGUodHJlZS5ub2Rlc1JlZi5jdXJyZW50LCByb290Tm9kZS5pZCkgOiBudWxsO1xuICAgICAgICAgIGlmIChpc0Fycm93S2V5ICYmIGRlZXBlc3ROb2RlICYmIHZpcnR1YWxJdGVtUmVmKSB7XG4gICAgICAgICAgICBjb25zdCBldmVudE9iamVjdCA9IG5ldyBLZXlib2FyZEV2ZW50KCdrZXlkb3duJywge1xuICAgICAgICAgICAgICBrZXk6IGV2ZW50LmtleSxcbiAgICAgICAgICAgICAgYnViYmxlczogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoaXNDcm9zc09wZW5LZXkgfHwgaXNDcm9zc0Nsb3NlS2V5KSB7XG4gICAgICAgICAgICAgIHZhciBfZGVlcGVzdE5vZGUkY29udGV4dCwgX2RlZXBlc3ROb2RlJGNvbnRleHQyO1xuICAgICAgICAgICAgICBjb25zdCBpc0N1cnJlbnRUYXJnZXQgPSAoKF9kZWVwZXN0Tm9kZSRjb250ZXh0ID0gZGVlcGVzdE5vZGUuY29udGV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kZWVwZXN0Tm9kZSRjb250ZXh0LmVsZW1lbnRzLmRvbVJlZmVyZW5jZSkgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgICAgIGNvbnN0IGRpc3BhdGNoSXRlbSA9IGlzQ3Jvc3NDbG9zZUtleSAmJiAhaXNDdXJyZW50VGFyZ2V0ID8gKF9kZWVwZXN0Tm9kZSRjb250ZXh0MiA9IGRlZXBlc3ROb2RlLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfZGVlcGVzdE5vZGUkY29udGV4dDIuZWxlbWVudHMuZG9tUmVmZXJlbmNlIDogaXNDcm9zc09wZW5LZXkgPyBsaXN0UmVmLmN1cnJlbnQuZmluZChpdGVtID0+IChpdGVtID09IG51bGwgPyB2b2lkIDAgOiBpdGVtLmlkKSA9PT0gYWN0aXZlSWQpIDogbnVsbDtcbiAgICAgICAgICAgICAgaWYgKGRpc3BhdGNoSXRlbSkge1xuICAgICAgICAgICAgICAgIHN0b3BFdmVudChldmVudCk7XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2hJdGVtLmRpc3BhdGNoRXZlbnQoZXZlbnRPYmplY3QpO1xuICAgICAgICAgICAgICAgIHNldFZpcnR1YWxJZCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNNYWluS2V5ICYmIGRlZXBlc3ROb2RlLmNvbnRleHQpIHtcbiAgICAgICAgICAgICAgaWYgKGRlZXBlc3ROb2RlLmNvbnRleHQub3BlbiAmJiBkZWVwZXN0Tm9kZS5wYXJlbnRJZCAmJiBldmVudC5jdXJyZW50VGFyZ2V0ICE9PSBkZWVwZXN0Tm9kZS5jb250ZXh0LmVsZW1lbnRzLmRvbVJlZmVyZW5jZSkge1xuICAgICAgICAgICAgICAgIHZhciBfZGVlcGVzdE5vZGUkY29udGV4dCQ7XG4gICAgICAgICAgICAgICAgc3RvcEV2ZW50KGV2ZW50KTtcbiAgICAgICAgICAgICAgICAoX2RlZXBlc3ROb2RlJGNvbnRleHQkID0gZGVlcGVzdE5vZGUuY29udGV4dC5lbGVtZW50cy5kb21SZWZlcmVuY2UpID09IG51bGwgfHwgX2RlZXBlc3ROb2RlJGNvbnRleHQkLmRpc3BhdGNoRXZlbnQoZXZlbnRPYmplY3QpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY29tbW9uT25LZXlEb3duKGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIGEgZmxvYXRpbmcgZWxlbWVudCBzaG91bGQgbm90IG9wZW4gb24gYXJyb3cga2V5IGRvd24sIGF2b2lkXG4gICAgICAgIC8vIHNldHRpbmcgYGFjdGl2ZUluZGV4YCB3aGlsZSBpdCdzIGNsb3NlZC5cbiAgICAgICAgaWYgKCFvcGVuICYmICFvcGVuT25BcnJvd0tleURvd24gJiYgaXNBcnJvd0tleSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOYXZpZ2F0aW9uS2V5KSB7XG4gICAgICAgICAga2V5UmVmLmN1cnJlbnQgPSBuZXN0ZWQgJiYgaXNNYWluS2V5ID8gbnVsbCA6IGV2ZW50LmtleTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmVzdGVkKSB7XG4gICAgICAgICAgaWYgKGlzQ3Jvc3NPcGVuS2V5KSB7XG4gICAgICAgICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgICAgICAgaW5kZXhSZWYuY3VycmVudCA9IGdldE1pbkluZGV4KGxpc3RSZWYsIGRpc2FibGVkSW5kaWNlc1JlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgb25OYXZpZ2F0ZShpbmRleFJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG9uT3BlbkNoYW5nZSh0cnVlLCBldmVudC5uYXRpdmVFdmVudCwgJ2xpc3QtbmF2aWdhdGlvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTWFpbktleSkge1xuICAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGluZGV4UmVmLmN1cnJlbnQgPSBzZWxlY3RlZEluZGV4O1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgICAgIGlmICghb3BlbiAmJiBvcGVuT25BcnJvd0tleURvd24pIHtcbiAgICAgICAgICAgIG9uT3BlbkNoYW5nZSh0cnVlLCBldmVudC5uYXRpdmVFdmVudCwgJ2xpc3QtbmF2aWdhdGlvbicpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb21tb25PbktleURvd24oZXZlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAob3Blbikge1xuICAgICAgICAgICAgb25OYXZpZ2F0ZShpbmRleFJlZi5jdXJyZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBvbkZvY3VzKCkge1xuICAgICAgICBpZiAob3BlbiAmJiAhdmlydHVhbCkge1xuICAgICAgICAgIG9uTmF2aWdhdGUobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBvblBvaW50ZXJEb3duOiBjaGVja1ZpcnR1YWxQb2ludGVyLFxuICAgICAgb25Nb3VzZURvd246IGNoZWNrVmlydHVhbE1vdXNlLFxuICAgICAgb25DbGljazogY2hlY2tWaXJ0dWFsTW91c2VcbiAgICB9O1xuICB9LCBbYWN0aXZlSWQsIGFyaWFBY3RpdmVEZXNjZW5kYW50UHJvcCwgY29tbW9uT25LZXlEb3duLCBkaXNhYmxlZEluZGljZXNSZWYsIGZvY3VzSXRlbU9uT3BlbiwgbGlzdFJlZiwgbmVzdGVkLCBvbk5hdmlnYXRlLCBvbk9wZW5DaGFuZ2UsIG9wZW4sIG9wZW5PbkFycm93S2V5RG93biwgb3JpZW50YXRpb24sIHJ0bCwgc2VsZWN0ZWRJbmRleCwgdHJlZSwgdmlydHVhbCwgdmlydHVhbEl0ZW1SZWZdKTtcbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4gZW5hYmxlZCA/IHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmcsXG4gICAgaXRlbVxuICB9IDoge30sIFtlbmFibGVkLCByZWZlcmVuY2UsIGZsb2F0aW5nLCBpdGVtXSk7XG59XG5cbmNvbnN0IGNvbXBvbmVudFJvbGVUb0FyaWFSb2xlTWFwID0gLyojX19QVVJFX18qL25ldyBNYXAoW1snc2VsZWN0JywgJ2xpc3Rib3gnXSwgWydjb21ib2JveCcsICdsaXN0Ym94J10sIFsnbGFiZWwnLCBmYWxzZV1dKTtcblxuLyoqXG4gKiBBZGRzIGJhc2Ugc2NyZWVuIHJlYWRlciBwcm9wcyB0byB0aGUgcmVmZXJlbmNlIGFuZCBmbG9hdGluZyBlbGVtZW50cyBmb3IgYVxuICogZ2l2ZW4gZmxvYXRpbmcgZWxlbWVudCBgcm9sZWAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdXNlUm9sZVxuICovXG5mdW5jdGlvbiB1c2VSb2xlKGNvbnRleHQsIHByb3BzKSB7XG4gIHZhciBfY29tcG9uZW50Um9sZVRvQXJpYVI7XG4gIGlmIChwcm9wcyA9PT0gdm9pZCAwKSB7XG4gICAgcHJvcHMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgb3BlbixcbiAgICBmbG9hdGluZ0lkXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgZW5hYmxlZCA9IHRydWUsXG4gICAgcm9sZSA9ICdkaWFsb2cnXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgYXJpYVJvbGUgPSAoX2NvbXBvbmVudFJvbGVUb0FyaWFSID0gY29tcG9uZW50Um9sZVRvQXJpYVJvbGVNYXAuZ2V0KHJvbGUpKSAhPSBudWxsID8gX2NvbXBvbmVudFJvbGVUb0FyaWFSIDogcm9sZTtcbiAgY29uc3QgcmVmZXJlbmNlSWQgPSB1c2VJZCgpO1xuICBjb25zdCBwYXJlbnRJZCA9IHVzZUZsb2F0aW5nUGFyZW50Tm9kZUlkKCk7XG4gIGNvbnN0IGlzTmVzdGVkID0gcGFyZW50SWQgIT0gbnVsbDtcbiAgY29uc3QgcmVmZXJlbmNlID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGFyaWFSb2xlID09PSAndG9vbHRpcCcgfHwgcm9sZSA9PT0gJ2xhYmVsJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW1wiYXJpYS1cIiArIChyb2xlID09PSAnbGFiZWwnID8gJ2xhYmVsbGVkYnknIDogJ2Rlc2NyaWJlZGJ5JyldOiBvcGVuID8gZmxvYXRpbmdJZCA6IHVuZGVmaW5lZFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICdhcmlhLWV4cGFuZGVkJzogb3BlbiA/ICd0cnVlJyA6ICdmYWxzZScsXG4gICAgICAnYXJpYS1oYXNwb3B1cCc6IGFyaWFSb2xlID09PSAnYWxlcnRkaWFsb2cnID8gJ2RpYWxvZycgOiBhcmlhUm9sZSxcbiAgICAgICdhcmlhLWNvbnRyb2xzJzogb3BlbiA/IGZsb2F0aW5nSWQgOiB1bmRlZmluZWQsXG4gICAgICAuLi4oYXJpYVJvbGUgPT09ICdsaXN0Ym94JyAmJiB7XG4gICAgICAgIHJvbGU6ICdjb21ib2JveCdcbiAgICAgIH0pLFxuICAgICAgLi4uKGFyaWFSb2xlID09PSAnbWVudScgJiYge1xuICAgICAgICBpZDogcmVmZXJlbmNlSWRcbiAgICAgIH0pLFxuICAgICAgLi4uKGFyaWFSb2xlID09PSAnbWVudScgJiYgaXNOZXN0ZWQgJiYge1xuICAgICAgICByb2xlOiAnbWVudWl0ZW0nXG4gICAgICB9KSxcbiAgICAgIC4uLihyb2xlID09PSAnc2VsZWN0JyAmJiB7XG4gICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdub25lJ1xuICAgICAgfSksXG4gICAgICAuLi4ocm9sZSA9PT0gJ2NvbWJvYm94JyAmJiB7XG4gICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdsaXN0J1xuICAgICAgfSlcbiAgICB9O1xuICB9LCBbYXJpYVJvbGUsIGZsb2F0aW5nSWQsIGlzTmVzdGVkLCBvcGVuLCByZWZlcmVuY2VJZCwgcm9sZV0pO1xuICBjb25zdCBmbG9hdGluZyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGZsb2F0aW5nUHJvcHMgPSB7XG4gICAgICBpZDogZmxvYXRpbmdJZCxcbiAgICAgIC4uLihhcmlhUm9sZSAmJiB7XG4gICAgICAgIHJvbGU6IGFyaWFSb2xlXG4gICAgICB9KVxuICAgIH07XG4gICAgaWYgKGFyaWFSb2xlID09PSAndG9vbHRpcCcgfHwgcm9sZSA9PT0gJ2xhYmVsJykge1xuICAgICAgcmV0dXJuIGZsb2F0aW5nUHJvcHM7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAuLi5mbG9hdGluZ1Byb3BzLFxuICAgICAgLi4uKGFyaWFSb2xlID09PSAnbWVudScgJiYge1xuICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogcmVmZXJlbmNlSWRcbiAgICAgIH0pXG4gICAgfTtcbiAgfSwgW2FyaWFSb2xlLCBmbG9hdGluZ0lkLCByZWZlcmVuY2VJZCwgcm9sZV0pO1xuICBjb25zdCBpdGVtID0gUmVhY3QudXNlQ2FsbGJhY2soX3JlZiA9PiB7XG4gICAgbGV0IHtcbiAgICAgIGFjdGl2ZSxcbiAgICAgIHNlbGVjdGVkXG4gICAgfSA9IF9yZWY7XG4gICAgY29uc3QgY29tbW9uUHJvcHMgPSB7XG4gICAgICByb2xlOiAnb3B0aW9uJyxcbiAgICAgIC4uLihhY3RpdmUgJiYge1xuICAgICAgICBpZDogZmxvYXRpbmdJZCArIFwiLW9wdGlvblwiXG4gICAgICB9KVxuICAgIH07XG5cbiAgICAvLyBGb3IgYG1lbnVgLCB3ZSBhcmUgdW5hYmxlIHRvIHRlbGwgaWYgdGhlIGl0ZW0gaXMgYSBgbWVudWl0ZW1yYWRpb2BcbiAgICAvLyBvciBgbWVudWl0ZW1jaGVja2JveGAuIEZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSByZWFzb25zLCBhbHNvXG4gICAgLy8gYXZvaWQgZGVmYXVsdGluZyB0byBgbWVudWl0ZW1gIGFzIGl0IG1heSBvdmVyd3JpdGUgY3VzdG9tIHJvbGUgcHJvcHMuXG4gICAgc3dpdGNoIChyb2xlKSB7XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmNvbW1vblByb3BzLFxuICAgICAgICAgICdhcmlhLXNlbGVjdGVkJzogYWN0aXZlICYmIHNlbGVjdGVkXG4gICAgICAgIH07XG4gICAgICBjYXNlICdjb21ib2JveCc6XG4gICAgICAgIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY29tbW9uUHJvcHMsXG4gICAgICAgICAgICAuLi4oYWN0aXZlICYmIHtcbiAgICAgICAgICAgICAgJ2FyaWEtc2VsZWN0ZWQnOiB0cnVlXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9LCBbZmxvYXRpbmdJZCwgcm9sZV0pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiBlbmFibGVkID8ge1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZyxcbiAgICBpdGVtXG4gIH0gOiB7fSwgW2VuYWJsZWQsIHJlZmVyZW5jZSwgZmxvYXRpbmcsIGl0ZW1dKTtcbn1cblxuLy8gQ29udmVydHMgYSBKUyBzdHlsZSBrZXkgbGlrZSBgYmFja2dyb3VuZENvbG9yYCB0byBhIENTUyB0cmFuc2l0aW9uLXByb3BlcnR5XG4vLyBsaWtlIGBiYWNrZ3JvdW5kLWNvbG9yYC5cbmNvbnN0IGNhbWVsQ2FzZVRvS2ViYWJDYXNlID0gc3RyID0+IHN0ci5yZXBsYWNlKC9bQS1aXSsoPyFbYS16XSl8W0EtWl0vZywgKCQsIG9mcykgPT4gKG9mcyA/ICctJyA6ICcnKSArICQudG9Mb3dlckNhc2UoKSk7XG5mdW5jdGlvbiBleGVjV2l0aEFyZ3NPclJldHVybih2YWx1ZU9yRm4sIGFyZ3MpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZU9yRm4gPT09ICdmdW5jdGlvbicgPyB2YWx1ZU9yRm4oYXJncykgOiB2YWx1ZU9yRm47XG59XG5mdW5jdGlvbiB1c2VEZWxheVVubW91bnQob3BlbiwgZHVyYXRpb25Ncykge1xuICBjb25zdCBbaXNNb3VudGVkLCBzZXRJc01vdW50ZWRdID0gUmVhY3QudXNlU3RhdGUob3Blbik7XG4gIGlmIChvcGVuICYmICFpc01vdW50ZWQpIHtcbiAgICBzZXRJc01vdW50ZWQodHJ1ZSk7XG4gIH1cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW9wZW4gJiYgaXNNb3VudGVkKSB7XG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiBzZXRJc01vdW50ZWQoZmFsc2UpLCBkdXJhdGlvbk1zKTtcbiAgICAgIHJldHVybiAoKSA9PiBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgfVxuICB9LCBbb3BlbiwgaXNNb3VudGVkLCBkdXJhdGlvbk1zXSk7XG4gIHJldHVybiBpc01vdW50ZWQ7XG59XG4vKipcbiAqIFByb3ZpZGVzIGEgc3RhdHVzIHN0cmluZyB0byBhcHBseSBDU1MgdHJhbnNpdGlvbnMgdG8gYSBmbG9hdGluZyBlbGVtZW50LFxuICogY29ycmVjdGx5IGhhbmRsaW5nIHBsYWNlbWVudC1hd2FyZSB0cmFuc2l0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VUcmFuc2l0aW9uI3VzZXRyYW5zaXRpb25zdGF0dXNcbiAqL1xuZnVuY3Rpb24gdXNlVHJhbnNpdGlvblN0YXR1cyhjb250ZXh0LCBwcm9wcykge1xuICBpZiAocHJvcHMgPT09IHZvaWQgMCkge1xuICAgIHByb3BzID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIG9wZW4sXG4gICAgZWxlbWVudHM6IHtcbiAgICAgIGZsb2F0aW5nXG4gICAgfVxuICB9ID0gY29udGV4dDtcbiAgY29uc3Qge1xuICAgIGR1cmF0aW9uID0gMjUwXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgaXNOdW1iZXJEdXJhdGlvbiA9IHR5cGVvZiBkdXJhdGlvbiA9PT0gJ251bWJlcic7XG4gIGNvbnN0IGNsb3NlRHVyYXRpb24gPSAoaXNOdW1iZXJEdXJhdGlvbiA/IGR1cmF0aW9uIDogZHVyYXRpb24uY2xvc2UpIHx8IDA7XG4gIGNvbnN0IFtzdGF0dXMsIHNldFN0YXR1c10gPSBSZWFjdC51c2VTdGF0ZSgndW5tb3VudGVkJyk7XG4gIGNvbnN0IGlzTW91bnRlZCA9IHVzZURlbGF5VW5tb3VudChvcGVuLCBjbG9zZUR1cmF0aW9uKTtcbiAgaWYgKCFpc01vdW50ZWQgJiYgc3RhdHVzID09PSAnY2xvc2UnKSB7XG4gICAgc2V0U3RhdHVzKCd1bm1vdW50ZWQnKTtcbiAgfVxuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKCFmbG9hdGluZykgcmV0dXJuO1xuICAgIGlmIChvcGVuKSB7XG4gICAgICBzZXRTdGF0dXMoJ2luaXRpYWwnKTtcbiAgICAgIGNvbnN0IGZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgc2V0U3RhdHVzKCdvcGVuJyk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lKTtcbiAgICAgIH07XG4gICAgfVxuICAgIHNldFN0YXR1cygnY2xvc2UnKTtcbiAgfSwgW29wZW4sIGZsb2F0aW5nXSk7XG4gIHJldHVybiB7XG4gICAgaXNNb3VudGVkLFxuICAgIHN0YXR1c1xuICB9O1xufVxuLyoqXG4gKiBQcm92aWRlcyBzdHlsZXMgdG8gYXBwbHkgQ1NTIHRyYW5zaXRpb25zIHRvIGEgZmxvYXRpbmcgZWxlbWVudCwgY29ycmVjdGx5XG4gKiBoYW5kbGluZyBwbGFjZW1lbnQtYXdhcmUgdHJhbnNpdGlvbnMuIFdyYXBwZXIgYXJvdW5kIGB1c2VUcmFuc2l0aW9uU3RhdHVzYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VUcmFuc2l0aW9uI3VzZXRyYW5zaXRpb25zdHlsZXNcbiAqL1xuZnVuY3Rpb24gdXNlVHJhbnNpdGlvblN0eWxlcyhjb250ZXh0LCBwcm9wcykge1xuICBpZiAocHJvcHMgPT09IHZvaWQgMCkge1xuICAgIHByb3BzID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIGluaXRpYWw6IHVuc3RhYmxlX2luaXRpYWwgPSB7XG4gICAgICBvcGFjaXR5OiAwXG4gICAgfSxcbiAgICBvcGVuOiB1bnN0YWJsZV9vcGVuLFxuICAgIGNsb3NlOiB1bnN0YWJsZV9jbG9zZSxcbiAgICBjb21tb246IHVuc3RhYmxlX2NvbW1vbixcbiAgICBkdXJhdGlvbiA9IDI1MFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHBsYWNlbWVudCA9IGNvbnRleHQucGxhY2VtZW50O1xuICBjb25zdCBzaWRlID0gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG4gIGNvbnN0IGZuQXJncyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBzaWRlLFxuICAgIHBsYWNlbWVudFxuICB9KSwgW3NpZGUsIHBsYWNlbWVudF0pO1xuICBjb25zdCBpc051bWJlckR1cmF0aW9uID0gdHlwZW9mIGR1cmF0aW9uID09PSAnbnVtYmVyJztcbiAgY29uc3Qgb3BlbkR1cmF0aW9uID0gKGlzTnVtYmVyRHVyYXRpb24gPyBkdXJhdGlvbiA6IGR1cmF0aW9uLm9wZW4pIHx8IDA7XG4gIGNvbnN0IGNsb3NlRHVyYXRpb24gPSAoaXNOdW1iZXJEdXJhdGlvbiA/IGR1cmF0aW9uIDogZHVyYXRpb24uY2xvc2UpIHx8IDA7XG4gIGNvbnN0IFtzdHlsZXMsIHNldFN0eWxlc10gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PiAoe1xuICAgIC4uLmV4ZWNXaXRoQXJnc09yUmV0dXJuKHVuc3RhYmxlX2NvbW1vbiwgZm5BcmdzKSxcbiAgICAuLi5leGVjV2l0aEFyZ3NPclJldHVybih1bnN0YWJsZV9pbml0aWFsLCBmbkFyZ3MpXG4gIH0pKTtcbiAgY29uc3Qge1xuICAgIGlzTW91bnRlZCxcbiAgICBzdGF0dXNcbiAgfSA9IHVzZVRyYW5zaXRpb25TdGF0dXMoY29udGV4dCwge1xuICAgIGR1cmF0aW9uXG4gIH0pO1xuICBjb25zdCBpbml0aWFsUmVmID0gdXNlTGF0ZXN0UmVmKHVuc3RhYmxlX2luaXRpYWwpO1xuICBjb25zdCBvcGVuUmVmID0gdXNlTGF0ZXN0UmVmKHVuc3RhYmxlX29wZW4pO1xuICBjb25zdCBjbG9zZVJlZiA9IHVzZUxhdGVzdFJlZih1bnN0YWJsZV9jbG9zZSk7XG4gIGNvbnN0IGNvbW1vblJlZiA9IHVzZUxhdGVzdFJlZih1bnN0YWJsZV9jb21tb24pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFN0eWxlcyA9IGV4ZWNXaXRoQXJnc09yUmV0dXJuKGluaXRpYWxSZWYuY3VycmVudCwgZm5BcmdzKTtcbiAgICBjb25zdCBjbG9zZVN0eWxlcyA9IGV4ZWNXaXRoQXJnc09yUmV0dXJuKGNsb3NlUmVmLmN1cnJlbnQsIGZuQXJncyk7XG4gICAgY29uc3QgY29tbW9uU3R5bGVzID0gZXhlY1dpdGhBcmdzT3JSZXR1cm4oY29tbW9uUmVmLmN1cnJlbnQsIGZuQXJncyk7XG4gICAgY29uc3Qgb3BlblN0eWxlcyA9IGV4ZWNXaXRoQXJnc09yUmV0dXJuKG9wZW5SZWYuY3VycmVudCwgZm5BcmdzKSB8fCBPYmplY3Qua2V5cyhpbml0aWFsU3R5bGVzKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICBhY2Nba2V5XSA9ICcnO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gICAgaWYgKHN0YXR1cyA9PT0gJ2luaXRpYWwnKSB7XG4gICAgICBzZXRTdHlsZXMoc3R5bGVzID0+ICh7XG4gICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0eTogc3R5bGVzLnRyYW5zaXRpb25Qcm9wZXJ0eSxcbiAgICAgICAgLi4uY29tbW9uU3R5bGVzLFxuICAgICAgICAuLi5pbml0aWFsU3R5bGVzXG4gICAgICB9KSk7XG4gICAgfVxuICAgIGlmIChzdGF0dXMgPT09ICdvcGVuJykge1xuICAgICAgc2V0U3R5bGVzKHtcbiAgICAgICAgdHJhbnNpdGlvblByb3BlcnR5OiBPYmplY3Qua2V5cyhvcGVuU3R5bGVzKS5tYXAoY2FtZWxDYXNlVG9LZWJhYkNhc2UpLmpvaW4oJywnKSxcbiAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uOiBvcGVuRHVyYXRpb24gKyBcIm1zXCIsXG4gICAgICAgIC4uLmNvbW1vblN0eWxlcyxcbiAgICAgICAgLi4ub3BlblN0eWxlc1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChzdGF0dXMgPT09ICdjbG9zZScpIHtcbiAgICAgIGNvbnN0IHN0eWxlcyA9IGNsb3NlU3R5bGVzIHx8IGluaXRpYWxTdHlsZXM7XG4gICAgICBzZXRTdHlsZXMoe1xuICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHk6IE9iamVjdC5rZXlzKHN0eWxlcykubWFwKGNhbWVsQ2FzZVRvS2ViYWJDYXNlKS5qb2luKCcsJyksXG4gICAgICAgIHRyYW5zaXRpb25EdXJhdGlvbjogY2xvc2VEdXJhdGlvbiArIFwibXNcIixcbiAgICAgICAgLi4uY29tbW9uU3R5bGVzLFxuICAgICAgICAuLi5zdHlsZXNcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2Nsb3NlRHVyYXRpb24sIGNsb3NlUmVmLCBpbml0aWFsUmVmLCBvcGVuUmVmLCBjb21tb25SZWYsIG9wZW5EdXJhdGlvbiwgc3RhdHVzLCBmbkFyZ3NdKTtcbiAgcmV0dXJuIHtcbiAgICBpc01vdW50ZWQsXG4gICAgc3R5bGVzXG4gIH07XG59XG5cbi8qKlxuICogUHJvdmlkZXMgYSBtYXRjaGluZyBjYWxsYmFjayB0aGF0IGNhbiBiZSB1c2VkIHRvIGZvY3VzIGFuIGl0ZW0gYXMgdGhlIHVzZXJcbiAqIHR5cGVzLCBvZnRlbiB1c2VkIGluIHRhbmRlbSB3aXRoIGB1c2VMaXN0TmF2aWdhdGlvbigpYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VUeXBlYWhlYWRcbiAqL1xuZnVuY3Rpb24gdXNlVHlwZWFoZWFkKGNvbnRleHQsIHByb3BzKSB7XG4gIHZhciBfcmVmO1xuICBjb25zdCB7XG4gICAgb3BlbixcbiAgICBkYXRhUmVmXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgbGlzdFJlZixcbiAgICBhY3RpdmVJbmRleCxcbiAgICBvbk1hdGNoOiB1bnN0YWJsZV9vbk1hdGNoLFxuICAgIG9uVHlwaW5nQ2hhbmdlOiB1bnN0YWJsZV9vblR5cGluZ0NoYW5nZSxcbiAgICBlbmFibGVkID0gdHJ1ZSxcbiAgICBmaW5kTWF0Y2ggPSBudWxsLFxuICAgIHJlc2V0TXMgPSA3NTAsXG4gICAgaWdub3JlS2V5cyA9IFtdLFxuICAgIHNlbGVjdGVkSW5kZXggPSBudWxsXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgdGltZW91dElkUmVmID0gUmVhY3QudXNlUmVmKCk7XG4gIGNvbnN0IHN0cmluZ1JlZiA9IFJlYWN0LnVzZVJlZignJyk7XG4gIGNvbnN0IHByZXZJbmRleFJlZiA9IFJlYWN0LnVzZVJlZigoX3JlZiA9IHNlbGVjdGVkSW5kZXggIT0gbnVsbCA/IHNlbGVjdGVkSW5kZXggOiBhY3RpdmVJbmRleCkgIT0gbnVsbCA/IF9yZWYgOiAtMSk7XG4gIGNvbnN0IG1hdGNoSW5kZXhSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IG9uTWF0Y2ggPSB1c2VFZmZlY3RFdmVudCh1bnN0YWJsZV9vbk1hdGNoKTtcbiAgY29uc3Qgb25UeXBpbmdDaGFuZ2UgPSB1c2VFZmZlY3RFdmVudCh1bnN0YWJsZV9vblR5cGluZ0NoYW5nZSk7XG4gIGNvbnN0IGZpbmRNYXRjaFJlZiA9IHVzZUxhdGVzdFJlZihmaW5kTWF0Y2gpO1xuICBjb25zdCBpZ25vcmVLZXlzUmVmID0gdXNlTGF0ZXN0UmVmKGlnbm9yZUtleXMpO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKG9wZW4pIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWRSZWYuY3VycmVudCk7XG4gICAgICBtYXRjaEluZGV4UmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgc3RyaW5nUmVmLmN1cnJlbnQgPSAnJztcbiAgICB9XG4gIH0sIFtvcGVuXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICAvLyBTeW5jIGFycm93IGtleSBuYXZpZ2F0aW9uIGJ1dCBub3QgdHlwZWFoZWFkIG5hdmlnYXRpb24uXG4gICAgaWYgKG9wZW4gJiYgc3RyaW5nUmVmLmN1cnJlbnQgPT09ICcnKSB7XG4gICAgICB2YXIgX3JlZjI7XG4gICAgICBwcmV2SW5kZXhSZWYuY3VycmVudCA9IChfcmVmMiA9IHNlbGVjdGVkSW5kZXggIT0gbnVsbCA/IHNlbGVjdGVkSW5kZXggOiBhY3RpdmVJbmRleCkgIT0gbnVsbCA/IF9yZWYyIDogLTE7XG4gICAgfVxuICB9LCBbb3Blbiwgc2VsZWN0ZWRJbmRleCwgYWN0aXZlSW5kZXhdKTtcbiAgY29uc3Qgc2V0VHlwaW5nQ2hhbmdlID0gdXNlRWZmZWN0RXZlbnQodmFsdWUgPT4ge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgaWYgKCFkYXRhUmVmLmN1cnJlbnQudHlwaW5nKSB7XG4gICAgICAgIGRhdGFSZWYuY3VycmVudC50eXBpbmcgPSB2YWx1ZTtcbiAgICAgICAgb25UeXBpbmdDaGFuZ2UodmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZGF0YVJlZi5jdXJyZW50LnR5cGluZykge1xuICAgICAgICBkYXRhUmVmLmN1cnJlbnQudHlwaW5nID0gdmFsdWU7XG4gICAgICAgIG9uVHlwaW5nQ2hhbmdlKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBjb25zdCBvbktleURvd24gPSB1c2VFZmZlY3RFdmVudChldmVudCA9PiB7XG4gICAgZnVuY3Rpb24gZ2V0TWF0Y2hpbmdJbmRleChsaXN0LCBvcmRlcmVkTGlzdCwgc3RyaW5nKSB7XG4gICAgICBjb25zdCBzdHIgPSBmaW5kTWF0Y2hSZWYuY3VycmVudCA/IGZpbmRNYXRjaFJlZi5jdXJyZW50KG9yZGVyZWRMaXN0LCBzdHJpbmcpIDogb3JkZXJlZExpc3QuZmluZCh0ZXh0ID0+ICh0ZXh0ID09IG51bGwgPyB2b2lkIDAgOiB0ZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5kZXhPZihzdHJpbmcudG9Mb2NhbGVMb3dlckNhc2UoKSkpID09PSAwKTtcbiAgICAgIHJldHVybiBzdHIgPyBsaXN0LmluZGV4T2Yoc3RyKSA6IC0xO1xuICAgIH1cbiAgICBjb25zdCBsaXN0Q29udGVudCA9IGxpc3RSZWYuY3VycmVudDtcbiAgICBpZiAoc3RyaW5nUmVmLmN1cnJlbnQubGVuZ3RoID4gMCAmJiBzdHJpbmdSZWYuY3VycmVudFswXSAhPT0gJyAnKSB7XG4gICAgICBpZiAoZ2V0TWF0Y2hpbmdJbmRleChsaXN0Q29udGVudCwgbGlzdENvbnRlbnQsIHN0cmluZ1JlZi5jdXJyZW50KSA9PT0gLTEpIHtcbiAgICAgICAgc2V0VHlwaW5nQ2hhbmdlKGZhbHNlKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgICAgc3RvcEV2ZW50KGV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGxpc3RDb250ZW50ID09IG51bGwgfHwgaWdub3JlS2V5c1JlZi5jdXJyZW50LmluY2x1ZGVzKGV2ZW50LmtleSkgfHxcbiAgICAvLyBDaGFyYWN0ZXIga2V5LlxuICAgIGV2ZW50LmtleS5sZW5ndGggIT09IDEgfHxcbiAgICAvLyBNb2RpZmllciBrZXkuXG4gICAgZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5IHx8IGV2ZW50LmFsdEtleSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAob3BlbiAmJiBldmVudC5rZXkgIT09ICcgJykge1xuICAgICAgc3RvcEV2ZW50KGV2ZW50KTtcbiAgICAgIHNldFR5cGluZ0NoYW5nZSh0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBCYWlsIG91dCBpZiB0aGUgbGlzdCBjb250YWlucyBhIHdvcmQgbGlrZSBcImxsYW1hXCIgb3IgXCJhYXJvblwiLiBUT0RPOlxuICAgIC8vIGFsbG93IGl0IGluIHRoaXMgY2FzZSwgdG9vLlxuICAgIGNvbnN0IGFsbG93UmFwaWRTdWNjZXNzaW9uT2ZGaXJzdExldHRlciA9IGxpc3RDb250ZW50LmV2ZXJ5KHRleHQgPT4ge1xuICAgICAgdmFyIF90ZXh0JCwgX3RleHQkMjtcbiAgICAgIHJldHVybiB0ZXh0ID8gKChfdGV4dCQgPSB0ZXh0WzBdKSA9PSBudWxsID8gdm9pZCAwIDogX3RleHQkLnRvTG9jYWxlTG93ZXJDYXNlKCkpICE9PSAoKF90ZXh0JDIgPSB0ZXh0WzFdKSA9PSBudWxsID8gdm9pZCAwIDogX3RleHQkMi50b0xvY2FsZUxvd2VyQ2FzZSgpKSA6IHRydWU7XG4gICAgfSk7XG5cbiAgICAvLyBBbGxvd3MgdGhlIHVzZXIgdG8gY3ljbGUgdGhyb3VnaCBpdGVtcyB0aGF0IHN0YXJ0IHdpdGggdGhlIHNhbWUgbGV0dGVyXG4gICAgLy8gaW4gcmFwaWQgc3VjY2Vzc2lvbi5cbiAgICBpZiAoYWxsb3dSYXBpZFN1Y2Nlc3Npb25PZkZpcnN0TGV0dGVyICYmIHN0cmluZ1JlZi5jdXJyZW50ID09PSBldmVudC5rZXkpIHtcbiAgICAgIHN0cmluZ1JlZi5jdXJyZW50ID0gJyc7XG4gICAgICBwcmV2SW5kZXhSZWYuY3VycmVudCA9IG1hdGNoSW5kZXhSZWYuY3VycmVudDtcbiAgICB9XG4gICAgc3RyaW5nUmVmLmN1cnJlbnQgKz0gZXZlbnQua2V5O1xuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWRSZWYuY3VycmVudCk7XG4gICAgdGltZW91dElkUmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHN0cmluZ1JlZi5jdXJyZW50ID0gJyc7XG4gICAgICBwcmV2SW5kZXhSZWYuY3VycmVudCA9IG1hdGNoSW5kZXhSZWYuY3VycmVudDtcbiAgICAgIHNldFR5cGluZ0NoYW5nZShmYWxzZSk7XG4gICAgfSwgcmVzZXRNcyk7XG4gICAgY29uc3QgcHJldkluZGV4ID0gcHJldkluZGV4UmVmLmN1cnJlbnQ7XG4gICAgY29uc3QgaW5kZXggPSBnZXRNYXRjaGluZ0luZGV4KGxpc3RDb250ZW50LCBbLi4ubGlzdENvbnRlbnQuc2xpY2UoKHByZXZJbmRleCB8fCAwKSArIDEpLCAuLi5saXN0Q29udGVudC5zbGljZSgwLCAocHJldkluZGV4IHx8IDApICsgMSldLCBzdHJpbmdSZWYuY3VycmVudCk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgb25NYXRjaChpbmRleCk7XG4gICAgICBtYXRjaEluZGV4UmVmLmN1cnJlbnQgPSBpbmRleDtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSAhPT0gJyAnKSB7XG4gICAgICBzdHJpbmdSZWYuY3VycmVudCA9ICcnO1xuICAgICAgc2V0VHlwaW5nQ2hhbmdlKGZhbHNlKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCByZWZlcmVuY2UgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgb25LZXlEb3duXG4gIH0pLCBbb25LZXlEb3duXSk7XG4gIGNvbnN0IGZsb2F0aW5nID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIG9uS2V5VXAoZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICAgICAgc2V0VHlwaW5nQ2hhbmdlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH0sIFtvbktleURvd24sIHNldFR5cGluZ0NoYW5nZV0pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiBlbmFibGVkID8ge1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZ1xuICB9IDoge30sIFtlbmFibGVkLCByZWZlcmVuY2UsIGZsb2F0aW5nXSk7XG59XG5cbmZ1bmN0aW9uIGdldEFyZ3NXaXRoQ3VzdG9tRmxvYXRpbmdIZWlnaHQoc3RhdGUsIGhlaWdodCkge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHJlY3RzOiB7XG4gICAgICAuLi5zdGF0ZS5yZWN0cyxcbiAgICAgIGZsb2F0aW5nOiB7XG4gICAgICAgIC4uLnN0YXRlLnJlY3RzLmZsb2F0aW5nLFxuICAgICAgICBoZWlnaHRcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG4vKipcbiAqIFBvc2l0aW9ucyB0aGUgZmxvYXRpbmcgZWxlbWVudCBzdWNoIHRoYXQgYW4gaW5uZXIgZWxlbWVudCBpbnNpZGUgb2YgaXQgaXNcbiAqIGFuY2hvcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9pbm5lclxuICovXG5jb25zdCBpbm5lciA9IHByb3BzID0+ICh7XG4gIG5hbWU6ICdpbm5lcicsXG4gIG9wdGlvbnM6IHByb3BzLFxuICBhc3luYyBmbihzdGF0ZSkge1xuICAgIGNvbnN0IHtcbiAgICAgIGxpc3RSZWYsXG4gICAgICBvdmVyZmxvd1JlZixcbiAgICAgIG9uRmFsbGJhY2tDaGFuZ2UsXG4gICAgICBvZmZzZXQ6IGlubmVyT2Zmc2V0ID0gMCxcbiAgICAgIGluZGV4ID0gMCxcbiAgICAgIG1pbkl0ZW1zVmlzaWJsZSA9IDQsXG4gICAgICByZWZlcmVuY2VPdmVyZmxvd1RocmVzaG9sZCA9IDAsXG4gICAgICBzY3JvbGxSZWYsXG4gICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICB9ID0gZXZhbHVhdGUocHJvcHMsIHN0YXRlKTtcbiAgICBjb25zdCB7XG4gICAgICByZWN0cyxcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIGZsb2F0aW5nXG4gICAgICB9XG4gICAgfSA9IHN0YXRlO1xuICAgIGNvbnN0IGl0ZW0gPSBsaXN0UmVmLmN1cnJlbnRbaW5kZXhdO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIGlmICghc3RhdGUucGxhY2VtZW50LnN0YXJ0c1dpdGgoJ2JvdHRvbScpKSB7XG4gICAgICAgIHdhcm4oJ2BwbGFjZW1lbnRgIHNpZGUgbXVzdCBiZSBcImJvdHRvbVwiIHdoZW4gdXNpbmcgdGhlIGBpbm5lcmAnLCAnbWlkZGxld2FyZS4nKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IG5leHRBcmdzID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICAuLi4oYXdhaXQgb2Zmc2V0KC1pdGVtLm9mZnNldFRvcCAtIGZsb2F0aW5nLmNsaWVudFRvcCAtIHJlY3RzLnJlZmVyZW5jZS5oZWlnaHQgLyAyIC0gaXRlbS5vZmZzZXRIZWlnaHQgLyAyIC0gaW5uZXJPZmZzZXQpLmZuKHN0YXRlKSlcbiAgICB9O1xuICAgIGNvbnN0IGVsID0gKHNjcm9sbFJlZiA9PSBudWxsID8gdm9pZCAwIDogc2Nyb2xsUmVmLmN1cnJlbnQpIHx8IGZsb2F0aW5nO1xuICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coZ2V0QXJnc1dpdGhDdXN0b21GbG9hdGluZ0hlaWdodChuZXh0QXJncywgZWwuc2Nyb2xsSGVpZ2h0KSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICBjb25zdCByZWZPdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KG5leHRBcmdzLCB7XG4gICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnMsXG4gICAgICBlbGVtZW50Q29udGV4dDogJ3JlZmVyZW5jZSdcbiAgICB9KTtcbiAgICBjb25zdCBkaWZmWSA9IE1hdGgubWF4KDAsIG92ZXJmbG93LnRvcCk7XG4gICAgY29uc3QgbmV4dFkgPSBuZXh0QXJncy55ICsgZGlmZlk7XG4gICAgY29uc3QgbWF4SGVpZ2h0ID0gTWF0aC5tYXgoMCwgZWwuc2Nyb2xsSGVpZ2h0IC0gZGlmZlkgLSBNYXRoLm1heCgwLCBvdmVyZmxvdy5ib3R0b20pKTtcbiAgICBlbC5zdHlsZS5tYXhIZWlnaHQgPSBtYXhIZWlnaHQgKyBcInB4XCI7XG4gICAgZWwuc2Nyb2xsVG9wID0gZGlmZlk7XG5cbiAgICAvLyBUaGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlLCBmYWxsYmFjayB0byBzdGFuZGFyZCBhbmNob3JlZCBwb3NpdGlvbmluZ1xuICAgIGlmIChvbkZhbGxiYWNrQ2hhbmdlKSB7XG4gICAgICBpZiAoZWwub2Zmc2V0SGVpZ2h0IDwgaXRlbS5vZmZzZXRIZWlnaHQgKiBNYXRoLm1pbihtaW5JdGVtc1Zpc2libGUsIGxpc3RSZWYuY3VycmVudC5sZW5ndGggLSAxKSAtIDEgfHwgcmVmT3ZlcmZsb3cudG9wID49IC1yZWZlcmVuY2VPdmVyZmxvd1RocmVzaG9sZCB8fCByZWZPdmVyZmxvdy5ib3R0b20gPj0gLXJlZmVyZW5jZU92ZXJmbG93VGhyZXNob2xkKSB7XG4gICAgICAgIFJlYWN0RE9NLmZsdXNoU3luYygoKSA9PiBvbkZhbGxiYWNrQ2hhbmdlKHRydWUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFJlYWN0RE9NLmZsdXNoU3luYygoKSA9PiBvbkZhbGxiYWNrQ2hhbmdlKGZhbHNlKSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChvdmVyZmxvd1JlZikge1xuICAgICAgb3ZlcmZsb3dSZWYuY3VycmVudCA9IGF3YWl0IGRldGVjdE92ZXJmbG93KGdldEFyZ3NXaXRoQ3VzdG9tRmxvYXRpbmdIZWlnaHQoe1xuICAgICAgICAuLi5uZXh0QXJncyxcbiAgICAgICAgeTogbmV4dFlcbiAgICAgIH0sIGVsLm9mZnNldEhlaWdodCksIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB5OiBuZXh0WVxuICAgIH07XG4gIH1cbn0pO1xuLyoqXG4gKiBDaGFuZ2VzIHRoZSBgaW5uZXJgIG1pZGRsZXdhcmUncyBgb2Zmc2V0YCB1cG9uIGEgYHdoZWVsYCBldmVudCB0b1xuICogZXhwYW5kIHRoZSBmbG9hdGluZyBlbGVtZW50J3MgaGVpZ2h0LCByZXZlYWxpbmcgbW9yZSBsaXN0IGl0ZW1zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubmVyXG4gKi9cbmZ1bmN0aW9uIHVzZUlubmVyT2Zmc2V0KGNvbnRleHQsIHByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICBvcGVuLFxuICAgIGVsZW1lbnRzXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgZW5hYmxlZCA9IHRydWUsXG4gICAgb3ZlcmZsb3dSZWYsXG4gICAgc2Nyb2xsUmVmLFxuICAgIG9uQ2hhbmdlOiB1bnN0YWJsZV9vbkNoYW5nZVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IG9uQ2hhbmdlID0gdXNlRWZmZWN0RXZlbnQodW5zdGFibGVfb25DaGFuZ2UpO1xuICBjb25zdCBjb250cm9sbGVkU2Nyb2xsaW5nUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgcHJldlNjcm9sbFRvcFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgaW5pdGlhbE92ZXJmbG93UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZW5hYmxlZCkgcmV0dXJuO1xuICAgIGZ1bmN0aW9uIG9uV2hlZWwoZSkge1xuICAgICAgaWYgKGUuY3RybEtleSB8fCAhZWwgfHwgb3ZlcmZsb3dSZWYuY3VycmVudCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRZID0gZS5kZWx0YVk7XG4gICAgICBjb25zdCBpc0F0VG9wID0gb3ZlcmZsb3dSZWYuY3VycmVudC50b3AgPj0gLTAuNTtcbiAgICAgIGNvbnN0IGlzQXRCb3R0b20gPSBvdmVyZmxvd1JlZi5jdXJyZW50LmJvdHRvbSA+PSAtMC41O1xuICAgICAgY29uc3QgcmVtYWluaW5nU2Nyb2xsID0gZWwuc2Nyb2xsSGVpZ2h0IC0gZWwuY2xpZW50SGVpZ2h0O1xuICAgICAgY29uc3Qgc2lnbiA9IGRZIDwgMCA/IC0xIDogMTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IGRZIDwgMCA/ICdtYXgnIDogJ21pbic7XG4gICAgICBpZiAoZWwuc2Nyb2xsSGVpZ2h0IDw9IGVsLmNsaWVudEhlaWdodCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIWlzQXRUb3AgJiYgZFkgPiAwIHx8ICFpc0F0Qm90dG9tICYmIGRZIDwgMCkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIFJlYWN0RE9NLmZsdXNoU3luYygoKSA9PiB7XG4gICAgICAgICAgb25DaGFuZ2UoZCA9PiBkICsgTWF0aFttZXRob2RdKGRZLCByZW1haW5pbmdTY3JvbGwgKiBzaWduKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICgvZmlyZWZveC9pLnRlc3QoZ2V0VXNlckFnZW50KCkpKSB7XG4gICAgICAgIC8vIE5lZWRlZCB0byBwcm9wYWdhdGUgc2Nyb2xsaW5nIGR1cmluZyBtb21lbnR1bSBzY3JvbGxpbmcgcGhhc2Ugb25jZVxuICAgICAgICAvLyBpdCBnZXRzIGxpbWl0ZWQgYnkgdGhlIGJvdW5kYXJ5LiBVWCBpbXByb3ZlbWVudCwgbm90IGNyaXRpY2FsLlxuICAgICAgICBlbC5zY3JvbGxUb3AgKz0gZFk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGVsID0gKHNjcm9sbFJlZiA9PSBudWxsID8gdm9pZCAwIDogc2Nyb2xsUmVmLmN1cnJlbnQpIHx8IGVsZW1lbnRzLmZsb2F0aW5nO1xuICAgIGlmIChvcGVuICYmIGVsKSB7XG4gICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIG9uV2hlZWwpO1xuXG4gICAgICAvLyBXYWl0IGZvciB0aGUgcG9zaXRpb24gdG8gYmUgcmVhZHkuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBwcmV2U2Nyb2xsVG9wUmVmLmN1cnJlbnQgPSBlbC5zY3JvbGxUb3A7XG4gICAgICAgIGlmIChvdmVyZmxvd1JlZi5jdXJyZW50ICE9IG51bGwpIHtcbiAgICAgICAgICBpbml0aWFsT3ZlcmZsb3dSZWYuY3VycmVudCA9IHtcbiAgICAgICAgICAgIC4uLm92ZXJmbG93UmVmLmN1cnJlbnRcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHByZXZTY3JvbGxUb3BSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgIGluaXRpYWxPdmVyZmxvd1JlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBvbldoZWVsKTtcbiAgICAgIH07XG4gICAgfVxuICB9LCBbZW5hYmxlZCwgb3BlbiwgZWxlbWVudHMuZmxvYXRpbmcsIG92ZXJmbG93UmVmLCBzY3JvbGxSZWYsIG9uQ2hhbmdlXSk7XG4gIGNvbnN0IGZsb2F0aW5nID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIG9uS2V5RG93bigpIHtcbiAgICAgIGNvbnRyb2xsZWRTY3JvbGxpbmdSZWYuY3VycmVudCA9IHRydWU7XG4gICAgfSxcbiAgICBvbldoZWVsKCkge1xuICAgICAgY29udHJvbGxlZFNjcm9sbGluZ1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgfSxcbiAgICBvblBvaW50ZXJNb3ZlKCkge1xuICAgICAgY29udHJvbGxlZFNjcm9sbGluZ1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgfSxcbiAgICBvblNjcm9sbCgpIHtcbiAgICAgIGNvbnN0IGVsID0gKHNjcm9sbFJlZiA9PSBudWxsID8gdm9pZCAwIDogc2Nyb2xsUmVmLmN1cnJlbnQpIHx8IGVsZW1lbnRzLmZsb2F0aW5nO1xuICAgICAgaWYgKCFvdmVyZmxvd1JlZi5jdXJyZW50IHx8ICFlbCB8fCAhY29udHJvbGxlZFNjcm9sbGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChwcmV2U2Nyb2xsVG9wUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsRGlmZiA9IGVsLnNjcm9sbFRvcCAtIHByZXZTY3JvbGxUb3BSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKG92ZXJmbG93UmVmLmN1cnJlbnQuYm90dG9tIDwgLTAuNSAmJiBzY3JvbGxEaWZmIDwgLTEgfHwgb3ZlcmZsb3dSZWYuY3VycmVudC50b3AgPCAtMC41ICYmIHNjcm9sbERpZmYgPiAxKSB7XG4gICAgICAgICAgUmVhY3RET00uZmx1c2hTeW5jKCgpID0+IG9uQ2hhbmdlKGQgPT4gZCArIHNjcm9sbERpZmYpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBbRmlyZWZveF0gV2FpdCBmb3IgdGhlIGhlaWdodCBjaGFuZ2UgdG8gaGF2ZSBiZWVuIGFwcGxpZWQuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBwcmV2U2Nyb2xsVG9wUmVmLmN1cnJlbnQgPSBlbC5zY3JvbGxUb3A7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pLCBbZWxlbWVudHMuZmxvYXRpbmcsIG9uQ2hhbmdlLCBvdmVyZmxvd1JlZiwgc2Nyb2xsUmVmXSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IGVuYWJsZWQgPyB7XG4gICAgZmxvYXRpbmdcbiAgfSA6IHt9LCBbZW5hYmxlZCwgZmxvYXRpbmddKTtcbn1cblxuZnVuY3Rpb24gaXNQb2ludEluUG9seWdvbihwb2ludCwgcG9seWdvbikge1xuICBjb25zdCBbeCwgeV0gPSBwb2ludDtcbiAgbGV0IGlzSW5zaWRlID0gZmFsc2U7XG4gIGNvbnN0IGxlbmd0aCA9IHBvbHlnb24ubGVuZ3RoO1xuICBmb3IgKGxldCBpID0gMCwgaiA9IGxlbmd0aCAtIDE7IGkgPCBsZW5ndGg7IGogPSBpKyspIHtcbiAgICBjb25zdCBbeGksIHlpXSA9IHBvbHlnb25baV0gfHwgWzAsIDBdO1xuICAgIGNvbnN0IFt4aiwgeWpdID0gcG9seWdvbltqXSB8fCBbMCwgMF07XG4gICAgY29uc3QgaW50ZXJzZWN0ID0geWkgPj0geSAhPT0geWogPj0geSAmJiB4IDw9ICh4aiAtIHhpKSAqICh5IC0geWkpIC8gKHlqIC0geWkpICsgeGk7XG4gICAgaWYgKGludGVyc2VjdCkge1xuICAgICAgaXNJbnNpZGUgPSAhaXNJbnNpZGU7XG4gICAgfVxuICB9XG4gIHJldHVybiBpc0luc2lkZTtcbn1cbmZ1bmN0aW9uIGlzSW5zaWRlKHBvaW50LCByZWN0KSB7XG4gIHJldHVybiBwb2ludFswXSA+PSByZWN0LnggJiYgcG9pbnRbMF0gPD0gcmVjdC54ICsgcmVjdC53aWR0aCAmJiBwb2ludFsxXSA+PSByZWN0LnkgJiYgcG9pbnRbMV0gPD0gcmVjdC55ICsgcmVjdC5oZWlnaHQ7XG59XG4vKipcbiAqIEdlbmVyYXRlcyBhIHNhZmUgcG9seWdvbiBhcmVhIHRoYXQgdGhlIHVzZXIgY2FuIHRyYXZlcnNlIHdpdGhvdXQgY2xvc2luZyB0aGVcbiAqIGZsb2F0aW5nIGVsZW1lbnQgb25jZSBsZWF2aW5nIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VIb3ZlciNzYWZlcG9seWdvblxuICovXG5mdW5jdGlvbiBzYWZlUG9seWdvbihvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIGJ1ZmZlciA9IDAuNSxcbiAgICBibG9ja1BvaW50ZXJFdmVudHMgPSBmYWxzZSxcbiAgICByZXF1aXJlSW50ZW50ID0gdHJ1ZVxuICB9ID0gb3B0aW9ucztcbiAgbGV0IHRpbWVvdXRJZDtcbiAgbGV0IGhhc0xhbmRlZCA9IGZhbHNlO1xuICBsZXQgbGFzdFggPSBudWxsO1xuICBsZXQgbGFzdFkgPSBudWxsO1xuICBsZXQgbGFzdEN1cnNvclRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgZnVuY3Rpb24gZ2V0Q3Vyc29yU3BlZWQoeCwgeSkge1xuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgY29uc3QgZWxhcHNlZFRpbWUgPSBjdXJyZW50VGltZSAtIGxhc3RDdXJzb3JUaW1lO1xuICAgIGlmIChsYXN0WCA9PT0gbnVsbCB8fCBsYXN0WSA9PT0gbnVsbCB8fCBlbGFwc2VkVGltZSA9PT0gMCkge1xuICAgICAgbGFzdFggPSB4O1xuICAgICAgbGFzdFkgPSB5O1xuICAgICAgbGFzdEN1cnNvclRpbWUgPSBjdXJyZW50VGltZTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBkZWx0YVggPSB4IC0gbGFzdFg7XG4gICAgY29uc3QgZGVsdGFZID0geSAtIGxhc3RZO1xuICAgIGNvbnN0IGRpc3RhbmNlID0gTWF0aC5zcXJ0KGRlbHRhWCAqIGRlbHRhWCArIGRlbHRhWSAqIGRlbHRhWSk7XG4gICAgY29uc3Qgc3BlZWQgPSBkaXN0YW5jZSAvIGVsYXBzZWRUaW1lOyAvLyBweCAvIG1zXG5cbiAgICBsYXN0WCA9IHg7XG4gICAgbGFzdFkgPSB5O1xuICAgIGxhc3RDdXJzb3JUaW1lID0gY3VycmVudFRpbWU7XG4gICAgcmV0dXJuIHNwZWVkO1xuICB9XG4gIGNvbnN0IGZuID0gX3JlZiA9PiB7XG4gICAgbGV0IHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgcGxhY2VtZW50LFxuICAgICAgZWxlbWVudHMsXG4gICAgICBvbkNsb3NlLFxuICAgICAgbm9kZUlkLFxuICAgICAgdHJlZVxuICAgIH0gPSBfcmVmO1xuICAgIHJldHVybiBmdW5jdGlvbiBvbk1vdXNlTW92ZShldmVudCkge1xuICAgICAgZnVuY3Rpb24gY2xvc2UoKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICBvbkNsb3NlKCk7XG4gICAgICB9XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgIGlmICghZWxlbWVudHMuZG9tUmVmZXJlbmNlIHx8ICFlbGVtZW50cy5mbG9hdGluZyB8fCBwbGFjZW1lbnQgPT0gbnVsbCB8fCB4ID09IG51bGwgfHwgeSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY2xpZW50WCxcbiAgICAgICAgY2xpZW50WVxuICAgICAgfSA9IGV2ZW50O1xuICAgICAgY29uc3QgY2xpZW50UG9pbnQgPSBbY2xpZW50WCwgY2xpZW50WV07XG4gICAgICBjb25zdCB0YXJnZXQgPSBnZXRUYXJnZXQoZXZlbnQpO1xuICAgICAgY29uc3QgaXNMZWF2ZSA9IGV2ZW50LnR5cGUgPT09ICdtb3VzZWxlYXZlJztcbiAgICAgIGNvbnN0IGlzT3ZlckZsb2F0aW5nRWwgPSBjb250YWlucyhlbGVtZW50cy5mbG9hdGluZywgdGFyZ2V0KTtcbiAgICAgIGNvbnN0IGlzT3ZlclJlZmVyZW5jZUVsID0gY29udGFpbnMoZWxlbWVudHMuZG9tUmVmZXJlbmNlLCB0YXJnZXQpO1xuICAgICAgY29uc3QgcmVmUmVjdCA9IGVsZW1lbnRzLmRvbVJlZmVyZW5jZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHJlY3QgPSBlbGVtZW50cy5mbG9hdGluZy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHNpZGUgPSBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbiAgICAgIGNvbnN0IGN1cnNvckxlYXZlRnJvbVJpZ2h0ID0geCA+IHJlY3QucmlnaHQgLSByZWN0LndpZHRoIC8gMjtcbiAgICAgIGNvbnN0IGN1cnNvckxlYXZlRnJvbUJvdHRvbSA9IHkgPiByZWN0LmJvdHRvbSAtIHJlY3QuaGVpZ2h0IC8gMjtcbiAgICAgIGNvbnN0IGlzT3ZlclJlZmVyZW5jZVJlY3QgPSBpc0luc2lkZShjbGllbnRQb2ludCwgcmVmUmVjdCk7XG4gICAgICBjb25zdCBpc0Zsb2F0aW5nV2lkZXIgPSByZWN0LndpZHRoID4gcmVmUmVjdC53aWR0aDtcbiAgICAgIGNvbnN0IGlzRmxvYXRpbmdUYWxsZXIgPSByZWN0LmhlaWdodCA+IHJlZlJlY3QuaGVpZ2h0O1xuICAgICAgY29uc3QgbGVmdCA9IChpc0Zsb2F0aW5nV2lkZXIgPyByZWZSZWN0IDogcmVjdCkubGVmdDtcbiAgICAgIGNvbnN0IHJpZ2h0ID0gKGlzRmxvYXRpbmdXaWRlciA/IHJlZlJlY3QgOiByZWN0KS5yaWdodDtcbiAgICAgIGNvbnN0IHRvcCA9IChpc0Zsb2F0aW5nVGFsbGVyID8gcmVmUmVjdCA6IHJlY3QpLnRvcDtcbiAgICAgIGNvbnN0IGJvdHRvbSA9IChpc0Zsb2F0aW5nVGFsbGVyID8gcmVmUmVjdCA6IHJlY3QpLmJvdHRvbTtcbiAgICAgIGlmIChpc092ZXJGbG9hdGluZ0VsKSB7XG4gICAgICAgIGhhc0xhbmRlZCA9IHRydWU7XG4gICAgICAgIGlmICghaXNMZWF2ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzT3ZlclJlZmVyZW5jZUVsKSB7XG4gICAgICAgIGhhc0xhbmRlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGlzT3ZlclJlZmVyZW5jZUVsICYmICFpc0xlYXZlKSB7XG4gICAgICAgIGhhc0xhbmRlZCA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gUHJldmVudCBvdmVybGFwcGluZyBmbG9hdGluZyBlbGVtZW50IGZyb20gYmVpbmcgc3R1Y2sgaW4gYW4gb3Blbi1jbG9zZVxuICAgICAgLy8gbG9vcDogaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8xOTEwXG4gICAgICBpZiAoaXNMZWF2ZSAmJiBpc0VsZW1lbnQoZXZlbnQucmVsYXRlZFRhcmdldCkgJiYgY29udGFpbnMoZWxlbWVudHMuZmxvYXRpbmcsIGV2ZW50LnJlbGF0ZWRUYXJnZXQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgYW55IG5lc3RlZCBjaGlsZCBpcyBvcGVuLCBhYm9ydC5cbiAgICAgIGlmICh0cmVlICYmIGdldENoaWxkcmVuKHRyZWUubm9kZXNSZWYuY3VycmVudCwgbm9kZUlkKS5zb21lKF9yZWYyID0+IHtcbiAgICAgICAgbGV0IHtcbiAgICAgICAgICBjb250ZXh0XG4gICAgICAgIH0gPSBfcmVmMjtcbiAgICAgICAgcmV0dXJuIGNvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbnRleHQub3BlbjtcbiAgICAgIH0pKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlIHBvaW50ZXIgaXMgbGVhdmluZyBmcm9tIHRoZSBvcHBvc2l0ZSBzaWRlLCB0aGUgXCJidWZmZXJcIiBsb2dpY1xuICAgICAgLy8gY3JlYXRlcyBhIHBvaW50IHdoZXJlIHRoZSBmbG9hdGluZyBlbGVtZW50IHJlbWFpbnMgb3BlbiwgYnV0IHNob3VsZCBiZVxuICAgICAgLy8gaWdub3JlZC5cbiAgICAgIC8vIEEgY29uc3RhbnQgb2YgMSBoYW5kbGVzIGZsb2F0aW5nIHBvaW50IHJvdW5kaW5nIGVycm9ycy5cbiAgICAgIGlmIChzaWRlID09PSAndG9wJyAmJiB5ID49IHJlZlJlY3QuYm90dG9tIC0gMSB8fCBzaWRlID09PSAnYm90dG9tJyAmJiB5IDw9IHJlZlJlY3QudG9wICsgMSB8fCBzaWRlID09PSAnbGVmdCcgJiYgeCA+PSByZWZSZWN0LnJpZ2h0IC0gMSB8fCBzaWRlID09PSAncmlnaHQnICYmIHggPD0gcmVmUmVjdC5sZWZ0ICsgMSkge1xuICAgICAgICByZXR1cm4gY2xvc2UoKTtcbiAgICAgIH1cblxuICAgICAgLy8gSWdub3JlIHdoZW4gdGhlIGN1cnNvciBpcyB3aXRoaW4gdGhlIHJlY3Rhbmd1bGFyIHRyb3VnaCBiZXR3ZWVuIHRoZVxuICAgICAgLy8gdHdvIGVsZW1lbnRzLiBTaW5jZSB0aGUgdHJpYW5nbGUgaXMgY3JlYXRlZCBmcm9tIHRoZSBjdXJzb3IgcG9pbnQsXG4gICAgICAvLyB3aGljaCBjYW4gc3RhcnQgYmV5b25kIHRoZSByZWYgZWxlbWVudCdzIGVkZ2UsIHRyYXZlcnNpbmcgYmFjayBhbmRcbiAgICAgIC8vIGZvcnRoIGZyb20gdGhlIHJlZiB0byB0aGUgZmxvYXRpbmcgZWxlbWVudCBjYW4gY2F1c2UgaXQgdG8gY2xvc2UuIFRoaXNcbiAgICAgIC8vIGVuc3VyZXMgaXQgYWx3YXlzIHJlbWFpbnMgb3BlbiBpbiB0aGF0IGNhc2UuXG4gICAgICBsZXQgcmVjdFBvbHkgPSBbXTtcbiAgICAgIHN3aXRjaCAoc2lkZSkge1xuICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgIHJlY3RQb2x5ID0gW1tsZWZ0LCByZWZSZWN0LnRvcCArIDFdLCBbbGVmdCwgcmVjdC5ib3R0b20gLSAxXSwgW3JpZ2h0LCByZWN0LmJvdHRvbSAtIDFdLCBbcmlnaHQsIHJlZlJlY3QudG9wICsgMV1dO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgIHJlY3RQb2x5ID0gW1tsZWZ0LCByZWN0LnRvcCArIDFdLCBbbGVmdCwgcmVmUmVjdC5ib3R0b20gLSAxXSwgW3JpZ2h0LCByZWZSZWN0LmJvdHRvbSAtIDFdLCBbcmlnaHQsIHJlY3QudG9wICsgMV1dO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICByZWN0UG9seSA9IFtbcmVjdC5yaWdodCAtIDEsIGJvdHRvbV0sIFtyZWN0LnJpZ2h0IC0gMSwgdG9wXSwgW3JlZlJlY3QubGVmdCArIDEsIHRvcF0sIFtyZWZSZWN0LmxlZnQgKyAxLCBib3R0b21dXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgIHJlY3RQb2x5ID0gW1tyZWZSZWN0LnJpZ2h0IC0gMSwgYm90dG9tXSwgW3JlZlJlY3QucmlnaHQgLSAxLCB0b3BdLCBbcmVjdC5sZWZ0ICsgMSwgdG9wXSwgW3JlY3QubGVmdCArIDEsIGJvdHRvbV1dO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gZ2V0UG9seWdvbihfcmVmMykge1xuICAgICAgICBsZXQgW3gsIHldID0gX3JlZjM7XG4gICAgICAgIHN3aXRjaCAoc2lkZSkge1xuICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvaW50T25lID0gW2lzRmxvYXRpbmdXaWRlciA/IHggKyBidWZmZXIgLyAyIDogY3Vyc29yTGVhdmVGcm9tUmlnaHQgPyB4ICsgYnVmZmVyICogNCA6IHggLSBidWZmZXIgKiA0LCB5ICsgYnVmZmVyICsgMV07XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvaW50VHdvID0gW2lzRmxvYXRpbmdXaWRlciA/IHggLSBidWZmZXIgLyAyIDogY3Vyc29yTGVhdmVGcm9tUmlnaHQgPyB4ICsgYnVmZmVyICogNCA6IHggLSBidWZmZXIgKiA0LCB5ICsgYnVmZmVyICsgMV07XG4gICAgICAgICAgICAgIGNvbnN0IGNvbW1vblBvaW50cyA9IFtbcmVjdC5sZWZ0LCBjdXJzb3JMZWF2ZUZyb21SaWdodCA/IHJlY3QuYm90dG9tIC0gYnVmZmVyIDogaXNGbG9hdGluZ1dpZGVyID8gcmVjdC5ib3R0b20gLSBidWZmZXIgOiByZWN0LnRvcF0sIFtyZWN0LnJpZ2h0LCBjdXJzb3JMZWF2ZUZyb21SaWdodCA/IGlzRmxvYXRpbmdXaWRlciA/IHJlY3QuYm90dG9tIC0gYnVmZmVyIDogcmVjdC50b3AgOiByZWN0LmJvdHRvbSAtIGJ1ZmZlcl1dO1xuICAgICAgICAgICAgICByZXR1cm4gW2N1cnNvclBvaW50T25lLCBjdXJzb3JQb2ludFR3bywgLi4uY29tbW9uUG9pbnRzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb25zdCBjdXJzb3JQb2ludE9uZSA9IFtpc0Zsb2F0aW5nV2lkZXIgPyB4ICsgYnVmZmVyIC8gMiA6IGN1cnNvckxlYXZlRnJvbVJpZ2h0ID8geCArIGJ1ZmZlciAqIDQgOiB4IC0gYnVmZmVyICogNCwgeSAtIGJ1ZmZlcl07XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvaW50VHdvID0gW2lzRmxvYXRpbmdXaWRlciA/IHggLSBidWZmZXIgLyAyIDogY3Vyc29yTGVhdmVGcm9tUmlnaHQgPyB4ICsgYnVmZmVyICogNCA6IHggLSBidWZmZXIgKiA0LCB5IC0gYnVmZmVyXTtcbiAgICAgICAgICAgICAgY29uc3QgY29tbW9uUG9pbnRzID0gW1tyZWN0LmxlZnQsIGN1cnNvckxlYXZlRnJvbVJpZ2h0ID8gcmVjdC50b3AgKyBidWZmZXIgOiBpc0Zsb2F0aW5nV2lkZXIgPyByZWN0LnRvcCArIGJ1ZmZlciA6IHJlY3QuYm90dG9tXSwgW3JlY3QucmlnaHQsIGN1cnNvckxlYXZlRnJvbVJpZ2h0ID8gaXNGbG9hdGluZ1dpZGVyID8gcmVjdC50b3AgKyBidWZmZXIgOiByZWN0LmJvdHRvbSA6IHJlY3QudG9wICsgYnVmZmVyXV07XG4gICAgICAgICAgICAgIHJldHVybiBbY3Vyc29yUG9pbnRPbmUsIGN1cnNvclBvaW50VHdvLCAuLi5jb21tb25Qb2ludHNdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb25zdCBjdXJzb3JQb2ludE9uZSA9IFt4ICsgYnVmZmVyICsgMSwgaXNGbG9hdGluZ1RhbGxlciA/IHkgKyBidWZmZXIgLyAyIDogY3Vyc29yTGVhdmVGcm9tQm90dG9tID8geSArIGJ1ZmZlciAqIDQgOiB5IC0gYnVmZmVyICogNF07XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvaW50VHdvID0gW3ggKyBidWZmZXIgKyAxLCBpc0Zsb2F0aW5nVGFsbGVyID8geSAtIGJ1ZmZlciAvIDIgOiBjdXJzb3JMZWF2ZUZyb21Cb3R0b20gPyB5ICsgYnVmZmVyICogNCA6IHkgLSBidWZmZXIgKiA0XTtcbiAgICAgICAgICAgICAgY29uc3QgY29tbW9uUG9pbnRzID0gW1tjdXJzb3JMZWF2ZUZyb21Cb3R0b20gPyByZWN0LnJpZ2h0IC0gYnVmZmVyIDogaXNGbG9hdGluZ1RhbGxlciA/IHJlY3QucmlnaHQgLSBidWZmZXIgOiByZWN0LmxlZnQsIHJlY3QudG9wXSwgW2N1cnNvckxlYXZlRnJvbUJvdHRvbSA/IGlzRmxvYXRpbmdUYWxsZXIgPyByZWN0LnJpZ2h0IC0gYnVmZmVyIDogcmVjdC5sZWZ0IDogcmVjdC5yaWdodCAtIGJ1ZmZlciwgcmVjdC5ib3R0b21dXTtcbiAgICAgICAgICAgICAgcmV0dXJuIFsuLi5jb21tb25Qb2ludHMsIGN1cnNvclBvaW50T25lLCBjdXJzb3JQb2ludFR3b107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb25zdCBjdXJzb3JQb2ludE9uZSA9IFt4IC0gYnVmZmVyLCBpc0Zsb2F0aW5nVGFsbGVyID8geSArIGJ1ZmZlciAvIDIgOiBjdXJzb3JMZWF2ZUZyb21Cb3R0b20gPyB5ICsgYnVmZmVyICogNCA6IHkgLSBidWZmZXIgKiA0XTtcbiAgICAgICAgICAgICAgY29uc3QgY3Vyc29yUG9pbnRUd28gPSBbeCAtIGJ1ZmZlciwgaXNGbG9hdGluZ1RhbGxlciA/IHkgLSBidWZmZXIgLyAyIDogY3Vyc29yTGVhdmVGcm9tQm90dG9tID8geSArIGJ1ZmZlciAqIDQgOiB5IC0gYnVmZmVyICogNF07XG4gICAgICAgICAgICAgIGNvbnN0IGNvbW1vblBvaW50cyA9IFtbY3Vyc29yTGVhdmVGcm9tQm90dG9tID8gcmVjdC5sZWZ0ICsgYnVmZmVyIDogaXNGbG9hdGluZ1RhbGxlciA/IHJlY3QubGVmdCArIGJ1ZmZlciA6IHJlY3QucmlnaHQsIHJlY3QudG9wXSwgW2N1cnNvckxlYXZlRnJvbUJvdHRvbSA/IGlzRmxvYXRpbmdUYWxsZXIgPyByZWN0LmxlZnQgKyBidWZmZXIgOiByZWN0LnJpZ2h0IDogcmVjdC5sZWZ0ICsgYnVmZmVyLCByZWN0LmJvdHRvbV1dO1xuICAgICAgICAgICAgICByZXR1cm4gW2N1cnNvclBvaW50T25lLCBjdXJzb3JQb2ludFR3bywgLi4uY29tbW9uUG9pbnRzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzUG9pbnRJblBvbHlnb24oW2NsaWVudFgsIGNsaWVudFldLCByZWN0UG9seSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGhhc0xhbmRlZCAmJiAhaXNPdmVyUmVmZXJlbmNlUmVjdCkge1xuICAgICAgICByZXR1cm4gY2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNMZWF2ZSAmJiByZXF1aXJlSW50ZW50KSB7XG4gICAgICAgIGNvbnN0IGN1cnNvclNwZWVkID0gZ2V0Q3Vyc29yU3BlZWQoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XG4gICAgICAgIGNvbnN0IGN1cnNvclNwZWVkVGhyZXNob2xkID0gMC4xO1xuICAgICAgICBpZiAoY3Vyc29yU3BlZWQgIT09IG51bGwgJiYgY3Vyc29yU3BlZWQgPCBjdXJzb3JTcGVlZFRocmVzaG9sZCkge1xuICAgICAgICAgIHJldHVybiBjbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWlzUG9pbnRJblBvbHlnb24oW2NsaWVudFgsIGNsaWVudFldLCBnZXRQb2x5Z29uKFt4LCB5XSkpKSB7XG4gICAgICAgIGNsb3NlKCk7XG4gICAgICB9IGVsc2UgaWYgKCFoYXNMYW5kZWQgJiYgcmVxdWlyZUludGVudCkge1xuICAgICAgICB0aW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dChjbG9zZSwgNDApO1xuICAgICAgfVxuICAgIH07XG4gIH07XG4gIGZuLl9fb3B0aW9ucyA9IHtcbiAgICBibG9ja1BvaW50ZXJFdmVudHNcbiAgfTtcbiAgcmV0dXJuIGZuO1xufVxuXG5leHBvcnQgeyBDb21wb3NpdGUsIENvbXBvc2l0ZUl0ZW0sIEZsb2F0aW5nQXJyb3csIEZsb2F0aW5nRGVsYXlHcm91cCwgRmxvYXRpbmdGb2N1c01hbmFnZXIsIEZsb2F0aW5nTGlzdCwgRmxvYXRpbmdOb2RlLCBGbG9hdGluZ092ZXJsYXksIEZsb2F0aW5nUG9ydGFsLCBGbG9hdGluZ1RyZWUsIGlubmVyLCBzYWZlUG9seWdvbiwgdXNlQ2xpY2ssIHVzZUNsaWVudFBvaW50LCB1c2VEZWxheUdyb3VwLCB1c2VEZWxheUdyb3VwQ29udGV4dCwgdXNlRGlzbWlzcywgdXNlRmxvYXRpbmcsIHVzZUZsb2F0aW5nTm9kZUlkLCB1c2VGbG9hdGluZ1BhcmVudE5vZGVJZCwgdXNlRmxvYXRpbmdQb3J0YWxOb2RlLCB1c2VGbG9hdGluZ1Jvb3RDb250ZXh0LCB1c2VGbG9hdGluZ1RyZWUsIHVzZUZvY3VzLCB1c2VIb3ZlciwgdXNlSWQsIHVzZUlubmVyT2Zmc2V0LCB1c2VJbnRlcmFjdGlvbnMsIHVzZUxpc3RJdGVtLCB1c2VMaXN0TmF2aWdhdGlvbiwgdXNlTWVyZ2VSZWZzLCB1c2VSb2xlLCB1c2VUcmFuc2l0aW9uU3RhdHVzLCB1c2VUcmFuc2l0aW9uU3R5bGVzLCB1c2VUeXBlYWhlYWQgfTtcbiIsImltcG9ydCB7IG9mZnNldCwgYXV0b1BsYWNlbWVudCwgZmxpcCwgc2hpZnQsIGFycm93IH0gZnJvbSAnQGZsb2F0aW5nLXVpL3JlYWN0JztcblxuY29uc3QgZ2V0TWlkZGxld2FyZSA9ICh7XG4gIGFycm93UmVmLFxuICBwbGFjZW1lbnRcbn0pID0+IHtcbiAgY29uc3QgbWlkZGxld2FyZSA9IFtdO1xuICBtaWRkbGV3YXJlLnB1c2gob2Zmc2V0KDgpKTtcbiAgbWlkZGxld2FyZS5wdXNoKHBsYWNlbWVudCA9PT0gXCJhdXRvXCIgPyBhdXRvUGxhY2VtZW50KCkgOiBmbGlwKCkpO1xuICBtaWRkbGV3YXJlLnB1c2goc2hpZnQoeyBwYWRkaW5nOiA4IH0pKTtcbiAgaWYgKGFycm93UmVmPy5jdXJyZW50KSB7XG4gICAgbWlkZGxld2FyZS5wdXNoKGFycm93KHsgZWxlbWVudDogYXJyb3dSZWYuY3VycmVudCB9KSk7XG4gIH1cbiAgcmV0dXJuIG1pZGRsZXdhcmU7XG59O1xuY29uc3QgZ2V0UGxhY2VtZW50ID0gKHsgcGxhY2VtZW50IH0pID0+IHtcbiAgcmV0dXJuIHBsYWNlbWVudCA9PT0gXCJhdXRvXCIgPyB2b2lkIDAgOiBwbGFjZW1lbnQ7XG59O1xuY29uc3QgZ2V0QXJyb3dQbGFjZW1lbnQgPSAoeyBwbGFjZW1lbnQgfSkgPT4ge1xuICByZXR1cm4ge1xuICAgIHRvcDogXCJib3R0b21cIixcbiAgICByaWdodDogXCJsZWZ0XCIsXG4gICAgYm90dG9tOiBcInRvcFwiLFxuICAgIGxlZnQ6IFwicmlnaHRcIlxuICB9W3BsYWNlbWVudC5zcGxpdChcIi1cIilbMF1dO1xufTtcblxuZXhwb3J0IHsgZ2V0QXJyb3dQbGFjZW1lbnQsIGdldE1pZGRsZXdhcmUsIGdldFBsYWNlbWVudCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVscGVycy5tanMubWFwXG4iLCJpbXBvcnQgeyB1c2VGbG9hdGluZywgYXV0b1VwZGF0ZSwgdXNlSW50ZXJhY3Rpb25zLCB1c2VDbGljaywgdXNlSG92ZXIsIHNhZmVQb2x5Z29uLCB1c2VEaXNtaXNzLCB1c2VSb2xlIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3JlYWN0JztcbmltcG9ydCB7IGdldFBsYWNlbWVudCwgZ2V0TWlkZGxld2FyZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvRmxvYXRpbmcvaGVscGVycy5tanMnO1xuXG5jb25zdCB1c2VCYXNlRkxvYXRpbmcgPSAoe1xuICBvcGVuLFxuICBhcnJvd1JlZixcbiAgcGxhY2VtZW50ID0gXCJ0b3BcIixcbiAgc2V0T3BlblxufSkgPT4ge1xuICByZXR1cm4gdXNlRmxvYXRpbmcoe1xuICAgIHBsYWNlbWVudDogZ2V0UGxhY2VtZW50KHsgcGxhY2VtZW50IH0pLFxuICAgIG9wZW4sXG4gICAgb25PcGVuQ2hhbmdlOiBzZXRPcGVuLFxuICAgIHdoaWxlRWxlbWVudHNNb3VudGVkOiBhdXRvVXBkYXRlLFxuICAgIG1pZGRsZXdhcmU6IGdldE1pZGRsZXdhcmUoeyBwbGFjZW1lbnQsIGFycm93UmVmIH0pXG4gIH0pO1xufTtcbmNvbnN0IHVzZUZsb2F0aW5nSW50ZXJhY3Rpb25zID0gKHtcbiAgY29udGV4dCxcbiAgdHJpZ2dlcixcbiAgcm9sZSA9IFwidG9vbHRpcFwiLFxuICBpbnRlcmFjdGlvbnMgPSBbXVxufSkgPT4ge1xuICByZXR1cm4gdXNlSW50ZXJhY3Rpb25zKFtcbiAgICB1c2VDbGljayhjb250ZXh0LCB7IGVuYWJsZWQ6IHRyaWdnZXIgPT09IFwiY2xpY2tcIiB9KSxcbiAgICB1c2VIb3Zlcihjb250ZXh0LCB7XG4gICAgICBlbmFibGVkOiB0cmlnZ2VyID09PSBcImhvdmVyXCIsXG4gICAgICBoYW5kbGVDbG9zZTogc2FmZVBvbHlnb24oKVxuICAgIH0pLFxuICAgIHVzZURpc21pc3MoY29udGV4dCksXG4gICAgdXNlUm9sZShjb250ZXh0LCB7IHJvbGUgfSksXG4gICAgLi4uaW50ZXJhY3Rpb25zXG4gIF0pO1xufTtcblxuZXhwb3J0IHsgdXNlQmFzZUZMb2F0aW5nLCB1c2VGbG9hdGluZ0ludGVyYWN0aW9ucyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlLWZsb2F0aW5nLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIEZyYWdtZW50LCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VGb2N1cywgYXV0b1VwZGF0ZSB9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdCc7XG5pbXBvcnQgeyB1c2VSZWYsIHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgdXNlQmFzZUZMb2F0aW5nLCB1c2VGbG9hdGluZ0ludGVyYWN0aW9ucyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZS1mbG9hdGluZy5tanMnO1xuaW1wb3J0IHsgZ2V0QXJyb3dQbGFjZW1lbnQgfSBmcm9tICcuL2hlbHBlcnMubWpzJztcblxuY29uc3QgRmxvYXRpbmcgPSAoe1xuICBhbmltYXRpb24gPSBcImR1cmF0aW9uLTMwMFwiLFxuICBhcnJvdyA9IHRydWUsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGNvbnRlbnQsXG4gIHBsYWNlbWVudCA9IFwidG9wXCIsXG4gIHN0eWxlID0gXCJkYXJrXCIsXG4gIHRoZW1lLFxuICB0cmlnZ2VyID0gXCJob3ZlclwiLFxuICBtaW5XaWR0aCxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgYXJyb3dSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZmxvYXRpbmdQcm9wZXJ0aWVzID0gdXNlQmFzZUZMb2F0aW5nKHtcbiAgICBvcGVuLFxuICAgIHBsYWNlbWVudCxcbiAgICBhcnJvd1JlZixcbiAgICBzZXRPcGVuXG4gIH0pO1xuICBjb25zdCB7XG4gICAgY29udGV4dCxcbiAgICBtaWRkbGV3YXJlRGF0YTogeyBhcnJvdzogeyB4OiBhcnJvd1gsIHk6IGFycm93WSB9ID0ge30gfSxcbiAgICByZWZzLFxuICAgIHN0cmF0ZWd5LFxuICAgIHVwZGF0ZSxcbiAgICB4LFxuICAgIHlcbiAgfSA9IGZsb2F0aW5nUHJvcGVydGllcztcbiAgY29uc3QgZm9jdXMgPSB1c2VGb2N1cyhjb250ZXh0KTtcbiAgY29uc3QgeyBnZXRGbG9hdGluZ1Byb3BzLCBnZXRSZWZlcmVuY2VQcm9wcyB9ID0gdXNlRmxvYXRpbmdJbnRlcmFjdGlvbnMoe1xuICAgIGNvbnRleHQsXG4gICAgcm9sZTogXCJ0b29sdGlwXCIsXG4gICAgdHJpZ2dlcixcbiAgICBpbnRlcmFjdGlvbnM6IFtmb2N1c11cbiAgfSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZnMucmVmZXJlbmNlLmN1cnJlbnQgJiYgcmVmcy5mbG9hdGluZy5jdXJyZW50ICYmIG9wZW4pIHtcbiAgICAgIHJldHVybiBhdXRvVXBkYXRlKHJlZnMucmVmZXJlbmNlLmN1cnJlbnQsIHJlZnMuZmxvYXRpbmcuY3VycmVudCwgdXBkYXRlKTtcbiAgICB9XG4gIH0sIFtvcGVuLCByZWZzLmZsb2F0aW5nLCByZWZzLnJlZmVyZW5jZSwgdXBkYXRlXSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhGcmFnbWVudCwgeyBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImRpdlwiLFxuICAgICAge1xuICAgICAgICByZWY6IHJlZnMuc2V0UmVmZXJlbmNlLFxuICAgICAgICBjbGFzc05hbWU6IHRoZW1lLnRhcmdldCxcbiAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLXRvb2x0aXAtdGFyZ2V0XCIsXG4gICAgICAgIC4uLmdldFJlZmVyZW5jZVByb3BzKCksXG4gICAgICAgIGNoaWxkcmVuXG4gICAgICB9XG4gICAgKSxcbiAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICAgIFwiZGl2XCIsXG4gICAgICB7XG4gICAgICAgIHJlZjogcmVmcy5zZXRGbG9hdGluZyxcbiAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLXRvb2x0aXBcIixcbiAgICAgICAgLi4uZ2V0RmxvYXRpbmdQcm9wcyh7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgdGhlbWUuYmFzZSxcbiAgICAgICAgICAgIGFuaW1hdGlvbiAmJiBgJHt0aGVtZS5hbmltYXRpb259ICR7YW5pbWF0aW9ufWAsXG4gICAgICAgICAgICAhb3BlbiAmJiB0aGVtZS5oaWRkZW4sXG4gICAgICAgICAgICB0aGVtZS5zdHlsZVtzdHlsZV0sXG4gICAgICAgICAgICBjbGFzc05hbWVcbiAgICAgICAgICApLFxuICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogc3RyYXRlZ3ksXG4gICAgICAgICAgICB0b3A6IHkgPz8gXCIgXCIsXG4gICAgICAgICAgICBsZWZ0OiB4ID8/IFwiIFwiLFxuICAgICAgICAgICAgbWluV2lkdGhcbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLnByb3BzXG4gICAgICAgIH0pLFxuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmNvbnRlbnQsIGNoaWxkcmVuOiBjb250ZW50IH0pLFxuICAgICAgICAgIGFycm93ICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgICAgICAgdGhlbWUuYXJyb3cuYmFzZSxcbiAgICAgICAgICAgICAgICBzdHlsZSA9PT0gXCJkYXJrXCIgJiYgdGhlbWUuYXJyb3cuc3R5bGUuZGFyayxcbiAgICAgICAgICAgICAgICBzdHlsZSA9PT0gXCJsaWdodFwiICYmIHRoZW1lLmFycm93LnN0eWxlLmxpZ2h0LFxuICAgICAgICAgICAgICAgIHN0eWxlID09PSBcImF1dG9cIiAmJiB0aGVtZS5hcnJvdy5zdHlsZS5hdXRvXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS10b29sdGlwLWFycm93XCIsXG4gICAgICAgICAgICAgIHJlZjogYXJyb3dSZWYsXG4gICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgdG9wOiBhcnJvd1kgPz8gXCIgXCIsXG4gICAgICAgICAgICAgICAgbGVmdDogYXJyb3dYID8/IFwiIFwiLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBcIiBcIixcbiAgICAgICAgICAgICAgICBib3R0b206IFwiIFwiLFxuICAgICAgICAgICAgICAgIFtnZXRBcnJvd1BsYWNlbWVudCh7IHBsYWNlbWVudDogZmxvYXRpbmdQcm9wZXJ0aWVzLnBsYWNlbWVudCB9KV06IHRoZW1lLmFycm93LnBsYWNlbWVudFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBjaGlsZHJlbjogXCJcXHhBMFwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICBdXG4gICAgICB9XG4gICAgKVxuICBdIH0pO1xufTtcblxuZXhwb3J0IHsgRmxvYXRpbmcgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZsb2F0aW5nLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgRmxvYXRpbmcgfSBmcm9tICcuLi9GbG9hdGluZy9GbG9hdGluZy5tanMnO1xuXG5jb25zdCBUb29sdGlwID0gKHtcbiAgYW5pbWF0aW9uID0gXCJkdXJhdGlvbi0zMDBcIixcbiAgYXJyb3cgPSB0cnVlLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBjb250ZW50LFxuICBwbGFjZW1lbnQgPSBcInRvcFwiLFxuICBzdHlsZSA9IFwiZGFya1wiLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgdHJpZ2dlciA9IFwiaG92ZXJcIixcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS50b29sdGlwLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIEZsb2F0aW5nLFxuICAgIHtcbiAgICAgIGFuaW1hdGlvbixcbiAgICAgIGFycm93LFxuICAgICAgY29udGVudCxcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIHN0eWxlLFxuICAgICAgdGhlbWUsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlblxuICAgIH1cbiAgKTtcbn07XG5Ub29sdGlwLmRpc3BsYXlOYW1lID0gXCJUb29sdGlwXCI7XG5cbmV4cG9ydCB7IFRvb2x0aXAgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRvb2x0aXAubWpzLm1hcFxuIiwiLy8gVEhJUyBGSUxFIElTIEFVVE8gR0VORVJBVEVEXG5pbXBvcnQgeyBHZW5JY29uIH0gZnJvbSAnLi4vbGliL2luZGV4Lm1qcyc7XG5leHBvcnQgZnVuY3Rpb24gRmE0Mkdyb3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA5NlY0MTZDMzQxLjAxMSA0MTYgMzYxLjgxOCA0MTEuODYxIDM4MS4yMyA0MDMuODIxQzQwMC42NDEgMzk1Ljc4IDQxOC4yOCAzODMuOTk1IDQzMy4xMzggMzY5LjEzOEM0NDcuOTk1IDM1NC4yOCA0NTkuNzggMzM2LjY0MSA0NjcuODIxIDMxNy4yM0M0NzUuODYxIDI5Ny44MTggNDgwIDI3Ny4wMTEgNDgwIDI1NkM0ODAgMjM0Ljk4OSA0NzUuODYxIDIxNC4xODIgNDY3LjgyMSAxOTQuNzcxQzQ1OS43OCAxNzUuMzU5IDQ0Ny45OTUgMTU3LjcyIDQzMy4xMzggMTQyLjg2M0M0MTguMjggMTI4LjAwNSA0MDAuNjQxIDExNi4yMiAzODEuMjMgMTA4LjE3OUMzNjEuODE4IDEwMC4xMzkgMzQxLjAxMSA5NiAzMjAgOTZaTTAgMjU2TDE2MC4wMDIgNDE2TDMyMC4wMDMgMjU2TDE2MC4wMDIgOTZMMCAyNTZaTTQ4MCAyNTZDNDgwIDI3Ny4wMTEgNDg0LjEzOCAyOTcuODE4IDQ5Mi4xNzkgMzE3LjIzQzUwMC4yMTkgMzM2LjY0MyA1MTIuMDA1IDM1NC4yOCA1MjYuODYyIDM2OS4xMzhDNTQxLjcyIDM4My45OTUgNTU5LjM1NyAzOTUuNzgxIDU3OC43NyA0MDMuODIxQzU5OC4xODIgNDExLjg2MiA2MTguOTg5IDQxNiA2NDAgNDE2Vjk2QzU5Ny41NjUgOTYgNTU2Ljg2OSAxMTIuODU4IDUyNi44NjIgMTQyLjg2M0M0OTYuODU3IDE3Mi44NjkgNDgwIDIxMy41NjUgNDgwIDI1NlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhNTAwUHggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAzLjMgMzQ0LjNjLTYuNS0xNC4yLTYuOS0xOC4zIDcuNC0yMy4xIDI1LjYtOCA4IDkuMiA0My4yIDQ5LjJoLjN2LTkzLjljMS4yLTUwLjIgNDQtOTIuMiA5Ny43LTkyLjIgNTMuOSAwIDk3LjcgNDMuNSA5Ny43IDk2LjggMCA2My40LTYwLjggMTEzLjItMTI4LjUgOTMuMy0xMC41LTQuMi0yLjEtMzEuNyA4LjUtMjguNiA1MyAwIDg5LjQtMTAuMSA4OS40LTY0LjQgMC02MS03Ny4xLTg5LjYtMTE2LjktNDQuNi0yMy41IDI2LjQtMTcuNiA0Mi4xLTE3LjYgMTU3LjYgNTAuNyAzMSAxMTguMyAyMiAxNjAuNC0yMC4xIDI0LjgtMjQuOCAzOC41LTU4IDM4LjUtOTMgMC0zNS4yLTEzLjgtNjguMi0zOC44LTkzLjMtMjQuOC0yNC44LTU3LjgtMzguNS05My4zLTM4LjVzLTY4LjggMTMuOC05My41IDM4LjVjLS4zLjMtMTYgMTYuNS0yMS4yIDIzLjlsLS41LjZjLTMuMyA0LjctNi4zIDkuMS0yMC4xIDYuMS02LjktMS43LTE0LjMtNS44LTE0LjMtMTEuOFYyMGMwLTUgMy45LTEwLjUgMTAuNS0xMC41aDI0MS4zYzguMyAwIDguMyAxMS42IDguMyAxNS4xIDAgMy45IDAgMTUuMS04LjMgMTUuMUgxMzAuM3YxMzIuOWguM2MxMDQuMi0xMDkuOCAyODIuOC0zNiAyODIuOCAxMDguOSAwIDE3OC4xLTI0NC44IDIyMC4zLTMxMC4xIDYyLjh6bTYzLjMtMjYwLjhjLS41IDQuMiA0LjYgMjQuNSAxNC42IDIwLjZDMzA2IDU2LjYgMzg0IDE0NC41IDM5MC42IDE0NC41YzQuOCAwIDIyLjgtMTUuMyAxNC4zLTIyLjgtOTMuMi04OS0yMzQuNS01Ny0yMzguMy0zOC4yek0zOTMgNDE0LjdDMjgzIDUyNC42IDk0IDQ3NS41IDYxIDMxMC41YzAtMTIuMi0zMC40LTcuNC0yOC45IDMuMyAyNCAxNzMuNCAyNDYgMjU2LjkgMzgxLjYgMTIxLjMgNi45LTcuOC0xMi42LTI4LjQtMjAuNy0yMC40ek0yMTMuNiAzMDYuNmMwIDQgNC4zIDcuMyA1LjUgOC41IDMgMyA2LjEgNC40IDguNSA0LjQgMy44IDAgMi42LjIgMjIuMy0xOS41IDE5LjYgMTkuMyAxOS4xIDE5LjUgMjIuMyAxOS41IDUuNCAwIDE4LjUtMTAuNCAxMC43LTE4LjJMMjY1LjYgMjg0bDE4LjItMTguMmM2LjMtNi44LTEwLjEtMjEuOC0xNi4yLTE1LjdMMjQ5LjcgMjY4Yy0xOC42LTE4LjgtMTguNC0xOS41LTIxLjUtMTkuNS01IDAtMTggMTEuNy0xMi40IDE3LjNMMjM0IDI4NGMtMTguMSAxNy45LTIwLjQgMTkuMi0yMC40IDIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFjY2Vzc2libGVJY29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyMy45IDI1NS44TDQxMSA0MTMuMWMtMy4zIDQwLjctNjMuOSAzNS4xLTYwLjYtNC45bDEwLTEyMi41LTQxLjEgMi4zYzEwLjEgMjAuNyAxNS44IDQzLjkgMTUuOCA2OC41IDAgNDEuMi0xNi4xIDc4LjctNDIuMyAxMDYuNWwtMzkuMy0zOS4zYzU3LjktNjMuNyAxMy4xLTE2Ny4yLTc0LTE2Ny4yLTI1LjkgMC00OS41IDkuOS02Ny4yIDI2TDczIDI0My4yYzIyLTIwLjcgNTAuMS0zNS4xIDgxLjQtNDAuMmw3NS4zLTg1LjctNDIuNi0yNC44LTUxLjYgNDZjLTMwIDI2LjgtNzAuNi0xOC41LTQwLjUtNDUuNGw2OC02MC43YzkuOC04LjggMjQuMS0xMC4yIDM1LjUtMy42IDAgMCAxMzkuMyA4MC45IDEzOS41IDgxLjEgMTYuMiAxMC4xIDIwLjcgMzYgNi4xIDUyLjZMMjg1LjcgMjI5bDEwNi4xLTUuOWMxOC41LTEuMSAzMy42IDE0LjQgMzIuMSAzMi43em0tNjQuOS0xNTRjMjguMSAwIDUwLjktMjIuOCA1MC45LTUwLjlDNDA5LjkgMjIuOCAzODcuMSAwIDM1OSAwYy0yOC4xIDAtNTAuOSAyMi44LTUwLjkgNTAuOSAwIDI4LjEgMjIuOCA1MC45IDUwLjkgNTAuOXpNMTc5LjYgNDU2LjVjLTgwLjYgMC0xMjcuNC05MC42LTgyLjctMTU2LjFsLTM5LjctMzkuN0MzNi40IDI4NyAyNCAzMjAuMyAyNCAzNTYuNGMwIDEzMC43IDE1MC43IDIwMS40IDI1MS40IDEyMi41bC0zOS43LTM5LjdjLTE2IDEwLjktMzUuMyAxNy4zLTU2LjEgMTcuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWNjdXNvZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIyLjEgMjUydi0xbC01MS4yLTY1LjhzLTEyIDEuNi0yNSAxNS4xYy05IDkuMy0yNDIuMSAyMzkuMS0yNDMuNCAyNDAuOS03IDEwIDEuNiA2LjggMTUuNyAxLjcuOCAwIDExNC41LTM2LjYgMTE0LjUtMzYuNi41LS42LS4xLS4xLjYtLjYtLjQtNS4xLS44LTI2LjItMS0yNy43LS42LTUuMiAyLjItNi45IDctOC45bDkyLjYtMzMuOGMuNi0uOCA4OC41LTgxLjcgOTAuMi04My4zem0xNjAuMSAxMjAuMWMxMy4zIDE2LjEgMjAuNyAxMy4zIDMwLjggOS4zIDMuMi0xLjIgMTE1LjQtNDcuNiAxMTcuOC00OC45IDgtNC4zLTEuNy0xNi43LTcuMi0yMy40LTIuMS0yLjUtMjA1LjEtMjQ1LjYtMjA3LjItMjQ4LjMtOS43LTEyLjItMTQuMy0xMi45LTM4LjQtMTIuOC0xMC4yIDAtMTA2LjguNS0xMTYuNS42LTE5LjIuMS0zMi45LS4zLTE5LjIgMTYuOUMyNTAgNzUgNDc2LjUgMzY1LjIgNDgyLjIgMzcyLjF6bTE1Mi43IDEuNmMtMi4zLS4zLTI0LjYtNC43LTM4LTcuMiAwIDAtMTE1IDUwLjQtMTE3LjUgNTEuNi0xNiA3LjMtMjYuOS0zLjItMzYuNy0xNC42bC01Ny4xLTc0Yy01LjQtLjktNjAuNC05LjYtNjUuMy05LjMtMy4xLjItOS42LjgtMTQuNCAyLjktNC45IDIuMS0xNDUuMiA1Mi44LTE1MC4yIDU0LjctNS4xIDItMTEuNCAzLjYtMTEuMSA3LjYuMiAyLjUgMiAyLjYgNC42IDMuNSAyLjcuOCAzMDAuOSA2Ny42IDMwOCA2OS4xIDE1LjYgMy4zIDM4LjUgMTAuNSA1My42IDEuNyAyLjEtMS4yIDEyMy44LTc2LjQgMTI1LjgtNzcuOCA1LjQtNCA0LjMtNi44LTEuNy04LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFkbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggMTY3LjVsNjQuOSA5OC44SDE4My4xbDY0LjktOTguOHpNNDk2IDI1NmMwIDEzNi45LTExMS4xIDI0OC0yNDggMjQ4UzAgMzkyLjkgMCAyNTYgMTExLjEgOCAyNDggOHMyNDggMTExLjEgMjQ4IDI0OHptLTk5LjggODIuN0wyNDggMTE1LjUgOTkuOCAzMzguN2gzMC40bDMzLjYtNTEuN2gxNjguNmwzMy42IDUxLjdoMzAuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWR2ZXJzYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgyLjEgMzJIMjguN0M1LjggMzIgMCAzNy45IDAgNjAuOXYzOTAuMkMwIDQ3NC40IDUuOCA0ODAgMjguNyA0ODBoNDUzLjRjMjQuNCAwIDI5LjktNS4yIDI5LjktMjkuN1Y2Mi4yYzAtMjQuNi01LjQtMzAuMi0yOS45LTMwLjJ6TTE3OC40IDIyMC4zYy0yNy41LTIwLjItNzIuMS04LjctODQuMiAyMy40LTQuMyAxMS4xLTkuMyA5LjUtMTcuNSA4LjMtOS43LTEuNS0xNy4yLTMuMi0yMi41LTUuNS0yOC44LTExLjQgOC42LTU1LjMgMjQuOS02NC4zIDQxLjEtMjEuNCA4My40LTIyLjIgMTI1LjMtNC44IDQwLjkgMTYuOCAzNC41IDU5LjIgMzQuNSAxMjguNSAyLjcgMjUuOC00LjMgNTguMyA5LjMgODguOCAxLjkgNC40LjQgNy45LTIuNyAxMC43LTguNCA2LjctMzkuMyAyLjItNDYuNi03LjQtMS45LTIuMi0xLjgtMy42LTMuOS02LjItMy42LTMuOS03LjMtMi4yLTExLjkgMS01Ny40IDM2LjQtMTQwLjMgMjEuNC0xNDctNDMuMy0zLjEtMjkuMyAxMi40LTU3LjEgMzkuNi03MSAzOC4yLTE5LjUgMTEyLjItMTEuOCAxMTQtMzAuOSAxLjEtMTAuMi0xLjktMjAuMS0xMS4zLTI3LjN6bTI4Ni43IDIyMmMwIDE1LjEtMTEuMSA5LjktMTcuOCA5LjlINTIuNGMtNy40IDAtMTguMiA0LjgtMTcuOC0xMC43LjQtMTMuOSAxMC41LTkuMSAxNy4xLTkuMSAxMzIuMy0uNCAyNjQuNS0uNCAzOTYuOCAwIDYuOCAwIDE2LjYtNC40IDE2LjYgOS45em0zLjgtMzQwLjV2MjkxYzAgNS43LS43IDEzLjktOC4xIDEzLjktMTIuNC0uNC0yNy41IDcuMS0zNi4xLTUuNi01LjgtOC43LTcuOC00LTEyLjQtMS4yLTUzLjQgMjkuNy0xMjguMSA3LjEtMTQ0LjQtODUuMi02LjEtMzMuNC0uNy02Ny4xIDE1LjctMTAwIDExLjgtMjMuOSA1Ni45LTc2LjEgMTM2LjEtMzAuNXYtNzFjMC0yNi4yLS4xLTI2LjIgMjYtMjYuMiAzLjEgMCA2LjYuNCA5LjcgMCAxMC4xLS44IDEzLjYgNC40IDEzLjYgMTQuMy0uMS4yLS4xLjMtLjEuNXptLTUxLjUgMjMyLjNjLTE5LjUgNDcuNi03Mi45IDQzLjMtOTAgNS4yLTE1LjEtMzMuMy0xNS41LTY4LjIuNC0xMDEuNSAxNi4zLTM0LjEgNTkuNy0zNS43IDgxLjUtNC44IDIwLjYgMjguOCAxNC45IDg0LjYgOC4xIDEwMS4xem0tMjk0LjggMzUuM2MtNy41LTEuMy0zMy0zLjMtMzMuNy0yNy44LS40LTEzLjkgNy44LTIzIDE5LjgtMjUuOCAyNC40LTUuOSA0OS4zLTkuOSA3My43LTE0LjcgOC45LTIgNy40IDQuNCA3LjggOS41IDEuNCAzMy0yNi4xIDU5LjItNjcuNiA1OC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBZmZpbGlhdGV0aGVtZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTkuNyAyMzcuNEMxMDguNCAzMDguMyA0My4xIDM0OC4yIDE0IDMyNi42LTE1LjIgMzA0LjkgMi44IDIzMCA1NC4yIDE1OS4xYzUxLjMtNzAuOSAxMTYuNi0xMTAuOCAxNDUuNy04OS4yIDI5LjEgMjEuNiAxMS4xIDk2LjYtNDAuMiAxNjcuNXptMzUxLjItNTcuM0M0MzcuMSAzMDMuNSAzMTkgMzY3LjggMjQ2LjQgMzIzLjdjLTI1LTE1LjItNDEuMy00MS4yLTQ5LTczLjgtMzMuNiA2NC44LTkyLjggMTEzLjgtMTY0LjEgMTMzLjIgNDkuOCA1OS4zIDEyNC4xIDk2LjkgMjA3IDk2LjkgMTUwIDAgMjcxLjYtMTIzLjEgMjcxLjYtMjc0LjkuMS04LjUtLjMtMTYuOC0xLTI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBaXJibmIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDM3My4xMmMtMjUuMjQtMzEuNjctNDAuMDgtNTkuNDMtNDUtODMuMTgtMjIuNTUtODggMTEyLjYxLTg4IDkwLjA2IDAtNS40NSAyNC4yNS0yMC4yOSA1Mi00NSA4My4xOHptMTM4LjE1IDczLjIzYy00Mi4wNiAxOC4zMS04My42Ny0xMC44OC0xMTkuMy01MC40NyAxMDMuOS0xMzAuMDcgNDYuMTEtMjAwLTE4Ljg1LTIwMC01NC45MiAwLTg1LjE2IDQ2LjUxLTczLjI4IDEwMC41IDYuOTMgMjkuMTkgMjUuMjMgNjIuMzkgNTQuNDMgOTkuNS0zMi41MyAzNi4wNS02MC41NSA1Mi42OS04NS4xNSA1NC45Mi01MCA3LjQzLTg5LjExLTQxLjA2LTcxLjMtOTEuMDkgMTUuMS0zOS4xNiAxMTEuNzItMjMxLjE4IDExNS44Ny0yNDEuNTYgMTUuNzUtMzAuMDcgMjUuNTYtNTcuNCA1OS4zOC01Ny40IDMyLjM0IDAgNDMuNCAyNS45NCA2MC4zNyA1OS44NyAzNiA3MC42MiA4OS4zNSAxNzcuNDggMTE0Ljg0IDIzOS4wOSAxMy4xNyAzMy4wNy0xLjM3IDcxLjI5LTM3LjAxIDg2LjY0em00Ny0xMzYuMTJDMjgwLjI3IDM1LjkzIDI3My4xMyAzMiAyMjQgMzJjLTQ1LjUyIDAtNjQuODcgMzEuNjctODQuNjYgNzIuNzlDMzMuMTggMzE3LjEgMjIuODkgMzQ3LjE5IDIyIDM0OS44MS0zLjIyIDQxOS4xNCA0OC43NCA0ODAgMTExLjYzIDQ4MGMyMS43MSAwIDYwLjYxLTYuMDYgMTEyLjM3LTYyLjQgNTguNjggNjMuNzggMTAxLjI2IDYyLjQgMTEyLjM3IDYyLjQgNjIuODkuMDUgMTE0Ljg1LTYwLjg2IDg5LjYxLTEzMC4xOS4wMi0zLjg5LTE2LjgyLTM4LjktMTYuODItMzkuNTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFsZ29saWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBDMTE2LjEgMCAyIDExMi43IDAgMjUyLjFDLTIgMzkzLjYgMTEyLjkgNTEwLjggMjU0LjUgNTExLjZjNDMuNyAuMyA4NS45LTEwLjQgMTIzLjMtMzAuN2MzLjYtMiA0LjItNyAxLjEtOS43bC0yNC0yMS4yYy00LjktNC4zLTExLjgtNS41LTE3LjgtM2MtMjYuMSAxMS4xLTU0LjUgMTYuOC04My43IDE2LjRDMTM5IDQ2MS45IDQ2LjUgMzY2LjggNDguMyAyNTIuNEM1MC4xIDEzOS41IDE0Mi42IDQ4LjIgMjU2IDQ4LjJINDYzLjdWNDE3LjJMMzQ1LjkgMzEyLjVjLTMuOC0zLjQtOS43LTIuNy0xMi43IDEuM2MtMTguOSAyNS00OS43IDQwLjYtODMuOSAzOC4yYy00Ny41LTMuMy04NS45LTQxLjUtODkuNS04OC45Yy00LjItNTYuNiA0MC42LTEwMy45IDk2LjMtMTAzLjljNTAuNCAwIDkxLjkgMzguOCA5Ni4yIDg4Yy40IDQuNCAyLjQgOC41IDUuNyAxMS40bDMwLjcgMjcuMmMzLjUgMy4xIDkgMS4yIDkuOS0zLjRjMi4yLTExLjggMy0yNC4yIDIuMS0zNi44Yy00LjktNzItNjMuMy0xMzAtMTM1LjQtMTM0LjRjLTgyLjctNS4xLTE1MS44IDU5LjUtMTU0IDE0MC42Yy0yLjEgNzguOSA2Mi42IDE0NyAxNDEuNiAxNDguN2MzMyAuNyA2My42LTkuNiA4OC4zLTI3LjZMNDk1IDUwOS40YzYuNiA1LjggMTcgMS4yIDE3LTcuN1Y5LjdjMC01LjQtNC40LTkuNy05LjctOS43SDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpcGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3Ny43NCAzMkg3MC4yNkMzMS40MSAzMiAwIDYzLjQxIDAgMTAyLjI2djMwNy40OEMwIDQ0OC41OSAzMS40MSA0ODAgNzAuMjYgNDgwaDMwNy40OGMzOC41MiAwIDY5Ljc2LTMxLjA4IDcwLjI2LTY5LjYtNDUuOTYtMjUuNjItMTEwLjU5LTYwLjM0LTE3MS42LTg4LjQ0LTMyLjA3IDQzLjk3LTg0LjE0IDgxLTE0OC42MiA4MS03MC41OSAwLTkzLjczLTQ1LjMtOTcuMDQtNzYuMzctMy45Ny0zOS4wMSAxNC44OC04MS41IDk5LjUyLTgxLjUgMzUuMzggMCA3OS4zNSAxMC4yNSAxMjcuMTMgMjQuOTYgMTYuNTMtMzAuMDkgMjYuNDUtNjAuMzQgMjYuNDUtNjAuMzRoLTE3OC4ydi0xNi43aDkyLjA4di0zMS4yNEg4OC4yOHYtMTkuMDFoMTA5LjQ0VjkyLjM0aDUwLjkydjUwLjQyaDEwOS40NHYxOS4wMUgyNDguNjN2MzEuMjRoODguNzdzLTE1LjIxIDQ2LjYyLTM4LjM1IDkwLjkyYzQ4LjkzIDE2LjcgMTAwLjAxIDM2LjA0IDE0OC42MiA1Mi43NFYxMDIuMjZDNDQ3LjgzIDYzLjU3IDQxNi40MyAzMiAzNzcuNzQgMzJ6TTQ3LjI4IDMyMi45NWMuOTkgMjAuMTcgMTAuMjUgNTMuNzMgNjkuOTMgNTMuNzMgNTIuMDcgMCA5Mi41OC0zOS42OCAxMTcuODctNzIuOS00NC42My0xOC42OC04NC40OC0zMS40MS0xMDkuNDQtMzEuNDEtNjcuNDUgMC03OS4zNSAzMy4wNi03OC4zNiA1MC41OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW1hem9uUGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDMyNS4zYzIuMy00LjIgNS4yLTQuOSA5LjctMi41IDEwLjQgNS42IDIwLjYgMTEuNCAzMS4yIDE2LjdhNTk1Ljg4IDU5NS44OCAwIDAgMCAxMjcuNCA0Ni4zIDYxNi42MSA2MTYuNjEgMCAwIDAgNjMuMiAxMS44IDYwMy4zMyA2MDMuMzMgMCAwIDAgOTUgNS4yYzE3LjQtLjQgMzQuOC0xLjggNTIuMS0zLjhhNjAzLjY2IDYwMy42NiAwIDAgMCAxNjMuMy00Mi44YzIuOS0xLjIgNS45LTIgOS4xLTEuMiA2LjcgMS44IDkgOSA0LjEgMTMuOWE3MCA3MCAwIDAgMS05LjYgNy40Yy0zMC43IDIxLjEtNjQuMiAzNi40LTk5LjYgNDcuOWE0NzMuMzEgNDczLjMxIDAgMCAxLTc1LjEgMTcuNiA0MzEgNDMxIDAgMCAxLTUzLjIgNC44IDIxLjMgMjEuMyAwIDAgMC0yLjUuM0gzMDhhMjEuMyAyMS4zIDAgMCAwLTIuNS0uM2MtMy42LS4yLTcuMi0uMy0xMC43LS40YTQyNi4zIDQyNi4zIDAgMCAxLTUwLjQtNS4zQTQ0OC40IDQ0OC40IDAgMCAxIDE2NCA0MjBhNDQzLjMzIDQ0My4zMyAwIDAgMS0xNDUuNi04N2MtMS44LTEuNi0zLTMuOC00LjQtNS43ek0xNzIgNjUuMWwtNC4zLjZhODAuOTIgODAuOTIgMCAwIDAtMzggMTUuMWMtMi40IDEuNy00LjYgMy41LTcuMSA1LjRhNC4yOSA0LjI5IDAgMCAxLS40LTEuNGMtLjQtMi43LS44LTUuNS0xLjMtOC4yLS43LTQuNi0zLTYuNi03LjYtNi42aC0xMS41Yy02LjkgMC04LjIgMS4zLTguMiA4LjJ2MjA5LjNjMCAxIDAgMiAuMSAzIC4yIDMgMiA0LjkgNC45IDUgNyAuMSAxNC4xLjEgMjEuMSAwIDIuOSAwIDQuNy0yIDUtNSAuMS0xIC4xLTIgLjEtM3YtNzIuNGMxLjEuOSAxLjcgMS40IDIuMiAxLjkgMTcuOSAxNC45IDM4LjUgMTkuOCA2MSAxNS40IDIwLjQtNCAzNC42LTE2LjUgNDMuOC0zNC45IDctMTMuOSA5LjktMjguNyAxMC4zLTQ0LjEuNS0xNy4xLTEuMi0zMy45LTguMS00OS44LTguNS0xOS42LTIyLjYtMzIuNS00My45LTM2LjktMy4yLS43LTYuNS0xLTkuOC0xLjUtMi44LS4xLTUuNS0uMS04LjMtLjF6TTEyNC42IDEwN2EzLjQ4IDMuNDggMCAwIDEgMS43LTMuM2MxMy43LTkuNSAyOC44LTE0LjUgNDUuNi0xMy4yIDE0LjkgMS4xIDI3LjEgOC40IDMzLjUgMjUuOSAzLjkgMTAuNyA0LjkgMjEuOCA0LjkgMzMgMCAxMC40LS44IDIwLjYtNCAzMC42LTYuOCAyMS4zLTIyLjQgMjkuNC00Mi42IDI4LjUtMTQtLjYtMjYuMi02LTM3LjQtMTMuOWEzLjU3IDMuNTcgMCAwIDEtMS43LTMuM2MuMS0xNC4xIDAtMjguMSAwLTQyLjJzLjEtMjggMC00Mi4xem0yMDUuNy00MS45Yy0xIC4xLTIgLjMtMi45LjRhMTQ4IDE0OCAwIDAgMC0yOC45IDQuMWMtNi4xIDEuNi0xMiAzLjgtMTcuOSA1LjgtMy42IDEuMi01LjQgMy44LTUuMyA3LjcuMSAzLjMtLjEgNi42IDAgOS45LjEgNC44IDIuMSA2LjEgNi44IDQuOSA3LjgtMiAxNS42LTQuMiAyMy41LTUuNyAxMi4zLTIuMyAyNC43LTMuMyAzNy4yLTEuNCA2LjUgMSAxMi42IDIuOSAxNi44IDguNCAzLjcgNC44IDUuMSAxMC41IDUuMyAxNi40LjMgOC4zLjIgMTYuNi4zIDI0LjlhNy44NCA3Ljg0IDAgMCAxLS4yIDEuNGMtLjUtLjEtLjkgMC0xLjMtLjFhMTgwLjU2IDE4MC41NiAwIDAgMC0zMi00LjljLTExLjMtLjYtMjIuNS4xLTMzLjMgMy45LTEyLjkgNC41LTIzLjMgMTIuMy0yOS40IDI0LjktNC43IDkuOC01LjQgMjAuMi0zLjkgMzAuNyAyIDE0IDkgMjQuOCAyMS40IDMxLjcgMTEuOSA2LjYgMjQuOCA3LjQgMzcuOSA1LjQgMTUuMS0yLjMgMjguNS04LjcgNDAuMy0xOC40YTcuMzYgNy4zNiAwIDAgMSAxLjYtMS4xYy42IDMuOCAxLjEgNy40IDEuOCAxMSAuNiAzLjEgMi41IDUuMSA1LjQgNS4yIDUuNC4xIDEwLjkuMSAxNi4zIDBhNC44NCA0Ljg0IDAgMCAwIDQuOC00LjcgMjYuMiAyNi4yIDAgMCAwIC4xLTIuOHYtMTA2YTgwIDgwIDAgMCAwLS45LTEyLjljLTEuOS0xMi45LTcuNC0yMy41LTE5LTMwLjQtNi43LTQtMTQuMS02LTIxLjgtNy4xLTMuNi0uNS03LjItLjgtMTAuOC0xLjMtMy45LjEtNy45LjEtMTEuOS4xem0zNSAxMjcuN2EzLjMzIDMuMzMgMCAwIDEtMS41IDNjLTExLjIgOC4xLTIzLjUgMTMuNS0zNy40IDE0LjktNS43LjYtMTEuNC40LTE2LjgtMS44YTIwLjA4IDIwLjA4IDAgMCAxLTEyLjQtMTMuMyAzMi45IDMyLjkgMCAwIDEtLjEtMTkuNGMyLjUtOC4zIDguNC0xMyAxNi40LTE1LjZhNjEuMzMgNjEuMzMgMCAwIDEgMjQuOC0yLjJjOC40LjcgMTYuNiAyLjMgMjUgMy40IDEuNi4yIDIuMSAxIDIuMSAyLjYtLjEgNC44IDAgOS41IDAgMTQuM3MtLjIgOS40LS4xIDE0LjF6bTI1OS45IDEyOS40Yy0xLTUtNC44LTYuOS05LjEtOC4zYTg4LjQyIDg4LjQyIDAgMCAwLTIxLTMuOSAxNDcuMzIgMTQ3LjMyIDAgMCAwLTM5LjIgMS45Yy0xNC4zIDIuNy0yNy45IDcuMy00MCAxNS42YTEzLjc1IDEzLjc1IDAgMCAwLTMuNyAzLjUgNS4xMSA1LjExIDAgMCAwLS41IDRjLjQgMS41IDIuMSAxLjkgMy42IDEuOGExNi4yIDE2LjIgMCAwIDAgMi4yLS4xYzcuOC0uOCAxNS41LTEuNyAyMy4zLTIuNSAxMS40LTEuMSAyMi45LTEuOCAzNC4zLS45YTcxLjY0IDcxLjY0IDAgMCAxIDE0LjQgMi43YzUuMSAxLjQgNy40IDUuMiA3LjYgMTAuNC40IDgtMS40IDE1LjctMy41IDIzLjMtNC4xIDE1LjQtMTAgMzAuMy0xNS44IDQ1LjFhMTcuNiAxNy42IDAgMCAwLTEgM2MtLjUgMi45IDEuMiA0LjggNC4xIDQuMWExMC41NiAxMC41NiAwIDAgMCA0LjgtMi41IDE0NS45MSAxNDUuOTEgMCAwIDAgMTIuNy0xMy40YzEyLjgtMTYuNCAyMC4zLTM1LjMgMjQuNy01NS42LjgtMy42IDEuNC03LjMgMi4xLTEwLjl2LTE3LjN6TTQ5My4xIDE5OXEtMTkuMzUtNTMuNTUtMzguNy0xMDcuMmMtMi01LjctNC4yLTExLjMtNi4zLTE2LjktMS4xLTIuOS0zLjItNC44LTYuNC00LjgtNy42LS4xLTE1LjItLjItMjIuOS0uMS0yLjUgMC0zLjcgMi0zLjIgNC41YTQzLjEgNDMuMSAwIDAgMCAxLjkgNi4xcTI5LjQgNzIuNzUgNTkuMSAxNDUuNWMxLjcgNC4xIDIuMSA3LjYuMiAxMS44LTMuMyA3LjMtNS45IDE1LTkuMyAyMi4zLTMgNi41LTggMTEuNC0xNS4yIDEzLjNhNDIuMTMgNDIuMTMgMCAwIDEtMTUuNCAxLjFjLTIuNS0uMi01LS44LTcuNS0xLTMuNC0uMi01LjEgMS4zLTUuMiA0LjhxLS4xNSA1IDAgOS45Yy4xIDUuNSAyIDggNy40IDguOWExMDguMTggMTA4LjE4IDAgMCAwIDE2LjkgMmMxNy4xLjQgMzAuNy02LjUgMzkuNS0yMS40YTEzMS42MyAxMzEuNjMgMCAwIDAgOS4yLTE4LjRxMzUuNTUtODkuNyA3MC42LTE3OS42YTI2LjYyIDI2LjYyIDAgMCAwIDEuNi01LjVjLjQtMi44LS45LTQuNC0zLjctNC40LTYuNi0uMS0xMy4zIDAtMTkuOSAwYTcuNTQgNy41NCAwIDAgMC03LjcgNS4yYy0uNSAxLjQtMS4xIDIuNy0xLjYgNC4xbC0zNC44IDEwMGMtMi41IDcuMi01LjEgMTQuNS03LjcgMjIuMi0uNC0xLjEtLjYtMS43LS45LTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW1hem9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ny4yIDE2Mi43Yy00OC43IDEuOC0xNjkuNSAxNS41LTE2OS41IDExNy41IDAgMTA5LjUgMTM4LjMgMTE0IDE4My41IDQzLjIgNi41IDEwLjIgMzUuNCAzNy41IDQ1LjMgNDYuOGw1Ni44LTU2UzM0MSAyODguOSAzNDEgMjYxLjRWMTE0LjNDMzQxIDg5IDMxNi41IDMyIDIyOC43IDMyIDE0MC43IDMyIDk0IDg3IDk0IDEzNi4zbDczLjUgNi44YzE2LjMtNDkuNSA1NC4yLTQ5LjUgNTQuMi00OS41IDQwLjctLjEgMzUuNSAyOS44IDM1LjUgNjkuMXptMCA4Ni44YzAgODAtODQuMiA2OC04NC4yIDE3LjIgMC00Ny4yIDUwLjUtNTYuNyA4NC4yLTU3Ljh2NDAuNnptMTM2IDE2My41Yy03LjcgMTAtNzAgNjctMTc0LjUgNjdTMzQuMiA0MDguNSA5LjcgMzc5Yy02LjgtNy43IDEtMTEuMyA1LjUtOC4zQzg4LjUgNDE1LjIgMjAzIDQ4OC41IDM4Ny43IDQwMWM3LjUtMy43IDEzLjMgMiA1LjUgMTJ6bTM5LjggMi4yYy02LjUgMTUuOC0xNiAyNi44LTIxLjIgMzEtNS41IDQuNS05LjUgMi43LTYuNS0zLjhzMTkuMy00Ni41IDEyLjctNTVjLTYuNS04LjMtMzctNC4zLTQ4LTMuMi0xMC44IDEtMTMgMi0xNC0uMy0yLjMtNS43IDIxLjctMTUuNSAzNy41LTE3LjUgMTUuNy0xLjggNDEtLjggNDYgNS43IDMuNyA1LjEgMCAyNy4xLTYuNSA0My4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbWlsaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwLjEgMzJjLTYxLjkgMC0xMzEuNSAxNi45LTE4NC4yIDU1LjQtNS4xIDMuMS05LjEgOS4yLTcuMiAxOS40IDEuMSA1LjEgNS4xIDI3LjQgMTAuMiAzOS42IDQuMSAxMC4yIDE0LjIgMTAuMiAyMC4zIDYuMSAzMi41LTIyLjMgOTYuNS00Ny43IDE1Mi4zLTQ3LjcgNTcuOSAwIDU4LjkgMjguNCA1OC45IDczLjF2MzguNUMyMDMgMjI3LjcgNzguMiAyNTEgNDYuNyAyNjQuMiAxMS4yIDI4MC41IDE2LjMgMzU3LjcgMTYuMyAzNzZzMTUuMiAxMDQgMTI0LjkgMTA0YzQ3LjggMCAxMTMuNy0yMC43IDE1My4zLTQyLjF2MjUuNGMwIDMgMi4xIDguMiA2LjEgOS4xIDMuMSAxIDUwLjcgMiA1OS45IDJzNjIuNS4zIDY2LjUtLjdjNC4xLTEgNS4xLTYuMSA1LjEtOS4xVjE2OGMtLjEtODAuMy01Ny45LTEzNi0xOTItMTM2em01MC4yIDM0OGMtMjEuNCAxMy4yLTQ4LjcgMjQuNC03OS4xIDI0LjQtNTIuOCAwLTU4LjktMzMuNS01OS00NC43IDAtMTIuMi0zLTQyLjcgMTguMy01Mi45IDI0LjMtMTMuMiA3NS4xLTI5LjQgMTE5LjgtMzMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5kcm9pZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjAuNTUsMzAxLjkzYTI0LDI0LDAsMSwxLDI0LTI0LDI0LDI0LDAsMCwxLTI0LDI0bS0yNjUuMSwwYTI0LDI0LDAsMSwxLDI0LTI0LDI0LDI0LDAsMCwxLTI0LDI0bTI3My43LTE0NC40OCw0Ny45NC04M2ExMCwxMCwwLDEsMC0xNy4yNy0xMGgwbC00OC41NCw4NC4wN2EzMDEuMjUsMzAxLjI1LDAsMCwwLTI0Ni41NiwwTDExNi4xOCw2NC40NWExMCwxMCwwLDEsMC0xNy4yNywxMGgwbDQ3Ljk0LDgzQzY0LjUzLDIwMi4yMiw4LjI0LDI4NS41NSwwLDM4NEg1NzZjLTguMjQtOTguNDUtNjQuNTQtMTgxLjc4LTE0Ni44NS0yMjYuNTVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nZWxsaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Ny4xIDIxNS40YzExLjctMzIuNiA0NS40LTEyNi45IDQ1LjQtMTU3LjEgMC0yNi42LTE1LjctNDguOS00My43LTQ4LjktNDQuNiAwLTg0LjYgMTMxLjctOTcuMSAxNjMuMUMyNDIgMTQ0IDE5Ni42IDAgMTU2LjYgMGMtMzEuMSAwLTQ1LjcgMjIuOS00NS43IDUxLjcgMCAzNS4zIDM0LjIgMTI2LjggNDYuNiAxNjItNi4zLTIuMy0xMy4xLTQuMy0yMC00LjMtMjMuNCAwLTQ4LjMgMjkuMS00OC4zIDUyLjYgMCA4LjkgNC45IDIxLjQgOCAyOS43LTM2LjkgMTAtNTEuMSAzNC42LTUxLjEgNzEuN0M0NiA0MzUuNiAxMTQuNCA1MTIgMjEwLjYgNTEyYzExOCAwIDE5MS40LTg4LjYgMTkxLjQtMjAyLjkgMC00My4xLTYuOS04Mi01NC45LTkzLjd6TTMxMS43IDEwOGM0LTEyLjMgMjEuMS02NC4zIDM3LjEtNjQuMyA4LjYgMCAxMC45IDguOSAxMC45IDE2IDAgMTkuMS0zOC42IDEyNC42LTQ3LjEgMTQ4bC0zNC02IDMzLjEtOTMuN3pNMTQyLjMgNDguM2MwLTExLjkgMTQuNS00NS43IDQ2LjMgNDcuMWwzNC42IDEwMC4zYy0xNS42LTEuMy0yNy43LTMtMzUuNCAxLjQtMTAuOS0yOC44LTQ1LjUtMTE5LjctNDUuNS0xNDguOHpNMTQwIDI0NGMyOS4zIDAgNjcuMSA5NC42IDY3LjEgMTA3LjQgMCA1LjEtNC45IDExLjQtMTAuNiAxMS40LTIwLjkgMC03Ni45LTc2LjktNzYuOS05Ny43LjEtNy43IDEyLjctMjEuMSAyMC40LTIxLjF6bTE4NC4zIDE4Ni4zYy0yOS4xIDMyLTY2LjMgNDguNi0xMDkuNyA0OC42LTU5LjQgMC0xMDYuMy0zMi42LTEyOC45LTg4LjMtMTcuMS00My40IDMuOC02OC4zIDIwLjYtNjguMyAxMS40IDAgNTQuMyA2MC4zIDU0LjMgNzMuMSAwIDQuOS03LjcgOC4zLTExLjcgOC4zLTE2LjEgMC0yMi40LTE1LjUtNTEuMS01MS40LTI5LjcgMjkuNyAyMC41IDg2LjkgNTguMyA4Ni45IDI2LjEgMCA0My4xLTI0LjIgMzgtNDIgMy43IDAgOC4zLjMgMTEuNy0uNiAxLjEgMjcuMSA5LjEgNTkuNCA0MS43IDYxLjcgMC0uOSAyLTcuMSAyLTcuNCAwLTE3LjQtMTAuNi0zMi42LTEwLjYtNTAuMyAwLTI4LjMgMjEuNy01NS43IDQzLjctNzEuNyA4LTYgMTcuNy05LjcgMjcuMS0xMy4xIDkuNy0zLjcgMjAtOCAyNy40LTE1LjQtMS4xLTExLjItNS43LTIxLjEtMTYuOS0yMS4xLTI3LjcgMC0xMjAuNiA0LTEyMC42LTM5LjcgMC02LjcuMS0xMy4xIDE3LjQtMTMuMSAzMi4zIDAgMTE0LjMgOCAxMzguMyAyOS4xIDE4LjEgMTYuMSAyNC4zIDExMy4yLTMxIDE3NC43em0tOTguNi0xMjZjOS43IDMuMSAxOS43IDQgMjkuNyA2LTcuNCA1LjQtMTQgMTItMjAuMyAxOS4xLTIuOC04LjUtNi4yLTE2LjgtOS40LTI1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ3J5Y3JlYXRpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQwIDIzOC4ybC0zLjIgMjguMi0zNC41IDIuMy0yIDE4LjEgMzQuNS0yLjMtMy4yIDI4LjItMzQuNCAyLjItMi4zIDIwLjEgMzQuNC0yLjItMyAyNi4xLTY0LjcgNC4xIDEyLjctMTEzLjJMNTI3IDM2NS4ybC0zMS45IDItMjMuOC0xMTcuOCAzMC4zLTIgMTMuNiA3OS40IDMxLjctODIuNCA5My4xLTYuMnpNNDI2LjggMzcxLjVsMjguMy0xLjhMNDY4IDI0OS42bC0yOC40IDEuOS0xMi44IDEyMHpNMTYyIDM4OC4xbC0xOS40LTM2LTMuNSAzNy40LTI4LjIgMS43IDIuNy0yOS4xYy0xMSAxOC0zMiAzNC4zLTU2LjkgMzUuOEMyMy45IDM5OS45LTMgMzc3IC4zIDMzOS43YzIuNi0yOS4zIDI2LjctNjIuOCA2Ny41LTY1LjQgMzcuNy0yLjQgNDcuNiAyMy4yIDUxLjMgMjguOGwyLjgtMzAuOCAzOC45LTIuNWMyMC4xLTEuMyAzOC43IDMuNyA0Mi41IDIzLjdsMi42LTI2LjYgNjQuOC00LjItMi43IDI3LjktMzYuNCAyLjQtMS43IDE3LjkgMzYuNC0yLjMtMi43IDI3LjktMzYuNCAyLjMtMS45IDE5LjkgMzYuMy0yLjMtMi4xIDIwLjggNTUtMTE3LjIgMjMuOC0xLjZMMzcwLjQgMzY5bDguOS04NS42LTIyLjMgMS40IDIuOS0yNy45IDc1LTQuOS0zIDI4LTI0LjMgMS42LTkuNyA5MS45LTU4IDMuNy00LjMtMTUuNi0zOS40IDIuNS04IDE2LjMtMTI2LjIgNy43em0tNDQuMy03MC4ybC0yNi40IDEuN0M4NC42IDMwNy4yIDc2LjkgMzAzIDY1IDMwMy44Yy0xOSAxLjItMzMuMyAxNy41LTM0LjYgMzMuMy0xLjQgMTYgNy4zIDMyLjUgMjguNyAzMS4yIDEyLjgtLjggMjEuMy04LjYgMjguOS0xOC45bDI3LTEuNyAyLjctMjkuOHptNTYuMS03LjdjMS4yLTEyLjktNy42LTEzLjYtMjYuMS0xMi40bC0yLjcgMjguNWMxNC4yLS45IDI3LjUtMi4xIDI4LjgtMTYuMXptMjEuMSA3MC44bDUuOC02MGMtNSAxMy41LTE0LjcgMjEuMS0yNy45IDI2LjZsMjIuMSAzMy40em0xMzUuNC00NWwtNy45LTM3LjgtMTUuOCAzOS4zIDIzLjctMS41em0tMTcwLjEtNzQuNmwtNC4zLTE3LjUtMzkuNiAyLjYtOC4xIDE4LjItMzEuOSAyLjEgNTctMTIxLjkgMjMuOS0xLjYgMzAuNyAxMDIgOS45LTEwNC43IDI3LTEuOCAzNy44IDYzLjYgNi41LTY2LjYgMjguNS0xLjktNCA0MS4yYzcuNC0xMy41IDIyLjktNDQuNyA2My42LTQ3LjUgNDAuNS0yLjggNTIuNCAyOS4zIDUzLjQgMzAuM2wzLjMtMzIgMzkuMy0yLjdjMTIuNy0uOSAyNy44LjMgMzYuMyA5LjdsLTQuNC0xMS45IDMyLjItMi4yIDEyLjkgNDMuMiAyMy00NS43IDMxLTIuMi00My42IDc4LjQtNC44IDQ0LjMtMjguNCAxLjkgNC44LTQ0LjMtMTUuOC00M2MxIDIyLjMtOS4yIDQwLjEtMzIgNDkuNmwyNS4yIDM4LjgtMzYuNCAyLjQtMTkuMi0zNi44LTQgMzguMy0yOC40IDEuOSAzLjMtMzEuNWMtNi43IDkuMy0xOS43IDM1LjQtNTkuNiAzOC0yNi4yIDEuNy00NS42LTEwLjMtNTUuNC0zOS4ybC00IDQwLjMtMjUgMS42LTM3LjYtNjMuMy02LjMgNjYuMi01Ni44IDMuN3ptMjc2LjYtODIuMWMxMC4yLS43IDE3LjUtMi4xIDIxLjYtNC4zIDQuNS0yLjQgNy02LjQgNy42LTEyLjEuNi01LjMtLjYtOC44LTMuNC0xMC40LTMuNi0yLjEtMTAuNi0yLjgtMjIuOS0ybC0yLjkgMjguOHpNMzI3LjcgMjE0YzUuNiA1LjkgMTIuNyA4LjUgMjEuMyA3LjkgNC43LS4zIDkuMS0xLjggMTMuMy00LjEgNS41LTMgMTAuNi04IDE1LjEtMTQuM2wtMzQuMiAyLjMgMi40LTIzLjkgNjMuMS00LjMgMS4yLTEyLTMxLjIgMi4xYy00LjEtMy43LTcuOC02LjYtMTEuMS04LjEtNC0xLjctOC4xLTIuOC0xMi4yLTIuNS04IC41LTE1LjMgMy42LTIyIDkuMi03LjcgNi40LTEyIDE0LjUtMTIuOSAyNC40LTEuMSA5LjYgMS40IDE3LjMgNy4yIDIzLjN6bS0yMDEuMyA4LjJsMjMuOC0xLjYtOC4zLTM3LjYtMTUuNSAzOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmd1bGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4NS43IDI2OC4xaDc2LjJsLTM4LjEtOTEuNi0zOC4xIDkxLjZ6TTIyMy44IDMyTDE2IDEwNi40bDMxLjggMjc1LjcgMTc2IDk3LjkgMTc2LTk3LjkgMzEuOC0yNzUuN3pNMzU0IDM3My44aC00OC42bC0yNi4yLTY1LjRIMTY4LjZsLTI2LjIgNjUuNEg5My43TDIyMy44IDgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFwcFN0b3JlSW9zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTEyNyAzODQuNWMtNS41IDkuNi0xNy44IDEyLjgtMjcuMyA3LjMtOS42LTUuNS0xMi44LTE3LjgtNy4zLTI3LjNsMTQuMy0yNC43YzE2LjEtNC45IDI5LjMtMS4xIDM5LjYgMTEuNEwxMjcgMzg0LjV6bTEzOC45LTUzLjlIODRjLTExIDAtMjAtOS0yMC0yMHM5LTIwIDIwLTIwaDUxbDY1LjQtMTEzLjItMjAuNS0zNS40Yy01LjUtOS42LTIuMi0yMS44IDcuMy0yNy4zIDkuNi01LjUgMjEuOC0yLjIgMjcuMyA3LjNsOC45IDE1LjQgOC45LTE1LjRjNS41LTkuNiAxNy44LTEyLjggMjcuMy03LjMgOS42IDUuNSAxMi44IDE3LjggNy4zIDI3LjNsLTg1LjggMTQ4LjZoNjIuMWMyMC4yIDAgMzEuNSAyMy43IDIyLjcgNDB6bTk4LjEgMGgtMjlsMTkuNiAzMy45YzUuNSA5LjYgMi4yIDIxLjgtNy4zIDI3LjMtOS42IDUuNS0yMS44IDIuMi0yNy4zLTcuMy0zMi45LTU2LjktNTcuNS05OS43LTc0LTEyOC4xLTE2LjctMjktNC44LTU4IDcuMS02Ny44IDEzLjEgMjIuNyAzMi43IDU2LjcgNTguOSAxMDJoNTJjMTEgMCAyMCA5IDIwIDIwIDAgMTEuMS05IDIwLTIwIDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBTdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTUuOSAxMjAuOWw5LjEtMTUuN2M1LjYtOS44IDE4LjEtMTMuMSAyNy45LTcuNSA5LjggNS42IDEzLjEgMTguMSA3LjUgMjcuOWwtODcuNSAxNTEuNWg2My4zYzIwLjUgMCAzMiAyNC4xIDIzLjEgNDAuOEgxMTMuOGMtMTEuMyAwLTIwLjQtOS4xLTIwLjQtMjAuNCAwLTExLjMgOS4xLTIwLjQgMjAuNC0yMC40aDUybDY2LjYtMTE1LjQtMjAuOC0zNi4xYy01LjYtOS44LTIuMy0yMi4yIDcuNS0yNy45IDkuOC01LjYgMjIuMi0yLjMgMjcuOSA3LjVsOC45IDE1Ljd6bS03OC43IDIxOGwtMTkuNiAzNGMtNS42IDkuOC0xOC4xIDEzLjEtMjcuOSA3LjUtOS44LTUuNi0xMy4xLTE4LjEtNy41LTI3LjlsMTQuNi0yNS4yYzE2LjQtNS4xIDI5LjgtMS4yIDQwLjQgMTEuNnptMTY4LjktNjEuN2g1My4xYzExLjMgMCAyMC40IDkuMSAyMC40IDIwLjQgMCAxMS4zLTkuMSAyMC40LTIwLjQgMjAuNGgtMjkuNWwxOS45IDM0LjVjNS42IDkuOCAyLjMgMjIuMi03LjUgMjcuOS05LjggNS42LTIyLjIgMi4zLTI3LjktNy41LTMzLjUtNTguMS01OC43LTEwMS42LTc1LjQtMTMwLjYtMTcuMS0yOS41LTQuOS01OS4xIDcuMi02OS4xIDEzLjQgMjMgMzMuNCA1Ny43IDYwLjEgMTA0ek0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0yMTYgMjQ4YzAgMTE4LjctOTYuMSAyMTYtMjE2IDIxNi0xMTguNyAwLTIxNi05Ni4xLTIxNi0yMTYgMC0xMTguNyA5Ni4xLTIxNiAyMTYtMjE2IDExOC43IDAgMjE2IDk2LjEgMjE2IDIxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXBwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIuMSAyMzkuMWMyMi4yIDAgMjkgMi44IDMzLjUgMTQuNmguOHYtMjIuOWMwLTExLjMtNC44LTE1LjQtMTcuOS0xNS40LTExLjMgMC0xNC40IDIuNS0xNS4xIDEyLjhINC44Yy4zLTEzLjkgMS41LTE5LjEgNS44LTI0LjRDMTcuOSAxOTUgMjkuNSAxOTIgNTYuNyAxOTJjMzMgMCA0Ny4xIDUgNTMuOSAxOC45IDIgNC4zIDQgMTUuNiA0IDIzLjd2NzYuM0g3Ni4zbDEuMy0xOS4xaC0xYy01LjMgMTUuNi0xMy42IDIwLjQtMzUuNSAyMC40LTMwLjMgMC00MS4xLTEwLjEtNDEuMS0zNy4zIDAtMjUuMiAxMi4zLTM1LjggNDIuMS0zNS44em0xNy4xIDQ4LjFjMTMuMSAwIDE2LjktMyAxNi45LTEzLjQgMC05LjEtNC4zLTExLjYtMTkuNi0xMS42LTEzLjEgMC0xNy45IDMtMTcuOSAxMi4xLS4xIDEwLjQgMy43IDEyLjkgMjAuNiAxMi45em03Ny44LTk0LjloMzguM2wtMS41IDIwLjZoLjhjOS4xLTE3LjEgMTUuOS0yMC45IDM3LjUtMjAuOSAxNC40IDAgMjQuNyAzIDMxLjUgOS4xIDkuOCA4LjYgMTIuOCAyMC40IDEyLjggNDguMSAwIDMwLTMgNDMuMS0xMi4xIDUyLjktNi44IDcuMy0xNi40IDEwLjEtMzMuMiAxMC4xLTIwLjQgMC0yOS4yLTUuNS0zMy44LTIxLjJoLS44djcwLjNIMTM3di0xNjl6bTgwLjkgNjAuN2MwLTI3LjUtMy4zLTMyLjUtMjAuNy0zMi41LTE2LjkgMC0yMC43IDUtMjAuNyAyOC43IDAgMjggMy41IDMzLjUgMjEuMiAzMy41IDE2LjQgMCAyMC4yLTUuNiAyMC4yLTI5Ljd6bTU3LjktNjAuN2gzOC4zbC0xLjUgMjAuNmguOGM5LjEtMTcuMSAxNS45LTIwLjkgMzcuNS0yMC45IDE0LjQgMCAyNC43IDMgMzEuNSA5LjEgOS44IDguNiAxMi44IDIwLjQgMTIuOCA0OC4xIDAgMzAtMyA0My4xLTEyLjEgNTIuOS02LjggNy4zLTE2LjQgMTAuMS0zMy4zIDEwLjEtMjAuNCAwLTI5LjItNS41LTMzLjgtMjEuMmgtLjh2NzAuM2gtMzkuNXYtMTY5em04MC45IDYwLjdjMC0yNy41LTMuMy0zMi41LTIwLjctMzIuNS0xNi45IDAtMjAuNyA1LTIwLjcgMjguNyAwIDI4IDMuNSAzMy41IDIxLjIgMzMuNSAxNi40IDAgMjAuMi01LjYgMjAuMi0yOS43em01My44LTMuOGMwLTI1LjQgMy4zLTM3LjggMTIuMy00NS44IDguOC04LjEgMjIuMi0xMS4zIDQ1LjEtMTEuMyA0Mi44IDAgNTUuNyAxMi44IDU1LjcgNTUuN3YxMS4xaC03NS4zYy0uMyAyLS4zIDQtLjMgNC44IDAgMTYuOSA0LjUgMjEuOSAyMC4xIDIxLjkgMTMuOSAwIDE3LjktMyAxNy45LTEzLjloMzcuNXYyLjNjMCA5LjgtMi41IDE4LjktNi44IDI0LjctNy4zIDkuOC0xOS42IDEzLjYtNDQuMyAxMy42LTI3LjUgMC00MS42LTMuMy01MC42LTEyLjMtOC41LTguNS0xMS4zLTIxLjMtMTEuMy01MC44em03Ni40LTExLjZjLS4zLTEuOC0uMy0zLjMtLjMtMy44IDAtMTIuMy0zLjMtMTQuNi0xOS42LTE0LjYtMTQuNCAwLTE3LjEgMy0xOC4xIDE1LjFsLS4zIDMuM2gzOC4zem01NS42LTQ1LjNoMzguM2wtMS44IDE5LjloLjdjNi44LTE0LjkgMTQuNC0yMC4yIDI5LjctMjAuMiAxMC44IDAgMTkuMSAzLjMgMjMuNCA5LjMgNS4zIDcuMyA2LjggMTQuNCA2LjggMzQgMCAxLjUgMCA1IC4yIDkuM2gtMzVjLjMtMS44LjMtMy4zLjMtNCAwLTE1LjQtMi0xOS40LTEwLjMtMTkuNC02LjMgMC0xMC44IDMuMy0xMy4xIDkuMy0xIDMtMSA0LjMtMSAxMi4zdjY4aC0zOC4zVjE5Mi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBsZVBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTYuOSAxNTguNWMtNy41IDguOS0xOS41IDE1LjktMzEuNSAxNC45LTEuNS0xMiA0LjQtMjQuOCAxMS4zLTMyLjYgNy41LTkuMSAyMC42LTE1LjYgMzEuMy0xNi4xIDEuMiAxMi40LTMuNyAyNC43LTExLjEgMzMuOG0xMC45IDE3LjJjLTE3LjQtMS0zMi4zIDkuOS00MC41IDkuOS04LjQgMC0yMS05LjQtMzQuOC05LjEtMTcuOS4zLTM0LjUgMTAuNC00My42IDI2LjUtMTguOCAzMi4zLTQuOSA4MCAxMy4zIDEwNi4zIDguOSAxMyAxOS41IDI3LjMgMzMuNSAyNi44IDEzLjMtLjUgMTguNS04LjYgMzQuNS04LjYgMTYuMSAwIDIwLjggOC42IDM0LjggOC40IDE0LjUtLjMgMjMuNi0xMyAzMi41LTI2IDEwLjEtMTQuOCAxNC4zLTI5LjEgMTQuNS0yOS45LS4zLS4zLTI4LTEwLjktMjguMy00Mi45LS4zLTI2LjggMjEuOS0zOS41IDIyLjktNDAuMy0xMi41LTE4LjYtMzItMjAuNi0zOC44LTIxLjFtMTAwLjQtMzYuMnYxOTQuOWgzMC4zdi02Ni42aDQxLjljMzguMyAwIDY1LjEtMjYuMyA2NS4xLTY0LjNzLTI2LjQtNjQtNjQuMS02NGgtNzMuMnptMzAuMyAyNS41aDM0LjljMjYuMyAwIDQxLjMgMTQgNDEuMyAzOC42cy0xNSAzOC44LTQxLjQgMzguOGgtMzQuOFYxNjV6bTE2Mi4yIDE3MC45YzE5IDAgMzYuNi05LjYgNDQuNi0yNC45aC42djIzLjRoMjh2LTk3YzAtMjguMS0yMi41LTQ2LjMtNTcuMS00Ni4zLTMyLjEgMC01NS45IDE4LjQtNTYuOCA0My42aDI3LjNjMi4zLTEyIDEzLjQtMTkuOSAyOC42LTE5LjkgMTguNSAwIDI4LjkgOC42IDI4LjkgMjQuNXYxMC44bC0zNy44IDIuM2MtMzUuMSAyLjEtNTQuMSAxNi41LTU0LjEgNDEuNS4xIDI1LjIgMTkuNyA0MiA0Ny44IDQyem04LjItMjMuMWMtMTYuMSAwLTI2LjQtNy44LTI2LjQtMTkuNiAwLTEyLjMgOS45LTE5LjQgMjguOC0yMC41bDMzLjYtMi4xdjExYzAgMTguMi0xNS41IDMxLjItMzYgMzEuMnptMTAyLjUgNzQuNmMyOS41IDAgNDMuNC0xMS4zIDU1LjUtNDUuNEw2NDAgMTkzaC0zMC44bC0zNS42IDExNS4xaC0uNkw1MzcuNCAxOTNoLTMxLjZMNTU3IDMzNC45bC0yLjggOC42Yy00LjYgMTQuNi0xMi4xIDIwLjMtMjUuNSAyMC4zLTIuNCAwLTctLjMtOC45LS41djIzLjRjMS44LjQgOS4zLjcgMTEuNi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguNyAyNjguN2MtLjItMzYuNyAxNi40LTY0LjQgNTAtODQuOC0xOC44LTI2LjktNDcuMi00MS43LTg0LjctNDQuNi0zNS41LTIuOC03NC4zIDIwLjctODguNSAyMC43LTE1IDAtNDkuNC0xOS43LTc2LjQtMTkuN0M2My4zIDE0MS4yIDQgMTg0LjggNCAyNzMuNXEwIDM5LjMgMTQuNCA4MS4yYzEyLjggMzYuNyA1OSAxMjYuNyAxMDcuMiAxMjUuMiAyNS4yLS42IDQzLTE3LjkgNzUuOC0xNy45IDMxLjggMCA0OC4zIDE3LjkgNzYuNCAxNy45IDQ4LjYtLjcgOTAuNC04Mi41IDEwMi42LTExOS4zLTY1LjItMzAuNy02MS43LTkwLTYxLjctOTEuOXptLTU2LjYtMTY0LjJjMjcuMy0zMi40IDI0LjgtNjEuOSAyNC03Mi41LTI0LjEgMS40LTUyIDE2LjQtNjcuOSAzNC45LTE3LjUgMTkuOC0yNy44IDQ0LjMtMjUuNiA3MS45IDI2LjEgMiA0OS45LTExLjQgNjkuNS0zNC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnRzdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMzc3LjRsNDMgNzQuM0E1MS4zNSA1MS4zNSAwIDAgMCA5MC45IDQ4MGgyODUuNGwtNTkuMi0xMDIuNnpNNTAxLjggMzUwTDMzNS42IDU5LjNBNTEuMzggNTEuMzggMCAwIDAgMjkwLjIgMzJoLTg4LjRsMjU3LjMgNDQ3LjYgNDAuNy03MC41YzEuOS0zLjIgMjEtMjkuNyAyLTU5LjF6TTI3NSAzMDQuNWwtMTE1LjUtMjAwTDQ0IDMwNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBc3ltbWV0cmlrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxNy41IDMwOS4yYzM4LjgtNDAgNTguMS04MCA1OC41LTExNi4xLjgtNjUuNS01OS40LTExOC4yLTE2OS40LTEzNUMyNzcuOSAzOC40IDExOC4xIDczLjYgMCAxNDAuNSA1MiAxMTQgMTEwLjYgOTIuMyAxNzAuNyA4Mi4zYzc0LjUtMjAuNSAxNTMtMjUuNCAyMjEuMy0xNC44QzU0NC41IDkxLjMgNTg4LjggMTk1IDQ5MC44IDI5OS4yYy0xMC4yIDEwLjgtMjIgMjEuMS0zNSAzMC42TDMwNC45IDEwMy40IDExNC43IDM4OC45Yy02NS42LTI5LjQtNzYuNS05MC4yLTE5LjEtMTUxLjIgMjAuOC0yMi4yIDQ4LjMtNDEuOSA3OS41LTU4LjEgMjAtMTIuMiAzOS43LTIyLjYgNjItMzAuNy02NS4xIDIwLjMtMTIyLjcgNTIuOS0xNjEuNiA5Mi45LTI3LjcgMjguNi00MS40IDU3LjEtNDEuNyA4Mi45LS41IDM1LjEgMjMuNCA2NS4xIDY4LjQgODNsLTM0LjUgNTEuN2gxMDEuNmwyMi0zNC40YzIyLjIgMSA0NS4zIDAgNjguNi0yLjdsLTIyLjggMzcuMWgxMzUuNUwzNDAgNDA2LjNjMTguNi01LjMgMzYuOS0xMS41IDU0LjUtMTguN2w0NS45IDcxLjhINTQyTDQ2OC42IDM0OWMxOC41LTEyLjEgMzUtMjUuNSA0OC45LTM5Ljh6bS0xODcuNiA4MC41bC0yNS00MC42LTMyLjcgNTMuM2MtMjMuNCAzLjUtNDYuNyA1LjEtNjkuMiA0LjRsMTAxLjktMTU5LjMgNzguNyAxMjNjLTE3LjIgNy40LTM1LjMgMTMuOS01My43IDE5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF0bGFzc2lhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTIuMiAyMzYuNGMtNy43LTguMi0xOS43LTcuNy0yNC44IDIuOEwxLjYgNDkwLjJjLTUgMTAgMi40IDIxLjcgMTMuNCAyMS43aDE3NWM1LjguMSAxMS0zLjIgMTMuNC04LjQgMzcuOS03Ny44IDE1LjEtMTk2LjMtNTEuMi0yNjcuMXpNMjQ0LjQgOC4xYy0xMjIuMyAxOTMuNC04LjUgMzQ4LjYgNjUgNDk1LjUgMi41IDUuMSA3LjcgOC40IDEzLjQgOC40SDQ5N2MxMS4yIDAgMTguNC0xMS44IDEzLjQtMjEuNyAwIDAtMjM0LjUtNDcwLjYtMjQwLjQtNDgyLjMtNS4zLTEwLjYtMTguOC0xMC44LTI1LjYuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXVkaWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMTk5Ljl2NTRsLTMyMCAyMDBMMCAyNTR2LTU0bDMyMCAyMDAgMzIwLTIwMC4xem0tMTk0LjUgNzJsNDcuMS0yOS40Yy0zNy4yLTU1LjgtMTAwLjctOTIuNi0xNzIuNy05Mi42LTcyIDAtMTM1LjUgMzYuNy0xNzIuNiA5Mi40aC4zYzIuNS0yLjMgNS4xLTQuNSA3LjctNi43IDg5LjctNzQuNCAyMTkuNC01OC4xIDI5MC4yIDM2LjN6bS0yMjAuMSAxOC44YzE2LjktMTEuOSAzNi41LTE4LjcgNTcuNC0xOC43IDM0LjQgMCA2NS4yIDE4LjQgODYuNCA0Ny42bDQ1LjQtMjguNGMtMjAuOS0yOS45LTU1LjYtNDkuNS05NC44LTQ5LjUtMzguOSAwLTczLjQgMTkuNC05NC40IDQ5ek0xMDMuNiAxNjEuMWMxMzEuOC0xMDQuMyAzMTguMi03Ni40IDQxNy41IDYyLjFsLjcgMSA0OC44LTMwLjRDNTE3LjEgMTEyLjEgNDI0LjggNTguMSAzMTkuOSA1OC4xYy0xMDMuNSAwLTE5Ni42IDUzLjUtMjUwLjUgMTM1LjYgOS45LTEwLjUgMjIuNy0yMy41IDM0LjItMzIuNnptNDY3IDMyLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF1dG9wcmVmaXhlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguNCAxNmwtMTYxIDQ4MGg3Ny41bDI1LjQtODEuNGgxMTkuNUw0MDUgNDk2aDc3LjVMMzE4LjQgMTZ6bS00MC4zIDM0MS45bDQxLjItMTMwLjRoMS41bDQwLjkgMTMwLjRoLTgzLjZ6TTY0MCA0MDVsLTEwLTMxLjRMNDYyLjEgMzU4bDE5LjQgNTYuNUw2NDAgNDA1em0tNDYyLjEtNDdMMTAgMzczLjcgMCA0MDVsMTU4LjUgOS40IDE5LjQtNTYuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXZpYW5leCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTMuMSAzMmgtMzEyYy0zOC45IDAtNzYuMiAzMS4yLTgzLjMgNjkuN0wxLjIgNDEwLjNDLTUuOSA0NDguOCAxOS45IDQ4MCA1OC45IDQ4MGgzMTJjMzguOSAwIDc2LjItMzEuMiA4My4zLTY5LjdsNTYuNy0zMDguNWM3LTM4LjYtMTguOC02OS44LTU3LjgtNjkuOHptLTU4LjIgMzQ3LjNsLTMyIDEzLjUtMTE1LjQtMTEwYy0xNC43IDEwLTI5LjIgMTkuNS00MS43IDI3LjFsMjIuMSA2NC4yLTE3LjkgMTIuNy00MC42LTYxLTUyLjQtNDguMSAxNS43LTE1LjQgNTggMzEuMWM5LjMtMTAuNSAyMC44LTIyLjYgMzIuOC0zNC45TDIwMyAyMjguOWwtNjguOC05OS44IDE4LjgtMjguOSA4LjktNC44TDI2NSAyMDcuOGw0LjkgNC41YzE5LjQtMTguOCAzMy44LTMyLjQgMzMuOC0zMi40IDcuNy02LjUgMjEuNS0yLjkgMzAuNyA3LjkgOSAxMC41IDEwLjYgMjQuNyAyLjcgMzEuMy0xLjggMS4zLTE1LjUgMTEuNC0zNS4zIDI1LjZsNC41IDcuMyA5NC45IDExOS40LTYuMyA3Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF2aWF0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDcuMiAyODMuNWwtMTktNDEuOEgzNi4xbC0xOSA0MS44SDBsNjIuMi0xMzEuNCA2Mi4yIDEzMS40aC0xNy4yem0tNDUtOTguMWwtMTkuNiA0Mi41aDM5LjJsLTE5LjYtNDIuNXptMTEyLjcgMTAyLjRsLTYyLjItMTMxLjRoMTcuMWw0NS4xIDk2IDQ1LjEtOTZoMTdsLTYyLjEgMTMxLjR6bTgwLjYtNC4zVjE1Ni40SDI3MXYxMjcuMWgtMTUuNXptMjA5LjEtMTE1LjZ2MTE1LjZoLTE3LjNWMTY3LjloLTQxLjJ2LTExLjVoOTkuNnYxMS41aC00MS4xek02NDAgMjE4LjhjMCA5LjItMS43IDE3LjgtNS4xIDI1LjgtMy40IDgtOC4yIDE1LjEtMTQuMiAyMS4xLTYgNi0xMy4xIDEwLjgtMjEuMSAxNC4yLTggMy40LTE2LjYgNS4xLTI1LjggNS4xcy0xNy44LTEuNy0yNS44LTUuMWMtOC0zLjQtMTUuMS04LjItMjEuMS0xNC4yLTYtNi0xMC44LTEzLTE0LjItMjEuMS0zLjQtOC01LjEtMTYuNi01LjEtMjUuOHMxLjctMTcuOCA1LjEtMjUuOGMzLjQtOCA4LjItMTUuMSAxNC4yLTIxLjEgNi02IDEzLTguNCAyMS4xLTExLjkgOC0zLjQgMTYuNi01LjEgMjUuOC01LjFzMTcuOCAxLjcgMjUuOCA1LjFjOCAzLjQgMTUuMSA1LjggMjEuMSAxMS45IDYgNiAxMC43IDEzLjEgMTQuMiAyMS4xIDMuNCA4IDUuMSAxNi42IDUuMSAyNS44em0tMTUuNSAwYzAtNy4zLTEuMy0xNC0zLjktMjAuMy0yLjYtNi4zLTYuMi0xMS43LTEwLjgtMTYuMy00LjYtNC42LTEwLTguMi0xNi4yLTEwLjktNi4yLTIuNy0xMi44LTQtMTkuOC00cy0xMy42IDEuMy0xOS44IDRjLTYuMiAyLjctMTEuNiA2LjMtMTYuMiAxMC45LTQuNiA0LjYtOC4yIDEwLTEwLjggMTYuMy0yLjYgNi4zLTMuOSAxMy4xLTMuOSAyMC4zIDAgNy4zIDEuMyAxNCAzLjkgMjAuMyAyLjYgNi4zIDYuMiAxMS43IDEwLjggMTYuMyA0LjYgNC42IDEwIDguMiAxNi4yIDEwLjkgNi4yIDIuNyAxMi44IDQgMTkuOCA0czEzLjYtMS4zIDE5LjgtNGM2LjItMi43IDExLjYtNi4zIDE2LjItMTAuOSA0LjYtNC42IDguMi0xMCAxMC44LTE2LjMgMi42LTYuMyAzLjktMTMuMSAzLjktMjAuM3ptLTk0LjggOTYuN3YtNi4zbDg4LjktMTAtMjQyLjkgMTMuNGMuNi0yLjIgMS4xLTQuNiAxLjQtNy4yLjMtMiAuNS00LjIuNi02LjVsNjQuOC04LjEtNjQuOSAxLjljMC0uNC0uMS0uNy0uMS0xLjEtMi44LTE3LjItMjUuNS0yMy43LTI1LjUtMjMuN2wtMS4xLTI2LjNoMjMuOGwxOSA0MS44aDE3LjFMMzQ4LjYgMTUybC02Mi4yIDEzMS40aDE3LjFsMTktNDEuOGgyMy42TDM0NSAyNjhzLTIyLjcgNi41LTI1LjUgMjMuN2MtLjEuMy0uMS43LS4xIDEuMWwtNjQuOS0xLjkgNjQuOCA4LjFjLjEgMi4zLjMgNC40LjYgNi41LjMgMi42LjggNSAxLjQgNy4yTDc4LjQgMjk5LjJsODguOSAxMHY2LjNjLTUuOS45LTEwLjUgNi0xMC41IDEyLjIgMCA2LjggNS42IDEyLjQgMTIuNCAxMi40IDYuOCAwIDEyLjQtNS42IDEyLjQtMTIuNCAwLTYuMi00LjYtMTEuMy0xMC41LTEyLjJ2LTUuOGw4MC4zIDl2NS40Yy01LjcgMS4xLTkuOSA2LjItOS45IDEyLjEgMCA2LjggNS42IDEwLjIgMTIuNCAxMC4yIDYuOCAwIDEyLjQtMy40IDEyLjQtMTAuMiAwLTYtNC4zLTExLTkuOS0xMi4xdi00LjlsMjguNCAzLjJ2MjMuN2gtNS45VjM2MGg1Ljl2LTYuNmg1djYuNmg1Ljl2LTEzLjhoLTUuOVYzMjNsMzguMyA0LjNjOC4xIDExLjQgMTkgMTMuNiAxOSAxMy42bC0uMSA2LjctNS4xLjItLjEgMTIuMWg0LjFsLjEtNWg1LjJsLjEgNWg0LjFsLS4xLTEyLjEtNS4xLS4yLS4xLTYuN3MxMC45LTIuMSAxOS0xMy42bDM4LjMtNC4zdjIzLjJoLTUuOVYzNjBoNS45di02LjZoNXY2LjZoNS45di0xMy44aC01Ljl2LTIzLjdsMjguNC0zLjJ2NC45Yy01LjcgMS4xLTkuOSA2LjItOS45IDEyLjEgMCA2LjggNS42IDEwLjIgMTIuNCAxMC4yIDYuOCAwIDEyLjQtMy40IDEyLjQtMTAuMiAwLTYtNC4zLTExLTkuOS0xMi4xdi01LjRsODAuMy05djUuOGMtNS45LjktMTAuNSA2LTEwLjUgMTIuMiAwIDYuOCA1LjYgMTIuNCAxMi40IDEyLjQgNi44IDAgMTIuNC01LjYgMTIuNC0xMi40LS4yLTYuMy00LjctMTEuNC0xMC43LTEyLjN6bS0yMDAuOC04Ny42bDE5LjYtNDIuNSAxOS42IDQyLjVoLTE3LjlsLTEuNy00MC4zLTEuNyA0MC4zaC0xNy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgwLjQxIDIwMy4wMWMtLjcyIDIyLjY1IDEwLjYgMzIuNjggMTAuODggMzkuMDVhOC4xNjQgOC4xNjQgMCAwIDEtNC4xIDYuMjdsLTEyLjggOC45NmExMC42NiAxMC42NiAwIDAgMS01LjYzIDEuOTJjLS40My0uMDItOC4xOSAxLjgzLTIwLjQ4LTI1LjYxYTc4LjYwOCA3OC42MDggMCAwIDEtNjIuNjEgMjkuNDVjLTE2LjI4Ljg5LTYwLjQtOS4yNC01OC4xMy01Ni4yMS0xLjU5LTM4LjI4IDM0LjA2LTYyLjA2IDcwLjkzLTYwLjA1IDcuMS4wMiAyMS42LjM3IDQ2Ljk5IDYuMjd2LTE1LjYyYzIuNjktMjYuNDYtMTQuNy00Ni45OS00NC44MS00My45MS0yLjQuMDEtMTkuNC0uNS00NS44NCAxMC4xMS03LjM2IDMuMzgtOC4zIDIuODItMTAuNzUgMi44Mi03LjQxIDAtNC4zNi0yMS40OC0yLjk0LTI0LjIgNS4yMS02LjQgMzUuODYtMTguMzUgNjUuOTQtMTguMThhNzYuODU3IDc2Ljg1NyAwIDAgMSA1NS42OSAxNy4yOCA3MC4yODUgNzAuMjg1IDAgMCAxIDE3LjY3IDUyLjM2bC0uMDEgNjkuMjl6TTkzLjk5IDIzNS40YzMyLjQzLS40NyA0Ni4xNi0xOS45NyA0OS4yOS0zMC40NyAyLjQ2LTEwLjA1IDIuMDUtMTYuNDEgMi4wNS0yNy40LTkuNjctMi4zMi0yMy41OS00Ljg1LTM5LjU2LTQuODctMTUuMTUtMS4xNC00Mi44MiA1LjYzLTQxLjc0IDMyLjI2LTEuMjQgMTYuNzkgMTEuMTIgMzEuNCAyOS45NiAzMC40OHptMTcwLjkyIDIzLjA1Yy03Ljg2LjcyLTExLjUyLTQuODYtMTIuNjgtMTAuMzdsLTQ5LjgtMTY0LjY1Yy0uOTctMi43OC0xLjYxLTUuNjUtMS45Mi04LjU4YTQuNjEgNC42MSAwIDAgMSAzLjg2LTUuMjVjLjI0LS4wNC0yLjEzIDAgMjIuMjUgMCA4Ljc4LS44OCAxMS42NCA2LjAzIDEyLjU1IDEwLjM3bDM1LjcyIDE0MC44MyAzMy4xNi0xNDAuODNjLjUzLTMuMjIgMi45NC0xMS4wNyAxMi44LTEwLjI0aDE3LjE2YzIuMTctLjE4IDExLjExLS41IDEyLjY4IDEwLjM3bDMzLjQyIDE0Mi42M0w0MjAuOTggODAuMWMuNDgtMi4xOCAyLjcyLTExLjM3IDEyLjY4LTEwLjM3aDE5LjcyYy44NS0uMTMgNi4xNS0uODEgNS4yNSA4LjU4LS40MyAxLjg1IDMuNDEtMTAuNjYtNTIuNzUgMTY5LjktMS4xNSA1LjUxLTQuODIgMTEuMDktMTIuNjggMTAuMzdoLTE4LjY5Yy0xMC45NCAxLjE1LTEyLjUxLTkuNjYtMTIuNjgtMTAuNzVMMzI4LjY3IDExMC43bC0zMi43OCAxMzYuOTljLS4xNiAxLjA5LTEuNzMgMTEuOS0xMi42OCAxMC43NWgtMTguM3ptMjczLjQ4IDUuNjNjLTUuODguMDEtMzMuOTItLjMtNTcuMzYtMTIuMjlhMTIuODAyIDEyLjgwMiAwIDAgMS03LjgxLTExLjkxdi0xMC43NWMwLTguNDUgNi4yLTYuOSA4LjgzLTUuODkgMTAuMDQgNC4wNiAxNi40OCA3LjE0IDI4LjgxIDkuNiAzNi42NSA3LjUzIDUyLjc3LTIuMyA1Ni43Mi00LjQ4IDEzLjE1LTcuODEgMTQuMTktMjUuNjggNS4yNS0zNC45NS0xMC40OC04Ljc5LTE1LjQ4LTkuMTItNTMuMTMtMjEtNC42NC0xLjI5LTQzLjctMTMuNjEtNDMuNzktNTIuMzYtLjYxLTI4LjI0IDI1LjA1LTU2LjE4IDY5LjUyLTU1Ljk1IDEyLjY3LS4wMSA0Ni40MyA0LjEzIDU1LjU3IDE1LjYyIDEuMzUgMi4wOSAyLjAyIDQuNTUgMS45MiA3LjA0djEwLjExYzAgNC40NC0xLjYyIDYuNjYtNC44NyA2LjY2LTcuNzEtLjg2LTIxLjM5LTExLjE3LTQ5LjE2LTEwLjc1LTYuODktLjM2LTM5Ljg5LjkxLTM4LjQxIDI0Ljk3LS40MyAxOC45NiAyNi42MSAyNi4wNyAyOS43IDI2Ljg5IDM2LjQ2IDEwLjk3IDQ4LjY1IDEyLjc5IDYzLjEyIDI5LjU4IDE3LjE0IDIyLjI1IDcuOSA0OC4zIDQuMzUgNTUuNDQtMTkuMDggMzcuNDktNjguNDIgMzQuNDQtNjkuMjYgMzQuNDJ6bTQwLjIgMTA0Ljg2Yy03MC4wMyA1MS43Mi0xNzEuNjkgNzkuMjUtMjU4LjQ5IDc5LjI1QTQ2OS4xMjcgNDY5LjEyNyAwIDAgMSAyLjgzIDMyNy40NmMtNi41My01Ljg5LS43Ny0xMy45NiA3LjE3LTkuNDdhNjM3LjM3IDYzNy4zNyAwIDAgMCAzMTYuODggODQuMTIgNjMwLjIyIDYzMC4yMiAwIDAgMCAyNDEuNTktNDkuNTVjMTEuNzgtNSAyMS43NyA3LjggMTAuMTIgMTYuMzh6bTI5LjE5LTMzLjI5Yy04Ljk2LTExLjUyLTU5LjI4LTUuMzgtODEuODEtMi42OS02Ljc5Ljc3LTcuOTQtNS4xMi0xLjc5LTkuNDcgNDAuMDctMjguMTcgMTA1Ljg4LTIwLjEgMTEzLjQ0LTEwLjYzIDcuNTUgOS40Ny0yLjA1IDc1LjQxLTM5LjU2IDEwNi45MS01Ljc2IDQuODctMTEuMjcgMi4zLTguNzEtNC4xIDguNDQtMjEuMjUgMjcuMzktNjguNDkgMTguNDMtODAuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbmRjYW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Niw4QzExOSw4LDgsMTE5LDgsMjU2UzExOSw1MDQsMjU2LDUwNCw1MDQsMzkzLDUwNCwyNTYsMzkzLDgsMjU2LDhabTQ4LjIsMzI2LjFoLTE4MUwyMDcuOSwxNzhoMTgxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXR0bGVOZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4LjYxIDIyNS42MmMyNi44Ny4xOCAzNS41Ny03LjQzIDM4LjkyLTEyLjM3IDEyLjQ3LTE2LjMyLTcuMDYtNDcuNi01Mi44NS03MS4zMyAxNy43Ni0zMy41OCAzMC4xMS02My42OCAzNi4zNC04NS4zIDMuMzgtMTEuODMgMS4wOS0xOSAuNDUtMjAuMjUtMS43MiAxMC41Mi0xNS44NSA0OC40Ni00OC4yIDEwMC4wNS0yNS0xMS4yMi01Ni41Mi0yMC4xLTkzLjc3LTIzLjgtOC45NC0xNi45NC0zNC44OC02My44Ni02MC40OC04OC45M0MyNTIuMTggNy4xNCAyMzguNyAxLjA3IDIyOC4xOC4yMmgtLjA1Yy0xMy44My0xLjU1LTIyLjY3IDUuODUtMjcuNCAxMS0xNy4yIDE4LjUzLTI0LjMzIDQ4Ljg3LTI1IDg0LjA3LTcuMjQtMTIuMzUtMTcuMTctMjQuNjMtMjguNS0yNS45M2gtLjE4Yy0yMC42Ni0zLjQ4LTM4LjM5IDI5LjIyLTM2IDgxLjI5LTM4LjM2IDEuMzgtNzEgNS43NS05MyAxMS4yMy05LjkgMi40NS0xNi4yMiA3LjI3LTE3Ljc2IDkuNzIgMS0uMzggMjIuNC05LjIyIDExMS41Ni05LjIyIDUuMjIgNTMgMjkuNzUgMTAxLjgyIDI2IDkzLjE5LTkuNzMgMTUuNC0zOC4yNCA2Mi4zNi00Ny4zMSA5Ny43LTUuODcgMjIuODgtNC4zNyAzNy42MS4xNSA0Ny4xNCA1LjU3IDEyLjc1IDE2LjQxIDE2LjcyIDIzLjIgMTguMjYgMjUgNS43MSA1NS4zOC0zLjYzIDg2LjctMjEuMTQtNy41MyAxMi44NC0xMy45IDI4LjUxLTkuMDYgMzkuMzQgNy4zMSAxOS42NSA0NC40OSAxOC42NiA4OC40NC05LjQ1IDIwLjE4IDMyLjE4IDQwLjA3IDU3Ljk0IDU1LjcgNzQuMTJhMzkuNzkgMzkuNzkgMCAwIDAgOC43NSA3LjA5YzUuMTQgMy4yMSA4LjU4IDMuMzcgOC41OCAzLjM3LTguMjQtNi43NS0zNC0zOC02Mi41NC05MS43OCAyMi4yMi0xNiA0NS42NS0zOC44NyA2Ny40Ny02OS4yNyAxMjIuODIgNC42IDE0My4yOS0yNC43NiAxNDgtMzEuNjQgMTQuNjctMTkuODggMy40My01Ny40NC01Ny4zMi05My42OXptLTc3Ljg1IDEwNi4yMmMyMy44MS0zNy43MSAzMC4zNC02Ny43NyAyOS40NS05Mi4zMyAyNy44NiAxNy41NyA0Ny4xOCAzNy41OCA0OS4wNiA1OC44MyAxLjE0IDEyLjkzLTguMSAyOS4xMi03OC41MSAzMy41ek0yMTYuOSAzODcuNjljOS43Ni02LjIzIDE5LjUzLTEzLjEyIDI5LjItMjAuNDkgNi42OCAxMy4zMyAxMy42IDI2LjEgMjAuNiAzOC4xOS00MC42IDIxLjg2LTY4Ljg0IDEyLjc2LTQ5LjgtMTcuN3ptMjE1LTE3MS4zNWMtMTAuMjktNS4zNC0yMS4xNi0xMC4zNC0zMi4zOC0xNS4wNWE3MjIuNDU5IDcyMi40NTkgMCAwIDAgMjIuNzQtMzYuOWMzOS4wNiAyNC4xIDQ1LjkgNTMuMTggOS42NCA1MS45NXpNMjc5LjE4IDM5OGMtNS41MS0xMS4zNS0xMS0yMy41LTE2LjUtMzYuNDQgNDMuMjUgMS4yNyA2Mi40Mi0xOC43MyA2My4yOC0yMC40MSAwIC4wNy0yNSAxNS42NC02Mi41MyAxMi4yNWE3MTguNzggNzE4Ljc4IDAgMCAwIDg1LjA2LTg0cTEzLjA2LTE1LjMxIDI0LjkzLTMxLjExYy0uMzYtLjI5LTEuNTQtMy0xNi41MS0xMi01MS43IDYwLjI3LTEwMi4zNCA5OC0xMzIuNzUgMTE1LjkyLTIwLjU5LTExLjE4LTQwLjg0LTMxLjc4LTU1LjcxLTYxLjQ5LTIwLTM5LjkyLTMwLTgyLjM5LTMxLjU3LTExNi4wNyAxMi4zLjkxIDI1LjI3IDIuMTcgMzguODUgMy44OC0yMi4yOSAzNi44LTE0LjM5IDYzLTEzLjQ3IDY0LjIzIDAtLjA3LS45NS0yOS4xNyAyMC4xNC01OS41N2E2OTUuMjMgNjk1LjIzIDAgMCAwIDQ0LjY3IDE1Mi44NGMuOTMtLjM4IDEuODQuODggMTguNjctOC4yNS0yNi4zMy03NC40Ny0zMy43Ni0xMzguMTctMzQtMTczLjQzIDIwLTEyLjQyIDQ4LjE4LTE5LjggODEuNjMtMTcuODEgNDQuNTcgMi42NyA4Ni4zNiAxNS4yNSAxMTYuMzIgMzAuNzFxLTEwLjY5IDE1LjY2LTIzLjMzIDMyLjQ3QzM2NS42MyAxNTIgMzM5LjEgMTQ1Ljg0IDMzNy41IDE0NmMuMTEgMCAyNS45IDE0LjA3IDQxLjUyIDQ3LjIyYTcxNy42MyA3MTcuNjMgMCAwIDAtMTE1LjM0LTMxLjcxIDY0Ni42MDggNjQ2LjYwOCAwIDAgMC0zOS4zOS02LjA1Yy0uMDcuNDUtMS44MSAxLjg1LTIuMTYgMjAuMzNDMzAwIDE5MC4yOCAzNTguNzggMjE1LjY4IDM4OS4zNiAyMzNjLjc0IDIzLjU1LTYuOTUgNTEuNjEtMjUuNDEgNzkuNTctMjQuNiAzNy4zMS01Ni4zOSA2Ny4yMy04NC43NyA4NS40M3ptMjcuNC0yODdjLTQ0LjU2LTEuNjYtNzMuNTggNy40My05NC42OSAyMC42NyAyLTUyLjMgMjEuMzEtNzYuMzggMzguMjEtNzUuMjhDMjY3IDUyLjE1IDMwNSAxMDguNTUgMzA2LjU4IDExMXptLTEzMC42NSAzLjFjLjQ4IDEyLjExIDEuNTkgMjQuNjIgMy4yMSAzNy4yOC0xNC41NS0uODUtMjguNzQtMS4yNS00Mi40LTEuMjYtLjA4IDMuMjQtLjEyLTUxIDI0LjY3LTQ5LjU5aC4wOWM1Ljc2IDEuMDkgMTAuNjMgNi44OCAxNC40MyAxMy41N3ptLTI4LjA2IDE2MmMyMC43NiAzOS43IDQzLjMgNjAuNTcgNjUuMjUgNzIuMzEtNDYuNzkgMjQuNzYtNzcuNTMgMjAtODQuOTIgNC41MS0uMi0uMjEtMTEuMTMtMTUuMyAxOS42Ny03Ni44MXptMjEwLjA2IDc0LjhcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVoYW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzIgMjM3LjJjMzEuOC0xNS4yIDQ4LjQtMzguMiA0OC40LTc0IDAtNzAuNi01Mi42LTg3LjgtMTEzLjMtODcuOEgwdjM1NC40aDE3MS44YzY0LjQgMCAxMjQuOS0zMC45IDEyNC45LTEwMi45IDAtNDQuNS0yMS4xLTc3LjQtNjQuNy04OS43ek03Ny45IDEzNS45SDE1MWMyOC4xIDAgNTMuNCA3LjkgNTMuNCA0MC41IDAgMzAuMS0xOS43IDQyLjItNDcuNSA0Mi4yaC03OXYtODIuN3ptODMuMyAyMzMuN0g3Ny45VjI3Mmg4NC45YzM0LjMgMCA1NiAxNC4zIDU2IDUwLjYgMCAzNS44LTI1LjkgNDctNTcuNiA0N3ptMzU4LjUtMjQwLjdIMzc2Vjk0aDE0My43djM0Ljl6TTU3NiAzMDUuMmMwLTc1LjktNDQuNC0xMzkuMi0xMjQuOS0xMzkuMi03OC4yIDAtMTMxLjMgNTguOC0xMzEuMyAxMzUuOCAwIDc5LjkgNTAuMyAxMzQuNyAxMzEuMyAxMzQuNyA2MS4zIDAgMTAxLTI3LjYgMTIwLjEtODYuM0g1MDljLTYuNyAyMS45LTM0LjMgMzMuNS01NS43IDMzLjUtNDEuMyAwLTYzLTI0LjItNjMtNjUuM2gxODUuMWMuMy00LjIuNi04LjcuNi0xMy4yek0zOTAuNCAyNzRjMi4zLTMzLjcgMjQuNy01NC44IDU4LjUtNTQuOCAzNS40IDAgNTMuMiAyMC44IDU2LjIgNTQuOEgzOTAuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmlsaWJpbGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4LjYgMTA0LjFDNTA1LjMgMTIyLjIgNTEzIDE0My44IDUxMS45IDE2OS44VjM3Mi4yQzUxMS41IDM5OC42IDUwMi43IDQyMC4zIDQ4NS40IDQzNy4zQzQ2OC4yIDQ1NC4zIDQ0Ni4zIDQ2My4yIDQxOS45IDQ2NEg5Mi4wMkM2NS41NyA0NjMuMiA0My44MSA0NTQuMiAyNi43NCA0MzYuOEM5LjY4MiA0MTkuNCAuNzY2NyAzOTYuNSAwIDM2OC4yVjE2OS44Qy43NjY3IDE0My44IDkuNjgyIDEyMi4yIDI2Ljc0IDEwNC4xQzQzLjgxIDg3Ljc1IDY1LjU3IDc4Ljc3IDkyLjAyIDc4SDEyMS40TDk2LjA1IDUyLjE5QzkwLjMgNDYuNDYgODcuNDIgMzkuMTkgODcuNDIgMzAuNEM4Ny40MiAyMS42IDkwLjMgMTQuMzQgOTYuMDUgOC42MDNDMTAxLjggMi44NjggMTA5LjEgMCAxMTcuOSAwQzEyNi43IDAgMTM0IDIuODY4IDEzOS44IDguNjAzTDIxMy4xIDc4SDMwMS4xTDM3NS42IDguNjAzQzM4MS43IDIuODY4IDM4OS4yIDAgMzk4IDBDNDA2LjggMCA0MTQuMSAyLjg2OCA0MTkuOSA4LjYwM0M0MjUuNiAxNC4zNCA0MjguNSAyMS42IDQyOC41IDMwLjRDNDI4LjUgMzkuMTkgNDI1LjYgNDYuNDYgNDE5LjkgNTIuMTlMMzk0LjYgNzhMNDIzLjkgNzhDNDUwLjMgNzguNzcgNDcxLjkgODcuNzUgNDg4LjYgMTA0LjFINDg4LjZ6TTQ0OS44IDE3My44QzQ0OS40IDE2NC4yIDQ0Ni4xIDE1Ni40IDQzOS4xIDE1MC4zQzQzMy45IDE0NC4yIDQyNS4xIDE0MC45IDQxNi40IDE0MC41SDk2LjA1Qzg2LjQ2IDE0MC45IDc4LjYgMTQ0LjIgNzIuNDcgMTUwLjNDNjYuMzMgMTU2LjQgNjMuMDcgMTY0LjIgNjIuNjkgMTczLjhWMzY4LjJDNjIuNjkgMzc3LjQgNjUuOTUgMzg1LjIgNzIuNDcgMzkxLjdDNzguOTkgMzk4LjIgODYuODUgNDAxLjUgOTYuMDUgNDAxLjVINDE2LjRDNDI1LjYgNDAxLjUgNDMzLjQgMzk4LjIgNDM5LjcgMzkxLjdDNDQ2IDM4NS4yIDQ0OS40IDM3Ny40IDQ0OS44IDM2OC4yTDQ0OS44IDE3My44ek0xODUuNSAyMTYuNUMxOTEuOCAyMjIuOCAxOTUuMiAyMzAuNiAxOTUuNiAyMzkuN1YyNzNDMTk1LjIgMjgyLjIgMTkxLjkgMjg5LjkgMTg1LjggMjk2LjJDMTc5LjYgMzAyLjUgMTcxLjggMzA1LjcgMTYyLjIgMzA1LjdDMTUyLjYgMzA1LjcgMTQ0LjcgMzAyLjUgMTM4LjYgMjk2LjJDMTMyLjUgMjg5LjkgMTI5LjIgMjgyLjIgMTI4LjggMjczVjIzOS43QzEyOS4yIDIzMC42IDEzMi42IDIyMi44IDEzOC45IDIxNi41QzE0NS4yIDIxMC4yIDE1Mi4xIDIwNi45IDE2Mi4yIDIwNi41QzE3MS40IDIwNi45IDE3OS4yIDIxMC4yIDE4NS41IDIxNi41SDE4NS41ek0zNzcgMjE2LjVDMzgzLjMgMjIyLjggMzg2LjcgMjMwLjYgMzg3LjEgMjM5LjdWMjczQzM4Ni43IDI4Mi4yIDM4My40IDI4OS45IDM3Ny4zIDI5Ni4yQzM3MS4yIDMwMi41IDM2My4zIDMwNS43IDM1My43IDMwNS43QzM0NC4xIDMwNS43IDMzNi4zIDMwMi41IDMzMC4xIDI5Ni4yQzMyMy4xIDI4OS45IDMyMC43IDI4Mi4yIDMyMC40IDI3M1YyMzkuN0MzMjAuNyAyMzAuNiAzMjQuMSAyMjIuOCAzMzAuNCAyMTYuNUMzMzYuNyAyMTAuMiAzNDQuNSAyMDYuOSAzNTMuNyAyMDYuNUMzNjIuOSAyMDYuOSAzNzAuNyAyMTAuMiAzNzcgMjE2LjVIMzc3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaW1vYmplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDMySDMyQzE0LjQgMzIgMCA0Ni40IDAgNjR2Mzg0YzAgMTcuNiAxNC40IDMyIDMyIDMyaDM4NGMxNy42IDAgMzItMTQuNCAzMi0zMlY2NGMwLTE3LjYtMTQuNC0zMi0zMi0zMnptLTY0IDI1Ny40YzAgNDkuNC0xMS40IDgyLjYtMTAzLjggODIuNmgtMTYuOWMtNDQuMSAwLTYyLjQtMTQuOS03MC40LTM4LjhoLS45VjM2OEg5NlYxMzZoNjR2NzQuN2gxLjFjNC42LTMwLjUgMzkuNy0zOC44IDY5LjctMzguOGgxNy4zYzkyLjQgMCAxMDMuOCAzMy4xIDEwMy44IDgyLjV2MzV6bS02NC0yOC45djIyLjljMCAyMS43LTMuNCAzMy44LTM4LjQgMzMuOGgtNDUuM2MtMjguOSAwLTQ0LjEtNi41LTQ0LjEtMzUuN3YtMTljMC0yOS4zIDE1LjItMzUuNyA0NC4xLTM1LjdoNDUuM2MzNS0uMiAzOC40IDEyIDM4LjQgMzMuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQml0YnVja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjIgMzJBMTYgMTYgMCAwIDAgNiA0Ny44YTI2LjM1IDI2LjM1IDAgMCAwIC4yIDIuOGw2Ny45IDQxMi4xYTIxLjc3IDIxLjc3IDAgMCAwIDIxLjMgMTguMmgzMjUuN2ExNiAxNiAwIDAgMCAxNi0xMy40TDUwNSA1MC43YTE2IDE2IDAgMCAwLTEzLjItMTguMyAyNC41OCAyNC41OCAwIDAgMC0yLjgtLjJMMjIuMiAzMnptMjg1LjkgMjk3LjhoLTEwNGwtMjguMS0xNDdoMTU3LjNsLTI1LjIgMTQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaXRjb2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNCAyNTZjMCAxMzYuOTY3LTExMS4wMzMgMjQ4LTI0OCAyNDhTOCAzOTIuOTY3IDggMjU2IDExOS4wMzMgOCAyNTYgOHMyNDggMTExLjAzMyAyNDggMjQ4em0tMTQxLjY1MS0zNS4zM2M0LjkzNy0zMi45OTktMjAuMTkxLTUwLjczOS01NC41NS02Mi41NzNsMTEuMTQ2LTQ0LjcwMi0yNy4yMTMtNi43ODEtMTAuODUxIDQzLjUyNGMtNy4xNTQtMS43ODMtMTQuNTAyLTMuNDY0LTIxLjgwMy01LjEzbDEwLjkyOS00My44MS0yNy4xOTgtNi43ODEtMTEuMTUzIDQ0LjY4NmMtNS45MjItMS4zNDktMTEuNzM1LTIuNjgyLTE3LjM3Ny00LjA4NGwuMDMxLS4xNC0zNy41My05LjM3LTcuMjM5IDI5LjA2MnMyMC4xOTEgNC42MjcgMTkuNzY1IDQuOTEzYzExLjAyMiAyLjc1MSAxMy4wMTQgMTAuMDQ0IDEyLjY4IDE1LjgyNWwtMTIuNjk2IDUwLjkyNWMuNzYuMTk0IDEuNzQ0LjQ3MyAyLjgyOS45MDctLjkwNy0uMjI1LTEuODc2LS40NzMtMi44NzYtLjcxM2wtMTcuNzk2IDcxLjMzOGMtMS4zNDkgMy4zNDgtNC43NjcgOC4zNy0xMi40NzEgNi40NjQuMjcxLjM5NS0xOS43OC00LjkzNy0xOS43OC00LjkzN2wtMTMuNTEgMzEuMTQ3IDM1LjQxNCA4LjgyN2M2LjU4OCAxLjY1MSAxMy4wNDUgMy4zNzkgMTkuNCA1LjAwNmwtMTEuMjYyIDQ1LjIxMyAyNy4xODIgNi43ODEgMTEuMTUzLTQ0LjczM2ExMDM4LjIwOSAxMDM4LjIwOSAwIDAgMCAyMS42ODcgNS42MjdsLTExLjExNSA0NC41MjMgMjcuMjEzIDYuNzgxIDExLjI2Mi00NS4xMjhjNDYuNDA0IDguNzgxIDgxLjI5OSA1LjIzOSA5NS45ODYtMzYuNzI3IDExLjgzNi0zMy43OS0uNTg5LTUzLjI4MS0yNS4wMDQtNjUuOTkxIDE3Ljc4LTQuMDk4IDMxLjE3NC0xNS43OTIgMzQuNzQ3LTM5Ljk0OXptLTYyLjE3NyA4Ny4xNzljLTguNDEgMzMuNzktNjUuMzA4IDE1LjUyMy04My43NTUgMTAuOTQzbDE0Ljk0NC01OS44OTljMTguNDQ2IDQuNjAzIDc3LjYgMTMuNzE3IDY4LjgxMSA0OC45NTZ6bTguNDE3LTg3LjY2N2MtNy42NzMgMzAuNzM2LTU1LjAzMSAxNS4xMi03MC4zOTMgMTEuMjkybDEzLjU0OC01NC4zMjdjMTUuMzYzIDMuODI4IDY0LjgzNiAxMC45NzMgNTYuODQ1IDQzLjAzNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03OC40IDY3LjJDMTczLjgtMjIgMzI0LjUtMjQgNDIxLjUgNzFjMTQuMyAxNC4xLTYuNCAzNy4xLTIyLjQgMjEuNS04NC44LTgyLjQtMjE1LjgtODAuMy0yOTguOS0zLjItMTYuMyAxNS4xLTM2LjUtOC4zLTIxLjgtMjIuMXptOTguOSA0MTguNmMxOS4zIDUuNyAyOS4zLTIzLjYgNy45LTMwQzczIDQyMS45IDkuNCAzMDYuMSAzNy43IDE5NC44YzUtMTkuNi0yNC45LTI4LjEtMzAuMi03LjEtMzIuMSAxMjcuNCA0MS4xIDI1OS44IDE2OS44IDI5OC4xem0xNDguMS0yYzEyMS45LTQwLjIgMTkyLjktMTY2LjkgMTY0LjQtMjkxLTQuNS0xOS43LTM0LjktMTMuOC0zMCA3LjkgMjQuMiAxMDcuNy0zNy4xIDIxNy45LTE0My4yIDI1My40LTIxLjIgNy0xMC40IDM2IDguOCAyOS43em0tNjIuOS03OWwuMi03MS44YzAtOC4yLTYuNi0xNC44LTE0LjgtMTQuOC04LjIgMC0xNC44IDYuNy0xNC44IDE0LjhsLS4yIDcxLjhjMCA4LjIgNi42IDE0LjggMTQuOCAxNC44czE0LjgtNi42IDE0LjgtMTQuOHptNzEtMjY5YzIuMSA5MC45IDQuNyAxMzEuOS04NS41IDEzMi41LTkyLjUtLjctODYuOS00NC4zLTg1LjUtMTMyLjUgMC0yMS44LTMyLjUtMTkuNi0zMi41IDB2NzEuNmMwIDY5LjMgNjAuNyA5MC45IDExOCA5MC4xIDU3LjMuOCAxMTgtMjAuOCAxMTgtOTAuMXYtNzEuNmMwLTE5LjYtMzIuNS0yMS44LTMyLjUgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxhY2tUaWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMySDB6bTMxNi41IDMyNS4yTDIyNCA0NDUuOWwtOTIuNS04OC43IDY0LjUtMTg0LTY0LjUtODYuNmgxODQuOUwyNTIgMTczLjJsNjQuNSAxODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsYWNrYmVycnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY2IDExNi45YzAgMjMuNC0xNi40IDQ5LjEtNzIuNSA0OS4xSDIzLjRsMjEtODguOGg2Ny44YzQyLjEgMCA1My44IDIzLjMgNTMuOCAzOS43em0xMjYuMi0zOS43aC02Ny44TDIwNS43IDE2Nmg3MC4xYzUzLjggMCA3MC4xLTI1LjcgNzAuMS00OS4xLjEtMTYuNC0xMS42LTM5LjctNTMuNy0zOS43ek04OC44IDIwOC4xSDIxTDAgMjk2LjloNzAuMWM1Ni4xIDAgNzIuNS0yMy40IDcyLjUtNDkuMSAwLTE2LjMtMTEuNy0zOS43LTUzLjgtMzkuN3ptMTgwLjEgMGgtNjcuOGwtMTguNyA4OC44aDcwLjFjNTMuOCAwIDcwLjEtMjMuNCA3MC4xLTQ5LjEgMC0xNi4zLTExLjctMzkuNy01My43LTM5Ljd6bTE4OS4zLTUzLjhoLTY3LjhsLTE4LjcgODguOGg3MC4xYzUzLjggMCA3MC4xLTIzLjQgNzAuMS00OS4xLjEtMTYuMy0xMS42LTM5LjctNTMuNy0zOS43em0tMjggMTM3LjloLTY3LjhMMzQzLjcgMzgxaDcwLjFjNTYuMSAwIDcwLjEtMjMuNCA3MC4xLTQ5LjEgMC0xNi4zLTExLjYtMzkuNy01My43LTM5Ljd6TTI0MC44IDM0NkgxNzNsLTE4LjcgODguOGg3MC4xYzU2LjEgMCA3MC4xLTI1LjcgNzAuMS00OS4xLjEtMTYuMy0xMS42LTM5LjctNTMuNy0zOS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbG9nZ2VyQiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDYuNiAyMjIuN2MtMS44LTgtNi44LTE1LjQtMTIuNS0xOC41LTEuOC0xLTEzLTIuMi0yNS0yLjctMjAuMS0uOS0yMi4zLTEuMy0yOC43LTUtMTAuMS01LjktMTIuOC0xMi4zLTEyLjktMjkuNS0uMS0zMy0xMy44LTYzLjctNDAuOS05MS4zLTE5LjMtMTkuNy00MC45LTMzLTY1LjUtNDAuNS01LjktMS44LTE5LjEtMi40LTYzLjMtMi45LTY5LjQtLjgtODQuOC42LTEwOC40IDEwQzQ1LjkgNTkuNSAxNC43IDk2LjEgMy4zIDE0Mi45IDEuMiAxNTEuNy43IDE2NS44LjIgMjQ2LjhjLS42IDEwMS41LjEgMTE2LjQgNi40IDEzNi41IDE1LjYgNDkuNiA1OS45IDg2LjMgMTA0LjQgOTQuMyAxNC44IDIuNyAxOTcuMyAzLjMgMjE2IC44IDMyLjUtNC40IDU4LTE3LjUgODEuOS00MS45IDE3LjMtMTcuNyAyOC4xLTM2LjggMzUuMi02Mi4xIDQuOS0xNy42IDQuNS0xNDIuOCAyLjUtMTUxLjd6bS0zMjIuMS02My42YzcuOC03LjkgMTAtOC4yIDU4LjgtOC4yIDQzLjkgMCA0NS40LjEgNTEuOCAzLjQgOS4zIDQuNyAxMy40IDExLjMgMTMuNCAyMS45IDAgOS41LTMuOCAxNi4yLTEyLjMgMjEuNi00LjYgMi45LTcuMyAzLjEtNTAuMyAzLjMtMjYuNS4yLTQ3LjctLjQtNTAuOC0xLjItMTYuNi00LjctMjIuOC0yOC41LTEwLjYtNDAuOHptMTkxLjggMTk5LjhsLTE0LjkgMi40LTc3LjUuOWMtNjguMS44LTg3LjMtLjQtOTAuOS0yLTcuMS0zLjEtMTMuOC0xMS43LTE0LjktMTkuNC0xLjEtNy4zIDIuNi0xNy4zIDguMi0yMi40IDcuMS02LjQgMTAuMi02LjYgOTcuMy02LjcgODkuNi0uMSA4OS4xLS4xIDk3LjYgNy44IDEyLjEgMTEuMyA5LjUgMzEuMi00LjkgMzkuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxvZ2dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjIuNCAxOTZjNC44LTQuOSA2LjItNS4xIDM2LjQtNS4xIDI3LjIgMCAyOC4xLjEgMzIuMSAyLjEgNS44IDIuOSA4LjMgNyA4LjMgMTMuNiAwIDUuOS0yLjQgMTAtNy42IDEzLjQtMi44IDEuOC00LjUgMS45LTMxLjEgMi4xLTE2LjQuMS0yOS41LS4yLTMxLjUtLjgtMTAuMy0yLjktMTQuMS0xNy43LTYuNi0yNS4zem02MS40IDk0LjVjLTUzLjkgMC01NS44LjItNjAuMiA0LjEtMy41IDMuMS01LjcgOS40LTUuMSAxMy45LjcgNC43IDQuOCAxMC4xIDkuMiAxMiAyLjIgMSAxNC4xIDEuNyA1Ni4zIDEuMmw0Ny45LS42IDkuMi0xLjVjOS01LjEgMTAuNS0xNy40IDMuMS0yNC40LTUuMy00LjctNS00LjctNjAuNC00Ljd6bTIyMy40IDEzMC4xYy0zLjUgMjguNC0yMyA1MC40LTUxLjEgNTcuNS03LjIgMS44LTkuNyAxLjktMTcyLjkgMS44LTE1Ny44IDAtMTY1LjktLjEtMTcyLTEuOC04LjQtMi4yLTE1LjYtNS41LTIyLjMtMTAtNS42LTMuOC0xMy45LTExLjgtMTctMTYuNC0zLjgtNS42LTguMi0xNS4zLTEwLTIyQy4xIDQyMyAwIDQyMC4zIDAgMjU2LjMgMCA5My4yIDAgODkuNyAxLjggODIuNiA4LjEgNTcuOSAyNy43IDM5IDUzIDMzLjRjNy4zLTEuNiAzMzIuMS0xLjkgMzQwLS4zIDIxLjIgNC4zIDM3LjkgMTcuMSA0Ny42IDM2LjQgNy43IDE1LjMgNy0xLjUgNy4zIDE4MC42LjIgMTE1LjggMCAxNjQuNS0uNyAxNzAuNXptLTg1LjQtMTg1LjJjLTEuMS01LTQuMi05LjYtNy43LTExLjUtMS4xLS42LTgtMS4zLTE1LjUtMS43LTEyLjQtLjYtMTMuOC0uOC0xNy44LTMuMS02LjItMy42LTcuOS03LjYtOC0xOC4zIDAtMjAuNC04LjUtMzkuNC0yNS4zLTU2LjUtMTItMTIuMi0yNS4zLTIwLjUtNDAuNi0yNS4xLTMuNi0xLjEtMTEuOC0xLjUtMzkuMi0xLjgtNDIuOS0uNS01Mi41LjQtNjcuMSA2LjItMjcgMTAuNy00Ni4zIDMzLjQtNTMuNCA2Mi40LTEuMyA1LjQtMS42IDE0LjItMS45IDY0LjMtLjQgNjIuOCAwIDcyLjEgNCA4NC41IDkuNyAzMC43IDM3LjEgNTMuNCA2NC42IDU4LjQgOS4yIDEuNyAxMjIuMiAyLjEgMTMzLjcuNSAyMC4xLTIuNyAzNS45LTEwLjggNTAuNy0yNS45IDEwLjctMTAuOSAxNy40LTIyLjggMjEuOC0zOC41IDMuMi0xMC45IDIuOS04OC40IDEuNy05My45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbHVlc2t5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNy44IDI5NC43Yy0zLjMtLjQtNi43LS44LTEwLTEuM2MzLjQgLjQgNi43IC45IDEwIDEuM3pNMjg4IDIyNy4xQzI2MS45IDE3Ni40IDE5MC45IDgxLjkgMTI0LjkgMzUuM0M2MS42LTkuNCAzNy41LTEuNyAyMS42IDUuNUMzLjMgMTMuOCAwIDQxLjkgMCA1OC40UzkuMSAxOTQgMTUgMjEzLjljMTkuNSA2NS43IDg5LjEgODcuOSAxNTMuMiA4MC43YzMuMy0uNSA2LjYtLjkgMTAtMS40Yy0zLjMgLjUtNi42IDEtMTAgMS40Qzc0LjMgMzA4LjYtOS4xIDM0Mi44IDEwMC4zIDQ2NC41QzIyMC42IDU4OS4xIDI2NS4xIDQzNy44IDI4OCAzNjEuMWMyMi45IDc2LjcgNDkuMiAyMjIuNSAxODUuNiAxMDMuNGMxMDIuNC0xMDMuNCAyOC4xLTE1Ni02NS44LTE2OS45Yy0zLjMtLjQtNi43LS44LTEwLTEuM2MzLjQgLjQgNi43IC45IDEwIDEuM2M2NC4xIDcuMSAxMzMuNi0xNS4xIDE1My4yLTgwLjdDNTY2LjkgMTk0IDU3NiA3NSA1NzYgNTguNHMtMy4zLTQ0LjctMjEuNi01Mi45Yy0xNS44LTcuMS00MC0xNC45LTEwMy4yIDI5LjhDMzg1LjEgODEuOSAzMTQuMSAxNzYuNCAyODggMjI3LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsdWV0b290aEIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTk2LjQ4IDI2MC4wMjNsOTIuNjI2LTEwMy4zMzNMMTQzLjEyNSAwdjIwNi4zM2wtODYuMTExLTg2LjExMS0zMS40MDYgMzEuNDA1IDEwOC4wNjEgMTA4LjM5OUwyNS42MDggMzY4LjQyMmwzMS40MDYgMzEuNDA1IDg2LjExMS04Ni4xMTFMMTQ1Ljg0IDUxMmwxNDguNTUyLTE0OC42NDQtOTcuOTEyLTEwMy4zMzN6bTQwLjg2LTEwMi45OTZsLTQ5Ljk3NyA0OS45NzgtLjMzOC0xMDAuMjk1IDUwLjMxNSA1MC4zMTd6TTE4Ny4zNjMgMzEzLjA0bDQ5Ljk3NyA0OS45NzgtNTAuMzE1IDUwLjMxNi4zMzgtMTAwLjI5NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmx1ZXRvb3RoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5Mi42IDE3MS4xTDI0OS43IDIxNGwtLjMtODYgNDMuMiA0My4xbS00My4yIDIxOS44bDQzLjEtNDMuMS00Mi45LTQyLjktLjIgODZ6TTQxNiAyNTkuNEM0MTYgNDY1IDM0NC4xIDUxMiAyMzAuOSA1MTJTMzIgNDY1IDMyIDI1OS40IDExNS40IDAgMjI4LjYgMCA0MTYgNTMuOSA0MTYgMjU5LjR6bS0xNTguNSAwbDc5LjQtODguNkwyMTEuOCAzNi41djE3Ni45TDEzOCAxMzkuNmwtMjcgMjYuOSA5Mi43IDkzLTkyLjcgOTMgMjYuOSAyNi45IDczLjgtNzMuOCAyLjMgMTcwIDEyNy40LTEyNy41LTgzLjktODguN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9vdHN0cmFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzMy41LDIwMS40YzAtMjIuMS0xNS42LTM0LjMtNDMtMzQuM2gtNTAuNHY3MS4yaDQyLjVDMzE1LjQsMjM4LjIsMzMzLjUsMjI1LDMzMy41LDIwMS40eiBNNTE3LDE4OC42IGMtOS41LTMwLjktMTAuOS02OC44LTkuOC05OC4xYzEuMS0zMC41LTIyLjctNTguNS01NC43LTU4LjVIMTIzLjdjLTMyLjEsMC01NS44LDI4LjEtNTQuNyw1OC41YzEsMjkuMy0wLjMsNjcuMi05LjgsOTguMSBjLTkuNiwzMS0yNS43LDUwLjYtNTIuMiw1My4xdjI4LjVjMjYuNCwyLjUsNDIuNiwyMi4xLDUyLjIsNTMuMWM5LjUsMzAuOSwxMC45LDY4LjgsOS44LDk4LjFjLTEuMSwzMC41LDIyLjcsNTguNSw1NC43LDU4LjVoMzI4LjcgYzMyLjEsMCw1NS44LTI4LjEsNTQuNy01OC41Yy0xLTI5LjMsMC4zLTY3LjIsOS44LTk4LjFjOS42LTMxLDI1LjctNTAuNiw1Mi4xLTUzLjF2LTI4LjVDNTQyLjcsMjM5LjIsNTI2LjUsMjE5LjYsNTE3LDE4OC42eiBNMzAwLjIsMzc1LjFoLTk3LjlWMTM2LjhoOTcuNGM0My4zLDAsNzEuNywyMy40LDcxLjcsNTkuNGMwLDI1LjMtMTkuMSw0Ny45LTQzLjUsNTEuOHYxLjNjMzMuMiwzLjYsNTUuNSwyNi42LDU1LjUsNTguMyBDMzgzLjQsMzQ5LjcsMzUyLjEsMzc1LjEsMzAwLjIsMzc1LjF6IE0yOTAuMiwyNjYuNGgtNTAuMXY3OC40aDUyLjNjMzQuMiwwLDUyLjMtMTMuNyw1Mi4zLTM5LjUgQzM0NC43LDI3OS42LDMyNi4xLDI2Ni40LDI5MC4yLDI2Ni40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg2LjM0NCwxOTcuODM0YTUxLjc2Nyw1MS43NjcsMCwwLDAtNDEuNTcsMjAuMDU4VjE1Ni4wMThhOC4xOSw4LjE5LDAsMCwwLTguMTktOC4xOUg4LjE5QTguMTksOC4xOSwwLDAsMCwwLDE1Ni4wMThWMzMzLjU1MWE4LjE4OSw4LjE4OSwwLDAsMCw4LjE5LDguMTg5SDM2LjU4NGE4LjE4OSw4LjE4OSwwLDAsMCw4LjE5LTguMTg5di04LjA4OGMxMS42MjgsMTMuMzczLDI1Ljg3NCwxOS43NjksNDEuNTczLDE5Ljc2OSwzNC42LDAsNjEuOTIyLTI2LjE2NCw2MS45MjItNzMuODQzQzE0OC4yNjYsMjI1LjQ1MiwxMjEuMjI5LDE5Ny44MzQsODYuMzQ0LDE5Ny44MzRaTTcxLjUxNiwzMDUuNjkxYy05LjU5MywwLTIxLjIyMS00Ljk0Mi0yNi43NDUtMTIuNVYyNTAuMTY0YzUuNTI4LTcuNTU4LDE3LjE1Mi0xMi43OTEsMjYuNzQ1LTEyLjc5MSwxNy43MzQsMCwzMS4xMDcsMTMuMDgyLDMxLjEwNywzNC4wMTNDMTAyLjYyMywyOTIuNjA5LDg5LjI1LDMwNS42OTEsNzEuNTE2LDMwNS42OTFabTE1Ni4zNzItNTkuMDMyYTE3LjQsMTcuNCwwLDEsMCwxNy40LDE3LjRBMTcuNCwxNy40LDAsMCwwLDIyNy44ODgsMjQ2LjY1OVpNMjczLjk1NiwxNTYuN1YxMTIuMDM5YTEzLjMwOCwxMy4zMDgsMCwxLDAtMTAuMjM3LDBWMTU2LjdhMTA3LjQ5LDEwNy40OSwwLDEsMCwxMC4yMzcsMFptODUuOTkzLDEwNy4zNjdjMCwzMC41MzEtNDAuNzkyLDU1LjI4MS05MS4xMTIsNTUuMjgxcy05MS4xMTEtMjQuNzUtOTEuMTExLTU1LjI4MSw0MC43OTItNTUuMjgxLDkxLjExMS01NS4yODFTMzU5Ljk0OSwyMzMuNTMyLDM1OS45NDksMjY0LjA2MlptLTUwLjE2MywxNy40YTE3LjQsMTcuNCwwLDEsMC0xNy40LTE3LjRoMEExNy40LDE3LjQsMCwwLDAsMzA5Ljc4NiwyODEuNDY2Wk01ODAuNywyNTAuNDU1Yy0xNC44MjgtMi42MTctMjIuMzg3LTMuNzgtMjIuMzg3LTkuODg1LDAtNS41MjMsNy4yNjgtOS44ODQsMTcuNzM1LTkuODg0YTY1LjU2LDY1LjU2LDAsMCwxLDM0LjQ4NCwxMC4xLDguMTcxLDguMTcxLDAsMCwwLDExLjI4OC0yLjQ2OGMuMDctLjExLjEzOC0uMjIxLjItLjMzM2w4LjYxMS0xNC44ODZhOC4yLDguMiwwLDAsMC0yLjg2Ny0xMS4xMjMsOTkuODYzLDk5Ljg2MywwLDAsMC01Mi4wMTQtMTQuMTM4Yy0zOC45NTYsMC02MC4xNzksMjEuNTE0LTYwLjE3OSw0Ni4yMjUsMCwzNi4zNDIsMzMuNzI1LDQxLjg2NCw1Ny41NjMsNDUuNjQyLDEzLjM3MywyLjMyNiwyNC4xMyw0LjM2MSwyNC4xMywxMS4wNDgsMCw2LjQtNS41MjMsMTAuNzU3LTE4LjksMTAuNzU3LTEzLjU1MiwwLTMwLjk5NC02LjIyMi00Mi42MjMtMTMuNTc5YTguMjA2LDguMjA2LDAsMCwwLTExLjMzNSwyLjQ5MWMtLjAzNS4wNTQtLjA2OS4xMDgtLjEuMTY0bC0xMC4yLDE2Ljg5MWE4LjIyMiw4LjIyMiwwLDAsMCwyLjQ5MSwxMS4wNjZjMTUuMjI0LDEwLjMsMzcuNjYzLDE2LjY5Miw1OS40NDEsMTYuNjkyLDQwLjQwOSwwLDYzLjk1Ny0xOS43NjksNjMuOTU3LTQ2LjUxNUM2NDAsMjYwLjYzLDYwNC41MzcsMjU0LjgxNiw1ODAuNywyNTAuNDU1Wm0tOTUuOTI4LDYwLjc4N2E4LjIxMSw4LjIxMSwwLDAsMC05LjUyMS01LjkzOCwyMy4xNjgsMjMuMTY4LDAsMCwxLTQuMTU1LjM4N2MtNy44NDksMC0xMi41LTYuMTA2LTEyLjUtMTQuMjQ1VjI0MC4yOGgyMC4zNDlhOC4xNDMsOC4xNDMsMCwwLDAsOC4xNDEtOC4xNDNWMjA5LjQ2NmE4LjE0Myw4LjE0MywwLDAsMC04LjE0MS04LjE0M0g0NTguNTk0VjE3MS4wOTFhOC4xNDMsOC4xNDMsMCwwLDAtOC4xNDMtOC4xNDNINDIyLjI1N2E4LjE0Myw4LjE0MywwLDAsMC04LjE0Myw4LjE0M2gwdjMwLjIzMkgzOTlhOC4xNDMsOC4xNDMsMCwwLDAtOC4xNDMsOC4xNDNoMHYyMi42NzFBOC4xNDMsOC4xNDMsMCwwLDAsMzk5LDI0MC4yOGgxNS4xMTV2NjMuNjY3YzAsMjcuMDM3LDE1LjQwOCw0MS4yODIsNDMuOSw0MS4yODIsMTIuMTgzLDAsMjEuMzgzLTIuMiwyNy42LTUuNDQ2YTguMTYxLDguMTYxLDAsMCwwLDQuMTQ1LTkuMjc4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmF2ZVJldmVyc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk4IDBjMyAwIDUuOCAxLjMgNy44IDMuNmwzOC4xIDQ0Yy41LS4xIDEtLjIgMS41LS4zYzkuMi0xLjYgMTguNi0yLjIgMjcuNy0xLjJjMTEuNiAxLjQgMjEuNSA1LjQgMjguOSAxMi45YzcuNyA3LjggMTUuNCAxNS44IDIyLjYgMjMuNmMyLjUgMi43IDQuOSA1LjIgNi45IDcuNGMuNyAuOCAxLjQgMS41IDEuOSAyYzMuNCAzLjcgNC4yIDguMSAyLjcgMTEuOWwtOS44IDI0LjYgMTMuMSAzOC4xYy43IDIgLjggNC4xIC4yIDYuMmMtLjEgLjQtLjEgLjQtLjUgMi4xYy0uNiAyLjMtLjYgMi4zLTEuNSA1LjhjLTEuNiA2LjMtMy41IDEzLjMtNS40IDIwLjljLTUuNiAyMS42LTExLjIgNDMuMi0xNi40IDYzLjRjLTEyLjkgNDkuOS0yMS40IDgyLjctMjMuNCA5MC45Yy0xMS4xIDQ0LjUtMTkuOSA2MC00OC4zIDgwLjNjLTI0LjkgMTcuOC03Ni44IDUzLjYtODYuOCA2MGMtMSAuNi0yIDEuMy0zLjQgMi4zYy0uNSAuNC0zLjIgMi4yLTMuOSAyLjdjLTQuOSAzLjMtOC4zIDUuNS0xMi4xIDcuM2MtNC43IDIuMi05LjMgMy41LTEzLjkgMy41cy05LjEtMS4yLTEzLjktMy41Yy0zLjctMS44LTcuMi0zLjktMTIuMS03LjNjLS44LS41LTMuNC0yLjQtMy45LTIuN2MtMS40LTEtMi41LTEuNy0zLjQtMi4zYy0xMC02LjQtNjEuOS00Mi4xLTg2LjgtNjBjLTI4LjQtMjAuNC0zNy4yLTM1LjgtNDguMy04MC4zYy0yLTguMi0xMC41LTQxLTIzLjMtOTAuNWMtNS4zLTIwLjYtMTAuOS00Mi4yLTE2LjUtNjMuOGMtMi03LjYtMy44LTE0LjYtNS40LTIwLjljLS45LTMuNS0uOS0zLjUtMS41LTUuOGMtLjQtMS43LS40LTEuNy0uNS0yLjFjLS41LTItLjQtNC4yIC4yLTYuMmwxMy4xLTM4LjFMMTEuOCAxMDRjLTEuNS0zLjgtLjctOC4yIDItMTEuMmMxLjItMS4zIDEuOC0yIDIuNi0yLjhjMi0yLjIgNC40LTQuNyA2LjktNy40QzMwLjYgNzQuOSAzOC4zIDY2LjkgNDYgNTkuMWM3LjQtNy41IDE3LjMtMTEuNiAyOC45LTEyLjljOS4xLTEuMSAxOC41LS41IDI3LjcgMS4yYy41IC4xIDEgLjIgMS41IC4zbDM4LjEtNDRDMTQ0LjIgMS4zIDE0NyAwIDE1MCAwSDI5OHptLTQuNyAyMS4xSDE1NC43TDExNS42IDY2LjJjLTIuNiAzLTYuNyA0LjMtMTAuNiAzLjJjLS4yLS4xLS43LS4yLTEuNS0uNGMtMS4zLS4zLTIuOS0uNi00LjUtLjljLTcuNC0xLjMtMTQuOS0xLjgtMjEuNy0xQzcwIDY4IDY0LjMgNzAuMyA2MC43IDc0Yy03LjYgNy43LTE1LjIgMTUuNi0yMi4zIDIzLjNjLTEuNyAxLjgtMy4zIDMuNS00LjggNS4xbDguOCAyMmMxIDIuNCAxIDUgLjIgNy41TDI5LjIgMTcwLjZjLjQgMS40IC41IDEuOSAxLjIgNC44YzEuNiA2LjMgMy41IDEzLjMgNS40IDIwLjljNS42IDIxLjYgMTEuMiA0My4yIDE2LjQgNjMuNGMxMi45IDUwIDIxLjQgODIuOCAyMy40IDkxQzg1LjcgMzkwLjggOTIgNDAyIDExNS44IDQxOWMyNC42IDE3LjYgNzYuMyA1My4yIDg1LjkgNTkuM2MxLjIgLjggMi41IDEuNiA0IDIuN2MuNiAuNCAzLjIgMi4yIDMuOSAyLjdjNCAyLjggNi43IDQuNCA5LjIgNS42YzIuMiAxIDMuOSAxLjUgNS4xIDEuNXMyLjktLjUgNS4xLTEuNWMyLjUtMS4yIDUuMi0yLjggOS4yLTUuNmMuNy0uNSAzLjMtMi4zIDMuOS0yLjdjMS42LTEuMSAyLjgtMS45IDQtMi43YzkuNi02LjEgNjEuMy00MS43IDg1LjktNTkuM2MyMy44LTE3LjEgMzAuMi0yOC4yIDQwLjEtNjguM2MyLjEtOC4zIDEwLjUtNDEuMSAyMy4zLTkwLjdjNS4zLTIwLjYgMTAuOS00Mi4yIDE2LjUtNjMuOGMyLTcuNiAzLjgtMTQuNiA1LjQtMjAuOWMuNy0yLjkgLjktMy40IDEuMi00LjhsLTEzLjMtMzguOGMtLjgtMi40LS44LTUuMSAuMi03LjVsOC44LTIyYy0xLjUtMS42LTMuMS0zLjMtNC44LTUuMWMtNy4yLTcuNi0xNC43LTE1LjUtMjIuMy0yMy4zYy0zLjctMy43LTkuMy02LTE2LjYtNi45Yy02LjgtLjgtMTQuNC0uMy0yMS43IDFjLTEuNyAuMy0zLjIgLjYtNC41IC45Yy0uOCAuMi0xLjMgLjMtMS41IC40Yy0zLjggMS4xLTcuOS0uMi0xMC42LTMuMkwyOTMuMyAyMS4xek0yMjQgMzE2YzIuOCAwIDIwLjkgNi41IDM1LjQgMTQuMXMyNSAxMyAyOC4zIDE1LjJzMS4zIDYuMi0xLjcgOC40cy00NC4xIDM0LjYtNDguMSAzOC4ycy05LjggOS41LTEzLjggOS41cy05LjgtNS45LTEzLjgtOS41cy00NS4xLTM2LTQ4LjEtMzguMnMtNS4xLTYuMi0xLjctOC40czEzLjktNy41IDI4LjMtMTUuMnMzMi41LTE0LjEgMzUuNC0xNC4xem0uMS0yMzAuN2MuNyAwIDguOCAuMiAyMC41IDQuMmMxMi4zIDQuMiAyNS43IDkuNCAzMS45IDkuNHM1MS45LTguOSA1MS45LTguOXM1NC4yIDY2LjcgNTQuMiA4MXMtNi44IDE4LTEzLjcgMjUuNHMtMzYuOCAzOS44LTQwLjcgNDMuOXMtMTEuOSAxMC41LTcuMSAyMS44czExLjcgMjUuOCAzLjkgNDAuNHMtMjEgMjQuNC0yOS40IDIyLjhzLTI4LjQtMTIuMi0zNS43LTE3LjFzLTMwLjUtMjQuMy0zMC41LTMxLjhzMjQtMjAuOCAyOC40LTIzLjlzMjQuNy0xNC44IDI1LjEtMTkuNHMuMy02LTUuNy0xNy40cy0xNi43LTI2LjctMTQuOS0zNi44czE5LjEtMTUuNCAzMS41LTIwLjJzMzYuMi0xMy43IDM5LjItMTUuMXMyLjItMi43LTYuOC0zLjZzLTM0LjYtNC4zLTQ2LjEtMS4xcy0zMS4yIDguMi0zMi44IDEwLjlzLTMgMi43LTEuNCAxMS44czEwLjEgNTIuOCAxMC45IDYwLjZzMi40IDEyLjktNS44IDE0LjhzLTIyLjEgNS4yLTI2LjggNS4ycy0xOC42LTMuMy0yNi44LTUuMnMtNi42LTctNS44LTE0LjhzOS4zLTUxLjUgMTAuOS02MC42cy4yLTkuMi0xLjQtMTEuOHMtMjEuMy03LjYtMzIuOC0xMC45cy0zNy4xIC4yLTQ2LjEgMS4xcy05LjggMi4yLTYuOCAzLjZzMjYuOCAxMC40IDM5LjIgMTUuMXMyOS43IDEwIDMxLjUgMjAuMnMtOSAyNS40LTE0LjkgMzYuOHMtNi4xIDEyLjgtNS43IDE3LjRzMjAuNiAxNi40IDI1LjEgMTkuNHMyOC40IDE2LjQgMjguNCAyMy45cy0yMy4yIDI3LTMwLjUgMzEuOHMtMjcuMiAxNS40LTM1LjcgMTcuMXMtMjEuNy04LjItMjkuNC0yMi44cy0uOC0yOS4xIDMuOS00MC40cy0zLjMtMTcuNy03LjEtMjEuOHMtMzMuOC0zNi41LTQwLjctNDMuOXMtMTMuNy0xMS4yLTEzLjctMjUuNHM1NC4yLTgxIDU0LjItODFzNDUuOCA4LjkgNTEuOSA4LjlzMTkuNS01LjIgMzEuOS05LjRzMjAuNi00LjIgMjAuNi00LjJsLjEgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ1LjUgMEgyMjRoNzguNWw0NC43IDUwLjhzMzkuMy0xMC45IDU3LjggNy42czMzLjggMzQuOSAzMy44IDM0LjlsLTEyIDI5LjUgMTUuMyA0My43cy00NC45IDE3MC4yLTUwLjEgMTkxYy0xMC40IDQwLjktMTcuNCA1Ni44LTQ2LjkgNzcuNXMtODIuOSA1Ni44LTkxLjYgNjIuMmMtMS45IDEuMi0zLjkgMi41LTUuOSAzLjljLTcuNSA1LjEtMTUuOCAxMC44LTIzLjUgMTAuOGwwIDAgMCAwYy03LjcgMC0xNi4xLTUuNy0yMy41LTEwLjhjLTItMS40LTQtMi44LTUuOS0zLjljLTguNy01LjUtNjIuMS00MS41LTkxLjYtNjIuMnMtMzYuNS0zNi42LTQ2LjktNzcuNWMtNS4zLTIwLjgtNTAuMS0xOTEtNTAuMS0xOTFsMTUuMy00My43TDkuMiA5My4zczE1LjMtMTYuNCAzMy44LTM0LjlzNTcuOC03LjYgNTcuOC03LjZMMTQ1LjUgMHpNMjI0IDQwNy42bDAgMGMzLjcgMCA4LjktNC43IDEzLTguNGMuNi0uNSAxLjItMS4xIDEuNy0xLjVjNC4yLTMuNyA0Ny44LTM3LjUgNTEtMzkuOHM1LjQtNi41IDEuOS04LjdjLTIuOC0xLjctMTAtNS41LTIwLjMtMTAuOGMtMy0xLjYtNi4zLTMuMi05LjctNWMtMTUuNC04LTM0LjUtMTQuNy0zNy41LTE0LjdsMCAwIDAgMGMtMyAwLTIyLjEgNi44LTM3LjUgMTQuN2MtMy41IDEuOC02LjcgMy41LTkuNyA1Yy0xMC4zIDUuMy0xNy42IDkuMS0yMC4zIDEwLjhjLTMuNiAyLjItMS40IDYuNCAxLjkgOC43czQ2LjggMzYuMSA1MSAzOS44Yy41IC41IDEuMSAxIDEuNyAxLjVjNC4xIDMuNyA5LjMgOC40IDEzIDguNGwwIDB6bTAtMTY1LjdsMCAwYzQuNyAwIDE3LjYtMyAyNi40LTVsMCAwIDItLjVjNy44LTEuOCA3LjMtNi4zIDYuNC0xM2MtLjEtLjgtLjItMS42LS4zLTIuNGMtLjYtNi4xLTUuOC0zMy4xLTkuMS01MC4zYy0xLjEtNS44LTItMTAuNS0yLjQtMTIuOWMtMS41LTguMS0uNi05LjQgLjctMTEuM2MuMi0uMyAuNS0uNyAuNy0xLjFjMS40LTIuMyAxNi02LjIgMjcuOS05LjVsMCAwYzIuNS0uNyA0LjgtMS4zIDYuOS0xLjljMTAuNi0zIDMyLjQtLjYgNDQuMiAuNmMxLjggLjIgMy40IC40IDQuNyAuNWM5LjYgLjkgMTAuNCAyLjMgNy4yIDMuOGMtMi4zIDEuMS0xNi4yIDYuMy0yOC43IDEwLjlsMCAwIDAgMGMtNC43IDEuOC05LjIgMy41LTEyLjggNC44Yy0xLjUgLjUtMyAxLjEtNC41IDEuN2MtMTIuNSA0LjYtMjcuMiAxMC0yOC45IDE5LjRjLTEuNSA4LjMgNS4yIDE5LjkgMTEuMyAzMC4zbDAgMGMxLjYgMi44IDMuMiA1LjUgNC42IDguMWM2LjMgMTEuOSA2LjUgMTMuMyA2LjEgMTguMWMtLjQgMy45LTE0LjUgMTIuNy0yMi40IDE3LjZsMCAwYy0xLjggMS4xLTMuMyAyLjEtNC4yIDIuN2MtLjggLjUtMi4xIDEuNC0zLjggMi40Yy04LjYgNS4yLTI2LjMgMTYtMjYuMyAyMi41YzAgNy44IDI0LjYgMjguMSAzMi40IDMzLjJzMjguOSAxNi4xIDM3LjkgMTcuOHMyMy04LjUgMzEuMi0yMy44YzcuNy0xNC40IDEuNy0yOC41LTMuMi00MGwtLjktMi4yYy00LjUtMTAuNiAxLjktMTcgNi4yLTIxLjNsMCAwYy41LS41IDEtMSAxLjQtMS40TDM3Ny43IDE5NGMxLjMtMS4zIDIuNS0yLjYgMy43LTMuOGwwIDBjNS44LTUuNyAxMC44LTEwLjUgMTAuOC0yMi44YzAtMTQuOS01Ny41LTg0LjUtNTcuNS04NC41cy00OC41IDkuMy01NS4xIDkuM2MtNS4yIDAtMTUuMy0zLjUtMjUuOC03LjFsMCAwYy0yLjctLjktNS40LTEuOS04LTIuN0MyMzIuOCA3OC4xIDIyNCA3OCAyMjQgNzhsMCAwIDAgMHMtOC43IDAtMjEuOCA0LjRjLTIuNyAuOS01LjQgMS44LTggMi43bDAgMGMtMTAuNSAzLjYtMjAuNiA3LjEtMjUuOCA3LjFjLTYuNSAwLTU1LjEtOS4zLTU1LjEtOS4zcy01Ny41IDY5LjYtNTcuNSA4NC41YzAgMTIuMyA0LjkgMTcuMSAxMC44IDIyLjhsMCAwYzEuMiAxLjIgMi41IDIuNCAzLjcgMy44bDQzLjEgNDUuOGMuNCAuNSAuOSAuOSAxLjQgMS40bDAgMGM0LjMgNC4zIDEwLjYgMTAuNyA2LjIgMjEuM2wtLjkgMi4yYy00LjkgMTEuNS0xMSAyNS42LTMuMiA0MGM4LjIgMTUuMyAyMi4yIDI1LjUgMzEuMiAyMy44czMwLjEtMTIuNyAzNy45LTE3LjhzMzIuNC0yNS40IDMyLjQtMzMuMmMwLTYuNS0xNy43LTE3LjMtMjYuMy0yMi41Yy0xLjctMS0zLjEtMS45LTMuOC0yLjRjLS45LS42LTIuNC0xLjUtNC4yLTIuN2MtNy45LTQuOS0yMi0xMy43LTIyLjQtMTcuNmMtLjQtNC44LS4zLTYuMiA2LjEtMTguMWMxLjMtMi41IDIuOS01LjMgNC42LTguMWM2LTEwLjQgMTIuOC0yMiAxMS4zLTMwLjNjLTEuNy05LjQtMTYuNC0xNC44LTI4LjktMTkuNGMtMS42LS42LTMuMS0xLjEtNC41LTEuN2MtMy42LTEuNC04LjEtMy4xLTEyLjgtNC44bC0uMSAwYy0xMi41LTQuNy0yNi40LTkuOS0yOC43LTEwLjljLTMuMi0xLjUtMi4zLTIuOCA3LjItMy44YzEuMy0uMSAyLjktLjMgNC43LS41YzExLjgtMS4zIDMzLjYtMy42IDQ0LjItLjZjMi4xIC42IDQuNCAxLjIgNi45IDEuOWMxMS45IDMuMiAyNi41IDcuMiAyNy45IDkuNWMuMiAuNCAuNSAuNyAuNyAxLjFjMS4zIDEuOSAyLjIgMy4yIC43IDExLjNjLS40IDIuNC0xLjMgNy4xLTIuNCAxMi45Yy0zLjMgMTcuMi04LjUgNDQuMi05LjEgNTAuM2MtLjEgLjgtLjIgMS43LS4zIDIuNGMtLjggNi43LTEuNCAxMS4yIDYuNCAxM2wyIC41IDAgMGM4LjggMiAyMS44IDUgMjYuNCA1bDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnRjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMC4yMDQgMjQyLjYzOGMyNy43My0xNC4xOCA0NS4zNzctMzkuMzkgNDEuMjgtODEuMy01LjM1OC01Ny4zNTEtNTIuNDU4LTc2LjU3My0xMTQuODUtODEuOTI5VjBoLTQ4LjUyOHY3Ny4yMDNjLTEyLjYwNSAwLTI1LjUyNS4zMTUtMzguNDQ0LjYzVjBoLTQ4LjUyOHY3OS40MDljLTE3Ljg0Mi41MzktMzguNjIyLjI3Ni05Ny4zNyAwdjUxLjY3OGMzOC4zMTQtLjY3OCA1OC40MTctMy4xNCA2My4wMjMgMjEuNDI3djIxNy40MjljLTIuOTI1IDE5LjQ5Mi0xOC41MjQgMTYuNjg1LTUzLjI1NSAxNi4wNzFMMy43NjUgNDQzLjY4Yzg4LjQ4MSAwIDk3LjM3LjMxNSA5Ny4zNy4zMTVWNTEyaDQ4LjUyOHYtNjcuMDZjMTMuMjM0LjMxNSAyNi4xNTQuMzE1IDM4LjQ0NC4zMTVWNTEyaDQ4LjUyOHYtNjguMDA1YzgxLjI5OS00LjQxMiAxMzUuNjQ3LTI0Ljg5NCAxNDIuODk1LTEwMS40NjcgNS42NzEtNjEuNDQ2LTIzLjMyLTg4Ljg2Mi02OS4zMjYtOTkuODl6TTE1MC42MDggMTM0LjU1M2MyNy40MTUgMCAxMTMuMTI2LTguNTA3IDExMy4xMjYgNDguNTI4IDAgNTQuNTE1LTg1LjcxIDQ4LjIxMi0xMTMuMTI2IDQ4LjIxMnYtOTYuNzR6bTAgMjUxLjc3NlYyNzkuODIxYzMyLjc3MiAwIDEzMy4xMjctOS4xMzggMTMzLjEyNyA1My4yNTUtLjAwMSA2MC4xODYtMTAwLjM1NSA1My4yNTMtMTMzLjEyNyA1My4yNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1ZmZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjcuODQgMzgwLjY3bC0xOTYuNSA5Ny44MmExOC42IDE4LjYgMCAwIDEtMTQuNjcgMEwyMC4xNiAzODAuNjdjLTQtMi00LTUuMjggMC03LjI5TDY3LjIyIDM1MGExOC42NSAxOC42NSAwIDAgMSAxNC42OSAwbDEzNC43NiA2N2ExOC41MSAxOC41MSAwIDAgMCAxNC42NyAwbDEzNC43Ni02N2ExOC42MiAxOC42MiAwIDAgMSAxNC42OCAwbDQ3LjA2IDIzLjQzYzQuMDUgMS45NiA0LjA1IDUuMjQgMCA3LjI0em0wLTEzNi41M2wtNDcuMDYtMjMuNDNhMTguNjIgMTguNjIgMCAwIDAtMTQuNjggMGwtMTM0Ljc2IDY3LjA4YTE4LjY4IDE4LjY4IDAgMCAxLTE0LjY3IDBMODEuOTEgMjIwLjcxYTE4LjY1IDE4LjY1IDAgMCAwLTE0LjY5IDBsLTQ3LjA2IDIzLjQzYy00IDItNCA1LjI5IDAgNy4zMWwxOTYuNTEgOTcuOGExOC42IDE4LjYgMCAwIDAgMTQuNjcgMGwxOTYuNS05Ny44YzQuMDUtMi4wMiA0LjA1LTUuMyAwLTcuMzF6TTIwLjE2IDEzMC40MmwxOTYuNSA5MC4yOWEyMC4wOCAyMC4wOCAwIDAgMCAxNC42NyAwbDE5Ni41MS05MC4yOWM0LTEuODYgNC00Ljg5IDAtNi43NEwyMzEuMzMgMzMuNGExOS44OCAxOS44OCAwIDAgMC0xNC42NyAwbC0xOTYuNSA5MC4yOGMtNC4wNSAxLjg1LTQuMDUgNC44OCAwIDYuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1cm9tb2JlbGV4cGVydGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnYxMjhoMTI4VjMySDB6bTEyMCAxMjBIOFY0MGgxMTJ2MTEyem00MC0xMjB2MTI4aDEyOFYzMkgxNjB6bTEyMCAxMjBIMTY4VjQwaDExMnYxMTJ6bTQwLTEyMHYxMjhoMTI4VjMySDMyMHptMTIwIDEyMEgzMjhWNDBoMTEydjExMnpNMCAxOTJ2MTI4aDEyOFYxOTJIMHptMTIwIDEyMEg4VjIwMGgxMTJ2MTEyem00MC0xMjB2MTI4aDEyOFYxOTJIMTYwem0xMjAgMTIwSDE2OFYyMDBoMTEydjExMnptNDAtMTIwdjEyOGgxMjhWMTkySDMyMHptMTIwIDEyMEgzMjhWMjAwaDExMnYxMTJ6TTAgMzUydjEyOGgxMjhWMzUySDB6bTEyMCAxMjBIOFYzNjBoMTEydjExMnptNDAtMTIwdjEyOGgxMjhWMzUySDE2MHptMTIwIDEyMEgxNjhWMzYwaDExMnYxMTJ6bTQwLTEyMHYxMjhoMTI4VjM1MkgzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1eU5MYXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJDMTMzLjI3IDMyIDcuNzkgMTMyLjMyIDcuNzkgMjU2UzEzMy4yNyA0ODAgMjg4IDQ4MHMyODAuMjEtMTAwLjMyIDI4MC4yMS0yMjRTNDQyLjczIDMyIDI4OCAzMnptLTg1LjM5IDM1Ny4xOUw2NC4xIDM5MC41NWw3Ny4yNS0yOTAuNzRoMTMzLjQ0YzYzLjE1IDAgODQuOTMgMjguNjUgNzggNzIuODRhNjAuMjQgNjAuMjQgMCAwIDEtMS41IDYuODUgNzcuMzkgNzcuMzkgMCAwIDAtMTcuMjEtMS45M2MtNDIuMzUgMC03Ni42OSAzMy44OC03Ni42OSA3NS42NSAwIDM3LjE0IDI3LjE0IDY4IDYyLjkzIDc0LjQ1LTE4LjI0IDM3LjE2LTU2LjE2IDYwLjkyLTExNy43MSA2MS41MnpNMzU4IDIwNy4xMWgzMmwtMjIuMTYgOTAuMzFoLTM1LjQxbC0xMS4xOS0zNS42My03LjgzIDM1LjYzaC0zNy44M2wyNi42My05MC4zMWgzMS4zNGwxNSAzNi43NXptMTQ1Ljg2IDE4Mi4wOEgzMDYuNzlMMzIyLjYzIDMyOGE3OC44IDc4LjggMCAwIDAgMTEuNDcuODNjNDIuMzQgMCA3Ni42OS0zMy44NyA3Ni42OS03NS42NSAwLTMyLjY1LTIxLTYwLjQ2LTUwLjM4LTcxLjA2bDIxLjMzLTgyLjM1aDkyLjVsLTUzLjA1IDIwNS4zNmgxMDMuODd6TTIxMS43IDI2OS4zOUgxODdsLTEzLjggNTYuNDdoMjQuN2MxNi4xNCAwIDMyLjExLTMuMTggMzcuOTQtMjYuNjUgNS41Ni0yMi4zMS03Ljk5LTI5LjgyLTI0LjE0LTI5Ljgyek0yMzMgMTcwaC0yMS4zNEwyMDAgMjE3LjcxaDIxLjM3YzE4IDAgMzUuMzgtMTQuNjQgMzkuMjEtMzAuMTRDMjY1LjIzIDE2OC43MSAyNTEuMDcgMTcwIDIzMyAxNzB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1eXNlbGxhZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDE1MC43bDQyLjkgMTYwLjdoLTg1LjhMMjI0IDE1MC43ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS02NS4zIDMyNS4zbC05NC41LTI5OC43SDE1OS44TDY1LjMgNDA1LjNIMTU2bDExMS43LTkxLjYgMjQuMiA5MS42aDkwLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbmFkaWFuTWFwbGVMZWFmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4My44IDM1MS43YzIuNS0yLjUgMTA1LjItOTIuNCAxMDUuMi05Mi40bC0xNy41LTcuNWMtMTAtNC45LTcuNC0xMS41LTUtMTcuNCAyLjQtNy42IDIwLjEtNjcuMyAyMC4xLTY3LjNzLTQ3LjcgMTAtNTcuNyAxMi41Yy03LjUgMi40LTEwLTIuNS0xMi41LTcuNXMtMTUtMzIuNC0xNS0zMi40LTUyLjYgNTkuOS01NS4xIDYyLjNjLTEwIDcuNS0yMC4xIDAtMTcuNi0xMCAwLTEwIDI3LjYtMTI5LjYgMjcuNi0xMjkuNnMtMzAuMSAxNy40LTQwLjEgMjIuNGMtNy41IDUtMTIuNiA1LTE3LjYtNUMyOTMuNSA3Mi4zIDI1NS45IDAgMjU1LjkgMHMtMzcuNSA3Mi4zLTQyLjUgNzkuOGMtNSAxMC0xMCAxMC0xNy42IDUtMTAtNS00MC4xLTIyLjQtNDAuMS0yMi40UzE4My4zIDE4MiAxODMuMyAxOTJjMi41IDEwLTcuNSAxNy41LTE3LjYgMTAtMi41LTIuNS01NS4xLTYyLjMtNTUuMS02Mi4zUzk4LjEgMTY3IDk1LjYgMTcycy01IDkuOS0xMi41IDcuNUM3MyAxNzcgMjUuNCAxNjcgMjUuNCAxNjdzMTcuNiA1OS43IDIwLjEgNjcuM2MyLjQgNiA1IDEyLjUtNSAxNy40TDIzIDI1OS4zczEwMi42IDg5LjkgMTA1LjIgOTIuNGM1LjEgNSAxMCA3LjUgNS4xIDIyLjUtNS4xIDE1LTEwLjEgMzUuMS0xMC4xIDM1LjFzOTUuMi0yMC4xIDEwNS4zLTIyLjZjOC43LS45IDE4LjMgMi41IDE4LjMgMTIuNVMyNDEgNTEyIDI0MSA1MTJoMzBzLTUuOC0xMDIuNy01LjgtMTEyLjggOS41LTEzLjQgMTguNC0xMi41YzEwIDIuNSAxMDUuMiAyMi42IDEwNS4yIDIyLjZzLTUtMjAuMS0xMC0zNS4xIDAtMTcuNSA1LTIyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjQW1hem9uUGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyNC43IDIwMS44Yy4xLTExLjggMC0yMy41IDAtMzUuM3YtMzUuM2MwLTEuMy40LTIgMS40LTIuNyAxMS41LTggMjQuMS0xMi4xIDM4LjItMTEuMSAxMi41LjkgMjIuNyA3IDI4LjEgMjEuNyAzLjMgOC45IDQuMSAxOC4yIDQuMSAyNy43IDAgOC43LS43IDE3LjMtMy40IDI1LjYtNS43IDE3LjgtMTguNyAyNC43LTM1LjcgMjMuOS0xMS43LS41LTIxLjktNS0zMS40LTExLjctLjktLjgtMS40LTEuNi0xLjMtMi44em0xNTQuOSAxNC42YzQuNiAxLjggOS4zIDIgMTQuMSAxLjUgMTEuNi0xLjIgMjEuOS01LjcgMzEuMy0xMi41LjktLjYgMS4zLTEuMyAxLjMtMi41LS4xLTMuOSAwLTcuOSAwLTExLjggMC00LS4xLTggMC0xMiAwLTEuNC0uNC0yLTEuOC0yLjItNy0uOS0xMy45LTIuMi0yMC45LTIuOS03LS42LTE0LS4zLTIwLjggMS45LTYuNyAyLjItMTEuNyA2LjItMTMuNyAxMy4xLTEuNiA1LjQtMS42IDEwLjguMSAxNi4yIDEuNiA1LjUgNS4yIDkuMiAxMC40IDExLjJ6TTU3NiA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHptLTIwNy41IDIzLjljLjQgMS43LjkgMy40IDEuNiA1LjEgMTYuNSA0MC42IDMyLjkgODEuMyA0OS41IDEyMS45IDEuNCAzLjUgMS43IDYuNC4yIDkuOS0yLjggNi4yLTQuOSAxMi42LTcuOCAxOC43LTIuNiA1LjUtNi43IDkuNS0xMi43IDExLjItNC4yIDEuMS04LjUgMS4zLTEyLjkuOS0yLjEtLjItNC4yLS43LTYuMy0uOC0yLjgtLjItNC4yIDEuMS00LjMgNC0uMSAyLjgtLjEgNS42IDAgOC4zLjEgNC42IDEuNiA2LjcgNi4yIDcuNSA0LjcuOCA5LjQgMS42IDE0LjIgMS43IDE0LjMuMyAyNS43LTUuNCAzMy4xLTE3LjkgMi45LTQuOSA1LjYtMTAuMSA3LjctMTUuNCAxOS44LTUwLjEgMzkuNS0xMDAuMyA1OS4yLTE1MC41LjYtMS41IDEuMS0zIDEuMy00LjYuNC0yLjQtLjctMy42LTMuMS0zLjctNS42LS4xLTExLjEgMC0xNi43IDAtMy4xIDAtNS4zIDEuNC02LjQgNC4zLS40IDEuMS0uOSAyLjMtMS4zIDMuNGwtMjkuMSA4My43Yy0yLjEgNi4xLTQuMiAxMi4xLTYuNSAxOC42LS40LS45LS42LTEuNC0uOC0xLjktMTAuOC0yOS45LTIxLjYtNTkuOS0zMi40LTg5LjgtMS43LTQuNy0zLjUtOS41LTUuMy0xNC4yLS45LTIuNS0yLjctNC01LjQtNC02LjQtLjEtMTIuOC0uMi0xOS4yLS4xLTIuMiAwLTMuMyAxLjYtMi44IDMuN3pNMjQyLjQgMjA2YzEuNyAxMS43IDcuNiAyMC44IDE4IDI2LjYgOS45IDUuNSAyMC43IDYuMiAzMS43IDQuNiAxMi43LTEuOSAyMy45LTcuMyAzMy44LTE1LjUuNC0uMy44LS42IDEuNC0xIC41IDMuMi45IDYuMiAxLjUgOS4yLjUgMi42IDIuMSA0LjMgNC41IDQuNCA0LjYuMSA5LjEuMSAxMy43IDAgMi4zLS4xIDMuOC0xLjYgNC0zLjkuMS0uOC4xLTEuNi4xLTIuM3YtODguOGMwLTMuNi0uMi03LjItLjctMTAuOC0xLjYtMTAuOC02LjItMTkuNy0xNS45LTI1LjQtNS42LTMuMy0xMS44LTUtMTguMi01LjktMy0uNC02LS43LTkuMS0xLjFoLTEwYy0uOC4xLTEuNi4zLTIuNS4zLTguMi40LTE2LjMgMS40LTI0LjIgMy41LTUuMSAxLjMtMTAgMy4yLTE1IDQuOS0zIDEtNC41IDMuMi00LjQgNi41LjEgMi44LS4xIDUuNiAwIDguMy4xIDQuMSAxLjggNS4yIDUuNyA0LjEgNi41LTEuNyAxMy4xLTMuNSAxOS43LTQuOCAxMC4zLTEuOSAyMC43LTIuNyAzMS4xLTEuMiA1LjQuOCAxMC41IDIuNCAxNC4xIDcgMy4xIDQgNC4yIDguOCA0LjQgMTMuNy4zIDYuOS4yIDEzLjkuMyAyMC44IDAgLjQtLjEuNy0uMiAxLjItLjQgMC0uOCAwLTEuMS0uMS04LjgtMi4xLTE3LjctMy42LTI2LjgtNC4xLTkuNS0uNS0xOC45LjEtMjcuOSAzLjItMTAuOCAzLjgtMTkuNSAxMC4zLTI0LjYgMjAuOC00LjEgOC4zLTQuNiAxNy0zLjQgMjUuOHpNOTguNyAxMDYuOXYxNzUuM2MwIC44IDAgMS43LjEgMi41LjIgMi41IDEuNyA0LjEgNC4xIDQuMiA1LjkuMSAxMS44LjEgMTcuNyAwIDIuNSAwIDQtMS43IDQuMS00LjEuMS0uOC4xLTEuNy4xLTIuNXYtNjAuN2MuOS43IDEuNCAxLjIgMS45IDEuNiAxNSAxMi41IDMyLjIgMTYuNiA1MS4xIDEyLjkgMTcuMS0zLjQgMjguOS0xMy45IDM2LjctMjkuMiA1LjgtMTEuNiA4LjMtMjQuMSA4LjctMzcgLjUtMTQuMy0xLTI4LjQtNi44LTQxLjctNy4xLTE2LjQtMTguOS0yNy4zLTM2LjctMzAuOS0yLjctLjYtNS41LS44LTguMi0xLjJoLTdjLTEuMi4yLTIuNC4zLTMuNi41LTExLjcgMS40LTIyLjMgNS44LTMxLjggMTIuNy0yIDEuNC0zLjkgMy01LjkgNC41LS4xLS41LS4zLS44LS40LTEuMi0uNC0yLjMtLjctNC42LTEuMS02LjktLjYtMy45LTIuNS01LjUtNi40LTUuNmgtOS43Yy01LjktLjEtNi45IDEtNi45IDYuOHpNNDkzLjYgMzM5Yy0yLjctLjctNS4xIDAtNy42IDEtNDMuOSAxOC40LTg5LjUgMzAuMi0xMzYuOCAzNS44LTE0LjUgMS43LTI5LjEgMi44LTQzLjcgMy4yLTI2LjYuNy01My4yLS44LTc5LjYtNC4zLTE3LjgtMi40LTM1LjUtNS43LTUzLTkuOS0zNy04LjktNzIuNy0yMS43LTEwNi43LTM4LjgtOC44LTQuNC0xNy40LTkuMy0yNi4xLTE0LTMuOC0yLjEtNi4yLTEuNS04LjIgMi4xdjEuN2MxLjIgMS42IDIuMiAzLjQgMy43IDQuOCAzNiAzMi4yIDc2LjYgNTYuNSAxMjIgNzIuOSAyMS45IDcuOSA0NC40IDEzLjcgNjcuMyAxNy41IDE0IDIuMyAyOCAzLjggNDIuMiA0LjUgMyAuMSA2IC4yIDkgLjQuNyAwIDEuNC4yIDIuMS4zaDE3LjdjLjctLjEgMS40LS4zIDIuMS0uMyAxNC45LS40IDI5LjgtMS44IDQ0LjYtNCAyMS40LTMuMiA0Mi40LTguMSA2Mi45LTE0LjcgMjkuNi05LjYgNTcuNy0yMi40IDgzLjQtNDAuMSAyLjgtMS45IDUuNy0zLjggOC02LjIgNC4zLTQuNCAyLjMtMTAuNC0zLjMtMTEuOXptNTAuNC0yNy43Yy0uOC00LjItNC01LjgtNy42LTctNS43LTEuOS0xMS42LTIuOC0xNy42LTMuMy0xMS0uOS0yMi0uNC0zMi44IDEuNi0xMiAyLjItMjMuNCA2LjEtMzMuNSAxMy4xLTEuMi44LTIuNCAxLjgtMy4xIDMtLjYuOS0uNyAyLjMtLjUgMy40LjMgMS4zIDEuNyAxLjYgMyAxLjUuNiAwIDEuMiAwIDEuOC0uMWwxOS41LTIuMWM5LjYtLjkgMTkuMi0xLjUgMjguOC0uOCA0LjEuMyA4LjEgMS4yIDEyIDIuMiA0LjMgMS4xIDYuMiA0LjQgNi40IDguNy4zIDYuNy0xLjIgMTMuMS0yLjkgMTkuNS0zLjUgMTIuOS04LjMgMjUuNC0xMy4zIDM3LjgtLjMuOC0uNyAxLjctLjggMi41LS40IDIuNSAxIDQgMy40IDMuNSAxLjQtLjMgMy0xLjEgNC0yLjEgMy43LTMuNiA3LjUtNy4yIDEwLjYtMTEuMiAxMC43LTEzLjggMTctMjkuNiAyMC43LTQ2LjYuNy0zIDEuMi02LjEgMS43LTkuMS4yLTQuNy4yLTkuNi4yLTE0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjQW1leCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OEg1MjhjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTEuMUg1MTQuM2wtMzEuOS0zNS4xLTMxLjkgMzUuMUgyNDYuOFYyNjcuMUgxODFMMjYyLjcgODIuNGg3OC42bDI4LjEgNjMuMlY4Mi40aDk3LjJMNDgzLjUgMTMwbDE3LTQ3LjZINTc2VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4QzIxLjUgMzIgMCA1My41IDAgODBWNDMyem00NDAuNC0yMS43TDQ4Mi42IDM2NGw0MiA0Ni4zSDU3NmwtNjgtNzIuMSA2OC03Mi4xSDUyNS40bC00MiA0Ni43LTQxLjUtNDYuN0gzOTAuNUw0NTggMzM4LjZsLTY3LjQgNzEuNlYzNzcuMWgtODNWMzU0LjloODAuOVYzMjIuNkgzMDcuNlYzMDAuMmg4M1YyNjcuMWgtMTIyVjQxMC4zSDQ0MC40em05Ni4zLTcyTDU3NiAzODAuMlYyOTYuOWwtMzkuMyA0MS40em0tMzYuMy05MmwzNi45LTEwMC42VjI0Ni4zSDU3NlYxMDNINTE1LjhsLTMyLjIgODkuM0w0NTEuNyAxMDNIMzkwLjVWMjQ2LjFMMzI3LjMgMTAzSDI3Ni4xTDIxMy43IDI0Ni4zaDQzbDExLjktMjguN2g2NS45bDEyIDI4LjdoODIuN1YxNDZMNDY2IDI0Ni4zaDM0LjR6TTI4MiAxODUuNGwxOS41LTQ2LjkgMTkuNCA0Ni45SDI4MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NBcHBsZVBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDIuMiAyMTguNGMwIDE3LjItMTAuNSAyNy4xLTI5IDI3LjFoLTI0LjN2LTU0LjJoMjQuNGMxOC40IDAgMjguOSA5LjggMjguOSAyNy4xem00Ny41IDYyLjZjMCA4LjMgNy4yIDEzLjcgMTguNSAxMy43IDE0LjQgMCAyNS4yLTkuMSAyNS4yLTIxLjl2LTcuN2wtMjMuNSAxLjVjLTEzLjMuOS0yMC4yIDUuOC0yMC4yIDE0LjR6TTU3NiA3OXYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4Vjc5YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTI3LjggMTk3LjJjOC40LjcgMTYuOC00LjIgMjIuMS0xMC40IDUuMi02LjQgOC42LTE1IDcuNy0yMy43LTcuNC4zLTE2LjYgNC45LTIxLjkgMTEuMy00LjggNS41LTguOSAxNC40LTcuOSAyMi44em02MC42IDc0LjVjLS4yLS4yLTE5LjYtNy42LTE5LjgtMzAtLjItMTguNyAxNS4zLTI3LjcgMTYtMjguMi04LjgtMTMtMjIuNC0xNC40LTI3LjEtMTQuNy0xMi4yLS43LTIyLjYgNi45LTI4LjQgNi45LTUuOSAwLTE0LjctNi42LTI0LjMtNi40LTEyLjUuMi0yNC4yIDcuMy0zMC41IDE4LjYtMTMuMSAyMi42LTMuNCA1NiA5LjMgNzQuNCA2LjIgOS4xIDEzLjcgMTkuMSAyMy41IDE4LjcgOS4zLS40IDEzLTYgMjQuMi02IDExLjMgMCAxNC41IDYgMjQuMyA1LjkgMTAuMi0uMiAxNi41LTkuMSAyMi44LTE4LjIgNi45LTEwLjQgOS44LTIwLjQgMTAtMjF6bTEzNS40LTUzLjRjMC0yNi42LTE4LjUtNDQuOC00NC45LTQ0LjhoLTUxLjJ2MTM2LjRoMjEuMnYtNDYuNmgyOS4zYzI2LjggMCA0NS42LTE4LjQgNDUuNi00NXptOTAgMjMuN2MwLTE5LjctMTUuOC0zMi40LTQwLTMyLjQtMjIuNSAwLTM5LjEgMTIuOS0zOS43IDMwLjVoMTkuMWMxLjYtOC40IDkuNC0xMy45IDIwLTEzLjkgMTMgMCAyMC4yIDYgMjAuMiAxNy4ydjcuNWwtMjYuNCAxLjZjLTI0LjYgMS41LTM3LjkgMTEuNi0zNy45IDI5LjEgMCAxNy43IDEzLjcgMjkuNCAzMy40IDI5LjQgMTMuMyAwIDI1LjYtNi43IDMxLjItMTcuNGguNFYzMTBoMTkuNnYtNjh6TTUxNiAyMTAuOWgtMjEuNWwtMjQuOSA4MC42aC0uNGwtMjQuOS04MC42SDQyMmwzNS45IDk5LjMtMS45IDZjLTMuMiAxMC4yLTguNSAxNC4yLTE3LjkgMTQuMi0xLjcgMC00LjktLjItNi4yLS4zdjE2LjRjMS4yLjQgNi41LjUgOC4xLjUgMjAuNyAwIDMwLjQtNy45IDM4LjktMzEuOEw1MTYgMjEwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjRGluZXJzQ2x1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzkuNyA3OS45Yy05Ni45IDAtMTc1LjggNzguNi0xNzUuOCAxNzUuOCAwIDk2LjkgNzguOSAxNzUuOCAxNzUuOCAxNzUuOCA5Ny4yIDAgMTc1LjgtNzguOSAxNzUuOC0xNzUuOCAwLTk3LjItNzguNi0xNzUuOC0xNzUuOC0xNzUuOHptLTM5LjkgMjc5LjZjLTQxLjctMTUuOS03MS40LTU2LjQtNzEuNC0xMDMuOHMyOS43LTg3LjkgNzEuNC0xMDQuMXYyMDcuOXptNzkuOC4zVjE1MS42YzQxLjcgMTYuMiA3MS40IDU2LjcgNzEuNCAxMDQuMXMtMjkuNyA4Ny45LTcxLjQgMTA0LjF6TTUyOCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTMyOS43IDQ0OGgtOTAuM2MtMTA2LjIgMC0xOTMuOC04NS41LTE5My44LTE5MC4yQzQ1LjYgMTQzLjIgMTMzLjIgNjQgMjM5LjQgNjRoOTAuM2MxMDUgMCAyMDAuNyA3OS4yIDIwMC43IDE5My44IDAgMTA0LjctOTUuNyAxOTAuMi0yMDAuNyAxOTAuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NEaXNjb3ZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjAuNCAxOTYuMWMwLTcuOS01LjUtMTIuMS0xNS42LTEyLjFoLTQuOXYyNC45aDQuN2MxMC4zIDAgMTUuOC00LjQgMTUuOC0xMi44ek01MjggMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tNDQuMSAxMzguOWMyMi42IDAgNTIuOS00LjEgNTIuOSAyNC40IDAgMTIuNi02LjYgMjAuNy0xOC43IDIzLjJsMjUuOCAzNC40aC0xOS42bC0yMi4yLTMyLjhoLTIuMnYzMi44aC0xNnptLTU1LjkuMWg0NS4zdjE0SDQ0NHYxOC4yaDI4LjNWMjE3SDQ0NHYyMi4yaDI5LjNWMjUzSDQyOHptLTY4LjcgMGwyMS45IDU1LjIgMjIuMi01NS4yaDE3LjVsLTM1LjUgODQuMmgtOC42bC0zNS04NC4yem0tNTUuOS0zYzI0LjcgMCA0NC42IDIwIDQ0LjYgNDQuNiAwIDI0LjctMjAgNDQuNi00NC42IDQ0LjYtMjQuNyAwLTQ0LjYtMjAtNDQuNi00NC42IDAtMjQuNyAyMC00NC42IDQ0LjYtNDQuNnptLTQ5LjMgNi4xdjE5Yy0yMC4xLTIwLjEtNDYuOC00LjctNDYuOCAxOSAwIDI1IDI3LjUgMzguNSA0Ni44IDE5LjJ2MTljLTI5LjcgMTQuMy02My4zLTUuNy02My4zLTM4LjIgMC0zMS4yIDMzLjEtNTMgNjMuMy0zOHptLTk3LjIgNjYuM2MxMS40IDAgMjIuNC0xNS4zLTMuMy0yNC40LTE1LTUuNS0yMC4yLTExLjQtMjAuMi0yMi43IDAtMjMuMiAzMC42LTMxLjQgNDkuNy0xNC4zbC04LjQgMTAuOGMtMTAuNC0xMS42LTI0LjktNi4yLTI0LjkgMi41IDAgNC40IDIuNyA2LjkgMTIuMyAxMC4zIDE4LjIgNi42IDIzLjYgMTIuNSAyMy42IDI1LjYgMCAyOS41LTM4LjggMzcuNC01Ni42IDExLjNsMTAuMy05LjljMy43IDcuMSA5LjkgMTAuOCAxNy41IDEwLjh6TTU1LjQgMjUzSDMydi04MmgyMy40YzI2LjEgMCA0NC4xIDE3IDQ0LjEgNDEuMSAwIDE4LjUtMTMuMiA0MC45LTQ0LjEgNDAuOXptNjcuNSAwaC0xNnYtODJoMTZ6TTU0NCA0MzNjMCA4LjItNi44IDE1LTE1IDE1SDEyOGMxODkuNi0zNS42IDM4Mi43LTEzOS4yIDQxNi0xNjB6TTc0LjEgMTkxLjZjLTUuMi00LjktMTEuNi02LjYtMjEuOS02LjZINDh2NTQuMmg0LjJjMTAuMyAwIDE3LTIgMjEuOS02LjQgNS43LTUuMiA4LjktMTIuOCA4LjktMjAuN3MtMy4yLTE1LjUtOC45LTIwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjSmNiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMS41IDI0NC4zVjIxMmM0MS4yIDAgMzguNS4yIDM4LjUuMiA3LjMgMS4zIDEzLjMgNy4zIDEzLjMgMTYgMCA4LjgtNiAxNC41LTEzLjMgMTUuOC0xLjIuNC0zLjMuMy0zOC41LjN6bTQyLjggMjAuMmMtMi44LS43LTMuMy0uNS00Mi44LS41djM1YzM5LjYgMCA0MCAuMiA0Mi44LS41IDcuNS0xLjUgMTMuNS04IDEzLjUtMTcgMC04LjctNi0xNS41LTEzLjUtMTd6TTU3NiA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTgyIDE5Mi4zaC01N2MwIDY3LjEgMTAuNyAxMDkuNy0zNS44IDEwOS43LTE5LjUgMC0zOC44LTUuNy01Ny4yLTE0Ljh2MjhjMzAgOC4zIDY4IDguMyA2OCA4LjMgOTcuOSAwIDgyLTQ3LjcgODItMTMxLjJ6bTE3OC41IDQuNWMtNjMuNC0xNi0xNjUtMTQuOS0xNjUgNTkuMyAwIDc3LjEgMTA4LjIgNzMuNiAxNjUgNTkuMlYyODdDMzEyLjkgMzExLjcgMjUzIDMwOSAyNTMgMjU2czU5LjgtNTUuNiAxMDcuNS0zMS4ydi0yOHpNNTQ0IDI4Ni41YzAtMTguNS0xNi41LTMwLjUtMzgtMzJ2LS44YzE5LjUtMi43IDMwLjMtMTUuNSAzMC4zLTMwLjIgMC0xOS0xNS43LTMwLTM3LTMxIDAgMCA2LjMtLjMtMTIwLjMtLjN2MTI3LjVoMTIyLjdjMjQuMy4xIDQyLjMtMTIuOSA0Mi4zLTMzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjTWFzdGVyY2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODIuOSA0MTAuM2MwIDYuOC00LjYgMTEuNy0xMS4yIDExLjctNi44IDAtMTEuMi01LjItMTEuMi0xMS43IDAtNi41IDQuNC0xMS43IDExLjItMTEuNyA2LjYgMCAxMS4yIDUuMiAxMS4yIDExLjd6bS0zMTAuOC0xMS43Yy03LjEgMC0xMS4yIDUuMi0xMS4yIDExLjcgMCA2LjUgNC4xIDExLjcgMTEuMiAxMS43IDYuNSAwIDEwLjktNC45IDEwLjktMTEuNy0uMS02LjUtNC40LTExLjctMTAuOS0xMS43em0xMTcuNS0uM2MtNS40IDAtOC43IDMuNS05LjUgOC43aDE5LjFjLS45LTUuNy00LjQtOC43LTkuNi04Ljd6bTEwNy44LjNjLTYuOCAwLTEwLjkgNS4yLTEwLjkgMTEuNyAwIDYuNSA0LjEgMTEuNyAxMC45IDExLjcgNi44IDAgMTEuMi00LjkgMTEuMi0xMS43IDAtNi41LTQuNC0xMS43LTExLjItMTEuN3ptMTA1LjkgMjYuMWMwIC4zLjMuNS4zIDEuMSAwIC4zLS4zLjUtLjMgMS4xLS4zLjMtLjMuNS0uNS44LS4zLjMtLjUuNS0xLjEuNS0uMy4zLS41LjMtMS4xLjMtLjMgMC0uNSAwLTEuMS0uMy0uMyAwLS41LS4zLS44LS41LS4zLS4zLS41LS41LS41LS44LS4zLS41LS4zLS44LS4zLTEuMSAwLS41IDAtLjguMy0xLjEgMC0uNS4zLS44LjUtMS4xLjMtLjMuNS0uMy44LS41LjUtLjMuOC0uMyAxLjEtLjMuNSAwIC44IDAgMS4xLjMuNS4zLjguMyAxLjEuNXMuMi42LjUgMS4xem0tMi4yIDEuNGMuNSAwIC41LS4zLjgtLjMuMy0uMy4zLS41LjMtLjggMC0uMyAwLS41LS4zLS44LS4zIDAtLjUtLjMtMS4xLS4zaC0xLjZ2My41aC44VjQyNmguM2wxLjEgMS40aC44bC0xLjEtMS4zek01NzYgODF2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MWMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTY0IDIyMC42YzAgNzYuNSA2Mi4xIDEzOC41IDEzOC41IDEzOC41IDI3LjIgMCA1My45LTguMiA3Ni41LTIzLjEtNzIuOS01OS4zLTcyLjQtMTcxLjIgMC0yMzAuNS0yMi42LTE1LTQ5LjMtMjMuMS03Ni41LTIzLjEtNzYuNC0uMS0xMzguNSA2Mi0xMzguNSAxMzguMnptMjI0IDEwOC44YzcwLjUtNTUgNzAuMi0xNjIuMiAwLTIxNy41LTcwLjIgNTUuMy03MC41IDE2Mi42IDAgMjE3LjV6bS0xNDIuMyA3Ni4zYzAtOC43LTUuNy0xNC40LTE0LjctMTQuNy00LjYgMC05LjUgMS40LTEyLjggNi41LTIuNC00LjEtNi41LTYuNS0xMi4yLTYuNS0zLjggMC03LjYgMS40LTEwLjYgNS40VjM5MmgtOC4ydjM2LjdoOC4yYzAtMTguOS0yLjUtMzAuMiA5LTMwLjIgMTAuMiAwIDguMiAxMC4yIDguMiAzMC4yaDcuOWMwLTE4LjMtMi41LTMwLjIgOS0zMC4yIDEwLjIgMCA4LjIgMTAgOC4yIDMwLjJoOC4ydi0yM3ptNDQuOS0xMy43aC03Ljl2NC40Yy0yLjctMy4zLTYuNS01LjQtMTEuNy01LjQtMTAuMyAwLTE4LjIgOC4yLTE4LjIgMTkuMyAwIDExLjIgNy45IDE5LjMgMTguMiAxOS4zIDUuMiAwIDktMS45IDExLjctNS40djQuNmg3LjlWMzkyem00MC41IDI1LjZjMC0xNS0yMi45LTguMi0yMi45LTE1LjIgMC01LjcgMTEuOS00LjggMTguNS0xLjFsMy4zLTYuNWMtOS40LTYuMS0zMC4yLTYtMzAuMiA4LjIgMCAxNC4zIDIyLjkgOC4zIDIyLjkgMTUgMCA2LjMtMTMuNSA1LjgtMjAuNy44bC0zLjUgNi4zYzExLjIgNy42IDMyLjYgNiAzMi42LTcuNXptMzUuNCA5LjNsLTIuMi02LjhjLTMuOCAyLjEtMTIuMiA0LjQtMTIuMi00LjF2LTE2LjZoMTMuMVYzOTJoLTEzLjF2LTExLjJoLTguMlYzOTJoLTcuNnY3LjNoNy42VjQxNmMwIDE3LjYgMTcuMyAxNC40IDIyLjYgMTAuOXptMTMuMy0xMy40aDI3LjVjMC0xNi4yLTcuNC0yMi42LTE3LjQtMjIuNi0xMC42IDAtMTguMiA3LjktMTguMiAxOS4zIDAgMjAuNSAyMi42IDIzLjkgMzMuOCAxNC4ybC0zLjgtNmMtNy44IDYuNC0xOS42IDUuOC0yMS45LTQuOXptNTkuMS0yMS41Yy00LjYtMi0xMS42LTEuOC0xNS4yIDQuNFYzOTJoLTguMnYzNi43aDguMlY0MDhjMC0xMS42IDkuNS0xMC4xIDEyLjgtOC40bDIuNC03LjZ6bTEwLjYgMTguM2MwLTExLjQgMTEuNi0xNS4xIDIwLjctOC40bDMuOC02LjVjLTExLjYtOS4xLTMyLjctNC4xLTMyLjcgMTUgMCAxOS44IDIyLjQgMjMuOCAzMi43IDE1bC0zLjgtNi41Yy05LjIgNi41LTIwLjcgMi42LTIwLjctOC42em02Ni43LTE4LjNINDA4djQuNGMtOC4zLTExLTI5LjktNC44LTI5LjkgMTMuOSAwIDE5LjIgMjIuNCAyNC43IDI5LjkgMTMuOXY0LjZoOC4yVjM5MnptMzMuNyAwYy0yLjQtMS4yLTExLTIuOS0xNS4yIDQuNFYzOTJoLTcuOXYzNi43aDcuOVY0MDhjMC0xMSA5LTEwLjMgMTIuOC04LjRsMi40LTcuNnptNDAuMy0xNC45aC03Ljl2MTkuM2MtOC4yLTEwLjktMjkuOS01LjEtMjkuOSAxMy45IDAgMTkuNCAyMi41IDI0LjYgMjkuOSAxMy45djQuNmg3Ljl2LTUxLjd6bTcuNi03NS4xdjQuNmguOFYzMDJoMS45di0uOGgtNC42di44aDEuOXptNi42IDEyMy44YzAtLjUgMC0xLjEtLjMtMS42LS4zLS4zLS41LS44LS44LTEuMS0uMy0uMy0uOC0uNS0xLjEtLjgtLjUgMC0xLjEtLjMtMS42LS4zLS4zIDAtLjguMy0xLjQuMy0uNS4zLS44LjUtMS4xLjgtLjUuMy0uOC44LS44IDEuMS0uMy41LS4zIDEuMS0uMyAxLjYgMCAuMyAwIC44LjMgMS40IDAgLjMuMy44LjggMS4xLjMuMy41LjUgMS4xLjguNS4zIDEuMS4zIDEuNC4zLjUgMCAxLjEgMCAxLjYtLjMuMy0uMy44LS41IDEuMS0uOC4zLS4zLjUtLjguOC0xLjEuMy0uNi4zLTEuMS4zLTEuNHptMy4yLTEyNC43aC0xLjRsLTEuNiAzLjUtMS42LTMuNWgtMS40djUuNGguOHYtNC4xbDEuNiAzLjVoMS4xbDEuNC0zLjV2NC4xaDEuMXYtNS40em00LjQtODAuNWMwLTc2LjItNjIuMS0xMzguMy0xMzguNS0xMzguMy0yNy4yIDAtNTMuOSA4LjItNzYuNSAyMy4xIDcyLjEgNTkuMyA3My4yIDE3MS41IDAgMjMwLjUgMjIuNiAxNSA0OS41IDIzLjEgNzYuNSAyMy4xIDc2LjQuMSAxMzguNS02MS45IDEzOC41LTEzOC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY1BheXBhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODYuMyAyNTguMmMwIDEyLjItOS43IDIxLjUtMjIgMjEuNS05LjIgMC0xNi01LjItMTYtMTUgMC0xMi4yIDkuNS0yMiAyMS43LTIyIDkuMyAwIDE2LjMgNS43IDE2LjMgMTUuNXpNODAuNSAyMDkuN2gtNC43Yy0xLjUgMC0zIDEtMy4yIDIuN2wtNC4zIDI2LjcgOC4yLS4zYzExIDAgMTkuNS0xLjUgMjEuNS0xNC4yIDIuMy0xMy40LTYuMi0xNC45LTE3LjUtMTQuOXptMjg0IDBIMzYwYy0xLjggMC0zIDEtMy4yIDIuN2wtNC4yIDI2LjcgOC0uM2MxMyAwIDIyLTMgMjItMTgtLjEtMTAuNi05LjYtMTEuMS0xOC4xLTExLjF6TTU3NiA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTI4LjMgMjE1LjRjMC0yMS0xNi4yLTI4LTM0LjctMjhoLTQwYy0yLjUgMC01IDItNS4yIDQuN0wzMiAyOTQuMmMtLjMgMiAxLjIgNCAzLjIgNGgxOWMyLjcgMCA1LjItMi45IDUuNS01LjdsNC41LTI2LjZjMS03LjIgMTMuMi00LjcgMTgtNC43IDI4LjYgMCA0Ni4xLTE3IDQ2LjEtNDUuOHptODQuMiA4LjhoLTE5Yy0zLjggMC00IDUuNS00LjIgOC4yLTUuOC04LjUtMTQuMi0xMC0yMy43LTEwLTI0LjUgMC00My4yIDIxLjUtNDMuMiA0NS4yIDAgMTkuNSAxMi4yIDMyLjIgMzEuNyAzMi4yIDkgMCAyMC4yLTQuOSAyNi41LTExLjktLjUgMS41LTEgNC43LTEgNi4yIDAgMi4zIDEgNCAzLjIgNEgyMDBjMi43IDAgNS0yLjkgNS41LTUuN2wxMC4yLTY0LjNjLjMtMS45LTEuMi0zLjktMy4yLTMuOXptNDAuNSA5Ny45bDYzLjctOTIuNmMuNS0uNS41LTEgLjUtMS43IDAtMS43LTEuNS0zLjUtMy4yLTMuNWgtMTkuMmMtMS43IDAtMy41IDEtNC41IDIuNWwtMjYuNSAzOS0xMS0zNy41Yy0uOC0yLjItMy00LTUuNS00aC0xOC43Yy0xLjcgMC0zLjIgMS44LTMuMiAzLjUgMCAxLjIgMTkuNSA1Ni44IDIxLjIgNjIuMS0yLjcgMy44LTIwLjUgMjguNi0yMC41IDMxLjYgMCAxLjggMS41IDMuMiAzLjIgMy4yaDE5LjJjMS44LS4xIDMuNS0xLjEgNC41LTIuNnptMTU5LjMtMTA2LjdjMC0yMS0xNi4yLTI4LTM0LjctMjhoLTM5LjdjLTIuNyAwLTUuMiAyLTUuNSA0LjdsLTE2LjIgMTAyYy0uMiAyIDEuMyA0IDMuMiA0aDIwLjVjMiAwIDMuNS0xLjUgNC0zLjJsNC41LTI5YzEtNy4yIDEzLjItNC43IDE4LTQuNyAyOC40IDAgNDUuOS0xNyA0NS45LTQ1Ljh6bTg0LjIgOC44aC0xOWMtMy44IDAtNCA1LjUtNC4zIDguMi01LjUtOC41LTE0LTEwLTIzLjctMTAtMjQuNSAwLTQzLjIgMjEuNS00My4yIDQ1LjIgMCAxOS41IDEyLjIgMzIuMiAzMS43IDMyLjIgOS4zIDAgMjAuNS00LjkgMjYuNS0xMS45LS4zIDEuNS0xIDQuNy0xIDYuMiAwIDIuMyAxIDQgMy4yIDRINDg0YzIuNyAwIDUtMi45IDUuNS01LjdsMTAuMi02NC4zYy4zLTEuOS0xLjItMy45LTMuMi0zLjl6bTQ3LjUtMzMuM2MwLTItMS41LTMuNS0zLjItMy41aC0xOC41Yy0xLjUgMC0zIDEuMi0zLjIgMi43bC0xNi4yIDEwNC0uMy41YzAgMS44IDEuNSAzLjUgMy41IDMuNWgxNi41YzIuNSAwIDUtMi45IDUuMi01LjdMNTQ0IDE5MS4ydi0uM3ptLTkwIDUxLjhjLTEyLjIgMC0yMS43IDkuNy0yMS43IDIyIDAgOS43IDcgMTUgMTYuMiAxNSAxMiAwIDIxLjctOS4yIDIxLjctMjEuNS4xLTkuOC02LjktMTUuNS0xNi4yLTE1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjU3RyaXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5Mi40IDIyMC44Yy04LjkgMC0xOC43IDYuNy0xOC43IDIyLjdoMzYuN2MwLTE2LTkuMy0yMi43LTE4LTIyLjd6TTM3NSAyMjMuNGMtOC4yIDAtMTMuMyAyLjktMTcgN2wuMiA1Mi44YzMuNSAzLjcgOC41IDYuNyAxNi44IDYuNyAxMy4xIDAgMjEuOS0xNC4zIDIxLjktMzMuNCAwLTE4LjYtOS0zMy4yLTIxLjktMzMuMXpNNTI4IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MGMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTIyLjIgMjgxLjFjMCAyNS42LTIwLjMgNDAuMS00OS45IDQwLjMtMTIuMiAwLTI1LjYtMi40LTM4LjgtOC4xdi0zMy45YzEyIDYuNCAyNy4xIDExLjMgMzguOSAxMS4zIDcuOSAwIDEzLjYtMi4xIDEzLjYtOC43IDAtMTctNTQtMTAuNi01NC00OS45IDAtMjUuMiAxOS4yLTQwLjIgNDgtNDAuMiAxMS44IDAgMjMuNSAxLjggMzUuMyA2LjV2MzMuNGMtMTAuOC01LjgtMjQuNS05LjEtMzUuMy05LjEtNy41IDAtMTIuMSAyLjItMTIuMSA3LjcgMCAxNiA1NC4zIDguNCA1NC4zIDUwLjd6bTY4LjgtNTYuNmgtMjdWMjc1YzAgMjAuOSAyMi41IDE0LjQgMjcgMTIuNnYyOC45Yy00LjcgMi42LTEzLjMgNC43LTI0LjkgNC43LTIxLjEgMC0zNi45LTE1LjUtMzYuOS0zNi41bC4yLTExMy45IDM0LjctNy40djMwLjhIMTkxem03NCAyLjRjLTQuNS0xLjUtMTguNy0zLjYtMjcuMSA3LjR2ODQuNGgtMzUuNVYxOTQuMmgzMC43bDIuMiAxMC41YzguMy0xNS4zIDI0LjktMTIuMiAyOS42LTEwLjVoLjF6bTQ0LjEgOTEuOGgtMzUuN1YxOTQuMmgzNS43em0wLTE0Mi45bC0zNS43IDcuNnYtMjguOWwzNS43LTcuNnptNzQuMSAxNDUuNWMtMTIuNCAwLTIwLTUuMy0yNS4xLTlsLS4xIDQwLjItMzUuNSA3LjVWMTk0LjJoMzEuM2wxLjggOC44YzQuOS00LjUgMTMuOS0xMS4xIDI3LjgtMTEuMSAyNC45IDAgNDguNCAyMi41IDQ4LjQgNjMuOCAwIDQ1LjEtMjMuMiA2NS41LTQ4LjYgNjUuNnptMTYwLjQtNTEuNWgtNjkuNWMxLjYgMTYuNiAxMy44IDIxLjUgMjcuNiAyMS41IDE0LjEgMCAyNS4yLTMgMzQuOS03LjlWMzEyYy05LjcgNS4zLTIyLjQgOS4yLTM5LjQgOS4yLTM0LjYgMC01OC44LTIxLjctNTguOC02NC41IDAtMzYuMiAyMC41LTY0LjkgNTQuMy02NC45IDMzLjcgMCA1MS4zIDI4LjcgNTEuMyA2NS4xIDAgMy41LS4zIDEwLjktLjQgMTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NWaXNhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3MC4xIDIzMS4zczcuNiAzNy4yIDkuMyA0NUg0NDZjMy4zLTguOSAxNi00My41IDE2LTQzLjUtLjIuMyAzLjMtOS4xIDUuMy0xNC45bDIuOCAxMy40ek01NzYgODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTE1Mi41IDMzMS4yTDIxNS43IDE3NmgtNDIuNWwtMzkuMyAxMDYtNC4zLTIxLjUtMTQtNzEuNGMtMi4zLTkuOS05LjQtMTIuNy0xOC4yLTEzLjFIMzIuN2wtLjcgMy4xYzE1LjggNCAyOS45IDkuOCA0Mi4yIDE3LjFsMzUuOCAxMzVoNDIuNXptOTQuNC4yTDI3Mi4xIDE3NmgtNDAuMmwtMjUuMSAxNTUuNGg0MC4xem0xMzkuOS01MC44Yy4yLTE3LjctMTAuNi0zMS4yLTMzLjctNDIuMy0xNC4xLTcuMS0yMi43LTExLjktMjIuNy0xOS4yLjItNi42IDcuMy0xMy40IDIzLjEtMTMuNCAxMy4xLS4zIDIyLjcgMi44IDI5LjkgNS45bDMuNiAxLjcgNS41LTMzLjZjLTcuOS0zLjEtMjAuNS02LjYtMzYtNi42LTM5LjcgMC02Ny42IDIxLjItNjcuOCA1MS40LS4zIDIyLjMgMjAgMzQuNyAzNS4yIDQyLjIgMTUuNSA3LjYgMjAuOCAxMi42IDIwLjggMTkuMy0uMiAxMC40LTEyLjYgMTUuMi0yNC4xIDE1LjItMTYgMC0yNC42LTIuNS0zNy43LTguM2wtNS4zLTIuNS01LjYgMzQuOWM5LjQgNC4zIDI2LjggOC4xIDQ0LjggOC4zIDQyLjIuMSA2OS43LTIwLjggNzAtNTN6TTUyOCAzMzEuNEw0OTUuNiAxNzZoLTMxLjFjLTkuNiAwLTE2LjkgMi44LTIxIDEyLjlsLTU5LjcgMTQyLjVINDI2czYuOS0xOS4yIDguNC0yMy4zSDQ4NmMxLjIgNS41IDQuOCAyMy4zIDQuOCAyMy4zSDUyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2VudGVyY29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjkuMiAyNjguNmMtMy44IDM1LjItMzUuNCA2MC42LTcwLjYgNTYuOC0zNS4yLTMuOC02MC42LTM1LjQtNTYuOC03MC42IDMuOC0zNS4yIDM1LjQtNjAuNiA3MC42LTU2LjggMzUuMSAzLjggNjAuNiAzNS40IDU2LjggNzAuNnptLTg1LjggMjM1LjFDOTYuNyA0OTYtOC4yIDM2NS41IDEwLjEgMjI0LjNjMTEuMi04Ni42IDY1LjgtMTU2LjkgMTM5LjEtMTkyIDE2MS03Ny4xIDM0OS43IDM3LjQgMzU0LjcgMjE2LjYgNC4xIDE0Ny0xMTguNCAyNjIuMi0yNjAuNSAyNTQuOHptMTc5LjktMTgwYzI3LjktMTE4LTE2MC41LTIwNS45LTIzNy4yLTIzNC4yLTU3LjUgNTYuMy02OS4xIDE4OC42LTMzLjggMzQ0LjQgNjguOCAxNS44IDE2OS4xLTI2LjQgMjcxLTExMC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDZW50b3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg5LjYgOTcuNWwzMS42IDMxLjctNzYuMyA3Ni41Vjk3LjV6bS0xNjIuNCAzMS43bDc2LjMgNzYuNVY5Ny41aC00NC43em00MS41LTQxLjZoNDQuN3YxMjcuOWwxMC44IDEwLjggMTAuOC0xMC44Vjg3LjZoNDQuN0wyMjQuMiAzMnptMjYuMiAxNjguMWwtMTAuOC0xMC44SDU1LjV2LTQ0LjhMMCAyNTUuN2w1NS41IDU1LjZ2LTQ0LjhoMTI4LjZsMTAuOC0xMC44em03OS4zLTIwLjdoMTA3Ljl2LTQ0LjhsLTMxLjYtMzEuN3ptMTczLjMgMjAuN0wzOTIgMjAwLjF2NDQuOEgyNjQuM2wtMTAuOCAxMC44IDEwLjggMTAuOEgzOTJ2NDQuOGw1NS41LTU1LjZ6TTY1LjQgMTc2LjJsMzIuNS0zMS43IDkwLjMgOTAuNWgxNS4zdi0xNS4zbC05MC4zLTkwLjUgMzEuNi0zMS43SDY1LjR6bTMxNi43LTc4LjdoLTc4LjVsMzEuNiAzMS43LTkwLjMgOTAuNVYyMzVoMTUuM2w5MC4zLTkwLjUgMzEuNiAzMS43ek0yMDMuNSA0MTMuOVYzMDUuOGwtNzYuMyA3Ni41IDMxLjYgMzEuN2g0NC43ek02NS40IDIzNWgxMDguOGwtNzYuMy03Ni41LTMyLjUgMzEuN3ptMzE2LjcgMTAwLjJsLTMxLjYgMzEuNy05MC4zLTkwLjVoLTE1LjN2MTUuM2w5MC4zIDkwLjUtMzEuNiAzMS43aDc4LjV6bTAtNTguOEgyNzQuMmw3Ni4zIDc2LjUgMzEuNi0zMS43em0tNjAuOSAxMDUuOGwtNzYuMy03Ni41djEwOC4xaDQ0Ljd6TTk3LjkgMzUyLjlsNzYuMy03Ni41SDY1LjR2NDQuOHptMTgxLjggNzAuOUgyMzVWMjk1LjlsLTEwLjgtMTAuOC0xMC44IDEwLjh2MTI3LjloLTQ0LjdsNTUuNSA1NS42em0tMTY2LjUtNDEuNmw5MC4zLTkwLjV2LTE1LjNoLTE1LjNsLTkwLjMgOTAuNS0zMi41LTMxLjd2NzguN2g3OS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaHJvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZDMCAyMDkuNCAxMi40NyAxNjUuNiAzNC4yNyAxMjcuMUwxNDQuMSAzMTguM0MxNjYgMzU3LjUgMjA3LjkgMzg0IDI1NiAzODRDMjcwLjMgMzg0IDI4My4xIDM4MS43IDI5Ni44IDM3Ny40TDIyMC41IDUwOS42Qzk1LjkgNDkyLjMgMCAzODUuMyAwIDI1NnpNMzY1LjEgMzIxLjZDMzc3LjQgMzAyLjQgMzg0IDI3OS4xIDM4NCAyNTZDMzg0IDIxNy44IDM2Ny4yIDE4My41IDM0MC43IDE2MEg0OTMuNEM1MDUuNCAxODkuNiA1MTIgMjIyLjEgNTEyIDI1NkM1MTIgMzk3LjQgMzk3LjQgNTExLjEgMjU2IDUxMkwzNjUuMSAzMjEuNnpNNDc3LjggMTI4SDI1NkMxOTMuMSAxMjggMTQyLjMgMTcyLjEgMTMwLjUgMjMwLjdMNTQuMTkgOTguNDdDMTAxIDM4LjUzIDE3NCAwIDI1NiAwQzM1MC44IDAgNDMzLjUgNTEuNDggNDc3LjggMTI4VjEyOHpNMTY4IDI1NkMxNjggMjA3LjQgMjA3LjQgMTY4IDI1NiAxNjhDMzA0LjYgMTY4IDM0NCAyMDcuNCAzNDQgMjU2QzM0NCAzMDQuNiAzMDQuNiAzNDQgMjU2IDM0NEMyMDcuNCAzNDQgMTY4IDMwNC42IDE2OCAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNocm9tZWNhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ3LjgsNjRINjRjLTIzLjYsMC00Mi43LDE5LjEtNDIuNyw0Mi43djYzLjlINjR2LTYzLjloMzgzLjh2Mjk4LjZIMjk4LjZWNDQ4SDQ0OGMyMy42LDAsNDIuNy0xOS4xLDQyLjctNDIuN1YxMDYuNyBDNDkwLjcsODMuMSw0NzEuNCw2NCw0NDcuOCw2NHogTTIxLjMsMzgzLjZMMjEuMywzODMuNmwwLDYzLjloNjMuOUM4NS4yLDQxMi4yLDU2LjYsMzgzLjYsMjEuMywzODMuNkwyMS4zLDM4My42eiBNMjEuMywyOTguNlYzNDEgYzU4LjksMCwxMDYuNiw0OC4xLDEwNi42LDEwN2g0Mi43QzE3MC43LDM2NS42LDEwMy43LDI5OC43LDIxLjMsMjk4LjZ6IE0yMTMuNCw0NDhoNDIuN2MtMC41LTEyOS41LTEwNS4zLTIzNC4zLTIzNC44LTIzNC42bDAsNDIuNCBDMTI3LjMsMjU1LjYsMjEzLjMsMzQyLDIxMy40LDQ0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRmbGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcuOTA2LDMxOS45MTNsLTIzMC44LTIuOTI4YTQuNTgsNC41OCwwLDAsMS0zLjYzMi0xLjkyNiw0LjY0OCw0LjY0OCwwLDAsMS0uNDk0LTQuMTQ3LDYuMTQzLDYuMTQzLDAsMCwxLDUuMzYxLTQuMDc2TDQxMS4yODEsMzAzLjljMjcuNjMxLTEuMjYsNTcuNTQ2LTIzLjU3NCw2OC4wMjItNTAuNzg0bDEzLjI4Ni0zNC41NDJhNy45NDQsNy45NDQsMCwwLDAsLjUyNC0yLjkzNiw3LjczNSw3LjczNSwwLDAsMC0uMTY0LTEuNjMxQTE1MS45MSwxNTEuOTEsMCwwLDAsMjAxLjI1NywxOTguNCw2OC4xMiw2OC4xMiwwLDAsMCw5NC4yLDI2OS41OUM0MS45MjQsMjcxLjEwNiwwLDMxMy43MjgsMCwzNjYuMTJhOTYuMDU0LDk2LjA1NCwwLDAsMCwxLjAyOSwxMy45NTgsNC41MDgsNC41MDgsMCwwLDAsNC40NDUsMy44NzFsNDI2LjEuMDUxYy4wNDMsMCwuMDgtLjAxOS4xMjItLjAyYTUuNjA2LDUuNjA2LDAsMCwwLDUuMjcxLTRsMy4yNzMtMTEuMjY1YzMuOS0xMy40LDIuNDQ4LTI1LjgtNC4xLTM0LjlDNDMwLjEyNCwzMjUuNDIzLDQyMC4wOSwzMjAuNDg3LDQwNy45MDYsMzE5LjkxM1pNNTEzLjg1NiwyMjEuMWMtMi4xNDEsMC00LjI3MS4wNjItNi4zOTEuMTY0YTMuNzcxLDMuNzcxLDAsMCwwLTMuMzI0LDIuNjUzbC05LjA3NywzMS4xOTNjLTMuOSwxMy40LTIuNDQ5LDI1Ljc4Niw0LjEsMzQuODksNi4wMiw4LjQsMTYuMDU0LDEzLjMyMywyOC4yMzgsMTMuOWw0OS4yLDIuOTM5YTQuNDkxLDQuNDkxLDAsMCwxLDMuNTEsMS44OTQsNC42NCw0LjY0LDAsMCwxLC41MTQsNC4xNjksNi4xNTMsNi4xNTMsMCwwLDEtNS4zNTEsNC4wNzVsLTUxLjEyNSwyLjkzOWMtMjcuNzU0LDEuMjctNTcuNjY5LDIzLjU3NC02OC4xNDUsNTAuNzg0bC0zLjY5NSw5LjYwNmEyLjcxNiwyLjcxNiwwLDAsMCwyLjQyNywzLjY4Yy4wNDYsMCwuMDg4LjAxNy4xMzYuMDE3aDE3NS45MWE0LjY5LDQuNjksMCwwLDAsNC41MzktMy4zNywxMjQuODA3LDEyNC44MDcsMCwwLDAsNC42ODItMzRDNjQwLDI3Ny4zLDU4My41MjQsMjIxLjEsNTEzLjg1NiwyMjEuMVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRzY2FsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguMSAxNTRsLTkuNCA3LjZjLTIyLjUtMTkuMy01MS41LTMzLjYtODMuMy0zMy42QzE1My44IDEyOCA5NiAxODguOCA5NiAyNjAuM2MwIDYuNi40IDEzLjEgMS40IDE5LjQtMi01NiA0MS44LTk3LjQgOTIuNi05Ny40IDI0LjIgMCA0Ni4yIDkuNCA2Mi42IDI0LjdsLTI1LjIgMjAuNGMtOC4zLS45LTE2LjggMS44LTIzLjEgOC4xLTExLjEgMTEtMTEuMSAyOC45IDAgNDAgMTEuMSAxMSAyOC45IDExIDQwIDAgNi4zLTYuMyA5LTE0LjkgOC4xLTIzLjFsNzUuMi04OC44YzYuMy02LjUtMy4zLTE1LjktOS41LTkuNnptLTgzLjggMTExLjVjLTUuNiA1LjUtMTQuNiA1LjUtMjAuMiAwLTUuNi01LjYtNS42LTE0LjYgMC0yMC4yczE0LjYtNS42IDIwLjIgMCA1LjYgMTQuNyAwIDIwLjJ6TTIyNCAzMkMxMDAuNSAzMiAwIDEzMi41IDAgMjU2czEwMC41IDIyNCAyMjQgMjI0IDIyNC0xMDAuNSAyMjQtMjI0UzM0Ny41IDMyIDIyNCAzMnptMCAzODRjLTg4LjIgMC0xNjAtNzEuOC0xNjAtMTYwUzEzNS44IDk2IDIyNCA5NnMxNjAgNzEuOCAxNjAgMTYwLTcxLjggMTYwLTE2MCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3Vkc21pdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDIyNy42djU2LjlMMjg0LjQgNTEySDIyNy42TDAgMjg0LjRWMjI3LjZMMjI3LjYgMGg1Ni45TDUxMiAyMjcuNnptLTI1NiAxNjJhMTMzLjYgMTMzLjYgMCAxIDAgMC0yNjcuMSAxMzMuNiAxMzMuNiAwIDEgMCAwIDI2Ny4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZHZlcnNpZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDYxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ4LjYgMzA0YzguMiA2OC41IDY3LjQgMTE1LjUgMTQ2IDExMS4zIDUxLjIgNDMuMyAxMzYuOCA0NS44IDE4Ni40LTUuNiA2OS4yIDEuMSAxMTguNS00NC42IDEzMS41LTk5LjUgMTQuOC02Mi41LTE4LjItMTMyLjUtOTIuMS0xNTUuMS0zMy04OC4xLTEzMS40LTEwMS41LTE4Ni41LTg1LTU3LjMgMTcuMy04NC4zIDUzLjItOTkuMyAxMDkuNy03LjggMi43LTI2LjUgOC45LTQ1IDI0LjEgMTEuNyAwIDE1LjIgOC45IDE1LjIgMTkuNXYyMC40YzAgMTAuNy04LjcgMTkuNS0xOS41IDE5LjVoLTIwLjJjLTEwLjcgMC0xOS41LTYtMTkuNS0xNi43VjI0MEg5OC44Qzk1IDI0MCA4OCAyNDQuMyA4OCAyNTEuOXY0MC40YzAgNi40IDUuMyAxMS44IDExLjcgMTEuOGg0OC45em0yMjcuNCA4Yy0xMC43IDQ2LjMgMjEuNyA3Mi40IDU1LjMgODYuOEMzMjQuMSA0MzIuNiAyNTkuNyAzNDggMjk2IDI4OGMtMzMuMiAyMS42LTMzLjcgNzEuMi0yOS4yIDkyLjktMTcuOS0xMi40LTUzLjgtMzIuNC01Ny40LTc5LjgtMy0zOS45IDIxLjUtNzUuNyA1Ny05My45QzI5NyAxOTEuNCAzNjkuOSAxOTguNyA0MDAgMjQ4Yy0xNC4xLTQ4LTUzLjgtNzAuMS0xMDEuOC03NC44IDMwLjktMzAuNyA2NC40LTUwLjMgMTE0LjItNDMuNyA2OS44IDkuMyAxMzMuMiA4Mi44IDY3LjcgMTUwLjUgMzUtMTYuMyA0OC43LTU0LjQgNDcuNS03Ni45bDEwLjUgMTkuNmMxMS44IDIyIDE1LjIgNDcuNiA5LjQgNzItOS4yIDM5LTQwLjYgNjguOC03OS43IDc2LjUtMzIuMSA2LjMtODMuMS01LjEtOTEuOC01OS4yek0xMjggMjA4SDg4LjJjLTguOSAwLTE2LjItNy4zLTE2LjItMTYuMnYtMzkuNmMwLTguOSA3LjMtMTYuMiAxNi4yLTE2LjJIMTI4YzguOSAwIDE2LjIgNy4zIDE2LjIgMTYuMnYzOS42YzAgOC45LTcuMyAxNi4yLTE2LjIgMTYuMnpNMTAuMSAxNjhDNC41IDE2OCAwIDE2My41IDAgMTU3Ljl2LTI3LjhjMC01LjYgNC41LTEwLjEgMTAuMS0xMC4xaDI3LjdjNS41IDAgMTAuMSA0LjUgMTAuMSAxMC4xdjI3LjhjMCA1LjYtNC41IDEwLjEtMTAuMSAxMC4xSDEwLjF6TTE2OCAxNDIuN3YtMjEuNGMwLTUuMSA0LjItOS4zIDkuMy05LjNoMjEuNGM1LjEgMCA5LjMgNC4yIDkuMyA5LjN2MjEuNGMwIDUuMS00LjIgOS4zLTkuMyA5LjNoLTIxLjRjLTUuMSAwLTkuMy00LjItOS4zLTkuM3pNNTYgMjM1LjV2MjVjMCA2LjMtNS4xIDExLjUtMTEuNCAxMS41SDE5LjRDMTMuMSAyNzIgOCAyNjYuOCA4IDI2MC41di0yNWMwLTYuMyA1LjEtMTEuNSAxMS40LTExLjVoMjUuMWM2LjQgMCAxMS41IDUuMiAxMS41IDExLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNtcGxpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjYuMTE5LDM4OC4xNjVhMy44MTYsMy44MTYsMCwwLDAtMi4yOTQtMy41LDMuOTQ2LDMuOTQ2LDAsMCwwLTEuNjI5LS4zODVMNzIuNiwzODQuM2ExOS4yNDMsMTkuMjQzLDAsMCwxLTE3LjkyNC0yNi4wMjVMODEuNTg1LDI1NS42OTJhMzUuNzIsMzUuNzIsMCwwLDEsMzIuMzczLTI2SDI2Mi41MjVhNy4wNyw3LjA3LDAsMCwwLDYuMzkyLTUuMTk0bDEwLjc2OS00MS4xMzFhMy44NDksMy44NDksMCwwLDAtMi4yMzctNC45MzcsMy43NTUsMy43NTUsMCwwLDAtMS4zNzctLjI2MWMtLjA2MywwLS4xMjYsMC0uMTg5LjAwNUgxMjcuMzhhMTA2LjgsMTA2LjgsMCwwLDAtOTYuOTksNzcuMUwzLjQ4MywzNTguODI0QTU3LjQ2OSw1Ny40NjksMCwwLDAsNTcuMzE0LDQzNnExLjQzLDAsMi44Ni0uMDcySDIwOC43NDJhNy4xMzEsNy4xMzEsMCwwLDAsNi4zOTEtNS4xOTNMMjI1LjgzOSwzODkuNkEzLjgyLDMuODIsMCwwLDAsMjI2LjExOSwzODguMTY1Wk0zMDYuNjU4LDgxLjJhMy44NjEsMy44NjEsMCwwLDAsLjI1MS0xLjM2N0EzLjgxMywzLjgxMywwLDAsMCwzMDMuMDc5LDc2Yy0uMDY0LDAtLjEyOCwwLS4xOTIsMGgtNDFBNy4wMzQsNy4wMzQsMCwwLDAsMjU1LjUsODEuMmwtMjEuMzQ3LDgwLjkxNWg1MS4xMzFaTTE4MC4zNjQsMzY4LjI0OUgyMzEuNUwyNjMuNDUyLDI0NS42OUgyMTIuMzIxWk01MTEuODUzLDc5LjcyM2EzLjgwOSwzLjgwOSwwLDAsMC0zLjgtMy42NjFjLS4wNTgsMC0uMTM3LDAtLjIzLjAwN2gtNDFhNy4xLDcuMSwwLDAsMC02LjU4NCw1LjEyOUwzNjguOTEsNDMwLjYzNGEzLjU0LDMuNTQsMCwwLDAtLjI2MiwxLjMzNSwzLjg3MywzLjg3MywwLDAsMCwzLjg2NCwzLjg2M2MuMDU2LDAsLjExMiwwLC4xNjksMGg0MWE3LjA2OCw3LjA2OCwwLDAsMCw2LjM5Mi01LjE5M0w1MTEuNTMzLDgxLjJBMy42MjQsMy42MjQsMCwwLDAsNTExLjg1Myw3OS43MjNaTTMyNC42NDksMzg0LjQ3aC00MWE3LjIsNy4yLDAsMCwwLTYuMzkyLDUuMTk0TDI2Ni41Miw0MzAuOGEzLjY2MiwzLjY2MiwwLDAsMC0uMjY4LDEuMzc0QTMuNzgzLDMuNzgzLDAsMCwwLDI3MC4wMjMsNDM2Yy4wNiwwLC4xNjYsMCwuMy0uMDEyaDQwLjkwNWE3LjAzNiw3LjAzNiwwLDAsMCw2LjM5MS01LjE5M2wxMC43NjktNDEuMTMxYTMuNzUsMy43NSwwLDAsMC0zLjQ0NS01LjIwOGMtLjEwOCwwLS4yMTcsMC0uMzI2LjAxNFptMzExLjMyNC0zMDguNGgtNDFhNy4wNjYsNy4wNjYsMCwwLDAtNi4zOTIsNS4xMjlsLTkxLjQ2LDM0OS40MzZhNC4wNzMsNC4wNzMsMCwwLDAtLjIyOSwxLjM0NywzLjg3MiwzLjg3MiwwLDAsMCwzLjg2MywzLjg1MWMuMDU2LDAsLjExMiwwLC4xNjksMGg0MC45NjhhNy4xLDcuMSwwLDAsMCw2LjM5Mi01LjE5M0w2MzkuNjgsODEuMmEzLjYyNCwzLjYyNCwwLDAsMCwuMzItMS40NzUsMy44NDEsMy44NDEsMCwwLDAtMy44MjEtMy41NjRjLS4wNjgsMC0uMTM3LDAtLjIwNi4wMDZaTTM3MS41NjIsMjI1LjIzNmwxMC44LTQxLjFhNC4zNjksNC4zNjksMCwwLDAsLjIyNy0xLjM4OCwzLjg2OSwzLjg2OSwwLDAsMC0zLjg2MS0zLjg0MmMtLjA1NywwLS4xMTMsMC0uMTY5LDBoLTQxLjFhNy4yOTIsNy4yOTIsMCwwLDAtNi4zOTEsNS4yMjZsLTEwLjgzNCw0MS4xYTQuNDE3LDQuNDE3LDAsMCwwLS4yNiwxLjQ5M2MwLC4wNjksMCwuMTM4LDAsLjIwNmEzLjc3NiwzLjc3NiwwLDAsMCwzLjc1NywzLjUwN2MuMDc2LDAsLjE4LDAsLjMtLjAxMmg0MS4xMjlBNy4wMzQsNy4wMzQsMCwwLDAsMzcxLjU2MiwyMjUuMjM2WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2RlcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi4yODUgMTU5LjcwNGwtMjM0LTE1NmMtNy45ODctNC45MTUtMTYuNTExLTQuOTYtMjQuNTcxIDBsLTIzNCAxNTZDMy43MTQgMTYzLjcwMyAwIDE3MC44NDcgMCAxNzcuOTg5djE1NS45OTljMCA3LjE0MyAzLjcxNCAxNC4yODYgOS43MTUgMTguMjg2bDIzNCAxNTYuMDIyYzcuOTg3IDQuOTE1IDE2LjUxMSA0Ljk2IDI0LjU3MSAwbDIzNC0xNTYuMDIyYzYtMy45OTkgOS43MTUtMTEuMTQzIDkuNzE1LTE4LjI4NlYxNzcuOTg5Yy0uMDAxLTcuMTQyLTMuNzE1LTE0LjI4Ni05LjcxNi0xOC4yODV6TTI3OCA2My4xMzFsMTcyLjI4NiAxMTQuODU4LTc2Ljg1NyA1MS40MjlMMjc4IDE2NS43MDNWNjMuMTMxem0tNDQgMHYxMDIuNTcybC05NS40MjkgNjMuNzE1LTc2Ljg1Ny01MS40MjlMMjM0IDYzLjEzMXpNNDQgMjE5LjEzMmw1NS4xNDMgMzYuODU3TDQ0IDI5Mi44NDZ2LTczLjcxNHptMTkwIDIyOS43MTVMNjEuNzE0IDMzMy45ODlsNzYuODU3LTUxLjQyOUwyMzQgMzQ2LjI3NXYxMDIuNTcyem0yMi0xNDAuODU4bC03Ny43MTUtNTIgNzcuNzE1LTUyIDc3LjcxNSA1Mi03Ny43MTUgNTJ6bTIyIDE0MC44NThWMzQ2LjI3NWw5NS40MjktNjMuNzE1IDc2Ljg1NyA1MS40MjlMMjc4IDQ0OC44NDd6bTE5MC0xNTYuMDAxbC01NS4xNDMtMzYuODU3TDQ2OCAyMTkuMTMydjczLjcxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29kaWVwaWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ3MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIyLjUgMjAyLjljMzAuNyAwIDMzLjUgNTMuMS0uMyA1My4xaC0xMC44djQ0LjNoLTI2LjZ2LTk3LjRoMzcuN3pNNDcyIDM1Mi42QzQyOS45IDQ0NC41IDM1MC40IDUwNCAyNDggNTA0IDExMSA1MDQgMCAzOTMgMCAyNTZTMTExIDggMjQ4IDhjOTcuNCAwIDE3Mi44IDUzLjcgMjE4LjIgMTM4LjRsLTE4NiAxMDguOEw0NzIgMzUyLjZ6bS0zOC41IDEyLjVsLTYwLjMtMzAuN2MtMjcuMSA0NC4zLTcwLjQgNzEuNC0xMjIuNCA3MS40LTgyLjUgMC0xNDkuMi02Ni43LTE0OS4yLTE0OC45IDAtODIuNSA2Ni43LTE0OS4yIDE0OS4yLTE0OS4yIDQ4LjQgMCA4OC45IDIzLjUgMTE2LjkgNjMuNGw1OS41LTM0LjZjLTQwLjctNjIuNi0xMDQuNy0xMDAtMTc5LjItMTAwLTEyMS4yIDAtMjE5LjUgOTguMy0yMTkuNSAyMTkuNVMxMjYuOCA0NzUuNSAyNDggNDc1LjVjNzguNiAwIDE0Ni41LTQyLjEgMTg1LjUtMTEwLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbmZsdWVuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi4zIDQxMi4yYy00LjUgNy42LTIuMSAxNy41IDUuNSAyMi4ybDEwNS45IDY1LjJjNy43IDQuNyAxNy43IDIuNCAyMi40LTUuMyAwLS4xLjEtLjIuMS0uMiA2Ny4xLTExMi4yIDgwLjUtOTUuOSAyODAuOS0uNyA4LjEgMy45IDE3LjguNCAyMS43LTcuNy4xLS4xLjEtLjMuMi0uNGw1MC40LTExNC4xYzMuNi04LjEtLjEtMTcuNi04LjEtMjEuMy0yMi4yLTEwLjQtNjYuMi0zMS4yLTEwNS45LTUwLjNDMTI3LjUgMTc5IDQ0LjYgMzQ1LjMgMi4zIDQxMi4yem01MDcuNC0zMTIuMWM0LjUtNy42IDIuMS0xNy41LTUuNS0yMi4yTDM5OC40IDEyLjhjLTcuNS01LTE3LjYtMy4xLTIyLjYgNC40LS4yLjMtLjQuNi0uNiAxLTY3LjMgMTEyLjYtODEuMSA5NS42LTI4MC42LjktOC4xLTMuOS0xNy44LS40LTIxLjcgNy43LS4xLjEtLjEuMy0uMi40TDIyLjIgMTQxLjNjLTMuNiA4LjEuMSAxNy42IDguMSAyMS4zIDIyLjIgMTAuNCA2Ni4zIDMxLjIgMTA2IDUwLjQgMjQ4IDEyMCAzMzAuOC00NS40IDM3My40LTExMi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb25uZWN0ZGV2ZWxvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NTAuNSAyNDFsLTUwLjA4OS04Ni43ODZjMS4wNzEtMi4xNDIgMS44NzUtNC41NTMgMS44NzUtNy4yMzIgMC04LjAzNi02LjY5Ni0xNC43MzMtMTQuNzMyLTE1LjAwMWwtNTUuNDQ3LTk1Ljg5M2MuNTM2LTEuNjA3IDEuMDcxLTMuMjE0IDEuMDcxLTQuODIxIDAtOC41NzEtNi45NjQtMTUuMjY4LTE1LjI2OC0xNS4yNjgtNC44MjEgMC04LjgzOSAyLjE0My0xMS43ODYgNS42MjVIMjk5LjUxOEMyOTYuODM5IDE4LjE0MyAyOTIuODIxIDE2IDI4OCAxNnMtOC44MzkgMi4xNDMtMTEuNTE4IDUuNjI1SDE3MC40MTFDMTY3LjQ2NCAxOC4xNDMgMTYzLjQ0NyAxNiAxNTguNjI1IDE2Yy04LjMwMyAwLTE1LjI2OCA2LjY5Ni0xNS4yNjggMTUuMjY4IDAgMS42MDcuNTM2IDMuNDgyIDEuMDcyIDQuODIxbC01NS45ODMgOTcuMjMzYy01LjM1NiAyLjQxLTkuMTA3IDcuNS05LjEwNyAxMy42NjEgMCAuNTM1LjI2OCAxLjA3MS4yNjggMS42MDdsLTUzLjMwNCA5Mi4xNDNjLTcuMjMyIDEuMzM5LTEyLjU5IDcuNS0xMi41OSAxNSAwIDcuMjMyIDUuMDg5IDEzLjM5MyAxMi4wNTQgMTVsNTUuMTc5IDk1LjM1OGMtLjUzNiAxLjYwNy0uODA0IDIuOTQ2LS44MDQgNC44MjEgMCA3LjIzMiA1LjA4OSAxMy4zOTMgMTIuMDU0IDE0LjczMmw1MS42OTcgODkuNzMyYy0uNTM2IDEuNjA3LTEuMDcxIDMuNDgyLTEuMDcxIDUuMzU3IDAgOC41NzEgNi45NjQgMTUuMjY4IDE1LjI2OCAxNS4yNjggNC44MjEgMCA4LjgzOS0yLjE0MyAxMS41MTgtNS4zNTdoMTA2Ljg3NUMyNzkuMTYxIDQ5My44NTcgMjgzLjQ0NyA0OTYgMjg4IDQ5NnM4LjgzOS0yLjE0MyAxMS41MTgtNS4zNTdoMTA3LjE0M2MyLjY3OCAyLjk0NiA2LjY5NiA0LjgyMSAxMC45ODIgNC44MjEgOC41NzEgMCAxNS4yNjgtNi45NjQgMTUuMjY4LTE1LjI2OCAwLTEuNjA3LS4yNjctMi45NDYtLjgwMy00LjI4NWw1MS42OTctOTAuMjY4YzYuOTY0LTEuMzM5IDEyLjA1NC03LjUgMTIuMDU0LTE0LjczMiAwLTEuNjA3LS4yNjgtMy4yMTQtLjgwNC00LjgyMWw1NC45MTEtOTUuMzU4YzYuOTY0LTEuMzM5IDEyLjMyMi03LjUgMTIuMzIyLTE1LS4wMDItNy4yMzItNS4wOTItMTMuMzkzLTExLjc4OC0xNC43MzJ6TTE1My41MzUgNDUwLjczMmwtNDMuNjYtNzUuODAzaDQzLjY2djc1LjgwM3ptMC04My44MzloLTQzLjY2Yy0uMjY4LTEuMDcxLS44MDQtMi4xNDItMS4zMzktMy4yMTRsNDQuOTk5LTQ3LjQxdjUwLjYyNHptMC02Mi40MTFsLTUwLjM1NyA1My4zMDRjLTEuMzM5LS41MzYtMi42NzktMS4zNC00LjAxOC0xLjYwN0w0My40NDcgMjU5Ljc1Yy41MzUtMS4zMzkuNTM1LTIuNjc5LjUzNS00LjAxOHMwLTIuNDEtLjI2OC0zLjQ4Mmw1MS45NjUtOTBjMi42NzktLjI2OCA1LjM1Ny0xLjA3MiA3Ljc2OC0yLjY3OWw1MC4wODkgNTEuOTY1djkyLjk0NnptMC0xMDIuMzIybC00NS44MDMtNDcuNDFjMS4zMzktMi4xNDMgMi4xNDMtNC44MjEgMi4xNDMtNy43NjcgMC0uMjY4LS4yNjgtLjgwNC0uMjY4LTEuMDcybDQzLjkyOC0xNS44MDR2NzIuMDUzem0wLTgwLjYyNWwtNDMuNjYgMTUuODA0IDQzLjY2LTc1LjUzNnY1OS43MzJ6bTMyNi41MTkgMzkuMTA4bC44MDQgMS4zMzlMNDQ1LjUgMzI5LjEyNWwtNjMuNzUtNjcuMjMyIDk4LjAzNi0xMDEuNTE4LjI2OC4yNjh6TTI5MS43NSAzNTUuMTA3bDExLjUxOCAxMS43ODZIMjgwLjVsMTEuMjUtMTEuNzg2em0tLjI2OC0xMS4yNWwtODMuMzAzLTg1LjQ0NiA3OS41NTMtODQuMzc1IDgzLjAzNiA4Ny41ODktNzkuMjg2IDgyLjIzMnptNS4zNTcgNS44OTNsNzkuMjg2LTgyLjIzMiA2Ny41IDcxLjI1LTUuODkyIDI4LjEyNUgzMTMuNzE0bC0xNi44NzUtMTcuMTQzek00MTAuNDExIDQ0LjM5M2MxLjA3MS41MzYgMi4xNDIgMS4wNzIgMy40ODIgMS4zNGw1Ny44NTcgMTAwLjcxNHYuNTM2YzAgMi45NDYuODAzIDUuNjI0IDIuMTQzIDcuNzY3TDM3Ni4zOTMgMjU2bC04My4wMzUtODcuNTg5TDQxMC40MTEgNDQuMzkzem0tOS4xMDctMi4xNDNMMjg3LjczMiAxNjIuNTE4bC01Ny4wNTQtNjAuMjY4IDE2Ni4zMzktNjBoNC4yODd6bS0xMjMuNDgzIDBjMi42NzggMi42NzggNi4xNiA0LjI4NSAxMC4xNzkgNC4yODVzNy41LTEuNjA3IDEwLjE3OS00LjI4NWg3NUwyMjQuNzg2IDk1LjgyMSAxNzMuODkzIDQyLjI1aDEwMy45Mjh6bS0xMTYuMjQ5IDUuNjI1bDEuMDcxLTIuMTQyYTMzLjgzNCAzMy44MzQgMCAwIDAgMi42NzktLjgwNGw1MS4xNjEgNTMuODQtNTQuOTExIDE5LjgyMVY0Ny44NzV6bTAgNzkuMjg2bDYwLjgwMy0yMS45NjQgNTkuNzMyIDYzLjIxNC03OS41NTMgODQuMTA3LTQwLjk4Mi00Mi4wNTN2LTgzLjMwNHptMCA5Mi42NzhMMTk4IDI1Ny42MDdsLTM2LjQyOCAzOC4zMDR2LTc2LjA3MnptMCA4Ny44NThsNDIuMDUzLTQ0LjQ2NCA4Mi43NjggODUuOTgyLTE3LjE0MyAxNy42NzhIMTYxLjU3MnYtNTkuMTk2em02Ljk2NCAxNjIuMDUzYy0xLjYwNy0xLjYwNy0zLjQ4Mi0yLjY3OC01Ljg5My0zLjQ4MmwtMS4wNzEtMS42MDd2LTg5LjczMmg5OS45MWwtOTEuNjA3IDk0LjgyMWgtMS4zMzl6bTEyOS45MTEgMGMtMi42NzktMi40MS02LjQyOC00LjI4NS0xMC40NDctNC4yODVzLTcuNzY3IDEuODc1LTEwLjQ0NyA0LjI4NWgtOTYuNDI5bDkxLjYwNy05NC44MjFoMzguMzA0bDkxLjYwNyA5NC44MjFIMjk4LjQ0N3ptMTIwLTExLjc4NmwtNC4yODYgNy41Yy0xLjMzOS4yNjgtMi40MS44MDMtMy40ODIgMS4zMzlsLTg5LjE5Ni05MS44NzVoMTE0LjM3NmwtMTcuNDEyIDgzLjAzNnptMTIuODU2LTIyLjIzMmwxMi44NTgtNjAuODAzaDIxLjk2NGwtMzQuODIyIDYwLjgwM3ptMzQuODIyLTY4LjgzOWgtMjAuMzU3bDQuNTUzLTIxLjE2IDE3LjE0MyAxOC4yMTRjLS41MzUuODAzLTEuMDcxIDEuODc0LTEuMzM5IDIuOTQ2em02Ni4xNjEtMTA3LjQxMWwtNTUuNDQ3IDk2LjY5N2MtMS4zMzkuNTM1LTIuNjc5IDEuMDcxLTQuMDE4IDEuODc0bC0yMC42MjUtMjEuOTY0IDM0LjU1NC0xNjMuOTI4IDQ1LjgwMyA3OS4yODZjLS4yNjcgMS4zMzktLjgwMyAyLjY3OC0uODAzIDQuMjg1IDAgMS4zMzkuMjY4IDIuNDExLjUzNiAzLjc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb250YW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDUuNCAzMDVjMTQuNCA2Ny4xIDI2LjQgMTI5IDY4LjIgMTc1SDM0Yy0xOC43IDAtMzQtMTUuMi0zNC0zNFY2NmMwLTE4LjcgMTUuMi0zNCAzNC0zNGg1Ny43Qzc3LjkgNDQuNiA2NS42IDU5LjIgNTQuOCA3NS42Yy00NS40IDcwLTI3IDE0Ni44LTkuNCAyMjkuNHpNNDc4IDMyaC05MC4yYzIxLjQgMjEuNCAzOS4yIDQ5LjUgNTIuNyA4NC4xbC0xMzcuMSAyOS4zYy0xNC45LTI5LTM3LjgtNTMuMy04Mi42LTQzLjktMjQuNiA1LjMtNDEgMTkuMy00OC4zIDM0LjYtOC44IDE4LjctMTMuMiAzOS44IDguMiAxNDAuMyAyMS4xIDEwMC4yIDMzLjcgMTE3LjcgNDkuNSAxMzEuMiAxMi45IDExLjEgMzMuNCAxNyA1OC4zIDExLjcgNDQuNS05LjQgNTUuNy00MC43IDU3LjQtNzMuMmwxMzcuNC0yOS42YzMuMiA3MS41LTE4LjcgMTI1LjItNTcuNCAxNjMuNkg0NzhjMTguNyAwIDM0LTE1LjIgMzQtMzRWNjZjMC0xOC44LTE1LjItMzQtMzQtMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvdHRvbkJ1cmVhdSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzQuMzEgMzMwLjQxYy0yMy42NiA5MS44NS05NC4yMyAxNDQuNTktMjAxLjkgMTQ4LjM1VjQyOS42YzAtNDggMjYuNDEtNzQuMzkgNzQuMzktNzQuMzkgNjIgMCA5OS4yLTM3LjIgOTkuMi05OS4yMSAwLTYxLjM3LTM2LjUzLTk4LjI4LTk3LjM4LTk5LjA2LTMzLTY5LjMyLTE0Ni41LTY0LjY1LTE3Ny4yNCAwQzExMC41MiAxNTcuNzIgNzQgMTk0LjYzIDc0IDI1NmMwIDYyLjEzIDM3LjI3IDk5LjQxIDk5LjQgOTkuNDEgNDggMCA3NC41NSAyNi4yMyA3NC41NSA3NC4zOVY0NzljLTEzNC40My01LTIxMS4xLTg1LjA3LTIxMS4xLTIyMyAwLTE0MS44MiA4MS4zNS0yMjMuMiAyMjMuMi0yMjMuMiAxMTQuNzcgMCAxODkuODQgNTMuMiAyMTQuNjkgMTQ4LjgxSDUwMEM0NzMuODggNzEuNTEgMzg4LjIyIDggMjU5LjgyIDggMTA1IDggMTIgMTAxLjE5IDEyIDI1NS44MiAxMiA0MTEuMTQgMTA1LjE5IDUwNC4zNCAyNTkuODIgNTA0YzEyOC4yNyAwIDIxMy44Ny02My44MSAyMzkuNjctMTczLjU5ek0zNTcgMTgyLjMzYzQxLjM3IDMuNDUgNjQuMiAyOSA2NC4yIDczLjY3IDAgNDgtMjYuNDMgNzQuNDEtNzQuNCA3NC40MS0yOC42MSAwLTQ5LjMzLTkuNTktNjEuNTktMjcuMzMgODMuMDYtMTYuNTUgNzUuNTktOTkuNjcgNzEuNzktMTIwLjc1em0tODEuNjggOTcuMzZjLTIuNDYtMTAuMzQtMTYuMzMtODcgNTYuMjMtOTcgMi4yNyAxMC4wOSAxNi41MiA4Ny4xMS01Ni4yNiA5N3pNMjYwIDEzMmMyOC42MSAwIDQ5IDkuNjcgNjEuNDQgMjcuNjEtMjguMzYgNS40OC00OS4zNiAyMC41OS02MS41OSA0My40NS0xMi4yMy0yMi44Ni0zMy4yMy0zOC02MS42LTQzLjQ1IDEyLjQxLTE3LjY5IDMzLjI3LTI3LjM1IDYxLjU3LTI3LjM1em0tNzEuNTIgNTAuNzJjNzMuMTcgMTAuNTcgNTguOTEgODYuODEgNTYuNDkgOTctNzIuNDEtOS44NC01OS04Ni45NS01Ni4yNS05N3pNMTczLjIgMzMwLjQxYy00OCAwLTc0LjQtMjYuNC03NC40LTc0LjQxIDAtNDQuMzYgMjIuODYtNzAgNjQuMjItNzMuNjctNi43NSAzNy4yLTEuMzggMTA2LjUzIDcxLjY1IDEyMC43NS0xMi4xNCAxNy42My0zMi44NCAyNy4zLTYxLjE0IDI3LjN6bTUzLjIxIDEyLjM5QTgwLjggODAuOCAwIDAgMCAyNjAgMzA5LjI1YzcuNzcgMTQuNDkgMTkuMzMgMjUuNTQgMzMuODIgMzMuNTVhODAuMjggODAuMjggMCAwIDAtMzMuNTggMzMuODNjLTgtMTQuNS0xOS4wNy0yNi4yMy0zMy41Ni0zMy44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3BhbmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMC4zIDIyMC4yYy01LjYtMjQuOC0yNi45LTQxLjItNTEtNDEuMmgtMzdjLTcuMSAwLTEyLjUgNC41LTE0LjMgMTAuOUw3My4xIDMyMGwyNC43LS4xYzYuOCAwIDEyLjMtNC41IDE0LjItMTAuN2wyNS44LTk1LjdoMTkuOGM4LjQgMCAxNi4yIDUuNiAxOC4zIDE0LjggMi41IDEwLjktNS45IDIyLjYtMTguMyAyMi42aC0xMC4zYy03IDAtMTIuNSA0LjYtMTQuMyAxMC44bC02LjQgMjMuOGgzMmMzNy4yIDAgNTguMy0zNi4yIDUxLjctNjUuM3ptLTE1Ni41IDI4aDE4LjZjNi45IDAgMTIuNC00LjQgMTQuMy0xMC45bDYuMi0yMy42aC00MEMzMCAyMTMuNyA5IDIyNy44IDEuNyAyNTQuOC03IDI4OC42IDE4LjUgMzIwIDUyIDMyMGgxMi40bDcuMS0yNi4xYzEuMi00LjQtMi4yLTguMy02LjQtOC4zSDUzLjhjLTI0LjcgMC0yNC45LTM3LjQgMC0zNy40em0yNDcuNS0zNC44aC03Ny45bC0zLjUgMTMuNGMtMi40IDkuNiA0LjUgMTguNSAxNC4yIDE4LjVoNTcuNWM0IDAgMi40IDQuMyAyLjEgNS4zbC04LjYgMzEuOGMtLjQgMS40LS45IDUuMy01LjUgNS4zaC0zNC45Yy01LjMgMC01LjMtNy45IDAtNy45aDIxLjZjNi44IDAgMTIuMy00LjYgMTQuMi0xMC44bDMuNS0xMy4yaC00OC40Yy0zOS4yIDAtNDMuNiA2My44LS43IDYzLjhsNTcuNS4yYzExLjIgMCAyMC42LTcuMiAyMy40LTE3LjhsMTQtNTEuOGM0LjgtMTkuMi05LjctMzYuOC0yOC41LTM2Ljh6TTYzMy4xIDE3OWgtMTguOWMtNC45IDAtOS4yIDMuMi0xMC40IDcuOUw1NjguMiAzMjBjMjAuNyAwIDM5LjgtMTMuOCA0NC45LTM0LjVsMjYuNS05OC4yYzEuMi00LjMtMi04LjMtNi41LTguM3ptLTIzNi4zIDM0Ljd2LjFoLTQ4LjNsLTI2LjIgOThjLTEuMiA0LjQgMi4yIDguMyA2LjQgOC4zaDE4LjljNC44IDAgOS4yLTMgMTAuNC03LjhsMTcuMi02NEgzOTVjMTIuNSAwIDIxLjQgMTEuOCAxOC4xIDIzLjRsLTEwLjYgNDBjLTEuMiA0LjMgMS45IDguMyA2LjQgOC4zSDQyOGM0LjYgMCA5LjEtMi45IDEwLjMtNy44bDguOC0zMy4xYzktMzMuMS0xNS45LTY1LjQtNTAuMy02NS40em05OC4zIDc0LjZjLTMuNiAwLTYtMy40LTUuMS02LjdsOC0zMGMuOS0zLjkgMy43LTYgNy44LTZoMzIuOWMyLjYgMCA0LjYgMi40IDMuOSA1LjFsLS43IDIuNmMtLjYgMi0xLjkgMy0zLjkgM2gtMjEuNmMtNyAwLTEyLjYgNC42LTE0LjIgMTAuOGwtMy41IDEzaDUzLjRjMTAuNSAwIDIwLjMtNi42IDIzLjItMTcuNmwzLjItMTJjNC45LTE5LjEtOS4zLTM2LjgtMjguMy0zNi44aC00Ny4zYy0xNy45IDAtMzMuOCAxMi0zOC42IDI5LjZsLTEwLjggNDBjLTUgMTcuNyA4LjMgMzYuNyAyOC4zIDM2LjdoNjYuN2M2LjggMCAxMi4zLTQuNSAxNC4yLTEwLjdsNS43LTIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNCeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTQuOSAxOTQuNHYxMDEuNGgtMjguM3YxMjAuNWgtNzcuMVYyOTUuOWgtMjguM1YxOTQuNGMwLTQuNCAxLjYtOC4yIDQuNi0xMS4zIDMuMS0zLjEgNi45LTQuNyAxMS4zLTQuN0gyOTljNC4xIDAgNy44IDEuNiAxMS4xIDQuNyAzLjEgMy4yIDQuOCA2LjkgNC44IDExLjN6bS0xMDEuNS02My43YzAtMjMuMyAxMS41LTM1IDM0LjUtMzVzMzQuNSAxMS43IDM0LjUgMzVjMCAyMy0xMS41IDM0LjUtMzQuNSAzNC41cy0zNC41LTExLjUtMzQuNS0zNC41ek0yNDcuNiA4QzM4OS40IDggNDk2IDExOC4xIDQ5NiAyNTZjMCAxNDcuMS0xMTguNSAyNDgtMjQ4LjQgMjQ4QzExMy42IDUwNCAwIDM5NC41IDAgMjU2IDAgMTIzLjEgMTA0LjcgOCAyNDcuNiA4em0uOCA0NC43QzEzMC4yIDUyLjcgNDQuNyAxNTAuNiA0NC43IDI1NmMwIDEwOS44IDkxLjIgMjAyLjggMjAzLjcgMjAyLjggMTAzLjIgMCAyMDIuOC04MS4xIDIwMi44LTIwMi44LjEtMTEzLjgtOTAuMi0yMDMuMy0yMDIuOC0yMDMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zTmNFdSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNyA4QzEwMy42IDggMCAxMjQuOCAwIDI1NmMwIDEzNi4zIDExMS43IDI0OCAyNDcuNyAyNDhDMzc3LjkgNTA0IDQ5NiA0MDMuMSA0OTYgMjU2IDQ5NiAxMTcgMzg4LjQgOCAyNDcuNyA4em0uNiA0NTAuN2MtMTEyIDAtMjAzLjYtOTIuNS0yMDMuNi0yMDIuNyAwLTIzLjIgMy43LTQ1LjIgMTAuOS02Nmw2NS43IDI5LjFoLTQuN3YyOS41aDIzLjNjMCA2LjItLjQgMy4yLS40IDE5LjVoLTIyLjh2MjkuNWgyN2MxMS40IDY3IDY3LjIgMTAxLjMgMTI0LjYgMTAxLjMgMjYuNiAwIDUwLjYtNy45IDY0LjgtMTUuOGwtMTAtNDYuMWMtOC43IDQuNi0yOC4yIDEwLjgtNDcuMyAxMC44LTI4LjIgMC01OC4xLTEwLjktNjcuMy01MC4yaDkwLjNsMTI4LjMgNTYuOGMtMS41IDIuMS01Ni4yIDEwNC4zLTE3OC44IDEwNC4zem0tMTYuNy0xOTAuNmwtLjUtLjQuOS40aC0uNHptNzcuMi0xOS41aDMuN3YtMjkuNWgtNzAuM2wtMjguNi0xMi42YzIuNS01LjUgNS40LTEwLjUgOC44LTE0LjMgMTIuOS0xNS44IDMxLjEtMjIuNCA1MS4xLTIyLjQgMTguMyAwIDM1LjMgNS40IDQ2LjEgMTBsMTEuNi00Ny4zYy0xNS02LjYtMzctMTIuNC02Mi4zLTEyLjQtMzkgMC03Mi4yIDE1LjgtOTUuOSA0Mi4zLTUuMyA2LjEtOS44IDEyLjktMTMuOSAyMC4xbC04MS42LTM2LjFjNjQuNi05Ni44IDE1Ny43LTkzLjYgMTcwLjctOTMuNiAxMTMgMCAyMDMgOTAuMiAyMDMgMjAzLjQgMCAxOC43LTIuMSAzNi4zLTYuMyA1Mi45bC0xMzYuMS02MC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNOY0pwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny43IDhDMTAzLjYgOCAwIDEyNC44IDAgMjU2YzAgMTM2LjQgMTExLjggMjQ4IDI0Ny43IDI0OEMzNzcuOSA1MDQgNDk2IDQwMy4yIDQ5NiAyNTYgNDk2IDExNy4yIDM4OC41IDggMjQ3LjcgOHptLjYgNDUwLjdjLTExMiAwLTIwMy42LTkyLjUtMjAzLjYtMjAyLjcgMC0yMS4xIDMtNDEuMiA5LTYwLjNsMTI3IDU2LjVoLTI3Ljl2MzguNmg1OC4xbDUuNyAxMS44djE4LjdoLTYzLjhWMzYwaDYzLjh2NTZoNjEuN3YtNTZoNjQuMnYtMzUuN2w4MSAzNi4xYy0xLjUgMi4yLTU3LjEgOTguMy0xNzUuMiA5OC4zem04Ny42LTEzNy4zaC01Ny42di0xOC43bDIuOS01LjYgNTQuNyAyNC4zem02LjUtNTEuNHYtMTcuOGgtMzguNmw2My0xMTZIMzAxbC00My40IDk2LTIzLTEwLjItMzkuNi04NS43aC02NS44bDI3LjMgNTEtODEuOS0zNi41YzI3LjgtNDQuMSA4Mi42LTk4LjEgMTczLjctOTguMSAxMTIuOCAwIDIwMyA5MCAyMDMgMjAzLjQgMCAyMS0yLjcgNDAuNi03LjkgNTlsLTEwMS00NS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNOYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNiA4QzM4Ny40IDggNDk2IDExNS45IDQ5NiAyNTZjMCAxNDcuMi0xMTguNSAyNDgtMjQ4LjQgMjQ4QzExMy4xIDUwNCAwIDM5My4yIDAgMjU2IDAgMTIzLjEgMTA0LjcgOCAyNDcuNiA4ek01NS44IDE4OS4xYy03LjQgMjAuNC0xMS4xIDQyLjctMTEuMSA2Ni45IDAgMTEwLjkgOTIuMSAyMDIuNCAyMDMuNyAyMDIuNCAxMjIuNCAwIDE3Ny4yLTEwMS44IDE3OC41LTEwNC4xbC05My40LTQxLjZjLTcuNyAzNy4xLTQxLjIgNTMtNjguMiA1NS40djM4LjFoLTI4LjhWMzY4Yy0yNy41LS4zLTUyLjYtMTAuMi03NS4zLTI5LjdsMzQuMS0zNC41YzMxLjcgMjkuNCA4Ni40IDMxLjggODYuNC0yLjIgMC02LjItMi4yLTExLjItNi42LTE1LjEtMTQuMi02LTEuOC0uMS0yMTkuMy05Ny40ek0yNDguNCA1Mi4zYy0zOC40IDAtMTEyLjQgOC43LTE3MC41IDkzbDk0LjggNDIuNWMxMC0zMS4zIDQwLjQtNDIuOSA2My44LTQ0LjN2LTM4LjFoMjguOHYzOC4xYzIyLjcgMS4yIDQzLjQgOC45IDYyIDIzTDI5NSAxOTkuN2MtNDIuNy0yOS45LTgzLjUtOC03MCAxMS4xIDUzLjQgMjQuMSA0My44IDE5LjggOTMgNDEuNmwxMjcuMSA1Ni43YzQuMS0xNy40IDYuMi0zNS4xIDYuMi01My4xIDAtNTctMTkuOC0xMDUtNTkuMy0xNDMuOS0zOS4zLTM5LjktODcuMi01OS44LTE0My42LTU5Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc05kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem05NCAxNDQuM3Y0Mi41SDE2Mi4xVjE5N2gxODAuM3ptMCA3OS44djQyLjVIMTYyLjF2LTQyLjVoMTgwLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1BkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMTA0LjcgOCAwIDEyMy4xIDAgMjU2YzAgMTM4LjUgMTEzLjYgMjQ4IDI0Ny42IDI0OEMzNzcuNSA1MDQgNDk2IDQwMy4xIDQ5NiAyNTYgNDk2IDExOC4xIDM4OS40IDggMjQ3LjYgOHptLjggNDUwLjhjLTExMi41IDAtMjAzLjctOTMtMjAzLjctMjAyLjggMC0xMDUuNCA4NS41LTIwMy4zIDIwMy43LTIwMy4zIDExMi42IDAgMjAyLjkgODkuNSAyMDIuOCAyMDMuMyAwIDEyMS43LTk5LjYgMjAyLjgtMjAyLjggMjAyLjh6TTMxNi43IDE4NmgtNTMuMnYxMzcuMmg1My4yYzIxLjQgMCA3MC01LjEgNzAtNjguNiAwLTYzLjQtNDguNi02OC42LTcwLTY4LjZ6bS44IDEwOC41aC0xOS45di03OS43bDE5LjQtLjFjMy44IDAgMzUtMi4xIDM1IDM5LjkgMCAyNC42LTEwLjUgMzkuOS0zNC41IDM5Ljl6TTIwMy43IDE4NmgtNjguMnYxMzcuM2gzNC42VjI3OWgyN2M1NC4xIDAgNTcuMS0zNy41IDU3LjEtNDYuNSAwLTMxLTE2LjgtNDYuNS01MC41LTQ2LjV6bS00LjkgNjcuM2gtMjkuMnYtNDEuNmgyOC4zYzMwLjkgMCAyOC44IDQxLjYuOSA0MS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNQZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOS4xIDAgMjU2YzAgMTM3IDExMSAyNDggMjQ4IDI0OHMyNDgtMTExIDI0OC0yNDhDNDk2IDExOS4xIDM4NSA4IDI0OCA4em0wIDQ0OS41Yy0xMzkuMiAwLTIzNS44LTEzOC0xOTAuMi0yNjcuOWw3OC44IDM1LjFjLTIuMSAxMC41LTMuMyAyMS41LTMuMyAzMi45IDAgOTkgNzMuOSAxMjYuOSAxMjAuNCAxMjYuOSAyMi45IDAgNTMuNS02LjcgNzkuNC0yOS41TDI5NyAzMTEuMWMtNS41IDYuMy0xNy42IDE2LjctMzYuMyAxNi43LTM3LjggMC01My43LTM5LjktNTMuOS03MS45IDIzMC40IDEwMi42IDIxNi41IDk2LjUgMjE3LjkgOTYuOC0zNC4zIDYyLjQtMTAwLjYgMTA0LjgtMTc2LjcgMTA0Ljh6bTE5NC4yLTE1MGwtMjI0LTEwMGMxOC44LTM0IDU0LjktMzAuNyA3NC43LTExbDQwLjQtNDEuNmMtMjcuMS0yMy4zLTU4LTI3LjUtNzguMS0yNy41LTQ3LjQgMC04MC45IDIwLjUtMTAwLjcgNTEuNmwtNzQuOS0zMy40YzM2LjEtNTQuOSA5OC4xLTkxLjIgMTY4LjUtOTEuMiAxMTEuMSAwIDIwMS41IDkwLjQgMjAxLjUgMjAxLjUgMCAxOC0yLjQgMzUuNC02LjggNTItLjMtLjEtLjQtLjItLjYtLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1JlbWl4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem0xNjEuNyAyMDcuN2w0LjkgMi4ydjcwYy03LjIgMy42LTYzLjQgMjcuNS02Ny4zIDI4LjgtNi41LTEuOC0xMTMuNy00Ni44LTEzNy4zLTU2LjJsLTY0LjIgMjYuNi02My4zLTI3LjV2LTYzLjhsNTkuMy0yNC44Yy0uNy0uNy0uNCA1LS40LTcwLjRsNjcuMy0yOS43TDM2MSAxNzguNXY2MS42bDQ5LjEgMjAuM3ptLTcwLjQgODEuNXYtNDMuOGgtLjR2LTEuOGwtMTEzLjgtNDYuNVYyOTVsMTEzLjggNDYuOXYtLjRsLjQuNHptNy41LTU3LjZsMzkuOS0xNi40LTM2LjgtMTUuNS0zOSAxNi40IDM1LjkgMTUuNXptNTIuMyAzOC4xdi00M0wzNTUuMiAyOTh2NDMuNGw0NC4zLTE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNTYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNiA4QzM4OS40IDggNDk2IDExOC4xIDQ5NiAyNTZjMCAxNDcuMS0xMTguNSAyNDgtMjQ4LjQgMjQ4QzExMy42IDUwNCAwIDM5NC41IDAgMjU2IDAgMTIzLjEgMTA0LjcgOCAyNDcuNiA4em0uOCA0NC43QzEzMC4yIDUyLjcgNDQuNyAxNTAuNiA0NC43IDI1NmMwIDEwOS44IDkxLjIgMjAyLjggMjAzLjcgMjAyLjggMTAzLjIgMCAyMDIuOC04MS4xIDIwMi44LTIwMi44LjEtMTEzLjgtOTAuMi0yMDMuMy0yMDIuOC0yMDMuM3pNMTM3LjcgMjIxYzEzLTgzLjkgODAuNS05NS43IDEwOC45LTk1LjcgOTkuOCAwIDEyNy41IDgyLjUgMTI3LjUgMTM0LjIgMCA2My42LTQxIDEzMi45LTEyOC45IDEzMi45LTM4LjkgMC05OS4xLTIwLTEwOS40LTk3aDYyLjVjMS41IDMwLjEgMTkuNiA0NS4yIDU0LjUgNDUuMiAyMy4zIDAgNTgtMTguMiA1OC04Mi44IDAtODIuNS00OS4xLTgwLjYtNTYuNy04MC42LTMzLjEgMC01MS43IDE0LjYtNTUuOCA0My44aDE4LjJsLTQ5LjIgNDkuMi00OS00OS4yaDE5LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1NhbXBsaW5nUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNiA4QzM4OS40IDggNDk2IDExOC4xIDQ5NiAyNTZjMCAxNDcuMS0xMTguNSAyNDgtMjQ4LjQgMjQ4QzExMy42IDUwNCAwIDM5NC41IDAgMjU2IDAgMTIzLjEgMTA0LjcgOCAyNDcuNiA4em0uOCA0NC43QzEzMC4yIDUyLjcgNDQuNyAxNTAuNiA0NC43IDI1NmMwIDEwOS44IDkxLjIgMjAyLjggMjAzLjcgMjAyLjggMTAzLjIgMCAyMDIuOC04MS4xIDIwMi44LTIwMi44LjEtMTEzLjgtOTAuMi0yMDMuMy0yMDIuOC0yMDMuM3ptMTA3IDIwNS42Yy00LjcgMC05IDIuOC0xMC43IDcuMmwtNCA5LjUtMTEtOTIuOGMtMS43LTEzLjktMjItMTMuNC0yMy4xLjRsLTQuMyA1MS40LTUuMi02OC44Yy0xLjEtMTQuMy0yMi4xLTE0LjItMjMuMiAwbC0zLjUgNDQuOS01LjktOTQuM2MtLjktMTQuNS0yMi4zLTE0LjQtMjMuMiAwbC01LjEgODMuNy00LjMtNjYuM2MtLjktMTQuNC0yMi4yLTE0LjQtMjMuMiAwbC01LjMgODAuMi00LjEtNTdjLTEuMS0xNC4zLTIyLTE0LjMtMjMuMi0uMmwtNy43IDg5LjgtMS44LTEyLjJjLTEuNy0xMS40LTE3LjEtMTMuNi0yMi0zLjNsLTEzLjIgMjcuN0g4Ny41djIzLjJoNTEuM2M0LjQgMCA4LjQtMi41IDEwLjQtNi40bDEwLjcgNzMuMWMyIDEzLjUgMjEuOSAxMyAyMy4xLS43bDMuOC00My42IDUuNyA3OC4zYzEuMSAxNC40IDIyLjMgMTQuMiAyMy4yLS4xbDQuNi03MC40IDQuOCA3My4zYy45IDE0LjQgMjIuMyAxNC40IDIzLjItLjFsNC45LTgwLjUgNC41IDcxLjhjLjkgMTQuMyAyMi4xIDE0LjUgMjMuMi4ybDQuNi01OC42IDQuOSA2NC40YzEuMSAxNC4zIDIyIDE0LjIgMjMuMS4xbDYuOC04MyAyLjcgMjIuM2MxLjQgMTEuOCAxNy43IDE0LjEgMjIuMyAzLjFsMTgtNDMuNGg1MC41VjI1OGwtNTguNC4zem0tNzggNS4yaC0yMS45djIxLjljMCA0LjEtMy4zIDcuNS03LjUgNy41LTQuMSAwLTcuNS0zLjMtNy41LTcuNXYtMjEuOWgtMjEuOWMtNC4xIDAtNy41LTMuMy03LjUtNy41IDAtNC4xIDMuNC03LjUgNy41LTcuNWgyMS45di0yMS45YzAtNC4xIDMuNC03LjUgNy41LTcuNXM3LjUgMy4zIDcuNSA3LjV2MjEuOWgyMS45YzQuMSAwIDcuNSAzLjMgNy41IDcuNSAwIDQuMS0zLjQgNy41LTcuNSA3LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1NhbXBsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem0zLjYgNTMuMmMyLjgtLjMgMTEuNSAxIDExLjUgMTEuNWw2LjYgMTA3LjIgNC45LTU5LjNjMC02IDQuNy0xMC42IDEwLjYtMTAuNiA1LjkgMCAxMC42IDQuNyAxMC42IDEwLjYgMCAyLjUtLjUtNS43IDUuNyA4MS41bDUuOC02NC4yYy4zLTIuOSAyLjktOS4zIDEwLjItOS4zIDMuOCAwIDkuOSAyLjMgMTAuNiA4LjlsMTEuNSA5Ni41IDUuMy0xMi44YzEuOC00LjQgNS4yLTYuNiAxMC4yLTYuNmg1OHYyMS4zaC01MC45bC0xOC4yIDQ0LjNjLTMuOSA5LjktMTkuNSA5LjEtMjAuOC0zLjFsLTQtMzEuOS03LjUgOTIuNmMtLjMgMy0zIDkuMy0xMC4yIDkuMy0zIDAtOS44LTIuMS0xMC42LTkuMyAwLTEuOS42IDUuOC02LjItNzcuOWwtNS4zIDcyLjJjLTEuMSA0LjgtNC44IDkuMy0xMC42IDkuMy0yLjkgMC05LjgtMi0xMC42LTkuMyAwLTEuOS41IDYuNy01LjgtODcuN2wtNS44IDk0LjhjMCA2LjMtMy42IDEyLjQtMTAuNiAxMi40LTUuMiAwLTEwLjYtNC4xLTEwLjYtMTJsLTUuOC04Ny43Yy01LjggOTIuNS01LjMgODQtNS4zIDg1LjktMS4xIDQuOC00LjggOS4zLTEwLjYgOS4zLTMgMC05LjgtMi4xLTEwLjYtOS4zIDAtLjctLjQtMS4xLS40LTIuNmwtNi4yLTg4LjZMMTgyIDM0OGMtLjcgNi41LTYuNyA5LjMtMTAuNiA5LjMtNS44IDAtOS42LTQuMS0xMC42LTguOUwxNDkuNyAyNzJjLTIgNC0zLjUgOC40LTExLjEgOC40SDg3LjJ2LTIxLjNIMTMybDEzLjctMjcuOWM0LjQtOS45IDE4LjItNy4yIDE5LjkgMi43bDMuMSAyMC40IDguNC05Ny45YzAtNiA0LjgtMTAuNiAxMC42LTEwLjYuNSAwIDEwLjYtLjIgMTAuNiAxMi40bDQuOSA2OS4xIDYuNi05Mi42YzAtMTAuMSA5LjUtMTAuNiAxMC4yLTEwLjYuNiAwIDEwLjYuNyAxMC42IDEwLjZsNS4zIDgwLjYgNi4yLTk3LjljLjEtMS4xLS42LTEwLjMgOS45LTExLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1NoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem0xMDEgMTMyLjRjNy44IDAgMTMuNyA2LjEgMTMuNyAxMy43djE4Mi41YzAgNy43LTYuMSAxMy43LTEzLjcgMTMuN0gyMTQuM2MtNy43IDAtMTMuNy02LTEzLjctMTMuN3YtNTRoLTU0Yy03LjggMC0xMy43LTYtMTMuNy0xMy43VjEzMS4xYzAtOC4yIDYuNi0xMi43IDEyLjQtMTMuN2gxMzYuNGM3LjcgMCAxMy43IDYgMTMuNyAxMy43djU0aDU0ek0xNTkuOSAzMDAuM2g0MC43VjE5OC45YzAtNy40IDUuOC0xMi42IDEyLTEzLjdoNTUuOHYtNDAuM0gxNTkuOXYxNTUuNHptMTc2LjItODguMUgyMjcuNnYxNTUuNGgxMDguNVYyMTIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zWmVybyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNiA4QzM4OS40IDggNDk2IDExOC4xIDQ5NiAyNTZjMCAxNDcuMS0xMTguNSAyNDgtMjQ4LjQgMjQ4QzExMy42IDUwNCAwIDM5NC41IDAgMjU2IDAgMTIzLjEgMTA0LjcgOCAyNDcuNiA4em0uOCA0NC43QzEzMC4yIDUyLjcgNDQuNyAxNTAuNiA0NC43IDI1NmMwIDEwOS44IDkxLjIgMjAyLjggMjAzLjcgMjAyLjggMTAzLjIgMCAyMDIuOC04MS4xIDIwMi44LTIwMi44LjEtMTEzLjgtOTAuMi0yMDMuMy0yMDIuOC0yMDMuM3ptLS40IDYwLjVjLTgxLjkgMC0xMDIuNSA3Ny4zLTEwMi41IDE0Mi44IDAgNjUuNSAyMC42IDE0Mi44IDEwMi41IDE0Mi44UzM1MC41IDMyMS41IDM1MC41IDI1NmMwLTY1LjUtMjAuNi0xNDIuOC0xMDIuNS0xNDIuOHptMCA1My45YzMuMyAwIDYuNC41IDkuMiAxLjIgNS45IDUuMSA4LjggMTIuMSAzLjEgMjEuOWwtNTQuNSAxMDAuMmMtMS43LTEyLjctMS45LTI1LjEtMS45LTM0LjQgMC0yOC44IDItODguOSA0NC4xLTg4Ljl6bTQwLjggNDYuMmMyLjkgMTUuNCAzLjMgMzEuNCAzLjMgNDIuNyAwIDI4LjktMiA4OC45LTQ0LjEgODguOS0xMy41IDAtMzIuNi03LjctMjAuMS0yNi40bDYwLjktMTA1LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDUuODMgMjE0Ljg3bC0zMy4yMiAxNy4yOGMtOS40My0xOS41OC0yNS4yNC0xOS45My0yNy40Ni0xOS45My0yMi4xMyAwLTMzLjIyIDE0LjYxLTMzLjIyIDQzLjg0IDAgMjMuNTcgOS4yMSA0My44NCAzMy4yMiA0My44NCAxNC40NyAwIDI0LjY1LTcuMDkgMzAuNTctMjEuMjZsMzAuNTUgMTUuNWMtNi4xNyAxMS41MS0yNS42OSAzOC45OC02NS4xIDM4Ljk4LTIyLjYgMC03My45Ni0xMC4zMi03My45Ni03Ny4wNSAwLTU4LjY5IDQzLTc3LjA2IDcyLjYzLTc3LjA2IDMwLjcyLS4wMSA1Mi43IDExLjk1IDY1Ljk5IDM1Ljg2em0xNDMuMDUgMGwtMzIuNzggMTcuMjhjLTkuNS0xOS43Ny0yNS43Mi0xOS45My0yNy45LTE5LjkzLTIyLjE0IDAtMzMuMjIgMTQuNjEtMzMuMjIgNDMuODQgMCAyMy41NSA5LjIzIDQzLjg0IDMzLjIyIDQzLjg0IDE0LjQ1IDAgMjQuNjUtNy4wOSAzMC41NC0yMS4yNmwzMSAxNS41Yy0yLjEgMy43NS0yMS4zOSAzOC45OC02NS4wOSAzOC45OC0yMi42OSAwLTczLjk2LTkuODctNzMuOTYtNzcuMDUgMC01OC42NyA0Mi45Ny03Ny4wNiA3Mi42My03Ny4wNiAzMC43MS0uMDEgNTIuNTggMTEuOTUgNjUuNTYgMzUuODZ6TTI0Ny41NiA4LjA1QzEwNC43NCA4LjA1IDAgMTIzLjExIDAgMjU2LjA1YzAgMTM4LjQ5IDExMy42IDI0OCAyNDcuNTYgMjQ4IDEyOS45MyAwIDI0OC40NC0xMDAuODcgMjQ4LjQ0LTI0OCAwLTEzNy44Ny0xMDYuNjItMjQ4LTI0OC40NC0yNDh6bS44NyA0NTAuODFjLTExMi41NCAwLTIwMy43LTkzLjA0LTIwMy43LTIwMi44MSAwLTEwNS40MiA4NS40My0yMDMuMjcgMjAzLjcyLTIwMy4yNyAxMTIuNTMgMCAyMDIuODIgODkuNDYgMjAyLjgyIDIwMy4yNi0uMDEgMTIxLjY5LTk5LjY4IDIwMi44Mi0yMDIuODQgMjAyLjgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcml0aWNhbFJvbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI1LjgyIDBjLjI2LjE1IDIxNi41NyAxMjQuNTEgMjE3LjEyIDEyNC43MiAzIDEuMTggMy43IDMuNDYgMy43IDYuNTZxLS4xMSAxMjUuMTcgMCAyNTAuMzZhNS44OCA1Ljg4IDAgMCAxLTMuMzggNS43OGMtMjEuMzcgMTItMjA3Ljg2IDExOC4yOS0yMTguOTMgMTI0LjU4aC0zQzE0MiA0NjYuMzQgMy4wOCAzODYuNTYgMi45MyAzODYuNDhhMy4yOSAzLjI5IDAgMCAxLTEuODgtMy4yNGMwLS44NyAwLTIyNS45NC0uMDUtMjUzLjFhNSA1IDAgMCAxIDIuOTMtNC45M0MyNy4xOSAxMTIuMTEgMjEzLjIgNiAyMjQuMDcgMHpNMjE1LjQgMjAuNDJsLS4yMi0uMTZRMTE4LjA2IDc1LjU1IDIxIDEzMC44N2MwIC4xMi4wOC4yMy4xMy4zNWwzMC44NiAxMS42NGMtNy43MSA2LTguMzIgNi0xMC42NSA1LjEzLS4xIDAtMjQuMTctOS4yOC0yNi44LTEwdjIzMC40M2MuODgtMS40MSA2NC4wNy0xMTAuOTEgNjQuMTMtMTExIDEuNjItMi44MiAzLTEuOTIgOS4xMi0xLjUyIDEuNC4wOSAxLjQ4LjIyLjc4IDEuNDItNDEuMTkgNzEuMzMtMzYuNCA2My02Ny40OCAxMTYuOTQtLjgxIDEuNC0uNjEgMS4xMyAxLjI1IDEuMTNoMTg2LjVjMS40NCAwIDEuNjktLjIzIDEuNy0xLjY0di04Ljg4YzAtMS4zNCAyLjM2LS44MS0xOC4zNy0xLTcuNDYtLjA3LTE0LjE0LTMuMjItMjEuMzgtMTIuNy03LjM4LTkuNjYtMTQuNjItMTkuNDMtMjEuODUtMjkuMjEtMi4yOC0zLjA4LTMuNDUtMi4zOC0xNi43Ni0yLjM4LTEuNzUgMC0xLjc4IDAtMS43NiAxLjgyLjI5IDI2LjIxLjE1IDI1LjI3IDEgMzIuNjYuNTIgNC4zNyAyLjE2IDQuMiA5LjY5IDQuODEgMy4xNC4yNiAzLjg4IDQuMDguNTIgNC45Mi0xLjU3LjM5LTMxLjYuNTEtMzMuNjctLjFhMi40MiAyLjQyIDAgMCAxIC4zLTQuNzNjMy4yOS0uNzYgNi4xNi44MSA2LjY2LTQuNDQgMS4zLTEzLjY2IDEuMTctOSAxLjEtNzkuNDIgMC0xMC44Mi0uMzUtMTIuNTgtNS4zNi0xMy41NS0xLjIyLS4yNC0zLjU0LS4xNi00LjY5LS41NS0yLjg4LTEtMi00Ljg0IDEuNzctNC44NSAzMy42NyAwIDQ2LjA4LTEuMDcgNTYuMDYgNC44NiA3Ljc0IDQuNjEgMTIgMTEuNDggMTIuNTEgMjAuNC44OCAxNC41OS02LjUxIDIyLjM1LTE1IDMyLjU5YTEuNDYgMS40NiAwIDAgMCAwIDIuMjJjMi42IDMuMjUgNSA2LjYzIDcuNzEgOS44MyAyNy41NiAzMy4yMyAyNC4xMSAzMC41NCA0MS4yOCAzMy4wNi44OS4xMyAxLS40MiAxLTEuMTV2LTExYzAtMSAuMzItMS40MyAxLjQxLTEuMjZhNzIuMzcgNzIuMzcgMCAwIDAgMjMuNTgtLjNjMS4wOC0uMTUgMS41LjIgMS40OCAxLjMzIDAgLjExLjg4IDI2LjY5Ljg3IDI2LjgtLjA1IDEuNTIuNjcgMS42MiAxLjg5IDEuNjJoMTg2LjcxUTM4Ni41MSAzMDQuNiAzNDYgMjM0LjMzYzIuMjYtLjY2LS40IDAgNi42OS0xLjM5IDItLjM5IDIuMDUtLjQxIDMuMTEgMS40NCA3LjMxIDEyLjY0IDc3LjMxIDEzNCA3Ny4zNyAxMzQuMDZWMTM4Yy0xLjcyLjUtMTAzLjMgMzguNzItMTA1Ljc2IDM5LjY4LTEuMDguNDItMS41NS4yLTEuOTEtLjg4LS42My0xLjktMS4zNC0zLjc2LTIuMDktNS42Mi0uMzItLjc5LS4wOS0xLjEzLjY1LTEuMzkuMSAwIDk1LjUzLTM1Ljg1IDEwMy0zOC43Ny02NS40Mi0zNy41Ny0xMzAuNTYtNzUtMTk2LTExMi42bDg2LjgyIDE1MC4zOS0uMjguMzNjLTkuNTctLjktMTAuNDYtMS42LTExLjgtMy45NC0xLTEuNjktNzMuNS0xMjcuNzEtODItMTQyLjE2LTkuMSAxNC42Ny04My41NiAxNDYuMjEtODUuMzcgMTQ2LjMyLTIuOTMuMTctNS44OC4wOC05LjI1LjA4cTQzLjI1LTc0Ljc0IDg2LjE4LTE0OXptNTEuOTMgMTI5LjkyYTM3LjY4IDM3LjY4IDAgMCAwIDUuNTQtLjg1YzEuNjktLjMgMi41My4yIDIuNiAxLjkyIDAgLjExLjA3IDE5LjA2LS44NiAyMC40NXMtMS44OCAxLjIyLTIuNi0uMTljLTUtOS42OSA2LjIyLTkuNjYtMzkuMTItMTItLjcgMC0xIC4yMy0xIC45MyAwIC4xMyAzLjcyIDEyMiAzLjczIDEyMi4xMSAwIC44OS41MiAxLjIgMS4yMSAxLjUxYTgzLjkyIDgzLjkyIDAgMCAxIDguNyA0LjA1YzcuMzEgNC4zMyAxMS4zOCAxMC44NCAxMi40MSAxOS4zMSAxLjQ0IDExLjgtMi43NyAzNS43Ny0zMi4yMSAzNy4xNC0yLjc1LjEzLTI4LjI2IDEuMDgtMzQuMTQtMjMuMjUtNC42Ni0xOS4yNiA4LjI2LTMyLjcgMTkuODktMzYuNGEyLjQ1IDIuNDUgMCAwIDAgMi0yLjY2Yy4xLTUuNjMgMy0xMDcuMSAzLjcxLTEyMS4zNS4wNS0xLjA4LS42Mi0xLjE2LTEuMzUtMS4xNS0zMi4zNS41Mi0zNi43NS0uMzQtNDAuMjIgOC41Mi0yLjQyIDYuMTgtNC4xNCAxLjMyLTMuOTUuMjNxMS41OS05IDMuMzEtMThjLjQtMi4xMSAxLjQzLTIuNjEgMy40My0xLjg2IDUuNTkgMi4xMSA2LjcyIDEuNyAzNy4yNSAxLjkyIDEuNzMgMCAxLjc4LS4wOCAxLjgyLTEuODUuNjgtMjcuNDkuNTgtMjIuNTkgMS0yOS41NWEyLjY5IDIuNjkgMCAwIDAtMS42My0yLjhjLTUuNi0yLjkxLTguNzUtNy41NS04LjktMTMuODctLjM1LTE0LjgxIDE3LjcyLTIxLjY3IDI3LjM4LTExLjUxIDYuODQgNy4xOSA1LjggMTguOTEtMi40NSAyNC4xNWE0LjM1IDQuMzUgMCAwIDAtMi4yMiA0LjM0YzAgLjU5LS4xMS00LjMxIDEgMzAuMDUgMCAuOS40MyAxLjEyIDEuMjQgMS4xMS4xIDAgMjMtLjA5IDM0LjQ3LS4zN3pNNjguMjcgMTQxLjdjMTkuODQtNC41MSAzMi42OC0uNTYgNTIuNDkgMS42OSAyLjc2LjMxIDMuNzQgMS4yMiAzLjYyIDQtLjIxIDUtMS4xNiAyMi4zMy0xLjI0IDIzLjE1YTIuNjUgMi42NSAwIDAgMS0xLjYzIDIuMzRjLTQuMDYgMS43LTMuNjEtNC40NS00LTcuMjktMy4xMy0yMi40My03My44Ny0zMi43LTc0LjYzIDI1LjQtLjMxIDIzLjkyIDE3IDUzLjYzIDU0LjA4IDUwLjg4IDI3LjI0LTIgMTktMjAuMTkgMjQuODQtMjAuNDdhMi43MiAyLjcyIDAgMCAxIDMgMy4zNmMtMS44MyAxMC44NS0zLjQyIDE4Ljk1LTMuNDUgMTkuMTUtMS41NCA5LjE3LTg2LjcgMjIuMDktOTMuMzUtNDIuMDYtMi43MS0yNS44NSAxMC40NC01My4zNyA0MC4yNy02MC4xNXptODAgODcuNjdoLTE5LjQ5YTIuNTcgMi41NyAwIDAgMS0yLjY2LTEuNzljMi4zOC0zLjc1IDUuODkuOTIgNS44Ni02LjE0LS4wOC0yNS43NS4yMS0zOCAuMjMtNDAuMSAwLTMuNDItLjUzLTQuNjUtMy4zMi00Ljk0LTctLjcyLTMuMTEtMy4zNy0xLjExLTMuMzggMTEuODQtLjEgMjIuNjItLjE4IDMwLjA1LjcyIDguNzcgMS4wNyAxNi43MSAxMi42MyA3LjkzIDIyLjYyLTIgMi4yNS00IDQuNDItNi4xNCA2LjczLjk1IDEuMTUgNi45IDguODIgMTcuMjggMTkuNjggMi42NiAyLjc4IDYuMTUgMy41MSA5Ljg4IDMuMTNhMi4yMSAyLjIxIDAgMCAwIDIuMjMtMi4xMmMuMy0zLjQyLjI2IDQuNzMuNDUtNDAuNTggMC01LjY1LS4zNC02LjU4LTMuMjMtNi44My0zLjk1LS4zNS00LTIuMjYtLjY5LTMuMzdsMTkuMDktLjA5Yy4zMiAwIDQuNDkuNTMgMSAzLjM4IDAgLjA1LS4xNiAwLS4yNCAwLTMuNjEuMjYtMy45NCAxLTQgNC42Mi0uMjcgNDMuOTMuMDcgNDAuMjMuNDEgNDIuODIuMTEuODQuMjcgMi4yMyA1LjEgMi4xNCAyLjQ5IDAgMy44NiAzLjM3IDAgMy40LTEwLjM3LjA4LTIwLjc0IDAtMzEuMTEuMDctMTAuNjcgMC0xMy40Ny02LjItMjQuMjEtMjAuODItMS42LTIuMTgtOC4zMS0yLjM2LTguMi0uMzcuODggMTYuNDcgMCAxNy43OCA0IDE3LjY3IDQuNzUtLjEgNC43MyAzLjU3LjgzIDMuNTV6bTI3NS0xMC4xNWMtMS4yMSA3LjEzLjE3IDEwLjM4LTUuMyAxMC4zNC02MS41NS0uNDItNDcuODItLjIyLTUwLjcyLS4zMWExOC40IDE4LjQgMCAwIDEtMy42My0uNzNjLTIuNTMtLjYgMS40OC0xLjIzLS4zOC01LjYtMS40My0zLjM3LTIuNzgtNi43OC00LjExLTEwLjE5YTEuOTQgMS45NCAwIDAgMC0yLTEuNDQgMTM4IDEzOCAwIDAgMC0xNC41OC4wNyAyLjIzIDIuMjMgMCAwIDAtMS42MiAxLjA2Yy0xLjU4IDMuNjItMy4wNyA3LjI5LTQuNTEgMTEtMS4yNyAzLjIzIDcuODYgMS4zMiAxMi4xOSAyLjE2IDMgLjU3IDQuNTMgMy43Mi42NiAzLjczSDMyMi45Yy0yLjkyIDAtMy4wOS0zLjE1LS43NC0zLjIxYTYuMyA2LjMgMCAwIDAgNS45Mi0zLjQ3YzEuNS0zIDIuOC02IDQuMTEtOS4wOSAxOC4xOC00Mi4xNCAxNy4wNi00MC4xNyAxOC40Mi00MS42MWExLjgzIDEuODMgMCAwIDEgMyAwYzIuOTMgMy4zNCAxOC40IDQ0LjcxIDIzLjYyIDUxLjkyIDIgMi43IDUuNzQgMiA2LjM2IDIgMy42MS4xMyA0LTEuMTEgNC4xMy00LjI5LjA5LTEuODcuMDggMS4xNy4wNy00MS4yNCAwLTQuNDYtMi4zNi0zLjc0LTUuNTUtNC4yNy0uMjYgMC0yLjU2LS42My0uMDgtMy4wNi4yMS0uMi0uODktLjI0IDIxLjctLjE1IDIuMzIgMCA1LjMyIDIuNzUtMS4yMSAzLjQ1YTIuNTYgMi41NiAwIDAgMC0yLjY2IDIuODNjLS4wNyAxLjYzLS4xOSAzOC44OS4yOSA0MS4yMWEzLjA2IDMuMDYgMCAwIDAgMy4yMyAyLjQzYzEzLjI1LjQzIDE0LjkyLjQ0IDE2LTMuNDEgMS42Ny01Ljc4IDQuMTMtMi41MiAzLjczLS4xOXptLTEwNC43MiA2NC4zN2MtNC4yNCAwLTQuNDItMy4zOS0uNjEtMy40MSAzNS45MS0uMTYgMjguMTEuMzggMzcuMTktLjY1IDEuNjgtLjE5IDIuMzguMjQgMi4yNSAxLjg5LS4yNiAzLjM5LS42NCA2Ljc4LTEgMTAuMTYtLjI1IDIuMTYtMy4yIDIuNjEtMy40LS4xNS0uMzgtNS4zMS0yLjE1LTQuNDUtMTUuNjMtNS4wOC0xLjU4LS4wNy0xLjY0IDAtMS42NCAxLjUyVjMwNGMwIDEuNjUgMCAxLjYgMS42MiAxLjQ3IDMuMTItLjI1IDEwLjMxLjM0IDE1LjY5LTEuNTIuNDctLjE2IDMuMy0xLjc5IDMuMDcgMS43NiAwIC4yMS0uNzYgMTAuMzUtMS4xOCAxMS4zOS0uNTMgMS4yOS0xLjg4IDEuNTEtMi41OC4zMi0xLjE3LTIgMC01LjA4LTMuNzEtNS4zLTE1LjQyLS45LTEyLjkxLTIuNTUtMTIuOTEgNiAwIDEyLjI1LS43NiAxNi4xMSAzLjg5IDE2LjI0IDE2LjY0LjQ4IDE0LjQgMCAxNi40My01LjcxLjg0LTIuMzcgMy41LTEuNzcgMy4xOC41OC0uNDQgMy4yMS0uODUgNi40My0xLjIzIDkuNjQgMCAuMzYtLjE2IDIuNC00LjY2IDIuMzktMzcuMTYtLjA4LTM0LjU0LS4xOS0zNS4yMS0uMzEtMi43Mi0uNTEtMi4yLTMgLjIyLTMuNDUgMS4xLS4xOSA0IC41NCA0LjE2LTIuNTYgMi40NC01Ni4yMi0uMDctNTEuMzQtMy45MS01MS4zM3ptLS40MS0xMDkuNTJjMi40Ni42MSAzLjEzIDEuNzYgMi45NSA0LjY1LS4zMyA1LjMtLjM0IDktLjU1IDkuNjktLjY2IDIuMjMtMy4xNSAyLjEyLTMuMzQtLjI3LS4zOC00LjgxLTMuMDUtNy44Mi03LjU3LTkuMTUtMjYuMjgtNy43My0zMi44MSAxNS40Ni0yNy4xNyAzMC4yMiA1Ljg4IDE1LjQxIDIyIDE1LjkyIDI4Ljg2IDEzLjc4IDUuOTItMS44NSA1Ljg4LTYuNSA2LjkxLTcuNTggMS4yMy0xLjMgMi4yNS0xLjg0IDMuMTIgMS4xIDAgLjEuNTcgMTEuODktNiAxMi43NS0xLjYuMjEtMTkuMzggMy42OS0zMi42OC0zLjM5LTIxLTExLjE5LTE2Ljc0LTM1LjQ3LTYuODgtNDUuMzMgMTQtMTQuMDYgMzkuOTEtNy4wNiA0Mi4zMi02LjQ3ek0yODkuOCAyODAuMTRjMy4yOCAwIDMuNjYgMyAuMTYgMy40My0yLjYxLjMyLTUtLjQyLTUgNS40NiAwIDItLjE5IDI5LjA1LjQgNDEuNDUuMTEgMi4yOSAxLjE1IDMuNTIgMy40NCAzLjY1IDIyIDEuMjEgMTQuOTUtMS42NSAxOC43OS02LjM0IDEuODMtMi4yNCAyLjc2Ljg0IDIuNzYgMS4wOC4zNSAxMy42Mi00IDEyLjM5LTUuMTkgMTIuNGwtMzguMTYtLjE5Yy0xLjkzLS4yMy0yLjA2LTMtLjQyLTMuMzggMi0uNDggNC45NC40IDUuMTMtMi44IDEtMTUuODcuNTctNDQuNjUuMzQtNDcuODEtLjI3LTMuNzctMi44LTMuMjctNS42OC0zLjcxLTIuNDctLjM4LTItMy4yMi4zNC0zLjIyIDEuNDUtLjAyIDE3Ljk3LS4wMyAyMy4wOS0uMDJ6bS0zMS42My01Ny43OWMuMDcgNC4wOCAyLjg2IDMuNDYgNiAzLjU4IDIuNjEuMSAyLjUzIDMuNDEtLjA3IDMuNDMtNi40OCAwLTEzLjcgMC0yMS42MS0uMDYtMy44NCAwLTMuMzgtMy4zNSAwLTMuMzcgNC40OSAwIDMuMjQgMS42MSAzLjQxLTQ1LjU0IDAtNS4wOC0zLjI3LTMuNTQtNC43Mi00LjIzLTIuNTgtMS4yMy0xLjM2LTMuMDkuNDEtMy4xNSAxLjI5IDAgMjAuMTktLjQxIDIxLjE3LjIxczEuODcgMS42NS0uNDIgMi44NmMtMSAuNTItMy44Ni0uMjgtNC4xNSAyLjQ3IDAgLjIxLS44MiAxLjYzLS4wNyA0My44em0tMzYuOTEgMjc0LjI3YTIuOTMgMi45MyAwIDAgMCAzLjI2IDBjMTctOS43OSAxODItMTAzLjU3IDE5Ny40Mi0xMTIuNTEtLjE0LS40MyAxMS4yNi0uMTgtMTgxLjUyLS4yNy0xLjIyIDAtMS41Ny4zNy0xLjUzIDEuNTYgMCAuMSAxLjI1IDQ0LjUxIDEuMjIgNTAuMzhhMjguMzMgMjguMzMgMCAwIDEtMS4zNiA3LjcxYy0uNTUgMS44My4zOC0uNS0xMy41IDMyLjIzLS43MyAxLjcyLTEgMi4yMS0yLS4wOC00LjE5LTEwLjM0LTguMjgtMjAuNzItMTIuNTctMzFhMjMuNiAyMy42IDAgMCAxLTItMTAuNzljLjE2LTIuNDYuOC0xNi4xMiAxLjUxLTQ4IDAtMS45NSAwLTItMi0yaC0xODNjMi41OCAxLjYzIDE3OC4zMiAxMDIuNTcgMTk2IDExMi43NnptLTkwLjktMTg4Ljc1YzAgMi40LjM2IDIuNzkgMi43NiAzIDExLjU0IDEuMTcgMjEgMy43NCAyNS42NC03LjMyIDYtMTQuNDYgMi42Ni0zNC40MS0xMi40OC0zOC44NC0yLS41OS0xNi0yLjc2LTE1Ljk0IDEuNTEuMDUgOC4wNC4wMSAxMS42MS4wMiA0MS42NXptMTA1Ljc1LTE1LjA1YzAgMi4xMyAxLjA3IDM4LjY4IDEuMDkgMzkuMTMuMzQgOS45NC0yNS41OCA1Ljc3LTI1LjIzLTIuNTkuMDgtMiAxLjM3LTM3LjQyIDEuMS0zOS40My0xNC4xIDcuNDQtMTQuNDIgNDAuMjEgNi40NCA0OC44YTE3LjkgMTcuOSAwIDAgMCAyMi4zOS03LjA3YzQuOTEtNy43NiA2Ljg0LTI5LjQ3LTUuNDMtMzlhMi41MyAyLjUzIDAgMCAxLS4zNi4xMnptLTEyLjI4LTE5OGMtOS44MyAwLTkuNzMgMTQuNzUtLjA3IDE0Ljg3czEwLjEtMTQuODguMDctMTQuOTF6bS04MC4xNSAxMDMuODNjMCAxLjguNDEgMi40IDIuMTcgMi41OCAxMy42MiAxLjM5IDEyLjUxLTExIDEyLjE2LTEzLjM2LTEuNjktMTEuMjItMTQuMzgtMTAuMi0xNC4zNS03LjgxLjA1IDQuNS0uMDMgMTMuNjguMDIgMTguNTl6bTIxMi4zMiA2LjRsLTYuMS0xNS44NGMtMi4xNiA1LjQ4LTQuMTYgMTAuNTctNi4yMyAxNS44NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3NzM0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMybDM0LjkgMzk1LjhMMTkyIDQ4MGwxNTcuMS01Mi4yTDM4NCAzMkgwem0zMTMuMSA4MGwtNC44IDQ3LjNMMTkzIDIwOC42bC0uMy4xaDExMS41bC0xMi44IDE0Ni42LTk4LjIgMjguNy05OC44LTI5LjItNi40LTczLjloNDguOWwzLjIgMzguMyA1Mi42IDEzLjMgNTQuNy0xNS40IDMuNy02MS42LTE2Ni4zLS41di0uMWwtLjIuMS0zLjYtNDYuM0wxOTMuMSAxNjJsNi41LTIuN0g3Ni43TDcwLjkgMTEyaDI0Mi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDc3MzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAzMmwtNjQgMzY4LTIyMy4zIDgwTDAgNDAwbDE5LjYtOTQuOGg4MmwtOCA0MC42TDIxMCAzOTAuMmwxMzQuMS00NC40IDE4LjgtOTcuMUgyOS41bDE2LTgyaDMzMy43bDEwLjUtNTIuN0g1Ni4zbDE2LjMtODJINDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDdXR0bGVmaXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0NCAzMDUuNWMtMTcuNSAzMS42LTU3LjQgNTQuNS05NiA1NC41LTU2LjYgMC0xMDQtNDcuNC0xMDQtMTA0czQ3LjQtMTA0IDEwNC0xMDRjMzguNiAwIDc4LjUgMjIuOSA5NiA1NC41IDEzLjctNTAuOSA0MS43LTkzLjMgODctMTE3LjhDMzg1LjcgMzkuMSAzMjAuNSA4IDI0OCA4IDExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OGM3Mi41IDAgMTM3LjctMzEuMSAxODMtODAuNy00NS4zLTI0LjUtNzMuMy02Ni45LTg3LTExNy44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEQW5kREJleW9uZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuOCAyNDEuNWMxMy44IDAgMjEtMTAuMSAyNC44LTE3LjktMS0xLjEtNS00LjItNy40LTYuNi0yLjQgNC4zLTguMiAxMC43LTEzLjkgMTAuNy0xMC4yIDAtMTUuNC0xNC43LTMuMi0yNi42LS41LS4yLTQuMy0xLjgtOCAyLjQgMC0zIDEtNS4xIDIuMS02LjYtMy41IDEuMy05LjggNS42LTExLjQgNy45LjItNS44IDEuNi03LjUuNi05bC0uMi0uMnMtOC41IDUuNi05LjMgMTQuN2MwIDAgMS4xLTEuNiAyLjEtMS45LjYtLjMgMS4zIDAgLjYgMS45LS4yLjYtNS44IDE1LjcgNS4xIDI2LS42LTEuNi0xLjktNy42IDIuNC0xLjktLjMuMSA1LjggNy4xIDE1LjcgNy4xem01Mi40LTIxLjFjMC00LTQuOS00LjQtNS42LTQuNSAyIDMuOS45IDcuNS4yIDkgMi41LS40IDUuNC0xLjYgNS40LTQuNXptMTAuMyA1LjJjMC02LjQtNi4yLTExLjQtMTMuNS0xMC43IDggMS4zIDUuNiAxMy44LTUgMTEuNCAzLjctMi42IDMuMi05LjktMS4zLTEyLjUgMS40IDQuMi0zIDguMi03LjQgNC42LTIuNC0xLjktOC02LjYtMTAuNi04LjYtMi40LTIuMS01LjUtMS02LjYtMS44LTEuMy0xLjEtLjUtMy44LTIuMi01LTEuNi0uOC0zLS4zLTQuOC0xLTEuNi0uNi0yLjctMS45LTIuNi0zLjUtMi41IDQuNCAzLjQgNi4zIDQuNSA4LjUgMSAxLjktLjggNC44IDQgOC41IDE0LjggMTEuNiA5LjEgOCAxMC40IDE4LjEuNiA0LjMgNC4yIDYuNyA2LjQgNy40LTIuMS0xLjktMi45LTYuNCAwLTkuMyAwIDEzLjkgMTkuMiAxMy4zIDIzLjEgNi40LTIuNCAxLjEtNy0uMi05LTEuOSA3LjcgMSAxNC4yLTQuMSAxNC42LTEwLjZ6bS0zOS40LTE4LjRjMiAuOCAxLjYuNyA2LjQgNC41IDEwLjItMjQuNSAyMS43LTE1LjcgMjItMTUuNSAyLjItMS45IDkuOC0zLjggMTMuOC0yLjctMi40LTIuNy03LjUtNi4yLTEzLjMtNi4yLTQuNyAwLTcuNCAyLjItOCAxLjMtLjgtMS40IDMuMi0zLjQgMy4yLTMuNC01LjQuMi05LjYgNi43LTExLjIgNS45LTEuMS0uNSAxLjQtMy43IDEuNC0zLjctNS4xIDIuOS05LjMgOS4xLTEwLjIgMTMgNC42LTUuOCAxMy44LTkuOCAxOS43LTktMTAuNS41LTE5LjUgOS43LTIzLjggMTUuOHptMjQyLjUgNTEuOWMtMjAuNyAwLTQwIDEuMy01MC4zIDIuMWw3LjQgOC4ydjc3LjJsLTcuNCA4LjJjMTAuNC44IDMwLjkgMi4xIDUxLjYgMi4xIDQyLjEgMCA1OS4xLTIwLjcgNTkuMS00OC45IDAtMjkuMy0yMy4yLTQ4LjktNjAuNC00OC45em0tMTUuMSA3NS42di01My4zYzMwLjEtMy4zIDQ2LjggMy44IDQ2LjggMjYuMyAwIDI1LjYtMjEuNCAzMC4yLTQ2LjggMjd6TTMwMS42IDE4MWMtMS0zLjQtLjItNi45IDEuMS05LjQgMSAzIDIuNiA2LjQgNy41IDktLjUtMi40LS4yLTUuNi41LTgtMS40LTUuNCAyLjEtOS45IDYuNC05LjkgNi45IDAgOC41IDguOCA0LjcgMTQuNCAyLjEgMy4yIDUuNSA1LjYgNy43IDcuOCAzLjItMy43IDUuNS05LjUgNS41LTEzLjggMC04LjItNS41LTE1LjktMTYuNy0xNi41LTIwLS45LTIwLjIgMTYuNi0yMCAxOC45LjUgNS4yIDMuNCA3LjggMy4zIDcuNXptLS40IDZjLS41IDEuOC03IDMuNy0xMC4yIDYuOSA0LjgtMSA3LS4yIDcuOCAxLjguNSAxLjQtLjIgMy40LS41IDUuNiAxLjYtMS44IDctNS41IDExLTYuMi0xLS4zLTMuNC0uOC00LjMtLjggMi45LTMuNCA5LjMtNC41IDEyLjgtMy43LTIuMi0uMi02LjcgMS4xLTguNSAyLjYgMS42LjMgMyAuNiA0LjMgMS4xLTIuMS44LTQuOCAzLjQtNS44IDYuMSA3LTUgMTMuMSA1LjIgNyA4LjIuOC4yIDIuNyAwIDMuNS0uNS0uMyAxLjEtMS45IDMtMyAzLjQgMi45IDAgNy0xLjkgOC4yLTQuNiAwIDAtMS44LjYtMi42LS4ycy4zLTQuMy4zLTQuM2MtMi4zIDIuOS0zLjQtMS4zLTEuMy00LjItMS0uMy0zLjUtLjYtNC42LS41IDMuMi0xLjEgMTAuNC0xLjggMTEuMi0uMy42IDEuMS0xIDMuNC0xIDMuNCA0LS41IDguMyAxLjEgNi43IDUuMSAyLjktMS40IDUuNS01LjkgNC44LTEwLjQtLjMgMS0xLjYgMi40LTIuOSAyLjcuMi0xLjQtMS0yLjItMS45LTIuNiAxLjctOS42LTE0LjYtMTQuMi0xNC4xLTIzLjktMSAxLjMtMS44IDUtLjggNy4xIDIuNyAzLjIgOC43IDYuNyAxMC4xIDEyLjItMi42LTYuNC0xNS4xLTExLjQtMTQuNi0yMC4yLTEuNiAxLjYtMi42IDcuOC0xLjMgMTEgMi40IDEuNCA0LjUgMy44IDQuOCA2LjEtMi4yLTUuMS0xMS40LTYuMS0xMy45LTEyLjItLjYgMi4yLS4zIDUgMSA2LjcgMCAwLTIuMi0uOC03LS42IDEuNy42IDUuMSAzLjUgNC44IDUuMnptMjUuOSA3LjRjLTIuNyAwLTMuNS0yLjEtNC4yLTQuMyAzLjMgMS4zIDQuMiA0LjMgNC4yIDQuM3ptMzguOSAzLjdsLTEtLjZjLTEuMS0xLTIuOS0xLjQtNC43LTEuNC0yLjkgMC01LjggMS4zLTcuNSAzLjQtLjguOC0xLjQgMS44LTIuMSAyLjZ2MTUuN2MzLjUgMi42IDcuMS0yLjkgMy03LjIgMS41LjMgNC42IDIuNyA1LjEgMy4yIDAgMCAyLjYtLjUgNS0uNSAyLjEgMCAzLjkuMyA1LjYgMS4xVjE5NmMtMS4xLjUtMi4yIDEtMi43IDEuNHpNNzkuOSAzMDUuOWMxNy4yLTQuNiAxNi4yLTE4IDE2LjItMTkuOSAwLTIwLjYtMjQuMS0yNS0zNy0yNUgzbDguMyA4LjZ2MjkuNUgwbDExLjQgMTQuNlYzNDZMMyAzNTQuNmM2MS43IDAgNzMuOCAxLjUgODYuNC01LjkgNi43LTQgOS45LTkuOCA5LjktMTcuNiAwLTUuMSAyLjYtMTguOC0xOS40LTI1LjJ6bS00MS4zLTI3LjVjMjAgMCAyOS42LS44IDI5LjYgOS4xdjNjMCAxMi4xLTE5IDguOC0yOS42IDguOHptMCA1OS4yVjMxNWMxMi4yIDAgMzIuNy0yLjMgMzIuNyA4Ljh2NC41aC4yYzAgMTEuMi0xMi41IDkuMy0zMi45IDkuM3ptMTAxLjItMTkuM2wyMy4xLjJ2LS4ybDE0LjEtMjEuMmgtMzcuMnYtMTQuOWg1Mi40bC0xNC4xLTIxdi0uMmwtNzMuNS4yIDcuNCA4LjJ2NzcuMWwtNy40IDguMmg4MS4ybDE0LjEtMjEuMi02MC4xLjJ6bTIxNC43LTYwLjFjLTczLjkgMC03Ny41IDk5LjMtLjMgOTkuMyA3Ny45IDAgNzQuMS05OS4zLjMtOTkuM3ptLS4zIDc3LjVjLTM3LjQgMC0zNi45LTU1LjMuMi01NS4zIDM2LjguMSAzOC44IDU1LjMtLjIgNTUuM3ptLTkxLjMtOC4zbDQ0LjEtNjYuMmgtNDEuN2w2LjEgNy4yLTIwLjUgMzcuMmgtLjNsLTIxLTM3LjIgNi40LTcuMmgtNDQuOWw0NC4xIDY1LjguMiAxOS40LTcuNyA4LjJoNDIuNmwtNy4yLTguMnptLTI4LjQtMTUxLjNjMS42IDEuMyAyLjkgMi40IDIuOSA2LjZ2MzguOGMwIDQuMi0uOCA1LjMtMi43IDYuNC0uMS4xLTcuNSA0LjUtNy45IDQuNmgzNS4xYzEwIDAgMTcuNC0xLjUgMjYtOC42LS42LTUgLjItOS41LjgtMTIgMC0uMi0xLjggMS40LTIuNyAzLjUgMC01LjcgMS42LTE1LjQgOS42LTIwLjUtLjEgMC0zLjctLjgtOSAxLjEgMi0zLjEgMTAtNy45IDEwLjQtNy45LTguMi0yNi0zOC0yMi45LTMyLjItMjIuOS0zMC45IDAtMzIuNi4zLTM5LjktNCAuMS44LjUgOC4yIDkuNiAxNC45em0yMS41IDUuNWM0LjYgMCAyMy4xLTMuMyAyMy4xIDE3LjMgMCAyMC43LTE4LjQgMTcuMy0yMy4xIDE3LjN6bTIyOC45IDc5LjZsNyA4LjNWMzEyaC0uM2MtNS40LTE0LjQtNDIuMy00MS41LTQ1LjItNTAuOWgtMzEuNmw3LjQgOC41djc2LjlsLTcuMiA4LjNoMzlsLTcuNC04LjJ2LTQ3LjRoLjNjMy43IDEwLjYgNDQuNSA0Mi45IDQ4LjUgNTUuNmgyMS4zdi04NS4ybDcuNC04LjN6bS0xMDYuNy05Ni4xYy0zMi4yIDAtMzIuOC4yLTM5LjktNCAuMS43LjUgOC4zIDkuNiAxNC45IDMuMSAyIDIuOSA0LjMgMi45IDkuNSAxLjgtMS4xIDMuOC0yLjIgNi4xLTMtMS4xIDEuMS0yLjcgMi43LTMuNSA0LjUgMS0xLjEgNy41LTUuMSAxNC42LTMuNS0xLjYuMy00IDEuMS02LjEgMi45LjEgMCAyLjEtMS4xIDcuNS0uM3YtNC4zYzQuNyAwIDIzLjEtMy40IDIzLjEgMTcuMyAwIDIwLjUtMTguNSAxNy4zLTE5LjcgMTcuMyA1LjcgNC40IDUuOCAxMiAyLjIgMTYuM2guM2MzMy40IDAgMzYuNy0yNy4zIDM2LjctMzQgMC0zLjgtMS4xLTMyLTMzLjgtMzMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhREFuZEQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODIuNSA5OC45Yy0uNi0xNy4yIDItMzMuOCAxMi43LTQ4LjIuMyA3LjQgMS4yIDE0LjUgNC4yIDIxLjYgNS45LTI3LjUgMTkuNy00OS4zIDQyLjMtNjUuNS0xLjkgNS45LTMuNSAxMS44LTMgMTcuNyA4LjctNy40IDE4LjgtMTcuOCA0NC40LTIyLjcgMTQuNy0yLjggMjkuNy0yIDQyLjEgMSAzOC41IDkuMyA2MSAzNC4zIDY5LjcgNzIuMyA1LjMgMjMuMS43IDQ1LTguMyA2Ni40LTUuMiAxMi40LTEyIDI0LjQtMjAuNyAzNS4xLTItMS45LTMuOS0zLjgtNS44LTUuNi00Mi44LTQwLjgtMjYuOC0yNS4yLTM3LjQtMzcuNC0xLjEtMS4yLTEtMi4yLS4xLTMuNiA4LjMtMTMuNSAxMS44LTI4LjIgMTAtNDQtMS4xLTkuOC00LjMtMTguOS0xMS4zLTI2LjItMTQuNS0xNS4zLTM5LjItMTUtNTMuNS42LTExLjQgMTIuNS0xNC4xIDI3LjQtMTAuOSA0My42LjIgMS4zLjQgMi43IDAgMy45LTMuNCAxMy43LTQuNiAyNy42LTIuNSA0MS42LjEuNS4xIDEuMS4xIDEuNiAwIC4zLS4xLjUtLjIgMS4xLTIxLjgtMTEtMzYtMjguMy00My4yLTUyLjItOC4zIDE3LjgtMTEuMSAzNS41LTYuNiA1NC4xLTE1LjYtMTUuMi0yMS4zLTM0LjMtMjItNTUuMnptNDY5LjYgMTIzLjJjLTExLjYtMTEuNi0yNS0yMC40LTQwLjEtMjYuNi0xMi44LTUuMi0yNi03LjktMzkuOS03LjEtMTAgLjYtMTkuNiAzLjEtMjkgNi40LTIuNS45LTUuMSAxLjYtNy43IDIuMi00LjkgMS4yLTcuMy0zLjEtNC43LTYuOCAzLjItNC42IDMuNC00LjIgMTUtMTIgLjYtLjQgMS4yLS44IDIuMi0xLjVoLTIuNWMtLjYgMC0xLjIuMi0xLjkuMy0xOS4zIDMuMy0zMC43IDE1LjUtNDguOSAyOS42LTEwLjQgOC4xLTEzLjggMy44LTEyLS41IDEuNC0zLjUgMy4zLTYuNyA1LjEtMTAgMS0xLjggMi4zLTMuNCAzLjUtNS4xLS4yLS4yLS41LS4zLS43LS41LTI3IDE4LjMtNDYuNyA0Mi40LTU3LjcgNzMuMy4zLjMuNy42IDEgLjkuMy0uNi41LTEuMi45LTEuNyAxMC40LTEyLjEgMjIuOC0yMS44IDM2LjYtMjkuOCAxOC4yLTEwLjYgMzcuNS0xOC4zIDU4LjctMjAuMiA0LjMtLjQgOC43LS4xIDEzLjEtLjEtMS44LjctMy41LjktNS4zIDEuMS0xOC41IDIuNC0zNS41IDktNTEuNSAxOC41LTMwLjIgMTcuOS01NC41IDQyLjItNzUuMSA3MC40LS4zLjQtLjQuOS0uNyAxLjMgMTQuNSA1LjMgMjQgMTcuMyAzNi4xIDI1LjYuMi0uMS4zLS4yLjQtLjRsMS4yLTIuN2MxMi4yLTI2LjkgMjctNTIuMyA0Ni43LTc0LjUgMTYuNy0xOC44IDM4LTI1LjMgNjIuNS0yMCA1LjkgMS4zIDExLjQgNC40IDE3LjIgNi44IDIuMy0xLjQgNS4xLTMuMiA4LTQuNyA4LjQtNC4zIDE3LjQtNyAyNi43LTkgMTQuNy0zLjEgMjkuNS00LjkgNDQuNS0xLjN2LS41Yy0uNS0uNC0xLjItLjgtMS43LTEuNHpNMzE2LjcgMzk3LjZjLTM5LjQtMzMtMjIuOC0xOS41LTQyLjctMzUuNi0uOC45IDAtLjItMS45IDMtMTEuMiAxOS4xLTI1LjUgMzUuMy00NCA0Ny42LTEwLjMgNi44LTIxLjUgMTEuOC0zNC4xIDExLjgtMjEuNiAwLTM4LjItOS41LTQ5LjQtMjcuOC0xMi0xOS41LTEzLjMtNDAuNy04LjItNjIuNiA3LjgtMzMuOCAzMC4xLTU1LjIgMzguNi02NC4zLTE4LjctNi4yLTMzIDEuNy00Ni40IDEzLjkuOC0xMy45IDQuMy0yNi4yIDExLjgtMzcuMy0yNC4zIDEwLjYtNDUuOSAyNS02NC44IDQzLjktLjMtNS44IDUuNC00My43IDUuNi00NC43LjMtMi43LS42LTUuMy0zLTcuNC0yNC4yIDI0LjctNDQuNSA1MS44LTU2LjEgODQuNiA3LjQtNS45IDE0LjktMTEuNCAyMy42LTE2LjItOC4zIDIyLjMtMTkuNiA1Mi44LTcuOCAxMDEuMSA0LjYgMTkgMTEuOSAzNi44IDI0LjEgNTIuMyAyLjkgMy43IDYuMyA2LjkgOS41IDEwLjMuMi0uMi40LS4zLjYtLjUtMS40LTctMi4yLTE0LjEtMS41LTIxLjkgMi4yIDMuMiAzLjkgNiA1LjkgOC42IDEyLjYgMTYgMjguNyAyNy40IDQ3LjIgMzUuNiAyNSAxMS4zIDUxLjEgMTMuMyA3Ny45IDguNiA1NC45LTkuNyA5MC43LTQ4LjYgMTE2LTk4LjggMS0xLjguNi0yLjktLjktNC4yem0xNzItNDYuNGMtOS41LTMuMS0yMi4yLTQuMi0yOC43LTIuOSA5LjkgNCAxNC4xIDYuNiAxOC44IDEyIDEyLjYgMTQuNCAxMC40IDM0LjctNS40IDQ1LjYtMTEuNyA4LjEtMjQuOSAxMC41LTM4LjkgOS4xLTEuMi0uMS0yLjMtLjQtMy0uNiAyLjgtMy43IDYtNyA4LjEtMTAuOCA5LjQtMTYuOCA1LjQtNDIuMS04LjctNTYuMS0yLjEtMi4xLTQuNi0zLjktNy01LjktLjMgMS4zLS4xIDIuMS4xIDIuOCA0LjIgMTYuNi04LjEgMzIuNC0yNC44IDMxLjgtNy42LS4zLTEzLjktMy44LTE5LjYtOC41LTE5LjUtMTYuMS0zOS4xLTMyLjEtNTguNS00OC4zLTUuOS00LjktMTIuNS04LjEtMjAuMS04LjctNC42LS40LTkuMy0uNi0xMy45LS45LTUuOS0uNC04LjgtMi44LTEwLjQtOC40LS45LTMuNC0xLjUtNi44LTIuMi0xMC4yLTEuNS04LjEtNi4yLTEzLTE0LjMtMTQuMi00LjQtLjctOC45LTEtMTMuMy0xLjUtMTMtMS40LTE5LjgtNy40LTIyLjYtMjAuMy01IDExLTEuNiAyMi40IDcuMyAyOS45IDQuNSAzLjggOS4zIDcuMyAxMy44IDExLjIgNC42IDMuOCA3LjQgOC43IDcuOSAxNC44LjQgNC43LjggOS41IDEuOCAxNC4xIDIuMiAxMC42IDguOSAxOC40IDE3IDI1LjEgMTYuNSAxMy43IDMzIDI3LjMgNDkuNSA0MS4xIDE3LjkgMTUgMTMuOSAzMi44IDEzIDU2LS45IDIyLjkgMTIuMiA0Mi45IDMzLjUgNTEuMiAxIC40IDIgLjYgMy42IDEuMS0xNS43LTE4LjItMTAuMS00NC4xLjctNTIuMy4zIDIuMi40IDQuMy45IDYuNCA5LjQgNDQuMSA0NS40IDY0LjIgODUgNTYuOSAxNi0yLjkgMzAuNi04LjkgNDIuOS0xOS44IDItMS44IDMuNy00LjEgNS45LTYuNS0xOS4zIDQuNi0zNS44LjEtNTAuOS0xMC42LjctLjMgMS4zLS4zIDEuOS0uMyAyMS4zIDEuOCA0MC42LTMuNCA1Ny0xNy40IDE5LjUtMTYuNiAyNi42LTQyLjkgMTcuNC02Ni04LjMtMjAuMS0yMy42LTMyLjMtNDMuOC0zOC45ek05OS40IDE3OS4zYy01LjMtOS4yLTEzLjItMTUuNi0yMi4xLTIxLjMgMTMuNy0uNSAyNi42LjIgMzkuNiAzLjctNy0xMi4yLTguNS0yNC43LTUtMzguNyA1LjMgMTEuOSAxMy43IDIwLjEgMjMuNiAyNi44IDE5LjcgMTMuMiAzNS43IDE5LjYgNDYuNyAzMC4yIDMuNCAzLjMgNi4zIDcuMSA5LjYgMTAuOS0uOC0yLjEtMS40LTQuMS0yLjItNi01LTEwLjYtMTMtMTguNi0yMi42LTI1LTEuOC0xLjItMi44LTIuNS0zLjQtNC41LTMuMy0xMi41LTMtMjUuMS0uNy0zNy42IDEtNS41IDIuOC0xMC45IDQuNS0xNi4zLjgtMi40IDIuMy00LjYgNC02LjYuNiA2LjkgMCAyNS41IDE5LjYgNDYgMTAuOCAxMS4zIDIyLjQgMjEuOSAzMy45IDMyLjcgOSA4LjUgMTguMyAxNi43IDI1LjUgMjYuOCAxLjEgMS42IDIuMiAzLjMgMy44IDQuNy01LTEzLTE0LjItMjQuMS0yNC4yLTMzLjgtOS42LTkuMy0xOS40LTE4LjQtMjkuMi0yNy40LTMuMy0zLTQuNi02LjctNS4xLTEwLjktMS4yLTEwLjQgMC0yMC42IDQuMy0zMC4yLjUtMSAxLjEtMiAxLjktMy4zLjUgNC4yLjYgNy45IDEuNCAxMS42IDQuOCAyMy4xIDIwLjQgMzYuMyA0OS4zIDYzLjUgMTAgOS40IDE5LjMgMTkuMiAyNS42IDMxLjYgNC44IDkuMyA3LjMgMTkgNS43IDI5LjYtLjEuNi41IDEuNyAxLjEgMiA2LjIgMi42IDEwIDYuOSA5LjcgMTQuMyA3LjctMi42IDEyLjUtOCAxNi40LTE0LjUgNC4yIDIwLjItOS4xIDUwLjMtMjcuMiA1OC43LjQtNC41IDUtMjMuNC0xNi41LTI3LjctNi44LTEuMy0xMi44LTEuMy0yMi45LTIuMSA0LjctOSAxMC40LTIwLjYuNS0yMi40LTI0LjktNC42LTUyLjggMS45LTU3LjggNC42IDguMi40IDE2LjMgMSAyMy41IDMuMy0yIDYuNS00IDEyLjctNS44IDE4LjktMS45IDYuNSAyLjEgMTQuNiA5LjMgOS42IDEuMi0uOSAyLjMtMS45IDMuMy0yLjctMy4xIDE3LjktMi45IDE1LjktMi44IDE4LjMuMyAxMC4yIDkuNSA3LjggMTUuNyA3LjMtMi41IDExLjgtMjkuNSAyNy4zLTQ1LjQgMjUuOCA3LTQuNyAxMi43LTEwLjMgMTUuOS0xNy45LTYuNS44LTEyLjkgMS42LTE5LjIgMi40bC0uMy0uOWM0LjctMy40IDgtNy44IDEwLjItMTMuMSA4LjctMjEuMS0zLjYtMzgtMjUtMzkuOS05LjEtLjgtMTcuOC44LTI1LjkgNS41IDYuMi0xNS42IDE3LjItMjYuNiAzMi42LTM0LjUtMTUuMi00LjMtOC45LTIuNy0yNC42LTYuMyAxNC42LTkuMyAzMC4yLTEzLjIgNDYuNS0xNC42LTUuMi0zLjItNDguMS0zLjYtNzAuMiAyMC45IDcuOSAxLjQgMTUuNSAyLjggMjMuMiA0LjItMjMuOCA3LTQ0IDE5LjctNjIuNCAzNS42IDEuMS00LjggMi43LTkuNSAzLjMtMTQuMy42LTQuNS44LTkuMi4xLTEzLjYtMS41LTkuNC04LjktMTUuMS0xOS43LTE2LjMtNy45LS45LTE1LjYuMS0yMy4zIDEuMy0uOS4xLTEuNy4zLTIuOSAwIDE1LjgtMTQuOCAzNi0yMS43IDUzLjEtMzMuNSA2LTQuNSA2LjgtOC4yIDMtMTQuOXptMTI4LjQgMjYuOGMzLjMgMTYgMTIuNiAyNS41IDIzLjggMjQuMy00LjYtMTEuMy0xMi4xLTE5LjUtMjMuOC0yNC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEYWlseW1vdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTguOTMsMjY3YTQ4LjQsNDguNCwwLDAsMC0yNC4zNi02LjIxcS0xOS44MywwLTMzLjQ0LDEzLjI3dC0xMy42MSwzMy40MnEwLDIxLjE2LDEzLjI4LDM0LjZ0MzMuNDMsMTMuNDRxMjAuNSwwLDM0LjExLTEzLjc4VDMyMiwzMDcuNDdBNDcuMTMsNDcuMTMsMCwwLDAsMzE1LjksMjg0LDQ0LjEzLDQ0LjEzLDAsMCwwLDI5OC45MywyNjdaTTAsMzJWNDgwSDQ0OFYzMlpNMzc0LjcxLDQwNS4yNmgtNTMuMVYzODEuMzdoLS42N3EtMTUuNzksMjYuMi01NS43OCwyNi4yLTI3LjU2LDAtNDguODktMTMuMWE4OC4yOSw4OC4yOSwwLDAsMS0zMi45NC0zNS43N3EtMTEuNi0yMi42OC0xMS41OS01MC44OSwwLTI3LjU2LDExLjc2LTUwLjIyYTg5LjksODkuOSwwLDAsMSwzMi45My0zNS43OHEyMS4xOC0xMy4wOSw0Ny43Mi0xMy4xYTgwLjg3LDgwLjg3LDAsMCwxLDI5Ljc0LDUuMjFxMTMuMjgsNS4yMSwyNSwxN1YxNTNsNTUuNzktMTIuMDlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURhc2hjdWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNi42IDEwNEgxMTAuNGMtNTEuMSAwLTkxLjIgNDMuMy05MS4yIDkzLjVWNDI3YzAgNTAuNSA0MC4xIDg1IDkxLjIgODVoMjI3LjJjNTEuMSAwIDkxLjItMzQuNSA5MS4yLTg1VjBMMzI2LjYgMTA0ek0xNTMuOSA0MTYuNWMtMTcuNyAwLTMyLjQtMTUuMS0zMi40LTMyLjhWMjQwLjhjMC0xNy43IDE0LjctMzIuNSAzMi40LTMyLjVoMTQwLjdjMTcuNyAwIDMyIDE0LjggMzIgMzIuNXYxMjMuNWw1MS4xIDUyLjNIMTUzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURlYmlhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODAuMiAyNDUuNmMzLTcuNiA1LjUtMTQgNS4yLTI0LjRsLTQuMyA5YzQuNC0xMy4yIDQtMjcuMSAzLjYtNDAuNGMtLjItNi0uMy0xMS44IDAtMTcuNGwtMS44LS41Yy0xLjUtNDUuMi00MC42LTkzLjEtNzUuMy0xMDkuNGMtMzAtMTMuOC03Ni4xLTE2LjItOTcuMy01LjhjMS4zLTEuMSA0LjItMiA2LjgtMi43bC4zLS4xYzMuMy0xIDYtMS43IDQtMi45Yy0xOS4yIDEuOS0yNC45IDUuNS0zMS4xIDkuNGwtLjEgMGMtNC42IDIuOS05LjUgNi0yMC4zIDguN2MtMy41IDMuNCAxLjcgMiA1LjggLjlsMCAwYzQuMS0xLjEgNy4yLTEuOS0uMSAyLjRjLTMuNSAxLTYuNiAxLjMtOS42IDEuNmwtLjEgMGMtOC4zIC44LTE1LjggMS42LTMwLjcgMTdjLjggMS4zIDMuNC0uMiA1LjMtMS4zbC4xLS4xYzIuMy0xLjQgMy40LTItMS43IDQuNGMtMTkuMS0yLjQtNjAuMyA0My43LTY5LjEgNTlsNC42IC44Yy0zLjIgOC02LjggMTQuOC0xMCAyMC44Yy00LjMgOC4xLTcuOSAxNC45LTguNyAyMS4zYy0uMyA1LjEtMSAxMS0xLjcgMTcuM2wwIDBjLS4xIDEtLjIgMi0uMyAzbC0uMSAuNmMtMyAyNy4zLTYuNyA2MC44IDMuOSA3M2wtMS4zIDEzYy42IDEuMiAxLjEgMi4zIDEuNiAzLjVjLjIgLjQgLjQgLjggLjUgMS4xbDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMGMxIDIuMSAyIDQuMiAzLjMgNi4ybC0zIC4yYzcgMjIuMSAxMC44IDIyLjUgMTUuMSAyMi45bDAgMGM0LjQgLjQgOS4zIC45IDE4LjcgMjQuMmMtMi43LS45LTUuNS0xLjktOS40LTcuMmMtLjUgNC4xIDUuOCAxNi4zIDEzLjEgMjUuOGwtMy4xIDMuNmMyLjEgMy43IDQuOCA2LjIgNy42IDguOGwwIDAgMCAwYzEgLjkgMi4xIDEuOSAzLjEgMi45Yy0xMS45LTYuNSAzLjIgMTMuNyAxMS45IDI1LjJjLjggMS4xIDEuNSAyIDIuMiAyLjlsMCAwIDAgMCAwIDAgMCAwIDAgMGMxLjQgMS45IDIuNSAzLjQgMi45IDQuMWwyLjQtNC4yYy0uMyA2LjEgNC4zIDEzLjkgMTMuMSAyNC43bDcuMy0uM2MzIDYgMTQgMTYuNyAyMC43IDE3LjJsLTQuNCA1LjhjOC4xIDIuNiAxMC4zIDQuMyAxMi43IDYuMmMyLjYgMi4xIDUuNCA0LjMgMTYuMSA4LjFsLTQuMi03LjRjMy41IDMgNi4yIDUuOSA4LjggOC43bC4xIC4xYzUuMiA1LjYgOS45IDEwLjYgMTkuNyAxNS4zYzEwLjcgMy43IDE2LjYgNC43IDIyLjcgNS44Yy4zIDAgLjYgLjEgLjkgLjFjNS40IC44IDExLjIgMS44IDIwLjggNC41Yy0xLjEtLjEtMi4yLS4xLTMuMy0uMWgwYy0yLjMtLjEtNC43LS4xLTctLjFsMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwYy0xNC40LS4yLTI5LjItLjQtNDIuNy01LjJDMTA3LjggNDgwLjUgMTkuNSAzNjcuMiAyNiAyNTAuNmMtLjYtOS45LS4zLTIwLjkgMC0zMC43Yy40LTEzLjUgLjctMjQuOC0xLjYtMjguM2wxLTMuMWM1LjMtMTcuNCAxMS43LTM4LjIgMjMuOC02Mi44bC0uMS0uMnYtLjFjLjQgLjQgMy40IDMuNCA4LjgtNS44Yy44LTEuOCAxLjYtMy43IDIuNC01LjZjLjUtMS4xIC45LTIuMiAxLjQtMy4yYzIuNS02LjEgNS4xLTEyLjMgOC40LTE3LjlsMi42LS42YzEuNy0xMC4xIDE3LTIzLjggMjkuOC0zNS4ybDEuMS0xYzUuNy01LjEgMTAuNy05LjcgMTMuNi0xMy4xbC43IDQuNGMxNy0xNS45IDQ0LjYtMjcuNSA2NS42LTM2LjRsLjUtLjJjNC44LTIgOS4zLTMuOSAxMy4zLTUuN2MtMy40IDMuOCAyLjIgMi43IDEwIDFjNC44LTEgMTAuNC0yLjEgMTUuMy0yLjRsLTMuOSAyLjFjLTIuNyAxLjQtNS40IDIuOC04IDQuNmM4LjEtMiAxMS43LTEuNCAxNS43LS44bC4zIDBjMy41IC42IDcuMyAxLjIgMTQuNiAuMmMtNS42IC44LTEyLjMgMy0xMS4yIDMuOGM3LjkgLjkgMTIuOC0uMSAxNy4yLTFsLjIgMGM1LjUtMS4xIDEwLjMtMiAxOS4zIC45bC0xLTQuOGM3LjMgMi42IDEyLjcgNC4zIDE3LjUgNS44bC41IC4xYzEwIDMgMTcuNiA1LjMgMzQuMiAxNC4xYzMuMiAuMiA1LjMtLjUgNy40LTEuMmwuMSAwYzMuNi0xLjEgNy0yLjEgMTUuMiAxLjJjLjMgLjUgLjUgMSAuNyAxLjRjLjEgLjIgLjIgLjUgLjMgLjdsMCAuMWMxIDIuNiAxLjggNC42IDE0LjYgMTIuMWMxLjctLjctMi43LTQuNy02LjQtOC4yYzAgMCAwIDAtLjEtLjFjLS4yLS4xLS4zLS4zLS41LS40YzMyLjIgMTcuMyA2Ny4zIDU0LjEgNzggOTMuNWMtNi0xMS4xLTUuMi01LjUtNC4zIC41Yy42IDQgMS4yIDguMS0uMiA3LjVjNC41IDEyLjEgOC4xIDI0LjUgMTAuNCAzNy40bC0uOC0yLjktLjEtLjNjLTMuMy0xMS45LTkuNi0zNC4zLTE5LjktNDkuM2MtLjQgNC4zLTIuOCAzLjktNS4yIDMuNWwtLjEgMCAwIDBjLTMuMy0uNi02LjItMS4xLTEuOSAxMi42YzIuNiAzLjggMy4xIDIuNCAzLjUgMS4xbDAgMGMuNS0xLjUgLjktMi43IDQuNyA1LjJjLjEgNC4xIDEgOC4yIDIuMSAxMi43bDAgMCAwIDAgLjEgLjZjLjEgLjMgLjEgLjUgLjIgLjhsLjEgLjZjLjYgMi42IDEuMyA1LjQgMS44IDguNGMtMS4xLS4yLTIuMy0yLjItMy40LTQuMmMtMS40LTIuNC0yLjgtNC43LTMuNy0zLjJjMi40IDExLjUgNi41IDE3LjQgOCAxOC4zYy0uMyAuNi0uNiAuNy0xLjEgLjdjLS44IDAtMS44IC4xLTEuOSA1LjNjLjcgMTMuNyAzLjMgMTIuNSA1LjMgMTEuNmwwIDBjLjYtLjMgMS4yLS42IDEuNy0uNGMtLjYgMi41LTEuNiA1LjEtMi43IDcuOWMtMi44IDcuMS02IDE1LjQtMy40IDI2LjFjLS44LTMtMi02LTMuMS04LjlsLS4xLS40Yy0uMi0uNS0uNC0xLS42LTEuNWwwIDBjLS4zLS44LS42LTEuNi0uOS0yLjNjLS42IDQuNC0uMyA3LjctLjEgMTAuNmMwIC4yIDAgLjUgMCAuN2MuNCA1LjMgLjcgMTAtMyAxOS45YzQuMy0xNC4yIDMuOC0yNi45LS4yLTIwLjhjMSAxMC45LTMuNyAyMC40LTggMjguOWwtLjEgLjJjLTMuNiA3LjEtNi44IDEzLjUtNS45IDE5LjNsLTUuMi03LjFjLTcuNSAxMC45LTcgMTMuMy02LjUgMTUuNWwwIC4xYy41IDEuOSAxIDMuOC0zLjQgMTAuOGMxLjctMi45IDEuMy0zLjYgMS00LjJsMCAwYy0uNC0uOC0uNy0xLjUgMS43LTUuMWMtMS42IC4xLTUuNSAzLjktMTAuMSA4LjVjLTMuOSAzLjktOC41IDguNC0xMi44IDExLjhjLTM3LjUgMzAuMS04Mi4zIDM0LTEyNS42IDE3LjhjLjItMS0uMi0yLjEtMy4xLTQuMWMtMzYuOC0yOC4yLTU4LjUtNTIuMS01MC45LTEwNy41YzIuMS0xLjYgMy42LTUuOCA1LjMtMTAuOGwwIDAgMCAwIC4yLS40IC4xLS4zIDAtLjFjMi45LTguNCA2LjUtMTguOCAxNC4zLTIzLjhjNy44LTE3LjMgMzEuMy0zMy4zIDU2LjQtMzMuN2MyNS42LTEuNCA0Ny4yIDEzLjcgNTguMSAyNy45Yy0xOS44LTE4LjQtNTIuMS0yNC03OS43LTEwLjRjLTI4LjIgMTIuNy00NSA0My44LTQyLjUgNzQuN2MuMy0uNCAuNi0uNiAuOS0uOGwwIDBzMCAwIDAgMGMwIDAgLjEtLjEgLjEtLjFsLjEtLjFjLjYtLjUgMS4xLS45IDEuNC0zLjNjLS45IDYwLjIgNjQuOCAxMDQuMyAxMTIuMSA4MmwuNiAxLjNjMTIuNy0zLjUgMTUuOS02LjUgMjAuMy0xMC43bC4xLS4xIDAgMGMyLjItMi4xIDQuNy00LjUgOC45LTcuM2MtLjMgLjctMS4zIDEuNy0yLjQgMi43Yy0yLjIgMi4xLTQuNiA0LjUtMS42IDQuNmM1LTEuMyAxOC41LTEzLjQgMjguNS0yMi4zbDAgMCAwIDBjLjYtLjUgMS4yLTEgMS43LTEuNWMxLjUtMS4zIDIuOC0yLjUgNC0zLjZsMCAwIC4zLS4zYzEuOS00LjIgMS42LTUuNiAxLjMtN2wwLS4xYy0uNC0xLjYtLjgtMy4zIDIuNC05LjZsNy4zLTMuN2MuOC0yLjEgMS41LTQuMSAyLjItNmMuMi0uNiAuNS0xLjIgLjctMS44bC0uNC0uMnpNMzQ5LjMgMzQuM2wtLjItLjEgLjIgLjEgMCAwek0yNDcuOCAzMzQuMWMtNi0zLTEzLjctOC45LTE0LjgtMTEuNGwtLjQgLjNjLS4zIC42LS41IDEuMy0uMiAyLjJjLTEyLjItNS43LTIzLjQtMTQuMy0zMi42LTI0LjljNC45IDcuMSAxMC4xIDE0LjEgMTcgMTkuNWMtNi45LTIuMy0xNS4xLTExLjgtMjEuNi0xOS4zbC0uMS0uMWMtNC4zLTUtNy45LTkuMS05LjctOS41YzE5LjggMzUuNSA4MC41IDYyLjMgMTEyLjMgNDljLTE0LjcgLjUtMzMuNCAuMy00OS45LTUuOHptNzkuMy0xMTkuN2wtLjEtLjJjLS41LTEuNS0xLjEtMy4xLTEuNy0zLjRjMS40LTUuOCA1LjQtMTAuNyA0LjQgNC42Yy0xIDMuOC0xLjggMS41LTIuNi0xem0tNC4yIDIyLjJjLTEuMyA3LjktNSAxNS41LTEwLjEgMjIuNWMuMi0yLTEuMi0yLjQtMi42LTIuOGwwIDBjLTIuOS0uOC01LjktMS42IDUuNi0xNi4xYy0uNSAxLjktMi4xIDQuNi0zLjcgNy4zbDAgMCAwIDAtLjMgLjRjLTMuNiA1LjktNi43IDExIDQgNC4zbDEtMS44YzIuNi00LjUgNS04LjggNi0xMy44aC4xem0tNTUuNiAzMy45YzcuMSAuNiAxNC4xIC42IDIxLTEuMWMtMi41IDIuNC01LjIgNC44LTguMyA3LjJjLTExLjEtMS43LTIxLjItNi0xMi43LTYuMXptLTkyLjYgMTEuNmMzLjYgNy4xIDYuNCAxMS41IDkgMTUuN2wuMSAuMmMyLjMgMy43IDQuNCA3LjEgNi44IDExLjdjLTUuMS00LjItOC43LTkuNS0xMi41LTE1bC0uMy0uNWMtMS40LTIuMS0yLjgtNC4yLTQuNC02LjJsMS4yLTUuOWguMXptNy41LTkuNmMxLjYgMy4zIDMuMiA2LjQgNS43IDkuMWwyLjYgNy43LTEuMy0yLjFjLTMuMi01LjMtNi4zLTEwLjYtOC0xNi43bC44IDEuNiAuMiAuNHptMjM4LjktNDEuNmMtMi4zIDE3LjQtNy43IDM0LjYtMTYgNTAuM2M3LjYtMTQuOSAxMi41LTMwLjkgMTQuOC00Ny4ybDEuMi0zLjF6TTM1LjYgMTEwLjZjLjQgLjggMS40IC41IDIuMyAuM2MxLjktLjUgMy42LS45LS4xIDcuNmMtLjUgLjMtMSAuNy0xLjUgMWwwIDAgMCAwYy0xLjQgLjktMi44IDEuOS0zLjkgM2MxLjktMy44IDMuNS03LjQgMy4yLTExLjl6TTI1LjMgMTUyLjNjLS43IDMuNy0xLjUgNy45LTMuNCAxMy45Yy4yLTEuOSAwLTMuNS0uMi00LjlsMC0uMWMtLjQtMy40LS43LTYuMyA0LjMtMTIuOGMtLjMgMS4yLS41IDIuNS0uNyAzLjh2LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURlZXplciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTEuNDYsMjQ0LjcxSDU3NlYxNzJINDUxLjQ2Wm0wLTE3My44OXY3Mi42N0g1NzZWNzAuODJabTAsMjc1LjA2SDU3NlYyNzMuMkg0NTEuNDZaTTAsNDQ3LjA5SDEyNC41NFYzNzQuNDJIMFptMTUwLjQ3LDBIMjc1VjM3NC40MkgxNTAuNDdabTE1MC41MiwwSDQyNS41M1YzNzQuNDJIMzAxWm0xNTAuNDcsMEg1NzZWMzc0LjQySDQ1MS40NlpNMzAxLDM0NS44OEg0MjUuNTNWMjczLjJIMzAxWm0tMTUwLjUyLDBIMjc1VjI3My4ySDE1MC40N1ptMC0xMDEuMTdIMjc1VjE3MkgxNTAuNDdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURlbGljaW91cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDYuNSA2OGMtLjQtMS41LS45LTMtMS40LTQuNS0uOS0yLjUtMi00LjgtMy4zLTcuMS0xLjQtMi40LTMtNC44LTQuNy02LjktMi4xLTIuNS00LjQtNC44LTYuOS02LjgtMS4xLS45LTIuMi0xLjctMy4zLTIuNS0xLjMtLjktMi42LTEuNy00LTIuNC0xLjgtMS0zLjYtMS44LTUuNS0yLjUtMS43LS43LTMuNS0xLjMtNS40LTEuNy0zLjgtMS03LjktMS41LTEyLTEuNUg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDQuMS41IDguMiAxLjUgMTIgMiA3LjcgNS44IDE0LjYgMTEgMjAuMyAxIDEuMSAyLjEgMi4yIDMuMyAzLjMgNS43IDUuMiAxMi42IDkgMjAuMyAxMSAzLjggMSA3LjkgMS41IDEyIDEuNWgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjLS4xLTQuMS0uNi04LjItMS42LTEyek00MTYgNDMyYzAgOC44LTcuMiAxNi0xNiAxNkgyMjRWMjU2SDMyVjgwYzAtOC44IDcuMi0xNiAxNi0xNmgxNzZ2MTkyaDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGVwbG95ZG9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4Mi4yIDEzNmg1MS43djIzOS42aC01MS43di0yMC43Yy0xOS44IDI0LjgtNTIuOCAyNC4xLTczLjggMTQuNy0yNi4yLTExLjctNDQuMy0zOC4xLTQ0LjMtNzEuOCAwLTI5LjggMTQuOC01Ny45IDQzLjMtNzAuOCAyMC4yLTkuMSA1Mi43LTEwLjYgNzQuOCAxMi45VjEzNnptLTY0LjcgMTYxLjhjMCAxOC4yIDEzLjYgMzMuNSAzMy4yIDMzLjUgMTkuOCAwIDMzLjItMTYuNCAzMy4yLTMyLjkgMC0xNy4xLTEzLjctMzMuMi0zMy4yLTMzLjItMTkuNiAwLTMzLjIgMTYuNC0zMy4yIDMyLjZ6TTE4OC41IDEzNmg1MS43djIzOS42aC01MS43di0yMC43Yy0xOS44IDI0LjgtNTIuOCAyNC4xLTczLjggMTQuNy0yNi4yLTExLjctNDQuMy0zOC4xLTQ0LjMtNzEuOCAwLTI5LjggMTQuOC01Ny45IDQzLjMtNzAuOCAyMC4yLTkuMSA1Mi43LTEwLjYgNzQuOCAxMi45VjEzNnptLTY0LjcgMTYxLjhjMCAxOC4yIDEzLjYgMzMuNSAzMy4yIDMzLjUgMTkuOCAwIDMzLjItMTYuNCAzMy4yLTMyLjkgMC0xNy4xLTEzLjctMzMuMi0zMy4yLTMzLjItMTkuNyAwLTMzLjIgMTYuNC0zMy4yIDMyLjZ6TTQ0OCA5NmMxNy41IDAgMzIgMTQuNCAzMiAzMnYyNTZjMCAxNy41LTE0LjQgMzItMzIgMzJINjRjLTE3LjUgMC0zMi0xNC40LTMyLTMyVjEyOGMwLTE3LjUgMTQuNC0zMiAzMi0zMmgzODRtMC0zMkg2NEMyOC44IDY0IDAgOTIuOCAwIDEyOHYyNTZjMCAzNS4yIDI4LjggNjQgNjQgNjRoMzg0YzM1LjIgMCA2NC0yOC44IDY0LTY0VjEyOGMwLTM1LjItMjguOC02NC02NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGVza3BybyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDUuOSA1MTJsMzEuMS0zOC40YzEyLjMtLjIgMjUuNi0xLjQgMzYuNS02LjYgMzguOS0xOC42IDM4LjQtNjEuOSAzOC4zLTYzLjgtLjEtNS0uOC00LjQtMjguOS0zNy40SDM2MmMtLjIgNTAuMS03LjMgNjguNS0xMC4yIDc1LjctOS40IDIzLjctNDMuOSA2Mi44LTk1LjIgNjkuNC04LjcgMS4xLTMyLjggMS4yLTUwLjcgMS4xem0yMDAuNC0xNjcuN2MzOC42IDAgNTguNS0xMy42IDczLjctMzAuOWwtMTc1LjUtLjMtMTcuNCAzMS4zIDExOS4yLS4xem0tNDMuNi0yMjMuOXYxNjguM2gtNzMuNWwtMzIuNyA1NS41SDI1MGMtNTIuMyAwLTU4LjEtNTYuNS01OC4zLTU4LjktMS4yLTEzLjItMjEuMy0xMS42LTIwLjEgMS44IDEuNCAxNS44IDguOCA0MCAyNi40IDU3LjFoLTkxYy0yNS41IDAtMTEwLjgtMjYuOC0xMDctMTE0VjE2LjlDMCAuOSA5LjcuMyAxNSAuMWg4MmMuMiAwIC4zLjEuNS4xIDQuMy0uNCA1MC4xLTIuMSA1MC4xIDQzLjcgMCAxMy4zIDIwLjIgMTMuNCAyMC4yIDAgMC0xOC4yLTUuNS0zMi44LTE1LjgtNDMuN2g4NC4yYzEwOC43LS40IDEyNi41IDc5LjQgMTI2LjUgMTIwLjJ6bS0xMzIuNSA1Nmw2NCAyOS4zYzEzLjMtNDUuNS00Mi4yLTcxLjctNjQtMjkuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGV2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyMC4xMiAyMDguMjljLTMuODgtMi45LTcuNzctNC4zNS0xMS42NS00LjM1SDkxLjAzdjEwNC40N2gxNy40NWMzLjg4IDAgNy43Ny0xLjQ1IDExLjY1LTQuMzUgMy44OC0yLjkgNS44Mi03LjI1IDUuODItMTMuMDZ2LTY5LjY1Yy0uMDEtNS44LTEuOTYtMTAuMTYtNS44My0xMy4wNnpNNDA0LjEgMzJINDMuOUMxOS43IDMyIC4wNiA1MS41OSAwIDc1Ljh2MzYwLjRDLjA2IDQ2MC40MSAxOS43IDQ4MCA0My45IDQ4MGgzNjAuMmMyNC4yMSAwIDQzLjg0LTE5LjU5IDQzLjktNDMuOFY3NS44Yy0uMDYtMjQuMjEtMTkuNy00My44LTQzLjktNDMuOHpNMTU0LjIgMjkxLjE5YzAgMTguODEtMTEuNjEgNDcuMzEtNDguMzYgNDcuMjVoLTQ2LjRWMTcyLjk4aDQ3LjM4YzM1LjQ0IDAgNDcuMzYgMjguNDYgNDcuMzcgNDcuMjhsLjAxIDcwLjkzem0xMDAuNjgtODguNjZIMjAxLjZ2MzguNDJoMzIuNTd2MjkuNTdIMjAxLjZ2MzguNDFoNTMuMjl2MjkuNTdoLTYyLjE4Yy0xMS4xNi4yOS0yMC40NC04LjUzLTIwLjcyLTE5LjY5VjE5My43Yy0uMjctMTEuMTUgOC41Ni0yMC40MSAxOS43MS0yMC42OWg2My4xOWwtLjAxIDI5LjUyem0xMDMuNjQgMTE1LjI5Yy0xMy4yIDMwLjc1LTM2Ljg1IDI0LjYzLTQ3LjQ0IDBsLTM4LjUzLTE0NC44aDMyLjU3bDI5LjcxIDExMy43MiAyOS41Ny0xMTMuNzJoMzIuNThsLTM4LjQ2IDE0NC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZXZpYW50YXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA5My4ybC05OC4yIDE3OS4xIDcuNCA5LjVIMzIwdjEyNy43SDE1OS4xbC0xMy41IDkuMi00My43IDg0Yy0uMyAwLTguNiA4LjYtOS4yIDkuMkgwdi05My4ybDkzLjItMTc5LjQtNy40LTkuMkgwVjEwMi41aDE1NmwxMy41LTkuMiA0My43LTg0Yy4zIDAgOC42LTguNiA5LjItOS4ySDMyMHY5My4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjM4IDMwMS4yaDU4LjdMMzE5IDI3MWgtNTguN0wyMzggMzAxLjJ6TTAgMjgyLjl2Ni40aDgxLjhsNC43LTYuNEgwek0xNzIuOSAyNzFjLTguNyAwLTYtMy42LTQuNi01LjUgMi44LTMuOCA3LjYtMTAuNCAxMC40LTE0LjEgMi44LTMuNyAyLjgtNS45LTIuOC01LjloLTUxbC00MS4xIDU1LjhoMTAwLjFjMzMuMSAwIDUxLjUtMjIuNSA1Ny4yLTMwLjNoLTY4LjJ6bTMxNy41LTYuOWwzOS4zLTUzLjRoLTYyLjJsLTM5LjMgNTMuNGg2Mi4yek05NS4zIDI3MUgwdjYuNGg5MC42bDQuNy02LjR6bTExMS0yNi42Yy0yLjggMy44LTcuNSAxMC40LTEwLjMgMTQuMi0xLjQgMi00LjEgNS41IDQuNiA1LjVoNDUuNnM3LjMtMTAgMTMuNS0xOC40YzguNC0xMS40LjctMzUtMjkuMi0zNUgxMTIuNmwtMjAuNCAyNy44aDExMS40YzUuNiAwIDUuNSAyLjIgMi43IDUuOXpNMCAzMDEuMmg3My4xbDQuNy02LjRIMHY2LjR6bTMyMyAwaDU4LjdMNDA0IDI3MWgtNTguN2MtLjEgMC0yMi4zIDMwLjItMjIuMyAzMC4yem0yMjIgLjFoOTV2LTYuNGgtOTAuM2wtNC43IDYuNHptMjIuMy0zMC4zbC00LjcgNi40SDY0MFYyNzFoLTcyLjd6bS0xMy41IDE4LjNINjQwdi02LjRoLTgxLjVsLTQuNyA2LjR6bS0xNjQuMi03OC42bC0yMi41IDMwLjZoLTI2LjJsMjIuNS0zMC42aC01OC43bC0zOS4zIDUzLjRINDA5bDM5LjMtNTMuNGgtNTguN3ptMzMuNSA2MC4zcy00LjMgNS45LTYuNCA4LjdjLTcuNCAxMC0uOSAyMS42IDIzLjIgMjEuNmg5NC4zbDIyLjMtMzAuM0g0MjMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlhc3BvcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjUxLjY0IDM1NC41NWMtMS40IDAtODggMTE5LjktODguNyAxMTkuOVM3Ni4zNCA0MTQgNzYgNDEzLjI1czg2LjYtMTI1LjcgODYuNi0xMjcuNGMwLTIuMi0xMjkuNi00NC0xMzcuNi00Ny4xLTEuMy0uNSAzMS40LTEwMS44IDMxLjctMTAyLjEuNi0uNyAxNDQuNCA0NyAxNDUuNSA0NyAuNCAwIC45LS42IDEtMS4zLjQtMiAxLTE0OC42IDEuNy0xNDkuNi44LTEuMiAxMDQuNS0uNyAxMDUuMS0uMyAxLjUgMSAzLjUgMTU2LjEgNi4xIDE1Ni4xIDEuNCAwIDEzOC43LTQ3IDEzOS4zLTQ2LjMuOC45IDMxLjkgMTAyLjIgMzEuNSAxMDIuNi0uOS45LTE0MC4yIDQ3LjEtMTQwLjYgNDguOC0uMyAxLjQgODIuOCAxMjIuMSA4Mi41IDEyMi45cy04NS41IDYzLjUtODYuMyA2My41Yy0xLS4yLTg5LTEyNS41LTkwLjktMTI1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpZ2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODEuNyAxNzIuM0gwdjE3NC40aDEzMi43Vjk2aC01MXY3Ni4zem0wIDEzMy40SDUwLjl2LTkyLjNoMzAuOHY5Mi4zem0yOTcuMi0xMzMuNHYxNzQuNGg4MS44djI4LjVoLTgxLjhWNDE2SDUxMlYxNzIuM0gzNzguOXptODEuOCAxMzMuNGgtMzAuOHYtOTIuM2gzMC44djkyLjN6bS0yMzUuNiA0MWg4Mi4xdjI4LjVoLTgyLjFWNDE2aDEzMy4zVjE3Mi4zSDIyNS4xdjE3NC40em01MS4yLTEzMy4zaDMwLjh2OTIuM2gtMzAuOHYtOTIuM3pNMTUzLjMgOTZoNTEuM3Y1MWgtNTEuM1Y5NnptMCA3Ni4zaDUxLjN2MTc0LjRoLTUxLjNWMTcyLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpZ2l0YWxPY2VhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04NyA0ODEuOGg3My43di03My42SDg3ek0yNS40IDM0Ni42djYxLjZIODd2LTYxLjZ6bTQ2Ni4yLTE2OS43Yy0yMy03NC4yLTgyLjQtMTMzLjMtMTU2LjYtMTU2LjZDMTY0LjktMzIuOCA4IDkzLjcgOCAyNTUuOWg5NS44YzAtMTAxLjggMTAxLTE4MC41IDIwOC4xLTE0MS43IDM5LjcgMTQuMyA3MS41IDQ2LjEgODUuOCA4NS43IDM5LjEgMTA3LTM5LjcgMjA3LjgtMTQxLjQgMjA4di4zaC0uM1Y1MDRjMTYyLjYgMCAyODguOC0xNTYuOCAyMzUuNi0zMjcuMXptLTIzNS4zIDIzMXYtOTUuM2gtOTUuNnY5NS42SDI1NnYtLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpc2NvcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI0LjUzMSw2OS44MzZhMS41LDEuNSwwLDAsMC0uNzY0LS43QTQ4NS4wNjUsNDg1LjA2NSwwLDAsMCw0MDQuMDgxLDMyLjAzYTEuODE2LDEuODE2LDAsMCwwLTEuOTIzLjkxLDMzNy40NjEsMzM3LjQ2MSwwLDAsMC0xNC45LDMwLjYsNDQ3Ljg0OCw0NDcuODQ4LDAsMCwwLTEzNC40MjYsMCwzMDkuNTQxLDMwOS41NDEsMCwwLDAtMTUuMTM1LTMwLjYsMS44OSwxLjg5LDAsMCwwLTEuOTI0LS45MUE0ODMuNjg5LDQ4My42ODksMCwwLDAsMTE2LjA4NSw2OS4xMzdhMS43MTIsMS43MTIsMCwwLDAtLjc4OC42NzZDMzkuMDY4LDE4My42NTEsMTguMTg2LDI5NC42OSwyOC40Myw0MDQuMzU0YTIuMDE2LDIuMDE2LDAsMCwwLC43NjUsMS4zNzVBNDg3LjY2Niw0ODcuNjY2LDAsMCwwLDE3Ni4wMiw0NzkuOTE4YTEuOSwxLjksMCwwLDAsMi4wNjMtLjY3NkEzNDguMiwzNDguMiwwLDAsMCwyMDguMTIsNDMwLjRhMS44NiwxLjg2LDAsMCwwLTEuMDE5LTIuNTg4LDMyMS4xNzMsMzIxLjE3MywwLDAsMS00NS44NjgtMjEuODUzLDEuODg1LDEuODg1LDAsMCwxLS4xODUtMy4xMjZjMy4wODItMi4zMDksNi4xNjYtNC43MTEsOS4xMDktNy4xMzdhMS44MTksMS44MTksMCwwLDEsMS45LS4yNTZjOTYuMjI5LDQzLjkxNywyMDAuNDEsNDMuOTE3LDI5NS41LDBhMS44MTIsMS44MTIsMCwwLDEsMS45MjQuMjMzYzIuOTQ0LDIuNDI2LDYuMDI3LDQuODUxLDkuMTMyLDcuMTZhMS44ODQsMS44ODQsMCwwLDEtLjE2MiwzLjEyNiwzMDEuNDA3LDMwMS40MDcsMCwwLDEtNDUuODksMjEuODMsMS44NzUsMS44NzUsMCwwLDAtMSwyLjYxMSwzOTEuMDU1LDM5MS4wNTUsMCwwLDAsMzAuMDE0LDQ4LjgxNSwxLjg2NCwxLjg2NCwwLDAsMCwyLjA2My43QTQ4Ni4wNDgsNDg2LjA0OCwwLDAsMCw2MTAuNyw0MDUuNzI5YTEuODgyLDEuODgyLDAsMCwwLC43NjUtMS4zNTJDNjIzLjcyOSwyNzcuNTk0LDU5MC45MzMsMTY3LjQ2NSw1MjQuNTMxLDY5LjgzNlpNMjIyLjQ5MSwzMzcuNThjLTI4Ljk3MiwwLTUyLjg0NC0yNi41ODctNTIuODQ0LTU5LjIzOVMxOTMuMDU2LDIxOS4xLDIyMi40OTEsMjE5LjFjMjkuNjY1LDAsNTMuMzA2LDI2LjgyLDUyLjg0Myw1OS4yMzlDMjc1LjMzNCwzMTAuOTkzLDI1MS45MjQsMzM3LjU4LDIyMi40OTEsMzM3LjU4Wm0xOTUuMzgsMGMtMjguOTcxLDAtNTIuODQzLTI2LjU4Ny01Mi44NDMtNTkuMjM5UzM4OC40MzcsMjE5LjEsNDE3Ljg3MSwyMTkuMWMyOS42NjcsMCw1My4zMDcsMjYuODIsNTIuODQ0LDU5LjIzOUM0NzAuNzE1LDMxMC45OTMsNDQ3LjUzOCwzMzcuNTgsNDE3Ljg3MSwzMzcuNThaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpc2NvdXJzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjUuOSAzMkMxMDMuMyAzMiAwIDEzMC41IDAgMjUyLjEgMCAyNTYgLjEgNDgwIC4xIDQ4MGwyMjUuOC0uMmMxMjIuNyAwIDIyMi4xLTEwMi4zIDIyMi4xLTIyMy45QzQ0OCAxMzQuMyAzNDguNiAzMiAyMjUuOSAzMnpNMjI0IDM4NGMtMTkuNCAwLTM3LjktNC4zLTU0LjQtMTIuMUw4OC41IDM5MmwyMi45LTc1Yy05LjgtMTguMS0xNS40LTM4LjktMTUuNC02MSAwLTcwLjcgNTcuMy0xMjggMTI4LTEyOHMxMjggNTcuMyAxMjggMTI4LTU3LjMgMTI4LTEyOCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvY2h1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDE2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTcuOSAxNjBIMjU2VjE5LjZMMzk3LjkgMTYwek0zMDQgMTkydjEzMGMwIDY2LjgtMzYuNSAxMDAuMS0xMTMuMyAxMDAuMUg5NlY4NC44aDk0LjdjMTIgMCAyMy4xLjggMzMuMSAyLjV2LTg0QzIxMi45IDEuMSAyMDEuNCAwIDE4OS4yIDBIMHY1MTJoMTg5LjJDMzI5LjcgNTEyIDQwMCA0NDcuNCA0MDAgMzE4LjFWMTkyaC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9ja2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0OS45IDIzNi4zaC02Ni4xdi01OS40aDY2LjF2NTkuNHptMC0yMDQuM2gtNjYuMXY2MC43aDY2LjFWMzJ6bTc4LjIgMTQ0LjhIMzYydjU5LjRoNjYuMXYtNTkuNHptLTE1Ni4zLTcyLjFoLTY2LjF2NjAuMWg2Ni4xdi02MC4xem03OC4xIDBoLTY2LjF2NjAuMWg2Ni4xdi02MC4xem0yNzYuOCAxMDBjLTE0LjQtOS43LTQ3LjYtMTMuMi03My4xLTguNC0zLjMtMjQtMTYuNy00NC45LTQxLjEtNjMuN2wtMTQtOS4zLTkuMyAxNGMtMTguNCAyNy44LTIzLjQgNzMuNi0zLjcgMTAzLjgtOC43IDQuNy0yNS44IDExLjEtNDguNCAxMC43SDIuNGMtOC43IDUwLjggNS44IDExNi44IDQ0IDE2Mi4xIDM3LjEgNDMuOSA5Mi43IDY2LjIgMTY1LjQgNjYuMiAxNTcuNCAwIDI3My45LTcyLjUgMzI4LjQtMjA0LjIgMjEuNC40IDY3LjYuMSA5MS4zLTQ1LjIgMS41LTIuNSA2LjYtMTMuMiA4LjUtMTcuMWwtMTMuMy04Ljl6bS01MTEuMS0yNy45aC02NnY1OS40aDY2LjF2LTU5LjR6bTc4LjEgMGgtNjYuMXY1OS40aDY2LjF2LTU5LjR6bTc4LjEgMGgtNjYuMXY1OS40aDY2LjF2LTU5LjR6bS03OC4xLTcyLjFoLTY2LjF2NjAuMWg2Ni4xdi02MC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcmFmdDJEaWdpdGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAzOTguMWwtMTQ0LTgyLjJ2NjQuN2gtOTEuM2MzMC44LTM1IDgxLjgtOTUuOSAxMTEuOC0xNDkuMyAzNS4yLTYyLjYgMTYuMS0xMjMuNC0xMi44LTE1My4zLTQuNC00LjYtNjIuMi02Mi45LTE2Ni00MS4yLTU5LjEgMTIuNC04OS40IDQzLjQtMTA0LjMgNjcuMy0xMy4xIDIwLjktMTcgMzkuOC0xOC4yIDQ3LjctNS41IDMzIDE5LjQgNjcuMSA1Ni43IDY3LjEgMzEuNyAwIDU3LjMtMjUuNyA1Ny4zLTU3LjQgMC0yNy4xLTE5LjctNTIuMS00OC01Ni44IDEuOC03LjMgMTcuNy0yMS4xIDI2LjMtMjQuNyA0MS4xLTE3LjMgNzggNS4yIDgzLjMgMzMuNSA4LjMgNDQuMy0zNy4xIDkwLjQtNjkuNyAxMjcuNkM4NC41IDMyOC4xIDE4LjMgMzk2LjggMCA0MTUuOWwzMzYtLjFWNDgwek0zNjkuOSAzNzFsNDcuMSAyNy4yLTQ3LjEgMjcuMnpNMTM0LjIgMTYxLjRjMCAxMi40LTEwIDIyLjQtMjIuNCAyMi40cy0yMi40LTEwLTIyLjQtMjIuNCAxMC0yMi40IDIyLjQtMjIuNCAyMi40IDEwLjEgMjIuNCAyMi40ek04Mi41IDM4MC41YzI1LjYtMjcuNCA5Ny43LTEwNC43IDE1MC44LTE2OS45IDM1LjEtNDMuMSA0MC4zLTgyLjQgMjguNC0xMTIuNy03LjQtMTguOC0xNy41LTMwLjItMjQuMy0zNS43IDQ1LjMgMi4xIDY4IDIzLjQgODIuMiAzOC4zIDAgMCA0Mi40IDQ4LjIgNS44IDExMy4zLTM3IDY1LjktMTEwLjkgMTQ3LjUtMTI4LjUgMTY2Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyaWJiYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4yNTIgOCA4IDExOS4yNTIgOCAyNTZzMTExLjI1MiAyNDggMjQ4IDI0OCAyNDgtMTExLjI1MiAyNDgtMjQ4UzM5Mi43NDggOCAyNTYgOHptMTYzLjk3IDExNC4zNjZjMjkuNTAzIDM2LjA0NiA0Ny4zNjkgODEuOTU3IDQ3LjgzNSAxMzEuOTU1LTYuOTg0LTEuNDc3LTc3LjAxOC0xNS42ODItMTQ3LjUwMi02LjgxOC01Ljc1Mi0xNC4wNDEtMTEuMTgxLTI2LjM5My0xOC42MTctNDEuNjE0IDc4LjMyMS0zMS45NzcgMTEzLjgxOC03Ny40ODIgMTE4LjI4NC04My41MjN6TTM5Ni40MjEgOTcuODdjLTMuODEgNS40MjctMzUuNjk3IDQ4LjI4Ni0xMTEuMDIxIDc2LjUxOS0zNC43MTItNjMuNzc2LTczLjE4NS0xMTYuMTY4LTc5LjA0LTEyNC4wMDggNjcuMTc2LTE2LjE5MyAxMzcuOTY2IDEuMjcgMTkwLjA2MSA0Ny40ODl6bS0yMzAuNDgtMzMuMjVjNS41ODUgNy42NTkgNDMuNDM4IDYwLjExNiA3OC41MzcgMTIyLjUwOS05OS4wODcgMjYuMzEzLTE4Ni4zNiAyNS45MzQtMTk1LjgzNCAyNS44MDlDNjIuMzggMTQ3LjIwNSAxMDYuNjc4IDkyLjU3MyAxNjUuOTQxIDY0LjYyek00NC4xNyAyNTYuMzIzYzAtMi4xNjYuMDQzLTQuMzIyLjEwOC02LjQ3MyA5LjI2OC4xOSAxMTEuOTIgMS41MTMgMjE3LjcwNi0zMC4xNDYgNi4wNjQgMTEuODY4IDExLjg1NyAyMy45MTUgMTcuMTc0IDM1Ljk0OS03Ni41OTkgMjEuNTc1LTE0Ni4xOTQgODMuNTI3LTE4MC41MzEgMTQyLjMwNkM2NC43OTQgMzYwLjQwNSA0NC4xNyAzMTAuNzMgNDQuMTcgMjU2LjMyM3ptODEuODA3IDE2Ny4xMTNjMjIuMTI3LTQ1LjIzMyA4Mi4xNzgtMTAzLjYyMiAxNjcuNTc5LTEzMi43NTYgMjkuNzQgNzcuMjgzIDQyLjAzOSAxNDIuMDUzIDQ1LjE4OSAxNjAuNjM4LTY4LjExMiAyOS4wMTMtMTUwLjAxNSAyMS4wNTMtMjEyLjc2OC0yNy44ODJ6bTI0OC4zOCA4LjQ4OWMtMi4xNzEtMTIuODg2LTEzLjQ0Ni03NC44OTctNDEuMTUyLTE1MS4wMzMgNjYuMzgtMTAuNjI2IDEyNC43IDYuNzY4IDEzMS45NDcgOS4wNTUtOS40NDIgNTguOTQxLTQzLjI3MyAxMDkuODQ0LTkwLjc5NSAxNDEuOTc4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcm9wYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MjggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2NC40IDExNi4zbC0xMzIgODQuMyAxMzIgODQuMy0xMzIgODQuM0wwIDI4NC4xbDEzMi4zLTg0LjNMMCAxMTYuMyAxMzIuMyAzMmwxMzIuMSA4NC4zek0xMzEuNiAzOTUuN2wxMzItODQuMyAxMzIgODQuMy0xMzIgODQuMy0xMzItODQuM3ptMTMyLjgtMTExLjZsMTMyLTg0LjMtMTMyLTgzLjZMMzk1LjcgMzIgNTI4IDExNi4zbC0xMzIuMyA4NC4zTDUyOCAyODQuOGwtMTMyLjMgODQuMy0xMzEuMy04NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJ1cGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMy45NzMsMTA4LjEzNkMyNjguMiw3Mi40NTksMjM0LjE4NywzOC4zNSwyMjQuMDQ3LDBjLTkuOTU3LDM4LjM1LTQ0LjI1LDcyLjQ1OS04MC4wMTksMTA4LjEzNkM5MC40NjcsMTYxLjcsMjkuNzE2LDIyMi4zNTYsMjkuNzE2LDMxMy40MzZjLTIuMzM3LDEwNy4zLDgyLjc1MiwxOTYuMTgsMTkwLjA1MywxOTguNTE3UzQxNS45NDgsNDI5LjIsNDE4LjI4NSwzMjEuOXEuMDkxLTQuMjMxLDAtOC40NjRDNDE4LjI4NSwyMjIuMzU2LDM1Ny41MzQsMTYxLjcsMzAzLjk3MywxMDguMTM2Wm0tMTc0LjMyNiwyMjNhMTMwLjI4MiwxMzAuMjgyLDAsMCwwLTE1LjIxMSwyNC4xNTMsNC45NzgsNC45NzgsMCwwLDEtMy4zMTksMi43NjZoLTEuNjU5Yy00LjMzMywwLTkuMjE5LTguNDgxLTkuMjE5LTguNDgxaDBjLTEuMjktMi4wMjgtMi40ODktNC4xNDktMy42ODctNi4zNjFsLS44My0xLjc1MmMtMTEuMjQ3LTI1LjcyLTEuNDc1LTYyLjMxOC0xLjQ3NS02Mi4zMThoMGExNjAuNTg1LDE2MC41ODUsMCwwLDEsMjMuMjMxLTQ5Ljg3M0EyOTAuOCwyOTAuOCwwLDAsMSwxMzguNSwyMDEuNjEzbDkuMjE5LDkuMjE5LDQzLjUxMiw0NC40MzRhNC45NzksNC45NzksMCwwLDEsMCw2LjYzOEwxNDUuNzgsMzEyLjMzaDBabTk2LjYxMiwxMjcuMzExYTY3LjIsNjcuMiwwLDAsMS00OS43ODEtMTExLjkxNWMxNC4yLTE2Ljg3MSwzMS41MjgtMzMuNDY0LDUwLjMzNC01NS4zMTMsMjIuMzA5LDIzLjc4NSwzNi44NzUsNDAuMSw1MS4xNjQsNTcuOTg2YTI4LjQxMywyOC40MTMsMCwwLDEsMi45NSw0LjQyNSw2NS45MDUsNjUuOTA1LDAsMCwxLDExLjk4NCwzNy45ODEsNjYuNjUxLDY2LjY1MSwwLDAsMS02Ni40NjYsNjYuODM2Wk0zNTIuMzcxLDM1MS42aDBhNy43NDMsNy43NDMsMCwwLDEtNi4xNzYsNS4zNDdIMzQ0LjlhMTEuMjQ5LDExLjI0OSwwLDAsMS02LjI2OS01LjA3aDBhMzQ4LjIxLDM0OC4yMSwwLDAsMC0zOS40NTYtNDguOTUyTDI4MS4zODcsMjg0LjQ5LDIyMi4zLDIyMy4xODVhNDk3Ljg4OCw0OTcuODg4LDAsMCwxLTM1LjQtMzYuMzIyLDEyLjAzMywxMi4wMzMsMCwwLDAtLjkyMi0xLjM4MiwzNS40LDM1LjQsMCwwLDEtNC43LTkuMjE5VjE3NC41MWEzMS4zNDYsMzEuMzQ2LDAsMCwxLDkuMjE4LTI3LjY1NmMxMS40MzItMTEuNDMxLDIyLjk1NS0yMi45NTQsMzMuODMzLTM0LjkzOSwxMS45ODQsMTMuMjc1LDI0LjgsMjYsMzcuNDI4LDM4LjYyN2gwYTUzMC45OTEsNTMwLjk5MSwwLDAsMSw2OS42LDc5LjEsMTQ3LjQ5NCwxNDcuNDk0LDAsMCwxLDI3LjAxMSw4My44QTEzNC4xMDksMTM0LjEwOSwwLDAsMSwzNTIuMzcxLDM1MS42WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEeWFsb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnYxMTkuMmg2NFY5NmgxMDcuMkMyODQuNiA5NiAzNTIgMTc2LjIgMzUyIDI1NS45IDM1MiAzMzIgMjkzLjQgNDE2IDE3MS4yIDQxNkgwdjY0aDE3MS4yQzMzMS45IDQ4MCA0MTYgMzY3LjMgNDE2IDI1NS45YzAtNTguNy0yMi4xLTExMy40LTYyLjMtMTU0LjNDMzA4LjkgNTYgMjQ1LjcgMzIgMTcxLjIgMzJIMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWFybHliaXJkcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuMiA0Ny41YzEuMi0xMyAyMS4zLTE0IDM2LjYtOC43LjkuMyAyNi4yIDkuNyAxOSAxNS4yLTI3LjktNy40LTU2LjQgMTguMi01NS42LTYuNXptLTIwMSA2LjljMzAuNy04LjEgNjIgMjAgNjEuMS03LjEtMS4zLTE0LjItMjMuNC0xNS4zLTQwLjItOS42LTEgLjMtMjguNyAxMC41LTIwLjkgMTYuN3pNMzE5LjQgMTYwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2IDE2LTcuMiAxNi0xNi03LjItMTYtMTYtMTZ6bS0xNTkuNyAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2IDE2LTcuMiAxNi0xNi03LjItMTYtMTYtMTZ6bTMxOC41IDE2My4yYy05LjkgMjQtNDAuNyAxMS02My45LTEuMi0xMy41IDY5LjEtNTguMSAxMTEuNC0xMjYuMyAxMjQuMi4zLjktMi0uMSAyNCAxIDMzLjYgMS40IDYzLjgtMy4xIDk3LjQtOC0xOS44LTEzLjgtMTEuNC0zNy4xLTkuOC0zOC4xIDEuNC0uOSAxNC43IDEuNyAyMS42IDExLjUgOC42LTEyLjUgMjguNC0xNC44IDMwLjItMTMuNiAxLjYgMS4xIDYuNiAyMC45LTYuOSAzNC42IDQuNy0uOSA4LjItMS42IDkuOC0yLjEgMi42LS44IDE3LjcgMTEuMyAzLjEgMTMuMy0xNC4zIDIuMy0yMi42IDUuMS00Ny4xIDEwLjgtNDUuOSAxMC43LTg1LjkgMTEuOC0xMTcuNyAxMi44bDEgMTEuNmMzLjggMTguMS0yMy40IDI0LjMtMjcuNiA2LjIuOCAxNy45LTI3LjEgMjEuOC0yOC40LTFsLS41IDUuM2MtLjcgMTguNC0yOC40IDE3LjktMjguMy0uNi03LjUgMTMuNS0yOC4xIDYuOC0yNi40LTguNWwxLjItMTIuNGMtMzYuNy45LTU5LjcgMy4xLTYxLjggMy4xLTIwLjkgMC0yMC45LTMxLjYgMC0zMS42IDIuNCAwIDI3LjcgMS4zIDYzLjIgMi44LTYxLjEtMTUuNS0xMDMuNy01NS0xMTQuOS0xMTguMi0yNSAxMi44LTU3LjUgMjYuOC02OC4yLjgtMTAuNS0yNS40IDIxLjUtNDIuNiA2Ni44LTczLjQuNy02LjYgMS42LTEzLjMgMi43LTE5LjgtMTQuNC0xOS42LTExLjYtMzYuMy0xNi4xLTYwLjQtMTYuOCAyLjQtMjMuMi05LjEtMjMuNi0yMy4xLjMtNy4zIDIuMS0xNC45IDIuNC0xNS40IDEuMS0xLjggMTAuMS0yIDEyLjctMi42IDYtMzEuNyA1MC42LTMzLjIgOTAuOS0zNC41IDE5LjctMjEuOCA0NS4yLTQxLjUgODAuOS00OC4zQzIwMy4zIDI5IDIxNS4yIDguNSAyMTYuMiA4YzEuNy0uOCAyMS4yIDQuMyAyNi4zIDIzLjIgNS4yLTguOCAxOC4zLTExLjQgMTkuNi0xMC43IDEuMS42IDYuNCAxNS00LjkgMjUuOSA0MC4zIDMuNSA3Mi4yIDI0LjcgOTYgNTAuNyAzNi4xIDEuNSA3MS44IDUuOSA3Ny4xIDM0IDIuNy42IDExLjYuOCAxMi43IDIuNi4zLjUgMi4xIDguMSAyLjQgMTUuNC0uNSAxMy45LTYuOCAyNS40LTIzLjYgMjMuMS0zLjIgMTcuMy0yLjcgMzIuOS04LjcgNDcuNyAyLjQgMTEuNyA0IDIzLjggNC44IDM2LjQgMzcgMjUuNCA3MC4zIDQyLjUgNjAuMyA2Ni45ek0yMDcuNCAxNTkuOWMuOS00NC0zNy45LTQyLjItNzguNi00MC4zLTIxLjcgMS0zOC45IDEuOS00NS41IDEzLjktMTEuNCAyMC45IDUuOSA5Mi45IDIzLjIgMTAxLjIgOS44IDQuNyA3My40IDcuOSA4Ni4zLTcuMSA4LjItOS40IDE1LTQ5LjQgMTQuNi02Ny43em01MiA1OC4zYy00LjMtMTIuNC02LTMwLjEtMTUuMy0zMi43LTItLjUtOS0uNS0xMSAwLTEwIDIuOC0xMC44IDIyLjEtMTcgMzcuMiAxNS40IDAgMTkuMyA5LjcgMjMuNyA5LjcgNC4zIDAgNi4zLTExLjMgMTkuNi0xNC4yem0xMzUuNy04NC43Yy02LjYtMTIuMS0yNC44LTEyLjktNDYuNS0xMy45LTQwLjItMS45LTc4LjItMy44LTc3LjMgNDAuMy0uNSAxOC4zIDUgNTguMyAxMy4yIDY3LjggMTMgMTQuOSA3Ni42IDExLjggODYuMyA3LjEgMTUuOC03LjYgMzYuNS03OC45IDI0LjMtMTAxLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUViYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjA2IDE4OS41bC01NC44IDEwOS45LTU0LjktMTA5LjloLTM3LjVsMTAuOSAyMC42Yy0xMS41LTE5LTM1LjktMjYtNjMuMy0yNi0zMS44IDAtNjcuOSA4LjctNzEuNSA0My4xaDMzLjdjMS40LTEzLjggMTUuNy0yMS44IDM1LTIxLjggMjYgMCA0MSA5LjYgNDEgMzN2My40Yy0xMi43IDAtMjggLjEtNDEuNy40LTQyLjQuOS02OS42IDEwLTc2LjcgMzQuNCAxLTUuMiAxLjUtMTAuNiAxLjUtMTYuMiAwLTUyLjEtMzkuNy03Ni4yLTc1LjQtNzYuMi0yMS4zIDAtNDMgNS41LTU4LjcgMjQuMnYtODAuNmgtMzIuMXYxNjkuNWMwIDEwLjMtLjYgMjIuOS0xLjEgMzMuMWgzMS41Yy43LTYuMyAxLjEtMTIuOSAxLjEtMTkuNSAxMy42IDE2LjYgMzUuNCAyNC45IDU4LjcgMjQuOSAzNi45IDAgNjQuOS0yMS45IDczLjMtNTQuMi0uNSAyLjgtLjcgNS44LS43IDkgMCAyNC4xIDIxLjEgNDUgNjAuNiA0NSAyNi42IDAgNDUuOC01LjcgNjEuOS0yNS41IDAgNi42LjMgMTMuMyAxLjEgMjAuMmgyOS44Yy0uNy04LjItMS0xNy41LTEtMjYuOHYtNjUuNmMwLTkuMy0xLjctMTcuMi00LjgtMjMuOGw2MS41IDExNi4xLTI4LjUgNTQuMWgzNS45TDY0MCAxODkuNXpNMjQzLjcgMzEzLjhjLTI5LjYgMC01MC4yLTIxLjUtNTAuMi01My44IDAtMzIuNCAyMC42LTUzLjggNTAuMi01My44IDI5LjggMCA1MC4yIDIxLjQgNTAuMiA1My44IDAgMzIuMy0yMC40IDUzLjgtNTAuMiA1My44em0yMDAuOS00Ny4zYzAgMzAtMTcuOSA0OC40LTUxLjYgNDguNC0yNS4xIDAtMzUtMTMuNC0zNS0yNS44IDAtMTkuMSAxOC4xLTI0LjQgNDcuMi0yNS4zIDEzLjEtLjUgMjcuNi0uNiAzOS40LS42em0tNDExLjkgMS42aDEyOC44di04LjVjMC01MS43LTMzLjEtNzUuNC03OC40LTc1LjQtNTYuOCAwLTgzIDMwLjgtODMgNzcuNiAwIDQyLjUgMjUuMyA3NCA4Mi41IDc0IDMxLjQgMCA2OC0xMS43IDc0LjQtNDYuMWgtMzMuMWMtMTIgMzUuOC04Ny43IDM2LjctOTEuMi0yMS42em05NS0yMS40SDMzLjNjNi45LTU2LjYgOTIuMS01NC43IDk0LjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWRnZUxlZ2FjeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNS43MSwyMjguMTZsLjM1LS40OGMwLC4xNiwwLC4zMi0uMDcuNDhabTQ2MC41OCwxNS41MWMwLTQ0LTcuNzYtODQuNDYtMjguODEtMTIyLjRDNDE2LjUsNDcuODgsMzQzLjkxLDgsMjU4Ljg5LDgsMTE5LDcuNzIsNDAuNjIsMTEzLjIxLDI2LjA2LDIyNy42OGM0Mi40Mi02MS4zMSwxMTcuMDctMTIxLjM4LDIyMC4zNy0xMjUsMCwwLDEwOS42NywwLDk5LjQyLDEwNUgxNzBjNi4zNy0zNy4zOSwxOC41NS01OSwzNC4zNC03OC45My03NS4wNSwzNC45LTEyMS44NSw5Ni4xLTEyMC43NSwxODguMzIuODMsNzEuNDUsNTAuMTMsMTQ0Ljg0LDEyMC43NSwxNzIsODMuMzUsMzEuODQsMTkyLjc3LDcuMiwyNDAuMTMtMjEuMzNWMzYzLjMxQzM2My42LDQxOS44LDE3My42LDQyNC4yMywxNzIuMjEsMjk1Ljc0SDQ4Ni4yOVYyNDMuNjdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVkZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIwLjEgMzcuNDRDMTYxLjEgMTIuMjMgMjA3LjctLjc3NTMgMjU1IC4wMDE2QzQyMyAuMDAxNiA1MTIgMTIzLjggNTEyIDIxOS41QzUxMS45IDI1Mi4yIDQ5OSAyODMuNCA0NzYuMSAzMDYuN0M0NTMuMiAzMjkuOSA0MjIuMSAzNDMuMiAzODkuNCAzNDMuN0MzMTQuMiAzNDMuNyAyOTcuOSAzMjAuNiAyOTcuOSAzMTEuN0MyOTcuOSAzMDcuOSAyOTkuMSAzMDUuNSAzMDIuNyAzMDIuM0wzMDMuNyAzMDEuMUwzMDQuMSAyOTkuNUMzMTQuNiAyODggMzIwIDI3My4zIDMyMCAyNTcuOUMzMjAgMTc5LjIgMjM3LjggMTE1LjIgMTM2IDExNS4yQzk4LjQ2IDExNC45IDYxLjQ2IDEyNC4xIDI4LjQ4IDE0Mi4xQzU1LjQ4IDg0LjU4IDExMS4yIDQ0LjUgMTE5LjggMzguMjhDMTIwLjYgMzcuNzMgMTIwLjEgMzcuNDQgMTIwLjEgMzcuNDRWMzcuNDR6TTEzNS43IDM1NS41QzEzNC4zIDM4NS41IDE0MC4zIDQxNS41IDE1Mi4xIDQ0Mi43QzE2NS43IDQ2OS4xIDE4NC44IDQ5My43IDIwOC42IDUxMkMxNDkuMSA1MDAuNSA5Ny4xMSA0NjguMSA1OS4yIDQyMi43QzIxLjEyIDM3Ni4zIDAgMzE4LjQgMCAyNTcuOUMwIDIwNi43IDYyLjQgMTYzLjUgMTM2IDE2My41QzE3Mi42IDE2Mi45IDIwOC40IDE3NC40IDIzNy44IDE5Ni4yTDIzNC4yIDE5Ny40QzE4Mi43IDIxNSAxMzUuNyAyODguMSAxMzUuNyAzNTUuNVYzNTUuNXpNNDY5LjggNDAwTDQ2OS4xIDQwMC4xQzQ1Ny4zIDQxOC45IDQ0My4yIDQzNS4yIDQyNi45IDQ0OS42QzM5Ni4xIDQ3Ny42IDM1OC44IDQ5NS4xIDMxOC4xIDQ5OS41QzI5OS41IDQ5OS44IDI4MS4zIDQ5Ni4zIDI2NC4zIDQ4OC4xQzIzOC43IDQ3Ny44IDIxNy4yIDQ1OC4xIDIwMi43IDQzNS4xQzE4OC4zIDQxMS4yIDE4MS42IDM4My40IDE4My43IDM1NS41QzE4My4xIDMzNS40IDE4OS4xIDMxNS4yIDE5OC43IDI5Ny4zQzIxMi42IDMzMC40IDIzNi4yIDM1OC42IDI2Ni4zIDM3OC4xQzI5Ni40IDM5Ny42IDMzMS44IDQwNy42IDM2Ny43IDQwNi43QzM5OC43IDQwNyA0MjkuOCA0MDAgNDU3LjkgMzg2LjJMNDU5LjggMzg1LjNDNDYzLjcgMzgzIDQ2Ny41IDM4MS40IDQ3MS40IDM4NS4zQzQ3NS45IDM5MC4yIDQ3My4yIDM5NC41IDQ3MC4yIDM5OS4zQzQ3MCAzOTkuNSA0NjkuOSAzOTkuOCA0NjkuOCA0MDBWNDAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbGVtZW50b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjM2MSAyNTZDLjM2MSAzOTcgMTE0IDUxMSAyNTUgNTExQzM5NyA1MTEgNTExIDM5NyA1MTEgMjU2QzUxMSAxMTYgMzk3IDIuMDUgMjU1IDIuMDVDMTE0IDIuMDUgLjM2MSAxMTYgLjM2MSAyNTZ6TTE5MiAxNTBWMzYzSDE0OVYxNTBIMTkyek0yMzQgMTUwSDM2MlYxOTNIMjM0VjE1MHpNMzYyIDIzNVYyNzhIMjM0VjIzNUgzNjJ6TTIzNCAzMjBIMzYyVjM2M0gyMzRWMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbGxvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTE0My44NCAyODUuMkMzNzUuMzEgMzU4LjUxIDMxNS43OSA0MDQuOCAyNDggNDA0LjhzLTEyNy4zMS00Ni4yOS0xNDMuODQtMTExLjZjLTEuNjUtNy40NCAyLjQ4LTE1LjcxIDkuOTItMTcuMzYgNy40NC0xLjY1IDE1LjcxIDIuNDggMTcuMzYgOS45MiAxNC4wNSA1Mi45MSA2MiA5MC4xMSAxMTYuNTYgOTAuMTFzMTAyLjUxLTM3LjIgMTE2LjU2LTkwLjExYzEuNjUtNy40NCA5LjkyLTEyLjQgMTcuMzYtOS45MiA3LjQ0IDEuNjUgMTIuNCA5LjkyIDkuOTIgMTcuMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVtYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzOS45IDI1NC42Yy0xLjEtMTAuNy0xMC43LTYuOC0xMC43LTYuOHMtMTUuNiAxMi4xLTI5LjMgMTAuN2MtMTMuNy0xLjMtOS40LTMyLTkuNC0zMnMzLTI4LjEtNS4xLTMwLjRjLTguMS0yLjQtMTggNy4zLTE4IDcuM3MtMTIuNCAxMy43LTE4LjMgMzEuMmwtMS42LjVzMS45LTMwLjYtLjMtMzcuNmMtMS42LTMuNS0xNi40LTMuMi0xOC44IDNzLTE0LjIgNDkuMi0xNSA2Ny4yYzAgMC0yMy4xIDE5LjYtNDMuMyAyMi44cy0yNS05LjQtMjUtOS40IDU0LjgtMTUuMyA1Mi45LTU5LjEtNDQuMi0yNy42LTQ5LTI0Yy00LjYgMy41LTI5LjQgMTguNC0zNi42IDU5LjctLjIgMS40LS43IDcuNS0uNyA3LjVzLTIxLjIgMTQuMi0zMyAxOGMwIDAgMzMtNTUuNi03LjMtODAuOS0xMS40LTYuOC0yMS4zLS41LTI3LjIgNS4zIDEzLjYtMTcuMyA0Ni40LTY0LjIgMzYuOS0xMDUuMi01LjgtMjQuNC0xOC0yNy4xLTI5LjItMjMuMS0xNyA2LjctMjMuNSAxNi43LTIzLjUgMTYuN3MtMjIgMzItMjcuMSA3OS41LTEyLjYgMTA1LjEtMTIuNiAxMDUuMS0xMC41IDEwLjItMjAuMiAxMC43LTUuNC0yOC43LTUuNC0yOC43IDcuNS00NC42IDctNTIuMS0xLjEtMTEuNi05LjktMTQuMmMtOC45LTIuNy0xOC41IDguNi0xOC41IDguNnMtMjUuNSAzOC43LTI3LjcgNDQuNmwtMS4zIDIuNC0xLjMtMS42czE4LTUyLjcuOC01My41LTI4LjUgMTguOC0yOC41IDE4LjgtMTkuNiAzMi44LTIwLjQgMzYuNWwtMS4zLTEuNnM4LjEtMzguMiA2LjQtNDcuNmMtMS42LTkuNC0xMC41LTcuNS0xMC41LTcuNXMtMTEuMy0xLjMtMTQuMiA1LjktMTMuNyA1NS4zLTE1IDcwLjdjMCAwLTI4LjIgMjAuMi00Ni44IDIwLjQtMTguNS4zLTE2LjctMTEuOC0xNi43LTExLjhzNjgtMjMuMyA0OS40LTY5LjJjLTguMy0xMS44LTE4LTE1LjUtMzEuNy0xNS4zLTEzLjcuMy0zMC4zIDguNi00MS4zIDMzLjMtNS4zIDExLjgtNi44IDIzLTcuOCAzMS41IDAgMC0xMi4zIDIuNC0xOC44LTIuOXMtMTAgMC0xMCAwLTExLjIgMTQtLjEgMTguMyAyOC4xIDYuMSAyOC4xIDYuMWMxLjYgNy41IDYuMiAxOS41IDE5LjYgMjkuNyAyMC4yIDE1LjMgNTguOC0xLjMgNTguOC0xLjNsMTUuOS04LjhzLjUgMTQuNiAxMi4xIDE2LjcgMTYuNCAxIDM2LjUtNDcuOWMxMS44LTI1IDEyLjYtMjMuNiAxMi42LTIzLjZsMS4zLS4zcy05LjEgNDYuOC01LjYgNTkuN0MxODcuNyAzMTkuNCAyMDMgMzE4IDIwMyAzMThzOC4zIDIuNCAxNS0yMS4yIDE5LjYtNDkuOSAxOS42LTQ5LjloMS42cy01LjYgNDguMSAzIDYzLjcgMzAuOSA1LjMgMzAuOSA1LjMgMTUuNi03LjggMTgtMTAuMmMwIDAgMTguNSAxNS44IDQ0LjYgMTIuOSA1OC4zLTExLjUgNzkuMS0yNS45IDc5LjEtMjUuOXMxMCAyNC40IDQxLjEgMjYuN2MzNS41IDIuNyA1NC44LTE4LjYgNTQuOC0xOC42cy0uMyAxMy41IDEyLjEgMTguNiAyMC43LTIyLjggMjAuNy0yMi44bDIwLjctNTcuMmgxLjlzMS4xIDM3LjMgMjEuNSA0My4yIDQ3LTEzLjcgNDctMTMuNyA2LjQtMy41IDUuMy0xNC4zem0tNTc4IDUuM2MuOC0zMiAyMS44LTQ1LjkgMjktMzkgNy4zIDcgNC42IDIyLTkuMSAzMS40LTEzLjcgOS41LTE5LjkgNy42LTE5LjkgNy42em0yNzIuOC0xMjMuOHMxOS4xLTQ5LjcgMjMuNi0yNS41LTQwIDk2LjItNDAgOTYuMmMuNS0xNi4yIDE2LjQtNzAuNyAxNi40LTcwLjd6bTIyLjggMTM4LjRjLTEyLjYgMzMtNDMuMyAxOS42LTQzLjMgMTkuNnMtMy41LTExLjggNi40LTQ0LjkgMzMuMy0yMC4yIDMzLjMtMjAuMiAxNi4yIDEyLjQgMy42IDQ1LjV6bTg0LjYtMTQuNnMtMy0xMC41IDguMS0zMC42YzExLTIwLjIgMTkuNi05LjEgMTkuNi05LjFzOS40IDEwLjItMS4zIDI1LjUtMjYuNCAxNC4yLTI2LjQgMTQuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW1waXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4Ny42IDU0LjJjLTEwLjgtMi4yLTIyLjEtMy4zLTMzLjUtMy42VjMyLjRjNzguMSAyLjIgMTQ2LjEgNDQgMTg0LjYgMTA2LjZsLTE1LjggOS4xYy02LjEtOS43LTEyLjctMTguOC0yMC4yLTI3LjFsLTE4IDE1LjVjLTI2LTI5LjYtNjEuNC01MC43LTEwMS45LTU4LjRsNC44LTIzLjl6TTUzLjQgMzIyLjRsMjMtNy43Yy02LjQtMTguMy0xMC0zOC4yLTEwLTU4LjdzMy4zLTQwLjQgOS43LTU4LjdsLTIyLjctNy43YzMuNi0xMC44IDguMy0yMS4zIDEzLjYtMzFsLTE1LjgtOS4xQzM0IDE4MSAyNC4xIDIxNy41IDI0LjEgMjU2czEwIDc1IDI3LjEgMTA2LjZsMTUuOC05LjFjLTUuMy0xMC05LjctMjAuMy0xMy42LTMxLjF6TTIxMy4xIDQzNGMtNDAuNC04LTc1LjgtMjkuMS0xMDEuOS01OC43bC0xOCAxNS44Yy03LjUtOC42LTE0LjQtMTcuNy0yMC4yLTI3LjRsLTE2IDkuNGMzOC41IDYyLjMgMTA2LjggMTA0LjMgMTg0LjkgMTA2LjZ2LTE4LjNjLTExLjMtLjMtMjIuNy0xLjctMzMuNS0zLjZsNC43LTIzLjh6TTkzLjMgMTIwLjlsMTggMTUuNWMyNi0yOS42IDYxLjQtNTAuNyAxMDEuOS01OC40bC00LjctMjMuOGMxMC44LTIuMiAyMi4xLTMuMyAzMy41LTMuNlYzMi40QzE2My45IDM0LjYgOTUuOSA3Ni40IDU3LjQgMTM5bDE1LjggOS4xYzYtOS43IDEyLjYtMTguOSAyMC4xLTI3LjJ6bTMwOS40IDI3MC4ybC0xOC0xNS44Yy0yNiAyOS42LTYxLjQgNTAuNy0xMDEuOSA1OC43bDQuNyAyMy44Yy0xMC44IDEuOS0yMi4xIDMuMy0zMy41IDMuNnYxOC4zYzc4LjEtMi4yIDE0Ni40LTQ0LjMgMTg0LjktMTA2LjZsLTE2LjEtOS40Yy01LjcgOS43LTEyLjYgMTguOC0yMC4xIDI3LjR6TTQ5NiAyNTZjMCAxMzctMTExIDI0OC0yNDggMjQ4UzAgMzkzIDAgMjU2IDExMSA4IDI0OCA4czI0OCAxMTEgMjQ4IDI0OHptLTEyLjIgMGMwLTEzMC4xLTEwNS43LTIzNS44LTIzNS44LTIzNS44UzEyLjIgMTI1LjkgMTIuMiAyNTYgMTE3LjkgNDkxLjggMjQ4IDQ5MS44IDQ4My44IDM4Ni4xIDQ4My44IDI1NnptLTM5LTEwNi42bC0xNS44IDkuMWM1LjMgOS43IDEwIDIwLjIgMTMuNiAzMWwtMjIuNyA3LjdjNi40IDE4LjMgOS43IDM4LjIgOS43IDU4LjdzLTMuNiA0MC40LTEwIDU4LjdsMjMgNy43Yy0zLjkgMTAuOC04LjMgMjEtMTMuNiAzMWwxNS44IDkuMUM0NjIgMzMxIDQ3MS45IDI5NC41IDQ3MS45IDI1NnMtOS45LTc1LTI3LjEtMTA2LjZ6bS0xODMgMTc3LjdjMTYuMy0zLjMgMzAuNC0xMS42IDQwLjctMjMuNWw1MS4yIDQ0LjhjMTEuOS0xMy42IDIxLjMtMjkuMyAyNy4xLTQ2LjhsLTY0LjItMjIuMWMyLjUtNy41IDMuOS0xNS4yIDMuOS0yMy41cy0xLjQtMTYuMS0zLjktMjMuNWw2NC41LTIyLjFjLTYuMS0xNy40LTE1LjUtMzMuMi0yNy40LTQ2LjhsLTUxLjIgNDQuOGMtMTAuMi0xMS45LTI0LjQtMjAuNS00MC43LTIzLjhsMTMuMy02Ni40Yy04LjYtMS45LTE3LjctMi44LTI3LjEtMi44LTkuNCAwLTE4LjUuOC0yNy4xIDIuOGwxMy4zIDY2LjRjLTE2LjMgMy4zLTMwLjQgMTEuOS00MC43IDIzLjhsLTUxLjItNDQuOGMtMTEuOSAxMy42LTIxLjMgMjkuMy0yNy40IDQ2LjhsNjQuNSAyMi4xYy0yLjUgNy41LTMuOSAxNS4yLTMuOSAyMy41czEuNCAxNi4xIDMuOSAyMy41bC02NC4yIDIyLjFjNS44IDE3LjQgMTUuMiAzMy4yIDI3LjEgNDYuOGw1MS4yLTQ0LjhjMTAuMiAxMS45IDI0LjQgMjAuMiA0MC43IDIzLjVsLTEzLjMgNjYuN2M4LjYgMS43IDE3LjcgMi44IDI3LjEgMi44IDkuNCAwIDE4LjUtMS4xIDI3LjEtMi44bC0xMy4zLTY2Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVudmlyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyYzQ3Ny42IDAgMzY2LjYgMzE3LjMgMzY3LjEgMzY2LjNMNDQ4IDQ4MGgtMjZsLTcwLjQtNzEuMmMtMzkgNC4yLTEyNC40IDM0LjUtMjE0LjQtMzdDNDcgMzAwLjMgNTIgMjE0LjcgMCAzMnptNzkuNyA0NmMtNDkuNy0yMy41LTUuMiA5LjItNS4yIDkuMiA0NS4yIDMxLjIgNjYgNzMuNyA5MC4yIDExOS45IDMxLjUgNjAuMiA3OSAxMzkuNyAxNDQuMiAxNjcuNyA2NSAyOCAzNC4yIDEyLjUgNi04LjUtMjguMi0yMS4yLTY4LjItODctOTEtMTMwLjItMzEuNy02MC02MS0xMTguNi0xNDQuMi0xNTguMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXJsYW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg3LjIgNTMuNUgwdjQwNWgxMDAuNGMtNDkuNy01Mi42LTc4LjgtMTI1LjMtNzguNy0yMTIuMS0uMS03Ni43IDI0LTE0Mi43IDY1LjUtMTkyLjl6bTIzOC4yIDkuN2MtNDUuOS4xLTg1LjEgMzMuNS04OS4yIDgzLjJoMTY5LjljLTEuMS00OS43LTM0LjUtODMuMS04MC43LTgzLjJ6bTIzMC43LTkuNmguM2wtLjEtLjF6bS4zIDBjMzEuNCA0Mi43IDQ4LjcgOTcuNSA0Ni4yIDE2Mi43LjUgNiAuNSAxMS43IDAgMjQuMUgyMzAuMmMtLjIgMTA5LjcgMzguOSAxOTQuOSAxMzguNiAxOTUuMyA2OC41LS4zIDExOC01MSAxNTEuOS0xMDYuMWw5Ni40IDQ4LjJjLTE3LjQgMzAuOS0zNi41IDU3LjgtNTcuOSA4MC44SDY0MHYtNDA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFdGhlcmV1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTEuOSAyNjAuOEwxNjAgMzUzLjYgOCAyNjAuOCAxNjAgMGwxNTEuOSAyNjAuOHpNMTYwIDM4My40TDggMjkwLjYgMTYwIDUxMmwxNTItMjIxLjQtMTUyIDkyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV0c3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDM0OGMtMS43NSAxMC43NS0xMy43NSAxMTAtMTUuNSAxMzItMTE3Ljg3OS00LjI5OS0yMTkuODk1LTQuNzQzLTM2OC41IDB2LTI1LjVjNDUuNDU3LTguOTQ4IDYwLjYyNy04LjAxOSA2MS0zNS4yNSAxLjc5My03Mi4zMjIgMy41MjQtMjQ0LjE0MyAwLTMyMi0xLjAyOS0yOC40Ni0xMi4xMy0yNi43NjUtNjEtMzZ2LTI1LjVjNzMuODg2IDIuMzU4IDI1NS45MzMgOC41NTEgMzYyLjk5OS0zLjc1LTMuNSAzOC4yNS03Ljc1IDEyNi41LTcuNzUgMTI2LjVIMzMyQzMyMC45NDcgMTE1LjY2NSAzMTMuMjQxIDY4IDI3Ny4yNSA2OGgtMTM3Yy0xMC4yNSAwLTEwLjc1IDMuNS0xMC43NSA5Ljc1VjI0MS41YzU4IC41IDg4LjUtMi41IDg4LjUtMi41IDI5Ljc3LS45NTEgMjcuNTYtOC41MDIgNDAuNzUtNjUuMjUxaDI1Ljc1Yy00LjQwNyAxMDEuMzUxLTMuOTEgNjEuODI5LTEuNzUgMTYwLjI1SDI1N2MtOS4xNTUtNDAuMDg2LTkuMDY1LTYxLjA0NS0zOS41MDEtNjEuNSAwIDAtMjEuNS0yLTg4LTJ2MTM5YzAgMjYgMTQuMjUgMzguMjUgNDQuMjUgMzguMjVIMjYzYzYzLjYzNiAwIDY2LjU2NC0yNC45OTYgOTguNzUxLTk5Ljc1SDM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXZlcm5vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIwLjgyIDEzMi4yMWMxLjYgMjIuMzEtMTcuNTUgMjEuNTktMjEuNjEgMjEuNTktNjguOTMgMC03My42NC0xLTgzLjU4IDMuMzQtLjU2LjIyLS43NCAwLS4zNy0uMzdMMTIzLjc5IDQ2LjQ1Yy4zOC0uMzcuNi0uMjIuMzguMzctNC4zNSA5Ljk5LTMuMzUgMTUuMDktMy4zNSA4NS4zOXptNzkgMzA4Yy0xNC42OC0zNy4wOCAxMy03Ni45MyA1Mi41Mi03Ni42MiAxNy40OSAwIDIyLjYgMjMuMjEgNy45NSAzMS40Mi02LjE5IDMuMy0yNC45NSAxLjc0LTI1LjE0IDE5LjItLjA1IDE3LjA5IDE5LjY3IDI1IDMxLjIgMjQuODlBNDUuNjQgNDUuNjQgMCAwIDAgMzEyIDM5My40NXYtLjA4YzAtMTEuNjMtNy43OS00Ny4yMi00Ny41NC01NS4zNC03LjcyLTEuNTQtNjUtNi4zNS02OC4zNS01MC41Mi0zLjc0IDE2LjkzLTE3LjQgNjMuNDktNDMuMTEgNjkuMDktOC43NCAxLjk0LTY5LjY4IDcuNjQtMTEyLjkyLTM2Ljc3IDAgMC0xOC41Ny0xNS4yMy0yOC4yMy01Ny45NS0zLjM4LTE1Ljc1LTkuMjgtMzkuNy0xMS4xNC02MiAwLTE4IDExLjE0LTMwLjQ1IDI1LjA3LTMyLjIgODEgMCA5MCAyLjMyIDEwMS03LjggOS44Mi05LjI0IDcuOC0xNS41IDcuOC0xMDIuNzggMS04LjMgNy43OS0zMC44MSA1My40MS0yNC4xNCA2IC44NiAzMS45MSA0LjE4IDM3LjQ4IDMwLjY0bDY0LjI2IDExLjE1YzIwLjQzIDMuNzEgNzAuOTQgNyA4MC42IDU3Ljk0IDIyLjY2IDEyMS4wOSA4LjkxIDIzOC40NiA3LjggMjM4LjQ2QzM2Mi4xNSA0ODUuNTMgMjY3LjA2IDQ4MCAyNjcuMDYgNDgwYy0xOC45NS0uMjMtNTQuMjUtOS40LTY3LjI3LTM5Ljgzem04MC45NC0yMDQuODRjLTEgMS45Mi0yLjIgNiAuODUgNyAxNC4wOSA0LjkzIDM5Ljc1IDYuODQgNDUuODggNS41MyAzLjExLS4yNSAzLjA1LTQuNDMgMi40OC02LjY1LTMuNTMtMjEuODUtNDAuODMtMjYuNS00OS4yNC01LjkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeHBlZGl0ZWRzc2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDQzLjRDMTMwLjYgNDMuNCAzNS40IDEzOC42IDM1LjQgMjU2UzEzMC42IDQ2OC42IDI0OCA0NjguNiA0NjAuNiAzNzMuNCA0NjAuNiAyNTYgMzY1LjQgNDMuNCAyNDggNDMuNHptLTk3LjQgMTMyLjljMC01My43IDQzLjctOTcuNCA5Ny40LTk3LjRzOTcuNCA0My43IDk3LjQgOTcuNHYyNi42YzAgNS0zLjkgOC45LTguOSA4LjloLTE3LjdjLTUgMC04LjktMy45LTguOS04Ljl2LTI2LjZjMC04Mi4xLTEyNC04Mi4xLTEyNCAwdjI2LjZjMCA1LTMuOSA4LjktOC45IDguOWgtMTcuN2MtNSAwLTguOS0zLjktOC45LTguOXYtMjYuNnpNMzg5LjcgMzgwYzAgOS43LTggMTcuNy0xNy43IDE3LjdIMTI0Yy05LjcgMC0xNy43LTgtMTcuNy0xNy43VjIzOC4zYzAtOS43IDgtMTcuNyAxNy43LTE3LjdoMjQ4YzkuNyAwIDE3LjcgOCAxNy43IDE3LjdWMzgwem0tMjQ4LTEzNy4zdjEzMi45YzAgMi41LTEuOSA0LjQtNC40IDQuNGgtOC45Yy0yLjUgMC00LjQtMS45LTQuNC00LjRWMjQyLjdjMC0yLjUgMS45LTQuNCA0LjQtNC40aDguOWMyLjUgMCA0LjQgMS45IDQuNCA0LjR6bTE0MS43IDQ4LjdjMCAxMy03LjIgMjQuNC0xNy43IDMwLjR2MzEuNmMwIDUtMy45IDguOS04LjkgOC45aC0xNy43Yy01IDAtOC45LTMuOS04LjktOC45di0zMS42Yy0xMC41LTYuMS0xNy43LTE3LjQtMTcuNy0zMC40IDAtMTkuNyAxNS44LTM1LjQgMzUuNC0zNS40czM1LjUgMTUuOCAzNS41IDM1LjR6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDc4LjNDMTIxIDQ4Ni4zIDE3LjcgMzgzIDE3LjcgMjU2UzEyMSAyNS43IDI0OCAyNS43IDQ3OC4zIDEyOSA0NzguMyAyNTYgMzc1IDQ4Ni4zIDI0OCA0ODYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZWJvb2tGIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwIDI5OS4zVjUxMkgxOTZWMjk5LjNoODYuNWwxOC05Ny44SDE5NlYxNjYuOWMwLTUxLjcgMjAuMy03MS41IDcyLjctNzEuNWMxNi4zIDAgMjkuNCAuNCAzNyAxLjJWNy45QzI5MS40IDQgMjU2LjQgMCAyMzYuMiAwQzEyOS4zIDAgODAgNTAuNSA4MCAxNTkuNHY0Mi4xSDE0djk3LjhIODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2Vib29rTWVzc2VuZ2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ni41NSA4QzExNi41MiA4IDggMTEwLjM0IDggMjQ4LjU3YzAgNzIuMyAyOS43MSAxMzQuNzggNzguMDcgMTc3Ljk0IDguMzUgNy41MSA2LjYzIDExLjg2IDguMDUgNTguMjNBMTkuOTIgMTkuOTIgMCAwIDAgMTIyIDUwMi4zMWM1Mi45MS0yMy4zIDUzLjU5LTI1LjE0IDYyLjU2LTIyLjdDMzM3Ljg1IDUyMS44IDUwNCA0MjMuNyA1MDQgMjQ4LjU3IDUwNCAxMTAuMzQgMzk2LjU5IDggMjU2LjU1IDh6bTE0OS4yNCAxODUuMTNsLTczIDExNS41N2EzNy4zNyAzNy4zNyAwIDAgMS01My45MSA5LjkzbC01OC4wOC00My40N2ExNSAxNSAwIDAgMC0xOCAwbC03OC4zNyA1OS40NGMtMTAuNDYgNy45My0yNC4xNi00LjYtMTcuMTEtMTUuNjdsNzMtMTE1LjU3YTM3LjM2IDM3LjM2IDAgMCAxIDUzLjkxLTkuOTNsNTguMDYgNDMuNDZhMTUgMTUgMCAwIDAgMTggMGw3OC40MS01OS4zOGMxMC40NC03Ljk4IDI0LjE0IDQuNTQgMTcuMDkgMTUuNjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2Vib29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAyNTZDNTEyIDExNC42IDM5Ny40IDAgMjU2IDBTMCAxMTQuNiAwIDI1NkMwIDM3NiA4Mi43IDQ3Ni44IDE5NC4yIDUwNC41VjMzNC4ySDE0MS40VjI1Nmg1Mi44VjIyMi4zYzAtODcuMSAzOS40LTEyNy41IDEyNS0xMjcuNWMxNi4yIDAgNDQuMiAzLjIgNTUuNyA2LjRWMTcyYy02LS42LTE2LjUtMS0yOS42LTFjLTQyIDAtNTguMiAxNS45LTU4LjIgNTcuMlYyNTZoODMuNmwtMTQuNCA3OC4ySDI4N1Y1MTAuMUM0MTMuOCA0OTQuOCA1MTIgMzg2LjkgNTEyIDI1NmgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYW50YXN5RmxpZ2h0R2FtZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyLjg2TDMyLjg2IDI1NiAyNTYgNDc5LjE0IDQ3OS4xNCAyNTYgMjU2IDMyLjg2ek04OC4zNCAyNTUuODNjMS45Ni0yIDExLjkyLTEyLjMgOTYuNDktOTcuNDggNDEuNDUtNDEuNzUgODYuMTktNDMuNzcgMTE5Ljc3LTE4LjY5IDI0LjYzIDE4LjQgNjIuMDYgNTguOSA2Mi4xNSA1OSAuNjguNzQgMS4wNyAyLjg2LjU4IDMuMzgtMTEuMjcgMTEuODQtMjIuNjggMjMuNTQtMzMuNSAzNC42OS0zNC4yMS0zMi4zMS00MC41Mi0zOC4yNC00OC41MS00My45NS0xNy43Ny0xMi42OS00MS40LTEwLjEzLTU2Ljk4IDUuMS0yLjE3IDIuMTMtMS43OSAzLjQzLjEyIDUuMzUgMi45NCAyLjk1IDI4LjEgMjguMzMgMzUuMDkgMzUuNzgtMTEuOTUgMTEuNi0yMy42NiAyMi45Ny0zNS42OSAzNC42Ni0xMi4wMi0xMi41NC0yNC40OC0yNS41My0zNi41NC0zOC4xMS0yMS4zOSAyMS4wOS00MS42OSA0MS4xMS02MS44NSA2MC45OXptMjM0LjgyIDEwMS42Yy0zNS40OSAzNS40My03OC4wOSAzOC4xNC0xMDYuOTkgMjAuNDctMjIuMDgtMTMuNS0zOS4zOC0zMi4wOC03Mi45My02Ni44NCAxMi4wNS0xMi4zNyAyMy43OS0yNC40MiAzNS4zNy0zNi4zMSAzMy4wMiAzMS45MSAzNy4wNiAzNi4wMSA0NC42OCA0Mi4wOSAxOC40OCAxNC43NCA0Mi41MiAxMy42NyA1OS4zMi0xLjggMy42OC0zLjM5IDMuNjktMy42NC4xNC03LjI0LTEwLjU5LTEwLjczLTIxLjE5LTIxLjQ0LTMxLjc3LTMyLjE4LTEuMzItMS4zNC0zLjAzLTIuNDgtLjgtNC42OSAxMC43OS0xMC43MSAyMS40OC0yMS41MiAzMi4yMS0zMi4yOS4yNi0uMjYuNjUtLjM4IDEuOTEtMS4wNyAxMi4zNyAxMi44NyAyNC45MiAyNS45MiAzNy4yNSAzOC43NSAyMS4wMS0yMC43MyA0MS4yNC00MC42OCA2MS4yNS02MC40MiAxMy42OCAxMy40IDI3LjEzIDI2LjU4IDQwLjg2IDQwLjAzLTIwLjE3IDIwLjg2LTgxLjY4IDgyLjcxLTEwMC41IDEwMS41ek0yNTYgMEwwIDI1NmwyNTYgMjU2IDI1Ni0yNTZMMjU2IDB6TTE2IDI1NkwyNTYgMTZsMjQwIDI0MC0yNDAgMjQwTDE2IDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmVkZXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTg2IDI4NC41bDUzLjMtNTkuOWgtNjIuNGwtMjEuNyAyNC44LTIyLjUtMjQuOEg0MTR2LTE2aDU2LjF2LTQ4LjFIMzE4LjlWMjM2aC0uNWMtOS42LTExLTIxLjUtMTQuOC0zNS40LTE0LjgtMjguNCAwLTQ5LjggMTkuNC01Ny4zIDQ0LjktMTgtNTkuNC05Ny40LTU3LjYtMTIxLjktMTR2LTI0LjJINDl2LTI2LjJoNjB2LTQxLjFIMFYzNDVoNDl2LTc3LjVoNDguOWMtMS41IDUuNy0yLjMgMTEuOC0yLjMgMTguMiAwIDczLjEgMTAyLjYgOTEuNCAxMzAuMiAyMy43aC00MmMtMTQuNyAyMC45LTQ1LjggOC45LTQ1LjgtMTQuNmg4NS41YzMuNyAzMC41IDI3LjQgNTYuOSA2MC4xIDU2LjkgMTQuMSAwIDI3LTYuOSAzNC45LTE4LjZoLjVWMzQ1aDIxMi4ybDIyLjEtMjUgMjIuMyAyNUg2NDBsLTU0LTYwLjV6bS00NDYuNy0xNi42YzYuMS0yNi4zIDQxLjctMjUuNiA0Ni41IDBoLTQ2LjV6bTE1My40IDQ4LjljLTM0LjYgMC0zNC02Mi44IDAtNjIuOCAzMi42IDAgMzQuNSA2Mi44IDAgNjIuOHptMTY3LjggMTkuMWgtOTQuNFYxNjkuNGg5NXYzMC4ySDQwNXYzMy45aDU1LjV2MjguMWgtNTYuMXY0NC43aDU2LjF2MjkuNnptLTQ1LjktMzkuOHYtMjQuNGg1Ni4xdi00NGw1MC43IDU3LTUwLjcgNTd2LTQ1LjZoLTU2LjF6bTEzOC42IDEwLjNsLTI2LjEgMjkuNUg0ODlsNDUuNi01MS4yLTQ1LjYtNTEuMmgzOS43bDI2LjYgMjkuMyAyNS42LTI5LjNoMzguNWwtNDUuNCA1MSA0NiA1MS40aC00MC41bC0yNi4zLTI5LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlZG9yYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uMDQxMyAyNTUuOEMuMTIxOSAxMzIuMiAxMDAuMyAzMiAyMjQgMzJDMzQ3LjcgMzIgNDQ4IDEzMi4zIDQ0OCAyNTZDNDQ4IDM3OS43IDM0Ny44IDQ3OS45IDIyNC4xIDQ4MEg1MC45M0MyMi44NCA0ODAgLjA4MzIgNDU3LjMgLjA0MTYgNDI5LjJIMFYyNTUuOEguMDQxM3pNMzQyLjYgMTkyLjdDMzQyLjYgMTUzIDMwNyAxMjQuMiAyNjkuNCAxMjQuMkMyMzQuNSAxMjQuMiAyMDMuNiAxNTAuNSAxOTkuMyAxODQuMUMxOTkuMSAxODcuOSAxOTguOSAxODkuMSAxOTguOSAxOTIuNkMxOTguOCAyMTMuNyAxOTguOSAyMzUuNCAxOTguMSAyNTdDMTk5IDI4My4xIDE5OS4xIDMwOS4xIDE5OC4xIDMzMy42QzE5OC4xIDM2MC43IDE3OC43IDM3OS4xIDE1My40IDM3OS4xQzEyOC4xIDM3OS4xIDEwNy42IDM1OC45IDEwNy42IDMzMy42QzEwOC4xIDMwNS45IDEzMC4yIDI4OC4zIDE1Ni4xIDI4Ny41SDE1Ni4zTDE4Mi42IDI4Ny4zVjI1MEwxNTYuMyAyNTAuMkMxMDkuMiAyNDkuOCA3MS43MiAyODYuNyA3MC4zNiAzMzMuNkM3MC4zNiAzNzkuMiAxMDcuOSA0MTYuNSAxNTMuNCA0MTYuNUMxOTYuNCA0MTYuNSAyMzIuMSAzODIuOSAyMzYgMzQwLjlMMjM2LjIgMjg3LjRMMjY4LjggMjg3LjFDMjk0LjEgMjg3LjMgMjkzLjggMjQ5LjMgMjY4LjYgMjQ5LjhMMjM2LjIgMjUwLjFDMjM2LjIgMjQzLjcgMjM2LjMgMjM3LjMgMjM2LjMgMjMwLjlDMjM2LjQgMjE4LjIgMjM2LjQgMjA1LjUgMjM2LjIgMTkyLjdDMjM2LjMgMTc2LjIgMjUyIDE2MS41IDI2OS40IDE2MS41QzI4Ni45IDE2MS41IDMwNS4zIDE3MC4yIDMwNS4zIDE5Mi43QzMwNS4zIDE5NS45IDMwNS4yIDE5Ny44IDMwNSAxOTlDMzAzLjEgMjA5LjUgMzEwLjIgMjE5LjQgMzIwLjcgMjIwLjlDMzMxLjMgMjIyLjQgMzQwLjkgMjE0LjggMzQxLjkgMjA0LjNDMzQyLjUgMjAwLjEgMzQyLjYgMTk2LjQgMzQyLjYgMTkyLjdIMzQyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpZ21hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDk1Ljc5MjRDMTQgNDIuODg3NyA1Ni44ODc4IDAgMTA5Ljc5MyAwSDI3NC4xNjFDMzI3LjA2NiAwIDM2OS45NTQgNDIuODg3NyAzNjkuOTU0IDk1Ljc5MjRDMzY5Ljk1NCAxMjkuMjkyIDM1Mi43NTggMTU4Ljc3NiAzMjYuNzExIDE3NS44OTdDMzUyLjc1OCAxOTMuMDE5IDM2OS45NTQgMjIyLjUwMiAzNjkuOTU0IDI1Ni4wMDJDMzY5Ljk1NCAzMDguOTA3IDMyNy4wNjYgMzUxLjc5NSAyNzQuMTYxIDM1MS43OTVIMjcyLjA4MUMyNDcuMjc5IDM1MS43OTUgMjI0LjY3OCAzNDIuMzY5IDIwNy42NjYgMzI2LjkwNFY0MTUuMTY3QzIwNy42NjYgNDY4Ljc3NyAxNjMuNjU3IDUxMiAxMTAuMzA5IDUxMkM1Ny41MzYxIDUxMiAxNCA0NjkuMjQzIDE0IDQxNi4yMDdDMTQgMzgyLjcwOSAzMS4xOTQ1IDM1My4yMjcgNTcuMjM5MiAzMzYuMTA1QzMxLjE5NDUgMzE4Ljk4MyAxNCAyODkuNSAxNCAyNTYuMDAyQzE0IDIyMi41MDIgMzEuMTk2IDE5My4wMTkgNTcuMjQyNSAxNzUuODk3QzMxLjE5NiAxNTguNzc2IDE0IDEyOS4yOTIgMTQgOTUuNzkyNFpNMTc2LjI4OCAxOTEuNTg3SDEwOS43OTNDNzQuMjE3MiAxOTEuNTg3IDQ1LjM3NzggMjIwLjQyNyA0NS4zNzc4IDI1Ni4wMDJDNDUuMzc3OCAyOTEuNDQgNzMuOTk0OCAzMjAuMTk0IDEwOS4zODEgMzIwLjQxNkMxMDkuNTE4IDMyMC40MTUgMTA5LjY1NSAzMjAuNDE1IDEwOS43OTMgMzIwLjQxNUgxNzYuMjg4VjE5MS41ODdaTTIwNy42NjYgMjU2LjAwMkMyMDcuNjY2IDI5MS41NzcgMjM2LjUwNSAzMjAuNDE3IDI3Mi4wODEgMzIwLjQxN0gyNzQuMTYxQzMwOS43MzcgMzIwLjQxNyAzMzguNTc2IDI5MS41NzcgMzM4LjU3NiAyNTYuMDAyQzMzOC41NzYgMjIwLjQyNyAzMDkuNzM3IDE5MS41ODcgMjc0LjE2MSAxOTEuNTg3SDI3Mi4wODFDMjM2LjUwNSAxOTEuNTg3IDIwNy42NjYgMjIwLjQyNyAyMDcuNjY2IDI1Ni4wMDJaTTEwOS43OTMgMzUxLjc5NUMxMDkuNjU1IDM1MS43OTUgMTA5LjUxOCAzNTEuNzk0IDEwOS4zODEgMzUxLjc5NEM3My45OTQ4IDM1Mi4wMTUgNDUuMzc3OCAzODAuNzY5IDQ1LjM3NzggNDE2LjIwN0M0NS4zNzc4IDQ1MS42NTIgNzQuNjAyNSA0ODAuNjIyIDExMC4zMDkgNDgwLjYyMkMxNDYuNTkxIDQ4MC42MjIgMTc2LjI4OCA0NTEuMTg2IDE3Ni4yODggNDE1LjE2N1YzNTEuNzk1SDEwOS43OTNaTTEwOS43OTMgMzEuMzc3OEM3NC4yMTcyIDMxLjM3NzggNDUuMzc3OCA2MC4yMTczIDQ1LjM3NzggOTUuNzkyNEM0NS4zNzc4IDEzMS4zNjggNzQuMjE3MiAxNjAuMjA3IDEwOS43OTMgMTYwLjIwN0gxNzYuMjg4VjMxLjM3NzhIMTA5Ljc5M1pNMjA3LjY2NiAxNjAuMjA3SDI3NC4xNjFDMzA5LjczNyAxNjAuMjA3IDMzOC41NzYgMTMxLjM2OCAzMzguNTc2IDk1Ljc5MjRDMzM4LjU3NiA2MC4yMTczIDMwOS43MzcgMzEuMzc3OCAyNzQuMTYxIDMxLjM3NzhIMjA3LjY2NlYxNjAuMjA3WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJlZm94QnJvd3NlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzAuMjIgMTI3LjU0OEMxMzAuMzggMTI3LjU1OCAxMzAuMyAxMjcuNTU4IDEzMC4yMiAxMjcuNTQ4VjEyNy41NDhaTTQ4MS42NCAxNzIuODk4QzQ3MS4wMyAxNDcuMzk4IDQ0OS41NiAxMTkuODk4IDQzMi43IDExMS4xNjhDNDQ2LjQyIDEzOC4wNTggNDU0LjM3IDE2NS4wNDggNDU3LjQgMTg1LjE2OEM0NTcuNDA1IDE4NS4zMDYgNDU3LjQyMiAxODUuNDQzIDQ1Ny40NSAxODUuNTc4QzQyOS44NyAxMTYuODI4IDM4My4wOTggODkuMTA4OSAzNDQuOSAyOC43NDc5QzMyOS45MDggNS4wNTc5MiAzMzMuOTc2IDMuNTE3OTIgMzMxLjgyIDQuMDg3OTJMMzMxLjcgNC4xNTc5MkMyODQuOTkgMzAuMTEwOSAyNTYuMzY1IDgyLjUyODkgMjQ5LjEyIDEyNi44OThDMjMyLjUwMyAxMjcuNzcxIDIxNi4yMTkgMTMxLjg5NSAyMDEuMTkgMTM5LjAzNUMxOTkuODM4IDEzOS42NDkgMTk4LjczNiAxNDAuNzA2IDE5OC4wNjYgMTQyLjAzMUMxOTcuMzk2IDE0My4zNTYgMTk3LjE5OSAxNDQuODcgMTk3LjUwNiAxNDYuMzIzQzE5Ny43IDE0Ny4xNjIgMTk4LjA2OCAxNDcuOTUxIDE5OC41ODYgMTQ4LjYzOUMxOTkuMTAzIDE0OS4zMjcgMTk5Ljc2IDE0OS44OTkgMjAwLjUxMiAxNTAuMzE4QzIwMS4yNjQgMTUwLjczNyAyMDIuMDk2IDE1MC45OTMgMjAyLjk1NCAxNTEuMDcxQzIwMy44MTEgMTUxLjE0OCAyMDQuNjc2IDE1MS4wNDUgMjA1LjQ5MSAxNTAuNzY4TDIwNi4wMTEgMTUwLjU1OEMyMjEuNTExIDE0My4yNTUgMjM4LjQwOCAxMzkuMzkzIDI1NS41NDEgMTM5LjIzOEMzMTguMzY5IDEzOC42NjkgMzUyLjY5OCAxODMuMjYyIDM2My4xNjEgMjAxLjUyOEMzNTAuMTYxIDE5Mi4zNzggMzI2LjgxMSAxODMuMzM4IDMwNC4zNDEgMTg3LjI0OEMzOTIuMDgxIDIzMS4xMDggMzY4LjU0MSAzODEuNzg0IDI0Ni45NTEgMzc2LjQ0OEMxODcuNDg3IDM3My44MzggMTQ5Ljg4MSAzMjUuNDY3IDE0Ni40MjEgMjg1LjY0OEMxNDYuNDIxIDI4NS42NDggMTU3LjY3MSAyNDMuNjk4IDIyNy4wNDEgMjQzLjY5OEMyMzQuNTQxIDI0My42OTggMjU1Ljk3MSAyMjIuNzc4IDI1Ni4zNzEgMjE2LjY5OEMyNTYuMjgxIDIxNC42OTggMjEzLjgzNiAxOTcuODIyIDE5Ny4yODEgMTgxLjUxOEMxODguNDM0IDE3Mi44MDUgMTg0LjIyOSAxNjguNjExIDE4MC41MTEgMTY1LjQ1OEMxNzguNDk5IDE2My43NSAxNzYuMzkyIDE2Mi4xNTggMTc0LjIwMSAxNjAuNjg4QzE2OC42MzggMTQxLjIzMSAxNjguMzk5IDEyMC42MzggMTczLjUxIDEwMS4wNThDMTQ4LjQ1IDExMi40NjggMTI4Ljk2IDEzMC41MDggMTE0LjggMTQ2LjQyOEgxMTQuNjhDMTA1LjAxIDEzNC4xNzggMTA1LjY4IDkzLjc3NzkgMTA2LjI1IDg1LjM0NzlDMTA2LjEzIDg0LjgxNzkgOTkuMDIyIDg5LjAxNTkgOTguMSA4OS42NTc5Qzg5LjUzNDIgOTUuNzEwMyA4MS41NTI4IDEwMi41NSA3NC4yNiAxMTAuMDg4QzU3Ljk2OSAxMjYuNjg4IDMwLjEyOCAxNjAuMjQyIDE4Ljc2IDIxMS4zMThDMTQuMjI0IDIzMS43MDEgMTIgMjU1LjczOSAxMiAyNjMuNjE4QzEyIDM5OC4zMTggMTIxLjIxIDUwNy41MDggMjU1LjkyIDUwNy41MDhDMzc2LjU2IDUwNy41MDggNDc4LjkzOSA0MjAuMjgxIDQ5Ni4zNSAzMDQuODg4QzUwNy45MjIgMjI4LjE5MiA0ODEuNjQgMTczLjgyIDQ4MS42NCAxNzIuODk4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJlZm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMy41MiwyNDEuNDhjLS4xMi0xLjU2LS4yNC0zLjEyLS4yNC00LjY4di0uMTJsLS4zNi00LjY4di0uMTJhMjQ1Ljg2LDI0NS44NiwwLDAsMC03LjMyLTQxLjE1YzAtLjEyLDAtLjEyLS4xMi0uMjRsLTEuMDgtNGMtLjEyLS4yNC0uMTItLjQ4LS4yNC0uNi0uMzYtMS4yLS43Mi0yLjUyLTEuMDgtMy43Mi0uMTItLjI0LS4xMi0uNi0uMjQtLjg0LS4zNi0xLjItLjcyLTIuNC0xLjA4LTMuNDgtLjEyLS4zNi0uMjQtLjYtLjM2LTEtLjM2LTEuMi0uNzItMi4yOC0xLjItMy40OGwtLjM2LTEuMDhjLS4zNi0xLjA4LS44NC0yLjI4LTEuMi0zLjM2YTguMjcsOC4yNywwLDAsMC0uMzYtMWMtLjQ4LTEuMDgtLjg0LTIuMjgtMS4zMi0zLjM2LS4xMi0uMjQtLjI0LS42LS4zNi0uODQtLjQ4LTEuMi0xLTIuMjgtMS40NC0zLjQ4LDAtLjEyLS4xMi0uMjQtLjEyLS4zNi0xLjU2LTMuODQtMy4yNC03LjY4LTUtMTEuNGwtLjM2LS43MmMtLjQ4LTEtLjg0LTEuOC0xLjMyLTIuNjQtLjI0LS40OC0uNDgtMS4wOC0uNzItMS41Ni0uMzYtLjg0LS44NC0xLjU2LTEuMi0yLjQtLjM2LS42LS42LTEuMi0xLTEuOHMtLjg0LTEuNDQtMS4yLTIuMjhjLS4zNi0uNi0uNzItMS4zMi0xLjA4LTEuOTJzLS44NC0xLjQ0LTEuMi0yLjE2YTE4LjA3LDE4LjA3LDAsMCwwLTEuMi0yYy0uMzYtLjcyLS44NC0xLjMyLTEuMi0ycy0uODQtMS4zMi0xLjItMi0uODQtMS4zMi0xLjItMS45Mi0uODQtMS40NC0xLjMyLTIuMTZhMTUuNjMsMTUuNjMsMCwwLDAtMS4yLTEuOEw0NjMuMiwxMTlhMTUuNjMsMTUuNjMsMCwwLDAtMS4yLTEuOGMtLjQ4LS43Mi0xLjA4LTEuNTYtMS41Ni0yLjI4LS4zNi0uNDgtLjcyLTEuMDgtMS4wOC0xLjU2bC0xLjgtMi41MmMtLjM2LS40OC0uNi0uODQtMS0xLjMyLTEtMS4zMi0xLjgtMi41Mi0yLjc2LTMuNzJhMjQ4Ljc2LDI0OC43NiwwLDAsMC0yMy41MS0yNi42NEExODYuODIsMTg2LjgyLDAsMCwwLDQxMiw2Mi40NmMtNC0zLjQ4LTguMTYtNi43Mi0xMi40OC05Ljg0YTE2Mi40OSwxNjIuNDksMCwwLDAtMjQuNi0xNS4xMmMtMi40LTEuMzItNC44LTIuNTItNy4yLTMuNzJhMjU0LDI1NCwwLDAsMC01NS40My0xOS41NmMtMS45Mi0uMzYtMy44NC0uODQtNS42NC0xLjJoLS4xMmMtMS0uMTItMS44LS4zNi0yLjc2LS40OGEyMzYuMzUsMjM2LjM1LDAsMCwwLTM4LTRIMjU1LjE0YTIzNC42MiwyMzQuNjIsMCwwLDAtNDUuNDgsNWMtMzMuNTksNy4wOC02My4yMywyMS4yNC04Mi45MSwzOS0xLjA4LDEtMS45MiwxLjY4LTIuNCwyLjE2bC0uNDguNDhIMTI0bC0uMTIuMTIuMTItLjEyYS4xMi4xMiwwLDAsMCwuMTItLjEybC0uMTIuMTJhLjQyLjQyLDAsMCwxLC4yNC0uMTJjMTQuNjQtOC43NiwzNC45Mi0xNiw0OS40NC0xOS41Nmw1Ljg4LTEuNDRjLjM2LS4xMi44NC0uMTIsMS4yLS4yNCwxLjY4LS4zNiwzLjM2LS43Miw1LjE2LTEuMDguMjQsMCwuNi0uMTIuODQtLjEyQzI1MC45NCwyMC45NCwzMTkuMzQsNDAuMTQsMzY3LDg1LjYxYTE3MS40OSwxNzEuNDksMCwwLDEsMjYuODgsMzIuNzZjMzAuMzYsNDkuMiwyNy40OCwxMTEuMTEsMy44NCwxNDcuNTktMzQuNDQsNTMtMTExLjM1LDcxLjI3LTE1OSwyNC44NGE4NC4xOSw4NC4xOSwwLDAsMS0yNS41Ni01OSw3NC4wNSw3NC4wNSwwLDAsMSw2LjI0LTMxYzEuNjgtMy44NCwxMy4wOC0yNS42NywxOC4yNC0yNC41OS0xMy4wOC0yLjc2LTM3LjU1LDIuNjQtNTQuNzEsMjguMTktMTUuMzYsMjIuOTItMTQuNTIsNTguMi01LDgzLjI4YTEzMi44NSwxMzIuODUsMCwwLDEtMTIuMTItMzkuMjRjLTEyLjI0LTgyLjU1LDQzLjMxLTE1Myw5NC4zMS0xNzAuNTEtMjcuNDgtMjQtOTYuNDctMjIuMzEtMTQ3LjcxLDE1LjM2LTI5Ljg4LDIyLTUxLjIzLDUzLjE2LTYyLjUxLDkwLjM2LDEuNjgtMjAuODgsOS42LTUyLjA4LDI1LjgtODMuODgtMTcuMTYsOC44OC0zOSwzNy00OS44LDYyLjg4LTE1LjYsMzcuNDMtMjEsODIuMTktMTYuMDgsMTI0Ljc5LjM2LDMuMjQuNzIsNi4zNiwxLjA4LDkuNiwxOS45MiwxMTcuMTEsMTIyLDIwNi4zOCwyNDQuNzgsMjA2LjM4QzM5Mi43Nyw1MDMuNDIsNTA0LDM5Mi4xOSw1MDQsMjU1LDUwMy44OCwyNTAuNDgsNTAzLjc2LDI0NS45Miw1MDMuNTIsMjQxLjQ4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJzdE9yZGVyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTAgNDg4LjIxQzExNS4zNCA0OTYuMjEgNy43OSAzODguNjYgNy43OSAyNTZTMTE1LjM0IDE1Ljc5IDI0OCAxNS43OSA0ODguMjEgMTIzLjM0IDQ4OC4yMSAyNTYgMzgwLjY2IDQ5Ni4yMSAyNDggNDk2LjIxem0wLTQ1OS45MkMxMjYuNjYgMzYuMjkgMjguMjkgMTM0LjY2IDI4LjI5IDI1NlMxMjYuNjYgNDc1LjcxIDI0OCA0NzUuNzEgNDY3LjcxIDM3Ny4zNCA0NjcuNzEgMjU2IDM2OS4zNCAzNi4yOSAyNDggMzYuMjl6bTAgNDMxLjIyYy0xMTYuODEgMC0yMTEuNTEtOTQuNjktMjExLjUxLTIxMS41MVMxMzEuMTkgNDQuNDkgMjQ4IDQ0LjQ5IDQ1OS41MSAxMzkuMTkgNDU5LjUxIDI1NiAzNjQuODEgNDY3LjUxIDI0OCA0NjcuNTF6bTE4Ni4yMy0xNjIuOThhMTkxLjYxMyAxOTEuNjEzIDAgMCAxLTIwLjEzIDQ4LjY5bC03NC4xMy0zNS44OCA2MS40OCA1NC44MmExOTMuNTE1IDE5My41MTUgMCAwIDEtMzcuMiAzNy4yOWwtNTQuOC02MS41NyAzNS44OCA3NC4yN2ExOTAuOTQ0IDE5MC45NDQgMCAwIDEtNDguNjMgMjAuMjNsLTI3LjI5LTc4LjQ3IDQuNzkgODIuOTNjLTguNjEgMS4xOC0xNy40IDEuOC0yNi4zMyAxLjhzLTE3LjcyLS42Mi0yNi4zMy0xLjhsNC43Ni04Mi40Ni0yNy4xNSA3OC4wM2ExOTEuMzY1IDE5MS4zNjUgMCAwIDEtNDguNjUtMjAuMmwzNS45My03NC4zNC01NC44NyA2MS42NGExOTMuODUgMTkzLjg1IDAgMCAxLTM3LjIyLTM3LjI4bDYxLjU5LTU0LjktNzQuMjYgMzUuOTNhMTkxLjYzOCAxOTEuNjM4IDAgMCAxLTIwLjE0LTQ4LjY5bDc3Ljg0LTI3LjExLTgyLjIzIDQuNzZjLTEuMTYtOC41Ny0xLjc4LTE3LjMyLTEuNzgtMjYuMjEgMC05IC42My0xNy44NCAxLjgyLTI2LjUxbDgyLjM4IDQuNzctNzcuOTQtMjcuMTZhMTkxLjcyNiAxOTEuNzI2IDAgMCAxIDIwLjIzLTQ4LjY3bDc0LjIyIDM1LjkyLTYxLjUyLTU0Ljg2YTE5My44NSAxOTMuODUgMCAwIDEgMzcuMjgtMzcuMjJsNTQuNzYgNjEuNTMtMzUuODMtNzQuMTdhMTkxLjQ5IDE5MS40OSAwIDAgMSA0OC42NS0yMC4xM2wyNi44NyA3Ny4yNS00LjcxLTgxLjYxYzguNjEtMS4xOCAxNy4zOS0xLjggMjYuMzItMS44czE3LjcxLjYyIDI2LjMyIDEuOGwtNC43NCA4Mi4xNiAyNy4wNS03Ny43NmMxNy4yNyA0LjUgMzMuNiAxMS4zNSA0OC42MyAyMC4xN2wtMzUuODIgNzQuMTIgNTQuNzItNjEuNDdhMTkzLjEzIDE5My4xMyAwIDAgMSAzNy4yNCAzNy4yM2wtNjEuNDUgNTQuNzcgNzQuMTItMzUuODZhMTkxLjUxNSAxOTEuNTE1IDAgMCAxIDIwLjIgNDguNjVsLTc3LjgxIDI3LjEgODIuMjQtNC43NWMxLjE5IDguNjYgMS44MiAxNy41IDEuODIgMjYuNDkgMCA4Ljg4LS42MSAxNy42My0xLjc4IDI2LjE5bC04Mi4xMi00Ljc1IDc3LjcyIDI3LjA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJzdE9yZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjkgMjI5LjJjLjEtLjEuMi0uMy4zLS40IDAgLjEgMCAuMy0uMS40aC0uMnpNMjI0IDk2LjZjLTcuMSAwLTE0LjYuNi0yMS40IDEuN2wzLjcgNjcuNC0yMi02NGMtMTQuMyAzLjctMjcuNyA5LjQtNDAgMTYuNmwyOS40IDYxLjQtNDUuMS01MC45Yy0xMS40IDguOS0yMS43IDE5LjEtMzAuNiAzMC45bDUwLjYgNDUuNC02MS4xLTI5LjdjLTcuMSAxMi4zLTEyLjkgMjUuNy0xNi42IDQwbDY0LjMgMjIuNi02OC00Yy0uOSA3LjEtMS40IDE0LjYtMS40IDIycy42IDE0LjYgMS40IDIxLjdsNjcuNy00LTY0IDIyLjZjMy43IDE0LjMgOS40IDI3LjcgMTYuNiA0MC4zbDYxLjEtMjkuN0w5Ny43IDM1MmM4LjkgMTEuNyAxOS4xIDIyLjMgMzAuOSAzMC45bDQ0LjktNTAuOS0yOS41IDYxLjRjMTIuMyA3LjQgMjUuNyAxMy4xIDQwIDE2LjlsMjIuMy02NC42LTQgNjhjNy4xIDEuMSAxNC42IDEuNyAyMS43IDEuNyA3LjQgMCAxNC42LS42IDIxLjctMS43bC00LTY4LjYgMjIuNiA2NS4xYzE0LjMtNCAyNy43LTkuNCA0MC0xNi45TDI3NC45IDMzMmw0NC45IDUwLjljMTEuNy04LjkgMjItMTkuMSAzMC42LTMwLjlsLTUwLjYtNDUuMSA2MS4xIDI5LjRjNy4xLTEyLjMgMTIuOS0yNS43IDE2LjYtNDAuM2wtNjQtMjIuMyA2Ny40IDRjMS4xLTcuMSAxLjQtMTQuMyAxLjQtMjEuN3MtLjMtMTQuOS0xLjQtMjJsLTY3LjcgNCA2NC0yMi4zYy0zLjctMTQuMy05LjEtMjgtMTYuNi00MC4zbC02MC45IDI5LjcgNTAuNi00NS40Yy04LjktMTEuNy0xOS4xLTIyLTMwLjYtMzAuOWwtNDUuMSA1MC45IDI5LjQtNjEuMWMtMTIuMy03LjQtMjUuNy0xMy4xLTQwLTE2LjlMMjQxLjcgMTY2bDQtNjcuN2MtNy4xLTEuMi0xNC4zLTEuNy0yMS43LTEuN3pNNDQzLjQgMTI4djI1NkwyMjQgNTEyIDQuNiAzODRWMTI4TDIyNCAwbDIxOS40IDEyOHptLTE3LjEgMTAuM0wyMjQgMjAuOSAyMS43IDEzOC4zdjIzNS4xTDIyNCA0OTEuMWwyMDIuMy0xMTcuN1YxMzguM3pNMjI0IDM3LjFsMTg3LjcgMTA5LjR2MjE4LjlMMjI0IDQ3NC45IDM2LjMgMzY1LjRWMTQ2LjZMMjI0IDM3LjF6bTAgNTAuOWMtOTIuMyAwLTE2Ni45IDc1LjEtMTY2LjkgMTY4IDAgOTIuNiA3NC42IDE2Ny43IDE2Ni45IDE2Ny43IDkyIDAgMTY2LjktNzUuMSAxNjYuOS0xNjcuNyAwLTkyLjktNzQuOS0xNjgtMTY2LjktMTY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJzdGRyYWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxOTJoLTY0djEyOEgxOTJ2MTI4SDB2LTI1LjZoMTY2LjR2LTEyOGgxMjh2LTEyOEgzODRWMTkyem0tMjUuNiAzOC40djEyOGgtMTI4djEyOEg2NFY1MTJoMTkyVjM4NGgxMjhWMjMwLjRoLTI1LjZ6bTI1LjYgMTkyaC04OS42VjUxMkgzMjB2LTY0aDY0di0yNS42ek0wIDB2Mzg0aDEyOFYyNTZoMTI4VjEyOGgxMjhWMEgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGlja3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTQ0LjUgMzE5Yy0zNS4xIDAtNjMuNS0yOC40LTYzLjUtNjMuNXMyOC40LTYzLjUgNjMuNS02My41IDYzLjUgMjguNCA2My41IDYzLjUtMjguNCA2My41LTYzLjUgNjMuNXptMTU5IDBjLTM1LjEgMC02My41LTI4LjQtNjMuNS02My41czI4LjQtNjMuNSA2My41LTYzLjUgNjMuNSAyOC40IDYzLjUgNjMuNS0yOC40IDYzLjUtNjMuNSA2My41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGlwYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMySDB6bTM1OC40IDE3OS4yaC04OS42djg5LjZoLTg5LjZ2ODkuNkg4OS42VjEyMS42aDI2OC44djg5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTcuOCA0MjcuOGMxMi45IDExLjcgMzMuNyAzMy4zIDMzLjIgNTAuNyAwIC44LS4xIDEuNi0uMSAyLjUtMS44IDE5LjgtMTguOCAzMS4xLTM5LjEgMzEtMjUtLjEtMzkuOS0xNi44LTM4LjctMzUuOCAxLTE2LjIgMjAuNS0zNi43IDMyLjQtNDcuNiAyLjMtMi4xIDIuNy0yLjcgNS42LTMuNiAzLjQgMCAzLjkuMyA2LjcgMi44ek0zMzEuOSA2Ny4zYy0xNi4zLTI1LjctMzguNi00MC42LTYzLjMtNTIuMUMyNDMuMSA0LjUgMjE0LS4yIDE5MiAwYy00NC4xIDAtNzEuMiAxMy4yLTgxLjEgMTcuM0M1Ny4zIDQ1LjIgMjYuNSA4Ny4yIDI4IDE1OC42YzcuMSA4Mi4yIDk3IDE3NiAxNTUuOCAyMzMuOCAxLjcgMS42IDQuNSA0LjUgNi4yIDUuMWwzLjMuMWMyLjEtLjcgMS44LS41IDMuNS0yLjEgNTIuMy00OS4yIDE0MC43LTE0NS44IDE1NS45LTIxNS43IDctMzkuMiAzLjEtNzIuNS0yMC44LTExMi41ek0xODYuOCAzNTEuOWMtMjgtNTEuMS02NS4yLTEzMC43LTY5LjMtMTg5LTMuNC00Ny41IDExLjQtMTMxLjIgNjkuMy0xMzYuN3YzMjUuN3pNMzI4LjcgMTgwYy0xNi40IDU2LjgtNzcuMyAxMjgtMTE4LjkgMTcwLjNDMjM3LjYgMjk4LjQgMjc1IDIxNyAyNzcgMTU4LjRjMS42LTQ1LjktOS44LTEwNS44LTQ4LTEzMS40IDg4LjggMTguMyAxMTUuNSA5OC4xIDk5LjcgMTUzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250QXdlc29tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05MS43IDk2QzEwNi4zIDg2LjggMTE2IDcwLjUgMTE2IDUyQzExNiAyMy4zIDkyLjcgMCA2NCAwUzEyIDIzLjMgMTIgNTJjMCAxNi43IDcuOCAzMS41IDIwIDQxbDAgMyAwIDM1MiAwIDY0IDY0IDAgMC02NCAzNzMuNiAwYzE0LjYgMCAyNi40LTExLjggMjYuNC0yNi40YzAtMy43LS44LTcuMy0yLjMtMTAuN0w0MzIgMjcybDYxLjctMTM4LjljMS41LTMuNCAyLjMtNyAyLjMtMTAuN2MwLTE0LjYtMTEuOC0yNi40LTI2LjQtMjYuNEw5MS43IDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250aWNvbnNGaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTQuNCAyMjRoOTIuNGwtMTUuMiA1MS4yaC03Ni40VjQzM2MwIDgtMi44IDkuMiA0LjQgMTBsNTkuNiA1LjZWNDgzSDB2LTM1LjJsMjkuMi0yLjhjNy4yLS44IDkuMi0zLjIgOS4yLTEwLjhWMjc4LjRjMC0zLjItNC0zLjItOC0zLjJIMFYyMjRoMzguNHYtMjguOGMwLTY4IDM2LjQtOTYgMTA2LTk2IDQ2LjggMCA4OC44IDExLjIgODguOCA3Mi40bC02OS42IDguNGMuNC0yNS42LTYtMzEuNi0yMi40LTMxLjYtMjUuMiAwLTI2IDEzLjYtMjYgMzcuNnYzMmMwIDMuMi00LjggNi0uOCA2ek0zODQgNDgzSDI0My4ydi0zNC40bDI4LTMuNmM3LjItLjggMTAuNC0yLjQgMTAuNC0xMFYyODdjMC01LjYtNC05LjItOS4yLTEwLjhsLTMzLjItOC44IDkuMi00MC40aDExMHYyMDhjMCA4LTMuNiA4LjggNCAxMGwyMS42IDMuNlY0ODN6bS0zMC0zNDcuMmwxMi40IDQ1LjYtMTAgMTAtNDIuOC0yMi44LTQyLjggMjIuOC0xMC0xMCAxMi40LTQ1LjYtMzAtMzYuNCA0LjgtMTBoMzhMMzA3LjIgNTFIMzIwbDIxLjIgMzguNGgzOGw0LjggMTMuMi0zMCAzMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250aWNvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMyem0xODcgMTQwLjljLTE4LjQgMC0xOSA5LjktMTkgMjcuNHYyMy4zYzAgMi40LTMuNSA0LjQtLjYgNC40aDY3LjRsLTExLjEgMzcuM0gxNjh2MTEyLjljMCA1LjgtMiA2LjcgMy4yIDcuM2w0My41IDQuMXYyNS4xSDg0VjM4OWwyMS4zLTJjNS4yLS42IDYuNy0yLjMgNi43LTcuOVYyNjcuN2MwLTIuMy0yLjktMi4zLTUuOC0yLjNIODRWMjI4aDI4di0yMWMwLTQ5LjYgMjYuNS03MCA3Ny4zLTcwIDM0LjEgMCA2NC43IDguMiA2NC43IDUyLjhsLTUwLjcgNi4xYy4zLTE4LjctNC40LTIzLTE2LjMtMjN6bTc0LjMgMjQxLjh2LTI1LjFsMjAuNC0yLjZjNS4yLS42IDcuNi0xLjcgNy42LTcuM1YyNzEuOGMwLTQuMS0yLjktNi43LTYuNy03LjlsLTI0LjItNi40IDYuNy0yOS41aDgwLjJ2MTUxLjdjMCA1LjgtMi42IDYuNCAyLjkgNy4zbDE1LjcgMi42djI1LjF6bTgwLjgtMjU1LjVsOSAzMy4yLTcuMyA3LjMtMzEuMi0xNi42LTMxLjIgMTYuNi03LjMtNy4zIDktMzMuMi0yMS44LTI0LjIgMy41LTkuNmgyNy43bDE1LjUtMjhoOS4zbDE1LjUgMjhoMjcuN2wzLjUgOS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb3J0QXdlc29tZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggMjM3LjRoLTIyLjJjLTIuMSAwLTMuNyAxLjYtMy43IDMuN3Y1MS43YzAgMi4xIDEuNiAzLjcgMy43IDMuN0gyMDhjMi4xIDAgMy43LTEuNiAzLjctMy43di01MS43YzAtMi4xLTEuNi0zLjctMy43LTMuN3ptMTE4LjIgMEgzMDRjLTIuMSAwLTMuNyAxLjYtMy43IDMuN3Y1MS43YzAgMi4xIDEuNiAzLjcgMy43IDMuN2gyMi4yYzIuMSAwIDMuNy0xLjYgMy43LTMuN3YtNTEuN2MtLjEtMi4xLTEuNy0zLjctMy43LTMuN3ptMTMyLTEyNS4xYy0yLjMtMy4yLTQuNi02LjQtNy4xLTkuNS05LjgtMTIuNS0yMC44LTI0LTMyLjgtMzQuNC00LjUtMy45LTkuMS03LjYtMTMuOS0xMS4yLTEuNi0xLjItMy4yLTIuMy00LjgtMy41QzM3MiAzNC4xIDM0MC4zIDIwIDMwNiAxM2MtMTYuMi0zLjMtMzIuOS01LTUwLTVzLTMzLjkgMS43LTUwIDVjLTM0LjMgNy4xLTY2IDIxLjItOTMuMyA0MC44LTEuNiAxLjEtMy4yIDIuMy00LjggMy41LTQuOCAzLjYtOS40IDcuMy0xMy45IDExLjItMyAyLjYtNS45IDUuMy04LjggOHMtNS43IDUuNS04LjQgOC40Yy01LjUgNS43LTEwLjcgMTEuOC0xNS42IDE4LTIuNCAzLjEtNC44IDYuMy03LjEgOS41QzI1LjIgMTUzIDguMyAyMDIuNSA4LjMgMjU2YzAgMiAuMSA0IC4xIDYgLjEuNy4xIDEuMy4xIDIgLjEgMS4zLjEgMi43LjIgNCAwIC44LjEgMS41LjEgMi4zIDAgMS4zLjEgMi41LjIgMy43LjEuOC4xIDEuNi4yIDIuNC4xIDEuMS4yIDIuMy4zIDMuNSAwIC44LjEgMS42LjIgMi40LjEgMS4yLjMgMi40LjQgMy42LjEuOC4yIDEuNS4zIDIuMy4xIDEuMy4zIDIuNi41IDMuOS4xLjYuMiAxLjMuMyAxLjlsLjkgNS43Yy4xLjYuMiAxLjEuMyAxLjcuMyAxLjMuNSAyLjcuOCA0IC4yLjguMyAxLjYuNSAyLjQuMiAxIC41IDIuMS43IDMuMi4yLjkuNCAxLjcuNiAyLjYuMiAxIC40IDIgLjcgMyAuMi45LjUgMS44LjcgMi43LjMgMSAuNSAxLjkuOCAyLjkuMy45LjUgMS44LjggMi43LjIuOS41IDEuOS44IDIuOHMuNSAxLjguOCAyLjdjLjMgMSAuNiAxLjkuOSAyLjguNiAxLjYgMS4xIDMuMyAxLjcgNC45LjQgMSAuNyAxLjkgMSAyLjguMyAxIC43IDIgMS4xIDMgLjMuOC42IDEuNS45IDIuM2wxLjIgM2MuMy43LjYgMS41LjkgMi4yLjQgMSAuOSAyIDEuMyAzbC45IDIuMWMuNSAxIC45IDIgMS40IDMgLjMuNy42IDEuMy45IDIgLjUgMSAxIDIuMSAxLjUgMy4xLjIuNi41IDEuMS44IDEuNy42IDEuMSAxLjEgMi4yIDEuNyAzLjMuMS4yLjIuMy4zLjUgMi4yIDQuMSA0LjQgOC4yIDYuOCAxMi4yLjIuNC41LjguNyAxLjIuNyAxLjEgMS4zIDIuMiAyIDMuMy4zLjUuNi45LjkgMS40LjYgMS4xIDEuMyAyLjEgMiAzLjIuMy41LjYuOS45IDEuNC43IDEuMSAxLjQgMi4xIDIuMSAzLjIuMi40LjUuOC44IDEuMi43IDEuMSAxLjUgMi4yIDIuMyAzLjMuMi4yLjMuNS41LjcgMzcuNSA1MS43IDk0LjQgODguNSAxNjAgOTkuNC45LjEgMS43LjMgMi42LjQgMSAuMiAyLjEuNCAzLjEuNXMxLjkuMyAyLjguNGMxIC4yIDIgLjMgMyAuNC45LjEgMS45LjIgMi45LjNzMS45LjIgMi45LjMgMi4xLjIgMy4xLjNjLjkuMSAxLjguMSAyLjcuMiAxLjEuMSAyLjMuMSAzLjQuMi44IDAgMS43LjEgMi41LjEgMS4zIDAgMi42LjEgMy45LjEuNy4xIDEuNC4xIDIuMS4xIDIgLjEgNCAuMSA2IC4xczQtLjEgNi0uMWMuNyAwIDEuNC0uMSAyLjEtLjEgMS4zIDAgMi42IDAgMy45LS4xLjggMCAxLjctLjEgMi41LS4xIDEuMS0uMSAyLjMtLjEgMy40LS4yLjkgMCAxLjgtLjEgMi43LS4yIDEtLjEgMi4xLS4yIDMuMS0uM3MxLjktLjIgMi45LS4zYy45LS4xIDEuOS0uMiAyLjktLjNzMi0uMyAzLS40IDEuOS0uMyAyLjgtLjRjMS0uMiAyLjEtLjMgMy4xLS41LjktLjEgMS43LS4zIDIuNi0uNCA2NS42LTExIDEyMi41LTQ3LjcgMTYwLjEtMTAyLjQuMi0uMi4zLS41LjUtLjcuOC0xLjEgMS41LTIuMiAyLjMtMy4zLjItLjQuNS0uOC44LTEuMi43LTEuMSAxLjQtMi4xIDIuMS0zLjIuMy0uNS42LS45LjktMS40LjYtMS4xIDEuMy0yLjEgMi0zLjIuMy0uNS42LS45LjktMS40LjctMS4xIDEuMy0yLjIgMi0zLjMuMi0uNC41LS44LjctMS4yIDIuNC00IDQuNi04LjEgNi44LTEyLjIuMS0uMi4yLS4zLjMtLjUuNi0xLjEgMS4xLTIuMiAxLjctMy4zLjItLjYuNS0xLjEuOC0xLjcuNS0xIDEtMi4xIDEuNS0zLjEuMy0uNy42LTEuMy45LTIgLjUtMSAxLTIgMS40LTNsLjktMi4xYy41LTEgLjktMiAxLjMtMyAuMy0uNy42LTEuNS45LTIuMmwxLjItM2MuMy0uOC42LTEuNS45LTIuMy40LTEgLjctMiAxLjEtM3MuNy0xLjkgMS0yLjhjLjYtMS42IDEuMi0zLjMgMS43LTQuOS4zLTEgLjYtMS45LjktMi44cy41LTEuOC44LTIuN2MuMi0uOS41LTEuOS44LTIuOHMuNi0xLjguOC0yLjdjLjMtMSAuNS0xLjkuOC0yLjkuMi0uOS41LTEuOC43LTIuNy4yLTEgLjUtMiAuNy0zIC4yLS45LjQtMS43LjYtMi42LjItMSAuNS0yLjEuNy0zLjIuMi0uOC4zLTEuNi41LTIuNC4zLTEuMy42LTIuNy44LTQgLjEtLjYuMi0xLjEuMy0xLjdsLjktNS43Yy4xLS42LjItMS4zLjMtMS45LjEtMS4zLjMtMi42LjUtMy45LjEtLjguMi0xLjUuMy0yLjMuMS0xLjIuMy0yLjQuNC0zLjYgMC0uOC4xLTEuNi4yLTIuNC4xLTEuMS4yLTIuMy4zLTMuNS4xLS44LjEtMS42LjItMi40LjEgMS43LjEuNS4yLS43IDAtLjguMS0xLjUuMS0yLjMuMS0xLjMuMi0yLjcuMi00IC4xLS43LjEtMS4zLjEtMiAuMS0yIC4xLTQgLjEtNiAwLTUzLjUtMTYuOS0xMDMtNDUuOC0xNDMuN3pNNDQ4IDM3MS41Yy05LjQgMTUuNS0yMC42IDI5LjktMzMuNiA0Mi45LTIwLjYgMjAuNi00NC41IDM2LjctNzEuMiA0OC0xMy45IDUuOC0yOC4yIDEwLjMtNDIuOSAxMy4ydi03NS44YzAtNTguNi04OC42LTU4LjYtODguNiAwdjc1LjhjLTE0LjctMi45LTI5LTcuMy00Mi45LTEzLjItMjYuNy0xMS4zLTUwLjYtMjcuNC03MS4yLTQ4LTEzLTEzLTI0LjItMjcuNC0zMy42LTQyLjl2LTcxLjNjMC0yLjEgMS42LTMuNyAzLjctMy43aDIyLjFjMi4xIDAgMy43IDEuNiAzLjcgMy43VjMyNmgyOS42VjE4MmMwLTIuMSAxLjYtMy43IDMuNy0zLjdoMjIuMWMyLjEgMCAzLjcgMS42IDMuNyAzLjd2MjUuOWgyOS41VjE4MmMwLTIuMSAxLjYtMy43IDMuNy0zLjdIMjA4YzIuMSAwIDMuNyAxLjYgMy43IDMuN3YyNS45aDI5LjVWMTgyYzAtNC44IDYuNS0zLjcgOS41LTMuN1Y4OC4xYy00LjQtMi03LjQtNi43LTcuNC0xMS41IDAtMTYuOCAyNS40LTE2LjggMjUuNCAwIDAgNC44LTMgOS40LTcuNCAxMS41VjkyYzYuMy0xLjQgMTIuNy0yLjMgMTkuMi0yLjMgOS40IDAgMTguNCAzLjUgMjYuMyAzLjUgNy4yIDAgMTUuMi0zLjUgMTkuNC0zLjUgMi4xIDAgMy43IDEuNiAzLjcgMy43djQ4LjRjMCA1LjYtMTguNyA2LjUtMjIuNCA2LjUtOC42IDAtMTYuNi0zLjUtMjUuNC0zLjUtNyAwLTE0LjEgMS4yLTIwLjggMi44djMwLjdjMyAwIDkuNS0xLjEgOS41IDMuN3YyNS45aDI5LjVWMTgyYzAtMi4xIDEuNi0zLjcgMy43LTMuN2gyMi4yYzIuMSAwIDMuNyAxLjYgMy43IDMuN3YyNS45aDI5LjVWMTgyYzAtMi4xIDEuNi0zLjcgMy43LTMuN2gyMi4xYzIuMSAwIDMuNyAxLjYgMy43IDMuN3YxNDRoMjkuNXYtMjUuOGMwLTIuMSAxLjYtMy43IDMuNy0zLjdoMjIuMmMyLjEgMCAzLjcgMS42IDMuNyAzLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvcnRBd2Vzb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OS4yIDI4Ny45aC0yNy40Yy0yLjYgMC00LjYgMi00LjYgNC42djMyaC0zNi42VjE0Ni4yYzAtMi42LTItNC42LTQuNi00LjZoLTI3LjRjLTIuNiAwLTQuNiAyLTQuNiA0LjZ2MzJoLTM2LjZ2LTMyYzAtMi42LTItNC42LTQuNi00LjZoLTI3LjRjLTIuNiAwLTQuNiAyLTQuNiA0LjZ2MzJoLTM2LjZ2LTMyYzAtNi04LTQuNi0xMS43LTQuNnYtMzhjOC4zLTIgMTcuMS0zLjQgMjUuNy0zLjQgMTAuOSAwIDIwLjkgNC4zIDMxLjQgNC4zIDQuNiAwIDI3LjctMS4xIDI3LjctOHYtNjBjMC0yLjYtMi00LjYtNC42LTQuNi01LjEgMC0xNS4xIDQuMy0yNCA0LjMtOS43IDAtMjAuOS00LjMtMzIuNi00LjMtOCAwLTE2IDEuMS0yMy43IDIuOXYtNC45YzUuNC0yLjYgOS4xLTguMyA5LjEtMTQuMyAwLTIwLjctMzEuNC0yMC44LTMxLjQgMCAwIDYgMy43IDExLjcgOS4xIDE0LjN2MTExLjdjLTMuNyAwLTExLjctMS40LTExLjcgNC42djMyaC0zNi42di0zMmMwLTIuNi0yLTQuNi00LjYtNC42aC0yNy40Yy0yLjYgMC00LjYgMi00LjYgNC42djMySDEyOHYtMzJjMC0yLjYtMi00LjYtNC42LTQuNkg5NmMtMi42IDAtNC42IDItNC42IDQuNnYxNzguM0g1NC44di0zMmMwLTIuNi0yLTQuNi00LjYtNC42SDIyLjhjLTIuNiAwLTQuNiAyLTQuNiA0LjZWNTEyaDE4Mi45di05NmMwLTcyLjYgMTA5LjctNzIuNiAxMDkuNyAwdjk2aDE4Mi45VjI5Mi41Yy4xLTIuNi0xLjktNC42LTQuNS00LjZ6bS0yODguMS00LjVjMCAyLjYtMiA0LjYtNC42IDQuNmgtMjcuNGMtMi42IDAtNC42LTItNC42LTQuNnYtNjRjMC0yLjYgMi00LjYgNC42LTQuNmgyNy40YzIuNiAwIDQuNiAyIDQuNiA0LjZ2NjR6bTE0Ni40IDBjMCAyLjYtMiA0LjYtNC42IDQuNmgtMjcuNGMtMi42IDAtNC42LTItNC42LTQuNnYtNjRjMC0yLjYgMi00LjYgNC42LTQuNmgyNy40YzIuNiAwIDQuNiAyIDQuNiA0LjZ2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvcnVtYmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuOCAzMDkuN0MyIDI5Mi43IDAgMjc1LjUgMCAyNTguMyAwIDEzNSA5OS44IDM1IDIyMy4xIDM1YzE2LjYgMCAzMy4zIDIgNDkuMyA1LjVDMTQ5IDg3LjUgNTEuOSAxODYgNS44IDMwOS43em0zOTIuOS0xODkuMkMzODUgMTAzIDM2OSA4Ny44IDM1MC45IDc1LjJjLTE0OS42IDQ0LjMtMjY2LjMgMTYyLjEtMzA5LjcgMzEyIDEyLjUgMTguMSAyOCAzNS42IDQ1LjIgNDkgNDMuMS0xNTEuMyAxNjEuMi0yNzEuNyAzMTIuMy0zMTUuN3ptMTUuOCAyNTIuN2MxNS4yLTI1LjEgMjUuNC01My43IDI5LjUtODIuOC03OS40IDQyLjktMTQ1IDExMC42LTE4Ny42IDE5MC4zIDMwLTQuNCA1OC45LTE1LjMgODQuNi0zMS4zIDM1IDEzLjEgNzAuOSAyNC4zIDEwNyAzMy42LTkuMy0zNi41LTIwLjQtNzQuNS0zMy41LTEwOS44em0yOS43LTE0NS41Yy0yLjYtMTkuNS03LjktMzguNy0xNS44LTU2LjhDMjkwLjUgMjE2LjcgMTgyIDMyNy41IDEzNy4xIDQ2NmMxOC4xIDcuNiAzNyAxMi41IDU2LjYgMTUuMkMyNDAgMzY3LjEgMzMwLjUgMjc0LjQgNDQ0LjIgMjI3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvdXJzcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM2OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIzLjEgM0g0OS45QzEyLjQgMyAwIDMxLjMgMCA0OS4xdjQzMy44YzAgMjAuMyAxMi4xIDI3LjcgMTguMiAzMC4xIDYuMiAyLjUgMjIuOCA0LjYgMzIuOS03LjFDMTgwIDM1Ni41IDE4Mi4yIDM1NCAxODIuMiAzNTRjMy4xLTMuNCAzLjQtMy4xIDYuOC0zLjFoODMuNGMzNS4xIDAgNDAuNi0yNS4yIDQ0LjMtMzkuN2w0OC42LTI0M0MzNzMuOCAyNS44IDM2My4xIDMgMzIzLjEgM3ptLTE2LjMgNzMuOGwtMTEuNCA1OS43Yy0xLjIgNi41LTkuNSAxMy4yLTE2LjkgMTMuMkgxNzIuMWMtMTIgMC0yMC42IDguMy0yMC42IDIwLjN2MTNjMCAxMiA4LjYgMjAuNiAyMC42IDIwLjZoOTAuNGM4LjMgMCAxNi42IDkuMiAxNC44IDE4LjItMS44IDguOS0xMC41IDUzLjgtMTEuNCA1OC44LS45IDQuOS02LjggMTMuNS0xNi45IDEzLjVoLTczLjVjLTEzLjUgMC0xNy4yIDEuOC0yNi41IDEyLjYgMCAwLTguOSAxMS40LTg5LjUgMTA4LjMtLjkuOS0xLjguNi0xLjgtLjNWNzUuOWMwLTcuNyA2LjgtMTYuNiAxNi42LTE2LjZoMjE5YzguMiAwIDE1LjYgNy43IDEzLjUgMTcuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnJlZUNvZGVDYW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk3LjIyLDk2LjIxYzEwLjM2LTEwLjY1LDE2LTE3LjEyLDE2LTIxLjksMC0yLjc2LTEuOTItNS41MS0zLjgzLTcuNDJBMTQuODEsMTQuODEsMCwwLDAsMTAxLDY0LjA1Yy04LjQ4LDAtMjAuOTIsOC43OS0zNS44NCwyNS42OUMyMy42OCwxMzcsMi41MSwxODIuODEsMy4zNywyNTAuMzRzMTcuNDcsMTE3LDU0LjA2LDE2MS44N0M3Ni4yMiw0MzUuODYsOTAuNjIsNDQ4LDEwMC45LDQ0OGExMy41NSwxMy41NSwwLDAsMCw4LjM3LTMuODRjMS45MS0yLjc2LDMuODEtNS42MywzLjgxLTguMzgsMC01LjYzLTMuODYtMTIuMi0xMy4yLTIwLjU1LTQ0LjQ1LTQyLjMzLTY3LjMyLTk3LTY3LjQ4LTE2NUMzMi4yNSwxODguOCw1NCwxMzcuODMsOTcuMjIsOTYuMjFaTTIzOS40Nyw0MjAuMDdjLjU4LjM3LjkxLjU1LjkxLjU1Wm05My43OS41NS4xNy0uMTNDMzMzLjI0LDQyMC42MiwzMzMuMTcsNDIwLjY3LDMzMy4yNiw0MjAuNjJabTMuMTMtMTU4LjE4Yy0xNi4yNC00LjE1LDUwLjQxLTgyLjg5LTY4LjA1LTE3Ny4xNywwLDAsMTUuNTQsNDkuMzgtNjIuODMsMTU5LjU3LTc0LjI3LDEwNC4zNSwyMy40NiwxNjguNzMsMzQsMTc1LjIzLTYuNzMtNC4zNS00Ny40LTM1LjcsOS41NS0xMjguNjQsMTEtMTguMywyNS41My0zNC44Nyw0My41LTcyLjE2LDAsMCwxNS45MSwyMi40NSw3LjYsNzEuMTNDMjg3LjcsMzY0LDM1NCwzNDIuOTEsMzU1LDM0My45NGMyMi43NSwyNi43OC0xNy43Miw3My41MS0yMS41OCw3Ni41NSw1LjQ5LTMuNjUsMTE3LjcxLTc4LDMzLTE4OC4xQzM2MC40MywyMzguNCwzNTIuNjIsMjY2LjU5LDMzNi4zOSwyNjIuNDRaTTUxMC44OCw4OS42OUM0OTYsNzIuNzksNDgzLjUyLDY0LDQ3NSw2NGExNC44MSwxNC44MSwwLDAsMC04LjM5LDIuODRjLTEuOTEsMS45MS0zLjgzLDQuNjYtMy44Myw3LjQyLDAsNC43OCw1LjYsMTEuMjYsMTYsMjEuOSw0My4yMyw0MS42MSw2NSw5Mi41OSw2NC44MiwxNTQuMDYtLjE2LDY4LTIzLDEyMi42My02Ny40OCwxNjUtOS4zNCw4LjM1LTEzLjE4LDE0LjkyLTEzLjIsMjAuNTUsMCwyLjc1LDEuOSw1LjYyLDMuODEsOC4zOEExMy42MSwxMy42MSwwLDAsMCw0NzUuMSw0NDhjMTAuMjgsMCwyNC42OC0xMi4xMyw0My40Ny0zNS43OSwzNi41OS00NC44NSw1My4xNC05NC4zOCw1NC4wNi0xNjEuODdTNTUyLjMyLDEzNyw1MTAuODgsODkuNjlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZyZWVic2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAzLjcgOTYuMmMxMS4xLTExLjEgMTE1LjUtNzcgMTM5LjItNTMuMiAyMy43IDIzLjctNDIuMSAxMjguMS01My4yIDEzOS4yLTExLjEgMTEuMS0zOS40LjktNjMuMS0yMi45LTIzLjgtMjMuNy0zNC4xLTUyLTIyLjktNjMuMXpNMTA5LjkgNjguMUM3My42IDQ3LjUgMjIgMjQuNiA1LjYgNDEuMWMtMTYuNiAxNi42IDcuMSA2OS40IDI3LjkgMTA1LjcgMTguNS0zMi4yIDQ0LjgtNTkuMyA3Ni40LTc4Ljd6TTQwNi43IDE3NGMzLjMgMTEuMyAyLjcgMjAuNy0yLjcgMjYuMS0yMC4zIDIwLjMtODcuNS0yNy0xMDkuMy03MC4xLTE4LTMyLjMtMTEuMS01My40IDE0LjktNDguNyA1LjctMy42IDEyLjMtNy42IDE5LjYtMTEuNi0yOS44LTE1LjUtNjMuNi0yNC4zLTk5LjUtMjQuMy0xMTkuMSAwLTIxNS42IDk2LjUtMjE1LjYgMjE1LjYgMCAxMTkgOTYuNSAyMTUuNiAyMTUuNiAyMTUuNlM0NDUuMyAzODAuMSA0NDUuMyAyNjFjMC0zOC40LTEwLjEtNzQuNS0yNy43LTEwNS44LTMuOSA3LTcuNiAxMy4zLTEwLjkgMTguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnVsY3J1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NS43NSAxNjQuMTRsLTM1LjM4IDQzLjU1TDI1IDE2NC4xNGwzNS4zOC00My41NXpNMTQ0LjIzIDBsLTIwLjU0IDE5OC4xOEw3Mi43MiAyNTZsNTEgNTcuODJMMTQ0LjIzIDUxMlYzMDAuODlMMTAzLjE1IDI1Nmw0MS4wOC00NC44OXptNzkuNjcgMTY0LjE0bDM1LjM4IDQzLjU1IDM1LjM4LTQzLjU1LTM1LjM4LTQzLjU1em0tNDguNDggNDdMMjE2LjUgMjU2bC00MS4wOCA0NC44OVY1MTJMMTk2IDMxMy44MiAyNDcgMjU2bC01MS01Ny44MkwxNzUuNDIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2FsYWN0aWNSZXB1YmxpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggNTA0QzExMS4yNSA1MDQgMCAzOTIuNzUgMCAyNTZTMTExLjI1IDggMjQ4IDhzMjQ4IDExMS4yNSAyNDggMjQ4LTExMS4yNSAyNDgtMjQ4IDI0OHptMC00NzkuNDdDMTIwLjM3IDI0LjUzIDE2LjUzIDEyOC4zNyAxNi41MyAyNTZTMTIwLjM3IDQ4Ny40NyAyNDggNDg3LjQ3IDQ3OS40NyAzODMuNjMgNDc5LjQ3IDI1NiAzNzUuNjMgMjQuNTMgMjQ4IDI0LjUzem0yNy42MiAyMS44MXYyNC42MmExODUuOTMzIDE4NS45MzMgMCAwIDEgODMuNTcgMzQuNTRsMTcuMzktMTcuMzZjLTI4Ljc1LTIyLjA2LTYzLjMtMzYuODktMTAwLjk2LTQxLjh6bS01NS4zNy4wN2MtMzcuNjQgNC45NC03Mi4xNiAxOS44LTEwMC44OCA0MS44NWwxNy4yOCAxNy4zNmguMDhjMjQuMDctMTcuODQgNTIuNTUtMzAuMDYgODMuNTItMzQuNjdWNDYuNDF6bTEyLjI1IDUwLjE3djgyLjg3Yy0xMC4wNCAyLjAzLTE5LjQyIDUuOTQtMjcuNjcgMTEuNDJsLTU4LjYyLTU4LjU5LTIxLjkzIDIxLjkzIDU4LjY3IDU4LjY3Yy01LjQ3IDguMjMtOS40NSAxNy41OS0xMS40NyAyNy42MmgtODIuOXYzMWg4Mi45YzIuMDIgMTAuMDIgNi4wMSAxOS4zMSAxMS40NyAyNy41NGwtNTguNjcgNTguNjkgMjEuOTMgMjEuOTMgNTguNjItNTguNjJhNzcuODczIDc3Ljg3MyAwIDAgMCAyNy42NyAxMS40N3Y4Mi45aDMxdi04Mi45YzEwLjA1LTIuMDMgMTkuMzctNi4wNiAyNy42Mi0xMS41NWw1OC42NyA1OC42OSAyMS45My0yMS45My01OC42Ny01OC42OWM1LjQ2LTguMjMgOS40Ny0xNy41MiAxMS41LTI3LjU0aDgyLjg3di0zMWgtODIuODdjLTIuMDItMTAuMDItNi4wMy0xOS4zOC0xMS41LTI3LjYybDU4LjY3LTU4LjY3LTIxLjkzLTIxLjkzLTU4LjY3IDU4LjY3Yy04LjI1LTUuNDktMTcuNTctOS40Ny0yNy42Mi0xMS41Vjk2LjU4aC0zMXptMTgzLjI0IDMwLjcybC0xNy4zNiAxNy4zNmExODYuMzM3IDE4Ni4zMzcgMCAwIDEgMzQuNjcgODMuNjdoMjQuNjJjLTQuOTUtMzcuNjktMTkuODMtNzIuMjktNDEuOTMtMTAxLjAzem0tMzM1LjU1LjEzYy0yMi4wNiAyOC43Mi0zNi45MSA2My4yNi00MS44NSAxMDAuOTFoMjQuNjVjNC42LTMwLjk2IDE2Ljc2LTU5LjQ1IDM0LjU5LTgzLjUybC0xNy4zOS0xNy4zOXpNMzguMzQgMjgzLjY3YzQuOTIgMzcuNjQgMTkuNzUgNzIuMTggNDEuOCAxMDAuOWwxNy4zNi0xNy4zOWMtMTcuODEtMjQuMDctMjkuOTItNTIuNTctMzQuNTEtODMuNTJIMzguMzR6bTM5NC43IDBjLTQuNjEgMzAuOTktMTYuOCA1OS41LTM0LjY3IDgzLjZsMTcuMzYgMTcuMzZjMjIuMDgtMjguNzQgMzYuOTgtNjMuMjkgNDEuOTMtMTAwLjk2aC0yNC42MnpNMTM2LjY2IDQwNi4zOGwtMTcuMzYgMTcuMzZjMjguNzMgMjIuMDkgNjMuMyAzNi45OCAxMDAuOTYgNDEuOTN2LTI0LjY0Yy0zMC45OS00LjYzLTU5LjUzLTE2Ljc5LTgzLjYtMzQuNjV6bTIyMi41My4wNWMtMjQuMDkgMTcuODQtNTIuNTggMzAuMDgtODMuNTcgMzQuNjd2MjQuNTdjMzcuNjctNC45MiA3Mi4yMS0xOS43OSAxMDAuOTYtNDEuODVsLTE3LjMxLTE3LjM5aC0uMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdhbGFjdGljU2VuYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OS44NiAzMy40OHYyNi4wN0MyMzYuMjggODAuMTcgMjI2IDE2OC4xNCAyMjUuMzkgMjc0LjljMTEuNzQtMTUuNjIgMTkuMTMtMzMuMzMgMTkuMTMtNDguMjR2LTE2Ljg4Yy0uMDMtNS4zMi43NS0xMC41MyAyLjE5LTE1LjY1LjY1LTIuMTQgMS4zOS00LjA4IDIuNjItNS44MiAxLjIzLTEuNzUgMy40My0zLjc5IDYuNjgtMy43OSAzLjI0IDAgNS40NSAyLjA1IDYuNjggMy43OSAxLjIzIDEuNzUgMS45NyAzLjY4IDIuNjIgNS44MiAxLjQ0IDUuMTIgMi4yMiAxMC4zMyAyLjE5IDE1LjY1djE2Ljg4YzAgMTQuOTEgNy4zOSAzMi42MiAxOS4xMyA0OC4yNC0uNjMtMTA2Ljc2LTEwLjkxLTE5NC43My0yNC40OS0yMTUuMzVWMzMuNDhoLTEyLjI4em0tMjYuMzQgMTQ3Ljc3Yy05LjUyIDIuMTUtMTguNyA1LjE5LTI3LjQ2IDkuMDggOC45IDE2LjEyIDkuNzYgMzIuNjQgMS43MSAzNy4yOS04IDQuNjItMjEuODUtNC4yMy0zMS4zNi0xOS44Mi0xMS41OCA4Ljc5LTIxLjg4IDE5LjMyLTMwLjU2IDMxLjA5IDE0LjczIDkuNjIgMjIuODkgMjIuOTIgMTguMzIgMzAuNjYtNC41NCA3LjctMjAuMDMgNy4xNC0zNS40Ny0uOTYtNS43OCAxMy4yNS05Ljc1IDI3LjUxLTExLjY1IDQyLjQyIDkuNjguMTggMTguNjcgMi4zOCAyNi4xOCA2LjA0IDE3Ljc4LS4zIDMyLjc3LTEuOTYgNDAuNDktNC4yMiA1LjU1LTI2LjM1IDIzLjAyLTQ4LjIzIDQ2LjMyLTU5LjUxLjczLTI1LjU1IDEuODgtNDkuNjcgMy40OC03Mi4wN3ptNjQuOTYgMGMxLjU5IDIyLjQgMi43NSA0Ni41MiAzLjQ3IDcyLjA3IDIzLjI5IDExLjI4IDQwLjc3IDMzLjE2IDQ2LjMyIDU5LjUxIDcuNzIgMi4yNiAyMi43MSAzLjkyIDQwLjQ5IDQuMjIgNy41MS0zLjY2IDE2LjUtNS44NSAyNi4xOC02LjA0LTEuOS0xNC45MS01Ljg2LTI5LjE3LTExLjY1LTQyLjQyLTE1LjQ0IDguMS0zMC45MyA4LjY2LTM1LjQ3Ljk2LTQuNTctNy43NCAzLjYtMjEuMDUgMTguMzItMzAuNjYtOC42OC0xMS43Ny0xOC45OC0yMi4zLTMwLjU2LTMxLjA5LTkuNTEgMTUuNTktMjMuMzYgMjQuNDQtMzEuMzYgMTkuODItOC4wNS00LjY1LTcuMTktMjEuMTYgMS43MS0zNy4yOWExNDcuNDkgMTQ3LjQ5IDAgMCAwLTI3LjQ1LTkuMDh6bS0zMi40OCA4LjZjLTMuMjMgMC01Ljg2IDguODEtNi4wOSAxOS45M2gtLjA1djE2Ljg4YzAgNDEuNDItNDkuMDEgOTUuMDQtOTMuNDkgOTUuMDQtNTIgMC0xMjIuNzUtMS40NS0xNTYuMzcgMjkuMTd2Mi41MWM5LjQyIDE3LjEyIDIwLjU4IDMzLjE3IDMzLjE4IDQ3Ljk3QzQ1LjcgMzgwLjI2IDg0Ljc3IDM2MC40IDE0MS4yIDM2MGM0NS42OCAxLjAyIDc5LjAzIDIwLjMzIDkwLjc2IDQwLjg3LjAxLjAxLS4wMS4wNCAwIC4wNSA3LjY3IDIuMTQgMTUuODUgMy4yMyAyNC4wNCAzLjIxIDguMTkuMDIgMTYuMzctMS4wNyAyNC4wNC0zLjIxLjAxLS4wMS0uMDEtLjA0IDAtLjA1IDExLjc0LTIwLjU0IDQ1LjA4LTM5Ljg1IDkwLjc2LTQwLjg3IDU2LjQzLjM5IDk1LjQ5IDIwLjI2IDEwOC4wMiA0MS4zNSAxMi42LTE0LjggMjMuNzYtMzAuODYgMzMuMTgtNDcuOTd2LTIuNTFjLTMzLjYxLTMwLjYyLTEwNC4zNy0yOS4xNy0xNTYuMzctMjkuMTctNDQuNDggMC05My40OS01My42Mi05My40OS05NS4wNHYtMTYuODhoLS4wNWMtLjIzLTExLjEyLTIuODYtMTkuOTMtNi4wOS0xOS45M3ptMCA5Ni41OWMyMi40MiAwIDQwLjYgMTguMTggNDAuNiA0MC42cy0xOC4xOCA0MC42NS00MC42IDQwLjY1LTQwLjYtMTguMjMtNDAuNi00MC42NWMwLTIyLjQyIDE4LjE4LTQwLjYgNDAuNi00MC42em0wIDcuNjRjLTE4LjE5IDAtMzIuOTYgMTQuNzctMzIuOTYgMzIuOTZTMjM3LjgxIDM2MCAyNTYgMzYwczMyLjk2LTE0Ljc3IDMyLjk2LTMyLjk2LTE0Ljc3LTMyLjk2LTMyLjk2LTMyLjk2em0wIDYuMTRjMTQuODEgMCAyNi44MiAxMi4wMSAyNi44MiAyNi44MnMtMTIuMDEgMjYuODItMjYuODIgMjYuODItMjYuODItMTIuMDEtMjYuODItMjYuODIgMTIuMDEtMjYuODIgMjYuODItMjYuODJ6bS0xMTQuOCA2Ni42N2MtMTAuMTkuMDctMjEuNi4zNi0zMC41IDEuNjYuNDMgNC40MiAxLjUxIDE4LjYzIDcuMTEgMjkuNzYgOS4xMS0yLjU2IDE4LjM2LTMuOSAyNy42Mi0zLjkgNDEuMjguOTQgNzEuNDggMzQuMzUgNzguMjYgNzQuNDdsLjExIDQuN2MxMC40IDEuOTEgMjEuMTkgMi45NCAzMi4yMSAyLjk0IDExLjAzIDAgMjEuODEtMS4wMiAzMi4yMS0yLjk0bC4xMS00LjdjNi43OC00MC4xMiAzNi45OC03My41MyA3OC4yNi03NC40NyA5LjI2IDAgMTguNTEgMS4zNCAyNy42MiAzLjkgNS42LTExLjEzIDYuNjgtMjUuMzQgNy4xMS0yOS43Ni04LjktMS4zLTIwLjMyLTEuNTgtMzAuNS0xLjY2LTE4Ljc2LjQyLTM1LjE5IDQuMTctNDguNjEgOS42Ny0xMi41NCAxNi4wMy0yOS4xNiAzMC4wMy00OS41OCAzMy4wNy0uMDkuMDItLjE3LjA0LS4yNy4wNS0uMDUuMDEtLjExLjA0LS4xNi4wNS01LjI0IDEuMDctMTAuNjMgMS42LTE2LjE5IDEuNi01LjU1IDAtMTAuOTUtLjUzLTE2LjE5LTEuNi0uMDUtLjAxLS4xMS0uMDQtLjE2LS4wNS0uMS0uMDItLjE3LS4wNC0uMjctLjA1LTIwLjQyLTMuMDMtMzcuMDMtMTcuMDQtNDkuNTgtMzMuMDctMTMuNDItNS40OS0yOS44Ni05LjI1LTQ4LjYxLTkuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdldFBvY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcuNiA2NGgtMzY3QzE4LjUgNjQgMCA4Mi41IDAgMTA0LjZ2MTM1LjJDMCAzNjQuNSA5OS43IDQ2NCAyMjQuMiA0NjRjMTI0IDAgMjIzLjgtOTkuNSAyMjMuOC0yMjQuMlYxMDQuNmMwLTIyLjQtMTcuNy00MC42LTQwLjQtNDAuNnptLTE2MiAyNjguNWMtMTIuNCAxMS44LTMxLjQgMTEuMS00Mi40IDBDODkuNSAyMjMuNiA4OC4zIDIyNy40IDg4LjMgMjA5LjNjMC0xNi45IDEzLjgtMzAuNyAzMC43LTMwLjcgMTcgMCAxNi4xIDMuOCAxMDUuMiA4OS4zIDkwLjYtODYuOSA4OC42LTg5LjMgMTA1LjUtODkuMyAxNi45IDAgMzAuNyAxMy44IDMwLjcgMzAuNyAwIDE3LjgtMi45IDE1LjctMTE0LjggMTIzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdnQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NyA4QzEyMCA4IDkgMTE5IDkgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzk0IDggMjU3IDh6bS00OS41IDM3NC44TDgxLjggMjU3LjFsMTI1LjctMTI1LjcgMzUuMiAzNS40LTI0LjIgMjQuMi0xMS4xLTExLjEtNzcuMiA3Ny4yIDc3LjIgNzcuMiAyNi42LTI2LjYtNTMuMS01Mi45IDI0LjQtMjQuNCA3Ny4yIDc3LjItNzUgNzUuMnptOTktMi4ybC0zNS4yLTM1LjIgMjQuMS0yNC40IDExLjEgMTEuMSA3Ny4yLTc3LjItNzcuMi03Ny4yLTI2LjUgMjYuNSA1My4xIDUyLjktMjQuNCAyNC40LTc3LjItNzcuMiA3NS03NUw0MzIuMiAyNTUgMzA2LjUgMzgwLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3OS4yIDIzMC40bDEwMi40IDEwMi40LTEwMi40IDEwMi40TDAgMjU2IDE3OS4yIDc2LjhsNDQuOCA0NC44LTI1LjYgMjUuNi0xOS4yLTE5LjItMTI4IDEyOCAxMjggMTI4IDUxLjUtNTEuNS03Ny4xLTc2LjUgMjUuNi0yNS42ek0zMzIuOCA3Ni44TDIzMC40IDE3OS4ybDEwMi40IDEwMi40IDI1LjYtMjUuNi03Ny4xLTc2LjUgNTEuNS01MS41IDEyOCAxMjgtMTI4IDEyOC0xOS4yLTE5LjItMjUuNiAyNS42IDQ0LjggNDQuOEw1MTIgMjU2IDMzMi44IDc2Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzkuNTUgMjM2LjA1TDI0NCA0MC40NWEyOC44NyAyOC44NyAwIDAgMC00MC44MSAwbC00MC42NiA0MC42MyA1MS41MiA1MS41MmMyNy4wNi05LjE0IDUyLjY4IDE2Ljc3IDQzLjM5IDQzLjY4bDQ5LjY2IDQ5LjY2YzM0LjIzLTExLjggNjEuMTggMzEgMzUuNDcgNTYuNjktMjYuNDkgMjYuNDktNzAuMjEtMi44Ny01Ni0zNy4zNEwyNDAuMjIgMTk5djEyMS44NWMyNS4zIDEyLjU0IDIyLjI2IDQxLjg1IDkuMDggNTVhMzQuMzQgMzQuMzQgMCAwIDEtNDguNTUgMGMtMTcuNTctMTcuNi0xMS4wNy00Ni45MSAxMS4yNS01NnYtMTIzYy0yMC44LTguNTEtMjQuNi0zMC43NC0xOC42NC00NUwxNDIuNTcgMTAxIDguNDUgMjM1LjE0YTI4Ljg2IDI4Ljg2IDAgMCAwIDAgNDAuODFsMTk1LjYxIDE5NS42YTI4Ljg2IDI4Ljg2IDAgMCAwIDQwLjggMGwxOTQuNjktMTk0LjY5YTI4Ljg2IDI4Ljg2IDAgMCAwIDAtNDAuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYuMjkgMTU4LjM5SDEzN0M5NyAxNDcuOSA2LjUxIDE1MC42MyA2LjUxIDIzMy4xOGMwIDMwLjA5IDE1IDUxLjIzIDM1IDYxLTI1LjEgMjMtMzcgMzMuODUtMzcgNDkuMjEgMCAxMSA0LjQ3IDIxLjE0IDE3Ljg5IDI2LjgxQzguMTMgMzgzLjYxIDAgMzkzLjM1IDAgNDExLjY1YzAgMzIuMTEgMjguMDUgNTAuODIgMTAxLjYzIDUwLjgyIDcwLjc1IDAgMTExLjc5LTI2LjQyIDExMS43OS03My4xOCAwLTU4LjY2LTQ1LjE2LTU2LjUtMTUxLjYzLTYzbDEzLjQzLTIxLjU1YzI3LjI3IDcuNTggMTE4LjcgMTAgMTE4LjctNjcuODkgMC0xOC43LTcuNzMtMzEuNzEtMTUtNDEuMDdsMzcuNDEtMi44NHptLTYzLjQyIDI0MS45YzAgMzIuMDYtMTA0Ljg5IDMyLjEtMTA0Ljg5IDIuNDMgMC04LjE0IDUuMjctMTUgMTAuNTctMjEuNTQgNzcuNzEgNS4zIDk0LjMyIDMuMzcgOTQuMzIgMTkuMTF6bS01MC44MS0xMzQuNThjLTUyLjggMC01MC40Ni03MS4xNiAxLjItNzEuMTYgNDkuNTQgMCA1MC44MiA3MS4xNi0xLjIgNzEuMTZ6bTEzMy4zIDEwMC41MXYtMzIuMWMyNi43NS0zLjY2IDI3LjI0LTIgMjcuMjQtMTFWMjAzLjYxYzAtOC41LTIuMDUtNy4zOC0yNy4yNC0xNi4yNmw0LjQ3LTMyLjkySDMyNHYxNjguNzFjMCA2LjUxLjQgNy4zMiA2LjUxIDguMTRsMjAuNzMgMi44NHYzMi4xem01Mi40NS0yNDQuMzFjLTIzLjE3IDAtMzYuNTktMTMuNDMtMzYuNTktMzYuNjFzMTMuNDItMzUuNzcgMzYuNTktMzUuNzdjMjMuNTggMCAzNyAxMi42MiAzNyAzNS43N3MtMTMuNDIgMzYuNjEtMzcgMzYuNjF6TTUxMiAzNTAuNDZjLTE3LjQ5IDguNTMtNDMuMSAxNi4yNi02Ni4yOCAxNi4yNi00OC4zOCAwLTY2LjY3LTE5LjUtNjYuNjctNjUuNDZWMTk0Ljc1YzAtNS40MiAxLjA1LTQuMDYtMzEuNzEtNC4wNlYxNTQuNWMzNS43OC00LjA3IDUwLTIyIDU0LjQ3LTY2LjI3aDM4LjYzYzAgNjUuODMtMS4zNCA2MS44MSAzLjI2IDYxLjgxSDUwMXY0MC42NWgtNjAuNTZ2OTcuMTVjMCA2LjkyLTQuOTIgNTEuNDEgNjAuNTcgMjYuODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdGh1YkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODYuMSAzMjguN2MwIDIwLjktMTAuOSA1NS4xLTM2LjcgNTUuMXMtMzYuNy0zNC4yLTM2LjctNTUuMSAxMC45LTU1LjEgMzYuNy01NS4xIDM2LjcgMzQuMiAzNi43IDU1LjF6TTQ4MCAyNzguMmMwIDMxLjktMy4yIDY1LjctMTcuNSA5NS0zNy45IDc2LjYtMTQyLjEgNzQuOC0yMTYuNyA3NC44LTc1LjggMC0xODYuMiAyLjctMjI1LjYtNzQuOC0xNC42LTI5LTIwLjItNjMuMS0yMC4yLTk1IDAtNDEuOSAxMy45LTgxLjUgNDEuNS0xMTMuNi01LjItMTUuOC03LjctMzIuNC03LjctNDguOCAwLTIxLjUgNC45LTMyLjMgMTQuNi01MS44IDQ1LjMgMCA3NC4zIDkgMTA4LjggMzYgMjktNi45IDU4LjgtMTAgODguNy0xMCAyNyAwIDU0LjIgMi45IDgwLjQgOS4yIDM0LTI2LjcgNjMtMzUuMiAxMDcuOC0zNS4yIDkuOCAxOS41IDE0LjYgMzAuMyAxNC42IDUxLjggMCAxNi40LTIuNiAzMi43LTcuNyA0OC4yIDI3LjUgMzIuNCAzOSA3Mi4zIDM5IDExNC4yem0tNjQuMyA1MC41YzAtNDMuOS0yNi43LTgyLjYtNzMuNS04Mi42LTE4LjkgMC0zNyAzLjQtNTYgNi0xNC45IDIuMy0yOS44IDMuMi00NS4xIDMuMi0xNS4yIDAtMzAuMS0uOS00NS4xLTMuMi0xOC43LTIuNi0zNy02LTU2LTYtNDYuOCAwLTczLjUgMzguNy03My41IDgyLjYgMCA4Ny44IDgwLjQgMTAxLjMgMTUwLjQgMTAxLjNoNDguMmM3MC4zIDAgMTUwLjYtMTMuNCAxNTAuNi0xMDEuM3ptLTgyLjYtNTUuMWMtMjUuOCAwLTM2LjcgMzQuMi0zNi43IDU1LjFzMTAuOSA1NS4xIDM2LjcgNTUuMSAzNi43LTM0LjIgMzYuNy01NS4xLTEwLjktNTUuMS0zNi43LTU1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdGh1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjUuOSAzOTcuNGMwIDItMi4zIDMuNi01LjIgMy42LTMuMy4zLTUuNi0xLjMtNS42LTMuNiAwLTIgMi4zLTMuNiA1LjItMy42IDMtLjMgNS42IDEuMyA1LjYgMy42em0tMzEuMS00LjVjLS43IDIgMS4zIDQuMyA0LjMgNC45IDIuNiAxIDUuNiAwIDYuMi0ycy0xLjMtNC4zLTQuMy01LjJjLTIuNi0uNy01LjUuMy02LjIgMi4zem00NC4yLTEuN2MtMi45LjctNC45IDIuNi00LjYgNC45LjMgMiAyLjkgMy4zIDUuOSAyLjYgMi45LS43IDQuOS0yLjYgNC42LTQuNi0uMy0xLjktMy0zLjItNS45LTIuOXpNMjQ0LjggOEMxMDYuMSA4IDAgMTEzLjMgMCAyNTJjMCAxMTAuOSA2OS44IDIwNS44IDE2OS41IDIzOS4yIDEyLjggMi4zIDE3LjMtNS42IDE3LjMtMTIuMSAwLTYuMi0uMy00MC40LS4zLTYxLjQgMCAwLTcwIDE1LTg0LjctMjkuOCAwIDAtMTEuNC0yOS4xLTI3LjgtMzYuNiAwIDAtMjIuOS0xNS43IDEuNi0xNS40IDAgMCAyNC45IDIgMzguNiAyNS44IDIxLjkgMzguNiA1OC42IDI3LjUgNzIuOSAyMC45IDIuMy0xNiA4LjgtMjcuMSAxNi0zMy43LTU1LjktNi4yLTExMi4zLTE0LjMtMTEyLjMtMTEwLjUgMC0yNy41IDcuNi00MS4zIDIzLjYtNTguOS0yLjYtNi41LTExLjEtMzMuMyAyLjYtNjcuOSAyMC45LTYuNSA2OSAyNyA2OSAyNyAyMC01LjYgNDEuNS04LjUgNjIuOC04LjVzNDIuOCAyLjkgNjIuOCA4LjVjMCAwIDQ4LjEtMzMuNiA2OS0yNyAxMy43IDM0LjcgNS4yIDYxLjQgMi42IDY3LjkgMTYgMTcuNyAyNS44IDMxLjUgMjUuOCA1OC45IDAgOTYuNS01OC45IDEwNC4yLTExNC44IDExMC41IDkuMiA3LjkgMTcgMjIuOSAxNyA0Ni40IDAgMzMuNy0uMyA3NS40LS4zIDgzLjYgMCA2LjUgNC42IDE0LjQgMTcuMyAxMi4xQzQyOC4yIDQ1Ny44IDQ5NiAzNjIuOSA0OTYgMjUyIDQ5NiAxMTMuMyAzODMuNSA4IDI0NC44IDh6TTk3LjIgMzUyLjljLTEuMyAxLTEgMy4zLjcgNS4yIDEuNiAxLjYgMy45IDIuMyA1LjIgMSAxLjMtMSAxLTMuMy0uNy01LjItMS42LTEuNi0zLjktMi4zLTUuMi0xem0tMTAuOC04LjFjLS43IDEuMy4zIDIuOSAyLjMgMy45IDEuNiAxIDMuNi43IDQuMy0uNy43LTEuMy0uMy0yLjktMi4zLTMuOS0yLS42LTMuNi0uMy00LjMuN3ptMzIuNCAzNS42Yy0xLjYgMS4zLTEgNC4zIDEuMyA2LjIgMi4zIDIuMyA1LjIgMi42IDYuNSAxIDEuMy0xLjMuNy00LjMtMS4zLTYuMi0yLjItMi4zLTUuMi0yLjYtNi41LTF6bS0xMS40LTE0LjdjLTEuNiAxLTEuNiAzLjYgMCA1LjkgMS42IDIuMyA0LjMgMy4zIDUuNiAyLjMgMS42LTEuMyAxLjYtMy45IDAtNi4yLTEuNC0yLjMtNC0zLjMtNS42LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdGtyYWtlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjUuNyAxMTguMWMtMi4zLTYuMS05LjMtOS4yLTE1LjMtNi42LTUuNyAyLjQtOC41IDguOS02LjMgMTQuNiAxMC45IDI5IDE2LjkgNjAuNSAxNi45IDkzLjMgMCAxMzQuNi0xMDAuMyAyNDUuNy0yMzAuMiAyNjIuN1YzNTguNGM3LjktMS41IDE1LjUtMy42IDIzLTYuMnYxMDRjMTA2LjctMjUuOSAxODUuOS0xMjIuMSAxODUuOS0yMzYuOCAwLTkxLjgtNTAuOC0xNzEuOC0xMjUuOC0yMTMuMy01LjctMy4yLTEzLS45LTE1LjkgNS0yLjcgNS41LS42IDEyLjIgNC43IDE1LjEgNjcuOSAzNy42IDExMy45IDExMCAxMTMuOSAxOTMuMiAwIDkzLjMtNTcuOSAxNzMuMS0xMzkuOCAyMDUuNHYtOTIuMmMxNC4yLTQuNSAyNC45LTE3LjcgMjQuOS0zMy41IDAtMTMuMS02LjgtMjQuNC0xNy4zLTMwLjUgOC4zLTc5LjUgNDQuNS01OC42IDQ0LjUtODMuOVYxNzBjMC0zOC04Ny45LTE2MS44LTEyOS0xNjQuNy0yLjUtLjItNS0uMi03LjYgMEMyNTEuMSA4LjMgMTYzLjIgMTMyIDE2My4yIDE3MHYxNC44YzAgMjUuMyAzNi4zIDQuMyA0NC41IDgzLjktMTAuNiA2LjEtMTcuMyAxNy40LTE3LjMgMzAuNSAwIDE1LjggMTAuNiAyOSAyNC44IDMzLjV2OTIuMmMtODEuOS0zMi4yLTEzOS44LTExMi0xMzkuOC0yMDUuNCAwLTgzLjEgNDYtMTU1LjUgMTEzLjktMTkzLjIgNS40LTMgNy40LTkuNiA0LjctMTUuMS0yLjktNS45LTEwLjEtOC4yLTE1LjktNS03NSA0MS41LTEyNS44IDEyMS41LTEyNS44IDIxMy4zIDAgMTE0LjcgNzkuMiAyMTAuOCAxODUuOSAyMzYuOHYtMTA0YzcuNiAyLjUgMTUuMSA0LjYgMjMgNi4ydjEyMy43QzEzMS40IDQ2NS4yIDMxIDM1NC4xIDMxIDIxOS41YzAtMzIuOCA2LTY0LjMgMTYuOS05My4zIDIuMi01LjgtLjYtMTIuMi02LjMtMTQuNi02LTIuNi0xMyAuNC0xNS4zIDYuNkMxNC41IDE0OS43IDggMTgzLjggOCAyMTkuNWMwIDE1NS4xIDEyMi42IDI4MS42IDI3Ni4zIDI4Ny44VjM2MS40YzYuOC40IDE1IC41IDIzLjQgMHYxNDUuOEM0NjEuNCA1MDEuMSA1ODQgMzc0LjYgNTg0IDIxOS41YzAtMzUuNy02LjUtNjkuOC0xOC4zLTEwMS40ek0zNjUuOSAyNzUuNWMxMyAwIDIzLjcgMTAuNSAyMy43IDIzLjcgMCAxMy4xLTEwLjYgMjMuNy0yMy43IDIzLjctMTMgMC0yMy43LTEwLjUtMjMuNy0yMy43IDAtMTMuMSAxMC42LTIzLjcgMjMuNy0yMy43em0tMTM5LjggNDcuM2MtMTMuMiAwLTIzLjctMTAuNy0yMy43LTIzLjdzMTAuNS0yMy43IDIzLjctMjMuN2MxMy4xIDAgMjMuNyAxMC42IDIzLjcgMjMuNyAwIDEzLTEwLjUgMjMuNy0yMy43IDIzLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdGxhYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDMuNSAyMDQuNkw1MDIuOCAyMDIuOEw0MzMuMSAyMS4wMkM0MzEuNyAxNy40NSA0MjkuMiAxNC40MyA0MjUuOSAxMi4zOEM0MjMuNSAxMC44MyA0MjAuOCA5Ljg2NSA0MTcuOSA5LjU3QzQxNSA5LjI3NSA0MTIuMiA5LjY1MyA0MDkuNSAxMC42OEM0MDYuOCAxMS43IDQwNC40IDEzLjM0IDQwMi40IDE1LjQ2QzQwMC41IDE3LjU4IDM5OS4xIDIwLjEzIDM5OC4zIDIyLjlMMzUxLjMgMTY2LjlIMTYwLjhMMTEzLjcgMjIuOUMxMTIuOSAyMC4xMyAxMTEuNSAxNy41OSAxMDkuNiAxNS40N0MxMDcuNiAxMy4zNSAxMDUuMiAxMS43MiAxMDIuNSAxMC43Qzk5Ljg2IDkuNjc1IDk2Ljk4IDkuMjk1IDk0LjEyIDkuNTg3QzkxLjI2IDkuODc4IDg4LjUxIDEwLjgzIDg2LjA4IDEyLjM4QzgyLjg0IDE0LjQzIDgwLjMzIDE3LjQ1IDc4LjkyIDIxLjAyTDkuMjY3IDIwMi44TDguNTQzIDIwNC42Qy0xLjQ4NCAyMzAuOC0yLjcyIDI1OS42IDUuMDIzIDI4Ni42QzEyLjc3IDMxMy41IDI5LjA3IDMzNy4zIDUxLjQ3IDM1NC4yTDUxLjc0IDM1NC40TDUyLjMzIDM1NC44TDE1OC4zIDQzNC4zTDIxMC45IDQ3NEwyNDIuOSA0OTguMkMyNDYuNiA1MDAuMSAyNTEuMiA1MDIuNSAyNTUuOSA1MDIuNUMyNjAuNiA1MDIuNSAyNjUuMiA1MDAuMSAyNjguOSA0OTguMkwzMDAuOSA0NzRMMzUzLjUgNDM0LjNMNDYwLjIgMzU0LjRMNDYwLjUgMzU0LjFDNDgyLjkgMzM3LjIgNDk5LjIgMzEzLjUgNTA2LjEgMjg2LjZDNTE0LjcgMjU5LjYgNTEzLjUgMjMwLjggNTAzLjUgMjA0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02Ni40IDMyMi41SDE2VjBoNTAuNHYzMjIuNXpNMTY2LjkgNzYuMWgtNTAuNFY1MTJoNTAuNFY3Ni4xem0xMDAuNiAwaC01MC40VjUxMmg1MC40Vjc2LjF6TTM2OCA3NmgtNTAuNHYyNDdIMzY4Vjc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbGlkZUcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA3LjEgMjExLjJjLTMuNS0xLjQtMTEuNi0zLjgtMTUuNC0zLjgtMzcuMSAwLTYyLjIgMTYuOC05My41IDM0LjVsLS45LS45YzctNDcuMyAyMy41LTkxLjkgMjMuNS0xNDAuNEMzMjAuOCAyOS4xIDI4Mi42IDAgMjEyLjQgMCA5Ny4zIDAgMzkgMTEzLjcgMzkgMTk4LjQgMzkgMjg2LjMgOTAuMyAzMzUgMTc3LjYgMzM1YzEyIDAgMTEtMSAxMSAzLjgtMTYuOSAxMjguOS05MC44IDEzMy4xLTkwLjggOTQuNiAwLTM5LjIgNDUtNTguNiA0NS41LTYxLS4zLTEyLjItNDctMjcuNi01OC45LTI3LjYtMzMuOS4xLTUyLjQgNTEuMi01Mi40IDc5LjNDMzIgNDc2IDY0LjggNTEyIDExNy41IDUxMmM3Ny40IDAgMTM0LTc3LjggMTUxLjQtMTQ1LjQgMTUuMS02MC41IDExLjItNjMuMyAxOS43LTY3LjYgMzIuMi0xNi4yIDU3LjUtMjcgOTMuOC0yNyAxNy44IDAgMzAuNSAzLjcgNTguOSA4LjQgMi45IDAgNi43LTIuOSA2LjctNS44IDAtOC0zMy40LTYwLjUtNDAuOS02My40em0tMTc1LjMtODQuNGMtOS4zIDQ0LjctMTguNiA4OS42LTI3LjggMTM0LjMtMi4zIDEwLjItMTMuMyA3LjgtMjIgNy44LTM4LjMgMC00OS00MS44LTQ5LTczLjEgMC00NyAxOC0xMDkuMyA2MS44LTEzMy40IDctNC4xIDE0LjgtNi43IDIyLjYtNi43IDE4LjYgMCAyMCAxMy4zIDIwIDI4LjctLjEgMTQuMy0yLjcgMjguNS01LjYgNDIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjUyLjggMTQ4LjZjMCA4LjgtMS42IDE3LjctMy40IDI2LjQtNS44IDI3LjgtMTEuNiA1NS44LTE3LjMgODMuNi0xLjQgNi4zLTguMyA0LjktMTMuNyA0LjktMjMuOCAwLTMwLjUtMjYtMzAuNS00NS41IDAtMjkuMyAxMS4yLTY4LjEgMzguNS04My4xIDQuMy0yLjUgOS4yLTQuMiAxNC4xLTQuMiAxMS40IDAgMTIuMyA4LjMgMTIuMyAxNy45ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS02NCAxODdjMC01LjEtMjAuOC0zNy43LTI1LjUtMzkuNS0yLjItLjktNy4yLTIuMy05LjYtMi4zLTIzLjEgMC0zOC43IDEwLjUtNTguMiAyMS41bC0uNS0uNWM0LjMtMjkuNCAxNC42LTU3LjIgMTQuNi04Ny40IDAtNDQuNi0yMy44LTYyLjctNjcuNS02Mi43LTcxLjcgMC0xMDggNzAuOC0xMDggMTIzLjUgMCA1NC43IDMyIDg1IDg2LjMgODUgNy41IDAgNi45LS42IDYuOSAyLjMtMTAuNSA4MC4zLTU2LjUgODIuOS01Ni41IDU4LjkgMC0yNC40IDI4LTM2LjUgMjguMy0zOC0uMi03LjYtMjkuMy0xNy4yLTM2LjctMTcuMi0yMS4xIDAtMzIuNyAzMy0zMi43IDUwLjYgMCAzMi4zIDIwLjQgNTQuNyA1My4zIDU0LjcgNDguMiAwIDgzLjQtNDkuNyA5NC4zLTkxLjcgOS40LTM3LjcgNy0zOS40IDEyLjMtNDIuMSAyMC0xMC4xIDM1LjgtMTYuOCA1OC40LTE2LjggMTEuMSAwIDE5IDIuMyAzNi43IDUuMiAxLjguMSA0LjEtMS43IDQuMS0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvZm9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDAwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjQgMzE5LjhoLTEzLjJ2MzQuN2MtMjQuNSAyMy4xLTU2LjMgMzUuOC04OS45IDM1LjgtNzMuMiAwLTEzMi40LTYwLjItMTMyLjQtMTM0LjQgMC03NC4xIDU5LjItMTM0LjQgMTMyLjQtMTM0LjQgMzUuMyAwIDY4LjYgMTQgOTMuNiAzOS40bDYyLjMtNjMuM0MzMzUgNTUuMyAyNzkuNyAzMiAyMjAuNyAzMiA5OCAzMiAwIDEzMi42IDAgMjU2YzAgMTIyLjUgOTcgMjI0IDIyMC43IDIyNCA2My4yIDAgMTI0LjUtMjYuMiAxNzEtODIuNS0yLTI3LjYtMTMuNC03Ny43LTY3LjctNzcuN3ptLTEyLjEtMTEyLjVIMjA1LjZ2ODlIMzI0YzMzLjUgMCA2MC41IDE1LjEgNzYgNDEuOHYtMzAuNmMwLTY1LjItNDAuNC0xMDAuMi04OC4xLTEwMC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb2xhbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwLjEgMTk0LjhDMzg5LjIgMTk3LjYgMzgwLjIgMTk5LjEgMzcxIDIwMi40QzM2My43IDIwNC4zIDM1Ni4zIDIwNi4zIDM0Ny44IDIwOC41TDM0Ny4yIDIwOC42QzM0MyAyMDkuOCAzNDIuNiAyMDkuOSAzMzguNyAyMDUuNEMzMzQgMjAwLjEgMzMwLjYgMTk2LjcgMzI0LjEgMTkzLjVDMzA0LjQgMTgzLjkgMjg1LjQgMTg2LjcgMjY3LjcgMTk4LjJDMjQ2LjUgMjExLjkgMjM1LjYgMjMyLjIgMjM1LjkgMjU3LjRDMjM2LjIgMjgyLjQgMjUzLjMgMzAyLjkgMjc3LjEgMzA2LjNDMjk5LjEgMzA5LjEgMzE2LjkgMzAxLjcgMzMwLjkgMjg1LjhDMzMzIDI4My4yIDMzNC45IDI4MC41IDMzNyAyNzcuNVYyNzcuNUwzMzcgMjc3LjVDMzM3LjggMjc2LjUgMzM4LjUgMjc1LjQgMzM5LjMgMjc0LjJIMjc5LjJDMjcyLjcgMjc0LjIgMjcxLjEgMjcwLjIgMjczLjMgMjY0LjlDMjc3LjMgMjU1LjIgMjg0LjggMjM5IDI4OS4yIDIzMC45QzI5MC4xIDIyOS4xIDI5Mi4zIDIyNS4xIDI5Ni4xIDIyNS4xSDM5Ny4yQzQwMS43IDIxMS43IDQwOSAxOTguMiA0MTguOCAxODUuNEM0NDEuNSAxNTUuNSA0NjguMSAxMzkuOSA1MDYgMTMzLjRDNTM3LjggMTI3LjggNTY3LjcgMTMwLjkgNTk0LjkgMTQ5LjNDNjE5LjUgMTY2LjEgNjM0LjcgMTg4LjkgNjM4LjggMjE4LjhDNjQ0LjEgMjYwLjkgNjMxLjkgMjk1LjEgNjAyLjEgMzI0LjRDNTgyLjQgMzQ1LjMgNTU3LjIgMzU4LjQgNTI4LjIgMzY0LjNDNTIyLjYgMzY1LjMgNTE3LjEgMzY1LjggNTExLjcgMzY2LjNDNTA4LjggMzY2LjUgNTA2IDM2Ni44IDUwMy4yIDM2Ny4xQzQ3NC45IDM2Ni41IDQ0OSAzNTguNCA0MjcuMiAzMzkuN0M0MTEuOSAzMjYuNCA0MDEuMyAzMTAuMSAzOTYuMSAyOTEuMkMzOTIuNCAyOTguNSAzODguMSAzMDUuNiAzODIuMSAzMTIuM0MzNjAuNSAzNDEuOSAzMzEuMiAzNjAuMyAyOTQuMiAzNjUuMkMyNjMuNiAzNjkuMyAyMzUuMyAzNjMuNCAyMTAuMyAzNDQuN0MxODcuMyAzMjcuMiAxNzQuMiAzMDQuMiAxNzAuOCAyNzUuNUMxNjYuNyAyNDEuNSAxNzYuNyAyMTAuMSAxOTcuMiAxODQuMkMyMTkuNCAxNTUuMiAyNDguNyAxMzYuOCAyODQuNSAxMzAuM0MzMTMuOCAxMjQuMSAzNDEuOCAxMjguNCAzNjcuMSAxNDUuNkMzODMuNiAxNTYuNSAzOTUuNCAxNzEuNCA0MDMuMiAxODkuNUM0MDUuMSAxOTIuMyA0MDMuOCAxOTMuOSA0MDAuMSAxOTQuOHpNNDguMyAyMDAuNEM0Ny4wNSAyMDAuNCA0Ni43NCAxOTkuOCA0Ny4zNiAxOTguOEw1My45MSAxOTAuNEM1NC41MyAxODkuNSA1Ni4wOSAxODguOSA1Ny4zNCAxODguOUgxNjguNkMxNjkuOCAxODguOSAxNzAuMSAxODkuOCAxNjkuNSAxOTAuN0wxNjQuMiAxOTguOEMxNjMuNiAxOTkuOCAxNjIgMjAwLjcgMTYxLjEgMjAwLjdMNDguMyAyMDAuNHpNMS4yNDYgMjI5LjFDMCAyMjkuMS0uMzExNiAyMjguNCAuMzExNiAyMjcuNUw2Ljg1NSAyMTkuMUM3LjQ3OSAyMTguMiA5LjAzNyAyMTcuNSAxMC4yOCAyMTcuNUgxNTIuNEMxNTMuNiAyMTcuNSAxNTQuMiAyMTguNSAxNTMuOSAyMTkuNEwxNTEuNCAyMjYuOUMxNTEuMSAyMjguMSAxNDkuOSAyMjguOCAxNDguNiAyMjguOEwxLjI0NiAyMjkuMXpNNzUuNzIgMjU1LjlDNzUuMSAyNTYuOCA3NS40MSAyNTcuNyA3Ni42NSAyNTcuN0wxNDQuNiAyNThDMTQ1LjUgMjU4IDE0Ni44IDI1Ny4xIDE0Ni44IDI1NS45TDE0Ny40IDI0OC40QzE0Ny40IDI0Ny4xIDE0Ni44IDI0Ni4yIDE0NS41IDI0Ni4ySDgzLjJDODEuOTUgMjQ2LjIgODAuNzEgMjQ3LjEgODAuMDggMjQ4LjFMNzUuNzIgMjU1Ljl6TTU3Ny4yIDIzNy45QzU3NyAyMzUuMyA1NzYuOSAyMzMuMSA1NzYuNSAyMzAuOUM1NzAuOSAyMDAuMSA1NDIuNSAxODIuNiA1MTIuOSAxODkuNUM0ODMuOSAxOTYgNDY1LjIgMjE0LjQgNDU4LjQgMjQzLjdDNDUyLjggMjY4IDQ2NC42IDI5Mi42IDQ4NyAzMDIuNkM1MDQuMiAzMTAuMSA1MjEuMyAzMDkuMiA1MzcuOCAzMDAuN0M1NjIuNCAyODcuMSA1NzUuOCAyNjggNTc3LjQgMjQxLjJDNTc3LjMgMjQwIDU3Ny4zIDIzOC45IDU3Ny4yIDIzNy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29kcmVhZHNHIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyLjYgNDAzLjNoMi44YzEyLjcgMCAyNS41IDAgMzguMi4xIDEuNiAwIDMuMS0uNCAzLjYgMi4xIDcuMSAzNC45IDMwIDU0LjYgNjIuOSA2My45IDI2LjkgNy42IDU0LjEgNy44IDgxLjMgMS44IDMzLjgtNy40IDU2LTI4LjMgNjgtNjAuNCA4LTIxLjUgMTAuNy00My44IDExLTY2LjUuMS01LjguMy00Ny0uMi01Mi44bC0uOS0uM2MtLjggMS41LTEuNyAyLjktMi41IDQuNC0yMi4xIDQzLjEtNjEuMyA2Ny40LTEwNS40IDY5LjEtMTAzIDQtMTY5LjQtNTctMTcyLTE3Ni4yLS41LTIzLjcgMS44LTQ2LjkgOC4zLTY5LjdDNTguMyA0Ny43IDExMi4zLjYgMTkxLjYgMGM2MS4zLS40IDEwMS41IDM4LjcgMTE2LjIgNzAuMy41IDEuMSAxLjMgMi4zIDIuNCAxLjlWMTAuNmg0NC4zYzAgMjgwLjMuMSAzMzIuMi4xIDMzMi4yLS4xIDc4LjUtMjYuNyAxNDMuNy0xMDMgMTYyLjItNjkuNSAxNi45LTE1OSA0LjgtMTk2LTU3LjItOC0xMy41LTExLjgtMjguMy0xMy00NC41ek0xODguOSAzNi41Yy01Mi41LS41LTEwOC41IDQwLjctMTE1IDEzMy44LTQuMSA1OSAxNC44IDEyMi4yIDcxLjUgMTQ4LjYgMjcuNiAxMi45IDc0LjMgMTUgMTA4LjMtOC43IDQ3LjYtMzMuMiA2Mi43LTk3IDU0LjgtMTU0LTkuNy03MS4xLTQ3LjgtMTIwLTExOS42LTExOS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29kcmVhZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk5LjkgMTkxLjJjNS4xIDM3LjMtNC43IDc5LTM1LjkgMTAwLjctMjIuMyAxNS41LTUyLjggMTQuMS03MC44IDUuNy0zNy4xLTE3LjMtNDkuNS01OC42LTQ2LjgtOTcuMiA0LjMtNjAuOSA0MC45LTg3LjkgNzUuMy04Ny41IDQ2LjktLjIgNzEuOCAzMS44IDc4LjIgNzguM3pNNDQ4IDg4djMzNmMwIDMwLjktMjUuMSA1Ni01NiA1Nkg1NmMtMzAuOSAwLTU2LTI1LjEtNTYtNTZWODhjMC0zMC45IDI1LjEtNTYgNTYtNTZoMzM2YzMwLjkgMCA1NiAyNS4xIDU2IDU2ek0zMzAgMzEzLjJzLS4xLTM0LS4xLTIxNy4zaC0yOXY0MC4zYy0uOC4zLTEuMi0uNS0xLjYtMS4yLTkuNi0yMC43LTM1LjktNDYuMy03Ni00Ni01MS45LjQtODcuMiAzMS4yLTEwMC42IDc3LjgtNC4zIDE0LjktNS44IDMwLjEtNS41IDQ1LjYgMS43IDc3LjkgNDUuMSAxMTcuOCAxMTIuNCAxMTUuMiAyOC45LTEuMSA1NC41LTE3IDY5LTQ1LjIuNS0xIDEuMS0xLjkgMS43LTIuOS4yLjEuNC4xLjYuMi4zIDMuOC4yIDMwLjcuMSAzNC41LS4yIDE0LjgtMiAyOS41LTcuMiA0My41LTcuOCAyMS0yMi4zIDM0LjctNDQuNSAzOS41LTE3LjggMy45LTM1LjYgMy44LTUzLjItMS4yLTIxLjUtNi4xLTM2LjUtMTktNDEuMS00MS44LS4zLTEuNi0xLjMtMS4zLTIuMy0xLjNoLTI2LjhjLjggMTAuNiAzLjIgMjAuMyA4LjUgMjkuMiAyNC4yIDQwLjUgODIuNyA0OC41IDEyOC4yIDM3LjQgNDkuOS0xMi4zIDY3LjMtNTQuOSA2Ny40LTEwNi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVEcml2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzkgMzE0LjlMMTc1LjQgMzJoMTYxLjJsMTYzLjYgMjgyLjlIMzM5em0tMTM3LjUgMjMuNkwxMjAuOSA0ODBoMzEwLjVMNTEyIDMzOC41SDIwMS41ek0xNTQuMSA2Ny40TDAgMzM4LjUgODAuNiA0ODAgMjM3IDIwOC44IDE1NC4xIDY3LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDUuNzIsMjE1djQxLjI1aDU3LjFhNDkuNjYsNDkuNjYsMCwwLDEtMjEuMTQsMzIuNmMtOS41NCw2LjU1LTIxLjcyLDEwLjI4LTM2LDEwLjI4LTI3LjYsMC01MC45My0xOC45MS01OS4zLTQ0LjIyYTY1LjYxLDY1LjYxLDAsMCwxLDAtNDFsMCwwYzguMzctMjUuNDYsMzEuNy00NC4zNyw1OS4zLTQ0LjM3YTU2LjQzLDU2LjQzLDAsMCwxLDQwLjUxLDE2LjA4TDE3Ni40NywxNTVhMTAxLjI0LDEwMS4yNCwwLDAsMC03MC43NS0yNy44NCwxMDUuNTUsMTA1LjU1LDAsMCwwLTk0LjM4LDU5LjExLDEwNy42NCwxMDcuNjQsMCwwLDAsMCw5Ni4xOHYuMTVhMTA1LjQxLDEwNS40MSwwLDAsMCw5NC4zOCw1OWMyOC40NywwLDUyLjU1LTkuNTMsNzAtMjUuOTEsMjAtMTguNjEsMzEuNDEtNDYuMTUsMzEuNDEtNzguOTFBMTMzLjc2LDEzMy43NiwwLDAsMCwyMDUuMzgsMjE1Wm0zODkuNDEtNGMtMTAuMTMtOS4zOC0yMy45My0xNC4xNC00MS4zOS0xNC4xNC0yMi40NiwwLTM5LjM0LDguMzQtNTAuNSwyNC44NmwyMC44NSwxMy4yNnExMS40NS0xNywzMS4yNi0xN2EzNC4wNSwzNC4wNSwwLDAsMSwyMi43NSw4Ljc5QTI4LjE0LDI4LjE0LDAsMCwxLDQ4Ny43OSwyNDh2NS41MWMtOS4xLTUuMDctMjAuNTUtNy43NS0zNC42NC03Ljc1LTE2LjQ0LDAtMjkuNjUsMy44OC0zOS40OSwxMS43N3MtMTQuODIsMTguMzEtMTQuODIsMzEuNTZhMzkuNzQsMzkuNzQsMCwwLDAsMTMuOTQsMzEuMjdjOS4yNSw4LjM0LDIxLDEyLjUxLDM0Ljc5LDEyLjUxLDE2LjI5LDAsMjkuMjEtNy4zLDM5LTIxLjg5aDF2MTcuNzJoMjIuNjFWMjUwQzUxMC4yNSwyMzMuNDUsNTA1LjI2LDIyMC4zNCw0OTUuMTMsMjExWk00NzUuOSwzMDAuM2EzNy4zMiwzNy4zMiwwLDAsMS0yNi41NywxMS4xNkEyOC42MSwyOC42MSwwLDAsMSw0MzEsMzA1LjIxYTE5LjQxLDE5LjQxLDAsMCwxLTcuNzctMTUuNjNjMC03LDMuMjItMTIuODEsOS41NC0xNy40MnMxNC41My03LDI0LjA3LTdDNDcwLDI2NSw0ODAuMywyNjgsNDg3LjY0LDI3My45NCw0ODcuNjQsMjg0LjA3LDQ4My42OCwyOTIuODUsNDc1LjksMzAwLjNabS05My42NS0xNDJBNTUuNzEsNTUuNzEsMCwwLDAsMzQxLjc0LDE0MkgyNzkuMDdWMzI4Ljc0SDMwMi43VjI1My4xaDM5YzE2LDAsMjkuNS01LjM2LDQwLjUxLTE1LjkzLjg4LS44OSwxLjc2LTEuNzksMi42NS0yLjY4QTU0LjQ1LDU0LjQ1LDAsMCwwLDM4Mi4yNSwxNTguMjZabS0xNi41OCw2Mi4yM2EzMC42NSwzMC42NSwwLDAsMS0yMy4zNCw5LjY4SDMwMi43VjE2NWgzOS42M2EzMiwzMiwwLDAsMSwyMi42LDkuMjNBMzMuMTgsMzMuMTgsMCwwLDEsMzY1LjY3LDIyMC40OVpNNjE0LjMxLDIwMSw1NzcuNzcsMjkyLjdoLS40NUw1MzkuOSwyMDFINTE0LjIxTDU2NiwzMjAuNTVsLTI5LjM1LDY0LjMySDU2MUw2NDAsMjAxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNS4zIDIzNC4zTDEwNC42IDEzbDI4MC44IDE2MS4yLTYwLjEgNjAuMXpNNDcgMEMzNCA2LjggMjUuMyAxOS4yIDI1LjMgMzUuM3Y0NDEuM2MwIDE2LjEgOC43IDI4LjUgMjEuNyAzNS4zbDI1Ni42LTI1Nkw0NyAwem00MjUuMiAyMjUuNmwtNTguOS0zNC4xLTY1LjcgNjQuNSA2NS43IDY0LjUgNjAuMS0zNC4xYzE4LTE0LjMgMTgtNDYuNS0xLjItNjAuOHpNMTA0LjYgNDk5bDI4MC44LTE2MS4yLTYwLjEtNjAuMUwxMDQuNiA0OTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVBsdXNHIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4Ni4wNjEgMjI4LjQ5NmMxLjgzNCA5LjY5MiAzLjE0MyAxOS4zODQgMy4xNDMgMzEuOTU2QzM4OS4yMDQgMzcwLjIwNSAzMTUuNTk5IDQ0OCAyMDQuOCA0NDhjLTEwNi4wODQgMC0xOTItODUuOTE1LTE5Mi0xOTJzODUuOTE2LTE5MiAxOTItMTkyYzUxLjg2NCAwIDk1LjA4MyAxOC44NTkgMTI4LjYxMSA1MC4yOTJsLTUyLjEyNiA1MC4wM2MtMTQuMTQ1LTEzLjYyMS0zOS4wMjgtMjkuNTk5LTc2LjQ4NS0yOS41OTktNjUuNDg0IDAtMTE4LjkyIDU0LjIyMS0xMTguOTIgMTIxLjI3NyAwIDY3LjA1NiA1My40MzYgMTIxLjI3NyAxMTguOTIgMTIxLjI3NyA3NS45NjEgMCAxMDQuNTEzLTU0Ljc0NSAxMDguOTY1LTgyLjc3M0gyMDQuOHYtNjYuMDA5aDE4MS4yNjF6bTE4NS40MDYgNi40MzdWMTc5LjJoLTU2LjAwMXY1NS43MzNoLTU1LjczM3Y1Ni4wMDFoNTUuNzMzdjU1LjczM2g1Ni4wMDF2LTU1LjczM0g2MjcuMnYtNTYuMDAxaC01NS43MzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2LDhDMTE5LjEsOCw4LDExOS4xLDgsMjU2UzExOS4xLDUwNCwyNTYsNTA0LDUwNCwzOTIuOSw1MDQsMjU2LDM5Mi45LDgsMjU2LDhaTTE4NS4zLDM4MGExMjQsMTI0LDAsMCwxLDAtMjQ4YzMxLjMsMCw2MC4xLDExLDgzLDMyLjNsLTMzLjYsMzIuNmMtMTMuMi0xMi45LTMxLjMtMTkuMS00OS40LTE5LjEtNDIuOSwwLTc3LjIsMzUuNS03Ny4yLDc4LjFTMTQyLjMsMzM0LDE4NS4zLDMzNGMzMi42LDAsNjQuOS0xOS4xLDcwLjEtNTMuM0gxODUuM1YyMzguMUgzMDIuMmExMDkuMiwxMDkuMiwwLDAsMSwxLjksMjAuN2MwLDcwLjgtNDcuNSwxMjEuMi0xMTguOCwxMjEuMlpNNDE1LjUsMjczLjh2MzUuNUgzODBWMjczLjhIMzQ0LjVWMjM4LjNIMzgwVjIwMi44aDM1LjV2MzUuNWgzNS4ydjM1LjVaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVNjaG9sYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkwLjkgMjk4LjVjMCAwIDAgLjEgLjEgLjFjOS4yIDE5LjQgMTQuNCA0MS4xIDE0LjQgNjRDNDA1LjMgNDQ1LjEgMzM4LjUgNTEyIDI1NiA1MTJzLTE0OS4zLTY2LjktMTQ5LjMtMTQ5LjNjMC0yMi45IDUuMi00NC42IDE0LjQtNjRoMGMxLjctMy42IDMuNi03LjIgNS42LTEwLjdjNC40LTcuNiA5LjQtMTQuNyAxNS0yMS4zYzI3LjQtMzIuNiA2OC41LTUzLjMgMTE0LjQtNTMuM2MzMy42IDAgNjQuNiAxMS4xIDg5LjYgMjkuOWM5LjEgNi45IDE3LjQgMTQuNyAyNC44IDIzLjVjNS42IDYuNiAxMC42IDEzLjggMTUgMjEuM2MyIDMuNCAzLjggNyA1LjUgMTAuNXptMjYuNC0xOC44Yy0zMC4xLTU4LjQtOTEtOTguNC0xNjEuMy05OC40cy0xMzEuMiA0MC0xNjEuMyA5OC40TDAgMjAyLjcgMjU2IDAgNTEyIDIwMi43bC05NC43IDc3LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVdhbGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTYuOCAxMjYuOGMzNy42IDYwLjYgNjQuMiAxMTMuMSA4NC4zIDE2Mi41LTguMyAzMy44LTE4LjggNjYuNS0zMS4zIDk4LjMtMTMuMi01Mi4zLTI2LjUtMTAxLjMtNTYtMTQ4LjUgNi41LTM2LjQgMi4zLTczLjYgMy0xMTIuM3pNMTA5LjMgMjAwSDE2LjFjLTYuNSAwLTEwLjUgNy41LTYuNSAxMi43QzUxLjggMjY3IDgxLjMgMzMwLjUgMTAxLjMgNDAwaDEwMy41Yy0xNi4yLTY5LjctMzguNy0xMzMuNy04Mi41LTE5My41LTMtNC04LTYuNS0xMy02LjV6bTQ3LjgtODhjNjguNSAxMDggMTMwIDIzNC41IDEzOC4yIDM2OEg0MDljLTEyLTEzOC02OC40LTI2NS0xNDMuMi0zNjhIMTU3LjF6bTI1MS44LTY4LjVjLTEuOC02LjgtOC4yLTExLjUtMTUuMi0xMS41aC04OC4zYy01LjMgMC05IDUtNy44IDEwLjMgMTMuMiA0Ni41IDIyLjMgOTUuNSAyNi41IDE0NiA0OC4yIDg2LjIgNzkuNyAxNzguMyA5MC42IDI3MC44IDE1LjgtNjAuNSAyNS4zLTEzMy41IDI1LjMtMjAzIDAtNzMuNi0xMi4xLTE0NS4xLTMxLjEtMjEyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDg4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODggMjYxLjhDNDg4IDQwMy4zIDM5MS4xIDUwNCAyNDggNTA0IDExMC44IDUwNCAwIDM5My4yIDAgMjU2UzExMC44IDggMjQ4IDhjNjYuOCAwIDEyMyAyNC41IDE2Ni4zIDY0LjlsLTY3LjUgNjQuOUMyNTguNSA1Mi42IDk0LjMgMTE2LjYgOTQuMyAyNTZjMCA4Ni41IDY5LjEgMTU2LjYgMTUzLjcgMTU2LjYgOTguMiAwIDEzNS03MC40IDE0MC44LTEwNi45SDI0OHYtODUuM2gyMzYuMWMyLjMgMTIuNyAzLjkgMjQuOSAzLjkgNDEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JhdGlwYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjEgOCAwIDExOS4xIDAgMjU2czExMS4xIDI0OCAyNDggMjQ4IDI0OC0xMTEuMSAyNDgtMjQ4UzM4NC45IDggMjQ4IDh6bTExNC42IDIyNi40bC0xMTMgMTUyLjctMTEyLjctMTUyLjdjLTguNy0xMS45LTE5LjEtNTAuNCAxMy42LTcyIDI4LjEtMTguMSA1NC42LTQuMiA2OC41IDExLjkgMTUuOSAxNy45IDQ2LjYgMTYuOSA2MS43IDAgMTMuOS0xNi4xIDQwLjQtMzAgNjguMS0xMS45IDMyLjkgMjEuNiAyMi42IDYwIDEzLjggNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyYXYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAxLjEgMjEyYzQuNCA0LjQgNC40IDExLjkgMCAxNi4zbC05LjcgOS43Yy00LjQgNC43LTExLjkgNC43LTE2LjYgMGwtMTAuNS0xMC41Yy00LjQtNC43LTQuNC0xMS45IDAtMTYuNmw5LjctOS43YzQuNC00LjQgMTEuOS00LjQgMTYuNiAwbDEwLjUgMTAuOHptLTMwLjItMTkuN2MzLTMgMy03LjggMC0xMC41LTIuOC0zLTcuNS0zLTEwLjUgMC0yLjggMi44LTIuOCA3LjUgMCAxMC41IDMuMSAyLjggNy44IDIuOCAxMC41IDB6bS0yNiA1LjNjLTMgMi44LTMgNy41IDAgMTAuMiAyLjggMyA3LjUgMyAxMC41IDAgMi44LTIuOCAyLjgtNy41IDAtMTAuMi0zLTMtNy43LTMtMTAuNSAwem03Mi41LTEzLjNjLTE5LjktMTQuNC0zMy44LTQzLjItMTEuOS02OC4xIDIxLjYtMjQuOSA0MC43LTE3LjIgNTkuOC44IDExLjkgMTEuMyAyOS4zIDI0LjkgMTcuMiA0OC4yLTEyLjUgMjMuNS00NS4xIDMzLjItNjUuMSAxOS4xem00Ny43LTQ0LjVjLTguOS0xMC0yMy4zIDYuOS0xNS41IDE2LjEgNy40IDkgMzIuMSAyLjQgMTUuNS0xNi4xek01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6bS02Ni4yIDQyLjZjMi41LTE2LjEtMjAuMi0xNi42LTI1LjItMjUuNy0xMy42LTI0LjEtMjcuNy0zNi44LTU0LjUtMzAuNCAxMS42LTggMjMuNS02LjEgMjMuNS02LjEuMy02LjQgMC0xMy05LjQtMjQuOSAzLjktMTIuNS4zLTIyLjQuMy0yMi40IDE1LjUtOC42IDI2LjgtMjQuNCAyOS4xLTQzLjIgMy42LTMxLTE4LjgtNTkuMi00OS44LTYyLjgtMjIuMS0yLjUtNDMuNyA3LjctNTQuMyAyNS43LTIzLjIgNDAuMSAxLjQgNzAuOSAyMi40IDgxLjQtMTQuNC0xLjQtMzQuMy0xMS45LTQwLjEtMzQuMy02LjYtMjUuNyAyLjgtNDkuOCA4LjktNjEuNCAwIDAtNC40LTUuOC04LTguOSAwIDAtMTMuOCAwLTI0LjYgNS4zIDExLjktMTUuMiAyNS4yLTE0LjQgMjUuMi0xNC40IDAtNi40LS42LTE0LjktMy42LTIxLjYtNS40LTExLTIzLjgtMTIuOS0zMS43IDIuOC4xLS4yLjMtLjQuNC0uNS01IDExLjktMS4xIDU1LjkgMTYuOSA4Ny4yLTIuNSAxLjQtOS4xIDYuMS0xMyAxMC0yMS42IDkuNy01Ni4yIDYwLjMtNTYuMiA2MC4zLTI4LjIgMTAuOC03Ny4yIDUwLjktNzAuNiA3OS43LjMgMyAxLjQgNS41IDMgNy41LTIuOCAyLjItNS41IDUtOC4zIDguMy0xMS45IDEzLjgtNS4zIDM1LjIgMTcuNyAyNC40IDE1LjgtNy4yIDI5LjYtMjAuMiAzNi4zLTMwLjQgMCAwLTUuNS01LTE2LjMtNC40IDI3LjctNi42IDM0LjMtOS40IDQ2LjItOS4xIDggMy45IDgtMzQuMyA4LTM0LjMgMC0xNC43LTIuMi0zMS0xMS4xLTQxLjUgMTIuNSAxMi4yIDI5LjEgMzIuNyAyOCA2MC42LS44IDE4LjMtMTUuMiAyMy0xNS4yIDIzLTkuMSAxNi42LTQzLjIgNjUuOS0zMC40IDEwNiAwIDAtOS43LTE0LjktMTAuMi0yMi4xLTE3LjQgMTkuNC00Ni41IDUyLjMtMjQuNiA2NC41IDI2LjYgMTQuNyAxMDguOC04OC42IDEyNi4yLTE0Mi4zIDM0LjYtMjAuOCA1NS40LTQ3LjMgNjMuOS02NSAyMiA0My41IDk1LjMgOTQuNSAxMDEuMSA1OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpcGZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyLjUgMzAxLjRjMC03My44IDEwNS4xLTEyMi41IDEwNS4xLTIwMyAwLTQ3LjEtMzQtODgtMzkuMS05MC40LjQgMy4zLjYgNi43LjYgMTBDMTc5LjEgMTEwLjEgMzIgMTcxLjkgMzIgMjg2LjZjMCA0OS44IDMyLjIgNzkuMiA2Ni41IDEwOC4zIDY1LjEgNDYuNyA3OC4xIDcxLjQgNzguMSA4Ni42IDAgMTAuMS00LjggMTctNC44IDIyLjMgMTMuMS0xNi43IDE3LjQtMzEuOSAxNy41LTQ2LjQgMC0yOS42LTIxLjctNTYuMy00NC4yLTg2LjUtMTYtMjIuMy0zMi42LTQyLjYtMzIuNi02OS41em0yMDUuMy0zOWMtMTIuMS02Ni44LTc4LTEyNC40LTk0LjctMTMwLjlsNCA3LjJjMi40IDUuMSAzLjQgMTAuOSAzLjQgMTcuMSAwIDQ0LjctNTQuMiAxMTEuMi01Ni42IDExNi43LTIuMiA1LjEtMy4yIDEwLjUtMy4yIDE1LjggMCAyMC4xIDE1LjIgNDIuMSAxNy45IDQyLjEgMi40IDAgNTYuNi01NS40IDU4LjEtODcuNyA2LjQgMTEuNyA5LjEgMjIuNiA5LjEgMzMuNCAwIDQxLjItNDEuOCA5Ni45LTQxLjggOTYuOSAwIDExLjYgMzEuOSA1My4yIDM1LjUgNTMuMiAxIDAgMi4yLTEuNCAzLjItMi40IDM3LjktMzkuMyA2Ny4zLTg1IDY3LjMtMTM2LjggMC04LS43LTE2LjItMi4yLTI0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdydW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxLjMgMTg5LjNjLTEuMSAxMCA1LjIgMTkuMSA1LjIgMTkuMS43LTcuNSAyLjItMTIuOCA0LTE2LjYuNCAxMC4zIDMuMiAyMy41IDEyLjggMzQuMSA2LjkgNy42IDM1LjYgMjMuMyA1NC45IDYuMSAxIDIuNCAyLjEgNS4zIDMgOC41IDIuOSAxMC4zLTIuNyAyNS4zLTIuNyAyNS4zczE1LjEtMTcuMSAxMy45LTMyLjVjMTAuOC0uNSAyMS40LTguNCAyMS4xLTE5LjUgMCAwLTE4LjkgMTAuNC0zNS41LTguOC05LjctMTEuMi00MC45LTQyLTgzLjEtMzEuOCA0LjMgMSA4LjkgMi40IDEzLjUgNC4xaC0uMWMtNC4yIDItNi41IDcuMS03IDEyem0yOC4zLTEuOGMxOS41IDExIDM3LjQgMjUuNyA0NC45IDM3LTUuNyAzLjMtMjEuNyAxMC40LTM4LTEuNy0xMC4zLTcuNi05LjgtMjYuMi02LjktMzUuM3ptMTQyLjEgNDUuOGMtMS4yIDE1LjUgMTMuOSAzMi41IDEzLjkgMzIuNXMtNS42LTE1LTIuNy0yNS4zYy45LTMuMiAyLTYgMy04LjUgMTkuMyAxNy4zIDQ4IDEuNSA1NC44LTYuMSA5LjYtMTAuNiAxMi4zLTIzLjggMTIuOC0zNC4xIDEuOCAzLjggMy40IDkuMSA0IDE2LjYgMCAwIDYuNC05LjEgNS4yLTE5LjEtLjYtNS0yLjktMTAtNy0xMS44aC0uMWM0LjYtMS44IDkuMi0zLjIgMTMuNS00LjEtNDIuMy0xMC4yLTczLjQgMjAuNi04My4xIDMxLjgtMTYuNyAxOS4yLTM1LjUgOC44LTM1LjUgOC44LS4yIDEwLjkgMTAuNCAxOC45IDIxLjIgMTkuM3ptNjIuNy00NS44YzMgOS4xIDMuNCAyNy43LTcgMzUuNC0xNi4zIDEyLjEtMzIuMiA1LTM3LjkgMS42IDcuNS0xMS40IDI1LjQtMjYgNDQuOS0zN3pNMTYwIDQxOC41aC0yOS40Yy01LjUgMC04LjIgMS42LTkuNSAyLjktMS45IDItMi4yIDQuNy0uOSA4LjEgMy41IDkuMSAxMS40IDE2LjUgMTMuNyAxOC42IDMuMSAyLjcgNy41IDQuMyAxMS44IDQuMyA0LjQgMCA4LjMtMS43IDExLTQuNiA3LjUtOC4yIDExLjktMTcuMSAxMy0xOS44LjYtMS41IDEuMy00LjUtLjktNi44LTEuOC0xLjgtNC43LTIuNy04LjgtMi43em0xODkuMi0xMDEuMmMtMi40IDE3LjktMTMgMzMuOC0yNC42IDQzLjctMy4xLTIyLjctMy43LTU1LjUtMy43LTYyLjQgMC0xNC43IDkuNS0yNC41IDEyLjItMjYuMSAyLjUtMS41IDUuNC0zIDguMy00LjYgMTgtOS42IDQwLjQtMjEuNiA0MC40LTQzLjcgMC0xNi4yLTkuMy0yMy4yLTE1LjQtMjcuOC0uOC0uNi0xLjUtMS4xLTIuMi0xLjctMi4xLTEuNy0zLjctMy00LjMtNC40LTQuNC05LjgtMy42LTM0LjItMS43LTM3LjYuNi0uNiAxNi43LTIwLjkgMTEuOC0zOS4yLTItNy40LTYuOS0xMy4zLTE0LjEtMTctNS4zLTIuNy0xMS45LTQuMi0xOS41LTQuNS0uMS0yLS41LTMuOS0uOS01LjktLjYtMi42LTEuMS01LjMtLjktOC4xLjQtNC43LjgtOSAyLjItMTEuMyA4LjQtMTMuMyAyOC44LTE3LjYgMjktMTcuNmwxMi4zLTIuNC04LjEtOS41Yy0uMS0uMi0xNy4zLTE3LjUtNDYuMy0xNy41LTcuOSAwLTE2IDEuMy0yNC4xIDMuOS0yNC4yIDcuOC00Mi45IDMwLjUtNDkuNCAzOS4zLTMuMS0xLTYuMy0xLjktOS42LTIuNy00LjItMTUuOCA5LTM4LjUgOS0zOC41cy0xMy42LTMtMzMuNyAxNS4yYy0yLjYtNi41LTguMS0yMC41LTEuOC0zNy4yQzE4NC42IDEwLjEgMTc3LjIgMjYgMTc1IDQwLjRjLTcuNi01LjQtNi43LTIzLjEtNy4yLTI3LjYtNy41LjktMjkuMiAyMS45LTI4LjIgNDguMy0yIC41LTMuOSAxLjEtNS45IDEuNy02LjUtOC44LTI1LjEtMzEuNS00OS40LTM5LjMtNy45LTIuMi0xNi0zLjUtMjMuOS0zLjUtMjkgMC00Ni4xIDE3LjMtNDYuMyAxNy41TDYgNDYuOWwxMi4zIDIuNGMuMiAwIDIwLjYgNC4zIDI5IDE3LjYgMS40IDIuMiAxLjggNi42IDIuMiAxMS4zLjIgMi44LS40IDUuNS0uOSA4LjEtLjQgMS45LS44IDMuOS0uOSA1LjktNy43LjMtMTQuMiAxLjgtMTkuNSA0LjUtNy4yIDMuNy0xMi4xIDkuNi0xNC4xIDE3LTUgMTguMiAxMS4yIDM4LjUgMTEuOCAzOS4yIDEuOSAzLjQgMi43IDI3LjgtMS43IDM3LjYtLjYgMS40LTIuMiAyLjctNC4zIDQuNC0uNy41LTEuNCAxLjEtMi4yIDEuNy02LjEgNC42LTE1LjQgMTEuNy0xNS40IDI3LjggMCAyMi4xIDIyLjQgMzQuMSA0MC40IDQzLjcgMyAxLjYgNS44IDMuMSA4LjMgNC42IDIuNyAxLjYgMTIuMiAxMS40IDEyLjIgMjYuMSAwIDYuOS0uNiAzOS43LTMuNyA2Mi40LTExLjYtOS45LTIyLjItMjUuOS0yNC42LTQzLjggMCAwLTI5LjIgMjIuNi0yMC42IDcwLjggNS4yIDI5LjUgMjMuMiA0Ni4xIDQ3IDU0LjcgOC44IDE5LjEgMjkuNCA0NS43IDY3LjMgNDkuNkMxNDMgNTA0LjMgMTYzIDUxMiAxOTIuMiA1MTJoLjJjMjkuMSAwIDQ5LjEtNy43IDYzLjYtMTkuNSAzNy45LTMuOSA1OC41LTMwLjUgNjcuMy00OS42IDIzLjgtOC43IDQxLjctMjUuMiA0Ny01NC43IDguMi00OC40LTIxLjEtNzAuOS0yMS4xLTcwLjl6TTMwNS43IDM3LjdjNS42LTEuOCAxMS42LTIuNyAxNy43LTIuNyAxMSAwIDE5LjkgMyAyNC43IDUtMy4xIDEuNC02LjQgMy4yLTkuNyA1LjMtMi40LS40LTUuNi0uOC05LjItLjgtMTAuNSAwLTIwLjUgMy4xLTI4LjcgOC45LTEyLjMgOC43LTE4IDE2LjktMjAuNyAyMi40LTIuMi0xLjMtNC41LTIuNS03LjEtMy43LTEuNi0uOC0zLjEtMS41LTQuNy0yLjIgNi4xLTkuMSAxOS45LTI2LjUgMzcuNy0zMi4yem0yMSAxOC4yYy0uOCAxLTEuNiAyLjEtMi4zIDMuMi0zLjMgNS4yLTMuOSAxMS42LTQuNCAxNy44LS41IDYuNC0xLjEgMTIuNS00LjQgMTctNC4yLjgtOC4xIDEuNy0xMS41IDIuNy0yLjMtMy4xLTUuNi03LTEwLjUtMTEuMiAxLjQtNC44IDUuNS0xNi4xIDEzLjUtMjIuNSA1LjYtNC4zIDEyLjItNi43IDE5LjYtN3pNNDUuNiA0NS4zYy0zLjMtMi4yLTYuNi00LTkuNy01LjMgNC44LTIgMTMuNy01IDI0LjctNSA2LjEgMCAxMiAuOSAxNy43IDIuNyAxNy44IDUuOCAzMS42IDIzLjIgMzcuNyAzMi4xLTEuNi43LTMuMiAxLjQtNC44IDIuMi0yLjUgMS4yLTQuOSAyLjUtNy4xIDMuNy0yLjYtNS40LTguMy0xMy43LTIwLjctMjIuNC04LjMtNS44LTE4LjItOC45LTI4LjgtOC45LTMuNC4xLTYuNi41LTkgLjl6bTQ0LjcgNDAuMWMtNC45IDQuMi04LjMgOC0xMC41IDExLjItMy40LS45LTcuMy0xLjktMTEuNS0yLjdDNjUgODkuNSA2NC41IDgzLjQgNjQgNzdjLS41LTYuMi0xLjEtMTIuNi00LjQtMTcuOC0uNy0xLjEtMS41LTIuMi0yLjMtMy4yIDcuNC4zIDE0IDIuNiAxOS41IDcgOCA2LjMgMTIuMSAxNy42IDEzLjUgMjIuNHpNNTguMSAyNTkuOWMtMi43LTEuNi01LjYtMy4xLTguNC00LjYtMTQuOS04LTMwLjItMTYuMy0zMC4yLTMwLjUgMC0xMS4xIDQuMy0xNC42IDguOS0xOC4ybC41LS40Yy43LS42IDEuNC0xLjIgMi4yLTEuOC0uOSA3LjItMS45IDEzLjMtMi43IDE0LjkgMCAwIDEyLjEtMTUgMTUuNy00NC4zIDEuNC0xMS41LTEuMS0zNC4zLTUuMS00MyAuMiA0LjkgMCA5LjgtLjMgMTQuNC0uNC0uOC0uOC0xLjYtMS4zLTIuMi0zLjItNC0xMS44LTE3LjUtOS40LTI2LjYuOS0zLjUgMy4xLTYgNi43LTcuOCAzLjgtMS45IDguOC0yLjkgMTUuMS0yLjkgMTIuMyAwIDI1LjkgMy43IDMyLjkgNiAyNS4xIDggNTUuNCAzMC45IDY0LjEgMzcuNy4yLjIuNC4zLjQuM2w1LjYgMy45LTMuNS01LjhjLS4yLS4zLTE5LjEtMzEuNC01My4yLTQ2LjUgMi0yLjkgNy40LTguMSAyMS42LTE1LjEgMjEuNC0xMC41IDQ2LjUtMTUuOCA3NC4zLTE1LjggMjcuOSAwIDUyLjkgNS4zIDc0LjMgMTUuOCAxNC4yIDYuOSAxOS42IDEyLjIgMjEuNiAxNS4xLTM0IDE1LjEtNTIuOSA0Ni4yLTUzLjEgNDYuNWwtMy41IDUuOCA1LjYtMy45cy4yLS4xLjQtLjNjOC43LTYuOCAzOS0yOS44IDY0LjEtMzcuNyA3LTIuMiAyMC42LTYgMzIuOS02IDYuMyAwIDExLjMgMSAxNS4xIDIuOSAzLjUgMS44IDUuNyA0LjQgNi43IDcuOCAyLjUgOS4xLTYuMSAyMi42LTkuNCAyNi42LS41LjYtLjkgMS4zLTEuMyAyLjItLjMtNC42LS41LTkuNS0uMy0xNC40LTQgOC44LTYuNSAzMS41LTUuMSA0MyAzLjYgMjkuMyAxNS43IDQ0LjMgMTUuNyA0NC4zLS44LTEuNi0xLjgtNy43LTIuNy0xNC45LjcuNiAxLjUgMS4yIDIuMiAxLjhsLjUuNGM0LjYgMy43IDguOSA3LjEgOC45IDE4LjIgMCAxNC4yLTE1LjQgMjIuNS0zMC4yIDMwLjUtMi45IDEuNS01LjcgMy4xLTguNCA0LjYtOC43IDUtMTggMTYuNy0xOS4xIDM0LjItLjkgMTQuNi45IDQ5LjkgMy40IDc1LjktMTIuNCA0LjgtMjYuNyA2LjQtMzkuNyA2LjgtMi00LjEtMy45LTguNS01LjUtMTMuMS0uNy0yLTE5LjYtNTEuMS0yNi40LTYyLjIgNS41IDM5IDE3LjUgNzMuNyAyMy41IDg5LjYtMy41LS41LTcuMy0uNy0xMS43LS43aC0xMTdjLTQuNCAwLTguMy4zLTExLjcuNyA2LTE1LjkgMTguMS01MC42IDIzLjUtODkuNi02LjggMTEuMi0yNS43IDYwLjMtMjYuNCA2Mi4yLTEuNiA0LjYtMy41IDktNS41IDEzLjEtMTMtLjQtMjcuMi0yLTM5LjctNi44IDIuNS0yNiA0LjMtNjEuMiAzLjQtNzUuOS0uOS0xNy40LTEwLjMtMjkuMi0xOS0zNC4yek0zNC44IDQwNC42Yy0xMi4xLTIwLTguNy01NC4xLTMuNy01OS4xIDEwLjkgMzQuNCA0Ny4yIDQ0LjMgNzQuNCA0NS40LTIuNyA0LjItNS4yIDcuNi03IDEwbC0xLjQgMS40Yy03LjIgNy44LTguNiAxOC41LTQuMSAzMS44LTIyLjctLjEtNDYuMy05LjgtNTguMi0yOS41em00NS43IDQzLjVjNiAxLjEgMTIuMiAxLjkgMTguNiAyLjQgMy41IDggNy40IDE1LjkgMTIuMyAyMy4xLTE0LjQtNS45LTI0LjQtMTYtMzAuOS0yNS41ek0xOTIgNDk4LjJjLTYwLjYtLjEtNzguMy00NS44LTg0LjktNjQuNy0zLjctMTAuNS0zLjQtMTguMi45LTIzLjEgMi45LTMuMyA5LjUtNy4yIDI0LjYtNy4yaDExOC44YzE1LjEgMCAyMS44IDMuOSAyNC42IDcuMiA0LjIgNC44IDQuNSAxMi42LjkgMjMuMS02LjYgMTguOC0yNC4zIDY0LjYtODQuOSA2NC43em04MC42LTI0LjZjNC45LTcuMiA4LjgtMTUuMSAxMi4zLTIzLjEgNi40LS41IDEyLjYtMS4zIDE4LjYtMi40LTYuNSA5LjUtMTYuNSAxOS42LTMwLjkgMjUuNXptNzYuNi02OWMtMTIgMTkuNy0zNS42IDI5LjMtNTguMSAyOS43IDQuNS0xMy4zIDMuMS0yNC4xLTQuMS0zMS44LS40LS41LS45LTEtMS40LTEuNS0xLjgtMi40LTQuMy01LjgtNy0xMCAyNy4yLTEuMiA2My41LTExIDc0LjQtNDUuNCA1IDUgOC40IDM5LjEtMy44IDU5ek0xOTEuOSAxODcuN2guMmMxMi43LS4xIDI3LjItMTcuOCAyNy4yLTE3LjgtOS45IDYtMTguOCA4LjEtMjcuMyA4LjMtOC41LS4yLTE3LjQtMi4zLTI3LjMtOC4zIDAgMCAxNC41IDE3LjYgMjcuMiAxNy44em02MS43IDIzMC43aC0yOS40Yy00LjIgMC03LjIuOS04LjkgMi43LTIuMiAyLjMtMS41IDUuMi0uOSA2LjcgMSAyLjYgNS41IDExLjMgMTMgMTkuMyAyLjcgMi45IDYuNiA0LjUgMTEgNC41czguNy0xLjYgMTEuOC00LjJjMi4zLTIgMTAuMi05LjIgMTMuNy0xOC4xIDEuMy0zLjMgMS02LS45LTcuOS0xLjMtMS4zLTQtMi45LTkuNC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHdWlsZGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0My40MjcsNjRINC41NzFjMCwxMDMuMjYsMjIuMTkyLDE4MC4wNiw0My40MTgsMjIyLjM1OEMxMTIuMDQ2LDQxNC4xMzUsMjI0LDQ0OCwyMjUuMjU2LDQ0OGEzMTIuODI0LDMxMi44MjQsMCwwLDAsMTQwLjU1LTEwMy40NzdjMjUuOTA3LTMzLjkyMyw1My4xLTg3LjE5LDY1LjkxNi0xNDUuNzYxSDE3MS44MzNjNC4xNCwzNi40MjksMjIuMTc3LDY3Ljk0Niw0NS4xLDg2Ljk0NGg4OC41ODljLTE3LjAxMiwyOC4yMTMtNDguMTg2LDU0LjQtODAuNDU2LDY5LjQ4Mi0zMS4yMzItMTMuMjU5LTY5LjA5LTQ2LjU0NC05Ni41NDgtOTguMzYyLTI2LjcyNi01My44MzMtMjcuMDkyLTEwNS44ODMtMjcuMDkyLTEwNS44ODNINDM3LjU3M0E2MjUuOTEsNjI1LjkxLDAsMCwwLDQ0My40MjcsNjRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUd1bHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA5LjggMzkxLjFsLTE0LjEgMjQuNi00LjYgODAuMmMwIDguOS0yOC4zIDE2LjEtNjMuMSAxNi4xcy02My4xLTcuMi02My4xLTE2LjFsLTUuOC03OS40LTE0LjktMjUuNGM0MS4yIDE3LjMgMTI2IDE2LjcgMTY1LjYgMHptLTE5Ni0yNTMuM2wxMy42IDEyNS41YzUuOS0yMCAyMC44LTQ3IDQwLTU1LjIgNi4zLTIuNyAxMi43LTIuNyAxOC43LjkgNS4yIDMgOS42IDkuMyAxMC4xIDExLjggMS4yIDYuNS0yIDkuMS00LjUgOS4xLTMgMC01LjMtNC42LTYuOC03LjMtNC4xLTcuMy0xMC4zLTcuNi0xNi45LTIuOC02LjkgNS0xMi45IDEzLjQtMTcuMSAyMC43LTUuMSA4LjgtOS40IDE4LjUtMTIgMjguMi0xLjUgNS42LTIuOSAxNC42LS42IDE5LjkgMSAyLjIgMi41IDMuNiA0LjkgMy42IDUgMCAxMi4zLTYuNiAxNS44LTEwLjEgNC41LTQuNSAxMC4zLTExLjUgMTIuNS0xNmw1LjItMTUuNWMyLjYtNi44IDkuOS01LjYgOS45IDAgMCAxMC4yLTMuNyAxMy42LTEwIDM0LjctNS44IDE5LjUtNy42IDI1LjgtNy42IDI1LjgtLjcgMi44LTMuNCA3LjUtNi4zIDcuNS0xLjIgMC0yLjEtLjQtMi42LTEuMi0xLTEuNC0uOS01LjMtLjgtNi4zLjItMy4yIDYuMy0yMi4yIDcuMy0yNS4yLTIgMi4yLTQuMSA0LjQtNi40IDYuNi01LjQgNS4xLTE0LjEgMTEuOC0yMS41IDExLjgtMy40IDAtNS42LS45LTcuNy0yLjRsNy42IDc5LjZjMiA1IDM5LjIgMTcuMSA4OC4yIDE3LjEgNDkuMSAwIDg2LjMtMTIuMiA4OC4yLTE3LjFsMTAuOS05NC42Yy01LjcgNS4yLTEyLjMgMTEuNi0xOS42IDE0LjgtNS40IDIuMy0xNy40IDMuOC0xNy40LTUuNyAwLTUuMiA5LjEtMTQuOCAxNC40LTIxLjUgMS40LTEuNyA0LjctNS45IDQuNy04LjEgMC0yLjktNi0yLjItMTEuNyAyLjUtMy4yIDIuNy02LjIgNi4zLTguNyA5LjctNC4zIDYtNi42IDExLjItOC41IDE1LjUtNi4yIDE0LjItNC4xIDguNi05LjEgMjItNSAxMy4zLTQuMiAxMS44LTUuMiAxNC0uOSAxLjktMi4yIDMuNS00IDQuNS0xLjkgMS00LjUuOS02LjEtLjMtLjktLjYtMS4zLTEuOS0xLjMtMy43IDAtLjkuMS0xLjguMy0yLjcgMS41LTYuMSA3LjgtMTguMSAxNS0zNC4zIDEuNi0zLjcgMS0yLjYuOC0yLjMtNi4yIDYtMTAuOSA4LjktMTQuNCAxMC41LTUuOCAyLjYtMTMgMi42LTE0LjUtNC4xLS4xLS40LS4xLS44LS4yLTEuMi0xMS44IDkuMi0yNC4zIDExLjctMjAtOC4xLTQuNiA4LjItMTIuNiAxNC45LTIyLjQgMTQuOS00LjEgMC03LjEtMS40LTguNi01LjEtMi4zLTUuNSAxLjMtMTQuOSA0LjYtMjMuOCAxLjctNC41IDQtOS45IDcuMS0xNi4yIDEuNi0zLjQgNC4yLTUuNCA3LjYtNC41LjYuMiAxLjEuNCAxLjYuNyAyLjYgMS44IDEuNiA0LjUuMyA3LjItMy44IDcuNS03LjEgMTMtOS4zIDIwLjgtLjkgMy4zLTIgOSAxLjUgOSAyLjQgMCA0LjctLjggNi45LTIuNCA0LjYtMy40IDguMy04LjUgMTEuMS0xMy41IDItMy42IDQuNC04LjMgNS42LTEyLjMuNS0xLjcgMS4xLTMuMyAxLjgtNC44IDEuMS0yLjUgMi42LTUuMSA1LjItNS4xIDEuMyAwIDIuNC41IDMuMiAxLjUgMS43IDIuMiAxLjMgNC41LjQgNi45LTIgNS42LTQuNyAxMC42LTYuOSAxNi43LTEuMyAzLjUtMi43IDgtMi43IDExLjcgMCAzLjQgMy43IDIuNiA2LjggMS4yIDIuNC0xLjEgNC44LTIuOCA2LjgtNC41IDEuMi00LjkuOS0zLjggMjYuNC02OC4yIDEuMy0zLjMgMy43LTQuNyA2LjEtNC43IDEuMiAwIDIuMi40IDMuMiAxLjEgMS43IDEuMyAxLjcgNC4xIDEgNi4yLS43IDEuOS0uNiAxLjMtNC41IDEwLjUtNS4yIDEyLjEtOC42IDIwLjgtMTMuMiAzMS45LTEuOSA0LjYtNy43IDE4LjktOC43IDIyLjMtLjYgMi4yLTEuMyA1LjggMSA1LjggNS40IDAgMTkuMy0xMy4xIDIzLjEtMTcgLjItLjMuNS0uNC45LS42LjYtMS45IDEuMi0zLjcgMS43LTUuNSAxLjQtMy44IDIuNy04LjIgNS4zLTExLjMuOC0xIDEuNy0xLjYgMi43LTEuNiAyLjggMCA0LjIgMS4yIDQuMiA0IDAgMS4xLS43IDUuMS0xLjEgNi4yIDEuNC0xLjUgMi45LTMgNC41LTQuNSAxNS0xMy45IDI1LjctNi44IDI1LjcuMiAwIDcuNC04LjkgMTcuNy0xMy44IDIzLjQtMS42IDEuOS00LjkgNS40LTUgNi40IDAgMS4zLjkgMS44IDIuMiAxLjggMiAwIDYuNC0zLjUgOC00LjcgNS0zLjkgMTEuOC05LjkgMTYuNi0xNC4xbDE0LjgtMTM2LjhjLTMwLjUgMTcuMS0xOTcuNiAxNy4yLTIyOC4zLjJ6bTIyOS43LTguNWMwIDIxLTIzMS4yIDIxLTIzMS4yIDAgMC04LjggNTEuOC0xNS45IDExNS42LTE1LjkgOSAwIDE3LjguMSAyNi4zLjRsMTIuNi00OC43TDIyOC4xLjZjMS40LTEuNCA1LjgtLjIgOS45IDMuNXM2LjYgNy45IDUuMyA5LjNsLS4xLjFMMTg1LjkgNzRsLTEwIDQwLjdjMzkuOSAyLjYgNjcuNiA4LjEgNjcuNiAxNC42em0tNjkuNCA0LjZjMC0uOC0uOS0xLjUtMi41LTIuMWwtLjIuOGMwIDEuMy01IDIuNC0xMS4xIDIuNHMtMTEuMS0xLjEtMTEuMS0yLjRjMC0uMSAwLS4yLjEtLjNsLjItLjdjLTEuOC42LTMgMS40LTMgMi4zIDAgMi4xIDYuMiAzLjcgMTMuNyAzLjcgNy43LjEgMTMuOS0xLjYgMTMuOS0zLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhY2tlck5ld3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMySDB6bTIxLjIgMTk3LjJIMjFjLjEtLjEuMi0uMy4zLS40IDAgLjEgMCAuMy0uMS40em0yMTggNTMuOVYzODRoLTMxLjRWMjgxLjNMMTI4IDEyOGgzNy4zYzUyLjUgOTguMyA0OS4yIDEwMS4yIDU5LjMgMTI1LjYgMTIuMy0yNyA1LjgtMjQuNCA2MC42LTEyNS42SDMyMGwtODAuOCAxNTUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFja2VycmFuayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzcuNSAxMjhDNDYzIDEwMy4wNSAyODUuMTMgMCAyNTYuMTYgMFM0OS4yNSAxMDIuNzkgMzQuODQgMTI4cy0xNC40OSAyMzAuOCAwIDI1NiAxOTIuMzggMTI4IDIyMS4zMiAxMjhTNDYzIDQwOS4wOCA0NzcuNDkgMzg0czE0LjUxLTIzMSAuMDEtMjU2ek0zMTYuMTMgNDE0LjIyYy00IDAtNDAuOTEtMzUuNzctMzgtMzguNjkuODctLjg3IDYuMjYtMS40OCAxNy41NS0xLjgzIDAtMjYuMjMuNTktNjguNTkuOTQtODYuMzIgMC0yLS40NC0zLjQzLS40NC01Ljg1aC03OS45M2MwIDcuMS0uNDYgMzYuMiAxLjM3IDcyLjg4LjIzIDQuNTQtMS41OCA2LTUuNzQgNS45NC0xMC4xMyAwLTIwLjI3LS4xMS0zMC40MS0uMDgtNC4xIDAtNS44Ny0xLjUzLTUuNzQtNi4xMS45Mi0zMy40NCAzLTg0LS4xNS0yMTIuNjd2LTMuMTdjLTkuNjctLjM1LTE2LjM4LTEtMTcuMjYtMS44NC0yLjkyLTIuOTIgMzQuNTQtMzguNjkgMzguNDktMzguNjlzNDEuMTcgMzUuNzggMzguMjcgMzguNjljLS44Ny44Ny03LjkgMS40OS0xNi43NyAxLjg0djMuMTZjLTIuNDIgMjUuNzUtMiA3OS41OS0yLjYzIDEwNS4zOWg4MC4yNmMwLTQuNTUuMzktMzQuNzQtMS4yLTgzLjY0LS4xLTMuMzkuOTUtNS4xNyA0LjIxLTUuMiAxMS4wNy0uMDggMjIuMTUtLjEzIDMzLjIzLS4wNiAzLjQ2IDAgNC41NyAxLjcyIDQuNSA1LjM4QzMzMyAzNTQuNjQgMzM2IDM0MS4yOSAzMzYgMzczLjY5YzguODcuMzUgMTYuODIgMSAxNy42OSAxLjg0IDIuODggMi45MS0zMy42MiAzOC42OS0zNy41OCAzOC42OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFzaG5vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUuMTkgMTcxLjFDLTExLjcyIDIxNy4xLTExLjcyIDI5NCAzNS4xOSAzNDAuOUwxNzEuMSA0NzYuOEMyMTcuMSA1MjMuNyAyOTQgNTIzLjcgMzQwLjkgNDc2LjhMNDc2LjggMzQwLjlDNTIzLjcgMjk0IDUyMy43IDIxNy4xIDQ3Ni44IDE3MS4xTDM0MC45IDM1LjE5QzI5NC0xMS43MiAyMTcuMS0xMS43MiAxNzEuMSAzNS4xOUwzNS4xOSAxNzEuMXpNMzE1LjUgMzE1LjVDMjgyLjYgMzQ4LjMgMjI5LjQgMzQ4LjMgMTk2LjYgMzE1LjVDMTYzLjcgMjgyLjYgMTYzLjcgMjI5LjQgMTk2LjYgMTk2LjZDMjI5LjQgMTYzLjcgMjgyLjYgMTYzLjcgMzE1LjUgMTk2LjZDMzQ4LjMgMjI5LjQgMzQ4LjMgMjgyLjYgMzE1LjUgMzE1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjUxLjYgMTU3LjZjMC0xLjktLjktMi44LTIuOC0yLjhoLTQwLjljLTEuNiAwLTIuNyAxLjQtMi43IDIuOHYyMDEuOGMwIDEuNCAxLjEgMi44IDIuNyAyLjhoNDAuOWMxLjkgMCAyLjgtLjkgMi44LTIuOHpNMTU2LjUgMTY4Yy0xNi4xLTExLjgtMzYuMy0xNy45LTYwLjMtMTgtMTguMS0uMS0zNC42IDMuNy00OS44IDExLjRWODAuMmMwLTEuOC0uOS0yLjctMi44LTIuN0gyLjdjLTEuOCAwLTIuNy45LTIuNyAyLjd2Mjc5LjJjMCAxLjkuOSAyLjggMi43IDIuOGg0MWMxLjkgMCAyLjgtLjkgMi44LTIuOFYyMjMuM2MwLS44LTIuOC0yNyA0NS44LTI3IDQ4LjUgMCA0NS44IDI2LjEgNDUuOCAyN3YxMjIuNmMwIDkgNy4zIDE2LjMgMTYuNCAxNi4zaDI3LjNjMS44IDAgMi43LS45IDIuNy0yLjhWMjIzLjNjMC0yMy40LTkuMy00MS44LTI4LTU1LjN6bTQ3OC40IDExMC4xYy02LjgtMTUuNy0xOC40LTI3LTM0LjktMzQuMWwtNTcuNi0yNS4zYy04LjYtMy42LTkuMi0xMS4yLTIuNi0xNi4xIDcuNC01LjUgNDQuMy0xMy45IDg0IDYuOCAxLjcgMSA0LS4zIDQtMi40di00NC43YzAtMS4zLS42LTIuMS0xLjktMi42LTE3LjctNi42LTM2LjEtOS45LTU1LjEtOS45LTI2LjUgMC00NS4zIDUuOC01OC41IDE1LjQtLjUuNC0yOC40IDIwLTIyLjcgNTMuNyAzLjQgMTkuNiAxNS44IDM0LjIgMzcuMiA0My42bDUzLjYgMjMuNWMxMS42IDUuMSAxNS4yIDEzLjMgMTIuMiAyMS4yLTMuNyA5LjEtMTMuMiAxMy42LTM2LjUgMTMuNi0yNC4zIDAtNDQuNy04LjktNTguNC0xOS4xLTIuMS0xLjQtNC40LjItNC40IDIuM3YzNC40YzAgMTAuNCA0LjkgMTcuMyAxNC42IDIwLjcgMTUuNiA1LjUgMzEuNiA4LjIgNDguMiA4LjIgMTIuNyAwIDI1LjgtMS4yIDM2LjMtNC4zLjctLjMgMzYtOC45IDQ1LjYtNDUuOCAzLjUtMTMuNSAyLjQtMjYuNS0zLjEtMzkuMXpNMzc2LjIgMTQ5LjhjLTMxLjcgMC0xMDQuMiAyMC4xLTEwNC4yIDEwMy41djE4My41YzAgLjguNiAyLjcgMi43IDIuN2g0MC45YzEuOSAwIDIuOC0uOSAyLjgtMi43VjM0OGMxNi41IDEyLjcgMzUuOCAxOS4xIDU3LjcgMTkuMSA2MC41IDAgMTA4LjctNDguNSAxMDguNy0xMDguNy4xLTYwLjMtNDguMi0xMDguNi0xMDguNi0xMDguNnptMCAxNzAuOWMtMTcuMiAwLTMxLjktNi4xLTQ0LTE4LjItMTIuMi0xMi4yLTE4LjItMjYuOC0xOC4yLTQ0IDAtMzQuNSAyNy42LTYyLjIgNjIuMi02Mi4yIDM0LjUgMCA2Mi4yIDI3LjYgNjIuMiA2Mi4yLjEgMzQuMy0yNy4zIDYyLjItNjIuMiA2Mi4yek0yMjguMyA3Mi41Yy0xNS45IDAtMjguOCAxMi45LTI4LjkgMjguOSAwIDE1LjYgMTIuNyAyOC45IDI4LjkgMjguOXMyOC45LTEzLjEgMjguOS0yOC45YzAtMTYuMi0xMy0yOC45LTI4LjktMjguOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGlyZUFIZWxwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQzLjEgMEg3MS45QzY3LjkgMzcuMyAzNy40IDY3LjggMCA3MS43djM3MS41YzM3LjQgNC45IDY2IDMyLjQgNzEuOSA2OC44aDM3Mi4yYzMtMzYuNCAzMi41LTY1LjggNjcuOS02OS44VjcxLjdjLTM2LjQtNS45LTY1LTM1LjMtNjguOS03MS43em0tMzcgNDA0LjljLTM2LjMgMC0xOC44LTItNTUuMS0yLTM1LjggMC0yMSAyLTU2LjEgMi01LjkgMC00LjktOC4yIDAtOS44IDIyLjgtNy42IDIyLjktMTAuMiAyNC42LTEyLjggMTAuNC0xNS42IDUuOS04MyA1LjktMTEzIDAtNS4zLTYuNC0xMi44LTEzLjgtMTIuOEgyMDAuNGMtNy40IDAtMTMuOCA3LjUtMTMuOCAxMi44IDAgMzAtNC41IDk3LjQgNS45IDExMyAxLjcgMi41IDEuOCA1LjIgMjQuNiAxMi44IDQuOSAxLjYgNiA5LjggMCA5LjgtMzUuMSAwLTIwLjMtMi01Ni4xLTItMzYuMyAwLTE4LjggMi01NS4xIDItNy45IDAtNS44LTEwLjggMC0xMC44IDEwLjItMy40IDEzLjUtMy41IDIxLjctMTMuOCA3LjctMTIuOSA3LjktNDQuNCA3LjktMTI3LjhWMTUxLjNjMC0yMi4yLTEyLjItMjguMy0yOC42LTMyLjQtOC44LTIuMi00LTExLjggMS0xMS44IDM2LjUgMCAyMC42IDIgNTcuMSAyIDMyLjcgMCAxNi41LTIgNDkuMi0yIDMuMyAwIDguNSA4LjMgMSAxMC44LTQuOSAxLjYtMjcuNiAzLjctMjcuNiAzOS4zIDAgNDUuNi0uMiA1NS44IDEgNjguOCAwIDEuMyAyLjMgMTIuOCAxMi44IDEyLjhoMTA5LjJjMTAuNSAwIDEyLjgtMTEuNSAxMi44LTEyLjggMS4yLTEzIDEtMjMuMiAxLTY4LjggMC0zNS42LTIyLjctMzcuNy0yNy42LTM5LjMtNy41LTIuNS0yLjMtMTAuOCAxLTEwLjggMzIuNyAwIDE2LjUgMiA0OS4yIDIgMzYuNSAwIDIwLjYtMiA1Ny4xLTIgNC45IDAgOS45IDkuNiAxIDExLjgtMTYuNCA0LjEtMjguNiAxMC4zLTI4LjYgMzIuNHYxMDEuMmMwIDgzLjQuMSAxMTQuOSA3LjkgMTI3LjggOC4yIDEwLjIgMTEuNCAxMC40IDIxLjcgMTMuOCA1LjggMCA3LjggMTAuOCAwIDEwLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjYwLjM1MywyNTQuODc4LDEzMS41MzgsMzMuMWEyLjIwOCwyLjIwOCwwLDAsMC0zLjgyOS4wMDlMLjMsMjU0Ljg4N0EyLjIzNCwyLjIzNCwwLDAsMCwuMywyNTcuMTIyTDEyOS4xMTYsNDc4LjlhMi4yMDgsMi4yMDgsMCwwLDAsMy44My0uMDA5TDI2MC4zNTgsMjU3LjExM0EyLjIzOSwyLjIzOSwwLDAsMCwyNjAuMzUzLDI1NC44NzhabTM5LjA3OC0yNS43MTNhMi4xOSwyLjE5LDAsMCwwLDEuOSwxLjExMWg2Ni41MDlhMi4yMjYsMi4yMjYsMCwwLDAsMS45LTMuMzQxTDI1OS4xMTUsMzMuMTExYTIuMTg3LDIuMTg3LDAsMCwwLTEuOS0xLjExMUgxOTAuNzA3YTIuMjI2LDIuMjI2LDAsMCwwLTEuOSwzLjM0MVpNNTExLjcsMjU0Ljg4NiwzODQuOSwzMy4xMTJBMi4yLDIuMiwwLDAsMCwzODIuOTksMzJoLTY2LjZhMi4yMjYsMi4yMjYsMCwwLDAtMS45MDYsMy4zNEw0NDAuNjUyLDI1NiwzMTQuNDgxLDQ3Ni42NmEyLjIyNiwyLjIyNiwwLDAsMCwxLjkwNiwzLjM0aDY2LjZhMi4yLDIuMiwwLDAsMCwxLjkwNi0xLjExMkw1MTEuNywyNTcuMTE0QTIuMjQzLDIuMjQzLDAsMCwwLDUxMS43LDI1NC44ODZaTTM2Ni4wMTYsMjg0LjkxN0gyOTkuNTA4YTIuMTg3LDIuMTg3LDAsMCwwLTEuOSwxLjExMWwtMTA4LjgsMTkwLjYzMWEyLjIyNiwyLjIyNiwwLDAsMCwxLjksMy4zNDFoNjYuNTA5YTIuMTg3LDIuMTg3LDAsMCwwLDEuOS0xLjExMWwxMDguOC0xOTAuNjMxQTIuMjI2LDIuMjI2LDAsMCwwLDM2Ni4wMTYsMjg0LjkxN1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9vbGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0LjUgMzUybDM4LjMuOGMtMTMuMi00LjYtMjYtMTAuMi0zOC4zLTE2Ljh6bTU3LjctNS4zdjUuM2wtMTkuNC44YzM2LjUgMTIuNSA2OS45IDE0LjIgOTQuNyA3LjItMTkuOS4yLTQ1LjgtMi42LTc1LjMtMTMuM3ptNDA4LjktMTE1LjJjMTUuOSAwIDI4LjktMTIuOSAyOC45LTI4LjlzLTEyLjktMjQuNS0yOC45LTI0LjVjLTE1LjkgMC0yOC45IDguNi0yOC45IDI0LjVzMTIuOSAyOC45IDI4LjkgMjguOXptLTI5IDEyMC41SDY0MFYyNDEuNWgtNTcuOXptLTczLjcgMGg1Ny45VjE1Ni43TDUwOC40IDE4NHptLTMxLTExOS40Yy0xOC4yLTE4LjItNTAuNC0xNy4xLTUwLjQtMTcuMXMtMzIuMy0xLjEtNTAuNCAxNy4xYy0xOC4yIDE4LjItMTYuOCAzMy45LTE2LjggNTIuNnMtMS40IDM0LjMgMTYuOCA1Mi41IDUwLjQgMTcuMSA1MC40IDE3LjEgMzIuMyAxLjEgNTAuNC0xNy4xYzE4LjItMTguMiAxNi44LTMzLjggMTYuOC01Mi41LS4xLTE4LjggMS4zLTM0LjUtMTYuOC01Mi42em0tMzkuOCA3MS45YzAgMy42LTEuOCAxMi41LTEwLjcgMTIuNXMtMTAuNy04LjktMTAuNy0xMi41di00MC40YzAtOC43IDcuMy0xMC45IDEwLjctMTAuOXMxMC43IDIuMSAxMC43IDEwLjl6bS0xMDYuMi03MS45Yy0xOC4yLTE4LjItNTAuNC0xNy4xLTUwLjQtMTcuMXMtMzIuMi0xLjEtNTAuNCAxNy4xYy0xLjkgMS45LTMuNyAzLjktNS4zIDYtMzguMi0yOS42LTcyLjUtNDYuNS0xMDIuMS02MS4xdi0yMC43bC0yMi41IDEwLjZjLTU0LjQtMjIuMS04OS0xOC4yLTk3LjMuMSAwIDAtMjQuOSAzMi44IDYxLjggMTEwLjhWMzUyaDU3Ljl2LTI4LjZjLTYuNS00LjItMTMtOC43LTE5LjQtMTMuNi0xNC44LTExLjItMjcuNC0yMS42LTM4LjQtMzEuNHYtMzFjMTMuMSAxNC43IDMwLjUgMzEuNCA1My40IDUwLjNsNC41IDMuNnYtMjkuOGMwLTYuOSAxLjctMTguMiAxMC44LTE4LjJzMTAuNiA2LjkgMTAuNiAxNVYzMTdjMTggMTIuMiAzNy4zIDIyLjEgNTcuNyAyOS42di05My45YzAtMTguNy0xMy40LTM3LjQtNDAuNi0zNy40LTE1LjgtLjEtMzAuNSA4LjItMzguNSAyMS45di01NC4zYzQxLjkgMjAuOSA4My45IDQ2LjUgOTkuOSA1OC4zLTEwLjIgMTQuNi05LjMgMjguMS05LjMgNDMuNyAwIDE4LjctMS40IDM0LjMgMTYuOCA1Mi41czUwLjQgMTcuMSA1MC40IDE3LjEgMzIuMyAxLjEgNTAuNC0xNy4xYzE4LjItMTguMiAxNi43LTMzLjggMTYuNy01Mi41IDAtMTguNSAxLjUtMzQuMi0xNi43LTUyLjN6TTY1LjIgMTg0djYzLjNjLTQ4LjctNTQuNS0zOC45LTc2LTM1LjItNzkuMSAxMy41LTExLjQgMzcuNS04IDY0LjQgMi4xem0yMjYuNSAxMjAuNWMwIDMuNi0xLjggMTIuNS0xMC43IDEyLjVzLTEwLjctOC45LTEwLjctMTIuNXYtNDAuNGMwLTguNyA3LjMtMTAuOSAxMC43LTEwLjlzMTAuNyAyLjEgMTAuNyAxMC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3JuYmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ni4zOCAzNzAuM2EzNy44IDM3LjggMCAxIDEtMzIuMDctMzIuNDJjLTc4LjI4LTExMS4zNSA1Mi0xOTAuNTMgNTItMTkwLjUzLTUuODYgNDMtOC4yNCA5MS4xNi04LjI0IDkxLjE2LTY3LjMxIDQxLjQ5LjkzIDY0LjA2IDM5LjgxIDcyLjg3YTE0MC4zOCAxNDAuMzggMCAwIDAgMTMxLjY2IDkxLjk0YzEuOTIgMCAzLjc3LS4yMSA1LjY3LS4yOGwuMTEgMTguODZjLTk5LjIyIDEuMzktMTU4LjctMjkuMTQtMTg4Ljk0LTUxLjZ6bTEwOC0zMjcuN0EzNy41NyAzNy41NyAwIDAgMCAxODEgMjEuNDVhMzcuOTUgMzcuOTUgMCAxIDAtMzEuMTcgNTQuMjJjLTIyLjU1IDI5LjkxLTUzLjgzIDg5LjU3LTUyLjQyIDE5MGwyMS44NC0uMTVjMC0uOS0uMTQtMS43Ny0uMTQtMi42OEExNDAuNDIgMTQwLjQyIDAgMCAxIDIwNyAxMzIuNzFjOC0zNy43MSAzMC43LTExNC4zIDczLjgtNDQuMjkgMCAwIDQ4LjE0IDIuMzggOTEuMTggOC4yNCAwIDAtNzcuODQtMTI4LTE4Ny41OS01NC4wNnptMzA0LjE5IDEzNC4xN2EzNy45NCAzNy45NCAwIDEgMC01My44NC0yOC43QzQwMyAxMjYuMTMgMzQ0Ljg5IDk5IDI1MS4yOCAxMDAuMzNsLjE0IDIyLjVjMi43LS4xNSA1LjM5LS40MSA4LjE0LS40MWExNDAuMzcgMTQwLjM3IDAgMCAxIDEzMC40OSA4OC43NmMzOS4xIDkgMTA1LjA2IDMxLjU4IDM4LjQ2IDcyLjU0IDAgMC0yLjM0IDQ4LjEzLTguMjEgOTEuMTYgMCAwIDEzMy40NS04MS4xNiA0OS0xOTQuNjFhMzcuNDUgMzcuNDUgMCAwIDAgMTkuMzEtMy41ek0zNzQuMDYgNDM2LjI0YzIxLjQzLTMyLjQ2IDQ2LjQyLTg5LjY5IDQ1LjE0LTE3OS42NmwtMTkuNTIuMTRjLjA4IDIuMDYuMyA0LjA3LjMgNi4xNWExNDAuMzQgMTQwLjM0IDAgMCAxLTkxLjM5IDEzMS40NWMtOC44NSAzOC45NS0zMS40NCAxMDYuNjYtNzIuNzcgMzkuNDkgMCAwLTQ4LjEyLTIuMzQtOTEuMTktOC4yMiAwIDAgNzkuOTIgMTMxLjM0IDE5MS45IDUxYTM3LjUgMzcuNSAwIDAgMCAzLjY0IDE0IDM3LjkzIDM3LjkzIDAgMSAwIDMzLjg5LTU0LjI5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3RqYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzYxLjUgMGMwIDEzMS42LTgwLjcgMTc2LjgtMTQwLjIgMjA5LjRjLS42IC4zLTEuMSAuNi0xLjYgLjljLTUzLjggMzAuMi04OC43IDQ5LjgtODkuNiAxMjJIMzJDMzIgMjAwLjggMTEyLjcgMTU1LjYgMTcyLjIgMTIzQzIyNyA5My4yIDI2Mi41IDczIDI2Mi41IDBoOTguOXpNMzAxIDMwMi42YzU0LjgtMjkuOCA5MC4zLTUwIDkwLjMtMTIzaDk4YzAgMTMxLjYtODAuNyAxNzYuNy0xNDAuMiAyMDkuNGMtNTQuOCAyOS44LTkwLjMgNTAtOTAuMyAxMjNoLTk4YzAtMTMxLjYgODAuNy0xNzYuOCAxNDAuMi0yMDkuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91enogKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc1LjkgMzMwLjdIMTcxLjNWNDgwSDE3VjMyaDEwOS41djEwNC41bDMwNS4xIDg1LjZWNDgwSDI3NS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIdG1sNSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMybDM0LjkgMzk1LjhMMTkxLjUgNDgwbDE1Ny42LTUyLjJMMzg0IDMySDB6bTMwOC4yIDEyNy45SDEyNC40bDQuMSA0OS40aDE3NS42bC0xMy42IDE0OC40LTk3LjkgMjd2LjNoLTEuMWwtOTguNy0yNy4zLTYtNzUuOGg0Ny43TDEzOCAzMjBsNTMuNSAxNC41IDUzLjctMTQuNSA2LTYyLjJIODQuM0w3MS41IDExMi4yaDI0MS4xbC00LjQgNDcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSHVic3BvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjcuNCAyMTEuNmMtMjUuMSAyMy43LTQwLjggNTcuMy00MC44IDk0LjYgMCAyOS4zIDkuNyA1Ni4zIDI2IDc4TDIwMy4xIDQzNGMtNC40LTEuNi05LjEtMi41LTE0LTIuNS0xMC44IDAtMjAuOSA0LjItMjguNSAxMS44LTcuNiA3LjYtMTEuOCAxNy44LTExLjggMjguNnM0LjIgMjAuOSAxMS44IDI4LjVjNy42IDcuNiAxNy44IDExLjYgMjguNSAxMS42IDEwLjggMCAyMC45LTMuOSAyOC42LTExLjYgNy42LTcuNiAxMS44LTE3LjggMTEuOC0yOC41IDAtNC4yLS42LTguMi0xLjktMTIuMWw1MC01MC4yYzIyIDE2LjkgNDkuNCAyNi45IDc5LjMgMjYuOSA3MS45IDAgMTMwLTU4LjMgMTMwLTEzMC4yIDAtNjUuMi00Ny43LTExOS4yLTExMC4yLTEyOC43VjExNmMxNy41LTcuNCAyOC4yLTIzLjggMjguMi00Mi45IDAtMjYuMS0yMC45LTQ3LjktNDctNDcuOVMzMTEuMiA0NyAzMTEuMiA3My4xYzAgMTkuMSAxMC43IDM1LjUgMjguMiA0Mi45djYxLjJjLTE1LjIgMi4xLTI5LjYgNi43LTQyLjcgMTMuNi0yNy42LTIwLjktMTE3LjUtODUuNy0xNjguOS0xMjQuOCAxLjItNC40IDItOSAyLTEzLjhDMTI5LjggMjMuNCAxMDYuMyAwIDc3LjQgMCA0OC42IDAgMjUuMiAyMy40IDI1LjIgNTIuMmMwIDI4LjkgMjMuNCA1Mi4zIDUyLjIgNTIuMyA5LjggMCAxOC45LTIuOSAyNi44LTcuNmwxNjMuMiAxMTQuN3ptODkuNSAxNjMuNmMtMzguMSAwLTY5LTMwLjktNjktNjlzMzAuOS02OSA2OS02OSA2OSAzMC45IDY5IDY5LTMwLjkgNjktNjkgNjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUlkZWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyNS42MSwxNjUuNDhhNDkuMDcsNDkuMDcsMCwxLDAsNDkuMDYsNDkuMDZBNDkuMDgsNDkuMDgsMCwwLDAsMTI1LjYxLDE2NS40OFpNODYuMTUsNDI1Ljg0aDc4Ljk0VjI4NS4zMkg4Ni4xNVptMTUxLjQ2LTIxMS42YzAtMjAtMTAtMjIuNTMtMTguNzQtMjIuNTNIMjA0LjgyVjIzNy41aDE0LjA1QzIyOC42MiwyMzcuNSwyMzcuNjEsMjM0LjY5LDIzNy42MSwyMTQuMjRabTIwMS42OSw0NlYxNjguOTNoMjIuNzVWMjM3LjVoMzMuNjlDNDg2LjUsMTEzLjA4LDM4OC42MSw4Ni4xOSwyOTkuNjcsODYuMTlIMjA0Ljg0VjE2OWgxNGMyNS42LDAsNDEuNSwxNy4zNSw0MS41LDQ1LjI2LDAsMjguODEtMTUuNTIsNDYtNDEuNSw0NmgtMTRWNDI1Ljg4aDk0LjgzYzE0NC42MSwwLDE5NC45NC02Ny4xNiwxOTYuNzItMTY1LjY0Wm0tMTA5Ljc1LDBIMjczLjNWMTY5aDU0LjQzdjIyLjczSDI5NnYxMC41OGgzMFYyMjVIMjk2VjIzNy41aDMzLjUxWm03NC42NiwwLTUuMTYtMTcuNjdIMzY5LjMxbC01LjE4LDE3LjY3SDM0MC40N0wzNjgsMTY4LjkyaDMyLjM1bDI3LjUzLDkxLjM0Wk0yOTkuNjUsMzJIMzJWNDgwSDI5OS42NWMxNjEuODUsMCwyNTEtNzkuNzMsMjUxLTIyNC41MkM1NTAuNjIsMTcyLDUxOCwzMiwyOTkuNjUsMzJabTAsNDI2LjkySDUzLjA3VjUzLjA3SDI5OS42NWMxNDIuMSwwLDIyOS45LDY0LjYxLDIyOS45LDIwMi40MUM1MjkuNTUsMzg5LjU3LDQ0OC41NSw0NTguOTIsMjk5LjY1LDQ1OC45MlptODMuODYtMjY0Ljg1TDM3NiwyMTkuODhIMzkyLjRsLTcuNTItMjUuODFaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUltZGIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODkuNSAzMjMuNkg1My45M1YxODYuMkg4OS41VjMyMy42ek0xNTYuMSAyNTAuNUwxNjUuMiAxODYuMkgyMTEuNVYzMjMuNkgxODAuNVYyMzAuOUwxNjcuMSAzMjMuNkgxNDUuOEwxMzIuOCAyMzIuOUwxMzIuNyAzMjMuNkgxMDEuNVYxODYuMkgxNDcuNkMxNDguMSAxOTQuNSAxNTAuNCAyMDQuMyAxNTEuOSAyMTUuNkwxNTYuMSAyNTAuNXpNMjIzLjcgMzIzLjZWMTg2LjJIMjUwLjNDMjY3LjMgMTg2LjIgMjc3LjMgMTg3LjEgMjgzLjMgMTg4LjZDMjg5LjQgMTkwLjMgMjk0IDE5Mi44IDI5Ny4yIDE5Ni41QzMwMC4zIDE5OS44IDMwMi4zIDIwMy4xIDMwMyAyMDguNUMzMDMuOSAyMTIuOSAzMDQuNCAyMjEuNiAzMDQuNCAyMzQuN1YyODIuOUMzMDQuNCAyOTUuMiAzMDMuNyAzMDMuNCAzMDIuNSAzMDcuNkMzMDEuNCAzMTEuNyAyOTkuNCAzMTUgMjk2LjUgMzE3LjNDMjkzLjcgMzE5LjcgMjkwLjEgMzIxLjQgMjg1LjggMzIyLjNDMjgxLjYgMzIzLjEgMjc1LjIgMzIzLjYgMjY2LjcgMzIzLjZIMjIzLjd6TTI1OS4yIDIwOS43VjI5OS4xQzI2NC4zIDI5OS4xIDI2Ny41IDI5OC4xIDI2OC42IDI5Ni44QzI2OS43IDI5NC44IDI3MC40IDI4OS4yIDI3MC40IDI4MC4xVjIyNi44QzI3MC40IDIyMC42IDI3MC4zIDIxNi42IDI2OS43IDIxNC44QzI2OS40IDIxMyAyNjguNSAyMTEuOCAyNjcuMSAyMTAuMUMyNjUuNyAyMTAuMSAyNjMgMjA5LjcgMjU5LjIgMjA5LjdWMjA5Ljd6TTMxNi41IDMyMy42VjE4Ni4ySDM1MC42VjIzMC4xQzM1My41IDIyNy43IDM1Ni43IDIyNS4yIDM2MC4xIDIyMy41QzM2My43IDIyMiAzNjguOSAyMjEuMSAzNzIuOSAyMjEuMUMzNzcuNyAyMjEuMSAzODEuOCAyMjEuOSAzODUuMiAyMjMuM0MzODguNiAyMjQuOCAzOTEuMiAyMjYuOCAzOTMuMiAyMjkuNUMzOTQuOSAyMzIuMSAzOTUuOSAyMzQuOCAzOTYuMyAyMzcuM0MzOTYuNyAyMzkuOSAzOTYuMSAyNDUuMyAzOTYuMSAyNTMuNVYyOTIuMUMzOTYuMSAzMDAuMyAzOTYuMyAzMDYuNCAzOTUuMyAzMTAuNUMzOTQuMiAzMTQuNSAzOTEuNSAzMTguMSAzODcuNSAzMjAuMUMzODMuNCAzMjQgMzc4LjYgMzI1LjQgMzcyLjkgMzI1LjRDMzY4LjkgMzI1LjQgMzYzLjcgMzI0LjUgMzYwLjIgMzIyLjlDMzU2LjcgMzIxLjEgMzUzLjUgMzE4LjQgMzUwLjYgMzE0LjlMMzQ4LjUgMzIzLjZMMzE2LjUgMzIzLjZ6TTM2MS42IDMwMi45QzM2Mi4zIDMwMS4xIDM2Mi42IDI5Ni45IDM2Mi42IDI5MC40VjI1NUMzNjIuNiAyNDkuNCAzNjIuMyAyNDUuNSAzNjEuNSAyNDMuOEMzNjAuOCAyNDEuOSAzNTcuOCAyNDEuMSAzNTUuNyAyNDEuMUMzNTMuNyAyNDEuMSAzNTIuMyAyNDEuOSAzNTEuNiAyNDMuNEMzNTEgMjQ0LjkgMzUwLjYgMjQ4LjggMzUwLjYgMjU1VjI5MS40QzM1MC42IDI5Ny41IDM1MSAzMDEuNCAzNTEuOCAzMDNDMzUyLjQgMzA0LjcgMzUzLjkgMzA1LjUgMzU1LjkgMzA1LjVDMzU4LjEgMzA1LjUgMzYwLjEgMzA0LjcgMzYxLjYgMzAyLjlMMzYxLjYgMzAyLjl6TTQxOC40IDMyLjA0QzQzNC4xIDMzLjI3IDQ0Ny4xIDQ3LjI4IDQ0Ny4xIDYzLjkyVjQ0OC4xQzQ0Ny4xIDQ2NC41IDQzNS4yIDQ3OC41IDQxOC45IDQ3OS4xQzQxOC42IDQ3OS4xIDQxOC40IDQ4MCA0MTguMSA0ODBIMjkuODhDMjkuNiA0ODAgMjkuMzIgNDc5LjEgMjkuMDQgNDc5LjlDMTMuMzEgNDc4LjUgMS4wOTMgNDY2LjEgMCA0NDkuN0wuMDE4NiA2MS43OEMxLjA4MSA0NS44OCAxMy44MiAzMy4wOSAzMC4yNiAzMS4xSDQxNy43QzQxNy45IDMxLjEgNDE4LjIgMzIuMDEgNDE4LjQgMzIuMDRMNDE4LjQgMzIuMDR6TTMwLjI3IDQxLjI2QzE5IDQyLjAxIDEwLjAyIDUxLjAxIDkuMjU3IDYyLjRWNDQ5LjdDOS42MyA0NTUuMSAxMS45MSA0NjAuMiAxNS43IDQ2NEMxOS40OCA0NjcuOSAyNC41MSA0NzAuMyAyOS44OSA0NzAuN0g0MTguMUM0MjkuNiA0NjkuNyA0MzguNyA0NTkuMSA0MzguNyA0NDguMVY2My45MUM0MzguNyA1OC4xNyA0MzYuNiA1Mi42NSA0MzIuNyA0OC40NUM0MjguOCA0NC4yNCA0MjMuNCA0MS42NyA0MTcuNyA0MS4yNkwzMC4yNyA0MS4yNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW5zdGFncmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNC4xIDE0MWMtNjMuNiAwLTExNC45IDUxLjMtMTE0LjkgMTE0LjlzNTEuMyAxMTQuOSAxMTQuOSAxMTQuOVMzMzkgMzE5LjUgMzM5IDI1NS45IDI4Ny43IDE0MSAyMjQuMSAxNDF6bTAgMTg5LjZjLTQxLjEgMC03NC43LTMzLjUtNzQuNy03NC43czMzLjUtNzQuNyA3NC43LTc0LjcgNzQuNyAzMy41IDc0LjcgNzQuNy0zMy42IDc0LjctNzQuNyA3NC43em0xNDYuNC0xOTQuM2MwIDE0LjktMTIgMjYuOC0yNi44IDI2LjgtMTQuOSAwLTI2LjgtMTItMjYuOC0yNi44czEyLTI2LjggMjYuOC0yNi44IDI2LjggMTIgMjYuOCAyNi44em03Ni4xIDI3LjJjLTEuNy0zNS45LTkuOS02Ny43LTM2LjItOTMuOS0yNi4yLTI2LjItNTgtMzQuNC05My45LTM2LjItMzctMi4xLTE0Ny45LTIuMS0xODQuOSAwLTM1LjggMS43LTY3LjYgOS45LTkzLjkgMzYuMXMtMzQuNCA1OC0zNi4yIDkzLjljLTIuMSAzNy0yLjEgMTQ3LjkgMCAxODQuOSAxLjcgMzUuOSA5LjkgNjcuNyAzNi4yIDkzLjlzNTggMzQuNCA5My45IDM2LjJjMzcgMi4xIDE0Ny45IDIuMSAxODQuOSAwIDM1LjktMS43IDY3LjctOS45IDkzLjktMzYuMiAyNi4yLTI2LjIgMzQuNC01OCAzNi4yLTkzLjkgMi4xLTM3IDIuMS0xNDcuOCAwLTE4NC44ek0zOTguOCAzODhjLTcuOCAxOS42LTIyLjkgMzQuNy00Mi42IDQyLjYtMjkuNSAxMS43LTk5LjUgOS0xMzIuMSA5cy0xMDIuNyAyLjYtMTMyLjEtOWMtMTkuNi03LjgtMzQuNy0yMi45LTQyLjYtNDIuNi0xMS43LTI5LjUtOS05OS41LTktMTMyLjFzLTIuNi0xMDIuNyA5LTEzMi4xYzcuOC0xOS42IDIyLjktMzQuNyA0Mi42LTQyLjYgMjkuNS0xMS43IDk5LjUtOSAxMzIuMS05czEwMi43LTIuNiAxMzIuMSA5YzE5LjYgNy44IDM0LjcgMjIuOSA0Mi42IDQyLjYgMTEuNyAyOS41IDkgOTkuNSA5IDEzMi4xczIuNyAxMDIuNy05IDEzMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbnN0YWxvZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTMuMzg0LDQ4MEgzODcuMTEzTDUwMi41NTQsMjc1Ljc2NSwyMDQuMjI5LDMzMy4yMTFaTTUwNC43MjYsMjQwLjA3OCwzODcuMTEzLDMySDE1NS42NjlMMzYwLjIzLDI2Ny45Wk0xMjQuMzg2LDQ4LjgwOSw3LjI3NCwyNTYsMTIzLjIzNiw0NjEuMTU0LDIyNS42MjcsMTY1LjU2MVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW50ZXJjb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkyIDMySDU2QzI1LjEgMzIgMCA1Ny4xIDAgODh2MzM2YzAgMzAuOSAyNS4xIDU2IDU2IDU2aDMzNmMzMC45IDAgNTYtMjUuMSA1Ni01NlY4OGMwLTMwLjktMjUuMS01Ni01Ni01NnptLTEwOC4zIDgyLjFjMC0xOS44IDI5LjktMTkuOCAyOS45IDB2MTk5LjVjMCAxOS44LTI5LjkgMTkuOC0yOS45IDBWMTE0LjF6bS03NC42LTcuNWMwLTE5LjggMjkuOS0xOS44IDI5LjkgMHYyMTYuNWMwIDE5LjgtMjkuOSAxOS44LTI5LjkgMFYxMDYuNnptLTc0LjcgNy41YzAtMTkuOCAyOS45LTE5LjggMjkuOSAwdjE5OS41YzAgMTkuOC0yOS45IDE5LjgtMjkuOSAwVjExNC4xek01OS43IDE0NGMwLTE5LjggMjkuOS0xOS44IDI5LjkgMHYxMzQuM2MwIDE5LjgtMjkuOSAxOS44LTI5LjkgMFYxNDR6bTMyMy40IDIyNy44Yy03Mi44IDYzLTI0MS43IDY1LjQtMzE4LjEgMC0xNS0xMi44IDQuNC0zNS41IDE5LjQtMjIuNyA2NS45IDU1LjMgMjE2LjEgNTMuOSAyNzkuMyAwIDE0LjktMTIuOSAzNC4zIDkuOCAxOS40IDIyLjd6bTUuMi05My41YzAgMTkuOC0yOS45IDE5LjgtMjkuOSAwVjE0NGMwLTE5LjggMjkuOS0xOS44IDI5LjkgMHYxMzQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW50ZXJuZXRFeHBsb3JlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODMuMDQ5IDE1OS43MDZjMTAuODU1LTI0LjU3NSAyMS40MjQtNjAuNDM4IDIxLjQyNC04Ny44NzEgMC03Mi43MjItNzkuNjQxLTk4LjM3MS0yMDkuNjczLTM4LjU3Ny0xMDcuNjMyLTcuMTgxLTIxMS4yMjEgNzMuNjctMjM3LjA5OCAxODYuNDU3IDMwLjg1Mi0zNC44NjIgNzguMjcxLTgyLjI5OCAxMjEuOTc3LTEwMS4xNThDMTI1LjQwNCAxNjYuODUgNzkuMTI4IDIyOC4wMDIgNDMuOTkyIDI5MS43MjUgMjMuMjQ2IDMyOS42NTEgMCAzOTAuOTQgMCA0MzYuNzQ3YzAgOTguNTc1IDkyLjg1NCA4Ni41IDE4MC4yNTEgNDIuMDA2IDMxLjQyMyAxNS40MyA2Ni41NTkgMTUuNTczIDEwMS42OTUgMTUuNTczIDk3LjEyNCAwIDE4NC4yNDktNTQuMjk0IDIxNi44MTQtMTQ2LjAyMkgzNzcuOTI3Yy01Mi41MDkgODguNTkzLTE5Ni44MTkgNTIuOTk2LTE5Ni44MTktNDcuNDM2SDUwOS45YzYuNDA3LTQzLjU4MS0xLjY1NS05NS43MTUtMjYuODUxLTE0MS4xNjJ6TTY0LjU1OSAzNDYuODc3YzE3LjcxMSA1MS4xNSA1My43MDMgOTUuODcxIDEwMC4yNjYgMTIzLjMwNC04OC43NDEgNDguOTQtMTczLjI2NyAyOS4wOTYtMTAwLjI2Ni0xMjMuMzA0em0xMTUuOTc3LTEwOC44NzNjMi01NS4xNTEgNTAuMjc2LTk0Ljg3MSAxMDMuOTgtOTQuODcxIDUzLjQxOCAwIDEwMS45ODEgMzkuNzIgMTAzLjk4MSA5NC44NzFIMTgwLjUzNnptMTg0LjUzNi0xODcuNmMyMS40MjUtMTAuMjg3IDQ4LjU2My0yMi4wMDMgNzIuNTU4LTIyLjAwMyAzMS40MjIgMCA1NC4yNzQgMjEuNzE3IDU0LjI3NCA1My43MjIgMCAyMC4wMDMtNy40MjcgNDkuMDA3LTE0LjU2OSA2Ny44NjctMjYuMjgtNDIuMjkyLTY1Ljk4Ni04MS41ODQtMTEyLjI2My05OS41ODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUludmlzaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNy40IDMySDQwLjZDMTguMiAzMiAwIDUwLjIgMCA3Mi42djM2Ni44QzAgNDYxLjggMTguMiA0ODAgNDAuNiA0ODBoMzY2LjhjMjIuNCAwIDQwLjYtMTguMiA0MC42LTQwLjZWNzIuNmMwLTIyLjQtMTguMi00MC42LTQwLjYtNDAuNnpNMTc2LjEgMTQ1LjZjLjQgMjMuNC0yMi40IDI3LjMtMjYuNiAyNy40LTE0LjkgMC0yNy4xLTEyLTI3LjEtMjcgLjEtMzUuMiA1My4xLTM1LjUgNTMuNy0uNHpNMzMyLjggMzc3Yy02NS42IDAtMzQuMS03NC0yNS0xMDYuNiAxNC4xLTQ2LjQtNDUuMi01OS01OS45LjdsLTI1LjggMTAzLjNIMTc3bDguMS0zMi41Yy0zMS41IDUxLjgtOTQuNiA0NC40LTk0LjYtNC4zLjEtMTQuMy45LTE0IDIzLTEwNC4xSDgxLjdsOS43LTM1LjZoNzYuNGMtMzMuNiAxMzMuNy0zMi42IDEyNi45LTMyLjkgMTM4LjIgMCAyMC45IDQwLjkgMTMuNSA1Ny40LTIzLjJsMTkuOC03OS40aC0zMi4zbDkuNy0zNS42aDY4LjhsLTguOSA0MC41YzQwLjUtNzUuNSAxMjcuOS00Ny44IDEwMS44IDM4LTE0LjIgNTEuMS0xNC42IDUwLjctMTQuOSA1OC44IDAgMTUuNSAxNy41IDIyLjYgMzEuOC0xNi45TDM4NiAzMjVjLTEwLjUgMzYuNy0yOS40IDUyLTUzLjIgNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUlveGhvc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjE2IDE2MGgtNjcuM0M1MTEuMiA3MC43IDQyMi45IDggMzIwIDggMTgzIDggNzIgMTE5IDcyIDI1NmMwIDE2LjQgMS42IDMyLjUgNC43IDQ4SDI0Yy0xMy4zIDAtMjQgMTAuOC0yNCAyNCAwIDEzLjMgMTAuNyAyNCAyNCAyNGg2Ny4zYzM3LjUgODkuMyAxMjUuOCAxNTIgMjI4LjcgMTUyIDEzNyAwIDI0OC0xMTEgMjQ4LTI0OCAwLTE2LjQtMS42LTMyLjUtNC43LTQ4SDYxNmMxMy4zIDAgMjQtMTAuOCAyNC0yNCAwLTEzLjMtMTAuNy0yNC0yNC0yNHptLTk2IDk2YzAgMTEwLjUtODkuNSAyMDAtMjAwIDIwMC03NS43IDAtMTQxLjYtNDItMTc1LjUtMTA0SDQyNGMxMy4zIDAgMjQtMTAuOCAyNC0yNCAwLTEzLjMtMTAuNy0yNC0yNC0yNEgxMjUuOGMtMy44LTE1LjQtNS44LTMxLjQtNS44LTQ4IDAtMTEwLjUgODkuNS0yMDAgMjAwLTIwMCA3NS43IDAgMTQxLjYgNDIgMTc1LjUgMTA0SDIxNmMtMTMuMyAwLTI0IDEwLjgtMjQgMjQgMCAxMy4zIDEwLjcgMjQgMjQgMjRoMjk4LjJjMy44IDE1LjQgNS44IDMxLjQgNS44IDQ4em0tMzA0LTI0aDIwOGMxMy4zIDAgMjQgMTAuNyAyNCAyNCAwIDEzLjItMTAuNyAyNC0yNCAyNEgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0IDAtMTMuMiAxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJdGNoSW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzEuOTIgMzQuNzdDNTAuMiA0Ny42NyA3LjQgOTYuODQgNyAxMDkuNzN2MjEuMzRjMCAyNy4wNiAyNS4yOSA1MC44NCA0OC4yNSA1MC44NCAyNy41NyAwIDUwLjU0LTIyLjg1IDUwLjU0LTUwIDAgMjcuMTIgMjIuMTggNTAgNDkuNzYgNTBzNDktMjIuODUgNDktNTBjMCAyNy4xMiAyMy41OSA1MCA1MS4xNiA1MGguNWMyNy41NyAwIDUxLjE2LTIyLjg1IDUxLjE2LTUwIDAgMjcuMTIgMjEuNDcgNTAgNDkgNTBzNDkuNzYtMjIuODUgNDkuNzYtNTBjMCAyNy4xMiAyMyA1MCA1MC41NCA1MCAyMyAwIDQ4LjI1LTIzLjc4IDQ4LjI1LTUwLjg0di0yMS4zNGMtLjQtMTIuOS00My4yLTYyLjA3LTY0LjkyLTc1QzM3Mi41NiAzMi40IDMyNS43NiAzMiAyNTYgMzJTOTEuMTQgMzMuMSA3MS45MiAzNC43N3ptMTMyLjMyIDEzNC4zOWMtMjIgMzguNC03Ny45IDM4LjcxLTk5Ljg1LjI1LTEzLjE3IDIzLjE0LTQzLjE3IDMyLjA3LTU2IDI3LjY2LTMuODcgNDAuMTUtMTMuNjcgMjM3LjEzIDE3LjczIDI2OS4xNSA4MCAxOC42NyAzMDIuMDggMTguMTIgMzc5Ljc2IDAgMzEuNjUtMzIuMjcgMjEuMzItMjMyIDE3Ljc1LTI2OS4xNS0xMi45MiA0LjQ0LTQyLjg4LTQuNi01Ni0yNy42Ni0yMiAzOC41Mi03Ny44NSAzOC4xLTk5Ljg1LS4yNC03LjEgMTIuNDktMjMuMDUgMjguOTQtNTEuNzYgMjguOTRhNTcuNTQgNTcuNTQgMCAwIDEtNTEuNzUtMjguOTR6bS00MS41OCA1My43N2MxNi40NyAwIDMxLjA5IDAgNDkuMjIgMTkuNzhhNDM2LjkxIDQzNi45MSAwIDAgMSA4OC4xOCAwQzMxOC4yMiAyMjMgMzMyLjg1IDIyMyAzNDkuMzEgMjIzYzUyLjMzIDAgNjUuMjIgNzcuNTMgODMuODcgMTQ0LjQ1IDE3LjI2IDYyLjE1LTUuNTIgNjMuNjctMzMuOTUgNjMuNzMtNDIuMTUtMS41Ny02NS40OS0zMi4xOC02NS40OS02Mi43OS0zOS4yNSA2LjQzLTEwMS45MyA4Ljc5LTE1NS41NSAwIDAgMzAuNjEtMjMuMzQgNjEuMjItNjUuNDkgNjIuNzktMjguNDItLjA2LTUxLjItMS41OC0zMy45NC02My43MyAxOC42Ny02NyAzMS41Ni0xNDQuNDUgODMuODgtMTQ0LjQ1ek0yNTYgMjcwLjc5cy00NC4zOCA0MC43Ny01Mi4zNSA1NS4yMWwyOS0xLjE3djI1LjMyYzAgMS41NSAyMS4zNC4xNiAyMy4zMy4xNiAxMS42NS41NCAyMy4zMSAxIDIzLjMxLS4xNnYtMjUuMjhsMjkgMS4xN2MtOC0xNC40OC01Mi4zNS01NS4yNC01Mi4zNS01NS4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSXR1bmVzTm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODEuOSAzODguMmMtNi40IDI3LjQtMjcuMiA0Mi44LTU1LjEgNDgtMjQuNSA0LjUtNDQuOSA1LjYtNjQuNS0xMC4yLTIzLjktMjAuMS0yNC4yLTUzLjQtMi43LTc0LjQgMTctMTYuMiA0MC45LTE5LjUgNzYuOC0yNS44IDYtMS4xIDExLjItMi41IDE1LjYtNy40IDYuNC03LjIgNC40LTQuMSA0LjQtMTYzLjIgMC0xMS4yLTUuNS0xNC4zLTE3LTEyLjMtOC4yIDEuNC0xODUuNyAzNC42LTE4NS43IDM0LjYtMTAuMiAyLjItMTMuNCA1LjItMTMuNCAxNi43IDAgMjM0LjcgMS4xIDIyMy45LTIuNSAyMzkuNS00LjIgMTguMi0xNS40IDMxLjktMzAuMiAzOS41LTE2LjggOS4zLTQ3LjIgMTMuNC02My40IDEwLjQtNDMuMi04LjEtNTguNC01OC0yOS4xLTg2LjYgMTctMTYuMiA0MC45LTE5LjUgNzYuOC0yNS44IDYtMS4xIDExLjItMi41IDE1LjYtNy40IDEwLjEtMTEuNSAxLjgtMjU2LjYgNS4yLTI3MC4yLjgtNS4yIDMtOS42IDcuMS0xMi45IDQuMi0zLjUgMTEuOC01LjUgMTMuNC01LjUgMjA0LTM4LjIgMjI4LjktNDMuMSAyMzIuNC00My4xIDExLjUtLjggMTguMSA2IDE4LjEgMTcuNi4yIDM0NC41IDEuMSAzMjYtMS44IDMzOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJdHVuZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIzLjYgODAuM0MxMjkgODAuMyA1Mi41IDE1NyA1Mi41IDI1MS41UzEyOSA0MjIuOCAyMjMuNiA0MjIuOHMxNzEuMi03Ni43IDE3MS4yLTE3MS4yYzAtOTQuNi03Ni43LTE3MS4zLTE3MS4yLTE3MS4zem03OS40IDI0MGMtMy4yIDEzLjYtMTMuNSAyMS4yLTI3LjMgMjMuOC0xMi4xIDIuMi0yMi4yIDIuOC0zMS45LTUtMTEuOC0xMC0xMi0yNi40LTEuNC0zNi44IDguNC04IDIwLjMtOS42IDM4LTEyLjggMy0uNSA1LjYtMS4yIDcuNy0zLjcgMy4yLTMuNiAyLjItMiAyLjItODAuOCAwLTUuNi0yLjctNy4xLTguNC02LjEtNCAuNy05MS45IDE3LjEtOTEuOSAxNy4xLTUgMS4xLTYuNyAyLjYtNi43IDguMyAwIDExNi4xLjUgMTEwLjgtMS4yIDExOC41LTIuMSA5LTcuNiAxNS44LTE0LjkgMTkuNi04LjMgNC42LTIzLjQgNi42LTMxLjQgNS4yLTIxLjQtNC0yOC45LTI4LjctMTQuNC00Mi45IDguNC04IDIwLjMtOS42IDM4LTEyLjggMy0uNSA1LjYtMS4yIDcuNy0zLjcgNS01LjcuOS0xMjcgMi42LTEzMy43LjQtMi42IDEuNS00LjggMy41LTYuNCAyLjEtMS43IDUuOC0yLjcgNi43LTIuNyAxMDEtMTkgMTEzLjMtMjEuNCAxMTUuMS0yMS40IDUuNy0uNCA5IDMgOSA4LjctLjEgMTcwLjYuNCAxNjEuNC0xIDE2Ny42ek0zNDUuMiAzMkgxMDIuOEM0NS45IDMyIDAgNzcuOSAwIDEzNC44djI0Mi40QzAgNDM0LjEgNDUuOSA0ODAgMTAyLjggNDgwaDI0Mi40YzU3IDAgMTAyLjgtNDUuOSAxMDIuOC0xMDIuOFYxMzQuOEM0NDggNzcuOSA0MDIuMSAzMiAzNDUuMiAzMnpNMjIzLjYgNDQ0Yy0xMDYuMyAwLTE5Mi41LTg2LjItMTkyLjUtMTkyLjVTMTE3LjMgNTkgMjIzLjYgNTlzMTkyLjUgODYuMiAxOTIuNSAxOTIuNVMzMjkuOSA0NDQgMjIzLjYgNDQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKYXZhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3Ny43NCAzMTIuOWM5LjgtNi43IDIzLjQtMTIuNSAyMy40LTEyLjVzLTM4LjcgNy03Ny4yIDEwLjJjLTQ3LjEgMy45LTk3LjcgNC43LTEyMy4xIDEuMy02MC4xLTggMzMtMzAuMSAzMy0zMC4xcy0zNi4xLTIuNC04MC42IDE5Yy01Mi41IDI1LjQgMTMwIDM3IDIyNC41IDEyLjF6bS04NS40LTMyLjFjLTE5LTQyLjctODMuMS04MC4yIDAtMTQ1LjhDMjk2IDUzLjIgMjQyLjg0IDAgMjQyLjg0IDBjMjEuNSA4NC41LTc1LjYgMTEwLjEtMTEwLjcgMTYyLjYtMjMuOSAzNS45IDExLjcgNzQuNCA2MC4yIDExOC4yem0xMTQuNi0xNzYuMmMuMSAwLTE3NS4yIDQzLjgtOTEuNSAxNDAuMiAyNC43IDI4LjQtNi41IDU0LTYuNSA1NHM2Mi43LTMyLjQgMzMuOS03Mi45Yy0yNi45LTM3LjgtNDcuNS01Ni42IDY0LjEtMTIxLjN6bS02LjEgMjcwLjVhMTIuMTkgMTIuMTkgMCAwIDEtMiAyLjZjMTI4LjMtMzMuNyA4MS4xLTExOC45IDE5LjgtOTcuM2ExNy4zMyAxNy4zMyAwIDAgMC04LjIgNi4zIDcwLjQ1IDcwLjQ1IDAgMCAxIDExLTNjMzEtNi41IDc1LjUgNDEuNS0yMC42IDkxLjR6TTM0OCA0MzcuNHMxNC41IDExLjktMTUuOSAyMS4yYy01Ny45IDE3LjUtMjQwLjggMjIuOC0yOTEuNi43LTE4LjMtNy45IDE2LTE5IDI2LjgtMjEuMyAxMS4yLTIuNCAxNy43LTIgMTcuNy0yLTIwLjMtMTQuMy0xMzEuMyAyOC4xLTU2LjQgNDAuMkMyMzIuODQgNTA5LjQgNDAxIDQ2MS4zIDM0OCA0MzcuNHpNMTI0LjQ0IDM5NmMtNzguNyAyMiA0Ny45IDY3LjQgMTQ4LjEgMjQuNWExODUuODkgMTg1Ljg5IDAgMCAxLTI4LjItMTMuOGMtNDQuNyA4LjUtNjUuNCA5LjEtMTA2IDQuNS0zMy41LTMuOC0xMy45LTE1LjItMTMuOS0xNS4yem0xNzkuOCA5Ny4yYy03OC43IDE0LjgtMTc1LjggMTMuMS0yMzMuMyAzLjYgMC0uMSAxMS44IDkuNyA3Mi40IDEzLjYgOTIuMiA1LjkgMjMzLjgtMy4zIDIzNy4xLTQ2LjkgMCAwLTYuNCAxNi41LTc2LjIgMjkuN3pNMjYwLjY0IDM1M2MtNTkuMiAxMS40LTkzLjUgMTEuMS0xMzYuOCA2LjYtMzMuNS0zLjUtMTEuNi0xOS43LTExLjYtMTkuNy04Ni44IDI4LjggNDguMiA2MS40IDE2OS41IDI1LjlhNjAuMzcgNjAuMzcgMCAwIDEtMjEuMS0xMi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKZWRpT3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk4LjUgMzczLjZjOTUuOS0xMjIuMSAxNy4yLTIzMy4xIDE3LjItMjMzLjEgNDUuNCA4NS44LTQxLjQgMTcwLjUtNDEuNCAxNzAuNSAxMDUtMTcxLjUtNjAuNS0yNzEuNS02MC41LTI3MS41IDk2LjkgNzIuNy0xMC4xIDE5MC43LTEwLjEgMTkwLjcgODUuOCAxNTguNC02OC42IDIzMC4xLTY4LjYgMjMwLjFzLS40LTE2LjktMi4yLTg1LjdjNC4zIDQuNSAzNC41IDM2LjIgMzQuNSAzNi4ybC0yNC4yLTQ3LjQgNjIuNi05LjEtNjIuNi05LjEgMjAuMi01NS41LTMxLjQgNDUuOWMtMi4yLTg3LjctNy44LTMwNS4xLTcuOS0zMDYuOXYtMi40IDEtMSAyLjRjMCAxLTUuNiAyMTktNy45IDMwNi45bC0zMS40LTQ1LjkgMjAuMiA1NS41LTYyLjYgOS4xIDYyLjYgOS4xLTI0LjIgNDcuNCAzNC41LTM2LjJjLTEuOCA2OC44LTIuMiA4NS43LTIuMiA4NS43cy0xNTQuNC03MS43LTY4LjYtMjMwLjFjMCAwLTEwNy0xMTguMS0xMC4xLTE5MC43IDAgMC0xNjUuNSA5OS45LTYwLjUgMjcxLjUgMCAwLTg2LjgtODQuOC00MS40LTE3MC41IDAgMC03OC43IDExMSAxNy4yIDIzMy4xIDAgMC0yNi4yLTE2LjEtNDkuNC03Ny43IDAgMCAxNi45IDE4My4zIDIyMiAxODUuN2g0LjFjMjA1LTIuNCAyMjItMTg1LjcgMjIyLTE4NS43LTIzLjYgNjEuNS00OS45IDc3LjctNDkuOSA3Ny43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKZW5raW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4Ny4xIDQyNWMtMS40LTExLjItMTktMjMuMS0yOC4yLTMxLjktNS4xLTUtMjktMjMuMS0zMC40LTI5LjktMS40LTYuNiA5LjctMjEuNSAxMy4zLTI4LjkgNS4xLTEwLjcgOC44LTIzLjcgMTEuMy0zMi42IDE4LjgtNjYuMSAyMC43LTE1Ni45LTYuMi0yMTEuMi0xMC4yLTIwLjYtMzguNi00OS01Ni40LTYyLjUtNDItMzEuNy0xMTkuNi0zNS4zLTE3MC4xLTE2LjYtMTQuMSA1LjItMjcuOCA5LjgtNDAuMSAxNy4xLTMzLjEgMTkuNC02OC4zIDMyLjUtNzguMSA3MS42LTI0LjIgMTAuOC0zMS41IDQxLjgtMzAuMyA3Ny44LjIgNyA0LjEgMTUuOCAyLjcgMjIuNC0uNyAzLjMtNS4yIDcuNi02LjEgOS44LTExLjYgMjcuNy0yLjMgNjQgMTEuMSA4My43IDguMSAxMS45IDIxLjUgMjIuNCAzOS4yIDI1LjIuNyAxMC42IDMuMyAxOS43IDguMiAzMC40IDMuMSA2LjggMTQuNyAxOSAxMC40IDI3LjctMi4yIDQuNC0yMSAxMy44LTI3LjMgMTcuNkM4OSA0MDcuMiA3My43IDQxNSA1NC4yIDQyOWMtMTIuNiA5LTMyLjMgMTAuMi0yOS4yIDMxLjEgMi4xIDE0LjEgMTAuMSAzMS42IDE0LjcgNDUuOC43IDIgMS40IDQuMSAyLjEgNmg0MjJjNC45LTE1LjMgOS43LTMwLjkgMTQuNi00Ny4yIDMuNC0xMS40IDEwLjItMjcuOCA4LjctMzkuN3pNMjA1LjkgMzMuN2MxLjgtLjUgMy40LjcgNC45IDIuNC0uMiA1LjItNS40IDUuMS04LjkgNi44LTUuNCA2LjctMTMuNCA5LjgtMjAgMTcuMi02LjggNy41LTE0LjQgMjcuNy0yMy40IDMwLTQuNSAxLjEtOS43LS44LTEzLjYtLjUtMTAuNC43LTE3LjcgNi0yOC4zIDcuNSAxMy42LTI5LjkgNTYuMS01NCA4OS4zLTYzLjR6bS0xMDQuOCA5My42YzEzLjUtMTQuOSAzMi4xLTI0LjEgNTQuOC0yNS45IDExLjcgMjkuNy04LjQgNjUtLjkgOTcuNiAyLjMgOS45IDEwLjIgMjUuNC0yLjQgMjUuNy4zLTI4LjMtMzQuOC00Ni4zLTYxLjMtMjkuNi0xLjgtMjEuNS00LjktNTEuNyA5LjgtNjcuOHptMzYuNyAyMDAuMmMtMS00LjEtMi43LTEyLjktMi4zLTE1LjEgMS42LTguNyAxNy4xLTEyLjUgMTEtMjQuNy0xMS4zLS4xLTEzLjggMTAuMi0yNC4xIDExLjMtMjYuNyAyLjYtNDUuNi0zNS40LTQ0LjQtNTguNCAxLTE5LjUgMTcuNi0zOC4yIDQwLjEtMzUuOCAxNiAxLjggMjEuNCAxOS4yIDI0LjUgMzQuNyA5LjIuNSAyMi41LS40IDI2LjktNy42LS42LTE3LjUtOC44LTMxLjYtOC4yLTQ3LjcgMS0zMC4zIDE3LjUtNTcuNiA0LjgtODcuNCAxMy42LTMwLjkgNTMuNS01NS4zIDgzLjEtNzAgMzYuNi0xOC4zIDk0LjktMy43IDEyOS4zIDE1LjggMTkuNyAxMS4xIDM0LjQgMzIuNyA0OC4zIDUwLjctMTkuNS01LjgtMzYuMSA0LjItMzMuMSAyMC4zIDE2LjMtMTQuOSA0NC4yLS4yIDUyLjUgMTYuNCA3LjkgMTUuOCA3LjggMzkuMyA5IDYyLjggMi45IDU3LTEwLjQgMTE1LjktMzkuMSAxNTcuMS03LjcgMTEtMTQuMSAyMy0yNC45IDMwLjYtMjYgMTguMi02NS40IDM0LjctOTkuMiAyMy40LTQ0LjctMTUtNjUtNDQuOC04OS41LTc4LjguNyAxOC43IDEzLjggMzQuMSAyNi44IDQ4LjQgMTEuMyAxMi41IDI1IDI2LjYgMzkuNyAzMi40LTEyLjMtMi45LTMxLjEtMy44LTM2LjIgNy4yLTI4LjYtMS45LTU1LjEtNC44LTY4LjctMjQuMi0xMC42LTE1LjQtMjEuNC00MS40LTI2LjMtNjEuNHptMjIyIDEyNC4xYzQuMS0zIDExLjEtMi45IDE3LjQtMy42LTUuNC0yLjctMTMtMy43LTE5LjMtMi4yLS4xLTQuMi0yLTYuOC0zLjItMTAuMiAxMC42LTMuOCAzNS41LTI4LjUgNDkuNi0yMC4zIDYuNyAzLjkgOS41IDI2LjIgMTAuMSAzNyAuNCA5LS44IDE4LTQuNSAyMi44LTE4LjgtLjYtMzUuOC0yLjgtNTAuNy03IC45LTYuMS0xLTEyLjEuNi0xNi41em0tMTcuMi0yMGMtMTYuOC44LTI2LTEuMi0zOC4zLTEwLjguMi0uOCAxLjQtLjUgMS41LTEuNCAxOCA4IDQwLjgtMy4zIDU5LTQuOS03LjkgNS4xLTE0LjYgMTEuNi0yMi4yIDE3LjF6bS0xMi4xIDMzLjJjLTEuNi05LjQtMy41LTEyLTIuOC0yMC4yIDI1LTE2LjYgMjkuNyAyOC42IDIuOCAyMC4yek0yMjYgNDM4LjZjLTExLjYtLjctNDguMS0xNC0zOC41LTIzLjcgOS40IDYuNSAyNy41IDQuOSA0MS4zIDcuMy44IDQuNC0yLjggMTAuMi0yLjggMTYuNHpNNTcuNyA0OTcuMWMtNC4zLTEyLjctOS4yLTI1LjEtMTQuOC0zNi45IDMwLjgtMjMuOCA2NS4zLTQ4LjkgMTAyLjItNjMuNSAyLjgtMS4xIDIzLjIgMjUuNCAyNi4yIDI3LjYgMTYuNSAxMS43IDM3IDIxIDU2LjIgMzAuMiAxLjIgOC44IDMuOSAyMC4yIDguNyAzNS41LjcgMi4zIDEuNCA0LjcgMi4yIDcuMkg1Ny43em0yNDAuNiA1LjdoLS44Yy4zLS4yLjUtLjQuOC0uNXYuNXptNy41LTUuN2MyLjEtMS40IDQuMy0yLjggNi40LTQuMyAxLjEgMS40IDIuMiAyLjggMy4yIDQuM2gtOS42em0xNS4xLTI0LjdjLTEwLjggNy4zLTIwLjYgMTguMy0zMy4zIDI1LjItNiAzLjMtMjcgMTEuNy0zMy40IDEwLjItMy42LS44LTMuOS01LjMtNS40LTkuNS0zLjEtOS0xMC4xLTIzLjQtMTAuOC0zNy0uOC0xNy4yLTIuNS00NiAxNi00Mi40IDE0LjkgMi45IDMyLjMgOS43IDQzLjkgMTYuMSA3LjEgMy45IDExLjEgOC42IDIxLjkgOS41LS4xIDEuNC0uMSAyLjgtLjIgNC4zLTUuOSAzLjktMTUuMyAzLjgtMjEuOCA3LjEgOS41LjQgMTcgMi43IDIzLjUgNS45LS4xIDMuNC0uMyA3LS40IDEwLjZ6bTUzLjQgMjQuN2gtMTRjLS4xLTMuMi0yLjgtNS44LTYuMS01LjhzLTUuOSAyLjYtNi4xIDUuOGgtMTcuNGMtMi44LTQuNC01LjctOC42LTguOS0xMi41IDIuMS0yLjIgNC00LjcgNi02LjkgOSAzLjcgMTQuOC00LjkgMjEuNy00LjIgNy45LjggMTQuMiAxMS43IDI1LjQgMTFsLS42IDEyLjZ6bTguNyAwYy4yLTQgLjQtNy44LjYtMTEuNSAxNS42LTcuMyAyOSAxLjMgMzUuNyAxMS41SDM4M3ptODMuNC0zN2MtMi4zIDExLjItNS44IDI0LTkuOSAzNy4xLS4yLS4xLS40LS4xLS42LS4xSDQyOGMuNi0xLjEgMS4yLTIuMiAxLjktMy4zLTIuNi02LjEtOS04LjctMTAuOS0xNS41IDEyLjEtMjIuNyA2LjUtOTMuNC0yNC4yLTc4LjUgNC4zLTYuMyAxNS42LTExLjUgMjAuOC0xOS4zIDEzIDEwLjQgMjAuOCAyMC4zIDMzLjIgMzEuNCA2LjggNiAyMCAxMy4zIDIxLjQgMjMuMS44IDUuNS0yLjYgMTguOS0zLjggMjUuMXpNMjIyLjIgMTMwLjVjNS40LTE0LjkgMjcuMi0zNC43IDQ1LTMyIDcuNyAxLjIgMTggOC4yIDEyLjIgMTcuNy0zMC4yLTctNDUuMiAxMi42LTU0LjQgMzMuMS04LjEtMi00LjktMTMuMS0yLjgtMTguOHptMTg0LjEgNjMuMWM4LjItMy42IDIyLjQtLjcgMjkuNi01LjMtNC4yLTExLjUtMTAuMy0yMS40LTkuMy0zNy43LjUgMCAxIDAgMS40LjEgNi44IDE0LjIgMTIuNyAyOS4yIDIxLjQgNDEuNy01LjcgMTMuNS00My42IDI1LjQtNDMuMSAxLjJ6bTIwLjQtNDN6bS0xMTcuMiA0NS43Yy02LjgtMTAuOS0xOS0zMi41LTE0LjUtNDUuMyA2LjUgMTEuOSA4LjYgMjQuNCAxNy44IDMzLjMgNC4xIDQgMTIuMiA5IDguMiAyMC4yLS45IDIuNy03LjggOC42LTExLjcgOS43LTE0LjQgNC4zLTQ3LjkuOS0zNi42LTE3LjEgMTEuOS43IDI3LjkgNy44IDM2LjgtLjh6bTI3LjMgNzBjMy44IDYuNiAxLjQgMTguNyAxMi4xIDIwLjYgMjAuMiAzLjQgNDMuNi0xMi4zIDU4LjEtMTcuOCA5LTE1LjItLjgtMjAuNy04LjktMzAuNS0xNi42LTIwLTM4LjgtNDQuOC0zOC03NC43IDYuNy00LjkgNy4zIDcuNCA4LjIgOS43IDguNyAyMC4zIDMwLjQgNDYuMiA0Ni4zIDYzLjUgMy45IDQuMyAxMC4zIDguNCAxMSAxMS4yIDIuMSA4LjItNS40IDE4LTQuNSAyMy41LTIxLjcgMTMuOS00NS44IDI5LjEtODEuNCAyNS42LTcuNC02LjctMTAuMy0yMS40LTIuOS0zMS4xem0tMjAxLjMtOS4yYy02LjgtMy45LTguNC0yMS0xNi40LTIxLjQtMTEuNC0uNy05LjMgMjIuMi05LjMgMzUuNS03LjgtNy4xLTkuMi0yOS4xLTMuNS00MC4zLTYuNi0zLjItOS41IDMuNi0xMy4xIDUuOSA0LjctMzQuMSA0OS44LTE1LjggNDIuMyAyMC4zem0yOTkuNiAyOC44Yy0xMC4xIDE5LjItMjQuNCA0MC40LTU0IDQxLS42LTYuMi0xLjEtMTUuNiAwLTE5LjQgMjIuNy0yLjIgMzYuNi0xMy43IDU0LTIxLjZ6bS0xNDEuOSAxMi40YzE4LjkgOS45IDUzLjYgMTEgNzkuMyAxMC4yIDEuNCA1LjYgMS4zIDEyLjYgMS40IDE5LjQtMzMgMS44LTcyLTYuNC04MC43LTI5LjZ6bTkyLjIgNDYuN2MtMS43IDQuMy01LjMgOS4zLTkuOCAxMS4xLTEyLjEgNC45LTQ1LjYgOC43LTYyLjQtLjMtMTAuNy01LjctMTcuNS0xOC41LTIzLjQtMjYtMi44LTMuNi0xNi45LTEyLjktLjItMTIuOSAxMy4xIDMyLjcgNTggMjkgOTUuOCAyOC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKaXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5MCAyNDEuN0M0MTcuMSAxNjkgMzIwLjYgNzEuOCAyNDguNSAwIDgzIDE2NC45IDYgMjQxLjcgNiAyNDEuN2MtNy45IDcuOS03LjkgMjAuNyAwIDI4LjdDMTM4LjggNDAyLjcgNjcuOCAzMzEuOSAyNDguNSA1MTJjMzc5LjQtMzc4IDE1LjctMTYuNyAyNDEuNS0yNDEuNyA4LTcuOSA4LTIwLjcgMC0yOC42em0tMjQxLjUgOTBsLTc2LTc1LjcgNzYtNzUuNyA3NiA3NS43LTc2IDc1Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpvZ2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3OC4xIDQ1QzMzNy42IDE5LjkgMjkyLjYgOCAyNDguMiA4IDE2NSA4IDgzLjggNDkuOSAzNi45IDEyNS45Yy03MS45IDExNi42LTM1LjYgMjY5LjMgODEgMzQxLjJzMjY5LjMgMzUuNiAzNDEuMi04MC45YzcxLjktMTE2LjYgMzUuNi0yNjkuNC04MS0zNDEuMnptNTEuOCAzMjMuMmMtNDAuNCA2NS41LTExMC40IDEwMS41LTE4MiAxMDEuNS02LjggMC0xMy42LS40LTIwLjQtMS05LTEzLjYtMTkuOS0zMy4zLTIzLjctNDIuNC01LjctMTMuNy0yNy4yLTQ1LjYgMzEuMi02Ny4xIDUxLjctMTkuMSAxNzYuNy0xNi41IDIwOC44LTE3LjYtNCA5LTguNiAxNy45LTEzLjkgMjYuNnptLTIwMC44LTg2LjNjLTU1LjUtMS40LTgxLjctMjAuOC01OC41LTQ4LjJzNTEuMS00MC43IDY4LjktNTEuMmMxNy45LTEwLjUgMjcuMy0zMy43LTIzLjYtMjkuN0M4Ny4zIDE2MS41IDQ4LjYgMjUyLjEgMzcuNiAyOTNjLTguOC00OS43LS4xLTEwMi43IDI4LjUtMTQ5LjFDMTI4IDQzLjQgMjU5LjYgMTIuMiAzNjAuMSA3NC4xYzc0LjggNDYuMSAxMTEuMiAxMzAuOSA5OS4zIDIxMi43LTI0LjktLjUtMTc5LjMtMy42LTIzMC4zLTQuOXptMTgzLjgtNTQuOGMtMjIuNy02LTU3IDExLjMtODYuNyAyNy4yLTI5LjcgMTUuOC0zMS4xIDguMi0zMS4xIDguMnM0MC4yLTI4LjEgNTAuNy0zNC41IDMxLjktMTQgMTMuNC0yNC42Yy0zLjItMS44LTYuNy0yLjctMTAuNC0yLjctMTcuOCAwLTQxLjUgMTguNy02Ny41IDM1LjYtMzEuNSAyMC41LTY1LjMgMzEuMy02NS4zIDMxLjNsMTY5LjUtMS42IDQ2LjUtMjMuNHMzLjYtOS41LTE5LjEtMTUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSm9vbWxhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS42IDkyLjFDLjYgNTguOCAyNy40IDMyIDYwLjQgMzJjMzAgMCA1NC41IDIxLjkgNTkuMiA1MC4yIDMyLjYtNy42IDY3LjEuNiA5Ni41IDMwbC00NC4zIDQ0LjNjLTIwLjUtMjAuNS00Mi42LTE2LjMtNTUuNC0zLjUtMTQuMyAxNC4zLTE0LjMgMzcuOSAwIDUyLjJsOTkuNSA5OS41LTQ0IDQ0LjNjLTg3LjctODcuMi00OS43LTQ5LjctOTkuOC05OS43LTI2LjgtMjYuNS0zNS02NC44LTI0LjgtOTguOUMyMC40IDE0NC42LjYgMTIwLjcuNiA5Mi4xem0xMjkuNSAxMTYuNGw0NC4zIDQ0LjNjMTAtMTAgODkuNy04OS43IDk5LjctOTkuOCAxNC4zLTE0LjMgMzcuNi0xNC4zIDUxLjkgMCAxMi44IDEyLjggMTcgMzUtMy41IDU1LjRsNDQgNDQuM2MzMS4yLTMxLjIgMzguNS02Ny42IDI4LjktMTAxLjIgMjkuMi00LjEgNTEuOS0yOS4yIDUxLjktNTkuNSAwLTMzLjItMjYuOC02MC4xLTU5LjgtNjAuMS0zMC4zIDAtNTUuNCAyMi41LTU5LjUgNTEuNi0zMy44LTkuOS03MS43LTEuNS05OC4zIDI1LjEtMTguMyAxOS4xLTcxLjEgNzEuNS05OS42IDk5Ljl6bTI2Ni4zIDE1Mi4yYzguMi0zMi43LS45LTY4LjUtMjYuMy05My45LTExLjgtMTIuMiA1IDQuNy05OS41LTk5LjdsLTQ0LjMgNDQuMyA5OS43IDk5LjdjMTQuMyAxNC4zIDE0LjMgMzcuNiAwIDUxLjktMTIuOCAxMi44LTM1IDE3LTU1LjQtMy41bC00NCA0NC4zYzI3LjYgMzAuMiA2OCAzOC44IDEwMi43IDI4IDUuNSAyNy40IDI5LjcgNDguMSA1OC45IDQ4LjEgMzMgMCA1OS44LTI2LjggNTkuOC02MC4xIDAtMzAuMi0yMi41LTU1LTUxLjYtNTkuMXptLTg0LjMtNTMuMWwtNDQtNDQuM2MtODcgODYuNC01MC40IDUwLjQtOTkuNyA5OS44LTE0LjMgMTQuMy0zNy42IDE0LjMtNTEuOSAwLTEzLjEtMTMuNC0xNi45LTM1LjMgMy4yLTU1LjRsLTQ0LTQ0LjNjLTMwLjIgMzAuMi0zOCA2NS4yLTI5LjUgOTguMy0yNi43IDYtNDYuMiAyOS45LTQ2LjIgNTguMkMwIDQ1My4yIDI2LjggNDgwIDU5LjggNDgwYzI4LjYgMCA1Mi41LTE5LjggNTguNi00Ni43IDMyLjcgOC4yIDY4LjUtLjYgOTQuMi0yNiAzMi4xLTMyIDEyLjItMTIuNCA5OS41LTk5Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJ2NDQ4aDQ0OFYzMkgwem0yNDMuOCAzNDkuNGMwIDQzLjYtMjUuNiA2My41LTYyLjkgNjMuNS0zMy43IDAtNTMuMi0xNy40LTYzLjItMzguNWwzNC4zLTIwLjdjNi42IDExLjcgMTIuNiAyMS42IDI3LjEgMjEuNiAxMy44IDAgMjIuNi01LjQgMjIuNi0yNi41VjIzNy43aDQyLjF2MTQzLjd6bTk5LjYgNjMuNWMtMzkuMSAwLTY0LjQtMTguNi03Ni43LTQzbDM0LjMtMTkuOGM5IDE0LjcgMjAuOCAyNS42IDQxLjUgMjUuNiAxNy40IDAgMjguNi04LjcgMjguNi0yMC44IDAtMTQuNC0xMS40LTE5LjUtMzAuNy0yOGwtMTAuNS00LjVjLTMwLjQtMTIuOS01MC41LTI5LjItNTAuNS02My41IDAtMzEuNiAyNC4xLTU1LjYgNjEuNi01NS42IDI2LjggMCA0NiA5LjMgNTkuOCAzMy43TDM2OCAyOTBjLTcuMi0xMi45LTE1LTE4LTI3LjEtMTgtMTIuMyAwLTIwLjEgNy44LTIwLjEgMTggMCAxMi42IDcuOCAxNy43IDI1LjkgMjUuNmwxMC41IDQuNWMzNS44IDE1LjMgNTUuOSAzMSA1NS45IDY2LjIgMCAzNy44LTI5LjggNTguNi02OS43IDU4LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpzZmlkZGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMC42MzQgMjM3LjQ2MmMtNC43MjctMi42MjEtNS42NjQtNS43NDgtNi4zODEtMTAuNzc2LTIuMzUyLTE2LjQ4OC0zLjUzOS0zMy42MTktOS4wOTctNDkuMDk1LTM1Ljg5NS05OS45NTctMTUzLjk5LTE0My4zODYtMjQ2Ljg0OS05MS42NDYtMjcuMzcgMTUuMjUtNDguOTcxIDM2LjM2OS02NS40OTMgNjMuOTAzLTMuMTg0LTEuNTA4LTUuNDU4LTIuNzEtNy44MjQtMy42ODYtMzAuMTAyLTEyLjQyMS01OS4wNDktMTAuMTIxLTg1LjMzMSA5LjE2Ny0yNS41MzEgMTguNzM3LTM2LjQyMiA0NC41NDgtMzIuNjc2IDc2LjQwOC4zNTUgMy4wMjUtMS45NjcgNy42MjEtNC41MTQgOS41NDUtMzkuNzEyIDI5Ljk5Mi01Ni4wMzEgNzguMDY1LTQxLjkwMiAxMjQuNjE1IDEzLjgzMSA0NS41NjkgNTcuNTE0IDc5Ljc5NiAxMDUuNjA4IDgxLjQzMyAzMC4yOTEgMS4wMzEgNjAuNjM3LjU0NiA5MC45NTkuNTM5IDg0LjA0MS0uMDIxIDE2OC4wOS41MzEgMjUyLjEyLS40OCA1Mi42NjQtLjYzNCA5Ni4xMDgtMzYuODczIDEwOC4yMTItODcuMjkzIDExLjU0LTQ4LjA3NC0xMS4xNDQtOTcuMy01Ni44MzItMTIyLjYzNHptMjEuMTA3IDE1Ni44OGMtMTguMjMgMjIuNDMyLTQyLjM0MyAzNS4yNTMtNzEuMjggMzUuNjUtNTYuODc0Ljc4MS0xMTMuNzY3LjIzLTE3MC42NTIuMjMgMCAuNy0xNjMuMDI4LjE1OS0xNjMuNzI4LjE1NC00My44NjEtLjMzMi03Ni43MzktMTkuNzY2LTk1LjE3NS01OS45OTUtMTguOTAyLTQxLjI0NS00LjAwNC05MC44NDggMzQuMTg2LTExNi4xMDYgOS4xODItNi4wNzMgMTIuNTA1LTExLjU2NiAxMC4wOTYtMjMuMTM2LTUuNDktMjYuMzYxIDQuNDUzLTQ3Ljk1NiAyNi40Mi02Mi45ODEgMjIuOTg3LTE1LjcyMyA0Ny40MjItMTYuMTQ2IDcyLjAzNC0zLjA4MyAxMC4yNjkgNS40NSAxNC42MDcgMTEuNTY0IDIyLjE5OC0yLjUyNyAxNC4yMjItMjYuMzk5IDM0LjU1Ny00Ni43MjcgNjAuNjcxLTYxLjI5NCA5Ny40Ni01NC4zNjYgMjI4LjM3IDcuNTY4IDIzMC4yNCAxMzIuNjk3LjEyMiA4LjE1IDIuNDEyIDEyLjQyOCA5Ljg0OCAxNS44OTQgNTcuNTYgMjYuODI5IDc0LjQ1NiA5Ni4xMjIgMzUuMTQyIDE0NC40OTd6bS04Ny43ODktODAuNDk5Yy01Ljg0OCAzMS4xNTctMzQuNjIyIDU1LjA5Ni02Ni42NjYgNTUuMDk1LTE2Ljk1My0uMDAxLTMyLjA1OC02LjU0NS00NC4wNzktMTcuNzA1LTI3LjY5Ny0yNS43MTMtNzEuMTQxLTc0Ljk4LTk1LjkzNy05My4zODctMjAuMDU2LTE0Ljg4OC00MS45OS0xMi4zMzMtNjAuMjcyIDMuNzgyLTQ5Ljk5NiA0NC4wNzEgMTUuODU5IDEyMS43NzUgNjcuMDYzIDc3LjE4OCA0LjU0OC0zLjk2IDcuODQtOS41NDMgMTIuNzQ0LTEyLjg0NCA4LjE4NC01LjUwOSAyMC43NjYtLjg4NCAxMy4xNjggMTAuNjIyLTE3LjM1OCAyNi4yODQtNDkuMzMgMzguMTk3LTc4Ljg2MyAyOS4zMDEtMjguODk3LTguNzA0LTQ4Ljg0LTM1Ljk2OC00OC42MjYtNzAuMTc5IDEuMjI1LTIyLjQ4NSAxMi4zNjQtNDMuMDYgMzUuNDE0LTU1Ljk2NSAyMi41NzUtMTIuNjM4IDQ2LjM2OS0xMy4xNDYgNjYuOTkxIDIuNDc0QzI5NS42OCAyODAuNyAzMjAuNDY3IDMyMy45NyAzNTIuMTg1IDM0My40N2MyNC41NTggMTUuMDk5IDU0LjI1NCA3LjM2MyA2OC44MjMtMTcuNTA2IDI4LjgzLTQ5LjIwOS0zNC41OTItMTA1LjAxNi03OC44NjgtNjMuNDYtMy45ODkgMy43NDQtNi45MTcgOC45MzItMTEuNDEgMTEuNzItMTAuOTc1IDYuODExLTE3LjMzMy00LjExMy0xMi44MDktMTAuMzUzIDIwLjcwMy0yOC41NTQgNTAuNDY0LTQwLjQ0IDgzLjI3MS0yOC4yMTQgMzEuNDI5IDExLjcxNCA0OS4xMDggNDQuMzY2IDQyLjc2IDc4LjE4NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSnhsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxMi4yIDMySDM1LjhDMTYgMzIgMCA0OCAwIDY3LjhWNDQ0LjJDMCA0NjQgMTYgNDgwIDM1LjggNDgwSDQxMi4yYzE5LjggMCAzNS44LTE2IDM1LjgtMzUuOFY2Ny44QzQ0OCA0OCA0MzIgMzIgNDEyLjIgMzJ6TTM3OC42IDMzMy43YzAgNDAuMi0zMi42IDcyLjgtNzIuOCA3Mi44SDcwLjJjMC00MC4yIDMyLjYtNzIuOCA3Mi44LTcyLjhIMzc4LjZ6bTAtMTEzLjljMCA0MC4yLTMyLjYgNzIuOC03Mi44IDcyLjhINzAuMmMwLTQwLjIgMzIuNi03Mi44IDcyLjgtNzIuOEgzNzguNnptMC0xMTMuOWMwIDQwLjItMzIuNiA3Mi44LTcyLjggNzIuOEg3MC4yYzAtNDAuMiAzMi42LTcyLjggNzIuOC03Mi44SDM3OC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLYWdnbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0LjIgNTAxLjVMMTU4LjQgMzIwLjMgMjk4LjIgMTg1YzIuNi0yLjcgMS43LTEwLjUtNS4zLTEwLjVoLTY5LjJjLTMuNSAwLTcgMS44LTEwLjUgNS4zTDgwLjkgMzEzLjVWNy41cTAtNy41LTcuNS03LjVIMjEuNVExNCAwIDE0IDcuNXY0OTdxMCA3LjUgNy41IDcuNWg1MS45cTcuNSAwIDcuNS03LjV2LTEwOWwzMC44LTI5LjMgMTEwLjUgMTQwLjZjMyAzLjUgNi41IDUuMyAxMC41IDUuM2g2Ni45cTUuMjUgMCA2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtleWJhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg2LjE3IDQxOWExOCAxOCAwIDEgMCAxOCAxOCAxOCAxOCAwIDAgMC0xOC0xOHptMTExLjkyLTE0Ny42Yy05LjUtMTQuNjItMzkuMzctNTIuNDUtODcuMjYtNzMuNzFxLTkuMS00LjA2LTE4LjM4LTcuMjdhNzguNDMgNzguNDMgMCAwIDAtNDcuODgtMTA0LjEzYy0xMi40MS00LjEtMjMuMzMtNi0zMi40MS01Ljc3LS42LTItMS44OS0xMSA5LjQtMzVMMTk4LjY2IDMybC01LjQ4IDcuNTZjLTguNjkgMTIuMDYtMTYuOTIgMjMuNTUtMjQuMzQgMzQuODlhNTEgNTEgMCAwIDAtOC4yOS0xLjI1Yy00MS41My0yLjQ1LTM5LTIuMzMtNDEuMDYtMi4zMy01MC42MSAwLTUwLjc1IDUyLjEyLTUwLjc1IDQ1Ljg4bC0yLjM2IDM2LjY4Yy0xLjYxIDI3IDE5Ljc1IDUwLjIxIDQ3LjYzIDUxLjg1bDguOTMuNTRhMjE0IDIxNCAwIDAgMC00Ni4yOSAzNS41NEMxNCAzMDQuNjYgMTQgMzc0IDE0IDQyOS43N3YzMy42NGwyMy4zMi0yOS44YTE0OC42IDE0OC42IDAgMCAwIDE0LjU2IDM3LjU2YzUuNzggMTAuMTMgMTQuODcgOS40NSAxOS42NCA3LjMzIDQuMjEtMS44NyAxMC02LjkyIDMuNzUtMjAuMTFhMTc4LjI5IDE3OC4yOSAwIDAgMS0xNS43Ni01My4xM2w0Ni44Mi01OS44My0yNC42NiA3NC4xMWM1OC4yMy00Mi40IDE1Ny4zOC02MS43NiAyMzYuMjUtMzguNTkgMzQuMiAxMC4wNSA2Ny40NS42OSA4NC43NC0yMy44NC43Mi0xIDEuMi0yLjE2IDEuODUtMy4yMmExNTYuMDkgMTU2LjA5IDAgMCAxIDIuOCAyOC40M2MwIDIzLjMtMy42OSA1Mi45My0xNC44OCA4MS42NC0yLjUyIDYuNDYgMS43NiAxNC41IDguNiAxNS43NCA3LjQyIDEuNTcgMTUuMzMtMy4xIDE4LjM3LTExLjE1QzQyOSA0NDMgNDM0IDQxNCA0MzQgMzgyLjMyYzAtMzguNTgtMTMtNzcuNDYtMzUuOTEtMTEwLjkyek0xNDIuMzcgMTI4LjU4bC0xNS43LS45My0xLjM5IDIxLjc5IDEzLjEzLjc4YTkzIDkzIDAgMCAwIC4zMiAxOS41N2wtMjIuMzgtMS4zNGExMi4yOCAxMi4yOCAwIDAgMS0xMS43Ni0xMi43OUwxMDcgMTE5YzEtMTIuMTcgMTMuODctMTEuMjcgMTMuMjYtMTEuMzJsMjkuMTEgMS43M2ExNDQuMzUgMTQ0LjM1IDAgMCAwLTcgMTkuMTd6bTE0OC40MiAxNzIuMThhMTAuNTEgMTAuNTEgMCAwIDEtMTQuMzUtMS4zOWwtOS42OC0xMS40OS0zNC40MiAyN2E4LjA5IDguMDkgMCAwIDEtMTEuMTMtMS4wOGwtMTUuNzgtMTguNjRhNy4zOCA3LjM4IDAgMCAxIDEuMzQtMTAuMzRsMzQuNTctMjcuMTgtMTQuMTQtMTYuNzQtMTcuMDkgMTMuNDVhNy43NSA3Ljc1IDAgMCAxLTEwLjU5LTFzLTMuNzItNC40Mi0zLjgtNC41M2E3LjM4IDcuMzggMCAwIDEgMS4zNy0xMC4zNEwyMTQgMjI1LjE5cy0xOC41MS0yMi0xOC42LTIyLjE0YTkuNTYgOS41NiAwIDAgMSAxLjc0LTEzLjQyIDEwLjM4IDEwLjM4IDAgMCAxIDE0LjMgMS4zN2w4MS4wOSA5Ni4zMmE5LjU4IDkuNTggMCAwIDEtMS43NCAxMy40NHpNMTg3LjQ0IDQxOWExOCAxOCAwIDEgMCAxOCAxOCAxOCAxOCAwIDAgMC0xOC0xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2V5Y2RuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzLjggNDA5LjNsNjAuNS01OWMzMi4xIDQyLjggNzEuMSA2NiAxMjYuNiA2Ny40IDMwLjUuNyA2MC4zLTcgODYuNC0yMi40IDUuMSA1LjMgMTguNSAxOS41IDIwLjkgMjItMzIuMiAyMC43LTY5LjYgMzEuMS0xMDguMSAzMC4yLTQzLjMtMS4xLTg0LjYtMTYuNy0xMTcuNy00NC40LjMtLjYtMzguMiAzNy41LTM4LjYgMzcuOSA5LjUgMjkuOC0xMy4xIDYyLjQtNDYuMyA2Mi40QzIwLjcgNTAzLjMgMCA0ODEuNyAwIDQ1NC45YzAtMzQuMyAzMy4xLTU2LjYgNjMuOC00NS42em0zNTQuOS0yNTIuNGMxOS4xIDMxLjMgMjkuNiA2Ny40IDI4LjcgMTA0LTEuMSA0NC44LTE5IDg3LjUtNDguNiAxMjEgLjMuMyAyMy44IDI1LjIgMjQuMSAyNS41IDkuNi0xLjMgMTkuMiAyIDI1LjkgOS4xIDExLjMgMTIgMTAuOSAzMC45LTEuMSA0Mi40LTEyIDExLjMtMzAuOSAxMC45LTQyLjQtMS4xLTYuNy03LTkuNC0xNi44LTcuNi0yNi4zLTI0LjktMjYuNi00NC40LTQ3LjItNDQuNC00Ny4yIDQyLjctMzQuMSA2My4zLTc5LjYgNjQuNC0xMjQuMi43LTI4LjktNy4yLTU3LjItMjEuMS04Mi4ybDIyLjEtMjF6TTEwNCA1My4xYzYuNyA3IDkuNCAxNi44IDcuNiAyNi4zbDQ1LjkgNDguMWMtNC43IDMuOC0xMy4zIDEwLjQtMjIuOCAyMS4zLTI1LjQgMjguNS0zOS42IDY0LjgtNDAuNyAxMDIuOS0uNyAyOC45IDYuMSA1Ny4yIDIwIDgyLjRsLTIyIDIxLjVDNzIuNyAzMjQgNjMuMSAyODcuOSA2NC4yIDI1MC45YzEtNDQuNiAxOC4zLTg3LjYgNDcuNS0xMjEuMWwtMjUuMy0yNi40Yy05LjYgMS4zLTE5LjItMi0yNS45LTkuMS0xMS4zLTEyLTEwLjktMzAuOSAxLjEtNDIuNEM3My41IDQwLjcgOTIuMiA0MSAxMDQgNTMuMXpNNDY0LjkgOGMyNiAwIDQ3LjEgMjIuNCA0Ny4xIDQ4LjNTNDkwLjkgMTA0IDQ2NC45IDEwNGMtNi4zLjEtMTQtMS4xLTE1LjktMS44bC02Mi45IDU5LjdjLTMyLjctNDMuNi03Ni43LTY1LjktMTI2LjktNjcuMi0zMC41LS43LTYwLjMgNi44LTg2LjIgMjIuNGwtMjEuMS0yMkMxODQuMSA3NC4zIDIyMS41IDY0IDI2MCA2NC45YzQzLjMgMS4xIDg0LjYgMTYuNyAxMTcuNyA0NC42bDQxLjEtMzguNmMtMS41LTQuNy0yLjItOS42LTIuMi0xNC41QzQxNi41IDI5LjcgNDM4LjkgOCA0NjQuOSA4ek0yNTYuNyAxMTMuNGM1LjUgMCAxMC45LjQgMTYuNCAxLjEgNzguMSA5LjggMTMzLjQgODEuMSAxMjMuOCAxNTkuMS05LjggNzguMS04MS4xIDEzMy40LTE1OS4xIDEyMy44LTc4LjEtOS44LTEzMy40LTgxLjEtMTIzLjgtMTU5LjIgOS4zLTcyLjQgNzAuMS0xMjQuNiAxNDIuNy0xMjQuOHptLTU5IDExOS40Yy42IDIyLjcgMTIuMiA0MS44IDMyLjQgNTIuMmwtMTEgNTEuN2g3My43bC0xMS01MS43YzIwLjEtMTAuOSAzMi4xLTI5IDMyLjQtNTIuMi0uNC0zMi44LTI1LjgtNTcuNS01OC4zLTU4LjMtMzIuMS44LTU3LjMgMjQuOC01OC4yIDU4LjN6TTI1NiAxNjBcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2lja3N0YXJ0ZXJLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1Ni42IDI1Ni4ybDQwLjgtNDAuNWM0Mi4yLTQxLjkgNDIuMi0xMTAuMyAwLTE1Mi4xcy0xMTEtNDEuOS0xNTMuMiAwTDIyOS4zIDc4LjRDMjA5LjYgNTAuMyAxNzcuMSAzMiAxNDAuMiAzMkM4MC41IDMyIDMyIDgwLjIgMzIgMTM5LjVWMzcyLjVDMzIgNDMxLjkgODAuNSA0ODAgMTQwLjIgNDgwYzM3LjEgMCA2OS4zLTE4LjMgODktNDYuNGwxNC45IDE0LjdjNDIuMiA0MS45IDExMSA0MS45IDE1My4yIDBzNDIuMi0xMTAuMyAwLTE1Mi4xbC00MC44LTQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaWNrc3RhcnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek0zMjAuOCAyMzNsLTIzLjMgMjMuMUwzMjAuOCAyNzljMjQuMSAyMy45IDI0LjEgNjMgMCA4Ni45cy02My40IDIzLjktODcuNiAwbC04LjUtOC40Yy0xMS4zIDE2LTI5LjcgMjYuNS01MC45IDI2LjVjLTM0LjEgMC02MS45LTI3LjUtNjEuOS02MS40bDAtMTMzLjJjMC0zMy44IDI3LjctNjEuNCA2MS45LTYxLjRjMjEuMSAwIDM5LjYgMTAuNSA1MC45IDI2LjVsOC41LTguNGMyNC4xLTIzLjkgNjMuNC0yMy45IDg3LjYgMHMyNC4xIDYzIDAgODYuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS29ydnVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4Ni41IDM0aC0zMjdDMjYuOCAzNCAwIDYwLjggMCA5My41djMyNy4xQzAgNDUzLjIgMjYuOCA0ODAgNTkuNSA0ODBoMzI3LjFjMzMgMCA1OS41LTI2LjggNTkuNS01OS41di0zMjdDNDQ2IDYwLjggNDE5LjIgMzQgMzg2LjUgMzR6TTg3LjEgMTIwLjhoOTZ2MTE2bDYxLjgtMTE2aDExMC45bC04MS4yIDEzMkg4Ny4xdi0xMzJ6bTE2MS44IDI3Mi4xbC02NS43LTExMy42djExMy42aC05NlYyNjIuMWgxOTEuNWw4OC42IDEzMC44SDI0OC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXJhdmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNC40LDExNS44M2E1LjcyLDUuNzIsMCwwLDAtLjI4LS42OCw4LjUyLDguNTIsMCwwLDAtLjUzLTEuMjUsNiw2LDAsMCwwLS41NC0uNzEsOS4zNiw5LjM2LDAsMCwwLS43Mi0uOTRjLS4yMy0uMjItLjUyLS40LS43Ny0uNmE4Ljg0LDguODQsMCwwLDAtLjktLjY4TDQwNC40LDU1LjU1YTgsOCwwLDAsMC04LDBMMzAwLjEyLDExMWgwYTguMDcsOC4wNywwLDAsMC0uODguNjksNy42OCw3LjY4LDAsMCwwLS43OC42LDguMjMsOC4yMywwLDAsMC0uNzIuOTNjLS4xNy4yNC0uMzkuNDUtLjU0LjcxYTkuNyw5LjcsMCwwLDAtLjUyLDEuMjVjLS4wOC4yMy0uMjEuNDQtLjI4LjY4YTguMDgsOC4wOCwwLDAsMC0uMjgsMi4wOFYyMjMuMThsLTgwLjIyLDQ2LjE5VjYzLjQ0YTcuOCw3LjgsMCwwLDAtLjI4LTIuMDljLS4wNi0uMjQtLjItLjQ1LS4yOC0uNjhhOC4zNSw4LjM1LDAsMCwwLS41Mi0xLjI0Yy0uMTQtLjI2LS4zNy0uNDctLjU0LS43MmE5LjM2LDkuMzYsMCwwLDAtLjcyLS45NCw5LjQ2LDkuNDYsMCwwLDAtLjc4LS42LDkuOCw5LjgsMCwwLDAtLjg4LS42OGgwTDExNS42MSwxLjA3YTgsOCwwLDAsMC04LDBMMTEuMzQsNTYuNDloMGE2LjUyLDYuNTIsMCwwLDAtLjg4LjY5LDcuODEsNy44MSwwLDAsMC0uNzkuNiw4LjE1LDguMTUsMCwwLDAtLjcxLjkzYy0uMTguMjUtLjQuNDYtLjU1LjcyYTcuODgsNy44OCwwLDAsMC0uNTEsMS4yNCw2LjQ2LDYuNDYsMCwwLDAtLjI5LjY3LDguMTgsOC4xOCwwLDAsMC0uMjgsMi4xdjMyOS43YTgsOCwwLDAsMCw0LDYuOTVsMTkyLjUsMTEwLjg0YTguODMsOC44MywwLDAsMCwxLjMzLjU0Yy4yMS4wOC40MS4yLjYzLjI2YTcuOTIsNy45MiwwLDAsMCw0LjEsMGMuMi0uMDUuMzctLjE2LjU1LS4yMmE4LjYsOC42LDAsMCwwLDEuNC0uNThMNDA0LjQsNDAwLjA5YTgsOCwwLDAsMCw0LTYuOTVWMjg3Ljg4bDkyLjI0LTUzLjExYTgsOCwwLDAsMCw0LTdWMTE3LjkyQTguNjMsOC42MywwLDAsMCw1MDQuNCwxMTUuODNaTTExMS42LDE3LjI4aDBsODAuMTksNDYuMTUtODAuMiw0Ni4xOEwzMS40MSw2My40NFptODguMjUsNjBWMjc4LjZsLTQ2LjUzLDI2Ljc5LTMzLjY5LDE5LjRWMTIzLjVsNDYuNTMtMjYuNzlabTAsNDEyLjc4TDIzLjM3LDM4OC41Vjc3LjMyTDU3LjA2LDk2LjdsNDYuNTIsMjYuOFYzMzguNjhhNi45NCw2Ljk0LDAsMCwwLC4xMi45LDgsOCwwLDAsMCwuMTYsMS4xOGgwYTUuOTIsNS45MiwwLDAsMCwuMzguOSw2LjM4LDYuMzgsMCwwLDAsLjQyLDF2MGE4LjU0LDguNTQsMCwwLDAsLjYuNzgsNy42Miw3LjYyLDAsMCwwLC42Ni44NGwwLDBjLjIzLjIyLjUyLjM4Ljc3LjU4YTguOTMsOC45MywwLDAsMCwuODYuNjZsMCwwLDAsMCw5Mi4xOSw1Mi4xOFptOC0xMDYuMTctODAuMDYtNDUuMzIsODQuMDktNDguNDEsOTIuMjYtNTMuMTEsODAuMTMsNDYuMTMtNTguOCwzMy41NlptMTg0LjUyLDQuNTdMMjE1Ljg4LDQ5MC4xMVYzOTcuOEwzNDYuNiwzMjMuMmw0NS43Ny0yNi4xNVptMC0xMTkuMTNMMzU4LjY4LDI1MGwtNDYuNTMtMjYuNzlWMTMxLjc5bDMzLjY5LDE5LjRMMzkyLjM3LDE3OFptOC0xMDUuMjgtODAuMi00Ni4xNyw4MC4yLTQ2LjE2LDgwLjE4LDQ2LjE1Wm04LDEwNS4yOFYxNzhMNDU1LDE1MS4xOWwzMy42OC0xOS40djkxLjM5aDBaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhc3RmbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjUuOCAzNjcuMWwtMTguOC01MXMtMzAuNSAzNC03Ni4yIDM0Yy00MC41IDAtNjkuMi0zNS4yLTY5LjItOTEuNSAwLTcyLjEgMzYuNC05Ny45IDcyLjEtOTcuOSA2Ni41IDAgNzQuOCA1My4zIDEwMC45IDEzNC45IDE4LjggNTYuOSA1NCAxMDIuNiAxNTUuNCAxMDIuNiA3Mi43IDAgMTIyLTIyLjMgMTIyLTgwLjkgMC03Mi45LTYyLjctODAuNi0xMTUtOTIuMS0yNS44LTUuOS0zMy40LTE2LjQtMzMuNC0zNCAwLTE5LjkgMTUuOC0zMS43IDQxLjYtMzEuNyAyOC4yIDAgNDMuNCAxMC42IDQ1LjcgMzUuOGw1OC42LTdjLTQuNy01Mi44LTQxLjEtNzQuNS0xMDAuOS03NC41LTUyLjggMC0xMDQuNCAxOS45LTEwNC40IDgzLjkgMCAzOS45IDE5LjQgNjUuMSA2OCA3Ni44IDQ0LjkgMTAuNiA3OS44IDEzLjggNzkuOCA0NS43IDAgMjEuNy0yMS4xIDMwLjUtNjEgMzAuNS01OS4yIDAtODMuOS0zMS4xLTk3LjktNzMuOS0zMi05Ni44LTQzLjYtMTYzLTE2MS4zLTE2M0M0NS43IDExMy44IDAgMTY4LjMgMCAyNjFjMCA4OS4xIDQ1LjcgMTM3LjIgMTI3LjkgMTM3LjIgNjYuMiAwIDk3LjktMzEuMSA5Ny45LTMxLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlYW5wdWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg2LjUzOSAxMTEuNDg1bDE1LjA5NiAyNDguOTU1LTEwLjk3OS0uMjc1Yy0zNi4yMzItLjgyNC03MS42NCA4Ljc4My0xMDIuNjU3IDI3Ljk5Ny0zMS4wMTYtMTkuMjE0LTY2LjQyNC0yNy45OTctMTAyLjY1Ny0yNy45OTctNDUuNTY0IDAtODIuMDcgMTAuNzA1LTEyMy41MTYgMjcuNzIzTDkzLjExNyAxMjkuNmMyOC41NDYtMTEuODAzIDYxLjQ4NC0xOC4xMTUgOTIuMjI2LTE4LjExNSA0MS4xNzMgMCA3My44MzYgMTMuMTc1IDEwMi42NTcgNDIuNTQ0IDI3LjcyMy0yOC4yNzEgNTkuMDEzLTQxLjcyMSA5OC41MzktNDIuNTQ0ek01NjkuMDcgNDQ4Yy0yNS41MjYgMC00Ny40ODUtNS4yMTUtNzAuNTQyLTE1LjY0NS0zNC4zMS0xNS42NDUtNjkuOTkzLTI0Ljk3OC0xMDcuODcxLTI0Ljk3OC0zOC45NzcgMC03NC45MzQgMTIuOTAxLTEwMi42NTcgNDAuNjIzLTI3LjcyMy0yNy43MjMtNjMuNjgtNDAuNjIzLTEwMi42NTctNDAuNjIzLTM3Ljg3OCAwLTczLjU2MSA5LjMzMy0xMDcuODcxIDI0Ljk3OEM1NS4yMzkgNDQyLjIzNiAzMi43MzEgNDQ4IDguMzAzIDQ0OEg2LjkzTDQ5LjQ3NSA5OC44NTlDODguNzI2IDc2LjYyNiAxMzYuNDg2IDY0IDE4MS43NzUgNjQgMjE4LjgzIDY0IDI1Ni45ODQgNzEuNjg1IDI4OCA5My4wOTUgMzE5LjAxNiA3MS42ODUgMzU3LjE3IDY0IDM5NC4yMjUgNjRjNDUuMjg5IDAgOTMuMDQ5IDEyLjYyNiAxMzIuMyAzNC44NTlMNTY5LjA3IDQ0OHptLTQzLjM2OC00NC43NDFsLTM0LjAzNi0yODAuMjQ2Yy0zMC43NDItMTMuOTk5LTY3LjI0OC0yMS40MS0xMDEuMDA5LTIxLjQxLTM4LjQyOCAwLTc0LjM4NSAxMi4wNzctMTAyLjY1NyAzOC43MDItMjguMjcyLTI2LjYyNS02NC4yMjgtMzguNzAyLTEwMi42NTctMzguNzAyLTMzLjc2MSAwLTcwLjI2NyA3LjQxMS0xMDEuMDA5IDIxLjQxTDUwLjI5OCA0MDMuMjU5YzQ3LjIxMS0xOS40ODcgODIuODk0LTMzLjQ4NiAxMzUuMDQ1LTMzLjQ4NiAzNy42MDQgMCA3MC44MTcgOS42MDYgMTAyLjY1NyAyOS42NDQgMzEuODQtMjAuMDM4IDY1LjA1Mi0yOS42NDQgMTAyLjY1Ny0yOS42NDQgNTIuMTUxIDAgODcuODM0IDEzLjk5OSAxMzUuMDQ1IDMzLjQ4NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MTIuNyAyMTljMC0yMC41IDMuMi0zMi42IDMuMi01NC42IDAtMzQuMi0xMi42LTQ1LjItNDAuNS00NS4yaC0yMC41djI0LjJoNi4zYzE0LjIgMCAxNy4zIDQuNyAxNy4zIDIyLjEgMCAxNi4zLTEuNiAzMi42LTEuNiA1MS41IDAgMjQuMiA3LjkgMzMuNiAyMy42IDM3LjN2MS42Yy0xNS44IDMuNy0yMy42IDEzLjEtMjMuNiAzNy4zIDAgMTguOSAxLjYgMzQuMiAxLjYgNTEuNSAwIDE3LjktMy43IDIyLjYtMTcuMyAyMi42di41aC02LjNWMzkzaDIwLjVjMjcuOCAwIDQwLjUtMTEgNDAuNS00NS4yIDAtMjIuNi0zLjItMzQuMi0zLjItNTQuNiAwLTExIDYuOC0yMi42IDI3LjMtMjMuNnYtMjcuM2MtMjAuNS0uNy0yNy4zLTEyLjMtMjcuMy0yMy4zem0tMTA1LjYgMzJjLTE1LjgtNi4zLTMwLjUtMTAtMzAuNS0yMC41IDAtNy45IDYuMy0xMi42IDE3LjktMTIuNnMyMi4xIDQuNyAzMy42IDEzLjFsMjEtMjcuOGMtMTMuMS0xMC0zMS0yMC41LTU1LjItMjAuNS0zNS43IDAtNTkuOSAyMC41LTU5LjkgNDkuNCAwIDI1LjcgMjIuNiAzOC45IDQxLjUgNDYuMiAxNi4zIDYuMyAzMi4xIDExLjYgMzIuMSAyMi4xIDAgNy45LTYuMyAxMy4xLTIwLjUgMTMuMS0xMy4xIDAtMjYuMy01LjMtNDAuNS0xNi4zbC0yMSAzMC41YzE1LjggMTMuMSAzOS45IDIyLjEgNTkuOSAyMi4xIDQyIDAgNjQuNi0yMi4xIDY0LjYtNTFzLTIyLjUtNDEtNDMtNDcuOHptLTM1OC45IDU5LjRjLTMuNyAwLTguNC0zLjItOC40LTEzLjFWMTE5LjFINjUuMmMtMjguNCAwLTQxIDExLTQxIDQ1LjIgMCAyMi42IDMuMiAzNS4yIDMuMiA1NC42IDAgMTEtNi44IDIyLjYtMjcuMyAyMy42djI3LjNjMjAuNS41IDI3LjMgMTIuMSAyNy4zIDIzLjEgMCAxOS40LTMuMiAzMS0zLjIgNTMuNiAwIDM0LjIgMTIuNiA0NS4yIDQwLjUgNDUuMmgyMC41di0yNC4yaC02LjNjLTEzLjEgMC0xNy4zLTUuMy0xNy4zLTIyLjZzMS42LTMyLjEgMS42LTUxLjVjMC0yNC4yLTcuOS0zMy42LTIzLjYtMzcuM3YtMS42YzE1LjgtMy43IDIzLjYtMTMuMSAyMy42LTM3LjMgMC0xOC45LTEuNi0zNC4yLTEuNi01MS41czMuNy0yMi4xIDE3LjMtMjIuMUg5M3YxNTAuOGMwIDMyLjEgMTEgNTMuMSA0My4xIDUzLjEgMTAgMCAxNy45LTEuNiAyMy42LTMuN2wtNS4zLTM0LjJjLTMuMS44LTQuNi44LTYuMi44ek0zNzkuOSAyNTFjLTE2LjMtNi4zLTMxLTEwLTMxLTIwLjUgMC03LjkgNi4zLTEyLjYgMTcuOS0xMi42IDExLjYgMCAyMi4xIDQuNyAzMy42IDEzLjFsMjEtMjcuOGMtMTMuMS0xMC0zMS0yMC41LTU1LjItMjAuNS0zNS43IDAtNTkuOSAyMC41LTU5LjkgNDkuNCAwIDI1LjcgMjIuNiAzOC45IDQxLjUgNDYuMiAxNi4zIDYuMyAzMi4xIDExLjYgMzIuMSAyMi4xIDAgNy45LTYuMyAxMy4xLTIwLjUgMTMuMS0xMy4xIDAtMjYuMy01LjMtNDAuNS0xNi4zbC0yMC41IDMwLjVjMTUuOCAxMy4xIDM5LjkgMjIuMSA1OS45IDIyLjEgNDIgMCA2NC42LTIyLjEgNjQuNi01MSAuMS0yOC45LTIyLjUtNDEtNDMtNDcuOHptLTE1NS02OC44Yy0zOC40IDAtNzUuMSAzMi4xLTc0LjEgODIuNSAwIDUyIDM0LjIgODIuNSA3OS4zIDgyLjUgMTguOSAwIDM5LjktNi44IDU2LjItMTcuOWwtMTUuOC0yNy44Yy0xMS42IDYuOC0yMi42IDEwLTM0LjIgMTAtMjEgMC0zNy4zLTEwLTQxLjUtMzQuMkgyOTBjLjUtMy43IDEuNi0xMSAxLjYtMTkuNC42LTQyLjYtMjIuNi03NS43LTY2LjctNzUuN3ptLTMwIDY2LjJjMy4yLTIxIDE1LjgtMzEgMzAuNS0zMSAxOC45IDAgMjYuMyAxMy4xIDI2LjMgMzFoLTU2Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxldHRlcmJveGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTIxLjMgMTI4QzU4Ni45IDEyOCA2NDAgMTgxLjEgNjQwIDI0Ni42cy01My4xIDExOC42LTExOC43IDExOC42Yy00Mi41IDAtNzkuNy0yMi4zLTEwMC43LTU1LjhjMTEuNC0xOC4yIDE4LTM5LjcgMTgtNjIuOHMtNi42LTQ0LjYtMTgtNjIuOGwwIDAgLjgtMS4yYzIwLjgtMzIuMyA1Ni44LTUzLjkgOTcuOS01NC42bDIgMHpNMzIwIDEyOGM0Mi41IDAgNzkuNyAyMi4zIDEwMC43IDU1LjhjLTExLjQgMTguMi0xOCAzOS43LTE4IDYyLjhzNi42IDQ0LjYgMTggNjIuOGwwIDAtLjggMS4yYy0yMC44IDMyLjMtNTYuOCA1My45LTk3LjkgNTQuNmwtMiAwYy00Mi41IDAtNzkuNy0yMi4zLTEwMC43LTU1LjhjMTEuNC0xOC4yIDE4LTM5LjcgMTgtNjIuOHMtNi42LTQ0LjYtMTgtNjIuOGwwIDAgLjgtMS4yYzIwLjgtMzIuMyA1Ni44LTUzLjkgOTcuOS01NC42bDIgMHptLTIwMS4zIDBjNDIuNSAwIDc5LjcgMjIuMyAxMDAuNyA1NS44Yy0xMS40IDE4LjItMTggMzkuNy0xOCA2Mi44czYuNiA0NC42IDE4IDYyLjhsMCAwLS44IDEuMmMtMjAuOCAzMi4zLTU2LjggNTMuOS05Ny45IDU0LjZsLTIgMEM1My4xIDM2NS4xIDAgMzEyLjEgMCAyNDYuNlM1My4xIDEyOCAxMTguNyAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzExIDE5Ni44djgxLjNjMCAyLjEtMS42IDMuNy0zLjcgMy43aC0xM2MtMS4zIDAtMi40LS43LTMtMS41bC0zNy4zLTUwLjN2NDguMmMwIDIuMS0xLjYgMy43LTMuNyAzLjdoLTEzYy0yLjEgMC0zLjctMS42LTMuNy0zLjdWMTk2LjljMC0yLjEgMS42LTMuNyAzLjctMy43aDEyLjljMS4xIDAgMi40IC42IDMgMS42bDM3LjMgNTAuM1YxOTYuOWMwLTIuMSAxLjYtMy43IDMuNy0zLjdoMTNjMi4xLS4xIDMuOCAxLjYgMy44IDMuNXptLTkzLjctMy43aC0xM2MtMi4xIDAtMy43IDEuNi0zLjcgMy43djgxLjNjMCAyLjEgMS42IDMuNyAzLjcgMy43aDEzYzIuMSAwIDMuNy0xLjYgMy43LTMuN1YxOTYuOGMwLTEuOS0xLjYtMy43LTMuNy0zLjd6bS0zMS40IDY4LjFIMTUwLjNWMTk2LjhjMC0yLjEtMS42LTMuNy0zLjctMy43aC0xM2MtMi4xIDAtMy43IDEuNi0zLjcgMy43djgxLjNjMCAxIC4zIDEuOCAxIDIuNWMuNyAuNiAxLjUgMSAyLjUgMWg1Mi4yYzIuMSAwIDMuNy0xLjYgMy43LTMuN3YtMTNjMC0xLjktMS42LTMuNy0zLjUtMy43em0xOTMuNy02OC4xSDMyNy4zYy0xLjkgMC0zLjcgMS42LTMuNyAzLjd2ODEuM2MwIDEuOSAxLjYgMy43IDMuNyAzLjdoNTIuMmMyLjEgMCAzLjctMS42IDMuNy0zLjdWMjY1YzAtMi4xLTEuNi0zLjctMy43LTMuN0gzNDRWMjQ3LjdoMzUuNWMyLjEgMCAzLjctMS42IDMuNy0zLjdWMjMwLjljMC0yLjEtMS42LTMuNy0zLjctMy43SDM0NFYyMTMuNWgzNS41YzIuMSAwIDMuNy0xLjYgMy43LTMuN3YtMTNjLS4xLTEuOS0xLjctMy43LTMuNy0zLjd6TTUxMiA5My40VjQxOS40Yy0uMSA1MS4yLTQyLjEgOTIuNy05My40IDkyLjZIOTIuNkM0MS40IDUxMS45LS4xIDQ2OS44IDAgNDE4LjZWOTIuNkMuMSA0MS40IDQyLjItLjEgOTMuNCAwSDQxOS40YzUxLjIgLjEgOTIuNyA0Mi4xIDkyLjYgOTMuNHpNNDQxLjYgMjMzLjVjMC04My40LTgzLjctMTUxLjMtMTg2LjQtMTUxLjNzLTE4Ni40IDY3LjktMTg2LjQgMTUxLjNjMCA3NC43IDY2LjMgMTM3LjQgMTU1LjkgMTQ5LjNjMjEuOCA0LjcgMTkuMyAxMi43IDE0LjQgNDIuMWMtLjggNC43LTMuOCAxOC40IDE2LjEgMTAuMXMxMDcuMy02My4yIDE0Ni41LTEwOC4yYzI3LTI5LjcgMzkuOS01OS44IDM5LjktOTMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlua2VkaW5JbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDAuMjggNDQ4SDcuNFYxNDguOWg5Mi44OHpNNTMuNzkgMTA4LjFDMjQuMDkgMTA4LjEgMCA4My41IDAgNTMuOGE1My43OSA1My43OSAwIDAgMSAxMDcuNTggMGMwIDI5LjctMjQuMSA1NC4zLTUzLjc5IDU0LjN6TTQ0Ny45IDQ0OGgtOTIuNjhWMzAyLjRjMC0zNC43LS43LTc5LjItNDguMjktNzkuMi00OC4yOSAwLTU1LjY5IDM3LjctNTUuNjkgNzYuN1Y0NDhoLTkyLjc4VjE0OC45aDg5LjA4djQwLjhoMS4zYzEyLjQtMjMuNSA0Mi42OS00OC4zIDg3Ljg4LTQ4LjMgOTQgMCAxMTEuMjggNjEuOSAxMTEuMjggMTQyLjNWNDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW5rZWRpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMzJIMzEuOUMxNC4zIDMyIDAgNDYuNSAwIDY0LjN2MzgzLjRDMCA0NjUuNSAxNC4zIDQ4MCAzMS45IDQ4MEg0MTZjMTcuNiAwIDMyLTE0LjUgMzItMzIuM1Y2NC4zYzAtMTcuOC0xNC40LTMyLjMtMzItMzIuM3pNMTM1LjQgNDE2SDY5VjIwMi4yaDY2LjVWNDE2em0tMzMuMi0yNDNjLTIxLjMgMC0zOC41LTE3LjMtMzguNS0zOC41UzgwLjkgOTYgMTAyLjIgOTZjMjEuMiAwIDM4LjUgMTcuMyAzOC41IDM4LjUgMCAyMS4zLTE3LjIgMzguNS0zOC41IDM4LjV6bTI4Mi4xIDI0M2gtNjYuNFYzMTJjMC0yNC44LS41LTU2LjctMzQuNS01Ni43LTM0LjYgMC0zOS45IDI3LTM5LjkgNTQuOVY0MTZoLTY2LjRWMjAyLjJoNjMuN3YyOS4yaC45YzguOS0xNi44IDMwLjYtMzQuNSA2Mi45LTM0LjUgNjcuMiAwIDc5LjcgNDQuMyA3OS43IDEwMS45VjQxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlub2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2Ni4wMzYsMTg2Ljg2N2wtNTkuNSwzNi44NzEtLjgzOCwzNi44NzEtMjkuMzI5LTE5LjI3My0zOS4zODQsMjQuM2MyLjIzOCw1NS4yMTEsMi40ODMsNTkuMjcxLDIuNTEsNTkuNWwtOTcuMiw2NS4zNTlMMTI3LjIxNCwyODUuNzQ4bDEwOC4xLTYyLjAxTDE5NS4wOSwxOTcuNzYxbC03NS40MTcsMzguNTQ3TDk4LjcyMyw5My4wMTUsMjI3Ljc3MSw0My41NzQsMTM2LjQzMiwwLDEwLjczNywzOS4zODUsMzguMzksMTc0LjNsNDEuOSwzMi42ODFMNDguNDQ1LDIyMi4wNjIsNjkuMzk0LDMyMy40NTcsOTguNzIzLDM1MS4xMSw3Ny43NzQsMzYzLjY3OWwxNi43Niw3OC43NjlMMTYwLjczMyw1MTJjLTEwLjgtNzQuODQyLTExLjY1OC03OC42NDEtMTEuNzI1LTc4Ljc3M2w3Ny45MjUtNTUuM2MxNi43NTktMTIuNTcsMTUuMDgzLTEwLjg5NCwxNS4wODMtMTAuODk0bC44MzgsMjQuMywzMy41MTksMjguNDkxLS44MzgtNzcuMDkzLDQ2LjkyNy0zMy41MTksMjYuODE1LTE4LjQzNS0yLjUxNCwzNi4wMzMsMjUuMTM5LDE3LjYsNi43LTc0LjU3OSw1OC42NTctNDMuNTc1WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW51eCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjAuOCAxMjMuM2MxIC41IDEuOCAxLjcgMyAxLjcgMS4xIDAgMi44LS40IDIuOS0xLjUuMi0xLjQtMS45LTIuMy0zLjItMi45LTEuNy0uNy0zLjktMS01LjUtLjEtLjQuMi0uOC43LS42IDEuMS4zIDEuMyAyLjMgMS4xIDMuNCAxLjd6bS0yMS45IDEuN2MxLjIgMCAyLTEuMiAzLTEuNyAxLjEtLjYgMy4xLS40IDMuNS0xLjYuMi0uNC0uMi0uOS0uNi0xLjEtMS42LS45LTMuOC0uNi01LjUuMS0xLjMuNi0zLjQgMS41LTMuMiAyLjkuMSAxIDEuOCAxLjUgMi44IDEuNHpNNDIwIDQwMy44Yy0zLjYtNC01LjMtMTEuNi03LjItMTkuNy0xLjgtOC4xLTMuOS0xNi44LTEwLjUtMjIuNC0xLjMtMS4xLTIuNi0yLjEtNC0yLjktMS4zLS44LTIuNy0xLjUtNC4xLTIgOS4yLTI3LjMgNS42LTU0LjUtMy43LTc5LjEtMTEuNC0zMC4xLTMxLjMtNTYuNC00Ni41LTc0LjQtMTcuMS0yMS41LTMzLjctNDEuOS0zMy40LTcyQzMxMS4xIDg1LjQgMzE1LjcuMSAyMzQuOCAwIDEzMi40LS4yIDE1OCAxMDMuNCAxNTYuOSAxMzUuMmMtMS43IDIzLjQtNi40IDQxLjgtMjIuNSA2NC43LTE4LjkgMjIuNS00NS41IDU4LjgtNTguMSA5Ni43LTYgMTcuOS04LjggMzYuMS02LjIgNTMuMy02LjUgNS44LTExLjQgMTQuNy0xNi42IDIwLjItNC4yIDQuMy0xMC4zIDUuOS0xNyA4LjNzLTE0IDYtMTguNSAxNC41Yy0yLjEgMy45LTIuOCA4LjEtMi44IDEyLjQgMCAzLjkuNiA3LjkgMS4yIDExLjggMS4yIDguMSAyLjUgMTUuNy44IDIwLjgtNS4yIDE0LjQtNS45IDI0LjQtMi4yIDMxLjcgMy44IDcuMyAxMS40IDEwLjUgMjAuMSAxMi4zIDE3LjMgMy42IDQwLjggMi43IDU5LjMgMTIuNSAxOS44IDEwLjQgMzkuOSAxNC4xIDU1LjkgMTAuNCAxMS42LTIuNiAyMS4xLTkuNiAyNS45LTIwLjIgMTIuNS0uMSAyNi4zLTUuNCA0OC4zLTYuNiAxNC45LTEuMiAzMy42IDUuMyA1NS4xIDQuMS42IDIuMyAxLjQgNC42IDIuNSA2Ljd2LjFjOC4zIDE2LjcgMjMuOCAyNC4zIDQwLjMgMjMgMTYuNi0xLjMgMzQuMS0xMSA0OC4zLTI3LjkgMTMuNi0xNi40IDM2LTIzLjIgNTAuOS0zMi4yIDcuNC00LjUgMTMuNC0xMC4xIDEzLjktMTguMy40LTguMi00LjQtMTcuMy0xNS41LTI5Ljd6TTIyMy43IDg3LjNjOS44LTIyLjIgMzQuMi0yMS44IDQ0LS40IDYuNSAxNC4yIDMuNiAzMC45LTQuMyA0MC40LTEuNi0uOC01LjktMi42LTEyLjYtNC45IDEuMS0xLjIgMy4xLTIuNyAzLjktNC42IDQuOC0xMS44LS4yLTI3LTkuMS0yNy4zLTcuMy0uNS0xMy45IDEwLjgtMTEuOCAyMy00LjEtMi05LjQtMy41LTEzLTQuNC0xLTYuOS0uMy0xNC42IDIuOS0yMS44ek0xODMgNzUuOGMxMC4xIDAgMjAuOCAxNC4yIDE5LjEgMzMuNS0zLjUgMS03LjEgMi41LTEwLjIgNC42IDEuMi04LjktMy4zLTIwLjEtOS42LTE5LjYtOC40LjctOS44IDIxLjItMS44IDI4LjEgMSAuOCAxLjktLjItNS45IDUuNS0xNS42LTE0LjYtMTAuNS01Mi4xIDguNC01Mi4xem0tMTMuNiA2MC43YzYuMi00LjYgMTMuNi0xMCAxNC4xLTEwLjUgNC43LTQuNCAxMy41LTE0LjIgMjcuOS0xNC4yIDcuMSAwIDE1LjYgMi4zIDI1LjkgOC45IDYuMyA0LjEgMTEuMyA0LjQgMjIuNiA5LjMgOC40IDMuNSAxMy43IDkuNyAxMC41IDE4LjItMi42IDcuMS0xMSAxNC40LTIyLjcgMTguMS0xMS4xIDMuNi0xOS44IDE2LTM4LjIgMTQuOS0zLjktLjItNy0xLTkuNi0yLjEtOC0zLjUtMTIuMi0xMC40LTIwLTE1LTguNi00LjgtMTMuMi0xMC40LTE0LjctMTUuMy0xLjQtNC45IDAtOSA0LjItMTIuM3ptMy4zIDMzNGMtMi43IDM1LjEtNDMuOSAzNC40LTc1LjMgMTgtMjkuOS0xNS44LTY4LjYtNi41LTc2LjUtMjEuOS0yLjQtNC43LTIuNC0xMi43IDIuNi0yNi40di0uMmMyLjQtNy42LjYtMTYtLjYtMjMuOS0xLjItNy44LTEuOC0xNSAuOS0yMCAzLjUtNi43IDguNS05LjEgMTQuOC0xMS4zIDEwLjMtMy43IDExLjgtMy40IDE5LjYtOS45IDUuNS01LjcgOS41LTEyLjkgMTQuMy0xOCA1LjEtNS41IDEwLTguMSAxNy43LTYuOSA4LjEgMS4yIDE1LjEgNi44IDIxLjkgMTZsMTkuNiAzNS42YzkuNSAxOS45IDQzLjEgNDguNCA0MSA2OC45em0tMS40LTI1LjljLTQuMS02LjYtOS42LTEzLjYtMTQuNC0xOS42IDcuMSAwIDE0LjItMi4yIDE2LjctOC45IDIuMy02LjIgMC0xNC45LTcuNC0yNC45LTEzLjUtMTguMi0zOC4zLTMyLjUtMzguMy0zMi41LTEzLjUtOC40LTIxLjEtMTguNy0yNC42LTI5LjlzLTMtMjMuMy0uMy0zNS4yYzUuMi0yMi45IDE4LjYtNDUuMiAyNy4yLTU5LjIgMi4zLTEuNy44IDMuMi04LjcgMjAuOC04LjUgMTYuMS0yNC40IDUzLjMtMi42IDgyLjQuNi0yMC43IDUuNS00MS44IDEzLjgtNjEuNSAxMi0yNy40IDM3LjMtNzQuOSAzOS4zLTExMi43IDEuMS44IDQuNiAzLjIgNi4yIDQuMSA0LjYgMi43IDguMSA2LjcgMTIuNiAxMC4zIDEyLjQgMTAgMjguNSA5LjIgNDIuNCAxLjIgNi4yLTMuNSAxMS4yLTcuNSAxNS45LTkgOS45LTMuMSAxNy44LTguNiAyMi4zLTE1IDcuNyAzMC40IDI1LjcgNzQuMyAzNy4yIDk1LjcgNi4xIDExLjQgMTguMyAzNS41IDIzLjYgNjQuNiAzLjMtLjEgNyAuNCAxMC45IDEuNCAxMy44LTM1LjctMTEuNy03NC4yLTIzLjMtODQuOS00LjctNC42LTQuOS02LjYtMi42LTYuNSAxMi42IDExLjIgMjkuMiAzMy43IDM1LjIgNTkgMi44IDExLjYgMy4zIDIzLjcuNCAzNS43IDE2LjQgNi44IDM1LjkgMTcuOSAzMC43IDM0LjgtMi4yLS4xLTMuMiAwLTQuMiAwIDMuMi0xMC4xLTMuOS0xNy42LTIyLjgtMjYuMS0xOS42LTguNi0zNi04LjYtMzguMyAxMi41LTEyLjEgNC4yLTE4LjMgMTQuNy0yMS40IDI3LjMtMi44IDExLjItMy42IDI0LjctNC40IDM5LjktLjUgNy43LTMuNiAxOC02LjggMjktMzIuMSAyMi45LTc2LjcgMzIuOS0xMTQuMyA3LjJ6bTI1Ny40LTExLjVjLS45IDE2LjgtNDEuMiAxOS45LTYzLjIgNDYuNS0xMy4yIDE1LjctMjkuNCAyNC40LTQzLjYgMjUuNXMtMjYuNS00LjgtMzMuNy0xOS4zYy00LjctMTEuMS0yLjQtMjMuMSAxLjEtMzYuMyAzLjctMTQuMiA5LjItMjguOCA5LjktNDAuNi44LTE1LjIgMS43LTI4LjUgNC4yLTM4LjcgMi42LTEwLjMgNi42LTE3LjIgMTMuNy0yMS4xLjMtLjIuNy0uMyAxLS41LjggMTMuMiA3LjMgMjYuNiAxOC44IDI5LjUgMTIuNiAzLjMgMzAuNy03LjUgMzguNC0xNi4zIDktLjMgMTUuNy0uOSAyMi42IDUuMSA5LjkgOC41IDcuMSAzMC4zIDE3LjEgNDEuNiAxMC42IDExLjYgMTQgMTkuNSAxMy43IDI0LjZ6TTE3My4zIDE0OC43YzIgMS45IDQuNyA0LjUgOCA3LjEgNi42IDUuMiAxNS44IDEwLjYgMjcuMyAxMC42IDExLjYgMCAyMi41LTUuOSAzMS44LTEwLjggNC45LTIuNiAxMC45LTcgMTQuOC0xMC40czUuOS02LjMgMy4xLTYuNi0yLjYgMi42LTYgNS4xYy00LjQgMy4yLTkuNyA3LjQtMTMuOSA5LjgtNy40IDQuMi0xOS41IDEwLjItMjkuOSAxMC4ycy0xOC43LTQuOC0yNC45LTkuN2MtMy4xLTIuNS01LjctNS03LjctNi45LTEuNS0xLjQtMS45LTQuNi00LjMtNC45LTEuNC0uMS0xLjggMy43IDEuNyA2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUx5ZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4MS4xaDc3Ljh2MjA4LjdjMCAzMy4xIDE1IDUyLjggMjcuMiA2MS0xMi43IDExLjEtNTEuMiAyMC45LTgwLjItMi44QzcuOCAzMzQgMCAzMTAuNyAwIDI4OVY4MS4xem00ODUuOSAxNzMuNXYtMjJoMjMuOHYtNzYuOGgtMjYuMWMtMTAuMS00Ni4zLTUxLjItODAuNy0xMDAuMy04MC43LTU2LjYgMC0xMDIuNyA0Ni0xMDIuNyAxMDIuN1YzNTdjMTYgMi4zIDM1LjQtLjMgNTEuNy0xNCAxNy4xLTE0IDI0LjgtMzcuMiAyNC44LTU5di02LjdoMzguOHYtNzYuOGgtMzguOHYtMjMuM2MwLTM0LjYgNTIuMi0zNC42IDUyLjIgMHY3Ny4xYzAgNTYuNiA0NiAxMDIuNyAxMDIuNyAxMDIuN3YtNzYuNWMtMTQuNSAwLTI2LjEtMTEuNy0yNi4xLTI1Ljl6bS0yOTQuMy05OXYxMTNjMCAxNS40LTIzLjggMTUuNC0yMy44IDB2LTExM0g5MXYxMzIuN2MwIDIzLjggOCA1NCA0NSA2My45IDM3IDkuOCA1OC4yLTEwLjYgNTguMi0xMC42LTIuMSAxMy40LTE0LjUgMjMuMy0zNC45IDI1LjMtMTUuNSAxLjYtMzUuMi0zLjYtNDUtNy44djcwLjNjMjUuMSA3LjUgNTEuNSA5LjggNzcuNiA0LjcgNDcuMS05LjEgNzYuOC00OC40IDc2LjgtMTAwLjhWMTU1LjFoLTc3LjF2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hZ2VudG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ1LjcgMTI3LjlWMzg0bC02My40IDM2LjVWMTY0LjdMMjIzLjggNzMuMSA2NS4yIDE2NC43bC40IDI1NS45TDIuMyAzODRWMTI4LjFMMjI0LjIgMGwyMjEuNSAxMjcuOXpNMjU1LjYgNDIwLjVMMjI0IDQzOC45bC0zMS44LTE4LjJ2LTI1NmwtNjMuMyAzNi42LjEgMjU1LjkgOTQuOSA1NC45IDk1LjEtNTQuOXYtMjU2bC02My40LTM2LjZ2MjU1Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1haWxjaGltcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzAuNjEgMjQzLjUyYTM2LjE1IDM2LjE1IDAgMCAxIDkuMyAwYzEuNjYtMy44MyAxLjk1LTEwLjQzLjQ1LTE3LjYxLTIuMjMtMTAuNjctNS4yNS0xNy4xNC0xMS40OC0xNi4xM3MtNi40NyA4Ljc0LTQuMjQgMTkuNDJjMS4yNiA2IDMuNDkgMTEuMTQgNiAxNC4zMnpNMjc3LjA1IDI1MmM0LjQ3IDIgNy4yIDMuMjYgOC4yOCAyLjEzIDEuODktMS45NC0zLjQ4LTkuMzktMTIuMTItMTMuMDlhMzEuNDQgMzEuNDQgMCAwIDAtMzAuNjEgMy42OGMtMyAyLjE4LTUuODEgNS4yMi01LjQxIDcuMDYuODUgMy43NCAxMC0yLjcxIDIyLjYtMy40OCA3LS40NCAxMi44IDEuNzUgMTcuMjYgMy43MXptLTkgNS4xM2MtOS4wNyAxLjQyLTE1IDYuNTMtMTMuNDcgMTAuMS45LjM0IDEuMTcuODEgNS4yMS0uODFhMzcgMzcgMCAwIDEgMTguNzItMS45NWMyLjkyLjM0IDQuMzEuNTIgNC45NC0uNDkgMS40Ni0yLjIyLTUuNzEtOC0xNS4zOS02Ljg1em01NC4xNyAxNy4xYzMuMzgtNi44Ny0xMC45LTEzLjkzLTE0LjMtN3MxMC45MiAxMy44OCAxNC4zMiA2Ljk3em0xNS42Ni0yMC40N2MtNy42Ni0uMTMtNy45NSAxNS44LS4yNiAxNS45M3M3Ljk4LTE1LjgxLjI4LTE1Ljk2em0tMjE4Ljc5IDc4LjljLTEuMzIuMzEtNiAxLjQ1LTguNDctMi4zNS01LjItOCAxMS4xMS0yMC4zOCAzLTM1Ljc3LTkuMS0xNy40Ny0yNy44Mi0xMy41NC0zNS4wNS01LjU0LTguNzEgOS42LTguNzIgMjMuNTQtNSAyNC4wOCA0LjI3LjU3IDQuMDgtNi40NyA3LjM4LTExLjYzYTEyLjgzIDEyLjgzIDAgMCAxIDE3Ljg1LTMuNzJjMTEuNTkgNy41OSAxLjM3IDE3Ljc2IDIuMjggMjguNjIgMS4zOSAxNi42OCAxOC40MiAxNi4zNyAyMS41OCA5YTIuMDggMi4wOCAwIDAgMC0uMi0yLjMzYy4wMy44OS42OC0xLjMtMy4zNS0uMzl6bTI5OS43Mi0xNy4wN2MtMy4zNS0xMS43My0yLjU3LTkuMjItNi43OC0yMC41MiAyLjQ1LTMuNjcgMTUuMjktMjQtMy4wNy00My4yNS0xMC40LTEwLjkyLTMzLjktMTYuNTQtNDEuMS0xOC41NC0xLjUtMTEuMzkgNC42NS01OC43LTIxLjUyLTgzIDIwLjc5LTIxLjU1IDMzLjc2LTQ1LjI5IDMzLjczLTY1LjY1LS4wNi0zOS4xNi00OC4xNS01MS0xMDcuNDItMjYuNDdsLTEyLjU1IDUuMzNjLS4wNi0uMDUtMjIuNzEtMjIuMjctMjMuMDUtMjIuNTdDMTY5LjUtMTgtNDEuNzcgMjE2LjgxIDI1Ljc4IDI3My44NWwxNC43NiAxMi41MWE3Mi40OSA3Mi40OSAwIDAgMC00LjEgMzMuNWMzLjM2IDMzLjQgMzYgNjAuNDIgNjcuNTMgNjAuMzggNTcuNzMgMTMzLjA2IDI2Ny45IDEzMy4yOCAzMjIuMjkgMyAxLjc0LTQuNDcgOS4xMS0yNC42MSA5LjExLTQyLjM4cy0xMC4wOS0yNS4yNy0xNi41My0yNS4yN3ptLTMxNiA0OC4xNmMtMjIuODItLjYxLTQ3LjQ2LTIxLjE1LTQ5LjkxLTQ1LjUxLTYuMTctNjEuMzEgNzQuMjYtNzUuMjcgODQtMTIuMzMgNC41NCAyOS42NC00LjY3IDU4LjQ5LTM0LjEyIDU3Ljgxek04NC4zIDI0OS41NUM2OS4xNCAyNTIuNSA1NS43OCAyNjEuMDkgNDcuNiAyNzNjLTQuODgtNC4wNy0xNC0xMi0xNS41OS0xNS0xMy4wMS0yNC44NSAxNC4yNC03MyAzMy4zLTEwMC4yMUMxMTIuNDIgOTAuNTYgMTg2LjE5IDM5LjY4IDIyMC4zNiA0OC45MWM1LjU1IDEuNTcgMjMuOTQgMjIuODkgMjMuOTQgMjIuODlzLTM0LjE1IDE4Ljk0LTY1LjggNDUuMzVjLTQyLjY2IDMyLjg1LTc0Ljg5IDgwLjU5LTk0LjIgMTMyLjR6TTMyMy4xOCAzNTAuN3MtMzUuNzQgNS4zLTY5LjUxLTcuMDdjNi4yMS0yMC4xNiAyNyA2LjEgOTYuNC0xMy44MSAxNS4yOS00LjM4IDM1LjM3LTEzIDUxLTI1LjM1YTEwMi44NSAxMDIuODUgMCAwIDEgNy4xMiAyNC4yOGMzLjY2LS42NiAxNC4yNS0uNTIgMTEuNDQgMTguMS0zLjI5IDE5Ljg3LTExLjczIDM2LTI1LjkzIDUwLjg0QTEwNi44NiAxMDYuODYgMCAwIDEgMzYyLjU1IDQyMWExMzIuNDUgMTMyLjQ1IDAgMCAxLTIwLjM0IDguNThjLTUzLjUxIDE3LjQ4LTEwOC4zLTEuNzQtMTI2LTQzYTY2LjMzIDY2LjMzIDAgMCAxLTMuNTUtOS43NGMtNy41My0yNy4yLTEuMTQtNTkuODMgMTguODQtODAuMzcgMS4yMy0xLjMxIDIuNDgtMi44NSAyLjQ4LTQuNzlhOC40NSA4LjQ1IDAgMCAwLTEuOTItNC41NGMtNy0xMC4xMy0zMS4xOS0yNy40LTI2LjMzLTYwLjgzIDMuNS0yNCAyNC40OS00MC45MSA0NC4wNy0zOS45MWw1IC4yOWM4LjQ4LjUgMTUuODkgMS41OSAyMi44OCAxLjg4IDExLjY5LjUgMjIuMi0xLjE5IDM0LjY0LTExLjU2IDQuMi0zLjUgNy41Ny02LjU0IDEzLjI2LTcuNTFhMTcuNDUgMTcuNDUgMCAwIDEgMTMuNiAyLjI0YzEwIDYuNjQgMTEuNCAyMi43MyAxMS45MiAzNC40OS4yOSA2LjcyIDEuMSAyMyAxLjM4IDI3LjYzLjYzIDEwLjY3IDMuNDMgMTIuMTcgOS4xMSAxNCAzLjE5IDEuMDUgNi4xNSAxLjgzIDEwLjUxIDMuMDYgMTMuMjEgMy43MSAyMSA3LjQ4IDI2IDEyLjMxYTE2LjM4IDE2LjM4IDAgMCAxIDQuNzQgOS4yOWMxLjU2IDExLjM3LTguODIgMjUuNC0zNi4zMSAzOC4xNi00Ni43MSAyMS42OC05My42OCAxNC40NS0xMDAuNDggMTMuNjgtMjAuMTUtMi43MS0zMS42MyAyMy4zMi0xOS41NSA0MS4xNSAyMi42NCAzMy40MSAxMjIuNCAyMCAxNTEuMzctMjEuMzUuNjktMSAuMTItMS41OS0uNzMtMS00MS43NyAyOC41OC05Ny4wNiAzOC4yMS0xMjguNDYgMjYtNC43Ny0xLjg1LTE0LjczLTYuNDQtMTUuOTQtMTYuNjcgNDMuNiAxMy40OSA3MSAuNzQgNzEgLjc0czIuMDMtMi43OS0uNTYtMi41M3ptLTY4LjQ3LTUuN3ptLTgzLjQtMTg3LjVjMTYuNzQtMTkuMzUgMzcuMzYtMzYuMTggNTUuODMtNDUuNjNhLjczLjczIDAgMCAxIDEgMWMtMS40NiAyLjY2LTQuMjkgOC4zNC01LjE5IDEyLjY1YS43NS43NSAwIDAgMCAxLjE2Ljc5YzExLjQ5LTcuODMgMzEuNDgtMTYuMjIgNDktMTcuM2EuNzcuNzcgMCAwIDEgLjUyIDEuMzggNDEuODYgNDEuODYgMCAwIDAtNy43MSA3Ljc0Ljc1Ljc1IDAgMCAwIC41OSAxLjE5YzEyLjMxLjA5IDI5LjY2IDQuNCA0MSAxMC43NC43Ni40My4yMiAxLjkxLS42NCAxLjcyLTY5LjU1LTE1Ljk0LTEyMy4wOCAxOC41My0xMzQuNSAyNi44M2EuNzYuNzYgMCAwIDEtMS0xLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYW5kYWxvcmlhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzIuMjcgNTExLjg5Yy0xLTMuMjYtMS42OS0xNS44My0xLjM5LTI0LjU4LjU1LTE1Ljg5IDEtMjQuNzIgMS40LTI4Ljc2LjY0LTYuMiAyLjg3LTIwLjcyIDMuMjgtMjEuMzguNi0xIC40LTI3Ljg3LS4yNC0zMy4xMy0uMzEtMi41OC0uNjMtMTEuOS0uNjktMjAuNzMtLjEzLTE2LjQ3LS41My0yMC4xMi0yLjczLTI0Ljc2LTEuMS0yLjMyLTEuMjMtMy44NC0xLTExLjQzYTkyLjM4IDkyLjM4IDAgMCAwLS4zNC0xMi43MWMtMi0xMy0zLjQ2LTI3LjctMy4yNS0zMy45cy40My03LjE1IDIuMDYtOS42N2MzLjA1LTQuNzEgNi41MS0xNCA4LjYyLTIzLjI3IDIuMjYtOS44NiAzLjg4LTE3LjE4IDQuNTktMjAuNzRhMTA5LjU0IDEwOS41NCAwIDAgMSA0LjQyLTE1LjA1YzIuMjctNi4yNSAyLjQ5LTE1LjM5LjM3LTE1LjM5LS4zIDAtMS4zOCAxLjIyLTIuNDEgMi43MXMtNC43NiA0LjgtOC4yOSA3LjM2Yy04LjM3IDYuMDgtMTEuNyA5LjM5LTEyLjY2IDEyLjU4cy0xIDcuMjMtLjE2IDcuNzZjLjM0LjIxIDEuMjkgMi40IDIuMTEgNC44OGEyOC44MyAyOC44MyAwIDAgMSAuNzIgMTUuMzZjLS4zOSAxLjc3LTEgNS40Ny0xLjQ2IDguMjNzLTEgNi40Ni0xLjI1IDguMjJhOS44NSA5Ljg1IDAgMCAxLTEuNTUgNC4yNmMtMSAxLTEuMTQuOTEtMi4wNS0uNTNhMTQuODcgMTQuODcgMCAwIDEtMS40NC00Ljc1Yy0uMjUtMS43NC0xLjYzLTcuMTEtMy4wOC0xMS45My0zLjI4LTEwLjktMy41Mi0xNi4xNS0xLTIxYTE0LjI0IDE0LjI0IDAgMCAwIDEuNjctNC42MWMwLTIuMzktMi4yLTUuMzItNy40MS05Ljg5LTctNi4xOC04LjYzLTcuOTItMTAuMjMtMTEuMy0xLjcxLTMuNi0zLjA2LTQuMDYtNC41NC0xLjU0LTEuNzggMy0yLjYgOS4xMS0zIDIybC0uMzQgMTIuMTkgMiAyLjI1YzMuMjEgMy43IDEyLjA3IDE2LjQ1IDEzLjc4IDE5LjgzIDMuNDEgNi43NCA0LjM0IDExLjY5IDQuNDEgMjMuNTZzLjk1IDIyLjc1IDIgMjQuNzFjLjM2LjY2LjUxIDEuMzUuMzQgMS41MnMuNDEgMi4wOSAxLjI5IDQuMjdhMzguMTQgMzguMTQgMCAwIDEgMi4wNiA5IDkxIDkxIDAgMCAwIDEuNzEgMTAuMzdjMi4yMyA5LjU2IDIuNzcgMTQuMDggMi4zOSAyMC4xNC0uMiAzLjI3LS41MyAxMS4wNy0uNzMgMTcuMzItMS4zMSA0MS43Ni0xLjg1IDU4LTIgNjEuMjEtLjEyIDItLjM5IDExLjUxLS42IDIxLjA3LS4zNiAxNi4zLTEuMyAyNy4zNy0yLjQyIDI4LjY1LS42NC43My04LjA3LTQuOTEtMTIuNTItOS40OS0zLjc1LTMuODctNC00Ljc5LTIuODMtOS45NS43LTMgMi4yNi0xOC4yOSAzLjMzLTMyLjYyLjM2LTQuNzguODEtMTAuNSAxLTEyLjcxLjgzLTkuMzcgMS42Ni0yMC4zNSAyLjYxLTM0Ljc4LjU2LTguNDYgMS4zMy0xNi40NCAxLjcyLTE3Ljczcy44OS05Ljg5IDEuMTMtMTkuMTFsLjQzLTE2Ljc3LTIuMjYtNC4zYy0xLjcyLTMuMjgtNC44Ny02Ljk0LTEzLjIyLTE1LjM0LTYtNi4wNy0xMS44NC0xMi4zLTEyLjkxLTEzLjg1bC0xLjk1LTIuODEuNzUtMTAuOWMxLjA5LTE1LjcxIDEuMS00OC41NyAwLTU5LjA2bC0uODktOC43LTMuMjgtNC41MmMtNS44Ni04LjA4LTUuOC03Ljc1LTYuMjItMzMuMjctLjEtNi4wNy0uMzgtMTEuNS0uNjMtMTIuMDYtLjgzLTEuODctMy4wNS0yLjY2LTguNTQtMy4wNS04Ljg2LS42Mi0xMS0xLjktMjMuODUtMTQuNTUtNi4xNS02LTEyLjM0LTEyLTEzLjc1LTEzLjE5LTIuODEtMi40Mi0yLjc5LTItLjU2LTkuNjNsMS4zNS00LjY1LTEuNjktM2EzMi4yMiAzMi4yMiAwIDAgMC0yLjU5LTQuMDdjLTEuMzMtMS41MS01LjUtMTAuODktNi0xMy40OWE0LjI0IDQuMjQgMCAwIDEgLjg3LTMuOWMyLjIzLTIuODYgMy40LTUuNjggNC40NS0xMC43MyAyLjMzLTExLjE5IDcuNzQtMjYuMDkgMTAuNi0yOS4yMiAzLjE4LTMuNDcgNy43LTEgOS40MSA1IDEuMzQgNC43OSAxLjM3IDkuNzkuMSAxOC41NWExMDEuMiAxMDEuMiAwIDAgMC0xIDExLjExYzAgNCAuMTkgNC42OSAyLjI1IDcuMzkgMy4zMyA0LjM3IDcuNzMgNy40MSAxNS4yIDEwLjUyYTE4LjY3IDE4LjY3IDAgMCAxIDQuNzIgMi44NWMxMS4xNyAxMC43MiAxOC42MiAxNi4xOCAyMi45NSAxNi44NSA1LjE4LjggOCA0LjU0IDEwIDEzLjM5IDEuMzEgNS42NSA0IDExLjE0IDUuNDYgMTEuMTRhOS4zOCA5LjM4IDAgMCAwIDMuMzMtMS4zOWMyLTEuMjIgMi4yNS0xLjczIDIuMjUtNC4xOGExMzIuODggMTMyLjg4IDAgMCAwLTItMTcuODRjLS4zNy0xLjY2LS43OC00LjA2LS45My01LjM1cy0uNjEtMy44NS0xLTUuNjljLTIuNTUtMTEuMTYtMy42NS0xNS40Ni00LjEtMTYtMS41NS0yLTQuMDgtMTAuMi00LjkzLTE1LjkyLTEuNjQtMTEuMTEtNC0xNC4yMy0xMi45MS0xNy4zOUE0My4xNSA0My4xNSAwIDAgMSAxNjUuMjQgNzhjLTEuMTUtMS00LTMuMjItNi4zNS01LjA2cy00LjQxLTMuNTMtNC42LTMuNzZhMjIuNyAyMi43IDAgMCAwLTIuNjktMmMtNi4yNC00LjIyLTguODQtNy0xMS4yNi0xMmwtMi40NC01LS4yMi0xMy0uMjItMTMgNi45MS02LjU1YzMuOTUtMy43NSA4LjQ4LTcuMzUgMTAuNTktOC40MyAzLjMxLTEuNjkgNC40NS0xLjg5IDExLjM3LTIgOC41My0uMTkgMTAuMTIgMCAxMS42NiAxLjU2czEuMzYgNi40LS4yOSA4LjVhNi42NiA2LjY2IDAgMCAwLTEuMzQgMi4zMmMwIC41OC0yLjYxIDQuOTEtNS40MiA5YTMwLjM5IDMwLjM5IDAgMCAwLTIuMzcgNi44MmMyMC40NCAxMy4zOSAyMS41NSAzLjc3IDE0LjA3IDI5TDE5NCA2Ni45MmMzLjExLTguNjYgNi40Ny0xNy4yNiA4LjYxLTI2LjIyLjI5LTcuNjMtMTItNC4xOS0xNS40LTguNjgtMi4zMy01LjkzIDMuMTMtMTQuMTggNi4wNi0xOS4yIDEuNi0yLjM0IDYuNjItNC43IDguODItNC4xNS44OC4yMiA0LjE2LS4zNSA3LjM3LTEuMjhhNDUuMyA0NS4zIDAgMCAxIDcuNTUtMS42OCAyOS41NyAyOS41NyAwIDAgMCA2LTEuMjljMy42NS0xLjExIDQuNS0xLjE3IDYuMzUtLjRhMjkuNTQgMjkuNTQgMCAwIDAgNS44MiAxLjM2IDE4LjE4IDE4LjE4IDAgMCAxIDYgMS45MSAyMi42NyAyMi42NyAwIDAgMCA1IDIuMTdjMi41MS42OCAzIC41NyA3LjA1LTEuNjdsNC4zNS0yLjRMMjY4LjMyIDVjMTAuNDQtLjQgMTAuODEtLjQ3IDE1LjI2LTIuNjhMMjg4LjE2IDBsMi40NiAxLjQzYzEuNzYgMSAzLjE0IDIuNzMgNC44NSA2IDIuMzYgNC41MSAyLjM4IDQuNTggMS4zNyA3LjM3LS44OCAyLjQ0LS44OSAzLjMtLjEgNi4zOWEzNS43NiAzNS43NiAwIDAgMCAyLjEgNS45MSAxMy41NSAxMy41NSAwIDAgMSAxLjMxIDRjLjMxIDQuMzMgMCA1LjMtMi40MSA2LjkyLTIuMTcgMS40Ny03IDcuOTEtNyA5LjM0YTE0Ljc3IDE0Ljc3IDAgMCAxLTEuMDcgM2MtNSAxMS41MS02Ljc2IDEzLjU2LTE0LjI2IDE3LTkuMiA0LjItMTIuMyA1LjE5LTE2LjIxIDUuMTktMy4xIDAtNCAuMjUtNC41NCAxLjI2YTE4LjMzIDE4LjMzIDAgMCAxLTQuMDkgMy43MSAxMy42MiAxMy42MiAwIDAgMC00LjM4IDQuNzggNS44OSA1Ljg5IDAgMCAxLTIuNDkgMi45MSA2Ljg4IDYuODggMCAwIDAtMi40NSAxLjcxIDY3LjYyIDY3LjYyIDAgMCAxLTcgNS4zOGMtMy4zMyAyLjM0LTYuODcgNS03Ljg3IDZBNy4yNyA3LjI3IDAgMCAxIDIyNCAxMDBhNS43NiA1Ljc2IDAgMCAwLTIuMTMgMS42NWMtMS4zMSAxLjM5LTEuNDkgMi4xMS0xLjE0IDQuNmEzNi40NSAzNi40NSAwIDAgMCAxLjQyIDUuODhjMS4zMiAzLjggMS4zMSA3Ljg2IDAgMTAuNTdzLS44OSA2LjY1IDEuMzUgOS41OWMyIDIuNjMgMi4xNiA0LjU2LjcxIDguODRhMzMuNDUgMzMuNDUgMCAwIDAtMS4wNiA4LjkxYzAgNC44OC4yMiA2LjI4IDEuNDYgOC4zOHMxLjgyIDIuNDggMy4yNCAyLjMyYzItLjIzIDIuMy0xLjA1IDQuNzEtMTIuMTIgMi4xOC0xMCAzLjcxLTExLjkyIDEzLjc2LTE3LjA4IDIuOTQtMS41MSA3LjQ2LTQgMTAtNS40NHM2Ljc5LTMuNjkgOS4zNy00LjkxYTQwLjA5IDQwLjA5IDAgMCAwIDE1LjIyLTExLjY3YzcuMTEtOC43OSAxMC0xNi4yMiAxMi44NS0zMy4zYTE4LjM3IDE4LjM3IDAgMCAxIDIuODYtNy43MyAyMC4zOSAyMC4zOSAwIDAgMCAyLjg5LTcuMzFjMS01LjMgMi44NS05LjA4IDUuNTgtMTEuNTEgNC43LTQuMTggNi0xLjA5IDQuNTkgMTAuODctLjQ2IDMuODYtMS4xIDEwLjMzLTEuNDQgMTQuMzhsLS42MSA3LjM2IDQuNDUgNC4wOSA0LjQ1IDQuMDkuMTEgOC40MmMuMDYgNC42My40NyA5LjUzLjkyIDEwLjg5bC44MiAyLjQ3LTYuNDMgNi4yOGMtOC41NCA4LjMzLTEyLjg4IDEzLjkzLTE2Ljc2IDIxLjYxLTEuNzcgMy40OS0zLjc0IDcuMTEtNC4zOCA4LTIuMTggMy4xMS02LjQ2IDEzLTguNzYgMjAuMjZsLTIuMjkgNy4yMi03IDYuNDljLTMuODMgMy41Ny04IDcuMjUtOS4xNyA4LjE3LTMuMDUgMi4zMi00LjI2IDUuMTUtNC4yNiAxMGExNC42MiAxNC42MiAwIDAgMCAxLjU5IDcuMjYgNDIgNDIgMCAwIDEgMi4wOSA0LjgzIDkuMjggOS4yOCAwIDAgMCAxLjU3IDIuODljMS40IDEuNTkgMS45MiAxNi4xMi44MyAyMy4yMi0uNjggNC40OC0zLjYzIDEyLTQuNyAxMi0xLjc5IDAtNC4wNiA5LjI3LTUuMDcgMjAuNzQtLjE4IDItLjYyIDUuOTQtMSA4LjdzLTEgMTAtMS4zNSAxNi4wNWMtLjc3IDEyLjIyLS4xOSAxOC43NyAyIDIzLjE1IDMuNDEgNi42OS41MiAxMi42OS0xMSAyMi44NGwtNCAzLjQ5LjA3IDUuMTlhNDAuODEgNDAuODEgMCAwIDAgMS4xNCA4Ljg3YzQuNjEgMTYgNC43MyAxNi45MiA0LjM4IDM3LjEzLS40NiAyNi40LS4yNiA0MC4yNy42MyA0NC4xNWE2MS4zMSA2MS4zMSAwIDAgMSAxLjA4IDdjLjE3IDIgLjY2IDUuMzMgMS4wOCA3LjM2LjQ3IDIuMjYuNzggMTEgLjc5IDIyLjc0djE5LjA2bC0xLjgxIDIuNjNjLTIuNzEgMy45MS0xNS4xMSAxMy41NC0xNS40OSAxMi4yOXptMjkuNTMtNDUuMTFjLS4xOC0uMy0uMzMtNi44Ny0uMzMtMTQuNTkgMC0xNC4wNi0uODktMjcuNTQtMi4yNi0zNC40NS0uNC0yLS44MS05LjctLjktMTcuMDYtLjE1LTExLjkzLTEuNC0yNC4zNy0yLjY0LTI2LjM4LS42Ni0xLjA3LTMtMTcuNjYtMy0yMS4zIDAtNC4yMyAxLTYgNS4yOC05LjEzczQuODYtMy4xNCA1LjQ4LS43MmMuMjggMS4xIDEuNDUgNS42MiAyLjYgMTAgMy45MyAxNS4xMiA0LjE0IDE2LjI3IDQuMDUgMjEuNzQtLjEgNS43OC0uMTMgNi4xMy0xLjc0IDE3LjczLTEgNy4wNy0xLjE3IDEyLjM5LTEgMjguNDMuMTcgMTkuNC0uNjQgMzUuNzMtMiA0MS4yNy0uNzEgMi43OC0yLjggNS40OC0zLjQzIDQuNDN6bS03MS0zNy41OGExMDEgMTAxIDAgMCAxLTEuNzMtMTAuNzkgMTAwLjUgMTAwLjUgMCAwIDAtMS43My0xMC43OSAzNy41MyAzNy41MyAwIDAgMS0xLTYuNDljLS4zMS0zLjE5LS45MS03LjQ2LTEuMzMtOS40OC0xLTQuNzktMy4zNS0xOS4zNS0zLjQyLTIxLjA3IDAtLjc0LS4zNC00LjA1LS43LTcuMzYtLjY3LTYuMjEtLjg0LTI3LjY3LS4yMi0yOC4yOSAxLTEgNi42MyAyLjc2IDExLjMzIDcuNDNsNS4yOCA1LjI1LS40NSA2LjQ3Yy0uMjUgMy41Ni0uNiAxMC4yMy0uNzggMTQuODNzLS40OSA5Ljg3LS42NyAxMS43MS0uNjEgOS4zNi0uOTQgMTYuNzJjLS43OSAxNy40MS0xLjk0IDMxLjI5LTIuNjUgMzJhLjYyLjYyIDAgMCAxLTEtLjE0em0tODcuMTgtMjY2LjU5YzIxLjA3IDEyLjc5IDE3Ljg0IDE0LjE1IDI4LjQ5IDE3LjY2IDEzIDQuMjkgMTguODcgNy4xMyAyMy4xNSAxNi44N0MxMTEuNiAyMzMuMjggODYuMjUgMjU1IDc4LjU1IDI2OGMtMzEgNTItNiAxMDEuNTkgNjIuNzUgODcuMjEtMTQuMTggMjkuMjMtNzggMjguNjMtOTguNjgtNC45LTI0LjY4LTM5Ljk1LTIyLjA5LTExOC4zIDYxLTE4Ny42NnptMjEwLjc5IDE3OWM1Ni42NiA2Ljg4IDgyLjMyLTM3Ljc0IDQ2LjU0LTg5LjIzIDAgMC0yNi44Ny0yOS4zNC02NC4yOC02OCAzLTE1LjQ1IDkuNDktMzIuMTIgMzAuNTctNTMuODIgODkuMiA2My41MSA5MiAxNDEuNjEgOTIuNDYgMTQ5LjM2IDQuMyA3MC42NC03OC43IDkxLjE4LTEwNS4yOSA2MS43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFya2Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTkzLjggNTkuMUg0Ni4yQzIwLjcgNTkuMSAwIDc5LjggMCAxMDUuMnYzMDEuNWMwIDI1LjUgMjAuNyA0Ni4yIDQ2LjIgNDYuMmg1NDcuN2MyNS41IDAgNDYuMi0yMC43IDQ2LjEtNDYuMVYxMDUuMmMwLTI1LjQtMjAuNy00Ni4xLTQ2LjItNDYuMXpNMzM4LjUgMzYwLjZIMjc3di0xMjBsLTYxLjUgNzYuOS02MS41LTc2Ljl2MTIwSDkyLjNWMTUxLjRoNjEuNWw2MS41IDc2LjkgNjEuNS03Ni45aDYxLjV2MjA5LjJ6bTEzNS4zIDMuMUwzODEuNSAyNTZINDQzVjE1MS40aDYxLjVWMjU2SDU2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFzdG9kb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMzIDE3OS4xMWMwLTk3LjItNjMuNzEtMTI1LjctNjMuNzEtMTI1LjctNjIuNTItMjguNy0yMjguNTYtMjguNC0yOTAuNDggMCAwIDAtNjMuNzIgMjguNS02My43MiAxMjUuNyAwIDExNS43LTYuNiAyNTkuNCAxMDUuNjMgMjg5LjEgNDAuNTEgMTAuNyA3NS4zMiAxMyAxMDMuMzMgMTEuNCA1MC44MS0yLjggNzkuMzItMTguMSA3OS4zMi0xOC4xbC0xLjctMzYuOXMtMzYuMzEgMTEuNC03Ny4xMiAxMC4xYy00MC40MS0xLjQtODMtNC40LTg5LjYzLTU0YTEwMi41NCAxMDIuNTQgMCAwIDEtLjktMTMuOWM4NS42MyAyMC45IDE1OC42NSA5LjEgMTc4Ljc1IDYuNyA1Ni4xMi02LjcgMTA1LTQxLjMgMTExLjIzLTcyLjkgOS44LTQ5LjggOS0xMjEuNSA5LTEyMS41em0tNzUuMTIgMTI1LjJoLTQ2LjYzdi0xMTQuMmMwLTQ5LjctNjQtNTEuNi02NCA2Ljl2NjIuNWgtNDYuMzNWMTk3YzAtNTguNS02NC01Ni42LTY0LTYuOXYxMTQuMkg5MC4xOWMwLTEyMi4xLTUuMi0xNDcuOSAxOC40MS0xNzUgMjUuOS0yOC45IDc5LjgyLTMwLjggMTAzLjgzIDYuMWwxMS42IDE5LjUgMTEuNi0xOS41YzI0LjExLTM3LjEgNzguMTItMzQuOCAxMDMuODMtNi4xIDIzLjcxIDI3LjMgMTguNCA1MyAxOC40IDE3NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWF4Y2RuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2MS4xIDQ0Mi43aC05Ny40TDQxNS42IDIwMGMyLjMtMTAuMi45LTE5LjUtNC40LTI1LjctNS02LjEtMTMuNy05LjYtMjQuMi05LjZoLTQ5LjNsLTU5LjUgMjc4aC05Ny40bDU5LjUtMjc4aC04My40bC01OS41IDI3OEgwbDU5LjUtMjc4LTQ0LjYtOTUuNEgzODdjMzkuNCAwIDc1LjMgMTYuMyA5OC4zIDQ0LjkgMjMuMyAyOC42IDMxLjggNjcuNCAyMy42IDEwNS45bC00Ny44IDIyMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZGIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMzcgMTYwLjQxTDcgMzUyaDQzLjkxbDUuNTktNzkuODNMODQuNDMgMzUyaDQ0LjcxbDI1LjU0LTc3LjQzIDQuNzkgNzcuNDNIMjA1bC0xMi43OS0xOTEuNTlIMTQ2LjdMMTA2IDI3Ny43NCA2My42NyAxNjAuNDF6bTI4MSAwaC00Ny45VjM1Mmg0Ny45czk1IC44IDk0LjItOTUuNzljLS43OC05NC4yMS05NC4xOC05NS43OC05NC4xOC05NS43OHptLTEuMiAxNDYuNDZWMjA0Ljc4czQ2IDQuMjcgNDYuOCA1MC41Ny00Ni43OCA1MS41NC00Ni43OCA1MS41NHptMjM4LjI5LTc0LjI0YTU2LjE2IDU2LjE2IDAgMCAwIDgtMzguMzFjLTUuMzQtMzUuNzYtNTUuMDgtMzQuMzItNTUuMDgtMzQuMzJoLTUxLjl2MTkxLjU4SDQ4MnM4NyA0Ljc5IDg3LTYzLjg1YzAtNDMuMTQtMzMuNTItNTUuMDgtMzMuNTItNTUuMDh6bS01MS45LTMxLjk0czEzLjU3LTEuNTkgMTYgOS41OWMxLjQzIDYuNjYtNCAxMi00IDEyaC0xMnYtMjEuNTd6bS0uMSAxMDkuNDZsLjEtMjQuOTJWMjY3aC4wOHM0MS41OC00LjczIDQxLjE5IDIyLjQzYy0uMzMgMjUuNjUtNDEuMzUgMjAuNzQtNDEuMzUgMjAuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZGFwcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE4LjMgMjM4LjRjMy41LTEyLjUgNi45LTMzLjYgMTMuMi0zMy42IDguMyAxLjggOS42IDIzLjQgMTguNiAzNi42IDQuNi0yMy41IDUuMy04NS4xIDE0LjEtODYuNyA5LS43IDE5LjcgNjYuNSAyMiA3Ny41IDkuOSA0LjEgNDguOSA2LjYgNDguOSA2LjYgMS45IDcuMy0yNCA3LjYtNDAgNy44LTQuNiAxNC44LTUuNCAyNy43LTExLjQgMjgtNC43LjItOC4yLTI4LjgtMTcuNS00OS42bC05LjQgNjUuNWMtNC40IDEzLTE1LjUtMjIuNS0yMS45LTM5LjMtMy4zLS4xLTYyLjQtMS42LTQ3LjYtNy44bDMxLTV6TTIyOCA0NDhjMjEuMiAwIDIxLjItMzIgMC0zMkg5MmMtMjEuMiAwLTIxLjIgMzIgMCAzMmgxMzZ6bS0yNCA2NGMyMS4yIDAgMjEuMi0zMiAwLTMyaC04OGMtMjEuMiAwLTIxLjIgMzIgMCAzMmg4OHptMzQuMi0xNDEuNWMzLjItMTguOSA1LjItMzYuNCAxMS45LTQ4LjggNy45LTE0LjcgMTYuMS0yOC4xIDI0LTQxIDI0LjYtNDAuNCA0NS45LTc1LjIgNDUuOS0xMjUuNUMzMjAgNjkuNiAyNDguMiAwIDE2MCAwUzAgNjkuNiAwIDE1NS4yYzAgNTAuMiAyMS4zIDg1LjEgNDUuOSAxMjUuNSA3LjkgMTIuOSAxNiAyNi4zIDI0IDQxIDYuNyAxMi41IDguNyAyOS44IDExLjkgNDguOSAzLjUgMjEgMzYuMSAxNS43IDMyLjYtNS4xLTMuNi0yMS43LTUuNi00MC43LTE1LjMtNTguNkM2Ni41IDI0Ni41IDMzIDIxMS4zIDMzIDE1NS4yIDMzIDg3LjMgOTAgMzIgMTYwIDMyczEyNyA1NS4zIDEyNyAxMjMuMmMwIDU2LjEtMzMuNSA5MS4zLTY2LjEgMTUxLjYtOS43IDE4LTExLjcgMzcuNC0xNS4zIDU4LjYtMy40IDIwLjYgMjkgMjYuNCAzMi42IDUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVkaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4MC41LDc0LjI2MkM4MC44MTMsNzQuMjYyLDAsMTU1LjYzMywwLDI1NlM4MC44MTksNDM3LjczOCwxODAuNSw0MzcuNzM4LDM2MSwzNTYuMzczLDM2MSwyNTYsMjgwLjE5MSw3NC4yNjIsMTgwLjUsNzQuMjYyWm0yODguMjUsMTAuNjQ2Yy00OS44NDUsMC05MC4yNDUsNzYuNjE5LTkwLjI0NSwxNzEuMDk1czQwLjQwNiwxNzEuMSw5MC4yNTEsMTcxLjEsOTAuMjUxLTc2LjYxOSw5MC4yNTEtMTcxLjFINTU5QzU1OSwxNjEuNSw1MTguNiw4NC45MDgsNDY4Ljc1Miw4NC45MDhabTEzOS41MDYsMTcuODIxYy0xNy41MjYsMC0zMS43MzUsNjguNjI4LTMxLjczNSwxNTMuMjc0czE0LjIsMTUzLjI3NCwzMS43MzUsMTUzLjI3NFM2NDAsMzQwLjYzMSw2NDAsMjU2QzY0MCwxNzEuMzUxLDYyNS43ODUsMTAyLjcyOSw2MDguMjU4LDEwMi43MjlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZHJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NDQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMy43IDI1NmMwIDEyMS44IDgzLjkgMjIyLjggMTkzLjUgMjQxLjEtMTguNyA0LjUtMzguMiA2LjktNTguMiA2LjlDMTExLjQgNTA0IDAgMzkzIDAgMjU2UzExMS40IDggMjQ4LjkgOGMyMC4xIDAgMzkuNiAyLjQgNTguMiA2LjlDMTk3LjUgMzMuMiAxMTMuNyAxMzQuMiAxMTMuNyAyNTZtMjk3LjQgMTAwLjNjLTc3LjcgNTUuNC0xNzkuNiA0Ny41LTI0MC40LTE0LjYgNS41IDE0LjEgMTIuNyAyNy43IDIxLjcgNDAuNSA2MS42IDg4LjIgMTgyLjQgMTA5LjMgMjY5LjcgNDcgODcuMy02Mi4zIDEwOC4xLTE4NC4zIDQ2LjUtMjcyLjYtOS0xMi45LTE5LjMtMjQuMy0zMC41LTM0LjIgMzcuNCA3OC44IDEwLjcgMTc4LjUtNjcgMjMzLjltLTIxOC44LTI0NGMtMS40IDEtMi43IDIuMS00IDMuMSA2NC4zLTE3LjggMTM1LjkgNCAxNzguOSA2MC41IDM1LjcgNDcgNDIuOSAxMDYuNiAyNC40IDE1OCA1Ni43LTU2LjIgNjcuNi0xNDIuMSAyMi4zLTIwMS44LTUwLTY1LjUtMTQ5LjEtNzQuNC0yMjEuNi0xOS44TTI5NiAyMjRjLTQuNCAwLTgtMy42LTgtOHYtNDBjMC00LjQtMy42LTgtOC04aC00OGMtNC40IDAtOCAzLjYtOCA4djQwYzAgNC40LTMuNiA4LTggOGgtNDBjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDhoNDBjNC40IDAgOCAzLjYgOCA4djQwYzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LTh2LTQwYzAtNC40IDMuNi04IDgtOGg0MGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOGgtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZXR1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05OSA0MTQuM2MxLjEgNS43LTIuMyAxMS4xLTggMTIuMy01LjQgMS4xLTEwLjktMi4zLTEyLTgtMS4xLTUuNCAyLjMtMTEuMSA3LjctMTIuMyA1LjQtMS4yIDExLjEgMi4zIDEyLjMgOHptMTQzLjEgNzEuNGMtNi4zIDQuNi04IDEzLjQtMy43IDIwIDQuNiA2LjYgMTMuNCA4LjMgMjAgMy43IDYuMy00LjYgOC0xMy40IDMuNC0yMC00LjItNi41LTEzLjEtOC4zLTE5LjctMy43em0tODYtNDYyLjNjNi4zLTEuNCAxMC4zLTcuNyA4LjktMTQtMS4xLTYuNi03LjQtMTAuNi0xMy43LTkuMS02LjMgMS40LTEwLjMgNy43LTkuMSAxNCAxLjQgNi42IDcuNiAxMC42IDEzLjkgOS4xek0zNC40IDIyNi4zYy0xMC02LjktMjMuNy00LjMtMzAuNiA2LTYuOSAxMC00LjMgMjQgNS43IDMwLjkgMTAgNy4xIDIzLjcgNC42IDMwLjYtNS43IDYuOS0xMC40IDQuMy0yNC4xLTUuNy0zMS4yem0yNzItMTcwLjljMTAuNi02LjMgMTMuNy0yMCA3LjctMzAuMy02LjMtMTAuNi0xOS43LTE0LTMwLTcuN3MtMTMuNyAyMC03LjQgMzAuNmM2IDEwLjMgMTkuNCAxMy43IDI5LjcgNy40em0tMTkxLjEgNThjNy43LTUuNCA5LjQtMTYgNC4zLTIzLjdzLTE1LjctOS40LTIzLjEtNC4zYy03LjcgNS40LTkuNCAxNi00LjMgMjMuNyA1LjEgNy44IDE1LjYgOS41IDIzLjEgNC4zem0zNzIuMyAxNTZjLTcuNCAxLjctMTIuMyA5LjEtMTAuNiAxNi45IDEuNCA3LjQgOC45IDEyLjMgMTYuMyAxMC42IDcuNC0xLjQgMTIuMy04LjkgMTAuNi0xNi42LTEuNS03LjQtOC45LTEyLjMtMTYuMy0xMC45em0zOS43LTU2LjhjLTEuMS01LjctNi42LTkuMS0xMi04LTUuNyAxLjEtOS4xIDYuOS04IDEyLjYgMS4xIDUuNCA2LjYgOS4xIDEyLjMgOCA1LjQtMS41IDkuMS02LjkgNy43LTEyLjZ6TTQ0NyAxMzguOWMtOC42IDYtMTAuNiAxNy43LTQuOSAyNi4zIDUuNyA4LjYgMTcuNCAxMC42IDI2IDQuOSA4LjMtNiAxMC4zLTE3LjcgNC42LTI2LjMtNS43LTguNy0xNy40LTEwLjktMjUuNy00Ljl6bS02LjMgMTM5LjRjMjYuMyA0My4xIDE1LjEgMTAwLTI2LjMgMTI5LjEtMTcuNCAxMi4zLTM3LjEgMTcuNy01Ni45IDE3LjEtMTIgNDcuMS02OS40IDY0LjYtMTA1LjEgMzIuNi0xLjEuOS0yLjYgMS43LTMuNyAyLjktMzkuMSAyNy4xLTkyLjMgMTcuNC0xMTkuNC0yMi4zLTkuNy0xNC4zLTE0LjYtMzAuNi0xNS4xLTQ2LjktNjUuNC0xMC45LTkwLTk0LTQxLjEtMTM5LjctMjguMy00Ni45LjYtMTA3LjQgNTMuNC0xMTQuOUMxNTEuNiA3MCAyMzQuMSAzOC42IDI5MC4xIDgyYzY3LjQtMjIuMyAxMzYuMyAyOS40IDEzMC45IDEwMS4xIDQxLjEgMTIuNiA1Mi44IDY2LjkgMTkuNyA5NS4yem0tNzAgNzQuM2MtMy4xLTIwLjYtNDAuOS00LjYtNDMuMS0yNy4xLTMuMS0zMiA0My43LTEwMS4xIDQwLTEyOC0zLjQtMjQtMTkuNC0yOS4xLTMzLjQtMjkuNC0xMy40LS4zLTE2LjkgMi0yMS40IDQuNi0yLjkgMS43LTYuNiA0LjktMTEuNy0uMy02LjMtNi0xMS4xLTExLjctMTkuNC0xMi45LTEyLjMtMi0xNy43IDItMjYuNiA5LjctMy40IDIuOS0xMiAxMi45LTIwIDkuMS0zLjQtMS43LTE1LjQtNy43LTI0LTExLjQtMTYuMy03LjEtNDAgNC42LTQ4LjYgMjAtMTIuOSAyMi45LTM4IDExMy4xLTQxLjcgMTI1LjEtOC42IDI2LjYgMTAuOSA0OC42IDM2LjkgNDcuMSAxMS4xLS42IDE4LjMtNC42IDI1LjQtMTcuNCA0LTcuNCA0MS43LTEwNy43IDQ0LjYtMTEyLjYgMi0zLjQgOC45LTggMTQuNi01LjEgNS43IDMuMSA2LjkgOS40IDYgMTUuMS0xLjEgOS43LTI4IDcwLjktMjguOSA3Ny43LTMuNCAyMi45IDI2LjkgMjYuNiAzOC42IDQgMy43LTcuMSA0NS43LTkyLjYgNDkuNC05OC4zIDQuMy02LjMgNy40LTguMyAxMS43LTggMy4xIDAgOC4zLjkgNy4xIDEwLjktMS40IDkuNC0zNS4xIDcyLjMtMzguOSA4Ny43LTQuNiAyMC42IDYuNiA0MS40IDI0LjkgNTAuNiAxMS40IDUuNyA2Mi41IDE1LjcgNTguNS0xMS4xem01LjcgOTIuM2MtMTAuMyA3LjQtMTIuOSAyMi01LjcgMzIuNiA3LjEgMTAuNiAyMS40IDEzLjEgMzIgNiAxMC42LTcuNCAxMy4xLTIyIDYtMzIuNi03LjQtMTAuNi0yMS43LTEzLjUtMzIuMy02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWdhcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTQuNSAyMDkuNnY2Ni4ybDMzLjUgMzMuNSAzMy4zLTMzLjN2LTY2LjRsLTMzLjQtMzMuNHpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMTQ1LjEgNDE0LjRMMzY3IDQ0MS42bC0yNi0xOS4ydi02NS41bC0zMy40LTMzLjQtMzMuNCAzMy40djY1LjVMMjQ4IDQ0MS42bC0yNi4xLTE5LjJ2LTY1LjVsLTMzLjQtMzMuNC0zMy41IDMzLjR2NjUuNWwtMjYuMSAxOS4yLTI2LjEtMTkuMnYtODdsNTkuNS01OS41VjE4OGw1OS41LTU5LjVWNTIuOWwyNi4xLTE5LjJMMjc0IDUyLjl2NzUuNmw1OS41IDU5LjV2ODcuNmw1OS43IDU5Ljd2ODcuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVuZGVsZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0LjYgMzI1LjJjLTEyLjMtMTIuNC0yOS43LTE5LjItNDguNC0xNy4yLTQzLjMtMS00OS43LTM0LjktMzcuNS05OC44IDIyLjgtNTcuNS0xNC45LTEzMS41LTg3LjQtMTMwLjgtNzcuNC43LTgxLjcgODItMTMwLjkgODItNDguMSAwLTU0LTgxLjMtMTMwLjktODItNzIuOS0uOC0xMTAuMSA3My4zLTg3LjQgMTMwLjggMTIuMiA2My45IDUuOCA5Ny44LTM3LjUgOTguOC0yMS4yLTIuMy0zNyA2LjUtNTMgMjIuNS0xOS45IDE5LjctMTkuMyA5NC44IDQyLjYgMTAyLjYgNDcuMSA1LjkgODEuNi00Mi45IDYxLjItODcuOC00Ny4zLTEwMy43IDE4NS45LTEwNi4xIDE0Ni41LTguMi0uMS4xLS4yLjItLjMuNC0yNi44IDQyLjggNi44IDk3LjQgNTguOCA5NS4yIDUyLjEgMi4xIDg1LjQtNTIuNiA1OC44LTk1LjItLjEtLjItLjItLjMtLjMtLjQtMzkuNC05Ny45IDE5My44LTk1LjUgMTQ2LjUgOC4yLTQuNiAxMC02LjcgMjEuMy01LjcgMzMgNC45IDUzLjQgNjguNyA3NC4xIDEwNC45IDM1LjIgMTcuOC0xNC44IDIzLjEtNjUuNiAwLTg4LjN6bS0zMDMuOS0xOS4xaC0uNmMtNDMuNCAwLTYyLjgtMzcuNS02Mi44LTYyLjggMC0zNC43IDI4LjItNjIuOCA2Mi44LTYyLjhoLjZjMzQuNyAwIDYyLjggMjguMSA2Mi44IDYyLjggMCAyNS0xOS4yIDYyLjgtNjIuOCA2Mi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAzMTcuOUM2NDAgNDA5LjIgNjAwLjYgNDY2LjQgNTI5LjcgNDY2LjRDNDY3LjEgNDY2LjQgNDMzLjkgNDMxLjggMzcyLjggMzI5LjhMMzQxLjQgMjc3LjJDMzMzLjEgMjY0LjcgMzI2LjkgMjUzIDMyMC4yIDI0Mi4yQzMwMC4xIDI3NiAyNzMuMSAzMjUuMiAyNzMuMSAzMjUuMkMyMDYuMSA0NDEuOCAxNjguNSA0NjYuNCAxMTYuMiA0NjYuNEM0My40MiA0NjYuNCAwIDQwOS4xIDAgMzIwLjVDMCAxNzcuNSA3OS43OCA0Mi40IDE4My45IDQyLjRDMjM0LjEgNDIuNCAyNzcuNyA2Ny4wOCAzMjguNyAxMzEuOUMzNjUuOCA4MS44IDQwNi44IDQyLjQgNDU5LjMgNDIuNEM1NTguNCA0Mi40IDY0MCAxNjguMSA2NDAgMzE3LjlINjQwek0yODcuNCAxOTIuMkMyNDQuNSAxMzAuMSAyMTYuNSAxMTEuNyAxODMgMTExLjdDMTIxLjEgMTExLjcgNjkuMjIgMjE3LjggNjkuMjIgMzIxLjdDNjkuMjIgMzcwLjIgODcuNyAzOTcuNCAxMTguOCAzOTcuNEMxNDkgMzk3LjQgMTY3LjggMzc4LjQgMjIyIDI5My42QzIyMiAyOTMuNiAyNDYuNyAyNTQuNSAyODcuNCAxOTIuMlYxOTIuMnpNNTMxLjIgMzk3LjRDNTYzLjQgMzk3LjQgNTc4LjEgMzY5LjkgNTc4LjEgMzIyLjVDNTc4LjEgMTk4LjMgNTIzLjggOTcuMDggNDU0LjkgOTcuMDhDNDIxLjcgOTcuMDggMzkzLjggMTIzIDM2MCAxNzUuMUMzNjkuNCAxODguOSAzNzkuMSAyMDQuMSAzODkuMyAyMjAuNUw0MjYuOCAyODIuOUM0ODUuNSAzNzcgNTAwLjMgMzk3LjQgNTMxLjIgMzk3LjRMNTMxLjIgMzk3LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvYmxvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTkuMzYsMzYyLjIzYzI5LjQ5LTM0LjY5LDQ3LjEtNzguMzQsNDcuMS0xMjUuNzlDNDQ2LjQ2LDEyMy40OSwzNDYuODYsMzIsMjI0LDMyUzEuNTQsMTIzLjQ5LDEuNTQsMjM2LjQ0LDEwMS4xNCw0NDAuODcsMjI0LDQ0MC44N2EyMzkuMjgsMjM5LjI4LDAsMCwwLDc5LjQ0LTEzLjQ0LDcuMTgsNy4xOCwwLDAsMSw4LjEyLDIuNTZjMTguNTgsMjUuMDksNDcuNjEsNDIuNzQsNzkuODksNDkuOTJhNC40Miw0LjQyLDAsMCwwLDUuMjItMy40Myw0LjM3LDQuMzcsMCwwLDAtLjg1LTMuNjIsODcsODcsMCwwLDEsMy42OS0xMTAuNjlaTTMyOS41MiwyMTIuNGwtNTcuMyw0My40OUwyOTMsMzI0Ljc1YTYuNSw2LjUsMCwwLDEtOS45NCw3LjIyTDIyNCwyOTAuOTIsMTY0Ljk0LDMzMmE2LjUxLDYuNTEsMCwwLDEtOS45NS03LjIybDIwLjc5LTY4Ljg2LTU3LjMtNDMuNDlhNi41LDYuNSwwLDAsMSwzLjgtMTEuNjhsNzEuODgtMS41MSwyMy42Ni02Ny45MmE2LjUsNi41LDAsMCwxLDEyLjI4LDBsMjMuNjYsNjcuOTIsNzEuODgsMS41MWE2LjUsNi41LDAsMCwxLDMuODgsMTEuNjhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3Jvc29mdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyaDIxNC42djIxNC42SDBWMzJ6bTIzMy40IDBINDQ4djIxNC42SDIzMy40VjMyek0wIDI2NS40aDIxNC42VjQ4MEgwVjI2NS40em0yMzMuNCAwSDQ0OFY0ODBIMjMzLjRWMjY1LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pbnRiaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzMuMiA1MTJWNDM4LjlIMzY1LjdWMzY1LjdoNzMuMlYyMTkuNEg1MTJWMEgyOTIuNlY3My4xSDE0Ni4zdjczLjJINzMuMlY0MzguOUgwVjUxMkg3My4yem03My4xLTIxOS40aDczLjJ2NzMuMUgxNDYuM1YyOTIuNnptNzMuMi03My4xaDczLjF2NzMuMUgyMTkuNFYyMTkuNHptNzMuMSAwVjE0Ni4zaDczLjJ2NzMuMUgyOTIuNnpNMzY1LjcgNzMuMWg3My4ydjczLjJIMzY1LjdWNzMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWl4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjR2MzQ4LjljMCA1Ni4yIDg4IDU4LjEgODggMFYxNzQuM2M3LjktNTIuOSA4OC01MC40IDg4IDYuNXYxNzUuM2MwIDU3LjkgOTYgNTggOTYgMFYyNDBjNS4zLTU0LjcgODgtNTIuNSA4OCA0LjN2MjMuOGMwIDU5LjkgODggNTYuNiA4OCAwVjY0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1peGNsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMi45OCAzNDYuNTY2SDE3OS43ODlWMTk1LjExNEwxODUuOTczIDE3My40N0gxNzUuMjYyTDEzNy4xMjcgMzQ2LjU2Nkg3Ni4xMDY5TDM3LjczMjMgMTczLjQ3SDI3LjI3NkwzMy4xOTEzIDE5NS4xMTRWMzQ2LjU2NkgwVjE2NUg2NS42NTA2TDEwMi4yNDggMzM4LjA5NkgxMTAuNzQ3TDE0Ny4zMjkgMTY1SDIxMi45OEwyMTIuOTggMzQ2LjU2NlpNNTQ0LjQ1OSAyODMuNTg5TDQ1OC40MzQgMzQ1LjY1NVYzMDcuNTM0TDUzMS4zMjkgMjU1Ljc3Nkw0NTguNDM0IDIwNC4wMTdWMTY1Ljg5Nkw1NDQuNDU5IDIyOC4yMzFINTUzLjcyMUw2NDAgMTY1Ljg5NlYyMDQuMDE3TDU2Ni44NjYgMjU1Ljc3Nkw2NDAgMzA3LjU0OVYzNDUuNjU1TDU1My43MjEgMjgzLjU4OUg1NDQuNDU5Wk00MzAuMTU3IDI3Mi4zMTFIMjQ4LjExM1YyMzkuMjU1SDQzMC4xNTdWMjcyLjMxMVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWl4ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE0LjU3LDc2LjA3YTQ1LjcxLDQ1LjcxLDAsMCwwLTY3LjUxLTYuNDFjLTE3LjU4LDE2LjE4LTE5LDQzLjUyLTQuNzUsNjIuNzdsOTEuNzgsMTIzTDQxLjc2LDM3OS41OGMtMTQuMjMsMTkuMjUtMTMuMTEsNDYuNTksNC43NCw2Mi43N0E0NS43MSw0NS43MSwwLDAsMCwxMTQsNDM1Ljk0TDI0Mi44OSwyNjIuN2ExMi4xNCwxMi4xNCwwLDAsMCwwLTE0LjIzWk00NzAuMjQsMzc5LjU4LDM3Ny45MSwyNTUuNDVsOTEuNzgtMTIzYzE0LjIyLTE5LjI1LDEyLjgzLTQ2LjU5LTQuNzUtNjIuNzdhNDUuNzEsNDUuNzEsMCwwLDAtNjcuNTEsNi40MWwtMTI4LDE3Mi4xMmExMi4xNCwxMi4xNCwwLDAsMCwwLDE0LjIzTDM5OCw0MzUuOTRhNDUuNzEsNDUuNzEsMCwwLDAsNjcuNTEsNi40MUM0ODMuMzUsNDI2LjE3LDQ4NC40NywzOTguODMsNDcwLjI0LDM3OS41OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWl6dW5pIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5LjEgMCAyNTZjMCAxMzcgMTExIDI0OCAyNDggMjQ4czI0OC0xMTEgMjQ4LTI0OEM0OTYgMTE5LjEgMzg1IDggMjQ4IDh6bS04MCAzNTEuOWMtMzEuNCAxMC42LTU4LjggMjcuMy04MCA0OC4yVjEzNmMwLTIyLjEgMTcuOS00MCA0MC00MHM0MCAxNy45IDQwIDQwdjIyMy45em0xMjAtOS45Yy0xMi45LTItMjYuMi0zLjEtMzkuOC0zLjEtMTMuOCAwLTI3LjIgMS4xLTQwLjIgMy4xVjEzNmMwLTIyLjEgMTcuOS00MCA0MC00MHM0MCAxNy45IDQwIDQwdjIxNHptMTIwIDU3LjdjLTIxLjItMjAuOC00OC42LTM3LjQtODAtNDhWMTM2YzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDB2MjcxLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vZHggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzU2IDI0MS44bDM2LjcgMjMuN1Y0ODBsLTEzMy04My44TDM1NiAyNDEuOHpNNDQwIDc1SDIyNi4zbC0yMyAzNy44IDE1My41IDk2LjVMNDQwIDc1em0tODkgMTQyLjhMNTUuMiAzMnYyMTQuNWw0NiAyOUwzNTEgMjE3Ljh6TTk3IDI5NC4yTDggNDM3aDIxMy43bDEyNS0yMDAuNUw5NyAyOTQuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAzODRoMTA4LjRDNDE3IDQ1NS45IDMzOC4xIDUwNCAyNDggNTA0Uzc5IDQ1NS45IDM1LjYgMzg0SDE0NFYyNTYuMkwyNDggMzYxbDEwNC0xMDV2MTI4ek04OCAzMzZWMTI4bDE1OS40IDE1OS40TDQwOCAxMjh2MjA4aDc0LjhjOC41LTI1LjEgMTMuMi01MiAxMy4yLTgwQzQ5NiAxMTkgMzg1IDggMjQ4IDhTMCAxMTkgMCAyNTZjMCAyOCA0LjYgNTQuOSAxMy4yIDgwSDg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOYXBzdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5OC4zIDM3My42Yy0xNC4yIDEzLjYtMzEuMyAyNC4xLTUwLjQgMzAuNS0xOS02LjQtMzYuMi0xNi45LTUwLjMtMzAuNWgxMDAuN3ptNDQtMTk5LjZjMjAtMTYuOSA0My42LTI5LjIgNjkuNi0zNi4yVjI5OWMwIDIxOS40LTMyOCAyMTcuNi0zMjggLjNWMTM3LjdjMjUuOSA2LjkgNDkuNiAxOS42IDY5LjUgMzYuNCA1Ni44LTQwIDEzMi41LTM5LjkgMTg4LjktLjF6bS0yMDguOC01OC41YzY0LjQtNjAgMTY0LjMtNjAuMSAyMjguOS0uMi03LjEgMy41LTEzLjkgNy4zLTIwLjYgMTEuNS01OC43LTMwLjUtMTI5LjItMzAuNC0xODcuOS4xLTYuMy00LTEzLjktOC4yLTIwLjQtMTEuNHpNNDMuOCA5My4ydjY5LjNjLTU4LjQgMzYuNS01OC40IDEyMS4xLjEgMTU4LjMgMjYuNCAyNDUuMSAzODEuNyAyNDAuMyA0MDcuNiAxLjVsLjMtMS43YzU4LjctMzYuMyA1OC45LTEyMS43LjItMTU4LjJWOTMuMmMtMTcuMy41LTM0IDMtNTAuMSA3LjQtODItOTEuNS0yMjUuNS05MS41LTMwNy41LjEtMTYuMy00LjQtMzMuMS03LTUwLjYtNy41ek0yNTkuMiAzNTJzMzYtLjMgNjEuMy0xLjVjMTAuMi0uNSAyMS4xLTQgMjUuNS02LjUgMjYuMy0xNS4xIDI1LjQtMzkuMiAyNi4yLTQ3LjQtNzkuNS0uNi05OS45LTMuOS0xMTMgNTUuNHptLTEzNS41LTU1LjNjLjggOC4yLS4xIDMyLjMgMjYuMiA0Ny40IDQuNCAyLjUgMTUuMiA2IDI1LjUgNi41IDI1LjMgMS4xIDYxLjMgMS41IDYxLjMgMS41LTEzLjItNTkuNC0zMy43LTU2LjEtMTEzLTU1LjR6bTE2OS4xIDEyMy40Yy0zLjItNS4zLTYuOS03LjMtNi45LTcuMy0yNC44IDcuMy01Mi4yIDYuOS03NS45IDAgMCAwLTIuOSAxLjUtNi40IDYuNi0yLjggNC4xLTMuNyA5LjYtMy43IDkuNiAyOS4xIDE3LjYgNjcuMSAxNy42IDk2LjIgMC0uMS0uMS0uMy00LTMuMy04Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5lb3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE1LjQ0IDUxMmgtOTUuMTFMMjEyLjEyIDM1Ny40NnY5MS4xTDEyNS42OSA1MTJIMjhWMjkuODJMNjguNDcgMGgxMDguMDVsMTIzLjc0IDE3Ni4xM1Y2My40NUwzODYuNjkgMGg5Ny42OXY0NjEuNXpNMzguNzcgMzUuMjdWNDk2bDcyLTUyLjg4VjE5NGwyMTUuNSAzMDcuNjRoODQuNzlsNTIuMzUtMzguMTdoLTc4LjI3TDY5IDEzem04Mi41NCA0NjYuNjFsODAtNTguNzh2LTEwMWwtNzkuNzYtMTE0LjR2MjIwLjk0TDQ5IDUwMS44OWg3Mi4zNHpNODAuNjMgMTAuNzdsMzEwLjYgNDQyLjU3aDgyLjM3VjEwLjc3aC03OS43NXYzMTcuNTZMMTcwLjkxIDEwLjc3ek0zMTEgMTkxLjY1bDcyIDEwMi44MVYxNS45M2wtNzIgNTN2MTIyLjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOZmNEaXJlY3Rpb25hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTEuOCA0ODguNkMyMTMuNCA0OTEuMSAyMTMuOSA0OTQuMiAyMTMuMiA0OTcuMUMyMTIuNiA1MDAgMjEwLjggNTAyLjYgMjA4LjMgNTA0LjJDMjA1LjcgNTA1LjggMjAyLjcgNTA2LjMgMTk5LjcgNTA1LjdDMTM4LjMgNDkxLjggODQuMSA0NTUuOCA0Ny41MyA0MDQuNUMxMC45NyAzNTMuMi01LjM5NSAyOTAuMyAxLjU3IDIyNy43QzguNTM2IDE2NSAzOC4zNCAxMDcuMiA4NS4yOSA2NS4yMUMxMzIuMiAyMy4yIDE5My0uMDEzMSAyNTYgMEMyNTcuNSAwIDI1OC4xIC4yOTMxIDI2MC4zIC44NjI3QzI2MS43IDEuNDMyIDI2Mi4xIDIuMjY3IDI2NCAzLjMxOUMyNjUuMSA0LjM3MSAyNjUuOSA1LjYxOSAyNjYuNSA2Ljk5M0MyNjcgOC4zNjcgMjY3LjMgOS44MzkgMjY3LjMgMTEuMzJWMTEyLjNMMjkxLjggODYuMzlDMjkyLjggODUuMzEgMjk0IDg0LjQ0IDI5NS40IDgzLjg0QzI5Ni43IDgzLjIzIDI5OC4yIDgyLjkgMjk5LjcgODIuODZDMzAxLjIgODIuODEgMzAyLjYgODMuMDYgMzA0IDgzLjU5QzMwNS40IDg0LjEyIDMwNi43IDg0LjkyIDMwNy44IDg1Ljk0QzMwOC44IDg2Ljk2IDMwOS43IDg4LjE4IDMxMC4zIDg5LjU0QzMxMC45IDkwLjg5IDMxMS4zIDkyLjM1IDMxMS4zIDkzLjg0QzMxMS4zIDk1LjMyIDMxMS4xIDk2LjggMzEwLjYgOTguMThDMzEwIDk5LjU3IDMwOS4yIDEwMC44IDMwOC4yIDEwMS45TDI2NC4yIDE0OC41QzI2My4xIDE0OS42IDI2MS45IDE1MC41IDI2MC41IDE1MS4xQzI1OSAxNTEuNyAyNTcuNSAxNTIgMjU1LjEgMTUyQzI1NC41IDE1MiAyNTIuOSAxNTEuNyAyNTEuNSAxNTEuMUMyNTAuMSAxNTAuNSAyNDguOCAxNDkuNiAyNDcuOCAxNDguNUwyMDMuNyAxMDEuOUMyMDEuNyA5OS43NCAyMDAuNiA5Ni44MyAyMDAuNyA5My44NEMyMDAuNyA5MC44NCAyMDIgODcuMSAyMDQuMiA4NS45NEMyMDYuNCA4My44OCAyMDkuMyA4Mi43NyAyMTIuMyA4Mi44NkMyMTUuMyA4Mi45NCAyMTguMSA4NC4yMSAyMjAuMiA4Ni4zOUwyNDQuNyAxMTIuNFYyMi44OUMxODguMyAyNS42NCAxMzQuOSA0OC43MyA5NC4yMyA4Ny44N0M1My41OCAxMjcgMjguNDkgMTc5LjYgMjMuNjEgMjM1LjhDMTguNzMgMjkyIDM0LjM4IDM0OC4xIDY3LjY4IDM5My43QzEwMC4xIDQzOS4yIDE0OS43IDQ3MS4yIDIwNC43IDQ4My42QzIwNy42IDQ4NC4zIDIxMC4yIDQ4Ni4xIDIxMS44IDQ4OC42TDIxMS44IDQ4OC42ek0xNzEuNCAxMjYuMUMxNzAuNiAxMjcuNCAxNjkuNSAxMjguNSAxNjguMyAxMjkuM0MxNDcuOCAxNDMuMiAxMzEuMSAxNjEuOSAxMTkuNSAxODMuOEMxMDcuOSAyMDUuNyAxMDEuOCAyMzAuMSAxMDEuOCAyNTQuOUMxMDEuOCAyNzkuNyAxMDcuOSAzMDQuMSAxMTkuNSAzMjUuMUMxMzEuMSAzNDcuOSAxNDcuOCAzNjYuNiAxNjguMyAzODAuNUMxNzAuOCAzODIuMiAxNzIuNSAzODQuOCAxNzMgMzg3LjhDMTczLjYgMzkwLjcgMTcyLjEgMzkzLjggMTcxLjMgMzk2LjJDMTY5LjYgMzk4LjcgMTY2LjEgNDAwLjQgMTY0IDQwMC4xQzE2MS4xIDQwMS41IDE1OCA0MDAuOSAxNTUuNiAzOTkuMkMxMzIgMzgzLjIgMTEyLjggMzYxLjcgOTkuNDYgMzM2LjVDODYuMTUgMzExLjQgNzkuMTkgMjgzLjQgNzkuMTkgMjU0LjlDNzkuMTkgMjI2LjUgODYuMTUgMTk4LjQgOTkuNDYgMTczLjNDMTEyLjggMTQ4LjEgMTMyIDEyNi42IDE1NS42IDExMC42QzE1Ni44IDEwOS44IDE1OC4yIDEwOS4yIDE1OS42IDEwOC44QzE2MS4xIDEwOC41IDE2Mi42IDEwOC41IDE2NC4xIDEwOC44QzE2NS41IDEwOSAxNjYuOSAxMDkuNiAxNjguMiAxMTAuNEMxNjkuNSAxMTEuMiAxNzAuNSAxMTIuMyAxNzEuNCAxMTMuNUMxNzIuMiAxMTQuNyAxNzIuOCAxMTYuMSAxNzMuMSAxMTcuNkMxNzMuNCAxMTkuMSAxNzMuNCAxMjAuNiAxNzMuMSAxMjJDMTcyLjggMTIzLjUgMTcyLjMgMTI0LjkgMTcxLjQgMTI2LjFIMTcxLjR6TTM0MC45IDM4My41QzM0MS43IDM4Mi4zIDM0Mi44IDM4MS4yIDM0My4xIDM4MC40VjM4MC4zQzM2NC40IDM2Ni4zIDM4MS4xIDM0Ny42IDM5Mi43IDMyNS43QzQwNC4yIDMwMy45IDQxMC4yIDI3OS41IDQxMC4yIDI1NC44QzQxMC4yIDIzMC4xIDQwNC4yIDIwNS43IDM5Mi43IDE4My44QzM4MS4xIDE2MS4xIDM2NC40IDE0My4zIDM0My4xIDEyOS4zQzM0Mi44IDEyOC41IDM0MS43IDEyNy40IDM0MC45IDEyNi4yQzM0MC4xIDEyNC45IDMzOS41IDEyMy41IDMzOS4zIDEyMi4xQzMzOC4xIDEyMC42IDMzOSAxMTkuMSAzMzkuMyAxMTcuN0MzMzkuNiAxMTYuMiAzNDAuMiAxMTQuOCAzNDEgMTEzLjZDMzQxLjkgMTEyLjQgMzQyLjEgMTExLjMgMzQ0LjIgMTEwLjVDMzQ1LjQgMTA5LjcgMzQ2LjggMTA5LjIgMzQ4LjMgMTA4LjlDMzQ5LjggMTA4LjYgMzUxLjIgMTA4LjYgMzUyLjcgMTA4LjlDMzU0LjIgMTA5LjIgMzU1LjUgMTA5LjggMzU2LjggMTEwLjdDMzgwLjIgMTI2LjcgMzk5LjUgMTQ4LjIgNDEyLjcgMTczLjNDNDI2IDE5OC40IDQzMi4xIDIyNi40IDQzMi4xIDI1NC44QzQzMi4xIDI4My4zIDQyNiAzMTEuMyA0MTIuNyAzMzYuNEMzOTkuNSAzNjEuNSAzODAuMiAzODMgMzU2LjggMzk5QzM1NS41IDM5OS45IDM1NC4yIDQwMC41IDM1Mi43IDQwMC44QzM1MS4yIDQwMS4xIDM0OS44IDQwMS4xIDM0OC4zIDQwMC44QzM0Ni44IDQwMC41IDM0NS40IDM5OS4xIDM0NC4yIDM5OS4yQzM0Mi4xIDM5OC40IDM0MS45IDM5Ny4zIDM0MSAzOTYuMUMzNDAuMiAzOTQuOSAzMzkuNiAzOTMuNSAzMzkuMyAzOTJDMzM5IDM5MC42IDMzOC4xIDM4OS4xIDMzOS4zIDM4Ny42QzMzOS41IDM4Ni4yIDM0MC4xIDM4NC44IDM0MC45IDM4My41VjM4My41ek0zMTIuMyA2LjMwN0MzNjguNSAxOS4wNCA0MTguNyA1MC4yOCA0NTUgOTUuMDFDNDg1LjQgMTMyLjYgNTA0LjYgMTc4IDUxMC4zIDIyNkM1MTUuOSAyNzQgNTA3LjkgMzIyLjcgNDg3LjEgMzY2LjNDNDY2LjIgNDA5LjkgNDMzLjUgNDQ2LjggMzkyLjYgNDcyLjZDMzUxLjcgNDk4LjMgMzA0LjQgNTEyIDI1NiA1MTJDMjU0LjUgNTEyIDI1My4xIDUxMS43IDI1MS43IDUxMS4xQzI1MC4zIDUxMC42IDI0OS4xIDUwOS43IDI0OCA1MDguN0MyNDYuMSA1MDcuNiAyNDYuMSA1MDYuNCAyNDUuNiA1MDVDMjQ1IDUwMy42IDI0NC43IDUwMi4yIDI0NC43IDUwMC43VjQwMS41TDIyMC4yIDQyNy41QzIxOC4xIDQyOS43IDIxNS4zIDQzMC4xIDIxMi4zIDQzMS4xQzIwOS4zIDQzMS4yIDIwNi40IDQzMCAyMDQuMiA0MjcuMUMyMDIgNDI1LjkgMjAwLjcgNDIzLjEgMjAwLjcgNDIwLjFDMjAwLjYgNDE3LjEgMjAxLjcgNDE0LjIgMjAzLjcgNDEyTDI0Ny44IDM2NS40QzI0OS4xIDM2My4yIDI1Mi45IDM2MiAyNTUuMSAzNjJDMjU5LjEgMzYyIDI2MiAzNjMuMiAyNjQuMiAzNjUuNEwzMDguMiA0MTJDMzEwLjMgNDE0LjIgMzExLjQgNDE3LjEgMzExLjMgNDIwLjFDMzExLjIgNDIzLjEgMzA5LjkgNDI1LjkgMzA3LjggNDI3LjFDMzA1LjYgNDMwIDMwMi43IDQzMS4yIDI5OS43IDQzMS4xQzI5Ni43IDQzMC4xIDI5My44IDQyOS43IDI5MS44IDQyNy41TDI2Ny4zIDQwMS42VjQ4OS4xQzMyMy43IDQ4Ni4zIDM3Ny4xIDQ2My4zIDQxNy44IDQyNC4xQzQ1OC41IDM4NC4xIDQ4My42IDMzMi40IDQ4OC41IDI3Ni4yQzQ5My4zIDIxOS4xIDQ3Ny43IDE2My45IDQ0NC40IDExOC4zQzQxMS4xIDcyLjc1IDM2Mi40IDQwLjc5IDMwNy40IDI4LjM2QzMwNS45IDI4LjAzIDMwNC42IDI3LjQyIDMwMy4zIDI2LjU3QzMwMi4xIDI1LjcxIDMwMS4xIDI0LjYzIDMwMC4zIDIzLjM3QzI5OS41IDIyLjEyIDI5OC4xIDIwLjcyIDI5OC43IDE5LjI2QzI5OC41IDE3LjggMjk4LjUgMTYuMyAyOTguOCAxNC44NUMyOTkuMiAxMy40MSAyOTkuOCAxMi4wNCAzMDAuNiAxMC44MkMzMDEuNSA5LjYxIDMwMi42IDguNTc3IDMwMy44IDcuNzg0QzMwNS4xIDYuOTkgMzA2LjUgNi40NTEgMzA3LjkgNi4xOThDMzA5LjQgNS45NDUgMzEwLjkgNS45ODIgMzEyLjMgNi4zMDdMMzEyLjMgNi4zMDd6TTM1My4xIDI1Ni4xQzM1My4xIDI4Ny41IDMzNS42IDMxNy4yIDMwMy44IDMzOS42QzMwMS43IDM0MS4xIDI5OSAzNDEuOSAyOTYuNCAzNDEuNkMyOTMuNyAzNDEuNCAyOTEuMiAzNDAuMyAyODkuNCAzMzguNEwyMTkuMyAyNjguNkMyMTcuMSAyNjYuNSAyMTUuMSAyNjMuNiAyMTUuOSAyNjAuNkMyMTUuOSAyNTcuNiAyMTcuMSAyNTQuNyAyMTkuMiAyNTIuNkMyMjEuNCAyNTAuNSAyMjQuMiAyNDkuMyAyMjcuMiAyNDkuM0MyMzAuMiAyNDkuMyAyMzMuMSAyNTAuNSAyMzUuMiAyNTIuNkwyOTguMyAzMTUuNEMzMTkuMSAyOTguMyAzMzAuNSAyNzcuNSAzMzAuNSAyNTYuMUMzMzAuNSAyMzIuMiAzMTYuNCAyMDkuMSAyOTAuOCAxOTFDMjg4LjMgMTg5LjMgMjg2LjcgMTg2LjcgMjg2LjIgMTgzLjdDMjg1LjcgMTgwLjggMjg2LjMgMTc3LjcgMjg4LjEgMTc1LjNDMjg5LjggMTcyLjggMjkyLjQgMTcxLjIgMjk1LjQgMTcwLjdDMjk4LjMgMTcwLjIgMzAxLjQgMTcwLjggMzAzLjggMTcyLjZDMzM1LjYgMTk1IDM1My4xIDIyNC43IDM1My4xIDI1Ni4xVjI1Ni4xek0yMTYuNyAzNDEuNUMyMTMuNyAzNDIgMjEwLjcgMzQxLjMgMjA4LjIgMzM5LjZDMTc2LjUgMzE3LjIgMTU4LjEgMjg3LjUgMTU4LjEgMjU2LjFDMTU4LjEgMjI0LjcgMTc2LjUgMTk1IDIwOC4yIDE3Mi42QzIxMC40IDE3MSAyMTMuMSAxNzAuMyAyMTUuNyAxNzAuNUMyMTguNCAxNzAuOCAyMjAuOCAxNzEuOSAyMjIuNyAxNzMuOEwyOTIuOCAyNDMuNkMyOTQuOSAyNDUuNyAyOTYuMSAyNDguNiAyOTYuMSAyNTEuNkMyOTYuMSAyNTQuNiAyOTQuMSAyNTcuNCAyOTIuOCAyNTkuNkMyOTAuNyAyNjEuNyAyODcuOCAyNjIuOSAyODQuOSAyNjIuOUMyODEuOSAyNjIuOSAyNzguMSAyNjEuNyAyNzYuOSAyNTkuNkwyMTMuOCAxOTYuN0MxOTIuOSAyMTQgMTgxLjYgMjM0LjcgMTgxLjYgMjU2LjFDMTgxLjYgMjc5LjEgMTk1LjcgMzAzLjEgMjIxLjMgMzIxLjFDMjIzLjcgMzIyLjkgMjI1LjQgMzI1LjUgMjI1LjkgMzI4LjVDMjI2LjQgMzMxLjQgMjI1LjcgMzM0LjQgMjI0IDMzNi45QzIyMi4zIDMzOS4zIDIxOS42IDM0MSAyMTYuNyAzNDEuNUwyMTYuNyAzNDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmZjU3ltYm9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5Mi45IDMyLjQzQzQwMC42IDMxLjEgNDA4LjYgMzIuODkgNDE0LjEgMzcuNDFDNDk4LjIgOTYuMTQgNTQ0IDE3My43IDU0NCAyNTUuMUM1NDQgMzM4LjIgNDk4LjIgNDE1LjkgNDE0LjEgNDc0LjZDNDA5LjMgNDc4LjYgNDAyLjQgNDgwLjUgMzk1LjUgNDc5LjlDMzg4LjUgNDc5LjMgMzgyIDQ3Ni4zIDM3Ny4xIDQ3MS40TDE5My43IDI4OC43QzE4OC4xIDI4My4yIDE4NSAyNzUuNyAxODQuMSAyNjcuOEMxODQuMSAyNjAgMTg4LjEgMjUyLjUgMTkzLjYgMjQ2LjlDMTk5LjIgMjQxLjQgMjA2LjcgMjM4LjIgMjE0LjUgMjM4LjJDMjIyLjQgMjM4LjIgMjI5LjkgMjQxLjMgMjM1LjQgMjQ2LjhMNDAwLjUgNDExLjJDNDU1LjEgMzY2LjUgNDg0LjggMzEyIDQ4NC44IDI1NS4xQzQ4NC44IDE5My41IDQ0Ny45IDEzMi45IDM4MC45IDg1Ljc2QzM3NC41IDgxLjI0IDM3MC4xIDc0LjM1IDM2OC44IDY2LjYyQzM2Ny40IDU4Ljg5IDM2OS4yIDUwLjk0IDM3My44IDQ0LjUzQzM3OC4zIDM4LjEyIDM4NS4yIDMzLjc3IDM5Mi45IDMyLjQzVjMyLjQzek0xODYuOSA0NzkuNkMxNzkuMiA0ODAuOSAxNzEuMyA0NzkuMSAxNjQuOCA0NzQuNkM4MS42NyA0MTUuOSAzNS44NCAzMzguMiAzNS44NCAyNTUuMUMzNS44NCAxNzMuNyA4MS42NyA5Ni4xNCAxNjQuOCAzNy40MUMxNzAuNSAzMy40IDE3Ny40IDMxLjUzIDE4NC40IDMyLjEyQzE5MS4zIDMyLjcxIDE5Ny44IDM1LjcyIDIwMi43IDQwLjYzTDM4Ni4xIDIyMy4zQzM5MS43IDIyOC44IDM5NC44IDIzNi4zIDM5NC44IDI0NC4yQzM5NC45IDI1MS4xIDM5MS44IDI1OS41IDM4Ni4yIDI2NS4xQzM4MC43IDI3MC42IDM3My4yIDI3My44IDM2NS4zIDI3My44QzM1Ny41IDI3My44IDM0OS4xIDI3MC43IDM0NC40IDI2NS4yTDE3OS4zIDEwMC43QzEyNC43IDE0NS45IDk1LjAzIDE5OS45IDk1LjAzIDI1NS4xQzk1LjAzIDMxOC41IDEzMS45IDM3OS4xIDE5OC4xIDQyNi4yQzIwNS40IDQzMC44IDIwOS43IDQzNy42IDIxMS4xIDQ0NS40QzIxMi40IDQ1My4xIDIxMC42IDQ2MS4xIDIwNi4xIDQ2Ny41QzIwMS42IDQ3My45IDE5NC43IDQ3OC4yIDE4Ni45IDQ3OS42VjQ3OS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOaW1ibHIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ2LjYgMjk5LjI5YzE1LjU3IDAgMjcuMTUgMTEuNDYgMjcuMTUgMjdzLTExLjYyIDI3LTI3LjE1IDI3Yy0xNS43IDAtMjcuMTUtMTEuNTctMjcuMTUtMjdzMTEuNTUtMjcgMjcuMTUtMjd6TTExMyAzMjYuMjVjMC0xNS42MSAxMS42OC0yNyAyNy4xNS0yN3MyNy4xNSAxMS40NiAyNy4xNSAyNy0xMS40NyAyNy0yNy4xNSAyN2MtMTUuNDQgMC0yNy4xNS0xMS4zMS0yNy4xNS0yN00xOTEuNzYgMTU5QzE1NyAxNTkgODkuNDUgMTc4Ljc3IDU5LjI1IDIyN0wxNCAwdjMzNS40OEMxNCA0MzMuMTMgOTMuNjEgNTEyIDE5MS43NiA1MTJzMTc3Ljc2LTc4Ljk1IDE3Ny43Ni0xNzYuNTJTMjkwLjEzIDE1OSAxOTEuNzYgMTU5em0wIDMwOC4xMmMtNzMuMjcgMC0xMzIuNTEtNTguOS0xMzIuNTEtMTMxLjU5czU5LjI0LTEzMS41OSAxMzIuNTEtMTMxLjU5IDEzMi41MSA1OC44NiAxMzIuNTEgMTMxLjU0UzI2NSA0NjcuMDcgMTkxLjc2IDQ2Ny4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTm9kZUpzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA1MDhjLTYuNyAwLTEzLjUtMS44LTE5LjQtNS4ybC02MS43LTM2LjVjLTkuMi01LjItNC43LTctMS43LTggMTIuMy00LjMgMTQuOC01LjIgMjcuOS0xMi43IDEuNC0uOCAzLjItLjUgNC42LjRsNDcuNCAyOC4xYzEuNyAxIDQuMSAxIDUuNyAwbDE4NC43LTEwNi42YzEuNy0xIDIuOC0zIDIuOC01VjE0OS4zYzAtMi4xLTEuMS00LTIuOS01LjFMMjI2LjggMzcuN2MtMS43LTEtNC0xLTUuNyAwTDM2LjYgMTQ0LjNjLTEuOCAxLTIuOSAzLTIuOSA1LjF2MjEzLjFjMCAyIDEuMSA0IDIuOSA0LjlsNTAuNiAyOS4yYzI3LjUgMTMuNyA0NC4zLTIuNCA0NC4zLTE4LjdWMTY3LjVjMC0zIDIuNC01LjMgNS40LTUuM2gyMy40YzIuOSAwIDUuNCAyLjMgNS40IDUuM1YzNzhjMCAzNi42LTIwIDU3LjYtNTQuNyA1Ny42LTEwLjcgMC0xOS4xIDAtNDIuNS0xMS42bC00OC40LTI3LjlDOC4xIDM4OS4yLjcgMzc2LjMuNyAzNjIuNFYxNDkuM2MwLTEzLjggNy40LTI2LjggMTkuNC0zMy43TDIwNC42IDljMTEuNy02LjYgMjcuMi02LjYgMzguOCAwbDE4NC43IDEwNi43YzEyIDYuOSAxOS40IDE5LjggMTkuNCAzMy43djIxMy4xYzAgMTMuOC03LjQgMjYuNy0xOS40IDMzLjdMMjQzLjQgNTAyLjhjLTUuOSAzLjQtMTIuNiA1LjItMTkuNCA1LjJ6bTE0OS4xLTIxMC4xYzAtMzkuOS0yNy01MC41LTgzLjctNTgtNTcuNC03LjYtNjMuMi0xMS41LTYzLjItMjQuOSAwLTExLjEgNC45LTI1LjkgNDcuNC0yNS45IDM3LjkgMCA1MS45IDguMiA1Ny43IDMzLjguNSAyLjQgMi43IDQuMiA1LjIgNC4yaDI0YzEuNSAwIDIuOS0uNiAzLjktMS43czEuNS0yLjYgMS40LTQuMWMtMy43LTQ0LjEtMzMtNjQuNi05Mi4yLTY0LjYtNTIuNyAwLTg0LjEgMjIuMi04NC4xIDU5LjUgMCA0MC40IDMxLjMgNTEuNiA4MS44IDU2LjYgNjAuNSA1LjkgNjUuMiAxNC44IDY1LjIgMjYuNyAwIDIwLjYtMTYuNiAyOS40LTU1LjUgMjkuNC00OC45IDAtNTkuNi0xMi4zLTYzLjItMzYuNi0uNC0yLjYtMi42LTQuNS01LjMtNC41aC0yMy45Yy0zIDAtNS4zIDIuNC01LjMgNS4zIDAgMzEuMSAxNi45IDY4LjIgOTcuOCA2OC4yIDU4LjQtLjEgOTItMjMuMiA5Mi02My40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxNi4zIDQ1MmMtMi4xIDAtNC4yLS42LTYuMS0xLjZMMjkxIDQzOWMtMi45LTEuNi0xLjUtMi4yLS41LTIuNSAzLjgtMS4zIDQuNi0xLjYgOC43LTQgLjQtLjIgMS0uMSAxLjQuMWwxNC44IDguOGMuNS4zIDEuMy4zIDEuOCAwTDM3NSA0MDhjLjUtLjMuOS0uOS45LTEuNnYtNjYuN2MwLS43LS4zLTEuMy0uOS0xLjZsLTU3LjgtMzMuM2MtLjUtLjMtMS4yLS4zLTEuOCAwbC01Ny44IDMzLjNjLS42LjMtLjkgMS0uOSAxLjZ2NjYuN2MwIC42LjQgMS4yLjkgMS41bDE1LjggOS4xYzguNiA0LjMgMTMuOS0uOCAxMy45LTUuOHYtNjUuOWMwLS45LjctMS43IDEuNy0xLjdoNy4zYy45IDAgMS43LjcgMS43IDEuN3Y2NS45YzAgMTEuNS02LjIgMTgtMTcuMSAxOC0zLjMgMC02IDAtMTMuMy0zLjZsLTE1LjItOC43Yy0zLjctMi4yLTYuMS02LjItNi4xLTEwLjV2LTY2LjdjMC00LjMgMi4zLTguNCA2LjEtMTAuNWw1Ny44LTMzLjRjMy43LTIuMSA4LjUtMi4xIDEyLjEgMGw1Ny44IDMzLjRjMy43IDIuMiA2LjEgNi4yIDYuMSAxMC41djY2LjdjMCA0LjMtMi4zIDguNC02LjEgMTAuNWwtNTcuOCAzMy40Yy0xLjcgMS4xLTMuOCAxLjctNiAxLjd6bTQ2LjctNjUuOGMwLTEyLjUtOC40LTE1LjgtMjYuMi0xOC4yLTE4LTIuNC0xOS44LTMuNi0xOS44LTcuOCAwLTMuNSAxLjUtOC4xIDE0LjgtOC4xIDExLjkgMCAxNi4zIDIuNiAxOC4xIDEwLjYuMi44LjggMS4zIDEuNiAxLjNoNy41Yy41IDAgLjktLjIgMS4yLS41LjMtLjQuNS0uOC40LTEuMy0xLjItMTMuOC0xMC4zLTIwLjItMjguOC0yMC4yLTE2LjUgMC0yNi4zIDctMjYuMyAxOC42IDAgMTIuNyA5LjggMTYuMSAyNS42IDE3LjcgMTguOSAxLjkgMjAuNCA0LjYgMjAuNCA4LjMgMCA2LjUtNS4yIDkuMi0xNy40IDkuMi0xNS4zIDAtMTguNy0zLjgtMTkuOC0xMS40LS4xLS44LS44LTEuNC0xLjctMS40aC03LjVjLS45IDAtMS43LjctMS43IDEuNyAwIDkuNyA1LjMgMjEuMyAzMC42IDIxLjMgMTguNSAwIDI5LTcuMiAyOS0xOS44em01NC41LTUwLjFjMCA2LjEtNSAxMS4xLTExLjEgMTEuMXMtMTEuMS01LTExLjEtMTEuMWMwLTYuMyA1LjItMTEuMSAxMS4xLTExLjEgNi0uMSAxMS4xIDQuOCAxMS4xIDExLjF6bS0xLjggMGMwLTUuMi00LjItOS4zLTkuNC05LjMtNS4xIDAtOS4zIDQuMS05LjMgOS4zIDAgNS4yIDQuMiA5LjQgOS4zIDkuNCA1LjItLjEgOS40LTQuMyA5LjQtOS40em0tNC41IDYuMmgtMi42Yy0uMS0uNi0uNS0zLjgtLjUtMy45LS4yLS43LS40LTEuMS0xLjMtMS4xaC0yLjJ2NWgtMi40di0xMi41aDQuM2MxLjUgMCA0LjQgMCA0LjQgMy4zIDAgMi4zLTEuNSAyLjgtMi40IDMuMSAxLjcuMSAxLjggMS4yIDIuMSAyLjguMSAxIC4zIDIuNy42IDMuM3ptLTIuOC04LjhjMC0xLjctMS4yLTEuNy0xLjgtMS43aC0ydjMuNWgxLjljMS42IDAgMS45LTEuMSAxLjktMS44ek0xMzcuMyAxOTFjMC0yLjctMS40LTUuMS0zLjctNi40bC02MS4zLTM1LjNjLTEtLjYtMi4yLS45LTMuNC0xaC0uNmMtMS4yIDAtMi4zLjQtMy40IDFMMy43IDE4NC42QzEuNCAxODUuOSAwIDE4OC40IDAgMTkxbC4xIDk1YzAgMS4zLjcgMi41IDEuOCAzLjIgMS4xLjcgMi41LjcgMy43IDBMNDIgMjY4LjNjMi4zLTEuNCAzLjctMy44IDMuNy02LjR2LTQ0LjRjMC0yLjYgMS40LTUuMSAzLjctNi40bDE1LjUtOC45YzEuMi0uNyAyLjQtMSAzLjctMSAxLjMgMCAyLjYuMyAzLjcgMWwxNS41IDguOWMyLjMgMS4zIDMuNyAzLjggMy43IDYuNHY0NC40YzAgMi42IDEuNCA1LjEgMy43IDYuNGwzNi40IDIwLjljMS4xLjcgMi42LjcgMy43IDAgMS4xLS42IDEuOC0xLjkgMS44LTMuMmwuMi05NXpNNDcyLjUgODcuM3YxNzYuNGMwIDIuNi0xLjQgNS4xLTMuNyA2LjRsLTYxLjMgMzUuNGMtMi4zIDEuMy01LjEgMS4zLTcuNCAwbC02MS4zLTM1LjRjLTIuMy0xLjMtMy43LTMuOC0zLjctNi40di03MC44YzAtMi42IDEuNC01LjEgMy43LTYuNGw2MS4zLTM1LjRjMi4zLTEuMyA1LjEtMS4zIDcuNCAwbDE1LjMgOC44YzEuNyAxIDMuOS0uMyAzLjktMi4ydi05NGMwLTIuOCAzLTQuNiA1LjUtMy4ybDM2LjUgMjAuNGMyLjMgMS4yIDMuOCAzLjcgMy44IDYuNHptLTQ2IDEyOC45YzAtLjctLjQtMS4zLS45LTEuNmwtMjEtMTIuMmMtLjYtLjMtMS4zLS4zLTEuOSAwbC0yMSAxMi4yYy0uNi4zLS45LjktLjkgMS42djI0LjNjMCAuNy40IDEuMy45IDEuNmwyMSAxMi4xYy42LjMgMS4zLjMgMS44IDBsMjEtMTIuMWMuNi0uMy45LS45LjktMS42di0yNC4zem0yMDkuOC0uN2MyLjMtMS4zIDMuNy0zLjggMy43LTYuNFYxOTJjMC0yLjYtMS40LTUuMS0zLjctNi40bC02MC45LTM1LjRjLTIuMy0xLjMtNS4xLTEuMy03LjQgMGwtNjEuMyAzNS40Yy0yLjMgMS4zLTMuNyAzLjgtMy43IDYuNHY3MC44YzAgMi43IDEuNCA1LjEgMy43IDYuNGw2MC45IDM0LjdjMi4yIDEuMyA1IDEuMyA3LjMgMGwzNi44LTIwLjVjMi41LTEuNCAyLjUtNSAwLTYuNEw1NTAgMjQxLjZjLTEuMi0uNy0xLjktMS45LTEuOS0zLjJ2LTIyLjJjMC0xLjMuNy0yLjUgMS45LTMuMmwxOS4yLTExLjFjMS4xLS43IDIuNi0uNyAzLjcgMGwxOS4yIDExLjFjMS4xLjcgMS45IDEuOSAxLjkgMy4ydjE3LjRjMCAyLjggMy4xIDQuNiA1LjYgMy4ybDM2LjctMjEuM3pNNTU5IDIxOWMtLjQuMy0uNy43LS43IDEuMnYxMy42YzAgLjUuMyAxIC43IDEuMmwxMS44IDYuOGMuNC4zIDEgLjMgMS40IDBMNTg0IDIzNWMuNC0uMy43LS43LjctMS4ydi0xMy42YzAtLjUtLjMtMS0uNy0xLjJsLTExLjgtNi44Yy0uNC0uMy0xLS4zLTEuNCAwTDU1OSAyMTl6bS0yNTQuMiA0My41di03MC40YzAtMi42LTEuNi01LjEtMy45LTYuNGwtNjEuMS0zNS4yYy0yLjEtMS4yLTUtMS40LTcuNCAwbC02MS4xIDM1LjJjLTIuMyAxLjMtMy45IDMuNy0zLjkgNi40djcwLjRjMCAyLjggMS45IDUuMiA0IDYuNGw2MS4yIDM1LjJjMi40IDEuNCA1LjIgMS4zIDcuNCAwbDYxLTM1LjJjMS44LTEgMy4xLTIuNyAzLjYtNC43LjEtLjUuMi0xLjEuMi0xLjd6bS03NC4zLTEyNC45bC0uOC41aDEuMWwtLjMtLjV6bTc2LjIgMTMwLjJsLS40LS43di45bC40LS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOcG0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDI4OGgtMzJ2LTY0aDMydjY0em0yODgtMTI4djE5MkgyODh2MzJIMTYwdi0zMkgwVjE2MGg1NzZ6bS00MTYgMzJIMzJ2MTI4aDY0di05NmgzMnY5NmgzMlYxOTJ6bTE2MCAwSDE5MnYxNjBoNjR2LTMyaDY0VjE5MnptMjI0IDBIMzUydjEyOGg2NHYtOTZoMzJ2OTZoMzJ2LTk2aDMydjk2aDMyVjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTnM4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwNC4zMjQsMjY5LjE3MmgyNi4wNjdWMjQyLjk5NEgxMDQuMzI0Wm01Mi40NjYtMjYuMTc4LS4wNTUtMjYuMTc4di0uOTQxYTM5LjMyNSwzOS4zMjUsMCwwLDAtNzguNjQ0Ljk0MXYuMTY2aDI2LjR2LS4xNjZhMTIuOTgsMTIuOTgsMCwwLDEsMjUuOTU2LDB2MjYuMTc4Wm01Mi4zNTYsMjUuODQ2YTkxLjEsOTEuMSwwLDAsMS05MS4xLDkxLjFoLS42MDlhOTEuMSw5MS4xLDAsMCwxLTkxLjEtOTEuMUgwdi4xNjZBMTE3LjMzLDExNy4zMywwLDAsMCwxMTcuNDQsMzg2LjI4aC43NzVBMTE3LjMzMSwxMTcuMzMxLDAsMCwwLDIzNS40OSwyNjguODRWMjQyLjgyOEgyMDkuMTQ2Wm0tMTU3LjIzMywwYTY1LjM2Miw2NS4zNjIsMCwwLDAsMTMwLjcyMywwSDE1Ni4yOTJhMzkuMDIzLDM5LjAyMywwLDAsMS03OC4wMzUsMFYyNDIuODgzSDUxLjk2OHYtMjYuNjJBNjUuNDIsNjUuNDIsMCwwLDEsMTgyLjgsMjE3LjQ4djI1LjI5M2gyNi4zNDRWMjE3LjQ4YTkxLjc2MSw5MS43NjEsMCwwLDAtMTgzLjUyMiwwdjI1LjRINTEuOTEzWm00MTguNC03MS4xNzNjMTMuNjcsMCwyNC41NzMsNi42NDIsMzAuMDUyLDE4LjI2NGwuNzE5LDEuNTQ5LDIzLjI0NS0xMS41MTEtLjYwOS0xLjQzOWMtOC4wMjUtMTkuMjYtMjguNS0zMS4yNy01My40MDctMzEuMjctMjMuMTM0LDAtNDMuNjExLDExLjQtNTAuOTcyLDI4LjQ0Ny0uMTIzLDI2Ljg3Ni0uMTU4LDIzLjksMCwyNC44NSw0LjcsMTEuMDEzLDE0LjU1NSwxOS4zNywyOC42NjgsMjQuMjQxYTEwMi4wMzMsMTAyLjAzMywwLDAsMCwxOS44MTMsMy45ODRjNS40NzkuNzIsMTAuNjI2LDEuMzg0LDE1LjgyOSwzLjEsNi4zNjQsMi4xLDEwLjQ2LDUuMjU3LDEyLjg0LDkuODUxdjkuODUxYy0zLjcwOCw3LjUyNy0xMy43ODEsMTIuMzQyLTI1Ljc5MSwxMi4zNDItMTQuMzM0LDAtMjUuOTU2LTYuOTE4LTMxLjkzMy0xOS4wMzlsLS43Mi0xLjQ5NEw0MTUuMDI2LDI4MC45bC41NTMsMS40MzljNy45MTUsMTkuNDI2LDI5LjYwOSwzMi4wNDQsNTUuMjg5LDMyLjA0NCwyMy42MzIsMCw0NC42MDgtMTEuNCw1Mi4zLTI4LjQ0N2wuMTY2LTI1LjktLjE2Ni0uNjY0Yy00Ljg3LTExLjAxNC0xNS4yMTktMTkuNjQ3LTI4Ljk0NC0yNC4yNDEtNy42OTMtMi43MTItMTQuMzM1LTMuNi0yMC43LTQuNDI3YTgzLjc3Nyw4My43NzcsMCwwLDEtMTQuODMyLTIuODc4Yy02LjMxLTEuOTM3LTEwLjQtNS4wOTItMTIuNjE5LTkuNjN2LTguNDEyQzQ0OS40NSwyMDIuNDI3LDQ1OC45NjksMTk3LjY2Nyw0NzAuMzE1LDE5Ny42NjdaTTI4Ny41NjgsMzExLjM0NGgyNi4wNjd2LTY4LjRIMjg3LjU2OFptMzUyLjI2Ni01My4zYy0yLjkzMy02LjI1NC04LjMtMTIuMDEtMTUuNDQxLTE2LjcxNEEzNy45OSwzNy45OSwwLDAsMCw2MzcuNCwyMjZsLjE2Ni0yNS4zNDctLjE2Ni0uNjY0QzYzMC4wMzgsMTg0LDYxMC42NjcsMTczLjI2LDU4OS4yNSwxNzMuMjZTNTQ4LjQ2MSwxODQsNTQxLjEsMTk5Ljk5MmwtLjE2NiwyNS4zNDcuMTY2LjY2NGEzOS42NDMsMzkuNjQzLDAsMCwwLDEzLjAwNiwxNS4zMzFjLTcuMiw0LjctMTIuNTA4LDEwLjQ2LTE1LjQ0MSwxNi43MTRsLS4xNjYsMjguODg5LjE2Ni43MmM3LjU4MiwxNS45OTQsMjcuODkzLDI2LjczMSw1MC41ODUsMjYuNzMxczQzLjA1Ny0xMC43MzcsNTAuNTg0LTI2LjczMWwuMTY2LTI4Ljg5Wm0tNzMuMjItNTAuODA2YzMuNi02LjMxLDEyLjU2My0xMC41MTYsMjIuNTgtMTAuNTE2czE5LjAzOCw0LjIwNiwyMi42MzYsMTAuNTE2djEzLjcyNWMtMy41NDIsNi4yLTEyLjU2MywxMC4zNDktMjIuNjM2LDEwLjM0OXMtMTkuMDk0LTQuMTUtMjIuNTgtMTAuMzQ5Wm00Ny4zMTksNzIuMTY5Yy0zLjc2NCw2LjY0MS0xMy4zMzgsMTAuOS0yNC42ODMsMTAuOS0xMS4xMjUsMC0yMC45NzYtNC4zNzItMjQuNjg0LTEwLjlWMjYzLjI1YzMuNzA4LTYuMzA5LDEzLjUtMTAuNTE1LDI0LjY4NC0xMC41MTUsMTEuMzQ1LDAsMjAuOTE5LDQuMTUsMjQuNjgzLDEwLjUxNVpNMzc2LjQsMjY1Ljk2MmwtNTkuODI3LTg5LjcxM2gtMjl2NDAuNjIzaDI2LjUxdi4zODdsNjIuNTM5LDk0LjA4NUg0MDIuM1YxNzYuMjQ5SDM3Ni40WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOdXRyaXRpb25peCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDAwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04OCA4LjFTMjIxLjQtLjEgMjA5IDExMi41YzAgMCAxOS4xLTc0LjkgMTAzLTQwLjYgMCAwLTE3LjcgNzQtODggNTYgMCAwIDE0LjYtNTQuNiA2Ni4xLTU2LjYgMCAwLTM5LjktMTAuMy04Mi4xIDQ4LjggMCAwLTE5LjgtOTQuNS05My42LTk5LjcgMCAwIDc1LjIgMTkuNCA3Ny42IDEwNy41IDAgLjEtMTA2LjQgNy0xMDQtMTE5Ljh6bTMxMiAzMTUuNmMwIDQ4LjUtOS43IDk1LjMtMzIgMTMyLjMtNDIuMiAzMC45LTEwNSA0OC0xNjggNDgtNjIuOSAwLTEyNS44LTE3LjEtMTY4LTQ4QzkuNyA0MTkgMCAzNzIuMiAwIDMyMy43IDAgMjc1LjMgMTcuNyAyMjkgNDAgMTkyYzQyLjItMzAuOSA5Ny4xLTQ4LjYgMTYwLTQ4LjYgNjMgMCAxMTcuOCAxNy42IDE2MCA0OC42IDIyLjMgMzcgNDAgODMuMyA0MCAxMzEuN3pNMTIwIDQyOGMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6TTE5MiA0MjhjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4em0wLTY2LjJjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4em0wLTY2LjJjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4ek0yNjQgNDI4YzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHpNMzM2IDQyOGMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTI0LTM5LjZjLTQuOC0yMi4zLTcuNC0zNi45LTE2LTU2LTM4LjgtMTkuOS05MC41LTMyLTE0NC0zMlM5NC44IDE4MC4xIDU2IDIwMGMtOC44IDE5LjUtMTEuMiAzMy45LTE2IDU2IDQyLjItNy45IDk4LjctMTQuOCAxNjAtMTQuOHMxMTcuOCA2LjkgMTYwIDE0Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9jdG9wdXNEZXBsb3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU1LjYsMzQ5LjJjLTQ1Ljg5MS0zOS4wOS0zNi42Ny03Ny44NzctMTYuMDk1LTEyOC4xMUM0NzUuMTYsMTM0LjA0LDQxNS45NjcsMzQuMTQsMzI5LjkzLDguMywyMzcuMDQtMTkuNiwxMzQuMjUyLDI0LjM0MSw5OS42NzcsMTE3LjE0N2ExODAuODYyLDE4MC44NjIsMCwwLDAtMTAuOTg4LDczLjU0NGMxLjczMywyOS41NDMsMTQuNzE3LDUyLjk3LDI0LjA5LDgwLjMsMTcuMiw1MC4xNjEtMjguMSw5Mi43NDMtNjYuNjYyLDExNy41ODItNDYuODA2LDMwLjItMzYuMzE5LDM5Ljg1Ny04LjQyOCw0MS44NTgsMjMuMzc4LDEuNjgsNDQuNDc4LTQuNTQ4LDY1LjI2NS0xNS4wNDUsOS4yLTQuNjQ3LDQwLjY4Ny0xOC45MzEsNDUuMTMtMjguNTg4QzEzNS45LDQxMy4zODgsMTExLjEyMiw0NTkuNSwxMjYuNjIxLDQ4OC45YzE5LjEsMzYuMjI5LDY3LjExMi0zMS43Nyw3Ni43MDktNDUuODEyLDguNTkxLTEyLjU3Miw0Mi45NjMtODEuMjc5LDYzLjYyNy00Ni45MjYsMTguODY1LDMxLjM2MSw4LjYsNzYuMzkxLDM1LjczOCwxMDQuNjIyLDMyLjg1NCwzNC4yLDUxLjE1NS0xOC4zMTIsNTEuNDEyLTQ0LjIyMS4xNjMtMTYuNDExLTYuMS05NS44NTIsMjkuOS01OS45NDRDNDA1LjQyOCw0MTgsNDM2LjkxMiw0NjcuOCw0NzIuNTY4LDQ2My42NDJjMzguNzM2LTQuNTE2LTIyLjEyMy02Ny45NjctMjguMjYyLTc4LjY5NSw1LjM5Myw0LjI3OSw1My42NjUsMzQuMTI4LDUzLjgxOCw5LjUyQzQ5OC4yMzQsMzc1LjY3OCw0NjguMDM5LDM1OS44LDQ1NS42LDM0OS4yWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPZG5va2xhc3NuaWtpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3NS4xIDMzNGMtMjcuNCAxNy40LTY1LjEgMjQuMy05MCAyNi45bDIwLjkgMjAuNiA3Ni4zIDc2LjNjMjcuOSAyOC42LTE3LjUgNzMuMy00NS43IDQ1LjctMTkuMS0xOS40LTQ3LjEtNDcuNC03Ni4zLTc2LjZMODQgNTAzLjRjLTI4LjIgMjcuNS03My42LTE3LjYtNDUuNC00NS43IDE5LjQtMTkuNCA0Ny4xLTQ3LjQgNzYuMy03Ni4zbDIwLjYtMjAuNmMtMjQuNi0yLjYtNjIuOS05LjEtOTAuNi0yNi45LTMyLjYtMjEtNDYuOS0zMy4zLTM0LjMtNTkgNy40LTE0LjYgMjcuNy0yNi45IDU0LjYtNS43IDAgMCAzNi4zIDI4LjkgOTQuOSAyOC45czk0LjktMjguOSA5NC45LTI4LjljMjYuOS0yMS4xIDQ3LjEtOC45IDU0LjYgNS43IDEyLjQgMjUuNy0xLjkgMzgtMzQuNSA1OS4xek0zMC4zIDEyOS43QzMwLjMgNTggODguNiAwIDE2MCAwczEyOS43IDU4IDEyOS43IDEyOS43YzAgNzEuNC01OC4zIDEyOS40LTEyOS43IDEyOS40cy0xMjkuNy01OC0xMjkuNy0xMjkuNHptNjYgMGMwIDM1LjEgMjguNiA2My43IDYzLjcgNjMuN3M2My43LTI4LjYgNjMuNy02My43YzAtMzUuNC0yOC42LTY0LTYzLjctNjRzLTYzLjcgMjguNi02My43IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPZHlzZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA2LjcgNDYzYy00Mi4zIDMwLjgtOTQuNCA0OS0xNTAuNyA0OUMxNDQuOSA1MTIgNTAuMyA0NDEuMiAxNC45IDM0Mi4yYzIuNCAxLjcgNS45IDMuNiA3LjkgNC40YzE2LjMgNy40IDQwLjEtNS40IDYyLjktMjguN2M2LjktNi45IDE0LjQtMTIuNCAyMi44LTE3LjNjMTguMy0xMS45IDM3LjYtMjAuOCA1OC40LTI3LjJjMCAwIDIyLjMgMzQuMiA0My4xIDc0LjhzLTIyLjMgNTQtMjcuMiA1NGMtLjMgMC0uOCAwLTEuNS0uMWMtMTEtLjUtNzAtMy01NiA1MS4xYzE0LjkgNTcuNCA5Ny41IDM2LjYgMTM5LjYgOC45czMxLjctMTE4LjMgMzEuNy0xMTguM2M0MS4xLTYuNCA1NCAzNy4xIDU3LjkgNTkuNGMuOCA0LjYgMS4xIDkuOSAxLjQgMTUuNWMxLjEgMjEuMiAyLjMgNDUuNiAzNS4zIDQ2LjRjNS4zIDAgMTAuNi0uOCAxNS41LTJ6bS05NS4zLTIzLjdjLTItLjUtMy41LTIuNS0zLTVjMS0yLjUgMy0zLjUgNS0zczMuNSAzIDMgNXMtMi41IDMuNS01IDN6bS0yMDctOTUuNmMxLjUtLjUgMy41IDEgNCAzYzAgMi0xIDQtMyA0Yy0xLjUgLjUtMy41LTEtNC0zYy0uNS0xLjUgMS0zLjUgMy00ek00NTEuOCA0MjFDNDg5LjMgMzc2LjQgNTEyIDMxOC44IDUxMiAyNTZjMC02Ny41LTI2LjEtMTI4LjktNjguOC0xNzQuN2MtLjEgMjMuNS02LjEgNDguMi0xNi44IDY5LjJjLTExLjkgMjAuMy00OSA1OC45LTY5LjggNzguN2MtLjcgLjMtMS4xIC45LTEuNSAxLjRjLS4yIC4yLS4zIC40LS41IC42Yy01IDYuOS00IDE2LjggMyAyMS44YzIxLjMgMTUuOCA1Ni40IDQ1LjYgNTkuNCA3Mi44YzMuNSAzNC45IDI3LjkgNzUuNiAzNC4yIDg2LjJsMCAwYy44IDEuMyAxLjMgMi4xIDEuNCAyLjRjMCAyLjItLjQgNC4zLS44IDYuNXpNMzkwLjcgMjUxYy0uNSAzIDEgNS45IDQgNi40czUuOS0xIDYuNC00cy0xLTUuOS00LTYuNGMtMy0xLTUuOSAxLTYuNCA0em02MS40LTYwLjlsLTExLjQgNS40LTMgMTIuOS01LjQtMTEuNC0xMi45LTMgMTEuNC01LjQgMy0xMi45IDUuNCAxMS40IDEyLjkgM3pNMzk1LjUgNDEuM2MtMTYuMiA4LjItMjIuMSAzMi44LTI5IDYxLjRsMCAwYy0uMyAxLjQtLjcgMi44LTEgNC4yYy05LjUgMzguNS0zMC42IDM3LjYtNDEuNyAzNy4yYy0xLjEgMC0yLS4xLTIuOS0uMWMtNS4xIDAtNi00LTguOS0xNy4xYy0yLjYtMTIuMS02LjktMzItMTcuOS02My42QzI3MS40LTIuNSAyMTEuNCAxMy45IDE2NS45IDQxLjFDMTEwLjYgNzQuMiAxMzEuNSAxNDMgMTQ2LjEgMTkwLjVjLjcgMi4yIDEuNCA0LjQgMiA2LjZjLTQgNC0xMy44IDcuNS0yNiAxMS45Yy0xMi4xIDQuMy0yNi42IDkuNS00MC4zIDE2LjlDNDcuOSAyNDMuOSAxMS41IDI3NC45IDIgMjg4LjVDLjcgMjc3LjggMCAyNjcgMCAyNTZDMCAxMTQuNiAxMTQuNiAwIDI1NiAwYzUxLjQgMCA5OS40IDE1LjIgMTM5LjUgNDEuM3pNNTguOSAxODkuNmMtMS41LTItNC41LTMtNi40LTEuNXMtMyA0LjUtMS41IDYuNHM0LjUgMyA2LjQgMS41YzIuNS0xLjUgMy00LjUgMS41LTYuNHpNMzI3LjMgNjQuOWMyLTEuNSA1LS41IDYuNCAxLjVjMS41IDIuNSAxIDUuNC0xLjUgNi40Yy0yIDEuNS01IC41LTYuNC0xLjVzLS41LTUgMS41LTYuNHpNOTUuMSAxMDVjLS41IDEuNSAuNSAzIDIgM2MxLjUgLjUgMy0uNSAzLTJjLjUtMS41LS41LTMtMi0zcy0zIC41LTMgMnptODQuNy0uNWMtMy41LTQzLjEgMzcuMS01NCAzNy4xLTU0YzQ0LjEtMTUuNCA1NiA1LjkgNjYuNCAzNy42czMgNDIuNi0zOC42IDU4LjlzLTYxLjktNC41LTY0LjktNDIuNnptODkuNiAxNC45aDFjMi41IDAgNS0yIDUtNWMyLTYuOSAxLTE0LjQtMi0yMC44Yy0xLjUtMi00LTMuNS02LjQtMi41Yy0zIDEtNC41IDQtMy41IDYuOWMyIDQuNSAzIDkuOSAxLjUgMTQuOWMtLjUgMyAxLjUgNS45IDQuNSA2LjR6bS05LjktNDEuNmMtMiAwLTQtMS01LTNzLTItMy41LTMtNWMtMi0yLTItNS40IDAtNy40czUuNC0yIDcuNCAwYzIgMi41IDMuNSA1IDUgNy40cy41IDUuOS0yLjUgNy40Yy0uNiAwLTEgLjItMS4zIC4zYy0uMiAuMS0uNCAuMi0uNiAuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2xkUmVwdWJsaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjM1Ljc2IDEwLjIzYzcuNS0uMzEgMTUtLjI4IDIyLjUtLjA5IDMuNjEuMTQgNy4yLjQgMTAuNzkuNzMgNC45Mi4yNyA5Ljc5IDEuMDMgMTQuNjcgMS42MiAyLjkzLjQzIDUuODMuOTggOC43NSAxLjQ2IDcuOSAxLjMzIDE1LjY3IDMuMjggMjMuMzkgNS40IDEyLjI0IDMuNDcgMjQuMTkgNy45MiAzNS43NiAxMy4yMSAyNi41NiAxMi4yNCA1MC45NCAyOS4yMSA3MS42MyA0OS44OCAyMC4wMyAyMC4wOSAzNi43MiA0My41NSA0OC44OSA2OS4xOSAxLjEzIDIuNTkgMi40NCA1LjEgMy40NyA3Ljc0IDIuODEgNi40MyA1LjM5IDEyLjk3IDcuNTggMTkuNjMgNC4xNCAxMi4zMyA3LjM0IDI0Ljk5IDkuNDIgMzcuODMuNTcgMy4xNCAxLjA0IDYuMyAxLjQgOS40Ny41NSAzLjgzLjk0IDcuNjkgMS4xOCAxMS41Ni44MyA4LjM0Ljg0IDE2LjczLjc3IDI1LjEtLjA3IDQuOTctLjI2IDkuOTQtLjc1IDE0Ljg5LS4yNCAzLjM4LS41MSA2Ljc2LS45OCAxMC4xMi0uMzkgMi43Mi0uNjMgNS40Ni0xLjExIDguMTctLjkgNS4xNS0xLjcgMTAuMzEtMi44NyAxNS40MS00LjEgMTguNS0xMC4zIDM2LjU1LTE4LjUxIDUzLjYzLTE1Ljc3IDMyLjgzLTM4LjgzIDYyLjE3LTY3LjEyIDg1LjEyYTI0Ni41MDMgMjQ2LjUwMyAwIDAgMS01Ni45MSAzNC44NmMtNi4yMSAyLjY4LTEyLjQ2IDUuMjUtMTguODcgNy40MS0zLjUxIDEuMTYtNy4wMSAyLjM4LTEwLjU3IDMuMzktNi42MiAxLjg4LTEzLjI5IDMuNjQtMjAuMDQgNS00LjY2LjkxLTkuMzQgMS43My0xNC4wMyAyLjQ4LTUuMjUuNjYtMTAuNSAxLjQ0LTE1Ljc5IDEuNzQtNi42OS42Ni0xMy40MS44NC0yMC4xMi44MS02LjgyLjAzLTEzLjY1LS4xMi0yMC40NS0uNzktMy4yOS0uMjMtNi41Ny0uNS05LjgzLS45NS0yLjcyLS4zOS01LjQ2LS42My04LjE3LTEuMTEtNC4xMi0uNzItOC4yNS0xLjM3LTEyLjM1LTIuMjItNC4yNS0uOTQtOC40OS0xLjg5LTEyLjY5LTMuMDItOC42My0yLjE3LTE3LjA4LTUuMDEtMjUuNDEtOC4xMy0xMC40OS00LjEyLTIwLjc5LTguNzUtMzAuNjQtMTQuMjUtMi4xNC0xLjE1LTQuMjgtMi4yOS02LjM1LTMuNTctMTEuMjItNi41OC0yMS44Ni0xNC4xLTMxLjkyLTIyLjM0LTM0LjY4LTI4LjQxLTYxLjQxLTY2LjQzLTc2LjM1LTEwOC43LTMuMDktOC43NC01LjcxLTE3LjY1LTcuOC0yNi42OC0xLjQ4LTYuMTYtMi41Mi0xMi40Mi0zLjU4LTE4LjY2LS40LTIuMzUtLjYxLTQuNzMtLjk1LTcuMDktLjYtMy45Ni0uNzUtNy45Ni0xLjE3LTExLjk0LS44LTkuNDctLjcxLTE4Ljk5LS41MS0yOC40OS4xNC0zLjUxLjM0LTcuMDEuNy0xMC41MS4zMS0zLjE3LjQ2LTYuMzcuOTItOS41Mi40MS0yLjgxLjY1LTUuNjUgMS4xNi04LjQ0LjctMy45NCAxLjMtNy45IDIuMTItMTEuODIgMy40My0xNi41MiA4LjQ3LTMyLjczIDE1LjI2LTQ4LjE4IDEuMTUtMi45MiAyLjU5LTUuNzIgMy44Ni04LjU5IDguMDUtMTYuNzEgMTcuOS0zMi41NiAyOS40OS00Ny4wNiAyMC0yNS4zOCA0NS4xLTQ2LjY4IDczLjI3LTYyLjQ3IDcuNS00LjE1IDE1LjE2LTguMDUgMjMuMDctMTEuMzcgMTUuODItNi44OCAzMi40MS0xMS45NSA0OS4zMS0xNS4zOCAzLjUxLS42NyA3LjA0LTEuMjQgMTAuNTYtMS44NSAyLjYyLS40NyA1LjI4LS43IDcuOTEtMS4wOCAzLjUzLS41MyA3LjEtLjY4IDEwLjY1LTEuMDQgMi40Ni0uMjQgNC45MS0uMzYgNy4zNi0uNTFtOC42NCAyNC40MWMtOS4yMy4xLTE4LjQzLjk5LTI3LjU3IDIuMjMtNy4zIDEuMDgtMTQuNTMgMi42LTIxLjcxIDQuMy0xMy45MSAzLjUtMjcuNDggOC4zNC00MC40NiAxNC40Mi0xMC40NiA0Ljk5LTIwLjU5IDEwLjctMzAuMTggMTcuMjItNC4xOCAyLjkyLTguNCA1LjgtMTIuMzQgOS4wMy01LjA4IDMuOTctOS45OCA4LjE3LTE0LjY4IDEyLjU5LTIuNTEgMi4yNC00LjgxIDQuNy03LjIyIDcuMDYtMjguMjIgMjguNzktNDguNDQgNjUuMzktNTcuNSAxMDQuNjktMi4wNCA4LjQ0LTMuNTQgMTcuMDItNC40NCAyNS42NS0xLjEgOC44OS0xLjQ0IDE3Ljg1LTEuNDEgMjYuOC4xMSA3LjE0LjM4IDE0LjI4IDEuMjIgMjEuMzcuNjIgNy4xMiAxLjg3IDE0LjE2IDMuMiAyMS4xOCAxLjA3IDQuNjUgMi4wMyA5LjMyIDMuMzMgMTMuOTEgNi4yOSAyMy4zOCAxNi41IDQ1LjcgMzAuMDcgNjUuNzUgOC42NCAxMi45OCAxOC43OCAyNC45MyAyOS45OCAzNS43NyAxNi4yOCAxNS44MiAzNS4wNSAyOS4wNCA1NS4zNCAzOS4yMiA3LjI4IDMuNTIgMTQuNjYgNi44NyAyMi4yNyA5LjYzIDUuMDQgMS43NiAxMC4wNiAzLjU3IDE1LjIyIDQuOTggMTEuMjYgMy4yMyAyMi43NyA1LjYgMzQuMzkgNy4wNiAyLjkxLjI5IDUuODEuNjEgOC43Mi45IDEzLjgyIDEuMDggMjcuNzQgMSA0MS41NC0uNDMgNC40NS0uNiA4LjkyLS45OSAxMy4zNS0xLjc4IDMuNjMtLjY3IDcuMjgtMS4yNSAxMC44Ny0yLjEgNC4xMy0uOTggOC4yOC0xLjkxIDEyLjM2LTMuMDcgMjYuNS03LjM0IDUxLjU4LTE5LjcxIDczLjU4LTM2LjIgMTUuNzgtMTEuODIgMjkuOTYtMjUuNzYgNDIuMTItNDEuMjggMy4yNi00LjAyIDYuMTctOC4zMSA5LjEzLTEyLjU1IDMuMzktNS4wNiA2LjU4LTEwLjI1IDkuNi0xNS41NCAyLjQtNC40NCA0Ljc0LTguOTEgNi45NS0xMy40NSA1LjY5LTEyLjA1IDEwLjI4LTI0LjYyIDEzLjc1LTM3LjQ5IDIuNTktMTAuMDEgNC43NS0yMC4xNiA1LjktMzAuNDUgMS43Ny0xMy40NyAxLjk0LTI3LjEgMS4yOS00MC42NS0uMjktMy44OS0uNjctNy43Ny0xLTExLjY2LTIuMjMtMTkuMDgtNi43OS0zNy45MS0xMy44Mi01NS44LTUuOTUtMTUuMTMtMTMuNTMtMjkuNjMtMjIuNjEtNDMuMTMtMTIuNjktMTguOC0yOC4yNC0zNS42OC00NS45Ny00OS44My0yNS4wNS0yMC01NC40Ny0zNC41NS04NS42NS00Mi4wOC03Ljc4LTEuOTMtMTUuNjktMy4zNC0yMy42My00LjQ1LTMuOTEtLjU5LTcuODUtLjgyLTExLjc3LTEuMjQtNy4zOS0uNTctMTQuODEtLjcyLTIyLjIyLS41OHpNMTM5LjI2IDgzLjUzYzEzLjMtOC44OSAyOC4wOC0xNS4zOCA0My4zLTIwLjE4LTMuMTcgMS43Ny02LjQ0IDMuMzgtOS41MyA1LjI5LTExLjIxIDYuNjgtMjEuNTIgMTQuOS0zMC4zOCAyNC40OS02LjggNy40My0xMi43NiAxNS43My0xNy4wMSAyNC44OS0zLjI5IDYuODYtNS42NCAxNC4xOS02Ljg2IDIxLjcxLS45MyA0Ljg1LTEuMyA5LjgxLTEuMTcgMTQuNzUuMTMgMTMuNjYgNC40NCAyNy4wOCAxMS4yOSAzOC44MiA1LjkyIDEwLjIyIDEzLjYzIDE5LjMzIDIyLjM2IDI3LjI2IDQuODUgNC4zNiAxMC4yNCA4LjA5IDE0Ljk1IDEyLjYgMi4yNiAyLjE5IDQuNDkgNC40MiA2LjQzIDYuOTEgMi42MiAzLjMxIDQuODkgNi45OSA1Ljk5IDExLjEuOSAzLjAyLjY2IDYuMi42OSA5LjMxLjAyIDQuMS0uMDQgOC4yLjAzIDEyLjMuMTQgMy41NC0uMDIgNy4wOS4xMSAxMC42My4wOCAyLjM4LjAyIDQuNzYuMDUgNy4xNC4xNiA1Ljc3LjA2IDExLjUzLjE1IDE3LjMuMTEgMi45MS4wMiA1LjgyLjEzIDguNzQuMDMgMS42My4xMyAzLjI4LS4wMyA0LjkxLS45MS4xMi0xLjgyLjE4LTIuNzMuMTYtMTAuOTkgMC0yMS44OC0yLjYzLTMxLjk1LTYuOTMtNi0yLjctMTEuODEtNS44OS0xNy4wOS05LjgzLTUuNzUtNC4xOS0xMS4wOS04Ljk2LTE1Ljc5LTE0LjMxLTYuNTMtNy4yNC0xMS45OC0xNS4zOS0xNi42Mi0yMy45NS0xLjA3LTIuMDMtMi4yNC00LjAyLTMuMTgtNi4xMi0xLjE2LTIuNjQtMi42Mi01LjE0LTMuNjctNy44Mi00LjA1LTkuNjgtNi41Ny0xOS45NC04LjA4LTMwLjMxLS40OS00LjQ0LTEuMDktOC44OC0xLjItMTMuMzUtLjctMTUuNzMuODQtMzEuNTUgNC42Ny00Ni44MiAyLjEyLTguMTUgNC43Ny0xNi4xOCA4LjMxLTIzLjgzIDYuMzItMTQuMiAxNS4zNC0yNy4xOCAyNi4zLTM4LjE5IDYuMjgtNi4yIDEzLjEzLTExLjg0IDIwLjUzLTE2LjY3em0xNzUuMzctMjAuMTJjMi43NC43NCA1LjQxIDEuNzQgOC4wOSAyLjY4IDYuMzYgMi4zMyAxMi42OCA0Ljg0IDE4LjcxIDcuOTYgMTMuMTEgNi40NCAyNS4zMSAxNC44MSAzNS44MiAyNC45NyAxMC4yIDkuOTUgMTguNzQgMjEuNiAyNS4xNCAzNC4zNCAxLjI4IDIuNzUgMi42NCA1LjQ2IDMuODEgOC4yNiA2LjMxIDE1LjEgMTAgMzEuMjYgMTEuMjMgNDcuNTcuNDEgNC41NC40NCA5LjA5LjQ1IDEzLjY0LjA3IDExLjY0LTEuNDkgMjMuMjUtNC4zIDM0LjUzLTEuOTcgNy4yNy00LjM1IDE0LjQ5LTcuODYgMjEuMTgtMy4xOCA2LjY0LTYuNjggMTMuMTYtMTAuODQgMTkuMjQtNi45NCAxMC40Ny0xNS42IDE5Ljg3LTI1LjgyIDI3LjIyLTEwLjQ4IDcuNjQtMjIuNjQgMTMuMDItMzUuNCAxNS4zOC0zLjUxLjY5LTcuMDggMS4wOC0xMC42NiAxLjIxLTEuODUuMDYtMy43Mi4xNi01LjU2LS4xLS4yOC0yLjE1IDAtNC4zMS0uMDEtNi40Ni0uMDMtMy43My4xNC03LjQ1LjEtMTEuMTcuMTktNy4wMi4wMi0xNC4wNS4yMS0yMS4wNy4wMy0yLjM4LS4wMy00Ljc2LjAzLTcuMTQuMTctNS4wNy0uMDQtMTAuMTQuMTQtMTUuMjEuMS0yLjk5LS4yNC02LjA0LjUxLTguOTYuNjYtMi41IDEuNzgtNC44NiAzLjA5LTcuMDggNC40Ni03LjMxIDExLjA2LTEyLjk2IDE3LjY4LTE4LjI2IDUuMzgtNC4xOCAxMC40Ny04Ljc3IDE1LjAyLTEzLjg0IDcuNjgtOC4zNyAxNC4xNy0xNy44OCAxOC43OC0yOC4yNyAyLjUtNS45MyA0LjUyLTEyLjEgNS41NS0xOC40Ni44Ni00LjM3IDEuMDYtOC44MyAxLjAxLTEzLjI3LS4wMi03Ljg1LTEuNC0xNS42NS0zLjY0LTIzLjE3LTEuNzUtNS43My00LjI3LTExLjE4LTcuMDktMTYuNDUtMy44Ny02LjkzLTguNjUtMTMuMzEtMTMuOTYtMTkuMi05Ljk0LTEwLjg1LTIxLjc1LTE5Ljk0LTM0LjYtMjcuMS0xLjg1LTEuMDItMy44NC0xLjgyLTUuNjMtMi45N3ptLTEwMC44IDU4LjQ1Yy45OC0xLjE4IDEuOTktMi4zMyAzLjEyLTMuMzgtLjYxLjkzLTEuMjcgMS44MS0xLjk1IDIuNjgtMy4xIDMuODgtNS41NCA4LjMxLTcuMDMgMTMuMDYtLjg3IDMuMjctMS42OCA2LjYtMS43MyAxMC0uMDcgMi41Mi0uMDggNS4wNy4zMiA3LjU3IDEuMTMgNy42MyA0LjMzIDE0Ljg1IDguNzcgMjEuMTIgMiAyLjcgNC4yNSA1LjI3IDYuOTIgNy4zMyAxLjYyIDEuMjcgMy41MyAyLjA5IDUuMzQgMy4wNSAzLjExIDEuNjggNi4zMiAzLjIzIDkuMDcgNS40OCAyLjY3IDIuMDkgNC41NSA1LjMzIDQuNCA4Ljc5LS4wMSA3My42NyAwIDE0Ny4zNC0uMDEgMjIxLjAyIDAgMS4zNS0uMDggMi43LjA0IDQuMDQuMTMgMS40OC44MiAyLjgzIDEuNDcgNC4xNS44NiAxLjY2IDEuNzggMy4zNCAzLjE4IDQuNjIuODUuNzcgMS45NyAxLjQgMy4xNSAxLjI0IDEuNS0uMiAyLjY2LTEuMzUgMy40NS0yLjU3Ljk2LTEuNTEgMS42OC0zLjE2IDIuMjgtNC44NS43Ni0yLjEzLjQ0LTQuNDIuNTQtNi42My4xNC00LjAzLS4wMi04LjA2LjE0LTEyLjA5LjAzLTUuODkuMDMtMTEuNzcuMDYtMTcuNjYuMTQtMy42Mi4wMy03LjI0LjExLTEwLjg2LjE1LTQuMDMtLjAyLTguMDYuMTQtMTIuMDkuMDMtNS45OS4wMy0xMS45OC4wNy0xNy45Ny4xNC0zLjYyLjAyLTcuMjQuMTEtMTAuODYuMTQtMy45My0uMDItNy44Ni4xNC0xMS43OC4wMy01Ljk5LjAzLTExLjk4LjA2LTE3Ljk3LjE2LTMuOTQtLjAxLTcuODguMTktMTEuODIuMjkgMS40NC4xMyAyLjkyLjIyIDQuMzguMTkgMy42MS40MiA3LjIzLjc2IDEwLjg0LjMyIDMuNDQuNDQgNi44OS44NiAxMC4zMi4zNyAzLjEuNTEgNi4yMi45NSA5LjMxLjU3IDQuMDkuODcgOC4yMSAxLjU0IDEyLjI5IDEuNDYgOS4wNCAyLjgzIDE4LjExIDUuMDkgMjYuOTkgMS4xMyA0LjgyIDIuNCA5LjYxIDQgMTQuMyAyLjU0IDcuOSA1LjcyIDE1LjY3IDEwLjMxIDIyLjYyIDEuNzMgMi42NCAzLjg3IDQuOTggNi4xIDcuMjEuMjcuMjUuNTUuNTEuODguNzEuNi4yNSAxLjMxLS4wNyAxLjctLjU3LjcxLS44OCAxLjE3LTEuOTQgMS43LTIuOTMgNC4wNS03LjggOC4xOC0xNS41NiAxMi4zNC0yMy4zMS43LTEuMzEgMS40NC0yLjYyIDIuNTYtMy42MSAxLjc1LTEuNTcgMy44NC0yLjY5IDUuOTgtMy42MyAyLjg4LTEuMjIgNS45LTIuMTkgOS4wMy0yLjQyIDYuNTgtLjYyIDEzLjExLjc1IDE5LjU2IDEuODUgMy42OS41OCA3LjQgMS4xNyAxMS4xMyAxLjQxIDMuNzQuMSA3LjQ4LjA1IDExLjIxLS4yOCA4LjU1LS45MiAxNi45OS0yLjk2IDI0Ljk0LTYuMjUgNS4zLTIuMjQgMTAuNDYtNC44MyAxNS4zMS03LjkzIDExLjQ2LTcuMjEgMjEuNDYtMTYuNTcgMzAuMDQtMjcuMDEgMS4xNy0xLjQyIDIuMjUtMi45IDMuNDYtNC4yOC0xLjIgMy4yNC0yLjY3IDYuMzctNC4xNiA5LjQ4LTEuMjUgMi45LTIuODQgNS42MS00LjI3IDguNDItNS4xNiA5LjYzLTExLjAyIDE4LjkxLTE3Ljc1IDI3LjUyLTQuMDMgNS4yMS04LjUzIDEwLjA1LTEzLjMzIDE0LjU3LTYuNjQgNi4wNS0xNC4wNyAxMS4zNy0yMi40MyAxNC43Ni04LjIxIDMuMzctMTcuMzEgNC42My0yNi4wOSAzLjI5LTMuNTYtLjU4LTcuMDEtMS42OS0xMC40MS0yLjg4LTIuNzktLjk3LTUuMzktMi4zOC04LjAzLTMuNjktMy40My0xLjcxLTYuNjQtMy44MS05LjcxLTYuMDggMi43MSAzLjA2IDUuNjkgNS44NiA4LjcgOC42MSA0LjI3IDMuNzYgOC43NCA3LjMxIDEzLjYzIDEwLjIzIDMuOTggMi40NSA4LjI5IDQuNCAxMi44NCA1LjUxIDEuNDYuMzcgMi45Ni40NiA0LjQ1LjYtMS4yNSAxLjEtMi42MyAyLjA0LTMuOTkgMi45OC05LjYxIDYuNTQtMjAuMDEgMTEuODYtMzAuNjkgMTYuNDMtMjAuODYgOC43LTQzLjE3IDEzLjk3LTY1Ljc0IDE1LjM0LTQuNjYuMjQtOS4zMi4zNi0xMy45OC4zNi00Ljk4LS4xMS05Ljk3LS4xMy0xNC45Mi0uNjUtMTEuMi0uNzYtMjIuMjktMi43My0zMy4xNy01LjQzLTEwLjM1LTIuNzEtMjAuNTUtNi4xMi0zMC4zLTEwLjU1LTguNzEtMy44Ni0xNy4xMi04LjQyLTI0Ljk5LTEzLjc5LTEuODMtMS4zMS0zLjc0LTIuNTMtNS4zNy00LjA4IDYuNi0xLjE5IDEzLjAzLTMuMzkgMTguOTktNi40OCA1Ljc0LTIuODYgMTAuOTktNi42NiAxNS42My0xMS4wNyAyLjI0LTIuMTkgNC4yOS00LjU5IDYuMTktNy4wOS0zLjQzIDIuMTMtNi45MyA0LjE1LTEwLjYyIDUuNzgtNC40MSAyLjE2LTkuMDcgMy43Ny0xMy44MSA1LjAyLTUuNzMgMS41Mi0xMS43NCAxLjczLTE3LjYxIDEuMTQtOC4xMy0uOTUtMTUuODYtNC4yNy0yMi41MS04Ljk4LTQuMzItMi45NC04LjIyLTYuNDMtMTEuOTYtMTAuMDYtOS45My0xMC4xNi0xOC4yLTIxLjgxLTI1LjY2LTMzLjg2LTMuOTQtNi4yNy03LjUzLTEyLjc1LTExLjEyLTE5LjIyLTEuMDUtMi4wNC0yLjE1LTQuMDUtMy4xOC02LjEgMi44NSAyLjkyIDUuNTcgNS45NyA4LjQzIDguODggOC45OSA4Ljk3IDE4LjU2IDE3LjQ0IDI5LjE2IDI0LjQ4IDcuNTUgNC45IDE1LjY3IDkuMjMgMjQuNTYgMTEuMDMgMy4xMS43MyA2LjMyLjQ3IDkuNDcuODEgMi43Ny4yOCA1LjU2LjIgOC4zNC4zIDUuMDUuMDYgMTAuMTEuMDQgMTUuMTYtLjE2IDMuNjUtLjE2IDcuMjctLjY2IDEwLjg5LTEuMDkgMi4wNy0uMjUgNC4xMS0uNzEgNi4xNC0xLjIgMy44OC0uOTUgOC4xMS0uOTYgMTEuODMuNjEgNC43NiAxLjg1IDguNDQgNS42NCAxMS4zOCA5LjcxIDIuMTYgMy4wMiA0LjA2IDYuMjIgNS42NiA5LjU4IDEuMTYgMi40MyAyLjQ2IDQuNzkgMy41NSA3LjI2IDEgMi4yNCAyLjE1IDQuNDIgMy40MiA2LjUyLjY3IDEuMDIgMS40IDIuMTUgMi42MiAyLjU1IDEuMDYtLjc1IDEuNzEtMS45MSAyLjI4LTMuMDMgMi4xLTQuMTYgMy40Mi04LjY1IDQuODktMTMuMDUgMi4wMi02LjU5IDMuNzgtMTMuMjcgNS4xOS0yMC4wMiAyLjIxLTkuMjUgMy4yNS0xOC43MiA0LjU0LTI4LjEzLjU2LTMuOTguODMtNy45OSAxLjMxLTExLjk3Ljg3LTEwLjY0IDEuOS0yMS4yNyAyLjI0LTMxLjk0LjA4LTEuODYuMjQtMy43MS4yNS01LjU3LjAxLTQuMzUuMjUtOC42OS4yMi0xMy4wMy0uMDEtMi4zOC0uMDEtNC43NiAwLTcuMTMuMDUtNS4wNy0uMi0xMC4xNC0uMjItMTUuMjEtLjItNi42MS0uNzEtMTMuMi0xLjI5LTE5Ljc4LS43My01Ljg4LTEuNTUtMTEuNzgtMy4xMi0xNy41MS0yLjA1LTcuNzUtNS41OS0xNS4wMy05LjgtMjEuODItMy4xNi01LjA3LTYuNzktOS44OC0xMS4wOS0xNC4wMy0zLjg4LTMuODYtOC41OC03LjA4LTEzLjk0LTguNDUtMS41LS40MS0zLjA2LS40NS00LjU5LS42NC4wNy0yLjk5LjctNS45MyAxLjI2LTguODUgMS41OS03LjcxIDMuOC0xNS4zIDYuNzYtMjIuNiAxLjUyLTQuMDMgMy40MS03LjkgNS4zOS0xMS43MiAzLjQ1LTYuNTYgNy42Mi0xMi43OSAxMi40Ni0xOC40NnptMzEuMjcgMS43Yy4zNS0uMDYuNzEtLjEyIDEuMDctLjE5LjE5IDEuNzkuMDkgMy41OC4xIDUuMzd2MzguMTNjLS4wMSAxLjc0LjEzIDMuNDktLjE1IDUuMjItLjM2LS4wMy0uNzEtLjA1LTEuMDYtLjA1LS45NS0zLjc1LTEuNzItNy41NS0yLjYyLTExLjMxLS4zOC0xLjUzLS41OC0zLjA5LTEuMDctNC41OS0xLjctLjI0LTMuNDMtLjE3LTUuMTUtLjItNS4wNi0uMDEtMTAuMTMgMC0xNS4xOS0uMDEtMS42Ni0uMDEtMy4zMi4wOS00Ljk4LS4wMy0uMDMtLjM5LS4yNi0uOTEuMTYtMS4xOCAxLjI4LS42NSAyLjcyLS44OCA0LjA2LTEuMzUgMy40My0xLjE0IDYuODgtMi4xNiAxMC4zMS0zLjMxIDEuMzktLjQ4IDIuOS0uNzIgNC4xNi0xLjU0LjA0LS41Ni4wMi0xLjEzLS4wNS0xLjY4LTEuMjMtLjU1LTIuNTMtLjg3LTMuODEtMS4yOC0zLjEzLTEuMDMtNi4yOS0xLjk2LTkuNDEtMy4wMi0xLjc5LS42Mi0zLjY3LTEtNS40MS0xLjc5LS4wMy0uMzctLjA3LS43My0uMTEtMS4wOSA1LjA5LS4xOSAxMC4yLjA2IDE1LjMtLjEyIDMuMzYtLjEzIDYuNzMuMDggMTAuMDktLjA3LjEyLS4zOS4yNi0uNzcuMzctMS4xNiAxLjA4LTQuOTQgMi4zMy05LjgzIDMuMzktMTQuNzV6bTUuOTctLjJjLjM2LjA1LjcyLjEyIDEuMDguMi45OCAzLjg1IDEuNzMgNy43NiAyLjcxIDExLjYxLjM2IDEuNDIuNTYgMi44OCAxLjAzIDQuMjcgMi41My4xOCA1LjA3LS4wMSA3LjYxLjA1IDUuMTYuMTIgMTAuMzMuMTIgMTUuNDkuMDcuNzYtLjAxIDEuNTIuMDMgMi4yOC4wOC0uMDQuMzYtLjA3LjcyLS4xIDEuMDgtMS44Mi44My0zLjc4IDEuMjUtNS42NyAxLjg5LTMuNzMgMS4yMy03LjQ4IDIuMzktMTEuMjIgMy41Ny0uNTcuMTctMS4xMi40Mi0xLjY3LjY0LS4xNS41NS0uMTggMS4xMi0uMTIgMS42OS44Ny40OCAxLjgyLjgxIDIuNzcgMS4wOSA0Ljg4IDEuNTIgOS43MyAzLjE0IDE0LjYzIDQuNi4zOC4xMy43OC4yNyAxLjEzLjQ5LjQuMjcuMjMuNzkuMTUgMS4xOC0xLjY2LjEzLTMuMzEuMDMtNC45Ny4wNC01LjE3LjAxLTEwLjMzLS4wMS0xNS41LjAxLTEuNjEuMDMtMy4yMi0uMDItNC44Mi4yMS0uNTIgMS42Ny0uNzIgMy40Mi0xLjE3IDUuMTEtLjk0IDMuNTctMS41MiA3LjI0LTIuNTQgMTAuNzgtLjM2LjAxLS43MS4wMi0xLjA2LjA2LS4yOS0xLjczLS4xNS0zLjQ4LS4xNS01LjIydi0zOC4xM2MuMDItMS43OC0uMDgtMy41OC4xMS01LjM3ek02NS4wNSAxNjguMzNjMS4xMi0yLjE1IDIuMDgtNC40IDMuMzctNi40Ni0xLjgyIDcuNTYtMi45MSAxNS4yNy0zLjYyIDIzLS44IDcuNzEtLjg1IDE1LjQ5LS41NCAyMy4yMyAxLjA1IDE5Ljk0IDUuNTQgMzkuODMgMTQuMjMgNTcuODggMi45OSA1Ljk5IDYuMzUgMTEuODMgMTAuNSAxNy4xMSA2LjEyIDcuNDcgMTIuNTMgMTQuNzYgMTkuODQgMjEuMDkgNC44IDQuMSA5Ljk5IDcuNzggMTUuNTQgMTAuOCAzLjI3IDEuNjUgNi41MSAzLjM5IDkuOTQgNC42OCA1LjAxIDIuMDMgMTAuMTkgMy42MSAxNS40MiA0Ljk0IDMuODMuOTYgNy43OCAxLjQxIDExLjUyIDIuNzEgNSAxLjU3IDkuNDcgNC42MSAxMy4wMyA4LjQzIDQuOTMgNS4yMyA4LjA5IDExLjg3IDEwLjIgMTguNjcuOTkgMi45IDEuNTkgNS45MSAyLjE3IDguOTIuMTUuNzUuMjIgMS41Mi4xNiAyLjI5LTYuNSAyLjc4LTEzLjI2IDUuMDYtMjAuMjYgNi4xOC00LjExLjc4LTguMjkuOTktMTIuNDYgMS4wOC0xMC4yNS4yNC0yMC40Ny0xLjc2LTMwLjEyLTUuMTItMy43NC0xLjQyLTcuNDktMi44NS0xMS4wMy00LjcyLTguMDYtMy44NC0xNS42NC04LjctMjIuNDYtMTQuNDYtMi45Mi0yLjU1LTUuODMtNS4xMy04LjQtOC4wMy05LjE2LTkuODMtMTYuMy0yMS40MS0yMS43OS0zMy42NS0yLjM5LTUuNTUtNC42MS0xMS4xOC02LjM3LTE2Ljk2LTEuMTctMy45NC0yLjM2LTcuODktMy4yNi0xMS45MS0uNzUtMi45NC0xLjIyLTUuOTUtMS44Ny04LjkyLS40Ni0yLjE0LS42OS00LjMyLTEuMDMtNi40OC0uODUtNS40My0xLjI4LTEwLjkzLTEuMzMtMTYuNDMuMTEtNi4xOC4yNS0xMi4zNyAxLjA3LTE4LjUuNC0yLjg2LjY3LTUuNzQgMS4xNS04LjYuOTgtNS43IDIuMTQtMTEuMzcgMy43MS0xNi45MyAzLjA5LTExLjY1IDcuNDgtMjIuOTUgMTIuNjktMzMuODR6bTM2My43My02LjQ0YzEuMSAxLjY2IDEuOTEgMy40OCAyLjc4IDUuMjYgMi4xIDQuNDUgNC4yNCA4LjkgNi4wMiAxMy40OSA3LjYxIDE4Ljc2IDEyLjMgMzguNzkgMTMuMDQgNTkuMDUuMDIgMS43Ni4wNyAzLjUyLjExIDUuMjkuMTMgOS41Ny0xLjI3IDE5LjA5LTMuMTggMjguNDUtLjczIDMuNTktMS41NCA3LjE3LTIuNTggMTAuNjktNC4wNCAxNC43Mi0xMCAyOS0xOC40MSA0MS43OC04LjIxIDEyLjU3LTE5LjAxIDIzLjU1LTMxLjg0IDMxLjQxLTUuNzMgMy41OS0xMS43OSA2LjY0LTE4LjA1IDkuMTktNS43OCAyLjE5LTExLjcxIDQuMDMtMTcuOCA1LjExLTYuNCAxLjA1LTEyLjkxIDEuNTItMTkuNCAxLjIzLTcuOTItLjQ4LTE1Ljc4LTIuMDctMjMuMjEtNC44NS0xLjk0LS44LTMuOTQtMS40Ni01Ljg0LTIuMzMtLjIxLTEuNTEuMjUtMi45OS41My00LjQ2IDEuMTYtNS43NCAzLjAzLTExLjM2IDUuNy0xNi41OCAyLjM3LTQuNTEgNS41Mi04LjY1IDkuNDYtMTEuOSAyLjQzLTIuMDUgNS4yNC0zLjYxIDguMTYtNC44MyAzLjU4LTEuNSA3LjQ3LTEuOTcgMTEuMjQtMi44MyA3LjIzLTEuNzEgMTQuMzctMy45MyAyMS4xNS03IDEwLjM1LTQuNjUgMTkuNzEtMTEuMzggMjcuNjUtMTkuNDYgMS41OS0xLjYxIDMuMjMtMy4xOCA0Ljc0LTQuODcgMy4zNy0zLjc2IDYuNzEtNy41NyA5Ljg1LTExLjUzIDcuNDgtMTAuMDcgMTIuODItMjEuNTkgMTYuNzEtMzMuNDggMS41OC01LjMgMy4yMS0xMC42IDQuMjEtMTYuMDUuNjMtMi44NyAxLjA0LTUuNzggMS41Mi04LjY4Ljg3LTYuMDkgMS41OS0xMi4yMiAxLjY4LTE4LjM4LjEyLTYuNjUuMTQtMTMuMzItLjUzLTE5Ljk0LS43My03Ljk5LTEuODctMTUuOTYtMy43MS0yMy43OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT3BlbmNhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIzLjMgNDQwLjdjMCAyNS4zLTIwLjMgNDUuNi00NS42IDQ1LjZzLTQ1LjgtMjAuMy00NS44LTQ1LjYgMjAuNi00NS44IDQ1LjgtNDUuOGMyNS40IDAgNDUuNiAyMC41IDQ1LjYgNDUuOHptLTI1My45LTQ1LjhjLTI1LjMgMC00NS42IDIwLjYtNDUuNiA0NS44czIwLjMgNDUuNiA0NS42IDQ1LjYgNDUuOC0yMC4zIDQ1LjgtNDUuNi0yMC41LTQ1LjgtNDUuOC00NS44em0yOTEuNy0yNzBDMTU4LjkgMTI0LjkgODEuOSAxMTIuMSAwIDI1LjdjMzQuNCA1MS43IDUzLjMgMTQ4LjkgMzczLjEgMTQ0LjIgMzMzLjMtNSAxMzAgODYuMSA3MC44IDE4OC45IDE4Ni43LTE2Ni43IDMxOS40LTIzMy45IDE3LjItMjMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9wZW5pZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzEuNSA0MzJsLTY4IDMyQzg4LjUgNDUzLjcgMCAzOTIuNSAwIDMxOC4yYzAtNzEuNSA4Mi41LTEzMSAxOTEuNy0xNDQuM3Y0M2MtNzEuNSAxMi41LTEyNCA1My0xMjQgMTAxLjMgMCA1MSA1OC41IDkzLjMgMTM1LjcgMTAzdi0zNDBsNjgtMzMuMnYzODR6TTQ0OCAyOTFsLTEzMS4zLTI4LjUgMzYuOC0yMC43Yy0xOS41LTExLjUtNDMuNS0yMC03MC0yNC44di00M2M0Ni4yIDUuNSA4Ny43IDE5LjUgMTIwLjMgMzkuM2wzNS0xOS44TDQ0OCAyOTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9wZW5zdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3MS4xIDEwMi43cy0uMyAxOC4zLS4zIDIwLjNjLTkuMS0zLTc0LjQtMjQuMS0xMzUuNy0yNi4zYy01MS45LTEuOC0xMjIuOC00LjMtMjIzIDU3LjNjLTE5LjQgMTIuNC03My45IDQ2LjEtOTkuNiAxMDkuN0M3IDI3Ny0uMSAzMDcgNyAzMzUuMWMzLjMgMTIuOCA4LjkgMjQuOSAxNi41IDM1LjdjMTcuNCAyNSA0Ni42IDQxLjYgNzguMSA0NC40YzQ0LjQgMy45IDc4LjEtMTYgOTAtNTMuM2M4LjItMjUuOCAwLTYzLjYtMzEuNS04Mi45Yy0yNS42LTE1LjctNTMuMy0xMi4xLTY5LjItMS42Yy0xMy45IDkuMi0yMS44IDIzLjUtMjEuNiAzOS4yYy4zIDI3LjggMjQuMyA0Mi42IDQxLjUgNDIuNmM1LjQgMCAxMC43LS45IDE1LjgtMi43YzYuNS0xLjggMTMuMy02LjUgMTMuMy0xNC45YzAtMTIuMS0xMS42LTE0LjgtMTYuOC0xMy45Yy0yLjkgLjUtNC41IDItMTEuOCAyLjRjLTItLjItMTItMy4xLTEyLTE0VjMxNmMuMi0xMi4zIDEzLjItMTggMjUuNS0xNi45YzMyLjMgMi44IDQ3LjcgNDAuNyAyOC41IDY1LjdDMTM1IDM4OC41IDc2LjcgMzg4IDUzLjYgMzQ0LjRjLTI2LTQ5LjIgMTIuNy0xMTEuMiA4Ny05OC40YzMzLjIgNS43IDgzLjYgMzUuNSAxMDIuNCAxMDQuM2g0NS45Yy01LjctMTcuNi04LjktNjguMyA0Mi43LTY4LjNjNTYuNyAwIDYzLjkgMzkuOSA3OS44IDY4LjNINDYwYy0xMi44LTE4LjMtMjEuNy0zOC43LTE4LjktNTUuOGM1LjYtMzMuOCAzOS43LTE4LjQgODIuNC0xNy40YzY2LjUgLjQgMTAyLjEtMjcgMTAzLjEtMjhjMy43LTMuMSA2LjUtMTUuOCA3LTE3LjdjMS4zLTUuMS0zLjItMi40LTMuMi0yLjRjLTguNyA1LjItMzAuNSAxNS4yLTUwLjkgMTUuNmMtMjUuMyAuNS03Ni4yLTI1LjQtODEuNi0yOC4yYy0uMy0uNCAuMSAxLjItMTEtMjUuNWM4OC40IDU4LjMgMTE4LjMgNDAuNSAxNDUuMiAyMS43Yy44LS42IDQuMy0yLjkgMy42LTUuN2MtMTMuOC00OC4xLTIyLjQtNjIuNy0zNC41LTY5LjZjLTM3LTIxLjYtMTI1LTM0LjctMTI5LjItMzUuM2MuMS0uMS0uOS0uMy0uOSAuN2wwIDB6bTEzNS42IDc1LjRhMzcuNiAzNy42IDAgMSAxIC03NS4yLTIuNiAzNy42IDM3LjYgMCAxIDEgNzUuMiAyLjZ6bS0zNi42LTI3LjlhMjYuMyAyNi4zIDAgMSAwIC0xLjcgNTIuNSAyNi4zIDI2LjMgMCAxIDAgMS43LTUyLjV6bTQuMyAyOC44Yy0xNS40IDAtMTUuNC0xNS42IDAtMTUuNnMxNS40IDE1LjYgMCAxNS42djB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9wZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy45IDMyLjdjLTE3MC4yIDAtMjUyLjYgMjIzLjgtMTQ3LjUgMzU1LjEgMzYuNSA0NS40IDg4LjYgNzUuNiAxNDcuNSA3NS42IDM2LjMgMCA3MC4zLTExLjEgOTkuNC0zMC40LTQzLjggMzkuMi0xMDEuOSA2My0xNjUuMyA2My0zLjkgMC04IDAtMTEuOS0uM0MxMDQuNiA0ODkuNiAwIDM4MS4xIDAgMjQ4IDAgMTExIDExMSAwIDI0OCAwaC44YzYzLjEuMyAxMjAuNyAyNC4xIDE2NC40IDYzLjEtMjktMTkuNC02My4xLTMwLjQtOTkuMy0zMC40em0xMDEuOCAzOTcuN2MtNDAuOSAyNC43LTkwLjcgMjMuNi0xMzItNS44IDU2LjItMjAuNSA5Ny43LTkxLjYgOTcuNy0xNzYuNiAwLTg0LjctNDEuMi0xNTUuOC05Ny40LTE3Ni42IDQxLjgtMjkuMiA5MS4yLTMwLjMgMTMyLjktNSAxMDUuOSA5OC43IDEwNS41IDI2NS43LTEuMiAzNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9wdGluTW9uc3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzIuNiA0MjEuNGM1LjYtOS41IDQuNy0xNS4yLTUuNC0xMS42LTMtNC45LTctOS41LTExLjEtMTMuOCAyLjktOS43LS43LTE0LjItMTAuOC05LjItNC42LTMuMi0xMC4zLTYuNS0xNS45LTkuMiAwLTE1LjEtMTEuNi0xMS42LTE3LjYtNS43LTEwLjQtMS41LTE4LjctLjMtMjYuOCA1LjcuMy02LjUuMy0xMyAuMy0xOS43IDEyLjYgMCA0MC4yLTExIDQ1LjktMzYuMiAxLjQtNi44IDEuNi0xMy44LS4zLTIxLjktMy0xMy41LTE0LjMtMjEuMy0yNS4xLTI1LjctLjgtNS45LTcuNi0xNC4zLTE0LjktMTUuOXMtMTIuNCA0LjktMTQuMSAxMC4zYy04LjUgMC0xOS4yIDIuOC0yMS4xIDguNC01LjQtLjUtMTEuMS0xLjQtMTYuOC0xLjkgMi43LTEuOSA1LjQtMy41IDguNC00LjYgNS40LTkuMiAxNC42LTExLjQgMjUuNy0xMS42VjI1NmMxOS41LS41IDQzLTUuOSA1My44LTE4LjEgMTIuNy0xMy44IDE0LjYtMzcuMyAxMi40LTU1LjEtMi40LTE3LjMtOS43LTM3LjYtMjQuNi00OC4xLTguNC01LjktMjEuNi0uOC0yMi43IDkuNS0yLjIgMTkuNiAxLjIgMzAtMzguNiAyNS4xLTEwLjMtMjMuOC0yNC42LTQ0LjYtNDIuNy02MEMzNDEgNDkuNiAyNDIuOSA1NS41IDE2Ni40IDcxLjdjMTkuNyA0LjYgNDEuMSA4LjYgNTkuNyAxNi41LTI2LjIgMi40LTUyLjcgMTEuMy03Ni4yIDIzLjItMzIuOCAxNy00NCAyOS45LTU2LjcgNDIuNCAxNC45LTIuMiAyOC45LTUuMSA0My44LTMuOC05LjcgNS40LTE4LjQgMTIuMi0yNi41IDIwLTI1LjguOS0yMy44LTUuMy0yNi4yLTI1LjktMS4xLTEwLjUtMTQuMy0xNS40LTIyLjctOS43LTI4LjEgMTkuOS0zMy41IDc5LjktMTIuMiAxMDMuNSAxMC44IDEyLjIgMzUuMSAxNy4zIDU0LjkgMTcuOC0uMyAxLjEtLjMgMS45LS4zIDIuNyAxMC44LjUgMTkuNSAyLjcgMjQuNiAxMS42IDMgMS4xIDUuNyAyLjcgOC4xIDQuNi01LjQuNS0xMS4xIDEuNC0xNi41IDEuOS0zLjMtNi42LTEzLjctOC4xLTIxLjEtOC4xLTEuNi01LjctNi41LTEyLjItMTQuMS0xMC4zLTYuOCAxLjktMTQuMSAxMC0xNC45IDE1LjktMjIuNSA5LjUtMzAuMSAyNi44LTI1LjEgNDcuNiA1LjMgMjQuOCAzMyAzNi4yIDQ1LjkgMzYuMnYxOS43Yy02LjYtNS0xNC4zLTcuNS0yNi44LTUuNy01LjUtNS41LTE3LjMtMTAuMS0xNy4zIDUuNy01LjkgMi43LTExLjQgNS45LTE1LjkgOS4yLTkuOC00LjktMTMuNi0xLjctMTEuMSA5LjItNC4xIDQuMy03LjggOC42LTExLjEgMTMuOC0xMC4yLTMuNy0xMSAyLjItNS40IDExLjYtMS4xIDMuNS0xLjYgNy0xLjkgMTAuOC0uNSAzMS42IDQ0LjYgNjQgNzMuNSA2NS4xIDE3LjMuNSAzNC42LTguNCA0My0yMy41IDExMy4yIDQuOSAyMjYuNyA0LjEgMzQwLjIgMCA4LjEgMTUuMSAyNS40IDI0LjMgNDIuNyAyMy41IDI5LjItMS4xIDc0LjMtMzMuNSA3My41LTY1LjEuMi0zLjctLjctNy4yLTEuNy0xMC43em0tNzMuOC0yNTRjMS4xLTMgMi40LTguNCAyLjQtMTQuNiAwLTUuOSA2LjgtOC4xIDE0LjEtLjggMTEuMSAxMS42IDE0LjkgNDAuNSAxMy44IDUxLjEtNC4xLTEzLjYtMTMtMjktMzAuMy0zNS43em0tNC42IDYuN2MxOS41IDYuMiAyOC42IDI3LjYgMjkuNyA0OC45LTEuMSAyLjctMyA1LjQtNC45IDcuNi01LjcgNS45LTE1LjQgMTAtMjYuMiAxMi4yIDQuMy0yMS4zLjMtNDcuMy0xMi43LTYzIDQuOS0uOCAxMC45LTIuNCAxNC4xLTUuN3ptLTI0LjEgNi44YzEzLjggMTEuOSAyMCAzOS4yIDE0LjEgNjMuNS00LjEuNS04LjEuOC0xMS42LjgtMS45LTIxLjktNi44LTQ0LTE0LjMtNjQuNiAzLjcuMyA4LjEuMyAxMS44LjN6TTQ3LjUgMjAzYy0xLjEtMTAuNSAyLjQtMzkuNSAxMy44LTUxLjEgNy03LjMgMTQuMS01LjEgMTQuMS44IDAgNi4yIDEuNCAxMS42IDIuNCAxNC42LTE3LjMgNi44LTI2LjIgMjIuMi0zMC4zIDM1Ljd6bTkuNyAyNy42Yy0xLjktMi4yLTMuNS00LjktNC45LTcuNiAxLjQtMjEuMyAxMC4zLTQyLjcgMjkuNy00OC45IDMuMiAzLjIgOS4yIDQuOSAxNC4xIDUuNy0xMyAxNS43LTE3IDQxLjYtMTIuNyA2My0xMC44LTIuMi0yMC41LTYtMjYuMi0xMi4yem00Ny45IDE0LjZjLTQuMSAwLTguMS0uMy0xMi43LS44LTQuNi0xOC42LTEuOS0zOC45IDUuNC01M3YuM2wxMi4yLTUuMWM0LjktMS45IDkuNy0zLjggMTQuOS00LjktMTAuNyAxOS43LTE3LjQgNDEuMy0xOS44IDYzLjV6bTE4NC0xNjIuN2M0MS45IDAgNzYuMiAzNCA3Ni4yIDc1LjkgMCA0Mi4yLTM0LjMgNzYuMi03Ni4yIDc2LjJzLTc2LjItMzQtNzYuMi03Ni4yYzAtNDEuOCAzNC4zLTc1LjkgNzYuMi03NS45em0xMTUuNiAxNzQuM2MtLjMgMTcuOC03IDQ4LjktMjMgNTctMTMuMiA2LjYtNi41LTcuNS0xNi41LTU4LjEgMTMuMy4zIDI2LjYuMyAzOS41IDEuMXptLTU0LTEuNmMuOCA0LjkgMy44IDQwLjMtMS42IDQxLjktMTEuNiAzLjUtNDAgNC4zLTUxLjEtMS4xLTQuMS0zLTQuNi0zNS45LTQuMy00MS4xdi4zYzE4LjktLjMgMzguMS0uMyA1NyAwek0yNzguMyAzMDljLTEzIDMuNS00MS42IDQuMS01NC42LTEuNi02LjUtMi43LTMuOC00Mi40LTEuOS01MS42IDE5LjItLjUgMzguNC0uNSA1Ny44LS44di4zYzEuMSA4LjMgMy4zIDUxLjItMS4zIDUzLjd6bS0xMDYuNS01MS4xYzEyLjItLjggMjQuNi0xLjQgMzYuOC0xLjYtMi40IDE1LjQtMyA0My41LTQuOSA1Mi4yLTEuMSA2LjgtNC4zIDYuOC05LjcgNC4zLTIxLjktOS44LTI3LjYtMzUuMi0yMi4yLTU0Ljl6bS0zNS40IDMxLjNjNy44LTEuMSAxNS43LTEuOSAyMy41LTIuNyAxLjYgNi4yIDMuOCAxMS45IDcgMTcuNiAxMCAxNyA0NCAzNS43IDQ1LjEgNyA2LjIgMTQuOSA0MC44IDEyLjIgNTQuOSAxMC44IDE1LjctMS40IDIzLjgtMS40IDI2LjgtMTQuMyAxMi40IDQuMyAzMC44IDQuMSA0NCAzIDExLjMtLjggMjAuOC0uNSAyNC42LTguOSAxLjEgNS4xIDEuOSAxMS42IDQuNiAxNi44IDEwLjggMjEuMyAzNy4zIDEuNCA0Ni44LTMxLjYgOC42LjggMTcuNiAxLjkgMjYuNSAyLjctLjQgMS4zLTMuOCA3LjMgNy4zIDExLjYtNDcuNiA0Ny05NS43IDg3LjgtMTYzLjIgMTA3LTYzLjItMjAuOC0xMTIuMS01OS41LTE1NS45LTEwNi41IDkuNi0zLjQgMTAuNC04LjggOC0xMi41em0tMjEuNiAxNzIuNWMtMy44IDE3LjgtMjEuOSAyOS43LTM5LjcgMjguOS0xOS4yLS44LTQ2LjUtMTctNTkuMi0zNi41LTIuNy0zMS4xIDQzLjgtNjEuMyA2Ni4yLTU0LjYgMTQuOSA0LjMgMjcuOCAzMC44IDMzLjUgNTQgMCAzLS4zIDUuNy0uOCA4LjJ6bS04LjctNjZjLS41LTEzLjUtLjUtMjctLjMtNDAuNWguM2MyLjctMS42IDUuNy0zLjggNy44LTYuNSA2LjUtMS42IDEzLTUuMSAxNS4xLTkuMiAzLjMtNy4xLTctNy41LTUuNC0xMi40IDIuNy0xLjEgNS43LTIuMiA3LjgtMy41IDI5LjIgMjkuMiA1OC42IDU2LjUgOTcuMyA3Ny0zNi44IDExLjMtNzIuNCAyNy42LTEwNS45IDQ3LTEuMi0xOC42LTcuNy0zNS45LTE2LjctNTEuOXptMzM3LjYgNjQuNmMtMTAzIDMuNS0yMDYuMiA0LjEtMzA5LjQgMCAwIC4zIDAgLjMtLjMuM3YtLjNoLjNjMzUuMS0yMS42IDcyLjItMzkuMiAxMTIuNC01MC44IDExLjYgNS4xIDIzIDkuNSAzNC45IDEzLjIgMi4yLjggMi4yLjggNC4zIDAgMTQuMy00LjEgMjguNC05LjIgNDIuMi0xNS40IDQxLjUgMTEuNyA3OC44IDMxLjcgMTE1LjYgNTN6bTEwLjUtMTIuNGMtMzUuOS0xOS41LTczLTM1LjktMTExLjktNDcuNiAzOC4xLTIwIDcxLjktNDcuMyAxMDMuNS03Ni43IDIuMiAxLjQgNC42IDIuNCA3LjYgMy4yIDAgLjguMyAxLjkuNSAyLjQtNC42IDIuNy03LjggNi4yLTUuOSAxMC4zIDIuMiAzLjggOC42IDcuNiAxNS4xIDguOSAyLjQgMi43IDUuMSA1LjEgOC4xIDYuOCAwIDEzLjgtLjMgMjcuNi0uOCA0MS4zbC4zLS4zYy05LjMgMTUuOS0xNS41IDM3LTE2LjUgNTEuN3ptMTA1LjkgNi4yYy0xMi43IDE5LjUtNDAgMzUuNy01OS4yIDM2LjUtMTkuMy45LTQwLjUtMTMuMi00MC41LTM3IDUuNy0yMy4yIDE4LjktNDkuNyAzMy41LTU0IDIyLjctNi45IDY5LjIgMjMuNCA2Ni4yIDU0LjV6TTM3Mi45IDc1LjJjLTMuOC03Mi4xLTEwMC44LTc5LjctMTI2LTIzLjUgNDQuNi0yNC4zIDkwLjMtMTUuNyAxMjYgMjMuNXpNNzQuOCA0MDcuMWMtMTUuNyAxLjYtNDkuNSAyNS40LTQ5LjUgNDMuMiAwIDExLjYgMTUuNyAxOS41IDMyLjIgMTQuOSAxMi4yLTMuMiAzMS4xLTE3LjYgMzUuOS0yNy4zIDYtMTEuNi0zLjctMzIuNy0xOC42LTMwLjh6bTIxNS45LTE3Ni4yYzI4LjYgMCA1MS45LTIxLjYgNTEuOS00OC40IDAtMzYuMS00MC41LTU4LjEtNzIuMi00NC4zIDkuNSAzIDE2LjUgMTEuNiAxNi41IDIxLjYgMCAyMy4zLTMzLjMgMzItNDYuNSAxMS4zLTcuMyAzNC4xIDE5LjQgNTkuOCA1MC4zIDU5Ljh6TTY4IDQ3NC4xYy41IDYuNSAxMi4yIDEyLjcgMjEuNiA5LjUgNi44LTIuNyAxNC42LTEwLjUgMTcuMy0xNi4yIDMtNy0xLjEtMjAtOS43LTE4LjQtOC45IDEuNi0yOS43IDE2LjctMjkuMiAyNS4xem00MzMuMi02N2MtMTQuOS0xLjktMjQuNiAxOS4yLTE4LjkgMzAuOCA0LjkgOS43IDI0LjEgMjQuMSAzNi4yIDI3LjMgMTYuNSA0LjYgMzIuMi0zLjIgMzIuMi0xNC45IDAtMTcuOC0zMy44LTQxLjYtNDkuNS00My4yek00NzguOCA0NDljLTguNC0xLjYtMTIuNCAxMS4zLTkuNSAxOC40IDIuNCA1LjcgMTAuMyAxMy41IDE3LjMgMTYuMiA5LjIgMy4yIDIxLjEtMyAyMS4zLTkuNS45LTguNC0yMC4yLTIzLjUtMjkuMS0yNS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPcmNpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTQuNzUgMTg4LjE5aC00NS45MlYzNDJoNDcuNDdjNjcuNjIgMCA4My4xMi01MS4zNCA4My4xMi03Ni45MSAwLTQxLjY0LTI2LjU0LTc2LjktODQuNjctNzYuOXpNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptLTgwLjc5IDM2MC43NmgtMjkuODR2LTIwNy41aDI5Ljg0em0tMTQuOTItMjMxLjE0YTE5LjU3IDE5LjU3IDAgMSAxIDE5LjU3LTE5LjU3IDE5LjY0IDE5LjY0IDAgMCAxLTE5LjU3IDE5LjU3ek0zMDAgMzY5aC04MVYxNjEuMjZoODAuNmM3Ni43MyAwIDExMC40NCA1NC44MyAxMTAuNDQgMTAzLjg1QzQxMCAzMTguMzkgMzY4LjM4IDM2OSAzMDAgMzY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPc2kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyNjYuNDRDMTAuMyAxMzAuNjQgMTA1LjQgMzQgMjIxLjggMTguMzRjMTM4LjgtMTguNiAyNTUuNiA3NS44IDI3OCAyMDEuMSAyMS4zIDExOC44LTQ0IDIzMC0xNTEuNiAyNzQtOS4zIDMuOC0xNC40IDEuNy0xOC03LjdxLTI2LjctNjkuNDUtNTMuNC0xMzljLTMuMS04LjEtMS0xMy4yIDctMTYuOCAyNC4yLTExIDM5LjMtMjkuNCA0My4zLTU1LjhhNzEuNDcgNzEuNDcgMCAwIDAtNjQuNS04Mi4yYy0zOS0zLjQtNzEuOCAyMy43LTc3LjUgNTkuNy01LjIgMzMgMTEuMSA2My43IDQxLjkgNzcuNyA5LjYgNC40IDExLjUgOC42IDcuOCAxOC40cS0yNi44NSA2OS45LTUzLjcgMTM5LjljLTIuNiA2LjktOC4zIDkuMy0xNS41IDYuNS01Mi42LTIwLjMtMTAxLjQtNjEtMTMwLjgtMTE5LTI0LjktNDkuMi0yNS4yLTg3LjctMjYuOC0xMDguN3ptMjAuOS0xLjljLjQgNi42LjYgMTQuMyAxLjMgMjIuMSA2LjMgNzEuOSA0OS42IDE0My41IDEzMSAxODMuMSAzLjIgMS41IDQuNC44IDUuNi0yLjNxMjIuMzUtNTguNjUgNDUtMTE3LjNjMS4zLTMuMy42LTQuOC0yLjQtNi43LTMxLjYtMTkuOS00Ny4zLTQ4LjUtNDUuNi04NiAxLTIxLjYgOS4zLTQwLjUgMjMuOC01Ni4zIDMwLTMyLjcgNzctMzkuOCAxMTUuNS0xNy42YTkxLjY0IDkxLjY0IDAgMCAxIDQ1LjIgOTAuNGMtMy42IDMwLjYtMTkuMyA1My45LTQ1LjcgNjkuOC0yLjcgMS42LTMuNSAyLjktMi4zIDZxMjIuOCA1OC44IDQ1LjIgMTE3LjdjMS4yIDMuMSAyLjQgMy44IDUuNiAyLjMgMzUuNS0xNi42IDY1LjItNDAuMyA4OC4xLTcyIDM0LjgtNDguMiA0OS4xLTEwMS45IDQyLjMtMTYxLTEzLjctMTE3LjUtMTE5LjQtMjE0LjgtMjU1LjUtMTk4LTEwNi4xIDEzLTE5NS4zIDEwMi41LTE5Ny4xIDIyNS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWRsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk3LjkgMEwyOTggLjAwMUMzMDUuNiAuMTA3OCAzMTIuNCA0LjcyIDMxNS41IDExLjc4TDQ0Ny41IDMyMC4zTDQ0Ny44IDMyMC4yTDQ0OCAzMjAuNkw0NDUuMiAzMzAuNkw0MDIuMyA0ODguNkMzOTguNiA1MDQuOCAzODIuNiA1MTQuOSAzNjYuNSA1MTEuMkwyOTguMSA0OTUuNkwyMjkuNiA1MTEuMkMyMTMuNSA1MTQuOSAxOTcuNSA1MDQuOCAxOTMuOCA0ODguNkwxNTAuOSAzMzAuNkwxNDguMiAzMjAuNkwxNDguMyAzMjAuMkwyODAuNCAxMS43OEMyODMuNCA0Ljc5NyAyOTAuMyAuMTgzNyAyOTcuOSAuMDAwNkwyOTcuOSAwek0xNjAuMSAzMjIuMUwyOTEuMSAzNjEuMkwyOTggNDgzLjdMMzA1LjkgMzYyLjJMNDM2LjUgMzIyLjlMNDM2LjcgMzIyLjhMMzA1LjcgMzQ3LjlMMjk3LjEgMjcuNzJMMjkxLjkgMzQ3LjlMMTYwLjEgMzIyLjF6TTQyNiAyMjIuNkw1MjAuNCAxODEuNkg1OTQuMkw0MzcuMiA0MjkuMkw0NjguOCAzMjAuMkw0MjYgMjIyLjZ6TTU5Ny41IDE4MS40TDYzOC45IDI1Ny42QzY0Mi45IDI2NS4xIDYzNSAyNzMuNSA2MjcuMyAyNjkuOEw1NzkuNyAyNDcuMUw1OTcuNSAxODEuNHpNMTI3LjMgMzE4LjVMMTU4LjcgNDMwTDEuNjEgMTU0LjVDLTQuMjkyIDE0NC4xIDcuMTI4IDEzMi41IDE3LjU1IDEzOC4zTDE2OS40IDIyMi41TDEyNy4zIDMxOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWdlNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggNTA0QzExMSA1MDQgMCAzOTMgMCAyNTZTMTExIDggMjQ4IDhjMjAuOSAwIDQxLjMgMi42IDYwLjcgNy41TDQyLjMgMzkySDI0OHYxMTJ6bTAtMTQzLjZWMTQ2LjhMOTguNiAzNjAuNEgyNDh6bTk2IDMxLjZ2OTIuN2M0NS43LTE5LjIgODQuNS01MS43IDExMS40LTkyLjdIMzQ0em01Ny40LTEzOC4ybC0yMS4yIDguNCAyMS4yIDguM3YtMTYuN3ptLTIwLjMgNTQuNWMtNi43IDAtOCA2LjMtOCAxMi45djcuN2gxNi4ydi0xMGMwLTUuOS0yLjMtMTAuNi04LjItMTAuNnpNNDk2IDI1NmMwIDM3LjMtOC4yIDcyLjctMjMgMTA0LjRIMzQ0VjI3LjNDNDMzLjMgNjQuOCA0OTYgMTUzLjEgNDk2IDI1NnpNMzYwLjQgMTQzLjZoNjguMlY5NmgtMTMuOXYzMi42aC0xMy45Vjk5aC0xMy45djI5LjZoLTEyLjdWOTZoLTEzLjl2NDcuNnptNjguMSAxODUuM0g0MDJ2LTExYzAtMTUuNC01LjYtMjUuMi0yMC45LTI1LjItMTUuNCAwLTIwLjcgMTAuNi0yMC43IDI1Ljl2MjUuM2g2OC4ydi0xNXptMC0xMDNsLTY4LjIgMjkuN1YyNjhsNjguMiAyOS41di0xNi42bC0xNC40LTUuN3YtMjYuNWwxNC40LTUuOXYtMTYuOXptLTQuOC02OC41aC0zNS42VjE4NEg0MDJ2LTEyLjJoMTFjOC42IDE1LjggMS4zIDM1LjMtMTguNiAzNS4zLTIyLjUgMC0yOC4zLTI1LjMtMTUuNS0zNy43bC0xMS42LTEwLjZjLTE2LjIgMTcuNS0xMi4yIDYzLjkgMjcuMSA2My45IDM0IDAgNDQuNy0zNS45IDI5LjMtNjUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFnZWxpbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMTIuN2MtNTUuMSAxMzYuNy0xODcuMSA1NC0xODcuMSA1NC00MC41IDgxLjgtMTA3LjQgMTM0LjQtMTg0LjYgMTM0LjctMTYuMSAwLTE2LjYtMjQuNCAwLTI0LjQgNjQuNC0uMyAxMjAuNS00Mi43IDE1Ny4yLTExMC4xLTQxLjEgMTUuOS0xMTguNiAyNy45LTE2MS42LTgyLjIgMTA5LTQ0LjkgMTU5LjEgMTEuMiAxNzguMyA0NS41IDkuOS0yNC40IDE3LTUwLjkgMjEuNi03OS43IDAgMC0xMzkuNyAyMS45LTE0OS41LTk4LjEgMTE5LjEtNDcuOSAxNTIuNiA3Ni43IDE1Mi42IDc2LjcgMS42LTE2LjcgMy4zLTUyLjYgMy4zLTUzLjQgMCAwLTEwNi4zLTczLjctMzguMS0xNjUuMiAxMjQuNiA0MyA2MS40IDE2Mi40IDYxLjQgMTYyLjQuNSAxLjYuNSAyMy44IDAgMzMuNCAwIDAgNDUuMi04OSAxMzYuNC01Ny41LTQuMiAxMzQtMTQxLjkgMTA2LjQtMTQxLjkgMTA2LjQtNC40IDI3LjQtMTEuMiA1My40LTIwIDc3LjUgMCAwIDgzLTkxLjggMTcyLTIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWxmZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0LjkgMTkzLjljMC00Ny40LTU1LjItNDQuMi05NS40LTI5LjgtMS4zIDM5LjQtMi41IDgwLjctMyAxMTkuOC43IDIuOCAyLjYgNi4yIDE1LjEgNi4yIDM2LjggMCA4My40LTQyLjggODMuMy05Ni4yem0tMTk0LjUgNzIuMmMuMiAwIDYuNS0yLjcgMTEuMi0yLjcgMjYuNiAwIDIwLjcgNDQuMS0xNC40IDQ0LjEtMjEuNSAwLTM3LjEtMTguMS0zNy4xLTQzIDAtNDIgNDIuOS05NS42IDEwMC43LTEyNi41IDEtMTIuNCAzLTIyIDEwLjUtMjguMiAxMS4yLTkgMjYuNi0zLjUgMjkuNSAxMS4xIDcyLjItMjIuMiAxMzUuMiAxIDEzNS4yIDcyIDAgNzcuOS03OS4zIDE1Mi42LTE0MC4xIDEzOC4yLS4xIDM5LjQuOSA3NC40IDIuNyAxMDB2LjJjLjIgMy40LjYgMTIuNS01LjMgMTkuMS05LjYgMTAuNi0zMy40IDEwLTM2LjQtMjIuMy00LjEtNDQuNC4yLTIwNi4xIDEuNC0yNDIuNS0yMS41IDE1LTU4LjUgNTAuMy01OC41IDc1LjkuMiAyLjUuNCA0IC42IDQuNnpNOCAxODEuMXMtLjEgMzcuNCAzOC40IDM3LjRoMzBsMjIuNCAyMTcuMnMwIDQ0LjMgNDQuNyA0NC4zaDI4OC45czQ0LjctLjQgNDQuNy00NC4zbDIyLjQtMjE3LjJoMzBzMzguNCAxLjIgMzguNC0zNy40YzAgMCAuMS0zNy40LTM4LjQtMzcuNGgtMzAuMWMtNy4zLTI1LjYtMzAuMi03NC4zLTExOS40LTc0LjNoLTI4VjUwLjNzLTIuNy0xOC40LTIxLjEtMTguNGgtODUuOHMtMjEuMSAwLTIxLjEgMTguNHYxOS4xaC0yOC4xcy0xMDUgNC4yLTEyMC41IDc0LjNoLTI5UzggMTQyLjUgOCAxODEuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGF0cmVvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODkuNyAxNTMuOGMtLjEtNjUuNC01MS0xMTktMTEwLjctMTM4LjNDMzA0LjgtOC41IDIwNy01IDEzNi4xIDI4LjRDNTAuMyA2OC45IDIzLjMgMTU3LjcgMjIuMyAyNDYuMkMyMS41IDMxOSAyOC43IDUxMC42IDEzNi45IDUxMmM4MC4zIDEgOTIuMy0xMDIuNSAxMjkuNS0xNTIuM2MyNi40LTM1LjUgNjAuNS00NS41IDEwMi40LTU1LjljNzItMTcuOCAxMjEuMS03NC43IDEyMS0xNTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBheXBhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTEuNCAyOTUuOWMtMy41IDE5LjItMTcuNCAxMDguNy0yMS41IDEzNC0uMyAxLjgtMSAyLjUtMyAyLjVIMTIuM2MtNy42IDAtMTMuMS02LjYtMTIuMS0xMy45TDU4LjggNDYuNmMxLjUtOS42IDEwLjEtMTYuOSAyMC0xNi45IDE1Mi4zIDAgMTY1LjEtMy43IDIwNCAxMS40IDYwLjEgMjMuMyA2NS42IDc5LjUgNDQgMTQwLjMtMjEuNSA2Mi42LTcyLjUgODkuNS0xNDAuMSA5MC4zLTQzLjQuNy02OS41LTctNzUuMyAyNC4yek0zNTcuMSAxNTJjLTEuOC0xLjMtMi41LTEuOC0zIDEuMy0yIDExLjQtNS4xIDIyLjUtOC44IDMzLjYtMzkuOSAxMTMuOC0xNTAuNSAxMDMuOS0yMDQuNSAxMDMuOS02LjEgMC0xMC4xIDMuMy0xMC45IDkuNC0yMi42IDE0MC40LTI3LjEgMTY5LjctMjcuMSAxNjkuNy0xIDcuMSAzLjUgMTIuOSAxMC42IDEyLjloNjMuNWM4LjYgMCAxNS43LTYuMyAxNy40LTE0LjkuNy01LjQtMS4xIDYuMSAxNC40LTkxLjMgNC42LTIyIDE0LjMtMTkuNyAyOS4zLTE5LjcgNzEgMCAxMjYuNC0yOC44IDE0Mi45LTExMi4zIDYuNS0zNC44IDQuNi03MS40LTIzLjgtOTIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyYnl0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDUuMzE0LDI4NC41NzhIMjQ2LjZWMzgzLjNoNTguNzExcTI0LjQyMywwLDM4LjE5My0xMy43N3QxMy43Ny0zNi4xMXEwLTIxLjgyNi0xNC4wMzItMzUuMzM1VDMwNS4zMTQsMjg0LjU3OFpNMTQ5LjQzNSwxMjguN0g5MC43MjR2OTguNzIzaDU4LjcxMXEyNC40MiwwLDM4LjE5LTEzLjc3M3QxMy43Ny0zNi4xMDdxMC0yMS44MjYtMTQuMDI5LTM1LjMzOFQxNDkuNDM1LDEyOC43Wk0zNjYuNjQ3LDMySDgxLjM1M0E4MS40NDUsODEuNDQ1LDAsMCwwLDAsMTEzLjM1MlYzOTguNjQ3QTgxLjQ0NSw4MS40NDUsMCwwLDAsODEuMzUzLDQ4MEgzNjYuNjQ3QTgxLjQ0NSw4MS40NDUsMCwwLDAsNDQ4LDM5OC42NDdWMTEzLjM1MkE4MS40NDUsODEuNDQ1LDAsMCwwLDM2Ni42NDcsMzJabTYzLjYzNSwzNjYuNjQ3YTYzLjcwNiw2My43MDYsMCwwLDEtNjMuNjM1LDYzLjYzNUg4MS4zNTNhNjMuNzA2LDYzLjcwNiwwLDAsMS02My42MzUtNjMuNjM1VjExMy4zNTJBNjMuNzA2LDYzLjcwNiwwLDAsMSw4MS4zNTMsNDkuNzE4SDM2Ni42NDdhNjMuNzA2LDYzLjcwNiwwLDAsMSw2My42MzUsNjMuNjM0Wk0zMDUuMzE0LDEyOC43SDI0Ni42djk4LjcyM2g1OC43MTFxMjQuNDIzLDAsMzguMTkzLTEzLjc3M3QxMy43Ny0zNi4xMDdxMC0yMS44MjYtMTQuMDMyLTM1LjMzOFQzMDUuMzE0LDEyOC43WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJpc2NvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcwIDYzLjZDMzMxLjQgMjIuNiAyODAuNSAwIDIyNi42IDAgMTExLjkgMCAxOC41IDk2LjIgMTguNSAyMTQuNGMwIDc1LjEgNTcuOCAxNTkuOCA4Mi43IDE5Mi43QzEzNy44IDQ1NS41IDE5Mi42IDUxMiAyMjYuNiA1MTJjNDEuNiAwIDExMi45LTk0LjIgMTIwLjktMTA1IDI0LjYtMzMuMSA4Mi0xMTguMyA4Mi0xOTIuNiAwLTU2LjUtMjEuMS0xMTAuMS01OS41LTE1MC44ek0yMjYuNiA0OTMuOWMtNDIuNSAwLTE5MC0xNjcuMy0xOTAtMjc5LjQgMC0xMDcuNCA4My45LTE5Ni4zIDE5MC0xOTYuMyAxMDAuOCAwIDE4NC43IDg5IDE4NC43IDE5Ni4zLjEgMTEyLjEtMTQ3LjQgMjc5LjQtMTg0LjcgMjc5LjR6TTMzOCAyMDYuOGMwIDU5LjEtNTEuMSAxMDkuNy0xMTAuOCAxMDkuNy0xMDAuNiAwLTE1MC43LTEwOC4yLTkyLjktMTgxLjh2LjRjMCAyNC41IDIwLjEgNDQuNCA0NC44IDQ0LjQgMjQuNyAwIDQ0LjgtMTkuOSA0NC44LTQ0LjQgMC0xOC4yLTExLjEtMzMuOC0yNi45LTQwLjcgNzYuNi0xOS4yIDE0MSAzOS4zIDE0MSAxMTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhhYnJpY2F0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIzIDI2Mi4xbC0uMS0xM3MyMS43LTE5LjggMjEuMS0yMS4ybC05LjUtMjBjLS42LTEuNC0yOS41LS41LTI5LjUtLjVsLTkuNC05LjNzLjItMjguNS0xLjItMjkuMWwtMjAuMS05LjJjLTEuNC0uNi0yMC43IDIxLTIwLjcgMjFsLTEzLjEtLjJzLTIwLjUtMjEuNC0yMS45LTIwLjhsLTIwIDguM2MtMS40LjUuMiAyOC45LjIgMjguOWwtOS4xIDkuMXMtMjkuMi0uOS0yOS43LjRsLTguMSAxOS44Yy0uNiAxLjQgMjEgMjEgMjEgMjFsLjEgMTIuOXMtMjEuNyAxOS44LTIxLjEgMjEuMmw5LjUgMjBjLjYgMS40IDI5LjUuNSAyOS41LjVsOS40IDkuM3MtLjIgMzEuOCAxLjIgMzIuM2wyMC4xIDguM2MxLjQuNiAyMC43LTIzLjUgMjAuNy0yMy41bDEzLjEuMnMyMC41IDIzLjggMjEuOCAyMy4zbDIwLTcuNWMxLjQtLjYtLjItMzIuMS0uMi0zMi4xbDkuMS05LjFzMjkuMi45IDI5LjctLjVsOC4xLTE5LjhjLjctMS4xLTIwLjktMjAuNy0yMC45LTIwLjd6bS00NC45LTguN2MuNyAxNy4xLTEyLjggMzEuNi0zMC4xIDMyLjQtMTcuMy44LTMyLjEtMTIuNS0zMi44LTI5LjYtLjctMTcuMSAxMi44LTMxLjYgMzAuMS0zMi4zIDE3LjMtLjggMzIuMSAxMi41IDMyLjggMjkuNXptMjAxLjItMzcuOWwtOTctOTctLjEuMWMtNzUuMS03My4zLTE5NS40LTcyLjgtMjY5LjggMS42LTUwLjkgNTEtMjcuOCAyNy45LTk1LjcgOTUuMy0yMi4zIDIyLjMtMjIuMyA1OC43IDAgODEgNjkuOSA2OS40IDQ2LjQgNDYgOTcuNCA5N2wuMS0uMWM3NS4xIDczLjMgMTk1LjQgNzIuOSAyNjkuOC0xLjYgNTEtNTAuOSAyNy45LTI3LjkgOTUuMy05NS4zIDIyLjMtMjIuMyAyMi4zLTU4LjcgMC04MXpNMTQwLjQgMzYzLjhjLTU5LjYtNTkuNS01OS42LTE1NiAwLTIxNS41IDU5LjUtNTkuNiAxNTYtNTkuNSAyMTUuNiAwIDU5LjUgNTkuNSA1OS42IDE1NiAwIDIxNS42LTU5LjYgNTkuNS0xNTYgNTkuNC0yMTUuNi0uMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvZW5peEZyYW1ld29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTIuOSAzNDQuM2MzLjgtLjEgMjIuOC0xLjQgMjUuNi0yLjItMi40LTIuNi00My42LTEtNjgtNDkuNi00LjMtOC42LTcuNS0xNy42LTYuNC0yNy42IDIuOS0yNS41IDMyLjktMzAgNTItMTguNSAzNiAyMS42IDYzLjMgOTEuMyAxMTMuNyA5Ny41IDM3IDQuNSA4NC42LTE3IDEwOC4yLTQ1LjQtLjYtLjEtLjgtLjItMS0uMS0uNC4xLS44LjItMS4xLjMtMzMuMyAxMi4xLTk0LjMgOS43LTEzNC43LTE0LjgtMzcuNi0yMi44LTUzLjEtNTguNy01MS44LTc0LjYgMS44LTIxLjMgMjIuOS0yMy4yIDM1LjktMTkuNiAxNC40IDMuOSAyNC40IDE3LjYgMzguOSAyNy40IDE1LjYgMTAuNCAzMi45IDEzLjcgNTEuMyAxMC4zIDE0LjktMi43IDM0LjQtMTIuMyAzNi41LTE0LjUtMS4xLS4xLTEuOC0uMS0yLjUtLjItNi4yLS42LTEyLjQtLjgtMTguNS0xLjdDMjc5LjggMTk0LjUgMjYyLjEgNDcuNCAxMzguNSAzNy45IDk0LjIgMzQuNSAzOS4xIDQ2IDIuMiA3Mi45Yy0uOC42LTEuNSAxLjItMi4yIDEuOC4xLjIuMS4zLjIuNS44IDAgMS42LS4xIDIuNC0uMiA2LjMtMSAxMi41LS44IDE4LjcuMyAyMy44IDQuMyA0Ny43IDIzLjEgNTUuOSA3Ni41IDUuMyAzNC4zLS43IDUwLjggOCA4Ni4xIDE5IDc3LjEgOTEgMTA3LjYgMTI3LjcgMTA2LjR6TTc1LjMgNjQuOWMtLjktMS0uOS0xLjItMS4zLTIgMTIuMS0yLjYgMjQuMi00LjEgMzYuNi00LjgtMS4xIDE0LjctMjIuMiAyMS4zLTM1LjMgNi44em0xOTYuOSAzNTAuNWMtNDIuOCAxLjItOTItMjYuNy0xMjMuNS02MS40LTQuNi01LTE2LjgtMjAuMi0xOC42LTIzLjRsLjQtLjRjNi42IDQuMSAyNS43IDE4LjYgNTQuOCAyNyAyNC4yIDcgNDguMSA2LjMgNzEuNi0zLjMgMjIuNy05LjMgNDEtLjUgNDMuMSAyLjktMTguNSAzLjgtMjAuMSA0LjQtMjQgNy45LTUuMSA0LjQtNC42IDExLjcgNyAxNy4yIDI2LjIgMTIuNCA2My0yLjggOTcuMiAyNS40IDIuNCAyIDguMSA3LjggMTAuMSAxMC43LS4xLjItLjMuMy0uNC41LTQuOC0xLjUtMTYuNC03LjUtNDAuMi05LjMtMjQuNy0yLTQ2LjMgNS4zLTc3LjUgNi4yem0xNzQuOC0yNTJjMTYuNC01LjIgNDEuMy0xMy40IDY2LjUtMy4zIDE2LjEgNi41IDI2LjIgMTguNyAzMi4xIDM0LjYgMy41IDkuNCA1LjEgMTkuNyA1LjEgMjguNy0uMiAwLS40IDAtLjYuMS0uMi0uNC0uNC0uOS0uNS0xLjMtNS0yMi0yOS45LTQzLjgtNjcuNi0yOS45LTUwLjIgMTguNi0xMzAuNCA5LjctMTc2LjktNDgtLjctLjktMi40LTEuNy0xLjMtMy4yLjEtLjIgMi4xLjYgMyAxLjMgMTguMSAxMy40IDM4LjMgMjEuOSA2MC4zIDI2LjIgMzAuNSA2LjEgNTQuNiAyLjkgNzkuOS01LjJ6bTEwMi43IDExNy41Yy0zMi40LjItMzMuOCA1MC4xLTEwMy42IDY0LjQtMTguMiAzLjctMzguNyA0LjYtNDQuOSA0LjJ2LS40YzIuOC0xLjUgMTQuNy0yLjYgMjkuNy0xNi42IDcuOS03LjMgMTUuMy0xNS4xIDIyLjgtMjIuOSAxOS41LTIwLjIgNDEuNC00Mi4yIDgxLjktMzkgMjMuMSAxLjggMjkuMyA4LjIgMzYuMSAxMi43LjMuMi40LjUuNy45LS41IDAtLjcuMS0uOSAwLTctMi43LTE0LjMtMy4zLTIxLjgtMy4zem0tMTIuMy0yNC4xYy0uMS4yLS4xLjQtLjIuNi0yOC45LTQuNC00OC03LjktNjguNSA0LTE3IDkuOS0zMS40IDIwLjUtNjIgMjQuNC0yNy4xIDMuNC00NS4xIDIuNC02Ni4xLTgtLjMtLjItLjYtLjQtMS0uNiAwLS4yLjEtLjMuMS0uNSAyNC45IDMuOCAzNi40IDUuMSA1NS41LTUuOCAyMi4zLTEyLjkgNDAuMS0yNi42IDcxLjMtMzEgMjkuNi00LjEgNTEuMyAyLjUgNzAuOSAxNi45ek0yNjguNiA5Ny4zYy0uNi0uNi0xLjEtMS4yLTIuMS0yLjMgNy42IDAgMjkuNy0xLjIgNTMuNCA4LjQgMTkuNyA4IDMyLjIgMjEgNTAuMiAzMi45IDExLjEgNy4zIDIzLjQgOS4zIDM2LjQgOC4xIDQuMy0uNCA4LjUtMS4yIDEyLjgtMS43LjQtLjEuOSAwIDEuNS4zLS42LjQtMS4yLjktMS44IDEuMi04LjEgNC0xNi43IDYuMy0yNS42IDcuMS0yNi4xIDIuNi01MC4zLTMuNy03My40LTE1LjQtMTkuMy05LjktMzYuNC0yMi45LTUxLjQtMzguNnpNNjQwIDMzNS43Yy0zLjUgMy4xLTIyLjcgMTEuNi00Mi43IDUuMy0xMi4zLTMuOS0xOS41LTE0LjktMzEuNi0yNC4xLTEwLTcuNi0yMC45LTcuOS0yOC4xLTguNC42LS44LjktMS4yIDEuMi0xLjQgMTQuOC05LjIgMzAuNS0xMi4yIDQ3LjMtNi41IDEyLjUgNC4yIDE5LjIgMTMuNSAzMC40IDI0LjIgMTAuOCAxMC40IDIxIDkuOSAyMy4xIDEwLjUuMS0uMS4yIDAgLjQuNHptLTIxMi41IDEzN2MyLjIgMS4yIDEuNiAxLjUgMS41IDItMTguNS0xLjQtMzMuOS03LjYtNDYuOC0yMi4yLTIxLjgtMjQuNy00MS43LTI3LjktNDguNi0yOS43LjUtLjIuOC0uNCAxLjEtLjQgMTMuMS4xIDI2LjEuNyAzOC45IDMuOSAyNS4zIDYuNCAzNSAyNS40IDQxLjYgMzUuMyAzLjIgNC44IDcuMyA4LjMgMTIuMyAxMS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9lbml4U3F1YWRyb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNjMuMzhDMTQyLjQ5IDI3LjI1IDIwMS41NSA3LjMxIDI2MC41MSA4LjgxYzI5LjU4LS4zOCA1OS4xMSA1LjM3IDg2LjkxIDE1LjMzLTI0LjEzLTQuNjMtNDktNi4zNC03My4zOC0yLjQ1QzIzMS4xNyAyNyAxOTEgNDguODQgMTYyLjIxIDgwLjg3YzUuNjctMSAxMC43OC0zLjY3IDE2LTUuODYgMTguMTQtNy44NyAzNy40OS0xMy4yNiA1Ny4yMy0xNC44MyAxOS43NC0yLjEzIDM5LjY0LS40MyA1OS4yOCAxLjkyLTE0LjQyIDIuNzktMjkuMTIgNC41Ny00MyA5LjU5LTM0LjQzIDExLjA3LTY1LjI3IDMzLjE2LTg2LjMgNjIuNjMtMTMuOCAxOS43MS0yMy42MyA0Mi44Ni0yNC42NyA2Ny4xMy0uMzUgMTYuNDkgNS4yMiAzNC44MSAxOS44MyA0NGE1My4yNyA1My4yNyAwIDAgMCAzNy41MiA2Ljc0YzE1LjQ1LTIuNDYgMzAuMDctOC42NCA0My42LTE2LjMzIDExLjUyLTYuODIgMjIuNjctMTQuNTUgMzItMjQuMjUgMy43OS0zLjIyIDIuNTMtOC40NSAyLjYyLTEyLjc5LTIuMTItLjM0LTQuMzgtMS4xMS02LjMuM2EyMDMgMjAzIDAgMCAxLTM1LjgyIDE1LjM3Yy0yMCA2LjE3LTQyLjE2IDguNDYtNjIuMS43OCAxMi43OSAxLjczIDI2LjA2LjMxIDM3Ljc0LTUuNDQgMjAuMjMtOS43MiAzNi44MS0yNS4yIDU0LjQ0LTM4Ljc3YTUyNi41NyA1MjYuNTcgMCAwIDEgODguOS01NS4zMWMyNS43MS0xMiA1Mi45NC0yMi43OCA4MS41Ny0yNC4xMi0xNS42MyAxMy43Mi0zMi4xNSAyNi41Mi00Ni43OCA0MS4zOC0xNC41MSAxNC0yNy40NiAyOS41LTQwLjExIDQ1LjE4LTMuNTIgNC42LTguOTUgNi45NC0xMy41OCAxMC4xNmExNTAuNyAxNTAuNyAwIDAgMC01MS44OSA2MC4xYy05LjMzIDE5LjY4LTE0LjUgNDEuODUtMTEuNzcgNjMuNjUgMS45NCAxMy42OSA4LjcxIDI3LjU5IDIwLjkgMzQuOTEgMTIuOSA4IDI5LjA1IDguMDcgNDMuNDggNS4xIDMyLjgtNy40NSA2MS40My0yOC44OSA4MS01NS44NCAyMC40NC0yNy41MiAzMC41Mi02Mi4yIDI5LjE2LTk2LjM1LS41Mi03LjUtMS41Ny0xNS0xLjY2LTIyLjQ5IDggMTkuNDggMTQuODIgMzkuNzEgMTYuNjUgNjAuODMgMiAxNC4yOC43NSAyOC43Ni0xLjYyIDQyLjktMS45MSAxMS01LjY3IDIxLjUxLTcuNzggMzIuNDNhMTY1IDE2NSAwIDAgMCAzOS4zNC04MS4wNyAxODMuNjQgMTgzLjY0IDAgMCAwLTE0LjIxLTEwNC42NGMyMC43OCAzMiAzMi4zNCA2OS41OCAzNS43MSAxMDcuNDguNDkgMTIuNzMuNDkgMjUuNTEgMCAzOC4yM0EyNDMuMjEgMjQzLjIxIDAgMCAxIDQ4MiAzNzEuMzRjLTI2LjEyIDQ3LjM0LTY4IDg1LjYzLTExNy4xOSAxMDgtNzguMjkgMzYuMjMtMTc0LjY4IDMxLjMyLTI0OC0xNC42OEEyNDguMzQgMjQ4LjM0IDAgMCAxIDI1LjM2IDM2NiAyMzguMzQgMjM4LjM0IDAgMCAxIDAgMjczLjA4di0zMS4zNEMzLjkzIDE3MiA0MC44NyAxMDUuODIgOTYgNjMuMzhtMjIyIDgwLjMzYTc5LjEzIDc5LjEzIDAgMCAwIDE2LTQuNDhjNS0xLjc3IDkuMjQtNS45NCAxMC4zMi0xMS4yMi04Ljk2IDQuOTktMTcuOTggOS45Mi0yNi4zMiAxNS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDEwNC41YzE3MS40IDAgMzAzLjIgNzIuMiAzMDMuMiAxNTEuNVM0OTEuMyA0MDcuNSAzMjAgNDA3LjVjLTE3MS40IDAtMzAzLjItNzIuMi0zMDMuMi0xNTEuNVMxNDguNyAxMDQuNSAzMjAgMTA0LjVtMC0xNi44QzE0My4zIDg3LjcgMCAxNjMgMCAyNTZzMTQzLjMgMTY4LjMgMzIwIDE2OC4zUzY0MCAzNDkgNjQwIDI1NiA0OTYuNyA4Ny43IDMyMCA4Ny43ek0yMTguMiAyNDIuNWMtNy45IDQwLjUtMzUuOCAzNi4zLTcwLjEgMzYuM2wxMy43LTcwLjZjMzggMCA2My44LTQuMSA1Ni40IDM0LjN6TTk3LjQgMzUwLjNoMzYuN2w4LjctNDQuOGM0MS4xIDAgNjYuNiAzIDkwLjItMTkuMSAyNi4xLTI0IDMyLjktNjYuNyAxNC4zLTg4LjEtOS43LTExLjItMjUuMy0xNi43LTQ2LjUtMTYuN2gtNzAuN0w5Ny40IDM1MC4zem0xODUuNy0yMTMuNmgzNi41bC04LjcgNDQuOGMzMS41IDAgNjAuNy0yLjMgNzQuOCAxMC43IDE0LjggMTMuNiA3LjcgMzEtOC4zIDExMy4xaC0zN2MxNS40LTc5LjQgMTguMy04NiAxMi43LTkyLTUuNC01LjgtMTcuNy00LjYtNDcuNC00LjZsLTE4LjggOTYuNmgtMzYuNWwzMi43LTE2OC42ek01MDUgMjQyLjVjLTggNDEuMS0zNi43IDM2LjMtNzAuMSAzNi4zbDEzLjctNzAuNmMzOC4yIDAgNjMuOC00LjEgNTYuNCAzNC4zek0zODQuMiAzNTAuM0g0MjFsOC43LTQ0LjhjNDMuMiAwIDY3LjEgMi41IDkwLjItMTkuMSAyNi4xLTI0IDMyLjktNjYuNyAxNC4zLTg4LjEtOS43LTExLjItMjUuMy0xNi43LTQ2LjUtMTYuN0g0MTdsLTMyLjggMTY4Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDQgMjQ2Yy0zLjItMi02LjMtMi45LTEwLjEtMi45LTYuNiAwLTEyLjYgMy4yLTE5LjMgMy43bDEuNyA0Ljl6bTEzNS45IDE5Ny45Yy0xOSAwLTY0LjEgOS41LTc5LjkgMTkuOGw2LjkgNDUuMWMzNS43IDYuMSA3MC4xIDMuNiAxMDYtOS44LTQuOC0xMC0yMy41LTU1LjEtMzMtNTUuMXpNMzQwLjggMTc3YzYuNiAyLjggMTEuNSA5LjIgMjIuNyAyMi4xIDItMS40IDcuNS01LjIgNy41LTguNiAwLTQuOS0xMS44LTEzLjItMTMuMi0yMyAxMS4yLTUuNyAyNS4yLTYgMzcuNi04LjkgNjguMS0xNi40IDExNi4zLTUyLjkgMTQ2LjgtMTE2LjdDNTQ4LjMgMjkuMyA1NTQgMTYuMSA1NTQuNiAybC0yIDIuNmMtMjguNCA1MC0zMyA2My4yLTgxLjMgMTAwLTMxLjkgMjQuNC02OS4yIDQwLjItMTA2LjYgNTQuNmwtNi4zLS4zdi0yMS44Yy0xOS42IDEuNi0xOS43LTE0LjYtMzEuNi0yMy0xOC43IDIwLjYtMzEuNiA0MC44LTU4LjkgNTEuMS0xMi43IDQuOC0xOS42IDEwLTI1LjkgMjEuOCAzNC45LTE2LjQgOTEuMi0xMy41IDk4LjgtMTB6TTU1NS41IDBsLS42IDEuMS0uMy45LjYtLjZ6bS01OS4yIDM4Mi4xYy0zMy45LTU2LjktNzUuMy0xMTguNC0xNTAtMTE1LjVsLS4zLTZjLTEuMS0xMy41IDMyLjggMy4yIDM1LjEtMzFsLTE0LjQgNy4yYy0xOS44LTQ1LjctOC42LTU0LjMtNjUuNS01NC4zLTE0LjcgMC0yNi43IDEuNy00MS40IDQuNiAyLjkgMTguNiAyLjIgMzYuNy0xMC45IDUwLjNsMTkuNSA1LjVjLTEuNyAzLjItMi45IDYuMy0yLjkgOS44IDAgMjEgNDIuOCAyLjkgNDIuOCAzMy42IDAgMTguNC0zNi44IDYwLjEtNTQuOSA2MC4xLTggMC01My43LTUwLTUzLjQtNjAuMWwuMy00LjYgNTIuMy0xMS41YzEzLTIuNiAxMi4zLTIyLjctMi45LTIyLjctMy43IDAtNDMuMSA5LjItNDkuNCAxMC42LTItNS4yLTcuNS0xNC4xLTEzLjgtMTQuMS0zLjIgMC02LjMgMy4yLTkuNSA0LTkuMiAyLjYtMzEgMi45LTIxLjUgMjAuMUwxNS45IDI5OC41Yy01LjUgMS4xLTguOSA2LjMtOC45IDExLjggMCA2IDUuNSAxMC45IDExLjUgMTAuOSA4IDAgMTMxLjMtMjguNCAxNDcuNC0zMi4yIDIuNiAzLjIgNC42IDYuMyA3LjggOC42IDIwLjEgMTQuNCA1OS44IDg1LjkgNzYuNCA4NS45IDI0LjEgMCA1OC0yMi40IDcxLjMtNDEuOSAzLjItNC4zIDYuOS03LjUgMTIuNC02LjkuNiAxMy44LTMxLjYgMzQuMi0zMyA0My43LTEuNCAxMC4yLTEgMzUuMi0uMyA0MS4xIDI2LjcgOC4xIDUyLTMuNiA3Ny45LTIuOSA0LjMtMjEgMTAuNi00MS45IDkuOC02My41bC0uMy05LjVjLTEuNC0zNC4yLTEwLjktMzguNS0zNC44LTU4LjYtMS4xLTEuMS0yLjYtMi42LTMuNy00IDIuMi0xLjQgMS4xLTEgNC42LTEuNyA4OC41IDAgNTYuMyAxODMuNiAxMTEuNSAyMjkuOSAzMy4xLTE1IDcyLjUtMjcuOSAxMDMuNS00Ny4yLTI5LTI1LjYtNTIuNi00NS43LTcyLjctNzkuOXptLTE5Ni4yIDQ2LjF2MjcuMmwxMS44LTMuNC0yLjktMjMuOHptLTY4LjctMTUwLjRsMjQuMSA2MS4yIDIxLTEzLjgtMzEuMy01MC45em04NC40IDE1NC45bDIgMTIuNGM5LTEuNSA1OC40LTYuNiA1OC40LTE0LjEgMC0xLjQtLjYtMy4yLS45LTQuNi0yNi44IDAtMzYuOSAzLjgtNTkuNSA2LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlckhhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMjQuOWMtODAuOCA1My42LTg5LjQgOTIuNS05Ni40IDEwNC40LTYuNyAxMi4yLTExLjcgNjAuMy0yMy4zIDgzLjYtMTEuNyAyMy42LTU0LjIgNDIuMi02Ni4xIDUwLTExLjcgNy44LTI4LjMgMzguMS00MS45IDY0LjItMTA4LjEtNC40LTE2Ny40IDM4LjgtMjU5LjIgOTMuNiAyOS40LTkuNyA0My4zLTE2LjcgNDMuMy0xNi43IDk0LjItMzYgMTM5LjMtNjguMyAyODEuMS00OS4yIDEuMSAwIDEuOS42IDIuOC44IDMuOSAyLjIgNS4zIDYuOSAzLjEgMTAuOGwtNTMuOSA5NS44Yy0yLjUgNC43LTcuOCA3LjItMTMuMSA2LjEtMTI2LjgtMjMuOC0yMjYuOSAxNy4zLTMxOC45IDE4LjZDMjQuMSA0ODggMCA0NTMuNCAwIDQ1MS44YzAtMS4xLjYtMS43IDEuNy0xLjcgMCAwIDM4LjMgMCAxMDMuMS0xNS4zQzE3OC40IDI5NC41IDI0NCAyNDUuNCAzMTUuNCAyNDUuNGMwIDAgNzEuNyAwIDkwLjYgNjEuOSAyMi44LTM5LjcgMjguMy00OS4yIDI4LjMtNDkuMiA1LjMtOS40IDM1LTc3LjIgODYuNC0xNDEuNCA1MS41LTY0IDkwLjQtNzkuOSAxMTkuMy05MS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaWVkUGlwZXJQcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDUuMyAxNzQuNmMwIDIxLjEtMTQuMiAzOC4xLTMxLjcgMzguMS03LjEgMC0xMi44LTEuMi0xNy4yLTMuN3YtNjhjNC40LTIuNyAxMC4xLTQuMiAxNy4yLTQuMiAxNy41IDAgMzEuNyAxNi45IDMxLjcgMzcuOHptNTIuNiA2N2MtNy4xIDAtMTIuOCAxLjUtMTcuMiA0LjJ2NjhjNC40IDIuNSAxMC4xIDMuNyAxNy4yIDMuNyAxNy40IDAgMzEuNy0xNi45IDMxLjctMzcuOCAwLTIxLjEtMTQuMy0zOC4xLTMxLjctMzguMXpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0xODUgMjU1LjFjNDEgMCA3NC4yLTM1LjYgNzQuMi03OS42IDAtNDQtMzMuMi03OS42LTc0LjItNzkuNi0xMiAwLTI0LjEgMy4yLTM0LjYgOC44aC00NS43VjMxMWw1MS44LTEwLjF2LTUwLjZjOC42IDMuMSAxOC4xIDQuOCAyOC41IDQuOHptMTU4LjQgMjUuM2MwLTQ0LTMzLjItNzkuNi03My45LTc5LjYtMy4yIDAtNi40LjItOS42LjctMy43IDEyLjUtMTAuMSAyMy44LTE5LjIgMzMuNC0xMy44IDE1LTMyLjIgMjMuOC01MS44IDI0LjhWNDE2bDUxLjgtMTAuMXYtNTAuNmM4LjYgMy4yIDE4LjIgNC43IDI4LjcgNC43IDQwLjggMCA3NC0zNS42IDc0LTc5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTUuOTMsMjMuMkM0MjkuMjMsMzAsMzg3Ljc5LDUxLjY5LDM0MS4zNSw5MC42NkEyMDYsMjA2LDAsMCwwLDI0MCw2NEMxMjUuMTMsNjQsMzIsMTU3LjEyLDMyLDI3MnM5My4xMywyMDgsMjA4LDIwOCwyMDgtOTMuMTMsMjA4LTIwOGEyMDcuMjUsMjA3LjI1LDAsMCwwLTU4Ljc1LTE0NC44MSwxNTUuMzUsMTU1LjM1LDAsMCwwLTE3LDI3LjRBMTc2LjE2LDE3Ni4xNiwwLDAsMSw0MTcuMSwyNzJjMCw5Ny42Ni03OS40NCwxNzcuMTEtMTc3LjA5LDE3Ny4xMWExNzUuODEsMTc1LjgxLDAsMCwxLTg3LjYzLTIzLjRjODIuOTQtMTA3LjMzLDE1MC43OS0zNy43NywxODQuMzEtMjI2LjY1LDUuNzktMzIuNjIsMjgtOTQuMjYsMTI2LjIzLTE2MC4xOEM0NzEsMzMuNDUsNDY1LjM1LDIwLjgsNDU1LjkzLDIzLjJaTTEyNSw0MDYuNEExNzYuNjYsMTc2LjY2LDAsMCwxLDYyLjksMjcyQzYyLjksMTc0LjM0LDE0Mi4zNSw5NC45LDI0MCw5NC45YTE3NCwxNzQsMCwwLDEsNzYuNjMsMTcuNzVDMjUwLjY0LDE3NC43NiwxODkuNzcsMjY1LjUyLDEyNSw0MDYuNFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGludGVyZXN0UCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDQgNi41QzEwMS40IDYuNSAwIDc0LjkgMCAxODUuNiAwIDI1NiAzOS42IDI5NiA2My42IDI5NmM5LjkgMCAxNS42LTI3LjYgMTUuNi0zNS40IDAtOS4zLTIzLjctMjkuMS0yMy43LTY3LjggMC04MC40IDYxLjItMTM3LjQgMTQwLjQtMTM3LjQgNjguMSAwIDExOC41IDM4LjcgMTE4LjUgMTA5LjggMCA1My4xLTIxLjMgMTUyLjctOTAuMyAxNTIuNy0yNC45IDAtNDYuMi0xOC00Ni4yLTQzLjggMC0zNy44IDI2LjQtNzQuNCAyNi40LTExMy40IDAtNjYuMi05My45LTU0LjItOTMuOSAyNS44IDAgMTYuOCAyLjEgMzUuNCA5LjYgNTAuNy0xMy44IDU5LjQtNDIgMTQ3LjktNDIgMjA5LjEgMCAxOC45IDIuNyAzNy41IDQuNSA1Ni40IDMuNCAzLjggMS43IDMuNCA2LjkgMS41IDUwLjQtNjkgNDguNi04Mi41IDcxLjQtMTcyLjggMTIuMyAyMy40IDQ0LjEgMzYgNjkuMyAzNiAxMDYuMiAwIDE1My45LTEwMy41IDE1My45LTE5Ni44QzM4NCA3MS4zIDI5OC4yIDYuNSAyMDQgNi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaW50ZXJlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDI1NmMwIDEzNy0xMTEgMjQ4LTI0OCAyNDgtMjUuNiAwLTUwLjItMy45LTczLjQtMTEuMSAxMC4xLTE2LjUgMjUuMi00My41IDMwLjgtNjUgMy0xMS42IDE1LjQtNTkgMTUuNC01OSA4LjEgMTUuNCAzMS43IDI4LjUgNTYuOCAyOC41IDc0LjggMCAxMjguNy02OC44IDEyOC43LTE1NC4zIDAtODEuOS02Ni45LTE0My4yLTE1Mi45LTE0My4yLTEwNyAwLTE2My45IDcxLjgtMTYzLjkgMTUwLjEgMCAzNi40IDE5LjQgODEuNyA1MC4zIDk2LjEgNC43IDIuMiA3LjIgMS4yIDguMy0zLjMuOC0zLjQgNS0yMC4zIDYuOS0yOC4xLjYtMi41LjMtNC43LTEuNy03LjEtMTAuMS0xMi41LTE4LjMtMzUuMy0xOC4zLTU2LjYgMC01NC43IDQxLjQtMTA3LjYgMTEyLTEwNy42IDYwLjkgMCAxMDMuNiA0MS41IDEwMy42IDEwMC45IDAgNjcuMS0zMy45IDExMy42LTc4IDExMy42LTI0LjMgMC00Mi42LTIwLjEtMzYuNy00NC44IDctMjkuNSAyMC41LTYxLjMgMjAuNS04Mi42IDAtMTktMTAuMi0zNC45LTMxLjQtMzQuOS0yNC45IDAtNDQuOSAyNS43LTQ0LjkgNjAuMiAwIDIyIDcuNCAzNi44IDcuNCAzNi44cy0yNC41IDEwMy44LTI5IDEyMy4yYy01IDIxLjQtMyA1MS42LS45IDcxLjJDNjUuNCA0NTAuOSAwIDM2MS4xIDAgMjU2IDAgMTE5IDExMSA4IDI0OCA4czI0OCAxMTEgMjQ4IDI0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGl4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Mi40IDI5Mi41QzI0Ny44IDI4Ny4xIDI1Ny4xIDI4Ny4xIDI2Mi41IDI5Mi41TDMzOS41IDM2OS41QzM1My43IDM4My43IDM3Mi42IDM5MS41IDM5Mi42IDM5MS41SDQwNy43TDMxMC42IDQ4OC42QzI4MC4zIDUxOC4xIDIzMS4xIDUxOC4xIDIwMC44IDQ4OC42TDEwMy4zIDM5MS4ySDExMi42QzEzMi42IDM5MS4yIDE1MS41IDM4My40IDE2NS43IDM2OS4yTDI0Mi40IDI5Mi41ek0yNjIuNSAyMTguOUMyNTYuMSAyMjQuNCAyNDcuOSAyMjQuNSAyNDIuNCAyMTguOUwxNjUuNyAxNDIuMkMxNTEuNSAxMjcuMSAxMzIuNiAxMjAuMiAxMTIuNiAxMjAuMkgxMDMuM0wyMDAuNyAyMi43NkMyMzEuMS03LjU4NiAyODAuMy03LjU4NiAzMTAuNiAyMi43Nkw0MDcuOCAxMTkuOUgzOTIuNkMzNzIuNiAxMTkuOSAzNTMuNyAxMjcuNyAzMzkuNSAxNDEuOUwyNjIuNSAyMTguOXpNMTEyLjYgMTQyLjdDMTI2LjQgMTQyLjcgMTM5LjEgMTQ4LjMgMTQ5LjcgMTU4LjFMMjI2LjQgMjM0LjhDMjMzLjYgMjQxLjEgMjQzIDI0NS42IDI1Mi41IDI0NS42QzI2MS45IDI0NS42IDI3MS4zIDI0MS4xIDI3OC41IDIzNC44TDM1NS41IDE1Ny44QzM2NS4zIDE0OC4xIDM3OC44IDE0Mi41IDM5Mi42IDE0Mi41SDQzMC4zTDQ4OC42IDIwMC44QzUxOC45IDIzMS4xIDUxOC45IDI4MC4zIDQ4OC42IDMxMC42TDQzMC4zIDM2OC45SDM5Mi42QzM3OC44IDM2OC45IDM2NS4zIDM2My4zIDM1NS41IDM1My41TDI3OC41IDI3Ni41QzI2NC42IDI2Mi42IDI0MC4zIDI2Mi42IDIyNi40IDI3Ni42TDE0OS43IDM1My4yQzEzOS4xIDM2MyAxMjYuNCAzNjguNiAxMTIuNiAzNjguNkg4MC43OEwyMi43NiAzMTAuNkMtNy41ODYgMjgwLjMtNy41ODYgMjMxLjEgMjIuNzYgMjAwLjhMODAuNzggMTQyLjdIMTEyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpeGl2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHptMTcxLjUgODRjNDEgMCA3Ni4zIDEyLjkgMTAxLjQgMzUuMmwwIDBjMjUuMiAyMi4yIDM5LjggNTQuMSAzOS44IDg4LjhjLjEgMzUuMy0xNi42IDY2LjMtNDIuNCA4N2MtMjUuOSAyMC44LTYwLjYgMzIuNC05OC44IDMyLjRjLTQzLjUgMC04My44LTE2LjEtODMuOC0xNi4xdjUxLjhjNy40IDIuMiAxOS43IDcgMTEuOSAxNC44SDEwNC44Yy03LjctNy44IDMuNi0xMi40IDEyLjEtMTQuOFYxNzUuNUM5Ny4xIDE5MC45IDg3IDIwNC4zIDgxLjggMjE0LjJjNiAxOS40LTUuMyAxOC41LTUuMyAxOC41TDU2IDE5OS43czcyLjctODMuNyAxNzkuNS04My43em0tMy42IDIyMi45YzMwIDAgNTYtMTEuMyA3My45LTI5LjJjMTcuOS0xOC4xIDI3LjktNDEuNiAyOC03MC4yYy0uMS0yOS4zLTkuNS01NC42LTI2LjctNzMuNmMtMTcuMi0xOC45LTQyLjctMzEuMy03NS4yLTMxLjRjLTI2LjctLjEtNTkuOCA5LTgwLjIgMjMuN1YzMjMuMWMxOC42IDkuMyA0Ni44IDE1LjkgODAuMiAxNS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGF5c3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzAuOSAzNzIuM2MtMTEuMyAxNC4yLTM4LjggMjQuMy0zOC44IDI0LjNMMzI3IDQ3MC4ydi01NC4zbDE1MC45LTUzLjhjMTcuMS02LjEgMTkuOC0xNC44IDUuOC0xOS40LTEzLjktNC42LTM5LjEtMy4zLTU2LjIgMi45TDMyNyAzODEuMXYtNTYuNGMyMy4yLTcuOCA0Ny4xLTEzLjYgNzUuNy0xNi44IDQwLjktNC41IDkwLjkuNiAxMzAuMiAxNS41IDQ0LjIgMTQgNDkuMiAzNC43IDM4IDQ4Ljl6bS0yMjQuNC05Mi41di0xMzljMC0xNi4zLTMtMzEuMy0xOC4zLTM1LjYtMTEuNy0zLjgtMTkgNy4xLTE5IDIzLjR2MzQ3LjlsLTkzLjgtMjkuOFYzMmMzOS45IDcuNCA5OCAyNC45IDEyOS4yIDM1LjRDNDI0LjEgOTQuNyA0NTEgMTI4LjcgNDUxIDIwNS4yYzAgNzQuNS00NiAxMDIuOC0xMDQuNSA3NC42ek00My4yIDQxMC4yYy00NS40LTEyLjgtNTMtMzkuNS0zMi4zLTU0LjggMTkuMS0xNC4yIDUxLjctMjQuOSA1MS43LTI0LjlsMTM0LjUtNDcuOHY1NC41bC05Ni44IDM0LjZjLTE3LjEgNi4xLTE5LjcgMTQuOC01LjggMTkuNCAxMy45IDQuNiAzOS4xIDMuMyA1Ni4yLTIuOWw0Ni40LTE2Ljl2NDguOGMtNTEuNiA5LjMtMTAxLjQgNy4zLTE1My45LTEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQcm9kdWN0SHVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjYuMyAyMTguOGMwIDIwLjUtMTYuNyAzNy4yLTM3LjIgMzcuMmgtNzAuM3YtNzQuNGg3MC4zYzIwLjUgMCAzNy4yIDE2LjcgMzcuMiAzNy4yek01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6bS0xMjguMS0zNy4yYzAtNDcuOS0zOC45LTg2LjgtODYuOC04Ni44SDE2OS4ydjI0OGg0OS42di03NC40aDcwLjNjNDcuOSAwIDg2LjgtMzguOSA4Ni44LTg2Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVB1c2hlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDMyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcgMTExLjlsLTk4LjUtOSAxNC0zMy40YzEwLjQtMjMuNS0xMC44LTQwLjQtMjguNy0zN0wyMi41IDc2LjljLTE1LjEgMi43LTI2IDE4LjMtMjEuNCAzNi42bDEwNS4xIDM0OC4zYzYuNSAyMS4zIDM2LjcgMjQuMiA0Ny43IDdsMzUuMy04MC44IDIzNS4yLTIzMS4zYzE2LjQtMTYuOCA0LjMtNDIuOS0xNy40LTQ0Ljh6TTI5Ny42IDUzLjZjNS4xLS43IDcuNSAyLjUgNS4yIDcuNEwyODYgMTAwLjkgMTA4LjYgODQuNmwxODktMzF6TTIyLjcgMTA3LjljLTMuMS01LjEgMS0xMCA2LjEtOS4xbDI0OC43IDIyLjctOTYuOSAyMzAuN0wyMi43IDEwNy45ek0xMzYgNDU2LjRjLTIuNiA0LTcuOSAzLjEtOS40LTEuMkw0My41IDE3OS43bDEyNy43IDE5Ny42Yy03IDE1LTM1LjIgNzkuMS0zNS4yIDc5LjF6bTI3Mi44LTMxNC41TDIxMC4xIDMzNy4zbDg5LjctMjEzLjcgMTA2LjQgOS43YzQgMS4xIDUuNyA1LjMgMi42IDguNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHl0aG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOS44IDIwMC41Yy03LjctMzAuOS0yMi4zLTU0LjItNTMuNC01NC4yaC00MC4xdjQ3LjRjMCAzNi44LTMxLjIgNjcuOC02Ni44IDY3LjhIMTcyLjdjLTI5LjIgMC01My40IDI1LTUzLjQgNTQuM3YxMDEuOGMwIDI5IDI1LjIgNDYgNTMuNCA1NC4zIDMzLjggOS45IDY2LjMgMTEuNyAxMDYuOCAwIDI2LjktNy44IDUzLjQtMjMuNSA1My40LTU0LjN2LTQwLjdIMjI2LjJ2LTEzLjZoMTYwLjJjMzEuMSAwIDQyLjYtMjEuNyA1My40LTU0LjIgMTEuMi0zMy41IDEwLjctNjUuNyAwLTEwOC42ek0yODYuMiA0MDRjMTEuMSAwIDIwLjEgOS4xIDIwLjEgMjAuMyAwIDExLjMtOSAyMC40LTIwLjEgMjAuNC0xMSAwLTIwLjEtOS4yLTIwLjEtMjAuNC4xLTExLjMgOS4xLTIwLjMgMjAuMS0yMC4zek0xNjcuOCAyNDguMWgxMDYuOGMyOS43IDAgNTMuNC0yNC41IDUzLjQtNTQuM1Y5MS45YzAtMjktMjQuNC01MC43LTUzLjQtNTUuNi0zNS44LTUuOS03NC43LTUuNi0xMDYuOC4xLTQ1LjIgOC01My40IDI0LjctNTMuNCA1NS42djQwLjdoMTA2Ljl2MTMuNmgtMTQ3Yy0zMS4xIDAtNTguMyAxOC43LTY2LjggNTQuMi05LjggNDAuNy0xMC4yIDY2LjEgMCAxMDguNiA3LjYgMzEuNiAyNS43IDU0LjIgNTYuOCA1NC4ySDEwMXYtNDguOGMwLTM1LjMgMzAuNS02Ni40IDY2LjgtNjYuNHptLTYuNy0xNDIuNmMtMTEuMSAwLTIwLjEtOS4xLTIwLjEtMjAuMy4xLTExLjMgOS0yMC40IDIwLjEtMjAuNCAxMSAwIDIwLjEgOS4yIDIwLjEgMjAuNHMtOSAyMC4zLTIwLjEgMjAuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMzLjc1NCA0MjAuNDQ1Yy0xMS41MjYgMS4zOTMtNDQuODYtNTIuNzQxLTQ0Ljg2LTUyLjc0MSAwIDMxLjM0NS0xNi4xMzYgNzIuMjQ3LTUxLjA1MSAxMDEuNzg2IDE2Ljg0MiA1LjE5MiA1NC44NDMgMTkuMTY3IDQ1LjgwMyAzNC40MjEtNy4zMTYgMTIuMzQzLTEyNS41MSA3Ljg4MS0xNTkuNjMyIDQuMDM3LTM0LjEyMiAzLjg0NC0xNTIuMzE2IDguMzA2LTE1OS42MzItNC4wMzctOS4wNDUtMTUuMjUgMjguOTE4LTI5LjIxNCA0NS43ODMtMzQuNDE1LTM0LjkyLTI5LjUzOS01MS4wNTktNzAuNDQ1LTUxLjA1OS0xMDEuNzkyIDAgMC0zMy4zMzQgNTQuMTM0LTQ0Ljg1OSA1Mi43NDEtNS4zNy0uNjUtMTIuNDI0LTI5LjY0NCA5LjM0Ny05OS43MDQgMTAuMjYxLTMzLjAyNCAyMS45OTUtNjAuNDc4IDQwLjE0NC0xMDUuNzc5QzYwLjY4MyA5OC4wNjMgMTA4Ljk4Mi4wMDYgMjI0IDBjMTEzLjczNy4wMDYgMTYzLjE1NiA5Ni4xMzMgMTYwLjI2NCAyMTQuOTYzIDE4LjExOCA0NS4yMjMgMjkuOTEyIDcyLjg1IDQwLjE0NCAxMDUuNzc4IDIxLjc2OCA3MC4wNiAxNC43MTYgOTkuMDUzIDkuMzQ2IDk5LjcwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVpbnNjYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy42IDQ3NC42aC0xYTE1OC4xIDE1OC4xIDAgMCAxIDAtMzE2LjJjOTQuOSAwIDE2OC4yIDgzLjEgMTU3IDE3Ni42IDQgNS4xIDguMiA5LjYgMTEuMiAxNS4zIDEzLjQtMzAuMyAyMC4zLTYyLjQgMjAuMy05Ny43QzUwMS4xIDExNy41IDM5MS42IDggMjU2LjUgOFMxMiAxMTcuNSAxMiAyNTIuNnMxMDkuNSAyNDQuNiAyNDQuNSAyNDQuNmEyMzcuMzYgMjM3LjM2IDAgMCAwIDcwLjQtMTAuMWMtNS4yLTMuNS04LjktOC4xLTEzLjMtMTIuNXptLS4xLS4xbC40LjF6bTc4LjQtMTY4LjlhOTkuMiA5OS4yIDAgMSAwIDk5LjIgOTkuMiA5OS4xOCA5OS4xOCAwIDAgMC05OS4yLTk5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVF1b3JhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC41IDM4Ni43aC0yOS4zYy0xLjUgMTMuNS0xMC41IDMwLjgtMzMgMzAuOC0yMC41IDAtMzUuMy0xNC4yLTQ5LjUtMzUuOCA0NC4yLTM0LjIgNzQuNy04Ny41IDc0LjctMTUzQzQwMy41IDExMS4yIDMwNi44IDMyIDIwNSAzMiAxMDUuMyAzMiA3LjMgMTExLjcgNy4zIDIyOC43YzAgMTM0LjEgMTMxLjMgMjIxLjYgMjQ5IDE4OUMyNzYgNDUxLjMgMzAyIDQ4MCAzNTEuNSA0ODBjODEuOCAwIDkwLjgtNzUuMyA4OS05My4zek0yOTcgMzI5LjJDMjc3LjUgMzAwIDI1My4zIDI3NyAyMDUuNSAyNzdjLTMwLjUgMC01NC4zIDEwLTY5IDIyLjhsMTIuMiAyNC4zYzYuMi0zIDEzLTQgMTkuOC00IDM1LjUgMCA1My43IDMwLjggNjkuMiA2MS4zLTEwIDMtMjAuNyA0LjItMzIuNyA0LjItNzUgMC0xMDcuNS01My0xMDcuNS0xNTYuN0M5Ny41IDEyNC41IDEzMCA3MSAyMDUgNzFjNzYuMiAwIDEwOC43IDUzLjUgMTA4LjcgMTU3LjcuMSA0MS44LTUuNCA3NS42LTE2LjcgMTAwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJQcm9qZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1ODEgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU4MSAyMjYuNkM1ODEgMTE5LjEgNDUwLjkgMzIgMjkwLjUgMzJTMCAxMTkuMSAwIDIyNi42QzAgMzIyLjQgMTAzLjMgNDAyIDIzOS40IDQxOC4xVjQ4MGg5OS4xdi02MS41YzI0LjMtMi43IDQ3LjYtNy40IDY5LjQtMTMuOUw0NDggNDgwaDExMmwtNjcuNC0xMTMuN2M1NC41LTM1LjQgODguNC04NC45IDg4LjQtMTM5Ljd6bS00NjYuOCAxNC41YzAtNzMuNSA5OC45LTEzMyAyMjAuOC0xMzNzMjExLjkgNDAuNyAyMTEuOSAxMzNjMCA1MC4xLTI2LjUgODUtNzAuMyAxMDYuNC0yLjQtMS42LTQuNy0yLjktNi40LTMuNy0xMC4yLTUuMi0yNy44LTEwLjUtMjcuOC0xMC41czg2LjYtNi40IDg2LjYtOTIuNy05MC42LTg3LjktOTAuNi04Ny45aC0xOTlWMzYxYy03NC4xLTIxLjUtMTI1LjItNjcuMS0xMjUuMi0xMTkuOXptMjI1LjEgMzguM3YtNTUuNmM1Ny44IDAgODcuOC02LjggODcuOCAyNy4zIDAgMzYuNS0zOC4yIDI4LjMtODcuOCAyOC4zem0tLjkgNzIuNUgzNjVjMTAuOCAwIDE4LjkgMTEuNyAyNCAxOS4yLTE2LjEgMS45LTMzIDIuOC01MC42IDIuOXYtMjIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmFzcGJlcnJ5UGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQwNyA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyIDIzMi41bC0zLjctNi41Yy4xLTQ2LjQtMjEuNC02NS4zLTQ2LjUtNzkuNyA3LjYtMiAxNS40LTMuNiAxNy42LTEzLjIgMTMuMS0zLjMgMTUuOC05LjQgMTcuMS0xNS44IDMuNC0yLjMgMTQuOC04LjcgMTMuNi0xOS43IDYuNC00LjQgMTAtMTAuMSA4LjEtMTguMSA2LjktNy41IDguNy0xMy43IDUuOC0xOS40IDguMy0xMC4zIDQuNi0xNS42IDEuMS0yMC45IDYuMi0xMS4yLjctMjMuMi0xNi42LTIxLjItNi45LTEwLjEtMjEuOS03LjgtMjQuMi03LjgtMi42LTMuMi02LTYtMTYuNS00LjctNi44LTYuMS0xNC40LTUtMjIuMy0yLjEtOS4zLTcuMy0xNS41LTEuNC0yMi42LjhDMjcxLjYuNiAyNjkgNS41IDI2My41IDcuNmMtMTIuMy0yLjYtMTYuMSAzLTIyIDguOWwtNi45LS4xYy0xOC42IDEwLjgtMjcuOCAzMi44LTMxLjEgNDQuMS0zLjMtMTEuMy0xMi41LTMzLjMtMzEuMS00NC4xbC02LjkuMWMtNS45LTUuOS05LjctMTEuNS0yMi04LjktNS42LTItOC4xLTctMTkuNC0zLjQtNC42LTEuNC04LjktNC40LTEzLjktNC4zLTIuNi4xLTUuNSAxLTguNyAzLjUtNy45LTMtMTUuNS00LTIyLjMgMi4xLTEwLjUtMS4zLTE0IDEuNC0xNi41IDQuNy0yLjMgMC0xNy4zLTIuMy0yNC4yIDcuOEMyMS4yIDE2IDE1LjggMjggMjIgMzkuMmMtMy41IDUuNC03LjIgMTAuNyAxLjEgMjAuOS0yLjkgNS43LTEuMSAxMS45IDUuOCAxOS40LTEuOCA4IDEuOCAxMy43IDguMSAxOC4xLTEuMiAxMSAxMC4yIDE3LjQgMTMuNiAxOS43IDEuMyA2LjQgNCAxMi40IDE3LjEgMTUuOCAyLjIgOS41IDEwIDExLjIgMTcuNiAxMy4yLTI1LjEgMTQuNC00Ni42IDMzLjMtNDYuNSA3OS43bC0zLjcgNi41Yy0yOC44IDE3LjItNTQuNyA3Mi43LTE0LjIgMTE3LjcgMi42IDE0LjEgNy4xIDI0LjIgMTEgMzUuNCA1LjkgNDUuMiA0NC41IDY2LjMgNTQuNiA2OC44IDE0LjkgMTEuMiAzMC44IDIxLjggNTIuMiAyOS4yQzE1OSA1MDQuMiAxODEgNTEyIDIwMyA1MTJoMWMyMi4xIDAgNDQtNy44IDY0LjItMjguNCAyMS41LTcuNCAzNy4zLTE4IDUyLjItMjkuMiAxMC4yLTIuNSA0OC43LTIzLjYgNTQuNi02OC44IDMuOS0xMS4yIDguNC0yMS4zIDExLTM1LjQgNDAuNi00NS4xIDE0LjctMTAwLjUtMTQtMTE3Ljd6bS0yMi4yLThjLTEuNSAxOC43LTk4LjktNjUuMS04Mi4xLTY3LjkgNDUuNy03LjUgODMuNiAxOS4yIDgyLjEgNjcuOXptLTQzIDkzLjFjLTI0LjUgMTUuOC01OS44IDUuNi03OC44LTIyLjhzLTE0LjYtNjQuMiA5LjktODBjMjQuNS0xNS44IDU5LjgtNS42IDc4LjggMjIuOHMxNC42IDY0LjItOS45IDgwek0yMzguOSAyOS4zYy44IDQuMiAxLjggNi44IDIuOSA3LjYgNS40LTUuOCA5LjgtMTEuNyAxNi44LTE3LjMgMCAzLjMtMS43IDYuOCAyLjUgOS40IDMuNy01IDguOC05LjUgMTUuNS0xMy4zLTMuMiA1LjYtLjYgNy4zIDEuMiA5LjYgNS4xLTQuNCAxMC04LjggMTkuNC0xMi4zLTIuNiAzLjEtNi4yIDYuMi0yLjQgOS44IDUuMy0zLjMgMTAuNi02LjYgMjMuMS04LjktMi44IDMuMS04LjcgNi4zLTUuMSA5LjQgNi42LTIuNSAxNC00LjQgMjIuMS01LjQtMy45IDMuMi03LjEgNi4zLTMuOSA4LjggNy4xLTIuMiAxNi45LTUuMSAyNi40LTIuNmwtNiA2LjFjLS43LjggMTQuMS42IDIzLjkuOC0zLjYgNS03LjIgOS43LTkuMyAxOC4yIDEgMSA1LjguNCAxMC40IDAtNC43IDkuOS0xMi44IDEyLjMtMTQuNyAxNi42IDIuOSAyLjIgNi44IDEuNiAxMS4yLjEtMy40IDYuOS0xMC40IDExLjctMTYgMTcuMyAxLjQgMSAzLjkgMS42IDkuNy45LTUuMiA1LjUtMTEuNCAxMC41LTE4LjggMTUgMS4zIDEuNSA1LjggMS41IDEwIDEuNi02LjcgNi41LTE1LjMgOS45LTIzLjQgMTQuMiA0IDIuNyA2LjkgMi4xIDEwIDIuMS01LjcgNC43LTE1LjQgNy4xLTI0LjQgMTAgMS43IDIuNyAzLjQgMy40IDcuMSA0LjEtOS41IDUuMy0yMy4yIDIuOS0yNyA1LjYuOSAyLjcgMy42IDQuNCA2LjcgNS44LTE1LjQuOS01Ny4zLS42LTY1LjQtMzIuMyAxNS43LTE3LjMgNDQuNC0zNy41IDkzLjctNjIuNi0zOC40IDEyLjgtNzMgMzAtMTAyIDUzLjUtMzQuMy0xNS45LTEwLjgtNTUuOSA1LjgtNzEuOHptLTM0LjQgMTE0LjZjMjQuMi0uMyA1NC4xIDE3LjggNTQgMzQuNy0uMSAxNS0yMSAyNy4xLTUzLjggMjYuOS0zMi4xLS40LTUzLjctMTUuMi01My42LTI5LjggMC0xMS45IDI2LjItMzIuNSA1My40LTMxLjh6bS0xMjMtMTIuOGMzLjctLjcgNS40LTEuNSA3LjEtNC4xLTktMi44LTE4LjctNS4zLTI0LjQtMTAgMy4xIDAgNiAuNyAxMC0yLjEtOC4xLTQuMy0xNi43LTcuNy0yMy40LTE0LjIgNC4yLS4xIDguNyAwIDEwLTEuNi03LjQtNC41LTEzLjYtOS41LTE4LjgtMTUgNS44LjcgOC4zLjEgOS43LS45LTUuNi01LjYtMTIuNy0xMC40LTE2LTE3LjMgNC4zIDEuNSA4LjMgMiAxMS4yLS4xLTEuOS00LjItMTAtNi43LTE0LjctMTYuNiA0LjYuNCA5LjQgMSAxMC40IDAtMi4xLTguNS01LjgtMTMuMy05LjMtMTguMiA5LjgtLjEgMjQuNiAwIDIzLjktLjhsLTYtNi4xYzkuNS0yLjUgMTkuMy40IDI2LjQgMi42IDMuMi0yLjUtLjEtNS42LTMuOS04LjggOC4xIDEuMSAxNS40IDIuOSAyMi4xIDUuNCAzLjUtMy4xLTIuMy02LjMtNS4xLTkuNCAxMi41IDIuMyAxNy44IDUuNiAyMy4xIDguOSAzLjgtMy42LjItNi43LTIuNC05LjggOS40IDMuNCAxNC4zIDcuOSAxOS40IDEyLjMgMS43LTIuMyA0LjQtNCAxLjItOS42IDYuNyAzLjggMTEuOCA4LjMgMTUuNSAxMy4zIDQuMS0yLjYgMi41LTYuMiAyLjUtOS40IDcgNS42IDExLjQgMTEuNSAxNi44IDE3LjMgMS4xLS44IDItMy40IDIuOS03LjYgMTYuNiAxNS45IDQwLjEgNTUuOSA2IDcxLjgtMjktMjMuNS02My42LTQwLjctMTAyLTUzLjUgNDkuMyAyNSA3OCA0NS4zIDkzLjcgNjIuNi04IDMxLjgtNTAgMzMuMi02NS40IDMyLjMgMy4xLTEuNCA1LjgtMy4yIDYuNy01LjgtNC0yLjgtMTcuNi0uNC0yNy4yLTUuNnptNjAuMSAyNC4xYzE2LjggMi44LTgwLjYgODYuNS04Mi4xIDY3LjktMS41LTQ4LjcgMzYuNS03NS41IDgyLjEtNjcuOXpNMzguMiAzNDJjLTIzLjctMTguOC0zMS4zLTczLjcgMTIuNi05OC4zIDI2LjUtNyA5IDEwNy44LTEyLjYgOTguM3ptOTEgOTguMmMtMTMuMyA3LjktNDUuOCA0LjctNjguOC0yNy45LTE1LjUtMjcuNC0xMy41LTU1LjItMi42LTYzLjQgMTYuMy05LjggNDEuNSAzLjQgNjAuOSAyNS42IDE2LjkgMjAgMjQuNiA1NS4zIDEwLjUgNjUuN3ptLTI2LjQtMTE5LjdjLTI0LjUtMTUuOC0yOC45LTUxLjYtOS45LTgwczU0LjMtMzguNiA3OC44LTIyLjggMjguOSA1MS42IDkuOSA4MGMtMTkuMSAyOC40LTU0LjQgMzguNi03OC44IDIyLjh6TTIwNSA0OTZjLTI5LjQgMS4yLTU4LjItMjMuNy01Ny44LTMyLjMtLjQtMTIuNyAzNS44LTIyLjYgNTkuMy0yMiAyMy43LTEgNTUuNiA3LjUgNTUuNyAxOC45LjUgMTEtMjguOCAzNS45LTU3LjIgMzUuNHptNTguOS0xMjQuOWMuMiAyOS43LTI2LjIgNTMuOC01OC44IDU0LTMyLjYuMi01OS4yLTIzLjgtNTkuNC01My40di0uNmMtLjItMjkuNyAyNi4yLTUzLjggNTguOC01NCAzMi42LS4yIDU5LjIgMjMuOCA1OS40IDUzLjR2LjZ6bTgyLjIgNDIuN2MtMjUuMyAzNC42LTU5LjYgMzUuOS03Mi4zIDI2LjMtMTMuMy0xMi40LTMuMi01MC45IDE1LjEtNzIgMjAuOS0yMy4zIDQzLjMtMzguNSA1OC45LTI2LjYgMTAuNSAxMC4zIDE2LjcgNDkuMS0xLjcgNzIuM3ptMjIuOS03My4yYy0yMS41IDkuNC0zOS0xMDUuMy0xMi42LTk4LjMgNDMuOSAyNC43IDM2LjMgNzkuNiAxMi42IDk4LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJhdmVscnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk4LjI1MiwyMzQuMjIzYy0xLjIwOC0xMC4zNC0xLjctMjAuODI2LTMuNzQ2LTMxYTMxMC4zMDYsMzEwLjMwNiwwLDAsMC05LjYyMi0zNi42LDE4NC4wNjgsMTg0LjA2OCwwLDAsMC0zMC44NzQtNTcuNSwyNTEuMTU0LDI1MS4xNTQsMCwwLDAtMTguODE4LTIxLjY4OSwyMzcuMzYyLDIzNy4zNjIsMCwwLDAtNDcuMTEzLTM2LjExNkEyNDAuOCwyNDAuOCwwLDAsMCwzMzEuMzU2LDI2LjY1Yy0xMS4wMTgtMy4xLTIyLjI3Mi01LjQzMS0zMy41MTUtNy42MTUtNi43OC0xLjMxNC0xMy43NDktMS42NjctMjAuNjI3LTIuNDgyLS4zMTYtLjAzNi0uNi0uMzU4LS45LS41NTNxLTE2LjE0My4wMDktMzIuMjg4LjAwNmMtMi40MS4zODktNC44MDguOTI1LTcuMjM2LDEuMTVhMTc5LjMzMSwxNzkuMzMxLDAsMCwwLTM0LjI1Niw3LjEsMjIxLjUsMjIxLjUsMCwwLDAtMzkuNzY4LDE2LjM1NSwyODEuMzg1LDI4MS4zODUsMCwwLDAtMzguMDgsMjQuMTU4Yy02LjE2Nyw0LjYxLTEyLjI2OCw5LjM2LTE3Ljk3NCwxNC41MThDOTYuNTM5LDg4LjQ5NCw4Ni4zNCw5Ny43Miw3Ni43ODUsMTA3LjU1NWEyNDMuODc4LDI0My44NzgsMCwwLDAtMzMuNjQ4LDQzLjk1LDIwNi40ODgsMjA2LjQ4OCwwLDAsMC0yMC40OTQsNDQuNiwxOTguMiwxOTguMiwwLDAsMC03LjY5MSwzNC43NTlBMjAxLjEzLDIwMS4xMywwLDAsMCwxMy40LDI2Ni4zODVhMjk5LjcxNiwyOTkuNzE2LDAsMCwwLDQuNDI1LDQwLjI0LDIyNi44NjUsMjI2Ljg2NSwwLDAsMCwxNi43Myw1My4zLDIxMC41NDMsMjEwLjU0MywwLDAsMCwyNCwzOS41MjgsMjEzLjU4OSwyMTMuNTg5LDAsMCwwLDI2LjM1OCwyOC40MTZBMjUxLjMxMywyNTEuMzEzLDAsMCwwLDEyNi43LDQ1OC40NTVhMjg3LjgzMSwyODcuODMxLDAsMCwwLDU1LjksMjUuMjc3LDI2OS41LDI2OS41LDAsMCwwLDQwLjY0MSw5LjgzNWM2LjA3MSwxLjAxLDEyLjI3NSwxLjI1MywxOC40MTIsMS44NzNhNC4xNDksNC4xNDksMCwwLDEsMS4xOS41NmgzMi4yODljMi41MDctLjM4OSw1LS45MzcsNy41MjctMS4xNDMsMTYuMzM2LTEuMzMyLDMyLjEwNy01LjMzNSw0Ny40ODktMTAuNzE3QTIxOS45OTIsMjE5Ljk5MiwwLDAsMCwzNzkuMSw0NjAuMzIyYzkuNzQ5LTYuNDQ3LDE5LjM5NS0xMy4wNzcsMjguNzM3LTIwLjEsNS43ODUtNC4zNDgsMTAuOTg4LTkuNSwxNi4zLTE0LjQ1NywzLjk2NC0zLjcsNy43NjQtNy41NzgsMTEuNTEtMTEuNWEyMzIuMTYyLDIzMi4xNjIsMCwwLDAsMzEuNDI3LTQxLjYzOWM5LjU0Mi0xNi4wNDUsMTcuMzU1LTMyLjkwNSwyMi4zLTUwLjkyNiwyLjg1OS0xMC40MTMsNC45NDctMjEuMDQ1LDcuMDE3LTMxLjY1MiwxLjAzMi01LjI3OSwxLjI1MS0xMC43MjMsMS44Ny0xNi4wODcuMDM2LS4zMTcuMzU4LS42LjU1Mi0uOVYyMzYuMDA1QTkuNzU3LDkuNzU3LDAsMCwxLDQ5OC4yNTIsMjM0LjIyM1ptLTE2MS4xMTctMS4xNXMtMTYuNTcyLTIuOTgtMjguNDctMi45OGMtMjcuMiwwLTMzLjU3LDE0LjktMzMuNTcsMzcuMDRWMzYwLjhIMjAxLjU4MlYxNzAuMDYySDI3NS4xdjMxLjkzMWM4LjkyNC0yNi44MjIsMjYuNzcxLTM2LjE4OSw2Mi4wNC0zNi4xODlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlYWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxOC4yIDE3Ny4yYy01LjQtMS44LTEwLjgtMy41LTE2LjItNS4xLjktMy43IDEuNy03LjQgMi41LTExLjEgMTIuMy01OS42IDQuMi0xMDcuNS0yMy4xLTEyMy4zLTI2LjMtMTUuMS02OS4yLjYtMTEyLjYgMzguNC00LjMgMy43LTguNSA3LjYtMTIuNSAxMS41LTIuNy0yLjYtNS41LTUuMi04LjMtNy43LTQ1LjUtNDAuNC05MS4xLTU3LjQtMTE4LjQtNDEuNS0yNi4yIDE1LjItMzQgNjAuMy0yMyAxMTYuNyAxLjEgNS42IDIuMyAxMS4xIDMuNyAxNi43LTYuNCAxLjgtMTIuNyAzLjgtMTguNiA1LjlDMzguMyAxOTYuMiAwIDIyNS40IDAgMjU1LjZjMCAzMS4yIDQwLjggNjIuNSA5Ni4zIDgxLjUgNC41IDEuNSA5IDMgMTMuNiA0LjMtMS41IDYtMi44IDExLjktNCAxOC0xMC41IDU1LjUtMi4zIDk5LjUgMjMuOSAxMTQuNiAyNyAxNS42IDcyLjQtLjQgMTE2LjYtMzkuMSAzLjUtMy4xIDctNi4zIDEwLjUtOS43IDQuNCA0LjMgOSA4LjQgMTMuNiAxMi40IDQyLjggMzYuOCA4NS4xIDUxLjcgMTExLjIgMzYuNiAyNy0xNS42IDM1LjgtNjIuOSAyNC40LTEyMC41LS45LTQuNC0xLjktOC45LTMtMTMuNSAzLjItLjkgNi4zLTEuOSA5LjQtMi45IDU3LjctMTkuMSA5OS41LTUwIDk5LjUtODEuNyAwLTMwLjMtMzkuNC01OS43LTkzLjgtNzguNHpNMjgyLjkgOTIuM2MzNy4yLTMyLjQgNzEuOS00NS4xIDg3LjctMzYgMTYuOSA5LjcgMjMuNCA0OC45IDEyLjggMTAwLjQtLjcgMy40LTEuNCA2LjctMi4zIDEwLTIyLjItNS00NC43LTguNi02Ny4zLTEwLjYtMTMtMTguNi0yNy4yLTM2LjQtNDIuNi01My4xIDMuOS0zLjcgNy43LTcuMiAxMS43LTEwLjd6TTE2Ny4yIDMwNy41YzUuMSA4LjcgMTAuMyAxNy40IDE1LjggMjUuOS0xNS42LTEuNy0zMS4xLTQuMi00Ni40LTcuNSA0LjQtMTQuNCA5LjktMjkuMyAxNi4zLTQ0LjUgNC42IDguOCA5LjMgMTcuNSAxNC4zIDI2LjF6bS0zMC4zLTEyMC4zYzE0LjQtMy4yIDI5LjctNS44IDQ1LjYtNy44LTUuMyA4LjMtMTAuNSAxNi44LTE1LjQgMjUuNC00LjkgOC41LTkuNyAxNy4yLTE0LjIgMjYtNi4zLTE0LjktMTEuNi0yOS41LTE2LTQzLjZ6bTI3LjQgNjguOWM2LjYtMTMuOCAxMy44LTI3LjMgMjEuNC00MC42czE1LjgtMjYuMiAyNC40LTM4LjljMTUtMS4xIDMwLjMtMS43IDQ1LjktMS43czMxIC42IDQ1LjkgMS43YzguNSAxMi42IDE2LjYgMjUuNSAyNC4zIDM4LjdzMTQuOSAyNi43IDIxLjcgNDAuNGMtNi43IDEzLjgtMTMuOSAyNy40LTIxLjYgNDAuOC03LjYgMTMuMy0xNS43IDI2LjItMjQuMiAzOS0xNC45IDEuMS0zMC40IDEuNi00Ni4xIDEuNnMtMzAuOS0uNS00NS42LTEuNGMtOC43LTEyLjctMTYuOS0yNS43LTI0LjYtMzlzLTE0LjgtMjYuOC0yMS41LTQwLjZ6bTE4MC42IDUxLjJjNS4xLTguOCA5LjktMTcuNyAxNC42LTI2LjcgNi40IDE0LjUgMTIgMjkuMiAxNi45IDQ0LjMtMTUuNSAzLjUtMzEuMiA2LjItNDcgOCA1LjQtOC40IDEwLjUtMTcgMTUuNS0yNS42em0xNC40LTc2LjVjLTQuNy04LjgtOS41LTE3LjYtMTQuNS0yNi4yLTQuOS04LjUtMTAtMTYuOS0xNS4zLTI1LjIgMTYuMSAyIDMxLjUgNC43IDQ1LjkgOC00LjYgMTQuOC0xMCAyOS4yLTE2LjEgNDMuNHpNMjU2LjIgMTE4LjNjMTAuNSAxMS40IDIwLjQgMjMuNCAyOS42IDM1LjgtMTkuOC0uOS0zOS43LS45LTU5LjUgMCA5LjgtMTIuOSAxOS45LTI0LjkgMjkuOS0zNS44ek0xNDAuMiA1N2MxNi44LTkuOCA1NC4xIDQuMiA5My40IDM5IDIuNSAyLjIgNSA0LjYgNy42IDctMTUuNSAxNi43LTI5LjggMzQuNS00Mi45IDUzLjEtMjIuNiAyLTQ1IDUuNS02Ny4yIDEwLjQtMS4zLTUuMS0yLjQtMTAuMy0zLjUtMTUuNS05LjQtNDguNC0zLjItODQuOSAxMi42LTk0em0tMjQuNSAyNjMuNmMtNC4yLTEuMi04LjMtMi41LTEyLjQtMy45LTIxLjMtNi43LTQ1LjUtMTcuMy02My0zMS4yLTEwLjEtNy0xNi45LTE3LjgtMTguOC0yOS45IDAtMTguMyAzMS42LTQxLjcgNzcuMi01Ny42IDUuNy0yIDExLjUtMy44IDE3LjMtNS41IDYuOCAyMS43IDE1IDQzIDI0LjUgNjMuNi05LjYgMjAuOS0xNy45IDQyLjUtMjQuOCA2NC41em0xMTYuNiA5OGMtMTYuNSAxNS4xLTM1LjYgMjcuMS01Ni40IDM1LjMtMTEuMSA1LjMtMjMuOSA1LjgtMzUuMyAxLjMtMTUuOS05LjItMjIuNS00NC41LTEzLjUtOTIgMS4xLTUuNiAyLjMtMTEuMiAzLjctMTYuNyAyMi40IDQuOCA0NSA4LjEgNjcuOSA5LjggMTMuMiAxOC43IDI3LjcgMzYuNiA0My4yIDUzLjQtMy4yIDMuMS02LjQgNi4xLTkuNiA4Ljl6bTI0LjUtMjQuM2MtMTAuMi0xMS0yMC40LTIzLjItMzAuMy0zNi4zIDkuNi40IDE5LjUuNiAyOS41LjYgMTAuMyAwIDIwLjQtLjIgMzAuNC0uNy05LjIgMTIuNy0xOS4xIDI0LjgtMjkuNiAzNi40em0xMzAuNyAzMGMtLjkgMTIuMi02LjkgMjMuNi0xNi41IDMxLjMtMTUuOSA5LjItNDkuOC0yLjgtODYuNC0zNC4yLTQuMi0zLjYtOC40LTcuNS0xMi43LTExLjUgMTUuMy0xNi45IDI5LjQtMzQuOCA0Mi4yLTUzLjYgMjIuOS0xLjkgNDUuNy01LjQgNjguMi0xMC41IDEgNC4xIDEuOSA4LjIgMi43IDEyLjIgNC45IDIxLjYgNS43IDQ0LjEgMi41IDY2LjN6bTE4LjItMTA3LjVjLTIuOC45LTUuNiAxLjgtOC41IDIuNi03LTIxLjgtMTUuNi00My4xLTI1LjUtNjMuOCA5LjYtMjAuNCAxNy43LTQxLjQgMjQuNS02Mi45IDUuMiAxLjUgMTAuMiAzLjEgMTUgNC43IDQ2LjYgMTYgNzkuMyAzOS44IDc5LjMgNTggMCAxOS42LTM0LjkgNDQuOS04NC44IDYxLjR6bS0xNDkuNy0xNWMyNS4zIDAgNDUuOC0yMC41IDQ1LjgtNDUuOHMtMjAuNS00NS44LTQ1LjgtNDUuOGMtMjUuMyAwLTQ1LjggMjAuNS00NS44IDQ1LjhzMjAuNSA0NS44IDQ1LjggNDUuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVhY3RldXJvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjUwLjYgMjExLjc0bDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjMtNy4xLS4xLTIuMy02LjgtMi4zIDYuOC03LjIuMSA1LjcgNC4zem02My43IDBsNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuMy03LjItLjEtMi4zLTYuOC0yLjMgNi44LTcuMi4xIDUuNyA0LjN6bS05MS4zIDUwLjVoLTMuNGMtNC44IDAtMy44IDQtMy44IDEyLjEgMCA0LjctMi4zIDYuMS01LjggNi4xcy01LjgtMS40LTUuOC02LjF2LTM2LjZjMC00LjcgMi4zLTYuMSA1LjgtNi4xczUuOCAxLjQgNS44IDYuMWMwIDcuMi0uNyAxMC41IDMuOCAxMC41aDMuNGM0LjctLjEgMy44LTMuOSAzLjgtMTIuMyAwLTkuOS02LjctMTQuMS0xNi44LTE0LjFoLS4yYy0xMC4xIDAtMTYuOCA0LjItMTYuOCAxNC4xVjI3NmMwIDEwLjQgNi43IDE0LjEgMTYuOCAxNC4xaC4yYzEwLjEgMCAxNi44LTMuOCAxNi44LTE0LjEgMC05Ljg2IDEuMS0xMy43Ni0zLjgtMTMuNzZ6bS04MC43IDE3LjRoLTE0Ljd2LTE5LjNIMTM5YzIuNSAwIDMuOC0xLjMgMy44LTMuOHYtMi4xYzAtMi41LTEuMy0zLjgtMy44LTMuOGgtMTEuNHYtMTguM0gxNDJjMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44aC0yMS43Yy0yLjQtLjEtMy43IDEuMy0zLjcgMy44djU5LjFjMCAyLjUgMS4zIDMuOCAzLjggMy44aDIxLjljMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44em0tNDItMTguNWM0LjYtMiA3LjMtNiA3LjMtMTIuNHYtMTEuOWMwLTEwLjEtNi43LTE0LjEtMTYuOC0xNC4xSDc3LjRjLTIuNSAwLTMuOCAxLjMtMy44IDMuOHY1OS4xYzAgMi41IDEuMyAzLjggMy44IDMuOGgzLjRjMi41IDAgMy44LTEuMyAzLjgtMy44di0yMi45aDUuNmw3LjQgMjMuNWE0LjEgNC4xIDAgMCAwIDQuMyAzLjJoMy4zYzIuOCAwIDQtMS44IDMuMi00LjR6bS0zLjgtMTRjMCA0LjgtMi41IDYuMS02LjEgNi4xaC01Ljh2LTIwLjloNS44YzMuNiAwIDYuMSAxLjMgNi4xIDYuMXpNMTc2IDIyNmEzLjgyIDMuODIgMCAwIDAtNC4yLTMuNGgtNi45YTMuNjggMy42OCAwIDAgMC00IDMuNGwtMTEgNTkuMmMtLjUgMi43LjkgNC4xIDMuNCA0LjFoM2EzLjc0IDMuNzQgMCAwIDAgNC4xLTMuNWwxLjgtMTEuM2gxMi4ybDEuOCAxMS4zYTMuNzQgMy43NCAwIDAgMCA0LjEgMy41aDMuNWMyLjYgMCAzLjktMS40IDMuNC00LjF6bS0xMi4zIDM5LjNsNC43LTI5LjcgNC43IDI5Ljd6bTg5LjMgMjAuMnYtNTMuMmg3LjVjMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44aC0yNS44Yy0yLjUgMC0zLjggMS4zLTMuOCAzLjh2Mi4xYzAgMi41IDEuMyAzLjggMy44IDMuOGg3LjN2NTMuMmMwIDIuNSAxLjMgMy44IDMuOCAzLjhoMy40YzIuNS4wNCAzLjgtMS4zIDMuOC0zLjc2em0yNDgtLjhoLTE5LjRWMjU4aDE2LjFhMS44OSAxLjg5IDAgMCAwIDItMnYtLjhhMS44OSAxLjg5IDAgMCAwLTItMmgtMTYuMXYtMjUuOGgxOS4xYTEuODkgMS44OSAwIDAgMCAyLTJ2LS44YTEuNzcgMS43NyAwIDAgMC0yLTEuOWgtMjIuMmExLjYyIDEuNjIgMCAwIDAtMiAxLjh2NjNhMS44MSAxLjgxIDAgMCAwIDIgMS45SDUwMWExLjgxIDEuODEgMCAwIDAgMi0xLjl2LS44YTEuODQgMS44NCAwIDAgMC0yLTEuOTZ6bS05My4xLTYyLjloLS44Yy0xMC4xIDAtMTUuMyA0LjctMTUuMyAxNC4xVjI3NmMwIDkuMyA1LjIgMTQuMSAxNS4zIDE0LjFoLjhjMTAuMSAwIDE1LjMtNC44IDE1LjMtMTQuMXYtNDAuMWMwLTkuMzYtNS4yLTE0LjA2LTE1LjMtMTQuMDZ6bTEwLjIgNTIuNGMtLjEgOC0zIDExLjEtMTAuNSAxMS4xcy0xMC41LTMuMS0xMC41LTExLjF2LTM2LjZjMC03LjkgMy0xMS4xIDEwLjUtMTEuMXMxMC41IDMuMiAxMC41IDExLjF6bS00Ni41LTE0LjVjNi4xLTEuNiA5LjItNi4xIDkuMi0xMy4zdi05LjdjMC05LjQtNS4yLTE0LjEtMTUuMy0xNC4xaC0xMy43YTEuODEgMS44MSAwIDAgMC0yIDEuOXY2M2ExLjgxIDEuODEgMCAwIDAgMiAxLjloMS4yYTEuNzQgMS43NCAwIDAgMCAxLjktMS45di0yNi45aDExLjZsMTAuNCAyNy4yYTIuMzIgMi4zMiAwIDAgMCAyLjMgMS41aDEuNWMxLjQgMCAyLTEgMS41LTIuM3ptLTYuNC0zLjlIMzU1di0yOC41aDEwLjJjNy41IDAgMTAuNSAzLjEgMTAuNSAxMS4xdjYuNGMwIDcuODQtMyAxMS4wNC0xMC41IDExLjA0em04NS45LTMzLjFoLTEzLjdhMS42MiAxLjYyIDAgMCAwLTIgMS44djYzYTEuODEgMS44MSAwIDAgMCAyIDEuOWgxLjJhMS43NCAxLjc0IDAgMCAwIDEuOS0xLjl2LTI2LjFoMTAuNmMxMC4xIDAgMTUuMy00LjggMTUuMy0xNC4xdi0xMC41YzAtOS40LTUuMi0xNC4xLTE1LjMtMTQuMXptMTAuMiAyMi44YzAgNy45LTMgMTEuMS0xMC41IDExLjFoLTEwLjJ2LTI5LjJoMTAuMmM3LjUtLjEgMTAuNSAzLjEgMTAuNSAxMXpNMjU5LjUgMzA4bC0yLjMtNi44LTIuMyA2LjgtNy4xLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjN6bTIyNy42LTEzNi4xYTM2NC40MiAzNjQuNDIgMCAwIDAtMzUuNi0xMS4zYzE5LjYtNzggMTEuNi0xMzQuNy0yMi4zLTE1My45QzM5NC43LTEyLjY2IDM0My4zIDExIDI5MSA2MS45NHE1LjEgNC45NSAxMC4yIDEwLjJjODIuNS04MCAxMTkuNi01My41IDEyMC45LTUyLjggMjIuNCAxMi43IDM2IDU1LjggMTUuNSAxMzcuOGE1ODcuODMgNTg3LjgzIDAgMCAwLTg0LjYtMTNDMjgxLjEgNDMuNjQgMjEyLjQgMiAxNzAuOCAyIDE0MCAyIDEyNyAyMyAxMjMuMiAyOS43NGMtMTguMSAzMi0xMy4zIDg0LjIuMSAxMzMuOC03MC41IDIwLjMtMTIwLjcgNTQuMS0xMjAuMyA5NSAuNSA1OS42IDEwMy4yIDg3LjggMTIyLjEgOTIuOC0yMC41IDgxLjktMTAuMSAxMzUuNiAyMi4zIDE1My45IDI4IDE1LjggNzUuMSA2IDEzOC4yLTU1LjJxLTUuMS00Ljk1LTEwLjItMTAuMmMtODIuNSA4MC0xMTkuNyA1My41LTEyMC45IDUyLjgtMjIuMy0xMi42LTM2LTU1LjYtMTUuNS0xMzcuOSAxMi40IDIuOSA0MS44IDkuNSA4NC42IDEzIDcxLjkgMTAwLjQgMTQwLjYgMTQyIDE4Mi4xIDE0MiAzMC44IDAgNDMuOC0yMSA0Ny42LTI3LjcgMTgtMzEuOSAxMy4zLTg0LjEtLjEtMTMzLjggMTUyLjMtNDMuOCAxNTYuMi0xMzAuMiAzMy45LTE3Ni4zek0xMzUuOSAzNi44NGMyLjktNS4xIDExLjktMjAuMyAzNC45LTIwLjMgMzYuOCAwIDk4LjggMzkuNiAxNjMuMyAxMjYuMmE3MTQgNzE0IDAgMCAwLTkzLjkuOSA1NDcuNzYgNTQ3Ljc2IDAgMCAxIDQyLjItNTIuNFEyNzcuMyA4NiAyNzIuMiA4MWE1OTguMjUgNTk4LjI1IDAgMCAwLTUwLjcgNjQuMiA1NjkuNjkgNTY5LjY5IDAgMCAwLTg0LjQgMTQuNmMtLjItMS40LTI0LjMtODIuMi0xLjItMTIzem0zMDQuOCA0MzguM2MtMi45IDUuMS0xMS44IDIwLjMtMzQuOSAyMC4zLTM2LjcgMC05OC43LTM5LjQtMTYzLjMtMTI2LjJhNjk1LjM4IDY5NS4zOCAwIDAgMCA5My45LS45IDU0Ny43NiA1NDcuNzYgMCAwIDEtNDIuMiA1Mi40cTUuMSA1LjI1IDEwLjIgMTAuMmE1ODguNDcgNTg4LjQ3IDAgMCAwIDUwLjctNjQuMmM0Ny4zLTQuNyA4MC4zLTEzLjUgODQuNC0xNC42IDIyLjcgODQuNCA0LjUgMTE3IDEuMiAxMjN6bTkuMS0xMzguNmMtMy42LTExLjktNy43LTI0LjEtMTIuNC0zNi40YTEyLjY3IDEyLjY3IDAgMCAxLTEwLjctNS43bC0uMS4xYTE5LjYxIDE5LjYxIDAgMCAxLTUuNCAzLjZjNS43IDE0LjMgMTAuNiAyOC40IDE0LjcgNDIuMmE1MzUuMyA1MzUuMyAwIDAgMS03MiAxM2MzLjUtNS4zIDE3LjItMjYuMiAzMi4yLTU0LjJhMjQuNiAyNC42IDAgMCAxLTYtMy4yYy0xLjEgMS4yLTMuNiA0LjItMTAuOSA0LjItNi4yIDExLjItMTcuNCAzMC45LTMzLjkgNTUuMmE3MTEuOTEgNzExLjkxIDAgMCAxLTExMi40IDFjLTcuOS0xMS4yLTIxLjUtMzEuMS0zNi44LTU3LjhhMjEgMjEgMCAwIDEtMy0xLjVjLTEuOSAxLjYtMy45IDMuMi0xMi42IDMuMiA2LjMgMTEuMiAxNy41IDMwLjcgMzMuOCA1NC42YTU0OC44MSA1NDguODEgMCAwIDEtNzIuMi0xMS43cTUuODUtMjEgMTQuMS00Mi45Yy0zLjIgMC01LjQuMi04LjQtMWExNy41OCAxNy41OCAwIDAgMS02LjkgMWMtNC45IDEzLjQtOS4xIDI2LjUtMTIuNyAzOS40Qy0zMS43IDI5Ny0xMi4xIDIxNiAxMjYuNyAxNzUuNjRjMy42IDExLjkgNy43IDI0LjEgMTIuNCAzNi40IDEwLjQgMCAxMi45IDMuNCAxNC40IDUuM2ExMiAxMiAwIDAgMSAyLjMtMi4yYy01LjgtMTQuNy0xMC45LTI5LjItMTUuMi00My4zIDctMS44IDMyLjQtOC40IDcyLTEzLTE1LjkgMjQuMy0yNi43IDQzLjktMzIuOCA1NS4zYTE0LjIyIDE0LjIyIDAgMCAxIDYuNCA4IDIzLjQyIDIzLjQyIDAgMCAxIDEwLjItOC40YzYuNS0xMS43IDE3LjktMzEuOSAzNC44LTU2LjlhNzExLjcyIDcxMS43MiAwIDAgMSAxMTIuNC0xYzMxLjUgNDQuNiAyOC45IDQ4LjEgNDIuNSA2NC41YTIxLjQyIDIxLjQyIDAgMCAxIDEwLjQtNy40Yy02LjQtMTEuNC0xNy42LTMxLTM0LjMtNTUuNSA0MC40IDQuMSA2NSAxMCA3Mi4yIDExLjctNCAxNC40LTguOSAyOS4yLTE0LjYgNDQuMmEyMC43NCAyMC43NCAwIDAgMSA2LjggNC4zbC4xLjFhMTIuNzIgMTIuNzIgMCAwIDEgOC45LTUuNmM0LjktMTMuNCA5LjItMjYuNiAxMi44LTM5LjVhMzU5LjcxIDM1OS43MSAwIDAgMSAzNC41IDExYzEwNi4xIDM5LjkgNzQgODcuOSA3Mi42IDkwLjQtMTkuOCAzNS4xLTgwLjEgNTUuMi0xMDUuNyA2Mi41em0tMTE0LjQtMTE0aC0xLjJhMS43NCAxLjc0IDAgMCAwLTEuOSAxLjl2NDkuOGMwIDcuOS0yLjYgMTEuMS0xMC4xIDExLjFzLTEwLjEtMy4xLTEwLjEtMTEuMXYtNDkuOGExLjY5IDEuNjkgMCAwIDAtMS45LTEuOUgzMDlhMS44MSAxLjgxIDAgMCAwLTIgMS45djUxLjVjMCA5LjYgNSAxNC4xIDE1LjEgMTQuMWguNGMxMC4xIDAgMTUuMS00LjYgMTUuMS0xNC4xdi01MS41YTIgMiAwIDAgMC0yLjItMS45ek0zMjEuNyAzMDhsLTIuMy02LjgtMi4zIDYuOC03LjEuMSA1LjcgNC4zLTIuMSA2LjggNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuM3ptLTMxLjEgNy40bC0yLjMtNi44LTIuMyA2LjgtNy4xLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjN6bTUuMS0zMC44aC0xOS40di0yNi43aDE2LjFhMS44OSAxLjg5IDAgMCAwIDItMnYtLjhhMS44OSAxLjg5IDAgMCAwLTItMmgtMTYuMXYtMjUuOGgxOS4xYTEuODkgMS44OSAwIDAgMCAyLTJ2LS44YTEuNzcgMS43NyAwIDAgMC0yLTEuOWgtMjIuMmExLjgxIDEuODEgMCAwIDAtMiAxLjl2NjNhMS44MSAxLjgxIDAgMCAwIDIgMS45aDIyLjVhMS43NyAxLjc3IDAgMCAwIDItMS45di0uOGExLjgzIDEuODMgMCAwIDAtMi0yLjA2em0tNy40LTk5LjRMMjg2IDE5MmwtNy4xLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjMtNy4xLS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWFkbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4LjMgNDYuNUgzODguNWMtNDguMSAwLTg5LjkgMzMuMy0xMDAuNCA4MC4zLTEwLjYtNDctNTIuMy04MC4zLTEwMC40LTgwLjNINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djI0NS44YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDg5LjdjMTAyLjIgMCAxMzIuNyAyNC40IDE0Ny4zIDc1IC43IDIuOCA1LjIgMi44IDYgMCAxNC43LTUwLjYgNDUuMi03NSAxNDcuMy03NUg1MjhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWOTQuNmMwLTI2LjQtMjEuMy00Ny45LTQ3LjctNDguMXpNMjQyIDMxMS45YzAgMS45LTEuNSAzLjUtMy41IDMuNUg3OC4yYy0xLjkgMC0zLjUtMS41LTMuNS0zLjVWMjg5YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjV2MjIuOXptMC02MC45YzAgMS45LTEuNSAzLjUtMy41IDMuNUg3OC4yYy0xLjkgMC0zLjUtMS41LTMuNS0zLjV2LTIyLjljMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNVYyNTF6bTAtNjAuOWMwIDEuOS0xLjUgMy41LTMuNSAzLjVINzguMmMtMS45IDAtMy41LTEuNS0zLjUtMy41di0yMi45YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjV2MjIuOXptMjU5LjMgMTIxLjdjMCAxLjktMS41IDMuNS0zLjUgMy41SDMzNy41Yy0xLjkgMC0zLjUtMS41LTMuNS0zLjV2LTIyLjljMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNXYyMi45em0wLTYwLjljMCAxLjktMS41IDMuNS0zLjUgMy41SDMzNy41Yy0xLjkgMC0zLjUtMS41LTMuNS0zLjVWMjI4YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjV2MjIuOXptMC02MC45YzAgMS45LTEuNSAzLjUtMy41IDMuNUgzMzcuNWMtMS45IDAtMy41LTEuNS0zLjUtMy41di0yMi44YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjVWMTkwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWJlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYuNSA1MDRDMTE3LjIgNTA0IDkgMzg3LjggMTMuMiAyNDkuOSAxNiAxNzAuNyA1Ni40IDk3LjcgMTI5LjcgNDkuNWMuMyAwIDEuOS0uNiAxLjEuOC01LjggNS41LTExMS4zIDEyOS44LTE0LjEgMjI2LjQgNDkuOCA0OS41IDkwIDIuNSA5MCAyLjUgMzguNS01MC4xLS42LTEyNS45LS42LTEyNS45LTEwLTI0LjktNDUuNy00MC4xLTQ1LjctNDAuMWwyOC44LTMxLjhjMjQuNCAxMC41IDQzLjIgMzguNyA0My4yIDM4LjcuOC0yOS42LTIxLjktNjEuNC0yMS45LTYxLjRMMjU1LjEgOGw0NC4zIDUwLjFjLTIwLjUgMjguOC0yMS45IDYyLjYtMjEuOSA2Mi42IDEzLjgtMjMgNDMuNS0zOS4zIDQzLjUtMzkuM2wyOC41IDMxLjhjLTI3LjQgOC45LTQ1LjQgMzkuOS00NS40IDM5LjktMTUuOCAyOC41LTI3LjEgODkuNC42IDEyNy4zIDMyLjQgNDQuNiA4Ny43LTIuOCA4Ny43LTIuOCAxMDIuNy05MS45LTEwLjUtMjI1LTEwLjUtMjI1LTYuMS01LjUuOC0yLjguOC0yLjggNTAuMSAzNi41IDExNC42IDg0LjQgMTE2LjIgMjA0LjhDNTAwLjkgNDAwLjIgMzk5IDUwNCAyNTYuNSA1MDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZFJpdmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1My4yIDMySDk0LjhDNDIuNCAzMiAwIDc0LjQgMCAxMjYuOHYyNTguNEMwIDQzNy42IDQyLjQgNDgwIDk0LjggNDgwaDI1OC40YzUyLjQgMCA5NC44LTQyLjQgOTQuOC05NC44VjEyNi44YzAtNTIuNC00Mi40LTk0LjgtOTQuOC05NC44ek0xNDQuOSAyMDAuOXY1Ni4zYzAgMjctMjEuOSA0OC45LTQ4LjkgNDguOVYxNTEuOWMwLTEzLjIgMTAuNy0yMy45IDIzLjktMjMuOWgxNTQuMmMwIDI3LTIxLjkgNDguOS00OC45IDQ4LjloLTU2LjNjLTEyLjMtLjYtMjQuNiAxMS42LTI0IDI0em0xNzYuMyA3MmgtNTYuM2MtMTIuMy0uNi0yNC42IDExLjYtMjQgMjR2NTYuM2MwIDI3LTIxLjkgNDguOS00OC45IDQ4LjlWMjQ3LjljMC0xMy4yIDEwLjctMjMuOSAyMy45LTIzLjloMTU0LjJjMCAyNy0yMS45IDQ4LjktNDguOSA0OC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWRkaXRBbGllbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzMgMTM4LjZjLTI1LjIgMC00Ni4zLTE3LjUtNTEuOS00MWwwIDBjLTMwLjYgNC4zLTU0LjIgMzAuNy01NC4yIDYyLjRsMCAuMmM0Ny40IDEuOCA5MC42IDE1LjEgMTI0LjkgMzYuM2MxMi42LTkuNyAyOC40LTE1LjUgNDUuNS0xNS41YzQxLjMgMCA3NC43IDMzLjQgNzQuNyA3NC43YzAgMjkuOC0xNy40IDU1LjUtNDIuNyA2Ny41Yy0yLjQgODYuOC05NyAxNTYuNi0yMTMuMiAxNTYuNlM0NS41IDQxMC4xIDQzIDMyMy40QzE3LjYgMzExLjUgMCAyODUuNyAwIDI1NS43YzAtNDEuMyAzMy40LTc0LjcgNzQuNy03NC43YzE3LjIgMCAzMyA1LjggNDUuNyAxNS42YzM0LTIxLjEgNzYuOC0zNC40IDEyMy43LTM2LjRsMC0uM2MwLTQ0LjMgMzMuNy04MC45IDc2LjgtODUuNUMzMjUuOCA1MC4yIDM0Ny4yIDMyIDM3MyAzMmMyOS40IDAgNTMuMyAyMy45IDUzLjMgNTMuM3MtMjMuOSA1My4zLTUzLjMgNTMuM3pNMTU3LjUgMjU1LjNjLTIwLjkgMC0zOC45IDIwLjgtNDAuMiA0Ny45czE3LjEgMzguMSAzOCAzOC4xczM2LjYtOS44IDM3LjgtMzYuOXMtMTQuNy00OS4xLTM1LjctNDkuMXpNMzk1IDMwMy4xYy0xLjItMjcuMS0xOS4yLTQ3LjktNDAuMi00Ny45cy0zNi45IDIyLTM1LjcgNDkuMWMxLjIgMjcuMSAxNi45IDM2LjkgMzcuOCAzNi45czM5LjMtMTEgMzgtMzguMXptLTYwLjEgNzAuOGMxLjUtMy42LTEtNy43LTQuOS04LjFjLTIzLTIuMy00Ny45LTMuNi03My44LTMuNnMtNTAuOCAxLjMtNzMuOCAzLjZjLTMuOSAuNC02LjQgNC41LTQuOSA4LjFjMTIuOSAzMC44IDQzLjMgNTIuNCA3OC43IDUyLjRzNjUuOC0yMS42IDc4LjctNTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2QzAgMTE0LjYgMTE0LjYgMCAyNTYgMFM1MTIgMTE0LjYgNTEyIDI1NnMtMTE0LjYgMjU2LTI1NiAyNTZMMzcuMSA1MTJjLTEzLjcgMC0yMC41LTE2LjUtMTAuOS0yNi4yTDc1IDQzN0MyOC43IDM5MC43IDAgMzI2LjcgMCAyNTZ6TTM0OS42IDE1My42YzIzLjYgMCA0Mi43LTE5LjEgNDIuNy00Mi43cy0xOS4xLTQyLjctNDIuNy00Mi43Yy0yMC42IDAtMzcuOCAxNC42LTQxLjggMzRjLTM0LjUgMy43LTYxLjQgMzMtNjEuNCA2OC40bDAgLjJjLTM3LjUgMS42LTcxLjggMTIuMy05OSAyOS4xYy0xMC4xLTcuOC0yMi44LTEyLjUtMzYuNS0xMi41Yy0zMyAwLTU5LjggMjYuOC01OS44IDU5LjhjMCAyNCAxNC4xIDQ0LjYgMzQuNCA1NC4xYzIgNjkuNCA3Ny42IDEyNS4yIDE3MC42IDEyNS4yczE2OC43LTU1LjkgMTcwLjYtMTI1LjNjMjAuMi05LjYgMzQuMS0zMC4yIDM0LjEtNTRjMC0zMy0yNi44LTU5LjgtNTkuOC01OS44Yy0xMy43IDAtMjYuMyA0LjYtMzYuNCAxMi40Yy0yNy40LTE3LTYyLjEtMjcuNy0xMDAtMjkuMWwwLS4yYzAtMjUuNCAxOC45LTQ2LjUgNDMuNC00OS45bDAgMGM0LjQgMTguOCAyMS4zIDMyLjggNDEuNSAzMi44ek0xNzcuMSAyNDYuOWMxNi43IDAgMjkuNSAxNy42IDI4LjUgMzkuM3MtMTMuNSAyOS42LTMwLjMgMjkuNnMtMzEuNC04LjgtMzAuNC0zMC41czE1LjQtMzguMyAzMi4xLTM4LjN6bTE5MC4xIDM4LjNjMSAyMS43LTEzLjcgMzAuNS0zMC40IDMwLjVzLTI5LjMtNy45LTMwLjMtMjkuNmMtMS0yMS43IDExLjgtMzkuMyAyOC41LTM5LjNzMzEuMiAxNi42IDMyLjEgMzguM3ptLTQ4LjEgNTYuN2MtMTAuMyAyNC42LTM0LjYgNDEuOS02MyA0MS45cy01Mi43LTE3LjMtNjMtNDEuOWMtMS4yLTIuOSAuOC02LjIgMy45LTYuNWMxOC40LTEuOSAzOC4zLTIuOSA1OS4xLTIuOXM0MC43IDEgNTkuMSAyLjljMy4xIC4zIDUuMSAzLjYgMy45IDYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0MS41MiAyODUuNTZjMzMuNjUgMCA4Mi4zNC02Ljk0IDgyLjM0LTQ3IC4yMi02Ljc0Ljg2LTEuODItMjAuODgtOTYuMjQtNC42Mi0xOS4xNS04LjY4LTI3Ljg0LTQyLjMxLTQ0LjY1LTI2LjA5LTEzLjM0LTgyLjkyLTM1LjM3LTk5LjczLTM1LjM3LTE1LjY2IDAtMjAuMiAyMC4xNy0zOC44NyAyMC4xNy0xOCAwLTMxLjMxLTE1LjA2LTQ4LjEyLTE1LjA2LTE2LjE0IDAtMjYuNjYgMTEtMzQuNzggMzMuNjItMjcuNSA3Ny41NS0yNi4yOCA3NC4yNy0yNi4xMiA3OC4yNyAwIDI0LjggOTcuNjQgMTA2LjExIDIyOC40NyAxMDYuMTFNNDI5IDI1NC44NGM0LjY1IDIyIDQuNjUgMjQuMzUgNC42NSAyNy4yNSAwIDM3LjY2LTQyLjMzIDU4LjU2LTk4IDU4LjU2LTEyNS43NC4wOC0yMzUuOTEtNzMuNjUtMjM1LjkxLTEyMi4zM2E0OS41NSA0OS41NSAwIDAgMSA0LjA2LTE5LjcyQzU4LjU2IDIwMC44NiAwIDIwOC45MyAwIDI2MC42M2MwIDg0LjY3IDIwMC42MyAxODkgMzU5LjQ5IDE4OSAxMjEuNzkgMCAxNTIuNTEtNTUuMDggMTUyLjUxLTk4LjU4IDAtMzQuMjEtMjkuNTktNzMuMDUtODIuOTMtOTYuMjRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVucmVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNCAxNjkuMWMwIDExMC40LTYxIDIwNS40LTE0Ny42IDI0Ny40QzMwIDM3My4yIDggMzE3LjcgOCAyNTYuNiA4IDEzMy45IDk3LjEgMzIuMiAyMTQgMTIuNXYxNTYuNnpNMjU1IDUwNGMtNDIuOSAwLTgzLjMtMTEtMTE4LjUtMzAuNEMxOTMuNyA0MzcuNSAyMzkuOSAzODIuOSAyNTUgMzE5YzE1LjUgNjMuOSA2MS43IDExOC41IDExOC44IDE1NC43QzMzOC43IDQ5MyAyOTguMyA1MDQgMjU1IDUwNHptMTkwLjYtODcuNUMzNTkgMzc0LjUgMjk4IDI3OS42IDI5OCAxNjkuMVYxMi41YzExNi45IDE5LjcgMjA2IDEyMS40IDIwNiAyNDQuMSAwIDYxLjEtMjIgMTE2LjYtNTguNCAxNTkuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVwbHlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA0ODBIMTI4QzU3LjYgNDgwIDAgNDIyLjQgMCAzNTJWMTYwQzAgODkuNiA1Ny42IDMyIDEyOCAzMmgxOTJjNzAuNCAwIDEyOCA1Ny42IDEyOCAxMjh2MTkyYzAgNzAuNC01Ny42IDEyOC0xMjggMTI4ek0xOTMuNCAyNzMuMmMtNi4xLTItMTEuNi0zLjEtMTYuNC0zLjEtNy4yIDAtMTMuNSAxLjktMTguOSA1LjYtNS40IDMuNy05LjYgOS0xMi44IDE1LjhoLTEuMWwtNC4yLTE4LjNoLTI4djEzOC45aDM2LjF2LTg5LjdjMS41LTUuNCA0LjQtOS44IDguNy0xMy4yIDQuMy0zLjQgOS44LTUuMSAxNi4yLTUuMSA0LjYgMCA5LjggMSAxNS42IDMuMWw0LjgtMzR6bTExNS4yIDEwMy40Yy0zLjIgMi40LTcuNyA0LjgtMTMuNyA3LjEtNiAyLjMtMTIuOCAzLjUtMjAuNCAzLjUtMTIuMiAwLTIxLjEtMy0yNi41LTguOS01LjUtNS45LTguNS0xNC43LTktMjYuNGg4My4zYy45LTQuOCAxLjYtOS40IDIuMS0xMy45LjUtNC40LjctOC42LjctMTIuNSAwLTEwLjctMS42LTE5LjctNC43LTI2LjktMy4yLTcuMi03LjMtMTMtMTIuNS0xNy4yLTUuMi00LjMtMTEuMS03LjMtMTcuOC05LjItNi43LTEuOC0xMy41LTIuOC0yMC42LTIuOC0yMS4xIDAtMzcuNSA2LjEtNDkuMiAxOC4zcy0xNy41IDMwLjUtMTcuNSA1NWMwIDIyLjggNS4yIDQwLjcgMTUuNiA1My43IDEwLjQgMTMuMSAyNi44IDE5LjYgNDkuMiAxOS42IDEwLjcgMCAyMC45LTEuNSAzMC40LTQuNiA5LjUtMy4xIDE3LjEtNi44IDIyLjYtMTEuMmwtMTItMjMuNnptLTIxLjgtNzAuM2MzLjggNS40IDUuMyAxMy4xIDQuNiAyMy4xaC01MS43Yy45LTkuNCAzLjctMTcgOC4yLTIyLjYgNC41LTUuNiAxMS41LTguNSAyMS04LjUgOC4yLS4xIDE0LjEgMi42IDE3LjkgOHptNzkuOSAyLjVjNC4xIDMuOSA5LjQgNS44IDE2LjEgNS44IDcgMCAxMi42LTEuOSAxNi43LTUuOHM2LjEtOS4xIDYuMS0xNS42LTItMTEuNi02LjEtMTUuNGMtNC4xLTMuOC05LjYtNS43LTE2LjctNS43LTYuNyAwLTEyIDEuOS0xNi4xIDUuNy00LjEgMy44LTYuMSA4LjktNi4xIDE1LjRzMiAxMS43IDYuMSAxNS42em0wIDEwMC41YzQuMSAzLjkgOS40IDUuOCAxNi4xIDUuOCA3IDAgMTIuNi0xLjkgMTYuNy01LjhzNi4xLTkuMSA2LjEtMTUuNi0yLTExLjYtNi4xLTE1LjRjLTQuMS0zLjgtOS42LTUuNy0xNi43LTUuNy02LjcgMC0xMiAxLjktMTYuMSA1LjctNC4xIDMuOC02LjEgOC45LTYuMSAxNS40IDAgNi42IDIgMTEuNyA2LjEgMTUuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVzZWFyY2hnYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJ2NDQ4aDQ0OFYzMkgwem0yNjIuMiAzMzQuNGMtNi42IDMtMzMuMiA2LTUwLTE0LjItOS4yLTEwLjYtMjUuMy0zMy4zLTQyLjItNjMuNi04LjkgMC0xNC43IDAtMjEuNC0uNnY0Ni40YzAgMjMuNSA2IDIxLjIgMjUuOCAyMy45djguMWMtNi45LS4zLTIzLjEtLjgtMzUuNi0uOC0xMy4xIDAtMjYuMS42LTMzLjYuOHYtOC4xYzE1LjUtMi45IDIyLTEuMyAyMi0yMy45VjIyNWMwLTIyLjYtNi40LTIxLTIyLTIzLjlWMTkzYzI1LjggMSA1My4xLS42IDcwLjktLjYgMzEuNyAwIDU1LjkgMTQuNCA1NS45IDQ1LjYgMCAyMS4xLTE2LjcgNDIuMi0zOS4yIDQ3LjUgMTMuNiAyNC4yIDMwIDQ1LjYgNDIuMiA1OC45IDcuMiA3LjggMTcuMiAxNC43IDI3LjIgMTQuN3Y3LjN6bTIyLjktMTM1Yy0yMy4zIDAtMzIuMi0xNS43LTMyLjItMzIuMlYxNjdjMC0xMi4yIDguOC0zMC40IDM0LTMwLjRzMzAuNCAxNy45IDMwLjQgMTcuOWwtMTAuNyA3LjJzLTUuNS0xMi41LTE5LjctMTIuNWMtNy45IDAtMTkuNyA3LjMtMTkuNyAxOS43djI2LjhjMCAxMy40IDYuNiAyMy4zIDE3LjkgMjMuMyAxNC4xIDAgMjEuNS0xMC45IDIxLjUtMjYuOGgtMTcuOXYtMTAuN2gzMC40YzAgMjAuNSA0LjcgNDkuOS0zNCA0OS45em0tMTE2LjUgNDQuN2MtOS40IDAtMTMuNi0uMy0yMC0uOHYtNjkuN2M2LjQtLjYgMTUtLjYgMjIuNS0uNiAyMy4zIDAgMzcuMiAxMi4yIDM3LjIgMzQuNSAwIDIxLjktMTUgMzYuNi0zOS43IDM2LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlc29sdmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODEuMiAyNzguMmM0Ni0xMy4zIDQ5LjYtMjMuNSA0NC00My40TDMxNCAxOTUuNWMtNi4xLTIwLjktMTguNC0yOC4xLTcxLjEtMTIuOEw1NC43IDIzNi44bDI4LjYgOTguNiAxOTcuOS01Ny4yek0yNDguNSA4QzEzMS40IDggMzMuMiA4OC43IDcuMiAxOTcuNWwyMjEuOS02My45YzM0LjgtMTAuMiA1NC4yLTExLjcgNzkuMy04LjIgMzYuMyA2LjEgNTIuNyAyNSA2MS40IDU1LjJsMTAuNyAzNy44YzguMiAyOC4xIDEgNTAuNi0yMy41IDczLjYtMTkuNCAxNy40LTMxLjIgMjQuNS02MS40IDMzLjJMMjAzIDM1MS44bDIyMC40IDI3LjEgOS43IDM0LjItNDguMSAxMy4zLTI4Ni44LTM3LjMgMjMgODAuMmMzNi44IDIyIDgwLjMgMzQuNyAxMjYuMyAzNC43IDEzNyAwIDI0OC41LTExMS40IDI0OC41LTI0OC4zQzQ5NyAxMTkuNCAzODUuNSA4IDI0OC41IDh6TTM4LjMgMzg4LjZMMCAyNTYuOGMwIDQ4LjUgMTQuMyA5My40IDM4LjMgMTMxLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJldiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODkuNjcgMjc0Ljg5YTY1LjU3IDY1LjU3IDAgMSAxLTY1LjU2LTY1LjU2IDY1LjY0IDY1LjY0IDAgMCAxIDY1LjU2IDY1LjU2em0xMzkuNTUtNS4wNWgtLjEzYTIwNC42OSAyMDQuNjkgMCAwIDAtNzQuMzItMTUzbC00NS4zOCAyNi4yYTE1Ny4wNyAxNTcuMDcgMCAwIDEgNzEuODEgMTMxLjg0QzM4MS4yIDM2MS41IDMxMC43MyA0MzIgMjI0LjExIDQzMlM2NyAzNjEuNSA2NyAyNzQuODhjMC04MS44OCA2My0xNDkuMjcgMTQzLTE1Ni40M3YzOS4xMmwxMDguNzctNjIuNzlMMjEwIDMydjM4LjMyYy0xMDYuNyA3LjI1LTE5MSA5Ni0xOTEgMjA0LjU3IDAgMTExLjU5IDg5LjEyIDIwMi4yOSAyMDAuMDYgMjA1di4xMWgyMTAuMTZWMjY5Ljg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2NrZXRjaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4NC4wNDYsMjI0LjhhMzQuMTE0LDM0LjExNCwwLDEsMCwzNC4zMTcsMzQuMTEzQTM0LjIxNywzNC4yMTcsMCwwLDAsMjg0LjA0NiwyMjQuOFptLTExMC40NSwwYTM0LjExNCwzNC4xMTQsMCwxLDAsMzQuMzE3LDM0LjExM0EzNC4yMTcsMzQuMjE3LDAsMCwwLDE3My42LDIyNC44Wm0yMjAuOTIzLDBhMzQuMTE0LDM0LjExNCwwLDEsMCwzNC4zMTcsMzQuMTEzQTM0LjIxNSwzNC4yMTUsMCwwLDAsMzk0LjUxOSwyMjQuOFptMTUzLjgwNy01NS4zMTljLTE1LjUzNS0yNC4xNzItMzcuMzEtNDUuNTctNjQuNjgxLTYzLjYxOC01Mi44ODYtMzQuODE3LTEyMi4zNzQtNTQtMTk1LjY2Ni01NGE0MDUuOTc1LDQwNS45NzUsMCwwLDAtNzIuMDMyLDYuMzU3LDIzOC41MjQsMjM4LjUyNCwwLDAsMC00OS41MS0zNi41ODhDOTkuNjg0LTExLjcsNDAuODU5LjcxMSwxMS4xMzUsMTEuNDIxQTE0LjI5MSwxNC4yOTEsMCwwLDAsNS41OCwzNC43ODJDMjYuNTQyLDU2LjQ1OCw2MS4yMjIsOTkuMyw1Mi43LDEzOC4yNTJjLTMzLjE0MiwzMy45LTUxLjExMiw3NC43NzYtNTEuMTEyLDExNy4zMzcsMCw0My4zNzIsMTcuOTcsODQuMjQ4LDUxLjExMiwxMTguMTQ4LDguNTI2LDM4Ljk1Ni0yNi4xNTQsODEuODE2LTQ3LjExNiwxMDMuNDkxYTE0LjI4NCwxNC4yODQsMCwwLDAsNS41NTUsMjMuMzRjMjkuNzI0LDEwLjcwOSw4OC41NDksMjMuMTQ3LDE1NS4zMjQtMTAuMmEyMzguNjc5LDIzOC42NzksMCwwLDAsNDkuNTEtMzYuNTg5QTQwNS45NzIsNDA1Ljk3MiwwLDAsMCwyODgsNDYwLjE0YzczLjMxMywwLDE0Mi44LTE5LjE1OSwxOTUuNjY3LTUzLjk3NSwyNy4zNzEtMTguMDQ5LDQ5LjE0NS0zOS40MjYsNjQuNjc5LTYzLjYxOSwxNy4zMDktMjYuOTIzLDI2LjA3LTU1LjkxNiwyNi4wNy04Ni4xMjVDNTc0LjM5NCwyMjUuNCw1NjUuNjM0LDE5Ni40Myw1NDguMzI2LDE2OS40ODVaTTI4NC45ODcsNDA5LjlhMzQ1LjY1LDM0NS42NSwwLDAsMS04OS40NDYtMTEuNWwtMjAuMTI5LDE5LjM5M2ExODQuMzY2LDE4NC4zNjYsMCwwLDEtMzcuMTM4LDI3LjU4NSwxNDUuNzY3LDE0NS43NjcsMCwwLDEtNTIuNTIyLDE0Ljg3Yy45ODMtMS43NzEsMS44ODEtMy41NjMsMi44NDItNS4zNTZxMzAuMjU4LTU1LjY4LDE2LjMyNS0xMDAuMDc4Yy0zMi45OTItMjUuOTYyLTUyLjc3OC01OS4yLTUyLjc3OC05NS40LDAtODMuMSwxMDQuMjU0LTE1MC40NjksMjMyLjg0Ni0xNTAuNDY5czIzMi44NjcsNjcuMzczLDIzMi44NjcsMTUwLjQ2OUM1MTcuODU0LDM0Mi41MjUsNDEzLjYsNDA5LjksMjg0Ljk4Nyw0MDkuOVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9ja3JtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0xNTcuNCA0MTkuNWgtOTBsLTExMi0xMzEuM2MtMTcuOS0yMC40LTMuOS01Ni4xIDI2LjYtNTYuMWg3NS4zbC04NC42LTk5LjMtODQuMyA5OC45aC05MEwxOTMuNSA2Ny4yYzE0LjQtMTguNCA0MS4zLTE3LjMgNTQuNSAwbDE1Ny43IDE4NS4xYzE5IDIyLjggMiA1Ny4yLTI3LjYgNTYuMS0uNiAwLTc0LjIuMi03NC4yLjJsMTAxLjUgMTE4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1c3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA4LjUyLDI0OS43NSw0ODYuNywyMzYuMjRjLS4xNy0yLS4zNC0zLjkzLS41NS01Ljg4bDE4LjcyLTE3LjVhNy4zNSw3LjM1LDAsMCwwLTIuNDQtMTIuMjVsLTI0LTljLS41NC0xLjg4LTEuMDgtMy43OC0xLjY3LTUuNjRsMTUtMjAuODNhNy4zNSw3LjM1LDAsMCwwLTQuNzktMTEuNTRsLTI1LjQyLTQuMTVjLS45LTEuNzMtMS43OS0zLjQ1LTIuNzMtNS4xNWwxMC42OC0yMy40MmE3LjM1LDcuMzUsMCwwLDAtNi45NS0xMC4zOWwtMjUuODIuOTFxLTEuNzktMi4yMi0zLjYxLTQuNEw0MzksODEuODRBNy4zNiw3LjM2LDAsMCwwLDQzMC4xNiw3M0w0MDUsNzguOTNxLTIuMTctMS44My00LjQtMy42MWwuOTEtMjUuODJhNy4zNSw3LjM1LDAsMCwwLTEwLjM5LTdMMzY3LjcsNTMuMjNjLTEuNy0uOTQtMy40My0xLjg0LTUuMTUtMi43M0wzNTguNCwyNS4wOGE3LjM1LDcuMzUsMCwwLDAtMTEuNTQtNC43OUwzMjYsMzUuMjZjLTEuODYtLjU5LTMuNzUtMS4xMy01LjY0LTEuNjdsLTktMjRhNy4zNSw3LjM1LDAsMCwwLTEyLjI1LTIuNDRsLTE3LjUsMTguNzJjLTEuOTUtLjIxLTMuOTEtLjM4LTUuODgtLjU1TDI2Mi4yNSwzLjQ4YTcuMzUsNy4zNSwwLDAsMC0xMi41LDBMMjM2LjI0LDI1LjNjLTIsLjE3LTMuOTMuMzQtNS44OC41NUwyMTIuODYsNy4xM2E3LjM1LDcuMzUsMCwwLDAtMTIuMjUsMi40NGwtOSwyNGMtMS44OS41NS0zLjc5LDEuMDgtNS42NiwxLjY4bC0yMC44Mi0xNWE3LjM1LDcuMzUsMCwwLDAtMTEuNTQsNC43OWwtNC4xNSwyNS40MWMtMS43My45LTMuNDUsMS43OS01LjE2LDIuNzNMMTIwLjg4LDQyLjU1YTcuMzUsNy4zNSwwLDAsMC0xMC4zOSw3bC45MiwyNS44MWMtMS40OSwxLjE5LTMsMi4zOS00LjQyLDMuNjFMODEuODQsNzNBNy4zNiw3LjM2LDAsMCwwLDczLDgxLjg0TDc4LjkzLDEwN2MtMS4yMywxLjQ1LTIuNDMsMi45My0zLjYyLDQuNDFsLTI1LjgxLS45MWE3LjQyLDcuNDIsMCwwLDAtNi4zNywzLjI2LDcuMzUsNy4zNSwwLDAsMC0uNTcsNy4xM2wxMC42NiwyMy40MWMtLjk0LDEuNy0xLjgzLDMuNDMtMi43Myw1LjE2TDI1LjA4LDE1My42YTcuMzUsNy4zNSwwLDAsMC00Ljc5LDExLjU0bDE1LDIwLjgyYy0uNTksMS44Ny0xLjEzLDMuNzctMS42OCw1LjY2bC0yNCw5YTcuMzUsNy4zNSwwLDAsMC0yLjQ0LDEyLjI1bDE4LjcyLDE3LjVjLS4yMSwxLjk1LS4zOCwzLjkxLS41NSw1Ljg4TDMuNDgsMjQ5Ljc1YTcuMzUsNy4zNSwwLDAsMCwwLDEyLjVMMjUuMywyNzUuNzZjLjE3LDIsLjM0LDMuOTIuNTUsNS44N0w3LjEzLDI5OS4xM2E3LjM1LDcuMzUsMCwwLDAsMi40NCwxMi4yNWwyNCw5Yy41NSwxLjg5LDEuMDgsMy43OCwxLjY4LDUuNjVsLTE1LDIwLjgzYTcuMzUsNy4zNSwwLDAsMCw0Ljc5LDExLjU0bDI1LjQyLDQuMTVjLjksMS43MiwxLjc5LDMuNDUsMi43Myw1LjE0TDQyLjU2LDM5MS4xMmE3LjM1LDcuMzUsMCwwLDAsLjU3LDcuMTMsNy4xMyw3LjEzLDAsMCwwLDYuMzcsMy4yNmwyNS44My0uOTFxMS43NywyLjIyLDMuNiw0LjRMNzMsNDMwLjE2QTcuMzYsNy4zNiwwLDAsMCw4MS44NCw0MzlMMTA3LDQzMy4wN3EyLjE4LDEuODMsNC40MSwzLjYxbC0uOTIsMjUuODJhNy4zNSw3LjM1LDAsMCwwLDEwLjM5LDYuOTVsMjMuNDMtMTAuNjhjMS42OS45NCwzLjQyLDEuODMsNS4xNCwyLjczbDQuMTUsMjUuNDJhNy4zNCw3LjM0LDAsMCwwLDExLjU0LDQuNzhsMjAuODMtMTVjMS44Ni42LDMuNzYsMS4xMyw1LjY1LDEuNjhsOSwyNGE3LjM2LDcuMzYsMCwwLDAsMTIuMjUsMi40NGwxNy41LTE4LjcyYzEuOTUuMjEsMy45Mi4zOCw1Ljg4LjU1bDEzLjUxLDIxLjgyYTcuMzUsNy4zNSwwLDAsMCwxMi41LDBsMTMuNTEtMjEuODJjMi0uMTcsMy45My0uMzQsNS44OC0uNTZsMTcuNSwxOC43M2E3LjM2LDcuMzYsMCwwLDAsMTIuMjUtMi40NGw5LTI0YzEuODktLjU1LDMuNzgtMS4wOCw1LjY1LTEuNjhsMjAuODIsMTVhNy4zNCw3LjM0LDAsMCwwLDExLjU0LTQuNzhsNC4xNS0yNS40MmMxLjcyLS45LDMuNDUtMS43OSw1LjE1LTIuNzNsMjMuNDIsMTAuNjhhNy4zNSw3LjM1LDAsMCwwLDEwLjM5LTYuOTVsLS45MS0yNS44MnEyLjIyLTEuNzksNC40LTMuNjFMNDMwLjE2LDQzOWE3LjM2LDcuMzYsMCwwLDAsOC44NC04Ljg0TDQzMy4wNyw0MDVxMS44My0yLjE3LDMuNjEtNC40bDI1LjgyLjkxYTcuMjMsNy4yMywwLDAsMCw2LjM3LTMuMjYsNy4zNSw3LjM1LDAsMCwwLC41OC03LjEzTDQ1OC43NywzNjcuN2MuOTQtMS43LDEuODMtMy40MywyLjczLTUuMTVsMjUuNDItNC4xNWE3LjM1LDcuMzUsMCwwLDAsNC43OS0xMS41NGwtMTUtMjAuODNjLjU5LTEuODcsMS4xMy0zLjc2LDEuNjctNS42NWwyNC05YTcuMzUsNy4zNSwwLDAsMCwyLjQ0LTEyLjI1bC0xOC43Mi0xNy41Yy4yMS0xLjk1LjM4LTMuOTEuNTUtNS44N2wyMS44Mi0xMy41MWE3LjM1LDcuMzUsMCwwLDAsMC0xMi41Wm0tMTUxLDEyOS4wOEExMy45MSwxMy45MSwwLDAsMCwzNDEsMzg5LjUxbC03LjY0LDM1LjY3QTE4Ny41MSwxODcuNTEsMCwwLDEsMTc3LDQyNC40NGwtNy42NC0zNS42NmExMy44NywxMy44NywwLDAsMC0xNi40Ni0xMC42OGwtMzEuNTEsNi43NmExODcuMzgsMTg3LjM4LDAsMCwxLTE2LjI2LTE5LjIxSDI1OC4zYzEuNzIsMCwyLjg5LS4yOSwyLjg5LTEuOTFWMzA5LjU1YzAtMS41Ny0xLjE3LTEuOTEtMi44OS0xLjkxSDIxMy40N2wuMDUtMzQuMzVIMjYyYzQuNDEsMCwyMy42NiwxLjI4LDI5Ljc5LDI1Ljg3LDEuOTEsNy41NSw2LjE3LDMyLjE0LDkuMDYsNDAsMi44OSw4LjgyLDE0LjYsMjYuNDYsMjcuMSwyNi40Nkg0MDdhMTg3LjMsMTg3LjMsMCwwLDEtMTcuMzQsMjAuMDlabTI1Ljc3LDM0LjQ5QTE1LjI0LDE1LjI0LDAsMSwxLDM2OCwzOTguMDhoLjQ0QTE1LjIzLDE1LjIzLDAsMCwxLDM4My4yNCw0MTMuMzJabS0yMjUuNjItLjY4YTE1LjI0LDE1LjI0LDAsMSwxLTE1LjI1LTE1LjI1aC40NUExNS4yNSwxNS4yNSwwLDAsMSwxNTcuNjIsNDEyLjY0Wk02OS41NywyMzQuMTVsMzIuODMtMTQuNmExMy44OCwxMy44OCwwLDAsMCw3LjA2LTE4LjMzTDEwMi42OSwxODZoMjYuNTZWMzA1LjczSDc1LjY1QTE4Ny42NSwxODcuNjUsMCwwLDEsNjkuNTcsMjM0LjE1Wk01OC4zMSwxOTguMDlhMTUuMjQsMTUuMjQsMCwwLDEsMTUuMjMtMTUuMjVINzRhMTUuMjQsMTUuMjQsMCwxLDEtMTUuNjcsMTUuMjRabTE1NS4xNiwyNC40OS4wNS0zNS4zMmg2My4yNmMzLjI4LDAsMjMuMDcsMy43NywyMy4wNywxOC42MiwwLDEyLjI5LTE1LjE5LDE2LjctMjcuNjgsMTYuN1pNMzk5LDMwNi43MWMtOS44LDEuMTMtMjAuNjMtNC4xMi0yMi0xMC4wOS01Ljc4LTMyLjQ5LTE1LjM5LTM5LjQtMzAuNTctNTEuNCwxOC44Ni0xMS45NSwzOC40Ni0yOS42NCwzOC40Ni01My4yNiwwLTI1LjUyLTE3LjQ5LTQxLjU5LTI5LjQtNDkuNDgtMTYuNzYtMTEtMzUuMjgtMTMuMjMtNDAuMjctMTMuMjNIMTE2LjMyQTE4Ny40OSwxODcuNDksMCwwLDEsMjIxLjIxLDcwLjA2bDIzLjQ3LDI0LjZhMTMuODIsMTMuODIsMCwwLDAsMTkuNi40NGwyNi4yNi0yNWExODcuNTEsMTg3LjUxLDAsMCwxLDEyOC4zNyw5MS40M2wtMTgsNDAuNTdBMTQsMTQsMCwwLDAsNDA4LDIyMC40M2wzNC41OSwxNS4zM2ExODcuMTIsMTg3LjEyLDAsMCwxLC40LDMyLjU0SDQyMy43MWMtMS45MSwwLTIuNjksMS4yNy0yLjY5LDMuMTN2OC44MkM0MjEsMzAxLDQwOS4zMSwzMDUuNTgsMzk5LDMwNi43MVpNMjQwLDYwLjIxQTE1LjI0LDE1LjI0LDAsMCwxLDI1NS4yMSw0NWguNDVBMTUuMjQsMTUuMjQsMCwxLDEsMjQwLDYwLjIxWk00MzYuODQsMjE0YTE1LjI0LDE1LjI0LDAsMSwxLDAtMzAuNDhoLjQ0YTE1LjI0LDE1LjI0LDAsMCwxLS40NCwzMC40OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2FmYXJpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3NC42OSwyNzQuNjlsLTM3LjM4LTM3LjM4TDE2NiwzNDZaTTI1Niw4QzExOSw4LDgsMTE5LDgsMjU2UzExOSw1MDQsMjU2LDUwNCw1MDQsMzkzLDUwNCwyNTYsMzkzLDgsMjU2LDhaTTQxMS44NSwxODIuNzlsMTQuNzgtNi4xM0E4LDgsMCwwLDEsNDM3LjA4LDE4MWgwYTgsOCwwLDAsMS00LjMzLDEwLjQ2TDQxOCwxOTcuNTdhOCw4LDAsMCwxLTEwLjQ1LTQuMzNoMEE4LDgsMCwwLDEsNDExLjg1LDE4Mi43OVpNMzE0LjQzLDk0bDYuMTItMTQuNzhBOCw4LDAsMCwxLDMzMSw3NC45MmgwYTgsOCwwLDAsMSw0LjMzLDEwLjQ1bC02LjEzLDE0Ljc4YTgsOCwwLDAsMS0xMC40NSw0LjMzaDBBOCw4LDAsMCwxLDMxNC40Myw5NFpNMjU2LDYwaDBhOCw4LDAsMCwxLDgsOFY4NGE4LDgsMCwwLDEtOCw4aDBhOCw4LDAsMCwxLTgtOFY2OEE4LDgsMCwwLDEsMjU2LDYwWk0xODEsNzQuOTJhOCw4LDAsMCwxLDEwLjQ2LDQuMzNMMTk3LjU3LDk0YTgsOCwwLDEsMS0xNC43OCw2LjEybC02LjEzLTE0Ljc4QTgsOCwwLDAsMSwxODEsNzQuOTJabS02My41OCw0Mi40OWgwYTgsOCwwLDAsMSwxMS4zMSwwTDE0MCwxMjguNzJBOCw4LDAsMCwxLDE0MCwxNDBoMGE4LDgsMCwwLDEtMTEuMzEsMGwtMTEuMzEtMTEuMzFBOCw4LDAsMCwxLDExNy40MSwxMTcuNDFaTTYwLDI1NmgwYTgsOCwwLDAsMSw4LThIODRhOCw4LDAsMCwxLDgsOGgwYTgsOCwwLDAsMS04LDhINjhBOCw4LDAsMCwxLDYwLDI1NlptNDAuMTUsNzMuMjEtMTQuNzgsNi4xM0E4LDgsMCwwLDEsNzQuOTIsMzMxaDBhOCw4LDAsMCwxLDQuMzMtMTAuNDZMOTQsMzE0LjQzYTgsOCwwLDAsMSwxMC40NSw0LjMzaDBBOCw4LDAsMCwxLDEwMC4xNSwzMjkuMjFabTQuMzMtMTM2aDBBOCw4LDAsMCwxLDk0LDE5Ny41N2wtMTQuNzgtNi4xMkE4LDgsMCwwLDEsNzQuOTIsMTgxaDBhOCw4LDAsMCwxLDEwLjQ1LTQuMzNsMTQuNzgsNi4xM0E4LDgsMCwwLDEsMTA0LjQ4LDE5My4yNFpNMTk3LjU3LDQxOGwtNi4xMiwxNC43OGE4LDgsMCwwLDEtMTQuNzktNi4xMmw2LjEzLTE0Ljc4QTgsOCwwLDEsMSwxOTcuNTcsNDE4Wk0yNjQsNDQ0YTgsOCwwLDAsMS04LDhoMGE4LDgsMCwwLDEtOC04VjQyOGE4LDgsMCwwLDEsOC04aDBhOCw4LDAsMCwxLDgsOFptNjctNi45MmgwYTgsOCwwLDAsMS0xMC40Ni00LjMzTDMxNC40Myw0MThhOCw4LDAsMCwxLDQuMzMtMTAuNDVoMGE4LDgsMCwwLDEsMTAuNDUsNC4zM2w2LjEzLDE0Ljc4QTgsOCwwLDAsMSwzMzEsNDM3LjA4Wm02My41OC00Mi40OWgwYTgsOCwwLDAsMS0xMS4zMSwwTDM3MiwzODMuMjhBOCw4LDAsMCwxLDM3MiwzNzJoMGE4LDgsMCwwLDEsMTEuMzEsMGwxMS4zMSwxMS4zMUE4LDgsMCwwLDEsMzk0LjU5LDM5NC41OVpNMjg2LjI1LDI4Ni4yNSwxMTAuMzQsNDAxLjY2LDIyNS43NSwyMjUuNzUsNDAxLjY2LDExMC4zNFpNNDM3LjA4LDMzMWgwYTgsOCwwLDAsMS0xMC40NSw0LjMzbC0xNC43OC02LjEzYTgsOCwwLDAsMS00LjMzLTEwLjQ1aDBBOCw4LDAsMCwxLDQxOCwzMTQuNDNsMTQuNzgsNi4xMkE4LDgsMCwwLDEsNDM3LjA4LDMzMVpNNDQ0LDI2NEg0MjhhOCw4LDAsMCwxLTgtOGgwYTgsOCwwLDAsMSw4LThoMTZhOCw4LDAsMCwxLDgsOGgwQTgsOCwwLDAsMSw0NDQsMjY0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYWxlc2ZvcmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OC44OSAyNDUuNjRoLTI2LjM1Yy42OS01LjE2IDMuMzItMTQuMTIgMTMuNjQtMTQuMTIgNi43NSAwIDExLjk3IDMuODIgMTIuNzEgMTQuMTJ6bTEzNi42Ni0xMy44OGMtLjQ3IDAtMTQuMTEtMS43Ny0xNC4xMSAyMHMxMy42MyAyMCAxNC4xMSAyMGMxMyAwIDE0LjExLTEzLjU0IDE0LjExLTIwIDAtMjEuNzYtMTMuNjYtMjAtMTQuMTEtMjB6bS0yNDMuMjIgMjMuNzZhOC42MyA4LjYzIDAgMCAwLTMuMjkgNy4yOWMwIDQuNzggMi4wOCA2LjA1IDMuMjkgNy4wNSA0LjcgMy43IDE1LjA3IDIuMTIgMjAuOTMuOTV2LTE2Ljk0Yy01LjMyLTEuMDctMTYuNzMtMS45Ni0yMC45MyAxLjY1ek02NDAgMjMyYzAgODcuNTgtODAgMTU0LjM5LTE2NS4zNiAxMzYuNDMtMTguMzcgMzMtNzAuNzMgNzAuNzUtMTMyLjIgNDEuNjMtNDEuMTYgOTYuMDUtMTc3Ljg5IDkyLjE4LTIxMy44MS01LjE3QzguOTEgNDI4Ljc4LTUwLjE5IDI2Ni41MiA1My4zNiAyMDUuNjEgMTguNjEgMTI2LjE4IDc2IDMyIDE2Ny42NyAzMmExMjQuMjQgMTI0LjI0IDAgMCAxIDk4LjU2IDQ4LjdjMjAuNy0yMS40IDQ5LjQtMzQuODEgODEuMTUtMzQuODEgNDIuMzQgMCA3OSAyMy41MiA5OC44IDU4LjU3QzUzOSA2My43OCA2NDAgMTMyLjY5IDY0MCAyMzJ6bS01MTkuNTUgMzEuOGMwLTExLjc2LTExLjY5LTE1LjE3LTE3Ljg3LTE3LjE3LTUuMjctMi4xMS0xMy40MS0zLjUxLTEzLjQxLTguOTQgMC05LjQ2IDE3LTYuNjYgMjUuMTctMi4xMiAwIDAgMS4xNy43MSAxLjY0LS40Ny4yNC0uNyAyLjM2LTYuNTggMi41OS03LjI5YTEuMTMgMS4xMyAwIDAgMC0uNy0xLjQxYy0xMi4zMy03LjYzLTQwLjctOC41MS00MC43IDEyLjcgMCAxMi40NiAxMS40OSAxNS40NCAxNy44OCAxNy4xNyA0LjcyIDEuNTggMTMuMTcgMyAxMy4xNyA4LjcgMCA0LTMuNTMgNy4wNi05LjE3IDcuMDZhMzEuNzYgMzEuNzYgMCAwIDEtMTktNi4zNWMtLjQ3LS4yMy0xLjQyLS43MS0xLjY1LjcxbC0yLjQgNy40N2MtLjQ3Ljk0LjIzIDEuMTguMjMgMS40MSAxLjc1IDEuNCAxMC4zIDYuNTkgMjIuODIgNi41OSAxMy4xNyAwIDIxLjQtNy4wNiAyMS40LTE4LjExem0zMi00Mi41OGMtMTAuMTMgMC0xOC42NiAzLjE3LTIxLjQgNS4xOGExIDEgMCAwIDAtLjI0IDEuNDFsMi41OSA3LjA2YTEgMSAwIDAgMCAxLjE4LjdjLjY1IDAgNi44LTQgMTYuOTMtNCA0IDAgNy4wNi43MSA5LjE4IDIuMzYgMy42IDIuOCAzLjA2IDguMjkgMy4wNiAxMC41OC00Ljc5LS4zLTE5LjExLTMuNDQtMjkuNDEgMy43NmExNi45MiAxNi45MiAwIDAgMC03LjM0IDE0LjU0YzAgNS45IDEuNTEgMTAuNCA2LjU5IDE0LjM1IDEyLjI0IDguMTYgMzYuMjggMiAzOC4xIDEuNDEgMS41OC0uMzIgMy41My0uNjYgMy41My0xLjg4di0zMy44OGMuMDQtNC42MS4zMi0yMS42NC0yMi43OC0yMS42NHpNMTk5IDIwMC4yNGExLjExIDEuMTEgMCAwIDAtMS4xOC0xLjE4SDE4OGExLjExIDEuMTEgMCAwIDAtMS4xNyAxLjE4djc5YTEuMTEgMS4xMSAwIDAgMCAxLjE3IDEuMThoOS44OGExLjExIDEuMTEgMCAwIDAgMS4xOC0xLjE4em01NS43NSAyOC45M2MtMi4xLTIuMzEtNi43OS03LjUzLTE3LjY1LTcuNTMtMy41MSAwLTE0LjE2LjIzLTIwLjcgOC45NC02LjM1IDcuNjMtNi41OCAxOC4xMS02LjU4IDIxLjQxIDAgMy4xMi4xNSAxNC4yNiA3LjA2IDIxLjE3IDIuNjQgMi45MSA5LjA2IDguMjMgMjIuODEgOC4yMyAxMC44MiAwIDE2LjQ3LTIuMzUgMTguNTgtMy43Ni40Ny0uMjQuNzEtLjcxLjI0LTEuODhsLTIuMzUtNi44M2ExLjI2IDEuMjYgMCAwIDAtMS40MS0uN2MtMi41OS45NC02LjM1IDIuODItMTUuMjkgMi44Mi0xNy40MiAwLTE2Ljg1LTE0Ljc0LTE2Ljk0LTE2LjdoMzcuMTdhMS4yMyAxLjIzIDAgMCAwIDEuMTctLjk0Yy0uMjkgMCAyLjA3LTE0LjctNi4wOS0yNC4yM3ptMzYuNjkgNTIuNjljMTMuMTcgMCAyMS40MS03LjA2IDIxLjQxLTE4LjExIDAtMTEuNzYtMTEuNy0xNS4xNy0xNy44OC0xNy4xNy00LjE0LTEuNjYtMTMuNDEtMy4zOC0xMy40MS04Ljk0IDAtMy43NiAzLjI5LTYuMzUgOC40Ny02LjM1YTM4LjExIDM4LjExIDAgMCAxIDE2LjcgNC4yM3MxLjE4LjcxIDEuNjUtLjQ3Yy4yMy0uNyAyLjM1LTYuNTggMi41OC03LjI5YTEuMTMgMS4xMyAwIDAgMC0uNy0xLjQxYy03LjkxLTQuOS0xNi43NC00Ljk0LTIwLjIzLTQuOTQtMTIgMC0yMC40NiA3LjI5LTIwLjQ2IDE3LjY0IDAgMTIuNDYgMTEuNDggMTUuNDQgMTcuODcgMTcuMTcgNi4xMSAyIDEzLjE3IDMuMjYgMTMuMTcgOC43IDAgNC0zLjUyIDcuMDYtOS4xNyA3LjA2YTMxLjggMzEuOCAwIDAgMS0xOS02LjM1IDEgMSAwIDAgMC0xLjY1LjcxbC0yLjM1IDcuNTJjLS40Ny45NC4yMyAxLjE4LjIzIDEuNDEgMS43MiAxLjQgMTAuMzMgNi41OSAyMi43OSA2LjU5ek0zNTcuMDkgMjI0YzAtLjcxLS4yNC0xLjE4LTEuMTgtMS4xOGgtMTEuNzZjMC0uMTQuOTQtOC45NCA0LjQ3LTEyLjQ3IDQuMTYtNC4xNSAxMS43Ni0xLjY0IDEyLTEuNjQgMS4xNy40NyAxLjQxIDAgMS42NC0uNDdsMi44My03Ljc3Yy43LS45NCAwLTEuMTctLjI0LTEuNDEtNS4wOS0yLTE3LjM1LTIuODctMjQuNDYgNC4yNC01LjQ4IDUuNDgtNyAxMy45Mi04IDE5LjUyaC04LjQ3YTEuMjggMS4yOCAwIDAgMC0xLjE3IDEuMThsLTEuNDIgNy43NmMwIC43LjI0IDEuMTcgMS4xOCAxLjE3aDguMjNjLTguNTEgNDcuOS04Ljc1IDUwLjIxLTEwLjM1IDU1LjUyLTEuMDggMy42Mi0zLjI5IDYuOS01Ljg4IDcuNzYtLjA5IDAtMy44OCAxLjY4LTkuNjQtLjI0IDAgMC0uOTQtLjQ3LTEuNDEuNzEtLjI0LjcxLTIuNTkgNi44Mi0yLjgzIDcuNTNzMCAxLjQxLjQ3IDEuNDFjNS4xMSAyIDEzIDEuNzcgMTcuODggMCA2LjI4LTIuMjggOS43Mi03Ljg5IDExLjUzLTEyLjk0IDIuNzUtNy43MSAyLjgxLTkuNzkgMTEuNzYtNTkuNzRoMTIuMjNhMS4yOSAxLjI5IDAgMCAwIDEuMTgtMS4xOHptNTMuMzkgMTZjLS41Ni0xLjY4LTUuMS0xOC4xMS0yNS4xNy0xOC4xMS0xNS4yNSAwLTIzIDEwLTI1LjE2IDE4LjExLTEgMy0zLjE4IDE0IDAgMjMuNTIuMDkuMyA0LjQxIDE4LjEyIDI1LjE2IDE4LjEyIDE0Ljk1IDAgMjIuOS05LjYxIDI1LjE3LTE4LjEyIDMuMjEtOS42MSAxLjAxLTIwLjUyIDAtMjMuNTJ6bTQ1LjQtMTYuN2MtNS0xLjY1LTE2LjYyLTEuOS0yMi4xMSA1LjQxdi00LjQ3YTEuMTEgMS4xMSAwIDAgMC0xLjE4LTEuMTdoLTkuNGExLjExIDEuMTEgMCAwIDAtMS4xOCAxLjE3djU1LjI4YTEuMTIgMS4xMiAwIDAgMCAxLjE4IDEuMThoOS42NGExLjEyIDEuMTIgMCAwIDAgMS4xOC0xLjE4di0yNy43N2MwLTIuOTEuMDUtMTEuMzcgNC40Ni0xNS4wNSA0LjktNC45IDEyLTMuMzYgMTMuNDEtMy4wNmExLjU3IDEuNTcgMCAwIDAgMS40MS0uOTQgNzQgNzQgMCAwIDAgMy4wNi04IDEuMTYgMS4xNiAwIDAgMC0uNDctMS40MXptNDYuODEgNTQuMWwtMi4xMi03LjI5Yy0uNDctMS4xOC0xLjQxLS43MS0xLjQxLS43MS00LjIzIDEuODItMTAuMTUgMS44OS0xMS4yOSAxLjg5LTQuNjQgMC0xNy4xNy0xLjEzLTE3LjE3LTE5Ljc2IDAtNi4yMyAxLjg1LTE5Ljc2IDE2LjQ3LTE5Ljc2YTM0Ljg1IDM0Ljg1IDAgMCAxIDExLjUyIDEuNjVzLjk0LjQ3IDEuMTgtLjcxYy45NC0yLjU5IDEuNjQtNC40NyAyLjU5LTcuNTMuMjMtLjk0LS40Ny0xLjE3LS43MS0xLjE3LTExLjU5LTMuODctMjIuMzQtMi41My0yNy43NiAwLTEuNTkuNzQtMTYuMjMgNi40OS0xNi4yMyAyNy41MiAwIDIuOS0uNTggMzAuMTEgMjguOTQgMzAuMTFhNDQuNDUgNDQuNDUgMCAwIDAgMTUuNTItMi44MyAxLjMgMS4zIDAgMCAwIC40Ny0xLjQyem01My44Ny0zOS41MmMtLjgtMy01LjM3LTE2LjIzLTIyLjM1LTE2LjIzLTE2IDAtMjMuNTIgMTAuMTEtMjUuNjQgMTguNTlhMzguNTggMzguNTggMCAwIDAtMS42NSAxMS43NmMwIDI1Ljg3IDE4Ljg0IDI5LjQgMjkuODggMjkuNCAxMC44MiAwIDE2LjQ2LTIuMzUgMTguNTgtMy43Ni40Ny0uMjQuNzEtLjcxLjI0LTEuODhsLTIuMzYtNi44M2ExLjI2IDEuMjYgMCAwIDAtMS40MS0uN2MtMi41OS45NC02LjM1IDIuODItMTUuMjkgMi44Mi0xNy40MiAwLTE2Ljg1LTE0Ljc0LTE2LjkzLTE2LjdoMzcuMTZhMS4yNSAxLjI1IDAgMCAwIDEuMTgtLjk0Yy0uMjQtLjAxLjk0LTcuMDctMS40MS0xNS41NHptLTIzLjI5LTYuMzVjLTEwLjMzIDAtMTMgOS0xMy42NCAxNC4xMkg1NDZjLS44OC0xMS45Mi03LjYyLTE0LjEzLTEyLjczLTE0LjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMS44NCAzNzguOTJjLS4zLjYtLjYgMS4wOCAwIDB6bTI0OS4xMy04N2ExMzEuMTYgMTMxLjE2IDAgMCAwLTU4IDEzLjVjLTUuOS0xMS45LTEyLTIyLjMtMTMtMzAuMS0xLjItOS4xLTIuNS0xNC41LTEuMS0yNS4zczcuNy0yNi4xIDcuNi0yNy4yLTEuNC02LjYtMTQuMy02LjctMjQgMi41LTI1LjI5IDUuOWExMjIuODMgMTIyLjgzIDAgMCAwLTUuMyAxOS4xYy0yLjMgMTEuNy0yNS43OSA1My41LTM5LjA5IDc1LjMtNC40LTguNS04LjEtMTYtOC45LTIyLTEuMi05LjEtMi41LTE0LjUtMS4xLTI1LjNzNy43LTI2LjEgNy42LTI3LjItMS40LTYuNi0xNC4yOS02LjctMjQgMi41LTI1LjMgNS45LTIuNyAxMS40LTUuMyAxOS4xLTMzLjg5IDc3LjMtNDIuMDggOTUuNGMtNC4yIDkuMi03LjggMTYuNi0xMC40IDIxLjYtLjQuOC0uNyAxLjMtLjkgMS43LjMtLjUuNS0xIC41LS44LTIuMiA0LjMtMy41IDYuNy0zLjUgNi43di4xYy0xLjcgMy4yLTMuNiA2LjEtNC41IDYuMS0uNiAwLTEuOS04LjQuMy0xOS45IDQuNy0yNC4yIDE1LjgtNjEuOCAxNS43LTYzLjEtLjEtLjcgMi4xLTcuMi03LjMtMTAuNy05LjEtMy4zLTEyLjQgMi4yLTEzLjIgMi4ycy0xLjQgMi0xLjQgMiAxMC4xLTQyLjQtMTkuMzktNDIuNGMtMTguNCAwLTQ0IDIwLjItNTYuNTggMzguNS03LjkgNC4zLTI1IDEzLjYtNDMgMjMuNS02LjkgMy44LTE0IDcuNy0yMC43IDExLjQtLjUtLjUtLjktMS0xLjQtMS41LTM1Ljc5LTM4LjItMTAxLjg3LTY1LjItOTkuMDctMTE2LjUgMS0xOC43IDcuNS02Ny44IDEyNy4wNy0xMjcuNCA5OC00OC44IDE3Ni4zNS0zNS40IDE4OS44NC01LjYgMTkuNCA0Mi41LTQxLjg5IDEyMS42LTE0My42NiAxMzMtMzguNzkgNC4zLTU5LjE4LTEwLjctNjQuMjgtMTYuMy01LjMtNS45LTYuMS02LjItOC4xLTUuMS0zLjMgMS44LTEuMiA3IDAgMTAuMSAzIDcuOSAxNS41IDIxLjkgMzYuNzkgMjguOSAxOC43IDYuMSA2NC4xOCA5LjUgMTE5LjE3LTExLjggNjEuNzgtMjMuOCAxMDkuODctOTAuMSA5NS43Ny0xNDUuNkMzODYuNTIgMTguMzIgMjkzLS4xOCAyMDQuNTcgMzEuMjJjLTUyLjY5IDE4LjctMTA5LjY3IDQ4LjEtMTUwLjY2IDg2LjQtNDguNjkgNDUuNi01Ni40OCA4NS4zLTUzLjI4IDEwMS45IDExLjM5IDU4LjkgOTIuNTcgOTcuMyAxMjUuMDYgMTI1LjctMS42LjktMy4xIDEuNy00LjUgMi41LTE2LjI5IDguMS03OC4xOCA0MC41LTkzLjY3IDc0LjctMTcuNSAzOC44IDIuOSA2Ni42IDE2LjI5IDcwLjQgNDEuNzkgMTEuNiA4NC41OC05LjMgMTA3LjU3LTQzLjZzMjAuMi03OS4xIDkuNi05OS41Yy0uMS0uMy0uMy0uNS0uNC0uOCA0LjItMi41IDguNS01IDEyLjgtNy41IDguMjktNC45IDE2LjM5LTkuNCAyMy40OS0xMy4zLTQgMTAuOC02LjkgMjMuOC04LjQgNDIuNi0xLjggMjIgNy4zIDUwLjUgMTkuMSA2MS43IDUuMiA0LjkgMTEuNDkgNSAxNS4zOSA1IDEzLjggMCAyMC0xMS40IDI2Ljg5LTI1IDguNS0xNi42IDE2LTM1LjkgMTYtMzUuOXMtOS40IDUyLjIgMTYuMyA1Mi4yYzkuMzkgMCAxOC43OS0xMi4xIDIzLTE4LjN2LjFzLjItLjQuNy0xLjJjMS0xLjUgMS41LTIuNCAxLjUtMi40di0uM2MzLjgtNi41IDEyLjEtMjEuNCAyNC41OS00NiAxNi4yLTMxLjggMzEuNjktNzEuNSAzMS42OS03MS41YTIwMS4yNCAyMDEuMjQgMCAwIDAgNi4yIDI1LjhjMi44IDkuNSA4LjcgMTkuOSAxMy40IDMwLTMuOCA1LjItNi4xIDguMi02LjEgOC4yYS4zMS4zMSAwIDAgMCAuMS4yYy0zIDQtNi40IDguMy05LjkgMTIuNS0xMi43OSAxNS4yLTI4IDMyLjYtMzAgMzcuNi0yLjQgNS45LTEuOCAxMC4zIDIuOCAxMy43IDMuNCAyLjYgOS40IDMgMTUuNjkgMi41IDExLjUtLjggMTkuNi0zLjYgMjMuNS01LjRhODIuMiA4Mi4yIDAgMCAwIDIwLjE5LTEwLjZjMTIuNS05LjIgMjAuMS0yMi40IDE5LjQtMzkuOC0uNC05LjYtMy41LTE5LjItNy4zLTI4LjIgMS4xLTEuNiAyLjMtMy4zIDMuNC01QzQzNC44IDMwMS43MiA0NTAuMSAyNzAgNDUwLjEgMjcwYTIwMS4yNCAyMDEuMjQgMCAwIDAgNi4yIDI1LjhjMi40IDguMSA3LjA5IDE3IDExLjM5IDI1LjctMTguNTkgMTUuMS0zMC4wOSAzMi42LTM0LjA5IDQ0LjEtNy40IDIxLjMtMS42IDMwLjkgOS4zIDMzLjEgNC45IDEgMTEuOS0xLjMgMTcuMS0zLjVhNzkuNDYgNzkuNDYgMCAwIDAgMjEuNTktMTEuMWMxMi41LTkuMiAyNC41OS0yMi4xIDIzLjc5LTM5LjYtLjMtNy45LTIuNS0xNS44LTUuNC0yMy40IDE1LjctNi42IDM2LjA5LTEwLjIgNjIuMDktNy4yIDU1LjY4IDYuNSA2Ni41OCA0MS4zIDY0LjQ4IDU1LjhzLTEzLjggMjIuNi0xNy43IDI1LTUuMSAzLjMtNC44IDUuMWMuNSAyLjYgMi4zIDIuNSA1LjYgMS45IDQuNi0uOCAyOS4xOS0xMS44IDMwLjI5LTM4LjcgMS42LTM0LTMxLjA5LTcxLjQtODktNzEuMXptLTQyOS4xOCAxNDQuN2MtMTguMzkgMjAuMS00NC4xOSAyNy43LTU1LjI4IDIxLjNDNTQuNjEgNDUxIDU5LjMxIDQyMS40MiA4MiA0MDBjMTMuOC0xMyAzMS41OS0yNSA0My4zOS0zMi40IDIuNy0xLjYgNi42LTQgMTEuNC02LjkuOC0uNSAxLjItLjcgMS4yLS43LjktLjYgMS45LTEuMSAyLjktMS43IDguMjkgMzAuNC4zIDU3LjItMTkuMSA3OC4zem0xMzQuMzYtOTEuNGMtNi40IDE1LjctMTkuODkgNTUuNy0yOC4wOSA1My42LTctMS44LTExLjMtMzIuMy0xLjQtNjIuMyA1LTE1LjEgMTUuNi0zMy4xIDIxLjktNDAuMSAxMC4wOS0xMS4zIDIxLjE5LTE0LjkgMjMuNzktMTAuNCAzLjUgNS45LTEyLjIgNDkuNC0xNi4yIDU5LjJ6bTExMSA1M2MtMi43IDEuNC01LjIgMi4zLTYuNCAxLjYtLjktLjUgMS4xLTIuNCAxLjEtMi40czEzLjktMTQuOSAxOS40LTIxLjdjMy4yLTQgNi45LTguNyAxMC44OS0xMy45IDAgLjUuMSAxIC4xIDEuNi0uMTMgMTcuOS0xNy4zMiAzMC0yNS4xMiAzNC44em04NS41OC0xOS41Yy0yLTEuNC0xLjctNi4xIDUtMjAuNyAyLjYtNS43IDguNTktMTUuMyAxOS0yNC41YTM2LjE4IDM2LjE4IDAgMCAxIDEuOSAxMC44Yy0uMSAyMi41LTE2LjIgMzAuOS0yNS44OSAzNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2hsaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUwLjUgMTU3LjdsLTU0LjItNDYuMSA3My40LTM5IDc4LjMgNDQuMi05Ny41IDQwLjl6TTE5MiAxMjIuMWw0NS43LTI4LjIgMzQuNyAzNC42LTU1LjQgMjktMjUtMzUuNHptLTY1LjEgNi42bDMxLjktMjIuMUwxNzYgMTM1bC0zNi43IDIyLjUtMTIuNC0yOC44em0tMjMuMyA4OC4ybC04LjgtMzQuOCAyOS42LTE4LjMgMTMuMSAzNS4zLTMzLjkgMTcuOHptLTIxLjItODMuN2wyMy45LTE4LjEgOC45IDI0LTI2LjcgMTguMy02LjEtMjQuMnpNNTkgMjA2LjVsLTMuNi0yOC40IDIyLjMtMTUuNSA2LjEgMjguN0w1OSAyMDYuNXptLTMwLjYgMTYuNmwyMC44LTEyLjggMy4zIDMzLjQtMjIuOSAxMi0xLjItMzIuNnpNMS40IDI2OGwxOS4yLTEwLjIuNCAzOC4yLTIxIDguOEwxLjQgMjY4em01OS4xIDU5LjNsLTI4LjMgOC4zLTEuNi00Ni44IDI1LjEtMTAuNyA0LjggNDkuMnpNOTkgMjYzLjJsLTMxLjEgMTMtNS4yLTQwLjhMOTAuMSAyMjFsOC45IDQyLjJ6TTEyMy4yIDM3N2wtNDEuNiA1LjktOC4xLTYzLjUgMzUuMi0xMC44IDE0LjUgNjguNHptMjguNS0xMzkuOWwyMS4yIDU3LjEtNDYuMiAxMy42LTEzLjctNTQuMSAzOC43LTE2LjZ6bTg1LjcgMjMwLjVsLTcwLjktMy4zLTI0LjMtOTUuOCA1NS4yLTguNiA0MCAxMDcuN3ptLTg0LjktMjc5LjdsNDIuMi0yMi40IDI4IDQ1LjktNTAuOCAyMS4zLTE5LjQtNDQuOHptNDEgOTQuOWw2MS4zLTE4LjcgNTIuOCA4Ni42LTc5LjggMTEuMy0zNC4zLTc5LjJ6bTUxLjQtODUuNmw2Ny4zLTI4LjggNjUuNSA2NS40LTg4LjYgMjYuMi00NC4yLTYyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjcmVlbnBhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzMuNSAyMi40OUMyMzMuNSAxMC4wNyAyNDMuNiAwIDI1NiAwQzI2OC40IDAgMjc4LjUgMTAuMDcgMjc4LjUgMjIuNDlDMjc4LjUgMzQuOTEgMjY4LjQgNDQuOTggMjU2IDQ0Ljk4QzI0My42IDQ0Ljk4IDIzMy41IDM0LjkxIDIzMy41IDIyLjQ5ek0zMTMuNCAyNTlDMzEzLjQgMjkwLjcgMjg3LjcgMzE2LjQgMjU2IDMxNi40QzIyNC4zIDMxNi40IDE5OC42IDI5MC43IDE5OC42IDI1OUMxOTguNiAyMjcuMyAyMjQuMyAyMDEuNiAyNTYgMjAxLjZDMjg3LjcgMjAxLjYgMzEzLjQgMjI3LjMgMzEzLjQgMjU5ek0zMzcuMiAzNTBDMzU5LjUgMzMwLjEgMzczLjcgMzAyLjcgMzc3LjEgMjczSDQ5Ni42QzQ5My4xIDMzNC40IDQ2Ni4yIDM5Mi4yIDQyMS40IDQzNC40QzM3Ni43IDQ3Ni42IDMxNy41IDUwMC4yIDI1NiA1MDAuMkMxOTQuNSA1MDAuMiAxMzUuMyA0NzYuNiA5MC41NiA0MzQuNEM0NS44MyAzOTIuMiAxOC45NCAzMzQuNCAxNS4zOSAyNzNIMTM1LjFDMTM4LjUgMzAyLjcgMTUyLjcgMzMwLjEgMTc1IDM1MEMxOTcuMyAzNjkuOSAyMjYuMiAzODAuOSAyNTYuMSAzODAuOUMyODUuMSAzODAuOSAzMTQuOCAzNjkuOSAzMzcuMiAzNTB6TTczLjE0IDE0MC4zQzczLjU0IDE1Mi43IDYzLjgxIDE2My4xIDUxLjM5IDE2My41QzM4Ljk3IDE2My45IDI4LjU5IDE1NC4yIDI4LjE4IDE0MS44QzI3Ljc4IDEyOS4zIDM3LjUyIDExOC45IDQ5Ljk0IDExOC41QzYyLjM1IDExOC4xIDcyLjc0IDEyNy45IDczLjE0IDE0MC4zek00MzguOSAxNDFDNDM4LjkgMTI4LjYgNDQ4LjkgMTE4LjUgNDYxLjQgMTE4LjVDNDczLjggMTE4LjUgNDgzLjggMTI4LjYgNDgzLjggMTQxQzQ4My44IDE1My41IDQ3My44IDE2My41IDQ2MS40IDE2My41QzQ0OC45IDE2My41IDQzOC45IDE1My41IDQzOC45IDE0MXpNMzE3LjkgOTUuMjdDMzAwLjYgMTA5LjEgMjc4LjcgMTE4LjEgMjU2IDExOC4xQzIzMy4zIDExOC4xIDIxMS40IDEwOS4xIDE5NC4xIDk1LjI3QzE3Ni44IDgwLjU1IDE2NS4zIDYwLjE4IDE2MS43IDM3Ljc4QzE3Ni44IDMxLjM3IDE5Mi41IDI2LjUyIDIwOC42IDIzLjMxQzIwOC42IDM1Ljg4IDIxMy42IDQ3LjkzIDIyMi41IDU2LjgyQzIzMS40IDY1LjcgMjQzLjQgNzAuNyAyNTYgNzAuN0MyNjguNiA3MC43IDI4MC42IDY1LjcgMjg5LjUgNTYuODJDMjk4LjQgNDcuOTMgMzAzLjQgMzUuODggMzAzLjQgMjMuMzFDMzE5LjUgMjYuNTIgMzM1LjIgMzEuMzcgMzUwLjMgMzcuNzhDMzQ2LjcgNjAuMTggMzM1LjIgODAuNTUgMzE3LjkgOTUuMjdIMzE3Ljl6TTgyLjc4IDIzMUM2MS40MiAyMzguNiAzOC4wNiAyMzguNCAxNi44NiAyMzAuNEMxOC44MiAyMTQuMSAyMi40NiAxOTguMSAyNy43MSAxODIuNUMzMy4xIDE4NS42IDM5LjA1IDE4Ny42IDQ1LjIyIDE4OC41QzUxLjM5IDE4OS4zIDU3LjY3IDE4OC45IDYzLjY4IDE4Ny4zQzY5LjY5IDE4NS42IDc1LjMzIDE4Mi45IDgwLjI3IDE3OS4xQzg1LjIxIDE3NS4zIDg5LjM2IDE3MC42IDkyLjQ3IDE2NS4yQzk1LjU4IDE1OS44IDk3LjYxIDE1My44IDk4LjQyIDE0Ny43Qzk5LjIzIDE0MS41IDk4LjgzIDEzNS4yIDk3LjIyIDEyOS4yQzk1LjYxIDEyMy4yIDkyLjgzIDExNy42IDg5LjA0IDExMi42Qzg1LjI1IDEwNy43IDgwLjUzIDEwMy41IDc1LjE0IDEwMC40Qzg1Ljk2IDg4LjExIDk4LjAxIDc2Ljk0IDExMS4xIDY3LjA3QzEyOC43IDgxLjQyIDE0MC42IDEwMS42IDE0NC43IDEyMy45QzE0OC44IDE0Ni4yIDE0NC44IDE2OS4zIDEzMy41IDE4OC45QzEyMi4xIDIwOC41IDEwNC4xIDIyMy40IDgyLjc4IDIzMVYyMzF6TTQyOS4yIDIzMS4xQzQwNy45IDIyMy41IDM4OS45IDIwOC41IDM3OC41IDE4OC45QzM2Ny4yIDE2OS4zIDM2My4zIDE0Ni4yIDM2Ny40IDEyMy45QzM3MS41IDEwMS43IDM4My40IDgxLjU0IDQwMC45IDY3LjE5QzQxNCA3Ny4wNCA0MjYuMSA4OC4yMSA0MzYuOSAxMDAuNUM0MjYuMiAxMDYuOSA0MTguNSAxMTcuMiA0MTUuNCAxMjkuM0M0MTIuMiAxNDEuMyA0MTMuMSAxNTQuMSA0MjAuMiAxNjQuOUM0MjYuNCAxNzUuNyA0MzYuNiAxODMuNiA0NDguNiAxODYuOUM0NjAuNiAxOTAuMiA0NzMuNSAxODguNiA0ODQuMyAxODIuNkM0ODkuNiAxOTguMSA0OTMuMiAyMTQuMiA0OTUuMiAyMzAuNEM0NzMuMSAyMzguNSA0NTAuNiAyMzguNyA0MjkuMiAyMzEuMUw0MjkuMiAyMzEuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NyaWJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyLjMgMjUyLjdjLTE2LjEtMTktMjQuNy00NS45LTI0LjgtNzkuOSAwLTEwMC40IDc1LjItMTUzLjEgMTY3LjItMTUzLjEgOTguNi0xLjYgMTU2LjggNDkgMTg0LjMgNzAuNmwtNTAuNSA3Mi4xLTM3LjMtMjQuNiAyNi45LTM4LjZjLTM2LjUtMjQtNzkuNC0zNi41LTEyMy0zNS44LTUwLjctLjgtMTExLjcgMjcuMi0xMTEuNyA3Ni4yIDAgMTguNyAxMS4yIDIwLjcgMjguNiAxNS42IDIzLjMtNS4zIDQxLjkuNiA1NS44IDE0IDI2LjQgMjQuMyAyMy4yIDY3LjYtLjcgOTEuOS0yOS4yIDI5LjUtODUuMiAyNy4zLTExNC44LTguNHptMzE3LjcgNS45Yy0xNS41LTE4LjgtMzguOS0yOS40LTYzLjItMjguNi0zOC4xLTItNzEuMSAyOC03MC41IDY3LjItLjcgMTYuOCA2IDMzIDE4LjQgNDQuMyAxNC4xIDEzLjkgMzMgMTkuNyA1Ni4zIDE0LjQgMTcuNC01LjEgMjguNi0zLjEgMjguNiAxNS42IDAgNC4zLS41IDguNS0xLjQgMTIuNy0xNi43IDQwLjktNTkuNSA2NC40LTEyMS40IDY0LjQtNTEuOS4yLTEwMi40LTE2LjQtMTQ0LjEtNDcuM2wzMy43LTM5LjQtMzUuNi0yNy40TDAgNDA2LjNsMTUuNCAxMy44YzUyLjUgNDYuOCAxMjAuNCA3Mi41IDE5MC43IDcyLjIgNTEuNCAwIDk0LjQtMTAuNSAxMzMuNi00NC4xIDU3LjEtNTEuNCA1NC4yLTE0OS4yIDIwLjMtMTg5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlYXJjaGVuZ2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyMC42IDEzMC4zbC02Ny4yIDI4LjJWNDMuMkw5OC43IDIzMy41bDU0LjctMjQuMnYxMzAuM2w2Ny4yLTIwOS4zem0tODMuMi05Ni43bC0xLjMgNC43LTE1LjIgNTIuOUM4MC42IDEwNi43IDUyIDE0NS44IDUyIDE5MS41YzAgNTIuMyAzNC4zIDk1LjkgODMuNCAxMDUuNXY1My42QzU3LjUgMzQwLjEgMCAyNzIuNCAwIDE5MS42YzAtODAuNSA1OS44LTE0Ny4yIDEzNy40LTE1OHptMzExLjQgNDQ3LjJjLTExLjIgMTEuMi0yMy4xIDEyLjMtMjguNiAxMC41LTUuNC0xLjgtMjcuMS0xOS45LTYwLjQtNDQuNC0zMy4zLTI0LjYtMzMuNi0zNS43LTQzLTU2LjctOS40LTIwLjktMzAuNC00Mi42LTU3LjUtNTIuNGwtOS43LTE0LjdjLTI0LjcgMTYuOS01MyAyNi45LTgxLjMgMjguN2wyLjEtNi42IDE1LjktNDkuNWM0Ni41LTExLjkgODAuOS01NCA4MC45LTEwNC4yIDAtNTQuNS0zOC40LTEwMi4xLTk2LTEwNy4xVjMyLjNDMjU0LjQgMzcuNCAzMjAgMTA2LjggMzIwIDE5MS42YzAgMzMuNi0xMS4yIDY0LjctMjkgOTAuNGwxNC42IDkuNmM5LjggMjcuMSAzMS41IDQ4IDUyLjQgNTcuNHMzMi4yIDkuNyA1Ni44IDQzYzI0LjYgMzMuMiA0Mi43IDU0LjkgNDQuNSA2MC4zcy43IDE3LjMtMTAuNSAyOC41em0tOS45LTE3LjljMC00LjQtMy42LTgtOC04cy04IDMuNi04IDggMy42IDggOCA4IDgtMy42IDgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VsbGNhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUzLjQgMzJIOTQuN0M0Mi42IDMyIDAgNzQuNiAwIDEyNi42djI1OC43QzAgNDM3LjQgNDIuNiA0ODAgOTQuNyA0ODBoMjU4LjdjNTIuMSAwIDk0LjctNDIuNiA5NC43LTk0LjZWMTI2LjZjMC01Mi00Mi42LTk0LjYtOTQuNy05NC42em0tNTAgMzE2LjRjLTI3LjkgNDguMi04OS45IDY0LjktMTM4LjIgMzcuMi0yMi45IDM5LjgtNTQuOSA4LjYtNDIuMy0xMy4ybDE1LjctMjcuMmM1LjktMTAuMyAxOS4yLTEzLjkgMjkuNS03LjkgMTguNiAxMC44LS4xLS4xIDE4LjUgMTAuNyAyNy42IDE1LjkgNjMuNCA2LjMgNzkuNC0yMS4zIDE1LjktMjcuNiA2LjMtNjMuNC0yMS4zLTc5LjQtMTcuOC0xMC4yLS42LS40LTE4LjYtMTAuNi0yNC42LTE0LjItMy40LTUxLjkgMjEuNi0zNy41IDE4LjYgMTAuOC0uMS0uMSAxOC41IDEwLjcgNDguNCAyOCA2NS4xIDkwLjMgMzcuMiAxMzguNXptMjEuOC0yMDguOGMtMTcgMjkuNS0xNi4zIDI4LjgtMTkgMzEuNS02LjUgNi41LTE2LjMgOC43LTI2LjUgMy42LTE4LjYtMTAuOC4xLjEtMTguNS0xMC43LTI3LjYtMTUuOS02My40LTYuMy03OS40IDIxLjNzLTYuMyA2My40IDIxLjMgNzkuNGMwIDAgMTguNSAxMC42IDE4LjYgMTAuNiAyNC42IDE0LjIgMy40IDUxLjktMjEuNiAzNy41LTE4LjYtMTAuOC4xLjEtMTguNS0xMC43LTQ4LjItMjcuOC02NC45LTkwLjEtMzcuMS0xMzguNCAyNy45LTQ4LjIgODkuOS02NC45IDEzOC4yLTM3LjJsNC44LTguNGMxNC4zLTI0LjkgNTItMy4zIDM3LjcgMjEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VsbHN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUzOS43MSAyMzcuMzA4YzMuMDY0LTEyLjI1NyA0LjI5LTI0LjgyMSA0LjI5LTM3LjM4NEM1NDQgMTA3LjM4MiA0NjguNjE4IDMyIDM3Ni4wNzYgMzJjLTc3LjIyIDAtMTQ0LjYzNCA1My4wMTItMTYzLjAyIDEyNy43ODEtMTUuMzIyLTEzLjE3Ni0zNC45MzQtMjAuNTMtNTUuMTU3LTIwLjUzLTQ2LjI3MSAwLTgzLjk2MiAzNy42OS04My45NjIgODMuOTYxIDAgNy4zNTQuOTIgMTUuMDE1IDMuMDY1IDIyLjM2OS00Mi45IDIwLjIyNS03MC43ODUgNjMuNzM4LTcwLjc4NSAxMTEuMjM0QzYuMjE2IDQyNC44NDMgNjEuNjggNDgwIDEyOS40MDEgNDgwaDM4MS4xOThjNjcuNzIgMCAxMjMuMTg0LTU1LjE1NyAxMjMuMTg0LTEyMy4xODQuMDAxLTU2LjM4NC0zOC45MTYtMTA2LjAyNS05NC4wNzMtMTE5LjUwOHpNMTk5Ljg4IDQwMS41NTRjMCA4LjI3NC03LjA0OCAxNS4zMjEtMTUuMzIxIDE1LjMyMUgxNTMuNjFjLTguMjc0IDAtMTUuMzIxLTcuMDQ4LTE1LjMyMS0xNS4zMjFWMjkwLjYyNmMwLTguMjczIDcuMDQ4LTE1LjMyMSAxNS4zMjEtMTUuMzIxaDMwLjk0OWM4LjI3NCAwIDE1LjMyMSA3LjA0OCAxNS4zMjEgMTUuMzIxdjExMC45Mjh6bTg5LjQ3NyAwYzAgOC4yNzQtNy4wNDggMTUuMzIxLTE1LjMyMiAxNS4zMjFoLTMwLjk0OWMtOC4yNzQgMC0xNS4zMjEtNy4wNDgtMTUuMzIxLTE1LjMyMVYyNzAuMDk2YzAtOC4yNzQgNy4wNDgtMTUuMzIxIDE1LjMyMS0xNS4zMjFoMzAuOTQ5YzguMjc0IDAgMTUuMzIyIDcuMDQ4IDE1LjMyMiAxNS4zMjF2MTMxLjQ1OHptODkuNDc3IDBjMCA4LjI3NC03LjA0NyAxNS4zMjEtMTUuMzIxIDE1LjMyMWgtMzAuOTQ5Yy04LjI3NCAwLTE1LjMyMi03LjA0OC0xNS4zMjItMTUuMzIxVjIzOC44NGMwLTguMjc0IDcuMDQ4LTE1LjMyMSAxNS4zMjItMTUuMzIxaDMwLjk0OWM4LjI3NCAwIDE1LjMyMSA3LjA0OCAxNS4zMjEgMTUuMzIxdjE2Mi43MTR6bTg3LjAyNyAwYzAgOC4yNzQtNy4wNDggMTUuMzIxLTE1LjMyMiAxNS4zMjFoLTI4LjQ5N2MtOC4yNzQgMC0xNS4zMjEtNy4wNDgtMTUuMzIxLTE1LjMyMVYxNzYuOTQxYzAtOC41NzkgNy4wNDctMTUuNjI4IDE1LjMyMS0xNS42MjhoMjguNDk3YzguMjc0IDAgMTUuMzIyIDcuMDQ4IDE1LjMyMiAxNS42Mjh2MjI0LjYxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VydmljZXN0YWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg4IDIxNmM4MS43IDEwLjIgMjczLjcgMTAyLjMgMzA0IDIzMkgwYzk5LjUtOC4xIDE4NC41LTEzNyA4OC0yMzJ6bTMyLTE1MmMzMi4zIDM1LjYgNDcuNyA4My45IDQ2LjQgMTMzLjZDMjQ5LjMgMjMxLjMgMzczLjcgMzIxLjMgNDAwIDQ0OGg5NkM0NTUuMyAyMzEuOSAyMjIuOCA3OS41IDEyMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hpcnRzaW5idWxrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwMCA0MTAuM2wzMC42IDEzLjQgNC40LTkuOS0zMC42LTEzLjR6bTM5LjQgMTcuNWwzMC42IDEzLjQgNC40LTkuOS0zMC42LTEzLjR6bTE3Mi4xLTE0bDQuNCA5LjkgMzAuNi0xMy40LTQuNC05Ljl6TTE3OS4xIDQ0NWwzMC4zIDEzLjcgNC40LTkuOS0zMC4zLTEzLjR6TTYwLjQgMzkyLjhMOTEgNDA2LjJsNC40LTkuNi0zMC42LTEzLjd6bTIxMS40IDM4LjVsNC40IDkuOSAzMC42LTEzLjQtNC40LTkuOXptLTM5LjMgMTcuNWw0LjQgOS45IDMwLjYtMTMuNy00LjQtOS42em0xMTguNC01Mi4ybDQuNCA5LjYgMzAuNi0xMy40LTQuNC05Ljl6TTE3MCA0Ni42aC0zMy41djEwLjVIMTcwem0tNDcuMiAwSDg5LjJ2MTAuNWgzMy41em0tNDcuMyAwSDQyLjN2MTAuNWgzMy4zem0xNDEuNSAwaC0zMy4ydjEwLjVIMjE3em05NC41IDBIMjc4djEwLjVoMzMuNXptNDcuMyAwaC0zMy41djEwLjVoMzMuNXptLTk0LjYgMEgyMzF2MTAuNWgzMy4yem0xNDEuNSAwaC0zMy4zdjEwLjVoMzMuM3pNNTIuOCAzNTEuMUg0MnYzMy41aDEwLjh6bTcwLTIxNS45SDg5LjJ2MTAuNWgzMy41em0tNzAgMTAuNmgyMi44di0xMC41SDQydjMzLjVoMTAuOHptMTY4LjkgMjI4LjZjNTAuNSAwIDkxLjMtNDAuOCA5MS4zLTkxLjMgMC01MC4yLTQwLjgtOTEuMy05MS4zLTkxLjMtNTAuMiAwLTkxLjMgNDEuMS05MS4zIDkxLjMgMCA1MC41IDQxLjEgOTEuMyA5MS4zIDkxLjN6bS00OC4yLTExMS4xYzAtMjUuNCAyOS41LTMxLjggNDkuNi0zMS44IDE2LjkgMCAyOS4yIDUuOCA0NC4zIDEybC04LjggMTYuOWgtLjljLTYuNC05LjktMjQuOC0xMy4xLTM1LjYtMTMuMS05IDAtMjkuOCAxLjgtMjkuOCAxNC45IDAgMjEuNiA3OC41LTEwLjIgNzguNSAzNy45IDAgMjUuNC0zMS41IDMxLjItNTEgMzEuMi0xOC4xIDAtMzIuNC0yLjktNDcuMi0xMi4ybDktMTguNGguOWM2LjEgMTIuMiAyMy42IDE0LjkgMzUuOSAxNC45IDguNyAwIDMyLjctMS4yIDMyLjctMTQuMyAwLTI2LjEtNzcuNiA2LjMtNzcuNi0zOHpNNTIuOCAxNzguNEg0MlYyMTJoMTAuOHptMzQyLjQgMjA2LjJINDA2di0zMy41aC0xMC44ek01Mi44IDMwNy45SDQydjMzLjVoMTAuOHpNMCAzLjd2NDA2bDIyMS43IDk4LjZMNDQ4IDQwOS43VjMuN3ptNDE4LjggMzg3LjFMMjIyIDQ3Ni41IDI5LjIgMzkwLjhWMTIwLjdoMzg5Ljd2MjcwLjF6bTAtMjk5LjNIMjkuMlYzMi45aDM4OS43djU4LjZ6bS0zNjYgMTMwLjFINDJ2MzMuNWgxMC44em0wIDQzLjJINDJ2MzMuNWgxMC44ek0xNzAgMTM1LjJoLTMzLjV2MTAuNUgxNzB6bTIyNS4yIDE2My4xSDQwNnYtMzMuNWgtMTAuOHptMC00My4ySDQwNnYtMzMuNWgtMTAuOHpNMjE3IDEzNS4yaC0zMy4ydjEwLjVIMjE3ek0zOTUuMiAyMTJINDA2di0zMy41aC0xMC44em0wIDEyOS41SDQwNlYzMDhoLTEwLjh6bS0xMzEtMjA2LjNIMjMxdjEwLjVoMzMuMnptNDcuMyAwSDI3OHYxMC41aDMzLjV6bTgzLjcgMzMuNkg0MDZ2LTMzLjVoLTMzLjV2MTAuNWgyMi44em0tMzYuNC0zMy42aC0zMy41djEwLjVoMzMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hvZWxhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA0LjkgMzMxYzIuMi0xLjEgNC40LTIuMyA2LjUtMy43bDguMy00LjhjMS41LTEuMSA0LjQtMy40IDguNy02LjdsLjUtLjVjMy40LTMuNCA3LjItNSAxMS4zLTQuOWMxLjggMCAzLjkgLjUgNi40IDEuNWwzMS0yNy41Yy45LS43IDEuNy0xLjMgMi42LTEuOGguMmMzLjMtMS45IDYtMS44IDguMiAuNGMzLjkgMi4xIDQuMiA1LjYgLjkgMTAuNkw0NTYuOSAzMjJjLjIgLjUgLjQgMSAuNCAxLjVjLjUgMi4yIC4zIDQuNC0uNSA2LjZjLS43IDEuNS0xLjggMi45LTMuMSA0LjJjLTEuNCAxLjQtMi43IDIuOC00LjIgNC4ybC0xOC44IDEzLjdjLTEuNyAxLjItMy40IDIuMy01LjEgMy4zYy0yLjEgMS4zLTQuMyAyLjUtNi42IDMuNmMtMSAuNC0xLjkgLjktMi45IDEuM2MtNS45IDIuNS0xMS45IDQuMi0xOC4yIDVjLTIuOSAyNC41LTExLjMgNDcuMS0yNS4xIDY3LjhjLTE3LjUgMjUuNy00MS40IDQ1LjQtNzEuOCA1OC44Yy0zMC4yIDEzLjUtNjMgMjAuMi05OC4yIDIwLjJjLTQ4LjYtLjUtODgtMTEuNC0xMTguMi0zMi44QzQ5LjUgNDU0LjQgMzIgNDIxLjUgMzIgMzgwLjN2LTUuNmMxLjItMjguMSA5LjUtNTQuNiAyNC44LTc5LjhjMTUuMS0yNC45IDM3LjEtNDEuNyA2Ni4xLTUwLjVjMTQuOS00LjQgMjkuOS02LjYgNDUtNi42YzE1LjUgMCAzMS42IDIuOSA0OC4xIDguNnMzNS4yIDE1LjUgNTUuOSAyOS41TDMyNiAzMTIuMmMxNS4xIDkuOCAyOC44IDE2LjUgNDEuMiAyMGMtMi42LTI1LjEtMTEuNy00Ni42LTI3LjMtNjQuNWMtMTUuNy0xOC4xLTM1LjYtMzEuMy01OS45LTM5LjdsLTIzLjMtOGMtMjEuNC03LjUtMzcuMy0xNC45LTQ3LjctMjIuMmMtMjguMi0xOS4xLTQzLjgtNDUuMi00Ny03OC41bC0uNS05LjhjMC0zMi4xIDEzLTU4LjkgMzktODAuNUMyMjMuNSA5LjcgMjUxLjEgMCAyODMgMGMyNCAwIDQ1LjYgNi45IDY0LjcgMjAuOGMxOS4yIDE0IDMwLjEgMzMuOCAzMi42IDU5LjRsLjUgMTBjMCAxOC42LTQuOCAzNC41LTE0LjQgNDcuN2MtOS44IDEzLjItMTguNSAxOS45LTI2IDE5LjljLTEuNi0uMS0zLjEtLjMtNC41LS42bC0zNCAzMmMtNS41IDMtOS4yIDIuNS0xMS4xLTEuNmMtMS45LTIuMi0xLjgtNC45IC41LTguMmwuMi0uMmMuNS0uNyAxLjItMS41IDItMi40bDMxLjYtMzBjLS40LTEuNS0uNi0zLjEtLjYtNC44YzAtNC4xIDEuNi03LjYgNC45LTEwLjRjMTMuOC0xMi40IDIwLjgtMjYuNyAyMC44LTQyLjhjMC0xNi02LjEtMjkuNS0xOC4yLTQwLjRzLTI4LjctMTYuNS00OS43LTE2LjhjLTI2LjIgMC00Ny44IDcuOS02NC43IDIzLjdTMTkyLjMgODkuOSAxOTIuMyAxMTJjMCAxNy44IDYuOSAzMy45IDIwLjYgNDguM2MxMy42IDE0LjIgMzQuNiAyNS40IDYzIDMzLjVjMzkuOCAxMS41IDcwLjIgMzEgOTEuMyA1OC4zYzE4LjcgMjQuMiAyOS4xIDUxLjMgMzEuMyA4MS40YzIuMi0uNyA0LjMtMS41IDYuNS0yLjZ6TTI5NC4xIDE3OC43YzAgMS4xIC42IDEuNiAxLjggMS42Yy4xIDAgOS43LTguOSAyOC44LTI2LjZjMC0yLjQtNS4xIC45LTE1LjMgMTBjLTEwLjIgOS4yLTE1LjMgMTQuMi0xNS4zIDE0Ljl6bTggNi40YzAtMS0uNS0xLjUtMS41LTEuNWMtMS4xIDAtMi4xIC41LTIuOSAxLjZjLTEuOS0uMS0zLjMgLjEtNC4yIC43Yy0uNCAuMi0uNSAuNS0uNSAuN2MwIC43IC41IDEuMyAxLjUgMS42aDMuM2MyLjktMS4xIDQuNC0yLjIgNC40LTMuM3ptMjIuNi0xOS45YzAtMi44LTEuNi0yLjgtNC45IDBjLTEuNiAxLjUtMy42IDMuNS02IDYuMmMtLjggLjYtMi42IDIuMi01LjMgNC45Yy0yLjggMi45LTQuMiA0LjctNC4yIDUuM2wuMiAxLjNjLjcgLjIgMS4yIC40IDEuNSAuNGMuMSAwIDMuMy0yLjkgOS41LTguN3M5LjMtOC45IDkuMy05LjN6bTE1OS43IDEyMGwtMzAuNiAyN2MxLjggMSAzLjIgMi40IDQgNC4ybDMwLjItMjdjLjItMS4yIC4xLTIuMi0uNS0yLjljLS42LS41LTEuNi0uOS0zLjEtMS4zem0tMS42LS45bC0uNy0uNy0yNyAyMS45IDEuNiAyIDI2LTIzLjF6TTM2Ni42IDM2My45Yy04LTIuMS0xNS40LTQuNi0yMi4yLTcuNWMtMTUuMy02LjItMzQuMy0xNy01Ny0zMi40TDI1MCAyOTguN2MtMTUuOC0xMC4xLTMwLjItMTcuNi00My4yLTIyLjZjLTEzLjEtNC45LTI2LTcuMy0zOC42LTcuM2gtNS41Yy0zMi4yIDEuNy01Ny4yIDEzLjgtNzUgMzYuMmMtMTYuNiAyMC44LTI1IDQ1LjMtMjUgNzMuNmMwIDMxLjggMTIuOCA1Ni43IDM4LjIgNzQuN2MyNS40IDE4LjEgNjAuMiAyNy4xIDEwNC40IDI3LjFjMzQuNyAwIDY0LTYuMiA4Ny44LTE4LjZjMjMuNy0xMi40IDQyLjEtMjguOCA1NS4yLTQ5LjJjOS44LTE1LjUgMTUuOS0zMS44IDE4LjItNDguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hvcGlmeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODguMzIsMTA0LjFhNC42Niw0LjY2LDAsMCwwLTQuNC00Yy0yLDAtMzcuMjMtLjgtMzcuMjMtLjhzLTIxLjYxLTIwLjgyLTI5LjYyLTI4LjgzVjUwMy4yTDQ0Mi43Niw0NzJTMzg4LjcyLDEwNi41LDM4OC4zMiwxMDQuMVpNMjg4LjY1LDcwLjQ3YTExNi42NywxMTYuNjcsMCwwLDAtNy4yMS0xNy42MUMyNzEsMzIuODUsMjU1LjQyLDIyLDIzNywyMmExNSwxNSwwLDAsMC00LC40Yy0uNC0uOC0xLjItMS4yLTEuNi0yQzIyMy40LDExLjYzLDIxMyw3LjYzLDIwMC41OCw4Yy0yNCwuOC00OCwxOC02Ny4yNSw0OC44My0xMy42MSwyMS42Mi0yNCw0OC44NC0yNi44Miw3MC4wNi0yNy42Miw4LjQtNDYuODMsMTQuNDEtNDcuMjMsMTQuODEtMTQsNC40LTE0LjQxLDQuOC0xNiwxOC0xLjIsMTAtMzgsMjkxLjgyLTM4LDI5MS44MkwzMDcuODYsNTA0VjY1LjY3YTQxLjY2LDQxLjY2LDAsMCwwLTQuNC40UzI5Ny44Niw2Ny42NywyODguNjUsNzAuNDdaTTIzMy40MSw4Ny42OWMtMTYsNC44LTMzLjYzLDEwLjQtNTAuODQsMTUuNjEsNC44LTE4LjgyLDE0LjQxLTM3LjYzLDI1LjYyLTUwLDQuNC00LjQsMTAuNDEtOS42MSwxNy4yMS0xMi44MUMyMzIuMjEsNTQuODYsMjMzLjgxLDc0LjQ4LDIzMy40MSw4Ny42OVpNMjAwLjU4LDI0LjQ0QTI3LjQ5LDI3LjQ5LDAsMCwxLDIxNSwyOGMtNi40LDMuMi0xMi44MSw4LjQxLTE4LjgxLDE0LjQxLTE1LjIxLDE2LjQyLTI2LjgyLDQyLTMxLjYyLDY2LjQ1LTE0LjQyLDQuNDEtMjguODMsOC44MS00MiwxMi44MUMxMzEuMzMsODMuMjgsMTYzLjc1LDI1LjI0LDIwMC41OCwyNC40NFpNMTU0LjE1LDI0NC42MWMxLjYsMjUuNjEsNjkuMjUsMzEuMjIsNzMuMjUsOTEuNjYsMi44LDQ3LjY0LTI1LjIyLDgwLjA2LTY1LjY1LDgyLjQ3LTQ4LjgzLDMuMi03NS42NS0yNS42Mi03NS42NS0yNS42MmwxMC40LTQ0czI2LjgyLDIwLjQyLDQ4LjQ0LDE4LjgyYzE0LS44LDE5LjIyLTEyLjQxLDE4LjgxLTIwLjQyLTItMzMuNjItNTcuMjQtMzEuNjItNjAuODQtODYuODYtMy4yLTQ2LjQ0LDI3LjIyLTkzLjI3LDk0LjQ3LTk3LjY4LDI2LTEuNiwzOS4yMyw0LjgxLDM5LjIzLDQuODFMMjIxLjQsMjI1LjM5cy0xNy4yMS04LTM3LjYzLTYuNEMxNTQuMTUsMjIxLDE1My43NSwyMzkuOCwxNTQuMTUsMjQ0LjYxWk0yNDkuNDIsODIuODhjMC0xMi0xLjYtMjkuMjItNy4yMS00My42MywxOC40MiwzLjYsMjcuMjIsMjQsMzEuMjMsMzYuNDNRMjYyLjYzLDc4LjY4LDI0OS40Miw4Mi44OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hvcHdhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAzLjUgNDU1LjQxQTI0Ni4xNyAyNDYuMTcgMCAwIDEgMjU2IDUwNEMxMTguODEgNTA0IDggMzkzIDggMjU2IDggMTE4LjgxIDExOSA4IDI1NiA4YTI0Ny4zOSAyNDcuMzkgMCAwIDEgMTY1LjcgNjMuNSAzLjU3IDMuNTcgMCAwIDEtMi44NiA2LjE4QTQxOC42MiA0MTguNjIgMCAwIDAgMzYyLjEzIDc0Yy0xMjkuMzYgMC0yMjIuNCA1My40Ny0yMjIuNCAxNTUuMzUgMCAxMDkgOTIuMTMgMTQ1Ljg4IDE3Ni44MyAxNzguNzMgMzMuNjQgMTMgNjUuNCAyNS4zNiA4NyA0MS41OWEzLjU4IDMuNTggMCAwIDEgMCA1Ljcyek01MDMgMjMzLjA5YTMuNjQgMy42NCAwIDAgMC0xLjI3LTIuNDRjLTUxLjc2LTQzLTkzLjYyLTYwLjQ4LTE0NC40OC02MC40OC04NC4xMyAwLTgwLjI1IDUyLjE3LTgwLjI1IDUzLjYzIDAgNDIuNiA1Mi4wNiA2MiAxMTIuMzQgODQuNDkgMzEuMDcgMTEuNTkgNjMuMTkgMjMuNTcgOTIuNjggMzkuOTNhMy41NyAzLjU3IDAgMCAwIDUtMS44MkEyNDkgMjQ5IDAgMCAwIDUwMyAyMzMuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25hbE1lc3NlbmdlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTQuNiA3LjVsNS44IDIzLjNDMTc3LjcgMzYuMyAxNTYgNDUuMyAxMzYgNTcuNEwxMjMuNyAzNi44YzIyLTEzLjMgNDUuOS0yMy4yIDcwLjktMjkuM3ptMTIyLjkgMGwtNS44IDIzLjNDMzM0LjMgMzYuMyAzNTYgNDUuMyAzNzYgNTcuNGwxMi40LTIwLjZjLTIyLTEzLjMtNDYtMjMuMi03MS0yOS4zek0zNi44IDEyMy43Yy0xMy4zIDIyLTIzLjIgNDUuOS0yOS4zIDcwLjlsMjMuMyA1LjhDMzYuMyAxNzcuNyA0NS4zIDE1NiA1Ny40IDEzNkwzNi44IDEyMy43ek0yNCAyNTZjMC0xMS42IC45LTIzLjMgMi42LTM0LjhMMi45IDIxNy42Yy0zLjggMjUuNC0zLjggNTEuMyAwIDc2LjdsMjMuNy0zLjZDMjQuOSAyNzkuMyAyNCAyNjcuNiAyNCAyNTZ6TTM4OC4zIDQ3NS4yTDM3NiA0NTQuNmMtMjAgMTIuMS00MS42IDIxLTY0LjIgMjYuNmw1LjggMjMuM2MyNC45LTYuMiA0OC44LTE2IDcwLjgtMjkuM3pNNDg4IDI1NmMwIDExLjYtLjkgMjMuMy0yLjYgMzQuOGwyMy43IDMuNmMzLjgtMjUuNCAzLjgtNTEuMyAwLTc2LjdsLTIzLjcgMy42YzEuNyAxMS41IDIuNiAyMy4xIDIuNiAzNC44em0xNi41IDYxLjRsLTIzLjMtNS44Yy01LjYgMjIuNy0xNC41IDQ0LjMtMjYuNiA2NC4zbDIwLjYgMTIuNGMxMy4zLTIyIDIzLjItNDYgMjkuMy03MXptLTIxMy44IDE2OGMtMjMgMy41LTQ2LjUgMy41LTY5LjUgMGwtMy42IDIzLjdjMjUuNCAzLjggNTEuMyAzLjggNzYuNyAwbC0zLjYtMjMuN3ptMTUyLTkxLjhjLTEzLjggMTguNy0zMC40IDM1LjMtNDkuMiA0OS4xbDE0LjIgMTkuM2MyMC43LTE1LjIgMzktMzMuNCA1NC4yLTU0LjFsLTE5LjMtMTQuNHpNMzkzLjYgNjkuMmMxOC44IDEzLjggMzUuMyAzMC40IDQ5LjIgNDkuMkw0NjIuMSAxMDRDNDQ2LjkgODMuNCA0MjguNiA2NS4xIDQwOCA0OS45TDM5My42IDY5LjJ6TTY5LjIgMTE4LjRjMTMuOC0xOC44IDMwLjQtMzUuMyA0OS4yLTQ5LjJMMTA0IDQ5LjlDODMuNCA2NS4xIDY1LjEgODMuNCA0OS45IDEwNGwxOS4zIDE0LjR6bTQwNiA1LjNMNDU0LjYgMTM2YzEyLjEgMjAgMjEgNDEuNiAyNi42IDY0LjJsMjMuMy01LjhjLTYuMi0yNC45LTE2LTQ4LjgtMjkuMy03MC44em0tMjU0LTk3LjFjMjMtMy41IDQ2LjUtMy41IDY5LjUgMGwzLjYtMjMuN0MyNjguOS0xIDI0My4xLTEgMjE3LjYgMi45bDMuNiAyMy43ek04MS42IDQ2OC40TDMyIDQ4MGwxMS42LTQ5LjZMMjAuMiA0MjUgOC42IDQ3NC41Yy0uOSA0LS44IDguMSAuMyAxMi4xczMuMiA3LjUgNi4xIDEwLjRzNi41IDUgMTAuNCA2LjFzOC4xIDEuMiAxMi4xIC4zTDg3IDQ5MmwtNS40LTIzLjZ6TTI1LjIgNDAzLjZMNDguNiA0MDlsOC0zNC40Yy0xMS43LTE5LjYtMjAuNC00MC44LTI1LjgtNjNMNy41IDMxNy40YzUuMiAyMS4yIDEzLjIgNDEuNyAyMy42IDYwLjhsLTUuOSAyNS4zem0xMTIgNTJsLTM0LjQgOCA1LjQgMjMuNCAyNS4zLTUuOWMxOS4yIDEwLjQgMzkuNiAxOC40IDYwLjggMjMuNmw1LjgtMjMuM2MtMjIuMS01LjUtNDMuMy0xNC4zLTYyLjgtMjZsLS4yIC4yek0yNTYgNDhjLTM3LjIgMC03My42IDEwLTEwNS42IDI4LjlzLTU4LjQgNDYtNzYuMyA3OC42cy0yNi45IDY5LjMtMjUuOCAxMDYuNHMxMiA3My4zIDMxLjggMTA0LjhMNjAgNDUybDg1LjMtMjBjMjcuMyAxNy4yIDU4LjIgMjcuOCA5MC4zIDMxczY0LjUtMS4xIDk0LjYtMTIuNnM1Ny4yLTI5LjggNzktNTMuNnMzNy44LTUyLjIgNDYuOC04My4yczEwLjUtNjMuNiA0LjctOTUuM3MtMTktNjEuNi0zOC40LTg3LjRzLTQ0LjUtNDYuNy03My40LTYxUzI4OC4zIDQ4IDI1NiA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2ltcGx5YnVpbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgxLjIgNjRoLTEwNmMtMTQuNSAwLTI2LjYgMTEuOC0yNi42IDI2LjN2MzkuNkgxNjMuM1Y5MC4zYzAtMTQuNS0xMi0yNi4zLTI2LjYtMjYuM2gtMTA2QzE2LjEgNjQgNC4zIDc1LjggNC4zIDkwLjN2MzMxLjRjMCAxNC41IDExLjggMjYuMyAyNi42IDI2LjNoNDUwLjRjMTQuOCAwIDI2LjYtMTEuOCAyNi42LTI2LjNWOTAuM2MtLjItMTQuNS0xMi0yNi4zLTI2LjctMjYuM3pNMTQ5LjggMzU1LjhjLTM2LjYgMC02Ni40LTI5LjctNjYuNC02Ni40IDAtMzYuOSAyOS43LTY2LjYgNjYuNC02Ni42IDM2LjkgMCA2Ni42IDI5LjcgNjYuNiA2Ni42IDAgMzYuNy0yOS43IDY2LjQtNjYuNiA2Ni40em0yMTIuNCAwYy0zNi45IDAtNjYuNi0yOS43LTY2LjYtNjYuNiAwLTM2LjYgMjkuNy02Ni40IDY2LjYtNjYuNCAzNi42IDAgNjYuNCAyOS43IDY2LjQgNjYuNCAwIDM2LjktMjkuOCA2Ni42LTY2LjQgNjYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2lzdHJpeCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNDQ5TDMwMS4yIDMwMC4yYzIwLTI3LjkgMzEuOS02Mi4yIDMxLjktOTkuMiAwLTkzLjEtNzQuNy0xNjguOS0xNjYuNS0xNjguOUM3NC43IDMyIDAgMTA3LjggMCAyMDAuOXM3NC43IDE2OC45IDE2Ni41IDE2OC45YzM5LjggMCA3Ni4zLTE0LjIgMTA1LTM3LjlsMTQ2IDE0OC4xIDMwLjUtMzF6TTE2Ni41IDMzMC44Yy03MC42IDAtMTI4LjEtNTguMy0xMjguMS0xMjkuOVM5NS45IDcxIDE2Ni41IDcxczEyOC4xIDU4LjMgMTI4LjEgMTI5LjktNTcuNCAxMjkuOS0xMjguMSAxMjkuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2l0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMybDY5LjcxIDExOC43NS01OC44Ni0xMS41MiA2OS44NCA5MS4wM2ExNDYuNzQxIDE0Ni43NDEgMCAwIDAgMCA1MS40NWwtNjkuODQgOTEuMDMgNTguODYtMTEuNTJMMCA0ODBsMTE4Ljc1LTY5LjcxLTExLjUyIDU4Ljg2IDkxLjAzLTY5Ljg0YzE3LjAyIDMuMDQgMzQuNDcgMy4wNCA1MS40OCAwbDkxLjAzIDY5Ljg0LTExLjUyLTU4Ljg2TDQ0OCA0ODBsLTY5LjcxLTExOC43OCA1OC44NiAxMS41Mi02OS44NC05MS4wM2MzLjAzLTE3LjAxIDMuMDQtMzQuNDQgMC01MS40NWw2OS44NC05MS4wMy01OC44NiAxMS41Mkw0NDggMzJsLTExOC43NSA2OS43MSAxMS41Mi01OC45LTkxLjA2IDY5Ljg3Yy04LjUtMS41Mi0xNy4xLTIuMjktMjUuNzEtMi4yOXMtMTcuMjEuNzgtMjUuNzEgMi4yOWwtOTEuMDYtNjkuODcgMTEuNTIgNTguOUwwIDMyem0yMjQgOTkuNzhjMzEuOCAwIDYzLjYgMTIuMTIgODcuODUgMzYuMzcgNDguNSA0OC41IDQ4LjQ5IDEyNy4yMSAwIDE3NS43cy0xMjcuMiA0OC40Ni0xNzUuNy0uMDNjLTQ4LjUtNDguNS00OC40OS0xMjcuMjEgMC0xNzUuNyAyNC4yNC0yNC4yNSA1Ni4wNS0zNi4zNCA4Ny44NS0zNi4zNHptMCAzNi42NmMtMjIuNDIgMC00NC44MyA4LjUyLTYxLjkyIDI1LjYxLTM0LjE4IDM0LjE4LTM0LjE5IDg5LjY4IDAgMTIzLjg3czg5LjY1IDM0LjE4IDEyMy44NCAwYzM0LjE4LTM0LjE4IDM0LjE5LTg5LjY4IDAtMTIzLjg3LTE3LjA5LTE3LjA5LTM5LjUtMjUuNjEtNjEuOTItMjUuNjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpdHJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTIuNDM5IDAuMDA4NDYxMjhWMEg0NDhWMTI4SDY0QzY0IDU3LjYwMDggMTQxLjc1NSAwLjQ3NTMzOCAyMTIuNDM5IDAuMDA4NDYxMjhaTTIzNy4yNTYgMTkyVjE5Mi4wMDdDMzA3LjEzNSAxOTIuNDc1IDM4NCAyNDkuNiAzODQgMzIwSDIxMC44MDlWMzE5Ljk5NUMxNDAuOTE1IDMxOS41NjMgNjQgMjYyLjQyNCA2NCAxOTJIMjM3LjI1NlpNMjM1LjU2NSA1MTEuOTkzQzMwNi4yNTEgNTExLjUyMSAzODQgNDU0LjM5OSAzODQgMzg0SDBWNTEySDIzNS41NjVWNTExLjk5M1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2tldGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3LjUgMTYyLjJMOSAxODcuMWg5MC41bDYuOS0xMzAuNy03OC45IDEwNS44ek0zOTYuMyA0NS43TDI2Ny43IDMybDEzNS43IDE0Ny4yLTcuMS0xMzMuNXpNMTEyLjIgMjE4LjNsLTExLjItMjJIOS45TDIzNC44IDQ1OHptMi0zMS4yaDI4NGwtODEuNS04OC41TDI1Ni4zIDMzem0yOTcuMyA5LjFMMjc3LjYgNDU4bDIyNC44LTI2MS43aC05MC45ek00MTUuNCA2OUw0MDYgNTYuNGwuOSAxNy4zIDYuMSAxMTMuNGg5MC4zek0xMTMuNSA5My41bC00LjYgODUuNkwyNDQuNyAzMiAxMTYuMSA0NS43em0yODcuNyAxMDIuN2gtMjkwbDQyLjQgODIuOUwyNTYuMyA0ODBsMTQ0LjktMjgzLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNreWF0bGFzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAzMjkuM2MwIDY1LjktNTIuNSAxMTQuNC0xMTcuNSAxMTQuNC0xNjUuOSAwLTE5Ni42LTI0OS43LTM1OS43LTI0OS43LTE0Ni45IDAtMTQ3LjEgMjEyLjIgNS42IDIxMi4yIDQyLjUgMCA5MC45LTE3LjggMTI1LjMtNDIuNSA1LjYtNC4xIDE2LjktMTYuMyAyMi44LTE2LjNzMTAuOSA1IDEwLjkgMTAuOWMwIDcuOC0xMy4xIDE5LjEtMTguNyAyNC4xLTQwLjkgMzUuNi0xMDAuMyA2MS4yLTE1NC43IDYxLjItODMuNC4xLTE1NC01OS0xNTQtMTQ0LjlzNjcuNS0xNDkuMSAxNTIuOC0xNDkuMWMxODUuMyAwIDIyMi41IDI0NS45IDM2MS45IDI0NS45IDk5LjkgMCA5NC44LTEzOS43IDMuNC0xMzkuNy0xNy41IDAtMzUgMTEuNi00Ni45IDExLjYtOC40IDAtMTUuOS03LjItMTUuOS0xNS42IDAtMTEuNiA1LjMtMjMuNyA1LjMtMzYuMyAwLTY2LjYtNTAuOS0xMTQuNy0xMTYuOS0xMTQuNy01My4xIDAtODAgMzYuOS04OC44IDM2LjktNi4yIDAtMTEuMi01LTExLjItMTEuMiAwLTUuNiA0LjEtMTAuMyA3LjgtMTQuNCAyNS4zLTI4LjggNjQuNy00My43IDEwMi44LTQzLjcgNzkuNCAwIDEzOS4xIDU4LjQgMTM5LjEgMTM3LjggMCA2LjktLjMgMTMuNy0xLjIgMjAuNiAxMS45LTMuMSAyNC4xLTQuNyAzNS45LTQuNyA2MC43IDAgMTExLjkgNDUuMyAxMTEuOSAxMDcuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2t5cGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI0LjcgMjk5LjhjMi45LTE0IDQuNy0yOC45IDQuNy00My44IDAtMTEzLjUtOTEuOS0yMDUuMy0yMDUuMy0yMDUuMy0xNC45IDAtMjkuNyAxLjctNDMuOCA0LjdDMTYxLjMgNDAuNyAxMzcuNyAzMiAxMTIgMzIgNTAuMiAzMiAwIDgyLjIgMCAxNDRjMCAyNS43IDguNyA0OS4zIDIzLjMgNjguMi0yLjkgMTQtNC43IDI4LjktNC43IDQzLjggMCAxMTMuNSA5MS45IDIwNS4zIDIwNS4zIDIwNS4zIDE0LjkgMCAyOS43LTEuNyA0My44LTQuNyAxOSAxNC42IDQyLjYgMjMuMyA2OC4yIDIzLjMgNjEuOCAwIDExMi01MC4yIDExMi0xMTIgLjEtMjUuNi04LjYtNDkuMi0yMy4yLTY4LjF6bS0xOTQuNiA5MS41Yy02NS42IDAtMTIwLjUtMjkuMi0xMjAuNS02NSAwLTE2IDktMzAuNiAyOS41LTMwLjYgMzEuMiAwIDM0LjEgNDQuOSA4OC4xIDQ0LjkgMjUuNyAwIDQyLjMtMTEuNCA0Mi4zLTI2LjMgMC0xOC43LTE2LTIxLjYtNDItMjgtNjIuNS0xNS40LTExNy44LTIyLTExNy44LTg3LjIgMC01OS4yIDU4LjYtODEuMSAxMDkuMS04MS4xIDU1LjEgMCAxMTAuOCAyMS45IDExMC44IDU1LjQgMCAxNi45LTExLjQgMzEuOC0zMC4zIDMxLjgtMjguMyAwLTI5LjItMzMuNS03NS0zMy41LTI1LjcgMC00MiA3LTQyIDIyLjUgMCAxOS44IDIwLjggMjEuOCA2OS4xIDMzIDQxLjQgOS4zIDkwLjcgMjYuOCA5MC43IDc3LjYgMCA1OS4xLTU3LjEgODYuNS0xMTIgODYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2xhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTQuMTIgMzE1LjFjMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2UzAgMzQxIDAgMzE1LjFjMC0yNS45IDIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2aDQ3LjA2djQ3LjA2em0yMy43MiAwYzAtMjUuOSAyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNnM0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNnYxMTcuODRjMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2cy00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNlYzMTUuMXptNDcuMDYtMTg4Ljk4Yy0yNS45IDAtNDcuMDYtMjEuMTYtNDcuMDYtNDcuMDZTMTM5IDMyIDE2NC45IDMyczQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2djQ3LjA2SDE2NC45em0wIDIzLjcyYzI1LjkgMCA0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNnMtMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZINDcuMDZDMjEuMTYgMjQzLjk2IDAgMjIyLjggMCAxOTYuOXMyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNkgxNjQuOXptMTg4Ljk4IDQ3LjA2YzAtMjUuOSAyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNiAyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZzLTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2aC00Ny4wNlYxOTYuOXptLTIzLjcyIDBjMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2LTI1LjkgMC00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNlY3OS4wNmMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDYgMjUuOSAwIDQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2VjE5Ni45ek0yODMuMSAzODUuODhjMjUuOSAwIDQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2IDAgMjUuOS0yMS4xNiA0Ny4wNi00Ny4wNiA0Ny4wNi0yNS45IDAtNDcuMDYtMjEuMTYtNDcuMDYtNDcuMDZ2LTQ3LjA2aDQ3LjA2em0wLTIzLjcyYy0yNS45IDAtNDcuMDYtMjEuMTYtNDcuMDYtNDcuMDYgMC0yNS45IDIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2aDExNy44NGMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDYgMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2SDI4My4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbGlkZXNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ny43IDE1My43Yy0zNCAwLTYxLjcgMjUuNy02MS43IDU3LjcgMCAzMS43IDI3LjcgNTcuNyA2MS43IDU3LjdzNjEuNy0yNiA2MS43LTU3LjdjMC0zMi0yNy43LTU3LjctNjEuNy01Ny43em0xNDMuNCAwYy0zNCAwLTYxLjcgMjUuNy02MS43IDU3LjcgMCAzMS43IDI3LjcgNTcuNyA2MS43IDU3LjcgMzQuMyAwIDYxLjctMjYgNjEuNy01Ny43LjEtMzItMjcuNC01Ny43LTYxLjctNTcuN3ptMTU2LjYgOTBsLTYgNC4zVjQ5LjdjMC0yNy40LTIwLjYtNDkuNy00Ni00OS43SDc2LjZjLTI1LjQgMC00NiAyMi4zLTQ2IDQ5LjdWMjQ4Yy0yLTEuNC00LjMtMi45LTYuMy00LjMtMTUuMS0xMC42LTI1LjEgNC0xNiAxNy43IDE4LjMgMjIuNiA1My4xIDUwLjMgMTA2LjMgNzJDNTguMyA1MjUuMSAyNTIgNTU1LjcgMjQ4LjkgNDU3LjVjMC0uNy4zLTU2LjYuMy05Ni42IDUuMSAxLjEgOS40IDIuMyAxMy43IDMuMSAwIDM5LjcuMyA5Mi44LjMgOTMuNS0zLjEgOTguMyAxOTAuNiA2Ny43IDEzNC4zLTEyNCA1My4xLTIxLjcgODgtNDkuNCAxMDYuMy03MiA5LjEtMTMuOC0uOS0yOC4zLTE2LjEtMTcuOHptLTMwLjUgMTkuMmMtNjguOSAzNy40LTEyOC4zIDMxLjEtMTYwLjYgMjkuNy0yMy43LS45LTMyLjYgOS4xLTMzLjcgMjQuOS0xMC4zLTcuNy0xOC42LTE1LjUtMjAuMy0xNy4xLTUuMS01LjQtMTMuNy04LTI3LjEtNy43LTMxLjcgMS4xLTg5LjcgNy40LTE1Ny40LTI4VjcyLjNjMC0zNC45IDguOS00NS43IDQwLjYtNDUuN2gzMTcuN2MzMC4zIDAgNDAuOSAxMi45IDQwLjkgNDUuN3YxOTAuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU25hcGNoYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2LjkyNiwzNjYuNmMtMy4zNzMtOS4xNzYtOS44LTE0LjA4Ni0xNy4xMTItMTguMTUzLTEuMzc2LS44MDYtMi42NDEtMS40NTEtMy43Mi0xLjk0Ny0yLjE4Mi0xLjEyOC00LjQxNC0yLjIyLTYuNjM0LTMuMzczLTIyLjgtMTIuMDktNDAuNjA5LTI3LjM0MS01Mi45NTktNDUuNDJhMTAyLjg4OSwxMDIuODg5LDAsMCwxLTkuMDg5LTE2LjEyYy0xLjA1NC0zLjAxMy0xLTQuNzI0LS4yNDgtNi4yODdhMTAuMjIxLDEwLjIyMSwwLDAsMSwyLjkxNC0zLjAzOGMzLjkxOC0yLjU5MSw3Ljk2LTUuMjIsMTAuNy02Ljk5Myw0Ljg4NS0zLjE2Miw4Ljc1NC01LjY2NywxMS4yNDYtNy40NCw5LjM2Mi02LjU0NywxNS45MDktMTMuNSwyMC0yMS4yNzhhNDIuMzcxLDQyLjM3MSwwLDAsMCwyLjEtMzUuMTkxYy02LjItMTYuMzE4LTIxLjYxMy0yNi40NDktNDAuMjg3LTI2LjQ0OWE1NS41NDMsNTUuNTQzLDAsMCwwLTExLjcxOCwxLjI0Yy0xLjAyOS4yMjQtMi4wNTkuNDU5LTMuMDYzLjcyLjE3NC0xMS4xNi0uMDc0LTIyLjk0LTEuMDY2LTM0LjUzNC0zLjUyMi00MC43NTgtMTcuNzk0LTYyLjEyMy0zMi42NzQtNzkuMTZBMTMwLjE2NywxMzAuMTY3LDAsMCwwLDMzMi4xLDM2LjQ0M0MzMDkuNTE1LDIzLjU0NywyODMuOTEsMTcsMjU2LDE3UzIwMi42LDIzLjU0NywxODAsMzYuNDQzYTEyOS43MzUsMTI5LjczNSwwLDAsMC0zMy4yODEsMjYuNzgzYy0xNC44OCwxNy4wMzgtMjkuMTUyLDM4LjQ0LTMyLjY3Myw3OS4xNjEtLjk5MiwxMS41OTQtMS4yNCwyMy40MzUtMS4wNzksMzQuNTMzLTEtLjI2LTIuMDIxLS41LTMuMDUxLS43MTlhNTUuNDYxLDU1LjQ2MSwwLDAsMC0xMS43MTctMS4yNGMtMTguNjg3LDAtMzQuMTI1LDEwLjEzMS00MC4zLDI2LjQ0OWE0Mi40MjMsNDIuNDIzLDAsMCwwLDIuMDQ2LDM1LjIyOGM0LjEwNSw3Ljc3NCwxMC42NTIsMTQuNzMxLDIwLjAxNCwyMS4yNzgsMi40OCwxLjczNiw2LjM2MSw0LjI0LDExLjI0Niw3LjQ0LDIuNjQxLDEuNzExLDYuNSw0LjIxNiwxMC4yOCw2LjcyYTExLjA1NCwxMS4wNTQsMCwwLDEsMy4zLDMuMzExYy43OTQsMS42MjQuODE4LDMuMzczLS4zNiw2LjZhMTAyLjAyLDEwMi4wMiwwLDAsMS04Ljk0LDE1Ljc4NWMtMTIuMDc3LDE3LjY2OS0yOS4zNjMsMzIuNjQ4LTUxLjQzNCw0NC42MzlDMzIuMzU1LDM0OC42MDgsMjAuMiwzNTIuNzUsMTUuMDY5LDM2Ni43Yy0zLjg2OCwxMC41MjgtMS4zMzksMjIuNTA2LDguNDk0LDMyLjZhNDkuMTM3LDQ5LjEzNywwLDAsMCwxMi40LDkuMzg3LDEzNC4zMzcsMTM0LjMzNywwLDAsMCwzMC4zNDIsMTIuMTM5LDIwLjAyNCwyMC4wMjQsMCwwLDEsNi4xMjYsMi43NDFjMy41ODMsMy4xMzcsMy4wNzUsNy44NjEsNy44NDksMTQuNzhhMzQuNDY4LDM0LjQ2OCwwLDAsMCw4Ljk3Nyw5LjEyN2MxMC4wMTksNi45MTksMjEuMjc4LDcuMzUzLDMzLjIwNyw3LjgxMSwxMC43NzYuNDEsMjIuOTg5Ljg4MSwzNi45MzksNS40ODEsNS43NzgsMS45MSwxMS43OCw1LjYwNSwxOC43MzYsOS45MkMxOTQuODQyLDQ4MC45NTEsMjE3LjcwNyw0OTUsMjU1Ljk3Myw0OTVzNjEuMjkyLTE0LjEyMyw3OC4xMTgtMjQuNDI4YzYuOTA3LTQuMjQsMTIuODcyLTcuOSwxOC40ODktOS43NTgsMTMuOTQ5LTQuNjEzLDI2LjE2My01LjA3MiwzNi45MzktNS40ODEsMTEuOTI4LS40NTksMjMuMTg3LS44OTMsMzMuMjA2LTcuODEyYTM0LjU4NCwzNC41ODQsMCwwLDAsMTAuMjE4LTExLjE2YzMuNDM0LTUuODQsMy4zNDgtOS45MTksNi41NzItMTIuNzcxYTE4Ljk3MSwxOC45NzEsMCwwLDEsNS43NTMtMi42MjlBMTM0Ljg5MywxMzQuODkzLDAsMCwwLDQ3Ni4wMiw0MDguNzFhNDguMzQ0LDQ4LjM0NCwwLDAsMCwxMy4wMTktMTAuMTkzbC4xMjQtLjE0OUM0OTguMzg5LDM4OC41LDUwMC43MDgsMzc2Ljg2Nyw0OTYuOTI2LDM2Ni42Wm0tMzQuMDEzLDE4LjI3N2MtMjAuNzQ1LDExLjQ1OC0zNC41MzMsMTAuMjMtNDUuMjU5LDE3LjEzNy05LjExNCw1Ljg2NS0zLjcyLDE4LjUxMy0xMC4zNDIsMjMuMDc2LTguMTM0LDUuNjE3LTMyLjE3Ny0uNC02My4yMzksOS44NTgtMjUuNjE4LDguNDY5LTQxLjk2MSwzMi44MjItODguMDM4LDMyLjgyMnMtNjIuMDM2LTI0LjMtODguMDc2LTMyLjg4NGMtMzEtMTAuMjU1LTU1LjA5Mi00LjI0MS02My4yMzktOS44NTgtNi42MDktNC41NjMtMS4yNC0xNy4yMTEtMTAuMzQxLTIzLjA3Ni0xMC43MzktNi45MDctMjQuNTI3LTUuNjc5LTQ1LjI2LTE3LjA3NS0xMy4yMDYtNy4yOTEtNS43MTYtMTEuOC0xLjMxNC0xMy45MzcsNzUuMTQzLTM2LjM4MSw4Ny4xMzMtOTIuNTUyLDg3LjY2Ni05Ni43MTkuNjQ1LTUuMDQ2LDEuMzY0LTkuMDE0LTQuMTkxLTE0LjE0OC01LjM2OS00Ljk2LTI5LjE4OS0xOS43LTM1LjgtMjQuMzE2LTEwLjkzNy03LjYzOC0xNS43NDgtMTUuMjY0LTEyLjItMjQuNjM4LDIuNDgtNi40ODUsOC41MzEtOC45MjgsMTQuODc5LTguOTI4YTI3LjY0MywyNy42NDMsMCwwLDEsNS45NjUuNjdjMTIsMi42LDIzLjY1OSw4LjYxNywzMC4zOTIsMTAuMjQyYTEwLjc0OSwxMC43NDksMCwwLDAsMi40OC4zMzVjMy42LDAsNC44Ni0xLjgxMSw0LjYxMi01LjkyNy0uNzY4LTEzLjEzMi0yLjYyOC0zOC43MjUtLjU1OC02Mi42NDQsMi44NC0zMi45MDksMTMuNDQyLTQ5LjIxNSwyNi4wNC02My42MzYsNi4wNTEtNi45MzIsMzQuNDg0LTM2Ljk3Niw4OC44NTctMzYuOTc2czgyLjg4LDI5LjkyLDg4LjkzMSwzNi44MjdjMTIuNjExLDE0LjQyMSwyMy4yMjUsMzAuNzI3LDI2LjA0LDYzLjYzNiwyLjA3MSwyMy45MTkuMjg1LDQ5LjUyNS0uNTU4LDYyLjY0NC0uMjg1LDQuMzI3LDEuMDE3LDUuOTI3LDQuNjEzLDUuOTI3YTEwLjY0OCwxMC42NDgsMCwwLDAsMi40OC0uMzM1YzYuNzQ1LTEuNjI0LDE4LjQtNy42MzgsMzAuNC0xMC4yNDJhMjcuNjQxLDI3LjY0MSwwLDAsMSw1Ljk2NC0uNjdjNi4zODYsMCwxMi40LDIuNDgsMTQuODgsOC45MjgsMy41NDYsOS4zNzQtMS4yNCwxNy0xMi4xODksMjQuNjM5LTYuNjA5LDQuNjEyLTMwLjQyOSwxOS4zNDMtMzUuOCwyNC4zMTUtNS41NjgsNS4xMzQtNC44MzYsOS4xLTQuMTkxLDE0LjE0OS41MzMsNC4yMjgsMTIuNTExLDYwLjQsODcuNjY2LDk2LjcxOEM0NjguNjI5LDM3My4wMTEsNDc2LjExOSwzNzcuNTI0LDQ2Mi45MTMsMzg0Ljg3N1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU291bmRjbG91ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTEuNCAyNTYuM2w1LjggNjUtNS44IDY4LjNjLS4zIDIuNS0yLjIgNC40LTQuNCA0LjRzLTQuMi0xLjktNC4yLTQuNGwtNS42LTY4LjMgNS42LTY1YzAtMi4yIDEuOS00LjIgNC4yLTQuMiAyLjIgMCA0LjEgMiA0LjQgNC4yem0yMS40LTQ1LjZjLTIuOCAwLTQuNyAyLjItNSA1bC01IDEwNS42IDUgNjguM2MuMyAyLjggMi4yIDUgNSA1IDIuNSAwIDQuNy0yLjIgNC43LTVsNS44LTY4LjMtNS44LTEwNS42YzAtMi44LTIuMi01LTQuNy01em0yNS41LTI0LjFjLTMuMSAwLTUuMyAyLjItNS42IDUuM2wtNC40IDEzMCA0LjQgNjcuOGMuMyAzLjEgMi41IDUuMyA1LjYgNS4zIDIuOCAwIDUuMy0yLjIgNS4zLTUuM2w1LjMtNjcuOC01LjMtMTMwYzAtMy4xLTIuNS01LjMtNS4zLTUuM3pNNy4yIDI4My4yYy0xLjQgMC0yLjIgMS4xLTIuNSAyLjVMMCAzMjEuM2w0LjcgMzVjLjMgMS40IDEuMSAyLjUgMi41IDIuNXMyLjItMS4xIDIuNS0yLjVsNS42LTM1LTUuNi0zNS42Yy0uMy0xLjQtMS4xLTIuNS0yLjUtMi41em0yMy42LTIxLjljLTEuNCAwLTIuNSAxLjEtMi41IDIuNWwtNi40IDU3LjUgNi40IDU2LjFjMCAxLjcgMS4xIDIuOCAyLjUgMi44czIuNS0xLjEgMi44LTIuNWw3LjItNTYuNC03LjItNTcuNWMtLjMtMS40LTEuNC0yLjUtMi44LTIuNXptMjUuMy0xMS40Yy0xLjcgMC0zLjEgMS40LTMuMyAzLjNMNDcgMzIxLjNsNS44IDY1LjhjLjMgMS43IDEuNyAzLjEgMy4zIDMuMSAxLjcgMCAzLjEtMS40IDMuMS0zLjFsNi45LTY1LjgtNi45LTY4LjFjMC0xLjktMS40LTMuMy0zLjEtMy4zem0yNS4zLTIuMmMtMS45IDAtMy42IDEuNC0zLjYgMy42bC01LjggNzAgNS44IDY3LjhjMCAyLjIgMS43IDMuNiAzLjYgMy42czMuNi0xLjQgMy45LTMuNmw2LjQtNjcuOC02LjQtNzBjLS4zLTIuMi0yLTMuNi0zLjktMy42em0yNDEuNC0xMTAuOWMtMS4xLS44LTIuOC0xLjQtNC4yLTEuNC0yLjIgMC00LjIuOC01LjYgMS45LTEuOSAxLjctMy4xIDQuMi0zLjMgNi43di44bC0zLjMgMTc2LjcgMS43IDMyLjUgMS43IDMxLjdjLjMgNC43IDQuMiA4LjYgOC45IDguNnM4LjYtMy45IDguNi04LjZsMy45LTY0LjItMy45LTE3Ny41Yy0uNC0zLTItNS44LTQuNS03LjJ6bS0yNi43IDE1LjNjLTEuNC0uOC0yLjgtMS40LTQuNC0xLjRzLTMuMS42LTQuNCAxLjRjLTIuMiAxLjQtMy42IDMuOS0zLjYgNi43bC0uMyAxLjctMi44IDE2MC44czAgLjMgMy4xIDY1LjZ2LjNjMCAxLjcuNiAzLjMgMS43IDQuNyAxLjcgMS45IDMuOSAzLjEgNi40IDMuMSAyLjIgMCA0LjItMS4xIDUuNi0yLjUgMS43LTEuNCAyLjUtMy4zIDIuNS01LjZsLjMtNi43IDMuMS01OC42LTMuMy0xNjIuOGMtLjMtMi44LTEuNy01LjMtMy45LTYuN3ptLTExMS40IDIyLjVjLTMuMSAwLTUuOCAyLjgtNS44IDYuMWwtNC40IDE0MC42IDQuNCA2Ny4yYy4zIDMuMyAyLjggNS44IDUuOCA1LjggMy4zIDAgNS44LTIuNSA2LjEtNS44bDUtNjcuMi01LTE0MC42Yy0uMi0zLjMtMi43LTYuMS02LjEtNi4xem0zNzYuNyA2Mi44Yy0xMC44IDAtMjEuMSAyLjItMzAuNiA2LjEtNi40LTcwLjgtNjUuOC0xMjYuNC0xMzguMy0xMjYuNC0xNy44IDAtMzUgMy4zLTUwLjMgOS40LTYuMSAyLjItNy44IDQuNC03LjggOS4ydjI0OS43YzAgNSAzLjkgOC42IDguNiA5LjJoMjE4LjNjNDMuMyAwIDc4LjYtMzUgNzguNi03OC4zLjEtNDMuNi0zNS4yLTc4LjktNzguNS03OC45em0tMjk2LjctNjAuM2MtNC4yIDAtNy41IDMuMy03LjggNy44bC0zLjMgMTM2LjcgMy4zIDY1LjZjLjMgNC4yIDMuNiA3LjUgNy44IDcuNSA0LjIgMCA3LjUtMy4zIDcuNS03LjVsMy45LTY1LjYtMy45LTEzNi43Yy0uMy00LjUtMy4zLTcuOC03LjUtNy44em0tNTMuNi03LjhjLTMuMyAwLTYuNCAzLjEtNi40IDYuN2wtMy45IDE0NS4zIDMuOSA2Ni45Yy4zIDMuNiAzLjEgNi40IDYuNCA2LjQgMy42IDAgNi40LTIuOCA2LjctNi40bDQuNC02Ni45LTQuNC0xNDUuM2MtLjMtMy42LTMuMS02LjctNi43LTYuN3ptMjYuNyAzLjRjLTMuOSAwLTYuOSAzLjEtNi45IDYuOUwyMjcgMzIxLjNsMy45IDY2LjRjLjMgMy45IDMuMSA2LjkgNi45IDYuOXM2LjktMy4xIDYuOS02LjlsNC4yLTY2LjQtNC4yLTE0MS43YzAtMy45LTMtNi45LTYuOS02Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvdXJjZXRyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI3LjIgMjAzYzAtMTEyLjEtOTAuOS0yMDMtMjAzLTIwM0MxMTIuMS0uMiAyMS4yIDkwLjYgMjEgMjAyLjZBMjAyLjg2IDIwMi44NiAwIDAgMCAxNjEuNSAzOTZ2MTAxLjdhMTQuMyAxNC4zIDAgMCAwIDE0LjMgMTQuM2g5Ni40YTE0LjMgMTQuMyAwIDAgMCAxNC4zLTE0LjNWMzk2LjFBMjAzLjE4IDIwMy4xOCAwIDAgMCA0MjcuMiAyMDN6bS0yNzEuNiAwYzAtOTAuOCAxMzcuMy05MC44IDEzNy4zIDAtLjEgODkuOS0xMzcuMyA5MS0xMzcuMyAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGFjZUF3ZXNvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMjU2SDEyOFY1MTJIMFYzNTJIMzJWMzIwSDY0VjI4OEg5NlYyNTZ6TTUxMiAzNTJWNTEySDM4NFYyNTZINDE2VjI4OEg0NDhWMzIwSDQ4MFYzNTJINTEyek0zMjAgNjRIMzUyVjQ0OEgzMjBWNDE2SDE5MlY0NDhIMTYwVjY0SDE5MlYzMkgyMjRWMEgyODhWMzJIMzIwVjY0ek0yODggMTI4SDIyNFYxOTJIMjg4VjEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BlYWthcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzOTEuNzhDLTE1LjQxIDMwMy41OS04IDE2Ny40MiA4MC42NCA4Ny42NHMyMjQuOC03MyAzMDQuMjEgMTUuMjQgNzIgMjI0LjM2LTE2LjY0IDMwNC4xNGMtMTguNzQgMTYuODcgNjQgNDMuMDkgNDIgNTIuMjYtODIuMDYgMzQuMjEtMjUzLjkxIDM1LTM0Ni4yMy02Ny41em0yMTMuMzEtMjExLjZsMzguNS00MC44NmMtOS42MS04Ljg5LTMyLTI2LjgzLTc2LjE3LTI3LjYtNTIuMzMtLjkxLTk1Ljg2IDI4LjMtOTYuNzcgODAtLjIgMTEuMzMuMjkgMzYuNzIgMjkuNDIgNTQuODMgMzQuNDYgMjEuNDIgODYuNTIgMjEuNTEgODYgNTIuMjYtLjM3IDIxLjI4LTI2LjQyIDI1LjgxLTM4LjU5IDI1LjYtMy0uMDUtMzAuMjMtLjQ2LTQ3LjYxLTI0LjYybC00MCA0Mi42MWMyOC4xNiAyNyA1OSAzMi42MiA4My40OSAzMy4wNSAxMC4yMy4xOCA5Ni40Mi4zMyA5Ny44NC04MSAuMjgtMTUuODEtMi4wNy0zOS43Mi0yOC44Ni01Ni41OS0zNC4zNi0yMS42NC04NS0xOS40NS04NC40My00OS43NS40MS0yMy4yNSAzMS0yNS4zNyAzNy41My0yNS4yNi40MyAwIDI2LjYyLjI2IDM5LjYyIDE3LjM3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGVha2VyRGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTMuODYgMjk2SDEwMGExMDAgMTAwIDAgMCAxIDAtMjAwaDEzMi44NGE0MCA0MCAwIDAgMSAwIDgwSDk4Yy0yNi40NyAwLTI2LjQ1IDQwIDAgNDBoMTEzLjgyYTEwMCAxMDAgMCAwIDEgMCAyMDBINDBhNDAgNDAgMCAwIDEgMC04MGgxNzMuODZjMjYuNDggMCAyNi40Ni00MCAwLTQwek0yOTggNDE2YTEyMC4yMSAxMjAuMjEgMCAwIDAgNTEuMTEtODBoNjQuNTVhMTkuODMgMTkuODMgMCAwIDAgMTkuNjYtMjBWMTk2YTE5LjgzIDE5LjgzIDAgMCAwLTE5LjY2LTIwSDI5Ni40MmE2MC43NyA2MC43NyAwIDAgMCAwLTgwaDEzNi45M2M0My40NCAwIDc4LjY1IDM1LjgyIDc4LjY1IDgwdjE2MGMwIDQ0LjE4LTM1LjIxIDgwLTc4LjY1IDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcG90aWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4xIDggMCAxMTkuMSAwIDI1NnMxMTEuMSAyNDggMjQ4IDI0OCAyNDgtMTExLjEgMjQ4LTI0OFMzODQuOSA4IDI0OCA4em0xMDAuNyAzNjQuOWMtNC4yIDAtNi44LTEuMy0xMC43LTMuNi02Mi40LTM3LjYtMTM1LTM5LjItMjA2LjctMjQuNS0zLjkgMS05IDIuNi0xMS45IDIuNi05LjcgMC0xNS44LTcuNy0xNS44LTE1LjggMC0xMC4zIDYuMS0xNS4yIDEzLjYtMTYuOCA4MS45LTE4LjEgMTY1LjYtMTYuNSAyMzcgMjYuMiA2LjEgMy45IDkuNyA3LjQgOS43IDE2LjVzLTcuMSAxNS40LTE1LjIgMTUuNHptMjYuOS02NS42Yy01LjIgMC04LjctMi4zLTEyLjMtNC4yLTYyLjUtMzctMTU1LjctNTEuOS0yMzguNi0yOS40LTQuOCAxLjMtNy40IDIuNi0xMS45IDIuNi0xMC43IDAtMTkuNC04LjctMTkuNC0xOS40czUuMi0xNy44IDE1LjUtMjAuN2MyNy44LTcuOCA1Ni4yLTEzLjYgOTcuOC0xMy42IDY0LjkgMCAxMjcuNiAxNi4xIDE3NyA0NS41IDguMSA0LjggMTEuMyAxMSAxMS4zIDE5LjctLjEgMTAuOC04LjUgMTkuNS0xOS40IDE5LjV6bTMxLTc2LjJjLTUuMiAwLTguNC0xLjMtMTIuOS0zLjktNzEuMi00Mi41LTE5OC41LTUyLjctMjgwLjktMjkuNy0zLjYgMS04LjEgMi42LTEyLjkgMi42LTEzLjIgMC0yMy4zLTEwLjMtMjMuMy0yMy42IDAtMTMuNiA4LjQtMjEuMyAxNy40LTIzLjkgMzUuMi0xMC4zIDc0LjYtMTUuMiAxMTcuNS0xNS4yIDczIDAgMTQ5LjUgMTUuMiAyMDUuNCA0Ny44IDcuOCA0LjUgMTIuOSAxMC43IDEyLjkgMjIuNiAwIDEzLjYtMTEgMjMuMy0yMy4yIDIzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUJlaGFuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU1LjMgMzE4LjRjMTcuMiAwIDMxLjItNi4xIDMxLjItMjUuNGMwLTE5LjctMTEuNy0yNy40LTMwLjMtMjcuNWgtNDZ2NTIuOWg0NS4xem0tNS40LTEyOS42SDExMC4zdjQ0LjhIMTUzYzE1LjEgMCAyNS44LTYuNiAyNS44LTIyLjljMC0xNy43LTEzLjctMjEuOS0yOC45LTIxLjl6bTEyOS41IDc0LjhoNjIuMmMtMS43LTE4LjUtMTEuMy0yOS43LTMwLjUtMjkuN2MtMTguMyAwLTMwLjUgMTEuNC0zMS43IDI5Ljd6TTM4NCAzMkg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTM0OS41IDE4NUgyNzEuN1YxNjYuMWg3Ny44VjE4NXpNMTkzLjcgMjQzLjdjMjMuNiA2LjcgMzUgMjcuNSAzNSA1MS42YzAgMzktMzIuNyA1NS43LTY3LjYgNTUuOUg2OHYtMTkyaDkwLjVjMzIuOSAwIDYxLjQgOS4zIDYxLjQgNDcuNWMwIDE5LjMtOSAyOC44LTI2LjIgMzd6bTExOC43LTM4LjZjNDMuNSAwIDY3LjYgMzQuMyA2Ny42IDc1LjRjMCAxLjYtLjEgMy4zLS4yIDVjMCAuOC0uMSAxLjUtLjEgMi4ySDI3OS41YzAgMjIuMiAxMS43IDM1LjMgMzQuMSAzNS4zYzExLjYgMCAyNi41LTYuMiAzMC4yLTE4LjFoMzMuN2MtMTAuNCAzMS45LTMxLjkgNDYuOC02NS4xIDQ2LjhjLTQzLjggMC03MS4xLTI5LjctNzEuMS03M2MwLTQxLjggMjguNy03My42IDcxLjEtNzMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlRHJpYmJibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY1LjkgMTMyLjVjLTM4LjMgMTgtNjYuOCA1My4zLTc1LjcgOTUuN2M2LjEgLjEgNjIuNCAuMyAxMjYuNC0xNi43Yy0yMi43LTQwLjItNDcuMS03NC4xLTUwLjctNzl6bTI2LjEtOS4xYzMuOCA1LjEgMjguNiAzOC45IDUxIDgwYzQ4LjYtMTguMyA2OS4xLTQ1LjkgNzEuNi00OS40QzI4MSAxMjQuMiAyMzUuMyAxMTIuOSAxOTIgMTIzLjR6TTI3Ny40IDM4MmMtMi0xMi0xMC01My44LTI5LjItMTAzLjZjLTU1LjEgMTguOC05My44IDU2LjQtMTA4LjEgODUuNmM0MC41IDMxLjYgOTMuMyAzNi43IDEzNy4zIDE4ek0yMjcuOCAyMzIuNkMxNTkuNiAyNTMgOTMuNCAyNTIuMiA4Ny40IDI1MmMwIC43IDAgMS40IDAgMi4xczAgMS40IDAgMi4xYzAgMzUuMSAxMy4zIDY3LjEgMzUuMSA5MS40YzIyLjItMzcuOSA2Ny4xLTc3LjkgMTE2LjUtOTEuOGMtMy40LTcuOC03LjItMTUuNS0xMS4xLTIzLjJ6bTcyLjUgMTM2LjljMzAuNy0yMC43IDUyLjUtNTMuNiA1OC42LTkxLjZjLTQuNi0xLjUtNDIuMy0xMi43LTg1LjEtNS44YzE3LjkgNDkuMSAyNS4xIDg5LjEgMjYuNSA5Ny40em0tMzQuOC0xMTljNDUuNS01LjcgOTAuNyAzLjQgOTUuMiA0LjRjLS4zLTMyLjMtMTEuOC02MS45LTMwLjktODUuMWMtMi45IDMuOS0yNS44IDMzLjItNzYuMyA1My45YzQuOCA5LjggOC4zIDE3LjggMTIgMjYuOHpNMzg0IDMySDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NHpNMjI0IDQxNmExNjAgMTYwIDAgMSAxIDAtMzIwIDE2MCAxNjAgMCAxIDEgMCAzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUZhY2Vib29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0aDk4LjJWMzM0LjJIMTA5LjRWMjU2aDUyLjhWMjIyLjNjMC04Ny4xIDM5LjQtMTI3LjUgMTI1LTEyNy41YzE2LjIgMCA0NC4yIDMuMiA1NS43IDYuNFYxNzJjLTYtLjYtMTYuNS0xLTI5LjYtMWMtNDIgMC01OC4yIDE1LjktNTguMiA1Ny4yVjI1Nmg4My42bC0xNC40IDc4LjJIMjU1VjQ4MEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUZvbnRBd2Vzb21lU3Ryb2tlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDY0QzQ2LjMgNjQgMzIgNzguMyAzMiA5NmwwIDMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwzMjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTMyMGMwLTE3LjctMTQuMy0zMi0zMi0zMkw2NCA2NHpNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZ6bTE1NCA1OGMwIDkuMy00LjggMTcuNC0xMi4xIDIybDE4OC45IDBjNy4zIDAgMTMuMiA1LjkgMTMuMiAxMy4yYzAgMS44LS40IDMuNy0xLjEgNS40TDMxMiAyNjRsMzAuOSA2OS40Yy44IDEuNyAxLjEgMy41IDEuMSA1LjRjMCA3LjMtNS45IDEzLjItMTMuMiAxMy4yTDE0NCAzNTJsMCAzMi0zMiAwIDAtMzIgMC0xNzYgMC0xLjVjLTYuMS00LjgtMTAtMTIuMi0xMC0yMC41YzAtMTQuNCAxMS42LTI2IDI2LTI2czI2IDExLjYgMjYgMjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUZvbnRBd2Vzb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6bTkwIDEyMmMwIDkuMy00LjggMTcuNC0xMi4xIDIybDE4OC45IDBjNy4zIDAgMTMuMiA1LjkgMTMuMiAxMy4yYzAgMS44LS40IDMuNy0xLjEgNS40TDMxMiAyNjRsMzAuOSA2OS40Yy43IDEuNyAxLjEgMy41IDEuMSA1LjRjMCA3LjMtNS45IDEzLjItMTMuMiAxMy4yTDE0NCAzNTJsMCAzMi0zMiAwIDAtMzIgMC0xNzYgMC0xLjVjLTYuMS00LjgtMTAtMTIuMi0xMC0yMC41YzAtMTQuNCAxMS42LTI2IDI2LTI2czI2IDExLjYgMjYgMjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUdpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjAuOCAzMzUuNWMtNS45LS40LTEyLjYtLjgtMjAuMi0xLjNjLTMuMyA0LjEtNi42IDguNC02LjYgMTMuNWMwIDE4LjUgNjUuNSAxOC41IDY1LjUtMS41YzAtOC4zLTcuNC04LjctMzguOC0xMC43em03LjgtMTE3LjljLTMyLjMgMC0zMy43IDQ0LjUtLjcgNDQuNWMzMi41IDAgMzEuNy00NC41IC43LTQ0LjV6TTM4NCAzMkg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTI0My45IDE3Mi4yYy0xNC41IDAtMjIuOS04LjQtMjIuOS0yMi45YzAtMTQuNSA4LjQtMjIuMyAyMi45LTIyLjNjMTQuNyAwIDIzLjEgNy44IDIzLjEgMjIuM3MtOC40IDIyLjktMjMuMSAyMi45ek0xNDkuNiAxOTVoNDkuNWwwIDIxLjYtMjMuNCAxLjhjNC42IDUuOCA5LjQgMTQgOS40IDI1LjdjMCA0OC43LTU3LjIgNDcuMi03NC4yIDQyLjRsLTguNCAxMy40YzUgLjMgOS44IC42IDE0LjMgLjhjNTYuMyAzLjIgODAuNSA0LjYgODAuNSAzOC41YzAgMjkuMi0yNS43IDQ1LjctNjkuOSA0NS43Yy00NiAwLTYzLjUtMTEuNi02My41LTMxLjdjMC0xMS40IDUuMS0xNy41IDE0LTI1LjljLTguNC0zLjUtMTEuMi05LjktMTEuMi0xNi44YzAtOS42IDcuNC0xNi4zIDIzLTMwLjZsLjItLjJjLTEyLjQtNi4xLTIxLjgtMTkuMy0yMS44LTM4LjFjMC01MS42IDU2LjYtNTMuMyA4MS42LTQ2Ljh6TTI3MC41IDMwMy4xbDEzIDEuOCAwIDIwLjFIMjExLjFWMzA0LjljMi43LS40IDUtLjcgNi45LS45YzkuOS0xLjIgMTAuMS0xLjMgMTAuMS02VjIyMy4zYzAtNC40LS45LTQuNy0xMC4xLTcuOGMtMS45LS43LTQuMi0xLjQtNi45LTIuNGwyLjgtMjAuNmg1Mi42VjI5OGMwIDQuMSAuMiA0LjYgNC4xIDUuMXptMTA2LjYtMTAuNEwzODQgMzE1Yy0xMC45IDUuNC0yNi45IDEwLjItNDEuNCAxMC4yYy0zMC4yIDAtNDEuNy0xMi4yLTQxLjctNDAuOVYyMTcuN2MwLS44IDAtMS40LS4yLTEuOGMtLjgtMS4yLTQuMi0uNy0xOS42LS43VjE5Mi42YzIyLjMtMi41IDMxLjItMTMuNyAzNC00MS40aDI0LjJjMCAzMy4zLS42IDM4IC43IDM4LjZjLjMgLjEgLjcgMCAxLjMgMGgzNS44djI1LjRIMzM5LjN2NjAuN2MwIC4yIDAgLjUgMCAuOWMtLjIgNi4zLS45IDMwLjQgMzcuOSAxNS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVHaXRodWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NnpNMjY1LjggNDA3LjdjMC0xLjggMC02IC4xLTExLjZjLjEtMTEuNCAuMS0yOC44IC4xLTQzLjdjMC0xNS42LTUuMi0yNS41LTExLjMtMzAuN2MzNy00LjEgNzYtOS4yIDc2LTczLjFjMC0xOC4yLTYuNS0yNy4zLTE3LjEtMzljMS43LTQuMyA3LjQtMjItMS43LTQ1Yy0xMy45LTQuMy00NS43IDE3LjktNDUuNyAxNy45Yy0xMy4yLTMuNy0yNy41LTUuNi00MS42LTUuNnMtMjguNCAxLjktNDEuNiA1LjZjMCAwLTMxLjgtMjIuMi00NS43LTE3LjljLTkuMSAyMi45LTMuNSA0MC42LTEuNyA0NWMtMTAuNiAxMS43LTE1LjYgMjAuOC0xNS42IDM5YzAgNjMuNiAzNy4zIDY5IDc0LjMgNzMuMWMtNC44IDQuMy05LjEgMTEuNy0xMC42IDIyLjNjLTkuNSA0LjMtMzMuOCAxMS43LTQ4LjMtMTMuOWMtOS4xLTE1LjgtMjUuNS0xNy4xLTI1LjUtMTcuMWMtMTYuMi0uMi0xLjEgMTAuMi0xLjEgMTAuMmMxMC44IDUgMTguNCAyNC4yIDE4LjQgMjQuMmM5LjcgMjkuNyA1Ni4xIDE5LjcgNTYuMSAxOS43YzAgOSAuMSAyMS43IC4xIDMwLjZjMCA0LjggLjEgOC42IC4xIDEwYzAgNC4zLTMgOS41LTExLjUgOEMxMDYgMzkzLjYgNTkuOCAzMzAuOCA1OS44IDI1Ny40YzAtOTEuOCA3MC4yLTE2MS41IDE2Mi0xNjEuNXMxNjYuMiA2OS43IDE2Ni4yIDE2MS41Yy4xIDczLjQtNDQuNyAxMzYuMy0xMTAuNyAxNTguM2MtOC40IDEuNS0xMS41LTMuNy0xMS41LTh6bS05MC41LTU0LjhjLS4yLTEuNSAxLjEtMi44IDMtMy4yYzEuOS0uMiAzLjcgLjYgMy45IDEuOWMuMyAxLjMtMSAyLjYtMyAzYy0xLjkgLjQtMy43LS40LTMuOS0xLjd6bS05LjEgMy4yYy0yLjIgLjItMy43LS45LTMuNy0yLjRjMC0xLjMgMS41LTIuNCAzLjUtMi40YzEuOS0uMiAzLjcgLjkgMy43IDIuNGMwIDEuMy0xLjUgMi40LTMuNSAyLjR6bS0xNC4zLTIuMmMtMS45LS40LTMuMi0xLjktMi44LTMuMnMyLjQtMS45IDQuMS0xLjVjMiAuNiAzLjMgMi4xIDIuOCAzLjRjLS40IDEuMy0yLjQgMS45LTQuMSAxLjN6bS0xMi41LTcuM2MtMS41LTEuMy0xLjktMy4yLS45LTQuMWMuOS0xLjEgMi44LS45IDQuMyAuNmMxLjMgMS4zIDEuOCAzLjMgLjkgNC4xYy0uOSAxLjEtMi44IC45LTQuMy0uNnptLTguNS0xMGMtMS4xLTEuNS0xLjEtMy4yIDAtMy45YzEuMS0uOSAyLjgtLjIgMy43IDEuM2MxLjEgMS41IDEuMSAzLjMgMCA0LjFjLS45IC42LTIuNiAwLTMuNy0xLjV6bS02LjMtOC44Yy0xLjEtMS4zLTEuMy0yLjgtLjQtMy41Yy45LS45IDIuNC0uNCAzLjUgLjZjMS4xIDEuMyAxLjMgMi44IC40IDMuNWMtLjkgLjktMi40IC40LTMuNS0uNnptLTYtNi40Yy0xLjMtLjYtMS45LTEuNy0xLjUtMi42Yy40LS42IDEuNS0uOSAyLjgtLjRjMS4zIC43IDEuOSAxLjggMS41IDIuNmMtLjQgLjktMS43IDEuMS0yLjggLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUdpdGxhYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NnptMzM3LjUgMTIuNWw0NC42IDExNi40IC40IDEuMmM1LjYgMTYuOCA3LjIgMzUuMiAyLjMgNTIuNWMtNSAxNy4yLTE1LjQgMzIuNC0yOS44IDQzLjNsLS4yIC4xLTY4LjQgNTEuMi01NC4xIDQwLjljLS41IC4yLTEuMSAuNS0xLjcgLjhjLTIgMS00LjQgMi02LjcgMmMtMyAwLTYuOC0xLjgtOC4zLTIuOGwtNTQuMi00MC45TDkzLjUgMzIyLjNsLS40LS4zLS4yLS4xYy0xNC4zLTEwLjgtMjQuOC0yNi0yOS43LTQzLjNzLTQuMi0zNS43IDIuMi01Mi41bC41LTEuMiA0NC43LTExNi40Yy45LTIuMyAyLjUtNC4zIDQuNS01LjZjMS42LTEgMy40LTEuNiA1LjItMS44YzEuMy0uNyAyLjEtLjQgMy40IC4xYy42IC4yIDEuMiAuNSAyIC43YzEgLjQgMS42IC45IDIuNCAxLjVjLjYgLjQgMS4yIDEgMi4xIDEuNWMxLjIgMS40IDIuMiAzIDIuNyA0LjhsMjkuMiA5Mi4ySDI4NWwzMC4yLTkyLjJjLjUtMS44IDEuNC0zLjQgMi42LTQuOHMyLjgtMi40IDQuNS0zLjFjMS43LS42IDMuNi0uOSA1LjQtLjdzMy42IC44IDUuMiAxLjhjMiAxLjMgMy43IDMuMyA0LjYgNS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVHb29nbGVQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZ6TTY0IDI1NmMwLTU1LjMgNDQuNy0xMDAgMTAwLTEwMGMyNyAwIDQ5LjUgOS44IDY3IDI2LjJsLTI3LjEgMjYuMWMtNy40LTcuMS0yMC4zLTE1LjQtMzkuOC0xNS40Yy0zNC4xIDAtNjEuOSAyOC4yLTYxLjkgNjMuMmMwIDM0LjkgMjcuOCA2My4yIDYxLjkgNjMuMmMzOS42IDAgNTQuNC0yOC41IDU2LjgtNDMuMUgxNjRWMjQxLjhoOTQuNGMxIDUgMS42IDEwLjEgMS42IDE2LjZjMCA1Ny4xLTM4LjMgOTcuNi05NiA5Ny42Yy01NS4zIDAtMTAwLTQ0LjctMTAwLTEwMHptMjkxIDE4LjJ2MjlIMzI1Ljh2LTI5aC0yOVYyNDVoMjlWMjE2SDM1NXYyOWgyOXYyOS4ySDM1NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlSGFja2VyTmV3cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0yMSAyMjkuMmMwIDAgLjEtLjEgLjEtLjJzLjEtLjIgLjItLjJjMCAuMSAwIC4zLS4xIC40SDIxek0yMzkuMiAzODRIMjA3LjhWMjgxLjNMMTI4IDEyOGgzNy4zYzQxLjUgNzcuNyA0OC4xIDk1LjggNTQuMSAxMTJjMS42IDQuMyAzLjEgOC41IDUuMiAxMy42YzMuMi03IDUuMS0xMS45IDcuMS0xNy4zYzUuOS0xNS4zIDEyLjgtMzMuMiA1My41LTEwOC4zSDMyMEwyMzkuMiAyODMuMVYzODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUluc3RhZ3JhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTQuNCAyMTEuN2E1My4zIDUzLjMgMCAxIDAgNTkuMyA4OC43IDUzLjMgNTMuMyAwIDEgMCAtNTkuMy04OC43em0xNDIuMy02OC40Yy01LjItNS4yLTExLjUtOS4zLTE4LjQtMTJjLTE4LjEtNy4xLTU3LjYtNi44LTgzLjEtNi41Yy00LjEgMC03LjkgLjEtMTEuMiAuMWMtMy4zIDAtNy4yIDAtMTEuNC0uMWMtMjUuNS0uMy02NC44LS43LTgyLjkgNi41Yy02LjkgMi43LTEzLjEgNi44LTE4LjQgMTJzLTkuMyAxMS41LTEyIDE4LjRjLTcuMSAxOC4xLTYuNyA1Ny43LTYuNSA4My4yYzAgNC4xIC4xIDcuOSAuMSAxMS4xczAgNy0uMSAxMS4xYy0uMiAyNS41LS42IDY1LjEgNi41IDgzLjJjMi43IDYuOSA2LjggMTMuMSAxMiAxOC40czExLjUgOS4zIDE4LjQgMTJjMTguMSA3LjEgNTcuNiA2LjggODMuMSA2LjVjNC4xIDAgNy45LS4xIDExLjItLjFjMy4zIDAgNy4yIDAgMTEuNCAuMWMyNS41IC4zIDY0LjggLjcgODIuOS02LjVjNi45LTIuNyAxMy4xLTYuOCAxOC40LTEyczkuMy0xMS41IDEyLTE4LjRjNy4yLTE4IDYuOC01Ny40IDYuNS04M2MwLTQuMi0uMS04LjEtLjEtMTEuNHMwLTcuMSAuMS0xMS40Yy4zLTI1LjUgLjctNjQuOS02LjUtODNsMCAwYy0yLjctNi45LTYuOC0xMy4xLTEyLTE4LjR6bS02Ny4xIDQ0LjVBODIgODIgMCAxIDEgMTc4LjQgMzI0LjJhODIgODIgMCAxIDEgOTEuMS0xMzYuNHptMjkuMi0xLjNjLTMuMS0yLjEtNS42LTUuMS03LjEtOC42cy0xLjgtNy4zLTEuMS0xMS4xczIuNi03LjEgNS4yLTkuOHM2LjEtNC41IDkuOC01LjJzNy42LS40IDExLjEgMS4xczYuNSAzLjkgOC42IDdzMy4yIDYuOCAzLjIgMTAuNmMwIDIuNS0uNSA1LTEuNCA3LjNzLTIuNCA0LjQtNC4xIDYuMnMtMy45IDMuMi02LjIgNC4ycy00LjggMS41LTcuMyAxLjVsMCAwYy0zLjggMC03LjUtMS4xLTEwLjYtMy4yek00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0zNTcgMzg5Yy0xOC43IDE4LjctNDEuNCAyNC42LTY3IDI1LjljLTI2LjQgMS41LTEwNS42IDEuNS0xMzIgMGMtMjUuNi0xLjMtNDguMy03LjItNjctMjUuOXMtMjQuNi00MS40LTI1LjgtNjdjLTEuNS0yNi40LTEuNS0xMDUuNiAwLTEzMmMxLjMtMjUuNiA3LjEtNDguMyAyNS44LTY3czQxLjUtMjQuNiA2Ny0yNS44YzI2LjQtMS41IDEwNS42LTEuNSAxMzIgMGMyNS42IDEuMyA0OC4zIDcuMSA2NyAyNS44czI0LjYgNDEuNCAyNS44IDY3YzEuNSAyNi4zIDEuNSAxMDUuNCAwIDEzMS45Yy0xLjMgMjUuNi03LjEgNDguMy0yNS44IDY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVKcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0xODAuOSA0NDQuOWMtMzMuNyAwLTUzLjItMTcuNC02My4yLTM4LjVMMTUyIDM4NS43YzYuNiAxMS43IDEyLjYgMjEuNiAyNy4xIDIxLjZjMTMuOCAwIDIyLjYtNS40IDIyLjYtMjYuNVYyMzcuN2g0Mi4xVjM4MS40YzAgNDMuNi0yNS42IDYzLjUtNjIuOSA2My41em04NS44LTQzTDMwMSAzODIuMWM5IDE0LjcgMjAuOCAyNS42IDQxLjUgMjUuNmMxNy40IDAgMjguNi04LjcgMjguNi0yMC44YzAtMTQuNC0xMS40LTE5LjUtMzAuNy0yOGwtMTAuNS00LjVjLTMwLjQtMTIuOS01MC41LTI5LjItNTAuNS02My41YzAtMzEuNiAyNC4xLTU1LjYgNjEuNi01NS42YzI2LjggMCA0NiA5LjMgNTkuOCAzMy43TDM2OCAyOTBjLTcuMi0xMi45LTE1LTE4LTI3LjEtMThjLTEyLjMgMC0yMC4xIDcuOC0yMC4xIDE4YzAgMTIuNiA3LjggMTcuNyAyNS45IDI1LjZsMTAuNSA0LjVjMzUuOCAxNS4zIDU1LjkgMzEgNTUuOSA2Ni4yYzAgMzcuOC0yOS44IDU4LjYtNjkuNyA1OC42Yy0zOS4xIDAtNjQuNC0xOC42LTc2LjctNDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUxhc3RmbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0yMTAuNyAyODAuOGMtMS44LTUuNS0zLjQtMTAuOC01LTE1LjljLTEyLjktNDEuOS0yMS02OC40LTU4LTY4LjRjLTIyLjQgMC00NS4xIDE2LjEtNDUuMSA2MS4yYzAgMzUuMiAxOCA1Ny4yIDQzLjMgNTcuMmMyOC42IDAgNDcuNi0yMS4zIDQ3LjYtMjEuM2wxMS43IDMxLjlzLTE5LjggMTkuNC02MS4yIDE5LjRjLTUxLjMgMC03OS45LTMwLjEtNzkuOS04NS44YzAtNTcuOSAyOC42LTkyIDgyLjUtOTJjNjcuOSAwIDc5LjMgMzUuMyA5Ni40IDg4LjRjMS40IDQuNCAyLjkgOC45IDQuNCAxMy41YzguOCAyNi44IDI0LjIgNDYuMiA2MS4yIDQ2LjJjMjQuOSAwIDM4LjEtNS41IDM4LjEtMTkuMWMwLTE3LjUtMTYuOS0yMS4yLTQwLTI2LjRjLTMuMi0uNy02LjUtMS40LTkuOS0yLjJjLTMwLjQtNy4zLTQyLjUtMjMuMS00Mi41LTQ4YzAtNDAgMzIuMy01Mi40IDY1LjItNTIuNGMzNy40IDAgNjAuMSAxMy42IDYzIDQ2LjZsLTM2LjcgNC40Yy0xLjUtMTUuOC0xMS0yMi40LTI4LjYtMjIuNGMtMTYuMSAwLTI2IDcuMy0yNiAxOS44YzAgMTEgNC44IDE3LjYgMjAuOSAyMS4zYzIuMiAuNSA0LjUgMSA2LjcgMS40YzMxLjEgNi41IDY1LjEgMTMuNyA2NS4xIDU2LjFjLjEgMzYuNy0zMC43IDUwLjYtNzYuMSA1MC42Yy02My40IDAtODUuNC0yOC42LTk3LjEtNjQuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlTGV0dGVyYm94ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgzODR6TTEwNS4xIDE4N0M2Ni40IDE4NyAzNSAyMTguMyAzNSAyNTdzMzEuNCA3MCA3MC4xIDcwYzI0LjggMCA0Ni41LTEyLjggNTktMzIuMmwuNS0uNy0uNC0uNmMtNi41LTEwLjYtMTAuMi0yMy4xLTEwLjItMzYuNWMwLTEzLjYgMy45LTI2LjMgMTAuNi0zNy4xYy0xMi40LTE5LjgtMzQuNC0zMi45LTU5LjUtMzIuOXpNMjI0IDE4N2MtMjQuOCAwLTQ2LjUgMTIuOC01OSAzMi4ybC0uNSAuNyAuNCAuNmM2LjUgMTAuNiAxMC4yIDIzLjEgMTAuMiAzNi41YzAgMTMuNi0zLjkgMjYuMy0xMC42IDM3LjFDMTc2LjkgMzEzLjggMTk4LjkgMzI3IDIyNCAzMjdjMjQuOCAwIDQ2LjUtMTIuOCA1OS0zMi4ybC41LS43LS40LS42Yy02LjUtMTAuNi0xMC4yLTIzLjEtMTAuMi0zNi41YzAtMTMuNiAzLjktMjYuMyAxMC42LTM3LjFDMjcxLjEgMjAwLjIgMjQ5LjEgMTg3IDIyNCAxODd6bTExOC45IDBjLTI0LjggMC00Ni41IDEyLjgtNTkgMzIuMmwtLjUgLjcgLjQgLjZjNi41IDEwLjYgMTAuMiAyMy4xIDEwLjIgMzYuNWMwIDEzLjYtMy45IDI2LjMtMTAuNiAzNy4xYzEyLjQgMTkuOCAzNC40IDMyLjkgNTkuNSAzMi45YzM4LjcgMCA3MC4xLTMxLjMgNzAuMS03MHMtMzEuNC03MC03MC4xLTcwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVPZG5va2xhc3NuaWtpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzcuMWEzOS45IDM5LjkgMCAxIDAgMCA3OS43IDM5LjkgMzkuOSAwIDEgMCAwLTc5Ljd6TTM4NCAzMkg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTIyNCA5NS45QTgxIDgxIDAgMSAxIDIyNCAyNThhODEgODEgMCAxIDEgMC0xNjIuMXptNTkuMyAxNjguM2MxNi44LTEzLjIgMjkuNS01LjUgMzQuMSAzLjZjNy44IDE2LTEuMSAyMy43LTIxLjUgMzdjLTE3LjEgMTAuOS00MC43IDE1LjItNTYuMiAxNi44bDEzIDEyLjkgNDcuNyA0Ny43YzE3LjQgMTcuOS0xMSA0NS44LTI4LjYgMjguNmMtMTItMTIuMi0yOS41LTI5LjctNDcuNy00Ny45bDAgMC00Ny43IDQ3LjljLTE3LjcgMTcuMi00Ni0xMS0yOC40LTI4LjZjMy43LTMuNyA3LjktNy45IDEyLjUtMTIuNWMxMC40LTEwLjQgMjIuNi0yMi43IDM1LjItMzUuMmwxMi45LTEyLjljLTE1LjQtMS42LTM5LjMtNS43LTU2LjYtMTYuOGMtMjAuMy0xMy4zLTI5LjMtMjAuOS0yMS40LTM3YzQuNi05LjEgMTcuMy0xNi44IDM0LjEtMy42YzAgMCAyMi43IDE4IDU5LjMgMThzNTkuMy0xOCA1OS4zLTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVQaWVkUGlwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNDE5TDAgNDc5LjJsLjgtMzI4Qy44IDg1LjMgNTQgMzIgMTIwIDMyaDMyNy4yYy05MyAyOC45LTE4OS45IDk0LjItMjUzLjkgMTY4LjZDMTIyLjcgMjgyIDgyLjYgMzM4IDMyIDQxOU00NDggMzJTMzA1LjIgOTguOCAyNjEuNiAxOTkuMWMtMjMuMiA1My42LTI4LjkgMTE4LjEtNzEgMTU4LjYtMjguOSAyNy44LTY5LjggMzguMi0xMDUuMyA1Ni4zLTIzLjIgMTItNjYuNCA0MC41LTg0LjkgNjZoMzI4LjRjNjYgMCAxMTkuMy01My4zIDExOS4zLTExOS4yLS4xIDAtLjEtMzI4LjgtLjEtMzI4Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVBpbnRlcmVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzJINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRoNzIuNmwtMi4yLS44Yy01LjQtNDguMS0zLjEtNTcuNSAxNS43LTEzNC43YzMuOS0xNiA4LjUtMzUgMTMuOS01Ny45YzAgMC03LjMtMTQuOC03LjMtMzYuNWMwLTcwLjcgNzUuNS03OCA3NS41LTI1YzAgMTMuNS01LjQgMzEuMS0xMS4yIDQ5LjhjLTMuMyAxMC42LTYuNiAyMS41LTkuMSAzMmMtNS43IDI0LjUgMTIuMyA0NC40IDM2LjQgNDQuNGM0My43IDAgNzcuMi00NiA3Ny4yLTExMi40YzAtNTguOC00Mi4zLTk5LjktMTAyLjYtOTkuOUMxNTMgMTM5IDExMiAxOTEuNCAxMTIgMjQ1LjZjMCAyMS4xIDguMiA0My43IDE4LjMgNTZjMiAyLjQgMi4zIDQuNSAxLjcgN2MtMS4xIDQuNy0zLjEgMTIuOS00LjcgMTkuMmMtMSA0LTEuOCA3LjMtMi4xIDguNmMtMS4xIDQuNS0zLjUgNS41LTguMiAzLjNjLTMwLjYtMTQuMy00OS44LTU5LjEtNDkuOC05NS4xQzY3LjIgMTY3LjEgMTIzLjQgOTYgMjI5LjQgOTZjODUuMiAwIDE1MS40IDYwLjcgMTUxLjQgMTQxLjhjMCA4NC42LTUzLjMgMTUyLjctMTI3LjQgMTUyLjdjLTI0LjkgMC00OC4zLTEyLjktNTYuMy0yOC4yYzAgMC0xMi4zIDQ2LjktMTUuMyA1OC40Yy01IDE5LjMtMTcuNiA0Mi45LTI3LjQgNTkuM0gzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVJlZGRpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMmwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJ6TTMwNS45IDE2Ni40YzIwLjYgMCAzNy4zLTE2LjcgMzcuMy0zNy4zcy0xNi43LTM3LjMtMzcuMy0zNy4zYy0xOCAwLTMzLjEgMTIuOC0zNi42IDI5LjhjLTMwLjIgMy4yLTUzLjggMjguOC01My44IDU5LjlsMCAuMmMtMzIuOCAxLjQtNjIuOCAxMC43LTg2LjYgMjUuNWMtOC44LTYuOC0xOS45LTEwLjktMzItMTAuOWMtMjguOSAwLTUyLjMgMjMuNC01Mi4zIDUyLjNjMCAyMSAxMi4zIDM5IDMwLjEgNDcuNGMxLjcgNjAuNyA2Ny45IDEwOS42IDE0OS4zIDEwOS42czE0Ny42LTQ4LjkgMTQ5LjMtMTA5LjdjMTcuNy04LjQgMjkuOS0yNi40IDI5LjktNDcuM2MwLTI4LjktMjMuNC01Mi4zLTUyLjMtNTIuM2MtMTIgMC0yMyA0LTMxLjkgMTAuOGMtMjQtMTQuOS01NC4zLTI0LjItODcuNS0yNS40bDAtLjFjMC0yMi4yIDE2LjUtNDAuNyAzNy45LTQzLjdsMCAwYzMuOSAxNi41IDE4LjcgMjguNyAzNi4zIDI4Ljd6TTE1NSAyNDguMWMxNC42IDAgMjUuOCAxNS40IDI1IDM0LjRzLTExLjggMjUuOS0yNi41IDI1LjlzLTI3LjUtNy43LTI2LjYtMjYuN3MxMy41LTMzLjUgMjguMS0zMy41em0xNjYuNCAzMy41Yy45IDE5LTEyIDI2LjctMjYuNiAyNi43cy0yNS42LTYuOS0yNi41LTI1LjljLS45LTE5IDEwLjMtMzQuNCAyNS0zNC40czI3LjMgMTQuNiAyOC4xIDMzLjV6bS00Mi4xIDQ5LjZjLTkgMjEuNS0zMC4zIDM2LjctNTUuMSAzNi43cy00Ni4xLTE1LjEtNTUuMS0zNi43Yy0xLjEtMi42IC43LTUuNCAzLjQtNS43YzE2LjEtMS42IDMzLjUtMi41IDUxLjctMi41czM1LjYgLjkgNTEuNyAyLjVjMi43IC4zIDQuNSAzLjEgMy40IDUuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlU25hcGNoYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0LDMySDY0QTY0LDY0LDAsMCwwLDAsOTZWNDE2YTY0LDY0LDAsMCwwLDY0LDY0SDM4NGE2NCw2NCwwLDAsMCw2NC02NFY5NkE2NCw2NCwwLDAsMCwzODQsMzJabS0zLjkwNywzMTkuMzA5LS4wODMuMWEzMi4zNjQsMzIuMzY0LDAsMCwxLTguNzE3LDYuODIzLDkwLjI2LDkwLjI2LDAsMCwxLTIwLjU4Niw4LjIsMTIuNjk0LDEyLjY5NCwwLDAsMC0zLjg1MiwxLjc2Yy0yLjE1OCwxLjkwOS0yLjEsNC42NC00LjQsOC41NWEyMy4xMzcsMjMuMTM3LDAsMCwxLTYuODQsNy40NzFjLTYuNzA3LDQuNjMyLTE0LjI0NCw0LjkyMy0yMi4yMyw1LjIzLTcuMjE0LjI3NC0xNS4zOS41ODEtMjQuNzI5LDMuNjY5LTMuNzYxLDEuMjQ1LTcuNzUzLDMuNjk0LTEyLjM3Nyw2LjUzMy0xMS4yNjUsNi45LTI2LjY4LDE2LjM1My01Mi4zLDE2LjM1M3MtNDAuOTI1LTkuNC01Mi4xMDYtMTYuMjc5Yy00LjY1Ny0yLjg4OC04LjY3NS01LjM2Mi0xMi41NDMtNi42NC05LjMzOS0zLjA4LTE3LjUxNi0zLjQtMjQuNzI5LTMuNjctNy45ODYtLjMwNy0xNS41MjMtLjYtMjIuMjMxLTUuMjI5YTIzLjA4NSwyMy4wODUsMCwwLDEtNi4wMS02LjExYy0zLjItNC42MzItMi44NTUtNy44LTUuMjU0LTkuODk1YTEzLjQyOCwxMy40MjgsMCwwLDAtNC4xLTEuODM0LDg5Ljk4Niw4OS45ODYsMCwwLDEtMjAuMzEzLTguMTI3LDMyLjkwNSwzMi45MDUsMCwwLDEtOC4zLTYuMjg0Yy02LjU4My02Ljc1Ny04LjI3Ni0xNC43NzYtNS42ODYtMjEuODI0LDMuNDM2LTkuMzM4LDExLjU3MS0xMi4xMTEsMTkuNC0xNi4yNjIsMTQuNzc2LTguMDI3LDI2LjM0OC0xOC4wNTUsMzQuNDMzLTI5Ljg4NGE2OC4yMzYsNjguMjM2LDAsMCwwLDUuOTg1LTEwLjU2N2MuNzg5LTIuMTU4Ljc3Mi0zLjMyOS4yNDEtNC40MTZhNy4zODYsNy4zODYsMCwwLDAtMi4yMDgtMi4yMTdjLTIuNTMyLTEuNjc2LTUuMTEzLTMuMzUzLTYuODgyLTQuNS0zLjI3LTIuMTQxLTUuODY4LTMuODE4LTcuNTI5LTQuOTgtNi4yNjctNC4zODMtMTAuNjUtOS4wNC0xMy40LTE0LjI0NWEyOC40LDI4LjQsMCwwLDEtMS4zNjktMjMuNTg0YzQuMTM0LTEwLjkyNCwxNC40NjktMTcuNzA2LDI2Ljk3OC0xNy43MDZhMzcuMTQxLDM3LjE0MSwwLDAsMSw3Ljg0NS44M2MuNjg5LjE1LDEuMzcuMzA3LDIuMDQyLjQ4Mi0uMTA4LTcuNDMuMDU4LTE1LjM1Ny43MjItMjMuMTE5LDIuMzU4LTI3LjI2MSwxMS45MTItNDEuNTg5LDIxLjg3NC01Mi45OTRhODYuODM2LDg2LjgzNiwwLDAsMSwyMi4yOC0xNy45MzFDMTg4LjI1NCwxMDAuMzgzLDIwNS4zMTIsOTYsMjI0LDk2czM1LjgyOCw0LjM4Myw1MC45NDQsMTMuMDE2YTg3LjE2OSw4Ny4xNjksMCwwLDEsMjIuMjM5LDE3LjljOS45NjEsMTEuNDA2LDE5LjUxNiwyNS43MDksMjEuODc0LDUyLjk5NWEyMzEuMTk0LDIzMS4xOTQsMCwwLDEsLjcxMywyMy4xMThjLjY3My0uMTc0LDEuMzYyLS4zMzIsMi4wNTEtLjQ4MWEzNy4xMzEsMzcuMTMxLDAsMCwxLDcuODQ0LS44M2MxMi41LDAsMjIuODIsNi43ODIsMjYuOTcxLDE3LjcwNmEyOC4zNywyOC4zNywwLDAsMS0xLjQsMjMuNTU5Yy0yLjc0LDUuMi03LjEyMyw5Ljg2MS0xMy4zOSwxNC4yNDQtMS42NjgsMS4xODctNC4yNTgsMi44NjQtNy41MjksNC45ODEtMS44MzUsMS4xODctNC41NDEsMi45NDctNy4xNjQsNC42ODJhNi44NTYsNi44NTYsMCwwLDAtMS45NTEsMi4wMzRjLS41MDYsMS4wNDYtLjUzOSwyLjE5MS4xNjYsNC4yMDhhNjkuMDE1LDY5LjAxNSwwLDAsMCw2LjA4NSwxMC43OTJjOC4yNjgsMTIuMSwyMC4xODgsMjIuMzEzLDM1LjQ1NCwzMC40MDcsMS40ODYuNzcyLDIuOTgsMS41LDQuNDQxLDIuMjU4LjcyMi4zMzIsMS41NjkuNzYzLDIuNDkxLDEuMyw0LjksMi43MjMsOS4yLDYuMDEsMTEuNDU1LDEyLjE1M0MzODcuODIxLDMzNi45MTUsMzg2LjI2OSwzNDQuNywzODAuMDkzLDM1MS4zMDlabS0xNi43MTktMTguNDYxYy01MC4zMTMtMjQuMzE0LTU4LjMzMi02MS45MTgtNTguNjg5LTY0Ljc0OS0uNDMxLTMuMzc5LS45MjEtNi4wMzUsMi44MDYtOS40NzIsMy41OTQtMy4zMjgsMTkuNTQxLTEzLjE5LDIzLjk2NS0xNi4yNzgsNy4zMy01LjExNCwxMC41MzQtMTAuMjE5LDguMTYtMTYuNDk1LTEuNjYtNC4zMTYtNS42ODYtNS45NzYtOS45NjEtNS45NzZhMTguNSwxOC41LDAsMCwwLTMuOTkzLjQ0OGMtOC4wMzUsMS43NDMtMTUuODM4LDUuNzY5LTIwLjM1NCw2Ljg1N2E3LjEsNy4xLDAsMCwxLTEuNjYuMjI0Yy0yLjQwOCwwLTMuMjc5LTEuMDcxLTMuMDg4LTMuOTY4LjU2NC04Ljc4MywxLjc1OS0yNS45MjUuMzczLTQxLjkzNy0xLjg4NC0yMi4wMzItOC45OS0zMi45NDgtMTcuNDMyLTQyLjYtNC4wNTEtNC42MjQtMjMuMTM1LTI0LjY1NC01OS41MzYtMjQuNjU0UzE2OC41MywxMzQuMzU5LDE2NC40NzksMTM5Yy04LjQzNCw5LjY1NC0xNS41MzEsMjAuNTctMTcuNDMyLDQyLjYtMS4zODYsMTYuMDEzLS4xNDEsMzMuMTQ3LjM3Myw0MS45MzcuMTY2LDIuNzU2LS42OCwzLjk2OC0zLjA4OCwzLjk2OGE3LjEsNy4xLDAsMCwxLTEuNjYtLjIyNGMtNC41MDctMS4wODctMTIuMzEtNS4xMTMtMjAuMzQ2LTYuODU2YTE4LjQ5NCwxOC40OTQsMCwwLDAtMy45OTMtLjQ0OWMtNC4yNSwwLTguMywxLjYzNi05Ljk2MSw1Ljk3Ny0yLjM3NCw2LjI3Ni44NDcsMTEuMzgxLDguMTY4LDE2LjQ5NCw0LjQyNSwzLjA4OCwyMC4zNzEsMTIuOTU4LDIzLjk2NiwxNi4yNzksMy43MTksMy40MzcsMy4yMzcsNi4wOTMsMi44MDUsOS40NzEtLjM1NiwyLjc5LTguMzg0LDQwLjM5NC01OC42ODksNjQuNzQ5LTIuOTQ2LDEuNDI4LTcuOTYsNC40NS44OCw5LjMzMSwxMy44OCw3LjYyOCwyMy4xMTEsNi44MDcsMzAuMywxMS40Myw2LjA5MywzLjkyNywyLjUsMTIuMzk0LDYuOTIzLDE1LjQ0OSw1LjQ1NCwzLjc2LDIxLjU4My0uMjY2LDQyLjMzNSw2LjYsMTcuNDMzLDUuNzQ0LDI4LjExNiwyMi4wMTUsNTguOTYzLDIyLjAxNXM0MS43ODgtMTYuMyw1OC45MzgtMjEuOTczYzIwLjc5NS02Ljg2NSwzNi44OS0yLjgzOSw0Mi4zMzYtNi42LDQuNDMzLTMuMDU1LjgyMi0xMS41MjIsNi45MjMtMTUuNDQ4LDcuMTgxLTQuNjI0LDE2LjQxMS0zLjgsMzAuMy0xMS40NzJDMzcxLjM2LDMzNy4zNTUsMzY2LjM0NiwzMzQuMzMzLDM2My4zNzQsMzMyLjg0OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlU3RlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY1LjYgMzA5LjFjMTguNiA3LjcgMjcuMyAyOC45IDE5LjYgNDcuNHMtMjkgMjcuMi00Ny42IDE5LjRsLTI4LjUtMTEuOGM1IDEwLjYgMTMuOCAxOS40IDI1LjQgMjQuMmMyNS4yIDEwLjUgNTQuMS0xLjQgNjQuNi0yNi41YzUuMS0xMi4xIDUuMS0yNS41IC4xLTM3LjdjLTUuMS0xMi4xLTE0LjUtMjEuNi0yNi43LTI2LjdjLTEyLjEtNS0yNS00LjgtMzYuNC0uNWwyOS41IDEyLjJ6TTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjI0MC43bDExNi42IDQ4LjFjMTItOC4yIDI2LjItMTIuMSA0MC43LTExLjNsNTUuNC04MC4ydi0xLjFjMC00OC4yIDM5LjMtODcuNSA4Ny42LTg3LjVzODcuNiAzOS4zIDg3LjYgODcuNWMwIDQ5LjItNDAuOSA4OC43LTg5LjYgODcuNWwtNzkgNTYuM2MxLjYgMzguNS0yOS4xIDY4LjgtNjUuNyA2OC44Yy0zMS44IDAtNTguNS0yMi43LTY0LjUtNTIuN0wwIDMxOS4yVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZ6TTI0MS45IDE5Ni4yYTU4LjQgNTguNCAwIDEgMCAxMTYuOCAwIDU4LjQgNTguNCAwIDEgMCAtMTE2LjggMHptMTQuNi0uMWE0My45IDQzLjkgMCAxIDEgODcuOCAwIDQzLjkgNDMuOSAwIDEgMSAtODcuOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVUaHJlYWRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjk0LjIgMjQ0LjNjMTkuNSA5LjMgMzMuNyAyMy41IDQxLjIgNDAuOWMxMC40IDI0LjMgMTEuNCA2My45LTIwLjIgOTUuNGMtMjQuMiAyNC4xLTUzLjUgMzUtOTUuMSAzNS4zaC0uMmMtNDYuOC0uMy04Mi44LTE2LjEtMTA2LjktNDYuOEM5MS41IDM0MS44IDgwLjQgMzAzLjcgODAgMjU2di0uMS0uMWMuNC00Ny43IDExLjUtODUuNyAzMy0xMTMuMWMyNC4yLTMwLjcgNjAuMi00Ni41IDEwNi45LTQ2LjhoLjJjNDYuOSAuMyA4My4zIDE2IDEwOC4yIDQ2LjZjMTIuMyAxNS4xIDIxLjMgMzMuMyAyNyA1NC40bC0yNi45IDcuMmMtNC43LTE3LjItMTEuOS0zMS45LTIxLjQtNDMuNmMtMTkuNC0yMy45LTQ4LjctMzYuMS04Ny0zNi40Yy0zOCAuMy02Ni44IDEyLjUtODUuNSAzNi4yYy0xNy41IDIyLjMtMjYuNiA1NC40LTI2LjkgOTUuNWMuMyA0MS4xIDkuNCA3My4zIDI2LjkgOTUuNWMxOC43IDIzLjggNDcuNCAzNiA4NS41IDM2LjJjMzQuMy0uMyA1Ni45LTguNCA3NS44LTI3LjNjMjEuNS0yMS41IDIxLjEtNDcuOSAxNC4yLTY0Yy00LTkuNC0xMS40LTE3LjMtMjEuMy0yMy4zYy0yLjQgMTgtNy45IDMyLjItMTYuNSA0My4yYy0xMS40IDE0LjUtMjcuNyAyMi40LTQ4LjQgMjMuNWMtMTUuNyAuOS0zMC44LTIuOS00Mi42LTEwLjdjLTEzLjktOS4yLTIyLTIzLjItMjIuOS0zOS41Yy0xLjctMzIuMiAyMy44LTU1LjMgNjMuNS01Ny42YzE0LjEtLjggMjcuMy0uMiAzOS41IDEuOWMtMS42LTkuOS00LjktMTcuNy05LjgtMjMuNGMtNi43LTcuOC0xNy4xLTExLjgtMzAuOC0xMS45aC0uNGMtMTEgMC0yNiAzLjEtMzUuNiAxNy42bC0yMy0xNS44YzEyLjgtMTkuNCAzMy42LTMwLjEgNTguNS0zMC4xaC42YzQxLjggLjMgNjYuNiAyNi4zIDY5LjEgNzEuOGMxLjQgLjYgMi44IDEuMiA0LjIgMS45bC4xIC41em0tNzEuOCA2Ny41YzE3LS45IDM2LjQtNy42IDM5LjctNDguOGMtOC44LTEuOS0xOC42LTIuOS0yOS0yLjljLTMuMiAwLTYuNCAuMS05LjYgLjNjLTI4LjYgMS42LTM4LjEgMTUuNS0zNy40IDI3LjljLjkgMTYuNyAxOSAyNC41IDM2LjQgMjMuNmwtLjEtLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVR1bWJsciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0yNTYuOCA0MTZjLTc1LjUgMC05MS45LTU1LjUtOTEuOS04Ny45di05MEgxMzUuMmMtMy40IDAtNi4yLTIuOC02LjItNi4yVjE4OS40YzAtNC41IDIuOC04LjUgNy4xLTEwYzM4LjgtMTMuNyA1MC45LTQ3LjUgNTIuNy03My4yYy41LTYuOSA0LjEtMTAuMiAxMC0xMC4yaDQ0LjNjMy40IDAgNi4yIDIuOCA2LjIgNi4ydjcyaDUxLjljMy40IDAgNi4yIDIuOCA2LjIgNi4ydjUxLjFjMCAzLjQtMi44IDYuMi02LjIgNi4ySDI0OS4xVjMyMWMwIDIxLjQgMTQuOCAzMy41IDQyLjUgMjIuNGMzLTEuMiA1LjYtMiA4LTEuNGMyLjIgLjUgMy42IDIuMSA0LjYgNC45TDMxOCAzODcuMWMxIDMuMiAyIDYuNy0uMyA5LjFjLTguNSA5LjEtMzEuMiAxOS44LTYwLjkgMTkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlVHdpdHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTM1MS4zIDE5OS4zdjBjMCA4Ni43LTY2IDE4Ni42LTE4Ni42IDE4Ni42Yy0zNy4yIDAtNzEuNy0xMC44LTEwMC43LTI5LjRjNS4zIC42IDEwLjQgLjggMTUuOCAuOGMzMC43IDAgNTguOS0xMC40IDgxLjQtMjhjLTI4LjgtLjYtNTMtMTkuNS02MS4zLTQ1LjVjMTAuMSAxLjUgMTkuMiAxLjUgMjkuNi0xLjJjLTMwLTYuMS01Mi41LTMyLjUtNTIuNS02NC40di0uOGM4LjcgNC45IDE4LjkgNy45IDI5LjYgOC4zYy05LTYtMTYuNC0xNC4xLTIxLjUtMjMuNnMtNy44LTIwLjItNy43LTMxYzAtMTIuMiAzLjItMjMuNCA4LjktMzMuMWMzMi4zIDM5LjggODAuOCA2NS44IDEzNS4yIDY4LjZjLTkuMy00NC41IDI0LTgwLjYgNjQtODAuNmMxOC45IDAgMzUuOSA3LjkgNDcuOSAyMC43YzE0LjgtMi44IDI5LTguMyA0MS42LTE1LjhjLTQuOSAxNS4yLTE1LjIgMjgtMjguOCAzNi4xYzEzLjItMS40IDI2LTUuMSAzNy44LTEwLjJjLTguOSAxMy4xLTIwLjEgMjQuNy0zMi45IDM0Yy4yIDIuOCAuMiA1LjcgLjIgOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVVcHdvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTYgMzJsMzM2IDBjMzAuOSAwIDU2IDI1LjEgNTYgNTZsMCAzMzZjMCAzMC45LTI1LjEgNTYtNTYgNTZMNTYgNDgwYy0zMC45IDAtNTYtMjUuMS01Ni01NkwwIDg4QzAgNTcuMSAyNS4xIDMyIDU2IDMyek0yNzAuOSAyNzQuMmM2LjYtNTIuOSAyNS45LTY5LjUgNTEuNC02OS41YzI1LjMgMCA0NC45IDIwLjIgNDQuOSA0OS43cy0xOS43IDQ5LjctNDQuOSA0OS43Yy0yNy45IDAtNDYuMy0yMS41LTUxLjQtMjkuOXptLTI2LjctNDEuOGMtOC4yLTE1LjUtMTQuMy0zNi4zLTE5LjItNTUuNmwtMjkuNyAwLTMzLjIgMCAwIDc4LjFjMCAyOC40LTEyLjkgNDkuNC0zOC4yIDQ5LjRzLTM5LjgtMjAuOS0zOS44LTQ5LjNsLjMtNzguMS0zNi4yIDAgMCA3OC4xYzAgMjIuOCA3LjQgNDMuNSAyMC45IDU4LjJjMTMuOSAxNS4yIDMyLjggMjMuMiA1NC44IDIzLjJjNDMuNyAwIDc0LjItMzMuNSA3NC4yLTgxLjVsMC01Mi41YzQuNiAxNy4zIDE1LjQgNTAuNSAzNi4yIDc5LjdMMjE1IDM5Mi42bDM2LjggMCAxMi44LTc4LjRjNC4yIDMuNSA4LjcgNi42IDEzLjQgOS40YzEyLjMgNy44IDI2LjQgMTIuMiA0MC45IDEyLjZsLjEgMGMuNSAwIDEuMSAwIDEuNiAwYy42IDAgMS4xIDAgMS43IDBjNDUuMSAwIDgwLjktMzQuOSA4MC45LTgxLjlzLTM1LjktODIuMi04MC45LTgyLjJjLTQ1LjQgMC03MC45IDI5LjctNzguMSA2MC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVWaWFkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NnpNMTE4LjMgMzgxLjJjLTY4LTczLjYtMTkuOC0xOTYuMSA4MS4yLTE5Ni4xYzEzLjMgMCAyNi42IDIuMSAzOS4xIDYuN2MtNC4zIDguNC03LjMgMTcuNi04LjQgMjcuMWMtOS43LTQuMS0yMC4yLTYtMzAuNy02Yy00OC44IDAtODQuNiA0MS43LTg0LjYgODguOWMwIDQzIDI4LjUgNzguNyA2OS41IDg1LjljNjEuNS0yNCA3Mi45LTExNy42IDcyLjktMTc1djBjMC03LjMgMC0xNC44LS42LTIyLjFjLTExLjItMzIuOS0yNi42LTY0LjYtNDQuMi05NC41YzI3LjEgMTguMyA0MS45IDYyLjUgNDQuMiA5NC4xdi40YzcuNyAyMi41IDExLjggNDYuMiAxMS44IDcwYzAgNTQuMS0yMS45IDk5LTY4LjMgMTI4LjJsLTIuNCAuMmM1MCAxIDg2LjItMzguNiA4Ni4yLTg3LjJjMC0xMi4yLTIuMS0yNC4zLTYuOS0zNS43YzkuNS0xLjkgMTguNS01LjYgMjYuNC0xMC41YzE1LjMgMzYuNiAxMi42IDg3LjMtMjIuOCAxMjUuNmMtNDIuNCA0Ni4yLTEyMCA0Ni42LTE2Mi40IDB6TTI3NC42IDIxNy42YzIxLjktMTIgNDkuNi0zMC43IDYyLjMtNTNjMS41LTMgNC4xLTguNiA0LjUtMTJjLTEyLjUgMjcuOS00NC4yIDQ5LjgtNzMuOSA1Ni43Yy00LjctNy4zLTcuNS0xNS41LTcuNS0yNC4zYzAtMTAuMyA1LjItMjQuMSAxMi45LTMxLjZjOC4zLTcuOSAxOC0xMC45IDI3LjktMTQuMWMxNi01LjEgMzIuNS0xMC4zIDQ0LjUtMzUuOWMzMi41IDQ2LjIgMTMuMSAxMzAuMy0zNi4zIDEzMC4zYy0xMy4zIDAtMjUuMS03LjEtMzQuNC0xNi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVWaW1lbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0zMTguNSAzMDkuNUMyNzUgMzY2IDIzOC4yIDM5NC4zIDIwOC4xIDM5NC4zYy0xOC43IDAtMzQuNC0xNy4yLTQ3LjMtNTEuNmMtMy44LTEzLjktNy4zLTI2LjktMTAuNS0zOWMtMTguMi02OC4zLTI4LjYtMTA3LjQtNDYuMi0xMDcuNGMtMi40IDAtMTAuOCA1LTI1LjEgMTUuMUw2NCAxOTJjNy02LjEgMTMuOS0xMi40IDIwLjYtMTguNWMyOS4xLTI2LjMgNTUuNi01MC4zIDczLjUtNTEuOWMyNC45LTIuNCA0MC4yIDE0LjYgNDYgNTEuMWMyMC41IDEyOS42IDI5LjYgMTQ5LjIgNjYuOCA5MC41YzEzLjQtMjEuMiAyMC42LTM3LjIgMjEuNS00OC4zYzMuNC0zMi44LTI1LjYtMzAuNi00NS4yLTIyLjJjMTUuNy01MS41IDQ1LjgtNzYuNSA5MC4xLTc1LjFjMzIuOSAxIDQ4LjQgMjIuNCA0Ni41IDY0Yy0xLjQgMzEuMS0yMy4yIDczLjgtNjUuMyAxMjcuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlV2ViQXdlc29tZVN0cm9rZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NEM0Ni4zIDY0IDMyIDc4LjMgMzIgOTZsMCAzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0zMjBjMC0xNy43LTE0LjMtMzItMzItMzJMNjQgNjR6TTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzIwIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzMjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2em0yMzUgODEuNkwyODggMjI0bDUyLjItMTAuNGMtMi42LTMuOS00LjItOC41LTQuMi0xMy42YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRjMCAxMy0xMC4zIDIzLjYtMjMuMiAyNEwzMDQuNSAzNDkuMWMtNS4yIDExLjUtMTYuNiAxOC45LTI5LjIgMTguOWwtMTAyLjYgMGMtMTIuNiAwLTI0LTcuNC0yOS4yLTE4LjlMODcuMiAyMjRDNzQuMyAyMjMuNiA2NCAyMTMgNjQgMjAwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRjMCA1LTEuNSA5LjctNC4yIDEzLjZMMTYwIDIyNGw1My4xLTQ2LjRjLTguOS00LjEtMTUtMTMuMS0xNS0yMy42YzAtMTQuNCAxMS42LTI2IDI2LTI2czI2IDExLjYgMjYgMjZjMCAxMC41LTYuMiAxOS41LTE1LjEgMjMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlV2ViQXdlc29tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek0yMzUgMTc3LjZMMjg4IDIyNGw1Mi4yLTEwLjRjLTIuNi0zLjktNC4yLTguNS00LjItMTMuNmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0YzAgMTMtMTAuMyAyMy42LTIzLjIgMjRMMzA0LjUgMzQ5LjFjLTUuMiAxMS41LTE2LjYgMTguOS0yOS4yIDE4LjlsLTEwMi42IDBjLTEyLjYgMC0yNC03LjQtMjkuMi0xOC45TDg3LjIgMjI0Qzc0LjMgMjIzLjYgNjQgMjEzIDY0IDIwMGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0YzAgNS0xLjUgOS43LTQuMiAxMy42TDE2MCAyMjRsNTMuMS00Ni40Yy04LjktNC4xLTE1LTEzLjEtMTUtMjMuNmMwLTE0LjQgMTEuNi0yNiAyNi0yNnMyNiAxMS42IDI2IDI2YzAgMTAuNS02LjIgMTkuNS0xNS4xIDIzLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVdoYXRzYXBwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkyLjEgMjU0LjZjMCAyNC45IDcgNDkuMiAyMC4yIDcwLjFsMy4xIDUtMTMuMyA0OC42TDE1MiAzNjUuMmw0LjggMi45YzIwLjIgMTIgNDMuNCAxOC40IDY3LjEgMTguNGguMWM3Mi42IDAgMTMzLjMtNTkuMSAxMzMuMy0xMzEuOGMwLTM1LjItMTUuMi02OC4zLTQwLjEtOTMuMmMtMjUtMjUtNTgtMzguNy05My4yLTM4LjdjLTcyLjcgMC0xMzEuOCA1OS4xLTEzMS45IDEzMS44ek0yNzQuOCAzMzBjLTEyLjYgMS45LTIyLjQgLjktNDcuNS05LjljLTM2LjgtMTUuOS02MS44LTUxLjUtNjYuOS01OC43Yy0uNC0uNi0uNy0uOS0uOC0xLjFjLTItMi42LTE2LjItMjEuNS0xNi4yLTQxYzAtMTguNCA5LTI3LjkgMTMuMi0zMi4zYy4zLS4zIC41LS41IC43LS44YzMuNi00IDcuOS01IDEwLjYtNWMyLjYgMCA1LjMgMCA3LjYgLjFjLjMgMCAuNSAwIC44IDBjMi4zIDAgNS4yIDAgOC4xIDYuOGMxLjIgMi45IDMgNy4zIDQuOSAxMS44YzMuMyA4IDYuNyAxNi4zIDcuMyAxNy42YzEgMiAxLjcgNC4zIC4zIDYuOWMtMy40IDYuOC02LjkgMTAuNC05LjMgMTNjLTMuMSAzLjItNC41IDQuNy0yLjMgOC42YzE1LjMgMjYuMyAzMC42IDM1LjQgNTMuOSA0Ny4xYzQgMiA2LjMgMS43IDguNi0xYzIuMy0yLjYgOS45LTExLjYgMTIuNS0xNS41YzIuNi00IDUuMy0zLjMgOC45LTJzMjMuMSAxMC45IDI3LjEgMTIuOWMuOCAuNCAxLjUgLjcgMi4xIDFjMi44IDEuNCA0LjcgMi4zIDUuNSAzLjZjLjkgMS45IC45IDkuOS0yLjQgMTkuMWMtMy4zIDkuMy0xOS4xIDE3LjctMjYuNyAxOC44ek00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0xNDguMSAzOTMuOUw2NCA0MTZsMjIuNS04Mi4yYy0xMy45LTI0LTIxLjItNTEuMy0yMS4yLTc5LjNDNjUuNCAxNjcuMSAxMzYuNSA5NiAyMjMuOSA5NmM0Mi40IDAgODIuMiAxNi41IDExMi4yIDQ2LjVjMjkuOSAzMCA0Ny45IDY5LjggNDcuOSAxMTIuMmMwIDg3LjQtNzIuNyAxNTguNS0xNjAuMSAxNTguNWMtMjYuNiAwLTUyLjctNi43LTc1LjgtMTkuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlWFR3aXR0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em0yOTcuMSA4NEwyNTcuMyAyMzQuNiAzNzkuNCAzOTZIMjgzLjhMMjA5IDI5OC4xIDEyMy4zIDM5Nkg3NS44bDExMS0xMjYuOUw2OS43IDExNmg5OGw2Ny43IDg5LjVMMzEzLjYgMTE2aDQ3LjV6TTMyMy4zIDM2Ny42TDE1My40IDE0Mi45SDEyNS4xTDI5Ni45IDM2Ny42aDI2LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVhpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NnpNOTMuOCAzMjAuMmMtNS41IDAtOC43LTUuMy02LTEwLjNsNDkuMy04Ni43Yy4xIDAgLjEtLjEgMC0uMmwtMzEuNC01NGMtMy01LjYgLjItMTAuMSA2LTEwLjFoNDYuNmM1LjIgMCA5LjUgMi45IDEyLjkgOC43bDMxLjkgNTUuM2MtMS4zIDIuMy0xOCAzMS43LTUwLjEgODguMmMtMy41IDYuMi03LjcgOS4xLTEyLjYgOS4xSDkzLjh6bTE2My41LTMzLjR2LjJsNjUuNSAxMTljMi44IDUuMSAuMSAxMC4xLTYgMTAuMUgyNzAuMmMtNS41IDAtOS43LTIuOS0xMi45LTguN2wtNjYtMTIwLjNjMS44LTMuMiAyMi45LTQwLjQgNjMuMy0xMTEuNmMxMS43LTIwLjcgMjUuMS00NC4zIDQwLjEtNzAuOGMzLjMtNS44IDcuNC04LjcgMTIuNS04LjdoNDYuOWM1LjctLjEgOC44IDQuNyA2IDEwTDI1Ny4zIDI4Ni44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVZb3V0dWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4MiAyNTYuMmwtOTUuMi01NC4xVjMxMC4zTDI4MiAyNTYuMnpNMzg0IDMySDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NHptMTQuNCAxMzYuMWM3LjYgMjguNiA3LjYgODguMiA3LjYgODguMnMwIDU5LjYtNy42IDg4LjFjLTQuMiAxNS44LTE2LjUgMjcuNy0zMi4yIDMxLjlDMzM3LjkgMzg0IDIyNCAzODQgMjI0IDM4NHMtMTEzLjkgMC0xNDIuMi03LjZjLTE1LjctNC4yLTI4LTE2LjEtMzIuMi0zMS45QzQyIDMxNS45IDQyIDI1Ni4zIDQyIDI1Ni4zczAtNTkuNyA3LjYtODguMmM0LjItMTUuOCAxNi41LTI4LjIgMzIuMi0zMi40QzExMC4xIDEyOCAyMjQgMTI4IDIyNCAxMjhzMTEzLjkgMCAxNDIuMiA3LjdjMTUuNyA0LjIgMjggMTYuNiAzMi4yIDMyLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZXNwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni4xMiAzNDMuMzRjLTkuNjUgOS42NS05LjY1IDI1LjI5IDAgMzQuOTQgOS42NSA5LjY1IDI1LjI5IDkuNjUgMzQuOTQgMEwzNzguMjQgMjIxLjFjMTkuMjktMTkuMjkgNTAuNTctMTkuMjkgNjkuODYgMHMxOS4yOSA1MC41NyAwIDY5Ljg2TDI5My45NSA0NDUuMWMxOS4yNyAxOS4yOSA1MC41MyAxOS4zMSA2OS44Mi4wNGwuMDQtLjA0IDExOS4yNS0xMTkuMjRjMzguNTktMzguNTkgMzguNTktMTAxLjE0IDAtMTM5LjcyLTM4LjU5LTM4LjU5LTEwMS4xNS0zOC41OS0xMzkuNzIgMGwtMTU3LjIyIDE1Ny4yem0yNDQuNTMtMTA0LjhjLTkuNjUtOS42NS0yNS4yOS05LjY1LTM0LjkzIDBsLTE1Ny4yIDE1Ny4xOGMtMTkuMjcgMTkuMjktNTAuNTMgMTkuMzEtNjkuODIuMDVsLS4wNS0uMDVjLTkuNjQtOS42NC0yNS4yNy05LjY1LTM0LjkyLS4wMWwtLjAxLjAxYy05LjY1IDkuNjQtOS42NiAyNS4yOC0uMDIgMzQuOTNsLjAyLjAyYzM4LjU4IDM4LjU3IDEwMS4xNCAzOC41NyAxMzkuNzIgMGwxNTcuMi0xNTcuMmM5LjY1LTkuNjUgOS42NS0yNS4yOS4wMS0zNC45M3ptLTI2MS45OSA4Ny4zM2wxNTcuMTgtMTU3LjE4YzkuNjQtOS42NSA5LjY0LTI1LjI5IDAtMzQuOTQtOS42NC05LjY0LTI1LjI3LTkuNjQtMzQuOTEgMEwxMzMuNzIgMjkwLjkzYy0xOS4yOCAxOS4yOS01MC41NiAxOS4zLTY5Ljg1LjAxbC0uMDEtLjAxYy0xOS4yOS0xOS4yOC0xOS4zMS01MC41NC0uMDMtNjkuODRsLjAzLS4wM0wyMTguMDMgNjYuODljLTE5LjI4LTE5LjI5LTUwLjU1LTE5LjMtNjkuODUtLjAybC0uMDIuMDJMMjguOTMgMTg2LjE0Yy0zOC41OCAzOC41OS0zOC41OCAxMDEuMTQgMCAxMzkuNzIgMzguNiAzOC41OSAxMDEuMTMgMzguNTkgMTM5LjczLjAxem0tODcuMzMtNTIuNGM5LjY0IDkuNjQgMjUuMjcgOS42NCAzNC45MSAwbDE1Ny4yMS0xNTcuMTljMTkuMjgtMTkuMjkgNTAuNTUtMTkuMyA2OS44NC0uMDJsLjAyLjAyYzkuNjUgOS42NSAyNS4yOSA5LjY1IDM0LjkzIDAgOS42NS05LjY1IDkuNjUtMjUuMjkgMC0zNC45My0zOC41OS0zOC41OS0xMDEuMTMtMzguNTktMTM5LjcyIDBMODEuMzMgMjM4LjU0Yy05LjY1IDkuNjQtOS42NSAyNS4yOC0uMDEgMzQuOTNoLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFja0V4Y2hhbmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjcgMzMyLjNoNDEyLjd2MjJjMCAzNy43LTI5LjMgNjgtNjUuMyA2OGgtMTlMMjU5LjMgNTEydi04OS43SDgzYy0zNiAwLTY1LjMtMzAuMy02NS4zLTY4di0yMnptMC0yMy42aDQxMi43di04NUgxNy43djg1em0wLTEwOS40aDQxMi43di04NUgxNy43djg1ek0zNjUgMEg4M0M0NyAwIDE3LjcgMzAuMyAxNy43IDY3LjdWOTBoNDEyLjdWNjcuN0M0MzAuMyAzMC4zIDQwMSAwIDM2NSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFja092ZXJmbG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5MC43IDMxMUw5NSAyNjkuNyA4Ni44IDMwOWwxOTUuNyA0MXptNTEtODdMMTg4LjIgOTUuN2wtMjUuNSAzMC44IDE1My41IDEyOC4zem0tMzEuMiAzOS43TDEyOS4yIDE3OWwtMTYuNyAzNi41TDI5My43IDMwMHpNMjYyIDMybC0zMiAyNCAxMTkuMyAxNjAuMyAzMi0yNHptMjAuNSAzMjhoLTIwMHYzOS43aDIwMHptMzkuNyA4MEg0Mi43VjMyMGgtNDB2MTYwaDM1OS41VjMyMGgtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YWNrcGF0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDQuNiAyMzIuNGMwIDguNS00LjI2IDIwLjQ5LTIxLjM0IDIwLjQ5aC0xOS42MXYtNDEuNDdoMTkuNjFjMTcuMTMgMCAyMS4zNCAxMi4zNiAyMS4zNCAyMC45OHpNNDQ4IDMydjQ0OEgwVjMyek0xNTEuMyAyODcuODRjMC0yMS4yNC0xMi4xMi0zNC41NC00Ni43Mi00NC44NS0yMC41Ny03LjQxLTI2LTEwLjkxLTI2LTE4LjYzczctMTQuNjEgMjAuNDEtMTQuNjFjMTQuMDkgMCAyMC43OSA4LjQ1IDIwLjc5IDE4LjM1aDMwLjdsLjE5LS41N2MuNS0xOS41Ny0xNS4wNi00MS42NS01MS4xMi00MS42NS0yMy4zNyAwLTUyLjU1IDEwLjc1LTUyLjU1IDM4LjI5IDAgMTkuNCA5LjI1IDMxLjI5IDUwLjc0IDQ0LjM3IDE3LjI2IDYuMTUgMjEuOTEgMTAuNCAyMS45MSAxOS40OCAwIDE1LjItMTkuMTMgMTQuMjMtMTkuNDcgMTQuMjMtMjAuNCAwLTI1LjY1LTkuMS0yNS42NS0yMS45aC0zMC44bC0uMTguNTZjLS42OCAzMS4zMiAyOC4zOCA0NS4yMiA1Ni42MyA0NS4yMiAyOS45OCAwIDUxLjEyLTEzLjU1IDUxLjEyLTM4LjI5em0xMjUuMzgtNTUuNjNjMC0yNS4zLTE4LjQzLTQ1LjQ2LTUzLjQyLTQ1LjQ2aC01MS43OHYxMzguMThoMzIuMTd2LTQ3LjM2aDE5LjYxYzMwLjI1IDAgNTMuNDItMTUuOTUgNTMuNDItNDUuMzZ6TTI5Ny45NCAzMjVMMzQ3IDE4Ni43OGgtMzEuMDlMMjY4IDMyNXptMTA2LjUyLTEzOC4yMmgtMzEuMDlMMzI1LjQ2IDMyNWgyOS45NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RheWxpbmtlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODIuNyAyOTIuNWwyLjcgMi43LTE3MC0xNjcuM2MtMy41LTMuNS05LjctMy43LTEzLjgtLjVMMTQ0LjMgMTcxYy00LjIgMy4yLTQuNiA4LjctMS4xIDEyLjJsNjguMSA2NC4zYzMuNiAzLjUgOS45IDMuNyAxNCAuNWwuMS0uMWM0LjEtMy4yIDEwLjQtMyAxNCAuNWw4NCA4MS4zYzMuNiAzLjUgMy4yIDktLjkgMTIuMmwtOTMuMiA3NGMtNC4yIDMuMy0xMC41IDMuMS0xNC4yLS40TDYzLjIgMjY4Yy0zLjUtMy41LTkuNy0zLjctMTMuOS0uNUwzLjUgMzAyLjRjLTQuMiAzLjItNC43IDguNy0xLjIgMTIuMkwyMTEgNTEwLjdzNy40IDYuOCAxNy4zLS44bDE5OC0xNjMuOWM0LTMuMiA0LjQtOC43LjctMTIuMnptNTQuNS04My40TDIyNi43IDIuNWMtMS41LTEuMi04LTUuNS0xNi4zIDEuMUwzLjYgMTY1LjdjLTQuMiAzLjItNC44IDguNy0xLjIgMTIuMmw0Mi4zIDQxLjcgMTcxLjcgMTY1LjFjMy43IDMuNSAxMC4xIDMuNyAxNC4zLjRsNTAuMi0zOC44LS4zLS4zIDcuNy02YzQuMi0zLjIgNC42LTguNy45LTEyLjJsLTU3LjEtNTQuNGMtMy42LTMuNS0xMC0zLjctMTQuMi0uNWwtLjEuMWMtNC4yIDMuMi0xMC41IDMuMS0xNC4yLS40TDEwOSAxODAuOGMtMy42LTMuNS0zLjEtOC45IDEuMS0xMi4ybDkyLjItNzEuNWM0LjEtMy4yIDEwLjMtMyAxMy45LjVsMTYwLjQgMTU5YzMuNyAzLjUgMTAgMy43IDE0LjEuNWw0NS44LTM1LjhjNC4xLTMuMiA0LjQtOC43LjctMTIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RlYW1TeW1ib2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk1LjUgMTc3LjVjMCAzMy44LTI3LjUgNjEtNjEgNjEtMzMuOCAwLTYxLTI3LjMtNjEtNjFzMjcuMy02MSA2MS02MWMzMy41IDAgNjEgMjcuMiA2MSA2MXptNTIuNS4yYzAgNjMtNTEgMTEzLjgtMTEzLjcgMTEzLjhMMjI1IDM3MS4zYy00IDQzLTQwLjUgNzYuOC04NC41IDc2LjgtNDAuNSAwLTc0LjctMjguOC04My02N0wwIDM1OFYyNTAuN0w5Ny4yIDI5MGMxNS4xLTkuMiAzMi4yLTEzLjMgNTItMTEuNWw3MS0xMDEuN2MuNS02Mi4zIDUxLjUtMTEyLjggMTE0LTExMi44QzM5NyA2NCA0NDggMTE1IDQ0OCAxNzcuN3pNMjAzIDM2M2MwLTM0LjctMjcuOC02Mi41LTYyLjUtNjIuNS00LjUgMC05IC41LTEzLjUgMS41bDI2IDEwLjVjMjUuNSAxMC4yIDM4IDM5IDI3LjcgNjQuNS0xMC4yIDI1LjUtMzkuMiAzOC02NC43IDI3LjUtMTAuMi00LTIwLjUtOC4zLTMwLjctMTIuMiAxMC41IDE5LjcgMzEuMiAzMy4yIDU1LjIgMzMuMiAzNC43IDAgNjIuNS0yNy44IDYyLjUtNjIuNXptMjA3LjUtMTg1LjNjMC00Mi0zNC4zLTc2LjItNzYuMi03Ni4yLTQyLjMgMC03Ni41IDM0LjItNzYuNSA3Ni4yIDAgNDIuMiAzNC4zIDc2LjIgNzYuNSA3Ni4yIDQxLjkuMSA3Ni4yLTMzLjkgNzYuMi03Ni4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMjU2YzAgMTM3LTExMS4yIDI0OC0yNDguNCAyNDgtMTEzLjggMC0yMDkuNi03Ni4zLTIzOS0xODAuNGw5NS4yIDM5LjNjNi40IDMyLjEgMzQuOSA1Ni40IDY4LjkgNTYuNCAzOS4yIDAgNzEuOS0zMi40IDcwLjItNzMuNWw4NC41LTYwLjJjNTIuMSAxLjMgOTUuOC00MC45IDk1LjgtOTMuNSAwLTUxLjYtNDItOTMuNS05My43LTkzLjVzLTkzLjcgNDItOTMuNyA5My41djEuMkwxNzYuNiAyNzljLTE1LjUtLjktMzAuNyAzLjQtNDMuNSAxMi4xTDAgMjM2LjFDMTAuMiAxMDguNCAxMTcuMSA4IDI0Ny42IDggMzg0LjggOCA0OTYgMTE5IDQ5NiAyNTZ6TTE1NS43IDM4NC4zbC0zMC41LTEyLjZhNTIuNzkgNTIuNzkgMCAwIDAgMjcuMiAyNS44YzI2LjkgMTEuMiA1Ny44LTEuNiA2OS0yOC40IDUuNC0xMyA1LjUtMjcuMy4xLTQwLjMtNS40LTEzLTE1LjUtMjMuMi0yOC41LTI4LjYtMTIuOS01LjQtMjYuNy01LjItMzguOS0uNmwzMS41IDEzYzE5LjggOC4yIDI5LjIgMzAuOSAyMC45IDUwLjctOC4zIDE5LjktMzEgMjkuMi01MC44IDIxem0xNzMuOC0xMjkuOWMtMzQuNCAwLTYyLjQtMjgtNjIuNC02Mi4zczI4LTYyLjMgNjIuNC02Mi4zIDYyLjQgMjggNjIuNCA2Mi4zLTI3LjkgNjIuMy02Mi40IDYyLjN6bS4xLTE1LjZjMjUuOSAwIDQ2LjktMjEgNDYuOS00Ni44IDAtMjUuOS0yMS00Ni44LTQ2LjktNDYuOHMtNDYuOSAyMS00Ni45IDQ2LjhjLjEgMjUuOCAyMS4xIDQ2LjggNDYuOSA0Ni44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGlja2VyTXVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjEuNyAxOTkuNmMtMS4zLjMuMyAwIDAgMHptLTYuMi03Ny40Yy03LjctMjIuMy01LjEtNy4yLTEzLjQtMzYuOS0xLjYtNi41LTMuNi0xNC41LTYuMi0yMC00LjQtOC43LTQuNi03LjUtNC42LTkuNSAwLTUuMyAzMC43LTQ1LjMgMTktNDYuOS01LjctLjYtMTIuMiAxMS42LTIwLjYgMTctOC42IDQuMi04IDUtMTAuMyA1LTIuNiAwLTUuNy0zLTYuMi01LTItNS43IDEuOS0yNS45LTMuNi0yNS45LTMuNiAwLTEyLjMgMjQuOC0xNyAyNS44LTUuMiAxLjMtMjcuOS0xMS40LTc1LjEgMTgtMjUuMyAxMy4yLTg2LjkgNjUuMi04NyA2NS4zLTYuNyA0LjctMjAgNC43LTM1LjUgMTYtNDQuNCAzMC4xLTEwOS42IDkuNC0xMTAuNyA5LTExMC42LTI2LjgtMTI4LTE1LjItMTU5IDExLjUtMjAuOCAxNy45LTIzLjcgMzYuNS0yNC4yIDM4LjktNC4yIDIwLjQgNS4yIDQ4LjMgNi43IDY0LjMgMS44IDE5LjMtMi43IDE3LjcgNy43IDk4LjMuNSAxIDQuMSAwIDUuMSAxLjUgMCA4LjQtMy44IDEyLjEtNC4xIDEzLTEuNSA0LjUtMS41IDEwLjUgMCAxNiAyLjMgOC4yIDguMiAzNy4yIDguMiA0Ni45IDAgNDEuOC40IDQ0IDIuNiA0OS40IDMuOSAxMCAxMi41IDkuMSAxNyAxMiAzLjEgMy41LS41IDguNSAxIDEyLjUuNSAyIDMuNiA0IDYuMiA1IDkuMiAzLjYgMjcgLjMgMjkuOS0yLjUgMS42LTEuNS41LTQuNSAzLjEtNSA1LjEgMCAxMC44LS41IDE0LjQtMi41IDUuMS0yLjUgNC4xLTYgMS41LTEwLjUtLjQtLjgtNy0xMy4zLTkuOC0xNi0yLjEtMi01LjEtMy03LjItNC41LTUuOC00LjktMTAuMy0xOS40LTEwLjMtMTkuNS00LjYtMTkuNC0xMC4zLTQ2LjMtNC4xLTY2LjggNC42LTE3LjIgMzkuNS04Ny43IDM5LjYtODcuOCA0LjEtNi41IDE3LTExLjUgMjcuMy03IDYgMS45IDE5LjMgMjIgNjUuNCAzMC45IDQ3LjkgOC43IDk3LjQtMiAxMTIuMi0yIDIuOCAyLTEuOSAxMy0uNSAzOC45IDAgMjYuNC0uNCAxMy43LTQuMSAyOS45LTIuMiA5LjcgMy40IDIzLjItMS41IDQ2LjktMS40IDkuOC05LjkgMzIuNy04LjIgNDMuNC41IDEgMSAyIDEuNSAzLjUuNSA0LjUgMS41IDguNSA0LjYgMTAgNy4zIDMuNiAxMi0zLjUgOS44IDExLjUtLjcgMy4xLTIuNiAxMiAxLjUgMTUgNC40IDMuNyAzMC42IDMuNCAzNi41LjUgMi42LTEuNSAxLjYtNC41IDYuNC03LjQgMS45LS45IDExLjMtLjQgMTEuMy02LjUuMy0xLjgtOS4yLTE5LjktOS4zLTIwLTIuNi0zLjUtOS4yLTQuNS0xMS4zLTgtNi45LTEwLjEtMS43LTUyLjYuNS01OS40IDMtMTEgNS42LTIyLjQgOC43LTMyLjQgMTEtNDIuNSAxMC4zLTUwLjYgMTYuNS02OC4zLjgtMS44IDYuNC0yMy4xIDEwLjMtMjkuOSA5LjMtMTcgMjEuNy0zMi40IDMzLjUtNDcuNCAxOC0yMi45IDM0LTQ2LjkgNTItNjkuOCA2LjEtNyA4LjItMTMuNyAxOC04IDEwLjggNS43IDIxLjYgNyAzMS45IDE3IDE0LjYgMTIuOCAxMC4yIDE4LjIgMTEuOCAyMi45IDEuNSA1IDcuNyAxMC41IDE0LjkgOS41IDEwLjQtMiAxMy0yLjUgMTMuNC0yLjUgMi42LS41IDUuNy01IDcuMi04IDMuMS01LjUgNy4yLTkgNy4yLTE2LjUgMC03LjctLjQtMi44LTIwLjYtNTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RyYXZhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1OC40IDBMNyAyOTJoODkuMmw2Mi4yLTExNi4xTDIyMC4xIDI5Mmg4OC41em0xNTAuMiAyOTJsLTQzLjkgODguMi00NC42LTg4LjJoLTY3LjZsMTEyLjIgMjIwIDExMS41LTIyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RyaXBlUyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTUuMyAxNTQuNmMwLTIyLjMgMTguNi0zMC45IDQ4LjQtMzAuOSA0My40IDAgOTguNSAxMy4zIDE0MS45IDM2LjdWMjYuMUMyOTguMyA3LjIgMjUxLjEgMCAyMDMuOCAwIDg4LjEgMCAxMSA2MC40IDExIDE2MS40YzAgMTU3LjkgMjE2LjggMTMyLjMgMjE2LjggMjAwLjQgMCAyNi40LTIyLjkgMzQuOS01NC43IDM0LjktNDcuMiAwLTEwOC4yLTE5LjUtMTU2LjEtNDUuNXYxMjguNWEzOTYuMDkgMzk2LjA5IDAgMCAwIDE1NiAzMi40YzExOC42IDAgMjAwLjMtNTEgMjAwLjMtMTUzLjYgMC0xNzAuMi0yMTgtMTM5LjctMjE4LTIwMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHJpcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY1IDE0NC43bC00My4zIDkuMi0uMiAxNDIuNGMwIDI2LjMgMTkuOCA0My4zIDQ2LjEgNDMuMyAxNC42IDAgMjUuMy0yLjcgMzEuMi01Ljl2LTMzLjhjLTUuNyAyLjMtMzMuNyAxMC41LTMzLjctMTUuN1YyMjFoMzMuN3YtMzcuOGgtMzMuN3ptODkuMSA1MS42bC0yLjctMTMuMUgyMTN2MTUzLjJoNDQuM1YyMzMuM2MxMC41LTEzLjggMjguMi0xMS4xIDMzLjktOS4zdi00MC44Yy02LTIuMS0yNi43LTYtMzcuMSAxMy4xem05Mi4zLTcyLjNsLTQ0LjYgOS41djM2LjJsNDQuNi05LjV6TTQ0LjkgMjI4LjNjMC02LjkgNS44LTkuNiAxNS4xLTkuNyAxMy41IDAgMzAuNyA0LjEgNDQuMiAxMS40di00MS44Yy0xNC43LTUuOC0yOS40LTguMS00NC4xLTguMS0zNiAwLTYwIDE4LjgtNjAgNTAuMiAwIDQ5LjIgNjcuNSA0MS4yIDY3LjUgNjIuNCAwIDguMi03LjEgMTAuOS0xNyAxMC45LTE0LjcgMC0zMy43LTYuMS00OC42LTE0LjJ2NDBjMTYuNSA3LjEgMzMuMiAxMC4xIDQ4LjUgMTAuMSAzNi45IDAgNjIuMy0xNS44IDYyLjMtNDcuOCAwLTUyLjktNjcuOS00My40LTY3LjktNjMuNHpNNjQwIDI2MS42YzAtNDUuNS0yMi04MS40LTY0LjItODEuNHMtNjcuOSAzNS45LTY3LjkgODEuMWMwIDUzLjUgMzAuMyA3OC4yIDczLjUgNzguMiAyMS4yIDAgMzcuMS00LjggNDkuMi0xMS41di0zMy40Yy0xMi4xIDYuMS0yNiA5LjgtNDMuNiA5LjgtMTcuMyAwLTMyLjUtNi4xLTM0LjUtMjYuOWg4Ni45Yy4yLTIuMy42LTExLjYuNi0xNS45em0tODcuOS0xNi44YzAtMjAgMTIuMy0yOC40IDIzLjQtMjguNCAxMC45IDAgMjIuNSA4LjQgMjIuNSAyOC40em0tMTEyLjktNjQuNmMtMTcuNCAwLTI4LjYgOC4yLTM0LjggMTMuOWwtMi4zLTExSDM2M3YyMDQuOGw0NC40LTkuNC4xLTUwLjJjNi40IDQuNyAxNS45IDExLjIgMzEuNCAxMS4yIDMxLjggMCA2MC44LTIzLjIgNjAuOC03OS42LjEtNTEuNi0yOS4zLTc5LjctNjAuNS03OS43em0tMTAuNiAxMjIuNWMtMTAuNCAwLTE2LjYtMy44LTIwLjktOC40bC0uMy02NmM0LjYtNS4xIDExLTguOCAyMS4yLTguOCAxNi4yIDAgMjcuNCAxOC4yIDI3LjQgNDEuNC4xIDIzLjktMTAuOSA0MS44LTI3LjQgNDEuOHptLTEyNi43IDMzLjdoNDQuNlYxODMuMmgtNDQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3R1YmJlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzYuNSAyOTQuMmw1OC44IDIyLjljOS4xLTM2LjggMjUuNC02MS4xIDU1LTYxLjFjNDkuNCAwIDcxLjQgNjMuNiAxNDIuNCA2My42YzE1LjYgMCAzNS45LTIuOCA1NS4zLTEzLjNWMzY4YzAgNjEuOC01MC40IDExMi0xMTIuMyAxMTJIMGw0MS44LTU2TDAgMzY4bDQxLjctNTZMMCAyNTYuMWw0MS44LTU2TDAgMTQ0LjEgNDEuOCA4OCAwIDMySDMzNS43QzM5Ny42IDMyIDQ0OCA4Mi4zIDQ0OCAxNDQuMXY1MS4zYy05LjIgMzYuMy0yNS45IDYwLjYtNTUgNjAuNmMtNDkuNiAwLTcxLjYtNjMuNS0xNDIuNC02My41Yy0zNS45IDAtOTUuMiAxNC42LTExNC4xIDEwMS42aDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0dWRpb3ZpbmFyaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAuMyAxODcuN2w0LjIgMjh2MjhsLTI1LjEgNDQuMS0zOS44IDc4LjQtNTYuMSA2Ny41LTc5LjEgMzcuOC0xNy43IDI0LjUtNy43IDEyLTkuNiA0czE3LjMtNjMuNiAxOS40LTYzLjZjMi4xIDAgMjAuMy43IDIwLjMuN2w2Ni43LTM4LjYtOTIuNSAyNi4xLTU1LjkgMzYuOC0yMi44IDI4LTYuNiAxLjQgMjAuOC03My42IDYuOS01LjUgMjAuNyAxMi45IDg4LjMtNDUuMiA1Ni44LTUxLjUgMTQuOC02OC40LTEyNS40IDIzLjMgMTUuMi0xOC4yLTE3My40LTUzLjMgODEuOS0xMC41LTE2Ni0xMjIuOUwxMzMuNSAxMDggMzIuMiAwbDI1Mi45IDEyNi42LTMxLjUtMzhMMzc4IDE2MyAyMzQuNyA2NGwxOC43IDM4LjQtNDkuNi0xOC4xTDE1OC4zIDBsMTk0LjYgMTIyTDMxMCA2Ni4ybDEwOCA5Ni40IDEyLTguOS0yMS0xNi40IDQuMi0zNy44TDQ1MSA4OS4xbDI5LjIgMjQuNyAxMS41IDQuMi03IDYuMiA4LjUgMTItMTMuMSA3LjQtMTAuMyAyMC4yIDEwLjUgMjMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3R1bWJsZXVwb25DaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMCAxNzcuNWMtOS44IDAtMTcuOCA4LTE3LjggMTcuOHYxMDYuOWMwIDQwLjktMzMuOSA3My45LTc0LjkgNzMuOS00MS40IDAtNzQuOS0zMy41LTc0LjktNzQuOXYtNDYuNWg1Ny4zdjQ1LjhjMCAxMCA4IDE3LjggMTcuOCAxNy44czE3LjgtNy45IDE3LjgtMTcuOFYyMDAuMWMwLTQwIDM0LjItNzIuMSA3NC43LTcyLjEgNDAuNyAwIDc0LjcgMzIuMyA3NC43IDcyLjZ2MjMuN2wtMzQuMSAxMC4xLTIyLjktMTAuN3YtMjAuNmMuMS05LjYtNy45LTE3LjYtMTcuNy0xNy42em0xNjcuNiAxMjMuNmMwIDQxLjQtMzMuNSA3NC45LTc0LjkgNzQuOS00MS4yIDAtNzQuOS0zMy4yLTc0LjktNzQuMlYyNjNsMjIuOSAxMC43IDM0LjEtMTAuMXY0Ny4xYzAgOS44IDggMTcuNiAxNy44IDE3LjZzMTcuOC03LjkgMTcuOC0xNy42di00OGg1Ny4zYy0uMSA0NS45LS4xIDQ2LjQtLjEgNDYuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3R1bWJsZXVwb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAyLjkgMjY2djY5LjdjMCA2Mi4xLTUwLjMgMTEyLjQtMTEyLjQgMTEyLjQtNjEuOCAwLTExMi40LTQ5LjgtMTEyLjQtMTExLjN2LTcwLjJsMzQuMyAxNiA1MS4xLTE1LjJWMzM4YzAgMTQuNyAxMiAyNi41IDI2LjcgMjYuNVM0MTcgMzUyLjcgNDE3IDMzOHYtNzJoODUuOXptLTIyNC43LTU4LjJsMzQuMyAxNiA1MS4xLTE1LjJWMTczYzAtNjAuNS01MS4xLTEwOS0xMTIuMS0xMDktNjAuOCAwLTExMi4xIDQ4LjItMTEyLjEgMTA4LjJ2MTYyLjRjMCAxNC45LTEyIDI2LjctMjYuNyAyNi43Uzg2IDM0OS41IDg2IDMzNC42VjI2NkgwdjY5LjdDMCAzOTcuNyA1MC4zIDQ0OCAxMTIuNCA0NDhjNjEuNiAwIDExMi40LTQ5LjUgMTEyLjQtMTEwLjhWMTc2LjljMC0xNC43IDEyLTI2LjcgMjYuNy0yNi43czI2LjcgMTIgMjYuNyAyNi43djMwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1cGVycG93ZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzMmMtODMuMyAxMS0xNjYuOCAyMi0yNTAgMzMtOTIgMTIuNS0xNjMuMyA4Ni43LTE2OSAxODAtMy4zIDU1LjUgMTggMTA5LjUgNTcuOCAxNDguMkwwIDQ4MGM4My4zLTExIDE2Ni41LTIyIDI0OS44LTMzIDkxLjgtMTIuNSAxNjMuMy04Ni44IDE2OC43LTE3OS44IDMuNS01NS41LTE4LTEwOS41LTU3LjctMTQ4LjJMNDQ4IDMyem0tNzkuNyAyMzIuM2MtNC4yIDc5LjUtNzQgMTM5LjItMTUyLjggMTM0LjUtNzkuNS00LjctMTQwLjctNzEtMTM2LjMtMTUxIDQuNS03OS4yIDc0LjMtMTM5LjMgMTUzLTEzNC41IDc5LjMgNC43IDE0MC41IDcxIDEzNi4xIDE1MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VwcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAyNjIuNWMwIDY0LjEtMTA5IDExNi4xLTI0My41IDExNi4xLTI0LjggMC00OC42LTEuOC03MS4xLTUgNy43LjQgMTUuNS42IDIzLjQuNiAxMzQuNSAwIDI0My41LTU2LjkgMjQzLjUtMTI3LjEgMC0yOS40LTE5LjEtNTYuNC01MS4yLTc4IDYwIDIxLjEgOTguOSA1NS4xIDk4LjkgOTMuNHpNNDcuNyAyMjcuOWMtLjEtNzAuMiAxMDguOC0xMjcuMyAyNDMuMy0xMjcuNiA3LjkgMCAxNS42LjIgMjMuMy41LTIyLjUtMy4yLTQ2LjMtNC45LTcxLTQuOUMxMDguOCA5Ni4zLS4xIDE0OC41IDAgMjEyLjZjLjEgMzguMyAzOS4xIDcyLjMgOTkuMyA5My4zLTMyLjMtMjEuNS01MS41LTQ4LjYtNTEuNi03OHptNjAuMiAzOS45czEwLjUgMTMuMiAyOS4zIDEzLjJjMTcuOSAwIDI4LjQtMTEuNSAyOC40LTI1LjEgMC0yOC00MC4yLTI1LjEtNDAuMi0zOS43IDAtNS40IDUuMy05LjEgMTIuNS05LjEgNS43IDAgMTEuMyAyLjYgMTEuMyA2LjZ2My45aDE0LjJ2LTcuOWMwLTEyLjEtMTUuNC0xNi44LTI1LjQtMTYuOC0xNi41IDAtMjguNSAxMC4yLTI4LjUgMjQuMSAwIDI2LjYgNDAuMiAyNS40IDQwLjIgMzkuOSAwIDYuNi01LjggMTAuMS0xMi4zIDEwLjEtMTEuOSAwLTIwLjctMTAuMS0yMC43LTEwLjFsLTguOCAxMC45em0xMjAuOC03My42djU0LjRjMCAxMS4zLTcuMSAxNy44LTE3LjggMTcuOC0xMC43IDAtMTcuOC02LjUtMTcuOC0xNy43di01NC41aC0xNS44djU1YzAgMTguOSAxMy40IDMxLjkgMzMuNyAzMS45IDIwLjEgMCAzMy40LTEzIDMzLjQtMzEuOXYtNTVoLTE1Ljd6bTM0LjQgODUuNGgxNS44di0yOS41aDE1LjVjMTYgMCAyNy4yLTExLjUgMjcuMi0yOC4xcy0xMS4yLTI3LjgtMjcuMi0yNy44aC0zOS4xdjEzLjRoNy44djcyem0xNS44LTQzdi0yOS4xaDEyLjljOC43IDAgMTMuNyA1LjcgMTMuNyAxNC40IDAgOC45LTUuMSAxNC43LTE0IDE0LjdoLTEyLjZ6bTU3IDQzaDE1Ljh2LTI5LjVoMTUuNWMxNiAwIDI3LjItMTEuNSAyNy4yLTI4LjFzLTExLjItMjcuOC0yNy4yLTI3LjhoLTM5LjF2MTMuNGg3Ljh2NzJ6bTE1LjctNDN2LTI5LjFoMTIuOWM4LjcgMCAxMy43IDUuNyAxMy43IDE0LjQgMCA4LjktNSAxNC43LTE0IDE0LjdoLTEyLjZ6bTU3LjEgMzQuOGMwIDUuOCAyLjQgOC4yIDguMiA4LjJoMzcuNmM1LjggMCA4LjItMi40IDguMi04LjJ2LTEzaC0xNC4zdjUuMmMwIDEuNy0xIDIuNi0yLjYgMi42aC0xOC42Yy0xLjcgMC0yLjYtMS0yLjYtMi42di02MS4yYzAtNS43LTIuNC04LjItOC4yLTguMkg0MDF2MTMuNGg1LjJjMS43IDAgMi42IDEgMi42IDIuNnY2MS4yem02My40IDBjMCA1LjggMi40IDguMiA4LjIgOC4ySDUxOWM1LjcgMCA4LjItMi40IDguMi04LjJ2LTEzaC0xNC4zdjUuMmMwIDEuNy0xIDIuNi0yLjYgMi42aC0xOS43Yy0xLjcgMC0yLjYtMS0yLjYtMi42di0yMC4zaDI3Ljd2LTEzLjRINDg4di0yMi40aDE5LjJjMS43IDAgMi42IDEgMi42IDIuNnY1LjJINTI0di0xM2MwLTUuNy0yLjUtOC4yLTguMi04LjJoLTUxLjZ2MTMuNGg3Ljh2NjMuOXptNTguOS03NnY1LjloMS42di01LjloMi43di0xLjJoLTd2MS4yaDIuN3ptNS43LTEuMnY3LjFoMS41di01LjdsMi4zIDUuN2gxLjNsMi4zLTUuN3Y1LjdoMS41di03LjFoLTIuM2wtMi4xIDUuMS0yLjEtNS4xaC0yLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTkzLjEgMTkyLjZBMTAuNCAxMC40IDAgMSAxIDYwNC41IDIxMGExMC40IDEwLjQgMCAxIDEgLTExLjQtMTcuNHptLTQ3LjEgMTIuMmEzOC41IDM4LjUgMCAxIDEgNzUtMTcuNiAzOC41IDM4LjUgMCAxIDEgLTc1IDE3LjZ6TTQzMy43IDMzNi43YzMuMiA0LjYgNS44IDkgNy4zIDEzLjRjMSAzLjEgMi40IDcuMyA1LjUgOC45Yy4yIC4xIC4zIC4yIC41IC4yYzUuNyAyLjEgMjAuMyAxLjcgMjAuMyAxLjdoMjYuOGMyLjMgMCAyMi40IDAgMjEuOS0yLjNjLTIuNC0xMC44LTE0LjktMTIuNy0yNC40LTE4LjNjLTguNy01LjItMTctMTEuMS0yMC44LTIxLjNjLTItNS4yLS44LTE3LjQgMi42LTIxLjhjMi41LTMuMiA2LjEtNS4zIDEwLTYuMmM0LjMtLjkgOC44LS4xIDEzLjEgLjNjNS4zIC41IDEwLjYgMS41IDE1LjkgMi4yYzEwLjMgMS4zIDIwLjYgMS45IDMxIDEuNmMxNy4xLS41IDM0LjItMy4yIDUwLjQtOC43YzExLjMtMy44IDIyLjQtOC45IDMyLTE2LjFjMTAuOS04LjEgOC4xLTcuNC0zLTYuMmMtMTMuMyAxLjQtMjYuNiAxLjYtMzkuOSAuOGMtMTIuNC0uNy0yNC43LTIuMi0zNS45LTcuOWMtOC44LTQuNi0xNi40LTkuMS0yMy40LTE2LjJjLTEtMS4xLTEuNy00LjIgLjItNi4yYzEuOS0xLjkgNS44LS44IDcgLjJjMTIuMiAxMC4yIDMwLjUgMTguNiA0OS4zIDE5LjVjMTAuMiAuNSAyMC4xIC43IDMwLjQgLjNjNS4xLS4yIDEyLjgtLjIgMTcuOS0uM2MyLjYgMCA5LjggLjcgMTEuMi0yLjFjLjQtLjggLjQtMS44IC4zLTIuN2MtMS41LTQwLjktNC41LTg2LjktNDcuMy0xMDYuNWMtMzEuOS0xNC42LTc5LjctMzcuMi05OS45LTQ2LjZjLTQuNy0yLjItMTAuMiAxLjMtMTAuMiA2LjVjMCAxMy42IC43IDMzLjMgLjcgNTEuMWMtOS43LTkuOS0yNi0xNi4xLTM4LjQtMjEuOGMtMTQuMS02LjUtMjguNy0xMi00My41LTE2LjZjLTI5LjgtOS4yLTYwLjctMTQuOS05MS43LTE4Yy0zNS4yLTMuNS03MS0xLjgtMTA1LjcgNS4zQzE0NyAxMTUuMSA5MC44IDE0Mi42IDQ4LjIgMTgyLjdDMjIuMSAyMDcuMyAxLjYgMjQyLjQgLjIgMjc3LjljLTIgNTAuMyAxMi4xIDc3LjMgMzggMTA1LjJjNDEuMyA0NC40IDEzMC4yIDUwLjYgMTY2LjItMmMxNi4yLTIzLjcgMTkuNy01NS44IDgtODJjLTExLjgtMjYuMi0zOC44LTQ1LjEtNjcuNC00NmMtMjIuMi0uNy00NS45IDEwLjYtNTQuNSAzMS4xYy02LjUgMTUuNy0yLjggMzUuMSA5IDQ3LjNjNC42IDQuOCAxMC45IDguNyAxNy43IDcuMWM0LS45IDcuNC0zLjkgOC04Yy45LTYtNC40LTkuOS03LjYtMTQuNWMtNS44LTguMy00LjctMjAuOSAyLjctMjcuOWM2LjItNiAxNS4zLTcuOCAyMy45LTcuN2M4IDAgMTYuMiAxLjQgMjMuMSA1LjVjOS43IDUuNyAxNi4yIDE2LjIgMTguNCAyNy4yYzYuNyAzMy0yMC4yIDU5LjktNTYuNiA2MmMtMTguNiAxLjEtMzcuNi0zLjgtNTIuMS0xNS41QzQwLjEgMzI5LjkgMzEuMSAyNjkuNCA3My4yIDIzN2M0MC0zMC43IDkwLjQtMjIuOCAxMjAuMi02LjhjMjMuOCAxMi44IDQxLjUgMzMuNiA1NSA1Ni43YzYuNyAxMS42IDEyLjUgMjMuNyAxNy44IDM2LjFjNS4xIDExLjggOS45IDIzLjggMjAuMiAzMi41YzYuOCA1LjggMTUuMiA1LjYgMjQuMSA1LjZoNTAuOGM2LjkgMCA1LjItNC42IDIuMi03LjdjLTYuNy02LjktMTYuNC04LjQtMjUuNC0xMC45Yy0yMC41LTUuNi0xOC40LTMyLjgtMTIuNy0zMi44YzE4LjMgMCAxOC45IC42IDM0LjkgLjNjMjMuMi0uMyAzMC4yLTEuNyA0OC4zIDVjOS43IDMuNiAxOSAxMy4xIDI1LjEgMjEuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3dpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDE1Ni4wOWMwLTQuNTEtLjA4LTktLjItMTMuNTJhMTk2LjMxIDE5Ni4zMSAwIDAgMC0yLjU4LTI5LjQyIDk5LjYyIDk5LjYyIDAgMCAwLTkuMjItMjhBOTQuMDggOTQuMDggMCAwIDAgMzk0Ljg0IDQ0YTk5LjE3IDk5LjE3IDAgMCAwLTI4LTkuMjIgMTk1IDE5NSAwIDAgMC0yOS40My0yLjU5Yy00LjUxLS4xMi05LS4xNy0xMy41Mi0uMkgxMjQuMTRjLTQuNTEgMC05IC4wOC0xMy41Mi4yLTIuNDUuMDctNC45MS4xNS03LjM3LjI3YTE3MS42OCAxNzEuNjggMCAwIDAtMjIuMDYgMi4zMiAxMDMuMDYgMTAzLjA2IDAgMCAwLTIxLjIxIDYuMXEtMy40NiAxLjQ1LTYuODEgMy4xMmE5NC42NiA5NC42NiAwIDAgMC0xOC4zOSAxMi4zMmMtMS44OCAxLjYxLTMuNjkgMy4yOC01LjQzIDVBOTMuODYgOTMuODYgMCAwIDAgMTIgODUuMTdhOTkuNDUgOTkuNDUgMCAwIDAtOS4yMiAyOCAxOTYuMzEgMTk2LjMxIDAgMCAwLTIuNTQgMjkuNGMtLjEzIDQuNTEtLjE4IDktLjIxIDEzLjUydjE5OS44M2MwIDQuNTEuMDggOSAuMjEgMTMuNTFhMTk2LjA4IDE5Ni4wOCAwIDAgMCAyLjU4IDI5LjQyIDk5LjMgOTkuMyAwIDAgMCA5LjIyIDI4QTk0LjMxIDk0LjMxIDAgMCAwIDUzLjE3IDQ2OGE5OS40NyA5OS40NyAwIDAgMCAyOCA5LjIxIDE5NSAxOTUgMCAwIDAgMjkuNDMgMi41OWM0LjUuMTIgOSAuMTcgMTMuNTIuMkgzMjMuOTFjNC41MSAwIDktLjA4IDEzLjUyLS4yYTE5Ni41OSAxOTYuNTkgMCAwIDAgMjkuNDQtMi41OSA5OS41NyA5OS41NyAwIDAgMCAyOC05LjIxQTk0LjIyIDk0LjIyIDAgMCAwIDQzNiA0MjYuODRhOTkuMyA5OS4zIDAgMCAwIDkuMjItMjggMTk0Ljc5IDE5NC43OSAwIDAgMCAyLjU5LTI5LjQyYy4xMi00LjUuMTctOSAuMi0xMy41MVYxNzIuMTRjLS4wMS01LjM1LS4wMS0xMC43LS4wMS0xNi4wNXptLTY5Ljg4IDI0MWMtMjAtMzguOTMtNTcuMjMtMjkuMjctNzYuMzEtMTkuNDctMS43MiAxLTMuNDggMi01LjI1IDNsLS40Mi4yNWMtMzkuNSAyMS05Mi41MyAyMi41NC0xNDUuODUtLjM4QTIzNC42NCAyMzQuNjQgMCAwIDEgNDUgMjkwLjEyYTIzMC42MyAyMzAuNjMgMCAwIDAgMzkuMTcgMjMuMzdjNTYuMzYgMjYuNCAxMTMgMjQuNDkgMTUzIDAtNTctNDMuODUtMTA0LjYtMTAxLTE0MS4wOS0xNDcuMjJhMTk3LjA5IDE5Ny4wOSAwIDAgMS0xOC43OC0yNS45YzQzLjcgNDAgMTEyLjcgOTAuMjIgMTM3LjQ4IDEwNC4xMi01Mi41Ny01NS40OS05OC44OS0xMjMuOTQtOTYuNzItMTIxLjc0IDgyLjc5IDgzLjQyIDE1OS4xOCAxMzAuNTkgMTU5LjE4IDEzMC41OSAyLjg4IDEuNTggNSAyLjg1IDYuNzMgNGExMjcuNDQgMTI3LjQ0IDAgMCAwIDQuMTYtMTIuNDdjMTMuMjItNDguMzMtMS42Ni0xMDMuNTgtMzUuMzEtMTQ5LjJDMzI5LjYxIDE0MS43NSAzNzUgMjI5LjM0IDM1Ni40IDMwMy40MmMtLjQ0IDEuNzMtLjk1IDMuNC0xLjQ0IDUuMDkgMzguNTIgNDcuNCAyOC4wNCA5OC4xNyAyMy4xMyA4OC41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3ltZm9ueSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0xMzMuNzQgMTQzLjU0Yy0xMS40Ny40MS0xOS40LTYuNDUtMTkuNzctMTYuODctLjI3LTkuMTggNi42OC0xMy40NCA2LjUzLTE4Ljg1LS4yMy02LjU1LTEwLjE2LTYuODItMTIuODctNi42Ny0zOS43OCAxLjI5LTQ4LjU5IDU3LTU4Ljg5IDExMy44NSAyMS40MyAzLjE1IDM2LjY1LS43MiA0NS4xNC02LjIyIDEyLTcuNzUtMy4zNC0xNS43Mi0xLjQyLTI0LjU2IDQtMTguMTYgMzIuNTUtMTkgMzIgNS4zLS4zNiAxNy44Ni0yNS45MiA0MS44MS03Ny42IDM1LjctMTAuNzYgNTkuNTItMTguMzUgMTE1LTU4LjIgMTYxLjcyLTI5IDM0LjQ2LTU4LjQgMzkuODItNzEuNTggNDAuMjYtMjQuNjUuODUtNDEtMTIuMzEtNDEuNTgtMjkuODQtLjU2LTE3IDE0LjQ1LTI2LjI2IDI0LjMxLTI2LjU5IDIxLjg5LS43NSAzMC4xMiAyNS42NyAxNC44OCAzNC0xMi4wOSA5LjcxLjExIDEyLjYxIDIuMDUgMTIuNTUgMTAuNDItLjM2IDE3LjM0LTUuNTEgMjIuMTgtOSAyNC0yMCAzMy4yNC01NC44NiA0NS4zNS0xMTguMzUgOC4xOS00OS42NiAxNy03OCAxOC4yMy04Mi0xNi45My0xMi43NS0yNy4wOC0yOC41NS00OS44NS0zNC43Mi0xNS42MS00LjIzLTI1LjEyLS42My0zMS44MSA3LjgzLTcuOTIgMTAtNS4yOSAyMyAyLjM3IDMwLjdsMTIuNjMgMTRjMTUuNTEgMTcuOTMgMjQgMzEuODcgMjAuOCA1MC42Mi01LjA2IDI5LjkzLTQwLjcyIDUyLjktODIuODggMzkuOTQtMzYtMTEuMTEtNDIuNy0zNi41Ni0zOC4zOC01MC42MiA3LjUxLTI0LjE1IDQyLjM2LTExLjcyIDM0LjYyIDEzLjYtMi43OSA4LjYtNC45MiA4LjY4LTYuMjggMTMuMDctNC41NiAxNC43NyA0MS44NSAyOC40IDUxLTEuMzkgNC40Ny0xNC41Mi01LjMtMjEuNzEtMjIuMjUtMzkuODUtMjguNDctMzEuNzUtMTYtNjUuNDkgMi45NS03OS42N0MyMDQuMjMgMTQwLjEzIDI1MS45NCAxOTcgMjYyIDIwNS4yOWMzNy4xNy0xMDkgMTAwLjUzLTEwNS40NiAxMDIuNDMtMTA1LjUzIDI1LjE2LS44MSA0NC4xOSAxMC41OSA0NC44MyAyOC42NS4yNSA3LjY5LTQuMTcgMjIuNTktMTkuNTIgMjMuMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlYW1zcGVhayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTIuOCAzNy4yYy0zMi4yIDM4LjEtNTYuMSA4Mi42LTY5LjkgMTMwLjVjMCAuMi0uMSAuMy0uMSAuNUM0My41IDE4NC40IDE2IDIyMyAxNiAyNjhjMCA1OS42IDQ4LjQgMTA4IDEwOCAxMDhzMTA4LTQ4LjQgMTA4LTEwOGMwLTUzLjUtMzguOS05Ny45LTkwLTEwNi41YzE1LjctNDEuOCA0MC40LTc5LjYgNzIuMy0xMTAuN2MxLjgtMS42IDQtMi42IDYuMy0zLjFjMzcuMi0xMS41IDc2LjctMTMuMyAxMTQuOC01LjJDNDU0LjcgNjcuNiA1MzQgMTgwLjcgNTE3LjEgMzAxLjNjLTguNCA2Mi42LTM4LjYgMTEyLjctODcuNyAxNTEuNGMtNTAuMSAzOS43LTEwNy41IDU0LjMtMTcwLjIgNTIuMmwtMjQtMWMxMi40IDIuOCAyNSA0LjkgMzcuNiA2LjNjNDAuNyA0LjIgODEuNCAyLjEgMTIwLjEtMTIuNWM5NC0zNS41IDE0OS4zLTEwMi4zIDE2Mi45LTIwMi41YzQuOC01Mi42LTUuOC0xMDUuNC0zMC44LTE1MkM0NTQuNiAxMS4zIDI5MC44LTM4LjQgMTU5IDMyYy0yLjQgMS40LTQuNSAzLjEtNi4zIDUuMnpNMzA5LjQgNDMzLjljLTIuMSAxMS41LTQuMiAyMS45LTE0LjYgMzEuM2M1My4yLTEgMTIzLjItMjkuMiAxNjEuOC05Ny4xYzM5LjctNjkuOSAzNy42LTEzOS45LTYuMy0yMDcuOEM0MTMuOCAxMDUgMzYwLjUgNzcuOSAyOTMuNyA3My43YzEuNSAyLjMgMy4yIDQuNCA1LjIgNi4zbDUuMiA2LjNjMjUuMSAzMS4zIDM3LjYgNjcuOSA0Mi44IDEwNy41YzIuMSAxNS43LTEgMzAuMy0xMy42IDQxLjhjLTQuMiAzLjEtNS4yIDYuMy00LjIgMTAuNGw3LjMgMTcuN0wzNjUuNyAzMThjNS4yIDExLjUgNC4yIDE5LjgtNi4zIDI4LjJjLTMuMiAyLjUtNi43IDQuNi0xMC40IDYuM2wtMTguOCA4LjQgMy4xIDEzLjZjMy4xIDYuMyAxIDEyLjUtMy4xIDE3LjdjLTIuNSAyLjQtMy44IDUuOS0zLjEgOS40YzIuMSAxMS41LTIuMSAxOS44LTEyLjUgMjUuMWMtMi4xIDEtNC4yIDUuMi01LjIgNy4zem0tMTMzLjYtMy4xYzE2LjcgMTEuNSAzNC41IDIwLjkgNTMuMiAyNi4xYzI0IDUuMiA0MS44LTYuMyA0NC45LTMwLjNjMS04LjQgNS4yLTE0LjYgMTIuNS0xNy43YzcuMy00LjIgOC40LTcuMyAyLjEtMTMuNmwtOS40LTguNCAxMy42LTQuMmM2LjMtMi4xIDcuMy01LjIgNS4yLTExLjVjLTEuNC0zLTIuNC02LjItMy4xLTkuNGMtMy4xLTE0LjYtMi4xLTE1LjcgMTEuNS0xOC44YzguNC0zLjEgMTUuNy02LjMgMjEuOS0xMi41YzMuMS0yLjEgMy4xLTQuMiAxLTguNGwtMTYuNy0zMC4zYy0xLTEuOS0yLjEtMy44LTMuMS01LjdjLTYuNC0xMS43LTEzLTIzLjYtMTUuNy0zNy4xYy0yLjEtOS40LTEtMTcuNyA4LjQtMjRjNS4yLTQuMiA4LjQtOS40IDguNC0xNi43Yy0uNC0xMC4xLTEuNS0yMC4zLTMuMS0zMC4zYy02LjMtMzcuNi0yMy02OC45LTUxLjItOTVjLTUuMi00LjItOS40LTYuMy0xNi43LTQuMkwyMDMuOSA5MS41YzIgMS4yIDQgMi40IDYgMy42bDAgMGM2LjMgMy43IDEyLjIgNy4zIDE3IDEyLjFjMzAuMyAyNi4xIDQxLjggNjEuNiA0NS45IDEwMC4yYzEgOC40IDAgMTYuNy03LjMgMjEuOWMtOC40IDUuMi0xMC40IDEyLjUtNy4zIDIwLjljNC45IDEzLjIgMTAuNCAyNiAxNi43IDM4LjZMMjkxLjYgMzE4Yy02LjMgOC40LTEzLjYgMTEuNS0yMS45IDE0LjZjLTEyLjUgMy4xLTE0LjYgNy4zLTEwLjQgMjAuOWMuNiAxLjUgMS40IDIuOCAyLjEgNC4yYzIuMSA1LjIgMSA4LjQtNC4yIDEwLjRsLTEyLjUgMy4xIDUuMiA0LjIgNC4yIDQuMmM0LjIgNS4yIDQuMiA4LjQtMi4xIDEwLjRjLTcuMyA0LjItMTEuNSA5LjQtMTEuNSAxNy43YzAgMTIuNS03LjMgMTkuOC0xOC44IDI0Yy0zLjggMS03LjYgMS41LTExLjUgMWwtMzQuNS0yLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbGVncmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCw4QzExMS4wMzMsOCwwLDExOS4wMzMsMCwyNTZTMTExLjAzMyw1MDQsMjQ4LDUwNCw0OTYsMzkyLjk2Nyw0OTYsMjU2LDM4NC45NjcsOCwyNDgsOFpNMzYyLjk1MiwxNzYuNjZjLTMuNzMyLDM5LjIxNS0xOS44ODEsMTM0LjM3OC0yOC4xLDE3OC4zLTMuNDc2LDE4LjU4NC0xMC4zMjIsMjQuODE2LTE2Ljk0OCwyNS40MjUtMTQuNCwxLjMyNi0yNS4zMzgtOS41MTctMzkuMjg3LTE4LjY2MS0yMS44MjctMTQuMzA4LTM0LjE1OC0yMy4yMTUtNTUuMzQ2LTM3LjE3Ny0yNC40ODUtMTYuMTM1LTguNjEyLTI1LDUuMzQyLTM5LjUsMy42NTItMy43OTMsNjcuMTA3LTYxLjUxLDY4LjMzNS02Ni43NDYuMTUzLS42NTUuMy0zLjEtMS4xNTQtNC4zODRzLTMuNTktLjg0OS01LjEzNS0uNXEtMy4yODMuNzQ2LTEwNC42MDgsNjkuMTQyLTE0Ljg0NSwxMC4xOTQtMjYuODk0LDkuOTM0Yy04Ljg1NS0uMTkxLTI1Ljg4OC01LjAwNi0zOC41NTEtOS4xMjMtMTUuNTMxLTUuMDQ4LTI3Ljg3NS03LjcxNy0yNi44LTE2LjI5MXEuODQtNi43LDE4LjQ1LTEzLjcsMTA4LjQ0Ni00Ny4yNDgsMTQ0LjYyOC02Mi4zYzY4Ljg3Mi0yOC42NDcsODMuMTgzLTMzLjYyMyw5Mi41MTEtMzMuNzg5LDIuMDUyLS4wMzQsNi42MzkuNDc0LDkuNjEsMi44ODVhMTAuNDUyLDEwLjQ1MiwwLDAsMSwzLjUzLDYuNzE2QTQzLjc2NSw0My43NjUsMCwwLDEsMzYyLjk1MiwxNzYuNjZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbmNlbnRXZWlibyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Mi4zIDQ5NS44YzEuNCAxOS45LTI3LjYgMjIuMi0yOS43IDIuOUMzMSAzNjguOCA3My43IDI1OS4yIDE0NCAxODUuNWMtMTUuNi0zNCA5LjItNzcuMSA1MC42LTc3LjEgMzAuMyAwIDU1LjEgMjQuNiA1NS4xIDU1LjEgMCA0NC00OS41IDcwLjgtODYuOSA0NS4xLTY1LjcgNzEuMy0xMDEuNCAxNjkuOC05MC41IDI4Ny4yek0xOTIgLjFDNjYuMS4xLTEyLjMgMTM0LjMgNDMuNyAyNDIuNCA1Mi40IDI1OS44IDc5IDI0Ni45IDcwIDIyOSAyMy43IDEzNi40IDkxIDI5LjggMTkyIDI5LjhjNzUuNCAwIDEzNi45IDYxLjQgMTM2LjkgMTM2LjkgMCA5MC44LTg2LjkgMTUzLjktMTY3LjcgMTMzLjEtMTkuMS00LjEtMjUuNiAyNC40LTYuNiAyOS4xIDExMC43IDIzLjIgMjA0LTYwIDIwNC0xNjIuM0MzNTguNiA3NC43IDI4NCAuMSAxOTIgLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZVJlZFlldGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4LjIzIDI0MS43bDIwLjcgNy4xYy05LjYtMjMuOS0yMy45LTM3LTMxLjctNDQuOGw3LjEtMTguMmMuMiAwIDEyLjMtMjcuOC0yLjUtMzAuNy0uNi0xMS4zLTYuNi0yNy0xOC40LTI3LTcuNi0xMC42LTE3LjctMTIuMy0zMC43LTUuOWExMjIuMiAxMjIuMiAwIDAgMC0yNS4zIDE2LjVjLTUuMy02LjQtMyAuNC0zLTI5LjgtMzcuMS0yNC4zLTQ1LjQtMTEuNy03NC44IDNsLjUuNWEyMzkuMzYgMjM5LjM2IDAgMCAwLTY4LjQtMTMuM2MtNS41LTguNy0xOC42LTE5LjEtMjUuMS0yNS4xbDI0LjggNy4xYy01LjUtNS41LTI2LjgtMTIuOS0zNC4yLTE1LjIgMTguMi00LjEgMjkuOC0yMC44IDQyLjUtMzMtMzQuOS0xMC4xLTY3LjktNS45LTk3LjkgMTEuOGwxMi00NC4yTDE4MiAwYy0zMS42IDI0LjItMzMgNDEuOS0zMy43IDQ1LjUtLjktMi40LTYuMy0xOS42LTE1LjItMjdhMzUuMTIgMzUuMTIgMCAwIDAtLjUgMjUuM2MzIDguNCA1LjkgMTQuOCA4LjQgMTguOS0xNi0zLjMtMjguMy00LjktNDkuMiAwaC0zLjdsMzMgMTQuM2ExOTQuMjYgMTk0LjI2IDAgMCAwLTQ2LjcgNjcuNGwtMS43IDguNCAxLjcgMS43IDcuNi00LjdjLTMuMyAxMS42LTUuMyAxOS40LTYuNiAyNS44YTIwMC4xOCAyMDAuMTggMCAwIDAtMjcuOCA0MC4zYy0xNSAxLTMxLjggMTAuOC00MC4zIDE0LjNsMyAzLjQgMjguOCAxYy0uNSAxLS43IDIuMi0xLjIgMy4yLTcuMyA2LjQtMzkuOCAzNy43LTMzIDgwLjdsMjAuMi0yMi40Yy41IDEuNy43IDMuNCAxLjIgNS4yIDAgMjUuNS40IDg5LjYgNjQuOSAxNTAuNSA0My42IDQwIDk2IDYwLjIgMTU3LjUgNjAuMiAxMjEuNyAwIDIyMy04Ny4zIDIyMy0yMTEuNSA2LjgtOS43LTEuMiAzIDE2LjctMjUuMWwxMyAxNC4zIDIuNS0uNUExODEuODQgMTgxLjg0IDAgMCAwIDQ5NSAyNTVhNDQuNzQgNDQuNzQgMCAwIDAtNi44LTEzLjN6TTM5OCAxMTEuMmwtLjUgMjEuOWM1LjUgMTguMSAxNi45IDE3LjIgMjIuNCAxNy4ybC0zLjQtNC43IDIyLjQtNS40YTI0Mi40NCAyNDIuNDQgMCAwIDEtMjcgMGMxMi44LTIuMSAzMy4zLTI5IDQzLTExLjMgMy40IDcuNiA2LjQgMTcuMiA5LjMgMjcuOGwxLjctNS45YTU2LjM4IDU2LjM4IDAgMCAxLTEuNy0xNS4yYzUuNC41IDguOCAzLjQgOS4zIDEwLjEuNSA2LjQgMS43IDE0LjggMy40IDI1LjNsNC43LTExLjNjNC42IDAgNC41LTMuNi0yLjUgMjAuNy0yMC45LTguNy0zNS4xLTguNC00Ni41LTguNGwxOC4yLTE2Yy0yNS4zIDguMi0zMyAxMC44LTU0LjggMjAuOS0xLjEtNS40LTUtMTMuNS0xNi0xOS45LTMuMiAzLjgtMi44LjktLjcgMTQuOGgtMi41YTYyLjMyIDYyLjMyIDAgMCAwLTguNC0yMy4xbDQuMi0zLjRjOC40LTcuMSAxMS44LTE0LjMgMTAuNi0yMS45LS41LTYuNC01LjQtMTMuNS0xMy41LTIwLjcgNS42LTMuNCAxNS4yLS40IDI4LjMgOC41em0tMzkuNi0xMC4xYzIuNyAxLjkgMTEuNCA1LjQgMTguOSAxNy4yIDQuMiA4LjQgNCA5LjggMy40IDExLjEtLjUgMi40LS41IDQuMy0zIDcuMS0xLjcgMi41LTUuNCA0LjctMTEuOCA3LjYtNy42LTEzLTE2LjUtMjMuNi0yNy44LTMxLjJ6TTkxIDE0My4xbDEuMi0xLjdjMS4yLTIuOSA0LjItNy42IDkuMy0xNS4ybDIuNS0zLjQtMTMgMTIuMyA1LjQtNC43LTEwLjEgOS4zLTQuMiAxLjJjMTIuMy0yNC4xIDIzLjEtNDEuMyAzMi41LTUwLjIgOS4zLTkuMyAxNi0xNiAyMC4yLTE5LjRsLTYuNCAxLjJjLTExLjMtNC4yLTE5LjQtNy4xLTI0LjgtOC40IDIuNS0uNSAzLjctLjUgMy4yLS41IDEwLjMgMCAxNy41LjUgMjAuOSAxLjJhNTIuMzUgNTIuMzUgMCAwIDAgMTYgMi41bC41LTEuNy04LjQtMzUuOCAxMy41IDI5YTQyLjg5IDQyLjg5IDAgMCAwIDUuOS0xNC4zYzEuNy02LjQgNS40LTEzIDEwLjEtMTkuNHM3LjYtMTAuNiA5LjMtMTEuM2EyMzQuNjggMjM0LjY4IDAgMCAwLTYuNCAyNS4zbC0xLjcgNy4xLS41IDQuNyAyLjUgMi41QzE5MC40IDM5LjkgMjE0IDM0IDIzOS44IDM0LjVsMjEuMS41Yy0xMS44IDEzLjUtMjcuOCAyMS45LTQ4LjUgMjQuOGEyMDEuMjYgMjAxLjI2IDAgMCAxLTIzLjQgMi45bC0uMi0uNS0yLjUtMS4yYTIwLjc1IDIwLjc1IDAgMCAwLTE0IDJjLTIuNS0uMi00LjktLjUtNy4xLS43bC0yLjUgMS43LjUgMS4yYzIgLjIgMy45LjUgNi4yLjdsLTIgMy40IDMuNC0uNS0xMC42IDExLjNjLTQuMiAzLTUuNCA2LjQtNC4yIDkuM2w1LjQtMy40aDEuMmEzOS40IDM5LjQgMCAwIDEgMjUuMy0xNS4ydi0zYzYuNC41IDEzIDEgMTkuNCAxLjIgNi40IDAgOC40LjUgNS40IDEuMmExODkuNiAxODkuNiAwIDAgMSAyMC43IDEzLjVjMTMuNSAxMC4xIDIzLjYgMjEuOSAzMCAzNS40IDguOCAxOC4yIDEzLjUgMzcuMSAxMy41IDU2LjZhMTQxLjEzIDE0MS4xMyAwIDAgMS0zIDI4LjMgMjA5LjkxIDIwOS45MSAwIDAgMS0xNiA0NmwyLjUuNWMxOC4yLTE5LjcgNDEuOS0xNiA0OS4yLTE2bC02LjQgNS45IDIyLjQgMTcuNy0xLjcgMzAuN2MtNS40LTEyLjMtMTYuNS0yMS4xLTMzLTI3LjggMTYuNSAxNC44IDIzLjYgMjEuMSAyMS45IDIwLjItNC44LTIuOC0zLjUtMS45LTEwLjgtMy43IDQuMSA0LjEgMTcuNSAxOC44IDE4LjIgMjAuN2wuMi4yLS4yLjJjMCAxLjggMS42LTEuMi0xNCAyMi45LTc1LjItMTUuMy0xMDYuMjctNDIuNy0xNDEuMi02My4ybDExLjggMS4yYy0xMS44LTE4LjUtMTUuNi0xNy43LTM4LjQtMjYuMUwxNDkgMjI1Yy04LjgtMy0xOC4yLTMtMjguMy41bDcuNi0xMC42LTEuMi0xLjdjLTE0LjkgNC4zLTE5LjggOS4yLTIyLjYgMTEuMy0xLjEtNS41LTIuOC0xMi40LTEyLjMtMjguOGwtMS4yIDI3LTEzLjItNWMxLjUtMjUuMiA1LjQtNTAuNSAxMy4yLTc0LjZ6bTI3Ni41IDMzMGMtNDkuOSAyNS01Ni4xIDIyLjQtNTkgMjMuOS0yOS44LTExLjgtNTAuOS0zMS43LTYzLjUtNTguOGwzMCAxNi41Yy05LjgtOS4zLTE4LjMtMTYuNS0zOC40LTQ0LjNsMTEuOCAyMy4xLTE3LjctNy42YzE0LjIgMjEuMSAyMy41IDUxLjcgNjYuNiA3My41LTEyMC44IDI0LjItMTk5LTcyLjEtMjAwLjktNzQuM2EyNjIuNTcgMjYyLjU3IDAgMCAwIDM1LjQgMjQuOGMzLjQgMS43IDcuMSAyLjUgMTAuMSAxLjJsLTE2LTIwLjdjOS4yIDQuMiA5LjUgNC41IDY5LjEgMjktNDIuNS0yMC43LTczLjgtNDAuOC05My4yLTYwLjItLjUgNi40LTEuMiAxMC4xLTEuMiAxMC4xYTgwLjI1IDgwLjI1IDAgMCAxIDIwLjcgMjYuNmMtMzktMTguOS01Ny42LTQ3LjYtNzEuMy04Mi42IDQ5LjkgNTUuMSAxMTguOSAzNy41IDEyMC41IDM3LjEgMzQuOCAxNi40IDY5LjkgMjMuNiAxMTMuOSAxMC42IDMuMyAwIDIwLjMgMTcgMjUuMyAzOS4xbDQuMi0zLTIuNS0yMy42YzkgOSAyNC45IDIyLjYgMzQuNCAxMy0xNS42LTUuMy0yMy41LTkuNS0yOS41LTMxLjcgNC42IDQuMiA3LjYgOSAyNy44IDE1bDEuMi0xLjItMTAuNS0xNC4yYzExLjctNC44LTMuNSAxIDMyLTEwLjggNC4zIDM0LjMgOSA0OS4yLjcgODkuNXptMTE1LjMtMjE0LjRsLTIuNS41IDMgOS4zYy0zLjUgNS45LTIzLjcgNDQuMy03MS42IDc5LjctMzkuNSAyOS44LTc2LjYgMzkuMS04MC45IDQwLjNsLTcuNi03LjEtMS4yIDMgMTQuMyAxNi03LjEtNC43IDMuNCA0LjJoLTEuMmwtMjEuOS0xMy41IDkuMyAyNi42LTE5LTI3LjktMS4yIDIuNSA3LjYgMjljLTYuMS04LjItMjEtMzIuNi01Ni44LTM5LjZsMzIuNSAyMS4yYTIxNC44MiAyMTQuODIgMCAwIDEtOTMuMi02LjRjLTQuMi0xLjItOC45LTIuNS0xMy41LTQuMmwxLjItMy00NC44LTIyLjQgMjYuMSAyMi40Yy01Ny43IDkuMS0xMTMtMjUuNC0xMjYuNC04My40bC0yLjUtMTYuNC0yMi4yNyAyMi4zYzE5LjUtNTcuNSAyNS42LTU3LjkgNTEuNC03MC4xLTkuMS01LjMtMS42LTMuMy0zOC40LTkuMyAxNS44LTUuOCAzMy0xNS40IDczIDUuMmExOC41IDE4LjUgMCAwIDEgMy43LTEuN2MuNi0zLjIuNC0uOCAxLTExLjggMy45IDEwIDMuNiA4LjcgMyA5LjNsMS43LjVjMTIuNy02LjUgOC45LTQuNSAxNy04LjlsLTUuNCAxMy41IDIyLjMtNS44LTguNCA4LjQgMi41IDIuNWM0LjUtMS44IDMwLjMgMy40IDQwLjggMTZsLTIzLjYtMi41YzM5LjQgMjMgNTEuNSA1NCA1NS44IDY5LjZsMS43LTEuMmMtMi44LTIyLjMtMTIuNC0zMy45LTE2LTQwLjEgNC4yIDUgMzkuMiAzNC42IDExMC40IDQ2LTExLjMtLjUtMjMuMSA1LjQtMzQuOSAxOC45bDQ2LjctMjAuMi05LjMgMjEuOWM3LjYtMTAuMSAxNC44LTIzLjYgMjEuMi0zOS42di0uNWwxLjItMy0xLjIgMTZjMTMuNS00MS44IDI1LjMtNzguNSAzNS40LTEwOS43bDEzLjUtMjcuOHYtMmwtNS40LTQuMmgxMC4xbDUuOSA0LjIgMi41LTEuMi0zLjQtMTYgMTIuMyAxOC45IDQxLjgtMjAuMi0xNC44IDEzIC41IDIuOSAxNy43LS41YTE4NCAxODQgMCAwIDEgMzMgNC4ybC0yMy42IDIuNS0xLjIgMyAyNi42IDIzLjFhMjU0LjIxIDI1NC4yMSAwIDAgMSAyNyAzMmMtMTEuMi0zLjMtMTAuMy0zLjQtMjEuMi0zLjRsMTIuMyAzMi41em0tNi4xLTcxLjNsLTMuOSAxMy0xNC4zLTExLjh6bS0yNTQuOCA3LjFjMS43IDEwLjYgNC43IDE3LjcgOC44IDIxLjktOS4zIDYuNi0yNy41IDEzLjktNDYuNSAxNmwuNSAxLjJhNTAuMjIgNTAuMjIgMCAwIDAgMjQuOC0yLjVsLTcuMSAxM2M0LjItMS43IDEwLjEtNy4xIDE3LjctMTQuOCAxMS45LTUuNSAxMi43LTUuMSAyMC4yLTE2LTEyLjctNi40LTE1LjctMTMuNy0xOC40LTE4Ljh6bTMuNy0xMDIuM2MtNi40LTMuNC0xMC42IDMtMTIuMyAxOC45czIuNSAyOS41IDExLjggMzkuNiAxOC4yIDEwLjYgMjYuMSAzIDMuNC0yMy42LTExLjMtNDcuN2EzOS41NyAzOS41NyAwIDAgMC0xNC4yNy0xMy44em0tNC43IDQ2LjNjNS40IDIuMiAxMC41IDEuOSAxMi4zLTEwLjZ2LTQuN2wtMS4yLjVjLTQuMy0zLjEtMi41LTQuNS0xLjctNi4ybC41LS41Yy0uOS0xLjItNS04LjEtMTIuNSA0LjctLjUtMTMuNS41LTIxLjkgMy0yNC44IDEuMi0yLjUgNC43LTEuMiAxMS4zIDQuMiA2LjQgNS40IDExLjMgMTYgMTUuMiAzMi41IDYuNSAyOC0xOS44IDI2LjItMjYuOSA0Ljl6bS00NS01LjVjMS42LjMgOS4zLTEuMSA5LjMtMTQuOGgtLjVjLTUuNC0xLjEtMi4yLTUuNS0uNy01LjktMS43LTMtMy40LTQuMi01LjQtNC43LTguMSAwLTExLjYgMTIuNy04LjEgMjEuMmE3LjUxIDcuNTEgMCAwIDAgNS40MyA0LjJ6TTIxNiA4Mi45bC0yLjUuNS41IDNhNDguOTQgNDguOTQgMCAwIDEgMjYuMSA1LjljLTIuNS01LjUtMTAtMTQuMy0yOC4zLTE0LjNsLjUgMi41em0tNzEuOCA0OS40YzIxLjcgMTYuOCAxNi41IDIxLjQgNDYuNSAyMy42bC0yLjktNC43YTQyLjY3IDQyLjY3IDAgMCAwIDE0LjgtMjguM2MxLjctMTYtMS4yLTI5LjUtOC44LTQxLjNsMTMtNy42YTIuMjYgMi4yNiAwIDAgMC0uNS0xLjcgMTQuMjEgMTQuMjEgMCAwIDAtMTMuNSAxLjdjLTEyLjcgNi43LTI4IDIwLjktMjkgMjIuNC0xLjcgMS43LTMuNCA1LjktNS40IDEzLjVhOTkuNjEgOTkuNjEgMCAwIDAtMi45IDIzLjZjLTQuNy04LTEwLjUtNi40LTE5LjktNS45bDcuMSA3LjZjLTE2LjUgMC0yMy4zIDE1LjQtMjMuNiAxNiA2LjggMCA0LjYtNy42IDMwLTEyLjMtNC4zLTYuMy0zLjMtNS00LjktNi42em0xOC43LTE4LjdjMS4yLTcuNiAzLjQtMTMgNi40LTE3LjIgNS40LTYuNCAxMC42LTEwLjEgMTYtMTEuOCA0LjItMS43IDcuMSAxLjIgMTAuMSA5LjNhNzIuMTQgNzIuMTQgMCAwIDEgMyAyNS4zYy0uNSA5LjMtMy40IDE3LjItOC40IDIzLjEtMi45IDMuNC01LjQgNS45LTYuNCA3LjZhMzkuMjEgMzkuMjEgMCAwIDEtMTEuMy0uNWwtNy4xLTMuNC01LjQtNi40Yy44LTEwIDEuMy0xOC44IDMuMS0yNnptNDIgNTYuMWMtMzQuOCAxNC40LTM0LjcgMTQtMzYuMSAxNC4zLTIwLjggNC43LTE5LTI0LjQtMTguOS0yNC44bDUuOS0xLjItLjUtMi41Yy0yMC4yLTIuNi0zMSA0LjItMzIuNSA0LjkuNS41IDMgMy40IDUuOSA5LjMgNC4yLTYuNCA4LjgtMTAuMSAxNS4yLTEwLjZhODMuNDcgODMuNDcgMCAwIDAgMS43IDMzLjdjLjEuNSAyLjYgMTcuNCAyNy41IDI0LjEgMTEuMyAzIDI3IDEuMiA0OC45LTUuNGwtOS4yLjVjLTQuMi0xNC44LTYuNC0yNC44LTUuOS0yOS41IDExLjMtOC44IDIxLjktMTEuMyAzMC43LTcuNmgyLjVsLTExLjgtNy42LTcuMS41Yy01LjkgMS4yLTEyLjMgNC4yLTE5LjQgOC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVtZWNvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMi45IDguNDNjOS45LTUuNzMgMjYtNS44MiAzNS45NS0uMjFMNDMwIDExNS44NWMxMCA1LjYgMTggMTkuNDQgMTggMzAuODZWMzY0YzAgMTEuNDQtOC4wNiAyNS4yOS0xOCAzMUwyMzguODEgNTAzLjc0Yy05LjkzIDUuNjYtMjYgNS41Ny0zNS44NS0uMjFMMTcuODYgMzk1LjEyQzggMzg5LjM0IDAgMzc1LjM4IDAgMzY0VjE0Ni43MWMwLTExLjQ0IDgtMjUuMzYgMTcuOTEtMzEuMDh6bS03Ny40IDE5OS44M2MtMTUuOTQgMC0zMS44OS4xNC00Ny44My4xNHYxMDEuNDVIOTYuOFYyODBoMjguN2M0OS43MSAwIDQ5LjU2LTcxLjc0IDAtNzEuNzR6bTE0MC4xNCAxMDAuMjlsLTMwLjczLTM0LjY0YzM3LTcuNTEgMzQuOC02NS4yMy0xMC44Ny02NS41MS0xNi4wOSAwLTMyLjE3LS4xNC00OC4yNi0uMTR2MTAxLjU5aDE5LjEzdi0zMy45MWgxOC40MWwyOS41NiAzMy45MWgyMi43NnptLTQxLjU5LTgyLjMyYzIzLjM0IDAgMjMuMjYgMzIuNDYgMCAzMi40NmgtMjkuMTN2LTMyLjQ2em0tOTUuNTYtMS42YzIxLjE4IDAgMjEuMTEgMzguODUgMCAzOC44NUg5Ni4xOHYtMzguODR6bTE5Mi42NS0xOC4yNWMtNjguNDYgMC03MSAxMDUuOCAwIDEwNS44IDY5LjQ4LS4wMSA2OS40MS0xMDUuOCAwLTEwNS44em0wIDE3LjM5YzQ0LjEyIDAgNDQuOCA3MC44NiAwIDcwLjg2cy00NC40My03MC44NiAwLTcwLjg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVtZWlzbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDg4LjI4NmMwLTEwIDYuMjg2LTIxLjcxNCAxNy43MTUtMjEuNzE0IDExLjE0MiAwIDE3LjcxNCAxMS43MTQgMTcuNzE0IDIxLjcxNCAwIDEwLjI4NS02LjU3MiAyMS43MTQtMTcuNzE0IDIxLjcxNEMyMTQuMjg2IDExMCAyMDggOTguNTcxIDIwOCA4OC4yODZ6bTMwNCAxNjBjMCAzNi4wMDEtMTEuNDI5IDEwMi4yODYtMzYuMjg2IDEyOS43MTQtMjIuODU4IDI0Ljg1OC04Ny40MjggNjEuMTQzLTEyMC44NTcgNzAuNTcybC0xLjE0My4yODZ2MzIuNTcxYzAgMTYuMjg2LTEyLjU3MiAzMC41NzEtMjkuMTQzIDMwLjU3MS0xMCAwLTE5LjQyOS01LjcxNC0yNC41NzItMTQuMjg2LTUuNDI3IDguNTcyLTE0Ljg1NiAxNC4yODYtMjQuODU2IDE0LjI4Ni0xMCAwLTE5LjQyOS01LjcxNC0yNC44NTgtMTQuMjg2LTUuMTQyIDguNTcyLTE0LjU3MSAxNC4yODYtMjQuNTcgMTQuMjg2LTEwLjI4NiAwLTE5LjQyOS01LjcxNC0yNC44NTgtMTQuMjg2LTUuMTQzIDguNTcyLTE0LjU3MSAxNC4yODYtMjQuNTcxIDE0LjI4Ni0xOC44NTcgMC0yOS40MjktMTUuNzE0LTI5LjQyOS0zMi44NTctMTYuMjg2IDEyLjI4NS0zNS43MTUgMTkuNDI4LTU2LjU3MSAxOS40MjgtMjIgMC00My40MjktOC4yODUtNjAuMjg2LTIyLjg1NyAxMC4yODUtLjI4NiAyMC41NzEtMi4yODYgMzAuMjg1LTUuNzE0LTIwLjg1Ny01LjcxNC0zOS40MjgtMTguODU3LTUyLTM2LjI4NiAyMS4zNyA0LjY0NSA0Ni4yMDkgMS42NzMgNjcuMTQzLTExLjE0My0yMi0yMi01Ni41NzEtNTguODU3LTY4LjU3Mi04Ny40MjhDMS4xNDMgMzIxLjcxNCAwIDMwMy43MTQgMCAyODkuNDI5YzAtNDkuNzE0IDIwLjI4Ni0xNjAgODYuMjg2LTE2MCAxMC41NzEgMCAxOC44NTcgNC44NTggMjMuMTQzIDE0Ljg1N2ExNTguNzkyIDE1OC43OTIgMCAwIDEgMTItMTUuNDI4YzItMi41NzIgNS43MTQtNS40MjkgNy4xNDMtOC4yODYgNy45OTktMTIuNTcxIDExLjcxNC0yMS4xNDIgMjEuNzE0LTM0QzE4Mi41NzEgNDUuNDI4IDIzMiAxNy4xNDMgMjg1LjE0MyAxNy4xNDNjNiAwIDEyIC4yODUgMTcuNzE0IDEuMTQzQzMxMy43MTQgNi41NzEgMzI4Ljg1NyAwIDM0NC41NzIgMGMxNC41NzEgMCAyOS43MTQgNiA0MCAxNi4yODYuODU3Ljg1OCAxLjQyOCAyLjI4NiAxLjQyOCAzLjQyOCAwIDMuNzE0LTEwLjI4NSAxMy40MjktMTIuODU3IDE2LjI4NiA0LjI4NiAxLjQyOSAxNS43MTQgNi44NTggMTUuNzE0IDEyIDAgMi44NTctMi44NTcgNS4xNDMtNC41NzEgNy4xNDMgMzEuNDI5IDI3LjcxNCA0OS40MjkgNjcuMTQzIDU2LjI4NiAxMDggNC4yODYtNS4xNDMgMTAuMjg1LTguNTcyIDE3LjE0My04LjU3MiAxMC41NzEgMCAyMC44NTcgNy4xNDQgMjguNTcxIDE0LjAwMUM1MDcuMTQzIDE4Ny4xNDMgNTEyIDIyMS43MTQgNTEyIDI0OC4yODZ6TTE4OCA4OS40MjhjMCAxOC4yODYgMTIuNTcxIDM3LjE0MyAzMi4yODYgMzcuMTQzIDE5LjcxNCAwIDMyLjI4NS0xOC44NTcgMzIuMjg1LTM3LjE0MyAwLTE4LTEyLjU3MS0zNi44NTctMzIuMjg1LTM2Ljg1Ny0xOS43MTUgMC0zMi4yODYgMTguODU4LTMyLjI4NiAzNi44NTd6TTIzNy43MTQgMTk0YzAtMTkuNzE0IDMuNzE0LTM5LjE0MyA4LjU3MS01OC4yODYtNTIuMDM5IDc5LjUzNC0xMy41MzEgMTg0LjU3MSA2OC44NTggMTg0LjU3MSAyMS40MjggMCA0Mi41NzEtNy43MTQgNjAtMjAgMi03LjQyOSAzLjcxNC0xNC44NTcgMy43MTQtMjIuNTcyIDAtMTQuMjg2LTYuMjg2LTIxLjQyOC0yMC41NzItMjEuNDI4LTQuNTcxIDAtOS4xNDMuODU3LTEzLjQyOSAxLjcxNC02My4zNDMgMTIuNjY4LTEwNy4xNDIgMy42NjktMTA3LjE0Mi02My45OTl6bS00MS4xNDIgMjU0Ljg1OGMwLTExLjE0My04Ljg1OC0yMC44NTctMjAuMjg2LTIwLjg1Ny0xMS40MjkgMC0yMCA5LjcxNS0yMCAyMC44NTd2MzIuNTcxYzAgMTEuMTQzIDguNTcxIDIxLjE0MiAyMCAyMS4xNDIgMTEuNDI4IDAgMjAuMjg2LTkuNzE1IDIwLjI4Ni0yMS4xNDJ2LTMyLjU3MXptNDkuMTQzIDBjMC0xMS4xNDMtOC41NzItMjAuODU3LTIwLTIwLjg1Ny0xMS40MjkgMC0yMC4yODYgOS43MTUtMjAuMjg2IDIwLjg1N3YzMi41NzFjMCAxMS4xNDMgOC44NTcgMjEuMTQyIDIwLjI4NiAyMS4xNDIgMTEuNDI4IDAgMjAtMTAgMjAtMjEuMTQydi0zMi41NzF6bTQ5LjcxMyAwYzAtMTEuMTQzLTguODU3LTIwLjg1Ny0yMC4yODUtMjAuODU3LTExLjQyOSAwLTIwLjI4NiA5LjcxNS0yMC4yODYgMjAuODU3djMyLjU3MWMwIDExLjE0MyA4Ljg1NyAyMS4xNDIgMjAuMjg2IDIxLjE0MiAxMS40MjggMCAyMC4yODUtOS43MTUgMjAuMjg1LTIxLjE0MnYtMzIuNTcxem00OS43MTUgMGMwLTExLjE0My04Ljg1Ny0yMC44NTctMjAuMjg2LTIwLjg1Ny0xMS40MjggMC0yMC4yODYgOS43MTUtMjAuMjg2IDIwLjg1N3YzMi41NzFjMCAxMS4xNDMgOC44NTggMjEuMTQyIDIwLjI4NiAyMS4xNDIgMTEuNDI5IDAgMjAuMjg2LTEwIDIwLjI4Ni0yMS4xNDJ2LTMyLjU3MXpNNDIxLjcxNCAyODZjLTMwLjg1NyA1OS4xNDItOTAuMjg1IDEwMi41NzItMTU4LjU3MSAxMDIuNTcyLTk2LjU3MSAwLTE2MC41NzEtODQuNTcyLTE2MC41NzEtMTc2LjU3MiAwLTE2Ljg1NyAyLTMzLjQyOSA2LTQ5LjcxNC0yMCAzMy43MTUtMjkuNzE0IDcyLjU3Mi0yOS43MTQgMTExLjQyOSAwIDYwLjI4NiAyNC44NTcgMTIxLjcxNSA3MS40MjkgMTYwLjg1NyA1LjE0My05LjcxNCAxNC44NTctMTYuMjg2IDI2LTE2LjI4NiAxMCAwIDE5LjQyOCA1LjcxNCAyNC41NzEgMTQuMjg2IDUuNDI5LTguNTcxIDE0LjU3MS0xNC4yODYgMjQuODU4LTE0LjI4NiAxMCAwIDE5LjQyOCA1LjcxNCAyNC41NzEgMTQuMjg2IDUuNDI5LTguNTcxIDE0Ljg1Ny0xNC4yODYgMjQuODU4LTE0LjI4NiAxMCAwIDE5LjQyOCA1LjcxNCAyNC44NTcgMTQuMjg2IDUuMTQzLTguNTcxIDE0LjU3MS0xNC4yODYgMjQuNTcyLTE0LjI4NiAxMC44NTcgMCAyMC44NTcgNi41NzIgMjUuNzE0IDE2IDQzLjQyNy0zNi4yODYgNjguNTY5LTkyIDcxLjQyNi0xNDguMjg2em0xMC41NzItOTkuNzE0YzAtNTMuNzE0LTM0LjU3MS0xMDUuNzE0LTkyLjU3Mi0xMDUuNzE0LTMwLjI4NSAwLTU4LjU3MSAxNS4xNDMtNzguODU3IDM2Ljg1N0MyNDAuODYyIDE4My44MTIgMjMzLjQxIDI1NCAzMDIuMjg2IDI1NGMyOC44MDUgMCA5Ny4zNTctMjguNTM4IDg0LjI4NiAzNi44NTcgMjguODU3LTI2IDQ1LjcxNC02NS43MTQgNDUuNzE0LTEwNC41NzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoaW5rUGVha3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY1LjQgNDA5LjRsODcuMS0xNTAuMi0zMi0uMy01NS4xIDk1TDI1OS4yIDAgMjMgNDA3LjRsMzIgLjNMMjU5LjIgNTUuNnptLTM1NS4zLTQ0LjFoMzIuMWwxMTcuNC0yMDIuNUw0NjMgNTExLjlsMzIuNS4xLTIzNS44LTQwNC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaHJlYWRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzMS41IDIzNS43YzIuMiAuOSA0LjIgMS45IDYuMyAyLjhjMjkuMiAxNC4xIDUwLjYgMzUuMiA2MS44IDYxLjRjMTUuNyAzNi41IDE3LjIgOTUuOC0zMC4zIDE0My4yYy0zNi4yIDM2LjItODAuMyA1Mi41LTE0Mi42IDUzaC0uM2MtNzAuMi0uNS0xMjQuMS0yNC4xLTE2MC40LTcwLjJjLTMyLjMtNDEtNDguOS05OC4xLTQ5LjUtMTY5LjZWMjU2di0uMkMxNyAxODQuMyAzMy42IDEyNy4yIDY1LjkgODYuMkMxMDIuMiA0MC4xIDE1Ni4yIDE2LjUgMjI2LjQgMTZoLjNjNzAuMyAuNSAxMjQuOSAyNCAxNjIuMyA2OS45YzE4LjQgMjIuNyAzMiA1MCA0MC42IDgxLjdsLTQwLjQgMTAuOGMtNy4xLTI1LjgtMTcuOC00Ny44LTMyLjItNjUuNGMtMjkuMi0zNS44LTczLTU0LjItMTMwLjUtNTQuNmMtNTcgLjUtMTAwLjEgMTguOC0xMjguMiA1NC40QzcyLjEgMTQ2LjEgNTguNSAxOTQuMyA1OCAyNTZjLjUgNjEuNyAxNC4xIDEwOS45IDQwLjMgMTQzLjNjMjggMzUuNiA3MS4yIDUzLjkgMTI4LjIgNTQuNGM1MS40LS40IDg1LjQtMTIuNiAxMTMuNy00MC45YzMyLjMtMzIuMiAzMS43LTcxLjggMjEuNC05NS45Yy02LjEtMTQuMi0xNy4xLTI2LTMxLjktMzQuOWMtMy43IDI2LjktMTEuOCA0OC4zLTI0LjcgNjQuOGMtMTcuMSAyMS44LTQxLjQgMzMuNi03Mi43IDM1LjNjLTIzLjYgMS4zLTQ2LjMtNC40LTYzLjktMTZjLTIwLjgtMTMuOC0zMy0zNC44LTM0LjMtNTkuM2MtMi41LTQ4LjMgMzUuNy04MyA5NS4yLTg2LjRjMjEuMS0xLjIgNDAuOS0uMyA1OS4yIDIuOGMtMi40LTE0LjgtNy4zLTI2LjYtMTQuNi0zNS4yYy0xMC0xMS43LTI1LjYtMTcuNy00Ni4yLTE3LjhIMjI3Yy0xNi42IDAtMzkgNC42LTUzLjMgMjYuM2wtMzQuNC0yMy42YzE5LjItMjkuMSA1MC4zLTQ1LjEgODcuOC00NS4xaC44YzYyLjYgLjQgOTkuOSAzOS41IDEwMy43IDEwNy43bC0uMiAuMnptLTE1NiA2OC44YzEuMyAyNS4xIDI4LjQgMzYuOCA1NC42IDM1LjNjMjUuNi0xLjQgNTQuNi0xMS40IDU5LjUtNzMuMmMtMTMuMi0yLjktMjcuOC00LjQtNDMuNC00LjRjLTQuOCAwLTkuNiAuMS0xNC40IC40Yy00Mi45IDIuNC01Ny4yIDIzLjItNTYuMiA0MS44bC0uMSAuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGlrdG9rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCwyMDkuOTFhMjEwLjA2LDIxMC4wNiwwLDAsMS0xMjIuNzctMzkuMjVWMzQ5LjM4QTE2Mi41NSwxNjIuNTUsMCwxLDEsMTg1LDE4OC4zMVYyNzguMmE3NC42Miw3NC42MiwwLDEsMCw1Mi4yMyw3MS4xOFYwbDg4LDBhMTIxLjE4LDEyMS4xOCwwLDAsMCwxLjg2LDIyLjE3aDBBMTIyLjE4LDEyMi4xOCwwLDAsMCwzODEsMTAyLjM5YTEyMS40MywxMjEuNDMsMCwwLDAsNjcsMjAuMTRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYWRlRmVkZXJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOC44Yy0xMzcgMC0yNDggMTExLTI0OCAyNDhzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OC0xMTEtMjQ4LTI0OC0yNDh6bTAgNDgyLjhjLTEyOS43IDAtMjM0LjgtMTA1LjEtMjM0LjgtMjM0LjhTMTE4LjMgMjIgMjQ4IDIyczIzNC44IDEwNS4xIDIzNC44IDIzNC44UzM3Ny43IDQ5MS42IDI0OCA0OTEuNnptMTU1LjEtMzI4LjV2LTQ2LjhIMjA5LjNWMTk4SDU0LjJsMzYuNyA0NmgxMTcuN3YxOTYuOGg0OC44VjI0NWg4My4zdi00N2gtODMuM3YtMzQuOGgxNDUuN3ptLTczLjMgNDUuMXYyMy45aC04Mi45djE5Ny40aC0yNi44VjIzMi4xSDk2LjNsLTIwLjEtMjMuOWgxNDMuOXYtODAuNmgxNzEuOFYxNTJoLTE0NXY1Ni4yem0tMTYxLjMtNjlsLTEyLjQtMjAuNyAyLjEgMjMuOC0yMy41IDUuNCAyMy4zIDUuNC0yLjEgMjQgMTIuMy0yMC41IDIyLjIgOS41LTE1LjctMTguMSAxNS44LTE4LjF6bS0yOS42LTE5LjdsOS4zLTExLjUtMTIuNyA1LjktOC0xMi40IDEuNyAxMy45LTE0LjMgMy44IDEzLjcgMi43LS44IDE0LjcgNi44LTEyLjIgMTMuOCA1LjN6bTE2NS40IDE0NS4ybC0xMy4xIDUuNi03LjMtMTIuMiAxLjMgMTQuMi0xMy45IDMuMiAxMy45IDMuMi0xLjIgMTQuMiA3LjMtMTIuMiAxMy4xIDUuNS05LjQtMTAuN3ptMTA2LjktNzcuMmwtMjAuOSA5LjEtMTItMTkuNiAyLjIgMjIuNy0yMi4zIDUuNCAyMi4yIDQuOS0xLjggMjIuOSAxMS41LTE5LjYgMjEuMiA4LjgtMTUuMS0xN3pNMjQ4IDI5LjljLTEyNS4zIDAtMjI2LjkgMTAxLjYtMjI2LjkgMjI2LjlTMTIyLjcgNDgzLjcgMjQ4IDQ4My43czIyNi45LTEwMS42IDIyNi45LTIyNi45UzM3My4zIDI5LjkgMjQ4IDI5Ljl6TTM0Mi42IDE5NnY1MWgtODMuM3YxOTUuN2gtNTIuN1YyNDUuOUg4OS45bC00MC00OS45aDE1Ny40di04MS42aDE5Ny44djUwLjdIMjU5LjRWMTk2ek0yNDggNDMuMmM2MC4zIDAgMTE0LjggMjUgMTUzLjYgNjUuMkgyMDIuNVYxOTBINDUuMUM3My4xIDEwNC44IDE1My40IDQzLjIgMjQ4IDQzLjJ6bTAgNDI3LjFjLTExNy45IDAtMjEzLjYtOTUuNi0yMTMuNi0yMTMuNSAwLTIxLjIgMy4xLTQxLjggOC45LTYxLjFMODcuMSAyNTJoMTE0Ljd2MTk2LjhoNjQuNlYyNTNoODMuM3YtNjIuN2gtODMuMnYtMTkuMmgxNDUuNnYtNTAuOGMzMC44IDM3IDQ5LjMgODQuNiA0OS4zIDEzNi41LjEgMTE3LjktOTUuNSAyMTMuNS0yMTMuNCAyMTMuNXpNMTc4LjggMjc1bC0xMS0yMS40IDEuNyAyNC41LTIzLjcgMy45IDIzLjggNS45LTMuNyAyMy44IDEzLTIwLjkgMjEuNSAxMC44LTE1LjgtMTguOCAxNi45LTE3LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyZWxsbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTIuMyAzMkg1Ni4xQzI1LjEgMzIgMCA1Ny4xIDAgODhjLS4xIDAgMC00IDAgMzM2IDAgMzAuOSAyNS4xIDU2IDU2IDU2aDMzNi4yYzMwLjgtLjIgNTUuNy0yNS4yIDU1LjctNTZWODhjLjEtMzAuOC0yNC44LTU1LjgtNTUuNi01NnpNMTk3IDM3MS4zYy0uMiAxNC43LTEyLjEgMjYuNi0yNi45IDI2LjZIODcuNGMtMTQuOC4xLTI2LjktMTEuOC0yNy0yNi42VjExNy4xYzAtMTQuOCAxMi0yNi45IDI2LjktMjYuOWg4Mi45YzE0LjggMCAyNi45IDEyIDI2LjkgMjYuOXYyNTQuMnptMTkzLjEtMTEyYzAgMTQuOC0xMiAyNi45LTI2LjkgMjYuOWgtODFjLTE0LjggMC0yNi45LTEyLTI2LjktMjYuOVYxMTcuMmMwLTE0LjggMTItMjYuOSAyNi44LTI2LjloODEuMWMxNC44IDAgMjYuOSAxMiAyNi45IDI2Ljl2MTQyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR1bWJsciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDkuOCA0ODAuM2MtMTMuNiAxNC41LTUwIDMxLjctOTcuNCAzMS43LTEyMC44IDAtMTQ3LTg4LjgtMTQ3LTE0MC42di0xNDRIMTcuOWMtNS41IDAtMTAtNC41LTEwLTEwdi02OGMwLTcuMiA0LjUtMTMuNiAxMS4zLTE2IDYyLTIxLjggODEuNS03NiA4NC4zLTExNy4xLjgtMTEgNi41LTE2LjMgMTYuMS0xNi4zaDcwLjljNS41IDAgMTAgNC41IDEwIDEwdjExNS4yaDgzYzUuNSAwIDEwIDQuNCAxMCA5Ljl2ODEuN2MwIDUuNS00LjUgMTAtMTAgMTBoLTgzLjRWMzYwYzAgMzQuMiAyMy43IDUzLjYgNjggMzUuOCA0LjgtMS45IDktMy4yIDEyLjctMi4yIDMuNS45IDUuOCAzLjQgNy40IDcuOWwyMiA2NC4zYzEuOCA1IDMuMyAxMC42LS40IDE0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR3aXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTEuMTcsMTAzLjQ3SDM1Mi41NHYxMDkuN2gzOC42M1pNMjg1LDEwM0gyNDYuMzdWMjEyLjc1SDI4NVpNMTIwLjgzLDAsMjQuMzEsOTEuNDJWNDIwLjU4SDE0MC4xNFY1MTJsOTYuNTMtOTEuNDJoNzcuMjVMNDg3LjY5LDI1NlYwWk00NDkuMDcsMjM3Ljc1bC03Ny4yMiw3My4xMkgyOTQuNjFsLTY3LjYsNjR2LTY0SDE0MC4xNFYzNi41OEg0NDkuMDdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR3aXR0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU5LjM3IDE1MS43MTZjLjMyNSA0LjU0OC4zMjUgOS4wOTcuMzI1IDEzLjY0NSAwIDEzOC43Mi0xMDUuNTgzIDI5OC41NTgtMjk4LjU1OCAyOTguNTU4LTU5LjQ1MiAwLTExNC42OC0xNy4yMTktMTYxLjEzNy00Ny4xMDYgOC40NDcuOTc0IDE2LjU2OCAxLjI5OSAyNS4zNCAxLjI5OSA0OS4wNTUgMCA5NC4yMTMtMTYuNTY4IDEzMC4yNzQtNDQuODMyLTQ2LjEzMi0uOTc1LTg0Ljc5Mi0zMS4xODgtOTguMTEyLTcyLjc3MiA2LjQ5OC45NzQgMTIuOTk1IDEuNjI0IDE5LjgxOCAxLjYyNCA5LjQyMSAwIDE4Ljg0My0xLjMgMjcuNjE0LTMuNTczLTQ4LjA4MS05Ljc0Ny04NC4xNDMtNTEuOTgtODQuMTQzLTEwMi45ODV2LTEuMjk5YzEzLjk2OSA3Ljc5NyAzMC4yMTQgMTIuNjcgNDcuNDMxIDEzLjMxOS0yOC4yNjQtMTguODQzLTQ2Ljc4MS01MS4wMDUtNDYuNzgxLTg3LjM5MSAwLTE5LjQ5MiA1LjE5Ny0zNy4zNiAxNC4yOTQtNTIuOTU0IDUxLjY1NSA2My42NzUgMTI5LjMgMTA1LjI1OCAyMTYuMzY1IDEwOS44MDctMS42MjQtNy43OTctMi41OTktMTUuOTE4LTIuNTk5LTI0LjA0IDAtNTcuODI4IDQ2Ljc4Mi0xMDQuOTM0IDEwNC45MzQtMTA0LjkzNCAzMC4yMTMgMCA1Ny41MDIgMTIuNjcgNzYuNjcgMzMuMTM3IDIzLjcxNS00LjU0OCA0Ni40NTYtMTMuMzIgNjYuNTk5LTI1LjM0LTcuNzk4IDI0LjM2Ni0yNC4zNjYgNDQuODMzLTQ2LjEzMiA1Ny44MjcgMjEuMTE3LTIuMjczIDQxLjU4NC04LjEyMiA2MC40MjYtMTYuMjQzLTE0LjI5MiAyMC43OTEtMzIuMTYxIDM5LjMwOC01Mi42MjggNTQuMjUzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUeXBvMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzguNyA3OC40YzAtMjQuNyA1LjQtMzIuNCAxMy45LTM5LjQtNjkuNSA4LjUtMTQ5LjMgMzQtMTc2LjMgNjYuNC01LjQgNy43LTkuMyAyMC44LTkuMyAzNy4xQzcgMjQ2IDExMy44IDQ4MCAxOTEuMSA0ODBjMzYuMyAwIDk3LjMtNTkuNSAxNDYuNy0xMzktNyAyLjMtMTEuNiAyLjMtMTguNSAyLjMtNTcuMiAwLTE0MC42LTE5OC41LTE0MC42LTI2NC45ek0zMDEuNSAzMmMtMzAuMSAwLTQxLjcgNS40LTQxLjcgMzYuMyAwIDY2LjQgNTMuOCAxOTguNSAxMDEuNyAxOTguNSAyNi4zIDAgNzguOC05OS43IDc4LjgtMTgyLjMgMC00MC45LTY3LTUyLjUtMTM4LjgtNTIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVWJlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTQuMSAzMkgzMy45QzE1LjIgMzIgMCA0Ny4yIDAgNjUuOVY0NDZjMCAxOC44IDE1LjIgMzQgMzMuOSAzNEg0MTRjMTguNyAwIDMzLjktMTUuMiAzMy45LTMzLjlWNjUuOUM0NDggNDcuMiA0MzIuOCAzMiA0MTQuMSAzMnpNMjM3LjYgMzkxLjFDMTYzIDM5OC42IDk2LjQgMzQ0LjIgODguOSAyNjkuNmg5NC40VjI5MGMwIDMuNyAzIDYuOCA2LjggNi44SDI1OGMzLjcgMCA2LjgtMyA2LjgtNi44di02Ny45YzAtMy43LTMtNi44LTYuOC02LjhoLTY3LjljLTMuNyAwLTYuOCAzLTYuOCA2Ljh2MjAuNEg4OC45YzctNjkuNCA2NS40LTEyMi4yIDEzNS4xLTEyMi4yIDY5LjcgMCAxMjguMSA1Mi44IDEzNS4xIDEyMi4yIDcuNSA3NC41LTQ2LjkgMTQxLjEtMTIxLjUgMTQ4LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVidW50dSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjkuMiA3NUE3NS42IDc1LjYgMCAxIDAgMzE3LjkgNzVhNzUuNiA3NS42IDAgMSAwIDE1MS4yIDB6TTE1NC4yIDI0MC43QTc1LjYgNzUuNiAwIDEgMCAzIDI0MC43YTc1LjYgNzUuNiAwIDEgMCAxNTEuMiAwek01NyAzNDZDNzUuNiAzOTIuOSAxMDggNDMzIDE1MCA0NjEuMXM5MS41IDQyLjYgMTQyIDQxLjdjLTE0LjctMTguNi0yMi45LTQxLjUtMjMuMi02NS4yYy02LjgtLjktMTMuMy0yLjEtMTkuNS0zLjRjLTI2LjgtNS43LTUxLjktMTcuMy03My42LTM0cy0zOS4zLTM4LjEtNTEuNy02Mi41Yy0yMC45IDkuOS00NC41IDEyLjgtNjcuMSA4LjJ6bTM5NS4xIDg5LjhhNzUuNiA3NS42IDAgMSAwIC0xNTEuMiAwIDc1LjYgNzUuNiAwIDEgMCAxNTEuMiAwek00NDQgMzUxLjZjMTguNSAxNC44IDMxLjYgMzUuMiAzNy4yIDU4LjJjMzMuMy00MS4zIDUyLjYtOTIuMiA1NC44LTE0NS4ycy0xMi41LTEwNS40LTQyLjItMTQ5LjRjLTguNiAyMS41LTI0IDM5LjYtNDMuOCA1MS42YzE1LjQgMjguNiAyMi45IDYwLjggMjEuOSA5My4ycy0xMC43IDY0LTI4IDkxLjZ6TTEwMS4xIDEzNS40YzEyLjQgMi43IDI0LjMgNy41IDM1LjEgMTQuM2MxNi42LTI0LjIgMzguOS00NC4xIDY0LjgtNThTMjU1LjggNzAuNCAyODUuMiA3MGMuMi01LjkgLjktMTEuOSAyLTE3LjdjMy42LTE2LjcgMTEuMS0zMi4zIDIxLjgtNDUuNWMtNDcuNy0zLjgtOTUuNCA2LTEzNy42IDI4LjVTOTQuMyA5MS43IDcwLjggMTMzLjRjMi43LS4yIDUuMy0uMyA4LS4zYzcuNSAwIDE1IC44IDIyLjQgMi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVaWtpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDMuOSAxMjh2MjU2TDIxOCA1MTIgMCAzODRWMTY5LjdsODcuNiA0NS4xdjExN2wxMzMuNSA3NS41IDEzNS44LTc1LjV2LTE1MWwtMTAxLjEtNTcuNiA4Ny42LTUzLjFMNDQzLjkgMTI4ek0zMDguNiA0OS4xTDIyMy44IDBsLTg4LjYgNTQuOCA4NiA0Ny4zIDg3LjQtNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVtYnJhY28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU1LjM1IDhDMTE4LjM2IDcuODMgNy4xNCAxMTguNzIgNyAyNTUuNjhjLS4wNyAxMzcgMTExIDI0OC4yIDI0OCAyNDguMjcgMTM2Ljg1IDAgMjQ3LjgyLTExMC43IDI0OC0yNDcuNjdTMzkyLjM0IDguMTcgMjU1LjM1IDh6bTE0NSAyNjZxLTEuMTQgNDAuNjgtMTQgNjV0LTQzLjUxIDM1cS0zMC42MSAxMC43LTg1LjQ1IDEwLjQ3aC00LjZxLTU0Ljc4LjIyLTg1LjQ0LTEwLjQ3dC00My41Mi0zNXEtMTIuODUtMjQuMzYtMTQtNjVhMjI0LjgxIDIyNC44MSAwIDAgMSAwLTMwLjcxIDQxOC4zNyA0MTguMzcgMCAwIDEgMy42LTQzLjg4YzEuODgtMTMuMzkgMy41Ny0yMi41OCA1LjQtMzIgMS00Ljg4IDEuMjgtNi40MiAxLjgyLTguNDVhNS4wOSA1LjA5IDAgMCAxIDQuOS0zLjg5aC42OWwzMiA1YTUuMDcgNS4wNyAwIDAgMSA0LjE2IDUgNSA1IDAgMCAxIDAgLjc3bC0xLjcgOC43OHEtMi40MSAxMy4yNS00Ljg0IDMzLjY4YTM4MC42MiAzODAuNjIgMCAwIDAtMi42NCA0Mi4xNXEtLjI4IDQwLjQzIDguMTMgNTkuODNhNDMuODcgNDMuODcgMCAwIDAgMzEuMzEgMjUuMThBMjQzIDI0MyAwIDAgMCAyNTAgMzQwLjZoMTAuMjVhMjQyLjY0IDI0Mi42NCAwIDAgMCA1Ny4yNy01LjE2IDQzLjg2IDQzLjg2IDAgMCAwIDMxLjE1LTI1LjIzcTguNTMtMTkuNDIgOC4xMy01OS43OGEzODggMzg4IDAgMCAwLTIuNi00Mi4xNXEtMi40OC0yMC4zOC00Ljg5LTMzLjY4bC0xLjY5LTguNzhhNSA1IDAgMCAxIDAtLjc3IDUgNSAwIDAgMSA0LjItNWwzMi01aC44MmE1IDUgMCAwIDEgNC45IDMuODljLjU1IDIuMDUuODEgMy41NyAxLjgzIDguNDUgMS44MiA5LjYyIDMuNTIgMTguNzggNS4zOSAzMmE0MTUuNzEgNDE1LjcxIDAgMCAxIDMuNjEgNDMuODggMjI4LjA2IDIyOC4wNiAwIDAgMS0uMDQgMzAuNzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuY2hhcnRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzEuNzMsMjMyLjgxM0E1LjM4MSw1LjM4MSwwLDAsMCwxNzYuNywyMjkuNSw0OC4wODEsNDguMDgxLDAsMCwxLDE5MS42LDIwNC4yNDRjMS4yNDMtLjgyOCwxLjY1Ny0yLjQ4NCwxLjY1Ny00LjE0MWE0LjIyLDQuMjIsMCwwLDAtMi4wNzEtMy4zMTJMNzQuNDI5LDEyOC40NzMsMTQ4Ljk1OCw4NWE5Ljk0MSw5Ljk0MSwwLDAsMCw0Ljk2OC04LjI4MSw5LjEwOCw5LjEwOCwwLDAsMC00Ljk2OC04LjI4MUwxMjYuNiw1NS42YTkuNzQ4LDkuNzQ4LDAsMCwwLTkuNTIzLDBsLTEwMC4yLDU3Ljk2NmE5Ljk0Myw5Ljk0MywwLDAsMC00Ljk2OSw4LjI4MVYyMzYuOTU0YTkuMTA5LDkuMTA5LDAsMCwwLDQuOTY5LDguMjgxTDM5LjIzNSwyNTguMDdhOC44MjksOC44MjksMCwwLDAsNC45NjgsMS4yNDIsOS40LDkuNCwwLDAsMCw2LjYyNS0yLjQ4NCwxMC44LDEwLjgsMCwwLDAsMi45LTcuMDM5VjE2NC41TDE2OS42NiwyMzIuNEE0LjUsNC41LDAsMCwwLDE3MS43MywyMzIuODEzWk0zMjMuMjcyLDM3Ny43M2ExMi40NzgsMTIuNDc4LDAsMCwwLTQuOTY5LDEuMjQybC03NC41MjgsNDMuMDYyVjI4Ny44ODJjMC0yLjktMi45LTUuOC02LjIxMS00LjU1NWE1My4wMzYsNTMuMDM2LDAsMCwxLTI4Ljk4NC40MTQsNC44Niw0Ljg2LDAsMCwwLTYuMjEsNC41NTVWNDIxLjYxOWwtNzQuNTI5LTQzLjA2MWE4LjgzLDguODMsMCwwLDAtNC45NjktMS4yNDIsOS42MzEsOS42MzEsMCwwLDAtOS41MjMsOS41MjN2MjYuMDg1YTkuMTA3LDkuMTA3LDAsMCwwLDQuOTY5LDguMjgxbDEwMC4yLDU3LjU1M0E4LjgyOSw4LjgyOSwwLDAsMCwyMjMuNDg2LDQ4MGExMS4wMjcsMTEuMDI3LDAsMCwwLDQuOTY5LTEuMjQybDEwMC4yLTU3LjU1M2E5Ljk0MSw5Ljk0MSwwLDAsMCw0Ljk2OC04LjI4MVYzODYuODM5QzMzMi44LDM4Mi4yODUsMzI4LjI0LDM3Ny43MywzMjMuMjcyLDM3Ny43M1pNMjg2LjAwNyw3OGEyMywyMywwLDEsMC0yMy0yM0EyMywyMywwLDAsMCwyODYuMDA3LDc4Wm02My42MjctMTAuMDg2YTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDM0OS42MzQsNjcuOTE0Wk00MTIuODE2LDE1MS42YTIzLDIzLDAsMSwwLTIzLTIzQTIzLDIzLDAsMCwwLDQxMi44MTYsMTUxLjZabS02My4xODItOS4yYTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDM0OS42MzQsMTQyLjRabS02My42MjcsODMuMjQ0YTIzLDIzLDAsMSwwLTIzLTIzQTIzLDIzLDAsMCwwLDI4Ni4wMDcsMjI1LjY0OFptLTYyLjA3NCwzNi4zNThhMjMsMjMsMCwxLDAtMjMtMjNBMjMsMjMsMCwwLDAsMjIzLjkzMywyNjIuMDA2Wm0xODguODgzLTgyLjM1OGEyMywyMywwLDEsMCwyMywyM0EyMywyMywwLDAsMCw0MTIuODE2LDE3OS42NDhabTAsNzIuMjcyYTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDQxMi44MTYsMjUxLjkyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmlyZWdpc3RyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNDgwYzM5LjUgMCA3Ni4yLTExLjggMTA2LjgtMzIuMkg4NS4zQzExNS44IDQ2OC4yIDE1Mi41IDQ4MCAxOTIgNDgwem0tODkuMS0xOTMuMXYtMTIuNEgwdjEyLjRjMCAyLjUgMCA1IC4xIDcuNGgxMDMuMWMtLjItMi40LS4zLTQuOS0uMy03LjR6bTIwLjUgNTdIOC41YzIuNiA4LjUgNS44IDE2LjggOS42IDI0LjhoMTM4LjNjLTEyLjktNS43LTI0LjEtMTQuMi0zMy0yNC44em0tMTcuNy0zNC43SDEuM2MuOSA3LjYgMi4yIDE1IDMuOSAyMi4zaDEwOS43Yy00LTYuOS03LjItMTQuNC05LjItMjIuM3ptLTIuOC02OS4zSDB2MTcuM2gxMDIuOXptMC0xNzMuMkgwdjQuOWgxMDIuOXptMC0zNC43SDB2Mi41aDEwMi45em0wIDY5LjNIMHY3LjRoMTAyLjl6bTAgMTA0SDB2MTQuOGgxMDIuOXptMC02OS4zSDB2OS45aDEwMi45em0wIDM0LjZIMFYxODNoMTAyLjl6bTE2Ni4yIDE2MC45aDEwOS43YzEuOC03LjMgMy4xLTE0LjcgMy45LTIyLjNIMjc4LjNjLTIuMSA3LjktNS4yIDE1LjQtOS4yIDIyLjN6bTEyLTE4NS43SDM4NFYxMzZIMjgxLjF6bTAgMzcuMkgzODR2LTEyLjRIMjgxLjF6bTAtNzQuM0gzODR2LTcuNEgyODEuMXptMC03Ni43djIuNUgzODRWMzJ6bS0yMDMgNDEwLjloMjI3LjdjMTEuOC04LjcgMjIuNy0xOC42IDMyLjItMjkuN0g0NC45YzkuNiAxMSAyMS40IDIxIDMzLjIgMjkuN3ptMjAzLTM3MS4zSDM4NHYtNC45SDI4MS4xem0wIDE0OC41SDM4NHYtMTQuOEgyODEuMXpNMzguOCA0MDUuN2gzMDUuM2M2LjctOC41IDEyLjYtMTcuNiAxNy44LTI3LjJIMjNjNS4yIDkuNiA5LjIgMTguNyAxNS44IDI3LjJ6bTE4OC44LTM3LjFIMzY3YzMuNy04IDUuOC0xNi4yIDguNS0yNC44aC0xMTVjLTguOCAxMC43LTIwLjEgMTkuMi0zMi45IDI0Ljh6bTUzLjUtODEuN2MwIDIuNS0uMSA1LS40IDcuNGgxMDMuMWMuMS0yLjUuMi00LjkuMi03LjR2LTEyLjRIMjgxLjF6bTAtMjkuN0gzODR2LTE3LjNIMjgxLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0My41ODMgOTEuNjAyN0wzMjMuNjk1IDEzOC4zODRDMzI2LjU3NSAxNDAuMDI2IDMyNi42OCAxNDQuNTgzIDMyMy42OTUgMTQ2LjIyNUwyMjguNTAzIDIwMS44NTRDMjI1LjYyMyAyMDMuNTUgMjIyLjIyIDIwMy40NDQgMjE5LjU0OSAyMDEuODU0TDEyNC4zNTcgMTQ2LjIyNUMxMjEuNDI1IDE0NC42MzYgMTIxLjM3MyAxMzkuOTczIDEyNC4zNTcgMTM4LjM4NEwyMDQuNDE3IDkxLjYwMjdWMEwwIDExOS40MTdWMzU4LjI1Mkw3OC4zODQzIDMxMi40NzdWMjE4LjkxNEM3OC4zMzE5IDIxNS41NzYgODIuMjA2NiAyMTMuMTkyIDg1LjA4NjUgMjE0Ljk5M0wxODAuMjc5IDI3MC42MjJDMTgzLjE1OSAyNzIuMzE4IDE4NC43ODIgMjc1LjMzOCAxODQuNzgyIDI3OC40NjRWMzg5LjY2OUMxODQuODM0IDM5My4wMDcgMTgwLjk1OSAzOTUuMzkxIDE3OC4wNzkgMzkzLjU4OUw5Ny45NjczIDM0Ni44MDhMMTkuNTgzIDM5Mi41ODNMMjI0IDUxMkw0MjguNDE3IDM5Mi41ODNMMzUwLjAzMyAzNDYuODA4TDI2OS45MjEgMzkzLjU4OUMyNjcuMDkzIDM5NS4zMzggMjYzLjExNCAzOTMuMDYgMjYzLjIxOCAzODkuNjY5VjI3OC40NjRDMjYzLjIxOCAyNzUuMTI2IDI2NS4wNTEgMjcyLjE1OSAyNjcuNzIxIDI3MC42MjJMMzYyLjkxNCAyMTQuOTkzQzM2NS43NDEgMjEzLjI0NSAzNjkuNzIgMjE1LjQ3IDM2OS42MTYgMjE4LjkxNFYzMTIuNDc3TDQ0OCAzNTguMjUyVjExOS40MTdMMjQzLjU4MyAwVjkxLjYwMjdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuc3BsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCwyMzAuMTdWNDgwSDBWMjMwLjE3SDE0MS4xM1YzNTUuMDlIMzA2Ljg3VjIzMC4xN1pNMzA2Ljg3LDMySDE0MS4xM1YxNTYuOTFIMzA2Ljg3WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbnRhcHBkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMS4zIDQ5LjljLTc5LjggMTYwLjEtODQuNiAxNTIuNS04Ny45IDE3My4ybC01LjIgMzIuOGMtMS45IDEyLTYuNiAyMy41LTEzLjcgMzMuNEwxNDUuNiA0OTcuMWMtNy42IDEwLjYtMjAuNCAxNi4yLTMzLjQgMTQuNi00MC4zLTUtNzcuOC0zMi4yLTk1LjMtNjguNS01LjctMTEuOC00LjUtMjUuOCAzLjEtMzYuNGwxNDguOS0yMDcuOWM3LjEtOS45IDE2LjQtMTggMjcuMi0yMy43bDI5LjMtMTUuNWMxOC41LTkuOCA5LjctMTEuOSAxMzUuNi0xMzguOSAxLTQuOCAxLTcuMyAzLjYtOCAzLS43IDYuNi0xIDYuMy00LjZsLS40LTQuNmMtLjItMS45IDEuMy0zLjYgMy4yLTMuNiA0LjUtLjEgMTMuMiAxLjIgMjUuNiAxMCAxMi4zIDguOSAxNi40IDE2LjggMTcuNyAyMS4xLjYgMS44LS42IDMuNy0yLjQgNC4ybC00LjUgMS4xYy0zLjQuOS0yLjUgNC40LTIuMyA3LjQuMSAyLjgtMi4zIDMuNi02LjUgNi4xek0yMzAuMSAzNi40YzMuNC45IDIuNSA0LjQgMi4zIDcuNC0uMiAyLjcgMi4xIDMuNSA2LjQgNiA3LjkgMTUuOSAxNS4zIDMwLjUgMjIuMiA0NCAuNyAxLjMgMi4zIDEuNSAzLjMuNSAxMS4yLTEyIDI0LjYtMjYuMiA0MC41LTQyLjYgMS4zLTEuNCAxLjQtMy41LjEtNC45LTgtOC4yLTE2LjUtMTYuOS0yNS42LTI2LjEtMS00LjctMS03LjMtMy42LTgtMy0uOC02LjYtMS02LjMtNC42LjMtMy4zIDEuNC04LjEtMi44LTguMi00LjUtLjEtMTMuMiAxLjEtMjUuNiAxMC0xMi4zIDguOS0xNi40IDE2LjgtMTcuNyAyMS4xLTEuNCA0LjIgMy42IDQuNiA2LjggNS40ek02MjAgNDA2LjdMNDcxLjIgMTk4LjhjLTEzLjItMTguNS0yNi42LTIzLjQtNTYuNC0zOS4xLTExLjItNS45LTE0LjItMTAuOS0zMC41LTI4LjktMS0xLjEtMi45LS45LTMuNi41LTQ2LjMgODguOC00Ny4xIDgyLjgtNDkgOTQuOC0xLjcgMTAuNy0xLjMgMjAgLjMgMjkuOCAxLjkgMTIgNi42IDIzLjUgMTMuNyAzMy40bDE0OC45IDIwNy45YzcuNiAxMC42IDIwLjIgMTYuMiAzMy4xIDE0LjcgNDAuMy00LjkgNzgtMzIgOTUuNy02OC42IDUuNC0xMS45IDQuMy0yNS45LTMuNC0zNi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAzLjIgMzAzYy01LjIgMy42LTMyLjYgMTMuMS0zMi42LTE5VjE4MEgzNy45djEwMi42YzAgNzQuOSA4MC4yIDUxLjEgOTcuOSAzOVYxODBoLTMyLjZ6TTQgNzQuODJ2MjIwLjljMCAxMDMuNyA3NC45IDEzNS4yIDE4Ny43IDE4NC4xIDExMi40LTQ4LjkgMTg3LjctODAuMiAxODcuNy0xODQuMVY3NC44MmMtMTE2LjMtNjEuNi0yODEuOC00OS42LTM3NS40IDB6bTM1OC4xIDIyMC45YzAgODYuNi01My4yIDExMy42LTE3MC40IDE2NS4zLTExNy41LTUxLjgtMTcwLjUtNzguNy0xNzAuNS0xNjUuM3YtMTI2LjRjMTAyLjMtOTMuOCAyMzEuNi0xMDAgMzQwLjktODkuOHptLTIwOS42LTEwNy40djIxMi44aDMyLjd2LTY4LjdjMjQuNCA3LjMgNzEuNy0yLjYgNzEuNy03OC41IDAtOTcuNC04MC43LTgwLjkyLTEwNC40LTY1LjZ6bTMyLjcgMTE3LjN2LTEwMC4zYzguNC00LjIgMzguNC0xMi43IDM4LjQgNDkuMyAwIDY3LjktMzYuNCA1MS44LTM4LjQgNTF6bTc5LjEtODYuNGMuMSA0Ny4zIDUxLjYgNDIuNSA1Mi4yIDcwLjQuNiAyMy41LTMwLjQgMjMtNTAuOCA0Ljl2MzAuMWMzNi4yIDIxLjUgODEuOSA4LjEgODMuMi0zMy41IDEuNy01MS41LTU0LjEtNDYuNi01My40LTczLjIuNi0yMC4zIDMwLjYtMjAuNSA0OC41LTIuMnYtMjguNGMtMjguNS0yMi03OS45LTkuMi03OS43IDMxLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVwd29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQxIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTQuNyAyOTUuNmMtNTAuMyAwLTgzLjUtMzguOS05Mi44LTUzLjljMTEuOS05NS4zIDQ2LjgtMTI1LjQgOTIuOC0xMjUuNGM0NS41IDAgODAuOSAzNi40IDgwLjkgODkuN3MtMzUuNCA4OS43LTgwLjkgODkuN3ptMC0yMzcuOGMtODEuOSAwLTEyNy44IDUzLjQtMTQxIDEwOC40Yy0xNC45LTI4LTI1LjktNjUuNS0zNC41LTEwMC4zSDIwNnYxNDFjMCA1MS4xLTIzLjMgODktNjguOCA4OXMtNzEuNi0zNy44LTcxLjYtODlsLjUtMTQxSC44djE0MWMwIDQxLjEgMTMuMyA3OC40IDM3LjYgMTA1LjFjMjUgMjcuNSA1OS4yIDQxLjggOTguOCA0MS44Yzc4LjggMCAxMzMuOC02MC40IDEzMy44LTE0Ni45VjExMi4xYzguMiAzMS4yIDI3LjggOTEuMSA2NS4zIDE0My42bC0zNSAxOTkuNGg2Ni40bDIzLjEtMTQxLjNjNy42IDYuMyAxNS43IDEyIDI0LjIgMTdjMjIuMiAxNCA0Ny43IDIxLjkgNzMuOSAyMi44YzAgMCA0IC4yIDYuMSAuMmM4MS4yIDAgMTQ1LjktNjIuOSAxNDUuOS0xNDcuOHMtNjQuOC0xNDguMS0xNDYtMTQ4LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDEuNSAyNTZjMCAzLjEtMS43IDYuMS00LjUgNy41TDU0Ny45IDMxN2MtMS40LjgtMi44IDEuNC00LjUgMS40LTEuNCAwLTMuMS0uMy00LjUtMS4xLTIuOC0xLjctNC41LTQuNS00LjUtNy44di0zNS42SDI5NS43YzI1LjMgMzkuNiA0MC41IDEwNi45IDY5LjYgMTA2LjlIMzkyVjM1NGMwLTUgMy45LTguOSA4LjktOC45SDQ5MGM1IDAgOC45IDMuOSA4LjkgOC45djg5LjFjMCA1LTMuOSA4LjktOC45IDguOWgtODkuMWMtNSAwLTguOS0zLjktOC45LTguOXYtMjYuN2gtMjYuN2MtNzUuNCAwLTgxLjEtMTQyLjUtMTI0LjctMTQyLjVIMTQwLjNjLTguMSAzMC42LTM1LjkgNTMuNS02OSA1My41QzMyIDMyNy4zIDAgMjk1LjMgMCAyNTZzMzItNzEuMyA3MS4zLTcxLjNjMzMuMSAwIDYxIDIyLjggNjkgNTMuNSAzOS4xIDAgNDMuOSA5LjUgNzQuNi02MC40QzI1NSA4OC43IDI3MyA5NS43IDMyMy44IDk1LjdjNy41LTIwLjkgMjctMzUuNiA1MC40LTM1LjYgMjkuNSAwIDUzLjUgMjMuOSA1My41IDUzLjVzLTIzLjkgNTMuNS01My41IDUzLjVjLTIzLjQgMC00Mi45LTE0LjgtNTAuNC0zNS42SDI5NGMtMjkuMSAwLTQ0LjMgNjcuNC02OS42IDEwNi45aDMxMC4xdi0zNS42YzAtMy4zIDEuNy02LjEgNC41LTcuOCAyLjgtMS43IDYuNC0xLjQgOC45LjNsODkuMSA1My41YzIuOCAxLjEgNC41IDQuMSA0LjUgNy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc3BzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2MC4zIDI0MS43YzI1LjgtNDEuMyAxNS4yLTQ4LjgtMTEuNy00OC44aC0yN2MtLjEgMC0xLjUtMS40LTEwLjkgOC0xMS4yIDUuNi0zNy45IDYuMy0zNy45IDguNyAwIDQuNSA3MC4zLTMuMSA4OC4xIDAgOS41IDEuNS0xLjUgMjAuNC00LjQgMzItLjUgNC41IDIuNCAyLjMgMy44LjF6bS0xMTIuMSAyMi42YzY0LTIxLjMgOTcuMy0yMy45IDEwMi0yNi4yIDQuNC0yLjktNC40LTYuNi0yNi4yLTUuOC01MS43IDIuMi0xMzcuNiAzNy4xLTE3Mi42IDUzLjlsLTMwLjctOTMuM2gxOTYuNmMtMi43LTI4LjItMTUyLjktMjIuNi0zMzcuOS0yMi42TDI3IDQxNS44YzE5Ni40LTk3LjMgMjU4LjktMTMwLjMgMzIxLjItMTUxLjV6TTk0LjcgOTZjMjUzLjMgNTMuNyAzMzAgNjUuNyAzMzIuMSA4NS4yIDM2LjQgMCA0NS45IDAgNTIuNCA2LjYgMjEuMSAxOS43LTE0LjYgNjcuNy0xNC42IDY3LjctNC40IDIuOS00MDYuNCAxNjAuMi00MDYuNCAxNjAuMmg0MjMuMUw1NDkgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzc3VubmFoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MS45IDI2OC4xQTI0MC45IDI0MC45IDAgMSAxIC4xIDI2OGEyNDAuOSAyNDAuOSAwIDEgMSA0ODEuOSAwek0yNC41IDI2OGEyMTYuNSAyMTYuNSAwIDEgMCA0MzIuOSAwQTIxNi41IDIxNi41IDAgMSAwIDI0LjUgMjY4em0zODUuOSA2My4zYy0xMi43IDAtMjEuNi0xLjktMjYuNy01LjljLTUuNS00LjMtOC4yLTEyLjMtOC4yLTIzLjhWMjA1LjFjMC02LjUtNS4yLTIwLjItMTUuNy00MS4yYzcgMCAxNy05LjEgMzAtMjcuMlYyODQuNWMwIDExIDIuNCAxOS40IDcgMjUuM2MzLjcgNC43IDEwLjEgOC45IDE5IDEyLjZjMS4yIC40IDIuNiAuOSA0LjEgMS40YzIuOSAuOSA2LjMgMi4xIDEwLjMgMy41Yy0xLjggMi43LTguMyA0LTE5LjkgNHptLTIxOSAwYy0xLjMgMi40LTMuNiA1LjUtNi44IDkuNGwtMTguNSAyMi41Yy0xLTYuMS00LTEzLTkuMy0yMC42cy05LjctMTEuNC0xMy40LTExLjRoLTguM0g1My42YzMuMy01LjMgNC45LTguOCA0LjktMTAuOGMwLTItLjgtNS4zLTIuNC05LjdjLTEuNS00LjQtMi40LTguNS0yLjQtMTIuNGMwLTcuNCAyLjEtMTMuOSA2LjMtMTkuM0w4MCAyNTMuNGwtNy4xLTE3LjdMODkgMjE1LjlsNi43IDE2LjggOC0xMC4zYy0xLjggNi40LTIuNiAxMi4zLTIuNiAxNy43YzAgNC4yIDIuOCAxMy4zIDguMyAyNy4zbDE2LjIgNDAuN0gxMzVoOCAuM2MyLjggLjQgNy43IDUgMTQuNiAxMy45YzEuOCAyLjQgNC4zIDUuOCA3LjcgMTAuMmMxLjQgMS45IDIuOSAzLjkgNC42IDYuMWMxLjMtMi4zIDItNC42IDItNy4xYzAtMi0xLjMtNi42LTQtMTMuNEwxNjMgMzA0LjFjLTQtMTAuNi02LjEtMTcuNy02LjEtMjEuM2MwLTYuMyAxLjktMTIuMyA1LjgtMTcuOWMuNS0uNiAxLTEuMyAxLjUtMS45YzQuNC01LjYgOC44LTExLjEgMTMuMy0xNi41Yy0xLjEgNC42LTEuNyA4LjctMS43IDEyYzAgMy43IDEuNyA5LjkgNS4xIDE4LjhsNy45IDIwLjRjMS45IDQuNyAzIDguMiAzLjcgMTAuM2gxNy42IDguM2wtLjktMi42Yy0xLjQtMy45LTQtNy03LjctOS4zbDE1LjYtMjAuMSAxMi4zIDMyaDEzLjRMMjQ1IDI5Mi4yYy0xLjUtMy45LTQtNy03LjctOS4zTDI1MyAyNjIuOCAyNzAuMyAzMDhoMTMuNGwtMTEuNC0yOS40Yy0xLjUtMy45LTQtNy03LjctOS4zbDE1LjYtMjBMMzAyLjYgMzA4aDEwLjMgOC4zIDcuNmMxLjUgMCAzLTEuMSA0LjUtMy4xczIuMi00LjEgMi4yLTYuM1YyMDUuMWMwLTYuNS00LjUtMjAuMy0xMy43LTQxLjJjNS40IDAgMTQuMS05LjEgMjYuMi0yNy4yVjMwMC4yYzAgNy4yIC42IDEyIDEuNyAxNC42YzEuNiAzLjQgNS4zIDYuMiAxMS4xIDguMmMtMy45IDUuNi04LjcgOC41LTE0LjUgOC41SDMyMS4xaC04LjNIMjEwLjVoLTE5ek05My40IDI4Ny4zYy0yLjctNi43LTQtMTEuNy00LTE1Yy0uNiAxLjItMi40IDMuNy01LjQgNy42Yy0xLjQgMS45LTIuMiAzLjctMi4yIDUuM2MwIDIuNiAuOCA1LjcgMi4yIDkuM2w1LjYgMTMuOWgwYzUgMCA5IDAgMTEuOS0uMWwtOC4yLTIwLjl6bTEzLjUtNzIuNGMtMy01LjItNy05LjMtMTEuOS0xMS45Yy0zLjUtMS45LTUuMy00LjMtNS4zLTcuNGMwLTIuNCA0LjYtOC42IDE0LTE4LjNjLjIgMy44IDEuOSA3LjYgNC45IDExLjJjMy4xIDMuNiA0LjYgNyA0LjYgMTAuMWMwIDIuNi0yLjEgOC02LjIgMTYuM3ptLTI3LjYgMGMtMy01LjItNy05LjMtMTEuOS0xMS45Yy0zLjUtMS45LTUuMy00LjMtNS4zLTcuNGMwLTIuNCA0LjYtOC42IDE0LTE4LjNjLjIgMy44IDEuOSA3LjYgNC45IDExLjJjMy4xIDMuNiA0LjYgNyA0LjYgMTAuMWMwIDIuNi0yLjEgOC02LjIgMTYuM3ptODcgMjcuNWMtMy01LjItNy05LjMtMTEuOS0xMS45Yy0zLjUtMS45LTUuMy00LjMtNS4zLTcuNGMwLTIuNCA0LjYtOC42IDE0LTE4LjNjLjIgMy44IDEuOSA3LjYgNC45IDExLjJjMy4xIDMuNiA0LjYgNyA0LjYgMTAuMWMwIDIuNi0yLjEgOC02LjIgMTYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmFhZGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNC41IDE0MC43YzEuNS0xNy42IDQuOS01Mi43IDQ5LjgtNTIuN2g5OC42YzIwLjcgMCAzMi4xLTcuOCAzMi4xLTIxLjZWNTQuMWMwLTEyLjIgOS4zLTIyLjEgMjEuNS0yMi4xUzQ0OCA0MS45IDQ0OCA1NC4xdjM2LjVjMCA0Mi45LTIxLjUgNjItNjYuOCA2MkgyODAuN2MtMzAuMSAwLTMzIDE0LjctMzMgMjcuMSAwIDEuMy0uMSAyLjUtLjIgMy43LS43IDEyLjMtMTAuOSAyMi4yLTIzLjQgMjIuMnMtMjIuNy05LjgtMjMuNC0yMi4yYy0uMS0xLjItLjItMi40LS4yLTMuNyAwLTEyLjMtMy0yNy4xLTMzLTI3LjFINjYuOGMtNDUuMyAwLTY2LjgtMTkuMS02Ni44LTYyVjU0LjFDMCA0MS45IDkuNCAzMiAyMS42IDMyczIxLjUgOS45IDIxLjUgMjIuMXYxMi4zQzQzLjEgODAuMiA1NC41IDg4IDc1LjIgODhoOTguNmM0NC44IDAgNDguMyAzNS4xIDQ5LjggNTIuN2guOXpNMjI0IDQ1NmMxMS41IDAgMjEuNC03IDI1LjctMTYuMyAxLjEtMS44IDk3LjEtMTY5LjYgOTguMi0xNzEuNCAxMS45LTE5LjYtMy4yLTQ0LjMtMjcuMi00NC4zLTEzLjkgMC0yMy4zIDYuNC0yOS44IDIwLjNMMjI0IDM2MmwtNjYuOS0xMTcuN2MtNi40LTEzLjktMTUuOS0yMC4zLTI5LjgtMjAuMy0yNCAwLTM5LjEgMjQuNi0yNy4yIDQ0LjMgMS4xIDEuOSA5Ny4xIDE2OS42IDk4LjIgMTcxLjQgNC4zIDkuMyAxNC4yIDE2LjMgMjUuNyAxNi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWFjb2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMmgtNjRsLTgwLjcgMTkyaC05NC41TDY0IDMySDBsNDggMTEySDB2NDhoNjguNWwxMy44IDMySDB2NDhoMTAyLjhMMTkyIDQ4MGw4OS4yLTIwOEgzODR2LTQ4aC04Mi4zbDEzLjgtMzJIMzg0di00OGgtNDhsNDgtMTEyek0xOTIgMzM2bC0yNy02NGg1NGwtMjcgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpYWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzYuMiAxNTAuNXYuN0MyNTguMyA5OC42IDIzMy42IDQ3LjggMjA1LjQgMGM0My4zIDI5LjIgNjcgMTAwIDcwLjggMTUwLjV6bTMyLjcgMTIxLjdjNy42IDE4LjIgMTEgMzcuNSAxMSA1NyAwIDc3LjctNTcuOCAxNDEtMTM3LjggMTM5LjRsMy44LS4zYzc0LjItNDYuNyAxMDkuMy0xMTguNiAxMDkuMy0yMDUuMSAwLTM4LjEtNi41LTc1LjktMTguOS0xMTIgMSAxMS43IDEgMjMuNyAxIDM1LjQgMCA5MS44LTE4LjEgMjQxLjYtMTE2LjYgMjgwQzk1IDQ1NS4yIDQ5LjQgMzk4IDQ5LjQgMzI5LjJjMC03NS42IDU3LjQtMTQyLjMgMTM1LjQtMTQyLjMgMTYuOCAwIDMzLjcgMy4xIDQ5LjEgOS42IDEuNy0xNS4xIDYuNS0yOS45IDEzLjQtNDMuMy0xOS45LTcuMi00MS4yLTEwLjctNjIuNS0xMC43LTE2MS41IDAtMjM4LjcgMTk1LjktMTI5LjkgMzEzLjcgNjcuOSA3NC42IDE5MiA3My45IDI1OS44IDAgNTYuNi02MS4zIDYwLjktMTQyLjQgMzYuNC0yMDEtMTIuNyA4LTI3LjEgMTMuOS00Mi4yIDE3ek00MTguMSAxMS43Yy0zMSA2Ni41LTgxLjMgNDcuMi0xMTUuOCA4MC4xLTEyLjQgMTItMjAuNiAzNC0yMC42IDUwLjUgMCAxNC4xIDQuNSAyNy4xIDEyIDM4LjggNDcuNC0xMSA5OC4zLTQ2IDExOC4yLTkwLjctLjcgNS41LTQuOCAxNC40LTcuMiAxOS4yLTIwLjMgMzUuNy02NC42IDY1LjYtOTkuNyA4NC45IDE0LjggMTQuNCAzMy43IDI1LjggNTUgMjUuOCA3OSAwIDExMC4xLTEzNC42IDU4LjEtMjA4LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0NCA0OS45QzQzMS4zIDM4LjIgMzc5LjkuOSAyNjUuMy40YzAgMC0xMzUuMS04LjEtMjAwLjkgNTIuM0MyNy44IDg5LjMgMTQuOSAxNDMgMTMuNSAyMDkuNWMtMS40IDY2LjUtMy4xIDE5MS4xIDExNyAyMjQuOWguMWwtLjEgNTEuNnMtLjggMjAuOSAxMyAyNS4xYzE2LjYgNS4yIDI2LjQtMTAuNyA0Mi4zLTI3LjggOC43LTkuNCAyMC43LTIzLjIgMjkuOC0zMy43IDgyLjIgNi45IDE0NS4zLTguOSAxNTIuNS0xMS4yIDE2LjYtNS40IDExMC41LTE3LjQgMTI1LjctMTQyIDE1LjgtMTI4LjYtNy42LTIwOS44LTQ5LjgtMjQ2LjV6TTQ1Ny45IDI4N2MtMTIuOSAxMDQtODkgMTEwLjYtMTAzIDExNS4xLTYgMS45LTYxLjUgMTUuNy0xMzEuMiAxMS4yIDAgMC01MiA2Mi43LTY4LjIgNzktNS4zIDUuMy0xMS4xIDQuOC0xMS01LjcgMC02LjkuNC04NS43LjQtODUuNy0uMSAwLS4xIDAgMCAwLTEwMS44LTI4LjItOTUuOC0xMzQuMy05NC43LTE4OS44IDEuMS01NS41IDExLjYtMTAxIDQyLjYtMTMxLjYgNTUuNy01MC41IDE3MC40LTQzIDE3MC40LTQzIDk2LjkuNCAxNDMuMyAyOS42IDE1NC4xIDM5LjQgMzUuNyAzMC42IDUzLjkgMTAzLjggNDAuNiAyMTEuMXptLTEzOS04MC44Yy40IDguNi0xMi41IDkuMi0xMi45LjYtMS4xLTIyLTExLjQtMzIuNy0zMi42LTMzLjktOC42LS41LTcuOC0xMy40LjctMTIuOSAyNy45IDEuNSA0My40IDE3LjUgNDQuOCA0Ni4yem0yMC4zIDExLjNjMS00Mi40LTI1LjUtNzUuNi03NS44LTc5LjMtOC41LS42LTcuNi0xMy41LjktMTIuOSA1OCA0LjIgODguOSA0NC4xIDg3LjggOTIuNS0uMSA4LjYtMTMuMSA4LjItMTIuOS0uM3ptNDcgMTMuNGMuMSA4LjYtMTIuOSA4LjctMTIuOS4xLS42LTgxLjUtNTQuOS0xMjUuOS0xMjAuOC0xMjYuNC04LjUtLjEtOC41LTEyLjkgMC0xMi45IDczLjcuNSAxMzMgNTEuNCAxMzMuNyAxMzkuMnpNMzc0LjkgMzI5di4yYy0xMC44IDE5LTMxIDQwLTUxLjggMzMuM2wtLjItLjNjLTIxLjEtNS45LTcwLjgtMzEuNS0xMDIuMi01Ni41LTE2LjItMTIuOC0zMS0yNy45LTQyLjQtNDIuNC0xMC4zLTEyLjktMjAuNy0yOC4yLTMwLjgtNDYuNi0yMS4zLTM4LjUtMjYtNTUuNy0yNi01NS43LTYuNy0yMC44IDE0LjItNDEgMzMuMy01MS44aC4yYzkuMi00LjggMTgtMy4yIDIzLjkgMy45IDAgMCAxMi40IDE0LjggMTcuNyAyMi4xIDUgNi44IDExLjcgMTcuNyAxNS4yIDIzLjggNi4xIDEwLjkgMi4zIDIyLTMuNyAyNi42bC0xMiA5LjZjLTYuMSA0LjktNS4zIDE0LTUuMyAxNHMxNy44IDY3LjMgODQuMyA4NC4zYzAgMCA5LjEuOCAxNC01LjNsOS42LTEyYzQuNi02IDE1LjctOS44IDI2LjYtMy43IDE0LjcgOC4zIDMzLjQgMjEuMiA0NS44IDMyLjkgNyA1LjcgOC42IDE0LjQgMy44IDIzLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpbWVvViAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDcuOCAxNTMuNmMtMiA0My42LTMyLjQgMTAzLjMtOTEuNCAxNzkuMS02MC45IDc5LjItMTEyLjQgMTE4LjgtMTU0LjYgMTE4LjgtMjYuMSAwLTQ4LjItMjQuMS02Ni4zLTcyLjNDMTAwLjMgMjUwIDg1LjMgMTc0LjMgNTYuMiAxNzQuM2MtMy40IDAtMTUuMSA3LjEtMzUuMiAyMS4xTDAgMTY4LjJjNTEuNi00NS4zIDEwMC45LTk1LjcgMTMxLjgtOTguNSAzNC45LTMuNCA1Ni4zIDIwLjUgNjQuNCA3MS41IDI4LjcgMTgxLjUgNDEuNCAyMDguOSA5My42IDEyNi43IDE4LjctMjkuNiAyOC44LTUyLjEgMzAuMi02Ny42IDQuOC00NS45LTM1LjgtNDIuOC02My4zLTMxIDIyLTcyLjEgNjQuMS0xMDcuMSAxMjYuMi0xMDUuMSA0NS44IDEuMiA2Ny41IDMxLjEgNjQuOSA4OS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaW1lbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDMuMiAzMkg0NC44QzIwLjEgMzIgMCA1Mi4xIDAgNzYuOHYzNTguNEMwIDQ1OS45IDIwLjEgNDgwIDQ0LjggNDgwaDM1OC40YzI0LjcgMCA0NC44LTIwLjEgNDQuOC00NC44Vjc2LjhjMC0yNC43LTIwLjEtNDQuOC00NC44LTQ0Ljh6TTM3NyAxODAuOGMtMS40IDMxLjUtMjMuNCA3NC43LTY2IDEyOS40LTQ0IDU3LjItODEuMyA4NS44LTExMS43IDg1LjgtMTguOSAwLTM0LjgtMTcuNC00Ny45LTUyLjMtMjUuNS05My4zLTM2LjQtMTQ4LTU3LjQtMTQ4LTIuNCAwLTEwLjkgNS4xLTI1LjQgMTUuMmwtMTUuMi0xOS42YzM3LjMtMzIuOCA3Mi45LTY5LjIgOTUuMi03MS4yIDI1LjItMi40IDQwLjcgMTQuOCA0Ni41IDUxLjcgMjAuNyAxMzEuMiAyOS45IDE1MSA2Ny42IDkxLjYgMTMuNS0yMS40IDIwLjgtMzcuNyAyMS44LTQ4LjkgMy41LTMzLjItMjUuOS0zMC45LTQ1LjgtMjIuNCAxNS45LTUyLjEgNDYuMy03Ny40IDkxLjItNzYgMzMuMy45IDQ5IDIyLjUgNDcuMSA2NC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAyNTQuN3Y1Mi4xYy0xOC40IDQuMi0zNi45IDYuMS01Mi4xIDYuMS0zNi45IDc3LjQtMTAzIDE0My44LTEyNS4xIDE1Ni4yLTE0IDcuOS0yNy4xIDguNC00Mi43LS44QzEzNyA0NTIgMzQuMiAzNjcuNyAwIDEwMi43aDc0LjVDOTMuMiAyNjEuOCAxMzkgMzQzLjQgMTg5LjMgNDA0LjVjMjcuOS0yNy45IDU0LjgtNjUuMSA3NS42LTEwNi45LTQ5LjgtMjUuMy04MC4xLTgwLjktODAuMS0xNDUuNiAwLTY1LjYgMzcuNy0xMTUuMSAxMDIuMi0xMTUuMSAxMTQuOSAwIDEwNi4yIDEyNy45IDgxLjYgMTgxLjUgMCAwLTQ2LjQgOS4yLTYzLjUtMjAuNSAzLjQtMTEuMyA4LjItMzAuOCA4LjItNDguNSAwLTMxLjMtMTEuMy00Ni42LTI4LjQtNDYuNi0xOC4yIDAtMzAuOCAxNy4xLTMwLjggNTAgLjEgNzkuMiA1OS40IDExOC43IDEyOS45IDEwMS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMS40OTA3IDYzLjQ5MDdDMCA5NC45ODEzIDAgMTQ1LjY3MSAwIDI0Ny4wNFYyNjQuOTZDMCAzNjYuMzI5IDAgNDE3LjAxOSAzMS40OTA3IDQ0OC41MDlDNjIuOTgxMyA0ODAgMTEzLjY3MSA0ODAgMjE1LjA0IDQ4MEgyMzIuOTZDMzM0LjMyOSA0ODAgMzg1LjAxOSA0ODAgNDE2LjUwOSA0NDguNTA5QzQ0OCA0MTcuMDE5IDQ0OCAzNjYuMzI5IDQ0OCAyNjQuOTZWMjQ3LjA0QzQ0OCAxNDUuNjcxIDQ0OCA5NC45ODEzIDQxNi41MDkgNjMuNDkwN0MzODUuMDE5IDMyIDMzNC4zMjkgMzIgMjMyLjk2IDMySDIxNS4wNEMxMTMuNjcxIDMyIDYyLjk4MTMgMzIgMzEuNDkwNyA2My40OTA3Wk03NS42IDE2OC4yNjdIMTI2Ljc0N0MxMjguNDI3IDI1My43NiAxNjYuMTMzIDI4OS45NzMgMTk2IDI5Ny40NFYxNjguMjY3SDI0NC4xNlYyNDJDMjczLjY1MyAyMzguODI3IDMwNC42NCAyMDUuMjI3IDMxNS4wOTMgMTY4LjI2N0gzNjMuMjUzQzM1OS4zMTMgMTg3LjQzNSAzNTEuNDYgMjA1LjU4MyAzNDAuMTg2IDIyMS41NzlDMzI4LjkxMyAyMzcuNTc0IDMxNC40NjEgMjUxLjA3MSAyOTcuNzMzIDI2MS4yMjdDMzE2LjQxIDI3MC40OTkgMzMyLjkwNyAyODMuNjMgMzQ2LjEzMiAyOTkuNzUxQzM1OS4zNTcgMzE1Ljg3MyAzNjkuMDEgMzM0LjYxOCAzNzQuNDUzIDM1NC43NDdIMzIxLjQ0QzMxNi41NTUgMzM3LjI2MiAzMDYuNjE0IDMyMS42MSAyOTIuODY1IDMwOS43NTRDMjc5LjExNyAyOTcuODk5IDI2Mi4xNzMgMjkwLjM2OCAyNDQuMTYgMjg4LjEwN1YzNTQuNzQ3SDIzOC4zNzNDMTM2LjI2NyAzNTQuNzQ3IDc4LjAyNjcgMjg0Ljc0NyA3NS42IDE2OC4yNjdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZudiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDQuOSAzNTJjLTM0LjEgMC00Ni40LTMwLjQtNDYuNC0zMC40TDIuNiAyMTAuMVMtNy44IDE5MiAxMyAxOTJoMzIuOGMxMC40IDAgMTMuMiA4LjcgMTguOCAxOC4xbDM2LjcgNzQuNXM1LjIgMTMuMSAyMS4xIDEzLjEgMjEuMS0xMy4xIDIxLjEtMTMuMWwzNi43LTc0LjVjNS42LTkuNSA4LjQtMTguMSAxOC44LTE4LjFoMzIuOGMyMC44IDAgMTAuNCAxOC4xIDEwLjQgMTguMWwtNTUuOCAxMTEuNVMxNzQuMiAzNTIgMTQwIDM1MmgtMzUuMXptMzk1IDBjLTM0LjEgMC00Ni40LTMwLjQtNDYuNC0zMC40bC01NS45LTExMS41UzM4Ny4yIDE5MiA0MDggMTkyaDMyLjhjMTAuNCAwIDEzLjIgOC43IDE4LjggMTguMWwzNi43IDc0LjVzNS4yIDEzLjEgMjEuMSAxMy4xIDIxLjEtMTMuMSAyMS4xLTEzLjFsMzYuOC03NC41YzUuNi05LjUgOC40LTE4LjEgMTguOC0xOC4xSDYyN2MyMC44IDAgMTAuNCAxOC4xIDEwLjQgMTguMWwtNTUuOSAxMTEuNVM1NjkuMyAzNTIgNTM1LjEgMzUyaC0zNS4yek0zMzcuNiAxOTJjMzQuMSAwIDQ2LjQgMzAuNCA0Ni40IDMwLjRsNTUuOSAxMTEuNXMxMC40IDE4LjEtMTAuNCAxOC4xaC0zMi44Yy0xMC40IDAtMTMuMi04LjctMTguOC0xOC4xbC0zNi43LTc0LjVzLTUuMi0xMy4xLTIxLjEtMTMuMWMtMTUuOSAwLTIxLjEgMTMuMS0yMS4xIDEzLjFsLTM2LjcgNzQuNWMtNS42IDkuNC04LjQgMTguMS0xOC44IDE4LjFoLTMyLjljLTIwLjggMC0xMC40LTE4LjEtMTAuNC0xOC4xbDU1LjktMTExLjVzMTIuMi0zMC40IDQ2LjQtMzAuNGgzNS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWdWVqcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTYuOSA2NC4zSDI4MGwtNTYgODguNi00OC04OC42SDBMMjI0IDQ0OCA0NDggNjQuM2gtOTEuMXptLTMwMS4yIDMyaDUzLjhMMjI0IDI5NC41IDMzOC40IDk2LjNoNTMuOEwyMjQgMzg0LjUgNTUuNyA5Ni4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYXRjaG1hbk1vbml0b3JpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2LDE2QzEyMy40NTIsMTYsMTYsMTIzLjQ1MiwxNiwyNTZTMTIzLjQ1Miw0OTYsMjU2LDQ5Niw0OTYsMzg4LjU0OCw0OTYsMjU2LDM4OC41NDgsMTYsMjU2LDE2Wk0xMjEuNjksNDI5LjEyMkM3MC4wNTYsMzg4Ljk3MiwzNi43NDEsMzI2LjMyMiwzNi43NDEsMjU2YTIxOC41MTksMjE4LjUxOSwwLDAsMSw5LjU4Ny02NC4xMjJsMTAyLjktMTcuODk1LS4xMjEsMTAuOTY3LTEzLjk0MywyLjAxM3MtLjE0NCwxMi41LS4xNDQsMTkuNTQ5YTEyLjc3OCwxMi43NzgsMCwwLDAsNC44ODcsMTAuMzQ5bDkuNDY4LDcuNFptMTA1LjY5Mi0yODMuMjcsOC40OC03LjYxOHM2LjkzNC01LjM4LS4xNDMtOS4zNDRjLTcuMTg4LTQuMDI0LTM5LjUzLTM0LjUtMzkuNTMtMzQuNS01LjM0OC01LjQ3Ny04LjI1Ny03LjM0Ny0xNS40NiwwLDAsMC0zMi4zNDIsMzAuNDc0LTM5LjUyOSwzNC41LTcuMDc4LDMuOTY0LS4xNDQsOS4zNDQtLjE0NCw5LjM0NGw4LjQ4MSw3LjYxOC0uMDQ4LDQuMzY5TDc1Ljk4MiwxMzEuMDQ1YzM5LjY0NC01Ni45MzgsMTA1LjUzMi05NC4zLDE4MC4wMTgtOTQuM0EyMTguNzU0LDIxOC43NTQsMCwwLDEsNDIwLjkzNCwxMTEuNzdsLTE5My41MTIsMzcuN1ptMzQuMDYzLDMyOS4yNjktMzMuOS0yNTAuODU3LDkuNDY3LTcuNGExMi43NzgsMTIuNzc4LDAsMCwwLDQuODg4LTEwLjM0OWMwLTcuMDQ0LS4xNDQtMTkuNTQ5LS4xNDQtMTkuNTQ5bC0xMy45NDMtMi4wMTMtLjExNi0xMC40NzQsMjQxLjcxMSwzMS4zOTFBMjE4Ljg3MiwyMTguODcyLDAsMCwxLDQ3NS4yNTksMjU2QzQ3NS4yNTksMzc1LjA3NCwzNzkuODMxLDQ3Mi4yMTIsMjYxLjQ0NSw0NzUuMTIxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi4xNyAyMDEuNjdDNTE2LjY5IDI4Ny41MyA0NzEuMjMgMzY5LjU5IDM4OSA0MDkuOGMxMyAzNC4xLTEyLjQgNzAuMi00OC4zMiA3MC4yYTUxLjY4IDUxLjY4IDAgMCAxLTUxLjU3LTQ5Yy02LjQ0LjE5LTY0LjIgMC03Ni4zMy0uNjRBNTEuNjkgNTEuNjkgMCAwIDEgMTU5IDQ3OS45MmMtMzMuODYtMS4zNi01Ny45NS0zNC44NC00Ny02Ny45Mi0zNy4yMS0xMy4xMS03Mi41NC0zNC44Ny05OS42Mi03MC44LTEzLTE3LjI4LS40OC00MS44IDIwLjg0LTQxLjggNDYuMzEgMCAzMi4yMi01NC4xNyA0My4xNS0xMTAuMjZDOTQuOCA5NS4yIDE5My4xMiAzMiAyODguMDkgMzJjMTAyLjQ4IDAgMTk3LjE1IDcwLjY3IDIxNC4wOCAxNjkuNjd6TTM3My41MSAzODguMjhjNDItMTkuMTggODEuMzMtNTYuNzEgOTYuMjktMTAyLjE0IDQwLjQ4LTEyMy4wOS02NC4xNS0yMjgtMTgxLjcxLTIyOC04My40NSAwLTE3MC4zMiA1NS40Mi0xODYuMDcgMTM2LTkuNTMgNDguOTEgNSAxMzEuMzUtNjguNzUgMTMxLjM1QzU4LjIxIDM1OC42IDkxLjYgMzc4LjExIDEyNyAzODkuNTRjMjQuNjYtMjEuOCA2My44Ny0xNS40NyA3OS44MyAxNC4zNCAxNC4yMiAxIDc5LjE5IDEuMTggODcuOS44MmE1MS42OSA1MS42OSAwIDAgMSA3OC43OC0xNi40MnpNMjA1LjEyIDE4Ny4xM2MwLTM0Ljc0IDUwLjg0LTM0Ljc1IDUwLjg0IDBzLTUwLjg0IDM0Ljc0LTUwLjg0IDB6bTExNi41NyAwYzAtMzQuNzQgNTAuODYtMzQuNzUgNTAuODYgMHMtNTAuODYgMzQuNzUtNTAuODYgMHptLTEyMi42MSA3MC42OWMtMy40NC0xNi45NCAyMi4xOC0yMi4xOCAyNS42Mi01LjIxbC4wNi4yOGM0LjE0IDIxLjQyIDI5Ljg1IDQ0IDY0LjEyIDQzLjA3IDM1LjY4LS45NCA1OS4yNS0yMi4yMSA2NC4xMS00Mi43NyA0LjQ2LTE2LjA1IDI4LjYtMTAuMzYgMjUuNDcgNi01LjIzIDIyLjE4LTMxLjIxIDYyLTkxLjQ2IDYyLjktNDIuNTUgMC04MC44OC0yNy44NC04Ny45LTY0LjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWJBd2Vzb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3Mi4yIDUyYzAgMjAuOS0xMi40IDM5LTMwLjIgNDcuMkw0NDggMTkybDEwNC40LTIwLjljLTUuMy03LjctOC40LTE3LjEtOC40LTI3LjFjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OGMwIDI2LTIwLjYgNDcuMS00Ni40IDQ4TDQ4MSA0NDIuM2MtMTAuMyAyMy0zMy4yIDM3LjctNTguNCAzNy43bC0yMDUuMiAwYy0yNS4yIDAtNDgtMTQuOC01OC40LTM3LjdMNDYuNCAxOTJDMjAuNiAxOTEuMSAwIDE3MCAwIDE0NGMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4YzAgMTAuMS0zLjEgMTkuNC04LjQgMjcuMUwxOTIgMTkyIDI5OC4xIDk5LjFjLTE3LjctOC4zLTMwLTI2LjMtMzAtNDcuMWMwLTI4LjcgMjMuMy01MiA1Mi01MnM1MiAyMy4zIDUyIDUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWJmbG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCA2NEw0MzUuOCA0NjMuMkgyNDRsODUuNS0xNjUuNWgtMy44QzI1NS4xIDM4OS4zIDE0OS45IDQ0OS41IDAgNDYzLjJWMzAwLjFzOTUuOS01LjcgMTUyLjMtNjQuOUgwVjY0SDE3MS4xVjIwNC44bDMuOCAwTDI0NC45IDY0SDM3NC4zVjIwMy45bDMuOCAwTDQ1MC43IDY0SDY0MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2VlYmx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyNS4wOSA2NS44M2MtMzkuODggMC03My4yOCAyNS43My04My42NiA2NC4zMy0xOC4xNi01OC4wNi02NS41LTY0LjMzLTg0Ljk1LTY0LjMzLTE5Ljc4IDAtNjYuOCA2LjI4LTg1LjI4IDY0LjMzLTEwLjM4LTM4LjYtNDMuNDUtNjQuMzMtODMuNjYtNjQuMzNDMzguNTkgNjUuODMgMCA5OS43MiAwIDE0My4wM2MwIDI4Ljk2IDQuMTggMzMuMjcgNzcuMTcgMjMzLjQ4IDIyLjM3IDYwLjU3IDY3Ljc3IDY5LjM1IDkyLjc0IDY5LjM1IDM5LjIzIDAgNzAuMDQtMTkuNDYgODUuOTMtNTMuOTggMTUuODkgMzQuODMgNDYuNjkgNTQuMjkgODUuOTMgNTQuMjkgMjQuOTcgMCA3MC4zNi05LjEgOTIuNzQtNjkuNjcgNzYuNTUtMjA4LjY1IDc3LjUtMjA1LjU4IDc3LjUtMjI3LjIuNjMtNDguMzItMzYuMDEtODMuNDctODYuOTItODMuNDd6bTI2LjM0IDExNC44MWwtNjUuNTcgMTc2LjQ0Yy03LjkyIDIxLjQ5LTIxLjIyIDM3LjIyLTQ2LjI0IDM3LjIyLTIzLjQ0IDAtMzcuMzgtMTIuNDEtNDQuMDMtMzMuOWwtMzkuMjgtMTE3LjQyaC0uOTVMMjE2LjA4IDM2MC40Yy02Ljk2IDIxLjUtMjAuOSAzMy42LTQ0LjAyIDMzLjYtMjUuMDIgMC0zOC4zMy0xNS43NC00Ni4yNC0zNy4yMkw2MC44OCAxODEuNTVjLTUuMzgtMTQuODMtNy45Mi0yMy45MS03LjkyLTM0LjUgMC0xNi4zNCAxNS44NC0yOS4zNiAzOC4zMy0yOS4zNiAxOC42OSAwIDMxLjk5IDExLjggMzYuMTEgMjkuMDVsNDQuMDMgMTM5LjgyaC45NWw0NC42Ni0xMzYuNzljNi4wMi0xOS42NyAxNi40Ny0zMi4wOCAzOC45Ni0zMi4wOHMzMi45NCAxMi4xMSAzOC45NiAzMi4wOGw0NC42NiAxMzYuNzloLjk1bDQ0LjAzLTEzOS44MmM0LjEyLTE3LjI1IDE3LjQyLTI5LjA1IDM2LjExLTI5LjA1IDIyLjE3IDAgMzguMzMgMTMuMzIgMzguMzMgMzUuNzEtLjMyIDcuODctNC4xMiAxNi4wNC03LjYxIDI3LjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWlibyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcgMTc3LjZjNy42LTI0LTEzLjQtNDYuOC0zNy40LTQxLjctMjIgNC44LTI4LjgtMjguMS03LjEtMzIuOCA1MC4xLTEwLjkgOTIuMyAzNy4xIDc2LjUgODQuOC02LjggMjEuMi0zOC44IDEwLjgtMzItMTAuM3pNMjE0LjggNDQ2LjdDMTA4LjUgNDQ2LjcgMCAzOTUuMyAwIDMxMC40YzAtNDQuMyAyOC05NS40IDc2LjMtMTQzLjdDMTc2IDY3IDI3OS41IDY1LjggMjQ5LjkgMTYxYy00IDEzLjEgMTIuMyA1LjcgMTIuMyA2IDc5LjUtMzMuNiAxNDAuNS0xNi44IDExNCA1MS40LTMuNyA5LjQgMS4xIDEwLjkgOC4zIDEzLjEgMTM1LjcgNDIuMyAzNC44IDIxNS4yLTE2OS43IDIxNS4yem0xNDMuNy0xNDYuM2MtNS40LTU1LjctNzguNS05NC0xNjMuNC04NS43LTg0LjggOC42LTE0OC44IDYwLjMtMTQzLjQgMTE2czc4LjUgOTQgMTYzLjQgODUuN2M4NC44LTguNiAxNDguOC02MC4zIDE0My40LTExNnpNMzQ3LjkgMzUuMWMtMjUuOSA1LjYtMTYuOCA0My43IDguMyAzOC4zIDcyLjMtMTUuMiAxMzQuOCA1Mi44IDExMS43IDEyNC03LjQgMjQuMiAyOS4xIDM3IDM3LjQgMTIgMzEuOS05OS44LTU1LjEtMTk1LjktMTU3LjQtMTc0LjN6bS03OC41IDMxMWMtMTcuMSAzOC44LTY2LjggNjAtMTA5LjEgNDYuMy00MC44LTEzLjEtNTgtNTMuNC00MC4zLTg5LjcgMTcuNy0zNS40IDYzLjEtNTUuNCAxMDMuNC00NS4xIDQyIDEwLjggNjMuMSA1MC4yIDQ2IDg4LjV6bS04Ni4zLTMwYy0xMi45LTUuNC0zMCAuMy0zOCAxMi45LTguMyAxMi45LTQuMyAyOCA4LjYgMzQgMTMuMSA2IDMwLjguMyAzOS4xLTEyLjkgOC0xMy4xIDMuNy0yOC4zLTkuNy0zNHptMzIuNi0xMy40Yy01LjEtMS43LTExLjQuNi0xNC4zIDUuNC0yLjkgNS4xLTEuNCAxMC42IDMuNyAxMi45IDUuMSAyIDExLjctLjMgMTQuNi01LjQgMi44LTUuMiAxLjEtMTAuOS00LTEyLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdlaXhpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODUuMiAxNjcuNmM2LjQgMCAxMi42LjMgMTguOCAxLjFDMzg3LjQgOTAuMyAzMDMuMyAzMiAyMDcuNyAzMiAxMDAuNSAzMiAxMyAxMDQuOCAxMyAxOTcuNGMwIDUzLjQgMjkuMyA5Ny41IDc3LjkgMTMxLjZsLTE5LjMgNTguNiA2OC0zNC4xYzI0LjQgNC44IDQzLjggOS43IDY4LjIgOS43IDYuMiAwIDEyLjEtLjMgMTguMy0uOC00LTEyLjktNi4yLTI2LjYtNi4yLTQwLjgtLjEtODQuOSA3Mi45LTE1NCAxNjUuMy0xNTR6bS0xMDQuNS01Mi45YzE0LjUgMCAyNC4yIDkuNyAyNC4yIDI0LjQgMCAxNC41LTkuNyAyNC4yLTI0LjIgMjQuMi0xNC44IDAtMjkuMy05LjctMjkuMy0yNC4yLjEtMTQuNyAxNC42LTI0LjQgMjkuMy0yNC40em0tMTM2LjQgNDguNmMtMTQuNSAwLTI5LjMtOS43LTI5LjMtMjQuMiAwLTE0LjggMTQuOC0yNC40IDI5LjMtMjQuNCAxNC44IDAgMjQuNCA5LjcgMjQuNCAyNC40IDAgMTQuNi05LjYgMjQuMi0yNC40IDI0LjJ6TTU2MyAzMTkuNGMwLTc3LjktNzcuOS0xNDEuMy0xNjUuNC0xNDEuMy05Mi43IDAtMTY1LjQgNjMuNC0xNjUuNCAxNDEuM1MzMDUgNDYwLjcgMzk3LjYgNDYwLjdjMTkuMyAwIDM4LjktNS4xIDU4LjYtOS45bDUzLjQgMjkuMy0xNC44LTQ4LjZDNTM0IDQwMi4xIDU2MyAzNjMuMiA1NjMgMzE5LjR6bS0yMTkuMS0yNC41Yy05LjcgMC0xOS4zLTkuNy0xOS4zLTE5LjYgMC05LjcgOS43LTE5LjMgMTkuMy0xOS4zIDE0LjggMCAyNC40IDkuNyAyNC40IDE5LjMgMCAxMC05LjcgMTkuNi0yNC40IDE5LjZ6bTEwNy4xIDBjLTkuNyAwLTE5LjMtOS43LTE5LjMtMTkuNiAwLTkuNyA5LjctMTkuMyAxOS4zLTE5LjMgMTQuNSAwIDI0LjQgOS43IDI0LjQgMTkuMy4xIDEwLTkuOSAxOS42LTI0LjQgMTkuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2hhdHNhcHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgwLjkgOTcuMUMzMzkgNTUuMSAyODMuMiAzMiAyMjMuOSAzMmMtMTIyLjQgMC0yMjIgOTkuNi0yMjIgMjIyIDAgMzkuMSAxMC4yIDc3LjMgMjkuNiAxMTFMMCA0ODBsMTE3LjctMzAuOWMzMi40IDE3LjcgNjguOSAyNyAxMDYuMSAyN2guMWMxMjIuMyAwIDIyNC4xLTk5LjYgMjI0LjEtMjIyIDAtNTkuMy0yNS4yLTExNS02Ny4xLTE1N3ptLTE1NyAzNDEuNmMtMzMuMiAwLTY1LjctOC45LTk0LTI1LjdsLTYuNy00LTY5LjggMTguM0w3MiAzNTkuMmwtNC40LTdjLTE4LjUtMjkuNC0yOC4yLTYzLjMtMjguMi05OC4yIDAtMTAxLjcgODIuOC0xODQuNSAxODQuNi0xODQuNSA0OS4zIDAgOTUuNiAxOS4yIDEzMC40IDU0LjEgMzQuOCAzNC45IDU2LjIgODEuMiA1Ni4xIDEzMC41IDAgMTAxLjgtODQuOSAxODQuNi0xODYuNiAxODQuNnptMTAxLjItMTM4LjJjLTUuNS0yLjgtMzIuOC0xNi4yLTM3LjktMTgtNS4xLTEuOS04LjgtMi44LTEyLjUgMi44LTMuNyA1LjYtMTQuMyAxOC0xNy42IDIxLjgtMy4yIDMuNy02LjUgNC4yLTEyIDEuNC0zMi42LTE2LjMtNTQtMjkuMS03NS41LTY2LTUuNy05LjggNS43LTkuMSAxNi4zLTMwLjMgMS44LTMuNy45LTYuOS0uNS05LjctMS40LTIuOC0xMi41LTMwLjEtMTcuMS00MS4yLTQuNS0xMC44LTkuMS05LjMtMTIuNS05LjUtMy4yLS4yLTYuOS0uMi0xMC42LS4yLTMuNyAwLTkuNyAxLjQtMTQuOCA2LjktNS4xIDUuNi0xOS40IDE5LTE5LjQgNDYuMyAwIDI3LjMgMTkuOSA1My43IDIyLjYgNTcuNCAyLjggMy43IDM5LjEgNTkuNyA5NC44IDgzLjggMzUuMiAxNS4yIDQ5IDE2LjUgNjYuNiAxMy45IDEwLjctMS42IDMyLjgtMTMuNCAzNy40LTI2LjQgNC42LTEzIDQuNi0yNC4xIDMuMi0yNi40LTEuMy0yLjUtNS0zLjktMTAuNS02LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdobWNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAxNjF2LTIxLjNsLTI4LjUtOC44LTIuMi0xMC40IDIwLjEtMjAuN0w0MjcgODAuNGwtMjkgNy41LTcuMi03LjUgNy41LTI4LjItMTkuMS0xMS42LTIxLjMgMjEtMTAuNy0zLjItNy0yNi40aC0yMi42bC02LjIgMjYuNC0xMi4xIDMuMi0xOS43LTIxLTE5LjQgMTEgOC4xIDI3LjctOC4xIDguNC0yOC41LTcuNS0xMSAxOS4xIDIwLjcgMjEtMi45IDEwLjQtMjguNSA3LjgtLjMgMjEuNyAyOC44IDcuNSAyLjQgMTIuMS0yMC4xIDE5LjkgMTAuNCAxOC41IDI5LjYtNy41IDcuMiA4LjYtOC4xIDI2LjkgMTkuOSAxMS42IDE5LjQtMjAuNCAxMS42IDIuOSA2LjcgMjguNSAyMi42LjMgNi43LTI4LjggMTEuNi0zLjUgMjAuNyAyMS42IDIwLjQtMTIuMS04LjgtMjggNy44LTguMSAyOC44IDguOCAxMC4zLTIwLjEtMjAuOS0xOC44IDIuMi0xMi4xIDI5LjEtN3ptLTExOS4yIDQ1LjJjLTMxLjMgMC01Ni44LTI1LjQtNTYuOC01Ni44czI1LjQtNTYuOCA1Ni44LTU2LjggNTYuOCAyNS40IDU2LjggNTYuOGMwIDMxLjUtMjUuNCA1Ni44LTU2LjggNTYuOHptNzIuMyAxNi40bDQ2LjkgMTQuNVYyNzdsLTU1LjEgMTMuNC00LjEgMjIuNyAzOC45IDM1LjMtMTkuMiAzNy45LTU0LTE2LjctMTQuNiAxNS4yIDE2LjcgNTIuNS0zOC4zIDIyLjctMzguOS00MC41LTIxLjcgNi42LTEyLjYgNTQtNDIuNC0uNS0xMi42LTUzLjYtMjEuNy01LjYtMzYuNCAzOC40LTM3LjQtMjEuNyAxNS4yLTUwLjUtMTMuNy0xNi4xLTU1LjUgMTQuMS0xOS43LTM0LjggMzcuOS0zNy40LTQuOC0yMi44LTU0LTE0LjEuNS00MC45TDU0IDIxOS45bDUuNy0xOS43LTM4LjktMzkuNEw0MS41IDEyNWw1My42IDE0LjEgMTUuMi0xNS43LTE1LjItNTIgMzYuNC0yMC43IDM2LjggMzkuNEwxOTEgODRsMTEuNi01MkgyNDVsMTEuNiA0NS45TDIzNCA3MmwtNi4zLTEuNy0zLjMgNS43LTExIDE5LjEtMy4zIDUuNiA0LjYgNC42IDE3LjIgMTcuNC0uMyAxLTIzLjggNi41LTYuMiAxLjctLjEgNi40LS4yIDEyLjlDMTUzLjggMTYxLjYgMTE4IDIwNCAxMTggMjU0LjdjMCA1OC4zIDQ3LjMgMTA1LjcgMTA1LjcgMTA1LjcgNTAuNSAwIDkyLjctMzUuNCAxMDMuMi04Mi44bDEzLjIuMiA2LjkuMSAxLjYtNi43IDUuNi0yNCAxLjktLjYgMTcuMSAxNy44IDQuNyA0LjkgNS44LTMuNCAyMC40LTEyLjEgNS44LTMuNS0yLTYuNS02LjgtMjEuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2lraXBlZGlhVyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgNTEuMmwtLjMgMTIuMmMtMjguMS44LTQ1IDE1LjgtNTUuOCA0MC4zLTI1IDU3LjgtMTAzLjMgMjQwLTE1NS4zIDM1OC42SDQxNWwtODEuOS0xOTMuMWMtMzIuNSA2My42LTY4LjMgMTMwLTk5LjIgMTkzLjEtLjMuMy0xNSAwLTE1LS4zQzE3MiAzNTIuMyAxMjIuOCAyNDMuNCA3NS44IDEzMy40IDY0LjQgMTA2LjcgMjYuNCA2My40LjIgNjMuN2MwLTMuMS0uMy0xMC0uMy0xNC4yaDE2MS45djEzLjljLTE5LjIgMS4xLTUyLjggMTMuMy00My4zIDM0LjIgMjEuOSA0OS43IDEwMy42IDI0MC4zIDEyNS42IDI4OC42IDE1LTI5LjcgNTcuOC0xMDkuMiA3NS4zLTE0Mi44LTEzLjktMjguMy01OC42LTEzMy45LTcyLjgtMTYwLTkuNy0xNy44LTM2LjEtMTkuNC01NS44LTE5LjdWNDkuOGwxNDIuNS4zdjEzLjFjLTE5LjQuNi0zOC4xIDcuOC0yOS40IDI2LjEgMTguOSA0MCAzMC42IDY4LjEgNDguMSAxMDQuNyA1LjYtMTAuOCAzNC43LTY5LjQgNDguMS0xMDAuOCA4LjktMjAuNi0zLjktMjguNi0zOC42LTI5LjQuMy0zLjYgMC0xMC4zLjMtMTMuNiA0NC40LS4zIDExMS4xLS4zIDEyMy4xLS42djEzLjZjLTIyLjUuOC00NS44IDEyLjgtNTguMSAzMS43bC01OS4yIDEyMi44YzYuNCAxNi4xIDYzLjMgMTQyLjggNjkuMiAxNTYuN0w1NTkuMiA5MS44Yy04LjYtMjMuMS0zNi40LTI4LjEtNDcuMi0yOC4zVjQ5LjZsMTI3LjggMS4xLjIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZG93cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDkzLjdsMTgzLjYtMjUuM3YxNzcuNEgwVjkzLjd6bTAgMzI0LjZsMTgzLjYgMjUuM1YyNjguNEgwdjE0OS45em0yMDMuOCAyOEw0NDggNDgwVjI2OC40SDIwMy44djE3Ny45em0wLTM4MC42djE4MC4xSDQ0OFYzMkwyMDMuOCA2NS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaXJzaW5kaGFuZHdlcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAuNzcxNjEsNDc5LjgxMjEzaDgzLjM2MDcxVjM2Ny44NDc0MWwtODMuMzYwNzEsNDcuMDA5Wm0zMjkuMDQ2NzUsMGg4Mi4zNTAyMlY0MTQuODU2NDVsLTgyLjM1MDIyLTQ3LjAwOVptLjAwNTY4LTQ0OFYyNTEuNTY4TDI1Ni4xNzU5LDE3OS4xODYxLDEzNC41MDM3OCwyNTEuNTY4VjMxLjgxMjEzSDUwLjc3MTYxVjM5Mi42MDU2NUwyNTYuMTc1OSwyNzAuMzE5MDksNDYyLjE2ODU4LDM5Mi42MDU2NVYzMS44MTIxM1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2l4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5My4zOCAxMzEuNjljMCAxMy4wMyAyLjA4IDMyLjY5LTI4LjY4IDQzLjgzLTkuNTIgMy40NS0xNS45NSA5LjY2LTE1Ljk1IDkuNjYgMC0zMSA0LjcyLTQyLjIyIDE3LjQtNDguODYgOS43NS01LjExIDI3LjIzLTQuNjMgMjcuMjMtNC42M3ptLTExNS44IDM1LjU0bC0zNC4yNCAxMzIuNjYtMjguNDgtMTA4LjU3Yy03LjY5LTMxLjk5LTIwLjgxLTQ4LjUzLTQ4LjQzLTQ4LjUzLTI3LjM3IDAtNDAuNjYgMTYuMTgtNDguNDMgNDguNTNMODkuNTIgMjk5Ljg5IDU1LjI4IDE2Ny4yM0M0OS43MyAxNDAuNTEgMjMuODYgMTI4Ljk2IDAgMTMxLjk2bDY1LjU3IDI0Ny45M3MyMS42MyAxLjU2IDMyLjQ2LTMuOTZjMTQuMjItNy4yNSAyMC45OC0xMi44NCAyOS41OS00Ni41NyA3LjY3LTMwLjA3IDI5LjExLTExOC40MSAzMS4xMi0xMjQuNyA0Ljc2LTE0Ljk0IDExLjA5LTEzLjgxIDE1LjQgMCAxLjk3IDYuMyAyMy40NSA5NC42MyAzMS4xMiAxMjQuNyA4LjYgMzMuNzMgMTUuMzcgMzkuMzIgMjkuNTkgNDYuNTcgMTAuODIgNS41MiAzMi40NiAzLjk2IDMyLjQ2IDMuOTZsNjUuNTctMjQ3LjkzYy0yNC40Mi0zLjA3LTQ5LjgyIDguOTMtNTUuMyAzNS4yN3ptMTE1Ljc4IDUuMjFzLTQuMSA2LjM0LTEzLjQ2IDExLjU3Yy02LjAxIDMuMzYtMTEuNzggNS42NC0xNy45NyA4LjYxLTE1LjE0IDcuMjYtMTMuMTggMTMuOTUtMTMuMTggMzUuMnYxNTIuMDdzMTYuNTUgMi4wOSAyNy4zNy0zLjQzYzEzLjkzLTcuMSAxNy4xMy0xMy45NSAxNy4yNi00NC43OFYxODEuNDFsLS4wMi4wMXYtOC45OHptMTYzLjQ0IDg0LjA4TDY0MCAxMzIuNzhzLTM1LjExLTUuOTgtNTIuNSA5Ljg1Yy0xMy4zIDEyLjEtMjQuNDEgMjkuNTUtNTQuMTggNzIuNDctLjQ3LjczLTYuMjUgMTAuNTQtMTMuMDcgMC0yOS4yOS00Mi4yMy00MC44LTYwLjI5LTU0LjE4LTcyLjQ3LTE3LjM5LTE1LjgzLTUyLjUtOS44NS01Mi41LTkuODVsODMuMiAxMjMuNzQtODIuOTcgMTIzLjM2czM2LjU3IDQuNjIgNTMuOTUtMTEuMjFjMTEuNDktMTAuNDYgMTcuNTgtMjAuMzcgNTIuNTEtNzAuNzIgNi44MS0xMC41MiAxMi41Ny0uNzcgMTMuMDcgMCAyOS40IDQyLjM4IDM5LjIzIDU4LjA2IDUzLjE0IDcwLjcyIDE3LjM5IDE1LjgzIDUzLjMyIDExLjIxIDUzLjMyIDExLjIxTDU1Ni44IDI1Ni41MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2l6YXJkc09mVGhlQ29hc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE5LjE5IDM0NS42OWMtMS45IDEuMzgtMTEuMDcgOC40NC0uMjYgMjMuNTcgNC42NCA2LjQyIDE0LjExIDEyLjc5IDIxLjczIDYuNTUgNi41LTQuODggNy4zNS0xMi45Mi4yNi0yMy4wNC01LjQ3LTcuNzYtMTQuMjgtMTIuODgtMjEuNzMtNy4wOHptMzM2Ljc1IDc1Ljk0Yy0uMzQgMS43LS41NSAxLjY3Ljc5IDAgMi4wOS00LjE5IDQuMTktMTAuMjEgNC45OC0xOS45IDMuMTQtMzguNDktNDAuMzMtNzEuNDktMTAxLjM0LTc4LjAzLTU0LjczLTYuMDItMTI0LjM4IDkuMTctMTg4LjggNjAuNDlsLS4yNiAxLjU3YzIuNjIgNC45OCA0Ljk4IDEwLjc0IDMuNCAyMS4yMWwuNzkuMjZjNjMuODktNTguNCAxMzEuMTktNzcuMjUgMTg0LjM1LTczLjg1IDU4LjQgMy42NyAxMDAuMDMgMzQuMDQgMTAwLjAzIDY4LjA4LS4wMSA5Ljk2LTIuNjMgMTUuNzItMy45NCAyMC4xN3pNMzkyLjI4IDI0MC40MmMuNzkgNy4wNyA0LjE5IDEwLjIxIDkuMTcgMTAuNDcgNS41LjI2IDkuNDMtMi42MiAxMC40Ny02LjU1Ljc5LTMuNCAyLjA5LTI5Ljg1IDIuMDktMjkuODVzLTExLjI2IDYuNTUtMTQuOTMgMTAuNDdjLTMuNjYgMy42OC03LjMzIDguMzktNi44IDE1LjQ2em0tNTAuMDItMTUxLjFDMTM3Ljc1IDg5LjMyIDEzLjEgMjI2LjguNzkgMjQxLjJjLTEuMDUuNTItMS4zMS43OS43OSAxLjMxIDYwLjQ5IDE2LjUgMTU1LjgxIDgxLjE4IDE5Ni4xMyAyMDIuMTZsMS4wNS4yNmM1NS4yNS02OS45MiAxNDAuODgtMTI4LjA1IDIzNi45OS0xMjguMDUgODAuOTIgMCAxMzAuMTUgNDIuMTYgMTMwLjE1IDgwLjM5IDAgMTguMzMtNi41NSAzMy41Mi0yMi4yNiA0Ni4zNSAwIC45Ni0uMi43OS43OS43OSAxNC42Ni0xMC43NCAyNy41LTI4LjggMjcuNS00OC4xOCAwLTIyLjc4LTEyLjA1LTM4LjIzLTEyLjA1LTM4LjIzIDcuMDcgNy4wNyAxMC43NCAxNi4yNCAxMC43NCAxNi4yNCA1Ljc2LTQwLjg1IDI2Ljk3LTYyLjMyIDI2Ljk3LTYyLjMyLTIuMzYtOS42OS02LjgxLTE3LjgxLTYuODEtMTcuODEgNy41OSA4LjEyIDE0LjQgMjcuNSAxNC40IDQxLjM3IDAgMTAuNDctMy40IDIyLjc4LTEyLjU3IDMxLjk1bC4yNi41MmM4LjEyLTQuOTggMTYuNS0xNi43NiAxNi41LTM3Ljk3IDAtMTUuNzEtNC43MS0yNS45Mi00LjcxLTI1LjkyIDUuNzYtNS4yNCAxMS4yNi05LjE3IDE1Ljk3LTExLjc4Ljc5IDMuNCAyLjA5IDkuNjkgMi4zNiAxNC45MyAwIDEuMDUuNzkgMS44MyAxLjA1IDAgLjc5LTUuNzYtLjI2LTE2LjI0LS4yNi0xNi41IDYuMDItMy4xNCA5LjY5LTQuNDUgOS42OS00LjQ1QzYxNy43NCAxNzYgNDg5LjQzIDg5LjMyIDM0Mi4yNiA4OS4zMnptLTk5LjI0IDI4OS42MmMtMTEuMDYgOC45OS0yNC4yIDQuMDgtMzAuNjQtNC4xOS03LjQ1LTkuNTgtNi43Ni0yNC4wOSA0LjE5LTMyLjQ3IDE0Ljg1LTExLjM1IDI3LjA4LS40OSAzMS4xNiA1LjUuMjguMzkgMTIuMTMgMTYuNTctNC43MSAzMS4xNnptMi4wOS0xMzYuNDNsOS40My0xNy44MSAxMS43OCA3MC45Ni0xMi41NyA2LjAyLTI0LjYyLTI4LjggMTQuMTQtMjYuNzEgMy42NyA0LjQ1LTEuODMtOC4xMXptMTguNTkgMTE3LjU4bC0uMjYtLjI2YzIuMDUtNC4xLTIuNS02LjYxLTE3LjU0LTMxLjY5LTEuMzEtMi4zNi0zLjE0LTIuODgtNC40NS0yLjYybC0uMjYtLjUyYzcuODYtNS43NiAxNS40NS0xMC4yMSAyNS40LTE1LjcxbC41Mi4yNmMxLjMxIDEuODMgMi4wOSAyLjg4IDMuNCA0LjcxbC0uMjYuNTJjLTEuMDUtLjI2LTIuMzYtLjc5LTUuMjQuMjYtMi4wOS43OS03Ljg2IDMuNjctMTIuMzEgNy41OXYxLjMxYzEuNTcgMi4zNiAzLjkzIDYuNTUgNS43NiA5LjY5aC4yNmMxMC4wNS02LjI4IDcuNTYtNC41NSAxMS41Mi03Ljg2aC4yNmMuNTIgMS44My41MiAxLjgzIDEuODMgNS41bC0uMjYuMjZjLTMuMDYuNjEtNC42NS4zNC0xMS41MiA1LjV2LjI2YzkuNDYgMTcuMDIgMTEuMDEgMTYuNzUgMTIuNTcgMTUuOTdsLjI2LjI2Yy0yLjM0IDEuNTktNi4yNyA0LjIxLTkuNjggNi41N3ptNTUuMjYtMzIuNDdjLTMuMTQgMS41Ny02LjAyIDIuODgtOS45NSA0Ljk4bC0uMjYtLjI2YzEuMjktMi41OSAxLjE2LTIuNzEtMTEuNzgtMzIuNDdsLS4yNi0uMjZjLS4xNSAwLTguOSAzLjY1LTkuOTUgNy4zM2gtLjUybC0xLjA1LTUuNzYuMjYtLjUyYzcuMjktNC41NiAyNS41My0xMS42NCAyNy43Ni0xMi41N2wuNTIuMjYgMy4xNCA0Ljk4LS4yNi41MmMtMy41My0xLjc2LTcuMzUuNzYtMTIuMzEgMi42MnYuMjZjMTIuMzEgMzIuMDEgMTIuNjcgMzAuNjQgMTQuNjYgMzAuNjR2LjI1em00NC43Ny0xNi41Yy00LjE5IDEuMDUtNS4yNCAxLjMxLTkuNjkgMi44OGwtLjI2LS4yNi41Mi00LjQ1Yy0xLjA1LTMuNC0zLjE0LTExLjUyLTMuNjctMTMuNjJsLS4yNi0uMjZjLTMuNC43OS04LjkgMi42Mi0xMi44MyAzLjkzbC0uMjYuMjZjLjc5IDIuNjIgMy4xNCA5Ljk1IDQuMTkgMTMuODguNzkgMi4zNiAxLjgzIDIuODggMi44OCAzLjE0di41MmMtMy42NyAxLjA1LTcuMDcgMi42Mi0xMC4yMSAzLjkzbC0uMjYtLjI2YzEuMDUtMS4zMSAxLjA1LTIuODguMjYtNC45OC0xLjA1LTMuMTQtOC4xMi0yMy44My05LjE3LTI3LjIzLS41Mi0xLjgzLTEuNTctMy4xNC0yLjYyLTMuMTR2LS41MmMzLjE0LTEuMDUgNi4wMi0yLjA5IDEwLjc0LTMuNGwuMjYuMjYtLjI2IDQuNzFjMS4zMSAzLjkzIDIuMzYgNy41OSAzLjE0IDkuNjloLjI2YzMuOTMtMS4zMSA5LjQzLTIuODggMTIuODMtMy45M2wuMjYtLjI2LTIuNjItOS40M2MtLjUyLTEuODMtMS4wNS0zLjQtMi42Mi0zLjkzdi0uMjZjNC40NS0xLjA1IDcuMzMtMS44MyAxMC43NC0yLjM2bC4yNi4yNmMtMS4wNSAxLjMxLTEuMDUgMi44OC0uNTIgNC40NSAxLjU3IDYuMjggNC43MSAyMC40MyA2LjI4IDI2LjQ1LjU0IDIuNjIgMS44NSAzLjQxIDIuNjMgMy45M3ptMzIuMjEtNi44MWwtLjI2LjI2Yy00LjcxLjUyLTE0LjE0IDIuMzYtMjIuNTIgNC4xOWwtLjI2LS4yNi43OS00LjE5Yy0xLjU3LTcuODYtMy40LTE4LjU5LTQuOTgtMjYuMTktLjI2LTEuODMtLjc5LTIuODgtMi42Mi0zLjY3bC43OS0uNTJjOS4xNy0xLjU3IDIwLjE2LTIuMzYgMjQuODgtMi42MmwuMjYuMjZjLjUyIDIuMzYuNzkgMy4xNCAxLjU3IDUuNWwtLjI2LjI2Yy0xLjE0LTEuMTQtMy4zNC0zLjItMTYuMjQtLjc5bC0uMjYuMjZjLjI2IDEuNTcgMS4wNSA2LjU1IDEuNTcgOS45NWwuMjYuMjZjOS41Mi0xLjY4IDQuNzYtLjA2IDEwLjc0LTIuMzZoLjI2YzAgMS41Ny0uMjYgMS44My0uMjYgNS4yNGgtLjI2Yy00LjgxLTEuMDMtMi4xNS0uOS0xMC4yMSAwbC0uMjYuMjZjLjI2IDIuMDkgMS41NyA5LjQzIDIuMDkgMTIuNTdsLjI2LjI2YzEuMTUuMzggMTQuMjEtLjY1IDE2LjI0LTQuNzFoLjI2Yy0uNTMgMi4zOC0xLjA1IDQuMjEtMS41OCA2LjA0em0xMC43NC00NC41MWMtNC40NSAyLjM2LTguMTIgMi44OC0xMSAyLjg4LS4yNS4wMi0xMS40MSAxLjA5LTE3LjU0LTkuOTUtNi43NC0xMC43OS0uOTgtMjUuMiA1LjUtMzEuNjkgOC44LTguMTIgMjMuMzUtMTAuMSAyOC41NC0xNy4wMiA4LjAzLTEwLjMzLTEzLjA0LTIyLjMxLTI5LjU5LTUuNzZsLTIuNjItMi44OCA1LjI0LTE2LjI0YzI1LjU5LTEuNTcgNDUuMi0zLjA0IDUwLjAyIDE2LjI0Ljc5IDMuMTQgMCA5LjQzLS4yNiAxMi4wNSAwIDIuNjItMS44MyAxOC44NS0yLjA5IDIzLjA0LS41MiA0LjE5LS43OSAxOC4zMy0uNzkgMjAuNjkuMjYgMi4zNi41MiA0LjE5IDEuNTcgNS41IDEuNTcgMS44MyA1Ljc2IDEuODMgNS43NiAxLjgzbC0uNzkgNC43MWMtMTEuODItMS4wNy0xMC4yOC0uNTktMjAuNDMtMS4wNS0zLjIyLTUuMTUtMi4yMy0zLjI4LTQuMTktNy44NiAwIC4wMS00LjE5IDMuOTQtNy4zMyA1LjUxem0zNy4xOCAyMS4yMWMtNi4zNS0xMC41OC0xOS44Mi03LjE2LTIxLjczIDUuNS0yLjYzIDE3LjA4IDE0LjMgMTkuNzkgMjAuNjkgMTAuMjFsLjI2LjI2Yy0uNTIgMS44My0xLjgzIDYuMDItMS44MyA2LjI4bC0uNTIuNTJjLTEwLjMgNi44Ny0yOC41LTIuNS0yNS42Ni0xOC41OSAxLjk0LTEwLjg3IDE0LjQ0LTE4LjkzIDI4LjgtOS45NWwuMjYuNTJjMCAxLjA2LS4yNyAzLjQxLS4yNyA1LjI1em01Ljc3LTg3Ljczdi02LjU1Yy42OSAwIDE5LjY1IDMuMjggMjcuNzYgNy4zM2wtMS41NyAxNy41NHMxMC4yMS05LjQzIDE1LjQ1LTEwLjc0YzUuMjQtMS41NyAxNC45MyA3LjMzIDE0LjkzIDcuMzNsLTExLjI2IDExLjI2Yy0xMi4wNy02LjM1LTE5LjU5LS4wOC0yMC42OS43OS01LjI5IDM4LjcyLTguNiA0Mi4xNyA0LjQ1IDQ2LjA5bC0uNTIgNC43MWMtMTcuNTUtNC4yOS0xOC41My00LjUtMzYuOTItNy4zM2wuNzktNC43MWM3LjI1IDAgNy40OC01LjMyIDcuNTktNi44MSAwIDAgNC45OC01My4xNiA0Ljk4LTU1LjI1LS4wMi0yLjg3LTQuOTktMy42Ni00Ljk5LTMuNjZ6bTEwLjk5IDExNC40NGMtOC4xMi0yLjA5LTE0LjE0LTExLTEwLjc0LTIwLjY5IDMuMTQtOS40MyAxMi4zMS0xMi4zMSAxOC44NS0xMC4yMSA5LjE3IDIuNjIgMTIuODMgMTEuNzggMTAuNzQgMTkuMzgtMi42MSA4LjktOS40MiAxMy44Ny0xOC44NSAxMS41MnptNDIuMTYgOS42OWMtMi4zNi0uNTItNy4wNy0yLjM2LTguNjQtMi44OHYtLjI2bDEuNTctMS44M2MuNTktOC4yNC41OS03LjI3LjI2LTcuNTktNC44Mi0xLjgxLTYuNjYtMi4zNi03LjA3LTIuMzYtMS4zMSAxLjgzLTIuODggNC40NS0zLjY3IDUuNWwtLjc5IDMuNHYuMjZjLTEuMzEtLjI2LTMuOTMtMS4zMS02LjAyLTEuNTd2LS4yNmwyLjYyLTEuODNjMy40LTQuNzEgOS45NS0xNC4xNCAxMy44OC0yMC4xNnYtMi4wOWwuNTItLjI2YzIuMDkuNzkgNS41IDIuMDkgNy41OSAyLjg4LjQ4LjQ4LjE4LTEuODctMS4wNSAyNS4xNC0uMjQgMS44MS4wMiAyLjYuOCAzLjkxem0tNC43MS04OS44MmMxMS4yNS0xOC4yNyAzMC43Ni0xNi4xOSAzNC4wNC0zLjRMNTM5LjcgMTk4YzIuMzQtNi4yNS0yLjgyLTkuOS00LjQ1LTExLjI2bDEuODMtMy42N2MxMi4yMiAxMC4zNyAxNi4zOCAxMy45NyAyMi41MiAyMC40My0yNS45MSA3My4wNy0zMC43NiA4MC44MS0yNC42MiA4NC4zMmwtMS44MyA0LjQ1Yy02LjM3LTMuMzUtOC45LTQuNDItMTcuODEtOC42NGwyLjA5LTYuODFjLS4yNi0uMjYtMy45MyAzLjkzLTkuNjkgMy42Ny0xOS4wNi0xLjMtMjIuODktMzEuNzUtOS42Ny01Mi45em0yOS4zMyA3OS4zNGMwLTUuNzEtNi4zNC03Ljg5LTcuODYtNS4yNC0xLjMxIDIuMDkgMS4wNSA0Ljk4IDIuODggOC4zOCAxLjU3IDIuNjIgMi42MiA2LjI4IDEuMDUgOS40My0yLjY0IDYuMzQtMTIuNCA1LjMxLTE1LjQ1LS43OSAwLS43LS4yNy4wOSAxLjgzLTQuNzFsLjc5LS4yNmMtLjU3IDUuNjYgNi4wNiA5LjYxIDguMzggNC45OCAxLjA1LTIuMDktLjUyLTUuNS0yLjA5LTguMzgtMS41Ny0yLjYyLTMuNjctNi4yOC0xLjgzLTkuNjkgMi43Mi01LjA2IDExLjI1LTQuNDcgMTQuNjYgMi4zNnYuNTJsLTIuMzYgMy40em0yMS4yMSAxMy4zNmMtMS45Ni0zLjI3LS45MS0yLjE0LTQuNDUtNC43MWgtLjI2Yy0yLjM2IDQuMTktNS43NiAxMC40Ny04LjY0IDE2LjI0LTEuMzEgMi4zNi0xLjA1IDMuNC0uNzkgMy45M2wtLjI2LjI2LTUuNzYtNC40NS4yNi0uMjYgMi4wOS0xLjMxYzMuMTQtNS43NiA2LjU1LTEyLjA1IDkuMTctMTcuMDJ2LS4yNmMtMi42NC0xLjk4LTEuMjItMS41MS02LjAyLTEuODN2LS4yNmwzLjE0LTMuNGguMjZjMy42NyAyLjM2IDkuOTUgNi44MSAxMi4zMSA4LjlsLjI2LjI2LTEuMzEgMy45MXptMjcuMjMtNDQuMjZsLTIuODgtMi44OGMuNzktMi4zNiAxLjgzLTQuOTggMi4wOS03LjU5Ljc1LTkuNzQtMTEuNTItMTEuODQtMTEuNTItNC45OCAwIDQuOTggNy44NiAxOS4zOCA3Ljg2IDI3Ljc2IDAgMTAuMjEtNS43NiAxNS43MS0xMy44OCAxNi41LTguMzguNzktMjAuMTYtMTAuNDctMjAuMTYtMTAuNDdsNC45OC0xNC40IDIuODggMi4wOWMtMi45NyAxNy44IDE3LjY4IDIwLjM3IDEzLjM1IDUuMjQtMS4wNi00LjAyLTE4Ljc1LTM0LjIgMi4wOS0zOC4yMyAxMy42Mi0yLjM2IDIzLjA0IDE2LjUgMjMuMDQgMTYuNWwtNy44NSAxMC40NnptMzUuNjItMTAuMjFjLTExLTMwLjM4LTYwLjQ5LTEyNy41My0xOTEuOTUtMTI5LjYyLTUzLjQyLTEuMDUtOTQuMjcgMTUuNDUtMTMyLjc2IDM3Ljk3bDg1LjYzLTkuMTctOTEuMzkgMjAuNjkgMjUuMTQgMTkuNjQtMy45My0xNi41YzcuNS0xLjcxIDM5LjE1LTguNDUgNjYuNzctOC45bC0yMi4yNiA4MC4zOWMxMy42MS0uNyAxOC45Ny04Ljk4IDE5LjY0LTIyLjc4bDQuOTgtMS4wNS4yNiAyNi43MWMtMjIuNDYgMy4yMS0zNy4zIDYuNjktNDkuNDkgOS45NWwxMy4wOS00My4yMS02MS41NC0zNi42NiAyLjM2IDguMTIgMTAuMjEgNC45OGM2LjI4IDE4LjU5IDE5LjM4IDU2LjU2IDIwLjQzIDU4LjY2IDEuOTUgNC4yOCAzLjE2IDUuNzggMTIuMDUgNC40NWwxLjA1IDQuOThjLTE2LjA4IDQuODYtMjMuNjYgNy42MS0zOS4wMiAxNC40bC0yLjM2LTQuNzFjNC40LTIuOTQgOC43My0zLjk0IDUuNS0xMi44My0yMy43LTYyLjUtMjEuNDgtNTguMTQtMjIuNzgtNTkuNDRsMi4zNi00LjQ1IDMzLjUyIDY3LjNjLTMuODQtMTEuODcgMS42OCAxLjY5LTMyLjk5LTc4LjgybC00MS45IDg4LjUxIDQuNzEtMTMuODgtMzUuODgtNDIuMTYgMjcuNzYgOTMuNDgtMTEuNzggOC4zOEM5NSAyMjguNTggMTAxLjA1IDIzMS44NyA5My4yMyAyMzEuNTJjLTUuNS0uMjYtMTMuNjIgNS41LTEzLjYyIDUuNUw3NC42MyAyMzFjMzAuNTYtMjMuNTMgMzEuNjItMjQuMzMgNTguNC00Mi42OGw0LjE5IDcuMDdzLTUuNzYgNC4xOS03Ljg2IDcuMDdjLTUuOSA5LjI4IDEuNjcgMTMuMjggNjEuOCA3NS42OGwtMTguODUtNTguOTIgMzkuOC0xMC4yMSAyNS42NiAzMC42NCA0LjQ1LTEyLjMxLTQuOTgtMjQuNjIgMTMuMDktMy40LjUyIDMuMTQgMy42Ny0xMC40Ny05NC4yNyAyOS4zMyAxMS4yNi00Ljk4LTEzLjYyLTQyLjQyIDE3LjI4LTkuMTcgMzAuMTEgMzYuMTQgMjguNTQtMTMuMDljLTEuNDEtNy40Ny0yLjQ3LTE0LjUtNC43MS0xOS42NGwxNy4yOCAxMy44OCA0LjcxLTIuMDktNTkuMTgtNDIuNjggMjMuMDggMTEuNWMxOC45OC02LjA3IDI1LjIzLTcuNDcgMzIuMjEtOS42OWwyLjYyIDExYy0xMi41NSAxMi41NSAxLjQzIDE2LjgyIDYuNTUgMTkuMzhsLTEzLjYyLTYxLjAxIDEyLjA1IDI4LjI4YzQuMTktMS4zMSA3LjMzLTIuMDkgNy4zMy0yLjA5bDIuNjIgOC42NHMtMy4xNCAxLjA1LTYuMjggMi4wOWw4LjkgMjAuOTUgMzMuNzgtNjUuNzMtMjAuNjkgNjEuMDFjNDIuNDItMjQuMDkgODEuNDQtMzYuNjYgMTMxLjk4LTM1Ljg4IDY3LjA0IDEuMDUgMTY3LjMzIDQwLjg1IDE5OS44IDEzOS44My43OCAyLjEtLjAxIDIuNjMtLjc5LjI3ek0yMDMuNDggMTUyLjQzczEuODMtLjUyIDQuMTktMS4zMWw5LjQzIDcuNTljLS40IDAtMy40NC0uMjUtMTEuMjYgMi4zNmwtMi4zNi04LjY0em0xNDMuNzYgMzguNWMtMS41Ny0uNi0yNi40Ni00LjgxLTMzLjI2IDIwLjY5bDIxLjczIDE3LjAyIDExLjUzLTM3Ljcxek0zMTguNDMgNjcuMDdjLTU4LjQgMC0xMDYuMDUgMTIuMDUtMTE0Ljk2IDE0LjR2Ljc5YzguMzggMi4wOSAxNC40IDQuMTkgMjEuMjEgMTEuNzhsMS41Ny4yNmM2LjU1LTEuODMgNDguOTctMTMuODggMTEwLjI0LTEzLjg4IDE4MC4xNiAwIDMwMS42NyAxMTYuNzkgMzAxLjY3IDIyMy4zN3Y5Ljk1YzAgMS4zMS43OSAyLjYyIDEuMDUuNTIuNTItMi4wOS43OS04LjY0Ljc5LTE5LjY0LjI2LTgzLjc5LTk2LjYzLTIyNy41NS0zMjEuNTctMjI3LjU1em0yMTEuMDYgMTY5LjY4YzEuMzEtNS43NiAwLTEyLjMxLTcuMzMtMTMuMDktOS42Mi0xLjEzLTE2LjE0IDIzLjc5LTE3LjAyIDMzLjUyLS43OSA1LjUtMS4zMSAxNC45MyA2LjAyIDE0LjkzIDQuNjgtLjAxIDkuNzItLjkxIDE4LjMzLTM1LjM2em0tNjEuNTMgNDIuOTVjLTIuNjItLjc5LTkuNDMtLjc5LTEyLjU3IDEwLjQ3LTEuODMgNi44MS41MiAxMy4zNSA2LjAyIDE0LjY2IDMuNjcgMS4wNSA4LjkuNTIgMTEuNzgtMTAuNzQgMi42Mi05Ljk0LTEuODMtMTMuNjEtNS4yMy0xNC4zOXpNNDkxIDMwMC42NWMxLjgzLjUyIDMuMTQgMS4wNSA1Ljc2IDEuODMgMC0xLjgzLjUyLTguMzguNzktMTIuMDUtMS4wNSAxLjMxLTUuNSA4LjEyLTYuNTUgOS45NXYuMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvZHUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc4LjQxNCAzMzkuNzA2SDE0MS4xTDExMi4xNjYgMjIzLjQ3NWgtLjQ3OEw4My4yMjggMzM5LjcwNkg0NS4yTDAgMTY4Ljk0NkgzNy41NDhMNjQuNTc0IDI4NS4xNzdoLjQ3OEw5NC43MDcgMTY4Ljk0NmgzNS4xNTdsMjkuMTc4IDExNy42NjdoLjQ3OUwxODcuNSAxNjguOTQ2aDM2LjgzMXpNMjcxLjQgMjEyLjcxM2MzOC45ODQgMCA2NC4xIDI1LjgyOCA2NC4xIDY1LjI5MSAwIDM5LjIyMi0yNS4xMTEgNjUuMDUtNjQuMSA2NS4wNS0zOC43NDMgMC02My44NTUtMjUuODI4LTYzLjg1NS02NS4wNUMyMDcuNTQ3IDIzOC41NDEgMjMyLjY1OSAyMTIuNzEzIDI3MS40IDIxMi43MTN6bTAgMTA0Ljc1M2MyMy4yIDAgMzAuMTMzLTE5Ljg1MiAzMC4xMzMtMzkuNDYyIDAtMTkuODUyLTYuOTM0LTM5LjctMzAuMTMzLTM5LjctMjcuNyAwLTI5Ljg5NCAxOS44NS0yOS44OTQgMzkuN0MyNDEuNTA4IDI5Ny42MTQgMjQ4LjQ0MyAzMTcuNDY2IDI3MS40IDMxNy40NjZ6TTQzNS4wODQgMzIzLjkyMmgtLjQ3OGMtNy44OTMgMTMuMzkyLTIxLjc2NSAxOS4xMzItMzcuNTQ4IDE5LjEzMi0zNy4zMSAwLTU1LjQ4NS0zMi4wNDUtNTUuNDg1LTY2LjI0NiAwLTMzLjI0MyAxOC40MTUtNjQuMDk1IDU0Ljc2Ny02NC4wOTUgMTQuNTg5IDAgMjguOTM4IDYuMjE4IDM2LjgzMSAxOC40MTZoLjI0VjE2OC45NDZoMzMuOTZ2MTcwLjc2SDQzNS4wODR6TTQwNS40MjggMjM4LjNjLTIyLjI0IDAtMjkuODk0IDE5LjEzNC0yOS44OTQgMzkuNDYzIDAgMTkuMzcxIDguODQ4IDM5LjcgMjkuODk0IDM5LjcgMjIuNDgyIDAgMjkuMTc4LTE5LjYxMyAyOS4xNzgtMzkuOTRDNDM0LjYwNiAyNTcuNDM2IDQyNy40MzIgMjM4LjMgNDA1LjQyOCAyMzguM3pNNTkyLjk2IDMzOS43MDZINTYwLjY3M1YzMjIuNDg3aC0uNzE4Yy04LjYwOSAxMy44Ny0yMy40MzYgMjAuNTY3LTM3Ljc4NiAyMC41NjctMzYuMTEzIDAtNDUuMi0yMC4zMjgtNDUuMi01MC45NDFWMjE2LjA2MWgzMy45NTlWMjg1LjljMCAyMC4zMjkgNS45NzkgMzAuMzcyIDIxLjc2NSAzMC4zNzIgMTguNDE1IDAgMjYuMzA2LTEwLjI4MyAyNi4zMDYtMzUuMzkzVjIxNi4wNjFINTkyLjk2ek02MDIuNDUzIDMwMi44NzZINjQwdjM2LjgzSDYwMi40NTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvbGZQYWNrQmF0dGFsaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2Ny43MyA0NzEuNTNsMTAuNTYgMTUuODQgNS4yOC0xMi4zMiA1LjI4IDdWNTEyYzIxLjA2LTcuOTIgMjEuMTEtNjYuODYgMjUuNTEtOTcuMjEgNC42Mi0zMS44OS0uODgtOTIuODEgODEuMzctMTQ5LjExLTguODgtMjMuNjEtMTItNDkuNDMtMi42NC04MC4wNUM0MjEgMTg5IDQ0NyAxOTYuMjEgNDU2LjQzIDIzOS43M2wtMzAuMzUgOC4zNmMxMS4xNSAyMyAxNyA0Ni43NiAxMy4yIDcyLjE0TDQxMiAzMTMuMThsLTYuMTYgMzMuNDMtMTguNDctNy04LjggMzMuMzktMTkuMzUtNyAyNi4zOSAyMS4xMSA4LjgtMjguMTVMNDE5IDM2NC4ybDctMzUuNjMgMjYuMzkgMTQuNTJjLjI1LTIwIDctNTguMDYtOC44LTg0LjQ1bDI2LjM5IDUuMjhjNC0yMi4wNy0yLjM4LTM5LjIxLTcuOTItNTYuNzRsMjIuNDMgOS42OGMtLjQ0LTI1LjA3LTI5Ljk0LTU2Ljc5LTYxLjU4LTU4LjUtMjAuMjItMS4wOS01Ni43NC0yNS4xNy01NC4xLTUxLjkgMi0xOS44NyAxNy40NS00Mi42MiA0My4xMS00OS43LTQ0IDM2LjUxLTkuNjggNjcuMyA1LjI4IDczLjQ2IDQuNC0xMS40NCAxNy41NC02OS4wOCAwLTEzMC4yLTQwLjM5IDIyLjg3LTg5LjY1IDY1LjEtOTMuMiAxNDcuNzlsLTU4IDM4LjcxLTMuNTIgOTMuMjVMMzY5Ljc4IDIyMGw3IDctMTcuNTkgMy41Mi00NCAzOC43MS0xNS44NC01LjI4LTI4LjEgNDkuMjUtMy41MiAxMTkuNjQgMjEuMTEgMTUuODQtMzIuNTUgMTUuODQtMzIuNTUtMTUuODQgMjEuMTEtMTUuODQtMy41Mi0xMTkuNjQtMjguMTUtNDkuMjYtMTUuODQgNS4yOC00NC0zOC43MS0xNy41OC0zLjUxIDctNyAxMDcuMzMgNTkuODItMy41Mi05My4yNS01OC4wNi0zOC43MUMxODUgNjUuMSAxMzUuNzcgMjIuODcgOTUuMyAwYy0xNy41NCA2MS4xMi00LjQgMTE4Ljc2IDAgMTMwLjIgMTUtNi4xNiA0OS4yNi0zNi45NSA1LjI4LTczLjQ2IDI1LjY2IDcuMDggNDEuMTUgMjkuODMgNDMuMTEgNDkuNyAyLjYzIDI2Ljc0LTMzLjg4IDUwLjgxLTU0LjEgNTEuOS0zMS42NSAxLjcyLTYxLjE1IDMzLjQ0LTYxLjU5IDU4LjUxbDIyLjQzLTkuNjhjLTUuNTQgMTcuNTMtMTEuOTEgMzQuNjctNy45MiA1Ni43NGwyNi4zOS01LjI4Yy0xNS43NiAyNi4zOS05LjA1IDY0LjQzLTguOCA4NC40NWwyNi4zOS0xNC41MiA3IDM1LjYzIDI0LjYzLTUuMjggOC44IDI4LjE1TDE1My4zNSAzNjYgMTM0IDM3M2wtOC44LTMzLjQzLTE4LjQ3IDctNi4xNi0zMy40My0yNy4yNyA3Yy0zLjgyLTI1LjM4IDItNDkuMSAxMy4yLTcyLjE0bC0zMC4zNS04LjM2YzkuNC00My41MiAzNS40Ny01MC43NyA2My4zNC01NC4xIDkuMzYgMzAuNjIgNi4yNCA1Ni40NS0yLjY0IDgwLjA1IDgyLjI1IDU2LjMgNzYuNzUgMTE3LjIzIDgxLjM3IDE0OS4xMSA0LjQgMzAuMzUgNC40NSA4OS4yOSAyNS41MSA5Ny4yMXYtMjkuODNsNS4yOC03IDUuMjggMTIuMzIgMTAuNTYtMTUuODQgMTEuNDQgMjEuMTEgMTEuNDMtMjEuMXptNzkuMTctOTVMMzMxLjA2IDM2NmM3LjQ3LTQuMzYgMTMuNzYtOC40MiAxOS4zNS0xMi4zMi0uNiA3LjIyLS4yNyAxMy44NC0zLjUxIDIyLjg0em0yOC4xNS00OS4yNmMtLjQgMTAuOTQtLjkgMjEuNjYtMS43NiAzMS42Ny03Ljg1LTEuODYtMTUuNTctMy44LTIxLjExLTcgOC4yNC03Ljk0IDE1LjU1LTE2LjMyIDIyLjg3LTI0LjY4em0yNC42MyA1LjI4YzAtMTMuNDMtMi4wNS0yNC4yMS01LjI4LTMzLjQzYTIzNSAyMzUgMCAwIDEtMTguNDcgMjcuMjd6bTMuNTItODAuOTRjMTkuNDQgMTIuODEgMjcuOCAzMy42NiAyOS45MSA1Ni4zLTEyLjMyLTQuNTMtMjQuNjMtOS4zMS0zNi45NS0xMC41NiA1LjA2LTEyIDYuNjUtMjguMTQgNy00NS43NHptLTEuNzYtNDUuNzRjLjgxIDE0LjMgMS44NCAyOC44MiAxLjc2IDQyLjIzIDE5LjIyLTguMTEgMjkuNzgtOS43MiA0NC0xNC4wOC0xMC42MS0xOC45Ni0yNy4yLTI1LjUzLTQ1Ljc2LTI4LjE2ek0xNjUuNjggMzc2LjUyTDE4MS41MiAzNjZjLTcuNDctNC4zNi0xMy43Ni04LjQyLTE5LjM1LTEyLjMyLjYgNy4yNi4yNyAxMy44OCAzLjUxIDIyLjg4em0tMjguMTUtNDkuMjZjLjQgMTAuOTQuOSAyMS42NiAxLjc2IDMxLjY3IDcuODUtMS44NiAxNS41Ny0zLjggMjEuMTEtNy04LjI0LTcuOTMtMTUuNTUtMTYuMzEtMjIuODctMjQuNjd6bS0yNC42NCA1LjI4YzAtMTMuNDMgMi0yNC4yMSA1LjI4LTMzLjQzYTIzNSAyMzUgMCAwIDAgMTguNDcgMjcuMjd6bS0zLjUyLTgwLjk0Yy0xOS40NCAxMi44MS0yNy44IDMzLjY2LTI5LjkxIDU2LjMgMTIuMzItNC41MyAyNC42My05LjMxIDM3LTEwLjU2LTUtMTItNi42NS0yOC4xNC03LTQ1Ljc0em0xLjc2LTQ1Ljc0Yy0uODEgMTQuMy0xLjg0IDI4LjgyLTEuNzYgNDIuMjMtMTkuMjItOC4xMS0yOS43OC05LjcyLTQ0LTE0LjA4IDEwLjYzLTE4Ljk1IDI3LjIzLTI1LjUyIDQ1Ljc2LTI4LjE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXb3JkcHJlc3NTaW1wbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5LjMgOCA4IDExOS4yIDggMjU2YzAgMTM2LjcgMTExLjMgMjQ4IDI0OCAyNDhzMjQ4LTExMS4zIDI0OC0yNDhDNTA0IDExOS4yIDM5Mi43IDggMjU2IDh6TTMzIDI1NmMwLTMyLjMgNi45LTYzIDE5LjMtOTAuN2wxMDYuNCAyOTEuNEM4NC4zIDQyMC41IDMzIDM0NC4yIDMzIDI1NnptMjIzIDIyM2MtMjEuOSAwLTQzLTMuMi02My05LjFsNjYuOS0xOTQuNCA2OC41IDE4Ny44Yy41IDEuMSAxIDIuMSAxLjYgMy4xLTIzLjEgOC4xLTQ4IDEyLjYtNzQgMTIuNnptMzAuNy0zMjcuNWMxMy40LS43IDI1LjUtMi4xIDI1LjUtMi4xIDEyLTEuNCAxMC42LTE5LjEtMS40LTE4LjQgMCAwLTM2LjEgMi44LTU5LjQgMi44LTIxLjkgMC01OC43LTIuOC01OC43LTIuOC0xMi0uNy0xMy40IDE3LjctMS40IDE4LjQgMCAwIDExLjQgMS40IDIzLjQgMi4xbDM0LjcgOTUuMkwyMDAuNiAzOTNsLTgxLjItMjQxLjVjMTMuNC0uNyAyNS41LTIuMSAyNS41LTIuMSAxMi0xLjQgMTAuNi0xOS4xLTEuNC0xOC40IDAgMC0zNi4xIDIuOC01OS40IDIuOC00LjIgMC05LjEtLjEtMTQuNC0uM0MxMDkuNiA3MyAxNzguMSAzMyAyNTYgMzNjNTggMCAxMTAuOSAyMi4yIDE1MC42IDU4LjUtMS0uMS0xLjktLjItMi45LS4yLTIxLjkgMC0zNy40IDE5LjEtMzcuNCAzOS42IDAgMTguNCAxMC42IDMzLjkgMjEuOSA1Mi4zIDguNSAxNC44IDE4LjQgMzMuOSAxOC40IDYxLjUgMCAxOS4xLTcuMyA0MS4yLTE3IDcyLjFsLTIyLjIgNzQuMy04MC43LTIzOS42em04MS40IDI5Ny4ybDY4LjEtMTk2LjljMTIuNy0zMS44IDE3LTU3LjIgMTctNzkuOSAwLTguMi0uNS0xNS44LTEuNS0yMi45IDE3LjQgMzEuOCAyNy4zIDY4LjIgMjcuMyAxMDcgMCA4Mi4zLTQ0LjYgMTU0LjEtMTEwLjkgMTkyLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvcmRwcmVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MS43IDE2OS40bDEwMS41IDI3OEM5Mi4yIDQxMyA0My4zIDM0MC4yIDQzLjMgMjU2YzAtMzAuOSA2LjYtNjAuMSAxOC40LTg2LjZ6bTMzNy45IDc1LjljMC0yNi4zLTkuNC00NC41LTE3LjUtNTguNy0xMC44LTE3LjUtMjAuOS0zMi40LTIwLjktNDkuOSAwLTE5LjYgMTQuOC0zNy44IDM1LjctMzcuOC45IDAgMS44LjEgMi44LjItMzcuOS0zNC43LTg4LjMtNTUuOS0xNDMuNy01NS45LTc0LjMgMC0xMzkuNyAzOC4xLTE3Ny44IDk1LjkgNSAuMiA5LjcuMyAxMy43LjMgMjIuMiAwIDU2LjctMi43IDU2LjctMi43IDExLjUtLjcgMTIuOCAxNi4yIDEuNCAxNy41IDAgMC0xMS41IDEuMy0yNC4zIDJsNzcuNSAyMzAuNEwyNDkuOCAyNDdsLTMzLjEtOTAuOGMtMTEuNS0uNy0yMi4zLTItMjIuMy0yLTExLjUtLjctMTAuMS0xOC4yIDEuMy0xNy41IDAgMCAzNS4xIDIuNyA1NiAyLjcgMjIuMiAwIDU2LjctMi43IDU2LjctMi43IDExLjUtLjcgMTIuOCAxNi4yIDEuNCAxNy41IDAgMC0xMS41IDEuMy0yNC4zIDJsNzYuOSAyMjguNyAyMS4yLTcwLjljOS0yOS40IDE2LTUwLjUgMTYtNjguN3ptLTEzOS45IDI5LjNsLTYzLjggMTg1LjVjMTkuMSA1LjYgMzkuMiA4LjcgNjAuMSA4LjcgMjQuOCAwIDQ4LjUtNC4zIDcwLjYtMTIuMS0uNi0uOS0xLjEtMS45LTEuNS0yLjlsLTY1LjQtMTc5LjJ6bTE4My0xMjAuN2MuOSA2LjggMS40IDE0IDEuNCAyMS45IDAgMjEuNi00IDQ1LjgtMTYuMiA3Ni4ybC02NSAxODcuOUM0MjYuMiA0MDMgNDY4LjcgMzM0LjUgNDY4LjcgMjU2YzAtMzctOS40LTcxLjgtMjYtMTAyLjF6TTUwNCAyNTZjMCAxMzYuOC0xMTEuMyAyNDgtMjQ4IDI0OEMxMTkuMiA1MDQgOCAzOTIuNyA4IDI1NiA4IDExOS4yIDExOS4yIDggMjU2IDhjMTM2LjcgMCAyNDggMTExLjIgMjQ4IDI0OHptLTExLjQgMGMwLTEzMC41LTEwNi4yLTIzNi42LTIzNi42LTIzNi42QzEyNS41IDE5LjQgMTkuNCAxMjUuNSAxOS40IDI1NlMxMjUuNiA0OTIuNiAyNTYgNDkyLjZjMTMwLjUgMCAyMzYuNi0xMDYuMSAyMzYuNi0yMzYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV3BiZWdpbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjIuNzk5IDMyMi4zNzRDNTE5LjAxIDM4Ni42ODIgNDY2Ljk2MSA0ODAgMzcwLjk0NCA0ODBjLTM5LjYwMiAwLTc4LjgyNC0xNy42ODctMTAwLjE0Mi01MC4wNC02Ljg4Ny4zNTYtMjIuNzAyLjM1Ni0yOS41OSAwQzIxOS44NDggNDYyLjM4MSAxODAuNTg4IDQ4MCAxNDEuMDY5IDQ4MGMtOTUuNDkgMC0xNDguMzQ4LTkyLjk5Ni05MS44NTUtMTU3LjYyNkMtMjkuOTI1IDE5MC41MjMgODAuNDc5IDMyIDI1Ni4wMDYgMzJjMTc1LjYzMiAwIDI4NS44NyAxNTguNjI2IDIwNi43OTMgMjkwLjM3NHptLTMzOS42NDctODIuOTcyaDQxLjUyOXYtNTguMDc1aC00MS41Mjl2NTguMDc1em0yMTcuMTggODYuMDcydi0yMy44MzljLTYwLjUwNiAyMC45MTUtMTMyLjM1NSA5LjE5OC0xODcuNTg5LTMzLjk3MWwuMjQ2IDI0Ljg5N2M1MS4xMDEgNDYuMzY3IDEzMS43NDYgNTcuODc1IDE4Ny4zNDMgMzIuOTEzem0tMTUwLjc1My04Ni4wNzJoMTY2LjA1OHYtNTguMDc1SDE4OS41Nzl2NTguMDc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXcGV4cGxvcmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAyNTZjMCAxNDEuMi0xMTQuNyAyNTYtMjU2IDI1NkMxMTQuOCA1MTIgMCAzOTcuMyAwIDI1NlMxMTQuNyAwIDI1NiAwczI1NiAxMTQuNyAyNTYgMjU2em0tMzIgMGMwLTEyMy4yLTEwMC4zLTIyNC0yMjQtMjI0QzEzMi41IDMyIDMyIDEzMi41IDMyIDI1NnMxMDAuNSAyMjQgMjI0IDIyNCAyMjQtMTAwLjUgMjI0LTIyNHpNMTYwLjkgMTI0LjZsODYuOSAzNy4xLTM3LjEgODYuOS04Ni45LTM3LjEgMzcuMS04Ni45em0xMTAgMTY5LjFsNDYuNiA5NGgtMTQuNmwtNTAtMTAwLTQ4LjkgMTAwaC0xNGw1MS4xLTEwNi45LTIyLjMtOS40IDYtMTQgNjguNiAyOS4xLTYgMTQuMy0xNi41LTcuMXptLTExLjgtMTE2LjNsNjguNiAyOS40LTI5LjQgNjguM0wyMzAgMjQ2bDI5LjEtNjguNnptODAuMyA0Mi45bDU0LjYgMjMuMS0yMy40IDU0LjMtNTQuMy0yMy4xIDIzLjEtNTQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV3Bmb3JtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNzUuMnYzNjEuN2MwIDI0LjMtMTkgNDMuMi00My4yIDQzLjJINDMuMkMxOS4zIDQ4MCAwIDQ2MS40IDAgNDM2LjhWNzUuMkMwIDUxLjEgMTguOCAzMiA0My4yIDMyaDM2MS43YzI0IDAgNDMuMSAxOC44IDQzLjEgNDMuMnptLTM3LjMgMzYxLjZWNzUuMmMwLTMtMi42LTUuOC01LjgtNS44aC05LjNMMjg1LjMgMTQ0IDIyNCA5NC4xIDE2Mi44IDE0NCA1Mi41IDY5LjNoLTkuM2MtMy4yIDAtNS44IDIuOC01LjggNS44djM2MS43YzAgMyAyLjYgNS44IDUuOCA1LjhoMzYxLjdjMy4yLjEgNS44LTIuNyA1LjgtNS44ek0xNTAuMiAxODZ2MzdINzYuN3YtMzdoNzMuNXptMCA3NC40djM3LjNINzYuN3YtMzcuM2g3My41em0xMS4xLTE0Ny4zbDU0LTQzLjdIOTYuOGw2NC41IDQzLjd6bTIxMCA3Mi45djM3aC0xOTZ2LTM3aDE5NnptMCA3NC40djM3LjNoLTE5NnYtMzcuM2gxOTZ6bS04NC42LTE0Ny4zbDY0LjUtNDMuN0gyMzIuOGw1My45IDQzLjd6TTM3MS4zIDMzNXYzNy4zaC05OS40VjMzNWg5OS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXcHJlc3NyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTE3MS4zMyAxNTguNmMtMTUuMTggMzQuNTEtMzAuMzcgNjkuMDItNDUuNjMgMTAzLjUtMi40NCA1LjUxLTYuODkgOC4yNC0xMi45NyA4LjI0LTIzLjAyLS4wMS00Ni4wMy4wNi02OS4wNS0uMDUtNS4xMi0uMDMtOC4yNSAxLjg5LTEwLjM0IDYuNzItMTAuMTkgMjMuNTYtMjAuNjMgNDctMzAuOTUgNzAuNS0xLjU0IDMuNTEtNC4wNiA1LjI5LTcuOTIgNS4yOS00NS45NC0uMDEtOTEuODctLjAyLTEzNy44MSAwLTMuMTMgMC01LjYzLTEuMTUtNy43Mi0zLjQ1LTExLjIxLTEyLjMzLTIyLjQ2LTI0LjYzLTMzLjY4LTM2Ljk0LTIuNjktMi45NS0yLjc5LTYuMTgtMS4yMS05LjczIDguNjYtMTkuNTQgMTcuMjctMzkuMSAyNS44OS01OC42NiAxMi45My0yOS4zNSAyNS44OS01OC42OSAzOC43NS04OC4wOCAxLjctMy44OCA0LjI4LTUuNjggOC41NC01LjY1IDE0LjI0LjEgMjguNDguMDIgNDIuNzIuMDUgNi4yNC4wMSA5LjIgNC44NCA2LjY2IDEwLjU5LTEzLjYgMzAuNzctMjcuMTcgNjEuNTUtNDAuNzQgOTIuMzMtNS43MiAxMi45OS0xMS40MiAyNS45OS0xNy4wOSAzOS0zLjkxIDguOTUgNy4wOCAxMS45NyAxMC45NSA1LjYuMjMtLjM3LTEuNDIgNC4xOCAzMC4wMS02Ny42OSAxLjM2LTMuMSAzLjQxLTQuNCA2Ljc3LTQuMzkgMTUuMjEuMDggMzAuNDMuMDIgNDUuNjQuMDQgNS41Ni4wMSA3LjkxIDMuNjQgNS42NiA4Ljc1LTguMzMgMTguOTYtMTYuNzEgMzcuOS0yNC45OCA1Ni44OS00Ljk4IDExLjQzIDguMDggMTIuNDkgMTEuMjggNS4zMy4wNC0uMDggMjcuODktNjMuMzMgMzIuMTktNzMuMTYgMi4wMi00LjYxIDUuNDQtNi41MSAxMC4zNS02LjUgMjYuNDMuMDUgNTIuODYgMCA3OS4yOS4wNSAxMi40NC4wMiAxMy45My0xMy42NSAzLjktMTMuNjQtMjUuMjYuMDMtNTAuNTIuMDItNzUuNzguMDItNi4yNyAwLTcuODQtMi40Ny01LjI3LTguMjcgNS43OC0xMy4wNiAxMS41OS0yNi4xMSAxNy4zLTM5LjIxIDEuNzMtMy45NiA0LjUyLTUuNzkgOC44NC01Ljc4IDIzLjA5LjA2IDI1Ljk4LjAyIDEzMC43OC4wMyA2LjA4LS4wMSA4LjAzIDIuNzkgNS42MiA4LjI3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYVHdpdHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODkuMiA0OGg3MC42TDMwNS42IDIyNC4yIDQ4NyA0NjRIMzQ1TDIzMy43IDMxOC42IDEwNi41IDQ2NEgzNS44TDIwMC43IDI3NS41IDI2LjggNDhIMTcyLjRMMjcyLjkgMTgwLjkgMzg5LjIgNDh6TTM2NC40IDQyMS44aDM5LjFMMTUxLjEgODhoLTQyTDM2NC40IDQyMS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OS45IDMxOC4yYzQ0LjMgNTQuMyA2NC43IDk4LjggNTQuNCAxMTguNy03LjkgMTUuMS01Ni43IDQ0LjYtOTIuNiA1NS45LTI5LjYgOS4zLTY4LjQgMTMuMy0xMDAuNCAxMC4yLTM4LjItMy43LTc2LjktMTcuNC0xMTAuMS0zOUM5My4zIDQ0NS44IDg3IDQzOC4zIDg3IDQyMy40YzAtMjkuOSAzMi45LTgyLjMgODkuMi0xNDIuMSAzMi0zMy45IDc2LjUtNzMuNyA4MS40LTcyLjYgOS40IDIuMSA4NC4zIDc1LjEgMTEyLjMgMTA5LjV6TTE4OC42IDE0My44Yy0yOS43LTI2LjktNTguMS01My45LTg2LjQtNjMuNC0xNS4yLTUuMS0xNi4zLTQuOC0yOC43IDguMS0yOS4yIDMwLjQtNTMuNSA3OS43LTYwLjMgMTIyLjQtNS40IDM0LjItNi4xIDQzLjgtNC4yIDYwLjUgNS42IDUwLjUgMTcuMyA4NS40IDQwLjUgMTIwLjkgOS41IDE0LjYgMTIuMSAxNy4zIDkuMyA5LjktNC4yLTExLS4zLTM3LjUgOS41LTY0IDE0LjMtMzkgNTMuOS0xMTIuOSAxMjAuMy0xOTQuNHptMzExLjYgNjMuNUM0ODMuMyAxMjcuMyA0MzIuNyA3NyA0MjUuNiA3N2MtNy4zIDAtMjQuMiA2LjUtMzYgMTMuOS0yMy4zIDE0LjUtNDEgMzEuNC02NC4zIDUyLjhDMzY3LjcgMTk3IDQyNy41IDI4My4xIDQ0OC4yIDM0NmM2LjggMjAuNyA5LjcgNDEuMSA3LjQgNTIuMy0xLjcgOC41LTEuNyA4LjUgMS40IDQuNiA2LjEtNy43IDE5LjktMzEuMyAyNS40LTQzLjUgNy40LTE2LjIgMTUtNDAuMiAxOC42LTU4LjcgNC4zLTIyLjUgMy45LTcwLjgtLjgtOTMuNHpNMTQxLjMgNDNDMTg5IDQwLjUgMjUxIDc3LjUgMjU1LjYgNzguNGMuNy4xIDEwLjQtNC4yIDIxLjYtOS43IDYzLjktMzEuMSA5NC0yNS44IDEwNy40LTI1LjItNjMuOS0zOS4zLTE1Mi43LTUwLTIzMy45LTExLjctMjMuNCAxMS4xLTI0IDExLjktOS40IDExLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVhpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYyLjcgMjEwYy0xLjggMy4zLTI1LjIgNDQuNC03MC4xIDEyMy41LTQuOSA4LjMtMTAuOCAxMi41LTE3LjcgMTIuNUg5LjhjLTcuNyAwLTEyLjEtNy41LTguNS0xNC40bDY5LTEyMS4zYy4yIDAgLjItLjEgMC0uM2wtNDMuOS03NS42Yy00LjMtNy44LjMtMTQuMSA4LjUtMTQuMUgxMDBjNy4zIDAgMTMuMyA0LjEgMTggMTIuMmw0NC43IDc3LjV6TTM4Mi42IDQ2LjFsLTE0NCAyNTN2LjNMMzMwLjIgNDY2YzMuOSA3LjEuMiAxNC4xLTguNSAxNC4xaC02NS4yYy03LjYgMC0xMy42LTQtMTgtMTIuMmwtOTIuNC0xNjguNWMzLjMtNS44IDUxLjUtOTAuOCAxNDQuOC0yNTUuMiA0LjYtOC4xIDEwLjQtMTIuMiAxNy41LTEyLjJoNjUuN2M4IDAgMTIuMyA2LjcgOC41IDE0LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlDb21iaW5hdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzMnY0NDhIMFYzMmg0NDh6TTIzNiAyODcuNUwzMTMuNSAxNDJoLTMyLjdMMjM1IDIzM2MtNC43IDkuMy05IDE4LjMtMTIuOCAyNi44TDIxMCAyMzNsLTQ1LjItOTFoLTM1bDc2LjcgMTQzLjh2OTQuNUgyMzZ2LTkyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlhaG9vIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyMy42OSwxNDEuMDYsMTY3LDI4NC4yMywxMTEsMTQxLjA2SDE0LjkzTDEyMC43NiwzOTAuMTksODIuMTksNDgwaDk0LjE3TDMxNy4yNywxNDEuMDZabTEwNS40LDEzNS43OWE1OC4yMiw1OC4yMiwwLDEsMCw1OC4yMiw1OC4yMkE1OC4yMiw1OC4yMiwwLDAsMCwzMjkuMDksMjc2Ljg1Wk0zOTQuNjUsMzJsLTkzLDIyMy40N0g0MDYuNDRMNDk5LjA3LDMyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZYW1tZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAwLjY3NiwxNTkuNDg2YTEyLjc3OSwxMi43NzksMCwwLDAtNi40LTguMjgyLDEzLjk1NCwxMy45NTQsMCwwLDAtMTAuMDc4LTEuMTI1TDQ1Ny44LDE1Ni43bC0uMDQzLS4yLTIyLjMsNS43ODUtMS4yNDMuMzMzLS42MDgtMi4xN0EzNjkuMDM3LDM2OS4wMzcsMCwwLDAsMzQ3LjUzOCw0LjI4OWExNC4xLDE0LjEsMCwwLDAtMTkuNzg0LS40NjNsLTEwMi45LDEwMi43NDdIMjQuOTQ3QTI0LjksMjQuOSwwLDAsMCwwLDEzMS40MTdWMzgwLjM4YTI0Ljk2MywyNC45NjMsMCwwLDAsMjQuOTE4LDI0LjlIMjI0Ljk4NkwzMjguMDcyLDUwOGExMy42NjcsMTMuNjY3LDAsMCwwLDE5LjMyNywwYy4xMjYtLjEyNi4yNDktLjI1NS4zNy0uMzg1YTM2OC4wMjUsMzY4LjAyNSwwLDAsMCw2OS41NzctMTA3LjM3NCw0MDMuNDUsNDAzLjQ1LDAsMCwwLDE3LjMtNTAuOHYtLjAyOGwyMC40MDYsNS4zMzYuMDI5LS4wNzNMNDgzLjM0NSwzNjJhMjAuMjUzLDIwLjI1MywwLDAsMCwyLjYxOS41LDEzLjM1OSwxMy4zNTksMCwwLDAsNC4xMzktLjA3MiwxMy41LDEzLjUsMCwwLDAsMTAuNTE1LTkuOTI0LDQxNS44NTUsNDE1Ljg1NSwwLDAsMCwuMDU4LTE5My4wMTNaTTMzNy4xMjUsMjQuNjVsLjAxMy4wMTRoLS4wMTNabS0xMTAuMiwxNjUuMTYxTDE3NC4zMTEsMjgxLjFhMTEuMzM4LDExLjMzOCwwLDAsMC0xLjQ4OSw1LjY1NXY0Ni4xODlhMjIuMDQsMjIuMDQsMCwwLDEtMjIuMDQxLDIyaC0zLjRBMjIuMDY4LDIyLjA2OCwwLDAsMSwxMjUuMywzMzIuOTYyVjI4Ny4yOTRhMTEuNTMyLDExLjUzMiwwLDAsMC0xLjM4OC01LjUxbC01MS42LTkyLjJhMjEuOTg4LDIxLjk4OCwwLDAsMSwxOS4yNjQtMzIuNzI2aDMuMjY4YTIyLjA1OSwyMi4wNTksMCwwLDEsMTkuNjExLDExLjkxNmwzNi4zNTcsNzAuMjgxLDM3LjUxNS03MC41MTJhMjIuMDY2LDIyLjA2NiwwLDAsMSwzOC41NTYtLjY5NSwyMS43LDIxLjcsMCwwLDEsMCwyMS45NjdaTTMzNy4xNDUsMjQuNjczYTM0OC4xNDcsMzQ4LjE0NywwLDAsMSw3NS44LDE0MS4zMzVsLjU2NCwxLjk1Mi0xMTQuMTM0LDI5LjZWMTMxLjQxN2EyNS4wMDYsMjUuMDA2LDAsMCwwLTI0Ljk0Ny0yNC45SDI1NS4wNjdabTYwLjUsMzY3LjMwNXYtLjA0M2wtLjAxNC4wMTRhMzQ3LjE5LDM0Ny4xOSwwLDAsMS02MC4xNzcsOTUuMjI3bC04Mi4yLTgxLjg5M2gxOS4xNzdhMjQuOTc4LDI0Ljk3OCwwLDAsMCwyNC45NDctMjQuOXYtNjYuMmwxMTQuNiwyOS44NjJBMzg1LjE5MSwzODUuMTkxLDAsMCwxLDM5Ny42NDgsMzkxLjk3OFptODQtNTIuNDUuMDE1LjAxNC01MC42MTgtMTMuMTMxTDI5OS4zNzksMjkyLjFWMjE5LjU3MmwxMTkuNzQ2LTMwLjk5LDQuNDY4LTEuMTU3LDM5LjU0LTEwLjI1MywxOC41MTEtNC44MTZBMzkzLDM5MywwLDAsMSw0ODEuNjQ0LDMzOS41MjhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlhbmRleEludGVybmF0aW9uYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI5LjUgNTEyVjM0NS45TDE4LjUgNDhoNTUuOGw4MS44IDIyOS43TDI1MC4yIDBoNTEuM0wxODAuOCAzNDcuOFY1MTJoLTUxLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlhbmRleCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTMuMSAzMTUuOEw2NS43IDUxMkgybDk2LTIwOS44Yy00NS4xLTIyLjktNzUuMi02NC40LTc1LjItMTQxLjFDMjIuNyA1My43IDkwLjggMCAxNzEuNyAwSDI1NHY1MTJoLTU1LjFWMzE1LjhoLTQ1Ljh6bTQ1LjgtMjY5LjNoLTI5LjRjLTQ0LjQgMC04Ny40IDI5LjQtODcuNCAxMTQuNiAwIDgyLjMgMzkuNCAxMDguOCA4Ny40IDEwOC44aDI5LjRWNDYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWFybiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTMuOSAzNDUuMmMtMzkgOS4zLTQ4LjQgMzIuMS0xMDQgNDcuNCAwIDAtMi43IDQtMTAuNCA1LjgtMTMuNCAzLjMtNjMuOSA2LTY4LjUgNi4xLTEyLjQuMS0xOS45LTMuMi0yMi04LjItNi40LTE1LjMgOS4yLTIyIDkuMi0yMi04LjEtNS05LTkuOS05LjgtOC4xLTIuNCA1LjgtMy42IDIwLjEtMTAuMSAyNi41LTguOCA4LjktMjUuNSA1LjktMzUuMy44LTEwLjgtNS43LjgtMTkuMi44LTE5LjJzLTUuOCAzLjQtMTAuNS0zLjZjLTYtOS4zLTE3LjEtMzcuMyAxMS41LTYyLTEuMy0xMC4xLTQuNi01My43IDQwLjYtODUuNiAwIDAtMjAuNi0yMi44LTEyLjktNDMuMyA1LTEzLjQgNy0xMy4zIDguNi0xMy45IDUuNy0yLjIgMTEuMy00LjYgMTUuNC05LjEgMjAuNi0yMi4yIDQ2LjgtMTggNDYuOC0xOHMxMi40LTM3LjggMjMuOS0zMC40YzMuNSAyLjMgMTYuMyAzMC42IDE2LjMgMzAuNnMxMy42LTcuOSAxNS4xLTVjOC4yIDE2IDkuMiA0Ni41IDUuNiA2NS4xLTYuMSAzMC42LTIxLjQgNDcuMS0yNy42IDU3LjUtMS40IDIuNCAxNi41IDEwIDI3LjggNDEuMyAxMC40IDI4LjYgMS4xIDUyLjcgMi44IDU1LjMuOCAxLjQgMTMuNy44IDM2LjQtMTMuMiAxMi44LTcuOSAyOC4xLTE2LjkgNDUuNC0xNyAxNi43LS41IDE3LjYgMTkuMiA0LjkgMjIuMnpNNDk2IDI1NmMwIDEzNi45LTExMS4xIDI0OC0yNDggMjQ4UzAgMzkyLjkgMCAyNTYgMTExLjEgOCAyNDggOHMyNDggMTExLjEgMjQ4IDI0OHptLTc5LjMgNzUuMmMtMS43LTEzLjYtMTMuMi0yMy0yOC0yMi44LTIyIC4zLTQwLjUgMTEuNy01Mi44IDE5LjItNC44IDMtOC45IDUuMi0xMi40IDYuOCAzLjEtNDQuNS0yMi41LTczLjEtMjguNy03OS40IDcuOC0xMS4zIDE4LjQtMjcuOCAyMy40LTUzLjIgNC4zLTIxLjcgMy01NS41LTYuOS03NC41LTEuNi0zLjEtNy40LTExLjItMjEtNy40LTkuNy0yMC0xMy0yMi4xLTE1LjYtMjMuOC0xLjEtLjctMjMuNi0xNi40LTQxLjQgMjgtMTIuMi45LTMxLjMgNS4zLTQ3LjUgMjIuOC0yIDIuMi01LjkgMy44LTEwLjEgNS40aC4xYy04LjQgMy0xMi4zIDkuOS0xNi45IDIyLjMtNi41IDE3LjQuMiAzNC42IDYuOCA0NS43LTE3LjggMTUuOS0zNyAzOS44LTM1LjcgODIuNS0zNCAzNi0xMS44IDczLTUuNiA3OS42LTEuNiAxMS4xIDMuNyAxOS40IDEyIDIzLjggMTIuNiA2LjcgMzAuMyA5LjYgNDMuOSAyLjggNC45IDUuMiAxMy44IDEwLjEgMzAgMTAuMSA2LjggMCA1OC0yLjkgNzIuNi02LjUgNi44LTEuNiAxMS41LTQuNSAxNC42LTcuMSA5LjgtMy4xIDM2LjgtMTIuMyA2Mi4yLTI4LjcgMTgtMTEuNyAyNC4yLTE0LjIgMzcuNi0xNy40IDEyLjktMy4yIDIxLTE1LjEgMTkuNC0yOC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZZWxwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyLjkgMjQwLjMybDk5LjYyIDQ4LjYxYzE5LjIgOS40IDE2LjIgMzcuNTEtNC41IDQyLjcxTDMwLjUgMzU4LjQ1YTIyLjc5IDIyLjc5IDAgMCAxLTI4LjIxLTE5LjYgMTk3LjE2IDE5Ny4xNiAwIDAgMSA5LTg1LjMyIDIyLjggMjIuOCAwIDAgMSAzMS42MS0xMy4yMXptNDQgMjM5LjI1YTE5OS40NSAxOTkuNDUgMCAwIDAgNzkuNDIgMzIuMTFBMjIuNzggMjIuNzggMCAwIDAgMTkyLjk0IDQ5MGwzLjktMTEwLjgyYy43LTIxLjMtMjUuNS0zMS45MS0zOS44MS0xNi4xbC03NC4yMSA4Mi40YTIyLjgyIDIyLjgyIDAgMCAwIDQuMDkgMzQuMDl6bTE0NS4zNC0xMDkuOTJsNTguODEgOTRhMjIuOTMgMjIuOTMgMCAwIDAgMzQgNS41IDE5OC4zNiAxOTguMzYgMCAwIDAgNTIuNzEtNjcuNjFBMjMgMjMgMCAwIDAgMzY0LjE3IDM3MGwtMTA1LjQyLTM0LjI2Yy0yMC4zMS02LjUtMzcuODEgMTUuOC0yNi41MSAzMy45MXptMTQ4LjMzLTEzMi4yM2ExOTcuNDQgMTk3LjQ0IDAgMCAwLTUwLjQxLTY5LjMxIDIyLjg1IDIyLjg1IDAgMCAwLTM0IDQuNGwtNjIgOTEuOTJjLTExLjkgMTcuNyA0LjcgNDAuNjEgMjUuMiAzNC43MUwzNjYgMjY4LjYzYTIzIDIzIDAgMCAwIDE0LjYxLTMxLjIxek02Mi4xMSAzMC4xOGEyMi44NiAyMi44NiAwIDAgMC05LjkgMzJsMTA0LjEyIDE4MC40NGMxMS43IDIwLjIgNDIuNjEgMTEuOSA0Mi42MS0xMS40VjIyLjg4YTIyLjY3IDIyLjY3IDAgMCAwLTI0LjUtMjIuOCAzMjAuMzcgMzIwLjM3IDAgMCAwLTExMi4zMyAzMC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZb2FzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05MS4zIDc2aDE4NmwtNyAxOC45aC0xNzljLTM5LjcgMC03MS45IDMxLjYtNzEuOSA3MC4zdjIwNS40YzAgMzUuNCAyNC45IDcwLjMgODQgNzAuM1Y0NjBIOTEuM0M0MS4yIDQ2MCAwIDQxOS44IDAgMzcwLjVWMTY1LjJDMCAxMTUuOSA0MC43IDc2IDkxLjMgNzZ6bTIyOS4xLTU2aDY2LjVDMjQzLjEgMzk4LjEgMjQxLjIgNDE4LjkgMjAyLjIgNDU5LjNjLTIwLjggMjEuNi00OS4zIDMxLjctNzguMyAzMi43di01MS4xYzQ5LjItNy43IDY0LjYtNDkuOSA2NC42LTc1LjMgMC0yMC4xLjYtMTIuNi04Mi4xLTIyMy4yaDYxLjRMMjE4LjIgMjk5IDMyMC40IDIwek00NDggMTYxLjVWNDYwSDIzNGM2LjYtOS42IDEwLjctMTYuMyAxMi4xLTE5LjRoMTgyLjVWMTYxLjVjMC0zMi41LTE3LjEtNTEuOS00OC4yLTYyLjlsNi43LTE3LjZjNDEuNyAxMy42IDYwLjkgNDMuMSA2MC45IDgwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlvdXR1YmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ5LjY1NSAxMjQuMDgzYy02LjI4MS0yMy42NS0yNC43ODctNDIuMjc2LTQ4LjI4NC00OC41OTdDNDU4Ljc4MSA2NCAyODggNjQgMjg4IDY0UzExNy4yMiA2NCA3NC42MjkgNzUuNDg2Yy0yMy40OTcgNi4zMjItNDIuMDAzIDI0Ljk0Ny00OC4yODQgNDguNTk3LTExLjQxMiA0Mi44NjctMTEuNDEyIDEzMi4zMDUtMTEuNDEyIDEzMi4zMDVzMCA4OS40MzggMTEuNDEyIDEzMi4zMDVjNi4yODEgMjMuNjUgMjQuNzg3IDQxLjUgNDguMjg0IDQ3LjgyMUMxMTcuMjIgNDQ4IDI4OCA0NDggMjg4IDQ0OHMxNzAuNzggMCAyMTMuMzcxLTExLjQ4NmMyMy40OTctNi4zMjEgNDIuMDAzLTI0LjE3MSA0OC4yODQtNDcuODIxIDExLjQxMi00Mi44NjcgMTEuNDEyLTEzMi4zMDUgMTEuNDEyLTEzMi4zMDVzMC04OS40MzgtMTEuNDEyLTEzMi4zMDV6bS0zMTcuNTEgMjEzLjUwOFYxNzUuMTg1bDE0Mi43MzkgODEuMjA1LTE0Mi43MzkgODEuMjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFaaGlodSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzAuNTQgMTQ4LjEzdjIxNy41NGwyMy40My4wMSA3LjcxIDI2LjM3IDQyLjAxLTI2LjM3aDQ5LjUzVjE0OC4xM0gxNzAuNTR6bTk3Ljc1IDE5My45M2gtMjcuOTRsLTI3LjkgMTcuNTEtNS4wOC0xNy40Ny0xMS45LS4wNFYxNzEuNzVoNzIuODJ2MTcwLjMxem0tMTE4LjQ2LTk0LjM5SDk3LjVjMS43NC0yNy4xIDIuMi01MS41OSAyLjItNzMuNDZoNTEuMTZzMS45Ny0yMi41Ni04LjU4LTIyLjMxaC04OC41YzMuNDktMTMuMTIgNy44Ny0yNi42NiAxMy4xMi00MC42NyAwIDAtMjQuMDcgMC0zMi4yNyAyMS41Ny0zLjM5IDguOS0xMy4yMSA0My4xNC0zMC43IDc4LjEyIDUuODktLjY0IDI1LjM3LTEuMTggMzYuODQtMjIuMjEgMi4xMS01Ljg5IDIuNTEtNi42NiA1LjE0LTE0LjUzaDI4Ljg3YzAgMTAuNS0xLjIgNjYuODgtMS42OCA3My40NEgyMC44M2MtMTEuNzQgMC0xNS41NiAyMy42Mi0xNS41NiAyMy42Mmg2NS41OEM2Ni40NSAzMjEuMSA0Mi44MyAzNjMuMTIgMCAzOTYuMzRjMjAuNDkgNS44NSA0MC45MS0uOTMgNTEtOS45IDAgMCAyMi45OC0yMC45IDM1LjU5LTY5LjI1bDUzLjk2IDY0Ljk0czcuOTEtMjYuODktMS4yNC0zOS45OWMtNy41OC04LjkyLTI4LjA2LTMzLjA2LTM2Ljc5LTQxLjgxTDg3LjkgMzExLjk1YzQuMzYtMTMuOTggNi45OS0yNy41NSA3Ljg3LTQwLjY3aDYxLjY1cy0uMDktMjMuNjItNy41OS0yMy42MnYuMDF6bTQxMi4wMi0xLjZjMjAuODMtMjUuNjQgNDQuOTgtNTguNTcgNDQuOTgtNTguNTdzLTE4LjY1LTE0LjgtMjcuMzgtNC4wNmMtNiA4LjE1LTM2LjgzIDQ4LjItMzYuODMgNDguMmwxOS4yMyAxNC40M3ptLTE1MC4wOS01OS4wOWMtOS4wMS04LjI1LTI1LjkxIDIuMTMtMjUuOTEgMi4xM3MzOS41MiA1NS4wNCA0MS4xMiA1Ny40NWwxOS40Ni0xMy43M3MtMjUuNjctMzcuNjEtMzQuNjYtNDUuODZoLS4wMXpNNjQwIDI1OC4zNWMtMTkuNzggMC0xMzAuOTEuOTMtMTMxLjA2Ljkzdi0xMDFjNC44MSAwIDEyLjQyLS40IDIyLjg1LTEuMiA0MC44OC0yLjQxIDcwLjEzLTQgODcuNzctNC44MSAwIDAgMTIuMjItMjcuMTktLjU5LTMzLjQ0LTMuMDctMS4xOC0yMy4xNyA0LjU4LTIzLjE3IDQuNThzLTE2NS4yMiAxNi40OS0yMzIuMzYgMTguMDVjMS42IDguODIgNy42MiAxNy4wOCAxNS43OCAxOS41NSAxMy4zMSAzLjQ4IDIyLjY5IDEuNyA0OS4xNS44OSAyNC44My0xLjYgNDMuNjgtMi40MyA1Ni41MS0yLjQzdjk5LjgxSDM1MS40MXMyLjgyIDIyLjMxIDI1LjUxIDIyLjg1aDEwNy45NHY3MC45MmMwIDEzLjk3LTExLjE5IDIxLjk5LTI0LjQ4IDIxLjEyLTE0LjA4LjExLTI2LjA4LTEuMTUtNDEuNjktMS44MSAxLjk5IDMuOTcgNi4zMyAxNC4zOSAxOS4zMSAyMS44NCA5Ljg4IDQuODEgMTYuMTcgNi41NyAyNi4wMiA2LjU3IDI5LjU2IDAgNDUuNjctMTcuMjggNDQuODktNDUuMzF2LTczLjMyaDEyMi4zNmM5LjY4IDAgOC43LTIzLjc4IDguNy0yMy43OGwuMDMtLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmEwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTkyQzAgMTAzLjYgNzEuNiAzMiAxNjAgMzJzMTYwIDcxLjYgMTYwIDE2MFYzMjBjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBTMCA0MDguNCAwIDMyMFYxOTJ6TTE2MCA5NmMtNTMgMC05NiA0My05NiA5NlYzMjBjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NlYxOTJjMC01My00My05Ni05Ni05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgNjRjMC0xMS44LTYuNS0yMi42LTE2LjktMjguMnMtMjMtNS0zMi44IDEuNmwtOTYgNjRDLS41IDExMS4yLTQuNCAxMzEgNS40IDE0NS44czI5LjcgMTguNyA0NC40IDguOUw5NiAxMjMuOFY0MTZIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoOTYgOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTYwVjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmEyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0Mi45IDk2Yy0yMS41IDAtNDIuMiA4LjUtNTcuNCAyMy44TDU0LjYgMTUwLjZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDQwLjIgNzQuNUM2Ny41IDQ3LjMgMTA0LjQgMzIgMTQyLjkgMzJDMjIzIDMyIDI4OCA5NyAyODggMTc3LjFjMCAzOC41LTE1LjMgNzUuNC00Mi41IDEwMi42TDEwOS4zIDQxNkgyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTEyLjkgMC0yNC42LTcuOC0yOS42LTE5LjhzLTIuMi0yNS43IDYuOS0zNC45TDIwMC4yIDIzNC41YzE1LjItMTUuMiAyMy44LTM1LjkgMjMuOC01Ny40YzAtNDQuOC0zNi4zLTgxLjEtODEuMS04MS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmEzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJIMjcyYzEzLjIgMCAyNSA4LjEgMjkuOCAyMC40czEuNSAyNi4zLTguMiAzNS4yTDE2Mi4zIDIwOEgxODRjNzUuMSAwIDEzNiA2MC45IDEzNiAxMzZzLTYwLjkgMTM2LTEzNiAxMzZIMTA1LjRDNjMgNDgwIDI0LjIgNDU2IDUuMyA0MTguMWwtMS45LTMuOGMtNy45LTE1LjgtMS41LTM1IDE0LjMtNDIuOXMzNS0xLjUgNDIuOSAxNC4zbDEuOSAzLjhjOC4xIDE2LjMgMjQuOCAyNi41IDQyLjkgMjYuNUgxODRjMzkuOCAwIDcyLTMyLjIgNzItNzJzLTMyLjItNzItNzItNzJIODBjLTEzLjIgMC0yNS04LjEtMjkuOC0yMC40cy0xLjUtMjYuMyA4LjItMzUuMkwxODkuNyA5NkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmE0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4OSA3Ny42YzcuNS0xNiAuNy0zNS4xLTE1LjMtNDIuNnMtMzUuMS0uNy00Mi42IDE1LjNMMyAzMjIuNGMtNC43IDkuOS0zLjkgMjEuNSAxLjkgMzAuOFMyMSAzNjggMzIgMzY4SDI1NnY4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM2OGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjBWMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjMwNEg4Mi40TDE4OSA3Ny42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmE1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyLjUgNTguM0MzNS4zIDQzLjEgNDguNSAzMiA2NCAzMkgyNTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIOTAuN0w3MC4zIDIwOEgxODRjNzUuMSAwIDEzNiA2MC45IDEzNiAxMzZzLTYwLjkgMTM2LTEzNiAxMzZIMTAwLjVjLTM5LjQgMC03NS40LTIyLjMtOTMtNTcuNWwtNC4xLTguMmMtNy45LTE1LjgtMS41LTM1IDE0LjMtNDIuOXMzNS0xLjUgNDIuOSAxNC4zbDQuMSA4LjJjNi44IDEzLjYgMjAuNiAyMi4xIDM1LjggMjIuMUgxODRjMzkuOCAwIDcyLTMyLjIgNzItNzJzLTMyLjItNzItNzItNzJIMzJjLTkuNSAwLTE4LjUtNC4yLTI0LjYtMTEuNXMtOC42LTE2LjktNi45LTI2LjJsMzItMTc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmE2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMi40IDg0LjdjMTEuNC0xMy41IDkuNy0zMy43LTMuOC00NS4xcy0zMy43LTkuNy00NS4xIDMuOEwzOC42IDIxNC43QzE0LjcgMjQyLjkgMS4xIDI3OC40IC4xIDMxNS4yYzAgMS40LS4xIDIuOS0uMSA0LjNjMCAuMiAwIC4zIDAgLjVjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjBzMTYwLTcxLjYgMTYwLTE2MGMwLTg1LjUtNjcuMS0xNTUuNC0xNTEuNS0xNTkuOGw2My45LTc1LjZ6TTI1NiAzMjBBOTYgOTYgMCAxIDEgNjQgMzIwYTk2IDk2IDAgMSAxIDE5MiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmE3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJIMjg4YzExLjUgMCAyMiA2LjEgMjcuNyAxNi4xczUuNyAyMi4yLS4xIDMyLjFsLTIyNCAzODRjLTguOSAxNS4zLTI4LjUgMjAuNC00My44IDExLjVzLTIwLjQtMjguNS0xMS41LTQzLjhMMjMyLjMgOTZIMzJDMTQuMyA5NiAwIDgxLjcgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhOCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgMTYwYzAtNzAuNy01Ny4zLTEyOC0xMjgtMTI4SDE0NEM3My4zIDMyIDE2IDg5LjMgMTYgMTYwYzAgMzQuNiAxMy43IDY2IDM2IDg5QzIwLjUgMjcyLjMgMCAzMDkuOCAwIDM1MmMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOGg2NGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOGMwLTQyLjItMjAuNS03OS43LTUyLTEwM2MyMi4zLTIzIDM2LTU0LjQgMzYtODl6TTE3Ni4xIDI4OEgxOTJjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjRIMTI4Yy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0aDE1LjljMCAwIC4xIDAgLjEgMGgzMmMwIDAgLjEgMCAuMSAwem0wLTY0YzAgMCAwIDAgMCAwSDE0NGMwIDAgMCAwIDAgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRoMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjRjMCAzNS4zLTI4LjYgNjQtNjQgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYTkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMTkyYTk2IDk2IDAgMSAwIDE5MiAwQTk2IDk2IDAgMSAwIDY0IDE5MnptODcuNSAxNTkuOEM2Ny4xIDM0Ny40IDAgMjc3LjUgMCAxOTJDMCAxMDMuNiA3MS42IDMyIDE2MCAzMnMxNjAgNzEuNiAxNjAgMTYwYzAgMi42LS4xIDUuMy0uMiA3LjljLTEuNyAzNS43LTE1LjIgNzAtMzguNCA5Ny40bC0xNDUgMTcxLjRjLTExLjQgMTMuNS0zMS42IDE1LjItNDUuMSAzLjhzLTE1LjItMzEuNi0zLjgtNDUuMWw2My45LTc1LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIxLjUgNTEuN0MyMTYuNiAzOS44IDIwNC45IDMyIDE5MiAzMnMtMjQuNiA3LjgtMjkuNSAxOS43bC0xMjAgMjg4LTQwIDk2Yy02LjggMTYuMyAuOSAzNSAxNy4yIDQxLjhzMzUtLjkgNDEuOC0xNy4yTDkzLjMgMzg0SDI5MC43bDMxLjggNzYuM2M2LjggMTYuMyAyNS41IDI0IDQxLjggMTcuMnMyNC0yNS41IDE3LjItNDEuOGwtNDAtOTYtMTIwLTI4OHpNMjY0IDMyMEgxMjBsNzItMTcyLjhMMjY0IDMyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWRkcmVzc0Jvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM2MC43IDAgMzIgMjguNyAzMiA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDk2ek0yMDggMjg4aDY0YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgOC44LTcuMiAxNi0xNiAxNkgxNDRjLTguOCAwLTE2LTcuMi0xNi0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MHptLTMyLTk2YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNNTEyIDgwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWODB6TTQ5NiAxOTJjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjIwOGMwLTguOC03LjItMTYtMTYtMTZ6bTE2IDE0NGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjMzNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWRkcmVzc0NhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em04MCAyNTZoNjRjNDQuMiAwIDgwIDM1LjggODAgODBjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZjMC00NC4yIDM1LjgtODAgODAtODB6bS0zMi05NmE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6bTI1Ni0zMkg0OTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em0wIDY0SDQ5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRINDk2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpZ25DZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJ6bTk2IDEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJ6TTAgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTM1MiAzMjBjMC0xNy43LTE0LjMtMzItMzItMzJIMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpZ25KdXN0aWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyem0wIDI1NmMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJ6TTAgMTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTQ0OCA0NDhjMC0xNy43LTE0LjMtMzItMzItMzJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbGlnbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyQzE0LjMgOTYgMCA4MS43IDAgNjRTMTQuMyAzMiAzMiAzMkgyNTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6bTAgMjU2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDI1NmMxNy43IDAgMzIgMTQuMyAzMiAzMnpNMCAxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNNDQ4IDQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFsaWduUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6bTAgMjU2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6TTAgMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTQ0OCA0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmNob3JDaXJjbGVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgOTZhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHptMjEuMSA4MEMzNjcgMTU4LjggMzg0IDEyOS40IDM4NCA5NmMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmMwIDMzLjQgMTcgNjIuOCA0Mi45IDgwSDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmgzMlY0NDhIMjA4Yy01MyAwLTk2LTQzLTk2LTk2di02LjFsNyA3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUw5NyAyNjNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDcgMzE5Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNy03VjM1MmMwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MGg4MCA4MGM4LjIgMCAxNi4zLS42IDI0LjItMS44Yy0yMi4yLTE2LjItNDAuNC0zNy41LTUzLTYyLjJIMzIwVjM2OCAyNDBoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzQxLjF6TTY0MCAzNjhhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTc2LjctNDMuM2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNmwtNzIgNzJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwbC00MC00MGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ4MCAzODUuNGw2MC43LTYwLjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuY2hvckNpcmNsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA5NmEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwem0yMS4xIDgwQzM2NyAxNTguOCAzODQgMTI5LjQgMzg0IDk2YzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMzMuNCAxNyA2Mi44IDQyLjkgODBIMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDMyVjQ0OEgyMDhjLTUzIDAtOTYtNDMtOTYtOTZ2LTYuMWw3IDdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDk3IDI2M2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMNyAzMTljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw3LTdWMzUyYzAgODguNCA3MS42IDE2MCAxNjAgMTYwaDgwIDgwYzguMiAwIDE2LjMtLjYgMjQuMi0xLjhjLTIyLjItMTYuMi00MC40LTM3LjUtNTMtNjIuMkgzMjBWMzY4IDI0MGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzNDEuMXpNNDk2IDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTAtOTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0wLTE0NGM4LjggMCAxNiA3LjIgMTYgMTZ2ODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjg4YzAtOC44IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5jaG9yQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDk2YTMyIDMyIDAgMSAxIC02NCAwIDMyIDMyIDAgMSAxIDY0IDB6bTIxLjEgODBDMzY3IDE1OC44IDM4NCAxMjkuNCAzODQgOTZjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAzMy40IDE3IDYyLjggNDIuOSA4MEgyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzJWNDQ4SDIwOGMtNTMgMC05Ni00My05Ni05NnYtNi4xbDcgN2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlMOTcgMjYzYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEw3IDMxOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDctN1YzNTJjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjBoODAgODBjOC4yIDAgMTYuMy0uNiAyNC4yLTEuOGMtMjIuMi0xNi4yLTQwLjQtMzcuNS01My02Mi4ySDMyMFYzNjggMjQwaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM0MS4xek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptNTkuMy0xODAuN0w1MTguNiAzNjhsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBMNDk2IDM5MC42bC0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMNDczLjQgMzY4bC0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0OTYgMzQ1LjRsMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5jaG9yTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgOTZhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHptMjEuMSA4MEMzNjcgMTU4LjggMzg0IDEyOS40IDM4NCA5NmMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmMwIDMzLjQgMTcgNjIuOCA0Mi45IDgwSDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmgzMlY0NDhIMjA4Yy01MyAwLTk2LTQzLTk2LTk2di02LjFsNyA3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUw5NyAyNjNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDcgMzE5Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNy03VjM1MmMwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MGg4MCA4MGM4IDAgMTUuOS0uNiAyMy42LTEuN2MtNC44LTktNy42LTE5LjMtNy42LTMwLjNWNDQ2LjdjLTUuMiAuOS0xMC41IDEuMy0xNiAxLjNIMzIwVjI0MGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzNDEuMXpNNTI4IDI0MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OEg0OTZWMjcyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tODAgMzJ2NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMyVjI3MmMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5jaG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA5NmEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwem0yMS4xIDgwQzM2NyAxNTguOCAzODQgMTI5LjQgMzg0IDk2YzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMzMuNCAxNyA2Mi44IDQyLjkgODBIMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDMyVjQ0OEgyMDhjLTUzIDAtOTYtNDMtOTYtOTZ2LTYuMWw3IDdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDk3IDI2M2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMNyAzMTljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw3LTdWMzUyYzAgODguNCA3MS42IDE2MCAxNjAgMTYwaDgwIDgwYzg4LjQgMCAxNjAtNzEuNiAxNjAtMTYwdi02LjFsNyA3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtNTYtNTZjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC01NiA1NmMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDctN1YzNTJjMCA1My00MyA5Ni05NiA5NkgzMjBWMjQwaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM0MS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAxLjQgMzc0LjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTYwLTE2MGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwyMjQgMzA2LjcgODYuNiAxNjkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTYwIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxLjQgMjMzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wxMDkuMyAyNTYgMjQ2LjYgMTE4LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTE2MCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc4LjYgMjMzLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTE2MCAxNjBjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDIxMC43IDI1NiA3My40IDExOC42Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwbDE2MCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAxLjQgMTM3LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTYwIDE2MGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwyMjQgMjA1LjMgODYuNiAzNDIuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsMTYwLTE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVzRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDYuNiA0NzAuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBsLTE2MC0xNjBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBMMjI0IDQwMi43IDM2MS40IDI2NS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNsLTE2MCAxNjB6bTE2MC0zNTJsLTE2MCAxNjBjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwbC0xNjAtMTYwYy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwTDIyNCAyMTAuNyAzNjEuNCA3My40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlc0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDEuNCAyMzMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsMTYwIDE2MGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDEwOS4zIDI1NiAyNDYuNiAxMTguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMTYwIDE2MHptMzUyLTE2MGwtMTYwIDE2MGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsMTYwIDE2MGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDMwMS4zIDI1NiA0MzguNiAxMTguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVzUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDcwLjYgMjc4LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTE2MC0xNjBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDQwMi43IDI1NiAyNjUuNCAzOTMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwem0tMzUyIDE2MGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xNjAtMTYwYy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0wyMTAuNyAyNTYgNzMuNCAzOTMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVzVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ2LjYgNDEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTE2MCAxNjBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMjI0IDEwOS4zIDM2MS40IDI0Ni42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTE2MC0xNjB6bTE2MCAzNTJsLTE2MC0xNjBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xNjAgMTYwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDIyNCAzMDEuMyAzNjEuNCA0MzguNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmtoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDEyOGMwLTM1LjMgMjguNy02NCA2NC02NHM2NCAyOC43IDY0IDY0YzAgNDEuNi0yMC43IDc2LjYtNDYuNiAxMDQuMWMtNS45IDYuMi0xMS44IDExLjgtMTcuNCAxNi43Yy01LjYtNC45LTExLjUtMTAuNS0xNy40LTE2LjdDMTE2LjcgMjA0LjYgOTYgMTY5LjYgOTYgMTI4ek0xNjAgMEM4OS4zIDAgMzIgNTcuMyAzMiAxMjhjMCA1Mi40IDIxLjUgOTUuNSA0Ni44IDEyOEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMjBoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjQxLjJjMjUuNC0zMi41IDQ2LjgtNzUuNiA0Ni44LTEyOEMyODggNTcuMyAyMzAuNyAwIDE2MCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBsZVdob2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMTJjLTguOCAwLTE2LTcuMi0xNi0xNlY4MGMwLTQ0LjIgMzUuOC04MCA4MC04MGgxNmM4LjggMCAxNiA3LjIgMTYgMTZWMzJjMCA0NC4yLTM1LjggODAtODAgODBIMjI0ek0wIDI4OGMwLTc2LjMgMzUuNy0xNjAgMTEyLTE2MGMyNy4zIDAgNTkuNyAxMC4zIDgyLjcgMTkuM2MxOC44IDcuMyAzOS45IDcuMyA1OC43IDBjMjIuOS04LjkgNTUuNC0xOS4zIDgyLjctMTkuM2M3Ni4zIDAgMTEyIDgzLjcgMTEyIDE2MGMwIDEyOC04MCAyMjQtMTYwIDIyNGMtMTYuNSAwLTM4LjEtNi42LTUxLjUtMTEuM2MtOC4xLTIuOC0xNi45LTIuOC0yNSAwYy0xMy40IDQuNy0zNSAxMS4zLTUxLjUgMTEuM0M4MCA1MTIgMCA0MTYgMCAyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFyY2h3YXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2SDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnptMCAzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIOTZoNjRWMzUyYzAtNTMgNDMtOTYgOTYtOTZzOTYgNDMgOTYgOTZWNDgwaDY0IDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjEyOEgzMlY0MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93RG93bjE5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1MC43IDM4Yy04LjMtNi0xOS4xLTcuNy0yOC44LTQuNGwtNDggMTZjLTE2LjggNS42LTI1LjggMjMuNy0yMC4yIDQwLjVzMjMuNyAyNS44IDQwLjUgMjAuMmw1LjktMlYxNjBIMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDQ4IDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ2NFY2NGMwLTEwLjMtNC45LTE5LjktMTMuMy0yNnpNMTYwIDQ4MGM5IDAgMTcuNS0zLjggMjMuNi0xMC40bDg4LTk2YzExLjktMTMgMTEuMS0zMy4zLTItNDUuMnMtMzMuMy0xMS4xLTQ1LjIgMkwxOTIgMzY1LjdWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMzY1LjdMOTUuNiAzMzAuNGMtMTEuOS0xMy0zMi4yLTEzLjktNDUuMi0ycy0xMy45IDMyLjItMiA0NS4ybDg4IDk2QzE0Mi41IDQ3Ni4yIDE1MSA0ODAgMTYwIDQ4MHpNNDE4LjMgMzA3YTMyIDMyIDAgMSAxIDI3LjQgNTcuOUEzMiAzMiAwIDEgMSA0MTguMyAzMDd6TTQwNS4xIDQxOS44bC02LjggOS4yYy0xMC41IDE0LjItNy41IDM0LjIgNi43IDQ0LjhzMzQuMiA3LjUgNDQuOC02LjdsNDguOC02NS44YzE0LTE4LjkgMjEuNS00MS43IDIxLjUtNjUuMmMwLTQ4LjYtMzkuNC04OC04OC04OHMtODggMzkuNC04OCA4OGMwIDM5LjIgMjUuNiA3Mi40IDYxLjEgODMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dEb3duOTEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDQ4MGM5IDAgMTcuNS0zLjggMjMuNi0xMC40bDg4LTk2YzExLjktMTMgMTEuMS0zMy4zLTItNDUuMnMtMzMuMy0xMS4xLTQ1LjIgMkwxOTIgMzY1LjdWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMzY1LjdMOTUuNiAzMzAuNGMtMTEuOS0xMy0zMi4yLTEzLjktNDUuMi0ycy0xMy45IDMyLjItMiA0NS4ybDg4IDk2QzE0Mi41IDQ3Ni4yIDE1MSA0ODAgMTYwIDQ4MHpNNDUwLjcgMjk0Yy04LjMtNi0xOS4xLTcuNy0yOC44LTQuNGwtNDggMTZjLTE2LjggNS42LTI1LjggMjMuNy0yMC4yIDQwLjVzMjMuNyAyNS44IDQwLjUgMjAuMmw1LjktMlY0MTZIMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDQ4IDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ2NFYzMjBjMC0xMC4zLTQuOS0xOS45LTEzLjMtMjZ6TTQxOC4zIDkxYTMyIDMyIDAgMSAxIDI3LjQgNTcuOUEzMiAzMiAwIDEgMSA0MTguMyA5MXpNNDA1LjEgMjAzLjhsLTYuOCA5LjJjLTEwLjUgMTQuMi03LjUgMzQuMiA2LjcgNDQuOHMzNC4yIDcuNSA0NC44LTYuN2w0OC44LTY1LjhjMTQtMTguOSAyMS41LTQxLjcgMjEuNS02NS4yYzAtNDguNi0zOS40LTg4LTg4LTg4cy04OCAzOS40LTg4IDg4YzAgMzkuMiAyNS42IDcyLjQgNjEuMSA4My44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0Rvd25BWiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODMuNiA0NjkuNkMxNzcuNSA0NzYuMiAxNjkgNDgwIDE2MCA0ODBzLTE3LjUtMy44LTIzLjYtMTAuNGwtODgtOTZjLTExLjktMTMtMTEuMS0zMy4zIDItNDUuMnMzMy4zLTExLjEgNDUuMiAyTDEyOCAzNjUuN1Y2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjM2NS43bDMyLjQtMzUuNGMxMS45LTEzIDMyLjItMTMuOSA0NS4yLTJzMTMuOSAzMi4yIDIgNDUuMmwtODggOTZ6TTMyMCAzMjBjMC0xNy43IDE0LjMtMzIgMzItMzJINDgwYzEyLjkgMCAyNC42IDcuOCAyOS42IDE5LjhzMi4yIDI1LjctNi45IDM0LjlMNDI5LjMgNDE2SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzNTJjLTEyLjkgMC0yNC42LTcuOC0yOS42LTE5LjhzLTIuMi0yNS43IDYuOS0zNC45TDQwMi43IDM1MkgzNTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek00MTYgMzJjMTIuMSAwIDIzLjIgNi44IDI4LjYgMTcuN2w2NCAxMjggMTYgMzJjNy45IDE1LjggMS41IDM1LTE0LjMgNDIuOXMtMzUgMS41LTQyLjktMTQuM0w0NjAuMiAyMjRIMzcxLjhsLTcuMiAxNC4zYy03LjkgMTUuOC0yNy4xIDIyLjItNDIuOSAxNC4zcy0yMi4yLTI3LjEtMTQuMy00Mi45bDE2LTMyIDY0LTEyOEMzOTIuOCAzOC44IDQwMy45IDMyIDQxNiAzMnpNMzk1LjggMTc2aDQwLjRMNDE2IDEzNS42IDM5NS44IDE3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dEb3duTG9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjkuNCA1MDIuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxMjgtMTI4YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCA0MDIuNyAyMjQgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAzNzAuN0w4Ni42IDMyOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxMjggMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0Rvd25TaG9ydFdpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUxLjYgNDY5LjZDMTQ1LjUgNDc2LjIgMTM3IDQ4MCAxMjggNDgwcy0xNy41LTMuOC0yMy42LTEwLjRsLTg4LTk2Yy0xMS45LTEzLTExLjEtMzMuMyAyLTQ1LjJzMzMuMy0xMS4xIDQ1LjIgMkw5NiAzNjUuN1Y2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjM2NS43bDMyLjQtMzUuNGMxMS45LTEzIDMyLjItMTMuOSA0NS4yLTJzMTMuOSAzMi4yIDIgNDUuMmwtODggOTZ6TTMyMCAzMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTAgMTI4aDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCAxMjhINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCAxMjhINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dEb3duVXBBY3Jvc3NMaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzNy40IDUwMi42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDk2LTk2YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDE5MiA0MDIuN1YyODhINTQ0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ0OFYxMDkuM2w0MS40IDQxLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC05NiA5NmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwzODQgMTA5LjNWMjI0SDE5MiAxMjggMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoOTZWNDAyLjdMODYuNiAzNjEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsOTYgOTZ6TTEyOCAxOTJoNjRWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMTkyek00NDggMzIwSDM4NFY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93RG93blVwTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTAuNiA1MDIuNmw5Ni05NmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwxNjAgNDAyLjdWMjg4SDQxNlYyNzJjMC0xNy4yIDMuOS0zMy41IDEwLjgtNDhIMzUyVjEwOS4zbDQxLjQgNDEuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC05Ni05NmMtNi02LTE0LjEtOS40LTIyLjYtOS40cy0xNi42IDMuNC0yMi42IDkuNGwtOTYgOTZjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMjg4IDEwOS4zVjIyNGwtMTI4IDBIOTZsLTY0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIOTZWNDAyLjdMNTQuNiAzNjEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsOTYgOTZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDB6TTE2MCAxOTJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMTkyaDY0ek0yODggMzIwVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyMEgyODh6bTI0MC04MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OEg0OTZWMjcyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tODAgMzJ2NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMyVjI3MmMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dEb3duV2lkZVNob3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MS42IDQ2OS42QzE0NS41IDQ3Ni4yIDEzNyA0ODAgMTI4IDQ4MHMtMTcuNS0zLjgtMjMuNi0xMC40bC04OC05NmMtMTEuOS0xMy0xMS4xLTMzLjMgMi00NS4yczMzLjMtMTEuMSA0NS4yIDJMOTYgMzY1LjdWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlYzNjUuN2wzMi40LTM1LjRjMTEuOS0xMyAzMi4yLTEzLjkgNDUuMi0yczEzLjkgMzIuMiAyIDQ1LjJsLTg4IDk2ek0zMjAgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMHptMC0xMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzIwem0wLTEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzIwem0wLTEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0Rvd25aQSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODMuNiA0NjkuNkMxNzcuNSA0NzYuMiAxNjkgNDgwIDE2MCA0ODBzLTE3LjUtMy44LTIzLjYtMTAuNGwtODgtOTZjLTExLjktMTMtMTEuMS0zMy4zIDItNDUuMnMzMy4zLTExLjEgNDUuMiAyTDEyOCAzNjUuN1Y2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjM2NS43bDMyLjQtMzUuNGMxMS45LTEzIDMyLjItMTMuOSA0NS4yLTJzMTMuOSAzMi4yIDIgNDUuMmwtODggOTZ6TTMyMCA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0ODBjMTIuOSAwIDI0LjYgNy44IDI5LjYgMTkuOHMyLjIgMjUuNy02LjkgMzQuOUw0MjkuMyAxNjBINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM1MmMtMTIuOSAwLTI0LjYtNy44LTI5LjYtMTkuOHMtMi4yLTI1LjcgNi45LTM0LjlMNDAyLjcgOTZIMzUyYy0xNy43IDAtMzItMTQuMy0zMi0zMnptOTYgMTkyYzEyLjEgMCAyMy4yIDYuOCAyOC42IDE3LjdsNjQgMTI4IDE2IDMyYzcuOSAxNS44IDEuNSAzNS0xNC4zIDQyLjlzLTM1IDEuNS00Mi45LTE0LjNMNDYwLjIgNDQ4SDM3MS44bC03LjIgMTQuM2MtNy45IDE1LjgtMjcuMSAyMi4yLTQyLjkgMTQuM3MtMjIuMi0yNy4xLTE0LjMtNDIuOWwxNi0zMiA2NC0xMjhjNS40LTEwLjggMTYuNS0xNy43IDI4LjYtMTcuN3pNMzk1LjggNDAwaDQwLjRMNDE2IDM1OS42IDM5NS44IDQwMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2OS40IDQ3MC42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjBjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMjI0IDM3MC44IDIyNCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDMwNi43TDU0LjYgMjY1LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93TGVmdExvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40IDIzMy40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxMjggMTI4YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMTA5LjMgMjg4IDQ4MCAyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTM3MC43IDAgNzMuNC03My40YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC0xMjggMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40IDIzMy40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMTA5LjIgMjg4IDQxNiAyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMwNi43IDBMMjE0LjYgMTE4LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTE2MCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93UG9pbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDU1LjJWNDI2YzAgMTIuMiA5LjkgMjIgMjIgMjJjNi4zIDAgMTIuNC0yLjcgMTYuNi03LjVMMTIxLjIgMzQ2bDU4LjEgMTE2LjNjNy45IDE1LjggMjcuMSAyMi4yIDQyLjkgMTQuM3MyMi4yLTI3LjEgMTQuMy00Mi45TDE3OS44IDMyMEgyOTcuOWMxMi4yIDAgMjIuMS05LjkgMjIuMS0yMi4xYzAtNi4zLTIuNy0xMi4zLTcuNC0xNi41TDM4LjYgMzcuOUMzNC4zIDM0LjEgMjguOSAzMiAyMy4yIDMyQzEwLjQgMzIgMCA0Mi40IDAgNTUuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dSaWdodEFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzguNiAxNTAuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDMzOC43IDk2IDMyIDk2QzE0LjMgOTYgMCAxMTAuMyAwIDEyOHMxNC4zIDMyIDMyIDMybDMwNi43IDAtNDEuNCA0MS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDk2LTk2em0tMzMzLjMgMzUyYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMTA5LjMgNDE2IDQxNiA0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMwNi43IDAgNDEuNC00MS40YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC05NiA5NmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsOTYgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93UmlnaHRGcm9tQnJhY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuNiAyNzguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTI4LTEyOGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMNDAyLjcgMjI0IDE5MiAyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMjEwLjcgMC03My40IDczLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsMTI4LTEyOHpNMTYwIDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDk2IDMyQzQzIDMyIDAgNzUgMCAxMjhMMCAzODRjMCA1MyA0MyA5NiA5NiA5Nmw2NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTI1NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmw2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1JpZ2h0TG9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuNiAyNzguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTI4LTEyOGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMNDAyLjcgMjI0IDMyIDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzNzAuNyAwLTczLjQgNzMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGwxMjgtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1JpZ2h0VG9CcmFja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiA5Nmw2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMjU2YzAgMTcuNy0xNC4zIDMyLTMyIDMybC02NCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDY0IDBjNTMgMCA5Ni00MyA5Ni05NmwwLTI1NmMwLTUzLTQzLTk2LTk2LTk2bC02NCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyem0tOS40IDE4Mi42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xMjgtMTI4Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0wyNDIuNyAyMjQgMzIgMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDIxMC43IDAtNzMuNCA3My40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDEyOC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93UmlnaHRUb0NpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDk2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjE5Mmg0MFYxMjBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY3MmgyNGMyNi41IDAgNDggMjEuNSA0OCA0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDMyIDMzNmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDh6bTY0IDMydjMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWODBjMC04LjgtNy4yLTE2LTE2LTE2SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNiA4MGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTc2YzAtOC44LTcuMi0xNi0xNi0xNkgzNjh6TTM1MiAyNzJ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNzYtMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI3MmMwLTguOC03LjItMTYtMTYtMTZINTI4ek01MTIgMzY4djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNkg1MjhjLTguOCAwLTE2IDcuMi0xNiAxNnpNMTY2LjYgMTUzLjRsODAgODBjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTgwIDgwYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wxNDYuNyAyODhIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIMTQ2LjdsLTI1LjQtMjUuNGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzguNiAyNzguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTYwLTE2MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMMzM4LjggMjI0IDMyIDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMDYuNyAwTDIzMy40IDM5My40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93Um90YXRlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjUuNyAxNjBIMTc2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjUxLjJMOTcuNiA5Ny42Yzg3LjUtODcuNSAyMjkuMy04Ny41IDMxNi44IDBzODcuNSAyMjkuMyAwIDMxNi44cy0yMjkuMyA4Ny41LTMxNi44IDBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBjNjIuNSA2Mi41IDE2My44IDYyLjUgMjI2LjMgMHM2Mi41LTE2My44IDAtMjI2LjNzLTE2My44LTYyLjUtMjI2LjMgMEwxMjUuNyAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93Um90YXRlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg2LjMgMTYwSDMzNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0NjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NTEuMkw0MTQuNCA5Ny42Yy04Ny41LTg3LjUtMjI5LjMtODcuNS0zMTYuOCAwcy04Ny41IDIyOS4zIDAgMzE2LjhzMjI5LjMgODcuNSAzMTYuOCAwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwYy02Mi41IDYyLjUtMTYzLjggNjIuNS0yMjYuMyAwcy02Mi41LTE2My44IDAtMjI2LjNzMTYzLjgtNjIuNSAyMjYuMyAwTDM4Ni4zIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dUcmVuZERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDM1MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjgyLjdMMzQyLjYgMTM3LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwTDE5MiAyNDIuNyA1NC42IDEwNS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwTDMyMCAyMDUuMyA0NjYuNyAzNTJIMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1RyZW5kVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMjg4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIwNS4zTDM0Mi42IDM3NC42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMEwxOTIgMjY5LjMgNTQuNiA0MDYuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsMTYwLTE2MGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMEwzMjAgMzA2LjcgNDY2LjcgMTYwSDM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dUdXJuRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA2NEMxNC4zIDY0IDAgNDkuNyAwIDMyUzE0LjMgMCAzMiAwbDk2IDBjNTMgMCA5NiA0MyA5NiA5NmwwIDMwNi43IDczLjQtNzMuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zbC0xMjggMTI4Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtMTI4LTEyOGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMEwxNjAgNDAyLjcgMTYwIDk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDMyIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1R1cm5VcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsOTYgMGM1MyAwIDk2LTQzIDk2LTk2bDAtMzA2LjcgNzMuNCA3My40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTEyOC0xMjhjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xMjggMTI4Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDE2MCAxMDkuMyAxNjAgNDE2YzAgMTcuNy0xNC4zIDMyLTMyIDMybC05NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1VwMTkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDUwLjcgMzhjOC4zIDYgMTMuMyAxNS43IDEzLjMgMjZ2OTZoMTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDMyIDM4NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgxNlYxMDguNGwtNS45IDJjLTE2LjggNS42LTM0LjktMy41LTQwLjUtMjAuMnMzLjUtMzQuOSAyMC4yLTQwLjVsNDgtMTZjOS44LTMuMyAyMC41LTEuNiAyOC44IDQuNHpNMTYwIDMyYzkgMCAxNy41IDMuOCAyMy42IDEwLjRsODggOTZjMTEuOSAxMyAxMS4xIDMzLjMtMiA0NS4ycy0zMy4zIDExLjEtNDUuMi0yTDE5MiAxNDYuM1Y0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTQ2LjNMOTUuNiAxODEuNmMtMTEuOSAxMy0zMi4yIDEzLjktNDUuMiAycy0xMy45LTMyLjItMi00NS4ybDg4LTk2QzE0Mi41IDM1LjggMTUxIDMyIDE2MCAzMnpNNDQ1LjcgMzY0LjlBMzIgMzIgMCAxIDAgNDE4LjMgMzA3YTMyIDMyIDAgMSAwIDI3LjQgNTcuOXptLTQwLjcgNTQuOUMzNjkuNiA0MDguNCAzNDQgMzc1LjIgMzQ0IDMzNmMwLTQ4LjYgMzkuNC04OCA4OC04OHM4OCAzOS40IDg4IDg4YzAgMjMuNS03LjUgNDYuMy0yMS41IDY1LjJMNDQ5LjcgNDY3Yy0xMC41IDE0LjItMzAuNiAxNy4yLTQ0LjggNi43cy0xNy4yLTMwLjYtNi43LTQ0LjhsNi44LTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dVcDkxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCAzMmM5IDAgMTcuNSAzLjggMjMuNiAxMC40bDg4IDk2YzExLjkgMTMgMTEuMSAzMy4zLTIgNDUuMnMtMzMuMyAxMS4xLTQ1LjItMkwxOTIgMTQ2LjNWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE0Ni4zTDk1LjYgMTgxLjZjLTExLjkgMTMtMzIuMiAxMy45LTQ1LjIgMnMtMTMuOS0zMi4yLTItNDUuMmw4OC05NkMxNDIuNSAzNS44IDE1MSAzMiAxNjAgMzJ6TTQ1MC43IDI5NGM4LjMgNiAxMy4zIDE1LjcgMTMuMyAyNnY5NmgxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0MzIgMzg0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDE2VjM2NC40bC01LjkgMmMtMTYuOCA1LjYtMzQuOS0zLjUtNDAuNS0yMC4yczMuNS0zNC45IDIwLjItNDAuNWw0OC0xNmM5LjgtMy4zIDIwLjUtMS42IDI4LjggNC40em0tNS0xNDUuMUEzMiAzMiAwIDEgMCA0MTguMyA5MWEzMiAzMiAwIDEgMCAyNy40IDU3Ljl6bS00MC43IDU0LjlDMzY5LjYgMTkyLjQgMzQ0IDE1OS4yIDM0NCAxMjBjMC00OC42IDM5LjQtODggODgtODhzODggMzkuNCA4OCA4OGMwIDIzLjUtNy41IDQ2LjMtMjEuNSA2NS4yTDQ0OS43IDI1MWMtMTAuNSAxNC4yLTMwLjYgMTcuMi00NC44IDYuN3MtMTcuMi0zMC42LTYuNy00NC44bDYuOC05LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VXBBWiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODMuNiA0Mi40QzE3Ny41IDM1LjggMTY5IDMyIDE2MCAzMnMtMTcuNSAzLjgtMjMuNiAxMC40bC04OCA5NmMtMTEuOSAxMy0xMS4xIDMzLjMgMiA0NS4yczMzLjMgMTEuMSA0NS4yLTJMMTI4IDE0Ni4zVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE0Ni4zbDMyLjQgMzUuNGMxMS45IDEzIDMyLjIgMTMuOSA0NS4yIDJzMTMuOS0zMi4yIDItNDUuMmwtODgtOTZ6TTMyMCAzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNTAuN2wtNzMuNCA3My40Yy05LjIgOS4yLTExLjkgMjIuOS02LjkgMzQuOXMxNi42IDE5LjggMjkuNiAxOS44SDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0MjkuM2w3My40LTczLjRjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlzLTE2LjYtMTkuOC0yOS42LTE5LjhIMzUyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNNDE2IDMyYy0xMi4xIDAtMjMuMiA2LjgtMjguNiAxNy43bC02NCAxMjgtMTYgMzJjLTcuOSAxNS44LTEuNSAzNSAxNC4zIDQyLjlzMzUgMS41IDQyLjktMTQuM2w3LjItMTQuM2g4OC40bDcuMiAxNC4zYzcuOSAxNS44IDI3LjEgMjIuMiA0Mi45IDE0LjNzMjIuMi0yNy4xIDE0LjMtNDIuOWwtMTYtMzItNjQtMTI4QzQzOS4yIDM4LjggNDI4LjEgMzIgNDE2IDMyek0zOTUuOCAxNzZMNDE2IDEzNS42IDQzNi4yIDE3NkgzOTUuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dVcEZyb21CcmFja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ni42IDkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTEyOCAxMjhjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTkyIDEwOS4zIDE5MiAzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTIxMC43IDczLjQgNzMuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC0xMjgtMTI4ek02NCAzNTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA2NGMwIDUzIDQzIDk2IDk2IDk2bDI1NiAwYzUzIDAgOTYtNDMgOTYtOTZsMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDk2IDQ0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dVcEZyb21Hcm91bmRXYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjEwOS4zbDI1LjQgMjUuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC04MC04MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTgwIDgwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDI1NiAxMDkuM1YzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJ6bS0xOC41IDY5LjlDMjQ3IDQzNy40IDIxOS41IDQ0OCAxOTIgNDQ4Yy0yNi45IDAtNTUuMy0xMC44LTc3LjQtMjYuMWwwIDBjLTExLjktOC41LTI4LjEtNy44LTM5LjIgMS43Yy0xNC40IDExLjktMzIuNSAyMS01MC42IDI1LjJjLTE3LjIgNC0yNy45IDIxLjItMjMuOSAzOC40czIxLjIgMjcuOSAzOC40IDIzLjljMjQuNS01LjcgNDQuOS0xNi41IDU4LjItMjVDMTI2LjUgNTAxLjcgMTU5IDUxMiAxOTIgNTEyYzMxLjkgMCA2MC42LTkuOSA4MC40LTE4LjljNS44LTIuNyAxMS4xLTUuMyAxNS42LTcuN2M0LjUgMi40IDkuNyA1LjEgMTUuNiA3LjdjMTkuOCA5IDQ4LjUgMTguOSA4MC40IDE4LjljMzMgMCA2NS41LTEwLjMgOTQuNS0yNS44YzEzLjQgOC40IDMzLjcgMTkuMyA1OC4yIDI1YzE3LjIgNCAzNC40LTYuNyAzOC40LTIzLjlzLTYuNy0zNC40LTIzLjktMzguNGMtMTguMS00LjItMzYuMi0xMy4zLTUwLjYtMjUuMmMtMTEuMS05LjQtMjcuMy0xMC4xLTM5LjItMS43bDAgMEM0MzkuNCA0MzcuMiA0MTAuOSA0NDggMzg0IDQ0OGMtMjcuNSAwLTU1LTEwLjYtNzcuNS0yNi4xYy0xMS4xLTcuOS0yNS45LTcuOS0zNyAwek0xOTIgMTkySDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OFY0MjVjNS4zLTMuMSAxMS4yLTUuNCAxNy41LTYuOWMxMy4xLTMuMSAyNi43LTkuOCAzNy4zLTE4LjZjMjIuMi0xOC43IDU0LjMtMjAuMSA3OC4xLTMuNGMxOCAxMi40IDQwLjEgMjAuMyA1OS4xIDIwLjNWMTkyem0zODQgNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzg0VjQxNi41aDBjMTkgMCA0MS4yLTcuOSA1OS4yLTIwLjNjMjMuOC0xNi43IDU1LjgtMTUuMyA3OC4xIDMuNGMxMC42IDguOCAyNC4yIDE1LjYgMzcuMyAxOC42YzYuMyAxLjUgMTIuMSAzLjggMTcuNSA2LjlWMjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1VwRnJvbVdhdGVyUHVtcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgMEM4NS41IDAgNjQgMjEuNSA2NCA0OFYyNTZINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djk2YzAgOCAyIDE1LjYgNS40IDIyLjJjMy44LTEuNyA3LjgtMy4xIDEyLTQuMWMxMy4xLTMuMSAyNi43LTkuOCAzNy4zLTE4LjZjMjIuMi0xOC43IDU0LjMtMjAuMSA3OC4xLTMuNGMxOCAxMi40IDQwLjEgMjAuMyA1OS4yIDIwLjNjMjEuMSAwIDQyLTguNSA1OS4yLTIwLjNjMjIuMS0xNS41IDUxLjYtMTUuNSA3My43IDBjMTguNCAxMi43IDM5LjYgMjAuMyA1OS4yIDIwLjNjMTkgMCA0MS4yLTcuOSA1OS4yLTIwLjNjMjMuOC0xNi43IDU1LjgtMTUuMyA3OC4xIDMuNGMxMC42IDguOCAyNC4yIDE1LjYgMzcuMyAxOC42YzQuMiAxIDguMiAyLjQgMTIgNC4xQzU3NCA0MTUuNiA1NzYgNDA4IDU3NiA0MDBWMzA0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4MGwwLTE0Ni43IDI1LjQgMjUuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC04MC04MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTgwIDgwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDQxNiAxMDkuMyA0MTYgMjU2SDI4OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEgxMTJ6TTMwNi41IDQyMS45Yy0xMS4xLTcuOS0yNS45LTcuOS0zNyAwQzI0NyA0MzcuNCAyMTkuNSA0NDggMTkyIDQ0OGMtMjYuOSAwLTU1LjMtMTAuOC03Ny40LTI2LjFsMCAwYy0xMS45LTguNS0yOC4xLTcuOC0zOS4yIDEuN2MtMTQuNCAxMS45LTMyLjUgMjEtNTAuNiAyNS4yYy0xNy4yIDQtMjcuOSAyMS4yLTIzLjkgMzguNHMyMS4yIDI3LjkgMzguNCAyMy45YzI0LjUtNS43IDQ0LjktMTYuNSA1OC4yLTI1QzEyNi41IDUwMS43IDE1OSA1MTIgMTkyIDUxMmMzMS45IDAgNjAuNi05LjkgODAuNC0xOC45YzUuOC0yLjcgMTEuMS01LjMgMTUuNi03LjdjNC41IDIuNCA5LjcgNS4xIDE1LjYgNy43YzE5LjggOSA0OC41IDE4LjkgODAuNCAxOC45YzMzIDAgNjUuNS0xMC4zIDk0LjUtMjUuOGMxMy40IDguNCAzMy43IDE5LjMgNTguMiAyNWMxNy4yIDQgMzQuNC02LjcgMzguNC0yMy45cy02LjctMzQuNC0yMy45LTM4LjRjLTE4LjEtNC4yLTM2LjItMTMuMy01MC42LTI1LjJjLTExLjEtOS40LTI3LjMtMTAuMS0zOS4yLTEuN2wwIDBDNDM5LjQgNDM3LjIgNDEwLjkgNDQ4IDM4NCA0NDhjLTI3LjUgMC01NS0xMC42LTc3LjUtMjYuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dVcExvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE0LjYgOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTI4IDEyOGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwxNjAgMTA5LjNWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTA5LjNsNzMuNCA3My40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTEyOC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VXBSaWdodERvdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoNTAuN0w5LjQgMjY1LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMjU2IDEwOS4zVjE2MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDE2MHpNNTc2IDgwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTQ0OCAyMDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNNDAwIDM4NGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTQ4IDgwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6bTEyOCAwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTI3MiAzODRhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em00OCA4MGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0xNDQgNTEyYTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNNTc2IDMzNmE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwem0tNDgtODBhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1VwUmlnaHRGcm9tU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDgyLjdMMjAxLjQgMjY1LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMNDQ4IDEwOS4zVjE5MmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyMHpNODAgMzJDMzUuOCAzMiAwIDY3LjggMCAxMTJWNDMyYzAgNDQuMiAzNS44IDgwIDgwIDgwSDQwMGM0NC4yIDAgODAtMzUuOCA4MC04MFYzMjBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWNDMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZIMTkyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1VwU2hvcnRXaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MS42IDQyLjRDMTQ1LjUgMzUuOCAxMzcgMzIgMTI4IDMycy0xNy41IDMuOC0yMy42IDEwLjRsLTg4IDk2Yy0xMS45IDEzLTExLjEgMzMuMyAyIDQ1LjJzMzMuMyAxMS4xIDQ1LjItMkw5NiAxNDYuM1Y0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxNDYuM2wzMi40IDM1LjRjMTEuOSAxMyAzMi4yIDEzLjkgNDUuMiAyczEzLjktMzIuMiAyLTQ1LjJsLTg4LTk2ek0zMjAgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwem0wIDEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjB6bTAgMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjB6bTAgMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VXBXaWRlU2hvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUxLjYgNDIuNEMxNDUuNSAzNS44IDEzNyAzMiAxMjggMzJzLTE3LjUgMy44LTIzLjYgMTAuNGwtODggOTZjLTExLjkgMTMtMTEuMSAzMy4zIDIgNDUuMnMzMy4zIDExLjEgNDUuMi0yTDk2IDE0Ni4zVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE0Ni4zbDMyLjQgMzUuNGMxMS45IDEzIDMyLjIgMTMuOSA0NS4yIDJzMTMuOS0zMi4yIDItNDUuMmwtODgtOTZ6TTMyMCA0ODBoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyem0wLTEyOGg5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6bTAtMTI4SDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6bTAtMTI4SDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VXBaQSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODMuNiA0Mi40QzE3Ny41IDM1LjggMTY5IDMyIDE2MCAzMnMtMTcuNSAzLjgtMjMuNiAxMC40bC04OCA5NmMtMTEuOSAxMy0xMS4xIDMzLjMgMiA0NS4yczMzLjMgMTEuMSA0NS4yLTJMMTI4IDE0Ni4zVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE0Ni4zbDMyLjQgMzUuNGMxMS45IDEzIDMyLjIgMTMuOSA0NS4yIDJzMTMuOS0zMi4yIDItNDUuMmwtODgtOTZ6TTMyMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg1MC43bC03My40IDczLjRjLTkuMiA5LjItMTEuOSAyMi45LTYuOSAzNC45czE2LjYgMTkuOCAyOS42IDE5LjhINDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQyOS4zbDczLjQtNzMuNGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOXMtMTYuNi0xOS44LTI5LjYtMTkuOEgzNTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem05NiAxOTJjLTEyLjEgMC0yMy4yIDYuOC0yOC42IDE3LjdsLTY0IDEyOC0xNiAzMmMtNy45IDE1LjgtMS41IDM1IDE0LjMgNDIuOXMzNSAxLjUgNDIuOS0xNC4zbDcuMi0xNC4zaDg4LjRsNy4yIDE0LjNjNy45IDE1LjggMjcuMSAyMi4yIDQyLjkgMTQuM3MyMi4yLTI3LjEgMTQuMy00Mi45bC0xNi0zMi02NC0xMjhDNDM5LjIgMjYyLjggNDI4LjEgMjU2IDQxNiAyNTZ6TTM5NS44IDQwMEw0MTYgMzU5LjYgNDM2LjIgNDAwSDM5NS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNC42IDQxLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xNjAgMTYwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDE2MCAxNDEuMlY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxNDEuMkwzMjkuNCAyNDYuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC0xNjAtMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NEb3duVG9MaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCA0MTZMMzIgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDUxMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyem0yMi42LTEzNy40YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDQ4MCAyNzQuNyA0ODAgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAyMTAuNy00MS40LTQxLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDk2IDk2YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDk2LTk2em0tMzIwLTQ1LjNjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwTDE2MCAyNzQuNyAxNjAgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAyMTAuN0w1NC42IDIzMy40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2w5NiA5NmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw5Ni05NmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzRG93blRvUGVvcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNFYxNDIuMUw5NyAxMTljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNjQgNjRjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsNjQtNjRjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtMjMgMjNWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjR6TTM2MCAyMDBhNDAgNDAgMCAxIDAgLTgwIDAgNDAgNDAgMCAxIDAgODAgMHpNMTg0IDI5NmE0MCA0MCAwIDEgMCAtODAgMCA0MCA0MCAwIDEgMCA4MCAwem0zMTIgNDBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwek0yMDAgNDQxLjVsMjYuOSA0OS45YzYuMyAxMS43IDIwLjggMTYgMzIuNSA5LjhzMTYtMjAuOCA5LjgtMzIuNWwtMzYuMy02Ny41YzEuNy0xLjcgMy4yLTMuNiA0LjMtNS44TDI2NCAzNDUuNVY0MDBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzQ1LjVsMjYuOSA0OS45YzEuMiAyLjIgMi42IDQuMSA0LjMgNS44bC0zNi4zIDY3LjVjLTYuMyAxMS43LTEuOSAyNi4yIDkuOCAzMi41czI2LjIgMS45IDMyLjUtOS44TDQ0MCA0NDEuNVY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDQxLjVsMjYuOSA0OS45YzYuMyAxMS43IDIwLjggMTYgMzIuNSA5LjhzMTYtMjAuOCA5LjgtMzIuNWwtMzcuOS03MC4zYy0xNS4zLTI4LjUtNDUuMS00Ni4zLTc3LjUtNDYuM0g0ODYuMmMtMTYuMyAwLTMxLjkgNC41LTQ1LjQgMTIuNmwtMzMuNi02Mi4zYy0xNS4zLTI4LjUtNDUuMS00Ni4zLTc3LjUtNDYuM0gzMTAuMmMtMzIuNCAwLTYyLjEgMTcuOC03Ny41IDQ2LjNsLTMzLjYgNjIuM2MtMTMuNS04LjEtMjkuMS0xMi42LTQ1LjQtMTIuNkgxMzQuMmMtMzIuNCAwLTYyLjEgMTcuOC03Ny41IDQ2LjNMMTguOSA0NjguNmMtNi4zIDExLjctMS45IDI2LjIgOS44IDMyLjVzMjYuMiAxLjkgMzIuNS05LjhMODggNDQxLjVWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjQ0MS41ek00MTUgMTUzbDY0IDY0YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDY0LTY0YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTIzIDIzVjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjE0Mi4xbC0yMy0yM2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzTGVmdFJpZ2h0VG9MaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMzIwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjk2QzAgNzguMyAxNC4zIDY0IDMyIDY0em0yMTQuNiA3My40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zTDIwNS4zIDIyNGwyMjkuNSAwLTQxLjQtNDEuNGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMGw5NiA5NmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtOTYgOTZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDQzNC43IDI4OGwtMjI5LjUgMCA0MS40IDQxLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBsLTk2LTk2Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM2w5Ni05NmMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHpNNjQwIDk2VjQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NMZWZ0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA2LjYgMzc0LjZsOTYtOTZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTk2LTk2Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0w0MDIuNyAyMjRsLTI5My41IDAgNDEuNC00MS40YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC05NiA5NmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsOTYgOTZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wxMDkuMyAyODhsMjkzLjUgMC00MS40IDQxLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c1JvdGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDUuMSAyMDIuNmM3LjctMjEuOCAyMC4yLTQyLjMgMzcuOC01OS44YzYyLjUtNjIuNSAxNjMuOC02Mi41IDIyNi4zIDBMMzg2LjMgMTYwSDM1MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0NjMuNWMwIDAgMCAwIDAgMGguNGMxNy43IDAgMzItMTQuMyAzMi0zMlY4MGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnYzNS4yTDQxNC40IDk3LjZjLTg3LjUtODcuNS0yMjkuMy04Ny41LTMxNi44IDBDNzMuMiAxMjIgNTUuNiAxNTAuNyA0NC44IDE4MS40Yy01LjkgMTYuNyAyLjkgMzQuOSAxOS41IDQwLjhzMzQuOS0yLjkgNDAuOC0xOS41ek0zOSAyODkuM2MtNSAxLjUtOS44IDQuMi0xMy43IDguMmMtNCA0LTYuNyA4LjgtOC4xIDE0Yy0uMyAxLjItLjYgMi41LS44IDMuOGMtLjMgMS43LS40IDMuNC0uNCA1LjFWNDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzk2LjlsMTcuNiAxNy41IDAgMGM4Ny41IDg3LjQgMjI5LjMgODcuNCAzMTYuNyAwYzI0LjQtMjQuNCA0Mi4xLTUzLjEgNTIuOS04My43YzUuOS0xNi43LTIuOS0zNC45LTE5LjUtNDAuOHMtMzQuOSAyLjktNDAuOCAxOS41Yy03LjcgMjEuOC0yMC4yIDQyLjMtMzcuOCA1OS44Yy02Mi41IDYyLjUtMTYzLjggNjIuNS0yMjYuMyAwbC0uMS0uMUwxMjUuNiAzNTJIMTYwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ4LjRjLTEuNiAwLTMuMiAuMS00LjggLjNzLTMuMSAuNS00LjYgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzU3BpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOTZjMzguNCAwIDczLjcgMTMuNSAxMDEuMyAzNi4xbC0zMi42IDMyLjZjLTQuNiA0LjYtNS45IDExLjUtMy41IDE3LjRzOC4zIDkuOSAxNC44IDkuOUg0NDhjOC44IDAgMTYtNy4yIDE2LTE2VjY0YzAtNi41LTMuOS0xMi4zLTkuOS0xNC44cy0xMi45LTEuMS0xNy40IDMuNWwtMzQgMzRDMzYzLjQgNTIuNiAzMTIuMSAzMiAyNTYgMzJjLTEwLjkgMC0yMS41IC44LTMyIDIuM1Y5OS4yYzEwLjMtMi4xIDIxLTMuMiAzMi0zLjJ6TTEzMi4xIDE1NC43bDMyLjYgMzIuNmM0LjYgNC42IDExLjUgNS45IDE3LjQgMy41czkuOS04LjMgOS45LTE0LjhWNjRjMC04LjgtNy4yLTE2LTE2LTE2SDY0Yy02LjUgMC0xMi4zIDMuOS0xNC44IDkuOXMtMS4xIDEyLjkgMy41IDE3LjRsMzQgMzRDNTIuNiAxNDguNiAzMiAxOTkuOSAzMiAyNTZjMCAxMC45IC44IDIxLjUgMi4zIDMySDk5LjJjLTIuMS0xMC4zLTMuMi0yMS0zLjItMzJjMC0zOC40IDEzLjUtNzMuNyAzNi4xLTEwMS4zek00NzcuNyAyMjRINDEyLjhjMi4xIDEwLjMgMy4yIDIxIDMuMiAzMmMwIDM4LjQtMTMuNSA3My43LTM2LjEgMTAxLjNsLTMyLjYtMzIuNmMtNC42LTQuNi0xMS41LTUuOS0xNy40LTMuNXMtOS45IDguMy05LjkgMTQuOFY0NDhjMCA4LjggNy4yIDE2IDE2IDE2SDQ0OGM2LjUgMCAxMi4zLTMuOSAxNC44LTkuOXMxLjEtMTIuOS0zLjUtMTcuNGwtMzQtMzRDNDU5LjQgMzYzLjQgNDgwIDMxMi4xIDQ4MCAyNTZjMC0xMC45LS44LTIxLjUtMi4zLTMyek0yNTYgNDE2Yy0zOC40IDAtNzMuNy0xMy41LTEwMS4zLTM2LjFsMzIuNi0zMi42YzQuNi00LjYgNS45LTExLjUgMy41LTE3LjRzLTguMy05LjktMTQuOC05LjlINjRjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDExMmMwIDYuNSAzLjkgMTIuMyA5LjkgMTQuOHMxMi45IDEuMSAxNy40LTMuNWwzNC0zNEMxNDguNiA0NTkuNCAxOTkuOSA0ODAgMjU2IDQ4MGMxMC45IDAgMjEuNS0uOCAzMi0yLjNWNDEyLjhjLTEwLjMgMi4xLTIxIDMuMi0zMiAzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c1NwbGl0VXBBbmRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ni42IDE1MC42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2w5Ni05NmMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGw5NiA5NmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzNTIgMTA5LjNWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0aDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQxNmMtNzAuNyAwLTEyOC01Ny4zLTEyOC0xMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMTA5LjNsNDEuNCA0MS40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwbC05Ni05NmMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNsOTYtOTZjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM0wxMDkuMyAyNTZIMjI0YzIzLjMgMCA0NS4yIDYuMiA2NCAxNy4xVjEwOS4zbC00MS40IDQxLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c1RvQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNCA5LjRDMjEuOS0zLjEgNDIuMS0zLjEgNTQuNiA5LjRMMTYwIDExNC43Vjk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2OTZjMCA0LjMtLjkgOC41LTIuNCAxMi4yYy0xLjYgMy43LTMuOCA3LjMtNi45IDEwLjNsLS4xIC4xYy0zLjEgMy02LjYgNS4zLTEwLjMgNi45Yy0zLjggMS42LTcuOSAyLjQtMTIuMiAyLjRIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoMTguN0w5LjQgNTQuNkMtMy4xIDQyLjEtMy4xIDIxLjkgOS40IDkuNHpNMjU2IDI1NmE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTExNC43IDM1Mkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg5NiAwbC4xIDBjOC44IDAgMTYuNyAzLjYgMjIuNSA5LjNsLjEgLjFjMyAzLjEgNS4zIDYuNiA2LjkgMTAuM2MxLjYgMy44IDIuNCA3LjkgMi40IDEyLjJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzk3LjNMNTQuNiA1MDIuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMTE0LjcgMzUyek00MTYgOTZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnYxOC43TDU4NS40IDkuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zTDUyNS4zIDE2MEg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDQ4Yy04LjggMC0xNi44LTMuNi0yMi42LTkuM2wtLjEtLjFjLTMtMy4xLTUuMy02LjYtNi45LTEwLjNzLTIuNC03LjgtMi40LTEyLjJsMC0uMXYwVjk2ek01MjUuMyAzNTJMNjMwLjYgNDU3LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMNDgwIDM5Ny4zVjQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMjB2MGMwIDAgMC0uMSAwLS4xYzAtNC4zIC45LTguNCAyLjQtMTIuMmMxLjYtMy44IDMuOS03LjMgNi45LTEwLjRjNS44LTUuOCAxMy43LTkuMyAyMi41LTkuNGMwIDAgLjEgMCAuMSAwaDAgOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINTI1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c1RvRG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY0aDMyYzEyLjkgMCAyNC42IDcuOCAyOS42IDE5LjhzMi4yIDI1LjctNi45IDM0LjlsLTY0IDY0Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtNjQtNjRjLTkuMi05LjItMTEuOS0yMi45LTYuOS0zNC45czE2LjYtMTkuOCAyOS42LTE5LjhoMzJWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTE2OS40IDM5My40bDY0LTY0YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDY0IDY0YzkuMiA5LjIgMTEuOSAyMi45IDYuOSAzNC45cy0xNi42IDE5LjgtMjkuNiAxOS44SDI4OHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDhIMTkyYy0xMi45IDAtMjQuNi03LjgtMjkuNi0xOS44cy0yLjItMjUuNyA2LjktMzQuOXpNMzIgMjI0SDY0VjE5MmMwLTEyLjkgNy44LTI0LjYgMTkuOC0yOS42czI1LjctMi4yIDM0LjkgNi45bDY0IDY0YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC02NCA2NGMtOS4yIDkuMi0yMi45IDExLjktMzQuOSA2LjlzLTE5LjgtMTYuNi0xOS44LTI5LjZWMjg4SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyem0yOTcuNCA1NC42Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM2w2NC02NGM5LjItOS4yIDIyLjktMTEuOSAzNC45LTYuOXMxOS44IDE2LjYgMTkuOCAyOS42djMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQ0OHYzMmMwIDEyLjktNy44IDI0LjYtMTkuOCAyOS42cy0yNS43IDIuMi0zNC45LTYuOWwtNjQtNjR6TTI1NiAyMjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NUb0V5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxNUMyNC40IDUuNyAzOS42IDUuNyA0OSAxNWw2MyA2M1Y0MGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djk2YzAgMTMuMy0xMC43IDI0LTI0IDI0SDQwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0SDc4LjFMMTUgNDlDNS43IDM5LjYgNS43IDI0LjQgMTUgMTV6TTEzMy41IDI0My45QzE1OC42IDE5My42IDIyMi43IDExMiAzMjAgMTEyczE2MS40IDgxLjYgMTg2LjUgMTMxLjljMy44IDcuNiAzLjggMTYuNSAwIDI0LjJDNDgxLjQgMzE4LjQgNDE3LjMgNDAwIDMyMCA0MDBzLTE2MS40LTgxLjYtMTg2LjUtMTMxLjljLTMuOC03LjYtMy44LTE2LjUgMC0yNC4yek0zMjAgMzIwYTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4ek01OTEgMTVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC02MyA2M0g2MDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINTA0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFY0MGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0Vjc4LjFsNjMtNjN6TTE1IDQ5N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsNjMtNjNINDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjR2OTZjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWNDMzLjlMNDkgNDk3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHptNTc2IDBsLTYzLTYzVjQ3MmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYzNzZjMC0xMy4zIDEwLjctMjQgMjQtMjRoOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINTYxLjlsNjMgNjNjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzVHVyblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5Ny40IDkuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGw5NiA5NmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtOTYgOTZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDMzOC43IDE2MEgxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0djMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIyNEMwIDE1My4zIDU3LjMgOTYgMTI4IDk2SDMzOC43TDI5Ny40IDU0LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zem0tOTYgMjU2YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDk2IDk2YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC05NiA5NmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMjQyLjcgNDE2SDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDhjMC01MyA0My05NiA5Ni05NkgyNDIuN2wtNDEuNC00MS40Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzVHVyblRvRG90cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDkuNCAyNS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNMMjY5LjMgOTYgNDE2IDk2YzUzIDAgOTYgNDMgOTYgOTZ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMybC0xNDYuNyAwIDI1LjQgMjUuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMGwtODAtODBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDgwLTgwem0xMy4zIDI1Nmw4MCA4MGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtODAgODBjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDI0Mi43IDQxNiA5NiA0MTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OGMwLTUzIDQzLTk2IDk2LTk2bDE0Ni43IDAtMjUuNC0yNS40Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwek0zODQgMzg0YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNNjQgMTkyQTY0IDY0IDAgMSAxIDY0IDY0YTY0IDY0IDAgMSAxIDAgMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NVcERvd25MZWZ0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc4LjYgOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtNjQgNjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsOS40LTkuNFYyMjRIMTA5LjNsOS40LTkuNGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtNjQgNjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDY0IDY0YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTkuNC05LjRIMjI0VjQwMi43bC05LjQtOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2w2NCA2NGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw2NC02NGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtOS40IDkuNFYyODhINDAyLjdsLTkuNCA5LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsNjQtNjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTY0LTY0Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2w5LjQgOS40SDI4OFYxMDkuM2w5LjQgOS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NVcERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgyLjYgOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtOTYgOTZjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTI4IDEwOS4zVjQwMi43TDg2LjYgMzYxLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDk2IDk2YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDk2LTk2YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDE5MiA0MDIuN1YxMDkuM2w0MS40IDQxLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c1VwVG9MaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDk2bDUxMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRTMTQuMyA5NiAzMiA5NnpNOS40IDIzMy40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDk2IDIzNy4zIDk2IDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjEwLjcgNDEuNCA0MS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTk2LTk2Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtOTYgOTZ6bTMyMCA0NS4zYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwTDQxNiAyMzcuMyA0MTYgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yMTAuNyA0MS40IDQxLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC05NiA5NmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFzdGVyaXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlYxOTkuNWwxMTEuNS02Ni45YzE1LjItOS4xIDM0LjgtNC4yIDQzLjkgMTFzNC4yIDM0LjgtMTEgNDMuOUwyNTQuMiAyNTZsMTE0LjMgNjguNmMxNS4yIDkuMSAyMC4xIDI4LjcgMTEgNDMuOXMtMjguNyAyMC4xLTQzLjkgMTFMMjI0IDMxMi41VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMTIuNUw0OC41IDM3OS40Yy0xNS4yIDkuMS0zNC44IDQuMi00My45LTExcy00LjItMzQuOCAxMS00My45TDEyOS44IDI1NiAxNS41IDE4Ny40Yy0xNS4yLTkuMS0yMC4xLTI4LjctMTEtNDMuOXMyOC43LTIwLjEgNDMuOS0xMUwxNjAgMTk5LjVWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA2NEMxNTAgNjQgNjQgMTUwIDY0IDI1NnM4NiAxOTIgMTkyIDE5MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkMxMTQuNiA1MTIgMCAzOTcuNCAwIDI1NlMxMTQuNiAwIDI1NiAwUzUxMiAxMTQuNiA1MTIgMjU2djMyYzAgNTMtNDMgOTYtOTYgOTZjLTI5LjMgMC01NS42LTEzLjItNzMuMi0zMy45QzMyMCAzNzEuMSAyODkuNSAzODQgMjU2IDM4NGMtNzAuNyAwLTEyOC01Ny4zLTEyOC0xMjhzNTcuMy0xMjggMTI4LTEyOGMyNy45IDAgNTMuNyA4LjkgNzQuNyAyNC4xYzUuNy01IDEzLjEtOC4xIDIxLjMtOC4xYzE3LjcgMCAzMiAxNC4zIDMyIDMydjgwIDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjU2YzAtMTA2LTg2LTE5Mi0xOTItMTkyem02NCAxOTJhNjQgNjQgMCAxIDAgLTEyOCAwIDY0IDY0IDAgMSAwIDEyOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdG9tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAzOTguOGMtMTEuOCA1LjEtMjMuNCA5LjctMzQuOSAxMy41YzE2LjcgMzMuOCAzMSAzNS43IDM0LjkgMzUuN3MxOC4xLTEuOSAzNC45LTM1LjdjLTExLjQtMy45LTIzLjEtOC40LTM0LjktMTMuNXpNNDQ2IDI1NmMzMyA0NS4yIDQ0LjMgOTAuOSAyMy42IDEyOGMtMjAuMiAzNi4zLTYyLjUgNDkuMy0xMTUuMiA0My4yYy0yMiA1Mi4xLTU1LjYgODQuOC05OC40IDg0LjhzLTc2LjQtMzIuNy05OC40LTg0LjhjLTUyLjcgNi4xLTk1LTYuOC0xMTUuMi00My4yQzIxLjcgMzQ2LjkgMzMgMzAxLjIgNjYgMjU2Yy0zMy00NS4yLTQ0LjMtOTAuOS0yMy42LTEyOGMyMC4yLTM2LjMgNjIuNS00OS4zIDExNS4yLTQzLjJDMTc5LjYgMzIuNyAyMTMuMiAwIDI1NiAwczc2LjQgMzIuNyA5OC40IDg0LjhjNTIuNy02LjEgOTUgNi44IDExNS4yIDQzLjJjMjAuNyAzNy4xIDkuNCA4Mi44LTIzLjYgMTI4em0tNjUuOCA2Ny40Yy0xLjcgMTQuMi0zLjkgMjgtNi43IDQxLjJjMzEuOCAxLjQgMzguNi04LjcgNDAuMi0xMS43YzIuMy00LjIgNy0xNy45LTExLjktNDguMWMtNi44IDYuMy0xNCAxMi41LTIxLjYgMTguNnptLTYuNy0xNzUuOWMyLjggMTMuMSA1IDI2LjkgNi43IDQxLjJjNy42IDYuMSAxNC44IDEyLjMgMjEuNiAxOC42YzE4LjktMzAuMiAxNC4yLTQ0IDExLjktNDguMWMtMS42LTIuOS04LjQtMTMtNDAuMi0xMS43ek0yOTAuOSA5OS43QzI3NC4xIDY1LjkgMjU5LjkgNjQgMjU2IDY0cy0xOC4xIDEuOS0zNC45IDM1LjdjMTEuNCAzLjkgMjMuMSA4LjQgMzQuOSAxMy41YzExLjgtNS4xIDIzLjQtOS43IDM0LjktMTMuNXptLTE1OSA4OC45YzEuNy0xNC4zIDMuOS0yOCA2LjctNDEuMmMtMzEuOC0xLjQtMzguNiA4LjctNDAuMiAxMS43Yy0yLjMgNC4yLTcgMTcuOSAxMS45IDQ4LjFjNi44LTYuMyAxNC0xMi41IDIxLjYtMTguNnpNMTEwLjIgMzA0LjhDOTEuNCAzMzUgOTYgMzQ4LjcgOTguMyAzNTIuOWMxLjYgMi45IDguNCAxMyA0MC4yIDExLjdjLTIuOC0xMy4xLTUtMjYuOS02LjctNDEuMmMtNy42LTYuMS0xNC44LTEyLjMtMjEuNi0xOC42ek0zMzYgMjU2YTgwIDgwIDAgMSAwIC0xNjAgMCA4MCA4MCAwIDEgMCAxNjAgMHptLTgwLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXVkaW9EZXNjcmlwdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTIxMy41IDE3My4zbDcyIDE0NGM1LjkgMTEuOSAxLjEgMjYuMy0xMC43IDMyLjJzLTI2LjMgMS4xLTMyLjItMTAuN2wtOS40LTE4LjlIMTUwLjlsLTkuNCAxOC45Yy01LjkgMTEuOS0yMC4zIDE2LjctMzIuMiAxMC43cy0xNi43LTIwLjMtMTAuNy0zMi4ybDcyLTE0NGM0LjEtOC4xIDEyLjQtMTMuMyAyMS41LTEzLjNzMTcuNCA1LjEgMjEuNSAxMy4zem0tLjQgMTA2LjZMMTkyIDIzNy43bC0yMS4xIDQyLjJoNDIuMnpNMzA0IDE4NGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg1NmM1MyAwIDk2IDQzIDk2IDk2cy00MyA5Ni05NiA5NkgzMjhjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE4NHptNDggMjR2OTZoMzJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDhIMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdXN0cmFsU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTMuNSA1MS43QzI0OC42IDM5LjggMjM2LjkgMzIgMjI0IDMycy0yNC42IDcuOC0yOS41IDE5LjdMMTIyLjcgMjI0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDk2TDgyLjcgMzIwSDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDU2TDM0LjUgNDM1LjdjLTYuOCAxNi4zIC45IDM1IDE3LjIgNDEuOHMzNS0uOSA0MS44LTE3LjJMMTI1LjMgMzg0SDMyMi43bDMxLjggNzYuM2M2LjggMTYuMyAyNS41IDI0IDQxLjggMTcuMnMyNC0yNS41IDE3LjItNDEuOEwzOTIgMzg0aDI0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM2NS4zTDM1MiAyODhoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzI1LjNMMjUzLjUgNTEuN3pNMjU2IDIyNEgxOTJsMzItNzYuOEwyNTYgMjI0em0tOTAuNyA2NEgyODIuN0wyOTYgMzIwSDE1MmwxMy4zLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzMuOCA1LjVjMTEtNy4zIDI1LjQtNy4zIDM2LjQgMEwyMjggMTcuMmM2IDMuOSAxMyA1LjggMjAuMSA1LjRsMjEuMy0xLjNjMTMuMi0uOCAyNS42IDYuNCAzMS41IDE4LjJsOS42IDE5LjFjMy4yIDYuNCA4LjQgMTEuNSAxNC43IDE0LjdMMzQ0LjUgODNjMTEuOCA1LjkgMTkgMTguMyAxOC4yIDMxLjVsLTEuMyAyMS4zYy0uNCA3LjEgMS41IDE0LjIgNS40IDIwLjFsMTEuOCAxNy44YzcuMyAxMSA3LjMgMjUuNCAwIDM2LjRMMzY2LjggMjI4Yy0zLjkgNi01LjggMTMtNS40IDIwLjFsMS4zIDIxLjNjLjggMTMuMi02LjQgMjUuNi0xOC4yIDMxLjVsLTE5LjEgOS42Yy02LjQgMy4yLTExLjUgOC40LTE0LjcgMTQuN0wzMDEgMzQ0LjVjLTUuOSAxMS44LTE4LjMgMTktMzEuNSAxOC4ybC0yMS4zLTEuM2MtNy4xLS40LTE0LjIgMS41LTIwLjEgNS40bC0xNy44IDExLjhjLTExIDcuMy0yNS40IDcuMy0zNi40IDBMMTU2IDM2Ni44Yy02LTMuOS0xMy01LjgtMjAuMS01LjRsLTIxLjMgMS4zYy0xMy4yIC44LTI1LjYtNi40LTMxLjUtMTguMmwtOS42LTE5LjFjLTMuMi02LjQtOC40LTExLjUtMTQuNy0xNC43TDM5LjUgMzAxYy0xMS44LTUuOS0xOS0xOC4zLTE4LjItMzEuNWwxLjMtMjEuM2MuNC03LjEtMS41LTE0LjItNS40LTIwLjFMNS41IDIxMC4yYy03LjMtMTEtNy4zLTI1LjQgMC0zNi40TDE3LjIgMTU2YzMuOS02IDUuOC0xMyA1LjQtMjAuMWwtMS4zLTIxLjNjLS44LTEzLjIgNi40LTI1LjYgMTguMi0zMS41bDE5LjEtOS42QzY1IDcwLjIgNzAuMiA2NSA3My40IDU4LjZMODMgMzkuNWM1LjktMTEuOCAxOC4zLTE5IDMxLjUtMTguMmwyMS4zIDEuM2M3LjEgLjQgMTQuMi0xLjUgMjAuMS01LjRMMTczLjggNS41ek0yNzIgMTkyYTgwIDgwIDAgMSAwIC0xNjAgMCA4MCA4MCAwIDEgMCAxNjAgMHpNMS4zIDQ0MS44TDQ0LjQgMzM5LjNjLjIgLjEgLjMgLjIgLjQgLjRsOS42IDE5LjFjMTEuNyAyMy4yIDM2IDM3LjMgNjIgMzUuOGwyMS4zLTEuM2MuMiAwIC41IDAgLjcgLjJsMTcuOCAxMS44YzUuMSAzLjMgMTAuNSA1LjkgMTYuMSA3LjdsLTM3LjYgODkuM2MtMi4zIDUuNS03LjQgOS4yLTEzLjMgOS43cy0xMS42LTIuMi0xNC44LTcuMkw3NC40IDQ1NS41bC01Ni4xIDguM2MtNS43IC44LTExLjQtMS41LTE1LTZzLTQuMy0xMC43LTIuMS0xNnptMjQ4IDYwLjRMMjExLjcgNDEzYzUuNi0xLjggMTEtNC4zIDE2LjEtNy43bDE3LjgtMTEuOGMuMi0uMSAuNC0uMiAuNy0uMmwyMS4zIDEuM2MyNiAxLjUgNTAuMy0xMi42IDYyLTM1LjhsOS42LTE5LjFjLjEtLjIgLjItLjMgLjQtLjRsNDMuMiAxMDIuNWMyLjIgNS4zIDEuNCAxMS40LTIuMSAxNnMtOS4zIDYuOS0xNSA2bC01Ni4xLTguMy0zMi4yIDQ5LjJjLTMuMiA1LTguOSA3LjctMTQuOCA3LjJzLTExLTQuMy0xMy4zLTkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjI1NiA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMTkyYzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4YzAtNDYuNS0yNC44LTg3LjMtNjItMTA5LjdjMTguNy0yMi4zIDMwLTUxIDMwLTgyLjNjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhINjR6bTk2IDE5Mkg2NFY5Nmg5NmMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NHpNNjQgMjg4aDk2IDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0SDY0VjI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFieUNhcnJpYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAxOTJILjFDMi43IDExNy45IDQxLjMgNTIuOSA5OSAxNC4xYzEzLjMtOC45IDMwLjgtNC4zIDM5LjkgOC44TDI1NiAxOTJ6bTEyOC0zMmMwLTM1LjMgMjguNy02NCA2NC02NGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIgMHY2NGMwIDI1LjItNS44IDUwLjItMTcgNzMuNXMtMjcuOCA0NC41LTQ4LjYgNjIuM3MtNDUuNSAzMi03Mi43IDQxLjZTMjUzLjQgNDE2IDIyNCA0MTZzLTU4LjUtNS04NS43LTE0LjZzLTUxLjktMjMuOC03Mi43LTQxLjZzLTM3LjMtMzktNDguNi02Mi4zUzAgMjQ5LjIgMCAyMjRsMjI0IDAgMTYwIDBWMTYwek04MCA0MTZhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2em0yNDAgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFieSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTIgODhhNzIgNzIgMCAxIDEgMTQ0IDBBNzIgNzIgMCAxIDEgMTUyIDg4ek0zOS43IDE0NC41YzEzLTE3LjkgMzgtMjEuOCA1NS45LTguOEwxMzEuOCAxNjJjMjYuOCAxOS41IDU5LjEgMzAgOTIuMiAzMHM2NS40LTEwLjUgOTIuMi0zMGwzNi4yLTI2LjRjMTcuOS0xMyA0Mi45LTkgNTUuOSA4LjhzOSA0Mi45LTguOCA1NS45bC0zNi4yIDI2LjRjLTEzLjYgOS45LTI4LjEgMTguMi00My4zIDI1VjI4OEgxMjhWMjUxLjdjLTE1LjItNi43LTI5LjctMTUuMS00My4zLTI1TDQ4LjUgMjAwLjNjLTE3LjktMTMtMjEuOC0zOC04LjgtNTUuOXptODkuOCAxODQuOGw2MC42IDUzLTI2IDM3LjIgMjQuMyAyNC4zYzE1LjYgMTUuNiAxNS42IDQwLjkgMCA1Ni42cy00MC45IDE1LjYtNTYuNiAwbC00OC00OEM3MCA0MzguNiA2OC4xIDQxNyA3OS4yIDQwMS4xbDUwLjItNzEuOHptMTI4LjUgNTNsNjAuNi01MyA1MC4yIDcxLjhjMTEuMSAxNS45IDkuMiAzNy41LTQuNSA1MS4ybC00OCA0OGMtMTUuNiAxNS42LTQwLjkgMTUuNi01Ni42IDBzLTE1LjYtNDAuOSAwLTU2LjZMMjg0IDQxOS40bC0yNi0zNy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWNrd2FyZEZhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDkzLjYgNDQ1Yy0xMS4yIDUuMy0yNC41IDMuNi0zNC4xLTQuNEwyODggMjk3LjdWNDE2YzAgMTIuNC03LjIgMjMuNy0xOC40IDI5cy0yNC41IDMuNi0zNC4xLTQuNEw2NCAyOTcuN1Y0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWOTZDMCA3OC4zIDE0LjMgNjQgMzIgNjRzMzIgMTQuMyAzMiAzMlYyMTQuM0wyMzUuNSA3MS40YzkuNS03LjkgMjIuOC05LjcgMzQuMS00LjRTMjg4IDgzLjYgMjg4IDk2VjIxNC4zTDQ1OS41IDcxLjRjOS41LTcuOSAyMi44LTkuNyAzNC4xLTQuNFM1MTIgODMuNiA1MTIgOTZWNDE2YzAgMTIuNC03LjIgMjMuNy0xOC40IDI5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWNrd2FyZFN0ZXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY3LjUgNDQwLjZjOS41IDcuOSAyMi44IDkuNyAzNC4xIDQuNHMxOC40LTE2LjYgMTguNC0yOVY5NmMwLTEyLjQtNy4yLTIzLjctMTguNC0yOXMtMjQuNS0zLjYtMzQuMSA0LjRsLTE5MiAxNjBMNjQgMjQxVjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNzguMyAwIDk2VjQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI3MWwxMS41IDkuNiAxOTIgMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWNrd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTkuNSA0NDAuNmM5LjUgNy45IDIyLjggOS43IDM0LjEgNC40czE4LjQtMTYuNiAxOC40LTI5Vjk2YzAtMTIuNC03LjItMjMuNy0xOC40LTI5cy0yNC41LTMuNi0zNC4xIDQuNEwyODggMjE0LjNWMjU2djQxLjdMNDU5LjUgNDQwLjZ6TTI1NiAzNTJWMjU2IDEyOCA5NmMwLTEyLjQtNy4yLTIzLjctMTguNC0yOXMtMjQuNS0zLjYtMzQuMSA0LjRsLTE5MiAxNjBDNC4yIDIzNy41IDAgMjQ2LjUgMCAyNTZzNC4yIDE4LjUgMTEuNSAyNC42bDE5MiAxNjBjOS41IDcuOSAyMi44IDkuNyAzNC4xIDQuNHMxOC40LTE2LjYgMTguNC0yOVYzNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhY29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOS4yIDEuMmMxMS4yLTMuMiAyMy4yLS4xIDMxLjQgOC4xTDUxOCA1Ni43bC0yNi41IDcuOWMtNTggMTYuNi05OC4xIDM5LjYtMTI5LjYgNjcuNGMtMzEuMiAyNy41LTUzLjIgNTkuMS03NS4xIDkwLjlsLTIuMyAzLjNDMjQxLjYgMjg4LjcgMTk1IDM1Ni42IDcyLjggNDE3LjdMMzcuOSA0MzUuMiA5LjQgNDA2LjZjLTcuMy03LjMtMTAuNi0xNy42LTktMjcuOHM4LjEtMTguOSAxNy4zLTIzLjVDMTM2LjEgMjk2LjIgMTgwLjkgMjMxIDIyMy4zIDE2OS4zbDIuMy0zLjRjMjEuOC0zMS44IDQ0LjktNjQuOSA3Ny43LTkzLjljMzMuNC0yOS41IDc1LjgtNTMuNiAxMzUuOS03MC44ek02MS44IDQ1OWwyNS40LTEyLjdjMTI5LjUtNjQuNyAxNzkuOS0xMzguMSAyMjMuOC0yMDJsMi4yLTMuM2MyMi4xLTMyLjEgNDIuMS02MC41IDY5LjktODUuMWMyNy41LTI0LjMgNjMuNC00NS4yIDExNy4zLTYwLjZsMCAwIC4yLS4xIDQzLjEtMTIuOSAyMyAyM2M4IDggMTEuMiAxOS43IDguMyAzMC43cy0xMS4zIDE5LjYtMjIuMiAyMi43Yy01MS45IDE0LjgtODUuNiAzNC43LTExMS4xIDU3LjJjLTI2LjEgMjMtNDUuMSA0OS45LTY3LjMgODIuMWwtMi4yIDMuMkMzMjcuOCAzNjUuOSAyNzUuNSA0NDIgMTQyLjMgNTA4LjZjLTEyLjMgNi4yLTI3LjIgMy43LTM2LjktNkw2MS44IDQ1OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFjdGVyaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0LjkgLjdjLTkuNi0yLjctMTkuNSAyLjgtMjIuMyAxMi40bC00LjMgMTUuMmMtOC4zLS42LTE2LjggMC0yNS4yIDEuOWMtNy4zIDEuNy0xNC4zIDMuNS0yMS4xIDUuNWwtNS41LTEyLjdjLTMuOS05LjEtMTQuNS0xMy40LTIzLjYtOS41cy0xMy40IDE0LjUtOS41IDIzLjZsNC40IDEwLjRjLTE2LjYgNi43LTMxLjcgMTQuNC00NS40IDIyLjhMMTQ3IDYyYy01LjUtOC4zLTE2LjctMTAuNS0yNS01cy0xMC41IDE2LjctNSAyNWw2IDljLTEzLjcgMTEtMjUuNSAyMi44LTM1LjggMzQuOWwtMTAtOGMtNy44LTYuMi0xOS4xLTUtMjUuMyAyLjhzLTUgMTkuMSAyLjggMjUuM0w2NS45IDE1NWMtMS44IDIuOC0zLjUgNS43LTUuMSA4LjVjLTYuNiAxMS40LTExLjggMjIuNi0xNiAzM2wtOC0zLjJjLTkuMi0zLjctMTkuNyAuOC0yMy40IDEwcy44IDE5LjcgMTAgMjMuNGwxMC40IDQuMmMtLjIgLjgtLjQgMS41LS41IDIuM2MtMi4yIDkuMy0zLjQgMTcuMy00LjEgMjMuNGMtLjQgMy4xLS42IDUuNy0uOCA3LjhjLS4xIDEuMS0uMSAyLS4yIDIuOGwtLjEgMS4xIDAgLjUgMCAuMiAwIC4xYzAgMCAwIC4xIDI5LjEgMWwtLjEgMEwyOCAyNjkuM2MtLjEgMy4xIDAgNi4xIC4yIDkuMWwtMTUuMiA0LjNDMy41IDI4NS40LTIgMjk1LjQgLjcgMzA0LjlzMTIuNyAxNS4xIDIyLjMgMTIuNGwxNS42LTQuNWM3LjYgMTMuNiAxOC45IDI1IDMyLjYgMzIuNkw2Ni43IDM2MWMtMi43IDkuNiAyLjggMTkuNSAxMi40IDIyLjNzMTkuNS0yLjggMjIuMy0xMi40bDQuMy0xNS4yYzEuMiAuMSAyLjQgLjIgMy42IC4yYzE1LjYgLjUgMzAuMy0zLjMgNDMtMTAuMmw5IDljNyA3IDE4LjQgNyAyNS41IDBzNy0xOC40IDAtMjUuNWwtNy4yLTcuMmM5LjMtMTIuNiAxNS4yLTI3LjggMTYuMy00NC41bDcuMSAzYzkuMSAzLjkgMTkuNy0uMyAyMy42LTkuNXMtLjMtMTkuNy05LjUtMjMuNmwtOC42LTMuN2M2LjQtOS45IDE3LjMtMjIuNCAzNi45LTMzLjNsMS4zIDQuNGMyLjcgOS42IDEyLjcgMTUuMSAyMi4zIDEyLjRzMTUuMS0xMi43IDEyLjQtMjIuM2wtMi4zLTguMWMzLjgtMS4xIDcuNy0yLjEgMTEuOS0zLjFjMTEuNi0yLjcgMjIuMS03LjcgMzEuMS0xNC40bDcuMiA3LjJjNyA3IDE4LjQgNyAyNS41IDBzNy0xOC40IDAtMjUuNWwtOS05YzcuNi0xMy45IDExLjMtMzAuMSAxMC4xLTQ2LjZsMTUuMi00LjNjOS42LTIuNyAxNS4xLTEyLjcgMTIuNC0yMi4zUzM3MC42IDY0IDM2MSA2Ni43bC0xNS42IDQuNWMtNy43LTEzLjktMTkuMS0yNS4xLTMyLjYtMzIuNmw0LjUtMTUuNmMyLjctOS42LTIuOC0xOS41LTEyLjQtMjIuM3pNMTEyIDI3MmwtNDgtMS41IDAgMGMxMS43IC40IDI3LjMgLjkgNDggMS42em0xNi04MGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTY0LTQ4YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6TTMyMi43IDQ4OWMtMi43IDkuNiAyLjggMTkuNSAxMi40IDIyLjNzMTkuNS0yLjggMjIuMi0xMi40bDQuMy0xNS4yYzguMyAuNiAxNi44IDAgMjUuMi0xLjljNy4zLTEuNyAxNC4zLTMuNSAyMS4xLTUuNWw1LjUgMTIuN2MzLjkgOS4xIDE0LjUgMTMuNCAyMy42IDkuNXMxMy40LTE0LjUgOS41LTIzLjZsLTQuNC0xMC40YzE2LjYtNi43IDMxLjctMTQuNCA0NS40LTIyLjhMNDkzIDQ1MGM1LjUgOC4zIDE2LjcgMTAuNSAyNSA1czEwLjUtMTYuNyA1LTI1bC02LTljMTMuNy0xMSAyNS41LTIyLjggMzUuOC0zNC45bDEwIDhjNy44IDYuMiAxOS4xIDUgMjUuMy0yLjhzNS0xOS4xLTIuOC0yNS4zTDU3NC4xIDM1N2MxLjgtMi44IDMuNS01LjcgNS4xLTguNWM2LjYtMTEuNCAxMS44LTIyLjYgMTYtMzNsOCAzLjJjOS4yIDMuNyAxOS43LS44IDIzLjQtMTBzLS44LTE5LjctMTAtMjMuNGwtMTAuNC00LjJjLjItLjggLjQtMS41IC41LTIuM2MyLjItOS4zIDMuNC0xNy4zIDQuMS0yMy40Yy40LTMuMSAuNi01LjcgLjgtNy44Yy4xLTEuMSAuMS0yIC4yLTIuOGwuMS0xLjEgMC0uNSAwLS4yIDAtLjFjMCAwIDAtLjEtMjkuMS0xbC4xIDAgMjkuMSAuOWMuMS0zLjEgMC02LjEtLjItOS4xbDE1LjItNC4zYzkuNi0yLjcgMTUuMS0xMi43IDEyLjQtMjIuM3MtMTIuNy0xNS4xLTIyLjMtMTIuNGwtMTUuNiA0LjVjLTcuNi0xMy42LTE4LjktMjUtMzIuNi0zMi42bDQuNS0xNS42YzIuNy05LjYtMi44LTE5LjUtMTIuNC0yMi4zcy0xOS41IDIuOC0yMi4zIDEyLjRsLTQuMyAxNS4yYy0xLjItLjEtMi40LS4yLTMuNi0uMmMtMTUuNi0uNS0zMC4zIDMuMy00MyAxMC4ybC05LTljLTctNy0xOC40LTctMjUuNSAwcy03IDE4LjQgMCAyNS41bDcuMiA3LjJjLTkuMyAxMi42LTE1LjIgMjcuOC0xNi4zIDQ0LjVsLTcuMS0zYy05LjEtMy45LTE5LjcgLjMtMjMuNiA5LjVzLjMgMTkuNyA5LjUgMjMuNmw4LjYgMy43Yy02LjQgOS45LTE3LjMgMjIuNC0zNi45IDMzLjNsLTEuMy00LjRjLTIuNy05LjYtMTIuNy0xNS4xLTIyLjMtMTIuNHMtMTUuMSAxMi43LTEyLjQgMjIuM2wyLjMgOC4xYy0zLjggMS4xLTcuNyAyLjEtMTEuOSAzLjFjLTExLjYgMi43LTIyLjEgNy43LTMxLjEgMTQuNGwtNy4yLTcuMmMtNy03LTE4LjQtNy0yNS41IDBzLTcgMTguNCAwIDI1LjVsOSA5Yy03LjYgMTMuOS0xMS4zIDMwLjEtMTAuMSA0Ni42bC0xNS4yIDQuM2MtOS42IDIuNy0xNS4xIDEyLjctMTIuNCAyMi4yczEyLjcgMTUuMSAyMi4zIDEyLjRsMTUuNi00LjVjNy43IDEzLjkgMTkuMSAyNS4xIDMyLjYgMzIuNkwzMjIuNyA0ODl6TTU3NiAyNDEuNWwwIDBjLTExLjctLjQtMjcuMy0uOS00OC0xLjZsNDggMS41ek00NDggMzg0YTMyIDMyIDAgMSAxIC02NCAwIDMyIDMyIDAgMSAxIDY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhY3Rlcml1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjMuMSAzMC42YzMuNi0xMi43LTMuNy0yNi0xNi41LTI5LjdzLTI2IDMuNy0yOS43IDE2LjVsLTQuMiAxNC43Yy05LjgtLjQtMTkuOSAuNS0yOS45IDIuOGMtMTIuMSAyLjgtMjMuNyA1LjktMzQuOSA5LjRsLTUuOS0xMy43Yy01LjItMTIuMi0xOS4zLTE3LjgtMzEuNS0xMi42cy0xNy44IDE5LjMtMTIuNiAzMS41bDQuOSAxMS4zYy0yMiA5LjQtNDIgMjAuMS02MC4yIDMxLjhMMTk2IDgyLjdjLTcuNC0xMS0yMi4zLTE0LTMzLjMtNi43cy0xNCAyMi4zLTYuNyAzMy4zbDcuOCAxMS42Yy0xOCAxNS0zMy43IDMwLjgtNDcuMyA0Ny4xTDEwMyAxNTcuM2MtMTAuNC04LjMtMjUuNS02LjYtMzMuNyAzLjdzLTYuNiAyNS41IDMuNyAzMy43bDE1IDEyYy0yLjEgMy4yLTQuMSA2LjUtNiA5LjdjLTkuNCAxNS43LTE3IDMxLTIzLjIgNDUuM2wtOS45LTMuOWMtMTIuMy00LjktMjYuMyAxLjEtMzEuMiAxMy40czEuMSAyNi4zIDEzLjQgMzEuMmwxMS42IDQuNmMtLjMgMS4xLS42IDIuMS0uOSAzLjFjLTMuNSAxMi41LTUuNyAyMy4yLTcuMSAzMS4zYy0uNyA0LjEtMS4yIDcuNS0xLjYgMTAuM2MtLjIgMS40LS4zIDIuNi0uNCAzLjZsLS4xIDEuNC0uMSAuNiAwIC4zIDAgLjFjMCAwIDAgLjEgMzkuMiAzLjdsMCAwLTM5LjItMy42Yy0uNSA1LS42IDEwLS40IDE0LjlsLTE0LjcgNC4yQzQuNyAzODAuNi0yLjcgMzkzLjggLjkgNDA2LjZzMTYuOSAyMC4xIDI5LjcgMTYuNWwxMy44LTMuOWMxMC42IDIwLjcgMjcuNiAzNy44IDQ4LjUgNDguNWwtMy45IDEzLjdjLTMuNiAxMi43IDMuNyAyNiAxNi41IDI5LjdzMjYtMy43IDI5LjctMTYuNWw0LjItMTQuN2MyMy44IDEgNDYuMy01LjUgNjUuMS0xNy42TDIxNSA0NzNjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC0xMC42LTEwLjZjOS4xLTE0LjEgMTUuMS0zMC41IDE3LTQ4LjNsLjEtLjhjLjMtMS43IDEtNS4xIDIuMy05LjhsLjItLjggMTIuNiA1LjRjMTIuMiA1LjIgMjYuMy0uNCAzMS41LTEyLjZzLS40LTI2LjMtMTIuNi0zMS41bC0xMS4zLTQuOGM5LjktMTQuOSAyNC45LTMxLjYgNDguNi00NmwyLjEgNy41YzMuNiAxMi43IDE2LjkgMjAuMSAyOS43IDE2LjVzMjAuMS0xNi45IDE2LjUtMjkuN0wzNzEgMjU5LjJjNi45LTIuMiAxNC4zLTQuMyAyMi4yLTYuMWMxMi45LTMgMjQuNy04IDM1LjItMTQuOEw0MzkgMjQ5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtMTAuNi0xMC42YzEyLjItMTkgMTguNi00MS42IDE3LjYtNjUuMWwxNC43LTQuMmMxMi43LTMuNiAyMC4xLTE2LjkgMTYuNS0yOS43cy0xNi45LTIwLjEtMjkuNy0xNi41bC0xMy43IDMuOWMtMTAuOC0yMS4yLTI4LTM4LTQ4LjUtNDguNWwzLjktMTMuOHpNOTIuMSAzNjMuM2wwIDBMMTQ0IDM2OGwtNTEuOS00Ljd6TTExMiAzMjBhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMjQwIDE4NGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhZ1Nob3BwaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCAxMTJjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHY0OEgxNjBWMTEyem0tNDggNDhINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjQxNmMwIDUzIDQzIDk2IDk2IDk2SDM1MmM1MyAwIDk2LTQzIDk2LTk2VjIwOGMwLTI2LjUtMjEuNS00OC00OC00OEgzMzZWMTEyQzMzNiA1MC4xIDI4NS45IDAgMjI0IDBTMTEyIDUwLjEgMTEyIDExMnY0OHptMjQgNDhhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0xNTIgMjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFoYWkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBjMTQuNSAwIDI3LjIgOS43IDMwLjkgMjMuOGwyMy45IDg5LjYgNzUuOS01My4zYzExLjktOC4zIDI3LjgtNy42IDM5IDEuN3MxNC42IDI0LjkgOC40IDM4LjFsLTM5LjMgODQgOTIuNCA4YzE0LjQgMS4yIDI2LjIgMTIgMjguOCAyNi4zcy00LjkgMjguNS0xOCAzNC42bC04NC4xIDM5LjEgNjUuNyA2NS41YzEwLjMgMTAuMiAxMi40IDI2LjEgNS4xIDM4LjdzLTIyIDE4LjctMzYgMTQuOUwzOTEgMzg2LjhsOC4yIDkyLjRjMS4zIDE0LjQtNy4zIDI3LjktMjAuOSAzMi45cy0yOC45IC4xLTM3LjItMTEuN2wtNTMuMS03Ni01My4xIDc2Yy04LjMgMTEuOS0yMy42IDE2LjctMzcuMiAxMS43cy0yMi4yLTE4LjUtMjAuOS0zMi45bDguMi05Mi40TDk1LjQgNDEwLjljLTE0IDMuOC0yOC44LTIuMy0zNi0xNC45cy01LjItMjguNCA1LjEtMzguN2w2NS43LTY1LjVMNDYgMjUyLjdjLTEzLjEtNi4xLTIwLjUtMjAuMy0xOC0zNC42czE0LjMtMjUuMSAyOC44LTI2LjNsOTIuNC04LTM5LjMtODRjLTYuMS0xMy4xLTIuNy0yOC44IDguNC0zOC4xczI3LjEtMTAgMzktMS43bDc1LjkgNTMuMyAyMy45LTg5LjZDMjYwLjggOS43IDI3My41IDAgMjg4IDB6bTAgMTU2LjJsLTQuOCAxOGMtMi43IDEwLjEtMTAuMiAxOC4yLTIwIDIxLjhzLTIwLjggMi4xLTI5LjMtMy45bC0xNS4yLTEwLjcgNy45IDE2LjhjNC40IDkuNSA0IDIwLjUtMS4zIDI5LjZzLTE0LjUgMTUtMjUgMTUuOWwtMTguNSAxLjYgMTYuOCA3LjhjOS41IDQuNCAxNi4yIDEzLjIgMTggMjMuNXMtMS41IDIwLjgtOC45IDI4LjJsLTEzLjIgMTMuMSAxNy45LTQuOGMxMC4xLTIuNyAyMC45LS4zIDI4LjkgNi40czEyLjIgMTYuOSAxMS4zIDI3LjNsLTEuNiAxOC41IDEwLjYtMTUuMmM2LTguNiAxNS44LTEzLjcgMjYuMi0xMy43czIwLjIgNS4xIDI2LjIgMTMuN2wxMC42IDE1LjItMS42LTE4LjVjLS45LTEwLjQgMy4zLTIwLjYgMTEuMy0yNy4zczE4LjgtOS4xIDI4LjktNi40bDE3LjkgNC44LTEzLjItMTMuMWMtNy40LTcuNC0xMC43LTE3LjktOC45LTI4LjJzOC41LTE5LjEgMTgtMjMuNWwxNi44LTcuOC0xOC41LTEuNmMtMTAuNC0uOS0xOS43LTYuOC0yNS0xNS45cy01LjctMjAuMS0xLjMtMjkuNmw3LjktMTYuOC0xNS4yIDEwLjdjLTguNiA2LTE5LjUgNy41LTI5LjMgMy45cy0xNy4zLTExLjctMjAtMjEuOGwtNC44LTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWh0U2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNjRIMzcuNkMxNi44IDY0IDAgODAuOCAwIDEwMS42VjIyNHY0MS43VjI4OCA0MDYuM2MwIDIzIDE4LjcgNDEuNyA0MS43IDQxLjdIMTEydjMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDQ4aDMyYzYxLjkgMCAxMTItNTAuMSAxMTItMTEyYzAtNDAuMS0yMS4xLTc1LjMtNTIuNy05NS4xQzI4MC4zIDIyMi42IDI4OCAyMDAuMiAyODggMTc2YzAtNjEuOS01MC4xLTExMi0xMTItMTEyVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0xMTIgMTI4djk2SDY0VjEyOGg0OHptNjQgOTZWMTI4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4em0tNjQgNjR2OTZINjRWMjg4aDQ4em02NCA5NlYyODhoMzJjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDhIMTc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYW5TbW9raW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk5LjUgMTQ0LjhMMTc4LjcgMjI0bDk2IDk2IDkyLjUgOTIuNUMzMzUuOSA0MzQuOSAyOTcuNSA0NDggMjU2IDQ0OEMxNTAgNDQ4IDY0IDM2MiA2NCAyNTZjMC00MS41IDEzLjEtNzkuOSAzNS41LTExMS4yek0zMzMuMyAyODhsLTMyLTMySDM4NHYzMkgzMzMuM3ptMzIgMzJINDAwYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDI2OS4zTDE0NC44IDk5LjVDMTc2LjEgNzcuMSAyMTQuNSA2NCAyNTYgNjRjMTA2IDAgMTkyIDg2IDE5MiAxOTJjMCA0MS41LTEzLjEgNzkuOS0zNS41IDExMS4yTDM2NS4zIDMyMHpNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTI3MiA5NmMtOC44IDAtMTYgNy4yLTE2IDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDMyYzguOCAwIDE2IDcuMiAxNiAxNnM3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDMwNGMtOC44IDAtMTYtNy4yLTE2LTE2cy03LjItMTYtMTYtMTZ6TTIyOS41IDMyMGwtOTYtOTZIMTEyYy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2SDIyOS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY3LjIgNDEyLjVMOTkuNSAxNDQuOEM3Ny4xIDE3Ni4xIDY0IDIxNC41IDY0IDI1NmMwIDEwNiA4NiAxOTIgMTkyIDE5MmM0MS41IDAgNzkuOS0xMy4xIDExMS4yLTM1LjV6bTQ1LjMtNDUuM0M0MzQuOSAzMzUuOSA0NDggMjk3LjUgNDQ4IDI1NmMwLTEwNi04Ni0xOTItMTkyLTE5MmMtNDEuNSAwLTc5LjkgMTMuMS0xMTEuMiAzNS41TDQxMi41IDM2Ny4yek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbmRhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDQxNmg5NmMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBjMC0zNS4zLTI4LjctNjQtNjQtNjRINDgwVjQxNnpNNDQ4IDk2SDE5MlY0MTZINDQ4Vjk2ek02NCA5NkMyOC43IDk2IDAgMTI0LjcgMCAxNjBWMzUyYzAgMzUuMyAyOC43IDY0IDY0IDY0aDk2Vjk2SDY0ek0yNDggMjA4YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6bTEyMC0yNGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6TTI0OCAzMDRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTIwLTI0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFuZ2xhZGVzaGlUYWthU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNiAzMi4yQzE4LjQgMzAuMSAyLjQgNDIuNSAuMiA2MFMxMC41IDkzLjYgMjggOTUuOGw3LjkgMWMxNiAyIDI4IDE1LjYgMjggMzEuOFYxNjBIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjRWMzg0YzAgNTMgNDMgOTYgOTYgOTZoMzJjMTA2IDAgMTkyLTg2IDE5Mi0xOTJWMjU2YzAtNTMtNDMtOTYtOTYtOTZIMjcyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjMyYzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4SDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjI0aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDEyOFYxMjguNWMwLTQ4LjQtMzYuMS04OS4zLTg0LjEtOTUuM2wtNy45LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhcmNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgMzJDMTAuNyAzMiAwIDQyLjcgMCA1NlY0NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRINDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjR6bTg4IDBjLTguOCAwLTE2IDcuMi0xNiAxNlY0NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlY0OGMwLTguOC03LjItMTYtMTYtMTZ6bTcyIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0VjQ1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgxODR6bTk2IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0VjQ1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgyODB6TTQ0OCA1NlY0NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRINDcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptLTY0LThWNDY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWNDhjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhcnNQcm9ncmVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMTYwSDMyMFYxMjhINDQ4djMyek00OCA2NEMyMS41IDY0IDAgODUuNSAwIDExMnY2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0NjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek00NDggMzUydjMySDE5MlYzNTJINDQ4ek00OCAyODhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDQ2NGMyNi41IDAgNDgtMjEuNSA0OC00OFYzMzZjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhcnNTdGFnZ2VyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDc4LjMgMTQuMyA2NCAzMiA2NEg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJDMTQuMyAxMjggMCAxMTMuNyAwIDk2ek02NCAyNTZjMC0xNy43IDE0LjMtMzIgMzItMzJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnpNNDQ4IDQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDc4LjMgMTQuMyA2NCAzMiA2NEg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJDMTQuMyAxMjggMCAxMTMuNyAwIDk2ek0wIDI1NmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek00NDggNDE2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFzZWJhbGxCYXRCYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyNCAwYy0xMi40IDAtMjQuMiA0LjktMzMgMTMuN0wyMzMuNSAxNzEuMmMtMTAuNSAxMC41LTE5LjggMjIuMS0yNy43IDM0LjZMMTMyLjcgMzIxLjZjLTcuMyAxMS41LTE1LjggMjIuMi0yNS41IDMxLjlMNjkuOSAzOTAuN2w1MS4zIDUxLjMgMzcuMy0zNy4zYzkuNi05LjYgMjAuMy0xOC4yIDMxLjktMjUuNWwxMTUuOC03My4xYzEyLjUtNy45IDI0LjEtMTcuMiAzNC42LTI3LjdMNDk4LjMgMTIxYzguNy04LjcgMTMuNy0yMC42IDEzLjctMzNzLTQuOS0yNC4yLTEzLjctMzNMNDU3IDEzLjdDNDQ4LjIgNC45IDQzNi40IDAgNDI0IDB6bTg4IDQzMmE4MCA4MCAwIDEgMCAtMTYwIDAgODAgODAgMCAxIDAgMTYwIDB6TTE1IDM5OWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsNjQgNjRjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDQ5IDM5OWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhc2ViYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyLjcgMjIzLjRjLTQuOCAuNC05LjcgLjYtMTQuNyAuNmMtMTUuNiAwLTMwLjgtMi00NS4yLTUuOUMxOS4yIDEwNy4xIDEwNy4xIDE5LjIgMjE4LjEgMi44QzIyMiAxNy4yIDIyNCAzMi40IDIyNCA0OGMwIDQuOS0uMiA5LjgtLjYgMTQuN2MtLjcgOC44IDUuOCAxNi41IDE0LjYgMTcuM3MxNi41LTUuOCAxNy4zLTE0LjZjLjUtNS43IC43LTExLjUgLjctMTcuM2MwLTE2LjUtMS45LTMyLjYtNS42LTQ3LjljMS44IDAgMy43LS4xIDUuNi0uMUMzOTcuNCAwIDUxMiAxMTQuNiA1MTIgMjU2YzAgMS45IDAgMy43LS4xIDUuNmMtMTUuNC0zLjYtMzEuNC01LjYtNDcuOS01LjZjLTUuOCAwLTExLjYgLjItMTcuMyAuN2MtOC44IC43LTE1LjQgOC41LTE0LjYgMTcuM3M4LjUgMTUuNCAxNy4zIDE0LjZjNC44LS40IDkuNy0uNiAxNC43LS42YzE1LjYgMCAzMC44IDIgNDUuMiA1LjlDNDkyLjggNDA0LjkgNDA0LjkgNDkyLjggMjkzLjkgNTA5LjJDMjkwIDQ5NC44IDI4OCA0NzkuNiAyODggNDY0YzAtNC45IC4yLTkuOCAuNi0xNC43Yy43LTguOC01LjgtMTYuNS0xNC42LTE3LjNzLTE2LjUgNS44LTE3LjMgMTQuNmMtLjUgNS43LS43IDExLjUtLjcgMTcuM2MwIDE2LjUgMS45IDMyLjYgNS42IDQ3LjljLTEuOCAwLTMuNyAuMS01LjYgLjFDMTE0LjYgNTEyIDAgMzk3LjQgMCAyNTZjMC0xLjkgMC0zLjcgLjEtNS42QzE1LjQgMjU0LjEgMzEuNSAyNTYgNDggMjU2YzUuOCAwIDExLjYtLjIgMTcuMy0uN2M4LjgtLjcgMTUuNC04LjUgMTQuNi0xNy4zcy04LjUtMTUuNC0xNy4zLTE0LjZ6TTEyMS4zIDIwOGMtOCAzLjctMTEuNiAxMy4yLTcuOSAyMS4yczEzLjIgMTEuNiAyMS4yIDcuOWM0NS4yLTIwLjggODEuNy01Ny4yIDEwMi41LTEwMi41YzMuNy04IC4yLTE3LjUtNy45LTIxLjJzLTE3LjUtLjItMjEuMiA3LjljLTE3LjYgMzguMy00OC41IDY5LjItODYuNyA4Ni43em0yNzcuMiA3NC43Yy0zLjctOC0xMy4yLTExLjYtMjEuMi03LjljLTQ1LjIgMjAuOC04MS43IDU3LjItMTAyLjUgMTAyLjVjLTMuNyA4LS4yIDE3LjUgNy45IDIxLjJzMTcuNSAuMiAyMS4yLTcuOWMxNy42LTM4LjMgNDguNS02OS4yIDg2LjctODYuN2M4LTMuNyAxMS42LTEzLjIgNy45LTIxLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhc2tldFNob3BwaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1My4zIDM1LjFjNi4xLTExLjggMS41LTI2LjMtMTAuMi0zMi40cy0yNi4zLTEuNS0zMi40IDEwLjJMMTE3LjYgMTkySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyTDgzLjkgNDYzLjVDOTEgNDkyIDExNi42IDUxMiAxNDYgNTEySDQzMGMyOS40IDAgNTUtMjAgNjIuMS00OC41TDU0NCAyNTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDU4LjRMMzY1LjMgMTIuOUMzNTkuMiAxLjIgMzQ0LjctMy40IDMzMi45IDIuN3MtMTYuMyAyMC42LTEwLjIgMzIuNEw0MDQuMyAxOTJIMTcxLjdMMjUzLjMgMzUuMXpNMTkyIDMwNHY5NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzMDRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnptOTYtMTZjOC44IDAgMTYgNy4yIDE2IDE2djk2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjMwNGMwLTguOCA3LjItMTYgMTYtMTZ6bTEyOCAxNnY5NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzMDRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFza2V0YmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04Ni42IDY0bDg1LjIgODUuMkMxOTQuNSAxMjEuNyAyMDggODYuNCAyMDggNDhjMC0xNC43LTItMjguOS01LjctNDIuNEMxNTguNiAxNSAxMTkgMzUuNSA4Ni42IDY0ek02NCA4Ni42QzM1LjUgMTE5IDE1IDE1OC42IDUuNiAyMDIuM0MxOS4xIDIwNiAzMy4zIDIwOCA0OCAyMDhjMzguNCAwIDczLjctMTMuNSAxMDEuMy0zNi4xTDY0IDg2LjZ6TTI1NiAwYy03LjMgMC0xNC42IC4zLTIxLjggLjlDMjM4IDE2IDI0MCAzMS44IDI0MCA0OGMwIDQ3LjMtMTcuMSA5MC41LTQ1LjQgMTI0TDI1NiAyMzMuNCA0MjUuNCA2NEMzODAuMiAyNC4yIDMyMC45IDAgMjU2IDB6TTQ4IDI0MGMtMTYuMiAwLTMyLTItNDcuMS01LjhDLjMgMjQxLjQgMCAyNDguNyAwIDI1NmMwIDY0LjkgMjQuMiAxMjQuMiA2NCAxNjkuNEwyMzMuNCAyNTYgMTcyIDE5NC42QzEzOC41IDIyMi45IDk1LjMgMjQwIDQ4IDI0MHptNDYzLjEgMzcuOGMuNi03LjIgLjktMTQuNSAuOS0yMS44YzAtNjQuOS0yNC4yLTEyNC4yLTY0LTE2OS40TDI3OC42IDI1NiAzNDAgMzE3LjRjMzMuNC0yOC4zIDc2LjctNDUuNCAxMjQtNDUuNGMxNi4yIDAgMzIgMiA0Ny4xIDUuOHptLTQuNyAzMS45QzQ5Mi45IDMwNiA0NzguNyAzMDQgNDY0IDMwNGMtMzguNCAwLTczLjcgMTMuNS0xMDEuMyAzNi4xTDQ0OCA0MjUuNGMyOC41LTMyLjMgNDkuMS03MS45IDU4LjQtMTE1Ljd6TTM0MC4xIDM2Mi43QzMxNy41IDM5MC4zIDMwNCA0MjUuNiAzMDQgNDY0YzAgMTQuNyAyIDI4LjkgNS43IDQyLjRDMzUzLjQgNDk3IDM5MyA0NzYuNSA0MjUuNCA0NDhsLTg1LjItODUuMnpNMzE3LjQgMzQwTDI1NiAyNzguNiA4Ni42IDQ0OGM0NS4xIDM5LjggMTA0LjQgNjQgMTY5LjQgNjRjNy4zIDAgMTQuNi0uMyAyMS44LS45QzI3NCA0OTYgMjcyIDQ4MC4yIDI3MiA0NjRjMC00Ny4zIDE3LjEtOTAuNSA0NS40LTEyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmF0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA3Ny4zYzAtNy4zIDUuOS0xMy4zIDEzLjMtMTMuM2MzLjUgMCA2LjkgMS40IDkuNCAzLjlsMTQuOSAxNC45QzEzMCA5MS44IDEyOCAxMDEuNyAxMjggMTEyYzAgMTkuOSA3LjIgMzggMTkuMiA1MmMtNS4zIDkuMi00IDIxLjEgMy44IDI5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDI4OSA4OWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOWMtNy45LTcuOS0xOS44LTkuMS0yOS0zLjhDMjQ2IDM5LjIgMjI3LjkgMzIgMjA4IDMyYy0xMC4zIDAtMjAuMiAyLTI5LjIgNS41TDE2My45IDIyLjZDMTQ5LjQgOC4xIDEyOS43IDAgMTA5LjMgMEM2Ni42IDAgMzIgMzQuNiAzMiA3Ny4zVjI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIOTZWNzcuM3pNMzIgMzUydjE2YzAgMjguNCAxMi40IDU0IDMyIDcxLjZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDY0SDM4NHYxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQzOS42YzE5LjYtMTcuNiAzMi00My4xIDMyLTcxLjZWMzUySDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXR0ZXJ5RW1wdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgMTYwYy04LjggMC0xNiA3LjItMTYgMTZWMzM2YzAgOC44IDcuMiAxNiAxNiAxNkg0NjRjOC44IDAgMTYtNy4yIDE2LTE2VjE3NmMwLTguOC03LjItMTYtMTYtMTZIODB6TTAgMTc2YzAtNDQuMiAzNS44LTgwIDgwLTgwSDQ2NGM0NC4yIDAgODAgMzUuOCA4MCA4MHYxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnYxNmMwIDQ0LjItMzUuOCA4MC04MCA4MEg4MGMtNDQuMiAwLTgwLTM1LjgtODAtODBWMTc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXR0ZXJ5RnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMTYwYzguOCAwIDE2IDcuMiAxNiAxNlYzMzZjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMTc2YzAtOC44IDcuMi0xNiAxNi0xNkg0NjR6TTgwIDk2QzM1LjggOTYgMCAxMzEuOCAwIDE3NlYzMzZjMCA0NC4yIDM1LjggODAgODAgODBINDY0YzQ0LjIgMCA4MC0zNS44IDgwLTgwVjMyMGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJWMTc2YzAtNDQuMi0zNS44LTgwLTgwLTgwSDgwem0zNjggOTZIOTZWMzIwSDQ0OFYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAxNjBjOC44IDAgMTYgNy4yIDE2IDE2VjMzNmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2SDQ2NHpNODAgOTZDMzUuOCA5NiAwIDEzMS44IDAgMTc2VjMzNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MEg0NjRjNDQuMiAwIDgwLTM1LjggODAtODBWMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMlYxNzZjMC00NC4yLTM1LjgtODAtODAtODBIODB6bTIwOCA5Nkg5NlYzMjBIMjg4VjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmF0dGVyeVF1YXJ0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDE2MGM4LjggMCAxNiA3LjIgMTYgMTZWMzM2YzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZINDY0ek04MCA5NkMzNS44IDk2IDAgMTMxLjggMCAxNzZWMzM2YzAgNDQuMiAzNS44IDgwIDgwIDgwSDQ2NGM0NC4yIDAgODAtMzUuOCA4MC04MFYzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMyVjE3NmMwLTQ0LjItMzUuOC04MC04MC04MEg4MHptMTEyIDk2SDk2VjMyMGg5NlYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlUaHJlZVF1YXJ0ZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAxNjBjOC44IDAgMTYgNy4yIDE2IDE2VjMzNmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2SDQ2NHpNODAgOTZDMzUuOCA5NiAwIDEzMS44IDAgMTc2VjMzNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MEg0NjRjNDQuMiAwIDgwLTM1LjggODAtODBWMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMlYxNzZjMC00NC4yLTM1LjgtODAtODAtODBIODB6bTI3MiA5Nkg5NlYzMjBIMzUyVjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVkUHVsc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgzLjIgOS42TDUyNCA2NGg5MmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1MTJjLTcuNiAwLTE0LjctMy42LTE5LjItOS42TDQ2OC43IDcwLjNsLTQ3IDk5LjljLTMuNyA3LjgtMTEuMyAxMy4xLTE5LjkgMTMuN3MtMTYuOS0zLjQtMjEuNy0xMC42TDMzOS4yIDExMkgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRIMzUyYzggMCAxNS41IDQgMjAgMTAuN2wyNC40IDM2LjYgNDUuOS05Ny41QzQ0NS45IDYuMiA0NTMuMiAxIDQ2MS42IC4xczE2LjYgMi43IDIxLjYgOS41ek0zMjAgMTYwaDEyLjdsMjAuNyAzMS4xYzExLjIgMTYuOCAzMC42IDI2LjMgNTAuNyAyNC44czM3LjktMTMuNyA0Ni41LTMyTDQ2MS45IDE2MEg1NDRjNTMgMCA5NiA0MyA5NiA5NlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ4SDM1MiAzMjAgNjR2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWOTZDMCA3OC4zIDE0LjMgNjQgMzIgNjRzMzIgMTQuMyAzMiAzMlYzNTJIMjg4VjE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptLTE0NCAwYTgwIDgwIDAgMSAxIDAgMTYwIDgwIDgwIDAgMSAxIDAtMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzIwSDI4OFYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJINTQ0YzUzIDAgOTYgNDMgOTYgOTZWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQxNkgzNTIgMzIwIDY0djMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyem0xNDQgOTZhODAgODAgMCAxIDEgMCAxNjAgODAgODAgMCAxIDEgMC0xNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlZXJNdWdFbXB0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMkgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWOTZoNTEuMmM0Mi40IDAgNzYuOCAzNC40IDc2LjggNzYuOFYyNzQuOWMwIDMwLjQtMTcuOSA1Ny45LTQ1LjYgNzAuMkwzODQgMzgxLjdWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDk2Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMzg0IDMxMS42bDU2LjQtMjUuMWM0LjYtMi4xIDcuNi02LjYgNy42LTExLjdWMTcyLjhjMC03LjEtNS43LTEyLjgtMTIuOC0xMi44SDM4NFYzMTEuNnpNMTYwIDE0NGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNlYzNjhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYxNDR6bTY0IDBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWMzY4YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMTQ0em02NCAwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjM2OGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVsbENvbmNpZXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYgNjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMTZ2MzMuM0MxMTkuNiAxNTcuMiAzMiAyNTIuNCAzMiAzNjhINDgwYzAtMTE1LjYtODcuNi0yMTAuOC0yMDAtMjIyLjdWMTEyaDE2YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDI1NiAyMTZ6TTI0IDQwMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg0ODhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlbGxTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43bC05MC4yLTcwLjdjLjItLjQgLjQtLjkgLjYtMS4zYzUuMi0xMS41IDMuMS0yNS01LjMtMzQuNGwtNy40LTguM0M0OTcuMyAzMTkuMiA0ODAgMjczLjkgNDgwIDIyNi44VjIwOGMwLTc3LjQtNTUtMTQyLTEyOC0xNTYuOFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY1MS4yYy00Mi42IDguNi03OSAzNC4yLTEwMiA2OS4zTDM4LjggNS4xek00MDYuMiA0MTZMMTYwIDIyMi4xdjQuOGMwIDQ3LTE3LjMgOTIuNC00OC41IDEyNy42bC03LjQgOC4zYy04LjQgOS40LTEwLjQgMjIuOS01LjMgMzQuNFMxMTUuNCA0MTYgMTI4IDQxNkg0MDYuMnptLTQwLjkgNzcuM2MxMi0xMiAxOC43LTI4LjMgMTguNy00NS4zSDMyMCAyNTZjMCAxNyA2LjcgMzMuMyAxOC43IDQ1LjNzMjguMyAxOC43IDQ1LjMgMTguN3MzMy4zLTYuNyA0NS4zLTE4Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjUxLjJDMTE5IDY2IDY0IDEzMC42IDY0IDIwOHYxOC44YzAgNDctMTcuMyA5Mi40LTQ4LjUgMTI3LjZsLTcuNCA4LjNjLTguNCA5LjQtMTAuNCAyMi45LTUuMyAzNC40UzE5LjQgNDE2IDMyIDQxNkg0MTZjMTIuNiAwIDI0LTcuNCAyOS4yLTE4LjlzMy4xLTI1LTUuMy0zNC40bC03LjQtOC4zQzQwMS4zIDMxOS4yIDM4NCAyNzMuOSAzODQgMjI2LjhWMjA4YzAtNzcuNC01NS0xNDItMTI4LTE1Ni44VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem00NS4zIDQ5My4zYzEyLTEyIDE4LjctMjguMyAxOC43LTQ1LjNIMjI0IDE2MGMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM3MyOC4zIDE4LjcgNDUuMyAxOC43czMzLjMtNi43IDQ1LjMtMTguN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmV6aWVyQ3VydmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk2IDEzNlY4OGg0OHY0OEgyOTZ6TTI4OCAzMmMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2NEgxMjEuNkMxMTEuMiA2Mi43IDg5LjMgNDggNjQgNDhDMjguNyA0OCAwIDc2LjcgMCAxMTJzMjguNyA2NCA2NCA2NGMyNS4zIDAgNDcuMi0xNC43IDU3LjYtMzZoNjYuOWMtNTguOSAzOS42LTk4LjkgMTA1LTEwNCAxODBIODBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM2OGMwLTI2LjUtMjEuNS00OC00OC00OGgtMy4zYzUuOS02NyA0OC41LTEyMy40IDEwNy41LTE0OS4xYzguNiAxMi43IDIzLjIgMjEuMSAzOS44IDIxLjFoNjRjMTYuNiAwIDMxLjEtOC40IDM5LjgtMjEuMWM1OSAyNS43IDEwMS42IDgyLjEgMTA3LjUgMTQ5LjFINDk2Yy0yNi41IDAtNDggMjEuNS00OCA0OHY2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg2NGMyNi41IDAgNDgtMjEuNSA0OC00OFYzNjhjMC0yNi41LTIxLjUtNDgtNDgtNDhoLTQuNWMtNS03NS00NS4xLTE0MC40LTEwNC0xODBoNjYuOWMxMC40IDIxLjMgMzIuMyAzNiA1Ny42IDM2YzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0Yy0yNS4zIDAtNDcuMiAxNC43LTU3LjYgMzZINDAwVjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDI4OHpNODggMzc2aDQ4djQ4SDg4VjM3NnptNDE2IDQ4VjM3Nmg0OHY0OEg1MDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpY3ljbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEyIDMyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDI1LjdsMzQuNiA2NEgyMjIuOWwtMjcuNC0zOEMxOTEgOTkuNyAxODMuNyA5NiAxNzYgOTZIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDQzLjdsMjIuMSAzMC43LTI2LjYgNTMuMWMtMTAtMi41LTIwLjUtMy44LTMxLjItMy44QzU3LjMgMjI0IDAgMjgxLjMgMCAzNTJzNTcuMyAxMjggMTI4IDEyOGM2NS4zIDAgMTE5LjEtNDguOSAxMjctMTEyaDQ5YzguNSAwIDE2LjMtNC41IDIwLjctMTEuOGw4NC44LTE0My41IDIxLjcgNDAuMUM0MDIuNCAyNzYuMyAzODQgMzEyIDM4NCAzNTJjMCA3MC43IDU3LjMgMTI4IDEyOCAxMjhzMTI4LTU3LjMgMTI4LTEyOHMtNTcuMy0xMjgtMTI4LTEyOGMtMTMuNSAwLTI2LjUgMi4xLTM4LjcgNkwzNzUuNCA0OC44QzM2OS44IDM4LjQgMzU5IDMyIDM0Ny4yIDMySDMxMnpNNDU4LjYgMzAzLjdsMzIuMyA1OS43YzYuMyAxMS43IDIwLjkgMTYgMzIuNSA5LjdzMTYtMjAuOSA5LjctMzIuNWwtMzIuMy01OS43YzMuNi0uNiA3LjQtLjkgMTEuMi0uOWMzOS44IDAgNzIgMzIuMiA3MiA3MnMtMzIuMiA3Mi03MiA3MnMtNzItMzIuMi03Mi03MmMwLTE4LjYgNy0zNS41IDE4LjYtNDguM3pNMTMzLjIgMzY4aDY1Yy03LjMgMzIuMS0zNiA1Ni03MC4yIDU2Yy0zOS44IDAtNzItMzIuMi03Mi03MnMzMi4yLTcyIDcyLTcyYzEuNyAwIDMuNCAuMSA1LjEgLjJsLTI0LjIgNDguNWMtOSAxOC4xIDQuMSAzOS40IDI0LjMgMzkuNHptMzMuNy00OGw1MC43LTEwMS4zIDcyLjkgMTAxLjItLjEgLjFIMTY2Ljh6bTkwLjYtMTI4SDM2NS45TDMxNyAyNzQuOCAyNTcuNCAxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpbm9jdWxhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjk2SDk2VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyem02NCA5NlY0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4OC45YzAtMzQuNiA5LjQtNjguNiAyNy4yLTk4LjNDNDAuOSAyNjcuOCA0OS43IDI0Mi40IDUzIDIxNkw2MC41IDE1NmMyLTE2IDE1LjYtMjggMzEuOC0yOEgxOTJ6bTIyNy44IDBjMTYuMSAwIDI5LjggMTIgMzEuOCAyOEw0NTkgMjE2YzMuMyAyNi40IDEyLjEgNTEuOCAyNS44IDc0LjZjMTcuOCAyOS43IDI3LjIgNjMuNyAyNy4yIDk4LjNWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMySDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTI4aDk5Ljh6TTMyMCA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlY5NkgzMjBWNjR6bS0zMiA2NFYyODhIMjI0VjEyOGg2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmlvaGF6YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3My4yIDBjLTEuOCAwLTMuNSAuNy00LjggMkMxMzguNSAzMi4zIDEyMCA3NCAxMjAgMTIwYzAgMjYuMiA2IDUwLjkgMTYuNiA3M2MtMjIgMi40LTQzLjggOS4xLTY0LjIgMjAuNUMzNy45IDIzMi44IDEzLjMgMjYyLjQgLjQgMjk2Yy0uNyAxLjctLjUgMy43IC41IDUuMmMyLjIgMy43IDcuNCA0LjMgMTAuNiAxLjNDNjQuMiAyNTQuMyAxNTggMjQ1LjEgMjA1IDMyNHMtOC4xIDE1My4xLTc3LjYgMTczLjJjLTQuMiAxLjItNi4zIDUuOS00LjEgOS42YzEgMS42IDIuNiAyLjcgNC41IDNjMzYuNSA1LjkgNzUuMiAuMSAxMDkuNy0xOS4yYzIwLjQtMTEuNCAzNy40LTI2LjUgNTAuNS00My44YzEzLjEgMTcuMyAzMC4xIDMyLjQgNTAuNSA0My44YzM0LjUgMTkuMyA3My4zIDI1LjIgMTA5LjcgMTkuMmMxLjktLjMgMy41LTEuNCA0LjUtM2MyLjItMy43IC4xLTguNC00LjEtOS42QzM3OS4xIDQ3Ny4xIDMyNCA0MDMgMzcxIDMyNHMxNDAuNy02OS44IDE5My41LTIxLjRjMy4yIDIuOSA4LjQgMi4zIDEwLjYtMS4zYzEtMS42IDEuMS0zLjUgLjUtNS4yYy0xMi45LTMzLjYtMzcuNS02My4yLTcyLjEtODIuNWMtMjAuNC0xMS40LTQyLjItMTguMS02NC4yLTIwLjVDNDUwIDE3MC45IDQ1NiAxNDYuMiA0NTYgMTIwYzAtNDYtMTguNS04Ny43LTQ4LjQtMTE4Yy0xLjMtMS4zLTMtMi00LjgtMmMtNSAwLTguNCA1LjItNi43IDkuOUM0MjEuNyA4MC41IDM4NS42IDE3NiAyODggMTc2UzE1NC4zIDgwLjUgMTc5LjkgOS45YzEuNy00LjctMS42LTkuOS02LjctOS45ek0yNDAgMjcyYTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTE4MS43IDQxNy42YzYuMy0xMS44IDkuOC0yNS4xIDguNi0zOS44Yy0xOS41LTE4LTM0LTQxLjQtNDEuMi02Ny44Yy0xMi41LTguMS0yNi4yLTExLjgtNDAtMTIuNGMtOS0uNC0xOC4xIC42LTI3LjEgMi43YzcuOCA1Ny4xIDM4LjcgMTA2LjggODIuOSAxMzkuNGM2LjgtNi43IDEyLjYtMTQuMSAxNi44LTIyLjF6TTI4OCA2NGMtMjguOCAwLTU2LjMgNS45LTgxLjIgMTYuNWMyIDguMyA1IDE2LjIgOSAyMy41YzYuOCAxMi40IDE2LjcgMjMuMSAzMC4xIDMwLjNjMTMuMy00LjEgMjcuNS02LjMgNDIuMi02LjNzMjguOCAyLjIgNDIuMiA2LjNjMTMuNC03LjIgMjMuMy0xNy45IDMwLjEtMzAuM2M0LTcuMyA3LTE1LjIgOS0yMy41QzM0NC4zIDY5LjkgMzE2LjggNjQgMjg4IDY0ek00MjYuOSAzMTBjLTcuMiAyNi40LTIxLjcgNDkuNy00MS4yIDY3LjhjLTEuMiAxNC43IDIuMiAyOC4xIDguNiAzOS44YzQuMyA4IDEwIDE1LjQgMTYuOCAyMi4xYzQ0LjMtMzIuNiA3NS4yLTgyLjMgODIuOS0xMzkuNGMtOS0yLjItMTguMS0zLjEtMjcuMS0yLjdjLTEzLjggLjYtMjcuNSA0LjQtNDAgMTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQml0Y29pblNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMzJDNDggMTQuMyA2Mi4zIDAgODAgMHMzMiAxNC4zIDMyIDMyVjY0aDMyVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNjRjMCAxLjUtLjEgMy4xLS4zIDQuNUMyNTQuMSA4Mi4yIDI4OCAxMjUuMSAyODggMTc2YzAgMjQuMi03LjcgNDYuNi0yMC43IDY0LjljMzEuNyAxOS44IDUyLjcgNTUgNTIuNyA5NS4xYzAgNjEuOS01MC4xIDExMi0xMTIgMTEydjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OEgxMTJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ4SDQxLjdDMTguNyA0NDggMCA0MjkuMyAwIDQwNi4zVjI4OCAyNjUuNyAyMjQgMTAxLjZDMCA4MC44IDE2LjggNjQgMzcuNiA2NEg0OFYzMnpNNjQgMjI0SDE3NmMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OEg2NHY5NnptMTEyIDY0SDY0djk2SDIwOGMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OEgxNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsZW5kZXJQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMzUyTDE5Ni44IDUyLjNDMTk0LjIgMjQuMiAyMTYuMyAwIDI0NC42IDBINTM0LjFjMjEuMSAwIDM2LjQgMjAuMSAzMC45IDQwLjRMNTU4LjUgNjRINDAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDU0OS44bC0xNy41IDY0SDQwMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg1MjMuNmwtMTcuNSA2NEg0MDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoOTcuNUw0ODAgMzUySDIyNHptLTE2IDMySDQ5NmMyNi41IDAgNDggMjEuNSA0OCA0OHYzMmMwIDI2LjUtMjEuNSA0OC00OCA0OEgyMDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQzMmMwLTI2LjUgMjEuNS00OCA0OC00OHptMTQ0IDk2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNMTQ3LjUgMzAuN2MxMC44IDYuNyAxNS4zIDIxIDEwLjYgMzMuNGwtMjIgNTcuOGMtNC4yIDEwLjktMTQuNSAxNy42LTI1LjMgMTYuNGwtMzMuMy0zLjZjLTEzLjYgNDIuMi0xMy42IDg4LjQgMCAxMzAuN2wzMy4zLTMuNmMxMC45LTEuMiAyMS4yIDUuNSAyNS4zIDE2LjRsMjIgNTcuOGM0LjcgMTIuNCAuMiAyNi43LTEwLjYgMzMuNGwtNDQgMjcuMmMtOS43IDYtMjEuOSA0LjItMjkuOC00LjNDLTI0LjYgMjg2LTI0LjYgMTE0IDczLjcgNy44QzgxLjYtLjcgOTMuOC0yLjUgMTAzLjUgMy41bDQ0IDI3LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsZW5kZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBoNjQgMzJINDcwLjFjMjEuMSAwIDM2LjQgMjAuMSAzMC45IDQwLjRMNDk0LjUgNjRIMzM2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDQ4NS44bC0xNy41IDY0SDMzNmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg0NTkuNmwtMTcuNSA2NEgzMzZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoOTcuNUw0MTYgMzUySDE2MGwtOC43LTk2SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMTQ1LjUgMTkyTDEzMy44IDY0SDY0VjE5Mmg4MS41ek0xNDQgMzg0SDQzMmMyNi41IDAgNDggMjEuNSA0OCA0OHYzMmMwIDI2LjUtMjEuNSA0OC00OCA0OEgxNDRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQzMmMwLTI2LjUgMjEuNS00OCA0OC00OHptMTQ0IDk2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJjMTIzLjcgMCAyMjQgMTAwLjMgMjI0IDIyNGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyQzUxMiAxMjguOSAzODMuMSAwIDIyNCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnptMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmM3MC43IDAgMTI4IDU3LjMgMTI4IDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtMTA2LTg2LTE5Mi0xOTItMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNOTYgMTQ0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4UzAgMTE3LjUgMCAxNDRWMzY4YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0czE0NC02NC41IDE0NC0xNDRzLTY0LjUtMTQ0LTE0NC0xNDRIMTI4djk2aDE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4VjE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9sZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMySDgwIDk2IDIyNGM3MC43IDAgMTI4IDU3LjMgMTI4IDEyOGMwIDMxLjMtMTEuMyA2MC4xLTMwIDgyLjNjMzcuMSAyMi40IDYyIDYzLjEgNjIgMTA5LjdjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhIOTYgODAgMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDhWMjU2IDk2SDMyQzE0LjMgOTYgMCA4MS43IDAgNjR6TTIyNCAyMjRjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjRIMTEyVjIyNEgyMjR6TTExMiAyODhWNDE2SDI1NmMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NEgyMjQgMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb2x0TGlnaHRuaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2TDI4LjUgMjhjMi0xNiAxNS42LTI4IDMxLjgtMjhIMjI4LjljMTUgMCAyNy4xIDEyLjEgMjcuMSAyNy4xYzAgMy4yLS42IDYuNS0xLjcgOS41TDIwOCAxNjBIMzQ3LjNjMjAuMiAwIDM2LjcgMTYuNCAzNi43IDM2LjdjMCA3LjQtMi4yIDE0LjYtNi40IDIwLjdsLTE5Mi4yIDI4MWMtNS45IDguNi0xNS42IDEzLjctMjUuOSAxMy43aC0yLjljLTE1LjcgMC0yOC41LTEyLjgtMjguNS0yOC41YzAtMi4zIC4zLTQuNiAuOS02LjlMMTc2IDI4OEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ5LjQgNDQuNmM1LjktMTMuNyAxLjUtMjkuNy0xMC42LTM4LjVzLTI4LjYtOC0zOS45IDEuOGwtMjU2IDIyNGMtMTAgOC44LTEzLjYgMjIuOS04LjkgMzUuM1M1MC43IDI4OCA2NCAyODhIMTc1LjVMOTguNiA0NjcuNGMtNS45IDEzLjctMS41IDI5LjcgMTAuNiAzOC41czI4LjYgOCAzOS45LTEuOGwyNTYtMjI0YzEwLTguOCAxMy42LTIyLjkgOC45LTM1LjNzLTE2LjYtMjAuNy0zMC0yMC43SDI3Mi41TDM0OS40IDQ0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvbWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU5LjEgNTIuNEw0NDIuNiA2LjVDNDQwLjcgMi42IDQzNi41IDAgNDMyLjEgMHMtOC41IDIuNi0xMC40IDYuNUw0MDUuMiA1Mi40bC00NiAxNi44Yy00LjMgMS42LTcuMyA1LjktNy4yIDEwLjRjMCA0LjUgMyA4LjcgNy4yIDEwLjJsNDUuNyAxNi44IDE2LjggNDUuOGMxLjUgNC40IDUuOCA3LjUgMTAuNCA3LjVzOC45LTMuMSAxMC40LTcuNWwxNi41LTQ1LjggNDUuNy0xNi44YzQuMi0xLjUgNy4yLTUuNyA3LjItMTAuMmMwLTQuNi0zLTguOS03LjItMTAuNEw0NTkuMSA1Mi40em0tMTMyLjQgNTNjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0yLjkgMi45QzI1Ni41IDEwMC4zIDIzMi43IDk2IDIwOCA5NkM5My4xIDk2IDAgMTg5LjEgMCAzMDRTOTMuMSA1MTIgMjA4IDUxMnMyMDgtOTMuMSAyMDgtMjA4YzAtMjQuNy00LjMtNDguNS0xMi4yLTcwLjVsMi45LTIuOWMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtODAtODB6TTIwMCAxOTJjLTU3LjQgMC0xMDQgNDYuNi0xMDQgMTA0djhjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZ2LThjMC03NS4xIDYwLjktMTM2IDEzNi0xMzZoOGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTMuNyAxNDQuOGM2LjkgMTYuMyAyMC42IDMxLjIgMzguMyAzMS4ySDM4NGMxNy43IDAgMzEuNC0xNC45IDM4LjMtMzEuMkM0MzQuNCAxMTYuMSA0NjIuOSA5NiA0OTYgOTZjNDQuMiAwIDgwIDM1LjggODAgODBjMCAzMC40LTE3IDU2LjktNDIgNzAuNGMtMy42IDEuOS02IDUuNS02IDkuNnMyLjQgNy43IDYgOS42YzI1IDEzLjUgNDIgNDAgNDIgNzAuNGMwIDQ0LjItMzUuOCA4MC04MCA4MGMtMzMuMSAwLTYxLjYtMjAuMS03My43LTQ4LjhDNDE1LjQgMzUwLjkgNDAxLjcgMzM2IDM4NCAzMzZIMTkyYy0xNy43IDAtMzEuNCAxNC45LTM4LjMgMzEuMkMxNDEuNiAzOTUuOSAxMTMuMSA0MTYgODAgNDE2Yy00NC4yIDAtODAtMzUuOC04MC04MGMwLTMwLjQgMTctNTYuOSA0Mi03MC40YzMuNi0xLjkgNi01LjUgNi05LjZzLTIuNC03LjctNi05LjZDMTcgMjMyLjkgMCAyMDYuNCAwIDE3NmMwLTQ0LjIgMzUuOC04MCA4MC04MGMzMy4xIDAgNjEuNiAyMC4xIDczLjcgNDguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMjA4LjVjMCAyOS4xLTE1LjYgNTMuOS0zNy4yIDY3LjhjLTE3LjIgMTEuMS0zMS41IDI2LjEtNDEuNyA0My43SDMwMi45Yy0xMC4yLTE3LjYtMjQuNS0zMi42LTQxLjctNDMuN2MtMjEuNi0xMy45LTM3LjItMzguNy0zNy4yLTY3LjhWNjRIMTYwVjIwOC41ek0yODggNjRWMjA4LjVjMCA1LjcgMy4xIDEwLjkgNy45IDE0YzExLjIgNy4yIDIxLjUgMTUuNSAzMC45IDI0LjhMMzY2LjEgMjA4bC03LTdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwyNCAyNCAyNCAyNGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC03LTctNDMuMyA0My4zQzM3NCAzMTQuMSAzODQgMzQ3LjkgMzg0IDM4NGMwIDM5LjQtMTEuOSA3Ni4xLTMyLjIgMTA2LjVjLTkuNiAxNC40LTI2LjUgMjEuNS00My44IDIxLjVINzYuMWMtMTcuMyAwLTM0LjItNy4xLTQzLjgtMjEuNUMxMS45IDQ2MC4xIDAgNDIzLjQgMCAzODRjMC02Ny44IDM1LjEtMTI3LjMgODguMS0xNjEuNWM0LjgtMy4xIDcuOS04LjMgNy45LTE0VjY0Qzc4LjMgNjQgNjQgNDkuNyA2NCAzMlM3OC4zIDAgOTYgMGgxNkgyNzJoMTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2tBdGxhcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNDMgNDMgMCA5NiAwSDM4NGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlYzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJ2NjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0IDk2Yy01MyAwLTk2LTQzLTk2LTk2Vjk2ek02NCA0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzUyVjM4NEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTI0Ny40IDI4My44Yy0zLjcgMy43LTYuMiA0LjItNy40IDQuMnMtMy43LS41LTcuNC00LjJjLTMuOC0zLjctOC0xMC0xMS44LTE4LjljLTYuMi0xNC41LTEwLjgtMzQuMy0xMi4yLTU2LjloNjNjLTEuNSAyMi42LTYgNDIuNC0xMi4yIDU2LjljLTMuOCA4LjktOCAxNS4yLTExLjggMTguOXptNDIuNy05LjljNy4zLTE4LjMgMTItNDEuMSAxMy40LTY1LjloMzEuMWMtNC43IDI3LjktMjEuNCA1MS43LTQ0LjUgNjUuOXptMC0xNjMuOGMyMy4yIDE0LjIgMzkuOSAzOCA0NC41IDY1LjlIMzAzLjVjLTEuNC0yNC43LTYuMS00Ny41LTEzLjQtNjUuOXpNMzY4IDE5MmExMjggMTI4IDAgMSAwIC0yNTYgMCAxMjggMTI4IDAgMSAwIDI1NiAwek0xNDUuMyAyMDhoMzEuMWMxLjQgMjQuNyA2LjEgNDcuNSAxMy40IDY1LjljLTIzLjItMTQuMi0zOS45LTM4LTQ0LjUtNjUuOXptMzEuMS0zMkgxNDUuM2M0LjctMjcuOSAyMS40LTUxLjcgNDQuNS02NS45Yy03LjMgMTguMy0xMiA0MS4xLTEzLjQgNjUuOXptNTYuMS03NS44YzMuNy0zLjcgNi4yLTQuMiA3LjQtNC4yczMuNyAuNSA3LjQgNC4yYzMuOCAzLjcgOCAxMCAxMS44IDE4LjljNi4yIDE0LjUgMTAuOCAzNC4zIDEyLjIgNTYuOWgtNjNjMS41LTIyLjYgNi00Mi40IDEyLjItNTYuOWMzLjgtOC45IDgtMTUuMiAxMS44LTE4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2tCaWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwQzQzIDAgMCA0MyAwIDk2VjQxNmMwIDUzIDQzIDk2IDk2IDk2SDM4NGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMlYzODRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMzg0IDk2em0wIDM4NEgzNTJ2NjRIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6TTIwOCA4MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djQ4aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyVjMwNGMwIDguOC03LjIgMTYtMTYgMTZIMjI0Yy04LjggMC0xNi03LjItMTYtMTZWMTkySDE2MGMtOC44IDAtMTYtNy4yLTE2LTE2VjE0NGMwLTguOCA3LjItMTYgMTYtMTZoNDhWODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2tCb29rbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNDMgNDMgMCA5NiAwaDk2VjE5MC43YzAgMTMuNCAxNS41IDIwLjkgMjYgMTIuNUwyNzIgMTYwbDU0IDQzLjJjMTAuNSA4LjQgMjYgLjkgMjYtMTIuNVYwaDMyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMnY2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzODQgOTZjLTUzIDAtOTYtNDMtOTYtOTZWOTZ6TTY0IDQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzNTJWMzg0SDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va0pvdXJuYWxXaGlsbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDQzIDQzIDAgOTYgMEgzODRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMydjY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM4NCA5NmMtNTMgMC05Ni00My05Ni05NlY5NnpNNjQgNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM1MlYzODRIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem05MC40LTIzNC40bC0yMS4yLTIxLjJjLTMgMTAuMS01LjEgMjAuNi01LjEgMzEuNmMwIC4yIDAgLjUgLjEgLjhzLjEgLjUgLjEgLjhMMTY1LjIgMjI2YzIuNSAyLjEgMy40IDUuOCAyLjMgOC45Yy0xLjMgMy00LjEgNS4xLTcuNSA1LjFjLTEuOS0uMS0zLjgtLjgtNS4yLTJsLTIzLjYtMjAuNkMxNDIuOCAyNjcgMTg2LjkgMzA0IDI0MCAzMDRzOTcuMy0zNyAxMDguOS04Ni42TDMyNS4zIDIzOGMtMS40IDEuMi0zLjMgMi01LjMgMmMtMi4yLS4xLTQuNC0xLjEtNi0yLjhjLTEuMi0xLjUtMS45LTMuNC0yLTUuMmMuMS0yLjIgMS4xLTQuNCAyLjgtNmwzNy4xLTMyLjVjMC0uMyAwLS41IC4xLS44cy4xLS41IC4xLS44YzAtMTEtMi4xLTIxLjUtNS4xLTMxLjZsLTIxLjIgMjEuMmMtMy4xIDMuMS04LjEgMy4xLTExLjMgMHMtMy4xLTguMSAwLTExLjJsMjYuNC0yNi41Yy04LjItMTctMjAuNS0zMS43LTM1LjktNDIuNmMtMi43LTEuOS02LjIgMS40LTUgNC41YzguNSAyMi40IDMuNiA0OC0xMyA2NS42Yy0zLjIgMy40LTMuNiA4LjktLjkgMTIuN2M5LjggMTQgMTIuNyAzMS45IDcuNSA0OC41Yy01LjkgMTkuNC0yMiAzNC4xLTQxLjkgMzguM2wtMS40LTM0LjMgMTIuNiA4LjZjLjYgLjQgMS41IC42IDIuMyAuNmMxLjUgMCAyLjctLjggMy41LTJzLjYtMi44LS4xLTRMMjYwIDIyNS40bDE4LTMuNmMxLjgtLjQgMy4xLTIuMSAzLjEtNHMtMS40LTMuNS0zLjEtMy45bC0xOC0zLjcgOC41LTE0LjNjLjgtMS4yIC45LTIuOSAuMS00LjFzLTItMi0zLjUtMmwtLjEgMGMtLjcgLjEtMS41IC4zLTIuMSAuN2wtMTQuMSA5LjZMMjQ0IDg3LjljLS4xLTIuMi0xLjktMy45LTQtMy45cy0zLjkgMS42LTQgMy45bC00LjYgMTEwLjgtMTItOC4xYy0xLjUtMS4xLTMuNi0uOS01IC40cy0xLjYgMy40LS44IDVsOC42IDE0LjMtMTggMy43Yy0xLjggLjQtMy4xIDItMy4xIDMuOXMxLjQgMy42IDMuMSA0bDE4IDMuOC04LjYgMTQuMmMtLjIgLjYtLjUgMS40LS41IDJjMCAxLjEgLjUgMi4xIDEuMiAzYy44IC42IDEuOCAxIDIuOCAxYy43IDAgMS42LS4yIDIuMi0uNmwxMC40LTcuMS0xLjQgMzIuOGMtMTkuOS00LjEtMzYtMTguOS00MS45LTM4LjNjLTUuMS0xNi42LTIuMi0zNC40IDcuNi00OC41YzIuNy0zLjkgMi4zLTkuMy0uOS0xMi43Yy0xNi42LTE3LjUtMjEuNi00My4xLTEzLjEtNjUuNWMxLjItMy4xLTIuMy02LjQtNS00LjVjLTE1LjMgMTAuOS0yNy42IDI1LjYtMzUuOCA0Mi42bDI2LjQgMjYuNWMzLjEgMy4xIDMuMSA4LjEgMCAxMS4ycy04LjEgMy4xLTExLjIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va01lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDQzIDQzIDAgOTYgMEgzODRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMydjY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM4NCA5NmMtNTMgMC05Ni00My05Ni05NlY5NnpNNjQgNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM1MlYzODRIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek0yMDggMTEydjQ4SDE2MGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjIyNGg0OGM4LjggMCAxNi03LjIgMTYtMTZWMTc2YzAtOC44LTcuMi0xNi0xNi0xNkgyNzJWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgyMjRjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va09wZW5SZWFkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDk2YTk2IDk2IDAgMSAxIDE5MiAwQTk2IDk2IDAgMSAxIDE2MCA5NnptODAgMTUyVjUxMmwtNDguNC0yNC4yYy0yMC45LTEwLjQtNDMuNS0xNy02Ni44LTE5LjNsLTk2LTkuNkMxMi41IDQ1Ny4yIDAgNDQzLjUgMCA0MjdWMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDYyLjNjNjMuNiAwIDEyNS42IDE5LjYgMTc3LjcgNTZ6bTMyIDI2NFYyNDhjNTIuMS0zNi40IDExNC4xLTU2IDE3Ny43LTU2SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0MjdjMCAxNi40LTEyLjUgMzAuMi0yOC44IDMxLjhsLTk2IDkuNmMtMjMuMiAyLjMtNDUuOSA4LjktNjYuOCAxOS4zTDI3MiA1MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2tPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OS42IDQ3MS41YzEwLjggMy44IDIyLjQtNC4xIDIyLjQtMTUuNVY3OC42YzAtNC4yLTEuNi04LjQtNS0xMUMyNDcuNCA1MiAyMDIuNCAzMiAxNDQgMzJDOTMuNSAzMiA0Ni4zIDQ1LjMgMTguMSA1Ni4xQzYuOCA2MC41IDAgNzEuNyAwIDgzLjhWNDU0LjFjMCAxMS45IDEyLjggMjAuMiAyNC4xIDE2LjVDNTUuNiA0NjAuMSAxMDUuNSA0NDggMTQ0IDQ0OGMzMy45IDAgNzkgMTQgMTA1LjYgMjMuNXptNzYuOCAwQzM1MyA0NjIgMzk4LjEgNDQ4IDQzMiA0NDhjMzguNSAwIDg4LjQgMTIuMSAxMTkuOSAyMi42YzExLjMgMy44IDI0LjEtNC42IDI0LjEtMTYuNVY4My44YzAtMTIuMS02LjgtMjMuMy0xOC4xLTI3LjZDNTI5LjcgNDUuMyA0ODIuNSAzMiA0MzIgMzJjLTU4LjQgMC0xMDMuNCAyMC0xMjMgMzUuNmMtMy4zIDIuNi01IDYuOC01IDExVjQ1NmMwIDExLjQgMTEuNyAxOS4zIDIyLjQgMTUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va1F1cmFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAwYzUzIDAgOTYgNDMgOTYgOTZWNDE2YzAgNTMtNDMgOTYtOTYgOTZINjQgMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJWMzg0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzMkMwIDE0LjMgMTQuMyAwIDMyIDBINjQgMzUyem0wIDM4NEg5NnY2NEgzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJ6TTI3NC4xIDE1MC4ybC04LjkgMjEuNC0yMy4xIDEuOWMtNS43IC41LTggNy41LTMuNyAxMS4yTDI1NiAxOTkuOGwtNS40IDIyLjZjLTEuMyA1LjUgNC43IDkuOSA5LjYgNi45TDI4MCAyMTcuMmwxOS44IDEyLjFjNC45IDMgMTAuOS0xLjQgOS42LTYuOUwzMDQgMTk5LjhsMTcuNi0xNS4xYzQuMy0zLjcgMi0xMC44LTMuNy0xMS4ybC0yMy4xLTEuOS04LjktMjEuNGMtMi4yLTUuMy05LjYtNS4zLTExLjggMHpNOTYgMTkyYzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4YzI1LjYgMCA0OS41LTcuNSA2OS41LTIwLjVjMy4yLTIuMSA0LjUtNi4yIDMuMS05LjdzLTUuMi01LjYtOS00LjhjLTYuMSAxLjItMTIuNSAxLjktMTkgMS45Yy01Mi40IDAtOTQuOS00Mi41LTk0LjktOTQuOXM0Mi41LTk0LjkgOTQuOS05NC45YzYuNSAwIDEyLjggLjcgMTkgMS45YzMuOCAuOCA3LjUtMS4zIDktNC44cy4yLTcuNi0zLjEtOS43QzI3My41IDcxLjUgMjQ5LjYgNjQgMjI0IDY0QzE1My4zIDY0IDk2IDEyMS4zIDk2IDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va1NrdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA0MyA0MyAwIDk2IDBIMzg0aDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMnY2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzODQgOTZjLTUzIDAtOTYtNDMtOTYtOTZWOTZ6TTY0IDQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzNTJWMzg0SDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMzIwIDExMmMwLTM1LjMtMzUuOC02NC04MC02NHMtODAgMjguNy04MCA2NGMwIDIwLjkgMTIuNiAzOS41IDMyIDUxLjJWMTc2YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZWMTYzLjJjMTkuNC0xMS43IDMyLTMwLjMgMzItNTEuMnpNMjA4IDk2YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnptNDggMTZhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHpNMTM0LjMgMjA5LjNjLTguMS0zLjUtMTcuNSAuMy0yMSA4LjRzLjMgMTcuNSA4LjQgMjFMMTk5LjQgMjcybC03Ny43IDMzLjNjLTguMSAzLjUtMTEuOSAxMi45LTguNCAyMXMxMi45IDExLjkgMjEgOC40TDI0MCAyODkuNGwxMDUuNyA0NS4zYzguMSAzLjUgMTcuNS0uMyAyMS04LjRzLS4zLTE3LjUtOC40LTIxTDI4MC42IDI3Mmw3Ny43LTMzLjNjOC4xLTMuNSAxMS45LTEyLjkgOC40LTIxcy0xMi45LTExLjktMjEtOC40TDI0MCAyNTQuNiAxMzQuMyAyMDkuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va1RhbmFraCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMGM1MyAwIDk2IDQzIDk2IDk2VjQxNmMwIDUzLTQzIDk2LTk2IDk2SDY0IDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyVjM4NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzJDMCAxNC4zIDE0LjMgMCAzMiAwSDY0IDM1MnptMCAzODRIOTZ2NjRIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyek0xMzguNyAyMDhsMTMuOSAyNEgxMjQuOWwxMy45LTI0em0tMTMuOS0yNEw5Ny4xIDIzMmMtNi4yIDEwLjcgMS41IDI0IDEzLjkgMjRoNTUuNGwyNy43IDQ4YzYuMiAxMC43IDIxLjYgMTAuNyAyNy43IDBsMjcuNy00OEgzMDVjMTIuMyAwIDIwLTEzLjMgMTMuOS0yNGwtMjcuNy00OCAyNy43LTQ4YzYuMi0xMC43LTEuNS0yNC0xMy45LTI0SDI0OS42TDIyMS45IDY0Yy02LjItMTAuNy0yMS42LTEwLjctMjcuNyAwbC0yNy43IDQ4SDExMWMtMTIuMyAwLTIwIDEzLjMtMTMuOSAyNGwyNy43IDQ4em0yNy43IDBsMjcuNy00OGg1NS40bDI3LjcgNDgtMjcuNyA0OEgxODAuM2wtMjcuNy00OHptMC00OGwtMTMuOSAyNC0xMy45LTI0aDI3Ljd6bTQxLjYtMjRMMjA4IDg4bDEzLjkgMjRIMTk0LjF6bTY5LjMgMjRoMjcuN2wtMTMuOSAyNC0xMy45LTI0em0xMy45IDcybDEzLjkgMjRIMjYzLjRsMTMuOS0yNHptLTU1LjQgNDhMMjA4IDI4MGwtMTMuOS0yNGgyNy43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBDNDMgMCAwIDQzIDAgOTZWNDE2YzAgNTMgNDMgOTYgOTYgOTZIMzg0aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjM4NGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkgzODQgOTZ6bTAgMzg0SDM1MnY2NEg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMzItMjQwYzAtOC44IDcuMi0xNiAxNi0xNkgzMzZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTQ0Yy04LjggMC0xNi03LjItMTYtMTZ6bTE2IDQ4SDMzNmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxNDRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDhWNDg3LjdDMCA1MDEuMSAxMC45IDUxMiAyNC4zIDUxMmM1IDAgOS45LTEuNSAxNC00LjRMMTkyIDQwMCAzNDUuNyA1MDcuNmM0LjEgMi45IDkgNC40IDE0IDQuNGMxMy40IDAgMjQuMy0xMC45IDI0LjMtMjQuM1Y0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OEMyMS41IDAgMCAyMS41IDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvcmRlckFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgOTZWMjI0SDI1NlY5NkgzODR6bTAgMTkyVjQxNkgyNTZWMjg4SDM4NHpNMTkyIDIyNEg2NFY5NkgxOTJWMjI0ek02NCAyODhIMTkyVjQxNkg2NFYyODh6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9yZGVyTm9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0ODBhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em05Ni02NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTAtMzg0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMCAyNTZhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0ek0zMjAgNDE2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMC0zMjBhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em0wIDEyOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTIyNCA0ODBhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em0wLTQ0OGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTAgMjU2YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHpNNDE2IDQxNmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTAtMzg0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMzIgOTZhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0ek00MTYgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMzIgMjg4YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHptMTkyIDMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTkyIDY0YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHpNMzIgMzIwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNNDE2IDE5MmEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6TTMyIDEyOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTE5MiA2NGEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvcmRlclRvcExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTMzNmMwLTguOCA3LjItMTYgMTYtMTZsMzM2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMODAgMzJDMzUuOCAzMiAwIDY3LjggMCAxMTJMMCA0NDh6bTE2MCAwYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTE5MiAwYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bS05NiAwYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTE5MiAwYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTQxNiAyODhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0wIDMyYTMyIDMyIDAgMSAwIDAgNjQgMzIgMzIgMCAxIDAgMC02NHptMC0xMjhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3JlSG9sZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWMjk2LjZjLTE5LjEgMTEuMS0zMiAzMS43LTMyIDU1LjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NGMwLTIzLjctMTIuOS00NC40LTMyLTU1LjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTQ4IDEyOGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDQ2NGMyNi41IDAgNDgtMjEuNSA0OC00OFYxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMlYzNTJjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZWMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMySDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3R0bGVEcm9wbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBDODIuNyAwIDcyIDEwLjcgNzIgMjRzMTAuNyAyNCAyNCAyNGM0LjQgMCA4IDMuNiA4IDh2NjQuOWMwIDEyLjItNy4yIDIzLjEtMTcuMiAzMC4xQzUzLjcgMTc0LjEgMzIgMjEyLjUgMzIgMjU2VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgyMjRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjU2YzAtNDMuNS0yMS43LTgxLjktNTQuOC0xMDVjLTEwLTctMTcuMi0xNy45LTE3LjItMzAuMVY1NmMwLTQuNCAzLjYtOCA4LThjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTggMCAwIDAgMCAwSDEwNGwwIDAgMCAwTDk2IDB6bTY0IDM4MmMtMjYuNSAwLTQ4LTIwLjEtNDgtNDVjMC0xNi44IDIyLjEtNDguMSAzNi4zLTY2LjRjNi03LjggMTcuNS03LjggMjMuNSAwQzE4NS45IDI4OC45IDIwOCAzMjAuMiAyMDggMzM3YzAgMjQuOS0yMS41IDQ1LTQ4IDQ1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3R0bGVXYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjAgMGw4MCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgNDBMOTYgNjRsMC00MGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNMzIgMTY3LjVjMC0xOS41IDEwLTM3LjYgMjYuNi00Ny45bDE1LjgtOS45Qzg4LjcgMTAwLjcgMTA1LjIgOTYgMTIyLjEgOTZsNzUuOCAwYzE2LjkgMCAzMy40IDQuNyA0Ny43IDEzLjdsMTUuOCA5LjlDMjc4IDEyOS45IDI4OCAxNDggMjg4IDE2Ny41YzAgMTctNy41IDMyLjMtMTkuNCA0Mi42QzI4MC42IDIyMS43IDI4OCAyMzggMjg4IDI1NmMwIDE5LjEtOC40IDM2LjMtMjEuNyA0OGMxMy4zIDExLjcgMjEuNyAyOC45IDIxLjcgNDhzLTguNCAzNi4zLTIxLjcgNDhjMTMuMyAxMS43IDIxLjcgMjguOSAyMS43IDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0TDk2IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRjMC0xOS4xIDguNC0zNi4zIDIxLjctNDhDNDAuNCAzODguMyAzMiAzNzEuMSAzMiAzNTJzOC40LTM2LjMgMjEuNy00OEM0MC40IDI5Mi4zIDMyIDI3NS4xIDMyIDI1NmMwLTE4IDcuNC0zNC4zIDE5LjQtNDUuOUMzOS41IDE5OS43IDMyIDE4NC41IDMyIDE2Ny41ek05NiAyNDBjMCA4LjggNy4yIDE2IDE2IDE2bDk2IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTk2IDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMTYgMTEyYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDk2IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTk2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvd2xGb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTkyYzAtMzUuMyAyOC43LTY0IDY0LTY0Yy41IDAgMS4xIDAgMS42IDBDNzMgOTEuNSAxMDUuMyA2NCAxNDQgNjRjMTUgMCAyOSA0LjEgNDAuOSAxMS4yQzE5OC4yIDQ5LjYgMjI1LjEgMzIgMjU2IDMyczU3LjggMTcuNiA3MS4xIDQzLjJDMzM5IDY4LjEgMzUzIDY0IDM2OCA2NGMzOC43IDAgNzEgMjcuNSA3OC40IDY0Yy41IDAgMS4xIDAgMS42IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRjMCAxMS43LTMuMSAyMi42LTguNiAzMkg4LjZDMy4xIDIxNC42IDAgMjAzLjcgMCAxOTJ6bTAgOTEuNEMwIDI2OC4zIDEyLjMgMjU2IDI3LjQgMjU2SDQ4NC42YzE1LjEgMCAyNy40IDEyLjMgMjcuNCAyNy40YzAgNzAuNS00NC40IDEzMC43LTEwNi43IDE1NC4xTDQwMy41IDQ1MmMtMiAxNi0xNS42IDI4LTMxLjggMjhIMTQwLjJjLTE2LjEgMC0yOS44LTEyLTMxLjgtMjhsLTEuOC0xNC40QzQ0LjQgNDE0LjEgMCAzNTMuOSAwIDI4My40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3dsUmljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgNTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptMjQgNDhoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0ek01NiAxNzZINzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6TTAgMjgzLjRDMCAyNjguMyAxMi4zIDI1NiAyNy40IDI1Nkg0ODQuNmMxNS4xIDAgMjcuNCAxMi4zIDI3LjQgMjcuNGMwIDcwLjUtNDQuNCAxMzAuNy0xMDYuNyAxNTQuMUw0MDMuNSA0NTJjLTIgMTYtMTUuNiAyOC0zMS44IDI4SDE0MC4yYy0xNi4xIDAtMjkuOC0xMi0zMS44LTI4bC0xLjgtMTQuNEM0NC40IDQxNC4xIDAgMzUzLjkgMCAyODMuNHpNMjI0IDIwMGMwLTEzLjMgMTAuNy0yNCAyNC0yNGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNDhjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0tOTYgMGMwLTEzLjMgMTAuNy0yNCAyNC0yNGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgxNTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0tMjQtOTZoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMTA0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0em0yMTYgOTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMzQ0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptLTI0LTk2aDE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI5NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptMTIwIDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0aDE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDQ0MGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bS0yNC05NmgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgzOTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6TTI5NiAzMmgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyOTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvd2xpbmdCYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0yNDAgODBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0yMDggMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bS02NC02NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJveEFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyQzE0LjMgMTI4IDAgMTEzLjcgMCA5NlY2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMnptMCAxMjhINDgwVjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg5NmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTYwem0xMjggODBjMCA4LjggNy4yIDE2IDE2IDE2SDMzNmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm94T3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01OC45IDQyLjFjMy02LjEgOS42LTkuNiAxNi4zLTguN0wzMjAgNjQgNTY0LjggMzMuNGM2LjctLjggMTMuMyAyLjcgMTYuMyA4LjdsNDEuNyA4My40YzkgMTcuOS0uNiAzOS42LTE5LjggNDUuMUw0MzkuNiAyMTcuM2MtMTMuOSA0LTI4LjgtMS45LTM2LjItMTQuM0wzMjAgNjQgMjM2LjYgMjAzYy03LjQgMTIuNC0yMi4zIDE4LjMtMzYuMiAxNC4zTDM3LjEgMTcwLjZjLTE5LjMtNS41LTI4LjgtMjcuMi0xOS44LTQ1LjFMNTguOSA0Mi4xek0zMjEuMSAxMjhsNTQuOSA5MS40YzE0LjkgMjQuOCA0NC42IDM2LjYgNzIuNSAyOC42TDU3NiAyMTEuNnYxNjdjMCAyMi0xNSA0MS4yLTM2LjQgNDYuNmwtMjA0LjEgNTFjLTEwLjIgMi42LTIwLjkgMi42LTMxIDBsLTIwNC4xLTUxQzc5IDQxOS43IDY0IDQwMC41IDY0IDM3OC41di0xNjdMMTkxLjYgMjQ4YzI3LjggOCA1Ny42LTMuOCA3Mi41LTI4LjZMMzE4LjkgMTI4aDIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm94VGlzc3VlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkyLjUgMEgyMDhjNDAgMCA1MiAyNCA2NCA0OHMyNCA0OCA2NCA0OGg4NS4yQzQzNiA5NiA0NDggMTA4IDQ0OCAxMjIuOGMwIDMuNC0uNyA2LjgtMS45IDEwTDQwOS42IDIyNCAzODQgMjg4SDEyOGwtMTYtNjRMNjQuOSAzNS40Yy0uNi0yLjMtLjktNC42LS45LTYuOUM2NCAxMi44IDc2LjggMCA5Mi41IDB6TTc5IDIyNGwxNiA2NEg4MGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg0OEgzODRoNDhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZINDE4LjVsMjUuNi02NEg0NjRjMjYuNSAwIDQ4IDIxLjUgNDggNDhWMzg0SDBWMjcyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDc5ek0wIDQxNkg1MTJ2NDhjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwLjcgNTguNUwwIDE2MEgyMDhWMzJIOTMuN0M3NS41IDMyIDU4LjkgNDIuMyA1MC43IDU4LjV6TTI0MCAxNjBINDQ4TDM5Ny4zIDU4LjVDMzg5LjEgNDIuMyAzNzIuNSAzMiAzNTQuMyAzMkgyNDBWMTYwem0yMDggMzJIMFY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm94ZXNQYWNraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGMwLTI2LjUgMjEuNS00OCA0OC00OEg1OTJjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDM4MS4zYzEuOC01IDIuNy0xMC40IDIuNy0xNlYyNTMuM2MxOC42LTYuNiAzMi0yNC40IDMyLTQ1LjNWMTc2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDI1NlY0OHpNNTcxLjMgMzQ3LjNjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTY0LTY0Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMGwtNjQgNjRjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMEw0ODAgMzEwLjZWNDMyYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzEwLjZsMzYuNyAzNi43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwek0wIDE3NmMwLTguOCA3LjItMTYgMTYtMTZIMzY4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZ6bTM1MiA4MFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJINjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjI1NkgzNTJ6TTE0NCAzMjBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoOTZjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMTQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3hlc1N0YWNrZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDBIMjA4Yy0yNi41IDAtNDggMjEuNS00OCA0OFYxNjBjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzUyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDMyOFY4MGMwIDguOC03LjIgMTYtMTYgMTZIMjY0Yy04LjggMC0xNi03LjItMTYtMTZWMHpNNjQgMjU2Yy0zNS4zIDAtNjQgMjguNy02NCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMjI0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjMyMGMwLTM1LjMtMjguNy02NC02NC02NEgxODR2ODBjMCA4LjgtNy4yIDE2LTE2IDE2SDEyMGMtOC44IDAtMTYtNy4yLTE2LTE2VjI1Nkg2NHpNMzUyIDUxMkg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDQ3MnY4MGMwIDguOC03LjIgMTYtMTYgMTZINDA4Yy04LjggMC0xNi03LjItMTYtMTZWMjU2SDM1MmMtMTUgMC0yOC44IDUuMS0zOS43IDEzLjhjNC45IDEwLjQgNy43IDIyIDcuNyAzNC4yVjQ2NGMwIDEyLjItMi44IDIzLjgtNy43IDM0LjJDMzIzLjIgNTA2LjkgMzM3IDUxMiAzNTIgNTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmFpbGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgMCA5NnpNMjI0IDI3MmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bTAtODBhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6TTgwIDQxNmExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwek0wIDQxNmE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSAwIDQxNnptMjQwIDBhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptLTgwIDBhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwek02NCAxOTJhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6TTIyNCAzMmE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNMzUyIDk2YTY0IDY0IDAgMSAxIDEyOCAwQTY0IDY0IDAgMSAxIDM1MiA5NnptMjQwIDBhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptLTgwIDBhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgNTEyIDk2em02NCAxNzZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0wLTgwYTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4em0xNiAyMjRhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptLTgwIDBhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwek00MTYgMjcyYTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnptMC04MGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHptMTYgMjI0YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bS04MCAwYTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg0IDBjMzAuOSAwIDU2IDI1LjEgNTYgNTZWNDU2YzAgMzAuOS0yNS4xIDU2LTU2IDU2Yy0yOC45IDAtNTIuNy0yMS45LTU1LjctNTAuMWMtNS4yIDEuNC0xMC43IDIuMS0xNi4zIDIuMWMtMzUuMyAwLTY0LTI4LjctNjQtNjRjMC03LjQgMS4zLTE0LjYgMy42LTIxLjJDMjEuNCAzNjcuNCAwIDMzOC4yIDAgMzA0YzAtMzEuOSAxOC43LTU5LjUgNDUuOC03Mi4zQzM3LjEgMjIwLjggMzIgMjA3IDMyIDE5MmMwLTMwLjcgMjEuNi01Ni4zIDUwLjQtNjIuNkM4MC44IDEyMy45IDgwIDExOCA4MCAxMTJjMC0yOS45IDIwLjYtNTUuMSA0OC4zLTYyLjFDMTMxLjMgMjEuOSAxNTUuMSAwIDE4NCAwek0zMjggMGMyOC45IDAgNTIuNiAyMS45IDU1LjcgNDkuOWMyNy44IDcgNDguMyAzMi4xIDQ4LjMgNjIuMWMwIDYtLjggMTEuOS0yLjQgMTcuNGMyOC44IDYuMiA1MC40IDMxLjkgNTAuNCA2Mi42YzAgMTUtNS4xIDI4LjgtMTMuOCAzOS43QzQ5My4zIDI0NC41IDUxMiAyNzIuMSA1MTIgMzA0YzAgMzQuMi0yMS40IDYzLjQtNTEuNiA3NC44YzIuMyA2LjYgMy42IDEzLjggMy42IDIxLjJjMCAzNS4zLTI4LjcgNjQtNjQgNjRjLTUuNiAwLTExLjEtLjctMTYuMy0yLjFjLTMgMjguMi0yNi44IDUwLjEtNTUuNyA1MC4xYy0zMC45IDAtNTYtMjUuMS01Ni01NlY1NmMwLTMwLjkgMjUuMS01NiA1Ni01NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJhemlsaWFuUmVhbFNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNTAuMmMxMi41IDIuMyAyNC43IDYuNCAzNi4yIDEyLjFsMTAuMSA1LjFjMTUuOCA3LjkgMjIuMiAyNy4xIDE0LjMgNDIuOXMtMjcuMSAyMi4yLTQyLjkgMTQuM2wtMTAuMi01LjFjLTkuOS01LTIwLjktNy41LTMyLTcuNWgtMS43Yy0yOS44IDAtNTMuOSAyNC4xLTUzLjkgNTMuOWMwIDIyIDEzLjQgNDEuOCAzMy45IDUwbDUyIDIwLjhjNDQuNyAxNy45IDc0LjEgNjEuMiA3NC4xIDEwOS40djMuNGMwIDUxLjItMzMuNiA5NC42LTgwIDEwOS4yVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NjAuNmMtMTUtMy41LTI5LjQtOS43LTQyLjMtMTguM2wtMjMuNC0xNS42Yy0xNC43LTkuOC0xOC43LTI5LjctOC45LTQ0LjRzMjkuNy0xOC43IDQ0LjQtOC45TDM2MS4yIDM4OWMxMC44IDcuMiAyMy40IDExIDM2LjMgMTFjMjcuOSAwIDUwLjUtMjIuNiA1MC41LTUwLjV2LTMuNGMwLTIyLTEzLjQtNDEuOC0zMy45LTUwbC01Mi0yMC44QzMxNy4zIDI1Ny40IDI4OCAyMTQuMSAyODggMTY1LjlDMjg4IDExNCAzMjEuNSA3MCAzNjggNTQuMlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMmg4MGM3OS41IDAgMTQ0IDY0LjUgMTQ0IDE0NGMwIDU4LjgtMzUuMiAxMDkuMy04NS43IDEzMS43bDUxLjQgMTI4LjRjNi42IDE2LjQtMS40IDM1LTE3LjggNDEuNnMtMzUtMS40LTQxLjYtMTcuOEwxMDYuMyAzMjBINjRWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI4OCA2NHpNNjQgMjU2aDQ4YzQ0LjIgMCA4MC0zNS44IDgwLTgwcy0zNS44LTgwLTgwLTgwSDY0VjI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJlYWRTbGljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJDMTkyIDMyIDAgNjQgMCAxOTJjMCAzNS4zIDI4LjcgNjQgNjQgNjRWNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDQwMGMyNi41IDAgNDgtMjEuNSA0OC00OFYyNTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRDNTEyIDY0IDMyMCAzMiAyNTYgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyaWRnZUNpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzQ2LjMgMzIgMzIgNDYuMyAzMiA2NHMxNC4zIDMyIDMyIDMyaDQwdjY0SDMyVjI4OGM1MyAwIDk2IDQzIDk2IDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTUzIDQzLTk2IDk2LTk2YzYuMyAwIDEyLjQgLjYgMTguMyAxLjdDMzY3LjEgMjMxLjggNDI2LjkgMTkyIDQ5NiAxOTJjNDIuNSAwIDgxLjYgMTUuMSAxMTIgNDAuMlYxNjBINTM2Vjk2aDQwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDY0ek00ODggOTZ2NjRINDA4Vjk2aDgwek0zNjAgOTZ2NjRIMjgwVjk2aDgwek0yMzIgOTZ2NjRIMTUyVjk2aDgwek02NDAgMzY4YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS03Ni43LTQzLjNjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZsLTcyIDcyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMGwtNDAtNDBjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0ODAgMzg1LjRsNjAuNy02MC43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmlkZ2VDaXJjbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkM0Ni4zIDMyIDMyIDQ2LjMgMzIgNjRzMTQuMyAzMiAzMiAzMmg0MHY2NEgzMlYyODhjNTMgMCA5NiA0MyA5NiA5NnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMlYzODRjMC01MyA0My05NiA5Ni05NmM2LjMgMCAxMi40IC42IDE4LjMgMS43QzM2Ny4xIDIzMS44IDQyNi45IDE5MiA0OTYgMTkyYzQyLjUgMCA4MS42IDE1LjEgMTEyIDQwLjJWMTYwSDUzNlY5Nmg0MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg2NHpNNDg4IDk2djY0SDQwOFY5Nmg4MHpNMzYwIDk2djY0SDI4MFY5Nmg4MHpNMjMyIDk2djY0SDE1MlY5Nmg4MHpNNDk2IDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTAtOTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0wLTE0NGM4LjggMCAxNiA3LjIgMTYgMTZ2ODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjg4YzAtOC44IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJpZGdlQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDNDYuMyAzMiAzMiA0Ni4zIDMyIDY0czE0LjMgMzIgMzIgMzJoNDB2NjRIMzJWMjg4YzUzIDAgOTYgNDMgOTYgOTZ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzg0YzAtNTMgNDMtOTYgOTYtOTZjNi4zIDAgMTIuNCAuNiAxOC4zIDEuN0MzNjcuMSAyMzEuOCA0MjYuOSAxOTIgNDk2IDE5MmM0Mi41IDAgODEuNiAxNS4xIDExMiA0MC4yVjE2MEg1MzZWOTZoNDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjR6TTQ4OCA5NnY2NEg0MDhWOTZoODB6TTM2MCA5NnY2NEgyODBWOTZoODB6TTIzMiA5NnY2NEgxNTJWOTZoODB6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em01OS4zLTE4MC43TDUxOC42IDM2OGwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEw0OTYgMzkwLjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkw0NzMuNCAzNjhsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ5NiAzNDUuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmlkZ2VMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDU3NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg1MzZ2NjRoLThjLTYxLjkgMC0xMTIgNTAuMS0xMTIgMTEydjI0LjZjLTkuOSA1LjgtMTguMiAxNC4xLTIzLjggMjQuMWMtMTcuNi0yMC00My40LTMyLjctNzIuMi0zMi43Yy01MyAwLTk2IDQzLTk2IDk2djY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzg0YzAtNTMtNDMtOTYtOTYtOTZWMTYwaDcyVjk2SDY0QzQ2LjMgOTYgMzIgODEuNyAzMiA2NHpNNDA4IDk2djY0aDgwVjk2SDQwOHptLTQ4IDY0Vjk2SDI4MHY2NGg4MHpNMTUyIDk2djY0aDgwVjk2SDE1MnpNNTI4IDI0MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NDhoNjRWMjcyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tODAgMzJjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MHY0OGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJINDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNTJjMC0xNy43IDE0LjMtMzIgMzItMzJWMjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmlkZ2VXYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNzguMyAxNC4zIDY0IDMyIDY0SDU0NGMxNy43IDAgMzIgMTQuMyAzMiAzMnYzNS42YzAgMTUuNy0xMi43IDI4LjQtMjguNCAyOC40Yy0zNy4zIDAtNjcuNiAzMC4yLTY3LjYgNjcuNlYzNTIuNWMtMTIuOSAwLTI1LjggMy45LTM2LjggMTEuN2MtMTggMTIuNC00MC4xIDIwLjMtNTkuMiAyMC4zaDBsMC0uNVYyNTZjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZWMzg0bDAgLjVjLTE5IDAtNDEuMi03LjktNTkuMS0yMC4zYy0xMS4xLTcuOC0yNC0xMS43LTM2LjktMTEuN1YyMjcuNkM5NiAxOTAuMiA2NS44IDE2MCAyOC40IDE2MEMxMi43IDE2MCAwIDE0Ny4zIDAgMTMxLjZWOTZ6TTMwNi41IDM4OS45QzMyOSA0MDUuNCAzNTYuNSA0MTYgMzg0IDQxNmMyNi45IDAgNTUuNC0xMC44IDc3LjQtMjYuMWwwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSA0NjkuNyA0MTcgNDgwIDM4NCA0ODBjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40YzE4LjEtNC4yIDM2LjItMTMuMyA1MC42LTI1LjJjMTEuMS05LjQgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyA0MDUuMiAxNjUuMSA0MTYgMTkyIDQxNmMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJpZGdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRTMTQuMyA5NiAzMiA5Nkg3MnY2NEgwVjI4OGM1MyAwIDk2IDQzIDk2IDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTUzIDQzLTk2IDk2LTk2VjE2MEg1MDRWOTZoNDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJ6TTQ1NiA5NnY2NEgzNzZWOTZoODB6TTMyOCA5NnY2NEgyNDhWOTZoODB6TTIwMCA5NnY2NEgxMjBWOTZoODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyaWVmY2FzZU1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg0IDQ4SDMyOGM0LjQgMCA4IDMuNiA4IDhWOTZIMTc2VjU2YzAtNC40IDMuNi04IDgtOHptLTU2IDhWOTZINjRDMjguNyA5NiAwIDEyNC43IDAgMTYwVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDM4NFY1NmMwLTMwLjktMjUuMS01Ni01Ni01NkgxODRjLTMwLjkgMC01NiAyNS4xLTU2IDU2em05NiAxNTJjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY0OGg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI4OHY0OGMwIDguOC03LjIgMTYtMTYgMTZIMjQwYy04LjggMC0xNi03LjItMTYtMTZWMzIwSDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MmMwLTguOCA3LjItMTYgMTYtMTZoNDhWMjA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmllZmNhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg0IDQ4SDMyOGM0LjQgMCA4IDMuNiA4IDhWOTZIMTc2VjU2YzAtNC40IDMuNi04IDgtOHptLTU2IDhWOTZINjRDMjguNyA5NiAwIDEyNC43IDAgMTYwdjk2SDE5MiAzMjAgNTEyVjE2MGMwLTM1LjMtMjguNy02NC02NC02NEgzODRWNTZjMC0zMC45LTI1LjEtNTYtNTYtNTZIMTg0Yy0zMC45IDAtNTYgMjUuMS01NiA1NnpNNTEyIDI4OEgzMjB2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJIMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyODhIMFY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJvb21CYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2Ni42IDkuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtMTkyIDE5MiAzNC43IDM0LjdjNC4yIDQuMiA2LjYgMTAgNi42IDE2YzAgMTIuNS0xMC4xIDIyLjYtMjIuNiAyMi42SDM2NC4zTDI1NiAyMTEuN1YxODIuNmMwLTEyLjUgMTAuMS0yMi42IDIyLjYtMjIuNmM2IDAgMTEuOCAyLjQgMTYgNi42bDM0LjcgMzQuNyAxOTItMTkyYzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwem0tMzQ0IDIyNS41TDM0MS4xIDM1My40YzMuNyA0Mi43LTExLjcgODUuMi00Mi4zIDExNS44QzI3MS40IDQ5Ni42IDIzNC4yIDUxMiAxOTUuNSA1MTJMMjIuMSA1MTJDOS45IDUxMiAwIDUwMi4xIDAgNDg5LjljMC02LjMgMi43LTEyLjMgNy4zLTE2LjVMMTMzLjcgMzU5LjdjNC4yLTMuNy0uNC0xMC40LTUuNC03LjlMNzcuMiAzNzcuNGMtNi4xIDMtMTMuMi0xLjQtMTMuMi04LjJjMC0zMS41IDEyLjUtNjEuNyAzNC44LTg0bDgtOGMzMC42LTMwLjYgNzMuMS00NS45IDExNS44LTQyLjN6TTQ2NCAzNTJhODAgODAgMCAxIDEgMCAxNjAgODAgODAgMCAxIDEgMC0xNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2Ni42IDU0LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTE5MiAxOTItMzQuNy0zNC43Yy00LjItNC4yLTEwLTYuNi0xNi02LjZjLTEyLjUgMC0yMi42IDEwLjEtMjIuNiAyMi42djI5LjFMMzY0LjMgMzIwaDI5LjFjMTIuNSAwIDIyLjYtMTAuMSAyMi42LTIyLjZjMC02LTIuNC0xMS44LTYuNi0xNmwtMzQuNy0zNC43IDE5Mi0xOTJ6TTM0MS4xIDM1My40TDIyMi42IDIzNC45Yy00Mi43LTMuNy04NS4yIDExLjctMTE1LjggNDIuM2wtOCA4Qzc2LjUgMzA3LjUgNjQgMzM3LjcgNjQgMzY5LjJjMCA2LjggNy4xIDExLjIgMTMuMiA4LjJsNTEuMS0yNS41YzUtMi41IDkuNSA0LjEgNS40IDcuOUw3LjMgNDczLjRDMi43IDQ3Ny42IDAgNDgzLjYgMCA0ODkuOUMwIDUwMi4xIDkuOSA1MTIgMjIuMSA1MTJsMTczLjMgMGMzOC44IDAgNzUuOS0xNS40IDEwMy40LTQyLjhjMzAuNi0zMC42IDQ1LjktNzMuMSA0Mi4zLTExNS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcnVzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjIuNCA2Yy0xLjUtMy42LTUtNi04LjktNmgtMTljLTMuOSAwLTcuNSAyLjQtOC45IDZMMTA0LjkgNTcuN2MtMy4yIDgtMTQuNiA4LTE3LjggMEw2Ni40IDZjLTEuNS0zLjYtNS02LTguOS02SDQ4QzIxLjUgMCAwIDIxLjUgMCA0OFYyMjR2MjIuNFYyNTZIOS42IDM3NC40IDM4NHYtOS42VjIyNCA0OGMwLTI2LjUtMjEuNS00OC00OC00OEgyMzAuNWMtMy45IDAtNy41IDIuNC04LjkgNkwyMDAuOSA1Ny43Yy0zLjIgOC0xNC42IDgtMTcuOCAwTDE2Mi40IDZ6TTAgMjg4djMyYzAgMzUuMyAyOC43IDY0IDY0IDY0aDY0djY0YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjRWMzg0aDY0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjI4OEgwek0xOTIgNDMyYTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDE1MnY4SDQ4di04QzQ4IDY4LjEgMTE2LjEgMCAyMDAgMGg0OGM4My45IDAgMTUyIDY4LjEgMTUyIDE1MnY4SDM1MnYtOGMwLTU3LjQtNDYuNi0xMDQtMTA0LTEwNEgyMDBDMTQyLjYgNDggOTYgOTQuNiA5NiAxNTJ6TTAgMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmgtNS4xTDM4OC41IDQ2OWMtMi42IDI0LjQtMjMuMiA0My00Ny43IDQzSDEwNy4yYy0yNC42IDAtNDUuMi0xOC41LTQ3LjctNDNMMzcuMSAyNTZIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWdTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDQ3Ny40IDM0OC45YzEuNy05LjQgMi42LTE5IDIuNi0yOC45aDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ3OS43Yy0xLjEtMTQuMS01LTI3LjUtMTEuMS0zOS41Yy43LS42IDEuNC0xLjIgMi4xLTEuOWw2NC02NGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtNjQgNjRjLS43IC43LTEuMyAxLjQtMS45IDIuMUM0MDkuMiAxNjQuMSAzOTMuMSAxNjAgMzc2IDE2MEgyNjRjLTguMyAwLTE2LjMgMS0yNCAyLjhMMzguOCA1LjF6bTM5MiA0MzAuM0wzMzYgMzYwLjdWNDc5LjJjMzYuNi0zLjYgNjkuNy0xOS42IDk0LjgtNDMuOHpNMTY2LjcgMjI3LjNjLTMuNCA5LTUuNiAxOC43LTYuNCAyOC43SDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDY0YzAgMjQuNiA1LjUgNDcuOCAxNS40IDY4LjZjLTIuMiAxLjMtNC4yIDIuOS02IDQuOGwtNjQgNjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsNjMuMS02My4xYzI0LjUgMjEuOCA1NS44IDM2LjIgOTAuMyAzOS42VjMzNS41TDE2Ni43IDIyNy4zek0zMjAgMGMtNTMgMC05NiA0My05NiA5NnYzLjZjMCAxNS43IDEyLjcgMjguNCAyOC40IDI4LjRIMzg3LjZjMTUuNyAwIDI4LjQtMTIuNyAyOC40LTI4LjRWOTZjMC01My00My05Ni05Ni05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYzUzIDAgOTYgNDMgOTYgOTZ2My42YzAgMTUuNy0xMi43IDI4LjQtMjguNCAyOC40SDE4OC40Yy0xNS43IDAtMjguNC0xMi43LTI4LjQtMjguNFY5NmMwLTUzIDQzLTk2IDk2LTk2ek00MS40IDEwNS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDY0IDY0Yy43IC43IDEuMyAxLjQgMS45IDIuMWMxNC4yLTcuMyAzMC40LTExLjQgNDcuNS0xMS40SDMxMmMxNy4xIDAgMzMuMiA0LjEgNDcuNSAxMS40Yy42LS43IDEuMi0xLjQgMS45LTIuMWw2NC02NGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zbC02NCA2NGMtLjcgLjctMS40IDEuMy0yLjEgMS45YzYuMiAxMiAxMC4xIDI1LjMgMTEuMSAzOS41SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0MTZjMCAyNC42LTUuNSA0Ny44LTE1LjQgNjguNmMyLjIgMS4zIDQuMiAyLjkgNiA0LjhsNjQgNjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBsLTYzLjEtNjMuMWMtMjQuNSAyMS44LTU1LjggMzYuMi05MC4zIDM5LjZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjQ3OS4yYy0zNC41LTMuNC02NS44LTE3LjgtOTAuMy0zOS42TDg2LjYgNTAyLjZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zbDY0LTY0YzEuOS0xLjkgMy45LTMuNCA2LTQuOEMxMDEuNSAzNjcuOCA5NiAzNDQuNiA5NiAzMjBIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIOTYuM2MxLjEtMTQuMSA1LTI3LjUgMTEuMS0zOS41Yy0uNy0uNi0xLjQtMS4yLTIuMS0xLjlsLTY0LTY0Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjQuNSAxMDcuNGwzMy40LTczLjVjNS41LTEyLjEgLjEtMjYuMy0xMS45LTMxLjhzLTI2LjMtLjEtMzEuOCAxMS45TDEyOCA3MS43IDEwMS45IDE0LjFDOTYuNCAyIDgyLjEtMy4zIDcwLjEgMi4xUzUyLjcgMjEuOSA1OC4xIDMzLjlsMzMuNCA3My41Yy0xMC4yIDcuMS0xOC4yIDE3LTIyLjkgMjguNmgtMTdsLTQuMS0yMC43Yy0yLjYtMTMtMTUuMi0yMS40LTI4LjItMTguOFMtMi4xIDExMS43IC41IDEyNC43bDggNDBDMTAuNyAxNzUuOSAyMC42IDE4NCAzMiAxODRINjR2MjMuM2wtMzcuOCA5LjVjLTkuNSAyLjQtMTYuNiAxMC4yLTE3LjkgMTkuOWwtOCA1NmMtMS45IDEzLjEgNy4yIDI1LjMgMjAuNCAyNy4yczI1LjMtNy4yIDI3LjItMjAuNGw1LjctNDAgMTguNC00LjZDODIuNyAyNzQuNiAxMDMuOCAyODggMTI4IDI4OHM0NS4zLTEzLjQgNTYuMS0zMy4ybDE4LjQgNC42IDUuNyA0MGMxLjkgMTMuMSAxNCAyMi4yIDI3LjIgMjAuNHMyMi4yLTE0IDIwLjQtMjcuMmwtOC01NmMtMS40LTkuNy04LjUtMTcuNS0xNy45LTE5LjlMMTkyIDIwNy4zVjE4NGgzMmMxMS40IDAgMjEuMy04LjEgMjMuNS0xOS4zbDgtNDBjMi42LTEzLTUuOC0yNS42LTE4LjgtMjguMnMtMjUuNiA1LjgtMjguMiAxOC44TDIwNC4zIDEzNmgtMTdjLTQuNy0xMS42LTEyLjctMjEuNS0yMi45LTI4LjZ6TTQ5NiAyODYuNWw2NS42LTQ3YzEwLjgtNy43IDEzLjMtMjIuNyA1LjYtMzMuNXMtMjIuNy0xMy4zLTMzLjUtNS42bC01MS40IDM2LjggNi4xLTYyLjljMS4zLTEzLjItOC40LTI0LjktMjEuNi0yNi4ycy0yNC45IDguNC0yNi4yIDIxLjZMNDMyLjggMjUwYy0xMi4zIDEtMjQuMiA1LjYtMzQuMSAxMy4zTDM4NCAyNTQuOGw2LjgtMjBjNC4yLTEyLjYtMi41LTI2LjItMTUtMzAuNHMtMjYuMiAyLjUtMzAuNCAxNWwtMTMuMSAzOC42Yy0zLjcgMTAuOCAuOCAyMi44IDEwLjcgMjguNWwyNy43IDE2TDM1OSAzMjIuNyAzMjEuNSAzMTJjLTkuNC0yLjctMTkuNSAuNi0yNS41IDguM2wtMzQuOSA0NC41Yy04LjIgMTAuNC02LjQgMjUuNSA0LjEgMzMuN3MyNS41IDYuNCAzMy43LTQuMWwyNS0zMS44IDE4LjIgNS4yYy0uNSAyMi42IDExIDQ0LjcgMzIgNTYuOHM0NS45IDExIDY1LjItLjdsMTMuNiAxMy4yLTE1LjEgMzcuNWMtNC45IDEyLjMgMSAyNi4zIDEzLjMgMzEuMnMyNi4zLTEgMzEuMi0xMy4zTDUwMy41IDQ0MGMzLjYtOS4xIDEuNC0xOS40LTUuNi0yNi4ybC0yOC0yNy4xIDExLjYtMjAuMSAyNy43IDE2YzkuOSA1LjcgMjIuNSAzLjcgMzAtNC45TDU2Ni4yIDM0N2M4LjctMTAgNy44LTI1LjEtMi4yLTMzLjlzLTI1LjEtNy44LTMzLjkgMi4ybC0xMy45IDE1LjktMTQuNy04LjVjMS43LTEyLjQtLjItMjUtNS41LTM2LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nQ2lyY2xlQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQ4QzAgMjEuNSAyMS41IDAgNDggMEgzMzZjMjYuNSAwIDQ4IDIxLjUgNDggNDhWMjMyLjJjLTM5LjEgMzIuMy02NCA4MS4xLTY0IDEzNS44YzAgNDkuNSAyMC40IDk0LjIgNTMuMyAxMjYuMkMzNjQuNSA1MDUuMSAzNTEuMSA1MTIgMzM2IDUxMkgyNDBWNDMyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4djgwSDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY0OHpNODAgMjI0Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDgwem04MCAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZIMTc2Yy04LjggMC0xNiA3LjItMTYgMTZ6bTExMi0xNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkgyNzJ6TTY0IDExMnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZIODBjLTguOCAwLTE2IDcuMi0xNiAxNnpNMTc2IDk2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDE3NnptODAgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2em05NiAyNTZhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMTQwLjctNjcuM2MtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZMNTIxLjQgMzUySDQzMmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg4OS40bC0yOC43IDI4LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGw1Ni01NmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtNTYtNTZjLTYuMi02LjItMTYuNC02LjItMjIuNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWlsZGluZ0NpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NlY0MzJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY4MGg5NmMxNS4xIDAgMjguNS02LjkgMzcuMy0xNy44QzM0MC40IDQ2Mi4yIDMyMCA0MTcuNSAzMjAgMzY4YzAtNTQuNyAyNC45LTEwMy41IDY0LTEzNS44VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek02NCAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6bTExMi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MGMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHpNODAgOTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMnpNMjcyIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnpNNjQwIDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNzYuNy00My4zYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC03MiA3MmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDgwIDM4NS40bDYwLjctNjAuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVpbGRpbmdDaXJjbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoOTZWNDMyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2ODBoOTZjMTUuMSAwIDI4LjUtNi45IDM3LjMtMTcuOEMzNDAuNCA0NjIuMiAzMjAgNDE3LjUgMzIwIDM2OGMwLTU0LjcgMjQuOS0xMDMuNSA2NC0xMzUuOFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMjQwem0xMTItMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTgwIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJ6TTI3MiA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTk2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMC0xNDRjOC44IDAgMTYgNy4yIDE2IDE2djgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI4OGMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMEMyMS41IDAgMCAyMS41IDAgNDhWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDk2VjQzMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djgwaDk2YzE1LjEgMCAyOC41LTYuOSAzNy4zLTE3LjhDMzQwLjQgNDYyLjIgMzIwIDQxNy41IDMyMCAzNjhjMC01NC43IDI0LjktMTAzLjUgNjQtMTM1LjhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTY0IDI0MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHptMTEyLTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMjQwek04MCA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMTEyek0yNzIgOTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2ek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptNTkuMy0xODAuN0w1MTguNiAzNjhsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBMNDk2IDM5MC42bC0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMNDczLjQgMzY4bC0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0OTYgMzQ1LjRsMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVpbGRpbmdDb2x1bW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0My40IDIuNmwtMjI0IDk2Yy0xNCA2LTIxLjggMjEtMTguNyAzNS44UzE2LjggMTYwIDMyIDE2MHY4YzAgMTMuMyAxMC43IDI0IDI0IDI0SDQ1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtOGMxNS4yIDAgMjguMy0xMC43IDMxLjMtMjUuNnMtNC44LTI5LjktMTguNy0zNS44bC0yMjQtOTZjLTgtMy40LTE3LjItMy40LTI1LjIgMHpNMTI4IDIyNEg2NFY0MjAuM2MtLjYgLjMtMS4yIC43LTEuOCAxLjFsLTQ4IDMyYy0xMS43IDcuOC0xNyAyMi40LTEyLjkgMzUuOVMxNy45IDUxMiAzMiA1MTJINDgwYzE0LjEgMCAyNi41LTkuMiAzMC42LTIyLjdzLTEuMS0yOC4xLTEyLjktMzUuOWwtNDgtMzJjLS42LS40LTEuMi0uNy0xLjgtMS4xVjIyNEgzODRWNDE2SDM0NFYyMjRIMjgwVjQxNkgyMzJWMjI0SDE2OFY0MTZIMTI4VjIyNHpNMjU2IDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVpbGRpbmdGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NlY0MzJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY4MGg5NmMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMjQwem0xMTItMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTgwIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJ6TTI3MiA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6TTQ0OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY1MTJoNjRWMTkySDYyNGM4LjggMCAxNi03LjIgMTYtMTZWNDhjMC04LjgtNy4yLTE2LTE2LTE2SDQ4MGMwLTE3LjctMTQuMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVpbGRpbmdMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NlY0MzJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY4MGg4OC42Yy01LjQtOS40LTguNi0yMC4zLTguNi0zMlYzNTJjMC0yMy43IDEyLjktNDQuNCAzMi01NS40VjI3MmMwLTMwLjUgMTIuMi01OC4yIDMyLTc4LjRWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTY0IDI0MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHptMTEyLTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMjQwek04MCA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMTEyek0yNzIgOTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2ek00NjQgMjQwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjQ4SDQzMlYyNzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6bS04MCAzMnY0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNTJjMC0xNy43LTE0LjMtMzItMzItMzJWMjcyYzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWlsZGluZ05nbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoOTZWNDMyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2ODBoOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTY0IDI0MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHptMTEyLTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMjQwek0xNjggNjRoNDhjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTg0djY0aDE2VjE0NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djI0YzAgMTMuMy0xMC43IDI0LTI0IDI0SDE3NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRWODBjMC04LjggNy4yLTE2IDE2LTE2ek0zMDQgOTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZ6bS00OCAxNmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djMyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4VjExMnpNNjEuMyA3MS4xbDM0LjcgNTJWODBjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY5NmMwIDcuMS00LjYgMTMuMy0xMS40IDE1LjNzLTE0LS42LTE3LjktNi40TDY0IDEzMi44VjE3NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlY4MGMwLTcuMSA0LjYtMTMuMyAxMS40LTE1LjNzMTQgLjYgMTcuOSA2LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nU2hpZWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwSDMzNmMyNi41IDAgNDggMjEuNSA0OCA0OFYyMDdsLTQyLjQgMTdIMzA0IDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2djMyIDI0LjJWMzA0YzAgLjkgLjEgMS43IC4yIDIuNmMyLjMgNTguMSAyNC4xIDE0NC44IDk4LjcgMjAxLjVjLTUuOCAyLjUtMTIuMiAzLjktMTguOSAzLjlIMjQwVjQzMmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHY4MEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDh6TTgwIDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkg4MHptODAgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2ek02NCAxMTJ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDgwYy04LjggMC0xNiA3LjItMTYgMTZ6TTE3NiA5NmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgxNzZ6bTgwIDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnpNNDIzLjEgMjI1LjdjNS43LTIuMyAxMi4xLTIuMyAxNy44IDBsMTIwIDQ4QzU3MCAyNzcuNCA1NzYgMjg2LjIgNTc2IDI5NmMwIDYzLjMtMjUuOSAxNjguOC0xMzQuOCAyMTQuMmMtNS45IDIuNS0xMi42IDIuNS0xOC41IDBDMzEzLjkgNDY0LjggMjg4IDM1OS4zIDI4OCAyOTZjMC05LjggNi0xOC42IDE1LjEtMjIuM2wxMjAtNDh6TTUyNy40IDMxMkw0MzIgMjczLjhWNDYxLjdjNjguMi0zMyA5MS41LTk5IDk1LjQtMTQ5Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nVW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMEMyMS41IDAgMCAyMS41IDAgNDhWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDk2VjQzMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djgwaDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek02NCAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6bTExMi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MGMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHpNMjM3LjMgNzEuMWwzNC43IDUyVjgwYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2OTZjMCA3LjEtNC42IDEzLjMtMTEuNCAxNS4zcy0xNC0uNi0xNy45LTYuNGwtMzQuNy01MlYxNzZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWODBjMC03LjEgNC42LTEzLjMgMTEuNC0xNS4zczE0IC42IDE3LjkgNi40ek0xMTIgODB2NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlY4MGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4VjgwYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoOTZWNDMyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2ODBoODkuOWMtNi4zLTEwLjItOS45LTIyLjItOS45LTM1LjFjMC00Ni45IDI1LjgtODcuOCA2NC0xMDkuMlYyNzEuOCA0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMjQwem0xMTItMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTgwIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJ6TTI3MiA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6TTU3NiAyNzJhODAgODAgMCAxIDAgLTE2MCAwIDgwIDgwIDAgMSAwIDE2MCAwek0zNTIgNDc3LjFjMCAxOS4zIDE1LjYgMzQuOSAzNC45IDM0LjlINjA1LjFjMTkuMyAwIDM0LjktMTUuNiAzNC45LTM0LjljMC01MS40LTQxLjctOTMuMS05My4xLTkzLjFINDQ1LjFjLTUxLjQgMC05My4xIDQxLjctOTMuMSA5My4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWlsZGluZ1doZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwSDMzNmMyNi41IDAgNDggMjEuNSA0OCA0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMjQwVjQzMmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHY4MEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDh6TTgwIDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkg4MHptODAgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2em0xMTItMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZIMjcyek02NCAxMTJ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDgwYy04LjggMC0xNiA3LjItMTYgMTZ6TTE3NiA5NmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgxNzZ6bTgwIDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnptMzg0IDgwdjE2YzAgNDQuMi0zNS44IDgwLTgwIDgwSDU0NFYyNzJjMC00NC4yIDM1LjgtODAgODAtODBoMTZ6bTAgMTI4YzAgNDQuMi0zNS44IDgwLTgwIDgwSDU0NFYzODRjMC00NC4yIDM1LjgtODAgODAtODBoMTZ2MTZ6bTAgMTEyYzAgNDQuMi0zNS44IDgwLTgwIDgwSDU0NFY0OTZjMC00NC4yIDM1LjgtODAgODAtODBoMTZ2MTZ6TTUxMiA0OTZ2MTZINDk2Yy00NC4yIDAtODAtMzUuOC04MC04MFY0MTZoMTZjNDQuMiAwIDgwIDM1LjggODAgODB6bTAtOTZINDk2Yy00NC4yIDAtODAtMzUuOC04MC04MFYzMDRoMTZjNDQuMiAwIDgwIDM1LjggODAgODB2MTZ6bTAtMTI4djE2SDQ5NmMtNDQuMiAwLTgwLTM1LjgtODAtODBWMTkyaDE2YzQ0LjIgMCA4MCAzNS44IDgwIDgwek01MjggMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRWMTYwYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjU2YzAtMTMuMyAxMC43LTI0IDI0LTI0em05NiA2NHYzMmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY5NmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0ek00NTYgNzJjMTMuMyAwIDI0IDEwLjcgMjQgMjR2MzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWOTZjMC0xMy4zIDEwLjctMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NlY0MzJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY4MGg5NmMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMjQwem0xMTItMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTgwIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJ6TTI3MiA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1bGxob3JuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAzMmMwLTEyLjktNy44LTI0LjYtMTkuOC0yOS42cy0yNS43LTIuMi0zNC45IDYuOUwzODEuNyA1M2MtNDggNDgtMTEzLjEgNzUtMTgxIDc1SDE5MiAxNjAgNjRjLTM1LjMgMC02NCAyOC43LTY0IDY0djk2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM1Mmw4LjcgMGM2Ny45IDAgMTMzIDI3IDE4MSA3NWw0My42IDQzLjZjOS4yIDkuMiAyMi45IDExLjkgMzQuOSA2LjlzMTkuOC0xNi42IDE5LjgtMjkuNlYzMDAuNGMxOC42LTguOCAzMi0zMi41IDMyLTYwLjRzLTEzLjQtNTEuNi0zMi02MC40VjMyem0tNjQgNzYuN1YyNDAgMzcxLjNDMzU3LjIgMzE3LjggMjgwLjUgMjg4IDIwMC43IDI4OEgxOTJWMTkyaDguN2M3OS44IDAgMTU2LjUtMjkuOCAyMTUuMy04My4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWxsc2V5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMjU2QTE5MiAxOTIgMCAxIDAgNjQgMjU2YTE5MiAxOTIgMCAxIDAgMzg0IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMjU2IDgwYTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwem0wLTIyNGExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6TTIyNCAyNTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVyZ2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxLjEgMjI0QzQ1IDIyNCAzMiAyMTEgMzIgMTk0LjljMC0xLjkgLjItMy43IC42LTUuNkMzNy45IDE2OC4zIDc4LjggMzIgMjU2IDMyczIxOC4xIDEzNi4zIDIyMy40IDE1Ny4zYy41IDEuOSAuNiAzLjcgLjYgNS42YzAgMTYuMS0xMyAyOS4xLTI5LjEgMjkuMUg2MS4xek0xNDQgMTI4YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bTI0MCAxNmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6TTI3MiA5NmExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwek0xNiAzMDRjMC0yNi41IDIxLjUtNDggNDgtNDhINDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4SDY0Yy0yNi41IDAtNDgtMjEuNS00OC00OHptMTYgOTZjMC04LjggNy4yLTE2IDE2LTE2SDQ2NGM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRIOTZjLTM1LjMgMC02NC0yOC43LTY0LTY0VjQwMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVyc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcuNiA0LjJDMjgtMi4zIDE1LjItMS4xIDcgN3MtOS40IDIxLTIuOCAzMC41bDExMiAxNjMuM0wxNi42IDIzMy4yQzYuNyAyMzYuNCAwIDI0NS42IDAgMjU2czYuNyAxOS42IDE2LjYgMjIuOGwxMDMuMSAzMy40TDY2LjggNDEyLjhjLTQuOSA5LjMtMy4yIDIwLjcgNC4zIDI4LjFzMTguOCA5LjIgMjguMSA0LjNsMTAwLjYtNTIuOSAzMy40IDEwMy4xYzMuMiA5LjkgMTIuNCAxNi42IDIyLjggMTYuNnMxOS42LTYuNyAyMi44LTE2LjZsMzMuNC0xMDMuMSAxMDAuNiA1Mi45YzkuMyA0LjkgMjAuNyAzLjIgMjguMS00LjNzOS4yLTE4LjggNC4zLTI4LjFMMzkyLjMgMzEyLjJsMTAzLjEtMzMuNGM5LjktMy4yIDE2LjYtMTIuNCAxNi42LTIyLjhzLTYuNy0xOS42LTE2LjYtMjIuOEwzODguOSAxOTguN2wyNS43LTcwLjRjMy4yLTguOCAxLTE4LjYtNS42LTI1LjJzLTE2LjQtOC44LTI1LjItNS42bC03MC40IDI1LjdMMjc4LjggMTYuNkMyNzUuNiA2LjcgMjY2LjQgMCAyNTYgMHMtMTkuNiA2LjctMjIuOCAxNi42bC0zMi4zIDk5LjZMMzcuNiA0LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1c1NpbXBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMEMzNDguOCAwIDQ0OCAzNS4yIDQ0OCA4MFY5NiA0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJIMzUyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0NDhIMTI4djMyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY5NiA4MEMwIDM1LjIgOTkuMiAwIDIyNCAwek02NCAxMjhWMjU2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMlYxMjhjMC0xNy43LTE0LjMtMzItMzItMzJIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek04MCA0MDBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0yODggMGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMEM0MjIuNCAwIDUxMiAzNS4yIDUxMiA4MFY5NmwwIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMybDAgMTYwYzAgMTcuNy0xNC4zIDMyLTMyIDMydjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDQxNmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDQ4SDE5MnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJoMFY5NmgwVjgwQzY0IDM1LjIgMTUzLjYgMCAyODggMHpNMTI4IDE2MHY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgyNzJWMTI4SDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTMwNCAyODhINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMDRWMjg4ek0xNDQgNDAwYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMjg4IDBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0ek0zODQgODBjMC04LjgtNy4yLTE2LTE2LTE2SDIwOGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkgzNjhjOC44IDAgMTYtNy4yIDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdXNpbmVzc1RpbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg0IDQ4SDMyOGM0LjQgMCA4IDMuNiA4IDhWOTZIMTc2VjU2YzAtNC40IDMuNi04IDgtOHptLTU2IDhWOTZINjRDMjguNyA5NiAwIDEyNC43IDAgMTYwdjk2SDE5MiAzNTJoOC4yYzMyLjMtMzkuMSA4MS4xLTY0IDEzNS44LTY0YzUuNCAwIDEwLjcgLjIgMTYgLjdWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDM4NFY1NmMwLTMwLjktMjUuMS01Ni01Ni01NkgxODRjLTMwLjkgMC01NiAyNS4xLTU2IDU2ek0zMjAgMzUySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjg4SDBWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM2MC4yQzMzNS4xIDQ0OS42IDMyMCA0MTAuNSAzMjAgMzY4YzAtNS40IC4yLTEwLjcgLjctMTZsLS43IDB6bTMyMCAxNmExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwek00OTYgMjg4YzguOCAwIDE2IDcuMiAxNiAxNnY0OGgzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg0OTZjLTguOCAwLTE2LTcuMi0xNi0xNlYzMDRjMC04LjggNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyOS4xIDE0Mi45Yy02Mi41LTYyLjUtMTU1LjgtNjIuNS0yMTguMyAwcy02Mi41IDE2My44IDAgMjI2LjNzMTU1LjggNjIuNSAyMTguMyAwYzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNjLTg3LjUgODcuNS0yMjEuMyA4Ny41LTMwOC44IDBzLTg3LjUtMjI5LjMgMC0zMTYuOHMyMjEuMy04Ny41IDMwOC44IDBjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhYmxlQ2FyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMTYwIDU2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTMyIDI4OGMwLTM1LjMgMjguNy02NCA2NC02NEgyMzJWMTU3LjVsLTIwMy4xIDQyYy0xMyAyLjctMjUuNy01LjctMjguNC0xOC42czUuNy0yNS43IDE4LjYtMjguNGwyMzItNDggMjMyLTQ4YzEzLTIuNyAyNS43IDUuNyAyOC40IDE4LjZzLTUuNyAyNS43LTE4LjYgMjguNEwyODAgMTQ3LjVWMjI0SDQxNmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIOTZjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI4OHptNjQgMGMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNkg5NnptMTEyIDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNkgyMjRjLTguOCAwLTE2IDcuMi0xNiAxNnptMTQ0LTE2Yy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNlYzMDRjMC04LjgtNy4yLTE2LTE2LTE2SDM1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FrZUNhbmRsZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODYuNCA1LjVMNjEuOCA0Ny42QzU4IDU0LjEgNTYgNjEuNiA1NiA2OS4yVjcyYzAgMjIuMSAxNy45IDQwIDQwIDQwczQwLTE3LjkgNDAtNDBWNjkuMmMwLTcuNi0yLTE1LTUuOC0yMS42TDEwNS42IDUuNUMxMDMuNiAyLjEgMTAwIDAgOTYgMHMtNy42IDIuMS05LjYgNS41em0xMjggMEwxODkuOCA0Ny42Yy0zLjggNi41LTUuOCAxNC01LjggMjEuNlY3MmMwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwVjY5LjJjMC03LjYtMi0xNS01LjgtMjEuNkwyMzMuNiA1LjVDMjMxLjYgMi4xIDIyOCAwIDIyNCAwcy03LjYgMi4xLTkuNiA1LjV6TTMxNy44IDQ3LjZjLTMuOCA2LjUtNS44IDE0LTUuOCAyMS42VjcyYzAgMjIuMSAxNy45IDQwIDQwIDQwczQwLTE3LjkgNDAtNDBWNjkuMmMwLTcuNi0yLTE1LTUuOC0yMS42TDM2MS42IDUuNUMzNTkuNiAyLjEgMzU2IDAgMzUyIDBzLTcuNiAyLjEtOS42IDUuNUwzMTcuOCA0Ny42ek0xMjggMTc2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjQ4Yy0zNS4zIDAtNjQgMjguNy02NCA2NHY3MWM4LjMgNS4yIDE4LjEgOSAyOC44IDljMTMuNSAwIDI3LjItNi4xIDM4LjQtMTMuNGM1LjQtMy41IDkuOS03LjEgMTMtOS43YzEuNS0xLjMgMi43LTIuNCAzLjUtMy4xYy40LS40IC43LS42IC44LS44bC4xLS4xIDAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwYzMuMS0zLjIgNy40LTQuOSAxMS45LTQuOHM4LjYgMi4xIDExLjYgNS40bDAgMCAwIDAgLjEgLjFjLjEgLjEgLjQgLjQgLjcgLjdjLjcgLjcgMS43IDEuNyAzLjEgM2MyLjggMi42IDYuOCA2LjEgMTEuOCA5LjVjMTAuMiA3LjEgMjMgMTMuMSAzNi4zIDEzLjFzMjYuMS02IDM2LjMtMTMuMWM1LTMuNSA5LTYuOSAxMS44LTkuNWMxLjQtMS4zIDIuNC0yLjMgMy4xLTNjLjMtLjMgLjYtLjYgLjctLjdsLjEtLjFjMy0zLjUgNy40LTUuNCAxMi01LjRzOSAyIDEyIDUuNGwuMSAuMWMuMSAuMSAuNCAuNCAuNyAuN2MuNyAuNyAxLjcgMS43IDMuMSAzYzIuOCAyLjYgNi44IDYuMSAxMS44IDkuNWMxMC4yIDcuMSAyMyAxMy4xIDM2LjMgMTMuMXMyNi4xLTYgMzYuMy0xMy4xYzUtMy41IDktNi45IDExLjgtOS41YzEuNC0xLjMgMi40LTIuMyAzLjEtM2MuMy0uMyAuNi0uNiAuNy0uN2wuMS0uMWMyLjktMy40IDcuMS01LjMgMTEuNi01LjRzOC43IDEuNiAxMS45IDQuOGwwIDAgMCAwIDAgMCAuMSAuMWMuMiAuMiAuNCAuNCAuOCAuOGMuOCAuNyAxLjkgMS44IDMuNSAzLjFjMy4xIDIuNiA3LjUgNi4yIDEzIDkuN2MxMS4yIDcuMyAyNC45IDEzLjQgMzguNCAxMy40YzEwLjcgMCAyMC41LTMuOSAyOC44LTlWMjg4YzAtMzUuMy0yOC43LTY0LTY0LTY0VjE3NmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY0OEgyNTZWMTc2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjQ4SDEyOFYxNzZ6TTQ0OCAzOTQuNmMtOC41IDMuMy0xOC4yIDUuNC0yOC44IDUuNGMtMjIuNSAwLTQyLjQtOS45LTU1LjgtMTguNmMtNC4xLTIuNy03LjgtNS40LTEwLjktNy44Yy0yLjggMi40LTYuMSA1LTkuOCA3LjVDMzI5LjggMzkwIDMxMC42IDQwMCAyODggNDAwcy00MS44LTEwLTU0LjYtMTguOWMtMy41LTIuNC02LjctNC45LTkuNC03LjJjLTIuNyAyLjMtNS45IDQuNy05LjQgNy4yQzIwMS44IDM5MCAxODIuNiA0MDAgMTYwIDQwMHMtNDEuOC0xMC01NC42LTE4LjljLTMuNy0yLjYtNy01LjItOS44LTcuNWMtMy4xIDIuNC02LjggNS4xLTEwLjkgNy44QzcxLjIgMzkwLjEgNTEuMyA0MDAgMjguOCA0MDBjLTEwLjYgMC0yMC4zLTIuMi0yOC44LTUuNFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM5NC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxjdWxhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTk2IDY0SDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWOTZjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTMyIDE2MGEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwek05NiAzNTJhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0ek02NCA0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJoOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek0xOTIgMjU2YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHptMzIgNjRhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHptNjQtNjRhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em0zMiA2NGEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwek0yODggNDQ4YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FsZW5kYXJDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY2NEgyODhWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlY2NGg0OGMyNi41IDAgNDggMjEuNSA0OCA0OHY0OEgwVjExMkMwIDg1LjUgMjEuNSA2NCA0OCA2NEg5NlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMCAxOTJINDQ4VjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTkyek0zMjkgMzA1YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTk1IDk1LTQ3LTQ3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDY0IDY0YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDMyOSAzMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbGVuZGFyRGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY0SDI4OFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjY0aDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djQ4SDBWMTEyQzAgODUuNSAyMS41IDY0IDQ4IDY0SDk2VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0wIDE5Mkg0NDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxOTJ6bTgwIDY0Yy04LjggMC0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2aDk2YzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhckRheXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRIMjg4VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNjRoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NDhIMFYxMTJDMCA4NS41IDIxLjUgNjQgNDggNjRIOTZWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTAgMTkySDQ0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjE5MnptNjQgODB2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDgwYy04LjggMC0xNiA3LjItMTYgMTZ6bTEyOCAwdjMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjcyYzAtOC44LTcuMi0xNi0xNi0xNkgyMDhjLTguOCAwLTE2IDcuMi0xNiAxNnptMTQ0LTE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDMzNnpNNjQgNDAwdjMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWNDAwYzAtOC44LTcuMi0xNi0xNi0xNkg4MGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNDQtMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjQwMGMwLTguOC03LjItMTYtMTYtMTZIMjA4em0xMTIgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlY0MDBjMC04LjgtNy4yLTE2LTE2LTE2SDMzNmMtOC44IDAtMTYgNy4yLTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY0SDI4OFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjY0aDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djQ4SDBWMTEyQzAgODUuNSAyMS41IDY0IDQ4IDY0SDk2VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0wIDE5Mkg0NDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxOTJ6TTMxMiAzNzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTM2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDMxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FsZW5kYXJQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDMyVjY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjQ4SDQ0OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzUyVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjY0SDE2MFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMlM5NiAxNC4zIDk2IDMyek00NDggMTkySDBWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDQwMGMyNi41IDAgNDgtMjEuNSA0OC00OFYxOTJ6TTIyNCAyNDhjMTMuMyAwIDI0IDEwLjcgMjQgMjR2NTZoNTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjQ4djU2YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjM3NkgxNDRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoNTZWMjcyYzAtMTMuMyAxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhcldlZWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRIMjg4VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNjRoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NDhIMFYxMTJDMCA4NS41IDIxLjUgNjQgNDggNjRIOTZWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTAgMTkySDQ0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjE5MnptODAgNjRjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZIMzY4YzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhclhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY0SDI4OFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjY0aDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djQ4SDBWMTEyQzAgODUuNSAyMS41IDY0IDQ4IDY0SDk2VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0wIDE5Mkg0NDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxOTJ6TTMwNSAzMDVjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtNDcgNDctNDctNDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNDcgNDctNDcgNDdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw0Ny00NyA0NyA0N2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTQ3LTQ3IDQ3LTQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAzMlY2NEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnY0OEg0NDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDM1MlYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY2NEgxNjBWMzJjMC0xNy43LTE0LjMtMzItMzItMzJTOTYgMTQuMyA5NiAzMnpNNDQ4IDE5MkgwVjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0MDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYW1lcmFSZXRybyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjAuNiAxMjEuMkwyNzEuMSA5NiA0NDggOTZ2OTZIMzMzLjJjLTIxLjktMTUuMS00OC41LTI0LTc3LjItMjRzLTU1LjIgOC45LTc3LjIgMjRINjRWMTI4SDE5MmM5LjkgMCAxOS43LTIuMyAyOC42LTYuOHpNMCAxMjhWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEgyNzEuMWMtOS45IDAtMTkuNyAyLjMtMjguNiA2LjhMMTkyIDY0SDE2MFY0OGMwLTguOC03LjItMTYtMTYtMTZIODBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDE2QzI4LjcgNjQgMCA5Mi43IDAgMTI4ek0xNjggMzA0YTg4IDg4IDAgMSAxIDE3NiAwIDg4IDg4IDAgMSAxIC0xNzYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FtZXJhUm90YXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMy4xIDY0LjhMMjAyLjcgOTZIMTI4Yy0zNS4zIDAtNjQgMjguNy02NCA2NFY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MGMwLTM1LjMtMjguNy02NC02NC02NEg0MzcuM0w0MjYuOSA2NC44QzQyMC40IDQ1LjIgNDAyLjEgMzIgMzgxLjQgMzJIMjU4LjZjLTIwLjcgMC0zOSAxMy4yLTQ1LjUgMzIuOHpNNDQ4IDI1NmMwIDguOC03LjIgMTYtMTYgMTZIMzU1LjNjLTYuMiAwLTExLjMtNS4xLTExLjMtMTEuM2MwLTMgMS4yLTUuOSAzLjMtOEwzNzEgMjI5Yy0xMy42LTEzLjQtMzEuOS0yMS01MS0yMWMtMTkuMiAwLTM3LjcgNy42LTUxLjMgMjEuM0wyNDkgMjQ5Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDE5LjctMTkuN0MyNTcuNCAxNzIuNyAyODggMTYwIDMyMCAxNjBjMzEuOCAwIDYyLjQgMTIuNiA4NSAzNWwyMy43LTIzLjdjMi4xLTIuMSA1LTMuMyA4LTMuM2M2LjIgMCAxMS4zIDUuMSAxMS4zIDExLjNWMjU2ek0xOTIgMzIwYzAtOC44IDcuMi0xNiAxNi0xNmg3Ni43YzYuMiAwIDExLjMgNS4xIDExLjMgMTEuM2MwIDMtMS4yIDUuOS0zLjMgOEwyNjkgMzQ3YzEzLjYgMTMuNCAzMS45IDIxIDUxIDIxYzE5LjIgMCAzNy43LTcuNiA1MS4zLTIxLjNMMzkxIDMyN2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTE5LjcgMTkuN0MzODIuNiA0MDMuMyAzNTIgNDE2IDMyMCA0MTZjLTMxLjggMC02Mi40LTEyLjYtODUtMzVsLTIzLjcgMjMuN2MtMi4xIDIuMS01IDMuMy04IDMuM2MtNi4yIDAtMTEuMy01LjEtMTEuMy0xMS4zVjMyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0OS4xIDY0LjhMMTM4LjcgOTZINjRDMjguNyA5NiAwIDEyNC43IDAgMTYwVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDM3My4zTDM2Mi45IDY0LjhDMzU2LjQgNDUuMiAzMzguMSAzMiAzMTcuNCAzMkgxOTQuNmMtMjAuNyAwLTM5IDEzLjItNDUuNSAzMi44ek0yNTYgMTkyYTk2IDk2IDAgMSAxIDAgMTkyIDk2IDk2IDAgMSAxIDAtMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYW1wZ3JvdW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3NyA1MmMxMS0xMy44IDguOC0zMy45LTUtNDVzLTMzLjktOC44LTQ1IDVMMjg4IDYwLjggMjQ5IDEyYy0xMS0xMy44LTMxLjItMTYtNDUtNXMtMTYgMzEuMi01IDQ1bDQ4IDYwTDEyLjMgNDA1LjRDNC4zIDQxNS40IDAgNDI3LjcgMCA0NDAuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhIMjg4IDUyOGMyNi41IDAgNDgtMjEuNSA0OC00OFY0NDAuNGMwLTEyLjctNC4zLTI1LjEtMTIuMy0zNUwzMjkgMTEybDQ4LTYwek0yODggNDQ4SDE2OC41TDI4OCAyOTEuNyA0MDcuNSA0NDhIMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYW5keUNhbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ4LjggMTMxLjVjMy43LTIuMyA3LjktMy41IDEyLjItMy41YzEyLjcgMCAyMyAxMC4zIDIzIDIzdjUuNmMwIDkuOS01LjEgMTkuMS0xMy41IDI0LjNMMzAuMSAzOTMuN0MuMSA0MTIuNS05IDQ1MS45IDkuNyA0ODEuOXM1OC4yIDM5LjEgODguMiAyMC40TDQzOC40IDI4OS41YzQ1LjgtMjguNiA3My42LTc4LjggNzMuNi0xMzIuOFYxNTFDNTEyIDY3LjYgNDQ0LjQgMCAzNjEgMGMtMjguMyAwLTU2IDgtODAuMSAyM0wyNTQuMSAzOS43Yy0zMCAxOC43LTM5LjEgNTguMi0yMC40IDg4LjJzNTguMiAzOS4xIDg4LjIgMjAuNGwyNi44LTE2Ljh6TTI5OC40IDQ5LjhjOS4yLTUuNyAxOS4xLTEwLjEgMjkuNC0xMy4xTDM0OCA5Ny41Yy01LjcgMS40LTExLjIgMy43LTE2LjMgNi44bC0xMi42IDcuOUwyOTguNCA0OS44em04OC41IDUyLjdsNDYuMi00Ni4yYzguNSA2LjUgMTYuMSAxNC4xIDIyLjYgMjIuNmwtNDYuMiA0Ni4yYy01LjEtOS42LTEzLTE3LjUtMjIuNi0yMi42em0yOC45IDU5LjNsNjEuNiAyMC41Yy0yLjIgMTAuNS01LjggMjAuNy0xMC41IDMwLjJsLTYyLTIwLjdjNi4yLTguOCAxMC4xLTE5LjEgMTEtMzAuMXptLTg2LjEgODIuNWw2MC40IDM3LjctMzAuMiAxOC45LTYwLjQtMzcuNyAzMC4yLTE4Ljl6bS0xMDcuMiA2N2w2MC40IDM3LjctMzAuMiAxOC45LTYwLjQtMzcuNyAzMC4yLTE4Ljl6TTExOS4zIDM3NS43bDYwLjQgMzcuNy0zMC4yIDE4LjlMODkuMSAzOTQuNmwzMC4yLTE4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbm5hYmlzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYzUuMyAwIDEwLjMgMi43IDEzLjMgNy4xYzE1LjggMjMuNSAzNi43IDYzLjcgNDkuMiAxMDljNy4yIDI2LjQgMTEuOCA1NS4yIDEwLjQgODRjMTEuNS04LjggMjMuNy0xNi43IDM1LjgtMjMuNmM0MS0yMy4zIDg0LjQtMzYuOSAxMTIuMi00Mi41YzUuMi0xIDEwLjcgLjYgMTQuNCA0LjRzNS40IDkuMiA0LjQgMTQuNWMtNS42IDI3LjctMTkuMyA3MC45LTQyLjcgMTExLjdjLTkuMSAxNS45LTE5LjkgMzEuNy0zMi40IDQ2LjNjMjcuOCA2LjYgNTIuNCAxNy4zIDY3LjIgMjUuNWM1LjEgMi44IDguMiA4LjIgOC4yIDE0cy0zLjIgMTEuMi04LjIgMTRjLTE1LjIgOC40LTQwLjkgMTkuNS02OS44IDI2LjFjLTIwLjIgNC42LTQyLjkgNy4yLTY1LjIgNC42bDguMyAzMy4xYzEuNSA2LjEtLjYgMTIuNC01LjUgMTYuNHMtMTEuNiA0LjYtMTcuMiAxLjlMMjgwIDQxNy4yVjQ4OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY0MTcuMmwtNTguNSAyOS4xYy01LjYgMi44LTEyLjMgMi4xLTE3LjItMS45cy03LTEwLjMtNS41LTE2LjRsOC4zLTMzLjFjLTIyLjIgMi42LTQ1IDAtNjUuMi00LjZjLTI4LjktNi42LTU0LjYtMTcuNi02OS44LTI2LjFjLTUuMS0yLjgtOC4yLTguMi04LjItMTRzMy4yLTExLjIgOC4yLTE0YzE0LjgtOC4yIDM5LjQtMTguOCA2Ny4yLTI1LjVDNzguOSAyOTYuMyA2OC4xIDI4MC41IDU5IDI2NC42Yy0yMy40LTQwLjgtMzcuMS04NC00Mi43LTExMS43Yy0xLjEtNS4yIC42LTEwLjcgNC40LTE0LjVzOS4yLTUuNCAxNC40LTQuNGMyNy45IDUuNSA3MS4yIDE5LjIgMTEyLjIgNDIuNWMxMi4xIDYuOSAyNC4zIDE0LjcgMzUuOCAyMy42Yy0xLjQtMjguNyAzLjEtNTcuNiAxMC40LTg0YzEyLjUtNDUuMyAzMy40LTg1LjUgNDkuMi0xMDljMy00LjQgOC03LjEgMTMuMy03LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcHN1bGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDE0NGMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4VjI1Nkg2NFYxNDR6TTAgMTQ0VjM2OGMwIDYxLjkgNTAuMSAxMTIgMTEyIDExMnMxMTItNTAuMSAxMTItMTEyVjE4OS42YzEuOCAxOS4xIDguMiAzOCAxOS44IDU0LjhMMzcyLjMgNDMxLjdjMzUuNSA1MS43IDEwNS4zIDY0LjMgMTU2IDI4LjFzNjMtMTA3LjUgMjcuNS0xNTkuMkw0MjcuMyAxMTMuM0MzOTEuOCA2MS41IDMyMS45IDQ5IDI3MS4zIDg1LjJjLTI4IDIwLTQ0LjMgNTAuOC00Ny4zIDgzVjE0NGMwLTYxLjktNTAuMS0xMTItMTEyLTExMlMwIDgyLjEgMCAxNDR6bTI5Ni42IDY0LjJjLTE2LTIzLjMtMTAtNTUuMyAxMS45LTcxYzIxLjItMTUuMSA1MC41LTEwLjMgNjYgMTIuMmw2NyA5Ny42TDM2MS42IDMwM2wtNjUtOTQuOHpNNDkxIDQwNy43Yy0uOCAuNi0xLjYgMS4xLTIuNCAxLjZsNC0yLjhjLS41IC40LTEgLjgtMS42IDEuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyQmF0dGVyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMmw5NiAwYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMyaDE2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTYwYzAtMzUuMyAyOC43LTY0IDY0LTY0bDE2IDB6bTMwNCA5NmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnYzMkgzMjBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoMzJ2MzJjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyNTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzg0VjE5MnpNODAgMjQwYzAgOC44IDcuMiAxNiAxNiAxNmg5NmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg5NmMtOC44IDAtMTYgNy4yLTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJCdXJzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgOGMtNi42IDAtMTIuNCA0LTE0LjkgMTAuMWwtMjkuNCA3NEw1NS42IDY4LjljLTYuMy0xLjktMTMuMSAuMi0xNy4yIDUuM3MtNC42IDEyLjItMS40IDE3LjlsMzkuNSA2OS4xTDEwLjkgMjA2LjRjLTUuNCAzLjctOCAxMC4zLTYuNSAxNi43czYuNyAxMS4yIDEzLjEgMTIuMmw3OC43IDEyLjJMOTAuNiAzMjdjLS41IDYuNSAzLjEgMTIuNyA5IDE1LjVzMTIuOSAxLjggMTcuOC0yLjZsMzUuMy0zMi41IDkuNS0zNS40IDEwLjQtMzguNmM4LTI5LjkgMzAuNS01Mi4xIDU3LjktNjAuOWw0MS01OS4yYzExLjMtMTYuMyAyNi40LTI4LjkgNDMuNS0zNy4yYy0uNC0uNi0uOC0xLjItMS4zLTEuOGMtNC4xLTUuMS0xMC45LTcuMi0xNy4yLTUuM0wyMjAuMyA5Mi4xbC0yOS40LTc0QzE4OC40IDEyIDE4Mi42IDggMTc2IDh6TTM2Ny43IDE2MS41bDEzNS42IDM2LjNjNi41IDEuOCAxMS4zIDcuNCAxMS44IDE0LjJsNC42IDU2LjUtMjAxLjUtNTQgMzIuMi00Ni42YzMuOC01LjYgMTAuOC04LjEgMTcuMy02LjR6bS02OS45LTMwbC00Ny45IDY5LjNjLTIxLjYgMy00MC4zIDE4LjYtNDYuMyA0MWwtMTAuNCAzOC42LTE2LjYgNjEuOC04LjMgMzAuOWMtNC42IDE3LjEgNS42IDM0LjYgMjIuNiAzOS4ybDE1LjUgNC4xYzE3LjEgNC42IDM0LjYtNS42IDM5LjItMjIuNmw4LjMtMzAuOSAyNDcuMyA2Ni4zLTguMyAzMC45Yy00LjYgMTcuMSA1LjYgMzQuNiAyMi42IDM5LjJsMTUuNSA0LjFjMTcuMSA0LjYgMzQuNi01LjYgMzkuMi0yMi42bDguMy0zMC45TDU5NSAzODhsMTAuNC0zOC42YzYtMjIuNC0yLjUtNDUuMi0xOS42LTU4LjdsLTYuOC04NGMtMi43LTMzLjctMjYuNC02Mi01OS03MC44TDM4NC4yIDk5LjdjLTMyLjctOC44LTY3LjMgNC04Ni41IDMxLjh6bS0xNyAxMzFhMjQgMjQgMCAxIDEgLTEyLjQgNDYuNCAyNCAyNCAwIDEgMSAxMi40LTQ2LjR6bTIxNy45IDgzLjJBMjQgMjQgMCAxIDEgNTQ1IDM1OC4xYTI0IDI0IDAgMSAxIC00Ni40LTEyLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhck9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4MCAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI0ek0xODUuOCAyMjRIMzI2LjJjNi44IDAgMTIuOCA0LjMgMTUuMSAxMC42TDM2MC4zIDI4OEgxNTEuN2wxOS4xLTUzLjRjMi4zLTYuNCA4LjMtMTAuNiAxNS4xLTEwLjZ6bS03NS4zLTEwLjlMODIuMiAyOTIuNEM2Mi4xIDMwMC45IDQ4IDMyMC44IDQ4IDM0NHY0MCA2NCAzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMkg5NmMxNy43IDAgMzItMTQuMyAzMi0zMlY0NDhIMzg0djMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjQ0OCAzODQgMzQ0YzAtMjMuMi0xNC4xLTQzLjEtMzQuMi01MS42bC0yOC4zLTc5LjNDMzkwLjEgMTgxLjMgMzYwIDE2MCAzMjYuMiAxNjBIMTg1LjhjLTMzLjggMC02NCAyMS4zLTc1LjMgNTMuMXpNMTI4IDM0NGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTIzMiAyNGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwek0zOSAzOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsNDggNDhjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDczIDM5Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHptNDAwIDBMMzkxIDg3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNDgtNDhjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyUmVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjUuNCA5NkgzNDYuNmMxMy42IDAgMjUuNyA4LjYgMzAuMiAyMS40TDQwMi45IDE5MkgxMDkuMWwyNi4xLTc0LjZjNC41LTEyLjggMTYuNi0yMS40IDMwLjItMjEuNHptLTkwLjYgLjNMMzkuNiAxOTYuOEMxNi40IDIwNi40IDAgMjI5LjMgMCAyNTZ2ODBjMCAyMy43IDEyLjkgNDQuNCAzMiA1NS40VjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg5NmMxNy43IDAgMzItMTQuMyAzMi0zMlY0MDBIMzg0djQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM5MS40YzE5LjEtMTEuMSAzMi0zMS43IDMyLTU1LjRWMjU2YzAtMjYuNy0xNi40LTQ5LjYtMzkuNi01OS4yTDQzNy4yIDk2LjNDNDIzLjcgNTcuOCAzODcuNCAzMiAzNDYuNiAzMkgxNjUuNGMtNDAuOCAwLTc3LjEgMjUuOC05MC42IDY0LjN6TTIwOCAyNzJoOTZjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyMDhjLTguOCAwLTE2LTcuMi0xNi0xNlYyODhjMC04LjggNy4yLTE2IDE2LTE2ek00OCAyODBjMC0xMy4zIDEwLjctMjQgMjQtMjRoMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINzJjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0zNjAtMjRoMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINDA4Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJTaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3MS4zIDk2SDIyNHY5NkgxMTEuM2wzMC40LTc1LjlDMTQ2LjUgMTA0IDE1OC4yIDk2IDE3MS4zIDk2ek0yNzIgMTkyVjk2aDgxLjJjOS43IDAgMTguOSA0LjQgMjUgMTJsNjcuMiA4NEgyNzJ6bTI1Ni4yIDFMNDI4LjIgNjhjLTE4LjItMjIuOC00NS44LTM2LTc1LTM2SDE3MS4zYy0zOS4zIDAtNzQuNiAyMy45LTg5LjEgNjAuM0w0MC42IDE5Ni40QzE2LjggMjA1LjggMCAyMjguOSAwIDI1NlYzNjhjMCAxNy43IDE0LjMgMzIgMzIgMzJINjUuM2M3LjYgNDUuNCA0Ny4xIDgwIDk0LjcgODBzODcuMS0zNC42IDk0LjctODBIMzg1LjNjNy42IDQ1LjQgNDcuMSA4MCA5NC43IDgwczg3LjEtMzQuNiA5NC43LTgwSDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMjBjMC02NS4yLTQ4LjgtMTE5LTExMS44LTEyN3pNNDM0LjcgMzY4YTQ4IDQ4IDAgMSAxIDkwLjUgMzIgNDggNDggMCAxIDEgLTkwLjUtMzJ6TTE2MCAzMzZhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJUdW5uZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBDMTE0LjYgMCAwIDExNC42IDAgMjU2VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGg0Mi44Yy02LjYtNS45LTEwLjgtMTQuNC0xMC44LTI0VjM3NmMwLTIwLjggMTEuMy0zOC45IDI4LjEtNDguNmwyMS02NC43YzcuNS0yMy4xIDI5LTM4LjcgNTMuMy0zOC43SDMxMy42YzI0LjMgMCA0NS44IDE1LjYgNTMuMyAzOC43bDIxIDY0LjdjMTYuOCA5LjcgMjguMiAyNy44IDI4LjIgNDguNlY0ODhjMCA5LjYtNC4yIDE4LjEtMTAuOCAyNEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjU2QzUxMiAxMTQuNiAzOTcuNCAwIDI1NiAwek0zNjIuOCA1MTJjLTYuNi01LjktMTAuOC0xNC40LTEwLjgtMjRWNDQ4SDE2MHY0MGMwIDkuNi00LjIgMTguMS0xMC44IDI0SDM2Mi44ek0xOTAuOCAyNzcuNUwxNzcgMzIwSDMzNWwtMTMuOC00Mi41Yy0xLjEtMy4zLTQuMS01LjUtNy42LTUuNUgxOTguNGMtMy41IDAtNi41IDIuMi03LjYgNS41ek0xNjggNDA4YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMjAwLTI0YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzUuMiAxMTcuNEwxMDkuMSAxOTJINDAyLjlsLTI2LjEtNzQuNkMzNzIuMyAxMDQuNiAzNjAuMiA5NiAzNDYuNiA5NkgxNjUuNGMtMTMuNiAwLTI1LjcgOC42LTMwLjIgMjEuNHpNMzkuNiAxOTYuOEw3NC44IDk2LjNDODguMyA1Ny44IDEyNC42IDMyIDE2NS40IDMySDM0Ni42YzQwLjggMCA3Ny4xIDI1LjggOTAuNiA2NC4zbDM1LjIgMTAwLjVjMjMuMiA5LjYgMzkuNiAzMi41IDM5LjYgNTkuMlY0MDB2NDhjMCAxNy43LTE0LjMgMzItMzIgMzJINDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDBIOTZ2NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQwMCAyNTZjMC0yNi43IDE2LjQtNDkuNiAzOS42LTU5LjJ6TTEyOCAyODhhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMjg4IDMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyYXZhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDExMkMwIDY3LjggMzUuOCAzMiA4MCAzMkg0MTZjODguNCAwIDE2MCA3MS42IDE2MCAxNjBWMzUyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMiAwSDI4OGMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05Nkg4MGMtNDQuMiAwLTgwLTM1LjgtODAtODBWMTEyek0zMjAgMzUySDQ0OFYyNTZINDE2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDMyVjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzNTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjM1MnpNOTYgMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMySDk2em05NiAzMzZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJldERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTM3LjQgMzc0LjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTI4LTEyOGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOXMtMTYuNi0xOS44LTI5LjYtMTkuOEwzMiAxOTJjLTEyLjkgMC0yNC42IDcuOC0yOS42IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45bDEyOCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmV0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjQgMjc4LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDEyOC0xMjhjOS4yLTkuMiAyMi45LTExLjkgMzQuOS02LjlzMTkuOCAxNi42IDE5LjggMjkuNmwwIDI1NmMwIDEyLjktNy44IDI0LjYtMTkuOCAyOS42cy0yNS43IDIuMi0zNC45LTYuOWwtMTI4LTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyZXRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDYuNiAyNzguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTI4LTEyOGMtOS4yLTkuMi0yMi45LTExLjktMzQuOS02LjlzLTE5LjggMTYuNi0xOS44IDI5LjZsMCAyNTZjMCAxMi45IDcuOCAyNC42IDE5LjggMjkuNnMyNS43IDIuMiAzNC45LTYuOWwxMjgtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJldFVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Mi42IDEzNy40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTI4IDEyOGMtOS4yIDkuMi0xMS45IDIyLjktNi45IDM0LjlzMTYuNiAxOS44IDI5LjYgMTkuOEgyODhjMTIuOSAwIDI0LjYtNy44IDI5LjYtMTkuOHMyLjItMjUuNy02LjktMzQuOWwtMTI4LTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2Fycm90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Ni43IDZDMzM3LjYgMTcgMzIwIDQyLjMgMzIwIDcyYzAgNDAgMTUuMyA1NS4zIDQwIDgwczQwIDQwIDgwIDQwYzI5LjcgMCA1NS0xNy42IDY2LTI2LjdjNC0zLjMgNi04LjIgNi0xMy4zcy0yLTEwLTYtMTMuMmMtMTEuNC05LjEtMzguMy0yNi44LTc0LTI2LjhjLTMyIDAtNDAgOC00MCA4czgtOCA4LTQwYzAtMzUuNy0xNy43LTYyLjYtMjYuOC03NEMzNzAgMiAzNjUuMSAwIDM2MCAwcy0xMCAyLTEzLjMgNnpNMjQ0LjYgMTM2Yy00MCAwLTc3LjEgMTguMS0xMDEuNyA0OC4ybDYwLjUgNjAuNWM2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwbC01NS4zLTU1LjMgMCAuMUwyLjIgNDc3LjlDLTIgNDg3LS4xIDQ5Ny44IDcgNTA1czE3LjkgOSAyNy4xIDQuOGwxMzQuNy02Mi40LTUyLjEtNTIuMWMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDE5OS43IDQzM2wxMDAuMi00Ni40YzQ2LjQtMjEuNSA3Ni4yLTY4IDc2LjItMTE5LjJDMzc2IDE5NC44IDMxNy4yIDEzNiAyNDQuNiAxMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcnRBcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgMEMxMC43IDAgMCAxMC43IDAgMjRTMTAuNyA0OCAyNCA0OEg2OS41YzMuOCAwIDcuMSAyLjcgNy45IDYuNWw1MS42IDI3MWM2LjUgMzQgMzYuMiA1OC41IDcwLjcgNTguNUg0ODhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTk5LjdjLTExLjUgMC0yMS40LTguMi0yMy42LTE5LjVMMTcwLjcgMjg4SDQ1OS4yYzMyLjYgMCA2MS4xLTIxLjggNjkuNS01My4zbDQxLTE1Mi4zQzU3Ni42IDU3IDU1Ny40IDMyIDUzMS4xIDMySDM2MFYxMzQuMWwyMy0yM2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTY0IDY0Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtNjQtNjRjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwyMyAyM1YzMkgxMjAuMUMxMTEgMTIuOCA5MS42IDAgNjkuNSAwSDI0ek0xNzYgNTEyYTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptMzM2LTQ4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcnRGbGF0YmVkU3VpdGNhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMkMwIDE0LjMgMTQuMyAwIDMyIDBINDhjNDQuMiAwIDgwIDM1LjggODAgODBWMzY4YzAgOC44IDcuMiAxNiAxNiAxNkg2MDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINTQxLjNjMS44IDUgMi43IDEwLjQgMi43IDE2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4YzAtNS42IDEtMTEgMi43LTE2SDI1My4zYzEuOCA1IDIuNyAxMC40IDIuNyAxNmMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OGMwLTUuNiAxLTExIDIuNy0xNkgxNDRjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjgwYzAtOC44LTcuMi0xNi0xNi0xNkgzMkMxNC4zIDY0IDAgNDkuNyAwIDMyek00MzIgOTZWNTZjMC00LjQtMy42LTgtOC04SDM0NGMtNC40IDAtOCAzLjYtOCA4Vjk2aDk2ek0yODggOTZWNTZjMC0zMC45IDI1LjEtNTYgNTYtNTZoODBjMzAuOSAwIDU2IDI1LjEgNTYgNTZWOTYgMzIwSDI4OFY5NnpNNTEyIDMyMFY5NmgxNmMyNi41IDAgNDggMjEuNSA0OCA0OFYyNzJjMCAyNi41LTIxLjUgNDgtNDggNDhINTEyek0yNDAgOTZoMTZWMzIwSDI0MGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJ0RmxhdGJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAwQzE0LjMgMCAwIDE0LjMgMCAzMlMxNC4zIDY0IDMyIDY0SDQ4YzguOCAwIDE2IDcuMiAxNiAxNlYzNjhjMCA0NC4yIDM1LjggODAgODAgODBoMTguN2MtMS44IDUtMi43IDEwLjQtMi43IDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4czQ4LTIxLjUgNDgtNDhjMC01LjYtMS0xMS0yLjctMTZINDUwLjdjLTEuOCA1LTIuNyAxMC40LTIuNyAxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4YzAtNS42LTEtMTEtMi43LTE2SDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxNDRjLTguOCAwLTE2LTcuMi0xNi0xNlY4MEMxMjggMzUuOCA5Mi4yIDAgNDggMEgzMnpNMTkyIDgwVjI3MmMwIDI2LjUgMjEuNSA0OCA0OCA0OEg1NjBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhINDY0VjE3NmMwIDUuOS0zLjIgMTEuMy04LjUgMTQuMXMtMTEuNSAyLjUtMTYuNC0uOEw0MDAgMTYzLjJsLTM5LjEgMjYuMWMtNC45IDMuMy0xMS4yIDMuNi0xNi40IC44cy04LjUtOC4yLTguNS0xNC4xVjMySDI0MGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcnRQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjRDMCAxMC43IDEwLjcgMCAyNCAwSDY5LjVjMjIgMCA0MS41IDEyLjggNTAuNiAzMmg0MTFjMjYuMyAwIDQ1LjUgMjUgMzguNiA1MC40bC00MSAxNTIuM2MtOC41IDMxLjQtMzcgNTMuMy02OS41IDUzLjNIMTcwLjdsNS40IDI4LjVjMi4yIDExLjMgMTIuMSAxOS41IDIzLjYgMTkuNUg0ODhjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMTk5LjdjLTM0LjYgMC02NC4zLTI0LjYtNzAuNy01OC41TDc3LjQgNTQuNWMtLjctMy44LTQtNi41LTcuOS02LjVIMjRDMTAuNyA0OCAwIDM3LjMgMCAyNHpNMTI4IDQ2NGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem0zMzYtNDhhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2ek0yNTIgMTYwYzAgMTEgOSAyMCAyMCAyMGg0NHY0NGMwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMFYxODBoNDRjMTEgMCAyMC05IDIwLTIwcy05LTIwLTIwLTIwSDM1NlY5NmMwLTExLTktMjAtMjAtMjBzLTIwIDktMjAgMjB2NDRIMjcyYy0xMSAwLTIwIDktMjAgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcnRTaG9wcGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI0QzAgMTAuNyAxMC43IDAgMjQgMEg2OS41YzIyIDAgNDEuNSAxMi44IDUwLjYgMzJoNDExYzI2LjMgMCA0NS41IDI1IDM4LjYgNTAuNGwtNDEgMTUyLjNjLTguNSAzMS40LTM3IDUzLjMtNjkuNSA1My4zSDE3MC43bDUuNCAyOC41YzIuMiAxMS4zIDEyLjEgMTkuNSAyMy42IDE5LjVINDg4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDE5OS43Yy0zNC42IDAtNjQuMy0yNC42LTcwLjctNTguNUw3Ny40IDU0LjVjLS43LTMuOC00LTYuNS03LjktNi41SDI0QzEwLjcgNDggMCAzNy4zIDAgMjR6TTEyOCA0NjRhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptMzM2LTQ4YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FzaFJlZ2lzdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDNDYuMyAwIDMyIDE0LjMgMzIgMzJWOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoODB2MzJIODdjLTMxLjYgMC01OC41IDIzLjEtNjMuMyA1NC40TDEuMSAzNjQuMUMuNCAzNjguOCAwIDM3My42IDAgMzc4LjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYzNzguNGMwLTQuOC0uNC05LjYtMS4xLTE0LjRMNDg4LjIgMjE0LjRDNDgzLjUgMTgzLjEgNDU2LjYgMTYwIDQyNSAxNjBIMjA4VjEyOGg4MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkg2NHpNOTYgNDhIMjU2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2ek02NCA0MzJjMC04LjggNy4yLTE2IDE2LTE2SDQzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2em00OC0xNjhhMjQgMjQgMCAxIDEgMC00OCAyNCAyNCAwIDEgMSAwIDQ4em0xMjAtMjRhMjQgMjQgMCAxIDEgLTQ4IDAgMjQgMjQgMCAxIDEgNDggMHpNMTYwIDM0NGEyNCAyNCAwIDEgMSAwLTQ4IDI0IDI0IDAgMSAxIDAgNDh6TTMyOCAyNDBhMjQgMjQgMCAxIDEgLTQ4IDAgMjQgMjQgMCAxIDEgNDggMHpNMjU2IDM0NGEyNCAyNCAwIDEgMSAwLTQ4IDI0IDI0IDAgMSAxIDAgNDh6TTQyNCAyNDBhMjQgMjQgMCAxIDEgLTQ4IDAgMjQgMjQgMCAxIDEgNDggMHpNMzUyIDM0NGEyNCAyNCAwIDEgMSAwLTQ4IDI0IDI0IDAgMSAxIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMTkyaDE3LjFjMjIuMSAzOC4zIDYzLjUgNjQgMTEwLjkgNjRjMTEgMCAyMS44LTEuNCAzMi00djQgMzJWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjMzOS4yTDI4MCA0NDhoNTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTkyYy01MyAwLTk2LTQzLTk2LTk2VjE5Mi41YzAtMTYuMS0xMi0yOS44LTI4LTMxLjhsLTcuOS0xYy0xNy41LTIuMi0zMC0xOC4yLTI3LjgtMzUuN3MxOC4yLTMwIDM1LjctMjcuOGw3LjkgMWM0OCA2IDg0LjEgNDYuOCA4NC4xIDk1LjN2ODUuM2MzNC40LTUxLjcgOTMuMi04NS44IDE2MC04NS44em0xNjAgMjYuNXYwYy0xMCAzLjUtMjAuOCA1LjUtMzIgNS41Yy0yOC40IDAtNTQtMTIuNC03MS42LTMyaDBjLTMuNy00LjEtNy04LjUtOS45LTEzLjJDMzU3LjMgMTY0IDM1MiAxNDYuNiAzNTIgMTI4djBWMzIgMTIgMTAuN0MzNTIgNC44IDM1Ni43IC4xIDM2Mi42IDBoLjJjMy4zIDAgNi40IDEuNiA4LjQgNC4ybDAgLjFMMzg0IDIxLjNsMjcuMiAzNi4zTDQxNiA2NGg2NGw0LjgtNi40TDUxMiAyMS4zIDUyNC44IDQuM2wwLS4xYzItMi42IDUuMS00LjIgOC40LTQuMmguMkM1MzkuMyAuMSA1NDQgNC44IDU0NCAxMC43VjEyIDMydjk2YzAgMTcuMy00LjYgMzMuNi0xMi42IDQ3LjZjLTExLjMgMTkuOC0yOS42IDM1LjItNTEuNCA0Mi45ek00MzIgMTI4YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bTQ4IDE2YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2VkaVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjY2LjdDMTAxLjIgODEuOSAzMiAxNjAuOSAzMiAyNTZzNjkuMiAxNzQuMSAxNjAgMTg5LjNWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDQ1LjNjMzAuOS01LjIgNTkuMi0xNy43IDgzLjItMzUuOGMxNC4xLTEwLjYgMTctMzAuNyA2LjQtNDQuOHMtMzAuNy0xNy00NC44LTYuNGMtMTMuMiA5LjktMjguMyAxNy4zLTQ0LjggMjEuNlYxMzJjMTYuNCA0LjIgMzEuNiAxMS42IDQ0LjggMjEuNmMxNC4xIDEwLjYgMzQuMiA3LjggNDQuOC02LjRzNy44LTM0LjItNi40LTQ0LjhjLTI0LTE4LTUyLjQtMzAuNi04My4yLTM1LjhWMzJ6TTE5MiAxMzJWMzgwYy01NS4yLTE0LjItOTYtNjQuMy05Ni0xMjRzNDAuOC0xMDkuOCA5Ni0xMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNlbnRTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY2LjdjMzAuOSA1LjIgNTkuMiAxNy43IDgzLjIgMzUuOGMxNC4xIDEwLjYgMTcgMzAuNyA2LjQgNDQuOHMtMzAuNyAxNy00NC44IDYuNEMyNzkuNCAxMzcuNSAyNTIuOSAxMjggMjI0IDEyOGMtNzAuNyAwLTEyOCA1Ny4zLTEyOCAxMjhzNTcuMyAxMjggMTI4IDEyOGMyOC45IDAgNTUuNC05LjUgNzYuOC0yNS42YzE0LjEtMTAuNiAzNC4yLTcuOCA0NC44IDYuNHM3LjggMzQuMi02LjQgNDQuOGMtMjQgMTgtNTIuNCAzMC42LTgzLjIgMzUuOFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ1LjNDMTAxLjIgNDMwLjEgMzIgMzUxLjEgMzIgMjU2czY5LjItMTc0LjEgMTYwLTE4OS4zVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDZXJ0aWZpY2F0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTEgNy4zQzIwNSAxIDE5Ni0xLjQgMTg3LjYgLjhzLTE0LjkgOC45LTE3LjEgMTcuM0wxNTQuNyA4MC42bC02Mi0xNy41Yy04LjQtMi40LTE3LjQgMC0yMy41IDYuMXMtOC41IDE1LjEtNi4xIDIzLjVsMTcuNSA2MkwxOC4xIDE3MC42Yy04LjQgMi4xLTE1IDguNy0xNy4zIDE3LjFTMSAyMDUgNy4zIDIxMWw0Ni4yIDQ1TDcuMyAzMDFDMSAzMDctMS40IDMxNiAuOCAzMjQuNHM4LjkgMTQuOSAxNy4zIDE3LjFsNjIuNSAxNS44LTE3LjUgNjJjLTIuNCA4LjQgMCAxNy40IDYuMSAyMy41czE1LjEgOC41IDIzLjUgNi4xbDYyLTE3LjUgMTUuOCA2Mi41YzIuMSA4LjQgOC43IDE1IDE3LjEgMTcuM3MxNy4zLS4yIDIzLjQtNi40bDQ1LTQ2LjIgNDUgNDYuMmM2LjEgNi4yIDE1IDguNyAyMy40IDYuNHMxNC45LTguOSAxNy4xLTE3LjNsMTUuOC02Mi41IDYyIDE3LjVjOC40IDIuNCAxNy40IDAgMjMuNS02LjFzOC41LTE1LjEgNi4xLTIzLjVsLTE3LjUtNjIgNjIuNS0xNS44YzguNC0yLjEgMTUtOC43IDE3LjMtMTcuMXMtLjItMTcuNC02LjQtMjMuNGwtNDYuMi00NSA0Ni4yLTQ1YzYuMi02LjEgOC43LTE1IDYuNC0yMy40cy04LjktMTQuOS0xNy4zLTE3LjFsLTYyLjUtMTUuOCAxNy41LTYyYzIuNC04LjQgMC0xNy40LTYuMS0yMy41cy0xNS4xLTguNS0yMy41LTYuMWwtNjIgMTcuNUwzNDEuNCAxOC4xYy0yLjEtOC40LTguNy0xNS0xNy4xLTE3LjNTMzA3IDEgMzAxIDcuM0wyNTYgNTMuNSAyMTEgNy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFpciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggNDhWMjU2aDQ4VjU4LjdjMjMuOSAxMy44IDQwIDM5LjcgNDAgNjkuM1YyNTZoNDhWMTI4QzM4NCA1Ny4zIDMyNi43IDAgMjU2IDBIMTkyQzEyMS4zIDAgNjQgNTcuMyA2NCAxMjhWMjU2aDQ4VjEyOGMwLTI5LjYgMTYuMS01NS41IDQwLTY5LjNWMjU2aDQ4VjQ4aDQ4ek00OCAyODhjLTEyLjEgMC0yMy4yIDYuOC0yOC42IDE3LjdsLTE2IDMyYy01IDkuOS00LjQgMjEuNyAxLjQgMzEuMVMyMC45IDM4NCAzMiAzODRsMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NEgzNTJ2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzODRjMTEuMSAwIDIxLjQtNS43IDI3LjItMTUuMnM2LjQtMjEuMiAxLjQtMzEuMWwtMTYtMzJDNDIzLjIgMjk0LjggNDEyLjEgMjg4IDQwMCAyODhINDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYWxrYm9hcmRVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCA2NGMwLTM1LjMgMjguNy02NCA2NC02NEg1NzZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzUyYzAgMzUuMy0yOC43IDY0LTY0IDY0SDMzNi44Yy0xMS44LTI1LjUtMjkuOS00Ny41LTUyLjQtNjRIMzg0VjMyMGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnYzMmg2NFY2NEwyMjQgNjR2NDkuMUMyMDUuMiAxMDIuMiAxODMuMyA5NiAxNjAgOTZWNjR6bTAgNjRhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6TTEzMy4zIDM1Mmg1My4zQzI2MC4zIDM1MiAzMjAgNDExLjcgMzIwIDQ4NS4zYzAgMTQuNy0xMS45IDI2LjctMjYuNyAyNi43SDI2LjdDMTEuOSA1MTIgMCA1MDAuMSAwIDQ4NS4zQzAgNDExLjcgNTkuNyAzNTIgMTMzLjMgMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFsa2JvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDMyQzYwLjcgMzIgMzIgNjAuNyAzMiA5NlYzODRIOTZWOTZsMzg0IDBWMzg0aDY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDk2ek0yMjQgMzg0djMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0MTZWMzg0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYW1wYWduZUdsYXNzZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU1LjYgMTcuM0MxNjMgMyAxNzkuOS0zLjYgMTk1IDEuOUwzMjAgNDcuNWwxMjUtNDUuNmMxNS4xLTUuNSAzMiAxLjEgMzkuNCAxNS40bDc4LjggMTUyLjljMjguOCA1NS44IDEwLjMgMTIyLjMtMzguNSAxNTYuNkw1NTYuMSA0MTNsNDEtMTVjMTYuNi02IDM1IDIuNSA0MSAxOS4xcy0yLjUgMzUtMTkuMSA0MWwtNzEuMSAyNS45TDQ3Ni44IDUxMGMtMTYuNiA2LjEtMzUtMi41LTQxLTE5LjFzMi41LTM1IDE5LjEtNDFsNDEtMTUtMzEuMy04Ni4yYy01OS40IDUuMi0xMTYuMi0zNC0xMzAtOTUuMkwzMjAgMTg4LjhsLTE0LjYgNjQuN2MtMTMuOCA2MS4zLTcwLjYgMTAwLjQtMTMwIDk1LjJsLTMxLjMgODYuMiA0MSAxNWMxNi42IDYgMjUuMiAyNC40IDE5LjEgNDFzLTI0LjQgMjUuMi00MSAxOS4xTDkyLjIgNDg0LjEgMjEuMSA0NTguMmMtMTYuNi02LjEtMjUuMi0yNC40LTE5LjEtNDFzMjQuNC0yNS4yIDQxLTE5LjFsNDEgMTUgMzEuMy04Ni4yQzY2LjUgMjkyLjUgNDguMSAyMjYgNzYuOSAxNzAuMkwxNTUuNiAxNy4zem00NCA1NC40bC0yNy4yIDUyLjhMMjYxLjYgMTU3bDEzLjEtNTcuOUwxOTkuNiA3MS43em0yNDAuOSAwTDM2NS40IDk5LjEgMzc4LjUgMTU3bDg5LjItMzIuNUw0NDAuNSA3MS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFyZ2luZ1N0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM2MC43IDAgMzIgMjguNyAzMiA2NFY0NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjMwNGgxNmMyMi4xIDAgNDAgMTcuOSA0MCA0MHYzMmMwIDM5LjggMzIuMiA3MiA3MiA3MnM3Mi0zMi4yIDcyLTcyVjI1Mi4zYzMyLjUtMTAuMiA1Ni00MC41IDU2LTc2LjNWMTQ0YzAtOC44LTcuMi0xNi0xNi0xNkg1NDRWODBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2NDhINDgwVjgwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djQ4SDQzMmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgMzUuOCAyMy41IDY2LjEgNTYgNzYuM1YzNzZjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMzQ0YzAtNDguNi0zOS40LTg4LTg4LTg4SDMyMFY2NGMwLTM1LjMtMjguNy02NC02NC02NEg5NnpNMjE2LjkgODIuN2M2IDQgOC41IDExLjUgNi4zIDE4LjNsLTI1IDc0LjlIMjU2YzYuNyAwIDEyLjcgNC4yIDE1IDEwLjRzLjUgMTMuMy00LjYgMTcuN2wtMTEyIDk2Yy01LjUgNC43LTEzLjQgNS4xLTE5LjMgMS4xcy04LjUtMTEuNS02LjMtMTguM2wyNS03NC45SDk2Yy02LjcgMC0xMi43LTQuMi0xNS0xMC40cy0uNS0xMy4zIDQuNi0xNy43bDExMi05NmM1LjUtNC43IDEzLjQtNS4xIDE5LjMtMS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFydEFyZWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNjRjMC0xNy43LTE0LjMtMzItMzItMzJTMCA0Ni4zIDAgNjRWNDAwYzAgNDQuMiAzNS44IDgwIDgwIDgwSDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjY0em05NiAyODhINDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1MS44YzAtNy42LTIuNy0xNS03LjctMjAuOGwtNjUuOC03Ni44Yy0xMi4xLTE0LjItMzMuNy0xNS00Ni45LTEuOGwtMjEgMjFjLTEwIDEwLTI2LjQgOS4yLTM1LjQtMS42bC0zOS4yLTQ3Yy0xMi42LTE1LjEtMzUuNy0xNS40LTQ4LjctLjZMMTM1LjkgMjE1Yy01LjEgNS44LTcuOSAxMy4zLTcuOSAyMS4xdjg0YzAgMTcuNyAxNC4zIDMyIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFydEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlY0MDBjMCA4LjggNy4yIDE2IDE2IDE2SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg4MGMtNDQuMiAwLTgwLTM1LjgtODAtODBWNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJ6bTk2IDk2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDE5MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xOTIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6bTMyIDY0SDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTAgOTZINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hhcnRDb2x1bW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDAwYzAgOC44IDcuMiAxNiAxNiAxNkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIODBjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyek0xNjAgMjI0YzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI1NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMTI4LTY0VjMyMGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnptNjQgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMyek00ODAgOTZWMzIwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYXJ0R2FudHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDAwYzAgOC44IDcuMiAxNiAxNiAxNkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIODBjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyem05NiA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmw5NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6bTk2IDY0SDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTE2MCA5Nmg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzODRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYXJ0TGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMlMwIDQ2LjMgMCA2NFY0MDBjMCA0NC4yIDM1LjggODAgODAgODBINDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDgwYy04LjggMC0xNi03LjItMTYtMTZWNjR6bTQwNi42IDg2LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMzIwIDIxMC43bC01Ny40LTU3LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xMTIgMTEyYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDI0MCAyMjEuM2w1Ny40IDU3LjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTI4LTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hhcnRQaWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDI0MFYxNi42YzAtOSA3LTE2LjYgMTYtMTYuNkM0NDMuNyAwIDU0NCAxMDAuMyA1NDQgMjI0YzAgOS03LjYgMTYtMTYuNiAxNkgzMDR6TTMyIDI3MkMzMiAxNTAuNyAxMjIuMSA1MC4zIDIzOSAzNC4zYzkuMi0xLjMgMTcgNi4xIDE3IDE1LjRWMjg4TDQxMi41IDQ0NC41YzYuNyA2LjcgNi4yIDE3LjctMS41IDIzLjFDMzcxLjggNDk1LjYgMzIzLjggNTEyIDI3MiA1MTJDMTM5LjUgNTEyIDMyIDQwNC42IDMyIDI3MnptNTI2LjQgMTZjOS4zIDAgMTYuNiA3LjggMTUuNCAxN2MtNy43IDU1LjktMzQuNiAxMDUuNi03My45IDE0Mi4zYy02IDUuNi0xNS40IDUuMi0yMS4yLS43TDMyMCAyODhINTU4LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYXJ0U2ltcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCA4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzMmMyNi41IDAgNDggMjEuNSA0OCA0OFY0MzJjMCAyNi41LTIxLjUgNDgtNDggNDhIMjA4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MHpNMCAyNzJjMC0yNi41IDIxLjUtNDggNDgtNDhIODBjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDMyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyNzJ6TTM2OCA5NmgzMmMyNi41IDAgNDggMjEuNSA0OCA0OFY0MzJjMCAyNi41LTIxLjUgNDgtNDggNDhIMzY4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxNDRjMC0yNi41IDIxLjUtNDggNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZWNrRG91YmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Mi42IDg2LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMTYwIDE3OC43bC01Ny40LTU3LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDgwIDgwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjB6bTk2IDEyOGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwxNjAgNDAyLjcgNTQuNiAyOTcuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTI4IDEyOGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwyNTYtMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVja1RvU2xvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA4MGMwLTI2LjUgMjEuNS00OCA0OC00OEg0MzJjMjYuNSAwIDQ4IDIxLjUgNDggNDhWMzg0SDk2Vjgwem0zMTMgNDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC0xMTEgMTExLTQ3LTQ3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDY0IDY0YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDQwOSAxNjFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjl6TTAgMzM2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDY0VjQxNkg1MTJWMjg4aDE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djk2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOC42IDEwNS40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC0yNTYgMjU2Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtMTI4LTEyOGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMEwxNjAgMzM4LjcgMzkzLjQgMTA1LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZWVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMjQwLjJWMjU2SDBjMC0yMCAxMC0zOC43IDI2LjYtNDkuOEwyNzQuOSA0MC43YzguNi01LjcgMTguNi04LjcgMjguOS04LjdDNDE4LjggMzIgNTEyIDEyNS4yIDUxMiAyNDAuMnptMCA0Ny44VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjg4SDUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3NCaXNob3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDBDMTEwLjMgMCA5NiAxNC4zIDk2IDMyYzAgMTYuMSAxMS45IDI5LjQgMjcuNCAzMS43Qzc4LjQgMTA2LjggOCAxOTAgOCAyODhjMCA0Ny40IDMwLjggNzIuMyA1NiA4NC43VjQwMEgyNTZWMzcyLjdjMjUuMi0xMi41IDU2LTM3LjQgNTYtODQuN2MwLTM3LjMtMTAuMi03Mi40LTI1LjMtMTA0LjFsLTk5LjQgOTkuNGMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkwyNzAuOCAxNTQuNmMtMjMuMi0zOC4xLTUxLjgtNjkuNS03NC4yLTkwLjlDMjEyLjEgNjEuNCAyMjQgNDguMSAyMjQgMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMTI4ek00OCA0MzJMNi42IDQ3My40Yy00LjIgNC4yLTYuNiAxMC02LjYgMTZDMCA1MDEuOSAxMC4xIDUxMiAyMi42IDUxMkgyOTcuNGMxMi41IDAgMjIuNi0xMC4xIDIyLjYtMjIuNmMwLTYtMi40LTExLjgtNi42LTE2TDI3MiA0MzJINDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzQm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em02NCA2NHY2NGg2NFY5Nmg2NHY2NGg2NFY5Nmg2NHY2NEgzMjB2NjRoNjR2NjRIMzIwdjY0aDY0djY0SDMyMFYzNTJIMjU2djY0SDE5MlYzNTJIMTI4djY0SDY0VjM1Mmg2NFYyODhINjRWMjI0aDY0VjE2MEg2NFY5Nmg2NHptNjQgMTI4aDY0VjE2MEgxOTJ2NjR6bTAgNjRWMjI0SDEyOHY2NGg2NHptNjQgMEgxOTJ2NjRoNjRWMjg4em0wIDBoNjRWMjI0SDI1NnY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3NLaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ4aDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI1NnY0OEg0MDhjMjIuMSAwIDQwIDE3LjkgNDAgNDBjMCA1LjMtMSAxMC41LTMuMSAxNS40TDM2OCA0MDBIODBMMy4xIDIxNS40QzEgMjEwLjUgMCAyMDUuMyAwIDIwMGMwLTIyLjEgMTcuOS00MCA0MC00MEgxOTJWMTEySDE3NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgxNlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMzguNiA0NzMuNEw4MCA0MzJIMzY4bDQxLjQgNDEuNGM0LjIgNC4yIDYuNiAxMCA2LjYgMTZjMCAxMi41LTEwLjEgMjIuNi0yMi42IDIyLjZINTQuNkM0Mi4xIDUxMiAzMiA1MDEuOSAzMiA0ODkuNGMwLTYgMi40LTExLjggNi42LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc0tuaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA0OEw4Mi43IDYxLjNDNzAuNyA3My4zIDY0IDg5LjUgNjQgMTA2LjVWMjM4LjljMCAxMC43IDUuMyAyMC43IDE0LjIgMjYuNmwxMC42IDdjMTQuMyA5LjYgMzIuNyAxMC43IDQ4LjEgM2wzLjItMS42YzIuNi0xLjMgNS0yLjggNy4zLTQuNWw0OS40LTM3YzYuNi01IDE1LjctNSAyMi4zIDBjMTAuMiA3LjcgOS45IDIzLjEtLjcgMzAuM0w5MC40IDM1MEM3My45IDM2MS4zIDY0IDM4MCA2NCA0MDBIMzg0bDI4LjktMTU5YzIuMS0xMS4zIDMuMS0yMi44IDMuMS0zNC4zVjE5MkM0MTYgODYgMzMwIDAgMjI0IDBIODMuOEM3Mi45IDAgNjQgOC45IDY0IDE5LjhjMCA3LjUgNC4yIDE0LjMgMTAuOSAxNy43TDk2IDQ4em0yNCA2OGEyMCAyMCAwIDEgMSA0MCAwIDIwIDIwIDAgMSAxIC00MCAwek0yMi42IDQ3My40Yy00LjIgNC4yLTYuNiAxMC02LjYgMTZDMTYgNTAxLjkgMjYuMSA1MTIgMzguNiA1MTJINDA5LjRjMTIuNSAwIDIyLjYtMTAuMSAyMi42LTIyLjZjMC02LTIuNC0xMS44LTYuNi0xNkwzODQgNDMySDY0TDIyLjYgNDczLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzUGF3biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTUuNSAyMjRjMjkuMi0xOC40IDQ4LjUtNTAuOSA0OC41LTg4YzAtNTcuNC00Ni42LTEwNC0xMDQtMTA0UzU2IDc4LjYgNTYgMTM2YzAgMzcuMSAxOS40IDY5LjYgNDguNSA4OEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJjMCAxNi41IDEyLjUgMzAgMjguNSAzMS44TDgwIDQwMEgyNDBMMjI3LjUgMjg3LjhjMTYtMS44IDI4LjUtMTUuMyAyOC41LTMxLjhjMC0xNy43LTE0LjMtMzItMzItMzJoLTguNXpNMjIuNiA0NzMuNGMtNC4yIDQuMi02LjYgMTAtNi42IDE2QzE2IDUwMS45IDI2LjEgNTEyIDM4LjYgNTEySDI4MS40YzEyLjUgMCAyMi42LTEwLjEgMjIuNi0yMi42YzAtNi0yLjQtMTEuOC02LjYtMTZMMjU2IDQzMkg2NEwyMi42IDQ3My40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc1F1ZWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYTU2IDU2IDAgMSAxIDAgMTEyQTU2IDU2IDAgMSAxIDI1NiAwek0xMzQuMSAxNDMuOGMzLjMtMTMgMTUtMjMuOCAzMC4yLTIzLjhjMTIuMyAwIDIyLjYgNy4yIDI3LjcgMTdjMTIgMjMuMiAzNi4yIDM5IDY0IDM5czUyLTE1LjggNjQtMzljNS4xLTkuOCAxNS40LTE3IDI3LjctMTdjMTUuMyAwIDI3IDEwLjggMzAuMiAyMy44YzcgMjcuOCAzMi4yIDQ4LjMgNjIuMSA0OC4zYzEwLjggMCAyMS0yLjcgMjkuOC03LjRjOC40LTQuNCAxOC45LTQuNSAyNy42IC45YzEzIDggMTcuMSAyNSA5LjIgMzhMMzk5LjcgNDAwSDM4NCAzNDMuNiAxNjguNCAxMjggMTEyLjNMNS40IDIyMy42Yy03LjktMTMtMy44LTMwIDkuMi0zOGM4LjctNS4zIDE5LjItNS4zIDI3LjYtLjljOC45IDQuNyAxOSA3LjQgMjkuOCA3LjRjMjkuOSAwIDU1LjEtMjAuNSA2Mi4xLTQ4LjN6TTI1NiAyMjRsMCAwIDAgMGgwek0xMTIgNDMySDQwMGw0MS40IDQxLjRjNC4yIDQuMiA2LjYgMTAgNi42IDE2YzAgMTIuNS0xMC4xIDIyLjYtMjIuNiAyMi42SDg2LjZDNzQuMSA1MTIgNjQgNTAxLjkgNjQgNDg5LjRjMC02IDIuNC0xMS44IDYuNi0xNkwxMTIgNDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc1Jvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMTkyVjQ4YzAtOC44IDcuMi0xNiAxNi0xNmg2NGM4LjggMCAxNiA3LjIgMTYgMTZWODhjMCA0LjQgMy42IDggOCA4aDMyYzQuNCAwIDgtMy42IDgtOFY0OGMwLTguOCA3LjItMTYgMTYtMTZoNjRjOC44IDAgMTYgNy4yIDE2IDE2Vjg4YzAgNC40IDMuNiA4IDggOGgzMmM0LjQgMCA4LTMuNiA4LThWNDhjMC04LjggNy4yLTE2IDE2LTE2aDY0YzguOCAwIDE2IDcuMiAxNiAxNlYxOTJjMCAxMC4xLTQuNyAxOS42LTEyLjggMjUuNkwzNTIgMjU2bDE2IDE0NEg4MEw5NiAyNTYgNDQuOCAyMTcuNkMzNi43IDIxMS42IDMyIDIwMi4xIDMyIDE5MnptMTc2IDk2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NDhjMCA4LjggNy4yIDE2IDE2IDE2ek0yMi42IDQ3My40TDY0IDQzMkgzODRsNDEuNCA0MS40YzQuMiA0LjIgNi42IDEwIDYuNiAxNmMwIDEyLjUtMTAuMSAyMi42LTIyLjYgMjIuNkgzOC42QzI2LjEgNTEyIDE2IDUwMS45IDE2IDQ4OS40YzAtNiAyLjQtMTEuOCA2LjYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAxNmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNlYzMkg5NmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmgxNlY5Nkg2MC4yQzQ5LjEgOTYgNDAgMTA1LjEgNDAgMTE2LjJjMCAyLjUgLjUgNC45IDEuMyA3LjNMNzMuOCAyMDhINzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNEw2MCAzODRIMTk2TDE4MCAyNTZoNGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGgtMS44bDMyLjUtODQuNWMuOS0yLjMgMS4zLTQuOCAxLjMtNy4zYzAtMTEuMi05LjEtMjAuMi0yMC4yLTIwLjJIMTQ0VjY0aDE2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDE0NFYxNnpNNDggNDE2TDQuOCA0NzMuNkMxLjcgNDc3LjggMCA0ODIuOCAwIDQ4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNEgyMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjRjMC01LjItMS43LTEwLjItNC44LTE0LjRMMjA4IDQxNkg0OHptMjg4IDBsLTQzLjIgNTcuNmMtMy4xIDQuMi00LjggOS4yLTQuOCAxNC40YzAgMTMuMyAxMC43IDI0IDI0IDI0SDQ4OGMxMy4zIDAgMjQtMTAuNyAyNC0yNGMwLTUuMi0xLjctMTAuMi00LjgtMTQuNEw0NjQgNDE2SDMzNnpNMzA0IDIwOHY1MS45YzAgNy44IDIuOCAxNS4zIDggMjEuMUwzMzkuMiAzMTIgMzM3IDM4NEg0NjIuNWwtMy4zLTcyIDI4LjMtMzAuOGM1LjQtNS45IDguNS0xMy42IDguNS0yMS43VjIwOGMwLTguOC03LjItMTYtMTYtMTZINDY0Yy04LjggMC0xNiA3LjItMTYgMTZ2MTZINDI0VjIwOGMwLTguOC03LjItMTYtMTYtMTZIMzkyYy04LjggMC0xNiA3LjItMTYgMTZ2MTZIMzUyVjIwOGMwLTguOC03LjItMTYtMTYtMTZIMzIwYy04LjggMC0xNiA3LjItMTYgMTZ6bTgwIDk2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2MzJIMzg0VjMwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMzLjQgNDA2LjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTkyLTE5MmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwyNTYgMzM4LjcgODYuNiAxNjkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTkyIDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40IDIzMy40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxOTIgMTkyYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMNzcuMyAyNTYgMjQ2LjYgODYuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMTkyIDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMC42IDIzMy40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC0xOTIgMTkyYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wyNDIuNyAyNTYgNzMuNCA4Ni42Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwbDE5MiAxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXZyb25VcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzMuNCAxMDUuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGwxOTIgMTkyYzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDI1NiAxNzMuMyA4Ni42IDM0Mi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2wxOTItMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGlsZENvbWJhdGFudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgMTI4QTY0IDY0IDAgMSAwIDE3NiAwYTY0IDY0IDAgMSAwIDAgMTI4em0tOCAzNTJWMzUyaDE2VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMwMC41TDI2MC45IDMyMWM5LjQgMTUgMjkuMiAxOS40IDQ0LjEgMTBzMTkuNC0yOS4yIDEwLTQ0LjFsLTUxLjctODIuMWMtMTcuNi0yNy45LTQ4LjMtNDQuOS04MS4yLTQ0LjlIMTY5LjhjLTMzIDAtNjMuNyAxNi45LTgxLjIgNDQuOUwzNi45IDI4N2MtOS40IDE1LTQuOSAzNC43IDEwIDQ0LjFzMzQuNyA0LjkgNDQuMS0xMEwxMDQgMzAwLjVWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ6TTQ0OCAwSDQzMiA0MTZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZWMTMyLjNjLTkuNiA1LjUtMTYgMTUuOS0xNiAyNy43djMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMlYzNjhjMCAxNy43IDE0LjMgMzIgMzIgMzJoMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2aDU5LjVjMTAuNCAwIDE4LTkuOCAxNS41LTE5LjlMNDg0IDQwMGg0NGM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNkg0ODBWMzI1LjNsNTMuMS0xNy43YzYuNS0yLjIgMTAuOS04LjMgMTAuOS0xNS4yVjIwOGMwLTguOC03LjItMTYtMTYtMTZINTEyYy04LjggMC0xNiA3LjItMTYgMTZ2NTZsLTE2IDUuM1YxNjBjMC0xMS44LTYuNC0yMi4yLTE2LTI3LjdWMTZjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGlsZERyZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA2NEE2NCA2NCAwIDEgMCA5NiA2NGE2NCA2NCAwIDEgMCAxMjggMHpNODggNDAwdjgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDAwaDE2djgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDAwaDE3LjhjMTAuOSAwIDE4LjYtMTAuNyAxNS4yLTIxLjFsLTMxLjEtOTMuNCAyOC42IDM3LjhjMTAuNyAxNC4xIDMwLjggMTYuOCA0NC44IDYuMnMxNi44LTMwLjcgNi4yLTQ0LjhMMjU0LjYgMjA3Yy0yMi40LTI5LjYtNTcuNS00Ny05NC42LTQ3cy03Mi4yIDE3LjQtOTQuNiA0N0w2LjUgMjg0LjdjLTEwLjcgMTQuMS03LjkgMzQuMiA2LjIgNDQuOHMzNC4yIDcuOSA0NC44LTYuMmwyOC43LTM3LjhMNTUgMzc4LjlDNTEuNiAzODkuMyA1OS4zIDQwMCA3MC4yIDQwMEg4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hpbGRSZWFjaGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNjRBNjQgNjQgMCAxIDAgMTI4IDY0YTY0IDY0IDAgMSAwIDEyOCAwek0xNTIuOSAxNjkuM2MtMjMuNy04LjQtNDQuNS0yNC4zLTU4LjgtNDUuOEw3NC42IDk0LjJDNjQuOCA3OS41IDQ1IDc1LjYgMzAuMiA4NS40cy0xOC43IDI5LjctOC45IDQ0LjRMNDAuOSAxNTljMTguMSAyNy4xIDQyLjggNDguNCA3MS4xIDYyLjRWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzg0aDMydjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjIxLjZjMjkuMS0xNC4yIDU0LjQtMzYuMiA3Mi43LTY0LjJsMTguMi0yNy45YzkuNi0xNC44IDUuNC0zNC42LTkuNC00NC4zcy0zNC42LTUuNS00NC4zIDkuNEwyOTEgMTIyLjRjLTIxLjggMzMuNC01OC45IDUzLjYtOTguOCA1My42Yy0xMi42IDAtMjQuOS0yLTM2LjYtNS44Yy0uOS0uMy0xLjgtLjctMi43LS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGlsZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA2NGE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSA5NiA2NHptNDggMzIwdjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI4Ny44TDU5LjEgMzIxYy05LjQgMTUtMjkuMiAxOS40LTQ0LjEgMTBTLTQuNSAzMDEuOSA0LjkgMjg3bDM5LjktNjMuM0M2OS43IDE4NCAxMTMuMiAxNjAgMTYwIDE2MHM5MC4zIDI0IDExNS4yIDYzLjZMMzE1LjEgMjg3YzkuNCAxNSA0LjkgMzQuNy0xMCA0NC4xcy0zNC43IDQuOS00NC4xLTEwTDI0MCAyODcuOFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzg0SDE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hpbGRyZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDBhNjQgNjQgMCAxIDEgMCAxMjhBNjQgNjQgMCAxIDEgMTYwIDB6TTg4IDQ4MFY0MDBINzAuMmMtMTAuOSAwLTE4LjYtMTAuNy0xNS4yLTIxLjFsMzEuMS05My40TDU3LjUgMzIzLjNjLTEwLjcgMTQuMS0zMC44IDE2LjgtNDQuOCA2LjJzLTE2LjgtMzAuNy02LjItNDQuOEw2NS40IDIwN2MyMi40LTI5LjYgNTcuNS00NyA5NC42LTQ3czcyLjIgMTcuNCA5NC42IDQ3bDU4LjkgNzcuN2MxMC43IDE0LjEgNy45IDM0LjItNi4yIDQ0LjhzLTM0LjIgNy45LTQ0LjgtNi4ybC0yOC42LTM3LjhMMjY1IDM3OC45YzMuNSAxMC40LTQuMyAyMS4xLTE1LjIgMjEuMUgyMzJ2ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDAwSDE1MnY4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMnpNNDgwIDBhNjQgNjQgMCAxIDEgMCAxMjhBNjQgNjQgMCAxIDEgNDgwIDB6bS04IDM4NHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMDAuNUwzOTUuMSAzMjFjLTkuNCAxNS0yOS4yIDE5LjQtNDQuMSAxMHMtMTkuNC0yOS4yLTEwLTQ0LjFsNTEuNy04Mi4xYzE3LjYtMjcuOSA0OC4zLTQ0LjkgODEuMi00NC45aDEyLjNjMzMgMCA2My43IDE2LjkgODEuMiA0NC45TDYxOS4xIDI4N2M5LjQgMTUgNC45IDM0LjctMTAgNDQuMXMtMzQuNyA0LjktNDQuMS0xMEw1NTIgMzAwLjVWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM4NEg0NzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNodXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDQgMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWNDhIMjY0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDMydjQ2LjRMMTgzLjMgMjEwYy0xNC41IDguNy0yMy4zIDI0LjMtMjMuMyA0MS4yVjUxMmg5NlY0MTZjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHY5Nmg5NlYyNTEuMmMwLTE2LjktOC44LTMyLjUtMjMuMy00MS4yTDM0NCAxNDIuNFY5NmgzMmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgzNDRWMjR6TTI0LjkgMzMwLjNDOS41IDMzOC44IDAgMzU0LjkgMCAzNzIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoODBWMjczLjZMMjQuOSAzMzAuM3pNNTkyIDUxMmMyNi41IDAgNDgtMjEuNSA0OC00OFYzNzIuNGMwLTE3LjUtOS41LTMzLjYtMjQuOS00Mi4xTDUxMiAyNzMuNlY1MTJoODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZUFycm93RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDB6TTEyNyAyODFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw3MSA3MUwyMzIgMTM2YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCAxODIuMSA3MS03MWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlMMjczIDM5M2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMTI3IDI4MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlQXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAyNTZBMjU2IDI1NiAwIDEgMCAwIDI1NmEyNTYgMjU2IDAgMSAwIDUxMiAwek0yMzEgMTI3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNzEgNzFMMzc2IDIzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTgyLjEgMCA3MSA3MWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDExOSAyNzNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45TDIzMSAxMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZUFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMEEyNTYgMjU2IDAgMSAwIDAgMjU2ek0yODEgMzg1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDcxLTcxTDEzNiAyODBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsMTgyLjEgMC03MS03MWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwTDM5MyAyMzljOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMMjgxIDM4NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzg1IDIzMWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC03MS03MVYzNzZjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMTkzLjlsLTcxIDcxYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45TDIzOSAxMTljOS40LTkuNCAyNC42LTkuNCAzMy45IDBMMzg1IDIzMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTM2OSAyMDlMMjQxIDMzN2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTY0LTY0Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsNDcgNDdMMzM1IDE3NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZUNoZXZyb25Eb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMHpNMTM1IDI0MWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDg3IDg3IDg3LTg3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOUwyNzMgMzQ1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwxMzUgMjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVDaGV2cm9uTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMjU2QTI1NiAyNTYgMCAxIDAgMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMHpNMjcxIDEzNWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTg3IDg3IDg3IDg3YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBMMTY3IDI3M2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlMMjcxIDEzNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlQ2hldnJvblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2YTI1NiAyNTYgMCAxIDAgNTEyIDBBMjU2IDI1NiAwIDEgMCAwIDI1NnpNMjQxIDM3N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw4Ny04Ny04Ny04N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwTDM0NSAyMzljOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMMjQxIDM3N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlQ2hldnJvblVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zNzcgMjcxYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTg3LTg3LTg3IDg3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45TDIzOSAxNjdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBMMzc3IDI3MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlRG9sbGFyVG9TbG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNi43IDQwMy43Yy0yMi4xIDgtNDUuOSAxMi4zLTcwLjcgMTIuM3MtNDguNy00LjQtNzAuNy0xMi4zYy0uMy0uMS0uNS0uMi0uOC0uM2MtMzAtMTEtNTYuOC0yOC43LTc4LjYtNTEuNEM3MCAzMTQuNiA0OCAyNjMuOSA0OCAyMDhDNDggOTMuMSAxNDEuMSAwIDI1NiAwUzQ2NCA5My4xIDQ2NCAyMDhjMCA1NS45LTIyIDEwNi42LTU3LjkgMTQ0Yy0xIDEtMiAyLjEtMyAzLjFjLTIxLjQgMjEuNC00Ny40IDM4LjEtNzYuMyA0OC42ek0yNTYgODRjLTExIDAtMjAgOS0yMCAyMHYxNGMtNy42IDEuNy0xNS4yIDQuNC0yMi4yIDguNWMtMTMuOSA4LjMtMjUuOSAyMi44LTI1LjggNDMuOWMuMSAyMC4zIDEyIDMzLjEgMjQuNyA0MC43YzExIDYuNiAyNC43IDEwLjggMzUuNiAxNGwxLjcgLjVjMTIuNiAzLjggMjEuOCA2LjggMjggMTAuN2M1LjEgMy4yIDUuOCA1LjQgNS45IDguMmMuMSA1LTEuOCA4LTUuOSAxMC41Yy01IDMuMS0xMi45IDUtMjEuNCA0LjdjLTExLjEtLjQtMjEuNS0zLjktMzUuMS04LjVjLTIuMy0uOC00LjctMS42LTcuMi0yLjRjLTEwLjUtMy41LTIxLjggMi4yLTI1LjMgMTIuNnMyLjIgMjEuOCAxMi42IDI1LjNjMS45IC42IDQgMS4zIDYuMSAyLjFsMCAwIDAgMGM4LjMgMi45IDE3LjkgNi4yIDI4LjIgOC40VjMxMmMwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMFYyOTguMmM4LTEuNyAxNi00LjUgMjMuMi05YzE0LjMtOC45IDI1LjEtMjQuMSAyNC44LTQ1Yy0uMy0yMC4zLTExLjctMzMuNC0yNC42LTQxLjZjLTExLjUtNy4yLTI1LjktMTEuNi0zNy4xLTE1bC0uNy0uMmMtMTIuOC0zLjktMjEuOS02LjctMjguMy0xMC41Yy01LjItMy4xLTUuMy00LjktNS4zLTYuN2MwLTMuNyAxLjQtNi41IDYuMi05LjNjNS40LTMuMiAxMy42LTUuMSAyMS41LTVjOS42IC4xIDIwLjIgMi4yIDMxLjIgNS4yYzEwLjcgMi44IDIxLjYtMy41IDI0LjUtMTQuMnMtMy41LTIxLjYtMTQuMi0yNC41Yy02LjUtMS43LTEzLjctMy40LTIxLjEtNC43VjEwNGMwLTExLTktMjAtMjAtMjB6TTQ4IDM1Mkg2NGMxOS41IDI1LjkgNDQgNDcuNyA3Mi4yIDY0SDY0djMySDI1NiA0NDhWNDE2SDM3NS44YzI4LjItMTYuMyA1Mi44LTM4LjEgNzIuMi02NGgxNmMyNi41IDAgNDggMjEuNSA0OCA0OHY2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDAwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVEb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTAtMzUyYTk2IDk2IDAgMSAxIDAgMTkyIDk2IDk2IDAgMSAxIDAtMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMHpNMzc2LjkgMjk0LjZMMjY5LjggMzk0LjVjLTMuOCAzLjUtOC43IDUuNS0xMy44IDUuNXMtMTAuMS0yLTEzLjgtNS41TDEzNS4xIDI5NC42Yy00LjUtNC4yLTcuMS0xMC4xLTcuMS0xNi4zYzAtMTIuMyAxMC0yMi4zIDIyLjMtMjIuM2w1Ny43IDAgMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmwzMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTYgNTcuNyAwYzEyLjMgMCAyMi4zIDEwIDIyLjMgMjIuM2MwIDYuMi0yLjYgMTIuMS03LjEgMTYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlRXhjbGFtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTAtMzg0YzEzLjMgMCAyNCAxMC43IDI0IDI0VjI2NGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYxNTJjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTIyNCAzNTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlSCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzY4IDE1MlYyNTYgMzYwYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjI4MEgxOTJsMCA4MGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTIwOGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djgwSDMyMFYxNTJjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlSGFsZlN0cm9rZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMjU2YzAtMTA2LTg2LTE5Mi0xOTItMTkyVjQ0OGMxMDYgMCAxOTItODYgMTkyLTE5MnpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVJbmZvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0yMTYgMzM2aDI0VjI3MkgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoNDhjMTMuMyAwIDI0IDEwLjcgMjQgMjR2ODhoOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6bTQwLTIwOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDI1NkEyNTYgMjU2IDAgMSAwIDAgMjU2YTI1NiAyNTYgMCAxIDAgNTEyIDB6TTIxNy40IDM3Ni45TDExNy41IDI2OS44Yy0zLjUtMy44LTUuNS04LjctNS41LTEzLjhzMi0xMC4xIDUuNS0xMy44bDk5LjktMTA3LjFjNC4yLTQuNSAxMC4xLTcuMSAxNi4zLTcuMWMxMi4zIDAgMjIuMyAxMCAyMi4zIDIyLjNsMCA1Ny43IDk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtOTYgMCAwIDU3LjdjMCAxMi4zLTEwIDIyLjMtMjIuMyAyMi4zYy02LjIgMC0xMi4xLTIuNi0xNi4zLTcuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE4NCAyMzJIMzI4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDE4NGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlTm9kZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE4LjQgMTU3LjljMzUuMy04LjMgNjEuNi00MCA2MS42LTc3LjljMC00NC4yLTM1LjgtODAtODAtODBjLTQzLjQgMC03OC43IDM0LjUtODAgNzcuNUwxMzYuMiAxNTEuMUMxMjEuNyAxMzYuOCAxMDEuOSAxMjggODAgMTI4Yy00NC4yIDAtODAgMzUuOC04MCA4MHMzNS44IDgwIDgwIDgwYzEyLjIgMCAyMy44LTIuNyAzNC4xLTcuNkwyNTkuNyA0MDcuOGMtMi40IDcuNi0zLjcgMTUuOC0zLjcgMjQuMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMjcuNy0xNC01Mi4xLTM1LjQtNjYuNGwzNy44LTIwNy43ek0xNTYuMyAyMzIuMmMyLjItNi45IDMuNS0xNC4yIDMuNy0yMS43bDE4My44LTczLjVjMy42IDMuNSA3LjQgNi43IDExLjYgOS41TDMxNy42IDM1NC4xYy01LjUgMS4zLTEwLjggMy4xLTE1LjggNS41TDE1Ni4zIDIzMi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVOb3RjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjIuNyAzMi4xYzUgMTYuOS00LjYgMzQuOC0yMS41IDM5LjhDMTIxLjggOTUuNiA2NCAxNjkuMSA2NCAyNTZjMCAxMDYgODYgMTkyIDE5MiAxOTJzMTkyLTg2IDE5Mi0xOTJjMC04Ni45LTU3LjgtMTYwLjQtMTM3LjEtMTg0LjFjLTE2LjktNS0yNi42LTIyLjktMjEuNS0zOS44czIyLjktMjYuNiAzOS44LTIxLjVDNDM0LjkgNDIuMSA1MTIgMTQwIDUxMiAyNTZjMCAxNDEuNC0xMTQuNiAyNTYtMjU2IDI1NlMwIDM5Ny40IDAgMjU2QzAgMTQwIDc3LjEgNDIuMSAxODIuOSAxMC42YzE2LjktNSAzNC44IDQuNiAzOS44IDIxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZVBhdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0yMjQgMTkyVjMyMGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnptMTI4IDBWMzIwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpNMTg4LjMgMTQ3LjFjLTcuNiA0LjItMTIuMyAxMi4zLTEyLjMgMjAuOVYzNDRjMCA4LjcgNC43IDE2LjcgMTIuMyAyMC45czE2LjggNC4xIDI0LjMtLjVsMTQ0LTg4YzcuMS00LjQgMTEuNS0xMi4xIDExLjUtMjAuNXMtNC40LTE2LjEtMTEuNS0yMC41bC0xNDQtODhjLTcuNC00LjUtMTYuNy00LjctMjQuMy0uNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMjMyIDM0NFYyODBIMTY4Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDY0VjE2OGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djY0aDY0YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI4MHY2NGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlUXVlc3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE2OS44IDE2NS4zYzcuOS0yMi4zIDI5LjEtMzcuMyA1Mi44LTM3LjNoNTguM2MzNC45IDAgNjMuMSAyOC4zIDYzLjEgNjMuMWMwIDIyLjYtMTIuMSA0My41LTMxLjcgNTQuOEwyODAgMjY0LjRjLS4yIDEzLTEwLjkgMjMuNi0yNCAyMy42Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYyNTAuNWMwLTguNiA0LjYtMTYuNSAxMi4xLTIwLjhsNDQuMy0yNS40YzQuNy0yLjcgNy42LTcuNyA3LjYtMTMuMWMwLTguNC02LjgtMTUuMS0xNS4xLTE1LjFIMjIyLjZjLTMuNCAwLTYuNCAyLjEtNy41IDUuM2wtLjQgMS4yYy00LjQgMTIuNS0xOC4yIDE5LTMwLjYgMTQuNnMtMTktMTguMi0xNC42LTMwLjZsLjQtMS4yek0yMjQgMzUyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZVJhZGlhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNjRhMTkyIDE5MiAwIDEgMSAwIDM4NCAxOTIgMTkyIDAgMSAxIDAtMzg0em0wIDQ0OEEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTIwMCAyNTZjMC0yMC43IDExLjMtMzguOCAyOC00OC41bC0zNi02Mi4zYy04LjgtMTUuMy0yOC43LTIwLjgtNDItOWMtMjUuNiAyMi42LTQzLjkgNTMuMy01MC45IDg4LjFDOTUuNyAyNDEuNSAxMTAuMyAyNTYgMTI4IDI1Nmw3MiAwem0yOCA0OC41bC0zNiA2Mi40Yy04LjggMTUuMy0zLjYgMzUuMiAxMy4xIDQwLjhjMTYgNS40IDMzLjEgOC4zIDUwLjkgOC4zczM0LjktMi45IDUwLjktOC4zYzE2LjctNS42IDIxLjktMjUuNSAxMy4xLTQwLjhsLTM2LTYyLjRjLTguMiA0LjgtMTcuOCA3LjUtMjggNy41cy0xOS44LTIuNy0yOC03LjV6TTMxMiAyNTZsNzIgMGMxNy43IDAgMzIuMy0xNC41IDI4LjgtMzEuOGMtNy0zNC44LTI1LjMtNjUuNS01MC45LTg4LjFjLTEzLjItMTEuNy0zMy4xLTYuMy00MiA5bC0zNiA2Mi4zYzE2LjcgOS43IDI4IDI3LjggMjggNDguNXptLTU2IDMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMEEyNTYgMjU2IDAgMSAwIDAgMjU2ek0yOTQuNiAxMzUuMWw5OS45IDEwNy4xYzMuNSAzLjggNS41IDguNyA1LjUgMTMuOHMtMiAxMC4xLTUuNSAxMy44TDI5NC42IDM3Ni45Yy00LjIgNC41LTEwLjEgNy4xLTE2LjMgNy4xQzI2NiAzODQgMjU2IDM3NCAyNTYgMzYxLjdsMC01Ny43LTk2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJsOTYgMCAwLTU3LjdjMC0xMi4zIDEwLTIyLjMgMjIuMy0yMi4zYzYuMiAwIDEyLjEgMi42IDE2LjMgNy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVTdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xOTIgMTYwSDMyMGMxNy43IDAgMzIgMTQuMyAzMiAzMlYzMjBjMCAxNy43LTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xMzUuMSAyMTcuNGwxMDcuMS05OS45YzMuOC0zLjUgOC43LTUuNSAxMy44LTUuNXMxMC4xIDIgMTMuOCA1LjVsMTA3LjEgOTkuOWM0LjUgNC4yIDcuMSAxMC4xIDcuMSAxNi4zYzAgMTIuMy0xMCAyMi4zLTIyLjMgMjIuM0gzMDR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMjQwYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyNTZIMTUwLjNDMTM4IDI1NiAxMjggMjQ2IDEyOCAyMzMuN2MwLTYuMiAyLjYtMTIuMSA3LjEtMTYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTkgMzg0LjJDMzc2LjkgMzQ1LjggMzM1LjQgMzIwIDI4OCAzMjBIMjI0Yy00Ny40IDAtODguOSAyNS44LTExMSA2NC4yYzM1LjIgMzkuMiA4Ni4yIDYzLjggMTQzIDYzLjhzMTA3LjgtMjQuNyAxNDMtNjMuOHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yNTYgMTZhNzIgNzIgMCAxIDAgMC0xNDQgNzIgNzIgMCAxIDAgMCAxNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZVhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNzUgMTc1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDQ3IDQ3IDQ3LTQ3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNDcgNDcgNDcgNDdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDctNDctNDcgNDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDctNDctNDctNDdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDMzNmMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWOTZIMjI0VjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0Vjk2SDExMlYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNFM2NCAxMC43IDY0IDI0Vjk2SDQ4QzIxLjUgOTYgMCAxMTcuNSAwIDE0NHY5NlY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhIMzA0aDMyIDk2SDU5MmMyNi41IDAgNDgtMjEuNSA0OC00OFYyNDBjMC0yNi41LTIxLjUtNDgtNDgtNDhINDgwVjQ4em05NiAzMjB2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDUyOGMtOC44IDAtMTYtNy4yLTE2LTE2VjM2OGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2ek0yNDAgNDE2SDIwOGMtOC44IDAtMTYtNy4yLTE2LTE2VjM2OGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNnpNMTI4IDQwMGMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYzNjhjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMnpNNTYwIDI1NmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDUyOGMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MmMwLTguOCA3LjItMTYgMTYtMTZoMzJ6TTI1NiAxNzZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDIwOGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2ek0xMTIgMTYwYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDMyek0yNTYgMzA0YzAgOC44LTcuMiAxNi0xNiAxNkgyMDhjLTguOCAwLTE2LTcuMi0xNi0xNlYyNzJjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMnpNMTEyIDMyMEg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNnptMzA0LTQ4djMyYzAgOC44LTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNlYyNzJjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnpNNDAwIDY0YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZWODBjMC04LjggNy4yLTE2IDE2LTE2aDMyem0xNiAxMTJ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbGFwcGVyYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDMySDM2MS45bC0xIDEtMTI3IDEyN2g5Mi4xbDEtMUw0NTMuOCAzMi4zYy0xLjktLjItMy44LS4zLTUuOC0uM3ptNjQgMTI4Vjk2YzAtMTUuMS01LjMtMjkuMS0xNC00MGwtMTA0IDEwNEg1MTJ6TTI5NC4xIDMySDIwMS45bC0xIDFMNzMuOSAxNjBoOTIuMWwxLTEgMTI3LTEyN3pNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NnY2NEg2LjFsMS0xIDEyNy0xMjdINjR6TTUxMiAxOTJIMFY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xpcGJvYXJkQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBjLTQxLjggMC03Ny40IDI2LjctOTAuNSA2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEgyODIuNUMyNjkuNCAyNi43IDIzMy44IDAgMTkyIDB6bTAgNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0zMDUgMjczTDE3NyA0MDFjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDc5IDMzN2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDQ3IDQ3TDI3MSAyMzljOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbGlwYm9hcmRMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAwYy00MS44IDAtNzcuNCAyNi43LTkwLjUgNjRINjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMjgyLjVDMjY5LjQgMjYuNyAyMzMuOCAwIDE5MiAwem0wIDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNNzIgMjcyYTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6bTEwNC0xNkgzMDRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2ek03MiAzNjhhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptODggMGMwLTguOCA3LjItMTYgMTYtMTZIMzA0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbGlwYm9hcmRRdWVzdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMGMtNDEuOCAwLTc3LjQgMjYuNy05MC41IDY0SDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDI4Mi41QzI2OS40IDI2LjcgMjMzLjggMCAxOTIgMHptMCA2NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTEwNS44IDIyOS4zYzcuOS0yMi4zIDI5LjEtMzcuMyA1Mi44LTM3LjNoNTguM2MzNC45IDAgNjMuMSAyOC4zIDYzLjEgNjMuMWMwIDIyLjYtMTIuMSA0My41LTMxLjcgNTQuOEwyMTYgMzI4LjRjLS4yIDEzLTEwLjkgMjMuNi0yNCAyMy42Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYzMTQuNWMwLTguNiA0LjYtMTYuNSAxMi4xLTIwLjhsNDQuMy0yNS40YzQuNy0yLjcgNy42LTcuNyA3LjYtMTMuMWMwLTguNC02LjgtMTUuMS0xNS4xLTE1LjFIMTU4LjZjLTMuNCAwLTYuNCAyLjEtNy41IDUuM2wtLjQgMS4yYy00LjQgMTIuNS0xOC4yIDE5LTMwLjYgMTQuNnMtMTktMTguMi0xNC42LTMwLjZsLjQtMS4yek0xNjAgNDE2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsaXBib2FyZFVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBjLTQxLjggMC03Ny40IDI2LjctOTAuNSA2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEgyODIuNUMyNjkuNCAyNi43IDIzMy44IDAgMTkyIDB6bTAgNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xMjggMjU2YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNODAgNDMyYzAtNDQuMiAzNS44LTgwIDgwLTgwaDY0YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgOC44LTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbGlwYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBjLTQxLjggMC03Ny40IDI2LjctOTAuNSA2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEgyODIuNUMyNjkuNCAyNi43IDIzMy44IDAgMTkyIDB6bTAgNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xMTIgMTkySDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb2NrUm90YXRlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03NSA3NUw0MSA0MUMyNS45IDI1LjkgMCAzNi42IDAgNTcuOVYxNjhjMCAxMy4zIDEwLjcgMjQgMjQgMjRIMTM0LjFjMjEuNCAwIDMyLjEtMjUuOSAxNy00MWwtMzAuOC0zMC44QzE1NSA4NS41IDIwMyA2NCAyNTYgNjRjMTA2IDAgMTkyIDg2IDE5MiAxOTJzLTg2IDE5Mi0xOTIgMTkyYy00MC44IDAtNzguNi0xMi43LTEwOS43LTM0LjRjLTE0LjUtMTAuMS0zNC40LTYuNi00NC42IDcuOXMtNi42IDM0LjQgNy45IDQ0LjZDMTUxLjIgNDk1IDIwMS43IDUxMiAyNTYgNTEyYzE0MS40IDAgMjU2LTExNC42IDI1Ni0yNTZTMzk3LjQgMCAyNTYgMEMxODUuMyAwIDEyMS4zIDI4LjcgNzUgNzV6bTE4MSA1M2MtMTMuMyAwLTI0IDEwLjctMjQgMjRWMjU2YzAgNi40IDIuNSAxMi41IDcgMTdsNzIgNzJjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC02NS02NVYxNTJjMC0xMy4zLTEwLjctMjQtMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYTI1NiAyNTYgMCAxIDEgMCA1MTJBMjU2IDI1NiAwIDEgMSAyNTYgMHpNMjMyIDEyMFYyNTZjMCA4IDQgMTUuNSAxMC43IDIwbDk2IDY0YzExIDcuNCAyNS45IDQuNCAzMy4zLTYuN3M0LjQtMjUuOS02LjctMzMuM0wyODAgMjQzLjJWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggNDQ4SDY0VjIyNGg2NFYxNjBINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgyODhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMzg0SDI4OHY2NHptLTY0LTk2SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NEgyMjRjLTM1LjMgMC02NCAyOC43LTY0IDY0VjI4OGMwIDM1LjMgMjguNyA2NCA2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvc2VkQ2FwdGlvbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDUxMmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2ek0yMDAgMjA4YzE0LjIgMCAyNyA2LjEgMzUuOCAxNmM4LjggOS45IDI0IDEwLjcgMzMuOSAxLjlzMTAuNy0yNCAxLjktMzMuOWMtMTcuNS0xOS42LTQzLjEtMzItNzEuNS0zMmMtNTMgMC05NiA0My05NiA5NnM0MyA5NiA5NiA5NmMyOC40IDAgNTQtMTIuNCA3MS41LTMyYzguOC05LjkgOC0yNS0xLjktMzMuOXMtMjUtOC0zMy45IDEuOWMtOC44IDkuOS0yMS42IDE2LTM1LjggMTZjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDh6bTE0NCA0OGMwLTI2LjUgMjEuNS00OCA0OC00OGMxNC4yIDAgMjcgNi4xIDM1LjggMTZjOC44IDkuOSAyNCAxMC43IDMzLjkgMS45czEwLjctMjQgMS45LTMzLjljLTE3LjUtMTkuNi00My4xLTMyLTcxLjUtMzJjLTUzIDAtOTYgNDMtOTYgOTZzNDMgOTYgOTYgOTZjMjguNCAwIDU0LTEyLjQgNzEuNS0zMmM4LjgtOS45IDgtMjUtMS45LTMzLjlzLTI1LTgtMzMuOSAxLjljLTguOCA5LjktMjEuNiAxNi0zNS44IDE2Yy0yNi41IDAtNDgtMjEuNS00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRBcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0IDQ4MEM2NC41IDQ4MCAwIDQxNS41IDAgMzM2YzAtNjIuOCA0MC4yLTExNi4yIDk2LjItMTM1LjljLS4xLTIuNy0uMi01LjQtLjItOC4xYzAtODguNCA3MS42LTE2MCAxNjAtMTYwYzU5LjMgMCAxMTEgMzIuMiAxMzguNyA4MC4yQzQwOS45IDEwMiA0MjguMyA5NiA0NDggOTZjNTMgMCA5NiA0MyA5NiA5NmMwIDEyLjItMi4zIDIzLjgtNi40IDM0LjZDNTk2IDIzOC40IDY0MCAyOTAuMSA2NDAgMzUyYzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4SDE0NHptNzktMTY3bDgwIDgwYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDgwLTgwYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTM5IDM5VjE4NGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFYzMTguMWwtMzktMzljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgNDgwQzY0LjUgNDgwIDAgNDE1LjUgMCAzMzZjMC02Mi44IDQwLjItMTE2LjIgOTYuMi0xMzUuOWMtLjEtMi43LS4yLTUuNC0uMi04LjFjMC04OC40IDcxLjYtMTYwIDE2MC0xNjBjNTkuMyAwIDExMSAzMi4yIDEzOC43IDgwLjJDNDA5LjkgMTAyIDQyOC4zIDk2IDQ0OCA5NmM1MyAwIDk2IDQzIDk2IDk2YzAgMTIuMi0yLjMgMjMuOC02LjQgMzQuNkM1OTYgMjM4LjQgNjQwIDI5MC4xIDY0MCAzNTJjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhIMTQ0em03OS0yMTdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGwzOS0zOVYzOTJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYyNTcuOWwzOSAzOWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTgwLTgwYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMGwtODAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkQm9sdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDIyNGMwIDUzIDQzIDk2IDk2IDk2aDQ3LjJMMjkwIDIwMi41YzE3LjYtMTQuMSA0Mi42LTE0IDYwLjIgLjJzMjIuOCAzOC42IDEyLjggNTguOEwzMzMuNyAzMjBIMzUyaDY0YzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2Yy0uNSAwLTEuMSAwLTEuNiAwYzEuMS01LjIgMS42LTEwLjUgMS42LTE2YzAtNDQuMi0zNS44LTgwLTgwLTgwYy0yNC4zIDAtNDYuMSAxMC45LTYwLjggMjhDMjU2LjUgMjQuMyAyMTkuMSAwIDE3NiAwQzExNC4xIDAgNjQgNTAuMSA2NCAxMTJjMCA3LjEgLjcgMTQuMSAxLjkgMjAuOEMyNy42IDE0NS40IDAgMTgxLjUgMCAyMjR6bTMzMC4xIDMuNmMtNS44LTQuNy0xNC4yLTQuNy0yMC4xLS4xbC0xNjAgMTI4Yy01LjMgNC4yLTcuNCAxMS40LTUuMSAxNy44czguMyAxMC43IDE1LjEgMTAuN2g3MC4xTDE3Ny43IDQ4OC44Yy0zLjQgNi43LTEuNiAxNC45IDQuMyAxOS42czE0LjIgNC43IDIwLjEgLjFsMTYwLTEyOGM1LjMtNC4yIDcuNC0xMS40IDUuMS0xNy44cy04LjMtMTAuNy0xNS4xLTEwLjdIMjgxLjlsNTIuNC0xMDQuOGMzLjQtNi43IDEuNi0xNC45LTQuMi0xOS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZE1lYXRiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjI0YzAgNTMgNDMgOTYgOTYgOTZoNDQuN2M5LjUtMjMuNSAzMi41LTQwIDU5LjMtNDBjMiAwIDMuOSAuMSA1LjggLjNDMjE3LjYgMjY1LjUgMjM1LjcgMjU2IDI1NiAyNTZzMzguNCA5LjUgNTAuMiAyNC4zYzEuOS0uMiAzLjktLjMgNS44LS4zYzI2LjkgMCA0OS45IDE2LjUgNTkuMyA0MEg0MTZjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZjLS41IDAtMS4xIDAtMS42IDBjMS4xLTUuMiAxLjYtMTAuNSAxLjYtMTZjMC00NC4yLTM1LjgtODAtODAtODBjLTI0LjMgMC00Ni4xIDEwLjktNjAuOCAyOEMyNTYuNSAyNC4zIDIxOS4xIDAgMTc2IDBDMTE0LjEgMCA2NCA1MC4xIDY0IDExMmMwIDcuMSAuNyAxNC4xIDEuOSAyMC44QzI3LjYgMTQ1LjQgMCAxODEuNSAwIDIyNHptMjg4IDk2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyYzAgMSAuMSAyLjEgLjEgMy4xYy0uNy0uOC0xLjQtMS42LTIuMS0yLjNjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zYy43IC43IDEuNSAxLjQgMi4zIDIuMWMtMS0uMS0yLjEtLjEtMy4xLS4xYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyYzEgMCAyLjEtLjEgMy4xLS4xYy0uOCAuNy0xLjYgMS4zLTIuMyAyLjFjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBjLjctLjcgMS40LTEuNSAyLjEtMi4zYy0uMSAxLS4xIDIuMS0uMSAzLjFjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTEtLjEtMi4xLS4xLTMuMWMuNyAuOCAxLjMgMS42IDIuMSAyLjNjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2MtLjctLjctMS41LTEuNC0yLjMtMi4xYzEgLjEgMi4xIC4xIDMuMSAuMWMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmMtMSAwLTIuMSAuMS0zLjEgLjFjLjgtLjcgMS42LTEuMyAyLjMtMi4xYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwYy0uNyAuNy0xLjQgMS41LTIuMSAyLjNjLjEtMSAuMS0yLjEgLjEtMy4xek00OCA0NDhhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em00MTYgMGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkTW9vblJhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgxLjIgMEM0MTcgMCAzNjMuNSA0Ni41IDM1My43IDEwNy42YzM1LjQgMTcuNiA2MC4yIDUzLjMgNjIuMSA5NS4xYzIzLjIgMTEgNDIgMjkuNyA1My4xIDUyLjdjNCAuNCA4LjEgLjYgMTIuMyAuNmMzNC45IDAgNjYuNy0xMy44IDg5LjktMzYuMWM1LjEtNC45IDYuNC0xMi41IDMuMi0xOC43cy0xMC4xLTkuNy0xNy04LjZjLTQuOSAuOC0xMCAxLjMtMTUuMiAxLjNjLTQ5IDAtODguNC0zOS4zLTg4LjQtODcuNGMwLTMyLjYgMTgtNjEuMSA0NC45LTc2LjFjNi4xLTMuNCA5LjMtMTAuNSA3LjgtMTcuNHMtNy4zLTEyLTE0LjMtMTIuNmMtMy42LS4zLTcuMy0uNS0xMC45LS41ek0zNjcuOSAzODMuOWM0NC4yIDAgODAtMzUuOCA4MC04MGMwLTM5LjMtMjguNC03Mi4xLTY1LjgtNzguN2MxLjItNS42IDEuOS0xMS4zIDEuOS0xNy4yYzAtNDQuMi0zNS44LTgwLTgwLTgwYy0xNyAwLTMyLjggNS4zLTQ1LjggMTQuNEMyNDEuMyAxMTQuNiAyMTAuOCA5NiAxNzYgOTZjLTUzIDAtOTYgNDMtOTYgOTZsMCAxLjNjLTQ1LjQgNy42LTgwIDQ3LjEtODAgOTQuNmMwIDUzIDQzIDk2IDk2IDk2SDM2Ny45ek04NS40IDQyMC4xYy0xMS03LjQtMjUuOS00LjQtMzMuMyA2LjdsLTMyIDQ4Yy03LjQgMTEtNC40IDI1LjkgNi43IDMzLjNzMjUuOSA0LjQgMzMuMy02LjdsMzItNDhjNy40LTExIDQuNC0yNS45LTYuNy0zMy4zem05NiAwYy0xMS03LjQtMjUuOS00LjQtMzMuMyA2LjdsLTMyIDQ4Yy03LjQgMTEtNC40IDI1LjkgNi43IDMzLjNzMjUuOSA0LjQgMzMuMy02LjdsMzItNDhjNy40LTExIDQuNC0yNS45LTYuNy0zMy4zem05NiAwYy0xMS03LjQtMjUuOS00LjQtMzMuMyA2LjdsLTMyIDQ4Yy03LjQgMTEtNC40IDI1LjkgNi43IDMzLjNzMjUuOSA0LjQgMzMuMy02LjdsMzItNDhjNy40LTExIDQuNC0yNS45LTYuNy0zMy4zem05NiAwYy0xMS03LjQtMjUuOS00LjQtMzMuMyA2LjdsLTMyIDQ4Yy03LjQgMTEtNC40IDI1LjkgNi43IDMzLjNzMjUuOSA0LjQgMzMuMy02LjdsMzItNDhjNy40LTExIDQuNC0yNS45LTYuNy0zMy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZE1vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk1LjggMGM1LjUgMCAxMC45IC4yIDE2LjMgLjdjNyAuNiAxMi44IDUuNyAxNC4zIDEyLjVzLTEuNiAxMy45LTcuNyAxNy4zYy00NC40IDI1LjItNzQuNCA3My03NC40IDEyNy44YzAgODEgNjUuNSAxNDYuNiAxNDYuMiAxNDYuNmM4LjYgMCAxNy0uNyAyNS4xLTIuMWM2LjktMS4yIDEzLjggMi4yIDE3IDguNXMxLjkgMTMuOC0zLjEgMTguN2MtMzQuNSAzMy42LTgxLjcgNTQuNC0xMzMuNiA1NC40Yy05LjMgMC0xOC40LS43LTI3LjQtMS45Yy0xMS4yLTIyLjYtMjkuOC00MC45LTUyLjYtNTEuN2MtMi43LTU4LjUtNTAuMy0xMDUuMy0xMDkuMi0xMDYuN2MtMS43LTEwLjQtMi42LTIxLTIuNi0zMS44QzMwNCA4Ni4xIDM4OS44IDAgNDk1LjggMHpNNDQ3LjkgNDMxLjljMCA0NC4yLTM1LjggODAtODAgODBIOTZjLTUzIDAtOTYtNDMtOTYtOTZjMC00Ny42IDM0LjYtODcgODAtOTQuNmwwLTEuM2MwLTUzIDQzLTk2IDk2LTk2YzM0LjkgMCA2NS40IDE4LjYgODIuMiA0Ni40YzEzLTkuMSAyOC44LTE0LjQgNDUuOC0xNC40YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgNS45LS42IDExLjctMS45IDE3LjJjMzcuNCA2LjcgNjUuOCAzOS40IDY1LjggNzguN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRSYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDMyMGMtNTMgMC05Ni00My05Ni05NmMwLTQyLjUgMjcuNi03OC42IDY1LjktOTEuMkM2NC43IDEyNi4xIDY0IDExOS4xIDY0IDExMkM2NCA1MC4xIDExNC4xIDAgMTc2IDBjNDMuMSAwIDgwLjUgMjQuMyA5OS4yIDYwYzE0LjctMTcuMSAzNi41LTI4IDYwLjgtMjhjNDQuMiAwIDgwIDM1LjggODAgODBjMCA1LjUtLjYgMTAuOC0xLjYgMTZjLjUgMCAxLjEgMCAxLjYgMGM1MyAwIDk2IDQzIDk2IDk2cy00MyA5Ni05NiA5Nkg5NnptLTYuOCA1MmMxLjMtMi41IDMuOS00IDYuOC00czUuNCAxLjUgNi44IDRsMzUuMSA2NC42YzQuMSA3LjUgNi4yIDE1LjggNi4yIDI0LjN2M2MwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OHYtM2MwLTguNSAyLjEtMTYuOSA2LjItMjQuM0w4OS4yIDM3MnptMTYwIDBjMS4zLTIuNSAzLjktNCA2LjgtNHM1LjQgMS41IDYuOCA0bDM1LjEgNjQuNmM0LjEgNy41IDYuMiAxNS44IDYuMiAyNC4zdjNjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDh2LTNjMC04LjUgMi4xLTE2LjkgNi4yLTI0LjNMMjQ5LjIgMzcyem0xMjQuOSA2NC42TDQwOS4yIDM3MmMxLjMtMi41IDMuOS00IDYuOC00czUuNCAxLjUgNi44IDRsMzUuMSA2NC42YzQuMSA3LjUgNi4yIDE1LjggNi4yIDI0LjN2M2MwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OHYtM2MwLTguNSAyLjEtMTYuOSA2LjItMjQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRTaG93ZXJzSGVhdnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzIwYy01MyAwLTk2LTQzLTk2LTk2YzAtNDIuNSAyNy42LTc4LjYgNjUuOS05MS4yQzY0LjcgMTI2LjEgNjQgMTE5LjEgNjQgMTEyQzY0IDUwLjEgMTE0LjEgMCAxNzYgMGM0My4xIDAgODAuNSAyNC4zIDk5LjIgNjBjMTQuNy0xNy4xIDM2LjUtMjggNjAuOC0yOGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDUuNS0uNiAxMC44LTEuNiAxNmMuNSAwIDEuMSAwIDEuNiAwYzUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2SDk2ek04MS41IDM1My45YzEyLjIgNS4yIDE3LjggMTkuMyAxMi42IDMxLjVsLTQ4IDExMmMtNS4yIDEyLjItMTkuMyAxNy44LTMxLjUgMTIuNlMtMy4zIDQ5MC43IDEuOSA0NzguNWw0OC0xMTJjNS4yLTEyLjIgMTkuMy0xNy44IDMxLjUtMTIuNnptMTIwIDBjMTIuMiA1LjIgMTcuOCAxOS4zIDEyLjYgMzEuNWwtNDggMTEyYy01LjIgMTIuMi0xOS4zIDE3LjgtMzEuNSAxMi42cy0xNy44LTE5LjMtMTIuNi0zMS41bDQ4LTExMmM1LjItMTIuMiAxOS4zLTE3LjggMzEuNS0xMi42em0yNDQuNiAzMS41bC00OCAxMTJjLTUuMiAxMi4yLTE5LjMgMTcuOC0zMS41IDEyLjZzLTE3LjgtMTkuMy0xMi42LTMxLjVsNDgtMTEyYzUuMi0xMi4yIDE5LjMtMTcuOCAzMS41LTEyLjZzMTcuOCAxOS4zIDEyLjYgMzEuNXpNMzEzLjUgMzUzLjljMTIuMiA1LjIgMTcuOCAxOS4zIDEyLjYgMzEuNWwtNDggMTEyYy01LjIgMTIuMi0xOS4zIDE3LjgtMzEuNSAxMi42cy0xNy44LTE5LjMtMTIuNi0zMS41bDQ4LTExMmM1LjItMTIuMiAxOS4zLTE3LjggMzEuNS0xMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZFNob3dlcnNXYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMGMzOC42IDAgNzEuOSAyMi44IDg3LjIgNTUuN0MzMjUuNyA0MS4xIDM0NS44IDMyIDM2OCAzMmMzOC43IDAgNzEgMjcuNSA3OC40IDY0SDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NEgxMjhjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjRjMC01MyA0My05NiA5Ni05NnpNMTQwLjYgMjkyLjNsLTQ4IDgwYy02LjggMTEuNC0yMS42IDE1LTMyLjkgOC4ycy0xNS4xLTIxLjYtOC4yLTMyLjlsNDgtODBjNi44LTExLjQgMjEuNi0xNS4xIDMyLjktOC4yczE1LjEgMjEuNiA4LjIgMzIuOXptMzI3LjgtMzIuOWMxMS40IDYuOCAxNSAyMS42IDguMiAzMi45bC00OCA4MGMtNi44IDExLjQtMjEuNiAxNS0zMi45IDguMnMtMTUtMjEuNi04LjItMzIuOWw0OC04MGM2LjgtMTEuNCAyMS42LTE1LjEgMzIuOS04LjJ6TTI1Mi42IDI5Mi4zbC00OCA4MGMtNi44IDExLjQtMjEuNiAxNS0zMi45IDguMnMtMTUuMS0yMS42LTguMi0zMi45bDQ4LTgwYzYuOC0xMS40IDIxLjYtMTUuMSAzMi45LTguMnMxNS4xIDIxLjYgOC4yIDMyLjl6bTEwMy44LTMyLjljMTEuNCA2LjggMTUgMjEuNiA4LjIgMzIuOWwtNDggODBjLTYuOCAxMS40LTIxLjYgMTUtMzIuOSA4LjJzLTE1LjEtMjEuNi04LjItMzIuOWw0OC04MGM2LjgtMTEuNCAyMS42LTE1LjEgMzIuOS04LjJ6TTMwNi41IDQyMS45QzMyOSA0MzcuNCAzNTYuNSA0NDggMzg0IDQ0OGMyNi45IDAgNTUuNC0xMC44IDc3LjQtMjYuMWwwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSA1MDEuNyA0MTcgNTEyIDM4NCA1MTJjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40YzE4LjEtNC4yIDM2LjItMTMuMyA1MC42LTI1LjJjMTEuMS05LjQgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyA0MzcuMiAxNjUuMSA0NDggMTkyIDQ0OGMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRTdW5SYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5NC4yIDEuMmM1LjEgMi4xIDguNyA2LjcgOS42IDEyLjFsMTAuNCA2Mi40Yy0yMy4zIDEwLjgtNDIuOSAyOC40LTU2IDUwLjNjLTE0LjYtOS0zMS44LTE0LjEtNTAuMi0xNC4xYy01MyAwLTk2IDQzLTk2IDk2YzAgMzUuNSAxOS4zIDY2LjYgNDggODMuMmMuOCAzMS44IDEzLjIgNjAuNyAzMy4xIDgyLjdsLTU2IDM5LjJjLTQuNSAzLjItMTAuMyAzLjgtMTUuNCAxLjZzLTguNy02LjctOS42LTEyLjFMOTguMSAzMTcuOSAxMy40IDMwMy44Yy01LjQtLjktMTAtNC41LTEyLjEtOS42cy0xLjUtMTAuOSAxLjYtMTUuNEw1Mi41IDIwOCAyLjkgMTM3LjJjLTMuMi00LjUtMy44LTEwLjMtMS42LTE1LjRzNi43LTguNyAxMi4xLTkuNkw5OC4xIDk4LjFsMTQuMS04NC43Yy45LTUuNCA0LjUtMTAgOS42LTEyLjFzMTAuOS0xLjUgMTUuNCAxLjZMMjA4IDUyLjUgMjc4LjggMi45YzQuNS0zLjIgMTAuMy0zLjggMTUuNC0xLjZ6TTIwOCAxNDRjMTMuOCAwIDI2LjcgNC40IDM3LjEgMTEuOWMtMS4yIDQuMS0yLjIgOC4zLTMgMTIuNmMtMzcuOSAxNC42LTY3LjIgNDYuNi03Ny44IDg2LjRDMTUxLjggMjQzLjEgMTQ0IDIyNi41IDE0NCAyMDhjMC0zNS4zIDI4LjctNjQgNjQtNjR6bTY5LjQgMjc2YzExIDcuNCAxNCAyMi4zIDYuNyAzMy4zbC0zMiA0OGMtNy40IDExLTIyLjMgMTQtMzMuMyA2LjdzLTE0LTIyLjMtNi43LTMzLjNsMzItNDhjNy40LTExIDIyLjMtMTQgMzMuMy02Ljd6bTk2IDBjMTEgNy40IDE0IDIyLjMgNi43IDMzLjNsLTMyIDQ4Yy03LjQgMTEtMjIuMyAxNC0zMy4zIDYuN3MtMTQtMjIuMy02LjctMzMuM2wzMi00OGM3LjQtMTEgMjIuMy0xNCAzMy4zLTYuN3ptOTYgMGMxMSA3LjQgMTQgMjIuMyA2LjcgMzMuM2wtMzIgNDhjLTcuNCAxMS0yMi4zIDE0LTMzLjMgNi43cy0xNC0yMi4zLTYuNy0zMy4zbDMyLTQ4YzcuNC0xMSAyMi4zLTE0IDMzLjMtNi43em05NiAwYzExIDcuNCAxNCAyMi4zIDYuNyAzMy4zbC0zMiA0OGMtNy40IDExLTIyLjMgMTQtMzMuMyA2LjdzLTE0LTIyLjMtNi43LTMzLjNsMzItNDhjNy40LTExIDIyLjMtMTQgMzMuMy02Ljd6bTc0LjUtMTE2LjFjMCA0NC4yLTM1LjggODAtODAgODBIMjg4Yy01MyAwLTk2LTQzLTk2LTk2YzAtNDcuNiAzNC42LTg3IDgwLTk0LjZsMC0xLjNjMC01MyA0My05NiA5Ni05NmMzNC45IDAgNjUuNCAxOC42IDgyLjIgNDYuNGMxMy05LjEgMjguOC0xNC40IDQ1LjgtMTQuNGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDUuOS0uNiAxMS43LTEuOSAxNy4yYzM3LjQgNi43IDY1LjggMzkuNCA2NS44IDc4Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkU3VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5NC4yIDEuMmM1LjEgMi4xIDguNyA2LjcgOS42IDEyLjFsMTQuMSA4NC43IDg0LjcgMTQuMWM1LjQgLjkgMTAgNC41IDEyLjEgOS42czEuNSAxMC45LTEuNiAxNS40bC0zOC41IDU1Yy0yLjItLjEtNC40LS4yLTYuNy0uMmMtMjMuMyAwLTQ1LjEgNi4yLTY0IDE3LjFsMC0xLjFjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZzNDMgOTYgOTYgOTZjOC4xIDAgMTUuOS0xIDIzLjQtMi45Yy0zNi42IDE4LjEtNjMuMyA1My4xLTY5LjggOTQuOWwtMjQuNCAxN2MtNC41IDMuMS0xMC4zIDMuOC0xNS40IDEuNnMtOC43LTYuNy05LjYtMTIuMUw5OC4xIDMxNy45IDEzLjQgMzAzLjhjLTUuNC0uOS0xMC00LjUtMTIuMS05LjZzLTEuNS0xMC45IDEuNi0xNS40TDUyLjUgMjA4IDIuOSAxMzcuMmMtMy4yLTQuNS0zLjgtMTAuMy0xLjYtMTUuNHM2LjctOC43IDEyLjEtOS42TDk4LjEgOTguMWwxNC4xLTg0LjdjLjktNS40IDQuNS0xMCA5LjYtMTIuMXMxMC45LTEuNSAxNS40IDEuNkwyMDggNTIuNSAyNzguOCAyLjljNC41LTMuMiAxMC4zLTMuOCAxNS40LTEuNnpNMTQ0IDIwOGE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTYzOS45IDQzMS45YzAgNDQuMi0zNS44IDgwLTgwIDgwSDI4OGMtNTMgMC05Ni00My05Ni05NmMwLTQ3LjYgMzQuNi04NyA4MC05NC42bDAtMS4zYzAtNTMgNDMtOTYgOTYtOTZjMzQuOSAwIDY1LjQgMTguNiA4Mi4yIDQ2LjRjMTMtOS4xIDI4LjgtMTQuNCA0NS44LTE0LjRjNDQuMiAwIDgwIDM1LjggODAgODBjMCA1LjktLjYgMTEuNy0xLjkgMTcuMmMzNy40IDYuNyA2NS44IDM5LjQgNjUuOCA3OC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMzNmMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NEg1MTJjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhjMC02MS45LTQ0LTExMy42LTEwMi40LTEyNS40YzQuMS0xMC43IDYuNC0yMi40IDYuNC0zNC42YzAtNTMtNDMtOTYtOTYtOTZjLTE5LjcgMC0zOC4xIDYtNTMuMyAxNi4yQzM2NyA2NC4yIDMxNS4zIDMyIDI1NiAzMkMxNjcuNiAzMiA5NiAxMDMuNiA5NiAxOTJjMCAyLjcgLjEgNS40IC4yIDguMUM0MC4yIDIxOS44IDAgMjczLjIgMCAzMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3ZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYuNiA0OS45QzIwNS4xIDM4LjUgMTg5LjUgMzIgMTczLjMgMzJDMTM5LjQgMzIgMTEyIDU5LjQgMTEyIDkzLjN2NC45YzAgMTIgMy4zIDIzLjcgOS40IDM0bDE4LjggMzEuM2MxLjEgMS44IDEuMiAzLjEgMSA0LjJjLS4yIDEuMi0uOCAyLjUtMiAzLjZzLTIuNCAxLjgtMy42IDJjLTEgLjItMi40IC4xLTQuMi0xbC0zMS4zLTE4LjhjLTEwLjMtNi4yLTIyLTkuNC0zNC05LjRINjEuM0MyNy40IDE0NCAwIDE3MS40IDAgMjA1LjNjMCAxNi4yIDYuNSAzMS44IDE3LjkgNDMuM2wxLjIgMS4yYzMuNCAzLjQgMy40IDkgMCAxMi40bC0xLjIgMS4yQzYuNSAyNzQuOSAwIDI5MC41IDAgMzA2LjdDMCAzNDAuNiAyNy40IDM2OCA2MS4zIDM2OGg0LjljMTIgMCAyMy43LTMuMyAzNC05LjRsMzEuMy0xOC44YzEuOC0xLjEgMy4xLTEuMiA0LjItMWMxLjIgLjIgMi41IC44IDMuNiAyczEuOCAyLjQgMiAzLjZjLjIgMSAuMSAyLjQtMSA0LjJsLTE4LjggMzEuM2MtNi4yIDEwLjMtOS40IDIyLTkuNCAzNHY0LjljMCAzMy44IDI3LjQgNjEuMyA2MS4zIDYxLjNjMTYuMiAwIDMxLjgtNi41IDQzLjMtMTcuOWwxLjItMS4yYzMuNC0zLjQgOS0zLjQgMTIuNCAwbDEuMiAxLjJjMTEuNSAxMS41IDI3LjEgMTcuOSA0My4zIDE3LjljMzMuOCAwIDYxLjMtMjcuNCA2MS4zLTYxLjN2LTQuOWMwLTEyLTMuMy0yMy43LTkuNC0zNGwtMTguOC0zMS4zYy0xLjEtMS44LTEuMi0zLjEtMS00LjJjLjItMS4yIC44LTIuNSAyLTMuNnMyLjQtMS44IDMuNi0yYzEtLjIgMi40LS4xIDQuMiAxbDMxLjMgMTguOGMxMC4zIDYuMiAyMiA5LjQgMzQgOS40aDQuOWMzMy44IDAgNjEuMy0yNy40IDYxLjMtNjEuM2MwLTE2LjItNi41LTMxLjgtMTcuOS00My4zbC0xLjItMS4yYy0zLjQtMy40LTMuNC05IDAtMTIuNGwxLjItMS4yYzExLjUtMTEuNSAxNy45LTI3LjEgMTcuOS00My4zYzAtMzMuOC0yNy40LTYxLjMtNjEuMy02MS4zaC00LjljLTEyIDAtMjMuNyAzLjMtMzQgOS40bC0zMS4zIDE4LjhjLTEuOCAxLjEtMy4xIDEuMi00LjIgMWMtMS4yLS4yLTIuNS0uOC0zLjYtMnMtMS44LTIuNC0yLTMuNmMtLjItMS0uMS0yLjQgMS00LjJsMTguOC0zMS4zYzYuMi0xMC4zIDkuNC0yMiA5LjQtMzRWOTMuM0MzMzYgNTkuNCAzMDguNiAzMiAyNzQuNyAzMmMtMTYuMiAwLTMxLjggNi41LTQzLjMgMTcuOWwtMS4yIDEuMmMtMy40IDMuNC05IDMuNC0xMi40IDBsLTEuMi0xLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGVCcmFuY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgMTA0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptODAtMjRjMCAzMi44LTE5LjcgNjEtNDggNzMuM3Y4Ny44YzE4LjgtMTAuOSA0MC43LTE3LjEgNjQtMTcuMWg5NmMzNS4zIDAgNjQtMjguNyA2NC02NHYtNi43QzMwNy43IDE0MSAyODggMTEyLjggMjg4IDgwYzAtNDQuMiAzNS44LTgwIDgwLTgwczgwIDM1LjggODAgODBjMCAzMi44LTE5LjcgNjEtNDggNzMuM1YxNjBjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhIMTc2Yy0zNS4zIDAtNjQgMjguNy02NCA2NHY2LjdjMjguMyAxMi4zIDQ4IDQwLjUgNDggNzMuM2MwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTMyLjggMTkuNy02MSA0OC03My4zVjM1MiAxNTMuM0MxOS43IDE0MSAwIDExMi44IDAgODBDMCAzNS44IDM1LjggMCA4MCAwczgwIDM1LjggODAgODB6bTIzMiAwYTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6TTgwIDQ1NmEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGVDb21taXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDMzNmE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHptMTU2LjgtNDhDNDYyIDM2MSAzOTcuNCA0MTYgMzIwIDQxNnMtMTQyLTU1LTE1Ni44LTEyOEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgxNjMuMkMxNzggMTUxIDI0Mi42IDk2IDMyMCA5NnMxNDIgNTUgMTU2LjggMTI4SDYwOGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0NzYuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29kZUNvbXBhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDQ4OGMwIDkuNS01LjYgMTguMS0xNC4yIDIxLjlzLTE4LjggMi4zLTI1LjgtNC4xbC04MC03MmMtNS4xLTQuNi03LjktMTEtNy45LTE3LjhzMi45LTEzLjMgNy45LTE3LjhsODAtNzJjNy02LjMgMTcuMi03LjkgMjUuOC00LjFzMTQuMiAxMi40IDE0LjIgMjEuOXY0MGgxNmMzNS4zIDAgNjQtMjguNyA2NC02NFYxNTMuM0MzNzEuNyAxNDEgMzUyIDExMi44IDM1MiA4MGMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwYzAgMzIuOC0xOS43IDYxLTQ4IDczLjNWMzIwYzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4SDMyMHY0MHpNNDU2IDgwYTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6TTE5MiAyNGMwLTkuNSA1LjYtMTguMSAxNC4yLTIxLjlzMTguOC0yLjMgMjUuOCA0LjFsODAgNzJjNS4xIDQuNiA3LjkgMTEgNy45IDE3LjhzLTIuOSAxMy4zLTcuOSAxNy44bC04MCA3MmMtNyA2LjMtMTcuMiA3LjktMjUuOCA0LjFzLTE0LjItMTIuNC0xNC4yLTIxLjlWMTI4SDE3NmMtMzUuMyAwLTY0IDI4LjctNjQgNjRWMzU4LjdjMjguMyAxMi4zIDQ4IDQwLjUgNDggNzMuM2MwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTMyLjggMTkuNy02MSA0OC03My4zVjE5MmMwLTcwLjcgNTcuMy0xMjggMTI4LTEyOGgxNlYyNHpNNTYgNDMyYTI0IDI0IDAgMSAwIDQ4IDAgMjQgMjQgMCAxIDAgLTQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGVGb3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwIDEwNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTgwLTI0YzAgMzIuOC0xOS43IDYxLTQ4IDczLjNWMTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDMwNGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNTMuM0MzMDcuNyAxNDEgMjg4IDExMi44IDI4OCA4MGMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwYzAgMzIuOC0xOS43IDYxLTQ4IDczLjNWMTkyYzAgNTMtNDMgOTYtOTYgOTZIMjU2djcwLjdjMjguMyAxMi4zIDQ4IDQwLjUgNDggNzMuM2MwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTMyLjggMTkuNy02MSA0OC03My4zVjI4OEgxNDRjLTUzIDAtOTYtNDMtOTYtOTZWMTUzLjNDMTkuNyAxNDEgMCAxMTIuOCAwIDgwQzAgMzUuOCAzNS44IDAgODAgMHM4MCAzNS44IDgwIDgwem0yMDggMjRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4ek0yNDggNDMyYTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGVNZXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCA1NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTMyLjQgOTcuMmMyOC0xMi40IDQ3LjYtNDAuNSA0Ny42LTczLjJjMC00NC4yLTM1LjgtODAtODAtODBTMCAzNS44IDAgODBjMCAzMi44IDE5LjcgNjEgNDggNzMuM1YzNTguN0MxOS43IDM3MSAwIDM5OS4yIDAgNDMyYzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0zMi44LTE5LjctNjEtNDgtNzMuM1YyNzJjMjYuNyAyMC4xIDYwIDMyIDk2IDMyaDg2LjdjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OGM0NC4yIDAgODAtMzUuOCA4MC04MHMtMzUuOC04MC04MC04MGMtMzIuOCAwLTYxIDE5LjctNzMuMyA0OEgyMDhjLTQ5LjkgMC05MS0zOC4xLTk1LjYtODYuOHpNODAgNDA4YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNMzQ0IDI3MmEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2RlUHVsbFJlcXVlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA1LjggMi4xQzMxNC40IDUuOSAzMjAgMTQuNSAzMjAgMjRWNjRoMTZjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhWMzU4LjdjMjguMyAxMi4zIDQ4IDQwLjUgNDggNzMuM2MwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTMyLjggMTkuNy02MSA0OC03My4zVjE5MmMwLTM1LjMtMjguNy02NC02NC02NEgzMjB2NDBjMCA5LjUtNS42IDE4LjEtMTQuMiAyMS45cy0xOC44IDIuMy0yNS44LTQuMWwtODAtNzJjLTUuMS00LjYtNy45LTExLTcuOS0xNy44czIuOS0xMy4zIDcuOS0xNy44bDgwLTcyYzctNi4zIDE3LjItNy45IDI1LjgtNC4xek0xMDQgODBBMjQgMjQgMCAxIDAgNTYgODBhMjQgMjQgMCAxIDAgNDggMHptOCA3My4zVjM1OC43YzI4LjMgMTIuMyA0OCA0MC41IDQ4IDczLjNjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBjMC0zMi44IDE5LjctNjEgNDgtNzMuM1YxNTMuM0MxOS43IDE0MSAwIDExMi44IDAgODBDMCAzNS44IDM1LjggMCA4MCAwczgwIDM1LjggODAgODBjMCAzMi44LTE5LjcgNjEtNDggNzMuM3pNMTA0IDQzMmEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwem0zMjggMjRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5Mi44IDEuMmMtMTctNC45LTM0LjcgNS0zOS42IDIybC0xMjggNDQ4Yy00LjkgMTcgNSAzNC43IDIyIDM5LjZzMzQuNy01IDM5LjYtMjJsMTI4LTQ0OGM0LjktMTctNS0zNC43LTIyLTM5LjZ6bTgwLjYgMTIwLjFjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zTDU2Mi43IDI1NmwtODkuNCA4OS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDExMi0xMTJjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTExMi0xMTJjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwem0tMzA2LjcgMGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTExMiAxMTJjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDExMiAxMTJjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0w3Ny4zIDI1Nmw4OS40LTg5LjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvaW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiA4MGMwIDE4LTE0LjMgMzQuNi0zOC40IDQ4Yy0yOS4xIDE2LjEtNzIuNSAyNy41LTEyMi4zIDMwLjljLTMuNy0xLjgtNy40LTMuNS0xMS4zLTVDMzAwLjYgMTM3LjQgMjQ4LjIgMTI4IDE5MiAxMjhjLTguMyAwLTE2LjQgLjItMjQuNSAuNmwtMS4xLS42QzE0Mi4zIDExNC42IDEyOCA5OCAxMjggODBjMC00NC4yIDg2LTgwIDE5Mi04MFM1MTIgMzUuOCA1MTIgODB6TTE2MC43IDE2MS4xYzEwLjItLjcgMjAuNy0xLjEgMzEuMy0xLjFjNjIuMiAwIDExNy40IDEyLjMgMTUyLjUgMzEuNEMzNjkuMyAyMDQuOSAzODQgMjIxLjcgMzg0IDI0MGMwIDQtLjcgNy45LTIuMSAxMS43Yy00LjYgMTMuMi0xNyAyNS4zLTM1IDM1LjVjMCAwIDAgMCAwIDBjLS4xIC4xLS4zIC4xLS40IC4ybDAgMCAwIDBjLS4zIC4yLS42IC4zLS45IC41Yy0zNSAxOS40LTkwLjggMzItMTUzLjYgMzJjLTU5LjYgMC0xMTIuOS0xMS4zLTE0OC4yLTI5LjFjLTEuOS0uOS0zLjctMS45LTUuNS0yLjlDMTQuMyAyNzQuNiAwIDI1OCAwIDI0MGMwLTM0LjggNTMuNC02NC41IDEyOC03NS40YzEwLjUtMS41IDIxLjQtMi43IDMyLjctMy41ek00MTYgMjQwYzAtMjEuOS0xMC42LTM5LjktMjQuMS01My40YzI4LjMtNC40IDU0LjItMTEuNCA3Ni4yLTIwLjVjMTYuMy02LjggMzEuNS0xNS4yIDQzLjktMjUuNVYxNzZjMCAxOS4zLTE2LjUgMzcuMS00My44IDUwLjljLTE0LjYgNy40LTMyLjQgMTMuNy01Mi40IDE4LjVjLjEtMS44IC4yLTMuNSAuMi01LjN6bS0zMiA5NmMwIDE4LTE0LjMgMzQuNi0zOC40IDQ4Yy0xLjggMS0zLjYgMS45LTUuNSAyLjlDMzA0LjkgNDA0LjcgMjUxLjYgNDE2IDE5MiA0MTZjLTYyLjggMC0xMTguNi0xMi42LTE1My42LTMyQzE0LjMgMzcwLjYgMCAzNTQgMCAzMzZWMzAwLjZjMTIuNSAxMC4zIDI3LjYgMTguNyA0My45IDI1LjVDODMuNCAzNDIuNiAxMzUuOCAzNTIgMTkyIDM1MnMxMDguNi05LjQgMTQ4LjEtMjUuOWM3LjgtMy4yIDE1LjMtNi45IDIyLjQtMTAuOWM2LjEtMy40IDExLjgtNy4yIDE3LjItMTEuMmMxLjUtMS4xIDIuOS0yLjMgNC4zLTMuNFYzMDR2NS43VjMzNnptMzIgMFYzMDQgMjc4LjFjMTktNC4yIDM2LjUtOS41IDUyLjEtMTZjMTYuMy02LjggMzEuNS0xNS4yIDQzLjktMjUuNVYyNzJjMCAxMC41LTUgMjEtMTQuOSAzMC45Yy0xNi4zIDE2LjMtNDUgMjkuNy04MS4zIDM4LjRjLjEtMS43IC4yLTMuNSAuMi01LjN6TTE5MiA0NDhjNTYuMiAwIDEwOC42LTkuNCAxNDguMS0yNS45YzE2LjMtNi44IDMxLjUtMTUuMiA0My45LTI1LjVWNDMyYzAgNDQuMi04NiA4MC0xOTIgODBTMCA0NzYuMiAwIDQzMlYzOTYuNmMxMi41IDEwLjMgMjcuNiAxOC43IDQzLjkgMjUuNUM4My40IDQzOC42IDEzNS44IDQ0OCAxOTIgNDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2xvblNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU1IDM5LjhjNC4zLTE3LjEtNi4xLTM0LjUtMjMuMy0zOC44UzE5Ny4yIDcuMSAxOTMgMjQuMkwxODEuOSA2OC42Qzk2LjEgODcuOCAzMiAxNjQuNCAzMiAyNTZjMCA1OC4xIDI1LjggMTEwLjIgNjYuNyAxNDUuNEw4MSA0NzIuMmMtNC4zIDE3LjEgNi4xIDM0LjUgMjMuMyAzOC44czM0LjUtNi4xIDM4LjgtMjMuM2wxMy01Mi4xYzkgMy40IDE4LjQgNi4yIDI4IDguMkwxNzcgNDcyLjJjLTQuMyAxNy4xIDYuMSAzNC41IDIzLjMgMzguOHMzNC41LTYuMSAzOC44LTIzLjNsMTAuNC00MS40YzMzLjQtNC40IDY0LjEtMTcuNCA4OS44LTM2LjdjMTQuMS0xMC42IDE3LTMwLjcgNi40LTQ0LjhzLTMwLjctMTctNDQuOC02LjRjLTEwLjIgNy43LTIxLjcgMTMuOS0zNCAxOC4zTDMyMSAxNjBjOS40LS4zIDE4LjUtNC43IDI0LjYtMTIuOGMxMC42LTE0LjEgNy44LTM0LjItNi40LTQ0LjhjLTEuMS0uOC0yLjItMS42LTMuMy0yLjRMMzUxIDM5LjhjNC4zLTE3LjEtNi4xLTM0LjUtMjMuMy0zOC44UzI5My4yIDcuMSAyODkgMjQuMkwyNzcuMiA3MS41Yy05LjMtMi43LTE4LjgtNC42LTI4LjYtNS45TDI1NSAzOS44ek0xNjMuMiAxNDMuM0wxMTcuMyAzMjYuOEMxMDMuOSAzMDYuNSA5NiAyODIuMiA5NiAyNTZjMC00OC43IDI3LjItOTEgNjcuMi0xMTIuN3ptOC42IDIyOS41bDYxLjEtMjQ0LjZjOS45IC43IDE5LjUgMi41IDI4LjcgNS4zbC02MiAyNDguMWMtOS43LTEuOS0xOS00LjgtMjcuOC04Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnREb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ0OGMxNDEuNCAwIDI1Ni05My4xIDI1Ni0yMDhTMzk3LjQgMzIgMjU2IDMyUzAgMTI1LjEgMCAyNDBjMCA0NS4xIDE3LjcgODYuOCA0Ny43IDEyMC45Yy0xLjkgMjQuNS0xMS40IDQ2LjMtMjEuNCA2Mi45Yy01LjUgOS4yLTExLjEgMTYuNi0xNS4yIDIxLjZjLTIuMSAyLjUtMy43IDQuNC00LjkgNS43Yy0uNiAuNi0xIDEuMS0xLjMgMS40bC0uMyAuMyAwIDAgMCAwIDAgMCAwIDBjLTQuNiA0LjYtNS45IDExLjQtMy40IDE3LjRjMi41IDYgOC4zIDkuOSAxNC44IDkuOWMyOC43IDAgNTcuNi04LjkgODEuNi0xOS4zYzIyLjktMTAgNDIuNC0yMS45IDU0LjMtMzAuNmMzMS44IDExLjUgNjcgMTcuOSAxMDQuMSAxNy45em0yMC0zMTJ2MTMuOWM3LjUgMS4yIDE0LjYgMi45IDIxLjEgNC43YzEwLjcgMi44IDE3IDEzLjggMTQuMiAyNC41cy0xMy44IDE3LTI0LjUgMTQuMmMtMTEtMi45LTIxLjYtNS0zMS4yLTUuMmMtNy45LS4xLTE2IDEuOC0yMS41IDVjLTQuOCAyLjgtNi4yIDUuNi02LjIgOS4zYzAgMS44IC4xIDMuNSA1LjMgNi43YzYuMyAzLjggMTUuNSA2LjcgMjguMyAxMC41bC43IC4yYzExLjIgMy40IDI1LjYgNy43IDM3LjEgMTVjMTIuOSA4LjEgMjQuMyAyMS4zIDI0LjYgNDEuNmMuMyAyMC45LTEwLjUgMzYuMS0yNC44IDQ1Yy03LjIgNC41LTE1LjIgNy4zLTIzLjIgOVYzNDRjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwVjMyOS40Yy0xMC4zLTIuMi0yMC01LjUtMjguMi04LjRsMCAwIDAgMGMtMi4xLS43LTQuMS0xLjQtNi4xLTIuMWMtMTAuNS0zLjUtMTYuMS0xNC44LTEyLjYtMjUuM3MxNC44LTE2LjEgMjUuMy0xMi42YzIuNSAuOCA0LjkgMS43IDcuMiAyLjRjMTMuNiA0LjYgMjQgOC4xIDM1LjEgOC41YzguNiAuMyAxNi41LTEuNiAyMS40LTQuN2M0LjEtMi41IDYtNS41IDUuOS0xMC41YzAtMi45LS44LTUtNS45LTguMmMtNi4zLTQtMTUuNC02LjktMjgtMTAuN2wtMS43LS41Yy0xMC45LTMuMy0yNC42LTcuNC0zNS42LTE0Yy0xMi43LTcuNy0yNC42LTIwLjUtMjQuNy00MC43Yy0uMS0yMS4xIDExLjgtMzUuNyAyNS44LTQzLjljNi45LTQuMSAxNC41LTYuOCAyMi4yLTguNVYxMzZjMC0xMSA5LTIwIDIwLTIwczIwIDkgMjAgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnREb3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0NDhjMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMlMwIDEyNS4xIDAgMjQwYzAgNDUuMSAxNy43IDg2LjggNDcuNyAxMjAuOWMtMS45IDI0LjUtMTEuNCA0Ni4zLTIxLjQgNjIuOWMtNS41IDkuMi0xMS4xIDE2LjYtMTUuMiAyMS42Yy0yLjEgMi41LTMuNyA0LjQtNC45IDUuN2MtLjYgLjYtMSAxLjEtMS4zIDEuNGwtLjMgLjMgMCAwIDAgMCAwIDAgMCAwYy00LjYgNC42LTUuOSAxMS40LTMuNCAxNy40YzIuNSA2IDguMyA5LjkgMTQuOCA5LjljMjguNyAwIDU3LjYtOC45IDgxLjYtMTkuM2MyMi45LTEwIDQyLjQtMjEuOSA1NC4zLTMwLjZjMzEuOCAxMS41IDY3IDE3LjkgMTA0LjEgMTcuOXpNMTI4IDIwOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTEyOCAwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptOTYgMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudE1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ0OGMxNDEuNCAwIDI1Ni05My4xIDI1Ni0yMDhTMzk3LjQgMzIgMjU2IDMyUzAgMTI1LjEgMCAyNDBjMCA0NS4xIDE3LjcgODYuOCA0Ny43IDEyMC45Yy0xLjkgMjQuNS0xMS40IDQ2LjMtMjEuNCA2Mi45Yy01LjUgOS4yLTExLjEgMTYuNi0xNS4yIDIxLjZjLTIuMSAyLjUtMy43IDQuNC00LjkgNS43Yy0uNiAuNi0xIDEuMS0xLjMgMS40bC0uMyAuMyAwIDAgMCAwIDAgMCAwIDBjLTQuNiA0LjYtNS45IDExLjQtMy40IDE3LjRjMi41IDYgOC4zIDkuOSAxNC44IDkuOWMyOC43IDAgNTcuNi04LjkgODEuNi0xOS4zYzIyLjktMTAgNDIuNC0yMS45IDU0LjMtMzAuNmMzMS44IDExLjUgNjcgMTcuOSAxMDQuMSAxNy45ek0yMjQgMTYwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NDhoNDhjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyODh2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDI0MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyMjRjMC04LjggNy4yLTE2IDE2LTE2aDQ4VjE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNTEyLjkgMzc2LjdDNTUyLjIgMzQwLjIgNTc2IDI5Mi4zIDU3NiAyNDBDNTc2IDEyNS4xIDQ2MS40IDMyIDMyMCAzMmMtNjcuNyAwLTEyOS4zIDIxLjQtMTc1LjEgNTYuM0wzOC44IDUuMXptMzg1LjIgNDI1TDgyLjkgMTYxLjNDNzAuNyAxODUuNiA2NCAyMTIuMiA2NCAyNDBjMCA0NS4xIDE3LjcgODYuOCA0Ny43IDEyMC45Yy0xLjkgMjQuNS0xMS40IDQ2LjMtMjEuNCA2Mi45Yy01LjUgOS4yLTExLjEgMTYuNi0xNS4yIDIxLjZjLTIuMSAyLjUtMy43IDQuNC00LjkgNS43Yy0uNiAuNi0xIDEuMS0xLjMgMS40bC0uMyAuMyAwIDAgMCAwIDAgMCAwIDBjLTQuNiA0LjYtNS45IDExLjQtMy40IDE3LjRjMi41IDYgOC4zIDkuOSAxNC44IDkuOWMyOC43IDAgNTcuNi04LjkgODEuNi0xOS4zYzIyLjktMTAgNDIuNC0yMS45IDU0LjMtMzAuNmMzMS44IDExLjUgNjcgMTcuOSAxMDQuMSAxNy45YzM3IDAgNzIuMy02LjQgMTA0LjEtMTcuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudFNtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDQ4YzE0MS40IDAgMjU2LTkzLjEgMjU2LTIwOFMzOTcuNCAzMiAyNTYgMzJTMCAxMjUuMSAwIDI0MGMwIDQ1LjEgMTcuNyA4Ni44IDQ3LjcgMTIwLjljLTEuOSAyNC41LTExLjQgNDYuMy0yMS40IDYyLjljLTUuNSA5LjItMTEuMSAxNi42LTE1LjIgMjEuNmMtMi4xIDIuNS0zLjcgNC40LTQuOSA1LjdjLS42IC42LTEgMS4xLTEuMyAxLjRsLS4zIC4zIDAgMCAwIDAgMCAwIDAgMGMtNC42IDQuNi01LjkgMTEuNC0zLjQgMTcuNGMyLjUgNiA4LjMgOS45IDE0LjggOS45YzI4LjcgMCA1Ny42LTguOSA4MS42LTE5LjNjMjIuOS0xMCA0Mi40LTIxLjkgNTQuMy0zMC42YzMxLjggMTEuNSA2NyAxNy45IDEwNC4xIDE3Ljl6TTk2IDIxMi44YzAtMjAuMyAxNi41LTM2LjggMzYuOC0zNi44SDE1MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMzIuOGMtMi43IDAtNC44IDIuMi00LjggNC44YzAgMS42IC44IDMuMSAyLjIgNGwyOS40IDE5LjZjMTAuMyA2LjggMTYuNCAxOC4zIDE2LjQgMzAuN2MwIDIwLjMtMTYuNSAzNi44LTM2LjggMzYuOEgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoMjcuMmMyLjcgMCA0LjgtMi4yIDQuOC00LjhjMC0xLjYtLjgtMy4xLTIuMi00bC0yOS40LTE5LjZDMTAyLjIgMjM2LjcgOTYgMjI1LjIgOTYgMjEyLjh6TTM3Mi44IDE3NkgzOTJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzcyLjhjLTIuNyAwLTQuOCAyLjItNC44IDQuOGMwIDEuNiAuOCAzLjEgMi4yIDRsMjkuNCAxOS42YzEwLjIgNi44IDE2LjQgMTguMyAxNi40IDMwLjdjMCAyMC4zLTE2LjUgMzYuOC0zNi44IDM2LjhIMzUyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDI3LjJjMi43IDAgNC44LTIuMiA0LjgtNC44YzAtMS42LS44LTMuMS0yLjItNGwtMjkuNC0xOS42Yy0xMC4yLTYuOC0xNi40LTE4LjMtMTYuNC0zMC43YzAtMjAuMyAxNi41LTM2LjggMzYuOC0zNi44em0tMTUyIDYuNEwyNTYgMjI5LjNsMzUuMi00Ni45YzQuMS01LjUgMTEuMy03LjggMTcuOS01LjZzMTAuOSA4LjMgMTAuOSAxNS4ydjk2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI0MGwtMTkuMiAyNS42Yy0zIDQtNy44IDYuNC0xMi44IDYuNHMtOS44LTIuNC0xMi44LTYuNEwyMjQgMjQwdjQ4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjE5MmMwLTYuOSA0LjQtMTMgMTAuOS0xNS4yczEzLjcgLjEgMTcuOSA1LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDI0MGMwIDExNC45LTExNC42IDIwOC0yNTYgMjA4Yy0zNy4xIDAtNzIuMy02LjQtMTA0LjEtMTcuOWMtMTEuOSA4LjctMzEuMyAyMC42LTU0LjMgMzAuNkM3My42IDQ3MS4xIDQ0LjcgNDgwIDE2IDQ4MGMtNi41IDAtMTIuMy0zLjktMTQuOC05LjljLTIuNS02LTEuMS0xMi44IDMuNC0xNy40bDAgMCAwIDAgMCAwIDAgMCAuMy0uM2MuMy0uMyAuNy0uNyAxLjMtMS40YzEuMS0xLjIgMi44LTMuMSA0LjktNS43YzQuMS01IDkuNi0xMi40IDE1LjItMjEuNmMxMC0xNi42IDE5LjUtMzguNCAyMS40LTYyLjlDMTcuNyAzMjYuOCAwIDI4NS4xIDAgMjQwQzAgMTI1LjEgMTE0LjYgMzIgMjU2IDMyczI1NiA5My4xIDI1NiAyMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnRzRG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAxNzZjMCA5Ny4yLTkzLjEgMTc2LTIwOCAxNzZjLTM4LjIgMC03My45LTguNy0xMDQuNy0yMy45Yy03LjUgNC0xNiA3LjktMjUuMiAxMS40QzU5LjggMzQ2LjQgMzcuOCAzNTIgMTYgMzUyYy02LjkgMC0xMy4xLTQuNS0xNS4yLTExLjFzLjItMTMuOCA1LjgtMTcuOWwwIDAgMCAwIC4yLS4yYy4yLS4yIC42LS40IDEuMS0uOGMxLS44IDIuNS0yIDQuMy0zLjdjMy42LTMuMyA4LjUtOC4xIDEzLjMtMTQuM2M1LjUtNyAxMC43LTE1LjQgMTQuMi0yNC43QzE0LjcgMjUwLjMgMCAyMTQuNiAwIDE3NkMwIDc4LjggOTMuMSAwIDIwOCAwUzQxNiA3OC44IDQxNiAxNzZ6TTIzMS41IDM4M0MzNDguOSAzNzIuOSA0NDggMjg4LjMgNDQ4IDE3NmMwLTUuMi0uMi0xMC40LS42LTE1LjVDNTU1LjEgMTY3LjEgNjQwIDI0My4yIDY0MCAzMzZjMCAzOC42LTE0LjcgNzQuMy0zOS42IDEwMy40YzMuNSA5LjQgOC43IDE3LjcgMTQuMiAyNC43YzQuOCA2LjIgOS43IDExIDEzLjMgMTQuM2MxLjggMS42IDMuMyAyLjkgNC4zIDMuN2MuNSAuNCAuOSAuNyAxLjEgLjhsLjIgLjIgMCAwIDAgMGM1LjYgNC4xIDcuOSAxMS4zIDUuOCAxNy45Yy0yLjEgNi42LTguMyAxMS4xLTE1LjIgMTEuMWMtMjEuOCAwLTQzLjgtNS42LTYyLjEtMTIuNWMtOS4yLTMuNS0xNy44LTcuNC0yNS4yLTExLjRDNTA1LjkgNTAzLjMgNDcwLjIgNTEyIDQzMiA1MTJjLTk1LjYgMC0xNzYuMi01NC42LTIwMC41LTEyOXpNMjI4IDcyYzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMFY4NmMtNy42IDEuNy0xNS4yIDQuNC0yMi4yIDguNWMtMTMuOSA4LjMtMjUuOSAyMi44LTI1LjggNDMuOWMuMSAyMC4zIDEyIDMzLjEgMjQuNyA0MC43YzExIDYuNiAyNC43IDEwLjggMzUuNiAxNGwxLjcgLjVjMTIuNiAzLjggMjEuOCA2LjggMjggMTAuN2M1LjEgMy4yIDUuOCA1LjQgNS45IDguMmMuMSA1LTEuOCA4LTUuOSAxMC41Yy01IDMuMS0xMi45IDUtMjEuNCA0LjdjLTExLjEtLjQtMjEuNS0zLjktMzUuMS04LjVjLTIuMy0uOC00LjctMS42LTcuMi0yLjRjLTEwLjUtMy41LTIxLjggMi4yLTI1LjMgMTIuNnMyLjIgMjEuOCAxMi42IDI1LjNjMS45IC42IDQgMS4zIDYuMSAyLjFsMCAwIDAgMGM4LjMgMi45IDE3LjkgNi4yIDI4LjIgOC40VjI4MGMwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMFYyNjYuMmM4LTEuNyAxNi00LjUgMjMuMi05YzE0LjMtOC45IDI1LjEtMjQuMSAyNC44LTQ1Yy0uMy0yMC4zLTExLjctMzMuNC0yNC42LTQxLjZjLTExLjUtNy4yLTI1LjktMTEuNi0zNy4xLTE1bC0uNy0uMmMtMTIuOC0zLjktMjEuOS02LjctMjguMy0xMC41Yy01LjItMy4xLTUuMy00LjktNS4zLTYuN2MwLTMuNyAxLjQtNi41IDYuMi05LjNjNS40LTMuMiAxMy42LTUuMSAyMS41LTVjOS42IC4xIDIwLjIgMi4yIDMxLjIgNS4yYzEwLjcgMi44IDIxLjYtMy41IDI0LjUtMTQuMnMtMy41LTIxLjYtMTQuMi0yNC41Yy02LjUtMS43LTEzLjctMy40LTIxLjEtNC43VjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21tZW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggMzUyYzExNC45IDAgMjA4LTc4LjggMjA4LTE3NlMzMjIuOSAwIDIwOCAwUzAgNzguOCAwIDE3NmMwIDM4LjYgMTQuNyA3NC4zIDM5LjYgMTAzLjRjLTMuNSA5LjQtOC43IDE3LjctMTQuMiAyNC43Yy00LjggNi4yLTkuNyAxMS0xMy4zIDE0LjNjLTEuOCAxLjYtMy4zIDIuOS00LjMgMy43Yy0uNSAuNC0uOSAuNy0xLjEgLjhsLS4yIC4yIDAgMCAwIDBDMSAzMjcuMi0xLjQgMzM0LjQgLjggMzQwLjlTOS4xIDM1MiAxNiAzNTJjMjEuOCAwIDQzLjgtNS42IDYyLjEtMTIuNWM5LjItMy41IDE3LjgtNy40IDI1LjMtMTEuNEMxMzQuMSAzNDMuMyAxNjkuOCAzNTIgMjA4IDM1MnpNNDQ4IDE3NmMwIDExMi4zLTk5LjEgMTk2LjktMjE2LjUgMjA3QzI1NS44IDQ1Ny40IDMzNi40IDUxMiA0MzIgNTEyYzM4LjIgMCA3My45LTguNyAxMDQuNy0yMy45YzcuNSA0IDE2IDcuOSAyNS4yIDExLjRjMTguMyA2LjkgNDAuMyAxMi41IDYyLjEgMTIuNWM2LjkgMCAxMy4xLTQuNSAxNS4yLTExLjFjMi4xLTYuNi0uMi0xMy44LTUuOC0xNy45bDAgMCAwIDAtLjItLjJjLS4yLS4yLS42LS40LTEuMS0uOGMtMS0uOC0yLjUtMi00LjMtMy43Yy0zLjYtMy4zLTguNS04LjEtMTMuMy0xNC4zYy01LjUtNy0xMC43LTE1LjQtMTQuMi0yNC43YzI0LjktMjkgMzkuNi02NC43IDM5LjYtMTAzLjRjMC05Mi44LTg0LjktMTY4LjktMTkyLjYtMTc1LjVjLjQgNS4xIC42IDEwLjMgLjYgMTUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tcGFjdERpc2MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yNTYgMzJhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em0tOTYtMzJhOTYgOTYgMCAxIDAgMTkyIDAgOTYgOTYgMCAxIDAgLTE5MiAwek05NiAyNDBjMC0zNSAxNy41LTcxLjEgNDUuMi05OC44UzIwNSA5NiAyNDAgOTZjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZjLTQ1LjQgMC04OS4yIDIyLjMtMTIxLjUgNTQuNVM2NCAxOTQuNiA2NCAyNDBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tcGFzc0RyYWZ0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiA5NmMwIDE0LjMtMy4xIDI3LjktOC44IDQwLjJMMzk2IDIyNy40Yy0yMy43IDI1LjMtNTQuMiA0NC4xLTg4LjUgNTMuNkwyNTYgMTkyaDAgMGwtNjggMTE3LjVjMjEuNSA2LjggNDQuMyAxMC41IDY4LjEgMTAuNWM3MC43IDAgMTMzLjgtMzIuNyAxNzQuOS04NGMxMS4xLTEzLjggMzEuMi0xNiA0NS01czE2IDMxLjIgNSA0NUM0MjguMSAzNDEuOCAzNDcgMzg0IDI1NiAzODRjLTM1LjQgMC02OS40LTYuNC0xMDAuNy0xOC4xTDk4LjcgNDYzLjdDOTQgNDcxLjggODcgNDc4LjQgNzguNiA0ODIuNkwyMy4yIDUxMC4zYy01IDIuNS0xMC45IDIuMi0xNS42LS43UzAgNTAxLjUgMCA0OTZWNDQwLjZjMC04LjQgMi4yLTE2LjcgNi41LTI0LjFsNjAtMTAzLjdDNTMuNyAzMDEuNiA0MS44IDI4OS4zIDMxLjIgMjc2Yy0xMS4xLTEzLjgtOC44LTMzLjkgNS00NXMzMy45LTguOCA0NSA1YzUuNyA3LjEgMTEuOCAxMy44IDE4LjIgMjAuMWw2OS40LTExOS45Yy01LjYtMTIuMi04LjgtMjUuOC04LjgtNDAuMmMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2em0yMSAyOTcuOWMzMi42LTEyLjggNjIuNS0zMC44IDg4LjktNTIuOWw0My43IDc1LjVjNC4yIDcuMyA2LjUgMTUuNiA2LjUgMjQuMVY0OTZjMCA1LjUtMi45IDEwLjctNy42IDEzLjZzLTEwLjYgMy4yLTE1LjYgLjdsLTU1LjQtMjcuN2MtOC40LTQuMi0xNS40LTEwLjgtMjAuMS0xOC45TDM3MyAzOTMuOXpNMjU2IDEyOGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbXBhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTUwLjctMTg2LjlMMTYyLjQgMzgwLjZjLTE5LjQgNy41LTM4LjUtMTEuNi0zMS0zMWw1NS41LTE0NC4zYzMuMy04LjUgOS45LTE1LjEgMTguNC0xOC40bDE0NC4zLTU1LjVjMTkuNC03LjUgMzguNSAxMS42IDMxIDMxTDMyNS4xIDMwNi43Yy0zLjIgOC41LTkuOSAxNS4xLTE4LjQgMTguNHpNMjg4IDI1NmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21wcmVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjR6TTMyIDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg5NnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM1MmMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMnpNMzUyIDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM1MlY2NHpNMzIwIDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzODRoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21wdXRlck1vdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTkySDE3NlYwSDE2MEM3MS42IDAgMCA3MS42IDAgMTYwdjMyem0wIDMyVjM1MmMwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MGg2NGM4OC40IDAgMTYwLTcxLjYgMTYwLTE2MFYyMjRIMTkyIDB6bTM4NC0zMlYxNjBDMzg0IDcxLjYgMzEyLjQgMCAyMjQgMEgyMDhWMTkySDM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tcHV0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDk2VjMyMEg2NEw2NCA5NkgzODR6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWMzIwYzAgMzUuMyAyOC43IDY0IDY0IDY0SDE4MS4zbC0xMC43IDMySDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNzcuM2wtMTAuNy0zMkgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTQ2NCAwYy0yNi41IDAtNDggMjEuNS00OCA0OFY0MzJjMCAyNi41IDIxLjUgNDggNDggNDhoNjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhINTI4em0xNiA2NGgzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg1NDRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bS0xNiA4MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZINTQ0Yy04LjggMC0xNi03LjItMTYtMTZ6bTMyIDE2MGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvb2tpZUJpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU3LjUgMjcuNmMtLjgtNS40LTQuOS05LjgtMTAuMy0xMC42djBjLTIyLjEtMy4xLTQ0LjYgLjktNjQuNCAxMS40bC03NCAzOS41Qzg5LjEgNzguNCA3My4yIDk0LjkgNjMuNCAxMTVMMjYuNyAxOTAuNmMtOS44IDIwLjEtMTMgNDIuOS05LjEgNjQuOWwxNC41IDgyLjhjMy45IDIyLjEgMTQuNiA0Mi4zIDMwLjcgNTcuOWw2MC4zIDU4LjRjMTYuMSAxNS42IDM2LjYgMjUuNiA1OC43IDI4LjdsODMgMTEuN2MyMi4xIDMuMSA0NC42LS45IDY0LjQtMTEuNGw3NC0zOS41YzE5LjctMTAuNSAzNS42LTI3IDQ1LjQtNDcuMmwzNi43LTc1LjVjOS44LTIwLjEgMTMtNDIuOSA5LjEtNjQuOXYwYy0uOS01LjMtNS4zLTkuMy0xMC42LTEwLjFjLTUxLjUtOC4yLTkyLjgtNDcuMS0xMDQuNS05Ny40Yy0xLjgtNy42LTgtMTMuNC0xNS43LTE0LjZjLTU0LjYtOC43LTk3LjctNTItMTA2LjItMTA2Ljh6TTIwOCAxNDRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xNDQgMzM2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTIyNC02NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvb2tpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuMiAxN2MtMjIuMS0zLjEtNDQuNiAuOS02NC40IDExLjRsLTc0IDM5LjVDODkuMSA3OC40IDczLjIgOTQuOSA2My40IDExNUwyNi43IDE5MC42Yy05LjggMjAuMS0xMyA0Mi45LTkuMSA2NC45bDE0LjUgODIuOGMzLjkgMjIuMSAxNC42IDQyLjMgMzAuNyA1Ny45bDYwLjMgNTguNGMxNi4xIDE1LjYgMzYuNiAyNS42IDU4LjcgMjguN2w4MyAxMS43YzIyLjEgMy4xIDQ0LjYtLjkgNjQuNC0xMS40bDc0LTM5LjVjMTkuNy0xMC41IDM1LjYtMjcgNDUuNC00Ny4ybDM2LjctNzUuNWM5LjgtMjAuMSAxMy00Mi45IDkuMS02NC45bC0xNC42LTgyLjhjLTMuOS0yMi4xLTE0LjYtNDIuMy0zMC43LTU3LjlMMzg4LjkgNTcuNWMtMTYuMS0xNS42LTM2LjYtMjUuNi01OC43LTI4LjdMMjQ3LjIgMTd6TTIwOCAxNDRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xNDQgMzM2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTIyNC02NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDBIMzMyLjFjMTIuNyAwIDI0LjkgNS4xIDMzLjkgMTQuMWw2Ny45IDY3LjljOSA5IDE0LjEgMjEuMiAxNC4xIDMzLjlWMzM2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDIwOGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDhjMC0yNi41IDIxLjUtNDggNDgtNDh6TTQ4IDEyOGg4MHY2NEg2NFY0NDhIMjU2VjQxNmg2NHY0OGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTc2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb3B5cmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE5OS40IDMxMi42YzMxLjIgMzEuMiA4MS45IDMxLjIgMTEzLjEgMGM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjljLTUwIDUwLTEzMSA1MC0xODEgMHMtNTAtMTMxIDAtMTgxczEzMS01MCAxODEgMGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwYy0zMS4yLTMxLjItODEuOS0zMS4yLTExMy4xIDBzLTMxLjIgODEuOSAwIDExMy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb3VjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAxNjBDNjQgODkuMyAxMjEuMyAzMiAxOTIgMzJINDQ4YzcwLjcgMCAxMjggNTcuMyAxMjggMTI4djMzLjZjLTM2LjUgNy40LTY0IDM5LjctNjQgNzguNHY0OEgxMjhWMjcyYzAtMzguNy0yNy41LTcxLTY0LTc4LjRWMTYwek01NDQgMjcyYzAtMjAuOSAxMy40LTM4LjcgMzItNDUuM2M1LTEuOCAxMC40LTIuNyAxNi0yLjdjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMySDU3NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJIOTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjI3MmMwLTI2LjUgMjEuNS00OCA0OC00OGM1LjYgMCAxMSAxIDE2IDIuN2MxOC42IDYuNiAzMiAyNC40IDMyIDQ1LjN2NDggMzJoMzJINTEyaDMyVjMyMCAyNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAyMjR2MzJWNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMyNy44YzkuOSA2LjYgMjAuNiAxMiAzMiAxNi4xVjM2OGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjM1MS4xYzUuMyAuNiAxMC42IC45IDE2IC45czEwLjctLjMgMTYtLjlWMzY4YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzQzLjhjMTEuNC00IDIyLjEtOS40IDMyLTE2LjFWNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1NmwzMiAzMnY0OS41YzAgOS41IDIuOCAxOC43IDguMSAyNi42TDUzMCA0MjdjOC44IDEzLjEgMjMuNSAyMSAzOS4zIDIxYzIyLjUgMCA0MS45LTE1LjkgNDYuMy0zOGwyMC4zLTEwMS42YzIuNi0xMy0uMy0yNi41LTgtMzcuM2wtMy45LTUuNVYxODRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2MTQuNGwtNTIuOS03NC4xQzQ5NiA4Ni41IDQ1Mi40IDY0IDQwNS45IDY0SDI3MiAyNTYgMTkyIDE0NEM3Ny43IDY0IDI0IDExNy43IDI0IDE4NHY1NEM5LjQgMjQ5LjggMCAyNjcuOCAwIDI4OHYxNy42YzAgOCA2LjQgMTQuNCAxNC40IDE0LjRDNDYuMiAzMjAgNzIgMjk0LjIgNzIgMjYyLjRWMjU2IDIyNCAxODRjMC0yNC4zIDEyLjEtNDUuOCAzMC41LTU4LjlDOTguMyAxMzUuOSA5NiAxNDcuNyA5NiAxNjB2NjR6TTU2MCAzMzZhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHpNMTY2LjYgMTY2LjZjLTQuMi00LjItNi42LTEwLTYuNi0xNmMwLTEyLjUgMTAuMS0yMi42IDIyLjYtMjIuNkgzNjEuNGMxMi41IDAgMjIuNiAxMC4xIDIyLjYgMjIuNmMwIDYtMi40IDExLjgtNi42IDE2bC0yMy40IDIzLjRDMzMyLjIgMjExLjggMzAyLjcgMjI0IDI3MiAyMjRzLTYwLjItMTIuMi04MS45LTMzLjlsLTIzLjQtMjMuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlZGl0Q2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2djMySDU3NlY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNNTc2IDIyNEgwVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjI0ek0xMTIgMzUyaDY0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMTEyIDE2YzAtOC44IDcuMi0xNiAxNi0xNkgzNjhjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMjQwYy04LjggMC0xNi03LjItMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyb3BTaW1wbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyUzY0IDE0LjMgNjQgMzJWNjRIMzJDMTQuMyA2NCAwIDc4LjMgMCA5NnMxNC4zIDMyIDMyIDMySDY0VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzNTJWMzg0SDEyOFYzMnpNMzg0IDQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQ0OGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0NDhsMC0yNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRMMTYwIDY0djY0bDIyNCAwIDAgMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAxMDkuM2w1NC42LTU0LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMNDAyLjcgNjQgMTYwIDY0djY0bDE3OC43IDBMMTI4IDMzOC43VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyUzY0IDE0LjMgNjQgMzJWNjRIMzJDMTQuMyA2NCAwIDc4LjMgMCA5NnMxNC4zIDMyIDMyIDMySDY0VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzNTJWMzg0SDE3My4zTDM4NCAxNzMuMyAzODQgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDQ4aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ0OGwwLTI3NC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm9zcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2ODBINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDgwVjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzMmMyNi41IDAgNDgtMjEuNSA0OC00OFYyNTZoODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTc2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDI1NlY0OGMwLTI2LjUtMjEuNS00OC00OC00OEgxNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyb3NzaGFpcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDIuNGM5My43IDEzLjkgMTY3LjcgODggMTgxLjYgMTgxLjZINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQ2OS42Yy0xMy45IDkzLjctODggMTY3LjctMTgxLjYgMTgxLjZWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ2OS42QzEzMC4zIDQ1NS43IDU2LjMgMzgxLjcgNDIuNCAyODhIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDIuNEM1Ni4zIDEzMC4zIDEzMC4zIDU2LjMgMjI0IDQyLjRWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTEwNy40IDI4OGMxMi41IDU4LjMgNTguNCAxMDQuMSAxMTYuNiAxMTYuNlYzODRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnYyMC42YzU4LjMtMTIuNSAxMDQuMS01OC40IDExNi42LTExNi42SDM4NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgyMC42QzM5Mi4xIDE2NS43IDM0Ni4zIDExOS45IDI4OCAxMDcuNFYxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTA3LjRDMTY1LjcgMTE5LjkgMTE5LjkgMTY1LjcgMTA3LjQgMjI0SDEyOGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgxMDcuNHpNMjU2IDIyNGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU2IDBjLTQ4LjYgMC04OCAzOS40LTg4IDg4djI5LjJMMTIuNSAzOTAuNmMtMTQgMTAuOC0xNi42IDMwLjktNS45IDQ0LjlzMzAuOSAxNi42IDQ0LjkgNS45TDEyNi4xIDM4NEgyNTkuMmw0Ni42IDExMy4xYzUgMTIuMyAxOS4xIDE4LjEgMzEuMyAxMy4xczE4LjEtMTkuMSAxMy4xLTMxLjNMMzExLjEgMzg0SDM1MmMxLjEgMCAyLjEgMCAzLjIgMGw0Ni42IDExMy4yYzUgMTIuMyAxOS4xIDE4LjEgMzEuMyAxMy4xczE4LjEtMTkuMSAxMy4xLTMxLjNsLTQyLTEwMkM0ODQuOSAzNTQuMSA1NDQgMjgwIDU0NCAxOTJWMTI4di04bDgwLjUtMjAuMWM4LjYtMi4xIDEzLjgtMTAuOCAxMS42LTE5LjRDNjI5IDUyIDYwMy40IDMyIDU3NCAzMkg1MjMuOUM1MDcuNyAxMi41IDQ4My4zIDAgNDU2IDB6bTAgNjRhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDkgMTA2YzExLjQtNyAxOS0xOS43IDE5LTM0YzAtMjIuMS0xNy45LTQwLTQwLTQwcy00MCAxNy45LTQwIDQwYzAgMTQuNCA3LjYgMjcgMTkgMzRMMjA5LjcgMjIwLjZjLTkuMSAxOC4yLTMyLjcgMjMuNC00OC42IDEwLjdMNzIgMTYwYzUtNi43IDgtMTUgOC0yNGMwLTIyLjEtMTcuOS00MC00MC00MFMwIDExMy45IDAgMTM2czE3LjkgNDAgNDAgNDBjLjIgMCAuNSAwIC43IDBMODYuNCA0MjcuNGM1LjUgMzAuNCAzMiA1Mi42IDYzIDUyLjZINDI2LjZjMzAuOSAwIDU3LjQtMjIuMSA2My01Mi42TDUzNS4zIDE3NmMuMiAwIC41IDAgLjcgMGMyMi4xIDAgNDAtMTcuOSA0MC00MHMtMTcuOS00MC00MC00MHMtNDAgMTcuOS00MCA0MGMwIDkgMyAxNy4zIDggMjRsLTg5LjEgNzEuM2MtMTUuOSAxMi43LTM5LjUgNy41LTQ4LjYtMTAuN0wzMDkgMTA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcnV0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk3LjQgOS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTE2MC0xNjBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwem0tOTYgMTQ0bC0zNC44IDM0LjhjLTEyLjkgMTIuOS0yMS45IDI5LjItMjUuOCA0Ny4xTDExNi44IDM0Mi45Yy0xLjMgNS45LTQuMyAxMS40LTguNiAxNS43TDkuNCA0NTcuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw5OC44LTk4LjhjNC4zLTQuMyA5LjctNy4zIDE1LjctOC42bDEwNy42LTIzLjljMTcuOC00IDM0LjEtMTIuOSA0Ny4xLTI1LjhsMzQuNy0zNC43YzAgMCAuMS0uMSAuMS0uMXMuMS0uMSAuMS0uMWw3NC42LTc0LjYtNDUuMy00NS4zTDMzNiAyNDIuNyAyNjkuMyAxNzZsNTIuMS01Mi4xTDI3Ni4xIDc4LjZsLTc0LjcgNzQuN3pNMjI0IDIyMS4zTDI5MC43IDI4OGwtMTIuMiAxMi4yYy00LjMgNC4zLTkuNyA3LjMtMTUuNyA4LjZsLTc2LjcgMTcgMTctNzYuN2MxLjMtNS45IDQuMy0xMS40IDguNi0xNS43TDIyNCAyMjEuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3J1emVpcm9TaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDI1NmMwLTg4LjQgNzEuNi0xNjAgMTYwLTE2MGM0MSAwIDc4LjMgMTUuNCAxMDYuNyA0MC43YzEzLjIgMTEuOCAzMy40IDEwLjcgNDUuMi0yLjVzMTAuNy0zMy40LTIuNS00NS4yYy0zOS42LTM1LjUtOTItNTctMTQ5LjMtNTdDMTMyLjMgMzIgMzIgMTMyLjMgMzIgMjU2czEwMC4zIDIyNCAyMjQgMjI0YzU3LjQgMCAxMDkuNy0yMS42IDE0OS4zLTU3YzEzLjItMTEuOCAxNC4zLTMyIDIuNS00NS4ycy0zMi0xNC4zLTQ1LjItMi41QzMzNC4zIDQwMC42IDI5NyA0MTYgMjU2IDQxNlYzMjB2LTguN2MwLTEyLjggMTAuNC0yMy4zIDIzLjMtMjMuM2M0LjYgMCA5LjEgMS40IDEyLjkgMy45bDEwLjEgNi43YzE0LjcgOS44IDM0LjYgNS44IDQ0LjQtOC45czUuOC0zNC42LTguOS00NC40bC0xMC4xLTYuN2MtMTQuMy05LjYtMzEuMi0xNC43LTQ4LjQtMTQuN2MtMTIuNCAwLTI0LjIgMi42LTM0LjkgNy4zYy01LjUtNC41LTEyLjYtNy4zLTIwLjMtNy4zYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY1NS4zVjMyMHY4Mi43QzEzNS41IDM3OCA5NiAzMjEuNiA5NiAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUN1YmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjM0LjUgNS43YzEzLjktNSAyOS4xLTUgNDMuMSAwbDE5MiA2OC42QzQ5NSA4My40IDUxMiAxMDcuNSA1MTIgMTM0LjZWMzc3LjRjMCAyNy0xNyA1MS4yLTQyLjUgNjAuM2wtMTkyIDY4LjZjLTEzLjkgNS0yOS4xIDUtNDMuMSAwbC0xOTItNjguNkMxNyA0MjguNiAwIDQwNC41IDAgMzc3LjRWMTM0LjZjMC0yNyAxNy01MS4yIDQyLjUtNjAuM2wxOTItNjguNnpNMjU2IDY2TDgyLjMgMTI4IDI1NiAxOTBsMTczLjctNjJMMjU2IDY2em0zMiAzNjguNmwxNjAtNTcuMXYtMTg4TDI4OCAyNDYuNnYxODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUN1YmVzU3RhY2tlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNjR2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJIMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNODIuNyAyMDdjLTE1LjMgOC44LTIwLjUgMjguNC0xMS43IDQzLjdsMzIgNTUuNGM4LjggMTUuMyAyOC40IDIwLjUgNDMuNyAxMS43bDU1LjQtMzJjMTUuMy04LjggMjAuNS0yOC40IDExLjctNDMuN2wtMzItNTUuNGMtOC44LTE1LjMtMjguNC0yMC41LTQzLjctMTEuN0w4Mi43IDIwN3pNMjg4IDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDI4OHptNjQgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NGMxNy43IDAgMzItMTQuMyAzMi0zMlYzODRjMC0xNy43LTE0LjMtMzItMzItMzJIMzUyek0xNjAgMzg0djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek0zMiAzNTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3ViZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjkwLjggNDguNmw3OC40IDI5LjdMMjg4IDEwOS41IDIwNi44IDc4LjNsNzguNC0yOS43YzEuOC0uNyAzLjgtLjcgNS43IDB6TTEzNiA5Mi41VjIwNC43Yy0xLjMgLjQtMi42IC44LTMuOSAxLjNsLTk2IDM2LjRDMTQuNCAyNTAuNiAwIDI3MS41IDAgMjk0LjdWNDEzLjljMCAyMi4yIDEzLjEgNDIuMyAzMy41IDUxLjNsOTYgNDIuMmMxNC40IDYuMyAzMC43IDYuMyA0NS4xIDBMMjg4IDQ1Ny41bDExMy41IDQ5LjljMTQuNCA2LjMgMzAuNyA2LjMgNDUuMSAwbDk2LTQyLjJjMjAuMy04LjkgMzMuNS0yOS4xIDMzLjUtNTEuM1YyOTQuN2MwLTIzLjMtMTQuNC00NC4xLTM2LjEtNTIuNGwtOTYtMzYuNGMtMS4zLS41LTIuNi0uOS0zLjktMS4zVjkyLjVjMC0yMy4zLTE0LjQtNDQuMS0zNi4xLTUyLjRsLTk2LTM2LjRjLTEyLjgtNC44LTI2LjktNC44LTM5LjcgMGwtOTYgMzYuNEMxNTAuNCA0OC40IDEzNiA2OS4zIDEzNiA5Mi41ek0zOTIgMjEwLjZsLTgyLjQgMzEuMlYxNTIuNkwzOTIgMTIxdjg5LjZ6TTE1NC44IDI1MC45bDc4LjQgMjkuN0wxNTIgMzExLjcgNzAuOCAyODAuNmw3OC40LTI5LjdjMS44LS43IDMuOC0uNyA1LjcgMHptMTguOCAyMDQuNFYzNTQuOEwyNTYgMzIzLjJ2OTUuOWwtODIuNCAzNi4yek00MjEuMiAyNTAuOWMxLjgtLjcgMy44LS43IDUuNyAwbDc4LjQgMjkuN0w0MjQgMzExLjdsLTgxLjItMzEuMSA3OC40LTI5Ljd6TTUyMy4yIDQyMS4ybC03Ny42IDM0LjFWMzU0LjhMNTI4IDMyMy4ydjkwLjdjMCAzLjItMS45IDYtNC44IDcuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMyaDk2YzEyMy43IDAgMjI0IDEwMC4zIDIyNCAyMjRzLTEwMC4zIDIyNC0yMjQgMjI0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NnptMTYwIDBINjRWNDE2aDk2Yzg4LjQgMCAxNjAtNzEuNiAxNjAtMTYwcy03MS42LTE2MC0xNjAtMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEYXRhYmFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggODB2NDhjMCA0NC4yLTEwMC4zIDgwLTIyNCA4MFMwIDE3Mi4yIDAgMTI4VjgwQzAgMzUuOCAxMDAuMyAwIDIyNCAwUzQ0OCAzNS44IDQ0OCA4MHpNMzkzLjIgMjE0LjdjMjAuOC03LjQgMzkuOS0xNi45IDU0LjgtMjguNlYyODhjMCA0NC4yLTEwMC4zIDgwLTIyNCA4MFMwIDMzMi4yIDAgMjg4VjE4Ni4xYzE0LjkgMTEuOCAzNCAyMS4yIDU0LjggMjguNkM5OS43IDIzMC43IDE1OS41IDI0MCAyMjQgMjQwczEyNC4zLTkuMyAxNjkuMi0yNS4zek0wIDM0Ni4xYzE0LjkgMTEuOCAzNCAyMS4yIDU0LjggMjguNkM5OS43IDM5MC43IDE1OS41IDQwMCAyMjQgNDAwczEyNC4zLTkuMyAxNjkuMi0yNS4zYzIwLjgtNy40IDM5LjktMTYuOSA1NC44LTI4LjZWNDMyYzAgNDQuMi0xMDAuMyA4MC0yMjQgODBTMCA0NzYuMiAwIDQzMlYzNDYuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGVsZXRlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzYgMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDIwNS4zYy0xNyAwLTMzLjMgNi43LTQ1LjMgMTguN0w5LjQgMjMzLjRjLTYgNi05LjQgMTQuMS05LjQgMjIuNnMzLjQgMTYuNiA5LjQgMjIuNkwxNjAgNDI5LjNjMTIgMTIgMjguMyAxOC43IDQ1LjMgMTguN0g1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4ek0yNzEgMTc1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDQ3IDQ3IDQ3LTQ3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNDcgNDcgNDcgNDdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDctNDctNDcgNDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDctNDctNDctNDdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZW1vY3JhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMmMwLTguOSAzLjgtMjAuOSA2LjItMjcuM0M3MS4yIDEuOCA3NCAwIDc3IDBjMS45IDAgMy44IC43IDUuMiAyLjFMMTI4IDQ1LjcgMTczLjggMi4xQzE3NS4yIC43IDE3Ny4xIDAgMTc5IDBjMyAwIDUuOCAxLjggNi44IDQuN2MyLjQgNi41IDYuMiAxOC40IDYuMiAyNy4zYzAgMjYuNS0yMS45IDQyLTI5LjUgNDYuNmw3Ni4yIDcyLjZjNiA1LjcgMTMuOSA4LjggMjIuMSA4LjhINDgwbDMyIDBjNDAuMyAwIDc4LjIgMTkgMTAyLjQgNTEuMmwxOS4yIDI1LjZjMTAuNiAxNC4xIDcuNyAzNC4yLTYuNCA0NC44cy0zNC4yIDcuNy00NC44LTYuNGwtMTkuMi0yNS42Yy01LjMtNy0xMS44LTEyLjgtMTkuMi0xN1YzMjBIMTkybC00MC40LTk0LjNjLTMuOS05LjItMTUuMy0xMi42LTIzLjYtN2wtNDIuMSAyOGMtOS4xIDYuMS0xOS43IDkuMy0zMC43IDkuM2gtMkMyMy45IDI1NiAwIDIzMi4xIDAgMjAyLjdjMC0xMi4xIDQuMS0yMy44IDExLjctMzMuM0w4Ny42IDc0LjZDNzguMSA2Ny40IDY0IDUzLjIgNjQgMzJ6TTQ0OCAzNTJoOTZ2NjQgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJINDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MTZIMjg4djY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDE2IDM1Mmg5Nkg0NDh6TTI2MC45IDIxMC45Yy0uOS0xLjgtMi44LTIuOS00LjgtMi45cy0zLjkgMS4xLTQuOCAyLjlsLTEwLjUgMjAuNS0yMy41IDMuM2MtMiAuMy0zLjcgMS42LTQuMyAzLjVzLS4xIDMuOSAxLjMgNS4zbDE3IDE2LTQgMjIuNmMtLjMgMS45IC41IDMuOSAyLjEgNXMzLjggMS4zIDUuNiAuNGwyMS0xMC43IDIxIDEwLjdjMS44IC45IDQgLjggNS42LS40czIuNS0zLjEgMi4xLTVsLTQtMjIuNiAxNy0xNmMxLjUtMS40IDItMy40IDEuMy01LjNzLTIuMy0zLjItNC4zLTMuNWwtMjMuNS0zLjMtMTAuNS0yMC41ek0zNjguMSAyMDhjLTIgMC0zLjkgMS4xLTQuOCAyLjlsLTEwLjUgMjAuNS0yMy41IDMuM2MtMiAuMy0zLjcgMS42LTQuMyAzLjVzLS4xIDMuOSAxLjMgNS4zbDE3IDE2LTQgMjIuNmMtLjMgMS45IC41IDMuOSAyLjEgNXMzLjggMS4zIDUuNiAuNGwyMS0xMC43IDIxIDEwLjdjMS44IC45IDQgLjggNS42LS40czIuNS0zLjEgMi4xLTVsLTQtMjIuNiAxNy0xNmMxLjUtMS40IDItMy40IDEuNC01LjNzLTIuMy0zLjItNC4zLTMuNWwtMjMuNS0zLjMtMTAuNS0yMC41Yy0uOS0xLjgtMi44LTIuOS00LjgtMi45em0xMTYuOCAyLjljLS45LTEuOC0yLjgtMi45LTQuOC0yLjlzLTMuOSAxLjEtNC44IDIuOWwtMTAuNSAyMC41LTIzLjUgMy4zYy0yIC4zLTMuNyAxLjYtNC4zIDMuNXMtLjEgMy45IDEuMyA1LjNsMTcgMTYtNCAyMi42Yy0uMyAxLjkgLjUgMy45IDIuMSA1czMuOCAxLjMgNS42IC40bDIxLTEwLjcgMjEgMTAuN2MxLjggLjkgNCAuOCA1LjYtLjRzMi41LTMuMSAyLjEtNWwtNC0yMi42IDE3LTE2YzEuNS0xLjQgMi0zLjQgMS40LTUuM3MtMi4zLTMuMi00LjMtMy41bC0yMy41LTMuMy0xMC41LTIwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURlc2t0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWMzUyYzAgMzUuMyAyOC43IDY0IDY0IDY0SDI0MGwtMTAuNyAzMkgxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM0Ni43TDMzNiA0MTZINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek01MTIgNjRWMjg4SDY0VjY0SDUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGhhcm1hY2hha3JhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNy44IDIwNS43bDQ4LjYtNDIuNWMxMy44IDE5LjMgMjMuNCA0MS45IDI3LjQgNjYuMmwtNjQuNCA0LjNjLTIuNC0xMC4xLTYuNC0xOS41LTExLjYtMjh6bTE0MC4xIDE5LjVjLTUuMy0zOC44LTIwLjYtNzQuNS00My4yLTEwNC4zbC44LS43QzQ0OSAxMDguNCA0NDkuNyA4Ny42IDQzNyA3NXMtMzMuNC0xMi00NS4yIDEuNWwtLjcgLjhjLTI5LjgtMjIuNi02NS41LTM3LjktMTA0LjMtNDMuMmwuMS0xLjFjMS4yLTE3LjktMTMtMzMtMzAuOS0zM3MtMzIuMSAxNS4yLTMwLjkgMzNsLjEgMS4xYy0zOC44IDUuMy03NC41IDIwLjYtMTA0LjMgNDMuMmwtLjctLjhDMTA4LjQgNjMgODcuNiA2Mi4zIDc1IDc1cy0xMiAzMy40IDEuNSA0NS4ybC44IC43Yy0yMi42IDI5LjgtMzcuOSA2NS41LTQzLjIgMTA0LjNsLTEuMS0uMWMtMTcuOS0xLjItMzMgMTMtMzMgMzAuOXMxNS4yIDMyLjEgMzMgMzAuOWwxLjEtLjFjNS4zIDM4LjggMjAuNiA3NC41IDQzLjIgMTA0LjNsLS44IC43QzYzIDQwMy42IDYyLjMgNDI0LjQgNzUgNDM3czMzLjQgMTIgNDUuMi0xLjVsLjctLjhjMjkuOCAyMi42IDY1LjUgMzcuOSAxMDQuMyA0My4ybC0uMSAxLjFjLTEuMiAxNy45IDEzIDMzIDMwLjkgMzNzMzIuMS0xNS4yIDMwLjktMzNsLS4xLTEuMWMzOC44LTUuMyA3NC41LTIwLjYgMTA0LjMtNDMuMmwuNyAuOGMxMS44IDEzLjUgMzIuNSAxNC4yIDQ1LjIgMS41czEyLTMzLjQtMS41LTQ1LjJsLS44LS43YzIyLjYtMjkuOCAzNy45LTY1LjUgNDMuMi0xMDQuM2wxLjEgLjFjMTcuOSAxLjIgMzMtMTMgMzMtMzAuOXMtMTUuMi0zMi4xLTMzLTMwLjlsLTEuMSAuMXpNMTYzLjIgMTI1LjZjMTkuMy0xMy44IDQxLjktMjMuNCA2Ni4yLTI3LjVsNC4zIDY0LjRjLTEwIDIuNC0xOS41IDYuNC0yOCAxMS42bC00Mi41LTQ4LjZ6bS02NSAxMDMuOGM0LjEtMjQuNCAxMy43LTQ2LjkgMjcuNS02Ni4ybDQ4LjYgNDIuNWMtNS4zIDguNS05LjIgMTgtMTEuNiAyOGwtNjQuNC00LjN6bTI3LjUgMTE5LjRjLTEzLjgtMTkuMy0yMy40LTQxLjktMjcuNS02Ni4ybDY0LjQtNC4zYzIuNCAxMCA2LjQgMTkuNSAxMS42IDI4bC00OC42IDQyLjV6bTEwMy44IDY1Yy0yNC40LTQuMS00Ni45LTEzLjctNjYuMi0yNy40bDQyLjUtNDguNmM4LjUgNS4zIDE4IDkuMiAyOCAxMS42bC00LjMgNjQuNHptMTE5LjQtMjcuNGMtMTkuMyAxMy44LTQxLjkgMjMuNC02Ni4yIDI3LjRsLTQuMy02NC40YzEwLTIuNCAxOS41LTYuNCAyOC0xMS42bDQyLjUgNDguNnptNjUtMTAzLjhjLTQuMSAyNC40LTEzLjcgNDYuOS0yNy40IDY2LjJsLTQ4LjYtNDIuNWM1LjMtOC41IDkuMi0xOCAxMS42LTI4bDY0LjQgNC4zem0tNjUtMTU2LjlsLTQyLjUgNDguNmMtOC41LTUuMy0xOC05LjItMjgtMTEuNmw0LjMtNjQuNGMyNC40IDQuMSA0Ni45IDEzLjcgNjYuMiAyNy41ek0yNTYgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlhZ3JhbU5leHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDE2MGMwIDM1LjMtMjguNyA2NC02NCA2NEgyODB2NjRoNDYuMWMyMS40IDAgMzIuMSAyNS45IDE3IDQxTDI3MyAzOTljLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDE2OSAzMjljLTE1LjEtMTUuMS00LjQtNDEgMTctNDFIMjMyVjIyNEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0djY0ek00NDggNDE2VjM1MkgzNjUuM2wuNC0uNGMxOC40LTE4LjQgMjAuNC00My43IDExLTYzLjZsNzEuMyAwYzM1LjMgMCA2NCAyOC43IDY0IDY0djY0YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMzUyYzAtMzUuMyAyOC43LTY0IDY0LTY0bDcxLjMgMGMtOS40IDE5LjktNy40IDQ1LjIgMTEgNjMuNmwuNCAuNEg2NHY2NEgyMTAuN2w1LjcgNS43YzIxLjkgMjEuOSA1Ny4zIDIxLjkgNzkuMiAwbDUuNy01LjdINDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWFncmFtUHJlZGVjZXNzb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDQxNmwwLTY0TDY0IDM1MmwwIDY0IDM4NCAwem0wIDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC02NGMwLTM1LjMgMjguNy02NCA2NC02NGwzODQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0ek0yODggMTYwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDIyNGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwxNDQgMCAxNiAwIDE0NCAwYzQ0LjIgMCA4MCAzNS44IDgwIDgwbDAgMTYgMzguMSAwYzIxLjQgMCAzMi4xIDI1LjkgMTcgNDFMNDMzIDIzOWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMzI5IDE2OWMtMTUuMS0xNS4xLTQuNC00MSAxNy00MWwzOC4xIDAgMC0xNmMwLTguOC03LjItMTYtMTYtMTZsLTgwIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlhZ3JhbVByb2plY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4MEMwIDUzLjUgMjEuNSAzMiA0OCAzMmg5NmMyNi41IDAgNDggMjEuNSA0OCA0OFY5NkgzODRWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoOTZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2OTZjMCAyNi41LTIxLjUgNDgtNDggNDhINDMyYy0yNi41IDAtNDgtMjEuNS00OC00OFYxNjBIMTkydjE2YzAgMS43LS4xIDMuNC0uMyA1TDI3MiAyODhoOTZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2OTZjMCAyNi41LTIxLjUgNDgtNDggNDhIMjcyYy0yNi41IDAtNDgtMjEuNS00OC00OFYzMzZjMC0xLjcgLjEtMy40IC4zLTVMMTQ0IDIyNEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpYWdyYW1TdWNjZXNzb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDQxNmwwLTY0YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDI4OGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCA2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NHpNNjQgMTYwbDAtNjQgMTQ0IDAgMTYgMCAwIDY0TDY0IDE2MHptMjI0IDBsMC02NCA4MCAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDE2LTM4LjEgMGMtMjEuNCAwLTMyLjEgMjUuOS0xNyA0MUwzOTkgMjM5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDUwMyAxNjljMTUuMS0xNS4xIDQuNC00MS0xNy00MUw0NDggMTI4bDAtMTZjMC00NC4yLTM1LjgtODAtODAtODBMMjI0IDMybC0xNiAwTDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZsMCA2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwxNjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlhbW9uZFR1cm5SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjcuNyAxMS43YzE1LjYtMTUuNiA0MC45LTE1LjYgNTYuNiAwbDIxNiAyMTZjMTUuNiAxNS42IDE1LjYgNDAuOSAwIDU2LjZsLTIxNiAyMTZjLTE1LjYgMTUuNi00MC45IDE1LjYtNTYuNiAwbC0yMTYtMjE2Yy0xNS42LTE1LjYtMTUuNi00MC45IDAtNTYuNmwyMTYtMjE2em04Ny42IDEzN2MtNC42LTQuNi0xMS41LTUuOS0xNy40LTMuNXMtOS45IDguMy05LjkgMTQuOHY1NkgyMjRjLTM1LjMgMC02NCAyOC43LTY0IDY0djQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjgwYzAtOC44IDcuMi0xNiAxNi0xNmg2NHY1NmMwIDYuNSAzLjkgMTIuMyA5LjkgMTQuOHMxMi45IDEuMSAxNy40LTMuNWw4MC04MGM2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpYW1vbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg0LjMgMTEuN2MtMTUuNi0xNS42LTQwLjktMTUuNi01Ni42IDBsLTIxNiAyMTZjLTE1LjYgMTUuNi0xNS42IDQwLjkgMCA1Ni42bDIxNiAyMTZjMTUuNiAxNS42IDQwLjkgMTUuNiA1Ni42IDBsMjE2LTIxNmMxNS42LTE1LjYgMTUuNi00MC45IDAtNTYuNmwtMjE2LTIxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZUQyMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OC43IDEyNS44bDUzLjIgMzEuOWM3LjggNC43IDE3LjggMiAyMi4yLTUuOUwyMDEuNiAxMi4xYzMtNS40LS45LTEyLjEtNy4xLTEyLjFjLTEuNiAwLTMuMiAuNS00LjYgMS40TDQ3LjkgOTguOGMtOS42IDYuNi05LjIgMjAuOSAuOCAyNi45ek0xNiAxNzEuN1YyOTUuM2MwIDggMTAuNCAxMSAxNC43IDQuNGw2MC05MmM1LTcuNiAyLjYtMTcuOC01LjItMjIuNUw0MC4yIDE1OEMyOS42IDE1MS42IDE2IDE1OS4zIDE2IDE3MS43ek0zMTAuNCAxMi4xbDc3LjYgMTM5LjZjNC40IDcuOSAxNC41IDEwLjYgMjIuMiA1LjlsNTMuMi0zMS45YzEwLTYgMTAuNC0yMC4zIC44LTI2LjlMMzIyLjEgMS40Yy0xLjQtLjktMy0xLjQtNC42LTEuNGMtNi4yIDAtMTAuMSA2LjctNy4xIDEyLjF6TTQ5NiAxNzEuN2MwLTEyLjQtMTMuNi0yMC4xLTI0LjItMTMuN2wtNDUuMyAyNy4yYy03LjggNC43LTEwLjEgMTQuOS01LjIgMjIuNWw2MCA5MmM0LjMgNi43IDE0LjcgMy42IDE0LjctNC40VjE3MS43em0tNDkuMyAyNDZMMjg2LjEgNDM2LjZjLTguMSAuOS0xNC4xIDcuOC0xNC4xIDE1Ljl2NTIuOGMwIDMuNyAzIDYuOCA2LjggNi44Yy44IDAgMS42LS4xIDIuNC0uNGwxNzIuNy02NGM2LjEtMi4yIDEwLjEtOCAxMC4xLTE0LjVjMC05LjMtOC4xLTE2LjUtMTcuMy0xNS40ek0yMzMuMiA1MTJjMy43IDAgNi44LTMgNi44LTYuOFY0NTIuNmMwLTguMS02LjEtMTQuOS0xNC4xLTE1LjlsLTE2MC42LTE5Yy05LjItMS4xLTE3LjMgNi4xLTE3LjMgMTUuNGMwIDYuNSA0IDEyLjMgMTAuMSAxNC41bDE3Mi43IDY0Yy44IC4zIDEuNiAuNCAyLjQgLjR6TTQxLjcgMzgyLjlsMTcwLjkgMjAuMmM3LjggLjkgMTMuNC03LjUgOS41LTE0LjNsLTg1LjctMTUwYy01LjktMTAuNC0yMC43LTEwLjgtMjcuMy0uOEwzMC4yIDM1OC4yYy02LjUgOS45LS4zIDIzLjMgMTEuNSAyNC43em00MzkuNi0yNC44TDQwMi45IDIzOC4xYy02LjUtMTAtMjEuNC05LjYtMjcuMyAuOEwyOTAuMiAzODguNWMtMy45IDYuOCAxLjYgMTUuMiA5LjUgMTQuM2wxNzAuMS0yMGMxMS44LTEuNCAxOC0xNC43IDExLjUtMjQuNnptLTIxNi45IDExbDc4LjQtMTM3LjJjNi4xLTEwLjctMS42LTIzLjktMTMuOS0yMy45SDE4My4xYy0xMi4zIDAtMjAgMTMuMy0xMy45IDIzLjlsNzguNCAxMzcuMmMzLjcgNi40IDEzIDYuNCAxNi43IDB6TTE3NC40IDE3NkgzMzcuNmMxMi4yIDAgMTkuOS0xMy4xIDE0LTIzLjhsLTgwLTE0NGMtMi44LTUuMS04LjItOC4yLTE0LTguMmgtMy4yYy01LjggMC0xMS4yIDMuMi0xNCA4LjJsLTgwIDE0NGMtNS45IDEwLjcgMS44IDIzLjggMTQgMjMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZUQ2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMSAxMC4zYzE0LjMtNy44IDMxLjYtNy44IDQ2IDBMNDIyLjMgMTA2YzUuMSAyLjggOC4zIDguMiA4LjMgMTRzLTMuMiAxMS4yLTguMyAxNEwyMzEuNyAyMzhjLTQuOCAyLjYtMTAuNSAyLjYtMTUuMyAwTDI1LjcgMTM0Yy01LjEtMi44LTguMy04LjItOC4zLTE0czMuMi0xMS4yIDguMy0xNEwyMDEgMTAuM3pNMjMuNyAxNzBsMTc2IDk2YzUuMSAyLjggOC4zIDguMiA4LjMgMTRWNDk2YzAgNS42LTMgMTAuOS03LjggMTMuOHMtMTAuOSAzLTE1LjggLjNMMjUgNDIzLjFDOS42IDQxNC43IDAgMzk4LjYgMCAzODFWMTg0YzAtNS42IDMtMTAuOSA3LjgtMTMuOHMxMC45LTMgMTUuOC0uM3ptNDAwLjcgMGM1LTIuNyAxMS0yLjYgMTUuOCAuM3M3LjggOC4xIDcuOCAxMy44VjM4MWMwIDE3LjYtOS42IDMzLjctMjUgNDIuMUwyNjMuNyA1MTBjLTUgMi43LTExIDIuNi0xNS44LS4zcy03LjgtOC4xLTcuOC0xMy44VjI4MGMwLTUuOSAzLjItMTEuMiA4LjMtMTRsMTc2LTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlRml2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTY0IDk2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNOTYgMzUyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTIyNCAyMjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em02NC02NGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0zMiAxNjBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlRm91ciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2em0xNjAgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMTI4IDM4NGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTM1MiAxNjBhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMzIwIDM4NGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpY2VPbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yMjQgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZVNpeCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2em0xNjAgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMTI4IDI4OGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTMyIDY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTMyMCAxOTJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0zMiA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek0zMjAgMzg0YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZVRocmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHptNjQgOTZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em02NCAxMjhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTI4IDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZVR3byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2ek0zNTIgMzUyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTEyOCAxOTJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3NC45IDM0LjNjLTI4LjEtMjguMS03My43LTI4LjEtMTAxLjggMEwzNC4zIDE3My4xYy0yOC4xIDI4LjEtMjguMSA3My43IDAgMTAxLjhMMTczLjEgNDEzLjdjMjguMSAyOC4xIDczLjcgMjguMSAxMDEuOCAwTDQxMy43IDI3NC45YzI4LjEtMjguMSAyOC4xLTczLjcgMC0xMDEuOEwyNzQuOSAzNC4zek0yMDAgMjI0YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6TTk2IDIwMGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6TTIyNCAzNzZhMjQgMjQgMCAxIDEgMC00OCAyNCAyNCAwIDEgMSAwIDQ4ek0zNTIgMjAwYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNMjI0IDEyMGEyNCAyNCAwIDEgMSAwLTQ4IDI0IDI0IDAgMSAxIDAgNDh6bTk2IDMyOGMwIDM1LjMgMjguNyA2NCA2NCA2NEg1NzZjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDQ2MS43YzExLjYgMzYgMy4xIDc3LTI1LjQgMTA1LjVMMzIwIDQxMy44VjQ0OHpNNDgwIDMyOGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpc2Vhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjM2LjQgNjEuNEwyMjcgNzUuNWMtMjEuMyAzMi01OS40IDQ4LjUtOTcuMyA0Mi4xbC01OS42LTkuOUMzMy40IDEwMS42IDAgMTI5LjkgLjEgMTY3LjFjMCAxNS45IDYuNCAzMS4yIDE3LjYgNDIuNWwyOS4yIDI5LjJjMTEgMTEgMTcuMiAyNS45IDE3LjIgNDEuNWMwIDE1LjgtNi40IDMwLjktMTcuNyA0MkwzMy4zIDMzNS4xQzIyLjIgMzQ1LjkgMTYgMzYwLjcgMTYgMzc2LjJjMCAzNi44IDM0LjEgNjQuMiA3MC4xIDU2LjJsNjIuMy0xMy44YzcuNy0xLjcgMTUuNy0yLjYgMjMuNi0yLjZoMTBjMjcuMiAwIDUzLjcgOS4zIDc1IDI2LjNMMjg3LjggNDY3YzEwLjUgOC40IDIzLjYgMTMgMzcgMTNjMzIuNyAwIDU5LjMtMjYuNSA1OS4zLTU5LjNsMC0yNS4yYzAtMzQuOSAyMS40LTY2LjIgNTMuOS03OC44bDM2LjktMTQuM2MyMi40LTguNyAzNy4yLTMwLjMgMzcuMi01NC4zYzAtMjguMS0yMC4xLTUyLjMtNDcuOC01Ny4zbC0yOC01LjFjLTM2LjUtNi43LTY1LjQtMzQuNS03My42LTcwLjdsLTcuMS0zMS41QzM0OC45IDUzLjQgMzIyLjEgMzIgMjkxLjMgMzJjLTIyIDAtNDIuNiAxMS01NC45IDI5LjR6TTE2MCAxOTJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMTZhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHptMCA4MGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpc3BsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWMzUyYzAgMzUuMyAyOC43IDY0IDY0IDY0SDI0MGwtMTAuNyAzMkgxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM0Ni43TDMzNiA0MTZINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek01MTIgNjRWMzUySDY0VjY0SDUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGl2aWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiA5NmE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwem0wIDMyMGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek00MDAgMjg4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQwMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG5hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyYzAgNTkuOC0zMC4zIDEwNy41LTY5LjQgMTQ2LjZjLTI4IDI4LTYyLjUgNTMuNS05Ny4zIDc3LjRsLTIuNSAxLjdjLTExLjkgOC4xLTIzLjggMTYuMS0zNS41IDIzLjlsMCAwIDAgMCAwIDAtMS42IDFjLTYgNC0xMS45IDcuOS0xNy44IDExLjljLTIwLjkgMTQtNDAuOCAyNy43LTU5LjMgNDEuNUgyODMuM2MtOS44LTcuNC0yMC4xLTE0LjctMzAuNy0yMi4xbDctNC43IDMtMmMxNS4xLTEwLjEgMzAuOS0yMC42IDQ2LjctMzEuNmMyNSAxOC4xIDQ4LjkgMzcuMyA2OS40IDU3LjdDNDE3LjcgMzcyLjUgNDQ4IDQyMC4yIDQ0OCA0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJINjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJjMC01OS44IDMwLjMtMTA3LjUgNjkuNC0xNDYuNmMyOC0yOCA2Mi41LTUzLjUgOTcuMy03Ny40Yy0zNC44LTIzLjktNjkuMy00OS4zLTk3LjMtNzcuNEMzMC4zIDEzOS41IDAgOTEuOCAwIDMyQzAgMTQuMyAxNC4zIDAgMzIgMFM2NCAxNC4zIDY0IDMySDM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMzM4LjYgMzg0SDEwOS40Yy0xMC4xIDEwLjYtMTguNiAyMS4zLTI1LjUgMzJIMzY0LjFjLTYuOC0xMC43LTE1LjMtMjEuNC0yNS41LTMyek0xMDkuNCAxMjhIMzM4LjZjMTAuMS0xMC43IDE4LjYtMjEuMyAyNS41LTMySDgzLjljNi44IDEwLjcgMTUuMyAyMS4zIDI1LjUgMzJ6bTU1LjQgNDhjMTguNCAxMy44IDM4LjQgMjcuNSA1OS4zIDQxLjVjMjAuOS0xNCA0MC44LTI3LjcgNTkuMy00MS41SDE2NC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA5LjYgMTU4LjVMMzMyLjcgMTkuOEMzMzQuNiA4LjQgMzQ0LjUgMCAzNTYuMSAwYzcuNSAwIDE0LjUgMy41IDE5IDkuNUwzOTIgMzJoNTIuMWMxMi43IDAgMjQuOSA1LjEgMzMuOSAxNC4xTDQ5NiA2NGg1NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHYyNGMwIDQ0LjItMzUuOCA4MC04MCA4MEg0NjQgNDQ4IDQyNi43bC01LjEgMzAuNS0xMTItNjR6TTQxNiAyNTYuMUw0MTYgNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzY0LjhjLTI0IDEyLjMtNTEuMiAxOS4yLTgwIDE5LjJzLTU2LTYuOS04MC0xOS4yVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjQ5LjhjLTI4LjgtMTAuOS01MS40LTM1LjMtNTkuMi02Ni41TDEgMTY3LjhjLTQuMy0xNy4xIDYuMS0zNC41IDIzLjMtMzguOHMzNC41IDYuMSAzOC44IDIzLjNsMy45IDE1LjVDNzAuNSAxODIgODMuMyAxOTIgOTggMTkyaDMwIDE2SDMwMy44TDQxNiAyNTYuMXpNNDY0IDgwYTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvbGxhclNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjcuN2MxLjYgLjIgMy4xIC40IDQuNyAuN2MuNCAuMSAuNyAuMSAxLjEgLjJsNDggOC44YzE3LjQgMy4yIDI4LjkgMTkuOSAyNS43IDM3LjJzLTE5LjkgMjguOS0zNy4yIDI1LjdsLTQ3LjUtOC43Yy0zMS4zLTQuNi01OC45LTEuNS03OC4zIDYuMnMtMjcuMiAxOC4zLTI5IDI4LjFjLTIgMTAuNy0uNSAxNi43IDEuMiAyMC40YzEuOCAzLjkgNS41IDguMyAxMi44IDEzLjJjMTYuMyAxMC43IDQxLjMgMTcuNyA3My43IDI2LjNsMi45IC44YzI4LjYgNy42IDYzLjYgMTYuOCA4OS42IDMzLjhjMTQuMiA5LjMgMjcuNiAyMS45IDM1LjkgMzkuNWM4LjUgMTcuOSAxMC4zIDM3LjkgNi40IDU5LjJjLTYuOSAzOC0zMy4xIDYzLjQtNjUuNiA3Ni43Yy0xMy43IDUuNi0yOC42IDkuMi00NC40IDExVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDUuMWMtLjQtLjEtLjktLjEtMS4zLS4ybC0uMiAwIDAgMGMtMjQuNC0zLjgtNjQuNS0xNC4zLTkxLjUtMjYuM2MtMTYuMS03LjItMjMuNC0yNi4xLTE2LjItNDIuMnMyNi4xLTIzLjQgNDIuMi0xNi4yYzIwLjkgOS4zIDU1LjMgMTguNSA3NS4yIDIxLjZjMzEuOSA0LjcgNTguMiAyIDc2LTUuM2MxNi45LTYuOSAyNC42LTE2LjkgMjYuOC0yOC45YzEuOS0xMC42IC40LTE2LjctMS4zLTIwLjRjLTEuOS00LTUuNi04LjQtMTMtMTMuM2MtMTYuNC0xMC43LTQxLjUtMTcuNy03NC0yNi4zbC0yLjgtLjcgMCAwQzExOS40IDI3OS4zIDg0LjQgMjcwIDU4LjQgMjUzYy0xNC4yLTkuMy0yNy41LTIyLTM1LjgtMzkuNmMtOC40LTE3LjktMTAuMS0zNy45LTYuMS01OS4yQzIzLjcgMTE2IDUyLjMgOTEuMiA4NC44IDc4LjNjMTMuMy01LjMgMjcuOS04LjkgNDMuMi0xMVYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9sbHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMkMwIDE0LjMgMTQuMyAwIDMyIDBoNzIuOWMyNy41IDAgNTIgMTcuNiA2MC43IDQzLjhMMjU3LjcgMzIwYzMwLjEgLjUgNTYuOCAxNC45IDc0IDM3bDIwMi4xLTY3LjRjMTYuOC01LjYgMzQuOSAzLjUgNDAuNSAyMC4ycy0zLjUgMzQuOS0yMC4yIDQwLjVMMzUyIDQxNy43Yy0uOSA1Mi4yLTQzLjUgOTQuMy05NiA5NC4zYy01MyAwLTk2LTQzLTk2LTk2YzAtMzAuOCAxNC41LTU4LjIgMzctNzUuOEwxMDQuOSA2NEgzMkMxNC4zIDY0IDAgNDkuNyAwIDMyek0yNDQuOCAxMzQuNWMtNS41LTE2LjggMy43LTM0LjkgMjAuNS00MC4zTDMxMSA3OS40bDE5LjggNjAuOSA2MC45LTE5LjhMMzcxLjggNTkuNmw0NS43LTE0LjhjMTYuOC01LjUgMzQuOSAzLjcgNDAuMyAyMC41bDQ5LjQgMTUyLjJjNS41IDE2LjgtMy43IDM0LjktMjAuNSA0MC4zTDMzNC41IDMwNy4yYy0xNi44IDUuNS0zNC45LTMuNy00MC4zLTIwLjVMMjQ0LjggMTM0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvbmdTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsLTMyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzJ2NDkuMWMtMTguOC0xMC45LTQwLjctMTcuMS02NC0xNy4xYy03MC43IDAtMTI4IDU3LjMtMTI4IDEyOHM1Ny4zIDEyOCAxMjggMTI4YzI0LjUgMCA0Ny40LTYuOSA2Ni44LTE4LjhjNSAxMS4xIDE2LjIgMTguOCAyOS4yIDE4LjhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjg4IDEyOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMTI4IDI4OGE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTMyIDQ0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvb3JDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRINDE2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0MzIgMTQ0IDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDk2VjY0ek0zODQgMjg4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9vck9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDMyYzAtOS45LTQuNS0xOS4yLTEyLjMtMjUuMlMyODkuOC0xLjQgMjgwLjIgMWwtMTc5LjkgNDVDNzkgNTEuMyA2NCA3MC41IDY0IDkyLjVWNDQ4SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDk2IDI4OGgzMlY0ODAgMzJ6TTI1NiAyNTZjMCAxNy43LTEwLjcgMzItMjQgMzJzLTI0LTE0LjMtMjQtMzJzMTAuNy0zMiAyNC0zMnMyNCAxNC4zIDI0IDMyem05Ni0xMjhoOTZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDUxMlYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzUydjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MC44IDk2LjVjMTQgMTcgMzEgMzAuOSA0OS41IDQyLjJjMjUuOSAxNS44IDUzLjcgMjUuOSA3Ny43IDMxLjZWMTM4LjhDMjY1LjggMTA4LjUgMjUwIDcxLjUgMjQ4LjYgMjhjLS40LTExLjMtNy41LTIxLjUtMTguNC0yNC40Yy03LjYtMi0xNS44LS4yLTIxIDUuOGMtMTMuMyAxNS40LTMyLjcgNDQuNi00OC40IDg3LjJ6TTMyMCAxNDR2MzAuNmwwIDB2MS4zbDAgMCAwIDMyLjFjLTYwLjgtNS4xLTE4NS00My44LTIxOS4zLTE1Ny4yQzk3LjQgNDAgODcuOSAzMiA3Ni42IDMyYy03LjkgMC0xNS4zIDMuOS0xOC44IDExQzQ2LjggNjUuOSAzMiAxMTIuMSAzMiAxNzZjMCAxMTYuOSA4MC4xIDE4MC41IDExOC40IDIwMi44TDExLjggNDE2LjZDNi43IDQxOCAyLjYgNDIxLjggLjkgNDI2LjhzLS44IDEwLjYgMi4zIDE0LjhDMjEuNyA0NjYuMiA3Ny4zIDUxMiAxNjAgNTEyYzMuNiAwIDcuMi0xLjIgMTAtMy41TDI0NS42IDQ0OEgzMjBjODguNCAwIDE2MC03MS42IDE2MC0xNjBWMTI4bDI5LjktNDQuOWMxLjMtMiAyLjEtNC40IDIuMS02LjhjMC02LjgtNS41LTEyLjMtMTIuMy0xMi4zSDQwMGMtNDQuMiAwLTgwIDM1LjgtODAgODB6bTgwLTE2YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG93bkxlZnRBbmRVcFJpZ2h0VG9DZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM5IDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMzIgMzJjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTg3IDg3IDM5IDM5YzYuOSA2LjkgOC45IDE3LjIgNS4yIDI2LjJzLTEyLjUgMTQuOC0yMi4yIDE0LjhIMjk2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFY3MmMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJzMTkuMy0xLjcgMjYuMiA1LjJsMzkgMzlMNDM5IDd6TTcyIDI3MkgyMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRWNDQwYzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTM5LTM5TDczIDUwNWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMNyA0NzNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDg3LTg3TDU1IDMxM2MtNi45LTYuOS04LjktMTcuMi01LjItMjYuMnMxMi41LTE0LjggMjIuMi0xNC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb3duTG9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDMzNC41Yy0zLjggOC44LTIgMTkgNC42IDI2bDEzNiAxNDRjNC41IDQuOCAxMC44IDcuNSAxNy40IDcuNXMxMi45LTIuNyAxNy40LTcuNWwxMzYtMTQ0YzYuNi03IDguNC0xNy4yIDQuNi0yNnMtMTIuNS0xNC41LTIyLTE0LjVsLTcyIDAgMC0yODhjMC0xNy43LTE0LjMtMzItMzItMzJMMTI4IDBDMTEwLjMgMCA5NiAxNC4zIDk2IDMybDAgMjg4LTcyIDBjLTkuNiAwLTE4LjIgNS43LTIyIDE0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYyNzQuN2wtNzMuNC03My40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxMjggMTI4YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDEyOC0xMjhjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMjg4IDI3NC43VjMyek02NCAzNTJjLTM1LjMgMC02NCAyOC43LTY0IDY0djMyYzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFY0MTZjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzQ2LjVsLTQ1LjMgNDUuM2MtMjUgMjUtNjUuNSAyNS05MC41IDBMMTY1LjUgMzUySDY0em0zNjggNTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcmFnb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDEyNC41bC01MS45LTEzYy02LjUtMS42LTExLjMtNy4xLTEyLTEzLjhzMi44LTEzLjEgOC43LTE2LjFsNDAuOC0yMC40TDI5NC40IDI4LjhjLTUuNS00LjEtNy44LTExLjMtNS42LTE3LjlTMjk3LjEgMCAzMDQgMEg0MTZoMzIgMTZjMzAuMiAwIDU4LjcgMTQuMiA3Ni44IDM4LjRsNTcuNiA3Ni44YzYuMiA4LjMgOS42IDE4LjQgOS42IDI4LjhjMCAyNi41LTIxLjUgNDgtNDggNDhINTM4LjVjLTE3IDAtMzMuMy02LjctNDUuMy0xOC43TDQ4MCAxNjBINDQ4djIxLjVjMCAyNC44IDEyLjggNDcuOSAzMy44IDYxLjFsMTA2LjYgNjYuNmMzMi4xIDIwLjEgNTEuNiA1NS4yIDUxLjYgOTMuMUM2NDAgNDYyLjkgNTkwLjkgNTEyIDUzMC4yIDUxMkg0OTYgNDMyIDMyLjNjLTMuMyAwLTYuNi0uNC05LjYtMS40QzEzLjUgNTA3LjggNiA1MDEgMi40IDQ5Mi4xQzEgNDg4LjcgLjIgNDg1LjIgMCA0ODEuNGMtLjItMy43IC4zLTcuMyAxLjMtMTAuN2MyLjgtOS4yIDkuNi0xNi43IDE4LjYtMjAuNGMzLTEuMiA2LjItMiA5LjUtMi4yTDQzMy4zIDQxMmM4LjMtLjcgMTQuNy03LjcgMTQuNy0xNi4xYzAtNC4zLTEuNy04LjQtNC43LTExLjRsLTQ0LjQtNDQuNGMtMzAtMzAtNDYuOS03MC43LTQ2LjktMTEzLjFWMTgxLjV2LTU3ek01MTIgNzIuM2MwLS4xIDAtLjIgMC0uM3MwLS4yIDAtLjN2LjZ6bS0xLjMgNy40TDQ2NC4zIDY4LjFjLS4yIDEuMy0uMyAyLjYtLjMgMy45YzAgMTMuMyAxMC43IDI0IDI0IDI0YzEwLjYgMCAxOS41LTYuOCAyMi43LTE2LjN6TTEzMC45IDExNi41YzE2LjMtMTQuNSA0MC40LTE2LjIgNTguNS00LjFsMTMwLjYgODdWMjI3YzAgMzIuOCA4LjQgNjQuOCAyNCA5M0gxMTJjLTYuNyAwLTEyLjctNC4yLTE1LTEwLjRzLS41LTEzLjMgNC42LTE3LjdMMTcxIDIzMi4zIDE4LjQgMjU1LjhjLTcgMS4xLTEzLjktMi42LTE2LjktOXMtMS41LTE0LjEgMy44LTE4LjhMMTMwLjkgMTE2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyYXdQb2x5Z29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDE1MS40VjM2MC42YzkuNyA1LjYgMTcuOCAxMy43IDIzLjQgMjMuNEgzMjguNmMwLS4xIC4xLS4yIC4xLS4zbC00LjUtNy45LTMyLTU2IDAgMGMtMS40IC4xLTIuOCAuMS00LjIgLjFjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjRjMS40IDAgMi44IDAgNC4yIC4xbDAgMCAzMi01NiA0LjUtNy45LS4xLS4zSDExOS40Yy01LjYgOS43LTEzLjcgMTcuOC0yMy40IDIzLjR6TTM4NC4zIDM1MmMzNS4yIC4yIDYzLjcgMjguNyA2My43IDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0Yy0yMy43IDAtNDQuNC0xMi45LTU1LjQtMzJIMTE5LjRjLTExLjEgMTkuMS0zMS43IDMyLTU1LjQgMzJjLTM1LjMgMC02NC0yOC43LTY0LTY0YzAtMjMuNyAxMi45LTQ0LjQgMzItNTUuNFYxNTEuNEMxMi45IDE0MC40IDAgMTE5LjcgMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmMyMy43IDAgNDQuNCAxMi45IDU1LjQgMzJIMzI4LjZjMTEuMS0xOS4xIDMxLjctMzIgNTUuNC0zMmMzNS4zIDAgNjQgMjguNyA2NCA2NGMwIDM1LjMtMjguNSA2My44LTYzLjcgNjRsLTQuNSA3LjktMzIgNTYtMi4zIDRjNC4yIDguNSA2LjUgMTggNi41IDI4LjFzLTIuMyAxOS42LTYuNSAyOC4xbDIuMyA0IDMyIDU2IDQuNSA3Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyb3BsZXRTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNTEyYzUzLjIgMCAxMDEuNC0yMS42IDEzNi4xLTU2LjZsLTI5OC4zLTIzNUMxNDAgMjU3LjEgMTI4IDI5Mi4zIDEyOCAzMjBjMCAxMDYgODYgMTkyIDE5MiAxOTJ6TTUwNS4yIDM3MC43YzQuNC0xNi4xIDYuOC0zMy4xIDYuOC01MC43YzAtOTEuMi0xMzAuMi0yNjIuMy0xNjYuNi0zMDguM0MzMzkuNCA0LjIgMzMwLjUgMCAzMjAuOSAwaC0xLjhjLTkuNiAwLTE4LjUgNC4yLTI0LjUgMTEuN0MyNzcuOCAzMyAyNDAuNyA4MS4zIDIwNS44IDEzNkwzOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDUwNS4yIDM3MC43ek0yMjQgMzM2YzAgNDQuMiAzNS44IDgwIDgwIDgwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2Yy02MS45IDAtMTEyLTUwLjEtMTEyLTExMmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcm9wbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA1MTJDODYgNTEyIDAgNDI2IDAgMzIwQzAgMjI4LjggMTMwLjIgNTcuNyAxNjYuNiAxMS43QzE3Mi42IDQuMiAxODEuNSAwIDE5MS4xIDBoMS44YzkuNiAwIDE4LjUgNC4yIDI0LjUgMTEuN0MyNTMuOCA1Ny43IDM4NCAyMjguOCAzODQgMzIwYzAgMTA2LTg2IDE5Mi0xOTIgMTkyek05NiAzMzZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZjMCA2MS45IDUwLjEgMTEyIDExMiAxMTJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZjLTQ0LjIgMC04MC0zNS44LTgwLTgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcnVtU3RlZWxwYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDMyYzE1OS4xIDAgMjg4IDQ4IDI4OCAxMjhWMzUyYzAgODAtMTI4LjkgMTI4LTI4OCAxMjhTMCA0MzIgMCAzNTJWMTYwQzAgODAgMTI4LjkgMzIgMjg4IDMyek01MjggMTYwYzAtOS45LTgtMjkuOS01NS00OS44Yy0xOC42LTcuOS00MC45LTE0LjQtNjYtMTkuNGwtMjcuOCA0My42Yy03LjMgMTEuNS0xMS4yIDI0LjgtMTEuMiAzOC40YzAgMTcuNSA2LjQgMzQuNCAxOC4xIDQ3LjVsOS44IDExYzI5LjgtNS4yIDU1LjktMTIuNSA3Ny4yLTIxLjVjNDcuMS0xOS45IDU1LTM5LjkgNTUtNDkuOHpNMzQ5LjIgMjM3LjNjLTgtMjYuMi0zMi40LTQ1LjMtNjEuMi00NS4zcy01My4zIDE5LjEtNjEuMiA0NS4zYzE5LjQgMS43IDM5LjkgMi43IDYxLjIgMi43czQxLjgtLjkgNjEuMi0yLjd6TTE2OSA5MC44Yy0yNS4yIDUtNDcuNCAxMS42LTY2IDE5LjRDNTYgMTMwLjEgNDggMTUwLjEgNDggMTYwczggMjkuOSA1NSA0OS44YzIxLjMgOSA0Ny40IDE2LjMgNzcuMiAyMS41bDkuOC0xMWMxMS42LTEzLjEgMTguMS0zMCAxOC4xLTQ3LjVjMC0xMy42LTMuOS0yNi45LTExLjItMzguNEwxNjkgOTAuOHptNTYuMy04QzIyNC41IDg3IDIyNCA5MS41IDIyNCA5NmMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0YzAtNC41LS41LTktMS40LTEzLjJDMzMwLjggODEgMzA5LjggODAgMjg4IDgwcy00Mi44IDEtNjIuNiAyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURydW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAxLjIgNzYuMWMxMS4xLTcuMyAxNC4yLTIyLjEgNi45LTMzLjJzLTIyLjEtMTQuMi0zMy4yLTYuOUwzNzAuMiAxMDQuNUMzMzUuOCA5OC43IDI5NyA5NiAyNTYgOTZDMTE0LjYgOTYgMCAxMjggMCAyMDhWMzY4YzAgMzEuMyAyNy40IDU4LjggNzIgNzguN1YzNDRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNFY0NjMuNGMzMyA4LjkgNzEuMSAxNC41IDExMiAxNi4xVjM3NmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0VjQ3OS41YzQwLjktMS42IDc5LTcuMiAxMTItMTYuMVYzNDRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNFY0NDYuN2M0NC42LTE5LjkgNzItNDcuNCA3Mi03OC43VjIwOGMwLTQxLjEtMzAuMi02OS41LTc4LjgtODcuNGw2Ny45LTQ0LjV6TTMwNy40IDE0NS42bC02NC42IDQyLjNjLTExLjEgNy4zLTE0LjIgMjIuMS02LjkgMzMuMnMyMi4xIDE0LjIgMzMuMiA2LjlsMTExLjEtNzIuOGMxNC43IDMuMiAyNy45IDcgMzkuNCAxMS41QzQ1OC40IDE4MS44IDQ2NCAxOTcuNCA0NjQgMjA4YzAgLjgtMi43IDE3LjItNDYgMzUuOUMzNzkuMSAyNjAuNyAzMjIgMjcyIDI1NiAyNzJzLTEyMy4xLTExLjMtMTYyLTI4LjFDNTAuNyAyMjUuMiA0OCAyMDguOCA0OCAyMDhjMC0xMC42IDUuNi0yNi4yIDQ0LjQtNDEuM0MxMzAuNiAxNTEuOSAxODcuOCAxNDQgMjU2IDE0NGMxOCAwIDM1LjEgLjUgNTEuNCAxLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURydW1zdGlja0JpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDI2NS4yYzAgOC41LTMuNCAxNi42LTkuNCAyMi42bC0yNi44IDI2LjhjLTEyLjMgMTIuMy0zMi41IDExLjQtNDkuNCA3LjJDNjkuOCAzMjAuNiA2NSAzMjAgNjAgMzIwYy0zMy4xIDAtNjAgMjYuOS02MCA2MHMyNi45IDYwIDYwIDYwYzYuMyAwIDEyIDUuNyAxMiAxMmMwIDMzLjEgMjYuOSA2MCA2MCA2MHM2MC0yNi45IDYwLTYwYzAtNS0uNi05LjgtMS44LTE0LjVjLTQuMi0xNi45LTUuMi0zNy4xIDcuMi00OS40bDI2LjgtMjYuOGM2LTYgMTQuMS05LjQgMjIuNi05LjRIMzM2YzYuMyAwIDEyLjQtLjMgMTguNS0xYzExLjktMS4yIDE2LjQtMTUuNSAxMC44LTI2Yy04LjUtMTUuOC0xMy4zLTMzLjgtMTMuMy01M2MwLTYxLjkgNTAuMS0xMTIgMTEyLTExMmM4IDAgMTUuNyAuOCAyMy4yIDIuNGMxMS43IDIuNSAyNC4xLTUuOSAyMi0xNy42QzQ5NC41IDYyLjUgNDIyLjUgMCAzMzYgMEMyMzguOCAwIDE2MCA3OC44IDE2MCAxNzZ2ODkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHVtYmJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMjI0djY0VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4NEg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjg4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg5NlY2NHptNDQ4IDB2NjRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJINTQ0djY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjg4IDIyNCA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnpNNDE2IDIyNHY2NEgyMjRWMjI0SDQxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHVtcHN0ZXJGaXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5LjcgMzJsOTAuOCAwTDExNC45IDE2MGwtOTQgMEM5LjMgMTYwIDAgMTUwLjcgMCAxMzkuMWMwLTIuMSAuMy00LjEgLjktNi4xTDI2LjggNDguOUMyOS45IDM4LjkgMzkuMiAzMiA0OS43IDMyek0yNzIgMTYwbC0xMjQuNSAwTDE3My4xIDMyIDI3MiAzMmwwIDEyOHptMzIgMGwwLTEyOCA5OC45IDAgMTQuNCA3Mi4xYy0xLjcgMS4xLTMuMyAyLjQtNC44IDMuOGMtMTguNCAxNi40LTM1LjQgMzQtNTAuNSA1Mi4xbC01OCAwem0yMDkuOS0yMy43Yy0xLjcgMS42LTMuNCAzLjItNSA0LjhDNDk4IDEyOS42IDQ4Ni43IDExOC42IDQ3NSAxMDhjLTcuNi02LjktMTctMTAuOC0yNi42LTExLjhMNDM1LjUgMzJsOTAuOCAwYzEwLjUgMCAxOS44IDYuOSAyMi45IDE2LjlMNTc1LjEgMTMzYy4yIC43IC40IDEuNCAuNSAyLjFjLTE3LjgtMTUtNDQuMy0xNC42LTYxLjcgMS4yek0zMjUuMiAyMTAuN0MzMDQuMyAyNDQuNSAyODggMjgyLjkgMjg4IDMxOC4xYzAgNDkuMyAxOC42IDk1LjIgNDkuNiAxMjkuOUwxMjggNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyTDQ0IDI4OGwtMTIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw0IDAtNC0zMiAzMDUuNSAwYy00LjQgNi4yLTguNSAxMi41LTEyLjMgMTguN3ptMTgwLjYtMzQuNUw1MTggMTYyLjVjNS40LTYuMSAxMy4zLTguOCAyMC45LTguOWM3LjIgMCAxNC4zIDIuNiAxOS45IDcuOGMxOS43IDE4LjMgMzkuOCA0My4yIDU1IDcwLjZDNjI5IDI1OS4yIDY0MCAyOTAuMiA2NDAgMzIwLjJDNjQwIDQwOC44IDU2OC43IDQ4MCA0ODAgNDgwYy04OS42IDAtMTYwLTcxLjMtMTYwLTE1OS44YzAtMzcuMyAxNi03My40IDM2LjgtMTA0LjVjMjAuOS0zMS4zIDQ3LjUtNTkgNzAuOS04MC4yYzUuNy01LjIgMTMuMS03LjcgMjAuMy03LjVjMTQuMSAuMyAyMy44IDExLjQgMzIuNyAyMS42YzAgMCAwIDAgMCAwYzIgMi4zIDQgNC42IDYgNi43bDE5IDE5Ljl6TTU0NCAzNjguMmMwLTM2LjUtMzctNzMtNTQuOC04OC40Yy01LjQtNC43LTEzLjEtNC43LTE4LjUgMEM0NTMgMjk1LjEgNDE2IDMzMS42IDQxNiAzNjguMmMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEdW1wc3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OS43IDMyYy0xMC41IDAtMTkuOCA2LjktMjIuOSAxNi45TC45IDEzM2MtLjYgMi0uOSA0LjEtLjkgNi4xQzAgMTUwLjcgOS4zIDE2MCAyMC45IDE2MGg5NEwxNDAuNSAzMkg0OS43ek0yNzIgMTYwVjMySDE3My4xTDE0Ny41IDE2MEgyNzJ6bTMyIDBINDI4LjVMNDAyLjkgMzJIMzA0VjE2MHptMTU3LjEgMGg5NGMxMS41IDAgMjAuOS05LjMgMjAuOS0yMC45YzAtMi4xLS4zLTQuMS0uOS02LjFMNTQ5LjIgNDguOUM1NDYuMSAzOC45IDUzNi44IDMyIDUyNi4zIDMySDQzNS41bDI1LjYgMTI4ek0zMiAxOTJsNCAzMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0NEw2NCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMkg0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwyMC0xNjBoMTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJoLTRsNC0zMkgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHVuZ2VvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYuNiAxNTYuNWMxLjMgMS4xIDIuNyAyLjIgMy45IDMuM2M5LjMgOC4yIDIzIDEwLjUgMzMuNCAzLjZsNjcuNi00NS4xYzExLjQtNy42IDE0LjItMjMuMiA1LjEtMzMuNEM0MzAgNjYuNiA0MTAuOSA1MC42IDM4OS43IDM3LjZjLTExLjktNy4zLTI2LjktMS40LTMyLjEgMTEuNmwtMzAuNSA3Ni4yYy00LjUgMTEuMSAuMiAyMy42IDkuNSAzMS4yek0zMjggMzYuOGM1LjEtMTIuOC0xLjYtMjcuNC0xNS0zMC41QzI5NC43IDIuMiAyNzUuNiAwIDI1NiAwcy0zOC43IDIuMi01NyA2LjRDMTg1LjUgOS40IDE3OC44IDI0IDE4NCAzNi44bDMwLjMgNzUuOGM0LjUgMTEuMyAxNi44IDE3LjIgMjkgMTZjNC4yLS40IDguNC0uNiAxMi43LS42czguNiAuMiAxMi43IC42YzEyLjEgMS4yIDI0LjQtNC43IDI5LTE2TDMyOCAzNi44ek02NS41IDg1Yy05LjEgMTAuMi02LjMgMjUuOCA1LjEgMzMuNGw2Ny42IDQ1LjFjMTAuMyA2LjkgMjQuMSA0LjYgMzMuNC0zLjZjMS4zLTEuMSAyLjYtMi4zIDQtMy4zYzkuMy03LjUgMTMuOS0yMC4xIDkuNS0zMS4yTDE1NC40IDQ5LjJjLTUuMi0xMi45LTIwLjMtMTguOC0zMi4xLTExLjZDMTAxLjEgNTAuNiA4MiA2Ni42IDY1LjUgODV6bTMxNCAxMzcuMWMuOSAzLjMgMS43IDYuNiAyLjMgMTBjMi41IDEzIDEzIDIzLjkgMjYuMiAyMy45aDgwYzEzLjMgMCAyNC4xLTEwLjggMjIuOS0yNGMtMi41LTI3LjItOS4zLTUzLjItMTkuNy03Ny4zYy01LjUtMTIuOS0yMS40LTE2LjYtMzMuMS04LjlsLTY4LjYgNDUuN2MtOS44IDYuNS0xMy4yIDE5LjItMTAgMzAuNXpNNTMuOSAxNDUuOGMtMTEuNi03LjgtMjcuNi00LTMzLjEgOC45QzEwLjQgMTc4LjggMy42IDIwNC44IDEuMSAyMzJjLTEuMiAxMy4yIDkuNiAyNCAyMi45IDI0aDgwYzEzLjMgMCAyMy44LTEwLjggMjYuMi0yMy45Yy42LTMuNCAxLjQtNi43IDIuMy0xMGMzLjEtMTEuNC0uMi0yNC0xMC0zMC41TDUzLjkgMTQ1Ljh6TTEwNCAyODhIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0djQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0VjMxMmMwLTEzLjMtMTAuNy0yNC0yNC0yNHptMzA0IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0djQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0VjMxMmMwLTEzLjMtMTAuNy0yNC0yNC0yNEg0MDh6TTI0IDQxNmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNDQwYzAtMTMuMy0xMC43LTI0LTI0LTI0SDI0em0zODQgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNDQwYzAtMTMuMy0xMC43LTI0LTI0LTI0SDQwOHpNMjcyIDE5MmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNlY0NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYxOTJ6bS02NCAzMmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNlY0NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyMjR6bTEyOCAwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjIyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjI1NiA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMjg4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDY0VjI4OEgyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjRWOTZIMjg4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFYXJEZWFmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi42IDU0LjZsLTQwIDQwYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2w0MC00MGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zem0tMzIwIDMyMGwtMTI4IDEyOGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsMTI4LTEyOGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zek0yNDAgMTI4Yy01Ny42IDAtMTA1LjEgNDMuNi0xMTEuMyA5OS41Yy0xLjkgMTcuNi0xNy44IDMwLjItMzUuMyAyOC4zcy0zMC4yLTE3LjgtMjguMy0zNS4zQzc0LjggMTMyLjUgMTQ5LjQgNjQgMjQwIDY0Yzk3LjIgMCAxNzYgNzguOCAxNzYgMTc2YzAgNDYtMTcuNyA4Ny45LTQ2LjYgMTE5LjNjLTEyIDEzLTE3LjQgMjQuOC0xNy40IDM0LjdWNDAwYzAgNjEuOS01MC4xIDExMi0xMTIgMTEyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di02LjFjMC0zMi45IDE3LjQtNTkuNiAzNC40LTc4YzE4LjQtMjAgMjkuNi00Ni42IDI5LjYtNzUuOWMwLTYxLjktNTAuMS0xMTItMTEyLTExMnptMCA4MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTE3LjctMTQuMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWFyTGlzdGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5OC4zIDMuNGMtMTUuOC03LjktMzUtMS41LTQyLjkgMTQuM2MtNy45IDE1LjgtMS41IDM0LjkgMTQuMiA0Mi45bC40IC4yYy40IC4yIDEuMSAuNiAyLjEgMS4yYzIgMS4yIDUgMyA4LjcgNS42YzcuNSA1LjIgMTcuNiAxMy4yIDI3LjcgMjQuMkM0MjguNSAxMTMuNCA0NDggMTQ2IDQ0OCAxOTJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTY2LTI4LjUtMTEzLjQtNTYuNS0xNDMuN0M0NDEuNiAzMy4yIDQyNy43IDIyLjIgNDE3LjMgMTVjLTUuMy0zLjctOS43LTYuNC0xMy04LjNjLTEuNi0xLTMtMS43LTQtMi4yYy0uNS0uMy0uOS0uNS0xLjItLjdsLS40LS4yLS4yLS4xLS4xIDAgMCAwYzAgMCAwIDAtMTQuMyAyOC42TDM5OC4zIDMuNHpNMTI4LjcgMjI3LjVjNi4yLTU2IDUzLjctOTkuNSAxMTEuMy05OS41YzYxLjkgMCAxMTIgNTAuMSAxMTIgMTEyYzAgMjkuMy0xMS4yIDU1LjktMjkuNiA3NS45Yy0xNyAxOC40LTM0LjQgNDUuMS0zNC40IDc4VjQwMGMwIDI2LjUtMjEuNSA0OC00OCA0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmM2MS45IDAgMTEyLTUwLjEgMTEyLTExMnYtNi4xYzAtOS44IDUuNC0yMS43IDE3LjQtMzQuN0MzOTguMyAzMjcuOSA0MTYgMjg2IDQxNiAyNDBjMC05Ny4yLTc4LjgtMTc2LTE3Ni0xNzZDMTQ5LjQgNjQgNzQuOCAxMzIuNSA2NS4xIDIyMC41Yy0xLjkgMTcuNiAxMC43IDMzLjQgMjguMyAzNS4zczMzLjQtMTAuNyAzNS4zLTI4LjN6TTMyIDUxMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTE5MiAzNTJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNNDEuNCAzNjEuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtNjQtNjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwek0yMDggMjQwYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFYXJ0aEFmcmljYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzcuOCA2My4ybDEwIDE3LjRjMi44IDQuOCA0LjIgMTAuMyA0LjIgMTUuOXY0MS40YzAgMy45IDEuNiA3LjcgNC4zIDEwLjRjNi4yIDYuMiAxNi41IDUuNyAyMi0xLjJsMTMuNi0xN2M0LjctNS45IDEyLjktNy43IDE5LjYtNC4zbDE1LjIgNy42YzMuNCAxLjcgNy4yIDIuNiAxMSAyLjZjNi41IDAgMTIuOC0yLjYgMTcuNC03LjJsMy45LTMuOWMyLjktMi45IDcuMy0zLjYgMTEtMS44bDI5LjIgMTQuNmM3LjggMy45IDEyLjYgMTEuOCAxMi42IDIwLjVjMCAxMC41LTcuMSAxOS42LTE3LjMgMjIuMmwtMzUuNCA4LjhjLTcuNCAxLjgtMTUuMSAxLjUtMjIuNC0uOWwtMzItMTAuN2MtMy4zLTEuMS02LjctMS43LTEwLjItMS43Yy03IDAtMTMuOCAyLjMtMTkuNCA2LjVMMTc2IDIxMmMtMTAuMSA3LjYtMTYgMTkuNC0xNiAzMnYyOGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJjMTAuMSAwIDE5LjYtNC43IDI1LjYtMTIuOGwyNS42LTM0LjFjOC4zLTExLjEgMTIuOC0yNC42IDEyLjgtMzguNFYzMTguNmMwLTMuOSAyLjYtNy4zIDYuNC04LjJsNS4zLTEuM2MxMS45LTMgMjAuMy0xMy43IDIwLjMtMjZjMC03LjEtMi44LTEzLjktNy44LTE4LjlsLTMzLjUtMzMuNWMtMy43LTMuNy0zLjctOS43IDAtMTMuNGM1LjctNS43IDE0LjEtNy43IDIxLjgtNS4xbDE0LjEgNC43YzEyLjMgNC4xIDI1LjctMS41IDMxLjUtMTNjMy41LTcgMTEuMi0xMC44IDE4LjktOS4ybDI3LjQgNS41QzQzMiAxMTIuNCAzNTEuNSA0OCAyNTYgNDhjLTI3LjcgMC01NCA1LjQtNzguMiAxNS4yek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVhcnRoQW1lcmljYXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTcuNyAxOTNsOS40IDE2LjRjOC4zIDE0LjUgMjEuOSAyNS4yIDM4IDI5LjhMMTYzIDI1NS43YzE3LjIgNC45IDI5IDIwLjYgMjkgMzguNXYzOS45YzAgMTEgNi4yIDIxIDE2IDI1LjlzMTYgMTQuOSAxNiAyNS45djM5YzAgMTUuNiAxNC45IDI2LjkgMjkuOSAyMi42YzE2LjEtNC42IDI4LjYtMTcuNSAzMi43LTMzLjhsMi44LTExLjJjNC4yLTE2LjkgMTUuMi0zMS40IDMwLjMtNDBsOC4xLTQuNmMxNS04LjUgMjQuMi0yNC41IDI0LjItNDEuN3YtOC4zYzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlsLTMuOS0zLjljLTktOS0yMS4yLTE0LjEtMzMuOS0xNC4xSDI1N2MtMTEuMSAwLTIyLjEtMi45LTMxLjgtOC40bC0zNC41LTE5LjdjLTQuMy0yLjUtNy42LTYuNS05LjItMTEuMmMtMy4yLTkuNiAxLjEtMjAgMTAuMi0yNC41bDUuOS0zYzYuNi0zLjMgMTQuMy0zLjkgMjEuMy0xLjVsMjMuMiA3LjdjOC4yIDIuNyAxNy4yLS40IDIxLjktNy41YzQuNy03IDQuMi0xNi4zLTEuMi0yMi44bC0xMy42LTE2LjNjLTEwLTEyLTkuOS0yOS41IC4zLTQxLjNsMTUuNy0xOC4zYzguOC0xMC4zIDEwLjItMjUgMy41LTM2LjdsLTIuNC00LjJjLTMuNS0uMi02LjktLjMtMTAuNC0uM0MxNjMuMSA0OCA4NC40IDEwOC45IDU3LjcgMTkzek00NjQgMjU2YzAtMzYuOC05LjYtNzEuNC0yNi40LTEwMS41TDQxMiAxNjQuOGMtMTUuNyA2LjMtMjMuOCAyMy44LTE4LjUgMzkuOGwxNi45IDUwLjdjMy41IDEwLjQgMTIgMTguMyAyMi42IDIwLjlsMjkuMSA3LjNjMS4yLTkgMS44LTE4LjIgMS44LTI3LjV6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWFydGhBc2lhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxLjcgMjk1LjFsMzEuNyA2LjNjNy45IDEuNiAxNi0uOSAyMS43LTYuNmwxNS40LTE1LjRjMTEuNi0xMS42IDMxLjEtOC40IDM4LjQgNi4ybDkuMyAxOC41YzQuOCA5LjYgMTQuNiAxNS43IDI1LjQgMTUuN2MxNS4yIDAgMjYuMS0xNC42IDIxLjctMjkuMmwtNi0xOS45Yy00LjYtMTUuNCA2LjktMzAuOSAyMy0zMC45aDIuM2MxMy40IDAgMjUuOS02LjcgMzMuMy0xNy44bDEwLjctMTYuMWM1LjYtOC41IDUuMy0xOS42LS44LTI3LjdsLTE2LjEtMjEuNWMtMTAuMy0xMy43LTMuMy0zMy41IDEzLjQtMzcuN2wxNy00LjNjNy41LTEuOSAxMy42LTcuMiAxNi41LTE0LjRsMTYuNC00MC45QzMwMy40IDUyLjEgMjgwLjIgNDggMjU2IDQ4QzE0MS4xIDQ4IDQ4IDE0MS4xIDQ4IDI1NmMwIDEzLjQgMS4zIDI2LjUgMy43IDM5LjF6bTQwNy43IDQuNmMtMy0uMy02LS4xLTkgLjhsLTE1LjggNC40Yy02LjcgMS45LTEzLjgtLjktMTcuNS02LjdsLTItMy4xYy02LTkuNC0xNi40LTE1LjEtMjcuNi0xNS4xcy0yMS42IDUuNy0yNy42IDE1LjFsLTYuMSA5LjVjLTEuNCAyLjItMy40IDQuMS01LjcgNS4zTDMxMiAzMzAuMWMtMTguMSAxMC4xLTI1LjUgMzIuNC0xNyA1MS4zbDUuNSAxMi40YzguNiAxOS4yIDMwLjcgMjguNSA1MC41IDIxLjFsMi42LTFjMTAtMy43IDIxLjMtMi4yIDI5LjkgNC4xbDEuNSAxLjFjMzcuMi0yOS41IDY0LjEtNzEuNCA3NC40LTExOS41ek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTE0NC41IDkyLjFjLTIuMSA4LjYgMy4xIDE3LjMgMTEuNiAxOS40bDMyIDhjOC42IDIuMSAxNy4zLTMuMSAxOS40LTExLjZzLTMuMS0xNy4zLTExLjYtMTkuNGwtMzItOGMtOC42LTIuMS0xNy4zIDMuMS0xOS40IDExLjZ6bTkyLTIwYy0yLjEgOC42IDMuMSAxNy4zIDExLjYgMTkuNHMxNy4zLTMuMSAxOS40LTExLjZsOC0zMmMyLjEtOC42LTMuMS0xNy4zLTExLjYtMTkuNHMtMTcuMyAzLjEtMTkuNCAxMS42bC04IDMyek0zNDMuMiAxMTMuN2MtNy45LTQtMTcuNS0uNy0yMS41IDcuMmwtMTYgMzJjLTQgNy45LS43IDE3LjUgNy4yIDIxLjVzMTcuNSAuNyAyMS41LTcuMmwxNi0zMmM0LTcuOSAuNy0xNy41LTcuMi0yMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFYXJ0aEV1cm9wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjYuMyA0OC4zTDIzMi41IDczLjZjLTUuNCA0LTguNSAxMC40LTguNSAxNy4xdjkuMWMwIDYuOCA1LjUgMTIuMyAxMi4zIDEyLjNjMi40IDAgNC44LS43IDYuOC0yLjFsNDEuOC0yNy45YzItMS4zIDQuNC0yLjEgNi44LTIuMWgxYzYuMiAwIDExLjMgNS4xIDExLjMgMTEuM2MwIDMtMS4yIDUuOS0zLjMgOGwtMTkuOSAxOS45Yy01LjggNS44LTEyLjkgMTAuMi0yMC43IDEyLjhsLTI2LjUgOC44Yy01LjggMS45LTkuNiA3LjMtOS42IDEzLjRjMCAzLjctMS41IDcuMy00LjEgMTBsLTE3LjkgMTcuOWMtNi40IDYuNC05LjkgMTUtOS45IDI0djQuM2MwIDE2LjQgMTMuNiAyOS43IDI5LjkgMjkuN2MxMSAwIDIxLjItNi4yIDI2LjEtMTZsNC04LjFjMi40LTQuOCA3LjQtNy45IDEyLjgtNy45YzQuNSAwIDguNyAyLjEgMTEuNCA1LjdsMTYuMyAyMS43YzIuMSAyLjkgNS41IDQuNSA5LjEgNC41YzguNCAwIDEzLjktOC45IDEwLjEtMTYuNGwtMS4xLTIuM2MtMy41LTcgMC0xNS41IDcuNS0xOGwyMS4yLTcuMWM3LjYtMi41IDEyLjctOS42IDEyLjctMTcuNmMwLTEwLjMgOC4zLTE4LjYgMTguNi0xOC42SDQwMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgzNzkuM2MtNy4yIDAtMTQuMiAyLjktMTkuMyA4bC00LjcgNC43Yy0yLjEgMi4xLTMuMyA1LTMuMyA4YzAgNi4yIDUuMSAxMS4zIDExLjMgMTEuM2gxMS4zYzYgMCAxMS44IDIuNCAxNiA2LjZsNi41IDYuNWMxLjggMS44IDIuOCA0LjMgMi44IDYuOHMtMSA1LTIuOCA2LjhsLTcuNSA3LjVDMzg2IDI2MiAzODQgMjY2LjkgMzg0IDI3MnMyIDEwIDUuNyAxMy43TDQwOCAzMDRjMTAuMiAxMC4yIDI0LjEgMTYgMzguNiAxNkg0NTRjNi41LTIwLjIgMTAtNDEuNyAxMC02NGMwLTExMS40LTg3LjYtMjAyLjQtMTk3LjctMjA3Ljd6bTE3MiAzMDcuOWMtMy43LTIuNi04LjItNC4xLTEzLTQuMWMtNiAwLTExLjgtMi40LTE2LTYuNkwzOTYgMzMyYy03LjctNy43LTE4LTEyLTI4LjktMTJjLTkuNyAwLTE5LjItMy41LTI2LjYtOS44TDMxNCAyODcuNGMtMTEuNi05LjktMjYuNC0xNS40LTQxLjctMTUuNEgyNTEuNGMtMTIuNiAwLTI1IDMuNy0zNS41IDEwLjdMMTg4LjUgMzAxYy0xNy44IDExLjktMjguNSAzMS45LTI4LjUgNTMuM3YzLjJjMCAxNyA2LjcgMzMuMyAxOC43IDQ1LjNsMTYgMTZjOC41IDguNSAyMCAxMy4zIDMyIDEzLjNIMjQ4YzEzLjMgMCAyNCAxMC43IDI0IDI0YzAgMi41IC40IDUgMS4xIDcuM2M3MS4zLTUuOCAxMzIuNS00Ny42IDE2NS4yLTEwNy4yek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6TTE4Ny4zIDEwMC43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMGwtMzIgMzJjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGwzMi0zMmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWFydGhPY2VhbmlhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0yMDguNiAzNTcuM2wtMzktMTMuNWMtNi41LTIuMi0xMy42LTIuMy0yMC4xLS4zbC0xNS4zIDQuOWMtMTguNSA1LjktMzguNS0yLjQtNDcuNS0xOS41bC0zLjMtNi4yYy0xMC42LTIwLjEtMi4zLTQ1IDE4LjItNTQuN2wzNS4zLTE2LjhjMi4zLTEuMSA0LjQtMi44IDUuOS00LjhsNS4zLTdjNy4yLTkuNiAxOC42LTE1LjMgMzAuNi0xNS4zczIzLjQgNS43IDMwLjYgMTUuM2w0LjYgNi4xYzIgMi42IDQuOSA0LjUgOC4xIDUuMWM3LjggMS42IDE1LjctMS41IDIwLjQtNy45bDEwLjQtMTQuMmMyLTIuOCA1LjMtNC40IDguNy00LjRjNC40IDAgOC40IDIuNyAxMCA2LjhsMTAuMSAyNS45YzIuOCA3LjIgNi43IDE0IDExLjUgMjAuMkwzMTEgMjk5LjhjNS44IDcuNCA5IDE2LjYgOSAyNnMtMy4yIDE4LjYtOSAyNkwyOTkgMzY3LjJjLTguMyAxMC42LTIxIDE2LjgtMzQuNCAxNi44Yy04LjQgMC0xNi42LTIuNC0yMy43LTdsLTI1LjQtMTYuNGMtMi4yLTEuNC00LjUtMi41LTYuOS0zLjR6bTY1LjItMjE0LjhMMjk2IDE2NC43YzEwLjEgMTAuMSAyLjkgMjcuMy0xMS4zIDI3LjNIMjU0LjhjLTUuNiAwLTExLjEtMS4yLTE2LjItMy40bC00Mi44LTE5Yy0xNC4zLTYuMy0xMS45LTI3LjMgMy40LTMwLjNsMzguNS03LjdjMTMuMS0yLjYgMjYuNyAxLjUgMzYuMSAxMC45ek0yNDggNDMyYzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyNjRjLTguOCAwLTE2LTcuMi0xNi0xNnpNNDMxLjIgMjk4LjlsOCAyNGMyLjggOC40LTEuNyAxNy40LTEwLjEgMjAuMnMtMTcuNC0xLjctMjAuMi0xMC4xbC04LTI0Yy0yLjgtOC40IDEuNy0xNy40IDEwLjEtMjAuMnMxNy40IDEuNyAyMC4yIDEwLjF6bS0xOS45IDgwLjRsLTMyIDMyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42bDMyLTMyYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWdnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA0OTZDODYgNDk2IDAgMzk0IDAgMjg4QzAgMTc2IDY0IDE2IDE5MiAxNnMxOTIgMTYwIDE5MiAyNzJjMCAxMDYtODYgMjA4LTE5MiAyMDh6TTE1NC44IDEzNGM2LjUtNiA3LTE2LjEgMS0yMi42cy0xNi4xLTctMjIuNi0xYy0yMy45IDIxLjgtNDEuMSA1Mi43LTUyLjMgODQuMkM2OS43IDIyNi4xIDY0IDI1OS43IDY0IDI4OGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2YzAtMjQuNSA1LTU0LjQgMTUuMS04Mi44YzEwLjEtMjguNSAyNS01NC4xIDQzLjctNzEuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDMyYzEzLjUgMCAyNi4zIDUuNiAzNS40IDE1LjZsMTc2IDE5MmMxMi45IDE0IDE2LjIgMzQuMyA4LjYgNTEuOFM0MTkgMzIwIDQwMCAzMjBINDhjLTE5IDAtMzYuMy0xMS4yLTQzLjktMjguN3MtNC4zLTM3LjcgOC42LTUxLjhsMTc2LTE5MkMxOTcuNyAzNy42IDIxMC41IDMyIDIyNCAzMnpNMCA0MzJjMC0yNi41IDIxLjUtNDggNDgtNDhINDAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWxldmF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMyLjcgNC43bC02NCA2NGMtNC42IDQuNi01LjkgMTEuNS0zLjUgMTcuNHM4LjMgOS45IDE0LjggOS45SDIwOGM2LjUgMCAxMi4zLTMuOSAxNC44LTkuOXMxLjEtMTIuOS0zLjUtMTcuNGwtNjQtNjRjLTYuMi02LjItMTYuNC02LjItMjIuNiAwek02NCAxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTkyYzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em05NiA5NmE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6TTgwIDQwMGMwLTI2LjUgMjEuNS00OCA0OC00OGg2NGMyNi41IDAgNDggMjEuNSA0OCA0OHYxNmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQwMHptMTkyIDBjMC0yNi41IDIxLjUtNDggNDgtNDhoNjRjMjYuNSAwIDQ4IDIxLjUgNDggNDh2MTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMzA0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDB6bTMyLTEyOGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwek0zNTYuNyA5MS4zYzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDY0LTY0YzQuNi00LjYgNS45LTExLjUgMy41LTE3LjRTNDM4LjUgMCA0MzIgMEgzMDRjLTYuNSAwLTEyLjMgMy45LTE0LjggOS45cy0xLjEgMTIuOSAzLjUgMTcuNGw2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWxsaXBzaXNWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMTI4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzNjBhNTYgNTYgMCAxIDAgMCAxMTIgNTYgNTYgMCAxIDAgMC0xMTJ6bTAtMTYwYTU2IDU2IDAgMSAwIDAgMTEyIDU2IDU2IDAgMSAwIDAtMTEyek0xMjAgOTZBNTYgNTYgMCAxIDAgOCA5NmE1NiA1NiAwIDEgMCAxMTIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWxsaXBzaXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyNTZhNTYgNTYgMCAxIDEgMTEyIDBBNTYgNTYgMCAxIDEgOCAyNTZ6bTE2MCAwYTU2IDU2IDAgMSAxIDExMiAwIDU2IDU2IDAgMSAxIC0xMTIgMHptMjE2LTU2YTU2IDU2IDAgMSAxIDAgMTEyIDU2IDU2IDAgMSAxIDAtMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbnZlbG9wZUNpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDY0QzIxLjUgNjQgMCA4NS41IDAgMTEyYzAgMTUuMSA3LjEgMjkuMyAxOS4yIDM4LjRMMjM2LjggMzEzLjZjMTEuNCA4LjUgMjcgOC41IDM4LjQgMGw1Ny40LTQzYzIzLjktNTkuOCA3OS43LTEwMy4zIDE0Ni4zLTEwOS44bDEzLjktMTAuNGMxMi4xLTkuMSAxOS4yLTIzLjMgMTkuMi0zOC40YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek0yOTQuNCAzMzkuMmMtMjIuOCAxNy4xLTU0IDE3LjEtNzYuOCAwTDAgMTc2VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzNjAuMkMzMzUuMSA0MTcuNiAzMjAgMzc4LjUgMzIwIDMzNmMwLTUuNiAuMy0xMS4xIC44LTE2LjZsLTI2LjQgMTkuOHpNNjQwIDMzNmExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNzYuNy00My4zYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC03MiA3MmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDgwIDM1My40bDYwLjctNjAuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW52ZWxvcGVPcGVuVGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTUuNCA5NkgxNDQgMTA3LjggOTZ2OC44VjE0NHY0MC40IDg5TC4yIDIwMi41YzEuNi0xOC4xIDEwLjktMzQuOSAyNS43LTQ1LjhMNDggMTQwLjNWOTZjMC0yNi41IDIxLjUtNDggNDgtNDhoNzYuNmw0OS45LTM2LjlDMjMyLjIgMy45IDI0My45IDAgMjU2IDBzMjMuOCAzLjkgMzMuNSAxMUwzMzkuNCA0OEg0MTZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NDQuM2wyMi4xIDE2LjRjMTQuOCAxMC45IDI0LjEgMjcuNyAyNS43IDQ1LjhMNDE2IDI3My40di04OVYxNDQgMTA0LjggOTZINDA0LjIgMzY4IDI5Ni42IDIxNS40ek0wIDQ0OFYyNDIuMUwyMTcuNiA0MDMuM2MxMS4xIDguMiAyNC42IDEyLjcgMzguNCAxMi43czI3LjMtNC40IDM4LjQtMTIuN0w1MTIgMjQyLjFWNDQ4djBjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0djB6TTE3NiAxNjBIMzM2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMCA2NEgzMzZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbnZlbG9wZU9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMjA4LjFMMjU2IDY1LjkgNDQ4IDIwOC4xdjQ3LjRMMjg5LjUgMzczYy05LjcgNy4yLTIxLjQgMTEtMzMuNSAxMXMtMjMuOC0zLjktMzMuNS0xMUw2NCAyNTUuNVYyMDguMXpNMjU2IDBjLTEyLjEgMC0yMy44IDMuOS0zMy41IDExTDI1LjkgMTU2LjdDOS42IDE2OC44IDAgMTg3LjggMCAyMDguMVY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjIwOC4xYzAtMjAuMy05LjYtMzkuNC0yNS45LTUxLjRMMjg5LjUgMTFDMjc5LjggMy45IDI2OC4xIDAgMjU2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVudmVsb3BlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDY0QzIxLjUgNjQgMCA4NS41IDAgMTEyYzAgMTUuMSA3LjEgMjkuMyAxOS4yIDM4LjRMMjM2LjggMzEzLjZjMTEuNCA4LjUgMjcgOC41IDM4LjQgMEw0OTIuOCAxNTAuNGMxMi4xLTkuMSAxOS4yLTIzLjMgMTkuMi0zOC40YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek0wIDE3NlYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE3NkwyOTQuNCAzMzkuMmMtMjIuOCAxNy4xLTU0IDE3LjEtNzYuOCAwTDAgMTc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbnZlbG9wZXNCdWxrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwQzExMC4zIDAgOTYgMTQuMyA5NiAzMlYyMjRoOTZWMTkyYzAtMzUuMyAyOC43LTY0IDY0LTY0SDQ4MFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkgxMjh6TTI1NiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMyaDk2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNkg1NzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDI1NnptMjQwIDY0aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZINDk2Yy04LjggMC0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNnpNNjQgMjU2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYxM0wxODcuMSA0MTUuOWMxLjQgMSAzLjEgMS42IDQuOSAxLjZzMy41LS42IDQuOS0xLjZMMzUyIDMwMVYyODhjMC0xNy43LTE0LjMtMzItMzItMzJINjR6bTI4OCA4NC44TDIxNiA0NDEuNmMtNi45IDUuMS0xNS4zIDcuOS0yNCA3LjlzLTE3LTIuOC0yNC03LjlMMzIgMzQwLjhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNDAuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXF1YWxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDh6bTAgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQwMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXJhc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5MC43IDU3LjRMNTcuNCAyOTAuN2MtMjUgMjUtMjUgNjUuNSAwIDkwLjVsODAgODBjMTIgMTIgMjguMyAxOC43IDQ1LjMgMTguN0gyODhoOS40SDUxMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzODcuOUw1MTguNiAyODUuM2MyNS0yNSAyNS02NS41IDAtOTAuNUwzODEuMyA1Ny40Yy0yNS0yNS02NS41LTI1LTkwLjUgMHpNMjk3LjQgNDE2SDI4OGwtMTA1LjQgMC04MC04MEwyMjcuMyAyMTEuMyAzNjQuNyAzNDguNyAyOTcuNCA0MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV0aGVybmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjI0VjQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMkg5NlYzMzZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNlY0NDhoNjRWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZWNDQ4aDY0VjMzNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2VjQ0OGg2NFYzMzZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNlY0NDhoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDQ0OFYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJIMzg0Vjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzJIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXVyb1NpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDguMSAyNDBjLS4xIDIuNy0uMSA1LjMtLjEgOHYxNmMwIDIuNyAwIDUuMyAuMSA4SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDYwLjNDODkuOSA0MTkuOSAxNzAgNDgwIDI2NCA0ODBoMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjY0Yy01Ny45IDAtMTA4LjItMzIuNC0xMzMuOS04MEgyNTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTEyLjJjLS4xLTIuNi0uMi01LjMtLjItOFYyNDhjMC0yLjcgLjEtNS40IC4yLThIMjU2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDEzMC4xYzI1LjctNDcuNiA3Ni04MCAxMzMuOS04MGgyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNjRDMTcwIDMyIDg5LjkgOTIuMSA2MC4zIDE3NkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0OC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNDYuMyAwIDY0VjMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjY0ek0zMiA0ODBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeHBhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NHY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjk2aDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyek02NCAzNTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjRWMzUyek0zMjAgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoNjR2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMjB6TTQ0OCAzNTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NjRIMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXhwbG9zaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5OS42IDExLjNjNi43LTEwLjcgMjAuNS0xNC41IDMxLjctOC41czE1LjggMTkuNSAxMC42IDMxTDQwNC44IDMzOC42YzIuMiAyLjMgNC4zIDQuNyA2LjMgNy4xbDk3LjItNTQuN2MxMC41LTUuOSAyMy42LTMuMSAzMC45IDYuNHM2LjMgMjMtMi4yIDMxLjVsLTg3IDg3SDM3OC41Yy0xMy4yLTM3LjMtNDguNy02NC05MC41LTY0cy03Ny40IDI2LjctOTAuNSA2NEgxMTcuOEw0Mi4zIDM2My43Yy05LjctNi43LTEzLjEtMTkuNi03LjktMzAuM3MxNy40LTE1LjkgMjguNy0xMi40bDk3LjIgMzAuNGMzLTMuOSA2LjEtNy43IDkuNC0xMS4zTDEwNy40IDIzNi4zYy02LjEtMTAuMS0zLjktMjMuMSA1LjEtMzAuN3MyMi4yLTcuNSAzMS4xIC4xTDI0NiAyOTMuNmMxLjUtLjQgMy0uOCA0LjUtMS4xbDEzLjYtMTQyLjdjMS4yLTEyLjMgMTEuNS0yMS43IDIzLjktMjEuN3MyMi43IDkuNCAyMy45IDIxLjdsMTMuNSAxNDEuOUw0OTkuNiAxMS4zek02NCA0NDh2MEg1MTJ2MGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg2NHpNMjg4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRWNzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV5ZURyb3BwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQxLjYgMjkuMkwyNDAuMSAxMzAuOGwtOS40LTkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTYwIDE2MGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC05LjQtOS40TDQ4Mi44IDE3MC40YzM5LTM5IDM5LTEwMi4yIDAtMTQxLjFzLTEwMi4yLTM5LTE0MS4xIDB6TTU1LjQgMzIzLjNjLTE1IDE1LTIzLjQgMzUuNC0yMy40IDU2LjZ2NDIuNEw1LjQgNDYyLjJjLTguNSAxMi43LTYuOCAyOS42IDQgNDAuNHMyNy43IDEyLjUgNDAuNCA0TDg5LjcgNDgwaDQyLjRjMjEuMiAwIDQxLjYtOC40IDU2LjYtMjMuNEwzMDkuNCAzMzUuOWwtNDUuMy00NS4zTDE0My40IDQxMS4zYy0zIDMtNy4xIDQuNy0xMS4zIDQuN0g5NlYzNzkuOWMwLTQuMiAxLjctOC4zIDQuNy0xMS4zTDIyMS40IDI0Ny45bC00NS4zLTQ1LjNMNTUuNCAzMjMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXllTG93VmlzaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNTI1LjYgMzg2LjdjMzkuNi00MC42IDY2LjQtODYuMSA3OS45LTExOC40YzMuMy03LjkgMy4zLTE2LjcgMC0yNC42Yy0xNC45LTM1LjctNDYuMi04Ny43LTkzLTEzMS4xQzQ2NS41IDY4LjggNDAwLjggMzIgMzIwIDMyYy02OC4yIDAtMTI1IDI2LjMtMTY5LjMgNjAuOEwzOC44IDUuMXpNMjIzIDE0OS41YzQ4LjYtNDQuMyAxMjMtNTAuOCAxNzkuMy0xMS43YzYwLjggNDIuNCA3OC45IDEyMy4yIDQ0LjIgMTg2LjlMNDA4IDI5NC41YzguNC0xOS4zIDEwLjYtNDEuNCA0LjgtNjMuM2MtMTEuMS00MS41LTQ3LjgtNjkuNC04OC42LTcxLjFjLTUuOC0uMi05LjIgNi4xLTcuNCAxMS43YzIuMSA2LjQgMy4zIDEzLjIgMy4zIDIwLjNjMCAxMC4yLTIuNCAxOS44LTYuNiAyOC4zTDIyMyAxNDkuNXptLTEzOS45IDEyYy0xMSAxNC40LTIwLjUgMjguNy0yOC40IDQyLjJsMzM5IDI2NS43YzE4LjctNS41IDM2LjItMTMgNTIuNi0yMS44TDgzLjEgMTYxLjV6bS01MCA4Ni4zYy0xLjggNi44LTEuMyAxNCAxLjQgMjAuNWMxNC45IDM1LjcgNDYuMiA4Ny43IDkzIDEzMS4xQzE3NC41IDQ0My4yIDIzOS4yIDQ4MCAzMjAgNDgwYzMuMSAwIDYuMS0uMSA5LjItLjJMMzMuMSAyNDcuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXllU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN0w1MjUuNiAzODYuN2MzOS42LTQwLjYgNjYuNC04Ni4xIDc5LjktMTE4LjRjMy4zLTcuOSAzLjMtMTYuNyAwLTI0LjZjLTE0LjktMzUuNy00Ni4yLTg3LjctOTMtMTMxLjFDNDY1LjUgNjguOCA0MDAuOCAzMiAzMjAgMzJjLTY4LjIgMC0xMjUgMjYuMy0xNjkuMyA2MC44TDM4LjggNS4xek0yMjMuMSAxNDkuNUMyNDguNiAxMjYuMiAyODIuNyAxMTIgMzIwIDExMmM3OS41IDAgMTQ0IDY0LjUgMTQ0IDE0NGMwIDI0LjktNi4zIDQ4LjMtMTcuNCA2OC43TDQwOCAyOTQuNWM4LjQtMTkuMyAxMC42LTQxLjQgNC44LTYzLjNjLTExLjEtNDEuNS00Ny44LTY5LjQtODguNi03MS4xYy01LjgtLjItOS4yIDYuMS03LjQgMTEuN2MyLjEgNi40IDMuMyAxMy4yIDMuMyAyMC4zYzAgMTAuMi0yLjQgMTkuOC02LjYgMjguM2wtOTAuMy03MC44ek0zNzMgMzg5LjljLTE2LjQgNi41LTM0LjMgMTAuMS01MyAxMC4xYy03OS41IDAtMTQ0LTY0LjUtMTQ0LTE0NGMwLTYuOSAuNS0xMy42IDEuNC0yMC4yTDgzLjEgMTYxLjVDNjAuMyAxOTEuMiA0NCAyMjAuOCAzNC41IDI0My43Yy0zLjMgNy45LTMuMyAxNi43IDAgMjQuNmMxNC45IDM1LjcgNDYuMiA4Ny43IDkzIDEzMS4xQzE3NC41IDQ0My4yIDIzOS4yIDQ4MCAzMjAgNDgwYzQ3LjggMCA4OS45LTEyLjkgMTI2LjItMzIuNUwzNzMgMzg5Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJjLTgwLjggMC0xNDUuNSAzNi44LTE5Mi42IDgwLjZDNDguNiAxNTYgMTcuMyAyMDggMi41IDI0My43Yy0zLjMgNy45LTMuMyAxNi43IDAgMjQuNkMxNy4zIDMwNCA0OC42IDM1NiA5NS40IDM5OS40QzE0Mi41IDQ0My4yIDIwNy4yIDQ4MCAyODggNDgwczE0NS41LTM2LjggMTkyLjYtODAuNmM0Ni44LTQzLjUgNzguMS05NS40IDkzLTEzMS4xYzMuMy03LjkgMy4zLTE2LjcgMC0yNC42Yy0xNC45LTM1LjctNDYuMi04Ny43LTkzLTEzMS4xQzQzMy41IDY4LjggMzY4LjggMzIgMjg4IDMyek0xNDQgMjU2YTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTE0NC02NGMwIDM1LjMtMjguNyA2NC02NCA2NGMtNy4xIDAtMTMuOS0xLjItMjAuMy0zLjNjLTUuNS0xLjgtMTEuOSAxLjYtMTEuNyA3LjRjLjMgNi45IDEuMyAxMy44IDMuMiAyMC43YzEzLjcgNTEuMiA2Ni40IDgxLjYgMTE3LjYgNjcuOXM4MS42LTY2LjQgNjcuOS0xMTcuNmMtMTEuMS00MS41LTQ3LjgtNjkuNC04OC42LTcxLjFjLTUuOC0uMi05LjIgNi4xLTcuNCAxMS43YzIuMSA2LjQgMy4zIDEzLjIgMy4zIDIwLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlYyNTYgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjg4SDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg2NFY5NkgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VBbmdyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6TTMzOC43IDM5NS45YzYuNi01LjkgNy4xLTE2IDEuMi0yMi42QzMyMy44IDM1NS40IDI5NS43IDMzNiAyNTYgMzM2cy02Ny44IDE5LjQtODMuOSAzNy4zYy01LjkgNi42LTUuNCAxNi43IDEuMiAyMi42czE2LjcgNS40IDIyLjYtMS4yYzExLjctMTMgMzEuNi0yNi43IDYwLjEtMjYuN3M0OC40IDEzLjcgNjAuMSAyNi43YzUuOSA2LjYgMTYgNy4xIDIyLjYgMS4yek0xNzYuNCAyNzJjMTcuNyAwIDMyLTE0LjMgMzItMzJjMC0xLjUtLjEtMy0uMy00LjRsMTAuOSAzLjZjOC40IDIuOCAxNy40LTEuNyAyMC4yLTEwLjFzLTEuNy0xNy40LTEwLjEtMjAuMmwtOTYtMzJjLTguNC0yLjgtMTcuNCAxLjctMjAuMiAxMC4xczEuNyAxNy40IDEwLjEgMjAuMmwzMC43IDEwLjJjLTUuOCA1LjgtOS4zIDEzLjgtOS4zIDIyLjZjMCAxNy43IDE0LjMgMzIgMzIgMzJ6bTE5Mi0zMmMwLTguOS0zLjYtMTctOS41LTIyLjhsMzAuMi0xMC4xYzguNC0yLjggMTIuOS0xMS45IDEwLjEtMjAuMnMtMTEuOS0xMi45LTIwLjItMTAuMWwtOTYgMzJjLTguNCAyLjgtMTIuOSAxMS45LTEwLjEgMjAuMnMxMS45IDEyLjkgMjAuMiAxMC4xbDExLjctMy45Yy0uMiAxLjUtLjMgMy4xLS4zIDQuN2MwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlRGl6enkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTAtMjI0YTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4ek0xMDAuNyAxMzIuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMEwxNjAgMTY5LjRsMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNkwxODIuNiAxOTJsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBMMTYwIDIxNC42bC0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMMTM3LjQgMTkybC0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42em0xOTIgMGM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMEwzNTIgMTY5LjRsMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNkwzNzQuNiAxOTJsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBMMzUyIDIxNC42bC0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMMzI5LjQgMTkybC0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlRmx1c2hlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6TTE3NiAzODRjMCA4LjggNy4yIDE2IDE2IDE2SDMyMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxOTJjLTguOCAwLTE2IDcuMi0xNiAxNnptLTE2LTg4YTcyIDcyIDAgMSAwIDAtMTQ0IDcyIDcyIDAgMSAwIDAgMTQ0em0yNjQtNzJhNzIgNzIgMCAxIDAgLTE0NCAwIDcyIDcyIDAgMSAwIDE0NCAwem0tMjg4IDBhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTkyIDBhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUZyb3duT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTc2LjQgMTc2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTI4IDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bS0xMjIgMTc0LjVjLTEyLjQgNS4yLTI2LjUtNC4xLTIxLjEtMTYuNGMxNi0zNi42IDUyLjQtNjIuMSA5NC44LTYyLjFzNzguOCAyNS42IDk0LjggNjIuMWM1LjQgMTIuMy04LjcgMjEuNi0yMS4xIDE2LjRjLTIyLjQtOS41LTQ3LjQtMTQuOC03My43LTE0LjhzLTUxLjMgNS4zLTczLjcgMTQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUZyb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNTkuMyAzODguN2MtMi42IDguNC0xMS42IDEzLjItMjAgMTAuNXMtMTMuMi0xMS42LTEwLjUtMjBDMTQ1LjIgMzI2LjEgMTk2LjMgMjg4IDI1NiAyODhzMTEwLjggMzguMSAxMjcuMyA5MS4zYzIuNiA4LjQtMi4xIDE3LjQtMTAuNSAyMHMtMTcuNC0yLjEtMjAtMTAuNUMzNDAuNSAzNDkuNCAzMDIuMSAzMjAgMjU2IDMyMHMtODQuNSAyOS40LTk2LjcgNjguN3pNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmltYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyem05Ni0xMTJoLThWMzYwbDU1LjMgMGMtMy44IDIyLjctMjMuNiA0MC00Ny4zIDQwem00Ny4zLTU2TDM0NCAzNDRWMzA0aDhjMjMuOCAwIDQzLjUgMTcuMyA0Ny4zIDQwek0zMjggMzQ0SDI2NFYzMDRoNjR2NDB6bTAgNTZIMjY0VjM2MGg2NHY0MHptLTgwLTk2djQwbC02NCAwVjMwNGg2NHptMCA1NnY0MEgxODRWMzYwbDY0IDB6bS04MC0xNkgxMTIuN2MzLjgtMjIuNyAyMy42LTQwIDQ3LjMtNDBoOHY0MHptMCA1NmgtOGMtMjMuOCAwLTQzLjUtMTcuMy00Ny4zLTQwSDE2OHY0MHpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluQmVhbVN3ZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3Ni44IDEyNi4zYy00LjEgMS4xLTguNCAxLjctMTIuOCAxLjdjLTI2LjUgMC00OC0yMS00OC00N2MwLTUgMS44LTExLjMgNC42LTE4LjFjLjMtLjcgLjYtMS40IC45LTIuMWM5LTIwLjIgMjYuNS00NC45IDM2LTU3LjVjMy4yLTQuNCA5LjYtNC40IDEyLjggMEM0ODMuNCAyMC42IDUxMiA2MSA1MTIgODFjMCAyMS43LTE0LjkgMzkuOC0zNS4yIDQ1LjN6TTI1NiAwYzUxLjQgMCA5OS4zIDE1LjIgMTM5LjQgNDEuMmMtMS41IDMuMS0zIDYuMi00LjMgOS4zYy0zLjQgOC03LjEgMTktNy4xIDMwLjVjMCA0NC4zIDM2LjYgNzkgODAgNzljOS42IDAgMTguOC0xLjcgMjcuNC00LjhjMTMuMyAzMC45IDIwLjYgNjUgMjAuNiAxMDAuOGMwIDE0MS40LTExNC42IDI1Ni0yNTYgMjU2UzAgMzk3LjQgMCAyNTZTMTE0LjYgMCAyNTYgMHpNMzg4LjEgMzEyLjhjLTM5LjcgMTIuMi04NC41IDE5LTEzMS44IDE5cy05Mi4xLTYuOC0xMzEuOC0xOWMtMTIuMy0zLjgtMjQuMyA2LjktMTkuMyAxOC43YzI1IDU5LjEgODMuMiAxMDAuNSAxNTEuMSAxMDAuNXMxMjYuMi00MS40IDE1MS4xLTEwMC41YzUtMTEuOC03LTIyLjUtMTkuMy0xOC43em0tMTcwLjUtODRsMCAwIDAgMGMyLjEgMi44IDUuNyAzLjkgOC45IDIuOHM1LjUtNC4xIDUuNS03LjZjMC0xNy45LTYuNy0zNS42LTE2LjYtNDguOGMtOS44LTEzLTIzLjktMjMuMi0zOS40LTIzLjJzLTI5LjYgMTAuMi0zOS40IDIzLjJDMTI2LjcgMTg4LjQgMTIwIDIwNi4xIDEyMCAyMjRjMCAzLjQgMi4yIDYuNSA1LjUgNy42czYuOSAwIDguOS0yLjhsMCAwIDAgMCAwIDAgLjItLjJjLjItLjIgLjQtLjUgLjctLjljLjYtLjggMS42LTIgMi44LTMuNGMyLjUtMi44IDYtNi42IDEwLjItMTAuM2M4LjgtNy44IDE4LjgtMTQgMjcuNy0xNHMxOC45IDYuMiAyNy43IDE0YzQuMiAzLjcgNy43IDcuNSAxMC4yIDEwLjNjMS4yIDEuNCAyLjIgMi42IDIuOCAzLjRjLjMgLjQgLjYgLjcgLjcgLjlsLjIgLjIgMCAwIDAgMHptMTYwIDBsMCAwIDAgMCAwIDBjMi4xIDIuOCA1LjcgMy45IDguOSAyLjhzNS41LTQuMSA1LjUtNy42YzAtMTcuOS02LjctMzUuNi0xNi42LTQ4LjhjLTkuOC0xMy0yMy45LTIzLjItMzkuNC0yMy4ycy0yOS42IDEwLjItMzkuNCAyMy4yQzI4Ni43IDE4OC40IDI4MCAyMDYuMSAyODAgMjI0YzAgMy40IDIuMiA2LjUgNS41IDcuNnM2LjkgMCA4LjktMi44bDAgMCAwIDAgMCAwIC4yLS4yYy4yLS4yIC40LS41IC43LS45Yy42LS44IDEuNi0yIDIuOC0zLjRjMi41LTIuOCA2LTYuNiAxMC4yLTEwLjNjOC44LTcuOCAxOC44LTE0IDI3LjctMTRzMTguOSA2LjIgMjcuNyAxNGM0LjIgMy43IDcuNyA3LjUgMTAuMiAxMC4zYzEuMiAxLjQgMi4yIDIuNiAyLjggMy40Yy4zIC40IC42IC43IC43IC45bC4yIC4yIDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUdyaW5CZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zODguMSAzMTIuOGMxMi4zLTMuOCAyNC4zIDYuOSAxOS4zIDE4LjdDMzgyLjQgMzkwLjYgMzI0LjIgNDMyIDI1Ni4zIDQzMnMtMTI2LjItNDEuNC0xNTEuMS0xMDAuNWMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTl6bS0xNzAuNS04NGwwIDAgMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwem0xNjAgMGwwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDAgMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlR3JpbkhlYXJ0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzg4LjEgMzEyLjhjMTIuMy0zLjggMjQuMyA2LjkgMTkuMyAxOC43QzM4Mi40IDM5MC42IDMyNC4yIDQzMiAyNTYuMyA0MzJzLTEyNi4yLTQxLjQtMTUxLjEtMTAwLjVjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5ek0xOTkuMyAxMjkuMWMxNy44IDQuOCAyOC40IDIzLjEgMjMuNiA0MC44bC0xNy40IDY1Yy0yLjMgOC41LTExLjEgMTMuNi0xOS42IDExLjNsLTY1LjEtMTcuNGMtMTcuOC00LjgtMjguNC0yMy4xLTIzLjYtNDAuOHMyMy4xLTI4LjQgNDAuOC0yMy42bDE2LjEgNC4zIDQuMy0xNi4xYzQuOC0xNy44IDIzLjEtMjguNCA0MC44LTIzLjZ6bTE1NC4zIDIzLjZsNC4zIDE2LjEgMTYuMS00LjNjMTcuOC00LjggMzYuMSA1LjggNDAuOCAyMy42cy01LjggMzYuMS0yMy42IDQwLjhsLTY1LjEgMTcuNGMtOC41IDIuMy0xNy4zLTIuOC0xOS42LTExLjNsLTE3LjQtNjVjLTQuOC0xNy44IDUuOC0zNi4xIDIzLjYtNDAuOHMzNi4xIDUuOCA0MC45IDIzLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluU3F1aW50VGVhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI2LjggMTQuMkM0NDYtNSA0NzcuNS00LjYgNDk3LjEgMTQuOXMyMCA1MSAuNyA3MC4zYy02LjggNi44LTIxLjQgMTIuNC0zNy40IDE2LjdjLTE2LjMgNC40LTM0LjEgNy41LTQ2LjMgOS4zYy0xLjYgLjItMy4xIC41LTQuNiAuNmMtNS42IC45LTEwLjMtMy45LTkuNS05LjVjMS42LTExLjIgNC42LTI5LjYgOS00N2MuMy0xLjMgLjctMi42IDEtMy45YzQuMy0xNS45IDkuOC0zMC41IDE2LjctMzcuNHptLTQ0LjcgMTljLTEuNSA0LjgtMi45IDkuNi00LjEgMTQuM2MtNC44IDE4LjktOCAzOC41LTkuNyA1MC4zYy00IDI2LjggMTguOSA0OS43IDQ1LjcgNDUuOGMxMS45LTEuNiAzMS41LTQuOCA1MC40LTkuN2M0LjctMS4yIDkuNS0yLjUgMTQuMy00LjFDNTM0LjIgMjI3LjUgNTIwLjIgMzUzLjggNDM3IDQzN2MtODMuMiA4My4yLTIwOS41IDk3LjItMzA3LjIgNDEuOGMxLjUtNC44IDIuOC05LjYgNC0xNC4zYzQuOC0xOC45IDgtMzguNSA5LjctNTAuM2M0LTI2LjgtMTguOS00OS43LTQ1LjctNDUuOGMtMTEuOSAxLjYtMzEuNSA0LjgtNTAuNCA5LjdjLTQuNyAxLjItOS41IDIuNS0xNC4zIDQuMUMtMjIuMiAyODQuNS04LjIgMTU4LjIgNzUgNzVDMTU4LjItOC4zIDI4NC41LTIyLjIgMzgyLjIgMzMuMnpNNTEuNSA0MTAuMWMxOC41LTUgMzguOC04LjMgNTAuOS0xMGM1LjYtLjkgMTAuMyAzLjkgOS41IDkuNWMtMS43IDEyLjEtNSAzMi40LTEwIDUwLjlDOTcuNiA0NzYuNCA5MiA0OTEgODUuMiA0OTcuOEM2NiA1MTcgMzQuNSA1MTYuNiAxNC45IDQ5Ny4xcy0yMC01MS0uNy03MC4zYzYuOC02LjggMjEuNC0xMi40IDM3LjQtMTYuN3pNNDE2LjQgMjAyLjNjLTQuOC0xMS45LTIwLjktMTAuOS0yNi45IC40Yy0xOS40IDM2LjctNDYuMyA3My4yLTc5LjggMTA2LjdzLTcwIDYwLjMtMTA2LjcgNzkuOGMtMTEuMyA2LTEyLjMgMjIuMS0uNCAyNi45YzU5LjQgMjQuMSAxMjkuOSAxMi4yIDE3Ny45LTM1LjhzNTkuOS0xMTguNSAzNS44LTE3Ny45ek04Ny4xIDI4NS4xYzIgMiA0LjYgMy4yIDcuMyAzLjRsNTYuMSA1LjEgNS4xIDU2LjFjLjMgMi44IDEuNSA1LjQgMy40IDcuM2M2LjMgNi4zIDE3LjIgMy42IDE5LjgtNC45bDI5LjctOTcuNGMzLjUtMTEuNi03LjMtMjIuNS0xOS0xOUw5MiAyNjUuM2MtOC42IDIuNi0xMS4zIDEzLjQtNC45IDE5Ljh6TTI2NS4zIDkybC0yOS43IDk3LjRjLTMuNSAxMS42IDcuMyAyMi41IDE5IDE5bDk3LjQtMjkuN2M4LjYtMi42IDExLjMtMTMuNCA0LjktMTkuOGMtMi0yLTQuNi0zLjItNy4zLTMuNGwtNTYuMS01LjEtNS4xLTU2LjFjLS4zLTIuOC0xLjUtNS40LTMuNC03LjNjLTYuMy02LjMtMTcuMi0zLjYtMTkuOCA0Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluU3F1aW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zODguMSAzMTIuOGMxMi4zLTMuOCAyNC4zIDYuOSAxOS4zIDE4LjdDMzgyLjQgMzkwLjYgMzI0LjIgNDMyIDI1Ni4zIDQzMnMtMTI2LjItNDEuNC0xNTEuMS0xMDAuNWMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTl6TTEzMy41IDE0Ni43bDg5LjkgNDcuOWMxMC43IDUuNyAxMC43IDIxLjEgMCAyNi44bC04OS45IDQ3LjljLTcuOSA0LjItMTcuNS0xLjUtMTcuNS0xMC41YzAtMi44IDEtNS41IDIuOC03LjZsMzYtNDMuMi0zNi00My4yYy0xLjgtMi4xLTIuOC00LjgtMi44LTcuNmMwLTkgOS42LTE0LjcgMTcuNS0xMC41ek0zOTYgMTU3LjFjMCAyLjgtMSA1LjUtMi44IDcuNmwtMzYgNDMuMiAzNiA0My4yYzEuOCAyLjEgMi44IDQuOCAyLjggNy42YzAgOS05LjYgMTQuNy0xNy41IDEwLjVsLTg5LjktNDcuOWMtMTAuNy01LjctMTAuNy0yMS4xIDAtMjYuOGw4OS45LTQ3LjljNy45LTQuMiAxNy41IDEuNSAxNy41IDEwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluU3RhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em00MDcuNCA3NS41YzUtMTEuOC03LTIyLjUtMTkuMy0xOC43Yy0zOS43IDEyLjItODQuNSAxOS0xMzEuOCAxOXMtOTIuMS02LjgtMTMxLjgtMTljLTEyLjMtMy44LTI0LjMgNi45LTE5LjMgMTguN2MyNSA1OS4xIDgzLjIgMTAwLjUgMTUxLjEgMTAwLjVzMTI2LjItNDEuNCAxNTEuMS0xMDAuNXpNMTYwIDEyMGMtMy4xIDAtNS45IDEuOC03LjIgNC42bC0xNi42IDM0LjctMzguMSA1Yy0zLjEgLjQtNS42IDIuNS02LjYgNS41cy0uMSA2LjIgMi4xIDguM2wyNy45IDI2LjUtNyAzNy44Yy0uNiAzIC43IDYuMSAzLjIgNy45czUuOCAyIDguNSAuNkwxNjAgMjMyLjVsMzMuOCAxOC4zYzIuNyAxLjUgNiAxLjMgOC41LS42czMuNy00LjkgMy4yLTcuOWwtNy0zNy44TDIyNi40IDE3OGMyLjItMi4xIDMuMS01LjMgMi4xLTguM3MtMy41LTUuMS02LjYtNS41bC0zOC4xLTUtMTYuNi0zNC43Yy0xLjMtMi44LTQuMS00LjYtNy4yLTQuNnptMTkyIDBjLTMuMSAwLTUuOSAxLjgtNy4yIDQuNmwtMTYuNiAzNC43LTM4LjEgNWMtMy4xIC40LTUuNiAyLjUtNi42IDUuNXMtLjEgNi4yIDIuMSA4LjNsMjcuOSAyNi41LTcgMzcuOGMtLjYgMyAuNyA2LjEgMy4yIDcuOXM1LjggMiA4LjUgLjZMMzUyIDIzMi41bDMzLjggMTguM2MyLjcgMS41IDYgMS4zIDguNS0uNnMzLjctNC45IDMuMi03LjlsLTctMzcuOEw0MTguNCAxNzhjMi4yLTIuMSAzLjEtNS4zIDIuMS04LjNzLTMuNS01LjEtNi42LTUuNWwtMzguMS01LTE2LjYtMzQuN2MtMS4zLTIuOC00LjEtNC42LTcuMi00LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluVGVhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ4LjYgMzcxLjRDNTA2LjQgNDU0LjggNDE5LjkgNTEyIDMyMCA1MTJzLTE4Ni40LTU3LjItMjI4LjYtMTQwLjZjNC41LTIuOSA4LjctNi4zIDEyLjctMTAuM2M4LjEtOC4xIDEzLjItMTguNiAxNi41LTI2LjZjMy42LTguOCA2LjUtMTguNCA4LjgtMjcuNWM0LjYtMTguMiA3LjctMzcgOS4zLTQ4LjJjMy45LTI2LjUtMTguOC00OS4yLTQ1LjItNDUuNGMtNi44IC45LTE2LjIgMi40LTI2LjYgNC40Qzg1LjMgOTQuNSAxOTEuNiAwIDMyMCAwUzU1NC43IDk0LjUgNTczLjIgMjE3LjdjLTEwLjMtMi0xOS44LTMuNS0yNi42LTQuNGMtMjYuNS0zLjktNDkuMiAxOC44LTQ1LjIgNDUuNGMxLjYgMTEuMyA0LjYgMzAgOS4zIDQ4LjJjMi4zIDkuMSA1LjIgMTguOCA4LjggMjcuNWMzLjMgOC4xIDguNCAxOC41IDE2LjUgMjYuNmMzLjkgMy45IDguMiA3LjQgMTIuNyAxMC4zek0xMDcgMjU0LjFjLTMuMSAyMS41LTExLjQgNzAuMi0yNS41IDg0LjRjLS45IDEtMS45IDEuOC0yLjkgMi43QzYwIDM1Ni43IDMyIDM1NS41IDE0LjMgMzM3LjdjLTE4LjctMTguNy0xOS4xLTQ4LjgtLjctNjcuMmM4LjYtOC42IDMwLjEtMTUuMSA1MC41LTE5LjZjMTMtMi44IDI1LjUtNC44IDMzLjktNmM1LjQtLjggOS45IDMuNyA5IDl6bTQ1NC41IDg3LjFjLS44LS42LTEuNS0xLjMtMi4zLTJjLS4yLS4yLS41LS40LS43LS43Yy0xNC4xLTE0LjEtMjIuNS02Mi45LTI1LjUtODQuNGMtLjgtNS40IDMuNy05LjkgOS05YzEgLjEgMi4yIC4zIDMuMyAuNWM4LjIgMS4yIDE5LjIgMyAzMC42IDUuNWMyMC40IDQuNCA0MS45IDEwLjkgNTAuNSAxOS42YzE4LjQgMTguNCAxOCA0OC41LS43IDY3LjJjLTE3LjcgMTcuNy00NS43IDE5LTY0LjIgMy40em0tOTAuMS05LjdjNS0xMS44LTctMjIuNS0xOS4zLTE4LjdjLTM5LjcgMTIuMi04NC41IDE5LTEzMS44IDE5cy05Mi4xLTYuOC0xMzEuOC0xOWMtMTIuMy0zLjgtMjQuMyA2LjktMTkuMyAxOC43YzI1IDU5LjEgODMuMiAxMDAuNSAxNTEuMSAxMDAuNXMxMjYuMi00MS40IDE1MS4xLTEwMC41ek0yODEuNiAyMjguOGwwIDAgMCAwIDAgMGMyLjEgMi44IDUuNyAzLjkgOC45IDIuOHM1LjUtNC4xIDUuNS03LjZjMC0xNy45LTYuNy0zNS42LTE2LjYtNDguOGMtOS44LTEzLTIzLjktMjMuMi0zOS40LTIzLjJzLTI5LjYgMTAuMi0zOS40IDIzLjJDMTkwLjcgMTg4LjQgMTg0IDIwNi4xIDE4NCAyMjRjMCAzLjQgMi4yIDYuNSA1LjUgNy42czYuOSAwIDguOS0yLjhsMCAwIDAgMCAwIDAgLjItLjJjLjItLjIgLjQtLjUgLjctLjljLjYtLjggMS42LTIgMi44LTMuNGMyLjUtMi44IDYtNi42IDEwLjItMTAuM2M4LjgtNy44IDE4LjgtMTQgMjcuNy0xNHMxOC45IDYuMiAyNy43IDE0YzQuMiAzLjcgNy43IDcuNSAxMC4yIDEwLjNjMS4yIDEuNCAyLjIgMi42IDIuOCAzLjRjLjMgLjQgLjYgLjcgLjcgLjlsLjIgLjIgMCAwem0xNjAgMGwwIDAgMCAwYzIuMSAyLjggNS43IDMuOSA4LjkgMi44czUuNS00LjEgNS41LTcuNmMwLTE3LjktNi43LTM1LjYtMTYuNi00OC44Yy05LjgtMTMtMjMuOS0yMy4yLTM5LjQtMjMuMnMtMjkuNiAxMC4yLTM5LjQgMjMuMkMzNTAuNyAxODguNCAzNDQgMjA2LjEgMzQ0IDIyNGMwIDMuNCAyLjIgNi41IDUuNSA3LjZzNi45IDAgOC45LTIuOGwwIDAgMCAwIDAgMCAuMi0uMmMuMi0uMiAuNC0uNSAuNy0uOWMuNi0uOCAxLjYtMiAyLjgtMy40YzIuNS0yLjggNi02LjYgMTAuMi0xMC4zYzguOC03LjggMTguOC0xNCAyNy43LTE0czE4LjkgNi4yIDI3LjcgMTRjNC4yIDMuNyA3LjcgNy41IDEwLjIgMTAuM2MxLjIgMS40IDIuMiAyLjYgMi44IDMuNGMuMyAuNCAuNiAuNyAuNyAuOWwuMiAuMiAwIDAgMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlR3JpblRvbmd1ZVNxdWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NkMwIDM2OC45IDczLjEgNDY0LjcgMTc0LjUgNDk4LjhDMTY1LjMgNDg0IDE2MCA0NjYuNiAxNjAgNDQ4VjQwMC43Yy0yNC0xNy41LTQzLjEtNDEuNC01NC44LTY5LjJjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5YzEyLjMtMy44IDI0LjMgNi45IDE5LjMgMTguN2MtMTEuOCAyOC0zMS4xIDUyLTU1LjQgNjkuNlY0NDhjMCAxOC42LTUuMyAzNi0xNC41IDUwLjhDNDM4LjkgNDY0LjcgNTEyIDM2OC45IDUxMiAyNTZDNTEyIDExNC42IDM5Ny40IDAgMjU2IDBTMCAxMTQuNiAwIDI1NnpNMTE2IDE0MS4xYzAtOSA5LjYtMTQuNyAxNy41LTEwLjVsODkuOSA0Ny45YzEwLjcgNS43IDEwLjcgMjEuMSAwIDI2LjhsLTg5LjkgNDcuOWMtNy45IDQuMi0xNy41LTEuNS0xNy41LTEwLjVjMC0yLjggMS01LjUgMi44LTcuNmwzNi00My4yLTM2LTQzLjJjLTEuOC0yLjEtMi44LTQuOC0yLjgtNy42em0yNjIuNS0xMC41YzcuOS00LjIgMTcuNSAxLjUgMTcuNSAxMC41YzAgMi44LTEgNS41LTIuOCA3LjZsLTM2IDQzLjIgMzYgNDMuMmMxLjggMi4xIDIuOCA0LjggMi44IDcuNmMwIDktOS42IDE0LjctMTcuNSAxMC41bC04OS45LTQ3LjljLTEwLjctNS43LTEwLjctMjEuMSAwLTI2LjhsODkuOS00Ny45ek0zMjAgNDQ4VjQwMi42YzAtMTQuNy0xMS45LTI2LjYtMjYuNi0yNi42aC0yYy0xMS4zIDAtMjEuMSA3LjktMjMuNiAxOC45Yy0yLjggMTIuNi0yMC44IDEyLjYtMjMuNiAwYy0yLjUtMTEuMS0xMi4zLTE4LjktMjMuNi0xOC45aC0yYy0xNC43IDAtMjYuNiAxMS45LTI2LjYgMjYuNlY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUdyaW5Ub25ndWVXaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NC41IDQ5OC44QzczLjEgNDY0LjcgMCAzNjguOSAwIDI1NkMwIDExNC42IDExNC42IDAgMjU2IDBTNTEyIDExNC42IDUxMiAyNTZjMCAxMTIuOS03My4xIDIwOC43LTE3NC41IDI0Mi44QzM0Ni43IDQ4NCAzNTIgNDY2LjYgMzUyIDQ0OFY0MDEuMWMyNC4zLTE3LjUgNDMuNi00MS42IDU1LjQtNjkuNmM1LTExLjgtNy0yMi41LTE5LjMtMTguN2MtMzkuNyAxMi4yLTg0LjUgMTktMTMxLjggMTlzLTkyLjEtNi44LTEzMS44LTE5Yy0xMi4zLTMuOC0yNC4zIDYuOS0xOS4zIDE4LjdjMTEuNyAyNy44IDMwLjggNTEuNyA1NC44IDY5LjJWNDQ4YzAgMTguNiA1LjMgMzYgMTQuNSA1MC44em0yMC43LTI2NS4yYzUuMyA3LjEgMTUuMyA4LjUgMjIuNCAzLjJzOC41LTE1LjMgMy4yLTIyLjRjLTMwLjQtNDAuNS05MS4yLTQwLjUtMTIxLjYgMGMtNS4zIDcuMS0zLjkgMTcuMSAzLjIgMjIuNHMxNy4xIDMuOSAyMi40LTMuMmMxNy42LTIzLjUgNTIuOC0yMy41IDcwLjQgMHpNMzM2IDI3MmE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHpNMzIwIDQwMi42VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NHMtNjQtMjguNy02NC02NFY0MDIuNmMwLTE0LjcgMTEuOS0yNi42IDI2LjYtMjYuNmgyYzExLjMgMCAyMS4xIDcuOSAyMy42IDE4LjljMi44IDEyLjYgMjAuOCAxMi42IDIzLjYgMGMyLjUtMTEuMSAxMi4zLTE4LjkgMjMuNi0xOC45aDJjMTQuNyAwIDI2LjYgMTEuOSAyNi42IDI2LjZ6TTMzNiAxODRhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlR3JpblRvbmd1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NkMwIDM2OC45IDczLjEgNDY0LjcgMTc0LjUgNDk4LjhDMTY1LjMgNDg0IDE2MCA0NjYuNiAxNjAgNDQ4VjQwMC43Yy0yNC0xNy41LTQzLjEtNDEuNC01NC44LTY5LjJjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5YzEyLjMtMy44IDI0LjMgNi45IDE5LjMgMTguN2MtMTEuOCAyOC0zMS4xIDUyLTU1LjQgNjkuNlY0NDhjMCAxOC42LTUuMyAzNi0xNC41IDUwLjhDNDM4LjkgNDY0LjcgNTEyIDM2OC45IDUxMiAyNTZDNTEyIDExNC42IDM5Ny40IDAgMjU2IDBTMCAxMTQuNiAwIDI1NnptMTc2LjQtODBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMzIwIDQ0OFY0MDIuNmMwLTE0LjctMTEuOS0yNi42LTI2LjYtMjYuNmgtMmMtMTEuMyAwLTIxLjEgNy45LTIzLjYgMTguOWMtMi44IDEyLjYtMjAuOCAxMi42LTIzLjYgMGMtMi41LTExLjEtMTIuMy0xOC45LTIzLjYtMTguOWgtMmMtMTQuNyAwLTI2LjYgMTEuOS0yNi42IDI2LjZWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluV2lkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzg4LjEgMzEyLjhjMTIuMy0zLjggMjQuMyA2LjkgMTkuMyAxOC43QzM4Mi40IDM5MC42IDMyNC4yIDQzMiAyNTYuMyA0MzJzLTEyNi4yLTQxLjQtMTUxLjEtMTAwLjVjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5ek0yMDggMTkyYzAgMzUuMy0xNC4zIDY0LTMyIDY0cy0zMi0yOC43LTMyLTY0czE0LjMtNjQgMzItNjRzMzIgMjguNyAzMiA2NHptMTI4IDY0Yy0xNy43IDAtMzItMjguNy0zMi02NHMxNC4zLTY0IDMyLTY0czMyIDI4LjcgMzIgNjRzLTE0LjMgNjQtMzIgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzg4LjEgMzEyLjhjMTIuMy0zLjggMjQuMyA2LjkgMTkuMyAxOC43QzM4Mi40IDM5MC42IDMyNC4yIDQzMiAyNTYuMyA0MzJzLTEyNi4yLTQxLjQtMTUxLjEtMTAwLjVjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5em0tMTYuOS03OS4yYy0xNy42LTIzLjUtNTIuOC0yMy41LTcwLjQgMGMtNS4zIDcuMS0xNS4zIDguNS0yMi40IDMuMnMtOC41LTE1LjMtMy4yLTIyLjRjMzAuNC00MC41IDkxLjItNDAuNSAxMjEuNiAwYzUuMyA3LjEgMy45IDE3LjEtMy4yIDIyLjRzLTE3LjEgMy45LTIyLjQtMy4yek0xNzYuNCAxNzZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlR3JpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzg4LjEgMzEyLjhjMTIuMy0zLjggMjQuMyA2LjkgMTkuMyAxOC43QzM4Mi40IDM5MC42IDMyNC4yIDQzMiAyNTYuMyA0MzJzLTEyNi4yLTQxLjQtMTUxLjEtMTAwLjVjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5ek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUtpc3NCZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyem00OC43LTE5OC4zYzQuMyA1LjEgNy4zIDExLjQgNy4zIDE4LjNzLTMuMSAxMy4yLTcuMyAxOC4zYy00LjMgNS4yLTEwLjEgOS43LTE2LjcgMTMuNGMtMi43IDEuNS01LjcgMy04LjcgNC4zYzMuMSAxLjMgNiAyLjcgOC43IDQuM2M2LjYgMy43IDEyLjUgOC4yIDE2LjcgMTMuNGM0LjMgNS4xIDcuMyAxMS40IDcuMyAxOC4zcy0zLjEgMTMuMi03LjMgMTguM2MtNC4zIDUuMi0xMC4xIDkuNy0xNi43IDEzLjRDMjc0LjcgNDQzLjEgMjU3LjQgNDQ4IDI0MCA0NDhjLTMuNiAwLTYuOC0yLjUtNy43LTZzLjYtNy4yIDMuOC05bDAgMCAwIDAgMCAwIDAgMCAuMi0uMWMuMi0uMSAuNS0uMyAuOS0uNWMuOC0uNSAyLTEuMiAzLjQtMi4xYzIuOC0xLjkgNi41LTQuNSAxMC4yLTcuNmMzLjctMy4xIDcuMi02LjYgOS42LTEwLjFjMi41LTMuNSAzLjUtNi40IDMuNS04LjZzLTEtNS0zLjUtOC42Yy0yLjUtMy41LTUuOS02LjktOS42LTEwLjFjLTMuNy0zLjEtNy40LTUuNy0xMC4yLTcuNmMtMS40LS45LTIuNi0xLjYtMy40LTIuMWMtLjQtLjItLjctLjQtLjktLjVsLS4yLS4xIDAgMCAwIDAgMCAwYy0yLjUtMS40LTQuMS00LjEtNC4xLTdzMS42LTUuNiA0LjEtN2wwIDAgMCAwIDAgMCAwIDAgMCAwIC4yLS4xIC4zLS4yIC42LS40Yy44LS41IDItMS4yIDMuNC0yLjFjMi44LTEuOSA2LjUtNC41IDEwLjItNy42YzMuNy0zLjEgNy4yLTYuNiA5LjYtMTAuMWMyLjUtMy41IDMuNS02LjQgMy41LTguNnMtMS01LTMuNS04LjZjLTIuNS0zLjUtNS45LTYuOS05LjYtMTAuMWMtMy43LTMuMS03LjQtNS43LTEwLjItNy42Yy0xLjQtLjktMi42LTEuNi0zLjQtMi4xbC0uNC0uMy0uNS0uMy0uMi0uMSAwIDAgMCAwIDAgMGMtMy4yLTEuOC00LjctNS41LTMuOC05czQuMS02IDcuNy02YzE3LjQgMCAzNC43IDQuOSA0Ny45IDEyLjNjNi42IDMuNyAxMi41IDguMiAxNi43IDEzLjR6bS04Ny4xLTg0LjlsMCAwIDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMHptMTYwIDBsMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwIDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUtpc3NXaW5rSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk4IDMzOS43YzkuMS0yNi4yIDE0LTU0LjQgMTQtODMuN0M1MTIgMTE0LjYgMzk3LjQgMCAyNTYgMFMwIDExNC42IDAgMjU2UzExNC42IDUxMiAyNTYgNTEyYzM1LjQgMCA2OS4xLTcuMiA5OS43LTIwLjJjLTQuOC01LjUtOC41LTEyLjItMTAuNC0xOS43bC0yMi45LTg5LjNjLTEwLTM5IDExLjgtODAuOSA1MS44LTkyLjFjMzcuMi0xMC40IDczLjggMTAuMSA4Ny41IDQ0YzEyLjctMS42IDI1LjEgLjQgMzYuMiA1ek0yOTYgMzMyYzAgNi45LTMuMSAxMy4yLTcuMyAxOC4zYy00LjMgNS4yLTEwLjEgOS43LTE2LjcgMTMuNGMtMi43IDEuNS01LjcgMy04LjcgNC4zYzMuMSAxLjMgNiAyLjcgOC43IDQuM2M2LjYgMy43IDEyLjUgOC4yIDE2LjcgMTMuNGM0LjMgNS4xIDcuMyAxMS40IDcuMyAxOC4zcy0zLjEgMTMuMi03LjMgMTguM2MtNC4zIDUuMi0xMC4xIDkuNy0xNi43IDEzLjRDMjU4LjcgNDQzLjEgMjQxLjQgNDQ4IDIyNCA0NDhjLTMuNiAwLTYuOC0yLjUtNy43LTZzLjYtNy4yIDMuOC05bDAgMCAwIDAgMCAwIDAgMCAuMi0uMWMuMi0uMSAuNS0uMyAuOS0uNWMuOC0uNSAyLTEuMiAzLjQtMi4xYzIuOC0xLjkgNi41LTQuNSAxMC4yLTcuNmMzLjctMy4xIDcuMi02LjYgOS42LTEwLjFjMi41LTMuNSAzLjUtNi40IDMuNS04LjZzLTEtNS0zLjUtOC42Yy0yLjUtMy41LTUuOS02LjktOS42LTEwLjFjLTMuNy0zLjEtNy40LTUuNy0xMC4yLTcuNmMtMS40LS45LTIuNi0xLjYtMy40LTIuMWwtLjYtLjQtLjMtLjItLjItLjEgMCAwIDAgMCAwIDBjLTIuNS0xLjQtNC4xLTQuMS00LjEtN3MxLjYtNS42IDQuMS03bDAgMCAwIDAgMCAwIDAgMCAwIDAgLjItLjFjLjItLjEgLjUtLjMgLjktLjVjLjgtLjUgMi0xLjIgMy40LTIuMWMyLjgtMS45IDYuNS00LjUgMTAuMi03LjZjMy43LTMuMSA3LjItNi42IDkuNi0xMC4xYzIuNS0zLjUgMy41LTYuNCAzLjUtOC42cy0xLTUtMy41LTguNmMtMi41LTMuNS01LjktNi45LTkuNi0xMC4xYy0zLjctMy4xLTcuNC01LjctMTAuMi03LjZjLTEuNC0uOS0yLjYtMS42LTMuNC0yLjFjLS40LS4yLS43LS40LS45LS41bC0uMi0uMSAwIDAgMCAwIDAgMGMtMy4yLTEuOC00LjctNS41LTMuOC05czQuMS02IDcuNy02YzE3LjQgMCAzNC43IDQuOSA0Ny45IDEyLjNjNi42IDMuNyAxMi41IDguMiAxNi43IDEzLjRjNC4zIDUuMSA3LjMgMTEuNCA3LjMgMTguM3pNMTc2LjQgMTc2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTk0LjggNTcuNmMtMTcuNi0yMy41LTUyLjgtMjMuNS03MC40IDBjLTUuMyA3LjEtMTUuMyA4LjUtMjIuNCAzLjJzLTguNS0xNS4zLTMuMi0yMi40YzMwLjQtNDAuNSA5MS4yLTQwLjUgMTIxLjYgMGM1LjMgNy4xIDMuOSAxNy4xLTMuMiAyMi40cy0xNy4xIDMuOS0yMi40LTMuMnpNNDM0IDM1Mi4zYy02LTIzLjItMjguOC0zNy01MS4xLTMwLjhzLTM1LjQgMzAuMS0yOS41IDUzLjRsMjIuOSA4OS4zYzIuMiA4LjcgMTEuMiAxMy45IDE5LjggMTEuNGw4NC45LTIzLjhjMjIuMi02LjIgMzUuNC0zMC4xIDI5LjUtNTMuNHMtMjguOC0zNy01MS4xLTMwLjhsLTIwLjIgNS42LTUuNC0yMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUtpc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTQ4LjctMTk4LjNjNC4zIDUuMSA3LjMgMTEuNCA3LjMgMTguM3MtMy4xIDEzLjItNy4zIDE4LjNjLTQuMyA1LjItMTAuMSA5LjctMTYuNyAxMy40Yy0yLjcgMS41LTUuNyAzLTguNyA0LjNjMy4xIDEuMyA2IDIuNyA4LjcgNC4zYzYuNiAzLjcgMTIuNSA4LjIgMTYuNyAxMy40YzQuMyA1LjEgNy4zIDExLjQgNy4zIDE4LjNzLTMuMSAxMy4yLTcuMyAxOC4zYy00LjMgNS4yLTEwLjEgOS43LTE2LjcgMTMuNEMyNzQuNyA0NDMuMSAyNTcuNCA0NDggMjQwIDQ0OGMtMy42IDAtNi44LTIuNS03LjctNnMuNi03LjIgMy44LTlsMCAwIDAgMCAwIDAgMCAwIC4yLS4xYy4yLS4xIC41LS4zIC45LS41Yy44LS41IDItMS4yIDMuNC0yLjFjMi44LTEuOSA2LjUtNC41IDEwLjItNy42YzMuNy0zLjEgNy4yLTYuNiA5LjYtMTAuMWMyLjUtMy41IDMuNS02LjQgMy41LTguNnMtMS01LTMuNS04LjZjLTIuNS0zLjUtNS45LTYuOS05LjYtMTAuMWMtMy43LTMuMS03LjQtNS43LTEwLjItNy42Yy0xLjQtLjktMi42LTEuNi0zLjQtMi4xYy0uNC0uMi0uNy0uNC0uOS0uNWwtLjItLjEgMCAwIDAgMCAwIDBjLTIuNS0xLjQtNC4xLTQuMS00LjEtN3MxLjYtNS42IDQuMS03bDAgMCAwIDAgMCAwIDAgMCAwIDAgLjItLjEgLjMtLjIgLjYtLjRjLjgtLjUgMi0xLjIgMy40LTIuMWMyLjgtMS45IDYuNS00LjUgMTAuMi03LjZjMy43LTMuMSA3LjItNi42IDkuNi0xMC4xYzIuNS0zLjUgMy41LTYuNCAzLjUtOC42cy0xLTUtMy41LTguNmMtMi41LTMuNS01LjktNi45LTkuNi0xMC4xYy0zLjctMy4xLTcuNC01LjctMTAuMi03LjZjLTEuNC0uOS0yLjYtMS42LTMuNC0yLjFsLS40LS4zLS41LS4zLS4yLS4xIDAgMCAwIDAgMCAwYy0zLjItMS44LTQuNy01LjUtMy44LTlzNC4xLTYgNy43LTZjMTcuNCAwIDM0LjcgNC45IDQ3LjkgMTIuM2M2LjYgMy43IDEyLjUgOC4yIDE2LjcgMTMuNHpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VMYXVnaEJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTk2LjggMzE0LjFjLTMuOC0xMy43IDcuNC0yNi4xIDIxLjYtMjYuMUgzOTMuNmMxNC4yIDAgMjUuNSAxMi40IDIxLjYgMjYuMUMzOTYuMiAzODIgMzMyLjEgNDMyIDI1NiA0MzJzLTE0MC4yLTUwLTE1OS4yLTExNy45ek0yMTcuNiAyMTIuOGwwIDAgMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwem0xNjAgMGwwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDAgMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlTGF1Z2hTcXVpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTk2LjggMzE0LjFjLTMuOC0xMy43IDcuNC0yNi4xIDIxLjYtMjYuMUgzOTMuNmMxNC4yIDAgMjUuNSAxMi40IDIxLjYgMjYuMUMzOTYuMiAzODIgMzMyLjEgNDMyIDI1NiA0MzJzLTE0MC4yLTUwLTE1OS4yLTExNy45em0zNi43LTE5OS40bDg5LjkgNDcuOWMxMC43IDUuNyAxMC43IDIxLjEgMCAyNi44bC04OS45IDQ3LjljLTcuOSA0LjItMTcuNS0xLjUtMTcuNS0xMC41YzAtMi44IDEtNS41IDIuOC03LjZsMzYtNDMuMi0zNi00My4yYy0xLjgtMi4xLTIuOC00LjgtMi44LTcuNmMwLTkgOS42LTE0LjcgMTcuNS0xMC41ek0zOTYgMTI1LjFjMCAyLjgtMSA1LjUtMi44IDcuNmwtMzYgNDMuMiAzNiA0My4yYzEuOCAyLjEgMi44IDQuOCAyLjggNy42YzAgOS05LjYgMTQuNy0xNy41IDEwLjVsLTg5LjktNDcuOWMtMTAuNy01LjctMTAuNy0yMS4xIDAtMjYuOGw4OS45LTQ3LjljNy45LTQuMiAxNy41IDEuNSAxNy41IDEwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VMYXVnaFdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTk2LjggMzE0LjFjLTMuOC0xMy43IDcuNC0yNi4xIDIxLjYtMjYuMUgzOTMuNmMxNC4yIDAgMjUuNSAxMi40IDIxLjYgMjYuMUMzOTYuMiAzODIgMzMyLjEgNDMyIDI1NiA0MzJzLTE0MC4yLTUwLTE1OS4yLTExNy45ek0xNDQuNCAxOTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTU2LjQgMjUuNmMtNS4zIDcuMS0xNS4zIDguNS0yMi40IDMuMnMtOC41LTE1LjMtMy4yLTIyLjRjMzAuNC00MC41IDkxLjItNDAuNSAxMjEuNiAwYzUuMyA3LjEgMy45IDE3LjEtMy4yIDIyLjRzLTE3LjEgMy45LTIyLjQtMy4yYy0xNy42LTIzLjUtNTIuOC0yMy41LTcwLjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUxhdWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek05Ni44IDMxNC4xYy0zLjgtMTMuNyA3LjQtMjYuMSAyMS42LTI2LjFIMzkzLjZjMTQuMiAwIDI1LjUgMTIuNCAyMS42IDI2LjFDMzk2LjIgMzgyIDMzMi4xIDQzMiAyNTYgNDMycy0xNDAuMi01MC0xNTkuMi0xMTcuOXpNMTQ0LjQgMTkyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VNZWhCbGFuayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTIwOC40LTQ4YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTEyOCAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VNZWggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE3Ni40IDE3NmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTEyOCAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek0xNjAgMzM2SDM1MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxNjBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VSb2xsaW5nRXllcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTkyIDM2OEgzMjBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTkyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em0zMi0xNDRjMCAzNS4zLTI4LjcgNjQtNjQgNjRzLTY0LTI4LjctNjQtNjRjMC0yNiAxNS41LTQ4LjQgMzcuOC01OC40Yy0zLjcgNS4yLTUuOCAxMS42LTUuOCAxOC40YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC02LjktMi4yLTEzLjItNS44LTE4LjRDMjA4LjUgMTc1LjYgMjI0IDE5OCAyMjQgMjI0em0xMjggNjRjLTM1LjMgMC02NC0yOC43LTY0LTY0YzAtMjYgMTUuNS00OC40IDM3LjgtNTguNGMtMy43IDUuMi01LjggMTEuNi01LjggMTguNGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtNi45LTIuMi0xMy4yLTUuOC0xOC40QzQwMC41IDE3NS42IDQxNiAxOTggNDE2IDIyNGMwIDM1LjMtMjguNyA2NC02NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZVNhZENyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgNDkzLjRjLTI5LjYgMTItNjIuMSAxOC42LTk2IDE4LjZzLTY2LjQtNi42LTk2LTE4LjZWMjg4YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjQ3Ny44QzUxLjUgNDMzLjUgMCAzNTAuOCAwIDI1NkMwIDExNC42IDExNC42IDAgMjU2IDBTNTEyIDExNC42IDUxMiAyNTZjMCA5NC44LTUxLjUgMTc3LjUtMTI4IDIyMS44VjI4OGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNlY0OTMuNHpNMTk1LjIgMjMzLjZjNS4zIDcuMSAxNS4zIDguNSAyMi40IDMuMnM4LjUtMTUuMyAzLjItMjIuNGMtMzAuNC00MC41LTkxLjItNDAuNS0xMjEuNiAwYy01LjMgNy4xLTMuOSAxNy4xIDMuMiAyMi40czE3LjEgMy45IDIyLjQtMy4yYzE3LjYtMjMuNSA1Mi44LTIzLjUgNzAuNCAwem0xMjEuNiAwYzE3LjYtMjMuNSA1Mi44LTIzLjUgNzAuNCAwYzUuMyA3LjEgMTUuMyA4LjUgMjIuNCAzLjJzOC41LTE1LjMgMy4yLTIyLjRjLTMwLjQtNDAuNS05MS4yLTQwLjUtMTIxLjYgMGMtNS4zIDcuMS0zLjkgMTcuMSAzLjIgMjIuNHMxNy4xIDMuOSAyMi40LTMuMnpNMjA4IDMzNnYzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4VjMzNmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZVNhZFRlYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMEEyNTYgMjU2IDAgMSAwIDAgMjU2em0yNDAgODBjMC04LjggNy4yLTE2IDE2LTE2YzQ1IDAgODUuNiAyMC41IDExNS43IDUzLjFjNiA2LjUgNS42IDE2LjYtLjkgMjIuNnMtMTYuNiA1LjYtMjIuNi0uOWMtMjUtMjcuMS01Ny40LTQyLjktOTIuMy00Mi45Yy04LjggMC0xNi03LjItMTYtMTZ6bS04MCA4MGMtMjYuNSAwLTQ4LTIxLTQ4LTQ3YzAtMjAgMjguNi02MC40IDQxLjYtNzcuN2MzLjItNC40IDkuNi00LjQgMTIuOCAwQzE3OS42IDMwOC42IDIwOCAzNDkgMjA4IDM2OWMwIDI2LTIxLjUgNDctNDggNDd6TTM2Ny42IDIwOGEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwem0tMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZVNtaWxlQmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTY0LjEgMzI1LjVDMTgyIDM0Ni4yIDIxMi42IDM2OCAyNTYgMzY4czc0LTIxLjggOTEuOS00Mi41YzUuOC02LjcgMTUuOS03LjQgMjIuNi0xLjZzNy40IDE1LjkgMS42IDIyLjZDMzQ5LjggMzcyLjEgMzExLjEgNDAwIDI1NiA0MDBzLTkzLjgtMjcuOS0xMTYuMS01My41Yy01LjgtNi43LTUuMS0xNi44IDEuNi0yMi42czE2LjgtNS4xIDIyLjYgMS42em01My41LTk2LjdsMCAwIDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMHptMTYwIDBsMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwIDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZVNtaWxlV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTY0LjEgMzI1LjVDMTgyIDM0Ni4yIDIxMi42IDM2OCAyNTYgMzY4czc0LTIxLjggOTEuOS00Mi41YzUuOC02LjcgMTUuOS03LjQgMjIuNi0xLjZzNy40IDE1LjkgMS42IDIyLjZDMzQ5LjggMzcyLjEgMzExLjEgNDAwIDI1NiA0MDBzLTkzLjgtMjcuOS0xMTYuMS01My41Yy01LjgtNi43LTUuMS0xNi44IDEuNi0yMi42czE2LjgtNS4xIDIyLjYgMS42ek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTU2LjQgMjUuNmMtNS4zIDcuMS0xNS4zIDguNS0yMi40IDMuMnMtOC41LTE1LjMtMy4yLTIyLjRjMzAuNC00MC41IDkxLjItNDAuNSAxMjEuNiAwYzUuMyA3LjEgMy45IDE3LjEtMy4yIDIyLjRzLTE3LjEgMy45LTIyLjQtMy4yYy0xNy42LTIzLjUtNTIuOC0yMy41LTcwLjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZVNtaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNjQuMSAzMjUuNUMxODIgMzQ2LjIgMjEyLjYgMzY4IDI1NiAzNjhzNzQtMjEuOCA5MS45LTQyLjVjNS44LTYuNyAxNS45LTcuNCAyMi42LTEuNnM3LjQgMTUuOSAxLjYgMjIuNkMzNDkuOCAzNzIuMSAzMTEuMSA0MDAgMjU2IDQwMHMtOTMuOC0yNy45LTExNi4xLTUzLjVjLTUuOC02LjctNS4xLTE2LjggMS42LTIyLjZzMTYuOC01LjEgMjIuNiAxLjZ6TTE0NC40IDIwOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlU3VycHJpc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE3Ni40IDE3NmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTEyOCAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek0yNTYgMjg4YTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlVGlyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE2NC43IDMyOC43YzIyLTIyIDUzLjktNDAuNyA5MS4zLTQwLjdzNjkuMyAxOC43IDkxLjMgNDAuN2MxMS4xIDExLjEgMjAuMSAyMy40IDI2LjQgMzUuNGM2LjIgMTEuNyAxMC4zIDI0LjQgMTAuMyAzNS45YzAgNS4yLTIuNiAxMC4yLTYuOSAxMy4ycy05LjggMy43LTE0LjcgMS44bC0yMC41LTcuN2MtMjYuOS0xMC4xLTU1LjUtMTUuMy04NC4zLTE1LjNoLTMuMmMtMjguOCAwLTU3LjMgNS4yLTg0LjMgMTUuM0wxNDkuNiA0MTVjLTQuOSAxLjgtMTAuNCAxLjItMTQuNy0xLjhzLTYuOS03LjktNi45LTEzLjJjMC0xMS42IDQuMi0yNC4yIDEwLjMtMzUuOWM2LjMtMTIgMTUuMy0yNC4zIDI2LjQtMzUuNHptLTMxLjItMTgybDg5LjkgNDcuOWMxMC43IDUuNyAxMC43IDIxLjEgMCAyNi44bC04OS45IDQ3LjljLTcuOSA0LjItMTcuNS0xLjUtMTcuNS0xMC41YzAtMi44IDEtNS41IDIuOC03LjZsMzYtNDMuMi0zNi00My4yYy0xLjgtMi4xLTIuOC00LjgtMi44LTcuNmMwLTkgOS42LTE0LjcgMTcuNS0xMC41ek0zOTYgMTU3LjFjMCAyLjgtMSA1LjUtMi44IDcuNmwtMzYgNDMuMiAzNiA0My4yYzEuOCAyLjEgMi44IDQuOCAyLjggNy42YzAgOS05LjYgMTQuNy0xNy41IDEwLjVsLTg5LjktNDcuOWMtMTAuNy01LjctMTAuNy0yMS4xIDAtMjYuOGw4OS45LTQ3LjljNy45LTQuMiAxNy41IDEuNSAxNy41IDEwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTguNiAwYy0xLjcgMC0zLjQgLjEtNS4xIC41QzE2OCAxNyAxMTUuNiAxMDIuMyAxMzAuNSAxODkuM2MyLjkgMTcgOC40IDMyLjkgMTUuOSA0Ny40TDMyIDIyNEgyOS40QzEzLjIgMjI0IDAgMjM3LjIgMCAyNTMuNGMwIDEuNyAuMSAzLjQgLjUgNS4xQzE3IDM0NCAxMDIuMyAzOTYuNCAxODkuMyAzODEuNWMxNy0yLjkgMzIuOS04LjQgNDcuNC0xNS45TDIyNCA0ODB2Mi42YzAgMTYuMiAxMy4yIDI5LjQgMjkuNCAyOS40YzEuNyAwIDMuNC0uMSA1LjEtLjVDMzQ0IDQ5NSAzOTYuNCA0MDkuNyAzODEuNSAzMjIuN2MtMi45LTE3LTguNC0zMi45LTE1LjktNDcuNEw0ODAgMjg4aDIuNmMxNi4yIDAgMjkuNC0xMy4yIDI5LjQtMjkuNGMwLTEuNy0uMS0zLjQtLjUtNS4xQzQ5NSAxNjggNDA5LjcgMTE1LjYgMzIyLjcgMTMwLjVjLTE3IDIuOS0zMi45IDguNC00Ny40IDE1LjlMMjg4IDMyVjI5LjRDMjg4IDEzLjIgMjc0LjggMCAyNTguNiAwek0yNTYgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmF1Y2V0RHJpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0NGw5Ni0xMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwyNTYgODRsLTMxLTMuOS0xLS4xLTEgLjFMMTkyIDg0IDk2IDk2Qzc4LjMgOTYgNjQgODEuNyA2NCA2NHMxNC4zLTMyIDMyLTMybDk2IDEyVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0wIDIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg5NmwyMi42LTIyLjZjNi02IDE0LjEtOS40IDIyLjYtOS40SDE5MlYxMTYuMmwzMi00IDMyIDRWMTYwaDE4LjdjOC41IDAgMTYuNiAzLjQgMjIuNiA5LjRMMzIwIDE5MmgzMmM4OC40IDAgMTYwIDcxLjYgMTYwIDE2MGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0MTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMycy0xNC4zLTMyLTMyLTMySDMxNS45Yy0yMC4yIDI5LTUzLjkgNDgtOTEuOSA0OHMtNzEuNy0xOS05MS45LTQ4SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyMjR6TTQzNi44IDQyMy40YzEuOS00LjUgNi4zLTcuNCAxMS4yLTcuNHM5LjIgMi45IDExLjIgNy40bDE4LjIgNDIuNGMxLjggNC4xIDIuNyA4LjYgMi43IDEzLjFWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMydi0xLjJjMC00LjUgLjktOC45IDIuNy0xMy4xbDE4LjItNDIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmF1Y2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA5NnYxMkw5NiA5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw5Ni0xMiAzMS0zLjkgMS0uMSAxIC4xIDMxIDMuOSA5NiAxMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtOTYgMTJWOTZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ6TTMyIDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJIMTMyLjFjMjAuMiAyOSA1My45IDQ4IDkxLjkgNDhzNzEuNy0xOSA5MS45LTQ4SDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyYzAtODguNC03MS42LTE2MC0xNjAtMTYwSDMyMGwtMjIuNi0yMi42Yy02LTYtMTQuMS05LjQtMjIuNi05LjRIMjU2VjE4MC4ybC0zMi00LTMyIDRWMjI0SDE3My4zYy04LjUgMC0xNi42IDMuNC0yMi42IDkuNEwxMjggMjU2SDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDY0djk2aDY0VjY0SDM4Ni43TDQxNiA5My4zVjE2MGg2NFY5My4zYzAtMTctNi43LTMzLjMtMTguNy00NS4zTDQzMiAxOC43QzQyMCA2LjcgNDAzLjcgMCAzODYuNyAwSDE5MmMtMzUuMyAwLTY0IDI4LjctNjQgNjR6TTAgMTYwVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2NGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem00ODAgMzJIMTI4VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMyek0yNTYgMjU2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptOTYgMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMzIgOTZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0yMjQgNDE2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlYXRoZXJQb2ludGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3OC41IDIxNS42TDIzIDQ3MWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDc0LjgtNzQuOGM3LjQgNC42IDE1LjMgOC4yIDIzLjggMTAuNUMyMDAuMyA0NTIuOCAyNzAgNDU0LjUgMzM4IDQwOS40YzEyLjItOC4xIDUuOC0yNS40LTguOC0yNS40bC0xNi4xIDBjLTUuMSAwLTkuMi00LjEtOS4yLTkuMmMwLTQuMSAyLjctNy42IDYuNS04LjhsOTcuNy0yOS4zYzMuNC0xIDYuNC0zLjEgOC40LTYuMWM0LjQtNi40IDguNi0xMi45IDEyLjYtMTkuNmM2LjItMTAuMy0xLjUtMjMtMTMuNS0yM2wtMzguNiAwYy01LjEgMC05LjItNC4xLTkuMi05LjJjMC00LjEgMi43LTcuNiA2LjUtOC44bDgwLjktMjQuM2M0LjYtMS40IDguNC00LjggMTAuMi05LjNDNDk0LjUgMTYzIDUwNy44IDg2LjEgNTExLjkgMzYuOGMuOC05LjktMy0xOS42LTEwLTI2LjZzLTE2LjctMTAuOC0yNi42LTEwQzM5MS41IDcgMjI4LjUgNDAuNSAxMzcuNCAxMzEuNkM1Ny4zIDIxMS43IDU2LjcgMzAyLjMgNzEuMyAzNTYuNGMyLjEgNy45IDEyIDkuNiAxNy44IDMuOEwyNTMuNiAxOTUuOGM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMGM1LjQgNS40IDYuMSAxMy42IDIuMiAxOS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGZWF0aGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3OC41IDIxNS42TDIzIDQ3MWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDU3LTU3aDY4YzQ5LjcgMCA5Ny45LTE0LjQgMTM5LTQxYzExLjEtNy4yIDUuNS0yMy03LjgtMjNjLTUuMSAwLTkuMi00LjEtOS4yLTkuMmMwLTQuMSAyLjctNy42IDYuNS04LjhsODEtMjQuM2MyLjUtLjggNC44LTIuMSA2LjctNGwyMi40LTIyLjRjMTAuMS0xMC4xIDIuOS0yNy4zLTExLjMtMjcuM2wtMzIuMiAwYy01LjEgMC05LjItNC4xLTkuMi05LjJjMC00LjEgMi43LTcuNiA2LjUtOC44bDExMi0zMy42YzQtMS4yIDcuNC0zLjkgOS4zLTcuN0M1MDYuNCAyMDcuNiA1MTIgMTg0LjEgNTEyIDE2MGMwLTQxLTE2LjMtODAuMy00NS4zLTEwOS4zbC01LjUtNS41QzQzMi4zIDE2LjMgMzkzIDAgMzUyIDBzLTgwLjMgMTYuMy0xMDkuMyA0NS4zTDEzOSAxNDlDOTEgMTk3IDY0IDI2Mi4xIDY0IDMzMHY1NS4zTDI1My42IDE5NS44YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwYzUuNCA1LjQgNi4xIDEzLjYgMi4yIDE5Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlcnJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwSDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMmg3NS4xYzIwLjYgMCAzMS42IDI0LjMgMTguMSAzOS44TDQ1NiA5NkgxMjBMOTguOCA3MS44Qzg1LjMgNTYuMyA5Ni4zIDMyIDExNi45IDMySDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNOTYgMTI4SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMlYyODMuNWMwIDEzLjMtNC4yIDI2LjMtMTEuOSAzNy4ybC01MS40IDcxLjljLTEuOSAxLjEtMy43IDIuMi01LjUgMy41Yy0xNS41IDEwLjctMzQgMTgtNTEgMTkuOUgzNzUuNmMtMTcuMS0xLjgtMzUtOS01MC44LTE5LjljLTIyLjEtMTUuNS01MS42LTE1LjUtNzMuNyAwYy0xNC44IDEwLjItMzIuNSAxOC01MC42IDE5LjlIMTgzLjljLTE3LTEuOC0zNS42LTkuMi01MS0xOS45Yy0xLjgtMS4zLTMuNy0yLjQtNS42LTMuNUw3NS45IDMyMC43QzY4LjIgMzA5LjggNjQgMjk2LjggNjQgMjgzLjVWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0zMiA2NHY5Nkg0NDhWMTkySDEyOHpNMzA2LjUgNDIxLjlDMzI5IDQzNy40IDM1Ni41IDQ0OCAzODQgNDQ4YzI2LjkgMCA1NS4zLTEwLjggNzcuNC0yNi4xbDAgMGMxMS45LTguNSAyOC4xLTcuOCAzOS4yIDEuN2MxNC40IDExLjkgMzIuNSAyMSA1MC42IDI1LjJjMTcuMiA0IDI3LjkgMjEuMiAyMy45IDM4LjRzLTIxLjIgMjcuOS0zOC40IDIzLjljLTI0LjUtNS43LTQ0LjktMTYuNS01OC4yLTI1QzQ0OS41IDUwMS43IDQxNyA1MTIgMzg0IDUxMmMtMzEuOSAwLTYwLjYtOS45LTgwLjQtMTguOWMtNS44LTIuNy0xMS4xLTUuMy0xNS42LTcuN2MtNC41IDIuNC05LjcgNS4xLTE1LjYgNy43Yy0xOS44IDktNDguNSAxOC45LTgwLjQgMTguOWMtMzMgMC02NS41LTEwLjMtOTQuNS0yNS44Yy0xMy40IDguNC0zMy43IDE5LjMtNTguMiAyNWMtMTcuMiA0LTM0LjQtNi43LTM4LjQtMjMuOXM2LjctMzQuNCAyMy45LTM4LjRjMTguMS00LjIgMzYuMi0xMy4zIDUwLjYtMjUuMmMxMS4xLTkuNCAyNy4zLTEwLjEgMzkuMi0xLjdsMCAwQzEzNi43IDQzNy4yIDE2NS4xIDQ0OCAxOTIgNDQ4YzI3LjUgMCA1NS0xMC42IDc3LjUtMjYuMWMxMS4xLTcuOSAyNS45LTcuOSAzNyAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNMjE2IDIzMlYzMzQuMWwzMS0zMWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTcyIDcyYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtNzItNzJjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwzMSAzMVYyMzJjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek0yMTYgNDA4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjMwNS45bC0zMSAzMWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw3Mi03MmM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw3MiA3MmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC0zMS0zMVY0MDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVBdWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6bTIgMjI2LjNjMzcuMSAyMi40IDYyIDYzLjEgNjIgMTA5LjdzLTI0LjkgODcuMy02MiAxMDkuN2MtNy42IDQuNi0xNy40IDIuMS0yMi01LjRzLTIuMS0xNy40IDUuNC0yMkMyNjkuNCA0MDEuNSAyODggMzcwLjkgMjg4IDMzNnMtMTguNi02NS41LTQ2LjUtODIuM2MtNy42LTQuNi0xMC0xNC40LTUuNC0yMnMxNC40LTEwIDIyLTUuNHptLTkxLjkgMzAuOWM2IDIuNSA5LjkgOC4zIDkuOSAxNC44VjQwMGMwIDYuNS0zLjkgMTIuMy05LjkgMTQuOHMtMTIuOSAxLjEtMTcuNC0zLjVMMTEzLjQgMzc2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMzEyYzAtOC44IDcuMi0xNiAxNi0xNmgzMy40bDM1LjMtMzUuM2M0LjYtNC42IDExLjUtNS45IDE3LjQtMy41em01MSAzNC45YzYuNi01LjkgMTYuNy01LjMgMjIuNiAxLjNDMjQ5LjggMzA0LjYgMjU2IDMxOS42IDI1NiAzMzZzLTYuMiAzMS40LTE2LjMgNDIuN2MtNS45IDYuNi0xNiA3LjEtMjIuNiAxLjNzLTcuMS0xNi0xLjMtMjIuNmM1LjEtNS43IDguMS0xMy4xIDguMS0yMS4zcy0zLjEtMTUuNy04LjEtMjEuM2MtNS45LTYuNi01LjMtMTYuNyAxLjMtMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUNpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDIyNFYxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzg0djM4LjZDMzEwLjEgMjE5LjUgMjU2IDI4Ny40IDI1NiAzNjhjMCA1OS4xIDI5LjEgMTExLjMgNzMuNyAxNDMuM2MtMy4yIC41LTYuNCAuNy05LjcgLjdINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0em0zODQgNjRIMjU2VjBMMzg0IDEyOHpNMjg4IDM2OGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0yMTEuMy00My4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw0MTYgMzg1LjRsLTI4LjctMjguN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNmw0MCA0MGM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGw3Mi03MmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUNpcmNsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDIyNFYxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzg0djM4LjZDMzEwLjEgMjE5LjUgMjU2IDI4Ny40IDI1NiAzNjhjMCA1OS4xIDI5LjEgMTExLjMgNzMuNyAxNDMuM2MtMy4yIC41LTYuNCAuNy05LjcgLjdINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0em0zODQgNjRIMjU2VjBMMzg0IDEyOHptNDggOTZhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em0wIDI0MGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTAtMTkyYy04LjggMC0xNiA3LjItMTYgMTZ2ODBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyODhjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQ2lyY2xlTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI0VjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODR2MzguNkMzMTAuMSAyMTkuNSAyNTYgMjg3LjQgMjU2IDM2OGMwIDU5LjEgMjkuMSAxMTEuMyA3My43IDE0My4zYy0zLjIgLjUtNi40IC43LTkuNyAuN0g2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4ek0yODggMzY4YTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTIyNCAwYzAtOC44LTcuMi0xNi0xNi0xNkgzNjhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZINDk2YzguOCAwIDE2LTcuMiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUNpcmNsZVBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI0VjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODR2MzguNkMzMTAuMSAyMTkuNSAyNTYgMjg3LjQgMjU2IDM2OGMwIDU5LjEgMjkuMSAxMTEuMyA3My43IDE0My4zYy0zLjIgLjUtNi40IC43LTkuNyAuN0g2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4em00OCA5NmExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTE2IDgwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djQ4SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjM4NGg0OGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg0NDhWMzA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQ2lyY2xlUXVlc3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI0VjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODR2MzguNkMzMTAuMSAyMTkuNSAyNTYgMjg3LjQgMjU2IDM2OGMwIDU5LjEgMjkuMSAxMTEuMyA3My43IDE0My4zYy0zLjIgLjUtNi40IC43LTkuNyAuN0g2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4em00OCA5NmExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTAgMjQwYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpNMzY4IDMyMS42VjMyOGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2di02LjRjMC01LjMgNC4zLTkuNiA5LjYtOS42aDQwLjVjNy43IDAgMTMuOSA2LjIgMTMuOSAxMy45YzAgNS4yLTIuOSA5LjktNy40IDEyLjNsLTMyIDE2LjhjLTUuMyAyLjgtOC42IDguMi04LjYgMTQuMlYzODRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNnYtNS4xbDIzLjUtMTIuM2MxNS4xLTcuOSAyNC41LTIzLjYgMjQuNS00MC42YzAtMjUuNC0yMC42LTQ1LjktNDUuOS00NS45SDQwOS42Yy0yMyAwLTQxLjYgMTguNi00MS42IDQxLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVDaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjRWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NHYzOC42QzMxMC4xIDIxOS41IDI1NiAyODcuNCAyNTYgMzY4YzAgNTkuMSAyOS4xIDExMS4zIDczLjcgMTQzLjNjLTMuMiAuNS02LjQgLjctOS43IC43SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHptMzg0IDY0SDI1NlYwTDM4NCAxMjh6bTQ4IDk2YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptNTkuMyAxMDcuM2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNnMtMTYuNC02LjItMjIuNiAwTDQzMiAzNDUuNGwtMzYuNy0zNi43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42TDQwOS40IDM2OGwtMzYuNyAzNi43Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBMNDMyIDM5MC42bDM2LjcgMzYuN2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZMNDU0LjYgMzY4bDM2LjctMzYuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek0xNTMgMjg5bC0zMSAzMSAzMSAzMWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDcxIDMzN2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsNDgtNDhjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45ek0yNjUgMjU1bDQ4IDQ4YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC00OCA0OGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWwzMS0zMS0zMS0zMWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQ29udHJhY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek04MCA2NGg2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMCA2NGg2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptNTQuMiAyNTMuOGMtNi4xIDIwLjMtMjQuOCAzNC4yLTQ2IDM0LjJIODBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoOC4yYzcuMSAwIDEzLjMtNC42IDE1LjMtMTEuNGwxNC45LTQ5LjVjMy40LTExLjMgMTMuOC0xOS4xIDI1LjYtMTkuMXMyMi4yIDcuNyAyNS42IDE5LjFsMTEuNiAzOC42YzcuNC02LjIgMTYuOC05LjcgMjYuOC05LjdjMTUuOSAwIDMwLjQgOSAzNy41IDIzLjJsNC40IDguOEgzMDRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMjQwYy02LjEgMC0xMS42LTMuNC0xNC4zLTguOGwtOC44LTE3LjdjLTEuNy0zLjQtNS4xLTUuNS04LjgtNS41cy03LjIgMi4xLTguOCA1LjVsLTguOCAxNy43Yy0yLjkgNS45LTkuMiA5LjQtMTUuNyA4LjhzLTEyLjEtNS4xLTEzLjktMTEuM0wxNDQgMzQ5bC05LjggMzIuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUNzdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjRWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NFYzMDRIMTc2Yy0zNS4zIDAtNjQgMjguNy02NCA2NFY1MTJINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0em0zODQgNjRIMjU2VjBMMzg0IDEyOHpNMjAwIDM1MmgxNmMyMi4xIDAgNDAgMTcuOSA0MCA0MHY4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2di04YzAtNC40LTMuNi04LTgtOEgyMDBjLTQuNCAwLTggMy42LTggOHY4MGMwIDQuNCAzLjYgOCA4IDhoMTZjNC40IDAgOC0zLjYgOC04di04YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2OGMwIDIyLjEtMTcuOSA0MC00MCA0MEgyMDBjLTIyLjEgMC00MC0xNy45LTQwLTQwVjM5MmMwLTIyLjEgMTcuOS00MCA0MC00MHptMTMzLjEgMEgzNjhjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzMzLjFjLTcuMiAwLTEzLjEgNS45LTEzLjEgMTMuMWMwIDUuMiAzIDkuOSA3LjggMTJsMzcuNCAxNi42YzE2LjMgNy4yIDI2LjggMjMuNCAyNi44IDQxLjJjMCAyNC45LTIwLjIgNDUuMS00NS4xIDQ1LjFIMzA0Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDQyLjljNy4yIDAgMTMuMS01LjkgMTMuMS0xMy4xYzAtNS4yLTMtOS45LTcuOC0xMmwtMzcuNC0xNi42Yy0xNi4zLTcuMi0yNi44LTIzLjQtMjYuOC00MS4yYzAtMjQuOSAyMC4yLTQ1LjEgNDUuMS00NS4xem05OC45IDBjOC44IDAgMTYgNy4yIDE2IDE2djMxLjZjMCAyMyA1LjUgNDUuNiAxNiA2NmMxMC41LTIwLjMgMTYtNDIuOSAxNi02NlYzNjhjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYzMS42YzAgMzQuNy0xMC4zIDY4LjctMjkuNiA5Ny42bC01LjEgNy43Yy0zIDQuNS04IDcuMS0xMy4zIDcuMXMtMTAuMy0yLjctMTMuMy03LjFsLTUuMS03LjdjLTE5LjMtMjguOS0yOS42LTYyLjktMjkuNi05Ny42VjM2OGMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVFeGNlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6TTE1NS43IDI1MC4yTDE5MiAzMDIuMWwzNi4zLTUxLjljNy42LTEwLjkgMjIuNi0xMy41IDMzLjQtNS45czEzLjUgMjIuNiA1LjkgMzMuNEwyMjEuMyAzNDRsNDYuNCA2Ni4yYzcuNiAxMC45IDUgMjUuOC01LjkgMzMuNHMtMjUuOCA1LTMzLjQtNS45TDE5MiAzODUuOGwtMzYuMyA1MS45Yy03LjYgMTAuOS0yMi42IDEzLjUtMzMuNCA1LjlzLTEzLjUtMjIuNi01LjktMzMuNEwxNjIuNyAzNDRsLTQ2LjQtNjYuMmMtNy42LTEwLjktNS0yNS44IDUuOS0zMy40czI1LjgtNSAzMy40IDUuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUV4cG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjRWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NFYyODhIMjE2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDM4NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0ek0zODQgMzM2VjI4OEg0OTQuMWwtMzktMzljLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw4MCA4MGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtODAgODBjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMzktMzlIMzg0em0wLTIwOEgyNTZWMEwzODQgMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlSW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek02NCAyNTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTUyIDMyYzUuMyAwIDEwLjIgMi42IDEzLjIgNi45bDg4IDEyOGMzLjQgNC45IDMuNyAxMS4zIDEgMTYuNXMtOC4yIDguNi0xNC4yIDguNkgyMTYgMTc2IDEyOCA4MGMtNS44IDAtMTEuMS0zLjEtMTMuOS04LjFzLTIuOC0xMS4yIC4yLTE2LjFsNDgtODBjMi45LTQuOCA4LjEtNy44IDEzLjctNy44czEwLjggMi45IDEzLjcgNy44bDEyLjggMjEuNCA0OC4zLTcwLjJjMy00LjMgNy45LTYuOSAxMy4yLTYuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUltcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRIMzUyVjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg1MTJWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDE5MmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMzM2SDMwMi4xbC0zOSAzOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDgwLTgwYzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC04MC04MGMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWwzOSAzOUgxMjhWNjR6bTAgMjI0djQ4SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0SDEyOHpNNTEyIDEyOEgzODRWMEw1MTIgMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlSW52b2ljZURvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6TTY0IDgwYzAtOC44IDcuMi0xNiAxNi0xNmg2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2em0wIDY0YzAtOC44IDcuMi0xNiAxNi0xNmg2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2em0xMjggNzJjOC44IDAgMTYgNy4yIDE2IDE2djE3LjNjOC41IDEuMiAxNi43IDMuMSAyNC4xIDUuMWM4LjUgMi4zIDEzLjYgMTEgMTEuMyAxOS42cy0xMSAxMy42LTE5LjYgMTEuM2MtMTEuMS0zLTIyLTUuMi0zMi4xLTUuM2MtOC40LS4xLTE3LjQgMS44LTIzLjYgNS41Yy01LjcgMy40LTguMSA3LjMtOC4xIDEyLjhjMCAzLjcgMS4zIDYuNSA3LjMgMTAuMWM2LjkgNC4xIDE2LjYgNy4xIDI5LjIgMTAuOWwuNSAuMSAwIDAgMCAwYzExLjMgMy40IDI1LjMgNy42IDM2LjMgMTQuNmMxMi4xIDcuNiAyMi40IDE5LjcgMjIuNyAzOC4yYy4zIDE5LjMtOS42IDMzLjMtMjIuOSA0MS42Yy03LjcgNC44LTE2LjQgNy42LTI1LjEgOS4xVjQ0MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlY0MjIuMmMtMTEuMi0yLjEtMjEuNy01LjctMzAuOS04LjlsMCAwIDAgMGMtMi4xLS43LTQuMi0xLjQtNi4yLTIuMWMtOC40LTIuOC0xMi45LTExLjktMTAuMS0yMC4yczExLjktMTIuOSAyMC4yLTEwLjFjMi41IC44IDQuOCAxLjYgNy4xIDIuNGwwIDAgMCAwIDAgMGMxMy42IDQuNiAyNC42IDguNCAzNi4zIDguN2M5LjEgLjMgMTcuOS0xLjcgMjMuNy01LjNjNS4xLTMuMiA3LjktNy4zIDcuOC0xNGMtLjEtNC42LTEuOC03LjgtNy43LTExLjZjLTYuOC00LjMtMTYuNS03LjQtMjktMTEuMmwtMS42LS41IDAgMGMtMTEtMy4zLTI0LjMtNy4zLTM0LjgtMTMuN2MtMTItNy4yLTIyLjYtMTguOS0yMi43LTM3LjNjLS4xLTE5LjQgMTAuOC0zMi44IDIzLjgtNDAuNWM3LjUtNC40IDE1LjgtNy4yIDI0LjEtOC43VjIzMmMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVJbnZvaWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNODAgNjRoNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRoNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTE2IDk2SDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMyem0wIDMydjY0SDI4OFYyNTZIOTZ6TTI0MCA0MTZoNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMjQwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlTGluZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek0xMTIgMjU2SDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRIMjcyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMCA2NEgyNzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6TTE2MCAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY0OGg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDIyNHY0OGMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMzUySDExMmMtOC44IDAtMTYtNy4yLTE2LTE2VjMwNGMwLTguOCA3LjItMTYgMTYtMTZoNDhWMjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlUGRmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwTDIyNCAwbDAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDEyOCAwIDAgMTQ0LTIwOCAwYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDE0NC00OCAwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDY0em0zODQgNjRsLTEyOCAwTDI1NiAwIDM4NCAxMjh6TTE3NiAzNTJsMzIgMGMzMC45IDAgNTYgMjUuMSA1NiA1NnMtMjUuMSA1Ni01NiA1NmwtMTYgMCAwIDMyYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtNDggMC04MGMwLTguOCA3LjItMTYgMTYtMTZ6bTMyIDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0xNiAwIDAgNDggMTYgMHptOTYtODBsMzIgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0xMjhjMC04LjggNy4yLTE2IDE2LTE2em0zMiAxMjhjOC44IDAgMTYtNy4yIDE2LTE2bDAtNjRjMC04LjgtNy4yLTE2LTE2LTE2bC0xNiAwIDAgOTYgMTYgMHptODAtMTEyYzAtOC44IDcuMi0xNiAxNi0xNmw0OCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0zMiAwIDAgMzIgMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMzIgMCAwIDQ4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtNjQgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVBlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjRWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NFYyOTkuNmwtOTQuNyA5NC43Yy04LjIgOC4yLTE0IDE4LjUtMTYuOCAyOS43bC0xNSA2MC4xYy0yLjMgOS40LTEuOCAxOSAxLjQgMjcuOEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4ek01NDkuOCAyMzUuN2wxNC40IDE0LjRjMTUuNiAxNS42IDE1LjYgNDAuOSAwIDU2LjZsLTI5LjQgMjkuNC03MS03MSAyOS40LTI5LjRjMTUuNi0xNS42IDQwLjktMTUuNiA1Ni42IDB6TTMxMS45IDQxN0w0NDEuMSAyODcuOGw3MSA3MUwzODIuOSA0ODcuOWMtNC4xIDQuMS05LjIgNy0xNC45IDguNGwtNjAuMSAxNWMtNS41IDEuNC0xMS4yLS4yLTE1LjItNC4ycy01LjYtOS43LTQuMi0xNS4ybDE1LTYwLjFjMS40LTUuNiA0LjMtMTAuOCA4LjQtMTQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVBvd2VycG9pbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek0xMzYgMjQwaDY4YzQyIDAgNzYgMzQgNzYgNzZzLTM0IDc2LTc2IDc2SDE2MHYzMmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYzNjggMjY0YzAtMTMuMyAxMC43LTI0IDI0LTI0em02OCAxMDRjMTUuNSAwIDI4LTEyLjUgMjgtMjhzLTEyLjUtMjgtMjgtMjhIMTYwdjU2aDQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlUHJlc2NyaXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNMTA0IDE5Nmg3MmMzMy4xIDAgNjAgMjYuOSA2MCA2MGMwIDI1LjUtMTUuOSA0Ny4yLTM4LjMgNTUuOWw0MyA0MC4zIDMzLjgtMzFjOC4xLTcuNSAyMC44LTYuOSAyOC4zIDEuMnM2LjkgMjAuOC0xLjIgMjguM0wyNzAgMzc5LjdsMzEuNyAyOS43YzguMSA3LjYgOC41IDIwLjIgLjkgMjguM3MtMjAuMiA4LjUtMjguMyAuOWwtMzMuOS0zMS44LTM0LjkgMzJjLTguMSA3LjUtMjAuOCA2LjktMjguMy0xLjJzLTYuOS0yMC44IDEuMi0yOC4zbDMyLjYtMjkuOS02NC44LTYwLjhjLS45LS44LTEuNi0xLjctMi4zLTIuNkgxMjR2NDRjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwVjI5NiAyMTZjMC0xMSA5LTIwIDIwLTIwem03MiA4MGMxMSAwIDIwLTkgMjAtMjBzLTktMjAtMjAtMjBIMTI0djQwaDUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlU2hpZWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDIyNFYxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzg0djQ3bC05Mi44IDM3LjFjLTIxLjMgOC41LTM1LjIgMjkuMS0zNS4yIDUyYzAgNTYuNiAxOC45IDE0OCA5NC4yIDIwOC4zYy05IDQuOC0xOS4zIDcuNi0zMC4yIDcuNkg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4em0zOS4xIDk3LjdjNS43LTIuMyAxMi4xLTIuMyAxNy44IDBsMTIwIDQ4QzU3MCAyNzcuNCA1NzYgMjg2LjIgNTc2IDI5NmMwIDYzLjMtMjUuOSAxNjguOC0xMzQuOCAyMTQuMmMtNS45IDIuNS0xMi42IDIuNS0xOC41IDBDMzEzLjkgNDY0LjggMjg4IDM1OS4zIDI4OCAyOTZjMC05LjggNi0xOC42IDE1LjEtMjIuM2wxMjAtNDh6TTUyNy40IDMxMkw0MzIgMjczLjhWNDYxLjdjNjguMi0zMyA5MS41LTk5IDk1LjQtMTQ5Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVTaWduYXR1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFY0MjguN2MtMi43IDEuMS01LjQgMi04LjIgMi43bC02MC4xIDE1Yy0zIC43LTYgMS4yLTkgMS40Yy0uOSAuMS0xLjggLjItMi43IC4ySDI0MGMtNi4xIDAtMTEuNi0zLjQtMTQuMy04LjhsLTguOC0xNy43Yy0xLjctMy40LTUuMS01LjUtOC44LTUuNXMtNy4yIDIuMS04LjggNS41bC04LjggMTcuN2MtMi45IDUuOS05LjIgOS40LTE1LjcgOC44cy0xMi4xLTUuMS0xMy45LTExLjNMMTQ0IDM4MWwtOS44IDMyLjhjLTYuMSAyMC4zLTI0LjggMzQuMi00NiAzNC4ySDgwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDguMmM3LjEgMCAxMy4zLTQuNiAxNS4zLTExLjRsMTQuOS00OS41YzMuNC0xMS4zIDEzLjgtMTkuMSAyNS42LTE5LjFzMjIuMiA3LjggMjUuNiAxOS4xbDExLjYgMzguNmM3LjQtNi4yIDE2LjgtOS43IDI2LjgtOS43YzE1LjkgMCAzMC40IDkgMzcuNSAyMy4ybDQuNCA4LjhoOC45Yy0zLjEtOC44LTMuNy0xOC40LTEuNC0yNy44bDE1LTYwLjFjMi44LTExLjMgOC42LTIxLjUgMTYuOC0yOS43TDM4NCAyMDMuNlYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek01NDkuOCAxMzkuN2MtMTUuNi0xNS42LTQwLjktMTUuNi01Ni42IDBsLTI5LjQgMjkuNCA3MSA3MSAyOS40LTI5LjRjMTUuNi0xNS42IDE1LjYtNDAuOSAwLTU2LjZsLTE0LjQtMTQuNHpNMzExLjkgMzIxYy00LjEgNC4xLTcgOS4yLTguNCAxNC45bC0xNSA2MC4xYy0xLjQgNS41IC4yIDExLjIgNC4yIDE1LjJzOS43IDUuNiAxNS4yIDQuMmw2MC4xLTE1YzUuNi0xLjQgMTAuOC00LjMgMTQuOS04LjRMNTEyLjEgMjYyLjdsLTcxLTcxTDMxMS45IDMyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNNjQgMjg4YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyODh6TTMwMC45IDM5Ny45TDI1NiAzNjhWMzA0bDQ0LjktMjkuOWMyLTEuMyA0LjQtMi4xIDYuOC0yLjFjNi44IDAgMTIuMyA1LjUgMTIuMyAxMi4zVjM4Ny43YzAgNi44LTUuNSAxMi4zLTEyLjMgMTIuM2MtMi40IDAtNC44LS43LTYuOC0yLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVXYXZlZm9ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwQzYwLjcgMCAzMiAyOC43IDMyIDY0VjI4OEgxNDRjNi4xIDAgMTEuNiAzLjQgMTQuMyA4LjhMMTc2IDMzMi4ybDQ5LjctOTkuNGMyLjctNS40IDguMy04LjggMTQuMy04LjhzMTEuNiAzLjQgMTQuMyA4LjhMMjgxLjkgMjg4SDM1MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyNzJjLTYuMSAwLTExLjYtMy40LTE0LjMtOC44TDI0MCAyNzUuOGwtNDkuNyA5OS40Yy0yLjcgNS40LTguMyA4LjgtMTQuMyA4LjhzLTExLjYtMy40LTE0LjMtOC44TDEzNC4xIDMyMEgzMlY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzUyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBIOTZ6TTI4OCAwVjEyOEg0MTZMMjg4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVXb3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNMTExIDI1Ny4xbDI2LjggODkuMiAzMS42LTkwLjNjMy40LTkuNiAxMi41LTE2LjEgMjIuNy0xNi4xczE5LjMgNi40IDIyLjcgMTYuMWwzMS42IDkwLjNMMjczIDI1Ny4xYzMuOC0xMi43IDE3LjItMTkuOSAyOS45LTE2LjFzMTkuOSAxNy4yIDE2LjEgMjkuOWwtNDggMTYwYy0zIDEwLTEyIDE2LjktMjIuNCAxNy4xcy0xOS44LTYuMi0yMy4yLTE2LjFMMTkyIDMzNi42bC0zMy4zIDk1LjNjLTMuNCA5LjgtMTIuOCAxNi4zLTIzLjIgMTYuMXMtMTkuNS03LjEtMjIuNC0xNy4xbC00OC0xNjBjLTMuOC0xMi43IDMuNC0yNi4xIDE2LjEtMjkuOXMyNi4xIDMuNCAyOS45IDE2LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVaaXBwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek05NiA0OGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZ6bTAgNjRjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2em0wIDY0YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnptLTYuMyA3MS44YzMuNy0xNCAxNi40LTIzLjggMzAuOS0yMy44aDE0LjhjMTQuNSAwIDI3LjIgOS43IDMwLjkgMjMuOGwyMy41IDg4LjJjMS40IDUuNCAyLjEgMTAuOSAyLjEgMTYuNGMwIDM1LjItMjguOCA2My43LTY0IDYzLjdzLTY0LTI4LjUtNjQtNjMuN2MwLTUuNSAuNy0xMS4xIDIuMS0xNi40bDIzLjUtODguMnpNMTEyIDMzNmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI0VjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHptMzg0IDY0SDI1NlYwTDM4NCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGxEcmlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxLjQgOS40QzUzLjktMy4xIDc0LjEtMy4xIDg2LjYgOS40TDE2OCA5MC43bDUzLjEtNTMuMWMyOC4xLTI4LjEgNzMuNy0yOC4xIDEwMS44IDBMNDc0LjMgMTg5LjFjMjguMSAyOC4xIDI4LjEgNzMuNyAwIDEwMS44TDI4My45IDQ4MS40Yy0zNy41IDM3LjUtOTguMyAzNy41LTEzNS44IDBMMzAuNiAzNjMuOWMtMzcuNS0zNy41LTM3LjUtOTguMyAwLTEzNS44TDEyMi43IDEzNiA0MS40IDU0LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zem0xNzYgMjIxLjNMMTY4IDE4MS4zIDc1LjkgMjczLjRjLTQuMiA0LjItNyA5LjMtOC40IDE0LjZIMzg2LjdsNDIuMy00Mi4zYzMuMS0zLjEgMy4xLTguMiAwLTExLjNMMjc3LjcgODIuOWMtMy4xLTMuMS04LjItMy4xLTExLjMgMEwyMTMuMyAxMzZsNDkuNCA0OS40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwek01MTIgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NGMwLTI1LjIgMzIuNi03OS42IDUxLjItMTA4LjdjNi05LjQgMTkuNS05LjQgMjUuNSAwQzU0My40IDM2OC40IDU3NiA0MjIuOCA1NzYgNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg2LjYgOS40Qzc0LjEtMy4xIDUzLjktMy4xIDQxLjQgOS40cy0xMi41IDMyLjggMCA0NS4zTDEyMi43IDEzNiAzMC42IDIyOC4xYy0zNy41IDM3LjUtMzcuNSA5OC4zIDAgMTM1LjhMMTQ4LjEgNDgxLjRjMzcuNSAzNy41IDk4LjMgMzcuNSAxMzUuOCAwTDQ3NC4zIDI5MC45YzI4LjEtMjguMSAyOC4xLTczLjcgMC0xMDEuOEwzMjIuOSAzNy43Yy0yOC4xLTI4LjEtNzMuNy0yOC4xLTEwMS44IDBMMTY4IDkwLjcgODYuNiA5LjR6TTE2OCAxODEuM2w0OS40IDQ5LjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wyMTMuMyAxMzZsNTMuMS01My4xYzMuMS0zLjEgOC4yLTMuMSAxMS4zIDBMNDI5LjEgMjM0LjNjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM0wzODYuNyAyODhINjcuNWMxLjQtNS40IDQuMi0xMC40IDguNC0xNC42TDE2OCAxODEuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2ek00OCAzNjh2MzJjMCA4LjggNy4yIDE2IDE2IDE2SDk2YzguOCAwIDE2LTcuMiAxNi0xNlYzNjhjMC04LjgtNy4yLTE2LTE2LTE2SDY0Yy04LjggMC0xNiA3LjItMTYgMTZ6bTM2OC0xNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNkg0MTZ6TTQ4IDI0MHYzMmMwIDguOCA3LjIgMTYgMTYgMTZIOTZjOC44IDAgMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZINjRjLTguOCAwLTE2IDcuMi0xNiAxNnptMzY4LTE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDQxNnpNNDggMTEydjMyYzAgOC44IDcuMiAxNiAxNiAxNkg5NmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkg2NGMtOC44IDAtMTYgNy4yLTE2IDE2ek00MTYgOTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZINDE2ek0xNjAgMTI4djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMlYxMjhjMC0xNy43LTE0LjMtMzItMzItMzJIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnptMzIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzIwYzAtMTcuNy0xNC4zLTMyLTMyLTMySDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsdGVyQ2lyY2xlRG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuOSAyMi45QzEwLjUgOC45IDI0LjUgMCA0MCAwSDQ3MmMxNS41IDAgMjkuNSA4LjkgMzYuMSAyMi45czQuNiAzMC41LTUuMiA0Mi41TDM5Ni40IDE5NS42QzMxNi4yIDIxMi4xIDI1NiAyODMgMjU2IDM2OGMwIDI3LjQgNi4zIDUzLjQgMTcuNSA3Ni41Yy0xLjYtLjgtMy4yLTEuOC00LjctMi45bC02NC00OGMtOC4xLTYtMTIuOC0xNS41LTEyLjgtMjUuNlYyODguOUw5IDY1LjNDLS43IDUzLjQtMi44IDM2LjggMy45IDIyLjl6TTI4OCAzNjhhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMTIwLjgtMzIuNmMuNi0uOSAxLjgtMi4xIDQuMi0zLjRjNS4xLTIuNyAxMi41LTQuMSAxOC43LTRjOC4yIC4xIDE3LjEgMS44IDI2LjQgNC4xYzguNiAyLjEgMTcuMy0zLjEgMTkuNC0xMS43cy0zLjEtMTcuMy0xMS43LTE5LjRjLTUuNi0xLjQtMTEuNi0yLjctMTcuOS0zLjdWMjg4YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djkuNWMtNi4xIDEuMi0xMi4zIDMuMi0xOCA2LjNjLTExLjggNi4zLTIzIDE4LjQtMjEuOCAzNy4yYzEgMTYgMTEuNyAyNS4zIDIxLjYgMzAuN2M4LjggNC43IDE5LjcgNy44IDI4LjYgMTAuM2wxLjggLjVjMTAuMyAyLjkgMTcuOSA1LjIgMjMuMiA4LjNjNC41IDIuNyA0LjcgNC4yIDQuNyA1LjZjLjEgMi40LS41IDMuNy0xIDQuNWMtLjYgMS0xLjggMi4yLTQgMy4zYy00LjcgMi41LTExLjggMy44LTE4LjUgMy42Yy05LjUtLjMtMTguNS0zLjEtMjkuOS02LjhjLTEuOS0uNi0zLjgtMS4yLTUuOC0xLjhjLTguNC0yLjYtMTcuNCAyLjEtMjAgMTAuNXMyLjEgMTcuNCAxMC41IDIwYzEuNiAuNSAzLjMgMSA1IDEuNmwwIDAgMCAwYzcgMi4zIDE1LjEgNC44IDIzLjcgNi42djExLjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlY0MzguN2M2LjItMS4xIDEyLjUtMy4xIDE4LjMtNi4yYzEyLjEtNi41IDIyLjMtMTguNyAyMS43LTM2LjljLS41LTE2LjItMTAuMy0yNi4zLTIwLjUtMzIuM2MtOS40LTUuNi0yMS4yLTguOS0zMC41LTExLjVsLS4yIDBjLTEwLjQtMi45LTE4LjMtNS4yLTIzLjktOC4yYy00LjgtMi42LTQuOC00LTQuOC00LjVsMC0uMWMtLjEtMS45IC4zLTIuOSAuOC0zLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbHRlckNpcmNsZVhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuOSAyMi45QzEwLjUgOC45IDI0LjUgMCA0MCAwSDQ3MmMxNS41IDAgMjkuNSA4LjkgMzYuMSAyMi45czQuNiAzMC41LTUuMiA0Mi41TDM5Ni40IDE5NS42QzMxNi4yIDIxMi4xIDI1NiAyODMgMjU2IDM2OGMwIDI3LjQgNi4zIDUzLjQgMTcuNSA3Ni41Yy0xLjYtLjgtMy4yLTEuOC00LjctMi45bC02NC00OGMtOC4xLTYtMTIuOC0xNS41LTEyLjgtMjUuNlYyODguOUw5IDY1LjNDLS43IDUzLjQtMi44IDM2LjggMy45IDIyLjl6TTQzMiAyMjRhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em01OS4zIDEwNy4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBMNDMyIDM0NS40bC0zNi43LTM2LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZMNDA5LjQgMzY4bC0zNi43IDM2LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMEw0MzIgMzkwLjZsMzYuNyAzNi43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkw0NTQuNiAzNjhsMzYuNy0zNi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy45IDU0LjlDMTAuNSA0MC45IDI0LjUgMzIgNDAgMzJINDcyYzE1LjUgMCAyOS41IDguOSAzNi4xIDIyLjlzNC42IDMwLjUtNS4yIDQyLjVMMzIwIDMyMC45VjQ0OGMwIDEyLjEtNi44IDIzLjItMTcuNyAyOC42cy0yMy44IDQuMy0zMy41LTNsLTY0LTQ4Yy04LjEtNi0xMi44LTE1LjUtMTIuOC0yNS42VjMyMC45TDkgOTcuM0MtLjcgODUuNC0yLjggNjguOCAzLjkgNTQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmluZ2VycHJpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMjU2QzQ4IDE0MS4xIDE0MS4xIDQ4IDI1NiA0OGM2My4xIDAgMTE5LjYgMjguMSAxNTcuOCA3Mi41YzguNiAxMC4xIDIzLjggMTEuMiAzMy44IDIuNnMxMS4yLTIzLjggMi42LTMzLjhDNDAzLjMgMzQuNiAzMzMuNyAwIDI1NiAwQzExNC42IDAgMCAxMTQuNiAwIDI1NnY0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI1NnptNDU4LjUtNTIuOWMtMi43LTEzLTE1LjUtMjEuMy0yOC40LTE4LjVzLTIxLjMgMTUuNS0xOC41IDI4LjRjMi45IDEzLjkgNC41IDI4LjMgNC41IDQzLjF2NDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYyNTZjMC0xOC4xLTEuOS0zNS44LTUuNS01Mi45ek0yNTYgODBjLTE5IDAtMzcuNCAzLTU0LjUgOC42Yy0xNS4yIDUtMTguNyAyMy43LTguMyAzNS45YzcuMSA4LjMgMTguOCAxMC44IDI5LjQgNy45YzEwLjYtMi45IDIxLjgtNC40IDMzLjQtNC40YzcwLjcgMCAxMjggNTcuMyAxMjggMTI4djI0LjljMCAyNS4yLTEuNSA1MC4zLTQuNCA3NS4zYy0xLjcgMTQuNiA5LjQgMjcuOCAyNC4yIDI3LjhjMTEuOCAwIDIxLjktOC42IDIzLjMtMjAuM2MzLjMtMjcuNCA1LTU1IDUtODIuN1YyNTZjMC05Ny4yLTc4LjgtMTc2LTE3Ni0xNzZ6TTE1MC43IDE0OC43Yy05LjEtMTAuNi0yNS4zLTExLjQtMzMuOS0uNEM5My43IDE3OCA4MCAyMTUuNCA4MCAyNTZ2MjQuOWMwIDI0LjItMi42IDQ4LjQtNy44IDcxLjlDNjguOCAzNjguNCA4MC4xIDM4NCA5Ni4xIDM4NGMxMC41IDAgMTkuOS03IDIyLjItMTcuM2M2LjQtMjguMSA5LjctNTYuOCA5LjctODUuOFYyNTZjMC0yNy4yIDguNS01Mi40IDIyLjktNzMuMWM3LjItMTAuNCA4LTI0LjYtLjItMzQuMnpNMjU2IDE2MGMtNTMgMC05NiA0My05NiA5NnYyNC45YzAgMzUuOS00LjYgNzEuNS0xMy44IDEwNi4xYy0zLjggMTQuMyA2LjcgMjkgMjEuNSAyOWM5LjUgMCAxNy45LTYuMiAyMC40LTE1LjRjMTAuNS0zOSAxNS45LTc5LjIgMTUuOS0xMTkuN1YyNTZjMC0yOC43IDIzLjMtNTIgNTItNTJzNTIgMjMuMyA1MiA1MnYyNC45YzAgMzYuMy0zLjUgNzIuNC0xMC40IDEwNy45Yy0yLjcgMTMuOSA3LjcgMjcuMiAyMS44IDI3LjJjMTAuMiAwIDE5LTcgMjEtMTdjNy43LTM4LjggMTEuNi03OC4zIDExLjYtMTE4LjFWMjU2YzAtNTMtNDMtOTYtOTYtOTZ6bTI0IDk2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djI0LjljMCA1OS45LTExIDExOS4zLTMyLjUgMTc1LjJsLTUuOSAxNS4zYy00LjggMTIuNCAxLjQgMjYuMyAxMy44IDMxczI2LjMtMS40IDMxLTEzLjhsNS45LTE1LjNDMjY3LjkgNDExLjkgMjgwIDM0Ni43IDI4MCAyODAuOVYyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmVCdXJuZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ1LjcgNDguM0wzNTggMzQuNWM1LjQtNi4xIDEzLjMtOC44IDIwLjktOC45YzcuMiAwIDE0LjMgMi42IDE5LjkgNy44YzE5LjcgMTguMyAzOS44IDQzLjIgNTUgNzAuNkM0NjkgMTMxLjIgNDgwIDE2Mi4yIDQ4MCAxOTIuMkM0ODAgMjgwLjggNDA4LjcgMzUyIDMyMCAzNTJjLTg5LjYgMC0xNjAtNzEuMy0xNjAtMTU5LjhjMC0zNy4zIDE2LTczLjQgMzYuOC0xMDQuNWMyMC45LTMxLjMgNDcuNS01OSA3MC45LTgwLjJDMjczLjQgMi4zIDI4MC43LS4yIDI4OCAwYzE0LjEgLjMgMjMuOCAxMS40IDMyLjcgMjEuNmMwIDAgMCAwIDAgMGMyIDIuMyA0IDQuNiA2IDYuN2wxOSAxOS45ek0zODQgMjQwLjJjMC0zNi41LTM3LTczLTU0LjgtODguNGMtNS40LTQuNy0xMy4xLTQuNy0xOC41IDBDMjkzIDE2Ny4xIDI1NiAyMDMuNiAyNTYgMjQwLjJjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NHpNMzIgMjg4YzAtMTcuNyAxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsMCA2NCA0NDggMCAwLTY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5NmMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDMyIDUxMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwwLTk2ek0zMjAgNDgwYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMTYwLTMyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTE5MiA0ODBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJlRXh0aW5ndWlzaGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMC4zIDcuM0M1MDcuNyAxMy4zIDUxMiAyMi40IDUxMiAzMnY5NmMwIDkuNi00LjMgMTguNy0xMS43IDI0LjdzLTE3LjIgOC41LTI2LjYgNi42bC0xNjAtMzJDMzAxLjUgMTI0LjkgMjkyIDExNS43IDI4OSAxMDRIMjI0djM0LjhjMzcuOCAxOCA2NCA1Ni41IDY0IDEwMS4yVjM4NEg2NFYyNDBjMC00NC43IDI2LjItODMuMiA2NC0xMDEuMlYxMTBjLTM2LjIgMTEuMS02NiAzNi45LTgyLjMgNzAuNWMtNS44IDExLjktMjAuMiAxNi45LTMyLjEgMTEuMVMtMy4zIDE3MS40IDIuNSAxNTkuNUMyNi43IDEwOS44IDcyLjcgNzIuNiAxMjggNjAuNFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlY1Nmg2NWMzLTExLjcgMTIuNS0yMC45IDI0LjctMjMuNGwxNjAtMzJjOS40LTEuOSAxOS4xIC42IDI2LjYgNi42ek0yODggNDE2djMyYzAgMzUuMy0yOC43IDY0LTY0IDY0SDEyOGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNDE2SDI4OHpNMTc2IDk2YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlyZUZsYW1lQ3VydmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1My42IDI5LjlsMTYtMjEuM0MxNzMuNiAzLjIgMTgwIDAgMTg2LjcgMEMxOTguNCAwIDIwOCA5LjYgMjA4IDIxLjNWNDMuNWMwIDEzLjEgNS40IDI1LjcgMTQuOSAzNC43TDMwNy42IDE1OUMzNTYuNCAyMDUuNiAzODQgMjcwLjIgMzg0IDMzNy43QzM4NCA0MzQgMzA2IDUxMiAyMDkuNyA1MTJIMTkyQzg2IDUxMiAwIDQyNiAwIDMyMHYtMy44YzAtNDguOCAxOS40LTk1LjYgNTMuOS0xMzAuMWwzLjUtMy41YzQuMi00LjIgMTAtNi42IDE2LTYuNkM4NS45IDE3NiA5NiAxODYuMSA5NiAxOTguNlYyODhjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NHYtMy45YzAtMTgtNy4yLTM1LjMtMTkuOS00OGwtMzguNi0zOC42Yy0yNC0yNC0zNy41LTU2LjctMzcuNS05MC43YzAtMjcuNyA5LTU0LjggMjUuNi03Ni45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJlRmxhbWVTaW1wbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyLjUgMjU2LjVsLS43LTEuOUMzMzcuOCAxNjAuOCAyODIgNzYuNSAyMDkuMSA4LjVsLTMuMy0zQzIwMi4xIDIgMTk3LjEgMCAxOTIgMHMtMTAuMSAyLTEzLjggNS41bC0zLjMgM0MxMDIgNzYuNSA0Ni4yIDE2MC44IDEyLjIgMjU0LjZsLS43IDEuOUMzLjkgMjc3LjMgMCAyOTkuNCAwIDMyMS42QzAgNDI2LjcgODYuOCA1MTIgMTkyIDUxMnMxOTItODUuMyAxOTItMTkwLjRjMC0yMi4yLTMuOS00NC4yLTExLjUtNjUuMXptLTkwLjggNDkuNWM0LjEgOS4zIDYuMiAxOS40IDYuMiAyOS41YzAgNTMtNDMgOTYuNS05NiA5Ni41cy05Ni00My41LTk2LTk2LjVjMC0xMC4xIDIuMS0yMC4zIDYuMi0yOS41bDEuOS00LjNjMTUuOC0zNS40IDM3LjktNjcuNyA2NS4zLTk1LjFsOC45LTguOWMzLjYtMy42IDguNS01LjYgMTMuNi01LjZzMTAgMiAxMy42IDUuNmw4LjkgOC45YzI3LjQgMjcuNCA0OS42IDU5LjcgNjUuMyA5NS4xbDEuOSA0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU5LjMgNS40YzcuOC03LjMgMTkuOS03LjIgMjcuNyAuMWMyNy42IDI1LjkgNTMuNSA1My44IDc3LjcgODRjMTEtMTQuNCAyMy41LTMwLjEgMzctNDIuOWM3LjktNy40IDIwLjEtNy40IDI4IC4xYzM0LjYgMzMgNjMuOSA3Ni42IDg0LjUgMTE4YzIwLjMgNDAuOCAzMy44IDgyLjUgMzMuOCAxMTEuOUM0NDggNDA0LjIgMzQ4LjIgNTEyIDIyNCA1MTJDOTguNCA1MTIgMCA0MDQuMSAwIDI3Ni41YzAtMzguNCAxNy44LTg1LjMgNDUuNC0xMzEuN0M3My4zIDk3LjcgMTEyLjcgNDguNiAxNTkuMyA1LjR6TTIyNS43IDQxNmMyNS4zIDAgNDcuNy03IDY4LjgtMjFjNDIuMS0yOS40IDUzLjQtODguMiAyOC4xLTEzNC40Yy00LjUtOS0xNi05LjYtMjIuNS0ybC0yNS4yIDI5LjNjLTYuNiA3LjYtMTguNSA3LjQtMjQuNy0uNWMtMTYuNS0yMS00Ni01OC41LTYyLjgtNzkuOGMtNi4zLTgtMTguMy04LjEtMjQuNy0uMWMtMzMuOCA0Mi41LTUwLjggNjkuMy01MC44IDk5LjRDMTEyIDM3NS40IDE2Mi42IDQxNiAyMjUuNyA0MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpc2hGaW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3NS4yIDM4LjRjLTEwLjYtOC0yNS04LjUtMzYuMy0xLjVTMjIyIDU3LjMgMjI0LjYgNzAuM2w5LjcgNDguNmMtMTkuNCA5LTM2LjkgMTkuOS01Mi40IDMxLjVjLTE1LjMgMTEuNS0yOSAyMy45LTQwLjcgMzYuM0w0OC4xIDEzMi40Yy0xMi41LTcuMy0yOC40LTUuMy0zOC42IDQuOVMtMyAxNjMuMyA0LjIgMTc1LjlMNTAgMjU2IDQuMiAzMzYuMWMtNy4yIDEyLjYtNSAyOC40IDUuMyAzOC42czI2LjEgMTIuMiAzOC42IDQuOWw5My4xLTU0LjNjMTEuOCAxMi4zIDI1LjQgMjQuOCA0MC43IDM2LjNjMTUuNSAxMS42IDMzIDIyLjUgNTIuNCAzMS41bC05LjcgNDguNmMtMi42IDEzIDMuMSAyNi4zIDE0LjMgMzMuM3MyNS42IDYuNSAzNi4zLTEuNWw3Ny42LTU4LjJjNTQuOS00IDEwMS41LTI3IDEzNy4yLTUzLjhjMzkuMi0yOS40IDY3LjItNjQuNyA4MS42LTg5LjVjNS44LTkuOSA1LjgtMjIuMiAwLTMyLjFjLTE0LjQtMjQuOC00Mi41LTYwLjEtODEuNi04OS41Yy0zNS44LTI2LjgtODIuMy00OS44LTEzNy4yLTUzLjhMMjc1LjIgMzguNHpNMzg0IDI1NmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4MC41IDE0MS41QzIxOS43IDEwOC41IDI3Mi42IDgwIDMzNiA4MHMxMTYuMyAyOC41IDE1NS41IDYxLjVjMzkuMSAzMyA2Ni45IDcyLjQgODEgOTkuOGM0LjcgOS4yIDQuNyAyMC4xIDAgMjkuM2MtMTQuMSAyNy40LTQxLjkgNjYuOC04MSA5OS44QzQ1Mi4zIDQwMy41IDM5OS40IDQzMiAzMzYgNDMycy0xMTYuMy0yOC41LTE1NS41LTYxLjVjLTE2LjItMTMuNy0zMC41LTI4LjUtNDIuNy00My4xTDQ4LjEgMzc5LjZjLTEyLjUgNy4zLTI4LjQgNS4zLTM4LjctNC45Uy0zIDM0OC43IDQuMiAzMzYuMUw1MCAyNTYgNC4yIDE3NS45Yy03LjItMTIuNi01LTI4LjQgNS4zLTM4LjZzMjYuMS0xMi4yIDM4LjctNC45bDg5LjcgNTIuM2MxMi4yLTE0LjYgMjYuNS0yOS40IDQyLjctNDMuMXpNNDQ4IDI1NmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGFnQ2hlY2tlcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDBDNDkuNyAwIDY0IDE0LjMgNjQgMzJWNDhsNjktMTcuMmMzOC4xLTkuNSA3OC4zLTUuMSAxMTMuNSAxMi41YzQ2LjMgMjMuMiAxMDAuOCAyMy4yIDE0Ny4xIDBsOS42LTQuOEM0MjMuOCAyOC4xIDQ0OCA0My4xIDQ0OCA2Ni4xVjM0NS44YzAgMTMuMy04LjMgMjUuMy0yMC44IDMwbC0zNC43IDEzYy00Ni4yIDE3LjMtOTcuNiAxNC42LTE0MS43LTcuNGMtMzcuOS0xOS04MS4zLTIzLjctMTIyLjUtMTMuNEw2NCAzODR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDAwIDMzNCA2NCAzMkMwIDE0LjMgMTQuMyAwIDMyIDB6TTY0IDE4Ny4xbDY0LTEzLjl2NjUuNUw2NCAyNTIuNlYzMThsNDguOC0xMi4yYzUuMS0xLjMgMTAuMS0yLjQgMTUuMi0zLjNWMjM4LjdsMzguOS04LjRjOC4zLTEuOCAxNi43LTIuNSAyNS4xLTIuMWwwLTY0YzEzLjYgLjQgMjcuMiAyLjYgNDAuNCA2LjRsMjMuNiA2Ljl2NjYuN2wtNDEuNy0xMi4zYy03LjMtMi4xLTE0LjgtMy40LTIyLjMtMy44djcxLjRjMjEuOCAxLjkgNDMuMyA2LjcgNjQgMTQuNFYyNDQuMmwyMi43IDYuN2MxMy41IDQgMjcuMyA2LjQgNDEuMyA3LjRWMTk0Yy03LjgtLjgtMTUuNi0yLjMtMjMuMi00LjVsLTQwLjgtMTJ2LTYyYy0xMy0zLjgtMjUuOC04LjgtMzguMi0xNWMtOC4yLTQuMS0xNi45LTctMjUuOC04Ljh2NzIuNGMtMTMtLjQtMjYgLjgtMzguNyAzLjZMMTI4IDE3My4yVjk4TDY0IDExNHY3My4xek0zMjAgMzM1LjdjMTYuOCAxLjUgMzMuOS0uNyA1MC02LjhsMTQtNS4yVjI1MS45bC03LjkgMS44Yy0xOC40IDQuMy0zNy4zIDUuNy01Ni4xIDQuNXY3Ny40em02NC0xNDkuNFYxMTUuNGMtMjAuOSA2LjEtNDIuNCA5LjEtNjQgOS4xVjE5NGMxMy45IDEuNCAyOCAuNSA0MS43LTIuNmwyMi4zLTUuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmxhZ1VzYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAwQzQ5LjcgMCA2NCAxNC4zIDY0IDMyVjQ4bDY5LTE3LjJjMzguMS05LjUgNzguMy01LjEgMTEzLjUgMTIuNWM0Ni4zIDIzLjIgMTAwLjggMjMuMiAxNDcuMSAwbDkuNi00LjhDNDIzLjggMjguMSA0NDggNDMuMSA0NDggNjYuMXYzNi4xbC00NC43IDE2LjJjLTQyLjggMTUuNi05MCAxMy45LTEzMS42LTQuNmwtMTYuMS03LjJjLTIwLjMtOS00MS44LTE0LjctNjMuNi0xNi45djMyLjJjMTcuNCAyLjEgMzQuNCA2LjcgNTAuNiAxMy45bDE2LjEgNy4yYzQ5LjIgMjEuOSAxMDUgMjMuOCAxNTUuNiA1LjRMNDQ4IDEzNi4zdjYybC00NC43IDE2LjJjLTQyLjggMTUuNi05MCAxMy45LTEzMS42LTQuNmwtMTYuMS03LjJjLTQwLjItMTcuOS04NS0yMi41LTEyOC4xLTEzLjNMNjQgMjAzLjF2MzIuN2w3MC4yLTE1LjFjMzYuNC03LjggNzQuMy0zLjkgMTA4LjQgMTEuM2wxNi4xIDcuMmM0OS4yIDIxLjkgMTA1IDIzLjggMTU1LjYgNS40TDQ0OCAyMzIuM3Y2MmwtNDQuNyAxNi4yYy00Mi44IDE1LjYtOTAgMTMuOS0xMzEuNi00LjZsLTE2LjEtNy4yYy00MC4yLTE3LjktODUtMjIuNS0xMjguMS0xMy4zTDY0IDI5OS4xdjMyLjdsNzAuMi0xNS4xYzM2LjQtNy44IDc0LjMtMy45IDEwOC40IDExLjNsMTYuMSA3LjJjNDkuMiAyMS45IDEwNSAyMy44IDE1NS42IDUuNEw0NDggMzI4LjN2MzMuNWMwIDEzLjMtOC4zIDI1LjMtMjAuOCAzMGwtMzQuNyAxM2MtNDYuMiAxNy4zLTk3LjYgMTQuNi0xNDEuNy03LjRjLTM3LjktMTktODEuMy0yMy43LTEyMi41LTEzLjRMNjQgNDAwdjgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQxNiAzNDUuNSAzMTIuOCAyNDkuNSAyMTYuOCAxNTMuNSAxMjAuOCA2NCAzMkMwIDE0LjMgMTQuMyAwIDMyIDB6bTgwIDk2QTE2IDE2IDAgMSAwIDgwIDk2YTE2IDE2IDAgMSAwIDMyIDB6bTMyIDBhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0tMzIgNDhhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptMzIgMGExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDNjQgMTQuMyA0OS43IDAgMzIgMFMwIDE0LjMgMCAzMlY2NCAzNjggNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzUybDY0LjMtMTYuMWM0MS4xLTEwLjMgODQuNi01LjUgMTIyLjUgMTMuNGM0NC4yIDIyLjEgOTUuNSAyNC44IDE0MS43IDcuNGwzNC43LTEzYzEyLjUtNC43IDIwLjgtMTYuNiAyMC44LTMwVjY2LjFjMC0yMy0yNC4yLTM4LTQ0LjgtMjcuN2wtOS42IDQuOGMtNDYuMyAyMy4yLTEwMC44IDIzLjItMTQ3LjEgMGMtMzUuMS0xNy42LTc1LjQtMjItMTEzLjUtMTIuNUw2NCA0OFYzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmxhc2tWaWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NSAzODkuNGMtOS44IDE2LTE1IDM0LjMtMTUgNTMuMWMtMTAgMy41LTIwLjggNS41LTMyIDUuNWMtNTMgMC05Ni00My05Ni05NlY2NEMxNC4zIDY0IDAgNDkuNyAwIDMyUzE0LjMgMCAzMiAwSDk2aDY0IDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyVjMwOS45bC00OSA3OS42ek05NiA2NHY5Nmg2NFY2NEg5NnpNMzUyIDBINDgwaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyVjIxNC45TDYyOS43IDQwNi4yYzYuNyAxMC45IDEwLjMgMjMuNSAxMC4zIDM2LjRjMCAzOC4zLTMxLjEgNjkuNC02OS40IDY5LjRIMjYxLjRjLTM4LjMgMC02OS40LTMxLjEtNjkuNC02OS40YzAtMTIuOCAzLjYtMjUuNCAxMC4zLTM2LjRMMzIwIDIxNC45VjY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDMyem0zMiA2NFYyMjRjMCA1LjktMS42IDExLjctNC43IDE2LjhMMzMwLjUgMzIwaDE3MWwtNDguOC03OS4yYy0zLjEtNS00LjctMTAuOC00LjctMTYuOFY2NEgzODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAwSDE2MCAxMjhDMTEwLjMgMCA5NiAxNC4zIDk2IDMyczE0LjMgMzIgMzIgMzJWMTk2LjhjMCAxMS44LTMuMyAyMy41LTkuNSAzMy41TDEwLjMgNDA2LjJDMy42IDQxNy4yIDAgNDI5LjcgMCA0NDIuNkMwIDQ4MC45IDMxLjEgNTEyIDY5LjQgNTEySDM3OC42YzM4LjMgMCA2OS40LTMxLjEgNjkuNC02OS40YzAtMTIuOC0zLjYtMjUuNC0xMC4zLTM2LjRMMzI5LjUgMjMwLjRjLTYuMi0xMC4xLTkuNS0yMS43LTkuNS0zMy41VjY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI4OHpNMTkyIDE5Ni44VjY0aDY0VjE5Ni44YzAgMjMuNyA2LjYgNDYuOSAxOSA2Ny4xTDMwOS41IDMyMGgtMTcxTDE3MyAyNjMuOWMxMi40LTIwLjIgMTktNDMuNCAxOS02Ny4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbG9wcHlEaXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNzMuM2MwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wzNTIgNTAuN0MzNDAgMzguNyAzMjMuNyAzMiAzMDYuNyAzMkg2NHptMCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMkgyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjEyOHpNMjI0IDI4OGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmxvcmluU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTQuNyAzMmMtMzguOCAwLTczLjcgMjMuMy04OC42IDU5LjFMMTcwLjcgMjI0SDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDgwTDk4LjkgMzk2LjNjLTUgMTEuOS0xNi42IDE5LjctMjkuNSAxOS43SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY5LjNjMzguOCAwIDczLjctMjMuMyA4OC42LTU5LjFMMjEzLjMgMjg4SDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNDBsNDUuMS0xMDguM2M1LTExLjkgMTYuNi0xOS43IDI5LjUtMTkuN0gzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzE0Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbGRlckNsb3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNDgwSDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxOTJINTEyVjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NHptNjQtMzIwSDBWOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMTkyYzIwLjEgMCAzOS4xIDkuNSA1MS4yIDI1LjZsMTkuMiAyNS42YzYgOC4xIDE1LjUgMTIuOCAyNS42IDEyLjhINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb2xkZXJNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNDgwSDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgxOTJjMjAuMSAwIDM5LjEgOS41IDUxLjIgMjUuNmwxOS4yIDI1LjZjNiA4LjEgMTUuNSAxMi44IDI1LjYgMTIuOEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0ek0xODQgMjcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDMyOGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbGRlck9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODguNyAyMjMuOEwwIDM3NS44Vjk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDE4MS41YzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43bDI2LjUgMjYuNWMxMiAxMiAyOC4zIDE4LjcgNDUuMyAxOC43SDQxNmMzNS4zIDAgNjQgMjguNyA2NCA2NHYzMkgxNDRjLTIyLjggMC00My44IDEyLjEtNTUuMyAzMS44em0yNy42IDE2LjFDMTIyLjEgMjMwIDEzMi42IDIyNCAxNDQgMjI0SDU0NGMxMS41IDAgMjIgNi4xIDI3LjcgMTYuMXM1LjcgMjIuMi0uMSAzMi4xbC0xMTIgMTkyQzQ1My45IDQ3NCA0NDMuNCA0ODAgNDMyIDQ4MEgzMmMtMTEuNSAwLTIyLTYuMS0yNy43LTE2LjFzLTUuNy0yMi4yIC4xLTMyLjFsMTEyLTE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9sZGVyUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgxOTJjMjAuMSAwIDM5LjEgOS41IDUxLjIgMjUuNmwxOS4yIDI1LjZjNiA4LjEgMTUuNSAxMi44IDI1LjYgMTIuOEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2ek0yMzIgMzc2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMzEyaDY0YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDI4MFYyMDBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NjRIMTY4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDY0djY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb2xkZXJUcmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzY0IDE0LjMgNDkuNyAwIDMyIDBTMCAxNC4zIDAgMzJ2OTZWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDI1NlYzODRINjRWMTYwSDI1NlY5Nkg2NFYzMnpNMjg4IDE5MmMwIDE3LjcgMTQuMyAzMiAzMiAzMkg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJINDQ1LjNjLTguNSAwLTE2LjYtMy40LTIyLjYtOS40TDQwOS40IDkuNGMtNi02LTE0LjEtOS40LTIyLjYtOS40SDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWMTkyem0wIDI4OGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDQ0NS4zYy04LjUgMC0xNi42LTMuNC0yMi42LTkuNGwtMTMuMy0xMy4zYy02LTYtMTQuMS05LjQtMjIuNi05LjRIMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0ODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA0ODBINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MGMwLTM1LjMtMjguNy02NC02NC02NEgyODhjLTEwLjEgMC0xOS42LTQuNy0yNS42LTEyLjhMMjQzLjIgNTcuNkMyMzEuMSA0MS41IDIxMi4xIDMyIDE5MiAzMkg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTQgNTIuOEMyNDkuMyA0MC4zIDIzNy4zIDMyIDIyNCAzMnMtMjUuMyA4LjMtMzAgMjAuOEw1Ny44IDQxNkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmgtMS44bDE4LTQ4SDMwMy44bDE4IDQ4SDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzOTAuMkwyNTQgNTIuOHpNMjc5LjggMzA0SDE2OC4yTDIyNCAxNTUuMSAyNzkuOCAzMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvb3RiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny41IDI1LjRjLTEzLjUgMy4zLTI2LjQgNy4yLTM4LjYgMTEuN0MxNDIuOSA2MS42IDk2LjcgMTAzLjYgNjYgMTUzLjZjLTE4LjMgMjkuOC0zMC45IDYyLjMtMzkuMiA5NS40TDI2NC41IDQ4Ni42YzEzLjUtMy4zIDI2LjQtNy4yIDM4LjYtMTEuN2M2Ni0yNC41IDExMi4yLTY2LjUgMTQyLjktMTE2LjVjMTguMy0yOS44IDMwLjktNjIuMyAzOS4xLTk1LjNMMjQ3LjUgMjUuNHpNNDk1LjIgMjA1LjNjNi4xLTU2LjggMS40LTExMi4yLTcuNy0xNTYuNGMtMi43LTEyLjktMTMtMjIuOS0yNi4xLTI1LjFjLTU4LjItOS43LTEwOS45LTEyLTE1NS42LTcuOUw0OTUuMiAyMDUuM3pNMjA2LjEgNDk2TDE2LjggMzA2LjdjLTYuMSA1Ni44LTEuNCAxMTIuMiA3LjcgMTU2LjRjMi43IDEyLjkgMTMgMjIuOSAyNi4xIDI1LjFjNTguMiA5LjcgMTA5LjkgMTIgMTU1LjYgNy45em01NC42LTMzMS4zYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwbDY0IDY0YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBsLTY0LTY0Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnptLTQ4IDQ4YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwbDY0IDY0YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBsLTY0LTY0Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnptLTQ4IDQ4YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwbDY0IDY0YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBsLTY0LTY0Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9yd2FyZEZhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNCA0NDVjMTEuMiA1LjMgMjQuNSAzLjYgMzQuMS00LjRMMjI0IDI5Ny43VjQxNmMwIDEyLjQgNy4yIDIzLjcgMTguNCAyOXMyNC41IDMuNiAzNC4xLTQuNEw0NDggMjk3LjdWNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWOTZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjE0LjNMMjc2LjUgNzEuNGMtOS41LTcuOS0yMi44LTkuNy0zNC4xLTQuNFMyMjQgODMuNiAyMjQgOTZWMjE0LjNMNTIuNSA3MS40Yy05LjUtNy45LTIyLjgtOS43LTM0LjEtNC40UzAgODMuNiAwIDk2VjQxNmMwIDEyLjQgNy4yIDIzLjcgMTguNCAyOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9yd2FyZFN0ZXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTIuNSA0NDAuNmMtOS41IDcuOS0yMi44IDkuNy0zNC4xIDQuNFMwIDQyOC40IDAgNDE2Vjk2QzAgODMuNiA3LjIgNzIuMyAxOC40IDY3czI0LjUtMy42IDM0LjEgNC40bDE5MiAxNjBMMjU2IDI0MVY5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyNzFsLTExLjUgOS42LTE5MiAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvcndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTIuNSA0NDAuNmMtOS41IDcuOS0yMi44IDkuNy0zNC4xIDQuNFMwIDQyOC40IDAgNDE2Vjk2QzAgODMuNiA3LjIgNzIuMyAxOC40IDY3czI0LjUtMy42IDM0LjEgNC40TDIyNCAyMTQuM1YyNTZ2NDEuN0w1Mi41IDQ0MC42ek0yNTYgMzUyVjI1NiAxMjggOTZjMC0xMi40IDcuMi0yMy43IDE4LjQtMjlzMjQuNS0zLjYgMzQuMSA0LjRsMTkyIDE2MGM3LjMgNi4xIDExLjUgMTUuMSAxMS41IDI0LjZzLTQuMiAxOC41LTExLjUgMjQuNmwtMTkyIDE2MGMtOS41IDcuOS0yMi44IDkuNy0zNC4xIDQuNHMtMTguNC0xNi42LTE4LjQtMjlWMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGcmFuY1NpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgMzJDNjIuMyAzMiA0OCA0Ni4zIDQ4IDY0VjIyNHY5NkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0OHY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGg4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxMTJWMjU2SDI1NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxMTJWOTZIMjg4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGcm9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCAzMmM0MS43IDAgNzUuOSAzMS44IDc5LjcgNzIuNWw4NS42IDI2LjNjMjUuNCA3LjggNDIuOCAzMS4zIDQyLjggNTcuOWMwIDIxLjgtMTEuNyA0MS45LTMwLjcgNTIuN0w0MDAuOCAzMjMuNSA0OTMuMyA0MTZINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQ4MGMtOC41IDAtMTYuNi0zLjQtMjIuNi05LjRMMzQ2LjkgMzYwLjJjMTEuNy0zNiAzLjItNzcuMS0yNS40LTEwNS43Yy00MC42LTQwLjYtMTA2LjMtNDAuNi0xNDYuOS0uMUwxMDEgMzI0LjRjLTYuNCA2LjEtNi43IDE2LjItLjYgMjIuNnMxNi4yIDYuNiAyMi42IC42bDczLjgtNzAuMiAuMS0uMSAuMS0uMWMzLjUtMy41IDcuMy02LjYgMTEuMy05LjJjMjcuOS0xOC41IDY1LjktMTUuNCA5MC41IDkuMmMyNC43IDI0LjcgMjcuNyA2Mi45IDkgOTAuOWMtMi42IDMuOC01LjYgNy41LTkgMTAuOUwyNjEuOCA0MTZIMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NEMwIDI0OS42IDEyNyAxMTIuOSAyODkuMyA5Ny41QzI5Ni4yIDYwLjIgMzI4LjggMzIgMzY4IDMyem0wIDEwNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZ1dGJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTcuMyAzNjAuMWwtNzEuNi00LjhjLTUuMi0uMy0xMC4zIDEuMS0xNC41IDQuMnMtNy4yIDcuNC04LjQgMTIuNWwtMTcuNiA2OS42QzI4OS41IDQ0NS44IDI3MyA0NDggMjU2IDQ0OHMtMzMuNS0yLjItNDkuMi02LjRMMTg5LjIgMzcyYy0xLjMtNS00LjMtOS40LTguNC0xMi41cy05LjMtNC41LTE0LjUtNC4ybC03MS42IDQuOGMtMTcuNi0yNy4yLTI4LjUtNTkuMi0zMC40LTkzLjZMMTI1IDIyOC4zYzQuNC0yLjggNy42LTcgOS4yLTExLjlzMS40LTEwLjItLjUtMTVsLTI2LjctNjYuNkMxMjggMTA5LjIgMTU1LjMgODkgMTg2LjcgNzYuOWw1NS4yIDQ2YzQgMy4zIDkgNS4xIDE0LjEgNS4xczEwLjItMS44IDE0LjEtNS4xbDU1LjItNDZjMzEuMyAxMi4xIDU4LjcgMzIuMyA3OS42IDU3LjlsLTI2LjcgNjYuNmMtMS45IDQuOC0yLjEgMTAuMS0uNSAxNXM0LjkgOS4xIDkuMiAxMS45bDYwLjcgMzguMmMtMS45IDM0LjQtMTIuOCA2Ni40LTMwLjQgOTMuNnpNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTE0LjEtMzI1LjdjLTguNC02LjEtMTkuOC02LjEtMjguMiAwTDE5NCAyMjFjLTguNCA2LjEtMTEuOSAxNi45LTguNyAyNi44bDE4LjMgNTYuM2MzLjIgOS45IDEyLjQgMTYuNiAyMi44IDE2LjZoNTkuMmMxMC40IDAgMTkuNi02LjcgMjIuOC0xNi42bDE4LjMtNTYuM2MzLjItOS45LS4zLTIwLjctOC43LTI2LjhsLTQ3LjktMzQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgOTZDMTM1LjYgOTYgNjQgMTY3LjYgNjQgMjU2czcxLjYgMTYwIDE2MCAxNjBjNzcuNCAwIDE0Mi01NSAxNTYuOC0xMjhIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDQwMGMyNS44IDAgNDkuNiAyMS40IDQ3LjIgNTAuNkM0MzcuOCAzODkuNiAzNDEuNCA0ODAgMjI0IDQ4MEMxMDAuMyA0ODAgMCAzNzkuNyAwIDI1NlMxMDAuMyAzMiAyMjQgMzJjNTcuNCAwIDEwOS43IDIxLjYgMTQ5LjMgNTdjMTMuMiAxMS44IDE0LjMgMzIgMi41IDQ1LjJzLTMyIDE0LjMtNDUuMiAyLjVDMzAyLjMgMTExLjQgMjY1IDk2IDIyNCA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2FtZXBhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNjRDODYgNjQgMCAxNTAgMCAyNTZTODYgNDQ4IDE5MiA0NDhINDQ4YzEwNiAwIDE5Mi04NiAxOTItMTkycy04Ni0xOTItMTkyLTE5MkgxOTJ6TTQ5NiAxNjhhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgwek0zOTIgMzA0YTQwIDQwIDAgMSAxIDgwIDAgNDAgNDAgMCAxIDEgLTgwIDB6TTE2OCAyMDBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHYzMmgzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMTZ2MzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjgwSDEzNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGgzMlYyMDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdhc1B1bXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNjRDMzIgMjguNyA2MC43IDAgOTYgMEgyNTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMjU2aDhjNDguNiAwIDg4IDM5LjQgODggODh2MzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYyMjJjLTI3LjYtNy4xLTQ4LTMyLjItNDgtNjJWOTZMMzg0IDY0Yy04LjgtOC44LTguOC0yMy4yIDAtMzJzMjMuMi04LjggMzIgMGw3Ny4zIDc3LjNjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM1YxNjh2MjQgMzJWMzc2YzAgMzkuOC0zMi4yIDcyLTcyIDcycy03Mi0zMi4yLTcyLTcyVjM0NGMwLTIyLjEtMTcuOS00MC00MC00MGgtOFY0NDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJWNjR6TTk2IDgwdjk2YzAgOC44IDcuMiAxNiAxNiAxNkgyNDBjOC44IDAgMTYtNy4yIDE2LTE2VjgwYzAtOC44LTcuMi0xNi0xNi0xNkgxMTJjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2F1Z2VIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpNMjg4IDk2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTI1NiA0MTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRjMC0xNy40LTYuOS0zMy4xLTE4LjEtNDQuNkwzNjYgMTYxLjdjNS4zLTEyLjEtLjItMjYuMy0xMi4zLTMxLjZzLTI2LjMgLjItMzEuNiAxMi4zTDI1Ny45IDI4OGMtLjYgMC0xLjMgMC0xLjkgMGMtMzUuMyAwLTY0IDI4LjctNjQgNjRzMjguNyA2NCA2NCA2NHpNMTc2IDE0NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek05NiAyODhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0zNTItMzJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2F1Z2VTaW1wbGVIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzIwIDk2YzAtMTUuOS01LjgtMzAuNC0xNS4zLTQxLjZsNzYuNi0xNDcuNGM2LjEtMTEuOCAxLjUtMjYuMy0xMC4yLTMyLjRzLTI2LjItMS41LTMyLjQgMTAuMkwyNjIuMSAyODguM2MtMi0uMi00LS4zLTYuMS0uM2MtMzUuMyAwLTY0IDI4LjctNjQgNjRzMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHYXVnZVNpbXBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTMyMCA5NmMwLTI2LjktMTYuNS00OS45LTQwLTU5LjNWODhjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWMjkyLjdjLTIzLjUgOS41LTQwIDMyLjUtNDAgNTkuM2MwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHYXVnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTMyMCA5NmMwLTI2LjktMTYuNS00OS45LTQwLTU5LjNWODhjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWMjkyLjdjLTIzLjUgOS41LTQwIDMyLjUtNDAgNTkuM2MwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0ek0xNDQgMTc2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptLTE2IDgwYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTI4OCAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTQwMCAxNDRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2F2ZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE4LjYgOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTIwIDEyMGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsMTYgMTZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsNC00TDMyNS40IDI5My40bC00IDRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE2IDE2YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDEyMC0xMjBjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTE2LTE2Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtNCA0TDMzMC42IDc0LjZsNC00YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xNi0xNnptLTE1MiAyODhjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xMTIgMTEyYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w0OCA0OGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxMTItMTEyYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xLjQtMS40TDI3MiAyODUuMyAyMjYuNyAyNDAgMTY4IDI5OC43bC0xLjQtMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NS45IDE2Ni42YzMuMiA4LjcgLjUgMTguNC02LjQgMjQuNmwtNDMuMyAzOS40YzEuMSA4LjMgMS43IDE2LjggMS43IDI1LjRzLS42IDE3LjEtMS43IDI1LjRsNDMuMyAzOS40YzYuOSA2LjIgOS42IDE1LjkgNi40IDI0LjZjLTQuNCAxMS45LTkuNyAyMy4zLTE1LjggMzQuM2wtNC43IDguMWMtNi42IDExLTE0IDIxLjQtMjIuMSAzMS4yYy01LjkgNy4yLTE1LjcgOS42LTI0LjUgNi44bC01NS43LTE3LjdjLTEzLjQgMTAuMy0yOC4yIDE4LjktNDQgMjUuNGwtMTIuNSA1Ny4xYy0yIDkuMS05IDE2LjMtMTguMiAxNy44Yy0xMy44IDIuMy0yOCAzLjUtNDIuNSAzLjVzLTI4LjctMS4yLTQyLjUtMy41Yy05LjItMS41LTE2LjItOC43LTE4LjItMTcuOGwtMTIuNS01Ny4xYy0xNS44LTYuNS0zMC42LTE1LjEtNDQtMjUuNEw4My4xIDQyNS45Yy04LjggMi44LTE4LjYgLjMtMjQuNS02LjhjLTguMS05LjgtMTUuNS0yMC4yLTIyLjEtMzEuMmwtNC43LTguMWMtNi4xLTExLTExLjQtMjIuNC0xNS44LTM0LjNjLTMuMi04LjctLjUtMTguNCA2LjQtMjQuNmw0My4zLTM5LjRDNjQuNiAyNzMuMSA2NCAyNjQuNiA2NCAyNTZzLjYtMTcuMSAxLjctMjUuNEwyMi40IDE5MS4yYy02LjktNi4yLTkuNi0xNS45LTYuNC0yNC42YzQuNC0xMS45IDkuNy0yMy4zIDE1LjgtMzQuM2w0LjctOC4xYzYuNi0xMSAxNC0yMS40IDIyLjEtMzEuMmM1LjktNy4yIDE1LjctOS42IDI0LjUtNi44bDU1LjcgMTcuN2MxMy40LTEwLjMgMjguMi0xOC45IDQ0LTI1LjRsMTIuNS01Ny4xYzItOS4xIDktMTYuMyAxOC4yLTE3LjhDMjI3LjMgMS4yIDI0MS41IDAgMjU2IDBzMjguNyAxLjIgNDIuNSAzLjVjOS4yIDEuNSAxNi4yIDguNyAxOC4yIDE3LjhsMTIuNSA1Ny4xYzE1LjggNi41IDMwLjYgMTUuMSA0NCAyNS40bDU1LjctMTcuN2M4LjgtMi44IDE4LjYtLjMgMjQuNSA2LjhjOC4xIDkuOCAxNS41IDIwLjIgMjIuMSAzMS4ybDQuNyA4LjFjNi4xIDExIDExLjQgMjIuNCAxNS44IDM0LjN6TTI1NiAzMzZhODAgODAgMCAxIDAgMC0xNjAgODAgODAgMCAxIDAgMCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdlYXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwOC41IDEzNS4zYzcuMS02LjMgOS45LTE2LjIgNi4yLTI1Yy0yLjMtNS4zLTQuOC0xMC41LTcuNi0xNS41TDMwNCA4OS40Yy0zLTUtNi4zLTkuOS05LjgtMTQuNmMtNS43LTcuNi0xNS43LTEwLjEtMjQuNy03LjFsLTI4LjIgOS4zYy0xMC43LTguOC0yMy0xNi0zNi4yLTIwLjlMMTk5IDI3LjFjLTEuOS05LjMtOS4xLTE2LjctMTguNS0xNy44QzE3My45IDguNCAxNjcuMiA4IDE2MC40IDhoLS43Yy02LjggMC0xMy41IC40LTIwLjEgMS4yYy05LjQgMS4xLTE2LjYgOC42LTE4LjUgMTcuOEwxMTUgNTYuMWMtMTMuMyA1LTI1LjUgMTIuMS0zNi4yIDIwLjlMNTAuNSA2Ny44Yy05LTMtMTktLjUtMjQuNyA3LjFjLTMuNSA0LjctNi44IDkuNi05LjkgMTQuNmwtMyA1LjNjLTIuOCA1LTUuMyAxMC4yLTcuNiAxNS42Yy0zLjcgOC43LS45IDE4LjYgNi4yIDI1bDIyLjIgMTkuOEMzMi42IDE2MS45IDMyIDE2OC45IDMyIDE3NnMuNiAxNC4xIDEuNyAyMC45TDExLjUgMjE2LjdjLTcuMSA2LjMtOS45IDE2LjItNi4yIDI1YzIuMyA1LjMgNC44IDEwLjUgNy42IDE1LjZsMyA1LjJjMyA1LjEgNi4zIDkuOSA5LjkgMTQuNmM1LjcgNy42IDE1LjcgMTAuMSAyNC43IDcuMWwyOC4yLTkuM2MxMC43IDguOCAyMyAxNiAzNi4yIDIwLjlsNi4xIDI5LjFjMS45IDkuMyA5LjEgMTYuNyAxOC41IDE3LjhjNi43IC44IDEzLjUgMS4yIDIwLjQgMS4yczEzLjctLjQgMjAuNC0xLjJjOS40LTEuMSAxNi42LTguNiAxOC41LTE3LjhsNi4xLTI5LjFjMTMuMy01IDI1LjUtMTIuMSAzNi4yLTIwLjlsMjguMiA5LjNjOSAzIDE5IC41IDI0LjctNy4xYzMuNS00LjcgNi44LTkuNSA5LjgtMTQuNmwzLjEtNS40YzIuOC01IDUuMy0xMC4yIDcuNi0xNS41YzMuNy04LjcgLjktMTguNi02LjItMjVsLTIyLjItMTkuOGMxLjEtNi44IDEuNy0xMy44IDEuNy0yMC45cy0uNi0xNC4xLTEuNy0yMC45bDIyLjItMTkuOHpNMTEyIDE3NmE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwek01MDQuNyA1MDAuNWM2LjMgNy4xIDE2LjIgOS45IDI1IDYuMmM1LjMtMi4zIDEwLjUtNC44IDE1LjUtNy42bDUuNC0zLjFjNS0zIDkuOS02LjMgMTQuNi05LjhjNy42LTUuNyAxMC4xLTE1LjcgNy4xLTI0LjdsLTkuMy0yOC4yYzguOC0xMC43IDE2LTIzIDIwLjktMzYuMmwyOS4xLTYuMWM5LjMtMS45IDE2LjctOS4xIDE3LjgtMTguNWMuOC02LjcgMS4yLTEzLjUgMS4yLTIwLjRzLS40LTEzLjctMS4yLTIwLjRjLTEuMS05LjQtOC42LTE2LjYtMTcuOC0xOC41TDU4My45IDMwN2MtNS0xMy4zLTEyLjEtMjUuNS0yMC45LTM2LjJsOS4zLTI4LjJjMy05IC41LTE5LTcuMS0yNC43Yy00LjctMy41LTkuNi02LjgtMTQuNi05LjlsLTUuMy0zYy01LTIuOC0xMC4yLTUuMy0xNS42LTcuNmMtOC43LTMuNy0xOC42LS45LTI1IDYuMmwtMTkuOCAyMi4yYy02LjgtMS4xLTEzLjgtMS43LTIwLjktMS43cy0xNC4xIC42LTIwLjkgMS43bC0xOS44LTIyLjJjLTYuMy03LjEtMTYuMi05LjktMjUtNi4yYy01LjMgMi4zLTEwLjUgNC44LTE1LjYgNy42bC01LjIgM2MtNS4xIDMtOS45IDYuMy0xNC42IDkuOWMtNy42IDUuNy0xMC4xIDE1LjctNy4xIDI0LjdsOS4zIDI4LjJjLTguOCAxMC43LTE2IDIzLTIwLjkgMzYuMkwzMTUuMSAzMTNjLTkuMyAxLjktMTYuNyA5LjEtMTcuOCAxOC41Yy0uOCA2LjctMS4yIDEzLjUtMS4yIDIwLjRzLjQgMTMuNyAxLjIgMjAuNGMxLjEgOS40IDguNiAxNi42IDE3LjggMTguNWwyOS4xIDYuMWM1IDEzLjMgMTIuMSAyNS41IDIwLjkgMzYuMmwtOS4zIDI4LjJjLTMgOS0uNSAxOSA3LjEgMjQuN2M0LjcgMy41IDkuNSA2LjggMTQuNiA5LjhsNS40IDMuMWM1IDIuOCAxMC4yIDUuMyAxNS41IDcuNmM4LjcgMy43IDE4LjYgLjkgMjUtNi4ybDE5LjgtMjIuMmM2LjggMS4xIDEzLjggMS43IDIwLjkgMS43czE0LjEtLjYgMjAuOS0xLjdsMTkuOCAyMi4yek00NjQgMzA0YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2VtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExNi43IDMzLjhjNC41LTYuMSAxMS43LTkuOCAxOS4zLTkuOEgzNzZjNy42IDAgMTQuOCAzLjYgMTkuMyA5LjhsMTEyIDE1MmM2LjggOS4yIDYuMSAyMS45LTEuNSAzMC40bC0yMzIgMjU2Yy00LjUgNS0xMSA3LjktMTcuOCA3LjlzLTEzLjItMi45LTE3LjgtNy45bC0yMzItMjU2Yy03LjctOC41LTguMy0yMS4yLTEuNS0zMC40bDExMi0xNTJ6bTM4LjUgMzkuOGMtMy4zIDIuNS00LjIgNy0yLjEgMTAuNWw1Ny40IDk1LjZMNjMuMyAxOTJjLTQuMSAuMy03LjMgMy44LTcuMyA4czMuMiA3LjYgNy4zIDhsMTkyIDE2Yy40IDAgLjkgMCAxLjMgMGwxOTItMTZjNC4xLS4zIDcuMy0zLjggNy4zLThzLTMuMi03LjYtNy4zLThMMzAxLjUgMTc5LjhsNTcuNC05NS42YzIuMS0zLjUgMS4yLTguMS0yLjEtMTAuNXMtNy45LTItMTAuNyAxTDI1NiAxNzIuMiAxNjUuOSA3NC42Yy0yLjgtMy03LjQtMy40LTEwLjctMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2VuZGVybGVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMTQ0YTExMiAxMTIgMCAxIDEgMCAyMjQgMTEyIDExMiAwIDEgMSAwLTIyNHptMCAyODhhMTc2IDE3NiAwIDEgMCAwLTM1MiAxNzYgMTc2IDAgMSAwIDAgMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHaG9zdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MC4xIDQ2Ny4xbC0xMS4yIDljLTMuMiAyLjUtNy4xIDMuOS0xMS4xIDMuOUM4IDQ4MCAwIDQ3MiAwIDQ2Mi4yVjE5MkMwIDg2IDg2IDAgMTkyIDBTMzg0IDg2IDM4NCAxOTJWNDYyLjJjMCA5LjgtOCAxNy44LTE3LjggMTcuOGMtNCAwLTcuOS0xLjQtMTEuMS0zLjlsLTExLjItOWMtMTMuNC0xMC43LTMyLjgtOS00NC4xIDMuOUwyNjkuMyA1MDZjLTMuMyAzLjgtOC4yIDYtMTMuMyA2cy05LjktMi4yLTEzLjMtNmwtMjYuNi0zMC41Yy0xMi43LTE0LjYtMzUuNC0xNC42LTQ4LjIgMEwxNDEuMyA1MDZjLTMuMyAzLjgtOC4yIDYtMTMuMyA2cy05LjktMi4yLTEzLjMtNkw4NC4yIDQ3MWMtMTEuMy0xMi45LTMwLjctMTQuNi00NC4xLTMuOXpNMTYwIDE5MmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem05NiAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkwLjUgNjguOEwyMjUuMyAxMjhIMjI0IDE1MmMtMjIuMSAwLTQwLTE3LjktNDAtNDBzMTcuOS00MCA0MC00MGgyLjJjMTQuOSAwIDI4LjggNy45IDM2LjMgMjAuOHpNNjQgODhjMCAxNC40IDMuNSAyOCA5LjYgNDBIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJINDM4LjRjNi4xLTEyIDkuNi0yNS42IDkuNi00MGMwLTQ4LjYtMzkuNC04OC04OC04OGgtMi4yYy0zMS45IDAtNjEuNSAxNi45LTc3LjcgNDQuNEwyNTYgODUuNWwtMjQuMS00MUMyMTUuNyAxNi45IDE4Ni4xIDAgMTU0LjIgMEgxNTJDMTAzLjQgMCA2NCAzOS40IDY0IDg4em0zMzYgMGMwIDIyLjEtMTcuOSA0MC00MCA0MEgyODhoLTEuM2wzNC44LTU5LjJDMzI5LjEgNTUuOSAzNDIuOSA0OCAzNTcuOCA0OEgzNjBjMjIuMSAwIDQwIDE3LjkgNDAgNDB6TTMyIDI4OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhIMjI0VjI4OEgzMnpNMjg4IDUxMkg0MzJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMjg4SDI4OFY1MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpZnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMC42IDMyQzIwNSAxOS41IDE5OC41IDUuOCAxODYgMS40UzE1OS44IDMuNSAxNTUuNCAxNkwxNDQuNyA0Ni4ybC05LjktMjkuOEMxMzAuNiAzLjggMTE3LTMgMTA0LjQgMS4yUzg1IDE5IDg5LjIgMzEuNmw4LjMgMjUtMjcuNC0yMGMtMTAuNy03LjgtMjUuNy01LjQtMzMuNSA1LjNzLTUuNCAyNS43IDUuMyAzMy41TDcwLjIgOTZINDhDMjEuNSA5NiAwIDExNy41IDAgMTQ0VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgyMDAuNmMtNS40LTkuNC04LjYtMjAuMy04LjYtMzJWMjU2YzAtMjkuOSAyMC41LTU1IDQ4LjItNjJjMS44LTMxIDE3LjEtNTguMiA0MC4xLTc2LjFDMjcxLjcgMTA0LjcgMjU2LjkgOTYgMjQwIDk2SDIxNy44bDI4LjMtMjAuNmMxMC43LTcuOCAxMy4xLTIyLjggNS4zLTMzLjVzLTIyLjgtMTMuMS0zMy41LTUuM0wxOTIuNSA1NS4xIDIwMC42IDMyek0zNjMuNSAxODUuNUwzOTMuMSAyMjRIMzQ0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNGMwLTEzLjEgMTAuOC0yNCAyNC4yLTI0YzcuNiAwIDE0LjcgMy41IDE5LjMgOS41ek0yNzIgMjAwYzAgOC40IDEuNCAxNi41IDQuMSAyNEgyNzJjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djgwSDQxNlYyNTZoMzJ2OTZINjQwVjI3MmMwLTI2LjUtMjEuNS00OC00OC00OGgtNC4xYzIuNy03LjUgNC4xLTE1LjYgNC4xLTI0YzAtMzkuOS0zMi41LTcyLTcyLjItNzJjLTIyLjQgMC00My42IDEwLjQtNTcuMyAyOC4yTDQzMiAxOTUuOGwtMzAuNS0zOS42Yy0xMy43LTE3LjgtMzUtMjguMi01Ny4zLTI4LjJjLTM5LjcgMC03Mi4yIDMyLjEtNzIuMiA3MnpNMjI0IDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0MTZWMzg0SDIyNHY4MHptMjI0IDQ4SDU5MmMyNi41IDAgNDgtMjEuNSA0OC00OFYzODRINDQ4VjUxMnptOTYtMzEyYzAgMTMuMy0xMC43IDI0LTI0IDI0SDQ3MC45bDI5LjYtMzguNWM0LjYtNS45IDExLjctOS41IDE5LjMtOS41YzEzLjQgMCAyNC4yIDEwLjkgMjQuMiAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xhc3NXYXRlckRyb3BsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMEMyMy4xIDAgMTQuNiAzLjcgOC42IDEwLjJTLS42IDI1LjQgLjEgMzQuM0wyOC45IDQzNy43YzMgNDEuOSAzNy44IDc0LjMgNzkuOCA3NC4zSDI3NS4zYzQyIDAgNzYuOC0zMi40IDc5LjgtNzQuM0wzODMuOSAzNC4zYy42LTguOS0yLjQtMTcuNi04LjUtMjQuMVMzNjAuOSAwIDM1MiAwSDMyek04MyAyOTcuNUw2Ni40IDY0SDMxNy42TDMwMSAyOTcuNSAyODggMzA0Yy0yMC4xIDEwLjEtNDMuOSAxMC4xLTY0IDBzLTQzLjktMTAuMS02NCAwcy00My45IDEwLjEtNjQgMGwtMTMtNi41ek0yNTYgMTk2YzAtMjQtMzMuNy03MC4xLTUyLjItOTMuNWMtNi4xLTcuNy0xNy41LTcuNy0yMy42IDBDMTYxLjcgMTI1LjkgMTI4IDE3MiAxMjggMTk2YzAgMzMuMSAyOC43IDYwIDY0IDYwczY0LTI2LjkgNjQtNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsYXNzV2F0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMEMyMy4xIDAgMTQuNiAzLjcgOC42IDEwLjJTLS42IDI1LjQgLjEgMzQuM0wyOC45IDQzNy43YzMgNDEuOSAzNy44IDc0LjMgNzkuOCA3NC4zSDI3NS4zYzQyIDAgNzYuOC0zMi40IDc5LjgtNzQuM0wzODMuOSAzNC4zYy42LTguOS0yLjQtMTcuNi04LjUtMjQuMVMzNjAuOSAwIDM1MiAwSDMyek03MyAxNTYuNUw2Ni40IDY0SDMxNy42TDMxMSAxNTYuNWwtMjQuMiAxMi4xYy0xOS40IDkuNy00Mi4yIDkuNy02MS42IDBjLTIwLjktMTAuNC00NS41LTEwLjQtNjYuNCAwYy0xOS40IDkuNy00Mi4yIDkuNy02MS42IDBMNzMgMTU2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsYXNzZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE4LjYgODBjLTExLjUgMC0yMS40IDcuOS0yNCAxOS4xTDU3IDI2MC4zYzIwLjUtNi4yIDQ4LjMtMTIuMyA3OC43LTEyLjNjMzIuMyAwIDYxLjggNi45IDgyLjggMTMuNWMxMC42IDMuMyAxOS4zIDYuNyAyNS40IDkuMmMzLjEgMS4zIDUuNSAyLjQgNy4zIDMuMmMuOSAuNCAxLjYgLjcgMi4xIDFsLjYgLjMgLjIgLjEgLjEgMCAwIDAgMCAwczAgMC02LjMgMTIuN2gwbDYuMy0xMi43YzUuOCAyLjkgMTAuNCA3LjMgMTMuNSAxMi43aDQwLjZjMy4xLTUuMyA3LjctOS44IDEzLjUtMTIuN2w2LjMgMTIuN2gwYy02LjMtMTIuNy02LjMtMTIuNy02LjMtMTIuN2wwIDAgMCAwIC4xIDAgLjItLjEgLjYtLjNjLjUtLjIgMS4yLS42IDIuMS0xYzEuOC0uOCA0LjItMS45IDcuMy0zLjJjNi4xLTIuNiAxNC44LTUuOSAyNS40LTkuMmMyMS02LjYgNTAuNC0xMy41IDgyLjgtMTMuNWMzMC40IDAgNTguMiA2LjEgNzguNyAxMi4zTDQ4MS40IDk5LjFjLTIuNi0xMS4yLTEyLjYtMTkuMS0yNC0xOS4xYy0zLjEgMC02LjIgLjYtOS4yIDEuOEw0MTYuOSA5NC4zYy0xMi4zIDQuOS0yNi4zLTEuMS0zMS4yLTEzLjRzMS4xLTI2LjMgMTMuNC0zMS4ybDMxLjMtMTIuNWM4LjYtMy40IDE3LjctNS4yIDI3LTUuMmMzMy44IDAgNjMuMSAyMy4zIDcwLjggNTYuMmw0My45IDE4OGMxLjcgNy4zIDIuOSAxNC43IDMuNSAyMi4xYy4zIDEuOSAuNSAzLjggLjUgNS43djYuN1YzNTJ2MTZjMCA2MS45LTUwLjEgMTEyLTExMiAxMTJINDE5LjdjLTU5LjQgMC0xMDguNS00Ni40LTExMS44LTEwNS44TDMwNi42IDM1MkgyNjkuNGwtMS4yIDIyLjJDMjY0LjkgNDMzLjYgMjE1LjggNDgwIDE1Ni4zIDQ4MEgxMTJDNTAuMSA0ODAgMCA0MjkuOSAwIDM2OFYzNTIgMzEwLjcgMzA0YzAtMS45IC4yLTMuOCAuNS01LjdjLjYtNy40IDEuOC0xNC44IDMuNS0yMi4xbDQzLjktMTg4QzU1LjUgNTUuMyA4NC44IDMyIDExOC42IDMyYzkuMiAwIDE4LjQgMS44IDI3IDUuMmwzMS4zIDEyLjVjMTIuMyA0LjkgMTguMyAxOC45IDEzLjQgMzEuMnMtMTguOSAxOC4zLTMxLjIgMTMuNEwxMjcuOCA4MS44Yy0yLjktMS4yLTYtMS44LTkuMi0xLjh6TTY0IDMyNS40VjM2OGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0NC4zYzI1LjUgMCA0Ni41LTE5LjkgNDcuOS00NS4zbDIuNS00NS42Yy0yLjMtLjgtNC45LTEuNy03LjUtMi41Yy0xNy4yLTUuNC0zOS45LTEwLjUtNjMuNi0xMC41Yy0yMy43IDAtNDYuMiA1LjEtNjMuMiAxMC41Yy0zLjEgMS01LjkgMS45LTguNSAyLjl6TTUxMiAzNjhWMzI1LjRjLTIuNi0uOS01LjUtMS45LTguNS0yLjljLTE3LTUuNC0zOS41LTEwLjUtNjMuMi0xMC41Yy0yMy43IDAtNDYuNCA1LjEtNjMuNiAxMC41Yy0yLjcgLjgtNS4yIDEuNy03LjUgMi41bDIuNSA0NS42YzEuNCAyNS40IDIyLjUgNDUuMyA0Ny45IDQ1LjNINDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbG9iZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMjU2YzAgMjIuMi0xLjIgNDMuNi0zLjMgNjRIMTYzLjNjLTIuMi0yMC40LTMuMy00MS44LTMuMy02NHMxLjItNDMuNiAzLjMtNjRIMzQ4LjdjMi4yIDIwLjQgMy4zIDQxLjggMy4zIDY0em0yOC44LTY0SDUwMy45YzUuMyAyMC41IDguMSA0MS45IDguMSA2NHMtMi44IDQzLjUtOC4xIDY0SDM4MC44YzIuMS0yMC42IDMuMi00MiAzLjItNjRzLTEuMS00My40LTMuMi02NHptMTEyLjYtMzJIMzc2LjdjLTEwLTYzLjktMjkuOC0xMTcuNC01NS4zLTE1MS42Yzc4LjMgMjAuNyAxNDIgNzcuNSAxNzEuOSAxNTEuNnptLTE0OS4xIDBIMTY3LjdjNi4xLTM2LjQgMTUuNS02OC42IDI3LTk0LjdjMTAuNS0yMy42IDIyLjItNDAuNyAzMy41LTUxLjVDMjM5LjQgMy4yIDI0OC43IDAgMjU2IDBzMTYuNiAzLjIgMjcuOCAxMy44YzExLjMgMTAuOCAyMyAyNy45IDMzLjUgNTEuNWMxMS42IDI2IDIwLjkgNTguMiAyNyA5NC43em0tMjA5IDBIMTguNkM0OC42IDg1LjkgMTEyLjIgMjkuMSAxOTAuNiA4LjRDMTY1LjEgNDIuNiAxNDUuMyA5Ni4xIDEzNS4zIDE2MHpNOC4xIDE5MkgxMzEuMmMtMi4xIDIwLjYtMy4yIDQyLTMuMiA2NHMxLjEgNDMuNCAzLjIgNjRIOC4xQzIuOCAyOTkuNSAwIDI3OC4xIDAgMjU2czIuOC00My41IDguMS02NHpNMTk0LjcgNDQ2LjZjLTExLjYtMjYtMjAuOS01OC4yLTI3LTk0LjZIMzQ0LjNjLTYuMSAzNi40LTE1LjUgNjguNi0yNyA5NC42Yy0xMC41IDIzLjYtMjIuMiA0MC43LTMzLjUgNTEuNUMyNzIuNiA1MDguOCAyNjMuMyA1MTIgMjU2IDUxMnMtMTYuNi0zLjItMjcuOC0xMy44Yy0xMS4zLTEwLjgtMjMtMjcuOS0zMy41LTUxLjV6TTEzNS4zIDM1MmMxMCA2My45IDI5LjggMTE3LjQgNTUuMyAxNTEuNkMxMTIuMiA0ODIuOSA0OC42IDQyNi4xIDE4LjYgMzUySDEzNS4zem0zNTguMSAwYy0zMCA3NC4xLTkzLjYgMTMwLjktMTcxLjkgMTUxLjZjMjUuNS0zNC4yIDQ1LjItODcuNyA1NS4zLTE1MS42SDQ5My40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb2xmQmFsbFRlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMTkyYzAgNjYuOC0zNC4xIDEyNS42LTg1LjggMTYwSDg1LjhDMzQuMSAzMTcuNiAwIDI1OC44IDAgMTkyQzAgODYgODYgMCAxOTIgMFMzODQgODYgMzg0IDE5MnpNMjQyLjEgMjU2LjZjMCAxOC41LTE1IDMzLjUtMzMuNSAzMy41Yy00LjkgMC05LjEgNS4xLTUuNCA4LjRjNS45IDUuMiAxMy43IDguNCAyMi4xIDguNGMxOC41IDAgMzMuNS0xNSAzMy41LTMzLjVjMC04LjUtMy4yLTE2LjItOC40LTIyLjFjLTMuMy0zLjctOC40IC41LTguNCA1LjR6bS01Mi4zLTQ5LjNjLTQuOSAwLTkuMSA1LjEtNS40IDguNGM1LjkgNS4yIDEzLjcgOC40IDIyLjEgOC40YzE4LjUgMCAzMy41LTE1IDMzLjUtMzMuNWMwLTguNS0zLjItMTYuMi04LjQtMjIuMWMtMy4zLTMuNy04LjQgLjUtOC40IDUuNGMwIDE4LjUtMTUgMzMuNS0zMy41IDMzLjV6bTExMy41LTE3LjVjMCAxOC41LTE1IDMzLjUtMzMuNSAzMy41Yy00LjkgMC05LjEgNS4xLTUuNCA4LjRjNS45IDUuMiAxMy43IDguNCAyMi4xIDguNGMxOC41IDAgMzMuNS0xNSAzMy41LTMzLjVjMC04LjUtMy4yLTE2LjItOC40LTIyLjFjLTMuMy0zLjctOC40IC41LTguNCA1LjR6TTk2IDQxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NCA2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyNDBjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NjRjMC04LjgtNy4yLTE2LTE2LTE2SDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvcHVyYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIwIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjR2OGg0MFYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djhoNDhWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY4aDQwVjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2OFY2NHY2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkg0MTZWMzUySDM4NFYyMjRIMzUyVjEyOEgzMjB2OTZoMzJWMzUyaDMyVjUxMkgzMDRWNDY0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4djQ4SDEyOFYzNTJoMzJWMjI0aDMyVjEyOEgxNjB2OTZIMTI4VjM1Mkg5NlY1MTJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMlYyNTZjMC0xNy43IDE0LjMtMzIgMzItMzJWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyVjY0IDMyIDI0YzAtMTMuMyAxMC43LTI0IDI0LTI0ek0yNTYgMjcyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY0OGg2NFYzMDRjMC0xNy43LTE0LjMtMzItMzItMzJ6bS0zMi04MHYzMmg2NFYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyYWR1YXRpb25DYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDMyYy04LjEgMC0xNi4xIDEuNC0yMy43IDQuMUwxNS44IDEzNy40QzYuMyAxNDAuOSAwIDE0OS45IDAgMTYwczYuMyAxOS4xIDE1LjggMjIuNmw1Ny45IDIwLjlDNTcuMyAyMjkuMyA0OCAyNTkuOCA0OCAyOTEuOXYyOC4xYzAgMjguNC0xMC44IDU3LjctMjIuMyA4MC44Yy02LjUgMTMtMTMuOSAyNS44LTIyLjUgMzcuNkMwIDQ0Mi43LS45IDQ0OC4zIC45IDQ1My40czYgOC45IDExLjIgMTAuMmw2NCAxNmM0LjIgMS4xIDguNyAuMyAxMi40LTJzNi4zLTYuMSA3LjEtMTAuNGM4LjYtNDIuOCA0LjMtODEuMi0yLjEtMTA4LjdDOTAuMyAzNDQuMyA4NiAzMjkuOCA4MCAzMTYuNVYyOTEuOWMwLTMwLjIgMTAuMi01OC43IDI3LjktODEuNWMxMi45LTE1LjUgMjkuNi0yOCA0OS4yLTM1LjdsMTU3LTYxLjdjOC4yLTMuMiAxNy41IC44IDIwLjcgOXMtLjggMTcuNS05IDIwLjdsLTE1NyA2MS43Yy0xMi40IDQuOS0yMy4zIDEyLjQtMzIuMiAyMS42bDE1OS42IDU3LjZjNy42IDIuNyAxNS42IDQuMSAyMy43IDQuMXMxNi4xLTEuNCAyMy43LTQuMUw2MjQuMiAxODIuNmM5LjUtMy40IDE1LjgtMTIuNSAxNS44LTIyLjZzLTYuMy0xOS4xLTE1LjgtMjIuNkwzNDMuNyAzNi4xQzMzNi4xIDMzLjQgMzI4LjEgMzIgMzIwIDMyek0xMjggNDA4YzAgMzUuMyA4NiA3MiAxOTIgNzJzMTkyLTM2LjcgMTkyLTcyTDQ5Ni43IDI2Mi42IDM1NC41IDMxNGMtMTEuMSA0LTIyLjggNi0zNC41IDZzLTIzLjUtMi0zNC41LTZMMTQzLjMgMjYyLjYgMTI4IDQwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JlYXRlclRoYW5FcXVhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Mi4xIDkzLjdDMzUuNyA4Ny4xIDI3LjcgNjguNSAzNC4zIDUyLjFzMjUuMi0yNC40IDQxLjYtMTcuOGwzMjAgMTI4QzQwOCAxNjcuMSA0MTYgMTc4LjkgNDE2IDE5MnMtOCAyNC45LTIwLjEgMjkuN2wtMzIwIDEyOGMtMTYuNCA2LjYtMzUtMS40LTQxLjYtMTcuOHMxLjQtMzUgMTcuOC00MS42TDI5Ny44IDE5MiA1Mi4xIDkzLjd6TTQxNiA0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmVhdGVyVGhhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjQgODEuN2MtNy45IDE1LjgtMS41IDM1IDE0LjMgNDIuOUwyODAuNSAyNTYgMTcuNyAzODcuNEMxLjkgMzk1LjMtNC41IDQxNC41IDMuNCA0MzAuM3MyNy4xIDIyLjIgNDIuOSAxNC4zbDMyMC0xNjBjMTAuOC01LjQgMTcuNy0xNi41IDE3LjctMjguNnMtNi44LTIzLjItMTcuNy0yOC42bC0zMjAtMTYwYy0xNS44LTcuOS0zNS0xLjUtNDIuOSAxNC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmlwTGluZXNWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMlMwIDQ2LjMgMCA2NFY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY2NHptMTI4IDBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaXBMaW5lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAyODhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzg0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMzIgMjg4em0wLTEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzODQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaXBWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MCAzNTJsNDggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ4YzAgMjIuMS0xNy45IDQwLTQwIDQwbC00OCAwYy0yMi4xIDAtNDAtMTcuOS00MC00MGwwLTQ4YzAtMjIuMSAxNy45LTQwIDQwLTQwem0xOTIgMGw0OCAwYzIyLjEgMCA0MCAxNy45IDQwIDQwbDAgNDhjMCAyMi4xLTE3LjkgNDAtNDAgNDBsLTQ4IDBjLTIyLjEgMC00MC0xNy45LTQwLTQwbDAtNDhjMC0yMi4xIDE3LjktNDAgNDAtNDB6TTQwIDMyMGMtMjIuMSAwLTQwLTE3LjktNDAtNDBsMC00OGMwLTIyLjEgMTcuOS00MCA0MC00MGw0OCAwYzIyLjEgMCA0MCAxNy45IDQwIDQwbDAgNDhjMCAyMi4xLTE3LjkgNDAtNDAgNDBsLTQ4IDB6TTIzMiAxOTJsNDggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ4YzAgMjIuMS0xNy45IDQwLTQwIDQwbC00OCAwYy0yMi4xIDAtNDAtMTcuOS00MC00MGwwLTQ4YzAtMjIuMSAxNy45LTQwIDQwLTQwek00MCAxNjBjLTIyLjEgMC00MC0xNy45LTQwLTQwTDAgNzJDMCA0OS45IDE3LjkgMzIgNDAgMzJsNDggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ4YzAgMjIuMS0xNy45IDQwLTQwIDQwbC00OCAwek0yMzIgMzJsNDggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ4YzAgMjIuMS0xNy45IDQwLTQwIDQwbC00OCAwYy0yMi4xIDAtNDAtMTcuOS00MC00MGwwLTQ4YzAtMjIuMSAxNy45LTQwIDQwLTQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAxMzZjMC0yMi4xLTE3LjktNDAtNDAtNDBMNDAgOTZDMTcuOSA5NiAwIDExMy45IDAgMTM2bDAgNDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBIODhjMjIuMSAwIDQwLTE3LjkgNDAtNDBsMC00OHptMCAxOTJjMC0yMi4xLTE3LjktNDAtNDAtNDBINDBjLTIyLjEgMC00MCAxNy45LTQwIDQwbDAgNDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBIODhjMjIuMSAwIDQwLTE3LjkgNDAtNDBWMzI4em0zMi0xOTJ2NDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBoNDhjMjIuMSAwIDQwLTE3LjkgNDAtNDBWMTM2YzAtMjIuMS0xNy45LTQwLTQwLTQwbC00OCAwYy0yMi4xIDAtNDAgMTcuOS00MCA0MHpNMjg4IDMyOGMwLTIyLjEtMTcuOS00MC00MC00MEgyMDBjLTIyLjEgMC00MCAxNy45LTQwIDQwbDAgNDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBoNDhjMjIuMSAwIDQwLTE3LjkgNDAtNDBWMzI4em0zMi0xOTJ2NDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBoNDhjMjIuMSAwIDQwLTE3LjkgNDAtNDBWMTM2YzAtMjIuMS0xNy45LTQwLTQwLTQwbC00OCAwYy0yMi4xIDAtNDAgMTcuOS00MCA0MHpNNDQ4IDMyOGMwLTIyLjEtMTcuOS00MC00MC00MEgzNjBjLTIyLjEgMC00MCAxNy45LTQwIDQwdjQ4YzAgMjIuMSAxNy45IDQwIDQwIDQwaDQ4YzIyLjEgMCA0MC0xNy45IDQwLTQwVjMyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JvdXBBcnJvd3NSb3RhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAxLjEgNzEuOWMxNi45LTUgMjYuNi0yMi45IDIxLjUtMzkuOHMtMjIuOS0yNi42LTM5LjgtMjEuNWMtMjEuNSA2LjQtNDEuOCAxNS41LTYwLjYgMjdDMTE0LjMgMzQgMTA1LjQgMzIgOTYgMzJDNjAuNyAzMiAzMiA2MC43IDMyIDk2YzAgOS40IDIgMTguMyA1LjYgMjYuM2MtMTEuNSAxOC43LTIwLjYgMzktMjcgNjAuNmMtNSAxNi45IDQuNiAzNC44IDIxLjUgMzkuOHMzNC44LTQuNiAzOS44LTIxLjVjNC4zLTE0LjYgMTAuNC0yOC41IDE3LjktNDEuNGMyIC4yIDQuMSAuMyA2LjEgLjNjMzUuMyAwIDY0LTI4LjcgNjQtNjRjMC0yLjEtLjEtNC4xLS4zLTYuMWMxMi45LTcuNSAyNi44LTEzLjYgNDEuNC0xNy45em0xMjgtNjEuM2MtMTYuOS01LTM0LjggNC42LTM5LjggMjEuNXM0LjYgMzQuOCAyMS41IDM5LjhjMTQuNiA0LjMgMjguNSAxMC40IDQxLjQgMTcuOWMtLjIgMi0uMyA0LjEtLjMgNi4xYzAgMzUuMyAyOC43IDY0IDY0IDY0YzIuMSAwIDQuMS0uMSA2LjItLjNjNy41IDEyLjkgMTMuNiAyNi44IDE3LjkgNDEuNGM1IDE2LjkgMjIuOSAyNi42IDM5LjggMjEuNXMyNi42LTIyLjkgMjEuNS0zOS44Yy02LjQtMjEuNS0xNS41LTQxLjgtMjctNjAuNmMzLjYtOCA1LjYtMTYuOSA1LjYtMjYuM2MwLTM1LjMtMjguNy02NC02NC02NGMtOS40IDAtMTguMyAyLTI2LjMgNS42Yy0xOC43LTExLjUtMzktMjAuNi02MC42LTI3ek03MS45IDMxMC45Yy01LTE2LjktMjIuOS0yNi42LTM5LjgtMjEuNXMtMjYuNiAyMi45LTIxLjUgMzkuOGM2LjQgMjEuNSAxNS41IDQxLjggMjcgNjAuNkMzNCAzOTcuNyAzMiA0MDYuNiAzMiA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRjOS40IDAgMTguMy0yIDI2LjMtNS42YzE4LjcgMTEuNSAzOSAyMC42IDYwLjYgMjdjMTYuOSA1IDM0LjgtNC42IDM5LjgtMjEuNXMtNC42LTM0LjgtMjEuNS0zOS44Yy0xNC42LTQuMy0yOC41LTEwLjQtNDEuNC0xNy45Yy4yLTIgLjMtNC4xIC4zLTYuMmMwLTM1LjMtMjguNy02NC02NC02NGMtMi4xIDAtNC4xIC4xLTYuMiAuM2MtNy41LTEyLjktMTMuNi0yNi44LTE3LjktNDEuNHptNDI5LjQgMTguM2M1LTE2LjktNC42LTM0LjgtMjEuNS0zOS44cy0zNC44IDQuNi0zOS44IDIxLjVjLTQuMyAxNC42LTEwLjQgMjguNS0xNy45IDQxLjRjLTItLjItNC4xLS4zLTYuMi0uM2MtMzUuMyAwLTY0IDI4LjctNjQgNjRjMCAyLjEgLjEgNC4xIC4zIDYuMmMtMTIuOSA3LjUtMjYuOCAxMy42LTQxLjQgMTcuOWMtMTYuOSA1LTI2LjYgMjIuOS0yMS41IDM5LjhzMjIuOSAyNi42IDM5LjggMjEuNWMyMS41LTYuNCA0MS44LTE1LjUgNjAuNi0yN2M4IDMuNiAxNi45IDUuNiAyNi4zIDUuNmMzNS4zIDAgNjQtMjguNyA2NC02NGMwLTkuNC0yLTE4LjMtNS42LTI2LjNjMTEuNS0xOC43IDIwLjYtMzkgMjctNjAuNnpNMTkyLjggMjU2LjhjMC0xNS42IDUuNi0yOS45IDE0LjktNDEuMUwyMjMgMjMxYzYuNiA2LjYgMTcuOCAxLjkgMTcuOC03LjRWMTYzLjJjMC01LjctNC43LTEwLjQtMTAuNC0xMC40SDE2OS45Yy05LjMgMC0xMy45IDExLjItNy40IDE3LjhsMTEuMiAxMS4yYy0xNy45IDE5LjgtMjguOSA0Ni4yLTI4LjkgNzUuMWMwIDQzLjYgMjQuOSA4MS4zIDYxLjEgOTkuOGMxMS44IDYgMjYuMyAxLjQgMzIuMy0xMC40czEuNC0yNi4zLTEwLjQtMzIuM2MtMjAuOC0xMC42LTM0LjktMzIuMi0zNC45LTU3em05My4xLTU4LjZjMjAuOCAxMC42IDM0LjkgMzIuMiAzNC45IDU3YzAgMTUuNi01LjYgMjkuOS0xNC45IDQxLjFMMjkwLjYgMjgxYy02LjYtNi42LTE3LjgtMS45LTE3LjggNy40djYwLjVjMCA1LjcgNC43IDEwLjQgMTAuNCAxMC40aDYwLjVjOS4zIDAgMTMuOS0xMS4yIDcuNC0xNy44bC0xMS4yLTExLjJjMTcuOS0xOS44IDI4LjktNDYuMiAyOC45LTc1LjFjMC00My42LTI0LjktODEuMy02MS4xLTk5LjhjLTExLjgtNi0yNi4zLTEuNC0zMi4zIDEwLjRzLTEuNCAyNi4zIDEwLjQgMzIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3VhcmFuaVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjY2LjdDNjkuMiA4MS45IDAgMTYwLjkgMCAyNTZzNjkuMiAxNzQuMSAxNjAgMTg5LjNWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDQ1LjNjOTAuOC0xNS4yIDE2MC05NC4yIDE2MC0xODkuM2MwLTE3LjctMTQuMy0zMi0zMi0zMkgyMjRWMTMyYzIyLjEgNS43IDQxLjggMTcuMSA1Ny42IDMyLjZjMTIuNiAxMi40IDMyLjkgMTIuMiA0NS4zLS40czEyLjItMzIuOS0uNS00NS4zQzI5OSA5MiAyNjMuNSA3My4zIDIyNCA2Ni43VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0xNjAgMTMyVjM4MGMtNTUuMi0xNC4yLTk2LTY0LjMtOTYtMTI0czQwLjgtMTA5LjggOTYtMTI0ek0yMjQgMzgwVjI4OGg5MmMtMTEuNiA0NS00NyA4MC40LTkyIDkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHdWl0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY1IDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDM4MyA1NWMtMi40IDIuNC00LjMgNS4zLTUuNSA4LjVsLTE1LjQgNDEtNzcuNSA3Ny42Yy00NS4xLTI5LjQtOTkuMy0zMC4yLTEzMSAxLjZjLTExIDExLTE4IDI0LjYtMjEuNCAzOS42Yy0zLjcgMTYuNi0xOS4xIDMwLjctMzYuMSAzMS42Yy0yNS42IDEuMy00OS4zIDEwLjctNjcuMyAyOC42Qy0xNiAzMjguNC03LjYgNDA5LjQgNDcuNSA0NjQuNXMxMzYuMSA2My41IDE4MC45IDE4LjdjMTcuOS0xNy45IDI3LjQtNDEuNyAyOC42LTY3LjNjLjktMTcgMTUtMzIuMyAzMS42LTM2LjFjMTUtMy40IDI4LjYtMTAuNSAzOS42LTIxLjRjMzEuOC0zMS44IDMxLTg1LjkgMS42LTEzMWw3Ny42LTc3LjYgNDEtMTUuNGMzLjItMS4yIDYuMS0zLjEgOC41LTUuNWw0OC00OGM5LjQtOS40IDkuNC0yNC42IDAtMzMuOUw0NjUgN3pNMjA4IDI1NmE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUd1biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjggNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2OEgzMkMxNC4zIDY0IDAgNzguMyAwIDk2VjIwOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg0MmMyMC44IDAgMzYuMSAxOS42IDMxIDM5LjhMMzMgNDQwLjJjLTIuNCA5LjYtLjIgMTkuNyA1LjggMjcuNVM1NC4xIDQ4MCA2NCA0ODBoOTZjMTQuNyAwIDI3LjUtMTAgMzEtMjQuMkwyMTcgMzUySDMyMS40YzIzLjcgMCA0NC44LTE0LjkgNTIuNy0zNy4yTDQwMC45IDI0MEg0MzJjOC41IDAgMTYuNi0zLjQgMjIuNi05LjRMNDc3LjMgMjA4SDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMlY5NmMwLTE3LjctMTQuMy0zMi0zMi0zMkg1MjhWNTZ6TTMyMS40IDMwNEgyMjlsMTYtNjRoMTA1bC0yMSA1OC43Yy0xLjEgMy4yLTQuMiA1LjMtNy41IDUuM3pNODAgMTI4SDQ2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMjU2bDAgMTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yMjRWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMTkyTDY0IDE5MiA2NCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMlMwIDQ2LjMgMCA2NFY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTE5MiAyNTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFtbWVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxMy41IDIzNy41Yy0yOC4yIDQuOC01OC4yLTMuNi04MC0yNS40bC0zOC4xLTM4LjFDMjgwLjQgMTU5IDI3MiAxMzguOCAyNzIgMTE3LjZWMTA1LjVMMTkyLjMgNjJjLTUuMy0yLjktOC42LTguNi04LjMtMTQuN3MzLjktMTEuNSA5LjUtMTRsNDcuMi0yMUMyNTkuMSA0LjIgMjc5IDAgMjk5LjIgMGgxOC4xYzM2LjcgMCA3MiAxNCA5OC43IDM5LjFsNDQuNiA0MmMyNC4yIDIyLjggMzMuMiA1NS43IDI2LjYgODZMNTAzIDE4M2w4LThjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMjQgMjRjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTg4IDg4Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtMjQtMjRjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDgtOC0xNy41LTE3LjV6TTI3LjQgMzc3LjFMMjYwLjkgMTgyLjZjMy41IDQuOSA3LjUgOS42IDExLjggMTRsMzguMSAzOC4xYzYgNiAxMi40IDExLjIgMTkuMiAxNS43TDEzNC45IDQ4NC42Yy0xNC41IDE3LjQtMzYgMjcuNC01OC42IDI3LjRDMzQuMSA1MTIgMCA0NzcuOCAwIDQzNS43YzAtMjIuNiAxMC4xLTQ0LjEgMjcuNC01OC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW1zYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNC42IDI4OEg4MGM4LjggMCAxNi03LjIgMTYtMTZWNzJjMC0yMi4xIDE3LjktNDAgNDAtNDBzNDAgMTcuOSA0MCA0MFYyMDRjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBWNDBjMC0yMi4xIDE3LjktNDAgNDAtNDBzNDAgMTcuOSA0MCA0MFYyMDRjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBWNzJjMC0yMi4xIDE3LjktNDAgNDAtNDBzNDAgMTcuOSA0MCA0MFYyNzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ1LjRjMTkuMSAwIDM0LjYgMTUuNSAzNC42IDM0LjZjMCA4LjYtMy4yIDE2LjktOSAyMy4zTDQxNi42IDQ0MWMtNDEuMSA0NS4yLTk5LjQgNzEtMTYwLjYgNzFzLTExOS40LTI1LjgtMTYwLjYtNzFMOSAzNDUuOWMtNS44LTYuNC05LTE0LjctOS0yMy4zQzAgMzAzLjUgMTUuNSAyODggMzQuNiAyODh6TTI1NiAyODhjLTM4LjQgMC03Ni44IDM1LjgtOTAuNiA1MC4yYy0zLjYgMy43LTUuNCA4LjctNS40IDEzLjhzMS44IDEwLjEgNS40IDEzLjhDMTc5LjIgMzgwLjIgMjE3LjYgNDE2IDI1NiA0MTZzNzYuOC0zNS44IDkwLjYtNTAuMmMzLjYtMy43IDUuNC04LjcgNS40LTEzLjhzLTEuOC0xMC4xLTUuNC0xMy44QzMzMi44IDMyMy44IDI5NC40IDI4OCAyNTYgMjg4em0wIDMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEJhY2tGaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAwQzExNy41IDAgOTYgMjEuNSA5NiA0OFY5NnYyOC41VjE3NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYxNDkuM2wtOSA3LjVDNDAuNCAxNjkgMzIgMTg3IDMyIDIwNlYyNDRjMCAzOCAxNi45IDc0IDQ2LjEgOTguM0wxMjggMzg0djk2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNzQuN2M0Ni45LTE5IDgwLTY1IDgwLTExOC43VjE3NiAxNjAgMTQ0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4Yy0xMi40IDAtMjMuNiA0LjctMzIuMSAxMi4zQzM1MCA4My41IDMyOS4zIDY0IDMwNCA2NGMtMTIuNCAwLTIzLjYgNC43LTMyLjEgMTIuM0MyNzAgNTEuNSAyNDkuMyAzMiAyMjQgMzJjLTEyLjQgMC0yMy42IDQuNy0zMi4xIDEyLjNDMTkwIDE5LjUgMTY5LjMgMCAxNDQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZERvdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjI0MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYzMzZjMCAxLjUgMCAzLjEgLjEgNC42TDY3LjYgMjgzYy0xNi0xNS4yLTQxLjMtMTQuNi01Ni42IDEuNHMtMTQuNiA0MS4zIDEuNCA1Ni42TDEyNC44IDQ0OGM0My4xIDQxLjEgMTAwLjQgNjQgMTYwIDY0SDMwNGM5Ny4yIDAgMTc2LTc4LjggMTc2LTE3NlYxMjhjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjQwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjI0MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzMnpNMjQwIDMzNmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwem04MCAxNmExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6bTQ4LTE2YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6bS0xNiA4MGExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6TTI0MCA0MzJhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHptLTQ4LTQ4YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEZpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMTQ0SDE2MFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNNjQgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY4MEg2NFY2NHptMTkyIDBjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY2NHptOTYgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxMjh6bS05NiA4OGwwLS42YzkuNCA1LjQgMjAuMyA4LjYgMzIgOC42YzEzLjIgMCAyNS40LTQgMzUuNi0xMC44YzguNyAyNC45IDMyLjUgNDIuOCA2MC40IDQyLjhjMTEuNyAwIDIyLjYtMy4xIDMyLTguNlYyNTZjMCA1Mi4zLTI1LjEgOTguOC02NCAxMjh2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDEuNmMtMTcuMy03LjktMzMuMi0xOC44LTQ2LjktMzIuNUw2OS41IDM1Ny41QzQ1LjUgMzMzLjUgMzIgMzAwLjkgMzIgMjY3VjI0MGMwLTM1LjMgMjguNy02NCA2NC02NGg4OGMyMi4xIDAgNDAgMTcuOSA0MCA0MHMtMTcuOSA0MC00MCA0MEgxMjhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoNTZjMzkuOCAwIDcyLTMyLjIgNzItNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRIb2xkaW5nRG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMiAyNFYzNC41YzYuNCAxLjIgMTIuNiAyLjcgMTguMiA0LjJjMTIuOCAzLjQgMjAuNCAxNi42IDE3IDI5LjRzLTE2LjYgMjAuNC0yOS40IDE3Yy0xMC45LTIuOS0yMS4xLTQuOS0zMC4yLTVjLTcuMy0uMS0xNC43IDEuNy0xOS40IDQuNGMtMi4xIDEuMy0zLjEgMi40LTMuNSAzYy0uMyAuNS0uNyAxLjItLjcgMi44YzAgLjMgMCAuNSAwIC42Yy4yIC4yIC45IDEuMiAzLjMgMi42YzUuOCAzLjUgMTQuNCA2LjIgMjcuNCAxMC4xbC45IC4zYzExLjEgMy4zIDI1LjkgNy44IDM3LjkgMTUuM2MxMy43IDguNiAyNi4xIDIyLjkgMjYuNCA0NC45Yy4zIDIyLjUtMTEuNCAzOC45LTI2LjcgNDguNWMtNi43IDQuMS0xMy45IDctMjEuMyA4LjhWMjMyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjIyMC42Yy05LjUtMi4zLTE4LjItNS4zLTI1LjYtNy44Yy0yLjEtLjctNC4xLTEuNC02LTJjLTEyLjYtNC4yLTE5LjQtMTcuOC0xNS4yLTMwLjRzMTcuOC0xOS40IDMwLjQtMTUuMmMyLjYgLjkgNSAxLjcgNy4zIDIuNWMxMy42IDQuNiAyMy40IDcuOSAzMy45IDguM2M4IC4zIDE1LjEtMS42IDE5LjItNC4xYzEuOS0xLjIgMi44LTIuMiAzLjItMi45Yy40LS42IC45LTEuOCAuOC00LjFsMC0uMmMwLTEgMC0yLjEtNC00LjZjLTUuNy0zLjYtMTQuMy02LjQtMjcuMS0xMC4zbC0xLjktLjZjLTEwLjgtMy4yLTI1LTcuNS0zNi40LTE0LjRjLTEzLjUtOC4xLTI2LjUtMjItMjYuNi00NC4xYy0uMS0yMi45IDEyLjktMzguNiAyNy43LTQ3LjRjNi40LTMuOCAxMy4zLTYuNCAyMC4yLTguMlYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0ek01NjguMiAzMzYuM2MxMy4xIDE3LjggOS4zIDQyLjgtOC41IDU1LjlMNDMzLjEgNDg1LjVjLTIzLjQgMTcuMi01MS42IDI2LjUtODAuNyAyNi41SDE5MiAzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDY4LjhsNDQuOS0zNmMyMi43LTE4LjIgNTAuOS0yOCA4MC0yOEgyNzJoMTYgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjg4IDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkgzOTIuNmwxMTkuNy04OC4yYzE3LjgtMTMuMSA0Mi44LTkuMyA1NS45IDguNXpNMTkzLjYgMzg0bDAgMC0uOSAwYy4zIDAgLjYgMCAuOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kSG9sZGluZ0Ryb3BsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc1LjUgNi42QzI3OC4zIDIuNSAyODMgMCAyODggMHM5LjcgMi41IDEyLjUgNi42TDM2Ni44IDEwM0MzNzggMTE5LjMgMzg0IDEzOC42IDM4NCAxNTguM1YxNjBjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZ2LTEuN2MwLTE5LjggNi0zOSAxNy4yLTU1LjNMMjc1LjUgNi42ek01NjguMiAzMzYuM2MxMy4xIDE3LjggOS4zIDQyLjgtOC41IDU1LjlMNDMzLjEgNDg1LjVjLTIzLjQgMTcuMi01MS42IDI2LjUtODAuNyAyNi41SDE5MiAzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDY4LjhsNDQuOS0zNmMyMi43LTE4LjIgNTAuOS0yOCA4MC0yOEgyNzJoMTYgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjg4IDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkgzOTIuNmwxMTkuNy04OC4yYzE3LjgtMTMuMSA0Mi44LTkuMyA1NS45IDguNXpNMTkzLjYgMzg0bDAgMC0uOSAwYy4zIDAgLjYgMCAuOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kSG9sZGluZ0hhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy44IDIwNy43Yy0xMy4xLTE3LjgtOS4zLTQyLjggOC41LTU1LjlMMTQyLjkgNTguNUMxNjYuMiA0MS4zIDE5NC41IDMyIDIyMy41IDMySDM4NCA1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJINTA3LjJsLTQ0LjkgMzZjLTIyLjcgMTguMi01MC45IDI4LTgwIDI4SDMwNCAyODggMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDY0IDE2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDE4My40TDYzLjcgMjE2LjJjLTE3LjggMTMuMS00Mi44IDkuMy01NS45LTguNXpNMzgyLjQgMTYwbDAgMCAuOSAwYy0uMyAwLS42IDAtLjkgMHpNNTY4LjIgMzA0LjNjMTMuMSAxNy44IDkuMyA0Mi44LTguNSA1NS45TDQzMy4xIDQ1My41Yy0yMy40IDE3LjItNTEuNiAyNi41LTgwLjcgMjYuNUgxOTIgMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg2OC44bDQ0LjktMzZjMjIuNy0xOC4yIDUwLjktMjggODAtMjhIMjcyaDE2IDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI4OCAyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZIMzkyLjZsMTE5LjctODguMmMxNy44LTEzLjEgNDIuOC05LjMgNTUuOSA4LjV6TTE5My42IDM1MmwwIDAtLjkgMGMuMyAwIC42IDAgLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEhvbGRpbmdIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjMuOSAxMzYuOWMtMjkuNC0yOS44LTI5LjQtNzguMiAwLTEwOHM3Ny0yOS44IDEwNi40IDBsMTcuNyAxOCAxNy43LTE4YzI5LjQtMjkuOCA3Ny0yOS44IDEwNi40IDBzMjkuNCA3OC4yIDAgMTA4TDMxMC41IDI0MC4xYy02LjIgNi4zLTE0LjMgOS40LTIyLjUgOS40cy0xNi4zLTMuMS0yMi41LTkuNEwxNjMuOSAxMzYuOXpNNTY4LjIgMzM2LjNjMTMuMSAxNy44IDkuMyA0Mi44LTguNSA1NS45TDQzMy4xIDQ4NS41Yy0yMy40IDE3LjItNTEuNiAyNi41LTgwLjcgMjYuNUgxOTIgMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg2OC44bDQ0LjktMzZjMjIuNy0xOC4yIDUwLjktMjggODAtMjhIMjcyaDE2IDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI4OCAyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZIMzkyLjZsMTE5LjctODguMmMxNy44LTEzLjEgNDIuOC05LjMgNTUuOSA4LjV6TTE5My42IDM4NGwwIDAtLjkgMGMuMyAwIC42IDAgLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEhvbGRpbmdNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNFY4MEgxNjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0djQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDU2djU2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE3Nmg1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxMDRjMC0xMy4zLTEwLjctMjQtMjQtMjRIMzIwVjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0SDI0OGMtMTMuMyAwLTI0IDEwLjctMjQgMjR6TTU1OS43IDM5Mi4yYzE3LjgtMTMuMSAyMS42LTM4LjEgOC41LTU1LjlzLTM4LjEtMjEuNi01NS45LTguNUwzOTIuNiA0MTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDE2IDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI4OCAyNzIgMTkzLjdjLTI5LjEgMC01Ny4zIDkuOS04MCAyOEw2OC44IDM4NEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJIMTkyIDM1Mi41YzI5IDAgNTcuMy05LjMgODAuNy0yNi41bDEyNi42LTkzLjN6bS0zNjctOC4ybC45IDAgMCAwYy0uMyAwLS42IDAtLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEhvbGRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTU5LjcgMzkyLjJjMTcuOC0xMy4xIDIxLjYtMzguMSA4LjUtNTUuOXMtMzguMS0yMS42LTU1LjktOC41TDM5Mi42IDQxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoMTYgNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjg4IDI3MiAxOTMuN2MtMjkuMSAwLTU3LjMgOS45LTgwIDI4TDY4LjggMzg0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgxOTIgMzUyLjVjMjkgMCA1Ny4zLTkuMyA4MC43LTI2LjVsMTI2LjYtOTMuM3ptLTM2Ni4xLTguM2EuNSAuNSAwIDEgMSAtLjkgLjIgLjUgLjUgMCAxIDEgLjktLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRMaXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxMTJDMCA4NS41IDIxLjUgNjQgNDggNjRIMTYwaDgwIDQ2LjVjMzYuOCAwIDcxLjIgMTggOTIuMSA0OC4ybDExMy41IDE2NGMxMyAxOC43IDE5LjkgNDEgMTkuOSA2My44djEyIDE2IDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMySDM4NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDAyLjJMMjczLjkgMzUySDI0MCAxNjAgMTEyYy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4aDQ4IDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4cy0yMS41LTQ4LTQ4LTQ4SDE2MCA0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRNaWRkbGVGaW5nZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMyIDBjLTIyLjEgMC00MCAxNy45LTQwIDQwVjIwNC4yYy04LjUtNy42LTE5LjctMTIuMi0zMi0xMi4yYy0yNi41IDAtNDggMjEuNS00OCA0OHY3IDczYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI2NC4zYy0yIDEuNC0zLjkgMy01LjggNC41TDU1IDI4NC44QzQwLjQgMjk3IDMyIDMxNSAzMiAzMzRWMzcyYzAgMzggMTYuOSA3NCA0Ni4xIDk4LjNsNS40IDQuNWMyOC44IDI0IDY1IDM3LjEgMTAyLjQgMzcuMUgzMDRjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhWMzIwIDI4OGMwLTI2LjUtMjEuNS00OC00OC00OGMtMTIuNCAwLTIzLjYgNC43LTMyLjEgMTIuM0MzNTAgMjI3LjUgMzI5LjMgMjA4IDMwNCAyMDhjLTEyLjMgMC0yMy41IDQuNi0zMiAxMi4yVjQwYzAtMjIuMS0xNy45LTQwLTQwLTQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUGVhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMjQwSDE5MlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptOTYgMTYwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptNjQgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyMjR6TTkzLjMgNTEuMkwxNzUuOSAyNDBIMTA2LjFMMzQuNyA3Ni44QzI3LjYgNjAuNiAzNSA0MS44IDUxLjIgMzQuN3MzNS4xIC4zIDQyLjEgMTYuNXptMjcgMjIxLjNsLS4yLS41aDY5LjlIMjE2YzIyLjEgMCA0MCAxNy45IDQwIDQwcy0xNy45IDQwLTQwIDQwSDE2MGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg1NmMzOS44IDAgNzItMzIuMiA3Mi03MmwwLS42YzkuNCA1LjQgMjAuMyA4LjYgMzIgOC42YzEzLjIgMCAyNS40LTQgMzUuNi0xMC44YzguNyAyNC45IDMyLjUgNDIuOCA2MC40IDQyLjhjMTEuNyAwIDIyLjYtMy4xIDMyLTguNlYzNTJjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBIMjI2LjNjLTQyLjQgMC04My4xLTE2LjktMTEzLjEtNDYuOWwtMTEuNi0xMS42Qzc3LjUgNDI5LjUgNjQgMzk2LjkgNjQgMzYzVjMzNmMwLTMyLjcgMjQuNi01OS43IDU2LjMtNjMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBvaW50RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyNzJIMzJWNDgwek0yMjQgMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjU2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjY0em0tNjQgNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzA0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyem0xNjAtOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NjR6bS05Ni04OGwwIC42YzkuNC01LjQgMjAuMy04LjYgMzItOC42YzEzLjIgMCAyNS40IDQgMzUuNiAxMC44YzguNy0yNC45IDMyLjUtNDIuOCA2MC40LTQyLjhjMTEuNyAwIDIyLjYgMy4xIDMyIDguNlYxNjBDMzg0IDcxLjYgMzEyLjQgMCAyMjQgMEgxNjIuM0MxMTkuOCAwIDc5LjEgMTYuOSA0OS4xIDQ2LjlMMzcuNSA1OC41QzEzLjUgODIuNSAwIDExNS4xIDAgMTQ5djI3YzAgMzUuMyAyOC43IDY0IDY0IDY0aDg4YzIyLjEgMCA0MC0xNy45IDQwLTQwcy0xNy45LTQwLTQwLTQwSDk2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDU2YzM5LjggMCA3MiAzMi4yIDcyIDcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUG9pbnRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDk2QzE0LjMgOTYgMCAxMTAuMyAwIDEyOHMxNC4zIDMyIDMyIDMybDIwOCAwIDAtNjRMMzIgOTZ6TTE5MiAyODhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNjQgMHptLTY0LTY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDQ4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTQ4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem05NiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNjQgMHptODgtOTZsLS42IDBjNS40IDkuNCA4LjYgMjAuMyA4LjYgMzJjMCAxMy4yLTQgMjUuNC0xMC44IDM1LjZjMjQuOSA4LjcgNDIuOCAzMi41IDQyLjggNjAuNGMwIDExLjctMy4xIDIyLjYtOC42IDMybDguNiAwYzg4LjQgMCAxNjAtNzEuNiAxNjAtMTYwbDAtNjEuN2MwLTQyLjQtMTYuOS04My4xLTQ2LjktMTEzLjFsLTExLjYtMTEuNkM0MjkuNSA3Ny41IDM5Ni45IDY0IDM2MyA2NGwtMjcgMGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCA4OGMwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwbDAtNTZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDU2YzAgMzkuOC0zMi4yIDcyLTcyIDcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUG9pbnRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTIwOCAwIDAtNjQgMjA4IDB6TTMyMCAyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsNjQgMHptNjQtNjRjMCAxNy43LTE0LjMgMzItMzIgMzJsLTQ4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsNDggMGMxNy43IDAgMzIgMTQuMyAzMiAzMnpNMjg4IDM4NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw2NCAwem0tODgtOTZsLjYgMGMtNS40IDkuNC04LjYgMjAuMy04LjYgMzJjMCAxMy4yIDQgMjUuNCAxMC44IDM1LjZDMTc3LjkgMzY0LjMgMTYwIDM4OC4xIDE2MCA0MTZjMCAxMS43IDMuMSAyMi42IDguNiAzMmwtOC42IDBDNzEuNiA0NDggMCAzNzYuNCAwIDI4OGwwLTYxLjdjMC00Mi40IDE2LjktODMuMSA0Ni45LTExMy4xbDExLjYtMTEuNkM4Mi41IDc3LjUgMTE1LjEgNjQgMTQ5IDY0bDI3IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCA4OGMwIDIyLjEtMTcuOSA0MC00MCA0MHMtNDAtMTcuOS00MC00MGwwLTU2YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2bDAgNTZjMCAzOS44IDMyLjIgNzIgNzIgNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRQb2ludFVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyQzMyIDE0LjMgNDYuMyAwIDY0IDBTOTYgMTQuMyA5NiAzMlYyNDBIMzJWMzJ6TTIyNCAxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxOTJ6bS02NC02NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTE2MCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIyNHptLTk2IDg4bDAtLjZjOS40IDUuNCAyMC4zIDguNiAzMiA4LjZjMTMuMiAwIDI1LjQtNCAzNS42LTEwLjhjOC43IDI0LjkgMzIuNSA0Mi44IDYwLjQgNDIuOGMxMS43IDAgMjIuNi0zLjEgMzItOC42VjM1MmMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MEgxNjIuM2MtNDIuNCAwLTgzLjEtMTYuOS0xMTMuMS00Ni45TDM3LjUgNDUzLjVDMTMuNSA0MjkuNSAwIDM5Ni45IDAgMzYzVjMzNmMwLTM1LjMgMjguNy02NCA2NC02NGg4OGMyMi4xIDAgNDAgMTcuOSA0MCA0MHMtMTcuOSA0MC00MCA0MEg5NmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg1NmMzOS44IDAgNzItMzIuMiA3Mi03MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBvaW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDQwYzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDBWMTg4LjJjOC41LTcuNiAxOS43LTEyLjIgMzItMTIuMmMyMC42IDAgMzguMiAxMyA0NSAzMS4yYzguOC05LjMgMjEuMi0xNS4yIDM1LTE1LjJjMjUuMyAwIDQ2IDE5LjUgNDcuOSA0NC4zYzguNS03LjcgMTkuOC0xMi4zIDMyLjEtMTIuM2MyNi41IDAgNDggMjEuNSA0OCA0OHY0OCAxNiA0OGMwIDcwLjctNTcuMyAxMjgtMTI4IDEyOGwtMTYgMEgyNDBsLS4xIDBoLTUuMmMtNSAwLTkuOS0uMy0xNC43LTFjLTU1LjMtNS42LTEwNi4yLTM0LTE0MC03OUw4IDMzNmMtMTMuMy0xNy43LTkuNy00Mi43IDgtNTZzNDIuNy05LjcgNTYgOGw1NiA3NC43VjQwek0yNDAgMzA0YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzA0em00OC0xNmMtOC44IDAtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNnptODAgMTZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYzMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRTY2lzc29ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MCAyMDhjLTIyLjEgMC00MCAxNy45LTQwIDQwczE3LjkgNDAgNDAgNDBsMTgwLjIgMGMtNy42IDguNS0xMi4yIDE5LjctMTIuMiAzMmMwIDI1LjMgMTkuNSA0NiA0NC4zIDQ3LjljLTcuNyA4LjUtMTIuMyAxOS44LTEyLjMgMzIuMWMwIDI2LjUgMjEuNSA0OCA0OCA0OGwzMiAwIDY0IDBjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhsMC0xMTMuMWMwLTQwLjItMTYtNzguOC00NC40LTEwNy4zQzQ0NC44IDc2LjggNDEzLjkgNjQgMzgxLjcgNjRMMzM2IDY0Yy0yMS4zIDAtMzkuMyAxMy45LTQ1LjYgMzMuMWw3NC41IDIzLjdjOC40IDIuNyAxMy4xIDExLjcgMTAuNCAyMC4xcy0xMS43IDEzLjEtMjAuMSAxMC40TDI4OCAxMjkuOWwwIC4xTDg0IDY1LjhDNjIuOSA1OS4yIDQwLjUgNzAuOSAzMy44IDkyczUuMSA0My41IDI2LjIgNTAuMkwyNjkuNSAyMDggNDAgMjA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kU3BhcmtsZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMjQwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlYyNDBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlYzMjMuMWMtMTEuOSA0LjgtMjEuMyAxNC45LTI1IDI3LjhsLTguOSAzMS4yTDQ3OC45IDM5MUM0NjAuNiAzOTYuMyA0NDggNDEzIDQ0OCA0MzJjMCAxOC45IDEyLjUgMzUuNiAzMC42IDQwLjlDNDQ4LjQgNDk3LjQgNDA5LjkgNTEyIDM2OCA1MTJIMzQ4LjhjLTU5LjYgMC0xMTYuOS0yMi45LTE2MC02NEw3Ni40IDM0MWMtMTYtMTUuMi0xNi42LTQwLjYtMS40LTU2LjZzNDAuNi0xNi42IDU2LjYtMS40bDYwLjUgNTcuNmMwLTEuNS0uMS0zLjEtLjEtNC42VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMjQwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6bS03LjMgMzI2LjZjLTEuMS0zLjktNC43LTYuNi04LjctNi42cy03LjYgMi43LTguNyA2LjZMMjg4IDM1MmwtMjUuNCA3LjNjLTMuOSAxLjEtNi42IDQuNy02LjYgOC43czIuNyA3LjYgNi42IDguN0wyODggMzg0bDcuMyAyNS40YzEuMSAzLjkgNC43IDYuNiA4LjcgNi42czcuNi0yLjcgOC43LTYuNkwzMjAgMzg0bDI1LjQtNy4zYzMuOS0xLjEgNi42LTQuNyA2LjYtOC43cy0yLjctNy42LTYuNi04LjdMMzIwIDM1MmwtNy4zLTI1LjR6TTEwNCAxMjBsNDguMyAxMy44YzQuNiAxLjMgNy43IDUuNSA3LjcgMTAuMnMtMy4xIDguOS03LjcgMTAuMkwxMDQgMTY4IDkwLjIgMjE2LjNjLTEuMyA0LjYtNS41IDcuNy0xMC4yIDcuN3MtOC45LTMuMS0xMC4yLTcuN0w1NiAxNjggNy43IDE1NC4yQzMuMSAxNTIuOSAwIDE0OC43IDAgMTQ0czMuMS04LjkgNy43LTEwLjJMNTYgMTIwIDY5LjggNzEuN0M3MS4xIDY3LjEgNzUuMyA2NCA4MCA2NHM4LjkgMy4xIDEwLjIgNy43TDEwNCAxMjB6TTU4NCA0MDhsNDguMyAxMy44YzQuNiAxLjMgNy43IDUuNSA3LjcgMTAuMnMtMy4xIDguOS03LjcgMTAuMkw1ODQgNDU2bC0xMy44IDQ4LjNjLTEuMyA0LjYtNS41IDcuNy0xMC4yIDcuN3MtOC45LTMuMS0xMC4yLTcuN0w1MzYgNDU2bC00OC4zLTEzLjhjLTQuNi0xLjMtNy43LTUuNS03LjctMTAuMnMzLjEtOC45IDcuNy0xMC4yTDUzNiA0MDhsMTMuOC00OC4zYzEuMy00LjYgNS41LTcuNyAxMC4yLTcuN3M4LjkgMy4xIDEwLjIgNy43TDU4NCA0MDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRTcG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDYuOSAyMy43QzI0Mi4zIDYuNiAyMjQuOC0zLjUgMjA3LjcgMS4xcy0yNy4yIDIyLjEtMjIuNiAzOS4yTDIzOCAyMzcuOGMyLjUgOS4yLTQuNSAxOC4yLTE0IDE4LjJjLTYuNCAwLTEyLTQuMi0xMy45LTEwLjNMMTY2LjYgMTAyLjdjLTUuMS0xNi45LTIzLTI2LjQtMzkuOS0yMS4zcy0yNi40IDIzLTIxLjMgMzkuOWw2Mi44IDIwNi40YzIuNCA3LjktNy4yIDEzLjgtMTMuMiA4LjFMOTkuNiAyODNjLTE2LTE1LjItNDEuMy0xNC42LTU2LjYgMS40cy0xNC42IDQxLjMgMS40IDU2LjZMMTU2LjggNDQ4YzQzLjEgNDEuMSAxMDAuNCA2NCAxNjAgNjRoMTAuOSA4LjJjLjEgMCAuMS0uMSAuMS0uMXMuMS0uMSAuMS0uMWM1OC4zLTMuNSAxMDguNi00My4yIDEyNS4zLTk5LjdsODEuMi0yNzVjNS0xNi45LTQuNy0zNC43LTIxLjYtMzkuOHMtMzQuNyA0LjctMzkuOCAyMS42TDQ0My41IDI0Ny4xYy0xLjYgNS4zLTYuNCA4LjktMTIgOC45Yy03LjkgMC0xMy44LTcuMy0xMi4yLTE1LjFsMzYtMTcwLjNjMy43LTE3LjMtNy40LTM0LjMtMjQuNy0zNy45cy0zNC4zIDcuNC0zNy45IDI0LjdMMzU1LjEgMjM1LjFjLTIuNiAxMi4yLTEzLjMgMjAuOS0yNS44IDIwLjljLTExLjkgMC0yMi40LTgtMjUuNC0xOS41bC01Ny0yMTIuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjQwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjMzNmMwIDEuNSAwIDMuMSAuMSA0LjZMNjcuNiAyODNjLTE2LTE1LjItNDEuMy0xNC42LTU2LjYgMS40cy0xNC42IDQxLjMgMS40IDU2LjZMMTI0LjggNDQ4YzQzLjEgNDEuMSAxMDAuNCA2NCAxNjAgNjRIMzA0Yzk3LjIgMCAxNzYtNzguOCAxNzYtMTc2VjEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYyNDBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjQwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kY3VmZnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwIDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTE5MiA0OGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bS0zMiA4MGMxNy43IDAgMzIgMTQuMyAzMiAzMmg4YzEzLjMgMCAyNCAxMC43IDI0IDI0djE2YzAgMS43LS4yIDMuNC0uNSA1LjFDMjgwLjMgMjI5LjYgMzIwIDI4Ni4yIDMyMCAzNTJjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBTMCA0NDAuNCAwIDM1MmMwLTY1LjggMzkuNy0xMjIuNCA5Ni41LTE0Ni45Yy0uNC0xLjYtLjUtMy4zLS41LTUuMVYxODRjMC0xMy4zIDEwLjctMjQgMjQtMjRoOGMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMCAzMjBhOTYgOTYgMCAxIDAgMC0xOTIgOTYgOTYgMCAxIDAgMCAxOTJ6bTE5Mi05NmMwLTI1LjktNS4xLTUwLjUtMTQuNC03My4xYzE2LjktMzIuOSA0NC44LTU5LjEgNzguOS03My45Yy0uNC0xLjYtLjUtMy4zLS41LTUuMVYxODRjMC0xMy4zIDEwLjctMjQgMjQtMjRoOGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyaDhjMTMuMyAwIDI0IDEwLjcgMjQgMjR2MTZjMCAxLjctLjIgMy40LS41IDUuMUM2MDAuMyAyMjkuNiA2NDAgMjg2LjIgNjQwIDM1MmMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MGMtNjIgMC0xMTUuOC0zNS4zLTE0Mi40LTg2LjljOS4zLTIyLjUgMTQuNC00Ny4yIDE0LjQtNzMuMXptMjI0IDBhOTYgOTYgMCAxIDAgLTE5MiAwIDk2IDk2IDAgMSAwIDE5MiAwek0zNjggMGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTgwIDQ4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHNBc2xJbnRlcnByZXRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU2LjYgNDYuM2M3LjktMTUuOCAxLjUtMzUtMTQuMy00Mi45cy0zNS0xLjUtNDIuOSAxNC4zTDEzLjUgMTg5LjRDNC42IDIwNy4yIDAgMjI2LjggMCAyNDYuN1YyNTZjMCA3MC43IDU3LjMgMTI4IDEyOCAxMjhoNzIgOHYtLjNjMzUuMi0yLjcgNjUuNC0yMi44IDgyLjEtNTEuN2M4LjgtMTUuMyAzLjYtMzQuOS0xMS43LTQzLjdzLTM0LjktMy42LTQzLjcgMTEuN2MtNyAxMi0xOS45IDIwLTM0LjcgMjBjLTIyLjEgMC00MC0xNy45LTQwLTQwczE3LjktNDAgNDAtNDBjMTQuOCAwIDI3LjcgOCAzNC43IDIwYzguOCAxNS4zIDI4LjQgMjAuNSA0My43IDExLjdzMjAuNS0yOC40IDExLjctNDMuN2MtMTIuOC0yMi4xLTMzLjYtMzkuMS01OC40LTQ3LjFsODAuOC0yMmMxNy00LjYgMjcuMS0yMi4yIDIyLjUtMzkuM3MtMjIuMi0yNy4xLTM5LjMtMjIuNUwxOTQuOSAxMjQuNmw4MS42LTY4YzEzLjYtMTEuMyAxNS40LTMxLjUgNC4xLTQ1LjFTMjQ5LjEtMy45IDIzNS41IDcuNEwxMzMuNiA5Mi4zbDIzLTQ2ek00ODMuNCA0NjUuN2MtNy45IDE1LjgtMS41IDM1IDE0LjMgNDIuOXMzNSAxLjUgNDIuOS0xNC4zbDg1LjktMTcxLjdjOC45LTE3LjggMTMuNS0zNy40IDEzLjUtNTcuMlYyNTZjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhINDQwaC04di4zYy0zNS4yIDIuNy02NS40IDIyLjgtODIuMSA1MS43Yy04LjkgMTUuMy0zLjYgMzQuOSAxMS43IDQzLjdzMzQuOSAzLjYgNDMuNy0xMS43YzctMTIgMTkuOS0yMCAzNC43LTIwYzIyLjEgMCA0MCAxNy45IDQwIDQwcy0xNy45IDQwLTQwIDQwYy0xNC44IDAtMjcuNy04LTM0LjctMjBjLTguOS0xNS4zLTI4LjQtMjAuNS00My43LTExLjdzLTIwLjUgMjguNC0xMS43IDQzLjdjMTIuOCAyMi4xIDMzLjYgMzkuMSA1OC40IDQ3LjFsLTgwLjggMjJjLTE3LjEgNC43LTI3LjEgMjIuMi0yMi41IDM5LjNzMjIuMiAyNy4xIDM5LjMgMjIuNWwxMDAuNy0yNy41LTgxLjYgNjhjLTEzLjYgMTEuMy0xNS40IDMxLjUtNC4xIDQ1LjFzMzEuNSAxNS40IDQ1LjEgNC4xbDEwMS45LTg0LjktMjMgNDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzQm91bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzJDOTYgMTQuMyA4MS43IDAgNjQgMFMzMiAxNC4zIDMyIDMyVjk2djU5LjEgLjdWMTkydjIxLjljMCAxNC4yIDUuMSAyNy45IDE0LjMgMzguN0wxMzEuNiAzNTJIMTI4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDMySDI4OGg2NEg0ODBoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRoLTMuNmw4NS4zLTk5LjVjOS4yLTEwLjggMTQuMy0yNC41IDE0LjMtMzguN1YxOTIgMTU1Ljh2LS43Vjk2IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjk2djQ4LjhsLTY5LjMgOTIuNGMtNS43IDcuNi0xNi4xIDkuNi0yNC4yIDQuOGMtOS43LTUuNy0xMi4xLTE4LjctNS4xLTI3LjVMNDczIDE4MGMxMC44LTEzLjUgOC45LTMzLjMtNC40LTQ0LjVzLTMzLTkuOC00NC41IDMuMmwtNDYuNyA1Mi41QzM2MSAyMDkuNyAzNTIgMjMzLjQgMzUyIDI1OC4xVjMyMHYzMkgyODhWMzIwIDI1OC4xYzAtMjQuNi05LTQ4LjQtMjUuNC02Ni44bC00Ni43LTUyLjVjLTExLjUtMTMtMzEuMy0xNC40LTQ0LjUtMy4ycy0xNS4yIDMwLjktNC40IDQ0LjVsMjcuNiAzNC41YzcgOC44IDQuNyAyMS44LTUuMSAyNy41Yy04LjEgNC44LTE4LjYgMi43LTI0LjItNC44TDk2IDE0NC44Vjk2IDMyem02NCA0NDh2MzJIMjg4VjQ4MGg2NHYzMkg0ODBWNDgwaDMyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDQ4MCAzNTIgMjg4IDE2MCAxMjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzQnViYmxlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgNjRhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em05NiAxMjhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0ek0xNjAgNDY0YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTMyIDE2MGwuMSA3Mi42Yy4xIDUyLjIgMjQgMTAxIDY0IDEzMy4xYy0uMS0xLjktLjEtMy44LS4xLTUuN3YtOGMwLTcxLjggMzctMTM4LjYgOTcuOS0xNzYuN2w2MC4yLTM3LjZjOC42LTUuNCAxNy45LTguNCAyNy4zLTkuNGw0NS45LTc5LjVjNi42LTExLjUgMi43LTI2LjItOC44LTMyLjhzLTI2LjItMi43LTMyLjggOC44bC03OCAxMzUuMWMtMy4zIDUuNy0xMC43IDcuNy0xNi40IDQuNHMtNy43LTEwLjctNC40LTE2LjRsNjItMTA3LjRjNi42LTExLjUgMi43LTI2LjItOC44LTMyLjhTMjE0IDUgMjA3LjQgMTYuNWwtNjggMTE3LjggMCAwIDAgMC00My4zIDc1TDk2IDE2MGMwLTE3LjctMTQuNC0zMi0zMi0zMnMtMzIgMTQuNC0zMiAzMnpNMzMyLjEgODguNUwzMDcuNSAxMzFjMTMuOSA0LjUgMjYuNCAxMy43IDM0LjcgMjdjLjkgMS41IDEuOCAyLjkgMi41IDQuNGwyOC45LTUwYzYuNi0xMS41IDIuNy0yNi4yLTguOC0zMi44cy0yNi4yLTIuNy0zMi44IDguOHptNDYuNCA2My43bC0yNi44IDQ2LjRjLS42IDYtMi4xIDExLjgtNC4zIDE3LjRIMzUyaDEzLjNsMCAwSDM5N2wyMy0zOS44YzYuNi0xMS41IDIuNy0yNi4yLTguOC0zMi44cy0yNi4yLTIuNy0zMi44IDguOHpNMzE1LjEgMTc1Yy05LjQtMTUtMjkuMS0xOS41LTQ0LjEtMTAuMmwtNjAuMiAzNy42QzE1OS4zIDIzNC43IDEyOCAyOTEuMiAxMjggMzUydjhjMCA4LjkgLjggMTcuNiAyLjIgMjYuMWMzNS40IDguMiA2MS44IDQwIDYxLjggNzcuOWMwIDYuMy0uNyAxMi41LTIuMSAxOC40QzIxNS4xIDUwMSAyNDYuMyA1MTIgMjgwIDUxMkg0NTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMzY0Yy02LjYgMC0xMi01LjQtMTItMTJzNS40LTEyIDEyLTEySDQ4OGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgzNjRjLTYuNiAwLTEyLTUuNC0xMi0xMnM1LjQtMTIgMTItMTJINTIwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDM2NGMtNi42IDAtMTItNS40LTEyLTEyczUuNC0xMiAxMi0xMkg0ODhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMzUybDAgMCAwIDBIMjU4LjhMMzA1IDIxOS4xYzE1LTkuNCAxOS41LTI5LjEgMTAuMi00NC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc0NsYXBwaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAxNlY4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYxNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2em0tOTguNyA3LjFsMzIgNDhjNC45IDcuNCAyLjkgMTcuMy00LjQgMjIuMnMtMTcuMyAyLjktMjIuMi00LjRsLTMyLTQ4Yy00LjktNy40LTIuOS0xNy4zIDQuNC0yMi4yczE3LjMtMi45IDIyLjIgNC40ek0xMzUgMTE5YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwTDI5Mi43IDI0Mi43YzEwLjEgMTAuMSAyNy4zIDIuOSAyNy4zLTExLjNWMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMzQ1LjZjMCA1Ny4xLTMwIDExMC03OC45IDEzOS40Yy02NCAzOC40LTE0NS44IDI4LjMtMTk4LjUtMjQuNEw3IDM2MWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDUzIDUzYzYuMSA2LjEgMTYgNi4xIDIyLjEgMHM2LjEtMTYgMC0yMi4xTDIzIDI2NWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDkzIDkzYzYuMSA2LjEgMTYgNi4xIDIyLjEgMHM2LjEtMTYgMC0yMi4xTDU1IDE4NWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDExNyAxMTdjNi4xIDYuMSAxNiA2LjEgMjIuMSAwczYuMS0xNiAwLTIyLjFsLTkzLTkzYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXpNNDMzLjEgNDg0LjljLTI0LjIgMTQuNS01MC45IDIyLjEtNzcuNyAyMy4xYzQ4LjEtMzkuNiA3Ni42LTk5IDc2LjYtMTYyLjRsMC05OC4xYzguMi0uMSAxNi02LjQgMTYtMTZWMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMzQ1LjZjMCA1Ny4xLTMwIDExMC03OC45IDEzOS40ek00MjQuOSAxOC43YzcuNCA0LjkgOS4zIDE0LjggNC40IDIyLjJsLTMyIDQ4Yy00LjkgNy40LTE0LjggOS4zLTIyLjIgNC40cy05LjMtMTQuOC00LjQtMjIuMmwzMi00OGM0LjktNy40IDE0LjgtOS4zIDIyLjItNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc0hvbGRpbmdDaGlsZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMGE0MCA0MCAwIDEgMSAwIDgwIDQwIDQwIDAgMSAxIDAtODB6bTQ0LjcgMTY0LjNMMzc1LjggMjUzYzEuNiAxMy4yLTcuNyAyNS4xLTIwLjggMjYuOHMtMjUuMS03LjctMjYuOC0yMC44bC00LjQtMzVoLTcuNmwtNC40IDM1Yy0xLjYgMTMuMi0xMy42IDIyLjUtMjYuOCAyMC44cy0yMi41LTEzLjYtMjAuOC0yNi44bDExLjEtODguOEwyNTUuNSAxODFjLTEwLjEgOC42LTI1LjMgNy4zLTMzLjgtMi44cy03LjMtMjUuMyAyLjgtMzMuOGwyNy45LTIzLjZDMjcxLjMgMTA0LjggMjk1LjMgOTYgMzIwIDk2czQ4LjcgOC44IDY3LjYgMjQuN2wyNy45IDIzLjZjMTAuMSA4LjYgMTEuNCAyMy43IDIuOCAzMy44cy0yMy43IDExLjQtMzMuOCAyLjhsLTE5LjgtMTYuN3pNNDAgNjRjMjIuMSAwIDQwIDE3LjkgNDAgNDB2NDAgODAgNDAuMmMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM2w1MS4xIDUxLjFjOC4zIDguMyAyMS4zIDkuNiAzMSAzLjFjMTIuOS04LjYgMTQuNy0yNi45IDMuNy0zNy44bC0xNS4yLTE1LjItMzItMzJjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBsMzIgMzIgMTUuMiAxNS4yIDAgMCAyNS4zIDI1LjNjMjEgMjEgMzIuOCA0OS41IDMyLjggNzkuMlY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMTczLjNjLTE3IDAtMzMuMy02LjctNDUuMy0xOC43TDI4LjEgMzkzLjRDMTAuMSAzNzUuNCAwIDM1MSAwIDMyNS41VjIyNCAxNjAgMTA0QzAgODEuOSAxNy45IDY0IDQwIDY0em01NjAgMGMyMi4xIDAgNDAgMTcuOSA0MCA0MHY1NiA2NFYzMjUuNWMwIDI1LjUtMTAuMSA0OS45LTI4LjEgNjcuOUw1MTIgNDkzLjNjLTEyIDEyLTI4LjMgMTguNy00NS4zIDE4LjdINDAwYy0yNi41IDAtNDgtMjEuNS00OC00OFYzODUuMWMwLTI5LjcgMTEuOC01OC4yIDMyLjgtNzkuMmwyNS4zLTI1LjMgMCAwIDE1LjItMTUuMiAzMi0zMmMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zbC0zMiAzMi0xNS4yIDE1LjJjLTExIDExLTkuMiAyOS4yIDMuNyAzNy44YzkuNyA2LjUgMjIuNyA1LjIgMzEtMy4xbDUxLjEtNTEuMWMxMi0xMiAxOC43LTI4LjMgMTguNy00NS4zVjIyNCAxNDQgMTA0YzAtMjIuMSAxNy45LTQwIDQwLTQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc0hvbGRpbmdDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDBhMTI4IDEyOCAwIDEgMSAwIDI1NkExMjggMTI4IDAgMSAxIDMyMCAwek00MCA2NGMyMi4xIDAgNDAgMTcuOSA0MCA0MHY0MCA4MCA0MC4yYzAgMTcgNi43IDMzLjMgMTguNyA0NS4zbDUxLjEgNTEuMWM4LjMgOC4zIDIxLjMgOS42IDMxIDMuMWMxMi45LTguNiAxNC43LTI2LjkgMy43LTM3LjhsLTE1LjItMTUuMi0zMi0zMmMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMGwzMiAzMiAxNS4yIDE1LjIgMCAwIDI1LjMgMjUuM2MyMSAyMSAzMi44IDQ5LjUgMzIuOCA3OS4yVjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEgxNzMuM2MtMTcgMC0zMy4zLTYuNy00NS4zLTE4LjdMMjguMSAzOTMuNEMxMC4xIDM3NS40IDAgMzUxIDAgMzI1LjVWMjI0IDE2MCAxMDRDMCA4MS45IDE3LjkgNjQgNDAgNjR6bTU2MCAwYzIyLjEgMCA0MCAxNy45IDQwIDQwdjU2IDY0VjMyNS41YzAgMjUuNS0xMC4xIDQ5LjktMjguMSA2Ny45TDUxMiA0OTMuM2MtMTIgMTItMjguMyAxOC43LTQ1LjMgMTguN0g0MDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM4NS4xYzAtMjkuNyAxMS44LTU4LjIgMzIuOC03OS4ybDI1LjMtMjUuMyAwIDAgMTUuMi0xNS4yIDMyLTMyYzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNsLTMyIDMyLTE1LjIgMTUuMmMtMTEgMTEtOS4yIDI5LjIgMy43IDM3LjhjOS43IDYuNSAyMi43IDUuMiAzMS0zLjFsNTEuMS01MS4xYzEyLTEyIDE4LjctMjguMyAxOC43LTQ1LjNWMjI0IDE0NCAxMDRjMC0yMi4xIDE3LjktNDAgNDAtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzSG9sZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCAxMDRjMC0yMi4xLTE3LjktNDAtNDAtNDBTMCA4MS45IDAgMTA0djU2IDY0VjMyNS41YzAgMjUuNSAxMC4xIDQ5LjkgMjguMSA2Ny45TDEyOCA0OTMuM2MxMiAxMiAyOC4zIDE4LjcgNDUuMyAxOC43SDI0MGMyNi41IDAgNDgtMjEuNSA0OC00OFYzODUuMWMwLTI5LjctMTEuOC01OC4yLTMyLjgtNzkuMmwtMjUuMy0yNS4zIDAgMC0xNS4yLTE1LjItMzItMzJjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDMyIDMyIDE1LjIgMTUuMmMxMSAxMSA5LjIgMjkuMi0zLjcgMzcuOGMtOS43IDYuNS0yMi43IDUuMi0zMS0zLjFMOTguNyAzMDkuNWMtMTItMTItMTguNy0yOC4zLTE4LjctNDUuM1YyMjQgMTQ0IDEwNHptNDgwIDB2NDAgODAgNDAuMmMwIDE3LTYuNyAzMy4zLTE4LjcgNDUuM2wtNTEuMSA1MS4xYy04LjMgOC4zLTIxLjMgOS42LTMxIDMuMWMtMTIuOS04LjYtMTQuNy0yNi45LTMuNy0zNy44bDE1LjItMTUuMiAzMi0zMmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMzIgMzItMTUuMiAxNS4yIDAgMC0yNS4zIDI1LjNjLTIxIDIxLTMyLjggNDkuNS0zMi44IDc5LjJWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDY2LjdjMTcgMCAzMy4zLTYuNyA0NS4zLTE4LjdsOTkuOS05OS45YzE4LTE4IDI4LjEtNDIuNCAyOC4xLTY3LjlWMjI0IDE2MCAxMDRjMC0yMi4xLTE3LjktNDAtNDAtNDBzLTQwIDE3LjktNDAgNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzUHJheWluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTEuMiA0LjhjMy4yLTIgNi42LTMuMyAxMC00LjFjNC43LTEgOS42LS45IDE0LjEgLjFjNy43IDEuOCAxNC44IDYuNSAxOS40IDEzLjZMNTE0LjYgMTk0LjJjOC44IDEzLjEgMTMuNCAyOC42IDEzLjQgNDQuNHY3My41YzAgNi45IDQuNCAxMyAxMC45IDE1LjJsNzkuMiAyNi40QzYzMS4yIDM1OCA2NDAgMzcwLjIgNjQwIDM4NHY5NmMwIDkuOS00LjYgMTkuMy0xMi41IDI1LjRzLTE4LjEgOC4xLTI3LjcgNS41TDQzMSA0NjUuOWMtNTYtMTQuOS05NS02NS43LTk1LTEyMy43VjIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjgwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjE5LjFjMC03LTEuOC0xMy44LTUuMy0xOS44TDM0MC4zIDQ4LjFjLTEuNy0zLTIuOS02LjEtMy42LTkuM2MtMS00LjctMS05LjYgLjEtMTQuMWMxLjktOCA2LjgtMTUuMiAxNC4zLTE5Ljl6bS02Mi40IDBjNy41IDQuNiAxMi40IDExLjkgMTQuMyAxOS45YzEuMSA0LjYgMS4yIDkuNCAuMSAxNC4xYy0uNyAzLjItMS45IDYuMy0zLjYgOS4zTDIxMy4zIDE5OS4zYy0zLjUgNi01LjMgMTIuOS01LjMgMTkuOFYzMDRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyMjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlYzNDIuM2MwIDU4LTM5IDEwOC43LTk1IDEyMy43bC0xNjguNyA0NWMtOS42IDIuNi0xOS45IC41LTI3LjctNS41UzAgNDkwIDAgNDgwVjM4NGMwLTEzLjggOC44LTI2IDIxLjktMzAuNGw3OS4yLTI2LjRjNi41LTIuMiAxMC45LTguMyAxMC45LTE1LjJWMjM4LjVjMC0xNS44IDQuNy0zMS4yIDEzLjQtNDQuNEwyNDUuMiAxNC41YzQuNi03LjEgMTEuNy0xMS44IDE5LjQtMTMuNmM0LjYtMS4xIDkuNC0xLjIgMTQuMS0uMWMzLjUgLjggNi45IDIuMSAxMCA0LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAxNjBsLS4xIDcyLjZjLS4xIDUyLjItMjQgMTAxLTY0IDEzMy4xYy4xLTEuOSAuMS0zLjggLjEtNS43di04YzAtNzEuOC0zNy0xMzguNi05Ny45LTE3Ni43bC02MC4yLTM3LjZjLTguNi01LjQtMTcuOS04LjQtMjcuMy05LjRMMjQ4LjcgNDguOGMtNi42LTExLjUtMi43LTI2LjIgOC44LTMyLjhzMjYuMi0yLjcgMzIuOCA4LjhsNzggMTM1LjFjMy4zIDUuNyAxMC43IDcuNyAxNi40IDQuNHM3LjctMTAuNyA0LjQtMTYuNGwtNjItMTA3LjRjLTYuNi0xMS41LTIuNy0yNi4yIDguOC0zMi44UzM2MiA1IDM2OC42IDE2LjVsNjggMTE3LjggMCAwIDAgMCA0My4zIDc1TDQ4MCAxNjBjMC0xNy43IDE0LjQtMzIgMzItMzJzMzIgMTQuNCAzMiAzMnpNMjQzLjkgODguNUwyNjguNSAxMzFjLTEzLjkgNC41LTI2LjQgMTMuNy0zNC43IDI3Yy0uOSAxLjQtMS43IDIuOS0yLjUgNC40bC0yOC45LTUwYy02LjYtMTEuNS0yLjctMjYuMiA4LjgtMzIuOHMyNi4yLTIuNyAzMi44IDguOHptLTQ2LjQgNjMuN2wyNi44IDQ2LjRjLjYgNiAyLjEgMTEuOCA0LjMgMTcuNEgyMjQgMjEwLjdsMCAwSDE3OWwtMjMtMzkuOGMtNi42LTExLjUtMi43LTI2LjIgOC44LTMyLjhzMjYuMi0yLjcgMzIuOCA4Ljh6TTI2MC45IDE3NWM5LjQtMTUgMjkuMS0xOS41IDQ0LjEtMTAuMmw2MC4yIDM3LjZDNDE2LjcgMjM0LjcgNDQ4IDI5MS4yIDQ0OCAzNTJ2OGMwIDgzLjktNjguMSAxNTItMTUyIDE1MkgxMjBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoOTJjNi42IDAgMTItNS40IDEyLTEycy01LjQtMTItMTItMTJIODhjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRIMjEyYzYuNiAwIDEyLTUuNCAxMi0xMnMtNS40LTEyLTEyLTEySDU2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0SDIxMmM2LjYgMCAxMi01LjQgMTItMTJzLTUuNC0xMi0xMi0xMkg4OGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNEgyMjRsMCAwIDAgMGg5My4yTDI3MSAyMTkuMWMtMTUtOS40LTE5LjUtMjkuMS0xMC4yLTQ0LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzaGFrZUFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAyNDh2My4zbDY5LjctNjkuN2MyMS45LTIxLjkgMjEuOS01Ny4zIDAtNzkuMkw1MzUuNiAyNC40Yy0yMS45LTIxLjktNTcuMy0yMS45LTc5LjIgMEw0MTYuMyA2NC41Yy0yLjctLjMtNS41LS41LTguMy0uNUgyOTZjLTM3LjEgMC02Ny42IDI4LTcxLjYgNjRIMjI0VjI0OGMwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwVjE3NmMwIDAgMC0uMSAwLS4xVjE2MGwxNiAwIDEzNiAwYzAgMCAwIDAgLjEgMEg0NjRjNDQuMiAwIDgwIDM1LjggODAgODB2OHpNMzM2IDE5MnY1NmMwIDM5LjgtMzIuMiA3Mi03MiA3MnMtNzItMzIuMi03Mi03MlYxMjkuNGMtMzUuOSA2LjItNjUuOCAzMi4zLTc2IDY4LjJMOTkuNSAyNTUuMiAyNi4zIDMyOC40Yy0yMS45IDIxLjktMjEuOSA1Ny4zIDAgNzkuMmw3OC4xIDc4LjFjMjEuOSAyMS45IDU3LjMgMjEuOSA3OS4yIDBsMzcuNy0zNy43Yy45IDAgMS44IC4xIDIuNyAuMUgzODRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhjMC01LjYtMS0xMS0yLjctMTZINDMyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4YzAtMTIuOC01LTI0LjQtMTMuMi0zM2MyNS43LTUgNDUuMS0yNy42IDQ1LjItNTQuOHYtLjRjLS4xLTMwLjgtMjUuMS01NS44LTU2LTU1LjhjMCAwIDAgMCAwIDBsLTEyMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc2hha2VTaW1wbGVTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43bC0xMzUtMTA1LjhjLTEuMS0xMS4zLTYuMy0yMi4zLTE1LjMtMzAuN2wtMTM0LjItMTIzLTIzLjQgMTguMi0yNi0yMC4zIDc3LjItNjAuMWM3LTUuNCAxNy00LjIgMjIuNSAyLjhzNC4yIDE3LTIuOCAyMi41bC0yMC45IDE2LjJMNTUwLjIgMzUySDU5MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDhINTE2aC00LS43bC0zLjktMi41TDQzNC44IDc5Yy0xNS4zLTkuOC0zMy4yLTE1LTUxLjQtMTVjLTIxLjggMC00MyA3LjUtNjAgMjEuMmwtODkuNyA3Mi42LTI1LjgtMjAuMyA4MS44LTY2LjJjLTExLjYtNC45LTI0LjEtNy40LTM2LjgtNy40QzIzNCA2NCAyMTUuNyA2OS42IDIwMCA4MGwtMzUuNSAyMy43TDM4LjggNS4xek00MTMuNiA0MjEuOUw0MS4yIDEyOC41QzE3LjkgMTMxLjggMCAxNTEuOCAwIDE3NlYzMDRjMCAyNi41IDIxLjUgNDggNDggNDhIMTU2LjJsOTEuNCA4My40YzE5LjYgMTcuOSA0OS45IDE2LjUgNjcuOC0zLjFjNS41LTYuMSA5LjItMTMuMiAxMS4xLTIwLjZsMTcgMTUuNmMxOS41IDE3LjkgNDkuOSAxNi42IDY3LjgtMi45Yy44LS44IDEuNS0xLjcgMi4yLTIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHNoYWtlU2ltcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMy40IDg1LjJsLTk2LjggNzguNGMtMTYuMSAxMy0xOS4yIDM2LjQtNyA1My4xYzEyLjkgMTcuOCAzOCAyMS4zIDU1LjMgNy44bDk5LjMtNzcuMmM3LTUuNCAxNy00LjIgMjIuNSAyLjhzNC4yIDE3LTIuOCAyMi41bC0yMC45IDE2LjJMNTUwLjIgMzUySDU5MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDhINTE2aC00LS43bC0zLjktMi41TDQzNC44IDc5Yy0xNS4zLTkuOC0zMy4yLTE1LTUxLjQtMTVjLTIxLjggMC00MyA3LjUtNjAgMjEuMnptMjIuOCAxMjQuNGwtNTEuNyA0MC4yQzI2MyAyNzQuNCAyMTcuMyAyNjggMTkzLjcgMjM1LjZjLTIyLjItMzAuNS0xNi42LTczLjEgMTIuNy05Ni44bDgzLjItNjcuM2MtMTEuNi00LjktMjQuMS03LjQtMzYuOC03LjRDMjM0IDY0IDIxNS43IDY5LjYgMjAwIDgwbC03MiA0OEg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWMzA0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDE1Ni4ybDkxLjQgODMuNGMxOS42IDE3LjkgNDkuOSAxNi41IDY3LjgtMy4xYzUuNS02LjEgOS4yLTEzLjIgMTEuMS0yMC42bDE3IDE1LjZjMTkuNSAxNy45IDQ5LjkgMTYuNiA2Ny44LTIuOWM0LjUtNC45IDcuOC0xMC42IDkuOS0xNi41YzE5LjQgMTMgNDUuOCAxMC4zIDYyLjEtNy41YzE3LjktMTkuNSAxNi42LTQ5LjktMi45LTY3LjhsLTEzNC4yLTEyM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHNoYWtlU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN2wtMTM1LTEwNS44Yy0xLjEtMTEuMy02LjMtMjIuMy0xNS4zLTMwLjdsLTEzNC4yLTEyMy0yMy40IDE4LjItMjYtMjAuMyA3Ny4yLTYwLjFjNy01LjQgMTctNC4yIDIyLjUgMi44czQuMiAxNy0yLjggMjIuNWwtMjAuOSAxNi4yTDUxMiAzMTYuOFYxMjhoLS43bC0zLjktMi41TDQzNC44IDc5Yy0xNS4zLTkuOC0zMy4yLTE1LTUxLjQtMTVjLTIxLjggMC00MyA3LjUtNjAgMjEuMmwtODkuNyA3Mi42LTI1LjgtMjAuMyA4MS44LTY2LjJjLTExLjYtNC45LTI0LjEtNy40LTM2LjgtNy40QzIzNCA2NCAyMTUuNyA2OS42IDIwMCA4MGwtMzUuNSAyMy43TDM4LjggNS4xek00MTMuNiA0MjEuOUwxMjggMTk2LjhWMzUyaDI4LjJsOTEuNCA4My40YzE5LjYgMTcuOSA0OS45IDE2LjUgNjcuOC0zLjFjNS41LTYuMSA5LjItMTMuMiAxMS4xLTIwLjZsMTcgMTUuNmMxOS41IDE3LjkgNDkuOSAxNi42IDY3LjgtMi45Yy44LS44IDEuNS0xLjcgMi4yLTIuNnpNOTYgMTcxLjZMNDAuNiAxMjhIMTZjLTguOCAwLTE2IDcuMi0xNiAxNlYzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJINjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTcxLjZ6TTQ4IDMyMGExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6TTU0NCAxMjhWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTguOC03LjItMTYtMTYtMTZINTQ0em0zMiAyMDhhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHNoYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMy40IDg1LjJsLTk2LjggNzguNGMtMTYuMSAxMy0xOS4yIDM2LjQtNyA1My4xYzEyLjkgMTcuOCAzOCAyMS4zIDU1LjMgNy44bDk5LjMtNzcuMmM3LTUuNCAxNy00LjIgMjIuNSAyLjhzNC4yIDE3LTIuOCAyMi41bC0yMC45IDE2LjJMNTEyIDMxNi44VjEyOGgtLjdsLTMuOS0yLjVMNDM0LjggNzljLTE1LjMtOS44LTMzLjItMTUtNTEuNC0xNWMtMjEuOCAwLTQzIDcuNS02MCAyMS4yem0yMi44IDEyNC40bC01MS43IDQwLjJDMjYzIDI3NC40IDIxNy4zIDI2OCAxOTMuNyAyMzUuNmMtMjIuMi0zMC41LTE2LjYtNzMuMSAxMi43LTk2LjhsODMuMi02Ny4zYy0xMS42LTQuOS0yNC4xLTcuNC0zNi44LTcuNEMyMzQgNjQgMjE1LjcgNjkuNiAyMDAgODBsLTcyIDQ4VjM1MmgyOC4ybDkxLjQgODMuNGMxOS42IDE3LjkgNDkuOSAxNi41IDY3LjgtMy4xYzUuNS02LjEgOS4yLTEzLjIgMTEuMS0yMC42bDE3IDE1LjZjMTkuNSAxNy45IDQ5LjkgMTYuNiA2Ny44LTIuOWM0LjUtNC45IDcuOC0xMC42IDkuOS0xNi41YzE5LjQgMTMgNDUuOCAxMC4zIDYyLjEtNy41YzE3LjktMTkuNSAxNi42LTQ5LjktMi45LTY3LjhsLTEzNC4yLTEyM3pNMTYgMTI4Yy04LjggMC0xNiA3LjItMTYgMTZWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjEyOEgxNnpNNDggMzIwYTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpNNTQ0IDEyOFYzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtOC44LTcuMi0xNi0xNi0xNkg1NDR6bTMyIDIwOGExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW51a2lhaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTQuMiAzLjNDMzA5LjEgMTIuMSAyOTYgMzYuNiAyOTYgNTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN0MzMjQuNiAxLjIgMzIyLjQgMCAzMjAgMHMtNC42IDEuMi01LjggMy4zem0tMjg4IDQ4QzIxLjEgNjAuMSA4IDg0LjYgOCAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN0MzNi42IDQ5LjIgMzQuNCA0OCAzMiA0OHMtNC42IDEuMi01LjggMy4zek04OCAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN2MtMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM0MxMDEuMSA2MC4xIDg4IDg0LjYgODggMTA0em04Mi4yLTUyLjdDMTY1LjEgNjAuMSAxNTIgODQuNiAxNTIgMTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0xOS40LTEzLjEtNDMuOS0xOC4yLTUyLjdjLTEuMi0yLjEtMy40LTMuMy01LjgtMy4zcy00LjYgMS4yLTUuOCAzLjN6TTIxNiAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN2MtMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM0MyMjkuMSA2MC4xIDIxNiA4NC42IDIxNiAxMDR6TTM5NC4yIDUxLjNDMzg5LjEgNjAuMSAzNzYgODQuNiAzNzYgMTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0xOS40LTEzLjEtNDMuOS0xOC4yLTUyLjdjLTEuMi0yLjEtMy40LTMuMy01LjgtMy4zcy00LjYgMS4yLTUuOCAzLjN6TTQ0MCAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN2MtMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM0M0NTMuMSA2MC4xIDQ0MCA4NC42IDQ0MCAxMDR6bTgyLjItNTIuN0M1MTcuMSA2MC4xIDUwNCA4NC42IDUwNCAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN2MtMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM3pNNTg0IDEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTkuNC0xMy4xLTQzLjktMTguMi01Mi43Yy0xLjItMi4xLTMuNC0zLjMtNS44LTMuM3MtNC42IDEuMi01LjggMy4zQzU5Ny4xIDYwLjEgNTg0IDg0LjYgNTg0IDEwNHpNMTEyIDE2MGMtOC44IDAtMTYgNy4yLTE2IDE2djk2IDE2aDMyVjI3MiAxNzZjMC04LjgtNy4yLTE2LTE2LTE2em02NCAwYy04LjggMC0xNiA3LjItMTYgMTZ2OTYgMTZoMzJWMjcyIDE3NmMwLTguOC03LjItMTYtMTYtMTZ6bTY0IDBjLTguOCAwLTE2IDcuMi0xNiAxNnY5NiAxNmgzMlYyNzIgMTc2YzAtOC44LTcuMi0xNi0xNi0xNnptMTYwIDBjLTguOCAwLTE2IDcuMi0xNiAxNnY5NiAxNmgzMlYyNzIgMTc2YzAtOC44LTcuMi0xNi0xNi0xNnptNjQgMGMtOC44IDAtMTYgNy4yLTE2IDE2djk2IDE2aDMyVjI3MiAxNzZjMC04LjgtNy4yLTE2LTE2LTE2em02NCAwYy04LjggMC0xNiA3LjItMTYgMTZ2OTYgMTZoMzJWMjcyIDE3NmMwLTguOC03LjItMTYtMTYtMTZ6TTM1MiAxNDRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMzIwSDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2OTZjMCA1MyA0MyA5NiA5NiA5NkgyODh2NjRIMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDMyMCA0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzUyVjM4NEg1NDRjNTMgMCA5Ni00MyA5Ni05NlYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMzUyVjE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFyZERyaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjI4MC40Yy0xNy0xNS4yLTM5LjQtMjQuNC02NC0yNC40SDY0Yy0yNC42IDAtNDcgOS4yLTY0IDI0LjRWOTZ6TTY0IDI4OEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjR2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjM1MmMwLTM1LjMgMjguNy02NCA2NC02NHpNMzIwIDQxNmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTEyOC0zMmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYXNodGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4MS4zIDMyLjRjMTcuNCAyLjkgMjkuMiAxOS40IDI2LjMgMzYuOEwxOTcuOCAxMjhoOTUuMWwxMS41LTY5LjNjMi45LTE3LjQgMTkuNC0yOS4yIDM2LjgtMjYuM3MyOS4yIDE5LjQgMjYuMyAzNi44TDM1Ny44IDEyOEg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzQ3LjFMMzI1LjggMzIwSDM4NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMTUuMWwtMTEuNSA2OS4zYy0yLjkgMTcuNC0xOS40IDI5LjItMzYuOCAyNi4zcy0yOS4yLTE5LjQtMjYuMy0zNi44bDkuOC01OC43SDE1NS4xbC0xMS41IDY5LjNjLTIuOSAxNy40LTE5LjQgMjkuMi0zNi44IDI2LjNzLTI5LjItMTkuNC0yNi4zLTM2LjhMOTAuMiAzODRIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoNjguOWwyMS4zLTEyOEg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg2OC45bDExLjUtNjkuM2MyLjktMTcuNCAxOS40LTI5LjIgMzYuOC0yNi4zek0xODcuMSAxOTJMMTY1LjggMzIwaDk1LjFsMjEuMy0xMjhIMTg3LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhdENvd2JveVNpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUyLjcgMTM1LjlsLTEwLjQgNTcuMmM2LjgtLjcgMTMuNi0xLjEgMjAuNS0xLjFoMTAuN2MzOS40IDAgNzcuOCAxMi4xIDExMC4xIDM0LjdMNTYyLjQgNDIxLjhsMzUuMSAyNC42YzI0LjQtNiA0Mi41LTI4LjEgNDIuNS01NC40YzAtNzUuOC05NC43LTEyNi42LTEzNC42LTE0NC43TDQ3NCA4My45QzQ2OC4yIDUzLjggNDQxLjggMzIgNDExLjEgMzJoLTIuN2MtNS42IDAtMTEuMSAuNy0xNi41IDIuMkwxOTkuMiA4NS41Yy0yMy45IDYuNC00MiAyNi00Ni41IDUwLjR6TTAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDU0NEwyNjUuMyAyNTIuOWMtMjYuOS0xOC44LTU4LjktMjguOS05MS44LTI4LjlIMTYyLjljLTYwLjYgMC0xMTYgMzQuMi0xNDMuMSA4OC40TDEzLjUgMzI1QzQuNiAzNDIuNyAwIDM2Mi4zIDAgMzgyLjJWMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYXRDb3dib3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDY0YzE0LjQgMCAyMi4zLTcgMzAuOC0xNC40QzM2MC40IDQxLjEgMzcwLjcgMzIgMzkyIDMyYzQ5LjMgMCA4NC40IDE1Mi4yIDk3LjkgMjIxLjlDNDQ3LjggMjcyLjEgMzkwLjkgMjg4IDMyMCAyODhzLTEyNy44LTE1LjktMTY5LjktMzQuMUMxNjMuNiAxODQuMiAxOTguNyAzMiAyNDggMzJjMjEuMyAwIDMxLjYgOS4xIDQxLjIgMTcuNkMyOTcuNyA1NyAzMDUuNiA2NCAzMjAgNjR6TTExMS4xIDI3MC43YzQ3LjIgMjQuNSAxMTcuNSA0OS4zIDIwOSA0OS4zczE2MS44LTI0LjggMjA4LjktNDkuM2MyNC44LTEyLjkgNDkuOC0yOC4zIDcwLjEtNDcuN2M3LjktNy45IDIwLjItOS4yIDI5LjYtMy4zYzkuNSA1LjkgMTMuNSAxNy45IDkuOSAyOC41Yy0xMy41IDM3LjctMzguNCA3Mi4zLTY2LjEgMTAwLjZDNTIzLjcgMzk4LjkgNDQzLjYgNDQ4IDMyMCA0NDhzLTIwMy42LTQ5LjEtMjUyLjUtOTkuMkMzOS44IDMyMC40IDE0LjkgMjg1LjggMS40IDI0OC4xYy0zLjYtMTAuNiAuNC0yMi42IDkuOS0yOC41YzkuNS01LjkgMjEuNy00LjUgMjkuNiAzLjNjMjAuNCAxOS40IDQ1LjMgMzQuOCA3MC4xIDQ3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhdFdpemFyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA0MTZMMTY4LjYgMTgwLjdjMTUuMy0zNC40IDQwLjMtNjMuNSA3Mi04My43bDE0Ni45LTk0YzMtMS45IDYuNS0yLjkgMTAtMi45QzQwNy43IDAgNDE2IDguMyA0MTYgMTguNnYxLjZjMCAyLjYtLjUgNS4xLTEuNCA3LjVMMzU0LjggMTc2LjljLTEuOSA0LjctMi44IDkuNy0yLjggMTQuN2MwIDUuNSAxLjIgMTEgMy40IDE2LjFMNDQ4IDQxNkgyNDAuOWwxMS44LTM1LjQgNDAuNC0xMy41YzYuNS0yLjIgMTAuOS04LjMgMTAuOS0xNS4ycy00LjQtMTMtMTAuOS0xNS4ybC00MC40LTEzLjUtMTMuNS00MC40QzIzNyAyNzYuNCAyMzAuOSAyNzIgMjI0IDI3MnMtMTMgNC40LTE1LjIgMTAuOWwtMTMuNSA0MC40LTQwLjQgMTMuNUMxNDguNCAzMzkgMTQ0IDM0NS4xIDE0NCAzNTJzNC40IDEzIDEwLjkgMTUuMmw0MC40IDEzLjVMMjA3LjEgNDE2SDY0ek0yNzkuNiAxNDEuNWMtMS4xLTMuMy00LjEtNS41LTcuNi01LjVzLTYuNSAyLjItNy42IDUuNWwtNi43IDIwLjItMjAuMiA2LjdjLTMuMyAxLjEtNS41IDQuMS01LjUgNy42czIuMiA2LjUgNS41IDcuNmwyMC4yIDYuNyA2LjcgMjAuMmMxLjEgMy4zIDQuMSA1LjUgNy42IDUuNXM2LjUtMi4yIDcuNi01LjVsNi43LTIwLjIgMjAuMi02LjdjMy4zLTEuMSA1LjUtNC4xIDUuNS03LjZzLTIuMi02LjUtNS41LTcuNmwtMjAuMi02LjctNi43LTIwLjJ6TTMyIDQ0OEg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRTaWRlQ291Z2hTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzI1LjhsNDQgMzQuNWM4LjEgMS40IDE0LjggNi44IDE4IDE0LjFMNTUyLjkgNDA4YzEwLjYgLjQgMTkuNSA3LjYgMjIuMiAxNy40bDM5LjEgMzAuNmMuNiAwIDEuMi0uMSAxLjgtLjFjMTEuMSAwIDIwLjQgNy41IDIzLjIgMTcuOGgtMy45YzYuMiA4LjUgNi40IDIwLjQtLjQgMjljLTguMiAxMC40LTIzLjMgMTIuMy0zMy43IDQuMUw5LjIgNDIuOUMtMS4yIDM0LjctMy4xIDE5LjYgNS4xIDkuMlMyOC40LTMuMSAzOC44IDUuMUw4OS42IDQ0LjlDMTI3IDE2LjcgMTczLjUgMCAyMjQgMGgyNGM5NS4yIDAgMTgxLjIgNjkuMyAxOTcuMyAxNjAuMmMyLjMgMTMgNi44IDI1LjcgMTUuMSAzNmw0MiA1Mi42YzYuMiA3LjggOS42IDE3LjQgOS42IDI3LjRjMCAyNC4yLTE5LjYgNDMuOC00My44IDQzLjhINDQ4djAgNS44ek0wIDIyNC4yYzAtMzguNyA5LjgtNzUuMSAyNy4xLTEwNi45TDM0MS44IDM2NS4zbC0yLjUgLjNjLTExIDEuNC0xOS4yIDEwLjctMTkuMiAyMS44YzAgMTEuNiA5IDIxLjIgMjAuNiAyMS45bDYyIDMuOSA0MyAzMy45QzQzOS4zIDQ2Ni4yIDQyMS4yIDQ4MCA0MDAgNDgwSDMyMHY4YzAgMTMuMy0xMC43IDI0LTI0IDI0SDI1NnYwSDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDcuM2MwLTE2LjctNi45LTMyLjUtMTcuMS00NS44QzE2LjYgMzIyLjQgMCAyNzQuMSAwIDIyNC4yek02MTYgMzYwYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptLTY0LTQ4YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptNDAtMjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhZFNpZGVDb3VnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDIyNC4yQzAgMTAwLjYgMTAwLjIgMCAyMjQgMGgyNGM5NS4yIDAgMTgxLjIgNjkuMyAxOTcuMyAxNjAuMmMyLjMgMTMgNi44IDI1LjcgMTUuMSAzNmw0MiA1Mi42YzYuMiA3LjggOS42IDE3LjQgOS42IDI3LjRjMCAyNC4yLTE5LjYgNDMuOC00My44IDQzLjhINDQ4djAgMzJMMzM5LjIgMzY1LjZjLTExIDEuNC0xOS4yIDEwLjctMTkuMiAyMS44YzAgMTEuNiA5IDIxLjIgMjAuNiAyMS45TDQ0OCA0MTZ2MTZjMCAyNi41LTIxLjUgNDgtNDggNDhIMzIwdjhjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMjU2djBIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQwNy4zYzAtMTYuNy02LjktMzIuNS0xNy4xLTQ1LjhDMTYuNiAzMjIuNCAwIDI3NC4xIDAgMjI0LjJ6bTM1Mi0uMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTQ2NCAzODRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTUyLTI0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNNTkyIDQ4MGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwek01NTIgMzEyYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptNDAtMjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpNNTUyIDQwOGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRTaWRlTWFzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAyMjQuMmMwLTIyLjIgMy4yLTQzLjYgOS4yLTYzLjlMMjYyLjIgMzIxYy00IDkuNS02LjIgMjAtNi4yIDMxVjUxMkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQwNy4zYzAtMTYuNy02LjktMzIuNS0xNy4xLTQ1LjhDNDguNiAzMjIuNCAzMiAyNzQuMSAzMiAyMjQuMnptMjQ4LjMgNzAuNEw1MyAxMjkuM0M4OC43IDUzIDE2Ni4yIDAgMjU2IDBoMjRjOTUuMiAwIDE4MS4yIDY5LjMgMTk3LjMgMTYwLjJjMi4zIDEzIDYuOCAyNS43IDE1LjEgMzZsNDIgNTIuNmM1LjQgNi43IDguNiAxNC44IDkuNCAyMy4ySDMzNmMtMjEuNyAwLTQxLjMgOC42LTU1LjcgMjIuNnpNMzM2IDMwNEg1MzRsMCAwaDEwbC0xOS43IDY0SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg1MTQuNWwtOS44IDMySDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg0OTQuOGwtLjkgMi44Yy04LjMgMjYuOS0zMy4xIDQ1LjItNjEuMiA0NS4ySDI4OFYzNTJjMC0xNCA2LTI2LjcgMTUuNi0zNS40YzAgMCAwIDAgMCAwYzguNS03LjggMTkuOS0xMi42IDMyLjQtMTIuNnptNDgtODBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkU2lkZVZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjI0LjJDMCAxMDAuNiAxMDAuMiAwIDIyNCAwaDI0Yzk1LjIgMCAxODEuMiA2OS4zIDE5Ny4zIDE2MC4yYzIuMyAxMyA2LjggMjUuNyAxNS4xIDM2bDQyIDUyLjZjNi4yIDcuOCA5LjYgMTcuNCA5LjYgMjcuNGMwIDI0LjItMTkuNiA0My44LTQzLjggNDMuOEg0NDh2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMzIwdjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDcuM2MwLTE2LjctNi45LTMyLjUtMTcuMS00NS44QzE2LjYgMzIyLjQgMCAyNzQuMSAwIDIyNC4yek0yMjQgNjRjLTguOCAwLTE2IDcuMi0xNiAxNmMwIDMzLTM5LjkgNDkuNS02My4yIDI2LjJjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZDMTQ1LjUgMTUyLjEgMTI5IDE5MiA5NiAxOTJjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZjMzMgMCA0OS41IDM5LjkgMjYuMiA2My4yYy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBDMTY4LjEgMjg2LjUgMjA4IDMwMyAyMDggMzM2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZjMC0zMyAzOS45LTQ5LjUgNjMuMi0yNi4yYzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkMzMDIuNSAyNjMuOSAzMTkgMjI0IDM1MiAyMjRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZjLTMzIDAtNDkuNS0zOS45LTI2LjItNjMuMmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnMtMTYuNC02LjItMjIuNiAwQzI3OS45IDEyOS41IDI0MCAxMTMgMjQwIDgwYzAtOC44LTcuMi0xNi0xNi0xNnptLTI0IDk2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptNDAgODBhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMySDgwaDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDExMlYyMDhIMzM2Vjk2SDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg0OCA0OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0MDBWMjQwIDQxNmgxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzNjggMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDE2VjI3MkgxMTJWNDE2aDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDgwIDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDQ4VjI0MCA5NkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkcGhvbmVzU2ltcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4MEMxNDEuMSA4MCA0OCAxNzMuMSA0OCAyODhWMzkyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjI4OEMwIDE0Ni42IDExNC42IDMyIDI1NiAzMnMyNTYgMTE0LjYgMjU2IDI1NlYzOTJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjg4YzAtMTE0LjktOTMuMS0yMDgtMjA4LTIwOHpNODAgMzUyYzAtMzUuMyAyOC43LTY0IDY0LTY0aDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxNDRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjM1MnptMjg4LTY0YzM1LjMgMCA2NCAyOC43IDY0IDY0djY0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkcGhvbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4MEMxNDkuOSA4MCA2Mi40IDE1OS40IDQ5LjYgMjYyYzkuNC0zLjggMTkuNi02IDMwLjQtNmMyNi41IDAgNDggMjEuNSA0OCA0OFY0MzJjMCAyNi41LTIxLjUgNDgtNDggNDhjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjM4NCAzMzYgMjg4QzAgMTQ2LjYgMTE0LjYgMzIgMjU2IDMyczI1NiAxMTQuNiAyNTYgMjU2djQ4IDQ4IDE2YzAgNDQuMi0zNS44IDgwLTgwIDgwYy0yNi41IDAtNDgtMjEuNS00OC00OFYzMDRjMC0yNi41IDIxLjUtNDggNDgtNDhjMTAuOCAwIDIxIDIuMSAzMC40IDZDNDQ5LjYgMTU5LjQgMzYyLjEgODAgMjU2IDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OEMxNDEuMSA0OCA0OCAxNDEuMSA0OCAyNTZ2NDBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjU2QzAgMTE0LjYgMTE0LjYgMCAyNTYgMFM1MTIgMTE0LjYgNTEyIDI1NlY0MDAuMWMwIDQ4LjYtMzkuNCA4OC04OC4xIDg4TDMxMy42IDQ4OGMtOC4zIDE0LjMtMjMuOCAyNC00MS42IDI0SDI0MGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OGgzMmMxNy44IDAgMzMuMyA5LjcgNDEuNiAyNGwxMTAuNCAuMWMyMi4xIDAgNDAtMTcuOSA0MC00MFYyNTZjMC0xMTQuOS05My4xLTIwOC0yMDgtMjA4ek0xNDQgMjA4aDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxNDRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI3MmMwLTM1LjMgMjguNy02NCA2NC02NHptMjI0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjR2NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMzUyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyNDBjMC0xNy43IDE0LjMtMzIgMzItMzJoMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYXJ0Q2lyY2xlQm9sdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45bDIuNi0yLjRDMjY3LjIgNDM4LjYgMjU2IDQwNC42IDI1NiAzNjhjMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZjMjguMyAwIDU1IDYuNyA3OC43IDE4LjVjLjktNi41IDEuMy0xMyAxLjMtMTkuNnYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTQ3LjktMjI1YzQuMyAzLjcgNS40IDkuOSAyLjYgMTQuOUw0NTIuNCAzNTZINDg4YzUuMiAwIDkuOCAzLjMgMTEuNCA4LjJzLS4xIDEwLjMtNC4yIDEzLjRsLTk2IDcyYy00LjUgMy40LTEwLjggMy4yLTE1LjEtLjZzLTUuNC05LjktMi42LTE0LjlMNDExLjYgMzgwSDM3NmMtNS4yIDAtOS44LTMuMy0xMS40LTguMnMuMS0xMC4zIDQuMi0xMy40bDk2LTcyYzQuNS0zLjQgMTAuOC0zLjIgMTUuMSAuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRDaXJjbGVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45bDIuNi0yLjRDMjY3LjIgNDM4LjYgMjU2IDQwNC42IDI1NiAzNjhjMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZjMjguMyAwIDU1IDYuNyA3OC43IDE4LjVjLjktNi41IDEuMy0xMyAxLjMtMTkuNnYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpNNTc2IDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNzYuNy00My4zYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC03MiA3MmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDE2IDM4NS40bDYwLjctNjAuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRDaXJjbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45bDIuNi0yLjRDMjY3LjIgNDM4LjYgMjU2IDQwNC42IDI1NiAzNjhjMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZjMjguMyAwIDU1IDYuNyA3OC43IDE4LjVjLjktNi41IDEuMy0xMyAxLjMtMTkuNnYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTAtOTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0wLTE0NGM4LjggMCAxNiA3LjIgMTYgMTZ2ODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjg4YzAtOC44IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRDaXJjbGVNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45bDIuNi0yLjRDMjY3LjIgNDM4LjYgMjU2IDQwNC42IDI1NiAzNjhjMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZjMjguMyAwIDU1IDYuNyA3OC43IDE4LjVjLjktNi41IDEuMy0xMyAxLjMtMTkuNnYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpNNTc2IDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNjQgMGMwIDguOC03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2SDQ5NmM4LjggMCAxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYXJ0Q2lyY2xlUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45bDIuNi0yLjRDMjY3LjIgNDM4LjYgMjU2IDQwNC42IDI1NiAzNjhjMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZjMjguMyAwIDU1IDYuNyA3OC43IDE4LjVjLjktNi41IDEuMy0xMyAxLjMtMTkuNnYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTE2LTIwOHY0OGg0OGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg0NDh2NDhjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMzg0SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg0OFYzMDRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRDaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45bDIuNi0yLjRDMjY3LjIgNDM4LjYgMjU2IDQwNC42IDI1NiAzNjhjMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZjMjguMyAwIDU1IDYuNyA3OC43IDE4LjVjLjktNi41IDEuMy0xMyAxLjMtMTkuNnYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTU5LjMtMTgwLjdMNDU0LjYgMzY4bDM2LjcgMzYuN2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwTDQzMiAzOTAuNmwtMzYuNyAzNi43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42TDQwOS40IDM2OGwtMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDMyIDM0NS40bDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYXJ0Q3JhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE5LjQgNDQuMWMyMy4zLTMuOSA0Ni44LTEuOSA2OC42IDUuM2w0OS44IDc3LjUtNzUuNCA3NS40Yy0xLjUgMS41LTIuNCAzLjYtMi4zIDUuOHMxIDQuMiAyLjYgNS43bDExMiAxMDRjMi45IDIuNyA3LjQgMi45IDEwLjUgLjNzMy44LTcgMS43LTEwLjRsLTYwLjQtOTguMSA5MC43LTc1LjZjMi42LTIuMSAzLjUtNS43IDIuNC04LjhMMjk2LjggNjEuOGMyOC41LTE2LjcgNjIuNC0yMy4yIDk1LjctMTcuNkM0NjEuNSA1NS42IDUxMiAxMTUuMiA1MTIgMTg1LjF2NS44YzAgNDEuNS0xNy4yIDgxLjItNDcuNiAxMDkuNUwyODMuNyA0NjkuMWMtNy41IDctMTcuNCAxMC45LTI3LjcgMTAuOXMtMjAuMi0zLjktMjcuNy0xMC45TDQ3LjYgMzAwLjRDMTcuMiAyNzIuMSAwIDIzMi40IDAgMTkwLjl2LTUuOGMwLTY5LjkgNTAuNS0xMjkuNSAxMTkuNC0xNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYXJ0UHVsc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI4LjMgNDY5LjFMNDcuNiAzMDAuNGMtNC4yLTMuOS04LjItOC4xLTExLjktMTIuNGg4N2MyMi42IDAgNDMtMTMuNiA1MS43LTM0LjVsMTAuNS0yNS4yIDQ5LjMgMTA5LjVjMy44IDguNSAxMi4xIDE0IDIxLjQgMTQuMXMxNy44LTUgMjItMTMuM0wzMjAgMjUzLjdsMS43IDMuNGM5LjUgMTkgMjguOSAzMSA1MC4xIDMxSDQ3Ni4zYy0zLjcgNC4zLTcuNyA4LjUtMTEuOSAxMi40TDI4My43IDQ2OS4xYy03LjUgNy0xNy40IDEwLjktMjcuNyAxMC45cy0yMC4yLTMuOS0yNy43LTEwLjl6TTUwMy43IDI0MGgtMTMyYy0zIDAtNS44LTEuNy03LjItNC40bC0yMy4yLTQ2LjNjLTQuMS04LjEtMTIuNC0xMy4zLTIxLjUtMTMuM3MtMTcuNCA1LjEtMjEuNSAxMy4zbC00MS40IDgyLjhMMjA1LjkgMTU4LjJjLTMuOS04LjctMTIuNy0xNC4zLTIyLjItMTQuMXMtMTguMSA1LjktMjEuOCAxNC44bC0zMS44IDc2LjNjLTEuMiAzLTQuMiA0LjktNy40IDQuOUgxNmMtMi42IDAtNSAuNC03LjMgMS4xQzMgMjI1LjIgMCAyMDguMiAwIDE5MC45di01LjhjMC02OS45IDUwLjUtMTI5LjUgMTE5LjQtMTQxQzE2NSAzNi41IDIxMS40IDUxLjQgMjQ0IDg0bDEyIDEyIDEyLTEyYzMyLjYtMzIuNiA3OS00Ny41IDEyNC42LTM5LjlDNDYxLjUgNTUuNiA1MTIgMTE1LjIgNTEyIDE4NS4xdjUuOGMwIDE2LjktMi44IDMzLjUtOC4zIDQ5LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3LjYgMzAwLjRMMjI4LjMgNDY5LjFjNy41IDcgMTcuNCAxMC45IDI3LjcgMTAuOXMyMC4yLTMuOSAyNy43LTEwLjlMNDY0LjQgMzAwLjRjMzAuNC0yOC4zIDQ3LjYtNjggNDcuNi0xMDkuNXYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVsaWNvcHRlclN5bWJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDUuMyAyMjRINTEwQzQ5NS42IDEwOC4yIDQwMy44IDE2LjQgMjg4IDJWNjYuN0MzNjguNCA4MC4xIDQzMS45IDE0My42IDQ0NS4zIDIyNHpNNTEwIDI4OEg0NDUuM0M0MzEuOSAzNjguNCAzNjguNCA0MzEuOSAyODggNDQ1LjRWNTEwYzExNS44LTE0LjQgMjA3LjYtMTA2LjIgMjIyLTIyMnpNMiAyODhDMTYuNCA0MDMuOCAxMDguMiA0OTUuNiAyMjQgNTEwVjQ0NS40QzE0My42IDQzMS45IDgwLjEgMzY4LjQgNjYuNyAyODhIMnptMC02NEg2Ni43QzgwLjEgMTQzLjYgMTQzLjYgODAuMSAyMjQgNjYuN1YyQzEwOC4yIDE2LjQgMTYuNCAxMDguMiAyIDIyNHptMjA2LTY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjM1MmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI4OGg5NnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY2NEgyMDhWMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWxpY29wdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0djY0aDMyYzg4LjQgMCAxNjAgNzEuNiAxNjAgMTYwdjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDM4NCAzMjBjLTIwLjEgMC0zOS4xLTkuNS01MS4yLTI1LjZsLTcxLjQtOTUuMmMtMy41LTQuNy04LjMtOC4zLTEzLjctMTAuNUw0Ny4yIDE5OC4xYy05LjUtMy44LTE2LjctMTItMTkuMi0yMkw1IDgzLjlDMi40IDczLjggMTAuMSA2NCAyMC41IDY0SDQ4YzEwLjEgMCAxOS42IDQuNyAyNS42IDEyLjhMMTEyIDEyOEgzMjBWNjRIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNMzg0IDMyMEg1MTJWMjg4YzAtNTMtNDMtOTYtOTYtOTZIMzg0VjMyMHpNNjMwLjYgNDI1LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTMuOSAzLjljLTI0IDI0LTU2LjYgMzcuNS05MC41IDM3LjVIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDUzNi4yYzE3IDAgMzMuMy02LjcgNDUuMy0xOC43bDMuOS0zLjljMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlbG1ldFNhZmV0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjIuMyA5OS42YzAgNS42LTQuNSAxMC4xLTEwLjEgMTAuMWMtMy42IDAtNy0xLjktOC44LTUuMUwxNTcuMSA4N0M4MyAxMjMuNSAzMiAxOTkuOCAzMiAyODh2NjRINTQ0bDAtNjYuNGMtLjktODcuMi01MS43LTE2Mi40LTEyNS4xLTE5OC42bC00OCA4My45Yy0xLjggMy4yLTUuMiA1LjEtOC44IDUuMWMtNS42IDAtMTAuMS00LjUtMTAuMS0xMC4xVjY2LjMgNjRjMC0xNy43LTE0LjMtMzItMzItMzJIMjU2ek0xNi42IDM4NEM3LjQgMzg0IDAgMzkxLjQgMCA0MDAuNmMwIDQuNyAyIDkuMiA1LjggMTEuOUMyNy41IDQyOC40IDExMS44IDQ4MCAyODggNDgwczI2MC41LTUxLjYgMjgyLjItNjcuNWMzLjgtMi44IDUuOC03LjIgNS44LTExLjljMC05LjItNy40LTE2LjYtMTYuNi0xNi42SDE2LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlbG1ldFVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3OS41IDIyNEM0NzEuMiA5OC45IDM2Ny4yIDAgMjQwIDBDMTA3LjUgMCAwIDEwNy41IDAgMjQwdjU2LjNDMCAzNDQuOCAzOS4yIDM4NCA4Ny43IDM4NEgyMDBoMTQuOUwzNDMuNSA1MDUuNGM0LjUgNC4yIDEwLjQgNi42IDE2LjUgNi42aDk2YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDM2OS41bC0xLjUtMS41VjI4OGg4MCAzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmgtLjV6TTMyMCA0MTcuMmwtNzgtNzMuN0wyNzQuNCAyODhIMzIwVjQxNy4yek0yODUuMyAxMDMuMWwzNC43IDUyVjExMmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djk2YzAgNy4xLTQuNiAxMy4zLTExLjQgMTUuM3MtMTQtLjYtMTcuOS02LjRsLTM0LjctNTJWMjA4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjExMmMwLTcuMSA0LjYtMTMuMyAxMS40LTE1LjNzMTQgLjYgMTcuOSA2LjR6TTE2MCAxMTJ2NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY2NGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OFYxMTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGlnaGxpZ2h0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE1IDMxNWwxNTguNC0yMTVMNDQ0LjEgNzAuNiAyMjkgMjI5IDMxNSAzMTV6bS0xODcgNWwwIDBWMjQ4LjNjMC0xNS4zIDcuMi0yOS42IDE5LjUtMzguNkw0MjAuNiA4LjRDNDI4IDIuOSA0MzcgMCA0NDYuMiAwYzExLjQgMCAyMi40IDQuNSAzMC41IDEyLjZsNTQuOCA1NC44YzguMSA4LjEgMTIuNiAxOSAxMi42IDMwLjVjMCA5LjItMi45IDE4LjItOC40IDI1LjZMMzM0LjQgMzk2LjVjLTkgMTIuMy0yMy40IDE5LjUtMzguNiAxOS41SDIyNGwtMjUuNCAyNS40Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtNTAuNy01MC43Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM0wxMjggMzIwek03IDQ2Ni4zbDYzLTYzIDcwLjYgNzAuNi0zMSAzMWMtNC41IDQuNS0xMC42IDctMTcgN0gyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjR2LTQuN2MwLTYuNCAyLjUtMTIuNSA3LTE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIaWxsQXZhbGFuY2hlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOS43IDQwMS45YzM0LjIgMjMuMSA4MS4xIDE5LjUgMTExLjQtMTAuOGMzNC40LTM0LjQgMzQuNC05MC4xIDAtMTI0LjRjLTI3LjgtMjcuOC02OS41LTMzLjEtMTAyLjYtMTZjLTExLjggNi4xLTE2LjQgMjAuNi0xMC4zIDMyLjNzMjAuNiAxNi40IDMyLjMgMTAuM2MxNS4xLTcuOCAzNC01LjMgNDYuNiA3LjNjMTUuNiAxNS42IDE1LjYgNDAuOSAwIDU2LjZzLTQwLjkgMTUuNi01Ni42IDBsLTgxLjctODEuN0M0MDEuMiAyNjEuMyA0MTYgMjM2LjQgNDE2IDIwOGMwLTMzLjktMjEuMS02Mi45LTUwLjktNzQuNWMxLjktNi44IDIuOS0xNCAyLjktMjEuNWMwLTQ0LjItMzUuOC04MC04MC04MGMtMjcuMyAwLTUxLjUgMTMuNy02NS45IDM0LjZDMjE2LjMgNDYuNiAxOTcuOSAzMiAxNzYgMzJjLTI2LjUgMC00OCAyMS41LTQ4IDQ4YzAgNCAuNSA3LjkgMS40IDExLjZMNDM5LjcgNDAxLjl6TTQ4MCA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0wIDEyOGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTY4LjMgODdDNDMuMSA2MS44IDAgNzkuNyAwIDExNS4zVjQzMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MEgzOTYuN2MzNS42IDAgNTMuNS00My4xIDI4LjMtNjguM0w2OC4zIDg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIaWxsUm9ja3NsaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Mi40IDEwMy44bDI3IDQ4YzIuOCA1IDguMiA4LjIgMTMuOSA4LjJsNTMuMyAwYzUuOCAwIDExLjEtMy4xIDEzLjktOC4ybDI3LTQ4YzIuNy00LjkgMi43LTEwLjggMC0xNS43bC0yNy00OGMtMi44LTUtOC4yLTguMi0xMy45LTguMkgyOTMuNGMtNS44IDAtMTEuMSAzLjEtMTMuOSA4LjJsLTI3IDQ4Yy0yLjcgNC45LTIuNyAxMC44IDAgMTUuN3pNNjguMyA4N0M0My4xIDYxLjggMCA3OS43IDAgMTE1LjNWNDMyYzAgNDQuMiAzNS44IDgwIDgwIDgwSDM5Ni43YzM1LjYgMCA1My41LTQzLjEgMjguMy02OC4zTDY4LjMgODd6TTUwNC4yIDQwMy42YzQuOSAyLjcgMTAuOCAyLjcgMTUuNyAwbDQ4LTI3YzUtMi44IDguMi04LjIgOC4yLTEzLjlWMzA5LjRjMC01LjgtMy4xLTExLjEtOC4yLTEzLjlsLTQ4LTI3Yy00LjktMi43LTEwLjgtMi43LTE1LjcgMGwtNDggMjdjLTUgMi44LTguMiA4LjItOC4yIDEzLjl2NTMuM2MwIDUuOCAzLjEgMTEuMSA4LjIgMTMuOWw0OCAyN3pNMTkyIDY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTM4NCAyODhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIaXBwbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcgNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTcuMiAxNy4yYzEuOS0uMSAzLjktLjIgNS44LS4yaDMyYzExLjIgMCAyMS45IDIuMyAzMS42IDYuNUw1NDMgNTVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45TDU2NCAxMDEuOWM3LjYgMTIuMiAxMiAyNi43IDEyIDQyLjFjMCAxMC4yIDcuNCAxOC44IDE2LjcgMjNjMjcuOSAxMi41IDQ3LjMgNDAuNSA0Ny4zIDczYzAgMjYuMi0xMi42IDQ5LjQtMzIgNjR2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDU2MGMtOC44IDAtMTYtNy4yLTE2LTE2VjMyMEg0ODB2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDQzMmMtOC44IDAtMTYtNy4yLTE2LTE2VjMxOC40Yy0xMS44LTIuNC0yMi43LTcuNC0zMi0xNC40Yy0xLjUtMS4xLTIuOS0yLjMtNC4zLTMuNWMtMTctMTQuNy0yNy43LTM2LjQtMjcuNy02MC41YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2YzAgNDQuNyAyNi4yIDgzLjIgNjQgMTAxLjJWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzcyYy0xOS44IDcuNy00MS40IDEyLTY0IDEycy00NC4yLTQuMy02NC0xMnY3NmMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzI5LjFMNDUuOSAzNjkuN2MtNS40IDEyLjEtMTkuNiAxNy42LTMxLjcgMTIuMlMtMy4zIDM2Mi40IDIuMSAzNTAuM0wyNCAzMDAuOWM1LjMtMTEuOSA4LTI0LjcgOC0zNy43QzMyIDE1NS43IDExNy4yIDY4IDIyMy44IDY0LjFsLjItLjFoNy4ySDI1NmgzMmM0MS43IDAgODMuNCAxMi4xIDExNy4yIDI1LjdjMS43LTEuOCAzLjUtMy42IDUuMy01LjJMNDA3IDgxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXptNzMgMTg1YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6bTg4IDI0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpNNDgwIDE0NGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem00OCAxNmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvY2tleVB1Y2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDI1NkMxMTQuNiAyNTYgMCAyMTMgMCAxNjBzMTE0LjYtOTYgMjU2LTk2czI1NiA0MyAyNTYgOTZzLTExNC42IDk2LTI1NiA5NnptMTkyLjMgMS44YzI0LjctOS4zIDQ2LjktMjEgNjMuNy0zNS42VjM1MmMwIDUzLTExNC42IDk2LTI1NiA5NlMwIDQwNSAwIDM1MlYyMjIuM2MxNi44IDE0LjYgMzkgMjYuMyA2My43IDM1LjZDMTE0LjUgMjc2LjkgMTgyLjUgMjg4IDI1NiAyODhzMTQxLjUtMTEuMSAxOTIuMy0zMC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb2xseUJlcnJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS04MCA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTI3Ni44IDM4My44YzEgLjEgMi4xIC4yIDMuMiAuMmMzOS44IDAgNzIgMzIuMiA3MiA3MnYyMi43YzAgMTYuNCAxNiAyNy45IDMxLjYgMjIuOGwxMi44LTQuM2MxOC02IDM3LjMtNi41IDU1LjYtMS41bDE5LjQgNS4zYzE3LjkgNC45IDM0LjQtMTEuNiAyOS41LTI5LjVMNDk1LjYgNDUyYy01LTE4LjMtNC40LTM3LjYgMS41LTU1LjZsNC4zLTEyLjhjNS4yLTE1LjUtNi40LTMxLjYtMjIuOC0zMS42Yy0zNC42IDAtNjIuNy0yOC4xLTYyLjctNjIuN3YtMzJjMC0xNi40LTE2LTI3LjktMzEuNi0yMi44bC0xMi44IDQuM2MtMTggNi0zNy4zIDYuNS01NS42IDEuNWwtMjkuNi04LjFjLTIuOS0uOC01LjktMS04LjctLjdjNC4yIDkuNyA1LjggMjAuOCAzLjcgMzIuM0wyNzUgMjk4LjdjLTEuNSA4LjQtMS40IDE3IC41IDI1LjNsNS4zIDIzLjljMi44IDEyLjcgMS4xIDI1LjItNCAzNS45ek0xMjcuNiAyMzQuNWMtMTUuNS01LjItMzEuNiA2LjQtMzEuNiAyMi44djMyQzk2IDMyMy45IDY3LjkgMzUyIDMzLjMgMzUyYy0xNi40IDAtMjcuOSAxNi0yMi44IDMxLjZsNC4zIDEyLjhjNiAxOCA2LjUgMzcuMyAxLjUgNTUuNmwtNS4zIDE5LjRDNi4yIDQ4OS40IDIyLjYgNTA1LjggNDAuNSA1MDFMNjAgNDk1LjZjMTguMy01IDM3LjYtNC41IDU1LjYgMS41bDEyLjggNC4zYzE1LjUgNS4yIDMxLjYtNi40IDMxLjYtMjIuOHYtMzJjMC0zNC42IDI4LjEtNjIuNyA2Mi43LTYyLjdjMTYuNCAwIDI3LjktMTYgMjIuOC0zMS42bC00LjMtMTIuOGMtNi0xOC02LjUtMzcuMy0xLjUtNTUuNmw1LjMtMTkuNGM0LjktMTcuOS0xMS42LTM0LjQtMjkuNS0yOS41TDE5NiAyNDAuNGMtMTguMyA1LTM3LjYgNC40LTU1LjYtMS41bC0xMi44LTQuM3pNMzg0IDE0NGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3JzZUhlYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNDY0VjMxNi45YzAtMTA4LjQgNjguMy0yMDUuMSAxNzAuNS0yNDEuM0w0MDQuMiAxNS41QzQyNS42IDcuOSA0NDggMjMuOCA0NDggNDYuNGMwIDExLTUuNSAyMS4yLTE0LjYgMjcuM0w0MDAgOTZjNDguMSAwIDkxLjIgMjkuOCAxMDguMSA3NC45bDQ4LjYgMTI5LjVjMTEuOCAzMS40IDQuMSA2Ni44LTE5LjYgOTAuNWMtMTYgMTYtMzcuOCAyNS4xLTYwLjUgMjUuMWgtMy40Yy0yNi4xIDAtNTAuOS0xMS42LTY3LjYtMzEuN2wtMzIuMy0zOC43Yy0xMS43IDQuMS0yNC4yIDYuNC0zNy4zIDYuNGwtLjEgMCAwIDBjLTYuMyAwLTEyLjUtLjUtMTguNi0xLjVjLTMuNi0uNi03LjItMS40LTEwLjctMi4zbDAgMGMtMjguOS03LjgtNTMuMS0yNi44LTY3LjgtNTIuMmMtNC40LTcuNi0xNC4yLTEwLjMtMjEuOS01LjhzLTEwLjMgMTQuMi01LjggMjEuOWMyNCA0MS41IDY4LjMgNzAgMTE5LjMgNzEuOWw0Ny4yIDcwLjhjNCA2LjEgNi4yIDEzLjIgNi4yIDIwLjRjMCAyMC4zLTE2LjUgMzYuOC0zNi44IDM2LjhIMTEyYy0yNi41IDAtNDgtMjEuNS00OC00OHpNMzkyIDIyNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvcnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAyMzguMVYxNjBoMTZsOS44IDE5LjZjMTIuNSAyNS4xIDQyLjIgMzYuNCA2OC4zIDI2YzIwLjUtOC4yIDMzLjktMjggMzMuOS01MC4xVjgwYzAtMTkuMS04LjQtMzYuMy0yMS43LTQ4SDU2MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg0ODAgNDQ4QzM3Ny4zIDAgMzIwIDU3LjMgMzIwIDEyOEgyMjQgMjAzLjIgMTQ4LjhjLTMwLjcgMC01Ny42IDE2LjMtNzIuNSA0MC44QzMzLjIgMTc0LjUgMCAyMTEuNCAwIDI1NnY1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI1NmMwLTEzLjQgNi42LTI1LjIgMTYuNy0zMi41YzEuNiAxMyA2LjMgMjUuNCAxMy42IDM2LjRsMjguMiA0Mi40YzguMyAxMi40IDYuNCAyOC43LTEuMiA0MS42Yy0xNi41IDI4LTIwLjYgNjIuMi0xMCA5My45bDE3LjUgNTIuNGM0LjQgMTMuMSAxNi42IDIxLjkgMzAuNCAyMS45aDMzLjdjMjEuOCAwIDM3LjMtMjEuNCAzMC40LTQyLjFsLTIwLjgtNjIuNWMtMi4xLTYuNC0uNS0xMy40IDQuMy0xOC4ybDEyLjctMTIuN2MxMy4yLTEzLjIgMjAuNi0zMS4xIDIwLjYtNDkuN2MwLTIuMy0uMS00LjYtLjMtNi45bDg0IDI0YzQuMSAxLjIgOC4yIDIuMSAxMi4zIDIuOFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzE1LjdjMTkuMi0xOS4yIDMxLjUtNDUuNyAzMi03NS43aDB2LTEuOXpNNDk2IDY0YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9zcGl0YWxVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjI1NkgxNDRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMHY2NEgxNDRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMHY4MGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgyNjUuOWMtNi4zLTEwLjItOS45LTIyLjItOS45LTM1LjFjMC00Ni45IDI1LjgtODcuOCA2NC0xMDkuMlYyNzEuOCA0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNMTUyIDY0aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYyNGgyNGM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDE4NHYyNGMwIDguOC03LjIgMTYtMTYgMTZIMTUyYy04LjggMC0xNi03LjItMTYtMTZWMTUySDExMmMtOC44IDAtMTYtNy4yLTE2LTE2VjEyMGMwLTguOCA3LjItMTYgMTYtMTZoMjRWODBjMC04LjggNy4yLTE2IDE2LTE2ek01MTIgMjcyYTgwIDgwIDAgMSAwIC0xNjAgMCA4MCA4MCAwIDEgMCAxNjAgMHpNMjg4IDQ3Ny4xYzAgMTkuMyAxNS42IDM0LjkgMzQuOSAzNC45SDU0MS4xYzE5LjMgMCAzNC45LTE1LjYgMzQuOS0zNC45YzAtNTEuNC00MS43LTkzLjEtOTMuMS05My4xSDM4MS4xYy01MS40IDAtOTMuMSA0MS43LTkzLjEgOTMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9zcGl0YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDQwMGMyNi41IDAgNDggMjEuNSA0OCA0OFY1MTJIMzY4VjQzMmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHY4MEgxOTJWNDh6TTQ4IDk2SDE2MFY1MTJINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjMyMEg4MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgwVjIyNEg4MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgwVjE0NGMwLTI2LjUgMjEuNS00OCA0OC00OHptNTQ0IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NDhINTYwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDgwdjY0SDU2MGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg4MFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDgwVjk2SDU5MnpNMzEyIDY0Yy04LjggMC0xNiA3LjItMTYgMTZ2MjRIMjcyYy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDI0djI0YzAgOC44IDcuMiAxNiAxNiAxNmgxNmM4LjggMCAxNi03LjIgMTYtMTZWMTUyaDI0YzguOCAwIDE2LTcuMiAxNi0xNlYxMjBjMC04LjgtNy4yLTE2LTE2LTE2SDM0NFY4MGMwLTguOC03LjItMTYtMTYtMTZIMzEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3RUdWJQZXJzb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djUuMmMwIDM0IDE0LjQgNjYuNCAzOS43IDg5LjJsMTYuNCAxNC44YzE1LjIgMTMuNyAyMy44IDMzLjEgMjMuOCA1My41VjIwMGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjE4Ni44YzAtMzQtMTQuNC02Ni40LTM5LjctODkuMkwyOTUuOCA4Mi44QzI4MC43IDY5LjEgMjcyIDQ5LjcgMjcyIDI5LjJWMjR6TTAgMzIwdjE2VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDI3Ny4zYy0xMy44IDAtMjcuMy00LjUtMzguNC0xMi44bC04NS4zLTY0QzEzNyAxNjYuNyAxMTYuOCAxNjAgOTYgMTYwYy01MyAwLTk2IDQzLTk2IDk2djY0em0xMjggMTZ2OTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6bTgwLTE2YzguOCAwIDE2IDcuMiAxNiAxNnY5NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2em0xMTIgMTZ2OTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6bTgwLTE2YzguOCAwIDE2IDcuMiAxNiAxNnY5NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2ek0zNjAgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NS4yYzAgMzQgMTQuNCA2Ni40IDM5LjcgODkuMmwxNi40IDE0LjhjMTUuMiAxMy43IDIzLjggMzMuMSAyMy44IDUzLjVWMjAwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMTg2LjhjMC0zNC0xNC40LTY2LjQtMzkuNy04OS4yTDQwNy44IDgyLjhDMzkyLjcgNjkuMSAzODQgNDkuNyAzODQgMjkuMlYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHpNNjQgMTI4QTY0IDY0IDAgMSAwIDY0IDBhNjQgNjQgMCAxIDAgMCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdGRvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODguNiAyMy40YzMxLjIgMzEuMiAzMS4yIDgxLjkgMCAxMTMuMWwtMzUyIDM1MmMtMzEuMiAzMS4yLTgxLjkgMzEuMi0xMTMuMSAwcy0zMS4yLTgxLjkgMC0xMTMuMWwzNTItMzUyYzMxLjItMzEuMiA4MS45LTMxLjIgMTEzLjEgMHpNNDQzLjMgOTIuN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBjLTEyLjUgMTIuNS0yMy44IDE1LjEtMzcuNSAxNy42bC0yLjUgLjRjLTEzLjggMi41LTMxLjYgNS42LTQ4IDIyYy0xNi43IDE2LjctMjAuOSAzNi0yNC4xIDUwLjlsMCAwdjBsLS4yIDFjLTMuNCAxNS42LTYgMjYuNC0xNS43IDM2LjFzLTIwLjUgMTIuMy0zNi4xIDE1LjdsLTEgLjJjLTE0LjkgMy4yLTM0LjIgNy40LTUwLjkgMjQuMXMtMjAuOSAzNi0yNC4xIDUwLjlsLS4yIDFjLTMuNCAxNS42LTYgMjYuNC0xNS43IDM2LjFjLTkuMiA5LjItMTggMTAuOC0zMi43IDEzLjRsMCAwLS45IC4yYy0xNS42IDIuOC0zNC45IDYuOS01NC40IDI2LjRjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGMxMi41LTEyLjUgMjMuOC0xNS4xIDM3LjUtMTcuNmwyLjUtLjRjMTMuOC0yLjUgMzEuNi01LjYgNDgtMjJjMTYuNy0xNi43IDIwLjktMzYgMjQuMS01MC45bC4yLTFjMy40LTE1LjYgNi0yNi40IDE1LjctMzYuMXMyMC41LTEyLjMgMzYuMS0xNS43bDEtLjJjMTQuOS0zLjIgMzQuMi03LjQgNTAuOS0yNC4xczIwLjktMzYgMjQuMS01MC45bC4yLTFjMy40LTE1LjYgNi0yNi40IDE1LjctMzYuMWM5LjItOS4yIDE4LTEwLjggMzIuNy0xMy40bC45LS4yYzE1LjYtMi44IDM0LjktNi45IDU0LjQtMjYuNGM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnpNMTkxLjIgNDc5LjJsMjg4LTI4OEw0OTUgMjA3YzEwLjkgMTAuOSAxNyAyNS42IDE3IDQxcy02LjEgMzAuMS0xNyA0MUwyODkgNDk1Yy0xMC45IDEwLjktMjUuNiAxNy00MSAxN3MtMzAuMS02LjEtNDEtMTdsLTE1LjgtMTUuOHpNMTcgMzA1QzYuMSAyOTQuMSAwIDI3OS40IDAgMjY0czYuMS0zMC4xIDE3LTQxTDIyMyAxN0MyMzMuOSA2LjEgMjQ4LjYgMCAyNjQgMHMzMC4xIDYuMSA0MSAxN2wxNS44IDE1LjgtMjg4IDI4OEwxNyAzMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdGVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJDMCAxNC4zIDE0LjMgMCAzMiAwSDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMlY0NDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzA0VjQ2NGMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHY0OEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMlY2NEMxNC4zIDY0IDAgNDkuNyAwIDMyem05NiA4MHYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZIMTEyYy04LjggMC0xNiA3LjItMTYgMTZ6TTI0MCA5NmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgyNDB6bTExMiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZIMzY4Yy04LjggMC0xNiA3LjItMTYgMTZ6TTExMiAxOTJjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjIwOGMwLTguOC03LjItMTYtMTYtMTZIMTEyem0xMTIgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDI0MGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNDQtMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjIwOGMwLTguOC03LjItMTYtMTYtMTZIMzY4ek0zMjggMzg0YzEzLjMgMCAyNC4zLTEwLjkgMjEtMjMuOGMtMTAuNi00MS41LTQ4LjItNzIuMi05My03Mi4ycy04Mi41IDMwLjctOTMgNzIuMmMtMy4zIDEyLjggNy44IDIzLjggMjEgMjMuOEgzMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXJnbGFzc0VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAwQzE0LjMgMCAwIDE0LjMgMCAzMlMxNC4zIDY0IDMyIDY0Vjc1YzAgNDIuNCAxNi45IDgzLjEgNDYuOSAxMTMuMUwxNDYuNyAyNTYgNzguOSAzMjMuOUM0OC45IDM1My45IDMyIDM5NC42IDMyIDQzN3YxMWMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NCAzMjBoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJWNDM3YzAtNDIuNC0xNi45LTgzLjEtNDYuOS0xMTMuMUwyMzcuMyAyNTZsNjcuOS02Ny45YzMwLTMwIDQ2LjktNzAuNyA0Ni45LTExMy4xVjY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyMCA2NCAzMnpNOTYgNzVWNjRIMjg4Vjc1YzAgMjUuNS0xMC4xIDQ5LjktMjguMSA2Ny45TDE5MiAyMTAuN2wtNjcuOS02Ny45QzEwNi4xIDEyNC45IDk2IDEwMC40IDk2IDc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VyZ2xhc3NIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDBDMTQuMyAwIDAgMTQuMyAwIDMyUzE0LjMgNjQgMzIgNjRWNzVjMCA0Mi40IDE2LjkgODMuMSA0Ni45IDExMy4xTDE0Ni43IDI1NiA3OC45IDMyMy45QzQ4LjkgMzUzLjkgMzIgMzk0LjYgMzIgNDM3djExYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0IDMyMGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMlY0MzdjMC00Mi40LTE2LjktODMuMS00Ni45LTExMy4xTDIzNy4zIDI1Nmw2Ny45LTY3LjljMzAtMzAgNDYuOS03MC43IDQ2LjktMTEzLjFWNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwIDY0IDMyek05NiA3NVY2NEgyODhWNzVjMCAxOS01LjYgMzcuNC0xNiA1M0gxMTJjLTEwLjMtMTUuNi0xNi0zNC0xNi01M3ptMTYgMzA5YzMuNS01LjMgNy42LTEwLjMgMTIuMS0xNC45TDE5MiAzMDEuM2w2Ny45IDY3LjljNC42IDQuNiA4LjYgOS42IDEyLjEgMTQuOUgxMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXJnbGFzc1N0YXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDBDMTQuMyAwIDAgMTQuMyAwIDMyUzE0LjMgNjQgMzIgNjRWNzVjMCA0Mi40IDE2LjkgODMuMSA0Ni45IDExMy4xTDE0Ni43IDI1NiA3OC45IDMyMy45QzQ4LjkgMzUzLjkgMzIgMzk0LjYgMzIgNDM3djExYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0IDMyMGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMlY0MzdjMC00Mi40LTE2LjktODMuMS00Ni45LTExMy4xTDIzNy4zIDI1Nmw2Ny45LTY3LjljMzAtMzAgNDYuOS03MC43IDQ2LjktMTEzLjFWNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwIDY0IDMyek0yODggNDM3djExSDk2VjQzN2MwLTI1LjUgMTAuMS00OS45IDI4LjEtNjcuOUwxOTIgMzAxLjNsNjcuOSA2Ny45YzE4IDE4IDI4LjEgNDIuNCAyOC4xIDY3Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXJnbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyQzAgMTQuMyAxNC4zIDAgMzIgMEg2NCAzMjBoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJWNzVjMCA0Mi40LTE2LjkgODMuMS00Ni45IDExMy4xTDIzNy4zIDI1Nmw2Ny45IDY3LjljMzAgMzAgNDYuOSA3MC43IDQ2LjkgMTEzLjF2MTFjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzIwIDY0IDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyVjQzN2MwLTQyLjQgMTYuOS04My4xIDQ2LjktMTEzLjFMMTQ2LjcgMjU2IDc4LjkgMTg4LjFDNDguOSAxNTguMSAzMiAxMTcuNCAzMiA3NVY2NEMxNC4zIDY0IDAgNDkuNyAwIDMyek05NiA2NFY3NWMwIDI1LjUgMTAuMSA0OS45IDI4LjEgNjcuOUwxOTIgMjEwLjdsNjcuOS02Ny45YzE4LTE4IDI4LjEtNDIuNCAyOC4xLTY3LjlWNjRIOTZ6bTAgMzg0SDI4OFY0MzdjMC0yNS41LTEwLjEtNDkuOS0yOC4xLTY3LjlMMTkyIDMwMS4zbC02Ny45IDY3LjljLTE4IDE4LTI4LjEgNDIuNC0yOC4xIDY3Ljl2MTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlQ2hpbW5leUNyYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NS44IDI1NS41YzAgMTgtMTUgMzIuMS0zMiAzMi4xaC0zMmwuNyAxNjAuMmMuMiAzNS41LTI4LjUgNjQuMy02NCA2NC4zSDMyNi40TDI4OCA0NDhsODAuOC02Ny4zYzcuOC02LjUgNy42LTE4LjYtLjQtMjQuOUwyNTAuNiAyNjMuMmMtMTQuNi0xMS41LTMzLjggNy0yMi44IDIyTDI4OCAzNjhsLTg1LjUgNzEuMmMtNi4xIDUtNy41IDEzLjgtMy41IDIwLjVMMjMwLjQgNTEySDEyOC4xYy0zNS4zIDAtNjQtMjguNy02NC02NFYyODcuNkgzMmMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNDE2IDEwMC43VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjE4NWw1Mi44IDQ2LjRjOCA3IDEyIDE1IDExIDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUNoaW1uZXlNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NS44IDI1NS41YzAgMTgtMTUgMzIuMS0zMiAzMi4xaC0zMmwuNyAxNjAuMmMuMiAzNS41LTI4LjUgNjQuMy02NCA2NC4zSDEyOC4xYy0zNS4zIDAtNjQtMjguNy02NC02NFYyODcuNkgzMmMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNDE2IDEwMC43VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjE4NWw1Mi44IDQ2LjRjOCA3IDEyIDE1IDExIDI0ek0yNzIgMTkyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhIMjA4Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwaDQ4YzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDMyMFYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDI3MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2VDaGltbmV5VXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDMuOCAyODcuNmMxNyAwIDMyLTE0IDMyLTMyLjFjMS05LTMtMTctMTEtMjRMNTEyIDE4NVY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkg0NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjM2LjdMMzA5LjUgN2MtNi01LTE0LTctMjEtN3MtMTUgMS0yMiA4TDEwIDIzMS41Yy03IDctMTAgMTUtMTAgMjRjMCAxOCAxNCAzMi4xIDMyIDMyLjFoMzJWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OC41YzM1LjUgMCA2NC4yLTI4LjggNjQtNjQuM2wtLjctMTYwLjJoMzJ6TTI4OCAxNjBhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6TTE3NiA0MDBjMC00NC4yIDM1LjgtODAgODAtODBoNjRjNDQuMiAwIDgwIDM1LjggODAgODBjMCA4LjgtNy4yIDE2LTE2IDE2SDE5MmMtOC44IDAtMTYtNy4yLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUNoaW1uZXlXaW5kb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc1LjggMjU1LjVjMCAxOC0xNSAzMi4xLTMyIDMyLjFoLTMybC43IDE2MC4yYy4yIDM1LjUtMjguNSA2NC4zLTY0IDY0LjNIMTI4LjFjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI4Ny42SDMyYy0xOCAwLTMyLTE0LTMyLTMyLjFjMC05IDMtMTcgMTAtMjRMMjY2LjQgOGM3LTcgMTUtOCAyMi04czE1IDIgMjEgN0w0MTYgMTAwLjdWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMTg1bDUyLjggNDYuNGM4IDcgMTIgMTUgMTEgMjR6TTI0OCAxOTJjLTEzLjMgMC0yNCAxMC43LTI0IDI0djgwYzAgMTMuMyAxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0VjIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgyNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlQ2hpbW5leSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDMuOCAyODcuNmMxNyAwIDMyLTE0IDMyLTMyLjFjMS05LTMtMTctMTEtMjRMNTEyIDE4NVY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkg0NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjM2LjdMMzA5LjUgN2MtNi01LTE0LTctMjEtN3MtMTUgMS0yMiA4TDEwIDIzMS41Yy03IDctMTAgMTUtMTAgMjRjMCAxOCAxNCAzMi4xIDMyIDMyLjFoMzJ2NjkuN2MtLjEgLjktLjEgMS44LS4xIDIuOFY0NzJjMCAyMi4xIDE3LjkgNDAgNDAgNDBoMTZjMS4yIDAgMi40LS4xIDMuNi0uMmMxLjUgLjEgMyAuMiA0LjUgLjJIMTYwaDI0YzIyLjEgMCA0MC0xNy45IDQwLTQwVjQ0OCAzODRjMC0xNy43IDE0LjMtMzIgMzItMzJoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjQgMjRjMCAyMi4xIDE3LjkgNDAgNDAgNDBoMjQgMzIuNWMxLjQgMCAyLjggMCA0LjItLjFjMS4xIC4xIDIuMiAuMSAzLjMgLjFoMTZjMjIuMSAwIDQwLTE3LjkgNDAtNDBWNDU1LjhjLjMtMi42IC41LTUuMyAuNS04LjFsLS43LTE2MC4yaDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUNpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMC43IDM1MmM4LjEtODkuNyA4My41LTE2MCAxNzUuMy0xNjBjOC45IDAgMTcuNiAuNyAyNi4xIDEuOUwzMDkuNSA3Yy02LTUtMTQtNy0yMS03cy0xNSAxLTIyIDhMMTAgMjMxLjVjLTcgNy0xMCAxNS0xMCAyNGMwIDE4IDE0IDMyLjEgMzIgMzIuMWgzMnY2OS43Yy0uMSAuOS0uMSAxLjgtLjEgMi44VjQ3MmMwIDIyLjEgMTcuOSA0MCA0MCA0MGgxNmMxLjIgMCAyLjQtLjEgMy42LS4yYzEuNSAuMSAzIC4yIDQuNSAuMkgxNjBoMjRjMjIuMSAwIDQwLTE3LjkgNDAtNDBWNDQ4IDM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGwuNyAwek02NDAgMzY4YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS03Ni43LTQzLjNjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZsLTcyIDcyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMGwtNDAtNDBjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0ODAgMzg1LjRsNjAuNy02MC43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUNpcmNsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMC43IDM1MmM4LjEtODkuNyA4My41LTE2MCAxNzUuMy0xNjBjOC45IDAgMTcuNiAuNyAyNi4xIDEuOUwzMDkuNSA3Yy02LTUtMTQtNy0yMS03cy0xNSAxLTIyIDhMMTAgMjMxLjVjLTcgNy0xMCAxNS0xMCAyNGMwIDE4IDE0IDMyLjEgMzIgMzIuMWgzMnY2OS43Yy0uMSAuOS0uMSAxLjgtLjEgMi44VjQ3MmMwIDIyLjEgMTcuOSA0MCA0MCA0MGgxNmMxLjIgMCAyLjQtLjEgMy42LS4yYzEuNSAuMSAzIC4yIDQuNSAuMkgxNjBoMjRjMjIuMSAwIDQwLTE3LjkgNDAtNDBWNDQ4IDM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGwuNyAwek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC05NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAtMTQ0YzguOCAwIDE2IDcuMiAxNiAxNnY4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYyODhjMC04LjggNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUNpcmNsZVhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMC43IDM1MmM4LjEtODkuNyA4My41LTE2MCAxNzUuMy0xNjBjOC45IDAgMTcuNiAuNyAyNi4xIDEuOUwzMDkuNSA3Yy02LTUtMTQtNy0yMS03cy0xNSAxLTIyIDhMMTAgMjMxLjVjLTcgNy0xMCAxNS0xMCAyNGMwIDE4IDE0IDMyLjEgMzIgMzIuMWgzMnY2OS43Yy0uMSAuOS0uMSAxLjgtLjEgMi44VjQ3MmMwIDIyLjEgMTcuOSA0MCA0MCA0MGgxNmMxLjIgMCAyLjQtLjEgMy42LS4yYzEuNSAuMSAzIC4yIDQuNSAuMkgxNjBoMjRjMjIuMSAwIDQwLTE3LjkgNDAtNDBWNDQ4IDM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGwuNyAwek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptNTkuMy0xODAuN0w1MTguNiAzNjhsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBMNDk2IDM5MC42bC0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMNDczLjQgMzY4bC0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0OTYgMzQ1LjRsMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2VDcmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDMuOCAyODcuNmMxNyAwIDMyLTE0IDMyLTMyLjFjMS05LTMtMTctMTEtMjRMMzA5LjUgN2MtNi01LTE0LTctMjEtN3MtMTUgMS0yMiA4TDEwIDIzMS41Yy03IDctMTAgMTUtMTAgMjRjMCAxOCAxNCAzMi4xIDMyIDMyLjFoMzJWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDIzMC40bC0zMS4zLTUyLjJjLTQuMS02LjgtMi42LTE1LjUgMy41LTIwLjVMMjg4IDM2OGwtNjAuMi04Mi44Yy0xMC45LTE1IDguMi0zMy41IDIyLjgtMjJsMTE3LjkgOTIuNmM4IDYuMyA4LjIgMTguNCAuNCAyNC45TDI4OCA0NDhsMzguNCA2NEg0NDguNWMzNS41IDAgNjQuMi0yOC44IDY0LTY0LjNsLS43LTE2MC4yaDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDM1MC4xbDAgMS45SDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjQgMjRjMCAyMi4xLTE3LjkgNDAtNDAgNDBIMTYwIDEyOC4xYy0xLjUgMC0zLS4xLTQuNS0uMmMtMS4yIC4xLTIuNCAuMi0zLjYgLjJIMTA0Yy0yMi4xIDAtNDAtMTcuOS00MC00MFYzNjBjMC0uOSAwLTEuOSAuMS0yLjhWMjg3LjZIMzJjLTE4IDAtMzItMTQtMzItMzIuMWMwLTkgMy0xNyAxMC0yNEwyNjYuNCA4YzctNyAxNS04IDIyLThzMTUgMiAyMSA3TDQ0Ny4zIDEyOC4xYy0xMi4zLTEtMjUgMy0zNC44IDExLjdjLTM1LjQgMzEuNi02NS42IDY3LjctODcuMyAxMDIuOEMzMDQuMyAyNzYuNSAyODggMzE0LjkgMjg4IDM1MC4xek00ODAgNTEyYy04OC40IDAtMTYwLTcxLjYtMTYwLTE2MGMwLTc2LjcgNjIuNS0xNDQuNyAxMDcuMi0xNzkuNGM1LTMuOSAxMC45LTUuOCAxNi44LTUuOGM3LjktLjEgMTYgMy4xIDIyIDkuMmw0NiA0NiAxMS4zLTExLjNjMTEuNy0xMS43IDMwLjYtMTIuNyA0Mi4zLTFDNjI0LjUgMjY4IDY0MCAzMjAuMiA2NDAgMzUyYzAgODguNC03MS42IDE2MC0xNjAgMTYwem02NC0xMTEuOGMwLTM2LjUtMzctNzMtNTQuOC04OC40Yy01LjQtNC43LTEzLjEtNC43LTE4LjUgMEM0NTMgMzI3LjEgNDE2IDM2My42IDQxNiA0MDAuMmMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUZsYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjE5MiA1MTJoNjRWMTkySDYyNGM4LjggMCAxNi03LjIgMTYtMTZWNDhjMC04LjgtNy4yLTE2LTE2LTE2SDUxMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNDE2IDE1OUwyNzYuOCAzOS43Yy0xMi0xMC4zLTI5LjctMTAuMy00MS43IDBsLTIyNCAxOTJDMSAyNDAuNC0yLjcgMjU0LjUgMiAyNjcuMVMxOC42IDI4OCAzMiAyODhINjRWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NC43bC4yIDBoLTFWMTU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUZsb29kV2F0ZXJDaXJjbGVBcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxNDRBMTQ0IDE0NCAwIDEgMCAwIDE0NGExNDQgMTQ0IDAgMSAwIDI4OCAwek0xNDAuNyA3Ni43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwbDU2IDU2YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC01NiA1NmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkwxNjkuNCAxNjBIODBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoODkuNEwxNDAuNyA5OS4zYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnpNMzIwIDE0NGMwIDU3LjMtMjcuNCAxMDguMi02OS44IDE0MC4zYzExLjgtMy42IDIzLTkuNCAzMy0xNi4yYzIyLjEtMTUuNSA1MS42LTE1LjUgNzMuNyAwYzE4LjQgMTIuNyAzOS42IDIwLjMgNTkuMiAyMC4zYzE5IDAgNDEuMi03LjkgNTkuMi0yMC4zYzIzLjgtMTYuNyA1NS44LTE1LjQgNzguMSAzLjRjMi4xIDEuNyA0LjIgMy4zIDYuNSA0LjlsLS4zLTg0LjRINTc2YzEzLjkgMCAyNi4xLTguOSAzMC40LTIyLjFzLS40LTI3LjYtMTEuNi0zNS44bC0xNzYtMTI4QzQwNy42LTIgMzkyLjQtMiAzODEuMiA2LjFMMzAxIDY0LjRjMTIuMSAyMy45IDE5IDUwLjkgMTkgNzkuNnptMTguNSAxNjUuOWMtMTEuMS03LjktMjUuOS03LjktMzcgMEMyNzkgMzI1LjQgMjUxLjUgMzM2IDIyNCAzMzZjLTI2LjkgMC01NS4zLTEwLjgtNzcuNC0yNi4xbDAgMGMtMTEuOS04LjUtMjguMS03LjgtMzkuMiAxLjdjLTE0LjQgMTEuOS0zMi41IDIxLTUwLjYgMjUuMmMtMTcuMiA0LTI3LjkgMjEuMi0yMy45IDM4LjRzMjEuMiAyNy45IDM4LjQgMjMuOWMyNC41LTUuNyA0NC45LTE2LjUgNTguMi0yNUMxNTguNSAzODkuNyAxOTEgNDAwIDIyNCA0MDBjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNiAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNS0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQ3MS40IDMyNS4yIDQ0Mi45IDMzNiA0MTYgMzM2Yy0yNy41IDAtNTUtMTAuNi03Ny41LTI2LjF6bTAgMTEyYy0xMS4xLTcuOS0yNS45LTcuOS0zNyAwQzI3OSA0MzcuNCAyNTEuNSA0NDggMjI0IDQ0OGMtMjYuOSAwLTU1LjMtMTAuOC03Ny40LTI2LjFsMCAwYy0xMS45LTguNS0yOC4xLTcuOC0zOS4yIDEuN2MtMTQuNCAxMS45LTMyLjUgMjEtNTAuNiAyNS4yYy0xNy4yIDQtMjcuOSAyMS4yLTIzLjkgMzguNHMyMS4yIDI3LjkgMzguNCAyMy45YzI0LjUtNS43IDQ0LjktMTYuNSA1OC4yLTI1QzE1OC41IDUwMS43IDE5MSA1MTIgMjI0IDUxMmMzMS45IDAgNjAuNi05LjkgODAuNC0xOC45YzUuOC0yLjcgMTEuMS01LjMgMTUuNi03LjdjNC41IDIuNCA5LjcgNS4xIDE1LjYgNy43YzE5LjggOSA0OC42IDE4LjkgODAuNCAxOC45YzMzIDAgNjUuNS0xMC4zIDk0LjUtMjUuOGMxMy40IDguNCAzMy43IDE5LjMgNTguMiAyNWMxNy4yIDQgMzQuNC02LjcgMzguNC0yMy45cy02LjctMzQuNC0yMy45LTM4LjRjLTE4LjEtNC4yLTM2LjItMTMuMy01MC42LTI1LjJjLTExLjEtOS40LTI3LjMtMTAuMS0zOS4yLTEuN2wwIDBDNDcxLjQgNDM3LjIgNDQyLjkgNDQ4IDQxNiA0NDhjLTI3LjUgMC01NS0xMC42LTc3LjUtMjYuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2VGbG9vZFdhdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNi44IDYuMUMyOTUuNi0yIDI4MC40LTIgMjY5LjIgNi4xbC0xNzYgMTI4Yy0xMS4yIDguMi0xNS45IDIyLjYtMTEuNiAzNS44Uzk4LjEgMTkyIDExMiAxOTJoMTZ2NzNjMS43IDEgMy4zIDIgNC45IDMuMWMxOCAxMi40IDQwLjEgMjAuMyA1OS4yIDIwLjNjMjEuMSAwIDQyLTguNSA1OS4yLTIwLjNjMjIuMS0xNS41IDUxLjYtMTUuNSA3My43IDBjMTguNCAxMi43IDM5LjYgMjAuMyA1OS4yIDIwLjNjMTkgMCA0MS4yLTcuOSA1OS4yLTIwLjNjMS41LTEgMy0yIDQuNS0yLjlsLS4zLTczLjJINDY0YzEzLjkgMCAyNi4xLTguOSAzMC40LTIyLjFzLS40LTI3LjYtMTEuNi0zNS44bC0xNzYtMTI4ek0yNjkuNSAzMDkuOUMyNDcgMzI1LjQgMjE5LjUgMzM2IDE5MiAzMzZjLTI2LjkgMC01NS4zLTEwLjgtNzcuNC0yNi4xbDAgMGMtMTEuOS04LjUtMjguMS03LjgtMzkuMiAxLjdjLTE0LjQgMTEuOS0zMi41IDIxLTUwLjYgMjUuMmMtMTcuMiA0LTI3LjkgMjEuMi0yMy45IDM4LjRzMjEuMiAyNy45IDM4LjQgMjMuOWMyNC41LTUuNyA0NC45LTE2LjUgNTguMi0yNUMxMjYuNSAzODkuNyAxNTkgNDAwIDE5MiA0MDBjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNSAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNS0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQzOS40IDMyNS4yIDQxMC45IDMzNiAzODQgMzM2Yy0yNy41IDAtNTUtMTAuNi03Ny41LTI2LjFjLTExLjEtNy45LTI1LjktNy45LTM3IDB6TTM4NCA0NDhjLTI3LjUgMC01NS0xMC42LTc3LjUtMjYuMWMtMTEuMS03LjktMjUuOS03LjktMzcgMEMyNDcgNDM3LjQgMjE5LjUgNDQ4IDE5MiA0NDhjLTI2LjkgMC01NS4zLTEwLjgtNzcuNC0yNi4xbDAgMGMtMTEuOS04LjUtMjguMS03LjgtMzkuMiAxLjdjLTE0LjQgMTEuOS0zMi41IDIxLTUwLjYgMjUuMmMtMTcuMiA0LTI3LjkgMjEuMi0yMy45IDM4LjRzMjEuMiAyNy45IDM4LjQgMjMuOWMyNC41LTUuNyA0NC45LTE2LjUgNTguMi0yNUMxMjYuNSA1MDEuNyAxNTkgNTEyIDE5MiA1MTJjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNSAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNC0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQzOS40IDQzNy4yIDQxMC45IDQ0OCAzODQgNDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUxhcHRvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTguMyA4LjVjMTIuMy0xMS4zIDMxLjItMTEuMyA0My40IDBsMjA4IDE5MmM2LjcgNi4yIDEwLjMgMTQuOCAxMC4zIDIzLjVIMzM2Yy0xOS4xIDAtMzYuMyA4LjQtNDggMjEuN1YyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDIwOGMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNmg2NFY0MTZIMTEyYy0yNi41IDAtNDgtMjEuNS00OC00OFYyNTZIMzJjLTEzLjIgMC0yNS04LjEtMjkuOC0yMC4zcy0xLjYtMjYuMiA4LjEtMzUuMmwyMDgtMTkyek0zNTIgMzA0VjQ0OEg1NDRWMzA0SDM1MnptLTQ4LTE2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDU2MGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0NDhoMzJjOC44IDAgMTYgNy4yIDE2IDE2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDU0NCAzNTIgMzA0Yy0yNi41IDAtNDgtMjEuNS00OC00OGMwLTguOCA3LjItMTYgMTYtMTZoMzJWMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDQ4MGMwIDExLjcgMy4xIDIyLjYgOC42IDMySDM5MmMtMjIuMSAwLTQwLTE3LjktNDAtNDBWNDQ4IDM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgyNTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0IDI0YzAgMjIuMS0xNy45IDQwLTQwIDQwSDE2MCAxMjguMWMtMS41IDAtMy0uMS00LjUtLjJjLTEuMiAuMS0yLjQgLjItMy42IC4ySDEwNGMtMjIuMSAwLTQwLTE3LjktNDAtNDBWMzYwYzAtLjkgMC0xLjkgLjEtMi44VjI4Ny42SDMyYy0xOCAwLTMyLTE0LTMyLTMyLjFjMC05IDMtMTcgMTAtMjRMMjY2LjQgOGM3LTcgMTUtOCAyMi04czE1IDIgMjEgN0w0OTAuNyAxNjYuM0M0NDcuMiAxODEuNyA0MTYgMjIzLjIgNDE2IDI3MnYyNC42Yy0xOS4xIDExLjEtMzIgMzEuNy0zMiA1NS40VjQ4MHpNNTI4IDI0MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NDhoNjRWMjcyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tODAgMzJjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MHY0OGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJINDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNTJjMC0xNy43IDE0LjMtMzIgMzItMzJWMjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZU1lZGljYWxDaXJjbGVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMzY4YzAgNTkuNSAyOS41IDExMi4xIDc0LjggMTQ0SDEyOC4xYy0zNS4zIDAtNjQtMjguNy02NC02NFYyODcuNkgzMmMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNTIyLjEgMTkzLjljLTguNS0xLjMtMTcuMy0xLjktMjYuMS0xLjljLTU0LjcgMC0xMDMuNSAyNC45LTEzNS44IDY0SDMyMFYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDIwOGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2em0zMiAwYTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTIxMS4zLTQzLjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDQ4MCAzODUuNGwtMjguNy0yOC43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDQwIDQwYzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDcyLTcyYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZU1lZGljYWxDaXJjbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMzY4YzAgNTkuNSAyOS41IDExMi4xIDc0LjggMTQ0SDEyOC4xYy0zNS4zIDAtNjQtMjguNy02NC02NFYyODcuNkgzMmMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNTIyLjEgMTkzLjljLTguNS0xLjMtMTcuMy0xLjktMjYuMS0xLjljLTU0LjcgMC0xMDMuNSAyNC45LTEzNS44IDY0SDMyMFYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDIwOGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2ek00OTYgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMCAyNDBhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0wLTE5MmMtOC44IDAtMTYgNy4yLTE2IDE2djgwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjg4YzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2VNZWRpY2FsQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDM2OGMwIDU5LjUgMjkuNSAxMTIuMSA3NC44IDE0NEgxMjguMWMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjg3LjZIMzJjLTE4IDAtMzItMTQtMzItMzIuMWMwLTkgMy0xNyAxMC0yNEwyNjYuNCA4YzctNyAxNS04IDIyLThzMTUgMiAyMSA3TDUyMi4xIDE5My45Yy04LjUtMS4zLTE3LjMtMS45LTI2LjEtMS45Yy01NC43IDAtMTAzLjUgMjQuOS0xMzUuOCA2NEgzMjBWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgyMDhjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNDh2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnpNNDk2IDIyNGExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTIyLjYgMTQ0bDM2LjctMzYuN2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNnMtMTYuNC02LjItMjIuNiAwTDQ5NiAzNDUuNGwtMzYuNy0zNi43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42TDQ3My40IDM2OGwtMzYuNyAzNi43Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBMNDk2IDM5MC42bDM2LjcgMzYuN2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZMNTE4LjYgMzY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZU1lZGljYWxGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMySDYyNGM4LjggMCAxNiA3LjIgMTYgMTZWMTc2YzAgOC44LTcuMiAxNi0xNiAxNkg1MTJWNTEySDQ0OFYxOTIgMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTI3Ni44IDM5LjdMNDE2IDE1OVY1MTJoMWwtLjIgMEg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjg4SDMyYy0xMy40IDAtMjUuNC04LjMtMzAtMjAuOXMtMS0yNi43IDkuMi0zNS40bDIyNC0xOTJjMTItMTAuMyAyOS43LTEwLjMgNDEuNyAwek0yMjQgMjA4djQ4SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyMGg0OGM4LjggMCAxNi03LjIgMTYtMTZWMjcyYzAtOC44LTcuMi0xNi0xNi0xNkgyODhWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkgyNDBjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2VNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0My44IDI4Ny42YzE3IDAgMzItMTQgMzItMzIuMWMxLTktMy0xNy0xMS0yNEwzMDkuNSA3Yy02LTUtMTQtNy0yMS03cy0xNSAxLTIyIDhMMTAgMjMxLjVjLTcgNy0xMCAxNS0xMCAyNGMwIDE4IDE0IDMyLjEgMzIgMzIuMWgzMlY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4LjVjMzUuNSAwIDY0LjItMjguOCA2NC02NC4zbC0uNy0xNjAuMmgzMnpNMjU2IDIwOGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djQ4aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzIwdjQ4YzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYzMjBIMjA4Yy04LjggMC0xNi03LjItMTYtMTZWMjcyYzAtOC44IDcuMi0xNiAxNi0xNmg0OFYyMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlU2lnbmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1Ny43IDguNWMtMTIuMy0xMS4zLTMxLjItMTEuMy00My40IDBsLTIwOCAxOTJjLTkuNCA4LjYtMTIuNyAyMi04LjUgMzRjODcuMSAyNS4zIDE1NS42IDk0LjIgMTgwLjMgMTgxLjZINDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI1NmgzMmMxMy4yIDAgMjUtOC4xIDI5LjgtMjAuM3MxLjYtMjYuMi04LjEtMzUuMmwtMjA4LTE5MnpNMjg4IDIwOGMwLTguOCA3LjItMTYgMTYtMTZoNjRjOC44IDAgMTYgNy4yIDE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNkgzMDRjLTguOCAwLTE2LTcuMi0xNi0xNlYyMDh6TTI0IDI1NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGMxMDEuNiAwIDE4NCA4Mi40IDE4NCAxODRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTEyOC4xLTEwMy45LTIzMi0yMzItMjMyem04IDI1NmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTAgMzc2YzAgMTMuMyAxMC43IDI0IDI0IDI0YzQ4LjYgMCA4OCAzOS40IDg4IDg4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC03NS4xLTYwLjktMTM2LTEzNi0xMzZjLTEzLjMgMC0yNCAxMC43LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZVRzdW5hbWkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAuOCAxMzYuNUMxMDQuOSA5My44IDE1Mi42IDY0IDIwOSA2NGMxNi45IDAgMzMuMSAyLjcgNDguMiA3LjdjMTYuOCA1LjUgMzQuOS0zLjYgNDAuNC0yMC40cy0zLjYtMzQuOS0yMC40LTQwLjRDMjU1LjggMy44IDIzMi44IDAgMjA5IDBDOTUuMiAwIDAgODggMCAyMDBjMCA5MS42IDUzLjUgMTcyLjEgMTQyLjIgMTk0LjFjMTMuNCAzLjggMjcuNSA1LjkgNDIuMiA1LjljLjcgMCAxLjQgMCAyLjEtLjFjMS44IDAgMy43IC4xIDUuNSAuMWwwIDBjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNSAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNS0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQzOS40IDMyNS4yIDQxMC45IDMzNiAzODQgMzM2Yy0yNy41IDAtNTUtMTAuNi03Ny41LTI2LjFjLTExLjEtNy45LTI1LjktNy45LTM3IDBjLTIyLjQgMTUuNS00OS45IDI2LjEtNzcuNCAyNi4xYzAgMC0uMSAwLS4xIDBjLTEyLjQgMC0yNC0xLjUtMzQuOS00LjNDMTIxLjYgMzIwLjIgOTYgMjg3IDk2IDI0OGMwLTQ4LjUgMzkuNS04OCA4OC40LTg4YzEzLjUgMCAyNi4xIDMgMzcuNSA4LjNjMTYgNy41IDM1LjEgLjYgNDIuNS0xNS41cy42LTM1LjEtMTUuNS00Mi41QzIyOS4zIDEwMS4xIDIwNy40IDk2IDE4NC40IDk2Yy00MCAwLTc2LjQgMTUuNC0xMDMuNiA0MC41em0yNTItMTguMWMtOC4xIDYtMTIuOCAxNS41LTEyLjggMjUuNlYyNjVjMS42IDEgMy4zIDIgNC44IDMuMWMxOC40IDEyLjcgMzkuNiAyMC4zIDU5LjIgMjAuM2MxOSAwIDQxLjItNy45IDU5LjItMjAuM2MyMy44LTE2LjcgNTUuOC0xNS4zIDc4LjEgMy40YzEwLjYgOC44IDI0LjIgMTUuNiAzNy4zIDE4LjZjNS44IDEuNCAxMS4yIDMuNCAxNi4yIDYuMmMuNy0yLjcgMS4xLTUuNSAxLjEtOC40bC0uNC0xNDRjMC0xMC00LjctMTkuNC0xMi43LTI1LjVsLTk1LjUtNzJjLTExLjQtOC42LTI3LjEtOC42LTM4LjUgMGwtOTYgNzJ6TTM4NCA0NDhjLTI3LjUgMC01NS0xMC42LTc3LjUtMjYuMWMtMTEuMS03LjktMjUuOS03LjktMzcgMEMyNDcgNDM3LjQgMjE5LjUgNDQ4IDE5MiA0NDhjLTI2LjkgMC01NS4zLTEwLjgtNzcuNC0yNi4xbDAgMGMtMTEuOS04LjUtMjguMS03LjgtMzkuMiAxLjdjLTE0LjQgMTEuOS0zMi41IDIxLTUwLjYgMjUuMmMtMTcuMiA0LTI3LjkgMjEuMi0yMy45IDM4LjRzMjEuMiAyNy45IDM4LjQgMjMuOWMyNC41LTUuNyA0NC45LTE2LjUgNTguMi0yNUMxMjYuNSA1MDEuNyAxNTkgNTEyIDE5MiA1MTJjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNSAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNC0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQzOS40IDQzNy4yIDQxMC45IDQ0OCAzODQgNDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZVVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc1LjggMjU1LjVjMCAxOC0xNSAzMi4xLTMyIDMyLjFoLTMybC43IDE2MC4yYy4yIDM1LjUtMjguNSA2NC4zLTY0IDY0LjNIMTI4LjFjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI4Ny42SDMyYy0xOCAwLTMyLTE0LTMyLTMyLjFjMC05IDMtMTcgMTAtMjRMMjY2LjQgOGM3LTcgMTUtOCAyMi04czE1IDIgMjEgN0w1NjQuOCAyMzEuNWM4IDcgMTIgMTUgMTEgMjR6TTM1MiAyMjRhNjQgNjQgMCAxIDAgLTEyOCAwIDY0IDY0IDAgMSAwIDEyOCAwem0tOTYgOTZjLTQ0LjIgMC04MCAzNS44LTgwIDgwYzAgOC44IDcuMiAxNiAxNiAxNkgzODRjOC44IDAgMTYtNy4yIDE2LTE2YzAtNDQuMi0zNS44LTgwLTgwLTgwSDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc1LjggMjU1LjVjMCAxOC0xNSAzMi4xLTMyIDMyLjFoLTMybC43IDE2MC4yYzAgMi43LS4yIDUuNC0uNSA4LjFWNDcyYzAgMjIuMS0xNy45IDQwLTQwIDQwSDQ1NmMtMS4xIDAtMi4yIDAtMy4zLS4xYy0xLjQgLjEtMi44IC4xLTQuMiAuMUg0MTYgMzkyYy0yMi4xIDAtNDAtMTcuOS00MC00MFY0NDggMzg0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjQgMjRjMCAyMi4xLTE3LjkgNDAtNDAgNDBIMTYwIDEyOC4xYy0xLjUgMC0zLS4xLTQuNS0uMmMtMS4yIC4xLTIuNCAuMi0zLjYgLjJIMTA0Yy0yMi4xIDAtNDAtMTcuOS00MC00MFYzNjBjMC0uOSAwLTEuOSAuMS0yLjhWMjg3LjZIMzJjLTE4IDAtMzItMTQtMzItMzIuMWMwLTkgMy0xNyAxMC0yNEwyNjYuNCA4YzctNyAxNS04IDIyLThzMTUgMiAyMSA3TDU2NC44IDIzMS41YzggNyAxMiAxNSAxMSAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSHJ5dm5pYVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIxLjkgMTE2LjJDMTM4LjMgMTAzLjEgMTU4LjcgOTYgMTc5LjYgOTZIMjIzYzI3LjEgMCA0OSAyMS45IDQ5IDQ5YzAgMTEuNS00IDIyLjQtMTEuMSAzMUgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgxNTUuNWwtNTAuNiAyOC45Yy0xLjcgMS0zLjQgMi01LjEgMy4xSDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDUyLjNjLTIuOCA5LjktNC4zIDIwLjQtNC4zIDMxYzAgNjIuNCA1MC42IDExMyAxMTMgMTEzaDQzLjRjMzUuNSAwIDcwLTEyLjEgOTcuNy0zNC4zTDMwOCA0NDFjMTMuOC0xMSAxNi0zMS4yIDUtNDVzLTMxLjItMTYtNDUtNWwtNS45IDQuN2MtMTYuNCAxMy4xLTM2LjcgMjAuMi01Ny43IDIwLjJIMTYxYy0yNy4xIDAtNDktMjEuOS00OS00OWMwLTExLjUgNC0yMi40IDExLjEtMzFIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDIyOC41bDUwLjYtMjguOWMxLjctMSAzLjQtMiA1LjEtMy4xSDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMzEuN2MyLjgtMTAgNC4zLTIwLjQgNC4zLTMxYzAtNjIuNC01MC42LTExMy0xMTMtMTEzSDE3OS42Yy0zNS41IDAtNzAgMTIuMS05Ny43IDM0LjNMNzYgNzFjLTEzLjggMTEtMTYgMzEuMi01IDQ1czMxLjIgMTYgNDUgNWw1LjktNC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIdXJyaWNhbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyMDhDMCAxMDQuNCA3NS43IDE4LjUgMTc0LjkgMi42QzE4NCAxLjIgMTkyIDguNiAxOTIgMTcuOVY4MS4yYzAgOC40IDYuNSAxNS4zIDE0LjcgMTYuNUMzMDcgMTEyLjUgMzg0IDE5OSAzODQgMzAzLjRjMCAxMDMuNi03NS43IDE4OS41LTE3NC45IDIwNS40Yy05LjIgMS41LTE3LjEtNS45LTE3LjEtMTUuMlY0MzAuMmMwLTguNC02LjUtMTUuMy0xNC43LTE2LjVDNzcgMzk4LjkgMCAzMTIuNCAwIDIwOHptMjg4IDQ4QTk2IDk2IDAgMSAwIDk2IDI1NmE5NiA5NiAwIDEgMCAxOTIgMHptLTk2LTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSUN1cnNvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uMSAyOS4zQy0xLjQgNDcgMTEuNyA2Mi40IDI5LjMgNjMuOWw4IC43QzcwLjUgNjcuMyA5NiA5NSA5NiAxMjguM1YyMjRINjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIOTZ2OTUuN2MwIDMzLjMtMjUuNSA2MS01OC43IDYzLjhsLTggLjdDMTEuNyA0NDkuNi0xLjQgNDY1IC4xIDQ4Mi43czE2LjkgMzAuNyAzNC41IDI5LjJsOC0uN2MzNC4xLTIuOCA2NC4yLTE4LjkgODUuNC00Mi45YzIxLjIgMjQgNTEuMiA0MC4xIDg1LjQgNDIuOWw4IC43YzE3LjYgMS41IDMzLjEtMTEuNiAzNC41LTI5LjJzLTExLjYtMzMuMS0yOS4yLTM0LjVsLTgtLjdDMTg1LjUgNDQ0LjcgMTYwIDQxNyAxNjAgMzgzLjdWMjg4aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE2MFYxMjguM2MwLTMzLjMgMjUuNS02MSA1OC43LTYzLjhsOC0uN2MxNy42LTEuNSAzMC43LTE2LjkgMjkuMi0zNC41UzIzOS0xLjQgMjIxLjMgLjFsLTggLjdDMTc5LjIgMy42IDE0OS4yIDE5LjcgMTI4IDQzLjdjLTIxLjItMjQtNTEuMi00MC04NS40LTQyLjlsLTgtLjdDMTctMS40IDEuNiAxMS43IC4xIDI5LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2aDk2VjQxNkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyVjk2aDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE2MCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWNlQ3JlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY3LjEgMTYwYy42LTUuMyAuOS0xMC42IC45LTE2QzM2OCA2NC41IDMwMy41IDAgMjI0IDBTODAgNjQuNSA4MCAxNDRjMCA1LjQgLjMgMTAuNyAuOSAxNkg4MGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhzMjEuNSA0OCA0OCA0OGg1My41IDE4MUgzNjhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDhoLS45ek05NiAyODhMMjAwLjggNDk3LjdjNC40IDguOCAxMy4zIDE0LjMgMjMuMiAxNC4zczE4LjgtNS41IDIzLjItMTQuM0wzNTIgMjg4SDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJY2ljbGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTc1LjggMzA0LjhMMSAzNS43Yy0uNy0yLjUtMS01LTEtNy41QzAgMTIuNiAxMi42IDAgMjguMiAwSDQ4Mi40QzQ5OC44IDAgNTEyIDEzLjIgNTEyIDI5LjZjMCAxLjYtLjEgMy4zLS40IDQuOUw0MzQuNiA0OTYuMWMtMS41IDkuMi05LjUgMTUuOS0xOC44IDE1LjljLTkuMiAwLTE3LjEtNi42LTE4LjctMTUuNkwzMzYgMTYwIDMwNy4yIDMwMy45Yy0xLjkgOS4zLTEwLjEgMTYuMS0xOS42IDE2LjFjLTkuMiAwLTE3LjItNi4yLTE5LjQtMTUuMUwyNDAgMTkyIDIxMC42IDM2OC4yYy0xLjUgOS4xLTkuNCAxNS44LTE4LjYgMTUuOHMtMTcuMS02LjctMTguNi0xNS44TDE0NCAxOTIgMTE1LjkgMzA0LjNjLTIuMyA5LjItMTAuNiAxNS43LTIwLjEgMTUuN2MtOS4zIDAtMTcuNS02LjItMjAtMTUuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWNvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAwLjMgNy4zQzUwNy43IDEzLjMgNTEyIDIyLjQgNTEyIDMyVjE3NmMwIDI2LjUtMjguNyA0OC02NCA0OHMtNjQtMjEuNS02NC00OHMyOC43LTQ4IDY0LTQ4VjcxTDM1MiA5MC4yVjIwOGMwIDI2LjUtMjguNyA0OC02NCA0OHMtNjQtMjEuNS02NC00OHMyOC43LTQ4IDY0LTQ4VjY0YzAtMTUuMyAxMC44LTI4LjQgMjUuNy0zMS40bDE2MC0zMmM5LjQtMS45IDE5LjEgLjYgMjYuNiA2LjZ6TTc0LjcgMzA0bDExLjgtMTcuOGM1LjktOC45IDE1LjktMTQuMiAyNi42LTE0LjJoNjEuN2MxMC43IDAgMjAuNyA1LjMgMjYuNiAxNC4yTDIxMy4zIDMwNEgyNDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzNTJjMC0yNi41IDIxLjUtNDggNDgtNDhINzQuN3pNMTkyIDQwOGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek00NzguNyAyNzguM0w0NDAuMyAzNjhINDk2YzYuNyAwIDEyLjYgNC4xIDE1IDEwLjRzLjYgMTMuMy00LjQgMTcuN2wtMTI4IDExMmMtNS42IDQuOS0xMy45IDUuMy0xOS45IC45cy04LjItMTIuNC01LjMtMTkuMkwzOTEuNyA0MDBIMzM2Yy02LjcgMC0xMi42LTQuMS0xNS0xMC40cy0uNi0xMy4zIDQuNC0xNy43bDEyOC0xMTJjNS42LTQuOSAxMy45LTUuMyAxOS45LS45czguMiAxMi40IDUuMyAxOS4yem0tMzM5LTU5LjJjLTYuNSA2LjUtMTcgNi41LTIzIDBMMTkuOSAxMTkuMmMtMjgtMjktMjYuNS03Ni45IDUtMTAzLjljMjctMjMuNSA2OC40LTE5IDkzLjQgNi41bDEwIDEwLjUgOS41LTEwLjVjMjUtMjUuNSA2NS45LTMwIDkzLjktNi41YzMxIDI3IDMyLjUgNzQuOSA0LjUgMTAzLjlsLTk2LjQgOTkuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWRCYWRnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em05NiAzMjBoNjRjNDQuMiAwIDgwIDM1LjggODAgODBjMCA4LjgtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZjMC00NC4yIDM1LjgtODAgODAtODB6bS0zMi05NmE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTE0NCA2NGg5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxNDRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUlkQ2FyZENsaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJWOTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNNjQgNjRIMTkydjQ4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjY0SDUxMmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NHpNMTc2IDQzNy4zYzAgNS45IDQuOCAxMC43IDEwLjcgMTAuN0gzODkuM2M1LjkgMCAxMC43LTQuOCAxMC43LTEwLjdjMC0yOS41LTIzLjktNTMuMy01My4zLTUzLjNIMjI5LjNjLTI5LjUgMC01My4zIDIzLjktNTMuMyA1My4zek0yODggMzUyYTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJZENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5Nmw1NzYgMGMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDMyIDAgNjAuNyAwIDk2em0wIDMyVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4SDB6TTY0IDQwNS4zYzAtMjkuNSAyMy45LTUzLjMgNTMuMy01My4zSDIzNC43YzI5LjUgMCA1My4zIDIzLjkgNTMuMyA1My4zYzAgNS45LTQuOCAxMC43LTEwLjcgMTAuN0g3NC43Yy01LjkgMC0xMC43LTQuOC0xMC43LTEwLjd6TTE3NiAxOTJhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6bTE3NiAxNmMwLTguOCA3LjItMTYgMTYtMTZINDk2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2em0wIDY0YzAtOC44IDcuMi0xNiAxNi0xNkg0OTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZ6bTAgNjRjMC04LjggNy4yLTE2IDE2LTE2SDQ5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWdsb28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDMzLjhWMTYwSDQ4LjVDMTAwLjIgODIuOCAxODguMSAzMiAyODggMzJjMTAuOCAwIDIxLjUgLjYgMzIgMS44ek0zNTIgMTYwVjM5LjFDNDI0LjkgNTUuNyA0ODcuMiA5OS44IDUyNy41IDE2MEgzNTJ6TTI5LjkgMTkySDk2VjMyMEgwYzAtNDYgMTAuOC04OS40IDI5LjktMTI4ek0xOTIgMzIwSDEyOFYxOTJINDQ4VjMyMEgzODR2MzJINTc2djgwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDM1MlYzNTJjMC0zNS4zLTI4LjctNjQtNjQtNjRzLTY0IDI4LjctNjQgNjRWNDgwSDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzNTJIMTkyVjMyMHptMjg4IDBWMTkyaDY2LjFjMTkuMiAzOC42IDI5LjkgODIgMjkuOSAxMjhINDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbWFnZVBvcnRyYWl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCA2NGMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTM4NHpNMTI4IDE5MmE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTgwIDM1Ni42YzAtMzcuOSAzMC43LTY4LjYgNjguNi02OC42aDg2LjljMzcuOSAwIDY4LjYgMzAuNyA2OC42IDY4LjZjMCAxNS4xLTEyLjMgMjcuNC0yNy40IDI3LjRIMTA3LjRDOTIuMyAzODQgODAgMzcxLjcgODAgMzU2LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUltYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6TTMyMy44IDIwMi41Yy00LjUtNi42LTExLjktMTAuNS0xOS44LTEwLjVzLTE1LjQgMy45LTE5LjggMTAuNWwtODcgMTI3LjZMMTcwLjcgMjk3Yy00LjYtNS43LTExLjUtOS0xOC43LTlzLTE0LjIgMy4zLTE4LjcgOWwtNjQgODBjLTUuOCA3LjItNi45IDE3LjEtMi45IDI1LjRzMTIuNCAxMy42IDIxLjYgMTMuNmg5NiAzMkg0MjRjOC45IDAgMTcuMS00LjkgMjEuMi0xMi44czMuNi0xNy40LTEuNC0yNC43bC0xMjAtMTc2ek0xMTIgMTkyYTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW1hZ2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCAzMmMtMzUuMyAwLTY0IDI4LjctNjQgNjRWMzIwYzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEgxNjB6TTM5NiAxMzguN2w5NiAxNDRjNC45IDcuNCA1LjQgMTYuOCAxLjIgMjQuNlM0ODAuOSAzMjAgNDcyIDMyMEgzMjggMjgwIDIwMGMtOS4yIDAtMTcuNi01LjMtMjEuNi0xMy42cy0yLjktMTguMiAyLjktMjUuNGw2NC04MGM0LjYtNS43IDExLjQtOSAxOC43LTlzMTQuMiAzLjMgMTguNyA5bDE3LjMgMjEuNiA1Ni04NEMzNjAuNSAxMzIgMzY4IDEyOCAzNzYgMTI4czE1LjUgNCAyMCAxMC43ek0xOTIgMTI4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTQ4IDEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNFMwIDEwNi43IDAgMTIwVjM0NGMwIDc1LjEgNjAuOSAxMzYgMTM2IDEzNkg0NTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTM2Yy00OC42IDAtODgtMzkuNC04OC04OFYxMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyMSAzMkM5MS42IDMyIDY2IDUyIDU4LjkgODAuNUwxLjkgMzA4LjRDLjYgMzEzLjUgMCAzMTguNyAwIDMyMy45VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMzIzLjljMC01LjItLjYtMTAuNC0xLjktMTUuNWwtNTctMjI3LjlDNDQ2IDUyIDQyMC40IDMyIDM5MSAzMkgxMjF6bTAgNjRIMzkxbDQ4IDE5MkgzODcuOGMtMTIuMSAwLTIzLjIgNi44LTI4LjYgMTcuN2wtMTQuMyAyOC42Yy01LjQgMTAuOC0xNi41IDE3LjctMjguNiAxNy43SDE5NS44Yy0xMi4xIDAtMjMuMi02LjgtMjguNi0xNy43bC0xNC4zLTI4LjZjLTUuNC0xMC44LTE2LjUtMTcuNy0yOC42LTE3LjdINzNMMTIxIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmRlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJDMTQuMyA5NiAwIDgxLjcgMCA2NHpNMTkyIDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnptMzIgOTZINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpNMCA0NDhjMC0xNy43IDE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNMTI3LjggMjY4LjZMMjUuOCAzNDcuOUMxNS4zIDM1Ni4xIDAgMzQ4LjYgMCAzMzUuM1YxNzYuN2MwLTEzLjMgMTUuMy0yMC44IDI1LjgtMTIuNmwxMDEuOSA3OS4zYzguMiA2LjQgOC4yIDE4LjkgMCAyNS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmRpYW5SdXBlZVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkg5NmgxNkgyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjMxLjhjOS42IDE0LjQgMTYuNyAzMC42IDIwLjcgNDhIMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI1Mi40Yy0xMy4yIDU4LjMtNjEuOSAxMDMuMi0xMjIuMiAxMTAuOUwyNzQuNiA0MjJjMTQuNCAxMC4zIDE3LjcgMzAuMyA3LjQgNDQuNnMtMzAuMyAxNy43LTQ0LjYgNy40TDEzLjQgMzE0QzIuMSAzMDYtMi43IDI5MS41IDEuNSAyNzguMlMxOC4xIDI1NiAzMiAyNTZoODBjMzIuOCAwIDYxLTE5LjcgNzMuMy00OEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgxODUuM0MxNzMgMTE1LjcgMTQ0LjggOTYgMTEyIDk2SDk2IDMyQzE0LjMgOTYgMCA4MS43IDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluZHVzdHJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzQ2LjMgMzIgMzIgNDYuMyAzMiA2NFYzMDR2NDggODBjMCAyNi41IDIxLjUgNDggNDggNDhINDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjMwNCAxNTIuMmMwLTE4LjItMTkuNC0yOS43LTM1LjQtMjEuMUwzNTIgMjE1LjRWMTUyLjJjMC0xOC4yLTE5LjQtMjkuNy0zNS40LTIxLjFMMTYwIDIxNS40VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmZpbml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI0MS4xQzAgMTYxIDY1IDk2IDE0NS4xIDk2YzM4LjUgMCA3NS40IDE1LjMgMTAyLjYgNDIuNUwzMjAgMjEwLjdsNzIuMi03Mi4yQzQxOS41IDExMS4zIDQ1Ni40IDk2IDQ5NC45IDk2QzU3NSA5NiA2NDAgMTYxIDY0MCAyNDEuMXYyOS43QzY0MCAzNTEgNTc1IDQxNiA0OTQuOSA0MTZjLTM4LjUgMC03NS40LTE1LjMtMTAyLjYtNDIuNUwzMjAgMzAxLjNsLTcyLjIgNzIuMkMyMjAuNSA0MDAuNyAxODMuNiA0MTYgMTQ1LjEgNDE2QzY1IDQxNiAwIDM1MSAwIDI3MC45VjI0MS4xek0yNzQuNyAyNTZsLTcyLjItNzIuMmMtMTUuMi0xNS4yLTM1LjktMjMuOC01Ny40LTIzLjhDMTAwLjMgMTYwIDY0IDE5Ni4zIDY0IDI0MS4xdjI5LjdjMCA0NC44IDM2LjMgODEuMSA4MS4xIDgxLjFjMjEuNSAwIDQyLjItOC41IDU3LjQtMjMuOEwyNzQuNyAyNTZ6bTkwLjUgMGw3Mi4yIDcyLjJjMTUuMiAxNS4yIDM1LjkgMjMuOCA1Ny40IDIzLjhjNDQuOCAwIDgxLjEtMzYuMyA4MS4xLTgxLjFWMjQxLjFjMC00NC44LTM2LjMtODEuMS04MS4xLTgxLjFjLTIxLjUgMC00Mi4yIDguNS01Ny40IDIzLjhMMzY1LjMgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmZvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAxOTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDgwYTQ4IDQ4IDAgMSAxIDk2IDBBNDggNDggMCAxIDEgNDggODB6TTAgMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ0OGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg2NFYyNTZIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJdGFsaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyOTMuM0wxNjAgNDE2aDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDkwLjdMMjI0IDk2SDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUogKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjMyMGMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MFMwIDQwOC40IDAgMzIwVjI4OGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjMyYzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUphcldoZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyQzMyIDE0LjMgNDYuMyAwIDY0IDBIMjU2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDY0QzQ2LjMgNjQgMzIgNDkuNyAzMiAzMnpNMCAxNjBjMC0zNS4zIDI4LjctNjQgNjQtNjRIMjU2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTYwem0xMTIgMEg2OS44Yy0zLjIgMC01LjggMi42LTUuOCA1LjhDNjQgMTk4IDkwIDIyNCAxMjIuMiAyMjRIMTQ0aDMyIDIxLjhjMzIuMSAwIDU4LjItMjYgNTguMi01OC4yYzAtMy4yLTIuNi01LjgtNS44LTUuOEgyMDhjLTE5LjEgMC0zNi4zIDguNC00OCAyMS43Yy0xMS43LTEzLjMtMjguOS0yMS43LTQ4LTIxLjd6bTQ4IDExNy43Yy0xMS43LTEzLjMtMjguOS0yMS43LTQ4LTIxLjdINjkuOGMtMy4yIDAtNS44IDIuNi01LjggNS44QzY0IDI5NCA5MCAzMjAgMTIyLjIgMzIwSDE0NGgzMiAyMS44YzMyLjEgMCA1OC4yLTI2IDU4LjItNTguMmMwLTMuMi0yLjYtNS44LTUuOC01LjhIMjA4Yy0xOS4xIDAtMzYuMyA4LjQtNDggMjEuN3pNMTEyIDM1Mkg2OS44Yy0zLjIgMC01LjggMi42LTUuOCA1LjhDNjQgMzkwIDkwIDQxNiAxMjIuMiA0MTZIMTQ0djMyYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWNDE2aDIxLjhjMzIuMSAwIDU4LjItMjYgNTguMi01OC4yYzAtMy4yLTIuNi01LjgtNS44LTUuOEgyMDhjLTE5LjEgMC0zNi4zIDguNC00OCAyMS43Yy0xMS43LTEzLjMtMjguOS0yMS43LTQ4LTIxLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUphciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMkMzMiAxNC4zIDQ2LjMgMCA2NCAwSDI1NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg2NEM0Ni4zIDY0IDMyIDQ5LjcgMzIgMzJ6TTAgMTYwYzAtMzUuMyAyOC43LTY0IDY0LTY0SDI1NmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE2MHptOTYgNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMlYyNTZjMC0xNy43LTE0LjMtMzItMzItMzJIOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUplZGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ2IDMxNS43bC0yMS4yLTMxLjljLTIuMS0zLjItMS43LTcuNCAxLTEwLjFzNi45LTMuMSAxMC4xLTFsMjkuNSAxOS43YzIuMSAxLjQgNC45IDAgNS0yLjZMMjc5LjcgOGMuMS00LjUgMy44LTggOC4zLThzOC4xIDMuNSA4LjMgOGw5LjQgMjgxLjljLjEgMi41IDIuOSAzLjkgNSAyLjZsMjkuNS0xOS43YzMuMi0yLjEgNy40LTEuNyAxMC4xIDFzMy4xIDYuOSAxIDEwLjFMMzMwIDMxNS43Yy0xLjMgMS45LS4yIDQuNSAyIDQuOWwzNy42IDcuNWMzLjcgLjcgNi40IDQgNi40IDcuOHMtMi43IDcuMS02LjQgNy44TDMzMiAzNTEuNGMtMi4yIC40LTMuMyAzLTIgNC45bDIxLjIgMzEuOWMyLjEgMy4yIDEuNyA3LjQtMSAxMC4xcy02LjkgMy4xLTEwLjEgMWwtMjYuMy0xNy42Yy0yLjItMS40LTUuMSAuMi01IDIuOGwyLjEgNjEuNUMzNzAuNiA0MzUuMiA0MTYgMzgyLjkgNDE2IDMyMGMwLTM3LTE1LjctNzAuNC00MC44LTkzLjdjLTctNi41LTYuNS0xOC42IDEtMjQuNEM0MTAuMSAxNzUuNSA0MzIgMTM0LjMgNDMyIDg4YzAtMTYuOC0yLjktMzMtOC4yLTQ4Yy00LjYtMTMgMTAuMi0zMCAyMS40LTIyYzUzLjUgMzggOTIuNyA5NC44IDEwNy44IDE2MC43Yy41IDIuMS0uMiA0LjMtMS43IDUuOWwtMjguNCAyOC40Yy00IDQtMS4yIDEwLjkgNC41IDEwLjloMjZjMy40IDAgNi4yIDIuNiA2LjMgNmMuMSAzLjMgLjIgNi42IC4yIDEwYzAgMTcuNS0xLjcgMzQuNy00LjggNTEuM2MtLjIgMS4yLS45IDIuNC0xLjcgMy4zbC00Ni41IDQ2LjVjLTQgNC0xLjIgMTAuOSA0LjUgMTAuOUg1MjZjNC42IDAgNy43IDQuOCA1LjcgOUM0ODcuMiA0NTAuNSAzOTQuOCA1MTIgMjg4IDUxMlM4OC44IDQ1MC41IDQ0LjMgMzYxYy0yLjEtNC4yIDEtOSA1LjctOUg2NC41YzUuNyAwIDguNi02LjkgNC41LTEwLjlMMjIuNiAyOTQuNmMtLjktLjktMS41LTItMS43LTMuM0MxNy43IDI3NC43IDE2IDI1Ny41IDE2IDI0MGMwLTMuMyAuMS02LjcgLjItMTBjLjEtMy40IDIuOS02IDYuMy02aDI2YzUuNyAwIDguNi02LjkgNC41LTEwLjlMMjQuNiAxODQuNmMtMS41LTEuNS0yLjItMy44LTEuNy01LjlDMzguMSAxMTIuOCA3Ny4zIDU2IDEzMC44IDE4YzExLjMtOCAyNiA4LjkgMjEuNCAyMmMtNS4zIDE1LTguMiAzMS4yLTguMiA0OGMwIDQ2LjMgMjEuOSA4Ny41IDU1LjggMTEzLjljNy41IDUuOCA4IDE3LjkgMSAyNC40QzE3NS43IDI0OS42IDE2MCAyODMgMTYwIDMyMGMwIDYyLjkgNDUuNCAxMTUuMiAxMDUuMSAxMjZsMi4xLTYxLjVjLjEtMi42LTIuOC00LjItNS0yLjhsLTI2LjMgMTcuNmMtMy4yIDIuMS03LjQgMS43LTEwLjEtMXMtMy4xLTYuOS0xLTEwLjFMMjQ2IDM1Ni4zYzEuMy0xLjkgLjItNC41LTItNC45bC0zNy42LTcuNWMtMy43LS43LTYuNC00LTYuNC03LjhzMi43LTcuMSA2LjQtNy44bDM3LjYtNy41YzIuMi0uNCAzLjMtMyAyLTQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSmV0RmlnaHRlclVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MC43IDkuN0MyNjguMiAzLjggMjYyLjQgMCAyNTYgMHMtMTIuMiAzLjgtMTQuNyA5LjdMMTk3LjIgMTEyLjZjLTMuNCA4LTUuMiAxNi41LTUuMiAyNS4ydjc3bC0xNDQgODRWMjgwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djU2IDMyIDI0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjR2LThIMTkydjMyLjdMMTMzLjUgNDY4Yy0zLjUgMy01LjUgNy40LTUuNSAxMnYxNmMwIDguOCA3LjIgMTYgMTYgMTZoOTZWNDQ4YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2NjRoOTZjOC44IDAgMTYtNy4yIDE2LTE2VjQ4MGMwLTQuNi0yLTktNS41LTEyTDMyMCA0MTYuN1YzODRINDY0djhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYzNjggMzM2IDI4MGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHYxOC44bC0xNDQtODR2LTc3YzAtOC43LTEuOC0xNy4yLTUuMi0yNS4yTDI3MC43IDkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSmV0RmlnaHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRIMjk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI4MEwzODQgMTkySDUwMC40YzcuNyAwIDE1LjMgMS40IDIyLjUgNC4xTDYyNSAyMzQuNGM5IDMuNCAxNSAxMiAxNSAyMS42cy02IDE4LjItMTUgMjEuNkw1MjIuOSAzMTUuOWMtNy4yIDIuNy0xNC44IDQuMS0yMi41IDQuMUgzODRMMjgwIDQ2NGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgxODRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoOFYzMjBIMTYwbC01NC42IDU0LjZjLTYgNi0xNC4xIDkuNC0yMi42IDkuNEg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjg4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg4Mi43YzguNSAwIDE2LjYgMy40IDIyLjYgOS40TDE2MCAxOTJoMzJWNDhoLThjLTEzLjMgMC0yNC0xMC43LTI0LTI0ek04MCAyNDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpvaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0M2MwIDU1LjIgMjEuOSAxMDguMSA2MC45IDE0Ny4xbDIxIDIxYzkgOSAxNC4xIDIxLjIgMTQuMSAzMy45djExYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjQ1YzAtMjkuNy0xMS44LTU4LjItMzIuOC03OS4ybC0yMS0yMUM0NjMuMiAxMTcuOCA0NDggODEuMiA0NDggNDNWMzJ6TTU3NiAyNTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyNDVjMC01NS4yLTIxLjktMTA4LjEtNjAuOS0xNDcuMWwtMjEtMjFjLTktOS0xNC4xLTIxLjItMTQuMS0zMy45VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjQzYzAgMjkuNyAxMS44IDU4LjIgMzIuOCA3OS4ybDIxIDIxYzI3IDI3IDQyLjIgNjMuNiA0Mi4yIDEwMS44djExek0yMjkuOCAzNjBjLTQuNy0yLjMtMTAtMi43LTE1LjItMmMtMzcuOCA1LjYtNzUuMiAxNC4zLTEwNi45IDIyLjhDODEuMyAzODggNTguMyAzOTUuMSA0MiA0MDAuNGMtOC4yIDIuNy0xNC43IDQuOS0xOS4yIDYuNWMtMi4zIC44LTQgMS40LTUuMiAxLjhsLTEuMyAuNUM2LjggNDEyLjUgMCA0MjEuNCAwIDQzMnM2LjggMTkuNSAxNi4zIDIyLjdsMS4zIC41YzEuMiAuNCAzIDEuMSA1LjIgMS44YzQuNSAxLjYgMTEgMy44IDE5LjIgNi41YzE2LjMgNS40IDM5LjIgMTIuNSA2NS43IDE5LjZDMTYwLjMgNDk3LjMgMjI4LjggNTEyIDI4OCA1MTJoNjcuM2M0LjEgMCA2LjMtNS4xIDMuNi04LjNMMjU2LjUgMzgwLjhjLTcuNC04LjktMTYuNS0xNS45LTI2LjctMjAuOHpNNDQ1IDUxMmgxOSA1MS4zYzQuMSAwIDYuMy01LjEgMy42LTguM0w0MTYuNSAzODAuOEM0MDEuMyAzNjIuNSAzNzguOCAzNTIgMzU1IDM1MkgzMzYgMjg4Yy0xLjEgMC0yLjMgMC0zLjQgMGMtNC4xIDAtNi4yIDUuMS0zLjUgOC4zTDM4My41IDQ4My4yQzM5OC43IDUwMS41IDQyMS4yIDUxMiA0NDUgNTEyem0tMy45LTE1MS43TDU0My41IDQ4My4yYzE0LjYgMTcuNSAzNS45IDI3LjkgNTguNiAyOC43YzIxLjEtMS4xIDM3LjktMTguNiAzNy45LTM5LjlWMzkyYzAtMjIuMS0xNy45LTQwLTQwLTQwSDQ0NC43Yy00LjEgMC02LjMgNS4xLTMuNiA4LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUp1Z0RldGVyZ2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg4MGMxMy4zIDAgMjQgMTAuNyAyNCAyNFY0OGg4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDg4Qzc0LjcgOTYgNjQgODUuMyA2NCA3MnMxMC43LTI0IDI0LTI0aDhWMjR6TTAgMjU2YzAtNzAuNyA1Ny4zLTEyOCAxMjgtMTI4SDI1NmM3MC43IDAgMTI4IDU3LjMgMTI4IDEyOFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI1NnptMjU2IDB2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyNTZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzExIDg2LjNjMTIuMy0xMi43IDEyLTMyLjktLjctNDUuMnMtMzIuOS0xMi00NS4yIC43bC0xNTUuMiAxNjBMNjQgMjQ5VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNDYuMyAwIDY0VjMyOCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzNDFsNjQuNy02Ni43IDEzMyAxOTJjMTAuMSAxNC41IDMwIDE4LjEgNDQuNSA4LjFzMTguMS0zMCA4LjEtNDQuNUwxNzQuMSAyMjcuNCAzMTEgODYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2FhYmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjAgMTIwbDIyOCA3MS4yTDUxNiAxMjAgMjg4IDQ4LjggNjAgMTIwek0yNzguNSAxLjVjNi4yLTEuOSAxMi45LTEuOSAxOS4xIDBsMjU2IDgwQzU2Ni45IDg1LjYgNTc2IDk4IDU3NiAxMTJ2MTYgMCAyMS4yTDI5Mi44IDIzNy43Yy0zLjEgMS02LjQgMS05LjUgMEwwIDE0OS4yVjEyOCAxMTJDMCA5OCA5LjEgODUuNiAyMi41IDgxLjVsMjU2LTgwem0yMy45IDI2Ni44TDU3NiAxODIuOHY0Ni41bC01Mi44IDE2LjVjLTguNCAyLjYtMTMuMSAxMS42LTEwLjUgMjBzMTEuNiAxMy4xIDIwIDEwLjVMNTc2IDI2Mi44VjQwMGMwIDE0LTkuMSAyNi40LTIyLjUgMzAuNWwtMjU2IDgwYy02LjIgMS45LTEyLjkgMS45LTE5LjEgMGwtMjU2LTgwQzkuMSA0MjYuNCAwIDQxNCAwIDQwMFYyNjIuOGw0My4yIDEzLjVjOC40IDIuNiAxNy40LTIuMSAyMC0xMC41cy0yLjEtMTcuNC0xMC41LTIwTDAgMjI5LjJWMTgyLjhsMjczLjcgODUuNWM5LjMgMi45IDE5LjMgMi45IDI4LjYgMHptLTE4NS41LTIuNmMtOC40LTIuNi0xNy40IDIuMS0yMCAxMC41czIuMSAxNy40IDEwLjUgMjBsNjQgMjBjOC40IDIuNiAxNy40LTIuMSAyMC0xMC41cy0yLjEtMTcuNC0xMC41LTIwbC02NC0yMHptMzUyIDMwLjVjOC40LTIuNiAxMy4xLTExLjYgMTAuNS0yMHMtMTEuNi0xMy4xLTIwLTEwLjVsLTY0IDIwYy04LjQgMi42LTEzLjEgMTEuNi0xMC41IDIwczExLjYgMTMuMSAyMCAxMC41bDY0LTIwem0tMjI0IDkuNWMtOC40LTIuNi0xNy40IDIuMS0yMCAxMC41czIuMSAxNy40IDEwLjUgMjBsMzguNSAxMmM5LjMgMi45IDE5LjMgMi45IDI4LjYgMGwzOC41LTEyYzguNC0yLjYgMTMuMS0xMS42IDEwLjUtMjBzLTExLjYtMTMuMS0yMC0xMC41bC0zOC41IDEyYy0zLjEgMS02LjQgMS05LjUgMGwtMzguNS0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAzNTJjOTcuMiAwIDE3Ni03OC44IDE3Ni0xNzZTNDMzLjIgMCAzMzYgMFMxNjAgNzguOCAxNjAgMTc2YzAgMTguNyAyLjkgMzYuOCA4LjMgNTMuN0w3IDM5MWMtNC41IDQuNS03IDEwLjYtNyAxN3Y4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNFY0NDhoNDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMzg0aDQwYzYuNCAwIDEyLjUtMi41IDE3LTdsMzMuMy0zMy4zYzE2LjkgNS40IDM1IDguMyA1My43IDguM3pNMzc2IDk2YTQwIDQwIDAgMSAxIDAgODAgNDAgNDAgMCAxIDEgMC04MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2V5Ym9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTE2IDY0aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNDRjMC04LjggNy4yLTE2IDE2LTE2ek02NCAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6bTE2IDgwaDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2em04MC0xNzZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMTQ0em0xNiA4MGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MGMwLTguOCA3LjItMTYgMTYtMTZ6TTE2MCAzMzZjMC04LjggNy4yLTE2IDE2LTE2SDQwMGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjMzNnpNMjcyIDEyOGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjE0NGMwLTguOCA3LjItMTYgMTYtMTZ6TTI1NiAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMjQwek0zNjggMTI4aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNnpNMzUyIDI0MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTQ2NCAxMjhoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg0NjRjLTguOCAwLTE2LTcuMi0xNi0xNlYxNDRjMC04LjggNy4yLTE2IDE2LTE2ek00NDggMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHptMTYgODBoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg0NjRjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaGFuZGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ1LjggMy43YzUuOS00LjkgMTQuNi00LjkgMjAuNSAwbDQ4IDQwYzUuOSA0LjkgNy41IDEzLjIgMy44IDE5LjlsMCAwIDAgMCAwIDAgMCAwLS4xIC4xLS4zIC42Yy0uMyAuNS0uNyAxLjMtMS4yIDIuM2MtMSAyLTIuNiA1LTQuNCA4LjZjLS41IC45LS45IDEuOS0xLjQgMi45QzM0NC45IDk3LjQgMzY4IDEzNCAzNjggMTc2cy0yMy4xIDc4LjYtNTcuMyA5Ny44Yy41IDEgMSAyIDEuNCAyLjljMS44IDMuNyAzLjMgNi42IDQuNCA4LjZjLjUgMSAuOSAxLjggMS4yIDIuM2wuMyAuNiAuMSAuMSAwIDAgMCAwYzMuNiA2LjcgMiAxNS0zLjggMTkuOUwyNzIgMzQzLjV2MTkuOGwzNS42LTI0LjUgNDEuMS0yOC4yYzQyLjgtMjkuNCA2OC40LTc4IDY4LjQtMTMwYzAtMzEuMS05LjItNjEuNi0yNi41LTg3LjVsLTIuOC00LjJjLTQtNi0zLjUtMTQgMS4zLTE5LjVzMTIuNy03IDE5LjItMy43TDQwMS4xIDgwYzcuMi0xNC4zIDcuMi0xNC4zIDcuMi0xNC4zbDAgMCAwIDAgLjEgMCAuMyAuMiAxIC41Yy44IC40IDIgMS4xIDMuNSAxLjljMi45IDEuNyA3IDQuMSAxMS44IDcuM2M5LjYgNi40IDIyLjUgMTYuMSAzNS40IDI5YzI1LjcgMjUuNyA1Mi43IDY1LjYgNTIuNyAxMTkuM2MwIDUzLjEtMjYuNCAxMDAuNS01MS4yIDEzMy42Yy0xMi42IDE2LjctMjUuMSAzMC4zLTM0LjUgMzkuN2MtNC43IDQuNy04LjcgOC40LTExLjUgMTAuOWMtMS40IDEuMy0yLjUgMi4yLTMuMyAyLjlsLS45IC44LS4zIC4yLS4xIC4xIDAgMCAwIDBzMCAwLTEwLjItMTIuM2wxMC4yIDEyLjNjLTUuMSA0LjMtMTIuNCA0LjktMTguMiAxLjZsLTc1LjYtNDMtMzIuNyAyMi41IDQ1LjUgMzEuM2MxLjgtLjQgMy43LS43IDUuNy0uN2MxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGMtMTIuMiAwLTIyLjMtOS4xLTIzLjgtMjFMMjcyIDQyMy40djI4LjljOS42IDUuNSAxNiAxNS45IDE2IDI3LjdjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJjMC0xMS44IDYuNC0yMi4yIDE2LTI3LjdWNDI0LjFsLTQwLjMgMjcuN0MxOTcuOCA0NjMuMyAxODcuOSA0NzIgMTc2IDQ3MmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGMyLjIgMCA0LjQgLjMgNi41IC45bDQ1LjgtMzEuNS0zMi43LTIyLjUtNzUuNiA0M2MtNS44IDMuMy0xMyAyLjctMTguMi0xLjZMMTEyIDQwMGMtMTAuMiAxMi4zLTEwLjIgMTIuMy0xMC4zIDEyLjNsMCAwIDAgMC0uMS0uMS0uMy0uMi0uOS0uOGMtLjgtLjctMS45LTEuNy0zLjMtMi45Yy0yLjgtMi41LTYuNy02LjItMTEuNS0xMC45Yy05LjQtOS40LTIxLjktMjMtMzQuNS0zOS43QzI2LjQgMzI0LjUgMCAyNzcuMSAwIDIyNGMwLTUzLjcgMjYuOS05My42IDUyLjctMTE5LjNjMTIuOS0xMi45IDI1LjgtMjIuNiAzNS40LTI5QzkzIDcyLjUgOTcgNzAgOTkuOSA2OC40YzEuNS0uOCAyLjYtMS41IDMuNS0xLjlsMS0uNSAuMy0uMiAuMSAwIDAgMCAwIDBzMCAwIDcuMiAxNC4zbC03LjItMTQuM2M2LjUtMy4yIDE0LjMtMS43IDE5LjIgMy43czUuMyAxMy40IDEuMyAxOS41bC0yLjggNC4yQzEwNS4yIDExOSA5NiAxNDkuNSA5NiAxODAuNmMwIDUxLjkgMjUuNiAxMDAuNiA2OC40IDEzMGw0MS4xIDI4LjJMMjQwIDM2Mi42VjM0My41bC00Mi4yLTM1LjJjLTUuOS00LjktNy41LTEzLjItMy44LTE5LjlsMCAwIDAgMCAwIDAgLjEtLjEgLjMtLjZjLjMtLjUgLjctMS4zIDEuMi0yLjNjMS0yIDIuNi01IDQuNC04LjZjLjUtLjkgLjktMS45IDEuNC0yLjlDMTY3LjEgMjU0LjYgMTQ0IDIxOCAxNDQgMTc2czIzLjEtNzguNiA1Ny4zLTk3LjhjLS41LTEtMS0yLTEuNC0yLjljLTEuOC0zLjctMy4zLTYuNi00LjQtOC42Yy0uNS0xLS45LTEuOC0xLjItMi4zbC0uMy0uNi0uMS0uMSAwIDAgMCAwIDAgMGMtMy42LTYuNy0yLTE1IDMuOC0xOS45bDQ4LTQwek0yMjAuMiAxMjIuOWMtMTcgMTEuNS0yOC4yIDMxLTI4LjIgNTMuMXMxMS4yIDQxLjYgMjguMiA1My4xQzIyNyAyMTAuMiAyMzIgMTkwLjkgMjMyIDE3NnMtNS0zNC4yLTExLjgtNTMuMXptNzEuNSAxMDYuMmMxNy0xMS41IDI4LjItMzEgMjguMi01My4xcy0xMS4yLTQxLjYtMjguMi01My4xQzI4NSAxNDEuOCAyODAgMTYxLjEgMjgwIDE3NnM1IDM0LjIgMTEuOCA1My4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaXBTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0MC44IDg4LjNjMTMuNC0xMS41IDE1LTMxLjcgMy41LTQ1LjFzLTMxLjctMTUtNDUuMS0zLjVMMTI4IDE4Ni40VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzY0IDQ2LjMgNjQgNjRWMjI0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0VjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyNS42TDI5OS4yIDQ3Mi4zYzEzLjQgMTEuNSAzMy42IDkuOSA0NS4xLTMuNXM5LjktMzMuNi0zLjUtNDUuMUwxODIuNSAyODhIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE4Mi41TDM0MC44IDg4LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtpdE1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIOTZWMzJINjR6bTY0IDBWNDgwSDQ0OFYzMkgxMjh6TTUxMiA0ODBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINDgwVjQ4MGgzMnpNMjU2IDE3NmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djQ4aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzIwdjQ4YzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyODhIMjA4Yy04LjggMC0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNmg0OFYxNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtpdGNoZW5TZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwIDE0NEE5NiA5NiAwIDEgMCA0OCAxNDRhOTYgOTYgMCAxIDAgMTkyIDB6bTQ0LjQgMzJDMjY5LjkgMjQwLjEgMjEyLjUgMjg4IDE0NCAyODhDNjQuNSAyODggMCAyMjMuNSAwIDE0NFM2NC41IDAgMTQ0IDBjNjguNSAwIDEyNS45IDQ3LjkgMTQwLjQgMTEyaDcxLjhjOC44LTkuOCAyMS42LTE2IDM1LjgtMTZINDk2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4SDM5MmMtMTQuMiAwLTI3LTYuMi0zNS44LTE2SDI4NC40ek0xNDQgODBhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6TTQwMCAyNDBjMTMuMyAwIDI0IDEwLjcgMjQgMjR2OGg5NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyODBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoOTZ2LThjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTI4OCA0NjRWMzUySDUxMlY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMzM2Yy0yNi41IDAtNDgtMjEuNS00OC00OHpNNDggMzIwaDgwIDE2IDMyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4SDE2MGMwIDE3LjctMTQuMyAzMi0zMiAzMkg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnptMTI4IDY0YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDE2MHYzMmgxNnpNMjQgNDY0SDIwMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2l3aUJpcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjkxLjIgMzg4LjRjMzEuMi0xOC44IDY0LjctMzYuNCAxMDEuMS0zNi40SDQ0OGM0LjYgMCA5LjEtLjIgMTMuNi0uN2w4NS4zIDEyMS45YzQgNS43IDExLjMgOC4yIDE3LjkgNi4xczExLjItOC4zIDExLjItMTUuM1YyMjRjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhIMzkyLjNjLTM2LjQgMC02OS45LTE3LjYtMTAxLjEtMzYuNEMyNjIuMyA0Mi4xIDIyOC4zIDMyIDE5MiAzMkM4NiAzMiAwIDExOCAwIDIyNGMwIDcxLjEgMzguNiAxMzMuMSA5NiAxNjYuM1Y0NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0MTBjMTUuMyAzLjkgMzEuNCA2IDQ4IDZjNS40IDAgMTAuNy0uMiAxNi0uN1Y0NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0MDUuMWMxMi40LTQuNCAyNC4yLTEwIDM1LjItMTYuN3pNNDQ4IDIwMGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDE2SDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhbmRNaW5lT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ0IDI0VjE2OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0ek0xOTIgMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnYzMkgxOTJWMzIwem0tNzcuMyA5MC41YzguMS0xNi4zIDI0LjgtMjYuNSA0Mi45LTI2LjVINDgyLjNjMTguMiAwIDM0LjggMTAuMyA0Mi45IDI2LjVsMjcuNiA1NS4yQzU2My41IDQ4NyA1NDggNTEyIDUyNC4yIDUxMkgxMTUuOGMtMjMuOCAwLTM5LjMtMjUtMjguNi00Ni4zbDI3LjYtNTUuMnpNMzYuMyAxMzguM2M3LjUtMTAuOSAyMi41LTEzLjYgMzMuNC02LjFsMTA0IDcyYzEwLjkgNy41IDEzLjYgMjIuNSA2LjEgMzMuNHMtMjIuNSAxMy42LTMzLjQgNi4xbC0xMDQtNzJjLTEwLjktNy41LTEzLjYtMjIuNS02LjEtMzMuNHptNTM0LjEtNi4xYzEwLjktNy41IDI1LjgtNC44IDMzLjQgNi4xczQuOCAyNS44LTYuMSAzMy40bC0xMDQgNzJjLTEwLjkgNy41LTI1LjggNC44LTMzLjQtNi4xcy00LjgtMjUuOCA2LjEtMzMuNGwxMDQtNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhbmRtYXJrRG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggMGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNFYzNC43QzM2OC40IDQ4LjEgNDMxLjkgMTExLjYgNDQ1LjMgMTkySDQ0OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgyLjdDODAuMSAxMTEuNiAxNDMuNiA0OC4xIDIyNCAzNC43VjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0ek02NCAyODhoNjRWNDE2aDQwVjI4OGg2NFY0MTZoNDhWMjg4aDY0VjQxNmg0MFYyODhoNjRWNDIwLjNjLjYgLjMgMS4yIC43IDEuNyAxLjFsNDggMzJjMTEuNyA3LjggMTcgMjIuNCAxMi45IDM1LjlTNDk0LjEgNTEyIDQ4MCA1MTJIMzJjLTE0LjEgMC0yNi41LTkuMi0zMC42LTIyLjdzMS4xLTI4LjEgMTIuOS0zNS45bDQ4LTMyYy42LS40IDEuMi0uNyAxLjgtMS4xVjI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFuZG1hcmtGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiAwaDgwYzguOCAwIDE2IDcuMiAxNiAxNlY4MGMwIDguOC03LjIgMTYtMTYgMTZIMjcydjMySDQ2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgyNDBWMTZjMC04LjggNy4yLTE2IDE2LTE2aDE2ek02NCAyMjRoNjRWNDE2aDQwVjIyNGg2NFY0MTZoNDhWMjI0aDY0VjQxNmg0MFYyMjRoNjRWNDIwLjNjLjYgLjMgMS4yIC43IDEuOCAxLjFsNDggMzJjMTEuNyA3LjggMTcgMjIuNCAxMi45IDM1LjlTNDk0LjEgNTEyIDQ4MCA1MTJIMzJjLTE0LjEgMC0yNi41LTkuMi0zMC42LTIyLjdzMS4xLTI4LjEgMTIuOS0zNS45bDQ4LTMyYy42LS40IDEuMi0uNyAxLjgtMS4xVjIyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFuZG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwLjEgNC4yYzkuOC01LjYgMjEuOS01LjYgMzEuOCAwbDE3MS44IDk4LjFMNDQ4IDEwNGwwIC45IDQ3LjkgMjcuNGMxMi42IDcuMiAxOC44IDIyIDE1LjEgMzZzLTE2LjQgMjMuOC0zMC45IDIzLjhIMzJjLTE0LjUgMC0yNy4yLTkuOC0zMC45LTIzLjhzMi41LTI4LjggMTUuMS0zNkw2NCAxMDQuOVYxMDRsNC40LTEuNkwyNDAuMSA0LjJ6TTY0IDIyNGg2NFY0MTZoNDBWMjI0aDY0VjQxNmg0OFYyMjRoNjRWNDE2aDQwVjIyNGg2NFY0MjAuM2MuNiAuMyAxLjIgLjcgMS44IDEuMWw0OCAzMmMxMS43IDcuOCAxNyAyMi40IDEyLjkgMzUuOVM0OTQuMSA1MTIgNDgwIDUxMkgzMmMtMTQuMSAwLTI2LjUtOS4yLTMwLjYtMjIuN3MxLjEtMjguMSAxMi45LTM1LjlsNDgtMzJjLjYtLjQgMS4yLS43IDEuOC0xLjFWMjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYW5ndWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NEgyNTZoNDggMTZINTc2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEgzMjAgMzA0IDI1NiA2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4em0zMjAgMFYzODRINTc2VjEyOEgzMjB6TTE3OC4zIDE3NS45Yy0zLjItNy4yLTEwLjQtMTEuOS0xOC4zLTExLjlzLTE1LjEgNC43LTE4LjMgMTEuOWwtNjQgMTQ0Yy00LjUgMTAuMSAuMSAyMS45IDEwLjIgMjYuNHMyMS45LS4xIDI2LjQtMTAuMmw4LjktMjAuMWg3My42bDguOSAyMC4xYzQuNSAxMC4xIDE2LjMgMTQuNiAyNi40IDEwLjJzMTQuNi0xNi4zIDEwLjItMjYuNGwtNjQtMTQ0ek0xNjAgMjMzLjJMMTc5IDI3NkgxNDFsMTktNDIuOHpNNDQ4IDE2NGMxMSAwIDIwIDkgMjAgMjB2NGg0NCAxNmMxMSAwIDIwIDkgMjAgMjBzLTkgMjAtMjAgMjBoLTJsLTEuNiA0LjVjLTguOSAyNC40LTIyLjQgNDYuNi0zOS42IDY1LjRjLjkgLjYgMS44IDEuMSAyLjcgMS42bDE4LjkgMTEuM2M5LjUgNS43IDEyLjUgMTggNi45IDI3LjRzLTE4IDEyLjUtMjcuNCA2LjlsLTE4LjktMTEuM2MtNC41LTIuNy04LjgtNS41LTEzLjEtOC41Yy0xMC42IDcuNS0yMS45IDE0LTM0IDE5LjRsLTMuNiAxLjZjLTEwLjEgNC41LTIxLjktLjEtMjYuNC0xMC4ycy4xLTIxLjkgMTAuMi0yNi40bDMuNi0xLjZjNi40LTIuOSAxMi42LTYuMSAxOC41LTkuOGwtMTIuMi0xMi4yYy03LjgtNy44LTcuOC0yMC41IDAtMjguM3MyMC41LTcuOCAyOC4zIDBsMTQuNiAxNC42IC41IC41YzEyLjQtMTMuMSAyMi41LTI4LjMgMjkuOC00NUg0NDggMzc2Yy0xMSAwLTIwLTktMjAtMjBzOS0yMCAyMC0yMGg1MnYtNGMwLTExIDktMjAgMjAtMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcHRvcENvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgOTZjMC0zNS4zIDI4LjctNjQgNjQtNjRINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjM1Mkg1MTJWOTZIMTI4VjM1Mkg2NFY5NnpNMCA0MDMuMkMwIDM5Mi42IDguNiAzODQgMTkuMiAzODRINjIwLjhjMTAuNiAwIDE5LjIgOC42IDE5LjIgMTkuMmMwIDQyLjQtMzQuNCA3Ni44LTc2LjggNzYuOEg3Ni44QzM0LjQgNDgwIDAgNDQ1LjYgMCA0MDMuMnpNMjgxIDIwOWwtMzEgMzEgMzEgMzFjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDgtNDhjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDQ4LTQ4YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOXpNMzkzIDE3NWw0OCA0OGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtNDggNDhjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMzEtMzEtMzEtMzFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFwdG9wRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMEM5Mi43IDAgNjQgMjguNyA2NCA2NFYyODhIMTkuMkM4LjYgMjg4IDAgMjk2LjYgMCAzMDcuMkMwIDM0OS42IDM0LjQgMzg0IDc2LjggMzg0SDMyMFYyODhIMTI4VjY0SDQ0OFY5Nmg2NFY2NGMwLTM1LjMtMjguNy02NC02NC02NEgxMjh6TTUxMiAxMjhINDAwYy0yNi41IDAtNDggMjEuNS00OCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI1Nkg1NDRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjEyOHptMzIgMHY5Nmg5NmwtOTYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcHRvcE1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgOTZjMC0zNS4zIDI4LjctNjQgNjQtNjRINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjM1Mkg1MTJWOTZIMTI4VjM1Mkg2NFY5NnpNMCA0MDMuMkMwIDM5Mi42IDguNiAzODQgMTkuMiAzODRINjIwLjhjMTAuNiAwIDE5LjIgOC42IDE5LjIgMTkuMmMwIDQyLjQtMzQuNCA3Ni44LTc2LjggNzYuOEg3Ni44QzM0LjQgNDgwIDAgNDQ1LjYgMCA0MDMuMnpNMjg4IDE2MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djQ4aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzUydjQ4YzAgOC44LTcuMiAxNi0xNiAxNkgzMDRjLTguOCAwLTE2LTcuMi0xNi0xNlYyNzJIMjQwYy04LjggMC0xNi03LjItMTYtMTZWMjI0YzAtOC44IDcuMi0xNiAxNi0xNmg0OFYxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcHRvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMzJDOTIuNyAzMiA2NCA2MC43IDY0IDk2VjM1Mmg2NFY5Nkg1MTJWMzUyaDY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDEyOHpNMTkuMiAzODRDOC42IDM4NCAwIDM5Mi42IDAgNDAzLjJDMCA0NDUuNiAzNC40IDQ4MCA3Ni44IDQ4MEg1NjMuMmM0Mi40IDAgNzYuOC0zNC40IDc2LjgtNzYuOGMwLTEwLjYtOC42LTE5LjItMTkuMi0xOS4ySDE5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcmlTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlY5Ni43YzUuMy0uNCAxMC42LS43IDE2LS43czEwLjcgLjIgMTYgLjdWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY0OS40YzU0LjkgMjUuMiA5NS44IDc1LjUgMTA4LjIgMTM2LjJjMy41IDE3LjMtNy43IDM0LjItMjUgMzcuN3MtMzQuMi03LjctMzcuNy0yNWMtNi4xLTI5LjktMjIuNS01NS45LTQ1LjQtNzQuM1YyNTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTYxYy01LjItLjctMTAuNi0xLTE2LTFzLTEwLjggLjMtMTYgMXY5NWMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxODguMUM4Mi43IDIxMS41IDY0IDI0Ny42IDY0IDI4OGMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOEgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTkyIDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDQ4LjlDMTguNSAzODIgMCAzMzcuMiAwIDI4OGMwLTc3LjUgNDUuOS0xNDQuMyAxMTItMTc0LjZWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxheWVyR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY0LjUgNS4yYzE0LjktNi45IDMyLjEtNi45IDQ3IDBsMjE4LjYgMTAxYzguNSAzLjkgMTMuOSAxMi40IDEzLjkgMjEuOHMtNS40IDE3LjktMTMuOSAyMS44bC0yMTguNiAxMDFjLTE0LjkgNi45LTMyLjEgNi45LTQ3IDBMNDUuOSAxNDkuOEMzNy40IDE0NS44IDMyIDEzNy4zIDMyIDEyOHM1LjQtMTcuOSAxMy45LTIxLjhMMjY0LjUgNS4yek00NzYuOSAyMDkuNmw1My4yIDI0LjZjOC41IDMuOSAxMy45IDEyLjQgMTMuOSAyMS44cy01LjQgMTcuOS0xMy45IDIxLjhsLTIxOC42IDEwMWMtMTQuOSA2LjktMzIuMSA2LjktNDcgMEw0NS45IDI3Ny44QzM3LjQgMjczLjggMzIgMjY1LjMgMzIgMjU2czUuNC0xNy45IDEzLjktMjEuOGw1My4yLTI0LjYgMTUyIDcwLjJjMjMuNCAxMC44IDUwLjQgMTAuOCA3My44IDBsMTUyLTcwLjJ6bS0xNTIgMTk4LjJsMTUyLTcwLjIgNTMuMiAyNC42YzguNSAzLjkgMTMuOSAxMi40IDEzLjkgMjEuOHMtNS40IDE3LjktMTMuOSAyMS44bC0yMTguNiAxMDFjLTE0LjkgNi45LTMyLjEgNi45LTQ3IDBMNDUuOSA0MDUuOEMzNy40IDQwMS44IDMyIDM5My4zIDMyIDM4NHM1LjQtMTcuOSAxMy45LTIxLjhsNTMuMi0yNC42IDE1MiA3MC4yYzIzLjQgMTAuOCA1MC40IDEwLjggNzMuOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZWFmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiA5NmMtNzguNiAwLTE0NS4xIDUxLjUtMTY3LjcgMTIyLjVjMzMuNi0xNyA3MS41LTI2LjUgMTExLjctMjYuNWg4OGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyODggMjE2czAgMCAwIDBjLTE2LjYgMC0zMi43IDEuOS00OC4zIDUuNGMtMjUuOSA1LjktNDkuOSAxNi40LTcxLjQgMzAuN2MwIDAgMCAwIDAgMEMzOC4zIDI5OC44IDAgMzY0LjkgMCA0NDB2MTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0NDBjMC00OC43IDIwLjctOTIuNSA1My44LTEyMy4yQzEyMS42IDM5Mi4zIDE5MC4zIDQ0OCAyNzIgNDQ4bDEgMGMxMzIuMS0uNyAyMzktMTMwLjkgMjM5LTI5MS40YzAtNDIuNi03LjUtODMuMS0yMS4xLTExOS42Yy0yLjYtNi45LTEyLjctNi42LTE2LjItLjFDNDU1LjkgNzIuMSA0MTguNyA5NiAzNzYgOTZMMjcyIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZWZ0TG9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzcuNSA0MTRjLTguOCAzLjgtMTkgMi0yNi00LjZsLTE0NC0xMzZDMi43IDI2OC45IDAgMjYyLjYgMCAyNTZzMi43LTEyLjkgNy41LTE3LjRsMTQ0LTEzNmM3LTYuNiAxNy4yLTguNCAyNi00LjZzMTQuNSAxMi41IDE0LjUgMjJsMCA3MiAyODggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0yODggMCAwIDcyYzAgOS42LTUuNyAxOC4yLTE0LjUgMjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlZnRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQuMyAyNzMuNmM0LjktNC41IDcuNy0xMC45IDcuNy0xNy42cy0yLjgtMTMtNy43LTE3LjZsLTExMi0xMDRjLTctNi41LTE3LjItOC4yLTI1LjktNC40cy0xNC40IDEyLjUtMTQuNCAyMmwwIDU2LTE5MiAwIDAtNTZjMC05LjUtNS43LTE4LjItMTQuNC0yMnMtMTguOS0yLjEtMjUuOSA0LjRsLTExMiAxMDRDMi44IDI0MyAwIDI0OS4zIDAgMjU2czIuOCAxMyA3LjcgMTcuNmwxMTIgMTA0YzcgNi41IDE3LjIgOC4yIDI1LjkgNC40czE0LjQtMTIuNSAxNC40LTIybDAtNTYgMTkyIDAgMCA1NmMwIDkuNSA1LjcgMTguMiAxNC40IDIyczE4LjkgMi4xIDI1LjktNC40bDExMi0xMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlbW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NGMtNi42IDAtMTMgMS0xOSAyLjljLTIyLjUgNy00OC4xIDE0LjktNzEgOWMtNzUuMi0xOS4xLTE1Ni40IDExLTIxMy43IDY4LjNTLTcuMiAyNTAuOCAxMS45IDMyNmM1LjggMjIuOS0yIDQ4LjQtOSA3MUMxIDQwMyAwIDQwOS40IDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0YzYuNiAwIDEzLTEgMTkuMS0yLjljMjIuNS03IDQ4LjEtMTQuOSA3MS05Yzc1LjIgMTkuMSAxNTYuNC0xMSAyMTMuNy02OC4zczg3LjUtMTM4LjUgNjguMy0yMTMuN2MtNS44LTIyLjkgMi00OC40IDktNzFjMS45LTYgMi45LTEyLjQgMi45LTE5LjF6TTIxMi41IDEyNy40Yy01NC42IDE2LTEwMS4xIDYyLjUtMTE3LjEgMTE3LjFDOTIuOSAyNTMgODQgMjU3LjggNzUuNSAyNTUuNFM2Mi4yIDI0NCA2NC42IDIzNS41YzE5LjEtNjUuMSA3My43LTExOS44IDEzOC45LTEzOC45YzguNS0yLjUgMTcuNCAyLjQgMTkuOSAxMC45cy0yLjQgMTcuNC0xMC45IDE5Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlc3NUaGFuRXF1YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk1LjkgOTMuN2MxNi40LTYuNiAyNC40LTI1LjIgMTcuOC00MS42cy0yNS4yLTI0LjQtNDEuNi0xNy44bC0zMjAgMTI4QzQwIDE2Ny4xIDMyIDE3OC45IDMyIDE5MnM4IDI0LjkgMjAuMSAyOS43bDMyMCAxMjhjMTYuNCA2LjYgMzUtMS40IDQxLjYtMTcuOHMtMS40LTM1LTE3LjgtNDEuNkwxNTAuMiAxOTIgMzk1LjkgOTMuN3pNMzIgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGVzc1RoYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgwLjYgODEuN2M3LjkgMTUuOCAxLjUgMzUtMTQuMyA0Mi45TDEwMy42IDI1NiAzNjYuMyAzODcuNGMxNS44IDcuOSAyMi4yIDI3LjEgMTQuMyA0Mi45cy0yNy4xIDIyLjItNDIuOSAxNC4zbC0zMjAtMTYwQzYuOCAyNzkuMiAwIDI2OC4xIDAgMjU2czYuOC0yMy4yIDE3LjctMjguNmwzMjAtMTYwYzE1LjgtNy45IDM1LTEuNSA0Mi45IDE0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpZmVSaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2Ny4yIDQxMi41QzMzNS45IDQzNC45IDI5Ny41IDQ0OCAyNTYgNDQ4cy03OS45LTEzLjEtMTExLjItMzUuNWw1OC01OGMxNS44IDguNiAzNCAxMy41IDUzLjMgMTMuNXMzNy40LTQuOSA1My4zLTEzLjVsNTggNTh6bTkwLjcgLjhjMzMuOC00My40IDU0LTk4IDU0LTE1Ny4zcy0yMC4yLTExMy45LTU0LTE1Ny4zYzktMTIuNSA3LjktMzAuMS0zLjQtNDEuM1M0MjUuOCA0NSA0MTMuMyA1NEMzNjkuOSAyMC4yIDMxNS4zIDAgMjU2IDBTMTQyLjEgMjAuMiA5OC43IDU0Yy0xMi41LTktMzAuMS03LjktNDEuMyAzLjRTNDUgODYuMiA1NCA5OC43QzIwLjIgMTQyLjEgMCAxOTYuNyAwIDI1NnMyMC4yIDExMy45IDU0IDE1Ny4zYy05IDEyLjUtNy45IDMwLjEgMy40IDQxLjNTODYuMiA0NjcgOTguNyA0NThjNDMuNCAzMy44IDk4IDU0IDE1Ny4zIDU0czExMy45LTIwLjIgMTU3LjMtNTRjMTIuNSA5IDMwLjEgNy45IDQxLjMtMy40czEyLjQtMjguOCAzLjQtNDEuM3ptLTQ1LjUtNDYuMWwtNTgtNThjOC42LTE1LjggMTMuNS0zNCAxMy41LTUzLjNzLTQuOS0zNy40LTEzLjUtNTMuM2w1OC01OEM0MzQuOSAxNzYuMSA0NDggMjE0LjUgNDQ4IDI1NnMtMTMuMSA3OS45LTM1LjUgMTExLjJ6TTM2Ny4yIDk5LjVsLTU4IDU4Yy0xNS44LTguNi0zNC0xMy41LTUzLjMtMTMuNXMtMzcuNCA0LjktNTMuMyAxMy41bC01OC01OEMxNzYuMSA3Ny4xIDIxNC41IDY0IDI1NiA2NHM3OS45IDEzLjEgMTExLjIgMzUuNXpNMTU3LjUgMzA5LjNsLTU4IDU4Qzc3LjEgMzM1LjkgNjQgMjk3LjUgNjQgMjU2czEzLjEtNzkuOSAzNS41LTExMS4ybDU4IDU4Yy04LjYgMTUuOC0xMy41IDM0LTEzLjUgNTMuM3M0LjkgMzcuNCAxMy41IDUzLjN6TTIwOCAyNTZhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlnaHRidWxiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiAzODRjOS42LTMxLjkgMjkuNS01OS4xIDQ5LjItODYuMmwwIDBjNS4yLTcuMSAxMC40LTE0LjIgMTUuNC0yMS40YzE5LjgtMjguNSAzMS40LTYzIDMxLjQtMTAwLjNDMzY4IDc4LjggMjg5LjIgMCAxOTIgMFMxNiA3OC44IDE2IDE3NmMwIDM3LjMgMTEuNiA3MS45IDMxLjQgMTAwLjNjNSA3LjIgMTAuMiAxNC4zIDE1LjQgMjEuNGwwIDBjMTkuOCAyNy4xIDM5LjcgNTQuNCA0OS4yIDg2LjJIMjcyek0xOTIgNTEyYzQ0LjIgMCA4MC0zNS44IDgwLTgwVjQxNkgxMTJ2MTZjMCA0NC4yIDM1LjggODAgODAgODB6TTExMiAxNzZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZjMC02MS45IDUwLjEtMTEyIDExMi0xMTJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZjLTQ0LjIgMC04MCAzNS44LTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW5lc0xlYW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkwLjQgNzQuMWM1LjYtMTYuOC0zLjUtMzQuOS0yMC4yLTQwLjVzLTM0LjkgMy41LTQwLjUgMjAuMmwtMTI4IDM4NGMtNS42IDE2LjggMy41IDM0LjkgMjAuMiA0MC41czM0LjktMy41IDQwLjUtMjAuMmwxMjgtMzg0em03MC45LTQxLjdjLTE3LjQtMi45LTMzLjkgOC45LTM2LjggMjYuM2wtNjQgMzg0Yy0yLjkgMTcuNCA4LjkgMzMuOSAyNi4zIDM2LjhzMzMuOS04LjkgMzYuOC0yNi4zbDY0LTM4NGMyLjktMTcuNC04LjktMzMuOS0yNi4zLTM2Ljh6TTM1MiAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpbmtTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDQ4OS4zIDM1OC4ybDkwLjUtOTAuNWM1Ni41LTU2LjUgNTYuNS0xNDggMC0yMDQuNWMtNTAtNTAtMTI4LjgtNTYuNS0xODYuMy0xNS40bC0xLjYgMS4xYy0xNC40IDEwLjMtMTcuNyAzMC4zLTcuNCA0NC42czMwLjMgMTcuNyA0NC42IDcuNGwxLjYtMS4xYzMyLjEtMjIuOSA3Ni0xOS4zIDEwMy44IDguNmMzMS41IDMxLjUgMzEuNSA4Mi41IDAgMTE0bC05NiA5Ni0zMS45LTI1QzQzMC45IDIzOS42IDQyMC4xIDE3NS4xIDM3NyAxMzJjLTUyLjItNTIuMy0xMzQuNS01Ni4yLTE5MS4zLTExLjdMMzguOCA1LjF6TTIzOSAxNjJjMzAuMS0xNC45IDY3LjctOS45IDkyLjggMTUuM2MyMCAyMCAyNy41IDQ4LjMgMjEuNyA3NC41TDIzOSAxNjJ6TTExNi42IDE4Ny45TDYwLjIgMjQ0LjNjLTU2LjUgNTYuNS01Ni41IDE0OCAwIDIwNC41YzUwIDUwIDEyOC44IDU2LjUgMTg2LjMgMTUuNGwxLjYtMS4xYzE0LjQtMTAuMyAxNy43LTMwLjMgNy40LTQ0LjZzLTMwLjMtMTcuNy00NC42LTcuNGwtMS42IDEuMWMtMzIuMSAyMi45LTc2IDE5LjMtMTAzLjgtOC42Qzc0IDM3MiA3NCAzMjEgMTA1LjUgMjg5LjVsNjEuOC02MS44LTUwLjYtMzkuOXpNMjIwLjkgMjcwYy0yLjEgMzkuOCAxMi4yIDgwLjEgNDIuMiAxMTBjMzguOSAzOC45IDk0LjQgNTEgMTQzLjYgMzYuM0wyMjAuOSAyNzB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc5LjggMjY3LjdjNTYuNS01Ni41IDU2LjUtMTQ4IDAtMjA0LjVjLTUwLTUwLTEyOC44LTU2LjUtMTg2LjMtMTUuNGwtMS42IDEuMWMtMTQuNCAxMC4zLTE3LjcgMzAuMy03LjQgNDQuNnMzMC4zIDE3LjcgNDQuNiA3LjRsMS42LTEuMWMzMi4xLTIyLjkgNzYtMTkuMyAxMDMuOCA4LjZjMzEuNSAzMS41IDMxLjUgODIuNSAwIDExNEw0MjIuMyAzMzQuOGMtMzEuNSAzMS41LTgyLjUgMzEuNS0xMTQgMGMtMjcuOS0yNy45LTMxLjUtNzEuOC04LjYtMTAzLjhsMS4xLTEuNmMxMC4zLTE0LjQgNi45LTM0LjQtNy40LTQ0LjZzLTM0LjQtNi45LTQ0LjYgNy40bC0xLjEgMS42QzIwNi41IDI1MS4yIDIxMyAzMzAgMjYzIDM4MGM1Ni41IDU2LjUgMTQ4IDU2LjUgMjA0LjUgMEw1NzkuOCAyNjcuN3pNNjAuMiAyNDQuM2MtNTYuNSA1Ni41LTU2LjUgMTQ4IDAgMjA0LjVjNTAgNTAgMTI4LjggNTYuNSAxODYuMyAxNS40bDEuNi0xLjFjMTQuNC0xMC4zIDE3LjctMzAuMyA3LjQtNDQuNnMtMzAuMy0xNy43LTQ0LjYtNy40bC0xLjYgMS4xYy0zMi4xIDIyLjktNzYgMTkuMy0xMDMuOC04LjZDNzQgMzcyIDc0IDMyMSAxMDUuNSAyODkuNUwyMTcuNyAxNzcuMmMzMS41LTMxLjUgODIuNS0zMS41IDExNCAwYzI3LjkgMjcuOSAzMS41IDcxLjggOC42IDEwMy45bC0xLjEgMS42Yy0xMC4zIDE0LjQtNi45IDM0LjQgNy40IDQ0LjZzMzQuNCA2LjkgNDQuNi03LjRsMS4xLTEuNkM0MzMuNSAyNjAuOCA0MjcgMTgyIDM3NyAxMzJjLTU2LjUtNTYuNS0xNDgtNTYuNS0yMDQuNSAwTDYwLjIgMjQ0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpcmFTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAxNjAuNGMwLTM1LjUgMjguOC02NC40IDY0LjQtNjQuNGM2LjkgMCAxMy44IDEuMSAyMC40IDMuM2w4MS4yIDI3LjFjMTYuOCA1LjYgMzQuOS0zLjUgNDAuNS0yMC4ycy0zLjUtMzQuOS0yMC4yLTQwLjVMMjE3IDM4LjZjLTEzLjEtNC40LTI2LjgtNi42LTQwLjYtNi42QzEwNS41IDMyIDQ4IDg5LjUgNDggMTYwLjRWMTkySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4djMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ2Yy0yLjIgMTAuNS02LjEgMjAuNi0xMS43IDI5LjlMNC42IDQzMS41Yy01LjkgOS45LTYuMSAyMi4yLS40IDMyLjJTMjAuNSA0ODAgMzIgNDgwSDI4OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg4OC41bC43LTEuMWMxMS42LTE5LjMgMTguOS00MC43IDIxLjYtNjIuOUgyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTEyVjI1NkgyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTEyVjE2MC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaXN0Q2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUyLjEgMzguMmM5LjkgOC45IDEwLjcgMjQgMS44IDMzLjlsLTcyIDgwYy00LjQgNC45LTEwLjYgNy44LTE3LjIgNy45cy0xMi45LTIuNC0xNy42LTdMNyAxMTNDLTIuMyAxMDMuNi0yLjMgODguNCA3IDc5czI0LjYtOS40IDMzLjkgMGwyMi4xIDIyLjEgNTUuMS02MS4yYzguOS05LjkgMjQtMTAuNyAzMy45LTEuOHptMCAxNjBjOS45IDguOSAxMC43IDI0IDEuOCAzMy45bC03MiA4MGMtNC40IDQuOS0xMC42IDcuOC0xNy4yIDcuOXMtMTIuOS0yLjQtMTcuNi03TDcgMjczYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsMjIuMSAyMi4xIDU1LjEtNjEuMmM4LjktOS45IDI0LTEwLjcgMzMuOS0xLjh6TTIyNCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnptMCAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTE2MCA0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTQ4IDM2OGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpc3RPbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA1NmMwLTEzLjMgMTAuNy0yNCAyNC0yNEg4MGMxMy4zIDAgMjQgMTAuNyAyNCAyNFYxNzZoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRINTZWODBINDhDMzQuNyA4MCAyNCA2OS4zIDI0IDU2ek04Ni43IDM0MS4yYy02LjUtNy40LTE4LjMtNi45LTI0IDEuMkw1MS41IDM1Ny45Yy03LjcgMTAuOC0yMi43IDEzLjMtMzMuNSA1LjZzLTEzLjMtMjIuNy01LjYtMzMuNWwxMS4xLTE1LjZjMjMuNy0zMy4yIDcyLjMtMzUuNiA5OS4yLTQuOWMyMS4zIDI0LjQgMjAuOCA2MC45LTEuMSA4NC43TDg2LjggNDMySDEyMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgzMmMtOS41IDAtMTguMi01LjYtMjItMTQuNHMtMi4xLTE4LjkgNC4zLTI1LjlsNzItNzhjNS4zLTUuOCA1LjQtMTQuNiAuMy0yMC41ek0yMjQgNjRINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCAxNjBINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCAxNjBINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlzdFVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDE0NGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTE5MiA2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyem0wIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyem0wIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyek02NCA0NjRhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em00OC0yMDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MCA0OEMyNi43IDQ4IDE2IDU4LjcgMTYgNzJ2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRIODhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNzJjMC0xMy4zLTEwLjctMjQtMjQtMjRINDB6TTE5MiA2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyem0wIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyem0wIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyek0xNiAyMzJ2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRIODhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjMyYzAtMTMuMy0xMC43LTI0LTI0LTI0SDQwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHpNNDAgMzY4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY0OGMwIDEzLjMgMTAuNyAyNCAyNCAyNEg4OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYzOTJjMC0xMy4zLTEwLjctMjQtMjQtMjRINDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpdGVjb2luU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggNjRjMC0xNy43LTE0LjMtMzItMzItMzJTNjQgNDYuMyA2NCA2NFYyMTMuNkwyMy4yIDIyNS4yYy0xNyA0LjktMjYuOCAyMi42LTIyIDM5LjZzMjIuNiAyNi44IDM5LjYgMjJMNjQgMjgwLjFWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxMjhWMjYxLjlsMTM2LjgtMzkuMWMxNy00LjkgMjYuOC0yMi42IDIyLTM5LjZzLTIyLjYtMjYuOC0zOS42LTIyTDEyOCAxOTUuM1Y2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9jYXRpb25BcnJvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjkuNiA5Mi4xYzQuOS0xMS45IDIuMS0yNS42LTctMzQuN3MtMjIuOC0xMS45LTM0LjctN2wtMzUyIDE0NGMtMTQuMiA1LjgtMjIuMiAyMC44LTE5LjMgMzUuOHMxNi4xIDI1LjggMzEuNCAyNS44SDIyNFY0MzJjMCAxNS4zIDEwLjggMjguNCAyNS44IDMxLjRzMzAtNS4xIDM1LjgtMTkuM2wxNDQtMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMb2NhdGlvbkNyb3NzaGFpcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjYuN0MzNjguNCA4MC4xIDQzMS45IDE0My42IDQ0NS4zIDIyNEg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDQ1LjNDNDMxLjkgMzY4LjQgMzY4LjQgNDMxLjkgMjg4IDQ0NS4zVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDUuM0MxNDMuNiA0MzEuOSA4MC4xIDM2OC40IDY2LjcgMjg4SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDY2LjdDODAuMSAxNDMuNiAxNDMuNiA4MC4xIDIyNCA2Ni43VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0xMjggMjU2YTEyOCAxMjggMCAxIDAgMjU2IDAgMTI4IDEyOCAwIDEgMCAtMjU2IDB6bTEyOC04MGE4MCA4MCAwIDEgMSAwIDE2MCA4MCA4MCAwIDEgMSAwLTE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9jYXRpb25Eb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE1LjcgNDk5LjJDMjY3IDQzNSAzODQgMjc5LjQgMzg0IDE5MkMzODQgODYgMjk4IDAgMTkyIDBTMCA4NiAwIDE5MmMwIDg3LjQgMTE3IDI0MyAxNjguMyAzMDcuMmMxMi4zIDE1LjMgMzUuMSAxNS4zIDQ3LjQgMHpNMTkyIDEyOGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9jYXRpb25QaW5Mb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNS43IDQ5OS4yYzExLTEzLjggMjUuMS0zMS43IDQwLjMtNTIuM1YzNTJjMC0yMy43IDEyLjktNDQuNCAzMi01NS40VjI3MmMwLTU1LjYgNDAuNS0xMDEuNyA5My42LTExMC41QzM2NyA3MCAyODcuNyAwIDE5MiAwQzg2IDAgMCA4NiAwIDE5MmMwIDg3LjQgMTE3IDI0MyAxNjguMyAzMDcuMmMxMi4zIDE1LjMgMzUuMSAxNS4zIDQ3LjQgMHpNMTkyIDEyOGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNNDAwIDI0MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OEgzNjhWMjcyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tODAgMzJ2NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMyVjI3MmMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9jYXRpb25QaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDE5MmMwIDg3LjQtMTE3IDI0My0xNjguMyAzMDcuMmMtMTIuMyAxNS4zLTM1LjEgMTUuMy00Ny40IDBDMTE3IDQzNSAwIDI3OS40IDAgMTkyQzAgODYgODYgMCAxOTIgMFMzODQgODYgMzg0IDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9ja09wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDE0NGMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwdjQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTQ0QzU3NiA2NC41IDUxMS41IDAgNDMyIDBTMjg4IDY0LjUgMjg4IDE0NHY0OEg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFYyNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzUyVjE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgMTQ0djQ4SDMwNFYxNDRjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODB6TTgwIDE5MlYxNDRDODAgNjQuNSAxNDQuNSAwIDIyNCAwczE0NCA2NC41IDE0NCAxNDR2NDhoMTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYyNTZjMC0zNS4zIDI4LjctNjQgNjQtNjRIODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvY3VzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTIgMzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMTZjOTguNyAwIDE4MC42IDcxLjQgMTk3IDE2NS40Yy05LTMuNS0xOC44LTUuNC0yOS01LjRINDMxLjhsLTQxLjgtOTcuNWMtMy40LTcuOS0xMC44LTEzLjQtMTkuMy0xNC40cy0xNyAyLjctMjIuMSA5LjZsLTQwLjkgNTUuNS0yMS43LTUwLjdjLTMuMy03LjgtMTAuNS0xMy4yLTE4LjktMTQuM3MtMTYuNyAyLjMtMjIgOC45bC0yNDAgMzA0Yy04LjIgMTAuNC02LjQgMjUuNSA0IDMzLjdzMjUuNSA2LjQgMzMuNy00bDc5LjQtMTAwLjUgNDMgMTYuNC00MC41IDU1Yy03LjkgMTAuNy01LjYgMjUuNyA1LjEgMzMuNnMyNS43IDUuNiAzMy42LTUuMUwyMTUuMSA0MDBoNzQuNWwtMjkuMyA0Mi4zYy03LjUgMTAuOS00LjggMjUuOCA2LjEgMzMuNHMyNS44IDQuOCAzMy40LTYuMUwzNDggNDAwaDgwLjRsMzguOCA2Ny45YzYuNiAxMS41IDIxLjIgMTUuNSAzMi43IDguOXMxNS41LTIxLjIgOC45LTMyLjdMNDgzLjYgNDAwSDQ5NmM0NC4xIDAgNzkuOC0zNS43IDgwLTc5LjdjMC0uMSAwLS4yIDAtLjNWMjgwQzU3NiAxNDMgNDY1IDMyIDMyOCAzMkgzMTJ6bTUwLjUgMTY4bDE3LjEgNDBIMzMzbDI5LjUtNDB6bS04Ny43IDM4LjFsLTEuNCAxLjlIMjI1LjFsMzIuNy00MS41IDE2LjkgMzkuNXpNODguOCAyNDBDNTcuNCAyNDAgMzIgMjY1LjQgMzIgMjk2LjhjMCAxNS41IDYuMyAzMCAxNi45IDQwLjRMMTI2LjcgMjQwSDg4Ljh6TTQ5NiAyODhhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMdW5nc1ZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjE1Ni4yYy04LjUtNy42LTE5LjctMTIuMi0zMi0xMi4ycy0yMy41IDQuNi0zMiAxMi4yVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek00NDQuNSAxOTUuNWMtMTYuNC0xNi40LTQxLjgtMTguNS02MC41LTYuMVYxNjUuM0MzODQgMTI3IDQxNSA5NiA0NTMuMyA5NmMyMS43IDAgNDIuOCAxMC4yIDU1LjggMjguOGMxNS40IDIyLjEgNDQuMyA2NS40IDcxIDExNi45YzI2LjUgNTAuOSA1Mi40IDExMi41IDU5LjYgMTcwLjNjLjIgMS4zIC4yIDIuNiAuMiA0djdjMCA0OS4xLTM5LjggODktODkgODljLTcuMyAwLTE0LjUtLjktMjEuNi0yLjdsLTcyLjctMTguMmMtMjAuOS01LjItMzguNy0xNy4xLTUxLjUtMzIuOWMxNCAxLjUgMjguNS0zIDM5LjItMTMuOGwtMjIuNi0yMi42IDIyLjYgMjIuNmMxOC43LTE4LjcgMTguNy00OS4xIDAtNjcuOWMtMS4xLTEuMS0xLjQtMi0xLjUtMi41Yy0uMS0uOC0uMS0xLjggLjQtMi45czEuMi0xLjkgMS44LTIuM2MuNS0uMyAxLjMtLjggMi45LS44YzI2LjUgMCA0OC0yMS41IDQ4LTQ4cy0yMS41LTQ4LTQ4LTQ4Yy0xLjYgMC0yLjQtLjQtMi45LS44Yy0uNi0uNC0xLjMtMS4yLTEuOC0yLjNzLS41LTIuMi0uNC0yLjljLjEtLjYgLjQtMS40IDEuNS0yLjVjMTguNy0xOC43IDE4LjctNDkuMSAwLTY3Ljl6TTQyMS44IDQyMS44Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMEMzNzUuOSAzOTguNSAzMzYgNDE1IDMzNiA0NDhjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZjMC0zMy0zOS45LTQ5LjUtNjMuMi0yNi4yYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42QzI0MS41IDM3NS45IDIyNSAzMzYgMTkyIDMzNmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmMzMyAwIDQ5LjUtMzkuOSAyNi4yLTYzLjJjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEMyNjQuMSAyNDEuNSAzMDQgMjI1IDMwNCAxOTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmMwIDMzIDM5LjkgNDkuNSA2My4yIDI2LjJjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42QzM5OC41IDI2NC4xIDQxNSAzMDQgNDQ4IDMwNGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmMtMzMgMC00OS41IDM5LjktMjYuMiA2My4yYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42ek0xODMuMyA0OTEuMmwtNzIuNyAxOC4yYy03LjEgMS44LTE0LjMgMi43LTIxLjYgMi43Yy00OS4xIDAtODktMzkuOC04OS04OXYtN2MwLTEuMyAuMS0yLjcgLjItNGM3LjItNTcuOSAzMy4xLTExOS40IDU5LjYtMTcwLjNjMjYuOC01MS41IDU1LjYtOTQuOCA3MS0xMTYuOWMxMy0xOC42IDM0LTI4LjggNTUuOC0yOC44QzIyNSA5NiAyNTYgMTI3IDI1NiAxNjUuM3YyNC4xYy0xOC42LTEyLjQtNDQtMTAuMy02MC41IDYuMWMtMTguNyAxOC43LTE4LjcgNDkuMSAwIDY3LjljMS4xIDEuMSAxLjQgMiAxLjUgMi41Yy4xIC44IC4xIDEuOC0uNCAyLjlzLTEuMiAxLjktMS44IDIuM2MtLjUgLjMtMS4zIC44LTIuOSAuOGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhzMjEuNSA0OCA0OCA0OGMxLjYgMCAyLjQgLjQgMi45IC44Yy42IC40IDEuMyAxLjIgMS44IDIuM3MuNSAyLjIgLjQgMi45Yy0uMSAuNi0uNCAxLjQtMS41IDIuNWMtMTguNyAxOC43LTE4LjcgNDkuMSAwIDY3LjljMTAuNyAxMC43IDI1LjMgMTUuMyAzOS4yIDEzLjhjLTEyLjggMTUuOS0zMC42IDI3LjctNTEuNSAzMi45ek0yOTYgMzIwYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptNzIgMzJhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTHVuZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMTY0LjFjMCAxNi40IDguNCAzMS43IDIyLjIgNDAuNWw5LjggNi4yVjE2NS4zQzM4NCAxMjcgNDE1IDk2IDQ1My4zIDk2YzIxLjcgMCA0Mi44IDEwLjIgNTUuOCAyOC44YzE1LjQgMjIuMSA0NC4zIDY1LjQgNzEgMTE2LjljMjYuNSA1MC45IDUyLjQgMTEyLjUgNTkuNiAxNzAuM2MuMiAxLjMgLjIgMi42IC4yIDR2N2MwIDQ5LjEtMzkuOCA4OS04OSA4OWMtNy4zIDAtMTQuNS0uOS0yMS42LTIuN2wtNzIuNy0xOC4yQzQxNCA0ODAuNSAzODQgNDQyLjEgMzg0IDM5OFYzMjVsOTAuNSA1Ny42YzcuNSA0LjcgMTcuMyAyLjUgMjIuMS00LjlzMi41LTE3LjMtNC45LTIyLjFMMzg0IDI4Ny4xdi0uNGwtNDQuMS0yOC4xYy03LjMtNC42LTEzLjktMTAuMS0xOS45LTE2LjFjLTUuOSA2LTEyLjYgMTEuNS0xOS45IDE2LjFMMjU2IDI4Ni43IDE2MS4yIDM0N2wtMTMuNSA4LjZjMCAwIDAgMC0uMSAwYy03LjQgNC44LTkuNiAxNC42LTQuOCAyMi4xYzQuNyA3LjUgMTQuNiA5LjcgMjIuMSA0LjlsOTEuMS01OFYzOThjMCA0NC4xLTMwIDgyLjUtNzIuNyA5My4xbC03Mi43IDE4LjJjLTcuMSAxLjgtMTQuMyAyLjctMjEuNiAyLjdjLTQ5LjEgMC04OS0zOS44LTg5LTg5di03YzAtMS4zIC4xLTIuNyAuMi00YzcuMi01Ny45IDMzLjEtMTE5LjQgNTkuNi0xNzAuM2MyNi44LTUxLjUgNTUuNi05NC44IDcxLTExNi45YzEzLTE4LjYgMzQtMjguOCA1NS44LTI4LjhDMjI1IDk2IDI1NiAxMjcgMjU2IDE2NS4zdjQ1LjVsOS44LTYuMmMxMy44LTguOCAyMi4yLTI0LjEgMjIuMi00MC41VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjcgMzMuNGMxMy41LTQuMSAyOC4xIDEuMSAzNS45IDEyLjlMMjI0IDI5NC4zIDM4OS40IDQ2LjJjNy44LTExLjcgMjIuNC0xNyAzNS45LTEyLjlTNDQ4IDQ5LjkgNDQ4IDY0VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNjkuN0wyNTAuNiAzNjkuOGMtNS45IDguOS0xNS45IDE0LjItMjYuNiAxNC4ycy0yMC43LTUuMy0yNi42LTE0LjJMNjQgMTY5LjdWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjY0QzAgNDkuOSA5LjIgMzcuNSAyMi43IDMzLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hZ25ldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDE2MHY5NkMwIDM3OS43IDEwMC4zIDQ4MCAyMjQgNDgwczIyNC0xMDAuMyAyMjQtMjI0VjE2MEgzMjB2OTZjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZWMTYwSDB6bTAtMzJIMTI4VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjR2NjR6bTMyMCAwSDQ0OFY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzNTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWduaWZ5aW5nR2xhc3NBcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAyMDhjMCA0NS45LTE0LjkgODguMy00MCAxMjIuN0w1MDIuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzMzAuNyAzNzZjLTM0LjQgMjUuMi03Ni44IDQwLTEyMi43IDQwQzkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwUzQxNiA5My4xIDQxNiAyMDh6TTI0MSAxMTljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsMzEgMzFIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDIzOC4xbC0zMSAzMWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDcyLTcyYzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC03Mi03MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFnbmlmeWluZ0dsYXNzQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDIwOGMwIDQ1LjktMTQuOSA4OC4zLTQwIDEyMi43TDUwMi42IDQ1Ny40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDMzMC43IDM3NmMtMzQuNCAyNS4yLTc2LjggNDAtMTIyLjcgNDBDOTMuMSA0MTYgMCAzMjIuOSAwIDIwOFM5My4xIDAgMjA4IDBTNDE2IDkzLjEgNDE2IDIwOHptLTMxMiA4djY0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC02NGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHptODAtOTZWMjgwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0em04MCA2NHY5NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjE4NGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFnbmlmeWluZ0dsYXNzRG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAyMDhjMCA0NS45LTE0LjkgODguMy00MCAxMjIuN0w1MDIuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzMzAuNyAzNzZjLTM0LjQgMjUuMi03Ni44IDQwLTEyMi43IDQwQzkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwUzQxNiA5My4xIDQxNiAyMDh6TTIyOCAxMDRjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwdjE0Yy03LjYgMS43LTE1LjIgNC40LTIyLjIgOC41Yy0xMy45IDguMy0yNS45IDIyLjgtMjUuOCA0My45Yy4xIDIwLjMgMTIgMzMuMSAyNC43IDQwLjdjMTEgNi42IDI0LjcgMTAuOCAzNS42IDE0bDEuNyAuNWMxMi42IDMuOCAyMS44IDYuOCAyOCAxMC43YzUuMSAzLjIgNS44IDUuNCA1LjkgOC4yYy4xIDUtMS44IDgtNS45IDEwLjVjLTUgMy4xLTEyLjkgNS0yMS40IDQuN2MtMTEuMS0uNC0yMS41LTMuOS0zNS4xLTguNWMtMi4zLS44LTQuNy0xLjYtNy4yLTIuNGMtMTAuNS0zLjUtMjEuOCAyLjItMjUuMyAxMi42czIuMiAyMS44IDEyLjYgMjUuM2MxLjkgLjYgNCAxLjMgNi4xIDIuMWwwIDAgMCAwYzguMyAyLjkgMTcuOSA2LjIgMjguMiA4LjRWMzEyYzAgMTEgOSAyMCAyMCAyMHMyMC05IDIwLTIwVjI5OC4yYzgtMS43IDE2LTQuNSAyMy4yLTljMTQuMy04LjkgMjUuMS0yNC4xIDI0LjgtNDVjLS4zLTIwLjMtMTEuNy0zMy40LTI0LjYtNDEuNmMtMTEuNS03LjItMjUuOS0xMS42LTM3LjEtMTVsLS43LS4yYy0xMi44LTMuOS0yMS45LTYuNy0yOC4zLTEwLjVjLTUuMi0zLjEtNS4zLTQuOS01LjMtNi43YzAtMy43IDEuNC02LjUgNi4yLTkuM2M1LjQtMy4yIDEzLjYtNS4xIDIxLjUtNWM5LjYgLjEgMjAuMiAyLjIgMzEuMiA1LjJjMTAuNyAyLjggMjEuNi0zLjUgMjQuNS0xNC4ycy0zLjUtMjEuNi0xNC4yLTI0LjVjLTYuNS0xLjctMTMuNy0zLjQtMjEuMS00LjdWMTA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWduaWZ5aW5nR2xhc3NMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMjA4YzAgNDUuOS0xNC45IDg4LjMtNDAgMTIyLjdMNTAyLjYgNDU3LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMMzMwLjcgMzc2Yy0zNC40IDI1LjItNzYuOCA0MC0xMjIuNyA0MEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMFM0MTYgOTMuMSA0MTYgMjA4ek0yODggMTc2YzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwYzAgNDguOCA0Ni41IDExMS42IDY4LjYgMTM4LjZjNiA3LjMgMTYuOCA3LjMgMjIuNyAwYzIyLjEtMjcgNjguNi04OS44IDY4LjYtMTM4LjZ6bS0xMTIgMGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWduaWZ5aW5nR2xhc3NNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMjA4YzAgNDUuOS0xNC45IDg4LjMtNDAgMTIyLjdMNTAyLjYgNDU3LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMMzMwLjcgMzc2Yy0zNC40IDI1LjItNzYuOCA0MC0xMjIuNyA0MEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMFM0MTYgOTMuMSA0MTYgMjA4ek0xMzYgMTg0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDI4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hZ25pZnlpbmdHbGFzc1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDIwOGMwIDQ1LjktMTQuOSA4OC4zLTQwIDEyMi43TDUwMi42IDQ1Ny40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDMzMC43IDM3NmMtMzQuNCAyNS4yLTc2LjggNDAtMTIyLjcgNDBDOTMuMSA0MTYgMCAzMjIuOSAwIDIwOFM5My4xIDAgMjA4IDBTNDE2IDkzLjEgNDE2IDIwOHpNMTg0IDI5NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjIzMmg2NGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyMzJWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djY0SDEyMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg2NHY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFnbmlmeWluZ0dsYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAyMDhjMCA0NS45LTE0LjkgODguMy00MCAxMjIuN0w1MDIuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzMzAuNyAzNzZjLTM0LjQgMjUuMi03Ni44IDQwLTEyMi43IDQwQzkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwUzQxNiA5My4xIDQxNiAyMDh6TTIwOCAzNTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYW5hdFNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY5OC43QzY5LjIgMTEzLjkgMCAxOTIuOSAwIDI4OFY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyODhjMC01OS42IDQwLjgtMTA5LjggOTYtMTI0VjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE2NGM1NS4yIDE0LjIgOTYgNjQuMyA5NiAxMjRWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjg4YzAtOTUuMS02OS4yLTE3NC4xLTE2MC0xODkuM1Y2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFwTG9jYXRpb25Eb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA4IDEyMGMwIDU0LjYtNzMuMSAxNTEuOS0xMDUuMiAxOTJjLTcuNyA5LjYtMjIgOS42LTI5LjYgMEMyNDEuMSAyNzEuOSAxNjggMTc0LjYgMTY4IDEyMEMxNjggNTMuNyAyMjEuNyAwIDI4OCAwczEyMCA1My43IDEyMCAxMjB6bTggODAuNGMzLjUtNi45IDYuNy0xMy44IDkuNi0yMC42Yy41LTEuMiAxLTIuNSAxLjUtMy43bDExNi00Ni40QzU1OC45IDEyMy40IDU3NiAxMzUgNTc2IDE1MlY0MjIuOGMwIDkuOC02IDE4LjYtMTUuMSAyMi4zTDQxNiA1MDNWMjAwLjR6TTEzNy42IDEzOC4zYzIuNCAxNC4xIDcuMiAyOC4zIDEyLjggNDEuNWMyLjkgNi44IDYuMSAxMy43IDkuNiAyMC42VjQ1MS44TDMyLjkgNTAyLjdDMTcuMSA1MDkgMCA0OTcuNCAwIDQ4MC40VjIwOS42YzAtOS44IDYtMTguNiAxNS4xLTIyLjNsMTIyLjYtNDl6TTMyNy44IDMzMmMxMy45LTE3LjQgMzUuNy00NS43IDU2LjItNzdWNTA0LjNMMTkyIDQ0OS40VjI1NWMyMC41IDMxLjMgNDIuMyA1OS42IDU2LjIgNzdjMjAuNSAyNS42IDU5LjEgMjUuNiA3OS42IDB6TTI4OCAxNTJhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXBMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDIuOCAzMTJDMzM0LjkgMjcxLjkgNDA4IDE3NC42IDQwOCAxMjBDNDA4IDUzLjcgMzU0LjMgMCAyODggMFMxNjggNTMuNyAxNjggMTIwYzAgNTQuNiA3My4xIDE1MS45IDEwNS4yIDE5MmM3LjcgOS42IDIyIDkuNiAyOS42IDB6TTQxNiA1MDNsMTQ0LjktNThjOS4xLTMuNiAxNS4xLTEyLjUgMTUuMS0yMi4zVjE1MmMwLTE3LTE3LjEtMjguNi0zMi45LTIyLjNsLTExNiA0Ni40Yy0uNSAxLjItMSAyLjUtMS41IDMuN2MtMi45IDYuOC02LjEgMTMuNy05LjYgMjAuNlY1MDN6TTE1LjEgMTg3LjNDNiAxOTEgMCAxOTkuOCAwIDIwOS42VjQ4MC40YzAgMTcgMTcuMSAyOC42IDMyLjkgMjIuM0wxNjAgNDUxLjhWMjAwLjRjLTMuNS02LjktNi43LTEzLjgtOS42LTIwLjZjLTUuNi0xMy4yLTEwLjQtMjcuNC0xMi44LTQxLjVsLTEyMi42IDQ5ek0zODQgMjU1Yy0yMC41IDMxLjMtNDIuMyA1OS42LTU2LjIgNzdjLTIwLjUgMjUuNi01OS4xIDI1LjYtNzkuNiAwYy0xMy45LTE3LjQtMzUuNy00NS43LTU2LjItNzdWNDQ5LjRsMTkyIDU0LjlWMjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXBQaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTQ0YTE0NCAxNDQgMCAxIDEgMjg4IDBBMTQ0IDE0NCAwIDEgMSAxNiAxNDR6TTE2MCA4MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmMtNTMgMC05NiA0My05NiA5NmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2YzAtMzUuMyAyOC43LTY0IDY0LTY0ek0xMjggNDgwVjMxNy4xYzEwLjQgMS45IDIxLjEgMi45IDMyIDIuOXMyMS42LTEgMzItMi45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCA0NzYuMUwxOTIgNDIxLjJWMzUuOUwzODQgOTAuOFY0NzYuMXptMzItMS4yVjg4LjRMNTQzLjEgMzcuNWMxNS44LTYuMyAzMi45IDUuMyAzMi45IDIyLjNWMzk0LjZjMCA5LjgtNiAxOC42LTE1LjEgMjIuM0w0MTYgNDc0Ljh6TTE1LjEgOTUuMUwxNjAgMzcuMlY0MjMuNkwzMi45IDQ3NC41QzE3LjEgNDgwLjggMCA0NjkuMiAwIDQ1Mi4yVjExNy40YzAtOS44IDYtMTguNiAxNS4xLTIyLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcmtlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODEgMzFDNDQ1LjEtNC44IDM4Ni45LTQuOCAzNTEgMzFsLTE1IDE1TDMyMi45IDMzQzI5NC44IDQuOSAyNDkuMiA0LjkgMjIxLjEgMzNMMTM1IDExOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwTDI1NSA2Ni45YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwTDMwMi4xIDgwIDE4Ni4zIDE5NS43IDMxNi4zIDMyNS43IDQ4MSAxNjFjMzUuOS0zNS45IDM1LjktOTQuMSAwLTEyOS45ek0yOTMuNyAzNDguM0wxNjMuNyAyMTguMyA5OS41IDI4Mi41Yy00OCA0OC04MC44IDEwOS4yLTk0LjEgMTc1LjhsLTUgMjVjLTEuNiA3LjkgLjkgMTYgNi42IDIxLjdzMTMuOCA4LjEgMjEuNyA2LjZsMjUtNWM2Ni42LTEzLjMgMTI3LjgtNDYuMSAxNzUuOC05NC4xbDY0LjItNjQuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFyc0FuZFZlbnVzQnVyc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0IDBjLTkuNyAwLTE4LjUgNS44LTIyLjIgMTQuOHMtMS43IDE5LjMgNS4yIDI2LjJsMzkgMzktMjIuMiAyMi4yQzQ3NS45IDc4LjQgNDM5LjYgNjQgNDAwIDY0Yy04OC40IDAtMTYwIDcxLjYtMTYwIDE2MGMwIDgwLjIgNTkgMTQ2LjYgMTM2IDE1OC4yVjQwOEgzNTJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMjR2MzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0NTZoMjRjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRINDI0VjM4Mi4yYzc3LTExLjYgMTM2LTc4IDEzNi0xNTguMmMwLTMxLjQtOS02MC43LTI0LjctODUuNEw1NjAgMTEzLjlsMzkgMzljNi45IDYuOSAxNy4yIDguOSAyNi4yIDUuMnMxNC44LTEyLjUgMTQuOC0yMi4yVjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0SDUwNHpNNDAwIDEyOGE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnpNMTkwLjkgMTguMUMxODguNCAxMiAxODIuNiA4IDE3NiA4cy0xMi40IDQtMTQuOSAxMC4xbC0yOS40IDc0TDU1LjYgNjguOWMtNi4zLTEuOS0xMy4xIC4yLTE3LjIgNS4zcy00LjYgMTIuMi0xLjQgMTcuOWwzOS41IDY5LjFMMTAuOSAyMDYuNGMtNS40IDMuNy04IDEwLjMtNi41IDE2LjdzNi43IDExLjIgMTMuMSAxMi4ybDc4LjcgMTIuMkw5MC42IDMyN2MtLjUgNi41IDMuMSAxMi43IDkgMTUuNXMxMi45IDEuOCAxNy44LTIuNkwxNzYgMjg2LjFsNTguNiA1My45YzQuMSAzLjggOS45IDUuMSAxNS4yIDMuNkMyMjMuNiAzMTAuOCAyMDggMjY5LjIgMjA4IDIyNGMwLTYwLjggMjguMy0xMTUgNzIuNC0xNTAuMkwyMjAuMyA5Mi4xbC0yOS40LTc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJzQW5kVmVudXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM3LjggMTQuOEMzNDEuNSA1LjggMzUwLjMgMCAzNjAgMEg0NzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRWMTM2YzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTM5LTM5LTI0LjcgMjQuN0M0MDcgMTYzLjMgNDE2IDE5Mi42IDQxNiAyMjRjMCA4MC4yLTU5IDE0Ni42LTEzNiAxNTguMlY0MDhoMjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjgwdjMyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjQ1NkgyMDhjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoMjRWMzgyLjJDMTU1IDM3MC42IDk2IDMwNC4yIDk2IDIyNGMwLTg4LjQgNzEuNi0xNjAgMTYwLTE2MGMzOS42IDAgNzUuOSAxNC40IDEwMy44IDM4LjJMMzgyLjEgODAgMzQzIDQxYy02LjktNi45LTguOS0xNy4yLTUuMi0yNi4yek00NDggNDhsMCAwaDB2MHpNMzUyIDIyNGE5NiA5NiAwIDEgMCAtMTkyIDAgOTYgOTYgMCAxIDAgMTkyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcnNEb3VibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEyIDMyYy05LjcgMC0xOC41IDUuOC0yMi4yIDE0LjhzLTEuNyAxOS4zIDUuMiAyNi4ybDMzLjQgMzMuNEwyNzUuOCAxNTljLTI4LjQtMTkuNS02Mi43LTMxLTk5LjgtMzFDNzguOCAxMjggMCAyMDYuOCAwIDMwNHM3OC44IDE3NiAxNzYgMTc2czE3Ni03OC44IDE3Ni0xNzZjMC0zNy0xMS40LTcxLjQtMzEtOTkuOGw1Mi42LTUyLjZMNDA3IDE4NWM2LjkgNi45IDE3LjIgOC45IDI2LjIgNS4yczE0LjgtMTIuNSAxNC44LTIyLjJWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRIMzEyem04OCA0OGgwdjBsMCAwek02NCAzMDRhMTEyIDExMiAwIDEgMSAyMjQgMEExMTIgMTEyIDAgMSAxIDY0IDMwNHpNMzY4IDQ4MGM5Ny4yIDAgMTc2LTc4LjggMTc2LTE3NmMwLTM3LTExLjQtNzEuNC0zMS05OS44bDUyLjYtNTIuNkw1OTkgMTg1YzYuOSA2LjkgMTcuMiA4LjkgMjYuMiA1LjJzMTQuOC0xMi41IDE0LjgtMjIuMlY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEg1MDRjLTkuNyAwLTE4LjUgNS44LTIyLjIgMTQuOGMtMS4yIDIuOS0xLjggNi0xLjggOWwwIC4ydi4yYzAgNi4yIDIuNSAxMi4yIDcgMTYuOGwzMy40IDMzLjRMNDgwIDE0Ni43VjE2OGMwIDIyLjYtMTMuNiA0My4xLTM0LjYgNTEuN2MtLjggLjMtMS43IC43LTIuNSAxQzQ2NS43IDI0MS4yIDQ4MCAyNzAuOSA0ODAgMzA0YzAgNjEuOS01MC4xIDExMi0xMTIgMTEyYy01LjQgMC0xMC44LS40LTE2LTEuMWMtMTIuOSAyMC40LTI5LjEgMzguMy00OC4xIDUzLjFjMTkuOCA3LjggNDEuNCAxMiA2NCAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFyc1N0cm9rZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCAzNjhhMTEyIDExMiAwIDEgMCAwLTIyNCAxMTIgMTEyIDAgMSAwIDAgMjI0em0xNzQuNC04OEMzNzAuNyAzNjUuOCAyOTcuMSA0MzIgMjA4IDQzMmMtOTcuMiAwLTE3Ni03OC44LTE3Ni0xNzZzNzguOC0xNzYgMTc2LTE3NmM4OS4xIDAgMTYyLjcgNjYuMiAxNzQuNCAxNTJINDE2VjE3NmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djU2aDMyVjE3NmMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJzMTkuMy0xLjcgMjYuMiA1LjJsODAgODBjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTgwIDgwYy02LjkgNi45LTE3LjIgOC45LTI2LjIgNS4ycy0xNC44LTEyLjUtMTQuOC0yMi4yVjI4MEg0NjR2NTZjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjgwSDM4Mi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJzU3Ryb2tlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ4LjcgNC43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwbDY0IDY0YzQuNiA0LjYgNS45IDExLjUgMy41IDE3LjRzLTguMyA5LjktMTQuOCA5LjlIMTg0djI0aDMyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDE4NHYyNGMwIC42IDAgMS4yLS4xIDEuOGM3NyAxMS42IDEzNi4xIDc4IDEzNi4xIDE1OC4yYzAgODguNC03MS42IDE2MC0xNjAgMTYwUzAgNDQwLjQgMCAzNTJjMC04MC4yIDU5LjEtMTQ2LjcgMTM2LjEtMTU4LjJjMC0uNi0uMS0xLjItLjEtMS44VjE2OEgxMDRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoMzJWOTZIOTZjLTYuNSAwLTEyLjMtMy45LTE0LjgtOS45cy0xLjEtMTIuOSAzLjUtMTcuNGw2NC02NHpNMjU2IDM1MkE5NiA5NiAwIDEgMCA2NCAzNTJhOTYgOTYgMCAxIDAgMTkyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcnNTdHJva2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc2IDBjLTkuNyAwLTE4LjUgNS44LTIyLjIgMTQuOHMtMS43IDE5LjMgNS4yIDI2LjJsMzMuNCAzMy40TDM3MC4zIDk2LjQgMzQ1IDcxYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDI1LjQgMjUuNEwzMDcuOCAxNTljLTI4LjQtMTkuNS02Mi43LTMxLTk5LjgtMzFjLTk3LjIgMC0xNzYgNzguOC0xNzYgMTc2czc4LjggMTc2IDE3NiAxNzZzMTc2LTc4LjggMTc2LTE3NmMwLTM3LTExLjQtNzEuNC0zMS05OS44bDI4LjYtMjguNkw0MDcgMjAxYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtMjUuNC0yNS40IDIyLjEtMjIuMUw0NzEgMTUzYzYuOSA2LjkgMTcuMiA4LjkgMjYuMiA1LjJzMTQuOC0xMi41IDE0LjgtMjIuMlYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgzNzZ6bTg4IDQ4aDB2MGwwIDB6TTk2IDMwNGExMTIgMTEyIDAgMSAxIDIyNCAwQTExMiAxMTIgMCAxIDEgOTYgMzA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OS44IDQ2LjhjMy43LTkgMTIuNS0xNC44IDIyLjItMTQuOEg0MjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRWMTY4YzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTMzLjQtMzMuNEwzMjEgMjA0LjJjMTkuNSAyOC40IDMxIDYyLjcgMzEgOTkuOGMwIDk3LjItNzguOCAxNzYtMTc2IDE3NlMwIDQwMS4yIDAgMzA0czc4LjgtMTc2IDE3Ni0xNzZjMzcgMCA3MS40IDExLjQgOTkuOCAzMWw1Mi42LTUyLjZMMjk1IDczYy02LjktNi45LTguOS0xNy4yLTUuMi0yNi4yek00MDAgODBsMCAwaDB2MHpNMTc2IDQxNmExMTIgMTEyIDAgMSAwIDAtMjI0IDExMiAxMTIgMCAxIDAgMCAyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcnRpbmlHbGFzc0NpdHJ1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIgMjQwYzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2Yy0zNS41IDAtNjYuNiAxOS4zLTgzLjIgNDhIMjk2LjJDMzE2IDQwLjEgMzY5LjMgMCA0MzIgMGM3OS41IDAgMTQ0IDY0LjUgMTQ0IDE0NHMtNjQuNSAxNDQtMTQ0IDE0NGMtMjcuNyAwLTUzLjUtNy44LTc1LjUtMjEuM2wzNS40LTM1LjRjMTIuMiA1LjYgMjUuOCA4LjcgNDAuMSA4Ljd6TTEuOCAxNDIuOEM1LjUgMTMzLjggMTQuMyAxMjggMjQgMTI4SDM5MmM5LjcgMCAxOC41IDUuOCAyMi4yIDE0LjhzMS43IDE5LjMtNS4yIDI2LjJsLTE3NyAxNzdWNDY0aDY0YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDIwOCAxMjBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoNjRWMzQ1LjlMNyAxNjljLTYuOS02LjktOC45LTE3LjItNS4yLTI2LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcnRpbmlHbGFzc0VtcHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDBDMTkuMSAwIDcuNCA3LjggMi40IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45TDIyNCAyNjkuM1Y0NDhIMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDk2IDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI4OFYyNjkuM0w1MDIuNiA1NC42YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45UzQ5Mi45IDAgNDgwIDBIMzJ6TTI1NiAyMTAuN0wxMDkuMyA2NEg0MDIuN0wyNTYgMjEwLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcnRpbmlHbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAwQzE5LjEgMCA3LjQgNy44IDIuNCAxOS44cy0yLjIgMjUuNyA2LjkgMzQuOUwyMjQgMjY5LjNWNDQ4SDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NiA5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyODhWMjY5LjNMNTAyLjYgNTQuNmM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOVM0OTIuOSAwIDQ4MCAwSDMyek0xNzMuMyAxMjhsLTY0LTY0SDQwMi43bC02NCA2NEgxNzMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFza0ZhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDY0Yy0yNy4yIDAtNTMuOCA4LTc2LjQgMjMuMWwtMzcuMSAyNC44Yy0xNS44IDEwLjUtMzQuMyAxNi4xLTUzLjMgMTYuMUgxNDQgMTI4IDU2Yy0zMC45IDAtNTYgMjUuMS01NiA1NnY4NWMwIDU1LjEgMzcuNSAxMDMuMSA5MC45IDExNi40bDEwOCAyN0MyMzMuOCA0MzUgMjc1LjQgNDQ4IDMyMCA0NDhzODYuMi0xMyAxMjEuMS0zNS41bDEwOC0yN0M2MDIuNSAzNzIuMSA2NDAgMzI0LjEgNjQwIDI2OVYxODRjMC0zMC45LTI1LjEtNTYtNTYtNTZINTEyIDQ5NmgtOS4yYy0xOSAwLTM3LjUtNS42LTUzLjMtMTYuMUwzOTYuNCA4Ny4xQzM3My44IDcyIDM0Ny4yIDY0IDMyMCA2NHpNMTMyLjMgMzQ2LjNsLTI5LjgtNy40QzcwLjUgMzMwLjkgNDggMzAyLjEgNDggMjY5VjE4NGMwLTQuNCAzLjYtOCA4LThIOTZ2NDhjMCA0NS4xIDEzLjQgODcuMiAzNi4zIDEyMi4zem00MDUuMS03LjRsLTI5LjggNy40YzIzLTM1LjIgMzYuMy03Ny4yIDM2LjMtMTIyLjNWMTc2aDQwYzQuNCAwIDggMy42IDggOHY4NWMwIDMzLTIyLjUgNjEuOC01NC41IDY5Ljl6TTE5MiAyMDhjMC04LjggNy4yLTE2IDE2LTE2SDQzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyMDhjLTguOCAwLTE2LTcuMi0xNi0xNnptMTYgNDhINDMyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDIwOGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMTYgODBjMC04LjggNy4yLTE2IDE2LTE2SDQwMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyNDBjLTguOCAwLTE2LTcuMi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFza1ZlbnRpbGF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU5LjEgMTc2QzEzOS40IDIxOS4yIDEyOCAyNjQuNyAxMjggMzAwLjhjMCAxNS45IDIuMiAzMS40IDYuMyA0NmwtMzEuOC03LjlDNzAuNSAzMzAuOSA0OCAzMDIuMSA0OCAyNjlWMTg0YzAtNC40IDMuNi04IDgtOEgxNTkuMXptMjYtNDhINTZjLTMwLjkgMC01NiAyNS4xLTU2IDU2djg1YzAgNTUuMSAzNy41IDEwMy4xIDkwLjkgMTE2LjRsNzEuMyAxNy44YzIyLjcgMzAuNSA1NS40IDU0LjEgOTMuOCA2Ni42VjM5My4zYy0xOS43LTE2LjQtMzItNDAuMy0zMi02Ni45YzAtNDkuNSA0My0xMzQuNCA5Ni0xMzQuNGM1Mi41IDAgOTYgODQuOSA5NiAxMzQuNGMwIDI2LjctMTIuNCA1MC40LTMyIDY2Ljh2NzYuNmMzOC0xMi42IDcwLjYtMzYgOTMuNS02Ni40bDcxLjYtMTcuOUM2MDIuNSAzNzIuMSA2NDAgMzI0LjEgNjQwIDI2OVYxODRjMC0zMC45LTI1LjEtNTYtNTYtNTZINDU0LjVDNDE5LjcgNzMuOCAzNzIuMSAzMiAzMjAgMzJjLTUyLjYgMC0xMDAuMiA0MS44LTEzNC45IDk2em0yOTUuNiA0OEg1ODRjNC40IDAgOCAzLjYgOCA4djg1YzAgMzMtMjIuNSA2MS44LTU0LjUgNjkuOWwtMzEuOCA4YzQuMi0xNC43IDYuNC0zMC4xIDYuNC00Ni4xYzAtMzYuMS0xMS42LTgxLjYtMzEuMy0xMjQuOHpNMjg4IDMyMFY1MTJoNjRWMzIwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCA2NEM2NCA2NCAwIDE2MCAwIDI3MlM4MCA0NDggMTc2IDQ0OGg4LjRjMjQuMiAwIDQ2LjQtMTMuNyA1Ny4yLTM1LjRsMjMuMi00Ni4zYzQuNC04LjggMTMuMy0xNC4zIDIzLjItMTQuM3MxOC44IDUuNSAyMy4yIDE0LjNsMjMuMiA0Ni4zYzEwLjggMjEuNyAzMyAzNS40IDU3LjIgMzUuNEg0MDBjOTYgMCAxNzYtNjQgMTc2LTE3NnMtNjQtMjA4LTI4OC0yMDh6TTk2IDI1NmE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSA5NiAyNTZ6bTMyMC02NGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFza3NUaGVhdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTc0LjYgMzczLjJjNDEuNyAzNi4xIDEwOCA4Mi41IDE2Ni4xIDczLjdjNi4xLS45IDEyLjEtMi41IDE4LTQuNWMtOS4yLTEyLjMtMTcuMy0yNC40LTI0LjItMzUuNGMtMjEuOS0zNS0yOC44LTc1LjItMjUuOS0xMTMuNmMtMjAuNiA0LjEtMzkuMiAxMy01NC43IDI1LjRjLTYuNSA1LjItMTYuMyAxLjMtMTQuOC03YzYuNC0zMy41IDMzLTYwLjkgNjguMi02Ni4zYzIuNi0uNCA1LjMtLjcgNy45LS44bDE5LjQtMTMxLjNjMi0xMy44IDgtMzIuNyAyNS00NS45QzI3OC4yIDUzLjIgMzEwLjUgMzcgMzYzLjIgMzIuMmMtLjgtLjctMS42LTEuNC0yLjQtMi4xQzM0MC42IDE0LjUgMjg4LjQtMTEuNSAxNzUuNyA1LjZTMjAuNSA2MyA1LjcgODMuOUMwIDkxLjktLjggMTAyIC42IDExMS44TDI0LjggMjc2LjFjNS41IDM3LjMgMjEuNSA3Mi42IDQ5LjggOTcuMnptODcuNy0yMTkuNmM0LjQtMy4xIDEwLjgtMiAxMS44IDMuM2MuMSAuNSAuMiAxLjEgLjMgMS42YzMuMiAyMS44LTExLjYgNDItMzMuMSA0NS4zcy00MS41LTExLjgtNDQuNy0zMy41Yy0uMS0uNS0uMS0xLjEtLjItMS42Yy0uNi01LjQgNS4yLTguNCAxMC4zLTYuN2M5IDMgMTguOCAzLjkgMjguNyAyLjRzMTkuMS01LjMgMjYuOC0xMC44ek0yNjEuNiAzOTBjMjkuNCA0Ni45IDc5LjUgMTEwLjkgMTM3LjYgMTE5LjdzMTI0LjUtMzcuNSAxNjYuMS03My43YzI4LjMtMjQuNSA0NC4zLTU5LjggNDkuOC05Ny4ybDI0LjItMTY0LjNjMS40LTkuOCAuNi0xOS45LTUuMS0yNy45Yy0xNC44LTIwLjktNTcuMy02MS4yLTE3MC03OC4zUzI5OS40IDc3LjIgMjc5LjIgOTIuOGMtNy44IDYtMTEuNSAxNS40LTEyLjkgMjUuMkwyNDIuMSAyODIuM2MtNS41IDM3LjMtLjQgNzUuOCAxOS42IDEwNy43ek00MDQuNSAyMzUuM2MtNy43LTUuNS0xNi44LTkuMy0yNi44LTEwLjhzLTE5LjgtLjYtMjguNyAyLjRjLTUuMSAxLjctMTAuOS0xLjMtMTAuMy02LjdjLjEtLjUgLjEtMS4xIC4yLTEuNmMzLjItMjEuOCAyMy4yLTM2LjggNDQuNy0zMy41czM2LjMgMjMuNSAzMy4xIDQ1LjNjLS4xIC41LS4yIDEuMS0uMyAxLjZjLTEgNS4zLTcuNCA2LjQtMTEuOCAzLjN6bTEzNi4yIDE1LjVjLTEgNS4zLTcuNCA2LjQtMTEuOCAzLjNjLTcuNy01LjUtMTYuOC05LjMtMjYuOC0xMC44cy0xOS44LS42LTI4LjcgMi40Yy01LjEgMS43LTEwLjktMS4zLTEwLjMtNi43Yy4xLS41IC4xLTEuMSAuMi0xLjZjMy4yLTIxLjggMjMuMi0zNi44IDQ0LjctMzMuNXMzNi4zIDIzLjUgMzMuMSA0NS4zYy0uMSAuNS0uMiAxLjEtLjMgMS42ek01MzAgMzUwLjJjLTE5LjYgNDQuNy02Ni44IDcyLjUtMTE2LjggNjQuOXMtODcuMS00OC4yLTkzLTk2LjdjLTEtOC4zIDguOS0xMi4xIDE1LjItNi43YzIzLjkgMjAuOCA1My42IDM1LjMgODcgNDAuM3M2Ni4xIC4xIDk0LjktMTIuOGM3LjYtMy40IDE2IDMuMiAxMi42IDEwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hdHRyZXNzUGlsbG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMjU2VjY0em0zMiAzODRINTc2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEgyODhWNDQ4ek02NCAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1heGltaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMCAzMkg1NkM0Mi43IDMyIDMyIDQyLjcgMzIgNTZWMjAwYzAgOS43IDUuOCAxOC41IDE0LjggMjIuMnMxOS4zIDEuNyAyNi4yLTUuMmw0MC00MCA3OSA3OS03OSA3OUw3MyAyOTVjLTYuOS02LjktMTcuMi04LjktMjYuMi01LjJTMzIgMzAyLjMgMzIgMzEyVjQ1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNEgyMDBjOS43IDAgMTguNS01LjggMjIuMi0xNC44czEuNy0xOS4zLTUuMi0yNi4ybC00MC00MCA3OS03OSA3OSA3OS00MCA0MGMtNi45IDYuOS04LjkgMTcuMi01LjIgMjYuMnMxMi41IDE0LjggMjIuMiAxNC44SDQ1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYzMTJjMC05LjctNS44LTE4LjUtMTQuOC0yMi4ycy0xOS4zLTEuNy0yNi4yIDUuMmwtNDAgNDAtNzktNzkgNzktNzkgNDAgNDBjNi45IDYuOSAxNy4yIDguOSAyNi4yIDUuMnMxNC44LTEyLjUgMTQuOC0yMi4yVjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0SDMxMmMtOS43IDAtMTguNSA1LjgtMjIuMiAxNC44cy0xLjcgMTkuMyA1LjIgMjYuMmw0MCA0MC03OSA3OS03OS03OSA0MC00MGM2LjktNi45IDguOS0xNy4yIDUuMi0yNi4yUzIwOS43IDMyIDIwMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVkYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC4xIDM4LjJDMS40IDM0LjIgMCAyOS40IDAgMjQuNkMwIDExIDExIDAgMjQuNiAwSDEzMy45YzExLjIgMCAyMS43IDUuOSAyNy40IDE1LjVsNjguNSAxMTQuMWMtNDguMiA2LjEtOTEuMyAyOC42LTEyMy40IDYxLjlMNC4xIDM4LjJ6bTUwMy43IDBMNDA1LjYgMTkxLjVjLTMyLjEtMzMuMy03NS4yLTU1LjgtMTIzLjQtNjEuOUwzNTAuNyAxNS41QzM1Ni41IDUuOSAzNjYuOSAwIDM3OC4xIDBINDg3LjRDNTAxIDAgNTEyIDExIDUxMiAyNC42YzAgNC44LTEuNCA5LjYtNC4xIDEzLjZ6TTgwIDMzNmExNzYgMTc2IDAgMSAxIDM1MiAwQTE3NiAxNzYgMCAxIDEgODAgMzM2em0xODQuNC05NC45Yy0zLjQtNy0xMy4zLTctMTYuOCAwbC0yMi40IDQ1LjRjLTEuNCAyLjgtNCA0LjctNyA1LjFMMTY4IDI5OC45Yy03LjcgMS4xLTEwLjcgMTAuNS01LjIgMTZsMzYuMyAzNS40YzIuMiAyLjIgMy4yIDUuMiAyLjcgOC4zbC04LjYgNDkuOWMtMS4zIDcuNiA2LjcgMTMuNSAxMy42IDkuOWw0NC44LTIzLjZjMi43LTEuNCA2LTEuNCA4LjcgMGw0NC44IDIzLjZjNi45IDMuNiAxNC45LTIuMiAxMy42LTkuOWwtOC42LTQ5LjljLS41LTMgLjUtNi4xIDIuNy04LjNsMzYuMy0zNS40YzUuNi01LjQgMi41LTE0LjgtNS4yLTE2bC01MC4xLTcuM2MtMy0uNC01LjctMi40LTctNS4xbC0yMi40LTQ1LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lbW9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOHY3LjRjMCA2LjggNC40IDEyLjYgMTAuMSAxNi4zQzIzLjMgMTYwLjMgMzIgMTc1LjEgMzIgMTkycy04LjcgMzEuNy0yMS45IDQwLjNDNC40IDIzNiAwIDI0MS44IDAgMjQ4LjZWMzIwSDU3NlYyNDguNmMwLTYuOC00LjQtMTIuNi0xMC4xLTE2LjNDNTUyLjcgMjIzLjcgNTQ0IDIwOC45IDU0NCAxOTJzOC43LTMxLjcgMjEuOS00MC4zYzUuNy0zLjcgMTAuMS05LjUgMTAuMS0xNi4zVjEyOGMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNNTc2IDM1MkgwdjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDgwVjQxNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djMyaDk2VjQxNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djMyaDk2VjQxNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djMyaDk2VjQxNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djMyaDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM1MnpNMTkyIDE2MHY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnptMTI4IDB2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6bTEyOCAwdjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZW5vcmFoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjggNy40QzIyLjggMi45IDI3LjEgMCAzMiAwczkuMiAyLjkgMTEuMiA3LjRMNjEuMyA0OS43YzEuOCA0LjEgMi43IDguNiAyLjcgMTMuMVY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMlMwIDgxLjcgMCA2NFY2Mi44YzAtNC41IC45LTguOSAyLjctMTMuMUwyMC44IDcuNHptOTYgMEMxMTguOCAyLjkgMTIzLjEgMCAxMjggMHM5LjIgMi45IDExLjIgNy40bDE4LjIgNDIuNGMxLjggNC4xIDIuNyA4LjYgMi43IDEzLjFWNjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNjIuOGMwLTQuNSAuOS04LjkgMi43LTEzLjFMMTE2LjggNy40em03Ny44IDQyLjRMMjEyLjggNy40QzIxNC44IDIuOSAyMTkuMSAwIDIyNCAwczkuMiAyLjkgMTEuMiA3LjRsMTguMiA0Mi40YzEuOCA0LjEgMi43IDguNiAyLjcgMTMuMVY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY2Mi44YzAtNC41IC45LTguOSAyLjctMTMuMXpNMzA4LjggNy40QzMxMC44IDIuOSAzMTUuMSAwIDMyMCAwczkuMiAyLjkgMTEuMiA3LjRsMTguMiA0Mi40YzEuOCA0LjEgMi43IDguNiAyLjcgMTMuMVY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY2Mi44YzAtNC41IC45LTguOSAyLjctMTMuMUwzMDguOCA3LjR6bTc3LjggNDIuNEw0MDQuOCA3LjRDNDA2LjggMi45IDQxMS4xIDAgNDE2IDBzOS4yIDIuOSAxMS4yIDcuNGwxOC4yIDQyLjRjMS44IDQuMSAyLjcgOC42IDIuNyAxMy4xVjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjYyLjhjMC00LjUgLjktOC45IDIuNy0xMy4xek01MDAuOCA3LjRDNTAyLjggMi45IDUwNy4xIDAgNTEyIDBzOS4yIDIuOSAxMS4yIDcuNGwxOC4yIDQyLjRjMS44IDQuMSAyLjcgOC42IDIuNyAxMy4xVjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjYyLjhjMC00LjUgLjktOC45IDIuNy0xMy4xTDUwMC44IDcuNHptNzcuOCA0Mi40TDU5Ni44IDcuNEM1OTguOCAyLjkgNjAzLjEgMCA2MDggMHM5LjIgMi45IDExLjIgNy40bDE4LjIgNDIuNGMxLjggNC4xIDIuNyA4LjYgMi43IDEzLjFWNjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNjIuOGMwLTQuNSAuOS04LjkgMi43LTEzLjF6TTMyIDEyOGMxNy43IDAgMzIgMTQuMyAzMiAzMlYyODhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMjg4VjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjMyMEg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMjg4YzAgNTMtNDMgOTYtOTYgOTZIMzUydjY0SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMjAgMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDI4OFYzODRIOTZjLTUzIDAtOTYtNDMtOTYtOTZWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyem05NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2IDMySDk2VjI1NiAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTYgMzJIMTkyVjI1NiAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTE5MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2IDMySDM4NFYyNTYgMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyem05NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2IDMySDQ4MFYyNTYgMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZXJjdXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcyLjEgN0M4NS44LTQgMTA2LTEuOCAxMTcgMTJjMTcuNiAyMiA0NC43IDM2IDc1IDM2czU3LjMtMTQgNzUtMzZjMTEuMS0xMy44IDMxLjItMTYgNDUtNXMxNiAzMS4yIDUgNDVjLTcuOCA5LjctMTYuNiAxOC40LTI2LjQgMjYuMUMzMzcuMyAxMDkuNyAzNjggMTYzLjMgMzY4IDIyNGMwIDg5LjEtNjYuMiAxNjIuNy0xNTIgMTc0LjRWNDI0aDMyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDIxNnYxNmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY0NzJIMTM2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDMyVjM5OC40QzgyLjIgMzg2LjcgMTYgMzEzLjEgMTYgMjI0YzAtNjAuNyAzMC43LTExNC4zIDc3LjUtMTQ1LjlDODMuNyA3MC41IDc0LjkgNjEuNyA2Ny4xIDUyYy0xMS4xLTEzLjgtOC44LTMzLjkgNS00NXpNODAgMjI0YTExMiAxMTIgMCAxIDAgMjI0IDBBMTEyIDExMiAwIDEgMCA4MCAyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lc3NhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWMzUyYzAgMzUuMyAyOC43IDY0IDY0IDY0aDk2djgwYzAgNi4xIDMuNCAxMS42IDguOCAxNC4zczExLjkgMi4xIDE2LjgtMS41TDMwOS4zIDQxNkg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1ldGVvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTMuNyAuOUwyOTkuNCA3NS42bDIuMy0yOS4zYzEtMTIuOC0xMi44LTIxLjUtMjQtMTUuMUwxMDEuMyAxMzMuNEMzOC42IDE2OS43IDAgMjM2LjYgMCAzMDlDMCA0MjEuMSA5MC45IDUxMiAyMDMgNTEyYzcyLjQgMCAxMzkuNC0zOC42IDE3NS43LTEwMS4zTDQ4MC44IDIzNC4zYzYuNS0xMS4xLTIuMi0yNS0xNS4xLTI0bC0yOS4zIDIuM0w1MTEuMSAxOC4zYy42LTEuNSAuOS0zLjIgLjktNC44QzUxMiA2IDUwNiAwIDQ5OC41IDBjLTEuNyAwLTMuMyAuMy00LjggLjl6TTE5MiAxOTJhMTI4IDEyOCAwIDEgMSAwIDI1NiAxMjggMTI4IDAgMSAxIDAtMjU2em0wIDk2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTE2IDk2YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWljcm9jaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjRIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINjR2NTZIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINjR2NTZIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINjRjMCAzNS4zIDI4LjcgNjQgNjQgNjR2NDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0NDhoNTZ2NDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0NDhoNTZ2NDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRoNDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRINDQ4VjI4MGg0MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg0NDhWMTc2aDQwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDQ0OGMwLTM1LjMtMjguNy02NC02NC02NFYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEgyODBWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWNjRIMTc2VjI0ek0xNjAgMTI4SDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMlYzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTE5MiAzMkgxNjBWMzUySDM1MlYxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvcGhvbmVMaW5lc1NsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNDcyLjEgMzQ0LjdjMTUuMi0yNiAyMy45LTU2LjMgMjMuOS04OC43VjIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHYyNCAxNmMwIDIxLjItNS4xIDQxLjEtMTQuMiA1OC43TDQxNiAzMDAuOFYyNTZIMzU4LjlsLTM0LjUtMjdjMi45LTMuMSA3LTUgMTEuNi01aDgwVjE5MkgzMzZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoODBWMTI4SDMzNmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg4MGMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NnY1NC4zTDM4LjggNS4xek0zNTguMiAzNzguMkMzNDYuMSAzODIgMzMzLjMgMzg0IDMyMCAzODRjLTcwLjcgMC0xMjgtNTcuMy0xMjgtMTI4di04LjdMMTQ0LjcgMjEwYy0uNSAxLjktLjcgMy45LS43IDZ2NDBjMCA4OS4xIDY2LjIgMTYyLjcgMTUyIDE3NC40VjQ2NEgyNDhjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNzIgNzJjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMzQ0VjQzMC40YzIwLjQtMi44IDM5LjctOS4xIDU3LjMtMTguMmwtNDMuMS0zMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWNyb3Bob25lTGluZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgOTZWMjU2YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZIMjA4Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDgwVjE5MkgyMDhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoODBWMTI4SDIwOGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg4MGMwLTUzLTQzLTk2LTk2LTk2Uzk2IDQzIDk2IDk2ek0zMjAgMjQwdjE2YzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4cy0xMjgtNTcuMy0xMjgtMTI4VjIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY0MGMwIDg5LjEgNjYuMiAxNjIuNyAxNTIgMTc0LjRWNDY0SDEyMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg3MiA3MmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyMTZWNDMwLjRjODUuOC0xMS43IDE1Mi04NS4zIDE1Mi0xNzQuNFYyMTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2MjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvcGhvbmVTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDQ3Mi4xIDM0NC43YzE1LjItMjYgMjMuOS01Ni4zIDIzLjktODguN1YyMTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NDBjMCAyMS4yLTUuMSA0MS4xLTE0LjIgNTguN0w0MTYgMzAwLjhWOTZjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZ2NTQuM0wzOC44IDUuMXptMzYyLjUgNDA3bC00My4xLTMzLjlDMzQ2LjEgMzgyIDMzMy4zIDM4NCAzMjAgMzg0Yy03MC43IDAtMTI4LTU3LjMtMTI4LTEyOHYtOC43TDE0NC43IDIxMGMtLjUgMS45LS43IDMuOS0uNyA2djQwYzAgODkuMSA2Ni4yIDE2Mi43IDE1MiAxNzQuNFY0NjRIMjQ4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDcyIDcyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDM0NFY0MzAuNGMyMC40LTIuOCAzOS43LTkuMSA1Ny4zLTE4LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvcGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBDMTM5IDAgOTYgNDMgOTYgOTZWMjU2YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZWOTZjMC01My00My05Ni05Ni05NnpNNjQgMjE2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djQwYzAgODkuMSA2Ni4yIDE2Mi43IDE1MiAxNzQuNFY0NjRIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDcyIDcyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDIxNlY0MzAuNGM4NS44LTExLjcgMTUyLTg1LjMgMTUyLTE3NC40VjIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY0MGMwIDcwLjctNTcuMyAxMjgtMTI4IDEyOHMtMTI4LTU3LjMtMTI4LTEyOFYyMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3Jvc2NvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjI4OGMwIDE3LjctMTQuMyAzMi0zMiAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMzIgNDQ4SDMyMGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOHMtNTcuMy0xMjgtMTI4LTEyOFYxMjhjMTA2IDAgMTkyIDg2IDE5MiAxOTJjMCA0OS4yLTE4LjUgOTQtNDguOSAxMjhINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMCAzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptODAtNjRIMzA0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWlsbFNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAyLjEgNDIuOGM1LjktMTYuNi0yLjctMzUtMTkuNC00MC45cy0zNSAyLjctNDAuOSAxOS40TDIwOCAxMTYuMWMtNS43IDQtMTEuMSA4LjUtMTYgMTMuNUMxNzEuNyAxMDguOSAxNDMuMyA5NiAxMTIgOTZjLTE5LjUgMC0zNy44IDUtNTMuNyAxMy43QzUyLjUgMTAxLjQgNDIuOSA5NiAzMiA5NkMxNC4zIDk2IDAgMTEwLjMgMCAxMjh2ODBWNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjA4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2NDIuNUw4MS45IDQ2OS4yYy01LjkgMTYuNiAyLjcgMzUgMTkuNCA0MC45czM1LTIuNyA0MC45LTE5LjRsMjEuNC02MEMxNjguOSA0NDEgMTc5LjYgNDQ4IDE5MiA0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjYxLjVsMzUuNy0xMDBjMy45LTEgOC4xLTEuNiAxMi4zLTEuNmMyNi41IDAgNDggMjEuNSA0OCA0OFY0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMDhjMC01OC4yLTQ0LjMtMTA2LTEwMS4xLTExMS41bDE5LjItNTMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWluaW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU2IDIyNEgzMTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjU2YzAtOS43IDUuOC0xOC41IDE0LjgtMjIuMnMxOS4zLTEuNyAyNi4yIDUuMmw0MCA0MEw0NDIuMyA1LjdDNDQ2IDIgNDUwLjkgMCA0NTYgMHMxMCAyIDEzLjcgNS43bDM2LjcgMzYuN0M1MTAgNDYgNTEyIDUwLjkgNTEyIDU2cy0yIDEwLTUuNyAxMy43TDQzMyAxNDNsNDAgNDBjNi45IDYuOSA4LjkgMTcuMiA1LjIgMjYuMnMtMTIuNSAxNC44LTIyLjIgMTQuOHptMCA2NGM5LjcgMCAxOC41IDUuOCAyMi4yIDE0LjhzMS43IDE5LjMtNS4yIDI2LjJsLTQwIDQwIDczLjQgNzMuNGMzLjYgMy42IDUuNyA4LjUgNS43IDEzLjdzLTIgMTAtNS43IDEzLjdsLTM2LjcgMzYuN0M0NjYgNTEwIDQ2MS4xIDUxMiA0NTYgNTEycy0xMC0yLTEzLjctNS43TDM2OSA0MzNsLTQwIDQwYy02LjkgNi45LTE3LjIgOC45LTI2LjIgNS4ycy0xNC44LTEyLjUtMTQuOC0yMi4yVjMxMmMwLTEzLjMgMTAuNy0yNCAyNC0yNEg0NTZ6bS0yNTYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNFY0NTZjMCA5LjctNS44IDE4LjUtMTQuOCAyMi4ycy0xOS4zIDEuNy0yNi4yLTUuMmwtNDAtNDBMNjkuNyA1MDYuM0M2NiA1MTAgNjEuMSA1MTIgNTYgNTEycy0xMC0yLTEzLjctNS43TDUuNyA0NjkuN0MyIDQ2NiAwIDQ2MS4xIDAgNDU2czItMTAgNS43LTEzLjdMNzkgMzY5IDM5IDMyOWMtNi45LTYuOS04LjktMTcuMi01LjItMjYuMnMxMi41LTE0LjggMjIuMi0xNC44SDIwMHpNNTYgMjI0Yy05LjcgMC0xOC41LTUuOC0yMi4yLTE0LjhzLTEuNy0xOS4zIDUuMi0yNi4ybDQwLTQwTDUuNyA2OS43QzIgNjYgMCA2MS4xIDAgNTZzMi0xMCA1LjctMTMuN0w0Mi4zIDUuN0M0NiAyIDUwLjkgMCA1NiAwczEwIDIgMTMuNyA1LjdMMTQzIDc5bDQwLTQwYzYuOS02LjkgMTcuMi04LjkgMjYuMi01LjJzMTQuOCAxMi41IDE0LjggMjIuMlYyMDBjMCAxMy4zLTEwLjcgMjQtMjQgMjRINTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMiAyNTZjMCAxNy43LTE0LjMgMzItMzIgMzJMNDggMjg4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDM1MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaXR0ZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDM4NEg2NEw1LjQgMTc4LjlDMS44IDE2Ni40IDAgMTUzLjQgMCAxNDAuM0MwIDYyLjggNjIuOCAwIDE0MC4zIDBoMy40YzY2IDAgMTIzLjUgNDQuOSAxMzkuNSAxMDguOWwzMS40IDEyNS44IDE3LjYtMjAuMUMzNDQuOCAyMDAuMiAzNjIuOSAxOTIgMzgyIDE5MmgyLjhjMzQuOSAwIDYzLjMgMjguMyA2My4zIDYzLjNjMCAxNS45LTYgMzEuMi0xNi44IDQyLjlMMzUyIDM4NHpNMzIgNDQ4YzAtMTcuNyAxNC4zLTMyIDMyLTMySDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb2JpbGVCdXR0b24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgMEM0NC43IDAgMTYgMjguNyAxNiA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzA0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDgwek0xOTIgNDAwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9iaWxlUmV0cm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjU2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTY0IDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek04MCAzNTJhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0yNCA1NmEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwem01Ni01NmEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTI0IDU2YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6bTU2LTU2YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMjQgNTZhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpNMTI4IDQ4Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9iaWxlU2NyZWVuQnV0dG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDY0QzE2IDI4LjcgNDQuNyAwIDgwIDBIMzA0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6TTIyNCA0NDhhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMzA0IDY0SDgwVjM4NEgzMDRWNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vYmlsZVNjcmVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA2NEMxNiAyOC43IDQ0LjcgMCA4MCAwSDMwNGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIODBjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0ek0xNDQgNDQ4YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxNjBjLTguOCAwLTE2IDcuMi0xNiAxNnpNMzA0IDY0SDgwVjM4NEgzMDRWNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vYmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCAwQzQ0LjcgMCAxNiAyOC43IDE2IDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMDRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRIODB6bTgwIDQzMmg2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxNjBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5QmlsbDFXYXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTEyLjVWNDIyLjNjMCAxOCAxMC4xIDM1IDI3IDQxLjNjODcgMzIuNSAxNzQgMTAuMyAyNjEtMTEuOWM3OS44LTIwLjMgMTU5LjYtNDAuNyAyMzkuMy0xOC45YzIzIDYuMyA0OC43LTkuNSA0OC43LTMzLjRWODkuN2MwLTE4LTEwLjEtMzUtMjctNDEuM0M0NjIgMTUuOSAzNzUgMzguMSAyODggNjAuM0MyMDguMiA4MC42IDEyOC40IDEwMC45IDQ4LjcgNzkuMUMyNS42IDcyLjggMCA4OC42IDAgMTEyLjV6TTEyOCA0MTZINjRWMzUyYzM1LjMgMCA2NCAyOC43IDY0IDY0ek02NCAyMjRWMTYwaDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0ek00NDggMzUyYzAtMzUuMyAyOC43LTY0IDY0LTY0djY0SDQ0OHptNjQtMTkyYy0zNS4zIDAtNjQtMjguNy02NC02NGg2NHY2NHpNMzg0IDI1NmMwIDYxLjktNDMgMTEyLTk2IDExMnMtOTYtNTAuMS05Ni0xMTJzNDMtMTEyIDk2LTExMnM5NiA1MC4xIDk2IDExMnpNMjUyIDIwOGMwIDkuNyA2LjkgMTcuNyAxNiAxOS42VjI3NmgtNGMtMTEgMC0yMCA5LTIwIDIwczkgMjAgMjAgMjBoMjQgMjRjMTEgMCAyMC05IDIwLTIwcy05LTIwLTIwLTIwaC00VjIwOGMwLTExLTktMjAtMjAtMjBIMjcyYy0xMSAwLTIwIDktMjAgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5QmlsbDEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTY0IDMyMEg2NFYzMjBjMzUuMyAwIDY0IDI4LjcgNjQgNjR6TTY0IDE5MlYxMjhoNjRjMCAzNS4zLTI4LjcgNjQtNjQgNjR6TTQ0OCAzODRjMC0zNS4zIDI4LjctNjQgNjQtNjR2NjRINDQ4em02NC0xOTJjLTM1LjMgMC02NC0yOC43LTY0LTY0aDY0djY0ek0xNzYgMjU2YTExMiAxMTIgMCAxIDEgMjI0IDAgMTEyIDExMiAwIDEgMSAtMjI0IDB6bTc2LTQ4YzAgOS43IDYuOSAxNy43IDE2IDE5LjZWMjc2aC00Yy0xMSAwLTIwIDktMjAgMjBzOSAyMCAyMCAyMGgyNCAyNGMxMSAwIDIwLTkgMjAtMjBzLTktMjAtMjAtMjBoLTRWMjA4YzAtMTEtOS0yMC0yMC0yMEgyNzJjLTExIDAtMjAgOS0yMCAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsVHJhbnNmZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTM1IDQxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsNjQgNjRjNC41IDQuNSA3IDEwLjYgNyAxN3MtMi41IDEyLjUtNyAxN2wtNjQgNjRjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMjMtMjNMMzg0IDExMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGwxNzQuMSAwTDUzNSA0MXpNMTA1IDM3N2wtMjMgMjNMMjU2IDQwMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEw4MS45IDQ0OGwyMyAyM2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDcgNDQxYy00LjUtNC41LTctMTAuNi03LTE3czIuNS0xMi41IDctMTdsNjQtNjRjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45ek05NiA2NEgzMzcuOWMtMy43IDcuMi01LjkgMTUuMy01LjkgMjRjMCAyOC43IDIzLjMgNTIgNTIgNTJsMTE3LjQgMGMtNCAxNyAuNiAzNS41IDEzLjggNDguOGMyMC4zIDIwLjMgNTMuMiAyMC4zIDczLjUgMEw2MDggMTY5LjVWMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDMwMi4xYzMuNy03LjIgNS45LTE1LjMgNS45LTI0YzAtMjguNy0yMy4zLTUyLTUyLTUybC0xMTcuNCAwYzQtMTctLjYtMzUuNS0xMy44LTQ4LjhjLTIwLjMtMjAuMy01My4yLTIwLjMtNzMuNSAwTDMyIDM0Mi41VjEyOGMwLTM1LjMgMjguNy02NCA2NC02NHptNjQgNjRIOTZ2NjRjMzUuMyAwIDY0LTI4LjcgNjQtNjR6TTU0NCAzMjBjLTM1LjMgMC02NCAyOC43LTY0IDY0aDY0VjMyMHpNMzIwIDM1MmE5NiA5NiAwIDEgMCAwLTE5MiA5NiA5NiAwIDEgMCAwIDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsVHJlbmRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzAuNyA5LjRjMyAzLjEgNS4zIDYuNiA2LjkgMTAuM3MyLjQgNy44IDIuNCAxMi4ybDAgLjF2MCA5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxMDkuM0wzMTAuNiAyMTQuNmMtMTEuOCAxMS44LTMwLjggMTIuNi00My41IDEuN0wxNzYgMTM4LjEgODQuOCAyMTYuM2MtMTMuNCAxMS41LTMzLjYgOS45LTQ1LjEtMy41cy05LjktMzMuNiAzLjUtNDUuMWwxMTItOTZjMTItMTAuMyAyOS43LTEwLjMgNDEuNyAwbDg5LjUgNzYuN0wzNzAuNyA2NEgzNTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoOTYgMGM4LjggMCAxNi44IDMuNiAyMi42IDkuM2wuMSAuMXpNMCAzMDRjMC0yNi41IDIxLjUtNDggNDgtNDhINDY0YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzA0ek00OCA0MTZ2NDhIOTZjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTk2IDMwNEg0OHY0OGMyNi41IDAgNDgtMjEuNSA0OC00OHpNNDY0IDQxNmMtMjYuNSAwLTQ4IDIxLjUtNDggNDhoNDhWNDE2ek00MTYgMzA0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4VjMwNEg0MTZ6bS05NiA4MGE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5QmlsbFdhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxMTIuNVY0MjIuM2MwIDE4IDEwLjEgMzUgMjcgNDEuM2M4NyAzMi41IDE3NCAxMC4zIDI2MS0xMS45Yzc5LjgtMjAuMyAxNTkuNi00MC43IDIzOS4zLTE4LjljMjMgNi4zIDQ4LjctOS41IDQ4LjctMzMuNFY4OS43YzAtMTgtMTAuMS0zNS0yNy00MS4zQzQ2MiAxNS45IDM3NSAzOC4xIDI4OCA2MC4zQzIwOC4yIDgwLjYgMTI4LjQgMTAwLjkgNDguNyA3OS4xQzI1LjYgNzIuOCAwIDg4LjYgMCAxMTIuNXpNMjg4IDM1MmMtNDQuMiAwLTgwLTQzLTgwLTk2czM1LjgtOTYgODAtOTZzODAgNDMgODAgOTZzLTM1LjggOTYtODAgOTZ6TTY0IDM1MmMzNS4zIDAgNjQgMjguNyA2NCA2NEg2NFYzNTJ6bTY0LTIwOGMwIDM1LjMtMjguNyA2NC02NCA2NFYxNDRoNjR6TTUxMiAzMDR2NjRINDQ4YzAtMzUuMyAyOC43LTY0IDY0LTY0ek00NDggOTZoNjR2NjRjLTM1LjMgMC02NC0yOC43LTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb25leUJpbGxXaGVhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgMGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDguOC03LjIgMTYtMTYgMTZjLTQ0LjIgMC04MC0zNS44LTgwLTgwYzAtOC44IDcuMi0xNiAxNi0xNnpNNTYgMTZoNDhjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINTZDNDIuNyA2NCAzMiA1My4zIDMyIDQwczEwLjctMjQgMjQtMjR6TTI0IDg4SDEzNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRTMTAuNyA4OCAyNCA4OHptOCA5NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGg0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1NmMtMTMuMyAwLTI0LTEwLjctMjQtMjR6TTI3MiAxNmMwLTguOCA3LjItMTYgMTYtMTZjNDQuMiAwIDgwIDM1LjggODAgODBjMCA4LjgtNy4yIDE2LTE2IDE2Yy00NC4yIDAtODAtMzUuOC04MC04MHpNNDAwIDBjNDQuMiAwIDgwIDM1LjggODAgODBjMCA4LjgtNy4yIDE2LTE2IDE2Yy00NC4yIDAtODAtMzUuOC04MC04MGMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE0NGMwIDQ0LjItMzUuOCA4MC04MCA4MGMtOC44IDAtMTYtNy4yLTE2LTE2YzAtNDQuMiAzNS44LTgwIDgwLTgwYzguOCAwIDE2IDcuMiAxNiAxNnpNMzUyIDEyOGM4LjggMCAxNiA3LjIgMTYgMTZjMCA0NC4yLTM1LjggODAtODAgODBjLTguOCAwLTE2LTcuMi0xNi0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MHptLTk2IDE2YzAgNDQuMi0zNS44IDgwLTgwIDgwYy04LjggMC0xNi03LjItMTYtMTZjMC00NC4yIDM1LjgtODAgODAtODBjOC44IDAgMTYgNy4yIDE2IDE2ek0wIDMwNGMwLTI2LjUgMjEuNS00OCA0OC00OEg0NjRjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzMDR6TTQ4IDQxNnY0OEg5NmMwLTI2LjUtMjEuNS00OC00OC00OHpNOTYgMzA0SDQ4djQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4ek00NjQgNDE2Yy0yNi41IDAtNDggMjEuNS00OCA0OGg0OFY0MTZ6TTQxNiAzMDRjMCAyNi41IDIxLjUgNDggNDggNDhWMzA0SDQxNnptLTk2IDgwYTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em02NCAzMjBINjRWMzIwYzM1LjMgMCA2NCAyOC43IDY0IDY0ek02NCAxOTJWMTI4aDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0ek00NDggMzg0YzAtMzUuMyAyOC43LTY0IDY0LTY0djY0SDQ0OHptNjQtMTkyYy0zNS4zIDAtNjQtMjguNy02NC02NGg2NHY2NHpNMjg4IDE2MGE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA5NlYzMjBjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTc2YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDE2MGMtMzUuMyAwLTY0IDI4LjctNjQgNjR6bTY0IDE2MGMzNS4zIDAgNjQgMjguNyA2NCA2NEgxNjBWMjU2ek0yMjQgOTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRWOTZoNjR6TTU3NiAyNTZ2NjRINTEyYzAtMzUuMyAyOC43LTY0IDY0LTY0ek01MTIgOTZoNjR2NjRjLTM1LjMgMC02NC0yOC43LTY0LTY0ek0yODggMjA4YTgwIDgwIDAgMSAxIDE2MCAwIDgwIDgwIDAgMSAxIC0xNjAgMHpNNDggMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0UzAgMTA2LjcgMCAxMjBWMzYwYzAgNjYuMyA1My43IDEyMCAxMjAgMTIwSDUyMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxMjBjLTM5LjggMC03Mi0zMi4yLTcyLTcyVjEyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlDaGVja0RvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjcyIDE5Mkg0OTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2ek0yNTYgMzA0YzAtOC44IDcuMi0xNiAxNi0xNkg0OTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZ6TTE2NCAxNTJ2MTMuOWM3LjUgMS4yIDE0LjYgMi45IDIxLjEgNC43YzEwLjcgMi44IDE3IDEzLjggMTQuMiAyNC41cy0xMy44IDE3LTI0LjUgMTQuMmMtMTEtMi45LTIxLjYtNS0zMS4yLTUuMmMtNy45LS4xLTE2IDEuOC0yMS41IDVjLTQuOCAyLjgtNi4yIDUuNi02LjIgOS4zYzAgMS44IC4xIDMuNSA1LjMgNi43YzYuMyAzLjggMTUuNSA2LjcgMjguMyAxMC41bC43IC4yYzExLjIgMy40IDI1LjYgNy43IDM3LjEgMTVjMTIuOSA4LjEgMjQuMyAyMS4zIDI0LjYgNDEuNmMuMyAyMC45LTEwLjUgMzYuMS0yNC44IDQ1Yy03LjIgNC41LTE1LjIgNy4zLTIzLjIgOVYzNjBjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwVjM0NS40Yy0xMC4zLTIuMi0yMC01LjUtMjguMi04LjRsMCAwIDAgMGMtMi4xLS43LTQuMS0xLjQtNi4xLTIuMWMtMTAuNS0zLjUtMTYuMS0xNC44LTEyLjYtMjUuM3MxNC44LTE2LjEgMjUuMy0xMi42YzIuNSAuOCA0LjkgMS43IDcuMiAyLjRjMTMuNiA0LjYgMjQgOC4xIDM1LjEgOC41YzguNiAuMyAxNi41LTEuNiAyMS40LTQuN2M0LjEtMi41IDYtNS41IDUuOS0xMC41YzAtMi45LS44LTUtNS45LTguMmMtNi4zLTQtMTUuNC02LjktMjgtMTAuN2wtMS43LS41Yy0xMC45LTMuMy0yNC42LTcuNC0zNS42LTE0Yy0xMi43LTcuNy0yNC42LTIwLjUtMjQuNy00MC43Yy0uMS0yMS4xIDExLjgtMzUuNyAyNS44LTQzLjljNi45LTQuMSAxNC41LTYuOCAyMi4yLTguNVYxNTJjMC0xMSA5LTIwIDIwLTIwczIwIDkgMjAgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5Q2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTQ4IDE2MEgyNzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2ek05NiAzMzZjMC04LjggNy4yLTE2IDE2LTE2SDQ2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnpNMzc2IDE2MGg4MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHY0OGMwIDEzLjMtMTAuNyAyNC0yNCAyNEgzNzZjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE4NGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9udW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgwLjcgNC43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwbDgwIDgwYzIuNSAyLjUgNC4xIDUuOCA0LjYgOS4zbDQwLjIgMzIySDU1LjlMOTYuMSA5NGMuNC0zLjUgMi02LjggNC42LTkuM2w4MC04MHpNMTUyIDI3MmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxNTJ6TTMyIDQ0OEgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIzLjUgMzJDMTAwIDMyIDAgMTMyLjMgMCAyNTZTMTAwIDQ4MCAyMjMuNSA0ODBjNjAuNiAwIDExNS41LTI0LjIgMTU1LjgtNjMuNGM1LTQuOSA2LjMtMTIuNSAzLjEtMTguN3MtMTAuMS05LjctMTctOC41Yy05LjggMS43LTE5LjggMi42LTMwLjEgMi42Yy05Ni45IDAtMTc1LjUtNzguOC0xNzUuNS0xNzZjMC02NS44IDM2LTEyMy4xIDg5LjMtMTUzLjNjNi4xLTMuNSA5LjItMTAuNSA3LjctMTcuM3MtNy4zLTExLjktMTQuMy0xMi41Yy02LjMtLjUtMTIuNi0uOC0xOS0uOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9ydGFyUGVzdGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNC4zIDExLjFDNDkzLjMtMS42IDQ3NC41LTMuNyA0NjEgNi4yTDI1Mi4zIDE2MEgzOTcuM0w1MDIuNiA1NC42YzExLjgtMTEuOCAxMi42LTMwLjggMS42LTQzLjV6TTMyIDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmMwIDgyLjUgNDMuNCAxNDcuNyAxMjMuOSAxNzYuMmMtMTEuMSAxMy45LTE5LjQgMzAuMy0yMy45IDQ4LjFDMTI3LjYgNDk3LjQgMTQyLjMgNTEyIDE2MCA1MTJIMzUyYzE3LjcgMCAzMi40LTE0LjYgMjguMS0zMS43Yy00LjUtMTcuOC0xMi44LTM0LjEtMjMuOS00OC4xQzQzNi42IDQwMy43IDQ4MCAzMzguNSA0ODAgMjU2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3NxdWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDBjNSAwIDkuOCAyLjQgMTIuOCA2LjRjMzQuNyA0Ni4zIDc4LjEgNzQuOSAxMzMuNSAxMTEuNWwwIDAgMCAwYzUuMiAzLjQgMTAuNSA3IDE2IDEwLjZjMjguOSAxOS4yIDQ1LjcgNTEuNyA0NS43IDg2LjFjMCAyOC42LTExLjMgNTQuNS0yOS44IDczLjRIMjIxLjhjLTE4LjQtMTktMjkuOC00NC45LTI5LjgtNzMuNGMwLTM0LjQgMTYuNy02Ni45IDQ1LjctODYuMWM1LjQtMy42IDEwLjgtNy4xIDE2LTEwLjZsMCAwIDAgMEMzMDkuMSA4MS4zIDM1Mi41IDUyLjcgMzg3LjIgNi40YzMtNCA3LjgtNi40IDEyLjgtNi40ek0yODggNTEyVjQ0MGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY3MkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM1MmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg2MDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDU2MFY0NDBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NzJINDQ4VjQ1NGMwLTE5LTguNC0zNy0yMy00OS4yTDQwMCAzODRsLTI1IDIwLjhDMzYwLjQgNDE3IDM1MiA0MzUgMzUyIDQ1NHY1OEgyODh6TTcwLjQgNS4yYzUuNy00LjMgMTMuNS00LjMgMTkuMiAwbDE2IDEyQzEzOS44IDQyLjkgMTYwIDgzLjIgMTYwIDEyNnYySDB2LTJDMCA4My4yIDIwLjIgNDIuOSA1NC40IDE3LjJsMTYtMTJ6TTAgMTYwSDE2MFYyOTYuNmMtMTkuMSAxMS4xLTMyIDMxLjctMzIgNTUuNFY0ODBjMCA5LjYgMi4xIDE4LjYgNS44IDI2LjhjLTYuNiAzLjQtMTQgNS4yLTIxLjggNS4ySDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxNzYgMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3NxdWl0b05ldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjguOCA0NjIuM2MtNy45LTQtMTEuMS0xMy42LTcuMi0yMS41TDE5MiAzODAuMmwwLTQ0LjJjMC00LjIgMS43LTguMyA0LjctMTEuM0wyNTYgMjY1LjRWMjQyLjJMMTM5LjIgMzQ0Qzg3LjggMzk1LjMgMCAzNTguOSAwIDI4Ni4zYzAtNDEuMSAzMC42LTc1LjggNzEuNC04MC45bDE1OS45LTIzLjktNDkuNi00MS4zYy01LjEtNC4yLTctMTEuMS00LjktMTcuNGwxMy45LTQxLjctMjktNTguMWMtNC03LjktLjctMTcuNSA3LjItMjEuNXMxNy41LS43IDIxLjUgNy4ybDMyIDY0YzEuOSAzLjggMi4yIDguMiAuOSAxMi4ybC0xMi41IDM3LjZMMjU2IDE2MC41VjEzNy45YzAtMTQuOSAxMC4xLTI3LjMgMjMuOC0zMVY2My43YzAtNC41IDMuNy04LjIgOC4yLTguMnM4LjIgMy43IDguMiA4LjJWMTA3YzEzLjcgMy42IDIzLjggMTYuMSAyMy44IDMxdjIyLjZsNDUuNC0zNy44TDM1Mi44IDg1LjFjLTEuMy00LTEtOC40IC45LTEyLjJsMzItNjRjNC03LjkgMTMuNi0xMS4xIDIxLjUtNy4yczExLjEgMTMuNiA3LjIgMjEuNWwtMjkgNTguMSAxMy45IDQxLjdjMi4xIDYuMiAuMSAxMy4xLTQuOSAxNy40bC00OS42IDQxLjMgMTU5LjkgMjMuOWMyMi41IDIuOCA0MS44IDE0LjYgNTQuNyAzMS40Yy0yLjcgMi42LTUuMiA1LjQtNy4zIDguNmMtOC42LTEyLjktMjMuMy0yMS41LTQwLTIxLjVzLTMxLjQgOC41LTQwIDIxLjVjLTguNi0xMi45LTIzLjMtMjEuNS00MC0yMS41Yy0yMS43IDAtNDAgMTQuMy00NS45IDM0LjFjLTEwLjcgMy4yLTE5LjggMTAuMS0yNS45IDE5LjJsLTQwLjItMzV2MjMuMWwzMi40IDMyLjRjLS4zIDItLjQgNC4xLS40IDYuMmMwIDE2LjcgOC41IDMxLjQgMjEuNSA0MGMtNCAyLjYtNy41IDUuOS0xMC42IDkuNUwzMjAgMzEwLjZ2NTBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJ2LTUwbC0zMiAzMiAwIDQxLjRjMCAyLjUtLjYgNC45LTEuNyA3LjJsLTMyIDY0Yy00IDcuOS0xMy42IDExLjEtMjEuNSA3LjJ6TTUxMiAyNTZjOC44IDAgMTYgNy4yIDE2IDE2djE2aDQ4VjI3MmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDYwOHY0OGgxNmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg2MDh2NDhoMTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZINjA4djE2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjQ4MEg1Mjh2MTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWNDgwSDQ0OHYxNmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlY0ODBINDAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDE2VjQwMEg0MDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoMTZWMzIwSDQwMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmgxNlYyNzJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYxNmg0OFYyNzJjMC04LjggNy4yLTE2IDE2LTE2em0xNiAxMTJoNDhWMzIwSDUyOHY0OHptMCA4MGg0OFY0MDBINTI4djQ4ek00NDggMzIwdjQ4aDQ4VjMyMEg0NDh6bTAgODB2NDhoNDhWNDAwSDQ0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9zcXVpdG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDYzLjcgNTA1LjljOS44LTguOSAxMC43LTI0LjMgMi4xLTM0LjNsLTQyLjEtNDkgMC01NC43YzAtNS41LTEuOC0xMC44LTUuMS0xNS4xTDM1MiAyNjYuM2wwLS4zTDQ4NS40IDM4Ny44QzU0Mi40IDQ0Ny42IDY0MCA0MDUuMiA2NDAgMzIwLjZjMC00Ny45LTM0LTg4LjMtNzkuNC05NC4ybC0xNTMtMjMuOSA0MC44LTQwLjljNy44LTcuOCA5LjQtMjAuMSAzLjktMjkuOEw0MjguNSA5MC4xbDM4LjItNTAuOWM4LTEwLjYgNi4xLTI1LjktNC4zLTM0LjFzLTI1LjItNi4zLTMzLjIgNC40bC00OCA2My45Yy01LjkgNy45LTYuNiAxOC42LTEuNyAyNy4yTDQwMi4yIDE0MCAzNTIgMTkwLjNsMC0zOC4yYzAtMTQuOS0xMC4yLTI3LjQtMjQtMzFsMC01Ny4yYzAtNC40LTMuNi04LTgtOHMtOCAzLjYtOCA4bDAgNTcuMmMtMTMuOCAzLjYtMjQgMTYuMS0yNCAzMWwwIDM4LjFMMjM3LjggMTQwbDIyLjYtMzkuNWM0LjktOC42IDQuMi0xOS4zLTEuNy0yNy4ybC00OC02My45Yy04LTEwLjYtMjIuOC0xMi42LTMzLjItNC40cy0xMi4yIDIzLjUtNC4zIDM0LjFsMzguMiA1MC45LTIzLjkgNDEuN2MtNS41IDkuNy0zLjkgMjIgMy45IDI5LjhsNDAuOCA0MC45LTE1MyAyMy45QzM0IDIzMi4zIDAgMjcyLjcgMCAzMjAuNmMwIDg0LjYgOTcuNiAxMjcgMTU0LjYgNjcuMUwyODggMjY2bDAgLjMtNjYuNSA4Ni40Yy0zLjMgNC4zLTUuMSA5LjYtNS4xIDE1LjFsMCA1NC43LTQyLjEgNDljLTguNiAxMC4xLTcuNyAyNS41IDIuMSAzNC4zczI0LjcgNy45IDMzLjQtMi4xbDQ4LTU1LjljMy44LTQuNCA1LjktMTAuMiA1LjktMTYuMWwwLTU1LjRMMjg4IDM0NC43bDAgNjMuMWMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtNjMuMSAyNC4zIDMxLjYgMCA1NS40YzAgNS45IDIuMSAxMS43IDUuOSAxNi4xbDQ4IDU1LjljOC42IDEwLjEgMjMuNiAxMSAzMy40IDIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW90b3JjeWNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODAgMzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNTcuN2wxNi40IDMwLjNMMjU2IDE5MmwtNDUuMy00NS4zYy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43SDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMmg5NmM4OC40IDAgMTYwIDcxLjYgMTYwIDE2MGMwIDExLTEuMSAyMS43LTMuMiAzMmg3MC40Yy0yLjEtMTAuMy0zLjItMjEtMy4yLTMyYzAtNTIuMiAyNS05OC42IDYzLjctMTI3LjhsMTUuNCAyOC42QzQwMi40IDI3Ni4zIDM4NCAzMTIgMzg0IDM1MmMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOHMxMjgtNTcuMyAxMjgtMTI4cy01Ny4zLTEyOC0xMjgtMTI4Yy0xMy41IDAtMjYuNSAyLjEtMzguNyA2TDQxOC4yIDEyOEg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJINDU5LjZjLTcuNSAwLTE0LjcgMi42LTIwLjUgNy40TDM5MS43IDc4LjlsLTE0LTI2Yy03LTEyLjktMjAuNS0yMS0zNS4yLTIxSDI4MHpNNDYyLjcgMzExLjJsMjguMiA1Mi4yYzYuMyAxMS43IDIwLjkgMTYgMzIuNSA5LjdzMTYtMjAuOSA5LjctMzIuNWwtMjguMi01Mi4yYzIuMy0uMyA0LjctLjQgNy4xLS40YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0cy02NC0yOC43LTY0LTY0YzAtMTUuNSA1LjUtMjkuNyAxNC43LTQwLjh6TTE4Ny4zIDM3NmMtOS41IDIzLjUtMzIuNSA0MC01OS4zIDQwYy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0YzI2LjkgMCA0OS45IDE2LjUgNTkuMyA0MGg2Ni40QzI0Mi41IDI2OC44IDE5MC41IDIyNCAxMjggMjI0QzU3LjMgMjI0IDAgMjgxLjMgMCAzNTJzNTcuMyAxMjggMTI4IDEyOGM2Mi41IDAgMTE0LjUtNDQuOCAxMjUuOC0xMDRIMTg3LjN6TTEyOCAzODRhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQuMSAxNzkuMkMxNzMuOCAxMjcuNyAyMjguNiA5NiAyODggOTZzMTE0LjIgMzEuNyAxNDMuOSA4My4yTDU0MC40IDM2OGMxMi4zIDIxLjMtMy4xIDQ4LTI3LjcgNDhINjMuM2MtMjQuNiAwLTQwLTI2LjYtMjcuNy00OEwxNDQuMSAxNzkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW91bnRhaW5DaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAwYy0yNi41IDAtNDggMjEuNS00OCA0OHY5Mi4xbDcxLjQgMTE4LjRjMi41LTEuNiA1LjQtMi41IDguNi0yLjVoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNmgtMy41bDczLjggMTIyLjRjMTIuNCAyMC42IDEyLjkgNDYuMyAxLjIgNjcuM2MtLjQgLjgtLjkgMS42LTEuNCAyLjNINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI0MGMwLTI2LjUtMjEuNS00OC00OC00OEg1NjhWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djcySDQ4MFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEgzMzZ6bTMyIDY0aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZWODBjMC04LjggNy4yLTE2IDE2LTE2ek0zNTIgMTc2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NnptMTYwIDk2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDUyOGMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MnptMTYgODBoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg1MjhjLTguOCAwLTE2LTcuMi0xNi0xNlYzNjhjMC04LjggNy4yLTE2IDE2LTE2ek0yMjQgMTg4LjlMMjgzLjggMjg4SDIyM2wtNDggNjQtMjQuNi00MS4yTDIyNCAxODguOXptMjkuNC00NC4yQzI0Ny4xIDEzNC4zIDIzNiAxMjggMjI0IDEyOHMtMjMuMSA2LjMtMjkuNCAxNi43TDUuMSA0NTguOWMtNi41IDEwLjgtNi43IDI0LjMtLjcgMzUuM1MyMiA1MTIgMzQuNSA1MTJINDEzLjVjMTIuNSAwIDI0LTYuOCAzMC4xLTE3LjhzNS44LTI0LjUtLjctMzUuM0wyNTMuNCAxNDQuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW91bnRhaW5TdW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTYwIDE2MEE4MCA4MCAwIDEgMCA1NjAgMGE4MCA4MCAwIDEgMCAwIDE2MHpNNTUuOSA1MTJIMzgxLjFoNzVINTc4LjljMzMuOCAwIDYxLjEtMjcuNCA2MS4xLTYxLjFjMC0xMS4yLTMuMS0yMi4yLTguOS0zMS44bC0xMzItMjE2LjNDNDk1IDE5Ni4xIDQ4Ny44IDE5MiA0ODAgMTkycy0xNSA0LjEtMTkuMSAxMC43bC00OC4yIDc5TDI4Ni44IDgxYy02LjYtMTAuNi0xOC4zLTE3LTMwLjgtMTdzLTI0LjEgNi40LTMwLjggMTdMOC42IDQyNi40QzMgNDM1LjMgMCA0NDUuNiAwIDQ1Ni4xQzAgNDg3IDI1IDUxMiA1NS45IDUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW91bnRhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyYzEyLjUgMCAyNC4xIDYuNCAzMC44IDE3TDUwMy40IDM5NC40YzUuNiA4LjkgOC42IDE5LjIgOC42IDI5LjdjMCAzMC45LTI1IDU1LjktNTUuOSA1NS45SDU1LjlDMjUgNDgwIDAgNDU1IDAgNDI0LjFjMC0xMC41IDMtMjAuOCA4LjYtMjkuN0wyMjUuMiA0OWM2LjYtMTAuNiAxOC4zLTE3IDMwLjgtMTd6bTY1IDE5MkwyNTYgMTIwLjQgMTc2LjkgMjQ2LjVsMTguMyAyNC40YzYuNCA4LjUgMTkuMiA4LjUgMjUuNiAwbDI1LjYtMzQuMWM2LTguMSAxNS41LTEyLjggMjUuNi0xMi44aDQ5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNdWdIb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODggMEM3NC43IDAgNjQgMTAuNyA2NCAyNGMwIDM4LjkgMjMuNCA1OS40IDM5LjEgNzMuMWwxLjEgMUMxMjAuNSAxMTIuMyAxMjggMTE5LjkgMTI4IDEzNmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMzguOS0yMy40LTU5LjQtMzkuMS03My4xbC0xLjEtMUMxMTkuNSA0Ny43IDExMiA0MC4xIDExMiAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHpNMzIgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0MTZjMCA1MyA0MyA5NiA5NiA5NkgyODhjNTMgMCA5Ni00MyA5Ni05NmgxNmM2MS45IDAgMTEyLTUwLjEgMTEyLTExMnMtNTAuMS0xMTItMTEyLTExMkgzNTIgMzJ6bTM1MiA2NGgxNmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OEgzODRWMjU2ek0yMjQgMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRjMCAzOC45IDIzLjQgNTkuNCAzOS4xIDczLjFsMS4xIDFDMjMyLjUgMTEyLjMgMjQwIDExOS45IDI0MCAxMzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTM4LjktMjMuNC01OS40LTM5LjEtNzMuMWwtMS4xLTFDMjMxLjUgNDcuNyAyMjQgNDAuMSAyMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU11Z1NhdWNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0NDhoNjRjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhzLTU3LjMgMTI4LTEyOCAxMjhINDgwYzAgNTMtNDMgOTYtOTYgOTZIMTkyYy01MyAwLTk2LTQzLTk2LTk2VjY0ek00ODAgMjI0aDMyYzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0SDQ4MFYyMjR6TTMyIDQxNkg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU11c2ljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5OS4xIDYuM2M4LjEgNiAxMi45IDE1LjYgMTIuOSAyNS43djcyVjM2OGMwIDQ0LjItNDMgODAtOTYgODBzLTk2LTM1LjgtOTYtODBzNDMtODAgOTYtODBjMTEuMiAwIDIyIDEuNiAzMiA0LjZWMTQ3TDE5MiAyMjMuOFY0MzJjMCA0NC4yLTQzIDgwLTk2IDgwcy05Ni0zNS44LTk2LTgwczQzLTgwIDk2LTgwYzExLjIgMCAyMiAxLjYgMzIgNC42VjIwMCAxMjhjMC0xNC4xIDkuMy0yNi42IDIyLjgtMzAuN2wzMjAtOTZjOS43LTIuOSAyMC4yLTEuMSAyOC4zIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMSAzMy45YzEyLjctNC42IDI2LjktLjcgMzUuNSA5LjZMMzIwIDM1OS42VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNDQ4YzAgMTMuNS04LjQgMjUuNS0yMS4xIDMwLjFzLTI2LjkgLjctMzUuNS05LjZMNjQgMTUyLjRWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjY0QzAgNTAuNSA4LjQgMzguNSAyMS4xIDMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5haXJhU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjIuNiA0Ni4zYy03LjgtMTEuNy0yMi40LTE3LTM1LjktMTIuOVM2NCA0OS45IDY0IDY0VjI1NkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NFY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMjBIMjI4LjJsOTcuMiAxNDUuOGM3LjggMTEuNyAyMi40IDE3IDM1LjkgMTIuOXMyMi43LTE2LjUgMjIuNy0zMC42VjMyMGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzODRWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjU2SDI2Mi41TDEyMi42IDQ2LjN6TTMwNS4xIDMyMEgzMjB2MjIuM0wzMDUuMSAzMjB6TTE4NS41IDI1NkgxMjhWMTY5LjdMMTg1LjUgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOZXR3b3JrV2lyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDY0SDM4NHY2NEgyNTZWNjR6TTI0MCAwYy0yNi41IDAtNDggMjEuNS00OCA0OHY5NmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0OHYzMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NnYzMkg4MGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2OTZjMCAyNi41IDIxLjUgNDggNDggNDhIMjQwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM2OGMwLTI2LjUtMjEuNS00OC00OC00OEgxOTJWMjg4SDQ0OHYzMkg0MDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djk2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDU2MGMyNi41IDAgNDgtMjEuNSA0OC00OFYzNjhjMC0yNi41LTIxLjUtNDgtNDgtNDhINTEyVjI4OGg5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzNTJWMTkyaDQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDI0MHpNOTYgNDQ4VjM4NEgyMjR2NjRIOTZ6bTMyMC02NEg1NDR2NjRINDE2VjM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmV1dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwIDE3NmExMTIgMTEyIDAgMSAxIDIyNCAwQTExMiAxMTIgMCAxIDEgODAgMTc2ek0yMjQgMzQ5LjFjODEuOS0xNSAxNDQtODYuOCAxNDQtMTczLjFDMzY4IDc4LjggMjg5LjIgMCAxOTIgMFMxNiA3OC44IDE2IDE3NmMwIDg2LjMgNjIuMSAxNTguMSAxNDQgMTczLjFWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzQ5LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5ld3NwYXBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA5NmMwLTM1LjMgMjguNy02NCA2NC02NEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDgwYy00NC4yIDAtODAtMzUuOC04MC04MFYxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlY0MDBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlY5NnptNjQgMjR2ODBjMCAxMy4zIDEwLjcgMjQgMjQgMjRIMjk2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgxODRjLTEzLjMgMC0yNCAxMC43LTI0IDI0em0yMDgtOGMwIDguOCA3LjIgMTYgMTYgMTZoNDhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzg0Yy04LjggMC0xNiA3LjItMTYgMTZ6bTAgOTZjMCA4LjggNy4yIDE2IDE2IDE2aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDM4NGMtOC44IDAtMTYgNy4yLTE2IDE2ek0xNjAgMzA0YzAgOC44IDcuMiAxNiAxNiAxNkg0MzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMTc2Yy04LjggMC0xNiA3LjItMTYgMTZ6bTAgOTZjMCA4LjggNy4yIDE2IDE2IDE2SDQzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTm90RXF1YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5LjggMzcuNGMxNC43IDkuOCAxOC43IDI5LjcgOC45IDQ0LjRMMzM3LjEgMTQ0SDQwMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyOTQuNWwtNjQgOTZINDAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE4Ny44bC02NS4yIDk3LjdjLTkuOCAxNC43LTI5LjcgMTguNy00NC40IDguOXMtMTguNy0yOS43LTguOS00NC40TDExMC45IDM2OEg0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgxNTMuNWw2NC05Nkg0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgyNjAuMmw2NS4yLTk3LjdjOS44LTE0LjcgMjkuNy0xOC43IDQ0LjQtOC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOb3RkZWYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzkwLjNMMTUzLjUgMjU2IDY0IDEyMS43VjM5MC4zek0xMDIuNSA0NDhIMjgxLjVMMTkyIDMxMy43IDEwMi41IDQ0OHptMTI4LTE5MkwzMjAgMzkwLjNWMTIxLjdMMjMwLjUgMjU2ek0yODEuNSA2NEgxMDIuNUwxOTIgMTk4LjMgMjgxLjUgNjR6TTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwSDMzNmMyNi41IDAgNDggMjEuNSA0OCA0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOb3RlU3RpY2t5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDI4OFYzNjhjMC0yNi41IDIxLjUtNDggNDgtNDhINDQ4Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek00NDggMzUySDQwMi43IDMzNmMtOC44IDAtMTYgNy4yLTE2IDE2djY2LjdWNDgwbDMyLTMyIDY0LTY0IDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOb3Rlc01lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzUyVjk2YzAtMzUuMyAyOC43LTY0IDY0LTY0SDQxNmMzNS4zIDAgNjQgMjguNyA2NCA2NFYyOTMuNWMwIDE3LTYuNyAzMy4zLTE4LjcgNDUuM2wtNTguNSA1OC41Yy0xMiAxMi0yOC4zIDE4LjctNDUuMyAxOC43SDE2MGMtMzUuMyAwLTY0LTI4LjctNjQtNjR6TTI3MiAxMjhjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgyMDhjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNDh2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNTZoNDhjOC44IDAgMTYtNy4yIDE2LTE2VjIwOGMwLTguOC03LjItMTYtMTYtMTZIMzIwVjE0NGMwLTguOC03LjItMTYtMTYtMTZIMjcyem0yNCAzMzZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMTM2QzYwLjkgNTEyIDAgNDUxLjEgMCAzNzZWMTUyYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCAyMjRjMCA0OC42IDM5LjQgODggODggODhIMjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA5NmExNjAgMTYwIDAgMSAwIDAgMzIwIDE2MCAxNjAgMCAxIDAgMC0zMjB6TTQ0OCAyNTZBMjI0IDIyNCAwIDEgMSAwIDI1NmEyMjQgMjI0IDAgMSAxIDQ0OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPYmplY3RHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAxMTkuNEMxMi45IDEwOC40IDAgODcuNyAwIDY0QzAgMjguNyAyOC43IDAgNjQgMGMyMy43IDAgNDQuNCAxMi45IDU1LjQgMzJINDU2LjZDNDY3LjYgMTIuOSA0ODguMyAwIDUxMiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0YzAgMjMuNy0xMi45IDQ0LjQtMzIgNTUuNFYzOTIuNmMxOS4xIDExLjEgMzIgMzEuNyAzMiA1NS40YzAgMzUuMy0yOC43IDY0LTY0IDY0Yy0yMy43IDAtNDQuNC0xMi45LTU1LjQtMzJIMTE5LjRjLTExLjEgMTkuMS0zMS43IDMyLTU1LjQgMzJjLTM1LjMgMC02NC0yOC43LTY0LTY0YzAtMjMuNyAxMi45LTQ0LjQgMzItNTUuNFYxMTkuNHpNNDU2LjYgOTZIMTE5LjRjLTUuNiA5LjctMTMuNyAxNy44LTIzLjQgMjMuNFYzOTIuNmM5LjcgNS42IDE3LjggMTMuNyAyMy40IDIzLjRINDU2LjZjNS42LTkuNyAxMy43LTE3LjggMjMuNC0yMy40VjExOS40Yy05LjctNS42LTE3LjgtMTMuNy0yMy40LTIzLjR6TTEyOCAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJIMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTYwek0yNTYgMzIwaDMyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjIyNGg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkgyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjMyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2JqZWN0VW5ncm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAxMTkuNEMxMi45IDEwOC40IDAgODcuNyAwIDY0QzAgMjguNyAyOC43IDAgNjQgMGMyMy43IDAgNDQuNCAxMi45IDU1LjQgMzJIMzI4LjZDMzM5LjYgMTIuOSAzNjAuMyAwIDM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0YzAgMjMuNy0xMi45IDQ0LjQtMzIgNTUuNFYyMzIuNmMxOS4xIDExLjEgMzIgMzEuNyAzMiA1NS40YzAgMzUuMy0yOC43IDY0LTY0IDY0Yy0yMy43IDAtNDQuNC0xMi45LTU1LjQtMzJIMTE5LjRjLTExLjEgMTkuMS0zMS43IDMyLTU1LjQgMzJjLTM1LjMgMC02NC0yOC43LTY0LTY0YzAtMjMuNyAxMi45LTQ0LjQgMzItNTUuNFYxMTkuNHpNMTE5LjQgOTZjLTUuNiA5LjctMTMuNyAxNy44LTIzLjQgMjMuNFYyMzIuNmM5LjcgNS42IDE3LjggMTMuNyAyMy40IDIzLjRIMzI4LjZjNS42LTkuNyAxMy43LTE3LjggMjMuNC0yMy40VjExOS40Yy05LjctNS42LTE3LjgtMTMuNy0yMy40LTIzLjRIMTE5LjR6bTE5MiAzODRjLTExLjEgMTkuMS0zMS43IDMyLTU1LjQgMzJjLTM1LjMgMC02NC0yOC43LTY0LTY0YzAtMjMuNyAxMi45LTQ0LjQgMzItNTUuNFYzNTJoNjR2NDAuNmM5LjcgNS42IDE3LjggMTMuNyAyMy40IDIzLjRINTIwLjZjNS42LTkuNyAxMy43LTE3LjggMjMuNC0yMy40VjI3OS40Yy05LjctNS42LTE3LjgtMTMuNy0yMy40LTIzLjRoLTQ2Yy01LjQtMTUuNC0xNC42LTI4LjktMjYuNS0zOS42VjE5Mmg3Mi42YzExLjEtMTkuMSAzMS43LTMyIDU1LjQtMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjRjMCAyMy43LTEyLjkgNDQuNC0zMiA1NS40VjM5Mi42YzE5LjEgMTEuMSAzMiAzMS43IDMyIDU1LjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRjLTIzLjcgMC00NC40LTEyLjktNTUuNC0zMkgzMTEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2lsQ2FuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAxMjhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDMydjMySDE0NCA5NiA0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2NjQuOGMwIDE5IDExLjIgMzYuMiAyOC41IDQzLjlsNjcuNSAzMFYzNjhjMCAyNi41IDIxLjUgNDggNDggNDhINDAzLjFjMTguNCAwIDM1LjgtNy45IDQ4LTIxLjdMNjMzLjUgMTg3LjdjMTIuMy0xMy45LS4zLTM1LjQtMTguNC0zMS41TDQ0OCAxOTJsLTUwLjUtMjUuMmMtOC45LTQuNC0xOC43LTYuOC0yOC42LTYuOEgyODhWMTI4aDMyek05NiAyMDh2ODYuMUw0OCAyNzIuOFYyMDhIOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9pbFdlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4LjMgNjEuM2MtMTEuNC00Mi43LTU1LjMtNjgtOTgtNTYuNkw0MTQuOSA4LjhDMzk3LjggMTMuNCAzODcuNyAzMSAzOTIuMyA0OGwyNC41IDkxLjRMMzA4LjUgMTY3LjVsLTYuMy0xOC4xQzI5Ny43IDEzNi42IDI4NS42IDEyOCAyNzIgMTI4cy0yNS43IDguNi0zMC4yIDIxLjRsLTEzLjYgMzlMOTYgMjIyLjZWMTg0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjQ0OEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDA2LjdMMzQwIDI1Ny41bC02Mi4yIDE2LjFMMzA1LjMgMzUySDIzOC43TDI2NSAyNzdsLTc0LjYgMTkuM0wxMzcuMyA0NDhIOTZWMjg4LjhsMzM3LjQtODcuNSAyNS4yIDk0YzQuNiAxNy4xIDIyLjEgMjcuMiAzOS4yIDIyLjZsMTUuNS00LjFjNDIuNy0xMS40IDY4LTU1LjMgNTYuNi05OEw1MjguMyA2MS4zek0yMDUuMSA0NDhsMTEuMi0zMkgzMjcuN2wxMS4yIDMySDIwNS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzkuMyA0LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwbC0xNiAxNmMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZsMTYgMTZjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBsMTYtMTZjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTE2LTE2ek0yODEgNjYuN2MtMi4yLTEuNS00LjktMi41LTcuNy0yLjdjLS42IDAtMS4zLS4xLTEuOSAwYy0zLjkgLjItNy40IDEuNy0xMC4xIDQuMmMtLjkgLjgtMS42IDEuNy0yLjMgMi42Yy0xLjcgMi40LTIuNyA1LjMtMi45IDguNWMwIC43IDAgMS40IDAgMi4xYy4yIDIuMiAuOSA0LjMgMS45IDYuMmwuMyAuNmMuMyAuNiAuOCAxLjQgMS40IDIuNGMxLjIgMiAyLjkgNC44IDUuMSA4LjJjNC40IDYuNyAxMS4xIDE1LjUgMjAgMjQuNEMzMDIuNCAxNDEuMSAzMzAuMyAxNjAgMzY4IDE2MGMzMS4yIDAgNTYuNi0xMC40IDczLjktMjAuMmM4LjctNSAxNS42LTkuOSAyMC40LTEzLjhjMi40LTEuOSA0LjMtMy42IDUuNy00LjljLjctLjYgMS4zLTEuMiAxLjctMS42bC42LS41IC4xLS4xIC4xLS4xIDAgMCAwIDBjNS45LTUuOCA5LjUtMTMuOSA5LjUtMjIuOGMwLTE3LjctMTQuMy0zMi0zMi0zMmMtOC43IDAtMTYuNyAzLjUtMjIuNCA5LjJjLS4xIC4xLS4yIC4yLS41IC40Yy0uNSAuNS0xLjUgMS4zLTIuOCAyLjRjLTIuNyAyLjItNi44IDUuMi0xMi4xIDguMkMzOTkuNCA5MC40IDM4NC44IDk2IDM2OCA5NmMtMjAuOCAwLTQyLjQtNy01OS41LTE0LjZjLTguNC0zLjctMTUuNC03LjUtMjAuMy0xMC4zYy0yLjQtMS40LTQuMy0yLjUtNS42LTMuM2MtLjYtLjQtMS4xLS43LTEuNC0uOWwtLjMtLjJ6TTExNS4yIDE2OS42YzgtNiAxNy45LTkuNiAyOC44LTkuNmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OEgxMDkuOGMtNy42IDAtMTMuOCA2LjItMTMuOCAxMy44YzAgMS41IC4yIDIuOSAuNyA0LjRsOCAyNGM0LjQgMTMuMSAxNi42IDIxLjkgMzAuNCAyMS45SDE0NGgxNmMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NGMtNTAuOCAwLTgyLjctMjEuNS0xMDIuMi00Mi44Yy05LjktMTAuOC0xNi42LTIxLjYtMjAuOS0yOS43Yy0yLjEtNC0zLjYtNy4zLTQuNS05LjZjLS41LTEuMS0uOC0yLTEtMi41bC0uMi0uNWMtLjMtLjktLjctMS44LTEuMS0yLjZjLTEuMi0yLjItMi44LTQtNC43LTUuNGMtMS45LTEuNC00LjEtMi4zLTYuNS0yLjhjLTEuNC0uMy0yLjktLjMtNC40LS4yYy0yLjUgLjItNC44IDEtNi44IDIuM2MtMS4xIC43LTIuMiAxLjUtMy4xIDIuNWMtMi40IDIuNS00LjEgNS44LTQuNSA5LjVjLS4xIC42LS4xIDEuMS0uMSAxLjdjMCAwIDAgMCAwIDBjMCAuOCAuMSAxLjcgLjIgMi41bDAgLjFjMCAuMyAuMSAuOCAuMiAxLjNjLjIgMS4xIC40IDIuNyAuOCA0LjZjLjggMy45IDIgOS40IDMuOSAxNS45YzMuOCAxMyAxMC4zIDMwLjQgMjEuMyA0OEM0OC43IDQ3Ni4yIDg5LjQgNTEyIDE2MCA1MTJjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhjMC0yMy4zLTYuMi00NS4yLTE3LjEtNjRoMjIuNmMyNS41IDAgNDkuOS0xMC4xIDY3LjktMjguMWwyNi41LTI2LjVjNi02IDE0LjEtOS40IDIyLjYtOS40SDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMmMtMjUuNyAwLTQxLjQtMTIuNS01MS4yLTI1LjZjLTUtNi43LTguNC0xMy40LTEwLjUtMTguNmMtMS4xLTIuNS0xLjgtNC42LTIuMi02Yy0uMi0uNy0uNC0xLjItLjUtMS41bC0uMS0uMmMtLjMtMS4zLS44LTIuNi0xLjUtMy44Yy0xLjEtMi0yLjYtMy44LTQuNC01LjFjLTIuNy0yLTYtMy4yLTkuNi0zLjJsLS4yIDBjLTggLjEtMTQuNiA2LjEtMTUuNiAxMy45bDAgMGMwIC4zLS4xIC42LS4yIDEuMWMtLjEgLjktLjMgMi4xLS40IDMuNmMtLjMgMy0uNiA3LjMtLjYgMTIuNGMwIDEwLjEgMS4xIDIzLjkgNS44IDM4LjFjNC44IDE0LjMgMTMuNCAyOS4zIDI4LjYgNDAuN0MzNjguNyA0NzMuMyAzODkuMyA0ODAgNDE2IDQ4MGM1MyAwIDk2LTQzIDk2LTk2VjI4OGMwLTUzLTQzLTk2LTk2LTk2aC01LjVjLTI1LjUgMC00OS45IDEwLjEtNjcuOSAyOC4xbC0yNi41IDI2LjVjLTYgNi0xNC4xIDkuNC0yMi42IDkuNEgyNDUuMmM2LjktMTQuNSAxMC44LTMwLjggMTAuOC00OGMwLTYxLjktNTAuMS0xMTItMTEyLTExMmMtMjUuMiAwLTQ4LjUgOC4zLTY3LjIgMjIuNGMtMTQuMSAxMC42LTE3IDMwLjctNi40IDQ0LjhzMzAuNyAxNyA0NC44IDYuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT3R0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgxLjUgMTk3LjFsMTIuOSA2LjRjNS45IDMgMTIuNCA0LjUgMTkuMSA0LjVjMjMuNSAwIDQyLjYtMTkuMSA0Mi42LTQyLjZWMTQ0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2MjEuNGMwIDIzLjUgMTkuMSA0Mi42IDQyLjYgNDIuNmM2LjYgMCAxMy4xLTEuNSAxOS4xLTQuNWwxMi45LTYuNCA4LjQtNC4yTDEzNS4xIDE4NWMtNC41LTMtNy4xLTgtNy4xLTEzLjNWMTY4YzAtMTMuMyAxMC43LTI0IDI0LTI0aDE2YzEzLjMgMCAyNCAxMC43IDI0IDI0djMuN2MwIDUuMy0yLjcgMTAuMy03LjEgMTMuM2wtMTEuOCA3LjkgOC40IDQuMnptLTguNiA0OS40TDE2MCAyNDBsLTEyLjkgNi40Yy0xMi42IDYuMy0yNi41IDkuNi00MC41IDkuNmMtMy42IDAtNy4xLS4yLTEwLjYtLjZ2LjZjMCAzNS4zIDI4LjcgNjQgNjQgNjRoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0VjMzNiAzMjBjMC0yMy43IDEyLjktNDQuNCAzMi01NS40YzkuNC01LjQgMjAuMy04LjYgMzItOC42VjI0MGMwLTI2LjUgMjEuNS00OCA0OC00OGM4LjggMCAxNiA3LjIgMTYgMTZ2MzIgMTYgNDhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyMDQuM2MwLTQ4LjItMzAuOC05MS03Ni42LTEwNi4zbC04LjUtMi44Yy04LTIuNy0xMi42LTExLjEtMTAuNC0xOS4zczEwLjMtMTMuMiAxOC42LTExLjZsMTkuOSA0QzU3NiA4Ni4xIDY0MCAxNjQuMiA2NDAgMjU0LjlsMCAxLjFoMGMwIDEyMy43LTEwMC4zIDIyNC0yMjQgMjI0aC0xLjFIMjU2aC0uNkMxMzIgNDgwIDMyIDM4MCAzMiAyNTYuNlYyNTYgMjE2LjhjLTEwLjEtMTQuNi0xNi0zMi4zLTE2LTUxLjRWMTQ0bDAtMS40QzYuNyAxMzkuMyAwIDEzMC41IDAgMTIwYzAtMTMuMyAxMC43LTI0IDI0LTI0aDIuOEM0NC44IDU4LjIgODMuMyAzMiAxMjggMzJoNjRjNDQuNyAwIDgzLjIgMjYuMiAxMDEuMiA2NEgyOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRjMCAxMC41LTYuNyAxOS4zLTE2IDIyLjZsMCAxLjR2MjEuNGMwIDEuNCAwIDIuOC0uMSA0LjNjMTItNi4yIDI1LjctOS42IDQwLjEtOS42aDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJoLThjLTEzLjMgMC0yNCAxMC43LTI0IDI0djhoNTYuNGMtMTUuMiAxNy0yNC40IDM5LjQtMjQuNCA2NEgzMjBjLTQyLjMgMC03OC4yLTI3LjQtOTEtNjUuM2MtNS4xIC45LTEwLjMgMS4zLTE1LjYgMS4zYy0xNC4xIDAtMjcuOS0zLjMtNDAuNS05LjZ6TTk2IDEyOGExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6bTExMiAxNmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPdXRkZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyQzE0LjMgOTYgMCA4MS43IDAgNjR6TTE5MiAxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6bTMyIDk2SDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6TTAgNDQ4YzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TS4yIDI2OC42Yy04LjItNi40LTguMi0xOC45IDAtMjUuM2wxMDEuOS03OS4zYzEwLjUtOC4yIDI1LjgtLjcgMjUuOCAxMi42VjMzNS4zYzAgMTMuMy0xNS4zIDIwLjgtMjUuOCAxMi42TC4yIDI2OC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJoOTZjODguNCAwIDE2MCA3MS42IDE2MCAxNjBzLTcxLjYgMTYwLTE2MCAxNjBINjR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzIwIDk2ek02NCAyODhoOTZjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZINjRWMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWdlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxMjh6bTY0IDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek04MCAzMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIODB6bTEzNiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDIxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFpbnRSb2xsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMzUyYzM1LjMgMCA2NCAyOC43IDY0IDY0djY0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMTYwIDM1MmMwLTE3LjcgMTQuMy0zMiAzMi0zMlYzMDRjMC00NC4yIDM1LjgtODAgODAtODBINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE2MCA2OS41YzM3LjMgMTMuMiA2NCA0OC43IDY0IDkwLjV2MzJjMCA1My00MyA5Ni05NiA5NkgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhaW50YnJ1c2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM5LjMgMzY3LjFjMjcuMy0zLjkgNTEuOS0xOS40IDY3LjItNDIuOUw1NjguMiA3NC4xYzEyLjYtMTkuNSA5LjQtNDUuMy03LjYtNjEuMlM1MTcuNy00LjQgNDk5LjEgOS42TDI2Mi40IDE4Ny4yYy0yNCAxOC0zOC4yIDQ2LjEtMzguNCA3Ni4xTDMzOS4zIDM2Ny4xem0tMTkuNiAyNS40bC0xMTYtMTA0LjRDMTQzLjkgMjkwLjMgOTYgMzM5LjYgOTYgNDAwYzAgMy45IC4yIDcuOCAuNiAxMS42Qzk4LjQgNDI5LjEgODYuNCA0NDggNjguOCA0NDhINjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMjA4YzYxLjkgMCAxMTItNTAuMSAxMTItMTEyYzAtMi41LS4xLTUtLjItNy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWxldHRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAyNTZjMCAuOSAwIDEuOCAwIDIuN2MtLjQgMzYuNS0zMy42IDYxLjMtNzAuMSA2MS4zSDM0NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhjMCAzLjQgLjQgNi43IDEgOS45YzIuMSAxMC4yIDYuNSAyMCAxMC44IDI5LjljNi4xIDEzLjggMTIuMSAyNy41IDEyLjEgNDJjMCAzMS44LTIxLjYgNjAuNy01My40IDYyYy0zLjUgLjEtNyAuMi0xMC42IC4yQzExNC42IDUxMiAwIDM5Ny40IDAgMjU2UzExNC42IDAgMjU2IDBTNTEyIDExNC42IDUxMiAyNTZ6TTEyOCAyODhhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMC05NmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTI4OCA5NmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem05NiA5NmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhbGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjR2NjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIOTYgMzIwIDU0NGg2NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg1NzZWMzg0aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDU0NCAzMjAgOTYgMzJ6bTk2IDY0SDI4OHY2NEgxMjhWMzg0em0yMjQgMEg1MTJ2NjRIMzUyVjM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFub3JhbWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDUuNiAzMkMyMC40IDMyIDAgNTIuNCAwIDc3LjZWNDM0LjRDMCA0NTkuNiAyMC40IDQ4MCA0NS42IDQ4MGM1LjEgMCAxMC0uOCAxNC43LTIuNEM3NC42IDQ3Mi44IDE3Ny42IDQ0MCAzMjAgNDQwczI0NS40IDMyLjggMjU5LjYgMzcuNmM0LjcgMS42IDkuNyAyLjQgMTQuNyAyLjRjMjUuMiAwIDQ1LjYtMjAuNCA0NS42LTQ1LjZWNzcuNkM2NDAgNTIuNCA2MTkuNiAzMiA1OTQuNCAzMmMtNSAwLTEwIC44LTE0LjcgMi40QzU2NS40IDM5LjIgNDYyLjQgNzIgMzIwIDcyUzc0LjYgMzkuMiA2MC40IDM0LjRDNTUuNiAzMi44IDUwLjcgMzIgNDUuNiAzMnpNOTYgMTYwYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTI3MiAwYzcuOSAwIDE1LjQgMy45IDE5LjggMTAuNUw1MTIuMyAzNTNjNS40IDggNS42IDE4LjQgLjQgMjYuNXMtMTQuNyAxMi4zLTI0LjIgMTAuN0M0NDIuNyAzODIuNCAzODUuMiAzNzYgMzIwIDM3NmMtNjUuNiAwLTEyMy40IDYuNS0xNjkuMyAxNC40Yy05LjggMS43LTE5LjctMi45LTI0LjctMTEuNXMtNC4zLTE5LjQgMS45LTI3LjJMMTk3LjMgMjY1YzQuNi01LjcgMTEuNC05IDE4LjctOXMxNC4yIDMuMyAxOC43IDlsMjYuNCAzMy4xIDg3LTEyNy42YzQuNS02LjYgMTEuOS0xMC41IDE5LjgtMTAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFwZXJQbGFuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTguMSA1LjZjMTAuMSA3IDE1LjQgMTkuMSAxMy41IDMxLjJsLTY0IDQxNmMtMS41IDkuNy03LjQgMTguMi0xNiAyM3MtMTguOSA1LjQtMjggMS42TDI4NCA0MjcuN2wtNjguNSA3NC4xYy04LjkgOS43LTIyLjkgMTIuOS0zNS4yIDguMVMxNjAgNDkzLjIgMTYwIDQ4MFYzOTYuNGMwLTQgMS41LTcuOCA0LjItMTAuN0wzMzEuOCAyMDIuOGM1LjgtNi4zIDUuNi0xNi0uNC0yMnMtMTUuNy02LjQtMjItLjdMMTA2IDM2MC44IDE3LjcgMzE2LjZDNy4xIDMxMS4zIC4zIDMwMC43IDAgMjg4LjlzNS45LTIyLjggMTYuMS0yOC43bDQ0OC0yNTZjMTAuNy02LjEgMjMuOS01LjUgMzQgMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXBlcmNsaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY0LjIgODMuOGMtMjQuNC0yNC40LTY0LTI0LjQtODguNCAwbC0xODQgMTg0Yy00Mi4xIDQyLjEtNDIuMSAxMTAuMyAwIDE1Mi40czExMC4zIDQyLjEgMTUyLjQgMGwxNTItMTUyYzEwLjktMTAuOSAyOC43LTEwLjkgMzkuNiAwczEwLjkgMjguNyAwIDM5LjZsLTE1MiAxNTJjLTY0IDY0LTE2Ny42IDY0LTIzMS42IDBzLTY0LTE2Ny42IDAtMjMxLjZsMTg0LTE4NGM0Ni4zLTQ2LjMgMTIxLjMtNDYuMyAxNjcuNiAwczQ2LjMgMTIxLjMgMCAxNjcuNmwtMTc2IDE3NmMtMjguNiAyOC42LTc1IDI4LjYtMTAzLjYgMHMtMjguNi03NSAwLTEwMy42bDE0NC0xNDRjMTAuOS0xMC45IDI4LjctMTAuOSAzOS42IDBzMTAuOSAyOC43IDAgMzkuNmwtMTQ0IDE0NGMtNi43IDYuNy02LjcgMTcuNyAwIDI0LjRzMTcuNyA2LjcgMjQuNCAwbDE3Ni0xNzZjMjQuNC0yNC40IDI0LjQtNjQgMC04OC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXJhY2h1dGVCb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgzLjUgMTkyYy4zLTUuMyAuNS0xMC42IC41LTE2YzAtNTEtMTUuOS05Ni00MC4yLTEyNy42QzMxOS41IDE2LjkgMjg4LjIgMCAyNTYgMHMtNjMuNSAxNi45LTg3LjggNDguNEMxNDMuOSA4MCAxMjggMTI1IDEyOCAxNzZjMCA1LjQgLjIgMTAuNyAuNSAxNkgyNDBWMzIwSDIwOGMtNyAwLTEzLjcgMS41LTE5LjcgNC4yTDY4LjIgMTkySDk2LjVjLS4zLTUuMy0uNS0xMC42LS41LTE2YzAtNjQgMjIuMi0xMjEuMiA1Ny4xLTE1OS4zQzYyIDQ5LjMgMTguNiAxMjIuNiA0LjIgMTczLjZDMS41IDE4My4xIDkgMTkyIDE4LjkgMTkyaDZMMTY1LjIgMzQ2LjNjLTMuMyA2LjUtNS4yIDEzLjktNS4yIDIxLjd2OTZjMCAyNi41IDIxLjUgNDggNDggNDhoOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzY4YzAtNy44LTEuOS0xNS4yLTUuMi0yMS43TDQ4Ny4xIDE5Mmg2YzkuOSAwIDE3LjQtOC45IDE0LjctMTguNEM0OTMuNCAxMjIuNiA0NTAgNDkuMyAzNTguOSAxNi43QzM5My44IDU0LjggNDE2IDExMi4xIDQxNiAxNzZjMCA1LjQtLjIgMTAuNy0uNSAxNmgyOC4zTDMyMy43IDMyNC4yYy02LTIuNy0xMi43LTQuMi0xOS43LTQuMkgyNzJWMTkySDM4My41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXJhZ3JhcGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDMyaDY0SDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzODRsMCAzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0zNTJIMjg4VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJIMTkyYy04OC40IDAtMTYwLTcxLjYtMTYwLTE2MHM3MS42LTE2MCAxNjAtMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXNzcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgzODRjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMTgzIDI3OC44Yy0yNy45LTEzLjItNDguNC0zOS40LTUzLjctNzAuOGgzOS4xYzEuNiAzMC40IDcuNyA1My44IDE0LjYgNzAuOHptNDEuMyA5LjJsLS4zIDAtLjMgMGMtMi40LTMuNS01LjctOC45LTkuMS0xNi41Yy02LTEzLjYtMTIuNC0zNC4zLTE0LjItNjMuNWg0Ny4xYy0xLjggMjkuMi04LjEgNDkuOS0xNC4yIDYzLjVjLTMuNCA3LjYtNi43IDEzLTkuMSAxNi41em00MC43LTkuMmM2LjgtMTcuMSAxMi45LTQwLjQgMTQuNi03MC44aDM5LjFjLTUuMyAzMS40LTI1LjggNTcuNi01My43IDcwLjh6TTI3OS42IDE3NmMtMS42LTMwLjQtNy43LTUzLjgtMTQuNi03MC44YzI3LjkgMTMuMiA0OC40IDM5LjQgNTMuNyA3MC44SDI3OS42ek0yMjMuNyA5NmwuMyAwIC4zIDBjMi40IDMuNSA1LjcgOC45IDkuMSAxNi41YzYgMTMuNiAxMi40IDM0LjMgMTQuMiA2My41SDIwMC41YzEuOC0yOS4yIDguMS00OS45IDE0LjItNjMuNWMzLjQtNy42IDYuNy0xMyA5LjEtMTYuNXpNMTgzIDEwNS4yYy02LjggMTcuMS0xMi45IDQwLjQtMTQuNiA3MC44SDEyOS4zYzUuMy0zMS40IDI1LjgtNTcuNiA1My43LTcwLjh6TTM1MiAxOTJBMTI4IDEyOCAwIDEgMCA5NiAxOTJhMTI4IDEyOCAwIDEgMCAyNTYgMHpNMTEyIDM4NGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkgzMzZjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXN0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMGMtMjMuNyAwLTQ0LjQgMTIuOS01NS40IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODBWNDAwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDE5MlYxNzZjMC00NC4yIDM1LjgtODAgODAtODBoNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhIMjE1LjRDMjA0LjQgMTIuOSAxODMuNyAwIDE2MCAwek0yNzIgMTI4Yy0yNi41IDAtNDggMjEuNS00OCA0OFY0NDh2MTZjMCAyNi41IDIxLjUgNDggNDggNDhINDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI0My45YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlsLTY3LjktNjcuOWMtOS05LTIxLjItMTQuMS0zMy45LTE0LjFIMzIwIDI3MnpNMTYwIDQwYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGF1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggNjRDMjEuNSA2NCAwIDg1LjUgMCAxMTJWNDAwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjExMmMwLTI2LjUtMjEuNS00OC00OC00OEg0OHptMTkyIDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjQwMGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzMmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDhIMjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI2LjUgOTIuOWMxNC4zIDQyLjktLjMgODYuMi0zMi42IDk2LjhzLTcwLjEtMTUuNi04NC40LTU4LjVzLjMtODYuMiAzMi42LTk2LjhzNzAuMSAxNS42IDg0LjQgNTguNXpNMTAwLjQgMTk4LjZjMTguOSAzMi40IDE0LjMgNzAuMS0xMC4yIDg0LjFzLTU5LjctLjktNzguNS0zMy4zUy0yLjcgMTc5LjMgMjEuOCAxNjUuM3M1OS43IC45IDc4LjUgMzMuM3pNNjkuMiA0MDEuMkMxMjEuNiAyNTkuOSAyMTQuNyAyMjQgMjU2IDIyNHMxMzQuNCAzNS45IDE4Ni44IDE3Ny4yYzMuNiA5LjcgNS4yIDIwLjEgNS4yIDMwLjV2MS42YzAgMjUuOC0yMC45IDQ2LjctNDYuNyA0Ni43Yy0xMS41IDAtMjIuOS0xLjQtMzQtNC4ybC04OC0yMmMtMTUuMy0zLjgtMzEuMy0zLjgtNDYuNiAwbC04OCAyMmMtMTEuMSAyLjgtMjIuNSA0LjItMzQgNC4yQzg0LjkgNDgwIDY0IDQ1OS4xIDY0IDQzMy4zdi0xLjZjMC0xMC40IDEuNi0yMC44IDUuMi0zMC41ek00MjEuOCAyODIuN2MtMjQuNS0xNC0yOS4xLTUxLjctMTAuMi04NC4xczU0LTQ3LjMgNzguNS0zMy4zczI5LjEgNTEuNyAxMC4yIDg0LjFzLTU0IDQ3LjMtNzguNSAzMy4zek0zMTAuMSAxODkuN2MtMzIuMy0xMC42LTQ2LjktNTMuOS0zMi42LTk2LjhzNTIuMS02OS4xIDg0LjQtNTguNXM0Ni45IDUzLjkgMzIuNiA5Ni44cy01Mi4xIDY5LjEtODQuNCA1OC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZWFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgNDQ1LjNWMzIzLjVsLTk0LjMgNzcuMWMyNi4xIDIyLjggNTguNSAzOC43IDk0LjMgNDQuN3pNODkuMiAzNTEuMUwyMjQgMjQwLjhWNjYuN0MxMzMuMiA4MS45IDY0IDE2MC45IDY0IDI1NmMwIDM0LjYgOS4yIDY3LjEgMjUuMiA5NS4xem0yOTMuMSA0OS41TDI4OCAzMjMuNVY0NDUuM2MzNS43LTYgNjguMS0yMS45IDk0LjMtNDQuN3ptNDAuNi00OS41YzE2LTI4IDI1LjItNjAuNSAyNS4yLTk1LjFjMC05NS4xLTY5LjItMTc0LjEtMTYwLTE4OS4zVjI0MC44TDQyMi44IDM1MS4xek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlbkNsaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDUzLjMgMTkuM2wzOS40IDM5LjRjMjUgMjUgMjUgNjUuNSAwIDkwLjVsLTUyLjEgNTIuMSAwIDAtMS0xIDAgMC0xNi0xNi05Ni05Ni0xNy0xNyA1Mi4xLTUyLjFjMjUtMjUgNjUuNS0yNSA5MC41IDB6TTI0MSAxMTQuOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMMTA1IDIxN2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOUwxNzMuMSA4MWMyOC4xLTI4LjEgNzMuNy0yOC4xIDEwMS44IDBMMjg4IDk0LjFsMTcgMTcgOTYgOTYgMTYgMTYgMSAxLTE3IDE3TDIyOS41IDQxMi41Yy00OCA0OC0xMDkuMiA4MC44LTE3NS44IDk0LjFsLTI1IDVjLTcuOSAxLjYtMTYtLjktMjEuNy02LjZzLTguMS0xMy44LTYuNi0yMS43bDUtMjVjMTMuMy02Ni42IDQ2LjEtMTI3LjggOTQuMS0xNzUuOEwyNTQuMSAxMjggMjQxIDExNC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW5GYW5jeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzMuNSAyNy4xQzM4OC41IDkuOSA0MTAuMiAwIDQzMyAwYzQzLjYgMCA3OSAzNS40IDc5IDc5YzAgMjIuOC05LjkgNDQuNi0yNy4xIDU5LjZMMjc3LjcgMzE5bC0xMC4zLTEwLjMtNjQtNjRMMTkzIDIzNC4zIDM3My41IDI3LjF6TTE3MC4zIDI1Ni45bDEwLjQgMTAuNCA2NCA2NCAxMC40IDEwLjQtMTkuMiA4My40Yy0zLjkgMTcuMS0xNi45IDMwLjctMzMuOCAzNS40TDI0LjQgNTEwLjNsOTUuNC05NS40YzIuNiAuNyA1LjQgMS4xIDguMyAxLjFjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJjMCAyLjkgLjQgNS42IDEuMSA4LjNMMS43IDQ4Ny42IDUxLjUgMzEwYzQuNy0xNi45IDE4LjMtMjkuOSAzNS40LTMzLjhsODMuNC0xOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW5OaWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4LjQgMTguM0wzMTIuNyA3NC4xIDQzNy45IDE5OS4zbDU1LjctNTUuN2MyMS45LTIxLjkgMjEuOS01Ny4zIDAtNzkuMkw0NDcuNiAxOC4zYy0yMS45LTIxLjktNTcuMy0yMS45LTc5LjIgMHpNMjg4IDk0LjZsLTkuMiAyLjhMMTM0LjcgMTQwLjZjLTE5LjkgNi0zNS43IDIxLjItNDIuMyA0MUwzLjggNDQ1LjhjLTMuOCAxMS4zLTEgMjMuOSA3LjMgMzIuNEwxNjQuNyAzMjQuN2MtMy02LjMtNC43LTEzLjMtNC43LTIwLjdjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OGMtNy40IDAtMTQuNC0xLjctMjAuNy00LjdMMzMuNyA1MDAuOWM4LjYgOC4zIDIxLjEgMTEuMiAzMi40IDcuM2wyNjQuMy04OC42YzE5LjctNi42IDM1LTIyLjQgNDEtNDIuM2w0My4yLTE0NC4xIDIuOC05LjJMMjg4IDk0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlblJ1bGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2OS4zIDE5LjNsMjMuNCAyMy40YzI1IDI1IDI1IDY1LjUgMCA5MC41bC01Ni40IDU2LjRMMzIyLjMgNzUuN2w1Ni40LTU2LjRjMjUtMjUgNjUuNS0yNSA5MC41IDB6TTQ0LjkgMzUzLjJMMjk5LjcgOTguMyA0MTMuNyAyMTIuMyAxNTguOCA0NjcuMWMtNi43IDYuNy0xNS4xIDExLjYtMjQuMiAxNC4ybC0xMDQgMjkuN2MtOC40IDIuNC0xNy40IC4xLTIzLjYtNi4xcy04LjUtMTUuMi02LjEtMjMuNmwyOS43LTEwNGMyLjYtOS4yIDcuNS0xNy41IDE0LjItMjQuMnpNMjQ5LjQgMTAzLjRMMTAzLjQgMjQ5LjQgMTYgMTYxLjljLTE4LjctMTguNy0xOC43LTQ5LjEgMC02Ny45TDk0LjEgMTZjMTguNy0xOC43IDQ5LjEtMTguNyA2Ny45IDBsMTkuOCAxOS44Yy0uMyAuMy0uNyAuNi0xIC45bC02NCA2NGMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwbDY0LTY0Yy4zLS4zIC42LS43IC45LTFsNDUuMSA0NS4xek00MDguNiAyNjIuNmw0NS4xIDQ1LjFjLS4zIC4zLS43IC42LTEgLjlsLTY0IDY0Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBsNjQtNjRjLjMtLjMgLjYtLjcgLjktMUw0OTYgMzUwLjFjMTguNyAxOC43IDE4LjcgNDkuMSAwIDY3LjlMNDE3LjkgNDk2Yy0xOC43IDE4LjctNDkuMSAxOC43LTY3LjkgMGwtODcuNC04Ny40TDQwOC42IDI2Mi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW5Ub1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzEuNiAyMS43Yy0yMS45LTIxLjktNTcuMy0yMS45LTc5LjIgMEwzNjIuMyA1MS43bDk3LjkgOTcuOSAzMC4xLTMwLjFjMjEuOS0yMS45IDIxLjktNTcuMyAwLTc5LjJMNDcxLjYgMjEuN3ptLTI5OS4yIDIyMGMtNi4xIDYuMS0xMC44IDEzLjYtMTMuNSAyMS45bC0yOS42IDg4LjhjLTIuOSA4LjYtLjYgMTguMSA1LjggMjQuNnMxNS45IDguNyAyNC42IDUuOGw4OC44LTI5LjZjOC4yLTIuNyAxNS43LTcuNCAyMS45LTEzLjVMNDM3LjcgMTcyLjMgMzM5LjcgNzQuMyAxNzIuNCAyNDEuN3pNOTYgNjRDNDMgNjQgMCAxMDcgMCAxNjBWNDE2YzAgNTMgNDMgOTYgOTYgOTZIMzUyYzUzIDAgOTYtNDMgOTYtOTZWMzIwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjIuNyAxOS4zTDMxNC4zIDY3LjcgNDQ0LjMgMTk3LjdsNDguNC00OC40YzI1LTI1IDI1LTY1LjUgMC05MC41TDQ1My4zIDE5LjNjLTI1LTI1LTY1LjUtMjUtOTAuNSAwem0tNzEgNzFMNTguNiAzMjMuNWMtMTAuNCAxMC40LTE4IDIzLjMtMjIuMiAzNy40TDEgNDgxLjJDLTEuNSA0ODkuNyAuOCA0OTguOCA3IDUwNXMxNS4zIDguNSAyMy43IDYuMWwxMjAuMy0zNS40YzE0LjEtNC4yIDI3LTExLjggMzcuNC0yMi4yTDQyMS43IDIyMC4zIDI5MS43IDkwLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlbmNpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTAuMyAyMzFsMTEuMy0xMS4zLTMzLjktMzMuOS02Mi4xLTYyLjFMMjkxLjcgODkuOGwtMTEuMyAxMS4zLTIyLjYgMjIuNkw1OC42IDMyMi45Yy0xMC40IDEwLjQtMTggMjMuMy0yMi4yIDM3LjRMMSA0ODAuN2MtMi41IDguNC0uMiAxNy41IDYuMSAyMy43czE1LjMgOC41IDIzLjcgNi4xbDEyMC4zLTM1LjRjMTQuMS00LjIgMjctMTEuOCAzNy40LTIyLjJMMzg3LjcgMjUzLjcgNDEwLjMgMjMxek0xNjAgMzk5LjRsLTkuMSAyMi43Yy00IDMuMS04LjUgNS40LTEzLjMgNi45TDU5LjQgNDUybDIzLTc4LjFjMS40LTQuOSAzLjgtOS40IDYuOS0xMy4zbDIyLjctOS4xdjMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMnpNMzYyLjcgMTguN0wzNDguMyAzMy4yIDMyNS43IDU1LjggMzE0LjMgNjcuMWwzMy45IDMzLjkgNjIuMSA2Mi4xIDMzLjkgMzMuOSAxMS4zLTExLjMgMjIuNi0yMi42IDE0LjUtMTQuNWMyNS0yNSAyNS02NS41IDAtOTAuNUw0NTMuMyAxOC43Yy0yNS0yNS02NS41LTI1LTkwLjUgMHptLTQ3LjQgMTY4bC0xNDQgMTQ0Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42bDE0NC0xNDRjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW9wbGVBcnJvd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNjRhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgNjQgNjR6TTI1LjkgMjMzLjRDMjkuMyAxOTEuOSA2NCAxNjAgMTA1LjYgMTYwaDQ0LjhjMjcgMCA1MSAxMy40IDY1LjUgMzQuMWMtMi43IDEuOS01LjIgNC03LjUgNi4zbC02NCA2NGMtMjEuOSAyMS45LTIxLjkgNTcuMyAwIDc5LjJMMTkyIDM5MS4yVjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEgxMTJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM0OC4zYy0yNi41LTkuNS00NC43LTM1LjgtNDIuMi02NS42bDQuMS00OS4zek00NDggNjRhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgNDQ4IDY0ek00MzEuNiAyMDAuNGMtMi4zLTIuMy00LjktNC40LTcuNS02LjNjMTQuNS0yMC43IDM4LjYtMzQuMSA2NS41LTM0LjFoNDQuOGM0MS42IDAgNzYuMyAzMS45IDc5LjcgNzMuNGw0LjEgNDkuM2MyLjUgMjkuOC0xNS43IDU2LjEtNDIuMiA2NS42VjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OTZjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM5MS4ybDQ3LjYtNDcuNmMyMS45LTIxLjkgMjEuOS01Ny4zIDAtNzkuMmwtNjQtNjR6TTI3MiAyNDB2MzJoOTZWMjQwYzAtOS43IDUuOC0xOC41IDE0LjgtMjIuMnMxOS4zLTEuNyAyNi4yIDUuMmw2NCA2NGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtNjQgNjRjLTYuOSA2LjktMTcuMiA4LjktMjYuMiA1LjJzLTE0LjgtMTIuNS0xNC44LTIyLjJWMzM2SDI3MnYzMmMwIDkuNy01LjggMTguNS0xNC44IDIyLjJzLTE5LjMgMS43LTI2LjItNS4ybC02NC02NGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsNjQtNjRjNi45LTYuOSAxNy4yLTguOSAyNi4yLTUuMnMxNC44IDEyLjUgMTQuOCAyMi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW9wbGVDYXJyeUJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCA0OGE0OCA0OCAwIDEgMSA5NiAwQTQ4IDQ4IDAgMSAxIDgwIDQ4em02NCAxOTMuN3Y2NS4xbDUxIDUxYzcuMSA3LjEgMTEuOCAxNi4yIDEzLjQgMjYuMWwxNS4yIDkwLjljMi45IDE3LjQtOC45IDMzLjktMjYuMyAzNi44cy0zMy45LTguOS0zNi44LTI2LjNsLTE0LjMtODUuOUw2Ni44IDMyMEM1NC44IDMwOCA0OCAyOTEuNyA0OCAyNzQuN1YxODYuNmMwLTMyLjQgMjYuMi01OC42IDU4LjYtNTguNmMyNC4xIDAgNDYuNSAxMiA1OS45IDMybDQ3LjQgNzEuMSAxMC4xIDVWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMySDM4NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY3Ni4ybDEwLjEtNUw0NzMuNSAxNjBjMTMuMy0yMCAzNS44LTMyIDU5LjktMzJjMzIuNCAwIDU4LjYgMjYuMiA1OC42IDU4LjZ2ODguMWMwIDE3LTYuNyAzMy4zLTE4LjcgNDUuM2wtNzkuNCA3OS40LTE0LjMgODUuOWMtMi45IDE3LjQtMTkuNCAyOS4yLTM2LjggMjYuM3MtMjkuMi0xOS40LTI2LjMtMzYuOGwxNS4yLTkwLjljMS42LTkuOSA2LjMtMTkgMTMuNC0yNi4xbDUxLTUxVjI0MS43bC0xOSAyOC41Yy00LjYgNy0xMSAxMi42LTE4LjUgMTYuM2wtNTkuNiAyOS44Yy0yLjQgMS4zLTQuOSAyLjItNy42IDIuOGMtMi42IC42LTUuMyAuOS03LjkgLjhIMjU2LjdjLTIuNSAuMS01LS4yLTcuNS0uN2MtMi45LS42LTUuNi0xLjYtOC4xLTNsLTU5LjUtMjkuOGMtNy41LTMuNy0xMy44LTkuNC0xOC41LTE2LjNsLTE5LTI4LjV6TTIuMyA0NjguMUw1MC4xIDM0OC42bDQ5LjIgNDkuMi0zNy42IDk0Yy02LjYgMTYuNC0yNS4yIDI0LjQtNDEuNiAxNy44Uy00LjMgNDg0LjUgMi4zIDQ2OC4xek01MTIgMGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6bTc3LjkgMzQ4LjZsNDcuOCAxMTkuNWM2LjYgMTYuNC0xLjQgMzUtMTcuOCA0MS42cy0zNS0xLjQtNDEuNi0xNy44bC0zNy42LTk0IDQ5LjItNDkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVvcGxlR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzIgODhhNTYgNTYgMCAxIDEgMTEyIDBBNTYgNTYgMCAxIDEgNzIgODh6TTY0IDI0NS43QzU0IDI1Ni45IDQ4IDI3MS44IDQ4IDI4OHM2IDMxLjEgMTYgNDIuM1YyNDUuN3ptMTQ0LjQtNDkuM0MxNzguNyAyMjIuNyAxNjAgMjYxLjIgMTYwIDMwNGMwIDM0LjMgMTIgNjUuOCAzMiA5MC41VjQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzg5LjJDMjYuMiAzNzEuMiAwIDMzMi43IDAgMjg4YzAtNjEuOSA1MC4xLTExMiAxMTItMTEyaDMyYzI0IDAgNDYuMiA3LjUgNjQuNCAyMC4zek00NDggNDE2VjM5NC41YzIwLTI0LjcgMzItNTYuMiAzMi05MC41YzAtNDIuOC0xOC43LTgxLjMtNDguNC0xMDcuN0M0NDkuOCAxODMuNSA0NzIgMTc2IDQ5NiAxNzZoMzJjNjEuOSAwIDExMiA1MC4xIDExMiAxMTJjMCA0NC43LTI2LjIgODMuMi02NCAxMDEuMlY0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJINDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnptOC0zMjhhNTYgNTYgMCAxIDEgMTEyIDBBNTYgNTYgMCAxIDEgNDU2IDg4ek01NzYgMjQ1Ljd2ODQuN2MxMC0xMS4zIDE2LTI2LjEgMTYtNDIuM3MtNi0zMS4xLTE2LTQyLjN6TTMyMCAzMmE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNMjQwIDMwNGMwIDE2LjIgNiAzMSAxNiA0Mi4zVjI2MS43Yy0xMCAxMS4zLTE2IDI2LjEtMTYgNDIuM3ptMTQ0LTQyLjN2ODQuN2MxMC0xMS4zIDE2LTI2LjEgMTYtNDIuM3MtNi0zMS4xLTE2LTQyLjN6TTQ0OCAzMDRjMCA0NC43LTI2LjIgODMuMi02NCAxMDEuMlY0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMjg4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDUuMmMtMzcuOC0xOC02NC01Ni41LTY0LTEwMS4yYzAtNjEuOSA1MC4xLTExMiAxMTItMTEyaDMyYzYxLjkgMCAxMTIgNTAuMSAxMTIgMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW9wbGVMaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2MCA3MmE0MCA0MCAwIDEgMCAtODAgMCA0MCA0MCAwIDEgMCA4MCAwek0xNDQgMjA4YTQwIDQwIDAgMSAwIDAtODAgNDAgNDAgMCAxIDAgMCA4MHpNMzIgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnpNNDk2IDIwOGE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6TTIwMCAzMTMuNWwyNi45IDQ5LjljNi4zIDExLjcgMjAuOCAxNiAzMi41IDkuOHMxNi0yMC44IDkuOC0zMi41bC0zNi4zLTY3LjVjMS43LTEuNyAzLjItMy42IDQuMy01LjhMMjY0IDIxNy41VjI3MmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg0OGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMTcuNWwyNi45IDQ5LjljMS4yIDIuMiAyLjYgNC4xIDQuMyA1LjhsLTM2LjMgNjcuNWMtNi4zIDExLjctMS45IDI2LjIgOS44IDMyLjVzMjYuMiAxLjkgMzIuNS05LjhMNDQwIDMxMy41VjM1MmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg0OGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMTMuNWwyNi45IDQ5LjljNi4zIDExLjcgMjAuOCAxNiAzMi41IDkuOHMxNi0yMC44IDkuOC0zMi41bC0zNy45LTcwLjNjLTE1LjMtMjguNS00NS4xLTQ2LjMtNzcuNS00Ni4zSDQ4Ni4yYy0xNi4zIDAtMzEuOSA0LjUtNDUuNCAxMi42bC0zMy42LTYyLjNjLTE1LjMtMjguNS00NS4xLTQ2LjMtNzcuNS00Ni4zSDMxMC4yYy0zMi40IDAtNjIuMSAxNy44LTc3LjUgNDYuM2wtMzMuNiA2Mi4zYy0xMy41LTguMS0yOS4xLTEyLjYtNDUuNC0xMi42SDEzNC4yYy0zMi40IDAtNjIuMSAxNy44LTc3LjUgNDYuM0wxOC45IDM0MC42Yy02LjMgMTEuNy0xLjkgMjYuMiA5LjggMzIuNXMyNi4yIDEuOSAzMi41LTkuOEw4OCAzMTMuNVYzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzEzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlb3BsZVB1bGxpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgOTZBNDggNDggMCAxIDAgODAgMGE0OCA0OCAwIDEgMCAwIDk2ek02NCAxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0VjMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMmM5LjggMCAxOC41LTQuNCAyNC40LTExLjJMODAuNCA0ODUuM2MyLjkgMTcuNCAxOS40IDI5LjIgMzYuOCAyNi4zczI5LjItMTkuNCAyNi4zLTM2LjhMMTIzLjEgMzUyaDE1LjdsMzAgMTM0LjljMy44IDE3LjMgMjAuOSAyOC4xIDM4LjIgMjQuM3MyOC4xLTIwLjkgMjQuMy0zOC4ybC01Ny4zLTI1OCAxMTYuMyA1My44Yy41IC4zIDEuMSAuNSAxLjYgLjdjOC42IDMuNiAxOCAzLjEgMjUuOS0uN2MzLjQtMS42IDYuNi0zLjkgOS4zLTYuN2MzLjEtMy4yIDUuNS03IDcuMS0xMS40Yy4xLS4zIC4yLS43IC4zLTFsMi41LTcuNWM1LjctMTcuMSAxOC4zLTMwLjkgMzQuNy0zOC4ybDgtMy41YzEtLjQgMS45LS44IDIuOS0xLjJsLTE2LjkgNjMuNWMtNS42IDIxLjEtLjEgNDMuNiAxNC43IDU5LjdsNzAuNyA3Ny4xIDIyIDg4LjFjNC4zIDE3LjEgMjEuNyAyNy42IDM4LjggMjMuM3MyNy42LTIxLjcgMjMuMy0zOC44bC0yMy05Mi4xYy0xLjktNy44LTUuOC0xNC45LTExLjItMjAuOGwtNDkuNS01NCAxOS4zLTY1LjUgOS42IDIzYzQuNCAxMC42IDEyLjUgMTkuMyAyMi44IDI0LjVsMjYuNyAxMy4zYzE1LjggNy45IDM1IDEuNSA0Mi45LTE0LjNzMS41LTM1LTE0LjMtNDIuOUw1MzcgMjMyLjdsLTE1LjMtMzYuOEM1MDQuNSAxNTQuOCA0NjQuMyAxMjggNDE5LjcgMTI4Yy0yMi44IDAtNDUuMyA0LjgtNjYuMSAxNGwtOCAzLjVjLTI0LjQgMTAuOS00NC42IDI5LTU4LjEgNTEuNkwxNTcuMyAxMzYuOUMxNDQuNyAxMzEgMTMwLjkgMTI4IDExNyAxMjhINjR6TTQ2NCA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTM0OS43IDMzNS42bC0yNSA2Mi40LTU5LjQgNTkuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwzNzIuMyA0NDFjNC42LTQuNiA4LjItMTAuMSAxMC42LTE2LjFsMTQuNS0zNi4yLTQwLjctNDQuNGMtMi41LTIuNy00LjgtNS42LTctOC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW9wbGVSb2JiZXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OC4yIDU5LjFDNDc4LjEgOTkuNiA0NDEuNyAxMjggNDAwIDEyOHMtNzguMS0yOC40LTg4LjItNjguOUwzMDMgMjQuMkMyOTguOCA3LjEgMjgxLjQtMy4zIDI2NC4yIDFTMjM2LjcgMjIuNiAyNDEgMzkuOGw4LjcgMzQuOWMxMSA0NCA0MC4yIDc5LjYgNzguMyA5OS42VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM1MmgxNlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxNzQuM2MzOC4xLTIwIDY3LjMtNTUuNiA3OC4zLTk5LjZMNTU5IDM5LjhjNC4zLTE3LjEtNi4xLTM0LjUtMjMuMy0zOC44UzUwMS4yIDcuMSA0OTcgMjQuMmwtOC43IDM0Ljl6TTQwMCA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTgwIDk2QTQ4IDQ4IDAgMSAwIDgwIDBhNDggNDggMCAxIDAgMCA5NnptLTggMzJjLTM1LjMgMC02NCAyOC43LTY0IDY0djk2bDAgLjZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzUySDg4VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI1Mi43bDEzIDIwLjVjNS45IDkuMiAxNi4xIDE0LjkgMjcgMTQuOWg0OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyMDkuNmwtMzcuNC01OC45QzE1Ny42IDE0MiAxMzIuMSAxMjggMTA0LjcgMTI4SDcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW9wbGVSb29mIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNS41IDRsMjg4IDE2MGMxNS40IDguNiAyMSAyOC4xIDEyLjQgNDMuNXMtMjguMSAyMS00My41IDEyLjRMMzIwIDY4LjYgNDcuNSAyMjBjLTE1LjQgOC42LTM0LjkgMy00My41LTEyLjRzLTMtMzQuOSAxMi40LTQzLjVMMzA0LjUgNGM5LjctNS40IDIxLjQtNS40IDMxLjEgMHpNMzIwIDE2MGE0MCA0MCAwIDEgMSAwIDgwIDQwIDQwIDAgMSAxIDAtODB6TTE0NCAyNTZhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgwem0zMTIgNDBhNDAgNDAgMCAxIDEgODAgMCA0MCA0MCAwIDEgMSAtODAgMHpNMjI2LjkgNDkxLjRMMjAwIDQ0MS41VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQ0MS41TDYxLjEgNDkxLjRjLTYuMyAxMS43LTIwLjggMTYtMzIuNSA5LjhzLTE2LTIwLjgtOS44LTMyLjVsMzcuOS03MC4zYzE1LjMtMjguNSA0NS4xLTQ2LjMgNzcuNS00Ni4zaDE5LjVjMTYuMyAwIDMxLjkgNC41IDQ1LjQgMTIuNmwzMy42LTYyLjNjMTUuMy0yOC41IDQ1LjEtNDYuMyA3Ny41LTQ2LjNoMTkuNWMzMi40IDAgNjIuMSAxNy44IDc3LjUgNDYuM2wzMy42IDYyLjNjMTMuNS04LjEgMjkuMS0xMi42IDQ1LjQtMTIuNmgxOS41YzMyLjQgMCA2Mi4xIDE3LjggNzcuNSA0Ni4zbDM3LjkgNzAuM2M2LjMgMTEuNyAxLjkgMjYuMi05LjggMzIuNXMtMjYuMiAxLjktMzIuNS05LjhMNTUyIDQ0MS41VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0NzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQ0MS41bC0yNi45IDQ5LjljLTYuMyAxMS43LTIwLjggMTYtMzIuNSA5LjhzLTE2LTIwLjgtOS44LTMyLjVsMzYuMy02Ny41Yy0xLjctMS43LTMuMi0zLjYtNC4zLTUuOEwzNzYgMzQ1LjVWNDAwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDI5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzQ1LjVsLTI2LjkgNDkuOWMtMS4yIDIuMi0yLjYgNC4xLTQuMyA1LjhsMzYuMyA2Ny41YzYuMyAxMS43IDEuOSAyNi4yLTkuOCAzMi41cy0yNi4yIDEuOS0zMi41LTkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVwcGVySG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyOC4zIDNjMTEuNi02LjQgMjYuMi0yLjMgMzIuNiA5LjNsNC44IDguN2MxOS4zIDM0LjcgMTkuOCA3NS43IDMuNCAxMTBDNDk1LjggMTU5LjYgNTEyIDE5Ny45IDUxMiAyNDBjMCAxOC41LTMuMSAzNi4zLTguOSA1Mi44Yy02LjEgMTcuMy0yOC41IDE2LjMtMzYuOC0uMWwtMTEuNy0yMy40Yy00LjEtOC4xLTEyLjQtMTMuMy0yMS41LTEzLjNIMzYwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYxNTJjMC0xMy4zLTEwLjctMjQtMjQtMjRsLTE3LjEgMGMtMjEuMyAwLTMwLTIzLjktMTAuOC0zMi45QzMwNC43IDg1LjQgMzI3LjcgODAgMzUyIDgwYzI4LjMgMCA1NC44IDcuMyA3Ny44IDIwLjJjNS41LTE4LjIgMy43LTM4LjQtNi01NS44TDQxOSAzNS43Yy02LjQtMTEuNi0yLjMtMjYuMiA5LjMtMzIuNnpNMTcxLjIgMzQ1LjVMMjY0IDE2MGw0MCAwdjgwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDc2LjJsMjMuOSA0Ny44QzM3Mi4zIDQ0My45IDI0NC4zIDUxMiAxMDMuMiA1MTJINDQuNEMxOS45IDUxMiAwIDQ5Mi4xIDAgNDY3LjZjMC0yMC44IDE0LjUtMzguOCAzNC44LTQzLjNsNDkuOC0xMS4xYzM3LjYtOC40IDY5LjUtMzMuMiA4Ni43LTY3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcmNlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc0LjYgMTE4LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTMyMCAzMjBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsMzIwLTMyMHpNMTI4IDEyOEE2NCA2NCAwIDEgMCAwIDEyOGE2NCA2NCAwIDEgMCAxMjggMHpNMzg0IDM4NGE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkFycm93RG93blRvTGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tOCAzNTJWMzUyaDE2djk2SDE4NHptLTY0IDBIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMTUyaDgwSDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNjRWMjU2LjlsMjguNiA0Ny41YzkuMSAxNS4xIDI4LjggMjAgNDMuOSAxMC45czIwLTI4LjggMTAuOS00My45bC01OC4zLTk3Yy0xNy40LTI4LjktNDguNi00Ni42LTgyLjMtNDYuNkgxNzcuMWMtMzMuNyAwLTY0LjkgMTcuNy04Mi4zIDQ2LjZsLTU4LjMgOTdjLTkuMSAxNS4xLTQuMiAzNC44IDEwLjkgNDMuOXMzNC44IDQuMiA0My45LTEwLjlMMTIwIDI1Ni45VjQ0OHpNNDY0IDY0VjMwNi43bC0yNS40LTI1LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDgwIDgwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDgwLTgwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDUyOCAzMDYuN1Y2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uQXJyb3dVcEZyb21MaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS04IDM1MlYzNTJoMTZ2OTZIMTg0em0tNjQgMEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgxNTJoODBINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI2NFYyNTYuOWwyOC42IDQ3LjVjOS4xIDE1LjEgMjguOCAyMCA0My45IDEwLjlzMjAtMjguOCAxMC45LTQzLjlsLTU4LjMtOTdjLTE3LjQtMjguOS00OC42LTQ2LjYtODIuMy00Ni42SDE3Ny4xYy0zMy43IDAtNjQuOSAxNy43LTgyLjMgNDYuNmwtNTguMyA5N2MtOS4xIDE1LjEtNC4yIDM0LjggMTAuOSA0My45czM0LjggNC4yIDQzLjktMTAuOUwxMjAgMjU2LjlWNDQ4ek01OTguNiAxMjEuNGwtODAtODBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC04MCA4MGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEw0NjQgMTQxLjMgNDY0IDM4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE0MS4zbDI1LjQgMjUuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25CaWtpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptMjcuMiA2NGwtNjEuOC00OC44Yy0xNy4zLTEzLjYtNDEuNy0xMy44LTU5LjEtLjNsLTgzLjEgNjQuMmMtMzAuNyAyMy44LTI4LjUgNzAuOCA0LjMgOTEuNkwyODggMzA1LjFWNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjg4YzAtMTAuNy01LjMtMjAuNy0xNC4yLTI2LjZMMjk1IDIzMi45bDYwLjMtNDguNUwzOTYgMjE3YzUuNyA0LjUgMTIuNyA3IDIwIDdoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDI3LjJ6TTU2IDM4NGE3MiA3MiAwIDEgMSAxNDQgMEE3MiA3MiAwIDEgMSA1NiAzODR6bTIwMCAwQTEyOCAxMjggMCAxIDAgMCAzODRhMTI4IDEyOCAwIDEgMCAyNTYgMHptMTg0IDBhNzIgNzIgMCAxIDEgMTQ0IDAgNzIgNzIgMCAxIDEgLTE0NCAwem0yMDAgMGExMjggMTI4IDAgMSAwIC0yNTYgMCAxMjggMTI4IDAgMSAwIDI1NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25Cb290aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMTkyaDY0VjMyem0zMjAgMGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMnpNMjI0IDUxMmMxNy43IDAgMzItMTQuMyAzMi0zMlYzMjBIMTkyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnpNMzIwIDBjLTkuMyAwLTE4LjEgNC0yNC4yIDExcy04LjggMTYuMy03LjUgMjUuNWwzMS4yIDIxOC42TDI4OC42IDQwOS43Yy0zLjUgMTcuMyA3LjggMzQuMiAyNS4xIDM3LjdzMzQuMi03LjggMzcuNy0yNS4xbC43LTMuNmMxLjMgMTYuNCAxNS4xIDI5LjQgMzEuOSAyOS40YzE3LjcgMCAzMi0xNC4zIDMyLTMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMzIwek0xMTIgODBBNDggNDggMCAxIDAgMTYgODBhNDggNDggMCAxIDAgOTYgMHptMCAyNjEuM1YyNjkuM2w0LjcgNC43YzkgOSAyMS4yIDE0LjEgMzMuOSAxNC4xSDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxNTcuM2wtNDEuNi00MS42Yy0xNC4zLTE0LjMtMzMuOC0yMi40LTU0LTIyLjRDMjcuNiAxNjAgMCAxODcuNiAwIDIyMS42djU1LjdsMCAuOVY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzODRsMzIgNDIuN1Y0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0MjEuM2MwLTEwLjQtMy40LTIwLjUtOS42LTI4LjhMMTEyIDM0MS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25CcmVhc3RmZWVkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYTgwIDgwIDAgMSAxIDAgMTYwQTgwIDgwIDAgMSAxIDIyNCAwek00MzYuOCAzODIuOEwzNzMuNSA0NjJjLTE2LjYgMjAuNy00Ni44IDI0LjEtNjcuNSA3LjVjLTE3LjYtMTQuMS0yMi43LTM4LjEtMTMuNS01Ny43bC0uOC0uMWMtMzguOS01LjYtNzQuMy0yNS4xLTk5LjctNTQuOFYzMjBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NDhjMCAuOCAwIDEuNiAuMSAyLjRsMTAxLjQgNTAuN2MyMy43IDExLjkgMzMuMyA0MC43IDIxLjUgNjQuNHMtNDAuNyAzMy4zLTY0LjQgMjEuNUwyNy4yIDQyNy4zYy0xLjEtLjUtMi4yLTEuMS0zLjMtMS43Yy00LjktMi44LTkuMi02LjQtMTIuNi0xMC42Yy00LjYtNS40LTcuOC0xMS43LTkuNi0xOC40Yy0zLjMtMTItMS45LTI1LjIgNC44LTM2LjZjLjYtMS4xIDEuMy0yLjIgMi0zLjJMNzUuNiAyNTYuMWMyNi43LTQwLjEgNzEuNy02NC4xIDExOS44LTY0LjFoNzUuMmM0Ni41IDAgOTAuMSAyMi41IDExNy4yIDYwLjNsNTAuNyA3MC45YzIuMiAzIDQgNi4xIDUuNSA5LjRjMi45IDYuNyA0LjMgMTMuOCA0IDIwLjhjLS4zIDEwLjYtNC4yIDIxLTExLjIgMjkuNHpNMzIwIDMzMmE0NCA0NCAwIDEgMCAtODggMCA0NCA0NCAwIDEgMCA4OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25CdXJzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tOCAzODRWMzUyaDE2VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI1Ni45bDI4LjYgNDcuNWM5LjEgMTUuMSAyOC44IDIwIDQzLjkgMTAuOXMyMC0yOC44IDEwLjktNDMuOWwtNTguMy05N2MtMTcuNC0yOC45LTQ4LjYtNDYuNi04Mi4zLTQ2LjZINDY1LjFjLTMzLjcgMC02NC45IDE3LjctODIuMyA0Ni42bC01OC4zIDk3Yy05LjEgMTUuMS00LjIgMzQuOCAxMC45IDQzLjlzMzQuOCA0LjIgNDMuOS0xMC45TDQwOCAyNTYuOVY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMnpNMTkwLjkgMTguMUMxODguNCAxMiAxODIuNiA4IDE3NiA4cy0xMi40IDQtMTQuOSAxMC4xbC0yOS40IDc0TDU1LjYgNjguOWMtNi4zLTEuOS0xMy4xIC4yLTE3LjIgNS4zcy00LjYgMTIuMi0xLjQgMTcuOWwzOS41IDY5LjFMMTAuOSAyMDYuNGMtNS40IDMuNy04IDEwLjMtNi41IDE2LjdzNi43IDExLjIgMTMuMSAxMi4ybDc4LjcgMTIuMkw5MC42IDMyN2MtLjUgNi41IDMuMSAxMi43IDkgMTUuNXMxMi45IDEuOCAxNy44LTIuNkwxNzYgMjg2LjFsNTguNiA1My45YzQuOCA0LjQgMTEuOSA1LjUgMTcuOCAyLjZzOS41LTkgOS0xNS41bC01LjYtNzkuNCA1MC41LTcuOCAyNC4zLTQwLjUtNTUuMi0zOEwzMTUgOTIuMmMzLjMtNS43IDIuNy0xMi44LTEuNC0xNy45cy0xMC45LTcuMi0xNy4yLTUuM0wyMjAuMyA5Mi4xbC0yOS40LTc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25DYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiA0OGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwem0tOCAxODcuM2w0Ny40IDU3LjFjMTEuMyAxMy42IDMxLjUgMTUuNSA0NS4xIDQuMnMxNS41LTMxLjUgNC4yLTQ1LjFsLTczLjctODguOWMtMTguMi0yMi00NS4zLTM0LjctNzMuOS0zNC43SDE3Ny4xYy0zMy43IDAtNjQuOSAxNy43LTgyLjMgNDYuNmwtNTguMyA5N2MtOS4xIDE1LjEtNC4yIDM0LjggMTAuOSA0My45czM0LjggNC4yIDQzLjktMTAuOUwxMjAgMjU2LjlWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzUyaDE2VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjIzNS4zek0zNTIgMzc2YzAtNC40IDMuNi04IDgtOHM4IDMuNiA4IDhWNDg4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMzc2YzAtMzAuOS0yNS4xLTU2LTU2LTU2cy01NiAyNS4xLTU2IDU2djhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNHYtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uQ2hhbGtib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tOCAzODRWMzUyaDE2VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE5Mmg1NiA2NCAxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzODRWNjRINTc2VjI1NkgzODRWMjI0SDMyMHY0OGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg1OTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzY4Yy0yNi41IDAtNDggMjEuNS00OCA0OHY4MEgyNDMuMSAxNzcuMWMtMzMuNyAwLTY0LjkgMTcuNy04Mi4zIDQ2LjZsLTU4LjMgOTdjLTkuMSAxNS4xLTQuMiAzNC44IDEwLjkgNDMuOXMzNC44IDQuMiA0My45LTEwLjlMMTIwIDI1Ni45VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25DaXJjbGVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptNDAgMzA0VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyNTYuOUw1OS40IDMwNC41Yy05LjEgMTUuMS0yOC44IDIwLTQzLjkgMTAuOXMtMjAtMjguOC0xMC45LTQzLjlsNTguMy05N2MxNy40LTI4LjkgNDguNi00Ni42IDgyLjMtNDYuNmgyOS43YzMzLjcgMCA2NC45IDE3LjcgODIuMyA0Ni42bDQ0LjkgNzQuN2MtMTYuMSAxNy42LTI4LjYgMzguNS0zNi42IDYxLjVjLTEuOS0xLjgtMy41LTMuOS00LjktNi4zTDIzMiAyNTYuOVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUySDE1MnptMTM2IDE2YTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTIxMS4zLTQzLjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDQxNiAzODUuNGwtMjguNy0yOC43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDQwIDQwYzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDcyLTcyYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25DaXJjbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptNDAgMzA0VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyNTYuOUw1OS40IDMwNC41Yy05LjEgMTUuMS0yOC44IDIwLTQzLjkgMTAuOXMtMjAtMjguOC0xMC45LTQzLjlsNTguMy05N2MxNy40LTI4LjkgNDguNi00Ni42IDgyLjMtNDYuNmgyOS43YzMzLjcgMCA2NC45IDE3LjcgODIuMyA0Ni42bDQ0LjkgNzQuN2MtMTYuMSAxNy42LTI4LjYgMzguNS0zNi42IDYxLjVjLTEuOS0xLjgtMy41LTMuOS00LjktNi4zTDIzMiAyNTYuOVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUySDE1MnpNNDMyIDIyNGExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTAgMjQwYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMC0xOTJjLTguOCAwLTE2IDcuMi0xNiAxNnY4MGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjI4OGMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkNpcmNsZU1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI1Ni45TDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE3LjQtMjguOSA0OC42LTQ2LjYgODIuMy00Ni42aDI5LjdjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNDQuOSA3NC43Yy0xNi4xIDE3LjYtMjguNiAzOC41LTM2LjYgNjEuNWMtMS45LTEuOC0zLjUtMy45LTQuOS02LjNMMjMyIDI1Ni45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJIMTUyem0xMzYgMTZhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMjI0IDBjMC04LjgtNy4yLTE2LTE2LTE2SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg0OTZjOC44IDAgMTYtNy4yIDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25DaXJjbGVQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI1Ni45TDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE3LjQtMjguOSA0OC42LTQ2LjYgODIuMy00Ni42aDI5LjdjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNDQuOSA3NC43Yy0xNi4xIDE3LjYtMjguNiAzOC41LTM2LjYgNjEuNWMtMS45LTEuOC0zLjUtMy45LTQuOS02LjNMMjMyIDI1Ni45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJIMTUyek00MzIgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMTYgODBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2NDhIMzY4Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDQ4djQ4YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzg0aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDQ0OFYzMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkNpcmNsZVF1ZXN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI1Ni45TDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE3LjQtMjguOSA0OC42LTQ2LjYgODIuMy00Ni42aDI5LjdjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNDQuOSA3NC43Yy0xNi4xIDE3LjYtMjguNiAzOC41LTM2LjYgNjEuNWMtMS45LTEuOC0zLjUtMy45LTQuOS02LjNMMjMyIDI1Ni45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJIMTUyek00MzIgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMCAyNDBhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4ek0zNjggMzIxLjZWMzI4YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZ2LTYuNGMwLTUuMyA0LjMtOS42IDkuNi05LjZoNDAuNWM3LjcgMCAxMy45IDYuMiAxMy45IDEzLjljMCA1LjItMi45IDkuOS03LjQgMTIuM2wtMzIgMTYuOGMtNS4zIDIuOC04LjYgOC4yLTguNiAxNC4yVjM4NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2di01LjFsMjMuNS0xMi4zYzE1LjEtNy45IDI0LjUtMjMuNiAyNC41LTQwLjZjMC0yNS40LTIwLjYtNDUuOS00NS45LTQ1LjlINDA5LjZjLTIzIDAtNDEuNiAxOC42LTQxLjYgNDEuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTQwIDMwNFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjU2LjlMNTkuNCAzMDQuNWMtOS4xIDE1LjEtMjguOCAyMC00My45IDEwLjlzLTIwLTI4LjgtMTAuOS00My45bDU4LjMtOTdjMTcuNC0yOC45IDQ4LjYtNDYuNiA4Mi4zLTQ2LjZoMjkuN2MzMy43IDAgNjQuOSAxNy43IDgyLjMgNDYuNmw0NC45IDc0LjdjLTE2LjEgMTcuNi0yOC42IDM4LjUtMzYuNiA2MS41Yy0xLjktMS44LTMuNS0zLjktNC45LTYuM0wyMzIgMjU2LjlWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkgxNTJ6TTQzMiAyMjRhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em01OS4zIDEwNy4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBMNDMyIDM0NS40bC0zNi43LTM2LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZMNDA5LjQgMzY4bC0zNi43IDM2LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMEw0MzIgMzkwLjZsMzYuNyAzNi43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkw0NTQuNiAzNjhsMzYuNy0zNi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25EaWdnaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCA2NGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwek05LjggMjE0LjhjNS4xLTEyLjIgMTkuMS0xOCAzMS40LTEyLjlMNjAuNyAyMTBsMjIuOS0zOC4xQzk5LjkgMTQ0LjYgMTI5LjMgMTI4IDE2MSAxMjhjNTEuNCAwIDk3IDMyLjkgMTEzLjMgODEuN2wzNC42IDEwMy43IDc5LjMgMzMuMSAzNC4yLTQ1LjZjNi40LTguNSAxNi42LTEzLjMgMjcuMi0xMi44czIwLjMgNi40IDI1LjggMTUuNWw5NiAxNjBjNS45IDkuOSA2LjEgMjIuMiAuNCAzMi4ycy0xNi4zIDE2LjItMjcuOCAxNi4ySDI4OGMtMTEuMSAwLTIxLjQtNS43LTI3LjItMTUuMnMtNi40LTIxLjItMS40LTMxLjFsMTYtMzJjNS40LTEwLjggMTYuNS0xNy43IDI4LjYtMTcuN2gzMmwyMi41LTMwTDIyLjggMjQ2LjJjLTEyLjItNS4xLTE4LTE5LjEtMTIuOS0zMS40em04Mi44IDkxLjhsMTEyIDQ4YzExLjggNSAxOS40IDE2LjYgMTkuNCAyOS40djk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQwNS4xbC02MC42LTI2LTM3IDExMWMtNS42IDE2LjgtMjMuNyAyNS44LTQwLjUgMjAuMlMtMy45IDQ4Ni42IDEuNiA0NjkuOWw0OC0xNDQgMTEtMzMgMzIgMTMuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uRG90c0Zyb21MaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxNzZBODggODggMCAxIDAgMjg4IDBhODggODggMCAxIDAgMCAxNzZ6TTc4LjcgMzcyLjljMTUtMTIuNSA1MC0zNC40IDk3LjMtNTAuMVY0MzJINDAwVjMyMi43YzQ3LjMgMTUuOCA4Mi4zIDM3LjcgOTcuMyA1MC4xYzIwLjQgMTcgNTAuNiAxNC4yIDY3LjYtNi4xczE0LjItNTAuNi02LjEtNjcuNmMtMTItMTAtMzAuMS0yMi41LTUzLjItMzVDNDk3LjIgMjc4LjQgNDgxLjcgMjg4IDQ2NCAyODhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4YzAtNC4zIC42LTguNCAxLjYtMTIuNEMzNzkuMSAyMTUuOSAzMzUuMyAyMDggMjg4IDIwOGMtNjAuMiAwLTExNC45IDEyLjktMTYwIDI5LjljMCAuNyAwIDEuNCAwIDIuMWMwIDI2LjUtMjEuNSA0OC00OCA0OGMtMTEuOCAwLTIyLjctNC4zLTMxLTExLjRjLTEzLjEgOC4xLTIzLjcgMTUuOS0zMS43IDIyLjVjLTIwLjQgMTctMjMuMSA0Ny4yLTYuMSA2Ny42czQ3LjIgMjMuMSA2Ny42IDYuMXpNMjQgNDY0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDU1MmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyNHpNMjI0IDI4MGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwem0xMDQgNTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4ek05NiAyNDBhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptMzY4IDE2YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uRHJlc3NCdXJzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjggNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMzkwLjIgMzg0SDQwOHY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGgxNnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGgxNy44YzEwLjkgMCAxOC42LTEwLjcgMTUuMi0yMS4xTDU0Ni43IDI0OC4xbDMzLjkgNTYuM2M5LjEgMTUuMSAyOC44IDIwIDQzLjkgMTAuOXMyMC0yOC44IDEwLjktNDMuOWwtNTMuNi04OS4yYy0yMC4yLTMzLjctNTYuNy01NC4zLTk2LTU0LjNINDc0LjJjLTM5LjMgMC03NS43IDIwLjYtOTYgNTQuM2wtNTMuNiA4OS4yYy05LjEgMTUuMS00LjIgMzQuOCAxMC45IDQzLjlzMzQuOCA0LjIgNDMuOS0xMC45bDMzLjktNTYuM0wzNzUgMzYyLjljLTMuNSAxMC40IDQuMyAyMS4xIDE1LjIgMjEuMXpNMTkwLjkgMTguMUMxODguNCAxMiAxODIuNiA4IDE3NiA4cy0xMi40IDQtMTQuOSAxMC4xbC0yOS40IDc0TDU1LjYgNjguOWMtNi4zLTEuOS0xMy4xIC4yLTE3LjIgNS4zcy00LjYgMTIuMi0xLjQgMTcuOWwzOS41IDY5LjFMMTAuOSAyMDYuNGMtNS40IDMuNy04IDEwLjMtNi41IDE2LjdzNi43IDExLjIgMTMuMSAxMi4ybDc4LjcgMTIuMkw5MC42IDMyN2MtLjUgNi41IDMuMSAxMi43IDkgMTUuNXMxMi45IDEuOCAxNy44LTIuNkwxNzYgMjg2LjFsNTguNiA1My45YzQuOCA0LjQgMTEuOSA1LjUgMTcuOCAyLjZzOS41LTkgOS0xNS41bC01LjYtNzkuNCA1MC41LTcuOCAyNC40LTQwLjUtNTUuMi0zOEwzMTUgOTIuMmMzLjMtNS43IDIuNy0xMi44LTEuNC0xNy45cy0xMC45LTcuMi0xNy4yLTUuM0wyMjAuMyA5Mi4xbC0yOS40LTc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25EcmVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6TTg4IDM4NEg3MC4yYy0xMC45IDAtMTguNi0xMC43LTE1LjItMjEuMUw5My4zIDI0OC4xIDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1My42LTg5LjJjMjAuMy0zMy43IDU2LjctNTQuMyA5Ni01NC4zaDExLjZjMzkuMyAwIDc1LjcgMjAuNiA5NiA1NC4zbDUzLjYgODkuMmM5LjEgMTUuMSA0LjIgMzQuOC0xMC45IDQzLjlzLTM0LjggNC4yLTQzLjktMTAuOWwtMzMuOS01Ni4zTDI2NSAzNjIuOWMzLjUgMTAuNC00LjMgMjEuMS0xNS4yIDIxLjFIMjMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM4NEgxNTJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25Ecm93bmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWOTYuMmMwIDU0LjEgMjMuNSAxMDQgNjIuMiAxMzguM2wtMjEgMTQ2LjdjNy44IDIuMSAxNS41IDMuMyAyMi44IDMuM2MyMS4xIDAgNDItOC41IDU5LjItMjAuM2MyMi4xLTE1LjUgNTEuNi0xNS41IDczLjcgMGMxMi40IDguNSAyNi4xIDE0LjggMzkuNyAxOGwxNy43LTk3LjZjMTAuNy0xLjIgMjEuMy0zLjEgMzEuOS01LjVsMTA1LTIzLjljMTcuMi0zLjkgMjgtMjEuMSAyNC4xLTM4LjNzLTIxLjEtMjgtMzguMy0yNC4xTDQwMCAyMTYuNmMtNDEgOS4zLTgzLjcgNy41LTEyMy43LTUuMmMtNTAuMi0xNi04NC4zLTYyLjYtODQuMy0xMTUuM1Y2NHpNMzIwIDE5MmE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHpNMzA2LjUgMzg5LjljLTExLjEtNy45LTI1LjktNy45LTM3IDBDMjQ3IDQwNS40IDIxOS41IDQxNiAxOTIgNDE2Yy0yNi45IDAtNTUuMy0xMC44LTc3LjQtMjYuMWwwIDBjLTExLjktOC41LTI4LjEtNy44LTM5LjIgMS43Yy0xNC40IDExLjktMzIuNSAyMS01MC42IDI1LjJjLTE3LjIgNC0yNy45IDIxLjItMjMuOSAzOC40czIxLjIgMjcuOSAzOC40IDIzLjljMjQuNS01LjcgNDQuOS0xNi41IDU4LjItMjVDMTI2LjUgNDY5LjcgMTU5IDQ4MCAxOTIgNDgwYzMxLjkgMCA2MC42LTkuOSA4MC40LTE4LjljNS44LTIuNyAxMS4xLTUuMyAxNS42LTcuN2M0LjUgMi40IDkuNyA1LjEgMTUuNiA3LjdjMTkuOCA5IDQ4LjUgMTguOSA4MC40IDE4LjljMzMgMCA2NS41LTEwLjMgOTQuNS0yNS44YzEzLjQgOC40IDMzLjcgMTkuMyA1OC4yIDI1YzE3LjIgNCAzNC40LTYuNyAzOC40LTIzLjlzLTYuNy0zNC40LTIzLjktMzguNGMtMTguMS00LjItMzYuMi0xMy4zLTUwLjYtMjUuMmMtMTEuMS05LjQtMjcuMy0xMC4xLTM5LjItMS43bDAgMEM0MzkuNCA0MDUuMiA0MTAuOSA0MTYgMzg0IDQxNmMtMjcuNSAwLTU1LTEwLjYtNzcuNS0yNi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25GYWxsaW5nQnVyc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgOS44YzAgMzktMjMuNyA3NC01OS45IDg4LjRDNzEuNiAxNTQuNSAzMiAyMTMgMzIgMjc4LjJWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC03My44YzAtMTAgMS42LTE5LjggNC41LTI5TDI2MS4xIDQ5Ny40YzkuNiAxNC44IDI5LjQgMTkuMSA0NC4zIDkuNXMxOS4xLTI5LjQgOS41LTQ0LjNMMjIyLjYgMzIwSDIyNGw4MCAwIDM4LjQgNTEuMmMxMC42IDE0LjEgMzAuNyAxNyA0NC44IDYuNHMxNy0zMC43IDYuNC00NC44bC00My4yLTU3LjZDMzQxLjMgMjYzLjEgMzI3LjEgMjU2IDMxMiAyNTZsLTcxLjUgMC01Ni44LTgwLjItLjItLjNjNDQuNy0yOSA3Mi41LTc5IDcyLjUtMTMzLjZsMC05Ljh6TTk2IDgwQTQ4IDQ4IDAgMSAwIDAgODBhNDggNDggMCAxIDAgOTYgMHpNNDY0IDI4Ni4xbDU4LjYgNTMuOWM0LjggNC40IDExLjkgNS41IDE3LjggMi42czkuNS05IDktMTUuNWwtNS42LTc5LjQgNzguNy0xMi4yYzYuNS0xIDExLjctNS45IDEzLjEtMTIuMnMtMS4xLTEzLTYuNS0xNi43bC02NS42LTQ1LjFMNjAzIDkyLjJjMy4zLTUuNyAyLjctMTIuOC0xLjQtMTcuOXMtMTAuOS03LjItMTcuMi01LjNMNTA4LjMgOTIuMWwtMjkuNC03NEM0NzYuNCAxMiA0NzAuNiA4IDQ2NCA4cy0xMi40IDQtMTQuOSAxMC4xbC0yOS40IDc0TDM0My42IDY4LjljLTYuMy0xLjktMTMuMSAuMi0xNy4yIDUuM3MtNC42IDEyLjItMS40IDE3LjlsMzkuNSA2OS4xLTY1LjYgNDUuMWMtNS40IDMuNy04IDEwLjMtNi41IDE2LjdjLjEgLjMgLjEgLjYgLjIgLjhsMTkuNCAwYzIwLjEgMCAzOS4yIDcuNSA1My44IDIwLjhsMTguNCAyLjlMMzgzIDI2NS4zbDM2LjIgNDguM2MyLjEgMi44IDMuOSA1LjcgNS41IDguNkw0NjQgMjg2LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkZhbGxpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5LjhjMCA1NC42LTI3LjkgMTA0LjYtNzIuNSAxMzMuNmwuMiAuM0wzMDQuNSAyNTZsODcuNSAwYzE1LjEgMCAyOS4zIDcuMSAzOC40IDE5LjJsNDMuMiA1Ny42YzEwLjYgMTQuMSA3LjcgMzQuMi02LjQgNDQuOHMtMzQuMiA3LjctNDQuOC02LjRMMzg0IDMyMGwtOTYgMGgtMS40bDkyLjMgMTQyLjZjOS42IDE0LjggNS40IDM0LjYtOS41IDQ0LjNzLTM0LjYgNS40LTQ0LjMtOS41TDE2NC41IDI0OS4yYy0yLjkgOS4yLTQuNSAxOS00LjUgMjlsMCA3My44YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI3OC4yYzAtNjUuMSAzOS42LTEyMy43IDEwMC4xLTE0Ny45QzIzMi4zIDExNS44IDI1NiA4MC44IDI1NiA0MS44bDAtOS44YzAtMTcuNyAxNC4zLTMyIDMyLTMyek0xMTIgMzJhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25IYWxmRHJlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDBhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2em04IDM1MlYxMjhoNi45YzMzLjcgMCA2NC45IDE3LjcgODIuMyA0Ni42bDU4LjMgOTdjOS4xIDE1LjEgNC4yIDM0LjgtMTAuOSA0My45cy0zNC44IDQuMi00My45LTEwLjlMMjMyIDI1Ni45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJoMHpNNTguMiAxODIuM2MxOS45LTMzLjEgNTUuMy01My41IDkzLjgtNTQuM1YzODRoMHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzODRINzAuMmMtMTAuOSAwLTE4LjYtMTAuNy0xNS4yLTIxLjFMOTMuMyAyNDguMSA1OS40IDMwNC41Yy05LjEgMTUuMS0yOC44IDIwLTQzLjkgMTAuOXMtMjAtMjguOC0xMC45LTQzLjlsNTMuNi04OS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25IYXJhc3NpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNNTkuNCAzMDQuNUw4OCAyNTYuOVY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzNTJoMTZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjM1LjNsNDcuNCA1Ny4xYzExLjMgMTMuNiAzMS41IDE1LjUgNDUuMSA0LjJzMTUuNS0zMS41IDQuMi00NS4xbC03My43LTg4LjljLTE4LjItMjItNDUuMy0zNC43LTczLjktMzQuN0gxNDUuMWMtMzMuNyAwLTY0LjkgMTcuNy04Mi4zIDQ2LjZsLTU4LjMgOTdjLTkuMSAxNS4xLTQuMiAzNC44IDEwLjkgNDMuOXMzNC44IDQuMiA0My45LTEwLjl6TTQ4MCAyNDBhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNNDY0IDM0NHY1OC43bC00MS40LTQxLjRjLTcuMy03LjMtMTcuNi0xMC42LTI3LjgtOXMtMTguOSA4LjEtMjMuNSAxNy4zbC00OCA5NmMtNy45IDE1LjgtMS41IDM1IDE0LjMgNDIuOXMzNSAxLjUgNDIuOS0xNC4zTDQwOC44IDQzOGw1NC43IDU0LjdjMTIuNCAxMi40IDI5LjEgMTkuMyA0Ni42IDE5LjNjMzYuNCAwIDY1LjktMjkuNSA2NS45LTY1LjlWMzQ0YzAtMzAuOS0yNS4xLTU2LTU2LTU2cy01NiAyNS4xLTU2IDU2ek0yODggNDhjMCA4LjggNy4yIDE2IDE2IDE2aDU2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDMwNGMtOC44IDAtMTYgNy4yLTE2IDE2em0tLjggNDkuN2MtNy45LTQtMTcuNS0uNy0yMS41IDcuMnMtLjcgMTcuNSA3LjIgMjEuNWw0OCAyNGM3LjkgNCAxNy41IC43IDIxLjUtNy4ycy43LTE3LjUtNy4yLTIxLjVsLTQ4LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25IaWtpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTUxLjMgMTgyLjdMMjI0LjIgMzA3bDQ5LjcgNDkuN2M5IDkgMTQuMSAyMS4yIDE0LjEgMzMuOVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzk3LjNsLTczLjktNzMuOWMtMTUuOC0xNS44LTIyLjItMzguNi0xNi45LTYwLjNsMjAuNC04NGM4LjMtMzQuMSA0Mi43LTU0LjkgNzYuNy00Ni40YzE5IDQuOCAzNS42IDE2LjQgNDYuNCAzMi43TDMwNS4xIDIwOEgzMzZWMTg0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2NTUuOGMwIC4xIDAgLjIgMCAuMnMwIC4yIDAgLjJWNDg4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjI3MkgyOTYuNmMtMTYgMC0zMS04LTM5LjktMjEuNGwtMTMuMy0yMHpNODEuMSA0NzEuOUwxMTcuMyAzMzRjMyA0LjIgNi40IDguMiAxMC4xIDExLjlsNDEuOSA0MS45TDE0Mi45IDQ4OC4xYy00LjUgMTcuMS0yMiAyNy4zLTM5LjEgMjIuOHMtMjcuMy0yMi0yMi44LTM5LjF6bTU1LjUtMzQ2TDEwMS40IDI2Ni41Yy0zIDEyLjEtMTQuOSAxOS45LTI3LjIgMTcuOWwtNDcuOS04Yy0xNC0yLjMtMjIuOS0xNi4zLTE5LjItMzBMMzEuOSAxNTVjOS41LTM0LjggNDEuMS01OSA3Ny4yLTU5aDQuMmMxNS42IDAgMjcuMSAxNC43IDIzLjMgMjkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uTWlsaXRhcnlQb2ludGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDYuOSAxNC4xQzIzNCAxNS4yIDIyNCAyNiAyMjQgMzljMCAxMy44IDExLjIgMjUgMjUgMjVINDAwYzguOCAwIDE2LTcuMiAxNi0xNlYxNy40QzQxNiA4IDQwOCAuNyAzOTguNyAxLjRMMjQ2LjkgMTQuMXpNMjQwIDExMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtNS41LS42LTEwLjgtMS42LTE2SDI0MS42Yy0xIDUuMi0xLjYgMTAuNS0xLjYgMTZ6TTcyIDIyNGMtMjIuMSAwLTQwIDE3LjktNDAgNDBzMTcuOSA0MCA0MCA0MEgyMjR2ODkuNEwzODYuOCAyMzAuNWMtMTMuMy00LjMtMjcuMy02LjUtNDEuNi02LjVIMjQwIDcyem0zNDUuNyAyMC45TDI0Ni42IDQxNkg0MTZWMzY5LjdsNTMuNiA5MC42YzExLjIgMTkgMzUuOCAyNS4zIDU0LjggMTQuMXMyNS4zLTM1LjggMTQuMS01NC44TDQ2Mi4zIDI5MC44Yy0xMS4yLTE4LjktMjYuNi0zNC41LTQ0LjYtNDUuOXpNMjI0IDQ0OHYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODRjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDQ4SDIyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uTWlsaXRhcnlSaWZsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMzljMC0xMyAxMC0yMy44IDIyLjktMjQuOUwzMzQuNyAxLjRDMzQ0IC43IDM1MiA4IDM1MiAxNy40VjQ4YzAgOC44LTcuMiAxNi0xNiAxNkgxODVjLTEzLjggMC0yNS0xMS4yLTI1LTI1em0xNy42IDU3SDMzNC40YzEgNS4yIDEuNiAxMC41IDEuNiAxNmMwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTUuNSAuNi0xMC44IDEuNi0xNnptMjI4IDM2NC4zTDM1MiAzNjkuN1Y0ODBjMCAxLjMtLjEgMi41LS4yIDMuOEwxNzcuNSAyMzQuOWMxNi42LTcuMSAzNC42LTEwLjkgNTMuMy0xMC45aDUwLjRjMTUuOSAwIDMxLjMgMi44IDQ1LjggNy45TDQyMS45IDY3LjdjLTcuNy00LjQtMTAuMy0xNC4yLTUuOS0yMS45czE0LjItMTAuMyAyMS45LTUuOWwxMy45IDggMTMuOSA4YzcuNyA0LjQgMTAuMyAxNC4yIDUuOSAyMS45TDQxNiAxNzMuOWwxLjYgLjljMTUuMyA4LjggMjAuNiAyOC40IDExLjcgNDMuN0wzOTIuNiAyODJjMiAyLjggMy45IDUuOCA1LjcgOC44bDc2LjEgMTI4LjhjMTEuMiAxOSA0LjkgNDMuNS0xNC4xIDU0LjhzLTQzLjUgNC45LTU0LjgtMTQuMXpNMzIwIDUxMkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM2OS43bC01My42IDkwLjZjLTExLjIgMTktMzUuOCAyNS4zLTU0LjggMTQuMXMtMjUuMy0zNS44LTE0LjEtNTQuOGw3Ni4xLTEyOC44YzkuNC0xNS44IDIxLjctMjkuMyAzNi00MEwzMzEuMSA1MTBjLTMuNSAxLjMtNy4yIDItMTEuMSAyek0yOTYgMzIwYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uTWlsaXRhcnlUb1BlcnNvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03MSAxMi41Yy04LjYgMS0xNSA4LjItMTUgMTYuOGMwIDkuMyA3LjUgMTYuOCAxNi43IDE2LjlIMTg0LjFjOC44LS4xIDE1LjktNy4yIDE1LjktMTZWMTZjMC05LjUtOC4zLTE3LTE3LjgtMTUuOUw3MSAxMi41ek0xODkuNSA3OC4xSDY2LjVDNjQuOSA4My44IDY0IDg5LjggNjQgOTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NGMwLTYuMi0uOS0xMi4yLTIuNS0xNy45ek0zMiAyNTZ2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJIMTkyYzEuOCAwIDMuNS0uMSA1LjItLjRMNTMgMjA4LjZDNDAuMSAyMjAuMyAzMiAyMzcuMiAzMiAyNTZ6bTE5MC4yIDQyLjVjMS4xLTMuMyAxLjgtNi44IDEuOC0xMC41VjI1NmMwLTM1LjMtMjguNy02NC02NC02NEg5NmMtMy43IDAtNy40IC4zLTEwLjkgLjlMMjIyLjIgMjk4LjV6TTM4NCAxNjBhNjQgNjQgMCAxIDAgMC0xMjggNjQgNjQgMCAxIDAgMCAxMjh6bS0zMiAzMmMtMzUuMyAwLTY0IDI4LjctNjQgNjR2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJINDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1NmMwLTM1LjMtMjguNy02NC02NC02NEgzNTJ6TTIxNS44IDQ1MC4xYzUuMi00LjYgOC4yLTExLjEgOC4yLTE4LjFzLTMtMTMuNS04LjItMTguMWwtNjQtNTZjLTcuMS02LjItMTcuMS03LjctMjUuNy0zLjhTMTEyIDM2Ni42IDExMiAzNzZ2MzJsLTg4IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsODggMHYzMmMwIDkuNCA1LjUgMTggMTQuMSAyMS45czE4LjYgMi40IDI1LjctMy44bDY0LTU2ek0yODggNDMxLjljMCA2LjkgMi45IDEzLjUgOC4xIDE4LjFsNjQgNTYuNGM3LjEgNi4yIDE3LjEgNy44IDI1LjcgMy45czE0LjEtMTIuNCAxNC4xLTIxLjlsMC0zMi40IDg4IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTg4IDAgMC0zMmMwLTkuNC01LjUtMTgtMTQuMS0yMS45cy0xOC42LTIuNC0yNS43IDMuOGwtNjQgNTZjLTUuMiA0LjUtOC4yIDExLjEtOC4yIDE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25QcmF5aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiA2NEE2NCA2NCAwIDEgMCAyMjQgNjRhNjQgNjQgMCAxIDAgMTI4IDB6TTIzMi43IDI2NGwyMi45IDMxLjVjNi41IDguOSAxNi4zIDE0LjcgMjcuMiAxNi4xczIxLjktMS43IDMwLjQtOC43bDg4LTcyYzE3LjEtMTQgMTkuNi0zOS4yIDUuNi01Ni4zcy0zOS4yLTE5LjYtNTYuMy01LjZsLTU1LjIgNDUuMi0yNi4yLTM2QzI1My42IDE1Ni43IDIyOC42IDE0NCAyMDIgMTQ0Yy0zMC45IDAtNTkuMiAxNy4xLTczLjYgNDQuNEw3OS44IDI4MC45Yy0yMC4yIDM4LjUtOS40IDg1LjkgMjUuNiAxMTEuOEwxNTguNiA0MzJINzJjLTIyLjEgMC00MCAxNy45LTQwIDQwczE3LjkgNDAgNDAgNDBIMjgwYzE3LjMgMCAzMi42LTExLjEgMzgtMjcuNXMtLjMtMzQuNC0xNC4yLTQ0LjdMMTg3LjcgMzU0bDQ1LTkwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25QcmVnbmFudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6TTEyMCAzODNjLTEzLjgtMy42LTI0LTE2LjEtMjQtMzFWMjk2LjlsLTQuNiA3LjZjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE1LTI0LjkgNDAuMy00MS41IDY4LjctNDUuNmM0LjEtLjYgOC4yLTEgMTIuNS0xaDEuMSAxMi41SDE5MmMxLjQgMCAyLjggLjEgNC4xIC4zYzM1LjcgMi45IDY1LjQgMjkuMyA3Mi4xIDY1bDYuMSAzMi41YzQ0LjMgOC42IDc3LjcgNDcuNSA3Ny43IDk0LjN2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJIMzA0IDI2NHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzODRoLTgtOHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvblJheXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTQwIDMwNFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjU2LjlsLTI4LjYgNDcuNWMtOS4xIDE1LjEtMjguOCAyMC00My45IDEwLjlzLTIwLTI4LjgtMTAuOS00My45bDU4LjMtOTdjMTcuNC0yOC45IDQ4LjYtNDYuNiA4Mi4zLTQ2LjZoMjkuN2MzMy43IDAgNjQuOSAxNy43IDgyLjMgNDYuNmw1OC4zIDk3YzkuMSAxNS4xIDQuMiAzNC44LTEwLjkgNDMuOXMtMzQuOCA0LjItNDMuOS0xMC45TDMyOCAyNTYuOVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUySDI0OHpNNyA3QzE2LjQtMi4zIDMxLjYtMi4zIDQxIDdsODAgODBjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMEw3IDQxQy0yLjMgMzEuNi0yLjMgMTYuNCA3IDd6TTQ3MSA3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtODAgODBjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlMNDcxIDd6TTcgNTA1Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw4MC04MGM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlMNDEgNTA1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHptNDY0IDBsLTgwLTgwYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsODAgODBjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uUmlmbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY1LjIgMTkyYzI1LjQgMCA0OS44IDcuMSA3MC44IDE5LjlWNTEySDE0NFYzMzcuN0w5MC40IDQyOC4zYy0xMS4yIDE5LTM1LjggMjUuMy01NC44IDE0LjFzLTI1LjMtMzUuOC0xNC4xLTU0LjhMOTcuNyAyNTguOGMyNC41LTQxLjQgNjktNjYuOCAxMTcuMS02Ni44aDUwLjR6TTE2MCA4MGE4MCA4MCAwIDEgMSAxNjAgMEE4MCA4MCAwIDEgMSAxNjAgODB6TTQ0OCAwYzguOCAwIDE2IDcuMiAxNiAxNlYxMzIuM2M5LjYgNS41IDE2IDE1LjkgMTYgMjcuN1YyNjkuM2wxNi01LjNWMjA4YzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2ODQuNWMwIDYuOS00LjQgMTMtMTAuOSAxNS4yTDQ4MCAzMjUuM1YzNTJoNDhjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNkg0ODRsMjMgOTIuMWMyLjUgMTAuMS01LjEgMTkuOS0xNS41IDE5LjlINDMyYy04LjggMC0xNi03LjItMTYtMTZWNDAwSDQwMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMyVjE2MGMwLTExLjggNi40LTIyLjIgMTYtMjcuN1YzMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmgxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uUnVubmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMTI1LjcgMTc1LjVjOS45LTkuOSAyMy40LTE1LjUgMzcuNS0xNS41YzEuOSAwIDMuOCAuMSA1LjYgLjNMMTM3LjYgMjU0Yy05LjMgMjggMS43IDU4LjggMjYuOCA3NC41bDg2LjIgNTMuOS0yNS40IDg4LjhjLTQuOSAxNyA1IDM0LjcgMjIgMzkuNnMzNC43LTUgMzkuNi0yMmwyOC43LTEwMC40YzUuOS0yMC42LTIuNi00Mi42LTIwLjctNTMuOUwyMzggMjk5bDMwLjktODIuNCA1LjEgMTIuM0MyODkgMjY0LjcgMzIzLjkgMjg4IDM2Mi43IDI4OEgzODRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzYyLjdjLTEyLjkgMC0yNC42LTcuOC0yOS41LTE5LjdsLTYuMy0xNWMtMTQuNi0zNS4xLTQ0LjEtNjEuOS04MC41LTczLjFsLTQ4LjctMTVjLTExLjEtMy40LTIyLjctNS4yLTM0LjQtNS4yYy0zMSAwLTYwLjggMTIuMy04Mi43IDM0LjNMNTcuNCAxNTMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGwyMy4xLTIzLjF6TTkxLjIgMzUySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDY5LjZjMTkgMCAzNi4yLTExLjIgNDMuOS0yOC41TDE1NyAzNjEuNmwtOS41LTZjLTE3LjUtMTAuOS0zMC41LTI2LjgtMzcuOS00NC45TDkxLjIgMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25TaGVsdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MS45IDQuMmMtOS44LTUuNi0yMS45LTUuNi0zMS44IDBsLTIyNCAxMjhDNi4yIDEzNy45IDAgMTQ4LjUgMCAxNjBWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTc4LjZMMjU2IDY4LjkgNDQ4IDE3OC42VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE2MGMwLTExLjUtNi4yLTIyLjEtMTYuMS0yNy44bC0yMjQtMTI4ek0yNTYgMjA4YTQwIDQwIDAgMSAwIDAtODAgNDAgNDAgMCAxIDAgMCA4MHptLTggMjgwVjQwMGgxNnY4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjMxMy41bDI2LjkgNDkuOWM2LjMgMTEuNyAyMC44IDE2IDMyLjUgOS44czE2LTIwLjggOS44LTMyLjVsLTM3LjktNzAuM2MtMTUuMy0yOC41LTQ1LjEtNDYuMy03Ny41LTQ2LjNIMjQ2LjJjLTMyLjQgMC02Mi4xIDE3LjgtNzcuNSA0Ni4zbC0zNy45IDcwLjNjLTYuMyAxMS43LTEuOSAyNi4yIDkuOCAzMi41czI2LjIgMS45IDMyLjUtOS44TDIwMCAzMTMuNVY0ODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uU2thdGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMTI4IDEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMkgzMTkuNGM0My42IDAgNjQuNiA1My40IDMyLjggODMuMWwtNzQuNCA2OS40IDYwLjIgNjAuMmM5IDkgMTQuMSAyMS4yIDE0LjEgMzMuOVY0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzQ5LjNsLTc3LjktNzcuOGMtMjYuNi0yNi42LTI0LjYtNzAuMyA0LjMtOTQuNGwyMC40LTE3SDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTgxLjQgMzUzLjRsODYuOS04Ni45YzQuNiAxMCAxMSAxOS4zIDE5LjMgMjcuNWwyMS44IDIxLjgtODIuNyA4Mi43Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM3ptMzIyLjUgOTUuMWM4LjYgMi4xIDEzLjggMTAuOCAxMS42IDE5LjRsLS40IDEuN2MtNi4yIDI0LjktMjguNiA0Mi40LTU0LjMgNDIuNEgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoODguOGMxMSAwIDIwLjYtNy41IDIzLjMtMTguMmwuNC0xLjdjMi4xLTguNiAxMC44LTEzLjggMTkuNC0xMS42ek0xMzUuMiA0NzguM2wtNi4yIDMuMWMtMjEuNiAxMC44LTQ3LjYgNi42LTY0LjYtMTAuNUw0LjcgNDExLjNjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMGw1OS42IDU5LjZjNy4zIDcuMyAxOC41IDkuMSAyNy43IDQuNWw2LjItMy4xYzcuOS00IDE3LjUtLjcgMjEuNSA3LjJzLjcgMTcuNS03LjIgMjEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uU2tpaW5nTm9yZGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTIyNy4yIDE2MGMxLjkgMCAzLjggLjEgNS42IC4zTDIwMS42IDI1NGMtOS4zIDI4IDEuNyA1OC44IDI2LjggNzQuNWw4Ni4yIDUzLjlMMjkxLjMgNDY0SDIwMi44bDQxLjEtODguMS0zMi40LTIwLjNjLTcuOC00LjktMTQuNy0xMC43LTIwLjYtMTcuM0wxMzIuMiA0NjRIOTkuN2w1NC4yLTI1Ny42YzQuNi0xLjUgOS00LjEgMTIuNy03LjhsMjMuMS0yMy4xYzkuOS05LjkgMjMuNC0xNS41IDM3LjUtMTUuNXpNMTIxLjQgMTk4LjZjLjQgLjQgLjggLjggMS4zIDEuMkw2NyA0NjRIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMTU5LjNjLjQgMCAuOSAwIDEuMyAwSDMxOS4zYy41IDAgMSAwIDEuNCAwSDUwNGMzOS44IDAgNzItMzIuMiA3Mi03MnYtOGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY4YzAgMTMuMy0xMC43IDI0LTI0IDI0SDQzNC42bDI3LjYtMTc5LjNjMTAuNS01LjIgMTcuOC0xNi4xIDE3LjgtMjguN2MwLTE3LjctMTQuMy0zMi0zMi0zMkg0MjYuN2MtMTIuOSAwLTI0LjYtNy44LTI5LjUtMTkuN2wtNi4zLTE1Yy0xNC42LTM1LjEtNDQuMS02MS45LTgwLjUtNzMuMWwtNDguNy0xNWMtMTEuMS0zLjQtMjIuNy01LjItMzQuNC01LjJjLTMxIDAtNjAuOCAxMi4zLTgyLjcgMzQuM2wtMjMuMSAyMy4xYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3ptMzA4IDg5LjRMNDAyLjMgNDY0SDM1Ny44bDIxLjYtNzUuNmM1LjktMjAuNi0yLjYtNDIuNi0yMC43LTUzLjlMMzAyIDI5OWwzMC45LTgyLjQgNS4xIDEyLjNDMzUzIDI2NC43IDM4Ny45IDI4OCA0MjYuNyAyODhoMi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25Ta2lpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgwLjcgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMi43IDI2OC45YzYuMS0xMS44IDIwLjYtMTYuMyAzMi40LTEwLjJMMjMyLjcgMzYxLjNsNDYuMi02OS4yLTc1LjEtNzUuMWMtMTQuNi0xNC42LTIwLjQtMzMuOS0xOC40LTUyLjFsMTA4LjggNTIgMzkuMyAzOS4zYzE2LjIgMTYuMiAxOC43IDQxLjUgNiA2MC42TDI4OS44IDM5MWwxMjguNyA2Ni44YzEzLjYgNy4xIDI5LjggNy4yIDQzLjYgLjNsMTUuMi03LjZjMTEuOS01LjkgMjYuMy0xLjEgMzIuMiAxMC43czEuMSAyNi4zLTEwLjcgMzIuMmwtMTUuMiA3LjZjLTI3LjUgMTMuNy01OS45IDEzLjUtODcuMi0uN0wxMi45IDMwMS4zQzEuMiAyOTUuMi0zLjQgMjgwLjcgMi43IDI2OC45ek0xMTguOSA2NS42TDEzNyA3NC4ybDguNy0xNy40YzQtNy45IDEzLjYtMTEuMSAyMS41LTcuMnMxMS4xIDEzLjYgNy4yIDIxLjVsLTguNSAxNi45IDU0LjcgMjYuMmMxLjUtLjcgMy4xLTEuNCA0LjctMi4xbDgzLjQtMzMuNGMzNC4yLTEzLjcgNzIuOCA0LjIgODQuNSAzOS4ybDE3LjEgNTEuMiA1Mi4xIDI2LjFjMTUuOCA3LjkgMjIuMiAyNy4xIDE0LjMgNDIuOXMtMjcuMSAyMi4yLTQyLjkgMTQuM2wtNTguMS0yOWMtMTEuNC01LjctMjAtMTUuNy0yNC4xLTI3LjhsLTUuOC0xNy4zLTI3LjMgMTIuMS02LjggMy02LjctMy4yTDE1MS41IDExNi43bC05LjIgMTguNGMtNCA3LjktMTMuNiAxMS4xLTIxLjUgNy4ycy0xMS4xLTEzLjYtNy4yLTIxLjVsOS0xOC0xNy42LTguNGMtOC0zLjgtMTEuMy0xMy40LTcuNS0yMS4zczEzLjQtMTEuMyAyMS4zLTcuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uU25vd2JvYXJkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOS43IDMuNGMxNS44LTcuOSAzNS0xLjUgNDIuOSAxNC4zbDI1IDUwIDQyLjQgOC41YzE5LjUgMy45IDM3LjggMTIuMyA1My41IDI0LjVsMTI2LjEgOTguMWMxNCAxMC45IDE2LjUgMzEgNS42IDQ0LjlzLTMxIDE2LjUtNDQuOSA1LjZsLTcyLjEtNTYuMS03MS41IDMxLjggMzMuMSAyNy42YzIzLjIgMTkuMyAzMy41IDUwIDI2LjcgNzkuNGwtMTcuNCA3NS4yYy0yLjIgOS40LTguMiAxNi44LTE2LjEgMjFsODYuNSAzMy4xYzQuNiAxLjggOS40IDIuNiAxNC4zIDIuNkg0NzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINDQzLjhjLTEwLjggMC0yMS40LTItMzEuNS01LjhMNjAuMSAzNzEuM2MtMTEuNS00LjQtMjItMTEuMi0zMC44LTIwTDcgMzI5Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsMjIuNCAyMi40YzQgNCA4LjcgNy4xIDE0IDkuMWwyMi40IDguNmMtLjgtMS42LTEuNS0zLjItMi4xLTQuOWMtNS42LTE2LjggMy41LTM0LjkgMjAuMi00MC41TDE5MiAyNjQuOWwwLTUzLjJjMC0yNC4yIDEzLjctNDYuNCAzNS40LTU3LjJsNDUuMi0yMi42LTcuNS0xLjVjLTE5LjQtMy45LTM1LjktMTYuNS00NC43LTM0LjFsLTI1LTUwYy03LjktMTUuOC0xLjUtMzUgMTQuMy00Mi45ek0xMzkgMzUwLjFsMTU5IDYwLjljLTIuMS01LjYtMi42LTExLjktMS4xLTE4LjJsMTcuNC03NS4yYzEuNC01LjktLjctMTItNS4zLTE1LjlsLTUyLjgtNDQgMCAxOC44YzAgMjAuNy0xMy4yIDM5LTMyLjggNDUuNUwxMzkgMzUwLjF6TTQzMiAwYTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uU3dpbW1pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA5LjUgMTc4LjRMNDQ3LjkgMjk3LjFjLTEuNiAuOS0zLjIgMi00LjggM2MtMTggMTIuNC00MC4xIDIwLjMtNTkuMiAyMC4zYy0xOS42IDAtNDAuOC03LjctNTkuMi0yMC4zYy0yMi4xLTE1LjUtNTEuNi0xNS41LTczLjcgMGMtMTcuMSAxMS44LTM4IDIwLjMtNTkuMiAyMC4zYy0xMC4xIDAtMjEuMS0yLjItMzEuOS02LjJDMTYzLjEgMTkzLjIgMjYyLjIgOTYgMzg0IDk2aDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM4NGMtMjYuOSAwLTUyLjMgNi42LTc0LjUgMTguNHpNMTYwIDE2MEE2NCA2NCAwIDEgMSAzMiAxNjBhNjQgNjQgMCAxIDEgMTI4IDB6TTMwNi41IDMyNS45QzMyOSAzNDEuNCAzNTYuNSAzNTIgMzg0IDM1MmMyNi45IDAgNTUuNC0xMC44IDc3LjQtMjYuMWwwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSA0MDUuNyA0MTcgNDE2IDM4NCA0MTZjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40YzE4LjEtNC4yIDM2LjItMTMuMyA1MC42LTI1LjJjMTEuMS05LjQgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyAzNDEuMiAxNjUuMSAzNTIgMTkyIDM1MmMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uVGhyb3VnaFdpbmRvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NGwyMjQgMCAwIDkuOGMwIDM5LTIzLjcgNzQtNTkuOSA4OC40QzE2Ny42IDE4Ni41IDEyOCAyNDUgMTI4IDMxMC4ybDAgNzMuOHMwIDAgMCAwSDY0VjY0em0yODggMGwyMjQgMFYzODRINTA4LjNsLTMuNy00LjUtNzUuMi05MC4yYy05LjEtMTAuOS0yMi42LTE3LjMtMzYuOS0xNy4zbC03MS4xIDAtNDEtNjMuMWMtLjMtLjUtLjYtMS0xLTEuNGM0NC43LTI5IDcyLjUtNzkgNzIuNS0xMzMuNmwwLTkuOHptNzMgMzIwSDM3OS4ybDQyLjcgNjRINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4QzIxLjUgMCAwIDIxLjUgMCA0OFY0MDBjMCAyNi41IDIxLjUgNDggNDggNDhIMzA4LjJsMzMuMiA0OS44YzkuOCAxNC43IDI5LjcgMTguNyA0NC40IDguOXMxOC43LTI5LjcgOC45LTQ0LjRMMzEwLjUgMzM2bDc0LjYgMCA0MCA0OHptLTE1OS41IDBIMTkyczAgMCAwIDBsMC03My44YzAtMTAuMiAxLjYtMjAuMSA0LjctMjkuNUwyNjUuNSAzODR6TTE5MiAxMjhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uV2Fsa2luZ0Fycm93TG9vcExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNMTIzLjcgMjAwLjVjMS0uNCAxLjktLjggMi45LTEuMmwtMTYuOSA2My41Yy01LjYgMjEuMS0uMSA0My42IDE0LjcgNTkuN2w3MC43IDc3LjEgMjIgODguMWM0LjMgMTcuMSAyMS43IDI3LjYgMzguOCAyMy4zczI3LjYtMjEuNyAyMy4zLTM4LjhsLTIzLTkyLjFjLTEuOS03LjgtNS44LTE0LjktMTEuMi0yMC44bC00OS41LTU0IDE5LjMtNjUuNSA5LjYgMjNjNC40IDEwLjYgMTIuNSAxOS4zIDIyLjggMjQuNWwyNi43IDEzLjNjMTUuOCA3LjkgMzUgMS41IDQyLjktMTQuM3MxLjUtMzUtMTQuMy00Mi45TDI4MSAyMzIuN2wtMTUuMy0zNi44QzI0OC41IDE1NC44IDIwOC4zIDEyOCAxNjMuNyAxMjhjLTIyLjggMC00NS4zIDQuOC02Ni4xIDE0bC04IDMuNWMtMzIuOSAxNC42LTU4LjEgNDIuNC02OS40IDc2LjVsLTIuNiA3LjhjLTUuNiAxNi44IDMuNSAzNC45IDIwLjIgNDAuNXMzNC45LTMuNSA0MC41LTIwLjJsMi42LTcuOGM1LjctMTcuMSAxOC4zLTMwLjkgMzQuNy0zOC4ybDgtMy41em0tMzAgMTM1LjFMNjguNyAzOTggOS40IDQ1Ny40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDExNi4zIDQ0MWM0LjYtNC42IDguMi0xMC4xIDEwLjYtMTYuMWwxNC41LTM2LjItNDAuNy00NC40Yy0yLjUtMi43LTQuOC01LjYtNy04LjZ6bTM0Ny43IDExOWMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDQ2MS4zIDM4NEg0ODBjODguNCAwIDE2MC03MS42IDE2MC0xNjBzLTcxLjYtMTYwLTE2MC0xNjBMMzUyIDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDEyOCAwYzUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2SDQ2MS4zbDI1LjQtMjUuNGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtODAgODBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25XYWxraW5nQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek0xMjMuNyAyMDAuNWMxLS40IDEuOS0uOCAyLjktMS4ybC0xNi45IDYzLjVjLTUuNiAyMS4xLS4xIDQzLjYgMTQuNyA1OS43bDcwLjcgNzcuMSAyMiA4OC4xYzQuMyAxNy4xIDIxLjcgMjcuNiAzOC44IDIzLjNzMjcuNi0yMS43IDIzLjMtMzguOGwtMjMtOTIuMWMtMS45LTcuOC01LjgtMTQuOS0xMS4yLTIwLjhsLTQ5LjUtNTQgMTkuMy02NS41IDkuNiAyM2M0LjQgMTAuNiAxMi41IDE5LjMgMjIuOCAyNC41bDI2LjcgMTMuM2MxNS44IDcuOSAzNSAxLjUgNDIuOS0xNC4zczEuNS0zNS0xNC4zLTQyLjlMMjgxIDIzMi43bC0xNS4zLTM2LjhDMjQ4LjUgMTU0LjggMjA4LjMgMTI4IDE2My43IDEyOGMtMjIuOCAwLTQ1LjMgNC44LTY2LjEgMTRsLTggMy41Yy0zMi45IDE0LjYtNTguMSA0Mi40LTY5LjQgNzYuNWwtMi42IDcuOGMtNS42IDE2LjggMy41IDM0LjkgMjAuMiA0MC41czM0LjktMy41IDQwLjUtMjAuMmwyLjYtNy44YzUuNy0xNy4xIDE4LjMtMzAuOSAzNC43LTM4LjJsOC0zLjV6bS0zMCAxMzUuMUw2OC43IDM5OCA5LjQgNDU3LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTE2LjMgNDQxYzQuNi00LjYgOC4yLTEwLjEgMTAuNi0xNi4xbDE0LjUtMzYuMi00MC43LTQ0LjRjLTIuNS0yLjctNC44LTUuNi03LTguNnpNNTUwLjYgMTUzLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDUzMC43IDIyNEgzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINTMwLjdsLTI1LjQgMjUuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw4MC04MGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbldhbGtpbmdEYXNoZWRMaW5lQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek0xMjMuNyAyMDAuNWMxLS40IDEuOS0uOCAyLjktMS4ybC0xNi45IDYzLjVjLTUuNiAyMS4xLS4xIDQzLjYgMTQuNyA1OS43bDcwLjcgNzcuMSAyMiA4OC4xYzQuMyAxNy4xIDIxLjcgMjcuNiAzOC44IDIzLjNzMjcuNi0yMS43IDIzLjMtMzguOGwtMjMtOTIuMWMtMS45LTcuOC01LjgtMTQuOS0xMS4yLTIwLjhsLTQ5LjUtNTQgMTkuMy02NS41IDkuNiAyM2M0LjQgMTAuNiAxMi41IDE5LjMgMjIuOCAyNC41bDI2LjcgMTMuM2MxNS44IDcuOSAzNSAxLjUgNDIuOS0xNC4zczEuNS0zNS0xNC4zLTQyLjlMMjgxIDIzMi43bC0xNS4zLTM2LjhDMjQ4LjUgMTU0LjggMjA4LjMgMTI4IDE2My43IDEyOGMtMjIuOCAwLTQ1LjMgNC44LTY2LjEgMTRsLTggMy41Yy0zMi45IDE0LjYtNTguMSA0Mi40LTY5LjQgNzYuNWwtMi42IDcuOGMtNS42IDE2LjggMy41IDM0LjkgMjAuMiA0MC41czM0LjktMy41IDQwLjUtMjAuMmwyLjYtNy44YzUuNy0xNy4xIDE4LjMtMzAuOSAzNC43LTM4LjJsOC0zLjV6bS0zMCAxMzUuMUw2OC43IDM5OCA5LjQgNDU3LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTE2LjMgNDQxYzQuNi00LjYgOC4yLTEwLjEgMTAuNi0xNi4xbDE0LjUtMzYuMi00MC43LTQ0LjRjLTIuNS0yLjctNC44LTUuNi03LTguNnpNNTUwLjYgMTUzLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDUzMC43IDIyNEgzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINTMwLjdsLTI1LjQgMjUuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw4MC04MGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtODAtODB6TTM5MiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNFY3MmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0em0yNCAxNTJjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2MTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYxNTJ6TTM5MiAzMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0djE2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMzQ0YzAtMTMuMy0xMC43LTI0LTI0LTI0em0yNCAxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0NDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbldhbGtpbmdMdWdnYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTM0Ny43IDIwMC41YzEtLjQgMS45LS44IDIuOS0xLjJsLTE2LjkgNjMuNWMtNS42IDIxLjEtLjEgNDMuNiAxNC43IDU5LjdsNzAuNyA3Ny4xIDIyIDg4LjFjNC4zIDE3LjEgMjEuNyAyNy42IDM4LjggMjMuM3MyNy42LTIxLjcgMjMuMy0zOC44bC0yMy05Mi4xYy0xLjktNy44LTUuOC0xNC45LTExLjItMjAuOGwtNDkuNS01NCAxOS4zLTY1LjUgOS42IDIzYzQuNCAxMC42IDEyLjUgMTkuMyAyMi44IDI0LjVsMjYuNyAxMy4zYzE1LjggNy45IDM1IDEuNSA0Mi45LTE0LjNzMS41LTM1LTE0LjMtNDIuOUw1MDUgMjMyLjdsLTE1LjMtMzYuOEM0NzIuNSAxNTQuOCA0MzIuMyAxMjggMzg3LjcgMTI4Yy0yMi44IDAtNDUuMyA0LjgtNjYuMSAxNGwtOCAzLjVjLTMyLjkgMTQuNi01OC4xIDQyLjQtNjkuNCA3Ni41bC0yLjYgNy44Yy01LjYgMTYuOCAzLjUgMzQuOSAyMC4yIDQwLjVzMzQuOS0zLjUgNDAuNS0yMC4ybDIuNi03LjhjNS43LTE3LjEgMTguMy0zMC45IDM0LjctMzguMmw4LTMuNXptLTMwIDEzNS4xbC0yNSA2Mi40LTU5LjQgNTkuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwzNDAuMyA0NDFjNC42LTQuNiA4LjItMTAuMSAxMC42LTE2LjFsMTQuNS0zNi4yLTQwLjctNDQuNGMtMi41LTIuNy00LjgtNS42LTctOC42ek0yNTYgMjc0LjFjLTcuNy00LjQtMTcuNC0xLjgtMjEuOSA1LjlsLTMyIDU1LjRMMTQ3LjcgMzA0Yy0xNS4zLTguOC0zNC45LTMuNi00My43IDExLjdMNDAgNDI2LjZjLTguOCAxNS4zLTMuNiAzNC45IDExLjcgNDMuN2w1NS40IDMyYzE1LjMgOC44IDM0LjkgMy42IDQzLjctMTEuN2w2NC0xMTAuOWMxLjUtMi42IDIuNi01LjIgMy4zLThMMjYxLjkgMjk2YzQuNC03LjcgMS44LTE3LjQtNS45LTIxLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbldhbGtpbmdXaXRoQ2FuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tOC40IDMyYy0zNi40IDAtNjkuNiAyMC41LTg1LjkgNTMuMUwzNS40IDI3My43Yy03LjkgMTUuOC0xLjUgMzUgMTQuMyA0Mi45czM1IDEuNSA0Mi45LTE0LjNMMTI4IDIzMS42djQzLjJjMCAxNyA2LjcgMzMuMyAxOC43IDQ1LjNMMjI0IDM5Ny4zVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM5MC42YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlMMjI0IDMwNi43VjIxMy4zbDcwLjQgOTMuOWMxMC42IDE0LjEgMzAuNyAxNyA0NC44IDYuNHMxNy0zMC43IDYuNC00NC44TDI2OC44IDE2Ni40QzI1MC43IDE0Mi4yIDIyMi4yIDEyOCAxOTIgMTI4SDE2Ny42ek0xMjguMyAzNDYuOEw5NyA0NzIuMmMtNC4zIDE3LjEgNi4xIDM0LjUgMjMuMyAzOC44czM0LjUtNi4xIDM4LjgtMjMuM2wyMi04OC4yLTUyLjgtNTIuOHpNNDUwLjggNTA1LjFjNSA3LjMgMTUgOS4xIDIyLjMgNHM5LjEtMTUgNC0yMi4zTDM1OC45IDMxNi4xYy0yLjggMy44LTYuMSA3LjMtMTAuMSAxMC4zYy01IDMuOC0xMC41IDYuNC0xNi4yIDcuOUw0NTAuOCA1MDUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uV2Fsa2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMTI2LjUgMTk5LjNjLTEgLjQtMS45IC44LTIuOSAxLjJsLTggMy41Yy0xNi40IDcuMy0yOSAyMS4yLTM0LjcgMzguMmwtMi42IDcuOGMtNS42IDE2LjgtMjMuNyAyNS44LTQwLjUgMjAuMnMtMjUuOC0yMy43LTIwLjItNDAuNWwyLjYtNy44YzExLjQtMzQuMSAzNi42LTYxLjkgNjkuNC03Ni41bDgtMy41YzIwLjgtOS4yIDQzLjMtMTQgNjYuMS0xNGM0NC42IDAgODQuOCAyNi44IDEwMS45IDY3LjlMMjgxIDIzMi43bDIxLjQgMTAuN2MxNS44IDcuOSAyMi4yIDI3LjEgMTQuMyA0Mi45cy0yNy4xIDIyLjItNDIuOSAxNC4zTDI0NyAyODcuM2MtMTAuMy01LjItMTguNC0xMy44LTIyLjgtMjQuNWwtOS42LTIzLTE5LjMgNjUuNSA0OS41IDU0YzUuNCA1LjkgOS4yIDEzIDExLjIgMjAuOGwyMyA5Mi4xYzQuMyAxNy4xLTYuMSAzNC41LTIzLjMgMzguOHMtMzQuNS02LjEtMzguOC0yMy4zbC0yMi04OC4xLTcwLjctNzcuMWMtMTQuOC0xNi4xLTIwLjMtMzguNi0xNC43LTU5LjdsMTYuOS02My41ek02OC43IDM5OGwyNS02Mi40YzIuMSAzIDQuNSA1LjggNyA4LjZsNDAuNyA0NC40LTE0LjUgMzYuMmMtMi40IDYtNiAxMS41LTEwLjYgMTYuMUw1NC42IDUwMi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0w2OC43IDM5OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI1Ni45TDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE3LjQtMjguOSA0OC42LTQ2LjYgODIuMy00Ni42aDI5LjdjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNTguMyA5N2M5LjEgMTUuMSA0LjIgMzQuOC0xMC45IDQzLjlzLTM0LjggNC4yLTQzLjktMTAuOUwyMzIgMjU2LjlWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkgxNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlc2V0YVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDNDYuMyAzMiAzMiA0Ni4zIDMyIDY0djk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDAgOTZWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzUyaDk2Yzc3LjQgMCAxNDItNTUgMTU2LjgtMTI4SDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmgtMy4yQzMzNCA4NyAyNjkuNCAzMiAxOTIgMzJINjR6TTI4Mi41IDE2MEg5NlY5Nmg5NmM0MS44IDAgNzcuNCAyNi43IDkwLjUgNjR6TTk2IDIyNEgyODIuNWMtMTMuMiAzNy4zLTQ4LjcgNjQtOTAuNSA2NEg5NlYyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlc29TaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzQ2LjMgMzIgMzIgNDYuMyAzMiA2NHY2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwwIDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDAgNjR2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzODRoODBjNjguNCAwIDEyNy43LTM5IDE1Ni44LTk2SDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmgtLjdjLjUtNS4zIC43LTEwLjYgLjctMTZzLS4yLTEwLjctLjctMTZoLjdjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzMyLjhDMzAzLjcgNzEgMjQ0LjQgMzIgMTc2IDMySDY0em0xOTAuNCA5Nkg5NlY5Nmg4MGMzMC41IDAgNTguMiAxMi4yIDc4LjQgMzJ6TTk2IDE5MkgyODYuOWMuNyA1LjIgMS4xIDEwLjYgMS4xIDE2cy0uNCAxMC44LTEuMSAxNkg5NlYxOTJ6bTE1OC40IDk2Yy0yMC4yIDE5LjgtNDcuOSAzMi03OC40IDMySDk2VjI4OEgyNTQuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvbmVGbGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Ny4xIDI0LjZjNy43LTE4LjYgMjgtMjguNSA0Ny40LTIzLjJsODggMjRDNDk5LjkgMzAuMiA1MTIgNDYgNTEyIDY0YzAgMjQ3LjQtMjAwLjYgNDQ4LTQ0OCA0NDhjLTE4IDAtMzMuOC0xMi4xLTM4LjYtMjkuNWwtMjQtODhjLTUuMy0xOS40IDQuNi0zOS43IDIzLjItNDcuNGw5Ni00MGMxNi4zLTYuOCAzNS4yLTIuMSA0Ni4zIDExLjZMMjA3LjMgMzY4YzcwLjQtMzMuMyAxMjcuNC05MC4zIDE2MC43LTE2MC43TDMxOC43IDE2N2MtMTMuNy0xMS4yLTE4LjQtMzAtMTEuNi00Ni4zbDQwLTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9uZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYwMS4yIDUuMWMxMC40LTguMiAyNS41LTYuMyAzMy43IDQuMXM2LjMgMjUuNS00LjEgMzMuN2wtNTkyIDQ2NGMtMTAuNCA4LjItMjUuNSA2LjMtMzMuNy00LjFzLTYuMy0yNS41IDQuMS0zMy43bDE1NS42LTEyMkMxMDEuOCAyNzAgNjQgMTcxLjQgNjQgNjRjMC0xOCAxMi4xLTMzLjggMjkuNS0zOC42bDg4LTI0YzE5LjQtNS4zIDM5LjcgNC42IDQ3LjQgMjMuMmw0MCA5NmM2LjggMTYuMyAyLjEgMzUuMi0xMS42IDQ2LjNMMjA4IDIwNy4zYzEyIDI1LjUgMjcuMiA0OS4yIDQ1IDcwLjdMNjAxLjIgNS4xek0yMzQuMyA0MTUuNmw5MS4zLTcyYzEzLjcgOS4xIDI4IDE3LjMgNDMgMjQuM0w0MDkgMzE4LjdjMTEuMi0xMy43IDMwLTE4LjQgNDYuMy0xMS42bDk2IDQwYzE4LjYgNy43IDI4LjUgMjggMjMuMiA0Ny40bC0yNCA4OEM1NDUuOCA0OTkuOSA1MzAgNTEyIDUxMiA1MTJjLTEwNC45IDAtMjAxLjMtMzYtMjc3LjctOTYuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvbmVWb2x1bWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjgwIDBDNDA4LjEgMCA1MTIgMTAzLjkgNTEyIDIzMmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTEwMS42LTgyLjQtMTg0LTE4NC0xODRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6bTggMTkyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptLTMyLTcyYzAtMTMuMyAxMC43LTI0IDI0LTI0Yzc1LjEgMCAxMzYgNjAuOSAxMzYgMTM2YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtNDguNi0zOS40LTg4LTg4LTg4Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHpNMTE3LjUgMS40YzE5LjQtNS4zIDM5LjcgNC42IDQ3LjQgMjMuMmw0MCA5NmM2LjggMTYuMyAyLjEgMzUuMi0xMS42IDQ2LjNMMTQ0IDIwNy4zYzMzLjMgNzAuNCA5MC4zIDEyNy40IDE2MC43IDE2MC43TDM0NSAzMTguN2MxMS4yLTEzLjcgMzAtMTguNCA0Ni4zLTExLjZsOTYgNDBjMTguNiA3LjcgMjguNSAyOCAyMy4yIDQ3LjRsLTI0IDg4QzQ4MS44IDQ5OS45IDQ2NiA1MTIgNDQ4IDUxMkMyMDAuNiA1MTIgMCAzMTEuNCAwIDY0QzAgNDYgMTIuMSAzMC4yIDI5LjUgMjUuNGw4OC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY0LjkgMjQuNmMtNy43LTE4LjYtMjgtMjguNS00Ny40LTIzLjJsLTg4IDI0QzEyLjEgMzAuMiAwIDQ2IDAgNjRDMCAzMTEuNCAyMDAuNiA1MTIgNDQ4IDUxMmMxOCAwIDMzLjgtMTIuMSAzOC42LTI5LjVsMjQtODhjNS4zLTE5LjQtNC42LTM5LjctMjMuMi00Ny40bC05Ni00MGMtMTYuMy02LjgtMzUuMi0yLjEtNDYuMyAxMS42TDMwNC43IDM2OEMyMzQuMyAzMzQuNyAxNzcuMyAyNzcuNyAxNDQgMjA3LjNMMTkzLjMgMTY3YzEzLjctMTEuMiAxOC40LTMwIDExLjYtNDYuM2wtNDAtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBob3RvRmlsbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMEg1NzZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMjg4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDI1NmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjRjMC0zNS4zIDI4LjctNjQgNjQtNjR6TTQ3NiAxMDYuN0M0NzEuNSAxMDAgNDY0IDk2IDQ1NiA5NnMtMTUuNSA0LTIwIDEwLjdsLTU2IDg0TDM2Mi43IDE2OWMtNC42LTUuNy0xMS41LTktMTguNy05cy0xNC4yIDMuMy0xOC43IDlsLTY0IDgwYy01LjggNy4yLTYuOSAxNy4xLTIuOSAyNS40czEyLjQgMTMuNiAyMS42IDEzLjZoODAgNDhINTUyYzguOSAwIDE3LTQuOSAyMS4yLTEyLjdzMy43LTE3LjMtMS4yLTI0LjZsLTk2LTE0NHpNMzM2IDk2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTY0IDEyOGg5NlYzODR2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NEg1MTJ2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE5MmMwLTM1LjMgMjguNy02NCA2NC02NHptOCA2NGMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgOC44IDcuMiAxNiAxNiAxNkg4OGM4LjggMCAxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkg3MnptMCAxMDRjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZIODhjOC44IDAgMTYtNy4yIDE2LTE2VjMxMmMwLTguOC03LjItMTYtMTYtMTZINzJ6bTAgMTA0Yy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2SDg4YzguOCAwIDE2LTcuMiAxNi0xNlY0MTZjMC04LjgtNy4yLTE2LTE2LTE2SDcyem0zMzYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDE2YzguOCAwIDE2LTcuMiAxNi0xNlY0MTZjMC04LjgtNy4yLTE2LTE2LTE2SDQyNGMtOC44IDAtMTYgNy4yLTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaWdneUJhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDk2bDAgLjdjLTUuMy0uNC0xMC42LS43LTE2LS43SDI1NmMtMTYuNSAwLTMyLjUgMi4xLTQ3LjggNmMtLjEtMi0uMi00LS4yLTZjMC01MyA0My05NiA5Ni05NnM5NiA0MyA5NiA5NnptLTE2IDMyYzMuNSAwIDcgLjEgMTAuNCAuM2M0LjIgLjMgOC40IC43IDEyLjYgMS4zQzQyNC42IDEwOS4xIDQ1MC44IDk2IDQ4MCA5NmgxMS41YzEwLjQgMCAxOCA5LjggMTUuNSAxOS45bC0xMy44IDU1LjJjMTUuOCAxNC44IDI4LjcgMzIuOCAzNy41IDUyLjlINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDUxMmMtOS4xIDEyLjEtMTkuOSAyMi45LTMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDQxNmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDQ4SDI1NnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQxNmMtMzQuOS0yNi4yLTU4LjctNjYuMy02My4yLTExMkg2OGMtMzcuNiAwLTY4LTMwLjQtNjgtNjhzMzAuNC02OCA2OC02OGg0YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDY4Yy0xMSAwLTIwIDktMjAgMjBzOSAyMCAyMCAyMEg5OS4yYzEyLjEtNTkuOCA1Ny43LTEwNy41IDExNi4zLTEyMi44YzEyLjktMy40IDI2LjUtNS4yIDQwLjUtNS4ySDM4NHptNjQgMTM2YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpbGxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiA5NmMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWMjU2aDk2VjE0NGMwLTI2LjUtMjEuNS00OC00OC00OHpNMCAxNDRDMCA4Mi4xIDUwLjEgMzIgMTEyIDMyczExMiA1MC4xIDExMiAxMTJWMzY4YzAgNjEuOS01MC4xIDExMi0xMTIgMTEyUzAgNDI5LjkgMCAzNjhWMTQ0ek01NTQuOSAzOTkuNGMtNy4xIDEyLjMtMjMuNyAxMy4xLTMzLjggMy4xTDMzMy41IDIxNC45Yy0xMC0xMC05LjMtMjYuNyAzLjEtMzMuOEMzNjAgMTY3LjcgMzg3LjEgMTYwIDQxNiAxNjBjODguNCAwIDE2MCA3MS42IDE2MCAxNjBjMCAyOC45LTcuNyA1Ni0yMS4xIDc5LjR6bS01OS41IDU5LjVDNDcyIDQ3Mi4zIDQ0NC45IDQ4MCA0MTYgNDgwYy04OC40IDAtMTYwLTcxLjYtMTYwLTE2MGMwLTI4LjkgNy43LTU2IDIxLjEtNzkuNGM3LjEtMTIuMyAyMy43LTEzLjEgMzMuOC0zLjFMNDk4LjUgNDI1LjFjMTAgMTAgOS4zIDI2LjctMy4xIDMzLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpenphU2xpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY5LjcgLjljLTIyLjgtMS42LTQxLjkgMTQtNDcuNSAzNC43TDExMC40IDgwYy41IDAgMS4xIDAgMS42IDBjMTc2LjcgMCAzMjAgMTQzLjMgMzIwIDMyMGMwIC41IDAgMS4xIDAgMS42bDQ0LjQtMTEuOGMyMC44LTUuNSAzNi4zLTI0LjcgMzQuNy00Ny41QzQ5OC41IDE1OS41IDM1Mi41IDEzLjUgMTY5LjcgLjl6TTM5OS44IDQxMC4yYy4xLTMuNCAuMi02LjggLjItMTAuMmMwLTE1OS4xLTEyOC45LTI4OC0yODgtMjg4Yy0zLjQgMC02LjggLjEtMTAuMiAuMkwuNSA0OTEuOWMtMS41IDUuNSAuMSAxMS40IDQuMSAxNS40czkuOSA1LjYgMTUuNCA0LjFMMzk5LjggNDEwLjJ6TTE3NiAyMDhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em02NCAxMjhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNOTYgMzg0YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYWNlT2ZXb3JzaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMDkuM1YyMTcuNkwxODMuMyAyNDJjLTE0LjUgOC43LTIzLjMgMjQuMy0yMy4zIDQxLjJWNTEyaDk2VjQxNmMwLTM1LjMgMjguNy02NCA2NC02NHM2NCAyOC43IDY0IDY0djk2aDk2VjI4My4yYzAtMTYuOS04LjgtMzIuNS0yMy4zLTQxLjJMNDE2IDIxNy42VjEwOS4zYzAtOC41LTMuNC0xNi42LTkuNC0yMi42TDMzMS4zIDExLjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDIzMy40IDg2LjZjLTYgNi05LjQgMTQuMS05LjQgMjIuNnpNMjQuOSAzMzAuM0M5LjUgMzM4LjggMCAzNTQuOSAwIDM3Mi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg4MFYyNzMuNkwyNC45IDMzMC4zek01OTIgNTEyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM3Mi40YzAtMTcuNS05LjUtMzMuNi0yNC45LTQyLjFMNTEyIDI3My42VjUxMmg4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxhbmVBcnJpdmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS4zIDE2Ni45TDAgNjhDMCA1Ny43IDkuNSA1MC4xIDE5LjUgNTIuM2wzNS42IDcuOWMxMC42IDIuMyAxOS4yIDkuOSAyMyAyMEw5NiAxMjhsMTI3LjMgMzcuNkwxODEuOCAyMC40QzE3OC45IDEwLjIgMTg2LjYgMCAxOTcuMiAwaDQwLjFjMTEuNiAwIDIyLjIgNi4yIDI3LjkgMTYuM2wxMDkgMTkzLjggMTA3LjIgMzEuN2MxNS45IDQuNyAzMC44IDEyLjUgNDMuNyAyMi44bDM0LjQgMjcuNmMyNCAxOS4yIDE4LjEgNTcuMy0xMC43IDY4LjJjLTQxLjIgMTUuNi04Ni4yIDE4LjEtMTI4LjggN0wxMjEuNyAyODkuOGMtMTEuMS0yLjktMjEuMi04LjctMjkuMy0xNi45TDkuNSAxODkuNGMtNS45LTYtOS4zLTE0LjEtOS4zLTIyLjV6TTMyIDQ0OEg2MDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTk2LTgwYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTEyOC0xNmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lQ2lyY2xlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBjLTM1IDAtNjQgNTkuNS02NCA5My43djg0LjZMOC4xIDI4My40Yy01IDIuOC04LjEgOC4yLTguMSAxMy45djY1LjVjMCAxMC42IDEwLjIgMTguMyAyMC40IDE1LjRsMTcxLjYtNDkgMCA3MC45LTU3LjYgNDMuMmMtNCAzLTYuNCA3LjgtNi40IDEyLjh2NDJjMCA3LjggNi4zIDE0IDE0IDE0YzEuMyAwIDIuNi0uMiAzLjktLjVMMjU2IDQ4MGwxMTAuMSAzMS41YzEuMyAuNCAyLjYgLjUgMy45IC41YzYgMCAxMS4xLTMuNyAxMy4xLTlDMzQ0LjUgNDcwLjcgMzIwIDQyMi4yIDMyMCAzNjhjMC02MC42IDMwLjYtMTE0IDc3LjEtMTQ1LjZMMzIwIDE3OC4zVjkzLjdDMzIwIDU5LjUgMjkyIDAgMjU2IDB6TTY0MCAzNjhhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTc2LjctNDMuM2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNmwtNzIgNzJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwbC00MC00MGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ4MCAzODUuNGw2MC43LTYwLjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lQ2lyY2xlRXhjbGFtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBjLTM1IDAtNjQgNTkuNS02NCA5My43djg0LjZMOC4xIDI4My40Yy01IDIuOC04LjEgOC4yLTguMSAxMy45djY1LjVjMCAxMC42IDEwLjIgMTguMyAyMC40IDE1LjRsMTcxLjYtNDkgMCA3MC45LTU3LjYgNDMuMmMtNCAzLTYuNCA3LjgtNi40IDEyLjh2NDJjMCA3LjggNi4zIDE0IDE0IDE0YzEuMyAwIDIuNi0uMiAzLjktLjVMMjU2IDQ4MGwxMTAuMSAzMS41YzEuMyAuNCAyLjYgLjUgMy45IC41YzYgMCAxMS4xLTMuNyAxMy4xLTlDMzQ0LjUgNDcwLjcgMzIwIDQyMi4yIDMyMCAzNjhjMC02MC42IDMwLjYtMTE0IDc3LjEtMTQ1LjZMMzIwIDE3OC4zVjkzLjdDMzIwIDU5LjUgMjkyIDAgMjU2IDB6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTk2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMC0xNDRjOC44IDAgMTYgNy4yIDE2IDE2djgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI4OGMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBjLTM1IDAtNjQgNTkuNS02NCA5My43djg0LjZMOC4xIDI4My40Yy01IDIuOC04LjEgOC4yLTguMSAxMy45djY1LjVjMCAxMC42IDEwLjIgMTguMyAyMC40IDE1LjRsMTcxLjYtNDkgMCA3MC45LTU3LjYgNDMuMmMtNCAzLTYuNCA3LjgtNi40IDEyLjh2NDJjMCA3LjggNi4zIDE0IDE0IDE0YzEuMyAwIDIuNi0uMiAzLjktLjVMMjU2IDQ4MGwxMTAuMSAzMS41YzEuMyAuNCAyLjYgLjUgMy45IC41YzYgMCAxMS4xLTMuNyAxMy4xLTlDMzQ0LjUgNDcwLjcgMzIwIDQyMi4yIDMyMCAzNjhjMC02MC42IDMwLjYtMTE0IDc3LjEtMTQ1LjZMMzIwIDE3OC4zVjkzLjdDMzIwIDU5LjUgMjkyIDAgMjU2IDB6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em01OS4zLTE4MC43TDUxOC42IDM2OGwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEw0OTYgMzkwLjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkw0NzMuNCAzNjhsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ5NiAzNDUuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGFuZURlcGFydHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODEgMTE0LjlMMTg2LjEgNDEuOGMtMTYuNy02LjItMzUuMi01LjMtNTEuMSAyLjdMODkuMSA2Ny40Qzc4IDczIDc3LjIgODguNSA4Ny42IDk1LjJsMTQ2LjkgOTQuNUwxMzYgMjQwIDc3LjggMjE0LjFjLTguNy0zLjktMTguOC0zLjctMjcuMyAuNkwxOC4zIDIzMC44Yy05LjMgNC43LTExLjggMTYuOC01IDI0LjdsNzMuMSA4NS4zYzYuMSA3LjEgMTUgMTEuMiAyNC4zIDExLjJIMjQ4LjRjNSAwIDkuOS0xLjIgMTQuMy0zLjRMNTM1LjYgMjEyLjJjNDYuNS0yMy4zIDgyLjUtNjMuMyAxMDAuOC0xMTJDNjQ1LjkgNzUgNjI3LjIgNDggNjAwLjIgNDhINTQyLjhjLTIwLjIgMC00MC4yIDQuOC01OC4yIDE0TDM4MSAxMTQuOXpNMCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxhbmVMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA5My43QzE5MiA1OS41IDIyMSAwIDI1NiAwYzM2IDAgNjQgNTkuNSA2NCA5My43djg0LjZsMTAxLjggNTguMkM0MTggMjQ3LjYgNDE2IDI1OS42IDQxNiAyNzJ2MjQuNmMtMTcuOSAxMC40LTMwLjMgMjkuMS0zMS44IDUwLjlMMzIwIDMyOS4xVjQwMGw1Ny42IDQzLjJjNCAzIDYuNCA3LjggNi40IDEyLjh2MjQgMThjMCA3LjgtNi4zIDE0LTE0IDE0Yy0xLjMgMC0yLjYtLjItMy45LS41TDI1NiA0ODAgMTQ1LjkgNTExLjVjLTEuMyAuNC0yLjYgLjUtMy45IC41Yy03LjggMC0xNC02LjMtMTQtMTRWNDU2YzAtNSAyLjQtOS44IDYuNC0xMi44TDE5MiA0MDBsMC03MC45LTE3MS42IDQ5QzEwLjIgMzgxLjEgMCAzNzMuNCAwIDM2Mi44VjI5Ny4zYzAtNS43IDMuMS0xMSA4LjEtMTMuOUwxOTIgMTc4LjNWOTMuN3pNNTI4IDI0MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NDhoNjRWMjcyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tODAgMzJjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MHY0OGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJINDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNTJjMC0xNy43IDE0LjMtMzIgMzItMzJWMjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGFuZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC42IDMyMGg3My44YzM0LjIgMCA5My43LTI4IDkzLjctNjRjMC0zNS01OS41LTY0LTkzLjctNjRsLTExNi42IDBMMjk3LjIgMTYuMUMyOTEuNSA2LjIgMjgwLjkgMCAyNjkuNCAwSDIxMy4yYy0xMC42IDAtMTguMyAxMC4yLTE1LjQgMjAuNGw0MC4zIDE0MC45TDM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNDQwLjYgMzIwem0tNzguMSA2MS42TDQxLjUgMTI4LjdDMzYgMTMwLjYgMzIgMTM1LjkgMzIgMTQyYzAgMS4zIC4yIDIuNiAuNSAzLjlMNjQgMjU2IDMyLjUgMzY2LjFjLS40IDEuMy0uNSAyLjYtLjUgMy45YzAgNy44IDYuMyAxNCAxNCAxNEg4OGM1IDAgOS44LTIuNCAxMi44LTYuNEwxNDQgMzIwSDI0Ni45bC00OSAxNzEuNmMtMi45IDEwLjIgNC44IDIwLjQgMTUuNCAyMC40bDU2LjIgMGMxMS41IDAgMjIuMS02LjIgMjcuOC0xNi4xbDY1LjMtMTE0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDkzLjdDMTkyIDU5LjUgMjIxIDAgMjU2IDBjMzYgMCA2NCA1OS41IDY0IDkzLjdsMCA2Ni4zTDQ5Ny44IDI3OC41YzguOSA1LjkgMTQuMiAxNS45IDE0LjIgMjYuNnY1Ni43YzAgMTAuOS0xMC43IDE4LjYtMjEuMSAxNS4yTDMyMCAzMjB2ODBsNTcuNiA0My4yYzQgMyA2LjQgNy44IDYuNCAxMi44djQyYzAgNy44LTYuMyAxNC0xNCAxNGMtMS4zIDAtMi42LS4yLTMuOS0uNUwyNTYgNDgwIDE0NS45IDUxMS41Yy0xLjMgLjQtMi42IC41LTMuOSAuNWMtNy44IDAtMTQtNi4zLTE0LTE0VjQ1NmMwLTUgMi40LTkuOCA2LjQtMTIuOEwxOTIgNDAwVjMyMEwyMS4xIDM3N0MxMC43IDM4MC40IDAgMzcyLjcgMCAzNjEuOFYzMDUuMWMwLTEwLjcgNS4zLTIwLjcgMTQuMi0yNi42TDE5MiAxNjBWOTMuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxhbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgyLjMgMTkyYzM0LjIgMCA5My43IDI5IDkzLjcgNjRjMCAzNi01OS41IDY0LTkzLjcgNjRsLTExNi42IDBMMjY1LjIgNDk1LjljLTUuNyAxMC0xNi4zIDE2LjEtMjcuOCAxNi4xbC01Ni4yIDBjLTEwLjYgMC0xOC4zLTEwLjItMTUuNC0yMC40bDQ5LTE3MS42TDExMiAzMjAgNjguOCAzNzcuNmMtMyA0LTcuOCA2LjQtMTIuOCA2LjRsLTQyIDBjLTcuOCAwLTE0LTYuMy0xNC0xNGMwLTEuMyAuMi0yLjYgLjUtMy45TDMyIDI1NiAuNSAxNDUuOWMtLjQtMS4zLS41LTIuNi0uNS0zLjljMC03LjggNi4zLTE0IDE0LTE0bDQyIDBjNSAwIDkuOCAyLjQgMTIuOCA2LjRMMTEyIDE5MmwxMDIuOSAwLTQ5LTE3MS42QzE2Mi45IDEwLjIgMTcwLjYgMCAxODEuMiAwbDU2LjIgMGMxMS41IDAgMjIuMSA2LjIgMjcuOCAxNi4xTDM2NS43IDE5MmwxMTYuNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGFudFdpbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDEyMGMwLTMwLjkgMjUuMS01NiA1Ni01NnM1NiAyNS4xIDU2IDU2djEzYy0yOS4zIDEwLTQ4IDM0LjUtNDggNzAuMWMwIDI3LjkgMjUuMyA3NC44IDY2IDExMS42YzMuOCAzLjUgOC45IDUuMyAxNCA1LjNzMTAuMi0xLjggMTQtNS4zYzQwLjctMzYuOCA2Ni04My43IDY2LTExMS42YzAtMzUuNi0xOC43LTYwLjItNDgtNzAuMVYxMjBDNDY0IDUzLjcgNDEwLjMgMCAzNDQgMFMyMjQgNTMuNyAyMjQgMTIwdjIxLjhDMjA3LjMgMTMzIDE4OC4yIDEyOCAxNjggMTI4Yy02Ni4zIDAtMTIwIDUzLjctMTIwIDEyMHYxM2MtMjkuMyAxMC00OCAzNC41LTQ4IDcwLjFDMCAzNTkgMjUuMyA0MDUuOSA2NiA0NDIuN2MzLjggMy41IDguOSA1LjMgMTQgNS4zczEwLjItMS44IDE0LTUuM2M0MC43LTM2LjggNjYtODMuNyA2Ni0xMTEuNmMwLTM1LjYtMTguNy02MC4yLTQ4LTcwLjFWMjQ4YzAtMzAuOSAyNS4xLTU2IDU2LTU2czU2IDI1LjEgNTYgNTZ2MzJWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjgwIDI0OCAxMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYXRlV2hlYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDMyYzQ0LjIgMCA4MCAzNS44IDgwIDgwdjE2YzAgOC44LTcuMiAxNi0xNiAxNmMtNDQuMiAwLTgwLTM1LjgtODAtODBWNDhjMC04LjggNy4yLTE2IDE2LTE2ek01NiA2NGg0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpNMjQgMTM2SDEzNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptOCA5NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGg0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1NmMtMTMuMyAwLTI0LTEwLjctMjQtMjR6TTI3MiA0OGMwLTguOCA3LjItMTYgMTYtMTZjNDQuMiAwIDgwIDM1LjggODAgODB2MTZjMCA4LjgtNy4yIDE2LTE2IDE2Yy00NC4yIDAtODAtMzUuOC04MC04MFY0OHpNNDAwIDMyYzQ0LjIgMCA4MCAzNS44IDgwIDgwdjE2YzAgOC44LTcuMiAxNi0xNiAxNmMtNDQuMiAwLTgwLTM1LjgtODAtODBWNDhjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNjB2MTZjMCA0NC4yLTM1LjggODAtODAgODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNTZjMC00NC4yIDM1LjgtODAgODAtODBjOC44IDAgMTYgNy4yIDE2IDE2ek0zNTIgMTc2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDQ0LjItMzUuOCA4MC04MCA4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI1NmMwLTQ0LjIgMzUuOC04MCA4MC04MHptLTk2IDE2djE2YzAgNDQuMi0zNS44IDgwLTgwIDgwYy04LjggMC0xNi03LjItMTYtMTZWMjU2YzAtNDQuMiAzNS44LTgwIDgwLTgwYzguOCAwIDE2IDcuMiAxNiAxNnpNMy41IDM0Ny42QzEuNiAzMzIuOSAxMyAzMjAgMjcuOCAzMjBINDg0LjJjMTQuOCAwIDI2LjIgMTIuOSAyNC40IDI3LjZDNTAyLjMgMzk3LjggNDY0LjIgNDM3IDQxNiA0NDZ2MmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMydi0yYy00OC4yLTktODYuMy00OC4yLTkyLjUtOTguNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03MyAzOWMtMTQuOC05LjEtMzMuNC05LjQtNDguNS0uOVMwIDYyLjYgMCA4MFY0MzJjMCAxNy40IDkuNCAzMy40IDI0LjUgNDEuOXMzMy43IDguMSA0OC41LS45TDM2MSAyOTdjMTQuMy04LjcgMjMtMjQuMiAyMy00MXMtOC43LTMyLjItMjMtNDFMNzMgMzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsdWdDaXJjbGVCb2x0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBDNzguMyAwIDY0IDE0LjMgNjQgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTI4OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMzIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMydjMyYzAgNzcuNCA1NSAxNDIgMTI4IDE1Ni44VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQxMi44YzEyLjMtMi41IDI0LjEtNi40IDM1LjEtMTEuNWMtMi4xLTEwLjgtMy4xLTIxLjktMy4xLTMzLjNjMC04MC4zIDUzLjgtMTQ4IDEyNy4zLTE2OS4yYy41LTIuMiAuNy00LjUgLjctNi44YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyek00MzIgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptNDcuOS0yMjVjNC4zIDMuNyA1LjQgOS45IDIuNiAxNC45TDQ1Mi40IDM1Nkg0ODhjNS4yIDAgOS44IDMuMyAxMS40IDguMnMtLjEgMTAuMy00LjIgMTMuNGwtOTYgNzJjLTQuNSAzLjQtMTAuOCAzLjItMTUuMS0uNnMtNS40LTkuOS0yLjYtMTQuOUw0MTEuNiAzODBIMzc2Yy01LjIgMC05LjgtMy4zLTExLjQtOC4ycy4xLTEwLjMgNC4yLTEzLjRsOTYtNzJjNC41LTMuNCAxMC44LTMuMiAxNS4xIC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbHVnQ2lyY2xlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM3OC4zIDAgNjQgMTQuMyA2NCAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMjg4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zMiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ2MzJjMCA3Ny40IDU1IDE0MiAxMjggMTU2LjhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDEyLjhjMTIuMy0yLjUgMjQuMS02LjQgMzUuMS0xMS41Yy0yLjEtMTAuOC0zLjEtMjEuOS0zLjEtMzMuM2MwLTgwLjMgNTMuOC0xNDggMTI3LjMtMTY5LjJjLjUtMi4yIC43LTQuNSAuNy02LjhjMC0xNy43LTE0LjMtMzItMzItMzJIMzJ6TTU3NiAzNjhhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTc2LjctNDMuM2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNmwtNzIgNzJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwbC00MC00MGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQxNiAzODUuNGw2MC43LTYwLjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsdWdDaXJjbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwQzc4LjMgMCA2NCAxNC4zIDY0IDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0yODggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTMyIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMnYzMmMwIDc3LjQgNTUgMTQyIDEyOCAxNTYuOFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0MTIuOGMxMi4zLTIuNSAyNC4xLTYuNCAzNS4xLTExLjVjLTIuMS0xMC44LTMuMS0yMS45LTMuMS0zMy4zYzAtODAuMyA1My44LTE0OCAxMjcuMy0xNjkuMmMuNS0yLjIgLjctNC41IC43LTYuOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMnpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTAtOTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0wLTE0NGM4LjggMCAxNiA3LjIgMTYgMTZ2ODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjg4YzAtOC44IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1Z0NpcmNsZU1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBDNzguMyAwIDY0IDE0LjMgNjQgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTI4OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMzIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMydjMyYzAgNzcuNCA1NSAxNDIgMTI4IDE1Ni44VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQxMi44YzEyLjMtMi41IDI0LjEtNi40IDM1LjEtMTEuNWMtMi4xLTEwLjgtMy4xLTIxLjktMy4xLTMzLjNjMC04MC4zIDUzLjgtMTQ4IDEyNy4zLTE2OS4yYy41LTIuMiAuNy00LjUgLjctNi44YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyek01NzYgMzY4YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS02NCAwYzAgOC44LTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZINDk2YzguOCAwIDE2IDcuMiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1Z0NpcmNsZVBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM3OC4zIDAgNjQgMTQuMyA2NCAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMjg4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zMiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ2MzJjMCA3Ny40IDU1IDE0MiAxMjggMTU2LjhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDEyLjhjMTIuMy0yLjUgMjQuMS02LjQgMzUuMS0xMS41Yy0yLjEtMTAuOC0zLjEtMjEuOS0zLjEtMzMuM2MwLTgwLjMgNTMuOC0xNDggMTI3LjMtMTY5LjJjLjUtMi4yIC43LTQuNSAuNy02LjhjMC0xNy43LTE0LjMtMzItMzItMzJIMzJ6TTQzMiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0xNi0yMDh2NDhoNDhjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZINDQ4djQ4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjM4NEgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoNDhWMzA0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsdWdDaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwQzc4LjMgMCA2NCAxNC4zIDY0IDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0yODggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTMyIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMnYzMmMwIDc3LjQgNTUgMTQyIDEyOCAxNTYuOFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0MTIuOGMxMi4zLTIuNSAyNC4xLTYuNCAzNS4xLTExLjVjLTIuMS0xMC44LTMuMS0yMS45LTMuMS0zMy4zYzAtODAuMyA1My44LTE0OCAxMjcuMy0xNjkuMmMuNS0yLjIgLjctNC41IC43LTYuOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMnpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTU5LjMtMTgwLjdMNDU0LjYgMzY4bDM2LjcgMzYuN2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwTDQzMiAzOTAuNmwtMzYuNyAzNi43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42TDQwOS40IDM2OGwtMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDMyIDM0NS40bDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsdWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM3OC4zIDAgNjQgMTQuMyA2NCAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMjg4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zMiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ2MzJjMCA3Ny40IDU1IDE0MiAxMjggMTU2LjhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDEyLjhDMjk3IDM5OCAzNTIgMzMzLjQgMzUyIDI1NlYyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsdXNNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMTQ0SDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDE2MFYzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMDhIMzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDIyNFYzMnpNMCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgODBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjI0SDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDE5MlY0MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyODhINDAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI1NlY4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUG9kY2FzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTkuNCAzNzJjNDguNS0zMS4zIDgwLjYtODUuOSA4MC42LTE0OGMwLTk3LjItNzguOC0xNzYtMTc2LTE3NlM0OCAxMjYuOCA0OCAyMjRjMCA2Mi4xIDMyLjEgMTE2LjYgODAuNiAxNDhjMS4yIDE3LjMgNCAzOCA3LjIgNTcuMWwuMiAxQzU2IDM5NS44IDAgMzE2LjUgMCAyMjRDMCAxMDAuMyAxMDAuMyAwIDIyNCAwUzQ0OCAxMDAuMyA0NDggMjI0YzAgOTIuNS01NiAxNzEuOS0xMzYgMjA2LjFsLjItMS4xYzMuMS0xOS4yIDYtMzkuOCA3LjItNTd6bS0yLjMtMzguMWMtMS42LTUuNy0zLjktMTEuMS03LTE2LjJjLTUuOC05LjctMTMuNS0xNy0yMS45LTIyLjRjMTkuNS0xNy42IDMxLjgtNDMgMzEuOC03MS4zYzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMjguMyAxMi4zIDUzLjggMzEuOCA3MS4zYy04LjQgNS40LTE2LjEgMTIuNy0yMS45IDIyLjRjLTMuMSA1LjEtNS40IDEwLjUtNyAxNi4yQzk5LjggMzA3LjUgODAgMjY4IDgwIDIyNGMwLTc5LjUgNjQuNS0xNDQgMTQ0LTE0NHMxNDQgNjQuNSAxNDQgMTQ0YzAgNDQtMTkuOCA4My41LTUwLjkgMTA5Ljl6TTIyNCAzMTJjMzIuOSAwIDY0IDguNiA2NCA0My44YzAgMzMtMTIuOSAxMDQuMS0yMC42IDEzMi45Yy01LjEgMTktMjQuNSAyMy40LTQzLjQgMjMuNHMtMzguMi00LjQtNDMuNC0yMy40Yy03LjgtMjguNS0yMC42LTk5LjctMjAuNi0xMzIuOGMwLTM1LjEgMzEuMS00My44IDY0LTQzLjh6bTAtMTQ0YTU2IDU2IDAgMSAxIDAgMTEyIDU2IDU2IDAgMSAxIDAtMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQb29TdG9ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzYuOSAuMmMtNS41LS43LTExIDEuNC0xNC41IDUuN3MtNC42IDEwLjEtMi44IDE1LjNjMi44IDguMiA0LjMgMTYuOSA0LjMgMjYuMWMwIDIxLjctOC41IDM3LjItMjEuOSA0Ny42Yy0xMy44IDEwLjgtMzQgMTctNTcuOCAxN0gxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0YzAgMTIuMiAzLjQgMjMuNSA5LjMgMzMuMkMzMS43IDIxNi4yIDAgMjUyLjQgMCAyOTZjMCA0MC45IDI4IDc1LjQgNjUuOCA4NS4yYy01LjMtMTguNSAxLTM4LjUgMTYuMi01MC43bDE2MC0xMjhjMTcuNi0xNC4xIDQyLjYtMTQgNjAuMiAuMnMyMi44IDM4LjYgMTIuOCA1OC44TDI4NS43IDMyMEgzMDRjMjAuNCAwIDM4LjUgMTIuOSA0NS4zIDMyLjFjMy43IDEwLjYgMy41IDIxLjggMCAzMS45SDM2MGM0OC42IDAgODgtMzkuNCA4OC04OGMwLTQzLjYtMzEuNy03OS44LTczLjMtODYuOGM1LjktOS43IDkuMy0yMS4xIDkuMy0zMy4yYzAtMzUuMy0yOC43LTY0LTY0LTY0aC0xLjRjLjktNS40IDEuNC0xMC45IDEuNC0xNi42YzAtNDguNy0zNi4xLTg4LjktODMuMS05NS4yem00NS4xIDIyNy40Yy01LjgtNC43LTE0LjItNC43LTIwLjEtLjFsLTE2MCAxMjhjLTUuMyA0LjItNy40IDExLjQtNS4xIDE3LjhzOC4zIDEwLjcgMTUuMSAxMC43aDcwLjFMMTI5LjcgNDg4LjhjLTMuNCA2LjctMS42IDE0LjkgNC4zIDE5LjZzMTQuMiA0LjcgMjAuMSAuMWwxNjAtMTI4YzUuMy00LjIgNy40LTExLjQgNS4xLTE3LjhzLTguMy0xMC43LTE1LjEtMTAuN0gyMzMuOWw1Mi40LTEwNC44YzMuNC02LjcgMS42LTE0LjktNC4zLTE5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjguOSAuOWMtNS41LS43LTExIDEuNC0xNC41IDUuN3MtNC42IDEwLjEtMi44IDE1LjRjMi44IDguMiA0LjMgMTYuOSA0LjMgMjYuMWMwIDQ0LjEtMzUuNyA3OS45LTc5LjggODBIMTYwYy0zNS4zIDAtNjQgMjguNy02NCA2NGMwIDE5LjEgOC40IDM2LjMgMjEuNyA0OEgxMDRjLTM5LjggMC03MiAzMi4yLTcyIDcyYzAgMjMuMiAxMSA0My44IDI4IDU3Yy0zNC4xIDUuNy02MCAzNS4zLTYwIDcxYzAgMzkuOCAzMi4yIDcyIDcyIDcySDQ0MGMzOS44IDAgNzItMzIuMiA3Mi03MmMwLTM1LjctMjUuOS02NS4zLTYwLTcxYzE3LTEzLjIgMjgtMzMuOCAyOC01N2MwLTM5LjgtMzIuMi03Mi03Mi03MkgzOTQuM2MxMy4zLTExLjcgMjEuNy0yOC45IDIxLjctNDhjMC0zNS4zLTI4LjctNjQtNjQtNjRoLTUuNWMzLjUtMTAgNS41LTIwLjggNS41LTMyYzAtNDguNi0zNi4yLTg4LjgtODMuMS05NS4xek0xOTIgMjU2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptOTYgMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptNjQgMTA4LjNjMCAyLjQtLjcgNC44LTIuMiA2LjdjLTguMiAxMC41LTM5LjUgNDUtOTMuOCA0NXMtODUuNi0zNC42LTkzLjgtNDVjLTEuNS0xLjktMi4yLTQuMy0yLjItNi43YzAtNi44IDUuNS0xMi4zIDEyLjMtMTIuM0gzMzkuN2M2LjggMCAxMi4zIDUuNSAxMi4zIDEyLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU0LjQgNi42YzMuNS00LjMgOS02LjUgMTQuNS01LjdDMzE1LjggNy4yIDM1MiA0Ny40IDM1MiA5NmMwIDExLjItMS45IDIyLTUuNSAzMkgzNTJjMzUuMyAwIDY0IDI4LjcgNjQgNjRjMCAxOS4xLTguNCAzNi4zLTIxLjcgNDhINDA4YzM5LjggMCA3MiAzMi4yIDcyIDcyYzAgMjMuMi0xMSA0My44LTI4IDU3YzM0LjEgNS43IDYwIDM1LjMgNjAgNzFjMCAzOS44LTMyLjIgNzItNzIgNzJINzJjLTM5LjggMC03Mi0zMi4yLTcyLTcyYzAtMzUuNyAyNS45LTY1LjMgNjAtNzFjLTE3LTEzLjItMjgtMzMuOC0yOC01N2MwLTM5LjggMzIuMi03MiA3Mi03MmgxMy43QzEwNC40IDIyOC4zIDk2IDIxMS4xIDk2IDE5MmMwLTM1LjMgMjguNy02NCA2NC02NGgxNi4yYzQ0LjEtLjEgNzkuOC0zNS45IDc5LjgtODBjMC05LjItMS41LTE3LjktNC4zLTI2LjFjLTEuOC01LjItLjgtMTEuMSAyLjgtMTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUG93ZXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjI1NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyek0xNDMuNSAxMjAuNmMxMy42LTExLjMgMTUuNC0zMS41IDQuMS00NS4xcy0zMS41LTE1LjQtNDUuMS00LjFDNDkuNyAxMTUuNCAxNiAxODEuOCAxNiAyNTZjMCAxMzIuNSAxMDcuNSAyNDAgMjQwIDI0MHMyNDAtMTA3LjUgMjQwLTI0MGMwLTc0LjItMzMuOC0xNDAuNi04Ni42LTE4NC42Yy0xMy42LTExLjMtMzMuOC05LjQtNDUuMSA0LjFzLTkuNCAzMy44IDQuMSA0NS4xYzM4LjkgMzIuMyA2My41IDgxIDYzLjUgMTM1LjRjMCA5Ny4yLTc4LjggMTc2LTE3NiAxNzZzLTE3Ni03OC44LTE3Ni0xNzZjMC01NC40IDI0LjctMTAzLjEgNjMuNS0xMzUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJlc2NyaXB0aW9uQm90dGxlTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyQzAgMTQuMyAxNC4zIDAgMzIgMEgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJDMTQuMyA5NiAwIDgxLjcgMCA2NFYzMnptMzIgOTZIMzUyVjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg5NmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4ek0xNjAgMjQwdjQ4SDExMmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjM1Mmg0OGM4LjggMCAxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNkgyMjRWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJlc2NyaXB0aW9uQm90dGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJDMCAxNC4zIDE0LjMgMCAzMiAwSDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMlY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0VjMyem0zMiA5NkgzNTJWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDk2Yy0zNS4zIDAtNjQtMjguNy02NC02NFY0MTZIMTQ0YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDMyVjMyMEgxNDRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzJWMjI0SDE0NGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgzMlYxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVByZXNjcmlwdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAwQzE0LjMgMCAwIDE0LjMgMCAzMlYxOTJ2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMjRoNTAuN2wxMjggMTI4TDEzNy40IDQ1Ny40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDI4OCAzOTcuMyAzOTMuNCA1MDIuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDMzMy4zIDM1MiA0MzguNiAyNDYuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwyODggMzA2LjdsLTg1LjgtODUuOEMyNTEuNCAyMDkuMSAyODggMTY0LjggMjg4IDExMkMyODggNTAuMSAyMzcuOSAwIDE3NiAwSDMyek0xNzYgMTYwSDY0VjY0SDE3NmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDBDOTIuNyAwIDY0IDI4LjcgNjQgNjR2OTZoNjRWNjRIMzU0LjdMMzg0IDkzLjNWMTYwaDY0VjkzLjNjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMNDAwIDE4LjdDMzg4IDYuNyAzNzEuNyAwIDM1NC43IDBIMTI4ek0zODQgMzUydjMyIDY0SDEyOFYzODQgMzY4IDM1MkgzODR6bTY0IDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1NmMwLTM1LjMtMjguNy02NC02NC02NEg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJINjR2NjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjM4NHpNNDMyIDI0OGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVB1bXBNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAzMnY5NkgyNTZWOTZoNjAuMWM0LjIgMCA4LjMgMS43IDExLjMgNC43bDMzLjkgMzMuOWMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDM3Mi43IDU1LjRjLTE1LTE1LTM1LjQtMjMuNC01Ni42LTIzLjRIMjU2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTExNy40IDE2MGMtMzMuMyAwLTYxIDI1LjUtNjMuOCA1OC43TDM1IDQ0Mi43QzMxLjkgNDgwIDYxLjMgNTEyIDk4LjggNTEySDI4NS4yYzM3LjQgMCA2Ni45LTMyIDYzLjgtNjkuM2wtMTguNy0yMjRjLTIuOC0zMy4yLTMwLjUtNTguNy02My44LTU4LjdIMTE3LjR6TTIxNiAyODB2MzJoMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjE2djMyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjM2MEgxMzZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoMzJWMjgwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVB1bXBTb2FwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAzMnY5NkgyNTZWOTZoNjAuMWM0LjIgMCA4LjMgMS43IDExLjMgNC43bDMzLjkgMzMuOWMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDM3Mi43IDU1LjRjLTE1LTE1LTM1LjQtMjMuNC01Ni42LTIzLjRIMjU2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTExNy40IDE2MGMtMzMuMyAwLTYxIDI1LjUtNjMuOCA1OC43TDM1IDQ0Mi43QzMxLjkgNDgwIDYxLjMgNTEyIDk4LjggNTEySDI4NS4yYzM3LjQgMCA2Ni45LTMyIDYzLjgtNjkuM2wtMTguNy0yMjRjLTIuOC0zMy4yLTMwLjUtNTguNy02My44LTU4LjdIMTE3LjR6TTI1NiAzNjBjMCAzNS4zLTI4LjcgNTYtNjQgNTZzLTY0LTIwLjctNjQtNTZjMC0zMi41IDM3LTgwLjkgNTAuOS05Ny45YzMuMi0zLjkgOC4xLTYuMSAxMy4xLTYuMXM5LjkgMi4yIDEzLjEgNi4xQzIxOSAyNzkuMSAyNTYgMzI3LjUgMjU2IDM2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHV6emxlUGllY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDEwNC44YzAtOS4yLTUuOC0xNy4zLTEzLjItMjIuOEMxNjcuMiA3My4zIDE2MCA2MS4zIDE2MCA0OGMwLTI2LjUgMjguNy00OCA2NC00OHM2NCAyMS41IDY0IDQ4YzAgMTMuMy03LjIgMjUuMy0xOC44IDM0Yy03LjQgNS41LTEzLjIgMTMuNi0xMy4yIDIyLjhjMCAxMi44IDEwLjQgMjMuMiAyMy4yIDIzLjJIMzM2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djU2LjhjMCAxMi44IDEwLjQgMjMuMiAyMy4yIDIzLjJjOS4yIDAgMTcuMy01LjggMjIuOC0xMy4yYzguNy0xMS42IDIwLjctMTguOCAzNC0xOC44YzI2LjUgMCA0OCAyOC43IDQ4IDY0cy0yMS41IDY0LTQ4IDY0Yy0xMy4zIDAtMjUuMy03LjItMzQtMTguOGMtNS41LTcuNC0xMy42LTEzLjItMjIuOC0xMy4yYy0xMi44IDAtMjMuMiAxMC40LTIzLjIgMjMuMlY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMjc5LjJjLTEyLjggMC0yMy4yLTEwLjQtMjMuMi0yMy4yYzAtOS4yIDUuOC0xNy4zIDEzLjItMjIuOGMxMS42LTguNyAxOC44LTIwLjcgMTguOC0zNGMwLTI2LjUtMjguNy00OC02NC00OHMtNjQgMjEuNS02NCA0OGMwIDEzLjMgNy4yIDI1LjMgMTguOCAzNGM3LjQgNS41IDEzLjIgMTMuNiAxMy4yIDIyLjhjMCAxMi44LTEwLjQgMjMuMi0yMy4yIDIzLjJINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM0My4yQzAgMzMwLjQgMTAuNCAzMjAgMjMuMiAzMjBjOS4yIDAgMTcuMyA1LjggMjIuOCAxMy4yQzU0LjcgMzQ0LjggNjYuNyAzNTIgODAgMzUyYzI2LjUgMCA0OC0yOC43IDQ4LTY0cy0yMS41LTY0LTQ4LTY0Yy0xMy4zIDAtMjUuMyA3LjItMzQgMTguOEM0MC41IDI1MC4yIDMyLjQgMjU2IDIzLjIgMjU2QzEwLjQgMjU2IDAgMjQ1LjYgMCAyMzIuOFYxNzZjMC0yNi41IDIxLjUtNDggNDgtNDhIMTY4LjhjMTIuOCAwIDIzLjItMTAuNCAyMy4yLTIzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMjU2YzAgODguNCA3MS42IDE2MCAxNjAgMTYwYzI4LjkgMCA1Ni03LjcgNzkuNC0yMS4xbC03Mi04Ni40Yy0xMS4zLTEzLjYtOS41LTMzLjggNC4xLTQ1LjFzMzMuOC05LjUgNDUuMSA0LjFsNzAuOSA4NS4xQzM3MS45IDMyNS44IDM4NCAyOTIuMyAzODQgMjU2YzAtODguNC03MS42LTE2MC0xNjAtMTYwUzY0IDE2Ny42IDY0IDI1NnpNMzQ0LjkgNDQ0LjZDMzEwIDQ2NyAyNjguNSA0ODAgMjI0IDQ4MEMxMDAuMyA0ODAgMCAzNzkuNyAwIDI1NlMxMDAuMyAzMiAyMjQgMzJzMjI0IDEwMC4zIDIyNCAyMjRjMCA1Ni4xLTIwLjYgMTA3LjQtNTQuNyAxNDYuN2w0Ny4zIDU2LjhjMTEuMyAxMy42IDkuNSAzMy44LTQuMSA0NS4xcy0zMy44IDkuNS00NS4xLTQuMWwtNDYuNi01NS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRcmNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4MEMwIDUzLjUgMjEuNSAzMiA0OCAzMmg5NmMyNi41IDAgNDggMjEuNSA0OCA0OHY5NmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODB6TTY0IDk2djY0aDY0Vjk2SDY0ek0wIDMzNmMwLTI2LjUgMjEuNS00OCA0OC00OGg5NmMyNi41IDAgNDggMjEuNSA0OCA0OHY5NmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzM2em02NCAxNnY2NGg2NFYzNTJINjR6TTMwNCAzMmg5NmMyNi41IDAgNDggMjEuNSA0OCA0OHY5NmMwIDI2LjUtMjEuNSA0OC00OCA0OEgzMDRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4em04MCA2NEgzMjB2NjRoNjRWOTZ6TTI1NiAzMDRjMC04LjggNy4yLTE2IDE2LTE2aDY0YzguOCAwIDE2IDcuMiAxNiAxNnM3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2czcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2OTZjMCA4LjgtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2cy03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMzA0ek0zNjggNDgwYTE2IDE2IDAgMSAxIDAtMzIgMTYgMTYgMCAxIDEgMCAzMnptNjQgMGExNiAxNiAwIDEgMSAwLTMyIDE2IDE2IDAgMSAxIDAgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVF1ZXN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwIDE2MGMwLTM1LjMgMjguNy02NCA2NC02NGgzMmMzNS4zIDAgNjQgMjguNyA2NCA2NHYzLjZjMCAyMS44LTExLjEgNDIuMS0yOS40IDUzLjhsLTQyLjIgMjcuMWMtMjUuMiAxNi4yLTQwLjQgNDQuMS00MC40IDc0VjMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMydi0xLjRjMC04LjIgNC4yLTE1LjggMTEtMjAuMmw0Mi4yLTI3LjFjMzYuNi0yMy42IDU4LjgtNjQuMSA1OC44LTEwNy43VjE2MGMwLTcwLjctNTcuMy0xMjgtMTI4LTEyOEgxNDRDNzMuMyAzMiAxNiA4OS4zIDE2IDE2MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyem04MCAzMjBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRdW90ZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyMTZDMCAxNDkuNyA1My43IDk2IDEyMCA5Nmg4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyaC04Yy0zMC45IDAtNTYgMjUuMS01NiA1NnY4aDY0YzM1LjMgMCA2NCAyOC43IDY0IDY0djY0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYzMjAgMjg4IDIxNnptMjU2IDBjMC02Ni4zIDUzLjctMTIwIDEyMC0xMjBoOGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmgtOGMtMzAuOSAwLTU2IDI1LjEtNTYgNTZ2OGg2NGMzNS4zIDAgNjQgMjguNyA2NCA2NHY2NGMwIDM1LjMtMjguNyA2NC02NCA2NEgzMjBjLTM1LjMgMC02NC0yOC43LTY0LTY0VjMyMCAyODggMjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRdW90ZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAyOTZjMCA2Ni4zLTUzLjcgMTIwLTEyMCAxMjBoLThjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoOGMzMC45IDAgNTYtMjUuMSA1Ni01NnYtOEgzMjBjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE2MGMwLTM1LjMgMjguNy02NCA2NC02NGg2NGMzNS4zIDAgNjQgMjguNyA2NCA2NHYzMiAzMiA3MnptLTI1NiAwYzAgNjYuMy01My43IDEyMC0xMjAgMTIwSDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDhjMzAuOSAwIDU2LTI1LjEgNTYtNTZ2LThINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE2MGMwLTM1LjMgMjguNy02NCA2NC02NGg2NGMzNS4zIDAgNjQgMjguNyA2NCA2NHYzMiAzMiA3MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjI4OCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMjBoOTUuM0wyNjEuOCA0NjYuNGMxMC4xIDE0LjUgMzAuMSAxOCA0NC42IDcuOXMxOC0zMC4xIDcuOS00NC42TDIzMC4xIDMwOS41QzI4Mi44IDI4OC4xIDMyMCAyMzYuNCAzMjAgMTc2YzAtNzkuNS02NC41LTE0NC0xNDQtMTQ0SDY0ek0xNzYgMjU2SDY0Vjk2SDE3NmM0NC4yIDAgODAgMzUuOCA4MCA4MHMtMzUuOCA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmFkaWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNiAxODYuN2MtMjMuOSAxMy44LTQwIDM5LjctNDAgNjkuM0wzMiAyNTZDMTQuMyAyNTYtLjIgMjQxLjYgMiAyMjQuMUMxMC43IDE1NCA0Ny44IDkyLjcgMTAxLjMgNTJjMTQuMS0xMC43IDMzLjgtNS4zIDQyLjcgMTBsNzIgMTI0Ljd6TTI1NiAzMzZjMTQuNiAwIDI4LjItMy45IDQwLTEwLjdsNzIgMTI0LjhjOC44IDE1LjMgMy43IDM1LjEtMTIuNiA0MS45Yy0zMC42IDEyLjktNjQuMiAyMC05OS40IDIwcy02OC45LTcuMS05OS40LTIwYy0xNi4zLTYuOS0yMS40LTI2LjYtMTIuNi00MS45bDcyLTEyNC44YzExLjggNi44IDI1LjQgMTAuNyA0MCAxMC43em0yMjQtODBsLTE0NCAwYzAtMjkuNi0xNi4xLTU1LjUtNDAtNjkuM0wzNjggNjJjOC44LTE1LjMgMjguNi0yMC43IDQyLjctMTBjNTMuNiA0MC43IDkwLjYgMTAyIDk5LjQgMTcyLjFjMi4yIDE3LjUtMTIuNCAzMS45LTMwIDMxLjl6TTI1NiAyMDhhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSYWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTQuOCA0N2MxMi43LTMuNyAyMC0xNy4xIDE2LjMtMjkuOFM0OTQtMi44IDQ4MS4yIDFMNTEuNyAxMjYuOWMtOS40IDIuNy0xNy45IDcuMy0yNS4xIDEzLjJDMTAuNSAxNTEuNyAwIDE3MC42IDAgMTkydjRWMzA0IDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTkyYzAtMzUuMy0yOC43LTY0LTY0LTY0SDIxOC41TDQ5NC44IDQ3ek0zNjggMjQwYTgwIDgwIDAgMSAxIDAgMTYwIDgwIDgwIDAgMSAxIDAtMTYwek04MCAyNTZjMC04LjggNy4yLTE2IDE2LTE2aDk2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZ6TTY0IDMyMGMwLTguOCA3LjItMTYgMTYtMTZIMjA4YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZ6bTE2IDY0YzAtOC44IDcuMi0xNiAxNi0xNmg5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSYWluYm93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA5NkMxNzguNiA5NiA2NCAyMTAuNiA2NCAzNTJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUyQzAgMTc1LjMgMTQzLjMgMzIgMzIwIDMyczMyMCAxNDMuMyAzMjAgMzIwdjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkM1NzYgMjEwLjYgNDYxLjQgOTYgMzIwIDk2em0wIDE5MmMtMzUuMyAwLTY0IDI4LjctNjQgNjR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUyYzAtNzAuNyA1Ny4zLTEyOCAxMjgtMTI4czEyOCA1Ny4zIDEyOCAxMjh2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUyYzAtMzUuMy0yOC43LTY0LTY0LTY0ek0xNjAgMzUydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MmMwLTEyMy43IDEwMC4zLTIyNCAyMjQtMjI0czIyNCAxMDAuMyAyMjQgMjI0djk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MmMwLTg4LjQtNzEuNi0xNjAtMTYwLTE2MHMtMTYwIDcxLjYtMTYwIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmFua2luZ1N0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUzLjggNTQuMUwzMzAuMiA2LjNjLTMuOS04LjMtMTYuMS04LjYtMjAuNCAwTDI4Ni4yIDU0LjFsLTUyLjMgNy41Yy05LjMgMS40LTEzLjMgMTIuOS02LjQgMTkuOGwzOCAzNy05IDUyLjFjLTEuNCA5LjMgOC4yIDE2LjUgMTYuOCAxMi4ybDQ2LjktMjQuOCA0Ni42IDI0LjRjOC42IDQuMyAxOC4zLTIuOSAxNi44LTEyLjJsLTktNTIuMSAzOC0zNi42YzYuOC02LjggMi45LTE4LjMtNi40LTE5LjhsLTUyLjMtNy41ek0yNTYgMjU2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzg0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI4OGMwLTE3LjctMTQuMy0zMi0zMi0zMkgyNTZ6TTMyIDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDE2MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNTJjMC0xNy43LTE0LjMtMzItMzItMzJIMzJ6bTQxNiA5NnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDE2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDQ4MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlY2VpcHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMi4yQzIyLjUtMS43IDMyLjUtLjMgMzkuNiA1LjhMODAgNDAuNCAxMjAuNCA1LjhjOS03LjcgMjIuMy03LjcgMzEuMiAwTDE5MiA0MC40IDIzMi40IDUuOGM5LTcuNyAyMi4zLTcuNyAzMS4yIDBMMzA0IDQwLjQgMzQ0LjQgNS44YzcuMS02LjEgMTcuMS03LjUgMjUuNi0zLjZzMTQgMTIuNCAxNCAyMS44VjQ4OGMwIDkuNC01LjUgMTcuOS0xNCAyMS44cy0xOC41IDIuNS0yNS42LTMuNkwzMDQgNDcxLjZsLTQwLjQgMzQuNmMtOSA3LjctMjIuMyA3LjctMzEuMiAwTDE5MiA0NzEuNmwtNDAuNCAzNC42Yy05IDcuNy0yMi4zIDcuNy0zMS4yIDBMODAgNDcxLjYgMzkuNiA1MDYuMmMtNy4xIDYuMS0xNy4xIDcuNS0yNS42IDMuNlMwIDQ5Ny40IDAgNDg4VjI0QzAgMTQuNiA1LjUgNi4xIDE0IDIuMnpNOTYgMTQ0Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDI4OGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg5NnpNODAgMzUyYzAgOC44IDcuMiAxNiAxNiAxNkgyODhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIOTZjLTguOCAwLTE2IDcuMi0xNiAxNnpNOTYgMjQwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDI4OGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVjb3JkVmlueWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yNTYtOTZhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6bTAgMjI0YTEyOCAxMjggMCAxIDAgMC0yNTYgMTI4IDEyOCAwIDEgMCAwIDI1NnptMC05NmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlY3RhbmdsZUFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjI5LjUgMTczLjNsNzIgMTQ0YzUuOSAxMS45IDEuMSAyNi4zLTEwLjcgMzIuMnMtMjYuMyAxLjEtMzIuMi0xMC43TDI1My4yIDMyOEgxNjIuOGwtNS40IDEwLjdjLTUuOSAxMS45LTIwLjMgMTYuNy0zMi4yIDEwLjdzLTE2LjctMjAuMy0xMC43LTMyLjJsNzItMTQ0YzQuMS04LjEgMTIuNC0xMy4zIDIxLjUtMTMuM3MxNy40IDUuMSAyMS41IDEzLjN6TTIwOCAyMzcuN0wxODYuOCAyODBoNDIuM0wyMDggMjM3Ljd6TTM5MiAyNTZhMjQgMjQgMCAxIDAgMCA0OCAyNCAyNCAwIDEgMCAwLTQ4em0yNC00My45VjE4NGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djk2IDQ4YzAgMTMuMy0xMC43IDI0LTI0IDI0Yy02LjYgMC0xMi42LTIuNy0xNy03Yy05LjQgNC41LTE5LjkgNy0zMSA3Yy0zOS44IDAtNzItMzIuMi03Mi03MnMzMi4yLTcyIDcyLTcyYzguNCAwIDE2LjUgMS40IDI0IDQuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVjdGFuZ2xlTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDUxMmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2ek0xMjggMjg4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMzItMTI4YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTEyOCAzODRhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em05Ni0yNDhjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDIyNHptMCA5NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg0NDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjI0em0wIDk2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDQ0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlY3RhbmdsZVhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMTc1IDE3NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw0NyA0NyA0Ny00N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTQ3IDQ3IDQ3IDQ3YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTQ3LTQ3LTQ3IDQ3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDQ3LTQ3LTQ3LTQ3Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVjeWNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzQuNyA0NS4xQzE5Mi4yIDE3IDIyMyAwIDI1NiAwczYzLjggMTcgODEuMyA0NS4xbDM4LjYgNjEuNyAyNy0xNS42YzguNC00LjkgMTguOS00LjIgMjYuNiAxLjdzMTEuMSAxNS45IDguNiAyNS4zbC0yMy40IDg3LjRjLTMuNCAxMi44LTE2LjYgMjAuNC0yOS40IDE3bC04Ny40LTIzLjRjLTkuNC0yLjUtMTYuMy0xMC40LTE3LjYtMjBzMy40LTE5LjEgMTEuOC0yMy45bDI4LjQtMTYuNEwyODMgNzljLTUuOC05LjMtMTYtMTUtMjctMTVzLTIxLjIgNS43LTI3IDE1bC0xNy41IDI4Yy05LjIgMTQuOC0yOC42IDE5LjUtNDMuNiAxMC41Yy0xNS4zLTkuMi0yMC4yLTI5LjItMTAuNy00NC40bDE3LjUtMjh6TTQyOS41IDI1MS45YzE1LTkgMzQuNC00LjMgNDMuNiAxMC41bDI0LjQgMzkuMWM5LjQgMTUuMSAxNC40IDMyLjQgMTQuNiA1MC4yYy4zIDUzLjEtNDIuNyA5Ni40LTk1LjggOTYuNEwzMjAgNDQ4djMyYzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTY0LTY0Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw2NC02NGM2LjktNi45IDE3LjItOC45IDI2LjItNS4yczE0LjggMTIuNSAxNC44IDIyLjJ2MzJsOTYuMiAwYzE3LjYgMCAzMS45LTE0LjQgMzEuOC0zMmMwLTUuOS0xLjctMTEuNy00LjgtMTYuN2wtMjQuNC0zOS4xYy05LjUtMTUuMi00LjctMzUuMiAxMC43LTQ0LjR6bS0zNjQuNi0zMUwzNiAyMDQuMmMtOC40LTQuOS0xMy4xLTE0LjMtMTEuOC0yMy45czguMi0xNy41IDE3LjYtMjBsODcuNC0yMy40YzEyLjgtMy40IDI2IDQuMiAyOS40IDE3TDE4MiAyNDEuMmMyLjUgOS40LS45IDE5LjMtOC42IDI1LjNzLTE4LjIgNi42LTI2LjYgMS43bC0yNi41LTE1LjNMNjguOCAzMzUuM2MtMy4xIDUtNC44IDEwLjgtNC44IDE2LjdjLS4xIDE3LjYgMTQuMiAzMiAzMS44IDMybDMyLjIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIuMiAwQzQyLjcgNDQ4LS4zIDQwNC44IDAgMzUxLjZjLjEtMTcuOCA1LjEtMzUuMSAxNC42LTUwLjJsNTAuMy04MC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdpc3RlcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNjAgMTUyYzAtMTMuMyAxMC43LTI0IDI0LTI0aDg4YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgMjgtMTQuNCA1Mi43LTM2LjMgNjdsMzQuMSA3NS4xYzUuNSAxMi4xIC4xIDI2LjMtMTEuOSAzMS44cy0yNi4zIC4xLTMxLjgtMTEuOUwyNjguOSAyODhIMjA4djcyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjI2NCAxNTJ6bTQ4IDg4aDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDIwOHY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVwZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjI0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC01MyA0My05NiA5Ni05NkgzMjB2MzJjMCAxMi45IDcuOCAyNC42IDE5LjggMjkuNnMyNS43IDIuMiAzNC45LTYuOWw2NC02NGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtNjQtNjRjLTkuMi05LjItMjIuOS0xMS45LTM0LjktNi45UzMyMCAxOS4xIDMyMCAzMlY2NEgxNjBDNzEuNiA2NCAwIDEzNS42IDAgMjI0em01MTIgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJjMCA1My00MyA5Ni05NiA5NkgxOTJWMzUyYzAtMTIuOS03LjgtMjQuNi0xOS44LTI5LjZzLTI1LjctMi4yLTM0LjkgNi45bC02NCA2NGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjOS4yIDkuMiAyMi45IDExLjkgMzQuOSA2LjlzMTkuOC0xNi42IDE5LjgtMjkuNlY0NDhIMzUyYzg4LjQgMCAxNjAtNzEuNiAxNjAtMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXBseUFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDkuNCAzOS41Yy05LjEtOS42LTI0LjMtMTAtMzMuOS0uOUwzMy44IDE3My4yYy0xOS45IDE4LjktMTkuOSA1MC43IDAgNjkuNkwxNzUuNSAzNzcuNGM5LjYgOS4xIDI0LjggOC43IDMzLjktLjlzOC43LTI0LjgtLjktMzMuOUw2Ni44IDIwOCAyMDguNSA3My40YzkuNi05LjEgMTAtMjQuMyAuOS0zMy45ek0zNTIgNjRjMC0xMi42LTcuNC0yNC4xLTE5LTI5LjJzLTI1LTMtMzQuNCA1LjRsLTE2MCAxNDRjLTYuNyA2LjEtMTAuNiAxNC43LTEwLjYgMjMuOHMzLjkgMTcuNyAxMC42IDIzLjhsMTYwIDE0NGM5LjQgOC41IDIyLjkgMTAuNiAzNC40IDUuNHMxOS0xNi42IDE5LTI5LjJWMjg4aDMyYzUzIDAgOTYgNDMgOTYgOTZjMCAzMC40LTEyLjggNDcuOS0yMi4yIDU2LjdjLTUuNSA1LjEtOS44IDEyLTkuOCAxOS41YzAgMTAuOSA4LjggMTkuNyAxOS43IDE5LjdjMi44IDAgNS42LS42IDguMS0xLjlDNDk0LjUgNDY3LjkgNTc2IDQxNy4zIDU3NiAzMDRjMC05Ny4yLTc4LjgtMTc2LTE3Ni0xNzZIMzUyVjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXBseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDUgMzQuOGMxMS41IDUuMSAxOSAxNi42IDE5IDI5LjJ2NjRIMzM2Yzk3LjIgMCAxNzYgNzguOCAxNzYgMTc2YzAgMTEzLjMtODEuNSAxNjMuOS0xMDAuMiAxNzQuMWMtMi41IDEuNC01LjMgMS45LTguMSAxLjljLTEwLjkgMC0xOS43LTguOS0xOS43LTE5LjdjMC03LjUgNC4zLTE0LjQgOS44LTE5LjVjOS40LTguOCAyMi4yLTI2LjQgMjIuMi01Ni43YzAtNTMtNDMtOTYtOTYtOTZIMjI0djY0YzAgMTIuNi03LjQgMjQuMS0xOSAyOS4ycy0yNSAzLTM0LjQtNS40bC0xNjAtMTQ0QzMuOSAyMjUuNyAwIDIxNy4xIDAgMjA4czMuOS0xNy43IDEwLjYtMjMuOGwxNjAtMTQ0YzkuNC04LjUgMjIuOS0xMC42IDM0LjQtNS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXB1YmxpY2FuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTkyQzAgMTAzLjYgNzEuNiAzMiAxNjAgMzJIMzg0Yzg4LjQgMCAxNjAgNzEuNiAxNjAgMTYwdjY0SDBWMTkyem00MTUuOS02NGMtMi40IDAtNC43IDEuMy01LjcgMy40bC0xMi42IDI0LjYtMjguMiA0Yy0yLjQgLjMtNC40IDItNS4yIDQuMnMtLjEgNC43IDEuNiA2LjNsMjAuNCAxOS4yLTQuOCAyNy4xYy0uNCAyLjMgLjYgNC43IDIuNSA2czQuNiAxLjYgNi43IC41bDI1LjItMTIuOCAyNS4yIDEyLjhjMi4yIDEuMSA0LjggLjkgNi43LS41czMtMy43IDIuNS02bC00LjgtMjcuMUw0NjYgMTcwLjVjMS43LTEuNiAyLjQtNC4xIDEuNi02LjNzLTIuOC0zLjktNS4yLTQuMmwtMjguMi00LTEyLjYtMjQuNmMtMS4xLTIuMS0zLjMtMy40LTUuNy0zLjR6bS0xMzguMyAzLjRjLTEuMS0yLjEtMy4zLTMuNC01LjctMy40cy00LjcgMS4zLTUuNyAzLjRsLTEyLjYgMjQuNi0yOC4yIDRjLTIuNCAuMy00LjQgMi01LjIgNC4ycy0uMSA0LjcgMS42IDYuM2wyMC40IDE5LjItNC44IDI3LjFjLS40IDIuMyAuNiA0LjcgMi41IDZzNC42IDEuNiA2LjcgLjVsMjUuMi0xMi44IDI1LjIgMTIuOGMyLjIgMS4xIDQuOCAuOSA2LjctLjVzMy0zLjcgMi41LTZsLTQuOC0yNy4xTDMyMiAxNzAuNWMxLjctMS42IDIuNC00LjEgMS42LTYuM3MtMi44LTMuOS01LjItNC4ybC0yOC4yLTQtMTIuNi0yNC42ek0xMjcuOSAxMjhjLTIuNCAwLTQuNyAxLjMtNS43IDMuNGwtMTIuNiAyNC42LTI4LjIgNGMtMi40IC4zLTQuNCAyLTUuMiA0LjJzLS4xIDQuNyAxLjYgNi4zbDIwLjQgMTkuMi00LjggMjcuMWMtLjQgMi4zIC42IDQuNyAyLjUgNnM0LjYgMS42IDYuNyAuNWwyNS4yLTEyLjggMjUuMiAxMi44YzIuMiAxLjEgNC44IC45IDYuNy0uNXMzLTMuNyAyLjUtNmwtNC44LTI3LjFMMTc4IDE3MC41YzEuNy0xLjYgMi40LTQuMSAxLjYtNi4zcy0yLjgtMy45LTUuMi00LjJsLTI4LjItNC0xMi42LTI0LjZjLTEuMS0yLjEtMy4zLTMuNC01LjctMy40em0uMSAxNjBIMzIwaDk2IDMyIDY0IDMydjMyIDgwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzUyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2NDhjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBWMzUySDQ0OHYzMiA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzNTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4NEgxMjh2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4NCAyODhIMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXN0cm9vbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCA0OGE0OCA0OCAwIDEgMSA5NiAwQTQ4IDQ4IDAgMSAxIDgwIDQ4em00MCAzMDRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjMyNS4yYy04LjEgOS4yLTIxLjEgMTMuMi0zMy41IDkuNGMtMTYuOS01LjMtMjYuMy0yMy4yLTIxLTQwLjFsMzAuOS05OS4xQzQ0LjkgMTU1LjMgODIgMTI4IDEyNCAxMjhoOGM0MiAwIDc5LjEgMjcuMyA5MS42IDY3LjRsMzAuOSA5OS4xYzUuMyAxNi45LTQuMSAzNC44LTIxIDQwLjFjLTEyLjQgMy45LTI1LjQtLjItMzMuNS05LjRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkgxMjB6TTMyMCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0VjQ4OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNNDY0IDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTQ0MCA0ODBWMzg0SDQyMi4yYy0xMC45IDAtMTguNi0xMC43LTE1LjItMjEuMWw5LTI2LjljLTMuMiAwLTYuNC0uNS05LjUtMS41Yy0xNi45LTUuMy0yNi4zLTIzLjItMjEtNDAuMWwyOS43LTk1LjJDNDI4LjQgMTU2LjkgNDY3LjYgMTI4IDUxMiAxMjhzODMuNiAyOC45IDk2LjggNzEuMmwyOS43IDk1LjJjNS4zIDE2LjktNC4xIDM0LjgtMjEgNDAuMWMtMy4yIDEtNi40IDEuNS05LjUgMS41bDkgMjYuOWMzLjUgMTAuNC00LjMgMjEuMS0xNS4yIDIxLjFINTg0djk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM4NEg1MDR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJldHdlZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE5MmgzMmMxMi45IDAgMjQuNi03LjggMjkuNi0xOS44czIuMi0yNS43LTYuOS0zNC45bC02NC02NGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTY0IDY0Yy05LjIgOS4yLTExLjkgMjIuOS02LjkgMzQuOXMxNi42IDE5LjggMjkuNiAxOS44bDMyIDAgMCAxMjhjMCA1MyA0MyA5NiA5NiA5NkgyNzJ6TTMwNCA5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxMTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDEyOEg0MTZjLTEyLjkgMC0yNC42IDcuOC0yOS42IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45bDY0IDY0YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDY0LTY0YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45cy0xNi42LTE5LjgtMjkuNi0xOS44bC0zMiAwVjE5MmMwLTUzLTQzLTk2LTk2LTk2TDMwNCA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmliYm9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzMy4yIDMyMi44bDAgMC0xMzMuOS0xNDYgMCAwTDE0NiAxMTguNmM3LjgtNS4xIDM3LTIyLjYgNzgtMjIuNnM3MC4yIDE3LjQgNzggMjIuNkwyNDUuNyAxODBsODUuNiA5My40IDI3LjQtMjkuOGMxNi4zLTE3LjcgMjUuMy00MC45IDI1LjMtNjVWMTQ5LjFjMC0xOS01LjYtMzcuNS0xNi4xLTUzLjNMMzI3LjggMzUuNkMzMTIuOSAxMy40IDI4Ny45IDAgMjYxLjIgMGgtNzZjLTI1LjggMC01MC4xIDEyLjUtNjUuMSAzMy41TDgxLjkgODdDNzAuMyAxMDMuMiA2NCAxMjIuOCA2NCAxNDIuOFYxNjRjMCAyMy4yIDguNCA0NS42IDIzLjYgNjMuMWw1NiA2NC4yIDAgMCA4My4zIDk1LjYgMCAwIDkxLjggMTA1LjNjMTAgMTEuNSAyNi44IDE0LjMgNDAgNi44bDU0LjUtMzEuMWMxNy44LTEwLjIgMjEuNi0zNC4zIDcuNy00OS40bC04Ny43LTk1Ljd6TTIwNS4yIDQxMC42bC04My4zLTk1LjZMMjcuMSA0MTguNWMtMTMuOSAxNS4xLTEwLjEgMzkuMiA3LjcgNDkuNGw1NS4xIDMxLjVjMTMgNy40IDI5LjMgNC45IDM5LjQtNi4xbDc1LjktODIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmlnaHRGcm9tQnJhY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzcuOSAxMDUuOUw1MDAuNyAyMjguN2M3LjIgNy4yIDExLjMgMTcuMSAxMS4zIDI3LjNzLTQuMSAyMC4xLTExLjMgMjcuM0wzNzcuOSA0MDYuMWMtNi40IDYuNC0xNSA5LjktMjQgOS45Yy0xOC43IDAtMzMuOS0xNS4yLTMzLjktMzMuOWwwLTYyLjEtMTI4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsMTI4IDAgMC02Mi4xYzAtMTguNyAxNS4yLTMzLjkgMzMuOS0zMy45YzkgMCAxNy42IDMuNiAyNCA5Ljl6TTE2MCA5Nkw5NiA5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAyNTZjMCAxNy43IDE0LjMgMzIgMzIgMzJsNjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtNjQgMGMtNTMgMC05Ni00My05Ni05NkwwIDEyOEMwIDc1IDQzIDMyIDk2IDMybDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJpZ2h0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA5NmwzMjAgMFYzMmMwLTEyLjkgNy44LTI0LjYgMTkuOC0yOS42czI1LjctMi4yIDM0LjkgNi45bDk2IDk2YzYgNiA5LjQgMTQuMSA5LjQgMjIuNnMtMy40IDE2LjYtOS40IDIyLjZsLTk2IDk2Yy05LjIgOS4yLTIyLjkgMTEuOS0zNC45IDYuOXMtMTkuOC0xNi42LTE5LjgtMjkuNlYxNjBMMzIgMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyek00ODAgMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE2MHY2NGMwIDEyLjktNy44IDI0LjYtMTkuOCAyOS42cy0yNS43IDIuMi0zNC45LTYuOWwtOTYtOTZjLTYtNi05LjQtMTQuMS05LjQtMjIuNnMzLjQtMTYuNiA5LjQtMjIuNmw5Ni05NmM5LjItOS4yIDIyLjktMTEuOSAzNC45LTYuOXMxOS44IDE2LjYgMTkuOCAyOS42bDAgNjRINDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSaWdodExvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM0LjUgNDE0YzguOCAzLjggMTkgMiAyNi00LjZsMTQ0LTEzNmM0LjgtNC41IDcuNS0xMC44IDcuNS0xNy40cy0yLjctMTIuOS03LjUtMTcuNGwtMTQ0LTEzNmMtNy02LjYtMTcuMi04LjQtMjYtNC42cy0xNC41IDEyLjUtMTQuNSAyMmwwIDcyTDMyIDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwyODggMCAwIDcyYzAgOS42IDUuNyAxOC4yIDE0LjUgMjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJpZ2h0VG9CcmFja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNy45IDEwNS45TDM0MC43IDIyOC43YzcuMiA3LjIgMTEuMyAxNy4xIDExLjMgMjcuM3MtNC4xIDIwLjEtMTEuMyAyNy4zTDIxNy45IDQwNi4xYy02LjQgNi40LTE1IDkuOS0yNCA5LjljLTE4LjcgMC0zMy45LTE1LjItMzMuOS0zMy45bDAtNjIuMUwzMiAzMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsMTI4IDAgMC02Mi4xYzAtMTguNyAxNS4yLTMzLjkgMzMuOS0zMy45YzkgMCAxNy42IDMuNiAyNCA5Ljl6TTM1MiA0MTZsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTI1NmMwLTE3LjctMTQuMy0zMi0zMi0zMmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw2NCAwYzUzIDAgOTYgNDMgOTYgOTZsMCAyNTZjMCA1My00MyA5Ni05NiA5NmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAyMDhjMCA3LjggNC40IDE4LjcgMTcuMSAzMC4zQzEyNi41IDIxNC4xIDE4OC45IDIwMCAyNTYgMjAwczEyOS41IDE0LjEgMTc0LjkgMzguM0M0NDMuNiAyMjYuNyA0NDggMjE1LjggNDQ4IDIwOGMwLTEyLjMtMTAuOC0zMi00Ny45LTUwLjZDMzY0LjkgMTM5LjggMzE0IDEyOCAyNTYgMTI4cy0xMDguOSAxMS44LTE0NC4xIDI5LjRDNzQuOCAxNzYgNjQgMTk1LjcgNjQgMjA4em0xOTIgNDBjLTQ3IDAtODkuMyA3LjYtMTIyLjkgMTkuN0MxNjYuMyAyODAuMiAyMDguOCAyODggMjU2IDI4OHM4OS43LTcuOCAxMjIuOS0yMC4zQzM0NS4zIDI1NS42IDMwMyAyNDggMjU2IDI0OHpNMCAyMDhjMC00OS42IDM5LjQtODUuOCA4My4zLTEwNy44QzEyOS4xIDc3LjMgMTkwLjMgNjQgMjU2IDY0czEyNi45IDEzLjMgMTcyLjcgMzYuMmM0My45IDIyIDgzLjMgNTguMiA4My4zIDEwNy44djk2YzAgNDkuNi0zOS40IDg1LjgtODMuMyAxMDcuOEMzODIuOSA0MzQuNyAzMjEuNyA0NDggMjU2IDQ0OHMtMTI2LjktMTMuMy0xNzIuNy0zNi4yQzM5LjQgMzg5LjggMCAzNTMuNiAwIDMwNFYyMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvYWRCYXJyaWVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjY2LjNMMTQ5LjIgOTZINjRWNjRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTQwNS4yIDk2SDMzMC44bC01LjQgMTAuN0wyMzQuOCAyODhoNzQuM2w1LjQtMTAuN0w0MDUuMiA5NnpNMzYyLjggMjg4aDc0LjNsNS40LTEwLjdMNTMzLjIgOTZINDU4LjhsLTUuNCAxMC43TDM2Mi44IDI4OHpNMjAyLjggOTZsLTUuNCAxMC43TDEwNi44IDI4OGg3NC4zbDUuNC0xMC43TDI3Ny4yIDk2SDIwMi44em0yODggMTkySDU3NlY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY1My43TDQ5MC44IDI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9hZEJyaWRnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMEg2MDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTQ4MCAyMDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0djY0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0em0yNCAxODRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYzODR6TTQ4MCA0MGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY2NGMwLTEzLjMtMTAuNy0yNC0yNC0yNHpNMzIgOTZIMjg4djY0SDI0OHY2NGg0MHY5NmMtNTMgMC05NiA0My05NiA5NnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQxNmMwLTUzLTQzLTk2LTk2LTk2VjIyNEg3MlYxNjBIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTE2OCA2NEgxMjB2NjRoODBWMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2FkQ2lyY2xlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEzLjIgMzJIMjg4Vjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzJoNzQuOGMyNy4xIDAgNTEuMyAxNy4xIDYwLjMgNDIuNmw0Mi43IDEyMC42Yy0xMC45LTIuMS0yMi4yLTMuMi0zMy44LTMuMmMtNTkuNSAwLTExMi4xIDI5LjYtMTQ0IDc0LjhWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyYzIuMyAwIDQuNi0uMyA2LjgtLjdjLTQuNSAxNS41LTYuOCAzMS44LTYuOCA0OC43YzAgNS40IC4yIDEwLjcgLjcgMTZsLS43IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0SDg2LjZDNTYuNSA0ODAgMzIgNDU1LjUgMzIgNDI1LjRjMC02LjIgMS4xLTEyLjQgMy4xLTE4LjJMMTUyLjkgNzQuNkMxNjIgNDkuMSAxODYuMSAzMiAyMTMuMiAzMnpNMzUyIDM2OGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0yMTEuMy00My4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw0ODAgMzg1LjRsLTI4LjctMjguN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNmw0MCA0MGM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGw3Mi03MmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9hZENpcmNsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMy4yIDMySDI4OFY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyaDc0LjhjMjcuMSAwIDUxLjMgMTcuMSA2MC4zIDQyLjZsNDIuNyAxMjAuNmMtMTAuOS0yLjEtMjIuMi0zLjItMzMuOC0zLjJjLTU5LjUgMC0xMTIuMSAyOS42LTE0NCA3NC44VjIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmMyLjMgMCA0LjYtLjMgNi44LS43Yy00LjUgMTUuNS02LjggMzEuOC02LjggNDguN2MwIDUuNCAuMiAxMC43IC43IDE2bC0uNyAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NEg4Ni42QzU2LjUgNDgwIDMyIDQ1NS41IDMyIDQyNS40YzAtNi4yIDEuMS0xMi40IDMuMS0xOC4yTDE1Mi45IDc0LjZDMTYyIDQ5LjEgMTg2LjEgMzIgMjEzLjIgMzJ6TTQ5NiAyMjRhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em0wIDI0MGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTAtMTkyYy04LjggMC0xNiA3LjItMTYgMTZ2ODBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyODhjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2FkQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEzLjIgMzJIMjg4Vjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzJoNzQuOGMyNy4xIDAgNTEuMyAxNy4xIDYwLjMgNDIuNmw0Mi43IDEyMC42Yy0xMC45LTIuMS0yMi4yLTMuMi0zMy44LTMuMmMtNTkuNSAwLTExMi4xIDI5LjYtMTQ0IDc0LjhWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyYzIuMyAwIDQuNi0uMyA2LjgtLjdjLTQuNSAxNS41LTYuOCAzMS44LTYuOCA0OC43YzAgNS40IC4yIDEwLjcgLjcgMTZsLS43IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0SDg2LjZDNTYuNSA0ODAgMzIgNDU1LjUgMzIgNDI1LjRjMC02LjIgMS4xLTEyLjQgMy4xLTE4LjJMMTUyLjkgNzQuNkMxNjIgNDkuMSAxODYuMSAzMiAyMTMuMiAzMnpNNDk2IDIyNGExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTIyLjYgMTQ0bDM2LjctMzYuN2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNnMtMTYuNC02LjItMjIuNiAwTDQ5NiAzNDUuNGwtMzYuNy0zNi43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42TDQ3My40IDM2OGwtMzYuNyAzNi43Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBMNDk2IDM5MC42bDM2LjcgMzYuN2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZMNTE4LjYgMzY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2FkTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJIMjEzLjJjLTI3LjEgMC01MS4zIDE3LjEtNjAuMyA0Mi42TDM1LjEgNDA3LjJjLTIuMSA1LjktMy4xIDEyLTMuMSAxOC4yQzMyIDQ1NS41IDU2LjUgNDgwIDg2LjYgNDgwSDI4OFY0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY2NGgzMlYzNTJjMC0yMy43IDEyLjktNDQuNCAzMi01NS40VjI3MmMwLTU4LjMgNDQuNi0xMDYuMiAxMDEuNS0xMTEuNUw0ODcuMSA3NC42QzQ3OCA0OS4xIDQ1My45IDMyIDQyNi44IDMySDM1MlY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMnptNjQgMTkydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyem0xNzYgMTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NDhINDk2VjI3MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptLTgwIDMydjQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM1MmMwLTE3LjctMTQuMy0zMi0zMi0zMlYyNzJjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvYWRTcGlrZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMTE2LjhjMC0xNS44IDIwLjUtMjIgMjkuMy04LjlMMTkyIDI1NlYxMTYuOGMwLTE1LjggMjAuNS0yMiAyOS4zLTguOUwzMjAgMjU2VjExNi44YzAtMTUuOCAyMC41LTIyIDI5LjMtOC45TDQ0OCAyNTZWMTE2LjhjMC0xNS44IDIwLjUtMjIgMjkuMy04LjlMNjA2LjggMzAyLjJjMTQuMiAyMS4zLTEuMSA0OS43LTI2LjYgNDkuN0g1MTIgNDQ4IDM4NCAzMjAgMjU2IDE5MiA2NFYxMTYuOHpNMzIgMzg0SDYwOGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJIMTgxLjJjLTI3LjEgMC01MS4zIDE3LjEtNjAuMyA0Mi42TDMuMSA0MDcuMkMxLjEgNDEzIDAgNDE5LjIgMCA0MjUuNEMwIDQ1NS41IDI0LjUgNDgwIDU0LjYgNDgwSDI1NlY0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY2NEg1MjEuNGMzMC4yIDAgNTQuNi0yNC41IDU0LjYtNTQuNmMwLTYuMi0xLjEtMTIuNC0zLjEtMTguMkw0NTUuMSA3NC42QzQ0NiA0OS4xIDQyMS45IDMyIDM5NC44IDMySDMyMFY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMnptNjQgMTkydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2JvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY5Nkg0NzJjMzkuOCAwIDcyIDMyLjIgNzIgNzJWNDQwYzAgMzkuOC0zMi4yIDcyLTcyIDcySDE2OGMtMzkuOCAwLTcyLTMyLjItNzItNzJWMTY4YzAtMzkuOCAzMi4yLTcyIDcyLTcySDI4OFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMjA4IDM4NGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgyMDh6bTk2IDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzA0em05NiAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDQwMHpNMjY0IDI1NmE0MCA0MCAwIDEgMCAtODAgMCA0MCA0MCAwIDEgMCA4MCAwem0xNTIgNDBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwek00OCAyMjRINjRWNDE2SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyNzJjMC0yNi41IDIxLjUtNDggNDgtNDh6bTU0NCAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4djk2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDU3NlYyMjRoMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTYuNiAzODQuOUwxMjUuNyAzNTRjLTguNS04LjUtMTEuNS0yMC44LTcuNy0zMi4yYzMtOC45IDctMjAuNSAxMS44LTMzLjhMMjQgMjg4Yy04LjYgMC0xNi42LTQuNi0yMC45LTEyLjFzLTQuMi0xNi43IC4yLTI0LjFsNTIuNS04OC41YzEzLTIxLjkgMzYuNS0zNS4zIDYxLjktMzUuM2w4Mi4zIDBjMi40LTQgNC44LTcuNyA3LjItMTEuM0MyODkuMS00LjEgNDExLjEtOC4xIDQ4My45IDUuM2MxMS42IDIuMSAyMC42IDExLjIgMjIuOCAyMi44YzEzLjQgNzIuOSA5LjMgMTk0LjgtMTExLjQgMjc2LjdjLTMuNSAyLjQtNy4zIDQuOC0xMS4zIDcuMnY4Mi4zYzAgMjUuNC0xMy40IDQ5LTM1LjMgNjEuOWwtODguNSA1Mi41Yy03LjQgNC40LTE2LjYgNC41LTI0LjEgLjJzLTEyLjEtMTIuMi0xMi4xLTIwLjlWMzgwLjhjLTE0LjEgNC45LTI2LjQgOC45LTM1LjcgMTEuOWMtMTEuMiAzLjYtMjMuNCAuNS0zMS44LTcuOHpNMzg0IDE2OGE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvdGF0ZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDguNSAyMjRINDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjcyYzAtOS43IDUuOC0xOC41IDE0LjgtMjIuMnMxOS4zLTEuNyAyNi4yIDUuMkw5OC42IDk2LjZjODcuNi04Ni41IDIyOC43LTg2LjIgMzE1LjggMWM4Ny41IDg3LjUgODcuNSAyMjkuMyAwIDMxNi44cy0yMjkuMyA4Ny41LTMxNi44IDBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBjNjIuNSA2Mi41IDE2My44IDYyLjUgMjI2LjMgMHM2Mi41LTE2My44IDAtMjI2LjNjLTYyLjItNjIuMi0xNjIuNy02Mi41LTIyNS4zLTFMMTg1IDE4M2M2LjkgNi45IDguOSAxNy4yIDUuMiAyNi4ycy0xMi41IDE0LjgtMjIuMiAxNC44SDQ4LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvdGF0ZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2My41IDIyNEg0NzJjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNzJjMC05LjctNS44LTE4LjUtMTQuOC0yMi4ycy0xOS4zLTEuNy0yNi4yIDUuMkw0MTMuNCA5Ni42Yy04Ny42LTg2LjUtMjI4LjctODYuMi0zMTUuOCAxYy04Ny41IDg3LjUtODcuNSAyMjkuMyAwIDMxNi44czIyOS4zIDg3LjUgMzE2LjggMGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGMtNjIuNSA2Mi41LTE2My44IDYyLjUtMjI2LjMgMHMtNjIuNS0xNjMuOCAwLTIyNi4zYzYyLjItNjIuMiAxNjIuNy02Mi41IDIyNS4zLTFMMzI3IDE4M2MtNi45IDYuOS04LjkgMTcuMi01LjIgMjYuMnMxMi41IDE0LjggMjIuMiAxNC44SDQ2My41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb3RhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQyLjkgMTQyLjljNjIuMi02Mi4yIDE2Mi43LTYyLjUgMjI1LjMtMUwzMjcgMTgzYy02LjkgNi45LTguOSAxNy4yLTUuMiAyNi4yczEyLjUgMTQuOCAyMi4yIDE0LjhINDYzLjVjMCAwIDAgMCAwIDBINDcyYzEzLjMgMCAyNC0xMC43IDI0LTI0VjcyYzAtOS43LTUuOC0xOC41LTE0LjgtMjIuMnMtMTkuMy0xLjctMjYuMiA1LjJMNDEzLjQgOTYuNmMtODcuNi04Ni41LTIyOC43LTg2LjItMzE1LjggMUM3My4yIDEyMiA1NS42IDE1MC43IDQ0LjggMTgxLjRjLTUuOSAxNi43IDIuOSAzNC45IDE5LjUgNDAuOHMzNC45LTIuOSA0MC44LTE5LjVjNy43LTIxLjggMjAuMi00Mi4zIDM3LjgtNTkuOHpNMTYgMzEydjcuNiAuN1Y0NDBjMCA5LjcgNS44IDE4LjUgMTQuOCAyMi4yczE5LjMgMS43IDI2LjItNS4ybDQxLjYtNDEuNmM4Ny42IDg2LjUgMjI4LjcgODYuMiAzMTUuOC0xYzI0LjQtMjQuNCA0Mi4xLTUzLjEgNTIuOS04My43YzUuOS0xNi43LTIuOS0zNC45LTE5LjUtNDAuOHMtMzQuOSAyLjktNDAuOCAxOS41Yy03LjcgMjEuOC0yMC4yIDQyLjMtMzcuOCA1OS44Yy02Mi4yIDYyLjItMTYyLjcgNjIuNS0yMjUuMyAxTDE4NSAzMjljNi45LTYuOSA4LjktMTcuMiA1LjItMjYuMnMtMTIuNS0xNC44LTIyLjItMTQuOEg0OC40aC0uN0g0MGMtMTMuMyAwLTI0IDEwLjctMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvdXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiA5NmMwIDUwLjItNTkuMSAxMjUuMS04NC42IDE1NWMtMy44IDQuNC05LjQgNi4xLTE0LjUgNUgzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoOTZjNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTZIMTM5LjZjOC43LTkuOSAxOS4zLTIyLjYgMzAtMzYuOGM2LjMtOC40IDEyLjgtMTcuNiAxOS0yNy4ySDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjBjLTUzIDAtOTYtNDMtOTYtOTZzNDMtOTYgOTYtOTZoMzkuOGMtMjEtMzEuNS0zOS44LTY3LjctMzkuOC05NmMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2ek0xMTcuMSA0ODkuMWMtMy44IDQuMy03LjIgOC4xLTEwLjEgMTEuM2wtMS44IDItLjItLjJjLTYgNC42LTE0LjYgNC0yMC0xLjhDNTkuOCA0NzMgMCA0MDIuNSAwIDM1MmMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2YzAgMzAtMjEuMSA2Ny00My41IDk3LjljLTEwLjcgMTQuNy0yMS43IDI4LTMwLjggMzguNWwtLjYgLjd6TTEyOCAzNTJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNNDE2IDEyOGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyYzIyOS44IDAgNDE2IDE4Ni4yIDQxNiA0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJDMzg0IDI1My42IDIyNi40IDk2IDMyIDk2QzE0LjMgOTYgMCA4MS43IDAgNjR6TTAgNDE2YTY0IDY0IDAgMSAxIDEyOCAwQTY0IDY0IDAgMSAxIDAgNDE2ek0zMiAxNjBjMTU5LjEgMCAyODggMTI4LjkgMjg4IDI4OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmMwLTEyMy43LTEwMC4zLTIyNC0yMjQtMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdWJsZVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzJDNzguMyAzMiA2NCA0Ni4zIDY0IDY0VjI1NkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NHYzMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NHYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQxNkgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTI4VjMyMEgyNDBjNzkuNSAwIDE0NC02NC41IDE0NC0xNDRzLTY0LjUtMTQ0LTE0NC0xNDRIOTZ6TTI0MCAyNTZIMTI4Vjk2SDI0MGM0NC4yIDAgODAgMzUuOCA4MCA4MHMtMzUuOCA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDY0SDU2IDgwVjg4djg4IDgwIDgwIDg4IDI0SDU2IDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDhWMzYwSDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDhWMjgwSDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDhWMjAwSDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDhWMTEySDI0QzEwLjcgMTEyIDAgMTAxLjMgMCA4OFMxMC43IDY0IDI0IDY0em04OCAwSDUyOFY0NDhIMTEyVjY0ek02NDAgODhjMCAxMy4zLTEwLjcgMjQtMjQgMjRoLTh2NDBoOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGgtOHYzMmg4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0aC04djMyaDhjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRoLTh2NDBoOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1ODQgNTYwVjQyNCAzMzYgMjU2IDE3NiA4OCA2NGgyNCAzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVsZXJDb21iaW5lZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uMiA0NjguOUMyLjcgNDkzLjEgMjMuMSA1MTIgNDggNTEybDk2IDAgMzIwIDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC05NmMwLTI2LjUtMjEuNS00OC00OC00OGwtNDggMCAwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODAtNjQgMCAwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODAtNjQgMCAwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODAtODAgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmw4MCAwIDAtNjQtODAgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmw4MCAwIDAtNjQtODAgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmw4MCAwIDAtNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhMNDggMEMyMS41IDAgMCAyMS41IDAgNDhMMCAzNjhsMCA5NmMwIDEuNyAuMSAzLjMgLjIgNC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdWxlckhvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMzZjMCAyNi41IDIxLjUgNDggNDggNDhsNTQ0IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0xNjBjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTY0IDAgMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwLTY0IDAgMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwLTY0IDAgMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwLTY0IDAgMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwLTY0IDAgMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwLTY0IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4TDAgMzM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdWxlclZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwSDIwOGMyNi41IDAgNDggMjEuNSA0OCA0OFY5NkgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoODB2NjRIMTc2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDgwdjY0SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg4MHY2NEgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoODB2NDhjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdWxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzcuOSA0OTQuMWMtMTguNyAxOC43LTQ5LjEgMTguNy02Ny45IDBMMTcuOSA0MDEuOWMtMTguNy0xOC43LTE4LjctNDkuMSAwLTY3LjlsNTAuNy01MC43IDQ4IDQ4YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNDgtNDggNDEuNC00MS40IDQ4IDQ4YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNDgtNDggNDEuNC00MS40IDQ4IDQ4YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNDgtNDggNDEuNC00MS40IDQ4IDQ4YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNDgtNDggNTAuNy01MC43YzE4LjctMTguNyA0OS4xLTE4LjcgNjcuOSAwbDkyLjEgOTIuMWMxOC43IDE4LjcgMTguNyA0OS4xIDAgNjcuOUwxNzcuOSA0OTQuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVwZWVTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJoODBjNzkuNSAwIDE0NCA2NC41IDE0NCAxNDRjMCA1OC44LTM1LjIgMTA5LjMtODUuNyAxMzEuN2w1MS40IDEyOC40YzYuNiAxNi40LTEuNCAzNS0xNy44IDQxLjZzLTM1LTEuNC00MS42LTE3LjhMMTA2LjMgMzIwSDY0VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyODggNjR6TTY0IDI1Nmg0OGM0NC4yIDAgODAtMzUuOCA4MC04MHMtMzUuOC04MC04MC04MEg2NFYyNTZ6bTI1Ni41IDE2LjRjLS45IDYgMCA4LjcgLjQgOS44Yy40IDEuMSAxLjQgMi42IDQuMiA0LjljNy4yIDUuNyAxOC43IDEwIDM3LjkgMTYuOGwxLjMgLjVjMTYgNS42IDM4LjcgMTMuNiA1NS43IDI4LjFjOS41IDguMSAxNy45IDE4LjYgMjMuMSAzMi4zYzUuMSAxMy43IDYuMSAyOC41IDMuOCA0NGMtNC4yIDI4LjEtMjAuNSA0OS4zLTQzLjggNjAuOWMtMjIuMSAxMS00OC4xIDEyLjUtNzMuMiA4bC0uMiAwIDAgMGMtOS4zLTEuOC0yMC41LTUuNy0yOS4zLTljLTYtMi4zLTEyLjYtNC45LTE3LjctNi45bDAgMGMtMi41LTEtNC42LTEuOC02LjMtMi41Yy0xNi41LTYuNC0yNC42LTI1LTE4LjItNDEuNHMyNC45LTI0LjYgNDEuNC0xOC4yYzIuNiAxIDUuMiAyIDcuOSAzLjFsMCAwYzQuOCAxLjkgOS44IDMuOSAxNS40IDZjOC44IDMuMyAxNS4zIDUuNCAxOC43IDZjMTUuNyAyLjggMjYuNyAuOCAzMi45LTIuM2M1LTIuNSA4LTYgOS4xLTEzYzEtNi45IC4yLTEwLjUtLjUtMTIuM2MtLjYtMS43LTEuOC0zLjYtNC41LTUuOWMtNi45LTUuOC0xOC4yLTEwLjQtMzYuOS0xN2wtMy0xLjFjLTE1LjUtNS40LTM3LTEzLTUzLjMtMjUuOWMtOS41LTcuNS0xOC4zLTE3LjYtMjMuNy0zMWMtNS41LTEzLjQtNi42LTI4LTQuNC00My4yYzguNC01Ny4xIDY3LTc4IDExNi45LTY4LjljNi45IDEuMyAyNy4zIDUuOCAzNS40IDguNGMxNi45IDUuMiAyNi4zIDIzLjIgMjEuMSA0MC4xcy0yMy4yIDI2LjMtNDAuMSAyMS4xYy00LjctMS40LTIyLjMtNS41LTI3LjktNi41Yy0xNC42LTIuNy0yNS44LS40LTMyLjYgMy4yYy02LjMgMy4zLTguOSA3LjYtOS41IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdXBpYWhTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJoODBjNzkuNSAwIDE0NCA2NC41IDE0NCAxNDRjMCA1OC44LTM1LjIgMTA5LjMtODUuNyAxMzEuN2w1MS40IDEyOC40YzYuNiAxNi40LTEuNCAzNS0xNy44IDQxLjZzLTM1LTEuNC00MS42LTE3LjhMMTA2LjMgMzIwSDY0VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyODggNjR6TTY0IDI1Nmg0OGM0NC4yIDAgODAtMzUuOCA4MC04MHMtMzUuOC04MC04MC04MEg2NFYyNTZ6bTI1Ni05Nmg4MGM2MS45IDAgMTEyIDUwLjEgMTEyIDExMnMtNTAuMSAxMTItMTEyIDExMkgzNTJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUyIDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptODAgMTYwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4cy0yMS41LTQ4LTQ4LTQ4SDM1MnY5Nmg0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05OS4xIDEwNS40Qzc5IDExNCA2OC4yIDEyNy4yIDY1LjIgMTQ0LjhjLTIuNCAxNC4xLS43IDIzLjIgMiAyOS40YzIuOCA2LjMgNy45IDEyLjQgMTYuNyAxOC42YzE5LjIgMTMuNCA0OC4zIDIyLjEgODQuOSAzMi41YzEgLjMgMS45IC42IDIuOSAuOGMzMi43IDkuMyA3MiAyMC42IDEwMC45IDQwLjdjMTUuNyAxMC45IDI5LjkgMjUuNSAzOC42IDQ1LjFjOC44IDE5LjggMTAuOCA0MiA2LjYgNjYuM2MtNy4zIDQyLjUtMzUuMyA3MS43LTcxLjggODcuM2MtMzUuNCAxNS4yLTc5LjEgMTcuOS0xMjMuNyAxMC45bC0uMiAwIDAgMGMtMjQtMy45LTYyLjctMTcuMS04Ny42LTI1LjZjLTQuOC0xLjctOS4yLTMuMS0xMi44LTQuM0M1LjEgNDQwLjgtMy45IDQyMi43IDEuNiA0MDUuOXMyMy43LTI1LjggNDAuNS0yMC4zYzQuOSAxLjYgMTAuMiAzLjQgMTUuOSA1LjRjMjUuNCA4LjYgNTYuNCAxOS4yIDc0LjQgMjIuMWMzNi44IDUuNyA2Ny41IDIuNSA4OC41LTYuNWMyMC4xLTguNiAzMC44LTIxLjggMzMuOS0zOS40YzIuNC0xNC4xIC43LTIzLjItMi0yOS40Yy0yLjgtNi4zLTcuOS0xMi40LTE2LjctMTguNmMtMTkuMi0xMy40LTQ4LjMtMjIuMS04NC45LTMyLjVjLTEtLjMtMS45LS42LTIuOS0uOGMtMzIuNy05LjMtNzItMjAuNi0xMDAuOS00MC43Yy0xNS43LTEwLjktMjkuOS0yNS41LTM4LjYtNDUuMWMtOC44LTE5LjgtMTAuOC00Mi02LjYtNjYuM2wzMS41IDUuNUwyLjEgMTMzLjlDOS40IDkxLjQgMzcuNCA2Mi4yIDczLjkgNDYuNmMzNS40LTE1LjIgNzkuMS0xNy45IDEyMy43LTEwLjljMTMgMiA1Mi40IDkuNiA2Ni42IDEzLjRjMTcuMSA0LjUgMjcuMiAyMi4xIDIyLjcgMzkuMnMtMjIuMSAyNy4yLTM5LjIgMjIuN2MtMTEuMi0zLTQ4LjEtMTAuMi02MC4xLTEybDQuOS0zMS41LTQuOSAzMS41Yy0zNi45LTUuOC02Ny41LTIuNS04OC42IDYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2Fja0RvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgOTZIMTkyTDE0NC42IDI0LjlDMTM3LjUgMTQuMiAxNDUuMSAwIDE1Ny45IDBIMzU0LjFjMTIuOCAwIDIwLjQgMTQuMiAxMy4zIDI0LjlMMzIwIDk2ek0xOTIgMTI4SDMyMGMzLjggMi41IDguMSA1LjMgMTMgOC40QzM4OS43IDE3Mi43IDUxMiAyNTAuOSA1MTIgNDE2YzAgNTMtNDMgOTYtOTYgOTZIOTZjLTUzIDAtOTYtNDMtOTYtOTZDMCAyNTAuOSAxMjIuMyAxNzIuNyAxNzkgMTM2LjRsMCAwIDAgMGM0LjgtMy4xIDkuMi01LjkgMTMtOC40em04NCA4OGMwLTExLTktMjAtMjAtMjBzLTIwIDktMjAgMjB2MTRjLTcuNiAxLjctMTUuMiA0LjQtMjIuMiA4LjVjLTEzLjkgOC4zLTI1LjkgMjIuOC0yNS44IDQzLjljLjEgMjAuMyAxMiAzMy4xIDI0LjcgNDAuN2MxMSA2LjYgMjQuNyAxMC44IDM1LjYgMTRsMS43IC41YzEyLjYgMy44IDIxLjggNi44IDI4IDEwLjdjNS4xIDMuMiA1LjggNS40IDUuOSA4LjJjLjEgNS0xLjggOC01LjkgMTAuNWMtNSAzLjEtMTIuOSA1LTIxLjQgNC43Yy0xMS4xLS40LTIxLjUtMy45LTM1LjEtOC41Yy0yLjMtLjgtNC43LTEuNi03LjItMi40Yy0xMC41LTMuNS0yMS44IDIuMi0yNS4zIDEyLjZzMi4yIDIxLjggMTIuNiAyNS4zYzEuOSAuNiA0IDEuMyA2LjEgMi4xbDAgMCAwIDBjOC4zIDIuOSAxNy45IDYuMiAyOC4yIDguNFY0MjRjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBWNDEwLjJjOC0xLjcgMTYtNC41IDIzLjItOWMxNC4zLTguOSAyNS4xLTI0LjEgMjQuOC00NWMtLjMtMjAuMy0xMS43LTMzLjQtMjQuNi00MS42Yy0xMS41LTcuMi0yNS45LTExLjYtMzcuMS0xNWwwIDAtLjctLjJjLTEyLjgtMy45LTIxLjktNi43LTI4LjMtMTAuNWMtNS4yLTMuMS01LjMtNC45LTUuMy02LjdjMC0zLjcgMS40LTYuNSA2LjItOS4zYzUuNC0zLjIgMTMuNi01LjEgMjEuNS01YzkuNiAuMSAyMC4yIDIuMiAzMS4yIDUuMmMxMC43IDIuOCAyMS42LTMuNSAyNC41LTE0LjJzLTMuNS0yMS42LTE0LjItMjQuNWMtNi41LTEuNy0xMy43LTMuNC0yMS4xLTQuN1YyMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNhY2tYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgOTZIMzIwbDQ3LjQtNzEuMUMzNzQuNSAxNC4yIDM2Ni45IDAgMzU0LjEgMEgxNTcuOWMtMTIuOCAwLTIwLjQgMTQuMi0xMy4zIDI0LjlMMTkyIDk2em0xMjggMzJIMTkyYy0zLjggMi41LTguMSA1LjMtMTMgOC40bDAgMCAwIDBDMTIyLjMgMTcyLjcgMCAyNTAuOSAwIDQxNmMwIDUzIDQzIDk2IDk2IDk2SDQxNmM1MyAwIDk2LTQzIDk2LTk2YzAtMTY1LjEtMTIyLjMtMjQzLjMtMTc5LTI3OS42Yy00LjgtMy4xLTkuMi01LjktMTMtOC40ek0yODkuOSAzMzZsNDcgNDdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDctNDctNDcgNDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDctNDctNDctNDdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw0NyA0NyA0Ny00N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTQ3IDQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYWlsYm9hdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMTZjMC03IDQuNS0xMy4yIDExLjItMTUuM3MxMy45IC40IDE3LjkgNi4xbDIyNCAzMjBjMy40IDQuOSAzLjggMTEuMyAxLjEgMTYuNnMtOC4yIDguNi0xNC4yIDguNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYxNnpNMjEyLjEgOTYuNWM3IDEuOSAxMS45IDguMiAxMS45IDE1LjVWMzM2YzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtNS43IDAtMTEtMy0xMy44LThzLTIuOS0xMS0uMS0xNmwxMjgtMjI0YzMuNi02LjMgMTEtOS40IDE4LTcuNXpNNS43IDQwNC4zQzIuOCAzOTQuMSAxMC41IDM4NCAyMS4xIDM4NEg1NTQuOWMxMC42IDAgMTguMyAxMC4xIDE1LjQgMjAuM2wtNCAxNC4zQzU1MC43IDQ3My45IDUwMC40IDUxMiA0NDMgNTEySDEzM0M3NS42IDUxMiAyNS4zIDQ3My45IDkuNyA0MTguN2wtNC0xNC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYXRlbGxpdGVEaXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMkMzODMuMSAwIDUxMiAxMjguOSA1MTIgMjg4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyQzQ0OCAxNjQuMyAzNDcuNyA2NCAyMjQgNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek02MC42IDIyMC42TDE2NC43IDMyNC43bDI4LjQtMjguNGMtLjctMi42LTEuMS01LjQtMS4xLTguM2MwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyYy0yLjkgMC01LjYtLjQtOC4zLTEuMWwtMjguNCAyOC40TDI5MS40IDQ1MS40YzE0LjUgMTQuNSAxMS44IDM4LjgtNy4zIDQ2LjNDMjYwLjUgNTA2LjkgMjM0LjkgNTEyIDIwOCA1MTJDOTMuMSA1MTIgMCA0MTguOSAwIDMwNGMwLTI2LjkgNS4xLTUyLjUgMTQuNC03Ni4xYzcuNS0xOSAzMS44LTIxLjggNDYuMy03LjN6TTIyNCA5NmMxMDYgMCAxOTIgODYgMTkyIDE5MmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmMwLTcwLjctNTcuMy0xMjgtMTI4LTEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2F0ZWxsaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMyA3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMGwtOTYgOTZjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDg5LjQgODkuNC0xNS41IDE1LjVDMTUyLjMgMjMwLjQgMTI0LjkgMjI0IDk2IDIyNGMtMzEuNyAwLTYxLjUgNy43LTg3LjggMjEuMmMtOSA0LjctMTAuMyAxNi43LTMuMSAyMy44TDExMi43IDM3Ni43IDk2LjMgMzkzLjFjLTIuNi0uNy01LjQtMS4xLTguMy0xLjFjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTIuOS0uNC01LjYtMS4xLTguM2wxNi40LTE2LjRMMjQyLjkgNTA2LjljNy4yIDcuMiAxOS4yIDUuOSAyMy44LTMuMUMyODAuMyA0NzcuNSAyODggNDQ3LjcgMjg4IDQxNmMwLTI4LjktNi40LTU2LjMtMTcuOC04MC45bDE1LjUtMTUuNUwzNzUgNDA5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDk2LTk2YzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC04OS40LTg5LjQgNTUtNTVjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTQ4LTQ4Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtNTUgNTVMMjMzIDd6bTE1OSAzNTFsLTcyLjQtNzIuNCA2Mi4xLTYyLjFMNDU0LjEgMjk2IDM5MiAzNTguMXpNMjI2LjMgMTkyLjRMMTUzLjkgMTIwIDIxNiA1Ny45bDcyLjQgNzIuNC02Mi4xIDYyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjYWxlQmFsYW5jZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMySDUxMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzOTguNGMtNS4yIDI1LjgtMjIuOSA0Ny4xLTQ2LjQgNTcuM1Y0NDhINTEyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMCAxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIMjg4VjE1My4zYy0yMy41LTEwLjMtNDEuMi0zMS42LTQ2LjQtNTcuM0gxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIMjU2YzE0LjYtMTkuNCAzNy44LTMyIDY0LTMyczQ5LjQgMTIuNiA2NCAzMnptNTUuNiAyODhINTg0LjRMNTEyIDE5NS44IDQzOS42IDMyMHpNNTEyIDQxNmMtNjIuOSAwLTExNS4yLTM0LTEyNi03OC45Yy0yLjYtMTEgMS0yMi4zIDYuNy0zMi4xbDk1LjItMTYzLjJjNS04LjYgMTQuMi0xMy44IDI0LjEtMTMuOHMxOS4xIDUuMyAyNC4xIDEzLjhsOTUuMiAxNjMuMmM1LjcgOS44IDkuMyAyMS4xIDYuNyAzMi4xQzYyNy4yIDM4MiA1NzQuOSA0MTYgNTEyIDQxNnpNMTI2LjggMTk1LjhMNTQuNCAzMjBIMTk5LjNMMTI2LjggMTk1Ljh6TS45IDMzNy4xYy0yLjYtMTEgMS0yMi4zIDYuNy0zMi4xbDk1LjItMTYzLjJjNS04LjYgMTQuMi0xMy44IDI0LjEtMTMuOHMxOS4xIDUuMyAyNC4xIDEzLjhsOTUuMiAxNjMuMmM1LjcgOS44IDkuMyAyMS4xIDYuNyAzMi4xQzI0MiAzODIgMTg5LjcgNDE2IDEyNi44IDQxNlMxMS43IDM4MiAuOSAzMzcuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NhbGVVbmJhbGFuY2VkRmxpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTcuOSA2Mi40Yy0xNi44LTUuNi0yNS44LTIzLjctMjAuMi00MC41czIzLjctMjUuOCA0MC41LTIwLjJsMTEzIDM3LjdDMjY1IDE1LjggMjkwLjcgMCAzMjAgMGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDMtLjIgNS45LS41IDguOGwxMjIuNiA0MC45YzE2LjggNS42IDI1LjggMjMuNyAyMC4yIDQwLjVzLTIzLjcgMjUuOC00MC41IDIwLjJMMzY2LjQgMTQ1LjJjLTQuNSAzLjItOS4zIDUuOS0xNC40IDguMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJIMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDI4OFYxNTMuM2MtMjEtOS4yLTM3LjItMjctNDQuMi00OWwtMTI1LjktNDJ6TTIwMC40IDI4OEwxMjggMTYzLjggNTUuNiAyODhIMjAwLjR6TTEyOCAzODRDNjUuMSAzODQgMTIuOCAzNTAgMiAzMDUuMWMtMi42LTExIDEtMjIuMyA2LjctMzIuMWw5NS4yLTE2My4yYzUtOC42IDE0LjItMTMuOCAyNC4xLTEzLjhzMTkuMSA1LjMgMjQuMSAxMy44bDk1LjIgMTYzLjJjNS43IDkuOCA5LjMgMjEuMSA2LjcgMzIuMUMyNDMuMiAzNTAgMTkwLjkgMzg0IDEyOCAzODR6bTM4Mi44LTkyLjJMNDM4LjQgNDE2SDU4My4zTDUxMC44IDI5MS44em0xMjYgMTQxLjNDNjI2IDQ3OCA1NzMuNyA1MTIgNTEwLjggNTEycy0xMTUuMi0zNC0xMjYtNzguOWMtMi42LTExIDEtMjIuMyA2LjctMzIuMWw5NS4yLTE2My4yYzUtOC42IDE0LjItMTMuOCAyNC4xLTEzLjhzMTkuMSA1LjMgMjQuMSAxMy44bDk1LjIgMTYzLjJjNS43IDkuOCA5LjMgMjEuMSA2LjcgMzIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NhbGVVbmJhbGFuY2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyMi4xIDYyLjRjMTYuOC01LjYgMjUuOC0yMy43IDIwLjItNDAuNVM1MTguNi0zLjkgNTAxLjkgMS42bC0xMTMgMzcuN0MzNzUgMTUuOCAzNDkuMyAwIDMyMCAwYy00NC4yIDAtODAgMzUuOC04MCA4MGMwIDMgLjIgNS45IC41IDguOEwxMTcuOSAxMjkuNmMtMTYuOCA1LjYtMjUuOCAyMy43LTIwLjIgNDAuNXMyMy43IDI1LjggNDAuNSAyMC4ybDEzNS41LTQ1LjJjNC41IDMuMiA5LjMgNS45IDE0LjQgOC4yVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg1MTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzUyVjE1My4zYzIxLTkuMiAzNy4yLTI3IDQ0LjItNDlsMTI1LjktNDJ6TTQzOS42IDI4OEw1MTIgMTYzLjggNTg0LjQgMjg4SDQzOS42ek01MTIgMzg0YzYyLjkgMCAxMTUuMi0zNCAxMjYtNzguOWMyLjYtMTEtMS0yMi4zLTYuNy0zMi4xTDUzNi4xIDEwOS44Yy01LTguNi0xNC4yLTEzLjgtMjQuMS0xMy44cy0xOS4xIDUuMy0yNC4xIDEzLjhMMzkyLjcgMjczLjFjLTUuNyA5LjgtOS4zIDIxLjEtNi43IDMyLjFDMzk2LjggMzUwIDQ0OS4xIDM4NCA1MTIgMzg0ek0xMjkuMiAyOTEuOEwyMDEuNiA0MTZINTYuN2w3Mi40LTEyNC4yek0zLjIgNDMzLjFDMTQgNDc4IDY2LjMgNTEyIDEyOS4yIDUxMnMxMTUuMi0zNCAxMjYtNzguOWMyLjYtMTEtMS0yMi4zLTYuNy0zMi4xTDE1My4yIDIzNy44Yy01LTguNi0xNC4yLTEzLjgtMjQuMS0xMy44cy0xOS4xIDUuMy0yNC4xIDEzLjhMOS45IDQwMS4xYy01LjcgOS44LTkuMyAyMS4xLTYuNyAzMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2hvb2xDaXJjbGVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzcuOCA1LjRDMzI3LTEuOCAzMTMtMS44IDMwMi4yIDUuNEwxNjYuMyA5Nkg0OEMyMS41IDk2IDAgMTE3LjUgMCAxNDRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDMyMHYwSDI1NlY0MTZjMC0zNS4zIDI4LjctNjQgNjQtNjRsLjMgMGguNWMzLjQtMzcuNyAxOC43LTcyLjEgNDIuMi05OS4xQzM1MC4yIDI2MCAzMzUuNiAyNjQgMzIwIDI2NGMtNDguNiAwLTg4LTM5LjQtODgtODhzMzkuNC04OCA4OC04OHM4OCAzOS40IDg4IDg4YzAgMTguMy01LjYgMzUuMy0xNS4xIDQ5LjRjMjktMjEgNjQuNi0zMy40IDEwMy4xLTMzLjRjNTkuNSAwIDExMi4xIDI5LjYgMTQ0IDc0LjhWMTQ0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ3My43TDMzNy44IDUuNHpNOTYgMTkyaDMyYzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNlYyMDhjMC04LjggNy4yLTE2IDE2LTE2em0wIDEyOGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnpNMzIwIDEyOGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgzMzZWMTQ0YzAtOC44LTcuMi0xNi0xNi0xNnpNNjQwIDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tOTkuMy00My4zYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNmwtNzIgNzJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwbC00MC00MGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ4MCAzODUuNGw2MC43LTYwLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjaG9vbENpcmNsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNy44IDUuNEMzMjctMS44IDMxMy0xLjggMzAyLjIgNS40TDE2Ni4zIDk2SDQ4QzIxLjUgOTYgMCAxMTcuNSAwIDE0NFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhIMzIwdjBIMjU2VjQxNmMwLTM1LjMgMjguNy02NCA2NC02NGwuMyAwaC41YzMuNC0zNy43IDE4LjctNzIuMSA0Mi4yLTk5LjFDMzUwLjIgMjYwIDMzNS42IDI2NCAzMjAgMjY0Yy00OC42IDAtODgtMzkuNC04OC04OHMzOS40LTg4IDg4LTg4czg4IDM5LjQgODggODhjMCAxOC4zLTUuNiAzNS4zLTE1LjEgNDkuNGMyOS0yMSA2NC42LTMzLjQgMTAzLjEtMzMuNGM1OS41IDAgMTEyLjEgMjkuNiAxNDQgNzQuOFYxNDRjMC0yNi41LTIxLjUtNDgtNDgtNDhINDczLjdMMzM3LjggNS40ek05NiAxOTJoMzJjOC44IDAgMTYgNy4yIDE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2VjIwOGMwLTguOCA3LjItMTYgMTYtMTZ6bTAgMTI4aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2ek0zMjAgMTI4Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDMzNlYxNDRjMC04LjgtNy4yLTE2LTE2LTE2ek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC05NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAtMTQ0YzguOCAwIDE2IDcuMiAxNiAxNnY4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYyODhjMC04LjggNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2hvb2xDaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzcuOCA1LjRDMzI3LTEuOCAzMTMtMS44IDMwMi4yIDUuNEwxNjYuMyA5Nkg0OEMyMS41IDk2IDAgMTE3LjUgMCAxNDRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDMyMHYwSDI1NlY0MTZjMC0zNS4zIDI4LjctNjQgNjQtNjRsLjMgMGguNWMzLjQtMzcuNyAxOC43LTcyLjEgNDIuMi05OS4xQzM1MC4yIDI2MCAzMzUuNiAyNjQgMzIwIDI2NGMtNDguNiAwLTg4LTM5LjQtODgtODhzMzkuNC04OCA4OC04OHM4OCAzOS40IDg4IDg4YzAgMTguMy01LjYgMzUuMy0xNS4xIDQ5LjRjMjktMjEgNjQuNi0zMy40IDEwMy4xLTMzLjRjNTkuNSAwIDExMi4xIDI5LjYgMTQ0IDc0LjhWMTQ0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ3My43TDMzNy44IDUuNHpNOTYgMTkyaDMyYzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNlYyMDhjMC04LjggNy4yLTE2IDE2LTE2em0wIDEyOGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnpNMzIwIDEyOGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgzMzZWMTQ0YzAtOC44LTcuMi0xNi0xNi0xNnpNNDk2IDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTIyLjYtMTQ0bDM2LjcgMzYuN2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwTDQ5NiAzOTAuNmwtMzYuNyAzNi43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42TDQ3My40IDM2OGwtMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDk2IDM0NS40bDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZMNTE4LjYgMzY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2hvb2xGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAwSDQwMGM4LjggMCAxNiA3LjIgMTYgMTZWODBjMCA4LjgtNy4yIDE2LTE2IDE2SDMyMC43bDg5LjYgNjRINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEgzMzZWNDAwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4VjUxMkg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjI0YzAtMzUuMyAyOC43LTY0IDY0LTY0SDE2NS43TDI1NiA5NS41VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem00OCAyNDBhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNODAgMjI0Yy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDgwem0zNjggMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDQ2NGMtOC44IDAtMTYgNy4yLTE2IDE2ek04MCAzNTJjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjM2OGMwLTguOC03LjItMTYtMTYtMTZIODB6bTM4NCAwYy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzNjhjMC04LjgtNy4yLTE2LTE2LTE2SDQ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2Nob29sTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDIuMiA1LjRjMTAuNy03LjIgMjQuOC03LjIgMzUuNSAwTDQ3My43IDk2SDU5MmMyNi41IDAgNDggMjEuNSA0OCA0OFYyNzJjMC02MS45LTUwLjEtMTEyLTExMi0xMTJzLTExMiA1MC4xLTExMiAxMTJ2MjQuNmMtMTkuMSAxMS4xLTMyIDMxLjctMzIgNTUuNEgzMjAuM2wtLjMgMGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2OTZoNjR2MEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDE2Ni4zTDMwMi4yIDUuNHpNODAgMjA4djY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkg5NmMtOC44IDAtMTYgNy4yLTE2IDE2em0wIDEyOHY2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMzNmMwLTguOC03LjItMTYtMTYtMTZIOTZjLTguOCAwLTE2IDcuMi0xNiAxNnptMjQwLTcyYTg4IDg4IDAgMSAwIDAtMTc2IDg4IDg4IDAgMSAwIDAgMTc2em0xNi0xMjB2MTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzIwYy04LjggMC0xNi03LjItMTYtMTZWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6bTE5MiA5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NDhoNjRWMjcyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tODAgMzJjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MHY0OGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJINDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNTJjMC0xNy43IDE0LjMtMzIgMzItMzJWMjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2hvb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM3LjggNS40QzMyNy0xLjggMzEzLTEuOCAzMDIuMiA1LjRMMTY2LjMgOTZINDhDMjEuNSA5NiAwIDExNy41IDAgMTQ0VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgyNTZWNDE2YzAtMzUuMyAyOC43LTY0IDY0LTY0czY0IDI4LjcgNjQgNjR2OTZINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjE0NGMwLTI2LjUtMjEuNS00OC00OC00OEg0NzMuN0wzMzcuOCA1LjR6TTk2IDE5MmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZWMjA4YzAtOC44IDcuMi0xNiAxNi0xNnptNDAwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2SDUxMmMtOC44IDAtMTYtNy4yLTE2LTE2VjIwOHpNOTYgMzIwaDMyYzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2em00MDAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZINTEyYy04LjggMC0xNi03LjItMTYtMTZWMzM2ek0yMzIgMTc2YTg4IDg4IDAgMSAxIDE3NiAwIDg4IDg4IDAgMSAxIC0xNzYgMHptODgtNDhjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzM2VjE0NGMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjaXNzb3JzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAxOTJsLTM5LjUtMzkuNWM0LjktMTIuNiA3LjUtMjYuMiA3LjUtNDAuNUMyMjQgNTAuMSAxNzMuOSAwIDExMiAwUzAgNTAuMSAwIDExMnM1MC4xIDExMiAxMTIgMTEyYzE0LjMgMCAyNy45LTIuNyA0MC41LTcuNUwxOTIgMjU2bC0zOS41IDM5LjVjLTEyLjYtNC45LTI2LjItNy41LTQwLjUtNy41QzUwLjEgMjg4IDAgMzM4LjEgMCA0MDBzNTAuMSAxMTIgMTEyIDExMnMxMTItNTAuMSAxMTItMTEyYzAtMTQuMy0yLjctMjcuOS03LjUtNDAuNUw0OTkuMiA3Ni44YzcuMS03LjEgNy4xLTE4LjUgMC0yNS42Yy0yOC4zLTI4LjMtNzQuMS0yOC4zLTEwMi40IDBMMjU2IDE5MnptMjIuNiAxNTAuNkwzOTYuOCA0NjAuOGMyOC4zIDI4LjMgNzQuMSAyOC4zIDEwMi40IDBjNy4xLTcuMSA3LjEtMTguNSAwLTI1LjZMMzQyLjYgMjc4LjZsLTY0IDY0ek02NCAxMTJhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptNDggMjQwYTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NyZXdkcml2ZXJXcmVuY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzguNiA1QzY5LjEtMi40IDU1LjYtMS41IDQ3IDdMNyA0N2MtOC41IDguNS05LjQgMjItMi4xIDMxLjZsODAgMTA0YzQuNSA1LjkgMTEuNiA5LjQgMTkgOS40aDU0LjFsMTA5IDEwOWMtMTQuNyAyOS0xMCA2NS40IDE0LjMgODkuNmwxMTIgMTEyYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDY0LTY0YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xMTItMTEyYy0yNC4yLTI0LjItNjAuNi0yOS04OS42LTE0LjNsLTEwOS0xMDlWMTA0YzAtNy41LTMuNS0xNC41LTkuNC0xOUw3OC42IDV6TTE5LjkgMzk2LjFDNy4yIDQwOC44IDAgNDI2LjEgMCA0NDQuMUMwIDQ4MS42IDMwLjQgNTEyIDY3LjkgNTEyYzE4IDAgMzUuMy03LjIgNDgtMTkuOUwyMzMuNyAzNzQuM2MtNy44LTIwLjktOS00My42LTMuNi02NS4xbC02MS43LTYxLjdMMTkuOSAzOTYuMXpNNTEyIDE0NGMwLTEwLjUtMS4xLTIwLjctMy4yLTMwLjVjLTIuNC0xMS4yLTE2LjEtMTQuMS0yNC4yLTZsLTYzLjkgNjMuOWMtMyAzLTcuMSA0LjctMTEuMyA0LjdIMzUyYy04LjggMC0xNi03LjItMTYtMTZWMTAyLjZjMC00LjIgMS43LTguMyA0LjctMTEuM2w2My45LTYzLjljOC4xLTguMSA1LjItMjEuOC02LTI0LjJDMzg4LjcgMS4xIDM3OC41IDAgMzY4IDBDMjg4LjUgMCAyMjQgNjQuNSAyMjQgMTQ0bDAgLjggODUuMyA4NS4zYzM2LTkuMSA3NS44IC41IDEwNCAyOC43TDQyOSAyNzQuNWM0OS0yMyA4My03Mi44IDgzLTEzMC41ek01NiA0MzJhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NyZXdkcml2ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY1IDdjLTguNS04LjUtMjItOS40LTMxLjYtMi4xbC0xMDQgODBjLTUuOSA0LjUtOS40IDExLjYtOS40IDE5djU0LjFsLTg1LjYgODUuNmM2LjcgNC4yIDEzIDkuMyAxOC44IDE1LjFzMTAuOSAxMi4yIDE1LjEgMTguOEwzNTMuOSAxOTJINDA4YzcuNSAwIDE0LjUtMy41IDE5LTkuNGw4MC0xMDRjNy40LTkuNiA2LjUtMjMuMS0yLjEtMzEuNkw0NjUgN3pNMTIxLjQgMjgxLjRsLTExMiAxMTJjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDY0IDY0YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDExMi0xMTJjMzAuMi0zMC4yIDMwLjItNzkuMSAwLTEwOS4zcy03OS4xLTMwLjItMTA5LjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2Nyb2xsVG9yYWggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNDgwVjMyQzk2IDE0LjMgNzQuNSAwIDQ4IDBTMCAxNC4zIDAgMzJWNDgwYzAgMTcuNyAyMS41IDMyIDQ4IDMyczQ4LTE0LjMgNDgtMzJ6TTUxMiAzMkgxMjhWNDgwSDUxMlYzMnpNNTkyIDBjLTI2LjUgMC00OCAxNC4zLTQ4IDMyVjQ4MGMwIDE3LjcgMjEuNSAzMiA0OCAzMnM0OC0xNC4zIDQ4LTMyVjMyYzAtMTcuNy0yMS41LTMyLTQ4LTMyek0xOTYgMzEzLjdjMC0zLjIgLjktNi40IDIuNS05LjJMMjI2LjcgMjU2bC0yOC4zLTQ4LjVjLTEuNi0yLjgtMi41LTYtMi41LTkuMmMwLTEwLjEgOC4yLTE4LjMgMTguMy0xOC4zSDI3MWwzMS40LTUzLjljMy42LTYuMyAxMC4zLTEwLjEgMTcuNi0xMC4xczEzLjkgMy44IDE3LjYgMTAuMUwzNjkgMTgwaDU2LjdjMTAuMSAwIDE4LjMgOC4yIDE4LjMgMTguM2MwIDMuMi0uOSA2LjQtMi41IDkuMkw0MTMuMyAyNTZsMjguMyA0OC41YzEuNiAyLjggMi41IDYgMi41IDkuMmMwIDEwLjEtOC4yIDE4LjMtMTguMyAxOC4zSDM2OWwtMzEuNCA1My45Yy0zLjYgNi4zLTEwLjMgMTAuMS0xNy42IDEwLjFzLTEzLjktMy44LTE3LjYtMTAuMUwyNzEgMzMySDIxNC4zYy0xMC4xIDAtMTguMy04LjItMTguMy0xOC4zem0xMjQgNTQuN0wzNDEuMiAzMzJIMjk4LjhMMzIwIDM2OC40ek0yNTQuNSAyNTZsMzAuMyA1Mmg3MC40bDMwLjMtNTItMzAuMy01MkgyODQuOGwtMzAuMyA1MnptMTQ0LjkgMjMuOEwzODMgMzA4aDMyLjhsLTE2LjQtMjguMnpNNDE1LjggMjA0SDM4M2wxNi40IDI4LjJMNDE1LjggMjA0ek0zMjAgMTQzLjZMMjk4LjggMTgwaDQyLjRMMzIwIDE0My42ek0yMjQuMiAyMDRsMTYuNCAyOC4yTDI1NyAyMDRIMjI0LjJ6TTI1NyAzMDhsLTE2LjQtMjguMkwyMjQuMiAzMDhIMjU3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY3JvbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4MHY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg0OCA5NlY4MGMwLTI2LjUtMjEuNS00OC00OC00OFMwIDUzLjUgMCA4MHpNMTEyIDMyYzEwIDEzLjQgMTYgMzAgMTYgNDhWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR2LTUuM2MwLTMyLjQgMjYuMy01OC43IDU4LjctNTguN0g0ODBWMTI4YzAtNTMtNDMtOTYtOTYtOTZIMTEyek00NjQgNDgwYzYxLjkgMCAxMTItNTAuMSAxMTItMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgzMTQuN2MtMTQuNyAwLTI2LjcgMTEuOS0yNi43IDI2LjdWMzg0YzAgNTMtNDMgOTYtOTYgOTZIMzY4aDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDBIMTQxLjNDMTI0LjMgMCAxMDggNi43IDk2IDE4LjdMMTguNyA5NkM2LjcgMTA4IDAgMTI0LjMgMCAxNDEuM1Y0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0ek0xNjAgODh2NDhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWODhjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHptODAgMHY0OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY4OGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0em04MCAwdjQ4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0Vjg4YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlY3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQuOSA5NkM2Ny4xIDg0LjQgNzMuNyA3Ni4yIDg2IDcwLjZjMTMuOC02LjIgMzQuOC04LjkgNjEuMi00LjVjOC44IDEuNCAzNi4xIDcuMSA0NC4xIDkuM2MxNyA0LjggMzQuNy01LjEgMzkuNS0yMi4ycy01LjEtMzQuNy0yMi4yLTM5LjVjLTExLjEtMy4xLTQxLTkuMi01MC45LTEwLjhDMTIzLTIuNyA4OC4zLS42IDU5LjcgMTIuM0MyOS45IDI1LjggNy41IDUwLjkgMS42IDg2LjVjLS4xIC41LS4yIDEuMS0uMiAxLjZjLTIuMiAxOS43IC4zIDM3LjkgOC4xIDU0LjFjNy43IDE2LjEgMTkuNCAyOCAzMiAzNi45Yy42IC41IDEuMyAuOSAyIDEuNEMyMi4zIDE5NC4yIDYuNSAyMTUuMSAxLjcgMjQzYy0uMSAuNi0uMiAxLjEtLjIgMS43Yy0yLjMgMTkuMyAuNCAzNy4xIDguNCA1M2M3LjkgMTUuNiAxOS44IDI3IDMyLjMgMzUuNWMyMi40IDE1LjIgNTEuOSAyNCA3NS40IDMxbDAgMCAzLjcgMS4xYzI3LjIgOC4yIDQ2LjkgMTQuNiA1OS40IDIzLjhjNS41IDQgOC4yIDcuNiA5LjUgMTAuOWMxLjMgMy4yIDIuNiA4LjYgLjkgMTguMWMtMS43IDEwLjEtNy43IDE4LTIwLjcgMjMuNWMtMTQgNi0zNS40IDguNS02MiA0LjRjLTEyLjgtMi4xLTM1LjEtOS43LTU0LjEtMTYuMmwwIDBjLTQuMy0xLjUtOC41LTIuOS0xMi4zLTQuMkMyNS4zIDQyMCA3LjIgNDI5LjEgMS42IDQ0NS44czMuNSAzNC45IDIwLjMgNDAuNWMyLjYgLjggNS43IDEuOSA5LjIgMy4xYzE4LjYgNi4zIDQ4LjUgMTYuNiA2Ny4zIDE5LjZsMCAwIC4yIDBjMzQuNSA1LjQgNjguOCAzLjQgOTcuMi04LjdjMjkuNC0xMi42IDUyLjUtMzYuNSA1OC41LTcxLjVjMy4zLTE5LjMgMS45LTM3LjQtNS01My45Yy02LjMtMTUtMTYuNC0yNi40LTI3LjYtMzUuMmMxNi41LTEzLjkgMjguNS0zMy4yIDMyLjYtNTguMmMzLjItMTkuOCAxLjktMzguMy00LjgtNTUuMWMtNi43LTE2LjgtMTcuOC0yOS40LTMwLjItMzljLTIyLjgtMTcuNi01My42LTI3LjQtNzcuNy0zNWwtMS40LS41Yy0yNy40LTguNy00Ny44LTE1LjMtNjEuNS0yNWMtNi4xLTQuNC05LjUtOC41LTExLjQtMTIuNGMtMS44LTMuNy0zLjItOS4zLTIuMy0xOC41em03Ni43IDIwOC41Yy0uMi0uMS0uNC0uMS0uNi0uMmwtMS40LS40Yy0yNy40LTguMi00Ny45LTE0LjUtNjEuNy0yMy44Yy02LjItNC4yLTkuMy03LjktMTEtMTEuM2MtMS41LTMtMi45LTcuNy0yLjEtMTUuN2MxLjktOS43IDcuOS0xNy4zIDIwLjUtMjIuN2MxNC02IDM1LjQtOC41IDYyLjEtNC4zbDE2LjQgMi42YzYuMyAyLjkgMTEuNyA2IDE2LjIgOS41YzUuNSA0LjIgOC40IDguMiAxMCAxMi4yYzEuNiA0IDIuOCAxMC40IDEuMSAyMC45Yy0yLjQgMTQuNy0xMi44IDI2LjQtMzcuMSAzMWwtMTIuNCAyLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlZWRsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAzMmMwIDExMy42LTg0LjYgMjA3LjUtMTk0LjIgMjIyYy03LjEtNTMuNC0zMC42LTEwMS42LTY1LjMtMTM5LjNDMjkwLjggNDYuMyAzNjQgMCA0NDggMGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnpNMCA5NkMwIDc4LjMgMTQuMyA2NCAzMiA2NEg2NGMxMjMuNyAwIDIyNCAxMDAuMyAyMjQgMjI0djMyVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMjBDMTAwLjMgMzIwIDAgMjE5LjcgMCA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VydmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZ2NjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em0yODAgNzJhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em00OCAyNGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwek02NCAyODhjLTM1LjMgMC02NCAyOC43LTY0IDY0djY0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYzNTJjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTI4MCA3MmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTU2IDI0YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoYXBlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTUuNCAxNS41QzMwOS43IDUuOSAyOTkuMiAwIDI4OCAwcy0yMS43IDUuOS0yNy40IDE1LjVsLTk2IDE2MGMtNS45IDkuOS02LjEgMjIuMi0uNCAzMi4yczE2LjMgMTYuMiAyNy44IDE2LjJIMzg0YzExLjUgMCAyMi4yLTYuMiAyNy44LTE2LjJzNS41LTIyLjMtLjQtMzIuMmwtOTYtMTYwek0yODggMzEyVjQ1NmMwIDIyLjEgMTcuOSA0MCA0MCA0MEg0NzJjMjIuMSAwIDQwLTE3LjkgNDAtNDBWMzEyYzAtMjIuMS0xNy45LTQwLTQwLTQwSDMyOGMtMjIuMSAwLTQwIDE3LjktNDAgNDB6TTEyOCA1MTJhMTI4IDEyOCAwIDEgMCAwLTI1NiAxMjggMTI4IDAgMSAwIDAgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGFyZUZyb21TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDIyNEgzMDUuNWMtNDUgMC04MS41IDM2LjUtODEuNSA4MS41YzAgMjIuMyAxMC4zIDM0LjMgMTkuMiA0MC41YzYuOCA0LjcgMTIuOCAxMiAxMi44IDIwLjNjMCA5LjgtOCAxNy44LTE3LjggMTcuOGgtMi41Yy0yLjQgMC00LjgtLjQtNy4xLTEuNEMyMTAuOCAzNzQuOCAxMjggMzMzLjQgMTI4IDI0MGMwLTc5LjUgNjQuNS0xNDQgMTQ0LTE0NGg4MFYzNC43QzM1MiAxNS41IDM2Ny41IDAgMzg2LjcgMGM4LjYgMCAxNi44IDMuMiAyMy4yIDguOUw1NDguMSAxMzMuM2M3LjYgNi44IDExLjkgMTYuNSAxMS45IDI2LjdzLTQuMyAxOS45LTExLjkgMjYuN2wtMTM5IDEyNS4xYy01LjkgNS4zLTEzLjUgOC4yLTIxLjQgOC4ySDM4NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjI0ek04MCA5NmMtOC44IDAtMTYgNy4yLTE2IDE2VjQzMmMwIDguOCA3LjIgMTYgMTYgMTZINDAwYzguOCAwIDE2LTcuMiAxNi0xNlYzODRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY0OGMwIDQ0LjItMzUuOCA4MC04MCA4MEg4MGMtNDQuMiAwLTgwLTM1LjgtODAtODBWMTEyQzAgNjcuOCAzNS44IDMyIDgwIDMyaDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGFyZU5vZGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAyMjRjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgNCAuMiA4IC43IDExLjlsLTk0LjEgNDdDMTQ1LjQgMTcwLjIgMTIxLjkgMTYwIDk2IDE2MGMtNTMgMC05NiA0My05NiA5NnM0MyA5NiA5NiA5NmMyNS45IDAgNDkuNC0xMC4yIDY2LjYtMjYuOWw5NC4xIDQ3Yy0uNSAzLjktLjcgNy44LS43IDExLjljMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZjLTI1LjkgMC00OS40IDEwLjItNjYuNiAyNi45bC05NC4xLTQ3Yy41LTMuOSAuNy03LjggLjctMTEuOXMtLjItOC0uNy0xMS45bDk0LjEtNDdDMzAyLjYgMjEzLjggMzI2LjEgMjI0IDM1MiAyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNyAzNC44Yy0xMS41IDUuMS0xOSAxNi42LTE5IDI5LjJ2NjRIMTc2Qzc4LjggMTI4IDAgMjA2LjggMCAzMDRDMCA0MTcuMyA4MS41IDQ2Ny45IDEwMC4yIDQ3OC4xYzIuNSAxLjQgNS4zIDEuOSA4LjEgMS45YzEwLjkgMCAxOS43LTguOSAxOS43LTE5LjdjMC03LjUtNC4zLTE0LjQtOS44LTE5LjVDMTA4LjggNDMxLjkgOTYgNDE0LjQgOTYgMzg0YzAtNTMgNDMtOTYgOTYtOTZoOTZ2NjRjMCAxMi42IDcuNCAyNC4xIDE5IDI5LjJzMjUgMyAzNC40LTUuNGwxNjAtMTQ0YzYuNy02LjEgMTAuNi0xNC43IDEwLjYtMjMuOHMtMy44LTE3LjctMTAuNi0yMy44bC0xNjAtMTQ0Yy05LjQtOC41LTIyLjktMTAuNi0zNC40LTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hlZXRQbGFzdGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDIyNFYzODRjMC0xNy43IDE0LjMtMzIgMzItMzJIMzg0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0QzI4LjcgMCAwIDI4LjcgMCA2NFY0NDh6TTE3MS4zIDc1LjNsLTk2IDk2Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42bDk2LTk2YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnptOTYgMzJsLTE2MCAxNjBjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZsMTYwLTE2MGM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZ6TTM4NCAzODRIMjU2VjUxMkwzODQgMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGVrZWxTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWOTZIMTkyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE2MGMwLTcwLjctNTcuMy0xMjgtMTI4LTEyOEgzMnpNMzIwIDQ4MGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYzNTJjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMTkyVjE5MmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGllbGRDYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY5LjQgMi45QzI2NS4yIDEgMjYwLjcgMCAyNTYgMHMtOS4yIDEtMTMuNCAyLjlMNTQuMyA4Mi44Yy0yMiA5LjMtMzguNCAzMS0zOC4zIDU3LjJjLjUgOTkuMiA0MS4zIDI4MC43IDIxMy42IDM2My4yYzE2LjcgOCAzNi4xIDggNTIuOCAwQzQ1NC43IDQyMC43IDQ5NS41IDIzOS4yIDQ5NiAxNDBjLjEtMjYuMi0xNi4zLTQ3LjktMzguMy01Ny4yTDI2OS40IDIuOXpNMTYwIDE1NC40YzAtNS44IDQuNy0xMC40IDEwLjQtMTAuNGguMmMzLjQgMCA2LjUgMS42IDguNSA0LjNsNDAgNTMuM2MzIDQgNy44IDYuNCAxMi44IDYuNGg0OGM1IDAgOS44LTIuNCAxMi44LTYuNGw0MC01My4zYzItMi43IDUuMi00LjMgOC41LTQuM2guMmM1LjggMCAxMC40IDQuNyAxMC40IDEwLjRWMjcyYzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2VjE1NC40ek0yMTYgMjg4YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnptOTYtMTZhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hpZWxkRG9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2OS40IDIuOUMyNjUuMiAxIDI2MC43IDAgMjU2IDBzLTkuMiAxLTEzLjQgMi45TDU0LjMgODIuOGMtMjIgOS4zLTM4LjQgMzEtMzguMyA1Ny4yYy41IDk5LjIgNDEuMyAyODAuNyAyMTMuNiAzNjMuMmMxNi43IDggMzYuMSA4IDUyLjggMEM0NTQuNyA0MjAuNyA0OTUuNSAyMzkuMiA0OTYgMTQwYy4xLTI2LjItMTYuMy00Ny45LTM4LjMtNTcuMkwyNjkuNCAyLjl6TTE2MC45IDI4Ni4yYzQuOCAxLjIgOS45IDEuOCAxNS4xIDEuOGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBoNDQuMmMxMi4xIDAgMjMuMiA2LjggMjguNiAxNy43TDMyMCAxOTJoNjRjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgNDQuMi0zNS44IDgwLTgwIDgwSDI3MnY1MC43YzAgNy4zLTUuOSAxMy4zLTEzLjMgMTMuM2MtMS44IDAtMy42LS40LTUuMi0xLjFsLTk4LjctNDIuM2MtNi42LTIuOC0xMC44LTkuMy0xMC44LTE2LjRjMC0yLjggLjYtNS41IDEuOS04bDE1LTMwek0xNjAgMTYwaDQwIDh2MzIgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTc2YzAtOC44IDcuMi0xNiAxNi0xNnptMTI4IDQ4YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaWVsZEhhbHZlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMGM0LjYgMCA5LjIgMSAxMy40IDIuOUw0NTcuNyA4Mi44YzIyIDkuMyAzOC40IDMxIDM4LjMgNTcuMmMtLjUgOTkuMi00MS4zIDI4MC43LTIxMy42IDM2My4yYy0xNi43IDgtMzYuMSA4LTUyLjggMEM1Ny4zIDQyMC43IDE2LjUgMjM5LjIgMTYgMTQwYy0uMS0yNi4yIDE2LjMtNDcuOSAzOC4zLTU3LjJMMjQyLjcgMi45QzI0Ni44IDEgMjUxLjQgMCAyNTYgMHptMCA2Ni44VjQ0NC44QzM5NCAzNzggNDMxLjEgMjMwLjEgNDMyIDE0MS40TDI1NiA2Ni44bDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hpZWxkSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY5LjQgMi45QzI2NS4yIDEgMjYwLjcgMCAyNTYgMHMtOS4yIDEtMTMuNCAyLjlMNTQuMyA4Mi44Yy0yMiA5LjMtMzguNCAzMS0zOC4zIDU3LjJjLjUgOTkuMiA0MS4zIDI4MC43IDIxMy42IDM2My4yYzE2LjcgOCAzNi4xIDggNTIuOCAwQzQ1NC43IDQyMC43IDQ5NS41IDIzOS4yIDQ5NiAxNDBjLjEtMjYuMi0xNi4zLTQ3LjktMzguMy01Ny4yTDI2OS40IDIuOXpNMTQ0IDIyMS4zYzAtMzMuOCAyNy40LTYxLjMgNjEuMy02MS4zYzE2LjIgMCAzMS44IDYuNSA0My4zIDE3LjlsNy40IDcuNCA3LjQtNy40YzExLjUtMTEuNSAyNy4xLTE3LjkgNDMuMy0xNy45YzMzLjggMCA2MS4zIDI3LjQgNjEuMyA2MS4zYzAgMTYuMi02LjUgMzEuOC0xNy45IDQzLjNsLTgyLjcgODIuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTgyLjctODIuN2MtMTEuNS0xMS41LTE3LjktMjcuMS0xNy45LTQzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaWVsZFZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2OS40IDIuOUMyNjUuMiAxIDI2MC43IDAgMjU2IDBzLTkuMiAxLTEzLjQgMi45TDU0LjMgODIuOGMtMjIgOS4zLTM4LjQgMzEtMzguMyA1Ny4yYy41IDk5LjIgNDEuMyAyODAuNyAyMTMuNiAzNjMuMmMxNi43IDggMzYuMSA4IDUyLjggMEM0NTQuNyA0MjAuNyA0OTUuNSAyMzkuMiA0OTYgMTQwYy4xLTI2LjItMTYuMy00Ny45LTM4LjMtNTcuMkwyNjkuNCAyLjl6TTI1NiAxMTJjOC44IDAgMTYgNy4yIDE2IDE2YzAgMzMgMzkuOSA0OS41IDYzLjIgMjYuMmM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZDMzM0LjUgMjAwLjEgMzUxIDI0MCAzODQgMjQwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2Yy0zMyAwLTQ5LjUgMzkuOS0yNi4yIDYzLjJjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEMzMTEuOSAzMzQuNSAyNzIgMzUxIDI3MiAzODRjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZjMC0zMy0zOS45LTQ5LjUtNjMuMi0yNi4yYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42QzE3Ny41IDMxMS45IDE2MSAyNzIgMTI4IDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmMzMyAwIDQ5LjUtMzkuOSAyNi4yLTYzLjJjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEMyMDAuMSAxNzcuNSAyNDAgMTYxIDI0MCAxMjhjMC04LjggNy4yLTE2IDE2LTE2ek0yMzIgMjU2YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptNzIgMzJhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hpZWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYzQuNiAwIDkuMiAxIDEzLjQgMi45TDQ1Ny43IDgyLjhjMjIgOS4zIDM4LjQgMzEgMzguMyA1Ny4yYy0uNSA5OS4yLTQxLjMgMjgwLjctMjEzLjYgMzYzLjJjLTE2LjcgOC0zNi4xIDgtNTIuOCAwQzU3LjMgNDIwLjcgMTYuNSAyMzkuMiAxNiAxNDBjLS4xLTI2LjIgMTYuMy00Ny45IDM4LjMtNTcuMkwyNDIuNyAyLjlDMjQ2LjggMSAyNTEuNCAwIDI1NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMkgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDhWMjQwbDQ0LjQgMTQuOGMyMy4xIDcuNyAyOS41IDM3LjUgMTEuNSA1My45bC0xMDEgOTIuNmMtMTYuMiA5LjQtMzQuNyAxNS4xLTUwLjkgMTUuMWMtMTkuNiAwLTQwLjgtNy43LTU5LjItMjAuM2MtMjIuMS0xNS41LTUxLjYtMTUuNS03My43IDBjLTE3LjEgMTEuOC0zOCAyMC4zLTU5LjIgMjAuM2MtMTYuMiAwLTM0LjctNS43LTUwLjktMTUuMWwtMTAxLTkyLjZjLTE4LTE2LjUtMTEuNi00Ni4yIDExLjUtNTMuOUw5NiAyNDBWMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4VjMyek0xNjAgMjE4LjdsMTA3LjgtMzUuOWMxMy4xLTQuNCAyNy4zLTQuNCA0MC41IDBMNDE2IDIxOC43VjEyOEgxNjB2OTAuN3pNMzA2LjUgNDIxLjlDMzI5IDQzNy40IDM1Ni41IDQ0OCAzODQgNDQ4YzI2LjkgMCA1NS40LTEwLjggNzcuNC0yNi4xbDAgMGMxMS45LTguNSAyOC4xLTcuOCAzOS4yIDEuN2MxNC40IDExLjkgMzIuNSAyMSA1MC42IDI1LjJjMTcuMiA0IDI3LjkgMjEuMiAyMy45IDM4LjRzLTIxLjIgMjcuOS0zOC40IDIzLjljLTI0LjUtNS43LTQ0LjktMTYuNS01OC4yLTI1QzQ0OS41IDUwMS43IDQxNyA1MTIgMzg0IDUxMmMtMzEuOSAwLTYwLjYtOS45LTgwLjQtMTguOWMtNS44LTIuNy0xMS4xLTUuMy0xNS42LTcuN2MtNC41IDIuNC05LjcgNS4xLTE1LjYgNy43Yy0xOS44IDktNDguNSAxOC45LTgwLjQgMTguOWMtMzMgMC02NS41LTEwLjMtOTQuNS0yNS44Yy0xMy40IDguNC0zMy43IDE5LjMtNTguMiAyNWMtMTcuMiA0LTM0LjQtNi43LTM4LjQtMjMuOXM2LjctMzQuNCAyMy45LTM4LjRjMTguMS00LjIgMzYuMi0xMy4zIDUwLjYtMjUuMmMxMS4xLTkuNCAyNy4zLTEwLjEgMzkuMi0xLjdsMCAwQzEzNi43IDQzNy4yIDE2NS4xIDQ0OCAxOTIgNDQ4YzI3LjUgMCA1NS0xMC42IDc3LjUtMjYuMWMxMS4xLTcuOSAyNS45LTcuOSAzNyAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGlydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTEuOCAwYzcuOCAwIDE0LjMgNS43IDE2LjcgMTMuMkMyNDAuOCA1MS45IDI3Ny4xIDgwIDMyMCA4MHM3OS4yLTI4LjEgOTEuNS02Ni44QzQxMy45IDUuNyA0MjAuNCAwIDQyOC4yIDBoMTIuNmMyMi41IDAgNDQuMiA3LjkgNjEuNSAyMi4zTDYyOC41IDEyNy40YzYuNiA1LjUgMTAuNyAxMy41IDExLjQgMjIuMXMtMi4xIDE3LjEtNy44IDIzLjZsLTU2IDY0Yy0xMS40IDEzLjEtMzEuMiAxNC42LTQ0LjYgMy41TDQ4MCAxOTcuN1Y0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMjI0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxOTcuN2wtNTEuNSA0Mi45Yy0xMy4zIDExLjEtMzMuMSA5LjYtNDQuNi0zLjVsLTU2LTY0Yy01LjctNi41LTguNS0xNS03LjgtMjMuNnM0LjgtMTYuNiAxMS40LTIyLjFMMTM3LjcgMjIuM0MxNTUgNy45IDE3Ni43IDAgMTk5LjIgMGgxMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG9lUHJpbnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAwQzM1Mi4zIDAgMjU2IDMyIDI1NiAzMlYxNjBjNDggMCA3NiAxNiAxMDQgMzJzNTYgMzIgMTA0IDMyYzU2LjQgMCAxNzYtMTYgMTc2LTk2UzUxMiAwIDQxNiAwek0xMjggOTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRoMzJWMzJIMTkyYy0zNS4zIDAtNjQgMjguNy02NCA2NHpNMjg4IDUxMmM5NiAwIDIyNC00OCAyMjQtMTI4cy0xMTkuNi05Ni0xNzYtOTZjLTQ4IDAtNzYgMTYtMTA0IDMycy01NiAzMi0xMDQgMzJWNDgwczk2LjMgMzIgMTYwIDMyek0wIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg5NlYzNTJINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG9wTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNi44IDE5Mkg0NDkuNmMyMC4yLTE5LjggNDcuOS0zMiA3OC40LTMyYzMwLjUgMCA1OC4xIDEyLjIgNzguMyAzMS45YzE4LjktMS42IDMzLjctMTcuNCAzMy43LTM2LjdjMC03LjMtMi4yLTE0LjQtNi4yLTIwLjRMNTU4LjIgMjEuNEM1NDkuMyA4IDUzNC40IDAgNTE4LjMgMEgxMjEuN2MtMTYgMC0zMSA4LTM5LjkgMjEuNEw2LjIgMTM0LjdjLTQgNi4xLTYuMiAxMy4yLTYuMiAyMC40QzAgMTc1LjUgMTYuNSAxOTIgMzYuOCAxOTJ6TTM4NCAyMjRIMzIwVjM4NEgxMjhWMjI0SDY0VjM4NHY4MGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgzMzZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzg0IDM1MiAyMjR6bTE0NCAxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OEg0OTZWMjcyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tODAgMzJ2NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMyVjI3MmMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hvcFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdsLTU0LjgtNDNWMjI0SDUxMlYzNzZMMzg0IDI3NS43VjIyNEgzMjB2MS41TDI3Ny4yIDE5Mkg2MDMuMmMyMC4zIDAgMzYuOC0xNi41IDM2LjgtMzYuOGMwLTcuMy0yLjItMTQuNC02LjItMjAuNEw1NTguMiAyMS40QzU0OS4zIDggNTM0LjQgMCA1MTguMyAwSDEyMS43Yy0xNiAwLTMxIDgtMzkuOSAyMS40TDc0LjEgMzIuOCAzOC44IDUuMXpNMzYuOCAxOTJoODVMMjEgMTEyLjUgNi4yIDEzNC43Yy00IDYuMS02LjIgMTMuMi02LjIgMjAuNEMwIDE3NS41IDE2LjUgMTkyIDM2LjggMTkyek0zMjAgMzg0SDEyOFYyMjRINjRWMzg0djgwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDMzNmMyNi41IDAgNDgtMjEuNSA0OC00OFYzOTguNWwtNjQtNTAuNFYzODR6TTU0NCA1MTJsLS4zIDBoLjZsLS4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzYuOCAxOTJINjAzLjJjMjAuMyAwIDM2LjgtMTYuNSAzNi44LTM2LjhjMC03LjMtMi4yLTE0LjQtNi4yLTIwLjRMNTU4LjIgMjEuNEM1NDkuMyA4IDUzNC40IDAgNTE4LjMgMEgxMjEuN2MtMTYgMC0zMSA4LTM5LjkgMjEuNEw2LjIgMTM0LjdjLTQgNi4xLTYuMiAxMy4yLTYuMiAyMC40QzAgMTc1LjUgMTYuNSAxOTIgMzYuOCAxOTJ6TTY0IDIyNFYzODR2ODBjMCAyNi41IDIxLjUgNDggNDggNDhIMzM2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM4NCAyMjRIMzIwVjM4NEgxMjhWMjI0SDY0em00NDggMFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMjRINTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG93ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMTMxLjlDNjQgMTEyLjEgODAuMSA5NiA5OS45IDk2YzkuNSAwIDE4LjYgMy44IDI1LjQgMTAuNWwxNi4yIDE2LjJjLTIxIDM4LjktMTcuNCA4Ny41IDEwLjkgMTIzTDE1MSAyNDdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMEwzNDUgMTIxYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTEuMyAxLjNjLTM1LjUtMjguMy04NC4yLTMxLjktMTIzLTEwLjlMMTcwLjUgNjEuM0MxNTEuOCA0Mi41IDEyNi40IDMyIDk5LjkgMzJDNDQuNyAzMiAwIDc2LjcgMCAxMzEuOVY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxMzEuOXpNMjU2IDM1MmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTY0IDY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTAtMTI4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptNjQgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMC0xMjhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em02NCA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0zMi0zMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNocmltcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2czI4LjcgNjQgNjQgNjRoMWMzLjcgODguOSA3NyAxNjAgMTY3IDE2MGg1NlYxMjhIMjY0IDg4LjggNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDY0YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDY0ek0yMjQgNDU2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDcyVjQwNy44bC02NC4xLTIyLjRjLTEyLjUtNC40LTI2LjIgMi4yLTMwLjYgMTQuN3MyLjIgMjYuMiAxNC43IDMwLjZsNC41IDEuNkMyMzMgNDMzLjkgMjI0IDQ0My45IDIyNCA0NTZ6bTEyOCAyMy4zYzM2LjQtMy4zIDY5LjUtMTcuNiA5Ni4xLTM5LjZsLTg2LjUtMzQuNmMtMyAxLjgtNi4yIDMuMi05LjYgNC4zdjY5Ljl6TTQ3Mi42IDQxNWMyNC42LTMwLjMgMzkuNC02OC45IDM5LjQtMTExYzAtMTIuMy0xLjMtMjQuMy0zLjctMzUuOUwzODIuOCAzNTUuMWMuOCAzLjQgMS4yIDcgMS4yIDEwLjZjMCA0LjYtLjcgOS0xLjkgMTMuMUw0NzIuNiA0MTV6TTMzNiAxMjhIMzIwVjMyMGgxOC4zYzkuOSAwIDE5LjEgMy4yIDI2LjYgOC41bDEzMy41LTkyLjRDNDcxLjggMTcyLjYgNDA5LjEgMTI4IDMzNiAxMjh6TTE2OCAxOTJhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2h1ZmZsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDMuOCAzNC40YzEyLTUgMjUuNy0yLjIgMzQuOSA2LjlsNjQgNjRjNiA2IDkuNCAxNC4xIDkuNCAyMi42cy0zLjQgMTYuNi05LjQgMjIuNmwtNjQgNjRjLTkuMiA5LjItMjIuOSAxMS45LTM0LjkgNi45cy0xOS44LTE2LjYtMTkuOC0yOS42VjE2MEgzNTJjLTEwLjEgMC0xOS42IDQuNy0yNS42IDEyLjhMMjg0IDIyOS4zIDI0NCAxNzZsMzEuMi00MS42QzI5My4zIDExMC4yIDMyMS44IDk2IDM1MiA5NmgzMlY2NGMwLTEyLjkgNy44LTI0LjYgMTkuOC0yOS42ek0xNjQgMjgyLjdMMjA0IDMzNmwtMzEuMiA0MS42QzE1NC43IDQwMS44IDEyNi4yIDQxNiA5NiA0MTZIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIOTZjMTAuMSAwIDE5LjYtNC43IDI1LjYtMTIuOEwxNjQgMjgyLjd6bTI3NC42IDE4OGMtOS4yIDkuMi0yMi45IDExLjktMzQuOSA2LjlzLTE5LjgtMTYuNi0xOS44LTI5LjZWNDE2SDM1MmMtMzAuMiAwLTU4LjctMTQuMi03Ni44LTM4LjRMMTIxLjYgMTcyLjhjLTYtOC4xLTE1LjUtMTIuOC0yNS42LTEyLjhIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIOTZjMzAuMiAwIDU4LjcgMTQuMiA3Ni44IDM4LjRMMzI2LjQgMzM5LjJjNiA4LjEgMTUuNSAxMi44IDI1LjYgMTIuOGgzMlYzMjBjMC0xMi45IDcuOC0yNC42IDE5LjgtMjkuNnMyNS43LTIuMiAzNC45IDYuOWw2NCA2NGM2IDYgOS40IDE0LjEgOS40IDIyLjZzLTMuNCAxNi42LTkuNCAyMi42bC02NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2h1dHRsZVNwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzMCA0ODBjNDAuNiAwIDgwLjQtMTEgMTE1LjItMzEuOUwzNTIgMzg0bC0yMjQgMCAwIDk2aDJ6TTM1MiAxMjhMMjQ1LjIgNjMuOUMyMTAuNCA0MyAxNzAuNiAzMiAxMzAgMzJoLTJ2OTZsMjI0IDB6TTk2IDEyOGwwLTk2SDgwQzUzLjUgMzIgMzIgNTMuNSAzMiA4MHY0OGg4Yy0yMi4xIDAtNDAgMTcuOS00MCA0MHYxNlYzMjh2MTZjMCAyMi4xIDE3LjkgNDAgNDAgNDBIMzJ2NDhjMCAyNi41IDIxLjUgNDggNDggNDhIOTZsMC05Nmg4YzI2LjIgMCA0OS40LTEyLjYgNjQtMzJINDU2YzY5LjMgMCAxMzUtMjIuNyAxNzkuMi04MS42YzYuNC04LjUgNi40LTIwLjMgMC0yOC44QzU5MSAxODIuNyA1MjUuMyAxNjAgNDU2IDE2MEgxNjhjLTE0LjYtMTkuNC0zNy44LTMyLTY0LTMybC04IDB6TTUxMiAyNDMuNnYyNC45YzAgMTkuNi0xNS45IDM1LjYtMzUuNiAzNS42Yy0yLjUgMC00LjQtMi00LjQtNC40VjIxMi40YzAtMi41IDItNC40IDQuNC00LjRjMTkuNiAwIDM1LjYgMTUuOSAzNS42IDM1LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25IYW5naW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRsMzUyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTM1MiAwVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxMjhIMzJDMTQuMyAxMjggMCAxMTMuNyAwIDk2UzE0LjMgNjQgMzIgNjRINjRWMzJDNjQgMTQuMyA3OC4zIDAgOTYgMHptOTYgMTYwSDQ0OGMxNy43IDAgMzIgMTQuMyAzMiAzMlYzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTQ0OCA5NmMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMyek0zNTIgMjI0VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyMjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnpNMTkyIDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMyek05NiA0MTZ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25hdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2Ny44YzAgMjcuNy0yLjQgNTUuMy03LjEgODIuNWwtODQuNCAyNS4zYy00MC42IDEyLjItNjguNCA0OS42LTY4LjQgOTJ2NzEuOWMwIDQwIDMyLjUgNzIuNSA3Mi41IDcyLjVjMjYgMCA1MC0xMy45IDYyLjktMzYuNWwxMy45LTI0LjNjMjYuOC00NyA0Ni41LTk3LjcgNTguNC0xNTAuNWw5NC40LTI4LjMtMTIuNSAzNy41Yy0zLjMgOS44LTEuNiAyMC41IDQuNCAyOC44czE1LjcgMTMuMyAyNiAxMy4zSDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0NjAuNGwxOC01My45YzMuOC0xMS4zIC45LTIzLjgtNy40LTMyLjRzLTIwLjctMTEuOC0zMi4yLTguNEwzMTYuNCAxOTguMWMyLjQtMjAuNyAzLjYtNDEuNCAzLjYtNjIuM1YxMjhjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZ2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxMjh6bS05LjIgMTc3bDQ5LTE0LjdjLTEwLjQgMzMuOC0yNC41IDY2LjQtNDIuMSA5Ny4ybC0xMy45IDI0LjNjLTEuNSAyLjYtNC4zIDQuMy03LjQgNC4zYy00LjcgMC04LjUtMy44LTguNS04LjVWMzM1LjZjMC0xNC4xIDkuMy0yNi42IDIyLjgtMzAuN3pNMjQgMzY4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDY0LjNjLS4yLTIuOC0uMy01LjYtLjMtOC41VjM2OEgyNHptNTkyIDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDMwNS45Yy02LjcgMTYuMy0xNC4yIDMyLjMtMjIuMyA0OEg2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25zUG9zdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMzJINjRDNDYuMyAzMiAzMiA0Ni4zIDMyIDY0djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDQ0MS40YzQuMiAwIDguMy0xLjcgMTEuMy00LjdsNDgtNDhjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTQ4LTQ4Yy0zLTMtNy4xLTQuNy0xMS4zLTQuN0gyODhjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ6TTQ4MCAyNTZjMC0xNy43LTE0LjMtMzItMzItMzJIMjg4VjE5MkgyMjR2MzJINzAuNmMtNC4yIDAtOC4zIDEuNy0xMS4zIDQuN2wtNDggNDhjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42bDQ4IDQ4YzMgMyA3LjEgNC43IDExLjMgNC43SDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMlYyNTZ6TTI4OCA0ODBWMzg0SDIyNHY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaW1DYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBIMjQyLjdjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdMMzY1LjMgOTZjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM1Y0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0QzAgMjguNyAyOC43IDAgNjQgMHpNOTYgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMmg2NFYxOTJIOTZ6TTY0IDM1Mmg4MCA5NiA4MFYyODhIMjQwIDE0NCA2NHY2NHpNMzIwIDIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMkgyNTZ2NjRoNjRWMjI0ek0xNjAgMTkydjY0aDY0VjE5MkgxNjB6TTI4OCA0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzg0SDI1NnY2NGgzMnpNMTYwIDM4NHY2NGg2NFYzODRIMTYwek02NCA0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJWMzg0SDY0djMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyczE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NlYyODhIMTYwVjI2NGMwLTMwLjktMjUuMS01Ni01Ni01Nkg1NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg0OGM0LjQgMCA4IDMuNiA4IDh2MjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMjU2IDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0MDBWMjY0YzAtNC40IDMuNi04IDgtOGg1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg0MDhjLTMwLjkgMC01NiAyNS4xLTU2IDU2djI0SDI4OFY5NnpNNDgwIDQxNlYzODRIMzJ2MzJjMCA1MyA0MyA5NiA5NiA5NkgzODRjNTMgMCA5Ni00MyA5Ni05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2l0ZW1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggODBjMC0yNi41IDIxLjUtNDggNDgtNDhoNjRjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NjRjMCAyNi41LTIxLjUgNDgtNDggNDhoLTh2NDBINDY0YzMwLjkgMCA1NiAyNS4xIDU2IDU2djMyaDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDY0Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzNjhjMC0yNi41IDIxLjUtNDggNDgtNDhoOFYyODhjMC00LjQtMy42LTgtOC04SDMxMnY0MGg4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDI1NmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzY4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDhWMjgwSDExMmMtNC40IDAtOCAzLjYtOCA4djMyaDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM2OGMwLTI2LjUgMjEuNS00OCA0OC00OGg4VjI4OGMwLTMwLjkgMjUuMS01NiA1Ni01NkgyNjRWMTkyaC04Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2t1bGxDcm9zc2JvbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCAxMjhjMCA0NC40LTI1LjQgODMuNS02NCAxMDYuNFYyNTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMTc2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyMzQuNGMtMzguNi0yMy02NC02Mi4xLTY0LTEwNi40QzgwIDU3LjMgMTQ0LjUgMCAyMjQgMHMxNDQgNTcuMyAxNDQgMTI4ek0xNjggMTc2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMTQ0LTMyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTMuNCAyNzMuN2M3LjktMTUuOCAyNy4xLTIyLjIgNDIuOS0xNC4zTDIyNCAzNDguMmwxNzcuNy04OC44YzE1LjgtNy45IDM1LTEuNSA0Mi45IDE0LjNzMS41IDM1LTE0LjMgNDIuOUwyOTUuNiAzODRsMTM0LjggNjcuNGMxNS44IDcuOSAyMi4yIDI3LjEgMTQuMyA0Mi45cy0yNy4xIDIyLjItNDIuOSAxNC4zTDIyNCA0MTkuOCA0Ni4zIDUwOC42Yy0xNS44IDcuOS0zNSAxLjUtNDIuOS0xNC4zcy0xLjUtMzUgMTQuMy00Mi45TDE1Mi40IDM4NCAxNy43IDMxNi42QzEuOSAzMDguNy00LjUgMjg5LjUgMy40IDI3My43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTa3VsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMzk4LjljNTguNS00MS4xIDk2LTEwNC4xIDk2LTE3NC45QzUxMiAxMDAuMyAzOTcuNCAwIDI1NiAwUzAgMTAwLjMgMCAyMjRjMCA3MC43IDM3LjUgMTMzLjggOTYgMTc0LjljMCAuNCAwIC43IDAgMS4xdjY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4VjQ2NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djQ4aDY0VjQ2NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djQ4aDQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQwMGMwLS40IDAtLjcgMC0xLjF6TTk2IDI1NmE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSA5NiAyNTZ6bTI1Ni02NGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4xIDkuMkMxMy4zLTEuMiAyOC40LTMuMSAzOC44IDUuMWw1OTIgNDY0YzEwLjQgOC4yIDEyLjMgMjMuMyA0LjEgMzMuN3MtMjMuMyAxMi4zLTMzLjcgNC4xTDkuMiA0Mi45Qy0xLjIgMzQuNy0zLjEgMTkuNiA1LjEgOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbGVpZ2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2VjI1NmMwIDUzIDQzIDk2IDk2IDk2djMyaDY0VjM1MkgzODR2MzJoNjRWMzUyYzUzIDAgOTYtNDMgOTYtOTZWMTYwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDUxMiA0ODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjQxLjNjMCAzMC4yLTI0LjUgNTQuNy01NC43IDU0LjdjLTc1LjUgMC0xNDUuNi0zOC45LTE4NS42LTEwMi45bC00LjMtNi45QzE3NC4yIDY3LjYgMTI1IDM3LjYgNzAuNyAzMi43Yy0yLjItLjUtNC40LS43LTYuNy0uN0g1NSAzMnpNNjQwIDM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY4YzAgMTMuMy0xMC43IDI0LTI0IDI0SDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDU1MmM0OC42IDAgODgtMzkuNCA4OC04OHYtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2xpZGVycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmw1NC43IDBjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OHM2MS0xOS43IDczLjMtNDhMNDgwIDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMjQ2LjcgMGMtMTIuMy0yOC4zLTQwLjUtNDgtNzMuMy00OHMtNjEgMTkuNy03My4zIDQ4TDMyIDM4NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6bTEyOCAwYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTMyMCAyNTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMzItODBjLTMyLjggMC02MSAxOS43LTczLjMgNDhMMzIgMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDI0Ni43IDBjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OHM2MS0xOS43IDczLjMtNDhsNTQuNyAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC01NC43IDBjLTEyLjMtMjguMy00MC41LTQ4LTczLjMtNDh6TTE5MiAxMjhhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em03My4zLTY0QzI1MyAzNS43IDIyNC44IDE2IDE5MiAxNnMtNjEgMTkuNy03My4zIDQ4TDMyIDY0QzE0LjMgNjQgMCA3OC4zIDAgOTZzMTQuMyAzMiAzMiAzMmw4Ni43IDBjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OHM2MS0xOS43IDczLjMtNDhMNDgwIDEyOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwyNjUuMyA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU21vZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAxNDRjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRIMjk5LjNjMjIuNiAxOS45IDUyLjIgMzIgODQuNyAzMnM2Mi4xLTEyLjEgODQuNy0zMkg0OTZjNjEuOSAwIDExMi01MC4xIDExMi0xMTJzLTUwLjEtMTEyLTExMi0xMTJjLTEwLjcgMC0yMSAxLjUtMzAuOCA0LjNDNDQzLjggMjcuNyA0MDEuMSAwIDM1MiAwYy0zMi42IDAtNjIuNCAxMi4yLTg1LjEgMzIuM0MyNDIuMSAxMi4xIDIxMC41IDAgMTc2IDBDOTYuNSAwIDMyIDY0LjUgMzIgMTQ0ek02MTYgMzY4SDI4MGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg2MTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjR6bS02NCA5Nkg0NDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINTUyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0em0tMTkyIDBIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMzYwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0ek0yMjQgMzkyYzAtMTMuMy0xMC43LTI0LTI0LTI0SDk2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDIwMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU21va2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzJWNDNjMCAzOC4yIDE1LjIgNzQuOCA0Mi4yIDEwMS44bDIxIDIxYzIxIDIxIDMyLjggNDkuNSAzMi44IDc5LjJ2MTFjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjQ1YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlsLTIxLTIxQzQwNS45IDE1MS4xIDM4NCA5OC4xIDM4NCA0M1YzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyek01NzYgMjU2VjI0NWMwLTM4LjItMTUuMi03NC44LTQyLjItMTAxLjhsLTIxLTIxYy0yMS0yMS0zMi44LTQ5LjUtMzIuOC03OS4yVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNDNjMCAxMi43IDUuMSAyNC45IDE0LjEgMzMuOWwyMSAyMWMzOSAzOSA2MC45IDkxLjkgNjAuOSAxNDcuMXYxMWMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMnpNMCA0MTZjMC0zNS4zIDI4LjctNjQgNjQtNjRINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY0MTZ6bTIyNCAwdjMySDM4NFY0MTZIMjI0em0yODgtNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzg0YzAtMTcuNyAxNC4zLTMyIDMyLTMyem05NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU25vd2ZsYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjYyLjFsMTUtMTVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC00OSA0OXY3MC4zbDYxLjQtMzUuOCAxNy43LTY2LjFjMy40LTEyLjggMTYuNi0yMC40IDI5LjQtMTdzMjAuNCAxNi42IDE3IDI5LjRsLTUuMiAxOS4zIDIzLjYtMTMuOGMxNS4zLTguOSAzNC45LTMuNyA0My44IDExLjVzMy44IDM0LjktMTEuNSA0My44bC0yNS4zIDE0LjggMjEuNyA1LjhjMTIuOCAzLjQgMjAuNCAxNi42IDE3IDI5LjRzLTE2LjYgMjAuNC0yOS40IDE3bC02Ny43LTE4LjFMMjg3LjUgMjU2bDYwLjkgMzUuNSA2Ny43LTE4LjFjMTIuOC0zLjQgMjYgNC4yIDI5LjQgMTdzLTQuMiAyNi0xNyAyOS40bC0yMS43IDUuOCAyNS4zIDE0LjhjMTUuMyA4LjkgMjAuNCAyOC41IDExLjUgNDMuOHMtMjguNSAyMC40LTQzLjggMTEuNWwtMjMuNi0xMy44IDUuMiAxOS4zYzMuNCAxMi44LTQuMiAyNi0xNyAyOS40cy0yNi00LjItMjkuNC0xN2wtMTcuNy02Ni4xTDI1NiAzMTEuN3Y3MC4zbDQ5IDQ5YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTE1LTE1VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDkuOWwtMTUgMTVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDktNDlWMzExLjdsLTYxLjQgMzUuOC0xNy43IDY2LjFjLTMuNCAxMi44LTE2LjYgMjAuNC0yOS40IDE3cy0yMC40LTE2LjYtMTctMjkuNGw1LjItMTkuM0w0OC4xIDM5NS42Yy0xNS4zIDguOS0zNC45IDMuNy00My44LTExLjVzLTMuNy0zNC45IDExLjUtNDMuOGwyNS4zLTE0LjgtMjEuNy01LjhjLTEyLjgtMy40LTIwLjQtMTYuNi0xNy0yOS40czE2LjYtMjAuNCAyOS40LTE3bDY3LjcgMTguMUwxNjAuNSAyNTYgOTkuNiAyMjAuNSAzMS45IDIzOC42Yy0xMi44IDMuNC0yNi00LjItMjkuNC0xN3M0LjItMjYgMTctMjkuNGwyMS43LTUuOEwxNS45IDE3MS42Qy42IDE2Mi43LTQuNSAxNDMuMSA0LjQgMTI3LjlzMjguNS0yMC40IDQzLjgtMTEuNWwyMy42IDEzLjgtNS4yLTE5LjNjLTMuNC0xMi44IDQuMi0yNiAxNy0yOS40czI2IDQuMiAyOS40IDE3bDE3LjcgNjYuMUwxOTIgMjAwLjNWMTI5LjlMMTQzIDgxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsMTUgMTVWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNub3dtYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQxLjEgMTQwLjZjLTIgMy45LTEuNiA4LjYgMS4yIDEyYzcgOC41IDEyLjkgMTguMSAxNy4yIDI4LjRMNDA4IDE2MC4yVjEyMGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djE5LjZsMjIuNS05LjdjMTIuMi01LjIgMjYuMyAuNCAzMS41IDEyLjZzLS40IDI2LjMtMTIuNiAzMS41bC01NiAyNC03My42IDMxLjVjLS41IDkuNS0yLjEgMTguNi00LjggMjcuM2MtMS4yIDMuOC0uMSA4IDIuOCAxMC44QzM5Ni43IDI5Ni45IDQxNiAzMzguMiA0MTYgMzg0YzAgNDQuNy0xOC4zIDg1LTQ3LjggMTE0LjFjLTkuOSA5LjctMjMuNyAxMy45LTM3LjUgMTMuOUgxODEuM2MtMTMuOSAwLTI3LjctNC4yLTM3LjUtMTMuOUMxMTQuMyA0NjkgOTYgNDI4LjcgOTYgMzg0YzAtNDUuOCAxOS4zLTg3LjEgNTAuMS0xMTYuM2MyLjktMi44IDQtNi45IDIuOC0xMC44Yy0yLjctOC43LTQuMy0xNy45LTQuOC0yNy4zTDcwLjUgMTk4LjFsLTU2LTI0QzIuNCAxNjguOC0zLjMgMTU0LjcgMS45IDE0Mi41czE5LjMtMTcuOCAzMS41LTEyLjZMNTYgMTM5LjZWMTIwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2NDAuMkwxNTIuNiAxODFjNC4zLTEwLjMgMTAuMS0xOS45IDE3LjItMjguNGMyLjgtMy40IDMuMy04LjEgMS4yLTEyQzE2NCAxMjcuMiAxNjAgMTEyLjEgMTYwIDk2YzAtNTMgNDMtOTYgOTYtOTZzOTYgNDMgOTYgOTZjMCAxNi4xLTQgMzEuMi0xMC45IDQ0LjZ6TTIyNCA5NmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bTQ4IDEyOGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem0tMTYgODBhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0xNiA0OGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwek0yODggOTZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0tNDggMjR2My4yYzAgMy4yIC44IDYuMyAyLjMgOWw5IDE2LjljLjkgMS43IDIuNyAyLjggNC43IDIuOHMzLjgtMS4xIDQuNy0yLjhsOS0xNi45YzEuNS0yLjggMi4zLTUuOSAyLjMtOVYxMjBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNub3dwbG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5OC45IDY0bDY4LjYgMTYwSDI1NmwtNjQtNjRWNjRIMjk4Ljl6TTQ0NS4xIDI0Mi43bC04Ny40LTIwNEMzNDcuNiAxNS4zIDMyNC41IDAgMjk4LjkgMEgxNzZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjE2MEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWMjk4LjhDMjYuMiAzMTYuOCAwIDM1NS4zIDAgNDAwYzAgNjEuOSA1MC4xIDExMiAxMTIgMTEySDM2OGM2MS45IDAgMTEyLTUwLjEgMTEyLTExMmMwLTE3LjItMy45LTMzLjUtMTAuOC00OEg1MTJ2NTAuN2MwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM2w1NC42IDU0LjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0w1NzYgNDAyLjdWMzIwIDIzNS4yTDYzMyAxNjRjMTEtMTMuOCA4LjgtMzMuOS01LTQ1cy0zMy45LTguOC00NSA1bC01NyA3MS4yYy05LjEgMTEuMy0xNCAyNS40LTE0IDQwVjI4OEg0NDhWMjU2LjdjLjEtMi40LS4yLTQuOC0uNi03LjFzLTEuMi00LjctMi4yLTYuOHpNMzY4IDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OEgxMTJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDhIMzY4ek0xNDQgNDAwYTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6bTIxNiAyNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bS01Ni0yNGEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwek0yMDAgNDI0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek0zMjAgMjU2YTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4ek00MTYgMzJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMCAxNjBjMCAyNy42LTExLjcgNTIuNS0zMC40IDcwLjFDNDIyLjEgMjc1LjcgNDQ4IDMxMC44IDQ0OCAzNTJjMCA1My00MyA5Ni05NiA5NkgxNjBjLTUzIDAtOTYtNDMtOTYtOTZzNDMtOTYgOTYtOTZoODguNGMtMTUuMi0xNy0yNC40LTM5LjQtMjQuNC02NEg5NmMtNTMgMC05NiA0My05NiA5NlY0MTZjMCA1MyA0MyA5NiA5NiA5Nkg0MTZjNTMgMCA5Ni00MyA5Ni05NlYyODhjMC01My00My05Ni05Ni05NnpNMTYwIDI4OGMtMzUuMyAwLTY0IDI4LjctNjQgNjRzMjguNyA2NCA2NCA2NEgzNTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjRIMzIwIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ja3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc1LjIgNDc2LjZjLTkuNy0xOC0xNS4yLTM4LjctMTUuMi02MC42YzAtNDAuMyAxOS03OC4yIDUxLjItMTAyLjRsNjQtNDhjOC4xLTYgMTIuOC0xNS41IDEyLjgtMjUuNlY5NkgxMjhWMjQwYzAgMjAuMS05LjUgMzkuMS0yNS42IDUxLjJsLTY0IDQ4QzE0LjIgMzU3LjMgMCAzODUuOCAwIDQxNmMwIDUzIDQzIDk2IDk2IDk2YzIwLjggMCA0MS02LjcgNTcuNi0xOS4ybDIxLjYtMTYuMnpNMTI4IDY0SDI4OFY0OGMwLTE0LjUgMy45LTI4LjIgMTAuNy0zOS45QzI5MSAzIDI4MS45IDAgMjcyIDBIMTc2Yy0yNi41IDAtNDggMjEuNS00OCA0OFY2NHpNMzIwIDk2VjI0MGMwIDIwLjEtOS41IDM5LjEtMjUuNiA1MS4ybC02NCA0OEMyMDYuMiAzNTcuMyAxOTIgMzg1LjggMTkyIDQxNmMwIDUzIDQzIDk2IDk2IDk2YzIwLjggMCA0MS02LjcgNTcuNi0xOS4ybDExNS4yLTg2LjRDNDkzIDM4Mi4yIDUxMiAzNDQuMyA1MTIgMzA0Vjk2SDMyMHpNNTEyIDY0VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDM2OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWNjRINTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb2xhclBhbmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyMi4yIDBDOTEuNyAwIDY1LjUgMjEuNSA1OS41IDUxLjRMOC4zIDMwNy40Qy40IDM0NyAzMC42IDM4NCA3MSAzODRIMjg4djY0SDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzUyVjM4NEg1NjljNDAuNCAwIDcwLjctMzYuOSA2Mi44LTc2LjZsLTUxLjItMjU2QzU3NC41IDIxLjUgNTQ4LjMgMCA1MTcuOCAwSDEyMi4yek0yNjAuOSA2NEgzNzkuMWwxMC40IDEwNGgtMTM5TDI2MC45IDY0ek0yMDIuMyAxNjhIMTAxLjRMMTIyLjIgNjRoOTAuNEwyMDIuMyAxNjh6TTkxLjggMjE2SDE5Ny41TDE4Ny4xIDMyMEg3MUw5MS44IDIxNnptMTUzLjkgMEgzOTQuM2wxMC40IDEwNC0xNjkuNCAwIDEwLjQtMTA0em0xOTYuOCAwSDU0OC4yTDU2OSAzMjBoLTExNkw0NDIuNSAyMTZ6bTk2LTQ4SDQzNy43TDQyNy4zIDY0aDkwLjRsMzEuNC02LjNMNTE3LjggNjRsMjAuOCAxMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Mi42IDQ3MC42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtMTI4LTEyOGMtOS4yLTkuMi0xMS45LTIyLjktNi45LTM0LjlzMTYuNi0xOS44IDI5LjYtMTkuOEgyODhjMTIuOSAwIDI0LjYgNy44IDI5LjYgMTkuOHMyLjIgMjUuNy02LjkgMzQuOWwtMTI4IDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ydFVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Mi42IDQxLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xMjggMTI4Yy05LjIgOS4yLTExLjkgMjIuOS02LjkgMzQuOXMxNi42IDE5LjggMjkuNiAxOS44SDI4OGMxMi45IDAgMjQuNi03LjggMjkuNi0xOS44czIuMi0yNS43LTYuOS0zNC45bC0xMjgtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzNy40IDQxLjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTI4IDEyOGM5LjIgOS4yIDExLjkgMjIuOSA2LjkgMzQuOXMtMTYuNiAxOS44LTI5LjYgMTkuOEgzMmMtMTIuOSAwLTI0LjYtNy44LTI5LjYtMTkuOHMtMi4yLTI1LjcgNi45LTM0LjlsMTI4LTEyOHptMCA0MjkuM2wtMTI4LTEyOGMtOS4yLTkuMi0xMS45LTIyLjktNi45LTM0LjlzMTYuNi0xOS44IDI5LjYtMTkuOEgyODhjMTIuOSAwIDI0LjYgNy44IDI5LjYgMTkuOHMyLjIgMjUuNy02LjkgMzQuOWwtMTI4IDEyOGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODMuMSAyMzUuM2MzMy43IDIwLjcgNjIuOSA0OC4xIDg1LjggODAuNWM3IDkuOSAxMy40IDIwLjMgMTkuMSAzMWM1LjctMTAuOCAxMi4xLTIxLjEgMTkuMS0zMWMyMi45LTMyLjQgNTIuMS01OS44IDg1LjgtODAuNUM0MzcuNiAyMDcuOCA0OTAuMSAxOTIgNTQ2IDE5Mmg5LjljMTEuMSAwIDIwLjEgOSAyMC4xIDIwLjFDNTc2IDM2MC4xIDQ1Ni4xIDQ4MCAzMDguMSA0ODBIMjg4IDI2Ny45QzExOS45IDQ4MCAwIDM2MC4xIDAgMjEyLjFDMCAyMDEgOSAxOTIgMjAuMSAxOTJIMzBjNTUuOSAwIDEwOC40IDE1LjggMTUzLjEgNDMuM3pNMzAxLjUgMzcuNmMxNS43IDE2LjkgNjEuMSA3MS44IDg0LjQgMTY0LjZjLTM4IDIxLjYtNzEuNCA1MC44LTk3LjkgODUuNmMtMjYuNS0zNC44LTU5LjktNjMuOS05Ny45LTg1LjZjMjMuMi05Mi44IDY4LjYtMTQ3LjcgODQuNC0xNjQuNkMyNzggMzMuOSAyODIuOSAzMiAyODggMzJzMTAgMS45IDEzLjUgNS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGFnaGV0dGlNb25zdGVyRmx5aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCA2NGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem00OCAwYzAgMTYuMi02IDMxLjEtMTYgNDIuM2wxNS42IDMxLjJjMTguNy02IDM5LjktOS41IDY0LjQtOS41czQ1LjggMy41IDY0LjQgOS41TDQwMCAxMDYuM0MzOTAgOTUuMSAzODQgODAuMiAzODQgNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NGMtMS43IDAtMy40LS4xLTUuMS0uMkw0MjcuOCAxNThjMjEuMSAxMy42IDM3LjcgMzAuMiA1MS40IDQ2LjRjNy4xIDguMyAxMy41IDE2LjYgMTkuMyAyNGwxLjQgMS44YzYuMyA4LjEgMTEuNiAxNC44IDE2LjcgMjAuNEM1MjcuMyAyNjIuMyA1MzIuNyAyNjQgNTM2IDI2NGMyLjUgMCA0LjMtLjYgNy4xLTMuM2MzLjctMy41IDcuMS04LjggMTIuNS0xNy40bC42LS45YzQuNi03LjQgMTEtMTcuNiAxOS40LTI1LjdjOS43LTkuMyAyMi45LTE2LjcgNDAuNC0xNi43YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0Yy0yLjUgMC00LjMgLjYtNy4xIDMuM2MtMy43IDMuNS03LjEgOC44LTEyLjUgMTcuNGwtLjYgLjljLTQuNiA3LjQtMTEgMTcuNi0xOS40IDI1LjdjLTkuNyA5LjMtMjIuOSAxNi43LTQwLjQgMTYuN2MtMTguNSAwLTMyLjktOC41LTQ0LjMtMTguNmMtMy4xIDQtNi42IDguMy0xMC41IDEyLjdjMS40IDQuMyAyLjggOC41IDQgMTIuNWMuOSAzIDEuOCA1LjggMi42IDguNmMzIDkuOCA1LjUgMTguMiA4LjYgMjUuOWMzLjkgOS44IDcuNCAxNS40IDEwLjggMTguNWMyLjYgMi40IDUuOSA0LjMgMTIuOCA0LjNjOC43IDAgMTYuOS00LjIgMzMuNy0xMy4yYzE1LTggMzUuNy0xOC44IDYyLjMtMTguOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGMtMTMuNCAwLTI0LjcgNS4yLTM5LjcgMTMuMmMtMSAuNi0yLjEgMS4xLTMuMiAxLjdDNTU5LjkgNDE0IDU0MS40IDQyNCA1MjAgNDI0Yy0xOC40IDAtMzMuNi02LjEtNDUuNS0xNy4yYy0xMS4xLTEwLjMtMTcuOS0yMy43LTIyLjctMzZjLTMuNi05LTYuNy0xOS4xLTkuNS0yOC41Yy0xNi40IDEyLjMtMzYuMSAyMy42LTU4LjkgMzEuM2MzLjYgMTAuOCA4LjQgMjMuNSAxNC40IDM2LjJjNy41IDE1LjkgMTYuMiAzMC40IDI1LjggNDAuNUM0MzMgNDYwLjUgNDQxLjIgNDY0IDQ0OCA0NjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRjLTI1LjIgMC00NS0xMy41LTU5LjUtMjguOGMtMTQuNS0xNS40LTI1LjctMzQuOS0zNC4yLTUzYy04LTE3LTE0LjEtMzMuOC0xOC4zLTQ2LjljLTUuMiAuNC0xMC42IC42LTE2IC42cy0xMC44LS4yLTE2LS42Yy00LjIgMTMtMTAuMyAyOS45LTE4LjMgNDYuOWMtOC41IDE4LjEtMTkuOCAzNy42LTM0LjIgNTNDMjM3IDQ5OC41IDIxNy4yIDUxMiAxOTIgNTEyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0YzYuOCAwIDE1LTMuNSAyNC41LTEzLjdjOS41LTEwLjEgMTguMy0yNC42IDI1LjgtNDAuNWM1LjktMTIuNiAxMC43LTI1LjQgMTQuNC0zNi4yYy0yMi44LTcuNy00Mi41LTE5LTU4LjktMzEuM2MtMi45IDkuNC02IDE5LjUtOS41IDI4LjVjLTQuOCAxMi4yLTExLjYgMjUuNi0yMi43IDM2QzE1My42IDQxNy45IDEzOC40IDQyNCAxMjAgNDI0Yy0yMS40IDAtMzkuOS0xMC01My4xLTE3LjFsMCAwYy0xLjEtLjYtMi4yLTEuMi0zLjItMS43Yy0xNS04LTI2LjMtMTMuMi0zOS43LTEzLjJjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRjMjYuNiAwIDQ3LjMgMTAuOCA2Mi4zIDE4LjhjMTYuOCA5IDI1IDEzLjIgMzMuNyAxMy4yYzYuOCAwIDEwLjItMS45IDEyLjgtNC4zYzMuNC0zLjIgNy04LjggMTAuOC0xOC41YzMtNy43IDUuNi0xNi4xIDguNi0yNS45Yy44LTIuNyAxLjctNS42IDIuNi04LjZjMS4yLTQgMi42LTguMiA0LTEyLjVjLTMuOS00LjUtNy40LTguOC0xMC41LTEyLjdDMTM2LjkgMzAzLjUgMTIyLjUgMzEyIDEwNCAzMTJjLTE3LjUgMC0zMC43LTcuNC00MC40LTE2LjdjLTguNC04LjEtMTQuOC0xOC4zLTE5LjQtMjUuN2wtLjYtLjljLTUuNC04LjYtOC44LTEzLjktMTIuNS0xNy40Yy0yLjgtMi43LTQuNi0zLjMtNy4xLTMuM2MtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGMxNy41IDAgMzAuNyA3LjQgNDAuNCAxNi43YzguNCA4LjEgMTQuOCAxOC4zIDE5LjQgMjUuN2wuNiAuOWM1LjQgOC42IDguOCAxMy45IDEyLjUgMTcuNGMyLjggMi43IDQuNiAzLjMgNy4xIDMuM2MzLjMgMCA4LjctMS43IDE5LjQtMTMuNGM1LjEtNS42IDEwLjQtMTIuMyAxNi43LTIwLjRsMS40LTEuOGM1LjgtNy40IDEyLjItMTUuNyAxOS4zLTI0YzEzLjgtMTYuMiAzMC4zLTMyLjggNTEuNC00Ni40bC0xNS4xLTMwLjJjLTEuNyAuMS0zLjQgLjItNS4xIC4yYy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0czY0IDI4LjcgNjQgNjR6bTIwOCAwYTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwZWxsQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDBDOTkuMSAwIDg3LjQgNy44IDgyLjUgMTkuN2wtNjYuNyAxNjAtMTMuMyAzMmMtNi44IDE2LjMgLjkgMzUgMTcuMiA0MS44czM1LS45IDQxLjgtMTcuMkw2Ni43IDIyNGg5MC43bDUuMSAxMi4zYzYuOCAxNi4zIDI1LjUgMjQgNDEuOCAxNy4yczI0LTI1LjUgMTcuMi00MS44bC0xMy4zLTMyLTY2LjctMTYwQzEzNi42IDcuOCAxMjQuOSAwIDExMiAwem0xOC43IDE2MEg5My4zTDExMiAxMTUuMiAxMzAuNyAxNjB6TTI1NiAzMnY5NiA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg4MGM0NC4yIDAgODAtMzUuOCA4MC04MGMwLTIzLjEtOS44LTQzLjgtMjUuNC01OC40YzYtMTEuMiA5LjQtMjQgOS40LTM3LjZjMC00NC4yLTM1LjgtODAtODAtODBIMjg4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnptOTYgNjRIMzIwVjY0aDMyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2em0tMzIgNjRoMzIgMTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzIwVjE2MHpNNTY2LjYgMzEwLjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMzUyIDQzNC43bC03My40LTczLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDk2IDk2YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE5Mi0xOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwaWRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTguNCAzMi42YzQuOC0xMi40LTEuNC0yNi4zLTEzLjgtMzFzLTI2LjMgMS40LTMxIDEzLjhMODEuMSAxMDBjLTcuOSAyMC43LTMgNDQuMSAxMi43IDU5LjdsNTcuNCA1Ny40TDcwLjggMTkwLjNjLTIuNC0uOC00LjMtMi43LTUuMS01LjFMNDYuOCAxMjguNEM0Mi42IDExNS44IDI5IDEwOSAxNi40IDExMy4yUy0zIDEzMSAxLjIgMTQzLjZsMTguOSA1Ni44YzUuNiAxNi43IDE4LjcgMjkuOCAzNS40IDM1LjRMMTE2LjEgMjU2IDU1LjYgMjc2LjJjLTE2LjcgNS42LTI5LjggMTguNy0zNS40IDM1LjRMMS4yIDM2OC40Qy0zIDM4MSAzLjggMzk0LjYgMTYuNCAzOTguOHMyNi4yLTIuNiAzMC40LTE1LjJsMTguOS01Ni44Yy44LTIuNCAyLjctNC4zIDUuMS01LjFsODAuNC0yNi44TDkzLjcgMzUyLjNDNzguMSAzNjggNzMuMSAzOTEuNCA4MS4xIDQxMmwzMi41IDg0LjZjNC44IDEyLjQgMTguNiAxOC41IDMxIDEzLjhzMTguNS0xOC42IDEzLjgtMzFsLTMyLjUtODQuNmMtMS4xLTMtLjQtNi4zIDEuOC04LjVMMTYwIDM1My45YzEgNTIuMSA0My42IDk0LjEgOTYgOTQuMXM5NS00MS45IDk2LTk0LjFsMzIuMyAzMi4zYzIuMiAyLjIgMi45IDUuNiAxLjggOC41bC0zMi41IDg0LjZjLTQuOCAxMi40IDEuNCAyNi4zIDEzLjggMzFzMjYuMy0xLjQgMzEtMTMuOEw0MzAuOSA0MTJjNy45LTIwLjcgMy00NC4xLTEyLjctNTkuN2wtNTcuNC01Ny40IDgwLjQgMjYuOGMyLjQgLjggNC4zIDIuNyA1LjEgNS4xbDE4LjkgNTYuOGM0LjIgMTIuNiAxNy44IDE5LjQgMzAuNCAxNS4yczE5LjQtMTcuOCAxNS4yLTMwLjRsLTE4LjktNTYuOGMtNS42LTE2LjctMTguNy0yOS44LTM1LjQtMzUuNEwzOTUuOSAyNTZsNjAuNS0yMC4yYzE2LjctNS42IDI5LjgtMTguNyAzNS40LTM1LjRsMTguOS01Ni44YzQuMi0xMi42LTIuNi0yNi4yLTE1LjItMzAuNHMtMjYuMiAyLjYtMzAuNCAxNS4ybC0xOC45IDU2LjhjLS44IDIuNC0yLjcgNC4zLTUuMSA1LjFsLTgwLjQgMjYuOCA1Ny40LTU3LjRjMTUuNi0xNS42IDIwLjYtMzkgMTIuNy01OS43TDM5OC40IDE1LjRDMzkzLjYgMyAzNzkuOC0zLjIgMzY3LjQgMS42cy0xOC41IDE4LjYtMTMuOCAzMWwzMi41IDg0LjZjMS4xIDMgLjQgNi4zLTEuOCA4LjVMMzM2IDE3NC4xVjE2MGMwLTMxLjgtMTguNi01OS4zLTQ1LjUtNzIuMmMtOS4xLTQuNC0xOC41IDMuMy0xOC41IDEzLjRWMTEyYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjEwMS4yYzAtMTAuMS05LjQtMTcuNy0xOC41LTEzLjRDMTk0LjYgMTAwLjcgMTc2IDEyOC4yIDE3NiAxNjB2MTQuMWwtNDguMy00OC4zYy0yLjItMi4yLTIuOS01LjYtMS44LTguNWwzMi41LTg0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwaW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDQ4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6bTAgNDE2YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTQ4IDMwNGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTQ2NC00OGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0xNDIuOSA0MzdBNDggNDggMCAxIDAgNzUgMzY5LjEgNDggNDggMCAxIDAgMTQyLjkgNDM3em0wLTI5NC4yQTQ4IDQ4IDAgMSAwIDc1IDc1YTQ4IDQ4IDAgMSAwIDY3LjkgNjcuOXpNMzY5LjEgNDM3QTQ4IDQ4IDAgMSAwIDQzNyAzNjkuMSA0OCA0OCAwIDEgMCAzNjkuMSA0Mzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwbG90Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4LjUgNjIuM2wyOC4xLTM2LjlDMjQ4LjggOS40IDI2Ny44IDAgMjg4IDBjMjguNSAwIDUzLjYgMTguNyA2MS44IDQ2bDE3LjggNTkuNGMxMC4zIDM0LjQgMzYuMSA2MiA2OS44IDc0LjZsMzkuOCAxNC45YzIwLjkgNy45IDM0LjggMjcuOSAzNC44IDUwLjJjMCAxNi45LTcuOSAzMi44LTIxLjUgNDIuOWwtNjcuMyA1MC41Yy0yNC4zIDE4LjItMzcuMiA0Ny45LTMzLjggNzguMWwyLjUgMjIuN2M0LjMgMzguNy0yNiA3Mi42LTY1IDcyLjZjLTE0LjggMC0yOS4zLTUuMS00MC44LTE0LjNsLTU1LjQtNDQuM2MtNC41LTMuNi05LjMtNi43LTE0LjUtOS4yYy0xNS44LTcuOS0zMy43LTEwLjQtNTEtNy4zTDgyLjQgNDUxLjlDNDcuOCA0NTguMiAxNiA0MzEuNiAxNiAzOTYuNWMwLTEzLjIgNC43LTI2IDEzLjEtMzYuMmwxMS4yLTEzLjRjMTQuNi0xNy40IDIyLjYtMzkuNCAyMi42LTYyLjFjMC0xOC44LTUuNS0zNy4yLTE1LjgtNTNMOC44IDE3My41QzMuMSAxNjQuNyAwIDE1NC40IDAgMTQzLjljMC0zMy40IDMwLjEtNTguOCA2My01My4ybDUxLjMgOC43YzM1LjkgNi4xIDcyLjItOC4yIDk0LjItMzcuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Bvb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ1LjggMjIwLjljLTE0LjUtMTcuNi0yMS44LTM5LjItMjEuOC02MC44QzIyNCA4MCAzMjAgMCA0MTYgMGM1MyAwIDk2IDQzIDk2IDk2YzAgOTYtODAgMTkyLTE2MC4yIDE5MmMtMjEuNiAwLTQzLjItNy4zLTYwLjgtMjEuOEw1NC42IDUwMi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wyNDUuOCAyMjAuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3ByYXlDYW5TcGFya2xlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAzMnY5NkgyMjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMTI4QzExMC4zIDAgOTYgMTQuMyA5NiAzMnptMCAxMjhjLTUzIDAtOTYgNDMtOTYgOTZWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDI3MmMyNi41IDAgNDgtMjEuNSA0OC00OFYyNTZjMC01My00My05Ni05Ni05Nkg5NnptNjQgOTZhODAgODAgMCAxIDEgMCAxNjAgODAgODAgMCAxIDEgMC0xNjB6TTM4NCA0OGMwLTEuNC0xLTMtMi4yLTMuNkwzNTIgMzIgMzM5LjYgMi4yQzMzOSAxIDMzNy40IDAgMzM2IDBzLTMgMS0zLjYgMi4yTDMyMCAzMiAyOTAuMiA0NC40QzI4OSA0NSAyODggNDYuNiAyODggNDhjMCAxLjQgMSAzIDIuMiAzLjZMMzIwIDY0bDEyLjQgMjkuOEMzMzMgOTUgMzM0LjYgOTYgMzM2IDk2czMtMSAzLjYtMi4yTDM1MiA2NGwyOS44LTEyLjRDMzgzIDUxIDM4NCA0OS40IDM4NCA0OHptNzYuNCA0NS44QzQ2MSA5NSA0NjIuNiA5NiA0NjQgOTZzMy0xIDMuNi0yLjJMNDgwIDY0bDI5LjgtMTIuNEM1MTEgNTEgNTEyIDQ5LjQgNTEyIDQ4YzAtMS40LTEtMy0yLjItMy42TDQ4MCAzMiA0NjcuNiAyLjJDNDY3IDEgNDY1LjQgMCA0NjQgMHMtMyAxLTMuNiAyLjJMNDQ4IDMyIDQxOC4yIDQ0LjRDNDE3IDQ1IDQxNiA0Ni42IDQxNiA0OGMwIDEuNCAxIDMgMi4yIDMuNkw0NDggNjRsMTIuNCAyOS44em03LjIgMTAwLjRjLS42LTEuMi0yLjItMi4yLTMuNi0yLjJzLTMgMS0zLjYgMi4yTDQ0OCAyMjRsLTI5LjggMTIuNGMtMS4yIC42LTIuMiAyLjItMi4yIDMuNmMwIDEuNCAxIDMgMi4yIDMuNkw0NDggMjU2bDEyLjQgMjkuOGMuNiAxLjIgMi4yIDIuMiAzLjYgMi4yczMtMSAzLjYtMi4yTDQ4MCAyNTZsMjkuOC0xMi40YzEuMi0uNiAyLjItMi4yIDIuMi0zLjZjMC0xLjQtMS0zLTIuMi0zLjZMNDgwIDIyNGwtMTIuNC0yOS44ek00NDggMTQ0YzAtMS40LTEtMy0yLjItMy42TDQxNiAxMjggNDAzLjYgOTguMkM0MDMgOTcgNDAxLjQgOTYgNDAwIDk2cy0zIDEtMy42IDIuMkwzODQgMTI4bC0yOS44IDEyLjRjLTEuMiAuNi0yLjIgMi4yLTIuMiAzLjZjMCAxLjQgMSAzIDIuMiAzLjZMMzg0IDE2MGwxMi40IDI5LjhjLjYgMS4yIDIuMiAyLjIgMy42IDIuMnMzLTEgMy42LTIuMkw0MTYgMTYwbDI5LjgtMTIuNGMxLjItLjYgMi4yLTIuMiAyLjItMy42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcHJheUNhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMGg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5Nkg5NlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMCAyNTZjMC01MyA0My05NiA5Ni05NkgyMjRjNTMgMCA5NiA0MyA5NiA5NlY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjI1NnptMjQwIDgwQTgwIDgwIDAgMSAwIDgwIDMzNmE4MCA4MCAwIDEgMCAxNjAgMHpNMjU2IDY0YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTM4NCAzMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTY0IDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTMyIDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNNDQ4IDI1NmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek0zODQgMTI4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlQXJyb3dVcFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NHpNMTYwIDE0NGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg5NC4xTDExOSAzMjdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGwxMzUtMTM1VjMyOGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjE2OGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUNhcmV0RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgNDgwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDB6TTIyNCAzNTJjLTYuNyAwLTEzLTIuOC0xNy42LTcuN2wtMTA0LTExMmMtNi41LTctOC4yLTE3LjItNC40LTI1LjlzMTIuNS0xNC40IDIyLTE0LjRsMjA4IDBjOS41IDAgMTguMiA1LjcgMjIgMTQuNHMyLjEgMTguOS00LjQgMjUuOWwtMTA0IDExMmMtNC41IDQuOS0xMC45IDcuNy0xNy42IDcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlQ2FyZXRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZ6TTEyOCAyNTZjMC02LjcgMi44LTEzIDcuNy0xNy42bDExMi0xMDRjNy02LjUgMTcuMi04LjIgMjUuOS00LjRzMTQuNCAxMi41IDE0LjQgMjJsMCAyMDhjMCA5LjUtNS43IDE4LjItMTQuNCAyMnMtMTguOSAyLjEtMjUuOS00LjRsLTExMi0xMDRjLTQuOS00LjUtNy43LTEwLjktNy43LTE3LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUNhcmV0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjB6TTMyMCAyNTZjMCA2LjctMi44IDEzLTcuNyAxNy42bC0xMTIgMTA0Yy03IDYuNS0xNy4yIDguMi0yNS45IDQuNHMtMTQuNC0xMi41LTE0LjQtMjJsMC0yMDhjMC05LjUgNS43LTE4LjIgMTQuNC0yMnMxOC45LTIuMSAyNS45IDQuNGwxMTIgMTA0YzQuOSA0LjUgNy43IDEwLjkgNy43IDE3LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUNhcmV0VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yMjQgMTYwYzYuNyAwIDEzIDIuOCAxNy42IDcuN2wxMDQgMTEyYzYuNSA3IDguMiAxNy4yIDQuNCAyNS45cy0xMi41IDE0LjQtMjIgMTQuNEgxMjBjLTkuNSAwLTE4LjItNS43LTIyLTE0LjRzLTIuMS0xOC45IDQuNC0yNS45bDEwNC0xMTJjNC41LTQuOSAxMC45LTcuNyAxNy42LTcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0zMzcgMjA5TDIwOSAzMzdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC02NC02NGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDQ3IDQ3TDMwMyAxNzVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVFbnZlbG9wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTIxOCAyNzEuN0w2NC4yIDE3Mi40QzY2IDE1Ni40IDc5LjUgMTQ0IDk2IDE0NEgzNTJjMTYuNSAwIDMwIDEyLjQgMzEuOCAyOC40TDIzMCAyNzEuN2MtMS44IDEuMi0zLjkgMS44LTYgMS44cy00LjItLjYtNi0xLjh6bTI5LjQgMjYuOUwzODQgMjEwLjRWMzM2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyMTAuNGwxMzYuNiA4OC4yYzcgNC41IDE1LjEgNi45IDIzLjQgNi45czE2LjQtMi40IDIzLjQtNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMEg1MTJWNTEySDBWMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlSCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTMzNiAxNTJWMjU2IDM2MGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYyODBIMTYwbDAgODBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC0yMDhjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY4MEgyODhWMTUyYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZU1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHptODggMjAwSDI5NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgxNTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZU5maSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2em03NS43IDY0LjZDNjguOCAxNjIuNSA2NCAxNjguOCA2NCAxNzZWMzM2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjMzLjhsNjYuMyAxMTAuNWMzLjcgNi4yIDExLjEgOS4xIDE4IDcuMnMxMS43LTguMiAxMS43LTE1LjRWMTc2YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjI3OC4yTDkzLjcgMTY3LjhjLTMuNy02LjItMTEuMS05LjEtMTgtNy4yek0yMjQgMTc2djY0IDk2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjU2aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDI1NlYxOTJoNDhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMjQwYy04LjggMC0xNiA3LjItMTYgMTZ6bTE2MCAwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjMzNmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjE3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUGFya2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTE5MiAyNTZoNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkydjY0em00OCA2NEgxOTJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjg4IDE2OGMwLTIyLjEgMTcuOS00MCA0MC00MGg3MmM1MyAwIDk2IDQzIDk2IDk2cy00MyA5Ni05NiA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMzI1LjggMTM5LjdsMTQuNCAxNC40YzE1LjYgMTUuNiAxNS42IDQwLjkgMCA1Ni42bC0yMS40IDIxLjQtNzEtNzEgMjEuNC0yMS40YzE1LjYtMTUuNiA0MC45LTE1LjYgNTYuNiAwek0xMTkuOSAyODlMMjI1LjEgMTgzLjhsNzEgNzFMMTkwLjkgMzU5LjljLTQuMSA0LjEtOS4yIDctMTQuOSA4LjRsLTYwLjEgMTVjLTUuNSAxLjQtMTEuMi0uMi0xNS4yLTQuMnMtNS42LTkuNy00LjItMTUuMmwxNS02MC4xYzEuNC01LjYgNC4zLTEwLjggOC40LTE0Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVBlcnNvbkNvbmZpbmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHptOTYgMTEyYTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTgwIDEwNGMwLTMwLjkgMjUuMS01NiA1Ni01NnM1NiAyNS4xIDU2IDU2VjM1MC4xYzAgMzYuNC0yOS41IDY1LjktNjUuOSA2NS45Yy0xNy41IDAtMzQuMy02LjktNDYuNi0xOS4zTDE4NC44IDM0MmwtMjguMSA1Ni4zYy03LjkgMTUuOC0yNy4xIDIyLjItNDIuOSAxNC4zcy0yMi4yLTI3LjEtMTQuMy00Mi45bDQ4LTk2YzQuNi05LjIgMTMuMy0xNS42IDIzLjUtMTcuM3MyMC41IDEuNyAyNy44IDlMMjQwIDMwNi43VjI0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUGhvbmVGbGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NHptLTkwLjcgOTYuN2MtOS43LTIuNi0xOS45IDIuMy0yMy43IDExLjZsLTIwIDQ4Yy0zLjQgOC4yLTEgMTcuNiA1LjggMjMuMkwyODAgMjMxLjdjLTE2LjYgMzUuMi00NS4xIDYzLjctODAuMyA4MC4zbC0yMC4yLTI0LjdjLTUuNi02LjgtMTUtOS4yLTIzLjItNS44bC00OCAyMGMtOS4zIDMuOS0xNC4yIDE0LTExLjYgMjMuN2wxMiA0NEMxMTEuMSAzNzggMTE5IDM4NCAxMjggMzg0YzEyMy43IDAgMjI0LTEwMC4zIDIyNC0yMjRjMC05LTYtMTYuOS0xNC43LTE5LjNsLTQ0LTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTkwLjcgOTYuN2M5LjctMi42IDE5LjkgMi4zIDIzLjcgMTEuNmwyMCA0OGMzLjQgOC4yIDEgMTcuNi01LjggMjMuMkwxNjggMjMxLjdjMTYuNiAzNS4yIDQ1LjEgNjMuNyA4MC4zIDgwLjNsMjAuMi0yNC43YzUuNi02LjggMTUtOS4yIDIzLjItNS44bDQ4IDIwYzkuMyAzLjkgMTQuMiAxNCAxMS42IDIzLjdsLTEyIDQ0QzMzNi45IDM3OCAzMjkgMzg0IDMyMCAzODRDMTk2LjMgMzg0IDk2IDI4My43IDk2IDE2MGMwLTkgNi0xNi45IDE0LjctMTkuM2w0NC0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTIwMCAzNDRWMjgwSDEzNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg2NFYxNjhjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY2NGg2NGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNDh2NjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVBvbGxIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwek0yNTYgMTYwYzAgMTcuNy0xNC4zIDMyLTMyIDMybC05NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6bTY0IDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xOTIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwxOTIgMHpNMTkyIDM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwzMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVQb2xsVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em02NCAxOTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMyem02NC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNjB6TTMyMCAyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVSb290VmFyaWFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjgyLjYgNzguMWM4LTI3LjMgMzMtNDYuMSA2MS40LTQ2LjFINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM0NEwyMzguNyA0NTdjLTMuNiAxMi4zLTE0LjEgMjEuMi0yNi44IDIyLjhzLTI1LjEtNC42LTMxLjUtMTUuNkw3Ny42IDI4OEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg3Ny42YzIyLjggMCA0My44IDEyLjEgNTUuMyAzMS44bDY1LjIgMTExLjhMMjgyLjYgNzguMXpNMzkzLjQgMjMzLjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBMNDgwIDI3NC43bDQxLjQtNDEuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zTDUyNS4zIDMyMGw0MS40IDQxLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMNDgwIDM2NS4zbC00MS40IDQxLjRjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDQzNC43IDMyMGwtNDEuNC00MS40Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUnNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNOTYgMTM2YzAtMTMuMyAxMC43LTI0IDI0LTI0YzEzNyAwIDI0OCAxMTEgMjQ4IDI0OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTExMC41LTg5LjUtMjAwLTIwMC0yMDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0wIDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0YzgzLjkgMCAxNTIgNjguMSAxNTIgMTUyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtNTcuNC00Ni42LTEwNC0xMDQtMTA0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptMCAxMjBhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlU2hhcmVOb2RlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTM4NCAxNjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRjLTE1LjQgMC0yOS41LTUuNC00MC42LTE0LjVMMTk0LjEgMjU2bDg1LjMgNDYuNWMxMS05LjEgMjUuMi0xNC41IDQwLjYtMTQuNWMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NHMtNjQtMjguNy02NC02NGMwLTIuNSAuMS00LjkgLjQtNy4zTDE3NC41IDMwMGMtMTEuNyAxMi4zLTI4LjIgMjAtNDYuNSAyMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRzMjguNy02NCA2NC02NGMxOC4zIDAgMzQuOCA3LjcgNDYuNSAyMGw4MS45LTQ0LjdjLS4zLTIuNC0uNC00LjktLjQtNy4zYzAtMzUuMyAyOC43LTY0IDY0LTY0czY0IDI4LjcgNjQgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVVwUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMzg0ek0zMjAgMzEzLjRWMTc2YzAtOC44LTcuMi0xNi0xNi0xNkgxNjYuNmMtMTIuNSAwLTIyLjYgMTAuMS0yMi42IDIyLjZjMCA2IDIuNCAxMS44IDYuNiAxNkwxODQgMjMybC02Ni4zIDY2LjNDMTE0IDMwMiAxMTIgMzA2LjkgMTEyIDMxMnMyIDEwIDUuNyAxMy43bDM2LjcgMzYuN2MzLjYgMy42IDguNSA1LjcgMTMuNyA1LjdzMTAtMiAxMy43LTUuN0wyNDggMjk2bDMzLjQgMzMuNGM0LjIgNC4yIDEwIDYuNiAxNiA2LjZjMTIuNSAwIDIyLjYtMTAuMSAyMi42LTIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjIzLjggOTMuN2MxMy4zIDAgMjQgMTAuNyAyNCAyNGMwIDI5LjMgMzUuNCA0My45IDU2LjEgMjMuMmM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjljLTIwLjcgMjAuNy02IDU2LjEgMjMuMiA1Ni4xYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0Yy0yOS4zIDAtNDMuOSAzNS40LTIzLjIgNTYuMWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwYy0yMC43LTIwLjctNTYuMS02LTU2LjEgMjMuMmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTI5LjMtMzUuNC00My45LTU2LjEtMjMuMmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWMyMC43LTIwLjcgNi01Ni4xLTIzLjItNTYuMWMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGMyOS4zIDAgNDMuOS0zNS40IDIzLjItNTYuMWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwYzIwLjcgMjAuNyA1Ni4xIDYgNTYuMS0yMy4yYzAtMTMuMyAxMC43LTI0IDI0LTI0ek0xOTIgMjU2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptODggMzJhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em03OSAxNDNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsNDcgNDcgNDctNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC00NyA0NyA0NyA0N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00Ny00Ny00NyA0N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0Ny00Ny00Ny00N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFmZlNuYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyMi42IDQzLjJsLS4xIDQuOEgyODhjNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTZIMjQ4VjE2MGg0MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgyNDggMjIwbC00LjUgMTQ0SDI1NmM1MyAwIDk2IDQzIDk2IDk2cy00MyA5Ni05NiA5NkgyNDBWMzg0aDE2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDIxM2wtMy4xIDk5LjVMMjA4LjUgNDk1bDAgMWMtLjMgOC45LTcuNiAxNi0xNi41IDE2cy0xNi4yLTcuMS0xNi41LTE2bDAtMS0xLTMxSDEzNmMtMjIuMSAwLTQwLTE3LjktNDAtNDBzMTcuOS00MCA0MC00MGgzNmwtMS0zMkgxNTJjLTUzIDAtOTYtNDMtOTYtOTZjMC00Ny42IDM0LjYtODcuMSA4MC05NC43VjI1NmMwIDguOCA3LjIgMTYgMTYgMTZoMTYuNUwxNjQgMTI4SDEzNiAxMjIuNmMtOSAxOC45LTI4LjMgMzItNTAuNiAzMkg1NmMtMzAuOSAwLTU2LTI1LjEtNTYtNTZTMjUuMSA0OCA1NiA0OGg4IDggODkuNWwtLjEtNC44TDE2MSAzMmMwLS43IDAtMS4zIDAtMS45Yy41LTE2LjYgMTQuMS0zMCAzMS0zMHMzMC41IDEzLjQgMzEgMzBjMCAuNiAwIDEuMyAwIDEuOWwtLjQgMTEuMnpNNjQgMTEyYTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhaXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDQ4djk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyMHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxOTJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoOTZWMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDk2VjE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMmg5NlY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhbXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEyIDIwMS44YzAtMTcuNCA5LjItMzMuMiAxOS45LTQ3QzM0NC41IDEzOC41IDM1MiAxMTguMSAzNTIgOTZjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAyMi4xIDcuNSA0Mi41IDIwLjEgNTguOGMxMC43IDEzLjggMTkuOSAyOS42IDE5LjkgNDdjMCAyOS45LTI0LjMgNTQuMi01NC4yIDU0LjJIMTEyQzUwLjEgMjU2IDAgMzA2LjEgMCAzNjhjMCAyMC45IDEzLjQgMzguNyAzMiA0NS4zVjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0MzJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDEzLjNjMTguNi02LjYgMzItMjQuNCAzMi00NS4zYzAtNjEuOS01MC4xLTExMi0xMTItMTEySDM2Ni4yYy0yOS45IDAtNTQuMi0yNC4zLTU0LjItNTQuMnpNNDE2IDQxNnYzMkg5NlY0MTZINDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFwbGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAyOTkuM1YzMDQgNDMyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDUxMiA0NDggNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDQ4VjM2OEg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjE5LjRMMzMuOCAyMTRDMTQuMiAyMTAuNSAwIDE5My41IDAgMTczLjdjMC04LjkgMi45LTE3LjUgOC4yLTI0LjZsMzUuNi00Ny41Qzc2LjcgNTcuOCAxMjguMiAzMiAxODIuOSAzMmMyNyAwIDUzLjYgNi4zIDc3LjggMTguNEw1ODYuOSAyMTMuNUM2MTkuNSAyMjkuNyA2NDAgMjYzIDY0MCAyOTkuM3pNNDQ4IDMwNFYyODhMMTI4IDIzMC45VjMwNEg0NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YXJBbmRDcmVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NkMwIDExNC42IDExNC42IDAgMjU2IDBjMzMgMCA2NC42IDYuMyA5My42IDE3LjdjNy40IDIuOSAxMS41IDEwLjcgOS44IDE4LjRzLTguOCAxMy0xNi43IDEyLjRjLTQuOC0uMy05LjctLjUtMTQuNi0uNWMtMTE0LjkgMC0yMDggOTMuMS0yMDggMjA4czkzLjEgMjA4IDIwOCAyMDhjNC45IDAgOS44LS4yIDE0LjYtLjVjNy45LS41IDE1IDQuNyAxNi43IDEyLjRzLTIuNCAxNS41LTkuOCAxOC40QzMyMC42IDUwNS43IDI4OSA1MTIgMjU2IDUxMkMxMTQuNiA1MTIgMCAzOTcuNCAwIDI1NnpNMzc1LjQgMTM3LjRjMy41LTcuMSAxMy43LTcuMSAxNy4yIDBsMzEuNSA2My44YzEuNCAyLjggNC4xIDQuOCA3LjIgNS4zbDcwLjQgMTAuMmM3LjkgMS4xIDExIDEwLjggNS4zIDE2LjRsLTUwLjkgNDkuNmMtMi4zIDIuMi0zLjMgNS40LTIuOCA4LjVsMTIgNzAuMWMxLjMgNy44LTYuOSAxMy44LTEzLjkgMTAuMWwtNjMtMzMuMWMtMi44LTEuNS02LjEtMS41LTguOSAwbC02MyAzMy4xYy03IDMuNy0xNS4zLTIuMy0xMy45LTEwLjFsMTItNzAuMWMuNS0zLjEtLjUtNi4zLTIuOC04LjVMMjYxIDIzMy4xYy01LjctNS42LTIuNi0xNS4yIDUuMy0xNi40bDcwLjQtMTAuMmMzLjEtLjUgNS44LTIuNCA3LjItNS4zbDMxLjUtNjMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhckhhbGZTdHJva2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDM3Ni40bC4xLS4xIDI2LjQgMTQuMSA4NS4yIDQ1LjUtMTYuNS05Ny42LTQuOC0yOC43IDIwLjctMjAuNSA3MC4xLTY5LjMtOTYuMS0xNC4yLTI5LjMtNC4zLTEyLjktMjYuNkwyODguMSA4Ni45bC0uMSAuM1YzNzYuNHptMTc1LjEgOTguM2MyIDEyLTMgMjQuMi0xMi45IDMxLjNzLTIzIDgtMzMuOCAyLjNMMjg4LjEgNDM5LjggMTU5LjggNTA4LjNDMTQ5IDUxNCAxMzUuOSA1MTMuMSAxMjYgNTA2cy0xNC45LTE5LjMtMTIuOS0zMS4zTDEzNy44IDMyOSAzMy42IDIyNS45Yy04LjYtOC41LTExLjctMjEuMi03LjktMzIuN3MxMy43LTE5LjkgMjUuNy0yMS43TDE5NSAxNTAuMyAyNTkuNCAxOGM1LjQtMTEgMTYuNS0xOCAyOC44LTE4czIzLjQgNyAyOC44IDE4bDY0LjMgMTMyLjMgMTQzLjYgMjEuMmMxMiAxLjggMjIgMTAuMiAyNS43IDIxLjdzLjcgMjQuMi03LjkgMzIuN0w0MzguNSAzMjlsMjQuNiAxNDUuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhckhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBjLTEyLjIgLjEtMjMuMyA3LTI4LjYgMThMMTk1IDE1MC4zIDUxLjQgMTcxLjVjLTEyIDEuOC0yMiAxMC4yLTI1LjcgMjEuN3MtLjcgMjQuMiA3LjkgMzIuN0wxMzcuOCAzMjkgMTEzLjIgNDc0LjdjLTIgMTIgMyAyNC4yIDEyLjkgMzEuM3MyMyA4IDMzLjggMi4zTDI4OCA0MzkuOFYwek00MjkuOSA1MTJjMS4xIC4xIDIuMSAuMSAzLjIgMGgtMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFyT2ZEYXZpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDQuMiAzMDkuNUwzODMuMSAzNDRoNDIuM2wtMjEuMS0zNC41ek0zNzEuNCAyNTZsLTU0LTg4SDE5NC42bC01NCA4OCA1NCA4OEgzMTcuNGw1NC04OHptNjUuNyAwbDUzLjQgODdjMy42IDUuOSA1LjUgMTIuNyA1LjUgMTkuNmMwIDIwLjctMTYuOCAzNy40LTM3LjQgMzcuNEgzNDguN2wtNTYuMiA5MS41QzI4NC44IDUwNC4zIDI3MC45IDUxMiAyNTYgNTEycy0yOC44LTcuNy0zNi42LTIwLjVMMTYzLjMgNDAwSDUzLjRDMzIuOCA0MDAgMTYgMzgzLjIgMTYgMzYyLjZjMC02LjkgMS45LTEzLjcgNS41LTE5LjZsNTMuNC04N0wyMS41IDE2OWMtMy42LTUuOS01LjUtMTIuNy01LjUtMTkuNkMxNiAxMjguOCAzMi44IDExMiA1My40IDExMkgxNjMuM2w1Ni4yLTkxLjVDMjI3LjIgNy43IDI0MS4xIDAgMjU2IDBzMjguOCA3LjcgMzYuNiAyMC41TDM0OC43IDExMkg0NTguNmMyMC43IDAgMzcuNCAxNi44IDM3LjQgMzcuNGMwIDYuOS0xLjkgMTMuNy01LjUgMTkuNmwtNTMuNCA4N3ptLTU0LTg4bDIxLjEgMzQuNUw0MjUuNCAxNjhIMzgzLjF6TTI4MyAxMTJMMjU2IDY4bC0yNyA0NGg1NHpNMTI4LjkgMTY4SDg2LjZsMjEuMSAzNC41TDEyOC45IDE2OHpNMTA3LjggMzA5LjVMODYuNiAzNDRoNDIuM2wtMjEuMS0zNC41ek0yMjkgNDAwbDI3IDQ0IDI3LTQ0SDIyOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Rhck9mTGlmZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggMzJjMC0xNy43IDE0LjMtMzIgMzItMzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMTcyLjlsMTIyLTcwLjRjMTUuMy04LjggMzQuOS0zLjYgNDMuNyAxMS43bDE2IDI3LjdjOC44IDE1LjMgMy42IDM0LjktMTEuNyA0My43TDM1MiAyNTZsMTIyIDcwLjRjMTUuMyA4LjggMjAuNSAyOC40IDExLjcgNDMuN2wtMTYgMjcuN2MtOC44IDE1LjMtMjguNCAyMC42LTQzLjcgMTEuN0wzMDQgMzM5LjFWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDI0MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzM5LjFMODYgNDA5LjZjLTE1LjMgOC44LTM0LjkgMy42LTQzLjctMTEuN2wtMTYtMjcuN2MtOC44LTE1LjMtMy42LTM0LjkgMTEuNy00My43TDE2MCAyNTYgMzggMTg1LjZjLTE1LjMtOC44LTIwLjUtMjguNC0xMS43LTQzLjdsMTYtMjcuN0M1MS4xIDk4LjggNzAuNyA5My42IDg2IDEwMi40bDEyMiA3MC40VjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxNi45IDE4QzMxMS42IDcgMzAwLjQgMCAyODguMSAwcy0yMy40IDctMjguOCAxOEwxOTUgMTUwLjMgNTEuNCAxNzEuNWMtMTIgMS44LTIyIDEwLjItMjUuNyAyMS43cy0uNyAyNC4yIDcuOSAzMi43TDEzNy44IDMyOSAxMTMuMiA0NzQuN2MtMiAxMiAzIDI0LjIgMTIuOSAzMS4zczIzIDggMzMuOCAyLjNsMTI4LjMtNjguNSAxMjguMyA2OC41YzEwLjggNS43IDIzLjkgNC45IDMzLjgtMi4zczE0LjktMTkuMyAxMi45LTMxLjNMNDM4LjUgMzI5IDU0Mi43IDIyNS45YzguNi04LjUgMTEuNy0yMS4yIDcuOS0zMi43cy0xMy43LTE5LjktMjUuNy0yMS43TDM4MS4yIDE1MC4zIDMxNi45IDE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGVybGluZ1NpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDE2MC40YzAtMzUuNSAyOC44LTY0LjQgNjQuNC02NC40YzYuOSAwIDEzLjggMS4xIDIwLjQgMy4zbDgxLjIgMjcuMWMxNi44IDUuNiAzNC45LTMuNSA0MC41LTIwLjJzLTMuNS0zNC45LTIwLjItNDAuNUwyMTcgMzguNmMtMTMuMS00LjQtMjYuOC02LjYtNDAuNi02LjZDMTA1LjUgMzIgNDggODkuNSA0OCAxNjAuNFYyMjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDh2NDQuNWMwIDE3LjQtNC43IDM0LjUtMTMuNyA0OS40TDQuNiA0MzEuNWMtNS45IDkuOS02LjEgMjIuMi0uNCAzMi4yUzIwLjUgNDgwIDMyIDQ4MEgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIODguNWwuNy0xLjFDMTA0LjEgMzkwIDExMiAzNjEuNSAxMTIgMzMyLjVWMjg4SDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxMTJWMTYwLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0ZXRob3Njb3BlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0Mi40IDIxLjljNS42IDE2LjgtMy41IDM0LjktMjAuMiA0MC41TDk2IDcxLjFWMTkyYzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZWNzEuMWwtMjYuMS04LjdjLTE2LjgtNS42LTI1LjgtMjMuNy0yMC4yLTQwLjVzMjMuNy0yNS44IDQwLjUtMjAuMmwyNi4xIDguN0MzMzQuNCAxOS4xIDM1MiA0My41IDM1MiA3MS4xVjE5MmMwIDc3LjItNTQuNiAxNDEuNi0xMjcuMyAxNTYuN0MyMzEgNDA0LjYgMjc4LjQgNDQ4IDMzNiA0NDhjNjEuOSAwIDExMi01MC4xIDExMi0xMTJWMjY1LjNjLTI4LjMtMTIuMy00OC00MC41LTQ4LTczLjNjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGMwIDMyLjgtMTkuNyA2MS00OCA3My4zVjMzNmMwIDk3LjItNzguOCAxNzYtMTc2IDE3NmMtOTIuOSAwLTE2OC45LTcxLjktMTc1LjUtMTYzLjFDODcuMiAzMzQuMiAzMiAyNjkuNiAzMiAxOTJWNzEuMWMwLTI3LjUgMTcuNi01MiA0My44LTYwLjdsMjYuMS04LjdjMTYuOC01LjYgMzQuOSAzLjUgNDAuNSAyMC4yek00ODAgMjI0YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3B3YXRjaDIwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDE2Vjk4LjRDOTIuMyAxMTMuOCAxNiAyMDAgMTYgMzA0YzAgMTE0LjkgOTMuMSAyMDggMjA4IDIwOHMyMDgtOTMuMSAyMDgtMjA4YzAtNDEuOC0xMi4zLTgwLjctMzMuNS0xMTMuMmwyNC4xLTI0LjFjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMzU1LjcgMTQzYy0yOC4xLTIzLTYyLjItMzguOC05OS43LTQ0LjZWNjRoMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTc2ek0yODggMjA0YzI4LjcgMCA1MiAyMy4zIDUyIDUydjk2YzAgMjguNy0yMy4zIDUyLTUyIDUycy01Mi0yMy4zLTUyLTUyVjI1NmMwLTI4LjcgMjMuMy01MiA1Mi01MnptLTEyIDUydjk2YzAgNi42IDUuNCAxMiAxMiAxMnMxMi01LjQgMTItMTJWMjU2YzAtNi42LTUuNC0xMi0xMi0xMnMtMTIgNS40LTEyIDEyek0xNTkuNSAyNDRjLTUuNCAwLTEwLjIgMy41LTExLjkgOC42bC0uNiAxLjdjLTMuNSAxMC41LTE0LjggMTYuMS0yNS4zIDEyLjZzLTE2LjEtMTQuOC0xMi42LTI1LjNsLjYtMS43YzcuMi0yMS41IDI3LjItMzUuOSA0OS44LTM1LjljMjkgMCA1Mi41IDIzLjUgNTIuNSA1Mi41djIuMmMwIDEzLjQtNC45IDI2LjQtMTMuOCAzNi40bC0zOSA0My45Yy02LjIgNy0xMCAxNS43LTEwLjkgMjQuOUgxOTJjMTEgMCAyMCA5IDIwIDIwcy05IDIwLTIwIDIwSDEyOGMtMTEgMC0yMC05LTIwLTIwVjM2OC4zYzAtMjAuNiA3LjUtNDAuNCAyMS4yLTU1LjhsMzktNDMuOWMyLjQtMi43IDMuNy02LjIgMy43LTkuOHYtMi4yYzAtNi45LTUuNi0xMi41LTEyLjUtMTIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RvcHdhdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDE2Vjk4LjRDOTIuMyAxMTMuOCAxNiAyMDAgMTYgMzA0YzAgMTE0LjkgOTMuMSAyMDggMjA4IDIwOHMyMDgtOTMuMSAyMDgtMjA4YzAtNDEuOC0xMi4zLTgwLjctMzMuNS0xMTMuMmwyNC4xLTI0LjFjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMzU1LjcgMTQzYy0yOC4xLTIzLTYyLjItMzguOC05OS43LTQ0LjZWNjRoMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjI0IDE3NnptNzIgMTkyVjMyMGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYxOTJjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RvcmVTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43bC04Ni44LTY4VjM4NCAyNTIuNmMtNCAxLTggMS44LTEyLjMgMi4zbC0uMSAwYy01LjMgLjctMTAuNyAxLjEtMTYuMiAxLjFjLTEyLjQgMC0yNC4zLTEuOS0zNS40LTUuM1YzNTAuOUwzMDEuMiAyMTAuN2M3LTQuNCAxMy4zLTkuNyAxOC44LTE1LjdjMTUuOSAxNy42IDM5LjEgMjkgNjUuMiAyOWMyNi4yIDAgNDkuMy0xMS40IDY1LjItMjljMTYgMTcuNiAzOS4xIDI5IDY1LjIgMjljNC4xIDAgOC4xLS4zIDEyLjEtLjhjNTUuNS03LjQgODEuOC03Mi41IDUyLjEtMTE5LjRMNTIyLjMgMTMuMUM1MTcuMiA1IDUwOC4xIDAgNDk4LjQgMEgxNDEuNmMtOS43IDAtMTguOCA1LTIzLjkgMTMuMWwtMjIuNyAzNkwzOC44IDUuMXpNNTE0LjkgNTAxLjdMMzY1LjUgMzg0SDE2MFYyNTAuNmMtMTEuMiAzLjUtMjMuMiA1LjQtMzUuNiA1LjRjLTUuNSAwLTExLS40LTE2LjMtMS4xbC0uMSAwYy00LjEtLjYtOC4xLTEuMy0xMi0yLjNWMzg0djY0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ4MGMxMi45IDAgMjQuOC0zLjggMzQuOS0xMC4zek0xNTUuMyAyMTguNEw0OC45IDEzNC41Yy02LjEgNDAuNiAxOS41IDgyLjggNjMuMyA4OC43YzQgLjUgOC4xIC44IDEyLjEgLjhjMTEgMCAyMS40LTIgMzEtNS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDcuNiAxMDMuOEw0OTAuMyAxMy4xQzQ4NS4yIDUgNDc2LjEgMCA0NjYuNCAwSDEwOS42Qzk5LjkgMCA5MC44IDUgODUuNyAxMy4xTDI4LjMgMTAzLjhjLTI5LjYgNDYuOC0zLjQgMTExLjkgNTEuOSAxMTkuNGM0IC41IDguMSAuOCAxMi4xIC44YzI2LjEgMCA0OS4zLTExLjQgNjUuMi0yOWMxNS45IDE3LjYgMzkuMSAyOSA2NS4yIDI5YzI2LjEgMCA0OS4zLTExLjQgNjUuMi0yOWMxNS45IDE3LjYgMzkuMSAyOSA2NS4yIDI5YzI2LjIgMCA0OS4zLTExLjQgNjUuMi0yOWMxNiAxNy42IDM5LjEgMjkgNjUuMiAyOWM0LjEgMCA4LjEtLjMgMTIuMS0uOGM1NS41LTcuNCA4MS44LTcyLjUgNTIuMS0xMTkuNHpNNDk5LjcgMjU0LjlsLS4xIDBjLTUuMyAuNy0xMC43IDEuMS0xNi4yIDEuMWMtMTIuNCAwLTI0LjMtMS45LTM1LjQtNS4zVjM4NEgxMjhWMjUwLjZjLTExLjIgMy41LTIzLjIgNS40LTM1LjYgNS40Yy01LjUgMC0xMS0uNC0xNi4zLTEuMWwtLjEgMGMtNC4xLS42LTguMS0xLjMtMTItMi4zVjM4NHY2NGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMzg0IDI1Mi42Yy00IDEtOCAxLjgtMTIuMyAyLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0cmVldFZpZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDY0QTY0IDY0IDAgMSAwIDE5MiA2NGE2NCA2NCAwIDEgMCAxMjggMHptLTk2IDk2Yy0zNS4zIDAtNjQgMjguNy02NCA2NHY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgxLjhsMTEuMSA5OS41YzEuOCAxNi4yIDE1LjUgMjguNSAzMS44IDI4LjVoMzguN2MxNi4zIDAgMzAtMTIuMyAzMS44LTI4LjVMMzE4LjIgMzA0SDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMjRjMC0zNS4zLTI4LjctNjQtNjQtNjRIMjI0ek0xMzIuMyAzOTQuMmMxMy0yLjQgMjEuNy0xNC45IDE5LjMtMjcuOXMtMTQuOS0yMS43LTI3LjktMTkuM2MtMzIuNCA1LjktNjAuOSAxNC4yLTgyIDI0LjhjLTEwLjUgNS4zLTIwLjMgMTEuNy0yNy44IDE5LjZDNi40IDM5OS41IDAgNDEwLjUgMCA0MjRjMCAyMS40IDE1LjUgMzYuMSAyOS4xIDQ1YzE0LjcgOS42IDM0LjMgMTcuMyA1Ni40IDIzLjRDMTMwLjIgNTA0LjcgMTkwLjQgNTEyIDI1NiA1MTJzMTI1LjgtNy4zIDE3MC40LTE5LjZjMjIuMS02LjEgNDEuOC0xMy44IDU2LjQtMjMuNGMxMy43LTguOSAyOS4xLTIzLjYgMjkuMS00NWMwLTEzLjUtNi40LTI0LjUtMTQtMzIuNmMtNy41LTcuOS0xNy4zLTE0LjMtMjcuOC0xOS42Yy0yMS0xMC42LTQ5LjUtMTguOS04Mi0yNC44Yy0xMy0yLjQtMjUuNSA2LjMtMjcuOSAxOS4zczYuMyAyNS41IDE5LjMgMjcuOWMzMC4yIDUuNSA1My43IDEyLjggNjkgMjAuNWMzLjIgMS42IDUuOCAzLjEgNy45IDQuNWMzLjYgMi40IDMuNiA3LjIgMCA5LjZjLTguOCA1LjctMjMuMSAxMS44LTQzIDE3LjNDMzc0LjMgNDU3IDMxOC41IDQ2NCAyNTYgNDY0cy0xMTguMy03LTE1Ny43LTE3LjljLTE5LjktNS41LTM0LjItMTEuNi00My0xNy4zYy0zLjYtMi40LTMuNi03LjIgMC05LjZjMi4xLTEuNCA0LjgtMi45IDcuOS00LjVjMTUuMy03LjcgMzguOC0xNC45IDY5LTIwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0cmlrZXRocm91Z2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYxLjMgMTQ0YzMuMi0xNy4yIDE0LTMwLjEgMzMuNy0zOC42YzIxLjEtOSA1MS44LTEyLjMgODguNi02LjVjMTEuOSAxLjkgNDguOCA5LjEgNjAuMSAxMmMxNy4xIDQuNSAzNC42LTUuNiAzOS4yLTIyLjdzLTUuNi0zNC42LTIyLjctMzkuMmMtMTQuMy0zLjgtNTMuNi0xMS40LTY2LjYtMTMuNGMtNDQuNy03LTg4LjMtNC4yLTEyMy43IDEwLjljLTM2LjUgMTUuNi02NC40IDQ0LjgtNzEuOCA4Ny4zYy0uMSAuNi0uMiAxLjEtLjIgMS43Yy0yLjggMjMuOSAuNSA0NS42IDEwLjEgNjQuNmM0LjUgOSAxMC4yIDE2LjkgMTYuNyAyMy45SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNzAuMWMtLjEgMC0uMy0uMS0uNC0uMWwtMS4xLS4zYy0zNi0xMC44LTY1LjItMTkuNi04NS4yLTMzLjFjLTkuMy02LjMtMTUtMTIuNi0xOC4yLTE5LjFjLTMuMS02LjEtNS4yLTE0LjYtMy44LTI3LjR6TTM0OC45IDMzNy4yYzIuNyA2LjUgNC40IDE1LjggMS45IDMwLjFjLTMgMTcuNi0xMy44IDMwLjgtMzMuOSAzOS40Yy0yMS4xIDktNTEuNyAxMi4zLTg4LjUgNi41Yy0xOC0yLjktNDkuMS0xMy41LTc0LjQtMjIuMWMtNS42LTEuOS0xMS0zLjctMTUuOS01LjRjLTE2LjgtNS42LTM0LjkgMy41LTQwLjUgMjAuM3MzLjUgMzQuOSAyMC4zIDQwLjVjMy42IDEuMiA3LjkgMi43IDEyLjcgNC4zbDAgMCAwIDBjMjQuOSA4LjUgNjMuNiAyMS43IDg3LjYgMjUuNmwwIDAgLjIgMGM0NC43IDcgODguMyA0LjIgMTIzLjctMTAuOWMzNi41LTE1LjYgNjQuNC00NC44IDcxLjgtODcuM2MzLjYtMjEgMi43LTQwLjQtMy4xLTU4LjFIMzM1LjFjNyA1LjYgMTEuNCAxMS4yIDEzLjkgMTcuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Ryb29wd2FmZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2ek0zMTIuNiA2My43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwyNTYgOTcuNiAyMjIuMSA2My43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDMzLjkgMzMuOS00NS4zIDQ1LjMtNTYuNi01Ni42Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDU2LjYgNTYuNi00NS4zIDQ1LjNMODYuMyAxOTkuNGMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNkw5Ny42IDI1NiA2My43IDI4OS45Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBsMzMuOS0zMy45IDQ1LjMgNDUuMy01Ni42IDU2LjZjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGw1Ni42LTU2LjYgNDUuMyA0NS4zLTMzLjkgMzMuOWMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwTDI1NiA0MTQuNGwzMy45IDMzLjljNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC0zMy45LTMzLjkgNDUuMy00NS4zIDU2LjYgNTYuNmM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTU2LjYtNTYuNiA0NS4zLTQ1LjMgMzMuOSAzMy45YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkw0MTQuNCAyNTZsMzMuOS0zMy45YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBsLTMzLjkgMzMuOS00NS4zLTQ1LjMgNTYuNi01Ni42YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBsLTU2LjYgNTYuNi00NS4zLTQ1LjMgMzMuOS0zMy45YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42ek0xNDIuOSAyNTZsNDUuMy00NS4zTDIzMy40IDI1NmwtNDUuMyA0NS4zTDE0Mi45IDI1NnptNjcuOSA2Ny45TDI1NiAyNzguNmw0NS4zIDQ1LjNMMjU2IDM2OS4xbC00NS4zLTQ1LjN6TTI3OC42IDI1Nmw0NS4zLTQ1LjNMMzY5LjEgMjU2bC00NS4zIDQ1LjNMMjc4LjYgMjU2em0yMi42LTY3LjlMMjU2IDIzMy40bC00NS4zLTQ1LjNMMjU2IDE0Mi45bDQ1LjMgNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Vic2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDY0QzE0LjMgNjQgMCA3OC4zIDAgOTZzMTQuMyAzMiAzMiAzMkg0Ny4zbDg5LjYgMTI4TDQ3LjMgMzg0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0YzEwLjQgMCAyMC4yLTUuMSAyNi4yLTEzLjZMMTc2IDMxMS44bDg1LjggMTIyLjZjNiA4LjYgMTUuOCAxMy42IDI2LjIgMTMuNmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMDQuN0wyMTUuMSAyNTZsODkuNi0xMjhIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI4OGMtMTAuNCAwLTIwLjIgNS4xLTI2LjIgMTMuNkwxNzYgMjAwLjIgOTAuMiA3Ny42Qzg0LjIgNjkuMSA3NC40IDY0IDY0IDY0SDMyek00ODAgMzIwYzAtMTEuMS01LjctMjEuNC0xNS4yLTI3LjJzLTIxLjItNi40LTMxLjEtMS40bC0zMiAxNmMtMTUuOCA3LjktMjIuMiAyNy4xLTE0LjMgNDIuOUMzOTMgMzYxLjUgNDA0LjMgMzY4IDQxNiAzNjh2ODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzIgMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJWMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdWl0Y2FzZU1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg0IDQ4SDMyOGM0LjQgMCA4IDMuNiA4IDhWOTZIMTc2VjU2YzAtNC40IDMuNi04IDgtOHptLTU2IDhWOTZ2MzJWNDgwSDM4NFYxMjggOTYgNTZjMC0zMC45LTI1LjEtNTYtNTYtNTZIMTg0Yy0zMC45IDAtNTYgMjUuMS01NiA1NnpNOTYgOTZINjRDMjguNyA5NiAwIDEyNC43IDAgMTYwVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg5NlY5NnpNNDE2IDQ4MGgzMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBjMC0zNS4zLTI4LjctNjQtNjQtNjRINDE2VjQ4MHpNMjI0IDIwOGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djQ4aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjg4djQ4YzAgOC44LTcuMiAxNi0xNiAxNkgyNDBjLTguOCAwLTE2LTcuMi0xNi0xNlYzMjBIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMjcyYzAtOC44IDcuMi0xNiAxNi0xNmg0OFYyMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1aXRjYXNlUm9sbGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgNTZjMC00LjQgMy42LTggOC04aDgwYzQuNCAwIDggMy42IDggOHY3MkgxNDRWNTZ6bTE3NiA3MkgyODhWNTZjMC0zMC45LTI1LjEtNTYtNTYtNTZIMTUyQzEyMS4xIDAgOTYgMjUuMSA5NiA1NnY3Mkg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjRWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJIMjU2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTkyYzAtMzUuMy0yOC43LTY0LTY0LTY0ek0xMTIgMjI0SDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgMTI4SDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1aXRjYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiA1NlY5NkgzMzZWNTZjMC00LjQtMy42LTgtOC04SDE4NGMtNC40IDAtOCAzLjYtOCA4ek0xMjggOTZWNTZjMC0zMC45IDI1LjEtNTYgNTYtNTZIMzI4YzMwLjkgMCA1NiAyNS4xIDU2IDU2Vjk2djMyVjQ4MEgxMjhWMTI4IDk2ek02NCA5Nkg5NlY0ODBINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE2MGMwLTM1LjMgMjguNy02NCA2NC02NHpNNDQ4IDQ4MEg0MTZWOTZoMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdW5QbGFudFdpbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDBjLTYuMyAwLTEyIDMuNy0xNC42IDkuNUwxMjAuNiA2NC45IDYzLjkgNDMuMmMtNS45LTIuMy0xMi42LS44LTE3IDMuNnMtNS45IDExLjEtMy42IDE3bDIxLjcgNTYuN0w5LjUgMTQ1LjRDMy43IDE0OCAwIDE1My43IDAgMTYwczMuNyAxMiA5LjUgMTQuNmw1NS40IDI0LjhMNDMuMiAyNTYuMWMtMi4zIDUuOS0uOCAxMi42IDMuNiAxN3MxMS4xIDUuOSAxNyAzLjZsNTYuNy0yMS43IDI0LjggNTUuNGMyLjYgNS44IDguMyA5LjUgMTQuNiA5LjVzMTItMy43IDE0LjYtOS41bDI0LjgtNTUuNCA1Ni43IDIxLjdjNS45IDIuMyAxMi42IC44IDE3LTMuNnM1LjktMTEuMSAzLjYtMTdsLTIxLjctNTYuNyA1NS40LTI0LjhjNS44LTIuNiA5LjUtOC4zIDkuNS0xNC42cy0zLjctMTItOS41LTE0LjZsLTU1LjQtMjQuOCAyMS43LTU2LjdjMi4zLTUuOSAuOC0xMi42LTMuNi0xN3MtMTEuMS01LjktMTctMy42TDE5OS40IDY0LjkgMTc0LjYgOS41QzE3MiAzLjcgMTY2LjMgMCAxNjAgMHptMCA5NmE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHptMzIgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMzEyIDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2NTMuNGMtMTQuOCA3LjctMjQgMjMuMS0yNCA0NC42YzAgMTYuOCAxNiA0NCAzNy40IDY3LjJjNS44IDYuMiAxNS41IDYuMiAyMS4yIDBDNjI0IDMxOCA2NDAgMjkwLjcgNjQwIDI3NGMwLTIxLjUtOS4yLTM3LTI0LTQ0LjZWMTc2YzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwdjIyLjdjLTkuOC00LjMtMjAuNi02LjctMzItNi43Yy00NC4yIDAtODAgMzUuOC04MCA4MHYyMS40Yy0xNC44IDcuNy0yNCAyMy4xLTI0IDQ0LjZjMCAxNi44IDE2IDQ0IDM3LjQgNjcuMmM1LjggNi4yIDE1LjUgNi4yIDIxLjIgMEM0MDAgMzgyIDQxNiAzNTQuNyA0MTYgMzM4YzAtMjEuNS05LjItMzctMjQtNDQuNlYyNzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY4VjQ0OEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINTA0VjI4MHYtOFYxNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjEuNSAxLjJjNSAyLjEgOC42IDYuNiA5LjYgMTEuOUwzOTEgMTIxbDEwNy45IDE5LjhjNS4zIDEgOS44IDQuNiAxMS45IDkuNnMxLjUgMTAuNy0xLjYgMTUuMkw0NDYuOSAyNTZsNjIuMyA5MC4zYzMuMSA0LjUgMy43IDEwLjIgMS42IDE1LjJzLTYuNiA4LjYtMTEuOSA5LjZMMzkxIDM5MSAzNzEuMSA0OTguOWMtMSA1LjMtNC42IDkuOC05LjYgMTEuOXMtMTAuNyAxLjUtMTUuMi0xLjZMMjU2IDQ0Ni45bC05MC4zIDYyLjNjLTQuNSAzLjEtMTAuMiAzLjctMTUuMiAxLjZzLTguNi02LjYtOS42LTExLjlMMTIxIDM5MSAxMy4xIDM3MS4xYy01LjMtMS05LjgtNC42LTExLjktOS42cy0xLjUtMTAuNyAxLjYtMTUuMkw2NS4xIDI1NiAyLjggMTY1LjdjLTMuMS00LjUtMy43LTEwLjItMS42LTE1LjJzNi42LTguNiAxMS45LTkuNkwxMjEgMTIxIDE0MC45IDEzLjFjMS01LjMgNC42LTkuOCA5LjYtMTEuOXMxMC43LTEuNSAxNS4yIDEuNkwyNTYgNjUuMSAzNDYuMyAyLjhjNC41LTMuMSAxMC4yLTMuNyAxNS4yLTEuNnpNMTYwIDI1NmE5NiA5NiAwIDEgMSAxOTIgMCA5NiA5NiAwIDEgMSAtMTkyIDB6bTIyNCAwYTEyOCAxMjggMCAxIDAgLTI1NiAwIDEyOCAxMjggMCAxIDAgMjU2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1cGVyc2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAzMmMwLTExLjEtNS43LTIxLjQtMTUuMi0yNy4ycy0yMS4yLTYuNC0zMS4xLTEuNGwtMzIgMTZjLTE1LjggNy45LTIyLjIgMjcuMS0xNC4zIDQyLjlDMzkzIDczLjUgNDA0LjMgODAgNDE2IDgwdjgwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDMyIDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjMyek0zMiA2NEMxNC4zIDY0IDAgNzguMyAwIDk2czE0LjMgMzIgMzIgMzJINDcuM2w4OS42IDEyOEw0Ny4zIDM4NEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NGMxMC40IDAgMjAuMi01LjEgMjYuMi0xMy42TDE3NiAzMTEuOGw4NS44IDEyMi42YzYgOC42IDE1LjggMTMuNiAyNi4yIDEzLjZoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzA0LjdMMjE1LjEgMjU2bDg5LjYtMTI4SDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyODhjLTEwLjQgMC0yMC4yIDUuMS0yNi4yIDEzLjZMMTc2IDIwMC4yIDkwLjIgNzcuNkM4NC4yIDY5LjEgNzQuNCA2NCA2NCA2NEgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3dhdGNoYm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyQzAgMTQuMyAxNC4zIDAgMzIgMEgxNjBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDE2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2VjMyek0yMjMuNiA0MjUuOWMuMy0zLjMgLjQtNi42IC40LTkuOVYxNTRsNzUuNC03NS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDkwLjUgOTAuNWMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM0wyMjMuNiA0MjUuOXpNMTgyLjggNTEybDE5Mi0xOTJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxODIuOHpNMTI4IDY0SDY0djY0aDY0VjY0ek02NCAxOTJ2NjRoNjRWMTkySDY0ek05NiA0NDBhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTeW5hZ29ndWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA5LjggMy43YzUuOS00LjkgMTQuNi00LjkgMjAuNSAwbDEyMSAxMDAuOEM0NjkuNSAxMTkuNyA0ODAgMTQyLjIgNDgwIDE2NlYyODAuMSA1MTJINDY0IDM1MlY0MTZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2OTZIMTc2IDE2MFYyODAuMSAxNjZjMC0yMy43IDEwLjUtNDYuMyAyOC44LTYxLjVMMzA5LjggMy43ek01MTIgNTEyVjI0NC41bDI4LjEtMzEuMmMzLTMuNCA3LjQtNS4zIDExLjktNS4zczguOSAxLjkgMTEuOSA1LjNsNjMuOCA3MC45YzcuOSA4LjggMTIuMyAyMC4zIDEyLjMgMzIuMVY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINTEyek0xMjggMjQ0LjVWNTEySDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYzMTYuM2MwLTExLjkgNC40LTIzLjMgMTIuMy0zMi4xbDYzLjgtNzAuOWMzLTMuNCA3LjQtNS4zIDExLjktNS4zczguOSAxLjkgMTEuOSA1LjNMMTI4IDI0NC41ek0zMjcgMTI0LjNjLTMuMS01LjQtMTAuOS01LjQtMTMuOSAwbC0xNS45IDI4LjEtMzIuMy0uM2MtNi4yLS4xLTEwLjEgNi43LTcgMTIuMUwyNzQuMyAxOTJsLTE2LjQgMjcuOGMtMy4yIDUuNCAuNyAxMi4xIDcgMTIuMWwzMi4zLS4zTDMxMyAyNTkuN2MzLjEgNS40IDEwLjkgNS40IDEzLjkgMGwxNS45LTI4LjEgMzIuMyAuM2M2LjIgLjEgMTAuMS02LjcgNy0xMi4xTDM2NS43IDE5MmwxNi40LTI3LjhjMy4yLTUuNC0uNy0xMi4xLTctMTIuMWwtMzIuMyAuM0wzMjcgMTI0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN5cmluZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQxIDdsMzIgMzIgMzIgMzJjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtMTUtMTVMNDE3LjkgMTI4bDU1IDU1YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTcyLTcyTDI5NSA3M2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDU1IDU1TDQyMi4xIDU2IDQwNyA0MWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwek0yMTAuMyAxNTUuN2w2MS4xLTYxLjFjLjMgLjMgLjYgLjcgMSAxbDE2IDE2IDU2IDU2IDU2IDU2IDE2IDE2Yy4zIC4zIC42IC42IDEgMWwtMTkxIDE5MWMtMTAuNSAxMC41LTI0LjcgMTYuNC0zOS42IDE2LjRIOTcuOUw0MSA1MDVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNTctNTdWMzI1LjNjMC0xNC45IDUuOS0yOS4xIDE2LjQtMzkuNmw0My4zLTQzLjMgNTcgNTdjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC01Ny01NyA0MS40LTQxLjQgNTcgNTdjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC01Ny01N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZIMTYwVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjk2SDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxlQ2VsbHNDb2x1bW5Mb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzg0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCA2NS4xYy0zNy44IDUuNC02OS40IDI5LjYtODUuMiA2Mi45TDM2MCAyMjRsMCA2NCA1NiAwIDAgOC42Yy0xOS4xIDExLjEtMzIgMzEuNy0zMiA1NS40bC0yNCAwIDAgNjQgMjQgMCAwIDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NnptMjA4IDBsMCA2NCA4OCAwIDAtNjQtODggMHptMjQwIDBsLTg4IDAgMCA2NCA4OCAwIDAtNjR6TTIwOCAyMjRsMCA2NCA4OCAwIDAtNjQtODggMHptMCAxMjhsMCA2NCA4OCAwIDAtNjQtODggMHpNNTI4IDI0MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA0OCA2NCAwIDAtNDhjMC0xNy43LTE0LjMtMzItMzItMzJ6bS04MCAzMmMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwbDAgNDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJsLTE2MCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWJsZUNlbGxzTGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2VjIyNEgyODhWOTZINDQ4em0wIDE5MlY0MTZIMjg4VjI4OEg0NDh6TTIyNCAyMjRINjRWOTZIMjI0VjIyNHpNNjQgMjg4SDIyNFY0MTZINjRWMjg4ek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxlQ2VsbHNSb3dMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzg0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCA2NS4xYy0zNy44IDUuNC02OS40IDI5LjYtODUuMiA2Mi45TDM2MCAyMjRsMCA2NCA1NiAwIDAgOC42Yy0xOS4xIDExLjEtMzIgMzEuNy0zMiA1NS40bC0yNCAwIDAgNjQgMjQgMCAwIDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NnpNNjQgMjI0bDAgNjQgODggMCAwLTY0LTg4IDB6bTIzMiAwbC04OCAwIDAgNjQgODggMCAwLTY0ek0xNTIgMzUybC04OCAwIDAgNjQgODggMCAwLTY0em01NiAwbDAgNjQgODggMCAwLTY0LTg4IDB6TTUyOCAyNDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNDggNjQgMCAwLTQ4YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tODAgMzJjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGwwIDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTI4YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0xNjAgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xMjhjMC0xNy43IDE0LjMtMzIgMzItMzJsMC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFibGVDZWxscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTg4IDY0djY0SDY0Vjk2aDg4em01NiAwaDg4djY0SDIwOFY5NnptMjQwIDB2NjRIMzYwVjk2aDg4ek02NCAyMjRoODh2NjRINjRWMjI0em0yMzIgMHY2NEgyMDhWMjI0aDg4em02NCAwaDg4djY0SDM2MFYyMjR6TTE1MiAzNTJ2NjRINjRWMzUyaDg4em01NiAwaDg4djY0SDIwOFYzNTJ6bTI0MCAwdjY0SDM2MFYzNTJoODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxlQ29sdW1ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2em02NCA2NFY0MTZIMjI0VjE2MEg2NHptMzg0IDBIMjg4VjQxNkg0NDhWMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWJsZUxpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NnptNjQgMHY2NGg2NFY5Nkg2NHptMzg0IDBIMTkydjY0SDQ0OFY5NnpNNjQgMjI0djY0aDY0VjIyNEg2NHptMzg0IDBIMTkydjY0SDQ0OFYyMjR6TTY0IDM1MnY2NGg2NFYzNTJINjR6bTM4NCAwSDE5MnY2NEg0NDhWMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWJsZVRlbm5pc1BhZGRsZUJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDI4OGMtNTAuMSAwLTkzLjYgMjguOC0xMTQuNiA3MC44TDEzMi45IDEyNi4zbC42LS42IDYwLjEtNjAuMWM4Ny41LTg3LjUgMjI5LjMtODcuNSAzMTYuOCAwYzY3LjEgNjcuMSA4Mi43IDE2Ni4zIDQ2LjggMjQ4LjNDNTM1LjggMjk3LjYgNTA5IDI4OCA0ODAgMjg4ek0xMTMuMyAxNTEuOUwzNTQuMSAzOTIuN2MtMS40IDcuNS0yLjEgMTUuMy0yLjEgMjMuM2MwIDIzLjIgNi4yIDQ0LjkgMTYuOSA2My43Yy0zIC4yLTYuMSAuMy05LjIgLjNIMzU3Yy0zMy45IDAtNjYuNS0xMy41LTkwLjUtMzcuNWwtOS44LTkuOGMtMTMuMS0xMy4xLTM0LjYtMTIuNC00Ni44IDEuN0wxNTIuMiA1MDFjLTUuOCA2LjctMTQuMiAxMC43LTIzIDExcy0xNy41LTMuMS0yMy44LTkuNGwtMzItMzJjLTYuMy02LjMtOS43LTE0LjktOS40LTIzLjhzNC4zLTE3LjIgMTEtMjNsNjYuNi01Ny43YzE0LTEyLjIgMTQuOC0zMy43IDEuNy00Ni44bC05LjgtOS44Yy0yNC0yNC0zNy41LTU2LjYtMzcuNS05MC41di0yLjdjMC0yMi44IDYuMS00NC45IDE3LjMtNjQuM3pNNDgwIDMyMGE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMjU2VjE2MEgyMjR2OTZINjR6bTAgNjRIMjI0djk2SDY0VjMyMHptMjI0IDk2VjMyMEg0NDh2OTZIMjg4ek00NDggMjU2SDI4OFYxNjBINDQ4djk2ek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxldEJ1dHRvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yMjQgNDAwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFibGV0U2NyZWVuQnV0dG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0ek0yNTYgNDQ4YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTM4NCA2NEg2NFYzODRIMzg0VjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWJsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMTc2IDQzMmg5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxldHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjE0LjMgMjQ3YzE2LjMtMjUgMjUuNy01NC45IDI1LjctODdDNjQwIDcxLjYgNTY4LjQgMCA0ODAgMGMtMzIuMSAwLTYxLjkgOS40LTg3IDI1LjdjLTcuOSA1LjItOC41IDE2LjItMS44IDIyLjlMNTkxLjQgMjQ4LjhjNi43IDYuNyAxNy44IDYuMiAyMi45LTEuOHpNNTY3IDI5NC4zYzcuOS01LjIgOC41LTE2LjIgMS44LTIyLjlMMzY4LjYgNzEuMmMtNi43LTYuNy0xNy44LTYuMi0yMi45IDEuOGMtMTYuMyAyNS0yNS43IDU0LjktMjUuNyA4N2MwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MGMzMi4xIDAgNjEuOS05LjQgODctMjUuN3pNMzAxLjUgMzY4SDE4LjVjLTkuNSAwLTE2LjkgOC4yLTE1IDE3LjVDMTguOSA0NTcuOCA4My4xIDUxMiAxNjAgNTEyczE0MS4xLTU0LjIgMTU2LjUtMTI2LjVjMi05LjMtNS41LTE3LjUtMTUtMTcuNXptMC0zMmM5LjUgMCAxNi45LTguMiAxNS0xNy41QzMwMS4xIDI0Ni4yIDIzNi45IDE5MiAxNjAgMTkyUzE4LjkgMjQ2LjIgMy41IDMxOC41Yy0yIDkuMyA1LjUgMTcuNSAxNSAxNy41SDMwMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWNob2dyYXBoRGlnaXRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTc2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEg2NHptMzIgNjRIMzIwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTY0IDM2OGMwLTguOCA3LjItMTYgMTYtMTZIMzM2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZ6bTMyMCAwYzAtOC44IDcuMi0xNiAxNi0xNkg1NjBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZINDAwYy04LjggMC0xNi03LjItMTYtMTZ6TTgwIDI4OGExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6bTQ4IDE2YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6bTgwLTE2YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnptNDggMTZhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHptODAtMTZhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4MFYyMjkuNWMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM2wxNzYgMTc2YzI1IDI1IDY1LjUgMjUgOTAuNSAwTDQxOC43IDMxNy4zYzI1LTI1IDI1LTY1LjUgMC05MC41bC0xNzYtMTc2Yy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43SDQ4QzIxLjUgMzIgMCA1My41IDAgODB6bTExMiAzMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ1IDM5LjFMNDcyLjggMTY4LjRjNTIuNCA1MyA1Mi40IDEzOC4yIDAgMTkxLjJMMzYwLjggNDcyLjljLTkuMyA5LjQtMjQuNSA5LjUtMzMuOSAuMnMtOS41LTI0LjUtLjItMzMuOUw0MzguNiAzMjUuOWMzMy45LTM0LjMgMzMuOS04OS40IDAtMTIzLjdMMzEwLjkgNzIuOWMtOS4zLTkuNC05LjItMjQuNiAuMi0zMy45czI0LjYtOS4yIDMzLjkgLjJ6TTAgMjI5LjVWODBDMCA1My41IDIxLjUgMzIgNDggMzJIMTk3LjVjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdsMTY4IDE2OGMyNSAyNSAyNSA2NS41IDAgOTAuNUwyNzcuMyA0NDIuN2MtMjUgMjUtNjUuNSAyNS05MC41IDBsLTE2OC0xNjhDNi43IDI2Mi43IDAgMjQ2LjUgMCAyMjkuNXpNMTQ0IDE0NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4MC44IDQxNmM0MS41LTQwLjcgNjcuMi05Ny4zIDY3LjItMTYwQzQ0OCAxMzIuMyAzNDcuNyAzMiAyMjQgMzJTMCAxMzIuMyAwIDI1NlMxMDAuMyA0ODAgMjI0IDQ4MEg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzgwLjh6TTIyNCAxNjBhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6bTY0IDk2YTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFycERyb3BsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDE2MGMtMzUuMyAwLTY0LTI2LjktNjQtNjBjMC0yNCAzMy43LTcwLjEgNTIuMi05My41YzYuMS03LjcgMTcuNS03LjcgMjMuNiAwQzMxOC4zIDI5LjkgMzUyIDc2IDM1MiAxMDBjMCAzMy4xLTI4LjcgNjAtNjQgNjB6TTY0IDEyOEgxOTcuNWMxMy4yIDM3LjMgNDguNyA2NCA5MC41IDY0czc3LjQtMjYuNyA5MC41LTY0SDUxMmMzNS4zIDAgNjQgMjguNyA2NCA2NFYzNTJINDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDEyOEw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE5MmMwLTM1LjMgMjguNy02NCA2NC02NHpNNDQ4IDUxMmwwLTEyOEg1NzZMNDQ4IDUxMnpNOTYgMjU2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFycCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzYgMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzNTIgMCAwLTEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg1NzZWMTI4ek00NDggNDQ4TDU3NiAzMjBINDQ4bDAgMTI4ek05NiAxMjhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYXhpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY2NGMwIC4xIDAgLjEgMCAuMmMtMzguNiAyLjItNzIuMyAyNy4zLTg1LjIgNjQuMUwzOS42IDIyOC44QzE2LjQgMjM4LjQgMCAyNjEuMyAwIDI4OFY0MzJ2NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJINjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDMySDQxNnY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMlY0MzIgMjg4YzAtMjYuNy0xNi40LTQ5LjYtMzkuNi01OS4yTDQzNy4yIDEyOC4zYy0xMi45LTM2LjgtNDYuNi02Mi04NS4yLTY0LjFjMC0uMSAwLS4xIDAtLjJWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMTkyek0xNjUuNCAxMjhIMzQ2LjZjMTMuNiAwIDI1LjcgOC42IDMwLjIgMjEuNEw0MDIuOSAyMjRIMTA5LjFsMjYuMS03NC42YzQuNS0xMi44IDE2LjYtMjEuNCAzMC4yLTIxLjR6TTk2IDI4OGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTI4OCAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZWV0aE9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzJDNDMgMzIgMCA3NSAwIDEyOHY2NGMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtNTMtNDMtOTYtOTYtOTZIOTZ6TTIyNCA5NmMyNi41IDAgNDggMjEuNSA0OCA0OHY1NmMwIDEzLjMtMTAuNyAyNC0yNCAyNEgyMDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE0NGMwLTI2LjUgMjEuNS00OCA0OC00OHptODAgNDhjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY1NmMwIDEzLjMtMTAuNyAyNC0yNCAyNEgzMjhjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE0NHpNOTYgMTI4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djI0YzAgMTMuMy0xMC43IDI0LTI0IDI0SDcyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYxNzZjMC0yNi41IDIxLjUtNDggNDgtNDh6bTMzNiA0OGMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djI0YzAgMTMuMy0xMC43IDI0LTI0IDI0SDQ1NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMTc2ek05NiA0ODBINDgwYzUzIDAgOTYtNDMgOTYtOTZWMzUyYzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NHYzMmMwIDUzIDQzIDk2IDk2IDk2em0wLTY0Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzNDRjMC0xMy4zIDEwLjctMjQgMjQtMjRoNDhjMTMuMyAwIDI0IDEwLjcgMjQgMjR2MjRjMCAyNi41LTIxLjUgNDgtNDggNDh6bTgwLTQ4VjM0NGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHYyNGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OHptMTc2IDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzNDRjMC0xMy4zIDEwLjctMjQgMjQtMjRoNDhjMTMuMyAwIDI0IDEwLjcgMjQgMjR2MjRjMCAyNi41LTIxLjUgNDgtNDggNDh6bTgwLTQ4VjM0NGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHYyNGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVldGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxMjhDMCA3NSA0MyAzMiA5NiAzMkg0ODBjNTMgMCA5NiA0MyA5NiA5NlYzODRjMCA1My00MyA5Ni05NiA5Nkg5NmMtNTMgMC05Ni00My05Ni05NlYxMjh6bTE3NiA0OHY1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNGg0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDh6bTE3Ni00OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTc2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek00OCAyMDh2MjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjA4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4ek05NiAzODRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzEyYzAtMTMuMy0xMC43LTI0LTI0LTI0SDcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNGMwIDI2LjUgMjEuNSA0OCA0OCA0OHptODAtNDhjMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OFYzMTJjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNHptMTc2IDQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjMxMmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgzMjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0djI0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4em04MC0xNzZ2MjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjA4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4em00OCAxNzZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzEyYzAtMTMuMy0xMC43LTI0LTI0LTI0SDQ1NmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MjRjMCAyNi41IDIxLjUgNDggNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbXBlcmF0dXJlQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAxMTJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OFYyNzYuNWMwIDE3LjMgNy4xIDMxLjkgMTUuMyA0Mi41QzI0OS44IDMzMi42IDI1NiAzNDkuNSAyNTYgMzY4YzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtMTguNSA2LjItMzUuNCAxNi43LTQ4LjljOC4yLTEwLjYgMTUuMy0yNS4yIDE1LjMtNDIuNVYxMTJ6TTE3NiAwQzExNC4xIDAgNjQgNTAuMSA2NCAxMTJWMjc2LjRjMCAuMS0uMSAuMy0uMiAuNmMtLjIgLjYtLjggMS42LTEuNyAyLjhDNDMuMiAzMDQuMiAzMiAzMzQuOCAzMiAzNjhjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRzMTQ0LTY0LjUgMTQ0LTE0NGMwLTMzLjItMTEuMi02My44LTMwLjEtODguMWMtLjktMS4yLTEuNS0yLjItMS43LTIuOGMtLjEtLjMtLjItLjUtLjItLjZWMTEyQzI4OCA1MC4xIDIzNy45IDAgMTc2IDB6bTAgNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4YzAtMjAuOS0xMy40LTM4LjctMzItNDUuM1YyNzJjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2NTAuN2MtMTguNiA2LjYtMzIgMjQuNC0zMiA0NS4zYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4em0zMzYtNjRINDgwVjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjM1MkgzODRjLTEyLjkgMC0yNC42IDcuOC0yOS42IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45bDY0IDY0YzYgNiAxNC4xIDkuNCAyMi42IDkuNHMxNi42LTMuNCAyMi42LTkuNGw2NC02NGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOXMtMTYuNi0xOS44LTI5LjYtMTkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVBcnJvd1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAxMTJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OFYyNzYuNWMwIDE3LjMgNy4xIDMxLjkgMTUuMyA0Mi41QzI0OS44IDMzMi42IDI1NiAzNDkuNSAyNTYgMzY4YzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtMTguNSA2LjItMzUuNCAxNi43LTQ4LjljOC4yLTEwLjYgMTUuMy0yNS4yIDE1LjMtNDIuNVYxMTJ6TTE3NiAwQzExNC4xIDAgNjQgNTAuMSA2NCAxMTJWMjc2LjRjMCAuMS0uMSAuMy0uMiAuNmMtLjIgLjYtLjggMS42LTEuNyAyLjhDNDMuMiAzMDQuMiAzMiAzMzQuOCAzMiAzNjhjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRzMTQ0LTY0LjUgMTQ0LTE0NGMwLTMzLjItMTEuMi02My44LTMwLjEtODguMWMtLjktMS4yLTEuNS0yLjItMS43LTIuOGMtLjEtLjMtLjItLjUtLjItLjZWMTEyQzI4OCA1MC4xIDIzNy45IDAgMTc2IDB6bTAgNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4YzAtMjAuOS0xMy40LTM4LjctMzItNDUuM1YxMTJjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWMzIyLjdjLTE4LjYgNi42LTMyIDI0LjQtMzIgNDUuM2MwIDI2LjUgMjEuNSA0OCA0OCA0OHpNNDgwIDE2MGgzMmMxMi45IDAgMjQuNi03LjggMjkuNi0xOS44czIuMi0yNS43LTYuOS0zNC45bC02NC02NGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTY0IDY0Yy05LjIgOS4yLTExLjkgMjIuOS02LjkgMzQuOXMxNi42IDE5LjggMjkuNiAxOS44aDMyVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVFbXB0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDhWMjc2LjVjMCAxNy4zIDcuMSAzMS45IDE1LjMgNDIuNUMyMzMuOCAzMzIuNiAyNDAgMzQ5LjUgMjQwIDM2OGMwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTE4LjUgNi4yLTM1LjQgMTYuNy00OC45YzguMi0xMC42IDE1LjMtMjUuMiAxNS4zLTQyLjVWMTEyek0xNjAgMEM5OC4xIDAgNDggNTAuMiA0OCAxMTJWMjc2LjVjMCAuMS0uMSAuMy0uMiAuNmMtLjIgLjYtLjggMS42LTEuNyAyLjhDMjcuMiAzMDQuMiAxNiAzMzQuOCAxNiAzNjhjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRzMTQ0LTY0LjUgMTQ0LTE0NGMwLTMzLjItMTEuMi02My44LTMwLjEtODguMWMtLjktMS4yLTEuNS0yLjItMS43LTIuOGMtLjEtLjMtLjItLjUtLjItLjZWMTEyQzI3MiA1MC4yIDIyMS45IDAgMTYwIDB6bTAgNDE2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCA2NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWMjc2LjVjMCAxNy4zLTcuMSAzMS45LTE1LjMgNDIuNUM4Ni4yIDMzMi42IDgwIDM0OS41IDgwIDM2OGMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMTguNS02LjItMzUuNC0xNi43LTQ4LjljLTguMi0xMC42LTE1LjMtMjUuMi0xNS4zLTQyLjVWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek00OCAxMTJDNDggNTAuMiA5OC4xIDAgMTYwIDBzMTEyIDUwLjEgMTEyIDExMlYyNzYuNWMwIC4xIC4xIC4zIC4yIC42Yy4yIC42IC44IDEuNiAxLjcgMi44YzE4LjkgMjQuNCAzMC4xIDU1IDMwLjEgODguMWMwIDc5LjUtNjQuNSAxNDQtMTQ0IDE0NFMxNiA0NDcuNSAxNiAzNjhjMC0zMy4yIDExLjItNjMuOCAzMC4xLTg4LjFjLjktMS4yIDEuNS0yLjIgMS43LTIuOGMuMS0uMyAuMi0uNSAuMi0uNlYxMTJ6TTIwOCAzNjhjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhjMC0yMC45IDEzLjQtMzguNyAzMi00NS4zVjExMmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2VjMyMi43YzE4LjYgNi42IDMyIDI0LjQgMzIgNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCA2NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWMjc2LjVjMCAxNy4zLTcuMSAzMS45LTE1LjMgNDIuNUM4Ni4yIDMzMi42IDgwIDM0OS41IDgwIDM2OGMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMTguNS02LjItMzUuNC0xNi43LTQ4LjljLTguMi0xMC42LTE1LjMtMjUuMi0xNS4zLTQyLjVWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek00OCAxMTJDNDggNTAuMiA5OC4xIDAgMTYwIDBzMTEyIDUwLjEgMTEyIDExMlYyNzYuNWMwIC4xIC4xIC4zIC4yIC42Yy4yIC42IC44IDEuNiAxLjcgMi44YzE4LjkgMjQuNCAzMC4xIDU1IDMwLjEgODguMWMwIDc5LjUtNjQuNSAxNDQtMTQ0IDE0NFMxNiA0NDcuNSAxNiAzNjhjMC0zMy4yIDExLjItNjMuOCAzMC4xLTg4LjFjLjktMS4yIDEuNS0yLjIgMS43LTIuOGMuMS0uMyAuMi0uNSAuMi0uNlYxMTJ6TTIwOCAzNjhjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhjMC0yMC45IDEzLjQtMzguNyAzMi00NS4zVjIwOGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2VjMyMi43YzE4LjYgNi42IDMyIDI0LjQgMzIgNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiA2NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTAgMTI4QTk2IDk2IDAgMSAwIDQxNiAwYTk2IDk2IDAgMSAwIDAgMTkyek05NiAxMTJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OFYyNzYuNWMwIDE3LjMgNy4xIDMxLjkgMTUuMyA0Mi41QzIxNy44IDMzMi42IDIyNCAzNDkuNSAyMjQgMzY4YzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtMTguNSA2LjItMzUuNCAxNi43LTQ4LjlDODguOSAzMDguNCA5NiAyOTMuOCA5NiAyNzYuNVYxMTJ6TTE0NCAwQzgyLjEgMCAzMiA1MC4yIDMyIDExMlYyNzYuNWMwIC4xLS4xIC4zLS4yIC42Yy0uMiAuNi0uOCAxLjYtMS43IDIuOEMxMS4yIDMwNC4yIDAgMzM0LjggMCAzNjhjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRzMTQ0LTY0LjUgMTQ0LTE0NGMwLTMzLjItMTEuMi02My44LTMwLjEtODguMWMtLjktMS4yLTEuNS0yLjItMS43LTIuOGMtLjEtLjMtLjItLjUtLjItLjZWMTEyQzI1NiA1MC4yIDIwNS45IDAgMTQ0IDB6bTAgNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4YzAtMjAuOS0xMy40LTM4LjctMzItNDUuM1YxMTJjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWMzIyLjdjLTE4LjYgNi42LTMyIDI0LjQtMzIgNDUuM2MwIDI2LjUgMjEuNSA0OCA0OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVMb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTMyMCA5NmE5NiA5NiAwIDEgMSAxOTIgMEE5NiA5NiAwIDEgMSAzMjAgOTZ6TTE0NCA2NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWMjc2LjVjMCAxNy4zLTcuMSAzMS45LTE1LjMgNDIuNUM3MC4yIDMzMi42IDY0IDM0OS41IDY0IDM2OGMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMTguNS02LjItMzUuNC0xNi43LTQ4LjljLTguMi0xMC42LTE1LjMtMjUuMi0xNS4zLTQyLjVWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0zMiAxMTJDMzIgNTAuMiA4Mi4xIDAgMTQ0IDBzMTEyIDUwLjEgMTEyIDExMlYyNzYuNWMwIC4xIC4xIC4zIC4yIC42Yy4yIC42IC44IDEuNiAxLjcgMi44YzE4LjkgMjQuNCAzMC4xIDU1IDMwLjEgODguMWMwIDc5LjUtNjQuNSAxNDQtMTQ0IDE0NFMwIDQ0Ny41IDAgMzY4YzAtMzMuMiAxMS4yLTYzLjggMzAuMS04OC4xYy45LTEuMiAxLjUtMi4yIDEuNy0yLjhjLjEtLjMgLjItLjUgLjItLjZWMTEyek0xOTIgMzY4YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4YzAtMjAuOSAxMy40LTM4LjcgMzItNDUuM1YyNzJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY1MC43YzE4LjYgNi42IDMyIDI0LjQgMzIgNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVRdWFydGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCA2NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWMjc2LjVjMCAxNy4zLTcuMSAzMS45LTE1LjMgNDIuNUM4Ni4yIDMzMi42IDgwIDM0OS41IDgwIDM2OGMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMTguNS02LjItMzUuNC0xNi43LTQ4LjljLTguMi0xMC42LTE1LjMtMjUuMi0xNS4zLTQyLjVWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek00OCAxMTJDNDggNTAuMiA5OC4xIDAgMTYwIDBzMTEyIDUwLjEgMTEyIDExMlYyNzYuNWMwIC4xIC4xIC4zIC4yIC42Yy4yIC42IC44IDEuNiAxLjcgMi44YzE4LjkgMjQuNCAzMC4xIDU1IDMwLjEgODguMWMwIDc5LjUtNjQuNSAxNDQtMTQ0IDE0NFMxNiA0NDcuNSAxNiAzNjhjMC0zMy4yIDExLjItNjMuOCAzMC4xLTg4LjFjLjktMS4yIDEuNS0yLjIgMS43LTIuOGMuMS0uMyAuMi0uNSAuMi0uNlYxMTJ6TTIwOCAzNjhjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhjMC0yMC45IDEzLjQtMzguNyAzMi00NS4zVjI3MmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djUwLjdjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZW1wZXJhdHVyZVRocmVlUXVhcnRlcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDY0Yy0yNi41IDAtNDggMjEuNS00OCA0OFYyNzYuNWMwIDE3LjMtNy4xIDMxLjktMTUuMyA0Mi41Qzg2LjIgMzMyLjYgODAgMzQ5LjUgODAgMzY4YzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0xOC41LTYuMi0zNS40LTE2LjctNDguOWMtOC4yLTEwLjYtMTUuMy0yNS4yLTE1LjMtNDIuNVYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTQ4IDExMkM0OCA1MC4yIDk4LjEgMCAxNjAgMHMxMTIgNTAuMSAxMTIgMTEyVjI3Ni41YzAgLjEgLjEgLjMgLjIgLjZjLjIgLjYgLjggMS42IDEuNyAyLjhjMTguOSAyNC40IDMwLjEgNTUgMzAuMSA4OC4xYzAgNzkuNS02NC41IDE0NC0xNDQgMTQ0UzE2IDQ0Ny41IDE2IDM2OGMwLTMzLjIgMTEuMi02My44IDMwLjEtODguMWMuOS0xLjIgMS41LTIuMiAxLjctMi44Yy4xLS4zIC4yLS41IC4yLS42VjExMnpNMjA4IDM2OGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OGMwLTIwLjkgMTMuNC0zOC43IDMyLTQ1LjNWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZWMzIyLjdjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZW5nZVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJDMTQuMyA5NiAwIDgxLjcgMCA2NHpNMCAxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJIMTkyIDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyMjRWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIyNEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbnRBcnJvd0Rvd25Ub0xpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQxLjggMTExLjljOC45IDkuOSA4LjEgMjUtMS44IDMzLjlsLTgwIDcyYy05LjEgOC4yLTIzIDguMi0zMi4xIDBsLTgwLTcyYy05LjktOC45LTEwLjctMjQtMS44LTMzLjlzMjQtMTAuNyAzMy45LTEuOGwzOS45IDM2TDEyMCAyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgMTIyLjEgMzkuOS0zNmM5LjktOC45IDI1LTguMSAzMy45IDEuOHptMTIyLjggMjIuNmMxMS41LTguNyAyNy4zLTguNyAzOC44IDBsMTY4IDEyOGM2LjYgNSAxMSAxMi41IDEyLjMgMjAuN2wyNCAxNjAgLjcgNC43YzE3LjUgLjIgMzEuNiAxNC40IDMxLjYgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIMTU5LjZsLjctNC43IDI0LTE2MGMxLjItOC4yIDUuNi0xNS43IDEyLjMtMjAuN2wxNjgtMTI4ek0zODQgNDQ4aDgwTDQwMi43IDMyNS41Yy0xLjctMy40LTUuMS01LjUtOC44LTUuNWMtNS41IDAtOS45IDQuNC05LjkgOS45VjQ0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVudEFycm93TGVmdFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OC4xIDYuMmMtOS45LTguOS0yNS04LjEtMzMuOSAxLjhzLTguMSAyNSAxLjggMzMuOUw0ODkuNSA3MiA4Ni41IDcybDMzLjUtMzAuMmM5LjktOC45IDEwLjctMjQgMS44LTMzLjlTOTcuOC0yLjcgODcuOSA2LjJsLTgwIDcyQzIuOSA4Mi43IDAgODkuMiAwIDk2czIuOSAxMy4zIDcuOSAxNy44bDgwIDcyYzkuOSA4LjkgMjUgOC4xIDMzLjktMS44czguMS0yNS0xLjgtMzMuOUw4Ni41IDEyMGw0MDIuOSAwLTMzLjUgMzAuMmMtOS45IDguOS0xMC43IDI0LTEuOCAzMy45czI0IDEwLjcgMzMuOSAxLjhsODAtNzJjNS4xLTQuNiA3LjktMTEgNy45LTE3LjhzLTIuOS0xMy4zLTcuOS0xNy44bC04MC03MnpNMzA3LjQgMTY2LjVjLTExLjUtOC43LTI3LjMtOC43LTM4LjggMGwtMTY4IDEyOGMtNi42IDUtMTEgMTIuNS0xMi4zIDIwLjdsLTI0IDE2MGMtMS40IDkuMiAxLjMgMTguNiA3LjQgMjUuNlM4Ni43IDUxMiA5NiA1MTJIMjQwaDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM2MS45YzAtNS41IDQuNC05LjkgOS45LTkuOWMzLjcgMCA3LjIgMi4xIDguOCA1LjVsNjguNCAxMzYuOGM1LjQgMTAuOCAxNi41IDE3LjcgMjguNiAxNy43SDQ2NGgxNmM5LjMgMCAxOC4yLTQuMSAyNC4yLTExLjFzOC44LTE2LjQgNy40LTI1LjZsLTI0LTE2MGMtMS4yLTguMi01LjYtMTUuNy0xMi4zLTIwLjdsLTE2OC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbnRBcnJvd1R1cm5MZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyMC4xIDQxLjhjOS45LTguOSAxMC43LTI0IDEuOC0zMy45Uzk3LjgtMi43IDg3LjkgNi4ybC04MCA3MkMyLjkgODIuNyAwIDg5LjIgMCA5NnMyLjkgMTMuMyA3LjkgMTcuOGw4MCA3MmM5LjkgOC45IDI1IDguMSAzMy45LTEuOHM4LjEtMjUtMS44LTMzLjlMODYuNSAxMjAgNDU2IDEyMGMzOS44IDAgNzIgMzIuMiA3MiA3MnY0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjE5MmMwLTY2LjMtNTMuNy0xMjAtMTIwLTEyMEw4Ni41IDcybDMzLjUtMzAuMnpNMzA3LjQgMTY2LjVjLTExLjUtOC43LTI3LjMtOC43LTM4LjggMGwtMTY4IDEyOGMtNi42IDUtMTEgMTIuNS0xMi4zIDIwLjdsLTI0IDE2MGMtMS40IDkuMiAxLjMgMTguNiA3LjQgMjUuNlM4Ni43IDUxMiA5NiA1MTJIMjQwaDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM2MS45YzAtNS41IDQuNC05LjkgOS45LTkuOWMzLjcgMCA3LjIgMi4xIDguOCA1LjVsNjguNCAxMzYuOGM1LjQgMTAuOCAxNi41IDE3LjcgMjguNiAxNy43SDQ2NGgxNmM5LjMgMCAxOC4yLTQuMSAyNC4yLTExLjFzOC44LTE2LjQgNy40LTI1LjZsLTI0LTE2MGMtMS4yLTguMi01LjYtMTUuNy0xMi4zLTIwLjdsLTE2OC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbnRBcnJvd3NEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOS44IDExMS45Yy04LjktOS45LTI0LTEwLjctMzMuOS0xLjhsLTM5LjkgMzZMMTM2IDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0Uzg4IDEwLjcgODggMjRsMCAxMjIuMS0zOS45LTM2Yy05LjktOC45LTI1LTguMS0zMy45IDEuOHMtOC4xIDI1IDEuOCAzMy45bDgwIDcyYzkuMSA4LjIgMjMgOC4yIDMyLjEgMGw4MC03MmM5LjktOC45IDEwLjctMjQgMS44LTMzLjl6bTM1MiAwYy04LjktOS45LTI0LTEwLjctMzMuOS0xLjhsLTM5LjkgMzZWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWMTQ2LjFsLTM5LjktMzZjLTkuOS04LjktMjUtOC4xLTMzLjkgMS44cy04LjEgMjUgMS44IDMzLjlsODAgNzJjOS4xIDguMiAyMyA4LjIgMzIuMSAwbDgwLTcyYzkuOS04LjkgMTAuNy0yNCAxLjgtMzMuOXpNMzA3LjQgMTY2LjVjLTExLjUtOC43LTI3LjMtOC43LTM4LjggMGwtMTY4IDEyOGMtNi42IDUtMTEgMTIuNS0xMi4zIDIwLjdsLTI0IDE2MGMtMS40IDkuMiAxLjMgMTguNiA3LjQgMjUuNlM4Ni43IDUxMiA5NiA1MTJIMjQwaDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM2MS45YzAtNS41IDQuNC05LjkgOS45LTkuOWMzLjcgMCA3LjIgMi4xIDguOCA1LjVsNjguNCAxMzYuOGM1LjQgMTAuOCAxNi41IDE3LjcgMjguNiAxNy43SDQ2NGgxNmM5LjMgMCAxOC4yLTQuMSAyNC4yLTExLjFzOC44LTE2LjQgNy40LTI1LjZsLTI0LTE2MGMtMS4yLTguMi01LjYtMTUuNy0xMi4zLTIwLjdsLTE2OC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY5LjQgNkMyODAuNS0yIDI5NS41LTIgMzA2LjYgNmwyMjQgMTYwYzcuNCA1LjMgMTIuMiAxMy41IDEzLjIgMjIuNWwzMiAyODhjMSA5LTEuOSAxOC4xLTggMjQuOXMtMTQuNyAxMC43LTIzLjggMTAuN0g0NjQgNDM1LjhjLTEyLjEgMC0yMy4yLTYuOC0yOC42LTE3LjdMMzA2LjcgMjkzLjVjLTEuNy0zLjQtNS4xLTUuNS04LjgtNS41Yy01LjUgMC05LjkgNC40LTkuOSA5LjlWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDI0MCAzMmMtOS4xIDAtMTcuOC0zLjktMjMuOC0xMC43cy05LTE1LjgtOC0yNC45bDMyLTI4OGMxLTkgNS44LTE3LjIgMTMuMi0yMi41TDI2OS40IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5Ni42IDYuNUwyMzUuOCAxMjkuMWM5LjYgMS44IDE4LjkgNS44IDI3IDEybDE2OCAxMjhjMTMuMiAxMC4xIDIyIDI0LjkgMjQuNSA0MS40bDYuMiA0MS41SDYwOGM5LjMgMCAxOC4yLTQuMSAyNC4yLTExLjFzOC44LTE2LjQgNy40LTI1LjZsLTI0LTE2MGMtMS4yLTguMi01LjYtMTUuNy0xMi4zLTIwLjdsLTE2OC0xMjhjLTExLjUtOC43LTI3LjMtOC43LTM4LjggMHptLTE1My4yIDE2MGMtMTEuNS04LjctMjcuMy04LjctMzguOCAwbC0xNjggMTI4Yy02LjYgNS0xMSAxMi41LTEyLjMgMjAuN2wtMjQgMTYwYy0xLjQgOS4yIDEuMyAxOC42IDcuNCAyNS42UzIyLjcgNTEyIDMyIDUxMkgxNzZoMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzYxLjljMC01LjUgNC40LTkuOSA5LjktOS45YzMuNyAwIDcuMiAyLjEgOC44IDUuNWw2OC40IDEzNi44YzUuNCAxMC44IDE2LjUgMTcuNyAyOC42IDE3LjdINDAwaDE2YzkuMyAwIDE4LjItNC4xIDI0LjItMTEuMXM4LjgtMTYuNCA3LjQtMjUuNmwtMjQtMTYwYy0xLjItOC4yLTUuNi0xNS43LTEyLjMtMjAuN2wtMTY4LTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVybWluYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40IDg2LjZDLTMuMSA3NC4xLTMuMSA1My45IDkuNCA0MS40czMyLjgtMTIuNSA0NS4zIDBsMTkyIDE5MmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtMTkyIDE5MmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMTc4LjcgMjU2IDkuNCA4Ni42ek0yNTYgNDE2SDU0NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRleHRIZWlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMTI4Vjk2aDY0bDAgMzIwSDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJsMC0zMjBoNjR2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY4MGMwLTI2LjUtMjEuNS00OC00OC00OEgxNjAgNDhDMjEuNSAzMiAwIDUzLjUgMCA4MHY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyek01MDIuNiA0MS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtNjQgNjRjLTkuMiA5LjItMTEuOSAyMi45LTYuOSAzNC45czE2LjYgMTkuOCAyOS42IDE5LjhoMzJWMzUySDQxNmMtMTIuOSAwLTI0LjYgNy44LTI5LjYgMTkuOHMtMi4yIDI1LjcgNi45IDM0LjlsNjQgNjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsNjQtNjRjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlzLTE2LjYtMTkuOC0yOS42LTE5LjhINTEyVjE2MGgzMmMxMi45IDAgMjQuNi03LjggMjkuNi0xOS44czIuMi0yNS43LTYuOS0zNC45bC02NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGV4dFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMMzU1LjcgMjUzLjUgNDAwLjIgOTZINTAzTDQ5NyAxMjAuMmMtNC4zIDE3LjEgNi4xIDM0LjUgMjMuMyAzOC44czM0LjUtNi4xIDM4LjgtMjMuM2wxMS00NC4xQzU3Ny42IDYxLjMgNTU0LjcgMzIgNTIzLjUgMzJIMzc2LjFoLS4zSDIwNC41Yy0yMiAwLTQxLjIgMTUtNDYuNiAzNi40bC02LjMgMjUuMkwzOC44IDUuMXptMTY4IDEzMS43Yy4xLS4zIC4yLS43IC4zLTFMMjE3IDk2SDMzMy43TDMwMS4zIDIxMC44bC05NC41LTc0LjF6TTMyNy4zIDM1My45TDI3Mi45IDMxMSAyNDMuMyA0MTZIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMDkuOGwxNy42LTYyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRleHRXaWR0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAxMjhWOTZIMTkybDAgMTI4SDE3NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNTZsMC0xMjhIMzg0djMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhIMjI0IDQ4QzIxLjUgMzIgMCA1My41IDAgODB2NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMnpNOS40IDM2MS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w2NCA2NGM5LjIgOS4yIDIyLjkgMTEuOSAzNC45IDYuOXMxOS44LTE2LjYgMTkuOC0yOS42VjQxNkgzMjB2MzJjMCAxMi45IDcuOCAyNC42IDE5LjggMjkuNnMyNS43IDIuMiAzNC45LTYuOWw2NC02NGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtNjQtNjRjLTkuMi05LjItMjIuOS0xMS45LTM0LjktNi45cy0xOS44IDE2LjYtMTkuOCAyOS42djMySDEyOFYzMjBjMC0xMi45LTcuOC0yNC42LTE5LjgtMjkuNnMtMjUuNy0yLjItMzQuOSA2LjlsLTY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVybW9tZXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAzODIuMVYyOTMuM2MwLTE0LjkgNS45LTI5LjEgMTYuNC0zOS42bDI3LjMtMjcuMyA1NyA1N2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTU3LTU3IDQxLjQtNDEuNCA1NyA1N2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTU3LTU3IDQxLjQtNDEuNCA1NyA1N2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTU3LTU3IDQ1LjUtNDUuNUMzNTUuMiAxMC45IDM4MS40IDAgNDA4LjggMEM0NjUuOCAwIDUxMiA0Ni4yIDUxMiAxMDMuMmMwIDI3LjQtMTAuOSA1My42LTMwLjIgNzNMMjU4LjMgMzk5LjZjLTEwLjUgMTAuNS0yNC43IDE2LjQtMzkuNiAxNi40SDEyOS45TDQxIDUwNWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw4OS04OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGh1bWJzRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuNCA0NzkuMWMyNi01LjIgNDIuOS0zMC41IDM3LjctNTYuNWwtMi4zLTExLjRjLTUuMy0yNi43LTE1LjEtNTIuMS0yOC44LTc1LjJINDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4YzAtMTguNS0xMC41LTM0LjYtMjUuOS00Mi42QzQ5NyAyMzYuNiA1MDQgMjIzLjEgNTA0IDIwOGMwLTIzLjQtMTYuOC00Mi45LTM4LjktNDcuMWM0LjQtNy4zIDYuOS0xNS44IDYuOS0yNC45YzAtMjEuMy0xMy45LTM5LjQtMzMuMS00NS42Yy43LTMuMyAxLjEtNi44IDEuMS0xMC40YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDI5NC41Yy0xOSAwLTM3LjUgNS42LTUzLjMgMTYuMUwyMDIuNyA3My44QzE3NiA5MS42IDE2MCAxMjEuNiAxNjAgMTUzLjdWMTkydjQ4IDI0LjljMCAyOS4yIDEzLjMgNTYuNyAzNiA3NWw3LjQgNS45YzI2LjUgMjEuMiA0NC42IDUxIDUxLjIgODQuMmwyLjMgMTEuNGM1LjIgMjYgMzAuNSA0Mi45IDU2LjUgMzcuN3pNMzIgMzg0SDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDk2IDAgMTEwLjMgMCAxMjhWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaHVtYnNVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuNCAzMi45YzI2IDUuMiA0Mi45IDMwLjUgMzcuNyA1Ni41bC0yLjMgMTEuNGMtNS4zIDI2LjctMTUuMSA1Mi4xLTI4LjggNzUuMkg0NjRjMjYuNSAwIDQ4IDIxLjUgNDggNDhjMCAxOC41LTEwLjUgMzQuNi0yNS45IDQyLjZDNDk3IDI3NS40IDUwNCAyODguOSA1MDQgMzA0YzAgMjMuNC0xNi44IDQyLjktMzguOSA0Ny4xYzQuNCA3LjMgNi45IDE1LjggNi45IDI0LjljMCAyMS4zLTEzLjkgMzkuNC0zMy4xIDQ1LjZjLjcgMy4zIDEuMSA2LjggMS4xIDEwLjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMjk0LjVjLTE5IDAtMzcuNS01LjYtNTMuMy0xNi4xbC0zOC41LTI1LjdDMTc2IDQyMC40IDE2MCAzOTAuNCAxNjAgMzU4LjNWMzIwIDI3MiAyNDcuMWMwLTI5LjIgMTMuMy01Ni43IDM2LTc1bDcuNC01LjljMjYuNS0yMS4yIDQ0LjYtNTEgNTEuMi04NC4ybDIuMy0xMS40YzUuMi0yNiAzMC41LTQyLjkgNTYuNS0zNy43ek0zMiAxOTJIOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyMjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRodW1idGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMkMzMiAxNC4zIDQ2LjMgMCA2NCAwSDMyMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyOTAuNWwxMS40IDE0OC4yYzM2LjcgMTkuOSA2NS43IDUzLjIgNzkuNSA5NC43bDEgM2MzLjMgOS44IDEuNiAyMC41LTQuNCAyOC44cy0xNS43IDEzLjMtMjYgMTMuM0gzMmMtMTAuMyAwLTE5LjktNC45LTI2LTEzLjNzLTcuNy0xOS4xLTQuNC0yOC44bDEtM2MxMy44LTQxLjUgNDIuOC03NC44IDc5LjUtOTQuN0w5My41IDY0SDY0QzQ2LjMgNjQgMzIgNDkuNyAzMiAzMnpNMTYwIDM4NGg2NHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRpY2tldFNpbXBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0IDI4LjcgNjQgNjR2NjRjMCA4LjgtNy40IDE1LjctMTUuNyAxOC42QzU0MS41IDIxNy4xIDUyOCAyMzUgNTI4IDI1NnMxMy41IDM4LjkgMzIuMyA0NS40YzguMyAyLjkgMTUuNyA5LjggMTUuNyAxOC42djY0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYzMjBjMC04LjggNy40LTE1LjcgMTUuNy0xOC42QzM0LjUgMjk0LjkgNDggMjc3IDQ4IDI1NnMtMTMuNS0zOC45LTMyLjMtNDUuNEM3LjQgMjA3LjcgMCAyMDAuOCAwIDE5MlYxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRpY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOHY2NGMwIDguOCA3LjQgMTUuNyAxNS43IDE4LjZDMzQuNSAyMTcuMSA0OCAyMzUgNDggMjU2cy0xMy41IDM4LjktMzIuMyA0NS40QzcuNCAzMDQuMyAwIDMxMS4yIDAgMzIwdjY0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYzMjBjMC04LjgtNy40LTE1LjctMTUuNy0xOC42QzU0MS41IDI5NC45IDUyOCAyNzcgNTI4IDI1NnMxMy41LTM4LjkgMzIuMy00NS40YzguMy0yLjkgMTUuNy05LjggMTUuNy0xOC42VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEg2NHptNjQgMTEybDAgMTYwYzAgOC44IDcuMiAxNiAxNiAxNkg0MzJjOC44IDAgMTYtNy4yIDE2LTE2VjE3NmMwLTguOC03LjItMTYtMTYtMTZIMTQ0Yy04LjggMC0xNiA3LjItMTYgMTZ6TTk2IDE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0NDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaW1lbGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggNzJhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0zMiA5Ny4zYzI4LjMtMTIuMyA0OC00MC41IDQ4LTczLjNjMC00NC4yLTM1LjgtODAtODAtODBTNDggNTEuOCA0OCA5NmMwIDMyLjggMTkuNyA2MSA0OCA3My4zVjIyNEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgyODh2NTQuN2MtMjguMyAxMi4zLTQ4IDQwLjUtNDggNzMuM2MwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMzIuOC0xOS43LTYxLTQ4LTczLjNWMjg4SDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg1NDRWMTY5LjNjMjguMy0xMi4zIDQ4LTQwLjUgNDgtNzMuM2MwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MGMwIDMyLjggMTkuNyA2MSA0OCA3My4zVjIyNEgxNjBWMTY5LjN6TTQ4OCA5NmEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwek0zMjAgMzkyYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9nZ2xlT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxMjhjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhzLTU3LjMgMTI4LTEyOCAxMjhIMTkyYy03MC43IDAtMTI4LTU3LjMtMTI4LTEyOHM1Ny4zLTEyOCAxMjgtMTI4SDM4NHpNNTc2IDI1NmMwLTEwNi04Ni0xOTItMTkyLTE5MkgxOTJDODYgNjQgMCAxNTAgMCAyNTZTODYgNDQ4IDE5MiA0NDhIMzg0YzEwNiAwIDE5Mi04NiAxOTItMTkyek0xOTIgMzUyYTk2IDk2IDAgMSAwIDAtMTkyIDk2IDk2IDAgMSAwIDAgMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2dnbGVPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNjRDODYgNjQgMCAxNTAgMCAyNTZTODYgNDQ4IDE5MiA0NDhIMzg0YzEwNiAwIDE5Mi04NiAxOTItMTkycy04Ni0xOTItMTkyLTE5MkgxOTJ6bTE5MiA5NmE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9pbGV0UGFwZXJTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43bC0xMDkuNy04NkM1NjkuOSAzNzQgNjA4IDI5MS45IDYwOCAxOTJDNjA4IDg2IDU2NSAwIDUxMiAwcy05NiA4Ni05NiAxOTJjMCA0OS4xIDkuMiA5My45IDI0LjQgMTI3LjlsLTU5LTQ2LjJjMS42LTI0LjggMi42LTUyIDIuNi04MS42YzAtNjUuNSAxMy4yLTE0Mi40IDYwLjItMTkySDE2MGMtMjQuOCAwLTQ3LjQgMTguOC02NC40IDQ5LjZMMzguOCA1LjF6TTM2Ny4zIDM4NS40TDY2LjUgMTQ4LjRDNjQuOSAxNjIuNCA2NCAxNzcgNjQgMTkyYzAgMTAxLjUtMTEuNyAxNzAuOC0yMyAyMTMuOWMtNS4xIDE5LjQtMTAuNyAzOS45LTIwLjUgNTcuN2MtNS45IDkuOS02LjEgMjIuMS0uNCAzMi4yUzM2LjUgNTEyIDQ4IDUxMkgyODUuOWMyMi4zIDAgNDUuNC0xMi4xIDU1LjQtMzYuMWM3LjQtMTcuNyAxNy41LTQ3LjIgMjYtOTAuNnpNNTQ0IDE5MmMwIDM1LjMtMTQuMyA2NC0zMiA2NHMtMzItMjguNy0zMi02NHMxNC4zLTY0IDMyLTY0czMyIDI4LjcgMzIgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvaWxldFBhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0NC4yIDBDMzk3LjIgNDkuNiAzODQgMTI2LjUgMzg0IDE5MmMwIDE1OC44LTI3LjMgMjQ3LTQyLjcgMjgzLjljLTEwIDI0LTMzLjIgMzYuMS01NS40IDM2LjFINDhjLTExLjUgMC0yMi4yLTYuMi0yNy44LTE2LjJzLTUuNi0yMi4zIC40LTMyLjJjOS44LTE3LjcgMTUuNC0zOC4yIDIwLjUtNTcuN0M1Mi4zIDM2Mi44IDY0IDI5My41IDY0IDE5MkM2NCA4NiAxMDcgMCAxNjAgMEg0NDQuMnpNNTEyIDM4NGMtNTMgMC05Ni04Ni05Ni0xOTJTNDU5IDAgNTEyIDBzOTYgODYgOTYgMTkycy00MyAxOTItOTYgMTkyem0wLTEyOGMxNy43IDAgMzItMjguNyAzMi02NHMtMTQuMy02NC0zMi02NHMtMzIgMjguNy0zMiA2NHMxNC4zIDY0IDMyIDY0ek0xNDQgMjA4YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bTY0IDBhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptNDggMTZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem04MC0xNmExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2lsZXRQb3J0YWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyVjY0SDMyMFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDAgMCAxNC4zIDAgMzJ6TTI0IDk2SDB2MjRWNDg4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjR2LThIMjcydjhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYxMjAgOTZIMjk2IDI0ek0yNTYgMjQwdjY0YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI0MGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2lsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgMEMxMC43IDAgMCAxMC43IDAgMjRTMTAuNyA0OCAyNCA0OGg4VjE5Ni45Yy0xLjkgMS40LTMuOCAyLjktNS42IDQuNEMxMC45IDIxNC41IDAgMjMyLjkgMCAyNTZjMCA0Ni45IDE0LjMgODQuMSAzNyAxMTIuNWMxNC4yIDE3LjcgMzEuMSAzMS4zIDQ4LjUgNDEuOEw2NS42IDQ2OS45Yy0zLjMgOS44LTEuNiAyMC41IDQuNCAyOC44czE1LjcgMTMuMyAyNiAxMy4zSDM1MmMxMC4zIDAgMTkuOS00LjkgMjYtMTMuM3M3LjctMTkuMSA0LjQtMjguOGwtMTkuOC01OS41YzE3LjQtMTAuNSAzNC4zLTI0LjEgNDguNS00MS44YzIyLjctMjguNCAzNy02NS41IDM3LTExMi41YzAtMjMuMS0xMC45LTQxLjUtMjYuNC01NC42Yy0xLjgtMS41LTMuNy0zLTUuNi00LjRWNDhoOGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyNHpNMzg0IDI1Ni4zYzAgMS0uMyAyLjYtMy44IDUuNmMtNC44IDQuMS0xNCA5LTI5LjMgMTMuNEMzMjAuNSAyODQgMjc2LjEgMjg4IDIyNCAyODhzLTk2LjUtNC0xMjYuOS0xMi44Yy0xNS4zLTQuNC0yNC41LTkuMy0yOS4zLTEzLjRjLTMuNS0zLTMuOC00LjYtMy44LTUuNmwwLS4zIDAtLjFjMC0xIDAtMi41IDMuOC01LjhjNC44LTQuMSAxNC05IDI5LjMtMTMuNEMxMjcuNSAyMjggMTcxLjkgMjI0IDIyNCAyMjRzOTYuNSA0IDEyNi45IDEyLjhjMTUuMyA0LjQgMjQuNSA5LjMgMjkuMyAxMy40YzMuOCAzLjIgMy44IDQuOCAzLjggNS44bDAgLjEgMCAuM3pNMzI4LjIgMzg0bC0uMiAuNSAwLS41aC4yek0xMTIgNjRoMzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2lsZXRzUG9ydGFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMEgyMjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRIMFYzMkMwIDE0LjMgMTQuMyAwIDMyIDB6TTAgOTZIMjQgMjMyaDI0djI0VjQ4OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNHYtOEg0OHY4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjEyMCA5NnpNMTkyIDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNnpNMzUyIDBINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY0SDMyMFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMzIwIDk2aDI0SDU1MmgyNHYyNFY0ODhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjR2LThIMzY4djhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMTIwIDk2ek01MTIgMjI0Yy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb29sYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiA4OGwwIDQwIDE2MCAwIDAtNDBjMC00LjQtMy42LTgtOC04TDE4NCA4MGMtNC40IDAtOCAzLjYtOCA4em0tNDggNDBsMC00MGMwLTMwLjkgMjUuMS01NiA1Ni01NmwxNDQgMGMzMC45IDAgNTYgMjUuMSA1NiA1NmwwIDQwIDI4LjEgMGMxMi43IDAgMjQuOSA1LjEgMzMuOSAxNC4xbDUxLjkgNTEuOWM5IDkgMTQuMSAyMS4yIDE0LjEgMzMuOWwwIDkyLjEtMTI4IDAgMC0zMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDMyLTEyOCAwIDAtMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAzMkwwIDMyMGwwLTkyLjFjMC0xMi43IDUuMS0yNC45IDE0LjEtMzMuOWw1MS45LTUxLjljOS05IDIxLjItMTQuMSAzMy45LTE0LjFsMjguMSAwek0wIDQxNmwwLTY0IDEyOCAwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMTI4IDBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwxMjggMCAwIDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvb3RoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni4xIDUyLjFDMTY5LjMgMzkuMSAxNDguNyAzMiAxMjcuNSAzMkM3NC43IDMyIDMyIDc0LjcgMzIgMTI3LjV2Ni4yYzAgMTUuOCAzLjcgMzEuMyAxMC43IDQ1LjVsMjMuNSA0Ny4xYzQuNSA4LjkgNy42IDE4LjQgOS40IDI4LjJsMzYuNyAyMDUuOGMyIDExLjIgMTEuNiAxOS40IDIyLjkgMTkuOHMyMS40LTcuNCAyNC0xOC40bDI4LjktMTIxLjNDMTkyLjIgMzIzLjcgMjA3IDMxMiAyMjQgMzEyczMxLjggMTEuNyAzNS44IDI4LjNsMjguOSAxMjEuM2MyLjYgMTEuMSAxMi43IDE4LjggMjQgMTguNHMyMC45LTguNiAyMi45LTE5LjhsMzYuNy0yMDUuOGMxLjgtOS44IDQuOS0xOS4zIDkuNC0yOC4ybDIzLjUtNDcuMWM3LjEtMTQuMSAxMC43LTI5LjcgMTAuNy00NS41di0yLjFjMC01NS00NC42LTk5LjYtOTkuNi05OS42Yy0yNC4xIDAtNDcuNCA4LjgtNjUuNiAyNC42bC0zLjIgMi44IDE5LjUgMTUuMmM3IDUuNCA4LjIgMTUuNSAyLjggMjIuNXMtMTUuNSA4LjItMjIuNSAyLjhsLTI0LjQtMTktMzctMjguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9yaWlHYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgODBjMCAyNi41IDIxLjUgNDggNDggNDhINjR2NjRoNjRWMTI4aDk2djY0aDY0VjEyOGg5NnY2NGg2NFYxMjhoMTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMuNEM1MTIgNiA1MDYgMCA0OTguNiAwYy0xLjcgMC0zLjQgLjMtNSAxbC00OSAxOS42QzQyNS43IDI4LjEgNDA1LjUgMzIgMzg1LjIgMzJIMTI2LjhjLTIwLjQgMC00MC41LTMuOS01OS40LTExLjRMMTguNCAxYy0xLjYtLjYtMy4zLTEtNS0xQzYgMCAwIDYgMCAxMy40Vjgwek02NCAyODhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjg4SDM4NFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyODhoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvcm5hZG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMlY0NS42QzAgNjIuNyAxLjcgNzkuNiA1IDk2SDM1Ny44YzMuMi02LjkgNy41LTEzLjMgMTMtMTguOGwzOC42LTM4LjZjNC4yLTQuMiA2LjYtMTAgNi42LTE2QzQxNiAxMC4xIDQwNS45IDAgMzkzLjQgMEgzMkMxNC4zIDAgMCAxNC4zIDAgMzJ6bTM1Mi4yIDk2SDEzLjZjMTIuMiAzNS45IDMyLjMgNjguNyA1OC44IDk2SDQxMmwtNDcuMi02Mi45Yy03LjMtOS43LTExLjYtMjEuMi0xMi42LTMzLjF6bS0yMjYgMTM4LjJsMTE2LjQgNjguNWM4LjIgNC44IDE1LjggMTAuNyAyMi41IDE3LjNINDQ1YzItOS44IDMtMTkuOSAzLTMwLjFjMC0yMy01LjMtNDUuNS0xNS4zLTY1LjlIMTEwLjJjNS4yIDMuNiAxMC41IDcgMTYgMTAuMnpNMjg4IDM4NGMxMC4zIDIxLjQgMTMuOCA0NS41IDkuOSA2OWwtNS45IDM1LjdjLTIgMTIuMiA3LjQgMjMuNCAxOS44IDIzLjRjNS4zIDAgMTAuNC0yLjEgMTQuMi01LjlsNzguMi03OC4yYzEyLjgtMTIuOCAyMy4xLTI3LjcgMzAuNC00My45SDI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG93ZXJCcm9hZGNhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAuMyA0NEM2OS44IDY5LjkgNjQgOTguMiA2NCAxMjhzNS44IDU4LjEgMTYuMyA4NGM2LjYgMTYuNC0xLjMgMzUtMTcuNyA0MS43cy0zNS0xLjMtNDEuNy0xNy43QzcuNCAyMDIuNiAwIDE2Ni4xIDAgMTI4UzcuNCA1My40IDIwLjkgMjBDMjcuNiAzLjYgNDYuMi00LjMgNjIuNiAyLjNTODYuOSAyNy42IDgwLjMgNDR6TTU1NS4xIDIwQzU2OC42IDUzLjQgNTc2IDg5LjkgNTc2IDEyOHMtNy40IDc0LjYtMjAuOSAxMDhjLTYuNiAxNi40LTI1LjMgMjQuMy00MS43IDE3LjdTNDg5LjEgMjI4LjQgNDk1LjcgMjEyYzEwLjUtMjUuOSAxNi4zLTU0LjIgMTYuMy04NHMtNS44LTU4LjEtMTYuMy04NEM0ODkuMSAyNy42IDQ5NyA5IDUxMy40IDIuM3MzNSAxLjMgNDEuNyAxNy43ek0zNTIgMTI4YzAgMjMuNy0xMi45IDQ0LjQtMzIgNTUuNFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTgzLjRjLTE5LjEtMTEuMS0zMi0zMS43LTMyLTU1LjRjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHpNMTcwLjYgNzYuOEMxNjMuOCA5Mi40IDE2MCAxMDkuNyAxNjAgMTI4czMuOCAzNS42IDEwLjYgNTEuMmM3LjEgMTYuMi0uMyAzNS4xLTE2LjUgNDIuMXMtMzUuMS0uMy00Mi4xLTE2LjVjLTEwLjMtMjMuNi0xNi00OS42LTE2LTc2LjhzNS43LTUzLjIgMTYtNzYuOGM3LjEtMTYuMiAyNS45LTIzLjYgNDIuMS0xNi41czIzLjYgMjUuOSAxNi41IDQyLjF6TTQ2NCA1MS4yYzEwLjMgMjMuNiAxNiA0OS42IDE2IDc2LjhzLTUuNyA1My4yLTE2IDc2LjhjLTcuMSAxNi4yLTI1LjkgMjMuNi00Mi4xIDE2LjVzLTIzLjYtMjUuOS0xNi41LTQyLjFjNi44LTE1LjYgMTAuNi0zMi45IDEwLjYtNTEuMnMtMy44LTM1LjYtMTAuNi01MS4yYy03LjEtMTYuMiAuMy0zNS4xIDE2LjUtNDIuMXMzNS4xIC4zIDQyLjEgMTYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG93ZXJDZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyLjYgMi4zQzQ2LjItNC4zIDI3LjYgMy42IDIwLjkgMjBDNy40IDUzLjQgMCA4OS45IDAgMTI4czcuNCA3NC42IDIwLjkgMTA4YzYuNiAxNi40IDI1LjMgMjQuMyA0MS43IDE3LjdTODYuOSAyMjguNCA4MC4zIDIxMkM2OS44IDE4Ni4xIDY0IDE1Ny44IDY0IDEyOHM1LjgtNTguMSAxNi4zLTg0Qzg2LjkgMjcuNiA3OSA5IDYyLjYgMi4zem00NTAuOCAwQzQ5NyA5IDQ4OS4xIDI3LjYgNDk1LjcgNDRDNTA2LjIgNjkuOSA1MTIgOTguMiA1MTIgMTI4cy01LjggNTguMS0xNi4zIDg0Yy02LjYgMTYuNCAxLjMgMzUgMTcuNyA0MS43czM1LTEuMyA0MS43LTE3LjdjMTMuNS0zMy40IDIwLjktNjkuOSAyMC45LTEwOHMtNy40LTc0LjYtMjAuOS0xMDhDNTQ4LjQgMy42IDUyOS44LTQuMyA1MTMuNCAyLjN6TTM0MC4xIDE2NS4yYzcuNS0xMC41IDExLjktMjMuMyAxMS45LTM3LjJjMC0zNS4zLTI4LjctNjQtNjQtNjRzLTY0IDI4LjctNjQgNjRjMCAxMy45IDQuNCAyNi43IDExLjkgMzcuMkw5OC45IDQ2Ni44Yy03LjMgMTYuMS0uMiAzNS4xIDE1LjkgNDIuNHMzNS4xIC4yIDQyLjQtMTUuOUwxNzcuNyA0NDhIMzk4LjNsMjAuNiA0NS4yYzcuMyAxNi4xIDI2LjMgMjMuMiA0Mi40IDE1LjlzMjMuMi0yNi4zIDE1LjktNDIuNEwzNDAuMSAxNjUuMnpNMzY5LjIgMzg0SDIwNi44bDE0LjUtMzJIMzU0LjdsMTQuNSAzMnpNMjg4IDIwNS4zTDMyNS42IDI4OEgyNTAuNEwyODggMjA1LjN6TTE2My4zIDczLjZjNS4zLTEyLjEtLjItMjYuMy0xMi40LTMxLjZzLTI2LjMgLjItMzEuNiAxMi40QzEwOS41IDc3IDEwNCAxMDEuOSAxMDQgMTI4czUuNSA1MSAxNS4zIDczLjZjNS4zIDEyLjEgMTkuNSAxNy43IDMxLjYgMTIuNHMxNy43LTE5LjUgMTIuNC0zMS42QzE1NiAxNjUuOCAxNTIgMTQ3LjQgMTUyIDEyOHM0LTM3LjggMTEuMy01NC40ek00NTYuNyA1NC40Yy01LjMtMTIuMS0xOS41LTE3LjctMzEuNi0xMi40cy0xNy43IDE5LjUtMTIuNCAzMS42QzQyMCA5MC4yIDQyNCAxMDguNiA0MjQgMTI4cy00IDM3LjgtMTEuMyA1NC40Yy01LjMgMTIuMSAuMiAyNi4zIDEyLjQgMzEuNnMyNi4zLS4yIDMxLjYtMTIuNEM0NjYuNSAxNzkgNDcyIDE1NC4xIDQ3MiAxMjhzLTUuNS01MS0xNS4zLTczLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvd2VyT2JzZXJ2YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQxLjcgMy40YzktNC41IDE5LjYtNC41IDI4LjYgMGwxNjAgODBjMTUuOCA3LjkgMjIuMiAyNy4xIDE0LjMgNDIuOUM0MzkgMTM3LjUgNDI3LjcgMTQ0IDQxNiAxNDR2ODBjMCAxNy43LTE0LjMgMzItMzIgMzJoLTQuOWwzMiAxOTJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM4NC41Yy0uNCAwLS44IDAtMS4xIDBIMTI4LjZjLS40IDAtLjggMC0xLjEgMEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg2OC45bDMyLTE5MkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE0NGMtMTEuNyAwLTIzLTYuNS0yOC42LTE3LjdjLTcuOS0xNS44LTEuNS0zNSAxNC4zLTQyLjlsMTYwLTgwek0zMTQuNSA0NDhMMjU2IDM5OS4yIDE5Ny41IDQ0OGgxMTd6TTE5Ny44IDI1NmwtNC43IDI4LjNMMjU2IDMzNi44bDYyLjktNTIuNUwzMTQuMiAyNTZIMTk3Ljh6bS0xMy45IDgzLjJsLTExLjIgNjdMMjE4LjUgMzY4bC0zNC42LTI4Ljh6TTI5My41IDM2OGw0NS44IDM4LjEtMTEuMi02N0wyOTMuNSAzNjh6TTE3NiAxMjhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZIMzM2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDE3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhY3RvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA2NGMwLTM1LjMgMjguNy02NCA2NC02NEgyNjYuM2MyNi4yIDAgNDkuNyAxNS45IDU5LjQgNDAuMkwzNzMuNyAxNjBINDgwVjEyNi4yYzAtMjQuOCA1LjgtNDkuMyAxNi45LTcxLjZsMi41LTVjNy45LTE1LjggMjcuMS0yMi4yIDQyLjktMTQuM3MyMi4yIDI3LjEgMTQuMyA0Mi45bC0yLjUgNWMtNi43IDEzLjMtMTAuMSAyOC0xMC4xIDQyLjlWMTYwaDU2YzIyLjEgMCA0MCAxNy45IDQwIDQwdjQ1LjRjMCAxNi41LTguNSAzMS45LTIyLjYgNDAuN2wtNDMuMyAyNy4xYy0xNC4yLTUuOS0yOS44LTkuMi00Ni4xLTkuMmMtMzkuMyAwLTc0LjEgMTguOS05NiA0OEgzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJoLTguMmMtMS43IDQuOC0zLjcgOS41LTUuOCAxNC4xbDUuOCA1LjhjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTIyLjYgMjIuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBsLTUuOC01LjhjLTQuNiAyLjItOS4zIDQuMS0xNC4xIDUuOFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnYtOC4yYy00LjgtMS43LTkuNS0zLjctMTQuMS01LjhsLTUuOCA1LjhjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwTDQwLjIgNDQ5LjFjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDUuOC01LjhjLTIuMi00LjYtNC4xLTkuMy01LjgtMTQuMUgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDguMmMxLjctNC44IDMuNy05LjUgNS44LTE0LjFsLTUuOC01LjhjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDIyLjYtMjIuNmM5LTkgMjEuOS0xMS41IDMzLjEtNy42VjE5MiAxNjAgNjR6bTE3MC4zIDBIMTYwdjk2aDMySDMwNC43TDI2Ni4zIDY0ek0xNzYgMjU2YTgwIDgwIDAgMSAwIDAgMTYwIDgwIDgwIDAgMSAwIDAtMTYwek01MjggNDQ4YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMCA2NGMtNDguNiAwLTg4LTM5LjQtODgtODhjMC0yOS44IDE0LjgtNTYuMSAzNy40LTcyYzE0LjMtMTAuMSAzMS44LTE2IDUwLjYtMTZjMi43IDAgNS4zIC4xIDcuOSAuM2M0NC45IDQgODAuMSA0MS43IDgwLjEgODcuN2MwIDQ4LjYtMzkuNCA4OC04OCA4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhZGVtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0NS42IDEwOC44Yy04LjMtMTEtMjIuNy0xNS41LTM1LjctMTEuMlMyODggMTE0LjIgMjg4IDEyOFYzODRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMjRsODYuNCAxMTUuMmM2IDguMSAxNS41IDEyLjggMjUuNiAxMi44czE5LjYtNC43IDI1LjYtMTIuOEw1NzYgMjI0VjM4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjEyOGMwLTEzLjgtOC44LTI2LTIxLjktMzAuNHMtMjcuNSAuMS0zNS43IDExLjJMNDY0IDI2Ni43IDM0NS42IDEwOC44ek0wIDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg5NlYzODRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxNjBoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJDMTQuMyA5NiAwIDExMC4zIDAgMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFmZmljTGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWMzUyYzAgODguNCA3MS42IDE2MCAxNjAgMTYwczE2MC03MS42IDE2MC0xNjBWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTk2IDQxNmE0OCA0OCAwIDEgMSAwLTk2IDQ4IDQ4IDAgMSAxIDAgOTZ6bTQ4LTE3NmE0OCA0OCAwIDEgMSAtOTYgMCA0OCA0OCAwIDEgMSA5NiAwem0tNDgtODBhNDggNDggMCAxIDEgMC05NiA0OCA0OCAwIDEgMSAwIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFpbGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDMyQzIxLjUgMzIgMCA1My41IDAgODBWMzM2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDY1LjFjNy44LTU0LjMgNTQuNC05NiAxMTAuOS05NnMxMDMuMSA0MS43IDExMC45IDk2SDQ4OGg4SDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg1NDRWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTgwIDk2YzguOCAwIDE2IDcuMiAxNiAxNmwwIDEzMS4yYy0xMS40IDUuOS0yMi4yIDEyLjktMzIgMjFWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnptOTYgMTI4Yy01LjQgMC0xMC43IC4yLTE2IC43TDE2MCAxMTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDExMi43Yy01LjMtLjUtMTAuNi0uNy0xNi0uN3ptODAgMTkuMkwyNTYgMTEyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCAxNTIuMmMtOS44LTguMS0yMC42LTE1LjItMzItMjF6TTM2OCA5NmM4LjggMCAxNiA3LjIgMTYgMTZsMCAxOTJjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC0xOTJjMC04LjggNy4yLTE2IDE2LTE2em0xMTIgMTZsMCAxOTJjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC0xOTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpNMTc2IDQ4MGE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHptMC0xMTJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFpblN1YndheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwQzQzIDAgMCA0MyAwIDk2VjM1MmMwIDQ4IDM1LjIgODcuNyA4MS4xIDk0LjlsLTQ2IDQ2QzI4LjEgNDk5LjkgMzMuMSA1MTIgNDMgNTEySDgyLjdjOC41IDAgMTYuNi0zLjQgMjIuNi05LjRMMTYwIDQ0OEgyODhsNTQuNiA1NC42YzYgNiAxNC4xIDkuNCAyMi42IDkuNEg0MDVjMTAgMCAxNS0xMi4xIDcuOS0xOS4xbC00Ni00NmM0Ni03LjEgODEuMS00Ni45IDgxLjEtOTQuOVY5NmMwLTUzLTQzLTk2LTk2LTk2SDk2ek02NCAxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJoODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjEyOHpNMjcyIDk2aDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDI3MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMyek02NCAzNTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMjg4LTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhaW5UcmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg2LjggNDhjLTEyLjIgMC0yMy42IDUuNS0zMS4yIDE1TDQyLjcgNzlDMzQuNSA4OS4zIDE5LjQgOTEgOSA4Mi43Uy0zIDU5LjQgNS4zIDQ5TDE4IDMzQzM0LjcgMTIuMiA2MCAwIDg2LjggMEgzNjEuMmMyNi43IDAgNTIgMTIuMiA2OC43IDMzbDEyLjggMTZjOC4zIDEwLjQgNi42IDI1LjUtMy44IDMzLjdzLTI1LjUgNi42LTMzLjctMy43TDM5Mi41IDYzYy03LjYtOS41LTE5LjEtMTUtMzEuMi0xNUgyNDhWOTZoNDBjNTMgMCA5NiA0MyA5NiA5NlYzNTJjMCAzMC42LTE0LjMgNTcuOC0zNi42IDc1LjRsNjUuNSA2NS41YzcuMSA3LjEgMi4xIDE5LjEtNy45IDE5LjFIMzY1LjNjLTguNSAwLTE2LjYtMy40LTIyLjYtOS40TDI4OCA0NDhIMTYwbC01NC42IDU0LjZjLTYgNi0xNC4xIDkuNC0yMi42IDkuNEg0M2MtMTAgMC0xNS0xMi4xLTcuOS0xOS4xbDY1LjUtNjUuNUM3OC4zIDQwOS44IDY0IDM4Mi42IDY0IDM1MlYxOTJjMC01MyA0My05NiA5Ni05Nmg0MFY0OEg4Ni44ek0xNjAgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDE2MHptMzIgMTkyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTk2IDMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM0MyAwIDAgNDMgMCA5NlYzNTJjMCA0OCAzNS4yIDg3LjcgODEuMSA5NC45bC00NiA0NkMyOC4xIDQ5OS45IDMzLjEgNTEyIDQzIDUxMkg4Mi43YzguNSAwIDE2LjYtMy40IDIyLjYtOS40TDE2MCA0NDhIMjg4bDU0LjYgNTQuNmM2IDYgMTQuMSA5LjQgMjIuNiA5LjRINDA1YzEwIDAgMTUtMTIuMSA3LjktMTkuMWwtNDYtNDZjNDYtNy4xIDgxLjEtNDYuOSA4MS4xLTk0LjlWOTZjMC01My00My05Ni05Ni05Nkg5NnpNNjQgOTZjMC0xNy43IDE0LjMtMzIgMzItMzJIMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY5NnpNMjI0IDI4OGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYW5zZ2VuZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAwYzYuNSAwIDEyLjMgMy45IDE0LjggOS45czEuMSAxMi45LTMuNSAxNy40bC0zMSAzMUwxMTIgNzguMWw3LTdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC03IDcgMTUuMiAxNS4yQzE4Ny43IDEwNy42IDIyMC41IDk2IDI1NiA5NnM2OC4zIDExLjYgOTQuOSAzMS4ybDY4LjgtNjguOC0zMS0zMWMtNC42LTQuNi01LjktMTEuNS0zLjUtMTcuNHM4LjMtOS45IDE0LjgtOS45aDk2YzguOCAwIDE2IDcuMiAxNiAxNnY5NmMwIDYuNS0zLjkgMTIuMy05LjkgMTQuOHMtMTIuOSAxLjEtMTcuNC0zLjVsLTMxLTMxLTY4LjggNjguOEM0MDQuNCAxODcuNyA0MTYgMjIwLjUgNDE2IDI1NmMwIDgwLjItNTkgMTQ2LjYtMTM2IDE1OC4yVjQzMmgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyODB2OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNHYtOEgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoMTZWNDE0LjJDMTU1IDQwMi42IDk2IDMzNi4yIDk2IDI1NmMwLTM1LjUgMTEuNi02OC4zIDMxLjItOTQuOUwxMTIgMTQ1LjlsLTcgN2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw3LTdMNTguMyA5Mi4zbC0zMSAzMWMtNC42IDQuNi0xMS41IDUuOS0xNy40IDMuNVMwIDExOC41IDAgMTEyVjE2QzAgNy4yIDcuMiAwIDE2IDBoOTZ6TTM1MiAyNTZhOTYgOTYgMCAxIDAgLTE5MiAwIDk2IDk2IDAgMSAwIDE5MiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFzaEFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYzLjggMEgyODQuMmMxMi4xIDAgMjMuMiA2LjggMjguNiAxNy43TDMyMCAzMmg5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0UzE0LjMgMzIgMzIgMzJoOTZsNy4yLTE0LjNDMTQwLjYgNi44IDE1MS43IDAgMTYzLjggMHpNMzIgMTI4SDQxNkwzOTQuOCA0NjdjLTEuNiAyNS4zLTIyLjYgNDUtNDcuOSA0NUgxMDEuMWMtMjUuMyAwLTQ2LjMtMTkuNy00Ny45LTQ1TDMyIDEyOHptMTkyIDY0Yy02LjQgMC0xMi41IDIuNS0xNyA3bC04MCA4MGMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDM5LTM5VjQwOGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI3My45bDM5IDM5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtODAtODBjLTQuNS00LjUtMTAuNi03LTE3LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYXNoQ2FuQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjMuOCAwSDI4NC4yYzEyLjEgMCAyMy4yIDYuOCAyOC42IDE3LjdMMzIwIDMyaDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyQzE0LjMgOTYgMCA4MS43IDAgNjRTMTQuMyAzMiAzMiAzMmg5Nmw3LjItMTQuM0MxNDAuNiA2LjggMTUxLjcgMCAxNjMuOCAwek0zMiAxMjhINDE2VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg5NmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4em0xOTIgNjRjLTYuNCAwLTEyLjUgMi41LTE3IDdsLTgwIDgwYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsMzktMzlWNDA4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjczLjlsMzkgMzljOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC04MC04MGMtNC41LTQuNS0xMC42LTctMTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhc2hDYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTM1LjIgMTcuN0MxNDAuNiA2LjggMTUxLjcgMCAxNjMuOCAwSDI4NC4yYzEyLjEgMCAyMy4yIDYuOCAyOC42IDE3LjdMMzIwIDMyaDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyQzE0LjMgOTYgMCA4MS43IDAgNjRTMTQuMyAzMiAzMiAzMmg5Nmw3LjItMTQuM3pNMzIgMTI4SDQxNlY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIOTZjLTM1LjMgMC02NC0yOC43LTY0LTY0VjEyOHptOTYgNjRjLTguOCAwLTE2IDcuMi0xNiAxNlY0MzJjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyMDhjMC04LjgtNy4yLTE2LTE2LTE2em05NiAwYy04LjggMC0xNiA3LjItMTYgMTZWNDMyYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNnptOTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2VjQzMmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjIwOGMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzNS4yIDE3LjdMMTI4IDMySDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRTMTQuMyA5NiAzMiA5Nkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwbC03LjItMTQuM0MzMDcuNCA2LjggMjk2LjMgMCAyODQuMiAwSDE2My44Yy0xMi4xIDAtMjMuMiA2LjgtMjguNiAxNy43ek00MTYgMTI4SDMyTDUzLjIgNDY3YzEuNiAyNS4zIDIyLjYgNDUgNDcuOSA0NUgzNDYuOWMyNS4zIDAgNDYuMy0xOS43IDQ3LjktNDVMNDE2IDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJlZUNpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDk2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjE5Mmg0MFYxMjBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY3MmgyNGMyNi41IDAgNDggMjEuNSA0OCA0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDMyIDMzNmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDh6bTY0IDMydjMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWODBjMC04LjgtNy4yLTE2LTE2LTE2SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNiA4MGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTc2YzAtOC44LTcuMi0xNi0xNi0xNkgzNjh6TTM1MiAyNzJ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNzYtMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI3MmMwLTguOC03LjItMTYtMTYtMTZINTI4ek01MTIgMzY4djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNkg1MjhjLTguOCAwLTE2IDcuMi0xNiAxNnpNMjI0IDE2MGMwIDYtMSAxMS0yIDE2YzIwIDE0IDM0IDM4IDM0IDY0YzAgNDUtMzYgODAtODAgODBIMTYwVjQ4MGMwIDE4LTE1IDMyLTMyIDMyYy0xOCAwLTMyLTE0LTMyLTMyVjMyMEg4MGMtNDUgMC04MC0zNS04MC04MGMwLTI2IDEzLTUwIDMzLTY0Yy0xLTUtMS0xMC0xLTE2YzAtNTMgNDItOTYgOTYtOTZjNTMgMCA5NiA0MyA5NiA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTAuNiA1LjlMNjIgMTY5LjRjLTMuOSA0LjItNiA5LjgtNiAxNS41QzU2IDE5Ny43IDY2LjMgMjA4IDc5LjEgMjA4SDEwNEwzMC42IDI4MS40Yy00LjIgNC4yLTYuNiAxMC02LjYgMTZDMjQgMzA5LjkgMzQuMSAzMjAgNDYuNiAzMjBIODBMNS40IDQwOS41QzEuOSA0MTMuNyAwIDQxOSAwIDQyNC41YzAgMTMgMTAuNSAyMy41IDIzLjUgMjMuNUgxOTJ2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0NDhINDI0LjVjMTMgMCAyMy41LTEwLjUgMjMuNS0yMy41YzAtNS41LTEuOS0xMC44LTUuNC0xNUwzNjggMzIwaDMzLjRjMTIuNSAwIDIyLjYtMTAuMSAyMi42LTIyLjZjMC02LTIuNC0xMS44LTYuNi0xNkwzNDQgMjA4aDI0LjljMTIuNyAwIDIzLjEtMTAuMyAyMy4xLTIzLjFjMC01LjctMi4xLTExLjMtNi0xNS41TDIzNy40IDUuOUMyMzQgMi4xIDIyOS4xIDAgMjI0IDBzLTEwIDIuMS0xMy40IDUuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJpYW5nbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJjMTQuMiAwIDI3LjMgNy41IDM0LjUgMTkuOGwyMTYgMzY4YzcuMyAxMi40IDcuMyAyNy43IC4yIDQwLjFTNDg2LjMgNDgwIDQ3MiA0ODBINDBjLTE0LjMgMC0yNy42LTcuNy0zNC43LTIwLjFzLTctMjcuOCAuMi00MC4xbDIxNi0zNjhDMjI4LjcgMzkuNSAyNDEuOCAzMiAyNTYgMzJ6bTAgMTI4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNFYyOTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYxODRjMC0xMy4zLTEwLjctMjQtMjQtMjR6bTMyIDIyNGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcm9waHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDBIMTc2Yy0yNi41IDAtNDguMSAyMS44LTQ3LjEgNDguMmMuMiA1LjMgLjQgMTAuNiAuNyAxNS44SDI0QzEwLjcgNjQgMCA3NC43IDAgODhjMCA5Mi42IDMzLjUgMTU3IDc4LjUgMjAwLjdjNDQuMyA0My4xIDk4LjMgNjQuOCAxMzguMSA3NS44YzIzLjQgNi41IDM5LjQgMjYgMzkuNCA0NS42YzAgMjAuOS0xNyAzNy45LTM3LjkgMzcuOUgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMzg0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM1Ny45QzMzNyA0NDggMzIwIDQzMSAzMjAgNDEwLjFjMC0xOS42IDE1LjktMzkuMiAzOS40LTQ1LjZjMzkuOS0xMSA5My45LTMyLjcgMTM4LjItNzUuOEM1NDIuNSAyNDUgNTc2IDE4MC42IDU3NiA4OGMwLTEzLjMtMTAuNy0yNC0yNC0yNEg0NDYuNGMuMy01LjIgLjUtMTAuNCAuNy0xNS44QzQ0OC4xIDIxLjggNDI2LjUgMCA0MDAgMHpNNDguOSAxMTJoODQuNGM5LjEgOTAuMSAyOS4yIDE1MC4zIDUxLjkgMTkwLjZjLTI0LjktMTEtNTAuOC0yNi41LTczLjItNDguM2MtMzItMzEuMS01OC03Ni02My0xNDIuM3pNNDY0LjEgMjU0LjNjLTIyLjQgMjEuOC00OC4zIDM3LjMtNzMuMiA0OC4zYzIyLjctNDAuMyA0Mi44LTEwMC41IDUxLjktMTkwLjZoODQuNGMtNS4xIDY2LjMtMzEuMSAxMTEuMi02MyAxNDIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJvd2VsQnJpY2tzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MC44IDQuOEMyNTAuMyAxMC42IDI1NiAyMC45IDI1NiAzMnY3Mmg4OWMzLjYtMTMuOCAxNi4xLTI0IDMxLTI0aDg4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4SDM3NmMtMTQuOSAwLTI3LjQtMTAuMi0zMS0yNEgyNTZ2NzJjMCAxMS4xLTUuNyAyMS40LTE1LjIgMjcuMnMtMjEuMiA2LjQtMzEuMSAxLjRsLTE5Mi05NkM2LjggMTUxLjIgMCAxNDAuMSAwIDEyOHM2LjgtMjMuMiAxNy43LTI4LjZsMTkyLTk2YzkuOS01IDIxLjctNC40IDMxLjEgMS40ek0yODggMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjI1NnpNMzIgMzg0aDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTE5MiAwSDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgyMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJvd2VsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0My45IDIxMy40TDI0NS4zIDMxMmw2NS40IDY1LjRjNy45IDcuOSAxMS4xIDE5LjQgOC40IDMwLjNzLTEwLjggMTkuNi0yMS41IDIyLjlsLTI1NiA4MGMtMTEuNCAzLjUtMjMuOCAuNS0zMi4yLTcuOVMtMi4xIDQ4MS44IDEuNSA0NzAuNWw4MC0yNTZjMy4zLTEwLjcgMTItMTguOSAyMi45LTIxLjVzMjIuNCAuNSAzMC4zIDguNEwyMDAgMjY2LjdsOTguNi05OC42Yy0xNC4zLTE0LjYtMTQuMi0zOCAuMy01Mi41bDk1LjQtOTUuNGMyNi45LTI2LjkgNzAuNS0yNi45IDk3LjUgMHMyNi45IDcwLjUgMCA5Ny41bC05NS40IDk1LjRjLTE0LjUgMTQuNS0zNy45IDE0LjYtNTIuNSAuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJ1Y2tBcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwSDM2OGMyNi41IDAgNDggMjEuNSA0OCA0OFY5Nmg1MC43YzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43TDU4OS4zIDE5MmMxMiAxMiAxOC43IDI4LjMgMTguNyA0NS4zVjI1NnYzMiA2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg1NzZjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZIMjU2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY0OHpNNDE2IDI1Nkg1NDRWMjM3LjNMNDY2LjcgMTYwSDQxNnY5NnpNMTYwIDQ2NGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTM2OC00OGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0yNTcgOTVjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsMzkgMzlIOTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMjYyLjFsLTM5IDM5Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsODAtODBjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlMMjU3IDk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja0Ryb3BsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0OEMwIDIxLjUgMjEuNSAwIDQ4IDBIMzY4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4Vjk2aDUwLjdjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdMNTg5LjMgMTkyYzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNWMjU2djMyIDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDU3NmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05NkgyNTZjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQ4ek00MTYgMjU2SDU0NFYyMzcuM0w0NjYuNyAxNjBINDE2djk2ek0xNjAgNDY0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptMzY4LTQ4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTIwOCAyNzJjMzkuOCAwIDcyLTI5LjYgNzItNjZjMC0yNy0zOS40LTgyLjktNTkuOS0xMTAuM2MtNi4xLTguMi0xOC4xLTguMi0yNC4yIDBDMTc1LjQgMTIzIDEzNiAxNzkgMTM2IDIwNmMwIDM2LjUgMzIuMiA2NiA3MiA2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJ1Y2tGYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAwQzg1LjUgMCA2NCAyMS41IDY0IDQ4Vjk2SDE2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDY0IDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg2NCA0OGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg2NCAyNDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZINjQgMTZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZINjQgMjA4YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDY0VjQxNmMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2SDM4NGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjI4OCAyNTYgMjM3LjNjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMNTEyIDExNC43Yy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43SDQxNlY0OGMwLTI2LjUtMjEuNS00OC00OC00OEgxMTJ6TTU0NCAyMzcuM1YyNTZINDE2VjE2MGg1MC43TDU0NCAyMzcuM3pNMTYwIDM2OGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6bTI3MiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja0ZpZWxkVW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzJDNjAuNyAzMiAzMiA2MC43IDMyIDk2djMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnYzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2SDM4NGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjI4OGMwLTM1LjMtMjguNy02NC02NC02NGgtNC4yYy0uNC0xLjEtLjktMi4xLTEuMy0zLjJMNDg1LjcgMTAyYy0xMC4zLTIzLjEtMzMuMi0zOC01OC41LTM4SDM3NS40QzM2NC40IDQ0LjkgMzQzLjcgMzIgMzIwIDMySDk2em0yODggOTZoNDMuMmw0Mi43IDk2SDM4NFYxMjh6TTExMiAzODRhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptMzY4LTQ4YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpNMjUzLjMgMTM1LjFsMzQuNyA1MlYxNDRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY5NmMwIDcuMS00LjYgMTMuMy0xMS40IDE1LjNzLTE0LS42LTE3LjktNi40bC0zNC43LTUyVjI0MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYxNDRjMC03LjEgNC42LTEzLjMgMTEuNC0xNS4zczE0IC42IDE3LjkgNi40ek0xMjggMTQ0djY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2NjRjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrRmllbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgOTZjMC0zNS4zIDI4LjctNjQgNjQtNjRIMzIwYzIzLjcgMCA0NC40IDEyLjkgNTUuNCAzMmg1MS44YzI1LjMgMCA0OC4yIDE0LjkgNTguNSAzOGw1Mi44IDExOC44Yy41IDEuMSAuOSAyLjEgMS4zIDMuMkg1NDRjMzUuMyAwIDY0IDI4LjcgNjQgNjR2MzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINTc2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2SDI1NmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05NkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMlYyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMlY5NnpNMzg0IDIyNGg4NS45bC00Mi43LTk2SDM4NHY5NnpNMTYwIDQzMmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTM2OC00OGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja0Zyb250IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgODBDMCAzNS44IDM1LjggMCA4MCAwSDQzMmM0NC4yIDAgODAgMzUuOCA4MCA4MFYzNjhjMCAyNi4yLTEyLjYgNDkuNC0zMiA2NHY0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0MTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQ0OEgxMjh2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJINjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQzMkMxMi42IDQxNy40IDAgMzk0LjIgMCAzNjhWODB6bTEyOS45IDcyLjJMMTEyIDIyNEg0MDBsLTE3LjktNzEuOEMzNzguNSAxMzggMzY1LjcgMTI4IDM1MSAxMjhIMTYxYy0xNC43IDAtMjcuNSAxMC0zMSAyNC4yek0xMjggMzIwYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTI4OCAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQ4QzAgMjEuNSAyMS41IDAgNDggMEgzNjhjMjYuNSAwIDQ4IDIxLjUgNDggNDhWOTZoNTAuN2MxNyAwIDMzLjMgNi43IDQ1LjMgMTguN0w1ODkuMyAxOTJjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM1YyNTZ2MzIgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINTc2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2SDI1NmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05Nkg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDh6TTQxNiAyNTZINTQ0VjIzNy4zTDQ2Ni43IDE2MEg0MTZ2OTZ6TTE2MCA0NjRhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0zNjgtNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMTc2IDgwdjQ4bC00OCAwYy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTkyaDQ4YzguOCAwIDE2LTcuMiAxNi0xNlYxNDRjMC04LjgtNy4yLTE2LTE2LTE2SDI0MFY4MGMwLTguOC03LjItMTYtMTYtMTZIMTkyYy04LjggMC0xNiA3LjItMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrTW9uc3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggNjR2NjRINDE2TDM2OCA2NEgyODh6TTQxOS4yIDI1LjZMNDk2IDEyOGg4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmMtMjkuMi0zOC45LTc1LjctNjQtMTI4LTY0cy05OC44IDI1LjEtMTI4IDY0SDI4OGMtMjkuMi0zOC45LTc1LjctNjQtMTI4LTY0cy05OC44IDI1LjEtMTI4IDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMkgyMjRWNDhjMC0yNi41IDIxLjUtNDggNDgtNDhoOTZjMjAuMSAwIDM5LjEgOS41IDUxLjIgMjUuNnpNMTUyIDI1NmgxNmMxMi4xIDAgMjIuMSA4LjkgMjMuOCAyMC42YzcuNiAyLjIgMTQuOSA1LjMgMjEuNyA5YzkuNC03IDIyLjgtNi4zIDMxLjMgMi4zbDExLjMgMTEuM2M4LjYgOC42IDkuMyAyMS45IDIuMyAzMS4zYzMuNyA2LjggNi44IDE0LjEgOSAyMS43YzExLjYgMS43IDIwLjYgMTEuNyAyMC42IDIzLjh2MTZjMCAxMi4xLTguOSAyMi4xLTIwLjYgMjMuOGMtMi4yIDcuNi01LjMgMTQuOS05IDIxLjdjNyA5LjQgNi4zIDIyLjgtMi4zIDMxLjNsLTExLjMgMTEuM2MtOC42IDguNi0yMS45IDkuMy0zMS4zIDIuMmMtNi44IDMuNy0xNC4xIDYuOC0yMS43IDlDMTkwLjEgNTAzLjEgMTgwLjEgNTEyIDE2OCA1MTJIMTUyYy0xMi4xIDAtMjIuMS04LjktMjMuOC0yMC42Yy03LjYtMi4yLTE0LjktNS4zLTIxLjctOWMtOS40IDcuMS0yMi44IDYuMy0zMS4zLTIuMkw2My44IDQ2OC45Yy04LjYtOC42LTkuMy0yMS45LTIuMy0zMS4zYy0zLjctNi45LTYuOC0xNC4xLTktMjEuOEM0MC45IDQxNC4xIDMyIDQwNC4xIDMyIDM5MlYzNzZjMC0xMi4xIDguOS0yMi4xIDIwLjYtMjMuOGMyLjItNy42IDUuMy0xNC45IDktMjEuOGMtNy05LjQtNi4zLTIyLjggMi4zLTMxLjNsMTEuMy0xMS4zYzguNi04LjYgMjEuOS05LjMgMzEuMy0yLjNjNi44LTMuNyAxNC4xLTYuOCAyMS43LTljMS43LTExLjYgMTEuNy0yMC42IDIzLjgtMjAuNnptOCAxNzZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek00NDguMiAyNzYuNmMxLjctMTEuNiAxMS43LTIwLjYgMjMuOC0yMC42aDE2YzEyLjEgMCAyMi4xIDguOSAyMy44IDIwLjZjNy42IDIuMiAxNC45IDUuMyAyMS44IDljOS40LTcgMjIuOC02LjMgMzEuMyAyLjNsMTEuMyAxMS4zYzguNiA4LjYgOS4zIDIxLjkgMi4yIDMxLjNjMy43IDYuOCA2LjggMTQuMSA5IDIxLjdjMTEuNiAxLjcgMjAuNiAxMS43IDIwLjYgMjMuOHYxNmMwIDEyLjEtOC45IDIyLjEtMjAuNiAyMy44Yy0yLjIgNy42LTUuMyAxNC45LTkgMjEuN2M3IDkuNCA2LjMgMjIuOC0yLjIgMzEuM2wtMTEuMyAxMS4zYy04LjYgOC42LTIxLjkgOS4zLTMxLjMgMi4yYy02LjkgMy43LTE0LjEgNi44LTIxLjggOUM1MTAuMSA1MDMuMSA1MDAuMSA1MTIgNDg4IDUxMkg0NzJjLTEyLjEgMC0yMi4xLTguOS0yMy44LTIwLjZjLTcuNi0yLjItMTQuOS01LjMtMjEuNy05Yy05LjQgNy4xLTIyLjggNi4zLTMxLjMtMi4ybC0xMS4zLTExLjNjLTguNi04LjYtOS4zLTIxLjktMi4yLTMxLjNjLTMuNy02LjktNi44LTE0LjEtOS0yMS44QzM2MC45IDQxNC4xIDM1MiA0MDQuMSAzNTIgMzkyVjM3NmMwLTEyLjEgOC45LTIyLjEgMjAuNi0yMy44YzIuMi03LjYgNS4zLTE0LjkgOS0yMS44Yy03LTkuNC02LjMtMjIuOCAyLjItMzEuM2wxMS4zLTExLjNjOC42LTguNiAyMS45LTkuMyAzMS4zLTIuM2M2LjgtMy43IDE0LjEtNi44IDIxLjctOXpNNTI4IDM4NGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja01vdmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjMwNHY4MCAxNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MGMyNi4yIDAgNDkuNC0xMi42IDY0LTMyYzE0LjYgMTkuNCAzNy44IDMyIDY0IDMyYzQ0LjIgMCA4MC0zNS44IDgwLTgwYzAtNS41LS42LTEwLjgtMS42LTE2SDQxNmgzMy42Yy0xIDUuMi0xLjYgMTAuNS0xLjYgMTZjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTUuNS0uNi0xMC44LTEuNi0xNkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjg4IDI3MiAyNjEuN2MwLTkuMi0zLjItMTguMi05LTI1LjNsLTU4LjgtNzEuOGMtMTAuNi0xMy0yNi41LTIwLjUtNDMuMy0yMC41SDQ4MFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNNTg1IDI1Nkg0ODBWMTkyaDQ4LjhjMi40IDAgNC43IDEuMSA2LjIgMi45TDU4NSAyNTZ6TTUyOCAzNjhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xNzYgNDAwYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTgwIDM2OGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrUGlja3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OC42IDk2bDc2LjggOTZIMjg4Vjk2aDgwLjZ6TTIyNCA4MFYxOTJINjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY1LjFjLS43IDUuMi0xLjEgMTAuNi0xLjEgMTZjMCA2MS45IDUwLjEgMTEyIDExMiAxMTJzMTEyLTUwLjEgMTEyLTExMmMwLTUuNC0uNC0xMC44LTEuMS0xNmg2Ni4zYy0uNyA1LjItMS4xIDEwLjYtMS4xIDE2YzAgNjEuOSA1MC4xIDExMiAxMTIgMTEyczExMi01MC4xIDExMi0xMTJjMC01LjQtLjQtMTAuOC0xLjEtMTZINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMkg1MjcuNEw0MTguNiA1NmMtMTIuMS0xNS4yLTMwLjUtMjQtNTAtMjRIMjcyYy0yNi41IDAtNDggMjEuNS00OCA0OHptMCAyODhhNDggNDggMCAxIDEgLTk2IDAgNDggNDggMCAxIDEgOTYgMHptMjg4IDBhNDggNDggMCAxIDEgLTk2IDAgNDggNDggMCAxIDEgOTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJ1Y2tQbGFuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDAgMGMtMzAuNiAwLTU2IDU0LjctNTYgODYuMVYxOTIuNUw3LjggMjc0LjNDMi45IDI3Ny4yIDAgMjgyLjQgMCAyODh2NjRjMCA1LjEgMi40IDkuOCA2LjQgMTIuOHM5LjMgMy45IDE0LjEgMi41bDEyMy40LTM3djgxLjJsLTUwIDQwYy0zLjggMy02IDcuNi02IDEyLjV2MzJjMCA1LjEgMi41IDEwIDYuNiAxM3M5LjUgMy44IDE0LjQgMi4yTDIwMCA0ODAuOSAyOTAuNCA1MTFjLTEuNi00LjctMi40LTkuOC0yLjQtMTVWNDYzLjRjLTE4LjItMTAuNS0zMC43LTI5LjctMzEuOS01MS44bC0uMS0uMVY0MDggMzI1LjUgMTg0bDAtMS4xIDAgMFY4Ni4xQzI1NiA1NC43IDIzMS41IDAgMjAwIDB6bTg4IDE3NlY0MDBjMCAyMC45IDEzLjQgMzguNyAzMiA0NS4zVjQ4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFY0NDhINTQ0djQwYzAgMTMuMyAxMC43IDI0IDI0IDI0aDE2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjQ0NS4zYzE4LjYtNi42IDMyLTI0LjQgMzItNDUuM1YxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzM2Yy0yNi41IDAtNDggMjEuNS00OCA0OHptNzkuOCA3OC43YzMuMy04LjcgMTEuMi0xNC43IDIwLjUtMTQuN0g1MzkuN2M5LjIgMCAxNy4yIDYgMjAuNSAxNC43TDU3NiAzMDRIMzUybDE1LjgtNDkuM3pNNTY4IDM1MmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6TTMzNiAzNzZhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJ1Y2tSYW1wQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAwVjQwMGMwIDYxLjktNTAuMSAxMTItMTEyIDExMmMtNjEgMC0xMTAuNS00OC43LTExMi0xMDkuM0w0OC40IDUwMi45Yy0xNy4xIDQuNi0zNC42LTUuNC0zOS4zLTIyLjVzNS40LTM0LjYgMjIuNS0zOS4zTDM1MiAzNTMuOFY2NGMwLTM1LjMgMjguNy02NCA2NC02NEg2NDB6TTU3NiA0MDBhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMjMuMSAyMDcuN2MtNC42LTE3LjEgNS42LTM0LjYgMjIuNi0zOS4ybDQ2LjQtMTIuNCAyMC43IDc3LjNjMi4zIDguNSAxMS4xIDEzLjYgMTkuNiAxMS4zbDMwLjktOC4zYzguNS0yLjMgMTMuNi0xMS4xIDExLjMtMTkuNmwtMjAuNy03Ny4zIDQ2LjQtMTIuNGMxNy4xLTQuNiAzNC42IDUuNiAzOS4yIDIyLjZsNDEuNCAxNTQuNWM0LjYgMTcuMS01LjYgMzQuNi0yMi42IDM5LjJMMTAzLjcgMzg0LjljLTE3LjEgNC42LTM0LjYtNS42LTM5LjItMjIuNkwyMy4xIDIwNy43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OFYzNjhjMCAyNi41IDIxLjUgNDggNDggNDhINjRjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NkgzODRjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMlYyODggMjU2IDIzNy4zYzAtMTctNi43LTMzLjMtMTguNy00NS4zTDUxMiAxMTQuN2MtMTItMTItMjguMy0xOC43LTQ1LjMtMTguN0g0MTZWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTQxNiAxNjBoNTAuN0w1NDQgMjM3LjNWMjU2SDQxNlYxNjB6TTExMiA0MTZhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptMzY4LTQ4YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjMgMjQxLjNMMTUuMSAyMDAuNmMtOS4yLTE2LjItOC40LTM2LjUgNC41LTUwQzYxLjQgMTA2LjggMTQ0LjcgNDggMjU2IDQ4czE5NC42IDU4LjggMjM2LjQgMTAyLjZjMTIuOSAxMy41IDEzLjcgMzMuOCA0LjUgNTBsLTIzLjEgNDAuN2MtNy41IDEzLjItMjMuMyAxOS4zLTM3LjggMTQuNmwtODEuMS0yNi42Yy0xMy4xLTQuMy0yMi0xNi42LTIyLTMwLjRWMTQ0Yy00OS42LTE4LjEtMTA0LTE4LjEtMTUzLjYgMHY1NC44YzAgMTMuOC04LjkgMjYuMS0yMiAzMC40TDc2LjEgMjU1LjhjLTE0LjUgNC43LTMwLjMtMS40LTM3LjgtMTQuNnpNMzIgMzM2YzAtOC44IDcuMi0xNiAxNi0xNkg4MGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDQ4Yy04LjggMC0xNi03LjItMTYtMTZWMzM2em0wIDk2YzAtOC44IDcuMi0xNiAxNi0xNkg4MGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDQ4Yy04LjggMC0xNi03LjItMTYtMTZWNDMyek0xNDQgMzIwaDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTQ0Yy04LjggMC0xNi03LjItMTYtMTZWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjQwYy04LjggMC0xNi03LjItMTYtMTZWMzM2em0xMTItMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgzMzZjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg0MzJjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZ6bTE2IDgwaDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZINDMyYy04LjggMC0xNi03LjItMTYtMTZWNDMyYzAtOC44IDcuMi0xNiAxNi0xNnpNMTI4IDQzMmMwLTguOCA3LjItMTYgMTYtMTZIMzY4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTQ0Yy04LjggMC0xNi03LjItMTYtMTZWNDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUdXJraXNoTGlyYVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWOTkuM0wyNDcuMiA2NS4yYzE3LTQuOSAzNC43IDUgMzkuNiAyMnMtNSAzNC43LTIyIDM5LjZMMTI4IDE2NS45djI5LjRsMTE5LjItMzQuMWMxNy00LjkgMzQuNyA1IDM5LjYgMjJzLTUgMzQuNy0yMiAzOS42TDEyOCAyNjEuOVY0MTZoNjMuOGM2OC4yIDAgMTI0LjQtNTMuNSAxMjcuOC0xMjEuNmwuNC04Yy45LTE3LjcgMTUuOS0zMS4yIDMzLjYtMzAuNHMzMS4yIDE1LjkgMzAuNCAzMy42bC0uNCA4QzM3OC41IDM5OS44IDI5NC4xIDQ4MCAxOTEuOCA0ODBIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjI4MC4xbC0yMy4yIDYuNmMtMTcgNC45LTM0LjctNS0zOS42LTIyczUtMzQuNyAyMi0zOS42TDY0IDIxMy42VjE4NC4xbC0yMy4yIDYuNmMtMTcgNC45LTM0LjctNS0zOS42LTIyczUtMzQuNyAyMi0zOS42TDY0IDExNy42VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUdXJuRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTAgMzM0LjVjMy44IDguOCAyIDE5LTQuNiAyNmwtMTM2IDE0NGMtNC41IDQuOC0xMC44IDcuNS0xNy40IDcuNXMtMTIuOS0yLjctMTcuNC03LjVsLTEzNi0xNDRjLTYuNi03LTguNC0xNy4yLTQuNi0yNnMxMi41LTE0LjUgMjItMTQuNWg4OGwwLTE5MmMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0VjMyQzAgMTQuMyAxNC4zIDAgMzIgMGw4MCAwYzcwLjcgMCAxMjggNTcuMyAxMjggMTI4bDAgMTkyaDg4YzkuNiAwIDE4LjIgNS43IDIyIDE0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR1cm5VcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTAgMTc3LjVjMy44LTguOCAyLTE5LTQuNi0yNmwtMTM2LTE0NEMyMDQuOSAyLjcgMTk4LjYgMCAxOTIgMHMtMTIuOSAyLjctMTcuNCA3LjVsLTEzNiAxNDRjLTYuNiA3LTguNCAxNy4yLTQuNiAyNnMxMi41IDE0LjUgMjIgMTQuNWg4OGwwIDE5MmMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJsODAgMGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOGwwLTE5Mmg4OGM5LjYgMCAxOC4yLTUuNyAyMi0xNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NFYzNTJINTc2VjY0SDY0ek0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEg1NzZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzUyYzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMTI4IDQ0OEg1MTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjI4OGMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOHMxMjgtNTcuMyAxMjgtMTI4VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMjg4YzAgMTA2LTg2IDE5Mi0xOTIgMTkyUzAgMzk0IDAgMjg4VjY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbWJyZWxsYUJlYWNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Ni4zIDI3MS44bC02MC4xLTIxLjlMMjE0IDQ0OEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjgyLjFsNjQuMS0xNzYuMnptMTIxLjEtLjJsLTMuMyA5LjEgNjcuNyAyNC42YzE4LjEgNi42IDM4LTQuMiAzOS42LTIzLjRjNi41LTc4LjUtMjMuOS0xNTUuNS04MC44LTIwOC41YzIgOCAzLjIgMTYuMyAzLjQgMjQuOGwuMiA2YzEuOCA1Ny03LjMgMTEzLjgtMjYuOCAxNjcuNHpNNDYyIDk5LjFjLTEuMS0zNC40LTIyLjUtNjQuOC01NC40LTc3LjRjLS45LS40LTEuOS0uNy0yLjgtMS4xYy0zMy0xMS43LTY5LjgtMi40LTkzLjEgMjMuOGwtNCA0LjVDMjcyLjQgODguMyAyNDUgMTM0LjIgMjI2LjggMTg0bC0zLjMgOS4xTDQzNCAyNjkuN2wzLjMtOS4xYzE4LjEtNDkuOCAyNi42LTEwMi41IDI0LjktMTU1LjVsLS4yLTZ6TTEwNy4yIDExMi45Yy0xMS4xIDE1LjctMi44IDM2LjggMTUuMyA0My40bDcxIDI1LjggMy4zLTkuMWMxOS41LTUzLjYgNDkuMS0xMDMgODcuMS0xNDUuNWw0LTQuNWM2LjItNi45IDEzLjEtMTMgMjAuNS0xOC4yYy03OS42IDIuNS0xNTQuNyA0Mi4yLTIwMS4yIDEwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW1icmVsbGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDkuN0M0NTEuOCA2My40IDU1Ny43IDE2MSA1NzMuOSAyODUuOWMyIDE1LjYtMTcuMyAyNC40LTI3LjggMTIuN0M1MzIuMSAyODMgNTA0LjggMjcyIDQ4MCAyNzJjLTM4LjcgMC03MSAyNy41LTc4LjQgNjQuMWMtMS43IDguNy04LjcgMTUuOS0xNy42IDE1LjlzLTE1LjgtNy4yLTE3LjYtMTUuOUMzNTkgMjk5LjUgMzI2LjcgMjcyIDI4OCAyNzJzLTcxIDI3LjUtNzguNCA2NC4xYy0xLjcgOC43LTguNyAxNS45LTE3LjYgMTUuOXMtMTUuOC03LjItMTcuNi0xNS45QzE2NyAyOTkuNSAxMzQuNyAyNzIgOTYgMjcyYy0yNC44IDAtNTIuMSAxMS02Ni4xIDI2LjdDMTkuNCAzMTAuNCAuMSAzMDEuNSAyLjEgMjg1LjlDMTguMyAxNjEgMTI0LjIgNjMuNCAyNTYgNDkuN1YzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMCAzMDRjMTIuMyAwIDIzLjUgNC42IDMyIDEyLjJWNDMwLjZjMCA0NS0zNi41IDgxLjQtODEuNCA4MS40Yy0zMC44IDAtNTktMTcuNC03Mi44LTQ1bC0yLjMtNC43Yy03LjktMTUuOC0xLjUtMzUgMTQuMy00Mi45czM1LTEuNSA0Mi45IDE0LjNsMi4zIDQuN2MzIDUuOSA5IDkuNiAxNS42IDkuNmM5LjYgMCAxNy40LTcuOCAxNy40LTE3LjRWMzE2LjJjOC41LTcuNiAxOS43LTEyLjIgMzItMTIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5kZXJsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDEyOFYyMjRjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NlY5NkgzMDRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0VjIyNGMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MHMtMTYwLTcxLjYtMTYwLTE2MFY5Nkg0OEMzMC4zIDk2IDE2IDgxLjcgMTYgNjR6TTAgNDQ4YzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuaXZlcnNhbEFjY2VzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTE2MS41LTg2LjFjLTEyLjItNS4yLTI2LjMgLjQtMzEuNSAxMi42cy40IDI2LjMgMTIuNiAzMS41bDExLjkgNS4xYzE3LjMgNy40IDM1LjIgMTIuOSA1My42IDE2LjN2NTAuMWMwIDQuMy0uNyA4LjYtMi4xIDEyLjZsLTI4LjcgODYuMWMtNC4yIDEyLjYgMi42IDI2LjIgMTUuMiAzMC40czI2LjItMi42IDMwLjQtMTUuMmwyNC40LTczLjJjMS4zLTMuOCA0LjgtNi40IDguOC02LjRzNy42IDIuNiA4LjggNi40bDI0LjQgNzMuMmM0LjIgMTIuNiAxNy44IDE5LjQgMzAuNCAxNS4yczE5LjQtMTcuOCAxNS4yLTMwLjRsLTI4LjctODYuMWMtMS40LTQuMS0yLjEtOC4zLTIuMS0xMi42VjIzNS41YzE4LjQtMy41IDM2LjMtOC45IDUzLjYtMTYuM2wxMS45LTUuMWMxMi4yLTUuMiAxNy44LTE5LjMgMTIuNi0zMS41cy0xOS4zLTE3LjgtMzEuNS0xMi42TDMzOC43IDE3NWMtMjYuMSAxMS4yLTU0LjIgMTctODIuNyAxN3MtNTYuNS01LjgtODIuNy0xN2wtMTEuOS01LjF6TTI1NiAxNjBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmxvY2tLZXlob2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA2NGMtNDQuMiAwLTgwIDM1LjgtODAgODB2NDhIMzg0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjU2YzAtMzUuMyAyOC43LTY0IDY0LTY0SDgwVjE0NEM4MCA2NC41IDE0NC41IDAgMjI0IDBjNTcuNSAwIDEwNyAzMy43IDEzMC4xIDgyLjNjNy42IDE2IC44IDM1LjEtMTUuMiA0Mi42cy0zNS4xIC44LTQyLjYtMTUuMkMyODMuNCA4Mi42IDI1NS45IDY0IDIyNCA2NHptMzIgMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5sb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAxNDRjMC00NC4yIDM1LjgtODAgODAtODBjMzEuOSAwIDU5LjQgMTguNiA3Mi4zIDQ1LjdjNy42IDE2IDI2LjcgMjIuOCA0Mi42IDE1LjJzMjIuOC0yNi43IDE1LjItNDIuNkMzMzEgMzMuNyAyODEuNSAwIDIyNCAwQzE0NC41IDAgODAgNjQuNSA4MCAxNDR2NDhINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDE0NFYxNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVwRG93bkxlZnRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzguNiA5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC02NCA2NGMtOS4yIDkuMi0xMS45IDIyLjktNi45IDM0LjlzMTYuNiAxOS44IDI5LjYgMTkuOGgzMnY5NkgxMjhWMTkyYzAtMTIuOS03LjgtMjQuNi0xOS44LTI5LjZzLTI1LjctMi4yLTM0LjkgNi45bC02NCA2NGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjOS4yIDkuMiAyMi45IDExLjkgMzQuOSA2LjlzMTkuOC0xNi42IDE5LjgtMjkuNlYyODhoOTZ2OTZIMTkyYy0xMi45IDAtMjQuNiA3LjgtMjkuNiAxOS44cy0yLjIgMjUuNyA2LjkgMzQuOWw2NCA2NGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw2NC02NGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOXMtMTYuNi0xOS44LTI5LjYtMTkuOEgyODhWMjg4aDk2djMyYzAgMTIuOSA3LjggMjQuNiAxOS44IDI5LjZzMjUuNyAyLjIgMzQuOS02LjlsNjQtNjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTY0LTY0Yy05LjItOS4yLTIyLjktMTEuOS0zNC45LTYuOXMtMTkuOCAxNi42LTE5LjggMjkuNnYzMkgyODhWMTI4aDMyYzEyLjkgMCAyNC42LTcuOCAyOS42LTE5LjhzMi4yLTI1LjctNi45LTM0LjlsLTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVcERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ1LjYgNy43QzE0MSAyLjggMTM0LjcgMCAxMjggMHMtMTMgMi44LTE3LjYgNy43bC0xMDQgMTEyYy02LjUgNy04LjIgMTcuMi00LjQgMjUuOVMxNC41IDE2MCAyNCAxNjBIODBWMzUySDI0Yy05LjUgMC0xOC4yIDUuNy0yMiAxNC40cy0yLjEgMTguOSA0LjQgMjUuOWwxMDQgMTEyYzQuNSA0LjkgMTAuOSA3LjcgMTcuNiA3LjdzMTMtMi44IDE3LjYtNy43bDEwNC0xMTJjNi41LTcgOC4yLTE3LjIgNC40LTI1LjlzLTEyLjUtMTQuNC0yMi0xNC40SDE3NlYxNjBoNTZjOS41IDAgMTguMi01LjcgMjItMTQuNHMyLjEtMTguOS00LjQtMjUuOWwtMTA0LTExMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXBMb25nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxOCAxNzcuNWMzLjgtOC44IDItMTktNC42LTI2bC0xMzYtMTQ0QzE3Mi45IDIuNyAxNjYuNiAwIDE2MCAwcy0xMi45IDIuNy0xNy40IDcuNWwtMTM2IDE0NGMtNi42IDctOC40IDE3LjItNC42IDI2UzE0LjQgMTkyIDI0IDE5Mkg5NmwwIDI4OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTI4OGg3MmM5LjYgMCAxOC4yLTUuNyAyMi0xNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVcFJpZ2h0QW5kRG93bkxlZnRGcm9tQ2VudGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0NCAwSDQ4OGMxMy4zIDAgMjQgMTAuNyAyNCAyNFYxNjhjMCA5LjctNS44IDE4LjUtMTQuOCAyMi4ycy0xOS4zIDEuNy0yNi4yLTUuMmwtMzktMzktODcgODdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC0zMi0zMmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsODctODdMMzI3IDQxYy02LjktNi45LTguOS0xNy4yLTUuMi0yNi4yUzMzNC4zIDAgMzQ0IDB6TTE2OCA1MTJIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjM0NGMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJzMTkuMy0xLjcgMjYuMiA1LjJsMzkgMzkgODctODdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMzIgMzJjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTg3IDg3IDM5IDM5YzYuOSA2LjkgOC45IDE3LjIgNS4yIDI2LjJzLTEyLjUgMTQuOC0yMi4yIDE0Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVwUmlnaHRGcm9tU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAwYy0xMi45IDAtMjQuNiA3LjgtMjkuNiAxOS44cy0yLjIgMjUuNyA2LjkgMzQuOUwzNzAuNyA5NiAyMDEuNCAyNjUuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEw0MTYgMTQxLjNsNDEuNCA0MS40YzkuMiA5LjIgMjIuOSAxMS45IDM0LjkgNi45czE5LjgtMTYuNiAxOS44LTI5LjZWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMzUyek04MCAzMkMzNS44IDMyIDAgNjcuOCAwIDExMlY0MzJjMCA0NC4yIDM1LjggODAgODAgODBINDAwYzQ0LjIgMCA4MC0zNS44IDgwLTgwVjMyMGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNkgxOTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMTA5LjNWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjEwOS4zbC03My40IDczLjRjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zbDEyOC0xMjhjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTI4IDEyOGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwyODggMTA5LjN6TTY0IDM1MkgxOTJjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjR2MzJjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjQxNmMwLTM1LjMgMjguNy02NCA2NC02NHpNNDMyIDQ1NmEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJBc3Ryb25hdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcwLjcgOTYuMUMzNDYuMSAzOS41IDI4OS43IDAgMjI0IDBTMTAxLjkgMzkuNSA3Ny4zIDk2LjFDNjAuOSA5Ny41IDQ4IDExMS4yIDQ4IDEyOHY2NGMwIDE2LjggMTIuOSAzMC41IDI5LjMgMzEuOUMxMDEuOSAyODAuNSAxNTguMyAzMjAgMjI0IDMyMHMxMjIuMS0zOS41IDE0Ni43LTk2LjFjMTYuNC0xLjQgMjkuMy0xNS4xIDI5LjMtMzEuOVYxMjhjMC0xNi44LTEyLjktMzAuNS0yOS4zLTMxLjl6TTMzNiAxNDR2MTZjMCA1My00MyA5Ni05NiA5NkgyMDhjLTUzIDAtOTYtNDMtOTYtOTZWMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDI4OGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTg5LjMgMTYyLjdsLTYtMjEuMmMtLjktMy4zLTMuOS01LjUtNy4zLTUuNXMtNi40IDIuMi03LjMgNS41bC02IDIxLjItMjEuMiA2Yy0zLjMgLjktNS41IDMuOS01LjUgNy4zczIuMiA2LjQgNS41IDcuM2wyMS4yIDYgNiAyMS4yYy45IDMuMyAzLjkgNS41IDcuMyA1LjVzNi40LTIuMiA3LjMtNS41bDYtMjEuMiAyMS4yLTZjMy4zLS45IDUuNS0zLjkgNS41LTcuM3MtMi4yLTYuNC01LjUtNy4zbC0yMS4yLTZ6TTExMi43IDMxNi41QzQ2LjcgMzQyLjYgMCA0MDcgMCA0ODIuM0MwIDQ5OC43IDEzLjMgNTEyIDI5LjcgNTEySDEyOFY0NDhjMC0xNy43IDE0LjMtMzIgMzItMzJIMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0bDk4LjMgMGMxNi40IDAgMjkuNy0xMy4zIDI5LjctMjkuN2MwLTc1LjMtNDYuNy0xMzkuNy0xMTIuNy0xNjUuOEMzMDMuOSAzMzguOCAyNjUuNSAzNTIgMjI0IDM1MnMtNzkuOS0xMy4yLTExMS4zLTM1LjV6TTE3NiA0NDhjLTguOCAwLTE2IDcuMi0xNiAxNnY0OGgzMlY0NjRjMC04LjgtNy4yLTE2LTE2LTE2em05NiAzMmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAxMjhhMTI4IDEyOCAwIDEgMSAyNTYgMEExMjggMTI4IDAgMSAxIDk2IDEyOHpNMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNGg5MS40QzM2OC4yIDMwNCA0NDggMzgzLjggNDQ4IDQ4Mi4zYzAgMTYuNC0xMy4zIDI5LjctMjkuNyAyOS43SDI5LjdDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zek02MjUgMTc3TDQ5NyAzMDVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC02NC02NGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDQ3IDQ3TDU5MSAxNDNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyQ2xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDBhMTI4IDEyOCAwIDEgMSAwIDI1NkExMjggMTI4IDAgMSAxIDIyNCAwek0xNzguMyAzMDRoOTEuNGMyMC42IDAgNDAuNCAzLjUgNTguOCA5LjlDMzIzIDMzMSAzMjAgMzQ5LjEgMzIwIDM2OGMwIDU5LjUgMjkuNSAxMTIuMSA3NC44IDE0NEgyOS43QzEzLjMgNTEyIDAgNDk4LjcgMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNHpNMzUyIDM2OGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0xNDQtODBjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZoNDhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZINTEyVjMwNGMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJEb2N0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI1NkExMjggMTI4IDAgMSAwIDIyNCAwYTEyOCAxMjggMCAxIDAgMCAyNTZ6bS05NiA1NS4yQzU0IDMzMi45IDAgNDAxLjMgMCA0ODIuM0MwIDQ5OC43IDEzLjMgNTEyIDI5LjcgNTEySDQxOC4zYzE2LjQgMCAyOS43LTEzLjMgMjkuNy0yOS43YzAtODEtNTQtMTQ5LjQtMTI4LTE3MS4xVjM2MmMyNy42IDcuMSA0OCAzMi4yIDQ4IDYydjQwYzAgOC44LTcuMiAxNi0xNiAxNkgzMzZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZWNDI0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjI0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDI1NmMtOC44IDAtMTYtNy4yLTE2LTE2VjQyNGMwLTI5LjggMjAuNC01NC45IDQ4LTYyVjMwNC45Yy02LS42LTEyLjEtLjktMTguMy0uOUgxNzguM2MtNi4yIDAtMTIuMyAuMy0xOC4zIC45djY1LjRjMjMuMSA2LjkgNDAgMjguMyA0MCA1My43YzAgMzAuOS0yNS4xIDU2LTU2IDU2cy01Ni0yNS4xLTU2LTU2YzAtMjUuNCAxNi45LTQ2LjggNDAtNTMuN1YzMTEuMnpNMTQ0IDQ0OGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJHZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYTEyOCAxMjggMCAxIDEgMCAyNTZBMTI4IDEyOCAwIDEgMSAyMjQgMHpNMTc4LjMgMzA0aDkxLjRjMTEuOCAwIDIzLjQgMS4yIDM0LjUgMy4zYy0yLjEgMTguNSA3LjQgMzUuNiAyMS44IDQ0LjhjLTE2LjYgMTAuNi0yNi43IDMxLjYtMjAgNTMuM2M0IDEyLjkgOS40IDI1LjUgMTYuNCAzNy42czE1LjIgMjMuMSAyNC40IDMzYzE1LjcgMTYuOSAzOS42IDE4LjQgNTcuMiA4Ljd2LjljMCA5LjIgMi43IDE4LjUgNy45IDI2LjNIMjkuN0MxMy4zIDUxMiAwIDQ5OC43IDAgNDgyLjNDMCAzODMuOCA3OS44IDMwNCAxNzguMyAzMDR6TTQzNiAyMTguMmMwLTcgNC41LTEzLjMgMTEuMy0xNC44YzEwLjUtMi40IDIxLjUtMy43IDMyLjctMy43czIyLjIgMS4zIDMyLjcgMy43YzYuOCAxLjUgMTEuMyA3LjggMTEuMyAxNC44djE3LjdjMCA3LjggNC44IDE0LjggMTEuNiAxOC43YzYuOCAzLjkgMTUuMSA0LjUgMjEuOCAuNmwxMy44LTcuOWM2LjEtMy41IDEzLjctMi43IDE4LjUgMi40YzcuNiA4LjEgMTQuMyAxNy4yIDIwLjEgMjcuMnMxMC4zIDIwLjQgMTMuNSAzMWMyLjEgNi43LTEuMSAxMy43LTcuMiAxNy4ybC0xNC40IDguM2MtNi41IDMuNy0xMCAxMC45LTEwIDE4LjRzMy41IDE0LjcgMTAgMTguNGwxNC40IDguM2M2LjEgMy41IDkuMiAxMC41IDcuMiAxNy4yYy0zLjMgMTAuNi03LjggMjEtMTMuNSAzMXMtMTIuNSAxOS4xLTIwLjEgMjcuMmMtNC44IDUuMS0xMi41IDUuOS0xOC41IDIuNGwtMTMuOC03LjljLTYuNy0zLjktMTUuMS0zLjMtMjEuOCAuNmMtNi44IDMuOS0xMS42IDEwLjktMTEuNiAxOC43djE3LjdjMCA3LTQuNSAxMy4zLTExLjMgMTQuOGMtMTAuNSAyLjQtMjEuNSAzLjctMzIuNyAzLjdzLTIyLjItMS4zLTMyLjctMy43Yy02LjgtMS41LTExLjMtNy44LTExLjMtMTQuOFY0NjcuOGMwLTcuOS00LjktMTQuOS0xMS43LTE4LjljLTYuOC0zLjktMTUuMi00LjUtMjItLjZsLTEzLjUgNy44Yy02LjEgMy41LTEzLjcgMi43LTE4LjUtMi40Yy03LjYtOC4xLTE0LjMtMTcuMi0yMC4xLTI3LjJzLTEwLjMtMjAuNC0xMy41LTMxYy0yLjEtNi43IDEuMS0xMy43IDcuMi0xNy4ybDE0LTguMWM2LjUtMy44IDEwLjEtMTEuMSAxMC4xLTE4LjZzLTMuNS0xNC44LTEwLjEtMTguNmwtMTQtOC4xYy02LjEtMy41LTkuMi0xMC41LTcuMi0xNy4yYzMuMy0xMC42IDcuNy0yMSAxMy41LTMxczEyLjUtMTkuMSAyMC4xLTI3LjJjNC44LTUuMSAxMi40LTUuOSAxOC41LTIuNGwxMy42IDcuOGM2LjggMy45IDE1LjIgMy4zIDIyLS42YzYuOS0zLjkgMTEuNy0xMSAxMS43LTE4LjlWMjE4LjJ6bTkyLjEgMTMzLjVhNDguMSA0OC4xIDAgMSAwIC05Ni4xIDAgNDguMSA0OC4xIDAgMSAwIDk2LjEgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckdyYWR1YXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxOS4zIC41YzMuMS0uNiA2LjMtLjYgOS40IDBsMjAwIDQwQzQzOS45IDQyLjcgNDQ4IDUyLjYgNDQ4IDY0cy04LjEgMjEuMy0xOS4zIDIzLjVMMzUyIDEwMi45VjE2MGMwIDcwLjctNTcuMyAxMjgtMTI4IDEyOHMtMTI4LTU3LjMtMTI4LTEyOFYxMDIuOUw0OCA5My4zdjY1LjFsMTUuNyA3OC40Yy45IDQuNy0uMyA5LjYtMy4zIDEzLjNzLTcuNiA1LjktMTIuNCA1LjlIMTZjLTQuOCAwLTkuMy0yLjEtMTIuNC01LjlzLTQuMy04LjYtMy4zLTEzLjNMMTYgMTU4LjRWODYuNkM2LjUgODMuMyAwIDc0LjMgMCA2NEMwIDUyLjYgOC4xIDQyLjcgMTkuMyA0MC41bDIwMC00MHpNMTExLjkgMzI3LjdjMTAuNS0zLjQgMjEuOCAuNCAyOS40IDguNWw3MSA3NS41YzYuMyA2LjcgMTcgNi43IDIzLjMgMGw3MS03NS41YzcuNi04LjEgMTguOS0xMS45IDI5LjQtOC41QzQwMSAzNDguNiA0NDggNDA5LjQgNDQ4IDQ4MS4zYzAgMTctMTMuOCAzMC43LTMwLjcgMzAuN0gzMC43QzEzLjggNTEyIDAgNDk4LjIgMCA0ODEuM2MwLTcxLjkgNDctMTMyLjcgMTExLjktMTUzLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAxMjhhMTI4IDEyOCAwIDEgMSAyNTYgMEExMjggMTI4IDAgMSAxIDk2IDEyOHpNMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNGg5MS40QzM2OC4yIDMwNCA0NDggMzgzLjggNDQ4IDQ4Mi4zYzAgMTYuNC0xMy4zIDI5LjctMjkuNyAyOS43SDI5LjdDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zek02MDkuMyA1MTJINDcxLjRjNS40LTkuNCA4LjYtMjAuMyA4LjYtMzJ2LThjMC02MC43LTI3LjEtMTE1LjItNjkuOC0xNTEuOGMyLjQtLjEgNC43LS4yIDcuMS0uMmg2MS40QzU2Ny44IDMyMCA2NDAgMzkyLjIgNjQwIDQ4MS4zYzAgMTctMTMuOCAzMC43LTMwLjcgMzAuN3pNNDMyIDI1NmMtMzEgMC01OS0xMi42LTc5LjMtMzIuOUMzNzIuNCAxOTYuNSAzODQgMTYzLjYgMzg0IDEyOGMwLTI2LjgtNi42LTUyLjEtMTguMy03NC4zQzM4NC4zIDQwLjEgNDA3LjIgMzIgNDMyIDMyYzYxLjkgMCAxMTIgNTAuMSAxMTIgMTEycy01MC4xIDExMi0xMTIgMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VySW5qdXJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDAgODBIMzQyLjdjLTcuOS0xOS41LTIwLjQtMzYuNS0zNi4yLTQ5LjlMMjQwIDgwem0zNy43LTY4LjJDMjYxLjMgNC4yIDI0My4yIDAgMjI0IDBjLTUzLjcgMC05OS43IDMzLjEtMTE4LjcgODBoODEuNGw5MS02OC4yek0yMjQgMjU2YzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4YzAtNS40LS4zLTEwLjgtMS0xNkg5N2MtLjcgNS4yLTEgMTAuNi0xIDE2YzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4ek0xMjQgMzEyLjRjLTkuNyAzLjEtMTkuMSA3LTI4IDExLjdWNTEySDI0My43TDE4MS41IDQwOC4yIDEyNCAzMTIuNHptMzMtNy4yTDIwNC4zIDM4NEgyNzJjNDQuMiAwIDgwIDM1LjggODAgODBjMCAxOC02IDM0LjYtMTYgNDhoODIuM2MxNi40IDAgMjkuNy0xMy4zIDI5LjctMjkuN0M0NDggMzgzLjggMzY4LjIgMzA0IDI2OS43IDMwNEgxNzguM2MtNy4yIDAtMTQuMyAuNC0yMS4zIDEuM3pNMCA0ODIuM0MwIDQ5OC43IDEzLjMgNTEyIDI5LjcgNTEySDY0VjM0NS40QzI0LjkgMzc4LjEgMCA0MjcuMyAwIDQ4Mi4zek0zMjAgNDY0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDIyMy41bDU3LjEgOTUuMkMzMDMgNTA3LjIgMzIwIDQ4Ny42IDMyMCA0NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJMYXJnZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMMzgxLjkgMjc0YzQ4LjUtMjMuMiA4Mi4xLTcyLjcgODIuMS0xMzBDNDY0IDY0LjUgMzk5LjUgMCAzMjAgMEMyNTAuNCAwIDE5Mi40IDQ5LjMgMTc4LjkgMTE0LjlMMzguOCA1LjF6TTU0NS41IDUxMkg1MjhMMjg0LjMgMzIwaC01OUMxMzYuMiAzMjAgNjQgMzkyLjIgNjQgNDgxLjNjMCAxNyAxMy44IDMwLjcgMzAuNyAzMC43SDU0NS4zbC4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJMYXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMjg4QTE0NCAxNDQgMCAxIDAgMjU2IDBhMTQ0IDE0NCAwIDEgMCAwIDI4OHptLTk0LjcgMzJDNzIuMiAzMjAgMCAzOTIuMiAwIDQ4MS4zYzAgMTcgMTMuOCAzMC43IDMwLjcgMzAuN0g0ODEuM2MxNyAwIDMwLjctMTMuOCAzMC43LTMwLjdDNTEyIDM5Mi4yIDQzOS44IDMyMCAzNTAuNyAzMjBIMTYxLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZBMTI4IDEyOCAwIDEgMCAyMjQgMGExMjggMTI4IDAgMSAwIDAgMjU2em0tNDUuNyA0OEM3OS44IDMwNCAwIDM4My44IDAgNDgyLjNDMCA0OTguNyAxMy4zIDUxMiAyOS43IDUxMkgzOTIuNmMtNS40LTkuNC04LjYtMjAuMy04LjYtMzJWMzUyYzAtMi4xIC4xLTQuMiAuMy02LjNjLTMxLTI2LTcxLTQxLjctMTE0LjYtNDEuN0gxNzguM3pNNTI4IDI0MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OEg0OTZWMjcyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tODAgMzJ2NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMyVjI3MmMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDEyOGExMjggMTI4IDAgMSAxIDI1NiAwQTEyOCAxMjggMCAxIDEgOTYgMTI4ek0wIDQ4Mi4zQzAgMzgzLjggNzkuOCAzMDQgMTc4LjMgMzA0aDkxLjRDMzY4LjIgMzA0IDQ0OCAzODMuOCA0NDggNDgyLjNjMCAxNi40LTEzLjMgMjkuNy0yOS43IDI5LjdIMjkuN0MxMy4zIDUxMiAwIDQ5OC43IDAgNDgyLjN6TTQ3MiAyMDBINjE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDQ3MmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlck5pbmphIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZjLTU3LjIgMC0xMDUuNi0zNy41LTEyMi04OS4zYy0xLjEgMS4zLTIuMiAyLjYtMy41IDMuOGMtMTUuOCAxNS44LTM4LjggMjAuNy01My42IDIyLjFjLTguMSAuOC0xNC42LTUuNy0xMy44LTEzLjhjMS40LTE0LjcgNi4zLTM3LjggMjIuMS01My42YzUuOC01LjggMTIuNi0xMC4xIDE5LjYtMTMuNGMtNy0zLjItMTMuOC03LjYtMTkuNi0xMy40QzM3LjQgODIuNyAzMi42IDU5LjcgMzEuMSA0NC45Yy0uOC04LjEgNS43LTE0LjYgMTMuOC0xMy44YzE0LjcgMS40IDM3LjggNi4zIDUzLjYgMjIuMWM0LjggNC44IDguNyAxMC40IDExLjcgMTYuMUMxMzEuNCAyOC4yIDE3NC40IDAgMjI0IDBjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhzLTU3LjMgMTI4LTEyOCAxMjh6TTAgNDgyLjNDMCAzOTkuNSA1Ni40IDMzMCAxMzIuOCAzMDkuOWM2LTEuNiAxMi4yIC45IDE1LjkgNS44bDYyLjUgODMuM2M2LjQgOC41IDE5LjIgOC41IDI1LjYgMGw2Mi41LTgzLjNjMy43LTQuOSA5LjktNy40IDE1LjktNS44QzM5MS42IDMzMCA0NDggMzk5LjUgNDQ4IDQ4Mi4zYzAgMTYuNC0xMy4zIDI5LjctMjkuNyAyOS43SDI5LjdDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zek0xNjAgOTZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZIMjg4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlck51cnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDEyOFY3MC4yYzAtMTMuMyA4LjMtMjUuMyAyMC44LTMwbDk2LTM2YzcuMi0yLjcgMTUuMi0yLjcgMjIuNSAwbDk2IDM2YzEyLjUgNC43IDIwLjggMTYuNiAyMC44IDMwVjEyOGgtLjNjLjIgMi42IC4zIDUuMyAuMyA4djQwYzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4cy0xMjgtNTcuMy0xMjgtMTI4VjEzNmMwLTIuNyAuMS01LjQgLjMtOEg5NnptNDggNDhjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MFYxNjBIMTQ0djE2ek0xMTEuOSAzMjcuN2MxMC41LTMuNCAyMS44IC40IDI5LjQgOC41bDcxIDc1LjVjNi4zIDYuNyAxNyA2LjcgMjMuMyAwbDcxLTc1LjVjNy42LTguMSAxOC45LTExLjkgMjkuNC04LjVDNDAxIDM0OC42IDQ0OCA0MDkuNCA0NDggNDgxLjNjMCAxNy0xMy44IDMwLjctMzAuNyAzMC43SDMwLjdDMTMuOCA1MTIgMCA0OTguMiAwIDQ4MS4zYzAtNzEuOSA0Ny0xMzIuNyAxMTEuOS0xNTMuNnpNMjA4IDQ4VjY0SDE5MmMtNC40IDAtOCAzLjYtOCA4Vjg4YzAgNC40IDMuNiA4IDggOGgxNnYxNmMwIDQuNCAzLjYgOCA4IDhoMTZjNC40IDAgOC0zLjYgOC04Vjk2aDE2YzQuNCAwIDgtMy42IDgtOFY3MmMwLTQuNC0zLjYtOC04LThIMjQwVjQ4YzAtNC40LTMuNi04LTgtOEgyMTZjLTQuNCAwLTggMy42LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclBlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMjU2QTEyOCAxMjggMCAxIDAgMjI0IDBhMTI4IDEyOCAwIDEgMCAwIDI1NnptLTQ1LjcgNDhDNzkuOCAzMDQgMCAzODMuOCAwIDQ4Mi4zQzAgNDk4LjcgMTMuMyA1MTIgMjkuNyA1MTJIMzIyLjhjLTMuMS04LjgtMy43LTE4LjQtMS40LTI3LjhsMTUtNjAuMWMyLjgtMTEuMyA4LjYtMjEuNSAxNi44LTI5LjdsNDAuMy00MC4zYy0zMi4xLTMxLTc1LjctNTAuMS0xMjMuOS01MC4xSDE3OC4zem00MzUuNS02OC4zYy0xNS42LTE1LjYtNDAuOS0xNS42LTU2LjYgMGwtMjkuNCAyOS40IDcxIDcxIDI5LjQtMjkuNGMxNS42LTE1LjYgMTUuNi00MC45IDAtNTYuNmwtMTQuNC0xNC40ek0zNzUuOSA0MTdjLTQuMSA0LjEtNyA5LjItOC40IDE0LjlsLTE1IDYwLjFjLTEuNCA1LjUgLjIgMTEuMiA0LjIgMTUuMnM5LjcgNS42IDE1LjIgNC4ybDYwLjEtMTVjNS42LTEuNCAxMC44LTQuMyAxNC45LTguNEw1NzYuMSAzNTguN2wtNzEtNzFMMzc1LjkgNDE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAxMjhhMTI4IDEyOCAwIDEgMSAyNTYgMEExMjggMTI4IDAgMSAxIDk2IDEyOHpNMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNGg5MS40QzM2OC4yIDMwNCA0NDggMzgzLjggNDQ4IDQ4Mi4zYzAgMTYuNC0xMy4zIDI5LjctMjkuNyAyOS43SDI5LjdDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zek01MDQgMzEyVjI0OEg0NDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoNjRWMTM2YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2NjRoNjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINTUydjY0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyU2VjcmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxNmMtNi43IDAtMTAuOC0yLjgtMTUuNS02LjFDMjAxLjkgNS40IDE5NCAwIDE3NiAwYy0zMC41IDAtNTIgNDMuNy02NiA4OS40QzYyLjcgOTguMSAzMiAxMTIuMiAzMiAxMjhjMCAxNC4zIDI1IDI3LjEgNjQuNiAzNS45Yy0uNCA0LS42IDgtLjYgMTIuMWMwIDE3IDMuMyAzMy4yIDkuMyA0OEg0NS40QzM4IDIyNCAzMiAyMzAgMzIgMjM3LjRjMCAxLjcgLjMgMy40IDEgNWwzOC44IDk2LjlDMjguMiAzNzEuOCAwIDQyMy44IDAgNDgyLjNDMCA0OTguNyAxMy4zIDUxMiAyOS43IDUxMkg0MTguM2MxNi40IDAgMjkuNy0xMy4zIDI5LjctMjkuN2MwLTU4LjUtMjguMi0xMTAuNC03MS43LTE0M0w0MTUgMjQyLjRjLjYtMS42IDEtMy4zIDEtNWMwLTcuNC02LTEzLjQtMTMuNC0xMy40SDM0Mi43YzYtMTQuOCA5LjMtMzEgOS4zLTQ4YzAtNC4xLS4yLTguMS0uNi0xMi4xQzM5MSAxNTUuMSA0MTYgMTQyLjMgNDE2IDEyOGMwLTE1LjgtMzAuNy0yOS45LTc4LTM4LjZDMzI0IDQzLjcgMzAyLjUgMCAyNzIgMGMtMTggMC0yNS45IDUuNC0zMi41IDkuOWMtNC44IDMuMy04LjggNi4xLTE1LjUgNi4xem01NiAyMDhIMjY3LjZjLTE2LjUgMC0zMS4xLTEwLjYtMzYuMy0yNi4yYy0yLjMtNy0xMi4yLTctMTQuNSAwYy01LjIgMTUuNi0xOS45IDI2LjItMzYuMyAyNi4ySDE2OGMtMjIuMSAwLTQwLTE3LjktNDAtNDBWMTY5LjZjMjguMiA0LjEgNjEgNi40IDk2IDYuNHM2Ny44LTIuMyA5Ni02LjRWMTg0YzAgMjIuMS0xNy45IDQwLTQwIDQwem0tODggOTZsMTYgMzJMMTc2IDQ4MCAxMjggMjg4bDY0IDMyem0xMjgtMzJMMjcyIDQ4MCAyNDAgMzUybDE2LTMyIDY0LTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyU2hpZWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZBMTI4IDEyOCAwIDEgMCAyMjQgMGExMjggMTI4IDAgMSAwIDAgMjU2em0tNDUuNyA0OEM3OS44IDMwNCAwIDM4My44IDAgNDgyLjNDMCA0OTguNyAxMy4zIDUxMiAyOS43IDUxMkg0MTguM2MxLjggMCAzLjUtLjIgNS4zLS41Yy03Ni4zLTU1LjEtOTkuOC0xNDEtMTAzLjEtMjAwLjJjLTE2LjEtNC44LTMzLjEtNy4zLTUwLjctNy4zSDE3OC4zem0zMDguOC03OC4zbC0xMjAgNDhDMzU4IDI3Ny40IDM1MiAyODYuMiAzNTIgMjk2YzAgNjMuMyAyNS45IDE2OC44IDEzNC44IDIxNC4yYzUuOSAyLjUgMTIuNiAyLjUgMTguNSAwQzYxNC4xIDQ2NC44IDY0MCAzNTkuMyA2NDAgMjk2YzAtOS44LTYtMTguNi0xNS4xLTIyLjNsLTEyMC00OGMtNS43LTIuMy0xMi4xLTIuMy0xNy44IDB6TTU5MS40IDMxMmMtMy45IDUwLjctMjcuMiAxMTYuNy05NS40IDE0OS43VjI3My44TDU5MS40IDMxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMMzUzLjMgMjUxLjZDNDA3LjkgMjM3IDQ0OCAxODcuMiA0NDggMTI4QzQ0OCA1Ny4zIDM5MC43IDAgMzIwIDBDMjUwLjIgMCAxOTMuNSA1NS44IDE5MiAxMjUuMkwzOC44IDUuMXpNMjY0LjMgMzA0LjNDMTcwLjUgMzA5LjQgOTYgMzg3LjIgOTYgNDgyLjNjMCAxNi40IDEzLjMgMjkuNyAyOS43IDI5LjdINTE0LjNjMy45IDAgNy42LS43IDExLTIuMWwtMjYxLTIwNS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyVGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZBMTI4IDEyOCAwIDEgMCAyMjQgMGExMjggMTI4IDAgMSAwIDAgMjU2em0tNDUuNyA0OEM3OS44IDMwNCAwIDM4My44IDAgNDgyLjNDMCA0OTguNyAxMy4zIDUxMiAyOS43IDUxMkg0MTguM2MxMCAwIDE4LjgtNC45IDI0LjItMTIuNWwtOTkuMi05OS4yYy0xNC45LTE0LjktMjMuMy0zNS4xLTIzLjMtNTYuMXYtMzNjLTE1LjktNC43LTMyLjgtNy4yLTUwLjMtNy4ySDE3OC4zek0zODQgMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY4Mi43YzAgMTcgNi43IDMzLjMgMTguNyA0NS4zTDQ3OC4xIDQ5MS4zYzE4LjcgMTguNyA0OS4xIDE4LjcgNjcuOSAwbDczLjQtNzMuNGMxOC43LTE4LjcgMTguNy00OS4xIDAtNjcuOUw1MTIgMjQyLjdjLTEyLTEyLTI4LjMtMTguNy00NS4zLTE4LjdIMzg0em0yNCA4MGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyVGllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDEyOGExMjggMTI4IDAgMSAwIDI1NiAwQTEyOCAxMjggMCAxIDAgOTYgMTI4em05NC41IDIwMC4ybDE4LjYgMzFMMTc1LjggNDgzLjFsLTM2LTE0Ni45Yy0yLTguMS05LjgtMTMuNC0xNy45LTExLjNDNTEuOSAzNDIuNCAwIDQwNS44IDAgNDgxLjNjMCAxNyAxMy44IDMwLjcgMzAuNyAzMC43SDE2Mi41YzAgMCAwIDAgLjEgMEgxNjggMjgwaDUuNWMwIDAgMCAwIC4xIDBINDE3LjNjMTcgMCAzMC43LTEzLjggMzAuNy0zMC43YzAtNzUuNS01MS45LTEzOC45LTEyMS45LTE1Ni40Yy04LjEtMi0xNS45IDMuMy0xNy45IDExLjNsLTM2IDE0Ni45TDIzOC45IDM1OS4ybDE4LjYtMzFjNi40LTEwLjctMS4zLTI0LjItMTMuNy0yNC4ySDIyNCAyMDQuM2MtMTIuNCAwLTIwLjEgMTMuNi0xMy43IDI0LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAxMjhhMTI4IDEyOCAwIDEgMSAyNTYgMEExMjggMTI4IDAgMSAxIDk2IDEyOHpNMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNGg5MS40QzM2OC4yIDMwNCA0NDggMzgzLjggNDQ4IDQ4Mi4zYzAgMTYuNC0xMy4zIDI5LjctMjkuNyAyOS43SDI5LjdDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zek00NzEgMTQzYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDQ3IDQ3IDQ3LTQ3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNDcgNDcgNDcgNDdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDctNDctNDcgNDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDctNDctNDctNDdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZBMTI4IDEyOCAwIDEgMCAyMjQgMGExMjggMTI4IDAgMSAwIDAgMjU2em0tNDUuNyA0OEM3OS44IDMwNCAwIDM4My44IDAgNDgyLjNDMCA0OTguNyAxMy4zIDUxMiAyOS43IDUxMkg0MTguM2MxNi40IDAgMjkuNy0xMy4zIDI5LjctMjkuN0M0NDggMzgzLjggMzY4LjIgMzA0IDI2OS43IDMwNEgxNzguM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlcnNCZXR3ZWVuTGluZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNEMwIDEwLjcgMTAuNyAwIDI0IDBINjE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI0QzEwLjcgNDggMCAzNy4zIDAgMjR6TTAgNDg4YzAtMTMuMyAxMC43LTI0IDI0LTI0SDYxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6TTgzLjIgMTYwYTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNMzIgMzIwYzAtMzUuMyAyOC43LTY0IDY0LTY0aDk2YzEyLjIgMCAyMy43IDMuNCAzMy40IDkuNGMtMzcuMiAxNS4xLTY1LjYgNDcuMi03NS44IDg2LjZINjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyem00NjEuNiAzMmMtMTAuMy00MC4xLTM5LjYtNzIuNi03Ny43LTg3LjRjOS40LTUuNSAyMC40LTguNiAzMi4xLTguNmg5NmMzNS4zIDAgNjQgMjguNyA2NCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0OTMuNnpNMzkxLjIgMjkwLjRjMzIuMSA3LjQgNTguMSAzMC45IDY4LjkgNjEuNmMzLjUgMTAgNS41IDIwLjggNS41IDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMyaC0yMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyYzAtMTEuMiAxLjktMjIgNS41LTMyYzEwLjUtMjkuNyAzNS4zLTUyLjggNjYuMS02MC45YzcuOC0yLjEgMTYtMy4xIDI0LjUtMy4xaDk2YzcuNCAwIDE0LjcgLjggMjEuNiAyLjR6bTQ0LTEzMC40YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNMzIxLjYgOTZhODAgODAgMCAxIDEgMCAxNjAgODAgODAgMCAxIDEgMC0xNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJzR2VhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgMTYwQTgwIDgwIDAgMSAwIDE0NCAwYTgwIDgwIDAgMSAwIDAgMTYwem0zNjggMEE4MCA4MCAwIDEgMCA1MTIgMGE4MCA4MCAwIDEgMCAwIDE2MHpNMCAyOTguN0MwIDMxMC40IDkuNiAzMjAgMjEuMyAzMjBIMjM0LjdjLjIgMCAuNCAwIC43IDBjLTI2LjYtMjMuNS00My4zLTU3LjgtNDMuMy05NmMwLTcuNiAuNy0xNSAxLjktMjIuM2MtMTMuNi02LjMtMjguNy05LjctNDQuNi05LjdIMTA2LjdDNDcuOCAxOTIgMCAyMzkuOCAwIDI5OC43ek0zMjAgMzIwYzI0IDAgNDUuOS04LjggNjIuNy0yMy4zYzIuNS0zLjcgNS4yLTcuMyA4LTEwLjdjMi43LTMuMyA1LjctNi4xIDktOC4zQzQxMCAyNjIuMyA0MTYgMjQzLjkgNDE2IDIyNGMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NnM0MyA5NiA5NiA5NnptNjUuNCA2MC4yYy0xMC4zLTUuOS0xOC4xLTE2LjItMjAuOC0yOC4ySDI2MS4zQzE4Ny43IDM1MiAxMjggNDExLjcgMTI4IDQ4NS4zYzAgMTQuNyAxMS45IDI2LjcgMjYuNyAyNi43SDQ1NS4yYy0yLjEtNS4yLTMuMi0xMC45LTMuMi0xNi40di0zYy0xLjMtLjctMi43LTEuNS00LTIuM2wtMi42IDEuNWMtMTYuOCA5LjctNDAuNSA4LTU0LjctOS43Yy00LjUtNS42LTguNi0xMS41LTEyLjQtMTcuNmwtLjEtLjItLjEtLjItMi40LTQuMS0uMS0uMi0uMS0uMmMtMy40LTYuMi02LjQtMTIuNi05LTE5LjNjLTguMi0yMS4yIDIuMi00Mi42IDE5LTUyLjNsMi43LTEuNWMwLS44IDAtMS41IDAtMi4zczAtMS41IDAtMi4zbC0yLjctMS41ek01MzMuMyAxOTJINDkwLjdjLTE1LjkgMC0zMSAzLjUtNDQuNiA5LjdjMS4zIDcuMiAxLjkgMTQuNyAxLjkgMjIuM2MwIDE3LjQtMy41IDMzLjktOS43IDQ5YzIuNSAuOSA0LjkgMiA3LjEgMy4zbDIuNiAxLjVjMS4zLS44IDIuNi0xLjYgNC0yLjN2LTNjMC0xOS40IDEzLjMtMzkuMSAzNS44LTQyLjZjNy45LTEuMiAxNi0xLjkgMjQuMi0xLjlzMTYuMyAuNiAyNC4yIDEuOWMyMi41IDMuNSAzNS44IDIzLjIgMzUuOCA0Mi42djNjMS4zIC43IDIuNyAxLjUgNCAyLjNsMi42LTEuNWMxNi44LTkuNyA0MC41LTggNTQuNyA5LjdjMi4zIDIuOCA0LjUgNS44IDYuNiA4LjdjLTIuMS01Ny4xLTQ5LTEwMi43LTEwNi42LTEwMi43em05MS4zIDE2My45YzYuMy0zLjYgOS41LTExLjEgNi44LTE4Yy0yLjEtNS41LTQuNi0xMC44LTcuNC0xNS45bC0yLjMtNGMtMy4xLTUuMS02LjUtOS45LTEwLjItMTQuNWMtNC42LTUuNy0xMi43LTYuNy0xOS0zbC0yLjkgMS43Yy05LjIgNS4zLTIwLjQgNC0yOS42LTEuM3MtMTYuMS0xNC41LTE2LjEtMjUuMXYtMy40YzAtNy4zLTQuOS0xMy44LTEyLjEtMTQuOWMtNi41LTEtMTMuMS0xLjUtMTkuOS0xLjVzLTEzLjQgLjUtMTkuOSAxLjVjLTcuMiAxLjEtMTIuMSA3LjYtMTIuMSAxNC45djMuNGMwIDEwLjYtNi45IDE5LjgtMTYuMSAyNS4xcy0yMC40IDYuNi0yOS42IDEuM2wtMi45LTEuN2MtNi4zLTMuNi0xNC40LTIuNi0xOSAzYy0zLjcgNC42LTcuMSA5LjUtMTAuMiAxNC42bC0yLjMgMy45Yy0yLjggNS4xLTUuMyAxMC40LTcuNCAxNS45Yy0yLjYgNi44IC41IDE0LjMgNi44IDE3LjlsMi45IDEuN2M5LjIgNS4zIDEzLjcgMTUuOCAxMy43IDI2LjRzLTQuNSAyMS4xLTEzLjcgMjYuNGwtMyAxLjdjLTYuMyAzLjYtOS41IDExLjEtNi44IDE3LjljMi4xIDUuNSA0LjYgMTAuNyA3LjQgMTUuOGwyLjQgNC4xYzMgNS4xIDYuNCA5LjkgMTAuMSAxNC41YzQuNiA1LjcgMTIuNyA2LjcgMTkgM2wyLjktMS43YzkuMi01LjMgMjAuNC00IDI5LjYgMS4zczE2LjEgMTQuNSAxNi4xIDI1LjF2My40YzAgNy4zIDQuOSAxMy44IDEyLjEgMTQuOWM2LjUgMSAxMy4xIDEuNSAxOS45IDEuNXMxMy40LS41IDE5LjktMS41YzcuMi0xLjEgMTIuMS03LjYgMTIuMS0xNC45di0zLjRjMC0xMC42IDYuOS0xOS44IDE2LjEtMjUuMXMyMC40LTYuNiAyOS42LTEuM2wyLjkgMS43YzYuMyAzLjYgMTQuNCAyLjYgMTktM2MzLjctNC42IDcuMS05LjQgMTAuMS0xNC41bDIuNC00LjJjMi44LTUuMSA1LjMtMTAuMyA3LjQtMTUuOGMyLjYtNi44LS41LTE0LjMtNi44LTE3LjlsLTMtMS43Yy05LjItNS4zLTEzLjctMTUuOC0xMy43LTI2LjRzNC41LTIxLjEgMTMuNy0yNi40bDMtMS43ek00NzIgMzg0YTQwIDQwIDAgMSAxIDgwIDAgNDAgNDAgMCAxIDEgLTgwIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJzTGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTEuMiA5NmE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6TTMyIDI1NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg4NS42YzEwLjEtMzkuNCAzOC42LTcxLjUgNzUuOC04Ni42Yy05LjctNi0yMS4yLTkuNC0zMy40LTkuNEg5NmMtMzUuMyAwLTY0IDI4LjctNjQgNjR6bTQ2MS42IDMySDU3NmMxNy43IDAgMzItMTQuMyAzMi0zMmMwLTM1LjMtMjguNy02NC02NC02NEg0NDhjLTExLjcgMC0yMi43IDMuMS0zMi4xIDguNmMzOC4xIDE0LjggNjcuNCA0Ny4zIDc3LjcgODcuNHpNMzkxLjIgMjI2LjRjLTYuOS0xLjYtMTQuMi0yLjQtMjEuNi0yLjRoLTk2Yy04LjUgMC0xNi43IDEuMS0yNC41IDMuMWMtMzAuOCA4LjEtNTUuNiAzMS4xLTY2LjEgNjAuOWMtMy41IDEwLTUuNSAyMC44LTUuNSAzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmgyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJjMC0xMS4yLTEuOS0yMi01LjUtMzJjLTEwLjgtMzAuNy0zNi44LTU0LjItNjguOS02MS42ek01NjMuMiA5NmE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6TTMyMS42IDE5MmE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHpNMzIgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlcnNSYXlzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxIDdDMzEuNi0yLjMgMTYuNC0yLjMgNyA3Uy0yLjMgMzEuNiA3IDQxbDcyIDcyYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUw0MSA3ek01OTkgN0w1MjcgNzljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw3Mi03MmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwek03IDUwNWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGw3Mi03MmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwTDcgNDcxYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXptNTkyIDBjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC03Mi03MmMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWw3MiA3MnpNMzIwIDI1NmE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHpNMjEyLjEgMzM2Yy0yLjcgNy41LTQuMSAxNS42LTQuMSAyNGMwIDEzLjMgMTAuNyAyNCAyNCAyNEg0MDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRjMC04LjQtMS40LTE2LjUtNC4xLTI0Yy0uNS0xLjQtMS0yLjctMS42LTRjLTkuNC0yMi4zLTI5LjgtMzguOS01NC4zLTQzYy0zLjktLjctNy45LTEtMTItMUgyODBjLTQuMSAwLTguMSAuMy0xMiAxYy0uOCAuMS0xLjcgLjMtMi41IC41Yy0yNC45IDUuMS00NS4xIDIzLTUzLjQgNDYuNXpNMTc1LjggMjI0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptLTI2LjUgMzJDMTE5LjkgMjU2IDk2IDI3OS45IDk2IDMwOS4zYzAgMTQuNyAxMS45IDI2LjcgMjYuNyAyNi43aDU2LjFjOC0zNC4xIDMyLjgtNjEuNyA2NS4yLTczLjZjLTcuNS00LjEtMTYuMi02LjQtMjUuMy02LjRIMTQ5LjN6bTM2OCA4MGMxNC43IDAgMjYuNy0xMS45IDI2LjctMjYuN2MwLTI5LjUtMjMuOS01My4zLTUzLjMtNTMuM0g0MjEuM2MtOS4yIDAtMTcuOCAyLjMtMjUuMyA2LjRjMzIuNCAxMS45IDU3LjIgMzkuNSA2NS4yIDczLjZoNTYuMXpNNDY0IDIyNGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJzUmVjdGFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBDNDMgMCAwIDQzIDAgOTZWNDE2YzAgNTMgNDMgOTYgOTYgOTZINTQ0YzUzIDAgOTYtNDMgOTYtOTZWOTZjMC01My00My05Ni05Ni05Nkg5NnpNNjQgOTZjMC0xNy43IDE0LjMtMzIgMzItMzJINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWOTZ6bTE1OS44IDgwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTk2IDMwOS4zYzAgMTQuNyAxMS45IDI2LjcgMjYuNyAyNi43aDU2LjFjOC0zNC4xIDMyLjgtNjEuNyA2NS4yLTczLjZjLTcuNS00LjEtMTYuMi02LjQtMjUuMy02LjRIMTQ5LjNDMTE5LjkgMjU2IDk2IDI3OS45IDk2IDMwOS4zek00NjEuMiAzMzZoNTYuMWMxNC43IDAgMjYuNy0xMS45IDI2LjctMjYuN2MwLTI5LjUtMjMuOS01My4zLTUzLjMtNTMuM0g0MjEuM2MtOS4yIDAtMTcuOCAyLjMtMjUuMyA2LjRjMzIuNCAxMS45IDU3LjIgMzkuNSA2NS4yIDczLjZ6TTM3MiAyODljLTMuOS0uNy03LjktMS0xMi0xSDI4MGMtNC4xIDAtOC4xIC4zLTEyIDFjLTI2IDQuNC00Ny4zIDIyLjctNTUuOSA0N2MtMi43IDcuNS00LjEgMTUuNi00LjEgMjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRINDA4YzEzLjMgMCAyNC0xMC43IDI0LTI0YzAtOC40LTEuNC0xNi41LTQuMS0yNGMtOC42LTI0LjMtMjkuOS00Mi42LTU1LjktNDd6TTUxMiAxNzZhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMzIwIDI1NmE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlcnNTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDQ0MC42IDMyMEg2MTguN2MxMS44IDAgMjEuMy05LjYgMjEuMy0yMS4zQzY0MCAyMzkuOCA1OTIuMiAxOTIgNTMzLjMgMTkySDQ5MC43Yy0xNS45IDAtMzEgMy41LTQ0LjYgOS43YzEuMyA3LjIgMS45IDE0LjcgMS45IDIyLjNjMCAzMC4yLTEwLjUgNTgtMjggNzkuOWwtMjUuMi0xOS43QzQwOC4xIDI2Ny43IDQxNiAyNDYuOCA0MTYgMjI0YzAtNTMtNDMtOTYtOTYtOTZjLTMxLjEgMC01OC43IDE0LjgtNzYuMyAzNy43bC00MC42LTMxLjhjMTMtMTQuMiAyMC45LTMzLjEgMjAuOS01My45YzAtNDQuMi0zNS44LTgwLTgwLTgwQzExNi4zIDAgOTEuOSAxNC4xIDc3LjUgMzUuNUwzOC44IDUuMXpNMTA2LjcgMTkyQzQ3LjggMTkyIDAgMjM5LjggMCAyOTguN0MwIDMxMC40IDkuNiAzMjAgMjEuMyAzMjBIMjM0LjdjLjIgMCAuNCAwIC43IDBjLTIwLjYtMTguMi0zNS4yLTQyLjgtNDAuOC03MC44TDEyMS44IDE5MkgxMDYuN3pNMjYxLjMgMzUyQzE4Ny43IDM1MiAxMjggNDExLjcgMTI4IDQ4NS4zYzAgMTQuNyAxMS45IDI2LjcgMjYuNyAyNi43SDQ4NS4zYzEwLjUgMCAxOS41LTYgMjMuOS0xNC44TDMyNC45IDM1MkgyNjEuM3pNNTEyIDE2MEE4MCA4MCAwIDEgMCA1MTIgMGE4MCA4MCAwIDEgMCAwIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlcnNWaWV3ZmluZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDQ4aDg4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDMyQzE0LjMgMCAwIDE0LjMgMCAzMlYxMzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0OHpNMTc1LjggMjI0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptLTI2LjUgMzJDMTE5LjkgMjU2IDk2IDI3OS45IDk2IDMwOS4zYzAgMTQuNyAxMS45IDI2LjcgMjYuNyAyNi43aDU2LjFjOC0zNC4xIDMyLjgtNjEuNyA2NS4yLTczLjZjLTcuNS00LjEtMTYuMi02LjQtMjUuMy02LjRIMTQ5LjN6bTM2OCA4MGMxNC43IDAgMjYuNy0xMS45IDI2LjctMjYuN2MwLTI5LjUtMjMuOS01My4zLTUzLjMtNTMuM0g0MjEuM2MtOS4yIDAtMTcuOCAyLjMtMjUuMyA2LjRjMzIuNCAxMS45IDU3LjIgMzkuNSA2NS4yIDczLjZoNTYuMXptLTg5LjQgMGMtOC42LTI0LjMtMjkuOS00Mi42LTU1LjktNDdjLTMuOS0uNy03LjktMS0xMi0xSDI4MGMtNC4xIDAtOC4xIC4zLTEyIDFjLTI2IDQuNC00Ny4zIDIyLjctNTUuOSA0N2MtMi43IDcuNS00LjEgMTUuNi00LjEgMjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRINDA4YzEzLjMgMCAyNC0xMC43IDI0LTI0YzAtOC40LTEuNC0xNi41LTQuMS0yNHpNNDY0IDIyNGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS04MC0zMmE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6TTUwNCA0OGg4OHY4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDUwNGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNHpNNDggNDY0VjM3NmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJIMTM2YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDQ4em00NTYgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzc2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djg4SDUwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0IDBhODAgODAgMCAxIDEgMCAxNjBBODAgODAgMCAxIDEgMTQ0IDB6TTUxMiAwYTgwIDgwIDAgMSAxIDAgMTYwQTgwIDgwIDAgMSAxIDUxMiAwek0wIDI5OC43QzAgMjM5LjggNDcuOCAxOTIgMTA2LjcgMTkyaDQyLjdjMTUuOSAwIDMxIDMuNSA0NC42IDkuN2MtMS4zIDcuMi0xLjkgMTQuNy0xLjkgMjIuM2MwIDM4LjIgMTYuOCA3Mi41IDQzLjMgOTZjLS4yIDAtLjQgMC0uNyAwSDIxLjNDOS42IDMyMCAwIDMxMC40IDAgMjk4Ljd6TTQwNS4zIDMyMGMtLjIgMC0uNCAwLS43IDBjMjYuNi0yMy41IDQzLjMtNTcuOCA0My4zLTk2YzAtNy42LS43LTE1LTEuOS0yMi4zYzEzLjYtNi4zIDI4LjctOS43IDQ0LjYtOS43aDQyLjdDNTkyLjIgMTkyIDY0MCAyMzkuOCA2NDAgMjk4LjdjMCAxMS44LTkuNiAyMS4zLTIxLjMgMjEuM0g0MDUuM3pNMjI0IDIyNGE5NiA5NiAwIDEgMSAxOTIgMCA5NiA5NiAwIDEgMSAtMTkyIDB6TTEyOCA0ODUuM0MxMjggNDExLjcgMTg3LjcgMzUyIDI2MS4zIDM1MkgzNzguN0M0NTIuMyAzNTIgNTEyIDQxMS43IDUxMiA0ODUuM2MwIDE0LjctMTEuOSAyNi43LTI2LjcgMjYuN0gxNTQuN2MtMTQuNyAwLTI2LjctMTEuOS0yNi43LTI2Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVV0ZW5zaWxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAwQzQwMCAwIDI4OCAzMiAyODggMTc2VjI4OGMwIDM1LjMgMjguNyA2NCA2NCA2NGgzMlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzNTIgMjQwIDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek02NCAxNkM2NCA3LjggNTcuOSAxIDQ5LjcgLjFTMzQuMiA0LjYgMzIuNCAxMi41TDIuMSAxNDguOEMuNyAxNTUuMSAwIDE2MS41IDAgMTY3LjljMCA0NS45IDM1LjEgODMuNiA4MCA4Ny43VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI1NS42YzQ0LjktNC4xIDgwLTQxLjggODAtODcuN2MwLTYuNC0uNy0xMi44LTIuMS0xOS4xTDE5MS42IDEyLjVjLTEuOC04LTkuMy0xMy4zLTE3LjQtMTIuNFMxNjAgNy44IDE2MCAxNlYxNTAuMmMwIDUuNC00LjQgOS44LTkuOCA5LjhjLTUuMSAwLTkuMy0zLjktOS44LTlMMTI3LjkgMTQuNkMxMjcuMiA2LjMgMTIwLjMgMCAxMTIgMHMtMTUuMiA2LjMtMTUuOSAxNC42TDgzLjcgMTUxYy0uNSA1LjEtNC43IDktOS44IDljLTUuNCAwLTkuOC00LjQtOS44LTkuOFYxNnptNDguMyAxNTJsLS4zIDAtLjMgMCAuMy0uNyAuMyAuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhViAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS43IDM0LjVjMTYuMy02LjggMzUgLjkgNDEuOCAxNy4yTDE5MiAzNjQuOCAzMjIuNSA1MS43YzYuOC0xNi4zIDI1LjUtMjQgNDEuOC0xNy4yczI0IDI1LjUgMTcuMiA0MS44bC0xNjAgMzg0Yy01IDExLjktMTYuNiAxOS43LTI5LjUgMTkuN3MtMjQuNi03LjgtMjkuNS0xOS43TDIuNSA3Ni4zYy02LjgtMTYuMyAuOS0zNSAxNy4yLTQxLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZhblNodXR0bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMTA0djg4aDk2Vjk2SDcyYy00LjQgMC04IDMuNi04IDh6bTQ4MiA4OEw0NjUuMSA5NkgzODR2OTZINTQ2em0tMjI2IDBWOTZIMjI0djk2aDk2ek01OTIgMzg0SDU3NmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05NkgyNTZjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjEwNEMwIDY0LjIgMzIuMiAzMiA3MiAzMkgxOTIgMzUyIDQ2NS4xYzE4LjkgMCAzNi44IDguMyA0OSAyMi44TDYyNSAxODYuNWM5LjcgMTEuNSAxNSAyNi4xIDE1IDQxLjJWMzM2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4em0tNjQgMGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0xNjAgNDMyYTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmF1bHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDgwbDE2IDMyaDY0bDE2LTMySDQwMGwxNiAzMmg2NGwxNi0zMmgxNmMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjI0IDMyMGE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHptMC0yNDBhMTYwIDE2MCAwIDEgMSAwIDMyMCAxNjAgMTYwIDAgMSAxIDAtMzIwek00ODAgMjIxLjNWMzM2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjIyMS4zYy0xOC42LTYuNi0zMi0yNC40LTMyLTQ1LjNjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OGMwIDIwLjktMTMuNCAzOC43LTMyIDQ1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZlY3RvclNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjggODBoMzJ2MzJIMzY4Vjgwek0zNTIgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMySDEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDMyIDAgNDYuMyAwIDY0djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyVjM1MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJIOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJIMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMlYxNjBjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJIMzUyek05NiAxNjBjMTcuNyAwIDMyLTE0LjMgMzItMzJIMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMyVjM1MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJIMTI4YzAtMTcuNy0xNC4zLTMyLTMyLTMyVjE2MHpNNDggNDAwSDgwdjMySDQ4VjQwMHptMzIwIDMyVjQwMGgzMnYzMkgzNjh6TTQ4IDExMlY4MEg4MHYzMkg0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVudXNEb3VibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDI4OGExMTIgMTEyIDAgMSAwIDAtMjI0IDExMiAxMTIgMCAxIDAgMCAyMjR6TTM2OCAxNzZjMCA4Ni4zLTYyLjEgMTU4LjEtMTQ0IDE3My4xVjM4NGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyMjR2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ4SDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgzMlYzNDkuMUM3OC4xIDMzNC4xIDE2IDI2Mi4zIDE2IDE3NkMxNiA3OC44IDk0LjggMCAxOTIgMHMxNzYgNzguOCAxNzYgMTc2ek0zNDQgMzE4YzE0LjYtMTUuNiAyNi44LTMzLjQgMzYtNTNjMTguOCAxNC40IDQyLjQgMjMgNjggMjNjNjEuOSAwIDExMi01MC4xIDExMi0xMTJzLTUwLjEtMTEyLTExMi0xMTJjLTI1LjYgMC00OS4xIDguNi02OCAyM2MtOS4zLTE5LjUtMjEuNS0zNy40LTM2LTUzQzM3My4xIDEyLjYgNDA5LjEgMCA0NDggMGM5Ny4yIDAgMTc2IDc4LjggMTc2IDE3NmMwIDg2LjMtNjIuMSAxNTguMS0xNDQgMTczLjFWMzg0aDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQ4MHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDhIMzg0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDMyVjM0OS4xYy0yNi42LTQuOS01MS4xLTE1LjctNzItMzEuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVudXNNYXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAyODhhMTEyIDExMiAwIDEgMCAwLTIyNCAxMTIgMTEyIDAgMSAwIDAgMjI0ek0zNTIgMTc2YzAgODYuMy02Mi4xIDE1OC4xLTE0NCAxNzMuMVYzODRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjA4djMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OEgxMTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoMzJWMzQ5LjFDNjIuMSAzMzQuMSAwIDI2Mi4zIDAgMTc2QzAgNzguOCA3OC44IDAgMTc2IDBzMTc2IDc4LjggMTc2IDE3NnpNMjcxLjkgMzYwLjZjMTkuMy0xMC4xIDM2LjktMjMuMSA1Mi4xLTM4LjRjMjAgMTguNSA0Ni43IDI5LjggNzYuMSAyOS44YzYxLjkgMCAxMTItNTAuMSAxMTItMTEycy01MC4xLTExMi0xMTItMTEyYy03LjIgMC0xNC4zIC43LTIxLjEgMmMtNC45LTIxLjUtMTMtNDEuNy0yNC02MC4yQzM2OS4zIDY2IDM4NC40IDY0IDQwMCA2NGMzNyAwIDcxLjQgMTEuNCA5OS44IDMxbDIwLjYtMjAuNkw0ODcgNDFjLTYuOS02LjktOC45LTE3LjItNS4yLTI2LjJTNDk0LjMgMCA1MDQgMEg2MTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRWMTM2YzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTMzLjQtMzMuNEw1NDUgMTQwLjJjMTkuNSAyOC40IDMxIDYyLjcgMzEgOTkuOGMwIDk3LjItNzguOCAxNzYtMTc2IDE3NmMtNTAuNSAwLTk2LTIxLjMtMTI4LjEtNTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVudXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgMTc2YTExMiAxMTIgMCAxIDEgMjI0IDBBMTEyIDExMiAwIDEgMSA4MCAxNzZ6TTIyNCAzNDkuMWM4MS45LTE1IDE0NC04Ni44IDE0NC0xNzMuMUMzNjggNzguOCAyODkuMiAwIDE5MiAwUzE2IDc4LjggMTYgMTc2YzAgODYuMyA2Mi4xIDE1OC4xIDE0NCAxNzMuMVYzODRIMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDMydjMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDQ4aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDIyNFYzNDkuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVzdFBhdGNoZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUxLjIgNjkuN2w1NS45IDE2Ny43LTExIDMzLjFjLTIuNyA4LjItNC4xIDE2LjctNC4xIDI1LjNWNDY0YzAgMTQuNSAzLjkgMjguMiAxMC43IDM5LjlDMTk1IDUwOSAxODUuOSA1MTIgMTc2IDUxMkg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMjcwLjVjMC05LjUgMi44LTE4LjcgOC4xLTI2LjZsNDcuOS03MS44YzUuMy03LjkgOC4xLTE3LjEgOC4xLTI2LjZWMTI4IDU0LjMgNDhDNjQgMjEuNSA4NS41IDAgMTEyIDBoNC41Yy4yIDAgLjQgMCAuNiAwYy40IDAgLjggMCAxLjIgMGMxOC44IDAgMzQuMSA5LjcgNDQuMSAxOC44QzE3MS42IDI3LjIgMTkwLjggNDAgMjI0IDQwczUyLjQtMTIuOCA2MS43LTIxLjJDMjk1LjcgOS43IDMxMSAwIDMyOS43IDBjLjQgMCAuOCAwIDEuMiAwYy4yIDAgLjQgMCAuNiAwSDMzNmMyNi41IDAgNDggMjEuNSA0OCA0OHY2LjNWMTI4djE3LjVjMCA5LjUgMi44IDE4LjcgOC4xIDI2LjZsNDcuOSA3MS44YzUuMyA3LjkgOC4xIDE3LjEgOC4xIDI2LjZWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDI3MmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMjk1LjhjMC01LjIgLjgtMTAuMyAyLjUtMTUuMkwyOTYuOCA2OS43QzI3OS40IDc5LjcgMjU1LjQgODggMjI0IDg4cy01NS40LTguMy03Mi44LTE4LjN6TTk2IDQ1NmE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6TTYzLjUgMjU1LjVjLTQuNyA0LjctNC43IDEyLjMgMCAxN0w3OSAyODggNjMuNSAzMDMuNWMtNC43IDQuNy00LjcgMTIuMyAwIDE3czEyLjMgNC43IDE3IDBMOTYgMzA1bDE1LjUgMTUuNWM0LjcgNC43IDEyLjMgNC43IDE3IDBzNC43LTEyLjMgMC0xN0wxMTMgMjg4bDE1LjUtMTUuNWM0LjctNC43IDQuNy0xMi4zIDAtMTdzLTEyLjMtNC43LTE3IDBMOTYgMjcxIDgwLjUgMjU1LjVjLTQuNy00LjctMTIuMy00LjctMTcgMHpNMzA0IDI4MHY4IDMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMiA4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0aC04di04YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWZXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwNy4xIDIzNy40TDE1MS4yIDY5LjdDMTY4LjYgNzkuNyAxOTIuNiA4OCAyMjQgODhzNTUuNC04LjMgNzIuOC0xOC4zTDIyNi41IDI4MC42Yy0xLjYgNC45LTIuNSAxMC0yLjUgMTUuMlY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhINDAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI3MC41YzAtOS41LTIuOC0xOC43LTguMS0yNi42bC00Ny45LTcxLjhjLTUuMy03LjktOC4xLTE3LjEtOC4xLTI2LjZWMTI4IDU0LjMgNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhoLTQuNWMtLjIgMC0uNCAwLS42IDBjLS40IDAtLjggMC0xLjIgMEMzMTEgMCAyOTUuNyA5LjcgMjg1LjcgMTguOEMyNzYuNCAyNy4yIDI1Ny4yIDQwIDIyNCA0MHMtNTIuNC0xMi44LTYxLjctMjEuMkMxNTIuMyA5LjcgMTM3IDAgMTE4LjMgMGMtLjQgMC0uOCAwLTEuMiAwYy0uMiAwLS40IDAtLjYgMEgxMTJDODUuNSAwIDY0IDIxLjUgNjQgNDh2Ni4zVjEyOHYxNy41YzAgOS41LTIuOCAxOC43LTguMSAyNi42TDguMSAyNDMuOUMyLjggMjUxLjggMCAyNjEuMSAwIDI3MC41VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgxNzZjOS45IDAgMTktMyAyNi43LTguMUMxOTUuOSA0OTIuMiAxOTIgNDc4LjUgMTkyIDQ2NFYyOTUuOGMwLTguNiAxLjQtMTcuMSA0LjEtMjUuM2wxMS0zMy4xek0zNDcuMyAzNTYuN2w0OCA0OGM2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwbC00OC00OGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwem0tMjk0LjYgNDhsNDgtNDhjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42bC00OCA0OGMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlhbENpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJIOTZoNjQgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJWMjY2LjhjLTIwLjIgMjguNi0zMiA2My41LTMyIDEwMS4yYzAgMjUuMiA1LjMgNDkuMSAxNC44IDcwLjhDMTg5LjUgNDYzLjcgMTYwLjYgNDgwIDEyOCA0ODBjLTUzIDAtOTYtNDMtOTYtOTZWOTZDMTQuMyA5NiAwIDgxLjcgMCA2NHpNOTYgOTZ2OTZoNjRWOTZIOTZ6TTIyNCAzNjhhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMjExLjMtNDMuM2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMMzUyIDM4NS40bC0yOC43LTI4LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZsNDAgNDBjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBsNzItNzJjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpYWxWaXJ1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZWMzg0YzAgNTMgNDMgOTYgOTYgOTZjMjguNiAwIDU0LjItMTIuNSA3MS44LTMyLjNjLjEtMTQuMiA1LjYtMjguMyAxNi40LTM5LjFjLjItLjIgLjEtLjYtLjItLjZjLTMwLjkgMC01Ni0yNS4xLTU2LTU2czI1LjEtNTYgNTYtNTZjLjMgMCAuNC0uNCAuMi0uNmMtMjEuOS0yMS45LTIxLjktNTcuMyAwLTc5LjJjMi40LTIuNCA1LTQuNiA3LjgtNi41Vjk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE2MCA5NiAzMnpNOTYgMTkyVjk2aDY0djk2SDk2ek0yMTYgMzc2YzI4LjggMCA0My4yIDM0LjggMjIuOSA1NS4yYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBjMjAuNC0yMC40IDU1LjItNS45IDU1LjIgMjIuOWMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMjguOCAzNC44LTQzLjIgNTUuMi0yMi45YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUM0NDQuOCA0MTAuOCA0NTkuMiAzNzYgNDg4IDM3NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGMtMjguOCAwLTQzLjItMzQuOC0yMi45LTU1LjJjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEM0MTAuOCAyNTkuMiAzNzYgMjQ0LjggMzc2IDIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGMwIDI4LjgtMzQuOCA0My4yLTU1LjIgMjIuOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWMyMC40IDIwLjQgNS45IDU1LjItMjIuOSA1NS4yYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0em0xMDQtODhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em00MCA5NmEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Mi42IDkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsOS40IDkuNEwyOC4xIDM0Mi42QzEwLjEgMzYwLjYgMCAzODUgMCA0MTAuNVY0MTZjMCA1MyA0MyA5NiA5NiA5Nmg1LjVjMjUuNSAwIDQ5LjktMTAuMSA2Ny45LTI4LjFMNDQ4IDIwNS4zbDkuNCA5LjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtMzItMzItOTYtOTYtMzItMzJ6TTIwNS4zIDI1NkwzNTIgMTA5LjMgNDAyLjcgMTYwbC05NiA5NkgyMDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlhbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkg4OGg0OCA1NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMlY0MDBjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBWOTZDMTQuMyA5NiAwIDgxLjcgMCA2NHpNMTM2IDk2SDg4VjI1Nmg0OFY5NnpNMjg4IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDU2IDQ4IDU2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyVjQwMGMwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MFY5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTQyNCA5NkgzNzZWMjU2aDQ4Vjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWRlb1NsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdsLTg2LjQtNjcuNyAxMy44IDkuMmM5LjggNi41IDIyLjQgNy4yIDMyLjkgMS42czE2LjktMTYuNCAxNi45LTI4LjJWMTI4YzAtMTEuOC02LjUtMjIuNi0xNi45LTI4LjJzLTIzLTUtMzIuOSAxLjZsLTk2IDY0TDQ0OCAxNzQuOVYxOTIgMzIwdjUuOGwtMzItMjUuMVYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMTEzLjlMMzguOCA1LjF6TTQwNyA0MTYuN0wzMi4zIDEyMS41Yy0uMiAyLjEtLjMgNC4zLS4zIDYuNVYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzUyYzIzLjQgMCA0My45LTEyLjYgNTUtMzEuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NCAyOC43IDY0IDY0VjM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4ek01NTkuMSA5OS44YzEwLjQgNS42IDE2LjkgMTYuNCAxNi45IDI4LjJWMzg0YzAgMTEuOC02LjUgMjIuNi0xNi45IDI4LjJzLTIzIDUtMzIuOS0xLjZsLTk2LTY0TDQxNiAzMzcuMVYzMjAgMTkyIDE3NC45bDE0LjItOS41IDk2LTY0YzkuOC02LjUgMjIuNC03LjIgMzIuOS0xLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpaGFyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODEgMjJMMzA1LjggNC43YzEuMy0uOSAyLjctMS44IDQuMS0yLjRDMzEzLjEgLjcgMzE2LjYgMCAzMjAgMHM2LjkgLjcgMTAuMSAyLjJjMS40IC43IDIuOCAxLjUgNC4xIDIuNEwzNTkgMjJDMzkzIDQ1LjggNDMwLjggNjMuNSA0NzAuOCA3NC40bDIzIDYuM2MxLjggLjUgMy42IDEuMSA1LjIgMmMzLjIgMS43IDUuOSA0IDguMSA2LjhjMy44IDQuOSA1LjYgMTEuMyA0LjcgMTcuOGMtLjQgMi44LTEuMiA1LjQtMi41IDcuOGMtMS43IDMuMi00IDUuOS02LjggOC4xYy00LjMgMy4yLTkuNiA1LjEtMTUuMSA0LjlINDgwdjU2LjFsNi40IDUuMSA1LjIgNC4xYzIxLjEgMTYuNyA0NSAyOS42IDcwLjUgMzguMWwyOC45IDkuNmMxLjYgLjUgMy4yIDEuMiA0LjYgMmMzLjEgMS43IDUuOCA0LjEgNy44IDYuOXMzLjUgNi4xIDQuMSA5LjZjLjUgMi43IC42IDUuNSAuMSA4LjNzLTEuNCA1LjQtMi43IDcuOGMtMS43IDMuMS00LjEgNS44LTYuOSA3LjhzLTYuMSAzLjUtOS42IDQuMWMtMS42IC4zLTMuMyAuNC01IC40SDU0NHY2NS45YzIwLjUgMjIuOCA0Ny40IDM5LjIgNzcuNCA0Ni43QzYzMiA0MDMgNjQwIDQxMi42IDY0MCA0MjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRINTc2djMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OEgzNTJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ4SDEyOHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDhIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0YzAtMTEuNCA4LTIxIDE4LjYtMjMuNGMzMC03LjYgNTYuOS0yMy45IDc3LjQtNDYuN1YyODhINTYuNmMtMS43IDAtMy40LS4xLTUtLjRjLTMuNS0uNy02LjgtMi4xLTkuNi00LjFzLTUuMi00LjctNy03LjhjLTEuMy0yLjQtMi4zLTUtMi43LTcuOHMtLjQtNS42IC4xLTguM2MuNy0zLjUgMi4xLTYuOCA0LjEtOS42czQuNy01LjIgNy44LTYuOWMxLjQtLjggMy0xLjUgNC42LTJsMjguOS05LjZjMjUuNS04LjUgNDkuNC0yMS40IDcwLjUtMzguMWw1LjItNC4xIDYuNC01LjFWMTc2IDEyOGgtNy41Yy01LjUgLjEtMTAuOC0xLjctMTUuMS00LjljLTIuOC0yLjEtNS4xLTQuOC02LjgtOC4xYy0xLjItMi40LTIuMS01LTIuNS03LjhjLS45LTYuNSAuOS0xMi44IDQuNy0xNy44YzIuMS0yLjggNC44LTUuMSA4LjEtNi44YzEuNi0uOCAzLjQtMS41IDUuMi0ybDIzLTYuM0MyMDkuMiA2My41IDI0NyA0NS44IDI4MSAyMnpNNDE2IDEyOEgzMjAgMjI0djY0aDcyIDQ4IDcyVjEyOHpNMTYwIDI4OHY2NEgyOTZoMjQgMjRINDgwVjI4OEgzNDQgMzIwaDBIMjk2IDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlydXNDb3ZpZFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNDcyLjEgMzQ0LjdjMTEuNC0xOS41IDE5LjEtNDEuNCAyMi4zLTY0LjdINTI4djE2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjE2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djE2SDQ5NC40Yy00LjItMzAuNy0xNi4zLTU4LjgtMzQuMS04Mi4zTDQ4NCAxMjUuOWwxMS4zIDExLjNjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDQ3Mi43IDQ2LjdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlMNDUwLjEgOTJsLTIzLjggMjMuOEM0MDIuOCA5Ny45IDM3NC43IDg1LjggMzQ0IDgxLjZWNDhoMTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjgwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDE2VjgxLjZjLTMwLjcgNC4yLTU4LjggMTYuMy04Mi4zIDM0LjFMMTg5LjkgOTJsMTEuMy0xMS4zYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBMMTM0LjEgNzkuOCAzOC44IDUuMXptMzYyLjUgNDA3TDE0OS4yIDIxMy41Yy0xLjUgNi0yLjcgMTIuMi0zLjUgMTguNUgxMTJWMjE2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djgwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjgwaDMzLjZjNC4yIDMwLjcgMTYuMyA1OC44IDM0LjEgODIuM0wxNTYgMzg2LjFsLTExLjMtMTEuM2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWw1Ni42IDU2LjZjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDE4OS45IDQyMGwyMy44LTIzLjhjMjMuNSAxNy45IDUxLjcgMjkuOSA4Mi4zIDM0LjFWNDY0SDI4MGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgzNDRWNDMwLjRjMjAuNC0yLjggMzkuNy05LjEgNTcuMy0xOC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaXJ1c0NvdmlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg4MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyODBWODEuNmMzMC43IDQuMiA1OC44IDE2LjMgODIuMyAzNC4xTDM4Ni4xIDkyIDM3NC44IDgwLjZjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw1Ni42IDU2LjZjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMEw0MjAgMTI1LjlsLTIzLjggMjMuOGMxNy45IDIzLjUgMjkuOSA1MS43IDM0LjEgODIuM0g0NjRWMjE2YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2ODBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjgwSDQzMC40Yy00LjIgMzAuNy0xNi4zIDU4LjgtMzQuMSA4Mi4zTDQyMCAzODYuMWwxMS4zLTExLjNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC01Ni42IDU2LjZjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlMMzg2LjEgNDIwbC0yMy44LTIzLjhjLTIzLjUgMTcuOS01MS43IDI5LjktODIuMyAzNC4xVjQ2NGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoMTZWNDMwLjRjLTMwLjctNC4yLTU4LjgtMTYuMy04Mi4zLTM0LjFMMTI1LjkgNDIwbDExLjMgMTEuM2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDQ2LjcgNDA4LjdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMEw5MiAzODYuMWwyMy44LTIzLjhDOTcuOSAzMzguOCA4NS44IDMxMC43IDgxLjYgMjgwSDQ4djE2YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjIxNmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djE2SDgxLjZjNC4yLTMwLjcgMTYuMy01OC44IDM0LjEtODIuM0w5MiAxMjUuOSA4MC42IDEzNy4yYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDU2LjYtNTYuNmM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlMMTI1LjkgOTJsMjMuOCAyMy44YzIzLjUtMTcuOSA1MS43LTI5LjkgODIuMy0zNC4xVjQ4SDIxNmMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bTQ4IDIwMGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwem02NCAxMDRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaXJ1c1NsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdsLTE1NC4zLTEyMWMtMi0zMC4xIDIwLjgtNjAuMSA1Ni02MC4xSDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg1MzIuNWMtNDkuOSAwLTc0LjktNjAuMy0zOS42LTk1LjZsOC4yLTguMmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtOC4yIDguMkM0MTIuMyAxMTguNCAzNTIgOTMuNCAzNTIgNDMuNVYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0My41YzAgNDkuOS02MC4zIDc0LjktOTUuNiAzOS42TDE4NC4yIDc1Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGMtMS42IDEuNi0zLjEgMy40LTQuMyA1LjNMMzguOCA1LjF6bTIyNS44IDE3N2M2LjktMy45IDE0LjktNi4xIDIzLjQtNi4xYzI2LjUgMCA0OCAyMS41IDQ4IDQ4YzAgNC40LS42IDguNy0xLjcgMTIuN2wtNjkuNy01NC42ek00MDIgNDEyLjdMMTQ0LjcgMjEwYy05LjUgOC41LTIyLjIgMTQtMzcuMiAxNEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmgxMS41YzQ5LjkgMCA3NC45IDYwLjMgMzkuNiA5NS42bC04LjIgOC4yYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDguMi04LjJjMzUuMy0zNS4zIDk1LjYtMTAuMyA5NS42IDM5LjZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDY4LjVjMC0zMS4yIDIzLjYtNTIuNyA1MC01NS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaXJ1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWNDMuNWMwIDQ5LjktNjAuMyA3NC45LTk1LjYgMzkuNkwxMjAuMiA3NUMxMDcuNyA2Mi41IDg3LjUgNjIuNSA3NSA3NXMtMTIuNSAzMi44IDAgNDUuM2w4LjIgOC4yQzExOC40IDE2My43IDkzLjQgMjI0IDQzLjUgMjI0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQzLjVjNDkuOSAwIDc0LjkgNjAuMyAzOS42IDk1LjZMNzUgMzkxLjhjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsOC4yLTguMmMzNS4zLTM1LjMgOTUuNi0xMC4zIDk1LjYgMzkuNlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0NjguNWMwLTQ5LjkgNjAuMy03NC45IDk1LjYtMzkuNmw4LjIgOC4yYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTguMi04LjJjLTM1LjMtMzUuMy0xMC4zLTk1LjYgMzkuNi05NS42SDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0NjguNWMtNDkuOSAwLTc0LjktNjAuMy0zOS42LTk1LjZsOC4yLTguMmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtOC4yIDguMkMzNDguMyAxMTguNCAyODggOTMuNCAyODggNDMuNVYzMnpNMTc2IDIyNGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem0xMjggNTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaXJ1c2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0VjM3LjVjMCAzNS42IDQzLjEgNTMuNSA2OC4zIDI4LjNsOS41LTkuNWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTkuNSA5LjVDMjkzIDEyNC45IDMxMC45IDE2OCAzNDYuNSAxNjhIMzYwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDM0Ni41Yy0zNS42IDAtNTMuNSA0My4xLTI4LjMgNjguM2w5LjUgOS41YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTkuNS05LjVDMjU5LjEgMjkzIDIxNiAzMTAuOSAyMTYgMzQ2LjVWMzYwYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjM0Ni41YzAtMzUuNi00My4xLTUzLjUtNjguMy0yOC4zbC05LjUgOS41Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDkuNS05LjVDOTEgMjU5LjEgNzMuMSAyMTYgMzcuNSAyMTZIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRIMzcuNWMzNS42IDAgNTMuNS00My4xIDI4LjMtNjguM2wtOS41LTkuNWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDkuNSA5LjVDMTI0LjkgOTEgMTY4IDczLjEgMTY4IDM3LjVWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6bTQ4IDIyNGExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bS00OC02NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0zMjAgODBjMCAzMyAzOS45IDQ5LjUgNjMuMiAyNi4yYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNkM1NzQuNSAzMTIuMSA1OTEgMzUyIDYyNCAzNTJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZjLTMzIDAtNDkuNSAzOS45LTI2LjIgNjMuMmM2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwQzU1MS45IDQ0Ni41IDUxMiA0NjMgNTEyIDQ5NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmMwLTMzLTM5LjktNDkuNS02My4yLTI2LjJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZDNDE3LjUgNDIzLjkgNDAxIDM4NCAzNjggMzg0Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2YzMzIDAgNDkuNS0zOS45IDI2LjItNjMuMmMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwQzQ0MC4xIDI4OS41IDQ4MCAyNzMgNDgwIDI0MGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2em0wIDExMmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2ljZW1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0IDMyMGE4MCA4MCAwIDEgMSAwLTE2MCA4MCA4MCAwIDEgMSAwIDE2MHptMTE5LjggMGMxNS4zLTIyLjkgMjQuMi01MC40IDI0LjItODBjMC03OS41LTY0LjUtMTQ0LTE0NC0xNDRTMCAxNjAuNSAwIDI0MHM2NC41IDE0NCAxNDQgMTQ0SDQ5NmM3OS41IDAgMTQ0LTY0LjUgMTQ0LTE0NHMtNjQuNS0xNDQtMTQ0LTE0NHMtMTQ0IDY0LjUtMTQ0IDE0NGMwIDI5LjYgOC45IDU3LjEgMjQuMiA4MEgyNjMuOHpNNDk2IDE2MGE4MCA4MCAwIDEgMSAwIDE2MCA4MCA4MCAwIDEgMSAwLTE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm9sY2FubyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMTQ0Yy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0YzE1LjcgMCAzMCA1LjYgNDEuMiAxNUMyMTIuNCAxMi40IDIzMi43IDAgMjU2IDBzNDMuNiAxMi40IDU0LjggMzFDMzIyIDIxLjYgMzM2LjMgMTYgMzUyIDE2YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0Yy0xNC43IDAtMjguMy01LTM5LjEtMTMuM2wtMzIgNDhDMjc1LjMgMTg3IDI2NiAxOTIgMjU2IDE5MnMtMTkuMy01LTI0LjktMTMuM2wtMzItNDhDMTg4LjMgMTM5IDE3NC43IDE0NCAxNjAgMTQ0ek0xNDQgMzUybDQ4LjQtMjQuMmMxMC4yLTUuMSAyMS42LTcuOCAzMy03LjhjMTkuNiAwIDM4LjQgNy44IDUyLjIgMjEuNmwzMi41IDMyLjVjNi4zIDYuMyAxNC45IDkuOSAyMy44IDkuOWMxMS4zIDAgMjEuOC01LjYgMjgtMTVsOS43LTE0LjYtNTguOS02Ni4zYy05LjEtMTAuMi0yMi4yLTE2LjEtMzUuOS0xNi4xSDIzNS4xYy0xMy43IDAtMjYuOCA1LjktMzUuOSAxNi4xbC01OS45IDY3LjRMMTQ0IDM1MnptMTkuNC05NS44YzE4LjItMjAuNSA0NC4zLTMyLjIgNzEuOC0zMi4yaDQxLjhjMjcuNCAwIDUzLjUgMTEuNyA3MS44IDMyLjJsMTUwLjIgMTY5YzguNSA5LjUgMTMuMiAyMS45IDEzLjIgMzQuN2MwIDI4LjgtMjMuNCA1Mi4yLTUyLjIgNTIuMkg1Mi4yQzIzLjQgNTEyIDAgNDg4LjYgMCA0NTkuOGMwLTEyLjggNC43LTI1LjEgMTMuMi0zNC43bDE1MC4yLTE2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm9sbGV5YmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTEuOCAyNjcuNGMtMjYuMSA4LjctNTMuNCAxMy44LTgxIDE1LjFjOS4yLTEwNS4zLTMxLjUtMjA0LjItMTAzLjItMjcyLjRDNDM0LjEgNDEuMSA1MTIgMTM5LjUgNTEyIDI1NmMwIDMuOC0uMSA3LjYtLjIgMTEuNHptLTMuOSAzNC43Yy01LjggMzItMTcuNiA2Mi0zNC4yIDg4LjdjLTk3LjUgNDguNS0yMTcuNyA0Mi42LTMxMS45LTI0LjVjMjMuNy0zNi4yIDU1LjQtNjcuNyA5NC41LTkxLjhjNzkuOSA0My4yIDE3MC4xIDUwLjggMjUxLjYgMjcuNnptLTIzNi01NS41Yy0yLjUtOTAuOS00MS4xLTE3Mi43LTEwMS45LTIzMS43QzE5Ni44IDUuMiAyMjUuOCAwIDI1NiAwYzIuNyAwIDUuMyAwIDcuOSAuMWM5MC44IDYwLjIgMTQ1LjcgMTY3LjIgMTM0LjcgMjgyLjNjLTQzLjEtMi40LTg2LjQtMTQuMS0xMjYuOC0zNS45ek0xMzggMjguOGMyMC42IDE4LjMgMzguNyAzOS40IDUzLjcgNjIuNkM5NS45IDEzNi4xIDMwLjYgMjIwLjggNy4zIDMxNi45QzIuNSAyOTcuNCAwIDI3NyAwIDI1NkMwIDE1Ny4yIDU2IDcxLjUgMTM4IDI4Ljh6bTY5LjYgOTAuNWMxOS41IDM4LjYgMzEgODEuOSAzMi4zIDEyNy43QzE2Mi41IDI5NC42IDExMC45IDM2OC45IDkwLjIgNDUxQzY2IDQzMC40IDQ1LjYgNDA1LjQgMzAuNCAzNzcuMmM2LjctMTA4LjcgNzEuOS0yMDkuOSAxNzcuMS0yNTcuOXpNMjU2IDUxMmMtNTAuNyAwLTk4LTE0LjctMTM3LjgtNDAuMmM1LjYtMjcgMTQuOC01My4xIDI3LjQtNzcuN0MyMzIuMiA0NTQuNiAzMzguMSA0NjguOCA0MzMgNDQxYy00NiA0NC0xMDguMyA3MS0xNzcgNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZvbHVtZUhpZ2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTMzLjYgMzIuNUM1OTguNSA4NS4yIDY0MCAxNjUuOCA2NDAgMjU2cy00MS41IDE3MC43LTEwNi40IDIyMy41Yy0xMC4zIDguNC0yNS40IDYuOC0zMy44LTMuNXMtNi44LTI1LjQgMy41LTMzLjhDNTU3LjUgMzk4LjIgNTkyIDMzMS4yIDU5MiAyNTZzLTM0LjUtMTQyLjItODguNy0xODYuM2MtMTAuMy04LjQtMTEuOC0yMy41LTMuNS0zMy44czIzLjUtMTEuOCAzMy44LTMuNXpNNDczLjEgMTA3YzQzLjIgMzUuMiA3MC45IDg4LjkgNzAuOSAxNDlzLTI3LjcgMTEzLjgtNzAuOSAxNDljLTEwLjMgOC40LTI1LjQgNi44LTMzLjgtMy41cy02LjgtMjUuNCAzLjUtMzMuOEM0NzUuMyAzNDEuMyA0OTYgMzAxLjEgNDk2IDI1NnMtMjAuNy04NS4zLTUzLjItMTExLjhjLTEwLjMtOC40LTExLjgtMjMuNS0zLjUtMzMuOHMyMy41LTExLjggMzMuOC0zLjV6bS02MC41IDc0LjVDNDM0LjEgMTk5LjEgNDQ4IDIyNS45IDQ0OCAyNTZzLTEzLjkgNTYuOS0zNS40IDc0LjVjLTEwLjMgOC40LTI1LjQgNi44LTMzLjgtMy41cy02LjgtMjUuNCAzLjUtMzMuOEMzOTMuMSAyODQuNCA0MDAgMjcxIDQwMCAyNTZzLTYuOS0yOC40LTE3LjctMzcuM2MtMTAuMy04LjQtMTEuOC0yMy41LTMuNS0zMy44czIzLjUtMTEuOCAzMy44LTMuNXpNMzAxLjEgMzQuOEMzMTIuNiA0MCAzMjAgNTEuNCAzMjAgNjRWNDQ4YzAgMTIuNi03LjQgMjQtMTguOSAyOS4ycy0yNSAzLjEtMzQuNC01LjNMMTMxLjggMzUySDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYyMjRjMC0zNS4zIDI4LjctNjQgNjQtNjRoNjcuOEwyNjYuNyA0MC4xYzkuNC04LjQgMjIuOS0xMC40IDM0LjQtNS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2x1bWVMb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAxLjEgMzQuOEMzMTIuNiA0MCAzMjAgNTEuNCAzMjAgNjRWNDQ4YzAgMTIuNi03LjQgMjQtMTguOSAyOS4ycy0yNSAzLjEtMzQuNC01LjNMMTMxLjggMzUySDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYyMjRjMC0zNS4zIDI4LjctNjQgNjQtNjRoNjcuOEwyNjYuNyA0MC4xYzkuNC04LjQgMjIuOS0xMC40IDM0LjQtNS4zek00MTIuNiAxODEuNUM0MzQuMSAxOTkuMSA0NDggMjI1LjkgNDQ4IDI1NnMtMTMuOSA1Ni45LTM1LjQgNzQuNWMtMTAuMyA4LjQtMjUuNCA2LjgtMzMuOC0zLjVzLTYuOC0yNS40IDMuNS0zMy44QzM5My4xIDI4NC40IDQwMCAyNzEgNDAwIDI1NnMtNi45LTI4LjQtMTcuNy0zNy4zYy0xMC4zLTguNC0xMS44LTIzLjUtMy41LTMzLjhzMjMuNS0xMS44IDMzLjgtMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2x1bWVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDY0YzAtMTIuNi03LjQtMjQtMTguOS0yOS4ycy0yNS0zLjEtMzQuNCA1LjNMMTMxLjggMTYwSDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NHY2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGg2Ny44TDI2Ni43IDQ3MS45YzkuNCA4LjQgMjIuOSAxMC40IDM0LjQgNS4zUzMyMCA0NjAuNiAzMjAgNDQ4VjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2x1bWVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDEuMSAzNC44QzMxMi42IDQwIDMyMCA1MS40IDMyMCA2NFY0NDhjMCAxMi42LTcuNCAyNC0xOC45IDI5LjJzLTI1IDMuMS0zNC40LTUuM0wxMzEuOCAzNTJINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjIyNGMwLTM1LjMgMjguNy02NCA2NC02NGg2Ny44TDI2Ni43IDQwLjFjOS40LTguNCAyMi45LTEwLjQgMzQuNC01LjN6TTQyNSAxNjdsNTUgNTUgNTUtNTVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC01NSA1NSA1NSA1NWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC01NS01NS01NSA1NWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw1NS01NS01NS01NWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWckNhcmRib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzYgNjRINjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDE4NC40YzI0LjIgMCA0Ni40LTEzLjcgNTcuMi0zNS40bDMyLTY0YzguOC0xNy41IDI2LjctMjguNiA0Ni4zLTI4LjZzMzcuNSAxMS4xIDQ2LjMgMjguNmwzMiA2NGMxMC44IDIxLjcgMzMgMzUuNCA1Ny4yIDM1LjRINTc2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NHpNOTYgMjQwYTY0IDY0IDAgMSAxIDEyOCAwQTY0IDY0IDAgMSAxIDk2IDI0MHptMzg0LTY0YTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjggMzRjMTYuNS02LjIgMzUgMi4yIDQxLjIgMTguN2wxMTAuMiAyOTRMMjU3LjMgNTVjNC0xMy43IDE2LjUtMjMgMzAuNy0yM3MyNi43IDkuNCAzMC43IDIzbDg1LjEgMjkxLjdMNTE0IDUyLjhjNi4yLTE2LjUgMjQuNi0yNC45IDQxLjItMTguN3MyNC45IDI0LjcgMTguNyA0MS4ybC0xNDQgMzg0Yy00LjggMTIuOS0xNy40IDIxLjMtMzEuMiAyMC43cy0yNS43LTkuOC0yOS41LTIzTDI4OCAxNzguMyAyMDYuNyA0NTdjLTMuOSAxMy4yLTE1LjggMjIuNS0yOS41IDIzcy0yNi4zLTcuOC0zMS4yLTIwLjdMMiA3NS4yQy00LjIgNTguNyA0LjIgNDAuMiAyMC44IDM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYWxraWVUYWxraWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0UzY0IDEwLjcgNjQgMjRWOTZINDhDMjEuNSA5NiAwIDExNy41IDAgMTQ0VjMwMC4xYzAgMTIuNyA1LjEgMjQuOSAxNC4xIDMzLjlsMy45IDMuOWM5IDkgMTQuMSAyMS4yIDE0LjEgMzMuOVY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhIMzA0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM3MS45YzAtMTIuNyA1LjEtMjQuOSAxNC4xLTMzLjlsMy45LTMuOWM5LTkgMTQuMS0yMS4yIDE0LjEtMzMuOVYxNDRjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzIwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMySDIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMkgxMTJWMjR6bTAgMTM2SDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRIMjcyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMCA2NEgyNzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYWxsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE5MmMwLTM1LjMtMjguNy02NC02NC02NEg4MGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNkg0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjR6TTQxNiAyNzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYW5kTWFnaWNTcGFya2xlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzQuNyA0Mi43TDE5NyA1Ni44Yy0zIDEuMS01IDQtNSA3LjJzMiA2LjEgNSA3LjJsMzcuNyAxNC4xTDI0OC44IDEyM2MxLjEgMyA0IDUgNy4yIDVzNi4xLTIgNy4yLTVsMTQuMS0zNy43TDMxNSA3MS4yYzMtMS4xIDUtNCA1LTcuMnMtMi02LjEtNS03LjJMMjc3LjMgNDIuNyAyNjMuMiA1Yy0xLjEtMy00LTUtNy4yLTVzLTYuMSAyLTcuMiA1TDIzNC43IDQyLjd6TTQ2LjEgMzk1LjRjLTE4LjcgMTguNy0xOC43IDQ5LjEgMCA2Ny45bDM0LjYgMzQuNmMxOC43IDE4LjcgNDkuMSAxOC43IDY3LjkgMEw1MjkuOSAxMTYuNWMxOC43LTE4LjcgMTguNy00OS4xIDAtNjcuOUw0OTUuMyAxNC4xYy0xOC43LTE4LjctNDkuMS0xOC43LTY3LjkgMEw0Ni4xIDM5NS40ek00ODQuNiA4Mi42bC0xMDUgMTA1LTIzLjMtMjMuMyAxMDUtMTA1IDIzLjMgMjMuM3pNNy41IDExNy4yQzMgMTE4LjkgMCAxMjMuMiAwIDEyOHMzIDkuMSA3LjUgMTAuOEw2NCAxNjBsMjEuMiA1Ni41YzEuNyA0LjUgNiA3LjUgMTAuOCA3LjVzOS4xLTMgMTAuOC03LjVMMTI4IDE2MGw1Ni41LTIxLjJjNC41LTEuNyA3LjUtNiA3LjUtMTAuOHMtMy05LjEtNy41LTEwLjhMMTI4IDk2IDEwNi44IDM5LjVDMTA1LjEgMzUgMTAwLjggMzIgOTYgMzJzLTkuMSAzLTEwLjggNy41TDY0IDk2IDcuNSAxMTcuMnptMzUyIDI1NmMtNC41IDEuNy03LjUgNi03LjUgMTAuOHMzIDkuMSA3LjUgMTAuOEw0MTYgNDE2bDIxLjIgNTYuNWMxLjcgNC41IDYgNy41IDEwLjggNy41czkuMS0zIDEwLjgtNy41TDQ4MCA0MTZsNTYuNS0yMS4yYzQuNS0xLjcgNy41LTYgNy41LTEwLjhzLTMtOS4xLTcuNS0xMC44TDQ4MCAzNTJsLTIxLjItNTYuNWMtMS43LTQuNS02LTcuNS0xMC44LTcuNXMtOS4xIDMtMTAuOCA3LjVMNDE2IDM1MmwtNTYuNSAyMS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYW5kTWFnaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuMSA0NjMuM2MtMTguNy0xOC43LTE4LjctNDkuMSAwLTY3LjlMMzk1LjQgMTQuMWMxOC43LTE4LjcgNDkuMS0xOC43IDY3LjkgMGwzNC42IDM0LjZjMTguNyAxOC43IDE4LjcgNDkuMSAwIDY3LjlMMTE2LjUgNDk3LjljLTE4LjcgMTguNy00OS4xIDE4LjctNjcuOSAwTDE0LjEgNDYzLjN6TTM0Ny42IDE4Ny42bDEwNS0xMDVMNDI5LjQgNTkuM2wtMTA1IDEwNSAyMy4zIDIzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhbmRTcGFya2xlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgNi4xYzkuNS04LjUgMjQtOC4xIDMzIC45bDggOGM5IDkgOS40IDIzLjUgLjkgMzNsLTg1LjggOTUuOWMtMi42IDIuOS00LjEgNi43LTQuMSAxMC43VjE3NmMwIDguOC03LjIgMTYtMTYgMTZIMzg0LjJjLTQuNiAwLTguOSAxLjktMTEuOSA1LjNMMTAwLjcgNTAwLjlDOTQuMyA1MDggODUuMyA1MTIgNzUuOCA1MTJjLTguOCAwLTE3LjMtMy41LTIzLjUtOS44TDkuNyA0NTkuN0MzLjUgNDUzLjQgMCA0NDUgMCA0MzYuMmMwLTkuNSA0LTE4LjUgMTEuMS0yNC44bDExMS42LTk5LjhjMy40LTMgNS4zLTcuNCA1LjMtMTEuOVYyNzJjMC04LjggNy4yLTE2IDE2LTE2aDM0LjZjMy45IDAgNy43LTEuNSAxMC43LTQuMUw0NjQgNi4xek00MzIgMjg4YzMuNiAwIDYuNyAyLjQgNy43IDUuOGwxNC44IDUxLjcgNTEuNyAxNC44YzMuNCAxIDUuOCA0LjEgNS44IDcuN3MtMi40IDYuNy01LjggNy43bC01MS43IDE0LjgtMTQuOCA1MS43Yy0xIDMuNC00LjEgNS44LTcuNyA1LjhzLTYuNy0yLjQtNy43LTUuOGwtMTQuOC01MS43LTUxLjctMTQuOGMtMy40LTEtNS44LTQuMS01LjgtNy43czIuNC02LjcgNS44LTcuN2w1MS43LTE0LjggMTQuOC01MS43YzEtMy40IDQuMS01LjggNy43LTUuOHpNODcuNyA2OS44bDE0LjggNTEuNyA1MS43IDE0LjhjMy40IDEgNS44IDQuMSA1LjggNy43cy0yLjQgNi43LTUuOCA3LjdsLTUxLjcgMTQuOEw4Ny43IDIxOC4yYy0xIDMuNC00LjEgNS44LTcuNyA1LjhzLTYuNy0yLjQtNy43LTUuOEw1Ny41IDE2Ni41IDUuOCAxNTEuN2MtMy40LTEtNS44LTQuMS01LjgtNy43czIuNC02LjcgNS44LTcuN2w1MS43LTE0LjhMNzIuMyA2OS44YzEtMy40IDQuMS01LjggNy43LTUuOHM2LjcgMi40IDcuNyA1Ljh6TTIwOCAwYzMuNyAwIDYuOSAyLjUgNy44IDYuMWw2LjggMjcuMyAyNy4zIDYuOGMzLjYgLjkgNi4xIDQuMSA2LjEgNy44cy0yLjUgNi45LTYuMSA3LjhsLTI3LjMgNi44LTYuOCAyNy4zYy0uOSAzLjYtNC4xIDYuMS03LjggNi4xcy02LjktMi41LTcuOC02LjFsLTYuOC0yNy4zLTI3LjMtNi44Yy0zLjYtLjktNi4xLTQuMS02LjEtNy44czIuNS02LjkgNi4xLTcuOGwyNy4zLTYuOCA2LjgtMjcuM2MuOS0zLjYgNC4xLTYuMSA3LjgtNi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYXJlaG91c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0ODhWMTcxLjNjMC0yNi4yIDE1LjktNDkuNyA0MC4yLTU5LjRMMzA4LjEgNC44YzcuNi0zLjEgMTYuMS0zLjEgMjMuOCAwTDU5OS44IDExMS45YzI0LjMgOS43IDQwLjIgMzMuMyA0MC4yIDU5LjRWNDg4YzAgMTMuMy0xMC43IDI0LTI0IDI0SDU2OGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNDg4YzAgMTMuMy0xMC43IDI0LTI0IDI0SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptNDg4IDI0bC0zMzYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWNDMySDUxMmwwIDU2YzAgMTMuMy0xMC43IDI0LTI0IDI0ek0xMjggNDAwVjMzNkg1MTJ2NjRIMTI4em0wLTk2VjIyNEg1MTJsMCA4MEgxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhdGVyTGFkZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAxMjcuN0MxMjggNzQuOSAxNzAuOSAzMiAyMjMuNyAzMmM0OC4zIDAgODkgMzYgOTUgODMuOWwxIDguMmMyLjIgMTcuNS0xMC4yIDMzLjUtMjcuOCAzNS43cy0zMy41LTEwLjItMzUuNy0yNy44bC0xLTguMmMtMi0xNS45LTE1LjUtMjcuOC0zMS41LTI3LjhjLTE3LjUgMC0zMS43IDE0LjItMzEuNyAzMS43VjIyNEgzODRWMTI3LjdDMzg0IDc0LjkgNDI2LjkgMzIgNDc5LjcgMzJjNDguMyAwIDg5IDM2IDk1IDgzLjlsMSA4LjJjMi4yIDE3LjUtMTAuMiAzMy41LTI3LjggMzUuN3MtMzMuNS0xMC4yLTM1LjctMjcuOGwtMS04LjJjLTItMTUuOS0xNS41LTI3LjgtMzEuNS0yNy44Yy0xNy41IDAtMzEuNyAxNC4yLTMxLjcgMzEuN1YzNjFjLTEuNiAxLTMuMyAyLTQuOCAzLjFjLTE4IDEyLjQtNDAuMSAyMC4zLTU5LjIgMjAuM2gwVjI4OEgxOTJ2OTYuNWMtMTkgMC00MS4yLTcuOS01OS4xLTIwLjNjLTEuNi0xLjEtMy4yLTIuMi00LjktMy4xVjEyNy43ek0zMDYuNSAzODkuOUMzMjkgNDA1LjQgMzU2LjUgNDE2IDM4NCA0MTZjMjYuOSAwIDU1LjQtMTAuOCA3Ny40LTI2LjFsMCAwYzExLjktOC41IDI4LjEtNy44IDM5LjIgMS43YzE0LjQgMTEuOSAzMi41IDIxIDUwLjYgMjUuMmMxNy4yIDQgMjcuOSAyMS4yIDIzLjkgMzguNHMtMjEuMiAyNy45LTM4LjQgMjMuOWMtMjQuNS01LjctNDQuOS0xNi41LTU4LjItMjVDNDQ5LjUgNDY5LjcgNDE3IDQ4MCAzODQgNDgwYy0zMS45IDAtNjAuNi05LjktODAuNC0xOC45Yy01LjgtMi43LTExLjEtNS4zLTE1LjYtNy43Yy00LjUgMi40LTkuNyA1LjEtMTUuNiA3LjdjLTE5LjggOS00OC41IDE4LjktODAuNCAxOC45Yy0zMyAwLTY1LjUtMTAuMy05NC41LTI1LjhjLTEzLjQgOC40LTMzLjcgMTkuMy01OC4yIDI1Yy0xNy4yIDQtMzQuNC02LjctMzguNC0yMy45czYuNy0zNC40IDIzLjktMzguNGMxOC4xLTQuMiAzNi4yLTEzLjMgNTAuNi0yNS4yYzExLjEtOS40IDI3LjMtMTAuMSAzOS4yLTEuN2wwIDBDMTM2LjcgNDA1LjIgMTY1LjEgNDE2IDE5MiA0MTZjMjcuNSAwIDU1LTEwLjYgNzcuNS0yNi4xYzExLjEtNy45IDI1LjktNy45IDM3IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2OS41IDY5LjljMTEuMS03LjkgMjUuOS03LjkgMzcgMEMzMjkgODUuNCAzNTYuNSA5NiAzODQgOTZjMjYuOSAwIDU1LjQtMTAuOCA3Ny40LTI2LjFsMCAwYzExLjktOC41IDI4LjEtNy44IDM5LjIgMS43YzE0LjQgMTEuOSAzMi41IDIxIDUwLjYgMjUuMmMxNy4yIDQgMjcuOSAyMS4yIDIzLjkgMzguNHMtMjEuMiAyNy45LTM4LjQgMjMuOWMtMjQuNS01LjctNDQuOS0xNi41LTU4LjItMjVDNDQ5LjUgMTQ5LjcgNDE3IDE2MCAzODQgMTYwYy0zMS45IDAtNjAuNi05LjktODAuNC0xOC45Yy01LjgtMi43LTExLjEtNS4zLTE1LjYtNy43Yy00LjUgMi40LTkuNyA1LjEtMTUuNiA3LjdjLTE5LjggOS00OC41IDE4LjktODAuNCAxOC45Yy0zMyAwLTY1LjUtMTAuMy05NC41LTI1LjhjLTEzLjQgOC40LTMzLjcgMTkuMy01OC4yIDI1Yy0xNy4yIDQtMzQuNC02LjctMzguNC0yMy45czYuNy0zNC40IDIzLjktMzguNEM0Mi44IDkyLjYgNjEgODMuNSA3NS4zIDcxLjZjMTEuMS05LjUgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyA4NS4yIDE2NS4xIDk2IDE5MiA5NmMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjF6bTM3IDI4OEMzMjkgMzczLjQgMzU2LjUgMzg0IDM4NCAzODRjMjYuOSAwIDU1LjQtMTAuOCA3Ny40LTI2LjFsMCAwYzExLjktOC41IDI4LjEtNy44IDM5LjIgMS43YzE0LjQgMTEuOSAzMi41IDIxIDUwLjYgMjUuMmMxNy4yIDQgMjcuOSAyMS4yIDIzLjkgMzguNHMtMjEuMiAyNy45LTM4LjQgMjMuOWMtMjQuNS01LjctNDQuOS0xNi41LTU4LjItMjVDNDQ5LjUgNDM3LjcgNDE3IDQ0OCAzODQgNDQ4Yy0zMS45IDAtNjAuNi05LjktODAuNC0xOC45Yy01LjgtMi43LTExLjEtNS4zLTE1LjYtNy43Yy00LjUgMi40LTkuNyA1LjEtMTUuNiA3LjdjLTE5LjggOS00OC41IDE4LjktODAuNCAxOC45Yy0zMyAwLTY1LjUtMTAuMy05NC41LTI1LjhjLTEzLjQgOC40LTMzLjcgMTkuMy01OC4yIDI1Yy0xNy4yIDQtMzQuNC02LjctMzguNC0yMy45czYuNy0zNC40IDIzLjktMzguNGMxOC4xLTQuMiAzNi4yLTEzLjMgNTAuNi0yNS4yYzExLjEtOS40IDI3LjMtMTAuMSAzOS4yLTEuN2wwIDBDMTM2LjcgMzczLjIgMTY1LjEgMzg0IDE5MiAzODRjMjcuNSAwIDU1LTEwLjYgNzcuNS0yNi4xYzExLjEtNy45IDI1LjktNy45IDM3IDB6bTAtMTQ0QzMyOSAyMjkuNCAzNTYuNSAyNDAgMzg0IDI0MGMyNi45IDAgNTUuNC0xMC44IDc3LjQtMjYuMWwwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSAyOTMuNyA0MTcgMzA0IDM4NCAzMDRjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40YzE4LjEtNC4yIDM2LjItMTMuMyA1MC42LTI1LjJjMTEuMS05LjUgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyAyMjkuMiAxNjUuMSAyNDAgMTkyIDI0MGMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2F2ZVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggNjRjMC0xNy43IDE0LjMtMzIgMzItMzJIMzIwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQxNmg5NlYyNTZjMC0xNy43IDE0LjMtMzIgMzItMzJINjA4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDUxMlY0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMlY5NkgxOTJWMjU2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDk2VjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWlnaHRIYW5naW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA5NmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xMjIuNSAzMmMzLjUtMTAgNS41LTIwLjggNS41LTMyYzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMTEuMiAxLjkgMjIgNS41IDMySDEyMGMtMjIgMC00MS4yIDE1LTQ2LjYgMzYuNGwtNzIgMjg4Yy0zLjYgMTQuMy0uNCAyOS41IDguNyA0MS4yUzMzLjIgNTEyIDQ4IDUxMkg0NjRjMTQuOCAwIDI4LjctNi44IDM3LjgtMTguNXMxMi4zLTI2LjggOC43LTQxLjJsLTcyLTI4OEM0MzMuMiAxNDMgNDE0IDEyOCAzOTIgMTI4SDM0Ni41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWlnaHRTY2FsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMTc2YTEyOCAxMjggMCAxIDEgMjU2IDAgMTI4IDEyOCAwIDEgMSAtMjU2IDB6TTM5MS44IDY0QzM1OS41IDI0LjkgMzEwLjcgMCAyNTYgMFMxNTIuNSAyNC45IDEyMC4yIDY0SDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDM5MS44ek0yOTYgMjI0YzAtMTAuNi00LjEtMjAuMi0xMC45LTI3LjRsMzMuNi03OC4zYzMuNS04LjEtLjMtMTcuNS04LjQtMjFzLTE3LjUgLjMtMjEgOC40TDI1NS43IDE4NGMtMjIgLjEtMzkuNyAxOC0zOS43IDQwYzAgMjIuMSAxNy45IDQwIDQwIDQwczQwLTE3LjkgNDAtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdoZWF0QXduQ2lyY2xlRXhjbGFtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA1IDQxYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBMMzgzIDk1Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsODgtODh6TTMwNS41IDI3LjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDI3MS41IDM4LjZjLTM3LjUgMzcuNS0zNy41IDk4LjMgMCAxMzUuOGwxMC40IDEwLjQtMzAuNSAzMC41Yy0zLjQtMjcuMy0xNS41LTUzLjgtMzYuNS03NC44bC0xMS4zLTExLjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwbC0xMS4zIDExLjNjLTM3LjUgMzcuNS0zNy41IDk4LjMgMCAxMzUuOGwxMC40IDEwLjQtMzAuNSAzMC41Yy0zLjQtMjcuMy0xNS41LTUzLjgtMzYuNS03NC44TDEwMS44IDIzMWMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMNjcuOSAyNDIuM2MtMzcuNSAzNy41LTM3LjUgOTguMyAwIDEzNS44bDEwLjQgMTAuNEw5LjQgNDU3LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsNjguOS02OC45IDEyLjIgMTIuMmMzNy41IDM3LjUgOTguMyAzNy41IDEzNS44IDBsMTEuMy0xMS4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42bC0xMS4zLTExLjNjLTIxLjgtMjEuOC00OS42LTM0LjEtNzguMS0zNi45bDMxLjktMzEuOSAxMi4yIDEyLjJjMjIuNSAyMi41IDUzLjMgMzEuNSA4Mi40IDI3YzAtMSAwLTIuMSAwLTMuMWMwLTMzLjEgOS4xLTY0LjEgMjUtOTAuNmMtMTUuNS04LjctMzIuNS0xMy44LTQ5LjgtMTUuNWwzMS45LTMxLjkgMTIuMiAxMi4yYzYgNiAxMi42IDExLjEgMTkuNyAxNS4yYzI3LjUtMzQgNjcuMy01Ny41IDExMi42LTYzLjhjLTQuMS0zLjgtOC40LTcuMy0xMi45LTEwLjVMNTA1IDEzN2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC01OS40IDU5LjRjLTIwLjYtNC40LTQyLTMuNy02Mi4zIDIuMWM2LjEtMjEuMyA2LjYtNDMuOCAxLjQtNjUuM0w0MDkgNDFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEwzMjkuMSA1Mi45Yy0zLjctNS03LjgtOS44LTEyLjQtMTQuM0wzMDUuNSAyNy4zek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC05NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAtMTQ0YzguOCAwIDE2IDcuMiAxNiAxNnY4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYyODhjMC04LjggNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaGVhdEF3biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDUgNDFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEwzODMgOTVjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw4OC04OHpNMzA1LjUgMjcuM2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMMjcxLjUgMzguNmMtMzcuNSAzNy41LTM3LjUgOTguMyAwIDEzNS44bDEwLjQgMTAuNC0zMC41IDMwLjVjLTMuNC0yNy4zLTE1LjUtNTMuOC0zNi41LTc0LjhsLTExLjMtMTEuM2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBsLTExLjMgMTEuM2MtMzcuNSAzNy41LTM3LjUgOTguMyAwIDEzNS44bDEwLjQgMTAuNC0zMC41IDMwLjVjLTMuNC0yNy4zLTE1LjUtNTMuOC0zNi41LTc0LjhMMTAxLjggMjMxYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw2Ny45IDI0Mi4zYy0zNy41IDM3LjUtMzcuNSA5OC4zIDAgMTM1LjhsMTAuNCAxMC40TDkuNCA0NTcuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw2OC45LTY4LjkgMTIuMiAxMi4yYzM3LjUgMzcuNSA5OC4zIDM3LjUgMTM1LjggMGwxMS4zLTExLjNjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTExLjMtMTEuM2MtMjEuOC0yMS44LTQ5LjYtMzQuMS03OC4xLTM2LjlsMzEuOS0zMS45IDEyLjIgMTIuMmMzNy41IDM3LjUgOTguMyAzNy41IDEzNS44IDBsMTEuMy0xMS4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42bC0xMS4zLTExLjNjLTIxLjgtMjEuOC00OS42LTM0LjEtNzguMS0zNi45bDMxLjktMzEuOSAxMi4yIDEyLjJjMzcuNSAzNy41IDk4LjMgMzcuNSAxMzUuOCAwTDQ4Ni41IDIzMWM2LjItNi4yIDYuMi0xNi40IDAtMjIuNkw0NzUuMiAxOTdjLTUuMi01LjItMTAuNi05LjgtMTYuNC0xMy45TDUwNSAxMzdjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtNTkuNCA1OS40Yy0yMC42LTQuNC00Mi0zLjctNjIuMyAyLjFjNi4xLTIxLjMgNi42LTQzLjggMS40LTY1LjNMNDA5IDQxYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBMMzI5LjEgNTIuOWMtMy43LTUtNy44LTkuOC0xMi40LTE0LjNMMzA1LjUgMjcuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2hlZWxjaGFpck1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTIwNC41IDEyMS4zYy01LjQtMi41LTExLjctMS45LTE2LjQgMS43bC00MC45IDMwLjdjLTE0LjEgMTAuNi0zNC4yIDcuNy00NC44LTYuNHMtNy43LTM0LjIgNi40LTQ0LjhsNDAuOS0zMC43YzIzLjctMTcuOCA1NS4zLTIxIDgyLjEtOC40bDkwLjQgNDIuNWMyOS4xIDEzLjcgMzYuOCA1MS42IDE1LjIgNzUuNUwyOTkuMSAyMjRoOTcuNGMzMC4zIDAgNTMgMjcuNyA0Ny4xIDU3LjRMNDE1LjQgNDIyLjNjLTMuNSAxNy4zLTIwLjMgMjguNi0zNy43IDI1LjFzLTI4LjYtMjAuMy0yNS4xLTM3LjdMMzc3IDI4OEgzMDYuN2M4LjYgMTkuNiAxMy4zIDQxLjIgMTMuMyA2NGMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MFMwIDQ0MC40IDAgMzUyczcxLjYtMTYwIDE2MC0xNjBjMTEuMSAwIDIyIDEuMSAzMi40IDMuM2w1NC4yLTU0LjItNDIuMS0xOS44ek0xNjAgNDQ4YTk2IDk2IDAgMSAwIDAtMTkyIDk2IDk2IDAgMSAwIDAgMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaGVlbGNoYWlyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTEyMC41IDI0Ny4yYzEyLjQtNC43IDE4LjctMTguNSAxNC0zMC45cy0xOC41LTE4LjctMzAuOS0xNEM0My4xIDIyNS4xIDAgMjgzLjUgMCAzNTJjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjBjNjEuMiAwIDExNC4zLTM0LjMgMTQxLjItODQuN2M2LjItMTEuNyAxLjgtMjYuMi05LjktMzIuNXMtMjYuMi0xLjgtMzIuNSA5LjlDMjQwIDQ0MCAyMDIuOCA0NjQgMTYwIDQ2NEM5OC4xIDQ2NCA0OCA0MTMuOSA0OCAzNTJjMC00Ny45IDMwLjEtODguOCA3Mi41LTEwNC44ek0yNTkuOCAxNzZsLTEuOS05LjdjLTQuNS0yMi4zLTI0LTM4LjMtNDYuOC0zOC4zYy0zMC4xIDAtNTIuNyAyNy41LTQ2LjggNTdsMjMuMSAxMTUuNWM2IDI5LjkgMzIuMiA1MS40IDYyLjggNTEuNGg1LjFjLjQgMCAuOCAwIDEuMyAwaDk0LjFjNi43IDAgMTIuNiA0LjEgMTUgMTAuNEw0MDIgNDU5LjJjNiAxNi4xIDIzLjggMjQuNiA0MC4xIDE5LjFsNDgtMTZjMTYuOC01LjYgMjUuOC0yMy43IDIwLjItNDAuNXMtMjMuNy0yNS44LTQwLjUtMjAuMmwtMTguNyA2LjItMjUuNS02OGMtMTEuNy0zMS4yLTQxLjYtNTEuOS03NC45LTUxLjlIMjgyLjJsLTkuNi00OEgzMzZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjU5Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdoaXNrZXlHbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMmMtOS4zIDAtMTguMSA0LTI0LjIgMTEuMVMtMSA1OS40IC4zIDY4LjZsNTAgMzQyLjljNS43IDM5LjMgMzkuNCA2OC41IDc5LjIgNjguNWgyNTNjMzkuNyAwIDczLjQtMjkuMSA3OS4yLTY4LjVsNTAtMzQyLjljMS4zLTkuMi0xLjQtMTguNS03LjUtMjUuNVM0ODkuMyAzMiA0ODAgMzJIMzJ6TTg3LjcgMjI0TDY5IDk2SDQ0M0w0MjQuMyAyMjRIODcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2lmaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NC4yIDIwMi45QzEyMy4yIDEzNi43IDIxNi44IDk2IDMyMCA5NnMxOTYuOCA0MC43IDI2NS44IDEwNi45YzEyLjggMTIuMiAzMyAxMS44IDQ1LjItLjlzMTEuOC0zMy0uOS00NS4yQzU0OS43IDc5LjUgNDQwLjQgMzIgMzIwIDMyUzkwLjMgNzkuNSA5LjggMTU2LjdDLTIuOSAxNjktMy4zIDE4OS4yIDguOSAyMDJzMzIuNSAxMy4yIDQ1LjIgLjl6TTMyMCAyNTZjNTYuOCAwIDEwOC42IDIxLjEgMTQ4LjIgNTZjMTMuMyAxMS43IDMzLjUgMTAuNCA0NS4yLTIuOHMxMC40LTMzLjUtMi44LTQ1LjJDNDU5LjggMjE5LjIgMzkzIDE5MiAzMjAgMTkycy0xMzkuOCAyNy4yLTE5MC41IDcyYy0xMy4zIDExLjctMTQuNSAzMS45LTIuOCA0NS4yczMxLjkgMTQuNSA0NS4yIDIuOGMzOS41LTM0LjkgOTEuMy01NiAxNDguMi01NnptNjQgMTYwYTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMzUyYzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2SDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6bTY0IDM1MmMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMmM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05NkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMTI4IDUxMmgzMmM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05NkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgxNjBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kb3dNYXhpbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTk2IDk2SDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZG93TWluaW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZG93UmVzdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIgNjRIMjA4Yy04LjggMC0xNiA3LjItMTYgMTZWOTZIMTI4VjgwYzAtNDQuMiAzNS44LTgwIDgwLTgwSDQzMmM0NC4yIDAgODAgMzUuOCA4MCA4MFYzMDRjMCA0NC4yLTM1LjggODAtODAgODBINDE2VjMyMGgxNmM4LjggMCAxNi03LjIgMTYtMTZWODBjMC04LjgtNy4yLTE2LTE2LTE2ek0wIDE5MmMwLTM1LjMgMjguNy02NCA2NC02NEgzMjBjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxOTJ6bTY0IDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDI4OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmVCb3R0bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkzLjQgOS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDY0IDY0YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zYy0xMS44IDExLjgtMzAuNyAxMi41LTQzLjIgMS45bC05LjUgOS41LTQ4LjggNDguOGMtOS4yIDkuMi0xMS41IDIyLjktOC42IDM1LjZjOS40IDQwLjktMS45IDg1LjYtMzMuOCAxMTcuNUwxOTcuMyA0OTMuM2MtMjUgMjUtNjUuNSAyNS05MC41IDBsLTg4LTg4Yy0yNS0yNS0yNS02NS41IDAtOTAuNUwxODAuMiAxNTMuM2MzMS45LTMxLjkgNzYuNi00My4xIDExNy41LTMzLjhjMTIuNiAyLjkgMjYuNCAuNSAzNS41LTguNmw0OC44LTQ4LjggOS41LTkuNWMtMTAuNi0xMi42LTEwLTMxLjQgMS45LTQzLjJ6TTk5LjMgMzQ3LjNsNjUuNCA2NS40YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDk3LjQtOTcuNGM2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtNjUuNC02NS40Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw5OS4zIDMyNC43Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZUdsYXNzRW1wdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEM0Ny40IDAgMzMuNSAxMi44IDMyLjEgMjkuM2wtMTQgMTY4LjRjLTYgNzIgNDIuNSAxMzUuMiAxMDkuOSAxNTAuNlY0NDhIODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoODAgODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyVjM0OC40YzY3LjQtMTUuNCAxMTUuOS03OC42IDEwOS45LTE1MC42bC0xNC0xNjguNEMyODYuNSAxMi44IDI3Mi42IDAgMjU2IDBINjR6TTgxLjkgMjAzLjFMOTMuNCA2NEgyMjYuNmwxMS42IDEzOS4xQzI0MiAyNDguOCAyMDUuOSAyODggMTYwIDI4OHMtODItMzkuMi03OC4xLTg0Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmVHbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMi4xIDI5LjNDMzMuNSAxMi44IDQ3LjQgMCA2NCAwSDI1NmMxNi42IDAgMzAuNSAxMi44IDMxLjkgMjkuM2wxNCAxNjguNGM2IDcyLTQyLjUgMTM1LjItMTA5LjkgMTUwLjZWNDQ4aDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE2MCA4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg0OFYzNDguNEM2MC42IDMzMyAxMi4xIDI2OS44IDE4LjEgMTk3LjhsMTQtMTY4LjR6bTU2IDk4LjdIMjMxLjlsLTUuMy02NEg5My40bC01LjMgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvblNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjIuNCA1My45QzU2LjggMzcuMSAzOC42IDI4LjEgMjEuOSAzMy42Uy0zLjkgNTcuNCAxLjYgNzQuMUw1MS42IDIyNEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg3Mi45bDU2LjcgMTcwLjFjNC41IDEzLjUgMTcuNCAyMi40IDMxLjYgMjEuOXMyNi40LTEwLjQgMjkuOC0yNC4yTDIzMyAyODhoNDZMMzIxIDQ1NS44YzMuNCAxMy44IDE1LjYgMjMuNyAyOS44IDI0LjJzMjcuMS04LjQgMzEuNi0yMS45TDQzOS4xIDI4OEg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDYwLjRsNTAtMTQ5LjljNS42LTE2LjgtMy41LTM0LjktMjAuMi00MC41cy0zNC45IDMuNS00MC41IDIwLjJMMzkyLjkgMjI0SDMyOUwyODcgNTYuMkMyODMuNSA0MiAyNzAuNyAzMiAyNTYgMzJzLTI3LjUgMTAtMzEgMjQuMkwxODMgMjI0aC02NEw2Mi40IDUzLjl6bTc4IDIzNC4xSDE2N2wtMTEuNCA0NS42TDE0MC40IDI4OHpNMjQ5IDIyNGw3LTI4LjEgNyAyOC4xSDI0OXptOTYgNjRoMjYuNmwtMTUuMiA0NS42TDM0NSAyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDk2YzAtNTMgNDMtOTYgOTYtOTZoMzguNEM0MzkuOSAwIDQ4MCA0MC4xIDQ4MCA4OS42VjE3NnYxNlYzNzZjMCA3NS4xLTYwLjkgMTM2LTEzNiAxMzZzLTEzNi02MC45LTEzNi0xMzZWMjk2YzAtMjIuMS0xNy45LTQwLTQwLTQwcy00MCAxNy45LTQwIDQwVjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OFYyOTZjMC03NS4xIDYwLjktMTM2IDEzNi0xMzZzMTM2IDYwLjkgMTM2IDEzNnY4MGMwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwVjE5MkgzNTJjLTUzIDAtOTYtNDMtOTYtOTZ6bTE0NC04YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdyZW5jaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMzIwYzg4LjQgMCAxNjAtNzEuNiAxNjAtMTYwYzAtMTUuMy0yLjItMzAuMS02LjItNDQuMmMtMy4xLTEwLjgtMTYuNC0xMy4yLTI0LjMtNS4zbC03Ni44IDc2LjhjLTMgMy03LjEgNC43LTExLjMgNC43SDMzNmMtOC44IDAtMTYtNy4yLTE2LTE2VjExOC42YzAtNC4yIDEuNy04LjMgNC43LTExLjNsNzYuOC03Ni44YzcuOS03LjkgNS40LTIxLjItNS4zLTI0LjNDMzgyLjEgMi4yIDM2Ny4zIDAgMzUyIDBDMjYzLjYgMCAxOTIgNzEuNiAxOTIgMTYwYzAgMTkuMSAzLjQgMzcuNSA5LjUgNTQuNUwxOS45IDM5Ni4xQzcuMiA0MDguOCAwIDQyNi4xIDAgNDQ0LjFDMCA0ODEuNiAzMC40IDUxMiA2Ny45IDUxMmMxOCAwIDM1LjMtNy4yIDQ4LTE5LjlMMjk3LjUgMzEwLjVjMTcgNi4yIDM1LjQgOS41IDU0LjUgOS41ek04MCA0MDhhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYUmF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyVjQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMlY5NkMxNC4zIDk2IDAgODEuNyAwIDY0ek0yNTYgOTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMkgxNjBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoODB2NDhIMTI4Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDI0MHY3MC42TDE4OS4xIDMwN2MtNS4yLTItMTAuNi0zLTE2LjItM2gtMi4xYy0yMy42IDAtNDIuOCAxOS4yLTQyLjggNDIuOGMwIDkuNiAzLjIgMTguOSA5LjEgMjYuNGwxOC4yIDIzLjJjOS43IDEyLjQgMjQuNiAxOS42IDQwLjMgMTkuNkgzMTYuNGMxNS43IDAgMzAuNi03LjIgNDAuMy0xOS42bDE4LjItMjMuMmM1LjktNy41IDkuMS0xNi44IDkuMS0yNi40YzAtMjMuNi0xOS4yLTQyLjgtNDIuOC00Mi44SDMzOWMtNS41IDAtMTEgMS0xNi4yIDNMMjcyIDMyNi42VjI1NkgzODRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMjcyVjE3Nmg4MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgyNzJWMTEyYzAtOC44LTcuMi0xNi0xNi0xNnpNMjA4IDM1MmExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6bTgwIDE2YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc2LjYgODQuNWMxMS4zLTEzLjYgOS41LTMzLjgtNC4xLTQ1LjFzLTMzLjgtOS41LTQ1LjEgNC4xTDE5MiAyMDYgNTYuNiA0My41QzQ1LjMgMjkuOSAyNS4xIDI4LjEgMTEuNSAzOS40Uy0zLjkgNzAuOSA3LjQgODQuNUwxNTAuMyAyNTYgNy40IDQyNy41Yy0xMS4zIDEzLjYtOS41IDMzLjggNC4xIDQ1LjFzMzMuOCA5LjUgNDUuMS00LjFMMTkyIDMwNiAzMjcuNCA0NjguNWMxMS4zIDEzLjYgMzEuNSAxNS40IDQ1LjEgNC4xczE1LjQtMzEuNSA0LjEtNDUuMUwyMzMuNyAyNTYgMzc2LjYgODQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQyLjYgMTUwLjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMTkyIDIxMC43IDg2LjYgMTA1LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDE0Ni43IDI1NiA0MS40IDM2MS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDE5MiAzMDEuMyAyOTcuNCA0MDYuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDIzNy4zIDI1NiAzNDIuNiAxNTAuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWG1hcmtzTGluZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2SDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnptMCAzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyek03IDE2N2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsNTUgNTVMNyAzMTFjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw1NS01NSA1NSA1NWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTU1LTU1IDU1LTU1YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTU1IDU1TDQxIDE2N2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDB6TTI2NSAxNjdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNTUgNTUtNTUgNTVjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw1NS01NSA1NSA1NWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTU1LTU1IDU1LTU1YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTU1IDU1LTU1LTU1ek00NTUgMTY3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWw1NSA1NS01NSA1NWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDU1LTU1IDU1IDU1YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtNTUtNTUgNTUtNTVjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtNTUgNTUtNTUtNTVjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU4IDQ1LjRDNDcuOCAzMSAyNy44IDI3LjcgMTMuNCAzOFMtNC4zIDY4LjIgNiA4Mi42TDE2MCAyOTguM1Y0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyOTguM0wzNzggODIuNmMxMC4zLTE0LjQgNi45LTM0LjQtNy40LTQ0LjZTMzM2LjIgMzEgMzI2IDQ1LjRMMTkyIDIzMi45IDU4IDQ1LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVllblNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTguNiA0Ni4yQzQ4LjggMzEuNSAyOSAyNy42IDE0LjMgMzcuNFMtNC40IDY3IDUuNCA4MS43TDEwMC4yIDIyNEg0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg4MHYzMkg0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg4MHY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGg4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJWMjg4aDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDIxOS44TDMxNC42IDgxLjdjOS44LTE0LjcgNS44LTM0LjYtOC45LTQ0LjRzLTM0LjYtNS44LTQ0LjQgOC45TDE2MCAxOTguMyA1OC42IDQ2LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlpbllhbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDY0YzUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2cy05NiA0My05NiA5NnM0MyA5NiA5NiA5NkMxNTAgNDQ4IDY0IDM2MiA2NCAyNTZTMTUwIDY0IDI1NiA2NHptMCA0NDhBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyem0zMi0zNTJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMjI0IDM1MmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFaIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJIMzUyYzEyLjQgMCAyMy43IDcuMiAyOSAxOC40czMuNiAyNC41LTQuNCAzNC4xTDEwMC4zIDQxNkgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTEyLjQgMC0yMy43LTcuMi0yOS0xOC40cy0zLjYtMjQuNSA0LjQtMzQuMUwyODMuNyA5NkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdBZGRyZXNzQm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgNDhjOC44IDAgMTYgNy4yIDE2IDE2VjQ0OGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNlY2NGMwLTguOCA3LjItMTYgMTYtMTZIMzg0ek05NiAwQzYwLjcgMCAzMiAyOC43IDMyIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRIOTZ6TTI0MCAyNTZhNjQgNjQgMCAxIDAgMC0xMjggNjQgNjQgMCAxIDAgMCAxMjh6bS0zMiAzMmMtNDQuMiAwLTgwIDM1LjgtODAgODBjMCA4LjggNy4yIDE2IDE2IDE2SDMzNmM4LjggMCAxNi03LjIgMTYtMTZjMC00NC4yLTM1LjgtODAtODAtODBIMjA4ek01MTIgODBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlY4MHpNNDk2IDE5MmMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNnptMTYgMTQ0YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdBZGRyZXNzQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgODBjOC44IDAgMTYgNy4yIDE2IDE2VjQxNmMwIDguOC03LjIgMTYtMTYgMTZINjRjLTguOCAwLTE2LTcuMi0xNi0xNlY5NmMwLTguOCA3LjItMTYgMTYtMTZINTEyek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTIwOCAyNTZhNjQgNjQgMCAxIDAgMC0xMjggNjQgNjQgMCAxIDAgMCAxMjh6bS0zMiAzMmMtNDQuMiAwLTgwIDM1LjgtODAgODBjMCA4LjggNy4yIDE2IDE2IDE2SDMwNGM4LjggMCAxNi03LjIgMTYtMTZjMC00NC4yLTM1LjgtODAtODAtODBIMTc2ek0zNzYgMTQ0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDM3NnptMCA5NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgzNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0JlbGxTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDU0Mi42IDQwMGMyLjctNy44IDEuMy0xNi41LTMuOS0yM2wtMTQuOS0xOC42QzQ5NS41IDMyMi45IDQ4MCAyNzguOCA0ODAgMjMzLjRWMjA4YzAtNzcuNC01NS0xNDItMTI4LTE1Ni44VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjUxLjJjLTQyLjYgOC42LTc5IDM0LjItMTAyIDY5LjNMMzguOCA1LjF6TTIyNCAxNTAuM0MyNDMuNiAxMTcuNyAyNzkuMyA5NiAzMjAgOTZjNjEuOSAwIDExMiA1MC4xIDExMiAxMTJ2MjUuNGMwIDMyLjcgNi40IDY0LjggMTguNyA5NC41TDIyNCAxNTAuM3pNNDA2LjIgNDE2bC02MC45LTQ4SDE2OC4zYzIxLjItMzIuOCAzNC40LTcwLjMgMzguNC0xMDkuMUwxNjAgMjIyLjF2MTEuNGMwIDQ1LjQtMTUuNSA4OS41LTQzLjggMTI0LjlMMTAxLjMgMzc3Yy01LjggNy4yLTYuOSAxNy4xLTIuOSAyNS40czEyLjQgMTMuNiAyMS42IDEzLjZINDA2LjJ6TTM4NCA0NDhIMzIwIDI1NmMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM3MyOC4zIDE4LjcgNDUuMyAxOC43czMzLjMtNi43IDQ1LjMtMTguN3MxOC43LTI4LjMgMTguNy00NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdCZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY1MS4yQzExOSA2NiA2NCAxMzAuNiA2NCAyMDh2MjUuNGMwIDQ1LjQtMTUuNSA4OS41LTQzLjggMTI0LjlMNS4zIDM3N2MtNS44IDcuMi02LjkgMTcuMS0yLjkgMjUuNFMxNC44IDQxNiAyNCA0MTZINDI0YzkuMiAwIDE3LjYtNS4zIDIxLjYtMTMuNnMyLjktMTguMi0yLjktMjUuNGwtMTQuOS0xOC42QzM5OS41IDMyMi45IDM4NCAyNzguOCAzODQgMjMzLjRWMjA4YzAtNzcuNC01NS0xNDItMTI4LTE1Ni44VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0wIDk2YzYxLjkgMCAxMTIgNTAuMSAxMTIgMTEydjI1LjRjMCA0Ny45IDEzLjkgOTQuNiAzOS43IDEzNC42SDcyLjNDOTguMSAzMjggMTEyIDI4MS4zIDExMiAyMzMuNFYyMDhjMC02MS45IDUwLjEtMTEyIDExMi0xMTJ6bTY0IDM1MkgyMjQgMTYwYzAgMTcgNi43IDMzLjMgMTguNyA0NS4zczI4LjMgMTguNyA0NS4zIDE4LjdzMzMuMy02LjcgNDUuMy0xOC43czE4LjctMjguMyAxOC43LTQ1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Jvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwbDAgNDhWNDQxLjRsMTMwLjEtOTIuOWM4LjMtNiAxOS42LTYgMjcuOSAwTDMzNiA0NDEuNFY0OEg0OFYwSDMzNmMyNi41IDAgNDggMjEuNSA0OCA0OFY0ODhjMCA5LTUgMTcuMi0xMyAyMS4zcy0xNy42IDMuNC0yNC45LTEuOEwxOTIgMzk3LjUgMzcuOSA1MDcuNWMtNy4zIDUuMi0xNi45IDUuOS0yNC45IDEuOFMwIDQ5NyAwIDQ4OFY0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQnVpbGRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNDhjLTguOCAwLTE2IDcuMi0xNiAxNlY0NDhjMCA4LjggNy4yIDE2IDE2IDE2aDgwVjQwMGMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djY0aDgwYzguOCAwIDE2LTcuMiAxNi0xNlY2NGMwLTguOC03LjItMTYtMTYtMTZINjR6TTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDMyMGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0em04OCA0MGMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2djQ4YzAgOC44LTcuMiAxNi0xNiAxNkgxMDRjLTguOCAwLTE2LTcuMi0xNi0xNlYxMDR6TTIzMiA4OGg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDIzMmMtOC44IDAtMTYtNy4yLTE2LTE2VjEwNGMwLTguOCA3LjItMTYgMTYtMTZ6TTg4IDIzMmMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2djQ4YzAgOC44LTcuMiAxNi0xNiAxNkgxMDRjLTguOCAwLTE2LTcuMi0xNi0xNlYyMzJ6bTE0NC0xNmg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDIzMmMtOC44IDAtMTYtNy4yLTE2LTE2VjIzMmMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRWNjRIMjk2VjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRWNjRoNDBjMzUuMyAwIDY0IDI4LjcgNjQgNjR2MTYgNDhWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxOTIgMTQ0IDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NGg0MFYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNNDAwIDE5Mkg0OFY0NDhjMCA4LjggNy4yIDE2IDE2IDE2SDM4NGM4LjggMCAxNi03LjIgMTYtMTZWMTkyek0zMjkgMjk3TDIxNyA0MDljLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC02NC02NGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDQ3IDQ3IDk1LTk1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FsZW5kYXJEYXlzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MiAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOHYxNiA0OFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE5MiAxNDQgMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDM0NFYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEgxNTJWMjR6TTQ4IDE5Mmg4MHY1Nkg0OFYxOTJ6bTAgMTA0aDgwdjY0SDQ4VjI5NnptMTI4IDBoOTZ2NjRIMTc2VjI5NnptMTQ0IDBoODB2NjRIMzIwVjI5NnptODAtNDhIMzIwVjE5Mmg4MHY1NnptMCAxNjB2NDBjMCA4LjgtNy4yIDE2LTE2IDE2SDMyMFY0MDhoODB6bS0xMjggMHY1NkgxNzZWNDA4aDk2em0tMTQ0IDB2NTZINjRjLTguOCAwLTE2LTcuMi0xNi0xNlY0MDhoODB6TTI3MiAyNDhIMTc2VjE5Mmg5NnY1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FsZW5kYXJNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNFY2NEgyOTZWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNFY2NGg0MGMzNS4zIDAgNjQgMjguNyA2NCA2NHYxNiA0OFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE5MiAxNDQgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0aDQwVjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0ek00MDAgMTkySDQ4VjQ0OGMwIDguOCA3LjIgMTYgMTYgMTZIMzg0YzguOCAwIDE2LTcuMiAxNi0xNlYxOTJ6TTI5NiAzNTJIMTUyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0SDI5NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FsZW5kYXJQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MiAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOHYxNiA0OFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE5MiAxNDQgMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDM0NFYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEgxNTJWMjR6TTQ4IDE5Mkg0MDBWNDQ4YzAgOC44LTcuMiAxNi0xNiAxNkg2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjE5MnptMTc2IDQwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY0OEgxNTJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNDh2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYzNTJoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjQ4VjI1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FsZW5kYXJYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNFY2NEgyOTZWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNFY2NGg0MGMzNS4zIDAgNjQgMjguNyA2NCA2NHYxNiA0OFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE5MiAxNDQgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0aDQwVjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0ek00MDAgMTkySDQ4VjQ0OGMwIDguOCA3LjIgMTYgMTYgMTZIMzg0YzguOCAwIDE2LTcuMiAxNi0xNlYxOTJ6bS05NSA4OWwtNDcgNDcgNDcgNDdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDctNDctNDcgNDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDctNDctNDctNDdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw0NyA0NyA0Ny00N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MiAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOHYxNiA0OFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE5MiAxNDQgMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDM0NFYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEgxNTJWMjR6TTQ4IDE5Mkg0MDBWNDQ4YzAgOC44LTcuMiAxNi0xNiAxNkg2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2hhcnRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRWNDA4YzAgMTMuMyAxMC43IDI0IDI0IDI0SDQ4OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg3MmMtMzkuOCAwLTcyLTMyLjItNzItNzJWNTZDMCA0Mi43IDEwLjcgMzIgMjQgMzJ6TTEyOCAxMzZjMC0xMy4zIDEwLjctMjQgMjQtMjRsMjA4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTIwOCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptMjQgNzJIMjk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDE1MmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptMCA5Nkg0MjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMTUyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaGVzc0Jpc2hvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDQgMEM5MC43IDAgODAgMTAuNyA4MCAyNGMwIDExLjIgNy42IDIwLjYgMTggMjMuMmMtNy44IDgtMTYuMSAxNy0yNC40IDI3QzM4LjIgMTE2LjcgMCAxNzguOCAwIDI1MC45YzAgNDQuOCAyNC42IDcyLjIgNDggODcuOFYzNTJIOTZWMzI1YzAtOS01LTE3LjItMTMtMjEuM2MtMTgtOS4zLTM1LTI0LjctMzUtNTIuN2MwLTU1LjUgMjkuOC0xMDYuOCA2Mi40LTE0NS45YzE2LTE5LjIgMzIuMS0zNC44IDQ0LjItNDUuNWMxLjktMS43IDMuNy0zLjIgNS4zLTQuNmMxLjcgMS40IDMuNCAzIDUuMyA0LjZjMTIuMSAxMC43IDI4LjIgMjYuMyA0NC4yIDQ1LjVjNS4zIDYuMyAxMC41IDEzIDE1LjUgMjBMMTU5IDE5MWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDU3LjgtNTcuOGMxMi44IDI1LjkgMjEuMiA1NC4zIDIxLjIgODMuOGMwIDI4LTE3IDQzLjQtMzUgNTIuN2MtOCA0LjEtMTMgMTIuMy0xMyAyMS4zdjI3aDQ4VjMzOC43YzIzLjQtMTUuNiA0OC00Mi45IDQ4LTg3LjhjMC03Mi4xLTM4LjItMTM0LjItNzMuNi0xNzYuN2MtOC4zLTkuOS0xNi42LTE5LTI0LjQtMjdjMTAuMy0yLjcgMTgtMTIuMSAxOC0yMy4yYzAtMTMuMy0xMC43LTI0LTI0LTI0SDE2MCAxMDR6TTUyLjcgNDY0bDE2LjYtMzJIMjUwLjhsMTYuNiAzMkg1Mi43em0yMDcuOS04MEg1OS41Yy0xMiAwLTIyLjkgNi43LTI4LjQgMTcuM0w0LjYgNDUyLjVjLTMgNS44LTQuNiAxMi4yLTQuNiAxOC43QzAgNDkzLjggMTguMiA1MTIgNDAuOCA1MTJIMjc5LjJjMjIuNSAwIDQwLjgtMTguMiA0MC44LTQwLjhjMC02LjUtMS42LTEyLjktNC42LTE4LjdsLTI2LjUtNTEuMmMtNS41LTEwLjYtMTYuNS0xNy4zLTI4LjQtMTcuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2hlc3NLaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY1NkgxNjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMzJ2NDBINTkuNkMyNi43IDE0NCAwIDE3MC43IDAgMjAzLjZjMCA4LjIgMS43IDE2LjMgNC45IDIzLjhMNTkuMSAzNTJoNTIuM0w0OSAyMDguMmMtLjYtMS41LTEtMy0xLTQuNmMwLTYuNCA1LjItMTEuNiAxMS42LTExLjZIMjI0IDM4OC40YzYuNCAwIDExLjYgNS4yIDExLjYgMTEuNmMwIDEuNi0uMyAzLjItMSA0LjZMMzM2LjUgMzUyaDUyLjNsNTQuMi0xMjQuNmMzLjMtNy41IDQuOS0xNS42IDQuOS0yMy44YzAtMzIuOS0yNi43LTU5LjYtNTkuNi01OS42SDI0OFYxMDRoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjQ4VjI0ek0xMDEuMiA0MzJIMzQ2LjhsMTYuNiAzMkg4NC43bDE2LjYtMzJ6bTI4My43LTMwLjdjLTUuNS0xMC42LTE2LjUtMTcuMy0yOC40LTE3LjNIOTEuNWMtMTIgMC0yMi45IDYuNy0yOC40IDE3LjNMMzYuNiA0NTIuNWMtMyA1LjgtNC42IDEyLjItNC42IDE4LjdDMzIgNDkzLjggNTAuMiA1MTIgNzIuOCA1MTJIMzc1LjJjMjIuNSAwIDQwLjgtMTguMiA0MC44LTQwLjhjMC02LjUtMS42LTEyLjktNC42LTE4LjdsLTI2LjUtNTEuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2hlc3NLbmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI2LjYgNDhIMTE3LjNsMTcuMSAxMi44YzYgNC41IDkuNiAxMS42IDkuNiAxOS4ycy0zLjYgMTQuNy05LjYgMTkuMmwtNi41IDQuOWMtMTAgNy41LTE2IDE5LjMtMTYgMzEuOWwtLjMgOTFjMCAxMC4yIDQuOSAxOS45IDEzLjIgMjUuOGwxLjkgMS4zYzkuOSA3LjEgMjMuMyA3IDMzLjItLjFsNDkuOS0zNi4zYzEwLjctNy44IDI1LjctNS40IDMzLjUgNS4zczUuNCAyNS43LTUuMyAzMy41bC00OS45IDM2LjMtNTMuOCAzOS4xYy03LjMgNS4zLTEzIDEyLjItMTYuOSAyMC4xSDY2LjhjNS4zLTIyLjEgMTcuOC00MS45IDM1LjktNTYuM2MtMS4zLS44LTIuNi0xLjctMy44LTIuNkw5NyAyOTEuOGMtMjEtMTUtMzMuNC0zOS4yLTMzLjMtNjVsLjMtOTFjLjEtMTkuOCA2LjctMzguNyAxOC42LTUzLjlsLS40LS4zQzcwLjcgNzMgNjQgNTkuNiA2NCA0NS4zQzY0IDIwLjMgODQuMyAwIDEwOS4zIDBIMjI2LjZDMzMxLjIgMCA0MTYgODQuOCA0MTYgMTg5LjRjMCAxMS4xLTEgMjIuMi0yLjkgMzMuMkwzOTAuMSAzNTJIMzQxLjNsMjQuNS0xMzcuOGMxLjUtOC4yIDIuMi0xNi41IDIuMi0yNC44QzM2OCAxMTEuMyAzMDQuNyA0OCAyMjYuNiA0OHpNODUuMiA0MzJMNjguNyA0NjRIMzc5LjNsLTE2LjYtMzJIODUuMnptMzE1LjctMzAuN2wyNi41IDUxLjJjMyA1LjggNC42IDEyLjIgNC42IDE4LjdjMCAyMi41LTE4LjIgNDAuOC00MC44IDQwLjhINTYuOEMzNC4yIDUxMiAxNiA0OTMuOCAxNiA0NzEuMmMwLTYuNSAxLjYtMTIuOSA0LjYtMTguN2wyNi41LTUxLjJDNTIuNSAzOTAuNyA2My41IDM4NCA3NS41IDM4NGgyOTdjMTIgMCAyMi45IDYuNyAyOC40IDE3LjN6TTE3MiAxMjhhMjAgMjAgMCAxIDEgMCA0MCAyMCAyMCAwIDEgMSAwLTQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaGVzc1Bhd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMyIDE1MkE3MiA3MiAwIDEgMCA4OCAxNTJhNzIgNzIgMCAxIDAgMTQ0IDB6bTI0IDEyMEgyNDMuNGwxMC43IDgwSDIwNS43TDE5NSAyNzJIMTYwIDEyNWwtMTAuNyA4MEg2NS45bDEwLjctODBINjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRjLTE1LjEtMjAuMS0yNC00NS0yNC03MkM0MCA4NS43IDkzLjcgMzIgMTYwIDMyczEyMCA1My43IDEyMCAxMjBjMCAyNy04LjkgNTEuOS0yNCA3MmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNHpNNTIuNyA0NjRIMjY3LjNsLTE2LjYtMzJINjkuMkw1Mi43IDQ2NHptMjA3LjktODBjMTIgMCAyMi45IDYuNyAyOC40IDE3LjNsMjYuNSA1MS4yYzMgNS44IDQuNiAxMi4yIDQuNiAxOC43YzAgMjIuNS0xOC4yIDQwLjgtNDAuOCA0MC44SDQwLjhDMTguMiA1MTIgMCA0OTMuOCAwIDQ3MS4yYzAtNi41IDEuNi0xMi45IDQuNi0xOC43bDI2LjUtNTEuMkMzNi41IDM5MC43IDQ3LjUgMzg0IDU5LjUgMzg0aDIwMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2hlc3NRdWVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tOTUuMi04Yy0xOC4xIDAtMzEuMyAxMi44LTM1LjYgMjYuOWMtOCAyNi4yLTMyLjQgNDUuMi02MS4yIDQ1LjJjLTEwIDAtMTkuNC0yLjMtMjcuNy02LjNjLTcuNi0zLjctMTYuNy0zLjMtMjQgMS4yQy43IDE2Mi4xLTMuMSAxNzcuMSAzLjcgMTg4LjlMOTcuNiAzNTJIMTUzbC04My0xNDQuMWM0MC41LTIuMiA3NS4zLTI1LjkgOTMuMS01OS44YzIyIDI2LjggNTUuNCA0My45IDkyLjggNDMuOXM3MC44LTE3LjEgOTIuOC00My45YzE3LjggMzQgNTIuNiA1Ny43IDkzLjEgNTkuOEwzNTkgMzUyaDU1LjRsOTMuOS0xNjMuMWM2LjgtMTEuNyAzLTI2LjctOC42LTMzLjhjLTcuMy00LjUtMTYuNC00LjktMjQtMS4yYy04LjQgNC0xNy43IDYuMy0yNy43IDYuM2MtMjguOCAwLTUzLjItMTktNjEuMi00NS4yQzM4Mi41IDEwMC44IDM2OS4zIDg4IDM1MS4yIDg4Yy0xNC41IDAtMjYuMyA4LjUtMzIuNCAxOS4zYy0xMi40IDIyLTM1LjkgMzYuNy02Mi44IDM2LjdzLTUwLjQtMTQuOC02Mi44LTM2LjdDMTg3LjEgOTYuNSAxNzUuNCA4OCAxNjAuOCA4OHpNMTMzLjIgNDMySDM3OC44bDE2LjYgMzJIMTE2LjdsMTYuNi0zMnptMjgzLjctMzAuN2MtNS41LTEwLjYtMTYuNS0xNy4zLTI4LjQtMTcuM2gtMjY1Yy0xMiAwLTIyLjkgNi43LTI4LjQgMTcuM0w2OC42IDQ1Mi41Yy0zIDUuOC00LjYgMTIuMi00LjYgMTguN2MwIDIyLjUgMTguMiA0MC44IDQwLjggNDAuOEg0MDcuMmMyMi41IDAgNDAuOC0xOC4yIDQwLjgtNDAuOGMwLTYuNS0xLjYtMTIuOS00LjYtMTguN2wtMjYuNS01MS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaGVzc1Jvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgODBWMTkyYzAgMi41IDEuMiA0LjkgMy4yIDYuNGw1MS4yIDM4LjRjNi44IDUuMSAxMC40IDEzLjQgOS41IDIxLjlMMTMzLjUgMzUySDg1LjJsOS40LTg1TDU0LjQgMjM2LjhDNDAuMyAyMjYuMiAzMiAyMDkuNiAzMiAxOTJWNzJjMC0yMi4xIDE3LjktNDAgNDAtNDBIMzc2YzIyLjEgMCA0MCAxNy45IDQwIDQwVjE5MmMwIDE3LjYtOC4zIDM0LjItMjIuNCA0NC44TDM1My40IDI2N2w5LjQgODVIMzE0LjVsLTEwLjQtOTMuM2MtLjktOC40IDIuNy0xNi44IDkuNS0yMS45bDUxLjItMzguNGMyLTEuNSAzLjItMy45IDMuMi02LjRWODBIMzA0djI0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjgwSDE5MnYyNGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY4MEg4MHptNC43IDM4NEgzNjMuM2wtMTYuNi0zMkgxMDEuMkw4NC43IDQ2NHptMjcxLjktODBjMTIgMCAyMi45IDYuNyAyOC40IDE3LjNsMjYuNSA1MS4yYzMgNS44IDQuNiAxMi4yIDQuNiAxOC43YzAgMjIuNS0xOC4yIDQwLjgtNDAuOCA0MC44SDcyLjhDNTAuMiA1MTIgMzIgNDkzLjggMzIgNDcxLjJjMC02LjUgMS42LTEyLjkgNC42LTE4LjdsMjYuNS01MS4yQzY4LjUgMzkwLjcgNzkuNSAzODQgOTEuNSAzODRoMjY1ek0yMDggMjg4Yy04LjggMC0xNi03LjItMTYtMTZWMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDIwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2lyY2xlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ4YTIwOCAyMDggMCAxIDEgMCA0MTYgMjA4IDIwOCAwIDEgMSAwLTQxNnptMCA0NjRBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zNjkgMjA5YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTExMSAxMTEtNDctNDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNjQgNjRjOS40IDkuNCAyNC42IDkuNCAzMy45IDBMMzY5IDIwOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2lyY2xlRG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yNTYtOTZhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ2NGEyMDggMjA4IDAgMSAxIDAtNDE2IDIwOCAyMDggMCAxIDEgMCA0MTZ6TTI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMHpNMzc2LjkgMjk0LjZjNC41LTQuMiA3LjEtMTAuMSA3LjEtMTYuM2MwLTEyLjMtMTAtMjIuMy0yMi4zLTIyLjNIMzA0VjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMmwtMzIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZIMTUwLjNDMTM4IDI1NiAxMjggMjY2IDEyOCAyNzguM2MwIDYuMiAyLjYgMTIuMSA3LjEgMTYuM2wxMDcuMSA5OS45YzMuOCAzLjUgOC43IDUuNSAxMy44IDUuNXMxMC4xLTIgMTMuOC01LjVsMTA3LjEtOTkuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2lyY2xlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAyNTZhMjA4IDIwOCAwIDEgMSA0MTYgMEEyMDggMjA4IDAgMSAxIDQ4IDI1NnptNDY0IDBBMjU2IDI1NiAwIDEgMCAwIDI1NmEyNTYgMjU2IDAgMSAwIDUxMiAwek0yMTcuNCAzNzYuOWM0LjIgNC41IDEwLjEgNy4xIDE2LjMgNy4xYzEyLjMgMCAyMi4zLTEwIDIyLjMtMjIuM1YzMDRoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjQwYzAtMTcuNy0xNC4zLTMyLTMyLTMySDI1NlYxNTAuM2MwLTEyLjMtMTAtMjIuMy0yMi4zLTIyLjNjLTYuMiAwLTEyLjEgMi42LTE2LjMgNy4xTDExNy41IDI0Mi4yYy0zLjUgMy44LTUuNSA4LjctNS41IDEzLjhzMiAxMC4xIDUuNSAxMy44bDk5LjkgMTA3LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZVBhdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yMjQtNzJWMzI4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjE4NGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0em0xMTIgMFYzMjhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMTg0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZVBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6TTE4OC4zIDE0Ny4xYzcuNi00LjIgMTYuOC00LjEgMjQuMyAuNWwxNDQgODhjNy4xIDQuNCAxMS41IDEyLjEgMTEuNSAyMC41cy00LjQgMTYuMS0xMS41IDIwLjVsLTE0NCA4OGMtNy40IDQuNS0xNi43IDQuNy0yNC4zIC41cy0xMi4zLTEyLjItMTIuMy0yMC45VjE2OGMwLTguNyA0LjctMTYuNyAxMi4zLTIwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZVF1ZXN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xNjkuOC05MC43YzcuOS0yMi4zIDI5LjEtMzcuMyA1Mi44LTM3LjNoNTguM2MzNC45IDAgNjMuMSAyOC4zIDYzLjEgNjMuMWMwIDIyLjYtMTIuMSA0My41LTMxLjcgNTQuOEwyODAgMjY0LjRjLS4yIDEzLTEwLjkgMjMuNi0yNCAyMy42Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYyNTAuNWMwLTguNiA0LjYtMTYuNSAxMi4xLTIwLjhsNDQuMy0yNS40YzQuNy0yLjcgNy42LTcuNyA3LjYtMTMuMWMwLTguNC02LjgtMTUuMS0xNS4xLTE1LjFIMjIyLjZjLTMuNCAwLTYuNCAyLjEtNy41IDUuM2wtLjQgMS4yYy00LjQgMTIuNS0xOC4yIDE5LTMwLjYgMTQuNnMtMTktMTguMi0xNC42LTMwLjZsLjQtMS4yek0yMjQgMzUyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMSA0OCAyNTZhMjA4IDIwOCAwIDEgMSA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMEEyNTYgMjU2IDAgMSAwIDAgMjU2ek0yOTQuNiAxMzUuMWMtNC4yLTQuNS0xMC4xLTcuMS0xNi4zLTcuMUMyNjYgMTI4IDI1NiAxMzggMjU2IDE1MC4zVjIwOEgxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDk2djU3LjdjMCAxMi4zIDEwIDIyLjMgMjIuMyAyMi4zYzYuMiAwIDEyLjEtMi42IDE2LjMtNy4xbDk5LjktMTA3LjFjMy41LTMuOCA1LjUtOC43IDUuNS0xMy44cy0yLTEwLjEtNS41LTEzLjhMMjk0LjYgMTM1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZVN0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTE5Mi05NkgzMjBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzIwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDhhMjA4IDIwOCAwIDEgMSAwIDQxNiAyMDggMjA4IDAgMSAxIDAtNDE2em0wIDQ2NEEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTEzNS4xIDIxNy40Yy00LjUgNC4yLTcuMSAxMC4xLTcuMSAxNi4zYzAgMTIuMyAxMCAyMi4zIDIyLjMgMjIuM0gyMDh2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjU2aDU3LjdjMTIuMyAwIDIyLjMtMTAgMjIuMy0yMi4zYzAtNi4yLTIuNi0xMi4xLTcuMS0xNi4zTDI2OS44IDExNy41Yy0zLjgtMy41LTguNy01LjUtMTMuOC01LjVzLTEwLjEgMi0xMy44IDUuNUwxMzUuMSAyMTcuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2lyY2xlVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDYuNSAzOTkuNkMzODcuNCAzNTIuOSAzNDEuNSAzMjAgMjg4IDMyMEgyMjRjLTUzLjUgMC05OS40IDMyLjktMTE4LjUgNzkuNkM2OS45IDM2Mi4yIDQ4IDMxMS43IDQ4IDI1NkM0OCAxNDEuMSAxNDEuMSA0OCAyNTYgNDhzMjA4IDkzLjEgMjA4IDIwOGMwIDU1LjctMjEuOSAxMDYuMi01Ny41IDE0My42em0tNDAuMSAzMi43QzMzNC40IDQ1Mi40IDI5Ni42IDQ2NCAyNTYgNDY0cy03OC40LTExLjYtMTEwLjUtMzEuN2M3LjMtMzYuNyAzOS43LTY0LjMgNzguNS02NC4zaDY0YzM4LjggMCA3MS4yIDI3LjYgNzguNSA2NC4zek0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnptMC0yNzJhNDAgNDAgMCAxIDEgMC04MCA0MCA0MCAwIDEgMSAwIDgwem0tODgtNDBhODggODggMCAxIDAgMTc2IDAgODggODggMCAxIDAgLTE3NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDhhMjA4IDIwOCAwIDEgMSAwIDQxNiAyMDggMjA4IDAgMSAxIDAtNDE2em0wIDQ2NEEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE3NSAxNzVjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDQ3IDQ3LTQ3IDQ3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNDctNDcgNDcgNDdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC00Ny00NyA0Ny00N2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC00NyA0Ny00Ny00N2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2xpcGJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4MCA2NGg0MGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NGg0MCA5LjZDMTIxIDI3LjUgMTUzLjMgMCAxOTIgMHM3MSAyNy41IDc4LjQgNjRIMjgwek02NCAxMTJjLTguOCAwLTE2IDcuMi0xNiAxNlY0NDhjMCA4LjggNy4yIDE2IDE2IDE2SDMyMGM4LjggMCAxNi03LjIgMTYtMTZWMTI4YzAtOC44LTcuMi0xNi0xNi0xNkgzMDR2MjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMTkyIDEwNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMTEySDY0em0xMjgtOGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Nsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMSA0OCAyNTZhMjA4IDIwOCAwIDEgMSA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMEEyNTYgMjU2IDAgMSAwIDAgMjU2ek0yMzIgMTIwVjI1NmMwIDggNCAxNS41IDEwLjcgMjBsOTYgNjRjMTEgNy40IDI1LjkgNC40IDMzLjMtNi43czQuNC0yNS45LTYuNy0zMy4zTDI4MCAyNDMuMlYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Nsb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ2NEgyODhjOC44IDAgMTYtNy4yIDE2LTE2VjM4NGg0OHY2NGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjI0YzAtMzUuMyAyOC43LTY0IDY0LTY0aDY0djQ4SDY0Yy04LjggMC0xNiA3LjItMTYgMTZWNDQ4YzAgOC44IDcuMiAxNiAxNiAxNnpNMjI0IDMwNEg0NDhjOC44IDAgMTYtNy4yIDE2LTE2VjY0YzAtOC44LTcuMi0xNi0xNi0xNkgyMjRjLTguOCAwLTE2IDcuMi0xNiAxNlYyODhjMCA4LjggNy4yIDE2IDE2IDE2em0tNjQtMTZWNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjI4OGMwIDM1LjMtMjguNyA2NC02NCA2NEgyMjRjLTM1LjMgMC02NC0yOC43LTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDbG9zZWRDYXB0aW9uaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiA4MGM4LjggMCAxNiA3LjIgMTYgMTZWNDE2YzAgOC44LTcuMiAxNi0xNiAxNkg2NGMtOC44IDAtMTYtNy4yLTE2LTE2Vjk2YzAtOC44IDcuMi0xNiAxNi0xNkg1MTJ6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjAwIDIwOGMxNC4yIDAgMjcgNi4xIDM1LjggMTZjOC44IDkuOSAyNCAxMC43IDMzLjkgMS45czEwLjctMjQgMS45LTMzLjljLTE3LjUtMTkuNi00My4xLTMyLTcxLjUtMzJjLTUzIDAtOTYgNDMtOTYgOTZzNDMgOTYgOTYgOTZjMjguNCAwIDU0LTEyLjQgNzEuNS0zMmM4LjgtOS45IDgtMjUtMS45LTMzLjlzLTI1LTgtMzMuOSAxLjljLTguOCA5LjktMjEuNiAxNi0zNS44IDE2Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4em0xNDQgNDhjMC0yNi41IDIxLjUtNDggNDgtNDhjMTQuMiAwIDI3IDYuMSAzNS44IDE2YzguOCA5LjkgMjQgMTAuNyAzMy45IDEuOXMxMC43LTI0IDEuOS0zMy45Yy0xNy41LTE5LjYtNDMuMS0zMi03MS41LTMyYy01MyAwLTk2IDQzLTk2IDk2czQzIDk2IDk2IDk2YzI4LjQgMCA1NC0xMi40IDcxLjUtMzJjOC44LTkuOSA4LTI1LTEuOS0zMy45cy0yNS04LTMzLjkgMS45Yy04LjggOS45LTIxLjYgMTYtMzUuOCAxNmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NvbW1lbnREb3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2OC4yIDM4NC45Yy0xNS01LjQtMzEuNy0zLjEtNDQuNiA2LjRjLTguMiA2LTIyLjMgMTQuOC0zOS40IDIyLjdjNS42LTE0LjcgOS45LTMxLjMgMTEuMy00OS40YzEtMTIuOS0zLjMtMjUuNy0xMS44LTM1LjVDNjAuNCAzMDIuOCA0OCAyNzIgNDggMjQwYzAtNzkuNSA4My4zLTE2MCAyMDgtMTYwczIwOCA4MC41IDIwOCAxNjBzLTgzLjMgMTYwLTIwOCAxNjBjLTMxLjYgMC02MS4zLTUuNS04Ny44LTE1LjF6TTI2LjMgNDIzLjhjLTEuNiAyLjctMy4zIDUuNC01LjEgOC4xbC0uMyAuNWMtMS42IDIuMy0zLjIgNC42LTQuOCA2LjljLTMuNSA0LjctNy4zIDkuMy0xMS4zIDEzLjVjLTQuNiA0LjYtNS45IDExLjQtMy40IDE3LjRjMi41IDYgOC4zIDkuOSAxNC44IDkuOWM1LjEgMCAxMC4yLS4zIDE1LjMtLjhsLjctLjFjNC40LS41IDguOC0xLjEgMTMuMi0xLjljLjgtLjEgMS42LS4zIDIuNC0uNWMxNy44LTMuNSAzNC45LTkuNSA1MC4xLTE2LjFjMjIuOS0xMCA0Mi40LTIxLjkgNTQuMy0zMC42YzMxLjggMTEuNSA2NyAxNy45IDEwNC4xIDE3LjljMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMlMwIDEyNS4xIDAgMjQwYzAgNDUuMSAxNy43IDg2LjggNDcuNyAxMjAuOWMtMS45IDI0LjUtMTEuNCA0Ni4zLTIxLjQgNjIuOXpNMTQ0IDI3MmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTE0NC0zMmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem04MCAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NvbW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIzLjYgMzkxLjNjMTIuOS05LjQgMjkuNi0xMS44IDQ0LjYtNi40YzI2LjUgOS42IDU2LjIgMTUuMSA4Ny44IDE1LjFjMTI0LjcgMCAyMDgtODAuNSAyMDgtMTYwcy04My4zLTE2MC0yMDgtMTYwUzQ4IDE2MC41IDQ4IDI0MGMwIDMyIDEyLjQgNjIuOCAzNS43IDg5LjJjOC42IDkuNyAxMi44IDIyLjUgMTEuOCAzNS41Yy0xLjQgMTguMS01LjcgMzQuNy0xMS4zIDQ5LjRjMTctNy45IDMxLjEtMTYuNyAzOS40LTIyLjd6TTIxLjIgNDMxLjljMS44LTIuNyAzLjUtNS40IDUuMS04LjFjMTAtMTYuNiAxOS41LTM4LjQgMjEuNC02Mi45QzE3LjcgMzI2LjggMCAyODUuMSAwIDI0MEMwIDEyNS4xIDExNC42IDMyIDI1NiAzMnMyNTYgOTMuMSAyNTYgMjA4cy0xMTQuNiAyMDgtMjU2IDIwOGMtMzcuMSAwLTcyLjMtNi40LTEwNC4xLTE3LjljLTExLjkgOC43LTMxLjMgMjAuNi01NC4zIDMwLjZjLTE1LjEgNi42LTMyLjMgMTIuNi01MC4xIDE2LjFjLS44IC4yLTEuNiAuMy0yLjQgLjVjLTQuNCAuOC04LjcgMS41LTEzLjIgMS45Yy0uMiAwLS41IC4xLS43IC4xYy01LjEgLjUtMTAuMiAuOC0xNS4zIC44Yy02LjUgMC0xMi4zLTMuOS0xNC44LTkuOWMtMi41LTYtMS4xLTEyLjggMy40LTE3LjRjNC4xLTQuMiA3LjgtOC43IDExLjMtMTMuNWMxLjctMi4zIDMuMy00LjYgNC44LTYuOWMuMS0uMiAuMi0uMyAuMy0uNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ29tbWVudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODguMiAzMDkuMWM5LjgtMTguMyA2LjgtNDAuOC03LjUtNTUuOEM1OS40IDIzMC45IDQ4IDIwNCA0OCAxNzZjMC02My41IDYzLjgtMTI4IDE2MC0xMjhzMTYwIDY0LjUgMTYwIDEyOHMtNjMuOCAxMjgtMTYwIDEyOGMtMTMuMSAwLTI1LjgtMS4zLTM3LjgtMy42Yy0xMC40LTItMjEuMi0uNi0zMC43IDQuMmMtNC4xIDIuMS04LjMgNC4xLTEyLjYgNmMtMTYgNy4yLTMyLjkgMTMuNS00OS45IDE4YzIuOC00LjYgNS40LTkuMSA3LjktMTMuNmMxLjEtMS45IDIuMi0zLjkgMy4yLTUuOXpNMCAxNzZjMCA0MS44IDE3LjIgODAuMSA0NS45IDExMC4zYy0uOSAxLjctMS45IDMuNS0yLjggNS4xYy0xMC4zIDE4LjQtMjIuMyAzNi41LTM2LjYgNTIuMWMtNi42IDctOC4zIDE3LjItNC42IDI1LjlDNS44IDM3OC4zIDE0LjQgMzg0IDI0IDM4NGM0MyAwIDg2LjUtMTMuMyAxMjIuNy0yOS43YzQuOC0yLjIgOS42LTQuNSAxNC4yLTYuOGMxNS4xIDMgMzAuOSA0LjUgNDcuMSA0LjVjMTE0LjkgMCAyMDgtNzguOCAyMDgtMTc2UzMyMi45IDAgMjA4IDBTMCA3OC44IDAgMTc2ek00MzIgNDgwYzE2LjIgMCAzMS45LTEuNiA0Ny4xLTQuNWM0LjYgMi4zIDkuNCA0LjYgMTQuMiA2LjhDNTI5LjUgNDk4LjcgNTczIDUxMiA2MTYgNTEyYzkuNiAwIDE4LjItNS43IDIyLTE0LjVjMy44LTguOCAyLTE5LTQuNi0yNS45Yy0xNC4yLTE1LjYtMjYuMi0zMy43LTM2LjYtNTIuMWMtLjktMS43LTEuOS0zLjQtMi44LTUuMUM2MjIuOCAzODQuMSA2NDAgMzQ1LjggNjQwIDMwNGMwLTk0LjQtODcuOS0xNzEuNS0xOTguMi0xNzUuOGM0LjEgMTUuMiA2LjIgMzEuMiA2LjIgNDcuOGwwIC42Yzg3LjIgNi43IDE0NCA2Ny41IDE0NCAxMjcuNGMwIDI4LTExLjQgNTQuOS0zMi43IDc3LjJjLTE0LjMgMTUtMTcuMyAzNy42LTcuNSA1NS44YzEuMSAyIDIuMiA0IDMuMiA1LjljMi41IDQuNSA1LjIgOSA3LjkgMTMuNmMtMTctNC41LTMzLjktMTAuNy00OS45LTE4Yy00LjMtMS45LTguNS0zLjktMTIuNi02Yy05LjUtNC44LTIwLjMtNi4yLTMwLjctNC4yYy0xMi4xIDIuNC0yNC43IDMuNi0zNy44IDMuNmMtNjEuNyAwLTExMC0yNi41LTEzNi44LTYyLjNjLTE2IDUuNC0zMi44IDkuNC01MCAxMS44QzI3OSA0MzkuOCAzNTAgNDgwIDQzMiA0ODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NvbXBhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTMwNi43IDY5LjFMMTYyLjQgMzgwLjZjLTE5LjQgNy41LTM4LjUtMTEuNi0zMS0zMWw1NS41LTE0NC4zYzMuMy04LjUgOS45LTE1LjEgMTguNC0xOC40bDE0NC4zLTU1LjVjMTkuNC03LjUgMzguNSAxMS42IDMxIDMxTDMyNS4xIDMwNi43Yy0zLjIgOC41LTkuOSAxNS4xLTE4LjQgMTguNHpNMjg4IDI1NmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDb3B5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMzZIMTkyYy04LjggMC0xNi03LjItMTYtMTZWNjRjMC04LjggNy4yLTE2IDE2LTE2bDE0MC4xIDBMNDAwIDExNS45VjMyMGMwIDguOC03LjIgMTYtMTYgMTZ6TTE5MiAzODRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjExNS45YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlMMzY2LjEgMTQuMWMtOS05LTIxLjItMTQuMS0zMy45LTE0LjFIMTkyYy0zNS4zIDAtNjQgMjguNy02NCA2NFYzMjBjMCAzNS4zIDI4LjcgNjQgNjQgNjR6TTY0IDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDI1NmMzNS4zIDAgNjQtMjguNyA2NC02NFY0MTZIMjcydjMyYzAgOC44LTcuMiAxNi0xNiAxNkg2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjE5MmMwLTguOCA3LjItMTYgMTYtMTZIOTZWMTI4SDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDb3B5cmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ4YTIwOCAyMDggMCAxIDEgMCA0MTYgMjA4IDIwOCAwIDEgMSAwLTQxNnptMCA0NjRBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xOTkuNCAzMTIuNmMtMzEuMi0zMS4yLTMxLjItODEuOSAwLTExMy4xczgxLjktMzEuMiAxMTMuMSAwYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWMtNTAtNTAtMTMxLTUwLTE4MSAwcy01MCAxMzEgMCAxODFzMTMxIDUwIDE4MSAwYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBjLTMxLjIgMzEuMi04MS45IDMxLjItMTEzLjEgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ3JlZGl0Q2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgODBjOC44IDAgMTYgNy4yIDE2IDE2djMySDQ4Vjk2YzAtOC44IDcuMi0xNiAxNi0xNkg1MTJ6bTE2IDE0NFY0MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDY0Yy04LjggMC0xNi03LjItMTYtMTZWMjI0SDUyOHpNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em01NiAzMDRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTIwem0xMjggMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEgzNjBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdFbnZlbG9wZU9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU1LjQgNDguMmMuMi0uMSAuNC0uMiAuNi0uMnMuNCAuMSAuNiAuMkw0NjAuNiAxOTRjMi4xIDEuNSAzLjQgMy45IDMuNCA2LjV2MTMuNkwyOTEuNSAzNTUuN2MtMjAuNyAxNy01MC40IDE3LTcxLjEgMEw0OCAyMTQuMVYyMDAuNWMwLTIuNiAxLjItNSAzLjQtNi41TDI1NS40IDQ4LjJ6TTQ4IDI3Ni4yTDE5MCAzOTIuOGMzOC40IDMxLjUgOTMuNyAzMS41IDEzMiAwTDQ2NCAyNzYuMlY0NTZjMCA0LjQtMy42IDgtOCA4SDU2Yy00LjQgMC04LTMuNi04LThWMjc2LjJ6TTI1NiAwYy0xMC4yIDAtMjAuMiAzLjItMjguNSA5LjFMMjMuNSAxNTQuOUM4LjcgMTY1LjQgMCAxODIuNCAwIDIwMC41VjQ1NmMwIDMwLjkgMjUuMSA1NiA1NiA1Nkg0NTZjMzAuOSAwIDU2LTI1LjEgNTYtNTZWMjAwLjVjMC0xOC4xLTguNy0zNS4xLTIzLjQtNDUuNkwyODQuNSA5LjFDMjc2LjIgMy4yIDI2Ni4yIDAgMjU2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0VudmVsb3BlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDExMmMtOC44IDAtMTYgNy4yLTE2IDE2djIyLjFMMjIwLjUgMjkxLjdjMjAuNyAxNyA1MC40IDE3IDcxLjEgMEw0NjQgMTUwLjFWMTI4YzAtOC44LTcuMi0xNi0xNi0xNkg2NHpNNDggMjEyLjJWMzg0YzAgOC44IDcuMiAxNiAxNiAxNkg0NDhjOC44IDAgMTYtNy4yIDE2LTE2VjIxMi4yTDMyMiAzMjguOGMtMzguNCAzMS41LTkzLjcgMzEuNS0xMzIgMEw0OCAyMTIuMnpNMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdFeWVTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDUyNS42IDM4Ni43YzM5LjYtNDAuNiA2Ni40LTg2LjEgNzkuOS0xMTguNGMzLjMtNy45IDMuMy0xNi43IDAtMjQuNmMtMTQuOS0zNS43LTQ2LjItODcuNy05My0xMzEuMUM0NjUuNSA2OC44IDQwMC44IDMyIDMyMCAzMmMtNjguMiAwLTEyNSAyNi4zLTE2OS4zIDYwLjhMMzguOCA1LjF6bTE1MSAxMTguM0MyMjYgOTcuNyAyNjkuNSA4MCAzMjAgODBjNjUuMiAwIDExOC44IDI5LjYgMTU5LjkgNjcuN0M1MTguNCAxODMuNSA1NDUgMjI2IDU1OC42IDI1NmMtMTIuNiAyOC0zNi42IDY2LjgtNzAuOSAxMDAuOWwtNTMuOC00Mi4yYzkuMS0xNy42IDE0LjItMzcuNSAxNC4yLTU4LjdjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhjLTMyLjIgMC02MS43IDExLjktODQuMiAzMS41bC00Ni4xLTM2LjF6TTM5NC45IDI4NC4ybC04MS41LTYzLjljNC4yLTguNSA2LjYtMTguMiA2LjYtMjguM2MwLTUuNS0uNy0xMC45LTItMTZjLjcgMCAxLjMgMCAyIDBjNDQuMiAwIDgwIDM1LjggODAgODBjMCA5LjktMS44IDE5LjQtNS4xIDI4LjJ6bTUxLjMgMTYzLjNsLTQxLjktMzNDMzc4LjggNDI1LjQgMzUwLjcgNDMyIDMyMCA0MzJjLTY1LjIgMC0xMTguOC0yOS42LTE1OS45LTY3LjdDMTIxLjYgMzI4LjUgOTUgMjg2IDgxLjQgMjU2YzguMy0xOC40IDIxLjUtNDEuNSAzOS40LTY0LjhMODMuMSAxNjEuNUM2MC4zIDE5MS4yIDQ0IDIyMC44IDM0LjUgMjQzLjdjLTMuMyA3LjktMy4zIDE2LjcgMCAyNC42YzE0LjkgMzUuNyA0Ni4yIDg3LjcgOTMgMTMxLjFDMTc0LjUgNDQzLjIgMjM5LjIgNDgwIDMyMCA0ODBjNDcuOCAwIDg5LjktMTIuOSAxMjYuMi0zMi41em0tODgtNjkuM0wzMDIgMzM0Yy0yMy41LTUuNC00My4xLTIxLjItNTMuNy00Mi4zbC01Ni4xLTQ0LjJjLS4yIDIuOC0uMyA1LjYtLjMgOC41YzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4YzEzLjMgMCAyNi4xLTIgMzguMi01Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0V5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggODBjLTY1LjIgMC0xMTguOCAyOS42LTE1OS45IDY3LjdDODkuNiAxODMuNSA2MyAyMjYgNDkuNCAyNTZjMTMuNiAzMCA0MC4yIDcyLjUgNzguNiAxMDguM0MxNjkuMiA0MDIuNCAyMjIuOCA0MzIgMjg4IDQzMnMxMTguOC0yOS42IDE1OS45LTY3LjdDNDg2LjQgMzI4LjUgNTEzIDI4NiA1MjYuNiAyNTZjLTEzLjYtMzAtNDAuMi03Mi41LTc4LjYtMTA4LjNDNDA2LjggMTA5LjYgMzUzLjIgODAgMjg4IDgwek05NS40IDExMi42QzE0Mi41IDY4LjggMjA3LjIgMzIgMjg4IDMyczE0NS41IDM2LjggMTkyLjYgODAuNmM0Ni44IDQzLjUgNzguMSA5NS40IDkzIDEzMS4xYzMuMyA3LjkgMy4zIDE2LjcgMCAyNC42Yy0xNC45IDM1LjctNDYuMiA4Ny43LTkzIDEzMS4xQzQzMy41IDQ0My4yIDM2OC44IDQ4MCAyODggNDgwcy0xNDUuNS0zNi44LTE5Mi42LTgwLjZDNDguNiAzNTYgMTcuMyAzMDQgMi41IDI2OC4zYy0zLjMtNy45LTMuMy0xNi43IDAtMjQuNkMxNy4zIDIwOCA0OC42IDE1NiA5NS40IDExMi42ek0yODggMzM2YzQ0LjIgMCA4MC0zNS44IDgwLTgwcy0zNS44LTgwLTgwLTgwYy0uNyAwLTEuMyAwLTIgMGMxLjMgNS4xIDIgMTAuNSAyIDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0Yy01LjUgMC0xMC45LS43LTE2LTJjMCAuNyAwIDEuMyAwIDJjMCA0NC4yIDM1LjggODAgODAgODB6bTAtMjA4YTEyOCAxMjggMCAxIDEgMCAyNTYgMTI4IDEyOCAwIDEgMSAwLTI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUFuZ3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGEyMDggMjA4IDAgMSAxIDAgNDE2IDIwOCAyMDggMCAxIDEgMC00MTZ6bTAgNDY0QTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnptNzIuNC0xMTguNWM5LjctOSAxMC4yLTI0LjIgMS4yLTMzLjlDMzE1LjMgMzQ0LjMgMjkwLjYgMzI4IDI1NiAzMjhzLTU5LjMgMTYuMy03My41IDMxLjZjLTkgOS43LTguNSAyNC45IDEuMiAzMy45czI0LjkgOC41IDMzLjktMS4yYzcuNC03LjkgMjAtMTYuNCAzOC41LTE2LjRzMzEuMSA4LjUgMzguNSAxNi40YzkgOS43IDI0LjIgMTAuMiAzMy45IDEuMnpNMTc2LjQgMjcyYzE3LjcgMCAzMi0xNC4zIDMyLTMyYzAtMS41LS4xLTMtLjMtNC40bDEwLjkgMy42YzguNCAyLjggMTcuNC0xLjcgMjAuMi0xMC4xcy0xLjctMTcuNC0xMC4xLTIwLjJsLTk2LTMyYy04LjQtMi44LTE3LjQgMS43LTIwLjIgMTAuMXMxLjcgMTcuNCAxMC4xIDIwLjJsMzAuNyAxMC4yYy01LjggNS44LTkuMyAxMy44LTkuMyAyMi42YzAgMTcuNyAxNC4zIDMyIDMyIDMyem0xOTItMzJjMC04LjktMy42LTE3LTkuNS0yMi44bDMwLjItMTAuMWM4LjQtMi44IDEyLjktMTEuOSAxMC4xLTIwLjJzLTExLjktMTIuOS0yMC4yLTEwLjFsLTk2IDMyYy04LjQgMi44LTEyLjkgMTEuOS0xMC4xIDIwLjJzMTEuOSAxMi45IDIwLjIgMTAuMWwxMS43LTMuOWMtLjIgMS41LS4zIDMuMS0uMyA0LjdjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZURpenp5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yNTYgMzJhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6TTEwMyAxMzVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMjMgMjMgMjMtMjNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC0yMyAyMyAyMyAyM2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC0yMy0yMy0yMyAyM2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWwyMy0yMy0yMy0yM2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6bTE5MiAwYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDIzIDIzIDIzLTIzYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtMjMgMjMgMjMgMjNjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtMjMtMjMtMjMgMjNjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMjMtMjMtMjMtMjNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlRmx1c2hlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDEgNDggMjU2YTIwOCAyMDggMCAxIDEgNDE2IDB6TTI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMHpNMTYwLjQgMjQ4YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMjE2LTI0YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6TTE5MiAzMzZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMzIwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDE5MnpNMTYwIDE3NmE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6bTAgMTI4YTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwem0xNDQtODBhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptMTI4IDBhODAgODAgMCAxIDAgLTE2MCAwIDgwIDgwIDAgMSAwIDE2MCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlRnJvd25PcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2ek0xODIuNCAzODIuNWMtMTIuNCA1LjItMjYuNS00LjEtMjEuMS0xNi40YzE2LTM2LjYgNTIuNC02Mi4xIDk0LjgtNjIuMXM3OC44IDI1LjYgOTQuOCA2Mi4xYzUuNCAxMi4zLTguNyAyMS42LTIxLjEgMTYuNGMtMjIuNC05LjUtNDcuNC0xNC44LTczLjctMTQuOHMtNTEuMyA1LjMtNzMuNyAxNC44ek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUZyb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2ek0xNzQuNiAzODQuMWMtNC41IDEyLjUtMTguMiAxOC45LTMwLjcgMTQuNHMtMTguOS0xOC4yLTE0LjQtMzAuN0MxNDYuOSAzMTkuNCAxOTguOSAyODggMjU2IDI4OHMxMDkuMSAzMS40IDEyNi42IDc5LjljNC41IDEyLjUtMiAyNi4yLTE0LjQgMzAuN3MtMjYuMi0yLTMwLjctMTQuNEMzMjguMiAzNTguNSAyOTcuMiAzMzYgMjU2IDMzNnMtNzIuMiAyMi41LTgxLjQgNDguMXpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmltYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGEyMDggMjA4IDAgMSAwIDAgNDE2IDIwOCAyMDggMCAxIDAgMC00MTZ6TTUxMiAyNTZBMjU2IDI1NiAwIDEgMSAwIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwek0xNjggMzIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDhWMzIwaC04em00MCA0OGgzMlYzMjBIMjA4djQ4em05NiAwVjMyMEgyNzJ2NDhoMzJ6bTMyIDBoOGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGgtOHY0OHpNMTY4IDI4OEgzNDRjMzAuOSAwIDU2IDI1LjEgNTYgNTZzLTI1LjEgNTYtNTYgNTZIMTY4Yy0zMC45IDAtNTYtMjUuMS01Ni01NnMyNS4xLTU2IDU2LTU2em0tMjMuNi04MGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlR3JpbkJlYW1Td2VhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzYuOCAxMjYuM0M0OTcuMSAxMjAuOCA1MTIgMTAyLjcgNTEyIDgxYzAtMjAtMjguNi02MC40LTQxLjYtNzcuN2MtMy4yLTQuNC05LjYtNC40LTEyLjggMGMtOS41IDEyLjYtMjcuMSAzNy4yLTM2IDU3LjVjLS4zIC43LS42IDEuNC0uOSAyLjFDNDE3LjggNjkuNyA0MTYgNzYgNDE2IDgxYzAgMjYgMjEuNSA0NyA0OCA0N2M0LjQgMCA4LjctLjYgMTIuOC0xLjd6TTM5NS40IDQxLjJDMzU1LjMgMTUuMiAzMDcuNCAwIDI1NiAwQzExNC42IDAgMCAxMTQuNiAwIDI1NlMxMTQuNiA1MTIgMjU2IDUxMnMyNTYtMTE0LjYgMjU2LTI1NmMwLTM1LjgtNy4zLTY5LjktMjAuNi0xMDAuOGMtOC42IDMuMS0xNy44IDQuOC0yNy40IDQuOGMtOC45IDAtMTcuNi0xLjUtMjUuNy00LjJDNDU0LjcgMTg1LjUgNDY0IDIxOS43IDQ2NCAyNTZjMCAxMTQuOS05My4xIDIwOC0yMDggMjA4UzQ4IDM3MC45IDQ4IDI1NlMxNDEuMSA0OCAyNTYgNDhjNDguNyAwIDkzLjQgMTYuNyAxMjguOSA0NC43Yy0uNi0zLjgtLjktNy43LS45LTExLjdjMC0xMS40IDMuOC0yMi40IDcuMS0zMC41YzEuMy0zLjEgMi43LTYuMiA0LjMtOS4zek0zNzUgMzM2LjVjMTAuNC0xNi4xLTYuOC0zMi41LTI1LjUtMjguMWMtMjguOSA2LjgtNjAuNSAxMC41LTkzLjYgMTAuNXMtNjQuNy0zLjctOTMuNi0xMC41Yy0xOC43LTQuNC0zNS45IDEyLTI1LjUgMjguMWMyNC42IDM4LjEgNjguNyA2My41IDExOS4xIDYzLjVzOTQuNS0yNS40IDExOS4xLTYzLjV6TTIxNy42IDIyOC44bDAgMCAwIDAgMCAwYzIuMSAyLjggNS43IDMuOSA4LjkgMi44czUuNS00LjEgNS41LTcuNmMwLTE3LjktNi43LTM1LjYtMTYuNi00OC44Yy05LjgtMTMtMjMuOS0yMy4yLTM5LjQtMjMuMnMtMjkuNiAxMC4yLTM5LjQgMjMuMkMxMjYuNyAxODguNCAxMjAgMjA2LjEgMTIwIDIyNGMwIDMuNCAyLjIgNi41IDUuNSA3LjZzNi45IDAgOC45LTIuOGwwIDAgMCAwIDAgMCAuMi0uMmMuMi0uMiAuNC0uNSAuNy0uOWMuNi0uOCAxLjYtMiAyLjgtMy40YzIuNS0yLjggNi02LjYgMTAuMi0xMC4zYzguOC03LjggMTguOC0xNCAyNy43LTE0czE4LjkgNi4yIDI3LjcgMTRjNC4yIDMuNyA3LjcgNy41IDEwLjIgMTAuM2MxLjIgMS40IDIuMiAyLjYgMi44IDMuNGMuMyAuNCAuNiAuNyAuNyAuOWwuMiAuMiAwIDB6bTE2MCAwbDAgMCAwIDBjMi4xIDIuOCA1LjcgMy45IDguOSAyLjhzNS41LTQuMSA1LjUtNy42YzAtMTcuOS02LjctMzUuNi0xNi42LTQ4LjhjLTkuOC0xMy0yMy45LTIzLjItMzkuNC0yMy4ycy0yOS42IDEwLjItMzkuNCAyMy4yQzI4Ni43IDE4OC40IDI4MCAyMDYuMSAyODAgMjI0YzAgMy40IDIuMiA2LjUgNS41IDcuNnM2LjkgMCA4LjktMi44bDAgMCAwIDAgMCAwIC4yLS4yYy4yLS4yIC40LS41IC43LS45Yy42LS44IDEuNi0yIDIuOC0zLjRjMi41LTIuOCA2LTYuNiAxMC4yLTEwLjNjOC44LTcuOCAxOC44LTE0IDI3LjctMTRzMTguOSA2LjIgMjcuNyAxNGM0LjIgMy43IDcuNyA3LjUgMTAuMiAxMC4zYzEuMiAxLjQgMi4yIDIuNiAyLjggMy40Yy4zIC40IC42IC43IC43IC45bC4yIC4yIDAgMCAwIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmluQmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzQ5LjUgNTIuNGMxOC43LTQuNCAzNS45IDEyIDI1LjUgMjguMUMzNTAuNCAzNzQuNiAzMDYuMyA0MDAgMjU1LjkgNDAwcy05NC41LTI1LjQtMTE5LjEtNjMuNWMtMTAuNC0xNi4xIDYuOC0zMi41IDI1LjUtMjguMWMyOC45IDYuOCA2MC41IDEwLjUgOTMuNiAxMC41czY0LjctMy43IDkzLjYtMTAuNXpNMjE3LjYgMjI4LjhsMCAwIDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMHptMTYwIDBsMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwIDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUdyaW5IZWFydHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTM0OS41IDUyLjRjMTguNy00LjQgMzUuOSAxMiAyNS41IDI4LjFDMzUwLjQgMzc0LjYgMzA2LjMgNDAwIDI1NS45IDQwMHMtOTQuNS0yNS40LTExOS4xLTYzLjVjLTEwLjQtMTYuMSA2LjgtMzIuNSAyNS41LTI4LjFjMjguOSA2LjggNjAuNSAxMC41IDkzLjYgMTAuNXM2NC43LTMuNyA5My42LTEwLjV6TTIxNS4zIDEzNy4xYzE3LjggNC44IDI4LjQgMjMuMSAyMy42IDQwLjhsLTE3LjQgNjVjLTIuMyA4LjUtMTEuMSAxMy42LTE5LjYgMTEuM2wtNjUuMS0xNy40Yy0xNy44LTQuOC0yOC40LTIzLjEtMjMuNi00MC44czIzLjEtMjguNCA0MC44LTIzLjZsMTYuMSA0LjMgNC4zLTE2LjFjNC44LTE3LjggMjMuMS0yOC40IDQwLjgtMjMuNnptMTIyLjMgMjMuNmw0LjMgMTYuMSAxNi4xLTQuM2MxNy44LTQuOCAzNi4xIDUuOCA0MC44IDIzLjZzLTUuOCAzNi4xLTIzLjYgNDAuOGwtNjUuMSAxNy40Yy04LjUgMi4zLTE3LjMtMi44LTE5LjYtMTEuM2wtMTcuNC02NWMtNC44LTE3LjggNS44LTM2LjEgMjMuNi00MC44czM2LjEgNS44IDQwLjkgMjMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUdyaW5TcXVpbnRUZWFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjYuOCAxNC4yQzQ0Ni01IDQ3Ny41LTQuNiA0OTcuMSAxNC45czIwIDUxIC43IDcwLjNjLTE0LjggMTQuOC02NS43IDIzLjYtODguMyAyNi43Yy01LjYgLjktMTAuMy0zLjktOS41LTkuNUM0MDMuMyA3OS45IDQxMiAyOSA0MjYuOCAxNC4yek03NSA3NUMxNTguMi04LjMgMjg0LjUtMjIuMiAzODIuMiAzMy4yYy0xLjUgNC44LTIuOSA5LjYtNC4xIDE0LjNjLTMuMSAxMi4yLTUuNSAyNC42LTcuMyAzNWMtODAuOC01My42LTE5MC43LTQ0LjgtMjYxLjkgMjYuNEMzNy43IDE4MC4xIDI4LjkgMjkwIDgyLjUgMzcwLjhjLTEwLjUgMS44LTIyLjkgNC4yLTM1IDcuM2MtNC43IDEuMi05LjUgMi41LTE0LjMgNC4xQy0yMi4yIDI4NC41LTguMiAxNTguMiA3NSA3NXptMzg5LjYgNTguOWM0LjctMS4yIDkuNS0yLjUgMTQuMy00LjFDNTM0LjIgMjI3LjUgNTIwLjIgMzUzLjggNDM3IDQzN2MtODMuMiA4My4yLTIwOS41IDk3LjItMzA3LjIgNDEuOGMxLjUtNC44IDIuOC05LjYgNC0xNC4zYzMuMS0xMi4yIDUuNS0yNC42IDcuMy0zNWM4MC44IDUzLjYgMTkwLjcgNDQuOCAyNjEuOS0yNi40YzcxLjItNzEuMiA4MC0xODEuMSAyNi40LTI2MS45YzEwLjUtMS44IDIyLjktNC4yIDM1LTcuM3ptLTEwNS40IDkzYzEwLjEtMTYuMyAzMy45LTE2LjkgMzcuOSAxLjljOS41IDQ0LjQtMy43IDkzLjUtMzkuMyAxMjkuMXMtODQuOCA0OC44LTEyOS4xIDM5LjNjLTE4LjctNC0xOC4yLTI3LjgtMS45LTM3LjljMjUuMi0xNS43IDUwLjItMzUuNCA3My42LTU4LjhzNDMuMS00OC40IDU4LjgtNzMuNnpNOTIgMjY1LjNsOTcuNC0yOS43YzExLjYtMy41IDIyLjUgNy4zIDE5IDE5bC0yOS43IDk3LjRjLTIuNiA4LjYtMTMuNCAxMS4zLTE5LjggNC45Yy0yLTItMy4yLTQuNi0zLjQtNy4zbC01LjEtNTYuMS01Ni4xLTUuMWMtMi44LS4zLTUuNC0xLjUtNy4zLTMuNGMtNi4zLTYuMy0zLjYtMTcuMiA0LjktMTkuOHptMTkzLTE3OC4yYzIgMiAzLjIgNC42IDMuNCA3LjNsNS4xIDU2LjEgNTYuMSA1LjFjMi44IC4zIDUuNCAxLjUgNy4zIDMuNGM2LjMgNi4zIDMuNiAxNy4yLTQuOSAxOS44bC05Ny40IDI5LjdjLTExLjYgMy41LTIyLjUtNy4zLTE5LTE5TDI2NS4zIDkyYzIuNi04LjYgMTMuNC0xMS4zIDE5LjgtNC45ek0xNC45IDQ5Ny4xYy0xOS42LTE5LjYtMjAtNTEtLjctNzAuM0MyOSA0MTIgNzkuOCA0MDMuMiAxMDIuNCA0MDAuMWM1LjYtLjkgMTAuMyAzLjkgOS41IDkuNWMtMy4yIDIyLjUtMTEuOSA3My41LTI2LjcgODguM0M2NiA1MTcgMzQuNSA1MTYuNiAxNC45IDQ5Ny4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlR3JpblNxdWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzQ5LjUgNTIuNGMxOC43LTQuNCAzNS45IDEyIDI1LjUgMjguMUMzNTAuNCAzNzQuNiAzMDYuMyA0MDAgMjU1LjkgNDAwcy05NC41LTI1LjQtMTE5LjEtNjMuNWMtMTAuNC0xNi4xIDYuOC0zMi41IDI1LjUtMjguMWMyOC45IDYuOCA2MC41IDEwLjUgOTMuNiAxMC41czY0LjctMy43IDkzLjYtMTAuNXptLTIxNi0xNjEuN2w4OS45IDQ3LjljMTAuNyA1LjcgMTAuNyAyMS4xIDAgMjYuOGwtODkuOSA0Ny45Yy03LjkgNC4yLTE3LjUtMS41LTE3LjUtMTAuNWMwLTIuOCAxLTUuNSAyLjgtNy42bDM2LTQzLjItMzYtNDMuMmMtMS44LTIuMS0yLjgtNC44LTIuOC03LjZjMC05IDkuNi0xNC43IDE3LjUtMTAuNXpNMzk2IDE1Ny4xYzAgMi44LTEgNS41LTIuOCA3LjZsLTM2IDQzLjIgMzYgNDMuMmMxLjggMi4xIDIuOCA0LjggMi44IDcuNmMwIDktOS42IDE0LjctMTcuNSAxMC41bC04OS45LTQ3LjljLTEwLjctNS43LTEwLjctMjEuMSAwLTI2LjhsODkuOS00Ny45YzcuOS00LjIgMTcuNSAxLjUgMTcuNSAxMC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlR3JpblN0YXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGEyMDggMjA4IDAgMSAxIDAgNDE2IDIwOCAyMDggMCAxIDEgMC00MTZ6bTAgNDY0QTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTgzLjIgMTMyLjZjLTEuMy0yLjgtNC4xLTQuNi03LjItNC42cy01LjkgMS44LTcuMiA0LjZsLTE2LjYgMzQuNy0zOC4xIDVjLTMuMSAuNC01LjYgMi41LTYuNiA1LjVzLS4xIDYuMiAyLjEgOC4zbDI3LjkgMjYuNS03IDM3LjhjLS42IDMgLjcgNi4xIDMuMiA3LjlzNS44IDIgOC41IC42TDE3NiAyNDAuNWwzMy44IDE4LjNjMi43IDEuNSA2IDEuMyA4LjUtLjZzMy43LTQuOSAzLjItNy45bC03LTM3LjhMMjQyLjQgMTg2YzIuMi0yLjEgMy4xLTUuMyAyLjEtOC4zcy0zLjUtNS4xLTYuNi01LjVsLTM4LjEtNS0xNi42LTM0Ljd6bTE2MCAwYy0xLjMtMi44LTQuMS00LjYtNy4yLTQuNnMtNS45IDEuOC03LjIgNC42bC0xNi42IDM0LjctMzguMSA1Yy0zLjEgLjQtNS42IDIuNS02LjYgNS41cy0uMSA2LjIgMi4xIDguM2wyNy45IDI2LjUtNyAzNy44Yy0uNiAzIC43IDYuMSAzLjIgNy45czUuOCAyIDguNSAuNkwzMzYgMjQwLjVsMzMuOCAxOC4zYzIuNyAxLjUgNiAxLjMgOC41LS42czMuNy00LjkgMy4yLTcuOWwtNy0zNy44TDQwMi40IDE4NmMyLjItMi4xIDMuMS01LjMgMi4xLTguM3MtMy41LTUuMS02LjYtNS41bC0zOC4xLTUtMTYuNi0zNC43em02LjMgMTc1LjhjLTI4LjkgNi44LTYwLjUgMTAuNS05My42IDEwLjVzLTY0LjctMy43LTkzLjYtMTAuNWMtMTguNy00LjQtMzUuOSAxMi0yNS41IDI4LjFjMjQuNiAzOC4xIDY4LjcgNjMuNSAxMTkuMSA2My41czk0LjUtMjUuNCAxMTkuMS02My41YzEwLjQtMTYuMS02LjgtMzIuNS0yNS41LTI4LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmluVGVhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTE2LjEgMzI1LjVjMSAzIDIuMSA2IDMuMyA4LjljMy4zIDguMSA4LjQgMTguNSAxNi41IDI2LjZjMy45IDMuOSA4LjIgNy40IDEyLjcgMTAuM0M1MDYuNCA0NTQuOCA0MTkuOSA1MTIgMzIwIDUxMnMtMTg2LjQtNTcuMi0yMjguNi0xNDAuNmM0LjUtMi45IDguNy02LjMgMTIuNy0xMC4zYzguMS04LjEgMTMuMi0xOC42IDE2LjUtMjYuNmMxLjItMi45IDIuMy01LjkgMy4zLTguOUMxNTIuNSA0MDYuMiAyMjkuNSA0NjQgMzIwIDQ2NHMxNjcuNS01Ny44IDE5Ni4xLTEzOC41ek0zMjAgNDhjLTEwMS40IDAtMTg1LjggNzIuNS0yMDQuMyAxNjguNWMtNi43LTMuMS0xNC4zLTQuMy0yMi4zLTMuMWMtNi44IC45LTE2LjIgMi40LTI2LjYgNC40Qzg1LjMgOTQuNSAxOTEuNiAwIDMyMCAwUzU1NC43IDk0LjUgNTczLjIgMjE3LjdjLTEwLjMtMi0xOS44LTMuNS0yNi42LTQuNGMtOC0xLjItMTUuNyAuMS0yMi4zIDMuMUM1MDUuOCAxMjAuNSA0MjEuNCA0OCAzMjAgNDh6TTc4LjUgMzQxLjFDNjAgMzU2LjcgMzIgMzU1LjUgMTQuMyAzMzcuN2MtMTguNy0xOC43LTE5LjEtNDguOC0uNy02Ny4yYzguNi04LjYgMzAuMS0xNS4xIDUwLjUtMTkuNmMxMy0yLjggMjUuNS00LjggMzMuOS02YzUuNC0uOCA5LjkgMy43IDkgOWMtMy4xIDIxLjUtMTEuNCA3MC4yLTI1LjUgODQuNGMtLjkgMS0xLjkgMS44LTIuOSAyLjd6bTQ4MyAwYy0uOC0uNi0xLjUtMS4zLTIuMy0yYy0uMi0uMi0uNS0uNC0uNy0uN2MtMTQuMS0xNC4xLTIyLjUtNjIuOS0yNS41LTg0LjRjLS44LTUuNCAzLjctOS45IDktOWMxIC4xIDIuMiAuMyAzLjMgLjVjOC4yIDEuMiAxOS4yIDMgMzAuNiA1LjVjMjAuNCA0LjQgNDEuOSAxMC45IDUwLjUgMTkuNmMxOC40IDE4LjQgMTggNDguNS0uNyA2Ny4yYy0xNy43IDE3LjctNDUuNyAxOS02NC4yIDMuNHpNNDM5IDMzNi41QzQxNC40IDM3NC42IDM3MC4zIDQwMCAzMTkuOSA0MDBzLTk0LjUtMjUuNC0xMTkuMS02My41Yy0xMC40LTE2LjEgNi44LTMyLjUgMjUuNS0yOC4xYzI4LjkgNi44IDYwLjUgMTAuNSA5My42IDEwLjVzNjQuNy0zLjcgOTMuNi0xMC41YzE4LjctNC40IDM1LjkgMTIgMjUuNSAyOC4xek0yODEuNiAyMjguOGwwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDAgMCAwem0xNjAgMGwwIDAgMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlR3JpblRvbmd1ZVNxdWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2YzAtMTE0LjktOTMuMS0yMDgtMjA4LTIwOFM0OCAxNDEuMSA0OCAyNTZjMCA4MS43IDQ3LjEgMTUyLjQgMTE1LjcgMTg2LjRjLTIuNC04LjQtMy43LTE3LjMtMy43LTI2LjRWMzkyLjdjLTI0LTE3LjUtNDMuMS00MS40LTU0LjgtNjkuMmMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTljMTIuMy0zLjggMjQuMyA2LjkgMTkuMyAxOC43Yy0xMS44IDI4LTMxLjEgNTItNTUuNCA2OS42VjQxNmMwIDkuMi0xLjMgMTgtMy43IDI2LjRDNDE2LjkgNDA4LjQgNDY0IDMzNy43IDQ2NCAyNTZ6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMTE2LTk4LjljMC05IDkuNi0xNC43IDE3LjUtMTAuNWw4OS45IDQ3LjljMTAuNyA1LjcgMTAuNyAyMS4xIDAgMjYuOGwtODkuOSA0Ny45Yy03LjkgNC4yLTE3LjUtMS41LTE3LjUtMTAuNWMwLTIuOCAxLTUuNSAyLjgtNy42bDM2LTQzLjItMzYtNDMuMmMtMS44LTIuMS0yLjgtNC44LTIuOC03LjZ6bTI2Mi41LTEwLjVjNy45LTQuMiAxNy41IDEuNSAxNy41IDEwLjVjMCAyLjgtMSA1LjUtMi44IDcuNmwtMzYgNDMuMiAzNiA0My4yYzEuOCAyLjEgMi44IDQuOCAyLjggNy42YzAgOS05LjYgMTQuNy0xNy41IDEwLjVsLTg5LjktNDcuOWMtMTAuNy01LjctMTAuNy0yMS4xIDAtMjYuOGw4OS45LTQ3Ljl6TTMyMCA0MTZWMzc4LjZjMC0xNC43LTExLjktMjYuNi0yNi42LTI2LjZoLTJjLTExLjMgMC0yMS4xIDcuOS0yMy42IDE4LjljLTIuOCAxMi42LTIwLjggMTIuNi0yMy42IDBjLTIuNS0xMS4xLTEyLjMtMTguOS0yMy42LTE4LjloLTJjLTE0LjcgMC0yNi42IDExLjktMjYuNiAyNi42VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlR3JpblRvbmd1ZVdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ4LjMgNDQyLjRjMi40LTguNCAzLjctMTcuMyAzLjctMjYuNFYzNjMuNWM4LjgtOCAxNi42LTE3LjEgMjMtMjdjMTAuNC0xNi4xLTYuOC0zMi41LTI1LjUtMjguMWMtMjguOSA2LjgtNjAuNSAxMC41LTkzLjYgMTAuNXMtNjQuNy0zLjctOTMuNi0xMC41Yy0xOC43LTQuNC0zNS45IDEyLTI1LjUgMjguMWM2LjUgMTAgMTQuMyAxOS4xIDIzLjEgMjcuMVY0MTZjMCA5LjIgMS4zIDE4IDMuNyAyNi40Qzk1LjEgNDA4LjQgNDggMzM3LjcgNDggMjU2QzQ4IDE0MS4xIDE0MS4xIDQ4IDI1NiA0OHMyMDggOTMuMSAyMDggMjA4YzAgODEuNy00Ny4xIDE1Mi40LTExNS43IDE4Ni40ek0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTU5LjYgMjIwYzEwLjYgMCAxOS45IDMuOCAyNS40IDkuN2M3LjYgOC4xIDIwLjIgOC41IDI4LjMgLjlzOC41LTIwLjIgLjktMjguM0MxOTkuNyAxODYuOCAxNzkgMTgwIDE1OS42IDE4MHMtNDAuMSA2LjgtNTQuNiAyMi4zYy03LjYgOC4xLTcuMSAyMC43IC45IDI4LjNzMjAuNyA3LjEgMjguMy0uOWM1LjUtNS44IDE0LjgtOS43IDI1LjQtOS43em0xNzYuNyAxMmEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bS0uNC03MmE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6bTAgMTI4YTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwek0zMjAgNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0cy02NC0yOC43LTY0LTY0VjM3OC42YzAtMTQuNyAxMS45LTI2LjYgMjYuNi0yNi42aDJjMTEuMyAwIDIxLjEgNy45IDIzLjYgMTguOWMyLjggMTIuNiAyMC44IDEyLjYgMjMuNiAwYzIuNS0xMS4xIDEyLjMtMTguOSAyMy42LTE4LjloMmMxNC43IDAgMjYuNiAxMS45IDI2LjYgMjYuNlY0MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmluVG9uZ3VlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZjMC0xMTQuOS05My4xLTIwOC0yMDgtMjA4UzQ4IDE0MS4xIDQ4IDI1NmMwIDgxLjcgNDcuMSAxNTIuNCAxMTUuNyAxODYuNGMtMi40LTguNC0zLjctMTcuMy0zLjctMjYuNFYzNjMuNmMtOC45LTgtMTYuNy0xNy4xLTIzLjEtMjcuMWMtMTAuNC0xNi4xIDYuOC0zMi41IDI1LjUtMjguMWMyOC45IDYuOCA2MC41IDEwLjUgOTMuNiAxMC41czY0LjctMy43IDkzLjYtMTAuNWMxOC43LTQuNCAzNS45IDEyIDI1LjUgMjguMWMtNi40IDkuOS0xNC4yIDE5LTIzIDI3VjQxNmMwIDkuMi0xLjMgMTgtMy43IDI2LjRDNDE2LjkgNDA4LjQgNDY0IDMzNy43IDQ2NCAyNTZ6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMTc2LjQtODBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMzIwIDQxNlYzNzguNmMwLTE0LjctMTEuOS0yNi42LTI2LjYtMjYuNmgtMmMtMTEuMyAwLTIxLjEgNy45LTIzLjYgMTguOWMtMi44IDEyLjYtMjAuOCAxMi42LTIzLjYgMGMtMi41LTExLjEtMTIuMy0xOC45LTIzLjYtMTguOWgtMmMtMTQuNyAwLTI2LjYgMTEuOS0yNi42IDI2LjZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmluV2lkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzQ5LjUgNTIuNGMxOC43LTQuNCAzNS45IDEyIDI1LjUgMjguMUMzNTAuNCAzNzQuNiAzMDYuMyA0MDAgMjU1LjkgNDAwcy05NC41LTI1LjQtMTE5LjEtNjMuNWMtMTAuNC0xNi4xIDYuOC0zMi41IDI1LjUtMjguMWMyOC45IDYuOCA2MC41IDEwLjUgOTMuNiAxMC41czY0LjctMy43IDkzLjYtMTAuNXpNMjI0IDE5MmMwIDM1LjMtMTQuMyA2NC0zMiA2NHMtMzItMjguNy0zMi02NHMxNC4zLTY0IDMyLTY0czMyIDI4LjcgMzIgNjR6bTk2IDY0Yy0xNy43IDAtMzItMjguNy0zMi02NHMxNC4zLTY0IDMyLTY0czMyIDI4LjcgMzIgNjRzLTE0LjMgNjQtMzIgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmluV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzQ5LjUgNTIuNGMxOC43LTQuNCAzNS45IDEyIDI1LjUgMjguMUMzNTAuNCAzNzQuNiAzMDYuMyA0MDAgMjU1LjkgNDAwcy05NC41LTI1LjQtMTE5LjEtNjMuNWMtMTAuNC0xNi4xIDYuOC0zMi41IDI1LjUtMjguMWMyOC45IDYuOCA2MC41IDEwLjUgOTMuNiAxMC41czY0LjctMy43IDkzLjYtMTAuNXpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE2NS44IDIxLjdjLTcuNiA4LjEtMjAuMiA4LjUtMjguMyAuOXMtOC41LTIwLjItLjktMjguM2MxNC41LTE1LjUgMzUuMi0yMi4zIDU0LjYtMjIuM3M0MC4xIDYuOCA1NC42IDIyLjNjNy42IDguMSA3LjEgMjAuNy0uOSAyOC4zcy0yMC43IDcuMS0yOC4zLS45Yy01LjUtNS44LTE0LjgtOS43LTI1LjQtOS43cy0xOS45IDMuOC0yNS40IDkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUdyaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTM0OS41IDUyLjRjMTguNy00LjQgMzUuOSAxMiAyNS41IDI4LjFDMzUwLjQgMzc0LjYgMzA2LjMgNDAwIDI1NS45IDQwMHMtOTQuNS0yNS40LTExOS4xLTYzLjVjLTEwLjQtMTYuMSA2LjgtMzIuNSAyNS41LTI4LjFjMjguOSA2LjggNjAuNSAxMC41IDkzLjYgMTAuNXM2NC43LTMuNyA5My42LTEwLjV6TTE0NC40IDIwOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlS2lzc0JlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTMwNC43IDQxLjdjNC4zIDUuMSA3LjMgMTEuNCA3LjMgMTguM3MtMy4xIDEzLjItNy4zIDE4LjNjLTQuMyA1LjItMTAuMSA5LjctMTYuNyAxMy40Yy0yLjcgMS41LTUuNyAzLTguNyA0LjNjMy4xIDEuMyA2IDIuNyA4LjcgNC4zYzYuNiAzLjcgMTIuNSA4LjIgMTYuNyAxMy40YzQuMyA1LjEgNy4zIDExLjQgNy4zIDE4LjNzLTMuMSAxMy4yLTcuMyAxOC4zYy00LjMgNS4yLTEwLjEgOS43LTE2LjcgMTMuNEMyNzQuNyA0MjcuMSAyNTcuNCA0MzIgMjQwIDQzMmMtMy42IDAtNi44LTIuNS03LjctNnMuNi03LjIgMy44LTlsMCAwIDAgMCAwIDAgMCAwIC4yLS4xYy4yLS4xIC41LS4zIC45LS41Yy44LS41IDItMS4yIDMuNC0yLjFjMi44LTEuOSA2LjUtNC41IDEwLjItNy42YzMuNy0zLjEgNy4yLTYuNiA5LjYtMTAuMWMyLjUtMy41IDMuNS02LjQgMy41LTguNnMtMS01LTMuNS04LjZjLTIuNS0zLjUtNS45LTYuOS05LjYtMTAuMWMtMy43LTMuMS03LjQtNS43LTEwLjItNy42Yy0xLjQtLjktMi42LTEuNi0zLjQtMi4xYy0uNC0uMi0uNy0uNC0uOS0uNWwtLjItLjEgMCAwIDAgMCAwIDBjLTIuNS0xLjQtNC4xLTQuMS00LjEtN3MxLjYtNS42IDQuMS03bDAgMCAwIDAgMCAwIDAgMCAwIDAgLjItLjFjLjItLjEgLjUtLjMgLjktLjVjLjgtLjUgMi0xLjIgMy40LTIuMWMyLjgtMS45IDYuNS00LjUgMTAuMi03LjZjMy43LTMuMSA3LjItNi42IDkuNi0xMC4xYzIuNS0zLjUgMy41LTYuNCAzLjUtOC42cy0xLTUtMy41LTguNmMtMi41LTMuNS01LjktNi45LTkuNi0xMC4xYy0zLjctMy4xLTcuNC01LjctMTAuMi03LjZjLTEuNC0uOS0yLjYtMS42LTMuNC0yLjFjLS40LS4yLS43LS40LS45LS41bC0uMi0uMSAwIDAgMCAwIDAgMGMtMy4yLTEuOC00LjctNS41LTMuOC05czQuMS02IDcuNy02YzE3LjQgMCAzNC43IDQuOSA0Ny45IDEyLjNjNi42IDMuNyAxMi41IDguMiAxNi43IDEzLjR6bS04Ny4xLTY4LjlsMCAwIDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMHptMTYwIDBsMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwIDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUtpc3NXaW5rSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM4LjkgNDQ2LjhjLTI1LjQgMTEtNTMuNCAxNy4yLTgyLjkgMTcuMkMxNDEuMSA0NjQgNDggMzcwLjkgNDggMjU2UzE0MS4xIDQ4IDI1NiA0OHMyMDggOTMuMSAyMDggMjA4YzAgMjIuNC0zLjUgNDMuOS0xMC4xIDY0LjFjMy4xIDQuNSA1LjcgOS40IDcuOCAxNC42YzEyLjctMS42IDI1LjEgLjQgMzYuMiA1YzkuMS0yNi4yIDE0LTU0LjQgMTQtODMuN0M1MTIgMTE0LjYgMzk3LjQgMCAyNTYgMFMwIDExNC42IDAgMjU2UzExNC42IDUxMiAyNTYgNTEyYzM1LjQgMCA2OS4xLTcuMiA5OS43LTIwLjJjLTQuOC01LjUtOC41LTEyLjItMTAuNC0xOS43bC02LjUtMjUuM3pNMjk2IDMxNmMwLTYuOS0zLjEtMTMuMi03LjMtMTguM2MtNC4zLTUuMi0xMC4xLTkuNy0xNi43LTEzLjRDMjU4LjcgMjc2LjkgMjQxLjQgMjcyIDIyNCAyNzJjLTMuNiAwLTYuOCAyLjUtNy43IDZzLjYgNy4yIDMuOCA5bDAgMCAwIDAgMCAwIC4yIC4xYy4yIC4xIC41IC4zIC45IC41Yy44IC41IDIgMS4yIDMuNCAyLjFjMi44IDEuOSA2LjUgNC41IDEwLjIgNy42YzMuNyAzLjEgNy4yIDYuNiA5LjYgMTAuMWMyLjUgMy41IDMuNSA2LjQgMy41IDguNnMtMSA1LTMuNSA4LjZjLTIuNSAzLjUtNS45IDYuOS05LjYgMTAuMWMtMy43IDMuMS03LjQgNS43LTEwLjIgNy42Yy0xLjQgLjktMi42IDEuNi0zLjQgMi4xYy0uNCAuMi0uNyAuNC0uOSAuNWwtLjIgLjEgMCAwIDAgMCAwIDAgMCAwIDAgMGMtMi41IDEuNC00LjEgNC4xLTQuMSA3czEuNiA1LjYgNC4xIDdsMCAwIDAgMCAwIDAgLjIgLjFjLjIgLjEgLjUgLjMgLjkgLjVjLjggLjUgMiAxLjIgMy40IDIuMWMyLjggMS45IDYuNSA0LjUgMTAuMiA3LjZjMy43IDMuMSA3LjIgNi42IDkuNiAxMC4xYzIuNSAzLjUgMy41IDYuNCAzLjUgOC42cy0xIDUtMy41IDguNmMtMi41IDMuNS01LjkgNi45LTkuNiAxMC4xYy0zLjcgMy4xLTcuNCA1LjctMTAuMiA3LjZjLTEuNCAuOS0yLjYgMS42LTMuNCAyLjFjLS40IC4yLS43IC40LS45IC41bC0uMiAuMSAwIDAgMCAwIDAgMCAwIDBjLTMuMiAxLjgtNC43IDUuNS0zLjggOXM0LjEgNiA3LjcgNmMxNy40IDAgMzQuNy00LjkgNDcuOS0xMi4zYzYuNi0zLjcgMTIuNS04LjIgMTYuNy0xMy40YzQuMy01LjEgNy4zLTExLjQgNy4zLTE4LjNzLTMuMS0xMy4yLTcuMy0xOC4zYy00LjMtNS4yLTEwLjEtOS43LTE2LjctMTMuNGMtMi43LTEuNS01LjctMy04LjctNC4zYzMuMS0xLjMgNi0yLjcgOC43LTQuM2M2LjYtMy43IDEyLjUtOC4yIDE2LjctMTMuNGM0LjMtNS4xIDcuMy0xMS40IDcuMy0xOC4zek0xNzYuNCAyNDBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0xNTkuMy0yMGMxMC42IDAgMTkuOSAzLjggMjUuNCA5LjdjNy42IDguMSAyMC4yIDguNSAyOC4zIC45czguNS0yMC4yIC45LTI4LjNDMzc1LjcgMTg2LjggMzU1IDE4MCAzMzUuNiAxODBzLTQwLjEgNi44LTU0LjYgMjIuM2MtNy42IDguMS03LjEgMjAuNyAuOSAyOC4zczIwLjcgNy4xIDI4LjMtLjljNS41LTUuOCAxNC44LTkuNyAyNS40LTkuN3pNNDM0IDM1Mi4zYy02LTIzLjItMjguOC0zNy01MS4xLTMwLjhzLTM1LjQgMzAuMS0yOS41IDUzLjRsMjIuOSA4OS4zYzIuMiA4LjcgMTEuMiAxMy45IDE5LjggMTEuNGw4NC45LTIzLjhjMjIuMi02LjIgMzUuNC0zMC4xIDI5LjUtNTMuNHMtMjguOC0zNy01MS4xLTMwLjhsLTIwLjIgNS42LTUuNC0yMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUtpc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTMwNC43IDI1LjdjNC4zIDUuMSA3LjMgMTEuNCA3LjMgMTguM3MtMy4xIDEzLjItNy4zIDE4LjNjLTQuMyA1LjItMTAuMSA5LjctMTYuNyAxMy40Yy0yLjcgMS41LTUuNyAzLTguNyA0LjNjMy4xIDEuMyA2IDIuNyA4LjcgNC4zYzYuNiAzLjcgMTIuNSA4LjIgMTYuNyAxMy40YzQuMyA1LjEgNy4zIDExLjQgNy4zIDE4LjNzLTMuMSAxMy4yLTcuMyAxOC4zYy00LjMgNS4yLTEwLjEgOS43LTE2LjcgMTMuNEMyNzQuNyA0MTEuMSAyNTcuNCA0MTYgMjQwIDQxNmMtMy42IDAtNi44LTIuNS03LjctNnMuNi03LjIgMy44LTlsMCAwIDAgMCAwIDAgMCAwIC4yLS4xYy4yLS4xIC41LS4zIC45LS41Yy44LS41IDItMS4yIDMuNC0yLjFjMi44LTEuOSA2LjUtNC41IDEwLjItNy42YzMuNy0zLjEgNy4yLTYuNiA5LjYtMTAuMWMyLjUtMy41IDMuNS02LjQgMy41LTguNnMtMS01LTMuNS04LjZjLTIuNS0zLjUtNS45LTYuOS05LjYtMTAuMWMtMy43LTMuMS03LjQtNS43LTEwLjItNy42Yy0xLjQtLjktMi42LTEuNi0zLjQtMi4xbC0uOC0uNS0uMS0uMS0uMi0uMSAwIDAgMCAwIDAgMGMtMi41LTEuNC00LjEtNC4xLTQuMS03czEuNi01LjYgNC4xLTdsMCAwIDAgMCAwIDAgMCAwIDAgMCAuMi0uMWMuMi0uMSAuNS0uMyAuOS0uNWMuOC0uNSAyLTEuMiAzLjQtMi4xYzIuOC0xLjkgNi41LTQuNSAxMC4yLTcuNmMzLjctMy4xIDcuMi02LjYgOS42LTEwLjFjMi41LTMuNSAzLjUtNi40IDMuNS04LjZzLTEtNS0zLjUtOC42Yy0yLjUtMy41LTUuOS02LjktOS42LTEwLjFjLTMuNy0zLjEtNy40LTUuNy0xMC4yLTcuNmMtMS40LS45LTIuNi0xLjYtMy40LTIuMWMtLjQtLjItLjctLjQtLjktLjVsLS4yLS4xIDAgMCAwIDAgMCAwYy0zLjItMS44LTQuNy01LjUtMy44LTlzNC4xLTYgNy43LTZjMTcuNCAwIDM0LjcgNC45IDQ3LjkgMTIuM2M2LjYgMy43IDEyLjUgOC4yIDE2LjcgMTMuNHpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VMYXVnaEJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTEzMC43IDU3LjljLTQuMi0xMy42IDcuMS0yNS45IDIxLjMtMjUuOUgzNjQuNWMxNC4yIDAgMjUuNSAxMi40IDIxLjMgMjUuOUMzNjkgMzY4LjQgMzE4LjIgNDA4IDI1OC4yIDQwOHMtMTEwLjgtMzkuNi0xMjcuNS05NC4xem04Ni45LTg1LjFsMCAwIDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMHptMTYwIDBsMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwIDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUxhdWdoU3F1aW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xMzAuNyA1Ny45Yy00LjItMTMuNiA3LjEtMjUuOSAyMS4zLTI1LjlIMzY0LjVjMTQuMiAwIDI1LjUgMTIuNCAyMS4zIDI1LjlDMzY5IDM2OC40IDMxOC4yIDQwOCAyNTguMiA0MDhzLTExMC44LTM5LjYtMTI3LjUtOTQuMXptMi44LTE4My4zbDg5LjkgNDcuOWMxMC43IDUuNyAxMC43IDIxLjEgMCAyNi44bC04OS45IDQ3LjljLTcuOSA0LjItMTcuNS0xLjUtMTcuNS0xMC41YzAtMi44IDEtNS41IDIuOC03LjZsMzYtNDMuMi0zNi00My4yYy0xLjgtMi4xLTIuOC00LjgtMi44LTcuNmMwLTkgOS42LTE0LjcgMTcuNS0xMC41ek0zOTYgMTQxLjFjMCAyLjgtMSA1LjUtMi44IDcuNmwtMzYgNDMuMiAzNiA0My4yYzEuOCAyLjEgMi44IDQuOCAyLjggNy42YzAgOS05LjYgMTQuNy0xNy41IDEwLjVsLTg5LjktNDcuOWMtMTAuNy01LjctMTAuNy0yMS4xIDAtMjYuOGw4OS45LTQ3LjljNy45LTQuMiAxNy41IDEuNSAxNy41IDEwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VMYXVnaFdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTEzMC43IDU3LjljLTQuMi0xMy42IDcuMS0yNS45IDIxLjMtMjUuOUgzNjQuNWMxNC4yIDAgMjUuNSAxMi40IDIxLjMgMjUuOUMzNjkgMzY4LjQgMzE4LjIgNDA4IDI1OC4yIDQwOHMtMTEwLjgtMzkuNi0xMjcuNS05NC4xek0xNDQuNCAxOTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTY1LjggMjEuN2MtNy42IDguMS0yMC4yIDguNS0yOC4zIC45cy04LjUtMjAuMi0uOS0yOC4zYzE0LjUtMTUuNSAzNS4yLTIyLjMgNTQuNi0yMi4zczQwLjEgNi44IDU0LjYgMjIuM2M3LjYgOC4xIDcuMSAyMC43LS45IDI4LjNzLTIwLjcgNy4xLTI4LjMtLjljLTUuNS01LjgtMTQuOC05LjctMjUuNC05LjdzLTE5LjkgMy44LTI1LjQgOS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlTGF1Z2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTEzMC43IDU3LjljLTQuMi0xMy42IDcuMS0yNS45IDIxLjMtMjUuOUgzNjQuNWMxNC4yIDAgMjUuNSAxMi40IDIxLjMgMjUuOUMzNjkgMzY4LjQgMzE4LjIgNDA4IDI1OC4yIDQwOHMtMTEwLjgtMzkuNi0xMjcuNS05NC4xek0xNDQuNCAxOTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZU1laEJsYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGEyMDggMjA4IDAgMSAwIDAgNDE2IDIwOCAyMDggMCAxIDAgMC00MTZ6TTUxMiAyNTZBMjU2IDI1NiAwIDEgMSAwIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZU1laCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDEgNDggMjU2YTIwOCAyMDggMCAxIDEgNDE2IDB6TTI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMHpNMTc2LjQgMjQwYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMTkyLTMyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTE4NCAzMjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMzI4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDE4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZVJvbGxpbmdFeWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGEyMDggMjA4IDAgMSAxIDAgNDE2IDIwOCAyMDggMCAxIDEgMC00MTZ6bTAgNDY0QTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTY4IDM3NmMwIDEzLjMgMTAuNyAyNCAyNCAyNEgzMjBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTkyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptLTgtMTA0Yy0yNi41IDAtNDgtMjEuNS00OC00OGMwLTE0LjMgNi4zLTI3LjIgMTYuMi0zNmMtLjIgMS4zLS4yIDIuNi0uMiA0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC0xLjQtLjEtMi43LS4yLTRjMTAgOC44IDE2LjIgMjEuNyAxNi4yIDM2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4em0wIDMyYTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwem0xOTItMzJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4YzAtMTQuMyA2LjMtMjcuMiAxNi4yLTM2Yy0uMiAxLjMtLjIgMi42LS4yIDRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTEuNC0uMS0yLjctLjItNGMxMCA4LjggMTYuMiAyMS43IDE2LjIgMzZjMCAyNi41LTIxLjUgNDgtNDggNDh6bTAgMzJhODAgODAgMCAxIDAgMC0xNjAgODAgODAgMCAxIDAgMCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VTYWRDcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDQwNi4xVjI4OGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY0NDAuNmMtMjguNyAxNS02MS40IDIzLjQtOTYgMjMuNHMtNjcuMy04LjUtOTYtMjMuNFYyODhjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWNDA2LjFDNzIuNiAzNjguMiA0OCAzMTUgNDggMjU2QzQ4IDE0MS4xIDE0MS4xIDQ4IDI1NiA0OHMyMDggOTMuMSAyMDggMjA4YzAgNTktMjQuNiAxMTIuMi02NCAxNTAuMXpNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE1OS42IDIyMGMxMC42IDAgMTkuOSAzLjggMjUuNCA5LjdjNy42IDguMSAyMC4yIDguNSAyOC4zIC45czguNS0yMC4yIC45LTI4LjNDMTk5LjcgMTg2LjggMTc5IDE4MCAxNTkuNiAxODBzLTQwLjEgNi44LTU0LjYgMjIuM2MtNy42IDguMS03LjEgMjAuNyAuOSAyOC4zczIwLjcgNy4xIDI4LjMtLjljNS41LTUuOCAxNC44LTkuNyAyNS40LTkuN3ptMTY2LjYgOS43YzUuNS01LjggMTQuOC05LjcgMjUuNC05LjdzMTkuOSAzLjggMjUuNCA5LjdjNy42IDguMSAyMC4yIDguNSAyOC4zIC45czguNS0yMC4yIC45LTI4LjNDMzkxLjcgMTg2LjggMzcxIDE4MCAzNTEuNiAxODBzLTQwLjEgNi44LTU0LjYgMjIuM2MtNy42IDguMS03LjEgMjAuNyAuOSAyOC4zczIwLjcgNy4xIDI4LjMtLjl6TTIwOCAzMjB2MzJjMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OFYzMjBjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VTYWRUZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NS45IDQ0OGMtMzUtLjEtNjUuNS0yMi42LTc2LTU0LjZDNjcuNiAzNTYuOCA0OCAzMDguNyA0OCAyNTZDNDggMTQxLjEgMTQxLjEgNDggMjU2IDQ4czIwOCA5My4xIDIwOCAyMDhzLTkzLjEgMjA4LTIwOCAyMDhjLTI4LjQgMC01NS41LTUuNy04MC4xLTE2ek0wIDI1NmEyNTYgMjU2IDAgMSAwIDUxMiAwQTI1NiAyNTYgMCAxIDAgMCAyNTZ6TTEyOCAzNjljMCAyNiAyMS41IDQ3IDQ4IDQ3czQ4LTIxIDQ4LTQ3YzAtMjAtMjguNC02MC40LTQxLjYtNzcuN2MtMy4yLTQuNC05LjYtNC40LTEyLjggMEMxNTYuNiAzMDguNiAxMjggMzQ5IDEyOCAzNjl6bTEyOC02NWMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGMzMC43IDAgNTguNyAxMS41IDgwIDMwLjZjOS45IDguOCAyNSA4IDMzLjktMS45czgtMjUtMS45LTMzLjlDMzM4LjMgMzIwLjIgMjk5IDMwNCAyNTYgMzA0em00Ny42LTk2YTMyIDMyIDAgMSAwIDY0IDAgMzIgMzIgMCAxIDAgLTY0IDB6bS0xMjggMzJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlU21pbGVCZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xNzcuNiA2Mi4xQzE5Mi44IDMzNC41IDIxOC44IDM1MiAyNTYgMzUyczYzLjItMTcuNSA3OC40LTMzLjljOS05LjcgMjQuMi0xMC40IDMzLjktMS40czEwLjQgMjQuMiAxLjQgMzMuOWMtMjIgMjMuOC02MCA0OS40LTExMy42IDQ5LjRzLTkxLjctMjUuNS0xMTMuNi00OS40Yy05LTkuNy04LjQtMjQuOSAxLjQtMzMuOXMyNC45LTguNCAzMy45IDEuNHptNDAtODkuM2wwIDAgMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwem0xNjAgMGwwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDAgMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlU21pbGVXaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xNzcuNiA2Mi4xQzE5Mi44IDMzNC41IDIxOC44IDM1MiAyNTYgMzUyczYzLjItMTcuNSA3OC40LTMzLjljOS05LjcgMjQuMi0xMC40IDMzLjktMS40czEwLjQgMjQuMiAxLjQgMzMuOWMtMjIgMjMuOC02MCA0OS40LTExMy42IDQ5LjRzLTkxLjctMjUuNS0xMTMuNi00OS40Yy05LTkuNy04LjQtMjQuOSAxLjQtMzMuOXMyNC45LTguNCAzMy45IDEuNHpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE2NS44IDIxLjdjLTcuNiA4LjEtMjAuMiA4LjUtMjguMyAuOXMtOC41LTIwLjItLjktMjguM2MxNC41LTE1LjUgMzUuMi0yMi4zIDU0LjYtMjIuM3M0MC4xIDYuOCA1NC42IDIyLjNjNy42IDguMSA3LjEgMjAuNy0uOSAyOC4zcy0yMC43IDcuMS0yOC4zLS45Yy01LjUtNS44LTE0LjgtOS43LTI1LjQtOS43cy0xOS45IDMuOC0yNS40IDkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZVNtaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xNzcuNiA2Mi4xQzE5Mi44IDMzNC41IDIxOC44IDM1MiAyNTYgMzUyczYzLjItMTcuNSA3OC40LTMzLjljOS05LjcgMjQuMi0xMC40IDMzLjktMS40czEwLjQgMjQuMiAxLjQgMzMuOWMtMjIgMjMuOC02MCA0OS40LTExMy42IDQ5LjRzLTkxLjctMjUuNS0xMTMuNi00OS40Yy05LTkuNy04LjQtMjQuOSAxLjQtMzMuOXMyNC45LTguNCAzMy45IDEuNHpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VTdXJwcmlzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMTc2LjQtODBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMjU2IDI4OGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZVRpcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xNzYuNSA2NC4zQzE5Ni4xIDMwMi4xIDIyMy44IDI4OCAyNTYgMjg4czU5LjkgMTQuMSA3OS41IDMyLjNDMzU0LjUgMzM4LjEgMzY4IDM2MiAzNjggMzg0YzAgNS40LTIuNyAxMC40LTcuMiAxMy40cy0xMC4yIDMuNC0xNS4yIDEuM2wtMTcuMi03LjVjLTIyLjgtMTAtNDcuNS0xNS4xLTcyLjQtMTUuMXMtNDkuNiA1LjItNzIuNCAxNS4xbC0xNy4yIDcuNWMtNC45IDIuMi0xMC43IDEuNy0xNS4yLTEuM3MtNy4yLTgtNy4yLTEzLjRjMC0yMiAxMy41LTQ1LjkgMzIuNS02My43em0tNDMtMTczLjZsODkuOSA0Ny45YzEwLjcgNS43IDEwLjcgMjEuMSAwIDI2LjhsLTg5LjkgNDcuOWMtNy45IDQuMi0xNy41LTEuNS0xNy41LTEwLjVjMC0yLjggMS01LjUgMi44LTcuNmwzNi00My4yLTM2LTQzLjJjLTEuOC0yLjEtMi44LTQuOC0yLjgtNy42YzAtOSA5LjYtMTQuNyAxNy41LTEwLjV6TTM5NiAxNTcuMWMwIDIuOC0xIDUuNS0yLjggNy42bC0zNiA0My4yIDM2IDQzLjJjMS44IDIuMSAyLjggNC44IDIuOCA3LjZjMCA5LTkuNiAxNC43LTE3LjUgMTAuNWwtODkuOS00Ny45Yy0xMC43LTUuNy0xMC43LTIxLjEgMC0yNi44bDg5LjktNDcuOWM3LjktNC4yIDE3LjUgMS41IDE3LjUgMTAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZUF1ZGlvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ2NEgzMjBjOC44IDAgMTYtNy4yIDE2LTE2VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQ4SDY0Yy04LjggMC0xNiA3LjItMTYgMTZWNDQ4YzAgOC44IDcuMiAxNiAxNiAxNnpNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI5LjVjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdsOTAuNSA5MC41YzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMTkyIDI3MlY0MDBjMCA2LjUtMy45IDEyLjMtOS45IDE0LjhzLTEyLjkgMS4xLTE3LjQtMy41TDEyOS40IDM3NkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNlYzMTJjMC04LjggNy4yLTE2IDE2LTE2aDE3LjRsMzUuMy0zNS4zYzQuNi00LjYgMTEuNS01LjkgMTcuNC0zLjVzOS45IDguMyA5LjkgMTQuOHptODUuOC00YzExLjYgMjAgMTguMiA0My4zIDE4LjIgNjhzLTYuNiA0OC0xOC4yIDY4Yy02LjYgMTEuNS0yMS4zIDE1LjQtMzIuOCA4LjhzLTE1LjQtMjEuMy04LjgtMzIuOGM3LjUtMTIuOSAxMS44LTI3LjkgMTEuOC00NHMtNC4zLTMxLjEtMTEuOC00NGMtNi42LTExLjUtMi43LTI2LjIgOC44LTMyLjhzMjYuMi0yLjcgMzIuOCA4Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjY0YzAtOC44IDcuMi0xNiAxNi0xNkgyMjR2ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoODBWNDQ4YzAgOC44LTcuMiAxNi0xNiAxNkg2NHpNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNTQuNWMwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wyNzQuNyAxOC43QzI2Mi43IDYuNyAyNDYuNSAwIDIyOS41IDBINjR6bTk3IDI4OWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwTDc5IDMwM2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsNDggNDhjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC0zMS0zMSAzMS0zMXpNMjU3IDI1NWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWwzMSAzMS0zMSAzMWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDQ4LTQ4YzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZUV4Y2VsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDQ0OFY2NGMwLTguOCA3LjItMTYgMTYtMTZIMjI0djgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgwVjQ0OGMwIDguOC03LjIgMTYtMTYgMTZINjRjLTguOCAwLTE2LTcuMi0xNi0xNnpNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNTQuNWMwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wyNzQuNyAxOC43QzI2Mi43IDYuNyAyNDYuNSAwIDIyOS41IDBINjR6bTkwLjkgMjMzLjNjLTguMS0xMC41LTIzLjItMTIuMy0zMy43LTQuMnMtMTIuMyAyMy4yLTQuMiAzMy43TDE2MS42IDMyMGwtNDQuNSA1Ny4zYy04LjEgMTAuNS02LjMgMjUuNSA0LjIgMzMuN3MyNS41IDYuMyAzMy43LTQuMkwxOTIgMzU5LjFsMzcuMSA0Ny42YzguMSAxMC41IDIzLjIgMTIuMyAzMy43IDQuMnMxMi4zLTIzLjIgNC4yLTMzLjdMMjIyLjQgMzIwbDQ0LjUtNTcuM2M4LjEtMTAuNSA2LjMtMjUuNS00LjItMzMuN3MtMjUuNS02LjMtMzMuNyA0LjJMMTkyIDI4MC45bC0zNy4xLTQ3LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA0NjRjLTguOCAwLTE2LTcuMi0xNi0xNlY2NGMwLTguOCA3LjItMTYgMTYtMTZIMjI0djgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgwVjQ0OGMwIDguOC03LjIgMTYtMTYgMTZINjR6TTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTU0LjVjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMMjc0LjcgMTguN0MyNjIuNyA2LjcgMjQ2LjUgMCAyMjkuNSAwSDY0em05NiAyNTZhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptNjkuMiA0Ni45Yy0zLTQuMy03LjktNi45LTEzLjItNi45cy0xMC4yIDIuNi0xMy4yIDYuOWwtNDEuMyA1OS43LTExLjktMTkuMWMtMi45LTQuNy04LjEtNy41LTEzLjYtNy41cy0xMC42IDIuOC0xMy42IDcuNWwtNDAgNjRjLTMuMSA0LjktMy4yIDExLjEtLjQgMTYuMnM4LjIgOC4yIDE0IDguMmg0OCAzMiA0MCA3MmM2IDAgMTEuNC0zLjMgMTQuMi04LjZzMi40LTExLjYtMS0xNi41bC03Mi0xMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVMaW5lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA0NjRjLTguOCAwLTE2LTcuMi0xNi0xNlY2NGMwLTguOCA3LjItMTYgMTYtMTZIMjI0djgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgwVjQ0OGMwIDguOC03LjIgMTYtMTYgMTZINjR6TTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTU0LjVjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMMjc0LjcgMTguN0MyNjIuNyA2LjcgMjQ2LjUgMCAyMjkuNSAwSDY0em01NiAyNTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMjY0YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDEyMHptMCA5NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEgyNjRjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlUGRmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ2NGw0OCAwIDAgNDgtNDggMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBMMjI5LjUgMGMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN2w5MC41IDkwLjVjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM0wzODQgMzA0bC00OCAwIDAtMTQ0LTgwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtODBMNjQgNDhjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDM4NGMwIDguOCA3LjIgMTYgMTYgMTZ6TTE3NiAzNTJsMzIgMGMzMC45IDAgNTYgMjUuMSA1NiA1NnMtMjUuMSA1Ni01NiA1NmwtMTYgMCAwIDMyYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtNDggMC04MGMwLTguOCA3LjItMTYgMTYtMTZ6bTMyIDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0xNiAwIDAgNDggMTYgMHptOTYtODBsMzIgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0xMjhjMC04LjggNy4yLTE2IDE2LTE2em0zMiAxMjhjOC44IDAgMTYtNy4yIDE2LTE2bDAtNjRjMC04LjgtNy4yLTE2LTE2LTE2bC0xNiAwIDAgOTYgMTYgMHptODAtMTEyYzAtOC44IDcuMi0xNiAxNi0xNmw0OCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0zMiAwIDAgMzIgMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMzIgMCAwIDQ4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtNjQgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZVBvd2VycG9pbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNDY0Yy04LjggMC0xNi03LjItMTYtMTZWNjRjMC04LjggNy4yLTE2IDE2LTE2SDIyNHY4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg4MFY0NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDY0ek02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE1NC41YzAtMTctNi43LTMzLjMtMTguNy00NS4zTDI3NC43IDE4LjdDMjYyLjcgNi43IDI0Ni41IDAgMjI5LjUgMEg2NHptNzIgMjA4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNFYzMzZ2NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYzNjBoNDRjNDIgMCA3Ni0zNCA3Ni03NnMtMzQtNzYtNzYtNzZIMTM2em02OCAxMDRIMTYwVjI1Nmg0NGMxNS41IDAgMjggMTIuNSAyOCAyOHMtMTIuNSAyOC0yOCAyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZVZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA0NjRjOC44IDAgMTYtNy4yIDE2LTE2VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQ4SDY0Yy04LjggMC0xNiA3LjItMTYgMTZWNDQ4YzAgOC44IDcuMiAxNiAxNiAxNkgzMjB6TTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDIyOS41YzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43bDkwLjUgOTAuNWMxMiAxMiAxOC43IDI4LjMgMTguNyA0NS4zVjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6TTgwIDI4OGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnYxNmw0NC45LTI5LjljMi0xLjMgNC40LTIuMSA2LjgtMi4xYzYuOCAwIDEyLjMgNS41IDEyLjMgMTIuM1YzODcuN2MwIDYuOC01LjUgMTIuMy0xMi4zIDEyLjNjLTIuNCAwLTQuOC0uNy02LjgtMi4xTDI0MCAzNjh2MTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMTEyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVXb3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDQ0OFY2NGMwLTguOCA3LjItMTYgMTYtMTZIMjI0djgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgwVjQ0OGMwIDguOC03LjIgMTYtMTYgMTZINjRjLTguOCAwLTE2LTcuMi0xNi0xNnpNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNTQuNWMwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wyNzQuNyAxOC43QzI2Mi43IDYuNyAyNDYuNSAwIDIyOS41IDBINjR6bTU1IDI0MS4xYy0zLjgtMTIuNy0xNy4yLTE5LjktMjkuOS0xNi4xcy0xOS45IDE3LjItMTYuMSAyOS45bDQ4IDE2MGMzIDEwLjIgMTIuNCAxNy4xIDIzIDE3LjFzMTkuOS03IDIzLTE3LjFsMjUtODMuNCAyNSA4My40YzMgMTAuMiAxMi40IDE3LjEgMjMgMTcuMXMxOS45LTcgMjMtMTcuMWw0OC0xNjBjMy44LTEyLjctMy40LTI2LjEtMTYuMS0yOS45cy0yNi4xIDMuNC0yOS45IDE2LjFsLTI1IDgzLjQtMjUtODMuNGMtMy0xMC4yLTEyLjQtMTcuMS0yMy0xNy4xcy0xOS45IDctMjMgMTcuMWwtMjUgODMuNC0yNS04My40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlWmlwcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjY0YzAtOC44IDcuMi0xNiAxNi0xNmg0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2aDQ4djgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgwVjQ0OGMwIDguOC03LjIgMTYtMTYgMTZINjR6TTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTU0LjVjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMMjc0LjcgMTguN0MyNjIuNyA2LjcgMjQ2LjUgMCAyMjkuNSAwSDY0em00OCAxMTJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDEyOGMtOC44IDAtMTYgNy4yLTE2IDE2em0wIDY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxMjhjLTguOCAwLTE2IDcuMi0xNiAxNnptLTYuMyA3MS44TDgyLjEgMzM1LjljLTEuNCA1LjQtMi4xIDEwLjktMi4xIDE2LjRjMCAzNS4yIDI4LjggNjMuNyA2NCA2My43czY0LTI4LjUgNjQtNjMuN2MwLTUuNS0uNy0xMS4xLTIuMS0xNi40bC0yMy41LTg4LjJjLTMuNy0xNC0xNi40LTIzLjgtMzAuOS0yMy44SDEzNi42Yy0xNC41IDAtMjcuMiA5LjctMzAuOSAyMy44ek0xMjggMzM2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDEyOGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNDY0YzguOCAwIDE2LTcuMiAxNi0xNlYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0OEg2NGMtOC44IDAtMTYgNy4yLTE2IDE2VjQ0OGMwIDguOCA3LjIgMTYgMTYgMTZIMzIwek0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjkuNWMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN2w5MC41IDkwLjVjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM1Y0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDI0QzQ4IDEwLjcgMzcuMyAwIDI0IDBTMCAxMC43IDAgMjRWNjQgMzUwLjUgNDAwdjg4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMzg4bDgwLjMtMjAuMWM0MS4xLTEwLjMgODQuNi01LjUgMTIyLjUgMTMuNGM0NC4yIDIyLjEgOTUuNSAyNC44IDE0MS43IDcuNGwzNC43LTEzYzEyLjUtNC43IDIwLjgtMTYuNiAyMC44LTMwVjY2LjFjMC0yMy0yNC4yLTM4LTQ0LjgtMjcuN2wtOS42IDQuOGMtNDYuMyAyMy4yLTEwMC44IDIzLjItMTQ3LjEgMGMtMzUuMS0xNy42LTc1LjQtMjItMTEzLjUtMTIuNUw0OCA1MlYyNHptMCA3Ny41bDk2LjYtMjQuMmMyNy02LjcgNTUuNS0zLjYgODAuNCA4LjhjNTQuOSAyNy40IDExOC43IDI5LjcgMTc1IDYuOFYzMzQuN2wtMjQuNCA5LjFjLTMzLjcgMTIuNi03MS4yIDEwLjctMTAzLjQtNS40Yy00OC4yLTI0LjEtMTAzLjMtMzAuMS0xNTUuNi0xNy4xTDQ4IDMzOC41di0yMzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Zsb3BweURpc2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggOTZWNDE2YzAgOC44IDcuMiAxNiAxNiAxNkgzODRjOC44IDAgMTYtNy4yIDE2LTE2VjE3MC41YzAtNC4yLTEuNy04LjMtNC43LTExLjNsMzMuOS0zMy45YzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgzMDkuNWMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN2w3NC41IDc0LjUtMzMuOSAzMy45TDMyMC44IDg0LjdjLS4zLS4zLS41LS41LS44LS44VjE4NGMwIDEzLjMtMTAuNyAyNC0yNCAyNEgxMDRjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjgwSDY0Yy04LjggMC0xNiA3LjItMTYgMTZ6bTgwLTE2djgwSDI3MlY4MEgxMjh6bTMyIDI0MGE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZvbGRlckNsb3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDI4OS45TDI0NyA1My4xQzIzMy41IDM5LjYgMjE1LjIgMzIgMTk2LjEgMzJINjR6TTQ4IDk2YzAtOC44IDcuMi0xNiAxNi0xNkgxOTYuMWM2LjQgMCAxMi41IDIuNSAxNyA3bDQ1LjMgNDUuM2M3LjUgNy41IDE3LjcgMTEuNyAyOC4zIDExLjdINDQ4YzguOCAwIDE2IDcuMiAxNiAxNnYzMkg0OFY5NnptMCAxNDRINDY0VjQxNmMwIDguOC03LjIgMTYtMTYgMTZINjRjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZvbGRlck9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDQ4MGg0OGMxMS40IDAgMjEuOS02IDI3LjYtMTUuOWwxMTItMTkyYzUuOC05LjkgNS44LTIyLjEgLjEtMzIuMVM1NTUuNSAyMjQgNTQ0IDIyNEgxNDRjLTExLjQgMC0yMS45IDYtMjcuNiAxNS45TDQ4IDM1Ny4xVjk2YzAtOC44IDcuMi0xNiAxNi0xNkgxODEuNWM0LjIgMCA4LjMgMS43IDExLjMgNC43bDI2LjUgMjYuNWMyMSAyMSA0OS41IDMyLjggNzkuMiAzMi44SDQxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJoNDhWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDI5OC41Yy0xNyAwLTMzLjMtNi43LTQ1LjMtMTguN0wyMjYuNyA1MC43Yy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43SDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDg3LjcgMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgxOTYuMWMxOS4xIDAgMzcuNCA3LjYgNTAuOSAyMS4xTDI4OS45IDk2SDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2ek02NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2VjQxNmMwIDguOCA3LjIgMTYgMTYgMTZINDQ4YzguOCAwIDE2LTcuMiAxNi0xNlYxNjBjMC04LjgtNy4yLTE2LTE2LTE2SDI4Ni42Yy0xMC42IDAtMjAuOC00LjItMjguMy0xMS43TDIxMy4xIDg3Yy00LjUtNC41LTEwLjYtNy0xNy03SDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGb250QXdlc29tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05MS43IDk2QzEwNi4zIDg2LjggMTE2IDcwLjUgMTE2IDUyQzExNiAyMy4zIDkyLjcgMCA2NCAwUzEyIDIzLjMgMTIgNTJjMCAxNi43IDcuOCAzMS41IDIwIDQxbDAgMyAwIDQ4IDAgMjU2IDAgNDggMCA2NCA0OCAwIDAtNjQgMzg5LjYgMGMxNC42IDAgMjYuNC0xMS44IDI2LjQtMjYuNGMwLTMuNy0uOC03LjMtMi4zLTEwLjdMNDMyIDI3Mmw2MS43LTEzOC45YzEuNS0zLjQgMi4zLTcgMi4zLTEwLjdjMC0xNC42LTExLjgtMjYuNC0yNi40LTI2LjRMOTEuNyA5NnpNODAgNDAwbDAtMjU2IDM1Ni40IDBMMzg4LjEgMjUyLjVjLTUuNSAxMi40LTUuNSAyNi42IDAgMzlMNDM2LjQgNDAwIDgwIDQwMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRnV0Ym9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzNS40IDM2MS4zbC04OS43LTZjLTUuMi0uMy0xMC4zIDEuMS0xNC41IDQuMnMtNy4yIDcuNC04LjQgMTIuNWwtMjIgODcuMmMtMTQuNCAzLjItMjkuNCA0LjgtNDQuOCA0LjhzLTMwLjMtMS43LTQ0LjgtNC44bC0yMi04Ny4yYy0xLjMtNS00LjMtOS40LTguNC0xMi41cy05LjMtNC41LTE0LjUtNC4ybC04OS43IDZDNjEuNyAzMzUuOSA1MS45IDMwNyA0OSAyNzYuMkwxMjUgMjI4LjNjNC40LTIuOCA3LjYtNyA5LjItMTEuOXMxLjQtMTAuMi0uNS0xNUwxMDAuNCAxMThjMTkuOS0yMi40IDQ0LjYtNDAuNSA3Mi40LTUyLjdsNjkuMSA1Ny42YzQgMy4zIDkgNS4xIDE0LjEgNS4xczEwLjItMS44IDE0LjEtNS4xbDY5LjEtNTcuNmMyNy44IDEyLjIgNTIuNSAzMC4zIDcyLjQgNTIuN2wtMzMuNCA4My40Yy0xLjkgNC44LTIuMSAxMC4xLS41IDE1czQuOSA5LjEgOS4yIDExLjlMNDYzIDI3Ni4yYy0zIDMwLjgtMTIuNyA1OS43LTI3LjYgODUuMXpNMjU2IDQ4bC45IDBoLTEuOGwuOSAwek01Ni43IDE5Ni4yYy45LTMgMS45LTYuMSAyLjktOS4xbC0yLjkgOS4xek0xMzIgNDIzbDMuOCAyLjdjLTEuMy0uOS0yLjUtMS44LTMuOC0yLjd6bTI0OC4xLS4xYy0xLjMgMS0yLjcgMi00IDIuOWw0LTIuOXptNzUuMi0yMjYuNmwtMy05LjJjMS4xIDMgMi4xIDYuMSAzIDkuMnpNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTE0LjEtMzI1LjdjLTguNC02LjEtMTkuOC02LjEtMjguMiAwTDE5NCAyMjFjLTguNCA2LjEtMTEuOSAxNi45LTguNyAyNi44bDE4LjMgNTYuM2MzLjIgOS45IDEyLjQgMTYuNiAyMi44IDE2LjZoNTkuMmMxMC40IDAgMTkuNi02LjcgMjIuOC0xNi42bDE4LjMtNTYuM2MzLjItOS45LS4zLTIwLjctOC43LTI2LjhsLTQ3LjktMzQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR2VtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2OC41IDcyTDI1NiAxNjVsODcuNS05M2gtMTc1ek0zODMuOSA5OS4xTDMxMS41IDE3NmgxMjlMMzgzLjkgOTkuMXptNTAgMTI0LjlIMjU2IDc4LjFMMjU2IDQyMC4zIDQzMy45IDIyNHpNNzEuNSAxNzZoMTI5TDEyOC4xIDk5LjEgNzEuNSAxNzZ6bTQzNC4zIDQwLjFsLTIzMiAyNTZjLTQuNSA1LTExIDcuOS0xNy44IDcuOXMtMTMuMi0yLjktMTcuOC03LjlsLTIzMi0yNTZjLTcuNy04LjUtOC4zLTIxLjItMS41LTMwLjRsMTEyLTE1MmM0LjUtNi4xIDExLjctOS44IDE5LjMtOS44SDM3NmM3LjYgMCAxNC44IDMuNiAxOS4zIDkuOGwxMTIgMTUyYzYuOCA5LjIgNi4xIDIxLjktMS41IDMwLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRCYWNrRmlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgNjRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmMwIDkuMSA1LjEgMTcuNCAxMy4zIDIxLjVzMTcuOSAzLjIgMjUuMS0yLjNjMi43LTIgNi0zLjIgOS42LTMuMmM4LjggMCAxNiA3LjIgMTYgMTZjMCA5LjEgNS4xIDE3LjQgMTMuMyAyMS41czE3LjkgMy4yIDI1LjEtMi4zYzIuNy0yIDYtMy4yIDkuNi0zLjJjOC44IDAgMTYgNy4yIDE2IDE2YzAgOS4xIDUuMSAxNy40IDEzLjMgMjEuNXMxNy45IDMuMiAyNS4xLTIuM2MyLjctMiA2LTMuMiA5LjYtMy4yYzguOCAwIDE2IDcuMiAxNiAxNlYyNjRjMCAzMS4zLTIwIDU4LTQ4IDY3LjljLTkuNiAzLjQtMTYgMTIuNS0xNiAyMi42VjQ4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjM3MC4yYzM4LTIwLjEgNjQtNjAuMSA2NC0xMDYuMlYxNjBjMC0zNS4zLTI4LjctNjQtNjQtNjRjLTIuOCAwLTUuNiAuMi04LjMgLjVDMzMyLjggNzcuMSAzMTEuOSA2NCAyODggNjRjLTIuOCAwLTUuNiAuMi04LjMgLjVDMjY4LjggNDUuMSAyNDcuOSAzMiAyMjQgMzJjLTIuOCAwLTUuNiAuMi04LjMgLjVDMjA0LjggMTMuMSAxODMuOSAwIDE2MCAwQzEyNC43IDAgOTYgMjguNyA5NiA2NHY2NC4zYy0xMS43IDcuNC0yMi41IDE2LjQtMzIgMjYuOWwxNy44IDE2LjFMNjQgMTU1LjJsLTkuNCAxMC41QzQwIDE4MS44IDMyIDIwMi44IDMyIDIyNC42djEyLjhjMCA0OS42IDI0LjIgOTYuMSA2NC44IDEyNC41bDEzLjgtMTkuN0w5Ni44IDM2MS45bDguOSA2LjJjNi45IDQuOCAxNC40IDguNiAyMi4zIDExLjNWNDg4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMzU5LjljMC0xMi42LTkuOC0yMy4xLTIyLjQtMjMuOWMtNy4zLS41LTE0LjMtMi45LTIwLjMtNy4xbC0xMy4xIDE4LjcgMTMuMS0xOC43LTguOS02LjJDOTYuNiAzMDMuMSA4MCAyNzEuMyA4MCAyMzcuNFYyMjQuNmMwLTkuOSAzLjctMTkuNCAxMC4zLTI2LjhsOS40LTEwLjVjMy44LTQuMiA3LjktOC4xIDEyLjMtMTEuNlYyMDhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYxNDIuMyAxMjggNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRMaXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzIgMTEyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDI0MGMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NEgxMzZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMjg4YzQuNSAwIDguOSAxLjMgMTIuNyAzLjZsNjQgNDBjNyA0LjQgMTEuMyAxMi4xIDExLjMgMjAuNHYyNGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY0MTMuM0wyODEuMSAzODRIMTM2Yy0zOS44IDAtNzItMzIuMi03Mi03MnMzMi4yLTcyIDcyLTcySDI0MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg3MmMtMzkuOCAwLTcyLTMyLjItNzItNzJTMzIuMiA2NCA3MiA2NEgyODEuNmM0Ni43IDAgOTAuOSAyMS41IDExOS43IDU4LjNsNzguNCAxMDAuMWMyMC45IDI2LjcgMzIuMyA1OS43IDMyLjMgOTMuN1Y0MjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMzE2LjFjMC0yMy4yLTcuOC00NS44LTIyLjEtNjQuMUwzNjMuNSAxNTEuOWMtMTkuNy0yNS4yLTQ5LjktMzkuOS04MS45LTM5LjlINzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQZWFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTAuOCAxLjRjLTM1LjItMy43LTY2LjYgMjEuOC03MC4zIDU3TDE3NCAxMTkgMTU2LjcgNjkuNkMxNDUgMzYuMyAxMDguNCAxOC44IDc1LjEgMzAuNVMyNC4yIDc4LjggMzUuOSAxMTIuMUw4OC43IDI2Mi4yQzczLjUgMjc2LjcgNjQgMjk3LjMgNjQgMzIwdjAgMjRjMCA5Mi44IDc1LjIgMTY4IDE2OCAxNjhoNDhjOTIuOCAwIDE2OC03NS4yIDE2OC0xNjhWMjcyIDI1NiAyMjRjMC0zNS4zLTI4LjctNjQtNjQtNjRjLTcuOSAwLTE1LjQgMS40LTIyLjQgNGMtMTAuNC0yMS4zLTMyLjMtMzYtNTcuNi0zNmMtLjcgMC0xLjUgMC0yLjIgMGw1LjktNTYuM2MzLjctMzUuMi0yMS44LTY2LjYtNTctNzAuM3ptLS4yIDE1NS40QzI0My45IDE2Ni45IDI0MCAxNzkgMjQwIDE5MnY0OGMwIC43IDAgMS40IDAgMmMtNS4xLTEuMy0xMC41LTItMTYtMmgtNy40bC01LjQtMTUuMyAxNy0xNjEuM2MuOS04LjggOC44LTE1LjIgMTcuNi0xNC4yczE1LjIgOC44IDE0LjIgMTcuNmwtOS41IDkwLjF6TTExMS40IDg1LjZMMTY1LjcgMjQwSDE0NGMtNCAwLTggLjMtMTEuOSAuOUw4MS4yIDk2LjJjLTIuOS04LjMgMS41LTE3LjUgOS44LTIwLjRzMTcuNSAxLjUgMjAuNCA5Ljh6TTI4OCAxOTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYzMiAxNmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYxOTJ6bTM4LjQgMTA4YzEwLjQgMjEuMyAzMi4zIDM2IDU3LjYgMzZjNS41IDAgMTAuOS0uNyAxNi0ydjEwYzAgNjYuMy01My43IDEyMC0xMjAgMTIwSDIzMmMtNjYuMyAwLTEyMC01My43LTEyMC0xMjBsMC0yNCAwIDBjMC0xNy43IDE0LjMtMzIgMzItMzJoODBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTg0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDQwYzM1LjMgMCA2NC0yOC43IDY0LTY0YzAtLjcgMC0xLjQgMC0yYzUuMSAxLjMgMTAuNSAyIDE2IDJjNy45IDAgMTUuNC0xLjQgMjIuNC00ek00MDAgMjcyYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI0MCAyMjRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYzMiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFBvaW50RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA0NDhsMC0xNzcuNmM1LjIgMSAxMC41IDEuNiAxNiAxLjZsMTYgMCAwIDMyIDAgMTQ0YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2ek04MCAyMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyYzAgMCAwIDAgMCAwbDAtMjRjMC02Ni4zIDUzLjctMTIwIDEyMC0xMjBsNDggMGM1Mi41IDAgOTcuMSAzMy43IDExMy40IDgwLjdjLTMuMS0uNS02LjItLjctOS40LS43Yy0yMCAwLTM3LjkgOS4yLTQ5LjcgMjMuNmMtOS00LjktMTkuNC03LjYtMzAuMy03LjZjLTE1LjEgMC0yOSA1LjMtNDAgMTRjLTExLTguOC0yNC45LTE0LTQwLTE0bC00MCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDQwIDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTQwIDAtNDAgMHpNMCAxOTJzMCAwIDAgMGMwIDE4IDYgMzQuNiAxNiA0OGwwIDIwOGMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0bDAtODJjNS4xIDEuMyAxMC41IDIgMTYgMmMyNS4zIDAgNDcuMi0xNC43IDU3LjYtMzZjNyAyLjYgMTQuNSA0IDIyLjQgNGMyMCAwIDM3LjktOS4yIDQ5LjctMjMuNmM5IDQuOSAxOS40IDcuNiAzMC4zIDcuNmMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTY0IDAtMjRDMzg0IDc1LjIgMzA4LjggMCAyMTYgMEwxNjggMEM3NS4yIDAgMCA3NS4yIDAgMTY4bDAgMjR6bTMzNiA2NGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTQ4IDAtMTZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDY0ek0xNjAgMjcyYzUuNSAwIDEwLjktLjcgMTYtMmwwIDIgMCAzMmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTMyIDE2IDB6bTY0LTI0bDAtNDBjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDQ4IDAgMTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFBvaW50TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAxMjhsMTc3LjYgMGMtMSA1LjItMS42IDEwLjUtMS42IDE2bDAgMTYtMzIgMEw2NCAxNjBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTIyNCAxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMmMwIDAgMCAwIDAgMGwyNCAwYzY2LjMgMCAxMjAgNTMuNyAxMjAgMTIwbDAgNDhjMCA1Mi41LTMzLjcgOTcuMS04MC43IDExMy40Yy41LTMuMSAuNy02LjIgLjctOS40YzAtMjAtOS4yLTM3LjktMjMuNi00OS43YzQuOS05IDcuNi0xOS40IDcuNi0zMC4zYzAtMTUuMS01LjMtMjktMTQtNDBjOC44LTExIDE0LTI0LjkgMTQtNDBsMC00MGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDQwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtNDAgMC00MHptMzItODBzMCAwIDAgMGMtMTggMC0zNC42IDYtNDggMTZMNjQgODBDMjguNyA4MCAwIDEwOC43IDAgMTQ0czI4LjcgNjQgNjQgNjRsODIgMGMtMS4zIDUuMS0yIDEwLjUtMiAxNmMwIDI1LjMgMTQuNyA0Ny4yIDM2IDU3LjZjLTIuNiA3LTQgMTQuNS00IDIyLjRjMCAyMCA5LjIgMzcuOSAyMy42IDQ5LjdjLTQuOSA5LTcuNiAxOS40LTcuNiAzMC4zYzAgMzUuMyAyOC43IDY0IDY0IDY0bDY0IDAgMjQgMGM5Mi44IDAgMTY4LTc1LjIgMTY4LTE2OGwwLTQ4YzAtOTIuOC03NS4yLTE2OC0xNjgtMTY4bC0yNCAwek0yNTYgNDAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDQ4IDAgMTYgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtNjQgMHpNMjQwIDIyNGMwIDUuNSAuNyAxMC45IDIgMTZsLTIgMC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDMyIDAgMCAxNnptMjQgNjRsNDAgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtNDggMC0xNiAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDI0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQb2ludFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAxMjhsLTE3Ny42IDBjMSA1LjIgMS42IDEwLjUgMS42IDE2bDAgMTYgMzIgMCAxNDQgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNnpNMjI0IDE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMmMwIDAgMCAwIDAgMGwtMjQgMGMtNjYuMyAwLTEyMCA1My43LTEyMCAxMjBsMCA0OGMwIDUyLjUgMzMuNyA5Ny4xIDgwLjcgMTEzLjRjLS41LTMuMS0uNy02LjItLjctOS40YzAtMjAgOS4yLTM3LjkgMjMuNi00OS43Yy00LjktOS03LjYtMTkuNC03LjYtMzAuM2MwLTE1LjEgNS4zLTI5IDE0LTQwYy04LjgtMTEtMTQtMjQuOS0xNC00MGwwLTQwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCA0MGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtNDAgMC00MHpNMTkyIDY0czAgMCAwIDBjMTggMCAzNC42IDYgNDggMTZsMjA4IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjRsLTgyIDBjMS4zIDUuMSAyIDEwLjUgMiAxNmMwIDI1LjMtMTQuNyA0Ny4yLTM2IDU3LjZjMi42IDcgNCAxNC41IDQgMjIuNGMwIDIwLTkuMiAzNy45LTIzLjYgNDkuN2M0LjkgOSA3LjYgMTkuNCA3LjYgMzAuM2MwIDM1LjMtMjguNyA2NC02NCA2NGwtNjQgMC0yNCAwQzc1LjIgNDQ4IDAgMzcyLjggMCAyODBsMC00OEMwIDEzOS4yIDc1LjIgNjQgMTY4IDY0bDI0IDB6bTY0IDMzNmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtNDggMC0xNiAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDY0IDB6bTE2LTE3NmMwIDUuNS0uNyAxMC45LTIgMTZsMiAwIDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTMyIDAgMCAxNnptLTI0IDY0bC00MCAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDQ4IDAgMTYgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtMjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFBvaW50VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNjRWMjQxLjZjNS4yLTEgMTAuNS0xLjYgMTYtMS42SDk2VjIwOCA2NGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnpNODAgMjg4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMmMwIDAgMCAwIDAgMHYyNGMwIDY2LjMgNTMuNyAxMjAgMTIwIDEyMGg0OGM1Mi41IDAgOTcuMS0zMy43IDExMy40LTgwLjdjLTMuMSAuNS02LjIgLjctOS40IC43Yy0yMCAwLTM3LjktOS4yLTQ5LjctMjMuNmMtOSA0LjktMTkuNCA3LjYtMzAuMyA3LjZjLTE1LjEgMC0yOS01LjMtNDAtMTRjLTExIDguOC0yNC45IDE0LTQwIDE0SDEyMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg0MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxMjAgODB6TTAgMzIwczAgMCAwIDBjMC0xOCA2LTM0LjYgMTYtNDhWNjRDMTYgMjguNyA0NC43IDAgODAgMHM2NCAyOC43IDY0IDY0djgyYzUuMS0xLjMgMTAuNS0yIDE2LTJjMjUuMyAwIDQ3LjIgMTQuNyA1Ny42IDM2YzctMi42IDE0LjUtNCAyMi40LTRjMjAgMCAzNy45IDkuMiA0OS43IDIzLjZjOS00LjkgMTkuNC03LjYgMzAuMy03LjZjMzUuMyAwIDY0IDI4LjcgNjQgNjR2NjQgMjRjMCA5Mi44LTc1LjIgMTY4LTE2OCAxNjhIMTY4Qzc1LjIgNTEyIDAgNDM2LjggMCAzNDRWMzIwem0zMzYtNjRjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2NDggMTZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyNTZ6TTE2MCAyNDBjNS41IDAgMTAuOSAuNyAxNiAydi0yVjIwOGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnYzMmgxNnptNjQgMjR2NDBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyNTYgMjQwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kUG9pbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgNjRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNlYyMDBjMCAxMC4zIDYuNiAxOS41IDE2LjQgMjIuOHMyMC42LS4xIDI2LjgtOC4zYzMtMy45IDcuNi02LjQgMTIuOC02LjRjOC44IDAgMTYgNy4yIDE2IDE2YzAgMTAuMyA2LjYgMTkuNSAxNi40IDIyLjhzMjAuNi0uMSAyNi44LTguM2MzLTMuOSA3LjYtNi40IDEyLjgtNi40YzcuOCAwIDE0LjMgNS42IDE1LjcgMTNjMS42IDguMiA3LjMgMTUuMSAxNS4xIDE4czE2LjcgMS42IDIzLjMtMy42YzIuNy0yLjEgNi4xLTMuNCA5LjktMy40YzguOCAwIDE2IDcuMiAxNiAxNmwwIDE2VjM5MmMwIDM5LjgtMzIuMiA3Mi03MiA3MkgyNzIgMjEyLjNoLS45Yy0zNy40IDAtNzIuNC0xOC43LTkzLjItNDkuOUw1MC43IDMxMi45Yy00LjktNy40LTIuOS0xNy4zIDQuNC0yMi4yczE3LjMtMi45IDIyLjIgNC40TDExNiAzNTMuMmM1LjkgOC44IDE2LjggMTIuNyAyNi45IDkuN3MxNy0xMi40IDE3LTIzVjMyMCA2NHpNMTc2IDBjLTM1LjMgMC02NCAyOC43LTY0IDY0VjI2MS43QzkxLjIgMjM4IDU1LjUgMjMyLjggMjguNSAyNTAuN0MtLjkgMjcwLjQtOC45IDMxMC4xIDEwLjggMzM5LjVMNzguMyA0NDAuOGMyOS43IDQ0LjUgNzkuNiA3MS4yIDEzMy4xIDcxLjJoLjlIMjcyaDU2YzY2LjMgMCAxMjAtNTMuNyAxMjAtMTIwVjI4OGwwLTE2YzAtMzUuMy0yOC43LTY0LTY0LTY0Yy00LjUgMC04LjggLjUtMTMgMS4zYy0xMS43LTE1LjQtMzAuMi0yNS4zLTUxLTI1LjNjLTYuOSAwLTEzLjUgMS4xLTE5LjcgMy4xQzI4OC43IDE3MC43IDI2OS42IDE2MCAyNDggMTYwYy0yLjcgMC01LjQgLjItOCAuNVY2NGMwLTM1LjMtMjguNy02NC02NC02NHptNDggMzA0YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzA0em00OC0xNmMtOC44IDAtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNnptODAgMTZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYzMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRTY2lzc29ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uMiAyNzYuM2MtMS4yLTM1LjMgMjYuNC02NSA2MS43LTY2LjJsMy4zLS4xTDU3IDIwOC4xQzIyLjUgMjAwLjUgLjcgMTY2LjMgOC4zIDEzMS44UzUwLjIgNzUuNSA4NC43IDgzLjJsMTczIDM4LjNjMi4zLTIuOSA0LjctNS43IDcuMS04LjVsMTguNC0yMC4zQzI5OS45IDc0LjUgMzIzLjUgNjQgMzQ4LjMgNjRsMTAuMiAwYzU0LjEgMCAxMDQuMSAyOC43IDEzMS4zIDc1LjRsMS41IDIuNmMxMy42IDIzLjIgMjAuNyA0OS43IDIwLjcgNzYuNkw1MTIgMzQ0YzAgNjYuMy01My43IDEyMC0xMjAgMTIwbC04IDAtOTYgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRjMC0yLjggLjItNS42IC41LTguM2MtMTkuNC0xMS0zMi41LTMxLjgtMzIuNS01NS43YzAtLjggMC0xLjYgMC0yLjRMNjYuNCAzMzhjLTM1LjMgMS4yLTY1LTI2LjQtNjYuMi02MS43em02My40LTE4LjJjLTguOCAuMy0xNS43IDcuNy0xNS40IDE2LjVzNy43IDE1LjcgMTYuNSAxNS40bDE2MS41LTUuNmM5LjgtLjMgMTguNyA1LjMgMjIuNyAxNC4yczIuMiAxOS4zLTQuNSAyNi40Yy0yLjggMi45LTQuNCA2LjctNC40IDExYzAgOC44IDcuMiAxNiAxNiAxNmM5LjEgMCAxNy40IDUuMSAyMS41IDEzLjNzMy4yIDE3LjktMi4zIDI1LjFjLTIgMi43LTMuMiA2LTMuMiA5LjZjMCA4LjggNy4yIDE2IDE2IDE2bDk2IDAgOCAwYzM5LjggMCA3Mi0zMi4yIDcyLTcybDAtMTI1LjRjMC0xOC40LTQuOS0zNi41LTE0LjItNTIuNGwtMS41LTIuNmMtMTguNi0zMi01Mi44LTUxLjYtODkuOC01MS42bC0xMC4yIDBjLTExLjMgMC0yMiA0LjgtMjkuNiAxMy4xbC0xNy41LTE1LjkgMTcuNSAxNS45LTE4LjQgMjAuM2MtLjYgLjYtMS4xIDEuMy0xLjcgMS45bDU3IDEzLjJjOC42IDIgMTQgMTAuNiAxMiAxOS4ycy0xMC42IDE0LTE5LjIgMTJsLTg1LjYtMTkuN0w3NC4zIDEzMGMtOC42LTEuOS0xNy4yIDMuNS0xOS4xIDEyLjJzMy41IDE3LjIgMTIuMiAxOS4xbDE4Ny41IDQxLjZjMTAuMiAyLjMgMTcuOCAxMC45IDE4LjcgMjEuNGwuMSAxYy42IDYuNi0xLjUgMTMuMS01LjggMTguMXMtMTAuNiA3LjktMTcuMiA4LjJMNjMuNiAyNTguMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFNwb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3MC4yIDgwLjhDMTYxIDQ3IDE4MC44IDEyIDIxNC42IDIuNGMzNC05LjYgNjkuNCAxMC4yIDc5IDQ0LjJsMzAuMyAxMDcuMUwzMzcuMSA4NGM2LjYtMzQuNyA0MC4xLTU3LjUgNzQuOC01MC45YzMxLjQgNiA1MyAzMy45IDUyIDY0LjljMTAtMi42IDIwLjgtMi44IDMxLjUtLjFjMzQuMyA4LjYgNTUuMSA0My4zIDQ2LjYgNzcuNkw0ODYuNyAzOTcuMkM0NjkuOCA0NjQuNyA0MDkuMiA1MTIgMzM5LjYgNTEyYy0xMS4yIDAtMjIuNSAwLTMzLjcgMGMtNTYuOSAwLTExMi4yLTE5LTE1Ny4yLTUzLjlsLTkyLTcxLjZjLTI3LjktMjEuNy0zMi45LTYxLjktMTEuMi04OS44czYxLjktMzIuOSA4OS44LTExLjJsMTcgMTMuMkwxMDAuNSAxNjcuNWMtMTMtMzIuOSAzLjItNzAuMSAzNi04M2MxMS4xLTQuNCAyMi43LTUuNCAzMy43LTMuN3ptNzcuMS0yMS4yYy0yLjQtOC41LTExLjItMTMuNC0xOS43LTExcy0xMy40IDExLjItMTEgMTkuN2w1NC44IDE4Mi40YzMuNSAxMi4zLTMuMyAyNS4yLTE1LjQgMjkuM3MtMjUuMy0yLTMwLTEzLjlMMTc0LjkgMTM4LjFjLTMuMi04LjItMTIuNS0xMi4zLTIwLjgtOXMtMTIuMyAxMi41LTkgMjAuOGw3My4zIDE4NS42YzEyIDMwLjMtMjMuNyA1Ny00OS40IDM3bC02My4xLTQ5LjFjLTctNS40LTE3LTQuMi0yMi41IDIuOHMtNC4yIDE3IDIuOCAyMi41bDkyIDcxLjZjMzYuNSAyOC40IDgxLjQgNDMuOCAxMjcuNyA0My44YzExLjIgMCAyMi41IDAgMzMuNyAwYzQ3LjUgMCA4OS0zMi40IDEwMC41LTc4LjVsNTUuNC0yMjEuNmMyLjEtOC42LTMuMS0xNy4zLTExLjYtMTkuNHMtMTcuMyAzLjEtMTkuNCAxMS42bC0yNiAxMDRDNDM1LjYgMjcxLjggNDI1IDI4MCA0MTMgMjgwYy0xNi41IDAtMjguOS0xNS0yNS44LTMxLjJMNDE1LjcgOTljMS43LTguNy00LTE3LjEtMTIuNy0xOC43cy0xNy4xIDQtMTguNyAxMi43TDM1Mi41IDI2MGMtMi4yIDExLjYtMTIuNCAyMC0yNC4yIDIwYy0xMSAwLTIwLjctNy4zLTIzLjctMTcuOUwyNDcuNCA1OS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYy0yNS4zIDAtNDcuMiAxNC43LTU3LjYgMzZjLTctMi42LTE0LjUtNC0yMi40LTRjLTM1LjMgMC02NCAyOC43LTY0IDY0VjI2MS41bC0yLjctMi43Yy0yNS0yNS02NS41LTI1LTkwLjUgMHMtMjUgNjUuNSAwIDkwLjVMMTA2LjUgNDM3YzQ4IDQ4IDExMy4xIDc1IDE4MSA3NUgyOTZoOGMxLjUgMCAzLS4xIDQuNS0uNGM5MS43LTYuMiAxNjUtNzkuNCAxNzEuMS0xNzEuMWMuMy0xLjUgLjQtMyAuNC00LjVWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0Yy01LjUgMC0xMC45IC43LTE2IDJWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRjLTcuOSAwLTE1LjQgMS40LTIyLjQgNEMzMDMuMiAxNC43IDI4MS4zIDAgMjU2IDB6TTI0MCA5Ni4xYzAgMCAwLS4xIDAtLjFWNjRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNlY5NS45YzAgMCAwIC4xIDAgLjFWMjMyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWOTZjMCAwIDAgMCAwLS4xYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2NTUuOWMwIDAgMCAuMSAwIC4xdjgwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMTYwLjFjMCAwIDAtLjEgMC0uMWMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2VjMzMi45Yy0uMSAuNi0uMSAxLjMtLjIgMS45Yy0zLjQgNjkuNy01OS4zIDEyNS42LTEyOSAxMjljLS42IDAtMS4zIC4xLTEuOSAuMkgyOTZoLTguNWMtNTUuMiAwLTEwOC4xLTIxLjktMTQ3LjEtNjAuOUw1Mi43IDMxNS4zYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMMTE5IDMzNi40YzYuOSA2LjkgMTcuMiA4LjkgMjYuMiA1LjJzMTQuOC0xMi41IDE0LjgtMjIuMlY5NmMwLTguOCA3LjItMTYgMTYtMTZjOC44IDAgMTYgNy4xIDE2IDE1LjlWMjMyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWOTYuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZHNoYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3Mi4yIDY0LjZsLTUxLjEgNTEuMWMtMTUuMyA0LjItMjkuNSAxMS45LTQxLjUgMjIuNUwxNTMgMTYxLjlDMTQyLjggMTcxIDEyOS41IDE3NiAxMTUuOCAxNzZIOTZWMzA0YzIwLjQgLjYgMzkuOCA4LjkgNTQuMyAyMy40bDM1LjYgMzUuNiA3IDcgMCAwTDIxOS45IDM5N2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGMxLjctMS43IDMtMy43IDMuNy01LjhjMi44LTcuNyA5LjMtMTMuNSAxNy4zLTE1LjNzMTYuNCAuNiAyMi4yIDYuNUwyOTYuNSAzOTNjMTEuNiAxMS42IDMwLjQgMTEuNiA0MS45IDBjNS40LTUuNCA4LjMtMTIuMyA4LjYtMTkuNGMuNC04LjggNS42LTE2LjYgMTMuNi0yMC40czE3LjMtMyAyNC40IDIuMWM5LjQgNi43IDIyLjUgNS44IDMwLjktMi42YzkuNC05LjQgOS40LTI0LjYgMC0zMy45TDM0MC4xIDI0M2wtMzUuOCAzM2MtMjcuMyAyNS4yLTY5LjIgMjUuNi05NyAuOWMtMzEuNy0yOC4yLTMyLjQtNzcuNC0xLjYtMTA2LjVsNzAuMS02Ni4yQzMwMy4yIDc4LjQgMzM5LjQgNjQgMzc3LjEgNjRjMzYuMSAwIDcxIDEzLjMgOTcuOSAzNy4yTDUwNS4xIDEyOEg1NDRoNDAgNDBjOC44IDAgMTYgNy4yIDE2IDE2VjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMkg1NzZjLTExLjggMC0yMi4yLTYuNC0yNy43LTE2SDQ2My40Yy0zLjQgNi43LTcuOSAxMy4xLTEzLjUgMTguN2MtMTcuMSAxNy4xLTQwLjggMjMuOC02MyAyMC4xYy0zLjYgNy4zLTguNSAxNC4xLTE0LjYgMjAuMmMtMjcuMyAyNy4zLTcwIDMwLTEwMC40IDguMWMtMjUuMSAyMC44LTYyLjUgMTkuNS04Ni00LjFMMTU5IDQwNGwtNy03LTM1LjYtMzUuNmMtNS41LTUuNS0xMi43LTguNy0yMC40LTkuM0M5NiAzNjkuNyA4MS42IDM4NCA2NCAzODRIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE0NGMwLTguOCA3LjItMTYgMTYtMTZINTYgOTZoMTkuOGMyIDAgMy45LS43IDUuMy0ybDI2LjUtMjMuNkMxNzUuNSA3Ny43IDIxMS40IDY0IDI0OC43IDY0SDI1OWM0LjQgMCA4LjkgLjIgMTMuMiAuNnpNNTQ0IDMyMFYxNzZINDk2Yy01LjkgMC0xMS42LTIuMi0xNS45LTYuMWwtMzYuOS0zMi44Yy0xOC4yLTE2LjItNDEuNy0yNS4xLTY2LjEtMjUuMWMtMjUuNCAwLTQ5LjggOS43LTY4LjMgMjcuMWwtNzAuMSA2Ni4yYy0xMC4zIDkuOC0xMC4xIDI2LjMgLjUgMzUuN2M5LjMgOC4zIDIzLjQgOC4xIDMyLjUtLjNsNzEuOS02Ni40YzkuNy05IDI0LjktOC40IDMzLjkgMS40czguNCAyNC45LTEuNCAzMy45bC0uOCAuOCA3NC40IDc0LjRjMTAgMTAgMTYuNSAyMi4zIDE5LjQgMzUuMUg1NDR6TTY0IDMzNmExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem01MjggMTZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYXJkRHJpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgODBjLTguOCAwLTE2IDcuMi0xNiAxNlYyNThjNS4xLTEuMyAxMC41LTIgMTYtMkg0NDhjNS41IDAgMTAuOSAuNyAxNiAyVjk2YzAtOC44LTcuMi0xNi0xNi0xNkg2NHpNNDggMzIwdjk2YzAgOC44IDcuMiAxNiAxNiAxNkg0NDhjOC44IDAgMTYtNy4yIDE2LTE2VjMyMGMwLTguOC03LjItMTYtMTYtMTZINjRjLTguOCAwLTE2IDcuMi0xNiAxNnpNMCAzMjBWOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjMyMHY5NmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMzIwem0yODAgNDhhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTIwLTI0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI1LjggNDY4LjJsLTIuNS0yLjNMNDguMSAzMDMuMkMxNy40IDI3NC43IDAgMjM0LjcgMCAxOTIuOHYtMy4zYzAtNzAuNCA1MC0xMzAuOCAxMTkuMi0xNDRDMTU4LjYgMzcuOSAxOTguOSA0NyAyMzEgNjkuNmM5IDYuNCAxNy40IDEzLjggMjUgMjIuM2M0LjItNC44IDguNy05LjIgMTMuNS0xMy4zYzMuNy0zLjIgNy41LTYuMiAxMS41LTljMCAwIDAgMCAwIDBDMzEzLjEgNDcgMzUzLjQgMzcuOSAzOTIuOCA0NS40QzQ2MiA1OC42IDUxMiAxMTkuMSA1MTIgMTg5LjV2My4zYzAgNDEuOS0xNy40IDgxLjktNDguMSAxMTAuNEwyODguNyA0NjUuOWwtMi41IDIuM2MtOC4yIDcuNi0xOSAxMS45LTMwLjIgMTEuOXMtMjItNC4yLTMwLjItMTEuOXpNMjM5LjEgMTQ1Yy0uNC0uMy0uNy0uNy0xLTEuMWwtMTcuOC0yMGMwIDAtLjEtLjEtLjEtLjFjMCAwIDAgMCAwIDBjLTIzLjEtMjUuOS01OC0zNy43LTkyLTMxLjJDODEuNiAxMDEuNSA0OCAxNDIuMSA0OCAxODkuNXYzLjNjMCAyOC41IDExLjkgNTUuOCAzMi44IDc1LjJMMjU2IDQzMC43IDQzMS4yIDI2OGMyMC45LTE5LjQgMzIuOC00Ni43IDMyLjgtNzUuMnYtMy4zYzAtNDcuMy0zMy42LTg4LTgwLjEtOTYuOWMtMzQtNi41LTY5IDUuNC05MiAzMS4yYzAgMCAwIDAtLjEgLjFzMCAwLS4xIC4xbC0xNy44IDIwYy0uMyAuNC0uNyAuNy0xIDEuMWMtNC41IDQuNS0xMC42IDctMTYuOSA3cy0xMi40LTIuNS0xNi45LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hvc3BpdGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMiAwYy0zOS44IDAtNzIgMzIuMi03MiA3MnY4SDcyQzMyLjIgODAgMCAxMTIuMiAwIDE1MlY0NDBjMCAzOS44IDMyLjIgNzIgNzIgNzJoLjIgLjIgLjIgLjIgLjJINzNoLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjJINzVoLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjJINzdoLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjJINzloLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjJIODJoLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjJIODVoLjIgLjIgLjIgLjJIODZoLjIgLjIgLjIgLjJIODdoLjIgLjIgLjIgLjJIODhoLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjJIOThoLjIgLjIgLjIgLjJIOTloLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjJ2MEg0NTZoOHYwSDU2OGMzOS44IDAgNzItMzIuMiA3Mi03MlYxNTJjMC0zOS44LTMyLjItNzItNzItNzJINDgwVjcyYzAtMzkuOC0zMi4yLTcyLTcyLTcySDIzMnpNNDgwIDEyOGg4OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHY0MEg1MzZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNTZ2NDhINTM2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDU2VjQ0MGMwIDEzLjMtMTAuNyAyNC0yNCAyNEg0ODBWMzM2IDEyOHpNNzIgMTI4aDg4VjQ2NGgtLjEtLjItLjItLjJIMTU5aC0uMi0uMi0uMkgxNThoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDE1NGgtLjItLjItLjJIMTUzaC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxNTBoLS4yLS4yLS4ySDE0OWgtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJIMTQ2aC0uMi0uMi0uMkgxNDVoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDE0MmgtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJIMTM5aC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMzZoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDEzM2gtLjItLjItLjItLjItLjItLjItLjItLjJIMTMxaC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMjhoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDEyNmgtLjItLjItLjItLjItLjItLjItLjItLjJIMTI0aC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMjJoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDEyMGgtLjItLjItLjItLjItLjItLjItLjItLjJIMTE4aC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMTZoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDExNGgtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJIMTExaC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMDhoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDEwNWgtLjItLjItLjItLjJIMTA0aC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMDBoLS4yLS4yLS4yLS4ySDk5aC0uMi0uMi0uMi0uMkg5OGgtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJIODhoLS4yLS4yLS4yLS4ySDg3aC0uMi0uMi0uMi0uMkg4NmgtLjItLjItLjItLjJIODVoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDgyaC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkg3OWgtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJINzdoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDc1aC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkg3M2gtLjItLjItLjItLjItLjJINzJjLTEzLjIgMC0yNC0xMC43LTI0LTI0VjMzNmg1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg0OFYyNDBoNTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRINDhWMTUyYzAtMTMuMyAxMC43LTI0IDI0LTI0ek0yMDggNzJjMC0xMy4zIDEwLjctMjQgMjQtMjRINDA4YzEzLjMgMCAyNCAxMC43IDI0IDI0VjMzNiA0NjRIMzY4VjQwMGMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHY2NEgyMDhWNzJ6bTg4IDI0djI0SDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgOC44IDcuMiAxNiAxNiAxNmgyNHYyNGMwIDguOCA3LjIgMTYgMTYgMTZoMTZjOC44IDAgMTYtNy4yIDE2LTE2VjE2OGgyNGM4LjggMCAxNi03LjIgMTYtMTZWMTM2YzAtOC44LTcuMi0xNi0xNi0xNkgzNDRWOTZjMC04LjgtNy4yLTE2LTE2LTE2SDMxMmMtOC44IDAtMTYgNy4yLTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIb3VyZ2xhc3NIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjRDMCAxMC43IDEwLjcgMCAyNCAwSDM2MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGgtOFY2N2MwIDQwLjMtMTYgNzktNDQuNSAxMDcuNUwyMjUuOSAyNTZsODEuNSA4MS41QzMzNiAzNjYgMzUyIDQwNC43IDM1MiA0NDV2MTloOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg4VjQ0NWMwLTQwLjMgMTYtNzkgNDQuNS0xMDcuNUwxNTguMSAyNTYgNzYuNSAxNzQuNUM0OCAxNDYgMzIgMTA3LjMgMzIgNjdWNDhIMjRDMTAuNyA0OCAwIDM3LjMgMCAyNHpNMTEwLjUgMzcxLjVjLTMuOSAzLjktNy41IDguMS0xMC43IDEyLjVIMjg0LjJjLTMuMi00LjQtNi44LTguNi0xMC43LTEyLjVMMTkyIDI4OS45bC04MS41IDgxLjV6TTI4NC4yIDEyOEMyOTcgMTEwLjQgMzA0IDg5IDMwNCA2N1Y0OEg4MFY2N2MwIDIyLjEgNyA0My40IDE5LjggNjFIMjg0LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hvdXJnbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCAwQzEwLjcgMCAwIDEwLjcgMCAyNFMxMC43IDQ4IDI0IDQ4aDhWNjdjMCA0MC4zIDE2IDc5IDQ0LjUgMTA3LjVMMTU4LjEgMjU2IDc2LjUgMzM3LjVDNDggMzY2IDMyIDQwNC43IDMyIDQ0NXYxOUgyNGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEgzNjBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRoLThWNDQ1YzAtNDAuMy0xNi03OS00NC41LTEwNy41TDIyNS45IDI1Nmw4MS41LTgxLjVDMzM2IDE0NiAzNTIgMTA3LjMgMzUyIDY3VjQ4aDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjR6TTE5MiAyODkuOWw4MS41IDgxLjVDMjkzIDM5MSAzMDQgNDE3LjQgMzA0IDQ0NXYxOUg4MFY0NDVjMC0yNy42IDExLTU0IDMwLjUtNzMuNUwxOTIgMjg5Ljl6bTAtNjcuOWwtODEuNS04MS41QzkxIDEyMSA4MCA5NC42IDgwIDY3VjQ4SDMwNFY2N2MwIDI3LjYtMTEgNTQtMzAuNSA3My41TDE5MiAyMjIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSWRCYWRnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDhWNjRjMCAxNy43LTE0LjMgMzItMzIgMzJIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0OEg2NGMtOC44IDAtMTYgNy4yLTE2IDE2VjQ0OGMwIDguOCA3LjIgMTYgMTYgMTZIMzIwYzguOCAwIDE2LTcuMiAxNi0xNlY2NGMwLTguOC03LjItMTYtMTYtMTZIMjU2ek0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgzMjBjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMTYwIDMyMGg2NGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MHptLTMyLTk2YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSWRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCAxNjBWNDE2YzAgOC44LTcuMiAxNi0xNiAxNkgzMjBjMC00NC4yLTM1LjgtODAtODAtODBIMTc2Yy00NC4yIDAtODAgMzUuOC04MCA4MEg2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjE2MEg1Mjh6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjcyIDI1NmE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6bTEwNC00OGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgzNzZ6bTAgOTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMzc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggODBjOC44IDAgMTYgNy4yIDE2IDE2VjQxNS44bC01LTYuNS0xMzYtMTc2Yy00LjUtNS45LTExLjYtOS4zLTE5LTkuM3MtMTQuNCAzLjQtMTkgOS4zTDIwMiAzNDAuN2wtMzAuNS00Mi43QzE2NyAyOTEuNyAxNTkuOCAyODggMTUyIDI4OHMtMTUgMy43LTE5LjUgMTAuMWwtODAgMTEyTDQ4IDQxNi4zbDAtLjNWOTZjMC04LjggNy4yLTE2IDE2LTE2SDQ0OHpNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em04MCAxOTJhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdJbWFnZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDgwSDUxMmM4LjggMCAxNiA3LjIgMTYgMTZWMzIwYzAgOC44LTcuMiAxNi0xNiAxNkg0OTAuOEwzODguMSAxNzguOWMtNC40LTYuOC0xMi0xMC45LTIwLjEtMTAuOXMtMTUuNyA0LjEtMjAuMSAxMC45bC01Mi4yIDc5LjgtMTIuNC0xNi45Yy00LjUtNi4yLTExLjctOS44LTE5LjQtOS44cy0xNC44IDMuNi0xOS40IDkuOEwxNzUuNiAzMzZIMTYwYy04LjggMC0xNi03LjItMTYtMTZWOTZjMC04LjggNy4yLTE2IDE2LTE2ek05NiA5NlYzMjBjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDE2MGMtMzUuMyAwLTY0IDI4LjctNjQgNjR6TTQ4IDEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNFMwIDEwNi43IDAgMTIwVjM0NGMwIDc1LjEgNjAuOSAxMzYgMTM2IDEzNkg0NTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTM2Yy00OC42IDAtODgtMzkuNC04OC04OFYxMjB6bTIwOCAyNGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdLZXlib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAxMTJjLTguOCAwLTE2IDcuMi0xNiAxNlYzODRjMCA4LjggNy4yIDE2IDE2IDE2SDUxMmM4LjggMCAxNi03LjIgMTYtMTZWMTI4YzAtOC44LTcuMi0xNi0xNi0xNkg2NHpNMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4ek0xNzYgMzIwSDQwMGM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjMzNmMwLTguOCA3LjItMTYgMTYtMTZ6bS03Mi03MmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNkgxMjBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDh6bTE2LTk2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZIMTIwYy04LjggMC0xNi03LjItMTYtMTZWMTY4YzAtOC44IDcuMi0xNiAxNi0xNnptNjQgOTZjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZIMjAwYy04LjggMC0xNi03LjItMTYtMTZWMjQ4em0xNi05NmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDIwMGMtOC44IDAtMTYtNy4yLTE2LTE2VjE2OGMwLTguOCA3LjItMTYgMTYtMTZ6bTY0IDk2YzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDI4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0OHptMTYtOTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNkgyODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNjhjMC04LjggNy4yLTE2IDE2LTE2em02NCA5NmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNkgzNjBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDh6bTE2LTk2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZIMzYwYy04LjggMC0xNi03LjItMTYtMTZWMTY4YzAtOC44IDcuMi0xNiAxNi0xNnptNjQgOTZjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZINDQwYy04LjggMC0xNi03LjItMTYtMTZWMjQ4em0xNi05NmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDQ0MGMtOC44IDAtMTYtNy4yLTE2LTE2VjE2OGMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0xlbW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCA4MGMtMy4yIDAtNi4yIC40LTguOSAxLjNDMzQwIDg2LjggMzEzIDkxLjkgMjg0LjggODQuNkMyMjcuNCA2OS43IDE2MC4yIDkyIDExMC4xIDE0Mi4xUzM3LjcgMjU5LjQgNTIuNiAzMTYuOGM3LjMgMjguMiAyLjIgNTUuMi0zLjMgNzQuM2MtLjggMi44LTEuMyA1LjgtMS4zIDguOWMwIDE3LjcgMTQuMyAzMiAzMiAzMmMzLjIgMCA2LjItLjQgOC45LTEuM2MxOS4xLTUuNSA0Ni4xLTEwLjcgNzQuMy0zLjNjNTcuNCAxNC45IDEyNC42LTcuNCAxNzQuNy01Ny41czcyLjQtMTE3LjMgNTcuNS0xNzQuN2MtNy4zLTI4LjItMi4yLTU1LjIgMy4zLTc0LjNjLjgtMi44IDEuMy01LjggMS4zLTguOWMwLTE3LjctMTQuMy0zMi0zMi0zMnptMC00OGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDcuNy0xLjEgMTUuMi0zLjEgMjIuM2MtNC42IDE1LjgtNy4xIDMyLjktMyA0OC45YzIwLjEgNzcuNi0xMC45IDE2MS41LTcwIDIyMC43cy0xNDMuMSA5MC4yLTIyMC43IDcwYy0xNi00LjEtMzMtMS42LTQ4LjkgM2MtNy4xIDItMTQuNiAzLjEtMjIuMyAzLjFjLTQ0LjIgMC04MC0zNS44LTgwLTgwYzAtNy43IDEuMS0xNS4yIDMuMS0yMi4zYzQuNi0xNS44IDcuMS0zMi45IDMtNDguOUMtMTQgMjUxLjMgMTcgMTY3LjMgNzYuMiAxMDguMlMyMTkuMyAxOCAyOTYuOCAzOC4xYzE2IDQuMSAzMyAxLjYgNDguOS0zYzcuMS0yIDE0LjYtMy4xIDIyLjMtMy4xek0yNDYuNyAxNjdjLTUyIDE1LjItOTYuNSA1OS43LTExMS43IDExMS43Yy0zLjcgMTIuNy0xNy4xIDIwLTI5LjggMTYuM3MtMjAtMTcuMS0xNi4zLTI5LjhjMTkuOC02Ny43IDc2LjYtMTI0LjUgMTQ0LjMtMTQ0LjNjMTIuNy0zLjcgMjYuMSAzLjYgMjkuOCAxNi4zcy0zLjYgMjYuMS0xNi4zIDI5Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0xpZmVSaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NS4xIDQxOS4xQzM0OS43IDQ0Ny4yIDMwNC44IDQ2NCAyNTYgNDY0cy05My43LTE2LjgtMTI5LjEtNDQuOWw4MC40LTgwLjRjMTQuMyA4LjQgMzEgMTMuMyA0OC44IDEzLjNzMzQuNS00LjggNDguOC0xMy4zbDgwLjQgODAuNHptNjguMSAuMkM0ODkuOSAzNzQuOSA1MTIgMzE4LjEgNTEyIDI1NnMtMjIuMS0xMTguOS01OC44LTE2My4zTDQ2NSA4MWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwTDQxOS4zIDU4LjhDMzc0LjkgMjIuMSAzMTguMSAwIDI1NiAwUzEzNy4xIDIyLjEgOTIuNyA1OC44TDgxIDQ3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45TDU4LjggOTIuN0MyMi4xIDEzNy4xIDAgMTkzLjkgMCAyNTZzMjIuMSAxMTguOSA1OC44IDE2My4zTDQ3IDQzMWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDExLjgtMTEuOEMxMzcuMSA0ODkuOSAxOTMuOSA1MTIgMjU2IDUxMnMxMTguOS0yMi4xIDE2My4zLTU4LjhMNDMxIDQ2NWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTExLjgtMTEuOHptLTM0LjEtMzQuMWwtODAuNC04MC40YzguNC0xNC4zIDEzLjMtMzEgMTMuMy00OC44cy00LjgtMzQuNS0xMy4zLTQ4LjhsODAuNC04MC40QzQ0Ny4yIDE2Mi4zIDQ2NCAyMDcuMiA0NjQgMjU2cy0xNi44IDkzLjctNDQuOSAxMjkuMXpNMzg1LjEgOTIuOWwtODAuNCA4MC40Yy0xNC4zLTguNC0zMS0xMy4zLTQ4LjgtMTMuM3MtMzQuNSA0LjgtNDguOCAxMy4zTDEyNi45IDkyLjlDMTYyLjMgNjQuOCAyMDcuMiA0OCAyNTYgNDhzOTMuNyAxNi44IDEyOS4xIDQ0Ljl6TTE3My4zIDMwNC44TDkyLjkgMzg1LjFDNjQuOCAzNDkuNyA0OCAzMDQuOCA0OCAyNTZzMTYuOC05My43IDQ0LjktMTI5LjFsODAuNCA4MC40Yy04LjQgMTQuMy0xMy4zIDMxLTEzLjMgNDguOHM0LjggMzQuNSAxMy4zIDQ4Ljh6TTIwOCAyNTZhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGlnaHRidWxiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5Ny4yIDI0OC45QzMxMS42IDIyOC4zIDMyMCAyMDMuMiAzMjAgMTc2YzAtNzAuNy01Ny4zLTEyOC0xMjgtMTI4UzY0IDEwNS4zIDY0IDE3NmMwIDI3LjIgOC40IDUyLjMgMjIuOCA3Mi45YzMuNyA1LjMgOC4xIDExLjMgMTIuOCAxNy43bDAgMGMxMi45IDE3LjcgMjguMyAzOC45IDM5LjggNTkuOGMxMC40IDE5IDE1LjcgMzguOCAxOC4zIDU3LjVIMTA5Yy0yLjItMTItNS45LTIzLjctMTEuOC0zNC41Yy05LjktMTgtMjIuMi0zNC45LTM0LjUtNTEuOGwwIDAgMCAwYy01LjItNy4xLTEwLjQtMTQuMi0xNS40LTIxLjRDMjcuNiAyNDcuOSAxNiAyMTMuMyAxNiAxNzZDMTYgNzguOCA5NC44IDAgMTkyIDBzMTc2IDc4LjggMTc2IDE3NmMwIDM3LjMtMTEuNiA3MS45LTMxLjQgMTAwLjNjLTUgNy4yLTEwLjIgMTQuMy0xNS40IDIxLjRsMCAwIDAgMGMtMTIuMyAxNi44LTI0LjYgMzMuNy0zNC41IDUxLjhjLTUuOSAxMC44LTkuNiAyMi41LTExLjggMzQuNUgyMjYuNGMyLjYtMTguNyA3LjktMzguNiAxOC4zLTU3LjVjMTEuNS0yMC45IDI2LjktNDIuMSAzOS44LTU5LjhsMCAwIDAgMCAwIDBjNC43LTYuNCA5LTEyLjQgMTIuNy0xNy43ek0xOTIgMTI4Yy0yNi41IDAtNDggMjEuNS00OCA0OGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNnptMCAzODRjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjQxNkgyNzJ2MTZjMCA0NC4yLTM1LjggODAtODAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ01hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjUuNiAzNi4yQzU3Mi4xIDQwLjcgNTc2IDQ4LjEgNTc2IDU2VjM5MmMwIDEwLTYuMiAxOC45LTE1LjUgMjIuNGwtMTY4IDY0Yy01LjIgMi0xMC45IDIuMS0xNi4xIC4zTDE5Mi41IDQxNy41bC0xNjAgNjFjLTcuNCAyLjgtMTUuNyAxLjgtMjIuMi0yLjdTMCA0NjMuOSAwIDQ1NlYxMjBjMC0xMCA2LjEtMTguOSAxNS41LTIyLjRsMTY4LTY0YzUuMi0yIDEwLjktMi4xIDE2LjEtLjNMMzgzLjUgOTQuNWwxNjAtNjFjNy40LTIuOCAxNS43LTEuOCAyMi4yIDIuN3pNNDggMTM2LjVWNDIxLjJsMTIwLTQ1LjdWOTAuOEw0OCAxMzYuNXpNMzYwIDQyMi43VjEzNy4zbC0xNDQtNDhWMzc0LjdsMTQ0IDQ4em00OC0xLjVsMTIwLTQ1LjdWOTAuOEw0MDggMTM2LjVWNDIxLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ01lc3NhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDM2OGMyNi41IDAgNDggMjEuNSA0OCA0OHYxNmw3Mi41LTU0LjRjOC4zLTYuMiAxOC40LTkuNiAyOC44LTkuNkg0NDhjOC44IDAgMTYtNy4yIDE2LTE2VjY0YzAtOC44LTcuMi0xNi0xNi0xNkg2NGMtOC44IDAtMTYgNy4yLTE2IDE2VjM1MmMwIDguOCA3LjIgMTYgMTYgMTZoOTZ6bTQ4IDEyNGwtLjIgLjItNS4xIDMuOC0xNy4xIDEyLjhjLTQuOCAzLjYtMTEuMyA0LjItMTYuOCAxLjVzLTguOC04LjItOC44LTE0LjNWNDc0Ljd2LTYuNFY0Njh2LTRWNDE2SDExMiA2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjRDMCAyOC43IDI4LjcgMCA2NCAwSDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NFYzNTJjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMzA5LjNMMjA4IDQ5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTW9uZXlCaWxsMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgMTEyYzAgMzUuMy0yOC43IDY0LTY0IDY0VjMzNmMzNS4zIDAgNjQgMjguNyA2NCA2NEg0NjRjMC0zNS4zIDI4LjctNjQgNjQtNjRWMTc2Yy0zNS4zIDAtNjQtMjguNy02NC02NEgxMTJ6TTAgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQgMjguNyA2NCA2NFYzODRjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjEyOHpNMTc2IDI1NmExMTIgMTEyIDAgMSAxIDIyNCAwIDExMiAxMTIgMCAxIDEgLTIyNCAwem04MC00OGMwIDguOCA3LjIgMTYgMTYgMTZ2NjRoLThjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoMjQgMjRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZoLThWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTW9vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQuNyA5OC43Yy0yMSAzNC4xLTMzLjEgNzQuMy0zMy4xIDExNy4zYzAgOTggNjIuOCAxODEuNCAxNTAuNCAyMTEuN2MtMTIuNCAyLjgtMjUuMyA0LjMtMzguNiA0LjNDMTI2LjYgNDMyIDQ4IDM1My4zIDQ4IDI1NmMwLTY4LjkgMzkuNC0xMjguNCA5Ni44LTE1Ny4zem02Mi4xLTY2QzkxLjEgNDEuMiAwIDEzNy45IDAgMjU2QzAgMzc5LjcgMTAwIDQ4MCAyMjMuNSA0ODBjNDcuOCAwIDkyLTE1IDEyOC40LTQwLjZjMS45LTEuMyAzLjctMi43IDUuNS00YzQuOC0zLjYgOS40LTcuNCAxMy45LTExLjRjMi43LTIuNCA1LjMtNC44IDcuOS03LjNjNS00LjkgNi4zLTEyLjUgMy4xLTE4LjdzLTEwLjEtOS43LTE3LTguNWMtMy43IC42LTcuNCAxLjItMTEuMSAxLjZjLTUgLjUtMTAuMSAuOS0xNS4zIDFjLTEuMiAwLTIuNSAwLTMuNyAwYy0uMSAwLS4yIDAtLjMgMGMtOTYuOC0uMi0xNzUuMi03OC45LTE3NS4yLTE3NmMwLTU0LjggMjQuOS0xMDMuNyA2NC4xLTEzNmMxLS45IDIuMS0xLjcgMy4yLTIuNmM0LTMuMiA4LjItNi4yIDEyLjUtOWMzLjEtMiA2LjMtNCA5LjYtNS44YzYuMS0zLjUgOS4yLTEwLjUgNy43LTE3LjNzLTcuMy0xMS45LTE0LjMtMTIuNWMtMy42LS4zLTcuMS0uNS0xMC43LS42Yy0yLjctLjEtNS41LS4xLTguMi0uMWMtMy4zIDAtNi41IC4xLTkuOCAuMmMtMi4zIC4xLTQuNiAuMi02LjkgLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ05ld3NwYXBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjggODBjLTEzLjMgMC0yNCAxMC43LTI0IDI0VjQwOGMwIDguNC0xLjQgMTYuNS00LjEgMjRINDQwYzEzLjMgMCAyNC0xMC43IDI0LTI0VjEwNGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgxNjh6TTcyIDQ4MGMtMzkuOCAwLTcyLTMyLjItNzItNzJWMTEyQzAgOTguNyAxMC43IDg4IDI0IDg4czI0IDEwLjcgMjQgMjRWNDA4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMTA0YzAtMzkuOCAzMi4yLTcyIDcyLTcySDQ0MGMzOS44IDAgNzIgMzIuMiA3MiA3MlY0MDhjMCAzOS44LTMyLjIgNzItNzIgNzJINzJ6TTE3NiAxMzZjMC0xMy4zIDEwLjctMjQgMjQtMjRoOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjR2ODBjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMjAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYxMzZ6bTIwMC0yNGgzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgzNzZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6bTAgODBoMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMzc2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0ek0yMDAgMjcySDQwOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6bTAgODBINDA4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDIwMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTm90ZVN0aWNreSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2VjQxNmMwIDguOCA3LjIgMTYgMTYgMTZIMjg4VjM1MmMwLTE3LjcgMTQuMy0zMiAzMi0zMmg4MFY5NmMwLTguOC03LjItMTYtMTYtMTZINjR6TTI4OCA0ODBINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFYzMjB2NS41YzAgMTctNi43IDMzLjMtMTguNyA0NS4zbC05MC41IDkwLjVjLTEyIDEyLTI4LjMgMTguNy00NS4zIDE4LjdIMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdPYmplY3RHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAxMTUuOEMzOC4yIDEwNyAzMiA5NC4yIDMyIDgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4YzE0LjIgMCAyNyA2LjIgMzUuOCAxNkg0NjAuMmM4LjgtOS44IDIxLjYtMTYgMzUuOC0xNmMyNi41IDAgNDggMjEuNSA0OCA0OGMwIDE0LjItNi4yIDI3LTE2IDM1LjhWMzk2LjJjOS44IDguOCAxNiAyMS42IDE2IDM1LjhjMCAyNi41LTIxLjUgNDgtNDggNDhjLTE0LjIgMC0yNy02LjItMzUuOC0xNkgxMTUuOGMtOC44IDkuOC0yMS42IDE2LTM1LjggMTZjLTI2LjUgMC00OC0yMS41LTQ4LTQ4YzAtMTQuMiA2LjItMjcgMTYtMzUuOFYxMTUuOHpNMTI1LjMgOTZjLTQuOCAxMy42LTE1LjYgMjQuNC0yOS4zIDI5LjNWMzg2LjdjMTMuNiA0LjggMjQuNCAxNS42IDI5LjMgMjkuM0g0NTAuN2M0LjgtMTMuNiAxNS42LTI0LjQgMjkuMy0yOS4zVjEyNS4zYy0xMy42LTQuOC0yNC40LTE1LjYtMjkuMy0yOS4zSDEyNS4zem0yLjcgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJIMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTYwek0yNTYgMzIwaDMyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjIyNGg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkgyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjMyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnT2JqZWN0VW5ncm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OC4yIDY2LjhjLS4xLS44LS4yLTEuNy0uMi0yLjVjMC0uMSAwLS4xIDAtLjJjMC04LjggNy4yLTE2IDE2LTE2Yy45IDAgMS45IC4xIDIuOCAuMkM3NC4zIDQ5LjUgODAgNTYuMSA4MCA2NGMwIDguOC03LjIgMTYtMTYgMTZjLTcuOSAwLTE0LjUtNS43LTE1LjgtMTMuMnpNMCA2NGMwIDI2LjkgMTYuNSA0OS45IDQwIDU5LjNWMjI4LjdDMTYuNSAyMzguMSAwIDI2MS4xIDAgMjg4YzAgMzUuMyAyOC43IDY0IDY0IDY0YzI2LjkgMCA0OS45LTE2LjUgNTkuMy00MEgzMjQuN2M5LjUgMjMuNSAzMi41IDQwIDU5LjMgNDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRjMC0yNi45LTE2LjUtNDkuOS00MC01OS4zVjEyMy4zYzIzLjUtOS41IDQwLTMyLjUgNDAtNTkuM2MwLTM1LjMtMjguNy02NC02NC02NGMtMjYuOSAwLTQ5LjkgMTYuNS01OS4zIDQwSDEyMy4zQzExMy45IDE2LjUgOTAuOSAwIDY0IDBDMjguNyAwIDAgMjguNyAwIDY0em0zNjggMGExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwek0zMjQuNyA4OGM2LjUgMTYgMTkuMyAyOC45IDM1LjMgMzUuM1YyMjguN2MtMTYgNi41LTI4LjkgMTkuMy0zNS4zIDM1LjNIMTIzLjNjLTYuNS0xNi0xOS4zLTI4LjktMzUuMy0zNS4zVjEyMy4zYzE2LTYuNSAyOC45LTE5LjMgMzUuMy0zNS4zSDMyNC43ek0zODQgMjcyYTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpNODAgMjg4YzAgNy45LTUuNyAxNC41LTEzLjIgMTUuOGMtLjggLjEtMS43IC4yLTIuNSAuMmwtLjIgMGMtOC44IDAtMTYtNy4yLTE2LTE2YzAtLjkgLjEtMS45IC4yLTIuOEM0OS41IDI3Ny43IDU2LjEgMjcyIDY0IDI3MmM4LjggMCAxNiA3LjIgMTYgMTZ6bTM5MS4zLTQwaDQ1LjRjNi41IDE2IDE5LjMgMjguOSAzNS4zIDM1LjNWMzg4LjdjLTE2IDYuNS0yOC45IDE5LjMtMzUuMyAzNS4zSDMxNS4zYy02LjUtMTYtMTkuMy0yOC45LTM1LjMtMzUuM1YzNTJIMjMydjM2LjdjLTIzLjUgOS41LTQwIDMyLjUtNDAgNTkuM2MwIDM1LjMgMjguNyA2NCA2NCA2NGMyNi45IDAgNDkuOS0xNi41IDU5LjMtNDBINTE2LjdjOS41IDIzLjUgMzIuNSA0MCA1OS4zIDQwYzM1LjMgMCA2NC0yOC43IDY0LTY0YzAtMjYuOS0xNi41LTQ5LjktNDAtNTkuM1YyODMuM2MyMy41LTkuNSA0MC0zMi41IDQwLTU5LjNjMC0zNS4zLTI4LjctNjQtNjQtNjRjLTI2LjkgMC00OS45IDE2LjUtNTkuMyA0MEg0NDh2MTYuNGM5LjggOC44IDE3LjggMTkuNSAyMy4zIDMxLjZ6bTg4LjktMjYuN2ExNiAxNiAwIDEgMSAzMS41IDUuNSAxNiAxNiAwIDEgMSAtMzEuNS01LjV6TTI3MS44IDQ1MC43YTE2IDE2IDAgMSAxIC0zMS41LTUuNSAxNiAxNiAwIDEgMSAzMS41IDUuNXptMzAxLjUgMTNjLTcuNS0xLjMtMTMuMi03LjktMTMuMi0xNS44YzAtOC44IDcuMi0xNiAxNi0xNmM3LjkgMCAxNC41IDUuNyAxNS44IDEzLjJsMCAuMWMuMSAuOSAuMiAxLjggLjIgMi43YzAgOC44LTcuMiAxNi0xNiAxNmMtLjkgMC0xLjktLjEtMi44LS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdQYXBlclBsYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjEgMjYwLjJjLTIyLjYgMTIuOS0yMC41IDQ3LjMgMy42IDU3LjNMMTYwIDM3NlY0NzkuM2MwIDE4LjEgMTQuNiAzMi43IDMyLjcgMzIuN2M5LjcgMCAxOC45LTQuMyAyNS4xLTExLjhsNjItNzQuMyAxMjMuOSA1MS42YzE4LjkgNy45IDQwLjgtNC41IDQzLjktMjQuN2w2NC00MTZjMS45LTEyLjEtMy40LTI0LjMtMTMuNS0zMS4ycy0yMy4zLTcuNS0zNC0xLjRsLTQ0OCAyNTZ6bTUyLjEgMjUuNUw0MDkuNyA5MC42IDE5MC4xIDMzNmwxLjIgMUw2OC4yIDI4NS43ek00MDMuMyA0MjUuNEwyMzYuNyAzNTUuOSA0NTAuOCAxMTYuNiA0MDMuMyA0MjUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnUGFzdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA0LjYgNDhINjRDMjguNyA0OCAwIDc2LjcgMCAxMTJWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0aDk2VjQwMEg2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZIODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzIuNEMyMDIgMTA4LjQgMjI3LjYgOTYgMjU2IDk2aDYyYy03LjEtMjcuNi0zMi4yLTQ4LTYyLTQ4SDIxNS40QzIxMS42IDIwLjkgMTg4LjIgMCAxNjAgMHMtNTEuNiAyMC45LTU1LjQgNDh6TTE0NCA1NmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwek00NDggNDY0SDI1NmMtOC44IDAtMTYtNy4yLTE2LTE2VjE5MmMwLTguOCA3LjItMTYgMTYtMTZsMTQwLjEgMEw0NjQgMjQzLjlWNDQ4YzAgOC44LTcuMiAxNi0xNiAxNnpNMjU2IDUxMkg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjQzLjljMC0xMi43LTUuMS0yNC45LTE0LjEtMzMuOWwtNjcuOS02Ny45Yy05LTktMjEuMi0xNC4xLTMzLjktMTQuMUgyNTZjLTM1LjMgMC02NCAyOC43LTY0IDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnUGVuVG9TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQxIDU4LjlMNDUzLjEgNzFjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMNDI0IDEzNC4xIDM3Ny45IDg4IDQwNyA1OC45YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwek0yMDkuOCAyNTYuMkwzNDQgMTIxLjkgMzkwLjEgMTY4IDI1NS44IDMwMi4yYy0yLjkgMi45LTYuNSA1LTEwLjQgNi4xbC01OC41IDE2LjcgMTYuNy01OC41YzEuMS0zLjkgMy4yLTcuNSA2LjEtMTAuNHpNMzczLjEgMjVMMTc1LjggMjIyLjJjLTguNyA4LjctMTUgMTkuNC0xOC4zIDMxLjFsLTI4LjYgMTAwYy0yLjQgOC40LS4xIDE3LjQgNi4xIDIzLjZzMTUuMiA4LjUgMjMuNiA2LjFsMTAwLTI4LjZjMTEuOC0zLjQgMjIuNS05LjcgMzEuMS0xOC4zTDQ4NyAxMzguOWMyOC4xLTI4LjEgMjguMS03My43IDAtMTAxLjhMNDc0LjkgMjVDNDQ2LjgtMy4xIDQwMS4yLTMuMSAzNzMuMSAyNXpNODggNjRDMzkuNCA2NCAwIDEwMy40IDAgMTUyVjQyNGMwIDQ4LjYgMzkuNCA4OCA4OCA4OEgzNjBjNDguNiAwIDg4LTM5LjQgODgtODhWMzEyYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjQyNGMwIDIyLjEtMTcuOSA0MC00MCA0MEg4OGMtMjIuMSAwLTQwLTE3LjktNDAtNDBWMTUyYzAtMjIuMSAxNy45LTQwIDQwLTQwSDIwMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnUmVjdGFuZ2xlTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2VjQxNmMwIDguOCA3LjIgMTYgMTYgMTZINTEyYzguOCAwIDE2LTcuMiAxNi0xNlY5NmMwLTguOC03LjItMTYtMTYtMTZINjR6TTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6bTk2IDY0YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTEwNCAwYzAtMTMuMyAxMC43LTI0IDI0LTI0SDQ0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0wIDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0SDQ0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0wIDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0SDQ0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0tNzItNjRhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0ek05NiAzNTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnUmVjdGFuZ2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgODBjLTguOCAwLTE2IDcuMi0xNiAxNlY0MTZjMCA4LjggNy4yIDE2IDE2IDE2SDQ0OGM4LjggMCAxNi03LjIgMTYtMTZWOTZjMC04LjgtNy4yLTE2LTE2LTE2SDY0ek0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2em0xNzUgNzljOS40LTkuNCAyNC42LTkuNCAzMy45IDBsNDcgNDcgNDctNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC00NyA0NyA0NyA0N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00Ny00Ny00NyA0N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0Ny00Ny00Ny00N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1JlZ2lzdGVyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ4YTIwOCAyMDggMCAxIDEgMCA0MTYgMjA4IDIwOCAwIDEgMSAwLTQxNnptMCA0NjRBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNjAgMTUyVjI2NHY5NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI4OGg2MC45bDM3LjIgODEuOWM1LjUgMTIuMSAxOS43IDE3LjQgMzEuOCAxMS45czE3LjQtMTkuNyAxMS45LTMxLjhMMzE1LjcgMjc1YzIxLjgtMTQuMyAzNi4zLTM5IDM2LjMtNjdjMC00NC4yLTM1LjgtODAtODAtODBIMTg0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptNDggODhWMTc2aDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU2hhcmVGcm9tU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAyNTUuNFYyNDAgMjA4YzAtOC44LTcuMi0xNi0xNi0xNkgzNTIgMzM2IDI4OS41Yy01MC45IDAtOTMuOSAzMy41LTEwOC4zIDc5LjZjLTMuMy05LjQtNS4yLTE5LjgtNS4yLTMxLjZjMC02MS45IDUwLjEtMTEyIDExMi0xMTJoNDggMTYgMzJjOC44IDAgMTYtNy4yIDE2LTE2VjgwIDY0LjZMNTA2IDE2MCA0MDAgMjU1LjR6TTMzNiAyNDBoMTZ2NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJoMy43YzcuOSAwIDE1LjUtMi45IDIxLjQtOC4ybDEzOS0xMjUuMWM3LjYtNi44IDExLjktMTYuNSAxMS45LTI2LjdzLTQuMy0xOS45LTExLjktMjYuN0w0MDkuOSA4LjlDNDAzLjUgMy4yIDM5NS4zIDAgMzg2LjcgMEMzNjcuNSAwIDM1MiAxNS41IDM1MiAzNC43VjgwSDMzNiAzMDQgMjg4Yy04OC40IDAtMTYwIDcxLjYtMTYwIDE2MGMwIDYwLjQgMzQuNiA5OS4xIDYzLjkgMTIwLjljNS45IDQuNCAxMS41IDguMSAxNi43IDExLjJjNC40IDIuNyA4LjUgNC45IDExLjkgNi42YzMuNCAxLjcgNi4yIDMgOC4yIDMuOWMyLjIgMSA0LjYgMS40IDcuMSAxLjRoMi41YzkuOCAwIDE3LjgtOCAxNy44LTE3LjhjMC03LjgtNS4zLTE0LjctMTEuNi0xOS41bDAgMGMtLjQtLjMtLjctLjUtMS4xLS44Yy0xLjctMS4xLTMuNC0yLjUtNS00LjFjLS44LS44LTEuNy0xLjYtMi41LTIuNnMtMS42LTEuOS0yLjQtMi45Yy0xLjgtMi41LTMuNS01LjMtNS04LjVjLTIuNi02LTQuMy0xMy4zLTQuMy0yMi40YzAtMzYuMSAyOS4zLTY1LjUgNjUuNS02NS41SDMwNGgzMnpNNzIgMzJDMzIuMiAzMiAwIDY0LjIgMCAxMDRWNDQwYzAgMzkuOCAzMi4yIDcyIDcyIDcySDQwOGMzOS44IDAgNzItMzIuMiA3Mi03MlYzNzZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRINzJjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjEwNGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg2NGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg3MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU25vd2ZsYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0VjcwLjFsMjMtMjNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC01NyA1N3Y3Ni41bDY2LjItMzguMiAyMC45LTc3LjhjMy40LTEyLjggMTYuNi0yMC40IDI5LjQtMTdzMjAuNCAxNi42IDE3IDI5LjRMMzczIDE0Mi4ybDM3LjEtMjEuNGMxMS41LTYuNiAyNi4yLTIuNyAzMi44IDguOHMyLjcgMjYuMi04LjggMzIuOEwzOTcgMTgzLjhsMzEuNSA4LjRjMTIuOCAzLjQgMjAuNCAxNi42IDE3IDI5LjRzLTE2LjYgMjAuNC0yOS40IDE3bC03Ny44LTIwLjlMMjcyIDI1Nmw2Ni4yIDM4LjIgNzcuOC0yMC45YzEyLjgtMy40IDI2IDQuMiAyOS40IDE3cy00LjIgMjYtMTcgMjkuNEwzOTcgMzI4LjJsMzcuMSAyMS40YzExLjUgNi42IDE1LjQgMjEuMyA4LjggMzIuOHMtMjEuMyAxNS40LTMyLjggOC44TDM3MyAzNjkuOGw4LjQgMzEuNWMzLjQgMTIuOC00LjIgMjYtMTcgMjkuNHMtMjYtNC4yLTI5LjQtMTdsLTIwLjktNzcuOEwyNDggMjk3LjZ2NzYuNWw1NyA1N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC0yMy0yM1Y0ODhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWNDQxLjlsLTIzIDIzYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDU3LTU3VjI5Ny42bC02Ni4yIDM4LjItMjAuOSA3Ny44Yy0zLjQgMTIuOC0xNi42IDIwLjQtMjkuNCAxN3MtMjAuNC0xNi42LTE3LTI5LjRMNzUgMzY5LjggMzcuOSAzOTEuMmMtMTEuNSA2LjYtMjYuMiAyLjctMzIuOC04LjhzLTIuNy0yNi4yIDguOC0zMi44TDUxIDMyOC4ybC0zMS41LTguNGMtMTIuOC0zLjQtMjAuNC0xNi42LTE3LTI5LjRzMTYuNi0yMC40IDI5LjQtMTdsNzcuOCAyMC45TDE3NiAyNTZsLTY2LjItMzguMkwzMS45IDIzOC42Yy0xMi44IDMuNC0yNi00LjItMjkuNC0xN3M0LjItMjYgMTctMjkuNEw1MSAxODMuOCAxMy45IDE2Mi40Yy0xMS41LTYuNi0xNS40LTIxLjMtOC44LTMyLjhzMjEuMy0xNS40IDMyLjgtOC44TDc1IDE0Mi4ybC04LjQtMzEuNWMtMy40LTEyLjggNC4yLTI2IDE3LTI5LjRzMjYgNC4yIDI5LjQgMTdsMjAuOSA3Ny44TDIwMCAyMTQuNFYxMzcuOUwxNDMgODFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwyMyAyM1YyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3F1YXJlQ2FyZXREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCA0MzJjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzIwYzAtOC44LTcuMi0xNi0xNi0xNkw2NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzIwYzAgOC44IDcuMiAxNiAxNiAxNmwzMjAgMHptNjQtMTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDMyMCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwek0yMjQgMzUyYy02LjcgMC0xMy0yLjgtMTcuNi03LjdsLTEwNC0xMTJjLTYuNS03LTguMi0xNy4yLTQuNC0yNS45czEyLjUtMTQuNCAyMi0xNC40bDIwOCAwYzkuNSAwIDE4LjIgNS43IDIyIDE0LjRzMi4xIDE4LjktNC40IDI1LjlsLTEwNCAxMTJjLTQuNSA0LjktMTAuOSA3LjctMTcuNiA3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NxdWFyZUNhcmV0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCA0MTZjMCA4LjggNy4yIDE2IDE2IDE2bDMyMCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyMGMwLTguOC03LjItMTYtMTYtMTZMNjQgODBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyMHptMTYgNjRjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzIwIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzMjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwem02NC0yMjRjMC02LjcgMi44LTEzIDcuNy0xNy42bDExMi0xMDRjNy02LjUgMTcuMi04LjIgMjUuOS00LjRzMTQuNCAxMi41IDE0LjQgMjJsMCAyMDhjMCA5LjUtNS43IDE4LjItMTQuNCAyMnMtMTguOSAyLjEtMjUuOS00LjRsLTExMi0xMDRjLTQuOS00LjUtNy43LTEwLjktNy43LTE3LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NxdWFyZUNhcmV0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDk2YzAtOC44LTcuMi0xNi0xNi0xNkw2NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzIwYzAgOC44IDcuMiAxNiAxNiAxNmwzMjAgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMjB6TTM4NCAzMmMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzIwIDB6TTMyMCAyNTZjMCA2LjctMi44IDEzLTcuNyAxNy42bC0xMTIgMTA0Yy03IDYuNS0xNy4yIDguMi0yNS45IDQuNHMtMTQuNC0xMi41LTE0LjQtMjJsMC0yMDhjMC05LjUgNS43LTE4LjIgMTQuNC0yMnMxOC45LTIuMSAyNS45IDQuNGwxMTIgMTA0YzQuOSA0LjUgNy43IDEwLjkgNy43IDE3LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NxdWFyZUNhcmV0VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgODBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyMGMwIDguOCA3LjIgMTYgMTYgMTZsMzIwIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzIwYzAtOC44LTcuMi0xNi0xNi0xNkw2NCA4MHpNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZ6bTIyNCA2NGM2LjcgMCAxMyAyLjggMTcuNiA3LjdsMTA0IDExMmM2LjUgNyA4LjIgMTcuMiA0LjQgMjUuOXMtMTIuNSAxNC40LTIyIDE0LjRsLTIwOCAwYy05LjUgMC0xOC4yLTUuNy0yMi0xNC40cy0yLjEtMTguOSA0LjQtMjUuOWwxMDQtMTEyYzQuNS00LjkgMTAuOS03LjcgMTcuNi03Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NxdWFyZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDgwYy04LjggMC0xNiA3LjItMTYgMTZWNDE2YzAgOC44IDcuMiAxNiAxNiAxNkgzODRjOC44IDAgMTYtNy4yIDE2LTE2Vjk2YzAtOC44LTcuMi0xNi0xNi0xNkg2NHpNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgzODRjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NnpNMzM3IDIwOUwyMDkgMzM3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtNjQtNjRjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw0NyA0N0wzMDMgMTc1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3F1YXJlRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgNDhWNDY0SDQ4VjQ4SDQ2NHpNNDggMEgwVjQ4IDQ2NHY0OEg0OCA0NjRoNDhWNDY0IDQ4IDBINDY0IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTcXVhcmVNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2VjQxNmMwIDguOCA3LjIgMTYgMTYgMTZIMzg0YzguOCAwIDE2LTcuMiAxNi0xNlY5NmMwLTguOC03LjItMTYtMTYtMTZINjR6TTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMzg0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6TTE1MiAyMzJIMjk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDE1MmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3F1YXJlUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2VjQxNmMwIDguOCA3LjIgMTYgMTYgMTZIMzg0YzguOCAwIDE2LTcuMiAxNi0xNlY5NmMwLTguOC03LjItMTYtMTYtMTZINjR6TTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMzg0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6TTIwMCAzNDRWMjgwSDEzNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg2NFYxNjhjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY2NGg2NGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNDh2NjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgODBjOC44IDAgMTYgNy4yIDE2IDE2VjQxNmMwIDguOC03LjIgMTYtMTYgMTZINjRjLTguOCAwLTE2LTcuMi0xNi0xNlY5NmMwLTguOCA3LjItMTYgMTYtMTZIMzg0ek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1N0YXJIYWxmU3Ryb2tlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwOS41IDEzLjVDMzA1LjUgNS4yIDI5Ny4xIDAgMjg3LjkgMHMtMTcuNiA1LjItMjEuNiAxMy41TDE5Ny43IDE1NC44IDQ0LjUgMTc3LjVjLTkgMS4zLTE2LjUgNy42LTE5LjMgMTYuM3MtLjUgMTguMSA1LjkgMjQuNUwxNDIuMiAzMjguNCAxMTYgNDgzLjljLTEuNSA5IDIuMiAxOC4xIDkuNyAyMy41czE3LjMgNiAyNS4zIDEuN2wxMzctNzMuMiAxMzcgNzMuMmM4LjEgNC4zIDE3LjkgMy43IDI1LjMtMS43czExLjItMTQuNSA5LjctMjMuNUw0MzMuNiAzMjguNCA1NDQuOCAyMTguMmM2LjUtNi40IDguNy0xNS45IDUuOS0yNC41cy0xMC4zLTE0LjktMTkuMy0xNi4zTDM3OC4xIDE1NC44IDMwOS41IDEzLjV6TTI4OCAzODQuN1Y3OS4xbDUyLjUgMTA4LjFjMy41IDcuMSAxMC4yIDEyLjEgMTguMSAxMy4zbDExOC4zIDE3LjVMMzkxIDMwM2MtNS41IDUuNS04LjEgMTMuMy02LjggMjFsMjAuMiAxMTkuNkwyOTkuMiAzODcuNWMtMy41LTEuOS03LjQtMi44LTExLjItMi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTdGFySGFsZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTMuMyAuNmMxMC45IDIuNSAxOC42IDEyLjIgMTguNiAyMy40VjQwOC43YzAgOC45LTQuOSAxNy0xMi43IDIxLjJMMTUxIDUwOS4xYy04LjEgNC4zLTE3LjkgMy43LTI1LjMtMS43cy0xMS4yLTE0LjUtOS43LTIzLjVsMjYuMi0xNTUuNkwzMS4xIDIxOC4zYy02LjUtNi40LTguNy0xNS45LTUuOS0yNC41czEwLjMtMTQuOSAxOS4zLTE2LjNsMTUzLjItMjIuNkwyNjYuMyAxMy41YzQuOS0xMC4xIDE2LjEtMTUuNCAyNy0xMi45ek0yNjMuOSAxMjguNGwtMjguNiA1OC44Yy0zLjUgNy4xLTEwLjIgMTIuMS0xOC4xIDEzLjNMOTkgMjE3LjkgMTg0LjkgMzAzYzUuNSA1LjUgOC4xIDEzLjMgNi44IDIxTDE3MS40IDQ0My43bDkyLjUtNDkuNFYxMjguNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3RhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODcuOSAwYzkuMiAwIDE3LjYgNS4yIDIxLjYgMTMuNWw2OC42IDE0MS4zIDE1My4yIDIyLjZjOSAxLjMgMTYuNSA3LjYgMTkuMyAxNi4zcy41IDE4LjEtNS45IDI0LjVMNDMzLjYgMzI4LjRsMjYuMiAxNTUuNmMxLjUgOS0yLjIgMTguMS05LjcgMjMuNXMtMTcuMyA2LTI1LjMgMS43bC0xMzctNzMuMkwxNTEgNTA5LjFjLTguMSA0LjMtMTcuOSAzLjctMjUuMy0xLjdzLTExLjItMTQuNS05LjctMjMuNWwyNi4yLTE1NS42TDMxLjEgMjE4LjJjLTYuNS02LjQtOC43LTE1LjktNS45LTI0LjVzMTAuMy0xNC45IDE5LjMtMTYuM2wxNTMuMi0yMi42TDI2Ni4zIDEzLjVDMjcwLjQgNS4yIDI3OC43IDAgMjg3LjkgMHptMCA3OUwyMzUuNCAxODcuMmMtMy41IDcuMS0xMC4yIDEyLjEtMTguMSAxMy4zTDk5IDIxNy45IDE4NC45IDMwM2M1LjUgNS41IDguMSAxMy4zIDYuOCAyMUwxNzEuNCA0NDMuN2wxMDUuMi01Ni4yYzcuMS0zLjggMTUuNi0zLjggMjIuNiAwbDEwNS4yIDU2LjJMMzg0LjIgMzI0LjFjLTEuMy03LjcgMS4yLTE1LjUgNi44LTIxbDg1LjktODUuMUwzNTguNiAyMDAuNWMtNy44LTEuMi0xNC42LTYuMS0xOC4xLTEzLjNMMjg3LjkgNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1N1biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzUuNyAxOS43Yy0xLjUtOC02LjktMTQuNy0xNC40LTE3LjhzLTE2LjEtMi4yLTIyLjggMi40TDI1NiA2MS4xIDE3My41IDQuMmMtNi43LTQuNi0xNS4zLTUuNS0yMi44LTIuNHMtMTIuOSA5LjgtMTQuNCAxNy44bC0xOC4xIDk4LjVMMTkuNyAxMzYuM2MtOCAxLjUtMTQuNyA2LjktMTcuOCAxNC40cy0yLjIgMTYuMSAyLjQgMjIuOEw2MS4xIDI1NiA0LjIgMzM4LjVjLTQuNiA2LjctNS41IDE1LjMtMi40IDIyLjhzOS44IDEzIDE3LjggMTQuNGw5OC41IDE4LjEgMTguMSA5OC41YzEuNSA4IDYuOSAxNC43IDE0LjQgMTcuOHMxNi4xIDIuMiAyMi44LTIuNEwyNTYgNDUwLjlsODIuNSA1Ni45YzYuNyA0LjYgMTUuMyA1LjUgMjIuOCAyLjRzMTIuOS05LjggMTQuNC0xNy44bDE4LjEtOTguNSA5OC41LTE4LjFjOC0xLjUgMTQuNy02LjkgMTcuOC0xNC40czIuMi0xNi4xLTIuNC0yMi44TDQ1MC45IDI1Nmw1Ni45LTgyLjVjNC42LTYuNyA1LjUtMTUuMyAyLjQtMjIuOHMtOS44LTEyLjktMTcuOC0xNC40bC05OC41LTE4LjFMMzc1LjcgMTkuN3pNMjY5LjYgMTEwbDY1LjYtNDUuMiAxNC40IDc4LjNjMS44IDkuOCA5LjUgMTcuNSAxOS4zIDE5LjNsNzguMyAxNC40TDQwMiAyNDIuNGMtNS43IDguMi01LjcgMTkgMCAyNy4ybDQ1LjIgNjUuNi03OC4zIDE0LjRjLTkuOCAxLjgtMTcuNSA5LjUtMTkuMyAxOS4zbC0xNC40IDc4LjNMMjY5LjYgNDAyYy04LjItNS43LTE5LTUuNy0yNy4yIDBsLTY1LjYgNDUuMi0xNC40LTc4LjNjLTEuOC05LjgtOS41LTE3LjUtMTkuMy0xOS4zTDY0LjggMzM1LjIgMTEwIDI2OS42YzUuNy04LjIgNS43LTE5IDAtMjcuMkw2NC44IDE3Ni44bDc4LjMtMTQuNGM5LjgtMS44IDE3LjUtOS41IDE5LjMtMTkuM2wxNC40LTc4LjNMMjQyLjQgMTEwYzguMiA1LjcgMTkgNS43IDI3LjIgMHpNMjU2IDM2OGExMTIgMTEyIDAgMSAwIDAtMjI0IDExMiAxMTIgMCAxIDAgMCAyMjR6TTE5MiAyNTZhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdUaHVtYnNEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMy44IDQ3Ny4yYy0zOC4yIDEwLjktNzguMS0xMS4yLTg5LTQ5LjRsLTUuNy0yMGMtMy43LTEzLTEwLjQtMjUtMTkuNS0zNWwtNTEuMy01Ni40Yy04LjktOS44LTguMi0yNSAxLjYtMzMuOXMyNS04LjIgMzMuOSAxLjZsNTEuMyA1Ni40YzE0LjEgMTUuNSAyNC40IDM0IDMwLjEgNTQuMWw1LjcgMjBjMy42IDEyLjcgMTYuOSAyMC4xIDI5LjcgMTYuNXMyMC4xLTE2LjkgMTYuNS0yOS43bC01LjctMjBjLTUuNy0xOS45LTE0LjctMzguNy0yNi42LTU1LjVjLTUuMi03LjMtNS44LTE2LjktMS43LTI0LjlzMTIuMy0xMyAyMS4zLTEzTDQ0OCAyODhjOC44IDAgMTYtNy4yIDE2LTE2YzAtNi44LTQuMy0xMi43LTEwLjQtMTVjLTcuNC0yLjgtMTMtOS0xNC45LTE2LjdzLjEtMTUuOCA1LjMtMjEuN2MyLjUtMi44IDQtNi41IDQtMTAuNmMwLTcuOC01LjYtMTQuMy0xMy0xNS43Yy04LjItMS42LTE1LjEtNy4zLTE4LTE1LjJzLTEuNi0xNi43IDMuNi0yMy4zYzIuMS0yLjcgMy40LTYuMSAzLjQtOS45YzAtNi43LTQuMi0xMi42LTEwLjItMTQuOWMtMTEuNS00LjUtMTcuNy0xNi45LTE0LjQtMjguOGMuNC0xLjMgLjYtMi44IC42LTQuM2MwLTguOC03LjItMTYtMTYtMTZIMjg2LjVjLTEyLjYgMC0yNSAzLjctMzUuNSAxMC43bC02MS43IDQxLjFjLTExIDcuNC0yNS45IDQuNC0zMy4zLTYuN3MtNC40LTI1LjkgNi43LTMzLjNsNjEuNy00MS4xYzE4LjQtMTIuMyA0MC0xOC44IDYyLjEtMTguOEgzODRjMzQuNyAwIDYyLjkgMjcuNiA2NCA2MmMxNC42IDExLjcgMjQgMjkuNyAyNCA1MGMwIDQuNS0uNSA4LjgtMS4zIDEzYzE1LjQgMTEuNyAyNS4zIDMwLjIgMjUuMyA1MWMwIDYuNS0xIDEyLjgtMi44IDE4LjdDNTA0LjggMjM4LjMgNTEyIDI1NC4zIDUxMiAyNzJjMCAzNS4zLTI4LjYgNjQtNjQgNjRsLTkyLjMgMGM0LjcgMTAuNCA4LjcgMjEuMiAxMS44IDMyLjJsNS43IDIwYzEwLjkgMzguMi0xMS4yIDc4LjEtNDkuNCA4OXpNMzIgMzg0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJIOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdUaHVtYnNVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjMuOCAzNC44Yy0zOC4yLTEwLjktNzguMSAxMS4yLTg5IDQ5LjRsLTUuNyAyMGMtMy43IDEzLTEwLjQgMjUtMTkuNSAzNWwtNTEuMyA1Ni40Yy04LjkgOS44LTguMiAyNSAxLjYgMzMuOXMyNSA4LjIgMzMuOS0xLjZsNTEuMy01Ni40YzE0LjEtMTUuNSAyNC40LTM0IDMwLjEtNTQuMWw1LjctMjBjMy42LTEyLjcgMTYuOS0yMC4xIDI5LjctMTYuNXMyMC4xIDE2LjkgMTYuNSAyOS43bC01LjcgMjBjLTUuNyAxOS45LTE0LjcgMzguNy0yNi42IDU1LjVjLTUuMiA3LjMtNS44IDE2LjktMS43IDI0LjlzMTIuMyAxMyAyMS4zIDEzTDQ0OCAyMjRjOC44IDAgMTYgNy4yIDE2IDE2YzAgNi44LTQuMyAxMi43LTEwLjQgMTVjLTcuNCAyLjgtMTMgOS0xNC45IDE2LjdzLjEgMTUuOCA1LjMgMjEuN2MyLjUgMi44IDQgNi41IDQgMTAuNmMwIDcuOC01LjYgMTQuMy0xMyAxNS43Yy04LjIgMS42LTE1LjEgNy4zLTE4IDE1LjJzLTEuNiAxNi43IDMuNiAyMy4zYzIuMSAyLjcgMy40IDYuMSAzLjQgOS45YzAgNi43LTQuMiAxMi42LTEwLjIgMTQuOWMtMTEuNSA0LjUtMTcuNyAxNi45LTE0LjQgMjguOGMuNCAxLjMgLjYgMi44IC42IDQuM2MwIDguOC03LjIgMTYtMTYgMTZIMjg2LjVjLTEyLjYgMC0yNS0zLjctMzUuNS0xMC43bC02MS43LTQxLjFjLTExLTcuNC0yNS45LTQuNC0zMy4zIDYuN3MtNC40IDI1LjkgNi43IDMzLjNsNjEuNyA0MS4xYzE4LjQgMTIuMyA0MCAxOC44IDYyLjEgMTguOEgzODRjMzQuNyAwIDYyLjktMjcuNiA2NC02MmMxNC42LTExLjcgMjQtMjkuNyAyNC01MGMwLTQuNS0uNS04LjgtMS4zLTEzYzE1LjQtMTEuNyAyNS4zLTMwLjIgMjUuMy01MWMwLTYuNS0xLTEyLjgtMi44LTE4LjdDNTA0LjggMjczLjcgNTEyIDI1Ny43IDUxMiAyNDBjMC0zNS4zLTI4LjYtNjQtNjQtNjRsLTkyLjMgMGM0LjctMTAuNCA4LjctMjEuMiAxMS44LTMyLjJsNS43LTIwYzEwLjktMzguMi0xMS4yLTc4LjEtNDkuNC04OXpNMzIgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJIOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdUcmFzaENhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzAuNSA1MS42TDE1MS41IDgwaDE0NWwtMTktMjguNGMtMS41LTIuMi00LTMuNi02LjctMy42SDE3Ny4xYy0yLjcgMC01LjIgMS4zLTYuNyAzLjZ6bTE0Ny0yNi42TDM1NC4yIDgwSDM2OGg0OCA4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0aC04VjQzMmMwIDQ0LjItMzUuOCA4MC04MCA4MEgxMTJjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjEyOEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRTMTAuNyA4MCAyNCA4MGg4SDgwIDkzLjhsMzYuNy01NS4xQzE0MC45IDkuNCAxNTguNCAwIDE3Ny4xIDBoOTMuN2MxOC43IDAgMzYuMiA5LjQgNDYuNiAyNC45ek04MCAxMjhWNDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDMzNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxMjhIODB6bTgwIDY0VjQwMGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYxOTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnptODAgMFY0MDBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMTkyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6bTgwIDBWNDAwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjE5MmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNCAxMjhhODAgODAgMCAxIDAgLTE2MCAwIDgwIDgwIDAgMSAwIDE2MCAwek05NiAxMjhhMTI4IDEyOCAwIDEgMSAyNTYgMEExMjggMTI4IDAgMSAxIDk2IDEyOHpNNDkuMyA0NjRIMzk4LjdjLTguOS02My4zLTYzLjMtMTEyLTEyOS0xMTJIMTc4LjNjLTY1LjcgMC0xMjAuMSA0OC43LTEyOSAxMTJ6TTAgNDgyLjNDMCAzODMuOCA3OS44IDMwNCAxNzguMyAzMDRoOTEuNEMzNjguMiAzMDQgNDQ4IDM4My44IDQ0OCA0ODIuM2MwIDE2LjQtMTMuMyAyOS43LTI5LjcgMjkuN0gyOS43QzEzLjMgNTEyIDAgNDk4LjcgMCA0ODIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnV2luZG93TWF4aW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjMgODkuNUMuMSA5MS42IDAgOTMuOCAwIDk2VjIyNCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjI0IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0Yy0yLjIgMC00LjQgLjEtNi41IC4zYy05LjIgLjktMTcuOCAzLjgtMjUuNSA4LjJDMjEuOCA0Ni41IDEzLjQgNTUuMSA3LjcgNjUuNWMtMy45IDcuMy02LjUgMTUuNC03LjQgMjR6TTQ4IDIyNEg0NjRsMCAxOTJjMCA4LjgtNy4yIDE2LTE2IDE2TDY0IDQzMmMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdXaW5kb3dNaW5pbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA0MzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINDg4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdXaW5kb3dSZXN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMiA0OEgyMDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjk2SDEyOFY4MGMwLTQ0LjIgMzUuOC04MCA4MC04MEg0MzJjNDQuMiAwIDgwIDM1LjggODAgODBWMzA0YzAgNDQuMi0zNS44IDgwLTgwIDgwSDQxNlYzMzZoMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWODBjMC0xNy43LTE0LjMtMzItMzItMzJ6TTQ4IDQ0OGMwIDguOCA3LjIgMTYgMTYgMTZIMzIwYzguOCAwIDE2LTcuMiAxNi0xNlYyNTZINDhWNDQ4ek02NCAxMjhIMzIwYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTkyYzAtMzUuMyAyOC43LTY0IDY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG4iLCJjb25zdCBjb3B5VG9DbGlwYm9hcmQgPSAodmFsdWVUb0NvcHksIHNldElzSnVzdENvcGllZCkgPT4ge1xuICBzZXRJc0p1c3RDb3BpZWQodHJ1ZSk7XG4gIG5hdmlnYXRvcj8uY2xpcGJvYXJkPy53cml0ZVRleHQodmFsdWVUb0NvcHkpLnRoZW4oKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKFwiQ29weSBTdWNjZXNzZnVsbFwiKTtcbiAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBDb3B5IHRleHQ6IFwiLCBlcnJvcik7XG4gICAgc2V0SXNKdXN0Q29waWVkKGZhbHNlKTtcbiAgfSk7XG4gIHNldFRpbWVvdXQoKCkgPT4gc2V0SXNKdXN0Q29waWVkKGZhbHNlKSwgNGUzKTtcbn07XG5cbmV4cG9ydCB7IGNvcHlUb0NsaXBib2FyZCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVscGVycy5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEZhQ2hlY2ssIEZhQ2xpcGJvYXJkTGlzdCB9IGZyb20gJ3JlYWN0LWljb25zL2ZhNic7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBjb3B5VG9DbGlwYm9hcmQgfSBmcm9tICcuL2hlbHBlcnMubWpzJztcblxuY29uc3QgQ2xpcGJvYXJkV2l0aEljb24gPSBmb3J3YXJkUmVmKFxuICAoeyB2YWx1ZVRvQ29weSwgaWNvbjogSWNvbiA9IEZhQ2xpcGJvYXJkTGlzdCwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIGNsYXNzTmFtZSwgLi4ucmVzdCB9LCByZWYpID0+IHtcbiAgICBjb25zdCBbaXNKdXN0Q29waWVkLCBzZXRJc0p1c3RDb3BpZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuY2xpcGJvYXJkLndpdGhJY29uLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImJ1dHRvblwiLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSxcbiAgICAgICAgb25DbGljazogKCkgPT4gY29weVRvQ2xpcGJvYXJkKHZhbHVlVG9Db3B5LCBzZXRJc0p1c3RDb3BpZWQpLFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgICByZWYsXG4gICAgICAgIGNoaWxkcmVuOiBpc0p1c3RDb3BpZWQgPyAvKiBAX19QVVJFX18gKi8ganN4KEZhQ2hlY2ssIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBjbGFzc05hbWU6IHRoZW1lLmljb24uc3VjY2Vzc0ljb24gfSkgOiAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBjbGFzc05hbWU6IHRoZW1lLmljb24uZGVmYXVsdEljb24gfSlcbiAgICAgIH1cbiAgICApO1xuICB9XG4pO1xuXG5leHBvcnQgeyBDbGlwYm9hcmRXaXRoSWNvbiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q2xpcGJvYXJkV2l0aEljb24ubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4LCBqc3hzIH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBGYUNoZWNrLCBGYUNsaXBib2FyZExpc3QgfSBmcm9tICdyZWFjdC1pY29ucy9mYTYnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgY29weVRvQ2xpcGJvYXJkIH0gZnJvbSAnLi9oZWxwZXJzLm1qcyc7XG5cbmNvbnN0IENsaXBib2FyZFdpdGhJY29uVGV4dCA9IGZvcndhcmRSZWYoXG4gICh7IHZhbHVlVG9Db3B5LCBpY29uOiBJY29uID0gRmFDbGlwYm9hcmRMaXN0LCBsYWJlbCA9IFwiQ29weVwiLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgY2xhc3NOYW1lLCAuLi5yZXN0IH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IFtpc0p1c3RDb3BpZWQsIHNldElzSnVzdENvcGllZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5jbGlwYm9hcmQud2l0aEljb25UZXh0LCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImJ1dHRvblwiLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSxcbiAgICAgICAgb25DbGljazogKCkgPT4gY29weVRvQ2xpcGJvYXJkKHZhbHVlVG9Db3B5LCBzZXRJc0p1c3RDb3BpZWQpLFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgICByZWYsXG4gICAgICAgIGNoaWxkcmVuOiBpc0p1c3RDb3BpZWQgPyAvKiBAX19QVVJFX18gKi8ganN4cyhcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLmxhYmVsLmJhc2UsIGNoaWxkcmVuOiBbXG4gICAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChGYUNoZWNrLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgY2xhc3NOYW1lOiB0aGVtZS5pY29uLnN1Y2Nlc3NJY29uIH0pLFxuICAgICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5sYWJlbC5zdWNjZXNzVGV4dCwgY2hpbGRyZW46IFwiQ29waWVkXCIgfSlcbiAgICAgICAgXSB9KSA6IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUubGFiZWwuYmFzZSwgY2hpbGRyZW46IFtcbiAgICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBjbGFzc05hbWU6IHRoZW1lLmljb24uZGVmYXVsdEljb24gfSksXG4gICAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLmxhYmVsLmRlZmF1bHRUZXh0LCBjaGlsZHJlbjogbGFiZWwgfSlcbiAgICAgICAgXSB9KVxuICAgICAgfVxuICAgICk7XG4gIH1cbik7XG5cbmV4cG9ydCB7IENsaXBib2FyZFdpdGhJY29uVGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q2xpcGJvYXJkV2l0aEljb25UZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJy4uL1Rvb2x0aXAvVG9vbHRpcC5tanMnO1xuaW1wb3J0IHsgQ2xpcGJvYXJkV2l0aEljb24gfSBmcm9tICcuL0NsaXBib2FyZFdpdGhJY29uLm1qcyc7XG5pbXBvcnQgeyBDbGlwYm9hcmRXaXRoSWNvblRleHQgfSBmcm9tICcuL0NsaXBib2FyZFdpdGhJY29uVGV4dC5tanMnO1xuaW1wb3J0IHsgY29weVRvQ2xpcGJvYXJkIH0gZnJvbSAnLi9oZWxwZXJzLm1qcyc7XG5cbmNvbnN0IENsaXBib2FyZENvbXBvbmVudCA9IGZvcndhcmRSZWYoXG4gICh7IGNsYXNzTmFtZSwgdmFsdWVUb0NvcHksIGxhYmVsLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucmVzdCB9LCByZWYpID0+IHtcbiAgICBjb25zdCBbaXNKdXN0Q29waWVkLCBzZXRJc0p1c3RDb3BpZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuY2xpcGJvYXJkLmJ1dHRvbiwgY3VzdG9tVGhlbWUpO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFRvb2x0aXAsIHsgY29udGVudDogaXNKdXN0Q29waWVkID8gXCJDb3BpZWRcIiA6IFwiQ29weSB0byBjbGlwYm9hcmRcIiwgY2xhc3NOYW1lOiBcIlsmXypdOmN1cnNvci1wb2ludGVyXCIsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgXCJidXR0b25cIixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IGNvcHlUb0NsaXBib2FyZCh2YWx1ZVRvQ29weSwgc2V0SXNKdXN0Q29waWVkKSxcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgICAgcmVmLFxuICAgICAgICBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLmxhYmVsLCBjaGlsZHJlbjogbGFiZWwgfSlcbiAgICAgIH1cbiAgICApIH0pO1xuICB9XG4pO1xuQ2xpcGJvYXJkQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJDbGlwYm9hcmRcIjtcbkNsaXBib2FyZFdpdGhJY29uLmRpc3BsYXlOYW1lID0gXCJDbGlwYm9hcmQuV2l0aEljb25cIjtcbkNsaXBib2FyZFdpdGhJY29uVGV4dC5kaXNwbGF5TmFtZSA9IFwiQ2xpcGJvYXJkLldpdGhJY29uVGV4dFwiO1xuY29uc3QgQ2xpcGJvYXJkID0gT2JqZWN0LmFzc2lnbihDbGlwYm9hcmRDb21wb25lbnQsIHtcbiAgV2l0aEljb246IENsaXBib2FyZFdpdGhJY29uLFxuICBXaXRoSWNvblRleHQ6IENsaXBib2FyZFdpdGhJY29uVGV4dFxufSk7XG5cbmV4cG9ydCB7IENsaXBib2FyZCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q2xpcGJvYXJkLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgSGVscGVyVGV4dCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGNvbG9yID0gXCJkZWZhdWx0XCIsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICB2YWx1ZSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5oZWxwZXJUZXh0LCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwicFwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmJhc2UsIHRoZW1lLnJvb3QuY29sb3JzW2NvbG9yXSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuOiB2YWx1ZSA/PyBjaGlsZHJlbiA/PyBcIlwiIH0pO1xufTtcbkhlbHBlclRleHQuZGlzcGxheU5hbWUgPSBcIkhlbHBlclRleHRcIjtcblxuZXhwb3J0IHsgSGVscGVyVGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SGVscGVyVGV4dC5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBGcmFnbWVudCwganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IEhlbHBlclRleHQgfSBmcm9tICcuLi9IZWxwZXJUZXh0L0hlbHBlclRleHQubWpzJztcblxuY29uc3QgVGV4dElucHV0ID0gZm9yd2FyZFJlZihcbiAgKHtcbiAgICBhZGRvbixcbiAgICBjbGFzc05hbWUsXG4gICAgY29sb3IgPSBcImdyYXlcIixcbiAgICBoZWxwZXJUZXh0LFxuICAgIGljb246IEljb24sXG4gICAgcmlnaHRJY29uOiBSaWdodEljb24sXG4gICAgc2hhZG93LFxuICAgIHNpemluZyA9IFwibWRcIixcbiAgICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgICB0eXBlID0gXCJ0ZXh0XCIsXG4gICAgLi4ucHJvcHNcbiAgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS50ZXh0SW5wdXQsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiBbXG4gICAgICAgIGFkZG9uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5hZGRvbiwgY2hpbGRyZW46IGFkZG9uIH0pLFxuICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUuZmllbGQuYmFzZSwgY2hpbGRyZW46IFtcbiAgICAgICAgICBJY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmZpZWxkLmljb24uYmFzZSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goSWNvbiwgeyBjbGFzc05hbWU6IHRoZW1lLmZpZWxkLmljb24uc3ZnIH0pIH0pLFxuICAgICAgICAgIFJpZ2h0SWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgXCJkYXRhLXRlc3RpZFwiOiBcInJpZ2h0LWljb25cIiwgY2xhc3NOYW1lOiB0aGVtZS5maWVsZC5yaWdodEljb24uYmFzZSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goUmlnaHRJY29uLCB7IGNsYXNzTmFtZTogdGhlbWUuZmllbGQucmlnaHRJY29uLnN2ZyB9KSB9KSxcbiAgICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgICAgXCJpbnB1dFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgICAgICAgdGhlbWUuZmllbGQuaW5wdXQuYmFzZSxcbiAgICAgICAgICAgICAgICB0aGVtZS5maWVsZC5pbnB1dC5jb2xvcnNbY29sb3JdLFxuICAgICAgICAgICAgICAgIHRoZW1lLmZpZWxkLmlucHV0LnNpemVzW3NpemluZ10sXG4gICAgICAgICAgICAgICAgdGhlbWUuZmllbGQuaW5wdXQud2l0aEljb25bSWNvbiA/IFwib25cIiA6IFwib2ZmXCJdLFxuICAgICAgICAgICAgICAgIHRoZW1lLmZpZWxkLmlucHV0LndpdGhSaWdodEljb25bUmlnaHRJY29uID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgICAgICAgdGhlbWUuZmllbGQuaW5wdXQud2l0aEFkZG9uW2FkZG9uID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgICAgICAgdGhlbWUuZmllbGQuaW5wdXQud2l0aFNoYWRvd1tzaGFkb3cgPyBcIm9uXCIgOiBcIm9mZlwiXVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgICAgICAgcmVmXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICBdIH0pXG4gICAgICBdIH0pLFxuICAgICAgaGVscGVyVGV4dCAmJiAvKiBAX19QVVJFX18gKi8ganN4KEhlbHBlclRleHQsIHsgY29sb3IsIGNoaWxkcmVuOiBoZWxwZXJUZXh0IH0pXG4gICAgXSB9KTtcbiAgfVxuKTtcblRleHRJbnB1dC5kaXNwbGF5TmFtZSA9IFwiVGV4dElucHV0XCI7XG5cbmV4cG9ydCB7IFRleHRJbnB1dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGV4dElucHV0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IERhdGVwaWNrZXJDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuZnVuY3Rpb24gdXNlRGF0ZVBpY2tlckNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERhdGVwaWNrZXJDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlRGF0ZVBpY2tlckNvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBEYXRlUGlja2VyQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IERhdGVwaWNrZXJDb250ZXh0LCB1c2VEYXRlUGlja2VyQ29udGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGF0ZXBpY2tlckNvbnRleHQubWpzLm1hcFxuIiwidmFyIFZpZXdzID0gLyogQF9fUFVSRV9fICovICgoVmlld3MyKSA9PiB7XG4gIFZpZXdzMltWaWV3czJbXCJEYXlzXCJdID0gMF0gPSBcIkRheXNcIjtcbiAgVmlld3MyW1ZpZXdzMltcIk1vbnRoc1wiXSA9IDFdID0gXCJNb250aHNcIjtcbiAgVmlld3MyW1ZpZXdzMltcIlllYXJzXCJdID0gMl0gPSBcIlllYXJzXCI7XG4gIFZpZXdzMltWaWV3czJbXCJEZWNhZGVzXCJdID0gM10gPSBcIkRlY2FkZXNcIjtcbiAgcmV0dXJuIFZpZXdzMjtcbn0pKFZpZXdzIHx8IHt9KTtcbnZhciBXZWVrU3RhcnQgPSAvKiBAX19QVVJFX18gKi8gKChXZWVrU3RhcnQyKSA9PiB7XG4gIFdlZWtTdGFydDJbV2Vla1N0YXJ0MltcIlN1bmRheVwiXSA9IDBdID0gXCJTdW5kYXlcIjtcbiAgV2Vla1N0YXJ0MltXZWVrU3RhcnQyW1wiTW9uZGF5XCJdID0gMV0gPSBcIk1vbmRheVwiO1xuICBXZWVrU3RhcnQyW1dlZWtTdGFydDJbXCJUdWVzZGF5XCJdID0gMl0gPSBcIlR1ZXNkYXlcIjtcbiAgV2Vla1N0YXJ0MltXZWVrU3RhcnQyW1wiV2VkbmVzZGF5XCJdID0gM10gPSBcIldlZG5lc2RheVwiO1xuICBXZWVrU3RhcnQyW1dlZWtTdGFydDJbXCJUaHVyc2RheVwiXSA9IDRdID0gXCJUaHVyc2RheVwiO1xuICBXZWVrU3RhcnQyW1dlZWtTdGFydDJbXCJGcmlkYXlcIl0gPSA1XSA9IFwiRnJpZGF5XCI7XG4gIFdlZWtTdGFydDJbV2Vla1N0YXJ0MltcIlNhdHVyZGF5XCJdID0gNl0gPSBcIlNhdHVyZGF5XCI7XG4gIHJldHVybiBXZWVrU3RhcnQyO1xufSkoV2Vla1N0YXJ0IHx8IHt9KTtcbmNvbnN0IGlzRGF0ZUluUmFuZ2UgPSAoZGF0ZSwgbWluRGF0ZSwgbWF4RGF0ZSkgPT4ge1xuICBjb25zdCBkYXRlVGltZSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSkuZ2V0VGltZSgpO1xuICBpZiAobWluRGF0ZSAmJiBtYXhEYXRlKSB7XG4gICAgY29uc3QgbWluRGF0ZVRpbWUgPSBuZXcgRGF0ZShtaW5EYXRlLmdldEZ1bGxZZWFyKCksIG1pbkRhdGUuZ2V0TW9udGgoKSwgbWluRGF0ZS5nZXREYXRlKCkpLmdldFRpbWUoKTtcbiAgICBjb25zdCBtYXhEYXRlVGltZSA9IG5ldyBEYXRlKG1heERhdGUuZ2V0RnVsbFllYXIoKSwgbWF4RGF0ZS5nZXRNb250aCgpLCBtYXhEYXRlLmdldERhdGUoKSkuZ2V0VGltZSgpO1xuICAgIHJldHVybiBkYXRlVGltZSA+PSBtaW5EYXRlVGltZSAmJiBkYXRlVGltZSA8PSBtYXhEYXRlVGltZTtcbiAgfVxuICBpZiAobWluRGF0ZSkge1xuICAgIGNvbnN0IG1pbkRhdGVUaW1lID0gbmV3IERhdGUobWluRGF0ZS5nZXRGdWxsWWVhcigpLCBtaW5EYXRlLmdldE1vbnRoKCksIG1pbkRhdGUuZ2V0RGF0ZSgpKS5nZXRUaW1lKCk7XG4gICAgcmV0dXJuIGRhdGVUaW1lID49IG1pbkRhdGVUaW1lO1xuICB9XG4gIGlmIChtYXhEYXRlKSB7XG4gICAgY29uc3QgbWF4RGF0ZVRpbWUgPSBuZXcgRGF0ZShtYXhEYXRlLmdldEZ1bGxZZWFyKCksIG1heERhdGUuZ2V0TW9udGgoKSwgbWF4RGF0ZS5nZXREYXRlKCkpLmdldFRpbWUoKTtcbiAgICByZXR1cm4gZGF0ZVRpbWUgPD0gbWF4RGF0ZVRpbWU7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuY29uc3QgaXNEYXRlRXF1YWwgPSAoZGF0ZSwgc2VsZWN0ZWREYXRlKSA9PiB7XG4gIGRhdGUgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpO1xuICBzZWxlY3RlZERhdGUgPSBuZXcgRGF0ZShzZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKSwgc2VsZWN0ZWREYXRlLmdldE1vbnRoKCksIHNlbGVjdGVkRGF0ZS5nZXREYXRlKCkpO1xuICByZXR1cm4gZGF0ZS5nZXRUaW1lKCkgPT09IHNlbGVjdGVkRGF0ZS5nZXRUaW1lKCk7XG59O1xuY29uc3QgZ2V0Rmlyc3REYXRlSW5SYW5nZSA9IChkYXRlLCBtaW5EYXRlLCBtYXhEYXRlKSA9PiB7XG4gIGlmICghaXNEYXRlSW5SYW5nZShkYXRlLCBtaW5EYXRlLCBtYXhEYXRlKSkge1xuICAgIGlmIChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB7XG4gICAgICBkYXRlID0gbWluRGF0ZTtcbiAgICB9IGVsc2UgaWYgKG1heERhdGUgJiYgZGF0ZSA+IG1heERhdGUpIHtcbiAgICAgIGRhdGUgPSBtYXhEYXRlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0ZTtcbn07XG5jb25zdCBnZXRGaXJzdERheU9mVGhlTW9udGggPSAoZGF0ZSwgd2Vla1N0YXJ0KSA9PiB7XG4gIGNvbnN0IGZpcnN0RGF5T2ZNb250aCA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCAxKTtcbiAgY29uc3QgZGF5T2ZXZWVrID0gZmlyc3REYXlPZk1vbnRoLmdldERheSgpO1xuICBsZXQgZGlmZiA9IGRheU9mV2VlayAtIHdlZWtTdGFydDtcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIHJldHVybiBhZGREYXlzKGZpcnN0RGF5T2ZNb250aCwgLWRpZmYpO1xufTtcbmNvbnN0IGdldFdlZWtEYXlzID0gKGxhbmcsIHdlZWtTdGFydCkgPT4ge1xuICBjb25zdCB3ZWVrZGF5cyA9IFtdO1xuICBjb25zdCBkYXRlID0gLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKDApO1xuICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSBkYXRlLmdldERheSgpICsgd2Vla1N0YXJ0KTtcbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobGFuZywgeyB3ZWVrZGF5OiBcInNob3J0XCIgfSk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgd2Vla2RheXMucHVzaChmb3JtYXR0ZXIuZm9ybWF0KGFkZERheXMoZGF0ZSwgaSkpKTtcbiAgfVxuICByZXR1cm4gd2Vla2RheXM7XG59O1xuY29uc3QgYWRkRGF5cyA9IChkYXRlLCBhbW91bnQpID0+IHtcbiAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICBuZXdEYXRlLnNldERhdGUobmV3RGF0ZS5nZXREYXRlKCkgKyBhbW91bnQpO1xuICByZXR1cm4gbmV3RGF0ZTtcbn07XG5jb25zdCBhZGRNb250aHMgPSAoZGF0ZSwgYW1vdW50KSA9PiB7XG4gIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZShkYXRlKTtcbiAgbmV3RGF0ZS5zZXRNb250aChuZXdEYXRlLmdldE1vbnRoKCkgKyBhbW91bnQpO1xuICByZXR1cm4gbmV3RGF0ZTtcbn07XG5jb25zdCBhZGRZZWFycyA9IChkYXRlLCBhbW91bnQpID0+IHtcbiAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICBuZXdEYXRlLnNldEZ1bGxZZWFyKG5ld0RhdGUuZ2V0RnVsbFllYXIoKSArIGFtb3VudCk7XG4gIHJldHVybiBuZXdEYXRlO1xufTtcbmNvbnN0IGdldEZvcm1hdHRlZERhdGUgPSAobGFuZ3VhZ2UsIGRhdGUsIG9wdGlvbnMpID0+IHtcbiAgbGV0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgIGRheTogXCJudW1lcmljXCIsXG4gICAgbW9udGg6IFwibG9uZ1wiLFxuICAgIHllYXI6IFwibnVtZXJpY1wiXG4gIH07XG4gIGlmIChvcHRpb25zKSB7XG4gICAgZGVmYXVsdE9wdGlvbnMgPSBvcHRpb25zO1xuICB9XG4gIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsYW5ndWFnZSwgZGVmYXVsdE9wdGlvbnMpLmZvcm1hdChkYXRlKTtcbn07XG5jb25zdCBzdGFydE9mWWVhclBlcmlvZCA9IChkYXRlLCB5ZWFycykgPT4ge1xuICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICByZXR1cm4gTWF0aC5mbG9vcih5ZWFyIC8geWVhcnMpICogeWVhcnM7XG59O1xuY29uc3QgaXNEYXRlSW5EZWNhZGUgPSAoZGF0ZSwgc3RhcnRZZWFyKSA9PiB7XG4gIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIGNvbnN0IGVuZFllYXIgPSBzdGFydFllYXIgKyA5O1xuICByZXR1cm4geWVhciA+PSBzdGFydFllYXIgJiYgeWVhciA8PSBlbmRZZWFyO1xufTtcblxuZXhwb3J0IHsgVmlld3MsIFdlZWtTdGFydCwgYWRkRGF5cywgYWRkTW9udGhzLCBhZGRZZWFycywgZ2V0Rmlyc3REYXRlSW5SYW5nZSwgZ2V0Rmlyc3REYXlPZlRoZU1vbnRoLCBnZXRGb3JtYXR0ZWREYXRlLCBnZXRXZWVrRGF5cywgaXNEYXRlRXF1YWwsIGlzRGF0ZUluRGVjYWRlLCBpc0RhdGVJblJhbmdlLCBzdGFydE9mWWVhclBlcmlvZCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVscGVycy5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBGcmFnbWVudCwganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlRGF0ZVBpY2tlckNvbnRleHQgfSBmcm9tICcuLi9EYXRlcGlja2VyQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgZ2V0V2Vla0RheXMsIGdldEZpcnN0RGF5T2ZUaGVNb250aCwgYWRkRGF5cywgZ2V0Rm9ybWF0dGVkRGF0ZSwgaXNEYXRlRXF1YWwsIGlzRGF0ZUluUmFuZ2UgfSBmcm9tICcuLi9oZWxwZXJzLm1qcyc7XG5cbmNvbnN0IERhdGVwaWNrZXJWaWV3c0RheXMgPSAoeyB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICB0aGVtZTogcm9vdFRoZW1lLFxuICAgIHdlZWtTdGFydCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gICAgdmlld0RhdGUsXG4gICAgc2VsZWN0ZWREYXRlLFxuICAgIGNoYW5nZVNlbGVjdGVkRGF0ZSxcbiAgICBsYW5ndWFnZVxuICB9ID0gdXNlRGF0ZVBpY2tlckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLnZpZXdzLmRheXMsIGN1c3RvbVRoZW1lKTtcbiAgY29uc3Qgd2Vla0RheXMgPSBnZXRXZWVrRGF5cyhsYW5ndWFnZSwgd2Vla1N0YXJ0KTtcbiAgY29uc3Qgc3RhcnREYXRlID0gZ2V0Rmlyc3REYXlPZlRoZU1vbnRoKHZpZXdEYXRlLCB3ZWVrU3RhcnQpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtcbiAgICAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5oZWFkZXIuYmFzZSwgY2hpbGRyZW46IHdlZWtEYXlzLm1hcCgoZGF5LCBpbmRleCkgPT4gLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLmhlYWRlci50aXRsZSwgY2hpbGRyZW46IGRheSB9LCBpbmRleCkpIH0pLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLml0ZW1zLmJhc2UsIGNoaWxkcmVuOiBbLi4uQXJyYXkoNDIpXS5tYXAoKF9kYXRlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudERhdGUgPSBhZGREYXlzKHN0YXJ0RGF0ZSwgaW5kZXgpO1xuICAgICAgY29uc3QgZGF5ID0gZ2V0Rm9ybWF0dGVkRGF0ZShsYW5ndWFnZSwgY3VycmVudERhdGUsIHsgZGF5OiBcIm51bWVyaWNcIiB9KTtcbiAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBzZWxlY3RlZERhdGUgJiYgaXNEYXRlRXF1YWwoc2VsZWN0ZWREYXRlLCBjdXJyZW50RGF0ZSk7XG4gICAgICBjb25zdCBpc0Rpc2FibGVkID0gIWlzRGF0ZUluUmFuZ2UoY3VycmVudERhdGUsIG1pbkRhdGUsIG1heERhdGUpO1xuICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBkaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICAgIHRoZW1lLml0ZW1zLml0ZW0uYmFzZSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQgJiYgdGhlbWUuaXRlbXMuaXRlbS5zZWxlY3RlZCxcbiAgICAgICAgICAgIGlzRGlzYWJsZWQgJiYgdGhlbWUuaXRlbXMuaXRlbS5kaXNhYmxlZFxuICAgICAgICAgICksXG4gICAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHJldHVybjtcbiAgICAgICAgICAgIGNoYW5nZVNlbGVjdGVkRGF0ZShjdXJyZW50RGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjaGlsZHJlbjogZGF5XG4gICAgICAgIH0sXG4gICAgICAgIGluZGV4XG4gICAgICApO1xuICAgIH0pIH0pXG4gIF0gfSk7XG59O1xuXG5leHBvcnQgeyBEYXRlcGlja2VyVmlld3NEYXlzIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EYXlzLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZURhdGVQaWNrZXJDb250ZXh0IH0gZnJvbSAnLi4vRGF0ZXBpY2tlckNvbnRleHQubWpzJztcbmltcG9ydCB7IHN0YXJ0T2ZZZWFyUGVyaW9kLCBhZGRZZWFycywgaXNEYXRlSW5EZWNhZGUsIGlzRGF0ZUluUmFuZ2UsIFZpZXdzIH0gZnJvbSAnLi4vaGVscGVycy5tanMnO1xuXG5jb25zdCBEYXRlcGlja2VyVmlld3NEZWNhZGVzID0gKHsgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30gfSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUsIHZpZXdEYXRlLCBzZWxlY3RlZERhdGUsIG1pbkRhdGUsIG1heERhdGUsIHNldFZpZXdEYXRlLCBzZXRWaWV3IH0gPSB1c2VEYXRlUGlja2VyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUudmlld3MuZGVjYWRlcywgY3VzdG9tVGhlbWUpO1xuICBjb25zdCBmaXJzdCA9IHN0YXJ0T2ZZZWFyUGVyaW9kKHZpZXdEYXRlLCAxMDApO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUuaXRlbXMuYmFzZSwgY2hpbGRyZW46IFsuLi5BcnJheSgxMildLm1hcCgoX3llYXIsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgeWVhciA9IGZpcnN0IC0gMTAgKyBpbmRleCAqIDEwO1xuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZSh2aWV3RGF0ZS5nZXRUaW1lKCkpO1xuICAgIG5ld0RhdGUuc2V0RnVsbFllYXIoeWVhciArIHZpZXdEYXRlLmdldEZ1bGxZZWFyKCkgJSAxMCk7XG4gICAgY29uc3QgZmlyc3REYXRlID0gbmV3IERhdGUoeWVhciwgMCwgMSk7XG4gICAgY29uc3QgbGFzdERhdGUgPSBhZGRZZWFycyhmaXJzdERhdGUsIDkpO1xuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBzZWxlY3RlZERhdGUgJiYgaXNEYXRlSW5EZWNhZGUoc2VsZWN0ZWREYXRlLCB5ZWFyKTtcbiAgICBjb25zdCBpc0Rpc2FibGVkID0gIWlzRGF0ZUluUmFuZ2UoZmlyc3REYXRlLCBtaW5EYXRlLCBtYXhEYXRlKSAmJiAhaXNEYXRlSW5SYW5nZShsYXN0RGF0ZSwgbWluRGF0ZSwgbWF4RGF0ZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImJ1dHRvblwiLFxuICAgICAge1xuICAgICAgICBkaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgIHRoZW1lLml0ZW1zLml0ZW0uYmFzZSxcbiAgICAgICAgICBpc1NlbGVjdGVkICYmIHRoZW1lLml0ZW1zLml0ZW0uc2VsZWN0ZWQsXG4gICAgICAgICAgaXNEaXNhYmxlZCAmJiB0aGVtZS5pdGVtcy5pdGVtLmRpc2FibGVkXG4gICAgICAgICksXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICBpZiAoaXNEaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgICAgIHNlbGVjdGVkRGF0ZSAmJiBzZXRWaWV3RGF0ZShhZGRZZWFycyh2aWV3RGF0ZSwgeWVhciAtIHNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpKSk7XG4gICAgICAgICAgc2V0VmlldyhWaWV3cy5ZZWFycyk7XG4gICAgICAgIH0sXG4gICAgICAgIGNoaWxkcmVuOiB5ZWFyXG4gICAgICB9LFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9KSB9KTtcbn07XG5cbmV4cG9ydCB7IERhdGVwaWNrZXJWaWV3c0RlY2FkZXMgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURlY2FkZXMubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlRGF0ZVBpY2tlckNvbnRleHQgfSBmcm9tICcuLi9EYXRlcGlja2VyQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgZ2V0Rm9ybWF0dGVkRGF0ZSwgaXNEYXRlRXF1YWwsIGlzRGF0ZUluUmFuZ2UsIFZpZXdzIH0gZnJvbSAnLi4vaGVscGVycy5tanMnO1xuXG5jb25zdCBEYXRlcGlja2VyVmlld3NNb250aCA9ICh7IHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9IH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHRoZW1lOiByb290VGhlbWUsXG4gICAgbWluRGF0ZSxcbiAgICBtYXhEYXRlLFxuICAgIHNlbGVjdGVkRGF0ZSxcbiAgICB2aWV3RGF0ZSxcbiAgICBsYW5ndWFnZSxcbiAgICBzZXRWaWV3RGF0ZSxcbiAgICBzZXRWaWV3XG4gIH0gPSB1c2VEYXRlUGlja2VyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUudmlld3MubW9udGhzLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5pdGVtcy5iYXNlLCBjaGlsZHJlbjogWy4uLkFycmF5KDEyKV0ubWFwKChfbW9udGgsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgbmV3RGF0ZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpO1xuICAgIG5ld0RhdGUuc2V0TW9udGgoaW5kZXgsIDEpO1xuICAgIG5ld0RhdGUuc2V0RnVsbFllYXIodmlld0RhdGUuZ2V0RnVsbFllYXIoKSk7XG4gICAgY29uc3QgbW9udGggPSBnZXRGb3JtYXR0ZWREYXRlKGxhbmd1YWdlLCBuZXdEYXRlLCB7IG1vbnRoOiBcInNob3J0XCIgfSk7XG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IHNlbGVjdGVkRGF0ZSAmJiBpc0RhdGVFcXVhbChzZWxlY3RlZERhdGUsIG5ld0RhdGUpO1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSAhaXNEYXRlSW5SYW5nZShuZXdEYXRlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwiYnV0dG9uXCIsXG4gICAgICB7XG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgdGhlbWUuaXRlbXMuaXRlbS5iYXNlLFxuICAgICAgICAgIGlzU2VsZWN0ZWQgJiYgdGhlbWUuaXRlbXMuaXRlbS5zZWxlY3RlZCxcbiAgICAgICAgICBpc0Rpc2FibGVkICYmIHRoZW1lLml0ZW1zLml0ZW0uZGlzYWJsZWRcbiAgICAgICAgKSxcbiAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgIGlmIChpc0Rpc2FibGVkKSByZXR1cm47XG4gICAgICAgICAgc2V0Vmlld0RhdGUobmV3RGF0ZSk7XG4gICAgICAgICAgc2V0VmlldyhWaWV3cy5EYXlzKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2hpbGRyZW46IG1vbnRoXG4gICAgICB9LFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9KSB9KTtcbn07XG5cbmV4cG9ydCB7IERhdGVwaWNrZXJWaWV3c01vbnRoIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Nb250aHMubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlRGF0ZVBpY2tlckNvbnRleHQgfSBmcm9tICcuLi9EYXRlcGlja2VyQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgc3RhcnRPZlllYXJQZXJpb2QsIGlzRGF0ZUVxdWFsLCBpc0RhdGVJblJhbmdlLCBWaWV3cyB9IGZyb20gJy4uL2hlbHBlcnMubWpzJztcblxuY29uc3QgRGF0ZXBpY2tlclZpZXdzWWVhcnMgPSAoeyB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSB9KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgc2VsZWN0ZWREYXRlLCBtaW5EYXRlLCBtYXhEYXRlLCB2aWV3RGF0ZSwgc2V0Vmlld0RhdGUsIHNldFZpZXcgfSA9IHVzZURhdGVQaWNrZXJDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS52aWV3cy55ZWFycywgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUuaXRlbXMuYmFzZSwgY2hpbGRyZW46IFsuLi5BcnJheSgxMildLm1hcCgoX3llYXIsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgZmlyc3QgPSBzdGFydE9mWWVhclBlcmlvZCh2aWV3RGF0ZSwgMTApO1xuICAgIGNvbnN0IHllYXIgPSBmaXJzdCArIGluZGV4O1xuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZSh2aWV3RGF0ZS5nZXRUaW1lKCkpO1xuICAgIG5ld0RhdGUuc2V0RnVsbFllYXIoeWVhcik7XG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IHNlbGVjdGVkRGF0ZSAmJiBpc0RhdGVFcXVhbChzZWxlY3RlZERhdGUsIG5ld0RhdGUpO1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSAhaXNEYXRlSW5SYW5nZShuZXdEYXRlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwiYnV0dG9uXCIsXG4gICAgICB7XG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgdGhlbWUuaXRlbXMuaXRlbS5iYXNlLFxuICAgICAgICAgIGlzU2VsZWN0ZWQgJiYgdGhlbWUuaXRlbXMuaXRlbS5zZWxlY3RlZCxcbiAgICAgICAgICBpc0Rpc2FibGVkICYmIHRoZW1lLml0ZW1zLml0ZW0uZGlzYWJsZWRcbiAgICAgICAgKSxcbiAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgIGlmIChpc0Rpc2FibGVkKSByZXR1cm47XG4gICAgICAgICAgc2V0Vmlld0RhdGUobmV3RGF0ZSk7XG4gICAgICAgICAgc2V0VmlldyhWaWV3cy5Nb250aHMpO1xuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogeWVhclxuICAgICAgfSxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfSkgfSk7XG59O1xuXG5leHBvcnQgeyBEYXRlcGlja2VyVmlld3NZZWFycyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9WWVhcnMubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4LCBqc3hzIH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiwgdXNlTWVtbywgdXNlU3RhdGUsIHVzZVJlZiwgdXNlSW1wZXJhdGl2ZUhhbmRsZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSGlDYWxlbmRhciwgSGlBcnJvd0xlZnQsIEhpQXJyb3dSaWdodCB9IGZyb20gJ3JlYWN0LWljb25zL2hpJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IFRleHRJbnB1dCB9IGZyb20gJy4uL1RleHRJbnB1dC9UZXh0SW5wdXQubWpzJztcbmltcG9ydCB7IERhdGVwaWNrZXJDb250ZXh0IH0gZnJvbSAnLi9EYXRlcGlja2VyQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgZ2V0Rmlyc3REYXRlSW5SYW5nZSwgVmlld3MsIGlzRGF0ZUVxdWFsLCBnZXRGb3JtYXR0ZWREYXRlLCBXZWVrU3RhcnQsIHN0YXJ0T2ZZZWFyUGVyaW9kLCBhZGRZZWFycywgYWRkTW9udGhzIH0gZnJvbSAnLi9oZWxwZXJzLm1qcyc7XG5pbXBvcnQgeyBEYXRlcGlja2VyVmlld3NEYXlzIH0gZnJvbSAnLi9WaWV3cy9EYXlzLm1qcyc7XG5pbXBvcnQgeyBEYXRlcGlja2VyVmlld3NEZWNhZGVzIH0gZnJvbSAnLi9WaWV3cy9EZWNhZGVzLm1qcyc7XG5pbXBvcnQgeyBEYXRlcGlja2VyVmlld3NNb250aCB9IGZyb20gJy4vVmlld3MvTW9udGhzLm1qcyc7XG5pbXBvcnQgeyBEYXRlcGlja2VyVmlld3NZZWFycyB9IGZyb20gJy4vVmlld3MvWWVhcnMubWpzJztcblxuY29uc3QgRGF0ZXBpY2tlclJlbmRlciA9ICh7XG4gIHRpdGxlLFxuICBvcGVuLFxuICBpbmxpbmUgPSBmYWxzZSxcbiAgYXV0b0hpZGUgPSB0cnVlLFxuICAvLyBIaWRlIHdoZW4gc2VsZWN0ZWQgdGhlIGRheVxuICBzaG93Q2xlYXJCdXR0b24gPSB0cnVlLFxuICBsYWJlbENsZWFyQnV0dG9uID0gXCJDbGVhclwiLFxuICBzaG93VG9kYXlCdXR0b24gPSB0cnVlLFxuICBsYWJlbFRvZGF5QnV0dG9uID0gXCJUb2RheVwiLFxuICBkZWZhdWx0VmFsdWUsXG4gIG1pbkRhdGUsXG4gIG1heERhdGUsXG4gIGxhbmd1YWdlID0gXCJlblwiLFxuICB3ZWVrU3RhcnQgPSBXZWVrU3RhcnQuU3VuZGF5LFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICBvbkNoYW5nZSxcbiAgbGFiZWwsXG4gIHZhbHVlLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuZGF0ZXBpY2tlciwgY3VzdG9tVGhlbWUpO1xuICBjb25zdCBpbml0aWFsRGF0ZSA9IGRlZmF1bHRWYWx1ZSA/IGdldEZpcnN0RGF0ZUluUmFuZ2UoZGVmYXVsdFZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKSA6IG51bGw7XG4gIGNvbnN0IGVmZmVjdGl2ZURlZmF1bHRWaWV3ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSA/IGdldEZpcnN0RGF0ZUluUmFuZ2UoZGVmYXVsdFZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKSA6IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpO1xuICB9LCBbXSk7XG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShvcGVuKTtcbiAgY29uc3QgW3ZpZXcsIHNldFZpZXddID0gdXNlU3RhdGUoVmlld3MuRGF5cyk7XG4gIGNvbnN0IFtzZWxlY3RlZERhdGUsIHNldFNlbGVjdGVkRGF0ZV0gPSB1c2VTdGF0ZSh2YWx1ZSA/PyBpbml0aWFsRGF0ZSk7XG4gIGNvbnN0IFt2aWV3RGF0ZSwgc2V0Vmlld0RhdGVdID0gdXNlU3RhdGUodmFsdWUgPz8gZWZmZWN0aXZlRGVmYXVsdFZpZXcpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgZGF0ZXBpY2tlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgY2hhbmdlU2VsZWN0ZWREYXRlID0gKGRhdGUsIHVzZUF1dG9oaWRlKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWREYXRlKGRhdGUpO1xuICAgIGlmICgoZGF0ZSA9PT0gbnVsbCB8fCBkYXRlKSAmJiBvbkNoYW5nZSkge1xuICAgICAgb25DaGFuZ2UoZGF0ZSk7XG4gICAgfVxuICAgIGlmIChhdXRvSGlkZSAmJiB2aWV3ID09PSBWaWV3cy5EYXlzICYmIHVzZUF1dG9oaWRlID09IHRydWUgJiYgIWlubGluZSkge1xuICAgICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGNsZWFyRGF0ZSA9ICgpID0+IHtcbiAgICBjaGFuZ2VTZWxlY3RlZERhdGUoaW5pdGlhbERhdGUsIHRydWUpO1xuICAgIGlmIChkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHNldFZpZXdEYXRlKGRlZmF1bHRWYWx1ZSk7XG4gICAgfVxuICB9O1xuICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4gKHtcbiAgICBmb2N1cygpIHtcbiAgICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgfSxcbiAgICBjbGVhcigpIHtcbiAgICAgIGNsZWFyRGF0ZSgpO1xuICAgIH1cbiAgfSkpO1xuICBjb25zdCByZW5kZXJWaWV3ID0gKHR5cGUpID0+IHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgVmlld3MuRGVjYWRlczpcbiAgICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRGF0ZXBpY2tlclZpZXdzRGVjYWRlcywgeyB0aGVtZTogdGhlbWUudmlld3MuZGVjYWRlcyB9KTtcbiAgICAgIGNhc2UgVmlld3MuWWVhcnM6XG4gICAgICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KERhdGVwaWNrZXJWaWV3c1llYXJzLCB7IHRoZW1lOiB0aGVtZS52aWV3cy55ZWFycyB9KTtcbiAgICAgIGNhc2UgVmlld3MuTW9udGhzOlxuICAgICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChEYXRlcGlja2VyVmlld3NNb250aCwgeyB0aGVtZTogdGhlbWUudmlld3MubW9udGhzIH0pO1xuICAgICAgY2FzZSBWaWV3cy5EYXlzOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRGF0ZXBpY2tlclZpZXdzRGF5cywgeyB0aGVtZTogdGhlbWUudmlld3MuZGF5cyB9KTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGdldE5leHRWaWV3ID0gKCkgPT4ge1xuICAgIHN3aXRjaCAodmlldykge1xuICAgICAgY2FzZSBWaWV3cy5EYXlzOlxuICAgICAgICByZXR1cm4gVmlld3MuTW9udGhzO1xuICAgICAgY2FzZSBWaWV3cy5Nb250aHM6XG4gICAgICAgIHJldHVybiBWaWV3cy5ZZWFycztcbiAgICAgIGNhc2UgVmlld3MuWWVhcnM6XG4gICAgICAgIHJldHVybiBWaWV3cy5EZWNhZGVzO1xuICAgIH1cbiAgICByZXR1cm4gdmlldztcbiAgfTtcbiAgY29uc3QgZ2V0Vmlld1RpdGxlID0gKCkgPT4ge1xuICAgIHN3aXRjaCAodmlldykge1xuICAgICAgY2FzZSBWaWV3cy5EZWNhZGVzOlxuICAgICAgICByZXR1cm4gYCR7c3RhcnRPZlllYXJQZXJpb2Qodmlld0RhdGUsIDEwMCkgLSAxMH0gLSAke3N0YXJ0T2ZZZWFyUGVyaW9kKHZpZXdEYXRlLCAxMDApICsgMTAwfWA7XG4gICAgICBjYXNlIFZpZXdzLlllYXJzOlxuICAgICAgICByZXR1cm4gYCR7c3RhcnRPZlllYXJQZXJpb2Qodmlld0RhdGUsIDEwKX0gLSAke3N0YXJ0T2ZZZWFyUGVyaW9kKHZpZXdEYXRlLCAxMCkgKyAxMX1gO1xuICAgICAgY2FzZSBWaWV3cy5Nb250aHM6XG4gICAgICAgIHJldHVybiBnZXRGb3JtYXR0ZWREYXRlKGxhbmd1YWdlLCB2aWV3RGF0ZSwgeyB5ZWFyOiBcIm51bWVyaWNcIiB9KTtcbiAgICAgIGNhc2UgVmlld3MuRGF5czpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBnZXRGb3JtYXR0ZWREYXRlKGxhbmd1YWdlLCB2aWV3RGF0ZSwgeyBtb250aDogXCJsb25nXCIsIHllYXI6IFwibnVtZXJpY1wiIH0pO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZ2V0Vmlld0RhdGVQYWdlID0gKHZpZXcyLCBkYXRlLCB2YWx1ZTIpID0+IHtcbiAgICBzd2l0Y2ggKHZpZXcyKSB7XG4gICAgICBjYXNlIFZpZXdzLkRheXM6XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShhZGRNb250aHMoZGF0ZSwgdmFsdWUyKSk7XG4gICAgICBjYXNlIFZpZXdzLk1vbnRoczpcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGFkZFllYXJzKGRhdGUsIHZhbHVlMikpO1xuICAgICAgY2FzZSBWaWV3cy5ZZWFyczpcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGFkZFllYXJzKGRhdGUsIHZhbHVlMiAqIDEwKSk7XG4gICAgICBjYXNlIFZpZXdzLkRlY2FkZXM6XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShhZGRZZWFycyhkYXRlLCB2YWx1ZTIgKiAxMDApKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShhZGRZZWFycyhkYXRlLCB2YWx1ZTIgKiAxMCkpO1xuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGNsaWNrZWRJbnNpZGVEYXRlcGlja2VyID0gZGF0ZXBpY2tlclJlZj8uY3VycmVudD8uY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgIGNvbnN0IGNsaWNrZWRJbnNpZGVJbnB1dCA9IGlucHV0UmVmPy5jdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgaWYgKCFjbGlja2VkSW5zaWRlRGF0ZXBpY2tlciAmJiAhY2xpY2tlZEluc2lkZUlucHV0KSB7XG4gICAgICAgIHNldElzT3BlbihmYWxzZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIGhhbmRsZUNsaWNrT3V0c2lkZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgaGFuZGxlQ2xpY2tPdXRzaWRlKTtcbiAgICB9O1xuICB9LCBbaW5wdXRSZWYsIGRhdGVwaWNrZXJSZWYsIHNldElzT3Blbl0pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVmZmVjdGl2ZVZhbHVlID0gdmFsdWUgJiYgZ2V0Rmlyc3REYXRlSW5SYW5nZShuZXcgRGF0ZSh2YWx1ZSksIG1pbkRhdGUsIG1heERhdGUpO1xuICAgIGNvbnN0IGVmZmVjdGl2ZVNlbGVjdGVkRGF0ZSA9IHNlbGVjdGVkRGF0ZSAmJiBnZXRGaXJzdERhdGVJblJhbmdlKG5ldyBEYXRlKHNlbGVjdGVkRGF0ZSksIG1pbkRhdGUsIG1heERhdGUpO1xuICAgIGlmIChlZmZlY3RpdmVTZWxlY3RlZERhdGUgJiYgZWZmZWN0aXZlVmFsdWUgJiYgIWlzRGF0ZUVxdWFsKGVmZmVjdGl2ZVZhbHVlLCBlZmZlY3RpdmVTZWxlY3RlZERhdGUpKSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGUoZWZmZWN0aXZlVmFsdWUpO1xuICAgIH1cbiAgICBpZiAoc2VsZWN0ZWREYXRlID09IG51bGwpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0ZShpbml0aWFsRGF0ZSk7XG4gICAgfVxuICB9LCBbdmFsdWUsIHNldFNlbGVjdGVkRGF0ZSwgc2V0Vmlld0RhdGUsIHNlbGVjdGVkRGF0ZV0pO1xuICBjb25zdCBkaXNwbGF5VmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IGxhYmVsIDogZ2V0Rm9ybWF0dGVkRGF0ZShsYW5ndWFnZSwgc2VsZWN0ZWREYXRlIHx8IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgRGF0ZXBpY2tlckNvbnRleHQuUHJvdmlkZXIsXG4gICAge1xuICAgICAgdmFsdWU6IHtcbiAgICAgICAgdGhlbWUsXG4gICAgICAgIGxhbmd1YWdlLFxuICAgICAgICBtaW5EYXRlLFxuICAgICAgICBtYXhEYXRlLFxuICAgICAgICB3ZWVrU3RhcnQsXG4gICAgICAgIGlzT3BlbixcbiAgICAgICAgc2V0SXNPcGVuLFxuICAgICAgICB2aWV3LFxuICAgICAgICBzZXRWaWV3LFxuICAgICAgICB2aWV3RGF0ZSxcbiAgICAgICAgc2V0Vmlld0RhdGUsXG4gICAgICAgIHNlbGVjdGVkRGF0ZSxcbiAgICAgICAgc2V0U2VsZWN0ZWREYXRlLFxuICAgICAgICBjaGFuZ2VTZWxlY3RlZERhdGVcbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCBjbGFzc05hbWUpLCBjaGlsZHJlbjogW1xuICAgICAgICAhaW5saW5lICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgVGV4dElucHV0LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRoZW1lOiB0aGVtZS5yb290LmlucHV0LFxuICAgICAgICAgICAgaWNvbjogSGlDYWxlbmRhcixcbiAgICAgICAgICAgIHJlZjogaW5wdXRSZWYsXG4gICAgICAgICAgICBvbkZvY3VzOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChzZWxlY3RlZERhdGUgJiYgIWlzRGF0ZUVxdWFsKHZpZXdEYXRlLCBzZWxlY3RlZERhdGUpKSB7XG4gICAgICAgICAgICAgICAgc2V0Vmlld0RhdGUoc2VsZWN0ZWREYXRlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZXRJc09wZW4odHJ1ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmFsdWU6IGRpc3BsYXlWYWx1ZSxcbiAgICAgICAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBpbml0aWFsRGF0ZSA/IGdldEZvcm1hdHRlZERhdGUobGFuZ3VhZ2UsIGluaXRpYWxEYXRlKSA6IGxhYmVsLFxuICAgICAgICAgICAgLi4ucHJvcHNcbiAgICAgICAgICB9XG4gICAgICAgICksXG4gICAgICAgIChpc09wZW4gfHwgaW5saW5lKSAmJiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgcmVmOiBkYXRlcGlja2VyUmVmLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucG9wdXAucm9vdC5iYXNlLCBpbmxpbmUgJiYgdGhlbWUucG9wdXAucm9vdC5pbmxpbmUpLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLnBvcHVwLnJvb3QuaW5uZXIsIGNoaWxkcmVuOiBbXG4gICAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLnBvcHVwLmhlYWRlci5iYXNlLCBjaGlsZHJlbjogW1xuICAgICAgICAgICAgdGl0bGUgJiYgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUucG9wdXAuaGVhZGVyLnRpdGxlLCBjaGlsZHJlbjogdGl0bGUgfSksXG4gICAgICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUucG9wdXAuaGVhZGVyLnNlbGVjdG9ycy5iYXNlLCBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICAgICAgICAgICAgdGhlbWUucG9wdXAuaGVhZGVyLnNlbGVjdG9ycy5idXR0b24uYmFzZSxcbiAgICAgICAgICAgICAgICAgICAgdGhlbWUucG9wdXAuaGVhZGVyLnNlbGVjdG9ycy5idXR0b24ucHJldlxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHNldFZpZXdEYXRlKGdldFZpZXdEYXRlUGFnZSh2aWV3LCB2aWV3RGF0ZSwgLTEpKSxcbiAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KEhpQXJyb3dMZWZ0LCB7fSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgICAgICAgICB0aGVtZS5wb3B1cC5oZWFkZXIuc2VsZWN0b3JzLmJ1dHRvbi5iYXNlLFxuICAgICAgICAgICAgICAgICAgICB0aGVtZS5wb3B1cC5oZWFkZXIuc2VsZWN0b3JzLmJ1dHRvbi52aWV3XG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgb25DbGljazogKCkgPT4gc2V0VmlldyhnZXROZXh0VmlldygpKSxcbiAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBnZXRWaWV3VGl0bGUoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICAgICAgICBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lLnBvcHVwLmhlYWRlci5zZWxlY3RvcnMuYnV0dG9uLmJhc2UsXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lLnBvcHVwLmhlYWRlci5zZWxlY3RvcnMuYnV0dG9uLm5leHRcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiBzZXRWaWV3RGF0ZShnZXRWaWV3RGF0ZVBhZ2Uodmlldywgdmlld0RhdGUsIDEpKSxcbiAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KEhpQXJyb3dSaWdodCwge30pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdIH0pXG4gICAgICAgICAgXSB9KSxcbiAgICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5wb3B1cC52aWV3LmJhc2UsIGNoaWxkcmVuOiByZW5kZXJWaWV3KHZpZXcpIH0pLFxuICAgICAgICAgIChzaG93Q2xlYXJCdXR0b24gfHwgc2hvd1RvZGF5QnV0dG9uKSAmJiAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUucG9wdXAuZm9vdGVyLmJhc2UsIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICBzaG93VG9kYXlCdXR0b24gJiYgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnBvcHVwLmZvb3Rlci5idXR0b24uYmFzZSwgdGhlbWUucG9wdXAuZm9vdGVyLmJ1dHRvbi50b2RheSksXG4gICAgICAgICAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdG9kYXkgPSAvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgICAgIGNoYW5nZVNlbGVjdGVkRGF0ZSh0b2RheSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICBzZXRWaWV3RGF0ZSh0b2RheSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogbGFiZWxUb2RheUJ1dHRvblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc2hvd0NsZWFyQnV0dG9uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5wb3B1cC5mb290ZXIuYnV0dG9uLmJhc2UsIHRoZW1lLnBvcHVwLmZvb3Rlci5idXR0b24uY2xlYXIpLFxuICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNoYW5nZVNlbGVjdGVkRGF0ZShudWxsLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBsYWJlbENsZWFyQnV0dG9uXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIClcbiAgICAgICAgICBdIH0pXG4gICAgICAgIF0gfSkgfSlcbiAgICAgIF0gfSlcbiAgICB9XG4gICk7XG59O1xuY29uc3QgRGF0ZXBpY2tlciA9IGZvcndhcmRSZWYoRGF0ZXBpY2tlclJlbmRlcik7XG5EYXRlcGlja2VyLmRpc3BsYXlOYW1lID0gXCJEYXRlcGlja2VyXCI7XG5cbmV4cG9ydCB7IERhdGVwaWNrZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURhdGVwaWNrZXIubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgRHJhd2VyQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQodm9pZCAwKTtcbmZ1bmN0aW9uIHVzZURyYXdlckNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERyYXdlckNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VEcmF3ZXJDb250ZXh0IHNob3VsZCBiZSB1c2VkIHdpdGhpbiB0aGUgRHJhd2VyQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IERyYXdlckNvbnRleHQsIHVzZURyYXdlckNvbnRleHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyYXdlckNvbnRleHQubWpzLm1hcFxuIiwiLy8gVEhJUyBGSUxFIElTIEFVVE8gR0VORVJBVEVEXG5pbXBvcnQgeyBHZW5JY29uIH0gZnJvbSAnLi4vbGliL2luZGV4Lm1qcyc7XG5leHBvcnQgZnVuY3Rpb24gTWQxMjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE1SDUuNXYtNC41SDRWOWgzdjZ6bTYuNS0xLjVoLTN2LTFoMmMuNTUgMCAxLS40NSAxLTFWMTBjMC0uNTUtLjQ1LTEtMS0xSDl2MS41aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxVjE1aDQuNXYtMS41em02IC41di00YzAtLjU1LS40NS0xLTEtMUgxNXYxLjVoM3YxaC0ydjFoMnYxaC0zVjE1aDMuNWMuNTUgMCAxLS40NSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDNkUm90YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUyIDIxLjQ4QTEwLjQ4NyAxMC40ODcgMCAwIDEgMS41NSAxM0guMDVDLjU2IDE5LjE2IDUuNzEgMjQgMTIgMjRsLjY2LS4wMy0zLjgxLTMuODEtMS4zMyAxLjMyem0uODktNi41MmMtLjE5IDAtLjM3LS4wMy0uNTItLjA4YTEuMDcgMS4wNyAwIDAgMS0uNC0uMjRjLS4xMS0uMS0uMi0uMjItLjI2LS4zNy0uMDYtLjE0LS4wOS0uMy0uMDktLjQ3aC0xLjNjMCAuMzYuMDcuNjguMjEuOTUuMTQuMjcuMzMuNS41Ni42OS4yNC4xOC41MS4zMi44Mi40MS4zLjEuNjIuMTUuOTYuMTUuMzcgMCAuNzItLjA1IDEuMDMtLjE1LjMyLS4xLjYtLjI1LjgzLS40NHMuNDItLjQzLjU1LS43MmMuMTMtLjI5LjItLjYxLjItLjk3IDAtLjE5LS4wMi0uMzgtLjA3LS41NmExLjY3IDEuNjcgMCAwIDAtLjIzLS41MWMtLjEtLjE2LS4yNC0uMy0uNC0uNDMtLjE3LS4xMy0uMzctLjIzLS42MS0uMzFhMi4wOTggMi4wOTggMCAwIDAgLjg5LS43NWMuMS0uMTUuMTctLjMuMjItLjQ2LjA1LS4xNi4wNy0uMzIuMDctLjQ4IDAtLjM2LS4wNi0uNjgtLjE4LS45NmExLjc4IDEuNzggMCAwIDAtLjUxLS42OWMtLjItLjE5LS40Ny0uMzMtLjc3LS40M0M5LjEgOC4wNSA4Ljc2IDggOC4zOSA4Yy0uMzYgMC0uNjkuMDUtMSAuMTYtLjMuMTEtLjU3LjI2LS43OS40NS0uMjEuMTktLjM4LjQxLS41MS42Ny0uMTIuMjYtLjE4LjU0LS4xOC44NWgxLjNjMC0uMTcuMDMtLjMyLjA5LS40NXMuMTQtLjI1LjI1LS4zNGMuMTEtLjA5LjIzLS4xNy4zOC0uMjIuMTUtLjA1LjMtLjA4LjQ4LS4wOC40IDAgLjcuMS44OS4zMS4xOS4yLjI5LjQ5LjI5Ljg2IDAgLjE4LS4wMy4zNC0uMDguNDlhLjg3Ljg3IDAgMCAxLS4yNS4zN2MtLjExLjEtLjI1LjE4LS40MS4yNC0uMTYuMDYtLjM2LjA5LS41OC4wOUg3LjV2MS4wM2guNzdjLjIyIDAgLjQyLjAyLjYuMDdzLjMzLjEzLjQ1LjIzYy4xMi4xMS4yMi4yNC4yOS40LjA3LjE2LjEuMzUuMS41NyAwIC40MS0uMTIuNzItLjM1LjkzLS4yMy4yMy0uNTUuMzMtLjk1LjMzem04LjU1LTUuOTJjLS4zMi0uMzMtLjctLjU5LTEuMTQtLjc3LS40My0uMTgtLjkyLS4yNy0xLjQ2LS4yN0gxMnY4aDIuM2MuNTUgMCAxLjA2LS4wOSAxLjUxLS4yNy40NS0uMTguODQtLjQzIDEuMTYtLjc2LjMyLS4zMy41Ny0uNzMuNzQtMS4xOS4xNy0uNDcuMjYtLjk5LjI2LTEuNTd2LS40YzAtLjU4LS4wOS0xLjEtLjI2LTEuNTctLjE4LS40Ny0uNDMtLjg3LS43NS0xLjJ6bS0uMzkgMy4xNmMwIC40Mi0uMDUuNzktLjE0IDEuMTMtLjEuMzMtLjI0LjYyLS40My44NS0uMTkuMjMtLjQzLjQxLS43MS41My0uMjkuMTItLjYyLjE4LS45OS4xOGgtLjkxVjkuMTJoLjk3Yy43MiAwIDEuMjcuMjMgMS42NC42OS4zOC40Ni41NyAxLjEyLjU3IDEuOTl2LjR6TTEyIDBsLS42Ni4wMyAzLjgxIDMuODEgMS4zMy0xLjMzYzMuMjcgMS41NSA1LjYxIDQuNzIgNS45NiA4LjQ4aDEuNUMyMy40NCA0Ljg0IDE4LjI5IDAgMTIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWJjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTFoLTEuNXYtLjVoLTJ2M2gyVjEzSDIxdjFjMCAuNTUtLjQ1IDEtMSAxaC0zYy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MXpNOCAxMHY1SDYuNXYtMS41aC0yVjE1SDN2LTVjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF6bS0xLjUuNWgtMlYxMmgydi0xLjV6bTcgMS41Yy41NSAwIDEgLjQ1IDEgMXYxYzAgLjU1LS40NSAxLTEgMWgtNFY5aDRjLjU1IDAgMSAuNDUgMSAxdjFjMCAuNTUtLjQ1IDEtMSAxek0xMSAxMC41di43NWgydi0uNzVoLTJ6bTIgMi4yNWgtMnYuNzVoMnYtLjc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY2Nlc3NpYmlsaXR5TmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSA2Yy0yLjYxLjctNS42NyAxLTguNSAxcy01Ljg5LS4zLTguNS0xTDMgOGMxLjg2LjUgNCAuODMgNiAxdjEzaDJ2LTZoMnY2aDJWOWMyLS4xNyA0LjE0LS41IDYtMWwtLjUtMnpNMTIgNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFjY2Vzc2liaWxpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptOSA3aC02djEzaC0ydi02aC0ydjZIOVY5SDNWN2gxOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY2Nlc3NpYmxlRm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTdcIixcImN5XCI6XCI0LjU0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDE3aC0yYzAgMS42NS0xLjM1IDMtMyAzcy0zLTEuMzUtMy0zIDEuMzUtMyAzLTN2LTJjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNXptMy0zLjVoLTEuODZsMS42Ny0zLjY3QzE3LjQyIDguNSAxNi40NCA3IDE0Ljk2IDdoLTUuMmMtLjgxIDAtMS41NC40Ny0xLjg3IDEuMkw3LjIyIDEwbDEuOTIuNTNMOS43OSA5SDEybC0xLjgzIDQuMWMtLjYgMS4zMy4zOSAyLjkgMS44NSAyLjlIMTd2NWgydi01LjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFjY2Vzc2libGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxM3YtMmMtMS41NC4wMi0zLjA5LS43NS00LjA3LTEuODNsLTEuMjktMS40M2MtLjE3LS4xOS0uMzgtLjM0LS42MS0uNDUtLjAxIDAtLjAxLS4wMS0uMDItLjAxSDEzYy0uMzUtLjItLjc1LS4zLTEuMTktLjI2QzEwLjc2IDcuMTEgMTAgOC4wNCAxMCA5LjA5VjE1YzAgMS4xLjkgMiAyIDJoNXY1aDJ2LTUuNWMwLTEuMS0uOS0yLTItMmgtM3YtMy40NWMxLjI5IDEuMDcgMy4yNSAxLjk0IDUgMS45NXptLTYuMTcgNWMtLjQxIDEuMTYtMS41MiAyLTIuODMgMi0xLjY2IDAtMy0xLjM0LTMtMyAwLTEuMzEuODQtMi40MSAyLTIuODNWMTIuMWE1IDUgMCAxIDAgNS45IDUuOWgtMi4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWNjb3VudEJhbGFuY2VXYWxsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxOHYxYzAgMS4xLS45IDItMiAySDVhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMTRjMS4xIDAgMiAuOSAyIDJ2MWgtOWEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmg5em0tOS0yaDEwVjhIMTJ2OHptNC0yLjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY2NvdW50QmFsYW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTBoM3Y3SDR6TTEwLjUgMTBoM3Y3aC0zek0yIDE5aDIwdjNIMnpNMTcgMTBoM3Y3aC0zek0xMiAxIDIgNnYyaDIwVjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFjY291bnRCb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgM2MxLjkzIDAgMy41IDEuNTcgMy41IDMuNVMxMy45MyAxMyAxMiAxM3MtMy41LTEuNTctMy41LTMuNVMxMC4wNyA2IDEyIDZ6bTcgMTNINXYtLjIzYzAtLjYyLjI4LTEuMi43Ni0xLjU4QzcuNDcgMTUuODIgOS42NCAxNSAxMiAxNXM0LjUzLjgyIDYuMjQgMi4xOWMuNDguMzguNzYuOTcuNzYgMS41OFYxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWNjb3VudENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgNGMxLjkzIDAgMy41IDEuNTcgMy41IDMuNVMxMy45MyAxMyAxMiAxM3MtMy41LTEuNTctMy41LTMuNVMxMC4wNyA2IDEyIDZ6bTAgMTRjLTIuMDMgMC00LjQzLS44Mi02LjE0LTIuODhhOS45NDcgOS45NDcgMCAwIDEgMTIuMjggMEMxNi40MyAxOS4xOCAxNC4wMyAyMCAxMiAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDEwdi0ySDR2LTZoMThWNmMwLTEuMTEtLjg5LTItMi0yem0wIDRINFY2aDE2djJ6bTQgOXYyaC0zdjNoLTJ2LTNoLTN2LTJoM3YtM2gydjNoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDExYy43IDAgMS4zNy4xIDIgLjI5VjlsLTgtNi04IDZ2MTJoNy42OEE2Ljk5NSA2Ljk5NSAwIDAgMSAxOCAxMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0zIDUuNWgtMi41VjIxaC0xdi0yLjVIMTV2LTFoMi41VjE1aDF2Mi41SDIxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZFNob3BwaW5nQ2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTE4LjMxIDYtMi43NiA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA5aDJWNmgzVjRoLTNWMWgtMnYzSDh2MmgzdjN6bS00IDljLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6bTEwIDBjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyIDItLjkgMi0yLS45LTItMi0yem0tOS44My0zLjI1LjAzLS4xMi45LTEuNjNoNy40NWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNsMy44Ni03LjAxTDE5LjQyIDRoLS4wMWwtMS4xIDItMi43NiA1SDguNTNsLS4xMy0uMjdMNi4xNiA2bC0uOTUtMi0uOTQtMkgxdjJoMmwzLjYgNy41OS0xLjM1IDIuNDVjLS4xNi4yOC0uMjUuNjEtLjI1Ljk2IDAgMS4xLjkgMiAyIDJoMTJ2LTJINy40MmMtLjEzIDAtLjI1LS4xMS0uMjUtLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRUYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNS4xOCAxMC41OSAxNi42bC00LjI0LTQuMjQgMS40MS0xLjQxIDIuODMgMi44MyAxMC0xMEwyMiA1LjE4ek0xMiAyMGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOGMxLjU3IDAgMy4wNC40NiA0LjI4IDEuMjVsMS40NS0xLjQ1QTEwLjAyIDEwLjAyIDAgMCAwIDEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTBjMS43MyAwIDMuMzYtLjQ0IDQuNzgtMS4yMmwtMS41LTEuNWMtMSAuNDYtMi4xMS43Mi0zLjI4Ljcyem03LTVoLTN2MmgzdjNoMnYtM2gzdi0yaC0zdi0zaC0ydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZFRvRHJpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAyMXYtM2gzdi0yaC0zdi0zaC0ydjNoLTN2MmgzdjNoMnptLTQuOTcuNUg1LjY2Yy0uNzIgMC0xLjM4LS4zOC0xLjczLTFsLTIuMzYtNC4xYy0uMzYtLjYyLS4zNS0xLjM4LjAxLTJMNy45MiAzLjQ5Yy4zNi0uNjEgMS4wMi0uOTkgMS43My0uOTloNC43Yy43MSAwIDEuMzcuMzggMS43My45OWw0LjQ4IDcuNzFhNi4xNzYgNi4xNzYgMCAwIDAtMi40LS4xNEwxNC4zNSA0LjVoLTQuN0wzLjMxIDE1LjQxbDIuMzUgNC4wOWg3Ljg5Yy4zNS43Ny44NSAxLjQ1IDEuNDggMnpNMTMuMzQgMTVjLS4yMi42My0uMzQgMS4zLS4zNCAySDcuMjVsLS43My0xLjI3IDQuNTgtNy45OGgxLjhsMi41MyA0LjQyYy0uNTYuNDItMS4wNS45My0xLjQ0IDEuNTFsLTItMy40OUw5LjI1IDE1aDQuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZGNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNXYyaC0zdjNoLTJWN2gtM1Y1aDNWMmgydjNoM3ptLTMgMTRINVY1aDZWM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi02aC0ydjZ6bS00LTZ2NGgydi00aC0yem0tNCA0aDJWOWgtMnY4em0tMiAwdi02SDd2NmgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZG1pblBhbmVsU2V0dGluZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMWMuMzQgMCAuNjcuMDQgMSAuMDlWNi4yN0wxMC41IDMgMyA2LjI3djQuOTFjMCA0LjU0IDMuMiA4Ljc5IDcuNSA5LjgyLjU1LS4xMyAxLjA4LS4zMiAxLjYtLjU1LS42OS0uOTgtMS4xLTIuMTctMS4xLTMuNDUgMC0zLjMxIDIuNjktNiA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEzYy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCAxLjM4Yy42MiAwIDEuMTIuNTEgMS4xMiAxLjEycy0uNTEgMS4xMi0xLjEyIDEuMTItMS4xMi0uNTEtMS4xMi0xLjEyLjUtMS4xMiAxLjEyLTEuMTJ6bTAgNS4zN2MtLjkzIDAtMS43NC0uNDYtMi4yNC0xLjE3LjA1LS43MiAxLjUxLTEuMDggMi4yNC0xLjA4czIuMTkuMzYgMi4yNCAxLjA4Yy0uNS43MS0xLjMxIDEuMTctMi4yNCAxLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZHNDbGljayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjcxIDE3Ljk5QTUuOTkzIDUuOTkzIDAgMCAxIDYgMTJjMC0zLjMxIDIuNjktNiA2LTYgMy4yMiAwIDUuODQgMi41MyA1Ljk5IDUuNzFsLTIuMS0uNjNhMy45OTkgMy45OTkgMCAxIDAtNC44MSA0LjgxbC42MyAyLjF6TTIyIDEyYzAgLjMtLjAxLjYtLjA0LjlsLTEuOTctLjU5Yy4wMS0uMS4wMS0uMjEuMDEtLjMxIDAtNC40Mi0zLjU4LTgtOC04cy04IDMuNTgtOCA4IDMuNTggOCA4IDhjLjEgMCAuMjEgMCAuMzEtLjAxbC41OSAxLjk3Yy0uMy4wMy0uNi4wNC0uOS4wNC01LjUyIDAtMTAtNC40OC0xMC0xMFM2LjQ4IDIgMTIgMnMxMCA0LjQ4IDEwIDEwem0tMy43NyA0LjI2TDIyIDE1bC0xMC0zIDMgMTAgMS4yNi0zLjc3IDQuMjcgNC4yNyAxLjk4LTEuOTgtNC4yOC00LjI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbGFybUFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuODggMy4zOSA2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMjIgNS43MmwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDlhOSA5IDAgMCAwIDAtMTh6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3em0xLTExaC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTNWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxhcm1PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YzMuODcgMCA3IDMuMTMgNyA3IDAgLjg0LS4xNiAxLjY1LS40MyAyLjRsMS41MiAxLjUyYy41OC0xLjE5LjkxLTIuNTEuOTEtMy45MmE5IDkgMCAwIDAtOS05Yy0xLjQxIDAtMi43My4zMy0zLjkyLjkxTDkuNiA2LjQzQzEwLjM1IDYuMTYgMTEuMTYgNiAxMiA2em0xMC0uMjgtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTIuOTIgMi4yOSAxLjY1IDMuNTcgMi45OCA0LjlsLTEuMTEuOTMgMS40MiAxLjQyIDEuMTEtLjk0LjguOEE4Ljk2NCA4Ljk2NCAwIDAgMCAzIDEzYzAgNC45NyA0LjAyIDkgOSA5IDIuMjUgMCA0LjMxLS44MyA1Ljg5LTIuMmwyLjIgMi4yIDEuMjctMS4yN0wzLjg5IDMuMjdsLS45Ny0uOTh6bTEzLjU1IDE2LjFDMTUuMjYgMTkuMzkgMTMuNyAyMCAxMiAyMGMtMy44NyAwLTctMy4xMy03LTcgMC0xLjcuNjEtMy4yNiAxLjYxLTQuNDdsOS44NiA5Ljg2ek04LjAyIDMuMjggNi42IDEuODZsLS44Ni43MSAxLjQyIDEuNDIuODYtLjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbGFybU9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgNS43Mi00LjYtMy44Ni0xLjI5IDEuNTMgNC42IDMuODZMMjIgNS43MnpNNy44OCAzLjM5IDYuNiAxLjg2IDIgNS43MWwxLjI5IDEuNTMgNC41OS0zLjg1ek0xMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5YTkgOSAwIDAgMCAwLTE4em0wIDE2Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3ptLTEuNDYtNS40N0w4LjQxIDEyLjRsLTEuMDYgMS4wNiAzLjE4IDMuMTggNi02LTEuMDYtMS4wNi00LjkzIDQuOTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFsYXJtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgNS43Mi00LjYtMy44Ni0xLjI5IDEuNTMgNC42IDMuODZMMjIgNS43MnpNNy44OCAzLjM5IDYuNiAxLjg2IDIgNS43MWwxLjI5IDEuNTMgNC41OS0zLjg1ek0xMi41IDhIMTF2Nmw0Ljc1IDIuODUuNzUtMS4yMy00LTIuMzdWOHpNMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWE5IDkgMCAwIDAgMC0xOHptMCAxNmMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFsbEluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjdjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDZoLTRjMCAxLjYyLTEuMzggMy0zIDNzLTMtMS4zOC0zLTNINVY1aDE0djR6bS00IDdoNnYzYzAgMS4xLS45IDItMiAySDVjLTEuMSAwLTItLjktMi0ydi0zaDZjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxsT3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi4yMSA0LjE2IDQgNHYtNHptNCAxMi00IDRoNHptLTEyIDQtNC00djR6bS00LTEyIDQtNGgtNHptMTIuOTUtLjk1Yy0yLjczLTIuNzMtNy4xNy0yLjczLTkuOSAwcy0yLjczIDcuMTcgMCA5LjkgNy4xNyAyLjczIDkuOSAwIDIuNzMtNy4xNiAwLTkuOXptLTEuMSA4LjhjLTIuMTMgMi4xMy01LjU3IDIuMTMtNy43IDBzLTIuMTMtNS41NyAwLTcuNyA1LjU3LTIuMTMgNy43IDAgMi4xMyA1LjU3IDAgNy43elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0uMjEuMTZoMjR2MjRoLTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbmFseXRpY3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxN0g3di01aDJ2NXptNCAwaC0ydi0zaDJ2M3ptMC01aC0ydi0yaDJ2MnptNCA1aC0yVjdoMnYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQW5jaG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgMTUgMS41NSAxLjU1Yy0uOTYgMS42OS0zLjMzIDMuMDQtNS41NSAzLjM3VjExaDNWOWgtM1Y3LjgyQzE0LjE2IDcuNCAxNSA2LjMgMTUgNWMwLTEuNjUtMS4zNS0zLTMtM1M5IDMuMzUgOSA1YzAgMS4zLjg0IDIuNCAyIDIuODJWOUg4djJoM3Y4LjkyYy0yLjIyLS4zMy00LjU5LTEuNjgtNS41NS0zLjM3TDcgMTVsLTQtM3YzYzAgMy44OCA0LjkyIDcgOSA3czktMy4xMiA5LTd2LTNsLTQgM3pNMTIgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbmRyb2lkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy42IDkuNDggMS44NC0zLjE4Yy4xNi0uMzEuMDQtLjY5LS4yNi0uODVhLjYzNy42MzcgMCAwIDAtLjgzLjIybC0xLjg4IDMuMjRhMTEuNDYzIDExLjQ2MyAwIDAgMC04Ljk0IDBMNS42NSA1LjY3YS42NDMuNjQzIDAgMCAwLS44Ny0uMmMtLjI4LjE4LS4zNy41NC0uMjIuODNMNi40IDkuNDhBMTAuNzggMTAuNzggMCAwIDAgMSAxOGgyMmExMC43OCAxMC43OCAwIDAgMC01LjQtOC41MnpNNyAxNS4yNWExLjI1IDEuMjUgMCAxIDEgMC0yLjUgMS4yNSAxLjI1IDAgMCAxIDAgMi41em0xMCAwYTEuMjUgMS4yNSAwIDEgMSAwLTIuNSAxLjI1IDEuMjUgMCAwIDEgMCAyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFubm91bmNlbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNyA5aC0yVjVoMnY2em0wIDRoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCAxMi0yIDItMi0yIDItMiAyIDJ6bS0yLTYgMi4xMiAyLjEyIDIuNS0yLjVMMTIgMSA3LjM4IDUuNjJsMi41IDIuNUwxMiA2em0tNiA2IDIuMTItMi4xMi0yLjUtMi41TDEgMTJsNC42MiA0LjYyIDIuNS0yLjVMNiAxMnptMTIgMC0yLjEyIDIuMTIgMi41IDIuNUwyMyAxMmwtNC42Mi00LjYyLTIuNSAyLjVMMTggMTJ6bS02IDYtMi4xMi0yLjEyLTIuNSAyLjVMMTIgMjNsNC42Mi00LjYyLTIuNS0yLjVMMTIgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFwcEJsb2NraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bS0yLjUgNEEyLjUgMi41IDAgMCAxIDE4IDkuNWMuNDIgMCAuOC4xMSAxLjE1LjI5bC0zLjM2IDMuMzZjLS4xOC0uMzUtLjI5LS43My0uMjktMS4xNXptMi41IDIuNWMtLjQyIDAtLjgtLjExLTEuMTUtLjI5bDMuMzYtMy4zNmMuMTguMzUuMjkuNzMuMjkgMS4xNWEyLjUgMi41IDAgMCAxLTIuNSAyLjV6TTE3IDE4SDdWNmgxMHYxaDJWM2MwLTEuMS0uOS0yLTItMkg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0ydi00aC0ydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFwcFNob3J0Y3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMThIN1Y2aDEwdjFoMlYzYzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJ2LTRoLTJ2MXpNMjAuMzggOS42MiAyMSAxMWwuNjItMS4zOEwyMyA5bC0xLjM4LS42MkwyMSA3bC0uNjIgMS4zOEwxOSA5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNiA4LTEuMjUgMi43NUwxMiAxMmwyLjc1IDEuMjVMMTYgMTZsMS4yNS0yLjc1TDIwIDEybC0yLjc1LTEuMjV6TTIxIDEzbC0uNjIgMS4zOEwxOSAxNWwxLjM4LjYyTDIxIDE3bC42Mi0xLjM4TDIzIDE1bC0xLjM4LS42MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dDaXJjbGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LThtMC0yQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDEwVjhoLTJ2NEg4bDQgNCA0LTRoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93Q2lyY2xlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTBzMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDIgMiA2LjQ4IDIgMTJ6bTEwLTFoNHYyaC00djNsLTQtNCA0LTR2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dDaXJjbGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwUzIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMHptLTEwIDFIOHYtMmg0VjhsNCA0LTQgNHYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dDaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOG0wIDJjNS41MiAwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTB6bS0xLTEwdjRoMnYtNGgzbC00LTQtNCA0aDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93T3V0d2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNnYyaDguNTlMNSAxNy41OSA2LjQxIDE5IDE2IDkuNDFWMThoMlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd1JpZ2h0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMDEgMTFINHYyaDEyLjAxdjNMMjAgMTJsLTMuOTktNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJ0aWNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNSAxNEg3di0yaDd2MnptMy00SDd2LTJoMTB2MnptMC00SDdWN2gxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3BlY3RSYXRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEyaC0ydjNoLTN2Mmg1di01ek03IDloM1Y3SDV2NWgyVjl6bTE0LTZIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXNzZXNzbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3NpZ25tZW50QWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0zIDUuNWgtMi41VjIxaC0xdi0yLjVIMTV2LTFoMi41VjE1aDF2Mi41SDIxdjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjY5IDE1Yy4zNi0uNzUuODQtMS40MyAxLjQzLTJIN3YtMmgxMWMxLjA3IDAgMi4wOS4yNSAzIC42OVY1YzAtMS4xLS45LTItMi0yaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDYuNjljLS40NC0uOTEtLjY5LTEuOTMtLjY5LTMgMC0uMzQuMDMtLjY3LjA4LTFIN3YtMmg0LjY5ek0xMiAyLjc1Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NS0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NXpNNyA3aDEwdjJIN1Y3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3NpZ25tZW50SW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTAgNGMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgMy0zLTEuMzQtMy0zIDEuMzQtMyAzLTN6bTYgMTJINnYtMS40YzAtMiA0LTMuMSA2LTMuMXM2IDEuMSA2IDMuMVYxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXNzaWdubWVudExhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS02IDE1aC0ydi0yaDJ2MnptMC00aC0yVjhoMnY2em0tMS05Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFzc2lnbm1lbnRSZXR1cm4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNCAxMmgtNHYzbC01LTUgNS01djNoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3NpZ25tZW50UmV0dXJuZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMCAxNS01LTVoM1Y5aDR2NGgzbC01IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFzc2lnbm1lbnRUdXJuZWRJbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tMiAxNC00LTQgMS40MS0xLjQxTDEwIDE0LjE3bDYuNTktNi41OUwxOCA5bC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFzc2lnbm1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMiAxNEg3di0yaDd2MnptMy00SDd2LTJoMTB2MnptMC00SDdWN2gxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3N1cmVkV29ya2xvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEwaDJ2N0g1ek0xMSAxMGgydjdoLTJ6TTIyIDYgMTIgMSAyIDZ2MmgyMHpNMiAxOXYyaDEyLjRjLS4yMS0uNjQtLjMyLTEuMzEtLjM2LTJIMnpNMTkgMTIuMjZWMTBoLTJ2My4yNnpNMjAgMTRsLTQgMnYyLjU1YzAgMi41MiAxLjcxIDQuODggNCA1LjQ1IDIuMjktLjU3IDQtMi45MyA0LTUuNDVWMTZsLTQtMnptLS43MiA3LTIuMDMtMi4wMyAxLjA2LTEuMDYuOTcuOTcgMi40MS0yLjM4IDEuMDYgMS4wNkwxOS4yOCAyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXV0b3JlbmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNnYzbDQtNC00LTR2M2MtNC40MiAwLTggMy41OC04IDggMCAxLjU3LjQ2IDMuMDMgMS4yNCA0LjI2TDYuNyAxNC44QTUuODcgNS44NyAwIDAgMSA2IDEyYzAtMy4zMSAyLjY5LTYgNi02em02Ljc2IDEuNzRMMTcuMyA5LjJjLjQ0Ljg0LjcgMS43OS43IDIuOCAwIDMuMzEtMi42OSA2LTYgNnYtM2wtNCA0IDQgNHYtM2M0LjQyIDAgOC0zLjU4IDgtOCAwLTEuNTctLjQ2LTMuMDMtMS4yNC00LjI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYWNrdXBUYWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZ2MTRINnYyaDE0YzEuMSAwIDItLjkgMi0yVjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek05IDE2SDR2LTVoNXY1em03IDBoLTV2LTVoNXY1em0wLTdINFY0aDEydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhY2t1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDRBNS45OTQgNS45OTQgMCAwIDAgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTQgMTN2NGgtNHYtNEg3bDUtNSA1IDVoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhbGFuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3LjgzYy44NS0uMyAxLjUzLS45OCAxLjgzLTEuODNIMThsLTMgN2MwIDEuNjYgMS41NyAzIDMuNSAzczMuNS0xLjM0IDMuNS0zbC0zLTdoMlY0aC02LjE3Yy0uNDEtMS4xNy0xLjUyLTItMi44My0ycy0yLjQyLjgzLTIuODMgMkgzdjJoMmwtMyA3YzAgMS42NiAxLjU3IDMgMy41IDNTOSAxNC42NiA5IDEzTDYgNmgzLjE3Yy4zLjg1Ljk4IDEuNTMgMS44MyAxLjgzVjE5SDJ2MmgyMHYtMmgtOVY3Ljgzek0yMC4zNyAxM2gtMy43NGwxLjg3LTQuMzZMMjAuMzcgMTN6bS0xMyAwSDMuNjNMNS41IDguNjQgNy4zNyAxM3pNMTIgNmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXJjb2RlUmVhZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgOC43NWgtNHYtMS41aDR2MS41em0tLjM4LTQuMzhMMjIgM2wtMy42MiAxLjYzTDE5IDZsMy42Mi0xLjYzek0xOSAxMGwtLjYyIDEuMzdMMjIgMTNsLjYyLTEuMzdMMTkgMTB6bS04IDNjLjU1IDAgMSAuNDUgMSAxdjJjMCAuNTUtLjQ1IDEtMSAxSDkuNjRsLS43NCAyLjc4QTIuOTk5IDIuOTk5IDAgMCAxIDYgMjJhMi45OTUgMi45OTUgMCAwIDEtMi45LTMuNzdsMS44Mi02LjhBNC4wMjggNC4wMjggMCAwIDEgMyA4YzAtMi4yMSAxLjc5LTQgNC00aDhjMS40OSAwIDIuNDUgMS41NiAxLjc5IDIuODlsLTIgNEMxNC40NSAxMS41NyAxMy43NSAxMiAxMyAxMmgtMi4wMmwtLjI3IDFIMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdGNoUHJlZGljdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDhIN2MtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYxMGMwLTEuMS0uOS0yLTItMnptLTQgMTIuNWgtMlYxOWgydjEuNXptMC0yLjVoLTJjMC0xLjUtMi41LTMtMi41LTUgMC0xLjkzIDEuNTctMy41IDMuNS0zLjVzMy41IDEuNTcgMy41IDMuNWMwIDItMi41IDMuNS0yLjUgNXptNS0xMS41SDZDNiA1LjY3IDYuNjcgNSA3LjUgNWg5Yy44MyAwIDEuNS42NyAxLjUgMS41em0tMS0zSDdDNyAyLjY3IDcuNjcgMiA4LjUgMmg3Yy44MyAwIDEuNS42NyAxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb29rT25saW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6TTcgMThWNmgxMHYxMkg3em05LTdWOS4xNEMxNiA4LjUxIDE1LjU1IDggMTUgOEg5Yy0uNTUgMC0xIC41MS0xIDEuMTR2MS45NmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMXYxLjc2YzAgLjYzLjQ1IDEuMTQgMSAxLjE0aDZjLjU1IDAgMS0uNTEgMS0xLjE0VjEzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xem0tMy41IDMuNWgtMXYtMWgxdjF6bTAtMmgtMXYtMWgxdjF6bTAtMmgtMXYtMWgxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNNiA0aDV2OGwtMi41LTEuNUw2IDEyVjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvb2ttYXJrQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgN2gtMnYyaC0yVjdoLTJWNWgyVjNoMnYyaDJ2MnptLTIgMTQtNy0zLTcgM1Y1YzAtMS4xLjktMiAyLTJoN2E1LjAwMiA1LjAwMiAwIDAgMCA1IDcuOVYyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9va21hcmtBZGRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5IDIxLTctMy03IDNWNWMwLTEuMS45LTIgMi0yaDdhNS4wMDIgNS4wMDIgMCAwIDAgNSA3LjlWMjF6TTE3LjgzIDkgMTUgNi4xN2wxLjQxLTEuNDEgMS40MSAxLjQxIDMuNTQtMy41NCAxLjQxIDEuNDFMMTcuODMgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9va21hcmtCb3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAzSDdjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNSAyMWw3LTMgNyAzVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTUtNS0yLjE4TDcgMThWNWgxMHYxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9va21hcmtSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA3aC02VjVoNnYyem0tMiAzLjlBNS4wMDIgNS4wMDIgMCAwIDEgMTQgM0g3Yy0xLjEgMC0yIC45LTIgMnYxNmw3LTMgNyAzVjEwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb29rbWFya3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5IDE4IDIgMVYzYzAtMS4xLS45LTItMi0ySDguOTlDNy44OSAxIDcgMS45IDcgM2gxMGMxLjEgMCAyIC45IDIgMnYxM3pNMTUgNUg1Yy0xLjEgMC0yIC45LTIgMnYxNmw3LTMgNyAzVjdjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyb3dzZUdhbGxlcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDNhOSA5IDAgMSAwIC4wMDEgMTguMDAxQTkgOSAwIDAgMCA5IDN6bTIuNzkgMTMuMjFMOCAxMi40MVY3aDJ2NC41OWwzLjIxIDMuMjEtMS40MiAxLjQxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy45OSAzLjUydjIuMTZBNi45OSA2Ljk5IDAgMCAxIDIyIDEyYzAgMi43OS0xLjY0IDUuMi00LjAxIDYuMzJ2Mi4xNkMyMS40OCAxOS4yNCAyNCAxNS45MSAyNCAxMnMtMi41Mi03LjI0LTYuMDEtOC40OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnVnUmVwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOGgtMi44MWE1Ljk4NSA1Ljk4NSAwIDAgMC0xLjgyLTEuOTZMMTcgNC40MSAxNS41OSAzbC0yLjE3IDIuMTdDMTIuOTYgNS4wNiAxMi40OSA1IDEyIDVjLS40OSAwLS45Ni4wNi0xLjQxLjE3TDguNDEgMyA3IDQuNDFsMS42MiAxLjYzQzcuODggNi41NSA3LjI2IDcuMjIgNi44MSA4SDR2MmgyLjA5Yy0uMDUuMzMtLjA5LjY2LS4wOSAxdjFINHYyaDJ2MWMwIC4zNC4wNC42Ny4wOSAxSDR2MmgyLjgxYzEuMDQgMS43OSAyLjk3IDMgNS4xOSAzczQuMTUtMS4yMSA1LjE5LTNIMjB2LTJoLTIuMDljLjA1LS4zMy4wOS0uNjYuMDktMXYtMWgydi0yaC0ydi0xYzAtLjM0LS4wNC0uNjctLjA5LTFIMjBWOHptLTYgOGgtNHYtMmg0djJ6bTAtNGgtNHYtMmg0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJ1aWxkQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTQuOSAxMy40OS0xLjQgMS40Yy0uMi4yLS41MS4yLS43MSAwbC0zLjQxLTMuNDFjLTEuMjIuNDMtMi42NC4xNy0zLjYyLS44MWEzLjQ2OCAzLjQ2OCAwIDAgMS0uNTktNC4xbDIuMzUgMi4zNSAxLjQxLTEuNDEtMi4zNS0yLjM0YzEuMzItLjcxIDIuOTktLjUyIDQuMS41OS45OC45OCAxLjI0IDIuNC44MSAzLjYybDMuNDEgMy40MWMuMTkuMTkuMTkuNTEgMCAuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnVpbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuNyAxOS05LjEtOS4xYy45LTIuMy40LTUtMS41LTYuOS0yLTItNS0yLjQtNy40LTEuM0w5IDYgNiA5IDEuNiA0LjdDLjQgNy4xLjkgMTAuMSAyLjkgMTIuMWMxLjkgMS45IDQuNiAyLjQgNi45IDEuNWw5LjEgOS4xYy40LjQgMSAuNCAxLjQgMGwyLjMtMi4zYy41LS40LjUtMS4xLjEtMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYWNoZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSA4LTQgNGgzYzAgMy4zMS0yLjY5IDYtNiA2YTUuODcgNS44NyAwIDAgMS0yLjgtLjdsLTEuNDYgMS40NkE3LjkzIDcuOTMgMCAwIDAgMTIgMjBjNC40MiAwIDgtMy41OCA4LThoM2wtNC00ek02IDEyYzAtMy4zMSAyLjY5LTYgNi02IDEuMDEgMCAxLjk3LjI1IDIuOC43bDEuNDYtMS40NkE3LjkzIDcuOTMgMCAwIDAgMTIgNGMtNC40MiAwLTggMy41OC04IDhIMWw0IDQgNC00SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGVuZGFyTW9udGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0aC0xVjJoLTJ2Mkg4VjJINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMjBhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE2SDVWMTBoMTR2MTB6TTkgMTRIN3YtMmgydjJ6bTQgMGgtMnYtMmgydjJ6bTQgMGgtMnYtMmgydjJ6bS04IDRIN3YtMmgydjJ6bTQgMGgtMnYtMmgydjJ6bTQgMGgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGVuZGFyVG9kYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzaC0xVjFoLTJ2Mkg3VjFINXYySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxOEg0VjhoMTZ2MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGVuZGFyVmlld0RheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTdoMTh2Mkgzem0wLTdoMTh2NUgzem0wLTRoMTh2MkgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYWxlbmRhclZpZXdNb250aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTggMTFINFY2aDR2NXptNiAwaC00VjZoNHY1em02IDBoLTRWNmg0djV6TTggMThINHYtNWg0djV6bTYgMGgtNHYtNWg0djV6bTYgMGgtNHYtNWg0djV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGVuZGFyVmlld1dlZWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNyAyaDIuNXYxMkgxM1Y2em0tMiAxMkg4LjVWNkgxMXYxMnpNNCA2aDIuNXYxMkg0VjZ6bTE2IDEyaC0yLjVWNkgyMHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FtZXJhRW5oYW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAzIDcuMTcgNUg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJoLTMuMTdMMTUgM0g5em0zIDE1Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgMTcgMS4yNS0yLjc1TDE2IDEzbC0yLjc1LTEuMjVMMTIgOWwtMS4yNSAyLjc1TDggMTNsMi43NSAxLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW5jZWxTY2hlZHVsZVNlbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDljLS40MiAwLS44My4wNC0xLjI0LjExTDEuMDEgMyAxIDEwbDkgMi05IDIgLjAxIDcgOC4wNy0zLjQ2QzkuNTkgMjEuMTkgMTIuNzEgMjQgMTYuNSAyNGM0LjE0IDAgNy41LTMuMzYgNy41LTcuNVMyMC42NCA5IDE2LjUgOXptMCAxM2MtMy4wMyAwLTUuNS0yLjQ3LTUuNS01LjVzMi40Ny01LjUgNS41LTUuNSA1LjUgMi40NyA1LjUgNS41LTIuNDcgNS41LTUuNSA1LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4LjI3IDE0LjAzLTEuNzcgMS43Ni0xLjc3LTEuNzYtLjcuNyAxLjc2IDEuNzctMS43NiAxLjc3LjcuNyAxLjc3LTEuNzYgMS43NyAxLjc2LjctLjctMS43Ni0xLjc3IDEuNzYtMS43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FyZEdpZnRjYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtMi4xOGMuMTEtLjMxLjE4LS42NS4xOC0xYTIuOTk2IDIuOTk2IDAgMCAwLTUuNS0xLjY1bC0uNS42Ny0uNS0uNjhDMTAuOTYgMi41NCAxMC4wNSAyIDkgMiA3LjM0IDIgNiAzLjM0IDYgNWMwIC4zNS4wNy42OS4xOCAxSDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE5YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjhjMC0xLjExLS44OS0yLTItMnptLTUtMmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xek05IDRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMTEgMTVINHYtMmgxNnYyem0wLTVINFY4aDUuMDhMNyAxMC44MyA4LjYyIDEyIDExIDguNzZsMS0xLjM2IDEgMS4zNkwxNS4zOCAxMiAxNyAxMC44MyAxNC45MiA4SDIwdjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhcmRNZW1iZXJzaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjExIDAtMiAuODktMiAydjExYzAgMS4xMS44OSAyIDIgMmg0djVsNC0yIDQgMnYtNWg0YzEuMTEgMCAyLS44OSAyLTJWNGMwLTEuMTEtLjg5LTItMi0yem0wIDEzSDR2LTJoMTZ2MnptMC01SDRWNGgxNnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYXJkVHJhdmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtM1Y0YzAtMS4xMS0uODktMi0yLTJIOWMtMS4xMSAwLTIgLjg5LTIgMnYySDRjLTEuMTEgMC0yIC44OS0yIDJ2MTFjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yek05IDRoNnYySDlWNHptMTEgMTVINHYtMmgxNnYyem0wLTVINFY4aDN2MmgyVjhoNnYyaDJWOGgzdjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoYW5nZUhpc3RvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDcuNzcgMTguMzkgMThINS42MUwxMiA3Ljc3TTEyIDQgMiAyMGgyMEwxMiA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGVja0NpcmNsZU91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjU5IDcuNTggMTAgMTQuMTdsLTMuNTktMy41OEw1IDEybDUgNSA4LTh6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGVja0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0yIDE1LTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hyb21lUmVhZGVyTW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNLTc0IDI5aDQ4djQ4aC00OFYyOXpNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTJoN3YxLjVoLTd6bTAtMi41aDdWMTFoLTd6bTAgNWg3VjE2aC03ek0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEzYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNWgtOVY2aDl2MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENpcmNsZU5vdGlmaWNhdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE2LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNWgzYzAgLjgzLS42NyAxLjUtMS41IDEuNXptNS0yLjVIN3YtMWwxLTF2LTIuNjFDOCA5LjI3IDkuMDMgNy40NyAxMSA3di0uNWMwLS41Ny40My0xIDEtMXMxIC40MyAxIDFWN2MxLjk3LjQ3IDMgMi4yOCAzIDQuMzlWMTRsMSAxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTYgNGg1djhsLTIuNS0xLjVMNiAxMlY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbG9zZUZ1bGxzY3JlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAzLjQxIDE2LjcxIDguNyAyMCAxMmgtOFY0bDMuMjkgMy4yOUwyMC41OSAyIDIyIDMuNDF6TTMuNDEgMjJsNS4yOS01LjI5TDEyIDIwdi04SDRsMy4yOSAzLjI5TDIgMjAuNTkgMy40MSAyMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29kZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjE3IDEyLTQuNTgtNC41OUwxNiA2bDYgNi0zLjU5IDMuNTlMMTcgMTQuMTcgMTkuMTcgMTJ6TTEuMzkgNC4yMmw0LjE5IDQuMTlMMiAxMmw2IDYgMS40MS0xLjQxTDQuODMgMTIgNyA5LjgzbDEyLjc4IDEyLjc4IDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjQgMTYuNiA0LjggMTJsNC42LTQuNkw4IDZsLTYgNiA2IDYgMS40LTEuNHptNS4yIDAgNC42LTQuNi00LjYtNC42TDE2IDZsNiA2LTYgNi0xLjQtMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb21tZW50QmFuayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS0xIDExLTIuNS0xLjVMMTQgMTNWNWg1djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbW1pdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjkgMTFhNSA1IDAgMCAwLTkuOCAwSDJ2Mmg1LjFhNSA1IDAgMCAwIDkuOCAwSDIydi0yaC01LjF6TTEyIDE1Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29tbXV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRINUMzLjM0IDQgMiA1LjM0IDIgN3Y4YzAgMS42NiAxLjM0IDMgMyAzbC0xIDF2MWgxbDItMi4wM0w5IDE4di01SDRWNS45OEwxMyA2djJoMlY3YzAtMS42Ni0xLjM0LTMtMy0zek01IDE0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTE1LjU3LTQuMzRjLS4xNC0uNC0uNTItLjY2LS45Ny0uNjZoLTcuMTljLS40NiAwLS44My4yNi0uOTguNjZMMTAgMTMuNzdsLjAxIDUuNTFjMCAuMzguMzEuNzIuNjkuNzJoLjYyYy4zOCAwIC42OC0uMzguNjgtLjc2VjE4aDh2MS4yNGMwIC4zOC4zMS43Ni42OS43NmguNjFjLjM4IDAgLjY5LS4zNC42OS0uNzJsLjAxLTEuMzd2LTQuMTRsLTEuNDMtNC4xMXptLTguMTYuMzRoNy4xOWwxLjAzIDNoLTkuMjVsMS4wMy0zek0xMiAxNmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem04IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29tcGFyZUFycm93cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMDEgMTRIMnYyaDcuMDF2M0wxMyAxNWwtMy45OS00djN6bTUuOTgtMXYtM0gyMlY4aC03LjAxVjVMMTEgOWwzLjk5IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbXByZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxOWgzdjNoMnYtM2gzbC00LTQtNCA0em04LTE1aC0zVjFoLTJ2M0g4bDQgNCA0LTR6TTQgOXYyaDE2VjlINHpNNCAxMmgxNnYySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRhY3RQYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjhsLTYtNnptLTIgOGMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTQgOEg4di0uNTdjMC0uODEuNDgtMS41MyAxLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAxIDUuNTYgMEEyLjAxIDIuMDEgMCAwIDEgMTYgMTcuNDNWMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRhY3RTdXBwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNSAyQzYuODEgMiAzIDUuODEgMyAxMC41UzYuODEgMTkgMTEuNSAxOWguNXYzYzQuODYtMi4zNCA4LTcgOC0xMS41QzIwIDUuODEgMTYuMTkgMiAxMS41IDJ6bTEgMTQuNWgtMnYtMmgydjJ6bTAtMy41aC0yYzAtMy4yNSAzLTMgMy01IDAtMS4xLS45LTItMi0ycy0yIC45LTIgMmgtMmMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0YzAgMi41LTMgMi43NS0zIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRhY3RsZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNOC40NiAxNC40NWwtMS4zNi0uNjJjLjI4LS42MS40MS0xLjI0LjQtMS44NmE0LjQyIDQuNDIgMCAwIDAtLjQtMS44bDEuMzYtLjYzYy4zNS43NS41MyAxLjU2LjU0IDIuNC4wMS44Ni0uMTcgMS43LS41NCAyLjUxem0zLjA3IDEuNTYtMS4zLS43NGMuNTItLjkyLjc4LTEuOTguNzgtMy4xNSAwLTEuMTktLjI3LTIuMzMtLjgtMy40bDEuMzQtLjY3Yy42NCAxLjI4Ljk2IDIuNjUuOTYgNC4wNyAwIDEuNDMtLjMzIDIuNzQtLjk4IDMuODl6bTMuMTQgMS4zMi0xLjM1LS42NmMuNzgtMS42IDEuMTgtMy4xOCAxLjE4LTQuNjkgMC0xLjUxLS40LTMuMDctMS4xOC00LjY0bDEuMzQtLjY3Yy45IDEuNzggMS4zNCAzLjU2IDEuMzQgNS4zMSAwIDEuNzQtLjQ0IDMuNTQtMS4zMyA1LjM1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb3B5cmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS44OCA5LjE0YzEuMjguMDYgMS42MSAxLjE1IDEuNjMgMS42NmgxLjc5Yy0uMDgtMS45OC0xLjQ5LTMuMTktMy40NS0zLjE5QzkuNjQgNy42MSA4IDkgOCAxMi4xNGMwIDEuOTQuOTMgNC4yNCAzLjg0IDQuMjQgMi4yMiAwIDMuNDEtMS42NSAzLjQ0LTIuOTVoLTEuNzljLS4wMy41OS0uNDUgMS4zOC0xLjYzIDEuNDQtMS4zMS0uMDQtMS44Ni0xLjA2LTEuODYtMi43MyAwLTIuODkgMS4yOC0yLjk4IDEuODgtM3pNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyZWRpdENhcmRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45IDIxLjkgMi4xIDIuMS42OSAzLjUxbDEuNTUgMS41NWMtLjE1LjI4LS4yMy42LS4yMy45NEwyIDE4YzAgMS4xMS44OSAyIDIgMmgxMy4xN2wzLjMxIDMuMzEgMS40Mi0xLjQxek00IDEyVjhoMS4xN2w0IDRINHptMi44My04SDIwYzEuMTEgMCAyIC44OSAyIDJ2MTJjMCAuMzQtLjA4LjY2LS4yMy45NEwxNC44MyAxMkgyMFY4aC05LjE3bC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyZWRpdENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0di02aDE2djZ6bTAtMTBINFY2aDE2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSAxNHYtMUgxMXYuNWgydi0xaC0yLjVjLS41NSAwLTEtLjQ1LTEtMVYxMGMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXYxSDEzdi0uNWgtMnYxaDIuNWMuNTUgMCAxIC40NSAxIDFWMTRjMCAuNTUtLjQ1IDEtMSAxaC0zYy0uNTUgMC0xLS40NS0xLTF6bTcuNSAxaDNjLjU1IDAgMS0uNDUgMS0xdi0xLjVjMC0uNTUtLjQ1LTEtMS0xaC0yLjV2LTFoMnYuNUgyMXYtMWMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXYxLjVjMCAuNTUuNDUgMSAxIDFoMi41djFoLTJWMTNIMTZ2MWMwIC41NS40NSAxIDEgMXptLTktNWMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTF2LTFINi41di41aC0ydi0zaDJ2LjVIOHYtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3VycmVuY3lFeGNoYW5nZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjg5IDExLjFjLTEuNzgtLjU5LTIuNjQtLjk2LTIuNjQtMS45IDAtMS4wMiAxLjExLTEuMzkgMS44MS0xLjM5IDEuMzEgMCAxLjc5Ljk5IDEuOSAxLjM0bDEuNTgtLjY3Yy0uMTUtLjQ1LS44Mi0xLjkyLTIuNTQtMi4yNFY1aC0ydjEuMjZjLTIuNDguNTYtMi40OSAyLjg2LTIuNDkgMi45NiAwIDIuMjcgMi4yNSAyLjkxIDMuMzUgMy4zMSAxLjU4LjU2IDIuMjggMS4wNyAyLjI4IDIuMDMgMCAxLjEzLTEuMDUgMS42MS0xLjk4IDEuNjEtMS44MiAwLTIuMzQtMS44Ny0yLjQtMi4wOWwtMS42Ni42N2MuNjMgMi4xOSAyLjI4IDIuNzggMi45IDIuOTZWMTloMnYtMS4yNGMuNC0uMDkgMi45LS41OSAyLjktMy4yMiAwLTEuMzktLjYxLTIuNjEtMy4wMS0zLjQ0ek0zIDIxSDF2LTZoNnYySDQuNTJjMS42MSAyLjQxIDQuMzYgNCA3LjQ4IDRhOSA5IDAgMCAwIDktOWgyYzAgNi4wOC00LjkyIDExLTExIDExLTMuNzIgMC03LjAxLTEuODUtOS00LjY3VjIxem0tMi05QzEgNS45MiA1LjkyIDEgMTIgMWMzLjcyIDAgNy4wMSAxLjg1IDkgNC42N1YzaDJ2NmgtNlY3aDIuNDhDMTcuODcgNC41OSAxNS4xMiAzIDEyIDNhOSA5IDAgMCAwLTkgOUgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYW5nZXJvdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS43MyAzSDguMjdMMyA4LjI3djcuNDZMOC4yNyAyMWg3LjQ2TDIxIDE1LjczVjguMjdMMTUuNzMgM3pNMTcgMTUuNzQgMTUuNzQgMTcgMTIgMTMuMjYgOC4yNiAxNyA3IDE1Ljc0IDEwLjc0IDEyIDcgOC4yNiA4LjI2IDcgMTIgMTAuNzQgMTUuNzQgNyAxNyA4LjI2IDEzLjI2IDEyIDE3IDE1Ljc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYXNoYm9hcmRDdXN0b21pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDNoOHY4SDN6bTEwIDBoOHY4aC04ek0zIDEzaDh2OEgzem0xNSAwaC0ydjNoLTN2MmgzdjNoMnYtM2gzdi0yaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYXNoYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzaDhWM0gzdjEwem0wIDhoOHYtNkgzdjZ6bTEwIDBoOFYxMWgtOHYxMHptMC0xOHY2aDhWM2gtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGF0YUV4cGxvcmF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJjMCAxLjMzLjI2IDIuNjEuNzQgMy43N0w4IDEwLjVsMy4zIDIuNzhMMTQuNTggMTBIMTNWOGg1djVoLTJ2LTEuNThMMTEuNDEgMTZsLTMuMjktMi43OS00LjQgNC40QTkuOTk2IDkuOTk2IDAgMCAwIDEyIDIyaDhjMS4xIDAgMi0uOSAyLTJ2LThjMC01LjUyLTQuNDgtMTAtMTAtMTB6bTcuNSAxOC41Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERhdGFUaHJlc2hvbGRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTguMzMgNS4xNyAyIDIgMy42Ny0zLjY3IDEuNDEgMS40MUwxMi42NyAxM2wtMi0yLTMgMy0xLjQxLTEuNDEgNC40MS00LjQyek01IDE2aDEuNzJMNSAxNy43MlYxNnptLjg0IDMgMy0zaDEuODNsLTMgM0g1Ljg0em0zLjk2IDAgMy0zaDEuNjJsLTMgM0g5Ljh6bTMuNzMgMCAzLTNoMS42MmwtMyAzaC0xLjYyek0xOSAxOWgtMS43M0wxOSAxNy4yN1YxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGF0ZVJhbmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMUg3djJoMnYtMnptNCAwaC0ydjJoMnYtMnptNCAwaC0ydjJoMnYtMnptMi03aC0xVjJoLTJ2Mkg4VjJINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMjBhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOWgxNHYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVsZXRlRm9yZXZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjdINnYxMnptMi40Ni03LjEyIDEuNDEtMS40MUwxMiAxMi41OWwyLjEyLTIuMTIgMS40MSAxLjQxTDEzLjQxIDE0bDIuMTIgMi4xMi0xLjQxIDEuNDFMMTIgMTUuNDFsLTIuMTIgMi4xMi0xLjQxLTEuNDFMMTAuNTkgMTRsLTIuMTMtMi4xMnpNMTUuNSA0bC0xLTFoLTVsLTEgMUg1djJoMTRWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVsZXRlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek04IDloOHYxMEg4Vjl6bTcuNS01LTEtMWgtNWwtMSAxSDV2MmgxNFY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZWxldGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6TTE5IDRoLTMuNWwtMS0xaC01bC0xIDFINXYyaDE0VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlbnNpdHlMYXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM2gxOHYySDN6TTMgMTloMTh2MkgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZW5zaXR5TWVkaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzaDE4djJIM3pNMyAxOWgxOHYySDN6TTMgMTFoMTh2MkgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZW5zaXR5U21hbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDJoMTh2Mkgzek0zIDIwaDE4djJIM3pNMyAxNGgxOHYySDN6TTMgOGgxOHYySDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlc2NyaXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0yIDE2SDh2LTJoOHYyem0wLTRIOHYtMmg4djJ6bS0zLTVWMy41TDE4LjUgOUgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlzYWJsZWRCeURlZmF1bHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDN2MThoMThWM0gzem0xNCAxMi41OUwxNS41OSAxNyAxMiAxMy40MSA4LjQxIDE3IDcgMTUuNTkgMTAuNTkgMTIgNyA4LjQxIDguNDEgNyAxMiAxMC41OSAxNS41OSA3IDE3IDguNDEgMTMuNDEgMTIgMTcgMTUuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpc2FibGVkVmlzaWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk5IDEyLjM0Yy4wMS0uMTEuMDEtLjIzLjAxLS4zNCAwLTUuNTItNC40OC0xMC0xMC0xMFMyIDYuNDggMiAxMmMwIDUuMTcgMy45MyA5LjQzIDguOTYgOS45NWE5LjM0MyA5LjM0MyAwIDAgMS0yLjMyLTIuNjhBOC4wMSA4LjAxIDAgMCAxIDQgMTJjMC0xLjg1LjYzLTMuNTUgMS42OS00LjlsNS42NiA1LjY2Yy41Ni0uNCAxLjE3LS43MyAxLjgyLTFMNy4xIDUuNjlBNy45MDIgNy45MDIgMCAwIDEgMTIgNGM0LjI0IDAgNy43IDMuMjkgNy45OCA3LjQ1LjcxLjIyIDEuMzkuNTIgMi4wMS44OXpNMTcgMTNjLTMuMTggMC01LjkgMS44Ny03IDQuNSAxLjEgMi42MyAzLjgyIDQuNSA3IDQuNXM1LjktMS44NyA3LTQuNWMtMS4xLTIuNjMtMy44Mi00LjUtNy00LjV6bTAgN2EyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXptMS41LTIuNWMwIC44My0uNjcgMS41LTEuNSAxLjVzLTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlzcGxheVNldHRpbmdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNHYyaDh2LTJoNGMxLjEgMCAyLS45IDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTRINFY1aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDguMjVoOHYxLjVINnpNMTYuNSA5Ljc1SDE4di0xLjVoLTEuNVY3SDE1djRoMS41ek0xMCAxMi4yNWg4djEuNWgtOHpNNy41IDE1SDl2LTRINy41djEuMjVINnYxLjVoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxM0g0Yy0uNTUgMC0xIC40NS0xIDF2NmMwIC41NS40NSAxIDEgMWgxNmMuNTUgMCAxLS40NSAxLTF2LTZjMC0uNTUtLjQ1LTEtMS0xek03IDE5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpNMjAgM0g0Yy0uNTUgMC0xIC40NS0xIDF2NmMwIC41NS40NSAxIDEgMWgxNmMuNTUgMCAxLS40NSAxLTFWNGMwLS41NS0uNDUtMS0xLTF6TTcgOWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvbmVBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCA3LTEuNDEtMS40MS02LjM0IDYuMzQgMS40MSAxLjQxTDE4IDd6bTQuMjQtMS40MUwxMS42NiAxNi4xNyA3LjQ4IDEybC0xLjQxIDEuNDFMMTEuNjYgMTlsMTItMTItMS40Mi0xLjQxek0uNDEgMTMuNDEgNiAxOWwxLjQxLTEuNDFMMS44MyAxMiAuNDEgMTMuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvbmVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS43NyA1LjAzIDEuNCAxLjRMOC40MyAxOS4xN2wtNS42LTUuNiAxLjQtMS40IDQuMiA0LjJMMTkuNzcgNS4wM20wLTIuODNMOC40MyAxMy41NGwtNC4yLTQuMkwwIDEzLjU3IDguNDMgMjIgMjQgNi40MyAxOS43NyAyLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE2LjIgNC44IDEybC0xLjQgMS40TDkgMTkgMjEgN2wtMS40LTEuNEw5IDE2LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvbnV0TGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA1LjA4VjJjLTUgLjUtOSA0LjgxLTkgMTBzNCA5LjUgOSAxMHYtMy4wOGMtMy0uNDgtNi0zLjQtNi02LjkyczMtNi40NCA2LTYuOTJ6TTE4Ljk3IDExSDIyYy0uNDctNS00LTguNTMtOS05djMuMDhDMTYgNS41MSAxOC41NCA4IDE4Ljk3IDExek0xMyAxOC45MlYyMmM1LS40NyA4LjUzLTQgOS05aC0zLjAzYy0uNDMgMy0yLjk3IDUuNDktNS45NyA1LjkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb251dFNtYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOS4xNlYyYy01IC41LTkgNC43OS05IDEwczQgOS41IDkgMTB2LTcuMTZjLTEtLjQxLTItMS41Mi0yLTIuODRzMS0yLjQzIDItMi44NHpNMTQuODYgMTFIMjJjLS40OC00Ljc1LTQtOC41My05LTl2Ny4xNmMxIC4zIDEuNTIuOTggMS44NiAxLjg0ek0xMyAxNC44NFYyMmM1LS40NyA4LjUyLTQuMjUgOS05aC03LjE0Yy0uMzQuODYtLjg2IDEuNTQtMS44NiAxLjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcmFnSW5kaWNhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxOGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6bS0yLThjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wLTZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem02IDRjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0wIDJjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREeW5hbWljRm9ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDIwdi05aC0yVjRoN2wtMiA1aDJsLTUgMTF6bS0yLTd2N0g0Yy0xLjEgMC0yLS45LTItMnYtM2MwLTEuMS45LTIgMi0yaDExem0tOC43NSAyLjc1aC0xLjV2MS41aDEuNXYtMS41ek0xMyA0djdINGMtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yaDl6TTYuMjUgNi43NWgtMS41djEuNWgxLjV2LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWNvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4wNSA4LjA1YTcuMDAxIDcuMDAxIDAgMCAwLS4wMiA5Ljg4YzEuNDctMy40IDQuMDktNi4yNCA3LjM2LTcuOTNBMTUuOTUyIDE1Ljk1MiAwIDAgMCA4IDE5LjMyYzIuNiAxLjIzIDUuOC43OCA3Ljk1LTEuMzdDMTkuNDMgMTQuNDcgMjAgNCAyMCA0UzkuNTMgNC41NyA2LjA1IDguMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkaXRDYWxlbmRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIySDVhMiAyIDAgMCAxLTItMmwuMDEtMTRjMC0xLjEuODgtMiAxLjk5LTJoMVYyaDJ2Mmg4VjJoMnYyaDFjMS4xIDAgMiAuOSAyIDJ2NmgtMnYtMkg1djEwaDd2MnptMTAuMTMtNS4wMS43MS0uNzFhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0uNzEtLjcxYS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtLjcxLjcxIDIuMTIgMi4xMnptLS43MS43MS01LjMgNS4zSDE0di0yLjEybDUuMy01LjMgMi4xMiAyLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0RG9jdW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxOS44OFYyMmgyLjEybDUuMTctNS4xNy0yLjEyLTIuMTJ6TTIwIDhsLTYtNkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMTJ2LTIuOTVsOC04Vjh6bS03IDFWMy41TDE4LjUgOUgxM3pNMjIuNzEgMTRsLS43MS0uNzFhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0uNzEuNzFMMjIgMTYuMTJsLjcxLS43MWEuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkaXRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIuMTI2IDguMTI1IDEuOTM3LTEuOTM3IDMuNzQ3IDMuNzQ3LTEuOTM3IDEuOTM4ek0yMC43MSA1LjYzbC0yLjM0LTIuMzRhMSAxIDAgMCAwLTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NUwyMC43MSA3YTEgMSAwIDAgMCAwLTEuMzd6TTIgNWw2LjYzIDYuNjNMMyAxNy4yNVYyMWgzLjc1bDUuNjMtNS42MkwxOCAyMWwyLTJMNCAzIDIgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWRpdFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTdWOS45M0wxMy45MyAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTguOTNMMTQuMDcgMTdIN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNWg0LjI0bDcuMi03LjItNC4yNC00LjI0LTcuMiA3LjJ6TTIyLjkxIDIuNDkgMjEuNSAxLjA4Yy0uNzgtLjc4LTIuMDUtLjc4LTIuODMgMGwtMS4wNiAxLjA2IDQuMjQgNC4yNCAxLjA2LTEuMDZjLjc5LS43OC43OS0yLjA1IDAtMi44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMjRWMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE3aDE0djJINXptNy0xMkw1LjMzIDE1aDEzLjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFdXJvU3ltYm9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTguNUE2LjQ4IDYuNDggMCAwIDEgOS4yNCAxNUgxNXYtMkg4LjU4Yy0uMDUtLjMzLS4wOC0uNjYtLjA4LTFzLjAzLS42Ny4wOC0xSDE1VjlIOS4yNEE2LjQ5MSA2LjQ5MSAwIDAgMSAxNSA1LjVjMS42MSAwIDMuMDkuNTkgNC4yMyAxLjU3TDIxIDUuM0E4Ljk1NSA4Ljk1NSAwIDAgMCAxNSAzYy0zLjkyIDAtNy4yNCAyLjUxLTguNDggNkgzdjJoMy4wNmE4LjI2MiA4LjI2MiAwIDAgMCAwIDJIM3YyaDMuNTJjMS4yNCAzLjQ5IDQuNTYgNiA4LjQ4IDYgMi4zMSAwIDQuNDEtLjg3IDYtMi4zbC0xLjc4LTEuNzdjLTEuMTMuOTgtMi42IDEuNTctNC4yMiAxLjU3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFdmVudFJlcGVhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDEyVjZjMC0xLjEtLjktMi0yLTJoLTFWMmgtMnYySDhWMkg2djJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg3di0ySDVWMTBoMTR2Mmgyem0tNS4zNiA4YTMuNTA0IDMuNTA0IDAgMCAwIDYuODYtMWMwLTEuOTMtMS41Ny0zLjUtMy41LTMuNS0uOTUgMC0xLjgyLjM4LTIuNDUgMUgxOFYxOGgtNHYtNGgxLjV2MS40M2MuOS0uODggMi4xNC0xLjQzIDMuNS0xLjQzIDIuNzYgMCA1IDIuMjQgNSA1YTUuMDAyIDUuMDAyIDAgMCAxLTkuOSAxaDEuNTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV2ZW50U2VhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTh2M2gzdi0zaDEwdjNoM3YtNkg0djN6bTE1LThoM3YzaC0zdi0zek0yIDEwaDN2M0gydi0zem0xNSAzSDdWNWMwLTEuMS45LTIgMi0yaDZjMS4xIDAgMiAuOSAyIDJ2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXZlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMmgtNXY1aDV2LTV6TTE2IDF2Mkg4VjFINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMTlhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yaC0xVjFoLTJ6bTMgMThINVY4aDE0djExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFeGl0VG9BcHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wOSAxNS41OSAxMS41IDE3bDUtNS01LTUtMS40MSAxLjQxTDEyLjY3IDExSDN2Mmg5LjY3bC0yLjU4IDIuNTl6TTE5IDNINWEyIDIgMCAwIDAtMiAydjRoMlY1aDE0djE0SDV2LTRIM3Y0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAyMGgxNnYySDR6TTQgMmgxNnYySDR6bTkgN2gzbC00LTQtNCA0aDN2Nkg4bDQgNCA0LTRoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV4cGxvcmVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjE5IDE0LjE5LTEuNDEtMS40MS0xLjU2LTEuNTZMMTEgMTEgOS44MSA5LjgxIDQuOTMgNC45MyAyLjI3IDIuMjcgMSAzLjU0bDIuNzggMi43OGMtLjExLjE2LS4yMS4zMi0uMzEuNDgtLjA0LjA3LS4wOS4xNC0uMTMuMjEtLjA5LjE1LS4xNy4zMS0uMjUuNDctLjA1LjEtLjEuMjEtLjE2LjMyLS4wNi4xNC0uMTMuMjgtLjE5LjQzLS4xLjI0LS4xOS40OC0uMjcuNzNsLS4wOS4zYy0uMDUuMi0uMS4zOS0uMTQuNTktLjAyLjExLS4wNC4yMi0uMDcuMzMtLjA0LjItLjA3LjQtLjA5LjYxLS4wMS4xLS4wMy4yLS4wMy4zLS4wMy4yOS0uMDUuNi0uMDUuOTEgMCA1LjUyIDQuNDggMTAgMTAgMTAgLjMxIDAgLjYyLS4wMi45Mi0uMDVsLjMtLjAzYy4yLS4wMi40MS0uMDYuNjEtLjA5LjExLS4wMi4yMi0uMDQuMzMtLjA3LjItLjA0LjM5LS4wOS41OC0uMTUuMS0uMDMuMi0uMDUuMy0uMDkuMjUtLjA4LjQ5LS4xNy43My0uMjcuMTUtLjA2LjI5LS4xMy40My0uMTkuMTEtLjA1LjIyLS4xLjMzLS4xNi4xNi0uMDguMzEtLjE2LjQ2LS4yNS4wNy0uMDQuMTQtLjA5LjIxLS4xMy4xNi0uMS4zMi0uMi40OC0uMzFMMjAuNDYgMjNsMS4yNy0xLjI3LTIuNjYtMi42Ni00Ljg4LTQuODh6TTYgMThsMy02LjQ2TDEyLjQ2IDE1IDYgMTh6bTE2LTZjMCAuMzEtLjAyLjYyLS4wNS45MmwtLjAzLjNjLS4wMi4yLS4wNi40MS0uMDkuNjEtLjAyLjExLS4wNC4yMi0uMDcuMzMtLjA0LjItLjA5LjM5LS4xNS41OC0uMDMuMS0uMDUuMjEtLjA5LjMxLS4wOC4yNS0uMTcuNDktLjI3LjczLS4wNi4xNS0uMTMuMjktLjE5LjQzLS4wNS4xMS0uMS4yMi0uMTYuMzMtLjA4LjE2LS4xNi4zMS0uMjUuNDYtLjA0LjA3LS4wOS4xNC0uMTMuMjEtLjEuMTYtLjIuMzItLjMxLjQ4TDE1IDEyLjQ2IDE4IDZsLTYuNDYgMy01LjIyLTUuMjJjLjE2LS4xMS4zMi0uMjEuNDgtLjMxLjA3LS4wNC4xNC0uMDkuMjEtLjEzLjE1LS4wOS4zMS0uMTcuNDYtLjI1LjExLS4wNS4yMi0uMS4zMy0uMTYuMTQtLjA2LjI4LS4xMy40My0uMTkuMjQtLjEuNDgtLjE5LjczLS4yN2wuMzEtLjA5Yy4xOS0uMDUuMzgtLjExLjU4LS4xNS4xMS0uMDIuMjItLjA0LjMzLS4wNy4yLS4wNC40LS4wNy42MS0uMDkuMS0uMDEuMi0uMDMuMy0uMDMuMjktLjAyLjYtLjA0LjkxLS4wNCA1LjUyIDAgMTAgNC40OCAxMCAxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwbG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEwLjljLS42MSAwLTEuMS40OS0xLjEgMS4xcy40OSAxLjEgMS4xIDEuMWMuNjEgMCAxLjEtLjQ5IDEuMS0xLjFzLS40OS0xLjEtMS4xLTEuMXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMi4xOSAxMi4xOUw2IDE4bDMuODEtOC4xOUwxOCA2bC0zLjgxIDguMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV4dGVuc2lvbk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljc4IDIyLjYxLTEuNjMtMS42M2MtLjA1IDAtLjEuMDItLjE1LjAyaC0zLjhjMC0yLjcxLTIuMTYtMy0yLjctM3MtMi43LjI5LTIuNyAzSDVjLTEuMSAwLTItLjktMi0ydi0zLjhjMi43MSAwIDMtMi4xNiAzLTIuN3MtLjMtMi43LTIuOTktMi43VjZjMC0uMDUuMDItLjA5LjAyLS4xNEwxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6bS4yMi01LjQ0VjE1YTIuNSAyLjUgMCAwIDAgMC01VjZjMC0xLjEtLjktMi0yLTJoLTRhMi41IDIuNSAwIDAgMC01IDBINi44M0wyMCAxNy4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXh0ZW5zaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSAxMUgxOVY3YzAtMS4xLS45LTItMi0yaC00VjMuNWEyLjUgMi41IDAgMCAwLTUgMFY1SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2My44SDMuNWMxLjQ5IDAgMi43IDEuMjEgMi43IDIuN3MtMS4yMSAyLjctMi43IDIuN0gyVjIwYzAgMS4xLjkgMiAyIDJoMy44di0xLjVjMC0xLjQ5IDEuMjEtMi43IDIuNy0yLjcgMS40OSAwIDIuNyAxLjIxIDIuNyAyLjdWMjJIMTdjMS4xIDAgMi0uOSAyLTJ2LTRoMS41YTIuNSAyLjUgMCAwIDAgMC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMS43NWExLjI1IDEuMjUgMCAxIDAgMCAyLjUgMS4yNSAxLjI1IDAgMCAwIDAtMi41em02IDBhMS4yNSAxLjI1IDAgMSAwIDAgMi41IDEuMjUgMS4yNSAwIDAgMCAwLTIuNXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LTggMC0uMjkuMDItLjU4LjA1LS44NiAyLjM2LTEuMDUgNC4yMy0yLjk4IDUuMjEtNS4zN2E5Ljk3NCA5Ljk3NCAwIDAgMCAxMC40MSAzLjk3Yy4yMS43MS4zMyAxLjQ3LjMzIDIuMjYgMCA0LjQxLTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhY3RDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yMCAzSDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNMTAgMTdINXYtMmg1djJ6bTAtNEg1di0yaDV2MnptMC00SDVWN2g1djJ6bTQuODIgNkwxMiAxMi4xNmwxLjQxLTEuNDEgMS40MSAxLjQyTDE3Ljk5IDlsMS40MiAxLjQyTDE0LjgyIDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYXZvcml0ZUJvcmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgM2MtMS43NCAwLTMuNDEuODEtNC41IDIuMDlDMTAuOTEgMy44MSA5LjI0IDMgNy41IDMgNC40MiAzIDIgNS40MiAyIDguNWMwIDMuNzggMy40IDYuODYgOC41NSAxMS41NEwxMiAyMS4zNWwxLjQ1LTEuMzJDMTguNiAxNS4zNiAyMiAxMi4yOCAyMiA4LjUgMjIgNS40MiAxOS41OCAzIDE2LjUgM3ptLTQuNCAxNS41NS0uMS4xLS4xLS4xQzcuMTQgMTQuMjQgNCAxMS4zOSA0IDguNSA0IDYuNSA1LjUgNSA3LjUgNWMxLjU0IDAgMy4wNC45OSAzLjU3IDIuMzZoMS44N0MxMy40NiA1Ljk5IDE0Ljk2IDUgMTYuNSA1YzIgMCAzLjUgMS41IDMuNSAzLjUgMCAyLjg5LTMuMTQgNS43NC03LjkgMTAuMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhdm9yaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgMjEuMzUtMS40NS0xLjMyQzUuNCAxNS4zNiAyIDEyLjI4IDIgOC41IDIgNS40MiA0LjQyIDMgNy41IDNjMS43NCAwIDMuNDEuODEgNC41IDIuMDlDMTMuMDkgMy44MSAxNC43NiAzIDE2LjUgMyAxOS41OCAzIDIyIDUuNDIgMjIgOC41YzAgMy43OC0zLjQgNi44Ni04LjU1IDExLjU0TDEyIDIxLjM1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA5aC0xVjRIOHYxNmgxNHYtOGMwLTEuNjYtMS4zNC0zLTMtM3ptLTktM2g2djNoLTZWNnptNCAxMWgtNHYtNWg0djV6bTIgMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0wLTNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMyAzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTAtM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxek00LjUgOEEyLjUgMi41IDAgMCAwIDIgMTAuNXY4YTIuNSAyLjUgMCAwIDAgNSAwdi04QTIuNSAyLjUgMCAwIDAgNC41IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZlZWRiYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDEyaC0ydi0yaDJ2MnptMC00aC0yVjZoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWxlUHJlc2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjdsLTUtNXpNNiAyMFY0aDh2NGg0djEySDZ6bTEwLTEwdjVjMCAyLjIxLTEuNzkgNC00IDRzLTQtMS43OS00LTRWOC41YTIuNSAyLjUgMCAwIDEgMi43Ni0yLjQ5YzEuMy4xMyAyLjI0IDEuMzIgMi4yNCAyLjYzVjE1aC0yVjguNWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjVWMTVjMCAxLjEuOSAyIDIgMnMyLS45IDItMnYtNWgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXJBbHRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS43OSA1LjYxQS45OTguOTk4IDAgMCAwIDE5IDRINi44M2w3Ljk3IDcuOTcgNC45OS02LjM2ek0yLjgxIDIuODEgMS4zOSA0LjIyIDEwIDEzdjZjMCAuNTUuNDUgMSAxIDFoMmMuNTUgMCAxLS40NSAxLTF2LTIuMTdsNS43OCA1Ljc4IDEuNDEtMS40MUwyLjgxIDIuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0bTAgMjRIMFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjI1IDUuNjFDNi4yNyA4LjIgMTAgMTMgMTAgMTN2NmMwIC41NS40NSAxIDEgMWgyYy41NSAwIDEtLjQ1IDEtMXYtNnMzLjcyLTQuOCA1Ljc0LTcuMzlBLjk5OC45OTggMCAwIDAgMTguOTUgNEg1LjA0Yy0uODMgMC0xLjMuOTUtLjc5IDEuNjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlckxpc3RBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6TTAgMGgyNG0wIDI0SDBcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC4yNSA1LjY2Yy4xLjEzIDUuNzQgNy4zMyA1Ljc0IDcuMzNWMTljMCAuNTUuNDUgMSAxLjAxIDFoMi4wMWMuNTUgMCAxLjAxLS40NSAxLjAxLTF2LTYuMDJzNS40OS03LjAyIDUuNzUtNy4zNEMyMC4wMyA1LjMyIDIwIDUgMjAgNWMwLS41NS0uNDUtMS0xLjAxLTFINS4wMUM0LjQgNCA0IDQuNDggNCA1YzAgLjIuMDYuNDQuMjUuNjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbmRJblBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOS41OVY4bC02LTZINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4Yy40NSAwIC44NS0uMTUgMS4xOS0uNGwtNC40My00LjQzYy0uOC41Mi0xLjc0LjgzLTIuNzYuODMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1YzAgMS4wMi0uMzEgMS45Ni0uODMgMi43NUwyMCAxOS41OXpNOSAxM2MwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zLTEuMzQtMy0zLTMtMyAxLjM0LTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmluZFJlcGxhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA2YzEuMzggMCAyLjYzLjU2IDMuNTQgMS40NkwxMiAxMGg2VjRsLTIuMDUgMi4wNUE2Ljk3NiA2Ljk3NiAwIDAgMCAxMSA0Yy0zLjUzIDAtNi40MyAyLjYxLTYuOTIgNkg2LjFBNSA1IDAgMCAxIDExIDZ6bTUuNjQgOS4xNEE2Ljg5IDYuODkgMCAwIDAgMTcuOTIgMTJIMTUuOWE1IDUgMCAwIDEtNC45IDRjLTEuMzggMC0yLjYzLS41Ni0zLjU0LTEuNDZMMTAgMTJINHY2bDIuMDUtMi4wNUE2Ljk3NiA2Ljk3NiAwIDAgMCAxMSAxOGMxLjU1IDAgMi45OC0uNTEgNC4xNC0xLjM2TDIwIDIxLjQ5IDIxLjQ5IDIwbC00Ljg1LTQuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbmdlcnByaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuODEgNC40N2MtLjA4IDAtLjE2LS4wMi0uMjMtLjA2QzE1LjY2IDMuNDIgMTQgMyAxMi4wMSAzYy0xLjk4IDAtMy44Ni40Ny01LjU3IDEuNDEtLjI0LjEzLS41NC4wNC0uNjgtLjJhLjUwNi41MDYgMCAwIDEgLjItLjY4QzcuODIgMi41MiA5Ljg2IDIgMTIuMDEgMmMyLjEzIDAgMy45OS40NyA2LjAzIDEuNTIuMjUuMTMuMzQuNDMuMjEuNjdhLjQ5LjQ5IDAgMCAxLS40NC4yOHpNMy41IDkuNzJhLjQ5OS40OTkgMCAwIDEtLjQxLS43OWMuOTktMS40IDIuMjUtMi41IDMuNzUtMy4yN0M5Ljk4IDQuMDQgMTQgNC4wMyAxNy4xNSA1LjY1YzEuNS43NyAyLjc2IDEuODYgMy43NSAzLjI1YS41LjUgMCAwIDEtLjEyLjdjLS4yMy4xNi0uNTQuMTEtLjctLjEyYTkuMzg4IDkuMzg4IDAgMCAwLTMuMzktMi45NGMtMi44Ny0xLjQ3LTYuNTQtMS40Ny05LjQuMDEtMS4zNi43LTIuNSAxLjctMy40IDIuOTYtLjA4LjE0LS4yMy4yMS0uMzkuMjF6bTYuMjUgMTIuMDdhLjQ3LjQ3IDAgMCAxLS4zNS0uMTVjLS44Ny0uODctMS4zNC0xLjQzLTIuMDEtMi42NC0uNjktMS4yMy0xLjA1LTIuNzMtMS4wNS00LjM0IDAtMi45NyAyLjU0LTUuMzkgNS42Ni01LjM5czUuNjYgMi40MiA1LjY2IDUuMzljMCAuMjgtLjIyLjUtLjUuNXMtLjUtLjIyLS41LS41YzAtMi40Mi0yLjA5LTQuMzktNC42Ni00LjM5LTIuNTcgMC00LjY2IDEuOTctNC42NiA0LjM5IDAgMS40NC4zMiAyLjc3LjkzIDMuODUuNjQgMS4xNSAxLjA4IDEuNjQgMS44NSAyLjQyLjE5LjIuMTkuNTEgMCAuNzEtLjExLjEtLjI0LjE1LS4zNy4xNXptNy4xNy0xLjg1Yy0xLjE5IDAtMi4yNC0uMy0zLjEtLjg5LTEuNDktMS4wMS0yLjM4LTIuNjUtMi4zOC00LjM5IDAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41YzAgMS40MS43MiAyLjc0IDEuOTQgMy41Ni43MS40OCAxLjU0LjcxIDIuNTQuNzEuMjQgMCAuNjQtLjAzIDEuMDQtLjEuMjctLjA1LjUzLjEzLjU4LjQxLjA1LjI3LS4xMy41My0uNDEuNTgtLjU3LjExLTEuMDcuMTItMS4yMS4xMnpNMTQuOTEgMjJjLS4wNCAwLS4wOS0uMDEtLjEzLS4wMi0xLjU5LS40NC0yLjYzLTEuMDMtMy43Mi0yLjFhNy4yOTcgNy4yOTcgMCAwIDEtMi4xNy01LjIyYzAtMS42MiAxLjM4LTIuOTQgMy4wOC0yLjk0IDEuNyAwIDMuMDggMS4zMiAzLjA4IDIuOTQgMCAxLjA3LjkzIDEuOTQgMi4wOCAxLjk0czIuMDgtLjg3IDIuMDgtMS45NGMwLTMuNzctMy4yNS02LjgzLTcuMjUtNi44My0yLjg0IDAtNS40NCAxLjU4LTYuNjEgNC4wMy0uMzkuODEtLjU5IDEuNzYtLjU5IDIuOCAwIC43OC4wNyAyLjAxLjY3IDMuNjEuMS4yNi0uMDMuNTUtLjI5LjY0LS4yNi4xLS41NS0uMDQtLjY0LS4yOWExMS4xNCAxMS4xNCAwIDAgMS0uNzMtMy45NmMwLTEuMi4yMy0yLjI5LjY4LTMuMjQgMS4zMy0yLjc5IDQuMjgtNC42IDcuNTEtNC42IDQuNTUgMCA4LjI1IDMuNTEgOC4yNSA3LjgzIDAgMS42Mi0xLjM4IDIuOTQtMy4wOCAyLjk0cy0zLjA4LTEuMzItMy4wOC0yLjk0YzAtMS4wNy0uOTMtMS45NC0yLjA4LTEuOTRzLTIuMDguODctMi4wOCAxLjk0YzAgMS43MS42NiAzLjMxIDEuODcgNC41MS45NS45NCAxLjg2IDEuNDYgMy4yNyAxLjg1LjI3LjA3LjQyLjM1LjM1LjYxLS4wNS4yMy0uMjYuMzgtLjQ3LjM4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaXRTY3JlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA0aDNjMS4xIDAgMiAuOSAyIDJ2MmgtMlY2aC0zVjR6TTQgOFY2aDNWNEg0Yy0xLjEgMC0yIC45LTIgMnYyaDJ6bTE2IDh2MmgtM3YyaDNjMS4xIDAgMi0uOSAyLTJ2LTJoLTJ6TTcgMThINHYtMkgydjJjMCAxLjEuOSAyIDIgMmgzdi0yek0xOCA4SDZ2OGgxMlY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGFreSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIm0xNC4wNSAxNy41OC0uMDEuMDEtMi40LTIuNCAxLjA2LTEuMDYgMS4zNSAxLjM1TDE2LjU0IDEzbDEuMDYgMS4wNi0zLjU0IDMuNTQtLjAxLS4wMnpNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6TTcuMzQgNi4yOGwxLjQxIDEuNDEgMS40MS0xLjQxIDEuMDYgMS4wNi0xLjQxIDEuNDEgMS40MSAxLjQxLTEuMDYgMS4wNi0xLjQxLTEuNDEtMS40MSAxLjQxLTEuMDYtMS4wNiAxLjQxLTEuNDEtMS40MS0xLjQxIDEuMDYtMS4wNnpNMTIgMjBjLTIuMiAwLTQuMi0uOS01LjctMi4zTDE3LjcgNi4zQzE5LjEgNy44IDIwIDkuOCAyMCAxMmMwIDQuNC0zLjYgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsaWdodExhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjUgMTloMTl2MmgtMTl2LTJ6bTE2Ljg0LTMuMTVjLjguMjEgMS42Mi0uMjYgMS44NC0xLjA2LjIxLS44LS4yNi0xLjYyLTEuMDYtMS44NGwtNS4zMS0xLjQyLTIuNzYtOS4wMkwxMC4xMiAydjguMjhMNS4xNSA4Ljk1bC0uOTMtMi4zMi0xLjQ1LS4zOXY1LjE3bDE2LjU3IDQuNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsaWdodFRha2VvZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjUgMTloMTl2MmgtMTl2LTJ6bTE5LjU3LTkuMzZjLS4yMS0uOC0xLjA0LTEuMjgtMS44NC0xLjA2TDE0LjkyIDEwbC02LjktNi40My0xLjkzLjUxIDQuMTQgNy4xNy00Ljk3IDEuMzMtMS45Ny0xLjU0LTEuNDUuMzkgMi41OSA0LjQ5czcuMTItMS45IDE2LjU3LTQuNDNjLjgxLS4yMyAxLjI4LTEuMDUgMS4wNy0xLjg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGlwVG9CYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA3SDd2MmgyVjd6bTAgNEg3djJoMnYtMnptMC04YTIgMiAwIDAgMC0yIDJoMlYzem00IDEyaC0ydjJoMnYtMnptNi0xMnYyaDJjMC0xLjEtLjktMi0yLTJ6bS02IDBoLTJ2MmgyVjN6TTkgMTd2LTJIN2EyIDIgMCAwIDAgMiAyem0xMC00aDJ2LTJoLTJ2MnptMC00aDJWN2gtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnpNNSA3SDN2MTJhMiAyIDAgMCAwIDIgMmgxMnYtMkg1Vjd6bTEwLTJoMlYzaC0ydjJ6bTAgMTJoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGlwVG9Gcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTNoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMiA0di0ySDNhMiAyIDAgMCAwIDIgMnpNMyA5aDJWN0gzdjJ6bTEyIDEyaDJ2LTJoLTJ2MnptNC0xOEg5YTIgMiAwIDAgMC0yIDJ2MTBhMiAyIDAgMCAwIDIgMmgxMGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDEySDlWNWgxMHYxMHptLTggNmgydi0yaC0ydjJ6bS00IDBoMnYtMkg3djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsdXR0ZXJEYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMDcgMTEuN2MuMjktLjM5LjgxLS41NiAxLjI3LS4zNy4xNy4wNy4zMi4xOC40My4zMy4yMi4yOC4yNS41OS4yMi44NS0uMDUuMzMtLjI1LjYzLS41NC43OSAwIDAtNC44NyAyLjk1LTUuMDcgMi42OXMzLjY5LTQuMjkgMy42OS00LjI5ek0yMiAxMGMwIDIuNS0xIDMtMS41IDMtLjIzIDAtLjQ0LS4xLS42Mi0uMjYtLjQ4IDMuMzItMi4zNiA1LjMxLTUuMzMgNS45OS4xMS40NC40OC43Ny45NS43N2guNThjLjIyIDAgLjQxLjE1LjQ4LjM2LjE3LjUyLjY2IDEuMDIgMS4wMiAxLjMyLjI1LjIxLjI0LjU5LS4wMy43OC0uMzQuMjQtLjkuNDktMS43OS41M2EuNTAxLjUwMSAwIDAgMS0uNDUtLjIyYy0uMTMtLjItLjMxLS41Ni0uMzEtMS4wMSAwLS4zLjA0LS41Ny4wOS0uOC0uNzgtLjE2LTEuMzktLjc4LTEuNTUtMS41Ni0uNDkuMDYtMSAuMS0xLjU0LjEtLjg4IDAtMS43LS4wOS0yLjQ1LS4yNS0uMDIuMDgtLjA1LjE2LS4wNS4yNSAwIC41NS40NSAxIDEgMWguNThjLjIyIDAgLjQxLjE1LjQ4LjM2LjE3LjUyLjY2IDEuMDIgMS4wMiAxLjMyLjI1LjIxLjI0LjU5LS4wMy43OC0uMzQuMjQtLjkuNDktMS43OS41M2EuNTAxLjUwMSAwIDAgMS0uNDUtLjIyYy0uMTMtLjItLjMxLS41Ni0uMzEtMS4wMSAwLS4zLjA0LS41Ny4wOS0uOC0uOS0uMTktMS41OS0xLTEuNTktMS45NiAwLS4xOC4wMy0uMzYuMDgtLjUzLTIuNDYtLjg2LTQuMDMtMi43OC00LjQ2LTUuNzQtLjE4LjE3LS4zOC4yNy0uNjIuMjdDMyAxMyAyIDEyLjUgMiAxMGMwLTIuMjcgMS43LTQuNSAzLTQuNS40MyAwIC40OS40OS41Ljg1YTcuOTg5IDcuOTg5IDAgMCAxIDUuNTUtMy4yOWMuMi0uOTYgMS4wOC0xLjU2IDEuOTUtMS41NnYxcy4zMy0uNSAxLS41Yy42NyAwIDEgLjUgMSAuNS0uNDkgMC0uODUuMzUtLjk2Ljc3IDEuODIuNDggMy4zOSAxLjU5IDQuNDYgMy4wOC4wMS0uMzYuMDctLjg1LjUtLjg1IDEuMyAwIDMgMi4yMyAzIDQuNXpNNSAxMWMwIC44MS4xIDEuNTMuMjUgMi4yMS4xOC0uNjkuNDYtMS4zMy44My0xLjkyYTMuNzcgMy43NyAwIDAgMS0uMzQtMS41NEEzLjc2NiAzLjc2NiAwIDAgMSA5LjUgNmMuOTYgMCAxLjg0LjM3IDIuNS45Ny42Ni0uNiAxLjU0LS45NyAyLjUtLjk3IDIuMDcgMCAzLjc1IDEuNjggMy43NSAzLjc1IDAgLjU1LS4xMiAxLjA3LS4zNCAxLjU0LjM3LjU5LjY2IDEuMjQuODQgMS45NC4xNS0uNjguMjUtMS40MS4yNS0yLjIzIDAtMy44Ni0zLjE0LTctNy03cy03IDMuMTQtNyA3em0xMi45OCA0LjI5YzAtLjEuMDItLjE5LjAyLS4yOSAwLTEuMDEtLjI2LTEuOTUtLjctMi43OC0uNjkuNzgtMS42OCAxLjI4LTIuOCAxLjI4LS4yNyAwLS41NC0uMDMtLjc5LS4wOS4xNC0uMjMuMjMtLjQ5LjI3LS43Ny4wMS0uMDcuMDEtLjEzLjAyLS4xOS4xNy4wMy4zMy4wNS41LjA1IDEuNTIgMCAyLjc1LTEuMjMgMi43NS0yLjc1UzE2LjAyIDcgMTQuNSA3Yy0uNjcgMC0xLjMyLjI1LTEuODMuNzJsLS42Ny42LS42Ny0uNkMxMC44MiA3LjI1IDEwLjE3IDcgOS41IDcgNy45OCA3IDYuNzUgOC4yMyA2Ljc1IDkuNzVjMCAxLjM0Ljk2IDIuNDYgMi4yMyAyLjdsLS43Ni44M2MtLjYtLjIyLTEuMTItLjU5LTEuNTMtMS4wNUE2LjAxIDYuMDEgMCAwIDAgNiAxNWMwIC4wOC4wMS4xNS4wMS4yNEM3LjEzIDE3LjA2IDkuMTQgMTggMTIgMThjMi44OCAwIDQuODgtLjkxIDUuOTgtMi43MXpNMTYgOS43NWMwIC45Ny0uNjcgMS43NS0xLjUgMS43NVMxMyAxMC43MiAxMyA5Ljc1IDEzLjY3IDggMTQuNSA4czEuNS43OCAxLjUgMS43NXptLS43NS0uODdjMC0uMjEtLjE3LS4zOC0uMzgtLjM4cy0uMzcuMTctLjM3LjM4LjE3LjM4LjM4LjM4LjM3LS4xOC4zNy0uMzh6TTExIDkuNzVjMCAuOTctLjY3IDEuNzUtMS41IDEuNzVTOCAxMC43MiA4IDkuNzUgOC42NyA4IDkuNSA4czEuNS43OCAxLjUgMS43NXptLS43NS0uODdjMC0uMjEtLjE3LS4zOC0uMzgtLjM4cy0uMzcuMTctLjM3LjM4LjE3LjM4LjM4LjM4LjM3LS4xOC4zNy0uMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZyZWVDYW5jZWxsYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4yMSAyMEg1VjEwaDE0djQuMzhsMi0yVjZjMC0xLjEtLjktMi0yLTJoLTFWMmgtMnYySDhWMkg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAyMGEyIDIgMCAwIDAgMiAyaDguMjFsLTItMnptNS4zMyAyLjVMMTMgMTguOTZsMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjQgMS40MSAxLjQxLTUuNjQgNS42NnpNMTAuNDEgMTQgMTIgMTUuNTkgMTAuNTkgMTcgOSAxNS40MSA3LjQxIDE3IDYgMTUuNTkgNy41OSAxNCA2IDEyLjQxIDcuNDEgMTEgOSAxMi41OSAxMC41OSAxMSAxMiAxMi40MSAxMC40MSAxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR1RyYW5zbGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNEgxMWwtMS0zSDNjLTEuMSAwLTIgLjktMiAydjE1YzAgMS4xLjkgMiAyIDJoOGwxIDNoOWMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek03IDE2Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01YzEuMzUgMCAyLjQ4LjUgMy4zNSAxLjNMOS4wMyA4LjU3Yy0uMzgtLjM2LTEuMDQtLjc4LTIuMDMtLjc4LTEuNzQgMC0zLjE1IDEuNDQtMy4xNSAzLjIxUzUuMjYgMTQuMjEgNyAxNC4yMWMyLjAxIDAgMi44NC0xLjQ0IDIuOTItMi40MUg3di0xLjcxaDQuNjhjLjA3LjMxLjEyLjYxLjEyIDEuMDJDMTEuOCAxMy45NyA5Ljg5IDE2IDcgMTZ6bTYuMTctNS40MmgzLjdjLS40MyAxLjI1LTEuMTEgMi40My0yLjA1IDMuNDctLjMxLS4zNS0uNi0uNzItLjg2LTEuMWwtLjc5LTIuMzd6bTguMzMgOS45MmMwIC41NS0uNDUgMS0xIDFIMTRsMi0yLjUtMS4wNC0zLjEgMy4xIDMuMS45Mi0uOTItMy4zLTMuMjUuMDItLjAyYzEuMTMtMS4yNSAxLjkzLTIuNjkgMi40LTQuMjJIMjB2LTEuM2gtNC41M1Y4aC0xLjI5djEuMjloLTEuNDRMMTEuNDYgNS41aDkuMDRjLjU1IDAgMSAuNDUgMSAxdjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdhdmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNS4yNSA4LjA2OSAyLjgzLTIuODI3IDE0LjEzNCAxNC4xNS0yLjgzIDIuODI3ek05LjQ4NiAzLjgyNyAxMi4zMTQuOTk4bDUuNjU3IDUuNjU2LTIuODI4IDIuODN6TS45OTkgMTIuMzE1bDIuODI4LTIuODI5IDUuNjU3IDUuNjU3LTIuODI4IDIuODI4ek0xIDIxaDEydjJIMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR2VuZXJhdGluZ1Rva2VucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNGMtNC40MiAwLTggMy41OC04IDhzMy41OCA4IDggOCA4LTMuNTggOC04LTMuNTgtOC04LTh6bTMgNi41aC0ydjVIOHYtNUg2VjloNnYxLjV6bTguMjUtNi43NUwyMyA1bC0yLjc1IDEuMjVMMTkgOWwtMS4yNS0yLjc1TDE1IDVsMi43NS0xLjI1TDE5IDFsMS4yNSAyLjc1em0wIDE0TDIzIDE5bC0yLjc1IDEuMjVMMTkgMjNsLTEuMjUtMi43NUwxNSAxOWwyLjc1LTEuMjVMMTkgMTVsMS4yNSAyLjc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHZXRBcHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA5aC00VjNIOXY2SDVsNyA3IDctN3pNNSAxOHYyaDE0di0ySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdpZkJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05LjUgMTN2LTFoMXYxYzAgLjU1LS40NSAxLTEgMWgtMWMtLjU1IDAtMS0uNDUtMS0xdi0yYzAtLjU1LjQ1LTEgMS0xaDFjLjU1IDAgMSAuNDUgMSAxaC0ydjJoMXptMyAxaC0xdi00aDF2NHptNC0zaC0ydi41SDE2djFoLTEuNVYxNGgtMXYtNGgzdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdpZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjUgOUgxM3Y2aC0xLjV6TTkgOUg2Yy0uNiAwLTEgLjUtMSAxdjRjMCAuNS40IDEgMSAxaDNjLjYgMCAxLS41IDEtMXYtMkg4LjV2MS41aC0ydi0zSDEwVjEwYzAtLjUtLjQtMS0xLTF6TTE5IDEwLjVWOWgtNC41djZIMTZ2LTJoMnYtMS41aC0ydi0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcmFkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE3LjI3IDE4LjE4IDIxbC0xLjY0LTcuMDNMMjIgOS4yNGwtNy4xOS0uNjFMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcmFkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA3aDE2djJINFY3em0wIDZoMTZ2LTJINHYyem0wIDRoN3YtMkg0djJ6bTAgNGg3di0ySDR2MnptMTEuNDEtMi44M0wxNCAxNi43NWwtMS40MSAxLjQxTDE1LjQxIDIxIDIwIDE2LjQyIDE4LjU4IDE1bC0zLjE3IDMuMTd6TTQgM3YyaDE2VjNINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JvdXBXb3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNOCAxNy41YTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1ek05LjUgOGEyLjUgMi41IDAgMCAxIDUgMCAyLjUgMi41IDAgMCAxLTUgMHptNi41IDkuNWEyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGVscENlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNi45OSAxNWMtLjcgMC0xLjI2LS41Ni0xLjI2LTEuMjYgMC0uNzEuNTYtMS4yNSAxLjI2LTEuMjUuNzEgMCAxLjI1LjU0IDEuMjUgMS4yNS0uMDEuNjktLjU0IDEuMjYtMS4yNSAxLjI2em0zLjAxLTcuNGMtLjc2IDEuMTEtMS40OCAxLjQ2LTEuODcgMi4xNy0uMTYuMjktLjIyLjQ4LS4yMiAxLjQxaC0xLjgyYzAtLjQ5LS4wOC0xLjI5LjMxLTEuOTguNDktLjg3IDEuNDItMS4zOSAxLjk2LTIuMTYuNTctLjgxLjI1LTIuMzMtMS4zNy0yLjMzLTEuMDYgMC0xLjU4LjgtMS44IDEuNDhsLTEuNjUtLjdDOS4wMSA3LjE1IDEwLjIyIDYgMTEuOTkgNmMxLjQ4IDAgMi40OS42NyAzLjAxIDEuNTIuNDQuNzIuNyAyLjA3LjAyIDMuMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhlbHBPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMThoMnYtMmgtMnYyem0xLTE2QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMC0xNGMtMi4yMSAwLTQgMS43OS00IDRoMmMwLTEuMS45LTIgMi0yczIgLjkgMiAyYzAgMi0zIDEuNzUtMyA1aDJjMC0yLjI1IDMtMi41IDMtNSAwLTIuMjEtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGVscCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTdoLTJ2LTJoMnYyem0yLjA3LTcuNzUtLjkuOTJDMTMuNDUgMTIuOSAxMyAxMy41IDEzIDE1aC0ydi0uNWMwLTEuMS40NS0yLjEgMS4xNy0yLjgzbDEuMjQtMS4yNmMuMzctLjM2LjU5LS44Ni41OS0xLjQxIDAtMS4xLS45LTItMi0ycy0yIC45LTIgMkg4YzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAuODgtLjM2IDEuNjgtLjkzIDIuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhpZGVTb3VyY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuODEgMi44MSAxLjM5IDQuMjJsMi4yNyAyLjI3QTkuOTEgOS45MSAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMDQgMCAzLjkzLS42MSA1LjUxLTEuNjZsMi4yNyAyLjI3IDEuNDEtMS40MUwyLjgxIDIuODF6TTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOCAwLTEuNDguNDEtMi44NiAxLjEyLTQuMDZsMTAuOTQgMTAuOTRDMTQuODYgMTkuNTkgMTMuNDggMjAgMTIgMjB6TTcuOTQgNS4xMiA2LjQ5IDMuNjZBOS45MSA5LjkxIDAgMCAxIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTAgMCAyLjA0LS42MSAzLjkzLTEuNjYgNS41MWwtMS40Ni0xLjQ2QTcuODY5IDcuODY5IDAgMCAwIDIwIDEyYzAtNC40MS0zLjU5LTgtOC04LTEuNDggMC0yLjg2LjQxLTQuMDYgMS4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGlnaGxpZ2h0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNWgtMlYzaDJ2MnptLTIgMTZoMnYtMi41OUwxOS41OSAyMSAyMSAxOS41OSAxOC40MSAxN0gyMXYtMmgtNnY2em00LTEyaDJWN2gtMnYyem0wIDRoMnYtMmgtMnYyem0tOCA4aDJ2LTJoLTJ2MnpNNyA1aDJWM0g3djJ6TTMgMTdoMnYtMkgzdjJ6bTIgNHYtMkgzYzAgMS4xLjkgMiAyIDJ6TTE5IDN2MmgyYzAtMS4xLS45LTItMi0yem0tOCAyaDJWM2gtMnYyek0zIDloMlY3SDN2MnptNCAxMmgydi0ySDd2MnptLTQtOGgydi0ySDN2MnptMC04aDJWM2MtMS4xIDAtMiAuOS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhpZ2hsaWdodE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjU5IDggMTIgMTAuNTkgOS40MSA4IDggOS40MSAxMC41OSAxMiA4IDE0LjU5IDkuNDEgMTYgMTIgMTMuNDEgMTQuNTkgMTYgMTYgMTQuNTkgMTMuNDEgMTIgMTYgOS40MSAxNC41OSA4ek0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTBTMTcuNTMgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGlzdG9yeVRvZ2dsZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjEgMTkuMzcgMSAxLjc0Yy0uOTYuNDQtMi4wMS43My0zLjEuODR2LTIuMDJjLjc0LS4wOSAxLjQ0LS4yOCAyLjEtLjU2ek00LjA3IDEzSDIuMDVjLjExIDEuMS40IDIuMTQuODQgMy4xbDEuNzQtMWMtLjI4LS42Ni0uNDctMS4zNi0uNTYtMi4xek0xNS4xIDQuNjNsMS0xLjc0Yy0uOTYtLjQ0LTItLjczLTMuMS0uODR2Mi4wMmMuNzQuMDkgMS40NC4yOCAyLjEuNTZ6TTE5LjkzIDExaDIuMDJjLS4xMS0xLjEtLjQtMi4xNC0uODQtMy4xbC0xLjc0IDFjLjI4LjY2LjQ3IDEuMzYuNTYgMi4xek04LjkgMTkuMzdsLTEgMS43NGMuOTYuNDQgMi4wMS43MyAzLjEuODR2LTIuMDJjLS43NC0uMDktMS40NC0uMjgtMi4xLS41NnpNMTEgNC4wN1YyLjA1Yy0xLjEuMTEtMi4xNC40LTMuMS44NGwxIDEuNzRjLjY2LS4yOCAxLjM2LS40NyAyLjEtLjU2em03LjM2IDMuMSAxLjc0LTEuMDFjLS42My0uODctMS40LTEuNjQtMi4yNy0yLjI3bC0xLjAxIDEuNzRjLjU5LjQ1IDEuMS45NiAxLjU0IDEuNTR6TTQuNjMgOC45bC0xLjc0LTFjLS40NC45Ni0uNzMgMi0uODQgMy4xaDIuMDJjLjA5LS43NC4yOC0xLjQ0LjU2LTIuMXptMTUuMyA0LjFjLS4wOS43NC0uMjggMS40NC0uNTYgMi4xbDEuNzQgMWMuNDQtLjk2LjczLTIuMDEuODQtMy4xaC0yLjAyem0tMy4xIDUuMzYgMS4wMSAxLjc0Yy44Ny0uNjMgMS42NC0xLjQgMi4yNy0yLjI3bC0xLjc0LTEuMDFjLS40NS41OS0uOTYgMS4xLTEuNTQgMS41NHpNNy4xNyA1LjY0bC0xLTEuNzVjLS44OC42NC0xLjY0IDEuNC0yLjI3IDIuMjhsMS43NCAxLjAxYTcuNyA3LjcgMCAwIDEgMS41My0xLjU0ek01LjY0IDE2LjgzbC0xLjc0IDFjLjYzLjg3IDEuNCAxLjY0IDIuMjcgMi4yN2wxLjAxLTEuNzRhNy43IDcuNyAwIDAgMS0xLjU0LTEuNTN6TTEzIDdoLTJ2NS40MWw0LjI5IDQuMjkgMS40MS0xLjQxLTMuNy0zLjdWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGlzdG9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDNhOSA5IDAgMCAwLTkgOUgxbDMuODkgMy44OS4wNy4xNEw5IDEySDZjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgNy0zLjEzIDctNyA3Yy0xLjkzIDAtMy42OC0uNzktNC45NC0yLjA2bC0xLjQyIDEuNDJBOC45NTQgOC45NTQgMCAwIDAgMTMgMjFhOSA5IDAgMCAwIDAtMTh6bS0xIDV2NWw0LjI4IDIuNTQuNzItMS4yMS0zLjUtMi4wOFY4SDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIbHNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy44MyAxNWgxLjY3Yy41NSAwIDEtLjQ1IDEtMXYtMS41YzAtLjU1LS40NS0xLTEtMUgxN3YtMWgydi41aDEuNXYtMWMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXYxLjVjMCAuNTUuNDUgMSAxIDFIMTl2MWgtMlYxM2gtMS4xN2wyIDJ6TTggMTAuODNWMTVINi41di0yLjVoLTJWMTVIM1Y5aDEuNXYyaDJWOS4zM0wxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40MSAxLjQxLTcuNi03LjZIMTB2LTIuMTdsLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41IDlIOHY2SDYuNXYtMi41aC0yVjE1SDNWOWgxLjV2MmgyVjl6bTEwIDZoM2MuNTUgMCAxLS40NSAxLTF2LTEuNWMwLS41NS0uNDUtMS0xLTFIMTd2LTFoMnYuNWgxLjV2LTFjMC0uNTUtLjQ1LTEtMS0xaC0zYy0uNTUgMC0xIC40NS0xIDF2MS41YzAgLjU1LjQ1IDEgMSAxSDE5djFoLTJWMTNoLTEuNXYxYzAgLjU1LjQ1IDEgMSAxek0xNCAxNXYtMS41aC0yLjVWOUgxMHY2aDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvbWVGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDQgOXYxMmg1di03aDZ2N2g1Vjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAyMHYtNmg0djZoNXYtOGgzTDEyIDMgMiAxMmgzdjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvcml6b250YWxTcGxpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxOWgxOHYtNkgzdjZ6bTAtOGgxOFY5SDN2MnptMC02djJoMThWNUgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3RlbENsYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41OCAxMEgxbDYuMTcgNC40MUw0LjgzIDIyIDExIDE3LjMxIDE3LjE4IDIybC0yLjM1LTcuNTlMMjEgMTBoLTcuNThMMTEgMmwtMi40MiA4em0xMi43OCAxMi0xLjg2LTYuMDFMMjMuNjggMTNoLTMuNDRsLTMuMDggMi4yIDEuNDYgNC43MkwyMS4zNiAyMnpNMTcgOGwtMS44Mi02LTEuMDQgMy40NS43NyAyLjU1SDE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3VyZ2xhc3NEaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNGg4djMuNWwtMi44NCAyLjg0IDEuMjUgMS4yNUwxOCA4LjAxIDE3Ljk5IDhIMThWMkg2djEuMTdsMiAyek0yLjEgMi4xLjY5IDMuNTFsOC45IDguOUw2IDE2bC4wMS4wMUg2VjIyaDEydi0xLjE3bDIuNDkgMi40OSAxLjQxLTEuNDFMMi4xIDIuMXpNMTYgMjBIOHYtMy41bDIuODQtMi44NEwxNiAxOC44M1YyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG91cmdsYXNzRW1wdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMnY2aC4wMUw2IDguMDEgMTAgMTJsLTQgNCAuMDEuMDFINlYyMmgxMnYtNS45OWgtLjAxTDE4IDE2bC00LTQgNC0zLjk5LS4wMS0uMDFIMThWMkg2em0xMCAxNC41VjIwSDh2LTMuNWw0LTQgNCA0em0tNC01LTQtNFY0aDh2My41bC00IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvdXJnbGFzc0Z1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMnY2aC4wMUw2IDguMDEgMTAgMTJsLTQgNCAuMDEuMDFINlYyMmgxMnYtNS45OWgtLjAxTDE4IDE2bC00LTQgNC0zLjk5LS4wMS0uMDFIMThWMkg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIdG1sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDlINXY2SDMuNXYtMi41aC0yVjE1SDBWOWgxLjV2MmgyVjl6bTE0IDBIMTNjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNXYtNC41aDFWMTRIMTZ2LTMuNTFoMVYxNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xek0xMSA5SDZ2MS41aDEuNzVWMTVoMS41di00LjVIMTFWOXptMTMgNnYtMS41aC0yLjVWOUgyMHY2aDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEh0dHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNSAxMWgtMlY5SDF2NmgxLjV2LTIuNWgyVjE1SDZWOUg0LjV2MnptMi41LS41aDEuNVYxNUgxMHYtNC41aDEuNVY5SDd2MS41em01LjUgMEgxNFYxNWgxLjV2LTQuNUgxN1Y5aC00LjV2MS41em05LTEuNUgxOHY2aDEuNXYtMmgyYy44IDAgMS41LS43IDEuNS0xLjV2LTFjMC0uOC0uNy0xLjUtMS41LTEuNXptMCAyLjVoLTJ2LTFoMnYxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEh0dHBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yem0tNiA5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptMy4xLTlIOC45VjZjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjEgMS43MSAwIDMuMSAxLjM5IDMuMSAzLjF2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW1wb3J0YW50RGV2aWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTEuMDEgMTggMTFjLS41NSAwLTEgLjQ1LTEgMXY5YzAgLjU1LjQ1IDEgMSAxaDVjLjU1IDAgMS0uNDUgMS0xdi05YzAtLjU1LS40NS0uOTktMS0uOTl6TTIzIDIwaC01di03aDV2N3pNMjAgMkgyQy44OSAyIDAgMi44OSAwIDR2MTJhMiAyIDAgMCAwIDIgMmg3djJIN3YyaDh2LTJoLTJ2LTJoMnYtMkgyVjRoMTh2NWgyVjRhMiAyIDAgMCAwLTItMnptLTguMDMgN0wxMSA2bC0uOTcgM0g3bDIuNDcgMS43Ni0uOTQgMi45MSAyLjQ3LTEuOCAyLjQ3IDEuOC0uOTQtMi45MUwxNSA5aC0zLjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbmZvT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgN2gydjJoLTJWN3ptMCA0aDJ2NmgtMnYtNnptMS05QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW5mbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTVoLTJ2LTZoMnY2em0wLThoLTJWN2gydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZElucHV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMy4wMUgzYy0xLjEgMC0yIC45LTIgMlY5aDJWNC45OWgxOHYxNC4wM0gzVjE1SDF2NC4wMWMwIDEuMS45IDEuOTggMiAxLjk4aDE4YzEuMSAwIDItLjg4IDItMS45OHYtMTRhMiAyIDAgMCAwLTItMnpNMTEgMTZsNC00LTQtNHYzSDF2MmgxMHYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnN0YWxsRGVza3RvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE3SDRWNWg4VjNINGMtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDR2Mmg4di0yaDRjMS4xIDAgMi0uOSAyLTJ2LTNoLTJ2M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgMTQgNS01LTEuNDEtMS40MUwxOCAxMC4xN1YzaC0ydjcuMTdsLTIuNTktMi41OEwxMiA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnN0YWxsTW9iaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMThIN1Y2aDdWMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0ydi01aC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDE0IDUtNS0xLjQxLTEuNDFMMTkgMTAuMTdWM2gtMnY3LjE3bC0yLjU5LTIuNThMMTMgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW50ZWdyYXRpb25JbnN0cnVjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMy41XCIsXCJyXCI6XCIuNzVcIixcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjMuNVwiLFwiclwiOlwiLjc1XCIsXCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIzLjVcIixcInJcIjpcIi43NVwiLFwiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg1Yy0uMTQgMC0uMjcuMDEtLjQuMDRhMi4wMDggMi4wMDggMCAwIDAtMS40NCAxLjE5Yy0uMS4yMy0uMTYuNDktLjE2Ljc3djE0YzAgLjI3LjA2LjU0LjE2Ljc4cy4yNS40NS40My42NGMuMjcuMjcuNjIuNDcgMS4wMS41NS4xMy4wMi4yNi4wMy40LjAzaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04IDExLjE3LTEuNDEgMS40Mkw2IDEybDMuNTktMy41OUwxMSA5LjgzIDguODMgMTIgMTEgMTQuMTd6bTEtOS45MmMtLjQxIDAtLjc1LS4zNC0uNzUtLjc1cy4zNC0uNzUuNzUtLjc1Ljc1LjM0Ljc1Ljc1LS4zNC43NS0uNzUuNzV6bTIuNDEgMTEuMzRMMTMgMTQuMTcgMTUuMTcgMTIgMTMgOS44M2wxLjQxLTEuNDJMMTggMTJsLTMuNTkgMy41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW52ZXJ0Q29sb3JzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0LjgxVjE5Yy0zLjMxIDAtNi0yLjYzLTYtNS44NyAwLTEuNTYuNjItMy4wMyAxLjc1LTQuMTRMMTIgNC44MU02LjM1IDcuNTZDNC45IDguOTkgNCAxMC45NiA0IDEzLjEzIDQgMTcuNDggNy41OCAyMSAxMiAyMXM4LTMuNTIgOC03Ljg3YzAtMi4xNy0uOS00LjE0LTIuMzUtNS41N0wxMiAyIDYuMzUgNy41NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSmF2YXNjcmlwdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE0di0xaDEuNXYuNWgydi0xSDEzYy0uNTUgMC0xLS40NS0xLTFWMTBjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MWgtMS41di0uNWgtMnYxSDE2Yy41NSAwIDEgLjQ1IDEgMVYxNGMwIC41NS0uNDUgMS0xIDFoLTNjLS41NSAwLTEtLjQ1LTEtMXpNOSA5djQuNUg3LjV2LTFINnYxYzAgLjgzLjY3IDEuNSAxLjUgMS41SDljLjgzIDAgMS41LS42NyAxLjUtMS41VjlIOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSm9pbkZ1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiZWxsaXBzZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyeFwiOlwiM1wiLFwicnlcIjpcIjUuNzRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDEyYzAtLjk3LjIzLTQuMTYgMy4wMy02LjVDOS43NSA1LjE5IDguOSA1IDggNWMtMy44NiAwLTcgMy4xNC03IDdzMy4xNCA3IDcgN2MuOSAwIDEuNzUtLjE5IDIuNTMtLjUtMi44LTIuMzQtMy4wMy01LjUzLTMuMDMtNi41ek0xNiA1Yy0uOSAwLTEuNzUuMTktMi41My41IDIuOCAyLjM0IDMuMDMgNS41MyAzLjAzIDYuNSAwIC45Ny0uMjMgNC4xNi0zLjAzIDYuNS43OC4zMSAxLjYzLjUgMi41My41IDMuODYgMCA3LTMuMTQgNy03cy0zLjE0LTctNy03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRKb2luSW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiZWxsaXBzZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyeFwiOlwiM1wiLFwicnlcIjpcIjUuNzRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4wNCAxNi44N2MtLjMzLjA4LS42OC4xMy0xLjA0LjEzLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTVjLjM2IDAgLjcxLjA1IDEuMDQuMTMuMzktLjU2Ljg4LTEuMTIgMS40OS0xLjYzQzkuNzUgNS4xOSA4LjkgNSA4IDVjLTMuODYgMC03IDMuMTQtNyA3czMuMTQgNyA3IDdjLjkgMCAxLjc1LS4xOSAyLjUzLS41LS42MS0uNTEtMS4xLTEuMDctMS40OS0xLjYzek0xNiA1Yy0uOSAwLTEuNzUuMTktMi41My41LjYxLjUxIDEuMSAxLjA3IDEuNDkgMS42My4zMy0uMDguNjgtLjEzIDEuMDQtLjEzIDIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1Yy0uMzYgMC0uNzEtLjA1LTEuMDQtLjEzLS4zOS41Ni0uODggMS4xMi0xLjQ5IDEuNjMuNzguMzEgMS42My41IDIuNTMuNSAzLjg2IDAgNy0zLjE0IDctN3MtMy4xNC03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSm9pbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiZWxsaXBzZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyeFwiOlwiM1wiLFwicnlcIjpcIjUuNzRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDEyYzAtLjk3LjIzLTQuMTYgMy4wMy02LjVDOS43NSA1LjE5IDguOSA1IDggNWMtMy44NiAwLTcgMy4xNC03IDdzMy4xNCA3IDcgN2MuOSAwIDEuNzUtLjE5IDIuNTMtLjUtMi44LTIuMzQtMy4wMy01LjUzLTMuMDMtNi41ek0xNiA1Yy0uOSAwLTEuNzUuMTktMi41My41LjYxLjUxIDEuMSAxLjA3IDEuNDkgMS42My4zMy0uMDguNjgtLjEzIDEuMDQtLjEzIDIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1Yy0uMzYgMC0uNzEtLjA1LTEuMDQtLjEzLS4zOS41Ni0uODggMS4xMi0xLjQ5IDEuNjMuNzguMzEgMS42My41IDIuNTMuNSAzLjg2IDAgNy0zLjE0IDctN3MtMy4xNC03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSm9pblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImVsbGlwc2VcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwicnhcIjpcIjNcIixcInJ5XCI6XCI1Ljc0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgMTJjMCAuOTctLjIzIDQuMTYtMy4wMyA2LjUuNzguMzEgMS42My41IDIuNTMuNSAzLjg2IDAgNy0zLjE0IDctN3MtMy4xNC03LTctN2MtLjkgMC0xLjc1LjE5LTIuNTMuNSAyLjggMi4zNCAzLjAzIDUuNTMgMy4wMyA2LjV6TTggMTljLjkgMCAxLjc1LS4xOSAyLjUzLS41LS42MS0uNTEtMS4xLTEuMDctMS40OS0xLjYzLS4zMy4wOC0uNjguMTMtMS4wNC4xMy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01Yy4zNiAwIC43MS4wNSAxLjA0LjEzLjM5LS41Ni44OC0xLjEyIDEuNDktMS42M0M5Ljc1IDUuMTkgOC45IDUgOCA1Yy0zLjg2IDAtNyAzLjE0LTcgN3MzLjE0IDcgNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYWJlbEltcG9ydGFudE91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE5SDNsNC41LTdMMyA1aDEyYy42NSAwIDEuMjYuMzEgMS42My44NEwyMSAxMmwtNC4zNyA2LjE2Yy0uMzcuNTItLjk4Ljg0LTEuNjMuODR6bS04LjUtMkgxNWwzLjUtNUwxNSA3SDYuNWwzLjUgNS0zLjUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGFiZWxJbXBvcnRhbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMuNSAxOC45OSAxMSAuMDFjLjY3IDAgMS4yNy0uMzMgMS42My0uODRMMjAuNSAxMmwtNC4zNy02LjE2Yy0uMzYtLjUxLS45Ni0uODQtMS42My0uODRsLTExIC4wMUw4LjM0IDEyIDMuNSAxOC45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGFiZWxPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMuMjUgMi43NSAxNyAxN0wxOSAyMWwtMi0ySDVjLTEuMSAwLTItLjktMi0yVjdjMC0uNTUuMjMtMS4wNS41OS0xLjQxTDIgNGwxLjI1LTEuMjV6TTIyIDEybC00LjM3LTYuMTZDMTcuMjcgNS4zMyAxNi42NyA1IDE2IDVIOGwxMSAxMSAzLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExhYmVsT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjYzIDUuODRDMTcuMjcgNS4zMyAxNi42NyA1IDE2IDVMNSA1LjAxQzMuOSA1LjAxIDMgNS45IDMgN3YxMGMwIDEuMS45IDEuOTkgMiAxLjk5TDE2IDE5Yy42NyAwIDEuMjctLjMzIDEuNjMtLjg0TDIyIDEybC00LjM3LTYuMTZ6TTE2IDE3SDVWN2gxMWwzLjU1IDVMMTYgMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExhYmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNjMgNS44NEMxNy4yNyA1LjMzIDE2LjY3IDUgMTYgNUw1IDUuMDFDMy45IDUuMDEgMyA1LjkgMyA3djEwYzAgMS4xLjkgMS45OSAyIDEuOTlMMTYgMTljLjY3IDAgMS4yNy0uMzMgMS42My0uODRMMjIgMTJsLTQuMzctNi4xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGFuZ3VhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyem02LjkzIDZoLTIuOTVhMTUuNjUgMTUuNjUgMCAwIDAtMS4zOC0zLjU2QTguMDMgOC4wMyAwIDAgMSAxOC45MiA4ek0xMiA0LjA0Yy44MyAxLjIgMS40OCAyLjUzIDEuOTEgMy45NmgtMy44MmMuNDMtMS40MyAxLjA4LTIuNzYgMS45MS0zLjk2ek00LjI2IDE0QzQuMSAxMy4zNiA0IDEyLjY5IDQgMTJzLjEtMS4zNi4yNi0yaDMuMzhjLS4wOC42Ni0uMTQgMS4zMi0uMTQgMiAwIC42OC4wNiAxLjM0LjE0IDJINC4yNnptLjgyIDJoMi45NWMuMzIgMS4yNS43OCAyLjQ1IDEuMzggMy41NkE3Ljk4NyA3Ljk4NyAwIDAgMSA1LjA4IDE2em0yLjk1LThINS4wOGE3Ljk4NyA3Ljk4NyAwIDAgMSA0LjMzLTMuNTZBMTUuNjUgMTUuNjUgMCAwIDAgOC4wMyA4ek0xMiAxOS45NmMtLjgzLTEuMi0xLjQ4LTIuNTMtMS45MS0zLjk2aDMuODJjLS40MyAxLjQzLTEuMDggMi43Ni0xLjkxIDMuOTZ6TTE0LjM0IDE0SDkuNjZjLS4wOS0uNjYtLjE2LTEuMzItLjE2LTIgMC0uNjguMDctMS4zNS4xNi0yaDQuNjhjLjA5LjY1LjE2IDEuMzIuMTYgMiAwIC42OC0uMDcgMS4zNC0uMTYgMnptLjI1IDUuNTZjLjYtMS4xMSAxLjA2LTIuMzEgMS4zOC0zLjU2aDIuOTVhOC4wMyA4LjAzIDAgMCAxLTQuMzMgMy41NnpNMTYuMzYgMTRjLjA4LS42Ni4xNC0xLjMyLjE0LTIgMC0uNjgtLjA2LTEuMzQtLjE0LTJoMy4zOGMuMTYuNjQuMjYgMS4zMS4yNiAycy0uMSAxLjM2LS4yNiAyaC0zLjM4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYXVuY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOUg1VjVoN1YzSDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi03aC0ydjd6TTE0IDN2MmgzLjU5bC05LjgzIDkuODMgMS40MSAxLjQxTDE5IDYuNDFWMTBoMlYzaC03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMZWFkZXJib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAyMUgyVjloNS41djEyem03LjI1LTE4aC01LjV2MThoNS41VjN6TTIyIDExaC01LjV2MTBIMjJWMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpZ2h0YnVsYkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMTdjLS44MyAwLTEuNS0uNjctMS41LTEuNWgzYzAgLjgzLS42NyAxLjUtMS41IDEuNXptMy0yLjVIOVYxNWg2djEuNXptLS4wMy0yLjVIOS4wM0E0Ljk2NiA0Ljk2NiAwIDAgMSA3IDEwYzAtMi43NiAyLjI0LTUgNS01czUgMi4yNCA1IDVjMCAxLjY0LS44IDMuMDktMi4wMyA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaWdodGJ1bGJPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAyMWMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtMUg5djF6bTMtMTlDOC4xNCAyIDUgNS4xNCA1IDljMCAyLjM4IDEuMTkgNC40NyAzIDUuNzRWMTdjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTF2LTIuMjZjMS44MS0xLjI3IDMtMy4zNiAzLTUuNzQgMC0zLjg2LTMuMTQtNy03LTd6bTIgMTEuN1YxNmgtNHYtMi4zQzguNDggMTIuNjMgNyAxMS41MyA3IDljMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNWMwIDIuNDktMS41MSAzLjY1LTMgNC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaWdodGJ1bGIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDIxYzAgLjUuNCAxIDEgMWg0Yy42IDAgMS0uNSAxLTF2LTFIOXYxem0zLTE5QzguMSAyIDUgNS4xIDUgOWMwIDIuNCAxLjIgNC41IDMgNS43VjE3YzAgLjUuNCAxIDEgMWg2Yy42IDAgMS0uNSAxLTF2LTIuM2MxLjgtMS4zIDMtMy40IDMtNS43IDAtMy45LTMuMS03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGluZVN0eWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNmg1di0ySDN2MnptNi41IDBoNXYtMmgtNXYyem02LjUgMGg1di0yaC01djJ6TTMgMjBoMnYtMkgzdjJ6bTQgMGgydi0ySDd2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnpNMyAxMmg4di0ySDN2MnptMTAgMGg4di0yaC04djJ6TTMgNHY0aDE4VjRIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGluZVdlaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTdoMTh2LTJIM3Yyem0wIDNoMTh2LTFIM3Yxem0wLTdoMTh2LTNIM3Yzem0wLTl2NGgxOFY0SDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzaDJ2LTJIM3Yyem0wIDRoMnYtMkgzdjJ6bTAtOGgyVjdIM3Yyem00IDRoMTR2LTJIN3Yyem0wIDRoMTR2LTJIN3Yyek03IDd2MmgxNFY3SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2tDbG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuNSAxNC4yIDIuOSAxLjctLjggMS4zTDEzIDE1di01aDEuNXY0LjJ6TTIyIDE0YzAgNC40MS0zLjU5IDgtOCA4LTIuMDIgMC0zLjg2LS43Ni01LjI3LTJINGMtMS4xNSAwLTItLjg1LTItMlY5YzAtMS4xMi44OS0xLjk2IDItMnYtLjVDNCA0LjAxIDYuMDEgMiA4LjUgMmMyLjM0IDAgNC4yNCAxLjc5IDQuNDYgNC4wOC4zNC0uMDUuNjktLjA4IDEuMDQtLjA4IDQuNDEgMCA4IDMuNTkgOCA4ek02IDdoNXYtLjc0QTIuNTA5IDIuNTA5IDAgMCAwIDguNSA0IDIuNSAyLjUgMCAwIDAgNiA2LjVWN3ptMTQgN2MwLTMuMzEtMi42OS02LTYtNnMtNiAyLjY5LTYgNiAyLjY5IDYgNiA2IDYtMi42OSA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2tPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTdjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem02LTloLTFWNmMwLTIuNzYtMi4yNC01LTUtNVM3IDMuMjQgNyA2aDEuOWMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMSAxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6bTAgMTJINlYxMGgxMnYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9ja091dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxN2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYtOWgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yek04LjkgNmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMXMzLjEgMS4zOSAzLjEgMy4xdjJIOC45VjZ6TTE4IDIwSDZWMTBoMTJ2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2tQZXJzb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMWMuNyAwIDEuMzcuMSAyIC4yOVYxMGMwLTEuMS0uOS0yLTItMmgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDYuMjZBNi45OTUgNi45OTUgMCAwIDEgMTggMTF6TTguOSA2YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xczMuMSAxLjM5IDMuMSAzLjF2Mkg4LjlWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0wIDJjLjgzIDAgMS41LjY3IDEuNSAxLjVTMTguODMgMTggMTggMThzLTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNXptMCA2Yy0xLjAzIDAtMS45NC0uNTItMi40OC0xLjMyLjczLS40MiAxLjU3LS42OCAyLjQ4LS42OHMxLjc1LjI2IDIuNDguNjhjLS41NC44LTEuNDUgMS4zMi0yLjQ4IDEuMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2tSZXNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDNhOSA5IDAgMCAwLTkgOUgxbDQgNCA0LTRINmMwLTMuODYgMy4xNC03IDctN3M3IDMuMTQgNyA3LTMuMTQgNy03IDdjLTEuOSAwLTMuNjItLjc2LTQuODgtMS45OUw2LjcgMTguNDJBOC45ODIgOC45ODIgMCAwIDAgMTMgMjFhOSA5IDAgMCAwIDAtMTh6bTIgOHYtMWMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2MWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xem0tMSAwaC0ydi0xYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yem0tNiA5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptMy4xLTlIOC45VjZjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjEgMS43MSAwIDMuMSAxLjM5IDMuMSAzLjF2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9naW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA3IDkuNiA4LjRsMi42IDIuNkgydjJoMTAuMmwtMi42IDIuNkwxMSAxN2w1LTUtNS01em05IDEyaC04djJoOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yaC04djJoOHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9nb3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgNy0xLjQxIDEuNDFMMTguMTcgMTFIOHYyaDEwLjE3bC0yLjU4IDIuNThMMTcgMTdsNS01ek00IDVoOFYzSDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoOHYtMkg0VjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExveWFsdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS40MSAxMS41OC05LTlDMTIuMDUgMi4yMiAxMS41NSAyIDExIDJINGMtMS4xIDAtMiAuOS0yIDJ2N2MwIC41NS4yMiAxLjA1LjU5IDEuNDJsOSA5Yy4zNi4zNi44Ni41OCAxLjQxLjU4LjU1IDAgMS4wNS0uMjIgMS40MS0uNTlsNy03Yy4zNy0uMzYuNTktLjg2LjU5LTEuNDEgMC0uNTUtLjIzLTEuMDYtLjU5LTEuNDJ6TTUuNSA3QzQuNjcgNyA0IDYuMzMgNCA1LjVTNC42NyA0IDUuNSA0IDcgNC42NyA3IDUuNSA2LjMzIDcgNS41IDd6bTExLjc3IDguMjdMMTMgMTkuNTRsLTQuMjctNC4yN0EyLjUgMi41IDAgMCAxIDEwLjUgMTFjLjY5IDAgMS4zMi4yOCAxLjc3Ljc0bC43My43Mi43My0uNzNhMi41IDIuNSAwIDAgMSAzLjU0IDMuNTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hbmFnZUFjY291bnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiOFwiLFwiclwiOlwiNFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC42NyAxMy4wMmMtLjIyLS4wMS0uNDQtLjAyLS42Ny0uMDItMi40MiAwLTQuNjguNjctNi42MSAxLjgyLS44OC41Mi0xLjM5IDEuNS0xLjM5IDIuNTNWMjBoOS4yNmE2Ljk2MyA2Ljk2MyAwIDAgMS0uNTktNi45OHpNMjAuNzUgMTZjMC0uMjItLjAzLS40Mi0uMDYtLjYzbDEuMTQtMS4wMS0xLTEuNzMtMS40NS40OWMtLjMyLS4yNy0uNjgtLjQ4LTEuMDgtLjYzTDE4IDExaC0ybC0uMyAxLjQ5Yy0uNC4xNS0uNzYuMzYtMS4wOC42M2wtMS40NS0uNDktMSAxLjczIDEuMTQgMS4wMWMtLjAzLjIxLS4wNi40MS0uMDYuNjNzLjAzLjQyLjA2LjYzbC0xLjE0IDEuMDEgMSAxLjczIDEuNDUtLjQ5Yy4zMi4yNy42OC40OCAxLjA4LjYzTDE2IDIxaDJsLjMtMS40OWMuNC0uMTUuNzYtLjM2IDEuMDgtLjYzbDEuNDUuNDkgMS0xLjczLTEuMTQtMS4wMWMuMDMtLjIxLjA2LS40MS4wNi0uNjN6TTE3IDE4Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFuYWdlSGlzdG9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjY5IDE4LjM3IDEuMTQtMS0xLTEuNzMtMS40NS40OWMtLjMyLS4yNy0uNjgtLjQ4LTEuMDgtLjYzTDIwIDE0aC0ybC0uMyAxLjQ5Yy0uNC4xNS0uNzYuMzYtMS4wOC42M2wtMS40NS0uNDktMSAxLjczIDEuMTQgMWMtLjA4LjUtLjA4Ljc2IDAgMS4yNmwtMS4xNCAxIDEgMS43MyAxLjQ1LS40OWMuMzIuMjcuNjguNDggMS4wOC42M0wxOCAyNGgybC4zLTEuNDljLjQtLjE1Ljc2LS4zNiAxLjA4LS42M2wxLjQ1LjQ5IDEtMS43My0xLjE0LTFjLjA4LS41MS4wOC0uNzcgMC0xLjI3ek0xOSAyMWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6TTExIDd2NS40MWwyLjM2IDIuMzYgMS4wNC0xLjc5LTEuNC0xLjM5VjdoLTJ6bTEwIDVhOSA5IDAgMCAwLTktOUM5LjE3IDMgNi42NSA0LjMyIDUgNi4zNlY0SDN2Nmg2VjhINi4yNkE3LjAxIDcuMDEgMCAwIDEgMTIgNWMzLjg2IDAgNyAzLjE0IDcgN2gyem0tMTAuMTQgNi45MWMtMi45OS0uNDktNS4zNS0yLjktNS43OC01LjkxSDMuMDZjLjUgNC41IDQuMzEgOCA4Ljk0IDhoLjA3bC0xLjIxLTIuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcmtBc1VucmVhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguODMgN2gtMi42TDEwLjUgNCA0IDcuNFYxN2MtMS4xIDAtMi0uOS0yLTJWNy4xN2MwLS41My4zMi0xLjA5LjgtMS4zNEwxMC41IDJsNy41NCAzLjgzYy40My4yMy43My43Ljc5IDEuMTd6TTIwIDhIN2MtMS4xIDAtMiAuOS0yIDJ2OWMwIDEuMS45IDIgMiAyaDEzYzEuMSAwIDItLjkgMi0ydi05YzAtMS4xLS45LTItMi0yem0wIDMuNjdMMTMuNSAxNSA3IDExLjY3VjEwbDYuNSAzLjMzTDIwIDEwdjEuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcmt1bnJlYWRNYWlsYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0tNjE4LTMwMDBINzgyVjYwMEgtNjE4ek0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNkgxMHY2SDhWNGg2VjBINnY2SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWF4aW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM2gxOHYySDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1lZGlhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDEyLTQgNC0xLjQxLTEuNDFMMTguMTcgMTNoLTUuMjNBOC45NzQgOC45NzQgMCAwIDEgOCAyMC4wNSAzLjAwNSAzLjAwNSAwIDAgMSA1IDIzYy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zYy45NSAwIDEuNzguNDUgMi4zMyAxLjE0QTYuOTY5IDYuOTY5IDAgMCAwIDEwLjkxIDEzaC0zLjFDNy40IDE0LjE2IDYuMyAxNSA1IDE1Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zYzEuMyAwIDIuNC44NCAyLjgyIDJoMy4xYy0uMzItMi4yMy0xLjY5LTQuMS0zLjU5LTUuMTRDNi43OCA2LjU1IDUuOTUgNyA1IDcgMy4zNCA3IDIgNS42NiAyIDRzMS4zNC0zIDMtM2EyLjk5IDIuOTkgMCAwIDEgMi45OSAyLjk1QTguOTc0IDguOTc0IDAgMCAxIDEyLjkzIDExaDUuMjNsLTEuNTgtMS41OUwxOCA4bDQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWluaW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTloMTJ2Mkg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb2RlbFRyYWluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxMy41YzAgMi0yLjUgMy41LTIuNSA1aC0yYzAtMS41LTIuNS0zLTIuNS01IDAtMS45MyAxLjU3LTMuNSAzLjUtMy41czMuNSAxLjU3IDMuNSAzLjV6bS0yLjUgNmgtMlYyMWgydi0xLjV6bTYtNi41YzAgMS42OC0uNTkgMy4yMS0xLjU4IDQuNDJsMS40MiAxLjQyYTguOTc4IDguOTc4IDAgMCAwLTEtMTIuNjhsLTEuNDIgMS40MkE2Ljk5MyA2Ljk5MyAwIDAgMSAxOSAxM3ptLTMtOC00LTR2M2E5IDkgMCAwIDAtOSA5YzAgMi4yMy44MiA0LjI3IDIuMTYgNS44NGwxLjQyLTEuNDJBNi45MzggNi45MzggMCAwIDEgNSAxM2MwLTMuODYgMy4xNC03IDctN3YzbDQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV0d29ya1BpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNC42NyAzLjQxIDYuMDkgMiA3LjVsOC41IDguNUg0djJoMTZ2LTJoLTYuNWw1LjE1LTUuMTVBMi41IDIuNSAwIDEgMCAxOS41IDYgMi41IDIuNSAwIDAgMCAxNyA4LjVjMCAuMzUuMDcuNjcuMi45N2wtNS4yIDUuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV3TGFiZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMSAxMi00LjM3IDYuMTZjLS4zNy41Mi0uOTguODQtMS42My44NGgtM3YtNkg5di0zSDNWN2MwLTEuMS45LTIgMi0yaDEwYy42NSAwIDEuMjYuMzEgMS42My44NEwyMSAxMnptLTExIDNIN3YtM0g1djNIMnYyaDN2M2gydi0zaDN2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5leHRQbGFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNiAxMS45N2gtNWwyLjI2LTIuMjZhNC45NCA0Ljk0IDAgMCAwLTMuNzYtMS43NGMtMi4zNyAwLTQuMzUgMS42Ni00Ljg2IDMuODhsLS45Ni0uMzJjLjY0LTIuNjIgMy00LjU2IDUuODItNC41NiAxLjc4IDAgMy4zNy43OSA0LjQ3IDIuMDNMMTggOC45N3Y1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROaWdodGxpZ2h0Um91bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjAxIDEyYzAtMy41NyAyLjItNi42MiA1LjMxLTcuODcuODktLjM2Ljc1LTEuNjktLjE5LTEuOS0xLjEtLjI0LTIuMjctLjMtMy40OC0uMTQtNC41MS42LTguMTIgNC4zMS04LjU5IDguODNDNC40NCAxNi45MyA5LjEzIDIyIDE1LjAxIDIyYy43MyAwIDEuNDMtLjA4IDIuMTItLjIzLjk1LS4yMSAxLjEtMS41My4yLTEuOUE4LjQ2IDguNDYgMCAwIDEgMTIuMDEgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vQWNjb3VudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4xOCAxMC45NGMuMi0uNDQuMzItLjkyLjMyLTEuNDRDMTUuNSA3LjU3IDEzLjkzIDYgMTIgNmMtLjUyIDAtMSAuMTItMS40NC4zMmw0LjYyIDQuNjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMTNjLTIuMzIgMC00LjQ1LjgtNi4xNCAyLjEyQTcuOTU3IDcuOTU3IDAgMCAxIDQgMTJjMC0xLjg1LjYzLTMuNTUgMS42OS00LjlsMi44NiAyLjg2YTMuNDcgMy40NyAwIDAgMCAyLjk5IDIuOTlsMi4yIDIuMmMtLjU3LS4xLTEuMTUtLjE1LTEuNzQtLjE1em02LjMxIDEuOUw3LjEgNS42OUE3LjkwMiA3LjkwMiAwIDAgMSAxMiA0YzQuNDIgMCA4IDMuNTggOCA4IDAgMS44NS0uNjMgMy41NC0xLjY5IDQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9pc2VBd2FyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE1aC0yYTEuMDAzIDEuMDAzIDAgMCAxLTEuOTUuMzJjLS4xNS0uNDQtLjQtMS4wOC0uOTMtMS42MWwtMS4zNi0xLjM2QzkuMjggMTEuODcgOSAxMS4xOSA5IDEwLjVhMi41IDIuNSAwIDAgMSA0Ljk1LS41aDIuMDJjLS4yNS0yLjI1LTIuMTYtNC00LjQ3LTRDOS4wMiA2IDcgOC4wMiA3IDEwLjVjMCAxLjIyLjQ5IDIuNDEgMS4zNSAzLjI3bDEuMzYgMS4zNmMuMTcuMTcuMzEuNDQuNDQuODJBMy4wMTMgMy4wMTMgMCAwIDAgMTMgMThjMS42NSAwIDMtMS4zNSAzLTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTMuNVwiLFwiY3lcIjpcIjEyLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0zLjYgNi41OCAxLjU4IDEuMjZjLjM1LS41Ny43Ny0xLjEgMS4yNC0xLjU3TDQuODUgNS4wMmMtLjQ3LjQ3LS44OCAxLTEuMjUgMS41NnpNOS40NiA0LjQybC0uODctMS44MWMtLjYzLjIzLTEuMjQuNTItMS44Ljg3bC44NyAxLjgxYy41Ni0uMzYgMS4xNi0uNjUgMS44LS44N3pNNC40OSA5LjI2bC0xLjk2LS40NWMtLjIxLjYzLS4zNiAxLjI4LS40NCAxLjk1bDEuOTYuNDVhNy45IDcuOSAwIDAgMSAuNDQtMS45NXpNMjAuNCA2LjU4YTkuNCA5LjQgMCAwIDAtMS4yNS0xLjU2bC0xLjU4IDEuMjZjLjQ4LjQ3Ljg5Ljk5IDEuMjQgMS41N2wxLjU5LTEuMjd6TTQuMDQgMTIuNzlsLTEuOTYuNDVjLjA4LjY3LjIzIDEuMzMuNDQgMS45NWwxLjk3LS40NWMtLjIyLS42Mi0uMzgtMS4yNy0uNDUtMS45NXpNMTcuMjEgMy40OGMtLjU3LS4zNS0xLjE3LS42NC0xLjgtLjg3bC0uODcgMS44MWMuNjQuMjIgMS4yNC41MSAxLjguODdsLjg3LTEuODF6TTEzIDQuMDdWMi4wNWMtLjMzLS4wMy0uNjYtLjA1LTEtLjA1cy0uNjcuMDItMSAuMDV2Mi4wMmMuMzMtLjA0LjY2LS4wNyAxLS4wN3MuNjcuMDMgMSAuMDd6TTExIDE5LjkzdjIuMDJjLjMzLjAzLjY2LjA1IDEgLjA1cy42Ny0uMDIgMS0uMDV2LTIuMDJjLS4zMy4wNC0uNjYuMDctMSAuMDdzLS42Ny0uMDMtMS0uMDd6TTE5LjUxIDE0Ljc0bDEuOTcuNDVjLjIxLS42My4zNi0xLjI4LjQ0LTEuOTVsLTEuOTYtLjQ1Yy0uMDcuNjgtLjIzIDEuMzMtLjQ1IDEuOTV6TTE5Ljk2IDExLjIxbDEuOTYtLjQ1YTkuNjkgOS42OSAwIDAgMC0uNDQtMS45NWwtMS45Ny40NWMuMjIuNjIuMzggMS4yNy40NSAxLjk1ek0xNy41OCAxNy43M2wxLjU4IDEuMjZjLjQ3LS40OC44OC0xIDEuMjUtMS41NmwtMS41OC0xLjI2YTkuNCA5LjQgMCAwIDEtMS4yNSAxLjU2ek02Ljc5IDIwLjUyYy41Ny4zNSAxLjE3LjY0IDEuOC44N2wuODctMS44MWMtLjY0LS4yMi0xLjI0LS41MS0xLjgtLjg3bC0uODcgMS44MXpNMTQuNTQgMTkuNThsLjg3IDEuODFjLjYzLS4yMyAxLjI0LS41MiAxLjgtLjg3bC0uODctMS44MWMtLjU2LjM2LTEuMTYuNjUtMS44Ljg3ek0zLjYgMTcuNDJhOS40IDkuNCAwIDAgMCAxLjI1IDEuNTZsMS41OC0xLjI2YTcuODcgNy44NyAwIDAgMS0xLjI0LTEuNTdMMy42IDE3LjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb2lzZUNvbnRyb2xPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzEuNDQgMCAyLjc5LjM4IDMuOTUgMS4wNUwxNy40IDMuNkMxNS44NSAyLjU5IDEzLjk5IDIgMTIgMnMtMy44NS41OS01LjQxIDEuNTlsMS40NSAxLjQ1QTguMDM0IDguMDM0IDAgMCAxIDEyIDR6TTIwIDEyYzAgMS40NC0uMzggMi43OS0xLjA1IDMuOTVsMS40NSAxLjQ1YzEuMDEtMS41NSAxLjYtMy40MSAxLjYtNS40cy0uNTktMy44NS0xLjU5LTUuNDFsLTEuNDUgMS40NUE4LjAzNCA4LjAzNCAwIDAgMSAyMCAxMnpNMTIgMjBjLTEuNDQgMC0yLjc5LS4zOC0zLjk1LTEuMDVMNi42IDIwLjRDOC4xNSAyMS40MSAxMC4wMSAyMiAxMiAyMnMzLjg1LS41OSA1LjQxLTEuNTlsLTEuNDUtMS40NUE4LjAzNCA4LjAzNCAwIDAgMSAxMiAyMHpNNCAxMmMwLTEuNDQuMzgtMi43OSAxLjA1LTMuOTVMMy41OSA2LjU5QzIuNTkgOC4xNSAyIDEwLjAxIDIgMTJzLjU5IDMuODUgMS41OSA1LjQxbDEuNDUtMS40NUE4LjAzNCA4LjAzNCAwIDAgMSA0IDEyek0xMS41IDZDOS4wMiA2IDcgOC4wMiA3IDEwLjVjMCAxLjIyLjQ5IDIuNDEgMS4zNSAzLjI3bDEuMzYgMS4zNmMuMTcuMTcuMzEuNDQuNDQuODJBMy4wMTMgMy4wMTMgMCAwIDAgMTMgMThjMS42NSAwIDMtMS4zNSAzLTNoLTJhMS4wMDMgMS4wMDMgMCAwIDEtMS45NS4zMmMtLjE1LS40NC0uNC0xLjA4LS45My0xLjYxbC0xLjM2LTEuMzZDOS4yOCAxMS44NyA5IDExLjE5IDkgMTAuNWEyLjUgMi41IDAgMCAxIDQuOTUtLjVoMi4wMmMtLjI1LTIuMjUtMi4xNi00LTQuNDctNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMy41XCIsXCJjeVwiOlwiMTIuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vdEFjY2Vzc2libGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCAxMS4wNS0zLjQyLTMuNDJjLjMyLS4zNC43NC0uNTcgMS4yMy0uNjEuNDgtLjA0Ljg0LjA3IDEuMi4yNi4xOS4xLjM5LjIyLjYzLjQ2bDEuMjkgMS40M2MuOTggMS4wOCAyLjUzIDEuODUgNC4wNyAxLjgzdjJjLTEuNzUtLjAxLTMuNzEtLjg4LTUtMS45NXpNMTIgNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6TTIuODEgMi44MSAxLjM5IDQuMjIgMTAgMTIuODNWMTVjMCAxLjEuOSAyIDIgMmgyLjE3bDUuNjEgNS42MSAxLjQxLTEuNDFMMi44MSAyLjgxek0xMCAyMGMtMS42NiAwLTMtMS4zNC0zLTMgMC0xLjMxLjg0LTIuNDEgMi0yLjgzVjEyLjFhNSA1IDAgMSAwIDUuOSA1LjloLTIuMDdjLS40MSAxLjE2LTEuNTIgMi0yLjgzIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vdFN0YXJ0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMSAxNEg5VjhoMnY4em0xIDBWOGw1IDQtNSA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RlQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0yIDE0aC0zdjNoLTJ2LTNIOHYtMmgzdi0zaDJ2M2gzdjJ6bS0zLTdWMy41TDE4LjUgOUgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT2ZmbGluZUJvbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyLjAyYy01LjUxIDAtOS45OCA0LjQ3LTkuOTggOS45OHM0LjQ3IDkuOTggOS45OCA5Ljk4IDkuOTgtNC40NyA5Ljk4LTkuOThTMTcuNTEgMi4wMiAxMiAyLjAyek0xMS40OCAyMHYtNi4yNkg4TDEzIDR2Ni4yNmgzLjM1TDExLjQ4IDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPZmZsaW5lUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6bTUgMTZIN3YtMmgxMHYyem0tNi43LTRMNyAxMC43bDEuNC0xLjQgMS45IDEuOSA1LjMtNS4zTDE3IDcuMyAxMC4zIDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPbkRldmljZVRyYWluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTZoMnYxaC0yek0xMiAxMWMtMS4xIDAtMiAuOS0yIDIgMCAuNzQuNCAxLjM4IDEgMS43MnYuNzhoMnYtLjc4Yy42LS4zNSAxLS45OCAxLTEuNzIgMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEuMDEgNiAxYy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE4IDE4SDZWNmgxMnYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMDEgMTUuOTVjLjYyLS44My45OS0xLjg0Ljk5LTIuOTVzLS4zNy0yLjEyLS45OS0yLjk1bC0xLjA3IDEuMDdjLjM1LjU0LjU2IDEuMTkuNTYgMS44OHMtLjIxIDEuMzQtLjU2IDEuODhsMS4wNyAxLjA3ek05LjA2IDE0Ljg4Yy0uMzUtLjU0LS41Ni0xLjE5LS41Ni0xLjg4IDAtMS45MyAxLjU3LTMuNSAzLjUtMy41djEuMjVsMi4yNS0yLTIuMjUtMlY4Yy0yLjc2IDAtNSAyLjI0LTUgNSAwIDEuMTEuMzcgMi4xMi45OSAyLjk1bDEuMDctMS4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT25saW5lUHJlZGljdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTEuNWMwIDItMi41IDMuNS0yLjUgNWgtMmMwLTEuNS0yLjUtMy0yLjUtNUM4LjUgOS41NyAxMC4wNyA4IDEyIDhzMy41IDEuNTcgMy41IDMuNXptLTIuNSA2aC0yVjE5aDJ2LTEuNXptOS01LjVjMC0yLjc2LTEuMTItNS4yNi0yLjkzLTcuMDdsLTEuMDYgMS4wNkE4LjQ4MSA4LjQ4MSAwIDAgMSAyMC41IDEyYzAgMi4zNC0uOTUgNC40Ny0yLjQ5IDYuMDFsMS4wNiAxLjA2QTkuOTY5IDkuOTY5IDAgMCAwIDIyIDEyek0zLjUgMTJjMC0yLjM0Ljk1LTQuNDcgMi40OS02LjAxTDQuOTMgNC45M0E5Ljk2OSA5Ljk2OSAwIDAgMCAyIDEyYzAgMi43NiAxLjEyIDUuMjYgMi45MyA3LjA3bDEuMDYtMS4wNkE4LjQ4MSA4LjQ4MSAwIDAgMSAzLjUgMTJ6bTE0IDBjMCAxLjUyLS42MiAyLjg5LTEuNjEgMy44OWwxLjA2IDEuMDZBNi45NzYgNi45NzYgMCAwIDAgMTkgMTJjMC0xLjkzLS43OC0zLjY4LTIuMDUtNC45NWwtMS4wNiAxLjA2Yy45OSAxIDEuNjEgMi4zNyAxLjYxIDMuODl6TTcuMDUgMTYuOTVsMS4wNi0xLjA2Yy0xLTEtMS42MS0yLjM3LTEuNjEtMy44OXMuNjItMi44OSAxLjYxLTMuODlMNy4wNSA3LjA1QTYuOTc2IDYuOTc2IDAgMCAwIDUgMTJjMCAxLjkzLjc4IDMuNjggMi4wNSA0Ljk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPcGFjaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAwSDB2MjRoMjRWMHptMCAwSDB2MjRoMjRWMHpNMCAyNGgyNFYwSDB2MjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjY2IDggMTIgMi4zNSA2LjM0IDhBOC4wMiA4LjAyIDAgMCAwIDQgMTMuNjRjMCAyIC43OCA0LjExIDIuMzQgNS42N2E3Ljk5IDcuOTkgMCAwIDAgMTEuMzIgMGMxLjU2LTEuNTYgMi4zNC0zLjY3IDIuMzQtNS42N1MxOS4yMiA5LjU2IDE3LjY2IDh6TTYgMTRjLjAxLTIgLjYyLTMuMjcgMS43Ni00LjRMMTIgNS4yN2w0LjI0IDQuMzhDMTcuMzggMTAuNzcgMTcuOTkgMTIgMTggMTRINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3BlbkluQnJvd3NlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRINWEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoNHYtMkg1VjhoMTR2MTBoLTR2Mmg0YzEuMSAwIDItLjkgMi0yVjZhMiAyIDAgMCAwLTItMnptLTcgNi00IDRoM3Y2aDJ2LTZoM2wtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPcGVuSW5GdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTFWM2gtOGwzLjI5IDMuMjktMTAgMTBMMyAxM3Y4aDhsLTMuMjktMy4yOSAxMC0xMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3BlbkluTmV3T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNzkgNS44IDE0IDNoN3Y3bC0yLjc5LTIuOC00LjA5IDQuMDktMS40MS0xLjQxIDQuMDgtNC4wOHpNMTkgMTJ2NC4xN2wyIDJWMTJoLTJ6bS43OCAxMC42MUwxOC4xNyAyMUg1YTIgMiAwIDAgMS0yLTJWNS44M0wxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6TTE2LjE3IDE5bC00Ljg4LTQuODgtMS41OSAxLjU5LTEuNDEtMS40MSAxLjU5LTEuNTlMNSA3LjgzVjE5aDExLjE3ek03LjgzIDVIMTJWM0g1LjgzbDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3BlbkluTmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTlINVY1aDdWM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3BlbldpdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA5aDRWNmgzbC01LTUtNSA1aDN2M3ptLTEgMUg2VjdsLTUgNSA1IDV2LTNoM3YtNHptMTQgMi01LTV2M2gtM3Y0aDN2M2w1LTV6bS05IDNoLTR2M0g3bDUgNSA1LTVoLTN2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGJvbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xLjg4IDkuNTRMOC45MiAxNi41bC0xLjQxLTEuNDEgNC45Ni00Ljk2TDEwLjM0IDhsNS42NS4wMS4wMSA1LjY1LTIuMTItMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0Ym91bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xLjg4IDkuNTRMOC45MiAxNi41bC0xLjQxLTEuNDEgNC45Ni00Ljk2TDEwLjM0IDhsNS42NS4wMS4wMSA1LjY1LTIuMTItMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0Ym94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDQuOTljLTEuMTEgMC0xLjk4LjktMS45OCAyTDMgMTljMCAxLjEuODggMiAxLjk5IDJIMTljMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxMmgtNGMwIDEuNjYtMS4zNSAzLTMgM3MtMy0xLjM0LTMtM0g0Ljk5VjVIMTl2MTB6TTggMTFoMnYzaDR2LTNoMmwtNC00LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0Z29pbmdNYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAxMWMuMTcgMCAuMzQuMDEuNS4wM1Y2Ljg3QzE5IDUuODQgMTguMTYgNSAxNy4xMyA1SDMuODdDMi44NCA1IDIgNS44NCAyIDYuODd2MTAuMjZDMiAxOC4xNiAyLjg0IDE5IDMuODcgMTloOS43M2MtLjM4LS43NS0uNi0xLjYtLjYtMi41IDAtMy4wNCAyLjQ2LTUuNSA1LjUtNS41em0tOC4xIDJMNCA5LjE5VjdoLjIzbDYuMTggMy42OEwxNi43NCA3SDE3djIuMTZMMTAuNCAxM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkgMTMtMS40MSAxLjQxTDE5LjE3IDE2SDE1djJoNC4xN2wtMS41OCAxLjU5TDE5IDIxbDQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNOSAxMmMtLjU1IDAtMS0uNDUtMS0xVjhjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjNjMCAuNTUtLjQ1IDEtMSAxem01IDZoLTR2LTJjMC0xLjEuOS0yIDItMnMyIC45IDIgMnYyem0yLTdjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTFWOGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0cHV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgMTcgNS01LTUtNS0xLjQxIDEuNDFMMTguMTcgMTFIOXYyaDkuMTdsLTIuNTggMi41OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTlINVY1aDE0djJoMlY1YTIgMiAwIDAgMC0yLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGEyIDIgMCAwIDAgMi0ydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhZ2V2aWV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNSA5YTIuNSAyLjUgMCAwIDAgMCA1IDIuNSAyLjUgMCAwIDAgMC01ek0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTMuMjEgMTQuMjEtMi45MS0yLjkxYy0uNjkuNDQtMS41MS43LTIuMzkuN0M5LjAxIDE2IDcgMTMuOTkgNyAxMS41UzkuMDEgNyAxMS41IDcgMTYgOS4wMSAxNiAxMS41YzAgLjg4LS4yNiAxLjY5LS43IDIuMzlsMi45MSAyLjktMS40MiAxLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYWlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLjg4IDE1Ljc2VjE5aC0xLjc1di0xLjI5Yy0uNzQtLjE4LTIuMzktLjc3LTMuMDItMi45NmwxLjY1LS42N2MuMDYuMjIuNTggMi4wOSAyLjQgMi4wOS45MyAwIDEuOTgtLjQ4IDEuOTgtMS42MSAwLS45Ni0uNy0xLjQ2LTIuMjgtMi4wMy0xLjEtLjM5LTMuMzUtMS4wMy0zLjM1LTMuMzEgMC0uMS4wMS0yLjQgMi42Mi0yLjk2VjVoMS43NXYxLjI0YzEuODQuMzIgMi41MSAxLjc5IDIuNjYgMi4yM2wtMS41OC42N2MtLjExLS4zNS0uNTktMS4zNC0xLjktMS4zNC0uNyAwLTEuODEuMzctMS44MSAxLjM5IDAgLjk1Ljg2IDEuMzEgMi42NCAxLjkgMi40LjgzIDMuMDEgMi4wNSAzLjAxIDMuNDUgMCAyLjYzLTIuNSAzLjEzLTMuMDIgMy4yMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFuVG9vbEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljk4IDE0LjgyLS42MyA0LjQ2Yy0uMTQuOTktLjk5IDEuNzItMS45OCAxLjcyaC02LjE2Yy0uNTMgMC0xLjI5LS4yMS0xLjY2LS41OUw1IDE1LjYybC44My0uODRjLjI0LS4yNC41OC0uMzUuOTItLjI4bDMuMjUuNzRWNC41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41djZoLjkxYy4zMSAwIC42Mi4wNy44OS4yMWw0LjA5IDIuMDRjLjc3LjM5IDEuMjEgMS4yMiAxLjA5IDIuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhblRvb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyA1LjVWMjBjMCAyLjItMS44IDQtNCA0aC03LjNjLTEuMDggMC0yLjEtLjQzLTIuODUtMS4xOUwxIDE0LjgzczEuMjYtMS4yMyAxLjMtMS4yNWMuMjItLjE5LjQ5LS4yOS43OS0uMjkuMjIgMCAuNDIuMDYuNi4xNi4wNC4wMSA0LjMxIDIuNDYgNC4zMSAyLjQ2VjRjMC0uODMuNjctMS41IDEuNS0xLjVTMTEgMy4xNyAxMSA0djdoMVYxLjVjMC0uODMuNjctMS41IDEuNS0xLjVTMTUgLjY3IDE1IDEuNVYxMWgxVjIuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVYxMWgxVjUuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGF5bWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmMwLTEuMTEtLjg5LTItMi0yem0wIDE0SDR2LTZoMTZ2NnptMC0xMEg0VjZoMTZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVuZGluZ0FjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMmMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTEuNjUgNy4zNUwxNi41IDE3LjJWMTRoMXYyLjc5bDEuODUgMS44NS0uNy43MXpNMTggM2gtMy4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFzLTIuNC44NC0yLjgyIDJINmMtMS4xIDAtMiAuOS0yIDJ2MTVjMCAxLjEuOSAyIDIgMmg2LjExYTYuNzQzIDYuNzQzIDAgMCAxLTEuNDItMkg2VjVoMnYzaDhWNWgydjUuMDhjLjcxLjEgMS4zOC4zMSAyIC42VjVjMC0xLjEtLjktMi0yLTJ6bS02IDJjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVuZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTcgMTMuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTUgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTUgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcmNlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTFDOS40MyAxMSAxMSA5LjQzIDExIDcuNVM5LjQzIDQgNy41IDQgNCA1LjU3IDQgNy41IDUuNTcgMTEgNy41IDExem0wLTVDOC4zMyA2IDkgNi42NyA5IDcuNVM4LjMzIDkgNy41IDkgNiA4LjMzIDYgNy41IDYuNjcgNiA3LjUgNnpNNC4wMDIgMTguNTgzIDE4LjU5IDMuOTk2bDEuNDE0IDEuNDE0TDUuNDE3IDE5Ljk5N3pNMTYuNSAxM2MtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNSAzLjUtMS41NyAzLjUtMy41LTEuNTctMy41LTMuNS0zLjV6bTAgNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcm1DYW1lcmFNaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1aC0zLjE3TDE1IDNIOUw3LjE3IDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg3di0yLjA5Yy0yLjgzLS40OC01LTIuOTQtNS01LjkxaDJjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNGgyYzAgMi45Ny0yLjE3IDUuNDMtNSA1LjkxVjIxaDdjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptLTYgOGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yczIgLjkgMiAydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcm1Db250YWN0Q2FsZW5kYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC0xVjFoLTJ2Mkg4VjFINnYySDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDNjMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDMtMy0xLjM0LTMtMyAxLjM0LTMgMy0zem02IDEySDZ2LTFjMC0yIDQtMy4xIDYtMy4xczYgMS4xIDYgMy4xdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcm1EYXRhU2V0dGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ljk5IDExLjVjLjM0IDAgLjY3LjAzIDEgLjA3TDIwIDAgMCAyMGgxMS41NmMtLjA0LS4zMy0uMDctLjY2LS4wNy0xIDAtNC4xNCAzLjM2LTcuNSA3LjUtNy41em0zLjcxIDcuOTljLjAyLS4xNi4wNC0uMzIuMDQtLjQ5IDAtLjE3LS4wMS0uMzMtLjA0LS40OWwxLjA2LS44M2EuMjYuMjYgMCAwIDAgLjA2LS4zMmwtMS0xLjczYy0uMDYtLjExLS4xOS0uMTUtLjMxLS4xMWwtMS4yNC41Yy0uMjYtLjItLjU0LS4zNy0uODUtLjQ5bC0uMTktMS4zMmMtLjAxLS4xMi0uMTItLjIxLS4yNC0uMjFoLTJjLS4xMiAwLS4yMy4wOS0uMjUuMjFsLS4xOSAxLjMyYy0uMy4xMy0uNTkuMjktLjg1LjQ5bC0xLjI0LS41Yy0uMTEtLjA0LS4yNCAwLS4zMS4xMWwtMSAxLjczYy0uMDYuMTEtLjA0LjI0LjA2LjMybDEuMDYuODNhMy45MDggMy45MDggMCAwIDAgMCAuOThsLTEuMDYuODNhLjI2LjI2IDAgMCAwLS4wNi4zMmwxIDEuNzNjLjA2LjExLjE5LjE1LjMxLjExbDEuMjQtLjVjLjI2LjIuNTQuMzcuODUuNDlsLjE5IDEuMzJjLjAyLjEyLjEyLjIxLjI1LjIxaDJjLjEyIDAgLjIzLS4wOS4yNS0uMjFsLjE5LTEuMzJjLjMtLjEzLjU5LS4yOS44NC0uNDlsMS4yNS41Yy4xMS4wNC4yNCAwIC4zMS0uMTFsMS0xLjczYS4yNi4yNiAwIDAgMC0uMDYtLjMybC0xLjA3LS44M3ptLTMuNzEgMS4wMWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcm1EZXZpY2VJbmZvcm1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDdoLTJ2MmgyVjd6bTAgNGgtMnY2aDJ2LTZ6bTQtOS45OUw3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMTlIN1Y1aDEwdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJtSWRlbnRpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1LjlhMi4xIDIuMSAwIDEgMSAwIDQuMiAyLjEgMi4xIDAgMCAxIDAtNC4ybTAgOWMyLjk3IDAgNi4xIDEuNDYgNi4xIDIuMXYxLjFINS45VjE3YzAtLjY0IDMuMTMtMi4xIDYuMS0yLjFNMTIgNEM5Ljc5IDQgOCA1Ljc5IDggOHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCA5Yy0yLjY3IDAtOCAxLjM0LTggNHYzaDE2di0zYzAtMi42Ni01LjMzLTQtOC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJtTWVkaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDZIMHY1aC4wMUwwIDIwYzAgMS4xLjkgMiAyIDJoMTh2LTJIMlY2em0yMC0yaC04bC0yLTJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNyAxNWw0LjUtNiAzLjUgNC41MSAyLjUtMy4wMUwyMSAxNUg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJtUGhvbmVNc2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNS41Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41N2ExLjAyIDEuMDIgMCAwIDAtMS4wMi4yNGwtMi4yIDIuMmExNS4wNzQgMTUuMDc0IDAgMCAxLTYuNTktNi41OGwyLjItMi4yMWMuMjgtLjI3LjM2LS42Ni4yNS0xLjAxQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjVjMC0uNTUtLjQ1LTEtMS0xek0xMiAzdjEwbDMtM2g2VjNoLTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcm1TY2FuV2lmaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNDNi45NSAzIDMuMTUgNC44NSAwIDcuMjNMMTIgMjIgMjQgNy4yNUMyMC44NSA0Ljg3IDE3LjA1IDMgMTIgM3ptMSAxM2gtMnYtNmgydjZ6bS0yLThWNmgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBldHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjQuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjUuNVwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE5LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4zNCAxNC44NmMtLjg3LTEuMDItMS42LTEuODktMi40OC0yLjkxLS40Ni0uNTQtMS4wNS0xLjA4LTEuNzUtMS4zMi0uMTEtLjA0LS4yMi0uMDctLjMzLS4wOS0uMjUtLjA0LS41Mi0uMDQtLjc4LS4wNHMtLjUzIDAtLjc5LjA1Yy0uMTEuMDItLjIyLjA1LS4zMy4wOS0uNy4yNC0xLjI4Ljc4LTEuNzUgMS4zMi0uODcgMS4wMi0xLjYgMS44OS0yLjQ4IDIuOTEtMS4zMSAxLjMxLTIuOTIgMi43Ni0yLjYyIDQuNzkuMjkgMS4wMiAxLjAyIDIuMDMgMi4zMyAyLjMyLjczLjE1IDMuMDYtLjQ0IDUuNTQtLjQ0aC4xOGMyLjQ4IDAgNC44MS41OCA1LjU0LjQ0IDEuMzEtLjI5IDIuMDQtMS4zMSAyLjMzLTIuMzIuMzEtMi4wNC0xLjMtMy40OS0yLjYxLTQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOWgxLjV2NkgxM3YtMi41aC0yVjE1SDkuNVY5SDExdjJoMlY5em0tNSAxLjV2MWMwIC44LS43IDEuNS0xLjUgMS41aC0ydjJIM1Y5aDMuNWMuOCAwIDEuNS43IDEuNSAxLjV6bS0xLjUgMGgtMnYxaDJ2LTF6bTE1IDB2MWMwIC44LS43IDEuNS0xLjUgMS41aC0ydjJoLTEuNVY5SDIwYy44IDAgMS41LjcgMS41IDEuNXptLTEuNSAwaC0ydjFoMnYtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGljdHVyZUluUGljdHVyZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTFoLTh2Nmg4di02em00IDhWNC45OEMyMyAzLjg4IDIyLjEgMyAyMSAzSDNjLTEuMSAwLTIgLjg4LTIgMS45OFYxOWMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yem0tMiAuMDJIM1Y0Ljk3aDE4djE0LjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaWN0dXJlSW5QaWN0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN2gtOHY2aDhWN3ptMi00SDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMS45OCAyIDEuOThoMThjMS4xIDAgMi0uODggMi0xLjk4VjVjMC0xLjEtLjktMi0yLTJ6bTAgMTYuMDFIM1Y0Ljk4aDE4djE0LjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaW5FbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMlY2SDR2MTJoMTB2Mkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoMTZjMS4xIDAgMiAuOSAyIDJ2NmgtMnptLTEgMmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bS00LjM0LTZIOXY1LjY2bDIuMTItMi4xMiAyLjgzIDIuODMgMS40MS0xLjQxLTIuODMtMi44M0wxNC42NiA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaW5JbnZva2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMnY2YzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjZjMC0xLjEuOS0yIDItMmgxMHYySDR2MTJoMTZ2LTZoMnptMC01YzAtMS42Ni0xLjM0LTMtMy0zcy0zIDEuMzQtMyAzIDEuMzQgMyAzIDMgMy0xLjM0IDMtM3ptLTEwLjUzIDUuMTItMi44MyAyLjgzIDEuNDEgMS40MSAyLjgzLTIuODNMMTUgMTUuNjZWMTBIOS4zNGwyLjEzIDIuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBpbmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAyLjVWMWg1djVIOS41VjMuNTZMMy41NiA5LjVINlYxMUgxVjZoMS41djIuNDRMOC40NCAyLjVINnptMTYuOTggMTQuMzItLjYzIDQuNDZjLS4xNC45OS0uOTkgMS43Mi0xLjk4IDEuNzJoLTYuMTZjLS41MyAwLTEuMjktLjIxLTEuNjYtLjU5TDggMTcuNjJsLjgzLS44NGMuMjQtLjI0LjU4LS4zNS45Mi0uMjhsMy4yNS43NFY2LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjV2NmguOTFjLjMxIDAgLjYyLjA3Ljg5LjIxbDQuMDkgMi4wNGMuNzcuMzkgMS4yMSAxLjIyIDEuMDkgMi4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxhZ2lhcmlzbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0xLjA0IDE3LjQ1LTEuODgtMS44OGMtMS4zMy43MS0zLjAxLjUzLTQuMTMtLjU5YTMuNDk1IDMuNDk1IDAgMCAxIDAtNC45NSAzLjQ5NSAzLjQ5NSAwIDAgMSA0Ljk1IDAgMy40OCAzLjQ4IDAgMCAxIC41OSA0LjEzbDEuODggMS44OC0xLjQxIDEuNDF6TTEzIDlWMy41TDE4LjUgOUgxM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMS41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBsYXlGb3JXb3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNXY1LjU5SDcuNWw0LjUgNC41IDQuNS00LjVIMTNWNWgtMnptLTUgOWMwIDMuMzEgMi42OSA2IDYgNnM2LTIuNjkgNi02aC0yYzAgMi4yMS0xLjc5IDQtNCA0cy00LTEuNzktNC00SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvbHltZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0aC00TDcuMTEgMTYuNjMgNC41IDEyIDkgNEg1TC41IDEyIDUgMjBoNGw3Ljg5LTEyLjYzTDE5LjUgMTIgMTUgMjBoNGw0LjUtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG93ZXJTZXR0aW5nc05ldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDNoLTJ2MTBoMlYzem00LjgzIDIuMTctMS40MiAxLjQyQTYuOTIgNi45MiAwIDAgMSAxOSAxMmMwIDMuODctMy4xMyA3LTcgN0E2Ljk5NSA2Ljk5NSAwIDAgMSA3LjU4IDYuNThMNi4xNyA1LjE3QTguOTMyIDguOTMyIDAgMCAwIDMgMTJhOSA5IDAgMCAwIDE4IDBjMC0yLjc0LTEuMjMtNS4xOC0zLjE3LTYuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFByZWduYW50V29tYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDRjMC0xLjExLjg5LTIgMi0yczIgLjg5IDIgMi0uODkgMi0yIDItMi0uODktMi0yem03IDlhMy4yODUgMy4yODUgMCAwIDAtMi0zYzAtMS42Ni0xLjM0LTMtMy0zcy0zIDEuMzQtMyAzdjdoMnY1aDN2LTVoM3YtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHJldmlldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWEyIDIgMCAwIDAtMi0yem0wIDE2SDVWN2gxNHYxMnptLTUuNS02YzAgLjgzLS42NyAxLjUtMS41IDEuNXMtMS41LS42Ny0xLjUtMS41LjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41ek0xMiA5Yy0yLjczIDAtNS4wNiAxLjY2LTYgNCAuOTQgMi4zNCAzLjI3IDQgNiA0czUuMDYtMS42NiA2LTRjLS45NC0yLjM0LTMuMjctNC02LTR6bTAgNi41YTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQcmludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDhINWMtMS42NiAwLTMgMS4zNC0zIDN2Nmg0djRoMTJ2LTRoNHYtNmMwLTEuNjYtMS4zNC0zLTMtM3ptLTMgMTFIOHYtNWg4djV6bTMtN2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tMS05SDZ2NGgxMlYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQcml2YWN5VGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMSAzIDV2NmMwIDUuNTUgMy44NCAxMC43NCA5IDEyIDUuMTYtMS4yNiA5LTYuNDUgOS0xMlY1bC05LTR6bS0xIDZoMnYyaC0yVjd6bTAgNGgydjZoLTJ2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFByaXZhdGVDb25uZWN0aXZpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MyAxMWMtLjQ5LTMuMzktMy40LTYtNi45My02cy02LjQ0IDIuNjEtNi45MyA2SDJ2MmgzLjA3Yy40OSAzLjM5IDMuNCA2IDYuOTMgNnM2LjQ0LTIuNjEgNi45My02SDIydi0yaC0zLjA3ek0xNSAxNC41YzAgLjU1LS40NSAxLTEgMWgtNGMtLjU1IDAtMS0uNDUtMS0xdi0zYzAtLjU1LjQ1LTEgMS0xdi0xYTIgMiAwIDAgMSAyLjM0LTEuOTdjLjk4LjE2IDEuNjYgMS4wOCAxLjY2IDIuMDh2Ljg5Yy41NSAwIDEgLjQ1IDEgMXYzek0xMi43NSAxM2MwIC40MS0uMzQuNzUtLjc1Ljc1cy0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NS43NS4zNC43NS43NXpNMTMgOS41djFoLTJ2LTFjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQcm9kdWN0aW9uUXVhbnRpdHlMaW1pdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMGgtMlY4aDJ2MnptMC00aC0yVjFoMnY1ek03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yem0xMCAwYy0xLjEgMC0xLjk5LjktMS45OSAycy44OSAyIDEuOTkgMiAyLS45IDItMi0uOS0yLTItMnptLTguOS01aDcuNDVjLjc1IDAgMS40MS0uNDEgMS43NS0xLjAzTDIxIDQuOTYgMTkuMjUgNGwtMy43IDdIOC41M0w0LjI3IDJIMXYyaDJsMy42IDcuNTktMS4zNSAyLjQ0QzQuNTIgMTUuMzcgNS40OCAxNyA3IDE3aDEydi0ySDdsMS4xLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFB1Ymxpc2hlZFdpdGhDaGFuZ2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuNjYgOS41My03LjA3IDcuMDctNC4yNC00LjI0IDEuNDEtMS40MSAyLjgzIDIuODMgNS42Ni01LjY2IDEuNDEgMS40MXpNNCAxMmMwLTIuMzMgMS4wMi00LjQyIDIuNjItNS44OEw5IDguNXYtNkgzbDIuMiAyLjJDMy4yNCA2LjUyIDIgOS4xMSAyIDEyYzAgNS4xOSAzLjk1IDkuNDUgOSA5Ljk1di0yLjAyYy0zLjk0LS40OS03LTMuODYtNy03Ljkzem0xOCAwYzAtNS4xOS0zLjk1LTkuNDUtOS05Ljk1djIuMDJjMy45NC40OSA3IDMuODYgNyA3LjkzIDAgMi4zMy0xLjAyIDQuNDItMi42MiA1Ljg4TDE1IDE1LjV2Nmg2bC0yLjItMi4yYzEuOTYtMS44MiAzLjItNC40MSAzLjItNy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRRdWVyeUJ1aWxkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgN0gxMXY2bDUuMjUgMy4xNS43NS0xLjIzLTQuNS0yLjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRRdWVzdGlvbkFuc3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDZoLTJ2OUg2djJjMCAuNTUuNDUgMSAxIDFoMTFsNCA0VjdjMC0uNTUtLjQ1LTEtMS0xem0tNCA2VjNjMC0uNTUtLjQ1LTEtMS0xSDNjLS41NSAwLTEgLjQ1LTEgMXYxNGw0LTRoMTBjLjU1IDAgMS0uNDUgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRRdWVzdGlvbk1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4wNyAxMi44NWMuNzctMS4zOSAyLjI1LTIuMjEgMy4xMS0zLjQ0LjkxLTEuMjkuNC0zLjctMi4xOC0zLjctMS42OSAwLTIuNTIgMS4yOC0yLjg3IDIuMzRMNi41NCA2Ljk2QzcuMjUgNC44MyA5LjE4IDMgMTEuOTkgM2MyLjM1IDAgMy45NiAxLjA3IDQuNzggMi40MS43IDEuMTUgMS4xMSAzLjMuMDMgNC45LTEuMiAxLjc3LTIuMzUgMi4zMS0yLjk3IDMuNDUtLjI1LjQ2LS4zNS43Ni0uMzUgMi4yNGgtMi44OWMtLjAxLS43OC0uMTMtMi4wNS40OC0zLjE1ek0xNCAyMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFF1aWNrcmVwbHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA0YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoOXYtOGg3VjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjUgMTZoLTIuMmwxLjctNGgtNXY2aDJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmViYXNlRWRpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTlcIixcImN5XCI6XCI1XCIsXCJyXCI6XCIzXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjc2IDkuMjQgMTUgNSAxMC43Ni43NiA5LjM0IDIuMTcgMTEuMTcgNEg3LjgyQzcuNCAyLjg0IDYuMyAyIDUgMiAzLjM0IDIgMiAzLjM0IDIgNWMwIDEuMy44NCAyLjQgMiAyLjgydjguMzdDMi44NCAxNi42IDIgMTcuNyAyIDE5YzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNjMC0xLjMtLjg0LTIuNC0yLTIuODJWNy44MmMuODUtLjMxIDEuNTEtLjk3IDEuODItMS44MmgzLjM2TDkuMzQgNy44M2wxLjQyIDEuNDF6TTEwIDE5djNoM2w2LjI2LTYuMjYtMy0zek0yMC4xMiAxMC4yOWEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLTEuMzggMS4zOCAzIDMgMS4zOC0xLjM4YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMS41OS0xLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWNlaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTdINnYtMmgxMnYyem0wLTRINnYtMmgxMnYyem0wLTRINlY3aDEydjJ6TTMgMjJsMS41LTEuNUw2IDIybDEuNS0xLjVMOSAyMmwxLjUtMS41TDEyIDIybDEuNS0xLjVMMTUgMjJsMS41LTEuNUwxOCAyMmwxLjUtMS41TDIxIDIyVjJsLTEuNSAxLjVMMTggMmwtMS41IDEuNUwxNSAybC0xLjUgMS41TDEyIDJsLTEuNSAxLjVMOSAyIDcuNSAzLjUgNiAyIDQuNSAzLjUgMyAydjIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWNvcmRWb2ljZU92ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCI5XCIsXCJyXCI6XCI0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTVjLTIuNjcgMC04IDEuMzQtOCA0djJoMTZ2LTJjMC0yLjY2LTUuMzMtNC04LTR6bTcuNzYtOS42NC0xLjY4IDEuNjljLjg0IDEuMTguODQgMi43MSAwIDMuODlsMS42OCAxLjY5YzIuMDItMi4wMiAyLjAyLTUuMDcgMC03LjI3ek0yMC4wNyAybC0xLjYzIDEuNjNjMi43NyAzLjAyIDIuNzcgNy41NiAwIDEwLjc0TDIwLjA3IDE2YzMuOS0zLjg5IDMuOTEtOS45NSAwLTE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWRlZW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC0yLjE4Yy4xMS0uMzEuMTgtLjY1LjE4LTFhMi45OTYgMi45OTYgMCAwIDAtNS41LTEuNjVsLS41LjY3LS41LS42OEMxMC45NiAyLjU0IDEwLjA1IDIgOSAyIDcuMzQgMiA2IDMuMzQgNiA1YzAgLjM1LjA3LjY5LjE4IDFINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMTljMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0tNS0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTkgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xMSAxNUg0di0yaDE2djJ6bTAtNUg0VjhoNS4wOEw3IDEwLjgzIDguNjIgMTIgMTEgOC43NmwxLTEuMzYgMSAxLjM2TDE1LjM4IDEyIDE3IDEwLjgzIDE0LjkyIDhIMjB2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVtb3ZlRG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEuNzkgMTIgNS41OCA1LjU5TDUuOTYgMTkgLjM3IDEzLjQxIDEuNzkgMTJ6bS40NS03Ljc4TDEyLjkgMTQuODlsLTEuMjggMS4yOEw3LjQ0IDEybC0xLjQxIDEuNDFMMTEuNjIgMTlsMi42OS0yLjY5IDQuODkgNC44OSAxLjQxLTEuNDFMMy42NSAyLjgxIDIuMjQgNC4yMnptMTQuOSA5LjI3TDIzLjYyIDcgMjIuMiA1LjU5bC02LjQ4IDYuNDggMS40MiAxLjQyek0xNy45NiA3bC0xLjQxLTEuNDEtMy42NSAzLjY2IDEuNDEgMS40MUwxNy45NiA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZW1vdmVTaG9wcGluZ0NhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi43MyAyMi43MyAyLjc3IDIuNzcgMiAybC0uNzMtLjczTDAgMi41NGw0LjM5IDQuMzkgMi4yMSA0LjY2LTEuMzUgMi40NWMtLjE2LjI4LS4yNS42MS0uMjUuOTYgMCAxLjEuOSAyIDIgMmg3LjQ2bDEuMzggMS4zOEExLjk5NyAxLjk5NyAwIDAgMCAxNyAyMmMuNjcgMCAxLjI2LS4zMyAxLjYyLS44NEwyMS40NiAyNGwxLjI3LTEuMjd6TTcuNDIgMTVjLS4xNCAwLS4yNS0uMTEtLjI1LS4yNWwuMDMtLjEyLjktMS42M2gyLjM2bDIgMkg3LjQyem04LjEzLTJjLjc1IDAgMS40MS0uNDEgMS43NS0xLjAzbDMuNTgtNi40OUExLjAwMyAxLjAwMyAwIDAgMCAyMCA0SDYuNTRsOS4wMSA5ek03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZW9yZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNWgxOHYtMkgzdjJ6bTAgNGgxOHYtMkgzdjJ6bTAtOGgxOFY5SDN2MnptMC02djJoMThWNUgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBhcnRpdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMjFoMTh2LTZIM3Y2em03LjMzLTJ2LTJoMy4zM3YyaC0zLjMzek0xOSAxOWgtMy4zM3YtMkgxOXYyek01IDE3aDMuMzN2Mkg1di0yek02IDEwbDEuNDItMS40Mkw1LjgzIDdIMTdjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAySDN2MmgxNGMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNEg1LjgzbDEuNTktMS41OUw2IDIgMiA2bDQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwb3J0UHJvYmxlbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMjFoMjJMMTIgMiAxIDIxem0xMi0zaC0ydi0yaDJ2MnptMC00aC0ydi00aDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVxdWVzdFBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0xIDloLTR2MWgzYy41NSAwIDEgLjQ1IDEgMXYzYzAgLjU1LS40NSAxLTEgMWgtMXYxaC0ydi0xSDl2LTJoNHYtMWgtM2MtLjU1IDAtMS0uNDUtMS0xdi0zYzAtLjU1LjQ1LTEgMS0xaDFWOGgydjFoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXN0b3JlRnJvbVRyYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNGgtMy41bC0xLTFoLTVsLTEgMUg1djJoMTR6TTYgN3YxMmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2em04IDd2NGgtNHYtNEg4bDQtNCA0IDRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlc3RvcmVQYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0tMiAxNmMtMi4wNSAwLTMuODEtMS4yNC00LjU4LTNoMS43MWMuNjMuOSAxLjY4IDEuNSAyLjg3IDEuNSAxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMxMy45MyA5LjUgMTIgOS41YTMuNSAzLjUgMCAwIDAtMy4xIDEuOWwxLjYgMS42aC00VjlsMS4zIDEuM0M4LjY5IDguOTIgMTAuMjMgOCAxMiA4YzIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgM2E5IDkgMCAwIDAtOSA5SDFsMy44OSAzLjg5LjA3LjE0TDkgMTJINmMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3LTMuMTMgNy03IDdjLTEuOTMgMC0zLjY4LS43OS00Ljk0LTIuMDZsLTEuNDIgMS40MkE4Ljk1NCA4Ljk1NCAwIDAgMCAxMyAyMWE5IDkgMCAwIDAgMC0xOHptLTEgNXY1bDQuMjggMi41NC43Mi0xLjIxLTMuNS0yLjA4VjhIMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvY2tldExhdW5jaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMTkgNi4zNWMtMi4wNCAyLjI5LTMuNDQgNS41OC0zLjU3IDUuODlMMiAxMC42OWw0LjA1LTQuMDVjLjQ3LS40NyAxLjE1LS42OCAxLjgxLS41NWwxLjMzLjI2ek0xMS4xNyAxN3MzLjc0LTEuNTUgNS44OS0zLjdjNS40LTUuNCA0LjUtOS42MiA0LjIxLTEwLjU3LS45NS0uMy01LjE3LTEuMTktMTAuNTcgNC4yMUM4LjU1IDkuMDkgNyAxMi44MyA3IDEyLjgzTDExLjE3IDE3em02LjQ4LTIuMTljLTIuMjkgMi4wNC01LjU4IDMuNDQtNS44OSAzLjU3TDEzLjMxIDIybDQuMDUtNC4wNWMuNDctLjQ3LjY4LTEuMTUuNTUtMS44MWwtLjI2LTEuMzN6TTkgMThjMCAuODMtLjM0IDEuNTgtLjg4IDIuMTJDNi45NCAyMS4zIDIgMjIgMiAyMnMuNy00Ljk0IDEuODgtNi4xMkEyLjk5NiAyLjk5NiAwIDAgMSA5IDE4em00LTljMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm9ja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMi41czQuNSAyLjA0IDQuNSAxMC41YzAgMi40OS0xLjA0IDUuNTctMS42IDdIOS4xYy0uNTYtMS40My0xLjYtNC41MS0xLjYtN0M3LjUgNC41NCAxMiAyLjUgMTIgMi41em0yIDguNWMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDIgLjkgMiAyIDIgMi0uOSAyLTJ6bS02LjMxIDkuNTJjLS40OC0xLjIzLTEuNTItNC4xNy0xLjY3LTYuODdsLTEuMTMuNzVjLS41Ni4zOC0uODkgMS0uODkgMS42N1YyMmwzLjY5LTEuNDh6TTIwIDIydi01LjkzYzAtLjY3LS4zMy0xLjI5LS44OS0xLjY2bC0xLjEzLS43NWMtLjE1IDIuNjktMS4yIDUuNjQtMS42NyA2Ljg3TDIwIDIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM4LjEzIDIgNSA1LjEzIDUgOWMwIDUuMjUgNyAxMyA3IDEzczctNy43NSA3LTEzYzAtMy44Ny0zLjEzLTctNy03em0wIDkuNWEyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm91bmRlZENvcm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5aDJ2MmgtMnYtMnptMC0yaDJ2LTJoLTJ2MnpNMyAxM2gydi0ySDN2MnptMCA0aDJ2LTJIM3Yyem0wLThoMlY3SDN2MnptMC00aDJWM0gzdjJ6bTQgMGgyVjNIN3Yyem04IDE2aDJ2LTJoLTJ2MnptLTQgMGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6bS04IDBoMnYtMkg3djJ6bS00IDBoMnYtMkgzdjJ6TTIxIDhjMC0yLjc2LTIuMjQtNS01LTVoLTV2Mmg1YzEuNjUgMCAzIDEuMzUgMyAzdjVoMlY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb3dpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgMTQuNSA0IDE5bDEuNSAxLjVMOSAxN2gybC0yLjUtMi41ek0xNSAxYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNiAyMC4wMUwxOCAyNGwtMi45OS0zLjAxVjE5LjVsLTcuMS03LjA5Yy0uMzEuMDUtLjYxLjA3LS45MS4wN3YtMi4xNmMxLjY2LjAzIDMuNjEtLjg3IDQuNjctMi4wNGwxLjQtMS41NWMuMzUtLjM5Ljk5LS43MyAxLjY1LS43M2guMDNDMTUuOTkgNi4wMSAxNyA3LjAyIDE3IDguMjZ2NS43NWMwIC44NC0uMzUgMS42MS0uOTIgMi4xNmwtMy41OC0zLjU4di0yLjI3Yy0uNjMuNTItMS40MyAxLjAyLTIuMjkgMS4zOUwxNi41IDE4SDE4bDMgMy4wMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUnVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjU0IDExIDEzIDcuNDZsMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjQgMS40MSAxLjQxTDE2LjU0IDExek0xMSA3SDJ2Mmg5Vjd6bTEwIDYuNDFMMTkuNTkgMTIgMTcgMTQuNTkgMTQuNDEgMTIgMTMgMTMuNDEgMTUuNTkgMTYgMTMgMTguNTkgMTQuNDEgMjAgMTcgMTcuNDEgMTkuNTkgMjAgMjEgMTguNTkgMTguNDEgMTYgMjEgMTMuNDF6TTExIDE1SDJ2Mmg5di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYXRlbGxpdGVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS40NC41OS0zLjE4IDMuMThjLS43OC43OC0uNzggMi4wNSAwIDIuODNsMS4yNCAxLjI0LS43MS43MS0xLjI0LTEuMjVjLS43OC0uNzgtMi4wNS0uNzgtMi44MyAwTDcuMyA4LjcyYy0uNzguNzgtLjc4IDIuMDUgMCAyLjgzbDEuMjQgMS4yNC0uNzEuNzEtMS4yMy0xLjI1Yy0uNzgtLjc4LTIuMDUtLjc4LTIuODMgMEwuNTkgMTUuNDNjLS43OC43OC0uNzggMi4wNSAwIDIuODNsMy41NCAzLjU0Yy43OC43OCAyLjA1Ljc4IDIuODMgMGwzLjE4LTMuMThjLjc4LS43OC43OC0yLjA1IDAtMi44M0w4LjkgMTQuNTVsLjcxLS43MSAxLjI0IDEuMjRjLjc4Ljc4IDIuMDUuNzggMi44MyAwbDEuNDEtMS40MWMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzTDEzLjg0IDkuNmwuNzEtLjcxIDEuMjQgMS4yNGMuNzguNzggMi4wNS43OCAyLjgzIDBsMy4xOC0zLjE4Yy43OC0uNzguNzgtMi4wNSAwLTIuODNMMTguMjYuNThjLS43OC0uNzgtMi4wNC0uNzgtMi44Mi4wMXpNNi42IDE5LjMybC0xLjA2IDEuMDZMMiAxNi44NWwxLjA2LTEuMDYgMy41NCAzLjUzem0yLjEyLTIuMTItMS4wNiAxLjA2LTMuNTQtMy41NCAxLjA2LTEuMDYgMy41NCAzLjU0em05LjU0LTkuNTRMMTcuMiA4LjcybC0zLjU0LTMuNTQgMS4wNi0xLjA2IDMuNTQgMy41NHptMi4xMi0yLjEyTDE5LjMyIDYuNmwtMy41NC0zLjU0TDE2Ljg1IDJsMy41MyAzLjU0ek0xNCAyMXYyYTkgOSAwIDAgMCA5LTloLTJjMCAzLjg3LTMuMTMgNy03IDd6bTAtNHYyYzIuNzYgMCA1LTIuMjQgNS01aC0yYzAgMS42Ni0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYXZlZFNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0em0tMi4xNy0xLjUgMi4xNC0xLjUzIDIuMTQgMS41My0uODMtMi40NiAyLjE1LTEuNWgtMi42Mkw5LjQ3IDZsLS44NCAyLjU0SDZsMi4xNCAxLjQ5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYXZpbmdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkuODMgNy41LTIuMjctMi4yN2MuMDctLjQyLjE4LS44MS4zMi0xLjE1QTEuNDk4IDEuNDk4IDAgMCAwIDE2LjUgMmMtMS42NCAwLTMuMDkuNzktNCAyaC01QzQuNDYgNCAyIDYuNDYgMiA5LjVTNC41IDIxIDQuNSAyMUgxMHYtMmgydjJoNS41bDEuNjgtNS41OSAyLjgyLS45NFY3LjVoLTIuMTd6TTEzIDlIOFY3aDV2MnptMyAyYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjaGVkdWxlU2VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAxMi41SDE1djRsMyAyIC43NS0xLjIzLTIuMjUtMS41MlYxMi41ek0xNiA5IDIgM3Y3bDkgMi05IDJ2N2w3LjI3LTMuMTFDMTAuMDkgMjAuODMgMTIuNzkgMjMgMTYgMjNjMy44NiAwIDctMy4xNCA3LTdzLTMuMTQtNy03LTd6bTAgMTJjLTIuNzUgMC00Ljk4LTIuMjItNS00Ljk3di0uMDdhNS4wMDggNS4wMDggMCAwIDEgNS00Ljk3YzIuNzYgMCA1IDIuMjQgNSA1UzE4Ljc2IDIxIDE2IDIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY2hlZHVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlYXJjaE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDAgMCA5LjUgM0M2LjA4IDMgMy4yOCA1LjY0IDMuMDMgOWgyLjAyQzUuMyA2Ljc1IDcuMTggNSA5LjUgNSAxMS45OSA1IDE0IDcuMDEgMTQgOS41UzExLjk5IDE0IDkuNSAxNGMtLjE3IDAtLjMzLS4wMy0uNS0uMDV2Mi4wMmMuMTcuMDIuMzMuMDMuNS4wMyAxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNDcgMTAuODIgNCAxMy4yOWwtMi40Ny0yLjQ3LS43MS43MUwzLjI5IDE0IC44MiAxNi40N2wuNzEuNzFMNCAxNC43MWwyLjQ3IDIuNDcuNzEtLjcxTDQuNzEgMTRsMi40Ny0yLjQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDE0aC0uNzlsLS4yOC0uMjdBNi40NzEgNi40NzEgMCAwIDAgMTYgOS41IDYuNSA2LjUgMCAxIDAgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VnbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxOGgxMnYtMkg5djJ6TTMgNnYyaDE4VjZIM3ptNiA3aDEydi0ySDl2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VuZEFuZEFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDEwaC0zTDIgM3Y3bDkgMi05IDJ2N2w4LTMuNVYyMWMwIDEuMS45IDIgMiAyaDljMS4xIDAgMi0uOSAyLTJ2LTljMC0xLjEtLjktMi0yLTJ6bTAgMTFoLTl2LTloOXY5em0tNC41LTFMMTMgMTZoMnYtM2gzdjNoMmwtMy41IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbnNvcnNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjE0IDEwLjk2Yy0uMDkuMzMtLjE0LjY4LS4xNCAxLjA0IDAgMS4xLjQ1IDIuMSAxLjE3IDIuODNsLTEuNDIgMS40MkE2LjAxOCA2LjAxOCAwIDAgMSA2IDEyYzAtLjkzLjIxLTEuOC41OC0yLjU5TDUuMTEgNy45NEE3Ljg5NyA3Ljg5NyAwIDAgMCA0IDEyYzAgMi4yMS45IDQuMjEgMi4zNSA1LjY1bC0xLjQyIDEuNDJBOS45NjkgOS45NjkgMCAwIDEgMiAxMmMwLTIuMDQuNjEtMy45MyAxLjY2LTUuNTFMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNDEgMS40MUw4LjE0IDEwLjk2em05LjI4IDMuNjNjLjM3LS43OS41OC0xLjY2LjU4LTIuNTkgMC0xLjY2LS42Ny0zLjE2LTEuNzYtNC4yNGwtMS40MiAxLjQyYTMuOTUxIDMuOTUxIDAgMCAxIDEuMDQgMy44NmwxLjU2IDEuNTV6TTIwIDEyYzAgMS40OC0uNCAyLjg3LTEuMTEgNC4wNmwxLjQ1IDEuNDVBOS45MSA5LjkxIDAgMCAwIDIyIDEyYzAtMi43Ni0xLjEyLTUuMjYtMi45My03LjA3bC0xLjQyIDEuNDJBNy45NCA3Ljk0IDAgMCAxIDIwIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZW5zb3JzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy43NiAxNi4yNEM2LjY3IDE1LjE2IDYgMTMuNjYgNiAxMnMuNjctMy4xNiAxLjc2LTQuMjRsMS40MiAxLjQyQzguNDUgOS45IDggMTAuOSA4IDEyYzAgMS4xLjQ1IDIuMSAxLjE3IDIuODNsLTEuNDEgMS40MXptOC40OCAwQzE3LjMzIDE1LjE2IDE4IDEzLjY2IDE4IDEycy0uNjctMy4xNi0xLjc2LTQuMjRsLTEuNDIgMS40MkMxNS41NSA5LjkgMTYgMTAuOSAxNiAxMmMwIDEuMS0uNDUgMi4xLTEuMTcgMi44M2wxLjQxIDEuNDF6TTEyIDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptOCAyYzAgMi4yMS0uOSA0LjIxLTIuMzUgNS42NWwxLjQyIDEuNDJDMjAuODggMTcuMjYgMjIgMTQuNzYgMjIgMTJzLTEuMTItNS4yNi0yLjkzLTcuMDdsLTEuNDIgMS40MkE3Ljk0IDcuOTQgMCAwIDEgMjAgMTJ6TTYuMzUgNi4zNSA0LjkzIDQuOTNDMy4xMiA2Ljc0IDIgOS4yNCAyIDEyczEuMTIgNS4yNiAyLjkzIDcuMDdsMS40Mi0xLjQyQzQuOSAxNi4yMSA0IDE0LjIxIDQgMTJzLjktNC4yMSAyLjM1LTUuNjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzQWNjZXNzaWJpbGl0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjUgNGMtMi42MS43LTUuNjcgMS04LjUgMXMtNS44OS0uMy04LjUtMUwzIDZjMS44Ni41IDQgLjgzIDYgMXYxMmgydi02aDJ2NmgyVjdjMi0uMTcgNC4xNC0uNSA2LTFsLS41LTJ6TTEyIDRjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyek03IDI0aDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXR0aW5nc0FwcGxpY2F0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNy03SDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YTIgMiAwIDAgMCAyLTJWNWEyIDIgMCAwIDAtMi0yem0tMS43NSA5YzAgLjIzLS4wMi40Ni0uMDUuNjhsMS40OCAxLjE2Yy4xMy4xMS4xNy4zLjA4LjQ1bC0xLjQgMi40MmMtLjA5LjE1LS4yNy4yMS0uNDMuMTVsLTEuNzQtLjdjLS4zNi4yOC0uNzYuNTEtMS4xOC42OWwtLjI2IDEuODVjLS4wMy4xNy0uMTguMy0uMzUuM2gtMi44Yy0uMTcgMC0uMzItLjEzLS4zNS0uMjlsLS4yNi0xLjg1Yy0uNDMtLjE4LS44Mi0uNDEtMS4xOC0uNjlsLTEuNzQuN2MtLjE2LjA2LS4zNCAwLS40My0uMTVsLTEuNC0yLjQyYS4zNTMuMzUzIDAgMCAxIC4wOC0uNDVsMS40OC0xLjE2Yy0uMDMtLjIzLS4wNS0uNDYtLjA1LS42OSAwLS4yMy4wMi0uNDYuMDUtLjY4bC0xLjQ4LTEuMTZhLjM1My4zNTMgMCAwIDEtLjA4LS40NWwxLjQtMi40MmMuMDktLjE1LjI3LS4yMS40My0uMTVsMS43NC43Yy4zNi0uMjguNzYtLjUxIDEuMTgtLjY5bC4yNi0xLjg1Yy4wMy0uMTcuMTgtLjMuMzUtLjNoMi44Yy4xNyAwIC4zMi4xMy4zNS4yOWwuMjYgMS44NWMuNDMuMTguODIuNDEgMS4xOC42OWwxLjc0LS43Yy4xNi0uMDYuMzQgMCAuNDMuMTVsMS40IDIuNDJjLjA5LjE1LjA1LjM0LS4wOC40NWwtMS40OCAxLjE2Yy4wMy4yMy4wNS40Ni4wNS42OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NCYWNrdXBSZXN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTJjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAyIC45IDIgMiAyIDItLjkgMi0yem0tMi05YTkgOSAwIDAgMC05IDlIMGw0IDQgNC00SDVjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgN2E2Ljk5NSA2Ljk5NSAwIDAgMS0xMS4wNiA1LjdsLTEuNDIgMS40NEE5IDkgMCAxIDAgMTIgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NCbHVldG9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyNGgydi0yaC0ydjJ6bS00IDBoMnYtMkg3djJ6bTggMGgydi0yaC0ydjJ6bTIuNzEtMTguMjlMMTIgMGgtMXY3LjU5TDYuNDEgMyA1IDQuNDEgMTAuNTkgMTAgNSAxNS41OSA2LjQxIDE3IDExIDEyLjQxVjIwaDFsNS43MS01LjcxLTQuMy00LjI5IDQuMy00LjI5ek0xMyAzLjgzbDEuODggMS44OEwxMyA3LjU5VjMuODN6bTEuODggMTAuNDZMMTMgMTYuMTd2LTMuNzZsMS44OCAxLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXR0aW5nc0JyaWdodG5lc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOTloMTh2MTQuMDJ6TTggMTZoMi41bDEuNSAxLjUgMS41LTEuNUgxNnYtMi41bDEuNS0xLjUtMS41LTEuNVY4aC0yLjVMMTIgNi41IDEwLjUgOEg4djIuNUw2LjUgMTIgOCAxMy41VjE2em00LTdjMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDNWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NDZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyNGgydi0ySDd2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnpNMTYgLjAxIDggMEM2LjkgMCA2IC45IDYgMnYxNmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWMmMwLTEuMS0uOS0xLjk5LTItMS45OXpNMTYgMTZIOFY0aDh2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzRXRoZXJuZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljc3IDYuNzYgNi4yMyA1LjQ4LjgyIDEybDUuNDEgNi41MiAxLjU0LTEuMjhMMy40MiAxMmw0LjM1LTUuMjR6TTcgMTNoMnYtMkg3djJ6bTEwLTJoLTJ2Mmgydi0yem0tNiAyaDJ2LTJoLTJ2MnptNi43Ny03LjUyLTEuNTQgMS4yOEwyMC41OCAxMmwtNC4zNSA1LjI0IDEuNTQgMS4yOEwyMy4xOCAxMmwtNS40MS02LjUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXR0aW5nc0lucHV0QW50ZW5uYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVjLTMuODcgMC03IDMuMTMtNyA3aDJjMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNWgyYzAtMy44Ny0zLjEzLTctNy03em0xIDkuMjljLjg4LS4zOSAxLjUtMS4yNiAxLjUtMi4yOWEyLjUgMi41IDAgMCAwLTUgMGMwIDEuMDIuNjIgMS45IDEuNSAyLjI5djMuM0w3LjU5IDIxIDkgMjIuNDFsMy0zIDMgM0wxNi40MSAyMSAxMyAxNy41OXYtMy4zek0xMiAxQzUuOTMgMSAxIDUuOTMgMSAxMmgyYTkgOSAwIDAgMSAxOCAwaDJjMC02LjA3LTQuOTMtMTEtMTEtMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzSW5wdXRDb21wb25lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEgxdjZoNlY2SDVWMnptNCAxNGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThjMS4xNi0uNDEgMi0xLjUxIDItMi44MnYtMkg5djJ6bS04IDBjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4QzYuMTYgMTguNCA3IDE3LjMgNyAxNnYtMkgxdjJ6TTIxIDZWMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0aC0ydjZoNlY2aC0yem0tOC00YzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjRIOXY2aDZWNmgtMlYyem00IDE0YzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MSAyLTEuNTEgMi0yLjgydi0yaC02djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzSW5wdXRDb21wb3NpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEgxdjZoNlY2SDVWMnptNCAxNGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThjMS4xNi0uNDEgMi0xLjUxIDItMi44MnYtMkg5djJ6bS04IDBjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4QzYuMTYgMTguNCA3IDE3LjMgNyAxNnYtMkgxdjJ6TTIxIDZWMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0aC0ydjZoNlY2aC0yem0tOC00YzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjRIOXY2aDZWNmgtMlYyem00IDE0YzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MSAyLTEuNTEgMi0yLjgydi0yaC02djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzSW5wdXRIZG1pIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggN1Y0YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAydjNINXY2bDMgNnYzaDh2LTNsMy02VjdoLTF6TTggNGg4djNoLTJWNWgtMXYyaC0yVjVoLTF2Mkg4VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzSW5wdXRTdmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDExLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41UzUgMTAuNjcgNSAxMS41IDUuNjcgMTMgNi41IDEzIDggMTIuMzMgOCAxMS41em03LTVjMC0uODMtLjY3LTEuNS0xLjUtMS41aC0zQzkuNjcgNSA5IDUuNjcgOSA2LjVTOS42NyA4IDEwLjUgOGgzYy44MyAwIDEuNS0uNjcgMS41LTEuNXpNOC41IDE1Yy0uODMgMC0xLjUuNjctMS41IDEuNVM3LjY3IDE4IDguNSAxOHMxLjUtLjY3IDEuNS0xLjVTOS4zMyAxNSA4LjUgMTV6TTEyIDFDNS45MyAxIDEgNS45MyAxIDEyczQuOTMgMTEgMTEgMTEgMTEtNC45MyAxMS0xMVMxOC4wNyAxIDEyIDF6bTAgMjBjLTQuOTYgMC05LTQuMDQtOS05czQuMDQtOSA5LTkgOSA0LjA0IDkgOS00LjA0IDktOSA5em01LjUtMTFjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0tMiA1Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NPdmVyc2NhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjAxIDUuNSAxMCA4aDRsLTEuOTktMi41ek0xOCAxMHY0bDIuNS0xLjk5TDE4IDEwek02IDEwbC0yLjUgMi4wMUw2IDE0di00em04IDZoLTRsMi4wMSAyLjVMMTQgMTZ6bTctMTNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDloLTJ2MmgyVjl6bTQgMGgtMnYyaDJWOXptMyA2LjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3YTEuMDIgMS4wMiAwIDAgMC0xLjAyLjI0bC0yLjIgMi4yYTE1LjA3NCAxNS4wNzQgMCAwIDEtNi41OS02LjU4bDIuMi0yLjIxYy4yOC0uMjcuMzYtLjY2LjI1LTEuMDFBMTEuMzYgMTEuMzYgMCAwIDEgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6TTE5IDl2MmgyVjloLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzUG93ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDI0aDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem0yLTIyaC0ydjEwaDJWMnptMy41NiAyLjQ0LTEuNDUgMS40NUE1Ljk2OSA1Ljk2OSAwIDAgMSAxOCAxMWMwIDMuMzEtMi42OSA2LTYgNnMtNi0yLjY5LTYtNmMwLTIuMTcgMS4xNi00LjA2IDIuODgtNS4xMkw3LjQ0IDQuNDRBNy45NjEgNy45NjEgMCAwIDAgNCAxMWMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04YzAtMi43Mi0xLjM2LTUuMTItMy40NC02LjU2ek0xNSAyNGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzUmVtb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgOUg5Yy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTFWMTBjMC0uNTUtLjQ1LTEtMS0xem0tMyA2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpNNy4wNSA2LjA1bDEuNDEgMS40MWE1LjAyMiA1LjAyMiAwIDAgMSA3LjA4IDBsMS40MS0xLjQxQzE1LjY4IDQuNzggMTMuOTMgNCAxMiA0cy0zLjY4Ljc4LTQuOTUgMi4wNXpNMTIgMEM4Ljk2IDAgNi4yMSAxLjIzIDQuMjIgMy4yMmwxLjQxIDEuNDFDNy4yNiAzLjAxIDkuNTEgMiAxMiAyczQuNzQgMS4wMSA2LjM2IDIuNjRsMS40MS0xLjQxQzE3Ljc5IDEuMjMgMTUuMDQgMCAxMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXR0aW5nc1ZvaWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyNGgydi0ySDd2MnptNS0xMWMxLjY2IDAgMi45OS0xLjM0IDIuOTktM0wxNSA0YzAtMS42Ni0xLjM0LTMtMy0zUzkgMi4zNCA5IDR2NmMwIDEuNjYgMS4zNCAzIDMgM3ptLTEgMTFoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyem00LTE0aC0xLjdjMCAzLTIuNTQgNS4xLTUuMyA1LjFTNi43IDEzIDYuNyAxMEg1YzAgMy40MSAyLjcyIDYuMjMgNiA2LjcyVjIwaDJ2LTMuMjhjMy4yOC0uNDkgNi0zLjMxIDYtNi43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjE0IDEyLjk0Yy4wNC0uMy4wNi0uNjEuMDYtLjk0IDAtLjMyLS4wMi0uNjQtLjA3LS45NGwyLjAzLTEuNThhLjQ5LjQ5IDAgMCAwIC4xMi0uNjFsLTEuOTItMy4zMmEuNDg4LjQ4OCAwIDAgMC0uNTktLjIybC0yLjM5Ljk2Yy0uNS0uMzgtMS4wMy0uNy0xLjYyLS45NGwtLjM2LTIuNTRhLjQ4NC40ODQgMCAwIDAtLjQ4LS40MWgtMy44NGMtLjI0IDAtLjQzLjE3LS40Ny40MWwtLjM2IDIuNTRjLS41OS4yNC0xLjEzLjU3LTEuNjIuOTRsLTIuMzktLjk2Yy0uMjItLjA4LS40NyAwLS41OS4yMkwyLjc0IDguODdjLS4xMi4yMS0uMDguNDcuMTIuNjFsMi4wMyAxLjU4Yy0uMDUuMy0uMDkuNjMtLjA5Ljk0cy4wMi42NC4wNy45NGwtMi4wMyAxLjU4YS40OS40OSAwIDAgMC0uMTIuNjFsMS45MiAzLjMyYy4xMi4yMi4zNy4yOS41OS4yMmwyLjM5LS45NmMuNS4zOCAxLjAzLjcgMS42Mi45NGwuMzYgMi41NGMuMDUuMjQuMjQuNDEuNDguNDFoMy44NGMuMjQgMCAuNDQtLjE3LjQ3LS40MWwuMzYtMi41NGMuNTktLjI0IDEuMTMtLjU2IDEuNjItLjk0bDIuMzkuOTZjLjIyLjA4LjQ3IDAgLjU5LS4yMmwxLjkyLTMuMzJjLjEyLS4yMi4wNy0uNDctLjEyLS42MWwtMi4wMS0xLjU4ek0xMiAxNS42Yy0xLjk4IDAtMy42LTEuNjItMy42LTMuNnMxLjYyLTMuNiAzLjYtMy42IDMuNiAxLjYyIDMuNiAzLjYtMS42MiAzLjYtMy42IDMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2hvcDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDlIMXYxMWMwIDEuMTEuODkgMiAyIDJoMTZ2LTJIM1Y5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA1VjNjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDV2MTFjMCAxLjExLjg5IDIgMiAyaDE0YzEuMTEgMCAyLS44OSAyLTJWNWgtNXptLTYtMmg0djJoLTRWM3ptMCAxMlY4bDUuNSAzLjVMMTIgMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNob3BUd28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDlIMXYxMWMwIDEuMTEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjg5IDItMkgzVjl6bTE1LTRWM2MwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJINXYxMWMwIDEuMTEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjg5IDItMlY1aC01em0tNi0yaDR2MmgtNFYzem0wIDEyVjhsNS41IDMtNS41IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNob3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA2VjRjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDJ2MTNjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmgtNnptLTYtMmg0djJoLTRWNHpNOSAxOFY5bDcuNSA0TDkgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNob3BwaW5nQmFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNmgtMmMwLTIuMjEtMS43OS00LTQtNFM4IDMuNzkgOCA2SDZjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTggNGMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMVY4aDJ2MnptMi02YzEuMSAwIDIgLjkgMiAyaC00YzAtMS4xLjktMiAyLTJ6bTQgNmMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMVY4aDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2hvcHBpbmdCYXNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy4yMSA5LTQuMzgtNi41NmEuOTkzLjk5MyAwIDAgMC0uODMtLjQyYy0uMzIgMC0uNjQuMTQtLjgzLjQzTDYuNzkgOUgyYy0uNTUgMC0xIC40NS0xIDEgMCAuMDkuMDEuMTguMDQuMjdsMi41NCA5LjI3Yy4yMy44NCAxIDEuNDYgMS45MiAxLjQ2aDEzYy45MiAwIDEuNjktLjYyIDEuOTMtMS40NmwyLjU0LTkuMjdMMjMgMTBjMC0uNTUtLjQ1LTEtMS0xaC00Ljc5ek05IDlsMy00LjRMMTUgOUg5em0zIDhjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaG9wcGluZ0NhcnRDaGVja291dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMThjLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6bTEwIDBjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyIDItLjkgMi0yLS45LTItMi0yem0tOC45LTVoNy40NWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNMMjEgNC45NiAxOS4yNSA0bC0zLjcgN0g4LjUzTDQuMjcgMkgxdjJoMmwzLjYgNy41OS0xLjM1IDIuNDRDNC41MiAxNS4zNyA1LjQ4IDE3IDcgMTdoMTJ2LTJIN2wxLjEtMnpNMTIgMmw0IDQtNCA0LTEuNDEtMS40MUwxMi4xNyA3SDhWNWg0LjE3bC0xLjU5LTEuNTlMMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2hvcHBpbmdDYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOGMtMS4xIDAtMS45OS45LTEuOTkgMlM1LjkgMjIgNyAyMnMyLS45IDItMi0uOS0yLTItMnpNMSAydjJoMmwzLjYgNy41OS0xLjM1IDIuNDVjLS4xNi4yOC0uMjUuNjEtLjI1Ljk2IDAgMS4xLjkgMiAyIDJoMTJ2LTJINy40MmMtLjE0IDAtLjI1LS4xMS0uMjUtLjI1bC4wMy0uMTIuOS0xLjYzaDcuNDVjLjc1IDAgMS40MS0uNDEgMS43NS0xLjAzbDMuNTgtNi40OUExLjAwMyAxLjAwMyAwIDAgMCAyMCA0SDUuMjFsLS45NC0ySDF6bTE2IDE2Yy0xLjEgMC0xLjk5LjktMS45OSAycy44OSAyIDEuOTkgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU21hcnRCdXR0b24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA5djZjMCAxLjEtLjkgMi0yIDJoLTF2LTJoMVY5SDR2Nmg2djJINGMtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDE2YzEuMSAwIDIgLjkgMiAyem0tNy41IDEwIDEuMDktMi40MUwxOCAxNS41bC0yLjQxLTEuMDlMMTQuNSAxMmwtMS4wOSAyLjQxTDExIDE1LjVsMi40MSAxLjA5TDE0LjUgMTl6bTIuNS01IC42Mi0xLjM4TDE5IDEybC0xLjM4LS42MkwxNyAxMGwtLjYyIDEuMzhMMTUgMTJsMS4zOC42MkwxNyAxNHptLTIuNSA1IDEuMDktMi40MUwxOCAxNS41bC0yLjQxLTEuMDlMMTQuNSAxMmwtMS4wOSAyLjQxTDExIDE1LjVsMi40MSAxLjA5TDE0LjUgMTl6bTIuNS01IC42Mi0xLjM4TDE5IDEybC0xLjM4LS42MkwxNyAxMGwtLjYyIDEuMzhMMTUgMTJsMS4zOC42MkwxNyAxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU291cmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS02IDEwSDZ2LTJoOHYyem00LTRINnYtMmgxMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGFjZURhc2hib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDIxSDVjLTEuMSAwLTItLjktMi0yVjVjMC0xLjEuOS0yIDItMmg2djE4em0yIDBoNmMxLjEgMCAyLS45IDItMnYtN2gtOHY5em04LTExVjVjMC0xLjEtLjktMi0yLTJoLTZ2N2g4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGF0aWFsQXVkaW9PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiOVwiLFwiclwiOlwiNFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4zOSAxNS41NkMxNC43MSAxNC43IDEyLjUzIDE0IDEwIDE0cy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCAyIDE4LjIyVjIxaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTIwLjM2IDFsLTEuNDEgMS40MWE3LjAwNyA3LjAwNyAwIDAgMSAwIDkuOWwxLjQxIDEuNDFhOC45OCA4Ljk4IDAgMCAwIDAtMTIuNzJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjU0IDEwLjlhNS4wMDMgNS4wMDMgMCAwIDAgMC03LjA3bC0xLjQxIDEuNDFhMyAzIDAgMCAxIDAgNC4yNGwxLjQxIDEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwYXRpYWxBdWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI5XCIsXCJyXCI6XCI0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjM5IDE1LjU2QzE0LjcxIDE0LjcgMTIuNTMgMTQgMTAgMTRzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDIgMTguMjJWMjFoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpNMTYgMWgtMmE5IDkgMCAwIDAgOSA5VjhjLTMuODYgMC03LTMuMTQtNy03elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxaC0yYzAgMi43NiAyLjI0IDUgNSA1VjRjLTEuNjUgMC0zLTEuMzUtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGF0aWFsVHJhY2tpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiOVwiLFwiclwiOlwiNFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4zOSAxNS41NkMxNC43MSAxNC43IDEyLjUzIDE0IDEwIDE0cy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCAyIDE4LjIyVjIxaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTIwLjA1IDIuNDEgMTguNjQgMWMtMy41MSAzLjUxLTMuNTEgOS4yMSAwIDEyLjczbDEuNDEtMS40MWMtMi43My0yLjc0LTIuNzMtNy4xOCAwLTkuOTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjg4IDUuMjQtMS40MS0xLjQxYTUuMDAzIDUuMDAzIDAgMCAwIDAgNy4wN2wxLjQxLTEuNDFhMy4wMTIgMy4wMTIgMCAwIDEgMC00LjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGVha2VyTm90ZXNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMC41NCAxMS0uNTQtLjU0TDcuNTQgOCA2IDYuNDYgMi4zOCAyLjg0IDEuMjcgMS43MyAwIDNsMi4wMSAyLjAxTDIgMjJsNC00aDlsNS43MyA1LjczTDIyIDIyLjQ2IDE3LjU0IDE4bC03LTd6TTggMTRINnYtMmgydjJ6bS0yLTNWOWwyIDJINnptMTQtOUg0LjA4TDEwIDcuOTJWNmg4djJoLTcuOTJsMSAxSDE4djJoLTQuOTJsNi45OSA2Ljk5QzIxLjE0IDE3Ljk1IDIyIDE3LjA4IDIyIDE2VjRjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwZWFrZXJOb3RlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek04IDE0SDZ2LTJoMnYyem0wLTNINlY5aDJ2MnptMC0zSDZWNmgydjJ6bTcgNmgtNXYtMmg1djJ6bTMtM2gtOFY5aDh2MnptMC0zaC04VjZoOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGVsbGNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNDUgMTZoMi4wOUw5LjQzIDNINy41N0wyLjQ2IDE2aDIuMDlsMS4xMi0zaDUuNjRsMS4xNCAzem0tNi4wMi01TDguNSA1LjQ4IDEwLjU3IDExSDYuNDN6bTE1LjE2LjU5LTguMDkgOC4wOUw5LjgzIDE2bC0xLjQxIDEuNDEgNS4wOSA1LjA5TDIzIDEzbC0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0YXJSYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNDMgMTAgMTIgMmwtMi40MyA4SDJsNi4xOCA0LjQxTDUuODMgMjIgMTIgMTcuMzEgMTguMTggMjJsLTIuMzUtNy41OUwyMiAxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyem00LjI0IDE2TDEyIDE1LjQ1IDcuNzcgMThsMS4xMi00LjgxLTMuNzMtMy4yMyA0LjkyLS40MkwxMiA1bDEuOTIgNC41MyA0LjkyLjQyLTMuNzMgMy4yM0wxNi4yMyAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RpY2t5Tm90ZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDQuOTlDMy44OSAzIDMgMy45IDMgNWwuMDEgMTRjMCAxLjEuODkgMiAxLjk5IDJoMTBsNi02VjVjMC0xLjEtLjktMi0yLTJ6TTcgOGgxMHYySDdWOHptNSA2SDd2LTJoNXYyem0yIDUuNVYxNGg1LjVMMTQgMTkuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDR2MmgxNlY0em0xIDEwdi0ybC0xLTVINGwtMSA1djJoMXY2aDEwdi02aDR2Nmgydi02aDF6bS05IDRINnYtNGg2djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN1YmplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxN0g0djJoMTB2LTJ6bTYtOEg0djJoMTZWOXpNNCAxNWgxNnYtMkg0djJ6TTQgNXYyaDE2VjVINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3VidGl0bGVzT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg2LjgzbDggOEgyMHYyaC0zLjE3bDQuOTMgNC45M2MuMTUtLjI4LjI0LS41OS4yNC0uOTNWNmMwLTEuMS0uOS0yLTItMnpNMS4wNCAzLjg3bDEuMiAxLjJDMi4wOSA1LjM1IDIgNS42NiAyIDZ2MTJjMCAxLjEuOSAyIDIgMmgxMy4xN2wyLjk2IDIuOTYgMS40MS0xLjQxTDIuNDUgMi40NSAxLjA0IDMuODd6TTggMTJ2Mkg0di0yaDR6bTYgNC44M1YxOEg0di0yaDkuMTdsLjgzLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdXBlcnZpc2VkVXNlckNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJjLTUuNTIgMC0xMCA0LjQ4LTEwIDEwczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMC00LjQ4LTEwLTEwLTEwem0zLjYxIDYuMzRjMS4wNyAwIDEuOTMuODYgMS45MyAxLjkzIDAgMS4wNy0uODYgMS45My0xLjkzIDEuOTMtMS4wNyAwLTEuOTMtLjg2LTEuOTMtMS45My0uMDEtMS4wNy44Ni0xLjkzIDEuOTMtMS45M3ptLTYtMS41OGMxLjMgMCAyLjM2IDEuMDYgMi4zNiAyLjM2IDAgMS4zLTEuMDYgMi4zNi0yLjM2IDIuMzZzLTIuMzYtMS4wNi0yLjM2LTIuMzZjMC0xLjMxIDEuMDUtMi4zNiAyLjM2LTIuMzZ6bTAgOS4xM3YzLjc1Yy0yLjQtLjc1LTQuMy0yLjYtNS4xNC00Ljk2IDEuMDUtMS4xMiAzLjY3LTEuNjkgNS4xNC0xLjY5LjUzIDAgMS4yLjA4IDEuOS4yMi0xLjY0Ljg3LTEuOSAyLjAyLTEuOSAyLjY4ek0xMS45OSAyMGMtLjI3IDAtLjUzLS4wMS0uNzktLjA0di00LjA3YzAtMS40MiAyLjk0LTIuMTMgNC40LTIuMTMgMS4wNyAwIDIuOTIuMzkgMy44NCAxLjE1LTEuMTcgMi45Ny00LjA2IDUuMDktNy40NSA1LjA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdXBlcnZpc29yQWNjb3VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgMTJjMS4zOCAwIDIuNDktMS4xMiAyLjQ5LTIuNVMxNy44OCA3IDE2LjUgN2EyLjUgMi41IDAgMCAwIDAgNXpNOSAxMWMxLjY2IDAgMi45OS0xLjM0IDIuOTktM1MxMC42NiA1IDkgNUM3LjM0IDUgNiA2LjM0IDYgOHMxLjM0IDMgMyAzem03LjUgM2MtMS44MyAwLTUuNS45Mi01LjUgMi43NVYxOWgxMXYtMi4yNWMwLTEuODMtMy42Ny0yLjc1LTUuNS0yLjc1ek05IDEzYy0yLjMzIDAtNyAxLjE3LTcgMy41VjE5aDd2LTIuMjVjMC0uODUuMzMtMi4zNCAyLjM3LTMuNDdDMTAuNSAxMy4xIDkuNjYgMTMgOSAxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3VwcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTcuNDYgNy4xMi0yLjc4IDEuMTVhNC45ODIgNC45ODIgMCAwIDAtMi45NS0yLjk0bDEuMTUtMi43OGMyLjEuOCAzLjc3IDIuNDcgNC41OCA0LjU3ek0xMiAxNWMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6TTkuMTMgNC41NGwxLjE3IDIuNzhhNSA1IDAgMCAwLTIuOTggMi45N0w0LjU0IDkuMTNhNy45ODQgNy45ODQgMCAwIDEgNC41OS00LjU5ek00LjU0IDE0Ljg3bDIuNzgtMS4xNWE0Ljk2OCA0Ljk2OCAwIDAgMCAyLjk3IDIuOTZsLTEuMTcgMi43OGE3Ljk5NiA3Ljk5NiAwIDAgMS00LjU4LTQuNTl6bTEwLjM0IDQuNTktMS4xNS0yLjc4YTQuOTc4IDQuOTc4IDAgMCAwIDIuOTUtMi45N2wyLjc4IDEuMTdhOC4wMDcgOC4wMDcgMCAwIDEtNC41OCA0LjU4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2FwSG9yaXogKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02Ljk5IDExIDMgMTVsMy45OSA0di0zSDE0di0ySDYuOTl2LTN6TTIxIDlsLTMuOTktNHYzSDEwdjJoNy4wMXYzTDIxIDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3YXBIb3Jpem9udGFsQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMFMyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTB6bS03LTUuNSAzLjUgMy41LTMuNSAzLjVWMTFoLTRWOWg0VjYuNXptLTYgMTFMNS41IDE0IDkgMTAuNVYxM2g0djJIOXYyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3YXBWZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTcuMDFWMTBoLTJ2Ny4wMWgtM0wxNSAyMWw0LTMuOTloLTN6TTkgMyA1IDYuOTloM1YxNGgyVjYuOTloM0w5IDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3YXBWZXJ0aWNhbENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTYuNSA5IDEwIDUuNSAxMy41IDlIMTF2NEg5VjlINi41em0xMSA2TDE0IDE4LjUgMTAuNSAxNUgxM3YtNGgydjRoMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2lwZURvd25BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMy45YTUgNSAwIDEgMC0yIDB2NC4yN2wtMS41OS0xLjU5TDggMThsNCA0IDQtNC0xLjQxLTEuNDFMMTMgMTguMTdWMTMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3dpcGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy44IDEyLjE4Yy0uMi0uODYtLjMtMS43Ni0uMy0yLjY4IDAtMi44NC45OS01LjQ1IDIuNjMtNy41TDcuMiAzLjA3YTEwLjQ1NyAxMC40NTcgMCAwIDAtMS44OCA4Ljk5bDEuNjItMS42Mkw4IDExLjUgNC41IDE1IDEgMTEuNWwxLjA2LTEuMDYgMS43NCAxLjc0em0xMC4wNS0uNTYtMi42OC01LjM3YTEuNDk4IDEuNDk4IDAgMCAwLTIuMDEtLjY3Yy0uNzUuMzgtMS4wNSAxLjI4LS42OCAyLjAybDQuODEgOS42LTMuMjQuOGMtLjMzLjA5LS41OS4zMy0uNy42Nkw5IDE5Ljc4bDYuMTkgMi4yNWMuNS4xNyAxLjI4LjAyIDEuNzUtLjIybDUuNTEtMi43NWMuODktLjQ1IDEuMzItMS40OCAxLTIuNDJsLTEuNDMtNC4yN2EyIDIgMCAwIDAtMS45LTEuMzdoLTQuNTZjLS4zMSAwLS42Mi4wNy0uODkuMjFsLS44Mi40MVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2lwZUxlZnRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4xIDEzYTUgNSAwIDEgMCAwLTJINS44M2wxLjU5LTEuNTlMNiA4bC00IDQgNCA0IDEuNDEtMS40MUw1LjgzIDEzaDQuMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXBlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljk4IDE2LjgyLS42MyA0LjQ2Yy0uMTQuOTktLjk5IDEuNzItMS45OCAxLjcyaC02LjE2Yy0uNTMgMC0xLjI5LS4yMS0xLjY2LS41OUw1IDE3LjYybC44My0uODRjLjI0LS4yNC41OC0uMzUuOTItLjI4bDMuMjUuNzRWNi41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41djZoLjkxYy4zMSAwIC42Mi4wNy44OS4yMWw0LjA5IDIuMDRjLjc3LjM5IDEuMjEgMS4yMiAxLjA5IDIuMDd6TTEyIDIuNWM0Ljc0IDAgNy42NyAyLjUyIDguNDMgNC41SDIyYy0uNzMtMi44OC00LjUxLTYtMTAtNi0zLjIyIDAtNi4xOCAxLjEzLTguNSAzLjAyVjJIMnY1aDVWNS41SDQuMDljMi4xMi0xLjg2IDQuODgtMyA3LjkxLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXBlUmlnaHRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy45IDExYTUgNSAwIDEgMCAwIDJoNC4yN2wtMS41OSAxLjU5TDE4IDE2bDQtNC00LTQtMS40MSAxLjQxTDE4LjE3IDExSDEzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXBlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS45OCAxNi44Mi0uNjMgNC40NmMtLjE0Ljk5LS45OSAxLjcyLTEuOTggMS43MmgtNi4xNmMtLjUzIDAtMS4yOS0uMjEtMS42Ni0uNTlMNSAxNy42MmwuODMtLjg0Yy4yNC0uMjQuNTgtLjM1LjkyLS4yOGwzLjI1Ljc0VjYuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNXY2aC45MWMuMzEgMCAuNjIuMDcuODkuMjFsNC4wOSAyLjA0Yy43Ny4zOSAxLjIxIDEuMjIgMS4wOSAyLjA3ek0xOS45MSA1LjVIMTdWN2g1VjJoLTEuNXYyLjAyQTEzLjQxMyAxMy40MTMgMCAwIDAgMTIgMUM2LjUxIDEgMi43MyA0LjEyIDIgN2gxLjU3QzQuMzMgNS4wMiA3LjI2IDIuNSAxMiAyLjVjMy4wMyAwIDUuNzkgMS4xNCA3LjkxIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXBlVXBBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMyA1LjgzIDEuNTkgMS41OUwxNiA2bC00LTQtNCA0IDEuNDEgMS40MUwxMSA1LjgzdjQuMjdhNSA1IDAgMSAwIDIgMFY1LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2lwZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi4wNiA1LjU2IDEgNC41IDQuNSAxIDggNC41IDYuOTQgNS41NiA1LjMyIDMuOTRhMTAuNDU3IDEwLjQ1NyAwIDAgMCAxLjg4IDguOTlMNi4xMyAxNEExMS45NzQgMTEuOTc0IDAgMCAxIDMuNSA2LjVjMC0uOTIuMS0xLjgyLjMtMi42OEwyLjA2IDUuNTZ6bTExLjc5IDYuMDYtMi42OC01LjM3YTEuNDk4IDEuNDk4IDAgMCAwLTIuMDEtLjY3Yy0uNzUuMzgtMS4wNSAxLjI4LS42OCAyLjAybDQuODEgOS42LTMuMjQuOGMtLjMzLjA5LS41OS4zMy0uNy42Nkw5IDE5Ljc4bDYuMTkgMi4yNWMuNS4xNyAxLjI4LjAyIDEuNzUtLjIybDUuNTEtMi43NWMuODktLjQ1IDEuMzItMS40OCAxLTIuNDJsLTEuNDMtNC4yN2EyIDIgMCAwIDAtMS45LTEuMzdoLTQuNTZjLS4zMSAwLS42Mi4wNy0uODkuMjFsLS44Mi40MVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2lwZVZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAzLjVoMi4wMkMxLjEzIDUuODIgMCA4Ljc4IDAgMTJzMS4xMyA2LjE4IDMuMDIgOC41SDFWMjJoNXYtNUg0LjV2Mi45MWMtMS44Ni0yLjExLTMtNC44OC0zLTcuOTFzMS4xNC01Ljc5IDMtNy45MVY3SDZWMkgxdjEuNXptMTIuODUgOC4xMi0yLjY4LTUuMzdhMS40OTggMS40OTggMCAwIDAtMi4wMS0uNjdjLS43NS4zOC0xLjA1IDEuMjgtLjY4IDIuMDJsNC44MSA5LjYtMy4yNC44Yy0uMzMuMDktLjU5LjMzLS43LjY2TDkgMTkuNzhsNi4xOSAyLjI1Yy41LjE3IDEuMjguMDIgMS43NS0uMjJsNS41MS0yLjc1Yy44OS0uNDUgMS4zMi0xLjQ4IDEtMi40MmwtMS40My00LjI3YTIgMiAwIDAgMC0xLjktMS4zN2gtNC41NmMtLjMxIDAtLjYyLjA3LS44OS4yMWwtLjgyLjQxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguODkgMTQuNzUtNC4wOS0yLjA0Yy0uMjgtLjE0LS41OC0uMjEtLjg5LS4yMUgxM3YtNmMwLS44My0uNjctMS41LTEuNS0xLjVTMTAgNS42NyAxMCA2LjV2MTAuNzRsLTMuMjUtLjc0YS45OS45OSAwIDAgMC0uOTIuMjhsLS44My44NCA0LjU0IDQuNzljLjM4LjM4IDEuMTQuNTkgMS42Ny41OWg2LjE2YzEgMCAxLjg0LS43MyAxLjk4LTEuNzJsLjYzLTQuNDZjLjEyLS44NS0uMzItMS42OC0xLjA5LTIuMDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjEzIDMuODdDMTguNjkgMi4xNyAxNS42IDEgMTIgMVM1LjMxIDIuMTcgMy44NyAzLjg3TDIgMnY1aDVMNC45MyA0LjkzYzEtMS4yOSAzLjctMi40MyA3LjA3LTIuNDNzNi4wNyAxLjE0IDcuMDcgMi40M0wxNyA3aDVWMmwtMS44NyAxLjg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2l0Y2hBY2Nlc3NTaG9ydGN1dEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDE0aC0ydi0yaC0ydjJoLTJ2MmgydjJoMnYtMmgydi0yek03LjA2IDguOTQgNSA4bDIuMDYtLjk0TDggNWwuOTQgMi4wNkwxMSA4bC0yLjA2Ljk0TDggMTFsLS45NC0yLjA2ek04IDIxbC45NC0yLjA2TDExIDE4bC0yLjA2LS45NEw4IDE1bC0uOTQgMi4wNkw1IDE4bDIuMDYuOTRMOCAyMXptLTMuNjMtOC42M0wzIDEzbDEuMzcuNjNMNSAxNWwuNjMtMS4zN0w3IDEzbC0xLjM3LS42M0w1IDExbC0uNjMgMS4zN3pNMTIgMTJjMC0yLjczIDEuMDgtNS4yNyAyLjc1LTcuMjVMMTIgMmg3djdsLTIuODItMi44MkMxNC44NCA3LjgyIDE0IDkuODggMTQgMTJjMCAzLjMyIDIuMSA2LjM2IDUgNy44MlYyMmMtNC4wOS0xLjU5LTctNS42NS03LTEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2l0Y2hBY2Nlc3NTaG9ydGN1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMDYgOC45NCA1IDhsMi4wNi0uOTRMOCA1bC45NCAyLjA2TDExIDhsLTIuMDYuOTRMOCAxMWwtLjk0LTIuMDZ6TTggMjFsLjk0LTIuMDZMMTEgMThsLTIuMDYtLjk0TDggMTVsLS45NCAyLjA2TDUgMThsMi4wNi45NEw4IDIxem0tMy42My04LjYzTDMgMTNsMS4zNy42M0w1IDE1bC42My0xLjM3TDcgMTNsLTEuMzctLjYzTDUgMTFsLS42MyAxLjM3ek0xMiAxMmMwLTIuNzMgMS4wOC01LjI3IDIuNzUtNy4yNUwxMiAyaDd2N2wtMi44Mi0yLjgyQzE0Ljg0IDcuODIgMTQgOS44OCAxNCAxMmMwIDMuMzIgMi4xIDYuMzYgNSA3LjgyVjIyYy00LjA5LTEuNTktNy01LjY1LTctMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN5bmNBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCAxMiA0LTQtNC00djNIM3YyaDE1ek02IDEybC00IDQgNCA0di0zaDE1di0ySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN5c3RlbVVwZGF0ZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAuNWgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxNi41IDQtNGgtM3YtOWgtMnY5SDhsNCA0em05LTEzaC02djEuOTloNnYxNC4wM0gzVjUuNDloNlYzLjVIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnYtMTRjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhYlVuc2VsZWN0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDloMlY3SDF2MnptMCA0aDJ2LTJIMXYyem0wLThoMlYzYy0xLjEgMC0yIC45LTIgMnptOCAxNmgydi0ySDl2MnptLTgtNGgydi0ySDF2MnptMiA0di0ySDFjMCAxLjEuOSAyIDIgMnpNMjEgM2gtOHY2aDEwVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTRoMnYtMmgtMnYyek05IDVoMlYzSDl2MnpNNSAyMWgydi0ySDV2MnpNNSA1aDJWM0g1djJ6bTE2IDE2YzEuMSAwIDItLjkgMi0yaC0ydjJ6bTAtOGgydi0yaC0ydjJ6bS04IDhoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkgzVjVoMTB2NGg4djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYWJsZVZpZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3SDljLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnptMCAydjJIOVY5aDEwem0tNiA2di0yaDJ2MmgtMnptMiAydjJoLTJ2LTJoMnptLTQtMkg5di0yaDJ2MnptNi0yaDJ2MmgtMnYtMnptLTggNGgydjJIOXYtMnptOCAydi0yaDJ2MmgtMnpNNiAxN0g1Yy0xLjEgMC0yLS45LTItMlY1YzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDJ2MWgtMlY1SDV2MTBoMXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYXNrQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNS4xOCAxMC41OSAxNi42bC00LjI0LTQuMjQgMS40MS0xLjQxIDIuODMgMi44MyAxMC0xMEwyMiA1LjE4em0tMi4yMSA1LjA0Yy4xMy41Ny4yMSAxLjE3LjIxIDEuNzggMCA0LjQyLTMuNTggOC04IDhzLTgtMy41OC04LTggMy41OC04IDgtOGMxLjU4IDAgMy4wNC40NiA0LjI4IDEuMjVsMS40NC0xLjQ0QTkuOSA5LjkgMCAwIDAgMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwYzAtMS4xOS0uMjItMi4zMy0uNi0zLjM5bC0xLjYxIDEuNjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRlcm1pbmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YTIgMiAwIDAgMC0yLTJ6bTAgMTRINFY4aDE2djEwem0tMi0xaC02di0yaDZ2MnpNNy41IDE3bC0xLjQxLTEuNDFMOC42NyAxM2wtMi41OS0yLjU5TDcuNSA5bDQgNC00IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRleHRSb3RhdGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTJ2MS41bDExIDQuNzV2LTIuMWwtMi4yLS45di01bDIuMi0uOXYtMi4xTDMgMTJ6bTcgMi42Mi01LjAyLTEuODdMMTAgMTAuODh2My43NHptOC0xMC4zNy0zIDNoMnYxMi41aDJWNy4yNWgybC0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRleHRSb3RhdGVWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ljc1IDVoLTEuNUw5LjUgMTZoMi4xbC45LTIuMmg1bC45IDIuMmgyLjFMMTUuNzUgNXptLTIuNjIgN0wxNSA2Ljk4IDE2Ljg3IDEyaC0zLjc0ek02IDE5Ljc1bDMtM0g3VjQuMjVINXYxMi41SDNsMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUZXh0Um90YXRpb25BbmdsZWRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS40IDQuOTEtMS4wNi0xLjA2TDcuMiA4LjI3bDEuNDggMS40OCAyLjE5LS45MiAzLjU0IDMuNTQtLjkyIDIuMTkgMS40OCAxLjQ4TDE5LjQgNC45MXptLTYuODEgMy4xIDQuODctMi4yMy0yLjIzIDQuODctMi42NC0yLjY0ek0xNC4yNyAyMXYtNC4yNGwtMS40MSAxLjQxLTguODQtOC44NC0xLjQyIDEuNDIgOC44NCA4Ljg0TDEwLjAzIDIxaDQuMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRleHRSb3RhdGlvbkFuZ2xldXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjQ5IDQuMjEgMy40MyA1LjI3IDcuODUgMTYuNGwxLjQ4LTEuNDgtLjkyLTIuMTkgMy41NC0zLjU0IDIuMTkuOTIgMS40OC0xLjQ4TDQuNDkgNC4yMXptMy4wOSA2LjhMNS4zNiA2LjE0bDQuODcgMi4yMy0yLjY1IDIuNjR6bTEyLjk5LTEuNjhoLTQuMjRsMS40MSAxLjQxLTguODQgOC44NEwxMC4zMiAyMWw4Ljg0LTguODQgMS40MSAxLjQxVjkuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRleHRSb3RhdGlvbkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMnYtMS41TDEwIDUuNzV2Mi4xbDIuMi45djVsLTIuMi45djIuMUwyMSAxMnptLTctMi42MiA1LjAyIDEuODdMMTQgMTMuMTJWOS4zOHpNNiAxOS43NWwzLTNIN1Y0LjI1SDV2MTIuNUgzbDMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dFJvdGF0aW9uTm9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjc1IDNoLTEuNUw2LjUgMTRoMi4xbC45LTIuMmg1bC45IDIuMmgyLjFMMTIuNzUgM3ptLTIuNjIgN0wxMiA0Ljk4IDEzLjg3IDEwaC0zLjc0em0xMC4zNyA4LTMtM3YySDV2MmgxMi41djJsMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaGVhdGVycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDN2MmgtMlYzSDh2Mkg2VjNINHYxOGgydi0yaDJ2Mmg4di0yaDJ2MmgyVjNoLTJ6TTggMTdINnYtMmgydjJ6bTAtNEg2di0yaDJ2MnptMC00SDZWN2gydjJ6bTEwIDhoLTJ2LTJoMnYyem0wLTRoLTJ2LTJoMnYyem0wLTRoLTJWN2gydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRodW1iRG93bk9mZkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMjRIMFYwaDI0djI0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMC44OSAxOC4yOC41Ny0yLjg5Yy4xMi0uNTktLjA0LTEuMi0uNDItMS42Ni0uMzgtLjQ2LS45NC0uNzMtMS41NC0uNzNINHYtMS4wOEw2LjU3IDZoOC4wOWMuMTggMCAuMzQuMTYuMzQuMzR2Ny44NGwtNC4xMSA0LjFNMTAgMjJsNi40MS02LjQxYy4zOC0uMzguNTktLjg5LjU5LTEuNDJWNi4zNEMxNyA1LjA1IDE1Ljk1IDQgMTQuNjYgNGgtOC4xYy0uNzEgMC0xLjM2LjM3LTEuNzIuOTdsLTIuNjcgNi4xNWMtLjExLjI1LS4xNy41Mi0uMTcuOFYxM2MwIDEuMS45IDIgMiAyaDUuNWwtLjkyIDQuNjVjLS4wNS4yMi0uMDIuNDYuMDguNjYuMjMuNDUuNTIuODYuODggMS4yMkwxMCAyMnptMTAtN2gyVjRoLTJjLS41NSAwLTEgLjQ1LTEgMXY5YzAgLjU1LjQ1IDEgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaHVtYkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAzSDZjLS44MyAwLTEuNTQuNS0xLjg0IDEuMjJsLTMuMDIgNy4wNWMtLjA5LjIzLS4xNC40Ny0uMTQuNzN2MmMwIDEuMS45IDIgMiAyaDYuMzFsLS45NSA0LjU3LS4wMy4zMmMwIC40MS4xNy43OS40NCAxLjA2TDkuODMgMjNsNi41OS02LjU5Yy4zNi0uMzYuNTgtLjg2LjU4LTEuNDFWNWMwLTEuMS0uOS0yLTItMnptNCAwdjEyaDRWM2gtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGh1bWJVcE9mZkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuMTEgNS43Mi0uNTcgMi44OWMtLjEyLjU5LjA0IDEuMi40MiAxLjY2LjM4LjQ2Ljk0LjczIDEuNTQuNzNIMjB2MS4wOEwxNy40MyAxOEg5LjM0YS4zNS4zNSAwIDAgMS0uMzQtLjM0VjkuODJsNC4xMS00LjFNMTQgMiA3LjU5IDguNDFDNy4yMSA4Ljc5IDcgOS4zIDcgOS44M3Y3LjgzQzcgMTguOTUgOC4wNSAyMCA5LjM0IDIwaDguMWMuNzEgMCAxLjM2LS4zNyAxLjcyLS45N2wyLjY3LTYuMTVjLjExLS4yNS4xNy0uNTIuMTctLjhWMTFjMC0xLjEtLjktMi0yLTJoLTUuNWwuOTItNC42NWMuMDUtLjIyLjAyLS40Ni0uMDgtLjY2YTQuOCA0LjggMCAwIDAtLjg4LTEuMjJMMTQgMnpNNCA5SDJ2MTFoMmMuNTUgMCAxLS40NSAxLTF2LTljMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaHVtYlVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDIxaDRWOUgxdjEyem0yMi0xMWMwLTEuMS0uOS0yLTItMmgtNi4zMWwuOTUtNC41Ny4wMy0uMzJjMC0uNDEtLjE3LS43OS0uNDQtMS4wNkwxNC4xNyAxIDcuNTkgNy41OUM3LjIyIDcuOTUgNyA4LjQ1IDcgOXYxMGMwIDEuMS45IDIgMiAyaDljLjgzIDAgMS41NC0uNSAxLjg0LTEuMjJsMy4wMi03LjA1Yy4wOS0uMjMuMTQtLjQ3LjE0LS43M3YtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGh1bWJzVXBEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMwLS41NS0uNDUtMS0xLTFINS44MmwuNjYtMy4xOC4wMi0uMjNjMC0uMzEtLjEzLS41OS0uMzMtLjhMNS4zOCAwIC40NCA0Ljk0Qy4xNyA1LjIxIDAgNS41OSAwIDZ2Ni41YzAgLjgzLjY3IDEuNSAxLjUgMS41aDYuNzVjLjYyIDAgMS4xNS0uMzggMS4zOC0uOTFsMi4yNi01LjI5Yy4wNy0uMTcuMTEtLjM2LjExLS41NVY2em0xMC41IDRoLTYuNzVjLS42MiAwLTEuMTUuMzgtMS4zOC45MWwtMi4yNiA1LjI5Yy0uMDcuMTctLjExLjM2LS4xMS41NVYxOGMwIC41NS40NSAxIDEgMWg1LjE4bC0uNjYgMy4xOC0uMDIuMjRjMCAuMzEuMTMuNTkuMzMuOGwuNzkuNzggNC45NC00Ljk0Yy4yNy0uMjcuNDQtLjY1LjQ0LTEuMDZ2LTYuNWMwLS44My0uNjctMS41LTEuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRpbWVsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgOGMwIDEuMS0uOSAyLTIgMmExLjcgMS43IDAgMCAxLS41MS0uMDdsLTMuNTYgMy41NWMuMDUuMTYuMDcuMzQuMDcuNTIgMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yYzAtLjE4LjAyLS4zNi4wNy0uNTJsLTIuNTUtMi41NWMtLjE2LjA1LS4zNC4wNy0uNTIuMDdzLS4zNi0uMDItLjUyLS4wN2wtNC41NSA0LjU2Yy4wNS4xNi4wNy4zMy4wNy41MSAwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTJjLjE4IDAgLjM1LjAyLjUxLjA3bDQuNTYtNC41NUM4LjAyIDkuMzYgOCA5LjE4IDggOWMwLTEuMS45LTIgMi0yczIgLjkgMiAyYzAgLjE4LS4wMi4zNi0uMDcuNTJsMi41NSAyLjU1Yy4xNi0uMDUuMzQtLjA3LjUyLS4wN3MuMzYuMDIuNTIuMDdsMy41NS0zLjU2QTEuNyAxLjcgMCAwIDEgMTkgOGMwLTEuMS45LTIgMi0yczIgLjkgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaXBzQW5kVXBkYXRlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMjBoNGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJ6bS0yLTFoOHYtMkg1djJ6bTExLjUtOS41YzAgMy44Mi0yLjY2IDUuODYtMy43NyA2LjVINS4yN2MtMS4xMS0uNjQtMy43Ny0yLjY4LTMuNzctNi41QzEuNSA1LjM2IDQuODYgMiA5IDJzNy41IDMuMzYgNy41IDcuNXptNC44Ny0yLjEzTDIwIDhsMS4zNy42M0wyMiAxMGwuNjMtMS4zN0wyNCA4bC0xLjM3LS42M0wyMiA2bC0uNjMgMS4zN3pNMTkgNmwuOTQtMi4wNkwyMiAzbC0yLjA2LS45NEwxOSAwbC0uOTQgMi4wNkwxNiAzbDIuMDYuOTRMMTkgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVG9jIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA5aDE0VjdIM3Yyem0wIDRoMTR2LTJIM3Yyem0wIDRoMTR2LTJIM3Yyem0xNiAwaDJ2LTJoLTJ2MnptMC0xMHYyaDJWN2gtMnptMCA2aDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVG9kYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC0xVjFoLTJ2Mkg4VjFINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMTlhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOGgxNHYxMXpNNyAxMGg1djVIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVG9rZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS45NyA2LjQzIDEyIDIgNC4wMyA2LjQzIDkuMSA5LjI0QzkuODMgOC40OCAxMC44NiA4IDEyIDhzMi4xNy40OCAyLjkgMS4yNGw1LjA3LTIuODF6TTEwIDEyYzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTEgOS40NEwzIDE3VjguMTRsNS4xMyAyLjg1Yy0uMDkuMzItLjEzLjY2LS4xMyAxLjAxIDAgMS44NiAxLjI3IDMuNDMgMyAzLjg3djUuNTd6bTIgMHYtNS41N2MxLjczLS40NCAzLTIuMDEgMy0zLjg3IDAtLjM1LS4wNC0uNjktLjEzLTEuMDFMMjEgOC4xNFYxN2wtOCA0LjQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUb2xsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LTgtMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6TTMgMTJhNS45OSA1Ljk5IDAgMCAxIDQtNS42NVY0LjI2QzMuNTUgNS4xNSAxIDguMjcgMSAxMnMyLjU1IDYuODUgNiA3Ljc0di0yLjA5QTUuOTkgNS45OSAwIDAgMSAzIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUb3VjaEFwcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTEuMjRWNy41YTIuNSAyLjUgMCAwIDEgNSAwdjMuNzRjMS4yMS0uODEgMi0yLjE4IDItMy43NEMxNiA1LjAxIDEzLjk5IDMgMTEuNSAzUzcgNS4wMSA3IDcuNWMwIDEuNTYuNzkgMi45MyAyIDMuNzR6bTkuODQgNC42My00LjU0LTIuMjZjLS4xNy0uMDctLjM1LS4xMS0uNTQtLjExSDEzdi02YzAtLjgzLS42Ny0xLjUtMS41LTEuNVMxMCA2LjY3IDEwIDcuNXYxMC43NGMtMy42LS43Ni0zLjU0LS43NS0zLjY3LS43NS0uMzEgMC0uNTkuMTMtLjc5LjMzbC0uNzkuOCA0Ljk0IDQuOTRjLjI3LjI3LjY1LjQ0IDEuMDYuNDRoNi43OWMuNzUgMCAxLjMzLS41NSAxLjQ0LTEuMjhsLjc1LTUuMjdjLjAxLS4wNy4wMi0uMTQuMDItLjIgMC0uNjItLjM4LTEuMTYtLjkxLTEuMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRvdXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDdWMkg1djIwaDJ2LThoMTRsLTItNSAyLTV6bS02IDVjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yIDIgLjkgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmFja0NoYW5nZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjA3IDQuOTMtMS40MSAxLjQxQTguMDE0IDguMDE0IDAgMCAxIDIwIDEyYzAgNC40Mi0zLjU4IDgtOCA4cy04LTMuNTgtOC04YzAtNC4wOCAzLjA1LTcuNDQgNy03LjkzdjIuMDJDOC4xNiA2LjU3IDYgOS4wMyA2IDEyYzAgMy4zMSAyLjY5IDYgNiA2czYtMi42OSA2LTZjMC0xLjY2LS42Ny0zLjE2LTEuNzYtNC4yNGwtMS40MSAxLjQxQzE1LjU1IDkuOSAxNiAxMC45IDE2IDEyYzAgMi4yMS0xLjc5IDQtNCA0cy00LTEuNzktNC00YzAtMS44NiAxLjI4LTMuNDEgMy0zLjg2djIuMTRjLS42LjM1LTEgLjk4LTEgMS43MiAwIDEuMS45IDIgMiAyczItLjkgMi0yYzAtLjc0LS40LTEuMzgtMS0xLjcyVjJoLTFDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMGMwLTIuNzYtMS4xMi01LjI2LTIuOTMtNy4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJhbnNjcmliZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjkzIDE2IDEuNjMtMS42M2MtMi43Ny0zLjAyLTIuNzctNy41NiAwLTEwLjc0TDE3LjkzIDJjLTMuOSAzLjg5LTMuOTEgOS45NSAwIDE0em00Ljk5LTUuMDVhMy4zMTcgMy4zMTcgMCAwIDEgMC0zLjg5bC0xLjY4LTEuNjljLTIuMDIgMi4wMi0yLjAyIDUuMDcgMCA3LjI3bDEuNjgtMS42OXpNOSAxM2MyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTYuMzkgMi41NkMxMy43MSAxNC43IDExLjUzIDE0IDkgMTRzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDEgMTguMjJWMjFoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJhbnNsYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIuODcgMTUuMDctMi41NC0yLjUxLjAzLS4wM0ExNy41MiAxNy41MiAwIDAgMCAxNC4wNyA2SDE3VjRoLTdWMkg4djJIMXYxLjk5aDExLjE3QzExLjUgNy45MiAxMC40NCA5Ljc1IDkgMTEuMzUgOC4wNyAxMC4zMiA3LjMgOS4xOSA2LjY5IDhoLTJjLjczIDEuNjMgMS43MyAzLjE3IDIuOTggNC41NmwtNS4wOSA1LjAyTDQgMTlsNS01IDMuMTEgMy4xMS43Ni0yLjA0ek0xOC41IDEwaC0yTDEyIDIyaDJsMS4xMi0zaDQuNzVMMjEgMjJoMmwtNC41LTEyem0tMi42MiA3IDEuNjItNC4zM0wxOS4xMiAxN2gtMy4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJlbmRpbmdEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYgMTggMi4yOS0yLjI5LTQuODgtNC44OC00IDRMMiA3LjQxIDMuNDEgNmw2IDYgNC00IDYuMyA2LjI5TDIyIDEydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRyZW5kaW5nRmxhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDEyLTQtNHYzSDN2MmgxNXYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmVuZGluZ1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYgNiAyLjI5IDIuMjktNC44OCA0Ljg4LTQtNEwyIDE2LjU5IDMuNDEgMThsNi02IDQgNCA2LjMtNi4yOUwyMiAxMlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcm91Ymxlc2hvb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiAyMC41OS00LjY5LTQuNjlBNy45MDIgNy45MDIgMCAwIDAgMTkgMTFjMC00LjQyLTMuNTgtOC04LTgtNC4wOCAwLTcuNDQgMy4wNS03LjkzIDdoMi4wMkM1LjU3IDcuMTcgOC4wMyA1IDExIDVjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDZjLTIuNDIgMC00LjUtMS40NC01LjQ1LTMuNUgzLjRDNC40NSAxNi42OSA3LjQ2IDE5IDExIDE5YzEuODUgMCAzLjU1LS42MyA0LjktMS42OUwyMC41OSAyMiAyMiAyMC41OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC40MyA5LjY5IDkuNjUgMTVoMS42NGwxLjI2LTMuNzguOTUgMi4yOGgyVjEyaC0xbC0xLjI1LTNoLTEuNTRsLTEuMTIgMy4zN0w5LjM1IDdINy43bC0xLjI1IDRIMXYxLjVoNi41NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTYuNDMgOS41N0wxMiAxNWwtMS41Ny0zLjQzTDcgMTBsMy40My0xLjU3TDEyIDVsMS41NyAzLjQzTDE3IDEwbC0zLjQzIDEuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFR1cm5lZEluTm90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yem0wIDE1LTUtMi4xOEw3IDE4VjVoMTB2MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFR1cm5lZEluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVbmZvbGRMZXNzRG91YmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNTggMS40MSAxNS4xNiAwbC0zLjE3IDMuMTdMOC44MiAwIDcuNDEgMS40MSAxMS45OSA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41OCA2LjQxIDE1LjE2IDVsLTMuMTcgMy4xN0w4LjgyIDUgNy40MSA2LjQxIDExLjk5IDExek03LjQyIDE3LjU5IDguODQgMTlsMy4xNy0zLjE3TDE1LjE4IDE5bDEuNDEtMS40MUwxMi4wMSAxM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy40MiAyMi41OSA4Ljg0IDI0bDMuMTctMy4xN0wxNS4xOCAyNGwxLjQxLTEuNDFMMTIuMDEgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFVuZm9sZE1vcmVEb3VibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3LjgzIDE1LjE3IDExbDEuNDEtMS40MUwxMiA1IDcuNDEgOS41OSA4LjgzIDExIDEyIDcuODN6bTAtNUwxNS4xNyA2bDEuNDEtMS40MUwxMiAwIDcuNDEgNC41OSA4LjgzIDYgMTIgMi44M3ptMCAxOC4zNEw4LjgzIDE4bC0xLjQxIDEuNDFMMTIgMjRsNC41OS00LjU5TDE1LjE3IDE4IDEyIDIxLjE3em0wLTVMOC44MyAxM2wtMS40MSAxLjQxTDEyIDE5bDQuNTktNC41OUwxNS4xNyAxMyAxMiAxNi4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVW5wdWJsaXNoZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS4xOSAyMS4xOSAyLjgxIDIuODEgMS4zOSA0LjIybDIuMjcgMi4yN0E5LjkxIDkuOTEgMCAwIDAgMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMCAyLjA0IDAgMy45My0uNjEgNS41MS0xLjY2bDIuMjcgMi4yNyAxLjQxLTEuNDJ6bS0xMC42LTQuNTktNC4yNC00LjI0IDEuNDEtMS40MSAyLjgzIDIuODMuMTgtLjE4IDEuNDEgMS40MS0xLjU5IDEuNTl6bTMtNS44NC03LjEtNy4xQTkuOTEgOS45MSAwIDAgMSAxMiAyYzUuNTIgMCAxMCA0LjQ4IDEwIDEwIDAgMi4wNC0uNjEgMy45My0xLjY2IDUuNTFMMTUgMTIuMTdsMi42NS0yLjY1LTEuNDEtMS40MS0yLjY1IDIuNjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFVwZGF0ZURpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC42NyA1Ljg0IDcuMjIgNC4zOUE4Ljg2IDguODYgMCAwIDEgMTIgM2MyLjc0IDAgNS4xOSAxLjIzIDYuODQgMy4xNkwyMSA0djZoLTZsMi40MS0yLjQxQzE2LjEyIDYuMDIgMTQuMTggNSAxMiA1Yy0xLjIgMC0yLjM0LjMxLTMuMzMuODR6TTEzIDdoLTJ2MS4xN2wyIDJWN3ptNi43OCAxNS42MS0zLTNBOC45NzMgOC45NzMgMCAwIDEgMTIgMjFhOSA5IDAgMCAxLTktOWMwLTEuNzYuNTEtMy40IDEuMzktNC43OGwtMy0zTDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNCAxLjQyem0tNC40Ni00LjQ2TDUuODQgOC42N0E3LjA2IDcuMDYgMCAwIDAgNSAxMmMwIDMuODYgMy4xNCA3IDcgNyAxLjIgMCAyLjM0LS4zMSAzLjMyLS44NXpNMjAuOTQgMTNoLTIuMDJjLS4xMi44My0uMzkgMS42MS0uNzcgMi4zMmwxLjQ3IDEuNDdjLjctMS4xMiAxLjE3LTIuNDEgMS4zMi0zLjc5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVcGRhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMC4xMmgtNi43OGwyLjc0LTIuODJjLTIuNzMtMi43LTcuMTUtMi44LTkuODgtLjEtMi43MyAyLjcxLTIuNzMgNy4wOCAwIDkuNzlzNy4xNSAyLjcxIDkuODggMEMxOC4zMiAxNS42NSAxOSAxNC4wOCAxOSAxMi4xaDJjMCAxLjk4LS44OCA0LjU1LTIuNjQgNi4yOS0zLjUxIDMuNDgtOS4yMSAzLjQ4LTEyLjcyIDAtMy41LTMuNDctMy41My05LjExLS4wMi0xMi41OHM5LjE0LTMuNDcgMTIuNjUgMEwyMSAzdjcuMTJ6TTEyLjUgOHY0LjI1bDMuNSAyLjA4LS43MiAxLjIxTDExIDEzVjhoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVcGdyYWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTh2Mkg4di0yaDh6TTExIDcuOTlWMTZoMlY3Ljk5aDNMMTIgNCA4IDcuOTloM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmVyaWZpZWRVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMSAzIDV2NmMwIDUuNTUgMy44NCAxMC43NCA5IDEyIDUuMTYtMS4yNiA5LTYuNDUgOS0xMlY1bC05LTR6bS0yIDE2LTQtNCAxLjQxLTEuNDFMMTAgMTQuMTdsNi41OS02LjU5TDE4IDlsLTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmVyaWZpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMyAxMi0yLjQ0LTIuNzkuMzQtMy42OS0zLjYxLS44Mi0xLjg5LTMuMkwxMiAyLjk2IDguNiAxLjUgNi43MSA0LjY5IDMuMSA1LjVsLjM0IDMuN0wxIDEybDIuNDQgMi43OS0uMzQgMy43IDMuNjEuODJMOC42IDIyLjVsMy40LTEuNDcgMy40IDEuNDYgMS44OS0zLjE5IDMuNjEtLjgyLS4zNC0zLjY5TDIzIDEyem0tMTIuOTEgNC43Mi0zLjgtMy44MSAxLjQ4LTEuNDggMi4zMiAyLjMzIDUuODUtNS44NyAxLjQ4IDEuNDgtNy4zMyA3LjM1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWZXJ0aWNhbFNwbGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE1aDh2LTJIM3Yyem0wIDRoOHYtMkgzdjJ6bTAtOGg4VjlIM3Yyem0wLTZ2Mmg4VjVIM3ptMTAgMGg4djE0aC04VjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdBZ2VuZGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxM0g1Yy0xLjEgMC0yIC45LTIgMnY0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTRjMC0xLjEtLjktMi0yLTJ6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2NGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdBcnJheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVoLTN2MTRoM1Y1em0tNCAwSDd2MTRoMTBWNXpNNiA1SDN2MTRoM1Y1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3Q2Fyb3VzZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDdoNHYxMEgyVjd6bTUgMTJoMTBWNUg3djE0ek0xOCA3aDR2MTBoLTRWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld0NvbHVtbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjY3IDV2MTRIOS4zM1Y1aDUuMzR6bTEgMTRIMjFWNWgtNS4zM3YxNHptLTcuMzQgMFY1SDN2MTRoNS4zM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld0NvbWZ5QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bS05IDEzSDd2LTRoNHY0em0wLTZIN1Y3aDR2NHptNiA2aC00di00aDR2NHptMC02aC00VjdoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3Q29tcGFjdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tOC41IDEyLjVoLTR2LTRoNHY0em0wLTVoLTR2LTRoNHY0em01IDVoLTR2LTRoNHY0em0wLTVoLTR2LTRoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3Q296eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tOC43NSAxMi43NWgtNHYtNGg0djR6bTAtNS41aC00di00aDR2NHptNS41IDUuNWgtNHYtNGg0djR6bTAtNS41aC00di00aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld0RheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMjFoMTl2LTNIMnYzek0yMCA4SDNjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE3Yy41NSAwIDEtLjQ1IDEtMVY5YzAtLjU1LS40NS0xLTEtMXpNMiAzdjNoMTlWM0gyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3SGVhZGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTVoMTZ2LTJINHYyem0wIDRoMTZ2LTJINHYyem0wLThoMTZWOUg0djJ6bTAtNnYyaDE2VjVINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld0luQXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC4yNSA3LjYtNS41LTMuMThhMS40OSAxLjQ5IDAgMCAwLTEuNSAwTDUuNzUgNy42Yy0uNDYuMjctLjc1Ljc2LS43NSAxLjN2Ni4zNWMwIC41NC4yOSAxLjAzLjc1IDEuM2w1LjUgMy4xOGMuNDYuMjcgMS4wNC4yNyAxLjUgMGw1LjUtMy4xOGMuNDYtLjI3Ljc1LS43Ni43NS0xLjNWOC45YzAtLjU0LS4yOS0xLjAzLS43NS0xLjN6TTcgMTQuOTZ2LTQuNjJsNCAyLjMydjQuNjFsLTQtMi4zMXptNS00LjAzTDggOC42MWw0LTIuMzEgNCAyLjMxLTQgMi4zMnptMSA2LjM0di00LjYxbDQtMi4zMnY0LjYybC00IDIuMzF6TTcgMkgzLjVDMi42NyAyIDIgMi42NyAyIDMuNVY3aDJWNGgzVjJ6bTEwIDBoMy41Yy44MyAwIDEuNS42NyAxLjUgMS41VjdoLTJWNGgtM1Yyek03IDIySDMuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41VjE3aDJ2M2gzdjJ6bTEwIDBoMy41Yy44MyAwIDEuNS0uNjcgMS41LTEuNVYxN2gtMnYzaC0zdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdLYW5iYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxN0g3VjdoMnYxMHptNC01aC0yVjdoMnY1em00IDNoLTJWN2gydjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNGg0di00SDN2NHptMCA1aDR2LTRIM3Y0ek0zIDloNFY1SDN2NHptNSA1aDEzdi00SDh2NHptMCA1aDEzdi00SDh2NHpNOCA1djRoMTNWNUg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3TW9kdWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNjcgNXY2LjVIOS4zM1Y1aDUuMzR6bTEgNi41SDIxVjVoLTUuMzN2Ni41em0tMSA3LjV2LTYuNUg5LjMzVjE5aDUuMzR6bTEtNi41VjE5SDIxdi02LjVoLTUuMzN6bS03LjM0IDBIM1YxOWg1LjMzdi02LjV6bTAtMVY1SDN2Ni41aDUuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdRdWlsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDV2Ni41SDkuMzNWNUgyMXptLTYuMzMgMTR2LTYuNUg5LjMzVjE5aDUuMzR6bTEtNi41VjE5SDIxdi02LjVoLTUuMzN6TTguMzMgMTlWNUgzdjE0aDUuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdTaWRlYmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMjBIMlY0aDE0djE2em0yLTEyaDRWNGgtNHY0em0wIDEyaDR2LTRoLTR2NHptMC02aDR2LTRoLTR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld1N0cmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTd2LTJjMC0xLjEuOS0yIDItMmgxNGMxLjEgMCAyIC45IDIgMnYyYzAgMS4xLS45IDItMiAySDVjLTEuMSAwLTItLjktMi0yek0zIDd2MmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdUaW1lbGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNEg2di0yaDZ2MnptMy00SDl2LTJoNnYyem0zLTRoLTZWN2g2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdXZWVrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4zMyAyMEg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoMS4zM2MxLjEgMCAyIC45IDIgMnYxMmEyIDIgMCAwIDEtMiAyek0yMiAxOFY2YzAtMS4xLS45LTItMi0yaC0xLjMzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAySDIwYTIgMiAwIDAgMCAyLTJ6bS03LjMzIDBWNmMwLTEuMS0uOS0yLTItMmgtMS4zM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxLjMzYzEuMSAwIDItLjkgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaXNpYmlsaXR5T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN2MyLjc2IDAgNSAyLjI0IDUgNSAwIC42NS0uMTMgMS4yNi0uMzYgMS44M2wyLjkyIDIuOTJjMS41MS0xLjI2IDIuNy0yLjg5IDMuNDMtNC43NS0xLjczLTQuMzktNi03LjUtMTEtNy41LTEuNCAwLTIuNzQuMjUtMy45OC43bDIuMTYgMi4xNkMxMC43NCA3LjEzIDExLjM1IDcgMTIgN3pNMiA0LjI3bDIuMjggMi4yOC40Ni40NkExMS44MDQgMTEuODA0IDAgMCAwIDEgMTJjMS43MyA0LjM5IDYgNy41IDExIDcuNSAxLjU1IDAgMy4wMy0uMyA0LjM4LS44NGwuNDIuNDJMMTkuNzMgMjIgMjEgMjAuNzMgMy4yNyAzIDIgNC4yN3pNNy41MyA5LjhsMS41NSAxLjU1Yy0uMDUuMjEtLjA4LjQzLS4wOC42NSAwIDEuNjYgMS4zNCAzIDMgMyAuMjIgMCAuNDQtLjAzLjY1LS4wOGwxLjU1IDEuNTVjLS42Ny4zMy0xLjQxLjUzLTIuMi41My0yLjc2IDAtNS0yLjI0LTUtNSAwLS43OS4yLTEuNTMuNTMtMi4yem00LjMxLS43OCAzLjE1IDMuMTUuMDItLjE2YzAtMS42Ni0xLjM0LTMtMy0zbC0uMTcuMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpc2liaWxpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0LjVDNyA0LjUgMi43MyA3LjYxIDEgMTJjMS43MyA0LjM5IDYgNy41IDExIDcuNXM5LjI3LTMuMTEgMTEtNy41Yy0xLjczLTQuMzktNi03LjUtMTEtNy41ek0xMiAxN2MtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6bTAtOGMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZvaWNlT3Zlck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuOTkgOS4xOGMwLS4wNi4wMS0uMTIuMDEtLjE4IDAtMi4yMS0xLjc5LTQtNC00LS4wNiAwLS4xMi4wMS0uMTguMDFsNC4xNyA0LjE3em0tNi4xLTMuNTZMNC4yNyAzIDMgNC4yN2wyLjYyIDIuNjJDNS4yMyA3LjUgNSA4LjIyIDUgOWMwIDIuMjEgMS43OSA0IDQgNCAuNzggMCAxLjUtLjIzIDIuMTEtLjYyTDE5LjczIDIxIDIxIDE5LjczbC04LjYyLTguNjItNS40OS01LjQ5ek05IDE1Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00em03Ljc2LTkuNjQtMS42OCAxLjY5Yy44NCAxLjE4Ljg0IDIuNzEgMCAzLjg5bDEuNjggMS42OWMyLjAyLTIuMDIgMi4wMi01LjA3IDAtNy4yN3pNMjAuMDcgMmwtMS42MyAxLjYzYzIuNzcgMy4wMiAyLjc3IDcuNTYgMCAxMC43NEwyMC4wNyAxNmMzLjktMy44OSAzLjkxLTkuOTUgMC0xNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2F0Y2hMYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyem00LjIgMTQuMkwxMSAxM1Y3aDEuNXY1LjJsNC41IDIuNy0uOCAxLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdlYmhvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNWg1Ljg4Yy4yNy0uMzEuNjctLjUgMS4xMi0uNS44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjVjLS40NCAwLS44NC0uMTktMS4xMi0uNUgxMS45QTUgNSAwIDEgMSA2IDExLjF2Mi4wN2MtMS4xNi40MS0yIDEuNTMtMiAyLjgzIDAgMS42NSAxLjM1IDMgMyAzczMtMS4zNSAzLTN2LTF6bTIuNS0xMWMxLjY1IDAgMyAxLjM1IDMgM2gyYzAtMi43Ni0yLjI0LTUtNS01YTUuMDAyIDUuMDAyIDAgMCAwLTMuNDUgOC42MmwtMi4zNSAzLjljLS42OC4xNC0xLjIuNzUtMS4yIDEuNDggMCAuODMuNjcgMS41IDEuNSAxLjVhMS40OTggMS40OTggMCAwIDAgMS40My0xLjk1bDMuMzgtNS42M0EzLjAwMyAzLjAwMyAwIDAgMSA5LjUgN2MwLTEuNjUgMS4zNS0zIDMtM3ptNC41IDljLS42NCAwLTEuMjMuMi0xLjcyLjU0bC0zLjA1LTUuMDdDMTEuNTMgOC4zNSAxMSA3Ljc0IDExIDdjMC0uODMuNjctMS41IDEuNS0xLjVTMTQgNi4xNyAxNCA3YzAgLjE1LS4wMi4yOS0uMDYuNDNsMi4xOSAzLjY1Yy4yOC0uMDUuNTctLjA4Ljg3LS4wOCAyLjc2IDAgNSAyLjI0IDUgNXMtMi4yNCA1LTUgNWE1IDUgMCAwIDEtNC4zMy0yLjVoMi42N2MuNDguMzIgMS4wNS41IDEuNjYuNSAxLjY1IDAgMy0xLjM1IDMtM3MtMS4zNS0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lkdGhGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTQgNmgxdjEySDRWNnptMTYgMTJoLTFWNmgxdjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWR0aE5vcm1hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek00IDZoNHYxMkg0VjZ6bTE2IDEyaC00VjZoNHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lkdGhXaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTQgNmgydjEySDRWNnptMTYgMTJoLTJWNmgydjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWZpUHJvdGVjdGVkU2V0dXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi43MSA1LjI5IDE5IDNoLTh2OGwyLjMtMi4zYzEuOTcgMS40NiAzLjI1IDMuNzggMy4yNSA2LjQyIDAgMS4zMS0uMzIgMi41NC0uODggMy42MyAyLjMzLTEuNTIgMy44OC00LjE0IDMuODgtNy4xMyAwLTIuNTItMS4xMS00Ljc3LTIuODQtNi4zM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy40NiA4Ljg4YzAtMS4zMS4zMi0yLjU0Ljg4LTMuNjNhOC40NzkgOC40NzkgMCAwIDAtMy44OCA3LjEzYzAgMi41MiAxLjEgNC43NyAyLjg0IDYuMzNMNSAyMWg4di04bC0yLjMgMi4zYy0xLjk2LTEuNDYtMy4yNC0zLjc4LTMuMjQtNi40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV29ya0hpc3RvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMWMxLjQ5IDAgMi44Ny40NyA0IDEuMjZWOGMwLTEuMTEtLjg5LTItMi0yaC00VjRjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE5YzAgMS4xMS44OSAyIDIgMmg3LjY4QTYuOTk1IDYuOTk1IDAgMCAxIDE4IDExem0tOC03aDR2MmgtNFY0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTEuNjUgNy4zNUwxNy41IDE4LjJWMTVoMXYyLjc5bDEuODUgMS44NS0uNy43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV29ya09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIzIDIxLjc0LTEuNDYtMS40Nkw3LjIxIDUuOTUgMy4yNSAxLjk5IDEuOTkgMy4yNWwyLjcgMi43aC0uNjRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMmwtLjAxIDExYzAgMS4xMS44OSAyIDIgMmgxNS42NEwyMS43NCAyMyAyMyAyMS43NHpNMjIgNy45NWMuMDUtMS4xMS0uODQtMi0xLjk1LTEuOTVoLTRWMy45NWMwLTEuMTEtLjg5LTItMi0xLjk1aC00Yy0xLjExLS4wNS0yIC44NC0yIDEuOTV2LjMybDEzLjk1IDE0VjcuOTV6TTE0LjA1IDZIMTBWMy45NWg0LjA1VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdvcmtPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE0IDZWNGgtNHYyaDR6TTQgOHYxMWgxNlY4SDR6bTE2LTJjMS4xMSAwIDIgLjg5IDIgMnYxMWMwIDEuMTEtLjg5IDItMiAySDRjLTEuMTEgMC0yLS44OS0yLTJsLjAxLTExYzAtMS4xMS44OC0yIDEuOTktMmg0VjRjMC0xLjExLjg5LTIgMi0yaDRjMS4xMSAwIDIgLjg5IDIgMnYyaDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC00VjRjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE5YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjhjMC0xLjExLS44OS0yLTItMnptLTYgMGgtNFY0aDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV3lzaXd5ZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWEyIDIgMCAwIDAtMi0yem0wIDE2SDVWN2gxNHYxMnptLTItN0g3di0yaDEwdjJ6bS00IDRIN3YtMmg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFlvdXR1YmVTZWFyY2hlZEZvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMDEgMTRoLS44bC0uMjctLjI3YTYuNDUxIDYuNDUxIDAgMCAwIDEuNTctNC4yM2MwLTMuNTktMi45MS02LjUtNi41LTYuNXMtNi41IDMtNi41IDYuNUgybDMuODQgNCA0LjE2LTRINi41MWE0LjUgNC41IDAgMCAxIDkgMCA0LjUwNyA0LjUwNyAwIDAgMS02LjMyIDQuMTJMNy43MSAxNS4xYTYuNDc0IDYuNDc0IDAgMCAwIDcuNTItLjY3bC4yNy4yN3YuNzlsNS4wMSA0Ljk5TDIyIDE5bC00Ljk5LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFpvb21JbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QTYuNDcxIDYuNDcxIDAgMCAwIDE2IDkuNSA2LjUgNi41IDAgMSAwIDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEwaC0ydjJIOXYtMkg3VjloMlY3aDF2MmgydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFpvb21PdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0ek03IDloNXYxSDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZEFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wMSAyMS4wMWMwIDEuMS44OSAxLjk5IDEuOTkgMS45OXMxLjk5LS44OSAxLjk5LTEuOTloLTMuOTh6bTguODctNC4xOVYxMWMwLTMuMjUtMi4yNS01Ljk3LTUuMjktNi42OXYtLjcyQzEzLjU5IDIuNzEgMTIuODggMiAxMiAycy0xLjU5LjcxLTEuNTkgMS41OXYuNzJBNi44NzMgNi44NzMgMCAwIDAgNS4xMiAxMXY1LjgyTDMgMTguOTRWMjBoMTh2LTEuMDZsLTIuMTItMi4xMnpNMTYgMTMuMDFoLTN2M2gtMnYtM0g4VjExaDNWOGgydjNoM3YyLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdXRvRGVsZXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMmgtMy41bC0xLTFoLTVsLTEgMUgxdjJoMTR6TTE2IDljLS43IDAtMS4zNy4xLTIgLjI5VjVIMnYxMmMwIDEuMS45IDIgMiAyaDUuNjhBNi45OTkgNi45OTkgMCAwIDAgMjMgMTZjMC0zLjg3LTMuMTMtNy03LTd6bTAgMTJjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDEySDE1djVsMy42IDIuMS44LTEuMi0yLjktMS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFcnJvck91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE1aDJ2MmgtMnptMC04aDJ2NmgtMnptLjk5LTVDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXJyb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDE1aC0ydi0yaDJ2MnptMC00aC0yVjdoMnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RpZmljYXRpb25JbXBvcnRhbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE2di01YzAtMy4wNy0xLjY0LTUuNjQtNC41LTYuMzJWNGMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41di42OEM3LjYzIDUuMzYgNiA3LjkyIDYgMTF2NWwtMiAydjFoMTZ2LTFsLTItMnptLTUgMGgtMnYtMmgydjJ6bTAtNGgtMlY4aDJ2NHptLTEgMTBjMS4xIDAgMi0uOSAyLTJoLTRhMiAyIDAgMCAwIDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2FybmluZ0FtYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNS45OSAxOS41MyAxOUg0LjQ3TDEyIDUuOTlNMTIgMiAxIDIxaDIyTDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDE2aC0ydjJoMnpNMTMgMTBoLTJ2NWgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYXJuaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxMEsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEwLjVoMS41djNIMTB6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek03LjUgMTVINnYtNC41SDQuNVY5aDN2NnptNS41LTFjMCAuNTUtLjQ1IDEtMSAxSDkuNWMtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xSDEyYy41NSAwIDEgLjQ1IDEgMXY0em02LjUgMWgtMS43NUwxNiAxMi43NVYxNWgtMS41VjlIMTZ2Mi4yNUwxNy43NSA5aDEuNzVsLTIuMjUgMyAyLjI1IDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDFrUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTkgMTVINy41di00LjVINlY5aDN2NnptNC43NSAwTDEyIDEyLjc1VjE1aC0xLjVWOUgxMnYyLjI1TDEzLjc1IDloMS43NWwtMi4yNSAzIDIuMjUgM2gtMS43NXptNS43NS0yLjVIMThWMTRoLTF2LTEuNWgtMS41di0xSDE3VjEwaDF2MS41aDEuNXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxSyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04LjUgMTJIOXYtNC41SDcuNVY5aDN2NnptNyAwaC0xLjc1TDE0IDEyLjc1VjE1aC0xLjVWOUgxNHYyLjI1TDE1Ljc1IDloMS43NWwtMi4yNSAzIDIuMjUgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMmtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTkuNSA4LjVjMCAuNTUtLjQ1IDEtMSAxaC0ydjFoM1YxNUg1di0yLjVjMC0uNTUuNDUtMSAxLTFoMnYtMUg1VjloMy41Yy41NSAwIDEgLjQ1IDEgMXYxLjV6bTQuNzUgMy41LTEuNzUtMi4yNVYxNUgxMVY5aDEuNXYyLjI1TDE0LjI1IDlIMTZsLTIuMjUgM0wxNiAxNWgtMS43NXpNMjAgMTIuNWgtMS41VjE0aC0xdi0xLjVIMTZ2LTFoMS41VjEwaDF2MS41SDIwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDJLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTkgOS41SDh2MWgzVjE1SDYuNXYtMi41YzAtLjU1LjQ1LTEgMS0xaDJ2LTFoLTNWOUgxMGMuNTUgMCAxIC40NSAxIDF2MS41YzAgLjU1LS40NSAxLTEgMXptOCAyLjVoLTEuNzVsLTEuNzUtMi4yNVYxNUgxM1Y5aDEuNXYyLjI1TDE2LjI1IDlIMThsLTIuMjUgM0wxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kM2tQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOS41IDE0YzAgLjU1LS40NSAxLTEgMUg1di0xLjVoM3YtMUg2di0xaDJ2LTFINVY5aDMuNWMuNTUgMCAxIC40NSAxIDF2NHptNi41IDFoLTEuNzVsLTEuNzUtMi4yNVYxNUgxMVY5aDEuNXYyLjI1TDE0LjI1IDlIMTZsLTIuMjUgM0wxNiAxNXptNC0yLjVoLTEuNVYxNGgtMXYtMS41SDE2di0xaDEuNVYxMGgxdjEuNUgyMHYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQzSyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04IDExYzAgLjU1LS40NSAxLTEgMUg2LjV2LTEuNWgzdi0xaC0ydi0xaDJ2LTFoLTNWOUgxMGMuNTUgMCAxIC40NSAxIDF2NHptNyAxaC0xLjc1bC0xLjc1LTIuMjVWMTVIMTNWOWgxLjV2Mi4yNUwxNi4yNSA5SDE4bC0yLjI1IDNMMTggMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDRrUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04LjUgMTAuNWgtMVYxNUg4di0xLjVINVY5aDEuNXYzSDhWOWgxLjV2M2gxdjEuNXpNMTYgMTVoLTEuNzVsLTEuNzUtMi4yNVYxNUgxMVY5aDEuNXYyLjI1TDE0LjI1IDlIMTZsLTIuMjUgM0wxNiAxNXptNC0yLjVoLTEuNVYxNGgtMXYtMS41SDE2di0xaDEuNVYxMGgxdjEuNUgyMHYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQ0SyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDEwLjVoLTFWMTVIOS41di0xLjVoLTNWOUg4djNoMS41VjlIMTF2M2gxdjEuNXptNiAxLjVoLTEuNzVsLTEuNzUtMi4yNVYxNUgxM1Y5aDEuNXYyLjI1TDE2LjI1IDlIMThsLTIuMjUgM0wxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNUcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxM2gydjJoLTVWOWg3YzAtMS4xLS45LTItMi0yaC01Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoNWMxLjEgMCAyLS45IDItMnYtNGgtNHYyek0zIDEzaDV2MkgzdjJoNWMxLjEgMCAyLS45IDItMnYtMmMwLTEuMS0uOS0yLTItMkg1VjloNVY3SDN2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNWtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTkuNSA3LjVoLTN2MWgyYy41NSAwIDEgLjQ1IDEgMVYxNGMwIC41NS0uNDUgMS0xIDFINXYtMS41aDN2LTFINVY5aDQuNXYxLjV6TTE2IDE1aC0xLjc1bC0xLjc1LTIuMjVWMTVIMTFWOWgxLjV2Mi4yNUwxNC4yNSA5SDE2bC0yLjI1IDNMMTYgMTV6bTQtMi41aC0xLjVWMTRoLTF2LTEuNUgxNnYtMWgxLjVWMTBoMXYxLjVIMjB2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNUsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOCA3LjVIOHYxaDJjLjU1IDAgMSAuNDUgMSAxVjE0YzAgLjU1LS40NSAxLTEgMUg2LjV2LTEuNWgzdi0xaC0zVjlIMTF2MS41em03IDQuNWgtMS43NWwtMS43NS0yLjI1VjE1SDEzVjloMS41djIuMjVMMTYuMjUgOUgxOGwtMi4yNSAzTDE4IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQ2a1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAxMi41SDhWMTRINi41ek0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTkuNSA3LjVoLTN2MWgyYy41NSAwIDEgLjQ1IDEgMVYxNGMwIC41NS0uNDUgMS0xIDFINmMtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDMuNXYxLjV6TTE2IDE1aC0xLjc1bC0xLjc1LTIuMjVWMTVIMTFWOWgxLjV2Mi4yNUwxNC4yNSA5SDE2bC0yLjI1IDNMMTYgMTV6bTQtMi41aC0xLjVWMTRoLTF2LTEuNUgxNnYtMWgxLjVWMTBoMXYxLjVIMjB2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNksgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTIuNWgxLjVWMTRIOHpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04IDcuNUg4djFoMmMuNTUgMCAxIC40NSAxIDFWMTRjMCAuNTUtLjQ1IDEtMSAxSDcuNWMtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xSDExdjEuNXptNyA0LjVoLTEuNzVsLTEuNzUtMi4yNVYxNUgxM1Y5aDEuNXYyLjI1TDE2LjI1IDlIMThsLTIuMjUgM0wxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kN2tQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOCAxNUg2LjI1bDEuMzgtNC41SDVWOWgzLjVjLjY3IDAgMS4xNS42NS45NiAxLjI5TDggMTV6bTggMGgtMS43NWwtMS43NS0yLjI1VjE1SDExVjloMS41djIuMjVMMTQuMjUgOUgxNmwtMi4yNSAzTDE2IDE1em00LTIuNWgtMS41VjE0aC0xdi0xLjVIMTZ2LTFoMS41VjEwaDF2MS41SDIwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDdLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOS41IDE1SDcuNzVsMS4zOC00LjVINi41VjlIMTBjLjY3IDAgMS4xNS42NS45NiAxLjI5TDkuNSAxNXptOC41IDBoLTEuNzVsLTEuNzUtMi4yNVYxNUgxM1Y5aDEuNXYyLjI1TDE2LjI1IDlIMThsLTIuMjUgM0wxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kOGtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgMTIuNUg4VjE0SDYuNXptMC0yLjVIOHYxLjVINi41ek0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOS41IDE0YzAgLjU1LS40NSAxLTEgMUg2Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoMi41Yy41NSAwIDEgLjQ1IDEgMXY0em02LjUgMWgtMS43NWwtMS43NS0yLjI1VjE1SDExVjloMS41djIuMjVMMTQuMjUgOUgxNmwtMi4yNSAzTDE2IDE1em00LTIuNWgtMS41VjE0aC0xdi0xLjVIMTZ2LTFoMS41VjEwaDF2MS41SDIwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDhLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDEyLjVoMS41VjE0SDh6TTggMTBoMS41djEuNUg4em0xMS03SDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTggMTFjMCAuNTUtLjQ1IDEtMSAxSDcuNWMtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xSDEwYy41NSAwIDEgLjQ1IDEgMXY0em03IDFoLTEuNzVsLTEuNzUtMi4yNVYxNUgxM1Y5aDEuNXYyLjI1TDE2LjI1IDlIMThsLTIuMjUgM0wxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kOWtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgMTBIOHYxLjVINi41ek0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOS41IDE0YzAgLjU1LS40NSAxLTEgMUg1di0xLjVoM3YtMUg2Yy0uNTUgMC0xLS40NS0xLTFWMTBjMC0uNTUuNDUtMSAxLTFoMi41Yy41NSAwIDEgLjQ1IDEgMXY0em02LjUgMWgtMS43NWwtMS43NS0yLjI1VjE1SDExVjloMS41djIuMjVMMTQuMjUgOUgxNmwtMi4yNSAzTDE2IDE1em00LTIuNWgtMS41VjE0aC0xdi0xLjVIMTZ2LTFoMS41VjEwaDF2MS41SDIwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDlLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDEwaDEuNXYxLjVIOHptMTEtN0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04IDExYzAgLjU1LS40NSAxLTEgMUg2LjV2LTEuNWgzdi0xaC0yYy0uNTUgMC0xLS40NS0xLTFWMTBjMC0uNTUuNDUtMSAxLTFIMTBjLjU1IDAgMSAuNDUgMSAxdjR6bTcgMWgtMS43NWwtMS43NS0yLjI1VjE1SDEzVjloMS41djIuMjVMMTYuMjUgOUgxOGwtMi4yNSAzTDE4IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRUb1F1ZXVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMTEgMC0yIC44OS0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg1djJoOHYtMmg1YzEuMSAwIDEuOTktLjkgMS45OS0yTDIzIDVhMiAyIDAgMCAwLTItMnptMCAxNEgzVjVoMTh2MTJ6bS01LTd2MmgtM3YzaC0ydi0zSDh2LTJoM1Y3aDJ2M2gzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBaXJwbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAyMmgxMmwtNi02elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoNHYtMkgzVjVoMTh2MTJoLTR2Mmg0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFsYnVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxNC41Yy0yLjQ5IDAtNC41LTIuMDEtNC41LTQuNVM5LjUxIDcuNSAxMiA3LjVzNC41IDIuMDEgNC41IDQuNS0yLjAxIDQuNS00LjUgNC41em0wLTUuNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnRUcmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEzaC04di0yaDh2MnptMC02aC04djJoOFY3em0tOCAxMGg4di0yaC04djJ6bS0yLTh2NmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJoNmMxLjEgMCAyIC45IDIgMnptLTEuNSA2LTIuMjUtMy0xLjc1IDIuMjYtMS4yNS0xLjUxTDMuNSAxNWg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdWRpb0ZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTIgMTFoLTN2My43NWMwIDEuMjQtMS4wMSAyLjI1LTIuMjUgMi4yNVM4LjUgMTcuOTkgOC41IDE2Ljc1czEuMDEtMi4yNSAyLjI1LTIuMjVjLjQ2IDAgLjg5LjE0IDEuMjUuMzhWMTFoNHYyem0tMy00VjMuNUwxOC41IDlIMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF2VGltZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxN2MwIC41NS40NSAxIDEgMXMxLS40NSAxLTEtLjQ1LTEtMS0xLTEgLjQ1LTEgMXptMC0xNHY0aDJWNS4wOGMzLjM5LjQ5IDYgMy4zOSA2IDYuOTIgMCAzLjg3LTMuMTMgNy03IDdzLTctMy4xMy03LTdjMC0xLjY4LjU5LTMuMjIgMS41OC00LjQyTDEyIDEzbDEuNDEtMS40MS02LjgtNi44di4wMkM0LjQyIDYuNDUgMyA5LjA1IDMgMTJjMCA0Ljk3IDQuMDIgOSA5IDlhOSA5IDAgMCAwIDAtMThoLTF6bTcgOWMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMSAuNDUgMSAxIDEgMS0uNDUgMS0xek02IDEyYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMS0uNDUtMS0xLTEtMSAuNDUtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmFuZGluZ1dhdGVybWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTl2LTZoOXY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYWxsVG9BY3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDN2LTNoMTh2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xvc2VkQ2FwdGlvbkRpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi44MyA0SDE5YzEuMSAwIDIgLjkgMiAydjEyYzAgLjA1LS4wMS4xLS4wMi4xNmwtMy4zOC0zLjM4Yy4yNC0uMTkuNC0uNDYuNC0uNzh2LTFoLTEuNXYuNWgtLjE3bC0xLjgzLTEuODNWMTAuNWgydi41SDE4di0xYzAtLjU1LS40NS0xLTEtMWgtM2MtLjU1IDAtMSAuNDUtMSAxdi4xN0w2LjgzIDR6bTEyLjk1IDE4LjYxTDE3LjE3IDIwSDVhMiAyIDAgMCAxLTItMlY2YzAtLjA1LjAyLS4xLjAyLS4xNUwxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6TTExIDEzLjgzbC0uODMtLjgzSDkuNXYuNWgtMnYtM2guMTdMNi40IDkuMjJjLS4yNC4xOS0uNC40Ni0uNC43OHY0YzAgLjU1LjQ1IDEgMSAxaDNjLjU1IDAgMS0uNDUgMS0xdi0uMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3NlZENhcHRpb25PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjUgNS41djEzaC0xNXYtMTNoMTV6TTE5IDRINWEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTggN0g5LjV2LS41aC0ydjNoMlYxM0gxMXYxYzAgLjU1LS40NSAxLTEgMUg3Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MXptNyAwaC0xLjV2LS41aC0ydjNoMlYxM0gxOHYxYzAgLjU1LS40NSAxLTEgMWgtM2MtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDNjLjU1IDAgMSAuNDUgMSAxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3NlZENhcHRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bS04IDdIOS41di0uNWgtMnYzaDJWMTNIMTF2MWMwIC41NS0uNDUgMS0xIDFIN2MtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDNjLjU1IDAgMSAuNDUgMSAxdjF6bTcgMGgtMS41di0uNWgtMnYzaDJWMTNIMTh2MWMwIC41NS0uNDUgMS0xIDFoLTNjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb250cm9sQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNTQgNS41NCAxMy43NyA3LjMgMTIgNS41NCAxMC4yMyA3LjMgOC40NiA1LjU0IDEyIDJ6bTIuOTIgMTAtMS43Ni0xLjc3TDE4LjQ2IDEybC0xLjc2LTEuNzcgMS43Ni0xLjc3TDIyIDEyem0tMTAgMi45MiAxLjc3LTEuNzZMMTIgMTguNDZsMS43Ny0xLjc2IDEuNzcgMS43NkwxMiAyMnptLTIuOTItMTAgMS43NiAxLjc3TDUuNTQgMTJsMS43NiAxLjc3LTEuNzYgMS43N0wyIDEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXF1YWxpemVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMjBoNFY0aC00djE2em0tNiAwaDR2LThINHY4ek0xNiA5djExaDRWOWgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwbGljaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQgNmgtNHYyaDR2MmgtNHYyaDR2Mkg5VjdoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYXN0Rm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTQgMTggOC41LTZMNCA2djEyem05LTEydjEybDguNS02TDEzIDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhc3RSZXdpbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxOFY2bC04LjUgNiA4LjUgNnptLjUtNiA4LjUgNlY2bC04LjUgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmVhdHVyZWRQbGF5TGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS05IDhIM1Y5aDl2MnptMC00SDNWNWg5djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZlYXR1cmVkVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOSA5SDNWNWg5djd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpYmVyRHZyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNSAxMC41aDJ2MWgtMnYtMXptLTEzIDBoMnYzaC0ydi0zek0yMSAzSDNjLTEuMTEgMC0yIC44OS0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxOGEyIDIgMCAwIDAgMi0yVjVjMC0xLjExLS44OS0yLTItMnpNOCAxMy41YzAgLjg1LS42NSAxLjUtMS41IDEuNUgzVjloMy41Yy44NSAwIDEuNS42NSAxLjUgMS41djN6bTQuNjIgMS41aC0xLjVMOS4zNyA5aDEuNWwxIDMuNDMgMS0zLjQzaDEuNWwtMS43NSA2ek0yMSAxMS41YzAgLjYtLjQgMS4xNS0uOSAxLjRMMjEgMTVoLTEuNWwtLjg1LTJIMTcuNXYySDE2VjloMy41Yy44NSAwIDEuNS42NSAxLjUgMS41djF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpYmVyTWFudWFsUmVjb3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiOFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWJlck5ldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmMwLTEuMTEtLjg5LTItMi0yek04LjUgMTVINy4zbC0yLjU1LTMuNVYxNUgzLjVWOWgxLjI1bDIuNSAzLjVWOUg4LjV2NnptNS00Ljc0SDExdjEuMTJoMi41djEuMjZIMTF2MS4xMWgyLjVWMTVoLTRWOWg0djEuMjZ6bTcgMy43NGMwIC41NS0uNDUgMS0xIDFoLTRjLS41NSAwLTEtLjQ1LTEtMVY5aDEuMjV2NC41MWgxLjEzVjkuOTloMS4yNXYzLjUxaDEuMTJWOWgxLjI1djV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpYmVyUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41IDEwLjVoMnYxaC0yek0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnpNOSAxMS41YzAgLjg1LS42NSAxLjUtMS41IDEuNWgtMnYySDRWOWgzLjVjLjg1IDAgMS41LjY1IDEuNSAxLjV2MXptMy41IDMuNUgxMVY5aDEuNXY2em03LjUgMGgtMS4ybC0yLjU1LTMuNVYxNUgxNVY5aDEuMjVsMi41IDMuNVY5SDIwdjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpYmVyU21hcnRSZWNvcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDI0SDBWMGgyNHYyNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjhcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNC4yNnYyLjA5YTUuOTkgNS45OSAwIDAgMSAwIDExLjN2Mi4wOWMzLjQ1LS44OSA2LTQuMDEgNi03Ljc0cy0yLjU1LTYuODUtNi03Ljc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3J3YXJkMTAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MwIDMuMzEtMi42OSA2LTYgNnMtNi0yLjY5LTYtNiAyLjY5LTYgNi02djRsNS01LTUtNXY0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LThoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjg2IDE1Ljk0di00LjI3aC0uMDlMOSAxMi4zdi42OWwxLjAxLS4zMXYzLjI2ek0xMi4yNSAxMy40NHYuNzRjMCAxLjkgMS4zMSAxLjgyIDEuNDQgMS44Mi4xNCAwIDEuNDQuMDkgMS40NC0xLjgydi0uNzRjMC0xLjktMS4zMS0xLjgyLTEuNDQtMS44Mi0uMTQgMC0xLjQ0LS4wOS0xLjQ0IDEuODJ6bTIuMDQtLjEydi45N2MwIC43Ny0uMjEgMS4wMy0uNTkgMS4wM3MtLjYtLjI2LS42LTEuMDN2LS45N2MwLS43NS4yMi0xLjAxLjU5LTEuMDEuMzgtLjAxLjYuMjYuNiAxLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3J3YXJkMzAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MwIDMuMzEtMi42OSA2LTYgNnMtNi0yLjY5LTYtNiAyLjY5LTYgNi02djRsNS01LTUtNXY0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LThoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjA2IDE1LjM4Yy0uMjkgMC0uNjItLjE3LS42Mi0uNTRoLS44NWMwIC45Ny45IDEuMjMgMS40NSAxLjIzLjg3IDAgMS41MS0uNDYgMS41MS0xLjI1IDAtLjY2LS40NS0uOS0uNzEtMSAuMTEtLjA1LjY1LS4zMi42NS0uOTIgMC0uMjEtLjA1LTEuMjItMS40NC0xLjIyLS42MiAwLTEuNC4zNS0xLjQgMS4xNmguODVjMC0uMzQuMzEtLjQ4LjU3LS40OC41OSAwIC41OC41LjU4LjU0IDAgLjUyLS40MS41OS0uNjMuNTloLS40NnYuNjZoLjQ1Yy42NSAwIC43LjQyLjcuNjQgMCAuMzItLjIxLjU5LS42NS41OXpNMTMuODUgMTEuNjhjLS4xNCAwLTEuNDQtLjA4LTEuNDQgMS44MnYuNzRjMCAxLjkgMS4zMSAxLjgyIDEuNDQgMS44Mi4xNCAwIDEuNDQuMDkgMS40NC0xLjgydi0uNzRjLjAxLTEuOTEtMS4zLTEuODItMS40NC0xLjgyem0uNiAyLjY3YzAgLjc3LS4yMSAxLjAzLS41OSAxLjAzcy0uNi0uMjYtLjYtMS4wM3YtLjk3YzAtLjc1LjIyLTEuMDEuNTktMS4wMS4zOCAwIC42LjI2LjYgMS4wMXYuOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcndhcmQ1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTYgMi42OS02IDYtNnY0bDUtNS01LTV2NGMtNC40MiAwLTggMy41OC04IDhzMy41OCA4IDggOCA4LTMuNTggOC04aC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4wMyAxNS4zOGMtLjQ0IDAtLjU4LS4zMS0uNi0uNTZoLS44NGMuMDMuODUuNzkgMS4yNSAxLjQ0IDEuMjUuOTMgMCAxLjQ0LS42MyAxLjQ0LTEuNDMgMC0xLjMzLS45Ny0xLjQ0LTEuMy0xLjQ0LS4yIDAtLjQzLjA1LS42NC4xNmwuMTEtLjkyaDEuN3YtLjcxaC0yLjM5bC0uMjUgMi4xNy42Ny4xN2MuMTMtLjEzLjI4LS4yMy41Ny0uMjMuNCAwIC42OS4yMy42OS43NS0uMDEuMDUuMDIuNzktLjYuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdhbWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgNy41VjJIOXY1LjVsMyAzIDMtM3pNNy41IDlIMnY2aDUuNWwzLTMtMy0zek05IDE2LjVWMjJoNnYtNS41bC0zLTMtMyAzek0xNi41IDlsLTMgMyAzIDNIMjJWOWgtNS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTggMTJIOS41di0yaC0ydjJINlY5aDEuNXYyLjVoMlY5SDExdjZ6bTItNmg0Yy41NSAwIDEgLjQ1IDEgMXY0YzAgLjU1LS40NSAxLTEgMWgtNFY5em0xLjUgNC41aDJ2LTNoLTJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGVhcmluZ0Rpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4wMyAzLjJDNy4xNSAyLjQ0IDguNTEgMiAxMCAyYzMuOTMgMCA3IDMuMDcgNyA3IDAgMS4yNi0uMzggMi42NS0xLjA3IDMuOS0uMDIuMDQtLjA1LjA4LS4wOC4xM2wtMS40OC0xLjQ4Yy40LS44Ni42My0xLjc1LjYzLTIuNTUgMC0yLjgtMi4yLTUtNS01LS45MiAwLTEuNzYuMjYtMi41LjY3TDYuMDMgMy4yem0xMS4xOCAxMS4xOCAxLjQzIDEuNDNDMjAuMTEgMTMuOTMgMjEgMTEuNTcgMjEgOWMwLTMuMDQtMS4yMy01Ljc5LTMuMjItNy43OGwtMS40MiAxLjQyQTguOTM3IDguOTM3IDAgMCAxIDE5IDljMCAyLjAyLS42NyAzLjg4LTEuNzkgNS4zOHpNMTAgNi41Yy0uMjEgMC0uNC4wMy0uNTkuMDhsMy4wMSAzLjAxYy4wNS0uMTkuMDgtLjM4LjA4LS41OUEyLjUgMi41IDAgMCAwIDEwIDYuNXptMTEuMTkgMTQuNjlMMi44MSAyLjgxIDEuMzkgNC4yMmwyLjEzIDIuMTNDMy4xOSA3LjE2IDMgOC4wNSAzIDloMmMwLS4zNi4wNS0uNzEuMTItMS4wNWw2LjYxIDYuNjFjLS44OC42OC0xLjc4IDEuNDEtMi4yNyAyLjktLjUgMS41LTEgMi4wMS0xLjcxIDIuMzgtLjE5LjEtLjQ2LjE2LS43NS4xNi0xLjEgMC0yLS45LTItMkgzYTMuOTk5IDMuOTk5IDAgMCAwIDUuNjQgMy42NWMxLjM2LS43MSAyLjEzLTEuNzMgMi43My0zLjU1LjMyLS45OC45LTEuNDMgMS43MS0yLjA1LjAzLS4wMi4wNS0uMDQuMDgtLjA2bDYuNjIgNi42MiAxLjQxLTEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhlYXJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAyMGMtLjI5IDAtLjU2LS4wNi0uNzYtLjE1LS43MS0uMzctMS4yMS0uODgtMS43MS0yLjM4LS41MS0xLjU2LTEuNDctMi4yOS0yLjM5LTMtLjc5LS42MS0xLjYxLTEuMjQtMi4zMi0yLjUzQzkuMjkgMTAuOTggOSA5LjkzIDkgOWMwLTIuOCAyLjItNSA1LTVzNSAyLjIgNSA1aDJjMC0zLjkzLTMuMDctNy03LTdTNyA1LjA3IDcgOWMwIDEuMjYuMzggMi42NSAxLjA3IDMuOS45MSAxLjY1IDEuOTggMi40OCAyLjg1IDMuMTUuODEuNjIgMS4zOSAxLjA3IDEuNzEgMi4wNS42IDEuODIgMS4zNyAyLjg0IDIuNzMgMy41NUEzLjk5OSAzLjk5OSAwIDAgMCAyMSAxOGgtMmMwIDEuMS0uOSAyLTIgMnpNNy42NCAyLjY0IDYuMjIgMS4yMkM0LjIzIDMuMjEgMyA1Ljk2IDMgOXMxLjIzIDUuNzkgMy4yMiA3Ljc4bDEuNDEtMS40MUM2LjAxIDEzLjc0IDUgMTEuNDkgNSA5czEuMDEtNC43NCAyLjY0LTYuMzZ6TTExLjUgOWEyLjUgMi41IDAgMCAwIDUgMCAyLjUgMi41IDAgMCAwLTUgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGlnaFF1YWxpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bS04IDExSDkuNXYtMmgtMnYySDZWOWgxLjV2Mi41aDJWOUgxMXY2em03LTFjMCAuNTUtLjQ1IDEtMSAxaC0uNzV2MS41aC0xLjVWMTVIMTRjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXY0em0tMy41LS41aDJ2LTNoLTJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW50ZXJwcmV0ZXJNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSAxNi41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjV2LTIuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVYxNWMwIC44My0uNjcgMS41LTEuNSAxLjV6TTIwIDIwaDF2LTEuNTRjMS42OS0uMjQgMy0xLjcgMy0zLjQ2aC0xYTIuNSAyLjUgMCAwIDEtNSAwaC0xYzAgMS43NiAxLjMxIDMuMjIgMyAzLjQ2VjIwek05IDEyYy0yLjIxIDAtNC0xLjc5LTQtNGEzLjk5OSAzLjk5OSAwIDAgMSA1LjM0LTMuNzdBNS45MzggNS45MzggMCAwIDAgOSA4YzAgMS40My41IDIuNzQgMS4zNCAzLjc3LS40Mi4xNS0uODcuMjMtMS4zNC4yM3ptLTEuODkgMS4xM0E0Ljk2NSA0Ljk2NSAwIDAgMCA1IDE3LjIyVjIwSDF2LTIuNzhjMC0xLjEyLjYxLTIuMTUgMS42MS0yLjY2IDEuMjQtLjY0IDIuNzYtMS4xOSA0LjUtMS40M3pNMTEgOGMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0LTEuNzkgNC00IDQtNC0xLjc5LTQtNHptNy4zMiAxMmE0Ljk5NyA0Ljk5NyAwIDAgMS0yLjgyLTQuNWMwLS44OS4yMy0xLjczLjY0LTIuNDUtLjM3LS4wMy0uNzUtLjA1LTEuMTQtLjA1LTIuNTMgMC00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA3IDE3LjIyVjIwaDExLjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaWJyYXJ5QWRkQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTcuNTMgMTJMOSAxMC41bDEuNC0xLjQxIDIuMDcgMi4wOEwxNy42IDYgMTkgNy40MSAxMi40NyAxNHpNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpYnJhcnlBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTYtNEg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS0xIDloLTR2NGgtMnYtNEg5VjloNFY1aDJ2NGg0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpYnJhcnlCb29rcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTEgOUg5VjloMTB2MnptLTQgNEg5di0yaDZ2MnptNC04SDlWNWgxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaWJyYXJ5TXVzaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTIgNWgtM3Y1LjVhMi41IDIuNSAwIDAgMS01IDAgMi41IDIuNSAwIDAgMSAyLjUtMi41Yy41NyAwIDEuMDguMTkgMS41LjUxVjVoNHYyek00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9vcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRWMUw4IDVsNCA0VjZjMy4zMSAwIDYgMi42OSA2IDYgMCAxLjAxLS4yNSAxLjk3LS43IDIuOGwxLjQ2IDEuNDZBNy45MyA3LjkzIDAgMCAwIDIwIDEyYzAtNC40Mi0zLjU4LTgtOC04em0wIDE0Yy0zLjMxIDAtNi0yLjY5LTYtNiAwLTEuMDEuMjUtMS45Ny43LTIuOEw1LjI0IDcuNzRBNy45MyA3LjkzIDAgMCAwIDQgMTJjMCA0LjQyIDMuNTggOCA4IDh2M2w0LTQtNC00djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEx5cmljcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDljMC0yLjA0IDEuMjQtMy43OSAzLTQuNTdWNGMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDljMS4xIDAgMi0uOSAyLTJ2LTIuNDJjLTEuNzYtLjc4LTMtMi41My0zLTQuNTh6bS00IDVINnYtMmg0djJ6bTMtM0g2VjloN3Yyem0wLTNINlY2aDd2MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNi4xOGMtLjMxLS4xMS0uNjUtLjE4LTEtLjE4LTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtM1YzaDJWMWgtNHY1LjE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNaWNOb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTRjMS42NiAwIDIuOTktMS4zNCAyLjk5LTNMMTUgNWMwLTEuNjYtMS4zNC0zLTMtM1M5IDMuMzQgOSA1djZjMCAxLjY2IDEuMzQgMyAzIDN6bS0xLjItOS4xYzAtLjY2LjU0LTEuMiAxLjItMS4yLjY2IDAgMS4yLjU0IDEuMiAxLjJsLS4wMSA2LjJjMCAuNjYtLjUzIDEuMi0xLjE5IDEuMi0uNjYgMC0xLjItLjU0LTEuMi0xLjJWNC45em02LjUgNi4xYzAgMy0yLjU0IDUuMS01LjMgNS4xUzYuNyAxNCA2LjcgMTFINWMwIDMuNDEgMi43MiA2LjIzIDYgNi43MlYyMWgydi0zLjI4YzMuMjgtLjQ4IDYtMy4zIDYtNi43MmgtMS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNaWNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTFoLTEuN2MwIC43NC0uMTYgMS40My0uNDMgMi4wNWwxLjIzIDEuMjNjLjU2LS45OC45LTIuMDkuOS0zLjI4em0tNC4wMi4xN2MwLS4wNi4wMi0uMTEuMDItLjE3VjVjMC0xLjY2LTEuMzQtMy0zLTNTOSAzLjM0IDkgNXYuMThsNS45OCA1Ljk5ek00LjI3IDMgMyA0LjI3bDYuMDEgNi4wMVYxMWMwIDEuNjYgMS4zMyAzIDIuOTkgMyAuMjIgMCAuNDQtLjAzLjY1LS4wOGwxLjY2IDEuNjZjLS43MS4zMy0xLjUuNTItMi4zMS41Mi0yLjc2IDAtNS4zLTIuMS01LjMtNS4xSDVjMCAzLjQxIDIuNzIgNi4yMyA2IDYuNzJWMjFoMnYtMy4yOGMuOTEtLjEzIDEuNzctLjQ1IDIuNTQtLjlMMTkuNzMgMjEgMjEgMTkuNzMgNC4yNyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNGMxLjY2IDAgMi45OS0xLjM0IDIuOTktM0wxNSA1YzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDV2NmMwIDEuNjYgMS4zNCAzIDMgM3ptNS4zLTNjMCAzLTIuNTQgNS4xLTUuMyA1LjFTNi43IDE0IDYuNyAxMUg1YzAgMy40MSAyLjcyIDYuMjMgNiA2LjcyVjIxaDJ2LTMuMjhjMy4yOC0uNDggNi0zLjMgNi02LjcyaC0xLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1pc3NlZFZpZGVvQ2FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTAuNVY3YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xdi0zLjVsNCA0di0xMWwtNCA0ek0xMCAxNWwtMy44OS0zLjg5djIuNTVINVY5LjIyaDQuNDR2MS4xMUg2Ljg5bDMuMTEgMy4xIDQuMjItNC4yMi43OC43OS01IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vdmllRWRpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTBoMThWNmMwLTEuMS0uOS0yLTItMmgtM2wyIDRoLTNsLTItNGgtMmwyIDRoLTNMOSA0SDdsMiA0SDZMNCA0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmg4di0ySDR2LTh6TTE0IDE4Ljg4VjIxaDIuMTJsNS4xNy01LjE3LTIuMTItMi4xMnpNMjIuNzEgMTNsLS43MS0uNzFhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0uNzEuNzFMMjIgMTUuMTJsLjcxLS43MWEuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vdmllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggNCAyIDRoLTNsLTItNGgtMmwyIDRoLTNsLTItNEg4bDIgNEg3TDUgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNdXNpY1ZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkgzVjVoMTh2MTR6TTggMTVjMC0xLjY2IDEuMzQtMyAzLTMgLjM1IDAgLjY5LjA3IDEgLjE4VjZoNXYyaC0zdjcuMDNBMy4wMDMgMy4wMDMgMCAwIDEgMTEgMThjLTEuNjYgMC0zLTEuMzQtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZXdSZWxlYXNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIzIDEyLTIuNDQtMi43OC4zNC0zLjY4LTMuNjEtLjgyLTEuODktMy4xOEwxMiAzIDguNiAxLjU0IDYuNzEgNC43MmwtMy42MS44MS4zNCAzLjY4TDEgMTJsMi40NCAyLjc4LS4zNCAzLjY5IDMuNjEuODIgMS44OSAzLjE4TDEyIDIxbDMuNCAxLjQ2IDEuODktMy4xOCAzLjYxLS44Mi0uMzQtMy42OEwyMyAxMnptLTEwIDVoLTJ2LTJoMnYyem0wLTRoLTJWN2gydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vdEludGVyZXN0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOCAwLTEuODUuNjMtMy41NSAxLjY5LTQuOUwxNi45IDE4LjMxQTcuOTAyIDcuOTAyIDAgMCAxIDEyIDIwem02LjMxLTMuMUw3LjEgNS42OUE3LjkwMiA3LjkwMiAwIDAgMSAxMiA0YzQuNDIgMCA4IDMuNTggOCA4IDAgMS44NS0uNjMgMy41NS0xLjY5IDQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgMTAtNi02SDRjLTEuMSAwLTIgLjktMiAydjEyLjAxYzAgMS4xLjkgMS45OSAyIDEuOTlsMTYtLjAxYzEuMSAwIDItLjg5IDItMS45OXYtOHptLTctNC41IDUuNSA1LjVIMTVWNS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYXVzZUNpcmNsZUZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0xIDE0SDlWOGgydjh6bTQgMGgtMlY4aDJ2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGF1c2VDaXJjbGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNmgyVjhIOXY4em0zLTE0QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMS00aDJWOGgtMnY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYXVzZUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0xIDE0SDlWOGgydjh6bTQgMGgtMlY4aDJ2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGF1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE5aDRWNUg2djE0em04LTE0djE0aDRWNWgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxheUFycm93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA1djE0bDExLTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBsYXlDaXJjbGVGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMiAxNC41di05bDYgNC41LTYgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQbGF5Q2lyY2xlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDE2LjUgNi00LjUtNi00LjV2OXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBsYXlDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek05LjUgMTYuNXYtOWw3IDQuNS03IDQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxheURpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwem0xMS43NSAxMS40Ny0uMTEtLjExLjExLjExelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDUuMTlWNWwxMSA3LTIuNTUgMS42M0w4IDUuMTl6bTEyIDE0LjU0LTUuMTEtNS4xMUw4IDcuNzMgNC4yNyA0IDMgNS4yN2w1IDVWMTlsNS4zMy0zLjQgNS40IDUuNEwyMCAxOS43M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxheWxpc3RBZGRDaGVja0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTcgN2g3djJIN1Y3em0wIDNoN3YySDd2LTJ6bTMgNUg3di0yaDN2MnptNC4wNSAzLjM2LTIuODMtMi44MyAxLjQxLTEuNDEgMS40MSAxLjQxTDE3LjU5IDEyIDE5IDEzLjQxbC00Ljk1IDQuOTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBsYXlsaXN0QWRkQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEwaDExdjJIM3pNMyA2aDExdjJIM3pNMyAxNGg3djJIM3pNMjAuNTkgMTEuOTNsLTQuMjUgNC4yNC0yLjEyLTIuMTItMS40MSAxLjQxTDE2LjM0IDE5IDIyIDEzLjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQbGF5bGlzdEFkZENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTcgN2g3djJIN1Y3em0zIDhIN3YtMmgzdjJ6bS0zLTN2LTJoN3YySDd6bTEyIDNoLTJ2MmgtMnYtMmgtMnYtMmgydi0yaDJ2MmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBsYXlsaXN0QWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTBIM3YyaDExdi0yem0wLTRIM3YyaDExVjZ6bTQgOHYtNGgtMnY0aC00djJoNHY0aDJ2LTRoNHYtMmgtNHpNMyAxNmg3di0ySDN2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxheWxpc3RQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMGgxMXYySDN6TTMgNmgxMXYySDN6TTMgMTRoN3YySDN6TTE2IDEzdjhsNi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQbGF5bGlzdFJlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEwSDN2MmgxMXYtMnptMC00SDN2MmgxMVY2ek0zIDE2aDd2LTJIM3Yyem0xMS40MSA2TDE3IDE5LjQxIDE5LjU5IDIyIDIxIDIwLjU5IDE4LjQxIDE4IDIxIDE1LjQxIDE5LjU5IDE0IDE3IDE2LjU5IDE0LjQxIDE0IDEzIDE1LjQxIDE1LjU5IDE4IDEzIDIwLjU5IDE0LjQxIDIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRRdWV1ZU11c2ljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgNkgzdjJoMTJWNnptMCA0SDN2MmgxMnYtMnpNMyAxNmg4di0ySDN2MnpNMTcgNnY4LjE4Yy0uMzEtLjExLS42NS0uMTgtMS0uMTgtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zVjhoM1Y2aC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRRdWV1ZVBsYXlOZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNXYyaDh2LTJoMnYtMkgzVjVoMTh2OGgyVjVhMiAyIDAgMCAwLTItMnptLTggN1Y3aC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTN6bTExIDgtNC41IDQuNUwxOCAyMWwzLTMtMy0zIDEuNS0xLjVMMjQgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFF1ZXVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6bTE2LTRIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMSA5aC00djRoLTJ2LTRIOVY5aDRWNWgydjRoNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSYWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuMjQgNi4xNUMyLjUxIDYuNDMgMiA3LjE3IDIgOHYxMmEyIDIgMCAwIDAgMiAyaDE2YTIgMiAwIDAgMCAyLTJWOGMwLTEuMTEtLjg5LTItMi0ySDguM2w4LjI2LTMuMzRMMTUuODggMSAzLjI0IDYuMTV6TTcgMjBjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0xMy04aC0ydi0yaC0ydjJINFY4aDE2djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlY2VudEFjdG9ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDV2MTRoMlY1aC0yem0tNCAxNGgyVjVoLTJ2MTR6TTE0IDVIMmMtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDEyYy41NSAwIDEtLjQ1IDEtMVY2YzAtLjU1LS40NS0xLTEtMXpNOCA3Ljc1YzEuMjQgMCAyLjI1IDEuMDEgMi4yNSAyLjI1UzkuMjQgMTIuMjUgOCAxMi4yNSA1Ljc1IDExLjI0IDUuNzUgMTAgNi43NiA3Ljc1IDggNy43NXpNMTIuNSAxN2gtOXYtLjc1YzAtMS41IDMtMi4yNSA0LjUtMi4yNXM0LjUuNzUgNC41IDIuMjVWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlbW92ZUZyb21RdWV1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNWEyIDIgMCAwIDAtMi0yem0wIDE0SDNWNWgxOHYxMnptLTUtN3YySDh2LTJoOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwZWF0T24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yMSAxSDNjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNNyA3aDEwdjNsNC00LTQtNHYzSDV2NmgyVjd6bTEwIDEwSDd2LTNsLTQgNCA0IDR2LTNoMTJ2LTZoLTJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwZWF0T25lT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yMSAxSDNjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNNyA3aDEwdjNsNC00LTQtNHYzSDV2NmgyVjd6bTEwIDEwSDd2LTNsLTQgNCA0IDR2LTNoMTJ2LTZoLTJ2NHptLTQtMlY5aC0xbC0yIDF2MWgxLjV2NEgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwZWF0T25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3aDEwdjNsNC00LTQtNHYzSDV2NmgyVjd6bTEwIDEwSDd2LTNsLTQgNCA0IDR2LTNoMTJ2LTZoLTJ2NHptLTQtMlY5aC0xbC0yIDF2MWgxLjV2NEgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3aDEwdjNsNC00LTQtNHYzSDV2NmgyVjd6bTEwIDEwSDd2LTNsLTQgNCA0IDR2LTNoMTJ2LTZoLTJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwbGF5MTAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSA1VjFsLTUgNSA1IDVWN2MzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNi02LTIuNjktNi02aC0yYzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LTgtMy41OC04LTgtOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuODkgMTZoLS44NXYtMy4yNmwtMS4wMS4zMXYtLjY5bDEuNzctLjYzaC4wOVYxNnpNMTUuMTcgMTQuMjRjMCAuMzItLjAzLjYtLjEuODJzLS4xNy40Mi0uMjkuNTctLjI4LjI2LS40NS4zMy0uMzcuMS0uNTkuMS0uNDEtLjAzLS41OS0uMS0uMzMtLjE4LS40Ni0uMzMtLjIzLS4zNC0uMy0uNTctLjExLS41LS4xMS0uODJ2LS43NGMwLS4zMi4wMy0uNi4xLS44MnMuMTctLjQyLjI5LS41Ny4yOC0uMjYuNDUtLjMzLjM3LS4xLjU5LS4xLjQxLjAzLjU5LjEuMzMuMTguNDYuMzMuMjMuMzQuMy41Ny4xMS41LjExLjgydi43NHptLS44NS0uODZjMC0uMTktLjAxLS4zNS0uMDQtLjQ4cy0uMDctLjIzLS4xMi0uMzEtLjExLS4xNC0uMTktLjE3LS4xNi0uMDUtLjI1LS4wNS0uMTguMDItLjI1LjA1LS4xNC4wOS0uMTkuMTctLjA5LjE4LS4xMi4zMS0uMDQuMjktLjA0LjQ4di45N2MwIC4xOS4wMS4zNS4wNC40OHMuMDcuMjQuMTIuMzIuMTEuMTQuMTkuMTcuMTYuMDUuMjUuMDUuMTgtLjAyLjI1LS4wNS4xNC0uMDkuMTktLjE3LjA5LS4xOS4xMS0uMzIuMDQtLjI5LjA0LS40OHYtLjk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBsYXkzMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVWMUw3IDZsNSA1VjdjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDYtNi0yLjY5LTYtNkg0YzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LTgtMy41OC04LTgtOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41NiAxMy40OWguNDVjLjIxIDAgLjM3LS4wNS40OC0uMTZzLjE2LS4yNS4xNi0uNDNhLjUzOC41MzggMCAwIDAtLjE1LS4zOWMtLjA1LS4wNS0uMTEtLjA5LS4xOC0uMTFzLS4xNi0uMDQtLjI1LS4wNGMtLjA4IDAtLjE1LjAxLS4yMi4wM3MtLjEzLjA1LS4xOC4xLS4wOS4wOS0uMTIuMTUtLjA1LjEzLS4wNS4yaC0uODVhMS4wNiAxLjA2IDAgMCAxIC40MS0uODVjLjEzLS4xLjI3LS4xOC40NC0uMjNzLjM1LS4wOC41NC0uMDhjLjIxIDAgLjQxLjAzLjU5LjA4cy4zMy4xMy40Ni4yMy4yMy4yMy4zLjM4LjExLjMzLjExLjUzYS44NDIuODQyIDAgMCAxLS4xNy41MiAxLjEgMS4xIDAgMCAxLS40OC4zOWMuMjQuMDkuNDIuMjEuNTQuMzlzLjE4LjM4LjE4LjYxYzAgLjItLjA0LjM4LS4xMi41M3MtLjE4LjI5LS4zMi4zOS0uMjkuMTktLjQ4LjI0LS4zOC4wOC0uNi4wOGMtLjE4IDAtLjM2LS4wMi0uNTMtLjA3cy0uMzMtLjEyLS40Ni0uMjMtLjI1LS4yMy0uMzMtLjM4LS4xMi0uMzQtLjEyLS41NWguODVjMCAuMDguMDIuMTUuMDUuMjJzLjA3LjEyLjEzLjE3LjEyLjA5LjIuMTEuMTYuMDQuMjUuMDRjLjEgMCAuMTktLjAxLjI3LS4wNHMuMTUtLjA3LjItLjEyLjEtLjExLjEzLS4xOC4wNC0uMTUuMDQtLjI0YzAtLjExLS4wMi0uMjEtLjA1LS4yOXMtLjA4LS4xNS0uMTQtLjItLjEzLS4wOS0uMjItLjExLS4xOC0uMDQtLjI5LS4wNGgtLjQ3di0uNjV6TTE1LjMgMTQuMjRjMCAuMzItLjAzLjYtLjEuODJzLS4xNy40Mi0uMjkuNTctLjI4LjI2LS40NS4zMy0uMzcuMS0uNTkuMS0uNDEtLjAzLS41OS0uMS0uMzMtLjE4LS40Ni0uMzMtLjIzLS4zNC0uMy0uNTctLjExLS41LS4xMS0uODJ2LS43NGMwLS4zMi4wMy0uNi4xLS44MnMuMTctLjQyLjI5LS41Ny4yOC0uMjYuNDUtLjMzLjM3LS4xLjU5LS4xLjQxLjAzLjU5LjEuMzMuMTguNDYuMzMuMjMuMzQuMy41Ny4xMS41LjExLjgydi43NHptLS44NS0uODZjMC0uMTktLjAxLS4zNS0uMDQtLjQ4cy0uMDctLjIzLS4xMi0uMzEtLjExLS4xNC0uMTktLjE3LS4xNi0uMDUtLjI1LS4wNS0uMTguMDItLjI1LjA1LS4xNC4wOS0uMTkuMTctLjA5LjE4LS4xMi4zMS0uMDQuMjktLjA0LjQ4di45N2MwIC4xOS4wMS4zNS4wNC40OHMuMDcuMjQuMTIuMzIuMTEuMTQuMTkuMTcuMTYuMDUuMjUuMDUuMTgtLjAyLjI1LS4wNS4xNC0uMDkuMTktLjE3LjA5LS4xOS4xMS0uMzJjLjAzLS4xMy4wNC0uMjkuMDQtLjQ4di0uOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlcGxheTUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1VjFMNyA2bDUgNVY3YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTZINGMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04LTMuNTgtOC04LTh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwLjY5IDEzLjkuMjUtMi4xN2gyLjM5di43MWgtMS43bC0uMTEuOTJjLjAzLS4wMi4wNy0uMDMuMTEtLjA1cy4wOS0uMDQuMTUtLjA1LjEyLS4wMy4xOC0uMDQuMTMtLjAyLjItLjAyYy4yMSAwIC4zOS4wMy41NS4xcy4zLjE2LjQxLjI4LjIuMjcuMjUuNDUuMDkuMzguMDkuNmMwIC4xOS0uMDMuMzctLjA5LjU0cy0uMTUuMzItLjI3LjQ1LS4yNy4yNC0uNDUuMzEtLjM5LjEyLS42NC4xMmMtLjE4IDAtLjM2LS4wMy0uNTMtLjA4cy0uMzItLjE0LS40Ni0uMjQtLjI0LS4yNC0uMzItLjM5LS4xMy0uMzMtLjEzLS41M2guODRjLjAyLjE4LjA4LjMyLjE5LjQxcy4yNS4xNS40Mi4xNWEuNDkuNDkgMCAwIDAgLjQ1LS4yM2MuMDQtLjA3LjA4LS4xNS4xMS0uMjVzLjAzLS4yLjAzLS4zMS0uMDEtLjIxLS4wNC0uMzEtLjA3LS4xNy0uMTMtLjI0LS4xMy0uMTItLjIxLS4xNS0uMTktLjA1LS4zLS4wNWMtLjA4IDAtLjE1LjAxLS4yLjAycy0uMTEuMDMtLjE1LjA1LS4wOC4wNS0uMTIuMDctLjA3LjA2LS4xLjA5bC0uNjctLjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBsYXlDaXJjbGVGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem02IDEwYzAgMy4zMS0yLjY5IDYtNiA2cy02LTIuNjktNi02aDJjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNC0xLjc5LTQtNC00djNMOCA3bDQtNHYzYzMuMzEgMCA2IDIuNjkgNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1VjFMNyA2bDUgNVY3YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTZINGMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04LTMuNTgtOC04LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS02IDZoNGMuNTUgMCAxIC40NSAxIDF2NGMwIC41NS0uNDUgMS0xIDFoLTRWOXptLTMuNSA0LjV2LTFIN2MtLjU1IDAtMS0uNDUtMS0xVjEwYzAtLjU1LjQ1LTEgMS0xaDNjLjU1IDAgMSAuNDUgMSAxdjFIOS41di0uNWgtMnYxSDEwYy41NSAwIDEgLjQ1IDEgMVYxNGMwIC41NS0uNDUgMS0xIDFIN2MtLjU1IDAtMS0uNDUtMS0xdi0xaDEuNXYuNWgyem01IDBoMnYtM2gtMnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaHVmZmxlT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yMSAxSDNjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNMTAuNTkgOS4xNyA1LjQxIDQgNCA1LjQxbDUuMTcgNS4xNyAxLjQyLTEuNDF6TTE0LjUgNGwyLjA0IDIuMDRMNCAxOC41OSA1LjQxIDIwIDE3Ljk2IDcuNDYgMjAgOS41VjRoLTUuNXptLjMzIDkuNDEtMS40MSAxLjQxIDMuMTMgMy4xM0wxNC41IDIwSDIwdi01LjVsLTIuMDQgMi4wNC0zLjEzLTMuMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNodWZmbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41OSA5LjE3IDUuNDEgNCA0IDUuNDFsNS4xNyA1LjE3IDEuNDItMS40MXpNMTQuNSA0bDIuMDQgMi4wNEw0IDE4LjU5IDUuNDEgMjAgMTcuOTYgNy40NiAyMCA5LjVWNGgtNS41em0uMzMgOS40MS0xLjQxIDEuNDEgMy4xMyAzLjEzTDE0LjUgMjBIMjB2LTUuNWwtMi4wNCAyLjA0LTMuMTMtMy4xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2tpcE5leHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02IDE4IDguNS02TDYgNnYxMnpNMTYgNnYxMmgyVjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNraXBQcmV2aW91cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNmgydjEySDZ6bTMuNSA2IDguNSA2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNsb3dNb3Rpb25WaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuMDUgOS43OSAxMCA3LjV2OWwzLjA1LTIuMjlMMTYgMTJ6bTAgMEwxMCA3LjV2OWwzLjA1LTIuMjlMMTYgMTJ6bTAgMEwxMCA3LjV2OWwzLjA1LTIuMjlMMTYgMTJ6TTExIDQuMDdWMi4wNWMtMi4wMS4yLTMuODQgMS01LjMyIDIuMjFMNy4xIDUuNjlBNy45NDEgNy45NDEgMCAwIDEgMTEgNC4wN3pNNS42OSA3LjEgNC4yNiA1LjY4QTkuOTQ5IDkuOTQ5IDAgMCAwIDIuMDUgMTFoMi4wMmMuMTgtMS40Ni43Ni0yLjc5IDEuNjItMy45ek00LjA3IDEzSDIuMDVjLjIgMi4wMSAxIDMuODQgMi4yMSA1LjMybDEuNDMtMS40M0E3Ljg2OCA3Ljg2OCAwIDAgMSA0LjA3IDEzem0xLjYxIDYuNzRBOS45ODEgOS45ODEgMCAwIDAgMTEgMjEuOTV2LTIuMDJhNy45NDEgNy45NDEgMCAwIDEtMy45LTEuNjJsLTEuNDIgMS40M3pNMjIgMTJjMCA1LjE2LTMuOTIgOS40Mi04Ljk1IDkuOTV2LTIuMDJDMTYuOTcgMTkuNDEgMjAgMTYuMDUgMjAgMTJzLTMuMDMtNy40MS02Ljk1LTcuOTNWMi4wNUMxOC4wOCAyLjU4IDIyIDYuODQgMjIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNub296ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuODggMy4zOSA2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMjIgNS43MmwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDlhOSA5IDAgMCAwIDAtMTh6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3em0tMy05aDMuNjNMOSAxNS4yVjE3aDZ2LTJoLTMuNjNMMTUgMTAuOFY5SDl2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU29ydEJ5QWxwaGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bS43NS43NWgyMi41djIyLjVILjc1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC45NCA0LjY2aC00LjcybDIuMzYtMi4zNnptLTQuNjkgMTQuNzFoNC42NmwtMi4zMyAyLjMzek02LjEgNi4yNyAxLjYgMTcuNzNoMS44NGwuOTItMi40NWg1LjExbC45MiAyLjQ1aDEuODRMNy43NCA2LjI3SDYuMXptLTEuMTMgNy4zNyAxLjk0LTUuMTggMS45NCA1LjE4SDQuOTd6bTEwLjc2IDIuNWg2LjEydjEuNTloLTguNTN2LTEuMjlsNS45Mi04LjU2aC01Ljg4di0xLjZoOC4zdjEuMjZsLTUuOTMgOC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGVlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjM4IDguNTctMS4yMyAxLjg1YTggOCAwIDAgMS0uMjIgNy41OEg1LjA3QTggOCAwIDAgMSAxNS41OCA2Ljg1bDEuODUtMS4yM0ExMCAxMCAwIDAgMCAzLjM1IDE5YTIgMiAwIDAgMCAxLjcyIDFoMTMuODVhMiAyIDAgMCAwIDEuNzQtMSAxMCAxMCAwIDAgMC0uMjctMTAuNDR6bS05Ljc5IDYuODRhMiAyIDAgMCAwIDIuODMgMGw1LjY2LTguNDktOC40OSA1LjY2YTIgMiAwIDAgMCAwIDIuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0b3BDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem00IDE0SDhWOGg4djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDZoMTJ2MTJINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3Vic2NyaXB0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDhINFY2aDE2djJ6bS0yLTZINnYyaDEyVjJ6bTQgMTB2OGMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMnYtOGMwLTEuMS45LTIgMi0yaDE2YzEuMSAwIDIgLjkgMiAyem0tNiA0LTYtMy4yN3Y2LjUzTDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdWJ0aXRsZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNCAxMmg0djJINHYtMnptMTAgNkg0di0yaDEwdjJ6bTYgMGgtNHYtMmg0djJ6bTAtNEgxMHYtMmgxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdXJyb3VuZFNvdW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTcuNzYgMTYuMjRsLTEuNDEgMS40MUE3LjkwOSA3LjkwOSAwIDAgMSA0IDEyYzAtMi4wNS43OC00LjEgMi4zNC01LjY2bDEuNDEgMS40MUM2LjU5IDguOTMgNiAxMC40NiA2IDEycy41OSAzLjA3IDEuNzYgNC4yNHpNMTIgMTZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0em01LjY2IDEuNjYtMS40MS0xLjQxQzE3LjQxIDE1LjA3IDE4IDEzLjU0IDE4IDEycy0uNTktMy4wNy0xLjc2LTQuMjRsMS40MS0xLjQxQTcuOTA5IDcuOTA5IDAgMCAxIDIwIDEyYzAgMi4wNS0uNzggNC4xLTIuMzQgNS42NnpNMTIgMTBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWRlb0NhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEwLjVWN2MwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxdjEwYzAgLjU1LjQ1IDEgMSAxaDEyYy41NSAwIDEtLjQ1IDEtMXYtMy41bDQgNHYtMTFsLTQgNHpNMTQgMTNoLTN2M0g5di0zSDZ2LTJoM1Y4aDJ2M2gzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINi4wMWEyIDIgMCAwIDAtMiAyTDQgMjBjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY4bC02LTZ6bS0xIDdWMy41TDE4LjUgOUgxM3ptMSA1IDItMS4wNnY0LjEyTDE0IDE2djFjMCAuNTUtLjQ1IDEtMSAxSDljLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWg0Yy41NSAwIDEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWRlb0xhYmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxM0gzVjVoMTh2MTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvTGlicmFyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTggMTIuNXYtOWw2IDQuNS02IDQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlkZW9TZXR0aW5ncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNmgxOHY1aDJWNmMwLTEuMS0uOS0yLTItMkgzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDl2LTJIM1Y2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMiA5IDh2OHpNMjIuNzEgMTguNDNjLjAzLS4yOS4wNC0uNTguMDEtLjg2bDEuMDctLjg1Yy4xLS4wOC4xMi0uMjEuMDYtLjMybC0xLjAzLTEuNzljLS4wNi0uMTEtLjE5LS4xNS0uMzEtLjExbC0xLjI4LjVhMy40NCAzLjQ0IDAgMCAwLS43NS0uNDJsLS4yLTEuMzZhLjI0OS4yNDkgMCAwIDAtLjI1LS4yMmgtMi4wN2MtLjEyIDAtLjIzLjA5LS4yNS4yMWwtLjIgMS4zNmMtLjI2LjExLS41MS4yNi0uNzQuNDJsLTEuMjgtLjVjLS4xMi0uMDUtLjI1IDAtLjMxLjExbC0xLjAzIDEuNzljLS4wNi4xMS0uMDQuMjQuMDYuMzJsMS4wNy44NmMtLjAzLjI5LS4wNC41OC0uMDEuODZsLTEuMDcuODVjLS4xLjA4LS4xMi4yMS0uMDYuMzJsMS4wMyAxLjc5Yy4wNi4xMS4xOS4xNS4zMS4xMWwxLjI3LS41Yy4yMy4xNy40OC4zMS43NS40MmwuMiAxLjM2Yy4wMi4xMi4xMi4yMS4yNS4yMWgyLjA3Yy4xMiAwIC4yMy0uMDkuMjUtLjIxbC4yLTEuMzZjLjI2LS4xMS41MS0uMjYuNzQtLjQybDEuMjguNWMuMTIuMDUuMjUgMCAuMzEtLjExbDEuMDMtMS43OWMuMDYtLjExLjA0LS4yNC0uMDYtLjMybC0xLjA2LS44NXpNMTkgMTkuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvY2FtT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxIDYuNS00IDRWN2MwLS41NS0uNDUtMS0xLTFIOS44MkwyMSAxNy4xOFY2LjV6TTMuMjcgMiAyIDMuMjcgNC43MyA2SDRjLS41NSAwLTEgLjQ1LTEgMXYxMGMwIC41NS40NSAxIDEgMWgxMmMuMjEgMCAuMzktLjA4LjU0LS4xOEwxOS43MyAyMSAyMSAxOS43MyAzLjI3IDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvY2FtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTAuNVY3YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xdi0zLjVsNCA0di0xMWwtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWb2x1bWVEb3duQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNy45N3Y4LjA1YzEuNDgtLjczIDIuNS0yLjI1IDIuNS00LjAyUzE1LjQ4IDguNzEgMTQgNy45N3pNMyA5djZoNGw1IDVWNEw3IDlIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVm9sdW1lRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgMTJBNC41IDQuNSAwIDAgMCAxNiA3Ljk3djguMDVjMS40OC0uNzMgMi41LTIuMjUgMi41LTQuMDJ6TTUgOXY2aDRsNSA1VjRMOSA5SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZvbHVtZU11dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDl2Nmg0bDUgNVY0bC01IDVIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVm9sdW1lT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAxMkE0LjUgNC41IDAgMCAwIDE0IDcuOTd2Mi4yMWwyLjQ1IDIuNDVjLjAzLS4yLjA1LS40MS4wNS0uNjN6bTIuNSAwYzAgLjk0LS4yIDEuODItLjU0IDIuNjRsMS41MSAxLjUxQTguNzk2IDguNzk2IDAgMCAwIDIxIDEyYzAtNC4yOC0yLjk5LTcuODYtNy04Ljc3djIuMDZjMi44OS44NiA1IDMuNTQgNSA2Ljcxek00LjI3IDMgMyA0LjI3IDcuNzMgOUgzdjZoNGw1IDV2LTYuNzNsNC4yNSA0LjI1Yy0uNjcuNTItMS40Mi45My0yLjI1IDEuMTh2Mi4wNmE4Ljk5IDguOTkgMCAwIDAgMy42OS0xLjgxTDE5LjczIDIxIDIxIDE5LjczbC05LTlMNC4yNyAzek0xMiA0IDkuOTEgNi4wOSAxMiA4LjE4VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZvbHVtZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA5djZoNGw1IDVWNEw3IDlIM3ptMTMuNSAzQTQuNSA0LjUgMCAwIDAgMTQgNy45N3Y4LjA1YzEuNDgtLjczIDIuNS0yLjI1IDIuNS00LjAyek0xNCAzLjIzdjIuMDZjMi44OS44NiA1IDMuNTQgNSA2Ljcxcy0yLjExIDUuODUtNSA2LjcxdjIuMDZjNC4wMS0uOTEgNy00LjQ5IDctOC43N3MtMi45OS03Ljg2LTctOC43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2ViQXNzZXRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjgzIDRIMjBhMiAyIDAgMCAxIDIgMnYxMmMwIC4zNC0uMDkuNjYtLjIzLjk0TDIwIDE3LjE3VjhoLTkuMTdsLTQtNHptMTMuNjYgMTkuMzFMMTcuMTcgMjBINGEyIDIgMCAwIDEtMi0yVjZjMC0uMzQuMDgtLjY2LjIzLS45NEwuNjkgMy41MSAyLjEgMi4xbDE5LjggMTkuOC0xLjQxIDEuNDF6TTE1LjE3IDE4bC0xMC0xMEg0djEwaDExLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXZWJBc3NldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRINWEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmEyIDIgMCAwIDAtMi0yem0wIDE0SDVWOGgxNHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2ViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNSAxNEg0di00aDExdjR6bTAtNUg0VjloMTF2NHptNSA1aC00VjloNHY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQzUCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINC4wMWMtMS4xIDAtMiAuOS0yIDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTggNGMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTQgOEg4di0uNTdjMC0uODEuNDgtMS41MyAxLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAxIDUuNTYgMEEyLjAxIDIuMDEgMCAwIDEgMTYgMTMuNDNWMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZEljQ2FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3YTEuMDIgMS4wMiAwIDAgMC0xLjAyLjI0bC0yLjIgMi4yYTE1LjA0NSAxNS4wNDUgMCAwIDEtNi41OS02LjU5bDIuMi0yLjIxYS45Ni45NiAwIDAgMCAuMjUtMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNMjEgNmgtM1YzaC0ydjNoLTN2MmgzdjNoMlY4aDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFsdGVybmF0ZUVtYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMGg1di0yaC01Yy00LjM0IDAtOC0zLjY2LTgtOHMzLjY2LTggOC04IDggMy42NiA4IDh2MS40M2MwIC43OS0uNzEgMS41Ny0xLjUgMS41N3MtMS41LS43OC0xLjUtMS41N1YxMmMwLTIuNzYtMi4yNC01LTUtNXMtNSAyLjI0LTUgNSAyLjI0IDUgNSA1YzEuMzggMCAyLjY0LS41NiAzLjU0LTEuNDcuNjUuODkgMS43NyAxLjQ3IDIuOTYgMS40NyAxLjk3IDAgMy41LTEuNiAzLjUtMy41N1YxMmMwLTUuNTItNC40OC0xMC0xMC0xMHptMCAxM2MtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFwcFJlZ2lzdHJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDRoNHY0aC00ek00IDE2aDR2NEg0ek00IDEwaDR2NEg0ek00IDRoNHY0SDR6TTE0IDEyLjQyVjEwaC00djRoMi40MnpNMjAuODggMTEuMjlsLTEuMTctMS4xN2EuNDEuNDEgMCAwIDAtLjU4IDBsLS44OC44OEwyMCAxMi43NWwuODgtLjg4YS40MS40MSAwIDAgMCAwLS41OHpNMTEgMTguMjVWMjBoMS43NWw2LjY3LTYuNjctMS43NS0xLjc1ek0xNiA0aDR2NGgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnVzaW5lc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3VjNIMnYxOGgyMFY3SDEyek02IDE5SDR2LTJoMnYyem0wLTRINHYtMmgydjJ6bTAtNEg0VjloMnYyem0wLTRINFY1aDJ2MnptNCAxMkg4di0yaDJ2MnptMC00SDh2LTJoMnYyem0wLTRIOFY5aDJ2MnptMC00SDhWNWgydjJ6bTEwIDEyaC04di0yaDJ2LTJoLTJ2LTJoMnYtMmgtMlY5aDh2MTB6bS0yLThoLTJ2Mmgydi0yem0wIDRoLTJ2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYWxsRW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOWMtMS42IDAtMy4xNS4yNS00LjYuNzJ2My4xYzAgLjM5LS4yMy43NC0uNTYuOS0uOTguNDktMS44NyAxLjEyLTIuNjYgMS44NS0uMTguMTgtLjQzLjI4LS43LjI4LS4yOCAwLS41My0uMTEtLjcxLS4yOUwuMjkgMTMuMDhhLjk1Ni45NTYgMCAwIDEtLjI5LS43YzAtLjI4LjExLS41My4yOS0uNzFDMy4zNCA4Ljc4IDcuNDYgNyAxMiA3czguNjYgMS43OCAxMS43MSA0LjY3Yy4xOC4xOC4yOS40My4yOS43MSAwIC4yOC0uMTEuNTMtLjI5LjcxbC0yLjQ4IDIuNDhjLS4xOC4xOC0uNDMuMjktLjcxLjI5LS4yNyAwLS41Mi0uMTEtLjctLjI4YTExLjI3IDExLjI3IDAgMCAwLTIuNjctMS44NS45OTYuOTk2IDAgMCAxLS41Ni0uOXYtMy4xQzE1LjE1IDkuMjUgMTMuNiA5IDEyIDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGxNYWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA1djJoNi41OUw0IDE4LjU5IDUuNDEgMjAgMTcgOC40MVYxNWgyVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGxNZXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDIwLjQxIDE4LjQxIDE5IDE1IDE1LjU5IDEzLjU5IDE3IDE3IDIwLjQxek03LjUgOEgxMXY1LjU5TDUuNTkgMTkgNyAyMC40MWw2LTZWOGgzLjVMMTIgMy41IDcuNSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYWxsTWlzc2VkT3V0Z29pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0zIDguNDEgOSA5IDctN1YxNWgyVjdoLTh2Mmg0LjU5TDEyIDE0LjU5IDQuNDEgNyAzIDguNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGxNaXNzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41OSA3IDEyIDE0LjU5IDYuNDEgOUgxMVY3SDN2OGgydi00LjU5bDcgNyA5LTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGxSZWNlaXZlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDUuNDEgMTguNTkgNCA3IDE1LjU5VjlINXYxMGgxMHYtMkg4LjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYWxsU3BsaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA0IDIuMjkgMi4yOS0yLjg4IDIuODggMS40MiAxLjQyIDIuODgtMi44OEwyMCAxMFY0em0tNCAwSDR2NmwyLjI5LTIuMjkgNC43MSA0LjdWMjBoMnYtOC40MWwtNS4yOS01LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC4wMSAxNS4zOGMtMS4yMyAwLTIuNDItLjItMy41My0uNTZhLjk3Ny45NzcgMCAwIDAtMS4wMS4yNGwtMS41NyAxLjk3Yy0yLjgzLTEuMzUtNS40OC0zLjktNi44OS02LjgzbDEuOTUtMS42NmMuMjctLjI4LjM1LS42Ny4yNC0xLjAyLS4zNy0xLjExLS41Ni0yLjMtLjU2LTMuNTMgMC0uNTQtLjQ1LS45OS0uOTktLjk5SDQuMTlDMy42NSAzIDMgMy4yNCAzIDMuOTkgMyAxMy4yOCAxMC43MyAyMSAyMC4wMSAyMWMuNzEgMCAuOTktLjYzLjk5LTEuMTh2LTMuNDVjMC0uNTQtLjQ1LS45OS0uOTktLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW5jZWxQcmVzZW50YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxOS4xSDNWNWgxOHYxNC4xek0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjEgMTkuMUgzVjVoMTh2MTQuMXpNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjU5IDggMTIgMTAuNTkgOS40MSA4IDggOS40MSAxMC41OSAxMiA4IDE0LjU5IDkuNDEgMTYgMTIgMTMuNDEgMTQuNTkgMTYgMTYgMTQuNTkgMTMuNDEgMTIgMTYgOS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2VsbFRvd2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNy4zIDE0LjcgMS4yLTEuMmMtMS0xLTEuNS0yLjMtMS41LTMuNSAwLTEuMy41LTIuNiAxLjUtMy41TDcuMyA1LjNjLTEuMyAxLjMtMiAzLTIgNC43cy43IDMuNCAyIDQuN3pNMTkuMSAyLjlsLTEuMiAxLjJjMS42IDEuNiAyLjQgMy44IDIuNCA1LjkgMCAyLjEtLjggNC4zLTIuNCA1LjlsMS4yIDEuMmMyLTIgMi45LTQuNSAyLjktNy4xIDAtMi42LTEtNS4xLTIuOS03LjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMSA0LjEgNC45IDIuOUMzIDQuOSAyIDcuNCAyIDEwYzAgMi42IDEgNS4xIDIuOSA3LjFsMS4yLTEuMmMtMS42LTEuNi0yLjQtMy44LTIuNC01LjkgMC0yLjEuOC00LjMgMi40LTUuOXpNMTYuNyAxNC43YzEuMy0xLjMgMi0zIDItNC43LS4xLTEuNy0uNy0zLjQtMi00LjdsLTEuMiAxLjJjMSAxIDEuNSAyLjMgMS41IDMuNSAwIDEuMy0uNSAyLjYtMS41IDMuNWwxLjIgMS4yek0xNC41IDEwYTIuNSAyLjUgMCAwIDAtNSAwYzAgLjc2LjM0IDEuNDIuODcgMS44OEw3IDIyaDJsLjY3LTJoNC42N2wuNjYgMmgybC0zLjM3LTEwLjEyYy41My0uNDYuODctMS4xMi44Ny0xLjg4em0tNC4xNyA4TDEyIDEzbDEuNjcgNWgtMy4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2VsbFdpZmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5Ljk4IDYgMjJoMTZWNS45N2wtNCA0LjAxek0yMCAyMGgtMnYtNy4yMmwyLTJWMjB6TTUuMjIgNy4yMiAzLjkzIDUuOTNjMy45LTMuOTEgMTAuMjQtMy45MSAxNC4xNSAwbC0xLjI5IDEuMjljLTMuMTktMy4xOS04LjM4LTMuMTktMTEuNTcgMHptNy43MSAzLjg1TDExIDEzbC0xLjkzLTEuOTNhMi43NCAyLjc0IDAgMCAxIDMuODYgMHptMS4yOS0xLjI4Yy0xLjc4LTEuNzctNC42Ni0xLjc3LTYuNDMgMEw2LjUgOC41YTYuMzc0IDYuMzc0IDAgMCAxIDkgMGwtMS4yOCAxLjI5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGF0QnViYmxlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg2bC0yIDJWNGgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hhdEJ1YmJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNNiA5aDEydjJINlY5em04IDVINnYtMmg4djJ6bTQtNkg2VjZoMTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xlYXJBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEzaDE0di0ySDV2MnptLTIgNGgxNHYtMkgzdjJ6TTcgN3YyaDE0VjdIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29QcmVzZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnY4aDJWNWgxOHYxNmMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiNFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4zOSAxNi41NkMxMy43MSAxNS43IDExLjUzIDE1IDkgMTVzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDEgMTkuMjJWMjJoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29tbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk5IDRjMC0xLjEtLjg5LTItMS45OS0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRsNCA0LS4wMS0xOHpNMTggMTRINnYtMmgxMnYyem0wLTNINlY5aDEydjJ6bTAtM0g2VjZoMTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29tbWVudHNEaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjgzIDE0SDE4di0yaC0zLjE3bC0xLTFIMThWOWgtNi4xN2wtMS0xSDE4VjZIOC44M2wtNC00SDIwYzEuMSAwIDIgLjkgMiAydjE1LjE3TDE2LjgzIDE0ek0yLjEgMi4xLjY5IDMuNTEgMiA0LjgzVjE2YzAgMS4xLjkgMiAyIDJoMTEuMTdsNS4zMSA1LjMxIDEuNDEtMS40MUwyLjEgMi4xek02IDloLjE3bDIgMkg2Vjl6bTAgNXYtMmgzLjE3bDIgMkg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb250YWN0RW1lcmdlbmN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgM0gyQy45IDMgMCAzLjkgMCA1djE0YzAgMS4xLjkgMiAyIDJoMjBjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjQgNWMwLTEuMS0uOS0yLTItMnpNOSA4YzEuNjUgMCAzIDEuMzUgMyAzcy0xLjM1IDMtMyAzLTMtMS4zNS0zLTMgMS4zNS0zIDMtM3pNMi4wOCAxOWMxLjM4LTIuMzkgMy45Ni00IDYuOTItNHM1LjU0IDEuNjEgNi45MiA0SDIuMDh6bTE4Ljg5LTkuMTUtLjc1IDEuMy0xLjQ3LS44NVYxMmgtMS41di0xLjdsLTEuNDcuODUtLjc1LTEuM0wxNi41IDlsLTEuNDctLjg1Ljc1LTEuMyAxLjQ3Ljg1VjZoMS41djEuN2wxLjQ3LS44NS43NSAxLjNMMTkuNSA5bDEuNDcuODV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRhY3RNYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDhWN2wtMyAyLTMtMnYxbDMgMiAzLTJ6bTEtNUgyQy45IDMgMCAzLjkgMCA1djE0YzAgMS4xLjkgMiAyIDJoMjBjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjQgNWMwLTEuMS0uOS0yLTItMnpNOCA2YzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM3ptNiAxMkgydi0xYzAtMiA0LTMuMSA2LTMuMXM2IDEuMSA2IDMuMXYxem04LTZoLThWNmg4djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRhY3RQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDNIMkMuOSAzIDAgMy45IDAgNXYxNGMwIDEuMS45IDIgMiAyaDIwYzEuMSAwIDEuOTktLjkgMS45OS0yTDI0IDVjMC0xLjEtLjktMi0yLTJ6TTggNmMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgMy0zLTEuMzQtMy0zIDEuMzQtMyAzLTN6bTYgMTJIMnYtMWMwLTIgNC0zLjEgNi0zLjFzNiAxLjEgNiAzLjF2MXptMy44NS00aDEuNjRMMjEgMTZsLTEuOTkgMS45OUE3LjUxMiA3LjUxMiAwIDAgMSAxNi4yOCAxNGMtLjE4LS42NC0uMjgtMS4zMS0uMjgtMnMuMS0xLjM2LjI4LTJhNy40NzQgNy40NzQgMCAwIDEgMi43My0zLjk5TDIxIDhsLTEuNTEgMmgtMS42NGMtLjIyLjYzLS4zNSAxLjMtLjM1IDJzLjEzIDEuMzcuMzUgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29udGFjdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDBINHYyaDE2VjB6TTQgMjRoMTZ2LTJINHYyek0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTggMi43NWMxLjI0IDAgMi4yNSAxLjAxIDIuMjUgMi4yNXMtMS4wMSAyLjI1LTIuMjUgMi4yNVM5Ljc1IDEwLjI0IDkuNzUgOSAxMC43NiA2Ljc1IDEyIDYuNzV6TTE3IDE3SDd2LTEuNWMwLTEuNjcgMy4zMy0yLjUgNS0yLjVzNSAuODMgNSAyLjVWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlc2t0b3BBY2Nlc3NEaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTZjMCAxLjEtLjkgMi0yIDJoLTFsLTItMmgzVjRINkw0IDJoMTdjMS4xIDAgMiAuOSAyIDJ2MTJ6bS01LjUgMi0yLTJ6bS0yLjYgMCA2IDYgMS4zLTEuMy00LjctNC43LTItMkwxLjIgMS44IDAgMy4xbDEgMVYxNmMwIDEuMS45IDIgMiAyaDd2Mkg4djJoOHYtMmgtMnYtMmguOXpNMyAxNlY2LjFsOS45IDkuOUgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaWFsZXJTaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAzaC0xdjVoMVYzem0tMiAyaC0yVjRoMlYzaC0zdjNoMnYxaC0ydjFoM1Y1em0zLTJ2NWgxVjZoMlYzaC0zem0yIDJoLTFWNGgxdjF6bTAgMTAuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTdhLjk5OC45OTggMCAwIDAtMS4wMS4yNGwtMi4yIDIuMmExNS4wNDUgMTUuMDQ1IDAgMCAxLTYuNTktNi41OWwyLjItMi4yMWMuMjctLjI2LjM1LS42NS4yNC0xQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjVjMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaWFscGFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTljLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yek02IDFjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0xMi04YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptLTYgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTYgMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAtNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS02IDBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wLTZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb2N1bWVudFNjYW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDNINHYzSDJWMWg1djJ6bTE1IDNWMWgtNXYyaDN2M2gyek03IDIxSDR2LTNIMnY1aDV2LTJ6bTEzLTN2M2gtM3YyaDV2LTVoLTJ6bS0xIDBjMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yaDEwYzEuMSAwIDIgLjkgMiAydjEyek0xNSA4SDl2Mmg2Vjh6bTAgM0g5djJoNnYtMnptMCAzSDl2Mmg2di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb21haW5EaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA1aDJ2MmgtLjlMMTIgOS45VjloOHY4LjlsMiAyVjdIMTJWM0g1LjFMOCA1Ljl6bTggNmgydjJoLTJ6TTEuMyAxLjguMSAzLjEgMiA1djE2aDE2bDMgMyAxLjMtMS4zLTIxLTIwLjl6TTYgMTlINHYtMmgydjJ6bTAtNEg0di0yaDJ2MnptMC00SDRWOWgydjJ6bTQgOEg4di0yaDJ2MnptMC00SDh2LTJoMnYyem0yIDR2LTJoMmwyIDJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvbWFpblZlcmlmaWNhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2LjYgMTAuODgtMS40Mi0xLjQyLTQuMjQgNC4yNS0yLjEyLTIuMTNMNy40IDEzbDMuNTQgMy41NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNEg1YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YTIgMiAwIDAgMC0yLTJ6bTAgMTRINVY4aDE0djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREdW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAyaC04QzYuMzggMiAyIDYuNjYgMiAxMi4yOCAyIDE3LjUgNi40OSAyMiAxMS43MiAyMiAxNy4zOSAyMiAyMiAxNy42MiAyMiAxMlY0YzAtMS4xLS45LTItMi0yem0tMyAxMy0zLTJ2Mkg3VjloN3YybDMtMnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbWFpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCA0LTggNS04LTVWNmw4IDUgOC01djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcnVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNmgtMnY5SDZ2MmMwIC41NS40NSAxIDEgMWgxMWw0IDRWN2MwLS41NS0uNDUtMS0xLTF6bS00IDZWM2MwLS41NS0uNDUtMS0xLTFIM2MtLjU1IDAtMSAuNDUtMSAxdjE0bDQtNGgxMGMuNTUgMCAxLS40NSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcndhcmRUb0luYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDl2LTJINFY4bDggNSA4LTV2NWgyVjZjMC0xLjEtLjktMi0yLTJ6bS04IDdMNCA2aDE2bC04IDV6bTcgNCA0IDQtNCA0di0zaC00di0yaDR2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvdXJnbGFzc0JvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDIyLS4wMS02TDE0IDEybDMuOTktNC4wMUwxOCAySDZ2Nmw0IDQtNCAzLjk5VjIyaDEyek04IDcuNVY0aDh2My41bC00IDQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3VyZ2xhc3NUb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02IDIgLjAxIDZMMTAgMTJsLTMuOTkgNC4wMUw2IDIyaDEydi02bC00LTQgNC0zLjk5VjJINnptMTAgMTQuNVYyMEg4di0zLjVsNC00IDQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC40IDE4LjJjLjM4LjUuNiAxLjEyLjYgMS44IDAgMS42Ni0xLjM0IDMtMyAzcy0zLTEuMzQtMy0zIDEuMzQtMyAzLTNjLjQ0IDAgLjg1LjA5IDEuMjMuMjZsMS40MS0xLjc3YTQuNTA0IDQuNTA0IDAgMCAxLTEuMDktMy42OWwtMi4wMy0uNjhBMi45OTcgMi45OTcgMCAwIDEgMCA5LjVjMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM2MwIC4wNyAwIC4xNC0uMDEuMjFsMi4wMy42OGE0LjQ2OCA0LjQ2OCAwIDAgMSAzLjIyLTIuMzJWNS45MUEzLjAxOCAzLjAxOCAwIDAgMSA5IDNjMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM2MwIDEuNC0uOTYgMi41Ny0yLjI1IDIuOTF2Mi4xNmMxLjQuMjMgMi41OCAxLjExIDMuMjIgMi4zMkwxOCA5LjcxVjkuNWMwLTEuNjYgMS4zNC0zIDMtM3MzIDEuMzQgMyAzLTEuMzQgMy0zIDNjLTEuMDYgMC0xLjk4LS41NS0yLjUyLTEuMzdsLTIuMDMuNjhhNC40OSA0LjQ5IDAgMCAxLTEuMDkgMy42OWwxLjQxIDEuNzdjLjM4LS4xOC43OS0uMjcgMS4yMy0uMjcgMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDMtMy0xLjM0LTMtM2MwLS42OC4yMi0xLjMuNi0xLjhsLTEuNDEtMS43N2MtMS4zNS43NS0zLjAxLjc2LTQuMzcgMEw4LjQgMTguMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW1wb3J0Q29udGFjdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDQuNWMtMS45NSAwLTQuMDUuNC01LjUgMS41LTEuNDUtMS4xLTMuNTUtMS41LTUuNS0xLjVTMi40NSA0LjkgMSA2djE0LjY1YzAgLjY1LjczLjQ1Ljc1LjQ1QzMuMSAyMC40NSA1LjA1IDIwIDYuNSAyMGMxLjk1IDAgNC4wNS40IDUuNSAxLjUgMS4zNS0uODUgMy44LTEuNSA1LjUtMS41IDEuNjUgMCAzLjM1LjMgNC43NSAxLjA1LjQxLjIxLjc1LS4xOS43NS0uNDVWNmMtMS40OS0xLjEyLTMuNjMtMS41LTUuNS0xLjV6bTMuNSAxNGMtMS4xLS4zNS0yLjMtLjUtMy41LS41LTEuNyAwLTQuMTUuNjUtNS41IDEuNVY4YzEuMzUtLjg1IDMuOC0xLjUgNS41LTEuNSAxLjIgMCAyLjQuMTUgMy41LjV2MTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW1wb3J0RXhwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAzIDUgNi45OWgzVjE0aDJWNi45OWgzTDkgM3ptNyAxNC4wMVYxMGgtMnY3LjAxaC0zTDE1IDIxbDQtMy45OWgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW52ZXJ0Q29sb3JzT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMTkgMjEuMTkgMi44MSAyLjgxIDEuMzkgNC4yMmw0LjIgNC4yYTcuNzMgNy43MyAwIDAgMC0xLjYgNC43QzQgMTcuNDggNy41OCAyMSAxMiAyMWMxLjc1IDAgMy4zNi0uNTYgNC42Ny0xLjVsMy4xIDMuMSAxLjQyLTEuNDF6TTEyIDE5Yy0zLjMxIDAtNi0yLjYzLTYtNS44NyAwLTEuMTkuMzYtMi4zMiAxLjAyLTMuMjhMMTIgMTQuODNWMTl6TTguMzggNS41NiAxMiAybDUuNjUgNS41NkMxOS4xIDguOTkgMjAgMTAuOTYgMjAgMTMuMTNjMCAxLjE4LS4yNyAyLjI5LS43NCAzLjNMMTIgOS4xN1Y0LjgxTDkuOCA2Ljk3IDguMzggNS41NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuOTEgMTQuMDkgMTcgMTRsMiAyIDQtNC4wNEwyMSAxMGgtOC4xN2w0LjA4IDQuMDl6TTMuOTggNi44MUE2LjAxMiA2LjAxMiAwIDAgMCAxIDEyYzAgMy4zMSAyLjY5IDYgNiA2IDIuMjEgMCA0LjE1LTEuMiA1LjE4LTIuOTlsNy41OSA3LjU5IDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIybDIuNTkgMi41OXptNS45MyA1LjkzQTMuMDE1IDMuMDE1IDAgMCAxIDcgMTVjLTEuNjUgMC0zLTEuMzUtMy0zIDAtMS40Ljk3LTIuNTggMi4yNi0yLjkxbDMuNjUgMy42NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTBoLTguMzVBNS45OSA1Ljk5IDAgMCAwIDcgNmMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNmE1Ljk5IDUuOTkgMCAwIDAgNS42NS00SDEzbDIgMiAyLTIgMiAyIDQtNC4wNEwyMSAxMHpNNyAxNWMtMS42NSAwLTMtMS4zNS0zLTNzMS4zNS0zIDMtMyAzIDEuMzUgMyAzLTEuMzUgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpc3RBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djE0SDVWNWgxNG0xLjEtMkgzLjljLS41IDAtLjkuNC0uOS45djE2LjJjMCAuNC40LjkuOS45aDE2LjJjLjQgMCAuOS0uNS45LS45VjMuOWMwLS41LS41LS45LS45LS45ek0xMSA3aDZ2MmgtNlY3em0wIDRoNnYyaC02di0yem0wIDRoNnYyaC02ek03IDdoMnYySDd6bTAgNGgydjJIN3ptMCA0aDJ2Mkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaXZlSGVscCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoNGwzIDMgMy0zaDRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTYgMTZoLTJ2LTJoMnYyem0yLjA3LTcuNzUtLjkuOTJDMTMuNDUgMTEuOSAxMyAxMi41IDEzIDE0aC0ydi0uNWMwLTEuMS40NS0yLjEgMS4xNy0yLjgzbDEuMjQtMS4yNmMuMzctLjM2LjU5LS44Ni41OS0xLjQxIDAtMS4xLS45LTItMi0ycy0yIC45LTIgMkg4YzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAuODgtLjM2IDEuNjgtLjkzIDIuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2F0aW9uT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMTEuNzUgMTEuNDctLjExLS4xMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNi41QTIuNSAyLjUgMCAwIDEgMTQuNSA5YzAgLjc0LS4zMyAxLjM5LS44MyAxLjg1bDMuNjMgMy42M2MuOTgtMS44NiAxLjctMy44IDEuNy01LjQ4IDAtMy44Ny0zLjEzLTctNy03YTcgNyAwIDAgMC01LjA0IDIuMTVsMy4xOSAzLjE5Yy40Ni0uNTIgMS4xMS0uODQgMS44NS0uODR6bTQuMzcgOS42LTQuNjMtNC42My0uMTEtLjExTDMuMjcgMyAyIDQuMjdsMy4xOCAzLjE4QzUuMDcgNy45NSA1IDguNDcgNSA5YzAgNS4yNSA3IDEzIDcgMTNzMS42Ny0xLjg1IDMuMzgtNC4zNUwxOC43MyAyMSAyMCAxOS43M2wtMy42My0zLjYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhdGlvbk9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM4LjEzIDIgNSA1LjEzIDUgOWMwIDUuMjUgNyAxMyA3IDEzczctNy43NSA3LTEzYzAtMy44Ny0zLjEzLTctNy03em0wIDkuNWEyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFpbExvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA5Ljk3VjZjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTJ2LTUuMDNjMC0yLjc2IDIuMjQtNSA1LTVoMXpNMjAgOGwtOCA1LTgtNVY2bDggNSA4LTV2MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTV2LTFjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXptLTEgMGgtMnYtMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFpbE91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY4bDggNSA4LTV2MTB6bS04LTdMNCA2aDE2bC04IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcmtDaGF0UmVhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjM0IDIwLTMuNTQtMy41NCAxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNEwyMyAxNC4zNCAxNy4zNCAyMHpNMTIgMTdhNi45OTUgNi45OTUgMCAwIDEgMTAtNi4zMlY0YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGg2YzAtLjE3LjAxLS4zMy4wMy0uNUE0LjA3IDQuMDcgMCAwIDEgMTIgMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcmtDaGF0VW5yZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNi45OFYxNmMwIDEuMS0uOSAyLTIgMkg2bC00IDRWNGMwLTEuMS45LTIgMi0yaDEwLjFBNS4wMDIgNS4wMDIgMCAwIDAgMTkgOGMxLjEzIDAgMi4xNi0uMzkgMy0xLjAyek0xNiAzYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTMtMS4zNC0zLTMtMy0zIDEuMzQtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYXJrRW1haWxSZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTlhNi45OTUgNi45OTUgMCAwIDEgMTAtNi4zMlY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoOC4wOGMtLjA1LS4zMy0uMDgtLjY2LS4wOC0xek00IDZsOCA1IDgtNXYybC04IDUtOC01VjZ6bTEzLjM0IDE2LTMuNTQtMy41NCAxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNEwyMyAxNi4zNCAxNy4zNCAyMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFya0VtYWlsVW5yZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgOC45OFYxOGMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoMTAuMWMtLjA2LjMyLS4xLjY2LS4xIDEgMCAxLjQ4LjY1IDIuNzkgMS42NyAzLjcxTDEyIDExIDQgNnYybDggNSA1LjMtMy4zMmMuNTQuMiAxLjEuMzIgMS43LjMyIDEuMTMgMCAyLjE2LS4zOSAzLTEuMDJ6TTE2IDVjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtMy0xLjM0LTMtMy0zLTMgMS4zNC0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcmtVbnJlYWRDaGF0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOVwiLFwiY3lcIjpcIjNcIixcInJcIjpcIjNcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA4VjZoOS4wM2E0LjkwNiA0LjkwNiAwIDAgMS0uOTItNEg0LjAxYTIgMiAwIDAgMC0yIDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNi45N0MyMS4xNiA3LjYxIDIwLjEzIDggMTkgOEg2em04IDZINnYtMmg4djJ6bTQtM0g2VjloMTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWVzc2FnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMiAxMkg2di0yaDEydjJ6bTAtM0g2VjloMTJ2MnptMC0zSDZWNmgxMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb2JpbGVTY3JlZW5TaGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2MThjMCAxLjEuODkgMiAxLjk5IDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMTlIN1Y1aDEwdjE0em0tNC4yLTUuNzh2MS43NWwzLjItMi45OUwxMi44IDl2MS43Yy0zLjExLjQzLTQuMzUgMi41Ni00LjggNC43IDEuMTEtMS41IDIuNTgtMi4xOCA0LjgtMi4xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9yZVRpbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA4djZsNC43IDIuOS44LTEuMi00LTIuNFY4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy45MiAxMkE2Ljk1NyA2Ljk1NyAwIDAgMSAxMSAyMGMtMy45IDAtNy0zLjEtNy03czMuMS03IDctN2MuNyAwIDEuMzcuMSAyIC4yOVY0LjIzYy0uNjQtLjE1LTEuMzEtLjIzLTItLjIzLTUgMC05IDQtOSA5czQgOSA5IDlhOC45NjMgOC45NjMgMCAwIDAgOC45NC0xMGgtMi4wMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNVYyaC0ydjNoLTN2MmgzdjNoMlY3aDNWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi44MiAxM0gxMXYtMkg2LjgyQzYuNCA5Ljg0IDUuMyA5IDQgOWMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgM2MxLjMgMCAyLjQtLjg0IDIuODItMnpNNCAxM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMyAxMi00LTN2MmgtNC4wNWMtLjUtNS4wNS00Ljc2LTktOS45NS05djJjNC40MiAwIDggMy41OCA4IDhzLTMuNTggOC04IDh2MmM1LjE5IDAgOS40NS0zLjk1IDkuOTUtOUgxOXYybDQtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9TaW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45OSA1YzAtMS4xLS44OS0yLTEuOTktMmgtN0w3LjY2IDUuMzQgMTkgMTYuNjggMTguOTkgNXpNMy42NSAzLjg4IDIuMzggNS4xNSA1IDcuNzdWMTljMCAxLjEuOSAyIDIgMmgxMC4wMWMuMzUgMCAuNjctLjEuOTYtLjI2bDEuODggMS44OCAxLjI3LTEuMjdMMy42NSAzLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYXVzZVByZXNlbnRhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE5LjFIM1Y1aDE4djE0LjF6TTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yMSAxOS4xSDNWNWgxOHYxNC4xek0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA4aDJ2OEg5em00IDBoMnY4aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb25BZGREaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjhcIixcInJcIjpcIjRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMjB2LTJjMC0yLjMtNC4xLTMuNy02LjktMy45bDYgNS45aC45em0tMTEuNi01LjVDOS4yIDE1LjEgNyAxNi4zIDcgMTh2Mmg5LjlsNCA0IDEuMy0xLjMtMjEtMjAuOUwwIDMuMWw0IDRWMTBIMXYyaDN2M2gydi0zaDIuOWwyLjUgMi41ek02IDEwdi0uOWwuOS45SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcnNvblNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI4XCIsXCJyXCI6XCI0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjM1IDE0LjAxQzcuNjIgMTMuOTEgMiAxNS4yNyAyIDE4djJoOS41NGMtMi40Ny0yLjc2LTEuMjMtNS44OS0xLjE5LTUuOTl6TTE5LjQzIDE4LjAyYy4zNi0uNTkuNTctMS4yOC41Ny0yLjAyIDAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0IDEuNzkgNCA0IDRjLjc0IDAgMS40My0uMjIgMi4wMi0uNTdMMjAuNTkgMjIgMjIgMjAuNTlsLTIuNTctMi41N3pNMTYgMThjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZURpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMzQgMTQuNTQtMS40My0xLjQzYy41Ni0uNzMgMS4wNS0xLjUgMS40Ny0yLjMybC0yLjItMi4yYy0uMjgtLjI4LS4zNi0uNjctLjI1LTEuMDIuMzctMS4xMi41Ny0yLjMyLjU3LTMuNTcgMC0uNTUuNDUtMSAxLTFIMjBjLjU1IDAgMSAuNDUgMSAxIDAgMy45OC0xLjM3IDcuNjQtMy42NiAxMC41NHptLTIuODIgMi44MUExNi44ODQgMTYuODg0IDAgMCAxIDQgMjFjLS41NSAwLTEtLjQ1LTEtMXYtMy40OWMwLS41NS40NS0xIDEtMSAxLjI0IDAgMi40NS0uMiAzLjU3LS41Ny4zNS0uMTIuNzUtLjAzIDEuMDIuMjRsMi4yIDIuMmMuODEtLjQyIDEuNTgtLjkgMi4zLTEuNDZMMS4zOSA0LjIybDEuNDItMS40MUwyMS4xOSAyMS4ybC0xLjQxIDEuNDEtNS4yNi01LjI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZUVuYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy4zOCAxMC43OS0yLjItMi4yYy0uMjgtLjI4LS4zNi0uNjctLjI1LTEuMDIuMzctMS4xMi41Ny0yLjMyLjU3LTMuNTcgMC0uNTUuNDUtMSAxLTFIMjBjLjU1IDAgMSAuNDUgMSAxIDAgOS4zOS03LjYxIDE3LTE3IDE3LS41NSAwLTEtLjQ1LTEtMXYtMy40OWMwLS41NS40NS0xIDEtMSAxLjI0IDAgMi40NS0uMiAzLjU3LS41Ny4zNS0uMTIuNzUtLjAzIDEuMDIuMjRsMi4yIDIuMmMyLjgzLTEuNDUgNS4xNS0zLjc2IDYuNTktNi41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjYyIDEwLjc5YzEuNDQgMi44MyAzLjc2IDUuMTQgNi41OSA2LjU5bDIuMi0yLjJjLjI3LS4yNy42Ny0uMzYgMS4wMi0uMjQgMS4xMi4zNyAyLjMzLjU3IDMuNTcuNTcuNTUgMCAxIC40NSAxIDFWMjBjMCAuNTUtLjQ1IDEtMSAxLTkuMzkgMC0xNy03LjYxLTE3LTE3IDAtLjU1LjQ1LTEgMS0xaDMuNWMuNTUgMCAxIC40NSAxIDEgMCAxLjI1LjIgMi40NS41NyAzLjU3LjExLjM1LjAzLjc0LS4yNSAxLjAybC0yLjIgMi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZWxpbmtFcmFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgOC4yLTEtMS00IDQtNC00LTEgMSA0IDQtNCA0IDEgMSA0LTQgNCA0IDEtMS00LTQgNC00ek0xOSAxSDljLTEuMSAwLTIgLjktMiAydjNoMlY0aDEwdjE2SDl2LTJIN3YzYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmVsaW5rTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMUg5Yy0xLjEgMC0yIC45LTIgMnYzaDJWNGgxMHYxNkg5di0ySDd2M2MwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bS04LjIgMTBWOS41QzEwLjggOC4xIDkuNCA3IDggN1M1LjIgOC4xIDUuMiA5LjVWMTFjLS42IDAtMS4yLjYtMS4yIDEuMnYzLjVjMCAuNy42IDEuMyAxLjIgMS4zaDUuNWMuNyAwIDEuMy0uNiAxLjMtMS4ydi0zLjVjMC0uNy0uNi0xLjMtMS4yLTEuM3ptLTEuMyAwaC0zVjkuNWMwLS44LjctMS4zIDEuNS0xLjNzMS41LjUgMS41IDEuM1YxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmVsaW5rUmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuMSA3LjctMSAxYzEuOCAxLjggMS44IDQuNiAwIDYuNWwxIDFjMi41LTIuMyAyLjUtNi4xIDAtOC41ek0xOCA5LjhsLTEgMWMuNS43LjUgMS42IDAgMi4zbDEgMWMxLjItMS4yIDEuMi0zIDAtNC4zek0xNCAxSDRjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxOUg0VjRoMTB2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lbGlua1NldHVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuODIgMTIuNDljLjAyLS4xNi4wNC0uMzIuMDQtLjQ5IDAtLjE3LS4wMi0uMzMtLjA0LS40OWwxLjA4LS44MmMuMS0uMDcuMTItLjIxLjA2LS4zMmwtMS4wMy0xLjczYy0uMDYtLjExLS4yLS4xNS0uMzEtLjExbC0xLjI4LjVjLS4yNy0uMi0uNTYtLjM2LS44Ny0uNDlsLS4yLTEuMzNjMC0uMTItLjExLS4yMS0uMjQtLjIxSDUuOThhLjI2LjI2IDAgMCAwLS4yNi4yMWwtLjIgMS4zMmMtLjMxLjEyLS42LjMtLjg3LjQ5bC0xLjI4LS41Yy0uMTItLjA1LS4yNSAwLS4zMS4xMWwtMS4wMyAxLjczYy0uMDYuMTItLjAzLjI1LjA3LjMzbDEuMDguODJjLS4wMi4xNi0uMDMuMzMtLjAzLjQ5IDAgLjE3LjAyLjMzLjA0LjQ5bC0xLjA5LjgzYy0uMS4wNy0uMTIuMjEtLjA2LjMybDEuMDMgMS43M2MuMDYuMTEuMi4xNS4zMS4xMWwxLjI4LS41Yy4yNy4yLjU2LjM2Ljg3LjQ5bC4yIDEuMzJjLjAxLjEyLjEyLjIxLjI1LjIxaDIuMDZjLjEzIDAgLjI0LS4wOS4yNS0uMjFsLjItMS4zMmMuMzEtLjEyLjYtLjMuODctLjQ5bDEuMjguNWMuMTIuMDUuMjUgMCAuMzEtLjExbDEuMDMtMS43M2MuMDYtLjExLjA0LS4yNC0uMDYtLjMybC0xLjEtLjgzek03IDEzLjc1Yy0uOTkgMC0xLjgtLjc4LTEuOC0xLjc1cy44MS0xLjc1IDEuOC0xLjc1IDEuOC43OCAxLjggMS43NVM4IDEzLjc1IDcgMTMuNzV6TTE4IDEuMDEgOCAxYy0xLjEgMC0yIC45LTIgMnYzaDJWNWgxMHYxNEg4di0xSDZ2M2MwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvcnRhYmxlV2lmaU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41NiAxNC4yNGMuMjgtLjY5LjQ0LTEuNDUuNDQtMi4yNCAwLTMuMzEtMi42OS02LTYtNi0uNzkgMC0xLjU1LjE2LTIuMjQuNDRsMS42MiAxLjYyYy4yLS4wMy40MS0uMDYuNjItLjA2YTMuOTk5IDMuOTk5IDAgMCAxIDMuOTUgNC42M2wxLjYxIDEuNjF6TTEyIDRjNC40MiAwIDggMy41OCA4IDggMCAxLjM1LS4zNSAyLjYyLS45NSAzLjc0bDEuNDcgMS40N0E5Ljg2IDkuODYgMCAwIDAgMjIgMTJjMC01LjUyLTQuNDgtMTAtMTAtMTAtMS45MSAwLTMuNjkuNTUtNS4yMSAxLjQ3bDEuNDYgMS40NkM5LjM3IDQuMzQgMTAuNjUgNCAxMiA0ek0zLjI3IDIuNSAyIDMuNzdsMi4xIDIuMUMyLjc5IDcuNTcgMiA5LjY5IDIgMTJjMCAzLjcgMi4wMSA2LjkyIDQuOTkgOC42NWwxLTEuNzNDNS42MSAxNy41MyA0IDE0Ljk2IDQgMTJjMC0xLjc2LjU3LTMuMzggMS41My00LjY5bDEuNDMgMS40NEM2LjM2IDkuNjggNiAxMC44IDYgMTJjMCAyLjIyIDEuMjEgNC4xNSAzIDUuMTlsMS0xLjc0Yy0xLjE5LS43LTItMS45Ny0yLTMuNDUgMC0uNjUuMTctMS4yNS40NC0xLjc5bDEuNTggMS41OEwxMCAxMmMwIDEuMS45IDIgMiAybC4yMS0uMDIuMDEuMDEgNy41MSA3LjUxTDIxIDIwLjIzIDQuMjcgMy41bC0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFByZXNlbnRUb0FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjExIDAtMiAuODktMiAydjE0YzAgMS4xMS44OSAyIDIgMmgxOGMxLjExIDAgMi0uODkgMi0yVjVjMC0xLjExLS44OS0yLTItMnptMCAxNi4wMkgzVjQuOThoMTh2MTQuMDR6TTEwIDEySDhsNC00IDQgNGgtMnY0aC00di00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQcmludERpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4xIDE3SDIydi02YzAtMS43LTEuMy0zLTMtM2gtOWw5LjEgOXptLS4xLTdjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptLTEtM1YzSDZ2MS4xTDkgN3pNMS4yIDEuOCAwIDNsNC45IDVDMy4zIDguMSAyIDkuNCAyIDExdjZoNHY0aDExLjlsMyAzIDEuMy0xLjMtMjEtMjAuOXpNOCAxOXYtNWgyLjlsNSA1SDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFFyQ29kZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyMWgtMnYtMmgydjJ6bS0yLTdoLTJ2NWgydi01em04LTJoLTJ2NGgydi00em0tMi0yaC0ydjJoMnYtMnpNNyAxMkg1djJoMnYtMnptLTItMkgzdjJoMnYtMnptNy01aDJWM2gtMnYyem0tNy41LS41djNoM3YtM2gtM3pNOSA5SDNWM2g2djZ6bS00LjUgNy41djNoM3YtM2gtM3pNOSAyMUgzdi02aDZ2NnptNy41LTE2LjV2M2gzdi0zaC0zek0yMSA5aC02VjNoNnY2em0tMiAxMHYtM2gtNHYyaDJ2M2g0di0yaC0yem0tMi03aC00djJoNHYtMnptLTQtMkg3djJoMnYyaDJ2LTJoMnYtMnptMS0xVjdoLTJWNWgtMnY0aDR6TTYuNzUgNS4yNWgtMS41djEuNWgxLjV2LTEuNXptMCAxMmgtMS41djEuNWgxLjV2LTEuNXptMTItMTJoLTEuNXYxLjVoMS41di0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFFyQ29kZVNjYW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgNi41djNoLTN2LTNoM00xMSA1SDV2Nmg2VjV6bS0xLjUgOS41djNoLTN2LTNoM00xMSAxM0g1djZoNnYtNnptNi41LTYuNXYzaC0zdi0zaDNNMTkgNWgtNnY2aDZWNXptLTYgOGgxLjV2MS41SDEzVjEzem0xLjUgMS41SDE2VjE2aC0xLjV2LTEuNXpNMTYgMTNoMS41djEuNUgxNlYxM3ptLTMgM2gxLjV2MS41SDEzVjE2em0xLjUgMS41SDE2VjE5aC0xLjV2LTEuNXpNMTYgMTZoMS41djEuNUgxNlYxNnptMS41LTEuNUgxOVYxNmgtMS41di0xLjV6bTAgM0gxOVYxOWgtMS41di0xLjV6TTIyIDdoLTJWNGgtM1YyaDV2NXptMCAxNXYtNWgtMnYzaC0zdjJoNXpNMiAyMmg1di0ySDR2LTNIMnY1ek0yIDJ2NWgyVjRoM1YySDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFFyQ29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTFoOFYzSDN2OHptMi02aDR2NEg1VjV6TTMgMjFoOHYtOEgzdjh6bTItNmg0djRINXYtNHpNMTMgM3Y4aDhWM2gtOHptNiA2aC00VjVoNHY0ek0xOSAxOWgydjJoLTJ6TTEzIDEzaDJ2MmgtMnpNMTUgMTVoMnYyaC0yek0xMyAxN2gydjJoLTJ6TTE1IDE5aDJ2MmgtMnpNMTcgMTdoMnYyaC0yek0xNyAxM2gydjJoLTJ6TTE5IDE1aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVhZE1vcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3aDl2MmgtOXpNMTMgMTVoOXYyaC05ek0xNiAxMWg2djJoLTZ6TTEzIDEyIDggN3Y0SDJ2Mmg2djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJpbmdWb2x1bWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMy43MSAxNi42N0ExNi45NzEgMTYuOTcxIDAgMCAwIDEyIDEyQzcuNDYgMTIgMy4zNCAxMy43OC4yOSAxNi42N2MtLjE4LjE4LS4yOS40My0uMjkuNzEgMCAuMjguMTEuNTMuMjkuNzFsMi40OCAyLjQ4Yy4xOC4xOC40My4yOS43MS4yOS4yNyAwIC41Mi0uMTEuNy0uMjguNzktLjc0IDEuNjktMS4zNiAyLjY2LTEuODUuMzMtLjE2LjU2LS41LjU2LS45di0zLjFjMS40NS0uNDggMy0uNzMgNC42LS43M3MzLjE1LjI1IDQuNi43MnYzLjFjMCAuMzkuMjMuNzQuNTYuOS45OC40OSAxLjg3IDEuMTIgMi42NiAxLjg1LjE4LjE4LjQzLjI4LjcuMjguMjggMCAuNTMtLjExLjcxLS4yOWwyLjQ4LTIuNDhjLjE4LS4xOC4yOS0uNDMuMjktLjcxYS45OS45OSAwIDAgMC0uMjktLjd6TTIxLjE2IDYuMjZsLTEuNDEtMS40MS0zLjU2IDMuNTUgMS40MSAxLjQxczMuNDUtMy41MiAzLjU2LTMuNTV6TTEzIDJoLTJ2NWgyVjJ6TTYuNCA5LjgxIDcuODEgOC40IDQuMjYgNC44NCAyLjg0IDYuMjZjLjExLjAzIDMuNTYgMy41NSAzLjU2IDMuNTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJzc0ZlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjYuMThcIixcImN5XCI6XCIxNy44MlwiLFwiclwiOlwiMi4xOFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDQuNDR2Mi44M2M3LjAzIDAgMTIuNzMgNS43IDEyLjczIDEyLjczaDIuODNjMC04LjU5LTYuOTctMTUuNTYtMTUuNTYtMTUuNTZ6bTAgNS42NnYyLjgzYzMuOSAwIDcuMDcgMy4xNyA3LjA3IDcuMDdoMi44M2MwLTUuNDctNC40My05LjktOS45LTkuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUnR0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOS4wMyAzLTEuMTEgNy4wN2gyLjYybC43LTQuNWgyLjU4TDExLjggMTguNDNIOS40N0w5LjA2IDIxaDcuMjdsLjQtMi41N2gtMi4zNWwyLTEyLjg2aDIuNThsLS43MSA0LjVoMi42NUwyMiAzSDkuMDN6TTggNUg0bC0uMzEgMmg0TDggNXptLS42MSA0aC00bC0uMzEgMmg0bC4zMS0yem0uOTIgOGgtNkwyIDE5aDZsLjMxLTJ6bS42Mi00aC02bC0uMzEgMmg2LjAxbC4zLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjcmVlblNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOGMxLjEgMCAxLjk5LS45IDEuOTktMkwyMiA2YTIgMiAwIDAgMC0yLTJINGMtMS4xMSAwLTIgLjg5LTIgMnYxMGEyIDIgMCAwIDAgMiAySDB2MmgyNHYtMmgtNHptLTctMy41M3YtMi4xOWMtMi43OCAwLTQuNjEuODUtNiAyLjcyLjU2LTIuNjcgMi4xMS01LjMzIDYtNS44N1Y3bDQgMy43My00IDMuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbmRUaW1lRXh0ZW5zaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmMwLTEuMS0uOS0yLTItMmgtNGEyLjUgMi41IDAgMCAwLTUgMEg1LjAxYy0xLjEgMC0yIC45LTIgMnYzLjhDNS43IDkuOCA2IDExLjk2IDYgMTIuNXMtLjI5IDIuNy0zIDIuN1YxOWMwIDEuMS45IDIgMiAyaDMuOGMwLTIuMTYgMS4zNy0yLjc4IDIuMi0yLjk0di05LjNsOSA0LjVWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTJ2NGw0IDEtNCAxdjRsMTAtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VudGltZW50U2F0aXNmaWVkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0wLTIuNWMyLjMzIDAgNC4zMi0xLjQ1IDUuMTItMy41aC0xLjY3Yy0uNjkgMS4xOS0xLjk3IDItMy40NSAycy0yLjc1LS44MS0zLjQ1LTJINi44OGMuOCAyLjA1IDIuNzkgMy41IDUuMTIgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDEwLjVoMnYxaC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTEwIDYuNUg2LjV2Ljc1SDljLjU1IDAgMSAuNDUgMSAxVjE0YzAgLjU1LS40NSAxLTEgMUg1di0xLjVoMy41di0uNzVINmMtLjU1IDAtMS0uNDUtMS0xVjEwYzAtLjU1LjQ1LTEgMS0xaDR2MS41em0zIDQuNWgtMlY5aDJ2NnptNi0zYzAgLjU1LS40NSAxLTEgMWgtMi41djJIMTRWOWg0Yy41NSAwIDEgLjQ1IDEgMXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGVha2VyUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgNy4wNyA4LjQzIDguNWMuOTEtLjkxIDIuMTgtMS40OCAzLjU3LTEuNDhzMi42Ni41NyAzLjU3IDEuNDhMMTcgNy4wN0MxNS43MiA1Ljc5IDEzLjk1IDUgMTIgNXMtMy43Mi43OS01IDIuMDd6TTEyIDFDOC45OCAxIDYuMjQgMi4yMyA0LjI1IDQuMjFsMS40MSAxLjQxQzcuMjggNCA5LjUzIDMgMTIgM3M0LjcyIDEgNi4zNCAyLjYybDEuNDEtMS40MUExMC45NjMgMTAuOTYzIDAgMCAwIDEyIDF6bTIuODYgOS4wMUw5LjE0IDEwQzguNTEgMTAgOCAxMC41MSA4IDExLjE0djkuNzFjMCAuNjMuNTEgMS4xNCAxLjE0IDEuMTRoNS43MWMuNjMgMCAxLjE0LS41MSAxLjE0LTEuMTR2LTkuNzFjLjAxLS42My0uNS0xLjEzLTEuMTMtMS4xM3pNMTUgMjBIOXYtOGg2djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb2tlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgN2MwIDIuMjEtMS43OSA0LTQgNFM4IDkuMjEgOCA3czEuNzktNCA0LTQgNCAxLjc5IDQgNHptLTkgNmMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTEwIDBjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdGF5Q3VycmVudExhbmRzY2FwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuMDEgNyAxIDE3YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMkgzYy0xLjEgMC0xLjk5LjktMS45OSAyek0xOSA3djEwSDVWN2gxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RheUN1cnJlbnRQb3J0cmFpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEuMDEgNyAxYy0xLjEgMC0xLjk5LjktMS45OSAydjE4YzAgMS4xLjg5IDIgMS45OSAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE3IDE5SDdWNWgxMHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RheVByaW1hcnlMYW5kc2NhcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjAxIDcgMSAxN2MwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJIM2MtMS4xIDAtMS45OS45LTEuOTkgMnpNMTkgN3YxMEg1VjdoMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0YXlQcmltYXJ5UG9ydHJhaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMS45OS45LTEuOTkgMnYxOGMwIDEuMS44OSAyIDEuOTkgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOUg3VjVoMTB2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0b3BTY3JlZW5TaGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuMjIgMTguMDIgMiAySDI0di0yaC0yLjc4em0uNzctMiAuMDEtMTBhMiAyIDAgMCAwLTItMkg3LjIybDUuMjMgNS4yM2MuMTgtLjA0LjM2LS4wNy41NS0uMVY3LjAybDQgMy43My0xLjU4IDEuNDcgNS41NCA1LjU0Yy42MS0uMzMgMS4wMy0uOTkgMS4wMy0xLjc0ek0yLjM5IDEuNzMgMS4xMSAzbDEuNTQgMS41NGMtLjQuMzYtLjY1Ljg5LS42NSAxLjQ4djEwYTIgMiAwIDAgMCAyIDJIMHYyaDE4LjEzbDIuNzEgMi43MSAxLjI3LTEuMjdMMi4zOSAxLjczek03IDE1LjAyYy4zMS0xLjQ4LjkyLTIuOTUgMi4wNy00LjA2bDEuNTkgMS41OWMtMS41NC4zOC0yLjcgMS4xOC0zLjY2IDIuNDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3YXBDYWxscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDQtNCA0aDN2N2MwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJWOGMwLTIuMjEtMS43OS00LTQtNFM1IDUuNzkgNSA4djdIMmw0IDQgNC00SDdWOGMwLTEuMS45LTIgMi0yczIgLjkgMiAydjdjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNFY4aDNsLTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dHNtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek05IDExSDdWOWgydjJ6bTQgMGgtMlY5aDJ2MnptNCAwaC0yVjloMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVbnN1YnNjcmliZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAxM2MtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNSAzLjUtMS41NyAzLjUtMy41LTEuNTctMy41LTMuNS0zLjV6bTIgNGgtNHYtMWg0djF6bS02Ljk1IDBjLS4wMi0uMTctLjA1LS4zMy0uMDUtLjUgMC0yLjc2IDIuMjQtNSA1LTUgLjkyIDAgMS43Ni4yNiAyLjUuNjlWNWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDguNTV6TTEyIDEwLjUgNSA3VjVsNyAzLjVMMTkgNXYybC03IDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVm9pY2VtYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSA2QzE1LjQ2IDYgMTMgOC40NiAxMyAxMS41YzAgMS4zMy40NyAyLjU1IDEuMjYgMy41SDkuNzRjLjc5LS45NSAxLjI2LTIuMTcgMS4yNi0zLjVDMTEgOC40NiA4LjU0IDYgNS41IDZTMCA4LjQ2IDAgMTEuNSAyLjQ2IDE3IDUuNSAxN2gxM2MzLjA0IDAgNS41LTIuNDYgNS41LTUuNVMyMS41NCA2IDE4LjUgNnptLTEzIDlDMy41NyAxNSAyIDEzLjQzIDIgMTEuNVMzLjU3IDggNS41IDggOSA5LjU3IDkgMTEuNSA3LjQzIDE1IDUuNSAxNXptMTMgMGMtMS45MyAwLTMuNS0xLjU3LTMuNS0zLjVTMTYuNTcgOCAxOC41IDggMjIgOS41NyAyMiAxMS41IDIwLjQzIDE1IDE4LjUgMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZwbktleU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjgzIDE4SDIxdi00aDJ2LTRIMTIuODNsOCA4em0tMS4wNSA0LjYxIDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIybDIuNTkgMi41OUE2LjAxMiA2LjAxMiAwIDAgMCAxIDEyYzAgMy4zMSAyLjY5IDYgNiA2IDIuMjEgMCA0LjE1LTEuMiA1LjE4LTIuOTlsNy42IDcuNnpNOC45OSAxMS44MmMuMDEuMDYuMDEuMTIuMDEuMTggMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yYy4wNiAwIC4xMiAwIC4xOC4wMWwxLjgxIDEuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZwbktleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjY1IDEwQTUuOTkgNS45OSAwIDAgMCA3IDZjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDZhNS45OSA1Ljk5IDAgMCAwIDUuNjUtNEgxN3Y0aDR2LTRoMnYtNEgxMi42NXpNNyAxNGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmlDYWxsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNC45NUMyMS43OSA0Ljc4IDE5LjY3IDMgMTYuNSAzYy0zLjE4IDAtNS4yOSAxLjc4LTUuNSAxLjk1TDE2LjUgMTIgMjIgNC45NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTUuNTFjLTEuMjQgMC0yLjQ1LS4yLTMuNTctLjU3YS45OTQuOTk0IDAgMCAwLTEuMDIuMjRsLTIuMiAyLjJhMTUuMTQ5IDE1LjE0OSAwIDAgMS02LjU5LTYuNTlsMi4yLTIuMmMuMjgtLjI4LjM2LS42Ny4yNS0xLjAyQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjQ5YzAtLjU1LS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMiAxMGgtNHY0aC0ydi00SDd2LTJoNFY3aDJ2NGg0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZENpcmNsZU91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3aC0ydjRIN3YyaDR2NGgydi00aDR2LTJoLTRWN3ptLTEtNUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTUgMTFoLTR2NGgtMnYtNEg3di0yaDRWN2gydjRoNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDExaDh2Mkg4em0xMi4xIDFIMjJjMC0yLjc2LTIuMjQtNS01LTVoLTR2MS45aDRjMS43MSAwIDMuMSAxLjM5IDMuMSAzLjF6TTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTE5IDEyaC0ydjNoLTN2MmgzdjNoMnYtM2gzdi0yaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxM2gtNnY2aC0ydi02SDV2LTJoNlY1aDJ2Nmg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFtcFN0b3JpZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDRoMTB2MTVIN3pNMyA2aDJ2MTFIM3pNMTkgNmgydjExaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcmNoaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuNTQgNS4yMy0xLjM5LTEuNjhDMTguODggMy4yMSAxOC40NyAzIDE4IDNINmMtLjQ3IDAtLjg4LjIxLTEuMTYuNTVMMy40NiA1LjIzQzMuMTcgNS41NyAzIDYuMDIgMyA2LjVWMTljMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2LjVjMC0uNDgtLjE3LS45My0uNDYtMS4yN3pNMTIgMTcuNSA2LjUgMTJIMTB2LTJoNHYyaDMuNUwxMiAxNy41ek01LjEyIDVsLjgxLTFoMTJsLjk0IDFINS4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXR0cmlidXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4LjVjLS45MSAwLTIuNzUuNDYtMi43NSAxLjM4djQuNjJoMS41VjE5aDIuNXYtNC41aDEuNVY5Ljg4YzAtLjkxLTEuODQtMS4zOC0yLjc1LTEuMzh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmFja3NwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgM0g3Yy0uNjkgMC0xLjIzLjM1LTEuNTkuODhMMCAxMmw1LjQxIDguMTFjLjM2LjUzLjkuODkgMS41OS44OWgxNWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMyAxMi41OUwxNy41OSAxNyAxNCAxMy40MSAxMC40MSAxNyA5IDE1LjU5IDEyLjU5IDEyIDkgOC40MSAxMC40MSA3IDE0IDEwLjU5IDE3LjU5IDcgMTkgOC40MSAxNS40MSAxMiAxOSAxNS41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmFsbG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEzIDkuNWg1di0yaC01djJ6bTAgN2g1di0yaC01djJ6bTYgNC41SDVjLTEuMSAwLTItLjktMi0yVjVjMC0xLjEuOS0yIDItMmgxNGMxLjEgMCAyIC45IDIgMnYxNGMwIDEuMS0uOSAyLTIgMnpNNiAxMWg1VjZINnY1em0xLTRoM3YzSDdWN3pNNiAxOGg1di01SDZ2NXptMS00aDN2M0g3di0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCaW90ZWNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOWMtMS4xIDAtMiAuOS0yIDJoMTRjMC0xLjEtLjktMi0yLTJoLTR2LTJoM2MxLjEgMCAyLS45IDItMmgtOGMtMS42NiAwLTMtMS4zNC0zLTMgMC0xLjA5LjU5LTIuMDQgMS40Ni0yLjU2QzguMTcgOS4wMyA4IDguNTQgOCA4YzAtLjIxLjA0LS40Mi4wOS0uNjJBNS4wMSA1LjAxIDAgMCAwIDUgMTJjMCAyLjc2IDIuMjQgNSA1IDV2Mkg3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41NiA1LjUxQzExLjkxIDUuNTQgMTMgNi42NCAxMyA4YzAgLjc1LS4zMyAxLjQxLS44NSAxLjg3bC41OSAxLjYyLjk0LS4zNC4zNC45NCAxLjg4LS42OC0uMzQtLjk0Ljk0LS4zNC0yLjc0LTcuNTMtLjk0LjM0LS4zNC0uOTQtMS44OC42OC4zNC45NC0uOTQuMzUuNTYgMS41NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMC41XCIsXCJjeVwiOlwiOFwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJsb2NrRmxpcHBlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEyYzAtNS41LTQuNS0xMC0xMC0xMFMyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTB6TTUuNyA3LjFsMTEuMiAxMS4yYy0xLjMgMS4xLTMgMS43LTQuOSAxLjctNC40IDAtOC0zLjYtOC04IDAtMS45LjYtMy42IDEuNy00Ljl6TTIwIDEyYzAgMS45LS42IDMuNi0xLjcgNC45TDcuMSA1LjdDOC40IDQuNiAxMC4xIDQgMTIgNGM0LjQgMCA4IDMuNiA4IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNNCAxMmMwLTQuNDIgMy41OC04IDgtOCAxLjg1IDAgMy41NS42MyA0LjkgMS42OUw1LjY5IDE2LjlBNy45MDIgNy45MDIgMCAwIDEgNCAxMnptOCA4Yy0xLjg1IDAtMy41NS0uNjMtNC45LTEuNjlMMTguMzEgNy4xQTcuOTAyIDcuOTAyIDAgMCAxIDIwIDEyYzAgNC40Mi0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb2x0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyMWgtMWwxLTdINy41Yy0uNTggMC0uNTctLjMyLS4zOC0uNjYuMTktLjM0LjA1LS4wOC4wNy0uMTJDOC40OCAxMC45NCAxMC40MiA3LjU0IDEzIDNoMWwtMSA3aDMuNWMuNDkgMCAuNTYuMzMuNDcuNTFsLS4wNy4xNUMxMi45NiAxNy41NSAxMSAyMSAxMSAyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FsY3VsYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS01Ljk3IDQuMDZMMTQuMDkgNmwxLjQxIDEuNDFMMTYuOTEgNmwxLjA2IDEuMDYtMS40MSAxLjQxIDEuNDEgMS40MS0xLjA2IDEuMDYtMS40MS0xLjQtMS40MSAxLjQxLTEuMDYtMS4wNiAxLjQxLTEuNDEtMS40MS0xLjQyem0tNi43OC42Nmg1djEuNWgtNXYtMS41ek0xMS41IDE2aC0ydjJIOHYtMkg2di0xLjVoMnYtMmgxLjV2MmgyVjE2em02LjUgMS4yNWgtNXYtMS41aDV2MS41em0wLTIuNWgtNXYtMS41aDV2MS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGFuZ2VDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0uMDYgMTd2LTIuMDFIMTJjLTEuMjggMC0yLjU2LS40OS0zLjU0LTEuNDZhNS4wMDYgNS4wMDYgMCAwIDEtLjY0LTYuMjlsMS4xIDEuMWMtLjcxIDEuMzMtLjUzIDMuMDEuNTkgNC4xMy43LjcgMS42MiAxLjAzIDIuNTQgMS4wMXYtMi4xNGwyLjgzIDIuODNMMTIuMDYgMTl6bTQuMTEtNC4yNC0xLjEtMS4xYy43MS0xLjMzLjUzLTMuMDEtLjU5LTQuMTNBMy40ODIgMy40ODIgMCAwIDAgMTIgOC41aC0uMDZ2Mi4xNUw5LjExIDcuODMgMTEuOTQgNXYyLjAyYzEuMy0uMDIgMi42MS40NSAzLjYgMS40NSAxLjcgMS43IDEuOTEgNC4zNS42MyA2LjI5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbGVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDYuNDEgMTcuNTkgNSAxMiAxMC41OSA2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMiAxMy40MSAxNy41OSAxOSAxOSAxNy41OSAxMy40MSAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29udGVudENvcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxSDRjLTEuMSAwLTIgLjktMiAydjE0aDJWM2gxMlYxem0zIDRIOGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxMWMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE2SDhWN2gxMXYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29udGVudEN1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNlwiLFwiY3lcIjpcIjE4XCIsXCJyXCI6XCIyXCIsXCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiLjVcIixcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiMlwiLFwiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjY0IDcuNjRjLjIzLS41LjM2LTEuMDUuMzYtMS42NCAwLTIuMjEtMS43OS00LTQtNFMyIDMuNzkgMiA2czEuNzkgNCA0IDRjLjU5IDAgMS4xNC0uMTMgMS42NC0uMzZMMTAgMTJsLTIuMzYgMi4zNkM3LjE0IDE0LjEzIDYuNTkgMTQgNiAxNGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00YzAtLjU5LS4xMy0xLjE0LS4zNi0xLjY0TDEyIDE0bDcgN2gzdi0xTDkuNjQgNy42NHpNNiA4Yy0xLjEgMC0yLS44OS0yLTJzLjktMiAyLTIgMiAuODkgMiAyLS45IDItMiAyem0wIDEyYy0xLjEgMC0yLS44OS0yLTJzLjktMiAyLTIgMiAuODkgMiAyLS45IDItMiAyem02LTcuNWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41LjUuMjIuNS41LS4yMi41LS41LjV6TTE5IDNsLTYgNiAyIDIgNy03VjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRlbnRQYXN0ZUdvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA1aDJ2M2gxMFY1aDJ2NmgyVjVjMC0xLjEtLjktMi0yLTJoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxcy0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNXYtMkg1VjV6bTctMmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC4wMSAxMy0xLjQyIDEuNDEgMS41OCAxLjU4SDEydjJoNi4xN2wtMS41OCAxLjU5IDEuNDIgMS40MSAzLjk5LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRlbnRQYXN0ZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjIgMyA1LjgzVjE5YzAgMS4xLjkgMiAyIDJoMTMuMTdsMS42MSAxLjYxIDEuNDEtMS40MnpNNSAxOVY3LjgzTDE2LjE3IDE5SDV6TTE3IDhWNWgydjExLjE3bDIgMlY1YzAtMS4xLS45LTItMi0yaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg1LjgzbDUgNUgxN3ptLTUtNWMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb250ZW50UGFzdGVTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDVoMnYzaDEwVjVoMnY1aDJWNWMwLTEuMS0uOS0yLTItMmgtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFzLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg1di0ySDVWNXptNy0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjMgMTguOWMuNC0uNy43LTEuNS43LTIuNCAwLTIuNS0yLTQuNS00LjUtNC41UzEyIDE0IDEyIDE2LjVzMiA0LjUgNC41IDQuNWMuOSAwIDEuNy0uMyAyLjQtLjdsMi43IDIuNyAxLjQtMS40LTIuNy0yLjd6bS0zLjguMWMtMS40IDAtMi41LTEuMS0yLjUtMi41czEuMS0yLjUgMi41LTIuNSAyLjUgMS4xIDIuNSAyLjUtMS4xIDIuNS0yLjUgMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb250ZW50UGFzdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAyaC00LjE4QzE0LjQuODQgMTMuMyAwIDEyIDBjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTcgMThINVY0aDJ2M2gxMFY0aDJ2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvcHlBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAySDljLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoOWMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDlWNGg5djEyek0zIDE1di0yaDJ2Mkgzem0wLTUuNWgydjJIM3YtMnpNMTAgMjBoMnYyaC0ydi0yem0tNy0xLjV2LTJoMnYySDN6TTUgMjJjLTEuMSAwLTItLjktMi0yaDJ2MnptMy41IDBoLTJ2LTJoMnYyem01IDB2LTJoMmMwIDEuMS0uOSAyLTIgMnpNNSA2djJIM2MwLTEuMS45LTIgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcmVhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTIwLjcxIDcuMDRhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0yLjM0LTIuMzRhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVsZXRlU3dlZXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxNmg0djJoLTR6bTAtOGg3djJoLTd6bTAgNGg2djJoLTZ6TTMgMThjMCAxLjEuOSAyIDIgMmg2YzEuMSAwIDItLjkgMi0yVjhIM3YxMHpNMTQgNWgtM2wtMS0xSDZMNSA1SDJ2MmgxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVzZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzaDJ2LTJIM3Yyem00IDhoMnYtMkg3djJ6bTYtMThoLTJ2MmgyVjN6bTYgMHYyaDJjMC0xLjEtLjktMi0yLTJ6TTUgMjF2LTJIM2MwIDEuMS45IDIgMiAyem0tMi00aDJ2LTJIM3Yyem04IDRoMnYtMmgtMnYyem04LThoMnYtMmgtMnYyem0wLTRoMlY3aC0ydjJ6bS00LTRoMlYzaC0ydjJ6TTcuODMgNSA3IDQuMTdWM2gydjJINy44M3ptMTIgMTItLjgzLS44M1YxNWgydjJoLTEuMTd6bTEuMzYgNC4xOUwyLjgxIDIuODEgMS4zOSA0LjIyIDQuMTcgN0gzdjJoMlY3LjgzbDIgMlYxN2g3LjE3bDIgMkgxNXYyaDJ2LTEuMTdsMi43OCAyLjc4IDEuNDEtMS40MnpNOSAxNXYtMy4xN0wxMi4xNyAxNUg5em02LTIuODNWOWgtMy4xN2wtMi0ySDE3djcuMTdsLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRHJhZnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTkgOGMwLS43Mi0uMzctMS4zNS0uOTQtMS43TDEyIDEgMi45NSA2LjNDMi4zOCA2LjY1IDIgNy4yOCAyIDh2MTBjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMmwtLjAxLTEwek0xMiAxMyAzLjc0IDcuODQgMTIgM2w4LjI2IDQuODRMMTIgMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZER5bmFtaWNGZWVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA4SDZ2N2MwIDEuMS45IDIgMiAyaDl2LTJIOFY4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzaC04Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDhoLThWN2g4djR6TTQgMTJIMnY3YzAgMS4xLjkgMiAyIDJoOXYtMkg0di03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWxlQ29weSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDFINGMtMS4xIDAtMiAuOS0yIDJ2MTRoMlYzaDEyVjF6bS0xIDQgNiA2djEwYzAgMS4xLS45IDItMiAySDcuOTlDNi44OSAyMyA2IDIyLjEgNiAyMWwuMDEtMTRjMC0xLjEuODktMiAxLjk5LTJoN3ptLTEgN2g1LjVMMTQgNi41VjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXJMaXN0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuODMgOEgyMVY2SDguODNsMiAyem01IDVIMTh2LTJoLTQuMTdsMiAyek0xNCAxNi44M1YxOGgtNHYtMmgzLjE3bC0zLTNINnYtMmgyLjE3bC0zLTNIM1Y2aC4xN0wxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40MSAxLjQxTDE0IDE2LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXJMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMThoNHYtMmgtNHYyek0zIDZ2MmgxOFY2SDN6bTMgN2gxMnYtMkg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsYWdDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem02IDEzaC01bC0xLTJIOS41djVIOFY3aDZsMSAyaDN2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjQgNiAxNCA0SDV2MTdoMnYtN2g1LjZsLjQgMmg3VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvbnREb3dubG9hZE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyLjU4IDkuNzUtLjg3LS44Ny4yMy0uNjZoLjFsLjU0IDEuNTN6bS0yLjIzLTIuMjNMMTAuOTIgNmgyLjE0bDIuNTUgNi43OUwyMiAxOS4xN1Y0YzAtMS4xLS45LTItMi0ySDQuODNsNS41MiA1LjUyem0xMC4xNCAxNS43OUwxOS4xNyAyMkg0Yy0xLjEgMC0yLS45LTItMlY0LjgzTC42OSAzLjUxIDIuMSAyLjFsMTkuOCAxOS44LTEuNDEgMS40MXptLTguMzktOC4zOC0zLjMtMy4zTDYuNDEgMThoMi4wOGwxLjA5LTMuMDdoMi41MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9udERvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImJhc2VQcm9maWxlXCI6XCJ0aW55XCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS45MyAxMy41aDQuMTRMMTIgNy45OHpNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS00LjA1IDE2LjUtMS4xNC0zSDkuMTdsLTEuMTIgM0g1Ljk2bDUuMTEtMTNoMS44Nmw1LjExIDEzaC0yLjA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3J3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOFY0bDggOC04IDh2LTRINFY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHZXN0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41OSA2Ljg5Yy43LS43MSAxLjQtMS4zNSAxLjcxLTEuMjIuNS4yIDAgMS4wMy0uMyAxLjUyLS4yNS40Mi0yLjg2IDMuODktMi44NiA2LjMxIDAgMS4yOC40OCAyLjM0IDEuMzQgMi45OC43NS41NiAxLjc0LjczIDIuNjQuNDYgMS4wNy0uMzEgMS45NS0xLjQgMy4wNi0yLjc3IDEuMjEtMS40OSAyLjgzLTMuNDQgNC4wOC0zLjQ0IDEuNjMgMCAxLjY1IDEuMDEgMS43NiAxLjc5LTMuNzguNjQtNS4zOCAzLjY3LTUuMzggNS4zNyAwIDEuNyAxLjQ0IDMuMDkgMy4yMSAzLjA5IDEuNjMgMCA0LjI5LTEuMzMgNC42OS02LjFIMjF2LTIuNWgtMi40N2MtLjE1LTEuNjUtMS4wOS00LjItNC4wMy00LjItMi4yNSAwLTQuMTggMS45MS00Ljk0IDIuODQtLjU4LjczLTIuMDYgMi40OC0yLjI5IDIuNzItLjI1LjMtLjY4Ljg0LTEuMTEuODQtLjQ1IDAtLjcyLS44My0uMzYtMS45Mi4zNS0xLjA5IDEuNC0yLjg2IDEuODUtMy41Mi43OC0xLjE0IDEuMy0xLjkyIDEuMy0zLjI4QzguOTUgMy42OSA3LjMxIDMgNi40NCAzIDUuMTIgMyAzLjk3IDQgMy43MiA0LjI1Yy0uMzYuMzYtLjY2LjY2LS44OC45M2wxLjc1IDEuNzF6bTkuMjkgMTEuNjZjLS4zMSAwLS43NC0uMjYtLjc0LS43MiAwLS42LjczLTIuMiAyLjg3LTIuNzYtLjMgMi42OS0xLjQzIDMuNDgtMi4xMyAzLjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3dUb1JlZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOSAxNyAzLTIuOTRhOS4zNCA5LjM0IDAgMCAwLTEtLjA2Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDlsLTMtM3ptMi01YzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNE0xNS40NyAyMC41IDEyIDE3bDEuNC0xLjQxIDIuMDcgMi4wOCA1LjEzLTUuMTcgMS40IDEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG93VG9Wb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2gtLjY4bC0yIDJoMS45MUwxOSAxN0g1bDEuNzgtMmgyLjA1bC0yLTJINmwtMyAzdjRjMCAxLjEuODkgMiAxLjk5IDJIMTlhMiAyIDAgMCAwIDItMnYtNGwtMy0zem0tMS01LjA1LTQuOTUgNC45NS0zLjU0LTMuNTQgNC45NS00Ljk1TDE3IDcuOTV6bS00LjI0LTUuNjZMNi4zOSA4LjY2YS45OTYuOTk2IDAgMCAwIDAgMS40MWw0Ljk1IDQuOTVjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDYuMzYtNi4zNmEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFMMTQuMTYgMi4zYS45NzUuOTc1IDAgMCAwLTEuNC0uMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDQuOTljLTEuMTEgMC0xLjk4Ljg5LTEuOTggMkwzIDE5YzAgMS4xLjg4IDIgMS45OSAySDE5YzEuMSAwIDItLjkgMi0yVjVhMiAyIDAgMCAwLTItMnptMCAxMmgtNGMwIDEuNjYtMS4zNSAzLTMgM3MtMy0xLjM0LTMtM0g0Ljk5VjVIMTl2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluc2lnaHRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOGMtMS40NSAwLTIuMjYgMS40NC0xLjkzIDIuNTFsLTMuNTUgMy41NmMtLjMtLjA5LS43NC0uMDktMS4wNCAwbC0yLjU1LTIuNTVDMTIuMjcgMTAuNDUgMTEuNDYgOSAxMCA5Yy0xLjQ1IDAtMi4yNyAxLjQ0LTEuOTMgMi41MmwtNC41NiA0LjU1QzIuNDQgMTUuNzQgMSAxNi41NSAxIDE4YzAgMS4xLjkgMiAyIDIgMS40NSAwIDIuMjYtMS40NCAxLjkzLTIuNTFsNC41NS00LjU2Yy4zLjA5Ljc0LjA5IDEuMDQgMGwyLjU1IDIuNTVDMTIuNzMgMTYuNTUgMTMuNTQgMTggMTUgMThjMS40NSAwIDIuMjctMS40NCAxLjkzLTIuNTJsMy41Ni0zLjU1YzEuMDcuMzMgMi41MS0uNDggMi41MS0xLjkzIDAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNSA5IC45NC0yLjA3TDE4IDZsLTIuMDYtLjkzTDE1IDNsLS45MiAyLjA3TDEyIDZsMi4wOC45M3pNMy41IDExIDQgOWwyLS41TDQgOGwtLjUtMkwzIDhsLTIgLjVMMyA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnZlbnRvcnkyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xIDAtMiAuOS0yIDJ2My4wMWMwIC43Mi40MyAxLjM0IDEgMS42OVYyMGMwIDEuMSAxLjEgMiAyIDJoMTRjLjkgMCAyLS45IDItMlY4LjdjLjU3LS4zNSAxLS45NyAxLTEuNjlWNGMwLTEuMS0xLTItMi0yem0tNSAxMkg5di0yaDZ2MnptNS03SDRWNGgxNnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnZlbnRvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMSAwLTIgLjktMiAydjMuMDFjMCAuNzIuNDMgMS4zNCAxIDEuNjlWMjBjMCAxLjEgMS4xIDIgMiAyaDE0Yy45IDAgMi0uOSAyLTJWOC43Yy41Ny0uMzUgMS0uOTcgMS0xLjY5VjRjMC0xLjEtMS0yLTItMnptLTUgMTJIOXYtMmg2djJ6bTUtN0g0VjRsMTYtLjAyVjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpbmtPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDdoLTR2MS45aDRjMS43MSAwIDMuMSAxLjM5IDMuMSAzLjEgMCAxLjQzLS45OCAyLjYzLTIuMzEgMi45OGwxLjQ2IDEuNDZDMjAuODggMTUuNjEgMjIgMTMuOTUgMjIgMTJjMC0yLjc2LTIuMjQtNS01LTV6bS0xIDRoLTIuMTlsMiAySDE2ek0yIDQuMjdsMy4xMSAzLjExQTQuOTkxIDQuOTkxIDAgMCAwIDIgMTJjMCAyLjc2IDIuMjQgNSA1IDVoNHYtMS45SDdjLTEuNzEgMC0zLjEtMS4zOS0zLjEtMy4xIDAtMS41OSAxLjIxLTIuOSAyLjc2LTMuMDdMOC43MyAxMUg4djJoMi43M0wxMyAxNS4yN1YxN2gxLjczbDQuMDEgNEwyMCAxOS43NCAzLjI3IDMgMiA0LjI3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDI0VjBcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGluayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb3dQcmlvcml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDVoOHYyaC04em0wIDUuNWg4djJoLTh6bTAgNS41aDh2MmgtOHpNMiAxMS41QzIgMTUuMDggNC45MiAxOCA4LjUgMThIOXYybDMtMy0zLTN2MmgtLjVDNi4wMiAxNiA0IDEzLjk4IDQgMTEuNVM2LjAyIDcgOC41IDdIMTJWNUg4LjVDNC45MiA1IDIgNy45MiAyIDExLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgNC04IDUtOC01VjZsOCA1IDgtNXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYXJrdW5yZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDQtOCA1LTgtNVY2bDggNSA4LTV2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW92ZVRvSW5ib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINC45OWMtMS4xMSAwLTEuOTguOS0xLjk4IDJMMyAxOWMwIDEuMS44OCAyIDEuOTkgMkgxOWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDEyaC00YzAgMS42Ni0xLjM1IDMtMyAzcy0zLTEuMzQtMy0zSDQuOTlWNUgxOXYxMHptLTMtNWgtMlY3aC00djNIOGw0IDQgNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZXh0V2VlayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDdoLTRWNWMwLS41NS0uMjItMS4wNS0uNTktMS40MUMxNS4wNSAzLjIyIDE0LjU1IDMgMTQgM2gtNGMtMS4xIDAtMiAuOS0yIDJ2Mkg0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6TTEwIDVoNHYyaC00VjV6bTEgMTMuNS0xLTEgMy0zLTMtMyAxLTEgNCA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZWRGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQgNi0xLTJINXYxN2gydi03aDVsMSAyaDdWNmgtNnptNCA4aC00bC0xLTJIN1Y2aDVsMSAyaDV2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG9saWN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEgNS05LTQtOSA0djZjMCA1LjU1IDMuODQgMTAuNzQgOSAxMiAyLjMtLjU2IDQuMzMtMS45IDUuODgtMy43MWwtMy4xMi0zLjEyYTQuOTk0IDQuOTk0IDAgMCAxLTYuMjktLjY0IDUuMDAzIDUuMDAzIDAgMCAxIDAtNy4wNyA1LjAwMyA1LjAwMyAwIDAgMSA3LjA3IDAgNS4wMDYgNS4wMDYgMCAwIDEgLjY0IDYuMjlsMi45IDIuOUMyMC4yOSAxNS42OSAyMSAxMy4zOCAyMSAxMVY1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHVzaFBpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNiA5VjRoMWMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxaDF2NWMwIDEuNjYtMS4zNCAzLTMgM3YyaDUuOTd2N2wxIDEgMS0xdi03SDE5di0yYy0xLjY2IDAtMy0xLjM0LTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVkbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjQgMTAuNkMxNi41NSA4Ljk5IDE0LjE1IDggMTEuNSA4Yy00LjY1IDAtOC41OCAzLjAzLTkuOTYgNy4yMkwzLjkgMTZhOC4wMDIgOC4wMDIgMCAwIDEgNy42LTUuNWMxLjk1IDAgMy43My43MiA1LjEyIDEuODhMMTMgMTZoOVY3bC0zLjYgMy42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZW1vdmVDaXJjbGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMXYyaDEwdi0ySDd6bTUtOUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlbW92ZUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTUgMTFIN3YtMmgxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxM0g1di0yaDE0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlcGx5QWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA4VjVsLTcgNyA3IDd2LTNsLTQtNCA0LTR6bTYgMVY1bC03IDcgNyA3di00LjFjNSAwIDguNSAxLjYgMTEgNS4xLTEtNS00LTEwLTExLTExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDlWNWwtNyA3IDcgN3YtNC4xYzUgMCA4LjUgMS42IDExIDUuMS0xLTUtNC0xMC0xMS0xMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwb3J0R21haWxlcnJvcnJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjczIDNIOC4yN0wzIDguMjd2Ny40Nkw4LjI3IDIxaDcuNDZMMjEgMTUuNzNWOC4yN0wxNS43MyAzek0xOSAxNC45IDE0LjkgMTlIOS4xTDUgMTQuOVY5LjFMOS4xIDVoNS44TDE5IDkuMXY1Ljh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDdoMnY2aC0yek0xMSAxNWgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlcG9ydE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDdoMnYyLjkybDYuOTEgNi45MSAxLjA5LTEuMVY4LjI3TDE1LjczIDNIOC4yN0w3LjE4IDQuMSAxMSA3Ljkyem0xMS4yNyAxNC43My0yMC0yMC4wMUwxIDIuOTlsMy42NCAzLjY0TDMgOC4yN3Y3LjQ2TDguMjcgMjFoNy40NmwxLjY0LTEuNjNMMjEgMjNsMS4yNy0xLjI3ek0xMiAxNy4zYy0uNzIgMC0xLjMtLjU4LTEuMy0xLjNzLjU4LTEuMyAxLjMtMS4zIDEuMy41OCAxLjMgMS4zLS41OCAxLjMtMS4zIDEuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNzMgM0g4LjI3TDMgOC4yN3Y3LjQ2TDguMjcgMjFoNy40NkwyMSAxNS43M1Y4LjI3TDE1LjczIDN6TTEyIDE3LjNjLS43MiAwLTEuMy0uNTgtMS4zLTEuMyAwLS43Mi41OC0xLjMgMS4zLTEuMy43MiAwIDEuMy41OCAxLjMgMS4zIDAgLjcyLS41OCAxLjMtMS4zIDEuM3ptMS00LjNoLTJWN2gydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNhdmVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMnY3SDV2LTdIM3Y3YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTdoLTJ6bS02IC42NyAyLjU5LTIuNThMMTcgMTEuNWwtNSA1LTUtNSAxLjQxLTEuNDFMMTEgMTIuNjdWM2gyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYXZlQXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMi40VjdsLTQtNEg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmg3LjRsOC42LTguNnpNMTUgMTVjMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTMgMS4zNC0zIDMtMyAzIDEuMzQgMyAzek02IDZoOXY0SDZWNnptMTMuOTkgMTAuMjUgMS43NyAxLjc3TDE2Ljc3IDIzSDE1di0xLjc3bDQuOTktNC45OHptMy4yNi4yNi0uODUuODUtMS43Ny0xLjc3Ljg1LS44NWMuMi0uMi41MS0uMi43MSAwbDEuMDYgMS4wNmMuMi4yLjIuNTIgMCAuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAzSDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZWxlY3RBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVoMlYzYy0xLjEgMC0yIC45LTIgMnptMCA4aDJ2LTJIM3Yyem00IDhoMnYtMkg3djJ6TTMgOWgyVjdIM3Yyem0xMC02aC0ydjJoMlYzem02IDB2MmgyYzAtMS4xLS45LTItMi0yek01IDIxdi0ySDNjMCAxLjEuOSAyIDIgMnptLTItNGgydi0ySDN2MnpNOSAzSDd2MmgyVjN6bTIgMThoMnYtMmgtMnYyem04LThoMnYtMmgtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnptMC0xMmgyVjdoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptLTQgNGgydi0yaC0ydjJ6bTAtMTZoMlYzaC0ydjJ6TTcgMTdoMTBWN0g3djEwem0yLThoNnY2SDlWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuMDEgMjEgMjMgMTIgMi4wMSAzIDIgMTBsMTUgMi0xNSAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaGllbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxIDMgNXY2YzAgNS41NSAzLjg0IDEwLjc0IDkgMTIgNS4xNi0xLjI2IDktNi40NSA5LTEyVjVsLTktNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU29ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMThoNnYtMkgzdjJ6TTMgNnYyaDE4VjZIM3ptMCA3aDEydi0ySDN2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3F1YXJlRm9vdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjY2IDE3LjY2LTEuMDYgMS4wNi0uNzEtLjcxIDEuMDYtMS4wNi0xLjk0LTEuOTQtMS4wNiAxLjA2LS43MS0uNzEgMS4wNi0xLjA2LTEuOTQtMS45NC0xLjA2IDEuMDYtLjcxLS43MSAxLjA2LTEuMDZMOS43IDkuN2wtMS4wNiAxLjA2LS43MS0uNzEgMS4wNi0xLjA2LTEuOTQtMS45NC0xLjA2IDEuMDYtLjcxLS43MSAxLjA2LTEuMDZMNCA0djE0YzAgMS4xLjkgMiAyIDJoMTRsLTIuMzQtMi4zNHpNNyAxN3YtNS43NkwxMi43NiAxN0g3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdGFja2VkQmFyQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDloNHYxMUg0ek00IDRoNHY0SDR6TTEwIDdoNHY0aC00ek0xNiAxMGg0djRoLTR6TTE2IDE1aDR2NWgtNHpNMTAgMTJoNHY4aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdHJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjIwXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI0XCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjIwXCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjA1IDguNTkgNi4wMyA0LjU1aC0uMDFsLS4zMS0uMzItMS40MiAxLjQxIDQuMDIgNC4wNS4wMS0uMDEuMzEuMzJ6bTMuODkzLjAyNyA0LjQwNS00LjM5MkwxOS43NiA1LjY0bC00LjQwNSA0LjM5M3pNMTAuMDEgMTUuMzZsLTEuNDItMS40MS00LjAzIDQuMDEtLjMyLjMzIDEuNDEgMS40MSA0LjAzLTQuMDJ6bTkuNzUgMi45NC0zLjk5LTQuMDEtLjM2LS4zNUwxNCAxNS4zNWwzLjk5IDQuMDEuMzUuMzV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTBWOGgtNFY0aC0ydjRoLTRWNEg4djRINHYyaDR2NEg0djJoNHY0aDJ2LTRoNHY0aDJ2LTRoNHYtMmgtNHYtNGg0em0tNiA0aC00di00aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dEZvcm1hdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTd2MmgxNHYtMkg1em00LjUtNC4yaDVsLjkgMi4yaDIuMUwxMi43NSA0aC0xLjVMNi41IDE1aDIuMWwuOS0yLjJ6TTEyIDUuOTggMTMuODcgMTFoLTMuNzRMMTIgNS45OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVW5hcmNoaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuNTUgNS4yMi0xLjM5LTEuNjhBMS41MSAxLjUxIDAgMCAwIDE4IDNINmMtLjQ3IDAtLjg4LjIxLTEuMTUuNTVMMy40NiA1LjIyQzMuMTcgNS41NyAzIDYuMDEgMyA2LjVWMTlhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2LjVjMC0uNDktLjE3LS45My0uNDUtMS4yOHpNMTIgOS41bDUuNSA1LjVIMTR2MmgtNHYtMkg2LjVMMTIgOS41ek01LjEyIDVsLjgyLTFoMTJsLjkzIDFINS4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVW5kbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgOGMtMi42NSAwLTUuMDUuOTktNi45IDIuNkwyIDd2OWg5bC0zLjYyLTMuNjJjMS4zOS0xLjE2IDMuMTYtMS44OCA1LjEyLTEuODggMy41NCAwIDYuNTUgMi4zMSA3LjYgNS41bDIuMzctLjc4QzIxLjA4IDExLjAzIDE3LjE1IDggMTIuNSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVcGNvbWluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjE2IDcuMjYtMS40MS0xLjQxLTMuNTYgMy41NSAxLjQxIDEuNDFzMy40NS0zLjUyIDMuNTYtMy41NXpNMTEgM2gydjVoLTJ6TTYuNCAxMC44MSA3LjgxIDkuNCA0LjI2IDUuODQgMi44NCA3LjI2Yy4xMS4wMyAzLjU2IDMuNTUgMy41NiAzLjU1ek0yMCAxMmgtNWMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtM0g0Yy0xLjEgMC0yIC45LTIgMnY1YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJ2LTVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdhdmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxNi45OWMtMS4zNSAwLTIuMi40Mi0yLjk1LjgtLjY1LjMzLTEuMTguNi0yLjA1LjYtLjkgMC0xLjQtLjI1LTIuMDUtLjYtLjc1LS4zOC0xLjU3LS44LTIuOTUtLjhzLTIuMi40Mi0yLjk1LjhjLS42NS4zMy0xLjE3LjYtMi4wNS42djEuOTVjMS4zNSAwIDIuMi0uNDIgMi45NS0uOC42NS0uMzMgMS4xNy0uNiAyLjA1LS42czEuNC4yNSAyLjA1LjZjLjc1LjM4IDEuNTcuOCAyLjk1LjhzMi4yLS40MiAyLjk1LS44Yy42NS0uMzMgMS4xOC0uNiAyLjA1LS42LjkgMCAxLjQuMjUgMi4wNS42Ljc1LjM4IDEuNTguOCAyLjk1Ljh2LTEuOTVjLS45IDAtMS40LS4yNS0yLjA1LS42LS43NS0uMzgtMS42LS44LTIuOTUtLjh6bTAtNC40NWMtMS4zNSAwLTIuMi40My0yLjk1LjgtLjY1LjMyLTEuMTguNi0yLjA1LjYtLjkgMC0xLjQtLjI1LTIuMDUtLjYtLjc1LS4zOC0xLjU3LS44LTIuOTUtLjhzLTIuMi40My0yLjk1LjhjLS42NS4zMi0xLjE3LjYtMi4wNS42djEuOTVjMS4zNSAwIDIuMi0uNDMgMi45NS0uOC42NS0uMzUgMS4xNS0uNiAyLjA1LS42czEuNC4yNSAyLjA1LjZjLjc1LjM4IDEuNTcuOCAyLjk1LjhzMi4yLS40MyAyLjk1LS44Yy42NS0uMzUgMS4xNS0uNiAyLjA1LS42czEuNC4yNSAyLjA1LjZjLjc1LjM4IDEuNTguOCAyLjk1Ljh2LTEuOTVjLS45IDAtMS40LS4yNS0yLjA1LS42LS43NS0uMzgtMS42LS44LTIuOTUtLjh6bTIuOTUtOC4wOGMtLjc1LS4zOC0xLjU4LS44LTIuOTUtLjhzLTIuMi40Mi0yLjk1LjhjLS42NS4zMi0xLjE4LjYtMi4wNS42LS45IDAtMS40LS4yNS0yLjA1LS42LS43NS0uMzctMS41Ny0uOC0yLjk1LS44cy0yLjIuNDItMi45NS44Yy0uNjUuMzMtMS4xNy42LTIuMDUuNnYxLjkzYzEuMzUgMCAyLjItLjQzIDIuOTUtLjguNjUtLjMzIDEuMTctLjYgMi4wNS0uNnMxLjQuMjUgMi4wNS42Yy43NS4zOCAxLjU3LjggMi45NS44czIuMi0uNDMgMi45NS0uOGMuNjUtLjMyIDEuMTgtLjYgMi4wNS0uNi45IDAgMS40LjI1IDIuMDUuNi43NS4zOCAxLjU4LjggMi45NS44VjUuMDRjLS45IDAtMS40LS4yNS0yLjA1LS41OHpNMTcgOC4wOWMtMS4zNSAwLTIuMi40My0yLjk1LjgtLjY1LjM1LTEuMTUuNi0yLjA1LjZzLTEuNC0uMjUtMi4wNS0uNmMtLjc1LS4zOC0xLjU3LS44LTIuOTUtLjhzLTIuMi40My0yLjk1LjhjLS42NS4zNS0xLjE1LjYtMi4wNS42djEuOTVjMS4zNSAwIDIuMi0uNDMgMi45NS0uOC42NS0uMzIgMS4xOC0uNiAyLjA1LS42czEuNC4yNSAyLjA1LjZjLjc1LjM4IDEuNTcuOCAyLjk1LjhzMi4yLS40MyAyLjk1LS44Yy42NS0uMzIgMS4xOC0uNiAyLjA1LS42LjkgMCAxLjQuMjUgMi4wNS42Ljc1LjM4IDEuNTguOCAyLjk1LjhWOS40OWMtLjkgMC0xLjQtLjI1LTIuMDUtLjYtLjc1LS4zOC0xLjYtLjgtMi45NS0uOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2ViU3RvcmllcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDRjMS4xIDAgMiAuOSAyIDJ2MTJjMCAxLjEtLjkgMi0yIDJWNHpNMiAyMGMwIDEuMS45IDIgMiAyaDljMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxNnptMTktMmMuODMgMCAxLjUtLjY3IDEuNS0xLjV2LTljMC0uODMtLjY3LTEuNS0xLjUtMS41djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXZWVrZW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTBjLTEuMSAwLTIgLjktMiAydjNINXYtM2EyIDIgMCAxIDAtNCAwdjVjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnYtNWMwLTEuMS0uOS0yLTItMnptLTMtNUg2Yy0xLjEgMC0yIC45LTIgMnYyLjE1YzEuMTYuNDEgMiAxLjUyIDIgMi44MVYxNGgxMnYtMi4wM2MwLTEuMy44NC0yLjQgMi0yLjgxVjdjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdoZXJlVG9Wb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYzMuODYgMCA3IDMuMTQgNyA3IDAgNS4yNS03IDEzLTcgMTNTNSAxNC4yNSA1IDljMC0zLjg2IDMuMTQtNyA3LTd6bS0xLjUzIDEyTDE3IDcuNDEgMTUuNiA2bC01LjEzIDUuMThMOC40IDkuMDkgNyAxMC41bDMuNDcgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxeE1vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgN2g0djEwSDZWOUg0Vjd6bTExLjgzIDQuNzJMMTguNjYgN2gtMi4zM2wtMS42NiAyLjc3TDEzIDdoLTIuMzNsMi44MyA0LjcyTDEwLjMzIDE3aDIuMzNsMi0zLjM0IDIgMy4zNEgxOWwtMy4xNy01LjI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQzMEZwcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA1djNoNnYyLjVIM3YzaDVWMTZIMnYzaDZjMS42NiAwIDMtMS4zNCAzLTN2LTEuOUEyLjEgMi4xIDAgMCAwIDguOSAxMiAyLjEgMi4xIDAgMCAwIDExIDkuOVY4YzAtMS42Ni0xLjM0LTMtMy0zSDJ6bTE3IDN2OGgtNFY4aDRtMC0zaC00Yy0xLjY2IDAtMyAxLjM0LTMgM3Y4YzAgMS42NiAxLjM0IDMgMyAzaDRjMS42NiAwIDMtMS4zNCAzLTNWOGMwLTEuNjYtMS4zNC0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kM2dNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDd2Mmg1djJINHYyaDR2MkgzdjJoNWMxLjEgMCAyLS45IDItMnYtMS41YzAtLjgzLS42Ny0xLjUtMS41LTEuNS44MyAwIDEuNS0uNjcgMS41LTEuNVY5YzAtMS4xLS45LTItMi0ySDN6bTE4IDR2NGMwIDEuMS0uOSAyLTIgMmgtNWMtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDVjMS4xIDAgMiAuOSAyIDJoLTd2Nmg1di0yaC0yLjV2LTJIMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDRnTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA3SDd2NUg1VjdIM3Y3aDR2M2gydi0zaDJ2LTJIOVY3em04IDR2MmgydjJoLTVWOWg3YzAtMS4xLS45LTItMi0yaC01Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoNWMxLjEgMCAyLS45IDItMnYtNGgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNGdQbHVzTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTF2MmgydjJoLTRWOWg2YzAtMS4xLS45LTItMi0yaC00Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoNGMxLjEgMCAyLS45IDItMnYtNGgtNHptMTEgMGgtMlY5aC0ydjJoLTJ2MmgydjJoMnYtMmgydi0yek03IDdINXY1SDNWN0gxdjdoNHYzaDJ2LTNoMXYtMkg3Vjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDYwRnBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA4djhoLTRWOGg0bTAtM2gtNGMtMS42NiAwLTMgMS4zNC0zIDN2OGMwIDEuNjYgMS4zNCAzIDMgM2g0YzEuNjYgMCAzLTEuMzQgMy0zVjhjMC0xLjY2LTEuMzQtMy0zLTN6bS05IDNWNUg1QzMuMzQgNSAyIDYuMzQgMiA4djhjMCAxLjY2IDEuMzQgMyAzIDNoM2MxLjY2IDAgMy0xLjM0IDMtM3YtM2MwLTEuNjYtMS4zNC0zLTMtM0g1VjhoNXptLTIgNXYzSDV2LTNoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWNjZXNzQWxhcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiA1LjcyLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek03Ljg4IDMuMzkgNi42IDEuODYgMiA1LjcxbDEuMjkgMS41MyA0LjU5LTMuODV6TTEyLjUgOEgxMXY2bDQuNzUgMi44NS43NS0xLjIzLTQtMi4zN1Y4ek0xMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5YTkgOSAwIDAgMCAwLTE4em0wIDE2Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWNjZXNzQWxhcm1zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0tNjE4LTU2OEg3ODJ2MzYwMEgtNjE4ek0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgNS43LTQuNi0zLjktMS4zIDEuNSA0LjYgMy45TDIyIDUuN3pNNy45IDMuNCA2LjYgMS45IDIgNS43bDEuMyAxLjUgNC42LTMuOHpNMTIuNSA4SDExdjZsNC43IDIuOS44LTEuMi00LTIuNFY4ek0xMiA0Yy01IDAtOSA0LTkgOXM0IDkgOSA5IDktNCA5LTktNC05LTktOXptMCAxNmMtMy45IDAtNy0zLjEtNy03czMuMS03IDctNyA3IDMuMSA3IDctMy4xIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY2Nlc3NUaW1lRmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyem0zLjMgMTQuNzFMMTEgMTIuNDFWN2gydjQuNTlsMy43MSAzLjcxLTEuNDIgMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWNjZXNzVGltZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkVW5pdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxSDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxOEg3VjVoMTB2MTR6TTggNmg4djJIOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkQWxhcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljg4IDMuMzkgNi42IDEuODYgMiA1LjcxbDEuMjkgMS41MyA0LjU5LTMuODV6TTIyIDUuNzJsLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek0xMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5YTkgOSAwIDAgMCAwLTE4em0wIDE2Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3ptMS0xMWgtMnYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zVjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZFRvSG9tZVNjcmVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMS4wMSA4IDFjLTEuMSAwLTIgLjktMiAydjNoMlY1aDEwdjE0SDh2LTFINnYzYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTAgMTVoMlY4SDV2MmgzLjU5TDMgMTUuNTkgNC40MSAxNyAxMCAxMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDE3YzAgMS42NS0xLjM1IDMtMyAzcy0zLTEuMzUtMy0zaDJjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xLS40NS0xLTEtMUgydi0yaDkuNWMxLjY1IDAgMyAxLjM1IDMgM3pNMTkgNi41QzE5IDQuNTcgMTcuNDMgMyAxNS41IDNTMTIgNC41NyAxMiA2LjVoMmMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVMxNi4zMyA4IDE1LjUgOEgydjJoMTMuNWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNXptLS41IDQuNUgydjJoMTYuNWMuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41djJjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMjAuNDMgMTEgMTguNSAxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlycGxhbmVUaWNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjE5IDRINGMtMS4xIDAtMS45OS45LTEuOTkgMnY0YzEuMSAwIDEuOTkuOSAxLjk5IDJzLS44OSAyLTIgMnY0YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uODEtMi0xLjgxLTJ6bS0yLjQ2IDkuMy04Ljg2IDIuMzYtMS42Ni0yLjg4LjkzLS4yNSAxLjI2Ljk5IDIuMzktLjY0LTIuNC00LjE2IDEuNC0uMzggNC4wMSAzLjc0IDIuNDQtLjY1YS45NjcuOTY3IDAgMCAxIDEuMTguNjguOTg4Ljk4OCAwIDAgMS0uNjkgMS4xOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlycGxhbmVtb2RlQWN0aXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNnYtMmwtOC41LTVWMy41YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjVWOUwyIDE0djJsOC41LTIuNVYxOUw4IDIwLjVWMjJsNC0xIDQgMXYtMS41TDEzLjUgMTl2LTUuNUwyMiAxNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlycGxhbmVtb2RlSW5hY3RpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjUgNy42N1YzLjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVWOWw4LjUgNXYybC00LjQ5LTEuMzItNy4wMS03LjAxem05LjI4IDE0Ljk0IDEuNDEtMS40MS03LjY5LTcuNy0zLjk0LTMuOTQtNi43NS02Ljc1LTEuNDIgMS40MSA2LjM4IDYuMzhMMiAxNHYybDguNS0yLjVWMTlMOCAyMC41VjIybDQtMSA0IDF2LTEuNUwxMy41IDE5di0yLjY3bDYuMjggNi4yOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQW9kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOEg3VjZoMTB2MTJ6bS05LThoOHYxLjVIOFYxMHptMSAzaDZ2MS41SDlWMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnkwQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNXYxNmMwIC41NS0uNDUgMS0xIDFIOGMtLjU1IDAtMS0uNDUtMS0xVjVjMC0uNTUuNDUtMSAxLTFoMlYyaDR2MmgyYy41NSAwIDEgLjQ1IDEgMXptLTIgMUg5djE0aDZWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeTFCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2MTJoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5MkJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDV2MTZjMCAuNTUtLjQ1IDEtMSAxSDhjLS41NSAwLTEtLjQ1LTEtMVY1YzAtLjU1LjQ1LTEgMS0xaDJWMmg0djJoMmMuNTUgMCAxIC40NSAxIDF6bS0yIDFIOXYxMGg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnkzQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNXYxNmMwIC41NS0uNDUgMS0xIDFIOGMtLjU1IDAtMS0uNDUtMS0xVjVjMC0uNTUuNDUtMSAxLTFoMlYyaDR2MmgyYy41NSAwIDEgLjQ1IDEgMXptLTIgMUg5djhoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5NEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDV2MTZjMCAuNTUtLjQ1IDEtMSAxSDhjLS41NSAwLTEtLjQ1LTEtMVY1YzAtLjU1LjQ1LTEgMS0xaDJWMmg0djJoMmMuNTUgMCAxIC40NSAxIDF6bS0yIDFIOXY2aDZWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeTVCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2NGg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnk2QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNXYxNmMwIC41NS0uNDUgMS0xIDFIOGMtLjU1IDAtMS0uNDUtMS0xVjVjMC0uNTUuNDUtMSAxLTFoMlYyaDR2MmgyYy41NSAwIDEgLjQ1IDEgMXptLTIgMUg5djJoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5QWxlcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM3YxNS4zM0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNHpNMTMgMThoLTJ2LTJoMnYyem0wLTRoLTJWOWgydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlDaGFyZ2luZ0Z1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM3YxNS4zM0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNHpNMTEgMjB2LTUuNUg5TDEzIDd2NS41aDJMMTEgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzN2MTUuMzNDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlTYXZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNGgtMlYyaC00djJIOGMtLjU1IDAtMSAuNDUtMSAxdjE2YzAgLjU1LjQ1IDEgMSAxaDhjLjU1IDAgMS0uNDUgMS0xVjVjMC0uNTUtLjQ1LTEtMS0xem0tMSAxMGgtMnYyaC0ydi0ySDl2LTJoMnYtMmgydjJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5U3RkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzN2MTUuMzNDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlVbmtub3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzN2MTUuMzNDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6bS0yLjcyIDEzLjk1aC0xLjl2LTEuOWgxLjl2MS45em0xLjM1LTUuMjZzLS4zOC40Mi0uNjcuNzFjLS40OC40OC0uODMgMS4xNS0uODMgMS42aC0xLjZjMC0uODMuNDYtMS41Mi45My0ybC45My0uOTRBMS40OTggMS40OTggMCAwIDAgMTIgOS41Yy0uODMgMC0xLjUuNjctMS41IDEuNUg5YzAtMS42NiAxLjM0LTMgMy0zczMgMS4zNCAzIDNjMCAuNjYtLjI3IDEuMjYtLjcgMS42OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmxvb2R0eXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy01LjMzIDQuNTUtOCA4LjQ4LTggMTEuOCAwIDQuOTggMy44IDguMiA4IDguMnM4LTMuMjIgOC04LjJjMC0zLjMyLTIuNjctNy4yNS04LTExLjh6bTMgMTZIOXYtMmg2djJ6bTAtNWgtMnYyaC0ydi0ySDl2LTJoMlY5aDJ2MmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJsdWV0b290aENvbm5lY3RlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTcgMTItMi0yLTIgMiAyIDIgMi0yem0xMC43MS00LjI5TDEyIDJoLTF2Ny41OUw2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMSAxNC40MVYyMmgxbDUuNzEtNS43MS00LjMtNC4yOSA0LjMtNC4yOXpNMTMgNS44M2wxLjg4IDEuODhMMTMgOS41OVY1Ljgzem0xLjg4IDEwLjQ2TDEzIDE4LjE3di0zLjc2bDEuODggMS44OHpNMTkgMTBsLTIgMiAyIDIgMi0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmx1ZXRvb3RoRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMyA1LjgzIDEuODggMS44OC0xLjYgMS42IDEuNDEgMS40MSAzLjAyLTMuMDJMMTIgMmgtMXY1LjAzbDIgMnYtMy4yek01LjQxIDQgNCA1LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMSAxNC40MVYyMmgxbDQuMjktNC4yOSAyLjMgMi4yOUwyMCAxOC41OSA1LjQxIDR6TTEzIDE4LjE3di0zLjc2bDEuODggMS44OEwxMyAxOC4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmx1ZXRvb3RoRHJpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDEwSDQuODFsMS4wNC0zSDE1VjVINS41Yy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwyIDEydjhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGgtM2MtMS4xIDAtMi0uOS0yLTJ6bS04LjUgNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgMTMgNi41IDEzczEuNS42NyAxLjUgMS41UzcuMzMgMTYgNi41IDE2em05IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAzLjg1IDE5LjE1IDFoLS41djMuNzlsLTIuMy0yLjI5LS43LjdMMTguNDQgNmwtMi43OSAyLjc5LjcuNzEgMi4zLTIuM1YxMWguNUwyMiA4LjE0IDE5Ljg1IDYgMjIgMy44NXptLTIuMzUtLjk0Ljk0Ljk0LS45NC45NFYyLjkxem0uOTQgNS4yMy0uOTQuOTRWNy4ybC45NC45NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmx1ZXRvb3RoU2VhcmNoaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuMjQgMTIuMDEgMi4zMiAyLjMyYy4yOC0uNzIuNDQtMS41MS40NC0yLjMzIDAtLjgyLS4xNi0xLjU5LS40My0yLjMxbC0yLjMzIDIuMzJ6bTUuMjktNS4zLTEuMjYgMS4yNmMuNjMgMS4yMS45OCAyLjU3Ljk4IDQuMDJzLS4zNiAyLjgyLS45OCA0LjAybDEuMiAxLjJhOS45MzYgOS45MzYgMCAwIDAgMS41NC01LjMxYy0uMDEtMS44OS0uNTUtMy42Ny0xLjQ4LTUuMTl6bS0zLjgyIDFMMTAgMkg5djcuNTlMNC40MSA1IDMgNi40MSA4LjU5IDEyIDMgMTcuNTkgNC40MSAxOSA5IDE0LjQxVjIyaDFsNS43MS01LjcxLTQuMy00LjI5IDQuMy00LjI5ek0xMSA1LjgzbDEuODggMS44OEwxMSA5LjU5VjUuODN6bTEuODggMTAuNDZMMTEgMTguMTd2LTMuNzZsMS44OCAxLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbHVldG9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy43MSA3LjcxIDEyIDJoLTF2Ny41OUw2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMSAxNC40MVYyMmgxbDUuNzEtNS43MS00LjMtNC4yOSA0LjMtNC4yOXpNMTMgNS44M2wxLjg4IDEuODhMMTMgOS41OVY1Ljgzem0xLjg4IDEwLjQ2TDEzIDE4LjE3di0zLjc2bDEuODggMS44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnJpZ2h0bmVzc0F1dG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC44NSAxMi42NWgyLjNMMTIgOWwtMS4xNSAzLjY1ek0yMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OUwyMy4zMSAxMiAyMCA4LjY5ek0xNC4zIDE2bC0uNy0yaC0zLjJsLS43IDJINy44TDExIDdoMmwzLjIgOWgtMS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzSGlnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6TTEyIDE4Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnptMC0xMGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyaWdodG5lc3NMb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNS4zMSAyMy4zMSAxMiAyMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OXpNMTIgMThjLTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTYgNiAyLjY5IDYgNi0yLjY5IDYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzTWVkaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTUuMzEgMjMuMzEgMTIgMjAgOC42OVY0aC00LjY5TDEyIC42OSA4LjY5IDRINHY0LjY5TC42OSAxMiA0IDE1LjMxVjIwaDQuNjlMMTIgMjMuMzEgMTUuMzEgMjBIMjB2LTQuNjl6TTEyIDE4VjZjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1VjRjMC0uNTUtLjQ1LTEtMS0xaC0yYy0uNTUgMC0xIC40NS0xIDF2MWgtMXY0YzAgLjU1LjQ1IDEgMSAxaDF2N2MwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJWN2MwLTIuMjEtMS43OS00LTQtNFM1IDQuNzkgNSA3djdINGMtLjU1IDAtMSAuNDUtMSAxdjRoMXYxYzAgLjU1LjQ1IDEgMSAxaDJjLjU1IDAgMS0uNDUgMS0xdi0xaDF2LTRjMC0uNTUtLjQ1LTEtMS0xSDdWN2MwLTEuMS45LTIgMi0yczIgLjkgMiAydjEwYzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTR2LTdoMWMuNTUgMCAxLS40NSAxLTFWNWgtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FtZXJhc3dpdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA3aC0xbC0xLTFoLTRMOSA3SDhjLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6bS00IDdjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04LjU3LjUxIDQuNDggNC40OFYyLjA0YzQuNzIuNDcgOC40OCA0LjIzIDguOTUgOC45NWgyQzIzLjM0IDMuMDIgMTUuNDktMS41OSA4LjU3LjUxek0xMC45NSAyMS45NmMtNC43Mi0uNDctOC40OC00LjIzLTguOTUtOC45NUgwYy42NiA3Ljk3IDguNTEgMTIuNTggMTUuNDMgMTAuNDhsLTQuNDgtNC40OHYyLjk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcmVkaXRTY29yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoNXYtMkg0di02aDE4VjZjMC0xLjExLS44OS0yLTItMnptMCA0SDRWNmgxNnYyem0tNS4wNyAxMS4xNy0yLjgzLTIuODMtMS40MSAxLjQxTDE0LjkzIDIyIDIyIDE0LjkzbC0xLjQxLTEuNDEtNS42NiA1LjY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYXJrTW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNhOSA5IDAgMSAwIDkgOWMwLS40Ni0uMDQtLjkyLS4xLTEuMzZhNS4zODkgNS4zODkgMCAwIDEtNC40IDIuMjYgNS40MDMgNS40MDMgMCAwIDEtMy4xNC05LjhjLS40NC0uMDYtLjktLjEtMS4zNi0uMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGF0YVNhdmVyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAyLjA1djMuMDNjMy4zOS40OSA2IDMuMzkgNiA2LjkyIDAgLjktLjE4IDEuNzUtLjQ4IDIuNTRsMi42IDEuNTNjLjU2LTEuMjQuODgtMi42Mi44OC00LjA3IDAtNS4xOC0zLjk1LTkuNDUtOS05Ljk1ek0xMiAxOWMtMy44NyAwLTctMy4xMy03LTcgMC0zLjUzIDIuNjEtNi40MyA2LTYuOTJWMi4wNWMtNS4wNi41LTkgNC43Ni05IDkuOTUgMCA1LjUyIDQuNDcgMTAgOS45OSAxMCAzLjMxIDAgNi4yNC0xLjYxIDguMDYtNC4wOWwtMi42LTEuNTNBNi45NSA2Ljk1IDAgMCAxIDEyIDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYXRhU2F2ZXJPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOHYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zVjhoLTJ6bTItNS45NXYzLjAzYzMuMzkuNDkgNiAzLjM5IDYgNi45MiAwIC45LS4xOCAxLjc1LS40OCAyLjU0bDIuNiAxLjUzYy41Ni0xLjI0Ljg4LTIuNjIuODgtNC4wNyAwLTUuMTgtMy45NS05LjQ1LTktOS45NXpNMTIgMTljLTMuODcgMC03LTMuMTMtNy03IDAtMy41MyAyLjYxLTYuNDMgNi02LjkyVjIuMDVjLTUuMDYuNS05IDQuNzYtOSA5Ljk1IDAgNS41MiA0LjQ3IDEwIDkuOTkgMTAgMy4zMSAwIDYuMjQtMS42MSA4LjA2LTQuMDlsLTIuNi0xLjUzQTYuOTUgNi45NSAwIDAgMSAxMiAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGF0YVVzYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMi4wNXYzLjAzYzMuMzkuNDkgNiAzLjM5IDYgNi45MiAwIC45LS4xOCAxLjc1LS40OCAyLjU0bDIuNiAxLjUzYy41Ni0xLjI0Ljg4LTIuNjIuODgtNC4wNyAwLTUuMTgtMy45NS05LjQ1LTktOS45NXpNMTIgMTljLTMuODcgMC03LTMuMTMtNy03IDAtMy41MyAyLjYxLTYuNDMgNi02LjkyVjIuMDVjLTUuMDYuNS05IDQuNzYtOSA5Ljk1IDAgNS41MiA0LjQ3IDEwIDkuOTkgMTAgMy4zMSAwIDYuMjQtMS42MSA4LjA2LTQuMDlsLTIuNi0xLjUzQTYuOTUgNi45NSAwIDAgMSAxMiAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGF0YXNldExpbmtlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguMDkgMTdIN3YtNGgzLjY5Yy45NS0uNjMgMi4wOS0xIDMuMzEtMWg2Yy4zNCAwIC42Ny4wNCAxIC4wOVY1YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMy44MUM4LjMgMjAuMTIgOCAxOS4wOSA4IDE4YzAtLjM0LjA0LS42Ny4wOS0xek0xMyA3aDR2NGgtNFY3ek03IDdoNHY0SDdWN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMThjMC0xLjEuOS0yIDItMmgydi0yaC0yYy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0aDJ2LTJoLTJjLTEuMSAwLTItLjktMi0yek0yMCAxNGgtMnYyaDJjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyaC0ydjJoMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTdoNnYyaC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYXRhc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04IDE0SDd2LTRoNHY0em0wLTZIN1Y3aDR2NHptNiA2aC00di00aDR2NHptMC02aC00VjdoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZXZlbG9wZXJNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA1aDEwdjJoMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5TDcgMWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTguNDEgMTEuNTlMMjAgMTJsLTQuNTktNC41OUwxNCA4LjgzIDE3LjE3IDEyIDE0IDE1LjE3bDEuNDEgMS40MnpNMTAgMTUuMTcgNi44MyAxMiAxMCA4LjgzIDguNTkgNy40MSA0IDEybDQuNTkgNC41OUwxMCAxNS4xN3pNMTcgMTlIN3YtMkg1djRjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMnYtNGgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZXZpY2VUaGVybW9zdGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTNWNWMwLTEuNjYtMS4zNC0zLTMtM1M5IDMuMzQgOSA1djhjLTEuMjEuOTEtMiAyLjM3LTIgNCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01YzAtMS42My0uNzktMy4wOS0yLTR6bS00LThjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxaC0xdjFoMXYyaC0xdjFoMXYyaC0yVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERldmljZXNGb2xkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM2gtM2MwLTEuNDMtMS40Ny0yLjQtMi43OS0xLjg0bC0zIDEuMjlDMTAuNDggMi43NiAxMCAzLjQ5IDEwIDQuMjlWMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTUuMzNsMS4xMi0uNDhjLjczLS4zMiAxLjIxLTEuMDQgMS4yMS0xLjg0VjVoM3YxNHpNMiAzaDJ2Mkgyek0yIDE5aDJ2Mkgyek0yIDE1aDJ2Mkgyek0yIDExaDJ2Mkgyek0yIDdoMnYySDJ6TTYgM2gydjJINnpNNiAxOWgydjJINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGV2aWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNmgxOFY0SDRjLTEuMSAwLTIgLjktMiAydjExSDB2M2gxNHYtM0g0VjZ6bTE5IDJoLTZjLS41NSAwLTEgLjQ1LTEgMXYxMGMwIC41NS40NSAxIDEgMWg2Yy41NSAwIDEtLjQ1IDEtMVY5YzAtLjU1LS40NS0xLTEtMXptLTEgOWgtNHYtN2g0djd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpc2NvdW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNzkgMjEgMyAxMS4yMXYyYzAgLjUzLjIxIDEuMDQuNTkgMS40MWw3Ljc5IDcuNzljLjc4Ljc4IDIuMDUuNzggMi44MyAwbDYuMjEtNi4yMWMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzTDEyLjc5IDIxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4zOCAxNy40MWMuNzguNzggMi4wNS43OCAyLjgzIDBsNi4yMS02LjIxYy43OC0uNzguNzgtMi4wNSAwLTIuODNMMTIuNjMuNThBMi4wNCAyLjA0IDAgMCAwIDExLjIxIDBINUMzLjkgMCAzIC45IDMgMnY2LjIxYzAgLjUzLjIxIDEuMDQuNTkgMS40MWw3Ljc5IDcuNzl6TTcuMjUgM2ExLjI1IDEuMjUgMCAxIDEgMCAyLjUgMS4yNSAxLjI1IDAgMCAxIDAtMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb05vdERpc3R1cmJPblRvdGFsU2lsZW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTAtMTRjLTMuMyAwLTYgMi43LTYgNnMyLjcgNiA2IDYgNi0yLjcgNi02LTIuNi02LTYtNnptMyA3SDl2LTJoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREdnIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoNXYyaDh2LTJoNWMxLjEgMCAxLjk5LS45IDEuOTktMkwyMyA1YzAtMS4xLS45LTItMi0yem0wIDE0SDNWNWgxOHYxMnptLTItOUg4djJoMTFWOHptMCA0SDh2MmgxMXYtMnpNNyA4SDV2MmgyVjh6bTAgNEg1djJoMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRU1vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDlWN0g4djEwaDh2LTJoLTZ2LTJoNnYtMmgtNlY5aDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkZ2VzZW5zb3JIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDdoMnY3SDNWN3ptLTMgM2gydjdIMHYtN3ptMjItM2gydjdoLTJWN3ptLTMgM2gydjdoLTJ2LTd6bS0zLTcuOTlMOCAyYy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0xLjk5LTItMS45OXpNMTYgMTdIOFY3aDh2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkZ2VzZW5zb3JMb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgN2gydjdIMlY3em0xOCAzaDJ2N2gtMnYtN3ptLTQtNy45OUw4IDJjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNiAxN0g4VjdoOHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxhc2hsaWdodE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNVYySDZ2MS4xN0w3LjgzIDV6TTE2IDExbDItM1Y3SDkuODNMMTYgMTMuMTd6TTIuODEgMi44MSAxLjM5IDQuMjIgOCAxMC44M1YyMmg4di0zLjE3bDMuNzggMy43OCAxLjQxLTEuNDFMMi44MSAyLjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGFzaGxpZ2h0T24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMmgxMnYzSDZ6TTYgN3YxbDIgM3YxMWg4VjExbDItM1Y3SDZ6bTYgOC41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxvdXJlc2NlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgOWgxNHY2SDV6TTExIDJoMnYzaC0yek0xNy4yODYgNi4zOTlsMS43OS0xLjgwMyAxLjQyIDEuNDEtMS43OSAxLjgwMnpNMTEgMTloMnYzaC0yek0xNy4yOSAxNy43MWwxLjc5IDEuOCAxLjQyLTEuNDItMS44LTEuNzl6TTMuNDk1IDYuMDFsMS40MDctMS40MDhMNi42OSA2LjM5MSA1LjI4NCA3Ljc5OHpNMy40OTIgMTguMDc2bDEuODAzLTEuNzkgMS40MDkgMS40Mi0xLjgwMyAxLjc5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbHVvcmVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA5aDE0djZINXpNMTEgMmgydjNoLTJ6TTE3LjI4NiA2LjM5OWwxLjc5LTEuODAzIDEuNDIgMS40MS0xLjc5IDEuODAyek0xMSAxOWgydjNoLTJ6TTE3LjI5IDE3LjcxbDEuNzkgMS44IDEuNDItMS40Mi0xLjgtMS43OXpNMy40OTUgNi4wMWwxLjQwNy0xLjQwOEw2LjY5IDYuMzkxIDUuMjg0IDcuNzk4ek0zLjQ5MiAxOC4wNzZsMS44MDMtMS43OSAxLjQwOSAxLjQyLTEuODAzIDEuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZtZEJhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNC4yIDAtOCAzLjIyLTggOC4yIDAgMy4zMiAyLjY3IDcuMjUgOCAxMS44IDUuMzMtNC41NSA4LTguNDggOC0xMS44QzIwIDUuMjIgMTYuMiAyIDEyIDJ6bTEgMTNoLTJ2LTJoMnYyem0wLTRoLTJWNmgydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZtZEdvb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQuMiAwLTggMy4yMi04IDguMiAwIDMuMzIgMi42NyA3LjI1IDggMTEuOCA1LjMzLTQuNTUgOC04LjQ4IDgtMTEuOEMyMCA1LjIyIDE2LjIgMiAxMiAyem0wIDEwYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR01vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDExdjJoMnYySDlWOWg3YzAtMS4xLS45LTItMi0ySDljLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmg1YzEuMSAwIDItLjkgMi0ydi00aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcHBCYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIgNCA1djYuMDljMCA1LjA1IDMuNDEgOS43NiA4IDEwLjkxIDQuNTktMS4xNSA4LTUuODYgOC0xMC45MVY1bC04LTN6bTMuNSAxMi4wOS0xLjQxIDEuNDFMMTIgMTMuNDIgOS45MSAxNS41IDguNSAxNC4wOSAxMC41OSAxMiA4LjUgOS45MSA5LjkxIDguNSAxMiAxMC41OWwyLjA5LTIuMDkgMS40MSAxLjQxTDEzLjQyIDEybDIuMDggMi4wOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3BwR29vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMiA0IDV2Ni4wOWMwIDUuMDUgMy40MSA5Ljc2IDggMTAuOTEgNC41OS0xLjE1IDgtNS44NiA4LTEwLjkxVjVsLTgtM3ptLTEuMDYgMTMuNTRMNy40IDEybDEuNDEtMS40MSAyLjEyIDIuMTIgNC4yNC00LjI0IDEuNDEgMS40MS01LjY0IDUuNjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdwcE1heWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zem0xIDE0aC0ydi0yaDJ2MnptMC00aC0yVjdoMnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcHNGaXhlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em04Ljk0IDNBOC45OTQgOC45OTQgMCAwIDAgMTMgMy4wNlYxaC0ydjIuMDZBOC45OTQgOC45OTQgMCAwIDAgMy4wNiAxMUgxdjJoMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAxMSAyMC45NFYyM2gydi0yLjA2QTguOTk0IDguOTk0IDAgMCAwIDIwLjk0IDEzSDIzdi0yaC0yLjA2ek0xMiAxOWMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdwc05vdEZpeGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuOTQgMTFBOC45OTQgOC45OTQgMCAwIDAgMTMgMy4wNlYxaC0ydjIuMDZBOC45OTQgOC45OTQgMCAwIDAgMy4wNiAxMUgxdjJoMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAxMSAyMC45NFYyM2gydi0yLjA2QTguOTk0IDguOTk0IDAgMCAwIDIwLjk0IDEzSDIzdi0yaC0yLjA2ek0xMiAxOWMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdwc09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjk0IDExQTguOTk0IDguOTk0IDAgMCAwIDEzIDMuMDZWMWgtMnYyLjA2Yy0xLjEzLjEyLTIuMTkuNDYtMy4xNi45N2wxLjUgMS41QTYuOTk1IDYuOTk1IDAgMCAxIDE5IDEyYzAgLjk0LS4xOSAxLjg0LS41MiAyLjY1bDEuNSAxLjVjLjUtLjk2Ljg0LTIuMDIuOTctMy4xNUgyM3YtMmgtMi4wNnpNMyA0LjI3bDIuMDQgMi4wNEE4LjkxNCA4LjkxNCAwIDAgMCAzLjA2IDExSDF2MmgyLjA2QTguOTk0IDguOTk0IDAgMCAwIDExIDIwLjk0VjIzaDJ2LTIuMDZjMS43Ny0uMiAzLjM4LS45MSA0LjY5LTEuOThMMTkuNzMgMjEgMjEgMTkuNzMgNC4yNyAzIDMgNC4yN3ptMTMuMjcgMTMuMjdhNi45OTUgNi45OTUgMCAwIDEtOS44MS05LjgxbDkuODEgOS44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JhcGhpY0VxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOGgyVjZIN3YxMnptNCA0aDJWMmgtMnYyMHptLTgtOGgydi00SDN2NHptMTIgNGgyVjZoLTJ2MTJ6bTQtOHY0aDJ2LTRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdyaWQzWDMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEwVjhoLTRWNGgtMnY0aC00VjRIOHY0SDR2Mmg0djRINHYyaDR2NGgydi00aDR2NGgydi00aDR2LTJoLTR2LTRoNHptLTYgNGgtNHYtNGg0djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdyaWQ0WDQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDdWNWgtM1YyaC0ydjNoLTRWMmgtMnYzSDdWMkg1djNIMnYyaDN2NEgydjJoM3Y0SDJ2MmgzdjNoMnYtM2g0djNoMnYtM2g0djNoMnYtM2gzdi0yaC0zdi00aDN2LTJoLTNWN2gzek03IDdoNHY0SDdWN3ptMCAxMHYtNGg0djRIN3ptMTAgMGgtNHYtNGg0djR6bTAtNmgtNFY3aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JpZEdvbGRlbnJhdGlvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMVY5aC03VjJoLTJ2N2gtMlYySDl2N0gydjJoN3YySDJ2Mmg3djdoMnYtN2gydjdoMnYtN2g3di0yaC03di0yaDd6bS05IDJoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRITW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTFIOVY3SDd2MTBoMnYtNGg2djRoMlY3aC0ydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhQbHVzTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTFINlY3SDR2MTBoMnYtNGg2djRoMlY3aC0ydjR6bTEwIDBoLTJWOWgtMnYyaC0ydjJoMnYyaDJ2LTJoMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGRyQXV0b1NlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTZINi41djZIMTBjLjggMCAxLjUtLjcgMS41LTEuNXYtM2MwLS44LS43LTEuNS0xLjUtMS41em0wIDQuNUg4di0zaDJ2M3pNMTYuNSAxNkgxM3Y2aDEuNXYtMmgxLjFsLjkgMkgxOGwtLjktMi4xYy41LS4zLjktLjguOS0xLjR2LTFjMC0uOC0uNy0xLjUtMS41LTEuNXptMCAyLjVoLTJ2LTFoMnYxek0zLjUgMThoLTJ2LTJIMHY2aDEuNXYtMi41aDJWMjJINXYtNkgzLjV6TTIyIDE4LjV2LTJoLTEuNXYyaC0yVjIwaDJ2MkgyMnYtMmgydi0xLjV6TTExLjk3IDUuM2wtMS4wMiAyLjg5aDIuMUwxMi4wMyA1LjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDOC42OSAyIDYgNC42OSA2IDhzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6bTIuMDQgOS0uNjMtMS43OWgtMi44M0w5Ljk2IDExSDguNzRsMi42My03aDEuMjVsMi42MyA3aC0xLjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZHJBdXRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4wNCA4LjA0aC0uMDlsLTEuNiA0LjU1aDMuMjl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTMuMjEgMTUtLjk4LTIuODFIOS43OGwtMSAyLjgxaC0xLjlsNC4xMy0xMWgxLjk3bDQuMTMgMTFoLTEuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGRyT2ZmU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxOC41di0xYzAtLjgtLjctMS41LTEuNS0xLjVIMTN2NmgxLjV2LTJoMS4xbC45IDJIMThsLS45LTIuMWMuNS0uMy45LS44LjktMS40em0tMS41IDBoLTJ2LTFoMnYxem0tMTMtLjVoLTJ2LTJIMHY2aDEuNXYtMi41aDJWMjJINXYtNkgzLjV2MnptNi41LTJINi41djZIMTBjLjggMCAxLjUtLjcgMS41LTEuNXYtM2MwLS44LS43LTEuNS0xLjUtMS41em0wIDQuNUg4di0zaDJ2M3ptMTQtLjVoLTJ2MmgtMS41di0yaC0ydi0xLjVoMnYtMkgyMnYyaDJWMjB6TTEwLjk4IDQuMTUgOS40MiAyLjU5YzUuMS0yLjQyIDEwLjQxIDIuODkgNy45OSA3Ljk5bC0xLjU2LTEuNTZjLjgxLTIuOTYtMS45MS01LjY4LTQuODctNC44N3pNNi4zNCAyLjM0IDQuOTMgMy43NmwxLjY2IDEuNjZjLTIuNDIgNS4xIDIuODkgMTAuNDEgNy45OSA3Ljk5bDEuNjYgMS42NiAxLjQxLTEuNDFMNi4zNCAyLjM0em0xLjgxIDQuNjQgNC44NyA0Ljg3Yy0yLjk2LjgxLTUuNjgtMS45MS00Ljg3LTQuODd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhkck9uU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxOC41di0xYzAtLjgtLjctMS41LTEuNS0xLjVIMTN2NmgxLjV2LTJoMS4xbC45IDJIMThsLS45LTIuMWMuNS0uMy45LS44LjktMS40em0tMS41IDBoLTJ2LTFoMnYxem0tMTMtLjVoLTJ2LTJIMHY2aDEuNXYtMi41aDJWMjJINXYtNkgzLjV2MnptNi41LTJINi41djZIMTBjLjggMCAxLjUtLjcgMS41LTEuNXYtM2MwLS44LS43LTEuNS0xLjUtMS41em0wIDQuNUg4di0zaDJ2M3ptMTQtLjVoLTJ2MmgtMS41di0yaC0ydi0xLjVoMnYtMkgyMnYyaDJWMjB6TTEyIDRjMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDQtNC0xLjc5LTQtNCAxLjc5LTQgNC00bTAtMkM4LjY5IDIgNiA0LjY5IDYgOHMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMjJoOHYtN2gtM3YtNGgtNVY5aDNWMkg4djdoM3YySDZ2NEgzdjdoOHYtN0g4di0yaDh2MmgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGVuc0JsdXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTNjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCA0Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtOGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0tMyAuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTYgNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0xNSA1LjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xNCA3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAtMy41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXptLTExIDEwYy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptNyA3Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMC0xN2MuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTEwIDdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMCA1LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em04IC41Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLThjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC00Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTMgOC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNMTQgMTdjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCAzLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0tNC0xMmMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTAgOC41Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTQtNC41Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptMC00Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGlnaHRNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6TTIgMTNoMmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMUgyYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxem0xOCAwaDJjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFoLTJjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDF6TTExIDJ2MmMwIC41NS40NSAxIDEgMXMxLS40NSAxLTFWMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXptMCAxOHYyYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMXYtMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXpNNS45OSA0LjU4YS45OTYuOTk2IDAgMCAwLTEuNDEgMCAuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMS4wNiAxLjA2Yy4zOS4zOSAxLjAzLjM5IDEuNDEgMHMuMzktMS4wMyAwLTEuNDFMNS45OSA0LjU4em0xMi4zNyAxMi4zN2EuOTk2Ljk5NiAwIDAgMC0xLjQxIDAgLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDEuMDYgMS4wNmMuMzkuMzkgMS4wMy4zOSAxLjQxIDBhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0xLjA2LTEuMDZ6bTEuMDYtMTAuOTZhLjk5Ni45OTYgMCAwIDAgMC0xLjQxLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0xLjA2IDEuMDZjLS4zOS4zOS0uMzkgMS4wMyAwIDEuNDFzMS4wMy4zOSAxLjQxIDBsMS4wNi0xLjA2ek03LjA1IDE4LjM2YS45OTYuOTk2IDAgMCAwIDAtMS40MS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtMS4wNiAxLjA2Yy0uMzkuMzktLjM5IDEuMDMgMCAxLjQxczEuMDMuMzkgMS40MSAwbDEuMDYtMS4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYXRpb25EaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjk0IDExQTguOTk0IDguOTk0IDAgMCAwIDEzIDMuMDZWMWgtMnYyLjA2Yy0xLjEzLjEyLTIuMTkuNDYtMy4xNi45N2wxLjUgMS41QTYuOTk1IDYuOTk1IDAgMCAxIDE5IDEyYzAgLjk0LS4xOSAxLjg0LS41MiAyLjY1bDEuNSAxLjVjLjUtLjk2Ljg0LTIuMDIuOTctMy4xNUgyM3YtMmgtMi4wNnpNMyA0LjI3bDIuMDQgMi4wNEE4LjkxNCA4LjkxNCAwIDAgMCAzLjA2IDExSDF2MmgyLjA2QTguOTk0IDguOTk0IDAgMCAwIDExIDIwLjk0VjIzaDJ2LTIuMDZjMS43Ny0uMiAzLjM4LS45MSA0LjY5LTEuOThMMTkuNzMgMjEgMjEgMTkuNzMgNC4yNyAzIDMgNC4yN3ptMTMuMjcgMTMuMjdhNi45OTUgNi45OTUgMCAwIDEtOS44MS05LjgxbDkuODEgOS44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYXRpb25TZWFyY2hpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC45NCAxMUE4Ljk5NCA4Ljk5NCAwIDAgMCAxMyAzLjA2VjFoLTJ2Mi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAzLjA2IDExSDF2MmgyLjA2QTguOTk0IDguOTk0IDAgMCAwIDExIDIwLjk0VjIzaDJ2LTIuMDZBOC45OTQgOC45OTQgMCAwIDAgMjAuOTQgMTNIMjN2LTJoLTIuMDZ6TTEyIDE5Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTHRlTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxNGgzdjJINFY4aDJ2NnptMy00aDJ2Nmgydi02aDJWOEg5djJ6bTEyIDBWOGgtNXY4aDV2LTJoLTN2LTFoM3YtMmgtM3YtMWgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMdGVQbHVzTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNGgzdjJIMVY4aDJ2NnptMi00aDJ2Nmgydi02aDJWOEg1djJ6bTcgNmg1di0yaC0zdi0xaDN2LTJoLTN2LTFoM1Y4aC01djh6bTEyLTVoLTJWOWgtMnYyaC0ydjJoMnYyaDJ2LTJoMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFjcm9PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS45OCAxNy4xNUE4LjkwOSA4LjkwOSAwIDAgMCAyMSAxM2MtMS41IDAtMi45MS4zNy00LjE1IDEuMDJsMy4xMyAzLjEzek0zIDEzYTkgOSAwIDAgMCA5IDkgOSA5IDAgMCAwLTktOXpNMTIgNS41QTIuNSAyLjUgMCAwIDEgMTQuNSA4YzAgLjk5LS41OCAxLjg0LTEuNDIgMi4yNWwyLjQ4IDIuNDhjLjExLjAyLjIzLjAzLjM1LjAzYTIuNSAyLjUgMCAwIDAgMi41LTIuNWMwLTEtLjU5LTEuODUtMS40My0yLjI1Ljg0LS40IDEuNDMtMS4yNSAxLjQzLTIuMjVhMi41IDIuNSAwIDAgMC0zLjkyLTIuMDZsLjAxLS4yYTIuNSAyLjUgMCAwIDAtNSAwbC4wMi4xOWEyLjQ4NSAyLjQ4NSAwIDAgMC0yLjkzLjA4bDMuMTYgMy4xNmMuNDEtLjg1IDEuMjYtMS40MyAyLjI1LTEuNDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuODEgMi44MSAxLjM5IDQuMjJsNC42NCA0LjY0Yy0uMjcuNC0uNDMuODctLjQzIDEuMzlhMi41IDIuNSAwIDAgMCAyLjUgMi41Yy41MiAwIC45OS0uMTYgMS40LS40M2wuMDIuMDItLjAyLjE2QTIuNSAyLjUgMCAwIDAgMTIgMTVjLjA1IDAgLjEtLjAxLjE2LS4wMmwxLjY0IDEuNjRBOC45MDUgOC45MDUgMCAwIDAgMTIgMjJjMi4wMiAwIDMuODgtLjY3IDUuMzgtMS44bDIuNCAyLjQgMS40MS0xLjQxTDIuODEgMi44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWVkaWFCbHVldG9vdGhPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNi4xN1YzaDZ2NGgtNHYxLjE3bC0yLTJ6TTE5LjQyIDE1IDIyIDE3LjU3bC0uOC44LTYuNzgtNi43OC44LS44IDIuNzUgMi43NVY5aC42TDIyIDEyLjQzIDE5LjQyIDE1em0tLjI1LTEuNDUgMS4xMy0xLjEzLTEuMTMtMS4xM3YyLjI2em0yLjAyIDcuNjQtMS40MSAxLjQxLTMuOTgtMy45OC0uNTguNTgtLjg1LS44NS41OC0uNThMMTEgMTMuODNWMTdjMCAyLjIxLTEuNzggNC0zLjk5IDRTMyAxOS4yMSAzIDE3czEuNzktNCA0LjAxLTRjLjczIDAgMS40MS4yMSAyIC41NXYtMS43MkwxLjM5IDQuMjIgMi44IDIuODFsMTguMzkgMTguMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1lZGlhQmx1ZXRvb3RoT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTkgMyAuMDEgMTAuNTVjLS42LS4zNC0xLjI4LS41NS0yLS41NWE0LjAwMSA0LjAwMSAwIDEgMCAwIDhDOS4yMyAyMSAxMSAxOS4yMSAxMSAxN1Y3aDRWM0g5em0xMiA5LjQzTDE3LjU3IDloLS42djQuNTVsLTIuNzUtMi43NS0uODUuODVMMTYuNzMgMTVsLTMuMzUgMy4zNS44NS44NSAyLjc1LTIuNzVWMjFoLjZMMjEgMTcuNTcgMTguNDIgMTUgMjEgMTIuNDN6bS0yLjgzLTEuMTMgMS4xMyAxLjEzLTEuMTMgMS4xM1YxMS4zem0xLjEzIDYuMjctMS4xMyAxLjEzdi0yLjI2bDEuMTMgMS4xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWVkaWNhdGlvbkxpcXVpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM2gxMnYySDN6TTE0IDZINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tMSA5aC0yLjV2Mi41aC0zVjE1SDV2LTNoMi41VjkuNWgzVjEySDEzdjN6TTIwIDZjLTEuNjggMC0zIDEuNzYtMyA0IDAgMS43Ny44MyAzLjIyIDIgMy43NlYyMGMwIC41NS40NSAxIDEgMXMxLS40NSAxLTF2LTYuMjRjMS4xNy0uNTQgMi0xLjk5IDItMy43NiAwLTIuMjQtMS4zMi00LTMtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWVkaWNhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAzaDEydjJINnpNMTcgNkg3Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS0xIDloLTIuNXYyLjVoLTNWMTVIOHYtM2gyLjVWOS41aDNWMTJIMTZ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9iaWxlRnJpZW5kbHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxSDljLTEuMSAwLTIgLjktMiAydjNoMlY0aDEwdjE2SDl2LTJIN3YzYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNNy4wMSAxMy40N2wtMi41NS0yLjU1LTEuMjcgMS4yN0w3IDE2bDcuMTktNy4xOS0xLjI3LTEuMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vYmlsZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNzYgMi40OSAxLjQ5IDMuNzYgNSA3LjI3VjIxYzAgMS4xLjkgMiAyIDJoMTBjMS4wMiAwIDEuODUtLjc3IDEuOTgtMS43NWwxLjcyIDEuNzIgMS4yNy0xLjI3TDIuNzYgMi40OXpNNyAxOVY5LjI3TDE2LjczIDE5SDd6TTE3IDV2OS4xN2wyIDJWM2MwLTEuMS0uOS0yLTItMkg3Yy0uODUgMC0xLjU4LjU0LTEuODcgMS4zTDcuODMgNUgxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9iaWxlZGF0YU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgN2gzbC00LTQtNCA0aDN2NC4xN2wyIDJ6TTIuODEgMi44MSAxLjM5IDQuMjIgOCAxMC44M3Y2LjE4bC0zIC4wMUw5IDIxbDQtNC0zIC4wMXYtNC4xOGw5Ljc4IDkuNzggMS40MS0xLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb2RlTmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSAyYy0xLjgyIDAtMy41My41LTUgMS4zNSAyLjk5IDEuNzMgNSA0Ljk1IDUgOC42NXMtMi4wMSA2LjkyLTUgOC42NWMxLjQ3Ljg1IDMuMTggMS4zNSA1IDEuMzUgNS41MiAwIDEwLTQuNDggMTAtMTBTMTUuMDIgMiA5LjUgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9kZVN0YW5kYnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OSAyIDIgNi40OSAyIDEyczQuNDkgMTAgMTAgMTAgMTAtNC40OSAxMC0xMFMxNy41MSAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0zLThjMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTMgMS4zNC0zIDMtMyAzIDEuMzQgMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb25pdG9ySGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4xMSAxMi40NSAxNCAxMC4yNGwtMy4xMSA2LjIxYy0uMTYuMzQtLjUxLjU1LS44OS41NXMtLjczLS4yMS0uODktLjU1TDcuMzggMTNIMnY1YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJ2LTVoLTZjLS4zOCAwLS43My0uMjEtLjg5LS41NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnY1aDZjLjM4IDAgLjczLjIxLjg5LjU1TDEwIDEzLjc2bDMuMTEtNi4yMWMuMzQtLjY4IDEuNDUtLjY4IDEuNzkgMEwxNi42MiAxMUgyMlY2YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb25pdG9yV2VpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgOWMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDguNWgxdjFoLTF6TTExLjUgOC41aDF2MWgtMXpNMTMgOC41aDF2MWgtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmVhcmJ5RXJyb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDcuNTcgNC40MiA0LjQyTDEyIDE2LjQxbC00LjQyLTQuNDJMMTIgNy41N3ptMCAxMS42Mi03LjItNy4yIDcuMi03LjIgNiA2VjcuMTZsLTQuNTgtNC41OGMtLjc4LS43OC0yLjA1LS43OC0yLjgzIDBsLTguMDEgOGMtLjc4Ljc4LS43OCAyLjA1IDAgMi44M2w4LjAxIDhjLjc4Ljc4IDIuMDUuNzggMi44MyAwTDE4IDE2Ljgydi0zLjYzbC02IDZ6bTggLjgxaDJ2MmgtMnYtMnptMi0xMGgtMnY4aDJ2LThcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmVhcmJ5T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS40MSAxMy40MiAxOC44MyAxNmwtMS44MS0xLjgxTDE5LjIgMTIgMTIgNC44IDkuODEgNi45OSA4IDUuMTdsMi41OC0yLjU4Yy43OC0uNzggMi4wNS0uNzggMi44MyAwbDggOGMuNzkuNzguNzkgMi4wNCAwIDIuODN6bS0uMjIgNy43Ny0xLjQxIDEuNDFMMTYgMTguODNsLTIuNTggMi41OGMtLjc4Ljc4LTIuMDUuNzgtMi44MyAwbC04LThjLS43OC0uNzgtLjc4LTIuMDUgMC0yLjgzTDUuMTcgOCAxLjM5IDQuMjIgMi44IDIuODFsMTguMzkgMTguMzh6bS03LTQuMTctMS4zOS0xLjM5LS44LjhMNy41OCAxMmwuOC0uOC0xLjQtMS4zOUw0LjggMTJsNy4yIDcuMiAyLjE5LTIuMTh6TTE2LjQyIDEyIDEyIDcuNThsLS44LjggNC40MiA0LjQyLjgtLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5ldHdvcmtDZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyMmgyMFYyTDIgMjJ6bTE4LTJoLTNWOS44M2wzLTNWMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5ldHdvcmtXaWZpMUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDR6bTMuMzIgMTAuODRDMTQuMzQgMTQuMyAxMy4yIDE0IDEyIDE0Yy0xLjIgMC0yLjM0LjMtMy4zMi44NEwyLjkyIDkuMDdDNS41MSA3LjA4IDguNjcgNiAxMiA2czYuNDkgMS4wOCA5LjA4IDMuMDdsLTUuNzYgNS43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV0d29ya1dpZmkyQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNHptNC43OCA5LjM4QTguODUzIDguODUzIDAgMCAwIDEyIDEyYy0xLjc2IDAtMy40LjUtNC43OCAxLjM4bC00LjMtNC4zQzUuNTEgNy4wOCA4LjY3IDYgMTIgNnM2LjQ5IDEuMDggOS4wOCAzLjA3bC00LjMgNC4zMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV0d29ya1dpZmkzQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNHpNMi45MiA5LjA3QzUuNTEgNy4wOCA4LjY3IDYgMTIgNnM2LjQ5IDEuMDggOS4wOCAzLjA3bC0yLjg1IDIuODZBMTAuOTQ1IDEwLjk0NSAwIDAgMCAxMiAxMGMtMi4zMSAwLTQuNDYuNzEtNi4yMyAxLjkzTDIuOTIgOS4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV0d29ya1dpZmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMSAyNCA4Ljk4em0tMjEuMDguMDlDNS41MSA3LjA4IDguNjcgNiAxMiA2czYuNDkgMS4wOCA5LjA4IDMuMDdsLTEuNDMgMS40M0MxNy41IDguOTQgMTQuODYgOCAxMiA4cy01LjUuOTQtNy42NSAyLjUxTDIuOTIgOS4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmZjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNNCAyMGgxNlY0SDR2MTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE4SDRWNGgxNnYxNnpNMTggNmgtNWMtMS4xIDAtMiAuOS0yIDJ2Mi4yOGMtLjYuMzUtMSAuOTgtMSAxLjcyIDAgMS4xLjkgMiAyIDJzMi0uOSAyLTJjMC0uNzQtLjQtMS4zOC0xLTEuNzJWOGgzdjhIOFY4aDJWNkg2djEyaDEyVjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5pZ2h0bGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJjMS44MiAwIDMuNTMuNSA1IDEuMzUtMi45OSAxLjczLTUgNC45NS01IDguNjVzMi4wMSA2LjkyIDUgOC42NUE5Ljk3MyA5Ljk3MyAwIDAgMSAxNCAyMkM4LjQ4IDIyIDQgMTcuNTIgNCAxMlM4LjQ4IDIgMTQgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm90ZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFzLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNy0uMjVjLjQxIDAgLjc1LjM0Ljc1Ljc1cy0uMzQuNzUtLjc1Ljc1LS43NS0uMzQtLjc1LS43NS4zNC0uNzUuNzUtLjc1ek05LjEgMTdIN3YtMi4xNGw1Ljk2LTUuOTYgMi4xMiAyLjEyTDkuMSAxN3ptNy43NS03LjczLTEuMDYgMS4wNi0yLjEyLTIuMTIgMS4wNi0xLjA2Yy4yLS4yLjUxLS4yLjcxIDBsMS40MSAxLjQxYy4yLjIuMi41MSAwIC43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFzc3dvcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTdoMjB2Mkgydi0yem0xLjE1LTQuMDVMNCAxMS40N2wuODUgMS40OCAxLjMtLjc1LS44NS0xLjQ4SDd2LTEuNUg1LjNsLjg1LTEuNDdMNC44NSA3IDQgOC40NyAzLjE1IDdsLTEuMy43NS44NSAxLjQ3SDF2MS41aDEuN2wtLjg1IDEuNDggMS4zLjc1em02LjctLjc1IDEuMy43NS44NS0xLjQ4Ljg1IDEuNDggMS4zLS43NS0uODUtMS40OEgxNXYtMS41aC0xLjdsLjg1LTEuNDctMS4zLS43NUwxMiA4LjQ3IDExLjE1IDdsLTEuMy43NS44NSAxLjQ3SDl2MS41aDEuN2wtLjg1IDEuNDh6TTIzIDkuMjJoLTEuN2wuODUtMS40Ny0xLjMtLjc1TDIwIDguNDcgMTkuMTUgN2wtMS4zLjc1Ljg1IDEuNDdIMTd2MS41aDEuN2wtLjg1IDEuNDggMS4zLjc1Ljg1LTEuNDguODUgMS40OCAxLjMtLjc1LS44NS0xLjQ4SDIzdi0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhdHRlcm4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNmMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem0yIDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem02LTZjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem02IDJjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0tLjAyIDZjLS43NCAwLTEuMzcuNC0xLjcyIDFoLTIuNTRhMS45OCAxLjk4IDAgMCAwLTMuNDQgMEg4LjQxbDMuMDctMy4wN2MuMTcuMDQuMzQuMDcuNTIuMDcgMS4xIDAgMi0uOSAyLTIgMC0uMTgtLjAzLS4zNS0uMDctLjUxbDMuNTYtMy41NmMuMTYuMDQuMzMuMDcuNTEuMDcgMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyYzAgLjE4LjAzLjM1LjA3LjUxbC0zLjU2IDMuNTZjLS4xNi0uMDQtLjMzLS4wNy0uNTEtLjA3LTEuMSAwLTIgLjktMiAyIDAgLjE4LjAzLjM1LjA3LjUxbC0zLjU2IDMuNTZDNi4zNSAxNi4wMyA2LjE4IDE2IDYgMTZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyYy43NCAwIDEuMzctLjQgMS43Mi0xaDIuNTdhMS45OCAxLjk4IDAgMCAwIDMuNDQgMGgyLjU1Yy4zNC42Ljk4IDEgMS43MiAxIDEuMSAwIDItLjkgMi0yLS4wMi0xLjEtLjkyLTItMi4wMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaGlzaGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDljMC0xLjMtLjg0LTIuNC0yLTIuODJWMmgtMnY0LjE4QzEzLjg0IDYuNiAxMyA3LjcgMTMgOXMuODQgMi40IDIgMi44MlYxNWMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNHYtMWgzTDUgOXY2YzAgMy4zMSAyLjY5IDYgNiA2czYtMi42OSA2LTZ2LTMuMThjMS4xNi0uNDIgMi0xLjUyIDItMi44MnptLTMgMWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek03LjY0IDE1SDYuNDl2LTQuNWwtLjkuNjYtLjU4LS44OUw2Ljc3IDloLjg3djZ6bTUuODYgMEg5LjYxdi0xLjAyYzEuMDctMS4wNyAxLjc3LTEuNzcgMi4xMy0yLjE1LjQtLjQyLjU0LS42OS41NC0xLjA2IDAtLjQtLjMxLS43Mi0uODEtLjcyLS41MiAwLS44LjM5LS45LjcybC0xLjAxLS40MmMuMDEtLjAyLjE4LS43NiAxLTEuMTUuNjktLjMzIDEuNDgtLjIgMS45NS4wMy44Ni40NC45MSAxLjI0LjkxIDEuNDggMCAuNjQtLjMxIDEuMjYtLjkyIDEuODYtLjI1LjI1LS43Mi43MS0xLjQgMS4zOWwuMDMuMDVoMi4zN1YxNXptNS4yNS0uODVjLS4wOC4xMy0uNTYuODUtMS43Ni44NS0uMDQgMC0xLjYuMDgtMi4wNS0xLjUxbDEuMDMtLjQxYy4wMy4xLjE5Ljg2IDEuMDIuODYuNDEgMCAuODktLjI4Ljg5LS43NyAwLS41NS0uNDgtLjc5LTEuMDQtLjc5aC0uNXYtMWguNDZjLjMzIDAgLjg4LS4xNC44OC0uNzIgMC0uMzktLjMxLS42NS0uNzUtLjY1LS41IDAtLjc0LjMyLS44NS42NGwtLjk5LS40MUMxNS4yIDkuOSAxNS42OCA5IDE2Ljk0IDljMS4wOSAwIDEuNTQuNjQgMS42Mi43NS4zMy41LjI4IDEuMTYuMDIgMS41Ny0uMTUuMjItLjMyLjM4LS41Mi40OHYuMDdjLjI4LjExLjUxLjI4LjY4LjUyLjM3LjUyLjMzIDEuMjcuMDEgMS43NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxheUxlc3NvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTFjLjM0IDAgLjY3LjAzIDEgLjA4VjRjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmg3LjI2QTYuOTk1IDYuOTk1IDAgMCAxIDE4IDExek03IDExVjRoNXY3TDkuNSA5LjUgNyAxMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0tMS4yNSA3LjV2LTVsNCAyLjUtNCAyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFByaWNlQ2hhbmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptLTggNkg4djFoM2MuNTUgMCAxIC40NSAxIDF2M2MwIC41NS0uNDUgMS0xIDFoLTF2MUg4di0xSDZ2LTJoNHYtMUg3Yy0uNTUgMC0xLS40NS0xLTFWOWMwLS41NS40NS0xIDEtMWgxVjdoMnYxaDJ2MnptNCA2LjI1LTItMmg0bC0yIDJ6TTE0IDEwbDItMiAyIDJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFByaWNlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEzVjljMC0uNTUtLjQ1LTEtMS0xSDdWNmg1VjRIOS41VjNoLTJ2MUg2Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWg0djJINXYyaDIuNXYxaDJ2LTFIMTFjLjU1IDAgMS0uNDUgMS0xek0xOS41OSAxMi41MmwtNS42NiA1LjY1LTIuODMtMi44My0xLjQxIDEuNDJMMTMuOTMgMjEgMjEgMTMuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFB1bmNoQ2xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA2aC0xVjFINnY1SDVjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnpNOCAzaDh2M0g4VjN6bTQgMTZjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDExLjVoLTF2Mi43MWwxLjY0IDEuNjQuNzEtLjcxLTEuMzUtMS4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUXVpeiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNS45OSAxM2MtLjU5IDAtMS4wNS0uNDctMS4wNS0xLjA1IDAtLjU5LjQ3LTEuMDQgMS4wNS0xLjA0LjU5IDAgMS4wNC40NSAxLjA0IDEuMDQtLjAxLjU4LS40NSAxLjA1LTEuMDQgMS4wNXptMi41LTYuMTdjLS42My45My0xLjIzIDEuMjEtMS41NiAxLjgxLS4xMy4yNC0uMTguNC0uMTggMS4xOGgtMS41MmMwLS40MS0uMDYtMS4wOC4yNi0xLjY1LjQxLS43MyAxLjE4LTEuMTYgMS42My0xLjguNDgtLjY4LjIxLTEuOTQtMS4xNC0xLjk0LS44OCAwLTEuMzIuNjctMS41IDEuMjNsLTEuMzctLjU3QzExLjUxIDUuOTYgMTIuNTIgNSAxMy45OSA1YzEuMjMgMCAyLjA4LjU2IDIuNTEgMS4yNi4zNy42MS41OCAxLjczLjAxIDIuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjggNy4yIDkgMTBIN0w1Ljg3IDcuMzNINFYxMEgyVjJoNWMxLjEzIDAgMiAuODcgMiAydjEuMzNjMCAuOC0uNTMgMS41NC0xLjIgMS44N3pNNyA0SDR2MS4zM2gzVjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJhZGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS43NCAxOC4zM0E5Ljk4NCA5Ljk4NCAwIDAgMCAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMFMyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwYTkuOTg0IDkuOTg0IDAgMCAwIDcuMTEtMi45N2MuMDMtLjAzLjA1LS4wNi4wNy0uMDguMi0uMi4zOS0uNDEuNTYtLjYyek0xMiAyMGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4YzAgMS44NS0uNjMgMy41NC0xLjY5IDQuOWwtMS40My0xLjQzYy42OS0uOTggMS4xLTIuMTcgMS4xLTMuNDYgMC0zLjMxLTIuNjktNi02LTZzLTYgMi42OS02IDYgMi42OSA2IDYgNmMxLjMgMCAyLjUxLS40MiAzLjQ5LTEuMTNsMS40MiAxLjQyQTcuODIyIDcuODIyIDAgMCAxIDEyIDIwem0xLjkyLTcuNDljLjE3LS42Ni4wMi0xLjM4LS40OS0xLjlsLS4wMi0uMDJjLS43Ny0uNzctMi0uNzgtMi43OC0uMDQtLjAxLjAxLS4wMy4wMi0uMDUuMDQtLjc4Ljc4LS43OCAyLjA1IDAgMi44M2wuMDIuMDJjLjUyLjUxIDEuMjUuNjcgMS45MS40OWwxLjUxIDEuNTFjLS42LjM2LTEuMjkuNTgtMi4wNC41OC0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDRjMCAuNzMtLjIxIDEuNDEtLjU2IDJsLTEuNS0xLjUxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZW1lbWJlck1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxSDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNC4yMWMtMS41LS43Ny0zLjItMS4yMS01LTEuMjFzLTMuNS40NC01IDEuMjFWNmgxMHY5LjIxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIjNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVzZXRUdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTBoLTguMDFWN0w5IDExbDMuOTkgNHYtM0gyMXY1SDNWNWgxOHYzaDJWNWMwLTEuMS0uOS0yLTItMkgzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJ2LTVIMjNjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlc3RhcnRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVWMkw4IDZsNCA0VjdjMy4zMSAwIDYgMi42OSA2IDYgMCAyLjk3LTIuMTcgNS40My01IDUuOTF2Mi4wMmMzLjk1LS40OSA3LTMuODUgNy03LjkzIDAtNC40Mi0zLjU4LTgtOC04ek02IDEzYzAtMS42NS42Ny0zLjE1IDEuNzYtNC4yNEw2LjM0IDcuMzRBOC4wMTQgOC4wMTQgMCAwIDAgNCAxM2MwIDQuMDggMy4wNSA3LjQ0IDcgNy45M3YtMi4wMmMtMi44My0uNDgtNS0yLjk0LTUtNS45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmV2aWV3cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTYuNDMgOS41N0wxMiAxNWwtMS41Ny0zLjQzTDcgMTBsMy40My0xLjU3TDEyIDVsMS41NyAzLjQzTDE3IDEwbC0zLjQzIDEuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJzdnAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDloMS41bC0xLjc1IDZoLTEuNUwxMi41IDlIMTRsMSAzLjQzTDE2IDl6TTUuMSAxMi45IDYgMTVINC41bC0uODUtMkgyLjV2MkgxVjloMy41Yy44NSAwIDEuNS42NSAxLjUgMS41djFjMCAuNi0uNCAxLjE1LS45IDEuNHptLS42LTIuNGgtMnYxaDJ2LTF6bTE3IDIuNWgtMnYySDE4VjloMy41Yy44MyAwIDEuNS42NyAxLjUgMS41djFjMCAuODMtLjY3IDEuNS0xLjUgMS41em0wLTIuNWgtMnYxaDJ2LTF6TTExLjUgOXYxLjVoLTN2Ljc1aDJjLjU1IDAgMSAuNDUgMSAxVjE0YzAgLjU1LS40NSAxLTEgMUg3di0xLjVoM3YtLjc1SDcuNzVjLS40MSAwLS43NS0uMzQtLjc1LS43NXYtMmMwLS41NS40NS0xIDEtMWgzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjcmVlbkxvY2tMYW5kc2NhcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA1SDNjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptLTIgMTJINVY3aDE0djEwem0tOS0xaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXYtMWEyIDIgMCAxIDAtNCAwdjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxem0uOC02YzAtLjY2LjU0LTEuMiAxLjItMS4yLjY2IDAgMS4yLjU0IDEuMiAxLjJ2MWgtMi40di0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY3JlZW5Mb2NrUG9ydHJhaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNmg0Yy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTF2LTFhMiAyIDAgMSAwLTQgMHYxYy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMXptLjgtNmMwLS42Ni41NC0xLjIgMS4yLTEuMi42NiAwIDEuMi41NCAxLjIgMS4ydjFoLTIuNHYtMXpNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMThIN1Y1aDEwdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY3JlZW5Mb2NrUm90YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMy4yNSAxMi43Ny0yLjU3LTIuNTctMS40MSAxLjQxIDIuMjIgMi4yMi01LjY2IDUuNjZMNC41MSA4LjE3bDUuNjYtNS42NiAyLjEgMi4xIDEuNDEtMS40MUwxMS4yMy43NWExLjQ5IDEuNDkgMCAwIDAtMi4xMiAwTDIuNzUgNy4xMWExLjQ5IDEuNDkgMCAwIDAgMCAyLjEybDEyLjAyIDEyLjAyYy41OS41OSAxLjU0LjU5IDIuMTIgMGw2LjM2LTYuMzZjLjU5LS41OS41OS0xLjU0IDAtMi4xMnpNOC40NyAyMC40OEExMC40ODcgMTAuNDg3IDAgMCAxIDIuNSAxMkgxYy41MSA2LjE2IDUuNjYgMTEgMTEuOTUgMTFsLjY2LS4wMy0zLjgxLTMuODItMS4zMyAxLjMzek0xNiA5aDVjLjU1IDAgMS0uNDUgMS0xVjRjMC0uNTUtLjQ1LTEtMS0xdi0uNWEyLjUgMi41IDAgMCAwLTUgMFYzYy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXptLjgtNi41YzAtLjk0Ljc2LTEuNyAxLjctMS43czEuNy43NiAxLjcgMS43VjNoLTMuNHYtLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjcmVlblJvdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNDggMi41MmMzLjI3IDEuNTUgNS42MSA0LjcyIDUuOTcgOC40OGgxLjVDMjMuNDQgNC44NCAxOC4yOSAwIDEyIDBsLS42Ni4wMyAzLjgxIDMuODEgMS4zMy0xLjMyem0tNi4yNS0uNzdhMS40OSAxLjQ5IDAgMCAwLTIuMTIgMEwxLjc1IDguMTFhMS40OSAxLjQ5IDAgMCAwIDAgMi4xMmwxMi4wMiAxMi4wMmMuNTkuNTkgMS41NC41OSAyLjEyIDBsNi4zNi02LjM2Yy41OS0uNTkuNTktMS41NCAwLTIuMTJMMTAuMjMgMS43NXptNC42IDE5LjQ0TDIuODEgOS4xN2w2LjM2LTYuMzYgMTIuMDIgMTIuMDItNi4zNiA2LjM2em0tNy4zMS4yOUExMC40ODcgMTAuNDg3IDAgMCAxIDEuNTUgMTNILjA1Qy41NiAxOS4xNiA1LjcxIDI0IDEyIDI0bC42Ni0uMDMtMy44MS0zLjgxLTEuMzMgMS4zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2NyZWVuU2VhcmNoRGVza3RvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImVuYWJsZUJhY2tncm91bmRcIjpcIm5ldyAwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS42IDE2LjhoNC44djEuOEg5LjZ6XCIsXCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4YzEuMSAwIDEuOTktLjkgMS45OS0yTDIyIDZhMiAyIDAgMCAwLTItMkg0Yy0xLjExIDAtMiAuODktMiAydjEwYTIgMiAwIDAgMCAyIDJIMHYyaDI0di0yaC00Wk00IDE2VjZoMTZ2MTAuMDFMNCAxNlptNS4wOTctNi4wNDdjMC0xLjAyNy44MzYtMS44NjQgMS44NjQtMS44NjQgMS4wMjcgMCAxLjg2NC44MzcgMS44NjQgMS44NjRhMS44NjcgMS44NjcgMCAwIDEtMS44NjQgMS44NjQgMS44NjcgMS44NjcgMCAwIDEtMS44NjQtMS44NjRabTcuMDMyIDQuMjM2LTIuNDgyLTIuNDgyYTMuMTkgMy4xOSAwIDAgMCAuNTI3LTEuNzU0QTMuMjE2IDMuMjE2IDAgMCAwIDEwLjk2IDYuNzRhMy4yMTcgMy4yMTcgMCAwIDAtMy4yMTQgMy4yMTMgMy4yMTggMy4yMTggMCAwIDAgMy4yMTQgMy4yMTQgMy4xOSAzLjE5IDAgMCAwIDEuNzI0LS41MWwyLjQ4OSAyLjQ4Ny45NTUtLjk1NVpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCIsXCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjcmVlbnNob3RNb25pdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNHYyaDh2LTJoNGMxLjEgMCAyLS45IDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTRINFY1aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgNy41SDlWNkg1djRoMS41ek0xOSAxMmgtMS41djIuNUgxNVYxNmg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY3JlZW5zaG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOEg3VjZoMTB2MTJ6TTkuNSA4LjVIMTJWN0g4djRoMS41VjguNXpNMTIgMTdoNHYtNGgtMS41djIuNUgxMlYxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2RTdG9yYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMmgtOEw0LjAyIDggNCAyMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS02IDZoLTJWNGgydjR6bTMgMGgtMlY0aDJ2NHptMyAwaC0yVjRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZWN1cml0eVVwZGF0ZUdvb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDFIN2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE3SDdWNmgxMHYxMnptLTEtNy45NS0xLjQxLTEuNDEtMy41NCAzLjU0LTEuNDEtMS40MS0xLjQxIDEuNDFMMTEuMDUgMTUgMTYgMTAuMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlY3VyaXR5VXBkYXRlV2FybmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTVoMnYyaC0yek0xMSA3aDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMUg3Yy0xLjEgMC0xLjk5LjktMS45OSAydjE4YzAgMS4xLjg5IDIgMS45OSAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTdIN1Y2aDEwdjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZWN1cml0eVVwZGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAzdjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMkg3Yy0xLjEgMC0yIC45LTIgMnptMTIgMTVIN1Y2aDEwdjEyem0tMS02aC0zVjhoLTJ2NEg4bDQgNCA0LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjQxIDExLjQxLTguODMtOC44M2MtLjM3LS4zNy0uODgtLjU4LTEuNDEtLjU4SDRjLTEuMSAwLTIgLjktMiAydjcuMTdjMCAuNTMuMjEgMS4wNC41OSAxLjQxbDguODMgOC44M2MuNzguNzggMi4wNS43OCAyLjgzIDBsNy4xNy03LjE3Yy43OC0uNzguNzgtMi4wNC0uMDEtMi44M3pNNi41IDhDNS42NyA4IDUgNy4zMyA1IDYuNVM1LjY3IDUgNi41IDUgOCA1LjY3IDggNi41IDcuMzMgOCA2LjUgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VuZFRvTW9iaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTdoMnY0YzAgMS4xLS45IDItMiAySDdjLTEuMSAwLTItLjktMi0yVjNjMC0xLjEuOS0xLjk5IDItMS45OUwxNyAxYzEuMSAwIDIgLjkgMiAydjRoLTJWNkg3djEyaDEwdi0xem01LTUtNC00djNoLTV2Mmg1djNsNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXR0aW5nc1N1Z2dlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy40MSA2LjU5IDE1IDUuNWwyLjQxLTEuMDlMMTguNSAybDEuMDkgMi40MUwyMiA1LjVsLTIuNDEgMS4wOUwxOC41IDlsLTEuMDktMi40MXptMy44NyA2LjEzTDIwLjUgMTFsLS43OCAxLjcyLTEuNzIuNzggMS43Mi43OC43OCAxLjcyLjc4LTEuNzJMMjMgMTMuNWwtMS43Mi0uNzh6bS01LjA0IDEuNjUgMS45NCAxLjQ3LTIuNSA0LjMzLTIuMjQtLjk0Yy0uMi4xMy0uNDIuMjYtLjY0LjM3bC0uMyAyLjRoLTVsLS4zLTIuNDFjLS4yMi0uMTEtLjQzLS4yMy0uNjQtLjM3bC0yLjI0Ljk0LTIuNS00LjMzIDEuOTQtMS40N2MtLjAxLS4xMS0uMDEtLjI0LS4wMS0uMzZzMC0uMjUuMDEtLjM3bC0xLjk0LTEuNDcgMi41LTQuMzMgMi4yNC45NGMuMi0uMTMuNDItLjI2LjY0LS4zN0w3LjUgNmg1bC4zIDIuNDFjLjIyLjExLjQzLjIzLjY0LjM3bDIuMjQtLjk0IDIuNSA0LjMzLTEuOTQgMS40N2MuMDEuMTIuMDEuMjQuMDEuMzdzMCAuMjQtLjAxLjM2ek0xMyAxNGMwLTEuNjYtMS4zNC0zLTMtM3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzIDMtMS4zNCAzLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzU3lzdGVtRGF5ZHJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE2aDYuNWEyLjUgMi41IDAgMCAwIDAtNWgtLjA1Yy0uMjQtMS42OS0xLjY5LTMtMy40NS0zLTEuNCAwLTIuNi44My0zLjE2IDIuMDJoLS4xNkEyLjk5NCAyLjk5NCAwIDAgMCA2IDEzYzAgMS42NiAxLjM0IDMgMyAzek0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOTloMTh2MTQuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNoYXJlTG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjAyIDE5LjkzdjIuMDJjMi4wMS0uMiAzLjg0LTEgNS4zMi0yLjIxbC0xLjQyLTEuNDNhNy45NDEgNy45NDEgMCAwIDEtMy45IDEuNjJ6TTQuMDMgMTJjMC00LjA1IDMuMDMtNy40MSA2Ljk1LTcuOTNWMi4wNUM1Ljk1IDIuNTggMi4wMyA2Ljg0IDIuMDMgMTJjMCA1LjE2IDMuOTIgOS40MiA4Ljk1IDkuOTV2LTIuMDJjLTMuOTItLjUyLTYuOTUtMy44OC02Ljk1LTcuOTN6TTE5Ljk1IDExaDIuMDJjLS4yLTIuMDEtMS0zLjg0LTIuMjEtNS4zMmwtMS40MyAxLjQzYy44NiAxLjEgMS40NCAyLjQzIDEuNjIgMy44OXpNMTguMzQgNC4yNmE5Ljk4MSA5Ljk4MSAwIDAgMC01LjMyLTIuMjF2Mi4wMmMxLjQ2LjE4IDIuNzkuNzYgMy45IDEuNjJsMS40Mi0xLjQzek0xOC4zMyAxNi45bDEuNDMgMS40MkE5Ljk0OSA5Ljk0OSAwIDAgMCAyMS45NyAxM2gtMi4wMmE3Ljk0MSA3Ljk0MSAwIDAgMS0xLjYyIDMuOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTEuMUMxNiA4LjYxIDE0LjEgNyAxMiA3cy00IDEuNjEtNCA0LjFjMCAxLjY2IDEuMzMgMy42MyA0IDUuOSAyLjY3LTIuMjcgNC00LjI0IDQtNS45em0tNCAuOWExLjA3MSAxLjA3MSAwIDAgMSAwLTIuMTRBMS4wNzEgMS4wNzEgMCAwIDEgMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNob3J0Y3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMSAxMS02LTZ2NUg4Yy0yLjc2IDAtNSAyLjI0LTUgNXY0aDJ2LTRjMC0xLjY1IDEuMzUtMyAzLTNoN3Y1bDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXIwQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNi44M1YyMEg2LjgzTDIwIDYuODNNMjIgMiAyIDIyaDIwVjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbENlbGx1bGFyNEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMjJoMjBWMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXJBbHQxQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNGgzdjZINXYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXJBbHQyQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNGgzdjZINXYtNnptNi01aDN2MTFoLTNWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA0aDN2MTZoLTN6TTUgMTRoM3Y2SDV6bTYtNWgzdjExaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxDZWxsdWxhckNvbm5lY3RlZE5vSW50ZXJuZXQwQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMThoMnYtOGgtMnY4em0wIDRoMnYtMmgtMnYyem0tMi0ydjJIMkwyMiAydjZoLTJWNi44M0w2LjgzIDIwSDE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxDZWxsdWxhckNvbm5lY3RlZE5vSW50ZXJuZXQ0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOGgydi04aC0ydjh6bTAgNGgydi0yaC0ydjJ6TTIgMjJoMTZWOGg0VjJMMiAyMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXJOb1NpbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNLTYxOC0yODcySDc4MlY3MjhILTYxOHpNLTEgMGgyNnYyNEgtMXptMSAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ljk5IDVjMC0xLjEtLjg5LTItMS45OS0yaC03TDcuNjYgNS4zNCAxOSAxNi42OCAxOC45OSA1ek0zLjY1IDMuODggMi4zOCA1LjE1IDUgNy43N1YxOWMwIDEuMS45IDIgMiAyaDEwLjAxYy4zNSAwIC42Ny0uMS45Ni0uMjZsMS44OCAxLjg4IDEuMjctMS4yN0wzLjY1IDMuODh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTS4wMSAwaDI0djI0aC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXJOb2RhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEzaC05djlIMkwyMiAydjExem0tMSAyLjQxTDE5LjU5IDE0bC0yLjA5IDIuMDlMMTUuNDEgMTQgMTQgMTUuNDFsMi4wOSAyLjA5TDE0IDE5LjU5IDE1LjQxIDIxbDIuMDktMi4wOEwxOS41OSAyMSAyMSAxOS41OWwtMi4wOC0yLjA5TDIxIDE1LjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxDZWxsdWxhck51bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2LjgzVjIwSDYuODNMMjAgNi44M00yMiAyIDIgMjJoMjBWMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMSAxLTguNTkgOC41OUwyMSAxOC4xOFYxek00Ljc3IDQuNSAzLjUgNS43N2w2LjM2IDYuMzZMMSAyMWgxNy43M2wyIDJMMjIgMjEuNzMgNC43NyA0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmkwQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMzLjMzIDAgNi40OSAxLjA4IDkuMDggMy4wN0wxMiAxOC4xN2wtOS4wOC05LjFDNS41MSA3LjA4IDguNjcgNiAxMiA2bTAtMkM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaTRCYXJMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45OCAxMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OGw2LjM1IDYuMzZMMTIgMjFsMy4wNS0zLjA1VjE1YzAtLjQ1LjA5LS44OC4yMy0xLjI5LjU0LTEuNTcgMi4wMS0yLjcxIDMuNzctMi43MWgyLjkzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNnYtMWMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2MWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xem0tMSAwaC0ydi0xYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpNEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjAxIDIxLjQ5IDIzLjY0IDdjLS40NS0uMzQtNC45My00LTExLjY0LTRDNS4yOCAzIC44MSA2LjY2LjM2IDdsMTEuNjMgMTQuNDkuMDEuMDEuMDEtLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpQmFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMXYtOWg4Ljk5TDI0IDguOTh6TTE5LjU5IDE0bC0yLjA5IDIuMDlMMTUuNDEgMTQgMTQgMTUuNDFsMi4wOSAyLjA5TDE0IDE5LjU5IDE1LjQxIDIxbDIuMDktMi4wOEwxOS41OSAyMSAyMSAxOS41OWwtMi4wOC0yLjA5TDIxIDE1LjQxIDE5LjU5IDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpQ29ubmVjdGVkTm9JbnRlcm5ldDQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxdi05aDguOTlMMjQgOC45OHpNMTkuNTkgMTRsLTIuMDkgMi4wOUwxNS40MSAxNCAxNCAxNS40MWwyLjA5IDIuMDlMMTQgMTkuNTkgMTUuNDEgMjFsMi4wOS0yLjA4TDE5LjU5IDIxIDIxIDE5LjU5bC0yLjA4LTIuMDlMMjEgMTUuNDEgMTkuNTkgMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMy42NCA3Yy0uNDUtLjM0LTQuOTMtNC0xMS42NC00LTEuNSAwLTIuODkuMTktNC4xNS40OEwxOC4xOCAxMy44IDIzLjY0IDd6bS02LjYgOC4yMkwzLjI3IDEuNDQgMiAyLjcybDIuMDUgMi4wNkMxLjkxIDUuNzYuNTkgNi44Mi4zNiA3bDExLjYzIDE0LjQ5LjAxLjAxLjAxLS4wMSAzLjktNC44NiAzLjMyIDMuMzIgMS4yNy0xLjI3LTMuNDYtMy40NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaVN0YXR1c2JhcjRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmlTdGF0dXNiYXJDb25uZWN0ZWROb0ludGVybmV0NCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxbDUtNS4wMVY4aDUuOTJDMTkuOTcgNS41MSAxNi4xNiA0IDEyIDR6TTE5IDE4aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTBoMnY2aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpU3RhdHVzYmFyTnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNHpNMi45MiA5LjA3QzUuNTEgNy4wOCA4LjY3IDYgMTIgNnM2LjQ5IDEuMDggOS4wOCAzLjA3TDEyIDE4LjE3bC05LjA4LTkuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2ltQ2FyZERvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyaC04TDQgOHYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS02IDE1LTQtNGgzVjkuMDJMMTMgOXY0aDNsLTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BsaXRzY3JlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDR2NUg2VjRoMTJtMC0ySDZjLTEuMSAwLTIgLjktMiAydjVjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDEzdjVINnYtNWgxMm0wLTJINmMtMS4xIDAtMiAuOS0yIDJ2NWMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi01YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNTY29yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNkg5VjRoMnYyem00LTJoLTJ2MmgyVjR6TTkgMTRoMnYtMkg5djJ6bTEwLTRWOGgtMnYyaDJ6bTAgNHYtMmgtMnYyaDJ6bS02IDBoMnYtMmgtMnYyem02LTEwaC0ydjJoMlY0em0tNiA0VjZoLTJ2Mmgyem0tNiAyVjhoMlY2SDdWNEg1djE2aDJ2LThoMnYtMkg3em04IDJoMnYtMmgtMnYyem0tNC0ydjJoMnYtMmgtMnpNOSA4djJoMlY4SDl6bTQgMmgyVjhoLTJ2MnptMi00djJoMlY2aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTc2lkQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA1LjQ3IDEyIDEyIDcuNjIgNy42MiAzIDExVjguNTJMNy44MyA1bDQuMzggNC4zOEwyMSAzdjIuNDd6TTIxIDE1aC00LjdsLTQuMTcgMy4zNEw2IDEyLjQxbC0zIDIuMTNWMTdsMi44LTIgNi4yIDYgNS00aDR2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0b3JhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDIwaDIwdi00SDJ2NHptMi0zaDJ2Mkg0di0yek0yIDR2NGgyMFY0SDJ6bTQgM0g0VjVoMnYyem0tNCA3aDIwdi00SDJ2NHptMi0zaDJ2Mkg0di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdG9ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTMgOEMxNi43MiA0LjE4IDExLjgyIDIuODcgOCA1LjA3Yy0xLjQxLjgyLTIuNDggMi0zLjE2IDMuMzctLjEzLTIuMi4yMi00LjQgMS4wMi02LjQ0SDMuNzRDMi4yIDYuNDkgMi41MiAxMS41OCA1LjA3IDE2YTcuOTYgNy45NiAwIDAgMCA0Ljg2IDMuNzJjMS45OC41MyA0LjE2LjMxIDYuMDctLjc5IDEuNDEtLjgyIDIuNDgtMiAzLjE2LTMuMzcuMTMgMi4yLS4yMSA0LjQtMS4wMSA2LjQ0aDIuMTFjMS41My00LjQ5IDEuMjItOS41OC0xLjMzLTE0ek0xNSAxNy4yQTYuMDEyIDYuMDEyIDAgMCAxIDYuOCAxNWMtLjExLS4yLS4yMS0uNC0uMy0uNi0xLjItMi43Ni0uMTctNi4wNiAyLjUtNy42IDIuODYtMS42NSA2LjU0LS42NyA4LjIgMi4yLjExLjIuMjEuNC4zLjYgMS4yIDIuNzYuMTcgNi4wNi0yLjUgNy42ek0xMiAxMGMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJtMC0yYy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3VtbWFyaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAzSDVjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMyAxOWMwIDEuMS44OSAyIDEuOTkgMkgxOWMxLjEgMCAyLS45IDItMlY5bC02LTZ6TTggMTdjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMC00Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTAtNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem02IDFWNC41bDUuNSA1LjVIMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN5c3RlbVNlY3VyaXR5VXBkYXRlR29vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTdIN1Y2aDEwdjEyem0tMS03Ljk1LTEuNDEtMS40MS0zLjU0IDMuNTQtMS40MS0xLjQxLTEuNDEgMS40MUwxMS4wNSAxNSAxNiAxMC4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3lzdGVtU2VjdXJpdHlVcGRhdGVXYXJuaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNWgydjJoLTJ6TTExIDdoMnY2aC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxSDdjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2MThjMCAxLjEuODkgMiAxLjk5IDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxN0g3VjZoMTB2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN5c3RlbVNlY3VyaXR5VXBkYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDN2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAyem0xMiAxNUg3VjZoMTB2MTJ6bS0xLTZoLTNWOGgtMnY0SDhsNCA0IDQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGFzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0tMy4wNiAxNkw3LjQgMTQuNDZsMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjQgMS40MSAxLjQxTDEwLjk0IDE4ek0xMyA5VjMuNUwxOC41IDlIMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRoZXJtb3N0YXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDEzVjVjMC0xLjY2LTEuMzQtMy0zLTNTOSAzLjM0IDkgNXY4Yy0xLjIxLjkxLTIgMi4zNy0yIDQgMCAyLjc2IDIuMjQgNSA1IDVzNS0yLjI0IDUtNWMwLTEuNjMtLjc5LTMuMDktMi00em0tNC0yVjVjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjFoLTF2MWgxdjJoLTF2MWgxdjFoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRpbWVyMTBTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA4djhoLTNWOGgzbTAtM2gtM0M4LjM0IDUgNyA2LjM0IDcgOHY4YzAgMS42NiAxLjM0IDMgMyAzaDNjMS42NiAwIDMtMS4zNCAzLTNWOGMwLTEuNjYtMS4zNC0zLTMtM3pNMSA4aDJ2MTFoM1Y1SDF2M3ptMTcuNSAzYy0uODMgMC0xLjUuNjgtMS41IDEuNXYyYzAgLjgyLjY3IDEuNSAxLjUgMS41SDIxdjFoLTR2Mmg0LjVjLjgzIDAgMS41LS42NyAxLjUtMS41di0yYzAtLjgzLS42Ny0xLjUtMS41LTEuNUgxOXYtMWg0di0yaC00LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRpbWVyM1NlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDExdjJoLTR2MWgyLjVjLjgzIDAgMS41LjY4IDEuNSAxLjV2MmMwIC44My0uNjcgMS41LTEuNSAxLjVIMTV2LTJoNHYtMWgtMi41Yy0uODIgMC0xLjUtLjY4LTEuNS0xLjV2LTJjMC0uODIuNjgtMS41IDEuNS0xLjVIMjF6TTQgNXYzaDZ2Mi41SDR2M2g2VjE2SDR2M2g2YzEuNjYgMCAzLTEuMzQgMy0zdi0xLjlhMi4xIDIuMSAwIDAgMC0yLjEtMi4xQTIuMSAyLjEgMCAwIDAgMTMgOS45VjhjMC0xLjY2LTEuMzQtMy0zLTNINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHVuZ3N0ZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE5aDJ2M2gtMnpNMiAxMWgzdjJIMnpNMTkgMTFoM3YyaC0zek0xNS44OTQgMTcuODAxbDEuNDA3LTEuNDA3IDIuMTIyIDIuMTIyLTEuNDA4IDEuNDA3ek00LjU4NCAxOC41MDlsMi4xMjEtMi4xMjIgMS40MDggMS40MDctMi4xMjIgMi4xMjJ6TTE1IDguMDJWM0g5djUuMDJjLTEuMjEuOTItMiAyLjM1LTIgMy45OCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01YzAtMS42My0uNzktMy4wNi0yLTMuOTh6TTExIDVoMnYyLjFjLS4zMi0uMDYtLjY2LS4xLTEtLjFzLS42OC4wNC0xIC4xVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFVzYk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDhoNHY0aC0xdjJjMCAuMzQtLjA4LjY2LS4yMy45NEwxNiAxMy4xN1YxMmgtMVY4em0tNCAuMTcgMiAyVjZoMmwtMy00LTMgNGgydjIuMTd6TTEzIDE2djIuMjhjLjYuMzQgMSAuOTggMSAxLjcyIDAgMS4xLS45IDItMiAycy0yLS45LTItMmMwLS43NC40LTEuMzcgMS0xLjcyVjE2SDhjLTEuMTEgMC0yLS44OS0yLTJ2LTIuMjhjLS42LS4zNC0xLS45OC0xLTEuNzIgMC0uNTkuMjYtMS4xMy42OC0xLjQ5TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQxIDEuNDEtNi42LTYuNkgxM3ptLTItMnYtLjE3bC0yLjUxLTIuNTFjLS4xNC4xNi0uMzEuMjktLjQ5LjRWMTRoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVXNiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgN3Y0aDF2MmgtM1Y1aDJsLTMtNC0zIDRoMnY4SDh2LTIuMDdjLjctLjM3IDEuMi0xLjA4IDEuMi0xLjkzIDAtMS4yMS0uOTktMi4yLTIuMi0yLjItMS4yMSAwLTIuMi45OS0yLjIgMi4yIDAgLjg1LjUgMS41NiAxLjIgMS45M1YxM2MwIDEuMTEuODkgMiAyIDJoM3YzLjA1Yy0uNzEuMzctMS4yIDEuMS0xLjIgMS45NWEyLjIgMi4yIDAgMCAwIDQuNCAwYzAtLjg1LS40OS0xLjU4LTEuMi0xLjk1VjE1aDNjMS4xMSAwIDItLjg5IDItMnYtMmgxVjdoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdhbGxwYXBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNGg3VjJINGMtMS4xIDAtMiAuOS0yIDJ2N2gyVjR6bTYgOS00IDVoMTJsLTMtNC0yLjAzIDIuNzFMMTAgMTN6bTctNC41YzAtLjgzLS42Ny0xLjUtMS41LTEuNVMxNCA3LjY3IDE0IDguNXMuNjcgMS41IDEuNSAxLjVTMTcgOS4zMyAxNyA4LjV6TTIwIDJoLTd2Mmg3djdoMlY0YzAtMS4xLS45LTItMi0yem0wIDE4aC03djJoN2MxLjEgMCAyLS45IDItMnYtN2gtMnY3ek00IDEzSDJ2N2MwIDEuMS45IDIgMiAyaDd2LTJINHYtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2F0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk4IDE0SDIyaC0uMDJ6TTUuMzUgMTNjMS4xOSAwIDEuNDIgMSAzLjMzIDEgMS45NSAwIDIuMDktMSAzLjMzLTEgMS4xOSAwIDEuNDIgMSAzLjMzIDEgMS45NSAwIDIuMDktMSAzLjMzLTEgMS4xOSAwIDEuNC45OCAzLjMxIDF2LTJjLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxdjJjMS45IDAgMi4xNy0xIDMuMzUtMXptMTMuMzIgMmMtMS45NSAwLTIuMDkgMS0zLjMzIDEtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMSAxLTMuMzQgMS0xLjI0IDAtMS4zOC0xLTMuMzMtMS0xLjk1IDAtMi4xIDEtMy4zNCAxdjJjMS45NSAwIDIuMTEtMSAzLjM0LTEgMS4yNCAwIDEuMzggMSAzLjMzIDEgMS45NSAwIDIuMS0xIDMuMzQtMSAxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk0IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40MiAxIDMuMzMgMXYtMmMtMS4yNCAwLTEuMzgtMS0zLjMzLTF6TTUuMzUgOWMxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40Ljk4IDMuMzEgMVY4Yy0xLjE5IDAtMS40Mi0xLTMuMzMtMS0xLjk1IDAtMi4wOSAxLTMuMzMgMS0xLjE5IDAtMS40Mi0xLTMuMzMtMS0xLjk1IDAtMi4wOSAxLTMuMzMgMS0xLjE5IDAtMS40Mi0xLTMuMzMtMUMzLjM4IDcgMy4yNCA4IDIgOHYyYzEuOSAwIDIuMTctMSAzLjM1LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZGdldHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxM3Y4aDh2LThoLTh6TTMgMjFoOHYtOEgzdjh6TTMgM3Y4aDhWM0gzem0xMy42Ni0xLjMxTDExIDcuMzQgMTYuNjYgMTNsNS42Ni01LjY2LTUuNjYtNS42NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaTFCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41MyAxNy40NiAxMiAyMWwtMy41My0zLjU0Yy45LS45IDIuMTUtMS40NiAzLjUzLTEuNDZzMi42My41NiAzLjUzIDEuNDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmkyQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMGMzLjAzIDAgNS43OCAxLjIzIDcuNzYgMy4yMmwtMi4xMiAyLjEyQTcuOTY3IDcuOTY3IDAgMCAwIDEyIDEzYy0yLjIgMC00LjIuOS01LjY0IDIuMzVsLTIuMTItMi4xMkM2LjIyIDExLjIzIDguOTcgMTAgMTIgMTB6bTAgNmMtMS4zOCAwLTIuNjMuNTYtMy41MyAxLjQ2TDEyIDIxbDMuNTMtMy41NEE0Ljk4IDQuOTggMCAwIDAgMTIgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmlDYWxsaW5nMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNDkgM2MtMi4yMSAwLTQuMjEuOS01LjY2IDIuMzRsMS4wNiAxLjA2YTYuNDcgNi40NyAwIDAgMSA5LjE4IDBsMS4wNi0xLjA2QTcuOTMyIDcuOTMyIDAgMCAwIDE2LjQ5IDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjAzIDcuNDZhNS4wMjIgNS4wMjIgMCAwIDAtNy4wOCAwbDEuMDYgMS4wNmMuNjMtLjYzIDEuNTEtMS4wMyAyLjQ3LTEuMDNzMS44NC4zOSAyLjQ3IDEuMDNsMS4wOC0xLjA2ek0xNS4wOCA5LjU5IDE2LjQ5IDExbDEuNDEtMS40MWMtLjM2LS4zNy0uODYtLjU5LTEuNDEtLjU5cy0xLjA1LjIyLTEuNDEuNTl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjYzIDE0LjQtMi41MiAyLjVjLTIuNS0xLjQzLTQuNTctMy41LTYtNmwyLjUtMi41MmMuMjMtLjI0LjMzLS41Ny4yNy0uOUw5LjEzIDMuOGMtLjA5LS40Ni0uNS0uOC0uOTgtLjhINGMtLjU2IDAtMS4wMy40Ny0xIDEuMDMuMTcgMi44OSAxLjA1IDUuNiAyLjQzIDcuOTcgMS41OCAyLjczIDMuODUgNC45OSA2LjU3IDYuNTcgMi4zNyAxLjM3IDUuMDggMi4yNiA3Ljk3IDIuNDMuNTYuMDMgMS4wMy0uNDQgMS4wMy0xdi00LjE1YzAtLjQ4LS4zNC0uODktLjgtLjk4bC0zLjY3LS43M2EuOTg1Ljk4NSAwIDAgMC0uOS4yNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaUNoYW5uZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAzYy0yLjUxIDAtMy43NyA1LjYxLTQuNCAxMC41N0MxMC43OSAxMC42NiA5LjYxIDggOCA4IDQuNDMgOCAzIDIxIDMgMjFoMi4wMWMuNjEtNS4yNyAyLTkuODIgMi45OS0xMC44Ny45OCAxLjA1IDIuMzggNS42MSAyLjk5IDEwLjg3SDEzYy41LTIuNTMgMi02IDMtNnMyLjUgMy41MyAzIDZoMnMtLjUtMTgtNS0xOHptMCAxMGMtLjk5IDAtMS44Mi42Mi0yLjUgMS41LjU3LTQuNzcgMS41NC04LjYyIDIuNS05LjQ0Ljk3LjgxIDEuOTEgNC42NyAyLjQ5IDkuNDNDMTcuODEgMTMuNjIgMTYuOTggMTMgMTYgMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmlGaW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTRjMC0zLjM2IDIuNjQtNiA2LTYgMi4yIDAgNC4wOCAxLjEzIDUuMTMgMi44NkwyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMWwxLjg2LTEuODdDMTIuMTQgMTguMDkgMTEgMTYuMiAxMSAxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTRjMC0yLjI0LTEuNzYtNC00LTRzLTQgMS43Ni00IDQgMS43NiA0IDQgNGMuNzUgMCAxLjQ0LS4yMSAyLjAzLS41NkwyMS41OSAyMCAyMyAxOC41OWwtMi41Ni0yLjU2Yy4zNS0uNTkuNTYtMS4yOC41Ni0yLjAzem0tNiAwYzAtMS4xMi44OC0yIDItMnMyIC44OCAyIDItLjg4IDItMiAyLTItLjg4LTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaUxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk4IDExIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4bDYuMzUgNi4zNkwxMiAyMWwzLjA1LTMuMDVWMTVjMC0uNDUuMDktLjg4LjIzLTEuMjkuNTQtMS41NyAyLjAxLTIuNzEgMy43Ny0yLjcxaDIuOTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE2di0xYzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYxYy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTF6bS0xIDBoLTJ2LTFjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmlQYXNzd29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDE5di0xYzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYxYy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTF6bS0xIDBoLTJ2LTFjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjF6bTItMTAuMDItMi4xMiAyLjEzQzE5LjM1IDguNTcgMTUuODUgNyAxMiA3cy03LjM1IDEuNTctOS44OCA0LjExTDAgOC45OEMzLjA3IDUuOSA3LjMxIDQgMTIgNHM4LjkzIDEuOSAxMiA0Ljk4ek0xMiAxMGMzLjAzIDAgNS43OCAxLjIzIDcuNzYgMy4yMmwtMi4xMiAyLjEyQTcuOTY3IDcuOTY3IDAgMCAwIDEyIDEzYy0yLjIgMC00LjIuOS01LjY0IDIuMzVsLTIuMTItMi4xMkM2LjIyIDExLjIzIDguOTcgMTAgMTIgMTB6bTMuNTMgNy40NkwxMiAyMWwtMy41My0zLjU0Yy45LS45IDIuMTUtMS40NiAzLjUzLTEuNDZzMi42My41NiAzLjUzIDEuNDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmlUZXRoZXJpbmdFcnJvclJvdW5kZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdjLTMuMzEgMC02IDIuNjktNiA2IDAgMS42Ni42OCAzLjE1IDEuNzYgNC4yNGwxLjQyLTEuNDJBMy45MzQgMy45MzQgMCAwIDEgOCAxM2MwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0YzAgMS4xMS0uNDUgMi4xLTEuMTggMi44MmwxLjQyIDEuNDJBNi4wMDMgNi4wMDMgMCAwIDAgMTggMTNjMC0zLjMxLTIuNjktNi02LTZ6bTAtNEM2LjQ4IDMgMiA3LjQ4IDIgMTNjMCAyLjc2IDEuMTIgNS4yNiAyLjkzIDcuMDdsMS40Mi0xLjQyQTcuOTQgNy45NCAwIDAgMSA0IDEzYzAtNC40MiAzLjU4LTggOC04IDIuNTMgMCA0Ljc4IDEuMTcgNi4yNCAzaDIuNDJDMTguOTMgNS4wMSAxNS43IDMgMTIgM3ptMCA4Yy0xLjEgMC0yIC45LTIgMiAwIC41NS4yMyAxLjA1LjU5IDEuNDEuMzYuMzYuODYuNTkgMS40MS41OXMxLjA1LS4yMyAxLjQxLS41OWMuMzYtLjM2LjU5LS44Ni41OS0xLjQxIDAtMS4xLS45LTItMi0yem04LTFoMnY2aC0ydi02em0wIDhoMnYyaC0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWZpVGV0aGVyaW5nRXJyb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdjLTMuMzEgMC02IDIuNjktNiA2IDAgMS42Ni42OCAzLjE1IDEuNzYgNC4yNGwxLjQyLTEuNDJBMy45MzQgMy45MzQgMCAwIDEgOCAxM2MwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0YzAgMS4xMS0uNDUgMi4xLTEuMTggMi44MmwxLjQyIDEuNDJBNi4wMDMgNi4wMDMgMCAwIDAgMTggMTNjMC0zLjMxLTIuNjktNi02LTZ6bTAtNEM2LjQ4IDMgMiA3LjQ4IDIgMTNjMCAyLjc2IDEuMTIgNS4yNiAyLjkzIDcuMDdsMS40Mi0xLjQyQTcuOTQgNy45NCAwIDAgMSA0IDEzYzAtNC40MiAzLjU4LTggOC04IDIuNTMgMCA0Ljc4IDEuMTcgNi4yNCAzaDIuNDJDMTguOTMgNS4wMSAxNS43IDMgMTIgM3ptMCA4Yy0xLjEgMC0yIC45LTIgMiAwIC41NS4yMyAxLjA1LjU5IDEuNDEuMzYuMzYuODYuNTkgMS40MS41OXMxLjA1LS4yMyAxLjQxLS41OWMuMzYtLjM2LjU5LS44Ni41OS0xLjQxIDAtMS4xLS45LTItMi0yem04LTFoMnY2aC0ydi02em0wIDhoMnYyaC0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWZpVGV0aGVyaW5nT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjgxIDIuODEgMS4zOSA0LjIybDIuNjkgMi42OUE5Ljk1OCA5Ljk1OCAwIDAgMCAyIDEzYzAgMi43NiAxLjEyIDUuMjYgMi45MyA3LjA3bDEuNDItMS40MmE3Ljk1NyA3Ljk1NyAwIDAgMS0uODQtMTAuMzFsMS40MyAxLjQzYTYuMDAzIDYuMDAzIDAgMCAwIC44MiA3LjQ3bDEuNDItMS40MkEzLjkzNCAzLjkzNCAwIDAgMSA4IDEzYzAtLjYzLjE1LTEuMjMuNDEtMS43NmwxLjYxIDEuNjFjMCAuMDUtLjAyLjEtLjAyLjE1IDAgLjU1LjIzIDEuMDUuNTkgMS40MS4zNi4zNi44Ni41OSAxLjQxLjU5LjA1IDAgLjEtLjAxLjE2LS4wMmw3LjYyIDcuNjIgMS40MS0xLjQxTDIuODEgMi44MXpNMTcuNyAxNC44N2MuMTktLjU5LjMtMS4yMi4zLTEuODcgMC0zLjMxLTIuNjktNi02LTYtLjY1IDAtMS4yOC4xLTEuODcuM2wxLjcxIDEuNzFDMTEuODkgOSAxMS45NSA5IDEyIDljMi4yMSAwIDQgMS43OSA0IDQgMCAuMDUgMCAuMTEtLjAxLjE2bDEuNzEgMS43MXpNMTIgNWM0LjQyIDAgOCAzLjU4IDggOCAwIDEuMjItLjI3IDIuMzctLjc3IDMuNGwxLjQ5IDEuNDlBOS45NTMgOS45NTMgMCAwIDAgMjIgMTNjMC01LjUyLTQuNDgtMTAtMTAtMTAtMS43OCAwLTMuNDQuNDYtNC44OSAxLjI4bDEuNDggMS40OEM5LjYzIDUuMjcgMTAuNzggNSAxMiA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWZpVGV0aGVyaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTFjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem02IDJjMC0zLjMxLTIuNjktNi02LTZzLTYgMi42OS02IDZjMCAyLjIyIDEuMjEgNC4xNSAzIDUuMTlsMS0xLjc0Yy0xLjE5LS43LTItMS45Ny0yLTMuNDUgMC0yLjIxIDEuNzktNCA0LTRzNCAxLjc5IDQgNGMwIDEuNDgtLjgxIDIuNzUtMiAzLjQ1bDEgMS43NGMxLjc5LTEuMDQgMy0yLjk3IDMtNS4xOXpNMTIgM0M2LjQ4IDMgMiA3LjQ4IDIgMTNjMCAzLjcgMi4wMSA2LjkyIDQuOTkgOC42NWwxLTEuNzNDNS42MSAxOC41MyA0IDE1Ljk2IDQgMTNjMC00LjQyIDMuNTgtOCA4LThzOCAzLjU4IDggOGMwIDIuOTYtMS42MSA1LjUzLTQgNi45MmwxIDEuNzNjMi45OS0xLjczIDUtNC45NSA1LTguNjUgMC01LjUyLTQuNDgtMTAtMTAtMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZENoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDkuOTloMnY3SDZ6bTggM2gydjRoLTJ6bS00LTZoMnYxMGgtMnpNMjAgN1Y0aC0ydjNoLTN2MmgzdjNoMlY5aDNWN3ptLTIgMTJINFY1aDEyVjNINGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtNWgtMnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRDb21tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45OSA0YzAtMS4xLS44OS0yLTEuOTktMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE0bDQgNC0uMDEtMTh6TTE3IDExaC00djRoLTJ2LTRIN1Y5aDRWNWgydjRoNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbGlnbkhvcml6b250YWxDZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyaDJ2NWg4djNoLTh2NGg1djNoLTV2NWgtMnYtNUg2di0zaDV2LTRIM1Y3aDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFsaWduSG9yaXpvbnRhbExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDIySDJWMmgydjIwek0yMiA3SDZ2M2gxNlY3em0tNiA3SDZ2M2gxMHYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxpZ25Ib3Jpem9udGFsUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAyaDJ2MjBoLTJWMnpNMiAxMGgxNlY3SDJ2M3ptNiA3aDEwdi0zSDh2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxpZ25WZXJ0aWNhbEJvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDIySDJ2LTJoMjB2MnpNMTAgMkg3djE2aDNWMnptNyA2aC0zdjEwaDNWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxpZ25WZXJ0aWNhbENlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDExaC01VjZoLTN2NWgtNFYzSDd2OEgxLjg0djJIN3Y4aDN2LThoNHY1aDN2LTVoNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxpZ25WZXJ0aWNhbFRvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDJ2MkgyVjJoMjB6TTcgMjJoM1Y2SDd2MTZ6bTctNmgzVjZoLTN2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFyZWFDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTN2N2gxOHYtMS41bC05LTdMOCAxN2wtNS00em0wLTYgNCAzIDUtNyA1IDRoNHY4Ljk3bC05LjQtNy4zMS0zLjk4IDUuNDhMMyAxMC40NFY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdHRhY2hGaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSA2djExLjVjMCAyLjIxLTEuNzkgNC00IDRzLTQtMS43OS00LTRWNWEyLjUgMi41IDAgMCAxIDUgMHYxMC41YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xVjZIMTB2OS41YTIuNSAyLjUgMCAwIDAgNSAwVjVjMC0yLjIxLTEuNzktNC00LTRTNyAyLjc5IDcgNXYxMi41YzAgMy4wNCAyLjQ2IDUuNSA1LjUgNS41czUuNS0yLjQ2IDUuNS01LjVWNmgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdHRhY2hNb25leSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjggMTAuOWMtMi4yNy0uNTktMy0xLjItMy0yLjE1IDAtMS4wOSAxLjAxLTEuODUgMi43LTEuODUgMS43OCAwIDIuNDQuODUgMi41IDIuMWgyLjIxYy0uMDctMS43Mi0xLjEyLTMuMy0zLjIxLTMuODFWM2gtM3YyLjE2Yy0xLjk0LjQyLTMuNSAxLjY4LTMuNSAzLjYxIDAgMi4zMSAxLjkxIDMuNDYgNC43IDQuMTMgMi41LjYgMyAxLjQ4IDMgMi40MSAwIC42OS0uNDkgMS43OS0yLjcgMS43OS0yLjA2IDAtMi44Ny0uOTItMi45OC0yLjFoLTIuMmMuMTIgMi4xOSAxLjc2IDMuNDIgMy42OCAzLjgzVjIxaDN2LTIuMTVjMS45NS0uMzcgMy41LTEuNSAzLjUtMy41NSAwLTIuODQtMi40My0zLjgxLTQuNy00LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF1dG9HcmFwaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjA2IDkuOTQgMTIgOWwyLjA2LS45NEwxNSA2bC45NCAyLjA2TDE4IDlsLTIuMDYuOTRMMTUgMTJsLS45NC0yLjA2ek00IDE0bC45NC0yLjA2TDcgMTFsLTIuMDYtLjk0TDQgOGwtLjk0IDIuMDZMMSAxMWwyLjA2Ljk0TDQgMTR6bTQuNS01IDEuMDktMi40MUwxMiA1LjUgOS41OSA0LjQxIDguNSAyIDcuNDEgNC40MSA1IDUuNWwyLjQxIDEuMDlMOC41IDl6bS00IDExLjUgNi02LjAxIDQgNEwyMyA4LjkzbC0xLjQxLTEuNDEtNy4wOSA3Ljk3LTQtNEwzIDE5bDEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhckNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA5aDR2MTFINHpNMTYgMTNoNHY3aC00ek0xMCA0aDR2MTZoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvcmRlckFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM3YxOGgxOFYzSDN6bTggMTZINXYtNmg2djZ6bTAtOEg1VjVoNnY2em04IDhoLTZ2LTZoNnY2em0wLThoLTZWNWg2djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvcmRlckJvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTFIN3YyaDJ2LTJ6bTQgNGgtMnYyaDJ2LTJ6TTkgM0g3djJoMlYzem00IDhoLTJ2Mmgydi0yek01IDNIM3YyaDJWM3ptOCA0aC0ydjJoMlY3em00IDRoLTJ2Mmgydi0yem0tNC04aC0ydjJoMlYzem00IDBoLTJ2MmgyVjN6bTIgMTBoMnYtMmgtMnYyem0wIDRoMnYtMmgtMnYyek01IDdIM3YyaDJWN3ptMTQtNHYyaDJWM2gtMnptMCA2aDJWN2gtMnYyek01IDExSDN2Mmgydi0yek0zIDIxaDE4di0ySDN2MnptMi02SDN2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb3JkZXJDbGVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgNWgyVjNIN3Yyem0wIDhoMnYtMkg3djJ6bTAgOGgydi0ySDd2MnptNC00aDJ2LTJoLTJ2MnptMCA0aDJ2LTJoLTJ2MnptLTggMGgydi0ySDN2MnptMC00aDJ2LTJIM3Yyem0wLTRoMnYtMkgzdjJ6bTAtNGgyVjdIM3Yyem0wLTRoMlYzSDN2MnptOCA4aDJ2LTJoLTJ2MnptOCA0aDJ2LTJoLTJ2MnptMC00aDJ2LTJoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptMC0xMmgyVjdoLTJ2MnptLTggMGgyVjdoLTJ2MnptOC02djJoMlYzaC0yem0tOCAyaDJWM2gtMnYyem00IDE2aDJ2LTJoLTJ2MnptMC04aDJ2LTJoLTJ2MnptMC04aDJWM2gtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb3JkZXJDb2xvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDI0SDJ2LTRoMjB2NHpNMTMuMDYgNS4xOWwzLjc1IDMuNzVMNy43NSAxOEg0di0zLjc1bDkuMDYtOS4wNnptNC44MiAyLjY4LTMuNzUtMy43NSAxLjgzLTEuODNhLjk5Ni45OTYgMCAwIDEgMS40MSAwbDIuMzQgMi4zNGMuMzkuMzkuMzkgMS4wMiAwIDEuNDFsLTEuODMgMS44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9yZGVySG9yaXpvbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMjFoMnYtMkgzdjJ6TTUgN0gzdjJoMlY3ek0zIDE3aDJ2LTJIM3Yyem00IDRoMnYtMkg3djJ6TTUgM0gzdjJoMlYzem00IDBIN3YyaDJWM3ptOCAwaC0ydjJoMlYzem0tNCA0aC0ydjJoMlY3em0wLTRoLTJ2MmgyVjN6bTYgMTRoMnYtMmgtMnYyem0tOCA0aDJ2LTJoLTJ2MnptLTgtOGgxOHYtMkgzdjJ6TTE5IDN2MmgyVjNoLTJ6bTAgNmgyVjdoLTJ2MnptLTggOGgydi0yaC0ydjJ6bTQgNGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvcmRlcklubmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyMWgydi0ySDN2MnptNCAwaDJ2LTJIN3Yyek01IDdIM3YyaDJWN3pNMyAxN2gydi0ySDN2MnpNOSAzSDd2MmgyVjN6TTUgM0gzdjJoMlYzem0xMiAwaC0ydjJoMlYzem0yIDZoMlY3aC0ydjJ6bTAtNnYyaDJWM2gtMnptLTQgMThoMnYtMmgtMnYyek0xMyAzaC0ydjhIM3YyaDh2OGgydi04aDh2LTJoLThWM3ptNiAxOGgydi0yaC0ydjJ6bTAtNGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvcmRlckxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyMWgydi0yaC0ydjJ6bTAtNGgydi0yaC0ydjJ6bTAtMTJoMlYzaC0ydjJ6bTAgNGgyVjdoLTJ2MnptMCA0aDJ2LTJoLTJ2MnptLTQgOGgydi0ySDd2MnpNNyA1aDJWM0g3djJ6bTAgOGgydi0ySDd2MnptLTQgOGgyVjNIM3YxOHpNMTkgOWgyVjdoLTJ2MnptLTQgMTJoMnYtMmgtMnYyem00LTRoMnYtMmgtMnYyem0wLTE0djJoMlYzaC0yem0wIDEwaDJ2LTJoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptLTQtOGgydi0yaC0ydjJ6bTAtOGgyVjNoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9yZGVyT3V0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3aC0ydjJoMlY3em0wIDRoLTJ2Mmgydi0yem00IDBoLTJ2Mmgydi0yek0zIDN2MThoMThWM0gzem0xNiAxNkg1VjVoMTR2MTR6bS02LTRoLTJ2Mmgydi0yem0tNC00SDd2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb3JkZXJSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMjFoMnYtMkg3djJ6TTMgNWgyVjNIM3Yyem00IDBoMlYzSDd2MnptMCA4aDJ2LTJIN3Yyem0tNCA4aDJ2LTJIM3Yyem04IDBoMnYtMmgtMnYyem0tOC04aDJ2LTJIM3Yyem0wIDRoMnYtMkgzdjJ6bTAtOGgyVjdIM3Yyem04IDhoMnYtMmgtMnYyem00LTRoMnYtMmgtMnYyem00LTEwdjE4aDJWM2gtMnptLTQgMThoMnYtMmgtMnYyem0wLTE2aDJWM2gtMnYyem0tNCA4aDJ2LTJoLTJ2MnptMC04aDJWM2gtMnYyem0wIDRoMlY3aC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvcmRlclN0eWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMjFoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyek03IDIxaDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem04LTRoMnYtMmgtMnYyem0wLTRoMnYtMmgtMnYyek0zIDN2MThoMlY1aDE2VjNIM3ptMTYgNmgyVjdoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9yZGVyVG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyMWgydi0ySDd2MnptMC04aDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem0wIDhoMnYtMmgtMnYyem0tOC00aDJ2LTJIM3Yyem0wIDRoMnYtMkgzdjJ6bTAtOGgydi0ySDN2MnptMC00aDJWN0gzdjJ6bTggOGgydi0yaC0ydjJ6bTgtOGgyVjdoLTJ2MnptMCA0aDJ2LTJoLTJ2MnpNMyAzdjJoMThWM0gzem0xNiAxNGgydi0yaC0ydjJ6bS00IDRoMnYtMmgtMnYyek0xMSA5aDJWN2gtMnYyem04IDEyaDJ2LTJoLTJ2MnptLTQtOGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvcmRlclZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA5aDJWN0gzdjJ6bTAtNGgyVjNIM3Yyem00IDE2aDJ2LTJIN3Yyem0wLThoMnYtMkg3djJ6bS00IDBoMnYtMkgzdjJ6bTAgOGgydi0ySDN2MnptMC00aDJ2LTJIM3Yyek03IDVoMlYzSDd2MnptMTIgMTJoMnYtMmgtMnYyem0tOCA0aDJWM2gtMnYxOHptOCAwaDJ2LTJoLTJ2MnptMC04aDJ2LTJoLTJ2MnptMC0xMHYyaDJWM2gtMnptMCA2aDJWN2gtMnYyem0tNC00aDJWM2gtMnYyem0wIDE2aDJ2LTJoLTJ2MnptMC04aDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnViYmxlQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjcuMlwiLFwiY3lcIjpcIjE0LjRcIixcInJcIjpcIjMuMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0LjhcIixcImN5XCI6XCIxOFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjJcIixcImN5XCI6XCI4LjhcIixcInJcIjpcIjQuOFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW5kbGVzdGlja0NoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0SDd2Mkg1djEyaDJ2Mmgydi0yaDJWNkg5ek0xOSA4aC0yVjRoLTJ2NGgtMnY3aDJ2NWgydi01aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoZWNrbGlzdFJ0bCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDdIMnYyaDlWN3ptMCA4SDJ2Mmg5di0yem01LjM0LTRMMTIuOCA3LjQ2bDEuNDEtMS40MSAyLjEyIDIuMTIgNC4yNC00LjI0TDIyIDUuMzQgMTYuMzQgMTF6bTAgOC0zLjU0LTMuNTQgMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjRMMjIgMTMuMzQgMTYuMzQgMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoZWNrbGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDdoLTl2Mmg5Vjd6bTAgOGgtOXYyaDl2LTJ6TTUuNTQgMTEgMiA3LjQ2bDEuNDEtMS40MSAyLjEyIDIuMTIgNC4yNC00LjI0IDEuNDEgMS40MUw1LjU0IDExem0wIDhMMiAxNS40NmwxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNCAxLjQxIDEuNDFMNS41NCAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGF0YUFycmF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgNHYyaDN2MTJoLTN2Mmg1VjR6TTQgMjBoNXYtMkg2VjZoM1Y0SDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERhdGFPYmplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDd2MmMwIC41NS0uNDUgMS0xIDFIMnY0aDFjLjU1IDAgMSAuNDUgMSAxdjJjMCAxLjY1IDEuMzUgMyAzIDNoM3YtMkg3Yy0uNTUgMC0xLS40NS0xLTF2LTJjMC0xLjMtLjg0LTIuNDItMi0yLjgzdi0uMzRDNS4xNiAxMS40MiA2IDEwLjMgNiA5VjdjMC0uNTUuNDUtMSAxLTFoM1Y0SDdDNS4zNSA0IDQgNS4zNSA0IDd6TTIxIDEwYy0uNTUgMC0xLS40NS0xLTFWN2MwLTEuNjUtMS4zNS0zLTMtM2gtM3YyaDNjLjU1IDAgMSAuNDUgMSAxdjJjMCAxLjMuODQgMi40MiAyIDIuODN2LjM0Yy0xLjE2LjQxLTIgMS41Mi0yIDIuODN2MmMwIC41NS0uNDUgMS0xIDFoLTN2MmgzYzEuNjUgMCAzLTEuMzUgMy0zdi0yYzAtLjU1LjQ1LTEgMS0xaDF2LTRoLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERyYWdIYW5kbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA5SDR2MmgxNlY5ek00IDE1aDE2di0ySDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRHJhdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4Ljg1IDEwLjM5IDEuMDYtMS4wNmMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzTDE4LjUgNS4wOWMtLjc4LS43OC0yLjA1LS43OC0yLjgzIDBsLTEuMDYgMS4wNiA0LjI0IDQuMjR6bS01LjY2LTIuODNMNCAxNi43NlYyMWg0LjI0bDkuMTktOS4xOS00LjI0LTQuMjV6TTE5IDE3LjVjMCAyLjE5LTIuNTQgMy41LTUgMy41LS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFjMS41NCAwIDMtLjczIDMtMS41IDAtLjQ3LS40OC0uODctMS4yMy0xLjJsMS40OC0xLjQ4YzEuMDcuNjMgMS43NSAxLjQ3IDEuNzUgMi42OHpNNC41OCAxMy4zNUMzLjYxIDEyLjc5IDMgMTIuMDYgMyAxMWMwLTEuOCAxLjg5LTIuNjMgMy41Ni0zLjM2QzcuNTkgNy4xOCA5IDYuNTYgOSA2YzAtLjQxLS43OC0xLTItMS0xLjI2IDAtMS44LjYxLTEuODMuNjQtLjM1LjQxLS45OC40Ni0xLjQuMTJhLjk5Mi45OTIgMCAwIDEtLjE1LTEuMzhDMy43MyA0LjI0IDQuNzYgMyA3IDNzNCAxLjMyIDQgM2MwIDEuODctMS45MyAyLjcyLTMuNjQgMy40N0M2LjQyIDkuODggNSAxMC41IDUgMTFjMCAuMzEuNDMuNiAxLjA3Ljg2bC0xLjQ5IDEuNDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkaXROb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMGgxMXYySDN2LTJ6bTAtMmgxMVY2SDN2MnptMCA4aDd2LTJIM3Yyem0xNS4wMS0zLjEzLjcxLS43MWEuOTk2Ljk5NiAwIDAgMSAxLjQxIDBsLjcxLjcxYy4zOS4zOS4zOSAxLjAyIDAgMS40MWwtLjcxLjcxLTIuMTItMi4xMnptLS43MS43MS01LjMgNS4zVjIxaDIuMTJsNS4zLTUuMy0yLjEyLTIuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdEFsaWduQ2VudGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNXYyaDEwdi0ySDd6bS00IDZoMTh2LTJIM3Yyem0wLThoMTh2LTJIM3Yyem00LTZ2MmgxMFY3SDd6TTMgM3YyaDE4VjNIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0QWxpZ25KdXN0aWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyMWgxOHYtMkgzdjJ6bTAtNGgxOHYtMkgzdjJ6bTAtNGgxOHYtMkgzdjJ6bTAtNGgxOFY3SDN2MnptMC02djJoMThWM0gzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRBbGlnbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxNUgzdjJoMTJ2LTJ6bTAtOEgzdjJoMTJWN3pNMyAxM2gxOHYtMkgzdjJ6bTAgOGgxOHYtMkgzdjJ6TTMgM3YyaDE4VjNIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0QWxpZ25SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMjFoMTh2LTJIM3Yyem02LTRoMTJ2LTJIOXYyem0tNi00aDE4di0ySDN2MnptNi00aDEyVjdIOXYyek0zIDN2MmgxOFYzSDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdEJvbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42IDEwLjc5Yy45Ny0uNjcgMS42NS0xLjc3IDEuNjUtMi43OSAwLTIuMjYtMS43NS00LTQtNEg3djE0aDcuMDRjMi4wOSAwIDMuNzEtMS43IDMuNzEtMy43OSAwLTEuNTItLjg2LTIuODItMi4xNS0zLjQyek0xMCA2LjVoM2MuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41aC0zdi0zem0zLjUgOUgxMHYtM2gzLjVjLjgzIDAgMS41LjY3IDEuNSAxLjVzLS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0Q2xlYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjI3IDUgMiA2LjI3bDYuOTcgNi45N0w2LjUgMTloM2wxLjU3LTMuNjZMMTYuNzMgMjEgMTggMTkuNzMgMy41NSA1LjI3IDMuMjcgNXpNNiA1di4xOEw4LjgyIDhoMi40bC0uNzIgMS42OCAyLjEgMi4xTDE0LjIxIDhIMjBWNUg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRDb2xvckZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41NiA4Ljk0IDcuNjIgMCA2LjIxIDEuNDFsMi4zOCAyLjM4LTUuMTUgNS4xNWExLjQ5IDEuNDkgMCAwIDAgMCAyLjEybDUuNSA1LjVjLjI5LjI5LjY4LjQ0IDEuMDYuNDRzLjc3LS4xNSAxLjA2LS40NGw1LjUtNS41Yy41OS0uNTguNTktMS41MyAwLTIuMTJ6TTUuMjEgMTAgMTAgNS4yMSAxNC43OSAxMEg1LjIxek0xOSAxMS41cy0yIDIuMTctMiAzLjVjMCAxLjEuOSAyIDIgMnMyLS45IDItMmMwLTEuMzMtMi0zLjUtMi0zLjV6TTIgMjBoMjB2NEgydi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRDb2xvclJlc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxNGMwLTQtNi0xMC44LTYtMTAuOHMtMS4zMyAxLjUxLTIuNzMgMy41Mmw4LjU5IDguNTljLjA5LS40Mi4xNC0uODYuMTQtMS4zMXptLS44OCAzLjEyTDEyLjUgMTIuNSA1LjI3IDUuMjcgNCA2LjU1bDMuMzIgMy4zMkM2LjU1IDExLjMyIDYgMTIuNzkgNiAxNGMwIDMuMzEgMi42OSA2IDYgNiAxLjUyIDAgMi45LS41NyAzLjk2LTEuNWwyLjYzIDIuNjMgMS4yNy0xLjI3LTIuNzQtMi43NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0Q29sb3JUZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyMGgyMHY0SDJ2LTR6bTMuNDktM2gyLjQybDEuMjctMy41OGg1LjY1TDE2LjA5IDE3aDIuNDJMMTMuMjUgM2gtMi41TDUuNDkgMTd6bTQuNDItNS42MSAyLjAzLTUuNzloLjEybDIuMDMgNS43OUg5LjkxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRJbmRlbnREZWNyZWFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE3aDEwdi0ySDExdjJ6bS04LTUgNCA0VjhsLTQgNHptMCA5aDE4di0ySDN2MnpNMyAzdjJoMThWM0gzem04IDZoMTBWN0gxMXYyem0wIDRoMTB2LTJIMTF2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0SW5kZW50SW5jcmVhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIxaDE4di0ySDN2MnpNMyA4djhsNC00LTQtNHptOCA5aDEwdi0ySDExdjJ6TTMgM3YyaDE4VjNIM3ptOCA2aDEwVjdIMTF2MnptMCA0aDEwdi0ySDExdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdEl0YWxpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDR2M2gyLjIxbC0zLjQyIDhINnYzaDh2LTNoLTIuMjFsMy40Mi04SDE4VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdExpbmVTcGFjaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA3aDIuNUw1IDMuNSAxLjUgN0g0djEwSDEuNUw1IDIwLjUgOC41IDE3SDZWN3ptNC0ydjJoMTJWNUgxMHptMCAxNGgxMnYtMkgxMHYyem0wLTZoMTJ2LTJIMTB2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0TGlzdEJ1bGxldGVkQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0zIDUuNWgtMi41VjIxaC0xdi0yLjVIMTV2LTFoMi41VjE1aDF2Mi41SDIxdjF6TTcgNWgxM3YySDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMy41XCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMUg3djJoNi4xMWMxLjI2LTEuMjQgMi45OS0yIDQuODktMnpNNyAxN3YyaDQuMDhjLS4wNS0uMzMtLjA4LS42Ni0uMDgtMXMuMDMtLjY3LjA4LTFIN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIzLjVcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIzLjVcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdExpc3RCdWxsZXRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxMC41Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptMC02Yy0uODMgMC0xLjUuNjctMS41IDEuNVMzLjE3IDcuNSA0IDcuNSA1LjUgNi44MyA1LjUgNiA0LjgzIDQuNSA0IDQuNXptMCAxMmMtLjgzIDAtMS41LjY4LTEuNSAxLjVzLjY4IDEuNSAxLjUgMS41IDEuNS0uNjggMS41LTEuNS0uNjctMS41LTEuNS0xLjV6TTcgMTloMTR2LTJIN3Yyem0wLTZoMTR2LTJIN3Yyem0wLTh2MmgxNFY1SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdExpc3ROdW1iZXJlZFJ0bCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE3aDJ2LjVoLTF2MWgxdi41aC0ydjFoM3YtNGgtM3ptMS05aDFWNGgtMnYxaDF6bS0xIDNoMS44TDE4IDEzLjF2LjloM3YtMWgtMS44bDEuOC0yLjFWMTBoLTN6TTIgNWgxNHYySDJ6bTAgMTJoMTR2Mkgyem0wLTZoMTR2MkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRMaXN0TnVtYmVyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE3aDJ2LjVIM3YxaDF2LjVIMnYxaDN2LTRIMnYxem0xLTloMVY0SDJ2MWgxdjN6bS0xIDNoMS44TDIgMTMuMXYuOWgzdi0xSDMuMkw1IDEwLjlWMTBIMnYxem01LTZ2MmgxNFY1SDd6bTAgMTRoMTR2LTJIN3Yyem0wLTZoMTR2LTJIN3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRQYWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRWM2MwLS41NS0uNDUtMS0xLTFINWMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xVjZoMXY0SDl2MTFjMCAuNTUuNDUgMSAxIDFoMmMuNTUgMCAxLS40NSAxLTF2LTloOFY0aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRRdW90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTdoM2wyLTRWN0g1djZoM3ptOCAwaDNsMi00VjdoLTZ2NmgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRTaGFwZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyA3VjFoLTZ2Mkg3VjFIMXY2aDJ2MTBIMXY2aDZ2LTJoMTB2Mmg2di02aC0yVjdoMnpNMyAzaDJ2MkgzVjN6bTIgMThIM3YtMmgydjJ6bTEyLTJIN3YtMkg1VjdoMlY1aDEwdjJoMnYxMGgtMnYyem00IDJoLTJ2LTJoMnYyek0xOSA1VjNoMnYyaC0yem0tNS4yNyA5aC0zLjQ5bC0uNzMgMkg3Ljg5bDMuNC05aDEuNGwzLjQxIDloLTEuNjNsLS43NC0yem0tMy4wNC0xLjI2aDIuNjFMMTIgOC45MWwtMS4zMSAzLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRTaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0djNoNXYxMmgzVjdoNVY0SDl6bS02IDhoM3Y3aDN2LTdoM1Y5SDN2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0U3RyaWtldGhyb3VnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE5aDR2LTNoLTR2M3pNNSA0djNoNXYzaDRWN2g1VjRINXpNMyAxNGgxOHYtMkgzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdFRleHRkaXJlY3Rpb25MVG9SIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMHY1aDJWNGgydjExaDJWNGgyVjJIOUM2Ljc5IDIgNSAzLjc5IDUgNnMxLjc5IDQgNCA0em0xMiA4LTQtNHYzSDV2MmgxMnYzbDQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0VGV4dGRpcmVjdGlvblJUb0wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxMHY1aDJWNGgydjExaDJWNGgyVjJoLThDNy43OSAyIDYgMy43OSA2IDZzMS43OSA0IDQgNHptLTIgN3YtM2wtNCA0IDQgNHYtM2gxMnYtMkg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRVbmRlcmxpbmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTdjMy4zMSAwIDYtMi42OSA2LTZWM2gtMi41djhjMCAxLjkzLTEuNTcgMy41LTMuNSAzLjVTOC41IDEyLjkzIDguNSAxMVYzSDZ2OGMwIDMuMzEgMi42OSA2IDYgNnptLTcgMnYyaDE0di0ySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZ1bmN0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRINnYybDYuNSA2TDYgMTh2MmgxMnYtM2gtN2w1LTUtNS01aDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhlaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDYuOTloM0wxMiAzIDggNi45OWgzdjEwLjAySDhMMTIgMjFsNC0zLjk5aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZXhhZ29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMiAzSDYuOGwtNS4yIDkgNS4yIDloMTAuNGw1LjItOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGlnaGxpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNiAxNCAzIDN2NWg2di01bDMtM1Y5SDZ2NXptNS0xMmgydjNoLTJWMnpNMy41IDUuODhsMS40MS0xLjQxIDIuMTIgMi4xMkw1LjYyIDggMy41IDUuODh6bTEzLjQ2LjcxIDIuMTItMi4xMiAxLjQxIDEuNDFMMTguMzggOGwtMS40Mi0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3Jpem9udGFsRGlzdHJpYnV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMjJIMlYyaDJ2MjB6TTIyIDJoLTJ2MjBoMlYyem0tOC41IDVoLTN2MTBoM1Y3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3Jpem9udGFsUnVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDExaDE2djJINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW5zZXJ0Q2hhcnRPdXRsaW5lZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTdIN3YtN2gydjd6bTQgMGgtMlY3aDJ2MTB6bTQgMGgtMnYtNGgydjR6bTIuNSAyLjFoLTE1VjVoMTV2MTQuMXptMC0xNi4xaC0xNWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnNlcnRDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnNlcnRDb21tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE0bDQgNFY0YzAtMS4xLS45LTItMi0yem0tMiAxMkg2di0yaDEydjJ6bTAtM0g2VjloMTJ2MnptMC0zSDZWNmgxMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnNlcnREcml2ZUZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDJjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZINnptNyA3VjMuNUwxOC41IDlIMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluc2VydEVtb3RpY29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0zLjUtOWMuODMgMCAxLjUtLjY3IDEuNS0xLjVTMTYuMzMgOCAxNS41IDggMTQgOC42NyAxNCA5LjVzLjY3IDEuNSAxLjUgMS41em0tNyAwYy44MyAwIDEuNS0uNjcgMS41LTEuNVM5LjMzIDggOC41IDggNyA4LjY3IDcgOS41IDcuNjcgMTEgOC41IDExem0zLjUgNi41YzIuMzMgMCA0LjMxLTEuNDYgNS4xMS0zLjVINi44OWMuOCAyLjA0IDIuNzggMy41IDUuMTEgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnNlcnRJbnZpdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTJoLTV2NWg1di01ek0xNiAxdjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMmgtMVYxaC0yem0zIDE4SDVWOGgxNHYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW5zZXJ0TGluayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnNlcnRQYWdlQnJlYWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0ydi0zSDR2M3pNMjAgOGwtNi02SDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2N0gyMFY4em0tNyAxVjMuNUwxOC41IDlIMTN6TTkgMTNoNnYySDl6TTE3IDEzaDZ2MmgtNnpNMSAxM2g2djJIMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW5zZXJ0UGhvdG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxOVY1YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ6TTguNSAxMy41bDIuNSAzLjAxTDE0LjUgMTJsNC41IDZINWwzLjUtNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaW5lQXhpcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDcuNDMtMS40MS0xLjQxLTQuMDMgNC41M0w5LjUgNCAyIDExLjUxbDEuNSAxLjUgNi4xNC02LjE1IDUuNTkgNS4xOC0xLjczIDEuOTUtNC00TDIgMTcuNSAzLjUgMTlsNi02LjAxIDQgNCAzLjE5LTMuNTkgMy45IDMuNjFMMjIgMTUuNmwtMy45OC0zLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpbmVhclNjYWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNSA5LjVjLTEuMDMgMC0xLjkuNjItMi4yOSAxLjVoLTIuOTJjLS4zOS0uODgtMS4yNi0xLjUtMi4yOS0xLjVzLTEuOS42Mi0yLjI5IDEuNUg2Ljc5Yy0uMzktLjg4LTEuMjYtMS41LTIuMjktMS41YTIuNSAyLjUgMCAwIDAgMCA1YzEuMDMgMCAxLjktLjYyIDIuMjktMS41aDIuOTJjLjM5Ljg4IDEuMjYgMS41IDIuMjkgMS41czEuOS0uNjIgMi4yOS0xLjVoMi45MmMuMzkuODggMS4yNiAxLjUgMi4yOSAxLjVhMi41IDIuNSAwIDAgMCAwLTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcmdpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM3YxOGgxOFYzSDN6bTE2IDE2SDVWNWgxNHYxNHpNMTEgN2gydjJoLTJ6TTcgN2gydjJIN3ptOCAwaDJ2MmgtMnptLTggNGgydjJIN3ptNCAwaDJ2MmgtMnptNCAwaDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWVyZ2VUeXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMjAuNDEgMTguNDEgMTkgMTUgMTUuNTkgMTMuNTkgMTcgMTcgMjAuNDF6TTcuNSA4SDExdjUuNTlMNS41OSAxOSA3IDIwLjQxbDYtNlY4aDMuNUwxMiAzLjUgNy41IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vZGVDb21tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTkgNGMwLTEuMS0uODktMi0xLjk5LTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNGw0IDQtLjAxLTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb2RlRWRpdE91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1ek0yMC43MSA1LjYzbC0yLjM0LTIuMzRhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vZGVFZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzIDE3LjI1ek0yMC43MSA3LjA0YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zNC0yLjM0YS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1ek0yMC43MSA1LjYzbC0yLjM0LTIuMzRhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vbmV0aXphdGlvbk9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMS40MSAxNi4wOVYyMGgtMi42N3YtMS45M2MtMS43MS0uMzYtMy4xNi0xLjQ2LTMuMjctMy40aDEuOTZjLjEgMS4wNS44MiAxLjg3IDIuNjUgMS44NyAxLjk2IDAgMi40LS45OCAyLjQtMS41OSAwLS44My0uNDQtMS42MS0yLjY3LTIuMTQtMi40OC0uNi00LjE4LTEuNjItNC4xOC0zLjY3IDAtMS43MiAxLjM5LTIuODQgMy4xMS0zLjIxVjRoMi42N3YxLjk1YzEuODYuNDUgMi43OSAxLjg2IDIuODUgMy4zOUgxNC4zYy0uMDUtMS4xMS0uNjQtMS44Ny0yLjIyLTEuODctMS41IDAtMi40LjY4LTIuNCAxLjY0IDAgLjg0LjY1IDEuMzkgMi42NyAxLjkxczQuMTggMS4zOSA0LjE4IDMuOTFjLS4wMSAxLjgzLTEuMzggMi44My0zLjEyIDMuMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vbmV5T2ZmQ3NyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41MyA3LjQzYy40Mi0uMzEuOTMtLjQ3IDEuNTQtLjQ3czEuMTEuMTYgMS41LjQ5Yy4zOS4zMi42NS43Ljc5IDEuMTJsMS44OS0uOGMtLjI0LS43MS0uNzEtMS4zNS0xLjQtMS45Mi0uNS0uNC0xLjEyLS42NS0xLjg1LS43N1YzaC0ydjIuMTFjLS40MS4wOC0uNzkuMjEtMS4xNC4zOS0uMzUuMTgtLjY0LjM5LS45LjYzbDEuNDMgMS40M2MuMDQtLjA0LjA5LS4wOS4xNC0uMTN6TTIuODEgMi44MSAxLjM5IDQuMjJsMTIuMzUgMTIuMzVjLS40My4yOC0uOTUuNDMtMS41NS40My0uNzEgMC0xLjMyLS4yMy0xLjgzLS43LS41LS40Ny0uODYtMS4wNy0xLjA2LTEuODFsLTEuOTguOGMuMzQgMS4xNy45NSAyLjA4IDEuODMgMi43My41Ny40MiAxLjE5LjY4IDEuODUuODNWMjFoMnYtMi4wOGMuNDQtLjA3Ljg3LS4xNyAxLjI5LS4zNS4zNC0uMTQuNjQtLjMyLjkyLS41M2w0LjU3IDQuNTcgMS40MS0xLjQxTDIuODEgMi44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9uZXlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDYuOWMxLjc4IDAgMi40NC44NSAyLjUgMi4xaDIuMjFjLS4wNy0xLjcyLTEuMTItMy4zLTMuMjEtMy44MVYzaC0zdjIuMTZjLS41My4xMi0xLjAzLjMtMS40OC41NGwxLjQ3IDEuNDdjLjQxLS4xNy45MS0uMjcgMS41MS0uMjd6TTUuMzMgNC4wNiA0LjA2IDUuMzMgNy41IDguNzdjMCAyLjA4IDEuNTYgMy4yMSAzLjkxIDMuOTFsMy41MSAzLjUxYy0uMzQuNDgtMS4wNS45MS0yLjQyLjkxLTIuMDYgMC0yLjg3LS45Mi0yLjk4LTIuMWgtMi4yYy4xMiAyLjE5IDEuNzYgMy40MiAzLjY4IDMuODNWMjFoM3YtMi4xNWMuOTYtLjE4IDEuODItLjU1IDIuNDUtMS4xMmwyLjIyIDIuMjIgMS4yNy0xLjI3TDUuMzMgNC4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW92ZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDExYzAgMi40NSAxLjc2IDQuNDcgNC4wOCA0LjkxbC0xLjQ5LTEuNDlMNyAxM2w0IDQuMDFMNyAyMWwtMS40MS0xLjQxIDEuNTgtMS41OHYtLjA2QTcuMDA3IDcuMDA3IDAgMCAxIDEgMTFjMC0zLjg3IDMuMTMtNyA3LTdoM3YySDhjLTIuNzYgMC01IDIuMjQtNSA1ek0yMiAxMVY0aC05djdoOXptLTItMmgtNVY2aDV2M3pNMTMgMTNoOXY3aC05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3ZlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzYzAtMi40NSAxLjc2LTQuNDcgNC4wOC00LjkxbC0xLjQ5IDEuNUw3IDExbDQtNC4wMUw3IDMgNS41OSA0LjQxbDEuNTggMS41OHYuMDZBNy4wMDcgNy4wMDcgMCAwIDAgMSAxM2MwIDMuODcgMy4xMyA3IDcgN2gzdi0ySDhjLTIuNzYgMC01LTIuMjQtNS01ek0xMyAxM3Y3aDl2LTdoLTl6bTcgNWgtNXYtM2g1djN6TTEzIDRoOXY3aC05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNdWx0aWxpbmVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDYuOTItMS40MS0xLjQxLTIuODUgMy4yMUMxNS42OCA2LjQgMTIuODMgNSA5LjYxIDUgNi43MiA1IDQuMDcgNi4xNiAyIDhsMS40MiAxLjQyQzUuMTIgNy45MyA3LjI3IDcgOS42MSA3YzIuNzQgMCA1LjA5IDEuMjYgNi43NyAzLjI0bC0yLjg4IDMuMjQtNC00TDIgMTYuOTlsMS41IDEuNSA2LTYuMDEgNCA0IDQuMDUtNC41NWMuNzUgMS4zNSAxLjI1IDIuOSAxLjQ0IDQuNTVIMjFjLS4yMi0yLjMtLjk1LTQuMzktMi4wNC02LjE0TDIyIDYuOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vdGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE4aDEydi0ySDN2MnpNMyA2djJoMThWNkgzem0wIDdoMTh2LTJIM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROdW1iZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuNSAxMCAuNS0yaC00bDEtNGgtMmwtMSA0aC00bDEtNGgtMkw5IDhINWwtLjUgMmg0bC0xIDRoLTRMMyAxNmg0bC0xIDRoMmwxLTRoNGwtMSA0aDJsMS00aDRsLjUtMmgtNGwxLTRoNHptLTcgNGgtNGwxLTRoNGwtMSA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYWRkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzdjE4aDE4VjNIM3ptMTYgMTZINVY1aDE0djE0ek0xMSA3aDJ2MmgtMnpNNyA3aDJ2Mkg3em04IDBoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZW50YWdvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIgOSA0IDEyaDEybDQtMTItMTAtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGllQ2hhcnRPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6bTEgMi4wN2MzLjYxLjQ1IDYuNDggMy4zMyA2LjkzIDYuOTNIMTNWNC4wN3pNNCAxMmMwLTQuMDYgMy4wNy03LjQ0IDctNy45M3YxNS44N2MtMy45My0uNS03LTMuODgtNy03Ljk0em05IDcuOTNWMTNoNi45M0E4LjAwMiA4LjAwMiAwIDAgMSAxMyAxOS45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGllQ2hhcnRPdXRsaW5lZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6bTEgMi4wN2MzLjYxLjQ1IDYuNDggMy4zMyA2LjkzIDYuOTNIMTNWNC4wN3pNNCAxMmMwLTQuMDYgMy4wNy03LjQ0IDctNy45M3YxNS44N2MtMy45My0uNS03LTMuODgtNy03Ljk0em05IDcuOTNWMTNoNi45M0E4LjAwMiA4LjAwMiAwIDAgMSAxMyAxOS45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGllQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDJ2MjBjLTUuMDctLjUtOS00Ljc5LTktMTBzMy45My05LjUgOS0xMHptMi4wMyAwdjguOTlIMjJjLS40Ny00Ljc0LTQuMjQtOC41Mi04Ljk3LTguOTl6bTAgMTEuMDFWMjJjNC43NC0uNDcgOC41LTQuMjUgOC45Ny04Ljk5aC04Ljk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQb2x5bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE2djEuMjZsLTYtM3YtMy4xN0wxMS43IDhIMTZWMmgtNnY0LjlMNy4zIDEwSDN2Nmg1bDcgMy41VjIyaDZ2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvc3RBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxOS4yMkg1VjdoN1Y1SDVjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTdoLTJ2Ny4yMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMmgtMnYzaC0zYy4wMS4wMSAwIDIgMCAyaDN2Mi45OWMuMDEuMDEgMiAwIDIgMFY3aDNWNWgtM1Yyek03IDloOHYySDd6TTcgMTJ2Mmg4di0yaC0zek03IDE1aDh2Mkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQdWJsaXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA0djJoMTRWNEg1em0wIDEwaDR2Nmg2di02aDRsLTctNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFF1ZXJ5U3RhdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS44OCAxOC40N2MuNDQtLjcuNy0xLjUxLjctMi4zOSAwLTIuNDktMi4wMS00LjUtNC41LTQuNXMtNC41IDIuMDEtNC41IDQuNSAyLjAxIDQuNSA0LjQ5IDQuNWMuODggMCAxLjctLjI2IDIuMzktLjdMMjEuNTggMjMgMjMgMjEuNThsLTMuMTItMy4xMXptLTMuOC4xMWEyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXptLS4zNi04LjVjLS43NC4wMi0xLjQ1LjE4LTIuMS40NWwtLjU1LS44My0zLjggNi4xOC0zLjAxLTMuNTItMy42MyA1LjgxTDEgMTdsNS04IDMgMy41TDEzIDZsMi43MiA0LjA4em0yLjU5LjVjLS42NC0uMjgtMS4zMy0uNDUtMi4wNS0uNDlMMjEuMzggMiAyMyAzLjE4bC00LjY5IDcuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVjdGFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0aDIwdjE2SDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjYXR0ZXJQbG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjdcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiM1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiM1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2LjZcIixcImN5XCI6XCIxNy42XCIsXCJyXCI6XCIzXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjaGVtYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDl2MmgtM1Y5SDguNVY3SDExVjFINHY2aDIuNXYySDR2NmgyLjV2Mkg0djZoN3YtNkg4LjV2LTJIMTF2LTJoM3YyaDdWOWgtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2NvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMmgxLjV2M2wyLTNoMS43bC0yIDMgMiAzaC0xLjdsLTItM3YzSDEyVjV6TTcgNy4yNWgyLjVWNi41SDdWNWg0djMuNzVIOC41di43NUgxMVYxMUg3VjcuMjV6TTE5IDEzbC02IDYtNC00LTQgNHYtMi41bDQtNCA0IDQgNi02VjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaGFwZUxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDExYzIuNzYgMCA1LTIuMjQgNS01UzguNzYgMSA2IDEgMSAzLjI0IDEgNnMyLjI0IDUgNSA1ek0yMSAxNGgtNWMtMS4xIDAtMiAuOS0yIDJ2NWMwIDEuMS45IDIgMiAyaDVjMS4xIDAgMi0uOSAyLTJ2LTVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjcxIDcuN2MuNC4xOS44My4zIDEuMjkuMyAxLjY1IDAgMy0xLjM1IDMtM3MtMS4zNS0zLTMtMy0zIDEuMzUtMyAzYzAgLjQ2LjExLjg5LjMgMS4yOUw2LjI5IDE2LjNjLS40LS4xOS0uODMtLjMtMS4yOS0uMy0xLjY1IDAtMyAxLjM1LTMgM3MxLjM1IDMgMyAzIDMtMS4zNSAzLTNjMC0uNDYtLjExLS44OS0uMy0xLjI5TDE3LjcxIDcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2hvcnRUZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA5aDE2djJINFY5em0wIDRoMTB2Mkg0di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaG93Q2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0zLjUgMTguNDkgNi02LjAxIDQgNEwyMiA2LjkybC0xLjQxLTEuNDEtNy4wOSA3Ljk3LTQtNEwyIDE2Ljk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGFjZUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOXY0SDZWOUg0djZoMTZWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzaDE4djE4SDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0YWNrZWRMaW5lQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yIDE5Ljk5IDcuNS03LjUxIDQgNCA3LjA5LTcuOTdMMjIgOS45MmwtOC41IDkuNTYtNC00LTYgNi4wMS0xLjUtMS41em0xLjUtNC41IDYtNi4wMSA0IDRMMjIgMy45MmwtMS40MS0xLjQxLTcuMDkgNy45Ny00LTRMMiAxMy45OWwxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdHJpa2V0aHJvdWdoUyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuODUgNy4wOEM2Ljg1IDQuMzcgOS40NSAzIDEyLjI0IDNjMS42NCAwIDMgLjQ5IDMuOSAxLjI4Ljc3LjY1IDEuNDYgMS43MyAxLjQ2IDMuMjRoLTMuMDFjMC0uMzEtLjA1LS41OS0uMTUtLjg1LS4yOS0uODYtMS4yLTEuMjgtMi4yNS0xLjI4LTEuODYgMC0yLjM0IDEuMDItMi4zNCAxLjcgMCAuNDguMjUuODguNzQgMS4yMS4zOC4yNS43Ny40OCAxLjQxLjdINy4zOWMtLjIxLS4zNC0uNTQtLjg5LS41NC0xLjkyek0yMSAxMnYtMkgzdjJoOS42MmMxLjE1LjQ1IDEuOTYuNzUgMS45NiAxLjk3IDAgMS0uODEgMS42Ny0yLjI4IDEuNjctMS41NCAwLTIuOTMtLjU0LTIuOTMtMi41MUg2LjRjMCAuNTUuMDggMS4xMy4yNCAxLjU4LjgxIDIuMjkgMy4yOSAzLjMgNS42NyAzLjMgMi4yNyAwIDUuMy0uODkgNS4zLTQuMDUgMC0uMy0uMDEtMS4xNi0uNDgtMS45NEgyMVYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3Vic2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMThoLTJ2MWgzdjFoLTR2LTJjMC0uNTUuNDUtMSAxLTFoMnYtMWgtM3YtMWgzYy41NSAwIDEgLjQ1IDEgMXYxYzAgLjU1LS40NSAxLTEgMXpNNS44OCAxOGgyLjY2bDMuNC01LjQyaC4xMmwzLjQgNS40MmgyLjY2bC00LjY1LTcuMjdMMTcuODEgNGgtMi42OGwtMy4wNyA0Ljk5aC0uMTJMOC44NSA0SDYuMTlsNC4zMiA2LjczTDUuODggMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN1cGVyc2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgN2gtMnYxaDN2MWgtNFY3YzAtLjU1LjQ1LTEgMS0xaDJWNWgtM1Y0aDNjLjU1IDAgMSAuNDUgMSAxdjFjMCAuNTUtLjQ1IDEtMSAxek01Ljg4IDIwaDIuNjZsMy40LTUuNDJoLjEybDMuNCA1LjQyaDIuNjZsLTQuNjUtNy4yN0wxNy44MSA2aC0yLjY4bC0zLjA3IDQuOTloLS4xMkw4Ljg1IDZINi4xOWw0LjMyIDYuNzNMNS44OCAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGFibGVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTAuMDJoNVYyMWgtNXpNMTcgMjFoM2MxLjEgMCAyLS45IDItMnYtOWgtNXYxMXptMy0xOEg1Yy0xLjEgMC0yIC45LTIgMnYzaDE5VjVjMC0xLjEtLjktMi0yLTJ6TTMgMTljMCAxLjEuOSAyIDIgMmgzVjEwSDN2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGFibGVSb3dzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOEgzVjRoMTh2NHptMCAySDN2NGgxOHYtNHptMCA2SDN2NGgxOHYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dERlY3JlYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjk5IDE5aDIuNDJsMS4yNy0zLjU4aDUuNjVMMTEuNTkgMTloMi40Mkw4Ljc1IDVoLTIuNUwuOTkgMTl6bTQuNDItNS42MUw3LjQ0IDcuNmguMTJsMi4wMyA1Ljc5SDUuNDF6TTIzIDExdjJoLTh2LTJoOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dEZpZWxkcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNSA0djNoNXYxMmgzVjdoNVY0aC0xM3ptMTkgNWgtOXYzaDN2N2gzdi03aDNWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dEluY3JlYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjk5IDE5aDIuNDJsMS4yNy0zLjU4aDUuNjVMMTEuNTkgMTloMi40Mkw4Ljc1IDVoLTIuNUwuOTkgMTl6bTQuNDItNS42MUw3LjQ0IDcuNmguMTJsMi4wMyA1Ljc5SDUuNDF6TTIwIDExaDN2MmgtM3YzaC0ydi0zaC0zdi0yaDNWOGgydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRpdGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDR2M2g1LjV2MTJoM1Y3SDE5VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFR5cGVTcGVjaW1lbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTMuMzcgMTIuNS0uOC0yLjNIMTIuMmwtLjgyIDIuM0g5LjgxbDMuMzgtOWgxLjYxbDMuMzggOWgtMS41NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuOTYgNy4xNy0xLjMxIDMuNzJoMi42OWwtMS4zLTMuNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZlcnRpY2FsQWxpZ25Cb3R0b20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxM2gtM1YzaC0ydjEwSDhsNCA0IDQtNHpNNCAxOXYyaDE2di0ySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZlcnRpY2FsQWxpZ25DZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE5aDN2NGgydi00aDNsLTQtNC00IDR6bTgtMTRoLTNWMWgtMnY0SDhsNCA0IDQtNHpNNCAxMXYyaDE2di0ySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZlcnRpY2FsQWxpZ25Ub3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDExaDN2MTBoMlYxMWgzbC00LTQtNCA0ek00IDN2MmgxNlYzSDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZlcnRpY2FsRGlzdHJpYnV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDJ2MkgyVjJoMjB6TTcgMTAuNXYzaDEwdi0zSDd6TTIgMjB2MmgyMHYtMkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXcmFwVGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTloNnYtMkg0djJ6TTIwIDVINHYyaDE2VjV6bS0zIDZINHYyaDEzLjI1YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMkgxNXYtMmwtMyAzIDMgM3YtMmgyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcHByb3ZhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTZ2NmgxNnYtNmMwLTEuMS0uOS0yLTItMkg2Yy0xLjEgMC0yIC45LTIgMnptMTQgMkg2di0yaDEydjJ6TTEyIDJDOS4yNCAyIDcgNC4yNCA3IDdsNSA3IDUtN2MwLTIuNzYtMi4yNC01LTUtNXptMCA5TDkgN2MwLTEuNjYgMS4zNC0zIDMtM3MzIDEuMzQgMyAzbC0zIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF0dGFjaEVtYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTBWNGMwLTEuMS0uOS0yLTItMkgzYy0xLjEgMC0xLjk5LjktMS45OSAyTDEgMTZjMCAxLjEuOSAyIDIgMmgxMXYtNWMwLTEuNjYgMS4zNC0zIDMtM2g0em0tMTAgMUwzIDZWNGw4IDUgOC01djJsLTggNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTR2NGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJ2LTQuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVYxOGgydi00LjVhMi41IDIuNSAwIDAgMC01IDBWMThjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNHYtNGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXR0YWNobWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxMi41QzIgOS40NiA0LjQ2IDcgNy41IDdIMThjMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDRIOS41YTIuNSAyLjUgMCAwIDEgMC01SDE3djJIOS40MWMtLjU1IDAtLjU1IDEgMCAxSDE4YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMkg3LjVDNS41NyA5IDQgMTAuNTcgNCAxMi41UzUuNTcgMTYgNy41IDE2SDE3djJINy41QzQuNDYgMTggMiAxNS41NCAyIDEyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3VkQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNC41IDE0SDhjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTNsLjE0LjAxQTMuOTggMy45OCAwIDAgMSAxMiA3YzIuMjEgMCA0IDEuNzkgNCA0aC41YTIuNSAyLjUgMCAwIDEgMCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbG91ZERvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4zNSAxMC4wNEE3LjQ5IDcuNDkgMCAwIDAgMTIgNEM5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0QTUuOTk0IDUuOTk0IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTEwIDE3bC0zLjUtMy41IDEuNDEtMS40MUwxMCAxNC4xNyAxNS4xOCA5bDEuNDEgMS40MUwxMCAxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xvdWREb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDRBNS45OTQgNS45OTQgMCAwIDAgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTcgMTNsLTUgNS01LTVoM1Y5aDR2NGgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbG91ZE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0Yy0xLjQ4IDAtMi44NS40My00LjAxIDEuMTdsMS40NiAxLjQ2YTUuNDk3IDUuNDk3IDAgMCAxIDguMDUgNC44N3YuNUgxOWMxLjY2IDAgMyAxLjM0IDMgMyAwIDEuMTMtLjY0IDIuMTEtMS41NiAyLjYybDEuNDUgMS40NUMyMy4xNiAxOC4xNiAyNCAxNi42OCAyNCAxNWMwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMyA1LjI3bDIuNzUgMi43NEMyLjU2IDguMTUgMCAxMC43NyAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDExLjczbDIgMkwyMSAyMC43MyA0LjI3IDQgMyA1LjI3ek03LjczIDEwbDggOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00aDEuNzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3VkUXVldWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4zNSAxMC4wNEE3LjQ5IDcuNDkgMCAwIDAgMTIgNEM5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0QTUuOTk0IDUuOTk0IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE5IDE4SDZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTRoLjcxQzcuMzcgNy42OSA5LjQ4IDYgMTIgNmMzLjA0IDAgNS41IDIuNDYgNS41IDUuNXYuNUgxOWMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xvdWRTeW5jIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuNSAxNC45OGMtLjAyIDAtLjAzIDAtLjA1LjAxQTMuNDkgMy40OSAwIDAgMCAxOCAxMmMtMS40IDAtMi42LjgzLTMuMTYgMi4wMkEyLjk4OCAyLjk4OCAwIDAgMCAxMiAxN2MwIDEuNjYgMS4zNCAzIDMgM2w2LjUtLjAyYTIuNSAyLjUgMCAwIDAgMC01ek0xMCA0LjI2djIuMDlDNy42NyA3LjE4IDYgOS4zOSA2IDEyYzAgMS43Ny43OCAzLjM0IDIgNC40NFYxNGgydjZINHYtMmgyLjczQTcuOTQyIDcuOTQyIDAgMCAxIDQgMTJjMC0zLjczIDIuNTUtNi44NSA2LTcuNzR6TTIwIDZoLTIuNzNhNy45OCA3Ljk4IDAgMCAxIDIuNjYgNWgtMi4wMmMtLjIzLTEuMzYtLjkzLTIuNTUtMS45MS0zLjQ0VjEwaC0yVjRoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbG91ZFVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDRBNS45OTQgNS45OTQgMCAwIDAgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTQgMTN2NGgtNHYtNEg3bDUtNSA1IDVoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMzUgMTAuMDRBNy40OSA3LjQ5IDAgMCAwIDEyIDRDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNEE1Ljk5NCA1Ljk5NCAwIDAgMCAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcmVhdGVOZXdGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS0xIDhoLTN2M2gtMnYtM2gtM3YtMmgzVjloMnYzaDN2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlmZmVyZW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDIzSDRjLTEuMSAwLTItLjktMi0yVjdoMnYxNGgxNHYyek0xNSAxSDhjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNiAxN2MwIDEuMS44OSAyIDEuOTkgMkgxOWMxLjEgMCAyLS45IDItMlY3bC02LTZ6bTEuNSAxNGgtNnYtMmg2djJ6bTAtNmgtMnYyaC0yVjloLTJWN2gyVjVoMnYyaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG93bmxvYWREb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMTMgNS40MSAxOC43MiA0bC05LjE5IDkuMTktNC4yNS00LjI0LTEuNDEgMS40MSA1LjY2IDUuNjZ6TTUgMThoMTR2Mkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb3dubG9hZEZvck9mZmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwIDEwLTQuNDkgMTAtMTBTMTcuNTEgMiAxMiAyem0tMSA4VjZoMnY0aDNsLTQgNC00LTRoM3ptNiA3SDd2LTJoMTB2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDIwaDE0di0ySDV2MnpNMTkgOWgtNFYzSDl2Nkg1bDcgNyA3LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvd25sb2FkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMzIgNC4yNkE5Ljk0OSA5Ljk0OSAwIDAgMCAxMyAyLjA1djIuMDJjMS40Ni4xOCAyLjc5Ljc2IDMuOSAxLjYybDEuNDItMS40M3pNMTkuOTMgMTFoMi4wMmMtLjItMi4wMS0xLTMuODQtMi4yMS01LjMyTDE4LjMxIDcuMWE3Ljk0MSA3Ljk0MSAwIDAgMSAxLjYyIDMuOXptLTEuNjIgNS45IDEuNDMgMS40M2E5Ljk4MSA5Ljk4MSAwIDAgMCAyLjIxLTUuMzJoLTIuMDJhNy45NDUgNy45NDUgMCAwIDEtMS42MiAzLjg5ek0xMyAxOS45M3YyLjAyYzIuMDEtLjIgMy44NC0xIDUuMzItMi4yMWwtMS40My0xLjQzYy0xLjEuODYtMi40MyAxLjQ0LTMuODkgMS42MnpNMTMgMTJWN2gtMnY1SDdsNSA1IDUtNWgtNHptLTIgNy45M3YyLjAyYy01LjA1LS41LTktNC43Ni05LTkuOTVzMy45NS05LjQ1IDktOS45NXYyLjAyQzcuMDUgNC41NiA0IDcuOTIgNCAxMnMzLjA1IDcuNDQgNyA3LjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcml2ZUZpbGVNb3ZlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0wIDEySDRWOGgxNnYxMHptLTguMDEtOS0xLjQxIDEuNDFMMTIuMTYgMTJIOHYyaDQuMTZsLTEuNTkgMS41OUwxMS45OSAxNyAxNiAxMy4wMSAxMS45OSA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcml2ZUZpbGVNb3ZlUnRsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTggMTEtNC00IDQtNHYzaDR2MmgtNHYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcml2ZUZpbGVNb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tNiAxMnYtM2gtNHYtNGg0VjhsNSA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRHJpdmVGaWxlUmVuYW1lT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjQxIDUuOCAxNy4yIDQuNTljLS43OC0uNzgtMi4wNS0uNzgtMi44MyAwbC0yLjY4IDIuNjhMMyAxNS45NlYyMGg0LjA0bDguNzQtOC43NCAyLjYzLTIuNjNjLjc5LS43OC43OS0yLjA1IDAtMi44M3pNNi4yMSAxOEg1di0xLjIxbDguNjYtOC42NiAxLjIxIDEuMjFMNi4yMSAxOHpNMTEgMjBsNC00aDZ2NEgxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRHJpdmVGb2xkZXJVcGxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjhoMTZ2MTB6TTggMTMuMDFsMS40MSAxLjQxTDExIDEyLjg0VjE3aDJ2LTQuMTZsMS41OSAxLjU5TDE2IDEzLjAxIDEyLjAxIDkgOCAxMy4wMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsZURvd25sb2FkRG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxOGgxNHYySDV2LTJ6bTQuNi0yLjdMNSAxMC43bDItMS45IDIuNiAyLjZMMTcgNGwyIDItOS40IDkuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsZURvd25sb2FkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA2LjE3VjNoNnY2aDRsLTMuNTkgMy41OUw5IDYuMTd6bTEyLjE5IDE1LjAyTDIuODEgMi44MSAxLjM5IDQuMjIgNi4xNyA5SDVsNyA3IC41OS0uNTlMMTUuMTcgMThINXYyaDEyLjE3bDIuNjEgMi42MSAxLjQxLTEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbGVEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsZU9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjg5IDIgMS45OSAySDE1di04aDVWOGwtNi02em0tMSA3VjMuNUwxOC41IDlIMTN6bTQgMTIuNjZWMTZoNS42NnYyaC0yLjI0bDIuOTUgMi45NS0xLjQxIDEuNDFMMTkgMTkuNDF2Mi4yNGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsZVVwbG9hZE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjJsNC43IDQuNjlMNSAxMGgyLjE3TDkgMTEuODNWMTZoNC4xN2wyIDJINXYyaDEyLjE3bDIuNjEgMi42MXpNMTUgMTBoNGwtNy03LTMuMDkgMy4wOUwxNSAxMi4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsZVVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTZoNnYtNmg0bC03LTctNyA3aDR6bS00IDJoMTR2Mkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xkZXJDb3B5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA2SDF2MTNjMCAxLjEuOSAyIDIgMmgxN3YtMkgzVjZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDRoLTdsLTItMkg3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMTVjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xkZXJEZWxldGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA4djEwYzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0ybC4wMS0xMmMwLTEuMS44OS0yIDEuOTktMmg2bDIgMmg4YzEuMSAwIDIgLjkgMiAyem0tNS41IDJWOWgtMnYxSDEydjEuNWgxdjRjMCAuODMuNjcgMS41IDEuNSAxLjVoMmMuODMgMCAxLjUtLjY3IDEuNS0xLjV2LTRoMVYxMGgtMi41em0wIDUuNWgtMnYtNGgydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvbGRlck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg2LjgzbDE0LjkzIDE0LjkzYy4xNS0uMjguMjQtLjU5LjI0LS45M1Y4YzAtMS4xLS45LTItMi0yek0yLjEgMi4xLjY5IDMuNTFsMS41NiAxLjU2Yy0uMTUuMjgtLjI0LjU5LS4yNC45M0wyIDE4YzAgMS4xLjkgMiAyIDJoMTMuMTdsMy4zMSAzLjMxIDEuNDEtMS40MUwyLjEgMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xkZXJPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTJINFY4aDE2djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xkZXJTaGFyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTUgM2MxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTQgOGgtOHYtMWMwLTEuMzMgMi42Ny0yIDQtMnM0IC42NyA0IDJ2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9sZGVyWmlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS0yIDZoLTJ2MmgydjJoLTJ2MmgtMnYtMmgydi0yaC0ydi0yaDJ2LTJoLTJWOGgydjJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJoLThsLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0T3ZlcmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzdjJINVYzaDE0em0tNyA0Yy0zLjg3IDAtNyAzLjEzLTcgN3MzLjEzIDcgNyA3IDctMy4xMyA3LTctMy4xMy03LTctN3ptMCAxMS41Yy0yLjQ5IDAtNC41LTIuMDEtNC41LTQuNVM5LjUxIDkuNSAxMiA5LjVzNC41IDIuMDEgNC41IDQuNS0yLjAxIDQuNS00LjUgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcmlkVmlldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzdjhoOFYzSDN6bTYgNkg1VjVoNHY0em0tNiA0djhoOHYtOEgzem02IDZINXYtNGg0djR6bTQtMTZ2OGg4VjNoLTh6bTYgNmgtNFY1aDR2NHptLTYgNHY4aDh2LThoLTh6bTYgNmgtNHYtNGg0djR6XCJ9LFwiY2hpbGRcIjpbXX1dfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV3c3BhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgMy0xLjY3IDEuNjdMMTguNjcgMyAxNyA0LjY3IDE1LjMzIDNsLTEuNjYgMS42N0wxMiAzbC0xLjY3IDEuNjdMOC42NyAzIDcgNC42NyA1LjMzIDMgMy42NyA0LjY3IDIgM3YxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjN6TTExIDE5SDR2LTZoN3Y2em05IDBoLTd2LTJoN3Yyem0wLTRoLTd2LTJoN3Yyem0wLTRINFY4aDE2djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlcXVlc3RRdW90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptMSAxMGgtNHYxaDNjLjU1IDAgMSAuNDUgMSAxdjNjMCAuNTUtLjQ1IDEtMSAxaC0xdjFoLTJ2LTFIOXYtMmg0di0xaC0zYy0uNTUgMC0xLS40NS0xLTF2LTNjMC0uNTUuNDUtMSAxLTFoMVY5aDJ2MWgydjJ6bS0yLTRWMy41TDE3LjUgOEgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUnVsZUZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yek03LjgzIDE2IDUgMTMuMTdsMS40MS0xLjQxIDEuNDEgMS40MSAzLjU0LTMuNTQgMS40MSAxLjQxTDcuODMgMTZ6bTkuNTgtM0wxOSAxNC41OSAxNy41OSAxNiAxNiAxNC40MSAxNC40MSAxNiAxMyAxNC41OSAxNC41OSAxMyAxMyAxMS40MSAxNC40MSAxMCAxNiAxMS41OSAxNy41OSAxMCAxOSAxMS40MSAxNy40MSAxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU25pcHBldEZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1Ljg4IDEwLjUgMS42MiAxLjYydjMuMzhoLTN2LTVoMS4zOHpNMjIgOHYxMGMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMmwuMDEtMTJjMC0xLjEuODktMiAxLjk5LTJoNmwyIDJoOGMxLjEgMCAyIC45IDIgMnptLTMgMy41TDE2LjUgOUgxM3Y4aDZ2LTUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dFNuaXBwZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC40MSA4LjQxLTQuODMtNC44M2MtLjM3LS4zNy0uODgtLjU4LTEuNDEtLjU4SDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWOS44M2MwLS41My0uMjEtMS4wNC0uNTktMS40MnpNNyA3aDd2Mkg3Vjd6bTEwIDEwSDd2LTJoMTB2MnptMC00SDd2LTJoMTB2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVG9waWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTYgMTBINnYtMmg4djJ6bTQtNEg2di0yaDEydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFVwbG9hZEZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptNCAxOEg2VjRoN3Y1aDV2MTF6TTggMTUuMDFsMS40MSAxLjQxTDExIDE0Ljg0VjE5aDJ2LTQuMTZsMS41OSAxLjU5TDE2IDE1LjAxIDEyLjAxIDExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVcGxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDIwaDE0di0ySDV2MnptMC0xMGg0djZoNnYtNmg0bC03LTctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXb3Jrc3BhY2VzRmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxM2MtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00em02LTEwQzkuOCAzIDggNC44IDggN3MxLjggNCA0IDQgNC0xLjggNC00LTEuOC00LTQtNHptNiAxMGMtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXb3Jrc3BhY2VzT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTVjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAtMmMtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00em02LThjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAtMkM5LjggMyA4IDQuOCA4IDdzMS44IDQgNCA0IDQtMS44IDQtNC0xLjgtNC00LTR6bTYgMTJjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAtMmMtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXb3Jrc3BhY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxM2MtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00em02LTEwQzkuOCAzIDggNC44IDggN3MxLjggNCA0IDQgNC0xLjggNC00LTEuOC00LTQtNHptNiAxMGMtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGZTY2FubmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTJoLTFWNEg2djhINWMtMS42NiAwLTMgMS4zNC0zIDN2NWgyMHYtNWMwLTEuNjYtMS4zNC0zLTMtM3ptLTMgMEg4VjZoOHY2em0yIDVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnJvd3Nlck5vdFN1cHBvcnRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDZ2MTAuNWwxLjk1IDEuOTVjLjAzLS4xNS4wNS0uMy4wNS0uNDVWNmMwLTEuMS0uOS0yLTItMkg2LjVsMiAySDE5ek0zLjIyIDMuMzIgMS45NSA0LjU5IDMgNS42NFYxOGMwIDEuMS45IDIgMiAyaDEyLjM2bDIuMDYgMi4wNiAxLjI3LTEuMjdMMy4yMiAzLjMyek0xNSAxOEg1VjcuNjRMMTUuMzYgMThIMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyb3dzZXJVcGRhdGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTN2M2MwIDEuMS0uOSAyLTIgMmgtM2wxIDF2Mkg2di0ybDEtMUg0Yy0xLjEgMC0yLS45LTItMlY1YzAtMS4xLjktMiAyLTJoOHYySDR2MTFoMTZ2LTNoMnptLTcgMi01LTVoNFYzaDJ2N2g0bC01IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhc3RDb25uZWN0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIixcIm9wYWNpdHlcIjpcIi4xXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMTh2M2gzYzAtMS42Ni0xLjM0LTMtMy0zem0wLTR2MmMyLjc2IDAgNSAyLjI0IDUgNWgyYzAtMy44Ny0zLjEzLTctNy03em0xOC03SDV2MS42M2MzLjk2IDEuMjggNy4wOSA0LjQxIDguMzcgOC4zN0gxOVY3ek0xIDEwdjJhOSA5IDAgMCAxIDkgOWgyYzAtNi4wOC00LjkzLTExLTExLTExem0yMC03SDNjLTEuMSAwLTIgLjktMiAydjNoMlY1aDE4djE0aC03djJoN2MxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYXN0Rm9yRWR1Y2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjNoMlY1aDE4djE0aC03djJoN2MxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek0xIDE4djNoM2MwLTEuNjYtMS4zNC0zLTMtM3ptMC00djJjMi43NiAwIDUgMi4yNCA1IDVoMmMwLTMuODctMy4xMy03LTctN3ptMC00djJhOSA5IDAgMCAxIDkgOWgyYzAtNi4wOC00LjkzLTExLTExLTExem0xMCAxLjA5djJMMTQuNSAxNWwzLjUtMS45MXYtMkwxNC41IDEzIDExIDExLjA5ek0xNC41IDYgOSA5bDUuNSAzTDIwIDlsLTUuNS0zelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCIsXCJvcGFjaXR5XCI6XCIuMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjNoMlY1aDE4djE0aC03djJoN2MxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek0xIDE4djNoM2MwLTEuNjYtMS4zNC0zLTMtM3ptMC00djJjMi43NiAwIDUgMi4yNCA1IDVoMmMwLTMuODctMy4xMy03LTctN3ptMC00djJhOSA5IDAgMCAxIDkgOWgyYzAtNi4wOC00LjkzLTExLTExLTExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb21wdXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4YzEuMSAwIDEuOTktLjkgMS45OS0yTDIyIDZjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMkgwdjJoMjR2LTJoLTR6TTQgNmgxNnYxMEg0VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbm5lY3RlZFR2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNWMwLTEuMS0uOS0yLTItMnptMCAxNEgzVjVoMTh2MTJ6TTQgMTR2MmgyYzAtMS4xMS0uODktMi0yLTJ6bTAtM3YxLjQzYzEuOTcgMCAzLjU3IDEuNiAzLjU3IDMuNTdIOWMwLTIuNzYtMi4yNC01LTUtNXptMC0zdjEuNDVjMy42MSAwIDYuNTUgMi45MyA2LjU1IDYuNTVIMTJjMC00LjQyLTMuNTktOC04LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnZleW9yQmVsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE1SDVjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDNoMTRjMS42NiAwIDMtMS4zNCAzLTNzLTEuMzQtMy0zLTN6bTAgNEg1Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xaDE0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxek05IDR2OGMwIC41NS40NSAxIDEgMWg4Yy41NSAwIDEtLjQ1IDEtMVY0YzAtLjU1LS40NS0xLTEtMWgtOGMtLjU1IDAtMSAuNDUtMSAxem03IDRoLTRWNi4wMmg0Vjh6TTIgOS4wMmg0Ljk0djEuOTFIMlY5LjAyem0yLjAxLTNoMi45M3YxLjk2SDQuMDFWNi4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVza3RvcE1hYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMmg2bC0yIDJ2MWg4di0xbC0yLTJoNmMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlc2t0b3BXaW5kb3dzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDZ2Mkg4djJoOHYtMmgtMnYtMmg2YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGV2ZWxvcGVyQm9hcmRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjgzIDVIMTh2MTAuMTdMMTkuODMgMTdIMjJ2LTJoLTJ2LTJoMnYtMmgtMlY5aDJWN2gtMlY1YzAtMS4xLS45LTItMi0ySDUuODNsMiAyek0xMiA5LjE3VjdoNHYzaC0zLjE3TDEyIDkuMTd6TTkuODMgN0gxMXYxLjE3TDkuODMgN3ptNCA0SDE2djIuMTdMMTMuODMgMTF6TTE4IDIxYy4wNiAwIC4xMSAwIC4xNi0uMDFsMi4zMiAyLjMyIDEuNDEtMS40MUwyLjEgMi4xLjY5IDMuNTFsMS4zMiAxLjMyQzIgNC44OSAyIDQuOTQgMiA1djE0YzAgMS4xLjkgMiAyIDJoMTR6TTQgMTlWNi44M2wyIDJWMTJoMy4xN2wxIDFINnY0aDV2LTMuMTdsMSAxVjE3aDIuMTdsMiAySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERldmVsb3BlckJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA5VjdoLTJWNWMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi0yaDJ2LTJoLTJ2LTJoMnYtMmgtMlY5aDJ6bS00IDEwSDRWNWgxNHYxNHpNNiAxM2g1djRINnptNi02aDR2M2gtNHpNNiA3aDV2NUg2em02IDRoNHY2aC00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERldmljZUh1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3IDE2LTQtNFY4LjgyQzE0LjE2IDguNCAxNSA3LjMgMTUgNmMwLTEuNjYtMS4zNC0zLTMtM1M5IDQuMzQgOSA2YzAgMS4zLjg0IDIuNCAyIDIuODJWMTJsLTQgNEgzdjVoNXYtMy4wNWw0LTQuMiA0IDQuMlYyMWg1di01aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZXZpY2VVbmtub3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMThIN1Y1aDEwdjE0ek0xMiA2LjcyYy0xLjk2IDAtMy41IDEuNTItMy41IDMuNDdoMS43NWMwLS45My44Mi0xLjc1IDEuNzUtMS43NXMxLjc1LjgyIDEuNzUgMS43NWMwIDEuNzUtMi42MyAxLjU3LTIuNjMgNC40NWgxLjc2YzAtMS45NiAyLjYyLTIuMTkgMi42Mi00LjQ1IDAtMS45Ni0xLjU0LTMuNDctMy41LTMuNDd6bS0uODggOC44aDEuNzZ2MS43NmgtMS43NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGV2aWNlc090aGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA2aDE4VjRIM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg0di0ySDNWNnptMTAgNkg5djEuNzhjLS42MS41NS0xIDEuMzMtMSAyLjIycy4zOSAxLjY3IDEgMi4yMlYyMGg0di0xLjc4Yy42MS0uNTUgMS0xLjM0IDEtMi4yMnMtLjM5LTEuNjctMS0yLjIyVjEyem0tMiA1LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek0yMiA4aC02Yy0uNSAwLTEgLjUtMSAxdjEwYzAgLjUuNSAxIDEgMWg2Yy41IDAgMS0uNSAxLTFWOWMwLS41LS41LTEtMS0xem0tMSAxMGgtNHYtOGg0djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDIzaDh2LTJIOHYyem04LTIxLjk5TDggMWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE2IDE1SDhWNWg4djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFYXJidWRzQmF0dGVyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDdoLTFWNmgtMnYxaC0xYy0uNTUgMC0xIC40NS0xIDF2OWMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMVY4YzAtLjU1LS40NS0xLTEtMXpNMTAuNjIgNkM4Ljc2IDYgNy4yNSA3LjUxIDcuMjUgOS4zOHY1LjI1YzAgMS4wNC0uODQgMS44OC0xLjg4IDEuODhzLTEuODctLjg1LTEuODctMS44OXYtNC43Yy4xNi4wNS4zMy4wOC41LjA4IDEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMnY2LjYyQzIgMTYuNDkgMy41MSAxOCA1LjM4IDE4czMuMzgtMS41MSAzLjM4LTMuMzhWOS4zOGMwLTEuMDQuODQtMS44OCAxLjg4LTEuODhzMS44OC44NCAxLjg4IDEuODh2NC43Yy0uMTgtLjA1LS4zNS0uMDgtLjUyLS4wOC0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMlY5LjM4QzE0IDcuNTEgMTIuNDkgNiAxMC42MiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFYXJidWRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4yIDMuMDFDNC40NCAyLjg5IDMgNC40MiAzIDYuMTlWMTZjMCAyLjc2IDIuMjQgNSA1IDVzNS0yLjI0IDUtNVY4YzAtMS42NiAxLjM0LTMgMy0zczMgMS4zNCAzIDN2N2gtLjgzYy0xLjYxIDAtMy4wNiAxLjE4LTMuMTcgMi43OUEzIDMgMCAwIDAgMTcuOCAyMWMxLjc2LjEyIDMuMi0xLjQyIDMuMi0zLjE4VjhjMC0yLjc2LTIuMjQtNS01LTVzLTUgMi4yNC01IDV2OGMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtM1Y5aC44M0M3LjQ0IDkgOC44OSA3LjgyIDkgNi4yMWMuMTEtMS42OC0xLjE3LTMuMS0yLjgtMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JrbGlmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDE3djJoLTVWM2gydjE0aDN6bS02LjI3LTEuODVjLjE3LjQyLjI3Ljg3LjI3IDEuMzUgMCAxLjkzLTEuNTcgMy41LTMuNSAzLjUtMS40IDAtMi42LS44Mi0zLjE2LTJINi44M0EyLjk5IDIuOTkgMCAwIDEgNCAyMGMtMS42NiAwLTMtMS4zNC0zLTMgMC0uODkuMzktMS42OSAxLTIuMjRWMTBoMlY0aDhsNC43MyAxMS4xNXpNNSAxN2MwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMSAuNDUgMSAxIDEgMS0uNDUgMS0xem04LjY1LTQtMi45Ny03SDZ2NGwyLjkyIDNoNC43M3pNMTUgMTYuNWMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41LjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRnJvbnRMb2FkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS41IDYuNS0xLjkxIDEuOTFjLS4zOC4zOC0uNTkuODktLjU5IDEuNDJWMTFoLTFWN2MwLTEuNjYtMS4zNC0zLTMtM0g4djVIM2MtMS4xIDAtMiAuOS0yIDJ2NS44NWMwIDEuNTggMS4xNiAzLjAxIDIuNzQgMy4xNGEyLjk5IDIuOTkgMCAwIDAgMy4wNy0xLjk4bDQuMzctLjAxYTIuOTc5IDIuOTc5IDAgMCAwIDMuNDEgMS45NCAzLjAxMyAzLjAxMyAwIDAgMCAyLjM1LTIuMzljLjItMS4xMS0uMjItMi4xMS0uOTUtMi43N1YxM2gxYzAgMS4xLjkgMiAyIDJoNUwxOS41IDYuNXpNNCAxOGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem02LTEyaDNjLjU1IDAgMSAuNDUgMSAxdjRoLTRWNnptNCAxMmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHYW1lcGFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgNy41VjJIOXY1LjVsMyAzIDMtM3pNNy41IDlIMnY2aDUuNWwzLTMtMy0zek05IDE2LjVWMjJoNnYtNS41bC0zLTMtMyAzek0xNi41IDlsLTMgMyAzIDNIMjJWOWgtNS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWFkcGhvbmVzQmF0dGVyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDdoLTFWNmgtMnYxaC0xYy0uNTUgMC0xIC40NS0xIDF2OWMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMVY4YzAtLjU1LS40NS0xLTEtMXpNOCA2Yy0zLjMxIDAtNiAyLjY5LTYgNnY0YzAgMS4xLjkgMiAyIDJoMnYtNUgzLjV2LTFjMC0yLjQ4IDIuMDItNC41IDQuNS00LjVzNC41IDIuMDIgNC41IDQuNXYxSDEwdjVoMmMxLjEgMCAyLS45IDItMnYtNGMwLTMuMzEtMi42OS02LTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGVhZHBob25lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNhOSA5IDAgMCAwLTkgOXY3YzAgMS4xLjkgMiAyIDJoNHYtOEg1di0xYzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDd2MWgtNHY4aDRjMS4xIDAgMi0uOSAyLTJ2LTdhOSA5IDAgMCAwLTktOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGVhZHNldE1pYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCIsXCJvcGFjaXR5XCI6XCIuMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxYTkgOSAwIDAgMC05IDl2N2MwIDEuNjYgMS4zNCAzIDMgM2gzdi04SDV2LTJjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgN3YyaC00djhoNHYxaC03djJoNmMxLjY2IDAgMy0xLjM0IDMtM1YxMGE5IDkgMCAwIDAtOS05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWFkc2V0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzMuODcgMCA3IDMuMTMgNyA3djJoLTIuOTJMMjEgMTcuOTJWMTFhOSA5IDAgMCAwLTktOWMtMS45NSAwLTMuNzYuNjItNS4yMyAxLjY4bDEuNDQgMS40NEE2LjkxNCA2LjkxNCAwIDAgMSAxMiA0ek0yLjI3IDEuNzIgMSAzbDMuMzMgMy4zMkE4Ljg5OSA4Ljg5OSAwIDAgMCAzIDExdjdjMCAxLjY2IDEuMzQgMyAzIDNoM3YtOEg1di0yYzAtMS4xNy4yOS0yLjI2Ljc5LTMuMjJMMTUgMTd2NGgzYy4zIDAgLjU5LS4wNi44Ni0uMTRMMjEgMjNsMS4yNy0xLjI3LTIwLTIwLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWFkc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIixcIm9wYWNpdHlcIjpcIi4xXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDFhOSA5IDAgMCAwLTkgOXY3YzAgMS42NiAxLjM0IDMgMyAzaDN2LThINXYtMmMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3djJoLTR2OGgzYzEuNjYgMCAzLTEuMzQgMy0zdi03YTkgOSAwIDAgMC05LTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvbWVNYXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1SDVDMi43OSA1IDEgNi43OSAxIDl2NWMwIDIuMjEgMS43OSA0IDQgNGgydjFoMTB2LTFoMmMyLjIxIDAgNC0xLjc5IDQtNFY5YzAtMi4yMS0xLjc5LTQtNC00em0yIDljMCAxLjEtLjkgMi0yIDJINWMtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDE0YzEuMSAwIDIgLjkgMiAydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvbWVNaW5pIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNUM0LjE5IDUgMiA5LjQ4IDIgMTJjMCAzLjg2IDMuMTMgNyA2Ljk5IDdoNi4wMkMxNy43IDE5IDIyIDE2LjkyIDIyIDEyYzAgMCAwLTctMTAtN3ptMCAyYzcuNjQgMCA3Ljk5IDQuNTEgOCA1SDRjMC0uMi4wOS01IDgtNXptMi44NiAxMEg5LjE0Yy0yLjEgMC0zLjkyLTEuMjQtNC43MS0zaDE1LjE1Yy0uOCAxLjc2LTIuNjIgMy00LjcyIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNEgzYy0xLjEgMC0yIC45LTIgMnYxM2MwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTcgMTJ2Mkg1di0yaDJ6bS0yLTJWOGgydjJINXptNiAydjJIOXYtMmgyem0tMi0yVjhoMnYySDl6bTcgNnYxSDh2LTFoOHptLTEtNHYyaC0ydi0yaDJ6bS0yLTJWOGgydjJoLTJ6bTQgNHYtMmgydjJoLTJ6bTItNGgtMlY4aDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5Ym9hcmRBcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNDEgOC41OSAxMiAxMy4xN2w0LjU5LTQuNThMMTggMTBsLTYgNi02LTYgMS40MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZEFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNDEgMTYuNTkgMTAuODMgMTJsNC41OC00LjU5TDE0IDZsLTYgNiA2IDYgMS40MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZEFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNTkgMTYuNTkgMTMuMTcgMTIgOC41OSA3LjQxIDEwIDZsNiA2LTYgNi0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNDEgMTUuNDEgMTIgMTAuODNsNC41OSA0LjU4TDE4IDE0bC02LTYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZEJhY2tzcGFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDExSDYuODNsMy41OC0zLjU5TDkgNmwtNiA2IDYgNiAxLjQxLTEuNDFMNi44MyAxM0gyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5Ym9hcmRDYXBzbG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDguNDEgMTYuNTkgMTMgMTggMTEuNTlsLTYtNi02IDZMNy40MSAxMyAxMiA4LjQxek02IDE4aDEydi0ySDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5Ym9hcmRDb21tYW5kS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNSAzQzE1LjU3IDMgMTQgNC41NyAxNCA2LjVWOGgtNFY2LjVDMTAgNC41NyA4LjQzIDMgNi41IDNTMyA0LjU3IDMgNi41IDQuNTcgMTAgNi41IDEwSDh2NEg2LjVDNC41NyAxNCAzIDE1LjU3IDMgMTcuNVM0LjU3IDIxIDYuNSAyMXMzLjUtMS41NyAzLjUtMy41VjE2aDR2MS41YzAgMS45MyAxLjU3IDMuNSAzLjUgMy41czMuNS0xLjU3IDMuNS0zLjUtMS41Ny0zLjUtMy41LTMuNUgxNnYtNGgxLjVjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTkuNDMgMyAxNy41IDN6TTE2IDhWNi41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41UzE4LjMzIDggMTcuNSA4SDE2ek02LjUgOEM1LjY3IDggNSA3LjMzIDUgNi41UzUuNjcgNSA2LjUgNSA4IDUuNjcgOCA2LjVWOEg2LjV6bTMuNSA2di00aDR2NGgtNHptNy41IDVjLS44MyAwLTEuNS0uNjctMS41LTEuNVYxNmgxLjVjLjgzIDAgMS41LjY3IDEuNSAxLjVzLS42NyAxLjUtMS41IDEuNXptLTExIDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVM1LjY3IDE2IDYuNSAxNkg4djEuNWMwIC44My0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkQ29udHJvbEtleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTUgMTIgMS40MSAxLjQxTDEyIDcuODNsNS41OSA1LjU4TDE5IDEybC03LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkRG91YmxlQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNi40MSAxNi41OSA1IDEyIDkuNTggNy40MSA1IDYgNi40MWw2IDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDEzLTEuNDEtMS40MUwxMiAxNi4xN2wtNC41OS00LjU4TDYgMTNsNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZERvdWJsZUFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjU5IDE4IDE5IDE2LjU5IDE0LjQyIDEyIDE5IDcuNDEgMTcuNTkgNmwtNiA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMSAxOCAxLjQxLTEuNDFMNy44MyAxMmw0LjU4LTQuNTlMMTEgNmwtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZERvdWJsZUFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjQxIDYgNSA3LjQxIDkuNTggMTIgNSAxNi41OSA2LjQxIDE4bDYtNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgNi0xLjQxIDEuNDFMMTYuMTcgMTJsLTQuNTggNC41OUwxMyAxOGw2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkRG91YmxlQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTcuNTkgNy40MSAxOSAxMiAxNC40MiAxNi41OSAxOSAxOCAxNy41OWwtNi02elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02IDExIDEuNDEgMS40MUwxMiA3LjgzbDQuNTkgNC41OEwxOCAxMWwtNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZEhpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxNWMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS05IDNoMnYyaC0yVjZ6bTAgM2gydjJoLTJWOXpNOCA2aDJ2Mkg4VjZ6bTAgM2gydjJIOFY5em0tMSAySDVWOWgydjJ6bTAtM0g1VjZoMnYyem05IDdIOHYtMmg4djJ6bTAtNGgtMlY5aDJ2MnptMC0zaC0yVjZoMnYyem0zIDNoLTJWOWgydjJ6bTAtM2gtMlY2aDJ2MnptLTcgMTUgNC00SDhsNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZE9wdGlvbktleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDVoNnYyaC02ek05IDVIM3YyaDQuODVsNi45MiAxMkgyMXYtMmgtNS4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5Ym9hcmRSZXR1cm4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3djRINS44M2wzLjU4LTMuNTlMOCA2bC02IDYgNiA2IDEuNDEtMS40MUw1LjgzIDEzSDIxVjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkVGFiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNTkgNy40MSAxNS4xNyAxMUgxdjJoMTQuMTdsLTMuNTkgMy41OUwxMyAxOGw2LTYtNi02LTEuNDEgMS40MXpNMjAgNnYxMmgyVjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkVm9pY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNWMxLjY2IDAgMi45OS0xLjM0IDIuOTktM0wxNSA2YzAtMS42Ni0xLjM0LTMtMy0zUzkgNC4zNCA5IDZ2NmMwIDEuNjYgMS4zNCAzIDMgM3ptNS4zLTNjMCAzLTIuNTQgNS4xLTUuMyA1LjFTNi43IDE1IDYuNyAxMkg1YzAgMy40MiAyLjcyIDYuMjMgNiA2LjcyVjIyaDJ2LTMuMjhjMy4yOC0uNDggNi0zLjMgNi02LjcyaC0xLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxN2MwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bS05IDNoMnYyaC0yVjh6bTAgM2gydjJoLTJ2LTJ6TTggOGgydjJIOFY4em0wIDNoMnYySDh2LTJ6bS0xIDJINXYtMmgydjJ6bTAtM0g1VjhoMnYyem05IDdIOHYtMmg4djJ6bTAtNGgtMnYtMmgydjJ6bTAtM2gtMlY4aDJ2MnptMyAzaC0ydi0yaDJ2MnptMC0zaC0yVjhoMnYyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExhcHRvcENocm9tZWJvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxOFYzSDJ2MTVIMHYyaDI0di0yaC0yem0tOCAwaC00di0xaDR2MXptNi0zSDRWNWgxNnYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGFwdG9wTWFjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMThjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjIgNWMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAySDBjMCAxLjEuOSAyIDIgMmgyMGMxLjEgMCAyLS45IDItMmgtNHpNNCA1aDE2djExSDRWNXptOCAxNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYXB0b3BXaW5kb3dzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTh2LTFjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjIgNWMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAydjFIMHYyaDI0di0yaC00ek00IDVoMTZ2MTBINFY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYXB0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJIMHYyaDI0di0yaC00ek00IDZoMTZ2MTBINFY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNZW1vcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA5SDl2Nmg2Vjl6bS0yIDRoLTJ2LTJoMnYyem04LTJWOWgtMlY3YzAtMS4xLS45LTItMi0yaC0yVjNoLTJ2MmgtMlYzSDl2Mkg3Yy0xLjEgMC0yIC45LTIgMnYySDN2MmgydjJIM3YyaDJ2MmMwIDEuMS45IDIgMiAyaDJ2Mmgydi0yaDJ2Mmgydi0yaDJjMS4xIDAgMi0uOSAyLTJ2LTJoMnYtMmgtMnYtMmgyem0tNCA2SDdWN2gxMHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9uaXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyaDNsLTEgMXYyaDEydi0ybC0xLTFoM2MxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDEzSDRWNWgxNnYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW91c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxLjA3VjloN2MwLTQuMDgtMy4wNS03LjQ0LTctNy45M3pNNCAxNWMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04di00SDR2NHptNy0xMy45M0M3LjA1IDEuNTYgNCA0LjkyIDQgOWg3VjEuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTh2NGgzdi0yaDUuNXYyaDN2LTJIMTl2Mmgzdi00ek0xOCAySDZjLS41NSAwLTEgLjQ1LTEgMXYxMmMwIC41NS40NSAxIDEgMWgxMmMuNTUgMCAxLS40NSAxLTFWM2MwLS41NS0uNDUtMS0xLTF6bS0zIDZIOVY2aDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmVBbmRyb2lkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMUg4QzYuMzQgMSA1IDIuMzQgNSA0djE2YzAgMS42NiAxLjM0IDMgMyAzaDhjMS42NiAwIDMtMS4zNCAzLTNWNGMwLTEuNjYtMS4zNC0zLTMtM3ptLTIgMjBoLTR2LTFoNHYxem0zLjI1LTNINi43NVY0aDEwLjV2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lSXBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxaC04QTIuNSAyLjUgMCAwIDAgNSAzLjV2MTdBMi41IDIuNSAwIDAgMCA3LjUgMjNoOGEyLjUgMi41IDAgMCAwIDIuNS0yLjV2LTE3QTIuNSAyLjUgMCAwIDAgMTUuNSAxem0tNCAyMWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTQuNS00SDdWNGg5djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZWxpbmtPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNlY0SDYuODJsMiAySDIyek0xLjkyIDEuNjUuNjUgMi45MmwxLjgyIDEuODJDMi4xOCA1LjA4IDIgNS41MiAyIDZ2MTFIMHYzaDE3LjczbDIuMzUgMi4zNSAxLjI3LTEuMjdMMy44OSAzLjYyIDEuOTIgMS42NXpNNCA2LjI3IDE0LjczIDE3SDRWNi4yN3pNMjMgOGgtNmMtLjU1IDAtMSAuNDUtMSAxdjQuMThsMiAyVjEwaDR2N2gtMi4xOGwzIDNIMjNjLjU1IDAgMS0uNDUgMS0xVjljMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZWxpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZoMThWNEg0Yy0xLjEgMC0yIC45LTIgMnYxMUgwdjNoMTR2LTNINFY2em0xOSAyaC02Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTF6bS0xIDloLTR2LTdoNHY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQb2ludE9mU2FsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDJIN2MtMS4xIDAtMiAuOS0yIDJ2MmMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgNEg3VjRoMTB2MnptMyAxNkg0Yy0xLjEgMC0yLS45LTItMnYtMWgyMHYxYzAgMS4xLS45IDItMiAyem0tMS40Ny0xMS44MUEyLjAwOCAyLjAwOCAwIDAgMCAxNi43IDlINy4zYy0uNzkgMC0xLjUxLjQ3LTEuODMgMS4xOUwyIDE4aDIwbC0zLjQ3LTcuODF6TTkuNSAxNmgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMC0yaC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6bTMgNGgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMC0yaC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6bTMgNGgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMC0yaC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvd2VySW5wdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgOXYyaDE5VjlIMnptMCA2aDV2LTJIMnYyem03IDBoNXYtMkg5djJ6bTcgMGg1di0yaC01djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvdXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjIgNS45LjgtLjhDMTkuNiAzLjcgMTcuOCAzIDE2IDNzLTMuNi43LTUgMi4xbC44LjhDMTMgNC44IDE0LjUgNC4yIDE2IDQuMnMzIC42IDQuMiAxLjd6bS0uOS44Yy0uOS0uOS0yLjEtMS40LTMuMy0xLjRzLTIuNC41LTMuMyAxLjRsLjguOGMuNy0uNyAxLjYtMSAyLjUtMSAuOSAwIDEuOC4zIDIuNSAxbC44LS44ek0xOSAxM2gtMlY5aC0ydjRINWMtMS4xIDAtMiAuOS0yIDJ2NGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi00YzAtMS4xLS45LTItMi0yek04IDE4SDZ2LTJoMnYyem0zLjUgMGgtMnYtMmgydjJ6bTMuNSAwaC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2Nhbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjggMTAuNyA0LjIgNWwtLjcgMS45TDE3LjYgMTJINWMtMS4xIDAtMiAuOS0yIDJ2NGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi01LjVjMC0uOC0uNS0xLjYtMS4yLTEuOHpNNyAxN0g1di0yaDJ2MnptMTIgMEg5di0yaDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlY3VyaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMSAzIDV2NmMwIDUuNTUgMy44NCAxMC43NCA5IDEyIDUuMTYtMS4yNiA5LTYuNDUgOS0xMlY1bC05LTR6bTAgMTAuOTloN2MtLjUzIDQuMTItMy4yOCA3Ljc5LTcgOC45NFYxMkg1VjYuM2w3LTMuMTF2OC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaW1DYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOTkgNGMwLTEuMS0uODktMi0xLjk5LTJoLThMNCA4djEyYzAgMS4xLjkgMiAyIDJoMTIuMDFjMS4xIDAgMS45OS0uOSAxLjk5LTJsLS4wMS0xNnpNOSAxOUg3di0yaDJ2MnptOCAwaC0ydi0yaDJ2MnptLTgtNEg3di00aDJ2NHptNCA0aC0ydi00aDJ2NHptMC02aC0ydi0yaDJ2MnptNCAyaC0ydi00aDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU21hcnREaXNwbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTkuNSAxNi41di05bDcgNC41LTcgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTbWFydFNjcmVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVIM2MtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tMyAxMkg2VjdoMTJ2MTB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDExLjI1aDEuNXYxLjVIMTV6TTEyLjUgMTEuMjVIMTR2MS41aC0xLjV6TTEwIDExLjI1aDEuNXYxLjVIMTB6TTcuNSAxMS4yNUg5djEuNUg3LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNtYXJ0VG95IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOVY3YzAtMS4xLS45LTItMi0yaC0zYzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDVINmMtMS4xIDAtMiAuOS0yIDJ2MmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgM3Y0YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTRjMS42NiAwIDMtMS4zNCAzLTNzLTEuMzQtMy0zLTN6TTcuNSAxMS41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41UzkuODMgMTMgOSAxM3MtMS41LS42Ny0xLjUtMS41ek0xNiAxN0g4di0yaDh2MnptLTEtNGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzE0LjE3IDEwIDE1IDEwczEuNS42NyAxLjUgMS41UzE1LjgzIDEzIDE1IDEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTbWFydHBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMTlIN1Y1aDEwdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGVha2VyR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4yIDFIOS44QzguODEgMSA4IDEuODEgOCAyLjh2MTQuNGMwIC45OS44MSAxLjc5IDEuOCAxLjc5bDguNC4wMWMuOTkgMCAxLjgtLjgxIDEuOC0xLjhWMi44YzAtLjk5LS44MS0xLjgtMS44LTEuOHpNMTQgM2MxLjEgMCAyIC44OSAyIDJzLS45IDItMiAyLTItLjg5LTItMiAuOS0yIDItMnptMCAxMy41Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDQtMS43OSA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNFwiLFwiY3lcIjpcIjEyLjVcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDVINHYxNmEyIDIgMCAwIDAgMiAyaDEwdi0ySDZWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BlYWtlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDJIN2MtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAxLjk5IDIgMS45OUwxNyAyMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNSAyYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMmEyIDIgMCAxIDEgMC00em0wIDE2Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXptMC04Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41OSA3LjQxIDE4LjE3IDExSDZ2MmgxMi4xN2wtMy41OSAzLjU5TDE2IDE4bDYtNi02LTYtMS40MSAxLjQxek0yIDZ2MTJoMlY2SDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhYmxldEFuZHJvaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAwSDZDNC4zNCAwIDMgMS4zNCAzIDN2MThjMCAxLjY2IDEuMzQgMyAzIDNoMTJjMS42NiAwIDMtMS4zNCAzLTNWM2MwLTEuNjYtMS4zNC0zLTMtM3ptLTQgMjJoLTR2LTFoNHYxem01LjI1LTNINC43NVYzaDE0LjV2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhYmxldE1hYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAwaC0xNEEyLjUgMi41IDAgMCAwIDIgMi41djE5QTIuNSAyLjUgMCAwIDAgNC41IDI0aDE0YTIuNSAyLjUgMCAwIDAgMi41LTIuNXYtMTlBMi41IDIuNSAwIDAgMCAxOC41IDB6bS03IDIzYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXptNy41LTRINFYzaDE1djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYWJsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNmMwLTEuMS0uOS0yLTItMnptLTIgMTRINVY2aDE0djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUb3lzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNGMwLTEuOTUtMS40LTMuNTctMy4yNS0zLjkyTDE3LjQgNi4wNUEyLjk3OCAyLjk3OCAwIDAgMCAxNC41NiA0SDkuNDRDOC4xNSA0IDcgNC44MiA2LjYgNi4wNUw1LjgxIDguNCA0LjQxIDdsLjI5LS4yOUEuOTk2Ljk5NiAwIDEgMCAzLjI5IDUuM2wtMiAyQS45OTYuOTk2IDAgMSAwIDIuNyA4LjcxbC4zLS4zIDEuNzkgMS43OUMzLjE4IDEwLjcyIDIgMTIuMjIgMiAxNGMwIDEuNS44MyAyLjc5IDIuMDUgMy40OEEzIDMgMCAwIDAgNyAyMGMxLjMgMCAyLjQtLjg0IDIuODItMmg0LjM3Yy40MSAxLjE2IDEuNTEgMiAyLjgyIDJhMyAzIDAgMCAwIDIuOTUtMi41MkMyMS4xNyAxNi43OSAyMiAxNS41IDIyIDE0ek03IDE4Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTQtOEg3LjQxbC0uMDItLjAyIDEuMS0zLjNBMSAxIDAgMCAxIDkuNDQgNkgxMXY0em0yLTRoMS41NmExIDEgMCAwIDEgLjk1LjY4bDEuMSAzLjMySDEzVjZ6bTQgMTJjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJvbGxleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE0djJINFY0SDJWMmg0djEyaDE1ek01Ljk5IDE3QzQuODkgMTcgNCAxNy45IDQgMTlzLjg5IDIgMS45OSAyQzcuMSAyMSA4IDIwLjEgOCAxOXMtLjktMi0yLjAxLTJ6bTEzIDBjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyUzIxIDIwLjEgMjEgMTlzLS45LTItMi4wMS0yek0xMyAxM0g3VjdoNnY2em03IDBoLTZWN2g2djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFR2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNWMwLTEuMS0uOS0yLTItMnptMCAxNEgzVjVoMTh2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvZ2FtZUFzc2V0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMTkgMjEuMTkgMi44MSAyLjgxIDEuMzkgNC4yMiAzLjMgNi4xM0MyLjU0IDYuNDEgMiA3LjE1IDIgOHY4YzAgMS4xLjkgMiAyIDJoMTEuMTdsNC42MSA0LjYxIDEuNDEtMS40MnpNOSAxM3YySDd2LTJINXYtMmgyVjkuODNMMTAuMTcgMTNIOXptMTEuNyA0Ljg3Yy43Ni0uMjggMS4zLTEuMDIgMS4zLTEuODdWOGMwLTEuMS0uOS0yLTItMkg4LjgzTDIwLjcgMTcuODd6TTE3LjUgOWMuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41LTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlkZW9nYW1lQXNzZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMHYyNGgyNFYwSDB6bTIzIDE2YzAgMS4xLS45IDItMiAySDNjLTEuMSAwLTItLjktMi0yVjhjMC0xLjEuOS0yIDItMmgxOGMxLjEgMCAyIC45IDIgMnY4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA2SDNjLTEuMSAwLTIgLjktMiAydjhjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tMTAgN0g4djNINnYtM0gzdi0yaDNWOGgydjNoM3Yyem00LjUgMmMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTQtM2MtLjgzIDAtMS41LS42Ny0xLjUtMS41UzE4LjY3IDkgMTkuNSA5czEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2F0Y2hPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3YzIuNzYgMCA1IDIuMjQgNSA1IDAgLjY0LS4xMyAxLjI1LS4zNSAxLjgybDEuNSAxLjVhNi45NjMgNi45NjMgMCAwIDAtMS43OS04Ljc5TDE1IDJIOWwtLjk2IDMuMjEgMi4xNCAyLjE0QzEwLjc1IDcuMTMgMTEuMzYgNyAxMiA3ek0yLjgxIDIuODEgMS4zOSA0LjIybDQuNDYgNC40NmE2Ljk2MyA2Ljk2MyAwIDAgMCAxLjc5IDguNzlMOSAyMmg2bC45Ni0zLjIxIDMuODIgMy44MiAxLjQxLTEuNDFMMi44MSAyLjgxek0xMiAxN2MtMi43NiAwLTUtMi4yNC01LTUgMC0uNjQuMTMtMS4yNS4zNS0xLjgybDYuNDcgNi40N2MtLjU3LjIyLTEuMTguMzUtMS44Mi4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2F0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwiLFwib3BhY2l0eVwiOlwiLjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTJjMC0yLjU0LTEuMTktNC44MS0zLjA0LTYuMjdMMTYgMEg4bC0uOTUgNS43M0M1LjE5IDcuMTkgNCA5LjQ1IDQgMTJzMS4xOSA0LjgxIDMuMDUgNi4yN0w4IDI0aDhsLjk2LTUuNzNBNy45NzYgNy45NzYgMCAwIDAgMjAgMTJ6TTYgMTJjMC0zLjMxIDIuNjktNiA2LTZzNiAyLjY5IDYgNi0yLjY5IDYtNiA2LTYtMi42OS02LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF1dG9Nb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMDMgMy41NmMtMS42Ny0xLjM5LTMuNzQtMi4zLTYuMDMtMi41MXYyLjAxYzEuNzMuMTkgMy4zMS44OCA0LjYxIDEuOTJsMS40Mi0xLjQyek0xMSAzLjA2VjEuMDVjLTIuMjkuMi00LjM2IDEuMTItNi4wMyAyLjUxbDEuNDIgMS40MkE4LjkyOCA4LjkyOCAwIDAgMSAxMSAzLjA2ek00Ljk4IDYuMzkgMy41NiA0Ljk3QzIuMTcgNi42NCAxLjI2IDguNzEgMS4wNSAxMWgyLjAxYy4xOS0xLjczLjg4LTMuMzEgMS45Mi00LjYxek0yMC45NCAxMWgyLjAxYy0uMjEtMi4yOS0xLjEyLTQuMzYtMi41MS02LjAzbC0xLjQyIDEuNDJBOC45MjggOC45MjggMCAwIDEgMjAuOTQgMTF6TTcgMTJsMy40NCAxLjU2TDEyIDE3bDEuNTYtMy40NEwxNyAxMmwtMy40NC0xLjU2TDEyIDdsLTEuNTYgMy40NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjFhOC45NiA4Ljk2IDAgMCAxLTcuNDYtNEg3di0ySDF2Nmgydi0yLjdjMS45OSAyLjg0IDUuMjcgNC43IDkgNC43IDQuODcgMCA5LTMuMTcgMTAuNDQtNy41NmwtMS45Ni0uNDVDMTkuMjUgMTguNDggMTUuOTIgMjEgMTIgMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJsaW5kc0Nsb3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjNINHYxNkgydjJoMTEuMjVjMCAuOTcuNzggMS43NSAxLjc1IDEuNzVzMS43NS0uNzggMS43NS0xLjc1SDIydi0yaC0yem0tMi04aC0yVjloMnYyem0tNCAwSDZWOWg4djJ6bTAgMnYySDZ2LTJoOHptMiAwaDJ2MmgtMnYtMnptMi02aC0yVjVoMnYyem0tNC0ydjJINlY1aDh6TTYgMTl2LTJoOHYySDZ6bTEwIDB2LTJoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbGluZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDIwdi0yaC0yek0xNiA5aDJ2MmgtMlY5em0tMiAySDZWOWg4djJ6bTQtNGgtMlY1aDJ2MnptLTQtMnYySDZWNWg4ek02IDE5di02aDh2MS44MkExLjc0NiAxLjc0NiAwIDAgMCAxNSAxOGExLjc0NiAxLjc0NiAwIDAgMCAxLTMuMThWMTNoMnY2SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyb2FkY2FzdE9uSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDZjMC0xLjEtLjktMi0yLTJINHYyaDE2djIuNTljLjczLjI5IDEuNC42OSAyIDEuMTdWNnpNOCA5SDNjLS41IDAtMSAuNS0xIDF2OWMwIC41LjUgMSAxIDFoNWMuNSAwIDEtLjUgMS0xdi05YzAtLjUtLjUtMS0xLTF6bS0xIDlINHYtN2gzdjd6TTE3Ljc1IDE2Ljk3Yy4zLS4yMy41LS41Ny41LS45N2ExLjI1IDEuMjUgMCAwIDAtMi41IDBjMCAuNC4yLjc1LjUuOTdWMjJoMS41di01LjAzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMy41YTIuNSAyLjUgMCAwIDEgMi41IDIuNWMwIC42OS0uMjggMS4zMS0uNzMgMS43NmwxLjA2IDEuMDZDMjAuNTUgMTguMSAyMSAxNy4xIDIxIDE2YzAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0YzAgMS4xLjQ1IDIuMSAxLjE3IDIuODNsMS4wNi0xLjA2QTIuNSAyLjUgMCAwIDEgMTcgMTMuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOS41YTYuNSA2LjUgMCAwIDAtNi41IDYuNWMwIDEuNzkuNzMgMy40MiAxLjkgNC42bDEuMDYtMS4wNkMxMi41NiAxOC42MyAxMiAxNy4zOCAxMiAxNmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMS4zNy0uNTYgMi42Mi0xLjQ2IDMuNTJsMS4wNyAxLjA2QTYuNSA2LjUgMCAwIDAgMTcgOS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcm9hZGNhc3RPblBlcnNvbmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOGMuNyAwIDEuMzguMSAyLjAyLjI3TDEyIDMgNCA5djEyaDYuNzZBNy45OTggNy45OTggMCAwIDEgMTcgOHpNMTcgMTQuNzVjLS42OSAwLTEuMjUuNTYtMS4yNSAxLjI1IDAgLjQuMi43NS41Ljk3VjIyaDEuNXYtNS4wM2MuMy0uMjMuNS0uNTcuNS0uOTcgMC0uNjktLjU2LTEuMjUtMS4yNS0xLjI1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMmMtMi4yMSAwLTQgMS43OS00IDQgMCAxLjEuNDUgMi4xIDEuMTcgMi44M2wxLjA2LTEuMDZBMi41IDIuNSAwIDEgMSAxOS41IDE2YzAgLjY5LS4yOCAxLjMxLS43MyAxLjc2bDEuMDYgMS4wNkMyMC41NSAxOC4xIDIxIDE3LjEgMjEgMTZjMC0yLjIxLTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDkuNWE2LjUgNi41IDAgMCAwLTYuNSA2LjVjMCAxLjc5LjczIDMuNDIgMS45IDQuNmwxLjA2LTEuMDZDMTIuNTYgMTguNjMgMTIgMTcuMzggMTIgMTZjMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNWMwIDEuMzctLjU2IDIuNjItMS40NiAzLjUybDEuMDcgMS4wNkE2LjUgNi41IDAgMCAwIDE3IDkuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xvdWR5U25vd2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMThjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xLS40NS0xLTEtMS0xIC40NS0xIDF6bTEyIDBjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xLS40NS0xLTEtMS0xIC40NS0xIDF6bS05IDRjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xLS40NS0xLTEtMS0xIC40NS0xIDF6bTMtNGMwIC41NS40NSAxIDEgMXMxLS40NSAxLTEtLjQ1LTEtMS0xLTEgLjQ1LTEgMXptMyA0YzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMS0uNDUtMS0xLTEtMSAuNDUtMSAxem0zLjUtNmgtMTBBNS41MSA1LjUxIDAgMCAxIDIgMTAuNWMwLTIuNzYgMi4wOS01LjA5IDQuNzgtNS40NEE1Ljk3NSA1Ljk3NSAwIDAgMSAxMiAyYzIuOTcgMCA1LjQ1IDIuMTggNS45MiA1LjAyQTQuNSA0LjUgMCAwIDEgMjIgMTEuNWMwIDIuNDgtMi4wMiA0LjUtNC41IDQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3VydGFpbnNDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDIwdi0yaC0yek0xMSA1aDJ2MTRoLTJWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3VydGFpbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDIwdi0yaC0yek04LjE5IDEyYzIuMDQtMS4zNSAzLjUtMy45NCAzLjc2LTdoLjA5Yy4yNiAzLjA2IDEuNzIgNS42NSAzLjc2IDctMi4wNCAxLjM1LTMuNSAzLjk0LTMuNzYgN2gtLjA5Yy0uMjYtMy4wNi0xLjcyLTUuNjUtMy43Ni03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbGVjdHJpY0JvbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC42OSAyLjIxIDQuMzMgMTEuNDljLS42NC41OC0uMjggMS42NS41OCAxLjczTDEzIDE0bC00Ljg1IDYuNzZjLS4yMi4zMS0uMTkuNzQuMDggMS4wMS4zLjMuNzcuMzEgMS4wOC4wMmwxMC4zNi05LjI4Yy42NC0uNTguMjgtMS42NS0uNTgtMS43M0wxMSAxMGw0Ljg1LTYuNzZjLjIyLS4zMS4xOS0uNzQtLjA4LTEuMDFhLjc3Ljc3IDAgMCAwLTEuMDgtLjAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbGVjdHJpY01ldGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNC45NiAwLTkgNC4wNC05IDkgMCAzLjkxIDIuNTEgNy4yNCA2IDguNDdWMjJoMnYtMi4wNmE4LjI2MiA4LjI2MiAwIDAgMCAyIDBWMjJoMnYtMi41M2MzLjQ5LTEuMjQgNi00LjU3IDYtOC40NyAwLTQuOTYtNC4wNC05LTktOXptMi4yNSAxMi0zIDMtMS41LTEuNUwxMSAxNC4yNSA5Ljc1IDEzbDMtMyAxLjUgMS41TDEzIDEyLjc1IDE0LjI1IDE0ek0xNiA5SDhWN2g4djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVuZXJneVNhdmluZ3NMZWFmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM2MtNC44IDAtOSAzLjg2LTkgOSAwIDIuMTIuNzQgNC4wNyAxLjk3IDUuNjFMMyAxOS41OSA0LjQxIDIxbDEuOTctMS45N0E5LjAxMiA5LjAxMiAwIDAgMCAxMiAyMWMyLjMgMCA0LjYxLS44OCA2LjM2LTIuNjRBOC45NSA4Ljk1IDAgMCAwIDIxIDEyVjNoLTl6bTMuODMgOS4yNi01LjE2IDQuNjNjLS4xNi4xNS0uNDEuMTQtLjU2LS4wMWEuMzk3LjM5NyAwIDAgMS0uMDQtLjUybDIuNDQtMy4zMy00LjA1LS40YS41MTQuNTE0IDAgMCAxLS4zLS44OWw1LjE2LTQuNjNjLjE2LS4xNS40MS0uMTQuNTYuMDEuMTQuMTQuMTYuMzYuMDQuNTJsLTIuNDQgMy4zMyA0LjA1LjRjLjQ1LjA0LjYzLjU5LjMuODl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvZ2d5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuOTIgNy4wMkMxNy40NSA0LjE4IDE0Ljk3IDIgMTIgMiA5LjgyIDIgNy44MyAzLjE4IDYuNzggNS4wNiA0LjA5IDUuNDEgMiA3Ljc0IDIgMTAuNSAyIDEzLjUzIDQuNDcgMTYgNy41IDE2aDEwYzIuNDggMCA0LjUtMi4wMiA0LjUtNC41YTQuNSA0LjUgMCAwIDAtNC4wOC00LjQ4em0uMDggOS45OWMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tMTEgM2MuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tMS0zaDljLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDFINmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMXptNCAzaDdjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDFoLTdjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdhc01ldGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNGgtMVYyaC0ydjJoLTJWMkg5djJIOEM1Ljc5IDQgNCA1Ljc5IDQgOHYxMGMwIDIuMjEgMS43OSA0IDQgNGg4YzIuMjEgMCA0LTEuNzkgNC00VjhjMC0yLjIxLTEuNzktNC00LTR6bS00IDE0Yy0xLjM4IDAtMi41LTEuMS0yLjUtMi40NiAwLTEuMDkuNDMtMS4zOSAyLjUtMy43OSAyLjA1IDIuMzggMi41IDIuNyAyLjUgMy43OUMxNC41IDE2LjkgMTMuMzggMTggMTIgMTh6bTQtOEg4VjhoOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWF0UHVtcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNi4yNSA0LjA4Yy44Mi4xMiAxLjU3LjQ0IDIuMi45MWwtMi4yIDIuMlY3LjA4em0tMS41IDB2My4xMWwtMi4yLTIuMmMuNjMtLjQ3IDEuMzgtLjc5IDIuMi0uOTF6TTcuOTkgOS4wNWwyLjIgMi4ySDcuMDhjLjEyLS44Mi40NC0xLjU3LjkxLTIuMnptLS45MSAzLjdoMy4xMWwtMi4yIDIuMmMtLjQ3LS42My0uNzktMS4zOC0uOTEtMi4yem00LjE3IDQuMTdjLS44Mi0uMTItMS41Ny0uNDQtMi4yLS45MWwyLjItMi4ydjMuMTF6TTEyIDEzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bS43NSAzLjkydi0zLjExbDIuMiAyLjJjLS42My40Ny0xLjM4Ljc5LTIuMi45MXptMy4yNi0xLjk3LTIuMi0yLjJoMy4xMWMtLjEyLjgyLS40NCAxLjU3LS45MSAyLjJ6bS0yLjItMy43IDIuMi0yLjJjLjQ3LjY0Ljc5IDEuMzkuOTEgMi4yaC0zLjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb2RlRmFuT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuMzQgOC4zNi0yLjI5LjgyYy0uMTgtLjEzLS4zOC0uMjUtLjU4LS4zNC4xNy0uODMuNjMtMS41OCAxLjM2LTIuMDZDMTYuODUgNS40NCAxNi4xOCAyIDEzLjM5IDJjLTMuMDggMC00LjkgMS40Ny01LjMgMy4yNkwxOC43MyAxNS45YzEuNS4zOSAzLjI3LS41MSAzLjI3LTIuNTEgMC00LjM5LTMuMDEtNi4yMy01LjY2LTUuMDN6TTIuODEgMi44MSAxLjM5IDQuMjIgNS4yNyA4LjFDMy43NyA3LjcgMiA4LjYxIDIgMTAuNjFjMCA0LjQgMy4wMSA2LjI0IDUuNjYgNS4wM2wyLjI5LS44MmMuMTguMTMuMzguMjUuNTguMzQtLjE3LjgzLS42MyAxLjU4LTEuMzYgMi4wNkM3LjE1IDE4LjU2IDcuODIgMjIgMTAuNjEgMjJjMy4wOCAwIDQuOS0xLjQ3IDUuMy0zLjI2bDMuODcgMy44NyAxLjQxLTEuNDFMMi44MSAyLjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZXN0Q2FtV2lyZWRTdGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjgzIDEuMDEtNC4xMS40MkM4LjQ3IDEuNzUgNiA0LjQ4IDYgNy43NXMyLjQ3IDYgNS43MiA2LjMzbDEuOS4xOS0uNTYuODVjLS4zNS0uMDgtLjctLjEyLTEuMDYtLjEyLTIuNzYgMC01IDIuMjQtNSA1djJjMCAuNTUuNDUgMSAxIDFoOGMuNTUgMCAxLS40NSAxLTF2LTJjMC0xLjY3LS44My0zLjE1LTIuMDktNC4wNmwuOTctMS40NWMxLjE0LjA3IDIuMTItLjgzIDIuMTItMS45OVYzYzAtMS4xNy0xLTIuMDktMi4xNy0xLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPaWxCYXJyZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxM2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtMVY1aDFjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgxdjZINGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgxdjZINGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgxNmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtMXYtNmgxem0tOCAzYy0xLjY2IDAtMy0xLjMyLTMtMi45NSAwLTEuMy41Mi0xLjY3IDMtNC41NSAyLjQ3IDIuODYgMyAzLjI0IDMgNC41NSAwIDEuNjMtMS4zNCAyLjk1LTMgMi45NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHJvcGFuZVRhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE1djNjMCAyLjIxIDEuNzkgNCA0IDRoOGMyLjIxIDAgNC0xLjc5IDQtNHYtM0g0ek0yMCAxM3YtM2MwLTEuODYtMS4yOC0zLjQxLTMtMy44NlY0YzAtMS4xLS45LTItMi0ySDljLTEuMSAwLTIgLjktMiAydjIuMTRjLTEuNzIuNDUtMyAyLTMgMy44NnYzaDE2ek05IDRoNnYyaC0yYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxSDlWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHJvcGFuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDZoLTFWNWMwLTEuMS0uOS0yLTItMmgtNGMtMS4xIDAtMiAuOS0yIDJ2MUg3Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2djNoMnYtM2g2djNoMnYtM2MzLjMxIDAgNi0yLjY5IDYtNnMtMi42OS02LTYtNnptLTctMWg0djFoLTRWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm9sbGVyU2hhZGVzQ2xvc2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTlWM0g0djE2SDJ2Mmg4LjI1YzAgLjk3Ljc4IDEuNzUgMS43NSAxLjc1czEuNzUtLjc4IDEuNzUtMS43NUgyMnYtMmgtMnpNNiAxOXYtMmg1djJINnptNyAwdi0yaDV2MmgtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm9sbGVyU2hhZGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTlWM0g0djE2SDJ2MmgyMHYtMmgtMnpNNiAxOXYtNmg1djEuOGMtLjQuMy0uOC44LS44IDEuNCAwIDEgLjggMS44IDEuOCAxLjhzMS44LS44IDEuOC0xLjhjMC0uNi0uMy0xLjEtLjgtMS40VjEzaDV2Nkg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZW5zb3JEb29yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxOGgxNlY0YzAtMS4xLS45LTItMi0yem0tMi41IDExLjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZW5zb3JPY2N1cGllZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDExYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3pNMTIgMTJjLTEuODQgMC0zLjU2LjUtNS4wMyAxLjM3LS42MS4zNS0uOTcgMS4wMi0uOTcgMS43MlYxN2gxMnYtMS45MWMwLS43LS4zNi0xLjM2LS45Ny0xLjcyQTkuODQ0IDkuODQ0IDAgMCAwIDEyIDEyek0yMS4yMyA4LjE1bDEuODUtLjc3QTEyLjA1NiAxMi4wNTYgMCAwIDAgMTYuNjIuOTJsLS43NyAxLjg1YzIuNDIgMS4wMiA0LjM2IDIuOTYgNS4zOCA1LjM4ek04LjE1IDIuNzcgNy4zOC45MkExMi4wODkgMTIuMDg5IDAgMCAwIC45MiA3LjM4bDEuODUuNzdjMS4wMi0yLjQyIDIuOTYtNC4zNiA1LjM4LTUuMzh6TTIuNzcgMTUuODVsLTEuODUuNzdjMS4yMiAyLjkxIDMuNTUgNS4yNSA2LjQ2IDYuNDZsLjc3LTEuODVhMTAuMTE3IDEwLjExNyAwIDAgMS01LjM4LTUuMzh6TTE1Ljg1IDIxLjIzbC43NyAxLjg1YzIuOTEtMS4yMiA1LjI1LTMuNTUgNi40Ni02LjQ2bC0xLjg1LS43N2ExMC4xMTcgMTAuMTE3IDAgMCAxLTUuMzggNS4zOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2Vuc29yV2luZG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNHYxNkg2VjRoMTJtMC0ySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNNyAxOWgxMHYtNkg3djZ6bTMtOWg0djFoM1Y1SDd2Nmgzdi0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaGVsdmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMXYySDVWMUgzdjIyaDJ2LTJoMTR2MmgyVjFoLTJ6bTAgNHY2aC02VjdIN3Y0SDVWNWgxNHptLTIgMTR2LTRoLTZ2NEg1di02aDE0djZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNoaWVsZE1vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zem0zLjk3IDEyLjQxYy0xLjg0IDIuMTctNS4yMSAyLjEtNi45Ni0uMDctMi4xOS0yLjcyLS42NS02LjcyIDIuNjktNy4zMy4zNC0uMDYuNjMuMjcuNTEuNi0uNDYgMS4yMy0uMzkgMi42NC4zMiAzLjg2YTQuNTEgNC41MSAwIDAgMCAzLjE4IDIuMmMuMzQuMDUuNDkuNDcuMjYuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNub3dpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEyLjc1YTEuMjUgMS4yNSAwIDEgMSAwIDIuNSAxLjI1IDEuMjUgMCAwIDEgMC0yLjV6TTQuNzUgNmExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwem0xMiA4YTEuMjUgMS4yNSAwIDEgMCAyLjUgMCAxLjI1IDEuMjUgMCAwIDAtMi41IDB6bTAtOGExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwem0tOSAxMmExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwem0wLThhMS4yNSAxLjI1IDAgMSAwIDIuNSAwIDEuMjUgMS4yNSAwIDAgMC0yLjUgMHptMyA0YTEuMjUgMS4yNSAwIDEgMCAyLjUgMCAxLjI1IDEuMjUgMCAwIDAtMi41IDB6bTAtOGExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwem0zIDEyYTEuMjUgMS4yNSAwIDEgMCAyLjUgMCAxLjI1IDEuMjUgMCAwIDAtMi41IDB6bTAtOGExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTb2xhclBvd2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy4zMyAxNkgxMXYtM0g0ek0xMyAxNmg3LjY3TDIwIDEzaC03ek0yMS4xMSAxOEgxM3Y0aDl6TTIgMjJoOXYtNEgyLjg5ek0xMSA4aDJ2M2gtMnpNMTUuNzY0IDcuMjA1bDEuNDE1LTEuNDE0TDE5LjMgNy45MTJsLTEuNDE0IDEuNDE0ek00LjcwNSA3LjkxMyA2LjgyNiA1Ljc5IDguMjQgNy4yMDYgNi4xMiA5LjMyN3pNMyAyaDN2Mkgzek0xOCAyaDN2MmgtM3pNMTIgN2MyLjc2IDAgNS0yLjI0IDUtNUg3YzAgMi43NiAyLjI0IDUgNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdW5ueVNub3dpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA1aC0yVjFoMnY0ek0xIDExaDR2Mkgxdi0yem0xOCAydi0yaDR2MmgtNHptLTEuMzQtNS4yNC0xLjQxLTEuNDEgMi44My0yLjgzIDEuNDEgMS40MS0yLjgzIDIuODN6TTMuNTEgNC45M2wxLjQxLTEuNDEgMi44MyAyLjgzLTEuNDEgMS40MS0yLjgzLTIuODN6TTQuNzUgMTdhMS4yNSAxLjI1IDAgMSAwIDIuNSAwIDEuMjUgMS4yNSAwIDAgMC0yLjUgMHptMTIgMGExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwem0tOSA0YTEuMjUgMS4yNSAwIDEgMCAyLjUgMCAxLjI1IDEuMjUgMCAwIDAtMi41IDB6bTMtNGExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwem0zIDRhMS4yNSAxLjI1IDAgMSAwIDIuNSAwIDEuMjUgMS4yNSAwIDAgMC0yLjUgMHpNMTcgMTN2LTFjMC0yLjc2LTIuMjQtNS01LTVzLTUgMi4yNC01IDV2MWgxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3VubnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA0VjJjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjJjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTF6bTcuMzYgMy4wNSAxLjQxLTEuNDJhLjk5Ni45OTYgMCAxIDAtMS40MS0xLjQxbC0xLjQxIDEuNDJhLjk5Ni45OTYgMCAxIDAgMS40MSAxLjQxek0yMiAxMWgtMmMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgyYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xem0tMTAgOGMtLjU1IDAtMSAuNDUtMSAxdjJjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xdi0yYzAtLjU1LS40NS0xLTEtMXpNNS42NCA3LjA1IDQuMjIgNS42NGMtLjM5LS4zOS0uMzktMS4wMyAwLTEuNDFzMS4wMy0uMzkgMS40MSAwbDEuNDEgMS40MWMuMzkuMzkuMzkgMS4wMyAwIDEuNDFzLTEuMDIuMzktMS40IDB6bTExLjMxIDkuOWEuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMS40MSAxLjQxYy4zOS4zOSAxLjAzLjM5IDEuNDEgMGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTEuNDEtMS40MWEuOTk2Ljk5NiAwIDAgMC0xLjQxIDB6TTIgMTNoMmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMUgyYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxem0zLjY0IDYuNzggMS40MS0xLjQxYy4zOS0uMzkuMzktMS4wMyAwLTEuNDFzLTEuMDMtLjM5LTEuNDEgMGwtMS40MSAxLjQxYS45OTYuOTk2IDAgMCAwIDAgMS40MWMuMzguMzkgMS4wMi4zOSAxLjQxIDB6TTEyIDZjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWZXJ0aWNhbFNoYWRlc0Nsb3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjNINHYxNkgydjJoMjB2LTJoLTJ6TTEzIDVoMS41djE0SDEzVjV6bS0yIDE0SDkuNVY1SDExdjE0ek02IDVoMS41djE0SDZWNXptMTAuNSAxNFY1SDE4djE0aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZlcnRpY2FsU2hhZGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTlWM0g0djE2SDJ2MmgyMHYtMmgtMnptLTEwIDBWNWg0djE0aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaW5kUG93ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDNoNnYySDR6TTEgN2g1djJIMXpNMyAxOWg1djJIM3pNMTMuNzMgMTAuNjFjLjc1LjIzIDEuMy43OCAxLjU3IDEuNDZsNC4yNy03LjExYTIuMjggMi4yOCAwIDAgMC0zLjUxLTIuODRsLTMuNDMgMy4yMWMtLjQuMzctLjYzLjktLjYzIDEuNDV2My45M2MuMzYtLjE1Ljk4LS4zMyAxLjczLS4xek0xMC42MSAxMi4yN2MuMTYtLjUyLjQ4LS45Ni44OS0xLjI3SDMuMjhhMi4yNzkgMi4yNzkgMCAwIDAtLjYzIDQuNDdsNC41MSAxLjI5Yy41My4xNSAxLjEuMDggMS41OC0uMjFsMi42OS0xLjYxYTIuNDg3IDIuNDg3IDAgMCAxLS44Mi0yLjY3ek0yMi4yMSAxOC42MWwtMi4yOC00LjFhMi4wNSAyLjA1IDAgMCAwLTEuMjYtLjk3bC0zLjE4LS44Yy4wMy4zMiAwIC42Ni0uMS45OUEyLjQ3OCAyLjQ3OCAwIDAgMSAxMyAxNS41Yy0uNjEgMC0uOTktLjIyLTEtLjIyVjIxYy0xLjEgMC0yIC45LTIgMmg2YzAtMS4xLS45LTItMi0ydi00LjI4bDQuNjEgNC42MWMuODkuODkgMi4zMy44OSAzLjIyIDAgLjcyLS43Mi44OC0xLjgzLjM4LTIuNzJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjU2IDE0LjQzYy43OS4yNCAxLjYzLS4yIDEuODctMSAuMjQtLjc5LS4yLTEuNjMtMS0xLjg3LS43OS0uMjQtMS42My4yLTEuODcgMS0uMjQuNzkuMjEgMS42MyAxIDEuODd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDEwTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjUgN0gxNXYzaC0xLjV6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMCA1LjV2Nkg4LjVWN0g3VjUuNWgzem02LjUgNWMwIC41NS0uNDUgMS0xIDFIMTNjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgyLjVjLjU1IDAgMSAuNDUgMSAxdjR6bS0xIDMuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMTFNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6TTExIDUuNXY2SDkuNVY3SDhWNS41aDN6bTUgMHY2aC0xLjVWN0gxM1Y1LjVoM3ptLS41IDguNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMTJNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6TTEwIDUuNXY2SDguNVY3SDdWNS41aDN6TTE1LjUgOWgtMnYxaDN2MS41SDEyVjljMC0uNTUuNDUtMSAxLTFoMlY3aC0zVjUuNWgzLjVjLjU1IDAgMSAuNDUgMSAxVjhjMCAuNTUtLjQ1IDEtMSAxem0wIDVIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDEzTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMCA1LjV2Nkg4LjVWN0g3VjUuNWgzem02LjUgNWMwIC41NS0uNDUgMS0xIDFIMTJWMTBoM1Y5aC0yVjhoMlY3aC0zVjUuNWgzLjVjLjU1IDAgMSAuNDUgMSAxdjR6bS0xIDMuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMTRNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6TTEwIDUuNXY2SDguNVY3SDdWNS41aDN6bTcuNSA0LjVoLTF2MS41SDE1VjEwaC0zVjUuNWgxLjV2M0gxNXYtM2gxLjV2M2gxVjEwem0tMiA0SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxNU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTUuNWgtMS41VjE0aC0xdjNIOHYtM0g3djQuNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTFIMTFjLjU1IDAgMSAuNDUgMSAxdjV6bTMuNSAwSDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZjMCAuNTUtLjQ1IDEtMSAxaC0ydjEuNXpNMTAgNS41djZIOC41VjdIN1Y1LjVoM3pNMTYuNSA3aC0zdjFoMmMuNTUgMCAxIC40NSAxIDF2MS41YzAgLjU1LS40NSAxLTEgMUgxMlYxMGgzVjloLTNWNS41aDQuNVY3em0tMSA3SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxNk1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDlIMTV2MS41aC0xLjV6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMCA1LjV2Nkg4LjVWN0g3VjUuNWgzem0zIDZjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgzLjVWN2gtM3YxaDJjLjU1IDAgMSAuNDUgMSAxdjEuNWMwIC41NS0uNDUgMS0xIDFIMTN6bTIuNSAyLjVIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDE3TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMCA1LjV2Nkg4LjVWN0g3VjUuNWgzem01IDZoLTEuNzVMMTQuNjIgN0gxMlY1LjVoMy41Yy42NyAwIDEuMTUuNjUuOTYgMS4yOUwxNSAxMS41em0uNSAyLjVIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDE4TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMCA1LjV2Nkg4LjVWN0g3VjUuNWgzem02LjUgNWMwIC41NS0uNDUgMS0xIDFIMTNjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgyLjVjLjU1IDAgMSAuNDUgMSAxdjR6bS0zIDBIMTVWOWgtMS41djEuNXptMC0yLjVIMTVWNi41aC0xLjVWOHptMiA2SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxOU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgN2gzVjloLTJjLS41NSAwLTEtLjQ1LTEtMVY2LjVjMC0uNTUuNDUtMSAxLTFoMi41Yy41NSAwIDEgLjQ1IDEgMXY0YzAgLjU1LS40NSAxLTEgMUgxMlYxMHptMS41LTJIMTVWNi41aC0xLjVWOHpNNyA1LjVoM3Y2SDguNVY3SDdWNS41em01IDEzaC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptNi41LTIuNWMwIC41NS0uNDUgMS0xIDFoLTJ2MS41SDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZ6bS0zLTJIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDIwTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgN0gxNnYzaC0xLjV6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41em0yLThjMCAuNTUtLjQ1IDEtMSAxSDE0Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoMi41Yy41NSAwIDEgLjQ1IDEgMXY0ek0xMCA5SDh2MWgzdjEuNUg2LjVWOWMwLS41NS40NS0xIDEtMWgyVjdoLTNWNS41SDEwYy41NSAwIDEgLjQ1IDEgMVY4YzAgLjU1LS40NSAxLTEgMXptNS41IDVIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDIxTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMSA5SDl2MWgzdjEuNUg3LjVWOWMwLS41NS40NS0xIDEtMWgyVjdoLTNWNS41SDExYy41NSAwIDEgLjQ1IDEgMVY4YzAgLjU1LS40NSAxLTEgMXptMy0zLjVoM3Y2aC0xLjVWN0gxNFY1LjV6bTEuNSA4LjVIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDIyTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMCA5SDh2MWgzdjEuNUg2LjVWOWMwLS41NS40NS0xIDEtMWgyVjdoLTNWNS41SDEwYy41NSAwIDEgLjQ1IDEgMVY4YzAgLjU1LS40NSAxLTEgMXptNi41IDBoLTJ2MWgzdjEuNUgxM1Y5YzAtLjU1LjQ1LTEgMS0xaDJWN2gtM1Y1LjVoMy41Yy41NSAwIDEgLjQ1IDEgMVY4YzAgLjU1LS40NSAxLTEgMXptLTEgNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMjNNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6TTEwIDlIOHYxaDN2MS41SDYuNVY5YzAtLjU1LjQ1LTEgMS0xaDJWN2gtM1Y1LjVIMTBjLjU1IDAgMSAuNDUgMSAxVjhjMCAuNTUtLjQ1IDEtMSAxem03LjUgMS41YzAgLjU1LS40NSAxLTEgMUgxM1YxMGgzVjloLTJWOGgyVjdoLTNWNS41aDMuNWMuNTUgMCAxIC40NSAxIDF2NHptLTIgMy41SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQyNE1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTUuNWgtMS41VjE0aC0xdjNIOHYtM0g3djQuNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTFIMTFjLjU1IDAgMSAuNDUgMSAxdjV6bTMuNSAwSDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZjMCAuNTUtLjQ1IDEtMSAxaC0ydjEuNXpNMTAgOUg4djFoM3YxLjVINi41VjljMC0uNTUuNDUtMSAxLTFoMlY3aC0zVjUuNUgxMGMuNTUgMCAxIC40NSAxIDFWOGMwIC41NS0uNDUgMS0xIDF6bTguNSAxaC0xdjEuNUgxNlYxMGgtM1Y1LjVoMS41djNIMTZ2LTNoMS41djNoMVYxMHptLTMgNEgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMk1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTUuNWgtMS41VjE0aC0xdjNIOHYtM0g3djQuNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTFIMTFjLjU1IDAgMSAuNDUgMSAxdjV6bTMuNSAwSDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZjMCAuNTUtLjQ1IDEtMSAxaC0ydjEuNXptLTItOS41aC0ydjFoM3YxLjVIMTBWOWMwLS41NS40NS0xIDEtMWgyVjdoLTNWNS41aDMuNWMuNTUgMCAxIC40NSAxIDFWOGMwIC41NS0uNDUgMS0xIDF6bTIgNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMzBGcHNTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDR2Mmg1djJINXYyaDR2Mkg0djJoNWMxLjEgMCAyLS45IDItMnYtMS41YzAtLjgzLS4xNy0xLjUtMS0xLjUuODMgMCAxLS42NyAxLTEuNVY2YzAtMS4xLS45LTItMi0ySDR6bTE0IDBjMS4xIDAgMiAuOSAyIDJ2NmMwIDEuMS0uOSAyLTIgMmgtM2MtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yaDN6bTAgMmgtM3Y2aDNWNnpNNSAyMkgzdi01aDJ2NXptNCAwSDd2LTVoMnY1em00IDBoLTJ2LTVoMnY1em04IDBoLTZ2LTVoNnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQzTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41em0tMS04YzAgLjU1LS40NSAxLTEgMUgxMFYxMGgzVjloLTJWOGgyVjdoLTNWNS41aDMuNWMuNTUgMCAxIC40NSAxIDF2NHptMSAzLjVIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDRNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLTguNWgtMXYxLjVoLTEuNVYxMGgtM1Y1LjVIMTF2M2gxLjV2LTNIMTR2M2gxVjEwem0uNSA4LjVIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41em0wLTQuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTUuNWgtMS41VjE0aC0xdjNIOHYtM0g3djQuNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTFIMTFjLjU1IDAgMSAuNDUgMSAxdjV6bTMuNSAwSDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZjMCAuNTUtLjQ1IDEtMSAxaC0ydjEuNXpNMTQuNSA3aC0zdjFoMmMuNTUgMCAxIC40NSAxIDF2MS41YzAgLjU1LS40NSAxLTEgMUgxMFYxMGgzVjloLTNWNS41aDQuNVY3em0xIDdIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDYwRnBzU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNnY2aC0zVjZoM3ptMC0yaC0zYy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoM2MxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNyAyVjRINmMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDNjMS4xIDAgMi0uOSAyLTJ2LTJjMC0xLjEtLjktMi0yLTJINlY2aDV6bS0yIDR2Mkg2di0yaDN6TTUgMjJIM3YtNWgydjV6bTQgMEg3di01aDJ2NXptNCAwaC0ydi01aDJ2NXptOCAwaC02di01aDZ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNk1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDlIMTN2MS41aC0xLjV6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptLTEtN2MtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDMuNVY3aC0zdjFoMmMuNTUgMCAxIC40NSAxIDF2MS41YzAgLjU1LS40NSAxLTEgMUgxMXptNC41IDdIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41em0wLTQuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kN01wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTUuNWgtMS41VjE0aC0xdjNIOHYtM0g3djQuNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTFIMTFjLjU1IDAgMSAuNDUgMSAxdjV6bTMuNSAwSDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZjMCAuNTUtLjQ1IDEtMSAxaC0ydjEuNXptLTIuNS03aC0xLjc1TDEyLjYyIDdIMTBWNS41aDMuNWMuNjcgMCAxLjE1LjY1Ljk2IDEuMjlMMTMgMTEuNXptMi41IDIuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kOE1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDlIMTN2MS41aC0xLjV6bTAtMi41SDEzVjhoLTEuNXpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6bS0xLThjMCAuNTUtLjQ1IDEtMSAxSDExYy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoMi41Yy41NSAwIDEgLjQ1IDEgMXY0em0xIDMuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kOU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDYuNUgxM1Y4aC0xLjV6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41em0tMS04YzAgLjU1LS40NSAxLTEgMUgxMFYxMGgzVjloLTJjLS41NSAwLTEtLjQ1LTEtMVY2LjVjMC0uNTUuNDUtMSAxLTFoMi41Yy41NSAwIDEgLjQ1IDEgMXY0em0xIDMuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkQVBob3RvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA0VjFoMnYzaDN2Mkg1djNIM1Y2SDBWNGgzem0zIDZWN2gzVjRoN2wxLjgzIDJIMjFjMS4xIDAgMiAuOSAyIDJ2MTJjMCAxLjEtLjkgMi0yIDJINWMtMS4xIDAtMi0uOS0yLTJWMTBoM3ptNyA5YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01LTUgMi4yNC01IDUgMi4yNCA1IDUgNXptLTMuMi01YzAgMS43NyAxLjQzIDMuMiAzLjIgMy4yczMuMi0xLjQzIDMuMi0zLjItMS40My0zLjItMy4yLTMuMi0zLjIgMS40My0zLjIgMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRQaG90b0FsdGVybmF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDd2Mi45OXMtMS45OS4wMS0yIDBWN2gtM3MuMDEtMS45OSAwLTJoM1YyaDJ2M2gzdjJoLTN6bS0zIDRWOGgtM1Y1SDVjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LThoLTN6TTUgMTlsMy00IDIgMyAzLTQgNCA1SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZFRvUGhvdG9zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6bTE2LTRIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMSA5aC00djRoLTJ2LTRIOVY5aDRWNWgydjRoNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGp1c3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwIDEwLTQuNDkgMTAtMTBTMTcuNTEgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMy04YzAgMS42Ni0xLjM0IDMtMyAzcy0zLTEuMzQtMy0zIDEuMzQtMyAzLTMgMyAxLjM0IDMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQW5pbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMmMtMi43MSAwLTUuMDUgMS41NC02LjIyIDMuNzhhNy4wNjIgNy4wNjIgMCAwIDAtMyAzQTcuMDE0IDcuMDE0IDAgMCAwIDIgMTVjMCAzLjg3IDMuMTMgNyA3IDcgMi43MSAwIDUuMDUtMS41NCA2LjIyLTMuNzhhNy4wNjIgNy4wNjIgMCAwIDAgMy0zQTcuMDE0IDcuMDE0IDAgMCAwIDIyIDljMC0zLjg3LTMuMTMtNy03LTd6TTkgMjBhNS4wMDIgNS4wMDIgMCAwIDEtNC04YzAgMy44NyAzLjEzIDcgNyA3LS44NC42My0xLjg4IDEtMyAxem0zLTNhNS4wMDIgNS4wMDIgMCAwIDEtNC04YzAgMy44NiAzLjEzIDYuOTkgNyA3LS44NC42My0xLjg4IDEtMyAxem00LjctMy4zYy0uNTMuMTktMS4xLjMtMS43LjMtMi43NiAwLTUtMi4yNC01LTUgMC0uNi4xMS0xLjE3LjMtMS43LjUzLS4xOSAxLjEtLjMgMS43LS4zIDIuNzYgMCA1IDIuMjQgNSA1IDAgLjYtLjExIDEuMTctLjMgMS43ek0xOSAxMmMwLTMuODYtMy4xMy02Ljk5LTctN2E1LjAwMiA1LjAwMiAwIDAgMSA3IDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXNzaXN0YW50UGhvdG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC40IDYgMTQgNEg1djE3aDJ2LTdoNS42bC40IDJoN1Y2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3Npc3RhbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNGwzIDMgMy0zaDRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTUuMTIgMTAuODhMMTIgMTdsLTEuODgtNC4xMkw2IDExbDQuMTItMS44OEwxMiA1bDEuODggNC4xMkwxOCAxMWwtNC4xMiAxLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdWRpb3RyYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM3Y5LjI4YTQuMzkgNC4zOSAwIDAgMC0xLjUtLjI4QzguMDEgMTIgNiAxNC4wMSA2IDE2LjVTOC4wMSAyMSAxMC41IDIxYzIuMzEgMCA0LjItMS43NSA0LjQ1LTRIMTVWNmg0VjNoLTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF1dG9Bd2Vzb21lTW9zYWljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1djE0YTIgMiAwIDAgMCAyIDJoNlYzSDVhMiAyIDAgMCAwLTIgMnptMTYtMmgtNnY4aDhWNWMwLTEuMS0uOS0yLTItMnptLTYgMThoNmMxLjEgMCAyLS45IDItMnYtNmgtOHY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdXRvQXdlc29tZU1vdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINGEyIDIgMCAwIDAtMiAydjEwaDJWNGgxMFYyem00IDRIOGEyIDIgMCAwIDAtMiAydjEwaDJWOGgxMFY2em0yIDRoLThhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoOGMxLjEgMCAyLS45IDItMnYtOGMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXV0b0F3ZXNvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSA5IDEuMjUtMi43NUwyMyA1bC0yLjc1LTEuMjVMMTkgMWwtMS4yNSAyLjc1TDE1IDVsMi43NSAxLjI1TDE5IDl6bS03LjUuNUw5IDQgNi41IDkuNSAxIDEybDUuNSAyLjVMOSAyMGwyLjUtNS41TDE3IDEybC01LjUtMi41ek0xOSAxNWwtMS4yNSAyLjc1TDE1IDE5bDIuNzUgMS4yNUwxOSAyM2wxLjI1LTIuNzVMMjMgMTlsLTIuNzUtMS4yNUwxOSAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXV0b0ZpeEhpZ2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgNS42IDEwIDcgOC42IDQuNSAxMCAyIDcuNSAzLjQgNSAybDEuNCAyLjVMNSA3em0xMiA5LjhMMTcgMTRsMS40IDIuNUwxNyAxOWwyLjUtMS40TDIyIDE5bC0xLjQtMi41TDIyIDE0ek0yMiAybC0yLjUgMS40TDE3IDJsMS40IDIuNUwxNyA3bDIuNS0xLjRMMjIgN2wtMS40LTIuNXptLTcuNjMgNS4yOWEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBMMS4yOSAxOC45NmEuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMi4zNCAyLjM0Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMEwxNi43IDExLjA1YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zMy0yLjM1em0tMS4wMyA1LjQ5LTIuMTItMi4xMiAyLjQ0LTIuNDQgMi4xMiAyLjEyLTIuNDQgMi40NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXV0b0ZpeE5vcm1hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDItMi41IDEuNEwxNyAybDEuNCAyLjVMMTcgN2wyLjUtMS40TDIyIDdsLTEuNC0yLjV6bS03LjYzIDUuMjlhLjk5Ni45OTYgMCAwIDAtMS40MSAwTDEuMjkgMTguOTZhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDIuMzQgMi4zNGMuMzkuMzkgMS4wMi4zOSAxLjQxIDBMMTYuNyAxMS4wNWEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTIuMzMtMi4zNXptLTEuMDMgNS40OS0yLjEyLTIuMTIgMi40NC0yLjQ0IDIuMTIgMi4xMi0yLjQ0IDIuNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF1dG9GaXhPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjMgMS0yLjUgMS40TDE4IDFsMS40IDIuNUwxOCA2bDIuNS0xLjRMMjMgNmwtMS40LTIuNUwyMyAxem0tOC4zNCA2LjIyIDIuMTIgMi4xMi0yLjQ0IDIuNDQuODEuODEgMi41NS0yLjU1YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zNC0yLjM0YS45OTYuOTk2IDAgMCAwLTEuNDEgMEwxMS40IDguODRsLjgxLjgxIDIuNDUtMi40M3ptLS43OCA2LjY1LTMuNzUtMy43NS02Ljg2LTYuODZMMiA0LjUzbDYuODYgNi44Ni02LjU3IDYuNTdhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDIuMzQgMi4zNGMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNi41Ny02LjU3TDE5LjQ3IDIybDEuMjctMS4yNy02Ljg2LTYuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF1dG9TdG9yaWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSAxLTUgNXYxMWw1LTQuNVYxek0xIDZ2MTQuNjVjMCAuMjUuMjUuNS41LjUuMSAwIC4xNS0uMDUuMjUtLjA1QzMuMSAyMC40NSA1LjA1IDIwIDYuNSAyMGMxLjk1IDAgNC4wNS40IDUuNSAxLjVWNmMtMS40NS0xLjEtMy41NS0xLjUtNS41LTEuNVMyLjQ1IDQuOSAxIDZ6bTIyIDEzLjVWNmMtLjYtLjQ1LTEuMjUtLjc1LTItMXYxMy41Yy0xLjEtLjM1LTIuMy0uNS0zLjUtLjUtMS43IDAtNC4xNS42NS01LjUgMS41djJjMS4zNS0uODUgMy44LTEuNSA1LjUtMS41IDEuNjUgMCAzLjM1LjMgNC43NSAxLjA1LjEuMDUuMTUuMDUuMjUuMDUuMjUgMCAuNS0uMjUuNS0uNXYtMS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdXRvZnBzU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMDMgNi4zaC0uMDZsLTEuMDIgMi44OWgyLjF6TTMgMTdoMnY1SDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE1YzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02LTYgMi42OS02IDYgMi42OSA2IDYgNnptLS42My0xMGgxLjI1bDIuNjMgN2gtMS4yMWwtLjYzLTEuNzloLTIuODNMOS45NiAxMkg4Ljc0bDIuNjMtN3pNNyAxN2gydjVIN3pNMTEgMTdoMnY1aC0yek0xNSAxN2g2djVoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJlZHRpbWVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS4xOSAyMS4xOSAyLjgxIDIuODEgMS4zOSA0LjIybDIuMjcgMi4yN0E5Ljk1OSA5Ljk1OSAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMDQgMCAzLjkzLS42MiA1LjUxLTEuNjZsMi4yNyAyLjI3IDEuNDEtMS40MnpNMTIuMzQgMi4wMmMtMi4xOC0uMDctNC4xOS41NS01Ljg1IDEuNjRsNC41OSA0LjU5Yy0uMjctMi4wNS4xLTQuMjIgMS4yNi02LjIzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCZWR0aW1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMzQgMi4wMkM2LjU5IDEuODIgMiA2LjQyIDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgMy43MSAwIDYuOTMtMi4wMiA4LjY2LTUuMDItNy41MS0uMjUtMTIuMDktOC40My04LjMyLTE0Ljk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbHVyQ2lyY3VsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA5Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xek03IDkuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTMgN2MtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bS0zLTNjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0zLTZjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xNCA5Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtMS41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXptMyA2Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMC00Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTItMy41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMC0zLjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmx1ckxpbmVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTcuNWMuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNS42NyAxLjUgMS41IDEuNXpNOSAxM2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wLTRjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXpNMyAyMWgxOHYtMkgzdjJ6TTUgOS41Yy44MyAwIDEuNS0uNjcgMS41LTEuNVM1LjgzIDYuNSA1IDYuNSAzLjUgNy4xNyAzLjUgOCA0LjE3IDkuNSA1IDkuNXptMCA0Yy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41LTEuNS42Ny0xLjUgMS41LjY3IDEuNSAxLjUgMS41ek05IDE3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTgtLjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0zIDN2MmgxOFYzSDN6bTE0IDUuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bTAgNGMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTEzIDljLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMCA0Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAgNGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbHVyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0tLjIgNC40OC4yLjAyYy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41LTEuNS42Ny0xLjUgMS41bC4wMi4yYy4wOS42Ny42MSAxLjE5IDEuMjggMS4yOHpNMTQgMy41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXptLTQgMGMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bTExIDdjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xMCA3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTggOGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wLTRjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMC00Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bS00IDEzLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek0yLjUgNS4yN2wzLjc4IDMuNzhMNiA5Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMWMwLS4xLS4wMy0uMTktLjA2LS4yOGwyLjgxIDIuODFjLS43MS4xMS0xLjI1LjczLTEuMjUgMS40NyAwIC44My42NyAxLjUgMS41IDEuNS43NCAwIDEuMzYtLjU0IDEuNDctMS4yNWwyLjgxIDIuODFBLjg3NS44NzUgMCAwIDAgMTQgMTdjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xYzAtLjEtLjAzLS4xOS0uMDYtLjI4bDMuNzggMy43OEwyMCAyMC4yMyAzLjc3IDQgMi41IDUuMjd6TTEwIDE3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTExLTMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTYgMTNjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpNMyA5LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em03IDExYy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNNiAxN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0tMy0zLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbHVyT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEzYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLThjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptLTMgLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek02IDVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMTUgNS41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTQgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wLTMuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bS0xMSAxMGMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTcgN2MtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTAtMTdjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xMCA3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAgNS41Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptOCAuNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC04Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0zIDguNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTE0IDE3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgMy41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptLTQtMTJjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0wIDguNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem00LTQuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTAtNGMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyaWdodG5lc3MxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxMFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDJjLTEuODIgMC0zLjUzLjUtNSAxLjM1QzcuOTkgNS4wOCAxMCA4LjMgMTAgMTJzLTIuMDEgNi45Mi01IDguNjVDNi40NyAyMS41IDguMTggMjIgMTAgMjJjNS41MiAwIDEwLTQuNDggMTAtMTBTMTUuNTIgMiAxMCAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMmMtMS4wNSAwLTIuMDUuMTYtMyAuNDYgNC4wNiAxLjI3IDcgNS4wNiA3IDkuNTQgMCA0LjQ4LTIuOTQgOC4yNy03IDkuNTQuOTUuMyAxLjk1LjQ2IDMgLjQ2IDUuNTIgMCAxMC00LjQ4IDEwLTEwUzE0LjUyIDIgOSAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6TTEyIDE4Yy0uODkgMC0xLjc0LS4yLTIuNS0uNTVDMTEuNTYgMTYuNSAxMyAxNC40MiAxMyAxMnMtMS40NC00LjUtMy41LTUuNDVDMTAuMjYgNi4yIDExLjExIDYgMTIgNmMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnJpZ2h0bmVzczUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNS4zMSAyMy4zMSAxMiAyMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OXpNMTIgMThjLTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTYgNiAyLjY5IDYgNi0yLjY5IDYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzNiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjMxIDIzLjMxIDEyIDIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5ek0xMiAxOFY2YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzNyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6TTEyIDE4Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnptMC0xMGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyb2tlbkltYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwem0yMSAxOWMwIDEuMS0uOSAyLTIgMkg1Yy0xLjEgMC0yLS45LTItMlY1YzAtMS4xLjktMiAyLTJoMTRjMS4xIDAgMiAuOSAyIDJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNXY2LjU5bC0zLTMuMDEtNCA0LjAxLTQtNC00IDQtMy0zLjAxVjVjMC0xLjEuOS0yIDItMmgxNGMxLjEgMCAyIC45IDIgMnptLTMgNi40MiAzIDMuMDFWMTljMCAxLjEtLjkgMi0yIDJINWMtMS4xIDAtMi0uOS0yLTJ2LTYuNThsMyAyLjk5IDQtNCA0IDQgNC0zLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcnVzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTRjLTEuNjYgMC0zIDEuMzQtMyAzIDAgMS4zMS0xLjE2IDItMiAyIC45MiAxLjIyIDIuNDkgMiA0IDIgMi4yMSAwIDQtMS43OSA0LTQgMC0xLjY2LTEuMzQtMy0zLTN6bTEzLjcxLTkuMzctMS4zNC0xLjM0YS45OTYuOTk2IDAgMCAwLTEuNDEgMEw5IDEyLjI1IDExLjc1IDE1bDguOTYtOC45NmEuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJ1cnN0TW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSA1aDJ2MTRIMXptNCAwaDJ2MTRINXptMTcgMEgxMGMtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDEyYy41NSAwIDEtLjQ1IDEtMVY2YzAtLjU1LS40NS0xLTEtMXpNMTEgMTdsMi41LTMuMTVMMTUuMjkgMTZsMi41LTMuMjJMMjEgMTdIMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbWVyYUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMy4yXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMiA3LjE3IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yaC0zLjE3TDE1IDJIOXptMyAxNWMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbWVyYUZyb250IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMjBINXYyaDV2MmwzLTMtMy0zdjJ6bTQgMHYyaDV2LTJoLTV6TTEyIDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTEuOTkuOS0xLjk5IDJTMTAuOSA4IDEyIDh6bTUtOEg3QzUuOSAwIDUgLjkgNSAydjE0YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWMmMwLTEuMS0uOS0yLTItMnpNNyAyaDEwdjEwLjVjMC0xLjY3LTMuMzMtMi41LTUtMi41cy01IC44My01IDIuNVYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW1lcmFSZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMjBINXYyaDV2MmwzLTMtMy0zdjJ6bTQgMHYyaDV2LTJoLTV6bTMtMjBIN0M1LjkgMCA1IC45IDUgMnYxNGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjJjMC0xLjEtLjktMi0yLTJ6bS01IDZjLTEuMTEgMC0yLS45LTItMnMuODktMiAxLjk5LTIgMiAuOSAyIDJDMTQgNS4xIDEzLjEgNiAxMiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW1lcmFSb2xsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNWMwLTEuMS0uOS0yLTItMmgtMVYyYzAtLjU1LS40NS0xLTEtMUg2Yy0uNTUgMC0xIC40NS0xIDF2MUg0Yy0xLjEgMC0yIC45LTIgMnYxNWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJoOFY1aC04em0tMiAxM2gtMnYtMmgydjJ6bTAtOWgtMlY3aDJ2MnptNCA5aC0ydi0yaDJ2MnptMC05aC0yVjdoMnYyem00IDloLTJ2LTJoMnYyem0wLTloLTJWN2gydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTkuNCAxMC41IDQuNzctOC4yNmE5Ljk4NCA5Ljk4NCAwIDAgMC04LjQ5IDIuMDFsMy42NiA2LjM1LjA2LS4xek0yMS41NCA5Yy0uOTItMi45Mi0zLjE1LTUuMjYtNi02LjM0TDExLjg4IDloOS42NnptLjI2IDFoLTcuNDlsLjI5LjUgNC43NiA4LjI1QTkuOTEgOS45MSAwIDAgMCAyMiAxMmMwLS42OS0uMDctMS4zNS0uMi0yek04LjU0IDEybC0zLjktNi43NUE5Ljk1OCA5Ljk1OCAwIDAgMCAyLjIgMTRoNy40OWwtMS4xNS0yem0tNi4wOCAzYy45MiAyLjkyIDMuMTUgNS4yNiA2IDYuMzRMMTIuMTIgMTVIMi40NnptMTEuMjcgMC0zLjkgNi43NmE5Ljk4NCA5Ljk4NCAwIDAgMCA4LjQ5LTIuMDFsLTMuNjYtNi4zNS0uOTMgMS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYXNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDZWNGwtMi0yaC01TDkgNHYySDV2MTFzMSAyIDIgMmgxM3MyLS45OCAyLTJWNmgtNHpNNCA5SDJ2MTFjMCAxLjExLjg5IDIgMiAyaDE0YzEuMTEgMCAyLS44OSAyLTJINFY5em03LTRjMC0uNTUuNTMtMSAxLTFoM2MuNDYgMCAxIC41NCAxIDF2MWgtNVY1ek01IDZoMTd2MTFjMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2VudGVyRm9jdXNTdHJvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptLTcgN0gzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6TTUgNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTE0LTJoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yem0wIDE2aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDZW50ZXJGb2N1c1dlYWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE1SDN2NGMwIDEuMS45IDIgMiAyaDR2LTJINXYtNHpNNSA1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnY0aDJWNXptMTQtMmgtNHYyaDR2NGgyVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6TTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTBTMTcuNTMgMiAxMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb2xsZWN0aW9uc0Jvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTAtMi41LTEuNUwxNSAxMlY0aDV2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29sbGVjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNlY0YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ6bS0xMS00IDIuMDMgMi43MUwxNiAxMWw0IDVIOGwzLTR6TTIgNnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb2xvckxlbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzYTkgOSAwIDAgMCAwIDE4Yy44MyAwIDEuNS0uNjcgMS41LTEuNSAwLS4zOS0uMTUtLjc0LS4zOS0xLjAxLS4yMy0uMjYtLjM4LS42MS0uMzgtLjk5IDAtLjgzLjY3LTEuNSAxLjUtMS41SDE2YzIuNzYgMCA1LTIuMjQgNS01IDAtNC40Mi00LjAzLTgtOS04em0tNS41IDljLS44MyAwLTEuNS0uNjctMS41LTEuNVM1LjY3IDkgNi41IDkgOCA5LjY3IDggMTAuNSA3LjMzIDEyIDYuNSAxMnptMy00QzguNjcgOCA4IDcuMzMgOCA2LjVTOC42NyA1IDkuNSA1czEuNS42NyAxLjUgMS41UzEwLjMzIDggOS41IDh6bTUgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzEzLjY3IDUgMTQuNSA1czEuNS42NyAxLjUgMS41UzE1LjMzIDggMTQuNSA4em0zIDRjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxNi42NyA5IDE3LjUgOXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbG9yaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuNzEgNS42My0yLjM0LTIuMzRhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0zLjEyIDMuMTItMS45My0xLjkxLTEuNDEgMS40MSAxLjQyIDEuNDJMMyAxNi4yNVYyMWg0Ljc1bDguOTItOC45MiAxLjQyIDEuNDIgMS40MS0xLjQxLTEuOTItMS45MiAzLjEyLTMuMTJjLjQtLjQuNC0xLjAzLjAxLTEuNDJ6TTYuOTIgMTkgNSAxNy4wOGw4LjA2LTguMDYgMS45MiAxLjkyTDYuOTIgMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbXBhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNXYyaDJWMWgtMnYyem0wIDE1SDVsNS02djZ6bTktMTVoLTV2Mmg1djEzbC01LTZ2OWg1YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRyYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJjNS41MiAwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTB6bTEtMTcuOTNjMy45NC40OSA3IDMuODUgNyA3Ljkzcy0zLjA1IDcuNDQtNyA3LjkzVjQuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRyb2xQb2ludER1cGxpY2F0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhoLTJ2M2gtM3YyaDN2M2gydi0zaDN2LTJoLTN6TTIgMTJjMC0yLjc5IDEuNjQtNS4yIDQuMDEtNi4zMlYzLjUyQzIuNTIgNC43NiAwIDguMDkgMCAxMnMyLjUyIDcuMjQgNi4wMSA4LjQ4di0yLjE2QTYuOTkgNi45OSAwIDAgMSAyIDEyem0xMy05Yy00Ljk2IDAtOSA0LjA0LTkgOXM0LjA0IDkgOSA5IDktNC4wNCA5LTktNC4wNC05LTktOXptMCAxNmMtMy44NiAwLTctMy4xNC03LTdzMy4xNC03IDctNyA3IDMuMTQgNyA3LTMuMTQgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRyb2xQb2ludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwIDEwLTQuNDkgMTAtMTBTMTcuNTEgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3JvcDE2OSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDdINWMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6bTAgOEg1VjloMTR2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3JvcDMyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNkg1Yy0xLjEgMC0yIC45LTIgMnY4YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMEg1VjhoMTR2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3JvcDU0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNEg1Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINVY2aDE0djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wNzUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1SDVjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxMkg1VjdoMTR2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyb3BEaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyb3BGcmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1djRoMlY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMiAxMEgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6bTE0IDRoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6bTAtMTZoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wTGFuZHNjYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNUg1Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTJINVY3aDE0djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wT3JpZ2luYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6bS01LjA0LTYuNzEtMi43NSAzLjU0LTEuOTYtMi4zNkw2LjUgMTdoMTFsLTMuNTQtNC43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3JvcFBvcnRyYWl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgM0g3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1Y1aDEwdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wUm90YXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjQ3IDIxLjQ5QzQuMiAxOS45MyAxLjg2IDE2Ljc2IDEuNSAxM0gwYy41MSA2LjE2IDUuNjYgMTEgMTEuOTUgMTEgLjIzIDAgLjQ0LS4wMi42Ni0uMDNMOC44IDIwLjE1bC0xLjMzIDEuMzR6TTEyLjA1IDBjLS4yMyAwLS40NC4wMi0uNjYuMDRsMy44MSAzLjgxIDEuMzMtMS4zM0MxOS44IDQuMDcgMjIuMTQgNy4yNCAyMi41IDExSDI0Yy0uNTEtNi4xNi01LjY2LTExLTExLjk1LTExek0xNiAxNGgyVjhhMiAyIDAgMCAwLTItMmgtNnYyaDZ2NnptLTggMlY0SDZ2Mkg0djJoMnY4YTIgMiAwIDAgMCAyIDJoOHYyaDJ2LTJoMnYtMkg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNEg2Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINlY2aDEydjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTVoMlY3YzAtMS4xLS45LTItMi0ySDl2Mmg4djh6TTcgMTdWMUg1djRIMXYyaDR2MTBjMCAxLjEuOSAyIDIgMmgxMHY0aDJ2LTRoNHYtMkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDdXJyZW5jeUJpdGNvaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4wNiAxMS41N2MuNTktLjY5Ljk0LTEuNTkuOTQtMi41NyAwLTEuODYtMS4yNy0zLjQzLTMtMy44N1YzaC0ydjJoLTJWM0g5djJINnYyaDJ2MTBINnYyaDN2Mmgydi0yaDJ2Mmgydi0yYzIuMjEgMCA0LTEuNzkgNC00IDAtMS40NS0uNzgtMi43My0xLjk0LTMuNDN6TTEwIDdoNGMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDJoLTRWN3ptNSAxMGgtNXYtNGg1YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3VycmVuY3lGcmFuYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDVWM0g3djEzSDV2MmgydjNoMnYtM2g0di0ySDl2LTNoOHYtMkg5VjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEN1cnJlbmN5TGlyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgOC43NlYzaDJ2NC41MUwxNSA1djIuMzZsLTQgMi41MS4wMSAyLjM1TDE1IDkuNzJ2Mi4zNmwtNCAyLjUxVjE5YzIuNzYgMCA1LTIuMjQgNS01aDJjMCAzLjg3LTMuMTMgNy03IDdIOXYtNS4xNmwtMyAxLjg4di0yLjM2bDMtMS44OHYtMi4zNkw2IDEzdi0yLjM2bDMtMS44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3VycmVuY3lQb3VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDIxYzEuOTMgMCAzLjYyLTEuMTcgNC0zbC0xLjc1LS44OEMxNiAxOC4yMSAxNS4zMyAxOSAxNCAxOUg5LjFjLjgzLTEgMS41LTIuMzQgMS41LTQgMC0uMzUtLjAzLS42OS0uMDgtMUgxNHYtMkg5LjgyQzkgMTAuNDIgOCA5LjYgOCA4YTMuNSAzLjUgMCAwIDEgNi43OC0xLjIyTDE2LjYzIDZjLS44LTIuMDUtMi43OS0zLjUtNS4xMy0zLjVDOC40NiAyLjUgNiA0Ljk2IDYgOGMwIDEuNzguNzkgMi45IDEuNDkgNEg2djJoMi40N2MuMDguMzEuMTMuNjQuMTMgMSAwIDIuNy0yLjYgNC0yLjYgNHYyaDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEN1cnJlbmN5UnVibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDNIN3Y5SDV2MmgydjJINXYyaDJ2M2gydi0zaDR2LTJIOXYtMmg0LjVjMy4wNCAwIDUuNS0yLjQ2IDUuNS01LjVTMTYuNTQgMyAxMy41IDN6bTAgOUg5VjVoNC41QzE1LjQzIDUgMTcgNi41NyAxNyA4LjVTMTUuNDMgMTIgMTMuNSAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3VycmVuY3lSdXBlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjY2IDdjLS41Ni0xLjE4LTEuNzYtMi0zLjE2LTJINlYzaDEydjJoLTMuMjZjLjQ4LjU4Ljg0IDEuMjYgMS4wNSAySDE4djJoLTIuMDJjLS4yNSAyLjgtMi42MSA1LTUuNDggNWgtLjczbDYuNzMgN2gtMi43N0w3IDE0di0yaDMuNWMxLjc2IDAgMy4yMi0xLjMgMy40Ni0zSDZWN2g3LjY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDdXJyZW5jeVllbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjkyIDExSDE4djJoLTV2Mmg1djJoLTV2NGgtMnYtNEg2di0yaDV2LTJINnYtMmg0LjA4TDUgM2gyLjM3TDEyIDEwLjI5IDE2LjYzIDNIMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEN1cnJlbmN5WXVhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjI4IDEySDE4djJoLTV2N2gtMnYtN0g2di0yaDQuNzJMNSAzaDIuMzdMMTIgMTAuMjkgMTYuNjMgM0gxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVibHVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM3YxOGE5IDkgMCAwIDAgMC0xOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIzXCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNlwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIzXCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCIyMVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjNcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCIxOFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZWhhemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE1LjV2MmgyMHYtMkgyem0wLTV2MmgyMHYtMkgyem0wLTV2MmgyMHYtMkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZXRhaWxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMyAyIDIxaDIwTDEyIDN6bTEgNS45MkwxOC42IDE5SDEzVjguOTJ6bS0yIDBWMTlINS40TDExIDguOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpcnR5TGVucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjk1IDE5SDIwVjdINHYxMmg3LjI0Yy4xNC0uOTguNDItMi4wNS0uMTYtMi40My0uODktLjU5LTEuMjcgMi4wNi0yLjggMS4zNS0xLjM5LTEuMTIgMS4wNS0xLjI5LjUtMy4yNy0uMjItLjc5LTIuMjguMzYtMi40LTEuMjQtLjA4LTEgMS40OS0uNzQgMS41MS0xLjQ5LjAzLS43NS0xLjAzLTEuMDUtLjI1LTEuOTEuMjItLjI0LjcxLS4yNi45MS0uMTkuNzkuMjcgMS41NSAxLjgyIDIuNTEgMS4xOSAxLjAzLS42Ni0xLjg4LTIuMzUgMC0yLjg2IDEuNjQtLjQ0IDEuMzEgMi4wOCAyLjY1IDIuNDQgMS45NC41MiAyLjY1LTQuNTUgNC40MS0yLjMzIDEuODUgMi4zMy0zLjQzIDIuMjctMi44NSA0LjAxLjM0IDEuMDEgMi4xNS0xLjIgMi43Ni41My42NCAxLjgzLTMuMDkuODItMy4wNCAxLjY2LjA2LjgzIDIuNDEuNTUgMS42NCAyLjEyLTEuMTQgMS44Ni0zLTEuMDMtMy44MS4wOS0uMzkuNTctLjA5IDEuNDkuMTMgMi4zM3pNMjAgNWMxLjEgMCAyIC45IDIgMnYxMmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY3YzAtMS4xLjktMiAyLTJoMy4xN0w5IDNoNmwxLjgzIDJIMjB6bS0xLjg2IDEzLjAxYy0uNDcgMC0uODYtLjM4LS44Ni0uODZzLjM4LS44Ni44Ni0uODZjLjQ3IDAgLjg2LjM4Ljg2Ljg2cy0uMzguODYtLjg2Ljg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzIDE3LjI1ek0yMC43MSA3LjA0YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zNC0yLjM0YS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV1cm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxOC41QTYuNDggNi40OCAwIDAgMSA5LjI0IDE1SDE1bDEtMkg4LjU4Yy0uMDUtLjMzLS4wOC0uNjYtLjA4LTFzLjAzLS42Ny4wOC0xSDE1bDEtMkg5LjI0QTYuNDkxIDYuNDkxIDAgMCAxIDE1IDUuNWMxLjYxIDAgMy4wOS41OSA0LjIzIDEuNTdMMjEgNS4zQTguOTU1IDguOTU1IDAgMCAwIDE1IDNjLTMuOTIgMC03LjI0IDIuNTEtOC40OCA2SDNsLTEgMmg0LjA2YTguMjYyIDguMjYyIDAgMCAwIDAgMkgzbC0xIDJoNC41MmMxLjI0IDMuNDkgNC41NiA2IDguNDggNiAyLjMxIDAgNC40MS0uODcgNi0yLjNsLTEuNzgtMS43N2MtMS4xMy45OC0yLjYgMS41Ny00LjIyIDEuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV4cG9zdXJlTmVnMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDExdjJoOHYtMkg0em0xNSA3aC0yVjcuMzhMMTQgOC40VjYuN0wxOC43IDVoLjN2MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV4cG9zdXJlTmVnMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS4wNSAxNi4yOSAyLjg2LTMuMDdjLjM4LS4zOS43Mi0uNzkgMS4wNC0xLjE4LjMyLS4zOS41OS0uNzguODItMS4xNy4yMy0uMzkuNDEtLjc4LjU0LTEuMTdzLjE5LS43OS4xOS0xLjE4YzAtLjUzLS4wOS0xLjAyLS4yNy0xLjQ2LS4xOC0uNDQtLjQ0LS44MS0uNzgtMS4xMS0uMzQtLjMxLS43Ny0uNTQtMS4yNi0uNzFBNS43MiA1LjcyIDAgMCAwIDE2LjQ3IDVjLS42OSAwLTEuMzEuMTEtMS44NS4zMi0uNTQuMjEtMSAuNTEtMS4zNi44OC0uMzcuMzctLjY1LjgtLjg0IDEuMy0uMTguNDctLjI3Ljk3LS4yOCAxLjVoMi4xNGMuMDEtLjMxLjA1LS42LjEzLS44Ny4wOS0uMjkuMjMtLjU0LjQtLjc1LjE4LS4yMS40MS0uMzcuNjgtLjQ5LjI3LS4xMi42LS4xOC45Ni0uMTguMzEgMCAuNTguMDUuODEuMTUuMjMuMS40My4yNS41OS40My4xNi4xOC4yOC40LjM3LjY1LjA4LjI1LjEzLjUyLjEzLjgxIDAgLjIyLS4wMy40My0uMDguNjUtLjA2LjIyLS4xNS40NS0uMjkuNy0uMTQuMjUtLjMyLjUzLS41Ni44My0uMjMuMy0uNTIuNjUtLjg4IDEuMDNsLTQuMTcgNC41NVYxOEgyMXYtMS43MWgtNS45NXpNMiAxMXYyaDh2LTJIMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwb3N1cmVQbHVzMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA3SDh2NEg0djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0xMCAxMWgtMlY3LjM4TDE1IDguNFY2LjdMMTkuNyA1aC4zdjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFeHBvc3VyZVBsdXMyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2LjA1IDE2LjI5IDIuODYtMy4wN2MuMzgtLjM5LjcyLS43OSAxLjA0LTEuMTguMzItLjM5LjU5LS43OC44Mi0xLjE3LjIzLS4zOS40MS0uNzguNTQtMS4xNy4xMy0uMzkuMTktLjc5LjE5LTEuMTggMC0uNTMtLjA5LTEuMDItLjI3LTEuNDYtLjE4LS40NC0uNDQtLjgxLS43OC0xLjExLS4zNC0uMzEtLjc3LS41NC0xLjI2LS43MUE1LjcyIDUuNzIgMCAwIDAgMTcuNDcgNWMtLjY5IDAtMS4zMS4xMS0xLjg1LjMyLS41NC4yMS0xIC41MS0xLjM2Ljg4LS4zNy4zNy0uNjUuOC0uODQgMS4zLS4xOC40Ny0uMjcuOTctLjI4IDEuNWgyLjE0Yy4wMS0uMzEuMDUtLjYuMTMtLjg3LjA5LS4yOS4yMy0uNTQuNC0uNzUuMTgtLjIxLjQxLS4zNy42OC0uNDkuMjctLjEyLjYtLjE4Ljk2LS4xOC4zMSAwIC41OC4wNS44MS4xNS4yMy4xLjQzLjI1LjU5LjQzLjE2LjE4LjI4LjQuMzcuNjUuMDguMjUuMTMuNTIuMTMuODEgMCAuMjItLjAzLjQzLS4wOC42NS0uMDYuMjItLjE1LjQ1LS4yOS43LS4xNC4yNS0uMzIuNTMtLjU2LjgzLS4yMy4zLS41Mi42NS0uODggMS4wM2wtNC4xNyA0LjU1VjE4SDIydi0xLjcxaC01Ljk1ek04IDdINnY0SDJ2Mmg0djRoMnYtNGg0di0ySDhWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwb3N1cmVaZXJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMTQgMTIuNWMwIDEtLjEgMS44NS0uMyAyLjU1LS4yLjctLjQ4IDEuMjctLjgzIDEuNy0uMzYuNDQtLjc5Ljc1LTEuMy45NS0uNTEuMi0xLjA3LjMtMS43LjMtLjYyIDAtMS4xOC0uMS0xLjY5LS4zLS41MS0uMi0uOTUtLjUxLTEuMzEtLjk1LS4zNi0uNDQtLjY1LTEuMDEtLjg1LTEuNy0uMi0uNy0uMy0xLjU1LS4zLTIuNTV2LTIuMDRjMC0xIC4xLTEuODUuMy0yLjU1LjItLjcuNDgtMS4yNi44NC0xLjY5LjM2LS40My44LS43NCAxLjMxLS45M0MxMC44MSA1LjEgMTEuMzggNSAxMiA1Yy42MyAwIDEuMTkuMSAxLjcuMjkuNTEuMTkuOTUuNSAxLjMxLjkzLjM2LjQzLjY0Ljk5Ljg0IDEuNjkuMi43LjMgMS41NC4zIDIuNTV2Mi4wNHptLTIuMTEtMi4zNmMwLS42NC0uMDUtMS4xOC0uMTMtMS42Mi0uMDktLjQ0LS4yMi0uNzktLjQtMS4wNi0uMTctLjI3LS4zOS0uNDYtLjY0LS41OC0uMjUtLjEzLS41NC0uMTktLjg2LS4xOS0uMzIgMC0uNjEuMDYtLjg2LjE4cy0uNDcuMzEtLjY0LjU4Yy0uMTcuMjctLjMxLjYyLS40IDEuMDZzLS4xMy45OC0uMTMgMS42MnYyLjY3YzAgLjY0LjA1IDEuMTguMTQgMS42Mi4wOS40NS4yMy44MS40IDEuMDlzLjM5LjQ4LjY0LjYxLjU0LjE5Ljg3LjE5Yy4zMyAwIC42Mi0uMDYuODctLjE5cy40Ni0uMzMuNjMtLjYxYy4xNy0uMjguMy0uNjQuMzktMS4wOS4wOS0uNDUuMTMtLjk5LjEzLTEuNjJ2LTIuNjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV4cG9zdXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNNiA3aDV2MS41SDZWN3ptMTMgMTJINUwxOSA1djE0em0tNC41LTN2MkgxNnYtMmgydi0xLjVoLTJ2LTJoLTEuNXYyaC0yVjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYWNlUmV0b3VjaGluZ05hdHVyYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC43NyA4LjU4LS45MiAyLjAxYy4wOS40Ni4xNS45My4xNSAxLjQxIDAgNC40MS0zLjU5IDgtOCA4cy04LTMuNTktOC04YzAtLjA1LjAxLS4xIDAtLjE0IDIuNi0uOTggNC42OS0yLjk5IDUuNzQtNS41NUExMCAxMCAwIDAgMCAxNy41IDEwYy40NSAwIC44OS0uMDQgMS4zMy0uMWwtLjYtMS4zMi0uODgtMS45My0xLjkzLS44OC0yLjc5LTEuMjcgMi43OS0xLjI3LjcxLS4zMkE5Ljg2IDkuODYgMCAwIDAgMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwYzAtMS40Ny0uMzMtMi44Ny0uOS00LjEzbC0uMzMuNzF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC42IDUuNiAxOS41IDhsLTEuMS0yLjRMMTYgNC41bDIuNC0xLjFMMTkuNSAxbDEuMSAyLjRMMjMgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYWNlUmV0b3VjaGluZ09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgMTBjLjc1IDAgMS40Ny0uMDkgMi4xNy0uMjQuMjEuNzEuMzMgMS40Ni4zMyAyLjI0IDAgMS4yMi0uMjggMi4zNy0uNzcgMy40bDEuNDkgMS40OUE5Ljk4MSA5Ljk4MSAwIDAgMCAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMC0xLjc4IDAtMy40NC40Ny00Ljg5IDEuMjhsNS4zMyA1LjMzYzEuNDkuODggMy4yMSAxLjM5IDUuMDYgMS4zOXpNMS44OSAzLjcybDIuMTkgMi4xOUE5Ljk1OCA5Ljk1OCAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMjkgMCA0LjQtLjc4IDYuMDktMi4wOGwyLjE5IDIuMTkgMS40MS0xLjQxTDMuMzEgMi4zMSAxLjg5IDMuNzJ6bTE0Ljc3IDE0Ljc3QTcuOTEgNy45MSAwIDAgMSAxMiAyMGMtNC40MSAwLTgtMy41OS04LTggMC0uMDUuMDEtLjEgMC0uMTRhOS45NDYgOS45NDYgMCAwIDAgMy42NC0yLjM5bDkuMDIgOS4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xMSAxMGgyVjVoLTR2Mmgydjh6bTctMTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS00LTRoLTR2LTJoMmEyIDIgMCAwIDAgMi0yVjdhMiAyIDAgMCAwLTItMmgtNHYyaDR2MmgtMmEyIDIgMCAwIDAtMiAydjRoNnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDFIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHpNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE0IDh2LTEuNWMwLS44My0uNjctMS41LTEuNS0xLjUuODMgMCAxLjUtLjY3IDEuNS0xLjVWN2EyIDIgMCAwIDAtMi0yaC00djJoNHYyaC0ydjJoMnYyaC00djJoNGEyIDIgMCAwIDAgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXI0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTEyIDEwaDJWNWgtMnY0aC0yVjVoLTJ2Nmg0djR6bTYtMTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyNSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDFIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHpNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE0IDh2LTJhMiAyIDAgMCAwLTItMmgtMlY3aDRWNWgtNnY2aDR2MmgtNHYyaDRhMiAyIDAgMCAwIDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyNiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS04LTJoMmEyIDIgMCAwIDAgMi0ydi0yYTIgMiAwIDAgMC0yLTJoLTJWN2g0VjVoLTRhMiAyIDAgMCAwLTIgMnY2YTIgMiAwIDAgMCAyIDJ6bTAtNGgydjJoLTJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlcjcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0em0tOC0yIDQtOFY1aC02djJoNGwtNCA4aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlcjggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0em0tOC0yaDJhMiAyIDAgMCAwIDItMnYtMS41YzAtLjgzLS42Ny0xLjUtMS41LTEuNS44MyAwIDEuNS0uNjcgMS41LTEuNVY3YTIgMiAwIDAgMC0yLTJoLTJhMiAyIDAgMCAwLTIgMnYxLjVjMCAuODMuNjcgMS41IDEuNSAxLjUtLjgzIDAtMS41LjY3LTEuNSAxLjVWMTNhMiAyIDAgMCAwIDIgMnptMC04aDJ2MmgtMlY3em0wIDRoMnYyaC0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXI5UGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xMSA3VjhhMiAyIDAgMCAwLTItMmgtMWEyIDIgMCAwIDAtMiAydjFhMiAyIDAgMCAwIDIgMmgxdjFIOXYyaDNhMiAyIDAgMCAwIDItMnptLTMtM1Y4aDF2MWgtMXptMTAtOEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgOGgtMlY3aC0ydjJoLTJ2MmgydjJoMnYtMmgydjZIN1YzaDE0djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlcjkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0ek0xNSA1aC0yYTIgMiAwIDAgMC0yIDJ2MmEyIDIgMCAwIDAgMiAyaDJ2MmgtNHYyaDRhMiAyIDAgMCAwIDItMlY3YTIgMiAwIDAgMC0yLTJ6bTAgNGgtMlY3aDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyQkFuZFcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi03LTh2OEg1bDctOFY1aDd2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlckNlbnRlckZvY3VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNUgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6TTUgNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTE0LTJoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yem0wIDE2aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0ek0xMiA5Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyRHJhbWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4zNSAxMC4wNEE3LjQ5IDcuNDkgMCAwIDAgMTIgNGE3LjQ4IDcuNDggMCAwIDAtNi42NCA0LjA0QTUuOTk2IDUuOTk2IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE5IDE4SDZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNGgyYzAtMi43Ni0xLjg2LTUuMDgtNC40LTUuNzhDOC42MSA2Ljg4IDEwLjIgNiAxMiA2YzMuMDMgMCA1LjUgMi40NyA1LjUgNS41di41SDE5YzEuNjUgMCAzIDEuMzUgMyAzcy0xLjM1IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXJGcmFtZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0aC00bC00LTQtNCA0SDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNkg0VjZoNC41MmwzLjUyLTMuNUwxNS41MiA2SDIwdjE0ek0xOCA4SDZ2MTBoMTJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVySGRyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQgNi0zLjc1IDUgMi44NSAzLjgtMS42IDEuMkM5LjgxIDEzLjc1IDcgMTAgNyAxMGwtNiA4aDIyTDE0IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlck5vbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXJUaWx0U2hpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA0LjA3VjIuMDVjLTIuMDEuMi0zLjg0IDEtNS4zMiAyLjIxTDcuMSA1LjY5QTcuOTQxIDcuOTQxIDAgMCAxIDExIDQuMDd6bTcuMzIuMTlBOS45NDkgOS45NDkgMCAwIDAgMTMgMi4wNXYyLjAyYzEuNDYuMTggMi43OS43NiAzLjkgMS42MmwxLjQyLTEuNDN6TTE5LjkzIDExaDIuMDJjLS4yLTIuMDEtMS0zLjg0LTIuMjEtNS4zMkwxOC4zMSA3LjFhNy45NDEgNy45NDEgMCAwIDEgMS42MiAzLjl6TTUuNjkgNy4xIDQuMjYgNS42OEE5Ljk0OSA5Ljk0OSAwIDAgMCAyLjA1IDExaDIuMDJjLjE4LTEuNDYuNzYtMi43OSAxLjYyLTMuOXpNNC4wNyAxM0gyLjA1Yy4yIDIuMDEgMSAzLjg0IDIuMjEgNS4zMmwxLjQzLTEuNDNBNy44NjggNy44NjggMCAwIDEgNC4wNyAxM3pNMTUgMTJjMC0xLjY2LTEuMzQtMy0zLTNzLTMgMS4zNC0zIDMgMS4zNCAzIDMgMyAzLTEuMzQgMy0zem0zLjMxIDQuOSAxLjQzIDEuNDNhOS45ODEgOS45ODEgMCAwIDAgMi4yMS01LjMyaC0yLjAyYTcuOTQ1IDcuOTQ1IDAgMCAxLTEuNjIgMy44OXpNMTMgMTkuOTN2Mi4wMmMyLjAxLS4yIDMuODQtMSA1LjMyLTIuMjFsLTEuNDMtMS40M2MtMS4xLjg2LTIuNDMgMS40NC0zLjg5IDEuNjJ6bS03LjMyLS4xOUE5Ljk4MSA5Ljk4MSAwIDAgMCAxMSAyMS45NXYtMi4wMmE3Ljk0MSA3Ljk0MSAwIDAgMS0zLjktMS42MmwtMS40MiAxLjQzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXJWaW50YWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNyAxMi40YTYuMDYgNi4wNiAwIDAgMC0uODYtLjRjLjI5LS4xMS41OC0uMjQuODYtLjRhNi4wMTIgNi4wMTIgMCAwIDAgMy01LjE5IDYuMDA3IDYuMDA3IDAgMCAwLTYgMGMtLjI4LjE2LS41NC4zNS0uNzguNTQuMDUtLjMxLjA4LS42My4wOC0uOTUgMC0yLjIyLTEuMjEtNC4xNS0zLTUuMTlDMTAuMjEgMS44NSA5IDMuNzggOSA2YzAgLjMyLjAzLjY0LjA4Ljk1LS4yNC0uMi0uNS0uMzktLjc4LS41NWE2LjAwOCA2LjAwOCAwIDAgMC02IDAgNS45NyA1Ljk3IDAgMCAwIDMgNS4xOWMuMjguMTYuNTcuMjkuODYuNC0uMjkuMTEtLjU4LjI0LS44Ni40YTYuMDEyIDYuMDEyIDAgMCAwLTMgNS4xOSA2LjAwNyA2LjAwNyAwIDAgMCA2IDBjLjI4LS4xNi41NC0uMzUuNzgtLjU0LS4wNS4zMi0uMDguNjQtLjA4Ljk2IDAgMi4yMiAxLjIxIDQuMTUgMyA1LjE5IDEuNzktMS4wNCAzLTIuOTcgMy01LjE5IDAtLjMyLS4wMy0uNjQtLjA4LS45NS4yNC4yLjUuMzguNzguNTRhNi4wMDggNi4wMDggMCAwIDAgNiAwIDYuMDEyIDYuMDEyIDAgMCAwLTMtNS4xOXpNMTIgMTZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS45NiAxMC4yOS0yLjc1IDMuNTQtMS45Ni0yLjM2TDguNSAxNWgxMWwtMy41NC00Ljcxek0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTFIMXYyaDZ2LTJ6bTIuMTctMy4yNEw3LjA1IDUuNjQgNS42NCA3LjA1bDIuMTIgMi4xMiAxLjQxLTEuNDF6TTEzIDFoLTJ2NmgyVjF6bTUuMzYgNi4wNS0xLjQxLTEuNDEtMi4xMiAyLjEyIDEuNDEgMS40MSAyLjEyLTIuMTJ6TTE3IDExdjJoNnYtMmgtNnptLTUtMmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTIuODMgNy4yNCAyLjEyIDIuMTIgMS40MS0xLjQxLTIuMTItMi4xMi0xLjQxIDEuNDF6bS05LjE5LjcxIDEuNDEgMS40MSAyLjEyLTIuMTItMS40MS0xLjQxLTIuMTIgMi4xMnpNMTEgMjNoMnYtNmgtMnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGFzaEF1dG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDJ2MTJoM3Y5bDctMTJIOWw0LTlIM3ptMTYgMGgtMmwtMy4yIDloMS45bC43LTJoMy4ybC43IDJoMS45TDE5IDJ6bS0yLjE1IDUuNjVMMTggNGwxLjE1IDMuNjVoLTIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxhc2hPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjI3IDMgMiA0LjI3bDUgNVYxM2gzdjlsMy41OC02LjE0TDE3LjczIDIwIDE5IDE4LjczIDMuMjcgM3pNMTcgMTBoLTRsNC04SDd2Mi4xOGw4LjQ2IDguNDZMMTcgMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsYXNoT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDJ2MTFoM3Y5bDctMTJoLTRsNC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGlwQ2FtZXJhQW5kcm9pZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTJjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtMy0xLjM0LTMtMy0zLTMgMS4zNC0zIDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTBWOEg1LjA5QzYuNDcgNS42MSA5LjA1IDQgMTIgNGMzLjcyIDAgNi44NSAyLjU2IDcuNzQgNmgyLjA2Yy0uOTMtNC41Ni00Ljk2LTgtOS44LTgtMy4yNyAwLTYuMTggMS41OC04IDQuMDFWNEgydjZoNnpNMTYgMTR2MmgyLjkxYy0xLjM4IDIuMzktMy45NiA0LTYuOTEgNC0zLjcyIDAtNi44NS0yLjU2LTcuNzQtNkgyLjJjLjkzIDQuNTYgNC45NiA4IDkuOCA4IDMuMjcgMCA2LjE4LTEuNTggOC00LjAxVjIwaDJ2LTZoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsaXBDYW1lcmFJb3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1aC0zLjE3TDE1IDNIOUw3LjE3IDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tOCAxM2MtMi43NiAwLTUtMi4yNC01LTVINWwyLjUtMi41TDEwIDEzSDhjMCAyLjIxIDEuNzkgNCA0IDQgLjU4IDAgMS4xMy0uMTMgMS42Mi0uMzVsLjc0Ljc0Yy0uNzEuMzctMS41LjYxLTIuMzYuNjF6bTQuNS0yLjVMMTQgMTNoMmMwLTIuMjEtMS43OS00LTQtNC0uNTggMC0xLjEzLjEzLTEuNjIuMzVsLS43NC0uNzNDMTAuMzUgOC4yNCAxMS4xNCA4IDEyIDhjMi43NiAwIDUgMi4yNCA1IDVoMmwtMi41IDIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDIxaDJ2LTJoLTJ2MnptNC0xMmgyVjdoLTJ2MnpNMyA1djE0YzAgMS4xLjkgMiAyIDJoNHYtMkg1VjVoNFYzSDVjLTEuMSAwLTIgLjktMiAyem0xNi0ydjJoMmMwLTEuMS0uOS0yLTItMnptLTggMjBoMlYxaC0ydjIyem04LTZoMnYtMmgtMnYyek0xNSA1aDJWM2gtMnYyem00IDhoMnYtMmgtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JhZGllbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA5aDJ2MmgtMnptLTIgMmgydjJIOXptNCAwaDJ2MmgtMnptMi0yaDJ2MmgtMnpNNyA5aDJ2Mkg3em0xMi02SDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxOEg3di0yaDJ2MnptNCAwaC0ydi0yaDJ2MnptNCAwaC0ydi0yaDJ2MnptMi03aC0ydjJoMnYyaC0ydi0yaC0ydjJoLTJ2LTJoLTJ2Mkg5di0ySDd2Mkg1di0yaDJ2LTJINVY1aDE0djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdyYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTJjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yek02IDhjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDhjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0xMi04YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptLTQgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTQtNGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS00LTRjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0tNC00Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JpZE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNHYxLjQ1bDIgMlY0aDR2NGgtMy40NWwyIDJIMTR2MS40NWwyIDJWMTBoNHY0aC0zLjQ1bDIgMkgyMHYxLjQ1bDIgMlY0YzAtMS4xLS45LTItMi0ySDQuNTVsMiAySDh6bTggMGg0djRoLTRWNHpNMS4yNyAxLjI3IDAgMi41NWwyIDJWMjBjMCAxLjEuOSAyIDIgMmgxNS40NmwyIDIgMS4yNy0xLjI3TDEuMjcgMS4yN3pNMTAgMTIuNTUgMTEuNDUgMTRIMTB2LTEuNDV6bS02LTZMNS40NSA4SDRWNi41NXpNOCAyMEg0di00aDR2NHptMC02SDR2LTRoMy40NWwuNTUuNTVWMTR6bTYgNmgtNHYtNGgzLjQ1bC41NS41NFYyMHptMiAwdi0xLjQ2TDE3LjQ2IDIwSDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcmlkT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNOCAyMEg0di00aDR2NHptMC02SDR2LTRoNHY0em0wLTZINFY0aDR2NHptNiAxMmgtNHYtNGg0djR6bTAtNmgtNHYtNGg0djR6bTAtNmgtNFY0aDR2NHptNiAxMmgtNHYtNGg0djR6bTAtNmgtNHYtNGg0djR6bTAtNmgtNFY0aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGRyRW5oYW5jZWRTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTYgMi42OS02IDYtNnptMCAyQzkuNzkgNCA4IDUuNzkgOCA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0xIDdoLTJWOUg5VjdoMlY1aDJ2MmgydjJoLTJ2MnptMTEgOWgtMnYyaC0xLjV2LTJoLTJ2LTEuNWgydi0ySDIydjJoMlYyMHptLTYtMS41YzAgLjYtLjQgMS4xLS45IDEuNEwxOCAyMmgtMS41bC0uOS0yaC0xLjF2MkgxM3YtNmgzLjVjLjggMCAxLjUuNyAxLjUgMS41djF6bS0xLjUgMHYtMWgtMnYxaDJ6bS0xMy0uNXYtMkg1djZIMy41di0yLjVoLTJWMjJIMHYtNmgxLjV2Mmgyem02LjUtMmMuOCAwIDEuNS43IDEuNSAxLjV2M2MwIC44LS43IDEuNS0xLjUgMS41SDYuNXYtNkgxMHptMCA0LjV2LTNIOHYzaDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhkck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNSAxNXYtMmgxLjFsLjkgMkgyMWwtLjktMi4xYy41LS4yLjktLjguOS0xLjR2LTFjMC0uOC0uNy0xLjUtMS41LTEuNUgxNnY0LjlsMS4xIDEuMWguNHptMC00LjVoMnYxaC0ydi0xem0tNC41IDB2LjRsMS41IDEuNXYtMS45YzAtLjgtLjctMS41LTEuNS0xLjVoLTEuOWwxLjUgMS41aC40em0tMy41LTEtNy03LTEuMSAxTDYuOSA5aC0uNHYyaC0yVjlIM3Y2aDEuNXYtMi41aDJWMTVIOHYtNC45bDEuNSAxLjVWMTVoMy40bDcuNiA3LjYgMS4xLTEuMS0xMi4xLTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZHJPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTEuNXYtMWMwLS44LS43LTEuNS0xLjUtMS41SDE2djZoMS41di0yaDEuMWwuOSAySDIxbC0uOS0yLjFjLjUtLjMuOS0uOC45LTEuNHptLTEuNSAwaC0ydi0xaDJ2MXptLTEzLS41aC0yVjlIM3Y2aDEuNXYtMi41aDJWMTVIOFY5SDYuNXYyek0xMyA5SDkuNXY2SDEzYy44IDAgMS41LS43IDEuNS0xLjV2LTNjMC0uOC0uNy0xLjUtMS41LTEuNXptMCA0LjVoLTJ2LTNoMnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZHJQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDE0LjVoMnYxaC0yek0xNC41IDcuNUgxNnYzaC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMTMuNWMwIC42LS40IDEuMS0uOSAxLjRMMTIgMTloLTEuNWwtLjktMkg4LjV2Mkg3di02aDMuNWMuOCAwIDEuNS43IDEuNSAxLjV2MXptMC0zLjVoLTEuNVY5LjVoLTJWMTJIN1Y2aDEuNXYyaDJWNkgxMnY2em01LjUgNEgxNnYxLjVoLTEuNVYxNkgxM3YtMS41aDEuNVYxM0gxNnYxLjQ5aDEuNVYxNnptMC01LjVjMCAuOC0uNyAxLjUtMS41IDEuNWgtM1Y2aDNjLjggMCAxLjUuNyAxLjUgMS41djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhkclN0cm9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDZjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02ek01IDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZHJXZWFrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMTItMmMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6bTAgMTBjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWFsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuNzMgMTIuMDIgMy45OC0zLjk4YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtNC4zNC00LjM0YS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtMy45OCAzLjk4TDggMi4yOWExLjAwMSAxLjAwMSAwIDAgMC0xLjQxIDBMMi4yNSA2LjYzYS45OTYuOTk2IDAgMCAwIDAgMS40MWwzLjk4IDMuOThMMi4yNSAxNmEuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsNC4zNCA0LjM0Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGwzLjk4LTMuOTggMy45OCAzLjk4Yy4yLjIuNDUuMjkuNzEuMjkuMjYgMCAuNTEtLjEuNzEtLjI5bDQuMzQtNC4zNGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTMuOTktMy45OHpNMTIgOWMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tNC43MSAxLjk2TDMuNjYgNy4zNGwzLjYzLTMuNjMgMy42MiAzLjYyLTMuNjIgMy42M3pNMTAgMTNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMiAyYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTItNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0yLjY2IDkuMzQtMy42My0zLjYyIDMuNjMtMy42MyAzLjYyIDMuNjItMy42MiAzLjYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZXZjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41IDExaC0xVjlIM3Y2aDEuNXYtMi41aDFWMTVIN1Y5SDUuNXpNMjEgMTF2LTFjMC0uNTUtLjQ1LTEtMS0xaC0yYy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWgyYy41NSAwIDEtLjQ1IDEtMXYtMWgtMS41di41aC0xdi0zaDF2LjVIMjF6TTE0LjI1IDEzLjUgMTMuNSA5SDEybDEgNmgyLjVsMS02SDE1ek04IDl2NmgzLjV2LTEuNWgtMnYtMWgyVjExaC0ydi0uNWgyVjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhpZGVJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVjMC0xLjEtLjktMi0yLTJINS44M0wyMSAxOC4xN1Y1ek0yLjgxIDIuODEgMS4zOSA0LjIyIDMgNS44M1YxOWMwIDEuMS45IDIgMiAyaDEzLjE3bDEuNjEgMS42MSAxLjQxLTEuNDFMMi44MSAyLjgxek02IDE3bDMtNCAyLjI1IDMgLjgyLTEuMSAyLjEgMi4xSDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEltYWdlQXNwZWN0UmF0aW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMGgtMnYyaDJ2LTJ6bTAgNGgtMnYyaDJ2LTJ6bS04LTRINnYyaDJ2LTJ6bTQgMGgtMnYyaDJ2LTJ6bTgtNkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDE2djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbWFnZU5vdFN1cHBvcnRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjkgMjEuOS04LjQ5LTguNDktOS44Mi05LjgyTDIuMSAyLjEuNjkgMy41MSAzIDUuODNWMTljMCAxLjEuOSAyIDIgMmgxMy4xN2wyLjMxIDIuMzEgMS40Mi0xLjQxek01IDE4bDMuNS00LjUgMi41IDMuMDFMMTIuMTcgMTVsMyAzSDV6bTE2IC4xN0w1LjgzIDNIMTljMS4xIDAgMiAuOSAyIDJ2MTMuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEltYWdlU2VhcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTN2N0g0VjZoNS4wMmMuMDUtLjcxLjIyLTEuMzguNDgtMkg0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi01bC0yLTJ6bS0xLjUgNWgtMTFsMi43NS0zLjUzIDEuOTYgMi4zNiAyLjc1LTMuNTR6bTIuOC05LjExYy40NC0uNy43LTEuNTEuNy0yLjM5QzIwIDQuMDEgMTcuOTkgMiAxNS41IDJTMTEgNC4wMSAxMSA2LjVzMi4wMSA0LjUgNC40OSA0LjVjLjg4IDAgMS43LS4yNiAyLjM5LS43TDIxIDEzLjQyIDIyLjQyIDEyIDE5LjMgOC44OXpNMTUuNSA5YTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE5VjVjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnpNOC41IDEzLjVsMi41IDMuMDFMMTQuNSAxMmw0LjUgNkg1bDMuNS00LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluY29tcGxldGVDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMmMwIDUuNTItNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0yLjc2IDEuMTItNS4yNiAyLjkzLTcuMDdMMTIgMTJWMmM1LjUyIDAgMTAgNC40OCAxMCAxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSXNvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek01LjUgNy41aDJ2LTJIOXYyaDJWOUg5djJINy41VjloLTJWNy41ek0xOSAxOUg1TDE5IDV2MTR6bS0yLTJ2LTEuNWgtNVYxN2g1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYW5kc2NhcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA2LTMuNzUgNSAyLjg1IDMuOC0xLjYgMS4yQzkuODEgMTMuNzUgNyAxMCA3IDEwbC02IDhoMjJMMTQgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGVha0FkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgM0gzdjNjMS42NiAwIDMtMS4zNCAzLTN6bTggMGgtMmE5IDkgMCAwIDEtOSA5djJjNi4wOCAwIDExLTQuOTMgMTEtMTF6bS00IDBIOGMwIDIuNzYtMi4yNCA1LTUgNXYyYzMuODcgMCA3LTMuMTMgNy03em0wIDE4aDJhOSA5IDAgMCAxIDktOXYtMmMtNi4wNyAwLTExIDQuOTMtMTEgMTF6bTggMGgzdi0zYy0xLjY2IDAtMyAxLjM0LTMgM3ptLTQgMGgyYzAtMi43NiAyLjI0LTUgNS01di0yYy0zLjg3IDAtNyAzLjEzLTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGVha1JlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDNIOGMwIC4zNy0uMDQuNzItLjEyIDEuMDZsMS41OSAxLjU5QzkuODEgNC44NCAxMCAzLjk0IDEwIDN6TTMgNC4yN2wyLjg0IDIuODRDNS4wMyA3LjY3IDQuMDYgOCAzIDh2MmMxLjYxIDAgMy4wOS0uNTUgNC4yNy0xLjQ2TDguNyA5Ljk3QTguOTkgOC45OSAwIDAgMSAzIDEydjJjMi43MSAwIDUuMTktLjk5IDcuMTEtMi42MmwyLjUgMi41QTExLjA0NCAxMS4wNDQgMCAwIDAgMTAgMjFoMmMwLTIuMTYuNzYtNC4xNCAyLjAzLTUuNjlsMS40MyAxLjQzQTYuOTIyIDYuOTIyIDAgMCAwIDE0IDIxaDJjMC0xLjA2LjMzLTIuMDMuODktMi44NEwxOS43MyAyMSAyMSAxOS43MyA0LjI3IDMgMyA0LjI3ek0xNCAzaC0yYzAgMS41LS4zNyAyLjkxLTEuMDIgNC4xNmwxLjQ2IDEuNDZDMTMuNDIgNi45OCAxNCA1LjA2IDE0IDN6bTUuOTQgMTMuMTJjLjM0LS4wOC42OS0uMTIgMS4wNi0uMTJ2LTJjLS45NCAwLTEuODQuMTktMi42Ni41MmwxLjYgMS42em0tNC41Ni00LjU2IDEuNDYgMS40NkE4Ljk4IDguOTggMCAwIDEgMjEgMTJ2LTJjLTIuMDYgMC0zLjk4LjU4LTUuNjIgMS41NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGVucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpbmtlZENhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIzLjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCI1XCIsXCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDMuMzNjMi41OCAwIDQuNjcgMi4wOSA0LjY3IDQuNjdIMjJjMC0zLjMxLTIuNjktNi02LTZ2MS4zM00xNiA2YzEuMTEgMCAyIC44OSAyIDJoMS4zM2MwLTEuODQtMS40OS0zLjMzLTMuMzMtMy4zM1Y2XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDBIMHYyNGgyNFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA5YzAtMS4xMS0uODktMi0yLTJWNEg5TDcuMTcgNkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjloLTV6bS01IDEwYy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9nb0RldiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek03LjY4IDE0Ljk4SDZWOWgxLjcxYzEuMjggMCAxLjcxIDEuMDMgMS43MSAxLjcxdjIuNTZjMCAuNjgtLjQyIDEuNzEtMS43NCAxLjcxem00LjctMy41MnYxLjA3SDExLjJ2MS4zOWgxLjkzdjEuMDdoLTIuMjVjLS40LjAxLS43NC0uMzEtLjc1LS43MVY5Ljc1Yy0uMDEtLjQuMzEtLjc0LjcxLS43NWgyLjI4djEuMDdIMTEuMnYxLjM5aDEuMTh6bTQuNSAyLjc3Yy0uNDggMS4xMS0xLjMzLjg5LTEuNzEgMEwxMy43NyA5aDEuMThsMS4wNyA0LjExTDE3LjA5IDloMS4xOGwtMS4zOSA1LjIzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljc3IDEwLjEyaC0uNjN2My43N2guNjNjLjE0IDAgLjI4LS4wNS40Mi0uMTYuMTQtLjEuMjEtLjI2LjIxLS40N3YtMi41MmMwLS4yMS0uMDctLjM3LS4yMS0uNDdhLjcyLjcyIDAgMCAwLS40Mi0uMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvb2tzMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNLjAxIDBoMjR2MjRoLTI0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4wMSAzaC0xNGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNCA3LjVjMCAuODMtLjY3IDEuNS0xLjUgMS41LjgzIDAgMS41LjY3IDEuNSAxLjVWMTVhMiAyIDAgMCAxLTIgMmgtNHYtMmg0di0yaC0ydi0yaDJWOWgtNFY3aDRhMiAyIDAgMCAxIDIgMnYxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvb2tzNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNCAxNGgtMnYtNEg5VjdoMnY0aDJWN2gydjEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb29rczUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQgNmgtNHYyaDJhMiAyIDAgMCAxIDIgMnYyYTIgMiAwIDAgMS0yIDJIOXYtMmg0di0ySDlWN2g2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvb2tzNiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE1aDJ2LTJoLTJ2MnptOC0xMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS00IDZoLTR2MmgyYTIgMiAwIDAgMSAyIDJ2MmEyIDIgMCAwIDEtMiAyaC0yYTIgMiAwIDAgMS0yLTJWOWEyIDIgMCAwIDEgMi0yaDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9va3NPbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTUgMTRoLTJWOWgtMlY3aDR2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvb2tzVHdvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS00IDhhMiAyIDAgMCAxLTIgMmgtMnYyaDR2Mkg5di00YTIgMiAwIDAgMSAyLTJoMlY5SDlWN2g0YTIgMiAwIDAgMSAyIDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9va3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMGMtMy44NiAwLTcgMy4xNC03IDdoMmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1aDJjMC0zLjg2LTMuMTQtNy03LTd6bTAtNEM1LjkzIDYgMSAxMC45MyAxIDE3aDJjMC00Ljk2IDQuMDQtOSA5LTlzOSA0LjA0IDkgOWgyYzAtNi4wNy00LjkzLTExLTExLTExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb3VwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwaDhjMS4xIDAgMi0uOSAyLTJ2LThjMC01LjUxLTQuNDktMTAtMTAtMTB6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNaWNFeHRlcm5hbE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjIgNS4xNyA4SDRsMSAxMGgxYzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTR2LTEuMTdsNS43OCA1Ljc4IDEuNDEtMS40MnpNMTIgMThjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yaDFsLjU2LTUuNjFMMTIgMTQuODNWMTh6bTItMTJ2NS4xN2wtMi0yVjZjMC0yLjIxIDEuNzktNCA0LTRzNCAxLjc5IDQgNHYxMS4xN2wtMi0yVjZjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAyem0tNC0xYzAgLjYyLS4yIDEuMTgtLjUyIDEuNjZMNS4zMyAyLjUxQTIuOTk2IDIuOTk2IDAgMCAxIDEwIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1pY0V4dGVybmFsT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjIyIDdINC43OEM0LjMgNi40NyA0IDUuNzcgNCA1YzAtMS42NiAxLjM0LTMgMy0zczMgMS4zNCAzIDNjMCAuNzctLjMgMS40Ny0uNzggMnpNMTYgMmMyLjIxIDAgNCAxLjc5IDQgNHYxNmgtMlY2YzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYxMmMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNEg1TDQgOGg2TDkgMThIOGMwIDEuMS45IDIgMiAyczItLjkgMi0yVjZjMC0yLjIxIDEuNzktNCA0LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vbm9jaHJvbWVQaG90b3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6TS03NCAyOWg0OHY0OGgtNDhWMjl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVoLTMuMkwxNSAzSDlMNy4yIDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE0aC04di0xYy0yLjggMC01LTIuMi01LTVzMi4yLTUgNS01VjdoOHYxMnptLTMtNmMwLTIuOC0yLjItNS01LTV2MS44YzEuOCAwIDMuMiAxLjQgMy4yIDMuMnMtMS40IDMuMi0zLjIgMy4yVjE4YzIuOCAwIDUtMi4yIDUtNXptLTguMiAwYzAgMS44IDEuNCAzLjIgMy4yIDMuMlY5LjhjLTEuOCAwLTMuMiAxLjQtMy4yIDMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW90aW9uUGhvdG9zQXV0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIuODggNy44OCAxLjU0IDEuNTRDNC4xNSAxMC4yMyA0IDExLjEgNCAxMmMwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04LTMuNTktOC04LThjLS45IDAtMS43Ny4xNS0yLjU4LjQyTDcuODkgMi44OUM5LjE1IDIuMzIgMTAuNTQgMiAxMiAyYzUuNTIgMCAxMCA0LjQ4IDEwIDEwcy00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMmMwLTEuNDcuMzItMi44Ni44OC00LjEyek03IDUuNUM3IDYuMzMgNi4zMyA3IDUuNSA3UzQgNi4zMyA0IDUuNSA0LjY3IDQgNS41IDQgNyA0LjY3IDcgNS41em01LjAzIDMuNDloLS4wN0wxMC44IDEyLjNoMi4zOWwtMS4xNi0zLjMxek0xMiAxOGMzLjMxIDAgNi0yLjY5IDYtNnMtMi42OS02LTYtNi02IDIuNjktNiA2IDIuNjkgNiA2IDZ6bS0uNzEtMTAuNWgxLjQzbDMuMDEgOGgtMS4zOWwtLjcyLTIuMDRoLTMuMjNsLS43MyAyLjA0SDguMjhsMy4wMS04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3Rpb25QaG90b3NPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC44NCAyMC44NCAzLjE2IDMuMTYgMS44OSA0LjQzbDEuODkgMS44OUE5LjkyIDkuOTIgMCAwIDAgMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMCAyLjExIDAgNC4wNy0uNjYgNS42OC0xLjc3bDEuODkgMS44OSAxLjI3LTEuMjh6TTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOCAwLTEuNTUuNDUtMyAxLjIyLTQuMjNsMS40NiAxLjQ2QzYuMjUgMTAuMDYgNiAxMSA2IDEyYzAgMy4zMSAyLjY5IDYgNiA2IDEgMCAxLjk0LS4yNSAyLjc3LS42OGwxLjQ2IDEuNDZBNy45NTEgNy45NTEgMCAwIDEgMTIgMjB6TTYuMzIgMy43N0E5Ljk4NiA5Ljk4NiAwIDAgMSAxMiAyYzUuNTIgMCAxMCA0LjQ4IDEwIDEwIDAgMi4xMS0uNjYgNC4wNy0xLjc3IDUuNjhsLTEuNDUtMS40NUE3Ljk1MSA3Ljk1MSAwIDAgMCAyMCAxMmMwLTQuNDEtMy41OS04LTgtOC0xLjU1IDAtMyAuNDUtNC4yMyAxLjIyTDYuMzIgMy43N3pNMTggMTJjMCAxLS4yNSAxLjk0LS42OCAyLjc3TDkuMjMgNi42OEMxMC4wNiA2LjI1IDExIDYgMTIgNmMzLjMxIDAgNiAyLjY5IDYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW90aW9uUGhvdG9zT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yLjg4IDcuODggMS41NCAxLjU0QzQuMTUgMTAuMjMgNCAxMS4xIDQgMTJjMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOC0zLjU5LTgtOC04Yy0uOSAwLTEuNzcuMTUtMi41OC40Mkw3Ljg5IDIuODlDOS4xNSAyLjMyIDEwLjU0IDIgMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMHMtNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0xLjQ3LjMyLTIuODYuODgtNC4xMnpNNiAxMmMwLTMuMzEgMi42OS02IDYtNnM2IDIuNjkgNiA2LTIuNjkgNi02IDYtNi0yLjY5LTYtNnptMS02LjVDNyA2LjMzIDYuMzMgNyA1LjUgN1M0IDYuMzMgNCA1LjUgNC42NyA0IDUuNSA0IDcgNC42NyA3IDUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW90aW9uUGhvdG9zUGF1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yLjg4IDcuODggMS41NCAxLjU0QzQuMTUgMTAuMjMgNCAxMS4xIDQgMTJjMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOC0zLjU5LTgtOC04Yy0uOSAwLTEuNzcuMTUtMi41OC40Mkw3Ljg5IDIuODlDOS4xNSAyLjMyIDEwLjU0IDIgMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMHMtNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0xLjQ3LjMyLTIuODYuODgtNC4xMnpNNyA1LjVDNyA2LjMzIDYuMzMgNyA1LjUgN1M0IDYuMzMgNCA1LjUgNC42NyA0IDUuNSA0IDcgNC42NyA3IDUuNXptNSAuNWMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6bS0xIDlIOVY5aDJ2NnptNCAwaC0yVjloMnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3Rpb25QaG90b3NQYXVzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMmMwIDUuNTItNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0xLjE5LjIyLTIuMzIuNi0zLjM4bDEuODguNjhDNC4xNyAxMC4xNCA0IDExLjA1IDQgMTJjMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOC0zLjU5LTgtOC04Yy0uOTUgMC0xLjg1LjE3LTIuNjkuNDhsLS42OC0xLjg5QzkuNjkgMi4yMiAxMC44MiAyIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTB6TTUuNSA0QzQuNjcgNCA0IDQuNjcgNCA1LjVTNC42NyA3IDUuNSA3IDcgNi4zMyA3IDUuNSA2LjMzIDQgNS41IDR6TTExIDE2VjhIOXY4aDJ6bTQgMFY4aC0ydjhoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW92aWVDcmVhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDQgMiA0aC0zbC0yLTRoLTJsMiA0aC0zbC0yLTRIOGwyIDRIN0w1IDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW92aWVGaWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCA0IDIgM2gtM2wtMi0zaC0ybDIgM2gtM2wtMi0zSDhsMiAzSDdMNSA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRoLTR6bS02Ljc1IDExLjI1TDEwIDE4bC0xLjI1LTIuNzVMNiAxNGwyLjc1LTEuMjVMMTAgMTBsMS4yNSAyLjc1TDE0IDE0bC0yLjc1IDEuMjV6bTUuNjktMy4zMUwxNiAxNGwtLjk0LTIuMDZMMTMgMTFsMi4wNi0uOTRMMTYgOGwuOTQgMi4wNkwxOSAxMWwtMi4wNi45NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek02LjUgOUgxMWMuNTUgMCAxIC40NSAxIDF2NWgtMS41di00LjVoLTF2M0g4di0zSDdWMTVINS41di01YzAtLjU1LjQ1LTEgMS0xem05IDZIMTRWOWgzLjVjLjU1IDAgMSAuNDUgMSAxdjIuNWMwIC41NS0uNDUgMS0xIDFoLTJWMTV6bTAtM0gxN3YtMS41aC0xLjVWMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE11c2ljTm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDN2MTAuNTVjLS41OS0uMzQtMS4yNy0uNTUtMi0uNTUtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00VjdoNFYzaC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNdXNpY09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMjcgMyAzIDQuMjdsOSA5di4yOGMtLjU5LS4zNC0xLjI3LS41NS0yLS41NS0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTR2LTEuNzNMMTkuNzMgMjEgMjEgMTkuNzMgNC4yNyAzek0xNCA3aDRWM2gtNnY1LjE4bDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmF0dXJlUGVvcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuMTcgOS4xN2MwLTMuODctMy4xMy03LTctN3MtNyAzLjEzLTcgN0E2Ljk4IDYuOTggMCAwIDAgMTQgMTYuMDZWMjBINnYtM2gxdi00YzAtLjU1LS40NS0xLTEtMUgzYy0uNTUgMC0xIC40NS0xIDF2NGgxdjVoMTZ2LTJoLTN2LTMuODhhNyA3IDAgMCAwIDYuMTctNi45NXpNNC41IDExYy44MyAwIDEuNS0uNjcgMS41LTEuNVM1LjMzIDggNC41IDggMyA4LjY3IDMgOS41IDMuNjcgMTEgNC41IDExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROYXR1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxNi4xMmE3IDcgMCAwIDAgNi4xNy02Ljk1YzAtMy44Ny0zLjEzLTctNy03cy03IDMuMTMtNyA3QTYuOTggNi45OCAwIDAgMCAxMSAxNi4wNlYyMEg1djJoMTR2LTJoLTZ2LTMuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5hdmlnYXRlQmVmb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNDEgNy40MSAxNCA2bC02IDYgNiA2IDEuNDEtMS40MUwxMC44MyAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmF2aWdhdGVOZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgNiA4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbGV0dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwYTIuNSAyLjUgMCAwIDAgMi41LTIuNWMwLS42MS0uMjMtMS4yLS42NC0xLjY3YS41MjguNTI4IDAgMCAxLS4xMy0uMzNjMC0uMjguMjItLjUuNS0uNUgxNmMzLjMxIDAgNi0yLjY5IDYtNiAwLTQuOTYtNC40OS05LTEwLTl6bTUuNSAxMWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bS0zLTRjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA2IDE0LjUgNnMxLjUuNjcgMS41IDEuNVMxNS4zMyA5IDE0LjUgOXpNNSAxMS41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41UzcuMzMgMTMgNi41IDEzIDUgMTIuMzMgNSAxMS41em02LTRjMCAuODMtLjY3IDEuNS0xLjUgMS41UzggOC4zMyA4IDcuNSA4LjY3IDYgOS41IDZzMS41LjY3IDEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbm9yYW1hRmlzaEV5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYW5vcmFtYUhvcml6b250YWxTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS40MyA0Yy0uMSAwLS4yLjAyLS4zMS4wNkMxOC4xOCA1LjE2IDE1LjA5IDUuNyAxMiA1LjdzLTYuMTgtLjU1LTkuMTItMS42NEEuOTQuOTQgMCAwIDAgMi41NyA0Yy0uMzQgMC0uNTcuMjMtLjU3LjYzdjE0Ljc1YzAgLjM5LjIzLjYyLjU3LjYyLjEgMCAuMi0uMDIuMzEtLjA2IDIuOTQtMS4xIDYuMDMtMS42NCA5LjEyLTEuNjRzNi4xOC41NSA5LjEyIDEuNjRjLjExLjA0LjIxLjA2LjMxLjA2LjMzIDAgLjU3LS4yMy41Ny0uNjNWNC42M2MwLS40LS4yNC0uNjMtLjU3LS42M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFub3JhbWFIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNi41NHYxMC45MWMtMi42LS43Ny01LjI4LTEuMTYtOC0xLjE2LTIuNzIgMC01LjQuMzktOCAxLjE2VjYuNTRjMi42Ljc3IDUuMjggMS4xNiA4IDEuMTYgMi43Mi4wMSA1LjQtLjM4IDgtMS4xNk0yMS40MyA0Yy0uMSAwLS4yLjAyLS4zMS4wNkMxOC4xOCA1LjE2IDE1LjA5IDUuNyAxMiA1LjdjLTMuMDkgMC02LjE4LS41NS05LjEyLTEuNjRBLjk0Ljk0IDAgMCAwIDIuNTcgNGMtLjM0IDAtLjU3LjIzLS41Ny42M3YxNC43NWMwIC4zOS4yMy42Mi41Ny42Mi4xIDAgLjItLjAyLjMxLS4wNiAyLjk0LTEuMSA2LjAzLTEuNjQgOS4xMi0xLjY0IDMuMDkgMCA2LjE4LjU1IDkuMTIgMS42NC4xMS4wNC4yMS4wNi4zMS4wNi4zMyAwIC41Ny0uMjMuNTctLjYzVjQuNjNjMC0uNC0uMjQtLjYzLS41Ny0uNjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbm9yYW1hUGhvdG9zcGhlcmVTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi40OSA4LjUxYy0uNDctLjIzLS45My0uNDQtMS40LS42NEMxOS41MiA0LjQxIDE2LjA1IDIgMTIgMlM0LjQ3IDQuNDEgMi45IDcuODhjLS40Ny4yLS45My40MS0xLjQuNjMtLjMxLjE1LS41LjQ4LS41LjgzdjUuMzJjMCAuMzUuMTkuNjguNTEuODMuNDcuMjMuOTMuNDQgMS4zOS42NCAzLjU1IDcuODMgMTQuNjUgNy44MiAxOC4yIDAgLjQ3LS4yLjkzLS40MSAxLjM5LS42My4zMS0uMTcuNTEtLjQ5LjUxLS44NFY5LjM0YS45MS45MSAwIDAgMC0uNTEtLjgzek0xMiAzLjhjMi42IDAgNC45MSAxLjIzIDYuNDEgMy4xMi00LjEtMS4xOS04LjQ4LTEuMjYtMTIuODMuMDFDNy4wOCA1LjAzIDkuNCAzLjggMTIgMy44ek01LjYgMTcuMDhjNC4xOSAxLjIyIDguNTcgMS4yMyAxMi44Mi0uMDFhOC4xMzYgOC4xMzYgMCAwIDEtMTIuODIuMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbm9yYW1hUGhvdG9zcGhlcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS40IDExLjMydjIuOTNjLS4xLjA1LTIuMTcuODUtMy4zMyAxLjE3LS45NC4yNi0zLjg0LjczLTYuMDcuNzMtMy43IDAtNy0uNy05LjE2LTEuOC0uMDgtLjA0LS4xNi0uMDYtLjI0LS4xVjkuNzZjNi4wMi0yLjg0IDEyLjYtMi45MiAxOC44IDB2MS41NnptLTkuMzkgOC44OGMtMi41IDAtNC44Ny0xLjE1LTYuNDEtMy4xMiA0LjE5IDEuMjIgOC41NyAxLjIzIDEyLjgyLS4wMWE4LjEzNiA4LjEzNiAwIDAgMS02LjQxIDMuMTN6TTEyIDMuOGMyLjYgMCA0LjkxIDEuMjMgNi40MSAzLjEyLTQuMS0xLjE5LTguNDgtMS4yNi0xMi44My4wMUM3LjA4IDUuMDMgOS40IDMuOCAxMiAzLjh6bTEwLjQ5IDQuNzFjLS40Ny0uMjMtLjkzLS40NC0xLjQtLjY0QzE5LjUyIDQuNDEgMTYuMDUgMiAxMiAyUzQuNDcgNC40MSAyLjkgNy44OGMtLjQ3LjItLjkzLjQxLTEuNC42My0uMzEuMTUtLjUuNDgtLjUuODN2NS4zMmMwIC4zNS4xOS42OC41MS44My40Ny4yMy45My40NCAxLjM5LjY0IDMuNTUgNy44MyAxNC42NSA3LjgyIDE4LjIgMCAuNDctLjIuOTMtLjQxIDEuMzktLjYzLjMxLS4xNy41MS0uNDkuNTEtLjg0VjkuMzRhLjkxLjkxIDAgMCAwLS41MS0uODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbm9yYW1hVmVydGljYWxTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS45MyAyMS4xMmMtMS4xLTIuOTQtMS42NC02LjAzLTEuNjQtOS4xMnMuNTUtNi4xOCAxLjY0LTkuMTJjLjA1LS4xMS4wNy0uMjIuMDctLjMxIDAtLjM0LS4yNC0uNTctLjY0LS41N0g0LjYyYy0uNCAwLS42My4yMy0uNjMuNTcgMCAuMS4wMi4yLjA2LjMxQzUuMTYgNS44MiA1LjcgOC45MSA1LjcgMTJzLS41NSA2LjE4LTEuNjQgOS4xMmMtLjA1LjExLS4wNy4yMi0uMDcuMzEgMCAuMzMuMjMuNTcuNjMuNTdoMTQuNzVjLjM5IDAgLjYzLS4yNC42My0uNTcgMC0uMS0uMDItLjItLjA3LS4zMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFub3JhbWFWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljk0IDIxLjEyYy0xLjEtMi45NC0xLjY0LTYuMDMtMS42NC05LjEyIDAtMy4wOS41NS02LjE4IDEuNjQtOS4xMmEuOTQuOTQgMCAwIDAgLjA2LS4zMWMwLS4zNC0uMjMtLjU3LS42My0uNTdINC42M2MtLjQgMC0uNjMuMjMtLjYzLjU3IDAgLjEuMDIuMi4wNi4zMUM1LjE2IDUuODIgNS43MSA4LjkxIDUuNzEgMTJjMCAzLjA5LS41NSA2LjE4LTEuNjQgOS4xMi0uMDUuMTEtLjA3LjIyLS4wNy4zMSAwIC4zMy4yMy41Ny42My41N2gxNC43NWMuMzkgMCAuNjMtLjI0LjYzLS41Ny0uMDEtLjEtLjAzLS4yLS4wNy0uMzF6TTYuNTQgMjBjLjc3LTIuNiAxLjE2LTUuMjggMS4xNi04IDAtMi43Mi0uMzktNS40LTEuMTYtOGgxMC45MWMtLjc3IDIuNi0xLjE2IDUuMjgtMS4xNiA4IDAgMi43Mi4zOSA1LjQgMS4xNiA4SDYuNTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbm9yYW1hV2lkZUFuZ2xlU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGMtMi43MyAwLTUuMjIuMjQtNy45NS43MmwtLjkzLjE2LS4yNS45QzIuMjkgNy44NSAyIDkuOTMgMiAxMnMuMjkgNC4xNS44NyA2LjIybC4yNS44OS45My4xNmMyLjczLjQ5IDUuMjIuNzMgNy45NS43M3M1LjIyLS4yNCA3Ljk1LS43MmwuOTMtLjE2LjI1LS44OWMuNTgtMi4wOC44Ny00LjE2Ljg3LTYuMjNzLS4yOS00LjE1LS44Ny02LjIybC0uMjUtLjg5LS45My0uMTZDMTcuMjIgNC4yNCAxNC43MyA0IDEyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbm9yYW1hV2lkZUFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMyLjQ1IDAgNC43MS4yIDcuMjkuNjRBMjEgMjEgMCAwIDEgMjAgMTJhMjEgMjEgMCAwIDEtLjcxIDUuMzZjLTIuNTguNDQtNC44NC42NC03LjI5LjY0cy00LjcxLS4yLTcuMjktLjY0QTIxIDIxIDAgMCAxIDQgMTJhMjEgMjEgMCAwIDEgLjcxLTUuMzZDNy4yOSA2LjIgOS41NSA2IDEyIDZtMC0yYy0yLjczIDAtNS4yMi4yNC03Ljk1LjcybC0uOTMuMTYtLjI1LjlDMi4yOSA3Ljg1IDIgOS45MyAyIDEycy4yOSA0LjE1Ljg3IDYuMjJsLjI1Ljg5LjkzLjE2YzIuNzMuNDkgNS4yMi43MyA3Ljk1LjczczUuMjItLjI0IDcuOTUtLjcybC45My0uMTYuMjUtLjg5Yy41OC0yLjA4Ljg3LTQuMTYuODctNi4yM3MtLjI5LTQuMTUtLjg3LTYuMjJsLS4yNS0uODktLjkzLS4xNkMxNy4yMiA0LjI0IDE0LjczIDQgMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFub3JhbWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxOFY2YzAtMS4xLS45LTItMi0ySDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJ6TTguNSAxMi41bDIuNSAzLjAxTDE0LjUgMTFsNC41IDZINWwzLjUtNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG90b0FsYnVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDJoNXY3bC0yLjUtMS41TDExIDExVjR6TTcgMThsMi4zOC0zLjE3TDExIDE3bDIuNjItMy41TDE3IDE4SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob3RvQ2FtZXJhQmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVjMS4xIDAgMiAuOSAyIDJ2MTJjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWN2MwLTEuMS45LTIgMi0yaDMuMTdMOSAzaDZsMS44MyAySDIwem0wIDE0VjdINHYxMmgxNnptLTYtNy0zIDMuNzJMOSAxM2wtMyA0aDEybC00LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob3RvQ2FtZXJhRnJvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCAxMC40OCA0LTMuOTh2MTFsLTQtMy45OFYxOGMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoMTJjMS4xIDAgMiAuOSAyIDJ2NC40OHptLTItLjc5VjZINHYxMmgxMlY5LjY5ek0xMCAxMmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTAgMWMxLjM0IDAgNCAuNjcgNCAydjFINnYtMWMwLTEuMzMgMi42Ni0yIDQtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvdG9DYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjMuMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDIgNy4xNyA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMmgtMy4xN0wxNSAySDl6bTMgMTVjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG90b0ZpbHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMDIgMTB2OUg1VjVoOVYzSDUuMDJjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTloLTJ6TTE3IDEwbC45NC0yLjA2TDIwIDdsLTIuMDYtLjk0TDE3IDRsLS45NCAyLjA2TDE0IDdsMi4wNi45NHptLTMuNzUuNzVMMTIgOGwtMS4yNSAyLjc1TDggMTJsMi43NSAxLjI1TDEyIDE2bDEuMjUtMi43NUwxNiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvdG9MaWJyYXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTZWNGMwLTEuMS0uOS0yLTItMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yem0tMTEtNCAyLjAzIDIuNzFMMTYgMTFsNCA1SDhsMy00ek0yIDZ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZIMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvdG9TaXplU2VsZWN0QWN0dWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM0MyIDMgMSA0IDEgNXYxNGMwIDEuMS45IDIgMiAyaDE4YzEgMCAyLTEgMi0yVjVjMC0xLTEtMi0yLTJ6TTUgMTdsMy41LTQuNSAyLjUgMy4wMUwxNC41IDExbDQuNSA2SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob3RvU2l6ZVNlbGVjdExhcmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE1aDJ2MmgtMnYtMnptMC00aDJ2MmgtMnYtMnptMiA4aC0ydjJjMSAwIDItMSAyLTJ6TTEzIDNoMnYyaC0yVjN6bTggNGgydjJoLTJWN3ptMC00djJoMmMwLTEtMS0yLTItMnpNMSA3aDJ2MkgxVjd6bTE2LTRoMnYyaC0yVjN6bTAgMTZoMnYyaC0ydi0yek0zIDNDMiAzIDEgNCAxIDVoMlYzem02IDBoMnYySDlWM3pNNSAzaDJ2Mkg1VjN6bS00IDh2OGMwIDEuMS45IDIgMiAyaDEyVjExSDF6bTIgOCAyLjUtMy4yMSAxLjc5IDIuMTUgMi41LTMuMjJMMTMgMTlIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvdG9TaXplU2VsZWN0U21hbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTI0IDI0SDBWMGgyNHYyNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTVoLTJ2Mmgydi0yem0wLTRoLTJ2Mmgydi0yem0wIDhoLTJ2MmMxIDAgMi0xIDItMnpNMTUgM2gtMnYyaDJWM3ptOCA0aC0ydjJoMlY3em0tMi00djJoMmMwLTEtMS0yLTItMnpNMyAyMWg4di02SDF2NGMwIDEuMS45IDIgMiAyek0zIDdIMXYyaDJWN3ptMTIgMTJoLTJ2Mmgydi0yem00LTE2aC0ydjJoMlYzem0wIDE2aC0ydjJoMnYtMnpNMyAzQzIgMyAxIDQgMSA1aDJWM3ptMCA4SDF2Mmgydi0yem04LThIOXYyaDJWM3pNNyAzSDV2MmgyVjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob3RvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTlWNWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yek04LjUgMTMuNWwyLjUgMy4wMUwxNC41IDEybDQuNSA2SDVsMy41LTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGljdHVyZUFzUGRmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS04LjUgNy41YzAgLjgzLS42NyAxLjUtMS41IDEuNUg5djJINy41VjdIMTBjLjgzIDAgMS41LjY3IDEuNSAxLjV2MXptNSAyYzAgLjgzLS42NyAxLjUtMS41IDEuNWgtMi41VjdIMTVjLjgzIDAgMS41LjY3IDEuNSAxLjV2M3ptNC0zSDE5djFoMS41VjExSDE5djJoLTEuNVY3aDN2MS41ek05IDkuNWgxdi0xSDl2MXpNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6bTEwIDUuNWgxdi0zaC0xdjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvcnRyYWl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTIuMjVjMS4yNCAwIDIuMjUtMS4wMSAyLjI1LTIuMjVTMTMuMjQgNy43NSAxMiA3Ljc1IDkuNzUgOC43NiA5Ljc1IDEwczEuMDEgMi4yNSAyLjI1IDIuMjV6bTQuNSA0YzAtMS41LTMtMi4yNS00LjUtMi4yNXMtNC41Ljc1LTQuNSAyLjI1VjE3aDl2LS43NXpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSYXdPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy4xNSAxNC4zMi41OS0yLjM2Ljc2IDMuMDRoMS40OGwxLjUtNmgtMS41bC0uNzQgMy0uNzQtM2gtMS41MmwtLjc0IDMtLjc0LTNIMTRsLjcyIDIuOXpNMS4zOSA0LjIyIDYuMTcgOUgzdjZoMS41di0yaDEuMWwuOSAySDhsLS45LTIuMWMuNS0uMy45LS44LjktMS40di0uNjdsMS40MyAxLjQzTDguNzUgMTVoMS41bC4zOC0xLjVoLjA0bDkuMTEgOS4xMSAxLjQxLTEuNDFMMi44MSAyLjgxIDEuMzkgNC4yMnpNNi41IDExLjVoLTJ2LTFoMnYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSYXdPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSA5SDN2NmgxLjV2LTJoMS4xbC45IDJIOGwtLjktMi4xYy41LS4zLjktLjguOS0xLjR2LTFDOCA5LjcgNy4zIDkgNi41IDl6bTAgMi41aC0ydi0xaDJ2MXpNMTAuMjUgOWwtMS41IDZoMS41bC4zOC0xLjVoMS43NWwuMzcgMS41aDEuNWwtMS41LTZoLTIuNXptLjc1IDMgLjI1LTFoLjVsLjI1IDFoLTF6TTE5Ljk4IDlsLS43NCAzLS43NC0zaC0xLjUybC0uNzQgMy0uNzQtM0gxNGwxLjUgNmgxLjQ4bC43Ni0zLjA0Ljc2IDMuMDRoMS40OGwxLjUtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVjZWlwdExvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjUgMy41IDE4IDJsLTEuNSAxLjVMMTUgMmwtMS41IDEuNUwxMiAybC0xLjUgMS41TDkgMiA3LjUgMy41IDYgMnYxNEgzdjNjMCAxLjY2IDEuMzQgMyAzIDNoMTJjMS42NiAwIDMtMS4zNCAzLTNWMmwtMS41IDEuNXpNMTkgMTljMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTF2LTNIOFY1aDExdjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDdoNnYySDl6TTE2IDdoMnYyaC0yek05IDEwaDZ2Mkg5ek0xNiAxMGgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlbW92ZVJlZEV5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDQuNUM3IDQuNSAyLjczIDcuNjEgMSAxMmMxLjczIDQuMzkgNiA3LjUgMTEgNy41czkuMjctMy4xMSAxMS03LjVjLTEuNzMtNC4zOS02LTcuNS0xMS03LjV6TTEyIDE3Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXptMC04Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm90YXRlOTBEZWdyZWVzQ2N3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4zNCA2LjQxLjg2IDEyLjlsNi40OSA2LjQ4IDYuNDktNi40OC02LjUtNi40OXpNMy42OSAxMi45bDMuNjYtMy42NkwxMSAxMi45bC0zLjY2IDMuNjYtMy42NS0zLjY2em0xNS42Ny02LjI2QTguOTUgOC45NSAwIDAgMCAxMyA0Vi43Nkw4Ljc2IDUgMTMgOS4yNFY2YzEuNzkgMCAzLjU4LjY4IDQuOTUgMi4wNWE3LjAwNyA3LjAwNyAwIDAgMSAwIDkuOSA2Ljk3MyA2Ljk3MyAwIDAgMS03Ljc5IDEuNDRsLTEuNDkgMS40OUMxMC4wMiAyMS42MiAxMS41MSAyMiAxMyAyMmMyLjMgMCA0LjYxLS44OCA2LjM2LTIuNjRhOC45OCA4Ljk4IDAgMCAwIDAtMTIuNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvdGF0ZTkwRGVncmVlc0N3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC42NCAxOS4zN2MzLjAzIDMuMDMgNy42NyAzLjQ0IDExLjE1IDEuMjVsLTEuNDYtMS40NmMtMi42NiAxLjQzLTYuMDQgMS4wMy04LjI4LTEuMjFhNy4wMDcgNy4wMDcgMCAwIDEgMC05LjlDNy40MiA2LjY5IDkuMjEgNi4wMyAxMSA2LjAzVjlsNC00LTQtNHYzLjAxYy0yLjMgMC00LjYxLjg3LTYuMzYgMi42My0zLjUyIDMuNTEtMy41MiA5LjIxIDAgMTIuNzN6TTExIDEzbDYgNiA2LTYtNi02LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm90YXRlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMTEgOC41MyA1LjcgNy4xMUM0LjggOC4yNyA0LjI0IDkuNjEgNC4wNyAxMWgyLjAyYy4xNC0uODcuNDktMS43MiAxLjAyLTIuNDd6TTYuMDkgMTNINC4wN2MuMTcgMS4zOS43MiAyLjczIDEuNjIgMy44OWwxLjQxLTEuNDJjLS41Mi0uNzUtLjg3LTEuNTktMS4wMS0yLjQ3em0xLjAxIDUuMzJjMS4xNi45IDIuNTEgMS40NCAzLjkgMS42MVYxNy45Yy0uODctLjE1LTEuNzEtLjQ5LTIuNDYtMS4wM0w3LjEgMTguMzJ6TTEzIDQuMDdWMUw4LjQ1IDUuNTUgMTMgMTBWNi4wOWMyLjg0LjQ4IDUgMi45NCA1IDUuOTFzLTIuMTYgNS40My01IDUuOTF2Mi4wMmMzLjk1LS40OSA3LTMuODUgNy03Ljkzcy0zLjA1LTcuNDQtNy03LjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb3RhdGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjU1IDUuNTUgMTEgMXYzLjA3QzcuMDYgNC41NiA0IDcuOTIgNCAxMnMzLjA1IDcuNDQgNyA3Ljkzdi0yLjAyYy0yLjg0LS40OC01LTIuOTQtNS01LjkxczIuMTYtNS40MyA1LTUuOTFWMTBsNC41NS00LjQ1ek0xOS45MyAxMWE3LjkwNiA3LjkwNiAwIDAgMC0xLjYyLTMuODlsLTEuNDIgMS40MmMuNTQuNzUuODggMS42IDEuMDIgMi40N2gyLjAyek0xMyAxNy45djIuMDJjMS4zOS0uMTcgMi43NC0uNzEgMy45LTEuNjFsLTEuNDQtMS40NGMtLjc1LjU0LTEuNTkuODktMi40NiAxLjAzem0zLjg5LTIuNDIgMS40MiAxLjQxYy45LTEuMTYgMS40NS0yLjUgMS42Mi0zLjg5aC0yLjAyYy0uMTQuODctLjQ4IDEuNzItMS4wMiAyLjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaHV0dGVyU3BlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDFIOXYyaDZWMXptNC4wMyA2LjM5IDEuNDItMS40MmMtLjQzLS41MS0uOS0uOTktMS40MS0xLjQxbC0xLjQyIDEuNDJBOC45NjIgOC45NjIgMCAwIDAgMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWE4Ljk5NCA4Ljk5NCAwIDAgMCA3LjAzLTE0LjYxek0xMiAyMGMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6bS0uMzItNUg2LjM1YTUuOTkyIDUuOTkyIDAgMCAwIDMuNDEgMy41NmwtLjExLS4wNiAyLjAzLTMuNXptNS45Ny00YTYuMDEyIDYuMDEyIDAgMCAwLTMuMzQtMy41NEwxMi4yNiAxMWg1LjM5em0tNy4wNCA3LjgzYy40NS4xMS45MS4xNyAxLjM5LjE3IDEuMzQgMCAyLjU3LS40NSAzLjU3LTEuMTlsLTIuMTEtMy45LTIuODUgNC45MnpNNy41NSA4Ljk5QTUuOTY1IDUuOTY1IDAgMCAwIDYgMTNjMCAuMzQuMDQuNjcuMDkgMWg0LjcyTDcuNTUgOC45OXptOC43OSA4LjE0QTUuOTQgNS45NCAwIDAgMCAxOCAxM2MwLS4zNC0uMDQtLjY3LS4wOS0xaC00LjM0bDIuNzcgNS4xM3ptLTMuMDEtOS45OEMxMi45IDcuMDYgMTIuNDYgNyAxMiA3Yy0xLjQgMC0yLjY5LjQ5LTMuNzEgMS4yOWwyLjMyIDMuNTYgMi43Mi00Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNsaWRlc2hvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDh2OGw1LTQtNS00em05LTVINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RyYWlnaHRlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDZIM2MtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTBIM1Y4aDJ2NGgyVjhoMnY0aDJWOGgydjRoMlY4aDJ2NGgyVjhoMnY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdHlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIuNTMgMTkuNjUgMS4zNC41NnYtOS4wM2wtMi40MyA1Ljg2Yy0uNDEgMS4wMi4wOCAyLjE5IDEuMDkgMi42MXptMTkuNS0zLjdMMTcuMDcgMy45OGEyLjAxMyAyLjAxMyAwIDAgMC0xLjgxLTEuMjNjLS4yNiAwLS41My4wNC0uNzkuMTVMNy4xIDUuOTVhMS45OTkgMS45OTkgMCAwIDAtMS4wOCAyLjZsNC45NiAxMS45N2ExLjk5OCAxLjk5OCAwIDAgMCAyLjYgMS4wOGw3LjM2LTMuMDVhMS45OTQgMS45OTQgMCAwIDAgMS4wOS0yLjZ6TTcuODggOC43NWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tMiAxMWMwIDEuMS45IDIgMiAyaDEuNDVsLTMuNDUtOC4zNHY2LjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2l0Y2hDYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0aC0zLjE3TDE1IDJIOUw3LjE3IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNSAxMS41VjEzSDl2Mi41TDUuNSAxMiA5IDguNVYxMWg2VjguNWwzLjUgMy41LTMuNSAzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXRjaFZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOS41VjZjMC0uNTUtLjQ1LTEtMS0xSDNjLS41NSAwLTEgLjQ1LTEgMXYxMmMwIC41NS40NSAxIDEgMWgxNGMuNTUgMCAxLS40NSAxLTF2LTMuNWw0IDR2LTEzbC00IDR6bS01IDZWMTNIN3YyLjVMMy41IDEyIDcgOC41VjExaDZWOC41bDMuNSAzLjUtMy41IDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGFnRmFjZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTMuNS05Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNXMuNjcgMS41IDEuNSAxLjV6bS03IDBjLjgzIDAgMS41LS42NyAxLjUtMS41UzkuMzMgOCA4LjUgOCA3IDguNjcgNyA5LjUgNy42NyAxMSA4LjUgMTF6bTMuNSA2LjVjMi4zMyAwIDQuMzEtMS40NiA1LjExLTMuNUg2Ljg5Yy44IDIuMDQgMi43OCAzLjUgNS4xMSAzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRleHR1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41MSAzLjA4IDMuMDggMTkuNTFjLjA5LjM0LjI3LjY1LjUxLjkuMjUuMjQuNTYuNDIuOS41MUwyMC45MyA0LjQ5Yy0uMTktLjY5LS43My0xLjIzLTEuNDItMS40MXpNMTEuODggMyAzIDExLjg4djIuODNMMTQuNzEgM2gtMi44M3pNNSAzYy0xLjEgMC0yIC45LTIgMnYybDQtNEg1em0xNCAxOGMuNTUgMCAxLjA1LS4yMiAxLjQxLS41OS4zNy0uMzYuNTktLjg2LjU5LTEuNDF2LTJsLTQgNGgyem0tOS43MSAwaDIuODNMMjEgMTIuMTJWOS4yOUw5LjI5IDIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaGVybW9zdGF0QXV0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDEyVjZjMC0xLjY2LTEuMzQtMy0zLTNTNSA0LjM0IDUgNnY2Yy0xLjIxLjkxLTIgMi4zNy0yIDQgMCAxLjEyLjM4IDIuMTQgMSAyLjk3VjE5aC4wMmMuOTEgMS4yMSAyLjM1IDIgMy45OCAyczMuMDYtLjc5IDMuOTgtMkgxMnYtLjAzYy42Mi0uODMgMS0xLjg1IDEtMi45NyAwLTEuNjMtLjc5LTMuMDktMi00em0tNiA0YzAtLjk0LjQ1LTEuODQgMS4yLTIuNEw3IDEzVjZjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjdsLjguNmMuNzUuNTcgMS4yIDEuNDYgMS4yIDIuNEg1ek0xOC42MiA0aC0xLjYxbC0zLjM4IDloMS41NmwuODEtMi4zaDMuNjNsLjggMi4zSDIybC0zLjM4LTl6bS0yLjE1IDUuMzkgMS4zMS0zLjcyaC4wOGwxLjMxIDMuNzJoLTIuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGltZWxhcHNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMjQgNy43NkE1Ljk3NCA1Ljk3NCAwIDAgMCAxMiA2djZsLTQuMjQgNC4yNGMyLjM0IDIuMzQgNi4xNCAyLjM0IDguNDkgMGE1Ljk5IDUuOTkgMCAwIDAtLjAxLTguNDh6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaW1lcjEwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNy43MlY5LjRsMy0xVjE4aDJWNmgtLjI1TDAgNy43MnptMjMuNzggNi42NWMtLjE0LS4yOC0uMzUtLjUzLS42My0uNzQtLjI4LS4yMS0uNjEtLjM5LTEuMDEtLjUzcy0uODUtLjI3LTEuMzUtLjM4YTYuNjQgNi42NCAwIDAgMS0uODctLjIzIDIuNjEgMi42MSAwIDAgMS0uNTUtLjI1LjcxNy43MTcgMCAwIDEtLjI4LS4zLjk3OC45NzggMCAwIDEgLjAxLS44Yy4wNi0uMTMuMTUtLjI1LjI3LS4zNC4xMi0uMS4yNy0uMTguNDUtLjI0cy40LS4wOS42NC0uMDljLjI1IDAgLjQ3LjA0LjY2LjExLjE5LjA3LjM1LjE3LjQ4LjI5LjEzLjEyLjIyLjI2LjI5LjQyLjA2LjE2LjEuMzIuMS40OWgxLjk1YTIuNTE3IDIuNTE3IDAgMCAwLS45My0xLjk3Yy0uMy0uMjUtLjY2LS40NC0xLjA5LS41OUMyMS40OSA5LjA3IDIxIDkgMjAuNDYgOWMtLjUxIDAtLjk4LjA3LTEuMzkuMjEtLjQxLjE0LS43Ny4zMy0xLjA2LjU3LS4yOS4yNC0uNTEuNTItLjY3Ljg0LS4xNi4zMi0uMjMuNjUtLjIzIDEuMDFzLjA4LjY5LjIzLjk2Yy4xNS4yOC4zNi41Mi42NC43My4yNy4yMS42LjM4Ljk4LjUzLjM4LjE0LjgxLjI2IDEuMjcuMzYuMzkuMDguNzEuMTcuOTUuMjZzLjQzLjE5LjU3LjI5Yy4xMy4xLjIyLjIyLjI3LjM0LjA1LjEyLjA3LjI1LjA3LjM5IDAgLjMyLS4xMy41Ny0uNC43Ny0uMjcuMi0uNjYuMjktMS4xNy4yOS0uMjIgMC0uNDMtLjAyLS42NC0uMDgtLjIxLS4wNS0uNC0uMTMtLjU2LS4yNGExLjMzMyAxLjMzMyAwIDAgMS0uNTktMS4xMWgtMS44OWMwIC4zNi4wOC43MS4yNCAxLjA1LjE2LjM0LjM5LjY1LjcuOTMuMzEuMjcuNjkuNDkgMS4xNS42Ni40Ni4xNy45OC4yNSAxLjU4LjI1LjUzIDAgMS4wMS0uMDYgMS40NC0uMTkuNDMtLjEzLjgtLjMxIDEuMTEtLjU0LjMxLS4yMy41NC0uNTEuNzEtLjgzLjE3LS4zMi4yNS0uNjcuMjUtMS4wNi0uMDItLjQtLjA5LS43NC0uMjQtMS4wMnptLTkuOTYtNy4zMmMtLjM0LS40LS43NS0uNy0xLjIzLS44OC0uNDctLjE4LTEuMDEtLjI3LTEuNTktLjI3LS41OCAwLTEuMTEuMDktMS41OS4yNy0uNDguMTgtLjg5LjQ3LTEuMjMuODgtLjM0LjQxLS42LjkzLS43OSAxLjU5LS4xOC42NS0uMjggMS40NS0uMjggMi4zOXYxLjkyYzAgLjk0LjA5IDEuNzQuMjggMi4zOS4xOS42Ni40NSAxLjE5LjggMS42LjM0LjQxLjc1LjcxIDEuMjMuODkuNDguMTggMS4wMS4yOCAxLjU5LjI4LjU5IDAgMS4xMi0uMDkgMS41OS0uMjguNDgtLjE4Ljg4LS40OCAxLjIyLS44OS4zNC0uNDEuNi0uOTQuNzgtMS42LjE4LS42NS4yOC0xLjQ1LjI4LTIuMzl2LTEuOTJjMC0uOTQtLjA5LTEuNzQtLjI4LTIuMzktLjE4LS42Ni0uNDQtMS4xOS0uNzgtMS41OXptLS45MiA2LjE3YzAgLjYtLjA0IDEuMTEtLjEyIDEuNTMtLjA4LjQyLS4yLjc2LS4zNiAxLjAyLS4xNi4yNi0uMzYuNDUtLjU5LjU3LS4yMy4xMi0uNTEuMTgtLjgyLjE4LS4zIDAtLjU4LS4wNi0uODItLjE4cy0uNDQtLjMxLS42LS41N2MtLjE2LS4yNi0uMjktLjYtLjM4LTEuMDItLjA5LS40Mi0uMTMtLjkzLS4xMy0xLjUzdi0yLjVjMC0uNi4wNC0xLjExLjEzLTEuNTIuMDktLjQxLjIxLS43NC4zOC0xIC4xNi0uMjUuMzYtLjQzLjYtLjU1LjI0LS4xMS41MS0uMTcuODEtLjE3LjMxIDAgLjU4LjA2LjgxLjE3LjI0LjExLjQ0LjI5LjYuNTUuMTYuMjUuMjkuNTguMzcuOTkuMDguNDEuMTMuOTIuMTMgMS41MnYyLjUxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaW1lcjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNjEgMTIuOTdjLS4xNi0uMjQtLjM2LS40Ni0uNjItLjY1YTMuMzggMy4zOCAwIDAgMC0uOTMtLjQ4Yy4zLS4xNC41Ny0uMy44LS41LjIzLS4yLjQyLS40MS41Ny0uNjQuMTUtLjIzLjI3LS40Ni4zNC0uNzEuMDgtLjI0LjExLS40OS4xMS0uNzMgMC0uNTUtLjA5LTEuMDQtLjI4LTEuNDYtLjE4LS40Mi0uNDQtLjc3LS43OC0xLjA2LS4zMy0uMjgtLjczLS41LTEuMi0uNjQtLjQ1LS4xMy0uOTctLjItMS41My0uMi0uNTUgMC0xLjA2LjA4LTEuNTIuMjQtLjQ3LjE3LS44Ny40LTEuMi42OS0uMzMuMjktLjYuNjMtLjc4IDEuMDMtLjIuMzktLjI5LjgzLS4yOSAxLjI5aDEuOThjMC0uMjYuMDUtLjQ5LjE0LS42OS4wOS0uMi4yMi0uMzguMzgtLjUyLjE3LS4xNC4zNi0uMjUuNTgtLjMzLjIyLS4wOC40Ni0uMTIuNzMtLjEyLjYxIDAgMS4wNi4xNiAxLjM2LjQ3LjMuMzEuNDQuNzUuNDQgMS4zMiAwIC4yNy0uMDQuNTItLjEyLjc0LS4wOC4yMi0uMjEuNDEtLjM4LjU3LS4xNy4xNi0uMzguMjgtLjYzLjM3LS4yNS4wOS0uNTUuMTMtLjg5LjEzSDYuNzJ2MS41N0g3LjljLjM0IDAgLjY0LjA0LjkxLjExLjI3LjA4LjUuMTkuNjkuMzUuMTkuMTYuMzQuMzYuNDQuNjEuMS4yNC4xNi41NC4xNi44NyAwIC42Mi0uMTggMS4wOS0uNTMgMS40Mi0uMzUuMzMtLjg0LjQ5LTEuNDUuNDktLjI5IDAtLjU2LS4wNC0uOC0uMTMtLjI0LS4wOC0uNDQtLjItLjYxLS4zNi0uMTctLjE2LS4zLS4zNC0uMzktLjU2LS4wOS0uMjItLjE0LS40Ni0uMTQtLjcySDQuMTljMCAuNTUuMTEgMS4wMy4zMiAxLjQ1LjIxLjQyLjUuNzcuODYgMS4wNXMuNzcuNDkgMS4yNC42My45Ni4yMSAxLjQ4LjIxYy41NyAwIDEuMDktLjA4IDEuNTgtLjIzLjQ5LS4xNS45MS0uMzggMS4yNi0uNjguMzYtLjMuNjQtLjY2Ljg0LTEuMS4yLS40My4zLS45My4zLTEuNDggMC0uMjktLjA0LS41OC0uMTEtLjg2LS4wOC0uMjUtLjE5LS41MS0uMzUtLjc2em05LjI2IDEuNGMtLjE0LS4yOC0uMzUtLjUzLS42My0uNzQtLjI4LS4yMS0uNjEtLjM5LTEuMDEtLjUzcy0uODUtLjI3LTEuMzUtLjM4YTYuNjQgNi42NCAwIDAgMS0uODctLjIzIDIuNjEgMi42MSAwIDAgMS0uNTUtLjI1LjcxNy43MTcgMCAwIDEtLjI4LS4zYy0uMDUtLjExLS4wOC0uMjQtLjA4LS4zOWEuOTQ2Ljk0NiAwIDAgMSAuMzYtLjc1Yy4xMi0uMS4yNy0uMTguNDUtLjI0cy40LS4wOS42NC0uMDljLjI1IDAgLjQ3LjA0LjY2LjExLjE5LjA3LjM1LjE3LjQ4LjI5LjEzLjEyLjIyLjI2LjI5LjQyLjA2LjE2LjEuMzIuMS40OWgxLjk1YTIuNTE3IDIuNTE3IDAgMCAwLS45My0xLjk3Yy0uMy0uMjUtLjY2LS40NC0xLjA5LS41OS0uNDMtLjE1LS45Mi0uMjItMS40Ni0uMjItLjUxIDAtLjk4LjA3LTEuMzkuMjEtLjQxLjE0LS43Ny4zMy0xLjA2LjU3LS4yOS4yNC0uNTEuNTItLjY3Ljg0LS4xNi4zMi0uMjMuNjUtLjIzIDEuMDFzLjA4LjY4LjIzLjk2Yy4xNS4yOC4zNy41Mi42NC43My4yNy4yMS42LjM4Ljk4LjUzLjM4LjE0LjgxLjI2IDEuMjcuMzYuMzkuMDguNzEuMTcuOTUuMjZzLjQzLjE5LjU3LjI5Yy4xMy4xLjIyLjIyLjI3LjM0LjA1LjEyLjA3LjI1LjA3LjM5IDAgLjMyLS4xMy41Ny0uNC43Ny0uMjcuMi0uNjYuMjktMS4xNy4yOS0uMjIgMC0uNDMtLjAyLS42NC0uMDgtLjIxLS4wNS0uNC0uMTMtLjU2LS4yNGExLjMzMyAxLjMzMyAwIDAgMS0uNTktMS4xMWgtMS44OWMwIC4zNi4wOC43MS4yNCAxLjA1LjE2LjM0LjM5LjY1LjcuOTMuMzEuMjcuNjkuNDkgMS4xNS42Ni40Ni4xNy45OC4yNSAxLjU4LjI1LjUzIDAgMS4wMS0uMDYgMS40NC0uMTkuNDMtLjEzLjgtLjMxIDEuMTEtLjU0LjMxLS4yMy41NC0uNTEuNzEtLjgzLjE3LS4zMi4yNS0uNjcuMjUtMS4wNi0uMDItLjQtLjA5LS43NC0uMjQtMS4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGltZXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDFoNnYySDl6TTEzIDh2Mi4xN2w2Ljk4IDYuOThhOC45NjMgOC45NjMgMCAwIDAtLjk1LTkuNzZsMS40Mi0xLjQyYy0uNDMtLjUxLS45LS45OS0xLjQxLTEuNDFsLTEuNDIgMS40MmE4Ljk2MiA4Ljk2MiAwIDAgMC05Ljc3LS45NkwxMC44MyA4SDEzek0yLjgxIDIuODEgMS4zOSA0LjIybDMuNCAzLjRhOC45OTQgOC45OTQgMCAwIDAgMTIuNTkgMTIuNTlsMi40IDIuNCAxLjQxLTEuNDFMMi44MSAyLjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaW1lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMWg2djJIOXpNMTkuMDMgNy4zOWwxLjQyLTEuNDJjLS40My0uNTEtLjktLjk5LTEuNDEtMS40MWwtMS40MiAxLjQyQTguOTYyIDguOTYyIDAgMCAwIDEyIDRhOSA5IDAgMCAwLTkgOWMwIDQuOTcgNC4wMiA5IDkgOWE4Ljk5NCA4Ljk5NCAwIDAgMCA3LjAzLTE0LjYxek0xMyAxNGgtMlY4aDJ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVG9uYWxpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMSAxNy45M2MtMy45NC0uNDktNy0zLjg1LTctNy45M3MzLjA1LTcuNDQgNy03LjkzdjE1Ljg2em0yLTE1Ljg2YzEuMDMuMTMgMiAuNDUgMi44Ny45M0gxM3YtLjkzek0xMyA3aDUuMjRjLjI1LjMxLjQ4LjY1LjY4IDFIMTNWN3ptMCAzaDYuNzRjLjA4LjMzLjE1LjY2LjE5IDFIMTN2LTF6bTAgOS45M1YxOWgyLjg3Yy0uODcuNDgtMS44NC44LTIuODcuOTN6TTE4LjI0IDE3SDEzdi0xaDUuOTJjLS4yLjM1LS40My42OS0uNjggMXptMS41LTNIMTN2LTFoNi45M2MtLjA0LjM0LS4xMS42Ny0uMTkgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJhbnNmb3JtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTh2LTJIOFY0aDJMNyAxIDQgNGgydjJIMnYyaDR2OGMwIDEuMS45IDIgMiAyaDh2MmgtMmwzIDMgMy0zaC0ydi0yaDR6TTEwIDhoNnY2aDJWOGMwLTEuMS0uOS0yLTItMmgtNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUdW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxN3YyaDZ2LTJIM3pNMyA1djJoMTBWNUgzem0xMCAxNnYtMmg4di0yaC04di0yaC0ydjZoMnpNNyA5djJIM3YyaDR2MmgyVjlIN3ptMTQgNHYtMkgxMXYyaDEwem0tNi00aDJWN2g0VjVoLTRWM2gtMnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWRlb0NhbWVyYUJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMC40OFY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTQuNDhsNCAzLjk4di0xMWwtNCAzLjk4ek01IDE2bDIuMzgtMy4xN0w5IDE1bDIuNjItMy41TDE1IDE2SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvQ2FtZXJhRnJvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMC40OFY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTQuNDhsNCAzLjk4di0xMWwtNCAzLjk4ek0xMCA4YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptNCA4SDZ2LS41N2MwLS44MS40OC0xLjUzIDEuMjItMS44NWE2Ljk1IDYuOTUgMCAwIDEgNS41NiAwQTIuMDEgMi4wMSAwIDAgMSAxNCAxNS40M1YxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlkZW9TdGFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNCAxOFY2aDIuOTVsLTIuMzMgOC43M0wxNi44MiAxOEg0em0xNiAwaC0yLjk1bDIuMzQtOC43M0w3LjE4IDZIMjB2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdDb21meSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNHY3aDIwVjRIMnptOCAxNmgxMnYtN0gxMHY3em0tOCAwaDZ2LTdIMnY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3Q29tcGFjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMThoMi41di0yLjVINFYxOHptMC00Ljc1aDIuNXYtMi41SDR2Mi41ek00IDguNWgyLjVWNkg0djIuNXpNMTcuNSA2djIuNUgyMFY2aC0yLjV6TTEzIDguNWgyLjVWNkgxM3YyLjV6bTQuNSA5LjVIMjB2LTIuNWgtMi41VjE4em0wLTQuNzVIMjB2LTIuNWgtMi41djIuNXpNOC41IDE4SDExdi0yLjVIOC41VjE4em00LjUgMGgyLjV2LTIuNUgxM1YxOHpNOC41IDguNUgxMVY2SDguNXYyLjV6bTQuNSA0Ljc1aDIuNXYtMi41SDEzdjIuNXptLTQuNSAwSDExdi0yLjVIOC41djIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlnbmV0dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOSAxNWMtNC40MiAwLTgtMi42OS04LTZzMy41OC02IDgtNiA4IDIuNjkgOCA2LTMuNTggNi04IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZycGFubyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjY5IDQuMDVDMTguNjYgNC43MyAxNS44NiA1LjUgMTIgNS41Yy0zLjg5IDAtNi45NS0uODQtOC42OS0xLjQzQS45OTMuOTkzIDAgMCAwIDIgNS4wMlYxOWMwIC42OC42NiAxLjE3IDEuMzEuOTVDNS4zNiAxOS4yNiA4LjEgMTguNSAxMiAxOC41YzMuODcgMCA2LjY2Ljc2IDguNjkgMS40NUEuOTk5Ljk5OSAwIDAgMCAyMiAxOVY1YzAtLjY4LS42Ni0xLjE2LTEuMzEtLjk1ek0xMiAxNWMtMi4zNCAwLTQuNTIuMTUtNi41Mi40MWwzLjY5LTQuNDIgMiAyLjRMMTQgMTBsNC41MSA1LjRjLTEuOTktLjI1LTQuMjEtLjQtNi41MS0uNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2JBdXRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi44NSAxMi42NWgyLjNMOCA5bC0xLjE1IDMuNjV6TTIyIDdsLTEuMiA2LjI5TDE5LjMgN2gtMS42bC0xLjQ5IDYuMjlMMTUgN2gtLjc2QzEyLjc3IDUuMTcgMTAuNTMgNCA4IDRjLTQuNDIgMC04IDMuNTgtOCA4czMuNTggOCA4IDhjMy4xMyAwIDUuODQtMS44MSA3LjE1LTQuNDNsLjEuNDNIMTdsMS41LTYuMUwyMCAxNmgxLjc1bDIuMDUtOUgyMnptLTExLjcgOS0uNy0ySDYuNGwtLjcgMkgzLjhMNyA3aDJsMy4yIDloLTEuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2JDbG91ZHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4zNiAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNCA5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0QTUuOTk0IDUuOTk0IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY0LTQuOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdiSW5jYW5kZXNjZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMy41NSAxOC41NCAxLjQxIDEuNDEgMS43OS0xLjgtMS40MS0xLjQxLTEuNzkgMS44ek0xMSAyMi40NWgyVjE5LjVoLTJ2Mi45NXpNNCAxMC41SDF2Mmgzdi0yem0xMS00LjE5VjEuNUg5djQuODFDNy4yMSA3LjM1IDYgOS4yOCA2IDExLjVjMCAzLjMxIDIuNjkgNiA2IDZzNi0yLjY5IDYtNmMwLTIuMjItMS4yMS00LjE1LTMtNS4xOXptNSA0LjE5djJoM3YtMmgtM3ptLTIuNzYgNy42NiAxLjc5IDEuOCAxLjQxLTEuNDEtMS44LTEuNzktMS40IDEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2JJcmlkZXNjZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE0LjVoMTR2LTZINXY2ek0xMSAuNTVWMy41aDJWLjU1aC0yem04LjA0IDIuNS0xLjc5IDEuNzkgMS40MSAxLjQxIDEuOC0xLjc5LTEuNDItMS40MXpNMTMgMjIuNDVWMTkuNWgtMnYyLjk1aDJ6bTcuNDUtMy45MS0xLjgtMS43OS0xLjQxIDEuNDEgMS43OSAxLjggMS40Mi0xLjQyek0zLjU1IDQuNDZsMS43OSAxLjc5IDEuNDEtMS40MS0xLjc5LTEuNzktMS40MSAxLjQxem0xLjQxIDE1LjQ5IDEuNzktMS44LTEuNDEtMS40MS0xLjc5IDEuNzkgMS40MSAxLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYlNoYWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMnYyLjVsNS41IDUuNUgyMnptMCA4aDNsLTMtM3pNOCA0bC02IDZoMnYxMGg4VjEwaDJMOCA0em0xIDEwSDd2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYlN1bm55IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNi43NiA0Ljg0LTEuOC0xLjc5LTEuNDEgMS40MSAxLjc5IDEuNzkgMS40Mi0xLjQxek00IDEwLjVIMXYyaDN2LTJ6bTktOS45NWgtMlYzLjVoMlYuNTV6bTcuNDUgMy45MS0xLjQxLTEuNDEtMS43OSAxLjc5IDEuNDEgMS40MSAxLjc5LTEuNzl6bS0zLjIxIDEzLjcgMS43OSAxLjggMS40MS0xLjQxLTEuOC0xLjc5LTEuNCAxLjR6TTIwIDEwLjV2Mmgzdi0yaC0zem0tOC01Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnptLTEgMTYuOTVoMlYxOS41aC0ydjIuOTV6bS03LjQ1LTMuOTEgMS40MSAxLjQxIDEuNzktMS44LTEuNDEtMS40MS0xLjc5IDEuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2JUd2lnaGxpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi45NTQgOC42NiAyLjEyLTIuMTIgMS40MTUgMS40MTQtMi4xMyAyLjEyek0xNy45IDE0Yy0uNS0yLjg1LTIuOTUtNS01LjktNXMtNS40NSAyLjE1LTUuOSA1aDExLjh6TTIgMTZoMjB2NEgyem05LTEyaDJ2M2gtMnpNMy41NCA3LjkyNSA0Ljk1NCA2LjUxbDIuMTIyIDIuMTIyLTEuNDE1IDEuNDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYlR3aWxpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuOTU1IDguNjYyIDIuMTItMi4xMjIgMS40MTYgMS40MTQtMi4xMjEgMi4xMjJ6TTIgMThoMjB2Mkgyek0xMSA0aDJ2M2gtMnpNMy41NDMgNy45MjUgNC45NTcgNi41MWwyLjEyMSAyLjEyLTEuNDE0IDEuNDE1ek01IDE2aDE0YzAtMy44Ny0zLjEzLTctNy03cy03IDMuMTMtNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQzNjAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3QzYuNDggNyAyIDkuMjQgMiAxMmMwIDIuMjQgMi45NCA0LjEzIDcgNC43N1YyMGw0LTQtNC00djIuNzNjLTMuMTUtLjU2LTUtMS45LTUtMi43MyAwLTEuMDYgMy4wNC0zIDgtM3M4IDEuOTQgOCAzYzAgLjczLTEuNDYgMS44OS00IDIuNTN2Mi4wNWMzLjUzLS43NyA2LTIuNTMgNi00LjU4IDAtMi43Ni00LjQ4LTUtMTAtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkQnVzaW5lc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxN2gydi0zaDF2LTJsLTEtNUgybC0xIDV2MmgxdjZoOXYtNmg0djN6bS02IDFINHYtNGg1djR6TTIgNGgxNXYySDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4di0zaC0ydjNoLTN2MmgzdjNoMnYtM2gzdi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRMb2NhdGlvbkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDF2M2gzdjJoLTN2M2gtMlY2aC0zVjRoM1YxaDJ6bS04IDEyYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMi05Ljc1VjdoM3YzaDIuOTJjLjA1LjM5LjA4Ljc5LjA4IDEuMiAwIDMuMzItMi42NyA3LjI1LTggMTEuOC01LjMzLTQuNTUtOC04LjQ4LTgtMTEuOEM0IDYuMjIgNy44IDMgMTIgM2MuNjggMCAxLjM1LjA4IDIgLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM4LjE0IDIgNSA1LjE0IDUgOWMwIDUuMjUgNyAxMyA3IDEzczctNy43NSA3LTEzYzAtMy44Ni0zLjE0LTctNy03em00IDhoLTN2M2gtMnYtM0g4VjhoM1Y1aDJ2M2gzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZFJvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOHYtM2gtMnYzaC0zdjJoM3YzaDJ2LTNoM3YtMnpNMTggNGgydjloLTJ6TTQgNGgydjE2SDR6TTExIDRoMnY0aC0yek0xMSAxMGgydjRoLTJ6TTExIDE2aDJ2NGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWdyaWN1bHR1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41IDEyYy45MyAwIDEuNzguMjggMi41Ljc2VjhjMC0xLjEtLjktMi0yLTJoLTYuMjlsLTEuMDYtMS4wNiAxLjQxLTEuNDEtLjcxLS43MS0zLjUzIDMuNTMuNzEuNzEgMS40MS0xLjQxTDEzIDYuNzFWOWMwIDEuMS0uOSAyLTIgMmgtLjU0QTUuOTggNS45OCAwIDAgMSAxMiAxNWMwIC4zNC0uMDQuNjctLjA5IDFoMy4xNGMuMjUtMi4yNSAyLjE0LTQgNC40NS00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41IDEzYy0xLjkzIDAtMy41IDEuNTctMy41IDMuNXMxLjU3IDMuNSAzLjUgMy41IDMuNS0xLjU3IDMuNS0zLjUtMS41Ny0zLjUtMy41LTMuNXptMCA1Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNNCA5aDVjMC0xLjEtLjktMi0yLTJINGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMXpNOS44MyAxMy44MmwtLjE4LS40Ny45My0uMzVhNC45MiA0LjkyIDAgMCAwLTIuMzEtMi40M2wtLjQuODktLjQ2LS4yMS40LS45QzcuMjYgMTAuMTMgNi42NCAxMCA2IDEwYy0uNTMgMC0xLjA0LjExLTEuNTIuMjZsLjM0LjkxLS40Ny4xOC0uMzUtLjkzYTQuOTIgNC45MiAwIDAgMC0yLjQzIDIuMzFsLjg5LjQtLjIxLjQ2LS45LS40QzEuMTMgMTMuNzQgMSAxNC4zNiAxIDE1YzAgLjUzLjExIDEuMDQuMjYgMS41MmwuOTEtLjM0LjE4LjQ3LS45My4zNWE0LjkyIDQuOTIgMCAwIDAgMi4zMSAyLjQzbC40LS44OS40Ni4yMS0uNC45Yy41NS4yMiAxLjE3LjM1IDEuODEuMzUuNTMgMCAxLjA0LS4xMSAxLjUyLS4yNmwtLjM0LS45MS40Ny0uMTguMzUuOTNhNC45MiA0LjkyIDAgMCAwIDIuNDMtMi4zMWwtLjg5LS40LjIxLS40Ni45LjRjLjIyLS41NS4zNS0xLjE3LjM1LTEuODEgMC0uNTMtLjExLTEuMDQtLjI2LTEuNTJsLS45MS4zNHptLTIuNjggMy45NWMtMS41My42My0zLjI5LS4wOS0zLjkyLTEuNjItLjYzLTEuNTMuMDktMy4yOSAxLjYyLTMuOTIgMS41My0uNjMgMy4yOS4wOSAzLjkyIDEuNjIuNjQgMS41My0uMDkgMy4yOS0xLjYyIDMuOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTdG9wcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjIxIDkuMjFDMTUuOTMgMTAuNzggMTMuNDUgMTMuMyAxMyAxN2gydjJIOXYtMmgyYy0uNS00LjUtNC4zNy04LTktOFY3YzQuMzkgMCA4LjIyIDIuNTUgMTAgNi4zIDEuMTMtMi40MyAyLjk5LTQuMjUgNC43OC01LjUyTDE0IDVoN3Y3bC0yLjc5LTIuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNCAyIDIwaDE3bDMtMTZoLTl6bTEuNSAxMGEyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWx0Um91dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05Ljc4IDExLjE2LTEuNDIgMS40MmE3LjI4MiA3LjI4MiAwIDAgMS0xLjc5LTIuOTRsMS45NC0uNDljLjMyLjg5Ljc3IDEuNSAxLjI3IDIuMDF6TTExIDYgNyAyIDMgNmgzLjAyYy4wMi44MS4wOCAxLjU0LjE5IDIuMTdsMS45NC0uNDlDOC4wOCA3LjIgOC4wMyA2LjYzIDguMDIgNkgxMXptMTAgMC00LTQtNCA0aDIuOTljLS4xIDMuNjgtMS4yOCA0Ljc1LTIuNTQgNS44OC0uNS40NC0xLjAxLjkyLTEuNDUgMS41NS0uMzQtLjQ5LS43My0uODgtMS4xMy0xLjI0TDkuNDYgMTMuNmMuOTMuODUgMS41NCAxLjU0IDEuNTQgMy40djVoMnYtNWMwLTIuMDIuNzEtMi42NiAxLjc5LTMuNjMgMS4zOC0xLjI0IDMuMDgtMi43OCAzLjItNy4zN0gyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXRtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA5djEuNWgyLjI1VjE1aDEuNXYtNC41SDE0Vjl6TTYgOUgzYy0uNTUgMC0xIC40NS0xIDF2NWgxLjV2LTEuNWgyVjE1SDd2LTVjMC0uNTUtLjQ1LTEtMS0xem0tLjUgM2gtMnYtMS41aDJWMTJ6TTIxIDloLTQuNWMtLjU1IDAtMSAuNDUtMSAxdjVIMTd2LTQuNWgxVjE0aDEuNXYtMy41MWgxVjE1SDIydi01YzAtLjU1LS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXR0cmFjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC40MyAxOC43NWMuMzctLjQ2Ljk0LS43NSAxLjU3LS43NS42MyAwIDEuMTkuMjkgMS41Ni43NS4zOS0uMDkuNzYtLjIxIDEuMTItLjM2bC0xLjQyLTMuMThhMy41MjIgMy41MjIgMCAwIDEtMi41Ni0uMDJsLTEuNDMgMy4xOWMuMzguMTYuNzYuMjkgMS4xNi4zN3pNNS4xNSAxMGE3LjA2IDcuMDYgMCAwIDAgLjA4IDRjLjYzLjA1IDEuMjIuNCAxLjU2Ljk5LjMzLjU3LjM1IDEuMjMuMTEgMS43OS4yNy4yNy41Ni41My44Ny43NmwxLjUyLTMuMzljLS40Ny0uNTgtLjc1LTEuMzItLjc1LTIuMTMgMC0xLjg5IDEuNTUtMy40MSAzLjQ2LTMuNDFzMy40NiAxLjUzIDMuNDYgMy40MWMwIC44Mi0uMjkgMS41Ny0uNzggMi4xNmwxLjUgMy4zNWMuMzItLjI0LjYyLS41LjktLjc5LS4yMi0uNTUtLjItMS4yLjEyLTEuNzUuMzMtLjU3LjktLjkyIDEuNTItLjk5YTcuMDI1IDcuMDI1IDAgMCAwIC4wOS00LjAyYy0uNjQtLjA0LTEuMjYtLjM5LTEuNi0xLS4zNi0uNjItLjM1LTEuMzYtLjAzLTEuOTUtLjkxLS45OC0yLjEtMS43MS0zLjQ0LTIuMDVDMTMuMzkgNS42IDEyLjc0IDYgMTIgNnMtMS4zOS0uNDEtMS43NC0xLjAxYTcuMDUzIDcuMDUzIDAgMCAwLTMuNDQgMi4wM2MuMzMuNi4zNSAxLjM1LS4wMiAxLjk4LS4zNS42Mi0uOTkuOTctMS42NSAxem0tMS4zLS40MmMtLjc4LS42LTEuMDItMS43LS41MS0yLjU4LjUxLS44OCAxLjU4LTEuMjMgMi40OS0uODVhOC41MyA4LjUzIDAgMCAxIDQuMTgtMi40MkMxMC4xNSAyLjc1IDEwLjk5IDIgMTIgMnMxLjg1Ljc1IDEuOTggMS43M2MxLjYzLjM5IDMuMDcgMS4yNCA0LjE4IDIuNDJhMS45OSAxLjk5IDAgMCAxIDIuNDkuODVjLjUxLjg4LjI3IDEuOTgtLjUxIDIuNTguMjMuNzcuMzUgMS41OC4zNSAyLjQycy0uMTIgMS42NS0uMzUgMi40MmMuNzguNiAxLjAyIDEuNy41MSAyLjU4LS41MS44OC0xLjU4IDEuMjMtMi40OS44NS0uNC40My0uODUuODEtMS4zNCAxLjE1bDEuMzQgM0gxNi4zbC0uOTctMi4xN2MtLjQzLjE4LS44OC4zMy0xLjM0LjQ0LS4xNC45OC0uOTggMS43My0xLjk5IDEuNzNzLTEuODUtLjc1LTEuOTgtMS43M2MtLjQ4LS4xMi0uOTQtLjI3LTEuMzgtLjQ2TDcuNjYgMjJINS43OGwxLjM2LTMuMDNhOC43MiA4LjcyIDAgMCAxLTEuMy0xLjEyYy0uOTIuMzgtMS45OS4wMy0yLjUtLjg1cy0uMjctMS45OC41MS0yLjU4Yy0uMjMtLjc3LS4zNS0xLjU4LS4zNS0yLjQycy4xMi0xLjY1LjM1LTIuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhZGdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgN2gtNVY0YzAtMS4xLS45LTItMi0yaC0yYy0xLjEgMC0yIC45LTIgMnYzSDRjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnpNOSAxMmMuODMgMCAxLjUuNjcgMS41IDEuNVM5LjgzIDE1IDkgMTVzLTEuNS0uNjctMS41LTEuNVM4LjE3IDEyIDkgMTJ6bTMgNkg2di0uNzVjMC0xIDItMS41IDMtMS41czMgLjUgMyAxLjVWMTh6bTEtOWgtMlY0aDJ2NXptNSA3LjVoLTRWMTVoNHYxLjV6bTAtM2gtNFYxMmg0djEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmFrZXJ5RGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE5LjI4IDE2LjM0IDE3LjQ2IDE1cy4zMi0uNTkuOTYtMS43OGEuOTQ0Ljk0NCAwIDAgMSAxLjYgMGwuODEgMS4yNmMuMTkuMy4yMS42OC4wNiAxbC0uMjIuNDdhLjk0Ljk0IDAgMCAxLTEuMzkuMzl6bS0xNC41NiAwYS45NDYuOTQ2IDAgMCAxLTEuMzktLjM4bC0uMjMtLjQ3Yy0uMTUtLjMyLS4xMy0uNy4wNi0xbC44MS0xLjI2YS45NDQuOTQ0IDAgMCAxIDEuNiAwYy42NSAxLjE4Ljk3IDEuNzcuOTcgMS43N2wtMS44MiAxLjM0em0xMC42NC02Ljk3Yy4wOS0uNjguNzMtMS4wNiAxLjI3LS43NWwxLjU5LjljLjQ2LjI2LjYzLjkxLjM2IDEuNDFMMTYuNSAxNWgtMS44bC42Ni01LjYzem0tNi43MyAwTDkuMyAxNUg3LjVsLTIuMDktNC4wOGMtLjI3LS41LS4xLTEuMTUuMzYtMS40MWwxLjU5LS45Yy41My0uMyAxLjE4LjA4IDEuMjcuNzZ6TTEzLjggMTVoLTMuNmwtLjc0LTYuODhjLS4wNy0uNTkuMzUtMS4xMi44OC0xLjEyaDMuM2MuNTMgMCAuOTQuNTMuODggMS4xMkwxMy44IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCZWVuaGVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDFINWMtMS4xIDAtMS45OS45LTEuOTkgMkwzIDE1LjkzYzAgLjY5LjM1IDEuMy44OCAxLjY2TDEyIDIzbDguMTEtNS40MWMuNTMtLjM2Ljg4LS45Ny44OC0xLjY2TDIxIDNjMC0xLjEtLjktMi0yLTJ6bS05IDE1LTUtNSAxLjQxLTEuNDFMMTAgMTMuMTdsNy41OS03LjU5TDE5IDdsLTkgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmlrZVNjb290ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNGguNzRMOC44MiA1LjU2QTIuMDA5IDIuMDA5IDAgMCAwIDYuODcgNEgzdjJoMy44N2wxLjQyIDYuMjVoLS4wMUE2LjAwOCA2LjAwOCAwIDAgMCA0LjA5IDE3SDB2Mmg2di0xYzAtMi4yMSAxLjc5LTQgNC00ek0xOSA4aC0uODJsLTEuMzUtMy42OUExLjk3NiAxLjk3NiAwIDAgMCAxNC45NiAzSDExdjJoMy45NmwxLjEgM0gxMC40bC40NiAySDE1Yy0uNDMuNTgtLjc1IDEuMjUtLjkgMmgtMi43OWwuNDYgMmgyLjMzYy40NCAyLjIzIDIuMzEgMy44OCA0LjY1IDMuOTkgMi44LjEzIDUuMjUtMi4xOSA1LjI1LTVDMjQgMTAuMiAyMS44IDggMTkgOHptMCA4Yy0xLjY4IDAtMy0xLjMyLTMtMyAwLS45My40MS0xLjczIDEuMDUtMi4yOGwuOTYgMi42NCAxLjg4LS42OC0uOTctMi42N2MuMDMgMCAuMDYtLjAxLjA5LS4wMSAxLjY4IDAgMyAxLjMyIDMgM3MtMS4zMyAzLTMuMDEgM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTVjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnJlYWtmYXN0RGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDNINkMzLjc5IDMgMiA0Ljc5IDIgN2MwIDEuNDguODEgMi43NSAyIDMuNDVWMTljMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMnYtOC41NWMxLjE5LS42OSAyLTEuOTcgMi0zLjQ1IDAtMi4yMS0xLjc5LTQtNC00em0tNCAxMmgtNHYtNGg0djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJydW5jaERpbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xOCA4aDJWNGgtMnY0em0tMi40OSAxNEgyLjQ5Yy0uMjcgMC0uNDktLjIyLS40OS0uNVYyMGgxNHYxLjVjMCAuMjgtLjIyLjUtLjQ5LjV6TTE4IDE1Ljg5bC0uNC0uNDJhNS44NTIgNS44NTIgMCAwIDEtMS42LTRWMmg2djkuNTFjMCAxLjQ2LS41NCAyLjg3LTEuNTMgMy45NGwtLjQ3LjUyVjIwaDJ2MmgtNHYtNi4xMXpNNyAxNnYtMmg0djJoNC41Yy4yOCAwIC41LjIyLjUuNXYxYzAgLjI4LS4yMi41LS41LjVoLTEzYy0uMjggMC0uNS0uMjItLjUtLjV2LTFjMC0uMjguMjItLjUuNS0uNUg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCdXNBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMWE3IDcgMCAwIDAtNS43OCAzLjA1bC4wMi0uMDNDOS44NCA0IDkuNDIgNCA5IDRjLTQuNDIgMC04IC41LTggNHYxMGMwIC44OC4zOSAxLjY3IDEgMi4yMlYyMmExIDEgMCAwIDAgMSAxaDFhMSAxIDAgMCAwIDEtMXYtMWg4djFhMSAxIDAgMCAwIDEgMWgxYTEgMSAwIDAgMCAxLTF2LTEuNzhjLjYxLS41NSAxLTEuMzQgMS0yLjIydi0zLjA4QTcgNyAwIDAgMCAxNiAxek00LjUgMTlhMS41IDEuNSAwIDEgMSAwLTMgMS41IDEuNSAwIDAgMSAwIDN6TTMgMTNWOGg2YzAgMS45Ni44MSAzLjczIDIuMTEgNUgzem0xMC41IDZhMS41IDEuNSAwIDEgMSAwLTMgMS41IDEuNSAwIDAgMSAwIDN6bTIuNS02YTUgNSAwIDEgMSAwLTEwIDUgNSAwIDAgMSAwIDEwem0tMS05aDJ2NWgtMnptMCA2aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FyQ3Jhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptLjUgNmgtMVYzaDF2NHptMCAxdjFoLTFWOGgxem0tLjU5IDVjLjA2LjE2LjA5LjMzLjA5LjUgMCAuODMtLjY3IDEuNS0xLjUgMS41cy0xLjUtLjY3LTEuNS0xLjVjMC0uMzkuMTUtLjc0LjM5LTEuMDFBNy4wMzIgNy4wMzIgMCAwIDEgMTEuNjggOUg1LjgxbDEuMDQtM0gxMWMwLS42OS4xLTEuMzcuMjktMkg2LjVjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTF2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi02LjY4Yy0xLjA1LjUxLTIuMTYuNjktMy4wOS42OHpNNy41IDE1Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNi42NyAxMiA3LjUgMTJzMS41LjY3IDEuNSAxLjVTOC4zMyAxNSA3LjUgMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhclJlbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjM5IDlINy42MWMtLjQzIDAtLjgxLjI4LS45NS42OGwtMS42NiA1djYuODFjMCAuMjkuMjMuNTEuNS41MWgxYy4yOCAwIC41LS4yMi41LS41VjIwaDEwdjEuNWMwIC4yOC4yMi41LjUuNWgxYy4yOCAwIC41LS4yMi41LS41di02LjgxbC0xLjY2LTVhMS4wMSAxLjAxIDAgMCAwLS45NS0uNjl6bS04LjYxIDljLS42OCAwLTEuMjItLjU0LTEuMjItMS4yMnMuNTQtMS4yMiAxLjIyLTEuMjJTOSAxNi4xMSA5IDE2Ljc4IDguNDYgMTggNy43OCAxOHptOC40NCAwYy0uNjcgMC0xLjIyLS41NC0xLjIyLTEuMjJzLjU0LTEuMjIgMS4yMi0xLjIyIDEuMjIuNTQgMS4yMiAxLjIyUzE2LjkgMTggMTYuMjIgMTh6bS05LjkzLTQgMS4zMy00aDguNzhsMS4zMyA0SDYuMjl6TTEwLjgzIDNBMy4wMSAzLjAxIDAgMCAwIDggMUM2LjM0IDEgNSAyLjM0IDUgNGMwIDEuNjUgMS4zNCAzIDMgMyAxLjMgMCAyLjQxLS44NCAyLjgzLTJIMTZ2MmgyVjVoMVYzaC04LjE3ek04IDVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FyUmVwYWlyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMjIgMTJjLjY4IDAgMS4yMi0uNTQgMS4yMi0xLjIyIDAtLjY3LS41NC0xLjIyLTEuMjItMS4yMlMxNSAxMC4xMSAxNSAxMC43OGMwIC42OC41NSAxLjIyIDEuMjIgMS4yMnptLTkuNjYtMS4yMmMwIC42Ny41NCAxLjIyIDEuMjIgMS4yMlM5IDExLjQ2IDkgMTAuNzhjMC0uNjctLjU0LTEuMjItMS4yMi0xLjIycy0xLjIyLjU1LTEuMjIgMS4yMnpNNy42MSA0IDYuMjggOGgxMS40M2wtMS4zMy00SDcuNjF6bTguNjctMXMuNTQuMDEuOTIuNTRjLjAyLjAyLjAzLjA0LjA1LjA3LjA3LjExLjE0LjI0LjE5LjQuMjIuNjUgMS41NiA0LjY4IDEuNTYgNC42OHY2LjVjMCAuNDUtLjM1LjgxLS43OC44MWgtLjQ0Yy0uNDMgMC0uNzgtLjM2LS43OC0uODFWMTRIN3YxLjE5YzAgLjQ1LS4zNS44MS0uNzguODFoLS40NGMtLjQzIDAtLjc4LS4zNi0uNzgtLjgxdi02LjVTNi4zNCA0LjY3IDYuNTUgNGMuMDUtLjE2LjEyLS4yOC4xOS0uNC4wMy0uMDIuMDQtLjA0LjA2LS4wNi4zOC0uNTMuOTItLjU0LjkyLS41NGg4LjU2ek00IDE3LjAxaDE2VjE5aC03djNoLTJ2LTNINHYtMS45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FzdGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOXYyaC0yVjNoLTJ2MmgtMlYzaC0ydjJoLTJWM0g5djJIN1YzSDV2OEgzVjlIMXYxMmg5di0zYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2M2g5VjloLTJ6bS0xMCAzSDlWOWgydjN6bTQgMGgtMlY5aDJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2F0ZWdvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAyLTUuNSA5aDExelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE3LjVcIixcImN5XCI6XCIxNy41XCIsXCJyXCI6XCI0LjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMy41aDh2OEgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDZWxlYnJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIgMjIgMTQtNS05LTl6TTE0LjUzIDEyLjUzbDUuNTktNS41OWExLjI1IDEuMjUgMCAwIDEgMS43NyAwbC41OS41OSAxLjA2LTEuMDYtLjU5LS41OWEyLjc1OCAyLjc1OCAwIDAgMC0zLjg5IDBsLTUuNTkgNS41OSAxLjA2IDEuMDZ6TTEwLjA2IDYuODhsLS41OS41OSAxLjA2IDEuMDYuNTktLjU5YTIuNzU4IDIuNzU4IDAgMCAwIDAtMy44OWwtLjU5LS41OS0xLjA2IDEuMDcuNTkuNTljLjQ4LjQ4LjQ4IDEuMjggMCAxLjc2ek0xNy4wNiAxMS44OGwtMS41OSAxLjU5IDEuMDYgMS4wNiAxLjU5LTEuNTlhMS4yNSAxLjI1IDAgMCAxIDEuNzcgMGwxLjYxIDEuNjEgMS4wNi0xLjA2LTEuNjEtMS42MWEyLjc1OCAyLjc1OCAwIDAgMC0zLjg5IDB6TTE1LjA2IDUuODhsLTMuNTkgMy41OSAxLjA2IDEuMDYgMy41OS0zLjU5YTIuNzU4IDIuNzU4IDAgMCAwIDAtMy44OWwtMS41OS0xLjU5LTEuMDYgMS4wNiAxLjU5IDEuNTljLjQ4LjQ5LjQ4IDEuMjkgMCAxLjc3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaHVyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMi4yMlY5bC01LTIuNVY1aDJWM2gtMlYxaC0ydjJIOXYyaDJ2MS41TDYgOXYzLjIyTDIgMTR2OGg4di0zYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2M2g4di04bC00LTEuNzh6bS02IDEuMjhjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbGVhbmluZ1NlcnZpY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTFoLTFWM2MwLTEuMS0uOS0yLTItMmgtMmMtMS4xIDAtMiAuOS0yIDJ2OEg4Yy0yLjc2IDAtNSAyLjI0LTUgNXY3aDE4di03YzAtMi43Ni0yLjI0LTUtNS01em0zIDEwaC0ydi0zYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjNoLTJ2LTNjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2M0g5di0zYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjNINXYtNWMwLTEuNjUgMS4zNS0zIDMtM2g4YzEuNjUgMCAzIDEuMzUgMyAzdjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbXBhc3NDYWxpYnJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxN1wiLFwiclwiOlwiNFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMC4wN2MxLjk1IDAgMy43Mi43OSA1IDIuMDdsNS01QzE5LjQ0IDQuNTkgMTUuOSAzIDEyIDNTNC41NiA0LjU5IDIgNy4xNWw1IDVhNy4wNiA3LjA2IDAgMCAxIDUtMi4wOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29ubmVjdGluZ0FpcnBvcnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuNCAxNyAxLjMgNC40aC0xLjFMMTMgMTdoLTNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFoM2wyLjYtNC40aDEuMUwxNS40IDE1aDIuODVsLjc1LTFoMWwtLjYgMiAuNiAyaC0xbC0uNzUtMUgxNS40ek01Ljc1IDcgNSA2SDRsLjYgMi0uNiAyaDFsLjc1LTFIOC42bC0xLjMgNC40aDEuMUwxMSA5aDNjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFoLTNMOC40IDIuNkg3LjNMOC42IDdINS43NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3Jpc2lzQWxlcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDIuNWMwIDEuNS0xLjUgNi0xLjUgNmgtMlM5LjUgNCA5LjUgMi41YTIuNSAyLjUgMCAwIDEgNSAwek0xMiAxMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTQuMDgtNC44OWMuMTgtLjc1LjMzLTEuNDcuMzktMi4wNkE5Ljk5NiA5Ljk5NiAwIDAgMSAyMiAxMmMwIDUuNTItNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0zLjkyIDIuMjUtNy4zMSA1LjUzLTguOTUuMDcuNTkuMjEgMS4zMi4zOSAyLjA2QTguMDI4IDguMDI4IDAgMCAwIDQgMTJjMCA0LjQyIDMuNTggOCA4IDhzOC0zLjU4IDgtOGMwLTIuOTMtMS41OC01LjQ5LTMuOTItNi44OXpNMTggMTJjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTZjMC0yIC45OC0zLjc3IDIuNDgtNC44Ni4yMy44MS42NSAyLjA3LjY1IDIuMDdDOC40MyA5LjkzIDggMTAuOTIgOCAxMmMwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00YzAtMS4wOC0uNDMtMi4wNy0xLjEzLTIuNzkgMCAwIC40MS0xLjIyLjY1LTIuMDdBNS45OTggNS45OTggMCAwIDEgMTggMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlbGl2ZXJ5RGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN2MwLTEuMS0uOS0yLTItMmgtM3YyaDN2Mi42NUwxMy41MiAxNEgxMFY5SDZjLTIuMjEgMC00IDEuNzktNCA0djNoMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDQuNDhMMTkgMTAuMzVWN3pNNyAxN2MtLjU1IDAtMS0uNDUtMS0xaDJjMCAuNTUtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDZoNXYySDV6TTE5IDEzYy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMCA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlcGFydHVyZUJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxYy0yLjQgMC00LjUyIDEuMjEtNS43OCAzLjA1LjAxLS4wMS4wMS0uMDIuMDItLjAzQzkuODQgNCA5LjQyIDQgOSA0Yy00LjQyIDAtOCAuNS04IDR2MTBjMCAuODguMzkgMS42NyAxIDIuMjJWMjJjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoOHYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xLjc4Yy42MS0uNTUgMS0xLjM0IDEtMi4yMnYtMy4wOGMzLjM5LS40OSA2LTMuMzkgNi02LjkyIDAtMy44Ny0zLjEzLTctNy03ek00LjUgMTljLS44MyAwLTEuNS0uNjctMS41LTEuNVMzLjY3IDE2IDQuNSAxNnMxLjUuNjcgMS41IDEuNVM1LjMzIDE5IDQuNSAxOXpNMyAxM1Y4aDZjMCAxLjk2LjgxIDMuNzMgMi4xMSA1SDN6bTEwLjUgNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTIuNS02Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXptLjUtOUgxNXY1bDMuNjIgMi4xNi43NS0xLjIzLTIuODctMS42OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVzaWduU2VydmljZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi4yNCAxMS41MSAxLjU3LTEuNTctMy43NS0zLjc1LTEuNTcgMS41Ny00LjE0LTQuMTNjLS43OC0uNzgtMi4wNS0uNzgtMi44MyAwbC0xLjkgMS45Yy0uNzguNzgtLjc4IDIuMDUgMCAyLjgzbDQuMTMgNC4xM0wzIDE3LjI1VjIxaDMuNzVsNC43Ni00Ljc2IDQuMTMgNC4xM2MuOTUuOTUgMi4yMy42IDIuODMgMGwxLjktMS45Yy43OC0uNzguNzgtMi4wNSAwLTIuODNsLTQuMTMtNC4xM3ptLTcuMDYtLjQ0TDUuMDQgNi45NGwxLjg5LTEuOUw4LjIgNi4zMSA3LjAyIDcuNWwxLjQxIDEuNDEgMS4xOS0xLjE5IDEuNDUgMS40NS0xLjg5IDEuOXptNy44OCA3Ljg5LTQuMTMtNC4xMyAxLjktMS45IDEuNDUgMS40NS0xLjE5IDEuMTkgMS40MSAxLjQxIDEuMTktMS4xOSAxLjI3IDEuMjctMS45IDEuOXpNMjAuNzEgNy4wNGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTIuMzQtMi4zNGMtLjQ3LS40Ny0xLjEyLS4yOS0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaWFtb25kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMTYgM2gtLjMyTDkuMjEgOC4yNWg1LjU4ek0xNi40NiA4LjI1aDUuMTZMMTkgM2gtNS4xNnpNMjEuMzggOS43NWgtOC42M1YyMC4xek0xMS4yNSAyMC4xVjkuNzVIMi42MnpNNy41NCA4LjI1IDEwLjE2IDNINUwyLjM4IDguMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpbm5lckRpbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTloMjBsLTIgMkg0bC0yLTJ6TTUgNmgxdjFINVY2em0wLTJoMXYxSDVWNHptNCAwdjFIN1Y0aDJ6bTAgM0g3VjZoMnYxem0tMyA4LjIzYy0uMzYuMTEtLjY5LjI4LTEgLjQ3VjhoMXY3LjIzem0tMiAxLjI5Yy0uMzguNDQtLjY4LjkzLS44NCAxLjQ4aDE2LjgyYy4wMS0uMTYuMDMtLjMzLjAzLS41YTUuNDk3IDUuNDk3IDAgMCAwLTEwLjU4LTIuMWMtLjU5LS4yNS0xLjI0LS40LTEuOTMtLjQtLjE3IDAtLjMzLjAyLS41LjA0VjhoMmMxLjAzLjA2IDEuOS0uOTYgMi0yaDEwVjVIMTFjLS4xLTEuMDUtLjk3LTEuOTctMi0ySDN2MWgxdjFIM3YxaDF2MUgzdjFoMXY4LjUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zQmlrZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgNS41YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnpNNSAxMmMtMi44IDAtNSAyLjItNSA1czIuMiA1IDUgNSA1LTIuMiA1LTUtMi4yLTUtNS01em0wIDguNWMtMS45IDAtMy41LTEuNi0zLjUtMy41czEuNi0zLjUgMy41LTMuNSAzLjUgMS42IDMuNSAzLjUtMS42IDMuNS0zLjUgMy41em01LjgtMTAgMi40LTIuNC44LjhjMS4zIDEuMyAzIDIuMSA1LjEgMi4xVjljLTEuNSAwLTIuNy0uNi0zLjYtMS41bC0xLjktMS45Yy0uNS0uNC0xLS42LTEuNi0uNnMtMS4xLjItMS40LjZMNy44IDguNGMtLjQuNC0uNi45LS42IDEuNCAwIC42LjIgMS4xLjYgMS40TDExIDE0djVoMnYtNi4ybC0yLjItMi4zek0xOSAxMmMtMi44IDAtNSAyLjItNSA1czIuMiA1IDUgNSA1LTIuMiA1LTUtMi4yLTUtNS01em0wIDguNWMtMS45IDAtMy41LTEuNi0zLjUtMy41czEuNi0zLjUgMy41LTMuNSAzLjUgMS42IDMuNSAzLjUtMS42IDMuNS0zLjUgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zQm9hdEZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDIxYy0xLjM5IDAtMi43OC0uNDctNC0xLjMyLTIuNDQgMS43MS01LjU2IDEuNzEtOCAwQzYuNzggMjAuNTMgNS4zOSAyMSA0IDIxSDJ2MmgyYzEuMzggMCAyLjc0LS4zNSA0LS45OWE4Ljc1MiA4Ljc1MiAwIDAgMCA4IDBjMS4yNi42NSAyLjYyLjk5IDQgLjk5aDJ2LTJoLTJ6TTMuOTUgMTlINGMxLjYgMCAzLjAyLS44OCA0LTIgLjk4IDEuMTIgMi40IDIgNCAyczMuMDItLjg4IDQtMmMuOTggMS4xMiAyLjQgMiA0IDJoLjA1bDEuOS02LjY4Yy4xMS0uMzcuMDQtMS4wNi0uNjYtMS4yOEwyMCAxMC42MlY2YzAtMS4xLS45LTItMi0yaC0zVjFIOXYzSDZjLTEuMSAwLTIgLjktMiAydjQuNjJsLTEuMjkuNDJjLS42My4xOS0uODEuODQtLjY2IDEuMjhMMy45NSAxOXpNNiA2aDEydjMuOTdMMTIgOCA2IDkuOTdWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc0JvYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAyMWMtMS4zOSAwLTIuNzgtLjQ3LTQtMS4zMi0yLjQ0IDEuNzEtNS41NiAxLjcxLTggMEM2Ljc4IDIwLjUzIDUuMzkgMjEgNCAyMUgydjJoMmMxLjM4IDAgMi43NC0uMzUgNC0uOTlhOC43NTIgOC43NTIgMCAwIDAgOCAwYzEuMjYuNjUgMi42Mi45OSA0IC45OWgydi0yaC0yek0zLjk1IDE5SDRjMS42IDAgMy4wMi0uODggNC0yIC45OCAxLjEyIDIuNCAyIDQgMnMzLjAyLS44OCA0LTJjLjk4IDEuMTIgMi40IDIgNCAyaC4wNWwxLjg5LTYuNjhjLjA4LS4yNi4wNi0uNTQtLjA2LS43OHMtLjM0LS40Mi0uNi0uNUwyMCAxMC42MlY2YzAtMS4xLS45LTItMi0yaC0zVjFIOXYzSDZjLTEuMSAwLTIgLjktMiAydjQuNjJsLTEuMjkuNDJhMS4wMDcgMS4wMDcgMCAwIDAtLjY2IDEuMjhMMy45NSAxOXpNNiA2aDEydjMuOTdMMTIgOCA2IDkuOTdWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc0J1c0ZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQgMC04IC41LTggNHY5LjVjMCAuOTUuMzggMS44MSAxIDIuNDRWMjBjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoOHYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0yLjA2Yy42Mi0uNjMgMS0xLjQ5IDEtMi40NFY2YzAtMy41LTMuNTgtNC04LTR6TTguNSAxNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzcuNjcgMTMgOC41IDEzczEuNS42NyAxLjUgMS41UzkuMzMgMTYgOC41IDE2em03IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em0yLjUtNkg2VjdoMTJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc0J1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTZjMCAuODguMzkgMS42NyAxIDIuMjJWMjBjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoOHYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xLjc4Yy42MS0uNTUgMS0xLjM0IDEtMi4yMlY2YzAtMy41LTMuNTgtNC04LTRzLTggLjUtOCA0djEwem0zLjUgMWMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzYuNjcgMTQgNy41IDE0czEuNS42NyAxLjUgMS41UzguMzMgMTcgNy41IDE3em05IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em0xLjUtNkg2VjZoMTJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc0NhckZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDYuMDFDMTguNzIgNS40MiAxOC4xNiA1IDE3LjUgNWgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTJ2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTcuNSAxNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzYuNjcgMTMgNy41IDEzczEuNS42NyAxLjUgMS41UzguMzMgMTYgNy41IDE2em05IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek01LjgxIDEwbDEuMDQtM2gxMC4yOWwxLjA0IDNINS44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc0NhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDYuMDFDMTguNzIgNS40MiAxOC4xNiA1IDE3LjUgNWgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTJ2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuNSAxNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgMTMgNi41IDEzczEuNS42NyAxLjUgMS41UzcuMzMgMTYgNi41IDE2em0xMSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNNSAxMWwxLjUtNC41aDExTDE5IDExSDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpcmVjdGlvbnNSYWlsd2F5RmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjB2MWgxMnYtMWwtMS41LTFjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVWNmMwLTMuNS0zLjU4LTQtOC00em0wIDE0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTEuMTcgMTMgMTIgMTNzMS41LjY3IDEuNSAxLjVTMTIuODMgMTYgMTIgMTZ6bTYtNkg2VjdoMTJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc1JhaWx3YXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE1LjVDNCAxNy40MyA1LjU3IDE5IDcuNSAxOUw2IDIwLjV2LjVoMTJ2LS41TDE2LjUgMTljMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVWNWMwLTMuNS0zLjU4LTQtOC00cy04IC41LTggNHYxMC41em04IDEuNWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTYtN0g2VjVoMTJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc1J1biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjQ5IDUuNDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0tMy42IDEzLjkgMS00LjQgMi4xIDJ2Nmgydi03LjVsLTIuMS0yIC42LTNjMS4zIDEuNSAzLjMgMi41IDUuNSAyLjV2LTJjLTEuOSAwLTMuNS0xLTQuMy0yLjRsLTEtMS42Yy0uNC0uNi0xLTEtMS43LTEtLjMgMC0uNS4xLS44LjFsLTUuMiAyLjJ2NC43aDJ2LTMuNGwxLjgtLjctMS42IDguMS00LjktMS0uNCAyIDcgMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zU3Vid2F5RmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjB2MWgxMnYtMWwtMS41LTFjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVWNmMwLTMuNS0zLjU4LTQtOC00ek04LjUgMTZjLS44MyAwLTEuNS0uNjctMS41LTEuNVM3LjY3IDEzIDguNSAxM3MxLjUuNjcgMS41IDEuNVM5LjMzIDE2IDguNSAxNnptMi41LTZINlY3aDV2M3ptNC41IDZjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em0yLjUtNmgtNVY3aDV2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc1N1YndheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQuNDIgMC04IC41LTggNHY5LjVDNCAxNy40MyA1LjU3IDE5IDcuNSAxOUw2IDIwLjV2LjVoMTJ2LS41TDE2LjUgMTljMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVWNmMwLTMuNS0zLjU4LTQtOC00ek03LjUgMTdjLS44MyAwLTEuNS0uNjctMS41LTEuNVM2LjY3IDE0IDcuNSAxNHMxLjUuNjcgMS41IDEuNVM4LjMzIDE3IDcuNSAxN3ptMy41LTZINlY2aDV2NXptNS41IDZjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em0xLjUtNmgtNVY2aDV2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc1RyYW5zaXRGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy00IDAtOCAuNS04IDR2OS41QzQgMTcuNDMgNS41NyAxOSA3LjUgMTlMNiAyMHYxaDEydi0xbC0xLjUtMWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY2YzAtMy41LTMuNTgtNC04LTR6TTguNSAxNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzcuNjcgMTMgOC41IDEzczEuNS42NyAxLjUgMS41UzkuMzMgMTYgOC41IDE2em0yLjUtNkg2VjdoNXYzem00LjUgNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTIuNS02aC01VjdoNXYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zVHJhbnNpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQuNDIgMC04IC41LTggNHY5LjVDNCAxNy40MyA1LjU3IDE5IDcuNSAxOUw2IDIwLjV2LjVoMTJ2LS41TDE2LjUgMTljMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVWNmMwLTMuNS0zLjU4LTQtOC00ek03LjUgMTdjLS44MyAwLTEuNS0uNjctMS41LTEuNVM2LjY3IDE0IDcuNSAxNHMxLjUuNjcgMS41IDEuNVM4LjMzIDE3IDcuNSAxN3ptMy41LTZINlY2aDV2NXptNS41IDZjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em0xLjUtNmgtNVY2aDV2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc1dhbGsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6TTkuOCA4LjkgNyAyM2gyLjFsMS44LTggMi4xIDJ2Nmgydi03LjVsLTIuMS0yIC42LTNDMTQuOCAxMiAxNi44IDEzIDE5IDEzdi0yYy0xLjkgMC0zLjUtMS00LjMtMi40bC0xLTEuNmMtLjQtLjYtMS0xLTEuNy0xLS4zIDAtLjUuMS0uOC4xTDYgOC4zVjEzaDJWOS42bDEuOC0uN1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNDEgMTAuNTktNy45OS04Yy0uNzgtLjc4LTIuMDUtLjc4LTIuODMgMGwtOC4wMSA4Yy0uNzguNzgtLjc4IDIuMDUgMCAyLjgzbDguMDEgOGMuNzguNzggMi4wNS43OCAyLjgzIDBsNy45OS04Yy43OS0uNzkuNzktMi4wNSAwLTIuODN6TTEzLjUgMTQuNVYxMkgxMHYzSDh2LTRjMC0uNTUuNDUtMSAxLTFoNC41VjcuNUwxNyAxMWwtMy41IDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRHJ5Q2xlYW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41NiAxMS4zNiAxMyA4LjQ0VjdjMC0uNTUtLjQ1LTEtMS0xcy0xLS40NS0xLTEgLjQ1LTEgMS0xIDEgLjQ1IDEgMWgyYzAtMS44NC0xLjY2LTMuMy0zLjU2LTIuOTUtMS4xOC4yMi0yLjE1IDEuMTctMi4zOCAyLjM1LS4zIDEuNTYuNiAyLjk0IDEuOTQgMy40MnYuNjNsLTYuNTYgMi45MmMtLjg4LjM4LTEuNDQgMS4yNS0xLjQ0IDIuMnYuMDFDMyAxNC45MiA0LjA4IDE2IDUuNDIgMTZIN3Y2aDEwdi02aDEuNThjMS4zNCAwIDIuNDItMS4wOCAyLjQyLTIuNDJ2LS4wMWMwLS45NS0uNTYtMS44Mi0xLjQ0LTIuMjF6TTE4LjU4IDE0SDE3di0xSDd2MUg1LjQyYy0uMjMgMC0uNDItLjE5LS40Mi0uNDMgMC0uMTcuMS0uMzIuMjUtLjM4bDYuNzUtMyA2Ljc1IDNhLjQyMy40MjMgMCAwIDEtLjE3LjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0QXR0cmlidXRlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjYzIDdINi4zN0MzLjk2IDcgMiA5LjI0IDIgMTJzMS45NiA1IDQuMzcgNWgxMS4yNmMyLjQxIDAgNC4zNy0yLjI0IDQuMzctNXMtMS45Ni01LTQuMzctNXpNNy4yNCAxNC40NmwtMi41Ny0yLjU3LjctLjcgMS44NyAxLjg3IDMuNTItMy41Mi43LjctNC4yMiA0LjIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0TG9jYXRpb25BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy45NSAxM0g5VjguMDVsNS42MS01LjYxQTguMTcgOC4xNyAwIDAgMCAxMiAyYy00LjIgMC04IDMuMjItOCA4LjIgMCAzLjMyIDIuNjcgNy4yNSA4IDExLjggNS4zMy00LjU1IDgtOC40OCA4LTExLjggMC0xLjAxLS4xNi0xLjk0LS40NS0yLjhsLTUuNiA1LjZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDExaDIuMTJsNi4xNi02LjE2LTIuMTItMi4xMkwxMSA4Ljg4ek0yMC43MSAyIDIwIDEuMjljLS4yLS4xOS0uNDUtLjI5LS43MS0uMjktLjEzIDAtLjQ4LjA3LS43MS4yOWwtLjcyLjcyIDIuMTIgMi4xMi43Mi0uNzJjLjQtLjM5LjQtMS4wMi4wMS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0TG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzguMTQgMiA1IDUuMTQgNSA5YzAgNS4yNSA3IDEzIDcgMTNzNy03Ljc1IDctMTNjMC0zLjg2LTMuMTQtNy03LTd6bS0xLjU2IDEwSDl2LTEuNDRsMy4zNS0zLjM0IDEuNDMgMS40M0wxMC40NCAxMnptNC40NS00LjQ1LS43LjctMS40NC0xLjQ0LjctLjdhLjM4LjM4IDAgMCAxIC41NCAwbC45LjljLjE1LjE1LjE1LjM5IDAgLjU0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0Um9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRoLTJ2Ny45bDItMnpNNCA0aDJ2MTZINHpNMTAgNGgydjRoLTJ6TTEwIDEwaDJ2NGgtMnpNMTAgMTZoMnY0aC0yek0yMi41NiAxMi41OWwtMS4xNS0xLjE1YTEuNDkgMS40OSAwIDAgMC0yLjEyIDBMMTQgMTYuNzNWMjBoMy4yN2w1LjI5LTUuMjljLjU5LS41OS41OS0xLjU0IDAtMi4xMnptLTUuOTggNS44NmgtMS4wM3YtMS4wM0wxOSAxMy45NyAyMC4wMyAxNWwtMy40NSAzLjQ1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZ2dBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA5Yy0yLTItMy4wMS03LTkuMDMtN0M0Ljk1IDIgMS45NCA2IDIgMTEuNTIgMi4wNiAxNy4wNCA2Ljk2IDE5IDkuOTcgMTljMi4wMSAwIDIuMDEgMyA2LjAyIDNDMTkgMjIgMjIgMTkgMjIgMTUuMDIgMjIgMTIgMjEuMDEgMTEgMTkgOXptLTcgNi41Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWdnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM0M4LjUgMyA1IDkuMzMgNSAxNGMwIDMuODcgMy4xMyA3IDcgN3M3LTMuMTMgNy03YzAtNC42Ny0zLjUtMTEtNy0xMXptMSAxNWMtMyAwLTUtMS45OS01LTUgMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxYzAgMi45MiAyLjQyIDMgMyAzIC41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbGVjdHJpY0Jpa2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3aC0uODJsLTEuNy00LjY4QTIuMDA4IDIuMDA4IDAgMCAwIDE0LjYgMUgxMnYyaDIuNmwxLjQ2IDRoLTQuODFsLS4zNi0xSDEyVjRIN3YyaDEuNzVsMS44MiA1SDkuOWMtLjQ0LTIuMjMtMi4zMS0zLjg4LTQuNjUtMy45OUMyLjQ1IDYuODcgMCA5LjIgMCAxMmMwIDIuOCAyLjIgNSA1IDUgMi40NiAwIDQuNDUtMS42OSA0LjktNGg0LjJjLjQ0IDIuMjMgMi4zMSAzLjg4IDQuNjUgMy45OSAyLjguMTMgNS4yNS0yLjE5IDUuMjUtNUMyNCA5LjIgMjEuOCA3IDE5IDd6TTcuODIgMTNjLS40IDEuMTctMS40OSAyLTIuODIgMi0xLjY4IDAtMy0xLjMyLTMtM3MxLjMyLTMgMy0zYzEuMzMgMCAyLjQyLjgzIDIuODIgMkg1djJoMi44MnptNi4yOC0yaC0xLjRsLS43My0ySDE1Yy0uNDQuNTgtLjc2IDEuMjUtLjkgMnptNC45IDRjLTEuNjggMC0zLTEuMzItMy0zIDAtLjkzLjQxLTEuNzMgMS4wNS0yLjI4bC45NiAyLjY0IDEuODgtLjY4LS45Ny0yLjY3Yy4wMiAwIC4wNS0uMDEuMDgtLjAxIDEuNjggMCAzIDEuMzIgMyAzcy0xLjMyIDMtMyAzek0xMSAyMEg3bDYgM3YtMmg0bC02LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVsZWN0cmljQ2FyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTIgMi4wMUMxOC43MiAxLjQyIDE4LjE2IDEgMTcuNSAxaC0xMWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyA4djhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMVY4bC0yLjA4LTUuOTl6TTYuNSAxMmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgOSA2LjUgOSA4IDkuNjcgOCAxMC41IDcuMzMgMTIgNi41IDEyem0xMSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek01IDdsMS41LTQuNWgxMUwxOSA3SDV6TTcgMjBoNHYtMmw2IDNoLTR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWxlY3RyaWNNb3BlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDVjMC0xLjEtLjktMi0yLTJoLTN2MmgzdjIuNjVMMTMuNTIgMTJIMTBWN0g2Yy0yLjIxIDAtNCAxLjc5LTQgNHYzaDJjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g0LjQ4TDE5IDguMzVWNXpNNyAxNWMtLjU1IDAtMS0uNDUtMS0xaDJjMCAuNTUtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDRoNXYySDV6TTE5IDExYy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMCA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6TTcgMjBoNHYtMmw2IDNoLTR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWxlY3RyaWNSaWNrc2hhdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDExLjE4VjkuNzJjMC0uNDctLjE2LS45Mi0uNDYtMS4yOEwxNi42IDMuNzJjLS4zOC0uNDYtLjk0LS43Mi0xLjU0LS43MkgzYy0xLjEgMC0yIC45LTIgMnY4YzAgMS4xLjkgMiAyIDJoLjE4QzMuNiAxNi4xNiA0LjcgMTcgNiAxN3MyLjQtLjg0IDIuODItMmg4LjM3YTIuOTk2IDIuOTk2IDAgMCAwIDUuODItMWMtLjAxLTEuMy0uODUtMi40LTIuMDEtMi44MnpNMTguNCA5SDE2VjYuMTJMMTguNCA5ek0zIDVoNHY0SDNWNXptMyAxMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0zLTJ2LTJoM1Y5SDlWNWg1djhIOXptMTEgMmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxek03IDIwaDR2LTJsNiAzaC00djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVsZWN0cmljU2Nvb3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuODIgMTZIMTV2LTFjMC0yLjIxIDEuNzktNCA0LTRoLjc0bC0xLjktOC40NEEyLjAwOSAyLjAwOSAwIDAgMCAxNS44OSAxSDEydjJoMy44OWwxLjQgNi4yNWgtLjAxQTYuMDA4IDYuMDA4IDAgMCAwIDEzLjA5IDE0SDcuODJhMi45OTYgMi45OTYgMCAwIDAtMy40Mi0xLjk0Yy0xLjE4LjIzLTIuMTMgMS4yLTIuMzUgMi4zOEEzLjAwMiAzLjAwMiAwIDAgMCA1IDE4YzEuMyAwIDIuNC0uODQgMi44Mi0yek01IDE2Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEyYy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMCA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6TTExIDIwSDdsNiAzdi0yaDRsLTYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWxlY3RyaWNhbFNlcnZpY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTRjMC0uNTUtLjQ1LTEtMS0xaC0ydjJoMmMuNTUgMCAxLS40NSAxLTF6TTIwIDE3aC0ydjJoMmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMXpNMTIgMTRoLTJ2NGgyYzAgMS4xLjkgMiAyIDJoM3YtOGgtM2MtMS4xIDAtMiAuOS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTNjMC0xLjEuOS0yIDItMmgxLjVjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTAuNDMgNCA4LjUgNEg1Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxaDMuNWMuODMgMCAxLjUuNjcgMS41IDEuNVM5LjMzIDkgOC41IDlIN2MtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNGgydi0ySDdjLTEuMSAwLTItLjktMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbWVyZ2VuY3lSZWNvcmRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMC40OFY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTQuNDhsNCAzLjk4di0xMWwtNCAzLjk4ek0xMiAxMmwzIDEuNzMtMSAxLjczLTMtMS43M1YxN0g5di0zLjI3bC0zIDEuNzMtMS0xLjczTDggMTJsLTMtMS43MyAxLTEuNzMgMyAxLjczVjdoMnYzLjI3bDMtMS43MyAxIDEuNzNMMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVtZXJnZW5jeVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOWMtMy4xNSAwLTYgMi40MS02IDYuMTUgMCAyLjQ5IDIgNS40NCA2IDguODUgNC0zLjQxIDYtNi4zNiA2LTguODVDMTggMTEuNDEgMTUuMTUgOSAxMiA5em0wIDcuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6TTEyIDRjMS45MyAwIDMuNjguNzggNC45NSAyLjA1bC0xLjQxIDEuNDFhNS4wMjIgNS4wMjIgMCAwIDAtNy4wOCAwTDcuMDUgNi4wNUE2Ljk3NiA2Ljk3NiAwIDAgMSAxMiA0em03Ljc4LS43Ny0xLjQxIDEuNDFDMTYuNzQgMy4wMSAxNC40OSAyIDEyLjAxIDJTNy4yNyAzLjAxIDUuNjQgNC42M0w0LjIyIDMuMjJDNi4yMiAxLjIzIDguOTcgMCAxMi4wMSAwczUuNzggMS4yMyA3Ljc3IDMuMjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVtZXJnZW5jeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjc5IDkuMjMtMi0zLjQ2TDE0IDguNTRWM2gtNHY1LjU0TDUuMjEgNS43N2wtMiAzLjQ2TDggMTJsLTQuNzkgMi43NyAyIDMuNDZMMTAgMTUuNDZWMjFoNHYtNS41NGw0Ljc5IDIuNzcgMi0zLjQ2TDE2IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFdlN0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljc3IDcuMjMuMDEtLjAxLTMuNzItMy43MkwxNSA0LjU2bDIuMTEgMi4xMWMtLjk0LjM2LTEuNjEgMS4yNi0xLjYxIDIuMzNhMi41IDIuNSAwIDAgMCAyLjUgMi41Yy4zNiAwIC42OS0uMDggMS0uMjF2Ny4yMWMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMVYxNGMwLTEuMS0uOS0yLTItMmgtMVY1YzAtMS4xLS45LTItMi0ySDZjLTEuMSAwLTIgLjktMiAydjE2aDEwdi03LjVoMS41djVhMi41IDIuNSAwIDAgMCA1IDBWOWMwLS42OS0uMjgtMS4zMi0uNzMtMS43N3pNMTggMTBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpNOCAxOHYtNC41SDZMMTAgNnY1aDJsLTQgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFjdG9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEwdjEySDJWMTBsNy0zdjJsNS0ydjNoOHptLTQuOC0xLjVMMTggMmgzbC44IDYuNWgtNC42ek0xMSAxOGgydi00aC0ydjR6bS00IDBoMnYtNEg3djR6bTEwLTRoLTJ2NGgydi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYXN0Zm9vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjA2IDIyLjk5aDEuNjZjLjg0IDAgMS41My0uNjQgMS42My0xLjQ2TDIzIDUuMDVoLTVWMWgtMS45N3Y0LjA1aC00Ljk3bC4zIDIuMzRjMS43MS40NyAzLjMxIDEuMzIgNC4yNyAyLjI2IDEuNDQgMS40MiAyLjQzIDIuODkgMi40MyA1LjI5djguMDV6TTEgMjEuOTlWMjFoMTUuMDN2Ljk5YzAgLjU1LS40NSAxLTEuMDEgMUgyLjAxYy0uNTYgMC0xLjAxLS40NS0xLjAxLTF6bTE1LjAzLTdjMC04LTE1LjAzLTgtMTUuMDMgMGgxNS4wM3pNMS4wMiAxN2gxNXYyaC0xNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmVzdGl2YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA1LjdWNGgzbC0xLTEuNDlMMTYgMWgtNXY0LjdMMiAxMnYxMGg3di01bDMuMDMtMkwxNSAxN3Y1aDdWMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpcmVIeWRyYW50QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTFoLTFWOGgyVjZoLTIuMzVhNS45OSA1Ljk5IDAgMCAwLTExLjMgMEg0djJoMnYzSDVjLTEuMSAwLTIgLjktMiAydjJjMCAxLjEuOSAyIDIgMmgxdjNINHYyaDE2di0yaC0ydi0zaDFjMS4xIDAgMi0uOSAyLTJ2LTJjMC0xLjEtLjktMi0yLTJ6bS03IDYuNWMtMS45MyAwLTMuNS0xLjU3LTMuNS0zLjVzMS41Ny0zLjUgMy41LTMuNSAzLjUgMS41NyAzLjUgMy41LTEuNTcgMy41LTMuNSAzLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpcmVUcnVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjkgMTAuNjktMS40NC00LjMyQTIuMDEgMi4wMSAwIDAgMCAxOS41NiA1SDE5VjRjMC0uNTUtLjQ1LTEtMS0xaC0xYy0uNTUgMC0xIC40NS0xIDF2MWgtMmMtMS4xIDAtMiAuOS0yIDJ2NEgxdjVjMCAxLjEuOSAyIDIgMmgxYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoNGMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDN2LTYuNjhjMC0uMjEtLjAzLS40Mi0uMS0uNjN6TTcgMTljLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMTAgMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tMy04VjdoNS41NmwxLjMzIDRIMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDguNWgtMXYtMmgxVjVIMXYxLjVoMXYySDFWMTBoMTBWOC41em0tNS43NSAwSDMuNXYtMmgxLjc1djJ6bTMuMjUgMEg2Ljc1di0ySDguNXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGlnaHRDbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDRoLTJjLTEuMSAwLTIgLjktMiAydjVjMCAxLjEuOSAyIDIgMmgyYzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTkuNSAxNkgxOHYySDkuNDljLS44OCAwLTEuNjYtLjU4LTEuOTItMS40M0w1IDhWNGgydjRsMi41IDh6TTggMTloMTB2Mkg4di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNnYtMmwtOC01VjMuNWMwLS44My0uNjctMS41LTEuNS0xLjVTMTAgMi42NyAxMCAzLjVWOWwtOCA1djJsOC0yLjVWMTlsLTIgMS41VjIybDMuNS0xIDMuNSAxdi0xLjVMMTMgMTl2LTUuNWw4IDIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9yZXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTIgOSAyIDIgMTJoMS44NkwwIDE4aDd2NGg0di00aDdsLTMuODYtNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMTQgMTJIMjJMMTUgMmwtMi4zOSAzLjQxTDE3LjkyIDEzaC0xLjk1bDMuMjIgNUgyNHpNMTMgMTloNHYzaC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JrTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNDEgMTUuNTkgOCAxN2wtNC00IDQtNCAxLjQxIDEuNDFMNy44MyAxMmMxLjUxLS4zMyAzLjczLjA4IDUuMTcgMS4zNlY2LjgzbC0xLjU5IDEuNTlMMTAgN2w0LTQgNCA0LTEuNDEgMS40MUwxNSA2LjgzVjIxaC0ydi00Yy0uNzMtMi41OC0zLjA3LTMuNDctNS4xNy0zbDEuNTggMS41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ya1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNTkgMTUuNTkgMTYgMTdsNC00LTQtNC0xLjQxIDEuNDFMMTYuMTcgMTJjLTEuNTEtLjMzLTMuNzMuMDgtNS4xNyAxLjM2VjYuODNsMS41OSAxLjU5TDE0IDdsLTQtNC00IDQgMS40MSAxLjQxTDkgNi44M1YyMWgydi00Yy43My0yLjU4IDMuMDctMy40NyA1LjE3LTNsLTEuNTggMS41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDN2MmgtMlYzaC0ydjJoLTJWM2gtMnY0bDIgMnYxSDlWOWwyLTJWM0g5djJIN1YzSDV2MkgzVjNIMXY0bDIgMnY2bC0yIDJ2NGg5di0zYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2M2g5di00bC0yLTJWOWwyLTJWM2gtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGFpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem01LTRoMnYuNGMtLjEgMi4yLS44IDMuOS0yLjMgNS4xLS41LjQtMS4xLjctMS43LjlWMjJoLTJ2LTZoLTJ2Nkg5VjEwLjFjLS4zLjEtLjUuMi0uNi4zLS45LjctMS4zOSAxLjYtMS40IDMuMXYuNUg1di0uNWMwLTIgLjcxLTMuNTkgMi4xMS00Ljc5QzguMjEgNy44MSAxMCA3IDEyIDdzMi42OC0uNDYgMy40OC0xLjA2QzE2LjQ4IDUuMTQgMTcgNCAxNyAyLjVWMnpNNCAxNmgzdjZINHYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGFuZHltYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS42NyAxOC4xNy01LjMtNS4zaC0uOTlsLTIuNTQgMi41NHYuOTlsNS4zIDUuM2MuMzkuMzkgMS4wMi4zOSAxLjQxIDBsMi4xMi0yLjEyYS45OTYuOTk2IDAgMCAwIDAtMS40MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMzQgMTAuMTkgMS40MS0xLjQxIDIuMTIgMi4xMmEzIDMgMCAwIDAgMC00LjI0bC0zLjU0LTMuNTQtMS40MSAxLjQxVjEuNzFsLS43LS43MS0zLjU0IDMuNTQuNzEuNzFoMi44M2wtMS40MSAxLjQxIDEuMDYgMS4wNi0yLjg5IDIuODktNC4xMy00LjEzVjUuMDZMNC44MyAyLjA0IDIgNC44NyA1LjAzIDcuOWgxLjQxbDQuMTMgNC4xMy0uODUuODVINy42bC01LjMgNS4zYS45OTYuOTk2IDAgMCAwIDAgMS40MWwyLjEyIDIuMTJjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDUuMy01LjN2LTIuMTJsNS4xNS01LjE1IDEuMDYgMS4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGFyZHdhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCAzLTMgM1YzSDlDNi4yNCAzIDQgNS4yNCA0IDhoNXYzaDZWOGwzIDNoMlYzaC0yek05IDEzdjdjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTdIOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG9tZVJlcGFpclNlcnZpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxNmgtMnYtMUg4djFINnYtMUgydjVoMjB2LTVoLTR6TTIwIDhoLTNWNmMwLTEuMS0uOS0yLTItMkg5Yy0xLjEgMC0yIC45LTIgMnYySDRjLTEuMSAwLTIgLjktMiAydjRoNHYtMmgydjJoOHYtMmgydjJoNHYtNGMwLTEuMS0uOS0yLTItMnptLTUgMEg5VjZoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3RlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTNjMS42NiAwIDMtMS4zNCAzLTNTOC42NiA3IDcgN3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzem0xMi02aC04djdIM1Y1SDF2MTVoMnYtM2gxOHYzaDJ2LTljMC0yLjIxLTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEh2YWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNmMxLjAxIDAgMS45MS0uMzkgMi42Mi0xSDkuMzhjLjcxLjYxIDEuNjEgMSAyLjYyIDF6TTguNTYgMTRoNi44OWMuMjYtLjQ1LjQ0LS45Ni41MS0xLjVoLTcuOWMuMDYuNTQuMjMgMS4wNS41IDEuNXpNMTIgOGMtMS4wMSAwLTEuOTEuMzktMi42MiAxaDUuMjRjLS43MS0uNjEtMS42MS0xLTIuNjItMXpNOC41NiAxMGMtLjI2LjQ1LS40NC45Ni0uNTEgMS41aDcuOWMtLjA3LS41NC0uMjQtMS4wNS0uNTEtMS41SDguNTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNWMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEljZWNyZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwibTguNzkgMTIuNCAzLjI2IDYuMjIgMy4xNy02LjIxYy0uMTEtLjA4LS4yMS0uMTYtLjMtLjI1LS44NC41My0xLjg1Ljg0LTIuOTIuODRzLTIuMDgtLjMxLTIuOTItLjg0Yy0uMDkuMDktLjE5LjE3LS4yOS4yNHptLTEuOTYuNTlBMi45OTUgMi45OTUgMCAwIDEgNCAxMGEzIDMgMCAwIDEgMi41Mi0yLjk2QzYuNzUgNC4yMiA5LjEyIDIgMTIgMnM1LjI1IDIuMjIgNS40OCA1LjA0QTMgMyAwIDAgMSAyMCAxMGMwIDEuNTktMS4yNCAyLjktMi44MSAyLjk5TDEyLjA3IDIzIDYuODMgMTIuOTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtlYmFiRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy43NSA4SDExdjVINy43NXYxaC43NWEyLjUgMi41IDAgMCAxIDAgNWgtLjc1djRoLTEuNXYtNEg1LjVhMi41IDIuNSAwIDAgMSAwLTVoLjc1di0xSDNWOGgzLjI1VjdINS41YTIuNSAyLjUgMCAwIDEgMC01aC43NVYxaDEuNXYxaC43NWEyLjUgMi41IDAgMCAxIDAgNWgtLjc1djF6bTEwLTFoLjc1YTIuNSAyLjUgMCAwIDAgMC01aC0uNzVWMWgtMS41djFoLS43NWEyLjUgMi41IDAgMCAwIDAgNWguNzV2MUgxM3Y1aDMuMjV2MWgtLjc1YTIuNSAyLjUgMCAwIDAgMCA1aC43NXY0aDEuNXYtNGguNzVhMi41IDIuNSAwIDAgMCAwLTVoLS43NXYtMUgyMVY4aC0zLjI1Vjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExheWVyc0NsZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkuODEgMTQuOTkgMS4xOS0uOTItMS40My0xLjQzLTEuMTkuOTIgMS40MyAxLjQzem0tLjQ1LTQuNzJMMjEgOWwtOS03LTIuOTEgMi4yNyA3Ljg3IDcuODggMi40LTEuODh6TTMuMjcgMSAyIDIuMjdsNC4yMiA0LjIyTDMgOWwxLjYzIDEuMjdMMTIgMTZsMi4xLTEuNjMgMS40MyAxLjQzTDEyIDE4LjU0bC03LjM3LTUuNzNMMyAxNC4wN2w5IDcgNC45NS0zLjg1TDIwLjczIDIxIDIyIDE5LjczIDMuMjcgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGF5ZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEuOTkgMTguNTQtNy4zNy01LjczTDMgMTQuMDdsOSA3IDktNy0xLjYzLTEuMjctNy4zOCA1Ljc0ek0xMiAxNmw3LjM2LTUuNzNMMjEgOWwtOS03LTkgNyAxLjYzIDEuMjdMMTIgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpcXVvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTRjMCAxLjMuODQgMi40IDIgMi44MlYyMEgzdjJoNnYtMkg3di0zLjE4QzguMTYgMTYuNCA5IDE1LjMgOSAxNFY2SDN2OHptMi02aDJ2M0g1Vjh6TTIwLjYzIDguNTRsLS45NS0uMzJhLjk5MS45OTEgMCAwIDEtLjY4LS45NFYzYzAtLjU1LS40NS0xLTEtMWgtM2MtLjU1IDAtMSAuNDUtMSAxdjQuMjhjMCAuNDMtLjI4LjgxLS42OC45NWwtLjk1LjMyYy0uODIuMjctMS4zNyAxLjAzLTEuMzcgMS44OVYyMGMwIDEuMS45IDIgMiAyaDdjMS4xIDAgMi0uOSAyLTJ2LTkuNTZjMC0uODYtLjU1LTEuNjItMS4zNy0xLjl6TTE2IDRoMXYxaC0xVjR6bS0zIDYuNDQuOTUtLjMyQzE1LjE4IDkuNzIgMTYgOC41NyAxNiA3LjI4VjdoMXYuMjhhMyAzIDAgMCAwIDIuMDUgMi44NWwuOTUuMzFWMTJoLTd2LTEuNTZ6TTIwIDIwaC03di0yaDd2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxBY3Rpdml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEyYzAtMS4xLjktMiAyLTJWNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjRjMS4xIDAgMS45OS45IDEuOTkgMnMtLjg5IDItMiAydjRjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMnYtNGMtMS4xIDAtMi0uOS0yLTJ6bS00LjQyIDQuOEwxMiAxNC41bC0zLjU4IDIuMyAxLjA4LTQuMTItMy4yOS0yLjY5IDQuMjQtLjI1TDEyIDUuOGwxLjU0IDMuOTUgNC4yNC4yNS0zLjI5IDIuNjkgMS4wOSA0LjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbEFpcnBvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE2di0ybC04LjUtNVYzLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNVY5TDIgMTR2Mmw4LjUtMi41VjE5TDggMjAuNVYyMmw0LTEgNCAxdi0xLjVMMTMuNSAxOXYtNS41TDIyIDE2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbEF0bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE3aDJ2LTFoMWMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xaC0zdi0xaDRWOGgtMlY3aC0ydjFoLTFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDN2MUg5djJoMnYxem05LTEzSDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0VjZoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNVYzSDN2Mmw4IDl2NUg2djJoMTJ2LTJoLTV2LTVsOC05ek03LjQzIDcgNS42NiA1aDEyLjY5bC0xLjc4IDJINy40M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxDYWZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDR2MTBjMCAyLjIxIDEuNzkgNCA0IDRoNmMyLjIxIDAgNC0xLjc5IDQtNHYtM2gyYTIgMiAwIDAgMCAyLTJWNWMwLTEuMTEtLjg5LTItMi0yem0wIDVoLTJWNWgydjN6TTQgMTloMTZ2Mkg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbENhcldhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1Yy44MyAwIDEuNS0uNjcgMS41LTEuNSAwLTEtMS41LTIuNy0xLjUtMi43cy0xLjUgMS43LTEuNSAyLjdjMCAuODMuNjcgMS41IDEuNSAxLjV6bS01IDBjLjgzIDAgMS41LS42NyAxLjUtMS41IDAtMS0xLjUtMi43LTEuNS0yLjdzLTEuNSAxLjctMS41IDIuN2MwIC44My42NyAxLjUgMS41IDEuNXpNNyA1Yy44MyAwIDEuNS0uNjcgMS41LTEuNUM4LjUgMi41IDcgLjggNyAuOFM1LjUgMi41IDUuNSAzLjVDNS41IDQuMzMgNi4xNyA1IDcgNXptMTEuOTIgMy4wMUMxOC43MiA3LjQyIDE4LjE2IDcgMTcuNSA3aC0xMWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyAxNHY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThsLTIuMDgtNS45OXpNNi41IDE4Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyAxNSA2LjUgMTVzMS41LjY3IDEuNSAxLjVTNy4zMyAxOCA2LjUgMTh6bTExIDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek01IDEzbDEuNS00LjVoMTFMMTkgMTNINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxDb252ZW5pZW5jZVN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN1Y0SDV2M0gydjEzaDh2LTRoNHY0aDhWN2gtM3ptLTggM0g5djFoMnYxSDhWOWgyVjhIOFY3aDN2M3ptNSAyaC0xdi0yaC0yVjdoMXYyaDFWN2gxdjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOC4xIDEzLjM0IDIuODMtMi44M0wzLjkxIDMuNWE0LjAwOCA0LjAwOCAwIDAgMCAwIDUuNjZsNC4xOSA0LjE4em02Ljc4LTEuODFjMS41My43MSAzLjY4LjIxIDUuMjctMS4zOCAxLjkxLTEuOTEgMi4yOC00LjY1LjgxLTYuMTItMS40Ni0xLjQ2LTQuMi0xLjEtNi4xMi44MS0xLjU5IDEuNTktMi4wOSAzLjc0LTEuMzggNS4yN0wzLjcgMTkuODdsMS40MSAxLjQxTDEyIDE0LjQxbDYuODggNi44OCAxLjQxLTEuNDFMMTMuNDEgMTNsMS40Ny0xLjQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbERyaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMyAyIDIuMDEgMTguMjNDNS4xMyAyMS4yMyA1Ljk3IDIyIDcgMjJoMTBjMS4wMyAwIDEuODctLjc3IDEuOTktMS43N0wyMSAySDN6bTkgMTdjLTEuNjYgMC0zLTEuMzQtMy0zIDAtMiAzLTUuNCAzLTUuNHMzIDMuNCAzIDUuNGMwIDEuNjYtMS4zNCAzLTMgM3ptNi4zMy0xMUg1LjY3bC0uNDQtNGgxMy41M2wtLjQzIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsRmlyZURlcGFydG1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxMi45LTIuMTMgMi4wOWMtLjU2LjU2LS44NyAxLjI5LS44NyAyLjA3QzkgMTguNjggMTAuMzUgMjAgMTIgMjBzMy0xLjMyIDMtMi45NGMwLS43OC0uMzEtMS41Mi0uODctMi4wN0wxMiAxMi45elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNiA2LS40NC41NUMxNC4zOCA4LjAyIDEyIDcuMTkgMTIgNS4zVjJTNCA2IDQgMTNjMCAyLjkyIDEuNTYgNS40NyAzLjg5IDYuODYtLjU2LS43OS0uODktMS43Ni0uODktMi44IDAtMS4zMi41Mi0yLjU2IDEuNDctMy41TDEyIDEwLjFsMy41MyAzLjQ3Yy45NS45MyAxLjQ3IDIuMTcgMS40NyAzLjUgMCAxLjAyLS4zMSAxLjk2LS44NSAyLjc1IDEuODktMS4xNSAzLjI5LTMuMDYgMy43MS01LjMuNjYtMy41NS0xLjA3LTYuOS0zLjg2LTguNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsRmxvcmlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIyYTkgOSAwIDAgMCA5LTkgOSA5IDAgMCAwLTkgOXpNNS42IDEwLjI1YTIuNSAyLjUgMCAwIDAgMy45MiAyLjA2bC0uMDIuMTlhMi41IDIuNSAwIDAgMCA1IDBsLS4wMi0uMTljLjQuMjguODkuNDQgMS40Mi40NGEyLjUgMi41IDAgMCAwIDIuNS0yLjVjMC0xLS41OS0xLjg1LTEuNDMtMi4yNS44NC0uNCAxLjQzLTEuMjUgMS40My0yLjI1YTIuNSAyLjUgMCAwIDAtMy45Mi0yLjA2bC4wMi0uMTlhMi41IDIuNSAwIDAgMC01IDBsLjAyLjE5Yy0uNC0uMjgtLjg5LS40NC0xLjQyLS40NGEyLjUgMi41IDAgMCAwLTIuNSAyLjVjMCAxIC41OSAxLjg1IDEuNDMgMi4yNS0uODQuNC0xLjQzIDEuMjUtMS40MyAyLjI1ek0xMiA1LjVhMi41IDIuNSAwIDAgMSAwIDUgMi41IDIuNSAwIDAgMSAwLTV6TTMgMTNhOSA5IDAgMCAwIDkgOSA5IDkgMCAwIDAtOS05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbEdhc1N0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS43NyA3LjIzLjAxLS4wMS0zLjcyLTMuNzJMMTUgNC41NmwyLjExIDIuMTFjLS45NC4zNi0xLjYxIDEuMjYtMS42MSAyLjMzYTIuNSAyLjUgMCAwIDAgMi41IDIuNWMuMzYgMCAuNjktLjA4IDEtLjIxdjcuMjFjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTFWMTRjMC0xLjEtLjktMi0yLTJoLTFWNWMwLTEuMS0uOS0yLTItMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmgxMHYtNy41aDEuNXY1YTIuNSAyLjUgMCAwIDAgNSAwVjljMC0uNjktLjI4LTEuMzItLjczLTEuNzd6TTEyIDEwSDZWNWg2djV6bTYgMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbEdyb2NlcnlTdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMThjLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6TTEgMnYyaDJsMy42IDcuNTktMS4zNSAyLjQ1Yy0uMTYuMjgtLjI1LjYxLS4yNS45NiAwIDEuMS45IDIgMiAyaDEydi0ySDcuNDJjLS4xNCAwLS4yNS0uMTEtLjI1LS4yNWwuMDMtLjEyLjktMS42M2g3LjQ1Yy43NSAwIDEuNDEtLjQxIDEuNzUtMS4wM2wzLjU4LTYuNDlBMS4wMDMgMS4wMDMgMCAwIDAgMjAgNEg1LjIxbC0uOTQtMkgxem0xNiAxNmMtMS4xIDAtMS45OS45LTEuOTkgMnMuODkgMiAxLjk5IDIgMi0uOSAyLTItLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsSG9zcGl0YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMyAxOWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS0xIDExaC00djRoLTR2LTRINnYtNGg0VjZoNHY0aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxIb3RlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTNjMS42NiAwIDMtMS4zNCAzLTNTOC42NiA3IDcgN3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzem0xMi02aC04djdIM1Y1SDF2MTVoMnYtM2gxOHYzaDJ2LTljMC0yLjIxLTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsTGF1bmRyeVNlcnZpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjE3IDE2LjgzYTQuMDA4IDQuMDA4IDAgMCAwIDUuNjYgMCA0LjAwOCA0LjAwOCAwIDAgMCAwLTUuNjZsLTUuNjYgNS42NnpNMTggMi4wMSA2IDJjLTEuMTEgMC0yIC44OS0yIDJ2MTZjMCAxLjExLjg5IDIgMiAyaDEyYzEuMTEgMCAyLS44OSAyLTJWNGMwLTEuMTEtLjg5LTEuOTktMi0xLjk5ek0xMCA0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTcgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem01IDE2Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxMaWJyYXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTEuNTVDOS42NCA5LjM1IDYuNDggOCAzIDh2MTFjMy40OCAwIDYuNjQgMS4zNSA5IDMuNTUgMi4zNi0yLjE5IDUuNTItMy41NSA5LTMuNTVWOGMtMy40OCAwLTYuNjQgMS4zNS05IDMuNTV6TTEyIDhjMS42NiAwIDMtMS4zNCAzLTNzLTEuMzQtMy0zLTMtMyAxLjM0LTMgMyAxLjM0IDMgMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbE1hbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA2aC0yYzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZINWMtMS4xIDAtMS45OS45LTEuOTkgMkwzIDIwYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTctM2MxLjY2IDAgMyAxLjM0IDMgM0g5YzAtMS42NiAxLjM0LTMgMy0zem0wIDEwYy0yLjc2IDAtNS0yLjI0LTUtNWgyYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoMmMwIDIuNzYtMi4yNCA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxNb3ZpZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAzdjJoLTJWM0g4djJINlYzSDR2MThoMnYtMmgydjJoOHYtMmgydjJoMlYzaC0yek04IDE3SDZ2LTJoMnYyem0wLTRINnYtMmgydjJ6bTAtNEg2VjdoMnYyem0xMCA4aC0ydi0yaDJ2MnptMC00aC0ydi0yaDJ2MnptMC00aC0yVjdoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbE9mZmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNDEgMTEuNTgtOS05QzEyLjA1IDIuMjIgMTEuNTUgMiAxMSAySDRjLTEuMSAwLTIgLjktMiAydjdjMCAuNTUuMjIgMS4wNS41OSAxLjQybDkgOWMuMzYuMzYuODYuNTggMS40MS41OC41NSAwIDEuMDUtLjIyIDEuNDEtLjU5bDctN2MuMzctLjM2LjU5LS44Ni41OS0xLjQxIDAtLjU1LS4yMy0xLjA2LS41OS0xLjQyek01LjUgN0M0LjY3IDcgNCA2LjMzIDQgNS41UzQuNjcgNCA1LjUgNCA3IDQuNjcgNyA1LjUgNi4zMyA3IDUuNSA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbFBhcmtpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzSDZ2MThoNHYtNmgzYzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02em0uMiA4SDEwVjdoMy4yYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxQaGFybWFjeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVoLTIuNjRsMS4xNC0zLjE0TDE3LjE1IDFsLTEuNDYgNEgzdjJsMiA2LTIgNnYyaDE4di0ybC0yLTYgMi02VjV6bS01IDloLTN2M2gtMnYtM0g4di0yaDNWOWgydjNoM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbFBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi42MiAxMC43OWMxLjQ0IDIuODMgMy43NiA1LjE0IDYuNTkgNi41OWwyLjItMi4yYy4yNy0uMjcuNjctLjM2IDEuMDItLjI0IDEuMTIuMzcgMi4zMy41NyAzLjU3LjU3LjU1IDAgMSAuNDUgMSAxVjIwYzAgLjU1LS40NSAxLTEgMS05LjM5IDAtMTctNy42MS0xNy0xNyAwLS41NS40NS0xIDEtMWgzLjVjLjU1IDAgMSAuNDUgMSAxIDAgMS4yNS4yIDIuNDUuNTcgMy41Ny4xMS4zNS4wMy43NC0uMjUgMS4wMmwtMi4yIDIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxQaXp6YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDOC40MyAyIDUuMjMgMy41NCAzLjAxIDZMMTIgMjJsOC45OS0xNkMxOC43OCAzLjU1IDE1LjU3IDIgMTIgMnpNNyA3YzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTUgOGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsUGxheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEyYzAtMS4xLjktMiAyLTJWNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjRjMS4xIDAgMS45OS45IDEuOTkgMnMtLjg5IDItMiAydjRjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMnYtNGMtMS4xIDAtMi0uOS0yLTJ6bS00LjQyIDQuOEwxMiAxNC41bC0zLjU4IDIuMyAxLjA4LTQuMTItMy4yOS0yLjY5IDQuMjQtLjI1TDEyIDUuOGwxLjU0IDMuOTUgNC4yNC4yNS0zLjI5IDIuNjkgMS4wOSA0LjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbFBvbGljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEgMyA1djZjMCA1LjU1IDMuODQgMTAuNzQgOSAxMiA1LjE2LTEuMjYgOS02LjQ1IDktMTJWNWwtOS00em0yLjUgMTEuNTkuOSAzLjg4LTMuNC0yLjA1LTMuNCAyLjA1LjktMy44Ny0zLTIuNTkgMy45Ni0uMzRMMTIgNi4wMmwxLjU0IDMuNjQgMy45Ni4zNC0zIDIuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsUG9zdE9mZmljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCA0LTggNS04LTVWNmw4IDUgOC01djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsUHJpbnRzaG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOEg1Yy0xLjY2IDAtMyAxLjM0LTMgM3Y2aDR2NGgxMnYtNGg0di02YzAtMS42Ni0xLjM0LTMtMy0zem0tMyAxMUg4di01aDh2NXptMy03Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bS0xLTlINnY0aDEyVjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsU2VlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIzLjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAyIDcuMTcgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJoLTMuMTdMMTUgMkg5em0zIDE1Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxTaGlwcGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDhoLTNWNEgzYy0xLjEgMC0yIC45LTIgMnYxMWgyYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoNmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDJ2LTVsLTMtNHpNNiAxOC41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXptMTMuNS05IDEuOTYgMi41SDE3VjkuNWgyLjV6bS0xLjUgOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsVGF4aSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDYuMDFDMTguNzIgNS40MiAxOC4xNiA1IDE3LjUgNUgxNVYzSDl2Mkg2LjVjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTJ2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuNSAxNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgMTMgNi41IDEzczEuNS42NyAxLjUgMS41UzcuMzMgMTYgNi41IDE2em0xMSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNNSAxMWwxLjUtNC41aDExTDE5IDExSDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2F0aW9uUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM4LjEzIDIgNSA1LjEzIDUgOWMwIDEuNzQuNSAzLjM3IDEuNDEgNC44NC45NSAxLjU0IDIuMiAyLjg2IDMuMTYgNC40LjQ3Ljc1LjgxIDEuNDUgMS4xNyAyLjI2LjI2LjU1LjQ3IDEuNSAxLjI2IDEuNXMxLS45NSAxLjI1LTEuNWMuMzctLjgxLjctMS41MSAxLjE3LTIuMjYuOTYtMS41MyAyLjIxLTIuODUgMy4xNi00LjRDMTguNSAxMi4zNyAxOSAxMC43NCAxOSA5YzAtMy44Ny0zLjEzLTctNy03em0wIDkuNzVhMi41IDIuNSAwIDAgMSAwLTUgMi41IDIuNSAwIDAgMSAwIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEx1bmNoRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMGMuMzItMy4yOC00LjI4LTYtOS45OS02UzEuNyA2LjcyIDIuMDIgMTBIMjJ6TTUuMzUgMTMuNWMuNTUgMCAuNzguMTQgMS4xNS4zNi40NS4yNyAxLjA3LjY0IDIuMTguNjRzMS43My0uMzcgMi4xOC0uNjRjLjM3LS4yMy41OS0uMzYgMS4xNS0uMzYuNTUgMCAuNzguMTQgMS4xNS4zNi40NS4yNyAxLjA3LjY0IDIuMTguNjRzMS43My0uMzcgMi4xOC0uNjRjLjM3LS4yMy41OS0uMzYgMS4xNS0uMzYuNTUgMCAuNzguMTQgMS4xNS4zNi40NS4yNyAxLjA3LjYzIDIuMTcuNjR2LTEuOThzLS43OS0uMTYtMS4xNi0uMzhjLS40NS0uMjctMS4wNy0uNjQtMi4xOC0uNjRzLTEuNzMuMzctMi4xOC42NGMtLjM3LjIzLS42LjM2LTEuMTUuMzZzLS43OC0uMTQtMS4xNS0uMzZjLS40NS0uMjctMS4wNy0uNjQtMi4xOC0uNjRzLTEuNzMuMzctMi4xOC42NGMtLjM3LjIzLS41OS4zNi0xLjE1LjM2LS41NSAwLS43OC0uMTQtMS4xNS0uMzYtLjQ1LS4yNy0xLjA3LS42NC0yLjE4LS42NHMtMS43My4zNy0yLjE4LjY0Yy0uMzcuMjMtLjU5LjM2LTEuMTUuMzZ2MmMxLjExIDAgMS43My0uMzcgMi4yMS0uNjQuMzctLjIzLjU5LS4zNiAxLjE0LS4zNnpNMiAxNnYyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJ2LTJIMnpcIn0sXCJjaGlsZFwiOltdfV19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC41IDMtLjE2LjAzTDE1IDUuMSA5IDMgMy4zNiA0LjljLS4yMS4wNy0uMzYuMjUtLjM2LjQ4VjIwLjVjMCAuMjguMjIuNS41LjVsLjE2LS4wM0w5IDE4LjlsNiAyLjEgNS42NC0xLjljLjIxLS4wNy4zNi0uMjUuMzYtLjQ4VjMuNWMwLS4yOC0uMjItLjUtLjUtLjV6TTE1IDE5bC02LTIuMTFWNWw2IDIuMTFWMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcHNVZ2MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJjMCAxLjU0LjM2IDIuOTguOTcgNC4yOUwxIDIzbDYuNzEtMS45N2MxLjMxLjYxIDIuNzUuOTcgNC4yOS45NyA1LjUyIDAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTQgMTFoLTN2M2gtMnYtM0g4di0yaDNWOGgydjNoM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNZWRpY2FsSW5mb3JtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA3aC01VjRjMC0xLjEtLjktMi0yLTJoLTJjLTEuMSAwLTIgLjktMiAydjNINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0yem0tOS0zaDJ2NWgtMlY0em0wIDEySDl2Mkg3di0ySDV2LTJoMnYtMmgydjJoMnYyem0yLTEuNVYxM2g2djEuNWgtNnptMCAzVjE2aDR2MS41aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNZWRpY2FsU2VydmljZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC00VjRjMC0xLjEtLjktMi0yLTJoLTRjLTEuMSAwLTIgLjktMiAydjJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yek0xMCA0aDR2MmgtNFY0em02IDExaC0zdjNoLTJ2LTNIOHYtMmgzdi0zaDJ2M2gzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1lbnVCb29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNWMtMS4xMS0uMzUtMi4zMy0uNS0zLjUtLjUtMS45NSAwLTQuMDUuNC01LjUgMS41LTEuNDUtMS4xLTMuNTUtMS41LTUuNS0xLjVTMi40NSA0LjkgMSA2djE0LjY1YzAgLjI1LjI1LjUuNS41LjEgMCAuMTUtLjA1LjI1LS4wNUMzLjEgMjAuNDUgNS4wNSAyMCA2LjUgMjBjMS45NSAwIDQuMDUuNCA1LjUgMS41IDEuMzUtLjg1IDMuOC0xLjUgNS41LTEuNSAxLjY1IDAgMy4zNS4zIDQuNzUgMS4wNS4xLjA1LjE1LjA1LjI1LjA1LjI1IDAgLjUtLjI1LjUtLjVWNmMtLjYtLjQ1LTEuMjUtLjc1LTItMXptMCAxMy41Yy0xLjEtLjM1LTIuMy0uNS0zLjUtLjUtMS43IDAtNC4xNS42NS01LjUgMS41VjhjMS4zNS0uODUgMy44LTEuNSA1LjUtMS41IDEuMiAwIDIuNC4xNSAzLjUuNXYxMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDEwLjVjLjg4IDAgMS43My4wOSAyLjUuMjZWOS4yNGMtLjc5LS4xNS0xLjY0LS4yNC0yLjUtLjI0LTEuNyAwLTMuMjQuMjktNC41LjgzdjEuNjZjMS4xMy0uNjQgMi43LS45OSA0LjUtLjk5ek0xMyAxMi40OXYxLjY2YzEuMTMtLjY0IDIuNy0uOTkgNC41LS45OS44OCAwIDEuNzMuMDkgMi41LjI2VjExLjljLS43OS0uMTUtMS42NC0uMjQtMi41LS4yNC0xLjcgMC0zLjI0LjMtNC41Ljgzek0xNy41IDE0LjMzYy0xLjcgMC0zLjI0LjI5LTQuNS44M3YxLjY2YzEuMTMtLjY0IDIuNy0uOTkgNC41LS45OS44OCAwIDEuNzMuMDkgMi41LjI2di0xLjUyYy0uNzktLjE2LTEuNjQtLjI0LTIuNS0uMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1lcmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi40MSAyMSA1IDE5LjU5bDQuODMtNC44M2MuNzUtLjc1IDEuMTctMS43NyAxLjE3LTIuODN2LTUuMUw5LjQxIDguNDEgOCA3bDQtNCA0IDQtMS40MSAxLjQxTDEzIDYuODN2NS4xYzAgMS4wNi40MiAyLjA4IDEuMTcgMi44M0wxOSAxOS41OSAxNy41OSAyMSAxMiAxNS40MSA2LjQxIDIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNaW5vckNyYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTIgOS4wMUMxOC43MiA4LjQyIDE4LjE2IDggMTcuNSA4aC0xMWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyAxNXY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThsLTIuMDgtNS45OXpNNi44NSAxMGgxMC4yOWwxLjA0IDNINS44MWwxLjA0LTN6TTYgMTcuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVM4LjMzIDE5IDcuNSAxOSA2IDE4LjMzIDYgMTcuNXptOSAwYzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNS0xLjUtLjY3LTEuNS0xLjV6TTkuNDEgNSA4IDYuNDFsLTMtM0w2LjQxIDJsMyAzek0xNiA2LjQxIDE0LjU5IDVsMy0zTDE5IDMuNDFsLTMgM3pNMTMgNWgtMlYwaDJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWlzY2VsbGFuZW91c1NlcnZpY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuMTcgMTMuNzEgMS40LTIuNDJjLjA5LS4xNS4wNS0uMzQtLjA4LS40NWwtMS40OC0xLjE2Yy4wMy0uMjIuMDUtLjQ1LjA1LS42OHMtLjAyLS40Ni0uMDUtLjY5bDEuNDgtMS4xNmMuMTMtLjExLjE3LS4zLjA4LS40NWwtMS40LTIuNDJjLS4wOS0uMTUtLjI3LS4yMS0uNDMtLjE1bC0xLjc0LjdjLS4zNi0uMjgtLjc1LS41MS0xLjE4LS42OWwtLjI2LTEuODVhLjM2NC4zNjQgMCAwIDAtLjM1LS4yOWgtMi44Yy0uMTcgMC0uMzIuMTMtLjM1LjNMNi44IDQuMTVjLS40Mi4xOC0uODIuNDEtMS4xOC42OWwtMS43NC0uN2MtLjE2LS4wNi0uMzQgMC0uNDMuMTVsLTEuNCAyLjQyYy0uMDkuMTUtLjA1LjM0LjA4LjQ1bDEuNDggMS4xNmMtLjAzLjIyLS4wNS40NS0uMDUuNjhzLjAyLjQ2LjA1LjY5bC0xLjQ4IDEuMTZjLS4xMy4xMS0uMTcuMy0uMDguNDVsMS40IDIuNDJjLjA5LjE1LjI3LjIxLjQzLjE1bDEuNzQtLjdjLjM2LjI4Ljc1LjUxIDEuMTguNjlsLjI2IDEuODVjLjAzLjE2LjE4LjI5LjM1LjI5aDIuOGMuMTcgMCAuMzItLjEzLjM1LS4zbC4yNi0xLjg1Yy40Mi0uMTguODItLjQxIDEuMTgtLjY5bDEuNzQuN2MuMTYuMDYuMzQgMCAuNDMtLjE1ek04LjgxIDExYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpNMjEuOTIgMTguNjdsLS45Ni0uNzRjLjAyLS4xNC4wNC0uMjkuMDQtLjQ0IDAtLjE1LS4wMS0uMy0uMDQtLjQ0bC45NS0uNzRjLjA4LS4wNy4xMS0uMTkuMDUtLjI5bC0uOS0xLjU1Yy0uMDUtLjEtLjE3LS4xMy0uMjgtLjFsLTEuMTEuNDVjLS4yMy0uMTgtLjQ4LS4zMy0uNzYtLjQ0bC0uMTctMS4xOGEuMjE2LjIxNiAwIDAgMC0uMjEtLjJoLTEuNzljLS4xMSAwLS4yMS4wOC0uMjIuMTlsLS4xNyAxLjE4Yy0uMjcuMTItLjUzLjI2LS43Ni40NGwtMS4xMS0uNDVhLjIzLjIzIDAgMCAwLS4yOC4xbC0uOSAxLjU1Yy0uMDUuMS0uMDQuMjIuMDUuMjlsLjk1Ljc0YTMuMTQ1IDMuMTQ1IDAgMCAwIDAgLjg4bC0uOTUuNzRjLS4wOC4wNy0uMTEuMTktLjA1LjI5bC45IDEuNTVjLjA1LjEuMTcuMTMuMjguMWwxLjExLS40NWMuMjMuMTguNDguMzMuNzYuNDRsLjE3IDEuMThjLjAyLjExLjExLjE5LjIyLjE5aDEuNzljLjExIDAgLjIxLS4wOC4yMi0uMTlsLjE3LTEuMThjLjI3LS4xMi41My0uMjYuNzUtLjQ0bDEuMTIuNDVjLjEuMDQuMjIgMCAuMjgtLjFsLjktMS41NWMuMDYtLjA5LjAzLS4yMS0uMDUtLjI4em0tNC4yOS4xNmExLjM1IDEuMzUgMCAxIDEgLjAwMS0yLjcwMSAxLjM1IDEuMzUgMCAwIDEtLjAwMSAyLjcwMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9kZU9mVHJhdmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuMzEgMTguOWMtLjk2IDEtMi4wNiAyLjAzLTMuMzEgMy4xLTUuMzMtNC41NS04LTguNDgtOC0xMS44QzQgNS4yMiA3LjggMiAxMiAyYzQgMCA3LjY0IDIuOTIgNy45NyA3LjVoMy41M0wxOSAxNGwtNC41LTQuNWgzLjQ3QzE3LjY1IDYuMjQgMTUuMTMgNCAxMiA0Yy0zLjM1IDAtNiAyLjU3LTYgNi4yIDAgMi4zNCAxLjk1IDUuNDQgNiA5LjE0LjY0LS41OSAxLjIzLTEuMTYgMS43Ny0xLjcxYTIuNSAyLjUgMCAwIDEtLjI3LTEuMTIgMi41IDIuNSAwIDAgMSA1IDAgMi40OTIgMi40OTIgMCAwIDEtMy4xOSAyLjM5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb25leSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA4aDJ2OEg1em03IDBIOWMtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTF6bS0xIDZoLTF2LTRoMXY0em03LTZoLTNjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDNjLjU1IDAgMS0uNDUgMS0xVjljMC0uNTUtLjQ1LTEtMS0xem0tMSA2aC0xdi00aDF2NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNNCA2aDE2djEySDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNHYxNmgyMFY0SDJ6bTIgMTRWNmgxNnYxMkg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3BlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDdjMC0xLjEtLjktMi0yLTJoLTN2MmgzdjIuNjVMMTMuNTIgMTRIMTBWOUg2Yy0yLjIxIDAtNCAxLjc5LTQgNHYzaDJjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g0LjQ4TDE5IDEwLjM1Vjd6TTcgMTdjLS41NSAwLTEtLjQ1LTEtMWgyYzAgLjU1LS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA2aDV2Mkg1ek0xOSAxM2MtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3NxdWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDhoMTBjLjI5IDAgLjU3LjA2Ljg0LjEzLjA5LS4zMy4xNi0uNjcuMTYtMS4wNCAwLTEuMzEtLjY1LTIuNTMtMS43NC0zLjI1TDEyIDEgNy43NCAzLjg0QTMuODg3IDMuODg3IDAgMCAwIDYgNy4wOWMwIC4zNy4wNy43MS4xNiAxLjA0LjI3LS4wNy41NS0uMTMuODQtLjEzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA3YzAtMS4xLTItMy0yLTNzLTIgMS45LTIgM2MwIC43NC40IDEuMzggMSAxLjcyVjEzaC0ydi0yYzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjJIM1Y4LjcyYy42LS4zNCAxLS45OCAxLTEuNzIgMC0xLjEtMi0zLTItM1MwIDUuOSAwIDdjMCAuNzQuNCAxLjM4IDEgMS43MlYyMWg5di00YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2NGg5VjguNzJjLjYtLjM0IDEtLjk4IDEtMS43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW92aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNzEgOS43MSAyMiAxMlY2aC02bDIuMjkgMi4yOS00LjE3IDQuMTdhLjk5Ni45OTYgMCAwIDEtMS40MSAwbC0xLjE3LTEuMTdhMyAzIDAgMCAwLTQuMjQgMEwyIDE2LjU5IDMuNDEgMThsNS4yOS01LjI5YS45OTYuOTk2IDAgMCAxIDEuNDEgMGwxLjE3IDEuMTdhMyAzIDAgMCAwIDQuMjQgMGw0LjE5LTQuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE11bHRpcGxlU3RvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3IDQgNCA0LTQgNFY5aC00VjdoNFY0em0tNyAzYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6TTYgN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0xIDEwaDR2LTJIN3YtM2wtNCA0IDQgNHYtM3ptNyAwYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTQgMGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNdXNldW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMVY5TDEyIDIgMiA5djJoMnY5SDJ2MmgyMHYtMmgtMnYtOWgyem0tNiA3aC0ydi00bC0yIDMtMi0zdjRIOHYtN2gybDIgMyAyLTNoMnY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNeUxvY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTguOTQgM0E4Ljk5NCA4Ljk5NCAwIDAgMCAxMyAzLjA2VjFoLTJ2Mi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAzLjA2IDExSDF2MmgyLjA2QTguOTk0IDguOTk0IDAgMCAwIDExIDIwLjk0VjIzaDJ2LTIuMDZBOC45OTQgOC45OTQgMCAwIDAgMjAuOTQgMTNIMjN2LTJoLTIuMDZ6TTEyIDE5Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmF2aWdhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIgNC41IDIwLjI5bC43MS43MUwxMiAxOGw2Ljc5IDMgLjcxLS43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmVhck1lRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2LjM0IDIxIDNsLTMuMzQgOUwxMiA2LjM0em0xMC42MSAxMy40NEw0LjIyIDEuMzkgMi44MSAyLjgxbDUuMDcgNS4wN0wzIDkuNjl2MS40MWw3LjA3IDIuODNMMTIuOSAyMWgxLjQxbDEuODEtNC44OCA1LjA3IDUuMDcgMS40Mi0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZWFyTWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDMgMyAxMC41M3YuOThsNi44NCAyLjY1TDEyLjQ4IDIxaC45OEwyMSAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROaWdodGxpZmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDVoMTRsLTYgOXY0aDJ2Mkg1di0yaDJ2LTRMMSA1em05LjEgNCAxLjQtMkg0LjQ5bDEuNCAyaDQuMjF6TTE3IDVoNXYzaC0zdjljMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM2EzIDMgMCAwIDEgMSAuMTdWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9DcmFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDkuMDFDMTguNzIgOC40MiAxOC4xNiA4IDE3LjUgOGgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTV2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuODUgMTBoMTAuMjlsMS4wNCAzSDUuODFsMS4wNC0zek02IDE3LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVTOC4zMyAxOSA3LjUgMTkgNiAxOC4zMyA2IDE3LjV6bTkgMGMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjUtMS41LS42Ny0xLjUtMS41ek0xMiA2LjM2IDkuMTcgMy41NGwxLjQxLTEuNDFMMTIgMy41NCAxNS41NCAwbDEuNDEgMS40MUwxMiA2LjM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb01lYWxzT3VsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTRWNmMwLTEuNzYgMi4yNC00IDUtNHYxNi4xN2wtMi0yVjE0aC0zem00LjQ5IDkuMzFMMTAuMDIgMTIuODVjLS4zMy4wOS0uNjYuMTUtMS4wMi4xNXY5SDd2LTljLTIuMjEgMC00LTEuNzktNC00VjUuODNMLjY5IDMuNTEgMi4xIDIuMWwxOS44IDE5LjgtMS40MSAxLjQxek02LjE3IDkgNSA3LjgzVjloMS4xN3pNOSAySDd2Mi4xN2wyIDJWMnptNCA3VjJoLTJ2Ni4xN2wxLjg1IDEuODVjLjA5LS4zMy4xNS0uNjYuMTUtMS4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9NZWFscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE0VjZjMC0xLjc2IDIuMjQtNCA1LTR2MTYuMTdsLTItMlYxNGgtM3ptNC40OSA5LjMxTDEwLjAyIDEyLjg1Yy0uMzMuMDktLjY2LjE1LTEuMDIuMTV2OUg3di05Yy0yLjIxIDAtNC0xLjc5LTQtNFY1LjgzTC42OSAzLjUxIDIuMSAyLjFsMTkuOCAxOS44LTEuNDEgMS40MXpNNi4xNyA5IDUgNy44M1Y5aDEuMTd6TTkgMkg3djIuMTdsMiAyVjJ6bTQgN1YyaC0ydjYuMTdsMS44NSAxLjg1Yy4wOS0uMzMuMTUtLjY2LjE1LTEuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vVHJhbnNmZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS4xOSAyMS4xOSAyLjgxIDIuODEgMS4zOSA0LjIyIDQgNi44M1YxNmMwIC44OC4zOSAxLjY3IDEgMi4yMlYyMGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWg4djFjMCAuNTUuNDUgMSAxIDFoMWMuMDUgMCAuMDktLjAyLjE0LS4wM2wxLjY0IDEuNjQgMS40MS0xLjQyek03LjUgMTdjLS44MyAwLTEuNS0uNjctMS41LTEuNVM2LjY3IDE0IDcuNSAxNHMxLjUuNjcgMS41IDEuNVM4LjMzIDE3IDcuNSAxN3pNNiAxMVY4LjgzTDguMTcgMTFINnptMi44My01TDUuNzggMi45NUM3LjI0IDIuMTYgOS40OCAyIDEyIDJjNC40MiAwIDggLjUgOCA0djEwYzAgLjM1LS4wOC42Ny0uMTkuOThMMTMuODMgMTFIMThWNkg4LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RMaXN0ZWRMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM4LjE0IDIgNSA1LjE0IDUgOWMwIDUuMjUgNyAxMyA3IDEzczctNy43NSA3LTEzYzAtMy44Ni0zLjE0LTctNy03em0uODggMTMuNzVoLTEuNzVWMTRoMS43NXYxLjc1em0wLTIuODdoLTEuNzVjMC0yLjg0IDIuNjItMi42MiAyLjYyLTQuMzggMC0uOTYtLjc5LTEuNzUtMS43NS0xLjc1cy0xLjc1Ljc5LTEuNzUgMS43NUg4LjVDOC41IDYuNTcgMTAuMDcgNSAxMiA1czMuNSAxLjU3IDMuNSAzLjVjMCAyLjE5LTIuNjIgMi40MS0yLjYyIDQuMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMmgyTDEyIDIgNS4wNSAxMkg3bC0zLjkgNmg2LjkydjRoMy45NnYtNEgyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVkYWxCaWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguMTggMTAtMS43LTQuNjhBMi4wMDggMi4wMDggMCAwIDAgMTQuNiA0SDEydjJoMi42bDEuNDYgNGgtNC44MWwtLjM2LTFIMTJWN0g3djJoMS43NWwxLjgyIDVIOS45Yy0uNDQtMi4yMy0yLjMxLTMuODgtNC42NS0zLjk5QzIuNDUgOS44NyAwIDEyLjIgMCAxNWMwIDIuOCAyLjIgNSA1IDUgMi40NiAwIDQuNDUtMS42OSA0LjktNGg0LjJjLjQ0IDIuMjMgMi4zMSAzLjg4IDQuNjUgMy45OSAyLjguMTMgNS4yNS0yLjE5IDUuMjUtNSAwLTIuOC0yLjItNS01LTVoLS44MnpNNy44MiAxNmMtLjQgMS4xNy0xLjQ5IDItMi44MiAyLTEuNjggMC0zLTEuMzItMy0zczEuMzItMyAzLTNjMS4zMyAwIDIuNDIuODMgMi44MiAySDV2MmgyLjgyem02LjI4LTJoLTEuNGwtLjczLTJIMTVjLS40NC41OC0uNzYgMS4yNS0uOSAyem00LjkgNGMtMS42OCAwLTMtMS4zMi0zLTMgMC0uOTMuNDEtMS43MyAxLjA1LTIuMjhsLjk2IDIuNjQgMS44OC0uNjgtLjk3LTIuNjdjLjAzIDAgLjA2LS4wMS4wOS0uMDEgMS42OCAwIDMgMS4zMiAzIDNzLTEuMzMgMy0zLjAxIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcnNvblBpbkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDOC4xNCAyIDUgNS4xNCA1IDljMCA1LjI1IDcgMTMgNyAxM3M3LTcuNzUgNy0xM2MwLTMuODYtMy4xNC03LTctN3ptMCAyYTIgMiAwIDEgMSAuMDAxIDQuMDAxQTIgMiAwIDAgMSAxMiA0em0wIDEwYy0xLjY3IDAtMy4xNC0uODUtNC0yLjE1LjAyLTEuMzIgMi42Ny0yLjA1IDQtMi4wNXMzLjk4LjczIDQgMi4wNUE0Ljc4MyA0Ljc4MyAwIDAgMSAxMiAxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmE5IDkgMCAwIDAtOSA5YzAgNC4xNyAyLjg0IDcuNjcgNi42OSA4LjY5TDEyIDIybDIuMzEtMi4zMUMxOC4xNiAxOC42NyAyMSAxNS4xNyAyMSAxMWE5IDkgMCAwIDAtOS05em0wIDJjMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDMtMy0xLjM0LTMtMyAxLjM0LTMgMy0zem0wIDE0LjNhNy4yIDcuMiAwIDAgMS02LTMuMjJjLjAzLTEuOTkgNC0zLjA4IDYtMy4wOCAxLjk5IDAgNS45NyAxLjA5IDYgMy4wOGE3LjIgNy4yIDAgMCAxLTYgMy4yMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVzdENvbnRyb2xSb2RlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS4zMSAxNy4zOC0yLjM5LTIuMTNjLjUyLTIuMzYtMS4zNi00LjI1LTMuNDItNC4yNS0xLjE2IDAtMy41LjktMy41IDMuNSAwIC45Ny4zOSAxLjg0IDEuMDMgMi40N2wtLjcxLjcxQTQuNDU3IDQuNDU3IDAgMCAxIDExIDE0LjVjMC0xLjcuOTYtMy4xNyAyLjM1LTMuOTNhNSA1IDAgMCAwLTIuMjgtLjU3Yy0yLjM4IDAtNC4zNyAxLjY1LTQuOTEgMy44N0EyLjk5NyAyLjk5NyAwIDAgMSA0IDExYzAtMS42NiAxLjM0LTMgMy0zaDIuNWEyLjUgMi41IDAgMCAwIDAtNUg4Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxaDEuNWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjVIN2E1LjAwMiA1LjAwMiAwIDAgMC0xIDkuOXYuMDNDNiAxOC43MyA4LjI3IDIxIDExLjA3IDIxaDguODZjMS44NyAwIDIuODEtMi4zNCAxLjM4LTMuNjJ6TTE4IDE5Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlc3RDb250cm9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTV2LTJoLTMuMDdjLS4wNS0uMzktLjEyLS43Ny0uMjItMS4xNGwyLjU4LTEuNDktMS0xLjczTDE2LjkyIDEwYy0uMjgtLjQ4LS42Mi0uOTEtLjk5LTEuMjkuMDQtLjIzLjA3LS40Ni4wNy0uNzEgMC0uOC0uMjQtMS41NS0uNjUtMi4xOEwxNyA0LjE3bC0xLjQxLTEuNDEtMS43MiAxLjcyYy0xLjY4LS44OS0zLjEtLjMzLTMuNzMgMEw4LjQxIDIuNzYgNyA0LjE3bDEuNjUgMS42NUEzLjk5IDMuOTkgMCAwIDAgOCA4YzAgLjI1LjAzLjQ4LjA3LjcyLS4zNy4zOC0uNzEuODEtLjk5IDEuMjhMNC43MSA4LjYzbC0xIDEuNzMgMi41OCAxLjQ5Yy0uMS4zNy0uMTcuNzUtLjIyIDEuMTRIM3YyaDMuMDdjLjA1LjM5LjEyLjc3LjIyIDEuMTRsLTIuNTggMS40OSAxIDEuNzNMNy4wOCAxOGMxLjA4IDEuODEgMi44OCAzIDQuOTIgM3MzLjg0LTEuMTkgNC45Mi0zbDIuMzcgMS4zNyAxLTEuNzMtMi41OC0xLjQ5Yy4xLS4zNy4xNy0uNzUuMjItMS4xNEgyMXptLTggMmgtMnYtNmgydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBpbkRyb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA4YzAtMy4zMS0yLjY5LTYtNi02UzYgNC42OSA2IDhjMCA0LjUgNiAxMSA2IDExczYtNi41IDYtMTF6bS04IDBjMC0xLjEuOS0yIDItMnMyIC45IDIgMmEyIDIgMCAxIDEtNCAwek01IDIwdjJoMTR2LTJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzguMTMgMiA1IDUuMTMgNSA5YzAgNS4yNSA3IDEzIDcgMTNzNy03Ljc1IDctMTNjMC0zLjg3LTMuMTMtNy03LTd6bTAgOS41YTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQbHVtYmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjI4IDQuOTMtMi4xMi0yLjEyYy0uNzgtLjc4LTIuMDUtLjc4LTIuODMgMEwxMS41IDUuNjRsMi4xMiAyLjEyIDIuMTItMi4xMiAzLjU0IDMuNTRhMy4wMTIgMy4wMTIgMCAwIDAgMC00LjI1ek01LjQ5IDEzLjc3Yy41OS41OSAxLjU0LjU5IDIuMTIgMGwyLjQ3LTIuNDctMi4xMi0yLjEzLTIuNDcgMi40N2MtLjU5LjU5LS41OSAxLjU0IDAgMi4xM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuMDQgNy43Ni0uNzEuNzEtLjcxLjcxTDEwLjQ0IDZjLS41OS0uNi0xLjU0LS42LTIuMTItLjAxYTEuNDkgMS40OSAwIDAgMCAwIDIuMTJsMy4xOCAzLjE4LS43MS43MS02LjM2IDYuMzZjLS43OC43OC0uNzggMi4wNSAwIDIuODMuNzguNzggMi4wNS43OCAyLjgzIDBMMTYuNDUgMTJhLjk5Ni45OTYgMCAxIDAgMS40MS0xLjQxbC0yLjgyLTIuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJhaWx3YXlBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgOGE3IDcgMCAwIDAtMTEuOTUtNC45NUEzMy44IDMzLjggMCAwIDAgOSAzYy00LjQyIDAtOCAuNS04IDR2MTAuNUEzLjUgMy41IDAgMCAwIDQuNSAyMUwzIDIyLjV2LjVoMTJ2LS41TDEzLjUgMjFhMy41IDMuNSAwIDAgMCAzLjUtMy41di0yLjU4QTcgNyAwIDAgMCAyMyA4ek0zIDEyVjdoNi4wOGE2Ljk2IDYuOTYgMCAwIDAgMS4xOCA1SDN6bTYgN2MtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTcuNzEtNi4wNi0uMi4wM0wxNiAxM2wtLjQ3LS4wMi0uMTYtLjAyLS4yOS0uMDQtLjItLjA0LS4yMi0uMDZhMS41NSAxLjU1IDAgMCAxLS4yMy0uMDdsLS4xMy0uMDVBNC45OSA0Ljk5IDAgMCAxIDExLjEgN2MuMDQtLjE5LjA5LS4zNy4xNS0uNTRsLjA1LS4xNC4xNS0uMzguMDctLjE1LjItLjM2LjA3LS4xMi4zLS40Mi4wMi0uMDJjLjI0LS4zLjUyLS41Ny44Mi0uODFsLjAxLS4wMS40Ni0uMzIuMDMtLjAyQTUuMjUgNS4yNSAwIDAgMSAxNiAzYTUgNSAwIDAgMSAuNzEgOS45NHpNMTUgNGgydjVoLTJ6bTAgNmgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJhbWVuRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA2SDhWNC42NWwxLS4xMlY2em0wIDZIOFY3aDF2NXpNNiA3aDF2NUg2Vjd6bTAtMi4xMiAxLS4xMlY2SDZWNC44OHpNMjIgM1YyTDUgNHY4SDJjMCAzLjY5IDIuNDcgNi44NiA2IDguMjVWMjJoOHYtMS43NWMzLjUzLTEuMzkgNi00LjU2IDYtOC4yNUgxMFY3aDEyVjZIMTBWNC40MUwyMiAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSYW1wTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDIxaC0yVjYuODNMOS40MSA4LjQxIDggN2w0LTQgNCA0LTEuNDEgMS40MUwxMyA2LjgzVjljMCA0LjI3IDQuMDMgNy4xMyA2IDguMjdsLTEuNDYgMS40NmMtMS45MS0xLjE2LTMuNDQtMi41My00LjU0LTQuMDJWMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJhbXBSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDIxaDJWNi44M2wxLjU5IDEuNTlMMTYgN2wtNC00LTQgNCAxLjQxIDEuNDFMMTEgNi44M1Y5YzAgNC4yNy00LjAzIDcuMTMtNiA4LjI3bDEuNDYgMS40NkM4LjM3IDE3LjU2IDkuOSAxNi4xOSAxMSAxNC43VjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSYXRlUmV2aWV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMTUuMzUgNi40MS0xLjc3LTEuNzdjLS4yLS4yLS41MS0uMi0uNzEgMEw2IDExLjUzVjE0aDIuNDdsNi44OC02Ljg4Yy4yLS4xOS4yLS41MSAwLS43MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTYgMTR2LTIuNDdsNi44OC02Ljg4Yy4yLS4yLjUxLS4yLjcxIDBsMS43NyAxLjc3Yy4yLjIuMi41MSAwIC43MUw4LjQ3IDE0SDZ6bTEyIDBoLTcuNWwyLTJIMTh2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVtb3ZlUm9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRoMnY5aC0yek00IDRoMnYxNkg0ek0xMSA0aDJ2NGgtMnpNMTEgMTBoMnY0aC0yek0xMSAxNmgydjRoLTJ6TTIyLjUgMTYuNDEgMjEuMDkgMTUgMTkgMTcuMDkgMTYuOTEgMTVsLTEuNDEgMS40MSAyLjA5IDIuMDktMi4wOSAyLjA5TDE2LjkxIDIyIDE5IDE5LjkxIDIxLjA5IDIybDEuNDEtMS40MS0yLjA5LTIuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlc3RhdXJhbnRNZW51IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOC4xIDEzLjM0IDIuODMtMi44M0wzLjkxIDMuNWE0LjAwOCA0LjAwOCAwIDAgMCAwIDUuNjZsNC4xOSA0LjE4em02Ljc4LTEuODFjMS41My43MSAzLjY4LjIxIDUuMjctMS4zOCAxLjkxLTEuOTEgMi4yOC00LjY1LjgxLTYuMTItMS40Ni0xLjQ2LTQuMi0xLjEtNi4xMi44MS0xLjU5IDEuNTktMi4wOSAzLjc0LTEuMzggNS4yN0wzLjcgMTkuODdsMS40MSAxLjQxTDEyIDE0LjQxbDYuODggNi44OCAxLjQxLTEuNDFMMTMuNDEgMTNsMS40Ny0xLjQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXN0YXVyYW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOUg5VjJIN3Y3SDVWMkgzdjdjMCAyLjEyIDEuNjYgMy44NCAzLjc1IDMuOTdWMjJoMi41di05LjAzQzExLjM0IDEyLjg0IDEzIDExLjEyIDEzIDlWMmgtMnY3em01LTN2OGgyLjV2OEgyMVYyYy0yLjc2IDAtNSAyLjI0LTUgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm91bmRhYm91dExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wOCA4QTYgNiAwIDAgMSAxNiAzYzMuMzEgMCA2IDIuNjkgNiA2IDAgMi45Ny0yLjE2IDUuNDQtNSA1LjkyVjIxaC0ydi02LjA5YzAtLjk4LjcxLTEuOCAxLjY3LTEuOTdhMy45OTkgMy45OTkgMCAxIDAtNC42MS00LjYxYy0uMTcuOTYtLjk5IDEuNjctMS45NyAxLjY3SDUuODNsMS41OSAxLjU5TDYgMTMgMiA5bDQtNCAxLjQxIDEuNDFMNS44MyA4aDQuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvdW5kYWJvdXRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjkyIDhDMTMuNDQgNS4xNiAxMC45NyAzIDggMyA0LjY5IDMgMiA1LjY5IDIgOWMwIDIuOTcgMi4xNiA1LjQ0IDUgNS45MlYyMWgydi02LjA5YzAtLjk4LS43MS0xLjgtMS42Ny0xLjk3YTMuOTk5IDMuOTk5IDAgMSAxIDQuNjEtNC42MWMuMTcuOTYuOTkgMS42NyAxLjk3IDEuNjdoNC4yNmwtMS41OSAxLjU5TDE4IDEzbDQtNC00LTQtMS40MSAxLjQxTDE4LjE3IDhoLTQuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvdXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTUuMThWN2MwLTIuMjEtMS43OS00LTQtNHMtNCAxLjc5LTQgNHYxMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJWOC44MkM4LjE2IDguNCA5IDcuMyA5IDZjMC0xLjY2LTEuMzQtMy0zLTNTMyA0LjM0IDMgNmMwIDEuMy44NCAyLjQgMiAyLjgyVjE3YzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTRWN2MwLTEuMS45LTIgMi0yczIgLjkgMiAydjguMThBMi45OTYgMi45OTYgMCAwIDAgMTggMjFjMS42NiAwIDMtMS4zNCAzLTMgMC0xLjMtLjg0LTIuNC0yLTIuODJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJ1bkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEuNSA0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTIuNSA2Yy0uNyAwLTIuMDEtLjU0LTIuOTEtMS43NmwtLjQxIDIuMzVMMTQgMTQuMDNWMThoLTF2LTMuNThsLTEuMTEtMS4yMS0uNTIgMi42NC0zLjc3LS43Ny4yLS45OCAyLjc4LjU3Ljk2LTQuODktMS41NC41N1YxMkg5VjkuNjVsMy4yOC0xLjIxYy40OS0uMTggMS4wMy4wNiAxLjI2LjUzLjgzIDEuNyAyLjA1IDIuMDMgMi40NiAyLjAzdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNhZmV0eUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMiA0IDV2Ni4wOWMwIDUuMDUgMy40MSA5Ljc2IDggMTAuOTEgNC41OS0xLjE1IDgtNS44NiA4LTEwLjkxVjVsLTgtM3ptMCAxNWMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6bTEuNjUtMi42NUwxMS41IDEyLjJWOWgxdjIuNzlsMS44NSAxLjg1LS43LjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYWlsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTMuNVYyTDMgMTMuNWg4em0xMCAwQzIxIDYuNSAxNC41IDEgMTIuNSAxYzAgMCAxIDMgMSA2LjVzLTEgNi0xIDZIMjF6bTEgMS41SDJhNi4yMzMgNi4yMzMgMCAwIDAgMi4zMyAzLjczYy42NS0uMjcgMS4yMi0uNzIgMS42Ny0xLjIzLjczLjg0IDEuOCAxLjUgMyAxLjVzMi4yNy0uNjYgMy0xLjVjLjczLjg0IDEuOCAxLjUgMyAxLjVzMi4yNi0uNjYgMy0xLjVjLjQ1LjUxIDEuMDIuOTYgMS42NyAxLjIzIDEuMTctLjg5IDIuMDItMi4yIDIuMzMtMy43M3ptMCA4di0yaC0xYy0xLjA0IDAtMi4wOC0uMzUtMy0xLTEuODMgMS4zLTQuMTcgMS4zLTYgMC0xLjgzIDEuMy00LjE3IDEuMy02IDAtLjkxLjY1LTEuOTYgMS0zIDFIMnYyaDFjMS4wMyAwIDIuMDUtLjI1IDMtLjc1IDEuODkgMSA0LjExIDEgNiAwIDEuODkgMSA0LjExIDEgNiAwIC45NS41IDEuOTcuNzUgMyAuNzVoMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2F0ZWxsaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTUgNC45OWgzQzggNi42NSA2LjY2IDggNSA4VjQuOTl6TTUgMTJ2LTJjMi43NiAwIDUtMi4yNSA1LTUuMDFoMkMxMiA4Ljg2IDguODcgMTIgNSAxMnptMCA2IDMuNS00LjUgMi41IDMuMDFMMTQuNSAxMmw0LjUgNkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY3JlZW5Sb3RhdGlvbkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTQgNy41OSA1LTVjLjc4LS43OCAyLjA1LS43OCAyLjgzIDBMMjAuMjQgMTFoLTIuODNMMTAuNCA0IDUuNDEgOUg4djJIMlY1aDJ2Mi41OXpNMjAgMTloMnYtNmgtNnYyaDIuNTlsLTQuOTkgNS03LjAxLTdIMy43Nmw4LjQxIDguNDFjLjc4Ljc4IDIuMDUuNzggMi44MyAwbDUtNVYxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0TWVhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjA1IDE3LjU2LTE3Ljk3Ljk0TDMgMTdsMTcuOTgtLjk0LjA3IDEuNXpNMjEgMTkuNDhIM3YxLjVoMTh2LTEuNXpNMjIgNXY3YzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjVjMC0xLjEuOS0yIDItMmgxNmMxLjEgMCAyIC45IDIgMnptLTIgMWMtMS42OCAwLTMuMDQuOTgtMy4yMSAyLjIzLS42NC0uNzMtMi43My0yLjczLTYuNTQtMi43My00LjY3IDAtNi43NSAzLTYuNzUgM3MyLjA4IDMgNi43NSAzYzMuODEgMCA1LjktMiA2LjU0LTIuNzNDMTYuOTYgMTAuMDIgMTguMzIgMTEgMjAgMTFWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbnBvc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMGg1bDMtMy0zLTNoLTVWMmgtMnYySDR2Nmg3djJINmwtMyAzIDMgM2g1djRoMnYtNGg3di02aC03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTbm93bW9iaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTdjMCAuNTUtLjQ1IDEtMSAxaC0uMTdsLTIuMi0yLjJDMjAuNTggMTUuMzcgMjIgMTQuNCAyMiAxM2MwLTEtOC04LTgtOGgtM3YyaDIuMjVsMS40NSAxLjNMMTEgMTFsLTkuNS0xTDAgMTNsNC41NCAxLjM2LTMuNDkgMS44OEMtLjc3IDE3LjIyLS4wNyAyMCAyIDIwaDZjMi4yMSAwIDQtMS43OSA0LTRoNGwyIDJoLTN2Mmg2YzEuNjYgMCAzLTEuMzQgMy0zaC0yek04IDE4SDJsNS4yNS0yLjgzTDEwIDE2YTIgMiAwIDAgMS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNvcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjUgN2gtM2MtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDNjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnptMCA4aC0zVjloM3Y2ek0xIDE1aDR2LTJIM2MtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDR2MkgzdjJoMmMxLjEgMCAyIC45IDIgMnYyYzAgMS4xLS45IDItMiAySDF2LTJ6bTE2IDBoNHYtMmgtMmMtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDR2MmgtNHYyaDJjMS4xIDAgMiAuOSAyIDJ2MmMwIDEuMS0uOSAyLTIgMmgtNHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU291cEtpdGNoZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjQgN2MtLjM0LjU1LS40Ljk3LS40IDEuMzhDNiA5LjE1IDcgMTEgNyAxMmMwIC45NS0uNCAxLjUtLjQgMS41SDUuMXMuNC0uNTUuNC0xLjVjMC0xLTEtMi44NS0xLTMuNjIgMC0uNDEuMDYtLjgzLjQtMS4zOGgxLjV6bTUgMGMtLjM0LjU1LS40Ljk3LS40IDEuMzggMCAuNzcgMSAyLjYyIDEgMy42MiAwIC45NS0uNCAxLjUtLjQgMS41aDEuNXMuNC0uNTUuNC0xLjVjMC0xLTEtMi44NS0xLTMuNjIgMC0uNDEuMDYtLjgzLjQtMS4zOGgtMS41ek04LjE1IDdjLS4zNC41NS0uNC45Ny0uNCAxLjM4IDAgLjc3IDEgMi42MyAxIDMuNjIgMCAuOTUtLjQgMS41LS40IDEuNWgxLjVzLjQtLjU1LjQtMS41YzAtMS0xLTIuODUtMS0zLjYyIDAtLjQxLjA2LS44My40LTEuMzhoLTEuNXptMTMuMzItLjVzLjEzLTEuMDYuMTMtMS41YzAtMS42NS0xLjM1LTMtMy0zLTEuNTQgMC0yLjgxIDEuMTYtMi45OCAyLjY1TDE0LjUzIDE1SDQuMDFjLS42IDAtMS4wOS41My0xIDEuMTNDMy41MyAxOS40NiA2LjM5IDIyIDkuNzUgMjJjMy40OCAwIDYuMzQtMi43MyA2LjcxLTYuMjNMMTcuNjEgNC45Yy4wNS0uNTEuNDctLjkuOTktLjkuNTUgMCAxIC40NSAxIDEgMCAuMy0uMSAxLjI1LS4xIDEuMjVsMS45Ny4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhZGl1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgNSAzIDdWM2w0IDJ6bTExLTJ2NGw0LTItNC0yem0tNy0xdjRsNC0yLTQtMnptLTYgOC4wNGMxLjM4LjQ5IDMuNzcuOTYgNyAuOTZzNS42Mi0uNDcgNy0uOTZDMTkgOS44NiAxNi4yMiA5IDEyIDlzLTcgLjg2LTcgMS4wNHpNMTUgMTdIOXY0Ljg4Yy00LjA2LS4zOS03LTEuNTQtNy0yLjg4di05YzAtMS42NiA0LjQ4LTMgMTAtM3MxMCAxLjM0IDEwIDN2OWMwIDEuMzQtMi45NCAyLjQ4LTcgMi44N1YxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RvcmVNYWxsRGlyZWN0b3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0djJoMTZWNHptMSAxMHYtMmwtMS01SDRsLTEgNXYyaDF2NmgxMHYtNmg0djZoMnYtNmgxem0tOSA0SDZ2LTRoNnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdHJhaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDYuODMgOS40MSA4LjQxIDggN2w0LTQgNCA0LTEuNDEgMS40MUwxMyA2LjgzVjIxaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdHJlZXR2aWV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNTYgMTQuMzNjLS4zNC4yNy0uNTYuNy0uNTYgMS4xN1YyMWg3YzEuMSAwIDItLjkgMi0ydi01Ljk4Yy0uOTQtLjMzLTEuOTUtLjUyLTMtLjUyLTIuMDMgMC0zLjkzLjctNS40NCAxLjgzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDZjMC0xLjA4LjI3LTIuMS43NC0zSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgLjU1LjIzIDEuMDUuNTkgMS40MWw5LjgyLTkuODJBNi40MzUgNi40MzUgMCAwIDEgMTEuNSA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdWJ3YXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMHYyNGgyNFYwSDB6bTIyIDIySDJWOC44NkMyIDYuMDUgMy41MyAzLjg0IDYuMiAyLjggOCAyLjA5IDEwLjE0IDIgMTIgMmMxLjg2IDAgNCAuMDkgNS44LjhDMjAuNDcgMy44NCAyMiA2LjA1IDIyIDguODZWMjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjE2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiMTZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4wMSA5aDEwdjVoLTEwek0xNy44IDIuOEMxNiAyLjA5IDEzLjg2IDIgMTIgMmMtMS44NiAwLTQgLjA5LTUuOC44QzMuNTMgMy44NCAyIDYuMDUgMiA4Ljg2VjIyaDIwVjguODZjMC0yLjgxLTEuNTMtNS4wMi00LjItNi4wNnptLjIgMTMuMDhjMCAxLjQ1LTEuMTggMi42Mi0yLjYzIDIuNjJsMS4xMyAxLjEyVjIwSDE1bC0xLjUtMS41aC0yLjgzTDkuMTcgMjBINy41di0uMzhsMS4xMi0xLjEyQzcuMTggMTguNSA2IDE3LjMyIDYgMTUuODhWOWMwLTIuNjMgMy0zIDYtMyAzLjMyIDAgNiAuMzggNiAzdjYuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN5bmFnb2d1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgOHYxM2g0di01YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2NWg0VjhsLTYtNS02IDV6bTcuNSAyYzAgLjgzLS42NyAxLjUtMS41IDEuNXMtMS41LS42Ny0xLjUtMS41LjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41ek0zIDVjLTEuMSAwLTIgLjktMiAydjFoNFY3YzAtMS4xLS45LTItMi0yek0xIDloNHYxMkgxek0yMSA1Yy0xLjEgMC0yIC45LTIgMnYxaDRWN2MwLTEuMS0uOS0yLTItMnpNMTkgOWg0djEyaC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYWtlb3V0RGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUuMjYgMTFoMTMuNDhsLS42NyA5SDUuOTNsLS42Ny05em0zLjc2LTdoNS45NUwxOSA3LjM4bDEuNTktMS41OUwyMiA3LjIxIDE5LjIxIDEwSDQuNzlMMiA3LjIxIDMuNDEgNS44IDUgNy4zOCA5LjAyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRheGlBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgOEE3IDcgMCAwIDAgOS42OCA1SDd2Mkg0LjVhMS41IDEuNSAwIDAgMC0xLjQyIDEuMDFMMSAxNHY4YTEgMSAwIDAgMCAxIDFoMWExIDEgMCAwIDAgMS0xdi0xaDEydjFhMSAxIDAgMCAwIDEgMWgxYTEgMSAwIDAgMCAxLTF2LTcuNjhBNy4wMSA3LjAxIDAgMCAwIDIzIDh6bS0xOC41LjVoNC41M2E2LjkzIDYuOTMgMCAwIDAgMi4wOCA0LjVIM2wxLjUtNC41em0wIDkuNWExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3ptMTEgMGExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3ptMi45My01LjYzLS4yMS4xMS0uMTguMDlhNC45NyA0Ljk3IDAgMCAxLS40Mi4xNmwtLjIyLjA3LS4yMy4wNi0uMi4wNWE1IDUgMCAwIDEtNS45NC00LjQxQTQuMDcgNC4wNyAwIDAgMSAxMSA4bC4wMi0uNDcuMDItLjE3LjA0LS4yOC4wNC0uMjEuMDUtLjIxLjA3LS4yNC4wNS0uMTNhNC45OSA0Ljk5IDAgMCAxIDkuNjkgMS43IDQuOTYgNC45NiAwIDAgMS0yLjU1IDQuMzh6TTE1IDRoMnY1aC0yem0wIDZoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUZW1wbGVCdWRkaGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDkuMDJjMCAxLjA5LS44OSAxLjk4LTEuOTggMS45OEg0Ljk4QzMuODkgMTEgMyAxMC4xMSAzIDkuMDJIMWMwIDEuODYgMS4yOCAzLjQgMyAzLjg0VjIyaDZ2LTNjMC0xLjEuOS0yIDItMnMyIC45IDIgMnYzaDZ2LTkuMTRjLjU1LS4xNCAzLTEuMDQgMy0zLjg2bC0yIC4wMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA4Ljg2VjEwaDEyVjguODZjLjU1LS4xNCAzLTEuMDQgMy0zLjg2bC0yIC4wMkMxOSA2LjExIDE4LjExIDcgMTcuMDIgN0g2Ljk4QzUuODkgNyA1IDYuMTEgNSA1LjAySDNjMCAxLjg1IDEuMjggMy40IDMgMy44NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMSA4LjI1IDZoNy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUZW1wbGVIaW5kdSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNiAxMWgxMC44bC0uOS0zaC05ek0yMCAxMXYySDR2LTJIMnYxMWg4di01aDR2NWg4VjExek0xNS45IDYgMTUgM1YxaC0ydjJoLTIuMDNWMWgtMnYyLjEyTDguMSA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUZXJyYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQgNi0zLjc1IDUgMi44NSAzLjgtMS42IDEuMkM5LjgxIDEzLjc1IDcgMTAgNyAxMGwtNiA4aDIyTDE0IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRoZWF0ZXJDb21lZHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE2LjVDMiAxOS41NCA0LjQ2IDIyIDcuNSAyMnM1LjUtMi40NiA1LjUtNS41VjEwSDJ2Ni41em01LjUgMkM2LjEyIDE4LjUgNSAxNy44MyA1IDE3aDVjMCAuODMtMS4xMiAxLjUtMi41IDEuNXpNMTAgMTNjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptLTUgMGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAzdjZoM3YyLjVjMC0uODMgMS4xMi0xLjUgMi41LTEuNXMyLjUuNjcgMi41IDEuNWgtNXYyLjg5Yy43NS4zOCAxLjYuNjEgMi41LjYxIDMuMDQgMCA1LjUtMi40NiA1LjUtNS41VjNIMTF6bTMgNS4wOGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDFjMCAuNTYtLjQ1IDEtMSAxem01IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxYzAgLjU2LS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGlyZVJlcGFpciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDdhMS4wMDMgMS4wMDMgMCAwIDAgMS43MS43MWMuNC0uNCAxLjA0LTIuNDYgMS4wNC0yLjQ2cy0yLjA2LjY0LTIuNDYgMS4wNGMtLjE4LjE4LS4yOS40My0uMjkuNzF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJjLTIuNzYgMC01IDIuMjQtNSA1IDAgMi4wNSAxLjIzIDMuODEgMyA0LjU4VjEzaDF2NWMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMXYtMmEzLjAwOSAzLjAwOSAwIDAgMC00LTIuODNWNWMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDZjMS4xIDAgMi0uOSAyLTJ2LTNjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjJjMCAxLjY1IDEuMzUgMyAzIDNzMy0xLjM1IDMtM3YtNWgxdi0xLjQyYzEuNzctLjc3IDMtMi41MyAzLTQuNTggMC0yLjc2LTIuMjQtNS01LTV6TTYgMTkuNWwtMi0ydi0yLjgzbDIgMnYyLjgzem0wLTUtMi0yVjkuNjdsMiAydjIuODN6bTAtNS0yLTJWNC42N2wyIDJWOS41em00IDgtMiAydi0yLjgzbDItMnYyLjgzem0wLTUtMiAydi0yLjgzbDItMnYyLjgzem0wLTUtMiAyVjYuNjdsMi0yVjcuNXptOSAyLjVjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmFmZmljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTBoLTNWOC44NmMxLjcyLS40NSAzLTIgMy0zLjg2aC0zVjRjMC0uNTUtLjQ1LTEtMS0xSDhjLS41NSAwLTEgLjQ1LTEgMXYxSDRjMCAxLjg2IDEuMjggMy40MSAzIDMuODZWMTBINGMwIDEuODYgMS4yOCAzLjQxIDMgMy44NlYxNUg0YzAgMS44NiAxLjI4IDMuNDEgMyAzLjg2VjIwYzAgLjU1LjQ1IDEgMSAxaDhjLjU1IDAgMS0uNDUgMS0xdi0xLjE0YzEuNzItLjQ1IDMtMiAzLTMuODZoLTN2LTEuMTRjMS43Mi0uNDUgMy0yIDMtMy44NnptLTggOWEyIDIgMCAxIDEtLjAwMS0zLjk5OUEyIDIgMCAwIDEgMTIgMTl6bTAtNWEyIDIgMCAxIDEtLjAwMS0zLjk5OUEyIDIgMCAwIDEgMTIgMTR6bTAtNWEyIDIgMCAwIDEtMi0yYzAtMS4xMS44OS0yIDItMmEyIDIgMCAxIDEgMCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjAuNXYuNWgyLjIzbDItMkgxNGwyIDJoMnYtLjVMMTYuNSAxOWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY2YzAtMy41LTMuNTgtNC04LTR6TTcuNSAxN2MtLjgzIDAtMS41LS42Ny0xLjUtMS41UzYuNjcgMTQgNy41IDE0czEuNS42NyAxLjUgMS41UzguMzMgMTcgNy41IDE3em0zLjUtN0g2VjZoNXY0em0yIDBWNmg1djRoLTV6bTMuNSA3Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTYuOTRWOC41YzAtMi43OS0yLjYxLTMuNC02LjAxLTMuNDlsLjc2LTEuNTFIMTdWMkg3djEuNWg0Ljc1bC0uNzYgMS41MkM3Ljg2IDUuMTEgNSA1LjczIDUgOC41djguNDRjMCAxLjQ1IDEuMTkgMi42NiAyLjU5IDIuOTdMNiAyMS41di41aDIuMjNsMi0ySDE0bDIgMmgydi0uNUwxNi41IDIwaC0uMDhjMS42OSAwIDIuNTgtMS4zNyAyLjU4LTMuMDZ6bS03IDEuNTZjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em01LTQuNUg3VjloMTB2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJhbnNmZXJXaXRoaW5BU3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjQ5IDE1LjV2LTEuNzVMMTQgMTYuMjVsMi40OSAyLjVWMTdIMjJ2LTEuNXptMy4wMiA0LjI1SDE0djEuNWg1LjUxVjIzTDIyIDIwLjUgMTkuNTEgMTh6TTkuNSA1LjVjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyek01Ljc1IDguOSAzIDIzaDIuMWwxLjc1LThMOSAxN3Y2aDJ2LTcuNTVMOC45NSAxMy40bC42LTNDMTAuODUgMTIgMTIuOCAxMyAxNSAxM3YtMmMtMS44NSAwLTMuNDUtMS00LjM1LTIuNDVsLS45NS0xLjZDOS4zNSA2LjM1IDguNyA2IDggNmMtLjI1IDAtLjUuMDUtLjc1LjE1TDIgOC4zVjEzaDJWOS42NWwxLjc1LS43NVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmFuc2l0RW50ZXJleGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMThINlY4aDN2NC43N0wxNS45OCA2IDE4IDguMDMgMTEuMTUgMTVIMTZ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJpcE9yaWdpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDEyQzIgNi40OCA2LjQ4IDIgMTIgMnMxMCA0LjQ4IDEwIDEwLTQuNDggMTAtMTAgMTBTMiAxNy41MiAyIDEyem0xMCA2YzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02LTYgMi42OS02IDYgMi42OSA2IDYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHVybkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02LjgzIDExIDEuNTkgMS41OUw3IDE0bC00LTQgNC00IDEuNDEgMS40MUw2LjgzIDlIMTVjMS4xIDAgMiAuOSAyIDJ2OWgtMnYtOUg2LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUdXJuUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy4xNyAxMS0xLjU5IDEuNTlMMTcgMTRsNC00LTQtNC0xLjQxIDEuNDFMMTcuMTcgOUg5Yy0xLjEgMC0yIC45LTIgMnY5aDJ2LTloOC4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHVyblNoYXJwTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNi44MyA0LjQxIDguNDEgMyA3bDQtNCA0IDQtMS40MSAxLjQxTDggNi44M1YxM2g4YzEuMSAwIDIgLjkgMiAydjZoLTJ2LTZIOGMtMS4xIDAtMi0uOS0yLTJWNi44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHVyblNoYXJwUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCA2LjgzIDEuNTkgMS41OUwyMSA3bC00LTQtNCA0IDEuNDEgMS40MUwxNiA2LjgzVjEzSDhjLTEuMSAwLTIgLjktMiAydjZoMnYtNmg4YzEuMSAwIDItLjkgMi0yVjYuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFR1cm5TbGlnaHRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNjYgNlY0SDZ2NS42NmgyVjcuNDFsNSA1VjIwaDJ2LTcuNThjMC0uNTMtLjIxLTEuMDQtLjU5LTEuNDFsLTUtNWgyLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUdXJuU2xpZ2h0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4zNCA2VjRIMTh2NS42NmgtMlY3LjQxbC01IDVWMjBIOXYtNy41OGMwLS41My4yMS0xLjA0LjU5LTEuNDFsNS01aC0yLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUd29XaGVlbGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTFjLS4xOCAwLS4zNi4wMy0uNTMuMDVMMTcuNDEgOUgyMFY2bC0zLjcyIDEuODZMMTMuNDEgNUg5djJoMy41OWwyIDJIMTFsLTQgMi0yLTJIMHYyaDRjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNGwyIDJoM2wzLjQ5LTYuMSAxLjAxIDEuMDFjLS45MS43My0xLjUgMS44NC0xLjUgMy4wOSAwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00LTEuNzktNC00LTR6TTQgMTdjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem0xNiAwYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVVR1cm5MZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOXYxMmgtMlY5YzAtMi4yMS0xLjc5LTQtNC00UzggNi43OSA4IDl2NC4xN2wxLjU5LTEuNTlMMTEgMTNsLTQgNC00LTQgMS40MS0xLjQxTDYgMTMuMTdWOWMwLTMuMzEgMi42OS02IDYtNnM2IDIuNjkgNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVVHVyblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA5djEyaDJWOWMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0djQuMTdsLTEuNTktMS41OUwxMyAxM2w0IDQgNC00LTEuNDEtMS40MUwxOCAxMy4xN1Y5YzAtMy4zMS0yLjY5LTYtNi02UzYgNS42OSA2IDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZvbHVudGVlckFjdGl2aXNtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAxMWg0djExSDF6TTE2IDMuMjVDMTYuNjUgMi40OSAxNy42NiAyIDE4LjcgMiAyMC41NSAyIDIyIDMuNDUgMjIgNS4zYzAgMi4yNy0yLjkxIDQuOS02IDcuNy0zLjA5LTIuODEtNi01LjQ0LTYtNy43QzEwIDMuNDUgMTEuNDUgMiAxMy4zIDJjMS4wNCAwIDIuMDUuNDkgMi43IDEuMjV6TTIwIDE3aC03bC0yLjA5LS43My4zMy0uOTRMMTMgMTZoMi44MmMuNjUgMCAxLjE4LS41MyAxLjE4LTEuMTggMC0uNDktLjMxLS45My0uNzctMS4xMUw4Ljk3IDExSDd2OS4wMkwxNCAyMmw4LjAxLTNjLS4wMS0xLjEtLjktMi0yLjAxLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdhcmVob3VzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDIxVjdMMTIgMyAyIDd2MTRoNXYtOWgxMHY5aDV6bS0xMS0ySDl2Mmgydi0yem0yLTNoLTJ2Mmgydi0yem0yIDNoLTJ2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaW5lQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAzdjZjMCAyLjk3IDIuMTYgNS40MyA1IDUuOTFWMTlIOHYyaDh2LTJoLTN2LTQuMDljMi44NC0uNDggNS0yLjk0IDUtNS45MVYzSDZ6bTEwIDVIOFY1aDh2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV3JvbmdMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEwVjMuMjZjLS42NS0uMTctMS4zMi0uMjYtMi0uMjYtNC4yIDAtOCAzLjIyLTggOC4yIDAgMy4zMiAyLjY3IDcuMjUgOCAxMS44IDUuMzMtNC41NSA4LTguNDggOC0xMS44IDAtLjQxLS4wNC0uODEtLjA5LTEuMkgxNHptLTIgM2MtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjU0IDIuODgtMS40Mi0xLjQyTDE5IDMuNTlsLTIuMTItMi4xMy0xLjQyIDEuNDJMMTcuNTkgNWwtMi4xMyAyLjEyIDEuNDIgMS40MkwxOSA2LjQxbDIuMTIgMi4xMyAxLjQyLTEuNDJMMjAuNDEgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kWm9vbUluTWFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA5VjNIN3YyLjU5TDMuOTEgMi41IDIuNSAzLjkxIDUuNTkgN0gzdjJoNnptMTIgMFY3aC0yLjU5bDMuMDktMy4wOS0xLjQxLTEuNDFMMTcgNS41OVYzaC0ydjZoNnpNMyAxNXYyaDIuNTlMMi41IDIwLjA5bDEuNDEgMS40MUw3IDE4LjQxVjIxaDJ2LTZIM3ptMTIgMHY2aDJ2LTIuNTlsMy4wOSAzLjA5IDEuNDEtMS40MUwxOC40MSAxN0gyMXYtMmgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kWm9vbU91dE1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1IDMgMi4zIDIuMy0yLjg5IDIuODcgMS40MiAxLjQyTDE4LjcgNi43IDIxIDlWM2gtNnpNMyA5bDIuMy0yLjMgMi44NyAyLjg5IDEuNDItMS40Mkw2LjcgNS4zIDkgM0gzdjZ6bTYgMTItMi4zLTIuMyAyLjg5LTIuODctMS40Mi0xLjQyTDUuMyAxNy4zIDMgMTV2Nmg2em0xMi02LTIuMyAyLjMtMi44Ny0yLjg5LTEuNDIgMS40MiAyLjg5IDIuODdMMTUgMjFoNnYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkSG9tZVdvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMS42OFYxMUw4IDZsLTcgNXYxMGg1di02aDR2NmgxLjY4Yy0uNDMtLjkxLS42OC0xLjkyLS42OC0zIDAtMi43OSAxLjY0LTUuMTkgNC02LjMyek0yMyAxMy4xMVYzSDEwdjEuOTdsNyA1djEuMTFjLjMzLS4wNS42Ni0uMDggMS0uMDggMS45NiAwIDMuNzMuODEgNSAyLjExek0xNyA3aDJ2MmgtMlY3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxOGMwLTIuNzYtMi4yNC01LTUtNXMtNSAyLjI0LTUgNSAyLjI0IDUgNSA1IDUtMi4yNCA1LTV6bS01LjUgM3YtMi41SDE1di0xaDIuNVYxNWgxdjIuNUgyMXYxaC0yLjVWMjFoLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFwcFNldHRpbmdzQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuODEgMTIuNzQtLjgyLS42M3YtLjIybC44LS42M2MuMTYtLjEyLjItLjM0LjEtLjUxbC0uODUtMS40OGEuMzk1LjM5NSAwIDAgMC0uMzUtLjJjLS4wNSAwLS4xLjAxLS4xNS4wM2wtLjk1LjM4Yy0uMDgtLjA1LS4xMS0uMDctLjE5LS4xMWwtLjE1LTEuMDFhLjQwOC40MDggMCAwIDAtLjQtLjM2aC0xLjcxYy0uMiAwLS4zNy4xNS0uNC4zNGwtLjE0IDEuMDFjLS4wMy4wMi0uMDcuMDMtLjEuMDVsLS4wOS4wNi0uOTUtLjM4YS40MDEuNDAxIDAgMCAwLS41LjE3bC0uODUgMS40OGMtLjEuMTctLjA2LjM5LjEuNTFsLjguNjN2LjIzbC0uOC42M2EuMzkuMzkgMCAwIDAtLjEuNTFsLjg1IDEuNDhjLjA3LjEzLjIxLjIuMzUuMi4wNSAwIC4xLS4wMS4xNS0uMDNsLjk1LS4zN2MuMDguMDUuMTIuMDcuMi4xMWwuMTUgMS4wMWMuMDMuMi4yLjM0LjQuMzRoMS43MWMuMiAwIC4zNy0uMTUuNC0uMzRsLjE1LTEuMDFjLjAzLS4wMi4wNy0uMDMuMS0uMDVsLjA5LS4wNi45NS4zOGEuNDAxLjQwMSAwIDAgMCAuNS0uMTdsLjg1LTEuNDhhLjM5LjM5IDAgMCAwLS4xLS41MXpNMTggMTMuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6TTE3IDE3aDJ2NGMwIDEuMS0uOSAyLTIgMkg3Yy0xLjEgMC0yLS45LTItMlYzYzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDJ2NGgtMlY2SDd2MTJoMTB2LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFwcHNPdXRhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDhoNFY0SDR2NHptNiAxMmg0di00aC00djR6bS02IDBoNHYtNEg0djR6bTAtNmg0di00SDR2NHptNiAwaDR2LTRoLTR2NHptNiA2aDR2LTRoLTR2NHptMy0yMGMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bS41IDhoLTFWN2gxdjF6bTAtMmgtMVYyaDF2NHpNMTYgMTRoNHYtMi4wN2MtLjMzLjA1LS42Ni4wNy0xIC4wNy0xLjA3IDAtMi4wOS0uMjQtMy0uNjhWMTR6TTEwIDR2NGgyLjY4Yy0uNDQtLjkxLS42OC0xLjkzLS42OC0zIDAtLjM0LjAyLS42Ny4wNy0xSDEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcHBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA4aDRWNEg0djR6bTYgMTJoNHYtNGgtNHY0em0tNiAwaDR2LTRINHY0em0wLTZoNHYtNEg0djR6bTYgMGg0di00aC00djR6bTYtMTB2NGg0VjRoLTR6bS02IDRoNFY0aC00djR6bTYgNmg0di00aC00djR6bTAgNmg0di00aC00djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93QmFja0lvc05ldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Ljc3IDMuNzcgMTYgMiA2IDEybDEwIDEwIDEuNzctMS43N0w5LjU0IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd0JhY2tJb3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS42NyAzLjg3IDkuOSAyLjEgMCAxMmw5LjkgOS45IDEuNzctMS43N0wzLjU0IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd0JhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMUg3LjgzbDUuNTktNS41OUwxMiA0bC04IDggOCA4IDEuNDEtMS40MUw3LjgzIDEzSDIwdi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd0Rvd253YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMCAxMi0xLjQxLTEuNDFMMTMgMTYuMTdWNGgtMnYxMi4xN2wtNS41OC01LjU5TDQgMTJsOCA4IDgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dEcm9wRG93bkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMTItNC00aDhsLTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dEcm9wRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTcgMTAgNSA1IDUtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dEcm9wVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm03IDE0IDUtNSA1IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93Rm9yd2FyZElvcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4yMyAyMC4yMyA4IDIybDEwLTEwTDggMiA2LjIzIDMuNzcgMTQuNDYgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93Rm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDQtMS40MSAxLjQxTDE2LjE3IDExSDR2MmgxMi4xN2wtNS41OCA1LjU5TDEyIDIwbDgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA3LTUgNSA1IDVWN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMHYyNEgwVjBoMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDE3IDUtNS01LTV2MTB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMjRWMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd1Vwd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNCAxMiAxLjQxIDEuNDFMMTEgNy44M1YyMGgyVjcuODNsNS41OCA1LjU5TDIwIDEybC04LTgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3Npc3RhbnREaXJlY3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEwSDljLS42IDAtMSAuNC0xIDF2NGgydi0zaDR2Mi41bDMuNS0zLjVMMTQgNy41VjEwem0tMi05QzUuOSAxIDEgNS45IDEgMTJzNC45IDExIDExIDExIDExLTQuOSAxMS0xMVMxOC4xIDEgMTIgMXptNy43MyAxMS41OC03LjE5IDcuMjJjLS4zNS4yNy0uNzkuMjctMS4xNSAwTDQuMiAxMi41OGEuOTMyLjkzMiAwIDAgMSAwLTEuMTZsNy4xOS03LjIyYy4zNS0uMjcuNzktLjI3IDEuMTUgMGw3LjE5IDcuMjJjLjM2LjI3LjM2LjggMCAxLjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3Npc3RhbnROYXZpZ2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxQzUuOTMgMSAxIDUuOTMgMSAxMnM0LjkzIDExIDExIDExIDExLTQuOTMgMTEtMTFTMTguMDcgMSAxMiAxem0zLjU3IDE2TDEyIDE1LjQyIDguNDMgMTdsLS4zNy0uMzdMMTIgN2wzLjk1IDkuNjMtLjM4LjM3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW1wYWlnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDExdjJoNHYtMmgtNHptLTIgNi42MWMuOTYuNzEgMi4yMSAxLjY1IDMuMiAyLjM5LjQtLjUzLjgtMS4wNyAxLjItMS42LS45OS0uNzQtMi4yNC0xLjY4LTMuMi0yLjQtLjQuNTQtLjggMS4wOC0xLjIgMS42MXpNMjAuNCA1LjZjLS40LS41My0uOC0xLjA3LTEuMi0xLjYtLjk5Ljc0LTIuMjQgMS42OC0zLjIgMi40LjQuNTMuOCAxLjA3IDEuMiAxLjYuOTYtLjcyIDIuMjEtMS42NSAzLjItMi40ek00IDljLTEuMSAwLTIgLjktMiAydjJjMCAxLjEuOSAyIDIgMmgxdjRoMnYtNGgxbDUgM1Y2TDggOUg0em0xMS41IDNjMC0xLjMzLS41OC0yLjUzLTEuNS0zLjM1djYuNjljLjkyLS44MSAxLjUtMi4wMSAxLjUtMy4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FuY2VsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptNSAxMy41OUwxNS41OSAxNyAxMiAxMy40MSA4LjQxIDE3IDcgMTUuNTkgMTAuNTkgMTIgNyA4LjQxIDguNDEgNyAxMiAxMC41OSAxNS41OSA3IDE3IDguNDEgMTMuNDEgMTIgMTcgMTUuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNi4xNyA0LjgzIDEybC0xLjQyIDEuNDFMOSAxOSAyMSA3bC0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoZXZyb25MZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNDEgNy40MSAxNCA2bC02IDYgNiA2IDEuNDEtMS40MUwxMC44MyAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hldnJvblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgNiA4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3NlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNi40MSAxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb3VibGVBcnJvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgNUgxMWw1IDctNSA3aDQuNWw1LTd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSA1SDRsNSA3LTUgN2g0LjVsNS03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUgNS0xLjQxIDEuNDFMMTguMTcgMTFIMnYyaDE2LjE3bC00LjU5IDQuNTlMMTUgMTlsNy03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwYW5kQ2lyY2xlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMTMuNUw3LjUgMTFsMS40Mi0xLjQxTDEyIDEyLjY3bDMuMDgtMy4wOEwxNi41IDExIDEyIDE1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV4cGFuZExlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiA4LTYgNiAxLjQxIDEuNDFMMTIgMTAuODNsNC41OSA0LjU4TDE4IDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFeHBhbmRNb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNTkgOC41OSAxMiAxMy4xNyA3LjQxIDguNTkgNiAxMGw2IDYgNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaXJzdFBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjQxIDE2LjU5IDEzLjgyIDEybDQuNTktNC41OUwxNyA2bC02IDYgNiA2ek02IDZoMnYxMkg2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZ1bGxzY3JlZW5FeGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNmgzdjNoMnYtNUg1djJ6bTMtOEg1djJoNVY1SDh2M3ptNiAxMWgydi0zaDN2LTJoLTV2NXptMi0xMVY1aC0ydjVoNVY4aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGdWxsc2NyZWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNEg1djVoNXYtMkg3di0zem0tMi00aDJWN2gzVjVINXY1em0xMiA3aC0zdjJoNXYtNWgtMnYzek0xNCA1djJoM3YzaDJWNWgtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG9tZVdvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDExdjEwaDV2LTZoNHY2aDVWMTFMOCA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAzdjEuOTdsNyA1VjExaDJ2MmgtMnYyaDJ2MmgtMnY0aDZWM0gxMHptOSA2aC0yVjdoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYXN0UGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41OSA3LjQxIDEwLjE4IDEybC00LjU5IDQuNTlMNyAxOGw2LTYtNi02ek0xNiA2aDJ2MTJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExlZ2VuZFRvZ2dsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1SDR2LTJoMTZ2MnptMCAySDR2MmgxNnYtMnptLTUtNiA1LTMuNTVWNWwtNSAzLjU1TDEwIDUgNCA4LjY2VjExbDUuOTItMy42MUwxNSAxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFwc0hvbWVXb3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDExdjEwaDV2LTZoNHY2aDVWMTFMOCA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAzdjEuOTdsNyA1VjExaDJ2MmgtMnYyaDJ2MmgtMnY0aDZWM0gxMHptOSA2aC0yVjdoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNZW51T3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxOGgxM3YtMkgzdjJ6bTAtNWgxMHYtMkgzdjJ6bTAtN3YyaDEzVjZIM3ptMTggOS41OUwxNy40MiAxMiAyMSA4LjQxIDE5LjU5IDdsLTUgNSA1IDVMMjEgMTUuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1lbnUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE4aDE4di0ySDN2MnptMC01aDE4di0ySDN2MnptMC03djJoMThWNkgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3JlSG9yaXogKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMTIgMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS02IDBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3JlVmVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0wIDJjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3J0aEVhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDV2Mmg2LjU5TDQgMTguNTkgNS40MSAyMCAxNyA4LjQxVjE1aDJWNUg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3J0aFdlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE1aDJWOC40MUwxOC41OSAyMCAyMCAxOC41OSA4LjQxIDdIMTVWNUg1djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3J0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTUgOSAxLjQxIDEuNDFMMTEgNS44M1YyMmgyVjUuODNsNC41OSA0LjU5TDE5IDlsLTctNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE9mZmxpbmVTaGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjYgMTAuMjZ2MS4zMUwxNyA5LjMzIDE0LjYgNy4xdjEuMjhjLTIuMzMuMzItMy4yNiAxLjkyLTMuNiAzLjUyLjgzLTEuMTMgMS45My0xLjY0IDMuNi0xLjY0ek0xNiAyM0g2Yy0xLjEgMC0yLS45LTItMlY1aDJ2MTZoMTB2MnptMi0yMmgtOGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTVoLThWNGg4djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYXltZW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE0VjZjMC0xLjEtLjktMi0yLTJIM2MtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yem0tOS0xYy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3ptMTMtNnYxMWMwIDEuMS0uOSAyLTIgMkg0di0yaDE3VjdoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGl2b3RUYWJsZUNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgOGgxMVY1YzAtMS4xLS45LTItMi0yaC05djV6TTMgOGg1VjNINWMtMS4xIDAtMiAuOS0yIDJ2M3ptMiAxM2gzVjEwSDN2OWMwIDEuMS45IDIgMiAyem04IDEtNC00IDQtNHptMS05IDQtNCA0IDR6TTE0LjU4IDE5SDEzdi0yaDEuNThjMS4zMyAwIDIuNDItMS4wOCAyLjQyLTIuNDJWMTNoMnYxLjU4YzAgMi40NC0xLjk4IDQuNDItNC40MiA0LjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWZyZXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNjUgNi4zNUE3Ljk1OCA3Ljk1OCAwIDAgMCAxMiA0Yy00LjQyIDAtNy45OSAzLjU4LTcuOTkgOHMzLjU3IDggNy45OSA4YzMuNzMgMCA2Ljg0LTIuNTUgNy43My02aC0yLjA4QTUuOTkgNS45OSAwIDAgMSAxMiAxOGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNmMxLjY2IDAgMy4xNC42OSA0LjIyIDEuNzhMMTMgMTFoN1Y0bC0yLjM1IDIuMzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNvdXRoRWFzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDloLTJ2Ni41OUw1LjQxIDQgNCA1LjQxIDE1LjU5IDE3SDl2MmgxMFY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTb3V0aFdlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxOXYtMkg4LjQxTDIwIDUuNDEgMTguNTkgNCA3IDE1LjU5VjlINXYxMGgxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU291dGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSAxNS0xLjQxLTEuNDFMMTMgMTguMTdWMmgtMnYxNi4xN2wtNC41OS00LjU5TDUgMTVsNyA3IDctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3ViZGlyZWN0b3J5QXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMSA5IDEuNDIgMS40Mkw4LjgzIDE0SDE4VjRoMnYxMkg4LjgzbDMuNTkgMy41OEwxMSAyMWwtNi02IDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3ViZGlyZWN0b3J5QXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkgMTUtNiA2LTEuNDItMS40MkwxNS4xNyAxNkg0VjRoMnYxMGg5LjE3bC0zLjU5LTMuNThMMTMgOWw2IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXRjaExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgOC42MnY2Ljc2TDUuMTIgMTIgOC41IDguNjJNMTAgNWwtNyA3IDcgN1Y1em00IDB2MTRsNy03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3dpdGNoUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDI0SDBWMGgyNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxNS4zOFY4LjYyTDE4Ljg4IDEybC0zLjM4IDMuMzhNMTQgMTlsNy03LTctN3YxNHptLTQgMFY1bC03IDcgNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVbmZvbGRMZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy40MSAxOC41OSA4LjgzIDIwIDEyIDE2LjgzIDE1LjE3IDIwbDEuNDEtMS40MUwxMiAxNGwtNC41OSA0LjU5em05LjE4LTEzLjE4TDE1LjE3IDQgMTIgNy4xNyA4LjgzIDQgNy40MSA1LjQxIDEyIDEwbDQuNTktNC41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVW5mb2xkTW9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDUuODMgMTUuMTcgOWwxLjQxLTEuNDFMMTIgMyA3LjQxIDcuNTkgOC44MyA5IDEyIDUuODN6bTAgMTIuMzRMOC44MyAxNWwtMS40MSAxLjQxTDEyIDIxbDQuNTktNC41OUwxNS4xNyAxNSAxMiAxOC4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2F0ZXJmYWxsQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA0aDN2MTZoLTN6TTMgMTNoM3Y3SDN6bTExLTloM3YzaC0zem0tNCAxaDN2NGgtM3ptLTMgNWgzdjRIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2VzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTkgMTkgMS40MS0xLjQxTDUuODMgMTNIMjJ2LTJINS44M2w0LjU5LTQuNTlMOSA1bC03IDcgNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY2NvdW50VHJlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDExVjNoLTd2M0g5VjNIMnY4aDdWOGgydjEwaDR2M2g3di04aC03djNoLTJWOGgydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTZjMCAzLjg3IDMuMTMgNyA3IDdzNy0zLjEzIDctN3YtNEg1djR6TTE2LjEyIDQuMzdsMi4xLTIuMS0uODItLjgzLTIuMyAyLjMxQzE0LjE2IDMuMjggMTMuMTIgMyAxMiAzcy0yLjE2LjI4LTMuMDkuNzVMNi42IDEuNDRsLS44Mi44MyAyLjEgMi4xQzYuMTQgNS42NCA1IDcuNjggNSAxMHYxaDE0di0xYzAtMi4zMi0xLjE0LTQuMzYtMi44OC01LjYzek05IDljLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptNiAwYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZENhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3YTEuMDIgMS4wMiAwIDAgMC0xLjAyLjI0bC0yLjIgMi4yYTE1LjA0NSAxNS4wNDUgMCAwIDEtNi41OS02LjU5bDIuMi0yLjIxYS45Ni45NiAwIDAgMCAuMjUtMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNMjEgNmgtM1YzaC0ydjNoLTN2MmgzdjNoMlY4aDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTZWF0RmxhdEFuZ2xlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjI1IDE0LjI5LS42OSAxLjg5TDkuMiAxMS43MWwyLjA4LTUuNjYgOC41NiAzLjA5YTQgNCAwIDAgMSAyLjQxIDUuMTV6TTEuNSAxMi4xNCA4IDE0LjQ4VjE5aDh2LTEuNjNMMjAuNTIgMTlsLjY5LTEuODktMTkuMDItNi44Ni0uNjkgMS44OXptNS44LTEuOTRhMy4wMSAzLjAxIDAgMCAwIDEuNDEtNEEzLjAwNSAzLjAwNSAwIDAgMCA0LjcgNC44YTIuOTkgMi45OSAwIDAgMC0xLjQgNCAyLjk5IDIuOTkgMCAwIDAgNCAxLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTZWF0RmxhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDExdjJIOVY3aDljMi4yMSAwIDQgMS43OSA0IDR6TTIgMTR2Mmg2djJoOHYtMmg2di0ySDJ6bTUuMTQtMS45YTMgMyAwIDAgMC0uMDQtNC4yNCAzIDMgMCAwIDAtNC4yNC4wNCAzIDMgMCAwIDAgLjA0IDQuMjQgMyAzIDAgMCAwIDQuMjQtLjA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBaXJsaW5lU2VhdEluZGl2aWR1YWxTdWl0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxM2MxLjY1IDAgMy0xLjM1IDMtM1M4LjY1IDcgNyA3cy0zIDEuMzUtMyAzIDEuMzUgMyAzIDN6bTEyLTZoLTh2N0gzVjdIMXYxMGgyMnYtNmMwLTIuMjEtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlybGluZVNlYXRMZWdyb29tRXh0cmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDEyVjNIMnY5YzAgMi43NiAyLjI0IDUgNSA1aDZ2LTJIN2MtMS42NiAwLTMtMS4zNC0zLTN6bTE4LjgzIDUuMjRjLS4zOC0uNzItMS4yOS0uOTctMi4wMy0uNjNsLTEuMDkuNS0zLjQxLTYuOThhMi4wMSAyLjAxIDAgMCAwLTEuNzktMS4xMkwxMSA5VjNINXY4YzAgMS42NiAxLjM0IDMgMyAzaDdsMy40MSA3IDMuNzItMS43Yy43Ny0uMzYgMS4xLTEuMy43LTIuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTZWF0TGVncm9vbU5vcm1hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTJWM0gzdjljMCAyLjc2IDIuMjQgNSA1IDVoNnYtMkg4Yy0xLjY2IDAtMy0xLjM0LTMtM3ptMTUuNSA2SDE5di03YzAtMS4xLS45LTItMi0yaC01VjNINnY4YzAgMS42NSAxLjM1IDMgMyAzaDd2N2g0LjVjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTZWF0TGVncm9vbVJlZHVjZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS45NyAxOS4yYy4xOC45Ni0uNTUgMS44LTEuNDcgMS44SDE0di0zbDEtNEg5Yy0xLjY1IDAtMy0xLjM1LTMtM1YzaDZ2Nmg1YzEuMSAwIDIgLjkgMiAybC0yIDdoMS40NGMuNzMgMCAxLjM5LjQ5IDEuNTMgMS4yek01IDEyVjNIM3Y5YzAgMi43NiAyLjI0IDUgNSA1aDR2LTJIOGMtMS42NiAwLTMtMS4zNC0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTZWF0UmVjbGluZUV4dHJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4zNSA1LjY0Yy0uOS0uNjQtMS4xMi0xLjg4LS40OS0yLjc5LjYzLS45IDEuODgtMS4xMiAyLjc5LS40OS45LjY0IDEuMTIgMS44OC40OSAyLjc5LS42NC45LTEuODggMS4xMi0yLjc5LjQ5ek0xNiAxOUg4LjkzYy0xLjQ4IDAtMi43NC0xLjA4LTIuOTYtMi41NEw0IDdIMmwxLjk5IDkuNzZBNS4wMSA1LjAxIDAgMCAwIDguOTQgMjFIMTZ2LTJ6bS4yMy00aC00Ljg4bC0xLjAzLTQuMWMxLjU4Ljg5IDMuMjggMS41NCA1LjE1IDEuMjJWOS45OWMtMS42My4zMS0zLjQ0LS4yNy00LjY5LTEuMjVMOS4xNCA3LjQ3Yy0uMjMtLjE4LS40OS0uMy0uNzYtLjM4YTIuMjEgMi4yMSAwIDAgMC0uOTktLjA2aC0uMDJhMi4yNjggMi4yNjggMCAwIDAtMS44NCAyLjYxbDEuMzUgNS45MkEzLjAwOCAzLjAwOCAwIDAgMCA5LjgzIDE4aDYuODVsMy44MiAzIDEuNS0xLjUtNS43Ny00LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTZWF0UmVjbGluZU5vcm1hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNTkgNS40MWMtLjc4LS43OC0uNzgtMi4wNSAwLTIuODMuNzgtLjc4IDIuMDUtLjc4IDIuODMgMCAuNzguNzguNzggMi4wNSAwIDIuODMtLjc5Ljc5LTIuMDUuNzktMi44MyAwek02IDE2VjdINHY5YzAgMi43NiAyLjI0IDUgNSA1aDZ2LTJIOWMtMS42NiAwLTMtMS4zNC0zLTN6bTE0IDQuMDdMMTQuOTMgMTVIMTEuNXYtMy42OGMxLjQgMS4xNSAzLjYgMi4xNiA1LjUgMi4xNnYtMi4xNmMtMS42Ni4wMi0zLjYxLS44Ny00LjY3LTIuMDRsLTEuNC0xLjU1Yy0uMTktLjIxLS40My0uMzgtLjY5LS41LS4yOS0uMTQtLjYyLS4yMy0uOTYtLjIzaC0uMDNDOC4wMSA3IDcgOC4wMSA3IDkuMjVWMTVjMCAxLjY2IDEuMzQgMyAzIDNoNS4wN2wzLjUgMy41TDIwIDIwLjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbHVldG9vdGhBdWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjI0IDEyLjAxIDIuMzIgMi4zMmMuMjgtLjcyLjQ0LTEuNTEuNDQtMi4zMyAwLS44Mi0uMTYtMS41OS0uNDMtMi4zMWwtMi4zMyAyLjMyem01LjI5LTUuMy0xLjI2IDEuMjZjLjYzIDEuMjEuOTggMi41Ny45OCA0LjAycy0uMzYgMi44Mi0uOTggNC4wMmwxLjIgMS4yYTkuOTM2IDkuOTM2IDAgMCAwIDEuNTQtNS4zMWMtLjAxLTEuODktLjU1LTMuNjctMS40OC01LjE5em0tMy44MiAxTDEwIDJIOXY3LjU5TDQuNDEgNSAzIDYuNDEgOC41OSAxMiAzIDE3LjU5IDQuNDEgMTkgOSAxNC40MVYyMmgxbDUuNzEtNS43MS00LjMtNC4yOSA0LjMtNC4yOXpNMTEgNS44M2wxLjg4IDEuODhMMTEgOS41OVY1Ljgzem0xLjg4IDEwLjQ2TDExIDE4LjE3di0zLjc2bDEuODggMS44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29uZmlybWF0aW9uTnVtYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTBWNmEyIDIgMCAwIDAtMi0ySDRjLTEuMSAwLTEuOTkuODktMS45OSAydjRjMS4xIDAgMS45OS45IDEuOTkgMnMtLjg5IDItMiAydjRjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMnYtNGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJ6bS05IDcuNWgtMnYtMmgydjJ6bTAtNC41aC0ydi0yaDJ2MnptMC00LjVoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuODMgMTBoLjY3VjcuNUwxNyAxMWwtMS41OSAxLjU5TDE4LjgzIDE2bDIuNTktMi41OWMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzbC03Ljk5LThjLS43OC0uNzgtMi4wNS0uNzgtMi44MyAwTDggNS4xNyAxMi44MyAxMHpNMi44MSAyLjgxIDEuMzkgNC4yMiA1LjE3IDhsLTIuNTkgMi41OWMtLjc4Ljc4LS43OCAyLjA1IDAgMi44M2w4LjAxIDhjLjc4Ljc4IDIuMDUuNzggMi44MyAwTDE2IDE4LjgzbDMuNzggMy43OCAxLjQxLTEuNDFMMi44MSAyLjgxek0xMCAxNUg4di00YzAtLjA1LjAyLS4wOS4wMy0uMTRMMTAgMTIuODNWMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpc2NGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTZoMnYtMmgtMnYyem0wLTl2NWgyVjdoLTJ6TTEwIDRjLTQuNDIgMC04IDMuNTgtOCA4czMuNTggOCA4IDggOC0zLjU4IDgtOC0zLjU4LTgtOC04em0wIDEwYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9EaXN0dXJiQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOCAwLTEuODUuNjMtMy41NSAxLjY5LTQuOUwxNi45IDE4LjMxQTcuOTAyIDcuOTAyIDAgMCAxIDEyIDIwem02LjMxLTMuMUw3LjEgNS42OUE3LjkwMiA3LjkwMiAwIDAgMSAxMiA0YzQuNDIgMCA4IDMuNTggOCA4IDAgMS44NS0uNjMgMy41NS0xLjY5IDQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9EaXN0dXJiT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMXYyaC0xLjE3bDQuNTEgNC41MUE5LjkxIDkuOTEgMCAwIDAgMjIgMTJjMC01LjUyLTQuNDgtMTAtMTAtMTAtMi4wNCAwLTMuOTMuNjEtNS41MSAxLjY2TDEzLjgzIDExSDE3ek0xLjM5IDQuMjJsMi4yNyAyLjI3QTkuOTEgOS45MSAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMDQgMCAzLjkzLS42MSA1LjUxLTEuNjZsMi4yNyAyLjI3IDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIyek03IDExaDEuMTdsMiAySDd2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvRGlzdHVyYk9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem01IDExSDd2LTJoMTB2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9EaXN0dXJiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJzNC41IDEwIDEwIDEwIDEwLTQuNSAxMC0xMFMxNy41IDIgMTIgMnpNNCAxMmMwLTQuNCAzLjYtOCA4LTggMS44IDAgMy41LjYgNC45IDEuN0w1LjcgMTYuOUM0LjYgMTUuNSA0IDEzLjggNCAxMnptOCA4Yy0xLjggMC0zLjUtLjYtNC45LTEuN0wxOC4zIDcuMUMxOS40IDguNSAyMCAxMC4yIDIwIDEyYzAgNC40LTMuNiA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9Ob3REaXN0dXJiQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0tNjE4LTE0NjRINzgydjM2MDBILTYxOHpNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyek00IDEyYzAtNC40IDMuNi04IDgtOCAxLjggMCAzLjUuNiA0LjkgMS43TDUuNyAxNi45QzQuNiAxNS41IDQgMTMuOCA0IDEyem04IDhjLTEuOCAwLTMuNS0uNi00LjktMS43TDE4LjMgNy4xQzE5LjQgOC41IDIwIDEwLjIgMjAgMTJjMCA0LjQtMy42IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb05vdERpc3R1cmJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDExdjJoLTEuNDZsNC42OCA0LjY4QTkuOTIgOS45MiAwIDAgMCAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMC0yLjExIDAtNC4wNy42Ni01LjY4IDEuNzhMMTMuNTQgMTFIMTd6TTIuMjcgMi4yNyAxIDMuNTRsMi43OCAyLjc4QTkuOTIgOS45MiAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMTEgMCA0LjA3LS42NiA1LjY4LTEuNzhMMjAuNDYgMjNsMS4yNy0xLjI3TDExIDExIDIuMjcgMi4yN3pNNyAxM3YtMmgxLjQ2bDIgMkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb05vdERpc3R1cmJPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNSAxMUg3di0yaDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvTm90RGlzdHVyYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04IDAtMS44NS42My0zLjU1IDEuNjktNC45TDE2LjkgMTguMzFBNy45MDIgNy45MDIgMCAwIDEgMTIgMjB6bTYuMzEtMy4xTDcuMSA1LjY5QTcuOTAyIDcuOTAyIDAgMCAxIDEyIDRjNC40MiAwIDggMy41OCA4IDggMCAxLjg1LS42MyAzLjU1LTEuNjkgNC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcml2ZUV0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDUuMDFDMTguNzIgNC40MiAxOC4xNiA0IDE3LjUgNGgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTF2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuNSAxNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgMTIgNi41IDEyczEuNS42NyAxLjUgMS41UzcuMzMgMTUgNi41IDE1em0xMSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNNSAxMGwxLjUtNC41aDExTDE5IDEwSDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVuaGFuY2VkRW5jcnlwdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA4aC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNnYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6TTguOSA2YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xczMuMSAxLjM5IDMuMSAzLjF2Mkg4LjlWNnpNMTYgMTZoLTN2M2gtMnYtM0g4di0yaDN2LTNoMnYzaDN2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXZlbnRBdmFpbGFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41MyAxMS4wNiAxNS40NyAxMGwtNC44OCA0Ljg4LTIuMTItMi4xMi0xLjA2IDEuMDZMMTAuNTkgMTdsNS45NC01Ljk0ek0xOSAzaC0xVjFoLTJ2Mkg4VjFINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMTlhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOGgxNHYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXZlbnRCdXN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOS4zMSAxNyAyLjQ0LTIuNDRMMTQuMTkgMTdsMS4wNi0xLjA2LTIuNDQtMi40NCAyLjQ0LTIuNDRMMTQuMTkgMTBsLTIuNDQgMi40NEw5LjMxIDEwbC0xLjA2IDEuMDYgMi40NCAyLjQ0LTIuNDQgMi40NEw5LjMxIDE3ek0xOSAzaC0xVjFoLTJ2Mkg4VjFINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMTlhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOGgxNHYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXZlbnROb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTBIN3YyaDEwdi0yem0yLTdoLTFWMWgtMnYySDhWMUg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAxOWEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExem0tNS01SDd2Mmg3di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xkZXJTcGVjaWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tMi4wNiAxMUwxNSAxNS4yOCAxMi4wNiAxN2wuNzgtMy4zMy0yLjU5LTIuMjQgMy40MS0uMjlMMTUgOGwxLjM0IDMuMTQgMy40MS4yOS0yLjU5IDIuMjQuNzggMy4zM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW1hZ2VzZWFyY2hSb2xsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAydjZINlY2SDR2NGgxMHY1aDJ2OGgtNnYtOGgydi0zSDJWNGg0VjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGl2ZVR2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA2aC03LjU5bDMuMjktMy4yOUwxNiAybC00IDQtNC00LS43MS43MUwxMC41OSA2SDNhMiAyIDAgMCAwLTIgMnYxMmMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjhhMiAyIDAgMCAwLTItMnptMCAxNEgzVjhoMTh2MTJ6TTkgMTB2OGw3LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1tcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek01IDE0bDMuNS00LjUgMi41IDMuMDFMMTQuNSA4bDQuNSA2SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAzSDdjLS42OSAwLTEuMjMuMzUtMS41OS44OEwwIDEybDUuNDEgOC4xMWMuMzYuNTMuOTcuODkgMS42Ni44OUgyMmMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDEzLjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZXR3b3JrQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS45IDVjLS4xNyAwLS4zMi4wOS0uNDEuMjNsLS4wNy4xNS01LjE4IDExLjY1Yy0uMTYuMjktLjI2LjYxLS4yNi45NiAwIDEuMTEuOSAyLjAxIDIuMDEgMi4wMS45NiAwIDEuNzctLjY4IDEuOTYtMS41OWwuMDEtLjAzTDE2LjQgNS41YzAtLjI4LS4yMi0uNS0uNS0uNXpNMSA5bDIgMmMyLjg4LTIuODggNi43OS00LjA4IDEwLjUzLTMuNjJsMS4xOS0yLjY4QzkuODkgMy44NCA0Ljc0IDUuMjcgMSA5em0yMCAyIDItMmExNS4zNjcgMTUuMzY3IDAgMCAwLTUuNTktMy41N2wtLjUzIDIuODJjMS41LjYyIDIuOSAxLjUzIDQuMTIgMi43NXptLTQgNCAyLTJjLS44LS44LTEuNy0xLjQyLTIuNjYtMS44OWwtLjU1IDIuOTJjLjQyLjI3LjgzLjU5IDEuMjEuOTd6TTUgMTNsMiAyYTcuMSA3LjEgMCAwIDEgNC4wMy0ybDEuMjgtMi44OGMtMi42My0uMDgtNS4zLjg3LTcuMzEgMi44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV0d29ya0xvY2tlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41IDEwYy4xNyAwIC4zMy4wMy41LjA1VjFMMSAyMGgxM3YtM2MwLS44OS4zOS0xLjY4IDEtMi4yM3YtLjI3YzAtMi40OCAyLjAyLTQuNSA0LjUtNC41em0yLjUgNnYtMS41YTIuNSAyLjUgMCAwIDAtNSAwVjE2Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWg1Yy41NSAwIDEtLjQ1IDEtMXYtNGMwLS41NS0uNDUtMS0xLTF6bS0xIDBoLTN2LTEuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9FbmNyeXB0aW9uR21haWxlcnJvcnJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC45IDZjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjFzMy4xIDEuMzkgMy4xIDMuMXYyaC00LjI3TDIwIDE3LjE3VjEwYzAtMS4xLS45LTItMi0yaC0xVjZjMC0yLjc2LTIuMjQtNS01LTUtMi4yMSAwLTQuMDcgMS40NS00LjczIDMuNDRMOC45IDYuMDdWNnpNMi4xIDIuMS42OSAzLjUxIDUuMyA4LjEzQzQuNTUgOC40MiA0IDkuMTUgNCAxMHYxMGMwIDEuMS45IDIgMiAyaDEyYy4zNCAwIC42NS0uMDkuOTMtLjI0bDEuNTYgMS41NiAxLjQxLTEuNDFMMi4xIDIuMXpNMTIgMTdjLTEuMSAwLTItLjktMi0yIDAtLjU5LjI3LTEuMTIuNjgtMS40OWwyLjgxIDIuODFjLS4zNy40MS0uOS42OC0xLjQ5LjY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb0VuY3J5cHRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMjEuNzggNC4yMiA1IDMgNi4yMmwyLjA0IDIuMDRDNC40MiA4LjYgNCA5LjI1IDQgMTB2MTBjMCAxLjEuOSAyIDIgMmgxMmMuMjMgMCAuNDUtLjA1LjY2LS4xMkwxOS43OCAyMyAyMSAyMS43OHpNOC45IDZjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjFzMy4xIDEuMzkgMy4xIDMuMXYySDkuNjZMMjAgMTguMzRWMTBjMC0xLjEtLjktMi0yLTJoLTFWNmMwLTIuNzYtMi4yNC01LTUtNS0yLjU2IDAtNC42NCAxLjkzLTQuOTQgNC40TDguOSA3LjI0VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE9uZGVtYW5kVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNWEyIDIgMCAwIDAtMi0yem0wIDE0SDNWNWgxOHYxMnptLTUtNi03IDRWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uYWxWaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNWEyIDIgMCAwIDAtMi0yem0wIDE0SDNWNWgxOHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmVCbHVldG9vdGhTcGVha2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNzEgOS41IDE3IDcuMjFWMTFoLjVsMi44NS0yLjg1TDE4LjIxIDZsMi4xNS0yLjE1TDE3LjUgMUgxN3YzLjc5TDE0LjcxIDIuNWwtLjcxLjcxTDE2Ljc5IDYgMTQgOC43OWwuNzEuNzF6TTE4IDIuOTFsLjk0Ljk0LS45NC45NFYyLjkxem0wIDQuMy45NC45NC0uOTQuOTRWNy4yMXptMiA4LjI5Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41N2ExLjAyIDEuMDIgMCAwIDAtMS4wMi4yNGwtMi4yIDIuMmExNS4wNDUgMTUuMDQ1IDAgMCAxLTYuNTktNi41OWwyLjItMi4yMWEuOTYuOTYgMCAwIDAgLjI1LTFBMTEuMzYgMTEuMzYgMCAwIDEgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lQ2FsbGJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjYyIDEwLjc5YzEuNDQgMi44MyAzLjc2IDUuMTQgNi41OSA2LjU5bDIuMi0yLjJjLjI3LS4yNy42Ny0uMzYgMS4wMi0uMjQgMS4xMi4zNyAyLjMzLjU3IDMuNTcuNTcuNTUgMCAxIC40NSAxIDFWMjBjMCAuNTUtLjQ1IDEtMSAxLTkuMzkgMC0xNy03LjYxLTE3LTE3IDAtLjU1LjQ1LTEgMS0xaDMuNWMuNTUgMCAxIC40NSAxIDEgMCAxLjI1LjIgMi40NS41NyAzLjU3LjExLjM1LjAzLjc0LS4yNSAxLjAybC0yLjIgMi4yem0xMy41NC03LjEtLjcxLS43TDEzIDkuMjlWNWgtMXY2aDZ2LTFoLTQuMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lRm9yd2FyZGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggMTEgNS01LTUtNXYzaC00djRoNHYzem0yIDQuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTdhMS4wMiAxLjAyIDAgMCAwLTEuMDIuMjRsLTIuMiAyLjJhMTUuMDQ1IDE1LjA0NSAwIDAgMS02LjU5LTYuNTlsMi4yLTIuMjFhLjk2Ljk2IDAgMCAwIC4yNS0xQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjVjMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZUluVGFsayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3YTEuMDIgMS4wMiAwIDAgMC0xLjAyLjI0bC0yLjIgMi4yYTE1LjA0NSAxNS4wNDUgMCAwIDEtNi41OS02LjU5bDIuMi0yLjIxYS45Ni45NiAwIDAgMCAuMjUtMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNMTkgMTJoMmE5IDkgMCAwIDAtOS05djJjMy44NyAwIDcgMy4xMyA3IDd6bS00IDBoMmMwLTIuNzYtMi4yNC01LTUtNXYyYzEuNjYgMCAzIDEuMzQgMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZUxvY2tlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNVY0YzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYxaC0xdjVoNlY1aC0xem0tMSAwaC0yVjRjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjYzIDE0LjQtMi41MiAyLjVjLTIuNS0xLjQzLTQuNTctMy41LTYtNmwyLjUtMi41MmMuMjMtLjI0LjMzLS41Ny4yNy0uOUw5LjEzIDMuOGMtLjA5LS40Ni0uNS0uOC0uOTgtLjhINGMtLjU2IDAtMS4wMy40Ny0xIDEuMDMuMTcgMi44OSAxLjA1IDUuNiAyLjQzIDcuOTcgMS41OCAyLjczIDMuODUgNC45OSA2LjU3IDYuNTcgMi4zNyAxLjM3IDUuMDggMi4yNiA3Ljk3IDIuNDMuNTYuMDMgMS4wMy0uNDQgMS4wMy0xdi00LjE1YzAtLjQ4LS4zNC0uODktLjgtLjk4bC0zLjY3LS43M2EuOTg1Ljk4NSAwIDAgMC0uOS4yNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmVNaXNzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgNS41IDEyIDExbDctNy0xLTEtNiA2LTQuNS00LjVIMTFWM0g1djZoMS41VjUuNXptMTcuMjEgMTEuMTdBMTYuOTcxIDE2Ljk3MSAwIDAgMCAxMiAxMkM3LjQ2IDEyIDMuMzQgMTMuNzguMjkgMTYuNjdjLS4xOC4xOC0uMjkuNDMtLjI5Ljcxcy4xMS41My4yOS43MWwyLjQ4IDIuNDhjLjE4LjE4LjQzLjI5LjcxLjI5LjI3IDAgLjUyLS4xMS43LS4yOC43OS0uNzQgMS42OS0xLjM2IDIuNjYtMS44NS4zMy0uMTYuNTYtLjUuNTYtLjl2LTMuMWMxLjQ1LS40OCAzLS43MyA0LjYtLjczIDEuNiAwIDMuMTUuMjUgNC42LjcydjMuMWMwIC4zOS4yMy43NC41Ni45Ljk4LjQ5IDEuODcgMS4xMiAyLjY3IDEuODUuMTguMTguNDMuMjguNy4yOC4yOCAwIC41My0uMTEuNzEtLjI5bDIuNDgtMi40OGMuMTgtLjE4LjI5LS40My4yOS0uNzFzLS4xMi0uNTItLjMtLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lUGF1c2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgM2gtMnY3aDJWM3ptMyAxMi41Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41N2ExLjAyIDEuMDIgMCAwIDAtMS4wMi4yNGwtMi4yIDIuMmExNS4wNDUgMTUuMDQ1IDAgMCAxLTYuNTktNi41OWwyLjItMi4yMWEuOTYuOTYgMCAwIDAgLjI1LTFBMTEuMzYgMTEuMzYgMCAwIDEgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6TTE5IDN2N2gyVjNoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvd2VyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxNC40OVY5YzAtMS0xLjAxLTIuMDEtMi0yVjNoLTJ2NGgtNFYzSDh2Mi40OGw5LjUxIDkuNS40OS0uNDl6bS0xLjc2IDEuNzdMNy4yIDcuMmwtLjAxLjAxTDMuOTggNCAyLjcxIDUuMjVsMy4zNiAzLjM2QzYuMDQgOC43NCA2IDguODcgNiA5djUuNDhMOS41IDE4djNoNXYtM2wuNDgtLjQ4TDE5LjQ1IDIybDEuMjYtMS4yOC00LjQ3LTQuNDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvd2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMDEgNyAxNiAzaC0ydjRoLTRWM0g4djRoLS4wMUM3IDYuOTkgNiA3Ljk5IDYgOC45OXY1LjQ5TDkuNSAxOHYzaDV2LTNsMy41LTMuNTF2LTUuNWMwLTEtMS0yLTEuOTktMS45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHJpb3JpdHlIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE5XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDNoNHYxMmgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUnVubmluZ1dpdGhFcnJvcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMHY4aC0ydi04aDJ6bS0yIDEwdjJoMnYtMmgtMnptLTItMi43MUE3Ljk5IDcuOTkgMCAwIDEgMTIgMjBjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTh2OWw3LjU1LTcuNTVBOS45NjUgOS45NjUgMCAwIDAgMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMGMyLjI1IDAgNC4zMy0uNzQgNi0ydi0yLjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZENhcmRBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMmgtOEw0LjAyIDggNCAyMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS01IDE1aC0ydi0yaDJ2MnptMC00aC0yVjhoMnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyaC04TDQuMDIgOCA0IDIwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTYgNmgtMlY0aDJ2NHptMyAwaC0yVjRoMnY0em0zIDBoLTJWNGgydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpbUNhcmRBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJoLThMNC4wMiA4IDQgMjBjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNSAxNWgtMnYtMmgydjJ6bTAtNGgtMlY4aDJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU21zRmFpbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDEyaC0ydi0yaDJ2MnptMC00aC0yVjZoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTbXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNOSAxMUg3VjloMnYyem00IDBoLTJWOWgydjJ6bTQgMGgtMlY5aDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3VwcG9ydEFnZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTIuMjJDMjEgNi43MyAxNi43NCAzIDEyIDNjLTQuNjkgMC05IDMuNjUtOSA5LjI4LS42LjM0LTEgLjk4LTEgMS43MnYyYzAgMS4xLjkgMiAyIDJoMXYtNi4xYzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDdWMTloLTh2Mmg4YzEuMSAwIDItLjkgMi0ydi0xLjIyYy41OS0uMzEgMS0uOTIgMS0xLjY0di0yLjNjMC0uNy0uNDEtMS4zMS0xLTEuNjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMS4wM0E2LjA0IDYuMDQgMCAwIDAgMTIuMDUgNmMtMy4wMyAwLTYuMjkgMi41MS02LjAzIDYuNDVhOC4wNzUgOC4wNzUgMCAwIDAgNC44Ni01Ljg5YzEuMzEgMi42MyA0IDQuNDQgNy4xMiA0LjQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTeW5jRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgNi4zNVY0LjI2Yy0uOC4yMS0xLjU1LjU0LTIuMjMuOTZsMS40NiAxLjQ2Yy4yNS0uMTIuNS0uMjQuNzctLjMzem0tNy4xNC0uOTQgMi4zNiAyLjM2YTcuOTI1IDcuOTI1IDAgMCAwIDEuMTQgOS44N0w0IDIwaDZ2LTZsLTIuMjQgMi4yNEE2LjAwMyA2LjAwMyAwIDAgMSA2IDEyYzAtMSAuMjUtMS45NC42OC0yLjc3bDguMDggOC4wOGMtLjI1LjEzLS41LjI1LS43Ny4zNHYyLjA5Yy44LS4yMSAxLjU1LS41NCAyLjIzLS45NmwyLjM2IDIuMzYgMS4yNy0xLjI3TDQuMTQgNC4xNCAyLjg2IDUuNDF6TTIwIDRoLTZ2NmwyLjI0LTIuMjRBNi4wMDMgNi4wMDMgMCAwIDEgMTggMTJjMCAxLS4yNSAxLjk0LS42OCAyLjc3bDEuNDYgMS40NmE3LjkyNSA3LjkyNSAwIDAgMC0xLjE0LTkuODdMMjAgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3luY0xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0LjI2djIuMDlDNy42NyA3LjE4IDYgOS4zOSA2IDEyYzAgMS43Ny43OCAzLjM0IDIgNC40NFYxNGgydjZINHYtMmgyLjczQTcuOTQyIDcuOTQyIDAgMCAxIDQgMTJjMC0zLjczIDIuNTUtNi44NSA2LTcuNzR6TTIwIDRoLTZ2NmgyVjcuNTZjMS4yMiAxLjEgMiAyLjY3IDIgNC40NGgyYzAtMi40LTEuMDYtNC41NC0yLjczLTZIMjBWNHptMCAxM3YtMWMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2MWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xem0tMSAwaC0ydi0xYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTeW5jUHJvYmxlbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTJjMCAyLjIxLjkxIDQuMiAyLjM2IDUuNjRMMyAyMGg2di02bC0yLjI0IDIuMjRBNi4wMDMgNi4wMDMgMCAwIDEgNSAxMmE1Ljk5IDUuOTkgMCAwIDEgNC01LjY1VjQuMjZDNS41NSA1LjE1IDMgOC4yNyAzIDEyem04IDVoMnYtMmgtMnYyek0yMSA0aC02djZsMi4yNC0yLjI0QTYuMDAzIDYuMDAzIDAgMCAxIDE5IDEyYTUuOTkgNS45OSAwIDAgMS00IDUuNjV2Mi4wOWMzLjQ1LS44OSA2LTQuMDEgNi03Ljc0IDAtMi4yMS0uOTEtNC4yLTIuMzYtNS42NEwyMSA0em0tMTAgOWgyVjdoLTJ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3luYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRWMUw4IDVsNCA0VjZjMy4zMSAwIDYgMi42OSA2IDYgMCAxLjAxLS4yNSAxLjk3LS43IDIuOGwxLjQ2IDEuNDZBNy45MyA3LjkzIDAgMCAwIDIwIDEyYzAtNC40Mi0zLjU4LTgtOC04em0wIDE0Yy0zLjMxIDAtNi0yLjY5LTYtNiAwLTEuMDEuMjUtMS45Ny43LTIuOEw1LjI0IDcuNzRBNy45MyA3LjkzIDAgMCAwIDQgMTJjMCA0LjQyIDMuNTggOCA4IDh2M2w0LTQtNC00djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN5c3RlbVVwZGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEuMDEgNyAxYy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE3IDE5SDdWNWgxMHYxNHptLTEtNmgtM1Y4aC0ydjVIOGw0IDQgNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYXBBbmRQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxNnYyYzIuNzYgMCA1IDIuMjQgNSA1aDJjMC0zLjg3LTMuMTMtNy03LTd6bTAgNHYzaDNjMC0xLjY2LTEuMzQtMy0zLTN6bTAtOHYyYTkgOSAwIDAgMSA5IDloMmMwLTYuMDgtNC45Mi0xMS0xMS0xMXpNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjcuMzdjLjY5LjE2IDEuMzYuMzcgMiAuNjRWNWgxMHYxM2gtMy4wM2MuNTIgMS4yNS44NCAyLjU5Ljk1IDRIMTdjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGltZVRvTGVhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MiA1LjAxQzE4LjcyIDQuNDIgMTguMTYgNCAxNy41IDRoLTExYy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwzIDExdjhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGwtMi4wOC01Ljk5ek02LjUgMTVjLS44MyAwLTEuNS0uNjctMS41LTEuNVM1LjY3IDEyIDYuNSAxMnMxLjUuNjcgMS41IDEuNVM3LjMzIDE1IDYuNSAxNXptMTEgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6TTUgMTBsMS41LTQuNWgxMUwxOSAxMEg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUdk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMSAzLjU0IDEuNTMgMS41M0MxLjY1IDUuMjggMSA2LjA2IDEgN3YxMmMwIDEuMS45IDIgMiAyaDE1LjQ2bDIgMiAxLjI2LTEuMjdMMi4yNyAyLjI3IDEgMy41NHpNMyAxOVY3aDEuNDZsMTIgMTJIM3pNMjEgNWgtNy41OGwzLjI5LTMuM0wxNiAxbC00IDQtNC00LS43LjdMMTAuNTggNUg3LjUybDIgMkgyMXYxMS40OGwxLjY1IDEuNjVjLjIyLS4zMi4zNS0uNzEuMzUtMS4xM1Y3YzAtMS4xMS0uODktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpYnJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTVoMlY5SDB2NnptMyAyaDJWN0gzdjEwem0xOS04djZoMlY5aC0yem0tMyA4aDJWN2gtMnYxMHpNMTYuNSAzaC05QzYuNjcgMyA2IDMuNjcgNiA0LjV2MTVjMCAuODMuNjcgMS41IDEuNSAxLjVoOWMuODMgMCAxLjUtLjY3IDEuNS0xLjV2LTE1YzAtLjgzLS42Ny0xLjUtMS41LTEuNXpNMTYgMTlIOFY1aDh2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvQ2hhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS0zIDExLTItMS45OVYxM2MwIC41NS0uNDUgMS0xIDFIOGMtLjU1IDAtMS0uNDUtMS0xVjdjMC0uNTUuNDUtMSAxLTFoNmMuNTUgMCAxIC40NSAxIDF2MS45OUwxNyA3djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZvaWNlQ2hhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRINmwtMiAyVjRoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjI1IDVoMS41djEwaC0xLjV6TTguNSA3SDEwdjZIOC41ek02IDloMS41djJINnpNMTQgN2gxLjV2NkgxNHpNMTYuNSA5SDE4djJoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVnBuTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDR2LS41YTIuNSAyLjUgMCAwIDAtNSAwVjRjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxaDVjLjU1IDAgMS0uNDUgMS0xVjVjMC0uNTUtLjQ1LTEtMS0xem0tLjggMGgtMy40di0uNWMwLS45NC43Ni0xLjcgMS43LTEuN3MxLjcuNzYgMS43IDEuN1Y0em0tMi4yOCA4Yy4wNC4zMy4wOC42Ni4wOCAxIDAgMi4wOC0uOCAzLjk3LTIuMSA1LjM5LS4yNi0uODEtMS0xLjM5LTEuOS0xLjM5aC0xdi0zYzAtLjU1LS40NS0xLTEtMUg3di0yaDJjLjU1IDAgMS0uNDUgMS0xVjhoMmMxLjEgMCAyLS45IDItMlYzLjQ2Yy0uOTUtLjMtMS45NS0uNDYtMy0uNDZDNS40OCAzIDEgNy40OCAxIDEzczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMGMwLS4zNC0uMDItLjY3LS4wNS0xaC0yLjAzek0xMCAyMC45M2MtMy45NS0uNDktNy0zLjg1LTctNy45MyAwLS42Mi4wOC0xLjIxLjIxLTEuNzlMOCAxNnYxYzAgMS4xLjkgMiAyIDJ2MS45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNSAyMnYtNy41SDRWOWMwLTEuMS45LTIgMi0yaDNjMS4xIDAgMiAuOSAyIDJ2NS41SDkuNVYyMmgtNHpNMTggMjJ2LTZoM2wtMi41NC03LjYzQTIuMDEgMi4wMSAwIDAgMCAxNi41NiA3aC0uMTJhMiAyIDAgMCAwLTEuOSAxLjM3TDEyIDE2aDN2Nmgzek03LjUgNmMxLjExIDAgMi0uODkgMi0ycy0uODktMi0yLTItMiAuODktMiAyIC44OSAyIDIgMnptOSAwYzEuMTEgMCAyLS44OSAyLTJzLS44OS0yLTItMi0yIC44OS0yIDIgLjg5IDIgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWZpT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAuMDFjMC0uMDEgMC0uMDEgMCAwTDAgMHYyNGgyNFYuMDF6TTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjk5IDlDMTkuMTUgNS4xNiAxMy44IDMuNzYgOC44NCA0Ljc4bDIuNTIgMi41MmMzLjQ3LS4xNyA2Ljk5IDEuMDUgOS42MyAzLjdsMi0yem0tNCA0YTkuNzkzIDkuNzkzIDAgMCAwLTQuNDktMi41NmwzLjUzIDMuNTMuOTYtLjk3ek0yIDMuMDUgNS4wNyA2LjFDMy42IDYuODIgMi4yMiA3Ljc4IDEgOWwxLjk5IDJjMS4yNC0xLjI0IDIuNjctMi4xNiA0LjItMi43N2wyLjI0IDIuMjRBOS42ODQgOS42ODQgMCAwIDAgNSAxM3YuMDFMNi45OSAxNWE3LjA0MiA3LjA0MiAwIDAgMSA0LjkyLTIuMDZMMTguOTggMjBsMS4yNy0xLjI2TDMuMjkgMS43OSAyIDMuMDV6TTkgMTdsMyAzIDMtM2E0LjIzNyA0LjIzNyAwIDAgMC02IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xIDkgMiAyYzQuOTctNC45NyAxMy4wMy00Ljk3IDE4IDBsMi0yQzE2LjkzIDIuOTMgNy4wOCAyLjkzIDEgOXptOCA4IDMgMyAzLTNhNC4yMzcgNC4yMzcgMCAwIDAtNiAwem0tNC00IDIgMmE3LjA3NCA3LjA3NCAwIDAgMSAxMCAwbDItMkMxNS4xNCA5LjE0IDguODcgOS4xNCA1IDEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY1VuaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMWgtNC4xN2wzLjI0LTMuMjQtMS40MS0xLjQyTDE1IDExaC0yVjlsNC42Ni00LjY2LTEuNDItMS40MUwxMyA2LjE3VjJoLTJ2NC4xN0w3Ljc2IDIuOTMgNi4zNCA0LjM0IDExIDl2Mkg5TDQuMzQgNi4zNCAyLjkzIDcuNzYgNi4xNyAxMUgydjJoNC4xN2wtMy4yNCAzLjI0IDEuNDEgMS40Mkw5IDEzaDJ2MmwtNC42NiA0LjY2IDEuNDIgMS40MUwxMSAxNy44M1YyMmgydi00LjE3bDMuMjQgMy4yNCAxLjQyLTEuNDFMMTMgMTV2LTJoMmw0LjY2IDQuNjYgMS40MS0xLjQyTDE3LjgzIDEzSDIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBaXJwb3J0U2h1dHRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDVIM2EyIDIgMCAwIDAtMiAydjloMmMwIDEuNjUgMS4zNCAzIDMgM3MzLTEuMzUgMy0zaDUuNWMwIDEuNjUgMS4zNCAzIDMgM3MzLTEuMzUgMy0zSDIzdi01bC02LTZ6TTMgMTFWN2g0djRIM3ptMyA2LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em03LTYuNUg5VjdoNHY0em00LjUgNi41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNMTUgMTFWN2gxbDQgNGgtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxsSW5jbHVzaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC42IDYuNjJjLTEuNDQgMC0yLjguNTYtMy43NyAxLjUzTDEyIDEwLjY2IDEwLjQ4IDEyaC4wMUw3LjggMTQuMzljLS42NC42NC0xLjQ5Ljk5LTIuNC45OS0xLjg3IDAtMy4zOS0xLjUxLTMuMzktMy4zOFMzLjUzIDguNjIgNS40IDguNjJjLjkxIDAgMS43Ni4zNSAyLjQ0IDEuMDNsMS4xMyAxIDEuNTEtMS4zNEw5LjIyIDguMkE1LjM3IDUuMzcgMCAwIDAgNS40IDYuNjJDMi40MiA2LjYyIDAgOS4wNCAwIDEyczIuNDIgNS4zOCA1LjQgNS4zOGMxLjQ0IDAgMi44LS41NiAzLjc3LTEuNTNsMi44My0yLjUuMDEuMDFMMTMuNTIgMTJoLS4wMWwyLjY5LTIuMzljLjY0LS42NCAxLjQ5LS45OSAyLjQtLjk5IDEuODcgMCAzLjM5IDEuNTEgMy4zOSAzLjM4cy0xLjUyIDMuMzgtMy4zOSAzLjM4Yy0uOSAwLTEuNzYtLjM1LTIuNDQtMS4wM2wtMS4xNC0xLjAxLTEuNTEgMS4zNCAxLjI3IDEuMTJhNS4zODYgNS4zODYgMCAwIDAgMy44MiAxLjU3YzIuOTggMCA1LjQtMi40MSA1LjQtNS4zOHMtMi40Mi01LjM3LTUuNC01LjM3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcGFydG1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMVYzSDd2NEgzdjE0aDh2LTRoMnY0aDhWMTFoLTR6TTcgMTlINXYtMmgydjJ6bTAtNEg1di0yaDJ2MnptMC00SDVWOWgydjJ6bTQgNEg5di0yaDJ2MnptMC00SDlWOWgydjJ6bTAtNEg5VjVoMnYyem00IDhoLTJ2LTJoMnYyem0wLTRoLTJWOWgydjJ6bTAtNGgtMlY1aDJ2MnptNCAxMmgtMnYtMmgydjJ6bTAtNGgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhYnlDaGFuZ2luZ1N0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA4djJoLTNMOC4zMSA4LjgyIDcgMTIuNzVWMjJIM1YxMmwxLjU4LTQuNjNBMi4wMDMgMi4wMDMgMCAwIDEgNy4zIDYuMThsNC4xNSAxLjgzTDE0IDh6TTggMWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTEgMThoMTJ2LTJIOXYyem0xMC41LTNjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjUtMS41LjY3LTEuNSAxLjUuNjcgMS41IDEuNSAxLjV6TTEzIDEyYzAtLjU1LS40NS0xLTEtMUg5djJoMnYxYzAgMS4xLjkgMiAyIDJoMmMxLjEgMCAyLS45IDItMnYtM2gtMnYyaC0ydi0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYWNrcGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDh2MTJjMCAxLjEtLjkgMi0yIDJINmMtMS4xIDAtMi0uOS0yLTJWOGMwLTEuODYgMS4yOC0zLjQxIDMtMy44NlYyaDN2Mmg0VjJoM3YyLjE0YzEuNzIuNDUgMyAyIDMgMy44NnpNNiAxMnYyaDEwdjJoMnYtNEg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYWxjb255IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTB2Mkg4di0yaDJ6bTYgMnYtMmgtMnYyaDJ6bTUgMnY4SDN2LThoMXYtNGMwLTQuNDIgMy41OC04IDgtOHM4IDMuNTggOCA4djRoMXpNNyAxNkg1djRoMnYtNHptNCAwSDl2NGgydi00em0wLTExLjkyQzguMTYgNC41NiA2IDcuMDMgNiAxMHY0aDVWNC4wOHpNMTMgMTRoNXYtNGMwLTIuOTctMi4xNi01LjQ0LTUtNS45MlYxNHptMiAyaC0ydjRoMnYtNHptNCAwaC0ydjRoMnYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0aHR1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiN1wiLFwiY3lcIjpcIjdcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTNWNC44M0MyMCAzLjI3IDE4LjczIDIgMTcuMTcgMmMtLjc1IDAtMS40Ny4zLTIgLjgzbC0xLjI1IDEuMjVjLS4xNi0uMDUtLjMzLS4wOC0uNTEtLjA4LS40IDAtLjc3LjEyLTEuMDguMzJsMi43NiAyLjc2Yy4yLS4zMS4zMi0uNjguMzItMS4wOCAwLS4xOC0uMDMtLjM0LS4wNy0uNTFsMS4yNS0xLjI1YS44MjguODI4IDAgMCAxIDEuNDEuNTlWMTNoLTYuODVjLS4zLS4yMS0uNTctLjQ1LS44Mi0uNzJsLTEuNC0xLjU1Yy0uMTktLjIxLS40My0uMzgtLjY5LS41QTIuMjUxIDIuMjUxIDAgMCAwIDUgMTIuMjVWMTNIMnY2YzAgMS4xLjkgMiAyIDIgMCAuNTUuNDUgMSAxIDFoMTRjLjU1IDAgMS0uNDUgMS0xIDEuMSAwIDItLjkgMi0ydi02aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCZWFjaEFjY2VzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEzLjEyNyAxNC41NiAxLjQzLTEuNDMgNi40NCA2LjQ0M0wxOS41NyAyMXptNC4yOTMtNS43MyAyLjg2LTIuODZjLTMuOTUtMy45NS0xMC4zNS0zLjk2LTE0LjMtLjAyIDMuOTMtMS4zIDguMzEtLjI1IDExLjQ0IDIuODh6TTUuOTUgNS45OGMtMy45NCAzLjk1LTMuOTMgMTAuMzUuMDIgMTQuM2wyLjg2LTIuODZDNS43IDE0LjI5IDQuNjUgOS45MSA1Ljk1IDUuOTh6bS4wMi0uMDItLjAxLjAxYy0uMzggMy4wMSAxLjE3IDYuODggNC4zIDEwLjAybDUuNzMtNS43M2MtMy4xMy0zLjEzLTcuMDEtNC42OC0xMC4wMi00LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJlbnRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTFWNWg0YzEuMSAwIDIgLjkgMiAydjRoLTZ6bTQgOGMxLjEgMCAyLS45IDItMnYtNGgtNnY2aDR6TTE0IDV2MTRINGMtMS4xIDAtMi0uOS0yLTJWN2MwLTEuMS45LTIgMi0yaDEwem0tNC41IDdjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNS42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJ1bmdhbG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMyA0LjIgMTUuNWwxLjcgMS4wNkw3IDE0LjhWMjFoNHYtNWgydjVoNHYtNi4yMWwxLjEgMS43NyAxLjctMS4wNkwxMiAzem0xIDExaC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnVzaW5lc3NDZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0xMCA1aDR2MmgtNHptMCAwaDR2MmgtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTZ2LTFIMy4wMUwzIDE5YzAgMS4xMS44OSAyIDIgMmgxNGMxLjExIDAgMi0uODkgMi0ydi00aC03djFoLTR6bTEwLTloLTQuMDFWNWwtMi0yaC00bC0yIDJ2Mkg0Yy0xLjEgMC0yIC45LTIgMnYzYzAgMS4xMS44OSAyIDIgMmg2di0yaDR2Mmg2YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6bS02IDBoLTRWNWg0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhYmluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMWMwIDEuNjYtMS4zNCAzLTMgMy0uNTUgMC0xIC40NS0xIDFINGMwLTEuNjYgMS4zNC0zIDMtMyAuNTUgMCAxLS40NSAxLTFoMnptMiAyTDYgNy41OFY2SDR2My4xMUwxIDExLjRsMS4yMSAxLjU5TDQgMTEuNjJWMjFoMTZ2LTkuMzhsMS43OSAxLjM2TDIzIDExLjQgMTIgM3ptMS45NCA0aC0zLjg5TDEyIDUuNTIgMTMuOTQgN3ptLTYuNSAyaDkuMTJMMTggMTAuMXYuOUg2di0uOUw3LjQ0IDl6TTE4IDEzdjJINnYtMmgxMnpNNiAxOXYtMmgxMnYySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhcnBlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjczIDE0LjIzIDcgMS41IDMuMTEgNS4zOWw4LjEzIDExLjY3Yy0uNzguNzgtLjc4IDIuMDUgMCAyLjgzbDEuNDEgMS40MWMuNzguNzggMi4wNS43OCAyLjgzIDBsNC4yNC00LjI0Yy43OS0uNzguNzktMi4wNS4wMS0yLjgzem0tNS42NiA1LjY1LTEuNDEtMS40MSA0LjI0LTQuMjQgMS40MSAxLjQxLTQuMjQgNC4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FzaW5vIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMjEuMDIgMTljMCAxLjEtLjkgMi0yIDJoLTE0Yy0xLjEgMC0yLS45LTItMlY1YzAtMS4xLjktMiAyLTJoMTRjMS4xIDAgMiAuOSAyIDJ2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek03LjUgMThjLS44MyAwLTEuNS0uNjctMS41LTEuNVM2LjY3IDE1IDcuNSAxNXMxLjUuNjcgMS41IDEuNVM4LjMzIDE4IDcuNSAxOHptMC05QzYuNjcgOSA2IDguMzMgNiA3LjVTNi42NyA2IDcuNSA2IDkgNi42NyA5IDcuNSA4LjMzIDkgNy41IDl6bTQuNSA0LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em00LjUgNC41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXptMC05Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTUuNjcgNiAxNi41IDZzMS41LjY3IDEuNSAxLjVTMTcuMzMgOSAxNi41IDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoYWxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDcuNSA3LjUgNy41LTEuNDEgMS40MUwxNSAxNS4zM1YyMGgtNHYtNUg5djVINXYtNC42N2wtMS4wOSAxLjA5TDIuNSAxNSAxMCA3LjV6bTEyLTFoLTEuMTlsLjc1LS43NS0uNzEtLjcxLTEuNDYgMS40NmgtLjg5di0uODlsMS40NS0xLjQ1LS43MS0uNzEtLjc0Ljc0VjNoLTF2MS4xOWwtLjc1LS43NS0uNzEuNzEgMS40NSAxLjQ1di45aC0uODlsLTEuNDUtMS40NS0uNzEuNzEuNzUuNzVIMTR2MWgxLjE5bC0uNzUuNzUuNzEuNzEgMS40NS0xLjQ1aC44OXYuODlsLTEuNDUgMS40NS43MS43MS43NS0uNzVWMTFoMVY5LjgxbC43NS43NS43MS0uNzEtMS40Ni0xLjQ2VjcuNWguODlsMS40NSAxLjQ1LjcxLS43MS0uNzQtLjc0SDIydi0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGFyZ2luZ1N0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC41IDExLTMgNnYtNGgtMmwzLTZ2NGgyek03IDFoMTBjMS4xIDAgMiAuOSAyIDJ2MThjMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJWM2MwLTEuMS45LTIgMi0yem0wIDV2MTJoMTBWNkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGVja3Jvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS42IDE4LjIgMTMgMTEuNzV2LS45MWEzLjQ5NiAzLjQ5NiAwIDAgMC0uMTgtNi43NUEzLjUxIDMuNTEgMCAwIDAgOC41IDcuNWgyYzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41YzAgLjg0LS42OSAxLjUyLTEuNTMgMS41LS41NC0uMDEtLjk3LjQ1LS45Ny45OXYxLjc2TDIuNCAxOC4yYy0uNzcuNTgtLjM2IDEuOC42IDEuOGgxOGMuOTYgMCAxLjM3LTEuMjIuNi0xLjh6TTYgMThsNi00LjUgNiA0LjVINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hpbGRDYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNC41XCIsXCJjeVwiOlwiMTAuNVwiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjkuNVwiLFwiY3lcIjpcIjEwLjVcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuOTQgMTIuNjZjLjA0LS4yMS4wNi0uNDMuMDYtLjY2cy0uMDItLjQ1LS4wNi0uNjZhNC4wMDggNC4wMDggMCAwIDAtMi44MS0zLjE3IDkuMTE0IDkuMTE0IDAgMCAwLTIuMTktMi45MUMxNi4zNiAzLjg1IDE0LjI4IDMgMTIgM3MtNC4zNi44NS01Ljk0IDIuMjZjLS45Mi44MS0xLjY3IDEuOC0yLjE5IDIuOTFhMy45OTQgMy45OTQgMCAwIDAtMi44MSAzLjE3Yy0uMDQuMjEtLjA2LjQzLS4wNi42NnMuMDIuNDUuMDYuNjZhNC4wMDggNC4wMDggMCAwIDAgMi44MSAzLjE3IDguOTc3IDguOTc3IDAgMCAwIDIuMTcgMi44OUM3LjYyIDIwLjE0IDkuNzEgMjEgMTIgMjFzNC4zOC0uODYgNS45Ny0yLjI4Yy45LS44IDEuNjUtMS43OSAyLjE3LTIuODlhMy45OTggMy45OTggMCAwIDAgMi44LTMuMTd6TTE5IDE0Yy0uMSAwLS4xOS0uMDItLjI5LS4wMy0uMi42Ny0uNDkgMS4yOS0uODYgMS44NkMxNi42IDE3Ljc0IDE0LjQ1IDE5IDEyIDE5cy00LjYtMS4yNi01Ljg1LTMuMTdjLS4zNy0uNTctLjY2LTEuMTktLjg2LTEuODYtLjEuMDEtLjE5LjAzLS4yOS4wMy0xLjEgMC0yLS45LTItMnMuOS0yIDItMmMuMSAwIC4xOS4wMi4yOS4wMy4yLS42Ny40OS0xLjI5Ljg2LTEuODZDNy40IDYuMjYgOS41NSA1IDEyIDVzNC42IDEuMjYgNS44NSAzLjE3Yy4zNy41Ny42NiAxLjE5Ljg2IDEuODYuMS0uMDEuMTktLjAzLjI5LS4wMyAxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDJ6TTcuNSAxNGMuNzYgMS43NyAyLjQ5IDMgNC41IDNzMy43NC0xLjIzIDQuNS0zaC05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGlsZEZyaWVuZGx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMnY4aDhjMC00LjQyLTMuNTgtOC04LTh6bTYuMzIgMTMuODlBNy45NDggNy45NDggMCAwIDAgMjEgMTFINi40NGwtLjk1LTJIMnYyaDIuMjJzMS44OSA0LjA3IDIuMTIgNC40MmMtMS4xLjU5LTEuODQgMS43NS0xLjg0IDMuMDhDNC41IDIwLjQzIDYuMDcgMjIgOCAyMmMxLjc2IDAgMy4yMi0xLjMgMy40Ni0zaDIuMDhjLjI0IDEuNyAxLjcgMyAzLjQ2IDMgMS45MyAwIDMuNS0xLjU3IDMuNS0zLjUgMC0xLjA0LS40Ni0xLjk3LTEuMTgtMi42MXpNOCAyMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzcuMTcgMTcgOCAxN3MxLjUuNjcgMS41IDEuNVM4LjgzIDIwIDggMjB6bTkgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzE2LjE3IDE3IDE3IDE3czEuNS42NyAxLjUgMS41UzE3LjgzIDIwIDE3IDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb3Jwb3JhdGVGYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN1YzSDJ2MThoMjBWN0gxMnptLTIgMTJINHYtMmg2djJ6bTAtNEg0di0yaDZ2MnptMC00SDRWOWg2djJ6bTAtNEg0VjVoNnYyem0xMCAxMmgtOFY5aDh2MTB6bS0yLThoLTR2Mmg0di0yem0wIDRoLTR2Mmg0di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb3R0YWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMyA2IDcuNThWNkg0djMuMTFMMSAxMS40bDEuMjEgMS41OUw0IDExLjYyVjIxaDd2LTZoMnY2aDd2LTkuMzhsMS43OSAxLjM2TDIzIDExLjQgMTIgM3ptLTItMmMwIDEuNjYtMS4zNCAzLTMgMy0uNTUgMC0xIC40NS0xIDFINGMwLTEuNjYgMS4zNC0zIDMtMyAuNTUgMCAxLS40NSAxLTFoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ291bnRlcnRvcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMFY3YzAtMS42Ni0xLjM0LTMtMy0zcy0zIDEuMzQtMyAzaDJjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjNIOGMxLjEgMCAyLS45IDItMlY0SDR2NGMwIDEuMS45IDIgMiAySDJ2MmgydjhoMTZ2LThoMnYtMmgtNHptLTUgOGgtMnYtNmgydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyaWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5aC02VjRIOEM1Ljc5IDQgNCA1Ljc5IDQgOHY2YzAgMS4xLjkgMiAyIDJoMnYyLjkzYy0uNjEtLjM1LTEuMTYtLjc4LTEuNjUtMS4yN2wtMS40MiAxLjQyQzYuNzQgMjAuODggOS4yNCAyMiAxMiAyMmMyLjc2IDAgNS4yNi0xLjEyIDcuMDctMi45M2wtMS40Mi0xLjQyYy0uNDkuNDktMS4wNS45Mi0xLjY1IDEuMjdWMTZoMmMxLjEgMCAyLS45IDItMnYtM2MwLTEuMS0uOS0yLTItMnptLTQgMTAuNzVjLS42NC4xNi0xLjMxLjI1LTIgLjI1cy0xLjM2LS4wOS0yLS4yNVYxNmg0djMuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlc2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDZ2MTJoMlY4aDEwdjEwaDJ2LTJoNHYyaDJWNkgyem0xOCAydjJoLTRWOGg0em0tNCA2di0yaDR2MmgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9Ob3RTdGVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMS4zOSA0LjIyIDcuOSA3LjljLjE4LjIuMTguNS0uMDEuN2EuNDg1LjQ4NSAwIDAgMS0uNyAwTDYuODcgMTEuMWMtLjExLjQtLjI2Ljc4LS40NSAxLjEybDEuNCAxLjRjLjIuMi4yLjUxIDAgLjcxYS40ODUuNDg1IDAgMCAxLS43IDBsLTEuMjctMS4yN2MtLjI0LjI5LS41LjU2LS43Ny44bDEuMjggMS4yOGMuMi4yLjIuNTEgMCAuNzEtLjEuMS0uMjMuMTUtLjM2LjE1cy0uMjYtLjA1LS4zNS0uMTVsLTEuMzgtMS4zOGMtLjY5LjQ2LTEuMzkuNzktMS45NyAxLjAyLS43OC4zMS0xLjMgMS4wNC0xLjMgMS44OFYyMGg5LjVsMy4zMy0zLjMzIDUuOTQgNS45NCAxLjQxLTEuNDFMMi44MSAyLjgxIDEuMzkgNC4yMnptMTcuMTIgMTEuNDYtMS40MS0xLjQxIDQuNDgtNC40OEwyMyAxMS4ybC00LjQ5IDQuNDh6bTIuMzctNi42LTQuNDggNC40OC03LjEtNy4wOUwxMy44IDJsNy4wOCA3LjA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb05vdFRvdWNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgMTAuMTctMi41LTIuNVYyLjI1YTEuMjUgMS4yNSAwIDAgMSAyLjUgMHY3Ljkyem03IDIuNTh2LTcuNWExLjI1IDEuMjUgMCAwIDAtMi41IDBWMTFoLTFWMy4yNWExLjI1IDEuMjUgMCAwIDAtMi41IDB2Ny45Mmw2IDZ2LTQuNDJ6TTkuNSA0LjI1QzkuNSAzLjU2IDguOTQgMyA4LjI1IDNjLS42NyAwLTEuMi41My0xLjI0IDEuMThMOS41IDYuNjdWNC4yNXptMy41IDUuOTItMi41LTIuNVYyLjI1YTEuMjUgMS4yNSAwIDAgMSAyLjUgMHY3Ljkyem03IDIuNTh2LTcuNWExLjI1IDEuMjUgMCAwIDAtMi41IDBWMTFoLTFWMy4yNWExLjI1IDEuMjUgMCAwIDAtMi41IDB2Ny45Mmw2IDZ2LTQuNDJ6TTkuNSA0LjI1QzkuNSAzLjU2IDguOTQgMyA4LjI1IDNjLS42NyAwLTEuMi41My0xLjI0IDEuMThMOS41IDYuNjdWNC4yNXptMTEuNjkgMTYuOTRMMi44MSAyLjgxIDEuMzkgNC4yMmw1LjYzIDUuNjNMNyA5LjgzdjQuM2MtMS4xMS0uNjQtMi41OC0xLjQ3LTIuNi0xLjQ4LS4xNy0uMDktLjM0LS4xNC0uNTQtLjE0LS4yNiAwLS41LjA5LS43LjI2LS4wNC4wMS0xLjE2IDEuMTEtMS4xNiAxLjExbDYuOCA3LjE4Yy41Ny42IDEuMzUuOTQgMi4xOC45NEgxN2MuNjIgMCAxLjE4LS4xOSAxLjY1LS41MmwtLjAyLS4wMiAxLjE1IDEuMTUgMS40MS0xLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS42NSA0Ljg2LS4wNy0uMDdjLS41Ny0uNjItLjgyLTEuNDEtLjY3LTIuMkwxNSAyaC0xLjg5bC0uMDYuNDNjLS4yIDEuMzYuMjcgMi43MSAxLjMgMy43MmwuMDcuMDZjLjU3LjYyLjgyIDEuNDEuNjcgMi4ybC0uMTEuNTloMS45MWwuMDYtLjQzYy4yMS0xLjM2LS4yNy0yLjcxLTEuMy0zLjcxem00IDAtLjA3LS4wN2MtLjU3LS42Mi0uODItMS40MS0uNjctMi4yTDE5IDJoLTEuODlsLS4wNi40M2MtLjIgMS4zNi4yNyAyLjcxIDEuMyAzLjcybC4wNy4wNmMuNTcuNjIuODIgMS40MS42NyAyLjJsLS4xMS41OWgxLjkxbC4wNi0uNDNjLjIxLTEuMzYtLjI3LTIuNzEtMS4zLTMuNzF6TTkuMTIgNWwtNy4xOCA2Ljc5Yy0uNi41Ni0uOTQgMS4zNS0uOTQgMi4xOFYyMGMwIDEuNjYgMS4zNCAzIDMgM2gxMy43NWExLjI1IDEuMjUgMCAwIDAgMC0yLjVIMTJ2LTFoNy43NWExLjI1IDEuMjUgMCAwIDAgMC0yLjVIMTJ2LTFoOC43NWExLjI1IDEuMjUgMCAwIDAgMC0yLjVIMTJ2LTFoNi43NWExLjI1IDEuMjUgMCAwIDAgMC0yLjVIOC44NmMuNjQtMS4xMSAxLjQ4LTIuNTggMS40OS0yLjYxYTEuMDY1IDEuMDY1IDAgMCAwLS4xMi0xLjIzQzEwLjIyIDYuMTIgOS4xMiA1IDkuMTIgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWxldmF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOC41IDZhMS4yNSAxLjI1IDAgMSAxIDAgMi41IDEuMjUgMS4yNSAwIDAgMSAwLTIuNXptMi41IDhoLTF2NEg3di00SDZ2LTIuNWMwLTEuMS45LTIgMi0yaDFjMS4xIDAgMiAuOSAyIDJWMTR6bTQuNSAzTDEzIDEzaDVsLTIuNSA0ek0xMyAxMWwyLjUtNCAyLjUgNGgtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXNjYWxhdG9yV2FybmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAyYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptOSA3LjVjMCAuODMuNjcgMS41IDEuNSAxLjVzMS41LS42NyAxLjUtMS41UzE3LjgzIDggMTcgOHMtMS41LjY3LTEuNSAxLjV6bTMgMi41aC0yLjg0Yy0uNTguMDEtMS4xNC4zMi0xLjQ1Ljg2bC0uOTIgMS4zMkw5LjcyIDhhMi4wMiAyLjAyIDAgMCAwLTEuNzEtMUg1Yy0xLjEgMC0yIC45LTIgMnY2aDEuNXY3aDVWMTEuNjFMMTIuMDMgMTZoMi4ybC43Ny0xLjFWMjJoNHYtNWgxdi0zLjVjMC0uODItLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFc2NhbGF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTIgNmgtMS43bC01IDlIN2MtLjgzIDAtMS41LS42Ny0xLjUtMS41UzYuMTcgMTUgNyAxNWgxLjdsNS05SDE3Yy44MyAwIDEuNS42NyAxLjUgMS41UzE3LjgzIDkgMTcgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFtaWx5UmVzdHJvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA0YzAtMS4xMS44OS0yIDItMnMyIC44OSAyIDItLjg5IDItMiAyLTItLjg5LTItMnptNCAxOHYtNmgyLjVsLTIuNTQtNy42M0EyLjAxIDIuMDEgMCAwIDAgMTguMDYgN2gtLjEyYTIgMiAwIDAgMC0xLjkgMS4zN2wtLjg2IDIuNThjMS4wOC42IDEuODIgMS43MyAxLjgyIDMuMDV2OGgzem0tNy41LTEwLjVjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjVTMTEgOS4xNyAxMSAxMHMuNjcgMS41IDEuNSAxLjV6TTUuNSA2YzEuMTEgMCAyLS44OSAyLTJzLS44OS0yLTItMi0yIC44OS0yIDIgLjg5IDIgMiAyem0yIDE2di03SDlWOWMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnY2aDEuNXY3aDR6bTYuNSAwdi00aDF2LTRjMC0uODItLjY4LTEuNS0xLjUtMS41aC0yYy0uODIgMC0xLjUuNjgtMS41IDEuNXY0aDF2NGgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGZW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDEydi0yaC0yVjdsLTMtMy0yIDItMi0yLTIgMi0yLTItMyAzdjNIM3YyaDJ2MkgzdjJoMnY0aDE0di00aDJ2LTJoLTJ2LTJoMnptLTUtNS4xNyAxIDFWMTBoLTJWNy44M2wuNDEtLjQxLjU5LS41OXptLTQgMCAuNTkuNTkuNDEuNDFWMTBoLTJWNy44M2wuNDEtLjQxLjU5LS41OXpNMTEgMTR2LTJoMnYyaC0yem0yIDJ2MmgtMnYtMmgyek03IDcuODNsMS0xIC41OS41OS40MS40MVYxMEg3VjcuODN6TTcgMTJoMnYySDd2LTJ6bTAgNGgydjJIN3YtMnptMTAgMmgtMnYtMmgydjJ6bTAtNGgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpcmVFeHRpbmd1aXNoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE5aDEwdjFjMCAxLjEtLjkgMi0yIDJIOWMtMS4xIDAtMi0uOS0yLTJ2LTF6bTAtMWgxMHYtNUg3djV6TTE3IDN2NmwtMy4xNS0uNjZjLS4wMSAwLS4wMS4wMS0uMDIuMDIgMS41NS42MiAyLjcyIDEuOTggMy4wNyAzLjY0SDcuMWMuMzQtMS42NiAxLjUyLTMuMDIgMy4wNy0zLjY0LS4zMy0uMjYtLjYtLjU4LS44LS45NUw1IDYuNXYtMWw0LjM3LS45MUM5Ljg3IDMuNjUgMTAuODYgMyAxMiAzYy43IDAgMS4zNC4yNSAxLjg1LjY2TDE3IDN6bS00IDNjLS4wMy0uNTktLjQ1LTEtMS0xcy0xIC40NS0xIDEgLjQ1IDEgMSAxIDEtLjQ1IDEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRml0bmVzc0NlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjU3IDE0Ljg2IDIyIDEzLjQzIDIwLjU3IDEyIDE3IDE1LjU3IDguNDMgNyAxMiAzLjQzIDEwLjU3IDIgOS4xNCAzLjQzIDcuNzEgMiA1LjU3IDQuMTQgNC4xNCAyLjcxIDIuNzEgNC4xNGwxLjQzIDEuNDNMMiA3LjcxbDEuNDMgMS40M0wyIDEwLjU3IDMuNDMgMTIgNyA4LjQzIDE1LjU3IDE3IDEyIDIwLjU3IDEzLjQzIDIybDEuNDMtMS40M0wxNi4yOSAyMmwyLjE0LTIuMTQgMS40MyAxLjQzIDEuNDMtMS40My0xLjQzLTEuNDNMMjIgMTYuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvb2RCYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMyA0IDl2MTJoMTZWOWwtOC02em0uNSA5LjVjMCAuODMtLjY3IDEuNS0xLjUgMS41djRoLTF2LTRjLS44MyAwLTEuNS0uNjctMS41LTEuNXYtM2gxdjNoLjV2LTNoMXYzaC41di0zaDF2M3pNMTUgMThoLTF2LTMuNWgtMXYtM2MwLTEuMS45LTIgMi0yVjE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3VuZGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTJoM0wxMiAzIDIgMTJoM3YzSDN2MmgydjNoMnYtM2g0djNoMnYtM2g0djNoMnYtM2gydi0yaC0ydi0zek03IDE1di00LjgxbDQtMy42VjE1SDd6bTYgMFY2LjU5bDQgMy42VjE1aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGcmVlQnJlYWtmYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDR2MTBjMCAyLjIxIDEuNzkgNCA0IDRoNmMyLjIxIDAgNC0xLjc5IDQtNHYtM2gyYTIgMiAwIDAgMCAyLTJWNWMwLTEuMTEtLjg5LTItMi0yem0wIDVoLTJWNWgydjN6TTQgMTloMTZ2Mkg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNkg5VjRIN3YySDZsLTQgNHY5aDIwdi05bC00LTR6TTQgMTJoMTB2NUg0di01em0xNiA1aC00di02LjE3bDItMiAyIDJWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdvbGZDb3Vyc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTkuNVwiLFwiY3lcIjpcIjE5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1LjkyIDkgMnYxOEg3di0xLjczYy0xLjc5LjM1LTMgLjk5LTMgMS43MyAwIDEuMSAyLjY5IDIgNiAyczYtLjkgNi0yYzAtLjk5LTIuMTYtMS44MS01LTEuOTdWOC45OGw2LTMuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdyYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjBIMnYtMmg1Ljc1QTguMDMyIDguMDMyIDAgMCAwIDIgMTIuMjZjLjY0LS4xNiAxLjMxLS4yNiAyLS4yNiA0LjQyIDAgOCAzLjU4IDggOHptMTAtNy43NGMtLjY0LS4xNi0xLjMxLS4yNi0yLS4yNi0yLjkzIDAtNS40OCAxLjU4LTYuODggMy45M2E5LjgyIDkuODIgMCAwIDEgLjg3IDQuMDdoOHYtMmgtNS43NUE4LjA2MSA4LjA2MSAwIDAgMSAyMiAxMi4yNnptLTYuMzYtMS4yNGExMC4wMyAxMC4wMyAwIDAgMSA0LjA5LTVDMTUuNDQgNi4xNiAxMiA5LjY3IDEyIDE0di4wMmMuOTUtMS4yNyAyLjItMi4zIDMuNjQtM3ptLTQuMjItMi4xN0E4LjUyNyA4LjUyNyAwIDAgMCA2LjcgNEM4LjE0IDUuODYgOSA4LjE4IDkgMTAuNzFjMCAuMjEtLjAzLjQxLS4wNC42MS40My4yNC44My41MiAxLjIyLjgyYTkuOTEgOS45MSAwIDAgMSAxLjI0LTMuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvbGlkYXlWaWxsYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMjBWOC4zNUwxMy42NSA0aC0yLjgzTDE2IDkuMThWMjBoMnptNCAwVjYuNjlMMTkuMzEgNGgtMi44M0wyMCA3LjUyVjIwaDJ6TTggNGwtNiA2djEwaDV2LTVoMnY1aDVWMTBMOCA0em0xIDlIN3YtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvdFR1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiN1wiLFwiY3lcIjpcIjZcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMTUgMTJjLS4zMS0uMjItLjU5LS40Ni0uODItLjcybC0xLjQtMS41NWMtLjE5LS4yMS0uNDMtLjM4LS42OS0uNS0uMjktLjE0LS42Mi0uMjMtLjk2LS4yM2gtLjAzQzYuMDEgOSA1IDEwLjAxIDUgMTEuMjVWMTJIMnY4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJ2LThIMTEuMTV6TTcgMjBINXYtNmgydjZ6bTQgMEg5di02aDJ2NnptNCAwaC0ydi02aDJ2NnptNCAwaC0ydi02aDJ2NnptLS4zNS0xNC4xNC0uMDctLjA3Yy0uNTctLjYyLS44Mi0xLjQxLS42Ny0yLjJMMTggM2gtMS44OWwtLjA2LjQzYy0uMiAxLjM2LjI3IDIuNzEgMS4zIDMuNzJsLjA3LjA2Yy41Ny42Mi44MiAxLjQxLjY3IDIuMmwtLjExLjU5aDEuOTFsLjA2LS40M2MuMjEtMS4zNi0uMjctMi43MS0xLjMtMy43MXptLTQgMC0uMDctLjA3Yy0uNTctLjYyLS44Mi0xLjQxLS42Ny0yLjJMMTQgM2gtMS44OWwtLjA2LjQzYy0uMiAxLjM2LjI3IDIuNzEgMS4zIDMuNzJsLjA3LjA2Yy41Ny42Mi44MiAxLjQxLjY3IDIuMmwtLjExLjU5aDEuOTFsLjA2LS40M2MuMjEtMS4zNi0uMjctMi43MS0xLjMtMy43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG91c2VTaWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMmgzTDEyIDMgMiAxMmgzdjhoMnYtMmgxMHYyaDJ2LTh6TTcuMjEgMTBoOS41OGwuMjEuMTlWMTJIN3YtMS44MWwuMjEtLjE5em03LjM2LTJIOS40M0wxMiA1LjY5IDE0LjU3IDh6TTcgMTZ2LTJoMTB2Mkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3VzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDkuM1Y0aC0zdjIuNkwxMiAzIDIgMTJoM3Y4aDV2LTZoNHY2aDV2LThoM2wtMy0yLjd6bS05IC43YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvdXNlYm9hdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE2Yy0xLjk1IDAtMi4xIDEtMy4zNCAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxdjJjMS45IDAgMi4xNy0xIDMuMzUtMSAxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOC0xIDMuMzItMXMxLjM3IDEgMy4zMiAxYzEuOTEgMCAyLjE0LTEgMy4zMy0xIDEuMTggMCAxLjQ1IDEgMy4zNSAxdi0yYy0xLjI0IDAtMS4zOC0xLTMuMzMtMS0xLjkxIDAtMi4xNCAxLTMuMzMgMS0xLjI0IDAtMS4zOS0xLTMuMzQtMXptOC4zNC00LjY2LTEuMzcgMS4zN2MtLjE5LjE4LS40NS4yOS0uNzEuMjlIMTdWOS42NWwxLjMyLjk3TDE5LjUgOSAxMiAzLjUgNC41IDlsMS4xOCAxLjYxTDcgOS42NVYxM0g1Ljc0Yy0uMjcgMC0uNTItLjExLS43MS0uMjlsLTEuMzctMS4zNy0xLjQxIDEuNDEgMS4zNyAxLjM3Yy41Ni41NiAxLjMzLjg4IDIuMTIuODhoMTIuNTFjLjggMCAxLjU2LS4zMiAyLjEyLS44OGwxLjM3LTEuMzctMS40LTEuNDF6TTEzIDEzaC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSXJvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDZjLTEuNjYgMC0zIDEuMzQtMyAzdjRjMCAuNTUtLjQ1IDEtMSAxdi00YzAtMS42Ni0xLjM0LTMtMy0zaC00Yy0xLjY2IDAtMyAxLjM0LTMgM2gyYzAtLjU1LjQ1LTEgMS0xaDRjLjU1IDAgMSAuNDUgMSAxdjFINmMtMi4yMSAwLTQgMS43OS00IDR2M2gxNXYtMmMxLjY2IDAgMy0xLjM0IDMtM1Y5YzAtLjU1LjQ1LTEgMS0xaDFWNmgtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2l0Y2hlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDlWNGMwLTEuMS0uOS0yLTItMkg2Yy0xLjEgMC0yIC45LTIgMnY1aDE2ek04IDVoMnYzSDhWNXptLTQgNnY5YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTlINHptNiA2SDh2LTVoMnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNZWV0aW5nUm9vbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNnYxNUgzdi0yaDJWM2g5djFoNXYxNWgydjJoLTRWNmgtM3ptLTQgNXYyaDJ2LTJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1pY3Jvd2F2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuOCAxMC42MSA1LjM3IDkuMTlDNS43MyA4Ljc5IDYuNTkgOCA3Ljc1IDhjLjggMCAxLjM5LjM5IDEuODEuNjcuMzEuMjEuNTEuMzMuNjkuMzMuMzcgMCAuOC0uNDEuOTUtLjYxbDEuNDIgMS40MmMtLjM2LjQtMS4yMiAxLjE5LTIuMzcgMS4xOS0uNzkgMC0xLjM3LS4zOC0xLjc5LS42Ni0uMzMtLjIyLS41Mi0uMzQtLjcxLS4zNC0uMzcgMC0uOC40MS0uOTUuNjF6TTcuNzUgMTVjLjE5IDAgLjM4LjEyLjcxLjM0LjQyLjI4IDEgLjY2IDEuNzkuNjYgMS4xNiAwIDIuMDEtLjc5IDIuMzctMS4xOWwtMS40Mi0xLjQyYy0uMTUuMi0uNTkuNjEtLjk1LjYxLS4xOCAwLS4zOC0uMTItLjY5LS4zMy0uNDItLjI4LTEuMDEtLjY3LTEuODEtLjY3LTEuMTYgMC0yLjAyLjc5LTIuMzggMS4xOWwxLjQyIDEuNDJjLjE2LS4yLjU5LS42MS45Ni0uNjF6TTIyIDZ2MTJjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yaDE2YzEuMSAwIDIgLjkgMiAyem0tOCAwSDR2MTJoMTBWNnptNSAxMGMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMSAuNDUgMSAxIDEgMS0uNDUgMS0xem0wLTRjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDEgLjQ1IDEgMSAxIDEtLjQ1IDEtMXptMC01aC0ydjJoMlY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROaWdodFNoZWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDQgOXYxMmgxNlY5bC04LTZ6bS0yLjI1IDkuNWExLjI1IDEuMjUgMCAxIDEgMCAyLjUgMS4yNSAxLjI1IDAgMCAxIDAtMi41ek0xNyAxOGgtMXYtMS41SDhWMThIN3YtN2gxdjQuNWgzLjVWMTJIMTVjMS4xIDAgMiAuOSAyIDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9CYWNrcGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjJsMi43NiAyLjc2QzQuMDYgNy4zMSA0IDcuNjQgNCA4djEyYzAgMS4xLjkgMiAyIDJoMTJjLjM0IDAgLjY1LS4wOS45My0uMjRsLjg1Ljg1IDEuNDEtMS40MnpNNiAxNHYtMmgzLjE3bDIgMkg2em04LjgzLTJMNi45OCA0LjE1Yy4wMSAwIC4wMS0uMDEuMDItLjAxVjJoM3YyaDRWMmgzdjIuMTRjMS43Mi40NSAzIDIgMyAzLjg2djkuMTdsLTItMlYxMmgtMy4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9DZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOC44MyA2LTMuNy0zLjdDNS40MiAxLjU1IDYuMTUgMSA3IDFsMTAgLjAxYzEuMSAwIDIgLjg5IDIgMS45OXYxMy4xN2wtMi0yVjZIOC44M3ptMTAuOTUgMTYuNjEtLjkxLS45MWMtLjI5Ljc1LTEuMDIgMS4zLTEuODcgMS4zSDdjLTEuMSAwLTItLjktMi0yVjcuODNMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNCAxLjQyek0xNS4xNyAxOCA3IDkuODNWMThoOC4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9Ecmlua3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjgzIDNIMjF2MmwtNi4yIDYuOTdMOS44MyA3aDYuNzRsMS43OC0ySDcuODNsLTItMnptMTMuOTUgMTkuNjFMMTggMjAuODNWMjFINnYtMmg1di01bC0xLjM3LTEuNTQtOC4yNC04LjI0TDIuOCAyLjgxIDMgM2wxOC4xOSAxOC4xOS0xLjQxIDEuNDJ6TTE2LjE3IDE5IDEzIDE1LjgzVjE5aDMuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vRmxhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy45MyAxMy45MyAyLjQ1IDIuNDUgMS4wNCAzLjg3bDUuMyA1LjMtLjIuMjNIMy42Yy0uODggMC0xLjYuNzItMS42IDEuNnY5LjRjMCAuODguNzIgMS42IDEuNiAxLjZoMTIuOGMuNzUgMCAxLjM4LS41MiAxLjU1LTEuMjJsMi4xOCAyLjE4IDEuNDEtMS40MUwxOCAxOGwtNC4wNy00LjA3ek0xMCAyMGMtMi4yMSAwLTQtMS43OS00LTQgMC0xLjk1IDEuNC0zLjU3IDMuMjUtMy45MmwxLjU3IDEuNTdjLS4yNi0uMDktLjUzLS4xNS0uODItLjE1YTIuNSAyLjUgMCAwIDAgMCA1IDIuNSAyLjUgMCAwIDAgMi41LTIuNWMwLS4yOS0uMDYtLjU2LS4xNS0uODJsMS41NyAxLjU3QTMuOTkzIDMuOTkzIDAgMCAxIDEwIDIwem04LTQuODNMMTAuODMgOGgxLjc1bDEuMjggMS40aDIuNTRjLjg4IDAgMS42LjcyIDEuNiAxLjZ2NC4xN3ptMi40LTkuNTdIMjJMMTkgMTFWN2gtMVYyaDRsLTEuNiAzLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vRm9vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjM1IDguNTIgMTEgNWg1VjFoMnY0aDVsLTEuMzggMTMuNzlMMTEuMzUgOC41MnpNMSAyMXYxYzAgLjU1LjQ1IDEgMSAxaDEzYy41NSAwIDEtLjQ1IDEtMXYtMUgxem0yMC45LjlMMi4xIDIuMS42OSAzLjUxbDUuNyA1LjdDMy4yOCA5Ljg3IDEgMTEuOTkgMSAxNWgxMS4xN2wyIDJIMXYyaDE1di0uMTdsNC40OSA0LjQ5IDEuNDEtMS40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9NZWV0aW5nUm9vbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTFoLTF2Mmgydi0xbDkuNzMgOS43M0wyMC40NiAyMyAxNCAxNi41NFYyMUgzdi0yaDJWNy41NGwtNC00IDEuMjctMS4yN0wxMSAxMXptMyAuNDlMNS41MSAzSDE0djFoNXYxMi40OWwtMi0yVjZoLTN2NS40OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9QaG90b2dyYXBoeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjk0IDguMTIgNy40OCA0LjY2IDkgM2g2bDEuODMgMkgyMGMxLjEgMCAyIC45IDIgMnYxMmMwIC4wNS0uMDEuMS0uMDIuMTZsLTUuMS01LjFjLjA4LS4zNS4xMi0uNy4xMi0xLjA2IDAtMi43Ni0yLjI0LTUtNS01LS4zNiAwLS43MS4wNC0xLjA2LjEyem05LjU1IDE1LjE5TDE4LjE3IDIxSDRjLTEuMSAwLTItLjktMi0yVjdjMC0uNTkuMjctMS4xMi42OC0xLjQ5bC0yLTJMMi4xIDIuMWwxOS44IDE5LjgtMS40MSAxLjQxem0tNi01Ljk5LTEuNS0xLjVjLS4zMi4xLS42NC4xOC0uOTkuMTgtMS42NiAwLTMtMS4zNC0zLTMgMC0uMzUuMDgtLjY3LjE5LS45OGwtMS41LTEuNUE0Ljc0IDQuNzQgMCAwIDAgNyAxM2MwIDIuNzYgMi4yNCA1IDUgNSAuOTEgMCAxLjc2LS4yNSAyLjQ5LS42OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9TdHJvbGxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMThjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yek0xOC42NSAzYy0xLjY2IDAtMi41NCAxLjI3LTMuMTggMi4wM2wtMy41IDQuMTFMMTcgMTQuMTd2LTcuOWMuNTgtLjY4Ljk3LTEuMjcgMS42NS0xLjI3Ljc3IDAgMS4zNS42NiAxLjM1IDEuNDhWN2gydi0uNTJDMjIgNC41NiAyMC41MiAzIDE4LjY1IDN6bS03Ljk4IDcuNjdMMi44MSAyLjgxIDEuMzkgNC4yMmw3Ljk3IDcuOTctMi42NiAzLjEyYy0uNTUuNjUtLjA5IDEuNjUuNzYgMS42NWg2LjY2bDEuMTcgMS4xN0MxNC41NCAxOC40MiAxNCAxOS4xNCAxNCAyMGMwIDEuMS45IDIgMiAyIC44NiAwIDEuNTgtLjU0IDEuODctMS4zbDEuOTEgMS45MSAxLjQxLTEuNDEtNC44LTQuOC01LjcyLTUuNzN6bTIuOC01LjY0Yy4yNy0uMzIuNTgtLjcyLjk4LTEuMDlhOS4zNDcgOS4zNDcgMCAwIDAtNy44MS0uMTNsNC4yNSA0LjI1IDIuNTgtMy4wM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3RoZXJIb3VzZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDEgMTEuNGwxLjIxIDEuNTlMNCAxMS42MlYyMWgxNnYtOS4zOGwxLjc5IDEuMzZMMjMgMTEuNCAxMiAzek04IDE1Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTQgMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem00IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG9vbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDIxYy0xLjExIDAtMS43My0uMzctMi4xOC0uNjQtLjM3LS4yMi0uNi0uMzYtMS4xNS0uMzYtLjU2IDAtLjc4LjEzLTEuMTUuMzYtLjQ2LjI3LTEuMDcuNjQtMi4xOC42NHMtMS43My0uMzctMi4xOC0uNjRjLS4zNy0uMjItLjYtLjM2LTEuMTUtLjM2LS41NiAwLS43OC4xMy0xLjE1LjM2LS40Ni4yNy0xLjA4LjY0LTIuMTkuNjQtMS4xMSAwLTEuNzMtLjM3LTIuMTgtLjY0LS4zNy0uMjMtLjYtLjM2LTEuMTUtLjM2cy0uNzguMTMtMS4xNS4zNmMtLjQ2LjI3LTEuMDguNjQtMi4xOS42NHYtMmMuNTYgMCAuNzgtLjEzIDEuMTUtLjM2LjQ2LS4yNyAxLjA4LS42NCAyLjE5LS42NHMxLjczLjM3IDIuMTguNjRjLjM3LjIzLjU5LjM2IDEuMTUuMzYuNTYgMCAuNzgtLjEzIDEuMTUtLjM2LjQ2LS4yNyAxLjA4LS42NCAyLjE5LS42NCAxLjExIDAgMS43My4zNyAyLjE4LjY0LjM3LjIyLjYuMzYgMS4xNS4zNnMuNzgtLjEzIDEuMTUtLjM2Yy40NS0uMjcgMS4wNy0uNjQgMi4xOC0uNjRzMS43My4zNyAyLjE4LjY0Yy4zNy4yMy41OS4zNiAxLjE1LjM2djJ6bTAtNC41Yy0xLjExIDAtMS43My0uMzctMi4xOC0uNjQtLjM3LS4yMi0uNi0uMzYtMS4xNS0uMzYtLjU2IDAtLjc4LjEzLTEuMTUuMzYtLjQ1LjI3LTEuMDcuNjQtMi4xOC42NHMtMS43My0uMzctMi4xOC0uNjRjLS4zNy0uMjItLjYtLjM2LTEuMTUtLjM2LS41NiAwLS43OC4xMy0xLjE1LjM2LS40NS4yNy0xLjA3LjY0LTIuMTguNjRzLTEuNzMtLjM3LTIuMTgtLjY0Yy0uMzctLjIyLS42LS4zNi0xLjE1LS4zNnMtLjc4LjEzLTEuMTUuMzZjLS40Ny4yNy0xLjA5LjY0LTIuMi42NHYtMmMuNTYgMCAuNzgtLjEzIDEuMTUtLjM2LjQ1LS4yNyAxLjA3LS42NCAyLjE4LS42NHMxLjczLjM3IDIuMTguNjRjLjM3LjIyLjYuMzYgMS4xNS4zNi41NiAwIC43OC0uMTMgMS4xNS0uMzYuNDUtLjI3IDEuMDctLjY0IDIuMTgtLjY0czEuNzMuMzcgMi4xOC42NGMuMzcuMjIuNi4zNiAxLjE1LjM2cy43OC0uMTMgMS4xNS0uMzZjLjQ1LS4yNyAxLjA3LS42NCAyLjE4LS42NHMxLjczLjM3IDIuMTguNjRjLjM3LjIyLjYuMzYgMS4xNS4zNnYyek04LjY3IDEyYy41NiAwIC43OC0uMTMgMS4xNS0uMzYuNDYtLjI3IDEuMDgtLjY0IDIuMTktLjY0IDEuMTEgMCAxLjczLjM3IDIuMTguNjQuMzcuMjIuNi4zNiAxLjE1LjM2cy43OC0uMTMgMS4xNS0uMzZjLjEyLS4wNy4yNi0uMTUuNDEtLjIzTDEwLjQ4IDVDOC45MyAzLjQ1IDcuNSAyLjk5IDUgM3YyLjVjMS44Mi0uMDEgMi44OS4zOSA0IDEuNWwxIDEtMy4yNSAzLjI1Yy4zMS4xMi41Ni4yNy43Ny4zOS4zNy4yMy41OS4zNiAxLjE1LjM2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2LjVcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSaWNlQm93bCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwUzIgNi40OCAyIDEyYzAgMy42OSAyLjQ3IDYuODYgNiA4LjI1VjIyaDh2LTEuNzVjMy41My0xLjM5IDYtNC41NiA2LTguMjV6bS0yIDBoLTRWNS4wOGMyLjM5IDEuMzkgNCAzLjk3IDQgNi45MnptLTYtNy43NFYxMmgtNFY0LjI2Yy42NC0uMTYgMS4zMS0uMjYgMi0uMjZzMS4zNi4xIDIgLjI2ek00IDEyYzAtMi45NSAxLjYxLTUuNTMgNC02LjkyVjEySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvb2ZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxOGgtMnYtMmgydjJ6bTItNEg5djZoNnYtNnptNC00LjdWNGgtM3YyLjZMMTIgMyAyIDEyaDNsNy02LjMxTDE5IDEyaDNsLTMtMi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb29tUHJlZmVyZW5jZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMS4yNlY2aDN2NGgyVjRoLTVWM0g1djE2SDN2Mmg5LjI2QTYuOTYzIDYuOTYzIDAgMCAxIDExIDE3YzAtMi4zOCAxLjE5LTQuNDcgMy01Ljc0ek0xMCAxMWgydjJoLTJ2LTJ6bTExLjY5IDUuMzcgMS4xNC0xLTEtMS43My0xLjQ1LjQ5Yy0uMzItLjI3LS42OC0uNDgtMS4wOC0uNjNMMTkgMTJoLTJsLS4zIDEuNDljLS40LjE1LS43Ni4zNi0xLjA4LjYzbC0xLjQ1LS40OS0xIDEuNzMgMS4xNCAxYy0uMDguNS0uMDguNzYgMCAxLjI2bC0xLjE0IDEgMSAxLjczIDEuNDUtLjQ5Yy4zMi4yNy42OC40OCAxLjA4LjYzTDE3IDIyaDJsLjMtMS40OWMuNC0uMTUuNzYtLjM2IDEuMDgtLjYzbDEuNDUuNDkgMS0xLjczLTEuMTQtMWMuMDgtLjUxLjA4LS43NyAwLTEuMjd6TTE4IDE5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm9vbVNlcnZpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTdoMjB2Mkgyem0xMS44NC05LjIxQTIuMDA2IDIuMDA2IDAgMCAwIDEyIDVhMi4wMDYgMi4wMDYgMCAwIDAtMS44NCAyLjc5QzYuMjUgOC42IDMuMjcgMTEuOTMgMyAxNmgxOGMtLjI3LTQuMDctMy4yNS03LjQtNy4xNi04LjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSdkhvb2t1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTE0IDExaDR2M2gtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTd2LTZjMC0xLjEtLjktMi0yLTJIN1Y3bC0zIDMgMyAzdi0yaDR2M0g0djNjMCAxLjEuOSAyIDIgMmgyYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoOHYtMmgtMnptLTkgM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem03LTZoLTR2LTNoNHYzek0xNyAydjJIOXYyaDh2MmwzLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNtb2tlRnJlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIgNiA2Ljk5IDdIMnYzaDkuOTlsNyA3IDEuMjYtMS4yNS0xNy0xN3ptMTguNSA3SDIydjNoLTEuNXpNMTggMTNoMS41djNIMTh6bS44NS04LjEyYy42Mi0uNjEgMS0xLjQ1IDEtMi4zOGgtMS41YzAgMS4wMi0uODMgMS44NS0xLjg1IDEuODV2MS41YzIuMjQgMCA0IDEuODMgNCA0LjA3VjEySDIyVjkuOTJjMC0yLjIzLTEuMjgtNC4xNS0zLjE1LTUuMDR6TTE0LjUgOC43aDEuNTNjMS4wNSAwIDEuOTcuNzQgMS45NyAyLjA1VjEyaDEuNXYtMS41OWMwLTEuOC0xLjYtMy4xNi0zLjQ3LTMuMTZIMTQuNWMtMS4wMiAwLTEuODUtLjk4LTEuODUtMnMuODMtMS43NSAxLjg1LTEuNzVWMmEzLjM1IDMuMzUgMCAwIDAgMCA2Ljd6bTIuNSA3LjIzVjEzaC0yLjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTbW9raW5nUm9vbXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE2aDE1djNIMnptMTguNSAwSDIydjNoLTEuNXpNMTggMTZoMS41djNIMTh6bS44NS04LjI3Yy42Mi0uNjEgMS0xLjQ1IDEtMi4zOEMxOS44NSAzLjUgMTguMzUgMiAxNi41IDJ2MS41YzEuMDIgMCAxLjg1LjgzIDEuODUgMS44NVMxNy41MiA3LjIgMTYuNSA3LjJ2MS41YzIuMjQgMCA0IDEuODMgNCA0LjA3VjE1SDIydi0yLjI0YzAtMi4yMi0xLjI4LTQuMTQtMy4xNS01LjAzem0tMi44MiAyLjQ3SDE0LjVjLTEuMDIgMC0xLjg1LS45OC0xLjg1LTJzLjgzLTEuNzUgMS44NS0xLjc1di0xLjVhMy4zNSAzLjM1IDAgMCAwIDAgNi43aDEuNTNjMS4wNSAwIDEuOTcuNzQgMS45NyAyLjA1VjE1aDEuNXYtMS42NGMwLTEuODEtMS42LTMuMTYtMy40Ny0zLjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTb2FwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOS4xMiA1LTcuMTggNi43OWMtLjYuNTYtLjk0IDEuMzUtLjk0IDIuMThWMjBjMCAxLjY2IDEuMzQgMyAzIDNoMTMuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDcuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDguNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDYuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDguODZjLjY0LTEuMTEgMS40OC0yLjU4IDEuNDktMi42MWExLjA2NSAxLjA2NSAwIDAgMC0uMTItMS4yM0MxMC4yMiA2LjEyIDkuMTIgNSA5LjEyIDV6TTE0IDYuMjVjLjQxIDAgLjc1LjM0Ljc1Ljc1cy0uMzQuNzUtLjc1Ljc1LS43NS0uMzQtLjc1LS43NS4zNC0uNzUuNzUtLjc1bTAtMS41Yy0xLjI0IDAtMi4yNSAxLjAxLTIuMjUgMi4yNVMxMi43NiA5LjI1IDE0IDkuMjUgMTYuMjUgOC4yNCAxNi4yNSA3IDE1LjI0IDQuNzUgMTQgNC43NXptNS43NS43NWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjUtLjUtLjIyLS41LS41LjIyLS41LjUtLjVtMC0xLjVjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yek0xNi41IDFjLS44MyAwLTEuNS42Ny0xLjUgMS41UzE1LjY3IDQgMTYuNSA0IDE4IDMuMzMgMTggMi41IDE3LjMzIDEgMTYuNSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTEzLjk3IDIxLjQ5Yy0uNjMuMjMtMS4yOS40LTEuOTcuNTEuNjgtLjEyIDEuMzMtLjI5IDEuOTctLjUxek0xMiAyMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41NSAxMnptMTAuNDMtMS42MXpNMTUuNDkgOS42M2MtLjE4LTIuNzktMS4zMS01LjUxLTMuNDMtNy42M2ExMi4xODggMTIuMTg4IDAgMCAwLTMuNTUgNy42M2MxLjI4LjY4IDIuNDYgMS41NiAzLjQ5IDIuNjMgMS4wMy0xLjA2IDIuMjEtMS45NCAzLjQ5LTIuNjN6bS02LjUgMi42NWMtLjE0LS4xLS4zLS4xOS0uNDUtLjI5LjE1LjExLjMxLjE5LjQ1LjI5em02LjQyLS4yNWMtLjEzLjA5LS4yNy4xNi0uNC4yNi4xMy0uMS4yNy0uMTcuNC0uMjZ6TTEyIDE1LjQ1QzkuODUgMTIuMTcgNi4xOCAxMCAyIDEwYzAgNS4zMiAzLjM2IDkuODIgOC4wMyAxMS40OS42My4yMyAxLjI5LjQgMS45Ny41MS42OC0uMTIgMS4zMy0uMjkgMS45Ny0uNTFDMTguNjQgMTkuODIgMjIgMTUuMzIgMjIgMTBjLTQuMTggMC03Ljg1IDIuMTctMTAgNS40NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOWgtMS41NmMuMzUtLjU5LjU2LTEuMjcuNTYtMiAwLTIuMjEtMS43OS00LTQtNC0uMzQgMC0uNjYuMDUtLjk4LjEzQTQuNzA3IDQuNzA3IDAgMCAwIDEwIDIuMDJjLTEuODkgMC0zLjUxIDEuMTEtNC4yNyAyLjcxQzQuMTUgNS4yNiAzIDYuNzQgMyA4LjVjMCAxLjg2IDEuMjggMy40MSAzIDMuODZWMjFoMTF2LTJoMmMxLjEgMCAyLS45IDItMnYtNmMwLTEuMS0uOS0yLTItMnpNNyAxMC41Yy0xLjEgMC0yLS45LTItMiAwLS44NS41NS0xLjYgMS4zNy0xLjg4bC44LS4yNy4zNi0uNzZDOCA0LjYyIDguOTQgNC4wMiAxMCA0LjAyYy43OSAwIDEuMzkuMzUgMS43NC42NWwuNzguNjVTMTMuMTYgNSAxMy45OSA1YzEuMSAwIDIgLjkgMiAyaC0zQzkuNjcgNyA5LjE1IDEwLjUgNyAxMC41ek0xOSAxN2gtMnYtNmgydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0YWlycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMSA1aC0yLjQydjMuMzNIMTN2My4zM2gtMi41OFYxOEg2di0yaDIuNDJ2LTMuMzNIMTFWOS4zM2gyLjU4VjZIMTh2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RvcmVmcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjkgOC44OS0xLjA1LTQuMzdjLS4yMi0uOS0xLTEuNTItMS45MS0xLjUySDUuMDVjLS45IDAtMS42OS42My0xLjkgMS41MkwyLjEgOC44OWMtLjI0IDEuMDItLjAyIDIuMDYuNjIgMi44OC4wOC4xMS4xOS4xOS4yOC4yOVYxOWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi02Ljk0Yy4wOS0uMDkuMi0uMTguMjgtLjI4LjY0LS44Mi44Ny0xLjg3LjYyLTIuODl6bS0yLjk5LTMuOSAxLjA1IDQuMzdjLjEuNDIuMDEuODQtLjI1IDEuMTctLjE0LjE4LS40NC40Ny0uOTQuNDctLjYxIDAtMS4xNC0uNDktMS4yMS0xLjE0TDE2Ljk4IDVsMS45My0uMDF6TTEzIDVoMS45NmwuNTQgNC41MmMuMDUuMzktLjA3Ljc4LS4zMyAxLjA3LS4yMi4yNi0uNTQuNDEtLjk1LjQxLS42NyAwLTEuMjItLjU5LTEuMjItMS4zMVY1ek04LjQ5IDkuNTIgOS4wNCA1SDExdjQuNjljMCAuNzItLjU1IDEuMzEtMS4yOSAxLjMxLS4zNCAwLS42NS0uMTUtLjg5LS40MWExLjQyIDEuNDIgMCAwIDEtLjMzLTEuMDd6bS00LjQ1LS4xNkw1LjA1IDVoMS45N2wtLjU4IDQuODZjLS4wOC42NS0uNiAxLjE0LTEuMjEgMS4xNC0uNDkgMC0uOC0uMjktLjkzLS40Ny0uMjctLjMyLS4zNi0uNzUtLjI2LTEuMTd6TTUgMTl2LTYuMDNjLjA4LjAxLjE1LjAzLjIzLjAzLjg3IDAgMS42Ni0uMzYgMi4yNC0uOTUuNi42IDEuNC45NSAyLjMxLjk1Ljg3IDAgMS42NS0uMzYgMi4yMy0uOTMuNTkuNTcgMS4zOS45MyAyLjI5LjkzLjg0IDAgMS42NC0uMzUgMi4yNC0uOTUuNTguNTkgMS4zNy45NSAyLjI0Ljk1LjA4IDAgLjE1LS4wMi4yMy0uMDNWMTlINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3Ryb2xsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2XCIsXCJjeVwiOlwiMjBcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMjBcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgN3YtLjUyQzIyIDQuNTYgMjAuNTIgMyAxOC42NSAzYy0xLjY2IDAtMi41NCAxLjI3LTMuMTggMi4wM2wtOC44IDEwLjMyQzYuMTIgMTYgNi41OCAxNyA3LjQzIDE3SDE1YzEuMSAwIDItLjkgMi0yVjYuMjdjLjU4LS42OC45Ny0xLjI3IDEuNjUtMS4yNy43NyAwIDEuMzUuNjYgMS4zNSAxLjQ4VjdoMnpNMTQuMyA0LjFhOC45NjIgOC45NjIgMCAwIDAtOS41OC42Mmw0Ljg5IDQuODlMMTQuMyA0LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhcGFzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTBWMWgtOHY5YzAgMS44NiAxLjI4IDMuNDEgMyAzLjg2VjIxaC0ydjJoNnYtMmgtMnYtNy4xNGMxLjcyLS40NSAzLTIgMy0zLjg2em0tMi03djNoLTRWM2g0em0tNy41IDguNUEyLjUgMi41IDAgMCAxIDEwIDE0SDh2OUg2di05SDRhMi41IDIuNSAwIDAgMSAwLTVoMlY4SDRhMi41IDIuNSAwIDAgMSAwLTVoMlYxaDJ2MmgyYTIuNSAyLjUgMCAwIDEgMCA1SDh2MWgyYTIuNSAyLjUgMCAwIDEgMi41IDIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNGgydjJoLTJWNHptLTEgM2gydjJoLTJWN3ptLTItM2gydjJoLTJWNHptNyA1aC0yVjdoMnYyem0xLTNoLTJWNGgydjJ6bTIgM2gtMlY3aDJ2MnptMS0zaC0yVjRoMnYyem0tNy4zOCA4LjM4TDEyLjEgMTYuOWMtMi41LTEuNDMtNC41Ny0zLjUtNi02bDIuNTItMi41MmMuMjQtLjI0LjM0LS41OC4yOC0uOUw4LjE2IDMuOGMtLjA5LS40Ni0uNS0uOC0uOTgtLjhIMy4wM2MtLjU2IDAtMS4wMy40Ny0xIDEuMDMuMTcgMi44OSAxLjAyIDUuNiAyLjQgNy45NyAxLjU4IDIuNzMgMy44NSA0Ljk5IDYuNTcgNi41NyAyLjM3IDEuMzcgNS4wOCAyLjIzIDcuOTcgMi40LjU2LjAzIDEuMDMtLjQ0IDEuMDMtMXYtNC4xNWMwLS40OC0uMzQtLjg5LS44LS45OGwtMy42Ny0uNzNhLjk5Ljk5IDAgMCAwLS45MS4yN3pNMTQgMTBoMnYyaC0ydi0yem0tMyAwaDJ2MmgtMnYtMnptOCAyaC0ydi0yaDJ2MnptMyAwaC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVW1icmVsbGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDYuOTIgMTMgNS43N1YzLjRjMC0uMjYuMjItLjQ4LjUtLjQ4cy41LjIxLjUuNDhWNGgydi0uNkMxNiAyLjA3IDE0Ljg4IDEgMTMuNSAxUzExIDIuMDcgMTEgMy40djIuMzdMOS41IDYuOTIgNiA2LjA3bDUuMDUgMTUuMjVjLjE1LjQ1LjU1LjY4Ljk1LjY4cy44LS4yMy45NS0uNjlMMTggNi4wN2wtMy41Ljg1ek0xMy4yOCA4LjVsLjc2LjU4LjkyLS4yM0wxMyAxNC44VjguMjlsLjI4LjIxem0tMy4zMi41OS43Ni0uNTguMjgtLjIydjYuNTFMOS4wMyA4Ljg2bC45My4yM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmFwZUZyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE2LjVoMWMxLjMzIDAgMi43MS0uMTggNC0uNXYzYy0xLjI5LS4zMi0yLjY3LS41LTQtLjVIMnYtMnpNMTYuMTcgMTlIOHYtM2g1LjE3TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQxIDEuNDEtMy42LTMuNnptMi42Ni0zSDIydjNoLS4xN2wtMy0zek0xMSAxNy41YzAtLjI4LS4yMi0uNS0uNS0uNXMtLjUuMjItLjUuNS4yMi41LjUuNS41LS4yMi41LS41em0xMS00Ljc0VjE1aC0xLjV2LTIuMjNjMC0yLjI0LTEuNzYtNC4wNy00LTQuMDdWNy4yYzEuMDIgMCAxLjg1LS44MyAxLjg1LTEuODVTMTcuNTIgMy41IDE2LjUgMy41VjJjMS44NSAwIDMuMzUgMS41IDMuMzUgMy4zNSAwIC45My0uMzggMS43Ny0xIDIuMzggMS44Ny44OSAzLjE1IDIuODEgMy4xNSA1LjAzek0xMS4xNSA4LjMyVjguM2MwLTEuODUgMS41LTMuMzUgMy4zNS0zLjM1djEuNWMtMS4wMiAwLTEuODUuNzMtMS44NSAxLjc1cy44MyAyIDEuODUgMmgxLjUzYzEuODcgMCAzLjQ3IDEuMzUgMy40NyAzLjE2VjE1SDE4di0xLjNjMC0xLjMxLS45Mi0yLjA1LTEuOTctMi4wNWgtMS41NWwtMy4zMy0zLjMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWYXBpbmdSb29tcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTYuNWgxYzEuMzMgMCAyLjcxLS4xOCA0LS41djNjLTEuMjktLjMyLTIuNjctLjUtNC0uNUgydi0yem0yMC0uNXYzSDh2LTNoMTR6bS0xMSAxLjVjMC0uMjgtLjIyLS41LS41LS41cy0uNS4yMi0uNS41LjIyLjUuNS41LjUtLjIyLjUtLjV6bTExLTQuNzRWMTVoLTEuNXYtMi4yM2MwLTIuMjQtMS43Ni00LjA3LTQtNC4wN1Y3LjJjMS4wMiAwIDEuODUtLjgzIDEuODUtMS44NVMxNy41MiAzLjUgMTYuNSAzLjVWMmMxLjg1IDAgMy4zNSAxLjUgMy4zNSAzLjM1IDAgLjkzLS4zOCAxLjc3LTEgMi4zOCAxLjg3Ljg5IDMuMTUgMi44MSAzLjE1IDUuMDN6bS0yLjUuNlYxNUgxOHYtMS4zYzAtMS4zMS0uOTItMi4wNS0xLjk3LTIuMDVIMTQuNWEzLjM1IDMuMzUgMCAwIDEgMC02Ljd2MS41Yy0xLjAyIDAtMS44NS43My0xLjg1IDEuNzVzLjgzIDIgMS44NSAyaDEuNTNjMS44NyAwIDMuNDcgMS4zNSAzLjQ3IDMuMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpbGxhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyMUgzVjhsMTMtNXY3SDd2MTF6bTEyLTExYy0xLjEgMC0yIC45LTIgMkg5djloNXYtNWgydjVoNXYtOWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2FzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgOEEyLjUgMi41IDAgMCAwIDIxIDUuNUMyMSAzLjgzIDE4LjUgMSAxOC41IDFTMTYgMy44MyAxNiA1LjVBMi41IDIuNSAwIDAgMCAxOC41IDh6bS01IDFjLjgzIDAgMS41LS42NyAxLjUtMS41IDAtLjg0LTEuNS0yLjUtMS41LTIuNVMxMiA2LjY2IDEyIDcuNWMwIC44My42NyAxLjUgMS41IDEuNXpNOS4xMiA1bC03LjE4IDYuNzljLS42LjU2LS45NCAxLjM1LS45NCAyLjE4VjIwYzAgMS42NiAxLjM0IDMgMyAzaDEzLjc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUgxMnYtMWg3Ljc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUgxMnYtMWg4Ljc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUgxMnYtMWg2Ljc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUg4Ljg2Yy42NC0xLjExIDEuNDgtMi41OCAxLjQ5LTIuNjFhMS4wNjUgMS4wNjUgMCAwIDAtLjEyLTEuMjNDMTAuMjIgNi4xMiA5LjEyIDUgOS4xMiA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYXRlckRhbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDMgMiAxMmgzdjhoMTR2LThoM0wxMiAzem0wIDEzYy0xLjEgMC0yLS45LTItMnMyLTQgMi00IDIgMi45IDIgNC0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2hlZWxjaGFpclBpY2t1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNSA0YzAtMS4xMS44OS0yIDItMnMyIC44OSAyIDItLjg5IDItMiAyLTItLjg5LTItMnptNS41IDYuOTVWOWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnY2aDJ2N2gzLjV2LS4xMWMtMS4yNC0xLjI2LTItMi45OS0yLTQuODkgMC0yLjU4IDEuNDEtNC44NCAzLjUtNi4wNXpNMTYuNSAxN2MwIDEuNjUtMS4zNSAzLTMgM3MtMy0xLjM1LTMtM2MwLTEuMTEuNjEtMi4wNiAxLjUtMi41OHYtMi4xNmMtMi4wMi42NC0zLjUgMi41MS0zLjUgNC43NCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01aC0yem0zLjA0LTNIMTVWOGgtMnY4aDUuNDZsMi40NyAzLjcxIDEuNjYtMS4xMS0zLjA1LTQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0aHJvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek05IDE4Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTAtM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0zIDNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMC0zYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTMgM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0wLTNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMi0zSDd2LTFjMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMC43OFY4YzAtMS42NS0xLjM1LTMtMy0zaC00Yy0uNzcgMC0xLjQ3LjMtMiAuNzgtLjUzLS40OC0xLjIzLS43OC0yLS43OEg2QzQuMzUgNSAzIDYuMzUgMyA4djIuNzhjLS42MS41NS0xIDEuMzQtMSAyLjIydjZoMnYtMmgxNnYyaDJ2LTZjMC0uODgtLjM5LTEuNjctMS0yLjIyek0xNCA3aDRjLjU1IDAgMSAuNDUgMSAxdjJoLTZWOGMwLS41NS40NS0xIDEtMXpNNSA4YzAtLjU1LjQ1LTEgMS0xaDRjLjU1IDAgMSAuNDUgMSAxdjJINVY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCZWRyb29tQmFieSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS04IDE2Yy0yLjY0IDAtNS4xMy0xLjAzLTctMi45bDEuMDYtMS4wNmMuMzQuMzQuNzEuNjUgMS4xLjkyTDggMTMuNVY5LjUxbC0xLjU1Ljk5LS45NS0xTDcgNy43NiA2IDdoMy42NWwxLjczIDNIMTd2MWgtMXYyLjVsLjg0IDEuNDZjLjM5LS4yOC43Ni0uNTggMS4xLS45MkwxOSAxNS4xYTkuODQyIDkuODQyIDAgMCAxLTcgMi45elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC42OSAxNC4yNGE3LjcyIDcuNzIgMCAwIDEtNS40IDBsLS44MSAxLjQxLS4wMy4wNmMxLjEuNTIgMi4yOC43OSAzLjUzLjc5czIuNDUtLjI4IDMuNTUtLjc5bC0uMDMtLjA2LS44MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCZWRyb29tQ2hpbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgOC41aDZ2Mkg5ek0xNS42NCAxMkg4LjM3YS44Ny44NyAwIDAgMC0uODcuODdoLjAxVjE0aDl2LTEuMTNhLjg3Ljg3IDAgMCAwLS44Ny0uODd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMiAxNWgtMS41di0xLjVoLTlWMTdINnYtNC4xM2MwLTEgLjYyLTEuODUgMS41LTIuMlY5YzAtMS4xLjktMiAyLTJoNWMxLjEgMCAyIC45IDIgMnYxLjY3Yy44OC4zNSAxLjUgMS4yIDEuNSAyLjJWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJlZHJvb21QYXJlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgMTJoLTljLS41NSAwLTEgLjQ1LTEgMXYxaDExdi0xYzAtLjU1LS40NS0xLTEtMXpNNy4yNSA4LjVoNHYyaC00ek0xMi43NSA4LjVoNHYyaC00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTEgMTVoLTEuNXYtMS41aC0xMVYxN0g1di0zLjgzYzAtLjY2LjI1LTEuMjYuNjUtMS43MlY5YzAtMS4xLjktMiAyLTJIMTFjLjM3IDAgLjcyLjEyIDEgLjMyLjI4LS4yLjYzLS4zMiAxLS4zMmgzLjM1YzEuMSAwIDIgLjkgMiAydjIuNDVjLjQuNDYuNjUgMS4wNi42NSAxLjcyVjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbGVuZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4xMyAxNS4xMyAxOCAzaC00VjJoLTR2MUg1Yy0xLjEgMC0yIC45LTIgMnY0YzAgMS4xLjkgMiAyIDJoMi4yM2wuNjQgNC4xM0M2Ljc0IDE2LjA1IDYgMTcuNDMgNiAxOXYxYzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMnYtMWMwLTEuNTctLjc0LTIuOTUtMS44Ny0zLjg3ek01IDlWNWgxLjMxbC42MiA0SDV6bTcgMTBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMi4yOS01SDkuNzJMOC4zMyA1aDcuMzRsLTEuMzggOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FtZXJhSW5kb29yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDQgOXYxMmgxNlY5bC04LTZ6bTQgMTMuMDZMMTQgMTV2MWMwIC41NS0uNDUgMS0xIDFIOWMtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDRjLjU1IDAgMSAuNDUgMSAxdjFsMi0xLjA2djQuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbWVyYU91dGRvb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEzYzAtLjU1LS40NS0xLTEtMWgtNGMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTFsMiAxLjA2di00LjEyTDE4IDE0di0xek0xMiAzIDQgOXYxMmgxNnYtMkg2di05bDYtNC41IDYgNC41djFoMlY5bC04LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoYWlyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjNjMCAxLjEuOSAyIDIgMmgxdjJIN2MtMS4xIDAtMiAuOS0yIDJ2N2gydi0zaDEwdjNoMnYtN2MwLTEuMS0uOS0yLTItMmgtMXYtMmgxek03IDhWNWgxMHYzSDd6bTEwIDhIN3YtMmgxMHYyem0tMy00aC00di0yaDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hhaXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTF2MmgxMHYtMmMwLTEuODYgMS4yOC0zLjQxIDMtMy44NlY2YzAtMS42NS0xLjM1LTMtMy0zSDdDNS4zNSAzIDQgNC4zNSA0IDZ2MS4xNGMxLjcyLjQ1IDMgMiAzIDMuODZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDljLTEuMSAwLTIgLjktMiAydjRINXYtNGMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2NWMwIDEuNjUgMS4zNSAzIDMgM3YxYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMXYtMWMxLjY1IDAgMy0xLjM1IDMtM3YtNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29mZmVlTWFrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDZWNGgyVjJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNHYtMmgtNC4wM0E0Ljk2NiA0Ljk2NiAwIDAgMCAxOCAxNnYtNUg4djVjMCAxLjY0LjgxIDMuMDkgMi4wMyA0SDZWNGgydjJjMCAuNTUuNDUgMSAxIDFoOGMuNTUgMCAxLS40NSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTNcIixcImN5XCI6XCI5XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvZmZlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAzSDZjLTEuMSAwLTIgLjktMiAydjUuNzFjMCAzLjgzIDIuOTUgNy4xOCA2Ljc4IDcuMjkgMy45Ni4xMiA3LjIyLTMuMDYgNy4yMi03di0xaC41YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzIwLjQzIDMgMTguNSAzek0xNiA1djNINlY1aDEwem0yLjUgM0gxOFY1aC41Yy44MyAwIDEuNS42NyAxLjUgMS41UzE5LjMzIDggMTguNSA4ek00IDE5aDE2djJINHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTkgOC4zYzAgLjkzLS42NCAxLjcxLTEuNSAxLjkzVjE5SDh2LTYuNzdjLS44Ni0uMjItMS41LTEtMS41LTEuOTNWNi41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41VjloLjc1VjYuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVY5SDEwVjYuNWMwLS4yOC4yMy0uNS41LS41LjI4IDAgLjUuMjIuNS41djMuOHptNC41OCAyLjI5LS4wOC4wM1YxOUgxNHYtNi4zOGwtLjA4LS4wNGMtLjk3LS40Ny0xLjY3LTEuNy0xLjY3LTMuMTggMC0xLjg4IDEuMTMtMy40IDIuNS0zLjQgMS4zOCAwIDIuNSAxLjUzIDIuNSAzLjQxIDAgMS40OC0uNyAyLjcxLTEuNjcgMy4xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9vckJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5VjVjMC0xLjEtLjktMi0yLTJIN2MtMS4xIDAtMiAuOS0yIDJ2MTRIM3YyaDE4di0yaC0yem0tOC02SDl2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb29yRnJvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5VjVjMC0xLjEtLjktMi0yLTJIN2MtMS4xIDAtMiAuOS0yIDJ2MTRIM3YyaDE4di0yaC0yem0tNC02aC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9vclNsaWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjVjMC0xLjEtLjktMi0yLTJoLTUuMjV2MTZoLTEuNVYzSDZjLTEuMSAwLTIgLjktMiAydjE0SDN2MmgxOHYtMmgtMXptLTEwLTZIOHYtMmgydjJ6bTYgMGgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvb3JiZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDQgOXYxMmgxNlY5bC04LTZ6bTAgMTQuNWMtLjU1IDAtMS0uNDUtMS0xaDJjMCAuNTUtLjQ1IDEtMSAxem00LTEuNUg4di0xaDF2LTIuMzRjMC0xLjU0LjgyLTIuODIgMi4yNS0zLjE2di0uMjVjMC0uNDEuMzQtLjc1Ljc1LS43NXMuNzUuMzQuNzUuNzV2LjI1YzEuNDQuMzQgMi4yNSAxLjYyIDIuMjUgMy4xNlYxNWgxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY4bC01LTV6TTcgN2g1djJIN1Y3em0xMCAxMEg3di0yaDEwdjJ6bTAtNEg3di0yaDEwdjJ6bS0yLTRWNWw0IDRoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsYXR3YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA3LjA4YzAgMS43Ny0uODQgMy4yNS0yIDMuODJWMjFoLTJWMTAuOWMtMS4xNi0uNTctMi0yLjA1LTItMy44MkMxMC4wMSA0LjgzIDExLjM1IDMgMTMgM2MxLjY2IDAgMyAxLjgzIDMgNC4wOHpNMTcgM3YxOGgydi04aDJWN2MwLTEuNzYtMS4yNC00LTQtNHpNOC4yOCAzYy0uNCAwLS43Mi4zMi0uNzIuNzJWN2gtLjg0VjMuNzJDNi43MiAzLjMyIDYuNCAzIDYgM3MtLjcyLjMyLS43Mi43MlY3aC0uODRWMy43MmMwLS40LS4zMi0uNzItLjcyLS43MlMzIDMuMzIgMyAzLjcyVjljMCAxLjEuOSAyIDIgMnYxMGgyVjExYzEuMSAwIDItLjkgMi0yVjMuNzJjMC0uNC0uMzItLjcyLS43Mi0uNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdhcmFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTguMzMgNy41LS42NiAyaDguNjZsLS42Ni0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTEgMTUuNjljMCAuNDUtLjM1LjgxLS43OC44MWgtLjQ0Yy0uNDQgMC0uNzgtLjM2LS43OC0uODFWMTYuNUg3djEuMTljMCAuNDUtLjM1LjgxLS43OC44MWgtLjQ0Yy0uNDMgMC0uNzgtLjM2LS43OC0uODF2LTYuNWMuODItMi40NyAxLjM0LTQuMDMgMS41Ni00LjY5LjA1LS4xNi4xMi0uMjkuMTktLjQuMDItLjAyLjAzLS4wNC4wNS0uMDYuMzgtLjUzLjkyLS41NC45Mi0uNTRoOC41NnMuNTQuMDEuOTIuNTNjLjAyLjAzLjAzLjA1LjA1LjA3LjA3LjExLjE0LjI0LjE5LjQuMjIuNjYuNzQgMi4yMyAxLjU2IDQuNjl2Ni41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNi4wNlYzaC0ydjMuMDZjLTQuNS41LTggNC4zMS04IDguOTNDMyAxNi4xIDMuOSAxNyA1LjAxIDE3SDhjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNGgyLjk5YzEuMTEgMCAyLjAxLS45IDIuMDEtMi4wMSAwLTQuNjItMy41LTguNDMtOC04Ljkzek0xMiAxNUg1YzAtMy44NiAzLjE0LTcgNy03czcgMy4xNCA3IDdoLTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpdmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAxMS41Yy0uNTUgMC0xIC40NS0xIDF2MmgtN3YtMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMVYxNmMwIC4yOC4yMi41LjUuNWgxMGMuMjggMCAuNS0uMjIuNS0uNXYtMy41YzAtLjU1LS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTIuNXYuNWg0di0uNWMwLTEuMy45OS0yLjM1IDIuMjUtMi40N1Y5YzAtLjgzLS42Ny0xLjUtMS41LTEuNWgtNS41Yy0uODMgMC0xLjUuNjctMS41IDEuNXYxLjAzQTIuNDggMi40OCAwIDAgMSAxMCAxMi41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTEgMTRjMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJ2LTMuNWMwLS45Mi41MS0xLjcyIDEuMjUtMi4xNVY5YzAtMS42NiAxLjM0LTMgMy0zaDUuNWMxLjY2IDAgMyAxLjM0IDMgM3YxLjM1Yy43NC40MyAxLjI1IDEuMjMgMS4yNSAyLjE1VjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYW5hZ2VTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOUgyVjdoNXYyem0wIDNIMnYyaDV2LTJ6bTEzLjU5IDctMy44My0zLjgzYy0uOC41Mi0xLjc0LjgzLTIuNzYuODMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1YzAgMS4wMi0uMzEgMS45Ni0uODMgMi43NUwyMiAxNy41OSAyMC41OSAxOXpNMTcgMTFjMC0xLjY1LTEuMzUtMy0zLTNzLTMgMS4zNS0zIDMgMS4zNSAzIDMgMyAzLTEuMzUgMy0zek0yIDE5aDEwdi0ySDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG9kY2FzdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEyYzAgLjc0LS40IDEuMzgtMSAxLjcyVjIyaC0ydi04LjI4Yy0uNi0uMzUtMS0uOTgtMS0xLjcyIDAtMS4xLjktMiAyLTJzMiAuOSAyIDJ6bS0yLTZjLTMuMzEgMC02IDIuNjktNiA2IDAgMS43NC43NSAzLjMxIDEuOTQgNC40bDEuNDItMS40MkEzLjk1NyAzLjk1NyAwIDAgMSA4IDEyYzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAxLjE5LS41MyAyLjI1LTEuMzYgMi45OGwxLjQyIDEuNDJBNS45NTcgNS45NTcgMCAwIDAgMTggMTJjMC0zLjMxLTIuNjktNi02LTZ6bTAtNEM2LjQ4IDIgMiA2LjQ4IDIgMTJjMCAyLjg1IDEuMiA1LjQxIDMuMTEgNy4yNGwxLjQyLTEuNDJBNy45ODcgNy45ODcgMCAwIDEgNCAxMmMwLTQuNDEgMy41OS04IDgtOHM4IDMuNTkgOCA4YzAgMi4yOS0uOTggNC4zNi0yLjUzIDUuODJsMS40MiAxLjQyQzIwLjggMTcuNDEgMjIgMTQuODUgMjIgMTJjMC01LjUyLTQuNDgtMTAtMTAtMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNob3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4XCIsXCJjeVwiOlwiMTdcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE3XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTZcIixcImN5XCI6XCIxN1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA1LjA4VjNoLTJ2Mi4wOEM3LjYxIDUuNTcgNSA4LjQ3IDUgMTJ2MmgxNHYtMmMwLTMuNTMtMi42MS02LjQzLTYtNi45MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4XCIsXCJjeVwiOlwiMjBcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjIwXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTZcIixcImN5XCI6XCIyMFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYWJsZUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDcuNUMyMiA1LjU3IDE3LjUyIDQgMTIgNFMyIDUuNTcgMiA3LjVjMCAxLjgxIDMuOTUgMy4zMSA5IDMuNDhWMTVIOS4zNWMtLjgyIDAtMS41NS41LTEuODYgMS4yNkw2IDIwaDJsMS4yLTNoNS42bDEuMiAzaDJsLTEuNS0zLjc0Yy0uMy0uNzYtMS4wNC0xLjI2LTEuODUtMS4yNkgxM3YtNC4wMmM1LjA1LS4xNyA5LTEuNjcgOS0zLjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYWJsZVJlc3RhdXJhbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS45NiA5LjczLTEuNDMtNWEuOTk2Ljk5NiAwIDAgMC0uOTYtLjczSDQuNDNjLS40NSAwLS44NC4zLS45Ni43M2wtMS40MyA1Yy0uMTguNjMuMyAxLjI3Ljk2IDEuMjdoMi4yTDQgMjBoMmwuNjctNWgxMC42N2wuNjYgNWgybC0xLjItOUgyMWMuNjYgMCAxLjE0LS42NC45Ni0xLjI3ek02LjkzIDEzbC4yNy0yaDkuNmwuMjcgMkg2LjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaW5kb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxMVYzSDVjLTEuMSAwLTIgLjktMiAydjZoOHptMiAwaDhWNWMwLTEuMS0uOS0yLTItMmgtNnY4em0tMiAySDN2NmMwIDEuMS45IDIgMiAyaDZ2LTh6bTIgMHY4aDZjMS4xIDAgMi0uOSAyLTJ2LTZoLTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFlhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek04IDguMjJhMS41NjIgMS41NjIgMCAwIDEgMi40NS0xLjI4bC0uMDEtLjEyYzAtLjg2LjctMS41NiAxLjU2LTEuNTZzMS41Ni43IDEuNTYgMS41NmwtLjAxLjEyQTEuNTYyIDEuNTYyIDAgMCAxIDE2IDguMjJjMCAuNjItLjM3IDEuMTYtLjg5IDEuNC41Mi4yNS44OS43OS44OSAxLjQxIDAgLjg2LS43IDEuNTYtMS41NiAxLjU2LS4zMyAwLS42NC0uMTEtLjg5LS4yOGwuMDEuMTJjMCAuODYtLjcgMS41Ni0xLjU2IDEuNTZzLTEuNTYtLjctMS41Ni0xLjU2bC4wMS0uMTJBMS41NjIgMS41NjIgMCAwIDEgOCAxMS4wM2MwLS42Mi4zNy0xLjE2Ljg5LTEuNEM4LjM3IDkuMzggOCA4Ljg0IDggOC4yMnpNMTIgMTljLTMuMzEgMC02LTIuNjktNi02IDMuMzEgMCA2IDIuNjkgNiA2IDAtMy4zMSAyLjY5LTYgNi02IDAgMy4zMS0yLjY5IDYtNiA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiOS42MlwiLFwiclwiOlwiMS41NlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxOFVwUmF0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTIuNWgxLjVWMTRIMTN6TTEzIDEwaDEuNXYxLjVIMTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOSAxMkg4LjV2LTQuNUg3VjloM3Y2em02LTFjMCAuNTUtLjQ1IDEtMSAxaC0yLjVjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMUgxNWMuNTUgMCAxIC40NSAxIDF2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNkZ0QXBhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDZjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem00IDMuNDNjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1YTYuOTUgNi45NSAwIDAgMC01LjU2IDBBMi4wMSAyLjAxIDAgMCAwIDIgOS40M1YxMGg4di0uNTd6TTE4IDZjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem00IDMuNDNjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1YTYuOTUgNi45NSAwIDAgMC01LjU2IDBBMi4wMSAyLjAxIDAgMCAwIDE0IDkuNDNWMTBoOHYtLjU3ek0xOSAxN3YtMi4wMUw1IDE1djJsLTMtMyAzLTN2Mi4wMUwxOSAxM3YtMmwzIDMtMyAzem0tOSAydi0xSDcuNWMtLjI4IDAtLjUuMjItLjUuNXYzYzAgLjI4LjIyLjUuNS41aDJjLjI4IDAgLjUtLjIyLjUtLjVWMjBjMC0uMjgtLjIyLS41LS41LS41SDhWMTloMnptLTEgMS41di41SDh2LS41aDF6bTguNS0xLjVoLTF2M2gtMXYtM2gtMXYtMWgzdjF6bS01IDB2LjVoMXYxaC0xVjIyaC0xdi00SDE0djFoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkTW9kZXJhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjIyIDIyLjYxYy0uNC4xNS0uOC4yOS0xLjIyLjM5LTUuMTYtMS4yNi05LTYuNDUtOS0xMlY1bDktNCA5IDR2NmMwIC45LS4xMSAxLjc4LS4zIDIuNjUtLjgxLS40MS0xLjczLS42NS0yLjctLjY1LTMuMzEgMC02IDIuNjktNiA2IDAgMS4zNi40NiAyLjYxIDEuMjIgMy42MXpNMTkgMjB2Mi45OXMtMS45OS4wMS0yIDBWMjBoLTN2LTJoM3YtM2gydjNoM3YyaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRSZWFjdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDlWN2gtMlYyLjg0QTkuOTI5IDkuOTI5IDAgMCAwIDExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMmMwLTEuMDUtLjE3LTIuMDUtLjQ3LTNIMTh6bS0yLjUtMWMuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41LTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNXptLTcgMGMuODMgMCAxLjUuNjcgMS41IDEuNVM5LjMzIDExIDguNSAxMSA3IDEwLjMzIDcgOS41IDcuNjcgOCA4LjUgOHptMy41IDkuNWMtMi4zMyAwLTQuMzEtMS40Ni01LjExLTMuNWgxMC4yMmMtLjggMi4wNC0yLjc4IDMuNS01LjExIDMuNXpNMjIgM2gydjJoLTJ2MmgtMlY1aC0yVjNoMlYxaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJjaGl0ZWN0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4zNiAxOC43OCA2LjYxIDIxbDEuNjItMS41NCAyLjc3LTcuNmMtLjY4LS4xNy0xLjI4LS41MS0xLjc3LS45OGwtMi44NyA3Ljl6TTE0Ljc3IDEwLjg4Yy0uNDkuNDctMS4xLjgxLTEuNzcuOThsMi43NyA3LjZMMTcuMzkgMjFsLjI2LTIuMjItMi44OC03Ljl6TTE1IDhjMC0xLjMtLjg0LTIuNC0yLTIuODJWM2gtMnYyLjE4QzkuODQgNS42IDkgNi43IDkgOGMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zem0tMyAxYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFzc2lzdFdhbGtlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTIuNVwiLFwiY3lcIjpcIjQuNVwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS43NyAxNy43Mi0uNjQtNi4zN0ExLjQ5IDEuNDkgMCAwIDAgMTcuNjQgMTBIMTZjLTEuNS0uMDItMi44Ni0uNTQtMy43Ni0xLjQ0bC0yLTEuOThBMS45NSAxLjk1IDAgMCAwIDguODMgNmMtLjUxIDAtMS4wMi4yLTEuNDEuNTlMNC4wOCA5LjkxYy0uNTMuNjgtLjUxIDEuNTctLjIxIDIuMTNsMS40MyAyLjgtMy4xNSA0LjA1IDEuNTcgMS4yNEw3LjQgMTUuNGwtLjE3LTEuMzYuNzcuNzFWMjBoMnYtNi4xMmwtMi4xMi0yLjEyIDIuMzYtMi4zNmMuOTQuOTQgMS43MiAxLjgyIDMuNTkgMi4zMkwxMyAyMGgxLjVsLjQxLTMuNWgzLjE4bC4xNCAxLjIyYy0uNDQuMjYtLjczLjc0LS43MyAxLjI4IDAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNWMwLS41NC0uMjktMS4wMi0uNzMtMS4yOHpNMTUuMDkgMTVsLjQxLTMuNWgybC40MSAzLjVoLTIuODJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhY2tIYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMjRjLTMuMjYgMC02LjE5LTEuOTktNy40LTUuMDJsLTMuMDMtNy42MWExIDEgMCAwIDEgMS4yNC0xLjMybC43OS4yNmMuNTYuMTggMS4wMi42MSAxLjI0IDEuMTZMNy4yNSAxNUg4VjMuMjVhMS4yNSAxLjI1IDAgMCAxIDIuNSAwVjEyaDFWMS4yNWExLjI1IDEuMjUgMCAwIDEgMi41IDBWMTJoMVYyLjc1YTEuMjUgMS4yNSAwIDAgMSAyLjUgMFYxMmgxVjUuNzVhMS4yNSAxLjI1IDAgMCAxIDIuNSAwVjE2YzAgNC40Mi0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbGluZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTEuNVwiLFwiY3lcIjpcIjMuNVwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4xMyA3LjEyYy0uMTctLjM1LS40NC0uNjUtLjgtLjg1YTEuOTggMS45OCAwIDAgMC0xLjkzLS4wM3YtLjAxTDQgOS4zVjE0aDJ2LTMuNTRsMS41LS44NUM3LjE4IDEwLjcxIDcgMTEuODUgNyAxM3Y1LjMzTDQuNCAyMS44IDYgMjNsMy00IC4yMi0zLjU0TDExIDE4djVoMnYtNi41bC0xLjk3LTIuODFjLS4wNC0uNTItLjE0LTEuNzYuNDUtMy40Ljc1IDEuMTQgMS44OCAxLjk4IDMuMiAyLjQxTDIwLjYzIDIzbC44Ny0uNS01LjQ4LTkuNUgxN3YtMmMtLjQ5IDAtMi44OC4xNy00LjA4LTIuMjFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm95IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNy41Yy45NyAwIDEuNzUtLjc4IDEuNzUtMS43NVMxMi45NyA0IDEyIDRzLTEuNzUuNzgtMS43NSAxLjc1UzExLjAzIDcuNSAxMiA3LjV6TTE0IDIwdi01aDF2LTQuNWMwLTEuMS0uOS0yLTItMmgtMmMtMS4xIDAtMiAuOS0yIDJWMTVoMXY1aDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENha2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YTIgMiAwIDAgMCAyLTJjMC0uMzgtLjEtLjczLS4yOS0xLjAzTDEyIDBsLTEuNzEgMi45N2MtLjE5LjMtLjI5LjY1LS4yOSAxLjAzIDAgMS4xLjkgMiAyIDJ6bTQuNiA5Ljk5LTEuMDctMS4wNy0xLjA4IDEuMDdjLTEuMyAxLjMtMy41OCAxLjMxLTQuODkgMGwtMS4wNy0xLjA3LTEuMDkgMS4wN0M2Ljc1IDE2LjY0IDUuODggMTcgNC45NiAxN2MtLjczIDAtMS40LS4yMy0xLjk2LS42MVYyMWMwIC41NS40NSAxIDEgMWgxNmMuNTUgMCAxLS40NSAxLTF2LTQuNjFjLS41Ni4zOC0xLjIzLjYxLTEuOTYuNjEtLjkyIDAtMS43OS0uMzYtMi40NC0xLjAxek0xOCA5aC01VjdoLTJ2Mkg2Yy0xLjY2IDAtMyAxLjM0LTMgM3YxLjU0YzAgMS4wOC44OCAxLjk2IDEuOTYgMS45Ni41MiAwIDEuMDItLjIgMS4zOC0uNTdsMi4xNC0yLjEzIDIuMTMgMi4xM2MuNzQuNzQgMi4wMy43NCAyLjc3IDBsMi4xNC0yLjEzIDIuMTMgMi4xM2MuMzcuMzcuODYuNTcgMS4zOC41NyAxLjA4IDAgMS45Ni0uODggMS45Ni0xLjk2VjEyQzIxIDEwLjM0IDE5LjY2IDkgMTggOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2F0Y2hpbmdQb2tlbW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSAxMmEyLjUgMi41IDAgMCAxLTUgMCAyLjUgMi41IDAgMCAxIDUgMHptNy41IDBjMCA1LjUyLTQuNDggMTAtMTAgMTBTMiAxNy41MiAyIDEyIDYuNDggMiAxMiAyczEwIDQuNDggMTAgMTB6bS0yIDBoLTRjMC0yLjIxLTEuNzktNC00LTRzLTQgMS43OS00IDRINGMwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbGVhbkhhbmRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuOTkgNSAuNjMgMS4zNyAxLjM3LjYzLTEuMzcuNjNMMTYuOTkgOWwtLjYzLTEuMzdMMTQuOTkgN2wxLjM3LS42My42My0xLjM3TTExIDYuMTNWNGgyYy41NyAwIDEuMS4xNyAxLjU1LjQ1bDEuNDMtMS40M0E0Ljg5OSA0Ljg5OSAwIDAgMCAxMyAySDcuNXYySDl2Mi4xNEE1LjAwNyA1LjAwNyAwIDAgMCA1LjI2IDkuNWgzLjk4TDE1IDExLjY1di0uNjJhNSA1IDAgMCAwLTQtNC45ek0xIDIyaDRWMTFIMXYxMXptMTktNWgtN2wtMi4wOS0uNzMuMzMtLjk0TDEzIDE2aDIuODJjLjY1IDAgMS4xOC0uNTMgMS4xOC0xLjE4IDAtLjQ5LS4zMS0uOTMtLjc3LTEuMTFMOC45NyAxMUg3djkuMDJMMTQgMjJsOC0zYy0uMDEtMS4xLS44OS0yLTItMnptMC0zYzEuMSAwIDItLjkgMi0ycy0yLTQtMi00LTIgMi45LTIgNCAuOSAyIDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ28yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOWgtM2MtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xem0tLjUgNC41aC0ydi0zaDJ2M3pNOCAxM3YxYzAgLjU1LS40NSAxLTEgMUg0Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MUg2LjV2LS41aC0ydjNoMlYxM0g4em0xMi41IDIuNWgtMnYxaDNWMThIMTd2LTIuNWMwLS41NS40NS0xIDEtMWgydi0xaC0zVjEyaDMuNWMuNTUgMCAxIC40NSAxIDF2MS41YzAgLjU1LS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29tcG9zdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjg3IDExLjgxQTIuNSAyLjUgMCAwIDEgMTUgOGgxYzEuNTEgMCAyLTEgMi0xcy41NSA2LTMgNmMtLjQ5IDAtLjk0LS4xNC0xLjMyLS4zOC0uMjQuNjQtLjU5IDEuNzYtLjc2IDIuOTYgMS4yNi4yMiAyLjI4Ljg5IDIuNzcgMS43N0E2LjUwNSA2LjUwNSAwIDAgMCAxOC41IDEyaDNjMCA1LjI0LTQuMjYgOS41LTkuNSA5LjVTMi41IDE3LjI0IDIuNSAxMiA2Ljc2IDIuNSAxMiAyLjVWMGw0IDQtNCA0VjUuNWMtMy41OCAwLTYuNSAyLjkyLTYuNSA2LjUgMCAyLjIxIDEuMTEgNC4xNyAyLjgxIDUuMzUuNTEtLjkyIDEuNjMtMS42MiAyLjk4LTEuOC0uMDktLjY5LS4yNi0xLjQyLS40OS0yLjAzLS4zNS4zLS44LjQ4LTEuMy40OC0xLjEgMC0yLS45LTItMnYtLjk5YzAtLjU2LS4xOS0xLjA5LS41LTEuNTEgMCAwIDQuNDUtLjIzIDQuNSAyLjUgMCAuMjktLjA2LjU2LS4xNy44LS40Mi0uMzItLjg2LS42LTEuMzMtLjguNTguNDMgMS4zNyAxLjM3IDIgMi42LjY3LTEuNjIgMS42OC0zLjI3IDMtNC42LS43Ni41Mi0xLjQ3IDEuMTItMi4xMyAxLjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb25uZWN0V2l0aG91dENvbnRhY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNEg5YTkgOSAwIDAgMSA5LTl2MmMtMy44NyAwLTcgMy4xMy03IDd6bTctM1Y5Yy0yLjc2IDAtNSAyLjI0LTUgNWgyYzAtMS42NiAxLjM0LTMgMy0zek03IDRjMC0xLjExLS44OS0yLTItMnMtMiAuODktMiAyIC44OSAyIDIgMiAyLS44OSAyLTJ6bTQuNDUuNWgtMkEyLjk5IDIuOTkgMCAwIDEgNi41IDdoLTNDMi42NyA3IDIgNy42NyAyIDguNVYxMWg2VjguNzRhNC45NyA0Ljk3IDAgMCAwIDMuNDUtNC4yNHpNMTkgMTdjMS4xMSAwIDItLjg5IDItMnMtLjg5LTItMi0yLTIgLjg5LTIgMiAuODkgMiAyIDJ6bTEuNSAxaC0zYTIuOTkgMi45OSAwIDAgMS0yLjk1LTIuNWgtMkE0Ljk3IDQuOTcgMCAwIDAgMTYgMTkuNzRWMjJoNnYtMi41YzAtLjgzLS42Ny0xLjUtMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29uc3RydWN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuNzgzIDE1LjE3MiAyLjEyMS0yLjEyMSA1Ljk5NiA1Ljk5Ni0yLjEyMSAyLjEyMXpNMTcuNSAxMGMxLjkzIDAgMy41LTEuNTcgMy41LTMuNSAwLS41OC0uMTYtMS4xMi0uNDEtMS42bC0yLjcgMi43LTEuNDktMS40OSAyLjctMi43Yy0uNDgtLjI1LTEuMDItLjQxLTEuNi0uNDFDMTUuNTcgMyAxNCA0LjU3IDE0IDYuNWMwIC40MS4wOC44LjIxIDEuMTZsLTEuODUgMS44NS0xLjc4LTEuNzguNzEtLjcxLTEuNDEtMS40MUwxMiAzLjQ5YTMgMyAwIDAgMC00LjI0IDBMNC4yMiA3LjAzbDEuNDEgMS40MUgyLjgxbC0uNzEuNzEgMy41NCAzLjU0LjcxLS43MVY5LjE1bDEuNDEgMS40MS43MS0uNzEgMS43OCAxLjc4LTcuNDEgNy40MSAyLjEyIDIuMTJMMTYuMzQgOS43OWMuMzYuMTMuNzUuMjEgMS4xNi4yMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29va2llIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTUgMTAuOTljLTEuNzktLjAzLTMuNy0xLjk1LTIuNjgtNC4yMi0yLjk4IDEtNS43Ny0xLjU5LTUuMTktNC41NkM2Ljk1LjcxIDIgNi41OCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDUuODkgMCAxMC41NC01LjA4IDkuOTUtMTEuMDF6TTguNSAxNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzcuNjcgMTIgOC41IDEyczEuNS42NyAxLjUgMS41UzkuMzMgMTUgOC41IDE1em0yLTVDOS42NyAxMCA5IDkuMzMgOSA4LjVTOS42NyA3IDEwLjUgN3MxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTQuNSA2Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvcm9uYXZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMjUgMTAuNWMtLjQxIDAtLjc1LjM0LS43NS43NWgtMS41NGE2Ljk3OCA2Ljk3OCAwIDAgMC0xLjUyLTMuNjVsMS4wOS0xLjA5LjAxLjAxYy4yOS4yOS43Ny4yOSAxLjA2IDBzLjI5LS43NyAwLTEuMDZMMTguNTQgNC40YS43NTQuNzU0IDAgMCAwLTEuMDYgMGMtLjI5LjI5LS4yOS43Ni0uMDEgMS4wNWwtMS4wOSAxLjA5YTcuMDE1IDcuMDE1IDAgMCAwLTMuNjQtMS41MVYzLjVoLjAxYy40MSAwIC43NS0uMzQuNzUtLjc1UzEzLjE2IDIgMTIuNzUgMmgtMS41Yy0uNDEgMC0uNzUuMzQtLjc1Ljc1cy4zMy43NC43NC43NXYxLjU1Yy0xLjM3LjE0LTIuNjIuNjktMy42NCAxLjUxTDYuNTEgNS40N2wuMDEtLjAxYy4yOS0uMjkuMjktLjc3IDAtMS4wNmEuNzU0Ljc1NCAwIDAgMC0xLjA2IDBMNC40IDUuNDZjLS4yOS4yOS0uMjkuNzcgMCAxLjA2LjI5LjI5Ljc2LjI5IDEuMDUuMDFsMS4wOSAxLjA5YTYuODkgNi44OSAwIDAgMC0xLjUgMy42M0gzLjVjMC0uNDEtLjM0LS43NS0uNzUtLjc1cy0uNzUuMzQtLjc1Ljc1djEuNWMwIC40MS4zNC43NS43NS43NXMuNzUtLjM0Ljc1LS43NWgxLjU0Yy4xNSAxLjM3LjY5IDIuNjEgMS41IDMuNjNsLTEuMDkgMS4wOWEuNzQyLjc0MiAwIDAgMC0xLjA1LjAxYy0uMjkuMjktLjI5Ljc3IDAgMS4wNmwxLjA2IDEuMDZjLjI5LjI5Ljc3LjI5IDEuMDYgMCAuMjktLjI5LjI5LS43NyAwLTEuMDZsLS4wMS0uMDEgMS4wOS0xLjA5YzEuMDIuODIgMi4yNiAxLjM2IDMuNjMgMS41MXYxLjU1Yy0uNDEuMDEtLjc0LjM0LS43NC43NXMuMzQuNzUuNzUuNzVoMS41Yy40MSAwIC43NS0uMzQuNzUtLjc1cy0uMzQtLjc1LS43NS0uNzVoLS4wMXYtMS41NGMxLjM3LS4xNCAyLjYyLS42OSAzLjY0LTEuNTFsMS4wOSAxLjA5Yy0uMjkuMjktLjI4Ljc2LjAxIDEuMDUuMjkuMjkuNzcuMjkgMS4wNiAwbDEuMDYtMS4wNmMuMjktLjI5LjI5LS43NyAwLTEuMDZhLjc1NC43NTQgMCAwIDAtMS4wNiAwbC0uMDEuMDEtMS4wOS0xLjA5YTcuMDI1IDcuMDI1IDAgMCAwIDEuNTItMy42NWgxLjU0YzAgLjQxLjM0Ljc1Ljc1Ljc1cy43NS0uMzQuNzUtLjc1di0xLjVjLjAxLS40LS4zMy0uNzQtLjc0LS43NHpNMTMuNzUgOGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xek0xMiAxM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tMS43NS01Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTguNSAxM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0xLjc1IDNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMy41IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptLjc1LTRjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxLS40NSAxLTEgMS0xLS40NS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENydWVsdHlGcmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuODQgMTQuNTJjLS4yNi0uMTktLjYyLS42My0uNzktLjg0QzE3LjI0IDEyLjAxIDE5IDguODcgMTkgNWMwLTEuOTUtLjc0LTMtMi0zLTEuNTQgMC0zLjk2IDIuMDYtNSA1Ljk3QzEwLjk2IDQuMDYgOC41NCAyIDcgMiA1Ljc0IDIgNSAzLjA1IDUgNWMwIDMuODcgMS43NiA3LjAxIDIuOTUgOC42OC0uMTcuMjEtLjUzLjY1LS43OS44NC0uNS40MS0xLjY2IDEuMzctMS42NiAyLjk4IDAgMi4yMSAxLjc5IDQgNCA0IDEuNTUgMCAyLjUtLjU2IDIuNS0uNTZzLjk1LjU2IDIuNS41NmMyLjIxIDAgNC0xLjc5IDQtNCAwLTEuNjEtMS4xNi0yLjU3LTEuNjYtMi45OHpNOS4zNSAxMi4yQzguMzQgMTAuNyA3IDguMTIgNyA1YzAtLjQ5LjA2LS44LjEyLS45Ny45NC4zMSAzLjI0IDIuNzEgMy4zOCA3LjY0LS40Ny4xMi0uODQuMy0xLjE1LjUzem0xLjE1IDQuNTVjLS4yOCAwLS41LS4zNC0uNS0uNzVzLjIyLS43NS41LS43NS41LjM0LjUuNzUtLjIyLjc1LS41Ljc1ek0xMiAxOS41Yy0uNTUgMC0xLS43Mi0xLTFzLjQ1LS41IDEtLjUgMSAuMjIgMSAuNS0uNDUgMS0xIDF6bTEuNS0yLjc1Yy0uMjggMC0uNS0uMzQtLjUtLjc1cy4yMi0uNzUuNS0uNzUuNS4zNC41Ljc1LS4yMi43NS0uNS43NXptMC01LjA4Yy4xNC00LjkzIDIuNDQtNy4zMyAzLjM4LTcuNjQuMDYuMTcuMTIuNDguMTIuOTcgMCAzLjEyLTEuMzQgNS43LTIuMzUgNy4yLS4zMS0uMjMtLjY4LS40MS0xLjE1LS41M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3ljbG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA3LjQ3VjUuMzVDMjAuMDUgNC43NyAxNi41NiA0IDEyIDRjLTIuMTUgMC00LjExLjg2LTUuNTQgMi4yNC4xMy0uODUuNC0yLjQgMS4wMS00LjI0SDUuMzVDNC43NyAzLjk1IDQgNy40NCA0IDEyYzAgMi4xNS44NiA0LjExIDIuMjQgNS41NC0uODUtLjE0LTIuNC0uNC00LjI0LTEuMDF2Mi4xMkMzLjk1IDE5LjIzIDcuNDQgMjAgMTIgMjBjMi4xNSAwIDQuMTEtLjg2IDUuNTQtMi4yNC0uMTQuODUtLjQgMi40LTEuMDEgNC4yNGgyLjEyYy41OC0xLjk1IDEuMzUtNS40NCAxLjM1LTEwIDAtMi4xNS0uODYtNC4xMS0yLjI0LTUuNTQuODUuMTMgMi40LjQgNC4yNCAxLjAxek0xMiAxOGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA5IDEyIDIgMiA5aDl2MTNoMlY5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm00LjE0IDEyLTEuOTYuMzcuODIgNC4zN1YyMmgybC4wMi00SDd2NGgydi02SDQuOXpNMTkuMSAxNkgxNXY2aDJ2LTRoMS45OGwuMDIgNGgydi01LjI2bC44Mi00LjM3LTEuOTYtLjM3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZXdQb2ludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEzVjVjMC0xLjY2LTEuMzQtMy0zLTNTNiAzLjM0IDYgNXY4Yy0xLjIxLjkxLTIgMi4zNy0yIDQgMCAyLjc2IDIuMjQgNSA1IDVzNS0yLjI0IDUtNWMwLTEuNjMtLjc5LTMuMDktMi00em0tNC0yVjVjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjFIOXYxaDF2Mkg5djFoMXYxSDh6bTEzLTQuNWMwLS44NC0xLjUtMi41LTEuNS0yLjVTMTggNS42NiAxOCA2LjVjMCAuODMuNjcgMS41IDEuNSAxLjVTMjEgNy4zMyAyMSA2LjV6bS00IDNjMC0uODQtMS41LTIuNS0xLjUtMi41UzE0IDguNjYgMTQgOS41YzAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNXptNCAzYzAtLjg0LTEuNS0yLjUtMS41LTIuNVMxOCAxMS42NiAxOCAxMi41YzAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGl2ZXJzaXR5MSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNFwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuMjIgMTcuNThBMi4wMSAyLjAxIDAgMCAwIDAgMTkuNDNWMjFoNC41di0xLjYxYzAtLjgzLjIzLTEuNjEuNjMtMi4yOS0uMzctLjA2LS43NC0uMS0xLjEzLS4xLS45OSAwLTEuOTMuMjEtMi43OC41OHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIyMFwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjc4IDE3LjU4QTYuOTUgNi45NSAwIDAgMCAyMCAxN2MtLjM5IDAtLjc2LjA0LTEuMTMuMS40LjY4LjYzIDEuNDYuNjMgMi4yOVYyMUgyNHYtMS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6TTE2LjI0IDE2LjY1Yy0xLjE3LS41Mi0yLjYxLS45LTQuMjQtLjktMS42MyAwLTMuMDcuMzktNC4yNC45QTIuOTg4IDIuOTg4IDAgMCAwIDYgMTkuMzlWMjFoMTJ2LTEuNjFjMC0xLjE4LS42OC0yLjI2LTEuNzYtMi43NHpNOSAxMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zLTEuMzQtMy0zLTMtMyAxLjM0LTMgM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi40OCAxMC44NkMyLjE3IDEwLjEgMiA5LjM2IDIgOC42IDIgNi4wMiA0LjAyIDQgNi42IDRjMi42OCAwIDMuODIgMS43NCA1LjQgMy41OUMxMy41NyA1Ljc2IDE0LjcgNCAxNy40IDQgMTkuOTggNCAyMiA2LjAyIDIyIDguNmMwIC43Ni0uMTcgMS41LS40OCAyLjI2LjY1LjMxIDEuMTguODIgMS41MyAxLjQ0LjYtMS4yLjk1LTIuNDIuOTUtMy43QzI0IDQuOSAyMS4xIDIgMTcuNCAyYy0yLjA5IDAtNC4wOS45Ny01LjQgMi41MUMxMC42OSAyLjk3IDguNjkgMiA2LjYgMiAyLjkgMiAwIDQuOSAwIDguNmMwIDEuMjguMzUgMi41Ljk2IDMuNy4zNS0uNjIuODgtMS4xMyAxLjUyLTEuNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpdmVyc2l0eTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMC4xIDE1LjkgMS40Mi0xLjQyQzguNzkgMTIuMDUgNyAxMC40MSA3IDguODUgNyA3LjggNy44IDcgOC44NSA3YzEuMTEgMCAxLjU0LjY1IDIuNjggMmguOTNjMS4xMi0xLjMxIDEuNTMtMiAyLjY4LTIgLjg3IDAgMS41NS41NCAxLjc3IDEuMzIuMzUtLjA0LjY4LS4wNiAxLS4wNi4zNiAwIC43LjAzIDEuMDMuMDhDMTguNyA2LjQzIDE3LjEzIDUgMTUuMTUgNWMtLjEyIDAtLjIzLjAzLS4zNS4wNC4xMi0uMzMuMi0uNjcuMi0xLjA0IDAtMS42Ni0xLjM0LTMtMy0zUzkgMi4zNCA5IDRjMCAuMzcuMDguNzEuMiAxLjA0LS4xMi0uMDEtLjIzLS4wNC0uMzUtLjA0QzYuNjkgNSA1IDYuNjkgNSA4Ljg1YzAgMi40MiAyLjA0IDQuMzEgNS4xIDcuMDV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjUgMTYuMjRjLS4zMi0uMTgtLjY2LS4yOS0xLS4zNS4wNy0uMS4xNS0uMTguMjEtLjI4IDEuMDgtMS44Ny40Ni00LjE4LTEuNDEtNS4yNi0yLjA5LTEuMjEtNC43Ni0uMzktOC42NS45bC41MiAxLjk0YzMuNDctMS4xNCA1Ljc5LTEuODggNy4xNC0xLjEuOTEuNTMgMS4yIDEuNjEuNjggMi41My0uNTYuOTYtMS4zMyAxLTMuMDcgMS4zMmwtLjQ3LjgxYy41OCAxLjYyLjk3IDIuMzMuMzkgMy4zMi0uNTMuOTEtMS42MSAxLjItMi41My42OC0uMDYtLjAzLS4xMS0uMDktLjE3LS4xMy0uMy42Ny0uNjQgMS4yNC0xLjAzIDEuNzMuMDcuMDQuMTMuMDkuMi4xNCAxLjg3IDEuMDggNC4xOC40NiA1LjI2LTEuNDEuMDYtLjEuMDktLjIxLjE0LS4zMi4yMi4yNy40OC41MS44LjY5IDEuNDMuODMgMy4yNy4zNCA0LjEtMS4xcy4zMi0zLjI5LTEuMTEtNC4xMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMzIgMTQuMDFjLS43NCAzLjU4LTEuMjcgNS45NS0yLjYyIDYuNzMtLjkxLjUzLTIgLjI0LTIuNTMtLjY4LS41Ni0uOTYtLjItMS42Ni4zOS0zLjMybC0uNDYtLjgxYy0xLjctLjMxLTIuNS0uMzMtMy4wNy0xLjMyLS41My0uOTEtLjI0LTIgLjY4LTIuNTMuMDktLjA1LjE5LS4wOC4yOS0uMTEtLjM1LS41Ni0uNjQtMS4xNy0uODItMS44NS0uMTYuMDctLjMyLjE0LS40OC4yMy0xLjg3IDEuMDgtMi40OSAzLjM5LTEuNDEgNS4yNi4wNi4xLjE0LjE4LjIxLjI4LS4zNC4wNi0uNjguMTctMSAuMzUtMS40My44My0xLjkzIDIuNjYtMS4xIDQuMXMyLjY2IDEuOTMgNC4xIDEuMWMuMzItLjE4LjU4LS40Mi44LS42OS4wNS4xMS4wOC4yMi4xNC4zMiAxLjA4IDEuODcgMy4zOSAyLjQ5IDUuMjYgMS40MSAyLjA5LTEuMjEgMi43MS0zLjkzIDMuNTUtNy45NGwtMS45My0uNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpdmVyc2l0eTMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjMyIDEzLjAxYy45Ni4wMiAxLjg1LjUgMi40NSAxLjM0QTMuOTYxIDMuOTYxIDAgMCAwIDEyIDE2YzEuMjkgMCAyLjUtLjYyIDMuMjMtMS42Ni42LS44NCAxLjQ5LTEuMzIgMi40NS0xLjM0LS43Mi0xLjIyLTMuNi0yLTUuNjgtMi0yLjA3IDAtNC45Ni43OC01LjY4IDIuMDF6TTQgMTNjMS42NiAwIDMtMS4zNCAzLTNTNS42NiA3IDQgN3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzek0yMCAxM2MxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6TTEyIDEwYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTRoLTMuMjdjLS43NyAwLTEuMzUuNDUtMS42OC45Mi0uMDQuMDYtMS4zNiAyLjA4LTQuMDUgMi4wOC0xLjQzIDAtMy4wMy0uNjQtNC4wNS0yLjA4LS4zOS0uNTUtMS0uOTItMS42OC0uOTJIM2MtMS4xIDAtMiAuOS0yIDJ2NGg3di0yLjI2YzEuMTUuOCAyLjU0IDEuMjYgNCAxLjI2czIuODUtLjQ2IDQtMS4yNlYyMGg3di00YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb21haW5BZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3VjNIMnYxOGgxNHYtMmgtNHYtMmgydi0yaC0ydi0yaDJ2LTJoLTJWOWg4djZoMlY3SDEyek02IDE5SDR2LTJoMnYyem0wLTRINHYtMmgydjJ6bTAtNEg0VjloMnYyem0wLTRINFY1aDJ2MnptNCAxMkg4di0yaDJ2MnptMC00SDh2LTJoMnYyem0wLTRIOFY5aDJ2MnptMC00SDhWNWgydjJ6bTE0IDEydjJoLTJ2MmgtMnYtMmgtMnYtMmgydi0yaDJ2Mmgyem0tNi04aC0ydjJoMnYtMnptMCA0aC0ydjJoMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9tYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3VjNIMnYxOGgyMFY3SDEyek02IDE5SDR2LTJoMnYyem0wLTRINHYtMmgydjJ6bTAtNEg0VjloMnYyem0wLTRINFY1aDJ2MnptNCAxMkg4di0yaDJ2MnptMC00SDh2LTJoMnYyem0wLTRIOFY5aDJ2MnptMC00SDhWNWgydjJ6bTEwIDEyaC04di0yaDJ2LTJoLTJ2LTJoMnYtMmgtMlY5aDh2MTB6bS0yLThoLTJ2Mmgydi0yem0wIDRoLTJ2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb3duaGlsbFNraWluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgNC41YzAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMiAyIC45IDIgMnptLTIuNzIgMTYuNC43Ni4yN2E1LjkzMyA1LjkzMyAwIDAgMCA0LjM0LS4xN0wyMiAyMi4xM2MtMS4wNS41NS0yLjI0Ljg3LTMuNS44Ny0uODYgMC0xLjY4LS4xNC0yLjQ1LS40MUwyIDE3LjQ3bC41LTEuNDEgNi45IDIuNTEgMS43Mi00LjQ0LTMuNTctMy43M2MtLjg5LS45NC0uNjctMi40Ny40NS0zLjEybDMuNDgtMi4wMWMxLjEtLjY0IDIuNTItLjEgMi45MSAxLjExbC4zMyAxLjA4YTUuMDE3IDUuMDE3IDAgMCAwIDIuODMgMy4xNGwuNTItMS42IDEuNDMuNDYtMS4xMiAzLjQ1QTcuMDI5IDcuMDI5IDAgMCAxIDEzIDguNTlsLTIuNTMgMS40NSAzLjAzIDMuNDYtMi4yMiA1Ljc2IDMuMDkgMS4xMiAyLjEtNi40NGMuNDYuMTguOTQuMzEgMS40NC40MWwtMi4xMyA2LjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0Tm90aWZpY2F0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjU4IDYuMjUgMS43NyAxLjc3TDE0LjM3IDEzSDEyLjZ2LTEuNzdsNC45OC00Ljk4em0zLjI3LS40NC0xLjA2LTEuMDZjLS4yLS4yLS41MS0uMi0uNzEgMGwtLjg1Ljg1TDIwIDcuMzdsLjg1LS44NWMuMi0uMi4yLS41MiAwLS43MXpNMTggMTIuMlYxN2gydjJINHYtMmgydi03YzAtMi43OSAxLjkxLTUuMTQgNC41LTUuOHYtLjdjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjV2LjdjLjgyLjIxIDEuNTcuNTkgMi4yMSAxLjA5TDEwLjYgMTAuNFYxNWg0LjZsMi44LTIuOHpNMTAgMjBoNGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVsZGVybHlXb21hbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgMTFjLTEuNTYgMC0yLjkyLS45LTMuNTgtMi4yMWwtLjc5LTEuNjdDMTQuMTIgNy4xIDEzLjYzIDYgMTIuMzQgNiA4LjcyIDYgNiAxNi42OSA2IDE5aDIuNWwtMi4xIDIuOEw4IDIzbDMtNGgydjRoMnYtNC4wM0wxMyAxM2wuNDktMi43MUE2LjAyIDYuMDIgMCAwIDAgMTcgMTIuODF2LjY5aDF2LTFjMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjVWMjNoMVYxMi41YzAtLjgzLS42Ny0xLjUtMS41LTEuNXpNMTEuNiAyLjkxYy0uMDYuMTktLjEuMzgtLjEuNTkgMCAxLjEuOSAyIDIgMnMyLS45IDItMi0uOS0yLTItMmMtLjIxIDAtLjQuMDQtLjU5LjEtLjE1LS4zNS0uNS0uNi0uOTEtLjYtLjU1IDAtMSAuNDUtMSAxIDAgLjQxLjI1Ljc2LjYuOTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVsZGVybHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYuNSA3VjIzaC0xVjEyLjVjMC0uMjgtLjIyLS41LS41LS41cy0uNS4yMi0uNS41djFoLTF2LS42OWE2LjAyIDYuMDIgMCAwIDEtMy41MS0yLjUyYy0uMzEuODctLjQ5IDEuNzgtLjQ5IDIuNzEgMCAuMjMuMDIuNDYuMDMuNjlMMTUgMTYuNVYyM2gtMnYtNWwtMS43OC0yLjU0TDExIDE5bC0zIDQtMS42LTEuMkw5IDE4LjMzVjEzYzAtMS4xNS4xOC0yLjI5LjUtMy4zOWwtMS41Ljg1VjE0SDZWOS4zbDUuNC0zLjA3di4wMWEyIDIgMCAwIDEgMS45NC4wM2MuMzYuMjEuNjMuNTEuOC44NWwuNzkgMS42N0EzLjk4NyAzLjk4NyAwIDAgMCAxOC41IDExYy44MyAwIDEuNS42NyAxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbW9qaUVtb3Rpb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNOC41IDhjLjgzIDAgMS41LjY3IDEuNSAxLjVTOS4zMyAxMSA4LjUgMTEgNyAxMC4zMyA3IDkuNSA3LjY3IDggOC41IDh6TTEyIDE4Yy0yLjI4IDAtNC4yMi0xLjY2LTUtNGgxMGMtLjc4IDIuMzQtMi43MiA0LTUgNHptMy41LTdjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxNC42NyA4IDE1LjUgOHMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVtb2ppRXZlbnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNWgtMlYzSDd2Mkg1Yy0xLjEgMC0yIC45LTIgMnYxYzAgMi41NSAxLjkyIDQuNjMgNC4zOSA0Ljk0QTUuMDEgNS4wMSAwIDAgMCAxMSAxNS45VjE5SDd2MmgxMHYtMmgtNHYtMy4xYTUuMDEgNS4wMSAwIDAgMCAzLjYxLTIuOTZDMTkuMDggMTIuNjMgMjEgMTAuNTUgMjEgOFY3YzAtMS4xLS45LTItMi0yek01IDhWN2gydjMuODJDNS44NCAxMC40IDUgOS4zIDUgOHptMTQgMGMwIDEuMy0uODQgMi40LTIgMi44MlY3aDJ2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRW1vamlGbGFncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0IDktMS0ySDdWNS43MmMuNi0uMzQgMS0uOTggMS0xLjcyIDAtMS4xLS45LTItMi0ycy0yIC45LTIgMmMwIC43NC40IDEuMzggMSAxLjcyVjIxaDJ2LTRoNWwxIDJoN1Y5aC02em00IDhoLTRsLTEtMkg3VjloNWwxIDJoNXY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbW9qaUZvb2RCZXZlcmFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNIOXYyLjRsMS44MSAxLjQ1Yy4xMi4wOS4xOS4yNC4xOS4zOXY0LjI2YzAgLjI4LS4yMi41LS41LjVoLTRjLS4yOCAwLS41LS4yMi0uNS0uNVY3LjI0YzAtLjE1LjA3LS4zLjE5LS4zOUw4IDUuNFYzSDR2MTBjMCAyLjIxIDEuNzkgNCA0IDRoNmMyLjIxIDAgNC0xLjc5IDQtNHYtM2gyYTIgMiAwIDAgMCAyLTJWNWMwLTEuMTEtLjg5LTItMi0yem0wIDVoLTJWNWgydjN6TTQgMTloMTZ2Mkg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbW9qaU5hdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk0IDQuODhBMS4zMiAxLjMyIDAgMCAwIDIwLjY4IDRIMTkuNmwtLjMxLS45N0MxOS4xNSAyLjQzIDE4LjYxIDIgMTggMnMtMS4xNS40My0xLjI5IDEuMDRMMTYuNCA0aC0xLjA3Yy0uNTcgMC0xLjA4LjM1LTEuMjYuODgtLjE5LjU2LjA0IDEuMTcuNTYgMS40OGwuODcuNTItLjQgMS4yNGMtLjIzLjU4LS4wNCAxLjI1LjQ1IDEuNjIuMjMuMTcuNTEuMjYuNzguMjYuMzEgMCAuNjEtLjExLjg2LS4zMmwuODEtLjcuODEuN2MuMjUuMjEuNTUuMzIuODYuMzIuMjcgMCAuNTUtLjA5Ljc4LS4yNi41LS4zNy42OC0xLjA0LjQ1LTEuNjJsLS4zOS0xLjI0Ljg3LS41MmMuNTEtLjMxLjc0LS45Mi41Ni0xLjQ4ek0xOCA3Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6TTEzLjQ5IDEwLjUxYy0uNDMtLjQzLS45NC0uNzMtMS40OS0uOTNWOGgtMXYxLjM4Yy0uMTEtLjAxLS4yMy0uMDMtLjM0LS4wMy0xLjAyIDAtMi4wNS4zOS0yLjgzIDEuMTctLjE2LjE2LS4zLjM0LS40My41M0w2IDEwLjUyYTMuMDEgMy4wMSAwIDAgMC0zLjgzIDEuODJjLS4yNy43NS0uMjMgMS41Ny4xMiAyLjI5LjIzLjQ4LjU4Ljg3IDEgMS4xNi0uMzggMS4zNS0uMDYgMi44NSAxIDMuOTFhMy45ODEgMy45ODEgMCAwIDAgMy45MSAxYy4yOS40Mi42OC43NyAxLjE2IDEgLjQyLjIuODUuMyAxLjI5LjMuMzQgMCAuNjgtLjA2IDEuMDEtLjE3YTMuMDA3IDMuMDA3IDAgMCAwIDEuODItMy44NWwtLjUyLTEuMzdjLjE4LS4xMy4zNi0uMjcuNTMtLjQzLjg3LS44NyAxLjI0LTIuMDQgMS4xNC0zLjE3SDE2di0xaC0xLjU5Yy0uMTktLjU1LS40OS0xLjA2LS45Mi0xLjV6bS04LjgyIDMuNzhjLS4yNS0uMDktLjQ1LS4yNy0uNTctLjUxcy0uMTMtLjUxLS4wNC0uNzZjLjE5LS41Mi43Ni0uNzkgMS4yNi0uNjFsMy4xNiAxLjE5Yy0xLjE1LjYtMi42MyAxLjExLTMuODEuNjl6bTYuMzIgNS42NWMtLjI1LjA5LS41Mi4wOC0uNzYtLjA0YS45ODkuOTg5IDAgMCAxLS41MS0uNTdjLS40Mi0xLjE4LjA5LTIuNjUuNy0zLjhsMS4xOCAzLjEzYy4xOC41Mi0uMDkgMS4xLS42MSAxLjI4em0xLjIxLTUuMzQtLjYxLTEuNjFjMC0uMDEtLjAxLS4wMi0uMDItLjAzbC0uMDYtLjEyYS42NzMuNjczIDAgMCAwLS4wNy0uMTFsLS4wOS0uMDktLjA5LS4wOWMtLjAzLS4wMy0uMDctLjA1LS4xMS0uMDctLjA0LS4wMi0uMDctLjA1LS4xMi0uMDYtLjAxIDAtLjAyLS4wMS0uMDMtLjAybC0xLjYtLjZhMS45NjYgMS45NjYgMCAwIDEgMi42Ny4xM2MuNzMuNzMuNzcgMS44OC4xMyAyLjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbW9qaU9iamVjdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzYy0uNDYgMC0uOTMuMDQtMS40LjE0LTIuNzYuNTMtNC45NiAyLjc2LTUuNDggNS41Mi0uNDggMi42MS40OCA1LjAxIDIuMjIgNi41Ni40My4zOC42Ni45MS42NiAxLjQ3VjE5YzAgMS4xLjkgMiAyIDJoLjI4YTEuOTggMS45OCAwIDAgMCAzLjQ0IDBIMTRjMS4xIDAgMi0uOSAyLTJ2LTIuMzFjMC0uNTUuMjItMS4wOS42NC0xLjQ2QTYuOTU2IDYuOTU2IDAgMCAwIDE5IDEwYzAtMy44Ny0zLjEzLTctNy03em0yIDE2aC00di0xaDR2MXptMC0yaC00di0xaDR2MXptLTEuNS01LjU5VjE0aC0xdi0yLjU5TDkuNjcgOS41OWwuNzEtLjcxTDEyIDEwLjVsMS42Mi0xLjYyLjcxLjcxLTEuODMgMS44MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRW1vamlQZW9wbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS44OSA4LjExQzE1LjUgNy43MiAxNC44MyA3IDEzLjUzIDdoLTIuNTRDOC4yNCA2Ljk5IDYgNC43NSA2IDJINGMwIDMuMTYgMi4xMSA1Ljg0IDUgNi43MVYyMmgydi02aDJ2NmgyVjEwLjA1TDE4Ljk1IDE0bDEuNDEtMS40MS00LjQ3LTQuNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVtb2ppU3ltYm9scyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMmg4djJIM3pNNiAxMWgyVjdoM1Y1SDN2Mmgzek0xMi40MDQgMjAuMTgybDcuNzc4LTcuNzc4IDEuNDE0IDEuNDE0LTcuNzc4IDcuNzc4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOS41XCIsXCJjeVwiOlwiMTkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTFBMi41IDIuNSAwIDAgMCAxOCA4LjVWNGgzVjJoLTR2NC41MWMtLjQyLS4zMi0uOTMtLjUxLTEuNS0uNTFhMi41IDIuNSAwIDAgMCAwIDV6TTkuNzQgMTUuOTZsLTEuNDEgMS40MS0uNzEtLjcxLjM1LS4zNWEyLjQ5OSAyLjQ5OSAwIDAgMC0xLjc3LTQuMjcgMi40OTkgMi40OTkgMCAwIDAtMS43NyA0LjI3bC4zNS4zNS0xLjA2IDEuMDZjLS45OC45OC0uOTggMi41NiAwIDMuNTQuNS41IDEuMTQuNzQgMS43OC43NHMxLjI4LS4yNCAxLjc3LS43M2wxLjA2LTEuMDYgMS40MSAxLjQxIDEuNDEtMS40MS0xLjQxLTEuNDEgMS40MS0xLjQxLTEuNDEtMS40M3pNNS44NSAxNC4yYy4xMi0uMTIuMjYtLjE1LjM1LS4xNXMuMjMuMDMuMzUuMTVjLjE5LjIuMTkuNTEgMCAuNzFsLS4zNS4zNS0uMzUtLjM2YS41MDEuNTAxIDAgMCAxIDAtLjd6bTAgNS42NWMtLjEyLjEyLS4yNi4xNS0uMzUuMTVzLS4yMy0uMDMtLjM1LS4xNWEuNTEzLjUxMyAwIDAgMSAwLS43MWwxLjA2LTEuMDYuNzEuNzEtMS4wNyAxLjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbW9qaVRyYW5zcG9ydGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNTcgMTAuNjZjLS4xNC0uNC0uNTItLjY2LS45Ny0uNjZoLTcuMTljLS40NiAwLS44My4yNi0uOTguNjZMMTAgMTQuNzdsLjAxIDUuNTFjMCAuMzguMzEuNzIuNjkuNzJoLjYyYy4zOCAwIC42OC0uMzguNjgtLjc2VjE5aDh2MS4yNGMwIC4zOC4zMS43Ni42OS43NmguNjFjLjM4IDAgLjY5LS4zNC42OS0uNzJsLjAxLTEuMzd2LTQuMTRsLTEuNDMtNC4xMXptLTguMTYuMzRoNy4xOWwxLjAzIDNoLTkuMjVsMS4wMy0zek0xMiAxN2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem04IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOWgxVjNIN3Y1SDJ2MTNoMVY5aDVWNGg2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDExaDJ2Mkg1ek0xMCA1aDJ2MmgtMnpNNSAxNWgydjJINXpNNSAxOWgydjJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRW5naW5lZXJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE1Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00ek0yMi4xIDYuODRjLjAxLS4xMS4wMi0uMjIuMDItLjM0IDAtLjEyLS4wMS0uMjMtLjAzLS4zNGwuNzQtLjU4Yy4wNy0uMDUuMDgtLjE1LjA0LS4yMmwtLjctMS4yMWMtLjA0LS4wOC0uMTQtLjEtLjIxLS4wOGwtLjg2LjM1Yy0uMTgtLjE0LS4zOC0uMjUtLjU5LS4zNGwtLjEzLS45M0EuMTgyLjE4MiAwIDAgMCAyMC4yIDNoLTEuNGMtLjA5IDAtLjE2LjA2LS4xNy4xNWwtLjEzLjkzYy0uMjEuMDktLjQxLjIxLS41OS4zNGwtLjg3LS4zNWMtLjA4LS4wMy0uMTcgMC0uMjEuMDhsLS43IDEuMjFjLS4wNC4wOC0uMDMuMTcuMDQuMjJsLjc0LjU4YTEuOTUzIDEuOTUzIDAgMCAwIDAgLjY4bC0uNzQuNThjLS4wNy4wNS0uMDguMTUtLjA0LjIybC43IDEuMjFjLjA0LjA4LjE0LjEuMjEuMDhsLjg3LS4zNWMuMTguMTQuMzguMjUuNTkuMzRsLjEzLjkzYy4wMS4wOS4wOC4xNS4xNy4xNWgxLjRjLjA5IDAgLjE2LS4wNi4xNy0uMTVsLjEzLS45M2MuMjEtLjA5LjQxLS4yMS41OS0uMzRsLjg3LjM1Yy4wOC4wMy4xNyAwIC4yMS0uMDhsLjctMS4yMWMuMDQtLjA4LjAzLS4xNy0uMDQtLjIybC0uNzMtLjU4em0tMi42LjkxYTEuMjUgMS4yNSAwIDEgMSAwLTIuNSAxLjI1IDEuMjUgMCAwIDEgMCAyLjV6TTE5LjkyIDExLjY4bC0uNS0uODdjLS4wMy0uMDYtLjEtLjA4LS4xNS0uMDZsLS42Mi4yNWMtLjEzLS4xLS4yNy0uMTgtLjQyLS4yNGwtLjA5LS42NkEuMTUuMTUgMCAwIDAgMTggMTBoLTFjLS4wNiAwLS4xMS4wNC0uMTIuMTFsLS4wOS42NmMtLjE1LjA2LS4yOS4xNS0uNDIuMjRsLS42Mi0uMjVjLS4wNi0uMDItLjEyIDAtLjE1LjA2bC0uNS44N2MtLjAzLjA2LS4wMi4xMi4wMy4xNmwuNTMuNDFjLS4wMS4wOC0uMDIuMTYtLjAyLjI0IDAgLjA4LjAxLjE3LjAyLjI0bC0uNTMuNDFjLS4wNS4wNC0uMDYuMTEtLjAzLjE2bC41Ljg3Yy4wMy4wNi4xLjA4LjE1LjA2bC42Mi0uMjVjLjEzLjEuMjcuMTguNDIuMjRsLjA5LjY2Yy4wMS4wNy4wNi4xMS4xMi4xMWgxYy4wNiAwIC4xMi0uMDQuMTItLjExbC4wOS0uNjZjLjE1LS4wNi4yOS0uMTUuNDItLjI0bC42Mi4yNWMuMDYuMDIuMTIgMCAuMTUtLjA2bC41LS44N2MuMDMtLjA2LjAyLS4xMi0uMDMtLjE2bC0uNTItLjQxYy4wMS0uMDguMDItLjE2LjAyLS4yNCAwLS4wOC0uMDEtLjE3LS4wMi0uMjRsLjUzLS40MWMuMDUtLjA0LjA2LS4xMS4wNC0uMTd6bS0yLjQyIDEuNjVjLS40NiAwLS44My0uMzgtLjgzLS44MyAwLS40Ni4zOC0uODMuODMtLjgzcy44My4zOC44My44M2MwIC40Ni0uMzcuODMtLjgzLjgzek00Ljc0IDloOC41M2MuMjcgMCAuNDktLjIyLjQ5LS40OXYtLjAyYS40OS40OSAwIDAgMC0uNDktLjQ5SDEzYzAtMS40OC0uODEtMi43NS0yLTMuNDV2Ljk1YzAgLjI4LS4yMi41LS41LjVzLS41LS4yMi0uNS0uNVY0LjE0QzkuNjggNC4wNiA5LjM1IDQgOSA0cy0uNjguMDYtMSAuMTRWNS41YzAgLjI4LS4yMi41LS41LjVTNyA1Ljc4IDcgNS41di0uOTVDNS44MSA1LjI1IDUgNi41MiA1IDhoLS4yNmEuNDkuNDkgMCAwIDAtLjQ5LjQ5di4wM2MwIC4yNi4yMi40OC40OS40OHpNOSAxM2MxLjg2IDAgMy40MS0xLjI4IDMuODYtM0g1LjE0Yy40NSAxLjcyIDIgMyAzLjg2IDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhY2UyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTcgMTMuNTJ2LS4wNEMyMy4yMSAxMi4zOCAyNCAxMC43OCAyNCA5YzAtMy4zMS0yLjY5LTYtNi02LS4yNiAwLS41Mi4wMi0uNzguMDZhNS45OCA1Ljk4IDAgMCAwLTEwLjQ0IDBDNi41MiAzLjAyIDYuMjYgMyA2IDMgMi42OSAzIDAgNS42OSAwIDljMCAxLjc4Ljc5IDMuMzggMi4wMiA0LjQ4di4wNEE2LjAwOCA2LjAwOCAwIDAgMCAwIDE4YzAgMy4zMSAyLjY5IDYgNiA2IDEuMzkgMCAyLjY3LS40OCAzLjY5LTEuMjguNzQuMTggMS41MS4yOCAyLjMxLjI4czEuNTctLjEgMi4zMS0uMjhjMS4wMi44IDIuMyAxLjI4IDMuNjkgMS4yOCAzLjMxIDAgNi0yLjY5IDYtNiAwLTEuNzgtLjc5LTMuMzgtMi4wMy00LjQ4ek0xMiAyMWMtNC40MSAwLTgtMy41OS04LTggMC0zLjcyIDIuNTYtNi44NSA2LTcuNzR2LjA1YzAgMy4zNCAyLjcyIDYuMDYgNi4wNiA2LjA2IDEuMjYgMCAyLjQ1LS4zOSAzLjQ1LTEuMDkuMzEuODYuNDkgMS43Ny40OSAyLjcyIDAgNC40MS0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFjZTMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuOTEgMTEuOTZDMjIuMzkgNi4zMiAxNy42NiAyIDEyIDJTMS42MSA2LjMyIDEuMDkgMTEuOTZsLS45IDkuODZjLS4xIDEuMTcuODIgMi4xOCAyIDIuMThoMTkuNjJjMS4xOCAwIDIuMS0xLjAxIDEuOTktMi4xOGwtLjg5LTkuODZ6TTQuNTQgOS4xM2MuODcuNTUgMS44OS44NyAyLjk2Ljg3IDEuODYgMCAzLjUtLjkzIDQuNS0yLjM1QzEzIDkuMDcgMTQuNjQgMTAgMTYuNSAxMGMxLjA3IDAgMi4wOS0uMzIgMi45Ni0uODcuMzQuODkuNTQgMS44Ni41NCAyLjg3IDAgNC40MS0zLjU5IDgtOCA4cy04LTMuNTktOC04YzAtMS4wMS4yLTEuOTguNTQtMi44N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFjZTQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy0uOTYgMC0xLjg4LjE0LTIuNzUuMzlBNC45ODYgNC45ODYgMCAwIDAgNSAwQzIuMjQgMCAwIDIuMjQgMCA1YzAgMS44Ljk2IDMuMzcgMi4zOSA0LjI1QzIuMTQgMTAuMTIgMiAxMS4wNCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwczEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOCAwLS4wNS4wMS0uMS4wMS0uMTUgMi42LS45OCA0LjY4LTIuOTkgNS43NC01LjU1YTkuOTQyIDkuOTQyIDAgMCAwIDkuOTIgMy40NmMuMjEuNzEuMzMgMS40Ni4zMyAyLjI0IDAgNC40MS0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFjZTUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOCAwLTEuMTIuMjMtMi4xOC42NS0zLjE1YS40OTUuNDk1IDAgMCAwIC44NS0uMzVjMC0uMjUtLjE5LS40NS0uNDMtLjQ5LjE1LS4yNi4zMi0uNTEuNDktLjc1LS4wMy4wOC0uMDYuMTUtLjA2LjI0IDAgLjI4LjIyLjUuNS41cy41LS4yMi41LS41UzYuMjggNyA2IDdjLS4xMyAwLS4yNS4wNS0uMzQuMTMuNTItLjY4IDEuMTUtMS4yOCAxLjg2LTEuNzZBLjQ5NS40OTUgMCAwIDAgOCA2YS40OTUuNDk1IDAgMCAwIC4xLS45OGMuMTYtLjA5LjMyLS4xNy40OS0uMjUuMDkuMTQuMjQuMjMuNDEuMjMuMjggMCAuNS0uMjIuNS0uNSAwLS4wMy0uMDEtLjA2LS4wMi0uMDkuMzktLjEzLjc5LS4yMyAxLjIxLS4zLS4xMS4xLS4xOS4yMy0uMTkuMzkgMCAuMjguMjIuNS41LjVzLjUtLjIyLjUtLjVhLjUxLjUxIDAgMCAwLS4zLS40NmMuMjYtLjAzLjUzLS4wNC44LS4wNHMuNTQuMDEuOC4wNGMtLjE4LjA4LS4zLjI1LS4zLjQ2IDAgLjI4LjIyLjUuNS41cy41LS4yMi41LS41YzAtLjE2LS4wOC0uMjktLjE5LS4zOC40MS4wNy44Mi4xNyAxLjIxLjMtLjAxLjAyLS4wMi4wNS0uMDIuMDggMCAuMjguMjIuNS41LjUuMTcgMCAuMzItLjA5LjQxLS4yMy4xNy4wOC4zMy4xNi40OS4yNUEuNDk1LjQ5NSAwIDAgMCAxNiA2Yy4yOCAwIC41LS4yMi41LS41IDAtLjA1LS4wMS0uMDktLjAzLS4xMy43MS40OCAxLjM0IDEuMDggMS44NiAxLjc2YS40OTUuNDk1IDAgMCAwLS44My4zN2MwIC4yOC4yMi41LjUuNXMuNS0uMjIuNS0uNWMwLS4wOS0uMDMtLjE2LS4wNy0uMjMuMTguMjQuMzQuNDkuNDkuNzUtLjIzLjAzLS40Mi4yMy0uNDIuNDhhLjQ5NS40OTUgMCAwIDAgLjg1LjM1Yy40Mi45Ny42NSAyLjAzLjY1IDMuMTUgMCA0LjQxLTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTRcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTdcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjYuNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3XCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEzXCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0XCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2XCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjhcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjguNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3XCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEzXCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE3XCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFjZTYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHYtLjAzYzIuMzEtLjIyIDMuNDMtMS41OSA0LjM0LTMuNDEuMTctLjM1LjUxLS41Ni45LS41Nmg1LjUzYy4zOCAwIC43Mi4yMS44OS41NS45IDEuOCAxLjk5IDMuMTkgNC4zNCAzLjQxdi4wM2MwIDQuNDItMy41OSA4LjAxLTggOC4wMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhY2Vib29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTJjMC01LjUyLTQuNDgtMTAtMTAtMTBTMiA2LjQ4IDIgMTJjMCA0Ljg0IDMuNDQgOC44NyA4IDkuOFYxNUg4di0zaDJWOS41QzEwIDcuNTcgMTEuNTcgNiAxMy41IDZIMTZ2M2gtMmMtLjU1IDAtMSAuNDUtMSAxdjJoM3YzaC0zdjYuOTVjNS4wNS0uNSA5LTQuNzYgOS05Ljk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGZW1hbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDkuNUMxNy41IDYuNDYgMTUuMDQgNCAxMiA0UzYuNSA2LjQ2IDYuNSA5LjVjMCAyLjcgMS45NCA0LjkzIDQuNSA1LjRWMTdIOXYyaDJ2Mmgydi0yaDJ2LTJoLTJ2LTIuMWMyLjU2LS40NyA0LjUtMi43IDQuNS01LjR6bS05IDBDOC41IDcuNTcgMTAuMDcgNiAxMiA2czMuNSAxLjU3IDMuNSAzLjVTMTMuOTMgMTMgMTIgMTNzLTMuNS0xLjU3LTMuNS0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpcmVwbGFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMnYyMGgyMFYySDJ6bTkuODYgMTQuOTZjLjc2LS4yNCAxLjQtMS4wNCAxLjUzLTEuNjMuMTMtLjU2LS4xLTEuMDUtLjItMS42LS4wOC0uNDYtLjA3LS44NS4wOC0xLjI4LjU0IDEuMjEgMi4xNSAxLjY0IDEuOTggMy4xOC0uMTkgMS43LTIuMTEgMi4zOC0zLjM5IDEuMzN6TTIwIDIwaC0ydi0yaC0yLjAyQTQuOTggNC45OCAwIDAgMCAxNyAxNWMwLTEuODktMS4wOS0yLjg1LTEuODUtMy4zN0MxMi4yIDkuNjEgMTMgNyAxMyA3Yy02LjczIDMuNTctNi4wMiA3LjQ3LTYgOCAuMDMuOTYuNDkgMi4wNyAxLjIzIDNINnYySDRWNGgxNnYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRml0Yml0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuODkgMTMuODljMS4wNCAwIDEuODktLjg1IDEuODktMS44OXMtLjg1LTEuODktMS44OS0xLjg5UzE4IDEwLjk2IDE4IDEycy44NSAxLjg5IDEuODkgMS44OXptLTQuMjQtLjIxYy45MyAwIDEuNjgtLjc1IDEuNjgtMS42OHMtLjc1LTEuNjgtMS42OC0xLjY4Yy0uOTMgMC0xLjY4Ljc1LTEuNjggMS42OHMuNzUgMS42OCAxLjY4IDEuNjh6bTAtNC4yNmMuOTMgMCAxLjY4LS43NSAxLjY4LTEuNjggMC0uOTMtLjc1LTEuNjgtMS42OC0xLjY4LS45MyAwLTEuNjguNzUtMS42OCAxLjY4IDAgLjkzLjc1IDEuNjggMS42OCAxLjY4em0wIDguNTFjLjkzIDAgMS42OC0uNzUgMS42OC0xLjY4IDAtLjkzLS43NS0xLjY4LTEuNjgtMS42OC0uOTMgMC0xLjY4Ljc1LTEuNjggMS42OCAwIC45Mi43NSAxLjY4IDEuNjggMS42OHptLTQuMjQtNC40NmMuODEgMCAxLjQ3LS42NiAxLjQ3LTEuNDdzLS42Ni0xLjQ3LTEuNDctMS40N2MtLjgxIDAtMS40Ny42Ni0xLjQ3IDEuNDdzLjY1IDEuNDcgMS40NyAxLjQ3em0wLTQuMjZjLjgxIDAgMS40Ny0uNjYgMS40Ny0xLjQ3cy0uNjYtMS40Ny0xLjQ3LTEuNDdjLS44MSAwLTEuNDcuNjYtMS40NyAxLjQ3cy42NSAxLjQ3IDEuNDcgMS40N3ptMCA4LjUyYy44MSAwIDEuNDctLjY2IDEuNDctMS40NyAwLS44MS0uNjYtMS40Ny0xLjQ3LTEuNDctLjgxIDAtMS40Ny42Ni0xLjQ3IDEuNDctLjAxLjgxLjY1IDEuNDcgMS40NyAxLjQ3em0wIDQuMjdjLjgxIDAgMS40Ny0uNjYgMS40Ny0xLjQ3IDAtLjgxLS42Ni0xLjQ3LTEuNDctMS40Ny0uODEgMC0xLjQ3LjY2LTEuNDcgMS40Ny0uMDEuODEuNjUgMS40NyAxLjQ3IDEuNDd6bTAtMTcuMDZjLjgxIDAgMS40Ny0uNjYgMS40Ny0xLjQ3UzEyLjIyIDIgMTEuNDEgMmMtLjgxIDAtMS40Ny42Ni0xLjQ3IDEuNDdzLjY1IDEuNDcgMS40NyAxLjQ3em0tNC4yNSA4LjMyYy43IDAgMS4yNi0uNTcgMS4yNi0xLjI2cy0uNTctMS4yNi0xLjI2LTEuMjZhMS4yNjEgMS4yNjEgMCAwIDAgMCAyLjUyem0wIDQuMjVhMS4yNjEgMS4yNjEgMCAwIDAgMC0yLjUyIDEuMjYxIDEuMjYxIDAgMCAwIDAgMi41MnptMC04LjQ5YTEuMjYxIDEuMjYxIDAgMCAwIDAtMi41MiAxLjI2MSAxLjI2MSAwIDAgMCAwIDIuNTJ6bS0zLjg3IDQuMDNhMS4wNSAxLjA1IDAgMSAwIDAtMi4xIDEuMDUgMS4wNSAwIDAgMCAwIDIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxvb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC42NyAxOWMtMS45NSAwLTIuMDkgMS0zLjMzIDEtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMSAxLTMuMzQgMS0xLjI0IDAtMS4zOC0xLTMuMzMtMS0xLjk1IDAtMi4xIDEtMy4zNCAxdjJjMS45NSAwIDIuMTEtMSAzLjM0LTEgMS4yNCAwIDEuMzggMSAzLjMzIDEgMS45NSAwIDIuMS0xIDMuMzQtMSAxLjIyIDAgMS40IDEgMy4zMyAxIDEuOTMgMCAyLjEtMSAzLjMzLTEgMS4yMiAwIDEuNCAxIDMuMzMgMXYtMmMtMS4yNCAwLTEuMzgtMS0zLjMzLTF6TTguNjggMTcuNWMxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40Ljk4IDMuMzEgMXYtMmMtLjYzIDAtMS0uMjgtMS40OC0uNTVsLTIuMDItNy41MyAyLjA5Ljg1Ljc0LTEuODZMOS43OCAyIDIgMTEuNjFsMS41NyAxLjIzIDEuMzktMS43OC45MyAzLjQ4Yy0uMTgtLjAyLS4zNS0uMDUtLjU2LS4wNS0xLjk1IDAtMi4wOSAxLTMuMzMgMXYyYzEuOSAwIDIuMTctMSAzLjM1LTEgMS4xOS4wMSAxLjQyIDEuMDEgMy4zMyAxLjAxem01LjM2LTcuMzIgMS40MiA1LjMxYy0xLjM0LjA5LTEuNDctLjk5LTMuNDctLjk5LS4zNiAwLS42NS4wNC0uOTEuMWwtLjkxLTMuMzkgMy44Ny0xLjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xsb3dUaGVTaWducyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSA1LjVjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyek01Ljc1IDguOSAzIDIzaDIuMWwxLjc1LThMOSAxN3Y2aDJ2LTcuNTVMOC45NSAxMy40bC42LTNDMTAuODUgMTIgMTIuOCAxMyAxNSAxM3YtMmMtMS44NSAwLTMuNDUtMS00LjM1LTIuNDVsLS45NS0xLjZDOS4zNSA2LjM1IDguNyA2IDggNmMtLjI1IDAtLjUuMDUtLjc1LjE1TDIgOC4zVjEzaDJWOS42NWwxLjc1LS43NU0xMyAydjdoMy43NXYxNGgxLjVWOUgyMlYyaC05em01LjAxIDZWNi4yNUgxNC41di0xLjVoMy41MVYzbDIuNDkgMi41TDE4LjAxIDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZyb250SGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljc1IDhjLS42OSAwLTEuMjUuNTYtMS4yNSAxLjI1VjE1SDE4Yy0xLjY1IDAtMyAxLjM1LTMgM2gtMWMwLTIuMDQgMS41My0zLjcyIDMuNS0zLjk3VjMuMjVhMS4yNSAxLjI1IDAgMCAwLTIuNSAwVjExaC0xVjEuMjVhMS4yNSAxLjI1IDAgMCAwLTIuNSAwVjExaC0xVjIuNzVhMS4yNSAxLjI1IDAgMCAwLTIuNSAwVjEySDdWNS43NWExLjI1IDEuMjUgMCAwIDAtMi41IDB2MTBjMCA0LjU2IDMuNjkgOC4yNSA4LjI1IDguMjVTMjEgMjAuMzEgMjEgMTUuNzV2LTYuNUMyMSA4LjU2IDIwLjQ0IDggMTkuNzUgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR2lybCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDcuNWMuOTcgMCAxLjc1LS43OCAxLjc1LTEuNzVTMTIuOTcgNCAxMiA0cy0xLjc1Ljc4LTEuNzUgMS43NVMxMS4wMyA3LjUgMTIgNy41em0yIDguNXY0aC00di00SDhsMi4zOC02LjM4YTEuNzMzIDEuNzMzIDAgMCAxIDMuMjQgMEwxNiAxNmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JvdXBBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgOVY3aC0ydjJoLTJ2MmgydjJoMnYtMmgyVjl6TTggMTJjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTQtNCAxLjc5LTQgNCAxLjc5IDQgNCA0ek04IDEzYy0yLjY3IDAtOCAxLjM0LTggNHYzaDE2di0zYzAtMi42Ni01LjMzLTQtOC00ek0xMi41MSA0LjA1QzEzLjQzIDUuMTEgMTQgNi40OSAxNCA4cy0uNTcgMi44OS0xLjQ5IDMuOTVDMTQuNDcgMTEuNyAxNiAxMC4wNCAxNiA4cy0xLjUzLTMuNy0zLjQ5LTMuOTV6TTE2LjUzIDEzLjgzQzE3LjQyIDE0LjY2IDE4IDE1LjcgMTggMTd2M2gydi0zYzAtMS40NS0xLjU5LTIuNTEtMy40Ny0zLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcm91cE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDhjMC0xLjQyLS41LTIuNzMtMS4zMy0zLjc2LjQyLS4xNC44Ni0uMjQgMS4zMy0uMjQgMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDRoLS4xOGwtLjc3LS43N2MuNi0uOTQuOTUtMi4wNS45NS0zLjIzem03LjgzIDEySDIzdi0zYzAtMi4xOC0zLjU4LTMuNDctNi4zNC0zLjg3IDEuMS43NSAxLjk1IDEuNzEgMi4yMyAyLjk0TDIyLjgzIDIwek03LjI0IDQuNDFhMy45OTYgMy45OTYgMCAwIDEgNS4zNSA1LjM1TDcuMjQgNC40MXpNOS4xNyAxMkg5Yy0yLjIxIDAtNC0xLjc5LTQtNHYtLjE3TC42OSAzLjUxIDIuMSAyLjFsMTkuOCAxOS44LTEuNDEgMS40MUwxNyAxOS44M1YyMEgxdi0zYzAtMi42NiA1LjMzLTQgOC00IC4zNyAwIC44LjAzIDEuMjUuMDhMOS4xNyAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JvdXBSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA5djJoLTZWOWg2ek04IDRDNS43OSA0IDQgNS43OSA0IDhzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgOWMtMi42NyAwLTggMS4zNC04IDR2M2gxNnYtM2MwLTIuNjYtNS4zMy00LTgtNHptNC41MS04Ljk1QzEzLjQzIDUuMTEgMTQgNi40OSAxNCA4cy0uNTcgMi44OS0xLjQ5IDMuOTVDMTQuNDcgMTEuNyAxNiAxMC4wNCAxNiA4cy0xLjUzLTMuNy0zLjQ5LTMuOTV6bTQuMDIgOS43OEMxNy40MiAxNC42NiAxOCAxNS43IDE4IDE3djNoMnYtM2MwLTEuNDUtMS41OS0yLjUxLTMuNDctMy4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMWMxLjY2IDAgMi45OS0xLjM0IDIuOTktM1MxNy42NiA1IDE2IDVjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDN6bS04IDBjMS42NiAwIDIuOTktMS4zNCAyLjk5LTNTOS42NiA1IDggNUM2LjM0IDUgNSA2LjM0IDUgOHMxLjM0IDMgMyAzem0wIDJjLTIuMzMgMC03IDEuMTctNyAzLjVWMTloMTR2LTIuNWMwLTIuMzMtNC42Ny0zLjUtNy0zLjV6bTggMGMtLjI5IDAtLjYyLjAyLS45Ny4wNSAxLjE2Ljg0IDEuOTcgMS45NyAxLjk3IDMuNDVWMTloNnYtMi41YzAtMi4zMy00LjY3LTMuNS03LTMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JvdXBzMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjI3IDEyaDMuNDZhMS41IDEuNSAwIDAgMCAxLjQ4LTEuNzVsLS4zLTEuNzlhMi45NTEgMi45NTEgMCAwIDAtNS44Mi4wMWwtLjMgMS43OWMtLjE1LjkxLjU1IDEuNzQgMS40OCAxLjc0ek0xLjY2IDExLjExYy0uMTMuMjYtLjE4LjU3LS4xLjg4LjE2LjY5Ljc2IDEuMDMgMS41MyAxaDEuOTVjLjgzIDAgMS41MS0uNTggMS41MS0xLjI5IDAtLjE0LS4wMy0uMjctLjA3LS40LS4wMS0uMDMtLjAxLS4wNS4wMS0uMDguMDktLjE2LjE0LS4zNC4xNC0uNTMgMC0uMzEtLjE0LS42LS4zNi0uODItLjAzLS4wMy0uMDMtLjA2LS4wMi0uMS4wNy0uMi4wNy0uNDMuMDEtLjY1YTEuMTIgMS4xMiAwIDAgMC0uOTktLjc0LjA5LjA5IDAgMCAxLS4wNy0uMDNDNS4wMyA4LjE0IDQuNzIgOCA0LjM3IDhjLS4zIDAtLjU3LjEtLjc1LjI2LS4wMy4wMy0uMDYuMDMtLjA5LjAyYTEuMjQgMS4yNCAwIDAgMC0xLjcgMS4wM2MwIC4wMi0uMDEuMDQtLjAzLjA2LS4yOS4yNi0uNDYuNjUtLjQxIDEuMDUuMDMuMjIuMTIuNDMuMjUuNi4wMy4wMi4wMy4wNi4wMi4wOXpNMTYuMjQgMTMuNjVjLTEuMTctLjUyLTIuNjEtLjktNC4yNC0uOS0xLjYzIDAtMy4wNy4zOS00LjI0LjlBMi45ODggMi45ODggMCAwIDAgNiAxNi4zOVYxOGgxMnYtMS42MWMwLTEuMTgtLjY4LTIuMjYtMS43Ni0yLjc0ek0xLjIyIDE0LjU4QTIuMDEgMi4wMSAwIDAgMCAwIDE2LjQzVjE4aDQuNXYtMS42MWMwLS44My4yMy0xLjYxLjYzLTIuMjktLjM3LS4wNi0uNzQtLjEtMS4xMy0uMS0uOTkgMC0xLjkzLjIxLTIuNzguNTh6TTIyLjc4IDE0LjU4QTYuOTUgNi45NSAwIDAgMCAyMCAxNGMtLjM5IDAtLjc2LjA0LTEuMTMuMS40LjY4LjYzIDEuNDYuNjMgMi4yOVYxOEgyNHYtMS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6TTIyIDExdi0uNWMwLTEuMS0uOS0yLTItMmgtMmMtLjQyIDAtLjY1LjQ4LS4zOS44MWwuNy42M2MtLjE5LjMxLS4zMS42Ny0uMzEgMS4wNiAwIDEuMS45IDIgMiAyczItLjkgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcm91cHMzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMjQgMTMuNjVjLTEuMTctLjUyLTIuNjEtLjktNC4yNC0uOS0xLjYzIDAtMy4wNy4zOS00LjI0LjlBMi45ODggMi45ODggMCAwIDAgNiAxNi4zOVYxOGgxMnYtMS42MWMwLTEuMTgtLjY4LTIuMjYtMS43Ni0yLjc0ek0xLjIyIDE0LjU4QTIuMDEgMi4wMSAwIDAgMCAwIDE2LjQzVjE4aDQuNXYtMS42MWMwLS44My4yMy0xLjYxLjYzLTIuMjktLjM3LS4wNi0uNzQtLjEtMS4xMy0uMS0uOTkgMC0xLjkzLjIxLTIuNzguNTh6TTIyLjc4IDE0LjU4QTYuOTUgNi45NSAwIDAgMCAyMCAxNGMtLjM5IDAtLjc2LjA0LTEuMTMuMS40LjY4LjYzIDEuNDYuNjMgMi4yOVYxOEgyNHYtMS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6TTEyIDEyYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3pNMS40OTcgMTEgNCA4LjQ5NyA2LjUwMyAxMSA0IDEzLjUwM3pNMjAgOWwtMi41IDRoNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JvdXBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTIuNzVjMS42MyAwIDMuMDcuMzkgNC4yNC45IDEuMDguNDggMS43NiAxLjU2IDEuNzYgMi43M1YxOEg2di0xLjYxYzAtMS4xOC42OC0yLjI2IDEuNzYtMi43MyAxLjE3LS41MiAyLjYxLS45MSA0LjI0LS45MXpNNCAxM2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTEuMTMgMS4xYy0uMzctLjA2LS43NC0uMS0xLjEzLS4xLS45OSAwLTEuOTMuMjEtMi43OC41OEEyLjAxIDIuMDEgMCAwIDAgMCAxNi40M1YxOGg0LjV2LTEuNjFjMC0uODMuMjMtMS42MS42My0yLjI5ek0yMCAxM2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTQgMy40M2MwLS44MS0uNDgtMS41My0xLjIyLTEuODVBNi45NSA2Ljk1IDAgMCAwIDIwIDE0Yy0uMzkgMC0uNzYuMDQtMS4xMy4xLjQuNjguNjMgMS40Ni42MyAyLjI5VjE4SDI0di0xLjU3ek0xMiA2YzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGFuZHNoYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNDggMTAuNDFjLS4zOS4zOS0xLjA0LjM5LTEuNDMgMGwtNC40Ny00LjQ2LTcuMDUgNy4wNC0uNjYtLjYzYTMgMyAwIDAgMSAwLTQuMjRsNC4yNC00LjI0YTMgMyAwIDAgMSA0LjI0IDBMMTYuNDggOWMuMzkuMzkuMzkgMS4wMiAwIDEuNDF6bS43LTIuMTJjLjc4Ljc4Ljc4IDIuMDUgMCAyLjgzLTEuMjcgMS4yNy0yLjYxLjIyLTIuODMgMGwtMy43Ni0zLjc2LTUuNTcgNS41N2EuOTk2Ljk5NiAwIDAgMCAwIDEuNDFjLjM5LjM5IDEuMDIuMzkgMS40MiAwbDQuNjItNC42Mi43MS43MS00LjYyIDQuNjJhLjk5Ni45OTYgMCAwIDAgMCAxLjQxYy4zOS4zOSAxLjAyLjM5IDEuNDIgMGw0LjYyLTQuNjIuNzEuNzEtNC42MiA0LjYyYS45OTYuOTk2IDAgMSAwIDEuNDEgMS40MWw0LjYyLTQuNjIuNzEuNzEtNC42MiA0LjYyYS45OTYuOTk2IDAgMSAwIDEuNDEgMS40MWw4LjMyLTguMzRhMyAzIDAgMCAwIDAtNC4yNGwtNC4yNC00LjI0YTMuMDAxIDMuMDAxIDAgMCAwLTQuMTgtLjA2bDQuNDcgNC40N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGVhbHRoQW5kU2FmZXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNSAxM0g4di0zaDIuNVY3LjVoM1YxMEgxNnYzaC0yLjV2Mi41aC0zVjEzek0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWFydEJyb2tlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgM2MtLjk2IDAtMS45LjI1LTIuNzMuNjlMMTIgOWgzbC0zIDEwIDEtOWgtM2wxLjU0LTUuMzlDMTAuNDcgMy42MSA5LjAxIDMgNy41IDMgNC40MiAzIDIgNS40MiAyIDguNWMwIDQuMTMgNC4xNiA3LjE4IDEwIDEyLjUgNS40Ny00Ljk0IDEwLTguMjYgMTAtMTIuNUMyMiA1LjQyIDE5LjU4IDMgMTYuNSAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIaWtpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTQgNS4yOGMtMS4yMy0uMzctMi4yMi0xLjE3LTIuOC0yLjE4bC0xLTEuNmMtLjQxLS42NS0xLjExLTEtMS44NC0xLS43OCAwLTEuNTkuNS0xLjc4IDEuNDRTNyAyMyA3IDIzaDIuMWwxLjgtOCAyLjEgMnY2aDJ2LTcuNWwtMi4xLTIgLjYtM2MxIDEuMTUgMi40MSAyLjAxIDQgMi4zNFYyM0gxOVY5aC0xLjV2MS43OHpNNy40MyAxMy4xM2wtMi4xMi0uNDFhLjk5OS45OTkgMCAwIDEtLjc5LTEuMTdsLjc2LTMuOTNhMiAyIDAgMCAxIDIuMzQtMS41OGwxLjE2LjIzLTEuMzUgNi44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGlzdG9yeUVkdSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNHYxLjM4Yy0uODMtLjMzLTEuNzItLjUtMi42MS0uNS0xLjc5IDAtMy41OC42OC00Ljk1IDIuMDVsMy4zMyAzLjMzaDEuMTF2MS4xMWMuODYuODYgMS45OCAxLjMxIDMuMTEgMS4zNlYxNUg2djNjMCAxLjEuOSAyIDIgMmgxMGMxLjY2IDAgMy0xLjM0IDMtM1Y0SDl6bS0xLjExIDYuNDFWOC4yNkg1LjYxTDQuNTcgNy4yMmE1LjA3IDUuMDcgMCAwIDEgMS44Mi0uMzRjMS4zNCAwIDIuNTkuNTIgMy41NCAxLjQ2bDEuNDEgMS40MS0uMi4yYTIuNyAyLjcgMCAwIDEtMS45Mi44Yy0uNDcgMC0uOTMtLjEyLTEuMzMtLjM0ek0xOSAxN2MwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMXYtMmgtNnYtMi41OWMuNTctLjIzIDEuMS0uNTcgMS41Ni0xLjAzbC4yLS4yTDE1LjU5IDE0SDE3di0xLjQxbC02LTUuOTdWNmg4djExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuNzkgOCAxLjgtMy0xLjgtM2gtMy41OGwtMS44IDMgMS44IDN6TTEwLjIxIDlsLTEuOCAzIDEuOCAzaDMuNThsMS44LTMtMS44LTN6TTE2LjQ1IDExLjUxaDMuNTlsMS43OS0zLTEuNzktM2gtMy41OWwtMS44IDN6TTIwLjA0IDEyLjUxaC0zLjU5bC0xLjggMyAxLjggM2gzLjU5bDEuNzktM3pNNy41NSAxMS41MWwxLjgtMy0xLjgtM0gzLjk2bC0xLjc5IDMgMS43OSAzek03LjU1IDEyLjUxSDMuOTZsLTEuNzkgMyAxLjc5IDNoMy41OWwxLjgtM3pNMTAuMjEgMTZsLTEuOCAzIDEuOCAzaDMuNThsMS44LTMtMS44LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEljZVNrYXRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDguNWMwLS4yOC4yMi0uNS41LS41aDIuNTJMMTEgN0g4LjVjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNUgxMVYzSDN2MTVoM3YySDJ2MmgxNmMyLjc2IDAgNS0yLjI0IDUtNWgtMmMwIDEuNjYtMS4zNCAzLTMgM2gtMnYtMmgzdi0yLjg4YzAtMi4xLTEuNTUtMy41My0zLjAzLTMuODhsLTIuNy0uNjdjLS44Ny0uMjItMS41Ny0uODEtMS45NS0xLjU3SDguNWMtLjI4IDAtLjUtLjIyLS41LS41ek0xNCAyMEg4di0yaDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW50ZXJlc3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4wMiAxM2MtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6TTEzIDEzdjhoOHYtOGgtOHpNNyAybC01IDloMTBMNyAyem0xMi4yNS41Yy0xLjA2IDAtMS44MS41Ni0yLjI1IDEuMTctLjQ0LS42MS0xLjE5LTEuMTctMi4yNS0xLjE3QzEzLjE5IDIuNSAxMiAzLjc4IDEyIDUuMjVjMCAyIDIuNDIgMy40MiA1IDUuNzUgMi41OC0yLjMzIDUtMy43NSA1LTUuNzUgMC0xLjQ3LTEuMTktMi43NS0yLjc1LTIuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZElvc1NoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNiA1LTEuNDIgMS40Mi0xLjU5LTEuNTlWMTZoLTEuOThWNC44M0w5LjQyIDYuNDIgOCA1bDQtNCA0IDR6bTQgNXYxMWMwIDEuMS0uOSAyLTIgMkg2YTIgMiAwIDAgMS0yLTJWMTBjMC0xLjExLjg5LTIgMi0yaDN2Mkg2djExaDEyVjEwaC0zVjhoM2EyIDIgMCAwIDEgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLYXlha2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDIzYy0xLjAzIDAtMi4wNi0uMjUtMy0uNzUtMS44OSAxLTQuMTEgMS02IDAtMS44OSAxLTQuMTEgMS02IDAtLjk1LjUtMS45Ny43NS0zIC43NUgydi0yaDFjMS4wNCAwIDIuMDgtLjM1IDMtMSAxLjgzIDEuMyA0LjE3IDEuMyA2IDAgMS44MyAxLjMgNC4xNyAxLjMgNiAwIC45MS42NSAxLjk2IDEgMyAxaDF2MmgtMXpNMTIgNS41Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMTIgMTJzLTEuNTIuNzEtMy45MyAxLjM3Yy0uODItLjIzLTEuNTMtLjc1LTIuMDctMS4zNy0uNzMuODQtMS44IDEuNS0zIDEuNXMtMi4yNy0uNjYtMy0xLjVjLS43My44NC0xLjggMS41LTMgMS41cy0yLjI3LS42Ni0zLTEuNWMtLjU0LjYxLTEuMjUgMS4xMy0yLjA3IDEuMzdDMS41MiAxOC4yMSAwIDE3LjUgMCAxNy41czIuOTMtMS4zNiA3LjEzLTIuMDhsMS4zNS00LjE3Yy4zMS0uOTUgMS4zMi0xLjQ3IDIuMjctMS4xNi4wOS4wMy4xOS4wNy4yNy4xMWwyLjQ3IDEuMyAyLjg0LTEuNSAxLjY1LTMuNzEtLjUxLTEuMzJMMTguOCAyIDIyIDMuNDMgMjAuNjcgNi40bC0xLjMxLjUtMy43MiA4LjM0YzQuODUuNjMgOC4zNiAyLjI2IDguMzYgMi4yNnptLTguOTgtNC41NC0xLjUyLjgtMS43NS0uOTItLjcxIDIuMTdjLjMyIDAgLjY0LS4wMS45Ni0uMDEuNzEgMCAxLjQuMDMgMi4wNy4wOGwuOTUtMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2luZ0JlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTYgN2g1djNINnpNMTMgN2g1djNoLTV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEwVjdjMC0xLjEtLjktMi0yLTJINmMtMS4xIDAtMiAuOS0yIDJ2M2MtMS4xIDAtMiAuOS0yIDJ2NWgxLjMzTDQgMTloMWwuNjctMmgxMi42N2wuNjYgMmgxbC42Ny0ySDIydi01YzAtMS4xLS45LTItMi0yem0tOSAwSDZWN2g1djN6bTcgMGgtNVY3aDV2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2l0ZXN1cmZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDNjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptMTQuMDYtMmgtMi4xMkwxNS41IDMuNDRsMS4wNiAxLjA2IDMuNS0zLjV6TTIyIDIzdi0yaC0xYy0xLjA0IDAtMi4wOC0uMzUtMy0xLTEuODMgMS4zLTQuMTcgMS4zLTYgMC0xLjgzIDEuMy00LjE3IDEuMy02IDAtLjkxLjY1LTEuOTYgMS0zIDFIMnYyaDFjMS4wMyAwIDIuMDUtLjI1IDMtLjc1IDEuODkgMSA0LjExIDEgNiAwIDEuODkgMSA0LjExIDEgNiAwIC45NS41IDEuOTcuNzUgMyAuNzVoMXptLTEtOS43MmMwIDEuNDQtMi4xOSAzLjYyLTUuMDQgNS41OC0uMzEuMDktLjYzLjE0LS45Ni4xNC0xLjIgMC0yLjI3LS42Ni0zLTEuNS0uNzMuODQtMS44IDEuNS0zIDEuNS0uOTQgMC0xLjgxLS40MS0yLjQ5LS45OS40Ni0uMzkuOTYtLjc4IDEuNDktMS4xN2wtMS41NS0yLjk3QTQuMDYgNC4wNiAwIDAgMSA2IDEyVjhjMC0xLjEuOS0yIDItMmgzYzEuMzggMCAyLjYzLS41NiAzLjU0LTEuNDZsMS40MSAxLjQxQTcuMDE4IDcuMDE4IDAgMCAxIDExIDhIOS42djMuNWgyLjhsMS42OSAxLjg4YzEuOTUtLjg0IDMuNzctMS4zOCA1LjA2LTEuMzguODQgMCAxLjg1LjI1IDEuODUgMS4yOHptLTguOC45OS0uNy0uNzctMi41LjEuODMgMi4wMWMuNTktLjM4IDEuODEtMS4wNiAyLjM3LTEuMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExhbmRzbGlkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjQ3IDEzLjc5LTIuNTgtMS4wM0w2IDE1LjA1bC00LTEuNTR2Mi4xbDQgMS4zNHpNMTAuNTcgMTEuNDIgOCA4SDJ2My42MWw0IDEuMzR6TTYgMTkuMDVsLTQtMS4zM1YyMmgyMGwtNC45Ny02LjYyek0xNyA2VjFsLTUtMS0zIDJ2NGwzIDJ6TTE4LjUgNyAxNiA5djNsMi41IDIgNC41LTJWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYXRpb25DaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTFWNWwtMy0zLTMgM3YySDN2MTRoMThWMTFoLTZ6bS04IDhINXYtMmgydjJ6bTAtNEg1di0yaDJ2MnptMC00SDVWOWgydjJ6bTYgOGgtMnYtMmgydjJ6bTAtNGgtMnYtMmgydjJ6bTAtNGgtMlY5aDJ2MnptMC00aC0yVjVoMnYyem02IDEyaC0ydi0yaDJ2MnptMC00aC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTHVnZ2FnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDZoLTJWM2MwLS41NS0uNDUtMS0xLTFoLTRjLS41NSAwLTEgLjQ1LTEgMXYzSDdjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDIgMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xaDZjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xYzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6TTkuNSAxOEg4VjloMS41djl6bTMuMjUgMGgtMS41VjloMS41djl6bS43NS0xMmgtM1YzLjVoM1Y2ek0xNiAxOGgtMS41VjlIMTZ2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSAxMWMxLjkzIDAgMy41IDEuNTcgMy41IDMuNVMxMS40MyAxOCA5LjUgMTggNiAxNi40MyA2IDE0LjUgNy41NyAxMSA5LjUgMTF6bTAtMkM2LjQ2IDkgNCAxMS40NiA0IDE0LjVTNi40NiAyMCA5LjUgMjBzNS41LTIuNDYgNS41LTUuNWMwLTEuMTYtLjM2LTIuMjMtLjk3LTMuMTJMMTggNy40MlYxMGgyVjRoLTZ2MmgyLjU4bC0zLjk3IDMuOTdDMTEuNzMgOS4zNiAxMC42NiA5IDkuNSA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYW4yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgN2gtNGMtMS4xIDAtMiAuOS0yIDJ2NmgyLjV2N2gzdi03SDE2VjljMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hbjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA3aC00Yy0xLjEgMC0yIC45LTIgMnY2aDJ2N2g0di03aDJWOWMwLTEuMS0uOS0yLTItMnpNMTIgMS43NTEgMTQuMjQ4IDQgMTIgNi4yNDggOS43NSA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYW40IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNzUgN2gtMy41QzkuMDQgNyA4LjExIDguMDcgOC4yNyA5LjI2TDEwIDIyaDRsMS43My0xMi43NEMxNS44OSA4LjA3IDE0Ljk2IDcgMTMuNzUgN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgN2gtNGMtMS4xIDAtMiAuOS0yIDJ2NmgydjdoNHYtN2gyVjljMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hc2tzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNSA2Yy0xLjMxIDAtMi4zNyAxLjAxLTIuNDggMi4zLTEuODgtLjUtMi44NC0xLjgtNS4wMi0xLjgtMi4xOSAwLTMuMTQgMS4zLTUuMDIgMS44QzYuODcgNy4wMiA1LjgxIDYgNC41IDZBMi41IDIuNSAwIDAgMCAyIDguNVY5YzAgNiAzLjYgNy44MSA2LjUyIDcuOThDOS41MyAxNy42MiAxMC43MiAxOCAxMiAxOHMyLjQ3LS4zOCAzLjQ4LTEuMDJDMTguNCAxNi44MSAyMiAxNSAyMiA5di0uNUEyLjUgMi41IDAgMCAwIDE5LjUgNnptLTE2IDN2LS41YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYzYzAgMS4yOC4zOCAyLjQ3IDEuMDEgMy40OEM0Ljk5IDE0LjI3IDMuNSAxMi42NSAzLjUgOXptMTcgMGMwIDMuNjUtMS40OSA1LjI3LTMuMDEgNS45OC42NC0xLjAxIDEuMDEtMi4yIDEuMDEtMy40OHYtM2MwLS41NS40NS0xIDEtMXMxIC40NSAxIDFWOXptLTkuODEgMS40OGMtLjQ0LjI2LS45Ni41Ni0xLjY5Ljc2VjEwLjJjLjQ4LS4xNy44NC0uMzggMS4xOC0uNThDMTAuNzIgOS4zIDExLjIzIDkgMTIgOXMxLjI3LjMgMS44LjYyYy4zNC4yLjcxLjQyIDEuMi41OXYxLjA0Yy0uNzUtLjIxLTEuMjYtLjUxLTEuNzEtLjc4LS40Ni0uMjctLjgtLjQ3LTEuMjktLjQ3cy0uODQuMi0xLjMxLjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNaWxpdGFyeVRlY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMC40M1YySDd2OC40M2MwIC4zNS4xOC42OC40OS44Nmw0LjE4IDIuNTEtLjk5IDIuMzQtMy40MS4yOSAyLjU5IDIuMjRMOS4wNyAyMiAxMiAyMC4yMyAxNC45MyAyMmwtLjc4LTMuMzMgMi41OS0yLjI0LTMuNDEtLjI5LS45OS0yLjM0IDQuMTgtMi41MWMuMy0uMTguNDgtLjUuNDgtLjg2em0tNCAxLjgtMSAuNi0xLS42VjNoMnY5LjIzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb29kQmFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTMuNS05Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNXMuNjcgMS41IDEuNSAxLjV6bS03IDBjLjgzIDAgMS41LS42NyAxLjUtMS41UzkuMzMgOCA4LjUgOCA3IDguNjcgNyA5LjUgNy42NyAxMSA4LjUgMTF6bTMuNSAzYy0yLjMzIDAtNC4zMSAxLjQ2LTUuMTEgMy41aDEwLjIyYy0uOC0yLjA0LTIuNzgtMy41LTUuMTEtMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0zLjUtOWMuODMgMCAxLjUtLjY3IDEuNS0xLjVTMTYuMzMgOCAxNS41IDggMTQgOC42NyAxNCA5LjVzLjY3IDEuNSAxLjUgMS41em0tNyAwYy44MyAwIDEuNS0uNjcgMS41LTEuNVM5LjMzIDggOC41IDggNyA4LjY3IDcgOS41IDcuNjcgMTEgOC41IDExem0zLjUgNi41YzIuMzMgMCA0LjMxLTEuNDYgNS4xMS0zLjVINi44OWMuOCAyLjA0IDIuNzggMy41IDUuMTEgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROaWdodHNTdGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMSAxMi4wOGMtMi4zMy00LjUxLS41LTguNDguNTMtMTAuMDdDNi4yNyAyLjIgMS45OCA2LjU5IDEuOTggMTJjMCAuMTQuMDIuMjguMDIuNDIuNjItLjI3IDEuMjktLjQyIDItLjQyIDEuNjYgMCAzLjE4LjgzIDQuMSAyLjE1QTQuMDEgNC4wMSAwIDAgMSAxMSAxOGMwIDEuNTItLjg3IDIuODMtMi4xMiAzLjUxLjk4LjMyIDIuMDMuNSAzLjExLjUgMy41IDAgNi41OC0xLjggOC4zNy00LjUyLTIuMzYuMjMtNi45OC0uOTctOS4yNi01LjQxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE2aC0uMThDNi40IDE0Ljg0IDUuMyAxNCA0IDE0Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzaDNjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb0FkdWx0Q29udGVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTQgMTJjMC0xLjg1LjYzLTMuNTQgMS42OS00LjlMNy41OSA5aDIuODNMNy4xIDUuNjlBNy45MjQgNy45MjQgMCAwIDEgMTIgNGM0LjQxIDAgOCAzLjU5IDggOCAwIDEuODUtLjYzIDMuNTQtMS42OSA0LjlsLTEuOS0xLjloLTIuODNsMy4zMSAzLjMxQTcuODc0IDcuODc0IDAgMCAxIDEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuMjUgMTQtMS41LTIgMS41LTJoLTEuNUwxMiAxMWwtLjc1LTFoLTEuNWwxLjUgMi0xLjUgMmgxLjVsLjc1LTEgLjc1IDF6TTggMTBsLS43NSAxLS43NS0xSDVsMS41IDJMNSAxNGgxLjVsLjc1LTFMOCAxNGgxLjVMOCAxMmwxLjUtMnpNMTYgMTRsLjc1LTEgLjc1IDFIMTlsLTEuNS0yIDEuNS0yaC0xLjVsLS43NSAxLS43NS0xaC0xLjVsMS41IDItMS41IDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vTHVnZ2FnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjc1IDl2LjkybDEuNzUgMS43NVY5SDE2djQuMTdsMyAzVjhjMC0xLjEtLjktMi0yLTJoLTJWM2MwLS41NS0uNDUtMS0xLTFoLTRjLS41NSAwLTEgLjQ1LTEgMXYzaC0uMTdsMyAzaC45MnpNMTAuNSAzLjVoM1Y2aC0zVjMuNXptMTAuNjkgMTcuNjlMMi44MSAyLjgxIDEuMzkgNC4yMmwzLjYzIDMuNjNjMCAuMDUtLjAyLjEtLjAyLjE1djExYzAgMS4xLjkgMiAyIDIgMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xaDZjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xYy4zNCAwIC42NS0uMDkuOTMtLjI0bDEuODUgMS44NSAxLjQxLTEuNDJ6TTggMTh2LTcuMTdsMS41IDEuNVYxOEg4em00Ljc1IDBoLTEuNXYtMy45MmwxLjUgMS41VjE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3JkaWNXYWxraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMjNoLTEuNXYtOUgxOXY5ek03LjUzIDE0SDZsLTIgOWgxLjUzbDItOXptNS45Ny04LjVjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyek05LjggOC45IDcgMjNoMi4xbDEuOC04IDIuMSAydjZoMnYtNy41bC0yLjEtMiAuNi0zQzE0LjggMTIgMTYuOCAxMyAxOSAxM3YtMmMtMS45IDAtMy41LTEtNC4zLTIuNGwtMS0xLjZhMi4xNDUgMi4xNDUgMCAwIDAtMi42NS0uODRMNiA4LjNWMTNoMlY5LjZsMS44LS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RpZmljYXRpb25BZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAyMGg0YzAgMS4xLS45IDItMiAycy0yLS45LTItMnptNC0xMWMwIDIuNjEgMS42NyA0LjgzIDQgNS42NlYxN2gydjJINHYtMmgydi03YzAtMi43OSAxLjkxLTUuMTQgNC41LTUuOHYtLjdjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjV2LjdjLjcxLjE4IDEuMzYuNDkgMS45NS45QTUuOTAyIDUuOTAyIDAgMCAwIDE0IDl6bTEwLTFoLTNWNWgtMnYzaC0zdjJoM3YzaDJ2LTNoM1Y4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RpZmljYXRpb25zQWN0aXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41OCA0LjA4IDYuMTUgMi42NUMzLjc1IDQuNDggMi4xNyA3LjMgMi4wMyAxMC41aDJhOC40NDUgOC40NDUgMCAwIDEgMy41NS02LjQyem0xMi4zOSA2LjQyaDJjLS4xNS0zLjItMS43My02LjAyLTQuMTItNy44NWwtMS40MiAxLjQzYTguNDk1IDguNDk1IDAgMCAxIDMuNTQgNi40MnpNMTggMTFjMC0zLjA3LTEuNjQtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4QzcuNjMgNS4zNiA2IDcuOTIgNiAxMXY1bC0yIDJ2MWgxNnYtMWwtMi0ydi01em0tNiAxMWMuMTQgMCAuMjctLjAxLjQtLjA0LjY1LS4xNCAxLjE4LS41OCAxLjQ0LTEuMTguMS0uMjQuMTUtLjUuMTUtLjc4aC00Yy4wMSAxLjEuOSAyIDIuMDEgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm90aWZpY2F0aW9uc05vbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMmMxLjEgMCAyLS45IDItMmgtNGMwIDEuMS45IDIgMiAyem02LTZ2LTVjMC0zLjA3LTEuNjMtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4QzcuNjQgNS4zNiA2IDcuOTIgNiAxMXY1bC0yIDJ2MWgxNnYtMWwtMi0yem0tMiAxSDh2LTZjMC0yLjQ4IDEuNTEtNC41IDQtNC41czQgMi4wMiA0IDQuNXY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RpZmljYXRpb25zT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTguNjkgNy44NCA2LjE0IDUuMjcgMy40OSA0IDQuNzZsMi44IDIuOHYuMDFjLS41Mi45OS0uOCAyLjE2LS44IDMuNDJ2NWwtMiAydjFoMTMuNzNsMiAyTDIxIDE5LjcybC0xLTEuMDN6TTEyIDIyYzEuMTEgMCAyLS44OSAyLTJoLTRjMCAxLjExLjg5IDIgMiAyem02LTcuMzJWMTFjMC0zLjA4LTEuNjQtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4Yy0uMTUuMDMtLjI5LjA4LS40Mi4xMi0uMS4wMy0uMi4wNy0uMy4xMWgtLjAxYy0uMDEgMC0uMDEgMC0uMDIuMDEtLjIzLjA5LS40Ni4yLS42OC4zMSAwIDAtLjAxIDAtLjAxLjAxTDE4IDE0LjY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RpZmljYXRpb25zUGF1c2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJjMS4xIDAgMi0uOSAyLTJoLTRhMiAyIDAgMCAwIDIgMnptNi02di01YzAtMy4wNy0xLjY0LTUuNjQtNC41LTYuMzJWNGMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41di42OEM3LjYzIDUuMzYgNiA3LjkzIDYgMTF2NWwtMiAydjFoMTZ2LTFsLTItMnptLTMuNS02LjItMi44IDMuNGgyLjhWMTVoLTV2LTEuOGwyLjgtMy40SDkuNVY4aDV2MS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RpZmljYXRpb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMmMxLjEgMCAyLS45IDItMmgtNGEyIDIgMCAwIDAgMiAyem02LTZ2LTVjMC0zLjA3LTEuNjQtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4QzcuNjMgNS4zNiA2IDcuOTIgNiAxMXY1bC0yIDJ2MWgxNnYtMWwtMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRkb29yR3JpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAyMmMxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtM2MtMS4zIDAtMi40Ljg0LTIuODIgMkg5LjE0bDEuOTktMy4wNmE2LjM2IDYuMzYgMCAwIDAgMS43NCAwbDEuMDIgMS41N2MuNDItLjUzLjk2LS45NSAxLjYtMS4yMWwtLjYtLjkzQTYuOTkyIDYuOTkyIDAgMCAwIDE5IDhINWMwIDIuODQgMS42OSA1LjI3IDQuMTIgNi4zN2wtMy45NSA2LjA4YTEgMSAwIDAgMCAuMjkgMS4zOCAxIDEgMCAwIDAgMS4zOC0uMjlsMS0xLjU1aDYuMzRDMTQuNiAyMS4xNiAxNS43IDIyIDE3IDIyem0wLTRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXpNOS40MSA3aDFjLjE1LTEuMTUuMjMtMS42NC0uODktMi45Ni0uNDItLjUtLjY4LS43Ny0uNDYtMi4wNGgtLjk5Yy0uMjEgMS4xMS4wMyAyLjA1Ljg5IDIuOTYuMjIuMjQuNzkuNjcuNDUgMi4wNHpNMTEuODkgN2gxYy4xNS0xLjE1LjIzLTEuNjQtLjg5LTIuOTYtLjQyLS41LS42OC0uNzgtLjQ2LTIuMDRoLS45OWMtLjIxIDEuMTEuMDMgMi4wNS44OSAyLjk2LjIzLjI0LjguNjcuNDUgMi4wNHpNMTQuNDEgN2gxYy4xNS0xLjE1LjIzLTEuNjQtLjg5LTIuOTYtLjQyLS41LS42OC0uNzctLjQ2LTIuMDRoLS45OWMtLjIxIDEuMTEuMDMgMi4wNS44OSAyLjk2LjIyLjI0Ljc5LjY3LjQ1IDIuMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhZ2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1djZoNUw3IDdsNCAxVjNINWMtMS4xIDAtMiAuOS0yIDJ6bTUgOEgzdjZjMCAxLjEuOSAyIDIgMmg2di01bC00IDEgMS00em05IDQtNC0xdjVoNmMxLjEgMCAyLS45IDItMnYtNmgtNWwxIDR6bTItMTRoLTZ2NWw0LTEtMSA0aDVWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFyYWdsaWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxN2MtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bS0zLjQ4Ljk0QzguMDQgMTcuNTUgNyAxNi43NiA3IDE0SDVjMCAyLjcuOTMgNC40MSAyLjMgNS41LjUuNCAxLjEuNyAxLjcuOVYyNGg2di0zLjZjLjYtLjIgMS4yLS41IDEuNy0uOSAxLjM3LTEuMDkgMi4zLTIuOCAyLjMtNS41aC0yYzAgMi43Ni0xLjA0IDMuNTUtMS41MiAzLjk0QzE0LjY4IDE4LjU0IDE0IDE5IDEyIDE5cy0yLjY4LS40Ni0zLjQ4LTEuMDZ6TTEyIDBDNS45MiAwIDEgMS45IDEgNC4yNXYzLjQ5YzAgLjgxLjg4IDEuMjYgMS41Ni44My4xNC0uMDkuMjgtLjE4LjQ0LS4yNkw1IDEzaDJsMS41LTYuMjhhMjcuODUyIDI3Ljg1MiAwIDAgMSA3IDBMMTcgMTNoMmwyLTQuNjljLjE2LjA5LjMuMTcuNDQuMjYuNjguNDMgMS41Ni0uMDIgMS41Ni0uODNWNC4yNUMyMyAxLjkgMTguMDggMCAxMiAwek01Ljg4IDExLjI0IDQuMzcgNy42OWMuNzUtLjI4IDEuNi0uNTIgMi41My0uNzFsLTEuMDIgNC4yNnptMTIuMjQgMEwxNy4xIDYuOThjLjkzLjE5IDEuNzguNDMgMi41My43MWwtMS41MSAzLjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYXJ0eU1vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0aC0zLjE3TDE1IDJIOUw3LjE3IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tOCAzYzEuNjMgMCAzLjA2Ljc5IDMuOTggMkgxMmMtMS42NiAwLTMgMS4zNC0zIDMgMCAuMzUuMDcuNjkuMTggMUg3LjFBNS4wMDIgNS4wMDIgMCAwIDEgMTIgN3ptMCAxMGMtMS42MyAwLTMuMDYtLjc5LTMuOTgtMkgxMmMxLjY2IDAgMy0xLjM0IDMtMyAwLS4zNS0uMDctLjY5LS4xOC0xaDIuMDhhNS4wMDIgNS4wMDIgMCAwIDEtNC45IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlb3BsZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNi42NyAxMy4xM0MxOC4wNCAxNC4wNiAxOSAxNS4zMiAxOSAxN3YzaDR2LTNjMC0yLjE4LTMuNTctMy40Ny02LjMzLTMuODd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjhcIixcInJcIjpcIjRcIixcImZpbGxSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNSAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNGMtLjQ3IDAtLjkxLjEtMS4zMy4yNGE1Ljk4IDUuOTggMCAwIDEgMCA3LjUyYy40Mi4xNC44Ni4yNCAxLjMzLjI0ek05IDEzYy0yLjY3IDAtOCAxLjM0LTggNHYzaDE2di0zYzAtMi42Ni01LjMzLTQtOC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZW9wbGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAxM2MtMS4yIDAtMy4wNy4zNC00LjUgMS0xLjQzLS42Ny0zLjMtMS00LjUtMUM1LjMzIDEzIDEgMTQuMDggMSAxNi4yNVYxOWgyMnYtMi43NWMwLTIuMTctNC4zMy0zLjI1LTYuNS0zLjI1em0tNCA0LjVoLTEwdi0xLjI1YzAtLjU0IDIuNTYtMS43NSA1LTEuNzVzNSAxLjIxIDUgMS43NXYxLjI1em05IDBIMTR2LTEuMjVjMC0uNDYtLjItLjg2LS41Mi0xLjIyLjg4LS4zIDEuOTYtLjUzIDMuMDItLjUzIDIuNDQgMCA1IDEuMjEgNSAxLjc1djEuMjV6TTcuNSAxMmMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVM5LjQzIDUgNy41IDUgNCA2LjU3IDQgOC41IDUuNTcgMTIgNy41IDEyem0wLTUuNWMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTkgNS41YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzE4LjQzIDUgMTYuNSA1IDEzIDYuNTcgMTMgOC41czEuNTcgMy41IDMuNSAzLjV6bTAtNS41YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVvcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTFjMS42NiAwIDIuOTktMS4zNCAyLjk5LTNTMTcuNjYgNSAxNiA1Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzem0tOCAwYzEuNjYgMCAyLjk5LTEuMzQgMi45OS0zUzkuNjYgNSA4IDVDNi4zNCA1IDUgNi4zNCA1IDhzMS4zNCAzIDMgM3ptMCAyYy0yLjMzIDAtNyAxLjE3LTcgMy41VjE5aDE0di0yLjVjMC0yLjMzLTQuNjctMy41LTctMy41em04IDBjLS4yOSAwLS42Mi4wMi0uOTcuMDUgMS4xNi44NCAxLjk3IDEuOTcgMS45NyAzLjQ1VjE5aDZ2LTIuNWMwLTIuMzMtNC42Ny0zLjUtNy0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcnNvbjIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4zOSAxNC41NkMxNi43MSAxMy43IDE0LjUzIDEzIDEyIDEzcy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA0IDE3LjIyVjIwaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTkuNzggMTJoNC40NGMxLjIxIDAgMi4xNC0xLjA2IDEuOTgtMi4yNmwtLjMyLTIuNDVDMTUuNTcgNS4zOSAxMy45MiA0IDEyIDRTOC40MyA1LjM5IDguMTIgNy4yOUw3LjggOS43NGMtLjE2IDEuMi43NyAyLjI2IDEuOTggMi4yNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjM5IDE0LjU2QzE2LjcxIDEzLjcgMTQuNTMgMTMgMTIgMTNzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDQgMTcuMjJWMjBoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpNMTAgMTJoNGMxLjY2IDAgMy0xLjM0IDMtMyAwLS43My0uMjctMS40LS43MS0xLjkyLjEzLS4zMy4yMS0uNy4yMS0xLjA4YTMgMyAwIDAgMC0xLjg2LTIuNzdDMTQgMi40OCAxMy4wNiAyIDEyIDJzLTIgLjQ4LTIuNjQgMS4yM0EzIDMgMCAwIDAgNy41IDZjMCAuMzguMDguNzUuMjEgMS4wOEM3LjI3IDcuNiA3IDguMjcgNyA5YzAgMS42NiAxLjM0IDMgMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb240IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMzkgMTQuNTZDMTYuNzEgMTMuNyAxNC41MyAxMyAxMiAxM3MtNC43MS43LTYuMzkgMS41NkEyLjk3IDIuOTcgMCAwIDAgNCAxNy4yMlYyMGgxNnYtMi43OGMwLTEuMTItLjYxLTIuMTUtMS42MS0yLjY2ek0xMiAxMmMyLjIxIDAgNC0xLjc5IDQtNFY0LjVjMC0uODMtLjY3LTEuNS0xLjUtMS41LS41MiAwLS45OC4yNy0xLjI1LjY3LS4yNy0uNC0uNzMtLjY3LTEuMjUtLjY3cy0uOTguMjctMS4yNS42N2MtLjI3LS40LS43My0uNjctMS4yNS0uNjdDOC42NyAzIDggMy42NyA4IDQuNVY4YzAgMi4yMSAxLjc5IDQgNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb25BZGRBbHQxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOGMwLTIuMjEtMS43OS00LTQtNFM1IDUuNzkgNSA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptMiAydjJoM3YzaDJ2LTNoM3YtMmgtM1Y3aC0ydjNoLTN6TTEgMTh2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHMtOCAxLjM0LTggNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uQWRkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOGMwLTIuMjEtMS43OS00LTQtNFM1IDUuNzkgNSA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptLTIgMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6TTEgMTh2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHMtOCAxLjM0LTggNHptMiAwYy4yLS43MSAzLjMtMiA2LTIgMi42OSAwIDUuNzggMS4yOCA2IDJIM3ptMTctM3YtM2gzdi0yaC0zVjdoLTJ2M2gtM3YyaDN2M2gyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb25BZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bS05LTJWN0g0djNIMXYyaDN2M2gydi0zaDN2LTJINnptOSA0Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb25PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjY1IDUuODJhMy45OTkgMy45OTkgMCAxIDEgNS41MyA1LjUzTDguNjUgNS44MnpNMjAgMTcuMTdjLS4wMi0xLjEtLjYzLTIuMTEtMS42MS0yLjYyLS41NC0uMjgtMS4xMy0uNTQtMS43Ny0uNzZMMjAgMTcuMTd6bTEuMTkgNC4wMkwyLjgxIDIuODEgMS4zOSA0LjIybDguODkgOC44OWMtMS44MS4yMy0zLjM5Ljc5LTQuNjcgMS40NUEyLjk3IDIuOTcgMCAwIDAgNCAxNy4yMlYyMGgxMy4xN2wyLjYxIDIuNjEgMS40MS0xLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb25PdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNS45YTIuMSAyLjEgMCAxIDEgMCA0LjIgMi4xIDIuMSAwIDAgMSAwLTQuMm0wIDljMi45NyAwIDYuMSAxLjQ2IDYuMSAyLjF2MS4xSDUuOVYxN2MwLS42NCAzLjEzLTIuMSA2LjEtMi4xTTEyIDRDOS43OSA0IDggNS43OSA4IDhzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgOWMtMi42NyAwLTggMS4zNC04IDR2M2gxNnYtM2MwLTIuNjYtNS4zMy00LTgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uUmVtb3ZlQWx0MSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDhjMC0yLjIxLTEuNzktNC00LTRTNiA1Ljc5IDYgOHMxLjc5IDQgNCA0IDQtMS43OSA0LTR6bTMgMnYyaDZ2LTJoLTZ6TTIgMTh2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHMtOCAxLjM0LTggNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uUmVtb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOGMwLTIuMjEtMS43OS00LTQtNFM2IDUuNzkgNiA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptMyAydjJoNnYtMmgtNnpNMiAxOHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00cy04IDEuMzQtOCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAgMmMtMi42NyAwLTggMS4zNC04IDR2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uYWxJbmp1cnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDZjMC0yLjIxIDEuNzktNCA0LTRzNCAxLjc5IDQgNC0xLjc5IDQtNCA0LTQtMS43OS00LTR6bTkgMTZoMWMxLjEgMCAyLS45IDItMnYtNC43OGMwLTEuMTItLjYxLTIuMTUtMS42MS0yLjY2LS40My0uMjItLjktLjQzLTEuMzktLjYyVjIyem0tNC42Ni01TDE1IDExLjMzYy0uOTMtLjIxLTEuOTMtLjMzLTMtLjMzLTIuNTMgMC00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA0IDE1LjIyVjIyaDIuMzRjLS4yMi0uNDUtLjM0LS45Ni0uMzQtMS41QzYgMTguNTcgNy41NyAxNyA5LjUgMTdoMi44NHpNMTAgMjJsMS40MS0zSDkuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVTOC42NyAyMiA5LjUgMjJoLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBpYW5vT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMTkgMjEuMTkgMi44MSAyLjgxIDEuMzkgNC4yMiAzIDUuODNWMTljMCAxLjEuOSAyIDIgMmgxMy4xN2wxLjYxIDEuNjEgMS40MS0xLjQyek04LjI1IDE5SDVWNy44M2wyIDJ2My42N2MwIC41NS40NSAxIDEgMWguMjVWMTl6bTEuNSAwdi00LjVIMTBjLjQ2IDAgLjgyLS4zMS45NC0uNzNsMy4zMSAzLjMxVjE5aC00LjV6TTExIDguMTcgNS44MyAzSDE5YzEuMSAwIDIgLjkgMiAydjEzLjE3bC0yLTJWNWgtMnY4LjVjMCAuMTktLjA3LjM2LS4xNi41MUwxMyAxMC4xN1Y1aC0ydjMuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBpYW5vIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS01IDExLjVoLjI1VjE5aC00LjV2LTQuNUgxMGMuNTUgMCAxLS40NSAxLTFWNWgydjguNWMwIC41NS40NSAxIDEgMXpNNSA1aDJ2OC41YzAgLjU1LjQ1IDEgMSAxaC4yNVYxOUg1VjV6bTE0IDE0aC0zLjI1di00LjVIMTZjLjU1IDAgMS0uNDUgMS0xVjVoMnYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGl4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuNDUgMTYuNTItMy4wMS0zLjAxYy0uMTEtLjExLS4yNC0uMTMtLjMxLS4xM3MtLjIuMDItLjMxLjEzTDguOCAxNi41M2MtLjM0LjM0LS44Ny44OS0yLjY0Ljg5bDMuNzEgMy43YTMgMyAwIDAgMCA0LjI0IDBsMy43Mi0zLjcxYy0uOTEgMC0xLjY3LS4xOC0yLjM4LS44OXpNOC44IDcuNDdsMy4wMiAzLjAyYy4wOC4wOC4yLjEzLjMxLjEzcy4yMy0uMDUuMzEtLjEzbDIuOTktMi45OWMuNzEtLjc0IDEuNTItLjkxIDIuNDMtLjkxbC0zLjcyLTMuNzFhMyAzIDAgMCAwLTQuMjQgMGwtMy43MSAzLjdjMS43NiAwIDIuMy41OCAyLjYxLjg5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS4xMSA5Ljg1LTIuMjUtMi4yNkgxNy42Yy0uNTQgMC0xLjA4LjIyLTEuNDUuNjFsLTMgM2MtLjI4LjI4LS42NS40Mi0xLjAyLjQyYTEuNSAxLjUgMCAwIDEtMS4wMi0uNDJMOC4wOSA4LjE3Yy0uMzgtLjM4LS45LS42LTEuNDUtLjZINS4xN2wtMi4yOSAyLjNhMyAzIDAgMCAwIDAgNC4yNGwyLjI5IDIuM2gxLjQ4Yy41NCAwIDEuMDYtLjIyIDEuNDUtLjZsMy4wMi0zLjAyYy4yOC0uMjguNjUtLjQyIDEuMDItLjQycy43NC4xNCAxLjAyLjQybDMuMDEgMy4wMWMuMzguMzguOS42IDEuNDUuNmgxLjI2bDIuMjUtMi4yNmEzLjA0MiAzLjA0MiAwIDAgMC0uMDItNC4yOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGx1c09uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDhIOHY0SDR2Mmg0djRoMnYtNGg0di0yaC00em00LjUtMS45MlY3LjlsMi41LS41VjE4aDJWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG9sbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQcmVjaXNpb25NYW51ZmFjdHVyaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkuOTMgOC4yMS0zLjYgMS42OEwxNCA3LjdWNi4zbDIuMzMtMi4xOSAzLjYgMS42OGMuMzguMTguODIuMDEgMS0uMzYuMTgtLjM4LjAxLS44Mi0uMzYtMUwxNi42NSAyLjZhLjk5My45OTMgMCAwIDAtMS4xMy4ybC0xLjc0IDEuNkEuOTc1Ljk3NSAwIDAgMCAxMyA0Yy0uNTUgMC0xIC40NS0xIDF2MUg4LjgyQzguMzQgNC42NSA2Ljk4IDMuNzMgNS40IDQuMDdjLTEuMTYuMjUtMi4xNSAxLjI1LTIuMzYgMi40My0uMjIgMS4zMi40NiAyLjQ3IDEuNDggMy4wOEw3LjA4IDE4SDR2M2gxM3YtM2gtMy42Mkw4LjQxIDguNzdjLjE3LS4yNC4zMS0uNDkuNDEtLjc3SDEydjFjMCAuNTUuNDUgMSAxIDEgLjMyIDAgLjYtLjE2Ljc4LS40bDEuNzQgMS42Yy4zLjMuNzUuMzggMS4xMy4ybDMuOTItMS44M2MuMzgtLjE4LjU0LS42Mi4zNi0xYS43NTMuNzUzIDAgMCAwLTEtLjM2ek02IDhjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHN5Y2hvbG9neUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljk0IDkuMDZDMTkuNSA1LjczIDE2LjU3IDMgMTMgMyA5LjQ3IDMgNi41NyA1LjYxIDYuMDggOWwtMS45MyAzLjQ4Yy0uNDEuNjYuMDcgMS41Mi44NSAxLjUyaDF2MmMwIDEuMS45IDIgMiAyaDF2M2g3di00LjY4YTcuMDE2IDcuMDE2IDAgMCAwIDMuOTQtNy4yNnpNMTIuNSAxNGMtLjQxIDAtLjc0LS4zMy0uNzQtLjc0cy4zMy0uNzMuNzQtLjczLjczLjMyLjczLjczLS4zMS43NC0uNzMuNzR6bTEuNzYtNC4zMmMtLjQ0LjY1LS44Ni44NS0xLjA5IDEuMjctLjA5LjE3LS4xMy4yOC0uMTMuODJoLTEuMDZjMC0uMjktLjA0LS43NS4xOC0xLjE2LjI4LS41MS44My0uODEgMS4xNC0xLjI2LjMzLS40Ny4xNS0xLjM2LS44LTEuMzYtLjYyIDAtLjkyLjQ3LTEuMDUuODZsLS45Ni0uNGMuMjctLjc4Ljk3LTEuNDUgMi4wMS0xLjQ1Ljg2IDAgMS40NS4zOSAxLjc1Ljg4LjI2LjQzLjQxIDEuMjIuMDEgMS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQc3ljaG9sb2d5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOC41N2ExLjQzIDEuNDMgMCAxIDAgMCAyLjg2IDEuNDMgMS40MyAwIDAgMCAwLTIuODZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDNDOS4yNSAzIDYuMiA1Ljk0IDYuMDIgOS42NEw0LjEgMTIuMmEuNS41IDAgMCAwIC40LjhINnYzYzAgMS4xLjkgMiAyIDJoMXYzaDd2LTQuNjhBNi45OTkgNi45OTkgMCAwIDAgMTMgM3ptMyA3YzAgLjEzLS4wMS4yNi0uMDIuMzlsLjgzLjY2Yy4wOC4wNi4xLjE2LjA1LjI1bC0uOCAxLjM5Yy0uMDUuMDktLjE2LjEyLS4yNC4wOWwtLjk5LS40Yy0uMjEuMTYtLjQzLjI5LS42Ny4zOUwxNCAxMy44M2MtLjAxLjEtLjEuMTctLjIuMTdoLTEuNmMtLjEgMC0uMTgtLjA3LS4yLS4xN2wtLjE1LTEuMDZjLS4yNS0uMS0uNDctLjIzLS42OC0uMzlsLS45OS40Yy0uMDkuMDMtLjIgMC0uMjUtLjA5bC0uOC0xLjM5YS4xOS4xOSAwIDAgMSAuMDUtLjI1bC44NC0uNjZjLS4wMS0uMTMtLjAyLS4yNi0uMDItLjM5cy4wMi0uMjcuMDQtLjM5bC0uODUtLjY2Yy0uMDgtLjA2LS4xLS4xNi0uMDUtLjI2bC44LTEuMzhjLjA1LS4wOS4xNS0uMTIuMjQtLjA5bDEgLjRjLjItLjE1LjQzLS4yOS42Ny0uMzlMMTIgNi4xN2MuMDItLjEuMS0uMTcuMi0uMTdoMS42Yy4xIDAgLjE4LjA3LjIuMTdsLjE1IDEuMDZjLjI0LjEuNDYuMjMuNjcuMzlsMS0uNGMuMDktLjAzLjIgMCAuMjQuMDlsLjggMS4zOGEuMi4yIDAgMCAxLS4wNS4yNmwtLjg1LjY2Yy4wMy4xMi4wNC4yNS4wNC4zOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHVibGljT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOC4xNyA2LjQ5IDMuNjZBOS45MSA5LjkxIDAgMCAxIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTAgMCAyLjA0LS42MSAzLjkzLTEuNjYgNS41MWwtMS40Ni0xLjQ2QTcuODQyIDcuODQyIDAgMCAwIDIwIDEyYzAtMy4zNS0yLjA3LTYuMjItNS03LjQxVjVjMCAxLjEtLjkgMi0yIDJoLTJ2MS4xN3ptMTAuMTkgMTMuMDItMS40MSAxLjQxLTIuMjctMi4yN0E5LjgzOSA5LjgzOSAwIDAgMSAxMiAyMkM2LjQ4IDIyIDIgMTcuNTIgMiAxMmMwLTIuMDQuNjEtMy45MyAxLjY2LTUuNTFMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM5IDE4LjM4ek0xMSAxOGMtMS4xIDAtMi0uOS0yLTJ2LTFsLTQuNzktNC43OUM0LjA4IDEwLjc5IDQgMTEuMzggNCAxMmMwIDQuMDggMy4wNSA3LjQ0IDcgNy45M1YxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHVibGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTEgMTcuOTNjLTMuOTUtLjQ5LTctMy44NS03LTcuOTMgMC0uNjIuMDgtMS4yMS4yMS0xLjc5TDkgMTV2MWMwIDEuMS45IDIgMiAydjEuOTN6bTYuOS0yLjU0Yy0uMjYtLjgxLTEtMS4zOS0xLjktMS4zOWgtMXYtM2MwLS41NS0uNDUtMS0xLTFIOHYtMmgyYy41NSAwIDEtLjQ1IDEtMVY3aDJjMS4xIDAgMi0uOSAyLTJ2LS40MWMyLjkzIDEuMTkgNSA0LjA2IDUgNy40MSAwIDIuMDgtLjggMy45Ny0yLjEgNS4zOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVhbEVzdGF0ZUFnZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAyMmg0VjExSDF2MTF6bTE5LTVoLTdsLTIuMDktLjczLjMzLS45NEwxMyAxNmgyLjgyYy42NSAwIDEuMTgtLjUzIDEuMTgtMS4xOCAwLS40OS0uMzEtLjkzLS43Ny0xLjExTDguOTcgMTFIN3Y5LjAyTDE0IDIybDgtM2MtLjAxLTEuMS0uODktMi0yLTJ6TTE0IDEuNWwtNyA1VjloMmw4LjE0IDMuMjZDMTguMjYgMTIuNzEgMTkgMTMuNzkgMTkgMTVoMlY2LjVsLTctNXptLS41IDguNWgtMVY5aDF2MXptMC0yaC0xVjdoMXYxem0yIDJoLTFWOWgxdjF6bTAtMmgtMVY3aDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVjb21tZW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmExMCAxMCAwIDEgMCAxMCAxMEExMCAxMCAwIDAgMCAxMiAyem02IDkuOGEuOS45IDAgMCAxLS4xLjVsLTIuMSA0LjlhMS4zNCAxLjM0IDAgMCAxLTEuMy44SDlhMiAyIDAgMCAxLTItMnYtNWExLjI4IDEuMjggMCAwIDEgLjQtMUwxMiA1bC42OS42OWExLjA4IDEuMDggMCAwIDEgLjMuN3YuMkwxMi40MSAxMEgxN2ExIDEgMCAwIDEgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWN5Y2xpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Ljc3IDcuMTUgNy4yIDQuNzhsMS4wMy0xLjcxYy4zOS0uNjUgMS4zMy0uNjUgMS43MiAwbDEuNDggMi40Ni0xLjIzIDIuMDYtMSAxLjYyLTMuNDMtMi4wNnptMTUuOTUgNS44Mi0xLjYtMi42Ni0zLjQ2IDJMMTguODcgMTZIMjBhMiAyIDAgMCAwIDItMmMwLS4zNi0uMS0uNzEtLjI4LTEuMDN6TTE2IDIxaDEuNWEyIDIgMCAwIDAgMS43OS0xLjExTDIwLjc0IDE3SDE2di0ybC00IDQgNCA0di0yem0tNi00SDUuN2wtLjg0IDEuNDFjLS4zLjUtLjMyIDEuMTItLjA2IDEuNjUuMjguNTcuODcuOTQgMS41Mi45NEgxMHYtNHptLTMuODgtMi42NSAxLjczIDEuMDRMNi40OCA5LjkgMSAxMS4yN2wxLjcgMS4wMi0uNDEuNjljLS4zNS41OS0uMzggMS4zMS0uMDcgMS45MmwxLjYzIDMuMjYgMi4yNy0zLjgxem0xMC45LTkuMjEtMS4zLTIuMTdDMTUuMzUgMi4zNyAxNC43IDIgMTQgMmgtMy41M2wzLjEyIDUuMi0xLjcyIDEuMDMgNS40OSAxLjM3IDEuMzctNS40OS0xLjcxIDEuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlZHVjZUNhcGFjaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNGMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem00Ljc4IDMuNThBNi45NSA2Ljk1IDAgMCAwIDE4IDdjLS42NyAwLTEuMzEuMS0xLjkyLjI4LjU4LjU1LjkyIDEuMzIuOTIgMi4xNVYxMGg1di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1ek02IDZjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0xLjkyIDEuMjhDNy4zMSA3LjEgNi42NyA3IDYgN2MtLjk5IDAtMS45My4yMS0yLjc4LjU4QTIuMDEgMi4wMSAwIDAgMCAyIDkuNDNWMTBoNXYtLjU3YzAtLjgzLjM0LTEuNi45Mi0yLjE1ek0xMCA0YzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTYgNkg4di0uNTdjMC0uODEuNDgtMS41MyAxLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAxIDUuNTYgMEEyLjAxIDIuMDEgMCAwIDEgMTYgOS40M1YxMHptLTEgNmMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem02IDZoLTh2LS41N2MwLS44MS40OC0xLjUzIDEuMjItMS44NWE2Ljk1IDYuOTUgMCAwIDEgNS41NiAwQTIuMDEgMi4wMSAwIDAgMSAyMSAyMS40M1YyMnpNNSAxNmMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem02IDZIM3YtLjU3YzAtLjgxLjQ4LTEuNTMgMS4yMi0xLjg1YTYuOTUgNi45NSAwIDAgMSA1LjU2IDBBMi4wMSAyLjAxIDAgMCAxIDExIDIxLjQzVjIyem0xLjc1LTl2LTJoLTEuNXYySDlsMyAzIDMtM2gtMi4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVtb3ZlTW9kZXJhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuMjcgMjEuNzMtMy41NC0zLjU1TDUuNzggNS4yMyAyLjI3IDEuNzIgMSAyLjk5IDMuMDEgNUgzdjZjMCA1LjU1IDMuODQgMTAuNzQgOSAxMiAyLjE2LS41MyA0LjA4LTEuNzYgNS42LTMuNDFMMjEgMjNsMS4yNy0xLjI3ek0xMyA5LjkybDYuNjcgNi42N0MyMC41MSAxNC44NyAyMSAxMi45NiAyMSAxMVY1bC05LTQtNS40OCAyLjQ0TDExIDcuOTJsMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb2xsZXJTa2F0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA2LjVjMC0uMjguMjItLjUuNS0uNWgyLjUyTDEyIDVIOS41Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVIMTJWMUg0djE1aDE2di0yLjg4YzAtMi4xLTEuNTUtMy41My0zLjAzLTMuODhsLTIuNy0uNjdjLS44Ny0uMjItMS41Ny0uODEtMS45NS0xLjU3SDkuNWMtLjI4IDAtLjUtLjIyLS41LS41ek01IDIzYy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3ptMTQgMGMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6bS03IDBjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYWZldHlEaXZpZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNWgydjE0aC0yVjV6bS02IDdjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0yLjc4IDEuNThhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgMSAxNS40M1YxNmg4di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1ek0xOSAxMmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTIuNzggMS41OGE2Ljk1IDYuOTUgMCAwIDAtNS41NiAwQTIuMDEgMi4wMSAwIDAgMCAxNSAxNS40M1YxNmg4di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYW5pdGl6ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDYuNUMxNS41IDUuNjYgMTcgNCAxNyA0czEuNSAxLjY2IDEuNSAyLjVjMCAuODMtLjY3IDEuNS0xLjUgMS41cy0xLjUtLjY3LTEuNS0xLjV6bTQgOC41YTIuNSAyLjUgMCAwIDAgMi41LTIuNWMwLTEuNjctMi41LTQuNS0yLjUtNC41UzE3IDEwLjgzIDE3IDEyLjVhMi41IDIuNSAwIDAgMCAyLjUgMi41ek0xMyAxNGgtMnYtMkg5djJIN3YyaDJ2Mmgydi0yaDJ2LTJ6bTMtMnYxMEg0VjEyYzAtMi45NyAyLjE2LTUuNDMgNS01LjkxVjRIN1YyaDZjMS4xMyAwIDIuMTUuMzkgMi45OSAxLjAxbC0xLjQzIDEuNDNDMTQuMSA0LjE3IDEzLjU3IDQgMTMgNGgtMnYyLjA5YzIuODQuNDggNSAyLjk0IDUgNS45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2NhbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMVY4YzQuNTYtLjU4IDgtMy4xIDgtNkgyYzAgMi45IDMuNDQgNS40MiA4IDZ2M2MtMy42OC43My04IDMuNjEtOCAxMWg2di0ySDQuMTNjLjkzLTYuODMgNi42NS03LjIgNy44Ny03LjJzNi45NC4zNyA3Ljg3IDcuMkgxNnYyaDZjMC03LjM5LTQuMzItMTAuMjctOC0xMXptLTIgMTFjLTEuMSAwLTItLjktMi0yIDAtLjU1LjIyLTEuMDUuNTktMS40MUMxMS4zOSAxNy43OSAxNiAxNiAxNiAxNnMtMS43OSA0LjYxLTIuNTkgNS40MWMtLjM2LjM3LS44Ni41OS0xLjQxLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY2hvb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEzLjE4djRMMTIgMjFsNy0zLjgydi00TDEyIDE3bC03LTMuODJ6TTEyIDMgMSA5bDExIDYgOS00LjkxVjE3aDJWOUwxMiAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY2llbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOCAxOC40IDE0IDEwLjY3VjYuNWwxLjM1LTEuNjljLjI2LS4zMy4wMy0uODEtLjM5LS44MUg5LjA0Yy0uNDIgMC0uNjUuNDgtLjM5LjgxTDEwIDYuNXY0LjE3TDQuMiAxOC40Yy0uNDkuNjYtLjAyIDEuNi44IDEuNmgxNGMuODIgMCAxLjI5LS45NC44LTEuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2NvcmVib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgMTMuNUgxNnYtM2gxLjV2M3pNMjAgNGgtM1YyaC0ydjJIOVYySDd2Mkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTkuNSAxMS41YzAgLjU1LS40NSAxLTEgMWgtMnYxaDNWMTVINXYtMi41YzAtLjU1LjQ1LTEgMS0xaDJ2LTFINVY5aDMuNWMuNTUgMCAxIC40NSAxIDF2MS41em0zLjI1IDYuNWgtMS41di0xLjVoMS41VjE4em0wLTMuNWgtMS41VjEzaDEuNXYxLjV6bTAtMy41aC0xLjVWOS41aDEuNVYxMXptMC0zLjVoLTEuNVY2aDEuNXYxLjV6TTE5IDE0YzAgLjU1LS40NSAxLTEgMWgtMi41Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFIMThjLjU1IDAgMSAuNDUgMSAxdjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjdWJhRGl2aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAxM2MwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem03Ljg5LTIuODkgNC41My0xLjIxLS43OC0yLjktNC41MyAxLjIxYy0uOC4yMS0xLjI4IDEuMDQtMS4wNiAxLjg0LjIyLjggMS4wNCAxLjI4IDEuODQgMS4wNnpNMjAuNSA1LjkgMjMgM2wtMS0xLTMgMy0yIDQtOS40OCAyLjg3Yy0uODIuMi0xLjM5Ljg5LTEuNSAxLjY4TDUuMjQgMTggMi40IDIxLjggNCAyM2wzLTQgMS4xNC0zLjE0TDE0IDE0bDUtMy41IDEuNS00LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbGZJbXByb3ZlbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE2di0yYy0yLjI0IDAtNC4xNi0uOTYtNS42LTIuNjhsLTEuMzQtMS42QTEuOTggMS45OCAwIDAgMCAxMi41MyA5aC0xLjA1Yy0uNTkgMC0xLjE1LjI2LTEuNTMuNzJsLTEuMzQgMS42QzcuMTYgMTMuMDQgNS4yNCAxNCAzIDE0djJjMi43NyAwIDUuMTktMS4xNyA3LTMuMjVWMTVsLTMuODggMS41NWMtLjY3LjI3LTEuMTIuOTMtMS4xMiAxLjY2QzUgMTkuMiA1LjggMjAgNi43OSAyMEg5di0uNWEyLjUgMi41IDAgMCAxIDIuNS0yLjVoM2MuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjVoLTNjLS44MyAwLTEuNS42Ny0xLjUgMS41di41aDcuMjFjLjk5IDAgMS43OS0uOCAxLjc5LTEuNzkgMC0uNzMtLjQ1LTEuMzktMS4xMi0xLjY2TDE0IDE1di0yLjI1YzEuODEgMi4wOCA0LjIzIDMuMjUgNyAzLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZW50aW1lbnREaXNzYXRpc2ZpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0wLTMuNWMuNzMgMCAxLjM5LjE5IDEuOTcuNTMuMTItLjE0Ljg2LS45OCAxLjAxLTEuMTRBNS4zOSA1LjM5IDAgMCAwIDEyIDE1Yy0xLjExIDAtMi4xMy4zMy0yLjk5Ljg4Ljk3IDEuMDkuMDEuMDIgMS4wMSAxLjE0LjU5LS4zMyAxLjI1LS41MiAxLjk4LS41MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VudGltZW50TmV1dHJhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNS41aDZ2MUg5di0xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VudGltZW50U2F0aXNmaWVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptMC00Yy0uNzMgMC0xLjM4LS4xOC0xLjk2LS41Mi0uMTIuMTQtLjg2Ljk4LTEuMDEgMS4xNWE1LjQ5IDUuNDkgMCAwIDAgNS45NS0uMDFjLS45Ny0xLjA5LS4wMS0uMDItMS4wMS0xLjE1LS41OS4zNS0xLjI0LjUzLTEuOTcuNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbnRpbWVudFZlcnlEaXNzYXRpc2ZpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0wLTZjLTIuMzMgMC00LjMyIDEuNDUtNS4xMiAzLjVoMS42N2MuNjktMS4xOSAxLjk3LTIgMy40NS0yczIuNzUuODEgMy40NSAyaDEuNjdjLS44LTIuMDUtMi43OS0zLjUtNS4xMi0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbnRpbWVudFZlcnlTYXRpc2ZpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0tNS02Yy43OCAyLjM0IDIuNzIgNCA1IDRzNC4yMi0xLjY2IDUtNEg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXZlcmVDb2xkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgMTAuNDEgNC00TDE0LjU5IDUgMTIgNy41OVY0aC0ydjMuNTlMNy40MSA1IDYgNi40MWw0IDRWMTJIOC40MWwtNC00TDMgOS40MSA1LjU5IDEySDJ2MmgzLjU5TDMgMTYuNTkgNC40MSAxOGw0LTRIMTB2MS41OWwtNCA0TDcuNDEgMjEgMTAgMTguNDFWMjJoMnYtMy41OUwxNC41OSAyMSAxNiAxOS41OWwtNC00VjE0aDEuNTlsNCA0TDE5IDE2LjU5IDE2LjQxIDE0SDIwdi0yaC04ek0xOSAyaDJ2NWgtMnpNMTkgOGgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTYuMDhjLS43NiAwLTEuNDQuMy0xLjk2Ljc3TDguOTEgMTIuN2MuMDUtLjIzLjA5LS40Ni4wOS0uN3MtLjA0LS40Ny0uMDktLjdsNy4wNS00LjExYy41NC41IDEuMjUuODEgMi4wNC44MSAxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzYzAgLjI0LjA0LjQ3LjA5LjdMOC4wNCA5LjgxQzcuNSA5LjMxIDYuNzkgOSA2IDljLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDNjLjc5IDAgMS41LS4zMSAyLjA0LS44MWw3LjEyIDQuMTZjLS4wNS4yMS0uMDguNDMtLjA4LjY1IDAgMS42MSAxLjMxIDIuOTIgMi45MiAyLjkyIDEuNjEgMCAyLjkyLTEuMzEgMi45Mi0yLjkycy0xLjMxLTIuOTItMi45Mi0yLjkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOWMtMS4xIDAtMi0uOS0yLTJzMi00IDItNCAyIDIuOSAyIDQtLjkgMi0yIDJ6bS0zLjUtMmMwLS43My40MS0xLjcxLjkyLTIuNjZBOS45NjUgOS45NjUgMCAwIDAgMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyYzAtLjU1LS4wNi0xLjA5LS4xNC0xLjYyYTMuNSAzLjUgMCAwIDEtLjg2LjEyYy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXptLTEuODguMzggMS4wNiAxLjA2LTEuMDYgMS4wNiAxLjA2IDEuMDYtMS4wNiAxLjA2TDEzLjUgOS41bDIuMTItMi4xMnptLTguMyAxLjA2IDEuMDYtMS4wNkwxMC41IDkuNWwtMi4xMiAyLjEyLTEuMDYtMS4wNkw4LjM4IDkuNSA3LjMyIDguNDR6TTE1LjQ0IDE3Yy0uNjktMS4xOS0xLjk3LTItMy40NC0ycy0yLjc1LjgxLTMuNDQgMkg2Ljg4Yy4zLS43Ni43Ni0xLjQzIDEuMzQtMS45OUw1LjI0IDEzLjNjLS40NS4yNi0xLjAxLjI4LTEuNDkgMGExLjUwMSAxLjUwMSAwIDAgMSAxLjUtMi42Yy40OC4yOC43NC43OC43NCAxLjI5bDMuNTggMi4wN2MuNzMtLjM2IDEuNTUtLjU2IDIuNDMtLjU2IDIuMzMgMCA0LjMyIDEuNDUgNS4xMiAzLjVoLTEuNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25MYW5ndWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyLjQ5IDEzLS45My0xLjg2Yy0uMzctLjc0LS4wNy0xLjY0LjY3LTIuMDFsLjI2LS4xMyA1LjczIDUuNDZjLjUuNDcuNzggMS4xMy43OCAxLjgxdjUuMjNhMi41IDIuNSAwIDAgMS0yLjUgMi41aC0xMWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMUgxMHYtMUg0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xaDZ2LTFIM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMWg3di0xSDQuNWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMWg3Ljk5em0tLjcxLTUuODhjLS44NC40LTEuMTcuNjItMS42MyAxLjE5bC0yLjctMi44NUEuOTk2Ljk5NiAwIDEgMSA4LjkgNC4wOWwyLjg4IDMuMDN6TTkuNjQgOS4yMWEzLjQ2IDMuNDYgMCAwIDAtLjIgMS43OWgtLjg2TDYuMzEgOC42MWEuOTg3Ljk4NyAwIDAgMSAuMDQtMS40MS45OTYuOTk2IDAgMCAxIDEuNDEuMDRsMS44OCAxLjk3em0xMC42OSA0LjcuODgtLjgzYy41LS40Ny43OS0xLjEzLjc5LTEuODJWMy4zNWwtLjI3LS4xYy0uNzgtLjI4LTEuNjQuMTItMS45Mi45bC0uNzEgMS45Ni01LjUtNS44YS45OTYuOTk2IDAgMSAwLTEuNDUgMS4zN2wzLjc5IDMuOTktLjczLjY5LTQuODItNS4wOGEuOTk2Ljk5NiAwIDEgMC0xLjQ1IDEuMzdsMy43OCAzLjk4TDE1LjM4IDlsMy42MSAzLjQzLjYxLjU4Yy4yOS4yNy41My41Ny43My45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaW5nbGVCZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMmMwLTEuMS0uOS0yLTItMlY3YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAydjNjLTEuMSAwLTIgLjktMiAydjVoMS4zM0w2IDE5aDFsLjY3LTJoOC42N2wuNjYgMmgxbC42Ny0ySDIwdi01em0tNC0yaC0zVjdoM3Yzek04IDdoM3YzSDhWN3ptLTIgNWgxMnYzSDZ2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNrYXRlYm9hcmRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzYzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6TTcuMjUgMjIuNWMtLjQxIDAtLjc1LjM0LS43NS43NXMuMzQuNzUuNzUuNzUuNzUtLjM0Ljc1LS43NS0uMzQtLjc1LS43NS0uNzV6bTguNSAwYy0uNDEgMC0uNzUuMzQtLjc1Ljc1cy4zNC43NS43NS43NS43NS0uMzQuNzUtLjc1LS4zNC0uNzUtLjc1LS43NXptMy40OS0zLjVhLjcyLjcyIDAgMCAwLS41OS4zYy0uNTUuNzMtMS40MiAxLjItMi40IDEuMkgxNnYtNmwtNC4zMi0yLjY3IDEuOC0yLjg5QTYuNTA3IDYuNTA3IDAgMCAwIDE5IDEydi0yYy0xLjg1IDAtMy40NC0xLjEyLTQuMTMtMi43MmwtLjUyLTEuMjFDMTQuMTYgNS42NCAxMy42MSA1IDEyLjcgNUg3TDQuNSA5bDEuNyAxLjA2TDguMSA3aDIuMzVsLTIuNCAzLjg0Yy0uMzEuNS0uMzkgMS4xMS0uMjEgMS42N2wxLjM0IDQuMTUtMy4xMiAzLjc2Yy0uNy0uMTYtMS4zLS41Ny0xLjcxLTEuMTJhLjc0OS43NDkgMCAxIDAtMS4yLjljLjgyIDEuMSAyLjEzIDEuOCAzLjYgMS44aDkuNWMxLjQ3IDAgMi43OC0uNyAzLjYtMS44LjEtLjE0LjE1LS4zLjE1LS40NSAwLS4zOS0uMzItLjc1LS43Ni0uNzV6TTE0IDIwLjVIOC42bDIuOS0zLjUtMS0zLjMgMy41IDIuMnY0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNsZWRkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNC41YzAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMiAyIC45IDIgMnptOC44IDE1Ljc0YTQuMDAzIDQuMDAzIDAgMCAxLTUuMDQgMi41N0wxIDE3LjM2bC40Ni0xLjQzIDMuOTMgMS4yOC40Ni0xLjQzLTMuOTItMS4yOC40Ni0xLjQzTDQgMTMuNlY5LjVsNS40Ny0yLjM1Yy4zOS0uMTcuODQtLjIxIDEuMjgtLjA3Ljk1LjMxIDEuNDYgMS4zMiAxLjE2IDIuMjdsLTEuMDUgMy4yNCAyLjE0LS4zNGMuODktLjE1IDEuNzYuMzIgMi4xNCAxLjE0bDIuMDggNC41MSAxLjkzLjYzLS40NiAxLjQzLTMuMzItMS4wOC0uNDcgMS40MiAzLjMyIDEuMDhjMS4zMS40MyAyLjcyLS4yOSAzLjE1LTEuNjEuNDMtMS4zMS0uMjktMi43Mi0xLjYxLTMuMTVsLjQ2LTEuNDNjMi4xMS42OSAzLjI3IDIuOTUgMi41OCA1LjA1ek02IDE0LjI1bDEuMDEuMzNjLS4yMi0uNDItLjI4LS45Mi0uMTItMS40TDcuOTIgMTAgNiAxMC44MnYzLjQzem03Ljk0IDQuMTYtNi42Ni0yLjE2LS40NiAxLjQzIDYuNjYgMi4xNi40Ni0xLjQzem0uNjktMS4zNi0xLjE4LTIuNTYtMy45Ny44OSA1LjE1IDEuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNub3dib2FyZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDNjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptNy40IDE3LjA5YS43NDguNzQ4IDAgMCAwLS42NC4xN2MtLjY5LjYtMS42NC44OC0yLjYuNjdMMTcgMjAuNjlsLTEtNi4xOS0zLjMyLTIuNjcgMS44LTIuODlBNi41MDcgNi41MDcgMCAwIDAgMjAgMTJ2LTJjLTEuODUgMC0zLjQ0LTEuMTItNC4xMy0yLjcybC0uNTItMS4yMUMxNS4xNiA1LjY0IDE0LjYxIDUgMTMuNyA1SDhMNS41IDlsMS43IDEuMDZMOS4xIDdoMi4zNWwtMi41MSAzLjk5Yy0uMjguNDUtLjM3IDEtLjI1IDEuNTJMOS41IDE2IDYgMTguMzVsLS40Ny0uMWMtLjk2LS4yLTEuNzEtLjg1LTIuMS0xLjY3YS43NDQuNzQ0IDAgMCAwLS41MS0uNDJjLS40My0uMDktLjgyLjItLjkuNTgtLjA0LjE0LS4wMi4zMS4wNS40Ni41OCAxLjI0IDEuNzEgMi4yIDMuMTUgMi41MWwxMi42MyAyLjY5YzEuNDQuMzEgMi44Ni0uMTEgMy45LTEuMDEuMTMtLjExLjIxLS4yNi4yNC0uNDEuMDctLjM4LS4xNi0uOC0uNTktLjg5ek04LjczIDE4LjkzbDMuMDItMi4wMy0uNDQtMy4zMiAyLjg0IDIuMDIuNzUgNC42NC02LjE3LTEuMzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNub3dzaG9laW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSAzLjVjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnpNNi4zMiAxOS4wM2wtMS4xNC0xLjQ3TDQgMTguNWwyLjM4IDMuMDRjLjUxLjY1IDEuMTYgMS4xNSAxLjg4IDEuNDEuMjguMS41My4wNC43Mi0uMTEuMy0uMjMuNDItLjcuMTItMS4wN2EuODQuODQgMCAwIDAtLjMxLS4yMiAyLjk3IDIuOTcgMCAwIDEtMS4xNC0uODNsLS4wOC0uMUwxMSAxOC4ybC44OS0zLjIyIDIuMTEgMnY0LjUyaC0yVjIzaDMuODdjLjgyIDAgMS42MS0uMjEgMi4yNi0uNjEuMjYtLjE2LjM3LS4zOS4zNy0uNjQgMC0uMzgtLjMtLjc1LS43Ny0uNzUtLjEzIDAtLjI2LjA0LS4zNy4xLS40LjIzLS44Ny4zNy0xLjM2LjR2LTYuMDJsLTIuMTEtMiAuNi0zQzE1Ljc5IDExLjk4IDE3LjggMTMgMjAgMTN2LTJjLTEuOSAwLTMuNTEtMS4wMi00LjMxLTIuNDJsLTEtMS41OGMtLjQtLjYtMS0xLTEuNy0xLS43NSAwLTEuNDEuMzQtNS45OSAyLjI4VjEzaDJWOS41OGwxLjc5LS43TDkuMiAxN2wtMi44OCAyLjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTb2NpYWxEaXN0YW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNWMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem00Ljc4IDMuNThhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgMiAxMC40M1YxMWg4di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1ek0xOCA3YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMi43OCAxLjU4YTYuOTUgNi45NSAwIDAgMC01LjU2IDBBMi4wMSAyLjAxIDAgMCAwIDE0IDEwLjQzVjExaDh2LS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6TTIyIDE3bC00LTR2M0g2di0zbC00IDQgNCA0di0zaDEydjNsNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTb3V0aEFtZXJpY2EgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek00IDEyYzAtMS45NS43LTMuNzQgMS44Ny01LjEzTDkgMTB2MWMwIDEuMS45IDIgMiAydjUuNTljMCAuMjcuMTEuNTIuMjkuNzFsLjcxLjdjLTQuNDIgMC04LTMuNTgtOC04em05IDcuOTRWMThsMy43NS01LjYyYy4xNi0uMjUuMjUtLjU0LjI1LS44M1YxMC41YzAtLjU1LS40NS0xLTEtMWgtMS41bC0xLjQtMS43NWMtLjM4LS40Ny0uOTUtLjc1LTEuNTYtLjc1SDhWNS4wN0E3Ljk3MSA3Ljk3MSAwIDAgMSAxMiA0YzQuNDEgMCA4IDMuNTkgOCA4IDAgNC4wNy0zLjA2IDcuNDQtNyA3Ljk0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNCYXNlYmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuODEgNi4yOEMyLjY3IDcuOSAyIDkuODcgMiAxMnMuNjcgNC4xIDEuODEgNS43MkM2LjIzIDE2Ljk1IDggMTQuNjggOCAxMlM2LjIzIDcuMDUgMy44MSA2LjI4ek0yMC4xOSA2LjI4QzE3Ljc3IDcuMDUgMTYgOS4zMiAxNiAxMnMxLjc3IDQuOTUgNC4xOSA1LjcyQzIxLjMzIDE2LjEgMjIgMTQuMTMgMjIgMTJzLS42Ny00LjEtMS44MS01LjcyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMmMwLTMuMjggMS45Ny02LjA5IDQuNzktNy4zM0MxNy4wMSAzLjAyIDE0LjYzIDIgMTIgMlM2Ljk5IDMuMDIgNS4yMSA0LjY3QzguMDMgNS45MSAxMCA4LjcyIDEwIDEycy0xLjk3IDYuMDktNC43OSA3LjMzQzYuOTkgMjAuOTggOS4zNyAyMiAxMiAyMnM1LjAxLTEuMDIgNi43OS0yLjY3QTguMDAyIDguMDAyIDAgMCAxIDE0IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNCYXNrZXRiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMDkgMTFoNC44NmE5Ljk1MSA5Ljk1MSAwIDAgMC0xLjU0LTQuNCA1Ljk4NyA1Ljk4NyAwIDAgMC0zLjMyIDQuNHpNNi45MSAxMWE1Ljk4NyA1Ljk4NyAwIDAgMC0zLjMyLTQuNEE5Ljk1MSA5Ljk1MSAwIDAgMCAyLjA1IDExaDQuODZ6TTE1LjA3IDExYTcuOTk0IDcuOTk0IDAgMCAxIDQuMDYtNkE5Ljk2OSA5Ljk2OSAwIDAgMCAxMyAyLjA1VjExaDIuMDd6TTguOTMgMTFIMTFWMi4wNUE5Ljk0MyA5Ljk0MyAwIDAgMCA0Ljg3IDVhNy45OTQgNy45OTQgMCAwIDEgNC4wNiA2ek0xNS4wNyAxM0gxM3Y4Ljk1QTkuOTQzIDkuOTQzIDAgMCAwIDE5LjEzIDE5YTcuOTk0IDcuOTk0IDAgMCAxLTQuMDYtNnpNMy41OSAxNy40QTYuMDI5IDYuMDI5IDAgMCAwIDYuOTEgMTNIMi4wNWMuMTYgMS42MS43MSAzLjExIDEuNTQgNC40ek0xNy4wOSAxM2E1Ljk4NyA1Ljk4NyAwIDAgMCAzLjMyIDQuNCA5Ljk1MSA5Ljk1MSAwIDAgMCAxLjU0LTQuNGgtNC44NnpNOC45MyAxM2E3Ljk5NCA3Ljk5NCAwIDAgMS00LjA2IDZBOS45NjkgOS45NjkgMCAwIDAgMTEgMjEuOTVWMTNIOC45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzQ3JpY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjA1IDEyLjgxIDYuNTYgNC4zMmEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBMMi4zMiA3LjE1YS45OTYuOTk2IDAgMCAwIDAgMS40MWw4LjQ5IDguNDljLjM5LjM5IDEuMDIuMzkgMS40MSAwbDIuODMtMi44M2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6TTE0LjM0MSAxNy43NTZsMS40MTQtMS40MTQgNC4yNDMgNC4yNDMtMS40MTQgMS40MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTguNVwiLFwiY3lcIjpcIjUuNVwiLFwiclwiOlwiMy41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c0VzcG9ydHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS41OCAxNi4wOS0xLjA5LTcuNjZBMy45OTYgMy45OTYgMCAwIDAgMTYuNTMgNUg3LjQ3QzUuNDggNSAzLjc5IDYuNDYgMy41MSA4LjQzbC0xLjA5IDcuNjZDMi4yIDE3LjYzIDMuMzkgMTkgNC45NCAxOWMuNjggMCAxLjMyLS4yNyAxLjgtLjc1TDkgMTZoNmwyLjI1IDIuMjVjLjQ4LjQ4IDEuMTMuNzUgMS44Ljc1IDEuNTYgMCAyLjc1LTEuMzcgMi41My0yLjkxek0xMSAxMUg5djJIOHYtMkg2di0xaDJWOGgxdjJoMnYxem00LTFjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMiAzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c0Zvb3RiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy4wMiAxNS42MmMtLjA4IDIuNDIuMzIgNC4zNC42NyA0LjY5czIuMjguNzYgNC42OS42N2wtNS4zNi01LjM2ek0xMy4wOCAzLjI4Yy0yLjMzLjQyLTQuNzkgMS4zNC02LjYyIDMuMThzLTIuNzYgNC4yOS0zLjE4IDYuNjJsNy42MyA3LjYzYzIuMzQtLjQxIDQuNzktMS4zNCA2LjYyLTMuMThzMi43Ni00LjI5IDMuMTgtNi42MmwtNy42My03LjYzek05LjkgMTUuNWwtMS40LTEuNCA1LjYtNS42IDEuNCAxLjQtNS42IDUuNnpNMjAuOTggOC4zOGMuMDgtMi40Mi0uMzItNC4zNC0uNjctNC42OXMtMi4yOC0uNzYtNC42OS0uNjdsNS4zNiA1LjM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNHb2xmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTZjMy44NyAwIDctMy4xMyA3LTdzLTMuMTMtNy03LTctNyAzLjEzLTcgNyAzLjEzIDcgNyA3em0wLTEyYzIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1LTUtMi4yNC01LTUgMi4yNC01IDUtNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjhcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNFwiLFwiY3lcIjpcIjhcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOWgyYzEuMSAwIDIgLjkgMiAydjFoMnYtMWMwLTEuMS45LTIgMi0yaDJ2LTJIN3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNHeW1uYXN0aWNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2YzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6TTEgOWg2bDctNSAxLjMxIDEuNTItNC4xNyAyLjk4SDE0TDIxLjggNCAyMyA1LjQgMTQuNSAxMiAxNCAyMmgtMmwtLjUtMTBMOCAxMUgxVjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c0hhbmRiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuMjcgNmMtLjU1Ljk1LS4yMiAyLjE4LjczIDIuNzMuOTUuNTUgMi4xOC4yMiAyLjczLS43My41NS0uOTUuMjItMi4xOC0uNzMtMi43My0uOTUtLjU1LTIuMTgtLjIyLTIuNzMuNzN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1Ljg0IDEwLjQxLTIuNi0xLjVjLTIuMzgtMS4zOC0zLjItNC40NC0xLjgyLTYuODJsLTEuNzMtMUM4LjEgMy44MyA4LjYgNy4yMSAxMC42NiA5LjRsLTUuMTUgOC45MiAxLjczIDEgMS41LTIuNiAxLjczIDEtMyA1LjIgMS43MyAxIDYuMjktMTAuODlhNS4wMDIgNS4wMDIgMCAwIDEgLjMxIDUuNDZsMS43MyAxYzEuNi0yLjc1IDEuMjgtNi41OC0xLjY5LTkuMDh6TTEyLjc1IDMuOGMuNzIuNDEgMS42My4xNyAyLjA1LS41NS40MS0uNzIuMTctMS42My0uNTUtMi4wNWExLjUwMSAxLjUwMSAwIDAgMC0xLjUgMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNIb2NrZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE3djNoMnYtNEgzYy0uNTUgMC0xIC40NS0xIDF6TTkgMTZINXY0bDQuNjktLjAxYy4zOCAwIC43Mi0uMjEuODktLjU1bC44Ny0xLjktMS41OS0zLjQ4TDkgMTZ6TTIxLjcxIDE2LjI5QS45OTcuOTk3IDAgMCAwIDIxIDE2aC0xdjRoMnYtM2MwLS4yOC0uMTEtLjUzLS4yOS0uNzF6TTEzLjYgMTIuODQgMTcuNjUgNEgxNC4zbC0xLjc2IDMuOTctLjQ5IDEuMS0uMDUuMTRMOS43IDRINi4zNWw0LjA1IDguODQgMS41MiAzLjMyLjA4LjE4IDEuNDIgMy4xYy4xNy4zNC41MS41NS44OS41NUwxOSAyMHYtNGgtNGwtMS40LTMuMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c0thYmFkZGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2LjVcIixcImN5XCI6XCIyLjM4XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDExLjg4di00LjdsLTUuMDUtMi4xNGMtLjk3LS40MS0yLjA5LS4wNi0yLjY1Ljg0bC0xIDEuNmMtLjY3IDEuMTgtMS45MSAyLjA2LTMuNDEgMi4zMmwuMDYuMDZjLjY5LjY5IDEuNTIgMS4wNyAyLjQ2IDEuMTcuOC0uNDIgMS41Mi0uOTggMi4wOS0xLjY0bC42IDMtMS4xNiAxLjEtLjk0Ljg5djcuNWgydi02bDIuMS0yIDEuOCA4SDIzbC0yLjE4LTExLS42Mi0zLjEgMS44Ljd2My40aDJ6TTEwLjI5IDguMDljLjIyLjE1LjQ3LjI0LjcyLjI5LjEzLjAyLjI1LjA0LjM4LjA0cy4yNi0uMDEuMzgtLjA0Yy4xMy0uMDIuMjUtLjA2LjM3LS4xMS4yNC0uMS40Ny0uMjQuNjYtLjQ0LjQ5LS40OS42Ny0xLjE3LjU1LTEuOC0uMDctLjM3LS4yNS0uNzQtLjU1LTEuMDMtLjE5LS4xOS0uNDItLjM0LS42Ni0uNDQtLjEyLS4wNS0uMjQtLjA5LS4zNy0uMTFzLS4yNS0uMDQtLjM4LS4wNGMtLjEyIDAtLjIzLjAxLS4zNS4wMy0uMTQuMDItLjI4LjA2LS40MS4xMS0uMjMuMTEtLjQ2LjI2LS42NS40NS0uMy4yOS0uNDguNjYtLjU1IDEuMDMtLjEyLjYzLjA2IDEuMzEuNTUgMS44LjA5LjEuMi4xOC4zMS4yNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEuMjQgMTAuNTYtMi0yYy0uMS0uMS0uMi0uMTgtLjMxLS4yNmExLjkzIDEuOTMgMCAwIDAtLjcyLS4yOGMtLjEzLS4wMy0uMjUtLjA0LS4zOC0uMDQtLjUxIDAtMS4wMi4yLTEuNDEuNTlsLTMuMzQgMy4zNGMtLjQxLjQxLS42Mi45OC0uNTggMS41NCAwIC4xOC4wNC4zNy4xMS41NWwxLjA3IDIuOTUtMy42MyAzLjYzTDEuNDYgMjJsNC4yNC00LjI0di0yLjIyTDcgMTYuNzV2NS4xM2gydi02bC0yLjEyLTIuMTIgMi4zNi0yLjM2LjcxLjcxYzEuMjkgMS4yNiAyLjk3IDIuMDQgNS4wMyAyLjA0bC0uMTQtMi4wN2MtMS41LS4wMi0yLjctLjYyLTMuNi0xLjUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNNYXJ0aWFsQXJ0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjggMi04LjIgNi43LTEuMjEtMS4wNCAzLjYtMi4wOEw5LjQxIDEgOCAyLjQxbDIuNzQgMi43NEw1IDguNDZsLTEuMTkgNC4yOUw2LjI3IDE3IDggMTZsLTIuMDMtMy41Mi4zNS0xLjNMOS41IDEzbC41IDloMmwuNS0xMEwyMSAzLjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNVwiLFwiY3lcIjpcIjVcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzTW1hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyMGMwIC41NS40NSAxIDEgMWg4Yy41NSAwIDEtLjQ1IDEtMXYtM0g3djN6TTE4IDdjLS41NSAwLTEgLjQ1LTEgMVY1YzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjUuOGMwIC4xMy4wMS4yNi4wNC4zOWwuOCA0Yy4wOS40Ny41LjguOTguOGgxMC4zNmMuNDUgMCAuODktLjM2Ljk4LS44bC44LTRjLjAzLS4xMy4wNC0uMjYuMDQtLjM5VjhjMC0uNTUtLjQ1LTEtMS0xem0tMyAzSDdWN2g4djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c01vdG9yc3BvcnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTEuMzljMC0uNjUtLjM5LTEuMjMtLjk4LTEuNDhMNS40NCA3LjU1Yy0xLjQ4IDEuNjgtMi4zMiAzLjctMi44IDUuNDVoNy43NWMuODkgMCAxLjYxLS43MiAxLjYxLTEuNjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk2IDExLjIyYy0uNDEtNC40MS00LjU2LTcuNDktOC45OC03LjItMi41MS4xNi00LjQ0Ljk0LTUuOTMgMi4wNGw0Ljc0IDIuMDFjMS4zMy41NyAyLjIgMS44NyAyLjIgMy4zMiAwIDEuOTktMS42MiAzLjYxLTMuNjEgMy42MUgyLjIxQzIgMTYuMzEgMiAxNy4yIDIgMTcuMnYuOGMwIDEuMS45IDIgMiAyaDEwYzQuNjcgMCA4LjQxLTQuMDEgNy45Ni04Ljc4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNSdWdieSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjQ5IDMuNTFjLS41Ni0uNTYtMi4xNS0uOTctNC4xNi0uOTctMy4wOCAwLTcuMTUuOTYtOS45OCAzLjc5LTQuNjkgNC43LTQuMjUgMTIuNzQtMi44NCAxNC4xNi41Ni41NiAyLjE1Ljk3IDQuMTYuOTcgMy4wOCAwIDcuMTUtLjk2IDkuOTgtMy43OSA0LjY5LTQuNyA0LjI1LTEyLjc0IDIuODQtMTQuMTZ6TTcuNzYgNy43NmMyLjY0LTIuNjQgNi4zNS0zLjEyIDguMDMtMy4xOS0yLjA1Ljk0LTQuNDYgMi40NS02LjYxIDQuNjFhMjMuNDYyIDIzLjQ2MiAwIDAgMC00LjYyIDYuNjNjLjEtMi40OC44OC01Ljc0IDMuMi04LjA1em04LjQ4IDguNDhjLTIuNjQgMi42NC02LjM1IDMuMTItOC4wMyAzLjE5IDIuMDUtLjk0IDQuNDYtMi40NSA2LjYxLTQuNjEgMi4xNi0yLjE2IDMuNjctNC41OCA0LjYyLTYuNjMtLjEgMi40OC0uODggNS43NC0zLjIgOC4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzU29jY2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAzLjMgMS4zNS0uOTVhOC4wMSA4LjAxIDAgMCAxIDQuMzggMy4zNGwtLjM5IDEuMzQtMS4zNS40NkwxMyA2LjdWNS4zem0tMy4zNS0uOTVMMTEgNS4zdjEuNEw3LjAxIDkuNDlsLTEuMzUtLjQ2LS4zOS0xLjM0YTguMTAzIDguMTAzIDAgMCAxIDQuMzgtMy4zNHpNNy4wOCAxNy4xMWwtMS4xNC4xQTcuOTM4IDcuOTM4IDAgMCAxIDQgMTJjMC0uMTIuMDEtLjIzLjAyLS4zNWwxLS43MyAxLjM4LjQ4IDEuNDYgNC4zNC0uNzggMS4zN3ptNy40MiAyLjQ4Yy0uNzkuMjYtMS42My40MS0yLjUuNDFzLTEuNzEtLjE1LTIuNS0uNDFsLS42OS0xLjQ5LjY0LTEuMWg1LjExbC42NCAxLjExLS43IDEuNDh6TTE0LjI3IDE1SDkuNzNsLTEuMzUtNC4wMkwxMiA4LjQ0bDMuNjMgMi41NEwxNC4yNyAxNXptMy43OSAyLjIxLTEuMTQtLjEtLjc5LTEuMzcgMS40Ni00LjM0IDEuMzktLjQ3IDEgLjczYy4wMS4xMS4wMi4yMi4wMi4zNCAwIDEuOTktLjczIDMuODEtMS45NCA1LjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNUZW5uaXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41MiAyLjQ5QzE3LjE4LjE1IDEyLjkuNjIgOS45NyAzLjU1Yy0xLjYgMS42LTIuNTIgMy44Ny0yLjU0IDUuNDYtLjAyIDEuNTguMjYgMy44OS0xLjM1IDUuNWwtNC4yNCA0LjI0IDEuNDIgMS40MiA0LjI0LTQuMjRjMS42MS0xLjYxIDMuOTItMS4zMyA1LjUtMS4zNXMzLjg2LS45NCA1LjQ2LTIuNTRjMi45Mi0yLjkzIDMuNC03LjIxIDEuMDYtOS41NXptLTkuMiA5LjE5Yy0xLjUzLTEuNTMtMS4wNS00LjYxIDEuMDYtNi43MnM1LjE4LTIuNTkgNi43Mi0xLjA2YzEuNTMgMS41MyAxLjA1IDQuNjEtMS4wNiA2Ljcycy01LjE4IDIuNTktNi43MiAxLjA2ek0xOCAxN2MuNTMgMCAxLjA0LjIxIDEuNDEuNTkuNzguNzguNzggMi4wNSAwIDIuODMtLjM3LjM3LS44OC41OC0xLjQxLjU4cy0xLjA0LS4yMS0xLjQxLS41OWMtLjc4LS43OC0uNzgtMi4wNSAwLTIuODMuMzctLjM3Ljg4LS41OCAxLjQxLS41OG0wLTJhMy45OTggMy45OTggMCAwIDAtMi44MyA2LjgzYy43OC43OCAxLjgxIDEuMTcgMi44MyAxLjE3YTMuOTk4IDMuOTk4IDAgMCAwIDIuODMtNi44M0EzLjk5OCAzLjk5OCAwIDAgMCAxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzVm9sbGV5YmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNC4wMUMzLjU4IDUuODQgMiA4LjczIDIgMTJjMCAxLjQ2LjMyIDIuODUuODkgNC4xMUw2IDE0LjMxVjQuMDF6TTExIDExLjQyVjIuMDVjLTEuMDYuMTEtMi4wNy4zOC0zIC43OXYxMC4zMmwzLTEuNzR6TTEyIDEzLjE1bC04LjExIDQuNjhjLjYxLjg0IDEuMzQgMS41OSAyLjE4IDIuMkwxNSAxNC44OWwtMy0xLjc0ek0xMyA3Ljk2djMuNDZsOC4xMSA0LjY4Yy40Mi0uOTMuNy0xLjkzLjgyLTIuOThMMTMgNy45NnpNOC4wNyAyMS4yYzEuMjEuNTEgMi41My44IDMuOTMuOCAzLjM0IDAgNi4yOS0xLjY1IDguMTEtNC4xNkwxNyAxNi4wNCA4LjA3IDIxLjJ6TTIxLjkyIDEwLjgxYy0uNTUtNC42My00LjI2LTguMy04LjkyLTguNzZ2My42bDguOTIgNS4xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMjMgNmMtMS42NiAwLTMuMjIuNjYtNC4zNiAxLjczQzYuNTQgNi43MyA1LjYxIDYgNC41IDZhMi41IDIuNSAwIDAgMCAwIDVjLjIxIDAgLjQxLS4wMy42MS0uMDgtLjA1LjI1LS4wOS41MS0uMS43OGE2LjAwNiA2LjAwNiAwIDAgMCA2LjY4IDYuMjdjMi41NS0uMjggNC42OC0yLjI2IDUuMTktNC43Ny4xNS0uNzEuMTUtMS40LjA2LTIuMDYtLjA5LS42LjM4LTEuMTMuOTktMS4xM0gyMlY2SDExLjIzek00LjUgOWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41LjUuMjIuNS41LS4yMi41LS41LjV6bTYuNSA2Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMVwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN1cmZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAyM2MtMS4wMyAwLTIuMDYtLjI1LTMtLjc1LTEuODkgMS00LjExIDEtNiAwLTEuODkgMS00LjExIDEtNiAwLS45NS41LTEuOTcuNzUtMyAuNzVIMnYtMmgxYzEuMDQgMCAyLjA4LS4zNSAzLTEgMS44MyAxLjMgNC4xNyAxLjMgNiAwIDEuODMgMS4zIDQuMTcgMS4zIDYgMCAuOTEuNjUgMS45NiAxIDMgMWgxdjJoLTF6TTE3IDEuNWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS0yLjU3IDYuOThMMTIuMTggMTAgMTYgMTN2My44NGMuNTMuMzggMS4wMy43OCAxLjQ5IDEuMTctLjY4LjU4LTEuNTUuOTktMi40OS45OS0xLjIgMC0yLjI3LS42Ni0zLTEuNS0uNzMuODQtMS44IDEuNS0zIDEuNS0uMzMgMC0uNjUtLjA1LS45Ni0uMTRDNS4xOSAxNi45IDMgMTQuNzIgMyAxMy4yOCAzIDEyLjI1IDQuMDEgMTIgNC44NSAxMmMuOTggMCAyLjI4LjMxIDMuNy44M2wtLjUzLTMuMWMtLjExLS42Ny4xOC0xLjM4Ljc4LTEuNzlsMi4xNS0xLjQ1LTItLjM3LTIuODIgMS45M0w1IDYuNCA4LjUgNGw1LjU1IDEuMDNjLjQ1LjA5LjkzLjM3IDEuMjIuODlsLjg4IDEuNTVBNS4wMDcgNS4wMDcgMCAwIDAgMjAuNSAxMHYyYTcuMDEgNy4wMSAwIDAgMS02LjA3LTMuNTJ6TTEwLjMgMTEuMWwuNDQgMi42NWMuOTIuNDIgMi40OCAxLjI3IDMuMjYgMS43NVYxNGwtMy43LTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3dpdGNoQWNjb3VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTYgMmMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgMy0zLTEuMzQtMy0zIDEuMzQtMyAzLTN6bTYgMTJIOHYtMS41YzAtMS45OSA0LTMgNi0zczYgMS4wMSA2IDNWMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRodW1iRG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMjRIMFYwaDI0djI0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA0aC0yYy0uNTUgMC0xIC40NS0xIDF2OWMwIC41NS40NSAxIDEgMWgyVjR6TTIuMTcgMTEuMTJjLS4xMS4yNS0uMTcuNTItLjE3LjhWMTNjMCAxLjEuOSAyIDIgMmg1LjVsLS45MiA0LjY1Yy0uMDUuMjItLjAyLjQ2LjA4LjY2LjIzLjQ1LjUyLjg2Ljg4IDEuMjJMMTAgMjJsNi40MS02LjQxYy4zOC0uMzguNTktLjg5LjU5LTEuNDJWNi4zNEMxNyA1LjA1IDE1Ljk1IDQgMTQuNjYgNGgtOC4xYy0uNzEgMC0xLjM2LjM3LTEuNzIuOTdsLTIuNjcgNi4xNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGh1bWJVcEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMjRIMFYwaDI0djI0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDIwaDJjLjU1IDAgMS0uNDUgMS0xdi05YzAtLjU1LS40NS0xLTEtMUgydjExem0xOS44My03LjEyYy4xMS0uMjUuMTctLjUyLjE3LS44VjExYzAtMS4xLS45LTItMi0yaC01LjVsLjkyLTQuNjVjLjA1LS4yMi4wMi0uNDYtLjA4LS42NmE0LjggNC44IDAgMCAwLS44OC0xLjIyTDE0IDIgNy41OSA4LjQxQzcuMjEgOC43OSA3IDkuMyA3IDkuODN2Ny44NEEyLjM0IDIuMzQgMCAwIDAgOS4zNCAyMGg4LjExYy43IDAgMS4zNi0uMzcgMS43Mi0uOTdsMi42Ni02LjE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaHVuZGVyc3Rvcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy45MiA3LjAyQzE3LjQ1IDQuMTggMTQuOTcgMiAxMiAyIDkuODIgMiA3LjgzIDMuMTggNi43OCA1LjA2IDQuMDkgNS40MSAyIDcuNzQgMiAxMC41IDIgMTMuNTMgNC40NyAxNiA3LjUgMTZoMTBjMi40OCAwIDQuNS0yLjAyIDQuNS00LjVhNC41IDQuNSAwIDAgMC00LjA4LTQuNDh6TTE0LjggMTdsLTIuOSAzLjMyIDIgMUwxMS41NSAyNGgyLjY1bDIuOS0zLjMyLTItMUwxNy40NSAxN3pNOC44IDE3bC0yLjkgMy4zMiAyIDFMNS41NSAyNEg4LjJsMi45LTMuMzItMi0xTDExLjQ1IDE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUb3JuYWRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMTEgOCAyMyAzSDFsMi44OSA1ek03Ljk1IDE1IDEyIDIybDQuMDUtN3pNMTguOTUgMTBINS4wNWwxLjc0IDNoMTAuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRyYW5zZ2VuZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOGMxLjkzIDAgMy41IDEuNTcgMy41IDMuNVMxMy45MyAxNSAxMiAxNXMtMy41LTEuNTctMy41LTMuNVMxMC4wNyA4IDEyIDh6bTQuNTMuMzggMy45Ny0zLjk2VjdoMlYxaC02djJoMi41OGwtMy45NyAzLjk3QzE0LjIzIDYuMzYgMTMuMTYgNiAxMiA2cy0yLjIzLjM2LTMuMTEuOTdsLS42NS0uNjUgMS40MS0xLjQxLTEuNDEtMS40Mkw2LjgyIDQuOSA0LjkyIDNINy41VjFoLTZ2NmgyVjQuNDJsMS45MSAxLjktMS40MiAxLjQyTDUuNCA5LjE1bDEuNDEtMS40MS42NS42NWMtLjYuODgtLjk2IDEuOTUtLjk2IDMuMTFhNS41IDUuNSAwIDAgMCA0LjUgNS40MVYxOUg5djJoMnYyaDJ2LTJoMnYtMmgtMnYtMi4wOWE1LjUgNS41IDAgMCAwIDMuNTMtOC41M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJhdmVsRXhwbG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjMgMTYuOWMuNC0uNy43LTEuNS43LTIuNCAwLTIuNS0yLTQuNS00LjUtNC41UzExIDEyIDExIDE0LjVzMiA0LjUgNC41IDQuNWMuOSAwIDEuNy0uMyAyLjQtLjdsMy4yIDMuMiAxLjQtMS40LTMuMi0zLjJ6bS0zLjguMWMtMS40IDAtMi41LTEuMS0yLjUtMi41czEuMS0yLjUgMi41LTIuNSAyLjUgMS4xIDIuNSAyLjUtMS4xIDIuNS0yLjUgMi41ek0xMiAyMHYyQzYuNDggMjIgMiAxNy41MiAyIDEyUzYuNDggMiAxMiAyYzQuODQgMCA4Ljg3IDMuNDQgOS44IDhoLTIuMDdBOCA4IDAgMCAwIDE1IDQuNTlWNWMwIDEuMS0uOSAyLTIgMmgtMnYyYzAgLjU1LS40NSAxLTEgMUg4djJoMnYzSDlsLTQuNzktNC43OUM0LjA4IDEwLjc5IDQgMTEuMzggNCAxMmMwIDQuNDEgMy41OSA4IDggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHN1bmFtaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjY3IDE3LjYzYy0zLjggMi44LTYuMTIuNC02LjY3IDAtLjY2LjQ5LTIuOTIgMi43Ni02LjY3IDBDMy40MyAxOS4wMyAyLjY1IDE5IDIgMTl2MmMxLjE2IDAgMi4zLS4zMiAzLjMzLS45M2E2LjUzNSA2LjUzNSAwIDAgMCA2LjY3IDAgNi41MzUgNi41MzUgMCAwIDAgNi42NyAwYzEuMDMuNjEgMi4xNy45MyAzLjMzLjkzdi0yYy0uNjYgMC0xLjUtLjAyLTMuMzMtMS4zN3pNMTkuMzMgMTJIMjJ2LTJoLTIuNjdDMTcuNSAxMCAxNiA4LjUgMTYgNi42N2MwLTEuMDIuMzgtMS43NCAxLjA5LTMuMzQtMS4zNy0uMjEtMi0uMzMtMy4wOS0uMzNDNy4zNiAzIDIuMTUgOC4wMyAyLjAxIDE0LjVsLS4wMSAyYzEuMTYgMCAyLjMtLjMyIDMuMzMtLjkzYTYuNTM1IDYuNTM1IDAgMCAwIDYuNjcgMCA2LjUzNSA2LjUzNSAwIDAgMCA2LjY3IDBjMS4wMy42MSAyLjE3LjkzIDMuMzMuOTN2LTJjLS42NiAwLTEuNS0uMDItMy4zMy0xLjM3LTMuOCAyLjgtNi4xMi40LTYuNjcgMC0uOS42Ny0uNTQuNDEtLjkxLjYzLS43LS45NC0xLjA5LTIuMDYtMS4wOS0zLjI2IDAtMi41OCAxLjc3LTQuNzQgNC4yMS01LjMzLS4xMy41MS0uMjEgMS4wMi0uMjEgMS41QzE0IDkuNjEgMTYuMzkgMTIgMTkuMzMgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZhY2NpbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNS41SDhWNGguNWMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtM2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMUg2djEuNUgzYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxVjE1YzAgMS4xLjkgMiAyIDJoMXY0bDIgMS41VjE3aDFjMS4xIDAgMi0uOSAyLTJWNy41Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xek05IDlINy4yNWMtLjQxIDAtLjc1LjM0LS43NS43NXMuMzQuNzUuNzUuNzVIOVYxMkg3LjI1Yy0uNDEgMC0uNzUuMzQtLjc1Ljc1cy4zNC43NS43NS43NUg5VjE1SDVWNy41aDRWOXptMTAuNSAxLjVWMTBjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFoLTVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDF2LjVjMCAuNS0xLjUgMS4xNi0xLjUgM1YyMGMwIDEuMS45IDIgMiAyaDRjMS4xIDAgMi0uOSAyLTJ2LTYuNWMwLTEuODQtMS41LTIuNS0xLjUtM3ptLTMgMFYxMGgxdi41YzAgMS42IDEuNSAyIDEuNSAzdi41aC00di0uNWMwLTEgMS41LTEuNCAxLjUtM3pNMTUgMjB2LTEuNWg0VjIwaC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWb2xjYW5vIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgtN2wtMiA1SDZsLTQgOWgyMHpNMTMgMWgydjRoLTJ6TTE2LjEyMSA1LjQ2OCAxOC45NSAyLjY0bDEuNDE0IDEuNDE0LTIuODI5IDIuODI4ek03LjY0IDQuMDVsMS40MTQtMS40MTQgMi44MjggMi44MjktMS40MTQgMS40MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdhbGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRINkMzLjc5IDQgMiA1Ljc5IDIgOHY4YzAgMi4yMSAxLjc5IDQgNCA0aDEyYzIuMjEgMCA0LTEuNzkgNC00VjhjMC0yLjIxLTEuNzktNC00LTR6bS0xLjg2IDkuNzdjLS4yNC4yLS41Ny4yOC0uODguMkw0LjE1IDExLjI1QzQuNDUgMTAuNTIgNS4xNiAxMCA2IDEwaDEyYy42NyAwIDEuMjYuMzQgMS42My44NGwtMy40OSAyLjkzek02IDZoMTJjMS4xIDAgMiAuOSAyIDJ2LjU1Yy0uNTktLjM0LTEuMjctLjU1LTItLjU1SDZjLS43MyAwLTEuNDEuMjEtMiAuNTVWOGMwLTEuMS45LTIgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYXRlckRyb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy01LjMzIDQuNTUtOCA4LjQ4LTggMTEuOCAwIDQuOTggMy44IDguMiA4IDguMnM4LTMuMjIgOC04LjJjMC0zLjMyLTIuNjctNy4yNS04LTExLjh6TTcuODMgMTRjLjM3IDAgLjY3LjI2Ljc0LjYyLjQxIDIuMjIgMi4yOCAyLjk4IDMuNjQgMi44Ny40My0uMDIuNzkuMzIuNzkuNzUgMCAuNC0uMzIuNzMtLjcyLjc1LTIuMTMuMTMtNC42Mi0xLjA5LTUuMTktNC4xMmEuNzUuNzUgMCAwIDEgLjc0LS44N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2F2aW5nSGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDE3YzAgMy4zMS0yLjY5IDYtNiA2di0xLjVjMi40OCAwIDQuNS0yLjAyIDQuNS00LjVIMjN6TTEgN2MwLTMuMzEgMi42OS02IDYtNnYxLjVDNC41MiAyLjUgMi41IDQuNTIgMi41IDdIMXptNy4wMS0yLjY4LTQuNiA0LjZjLTMuMjIgMy4yMi0zLjIyIDguNDUgMCAxMS42N3M4LjQ1IDMuMjIgMTEuNjcgMGw3LjA3LTcuMDdjLjQ5LS40OS40OS0xLjI4IDAtMS43N2ExLjI1IDEuMjUgMCAwIDAtMS43NyAwbC00LjQyIDQuNDItLjcxLS43MSA2LjU0LTYuNTRjLjQ5LS40OS40OS0xLjI4IDAtMS43N3MtMS4yOC0uNDktMS43NyAwbC01LjgzIDUuODMtLjcxLS43MSA2Ljg5LTYuODljLjQ5LS40OS40OS0xLjI4IDAtMS43N3MtMS4yOC0uNDktMS43NyAwbC02Ljg5IDYuODktLjY5LS43IDUuNDgtNS40OGMuNDktLjQ5LjQ5LTEuMjggMC0xLjc3cy0xLjI4LS40OS0xLjc3IDBsLTcuNjIgNy42MmE0LjAwMyA0LjAwMyAwIDAgMS0uMzMgNS4yOGwtLjcxLS43MWEzIDMgMCAwIDAgMC00LjI0bC0uMzUtLjM1IDQuMDctNC4wN2MuNDktLjQ5LjQ5LTEuMjggMC0xLjc3YTEuMjcgMS4yNyAwIDAgMC0xLjc4LjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaGF0c2FwcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjA1IDQuOTFBOS44MTYgOS44MTYgMCAwIDAgMTIuMDQgMmMtNS40NiAwLTkuOTEgNC40NS05LjkxIDkuOTEgMCAxLjc1LjQ2IDMuNDUgMS4zMiA0Ljk1TDIuMDUgMjJsNS4yNS0xLjM4YzEuNDUuNzkgMy4wOCAxLjIxIDQuNzQgMS4yMSA1LjQ2IDAgOS45MS00LjQ1IDkuOTEtOS45MSAwLTIuNjUtMS4wMy01LjE0LTIuOS03LjAxem0tNy4wMSAxNS4yNGMtMS40OCAwLTIuOTMtLjQtNC4yLTEuMTVsLS4zLS4xOC0zLjEyLjgyLjgzLTMuMDQtLjItLjMxYTguMjY0IDguMjY0IDAgMCAxLTEuMjYtNC4zOGMwLTQuNTQgMy43LTguMjQgOC4yNC04LjI0IDIuMiAwIDQuMjcuODYgNS44MiAyLjQyYTguMTgzIDguMTgzIDAgMCAxIDIuNDEgNS44M2MuMDIgNC41NC0zLjY4IDguMjMtOC4yMiA4LjIzem00LjUyLTYuMTZjLS4yNS0uMTItMS40Ny0uNzItMS42OS0uODEtLjIzLS4wOC0uMzktLjEyLS41Ni4xMi0uMTcuMjUtLjY0LjgxLS43OC45Ny0uMTQuMTctLjI5LjE5LS41NC4wNi0uMjUtLjEyLTEuMDUtLjM5LTEuOTktMS4yMy0uNzQtLjY2LTEuMjMtMS40Ny0xLjM4LTEuNzItLjE0LS4yNS0uMDItLjM4LjExLS41MS4xMS0uMTEuMjUtLjI5LjM3LS40M3MuMTctLjI1LjI1LS40MWMuMDgtLjE3LjA0LS4zMS0uMDItLjQzcy0uNTYtMS4zNC0uNzYtMS44NGMtLjItLjQ4LS40MS0uNDItLjU2LS40M2gtLjQ4Yy0uMTcgMC0uNDMuMDYtLjY2LjMxLS4yMi4yNS0uODYuODUtLjg2IDIuMDcgMCAxLjIyLjg5IDIuNCAxLjAxIDIuNTYuMTIuMTcgMS43NSAyLjY3IDQuMjMgMy43NC41OS4yNiAxLjA1LjQxIDEuNDEuNTIuNTkuMTkgMS4xMy4xNiAxLjU2LjEuNDgtLjA3IDEuNDctLjYgMS42Ny0xLjE4LjIxLS41OC4yMS0xLjA3LjE0LTEuMThzLS4yMi0uMTYtLjQ3LS4yOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2hhdHNob3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41LjY3cy43NCAyLjY1Ljc0IDQuOGMwIDIuMDYtMS4zNSAzLjczLTMuNDEgMy43My0yLjA3IDAtMy42My0xLjY3LTMuNjMtMy43M2wuMDMtLjM2QzUuMjEgNy41MSA0IDEwLjYyIDQgMTRjMCA0LjQyIDMuNTggOCA4IDhzOC0zLjU4IDgtOEMyMCA4LjYxIDE3LjQxIDMuOCAxMy41LjY3ek0xMS43MSAxOWMtMS43OCAwLTMuMjItMS40LTMuMjItMy4xNCAwLTEuNjIgMS4wNS0yLjc2IDIuODEtMy4xMiAxLjc3LS4zNiAzLjYtMS4yMSA0LjYyLTIuNTguMzkgMS4yOS41OSAyLjY1LjU5IDQuMDQgMCAyLjY1LTIuMTUgNC44LTQuOCA0Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdvbWFuMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjk0IDguMzFDMTMuNjIgNy41MiAxMi44NSA3IDEyIDdzLTEuNjIuNTItMS45NCAxLjMxTDcgMTZoMy41djZoM3YtNkgxN2wtMy4wNi03LjY5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXb21hbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjk0IDguMzFDMTMuNjIgNy41MiAxMi44NSA3IDEyIDdzLTEuNjIuNTItMS45NCAxLjMxTDcgMTZoM3Y2aDR2LTZoM2wtMy4wNi03LjY5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXb3Jrc3BhY2VQcmVtaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS42OCAxMy42OSAxMiAxMS45M2wyLjMxIDEuNzYtLjg4LTIuODVMMTUuNzUgOWgtMi44NEwxMiA2LjE5IDExLjA5IDlIOC4yNWwyLjMxIDEuODQtLjg4IDIuODV6TTIwIDEwYzAtNC40Mi0zLjU4LTgtOC04cy04IDMuNTgtOCA4YzAgMi4wMy43NiAzLjg3IDIgNS4yOFYyM2w2LTIgNiAydi03LjcyQTcuOTYgNy45NiAwIDAgMCAyMCAxMHptLTgtNmMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNi02LTIuNjktNi02IDIuNjktNiA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoZWNrQm94T3V0bGluZUJsYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hlY2tCb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YTIgMiAwIDAgMCAyLTJWNWEyIDIgMCAwIDAtMi0yem0tOSAxNC01LTUgMS40MS0xLjQxTDEwIDE0LjE3bDcuNTktNy41OUwxOSA4bC05IDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluZGV0ZXJtaW5hdGVDaGVja0JveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMiAxMEg3di0yaDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJhZGlvQnV0dG9uQ2hlY2tlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0wLTVDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSYWRpb0J1dHRvblVuY2hlY2tlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdGFyQm9yZGVyUHVycGxlNTAwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiA4Ljg5Ljk0IDMuMTFoMi44MmwtMi4yNyAxLjYyLjkzIDMuMDFMMTIgMTQuNzlsLTIuNDIgMS44NC45My0zLjAxTDguMjQgMTJoMi44MkwxMiA4Ljg5TTEyIDJsLTIuNDIgOEgybDYuMTcgNC40MUw1LjgzIDIyIDEyIDE3LjMxIDE4LjE4IDIybC0yLjM1LTcuNTlMMjIgMTBoLTcuNThMMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhckJvcmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDkuMjQtNy4xOS0uNjJMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3IDE4LjE4IDIxbC0xLjYzLTcuMDNMMjIgOS4yNHpNMTIgMTUuNGwtMy43NiAyLjI3IDEtNC4yOC0zLjMyLTIuODggNC4zOC0uMzhMMTIgNi4xbDEuNzEgNC4wNCA0LjM4LjM4LTMuMzIgMi44OCAxIDQuMjhMMTIgMTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhckhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiA5LjI0LTcuMTktLjYyTDEyIDIgOS4xOSA4LjYzIDIgOS4yNGw1LjQ2IDQuNzNMNS44MiAyMSAxMiAxNy4yNyAxOC4xOCAyMWwtMS42My03LjAzTDIyIDkuMjR6TTEyIDE1LjRWNi4xbDEuNzEgNC4wNCA0LjM4LjM4LTMuMzIgMi44OCAxIDQuMjhMMTIgMTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3Rhck91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDkuMjQtNy4xOS0uNjJMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3IDE4LjE4IDIxbC0xLjYzLTcuMDNMMjIgOS4yNHpNMTIgMTUuNGwtMy43NiAyLjI3IDEtNC4yOC0zLjMyLTIuODggNC4zOC0uMzhMMTIgNi4xbDEuNzEgNC4wNCA0LjM4LjM4LTMuMzIgMi44OCAxIDQuMjhMMTIgMTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhclB1cnBsZTUwMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgOC44OS45NCAzLjExaDIuODJsLTIuMjcgMS42Mi45MyAzLjAxTDEyIDE0Ljc5bC0yLjQyIDEuODQuOTMtMy4wMUw4LjI0IDEyaDIuODJMMTIgOC44OU0xMiAybC0yLjQyIDhIMmw2LjE3IDQuNDFMNS44MyAyMiAxMiAxNy4zMSAxOC4xOCAyMmwtMi4zNS03LjU5TDIyIDEwaC03LjU4TDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTcuMjcgMTguMTggMjFsLTEuNjQtNy4wM0wyMiA5LjI0bC03LjE5LS42MUwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRvZ2dsZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWgxMGMyLjc2IDAgNS0yLjI0IDUtNXMtMi4yNC01LTUtNXpNNyAxNWMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRvZ2dsZU9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgN0g3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1aDEwYzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01em0wIDhjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYWNlVW5sb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4yNSAxM2ExLjI1IDEuMjUgMCAxIDEtMi41IDAgMS4yNSAxLjI1IDAgMCAxIDIuNSAwek0xNSAxMS43NWExLjI1IDEuMjUgMCAxIDAgMCAyLjUgMS4yNSAxLjI1IDAgMCAwIDAtMi41em03IC4yNWMwIDUuNTItNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTIgNi40OCAyIDEyIDJzMTAgNC40OCAxMCAxMHpNMTAuNjYgNC4xMkMxMi4wNiA2LjQ0IDE0LjYgOCAxNy41IDhjLjQ2IDAgLjkxLS4wNSAxLjM0LS4xMkMxNy40NCA1LjU2IDE0LjkgNCAxMiA0Yy0uNDYgMC0uOTEuMDUtMS4zNC4xMnpNNC40MiA5LjQ3YTguMDQ2IDguMDQ2IDAgMCAwIDMuNjYtNC40NCA4LjA0NiA4LjA0NiAwIDAgMC0zLjY2IDQuNDR6TTIwIDEyYzAtLjc4LS4xMi0xLjUzLS4zMy0yLjI0LS43LjE1LTEuNDIuMjQtMi4xNy4yNGExMCAxMCAwIDAgMS03Ljc2LTMuNjlBMTAuMDE2IDEwLjAxNiAwIDAgMSA0IDExLjg2Yy4wMS4wNCAwIC4wOSAwIC4xNCAwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5MjAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTd2My42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1YxN0g3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE3IDUuMzNDMTcgNC42IDE2LjQgNCAxNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM1YxN2gxMFY1LjMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5MzAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTcgNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzVjE1aDEwVjUuMzN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTV2NS42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1YxNUg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5NTAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTcgNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzVjEzaDEwVjUuMzN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTN2Ny42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1YxM0g3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5NjAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTcgNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzVjExaDEwVjUuMzN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTF2OS42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1YxMUg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5ODAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTcgNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzVjloMTBWNS4zM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA5djExLjY3QzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjlIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeTkwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE3IDUuMzNDMTcgNC42IDE2LjQgNCAxNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM1Y4aDEwVjUuMzN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOHYxMi42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y4SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlDaGFyZ2luZzIwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyMHYtM0g3djMuNjdDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWMTdoLTQuNEwxMSAyMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM1YxN2g0di0yLjVIOUwxMyA3djUuNWgyTDEyLjYgMTdIMTdWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlDaGFyZ2luZzMwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzdjkuMTdoMkwxMyA3djUuNWgybC0xLjA3IDJIMTdWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDIwdi01LjVIN3Y2LjE3QzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjE0LjVoLTMuMDdMMTEgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlDaGFyZ2luZzUwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC40NyAxMy41IDExIDIwdi01LjVIOWwuNTMtMUg3djcuMTdDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWMTMuNWgtMi41M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM3Y4LjE3aDIuNTNMMTMgN3Y1LjVoMmwtLjUzIDFIMTdWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlDaGFyZ2luZzYwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzVjExaDMuODdMMTMgN3Y0aDRWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEyLjVoMkwxMSAyMHYtNS41SDlsMS44Ny0zLjVIN3Y5LjY3QzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjExaC00djEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeUNoYXJnaW5nODAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzNWOWg0LjkzTDEzIDd2Mmg0VjUuMzNDMTcgNC42IDE2LjQgNCAxNS42NyA0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMi41aDJMMTEgMjB2LTUuNUg5TDExLjkzIDlIN3YxMS42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y5aC00djMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeUNoYXJnaW5nOTAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzNWOGg1LjQ3TDEzIDd2MWg0VjUuMzNDMTcgNC42IDE2LjQgNCAxNS42NyA0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMi41aDJMMTEgMjB2LTUuNUg5TDEyLjQ3IDhIN3YxMi42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y4aC00djQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXIxQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTIgMjJoMjBWMkwyIDIyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMiAyIDIyaDEwVjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxDZWxsdWxhcjJCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMiAyMmgyMFYyTDIgMjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEwIDIgMjJoMTJWMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbENlbGx1bGFyM0JhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0yIDIyaDIwVjJMMiAyMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNyAyIDIyaDE1Vjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbENlbGx1bGFyQ29ubmVjdGVkTm9JbnRlcm5ldDFCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMjIgOFYyTDIgMjJoMTZWOGg0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMHY4aDJ2LThoLTJ6bS04IDEyVjEyTDIgMjJoMTB6bTggMGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbENlbGx1bGFyQ29ubmVjdGVkTm9JbnRlcm5ldDJCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMjIgOFYyTDIgMjJoMTZWOGg0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAyMlYxMEwyIDIyaDEyem02LTEydjhoMnYtOGgtMnptMCAxMmgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbENlbGx1bGFyQ29ubmVjdGVkTm9JbnRlcm5ldDNCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMjIgOFYyTDIgMjJoMTZWOGg0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyMlY2TDIgMjJoMTZ6bTItMTJ2OGgydi04aC0yem0wIDEyaDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaTFCYXJMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE1LjUgMTQuNWMwLTIuOCAyLjItNSA1LTUgLjM2IDAgLjcxLjA0IDEuMDUuMTFMMjMuNjQgN2MtLjQ1LS4zNC00LjkzLTQtMTEuNjQtNEM1LjI4IDMgLjgxIDYuNjYuMzYgN0wxMiAyMS41bDMuNS00LjM2VjE0LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTQuNWMwLS4yMy4wNC0uNDYuMDctLjY4LS45Mi0uNDMtMi4xNC0uODItMy41Ny0uODItMyAwLTUuMSAxLjctNS4zIDEuOWw1LjMgNi42IDMuNS00LjM2VjE0LjV6TTIzIDE2di0xLjVjMC0xLjQtMS4xLTIuNS0yLjUtMi41UzE4IDEzLjEgMTggMTQuNVYxNmMtLjUgMC0xIC41LTEgMXY0YzAgLjUuNSAxIDEgMWg1Yy41IDAgMS0uNSAxLTF2LTRjMC0uNS0uNS0xLTEtMXptLTEgMGgtM3YtMS41YzAtLjguNy0xLjUgMS41LTEuNXMxLjUuNyAxLjUgMS41VjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpMUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xMi4wMSAyMS40OSAyMy42NCA3Yy0uNDUtLjM0LTQuOTMtNC0xMS42NC00QzUuMjggMyAuODEgNi42Ni4zNiA3bDExLjYzIDE0LjQ5LjAxLjAxLjAxLS4wMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi42NyAxNC44NiAxMiAyMS40OXYuMDFsLjAxLS4wMSA1LjMzLTYuNjNDMTcuMDYgMTQuNjUgMTUuMDMgMTMgMTIgMTNzLTUuMDYgMS42NS01LjMzIDEuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmkyQmFyTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNS41IDE0LjVjMC0yLjggMi4yLTUgNS01IC4zNiAwIC43MS4wNCAxLjA1LjExTDIzLjY0IDdjLS40NS0uMzQtNC45My00LTExLjY0LTRDNS4yOCAzIC44MSA2LjY2LjM2IDdMMTIgMjEuNWwzLjUtNC4zNlYxNC41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDE0LjVjMC0xLjM0LjUxLTIuNTMgMS4zNC0zLjQyQzE1LjYyIDEwLjUxIDEzLjk4IDEwIDEyIDEwYy00LjEgMC02LjggMi4yLTcuMiAyLjVsNy4yIDkgMy41LTQuMzhWMTQuNXpNMjMgMTZ2LTEuNWMwLTEuNC0xLjEtMi41LTIuNS0yLjVTMTggMTMuMSAxOCAxNC41VjE2Yy0uNSAwLTEgLjUtMSAxdjRjMCAuNS41IDEgMSAxaDVjLjUgMCAxLS41IDEtMXYtNGMwLS41LS41LTEtMS0xem0tMSAwaC0zdi0xLjVjMC0uOC43LTEuNSAxLjUtMS41czEuNS43IDEuNSAxLjVWMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmkyQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTIzLjY0IDdjLS40NS0uMzQtNC45My00LTExLjY0LTRDNS4yOCAzIC44MSA2LjY2LjM2IDdMMTIgMjEuNSAyMy42NCA3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ljc5IDEyLjUyIDEyIDIxLjVsNy4yMS04Ljk5QzE4Ljg1IDEyLjI0IDE2LjEgMTAgMTIgMTBzLTYuODUgMi4yNC03LjIxIDIuNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmkzQmFyTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNS41IDE0LjVjMC0yLjggMi4yLTUgNS01IC4zNiAwIC43MS4wNCAxLjA1LjExTDIzLjY0IDdjLS40NS0uMzQtNC45My00LTExLjY0LTRDNS4yOCAzIC44MSA2LjY2LjM2IDdMMTIgMjEuNWwzLjUtNC4zNlYxNC41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxNnYtMS41YzAtMS40LTEuMS0yLjUtMi41LTIuNVMxOCAxMy4xIDE4IDE0LjVWMTZjLS41IDAtMSAuNS0xIDF2NGMwIC41LjUgMSAxIDFoNWMuNSAwIDEtLjUgMS0xdi00YzAtLjUtLjUtMS0xLTF6bS0xIDBoLTN2LTEuNWMwLS44LjctMS41IDEuNS0xLjVzMS41LjcgMS41IDEuNVYxNnptLTYuNS0xLjVhNC45MiA0LjkyIDAgMCAxIDMuMjctNC42OEMxNy4yOSA4Ljk4IDE0Ljk0IDggMTIgOGMtNC44MSAwLTguMDQgMi42Mi04LjQ3IDIuOTVMMTIgMjEuNWwzLjUtNC4zNlYxNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpM0JhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0yMy42NCA3Yy0uNDUtLjM0LTQuOTMtNC0xMS42NC00QzUuMjggMyAuODEgNi42Ni4zNiA3TDEyIDIxLjUgMjMuNjQgN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41MyAxMC45NSAxMiAyMS41bDguNDctMTAuNTVDMjAuMDQgMTAuNjIgMTYuODEgOCAxMiA4cy04LjA0IDIuNjItOC40NyAyLjk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpQ29ubmVjdGVkTm9JbnRlcm5ldDAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjF2LTloOC45OUwyNCA4Ljk4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS41OSAxNC0yLjA5IDIuMDktLjMtLjNMMTUuNDEgMTQgMTQgMTUuNDFsMS43OSAxLjc5LjMuM0wxNCAxOS41OSAxNS40MSAyMWwyLjA5LTIuMDhMMTkuNTkgMjEgMjEgMTkuNTlsLTIuMDgtMi4wOUwyMSAxNS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaUNvbm5lY3RlZE5vSW50ZXJuZXQxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTEyIDEyaDguOTlMMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThsNi4zNSA2LjM2QTcuOTMyIDcuOTMyIDAgMCAxIDEyIDEzdi0xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMXYtOGMtMi4yMSAwLTQuMi44OS01LjY1IDIuMzRMMTIgMjF6bTktNS41OUwxOS41OSAxNGwtMi4wOSAyLjA5TDE1LjQxIDE0IDE0IDE1LjQxbDIuMDkgMi4wOUwxNCAxOS41OSAxNS40MSAyMWwyLjA5LTIuMDhMMTkuNTkgMjEgMjEgMTkuNTlsLTIuMDgtMi4wOUwyMSAxNS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaUNvbm5lY3RlZE5vSW50ZXJuZXQyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE4LjMxIDEyaDIuNjdMMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThsNC4yMyA0LjI0QTEwLjk2IDEwLjk2IDAgMCAxIDEyIDEwYzIuMzUgMCA0LjUyLjc0IDYuMzEgMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTBjLTMuMDMgMC01Ljc4IDEuMjMtNy43NyAzLjIyTDEyIDIxdi05aDYuMzJjLTEuOC0xLjI2LTMuOTctMi02LjMyLTJ6bTkgNS40MUwxOS41OSAxNGwtMi4wOSAyLjA5TDE1LjQxIDE0IDE0IDE1LjQxbDIuMDkgMi4wOUwxNCAxOS41OSAxNS40MSAyMWwyLjA5LTIuMDhMMTkuNTkgMjEgMjEgMTkuNTlsLTIuMDgtMi4wOUwyMSAxNS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaUNvbm5lY3RlZE5vSW50ZXJuZXQzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTIxLjE4IDExLjggMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThsMi44MiAyLjgyQzUuMTcgOS40NSA4LjQxIDggMTIgOHM2LjgzIDEuNDUgOS4xOCAzLjh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE4IDExLjhDMTguODMgOS40NSAxNS41OSA4IDEyIDhzLTYuODMgMS40NS05LjE4IDMuOEwxMiAyMXYtOWg4Ljk5bC4xOS0uMnpNMTkuNTkgMTRsLTIuMDkgMi4wOUwxNS40MSAxNCAxNCAxNS40MWwyLjA5IDIuMDlMMTQgMTkuNTkgMTUuNDEgMjFsMi4wOS0yLjA4TDE5LjU5IDIxIDIxIDE5LjU5bC0yLjA4LTIuMDlMMjEgMTUuNDEgMTkuNTkgMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmlTdGF0dXNiYXIxQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE3LjY1IDE1LjM0IDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4bDYuMzUgNi4zNkM3LjggMTMuODkgOS43OSAxMyAxMiAxM3M0LjIuODkgNS42NSAyLjM0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy42NSAxNS4zNEMxNi4yIDEzLjg5IDE0LjIxIDEzIDEyIDEzcy00LjIuODktNS42NSAyLjM0TDEyIDIxbDUuNjUtNS42NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaVN0YXR1c2JhcjJCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTkuNzcgMTMuMjIgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThsNC4yMyA0LjI0QzYuMjIgMTEuMjMgOC45NyAxMCAxMiAxMHM1Ljc4IDEuMjMgNy43NyAzLjIyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS43NyAxMy4yMkMxNy43OCAxMS4yMyAxNS4wMyAxMCAxMiAxMHMtNS43OCAxLjIzLTcuNzcgMy4yMkwxMiAyMWw3Ljc3LTcuNzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmlTdGF0dXNiYXIzQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTIxLjE4IDExLjggMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThsMi44MiAyLjgyQzUuMTcgOS40NSA4LjQxIDggMTIgOHM2LjgzIDEuNDUgOS4xOCAzLjh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE4IDExLjhDMTguODMgOS40NSAxNS41OSA4IDEyIDhzLTYuODMgMS40NS05LjE4IDMuOEwxMiAyMWw5LjE4LTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaVN0YXR1c2JhckNvbm5lY3RlZE5vSW50ZXJuZXQxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE3IDE0Ljc2VjhoNS45MkMxOS45NyA1LjUxIDE2LjE2IDQgMTIgNCA3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4bDYuMzUgNi4zNkE3Ljk1IDcuOTUgMCAwIDEgMTIgMTNjMS44OSAwIDMuNjMuNjYgNSAxLjc2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjM1IDE1LjM0IDEyIDIxbDUtNS4wMXYtMS4yM0E3Ljk2MyA3Ljk2MyAwIDAgMCAxMiAxM2MtMi4yMSAwLTQuMi44OS01LjY1IDIuMzR6TTE5IDE4aDJ2MmgtMnpNMTkgMTBoMnY2aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpU3RhdHVzYmFyQ29ubmVjdGVkTm9JbnRlcm5ldDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTcgMTEuMjFWOGg1LjkyQzE5Ljk3IDUuNTEgMTYuMTYgNCAxMiA0IDcuMzEgNCAzLjA3IDUuOSAwIDguOThsNC4yMyA0LjI0QTEwLjk2IDEwLjk2IDAgMCAxIDE3IDExLjIxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjIzIDEzLjIyIDEyIDIxbDUtNS4wMXYtNC43OGExMC45NiAxMC45NiAwIDAgMC0xMi43NyAyLjAxek0xOSAxOGgydjJoLTJ6TTE5IDEwaDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaVN0YXR1c2JhckNvbm5lY3RlZE5vSW50ZXJuZXQzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE3IDlWOGg1LjkyQzE5Ljk3IDUuNTEgMTYuMTYgNCAxMiA0IDcuMzEgNCAzLjA3IDUuOSAwIDguOThsMi44MiAyLjgyQTEyLjkzIDEyLjkzIDAgMCAxIDEyIDhjMS43NyAwIDMuNDYuMzYgNSAxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjgyIDExLjggMTIgMjFsNS01LjAxVjljLTEuNTQtLjY0LTMuMjMtMS01LTEtMy41OSAwLTYuODMgMS40NS05LjE4IDMuOHpNMTkgMThoMnYyaC0yek0xOSAxMGgydjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmlTdGF0dXNiYXJDb25uZWN0ZWROb0ludGVybmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOGgydjJoLTJ6TTE5IDEwaDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOGg1LjkyQzE5Ljk3IDUuNTEgMTYuMTYgNCAxMiA0IDcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjFsNS01LjAxVjh6XCIsXCJvcGFjaXR5XCI6XCIuM1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpU3RhdHVzYmFyTm90Q29ubmVjdGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC41MiAxNS4xNmMuNDEtLjczIDEuMTgtMS4xNiAxLjYzLTEuOC40OC0uNjguMjEtMS45NC0xLjE0LTEuOTQtLjg4IDAtMS4zMi42Ny0xLjUgMS4yM2wtMS4zNy0uNTdDMTYuNTEgMTAuOTYgMTcuNTIgMTAgMTkgMTBjMS4yMyAwIDIuMDguNTYgMi41MSAxLjI2LjM3LjYuNTggMS43My4wMSAyLjU3LS42My45My0xLjIzIDEuMjEtMS41NiAxLjgxLS4xMy4yNC0uMTguNC0uMTggMS4xOGgtMS41MmMwLS40MS0uMDctMS4wOC4yNi0xLjY2em0tLjU3IDMuNzljMC0uNTkuNDctMS4wNCAxLjA1LTEuMDQuNTkgMCAxLjA0LjQ1IDEuMDQgMS4wNCAwIC41OC0uNDQgMS4wNS0xLjA0IDEuMDUtLjU4IDAtMS4wNS0uNDctMS4wNS0xLjA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE0IDEzYzAtMi43NiAyLjI0LTUgNS01IDEuNjMgMCAzLjA3Ljc5IDMuOTggMkwyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMWw0LjAxLTQuMDJDMTQuOCAxNi4wNyAxNCAxNC42MyAxNCAxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaUNhbGxpbmcxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE2LjQ5IDQuNWMxLjc5IDAgMy40Mi43MyA0LjU5IDEuOTFsMS4wNi0xLjA2QTcuOTQgNy45NCAwIDAgMCAxNi40OSAzYy0yLjIxIDAtNC4yMS45LTUuNjYgMi4zNGwxLjA2IDEuMDZhNi41NDUgNi41NDUgMCAwIDEgNC42LTEuOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNi40OSA2Yy0xLjM4IDAtMi42My41Ni0zLjU0IDEuNDZsMS4wNiAxLjA2Yy42My0uNjMgMS41MS0xLjAzIDIuNDctMS4wM3MxLjg0LjM5IDIuNDcgMS4wM2wxLjA2LTEuMDZBNC45NCA0Ljk0IDAgMCAwIDE2LjQ5IDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjQ5IDljLS41NSAwLTEuMDUuMjItMS40MS41OUwxNi40OSAxMWwxLjQxLTEuNDFjLS4zNi0uMzctLjg2LS41OS0xLjQxLS41OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTcuODNjMS4yOS41NCAyLjYzLjg5IDQgMS4wN3YtMi4yM2wtMi4zNS0uNDdMMTUgMTcuODN6TTcuMzMgNUg1LjFjLjE4IDEuMzcuNTMgMi43IDEuMDcgNEw3LjggNy4zNSA3LjMzIDV6XCIsXCJvcGFjaXR5XCI6XCIuM1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC4yIDE0Ljg3LTMuNjctLjczYy0uNS0uMS0uODMuMi0uOS4yN2wtMi41MiAyLjVjLTIuNS0xLjQzLTQuNTctMy41LTYtNmwyLjUtMi41MmMuMjMtLjI0LjMzLS41Ny4yNy0uOUw5LjEzIDMuOGMtLjA5LS40Ni0uNS0uOC0uOTgtLjhINGMtLjU2IDAtMS4wMy40Ny0xIDEuMDMuMTcgMi44OSAxLjA1IDUuNiAyLjQzIDcuOTcgMS41OCAyLjczIDMuODUgNC45OSA2LjU3IDYuNTcgMi4zNyAxLjM3IDUuMDggMi4yNiA3Ljk3IDIuNDMuNTUuMDMgMS4wMy0uNDMgMS4wMy0xdi00LjE1YzAtLjQ4LS4zNC0uODktLjgtLjk4ek01LjEgNWgyLjIzbC40NyAyLjM1TDYuMTcgOWMtLjU0LTEuMy0uOS0yLjYzLTEuMDctNHpNMTkgMTguOWMtMS4zNy0uMTgtMi43LS41My00LTEuMDdsMS42NS0xLjYzIDIuMzUuNDd2Mi4yM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaUNhbGxpbmcyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE2LjQ5IDQuNWMxLjc5IDAgMy40Mi43MyA0LjU5IDEuOTFsMS4wNi0xLjA2QTcuOTQgNy45NCAwIDAgMCAxNi40OSAzYy0yLjIxIDAtNC4yMS45LTUuNjYgMi4zNGwxLjA2IDEuMDZhNi41NDUgNi41NDUgMCAwIDEgNC42LTEuOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNDkgNmMtMS4zOCAwLTIuNjMuNTYtMy41NCAxLjQ2bDEuMDYgMS4wNmMuNjMtLjYzIDEuNTEtMS4wMyAyLjQ3LTEuMDNzMS44NC4zOSAyLjQ3IDEuMDNsMS4wNi0xLjA2QTQuOTQgNC45NCAwIDAgMCAxNi40OSA2ek0xNi40OSA5Yy0uNTUgMC0xLjA1LjIyLTEuNDEuNTlMMTYuNDkgMTFsMS40MS0xLjQxYy0uMzYtLjM3LS44Ni0uNTktMS40MS0uNTl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE3LjgzYzEuMjkuNTQgMi42My44OSA0IDEuMDd2LTIuMjNsLTIuMzUtLjQ3TDE1IDE3Ljgzek03LjMzIDVINS4xYy4xOCAxLjM3LjUzIDIuNyAxLjA3IDRMNy44IDcuMzUgNy4zMyA1elwiLFwib3BhY2l0eVwiOlwiLjNcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuMiAxNC44Ny0zLjY3LS43M2MtLjUtLjEtLjgzLjItLjkuMjdsLTIuNTIgMi41Yy0yLjUtMS40My00LjU3LTMuNS02LTZsMi41LTIuNTJjLjIzLS4yNC4zMy0uNTcuMjctLjlMOS4xMyAzLjhjLS4wOS0uNDYtLjUtLjgtLjk4LS44SDRjLS41NiAwLTEuMDMuNDctMSAxLjAzLjE3IDIuODkgMS4wNSA1LjYgMi40MyA3Ljk3IDEuNTggMi43MyAzLjg1IDQuOTkgNi41NyA2LjU3IDIuMzcgMS4zNyA1LjA4IDIuMjYgNy45NyAyLjQzLjU1LjAzIDEuMDMtLjQzIDEuMDMtMXYtNC4xNWMwLS40OC0uMzQtLjg5LS44LS45OHpNNS4xIDVoMi4yM2wuNDcgMi4zNUw2LjE3IDljLS41NC0xLjMtLjktMi42My0xLjA3LTR6TTE5IDE4LjljLTEuMzctLjE4LTIuNy0uNTMtNC0xLjA3bDEuNjUtMS42MyAyLjM1LjQ3djIuMjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxMjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE1SDUuNXYtNC41SDRWOWgzdjZ6bTYuNS0xLjVoLTN2LTFoMmMuNTUgMCAxLS40NSAxLTFWMTBjMC0uNTUtLjQ1LTEtMS0xSDl2MS41aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxVjE1aDQuNXYtMS41em02IC41di00YzAtLjU1LS40NS0xLTEtMUgxNXYxLjVoM3YxaC0ydjFoMnYxaC0zVjE1aDMuNWMuNTUgMCAxLS40NSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUzZFJvdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUzIDIxLjQ4QTEwLjQ4NyAxMC40ODcgMCAwIDEgMS41NiAxM0guMDZjLjUxIDYuMTYgNS42NiAxMSAxMS45NSAxMWwuNjYtLjAzLTMuODEtMy44MS0xLjMzIDEuMzJ6bS44OS02LjUyYy0uMTkgMC0uMzctLjAzLS41Mi0uMDhhMS4wNyAxLjA3IDAgMCAxLS40LS4yNGMtLjExLS4xLS4yLS4yMi0uMjYtLjM3LS4wNi0uMTQtLjA5LS4zLS4wOS0uNDdoLTEuM2MwIC4zNi4wNy42OC4yMS45NS4xNC4yNy4zMy41LjU2LjY5LjI0LjE4LjUxLjMyLjgyLjQxLjMuMS42Mi4xNS45Ni4xNS4zNyAwIC43Mi0uMDUgMS4wMy0uMTUuMzItLjEuNi0uMjUuODMtLjQ0cy40Mi0uNDMuNTUtLjcyLjItLjYxLjItLjk3YzAtLjE5LS4wMi0uMzgtLjA3LS41NmExLjY3IDEuNjcgMCAwIDAtLjIzLS41MWMtLjEtLjE2LS4yNC0uMy0uNC0uNDMtLjE3LS4xMy0uMzctLjIzLS42MS0uMzFhMi4wOTggMi4wOTggMCAwIDAgLjg5LS43NWMuMS0uMTUuMTctLjMuMjItLjQ2cy4wNy0uMzIuMDctLjQ4YzAtLjM2LS4wNi0uNjgtLjE4LS45NnMtLjI5LS41MS0uNTEtLjY5Yy0uMi0uMTktLjQ3LS4zMy0uNzctLjQzQzkuMTEgOC4wNSA4Ljc3IDggOC40IDhjLS4zNiAwLS42OS4wNS0xIC4xNi0uMy4xMS0uNTcuMjYtLjc5LjQ1LS4yMS4xOS0uMzguNDEtLjUxLjY3LS4xMi4yNi0uMTguNTQtLjE4Ljg1aDEuM2MwLS4xNy4wMy0uMzIuMDktLjQ1cy4xNC0uMjUuMjUtLjM0LjIzLS4xNy4zOC0uMjIuMy0uMDguNDgtLjA4Yy40IDAgLjcuMS44OS4zMS4xOS4yLjI5LjQ5LjI5Ljg2IDAgLjE4LS4wMy4zNC0uMDguNDlzLS4xNC4yNy0uMjUuMzdjLS4xMS4xLS4yNS4xOC0uNDEuMjQtLjE2LjA2LS4zNi4wOS0uNTguMDloLS43N3YxLjAzaC43N2MuMjIgMCAuNDIuMDIuNi4wN3MuMzMuMTMuNDUuMjNjLjEyLjExLjIyLjI0LjI5LjRzLjEuMzUuMS41N2MwIC40MS0uMTIuNzItLjM1LjkzLS4yMy4yMy0uNTUuMzMtLjk1LjMzem04LjU1LTUuOTJjLS4zMi0uMzMtLjctLjU5LTEuMTQtLjc3LS40NC0uMTgtLjkzLS4yNy0xLjQ3LS4yN0gxMnY4aDIuM2MuNTUgMCAxLjA2LS4wOSAxLjUxLS4yN3MuODQtLjQzIDEuMTYtLjc2Yy4zMi0uMzMuNTctLjczLjc0LTEuMTkuMTctLjQ3LjI2LS45OS4yNi0xLjU3di0uNGMwLS41OC0uMDktMS4xLS4yNi0xLjU3cy0uNDItLjg3LS43NC0xLjJ6bS0uMzkgMy4xNmMwIC40Mi0uMDUuNzktLjE0IDEuMTMtLjEuMzMtLjI0LjYyLS40My44NS0uMTkuMjMtLjQzLjQxLS43MS41My0uMjkuMTItLjYyLjE4LS45OS4xOGgtLjkxVjkuMTJoLjk3Yy43MiAwIDEuMjcuMjMgMS42NC42OS4zOC40Ni41NyAxLjEyLjU3IDEuOTl2LjR6TTEyLjAxIDBsLS42Ni4wMyAzLjgxIDMuODEgMS4zMy0xLjMzYzMuMjcgMS41NSA1LjYxIDQuNzIgNS45NiA4LjQ4aDEuNUMyMy40NSA0Ljg0IDE4LjMgMCAxMi4wMSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWJjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTFoLTEuNXYtLjVoLTJ2M2gyVjEzSDIxdjFjMCAuNTUtLjQ1IDEtMSAxaC0zYy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MXpNOCAxMHY1SDYuNXYtMS41aC0yVjE1SDN2LTVjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF6bS0xLjUuNWgtMlYxMmgydi0xLjV6bTcgMS41Yy41NSAwIDEgLjQ1IDEgMXYxYzAgLjU1LS40NSAxLTEgMWgtNFY5aDRjLjU1IDAgMSAuNDUgMSAxdjFjMCAuNTUtLjQ1IDEtMSAxek0xMSAxMC41di43NWgydi0uNzVoLTJ6bTIgMi4yNWgtMnYuNzVoMnYtLjc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjZXNzaWJpbGl0eU5ldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSA2Yy0yLjYxLjctNS42NyAxLTguNSAxcy01Ljg5LS4zLTguNS0xTDMgOGMxLjg2LjUgNCAuODMgNiAxdjEzaDJ2LTZoMnY2aDJWOWMyLS4xNyA0LjE0LS41IDYtMWwtLjUtMnpNMTIgNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBY2Nlc3NpYmlsaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptOSA3aC02djEzaC0ydi02aC0ydjZIOVY5SDNWN2gxOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjZXNzaWJsZUZvcndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCI0LjU0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE3aC0yYzAgMS42NS0xLjM1IDMtMyAzcy0zLTEuMzUtMy0zIDEuMzUtMyAzLTN2LTJjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNXptMy0zLjVoLTEuODZsMS42Ny0zLjY3QzE4LjQyIDguNSAxNy40NCA3IDE1Ljk2IDdoLTUuMmMtLjgxIDAtMS41NC40Ny0xLjg3IDEuMkw4LjIyIDEwbDEuOTIuNTMuNjUtMS41M0gxM2wtMS44MyA0LjFjLS42IDEuMzMuMzkgMi45IDEuODUgMi45SDE4djVoMnYtNS41YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjZXNzaWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTN2LTJjLTEuNTQuMDItMy4wOS0uNzUtNC4wNy0xLjgzbC0xLjI5LTEuNDNjLS4xNy0uMTktLjM4LS4zNC0uNjEtLjQ1LS4wMSAwLS4wMS0uMDEtLjAyLS4wMUgxM2MtLjM1LS4yLS43NS0uMy0xLjE5LS4yNkMxMC43NiA3LjExIDEwIDguMDQgMTAgOS4wOVYxNWMwIDEuMS45IDIgMiAyaDV2NWgydi01LjVjMC0xLjEtLjktMi0yLTJoLTN2LTMuNDVjMS4yOSAxLjA3IDMuMjUgMS45NCA1IDEuOTV6bS05IDdjLTEuNjYgMC0zLTEuMzQtMy0zIDAtMS4zMS44NC0yLjQxIDItMi44M1YxMi4xYTUgNSAwIDEgMCA1LjkgNS45aC0yLjA3Yy0uNDEgMS4xNi0xLjUyIDItMi44MyAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjb3VudEJhbGFuY2VXYWxsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDcuMjhWNWMwLTEuMS0uOS0yLTItMkg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtMi4yOEEyIDIgMCAwIDAgMjIgMTVWOWEyIDIgMCAwIDAtMS0xLjcyek0yMCA5djZoLTdWOWg3ek01IDE5VjVoMTR2MmgtNmMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDZ2Mkg1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2XCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjb3VudEJhbGFuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAxMGgtMnY3aDJ2LTd6bTYgMGgtMnY3aDJ2LTd6bTguNSA5SDJ2MmgxOXYtMnptLTIuNS05aC0ydjdoMnYtN3ptLTctNi43NEwxNi43MSA2SDYuMjlsNS4yMS0yLjc0bTAtMi4yNkwyIDZ2MmgxOVY2bC05LjUtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFjY291bnRCb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTIgMTZIN3YtLjI0QzguNDIgMTcuNjIgMTAuMTYgMTcgMTIgMTdzMy41OC42MiA1IDEuNzZWMTl6bTItMS4xNEMxNy4yIDE2LjA5IDE0LjczIDE1IDEyIDE1cy01LjIgMS4wOS03IDIuODZWNWgxNHYxMi44NnpNMTIgMTNjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTMuOTMgNiAxMiA2IDguNSA3LjU3IDguNSA5LjUgMTAuMDcgMTMgMTIgMTN6bTAtNWMuODMgMCAxLjUuNjcgMS41IDEuNVMxMi44MyAxMSAxMiAxMXMtMS41LS42Ny0xLjUtMS41UzExLjE3IDggMTIgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFjY291bnRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek03LjM1IDE4LjVDOC42NiAxNy41NiAxMC4yNiAxNyAxMiAxN3MzLjM0LjU2IDQuNjUgMS41Yy0xLjMxLjk0LTIuOTEgMS41LTQuNjUgMS41cy0zLjM0LS41Ni00LjY1LTEuNXptMTAuNzktMS4zOGE5Ljk0NyA5Ljk0NyAwIDAgMC0xMi4yOCAwQTcuOTU3IDcuOTU3IDAgMCAxIDQgMTJjMC00LjQyIDMuNTgtOCA4LThzOCAzLjU4IDggOGMwIDEuOTUtLjcgMy43My0xLjg2IDUuMTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZjLTEuOTMgMC0zLjUgMS41Ny0zLjUgMy41UzEwLjA3IDEzIDEyIDEzczMuNS0xLjU3IDMuNS0zLjVTMTMuOTMgNiAxMiA2em0wIDVjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMS4xNyA4IDEyIDhzMS41LjY3IDEuNSAxLjVTMTIuODMgMTEgMTIgMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTB2LTJINHYtNmgxOFY2YzAtMS4xMS0uODktMi0yLTJ6bTAgNEg0VjZoMTZ2MnptNCA5djJoLTN2M2gtMnYtM2gtM3YtMmgzdi0zaDJ2M2gzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDUuNSA2IDQuNXYxYy43IDAgMS4zNy4xIDIgLjI5VjlsLTgtNi04IDZ2MTJoNy42OGMtLjMtLjYyLS41LTEuMjktLjYtMkg2di05bDYtNC41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTMgNS41aC0yLjVWMjFoLTF2LTIuNUgxNXYtMWgyLjVWMTVoMXYyLjVIMjF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZFNob3BwaW5nQ2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOWgyVjZoM1Y0aC0zVjFoLTJ2M0g4djJoM3Yzem0tNCA5Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yem0xMCAwYy0xLjEgMC0xLjk5LjktMS45OSAycy44OSAyIDEuOTkgMiAyLS45IDItMi0uOS0yLTItMnptLTguOS01aDcuNDVjLjc1IDAgMS40MS0uNDEgMS43NS0xLjAzbDMuODYtNy4wMUwxOS40MiA0bC0zLjg3IDdIOC41M0w0LjI3IDJIMXYyaDJsMy42IDcuNTktMS4zNSAyLjQ0QzQuNTIgMTUuMzcgNS40OCAxNyA3IDE3aDEydi0ySDdsMS4xLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRUYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNS4xOCAxMC41OSAxNi42bC00LjI0LTQuMjQgMS40MS0xLjQxIDIuODMgMi44MyAxMC0xMEwyMiA1LjE4ek0xMiAyMGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOGMxLjU3IDAgMy4wNC40NiA0LjI4IDEuMjVsMS40NS0xLjQ1QTEwLjAyIDEwLjAyIDAgMCAwIDEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTBjMS43MyAwIDMuMzYtLjQ0IDQuNzgtMS4yMmwtMS41LTEuNWMtMSAuNDYtMi4xMS43Mi0zLjI4Ljcyem03LTVoLTN2MmgzdjNoMnYtM2gzdi0yaC0zdi0zaC0ydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRUb0RyaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTFjLjE3IDAgLjMzLjAxLjQ5LjAyTDE1IDNIOWw1LjY4IDkuODRBNS45ODYgNS45ODYgMCAwIDEgMTkgMTF6TTguMTUgNC41MiAyIDE1LjUgNSAyMWw2LjMzLTEwLjk3ek0xMy4yIDE1LjVIOS45TDYuNzMgMjFoNy44MUE1LjkzIDUuOTMgMCAwIDEgMTMgMTdjMC0uNTIuMDctMS4wMi4yLTEuNXpNMjAgMTZ2LTNoLTJ2M2gtM3YyaDN2M2gydi0zaDN2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRjaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDV2MmgtM3YzaC0yVjdoLTNWNWgzVjJoMnYzaDN6bS0zIDE0SDVWNWg2VjNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtNmgtMnY2em0tNC02djRoMnYtNGgtMnptLTQgNGgyVjloLTJ2OHptLTIgMHYtNkg3djZoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkbWluUGFuZWxTZXR0aW5ncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxN1wiLFwiY3lcIjpcIjE1LjVcIixcInJcIjpcIjEuMTJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTcuNWMtLjczIDAtMi4xOS4zNi0yLjI0IDEuMDguNS43MSAxLjMyIDEuMTcgMi4yNCAxLjE3czEuNzQtLjQ2IDIuMjQtMS4xN2MtLjA1LS43Mi0xLjUxLTEuMDgtMi4yNC0xLjA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMS4wOVY2LjI3TDEwLjUgMyAzIDYuMjd2NC45MWMwIDQuNTQgMy4yIDguNzkgNy41IDkuODIuNTUtLjEzIDEuMDgtLjMyIDEuNi0uNTVBNS45NzMgNS45NzMgMCAwIDAgMTcgMjNjMy4zMSAwIDYtMi42OSA2LTYgMC0yLjk3LTIuMTYtNS40My01LTUuOTF6TTExIDE3YzAgLjU2LjA4IDEuMTEuMjMgMS42Mi0uMjQuMTEtLjQ4LjIyLS43My4zLTMuMTctMS01LjUtNC4yNC01LjUtNy43NHYtMy42bDUuNS0yLjQgNS41IDIuNHYzLjUxYy0yLjg0LjQ4LTUgMi45NC01IDUuOTF6bTYgNGMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0LTEuNzkgNC00IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkc0NsaWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNzEgMTcuOTlBNS45OTMgNS45OTMgMCAwIDEgNiAxMmMwLTMuMzEgMi42OS02IDYtNiAzLjIyIDAgNS44NCAyLjUzIDUuOTkgNS43MWwtMi4xLS42M2EzLjk5OSAzLjk5OSAwIDEgMC00LjgxIDQuODFsLjYzIDIuMXpNMjIgMTJjMCAuMy0uMDEuNi0uMDQuOWwtMS45Ny0uNTljLjAxLS4xLjAxLS4yMS4wMS0uMzEgMC00LjQyLTMuNTgtOC04LThzLTggMy41OC04IDggMy41OCA4IDggOGMuMSAwIC4yMSAwIC4zMS0uMDFsLjU5IDEuOTdjLS4zLjAzLS42LjA0LS45LjA0LTUuNTIgMC0xMC00LjQ4LTEwLTEwUzYuNDggMiAxMiAyczEwIDQuNDggMTAgMTB6bS0zLjc3IDQuMjZMMjIgMTVsLTEwLTMgMyAxMCAxLjI2LTMuNzcgNC4yNyA0LjI3IDEuOTgtMS45OC00LjI4LTQuMjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGFybUFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMzM3IDEuODEgNC42MDcgMy44NDUtMS4yOCAxLjUzNS00LjYxLTMuODQzem0tMTAuNjc0IDAgMS4yODIgMS41MzZMMy4zMzcgNy4xOWwtMS4yOC0xLjUzNnpNMTIgNGE5IDkgMCAxIDAgLjAwMSAxOC4wMDFBOSA5IDAgMCAwIDEyIDR6bTAgMTZjLTMuODYgMC03LTMuMTQtNy03czMuMTQtNyA3LTcgNyAzLjE0IDcgNy0zLjE0IDctNyA3em0xLTExaC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGFybU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMDQgNi4yOUMxMC42NiA2LjExIDExLjMyIDYgMTIgNmMzLjg2IDAgNyAzLjE0IDcgNyAwIC42OC0uMTEgMS4zNC0uMjkgMS45NmwxLjU2IDEuNTZjLjQ3LTEuMDguNzMtMi4yNy43My0zLjUyQTkgOSAwIDAgMCA4LjQ3IDQuNzJsMS41NyAxLjU3em03LjI5Ny00LjQ4IDQuNjA3IDMuODQ1LTEuMjggMS41MzUtNC42MS0zLjg0M3pNMy4wMiAyLjEgMS42MSAzLjUxbDEuMzcgMS4zNy0uOTIuNzcgMS4yOCAxLjU0IDEuMDYtLjg4LjguOEE4Ljk2NCA4Ljk2NCAwIDAgMCAzIDEzYTkgOSAwIDAgMCA5IDljMi4yNSAwIDQuMzEtLjgzIDUuODktMi4ybDIuMSAyLjEgMS40MS0xLjQxTDMuMDIgMi4xek0xMiAyMGMtMy44NiAwLTctMy4xNC03LTcgMC0xLjcuNjEtMy4yNiAxLjYyLTQuNDdsOS44NSA5Ljg1QTYuOTU2IDYuOTU2IDAgMCAxIDEyIDIwek03LjQ4IDMuNzNsLjQ2LS4zOC0xLjI4LTEuNTQtLjYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFsYXJtT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjU0IDE0LjUzIDguNDEgMTIuNGwtMS4wNiAxLjA2IDMuMTggMy4xOCA2LTYtMS4wNi0xLjA2em02Ljc5Ny0xMi43MiA0LjYwNyAzLjg0NS0xLjI4IDEuNTM1LTQuNjEtMy44NDN6bS0xMC42NzQgMCAxLjI4MiAxLjUzNkwzLjMzNyA3LjE5bC0xLjI4LTEuNTM2ek0xMiA0YTkgOSAwIDEgMCAuMDAxIDE4LjAwMUE5IDkgMCAwIDAgMTIgNHptMCAxNmMtMy44NiAwLTctMy4xNC03LTdzMy4xNC03IDctNyA3IDMuMTQgNyA3LTMuMTQgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGFybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSA4SDExdjZsNC43NSAyLjg1Ljc1LTEuMjMtNC0yLjM3em00LjgzNy02LjE5IDQuNjA3IDMuODQ1LTEuMjggMS41MzUtNC42MS0zLjg0M3ptLTEwLjY3NCAwIDEuMjgyIDEuNTM2TDMuMzM3IDcuMTlsLTEuMjgtMS41MzZ6TTEyIDRhOSA5IDAgMSAwIC4wMDEgMTguMDAxQTkgOSAwIDAgMCAxMiA0em0wIDE2Yy0zLjg2IDAtNy0zLjE0LTctN3MzLjE0LTcgNy03IDcgMy4xNCA3IDctMy4xNCA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFsbEluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjdjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek01IDEwaDMuMTNjLjIxLjc4LjY3IDEuNDcgMS4yNyAySDV2LTJ6bTE0IDJoLTQuNGMuNi0uNTMgMS4wNi0xLjIyIDEuMjctMkgxOXYyem0wLTRoLTV2MWMwIDEuMDctLjkzIDItMiAycy0yLS45My0yLTJWOEg1VjVoMTR2M3ptLTIgN2gtM3YxYzAgLjQ3LS4xOS45LS40OCAxLjI1LS4zNy40NS0uOTIuNzUtMS41Mi43NXMtMS4xNS0uMy0xLjUyLS43NWMtLjI5LS4zNS0uNDgtLjc4LS40OC0xLjI1di0xSDN2NGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi00aC00ek01IDE3aDMuMTNjLjAyLjA5LjA2LjE3LjA5LjI1LjI0LjY4LjY1IDEuMjggMS4xOCAxLjc1SDV2LTJ6bTE0IDJoLTQuNGMuNTQtLjQ3Ljk1LTEuMDcgMS4xOC0xLjc1LjAzLS4wOC4wNy0uMTYuMDktLjI1SDE5djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGxPdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNHY0bDQtNHptMTIgMCA0IDRWNHptNCAxNnYtNGwtNCA0ek00IDIwaDRsLTQtNHptMTUtOGMwLTMuODctMy4xMy03LTctN3MtNyAzLjEzLTcgNyAzLjEzIDcgNyA3IDctMy4xMyA3LTd6bS03IDVjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQW5hbHl0aWNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDEyaDJ2NUg3ek0xNSA3aDJ2MTBoLTJ6TTExIDE0aDJ2M2gtMnpNMTEgMTBoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQW5jaG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgMTUgMS41NSAxLjU1Yy0uOTYgMS42OS0zLjMzIDMuMDQtNS41NSAzLjM3VjExaDNWOWgtM1Y3LjgyQzE0LjE2IDcuNCAxNSA2LjMgMTUgNWMwLTEuNjUtMS4zNS0zLTMtM1M5IDMuMzUgOSA1YzAgMS4zLjg0IDIuNCAyIDIuODJWOUg4djJoM3Y4LjkyYy0yLjIyLS4zMy00LjU5LTEuNjgtNS41NS0zLjM3TDcgMTVsLTQtM3YzYzAgMy44OCA0LjkyIDcgOSA3czktMy4xMiA5LTd2LTNsLTQgM3pNMTIgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQW5kcm9pZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuNiA5LjQ4IDEuODQtMy4xOGMuMTYtLjMxLjA0LS42OS0uMjYtLjg1YS42MzcuNjM3IDAgMCAwLS44My4yMmwtMS44OCAzLjI0YTExLjQ2MyAxMS40NjMgMCAwIDAtOC45NCAwTDUuNjUgNS42N2EuNjQzLjY0MyAwIDAgMC0uODctLjJjLS4yOC4xOC0uMzcuNTQtLjIyLjgzTDYuNCA5LjQ4QTEwLjc4IDEwLjc4IDAgMCAwIDEgMThoMjJhMTAuNzggMTAuNzggMCAwIDAtNS40LTguNTJ6TTcgMTUuMjVhMS4yNSAxLjI1IDAgMSAxIDAtMi41IDEuMjUgMS4yNSAwIDAgMSAwIDIuNXptMTAgMGExLjI1IDEuMjUgMCAxIDEgMC0yLjUgMS4yNSAxLjI1IDAgMCAxIDAgMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQW5ub3VuY2VtZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdMNCAxNy4xN1Y0aDE2djEyek0xMSA1aDJ2NmgtMnptMCA4aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFwaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0IDEyLTIgMi0yLTIgMi0yIDIgMnptLTItNiAyLjEyIDIuMTIgMi41LTIuNUwxMiAxIDcuMzggNS42MmwyLjUgMi41TDEyIDZ6bS02IDYgMi4xMi0yLjEyLTIuNS0yLjVMMSAxMmw0LjYyIDQuNjIgMi41LTIuNUw2IDEyem0xMiAwLTIuMTIgMi4xMiAyLjUgMi41TDIzIDEybC00LjYyLTQuNjItMi41IDIuNUwxOCAxMnptLTYgNi0yLjEyLTIuMTItMi41IDIuNUwxMiAyM2w0LjYyLTQuNjItMi41LTIuNUwxMiAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFwcEJsb2NraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bS0yLjUgNEEyLjUgMi41IDAgMCAxIDE4IDkuNWMuNDIgMCAuOC4xMSAxLjE1LjI5bC0zLjM2IDMuMzZjLS4xOC0uMzUtLjI5LS43My0uMjktMS4xNXptMi41IDIuNWMtLjQyIDAtLjgtLjExLTEuMTUtLjI5bDMuMzYtMy4zNmMuMTguMzUuMjkuNzMuMjkgMS4xNWEyLjUgMi41IDAgMCAxLTIuNSAyLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDE4SDdWNmgxMHYxaDJWM2MwLTEuMS0uOS0yLTItMkg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0ydi00aC0ydjF6TTcgM2gxMHYxSDdWM3ptMTAgMThIN3YtMWgxMHYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXBwU2hvcnRjdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxOEg3VjZoMTB2MWgyVjNjMC0xLjEtLjktMi0yLTJIN2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMnYtNGgtMnYxek03IDNoMTB2MUg3VjN6bTEwIDE4SDd2LTFoMTB2MXpNMjAuMzggOS42MiAyMSAxMWwuNjItMS4zOEwyMyA5bC0xLjM4LS42MkwyMSA3bC0uNjIgMS4zOEwxOSA5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNiA4LTEuMjUgMi43NUwxMiAxMmwyLjc1IDEuMjVMMTYgMTZsMS4yNS0yLjc1TDIwIDEybC0yLjc1LTEuMjV6TTIxIDEzbC0uNjIgMS4zOEwxOSAxNWwxLjM4LjYyTDIxIDE3bC42Mi0xLjM4TDIzIDE1bC0xLjM4LS42MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFycm93Q2lyY2xlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjNC40MSAwIDggMy41OSA4IDhzLTMuNTkgOC04IDgtOC0zLjU5LTgtOCAzLjU5LTggOC04bTAtMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxMFY4aC0ydjRIOGw0IDQgNC00aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dDaXJjbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMHMxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMiAyIDYuNDggMiAxMnptMTggMGMwIDQuNDItMy41OCA4LTggOHMtOC0zLjU4LTgtOCAzLjU4LTggOC04IDggMy41OCA4IDh6TTggMTJsNC00IDEuNDEgMS40MUwxMS44MyAxMUgxNnYyaC00LjE3bDEuNTkgMS41OUwxMiAxNmwtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dDaXJjbGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwUzIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMHpNNCAxMmMwLTQuNDIgMy41OC04IDgtOHM4IDMuNTggOCA4LTMuNTggOC04IDgtOC0zLjU4LTgtOHptMTIgMC00IDQtMS40MS0xLjQxTDEyLjE3IDEzSDh2LTJoNC4xN2wtMS41OS0xLjU5TDEyIDhsNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dDaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOG0wIDJjNS41MiAwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTB6bS0xLTEwdjRoMnYtNGgzbC00LTQtNCA0aDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd091dHdhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDZ2Mmg4LjU5TDUgMTcuNTkgNi40MSAxOSAxNiA5LjQxVjE4aDJWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFycm93UmlnaHRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjAxIDExSDR2MmgxMi4wMXYzTDIwIDEybC0zLjk5LTR2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFydGljbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djE0SDVWNWgxNG0wLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxN0g3di0yaDd2MnptMy00SDd2LTJoMTB2MnptMC00SDdWN2gxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXNwZWN0UmF0aW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEyaC0ydjNoLTN2Mmg1di01ek03IDloM1Y3SDV2NWgyVjl6bTE0LTZIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFzc2Vzc21lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpNNyAxMGgydjdIN3ptNC0zaDJ2MTBoLTJ6bTQgNmgydjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBc3NpZ25tZW50SW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03LS4yNWMuMjIgMCAuNDEuMS41NS4yNS4xMi4xMy4yLjMxLjIuNSAwIC40MS0uMzQuNzUtLjc1Ljc1cy0uNzUtLjM0LS43NS0uNzVjMC0uMTkuMDgtLjM3LjItLjUuMTQtLjE1LjMzLS4yNS41NS0uMjV6TTE5IDE5SDVWNWgxNHYxNHpNMTIgNmMtMS42NSAwLTMgMS4zNS0zIDNzMS4zNSAzIDMgMyAzLTEuMzUgMy0zLTEuMzUtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tNiA2LjQ3VjE4aDEydi0xLjUzYzAtMi41LTMuOTctMy41OC02LTMuNThzLTYgMS4wNy02IDMuNTh6TTguMzEgMTZjLjY5LS41NiAyLjM4LTEuMTIgMy42OS0xLjEyczMuMDEuNTYgMy42OSAxLjEySDguMzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBc3NpZ25tZW50TGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTVoMnYyaC0yem0wLThoMnY2aC0yem04LTRoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLS4xNCAwLS4yNy4wMS0uNC4wNGEyLjAwOCAyLjAwOCAwIDAgMC0xLjQ0IDEuMTljLS4xLjIzLS4xNi40OS0uMTYuNzd2MTRjMCAuMjcuMDYuNTQuMTYuNzhzLjI1LjQ1LjQzLjY0Yy4yNy4yNy42Mi40NyAxLjAxLjU1LjEzLjAyLjI2LjAzLjQuMDNoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTctLjI1Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NS0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NXpNMTkgMTlINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXNzaWdubWVudFJldHVybiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTRoNHYtNGgtNFY3bC01IDUgNSA1em03LTExaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0uMTQgMC0uMjcuMDEtLjQuMDRhMi4wMDggMi4wMDggMCAwIDAtMS40NCAxLjE5Yy0uMS4yMy0uMTYuNDktLjE2Ljc3djE0YzAgLjI3LjA2LjU0LjE2Ljc4cy4yNS40NS40My42NGMuMjcuMjcuNjIuNDcgMS4wMS41NS4xMy4wMi4yNi4wMy40LjAzaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03LS4yNWMuNDEgMCAuNzUuMzQuNzUuNzVzLS4zNC43NS0uNzUuNzUtLjc1LS4zNC0uNzUtLjc1LjM0LS43NS43NS0uNzV6TTE5IDE5SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFzc2lnbm1lbnRSZXR1cm5lZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTJoLTNWOGgtNHY0SDdsNSA1em0yLTloLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLS4xNCAwLS4yNy4wMS0uNC4wNGEyLjAwOCAyLjAwOCAwIDAgMC0xLjQ0IDEuMTljLS4xLjIzLS4xNi40OS0uMTYuNzd2MTRjMCAuMjcuMDYuNTQuMTYuNzhzLjI1LjQ1LjQzLjY0Yy4yNy4yNy42Mi40NyAxLjAxLjU1LjEzLjAyLjI2LjAzLjQuMDNoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTctLjI1Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NS0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NXpNMTkgMTlINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXNzaWdubWVudFR1cm5lZEluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCA5LTEuNDEtMS40MkwxMCAxNC4xN2wtMi41OS0yLjU4TDYgMTNsNCA0em0xLTZoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLS4xNCAwLS4yNy4wMS0uNC4wNGEyLjAwOCAyLjAwOCAwIDAgMC0xLjQ0IDEuMTljLS4xLjIzLS4xNi40OS0uMTYuNzd2MTRjMCAuMjcuMDYuNTQuMTYuNzhzLjI1LjQ1LjQzLjY0Yy4yNy4yNy42Mi40NyAxLjAxLjU1LjEzLjAyLjI2LjAzLjQuMDNoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTctLjI1Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NS0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NXpNMTkgMTlINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXNzaWdubWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNWg3djJIN3ptMC00aDEwdjJIN3ptMC00aDEwdjJIN3ptMTItNGgtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtLjE0IDAtLjI3LjAxLS40LjA0YTIuMDA4IDIuMDA4IDAgMCAwLTEuNDQgMS4xOWMtLjEuMjMtLjE2LjQ5LS4xNi43N3YxNGMwIC4yNy4wNi41NC4xNi43OHMuMjUuNDUuNDMuNjRjLjI3LjI3LjYyLjQ3IDEuMDEuNTUuMTMuMDIuMjYuMDMuNC4wM2gxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNy0uMjVjLjQxIDAgLjc1LjM0Ljc1Ljc1cy0uMzQuNzUtLjc1Ljc1LS43NS0uMzQtLjc1LS43NS4zNC0uNzUuNzUtLjc1ek0xOSAxOUg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBc3N1cmVkV29ya2xvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEwaDJ2N0g1ek0xMSAxMGgydjdoLTJ6TTIyIDYgMTIgMSAyIDZ2MmgyMFY2ek02LjQ3IDYgMTIgMy4yNCAxNy41MyA2SDYuNDd6TTIgMTl2MmgxMi40Yy0uMjEtLjY0LS4zMi0xLjMxLS4zNi0ySDJ6TTE5IDEyLjI2VjEwaC0ydjMuMjZ6TTIwIDE0bC00IDJ2Mi41NWMwIDIuNTIgMS43MSA0Ljg4IDQgNS40NSAyLjI5LS41NyA0LTIuOTMgNC01LjQ1VjE2bC00LTJ6bS0uNzIgNy0yLjAzLTIuMDMgMS4wNi0xLjA2Ljk3Ljk3IDIuNDEtMi4zOCAxLjA2IDEuMDZMMTkuMjggMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvcmVuZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZ2M2w0LTQtNC00djNjLTQuNDIgMC04IDMuNTgtOCA4IDAgMS41Ny40NiAzLjAzIDEuMjQgNC4yNkw2LjcgMTQuOEE1Ljg3IDUuODcgMCAwIDEgNiAxMmMwLTMuMzEgMi42OS02IDYtNnptNi43NiAxLjc0TDE3LjMgOS4yYy40NC44NC43IDEuNzkuNyAyLjggMCAzLjMxLTIuNjkgNi02IDZ2LTNsLTQgNCA0IDR2LTNjNC40MiAwIDgtMy41OCA4LTggMC0xLjU3LS40Ni0zLjAzLTEuMjQtNC4yNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhY2t1cFRhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNnYxNEg2djJoMTRjMS4xIDAgMi0uOSAyLTJWNmgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTkgMTZINHYtNWg1djV6bTcgMGgtNXYtNWg1djV6bTAtN0g0VjRoMTJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhY2t1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMzUgMTAuMDRBNy40OSA3LjQ5IDAgMCAwIDEyIDRDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNEE1Ljk5NCA1Ljk5NCAwIDAgMCAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xOSAxOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNCAwLTIuMDUgMS41My0zLjc2IDMuNTYtMy45N2wxLjA3LS4xMS41LS45NUE1LjQ2OSA1LjQ2OSAwIDAgMSAxMiA2YzIuNjIgMCA0Ljg4IDEuODYgNS4zOSA0LjQzbC4zIDEuNSAxLjUzLjExQTIuOTggMi45OCAwIDAgMSAyMiAxNWMwIDEuNjUtMS4zNSAzLTMgM3pNOCAxM2gyLjU1djNoMi45di0zSDE2bC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYWxhbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNy44M2MuODUtLjMgMS41My0uOTggMS44My0xLjgzSDE4bC0zIDdjMCAxLjY2IDEuNTcgMyAzLjUgM3MzLjUtMS4zNCAzLjUtM2wtMy03aDJWNGgtNi4xN2MtLjQxLTEuMTctMS41Mi0yLTIuODMtMnMtMi40Mi44My0yLjgzIDJIM3YyaDJsLTMgN2MwIDEuNjYgMS41NyAzIDMuNSAzUzkgMTQuNjYgOSAxM0w2IDZoMy4xN2MuMy44NS45OCAxLjUzIDEuODMgMS44M1YxOUgydjJoMjB2LTJoLTlWNy44M3pNMjAuMzcgMTNoLTMuNzRsMS44Ny00LjM2TDIwLjM3IDEzem0tMTMgMEgzLjYzTDUuNSA4LjY0IDcuMzcgMTN6TTEyIDZjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdGNoUHJlZGljdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDhIN2MtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYxMGMwLTEuMS0uOS0yLTItMnptLTQgMTIuNWgtMlYxOWgydjEuNXptMC0yLjVoLTJjMC0xLjUtMi41LTMtMi41LTUgMC0xLjkzIDEuNTctMy41IDMuNS0zLjVzMy41IDEuNTcgMy41IDMuNWMwIDItMi41IDMuNS0yLjUgNXptNS0xMS41SDZDNiA1LjY3IDYuNjcgNSA3LjUgNWg5Yy44MyAwIDEuNS42NyAxLjUgMS41em0tMS0zSDdDNyAyLjY3IDcuNjcgMiA4LjUgMmg3Yy44MyAwIDEuNS42NyAxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9va09ubGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDRIN1YzaDEwdjF6bTAgMTdIN3YtMWgxMHYxem0wLTIwSDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNNyA2aDEwdjEySDdWNnptOSA1VjkuMTRDMTYgOC41MSAxNS41NSA4IDE1IDhIOWMtLjU1IDAtMSAuNTEtMSAxLjE0djEuOTZjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDF2MS43NmMwIC42My40NSAxLjE0IDEgMS4xNGg2Yy41NSAwIDEtLjUxIDEtMS4xNFYxM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMXptLTMuNSAzLjVoLTF2LTFoMXYxem0wLTJoLTF2LTFoMXYxem0wLTJoLTF2LTFoMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTkgNGgydjVsLTEtLjc1TDkgOVY0em05IDE2SDZWNGgxdjlsMy0yLjI1TDEzIDEzVjRoNXYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvb2ttYXJrQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTF2Ni45N2wtNS0yLjE0LTUgMi4xNFY1aDZWM0g3Yy0xLjEgMC0yIC45LTIgMnYxNmw3LTMgNyAzVjExaC0yem00LTRoLTJ2MmgtMlY3aC0yVjVoMlYzaDJ2MmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb29rbWFya0FkZGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTF2Ni45N2wtNS0yLjE0LTUgMi4xNFY1aDZWM0g3Yy0xLjEgMC0yIC45LTIgMnYxNmw3LTMgNyAzVjExaC0yem0uODMtMkwxNSA2LjE3bDEuNDEtMS40MSAxLjQxIDEuNDEgMy41NC0zLjU0IDEuNDEgMS40MUwxNy44MyA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9va21hcmtCb3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDNIN2MtMS4xIDAtMiAuOS0yIDJ2MTZsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yem0wIDE1LTUtMi4xOEw3IDE4VjVoMTB2MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb29rbWFya1JlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDExdjYuOTdsLTUtMi4xNC01IDIuMTRWNWg2VjNIN2MtMS4xIDAtMiAuOS0yIDJ2MTZsNy0zIDcgM1YxMWgtMnptNC00aC02VjVoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9va21hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDNIN2MtMS4xIDAtMiAuOS0yIDJ2MTZsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9va21hcmtzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA3djEyLjk3bC00LjIxLTEuODEtLjc5LS4zNC0uNzkuMzRMNSAxOS45N1Y3aDEwbTQtNkg4Ljk5QzcuODkgMSA3IDEuOSA3IDNoMTBjMS4xIDAgMiAuOSAyIDJ2MTNsMiAxVjNjMC0xLjEtLjktMi0yLTJ6bS00IDRINWMtMS4xIDAtMiAuOS0yIDJ2MTZsNy0zIDcgM1Y3YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJvd3NlR2FsbGVyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgM2E5IDkgMCAxIDAgLjAwMSAxOC4wMDFBOSA5IDAgMCAwIDkgM3ptMCAxNmMtMy44NiAwLTctMy4xNC03LTdzMy4xNC03IDctNyA3IDMuMTQgNyA3LTMuMTQgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDdIOHY1LjQxbDMuNzkgMy44IDEuNDItMS40Mi0zLjIxLTMuMnpNMTcuOTkgMy41MnYyLjE2QTYuOTkgNi45OSAwIDAgMSAyMiAxMmMwIDIuNzktMS42NCA1LjItNC4wMSA2LjMydjIuMTZDMjEuNDggMTkuMjQgMjQgMTUuOTEgMjQgMTJzLTIuNTItNy4yNC02LjAxLTguNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCdWdSZXBvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDhoLTIuODFhNS45ODUgNS45ODUgMCAwIDAtMS44Mi0xLjk2TDE3IDQuNDEgMTUuNTkgM2wtMi4xNyAyLjE3QzEyLjk2IDUuMDYgMTIuNDkgNSAxMiA1cy0uOTYuMDYtMS40MS4xN0w4LjQxIDMgNyA0LjQxbDEuNjIgMS42M0M3Ljg4IDYuNTUgNy4yNiA3LjIyIDYuODEgOEg0djJoMi4wOWMtLjA1LjMzLS4wOS42Ni0uMDkgMXYxSDR2MmgydjFjMCAuMzQuMDQuNjcuMDkgMUg0djJoMi44MWMxLjA0IDEuNzkgMi45NyAzIDUuMTkgM3M0LjE1LTEuMjEgNS4xOS0zSDIwdi0yaC0yLjA5Yy4wNS0uMzMuMDktLjY2LjA5LTF2LTFoMnYtMmgtMnYtMWMwLS4zNC0uMDQtLjY3LS4wOS0xSDIwVjh6bS00IDR2M2MwIC4yMi0uMDMuNDctLjA3LjdsLS4xLjY1LS4zNy42NWMtLjcyIDEuMjQtMi4wNCAyLTMuNDYgMnMtMi43NC0uNzctMy40Ni0ybC0uMzctLjY0LS4xLS42NUE0LjI3IDQuMjcgMCAwIDEgOCAxNXYtNGMwLS4yMy4wMy0uNDguMDctLjdsLjEtLjY1LjM3LS42NWMuMy0uNTIuNzItLjk3IDEuMjEtMS4zMWwuNTctLjM5Ljc0LS4xOGEzLjc4NyAzLjc4NyAwIDAgMSAxLjg5IDBsLjY4LjE2LjYxLjQyYy41LjM0LjkxLjc4IDEuMjEgMS4zMWwuMzguNjUuMS42NWMuMDQuMjIuMDcuNDcuMDcuNjl2MXptLTYgMmg0djJoLTR6bTAtNGg0djJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCdWlsZENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjQ5IDExLjM4Yy40My0xLjIyLjE3LTIuNjQtLjgxLTMuNjJhMy40NjggMy40NjggMCAwIDAtNC4xLS41OWwyLjM1IDIuMzUtMS40MSAxLjQxLTIuMzUtMi4zNWMtLjcxIDEuMzItLjUyIDIuOTkuNTkgNC4xLjk4Ljk4IDIuNCAxLjI0IDMuNjIuODFsMy40MSAzLjQxYy4yLjIuNTEuMi43MSAwbDEuNC0xLjRjLjItLjIuMi0uNTEgMC0uNzFsLTMuNDEtMy40MXpcIn0sXCJjaGlsZFwiOltdfV19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnVpbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjYxIDE4Ljk5LTkuMDgtOS4wOGMuOTMtMi4zNC40NS01LjEtMS40NC03QzkuNzkuNjEgNi4yMS40IDMuNjYgMi4yNkw3LjUgNi4xMSA2LjA4IDcuNTIgMi4yNSAzLjY5Qy4zOSA2LjIzLjYgOS44MiAyLjkgMTIuMTFjMS44NiAxLjg2IDQuNTcgMi4zNSA2Ljg5IDEuNDhsOS4xMSA5LjExYy4zOS4zOSAxLjAyLjM5IDEuNDEgMGwyLjMtMi4zYy40LS4zOC40LTEuMDEgMC0xLjQxem0tMyAxLjYtOS40Ni05LjQ2Yy0uNjEuNDUtMS4yOS43Mi0yIC44Mi0xLjM2LjItMi43OS0uMjEtMy44My0xLjI1QzMuMzcgOS43NiAyLjkzIDguNSAzIDcuMjZsMy4wOSAzLjA5IDQuMjQtNC4yNC0zLjA5LTMuMDljMS4yNC0uMDcgMi40OS4zNyAzLjQ0IDEuMzFhNC40NjkgNC40NjkgMCAwIDEgMS4yNCAzLjk2IDQuMzUgNC4zNSAwIDAgMS0uODggMS45Nmw5LjQ1IDkuNDUtLjg4Ljg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FjaGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSA4LTQgNGgzYzAgMy4zMS0yLjY5IDYtNiA2YTUuODcgNS44NyAwIDAgMS0yLjgtLjdsLTEuNDYgMS40NkE3LjkzIDcuOTMgMCAwIDAgMTIgMjBjNC40MiAwIDgtMy41OCA4LThoM2wtNC00ek02IDEyYzAtMy4zMSAyLjY5LTYgNi02IDEuMDEgMCAxLjk3LjI1IDIuOC43bDEuNDYtMS40NkE3LjkzIDcuOTMgMCAwIDAgMTIgNGMtNC40MiAwLTggMy41OC04IDhIMWw0IDQgNC00SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWxlbmRhck1vbnRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNGgtMVYyaC0ydjJIOFYySDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDIwYTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjEwaDE0djEwem0wLTEySDVWNmgxNHYyek05IDE0SDd2LTJoMnYyem00IDBoLTJ2LTJoMnYyem00IDBoLTJ2LTJoMnYyem0tOCA0SDd2LTJoMnYyem00IDBoLTJ2LTJoMnYyem00IDBoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FsZW5kYXJUb2RheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM2gtMVYxaC0ydjJIN1YxSDV2Mkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMThINFYxMGgxNnYxMXptMC0xM0g0VjVoMTZ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGVuZGFyVmlld0RheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxN2gxOHYySDN6bTE2LTV2MUg1di0xaDE0bTItMkgzdjVoMTh2LTV6TTMgNmgxOHYySDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWxlbmRhclZpZXdNb250aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTggMTFINFY2aDR2NXptNiAwaC00VjZoNHY1em02IDBoLTRWNmg0djV6TTggMThINHYtNWg0djV6bTYgMGgtNHYtNWg0djV6bTYgMGgtNHYtNWg0djV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWxlbmRhclZpZXdXZWVrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTcgMmgyLjV2MTJIMTNWNnptLTIgMTJIOC41VjZIMTF2MTJ6TTQgNmgyLjV2MTJINFY2em0xNiAxMmgtMi41VjZIMjB2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW1lcmFFbmhhbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxMC0uOTQgMi4wNkw5IDEzbDIuMDYuOTRMMTIgMTZsLjk0LTIuMDZMMTUgMTNsLTIuMDYtLjk0em04LTVoLTMuMTdMMTUgM0g5TDcuMTcgNUg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY3aDQuMDVsLjU5LS42NUw5Ljg4IDVoNC4yNGwxLjI0IDEuMzUuNTkuNjVIMjB2MTJ6TTEyIDhjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0wIDhjLTEuNjUgMC0zLTEuMzUtMy0zczEuMzUtMyAzLTMgMyAxLjM1IDMgMy0xLjM1IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FuY2VsU2NoZWR1bGVTZW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSA5Yy0uNDIgMC0uODMuMDQtMS4yNC4xMUwxLjAxIDMgMSAxMGwxMC4wNiAxLjM0Yy0uNDIuNDQtLjc4LjkzLTEuMDkgMS40NkwxIDE0bC4wMSA3IDguMDctMy40NkM5LjU5IDIxLjE5IDEyLjcxIDI0IDE2LjUgMjRjNC4xNCAwIDcuNS0zLjM2IDcuNS03LjVTMjAuNjQgOSAxNi41IDl6TTMgOC4yNWwuMDEtMi4yMiA3LjUxIDMuMjItNy41Mi0xem02LjEgNy4xMUwzIDE3Ljk3di0yLjIybDYuMTctLjgyYy0uMDMuMTQtLjA1LjI4LS4wNy40M3pNMTYuNSAyMmMtMy4wMyAwLTUuNS0yLjQ3LTUuNS01LjVzMi40Ny01LjUgNS41LTUuNSA1LjUgMi40NyA1LjUgNS41LTIuNDcgNS41LTUuNSA1LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4LjI3IDE0LjAzLTEuNzcgMS43Ni0xLjc3LTEuNzYtLjcuNyAxLjc2IDEuNzctMS43NiAxLjc3LjcuNyAxLjc3LTEuNzYgMS43NyAxLjc2LjctLjctMS43Ni0xLjc3IDEuNzYtMS43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhcmRHaWZ0Y2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtMi4xOGMuMTEtLjMxLjE4LS42NS4xOC0xYTIuOTk2IDIuOTk2IDAgMCAwLTUuNS0xLjY1bC0uNS42Ny0uNS0uNjhDMTAuOTYgMi41NCAxMC4wNSAyIDkgMiA3LjM0IDIgNiAzLjM0IDYgNWMwIC4zNS4wNy42OS4xOCAxSDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE5YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjhjMC0xLjExLS44OS0yLTItMnptLTUtMmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xek05IDRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMTEgMTVINHYtMmgxNnYyem0wLTVINFY4aDUuMDhMNyAxMC44MyA4LjYyIDEyIDEyIDcuNGwzLjM4IDQuNkwxNyAxMC44MyAxNC45MiA4SDIwdjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYXJkTWVtYmVyc2hpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjExIDAtMiAuODktMiAydjExYzAgMS4xMS44OSAyIDIgMmg0djVsNC0yIDQgMnYtNWg0YzEuMTEgMCAyLS44OSAyLTJWNGMwLTEuMTEtLjg5LTItMi0yem0wIDEzSDR2LTJoMTZ2MnptMC01SDRWNGgxNnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FyZFRyYXZlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtM1Y0YzAtMS4xMS0uODktMi0yLTJIOWMtMS4xMSAwLTIgLjg5LTIgMnYySDRjLTEuMTEgMC0yIC44OS0yIDJ2MTFjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yek05IDRoNnYySDlWNHptMTEgMTVINHYtMmgxNnYyem0wLTVINFY4aDN2MmgyVjhoNnYyaDJWOGgzdjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGFuZ2VIaXN0b3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3Ljc3IDE4LjM5IDE4SDUuNjFMMTIgNy43N00xMiA0IDIgMjBoMjBMMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoZWNrQ2lyY2xlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTQuNTktMTIuNDJMMTAgMTQuMTdsLTIuNTktMi41OEw2IDEzbDQgNCA4LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGVja0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTQuNTktMTIuNDJMMTAgMTQuMTdsLTIuNTktMi41OEw2IDEzbDQgNCA4LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaHJvbWVSZWFkZXJNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEzYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNMyAxOVY2aDh2MTNIM3ptMTggMGgtOFY2aDh2MTN6bS03LTkuNWg2VjExaC02em0wIDIuNWg2djEuNWgtNnptMCAyLjVoNlYxNmgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNpcmNsZU5vdGlmaWNhdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE4LjVjLjgzIDAgMS41LS42NyAxLjUtMS41aC0zYzAgLjgzLjY3IDEuNSAxLjUgMS41ek0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptNC04LjYxYzAtMi4xMS0xLjAzLTMuOTItMy00LjM5di0uNWMwLS41Ny0uNDMtMS0xLTFzLTEgLjQzLTEgMVY3Yy0xLjk3LjQ3LTMgMi4yNy0zIDQuMzlWMTRIN3YyaDEwdi0yaC0xdi0yLjYxek0xNCAxNGgtNHYtM2MwLTEuMS45LTIgMi0yczIgLjkgMiAydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTkgNGgydjVsLTEtLjc1TDkgOVY0em05IDE2SDZWNGgxdjlsMy0yLjI1TDEzIDEzVjRoNXYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3NlRnVsbHNjcmVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDMuNDEgMTYuNzEgOC43IDIwIDEyaC04VjRsMy4yOSAzLjI5TDIwLjU5IDIgMjIgMy40MXpNMy40MSAyMmw1LjI5LTUuMjlMMTIgMjB2LThINGwzLjI5IDMuMjlMMiAyMC41OSAzLjQxIDIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29kZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjE3IDEyLTQuNTgtNC41OUwxNiA2bDYgNi0zLjU5IDMuNTlMMTcgMTQuMTcgMTkuMTcgMTJ6TTEuMzkgNC4yMmw0LjE5IDQuMTlMMiAxMmw2IDYgMS40MS0xLjQxTDQuODMgMTIgNyA5LjgzbDEyLjc4IDEyLjc4IDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40IDE2LjYgNC44IDEybDQuNi00LjZMOCA2bC02IDYgNiA2IDEuNC0xLjR6bTUuMiAwIDQuNi00LjYtNC42LTQuNkwxNiA2bDYgNi02IDYtMS40LTEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbW1lbnRCYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTRWNmgtNXY4bDIuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRINmwtMiAyVjRoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb21taXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi45IDExYTUgNSAwIDAgMC05LjggMEgydjJoNS4xYTUgNSAwIDAgMCA5LjggMEgyMnYtMmgtNS4xek0xMiAxNWMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb21tdXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0SDVDMy4zNCA0IDIgNS4zNCAyIDd2OGMwIDEuNjYgMS4zNCAzIDMgM2wtMSAxdjFoMWwyLTJoMnYtNUg0VjZoOXYyaDJWN2MwLTEuNjYtMS4zNC0zLTMtM3pNNSAxNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xNS41Ny00LjM0Yy0uMTQtLjQtLjUyLS42Ni0uOTctLjY2aC03LjE5Yy0uNDYgMC0uODMuMjYtLjk4LjY2bC0xLjQyIDQuMTF2NS41MWMwIC4zOC4zMS43Mi42OS43MmguNjJjLjM4IDAgLjY4LS4zOC42OC0uNzZWMThoOHYxLjI0YzAgLjM4LjMxLjc2LjY5Ljc2aC42MWMuMzggMCAuNjktLjM0LjY5LS43MmwuMDEtMS4zN3YtNC4xNGwtMS40My00LjExem0tOC4xNi4zNGg3LjE5bDEuMDMgM2gtOS4yNWwxLjAzLTN6TTEyIDE2Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTggMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29tcGFyZUFycm93cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4wMSAxNEgydjJoNy4wMXYzTDEzIDE1bC0zLjk5LTR2M3ptNS45OC0xdi0zSDIyVjhoLTcuMDFWNUwxMSA5bDMuOTkgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbXByZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDl2MmgxNlY5SDR6bTEyLTUtMS40MS0xLjQxTDEzIDQuMTdWMWgtMnYzLjE5TDkuMzkgMi42MSA4IDRsNCA0IDQtNHpNNCAxNGgxNnYtMkg0djJ6bTQgNSAxLjM5IDEuMzlMMTEgMTguODFWMjJoMnYtMy4xN2wxLjU5IDEuNTlMMTYgMTlsLTQtNC00IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb250YWN0UGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjE3IDQgMTggOC44M1YyMEg2VjRoNy4xN00xNCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0tMiAxMmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTQgMy40M2MwLS44MS0uNDgtMS41My0xLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgOCAxNy40M1YxOGg4di0uNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb250YWN0U3VwcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMjMuNTl2LTMuNmMtNS4wMS0uMjYtOS00LjQyLTktOS40OUMyIDUuMjYgNi4yNiAxIDExLjUgMVMyMSA1LjI2IDIxIDEwLjVjMCA0Ljk1LTMuNDQgOS45My04LjU3IDEyLjRsLTEuNDMuNjl6TTExLjUgM0M3LjM2IDMgNCA2LjM2IDQgMTAuNVM3LjM2IDE4IDExLjUgMThIMTN2Mi4zYzMuNjQtMi4zIDYtNi4wOCA2LTkuOEMxOSA2LjM2IDE1LjY0IDMgMTEuNSAzem0tMSAxMS41aDJ2MmgtMnptMi0xLjVoLTJjMC0zLjI1IDMtMyAzLTUgMC0xLjEtLjktMi0yLTJzLTIgLjktMiAyaC0yYzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAyLjUtMyAyLjc1LTMgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRhY3RsZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMSAxMC4xOGE0LjM4NCA0LjM4NCAwIDAgMSAwIDMuNjZsMS4zNy42MmMuMzctLjgxLjU1LTEuNjUuNTQtMi41LS4wMS0uODQtLjE5LTEuNjUtLjU0LTIuNGwtMS4zNy42MnpNMTMuMzMgNy4zM2MuNzggMS41NyAxLjE4IDMuMTQgMS4xOCA0LjY0IDAgMS41MS0uNCAzLjA5LTEuMTggNC42OWwxLjM1LjY2Yy44OC0xLjgxIDEuMzMtMy42MSAxLjMzLTUuMzUgMC0xLjc0LS40NS0zLjUzLTEuMzMtNS4zMWwtMS4zNS42N3pNMTAuMiA4LjcyYy41MyAxLjA3LjggMi4yMS44IDMuNCAwIDEuMTctLjI2IDIuMjMtLjc4IDMuMTVsMS4zLjc0Yy42NS0xLjE1Ljk4LTIuNDUuOTgtMy44OSAwLTEuNDItLjMyLTIuNzktLjk2LTQuMDdsLTEuMzQuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb3B5cmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjA4IDEwLjg2Yy4wNS0uMzMuMTYtLjYyLjMtLjg3cy4zNC0uNDYuNTktLjYyYy4yNC0uMTUuNTQtLjIyLjkxLS4yMy4yMy4wMS40NC4wNS42My4xMy4yLjA5LjM4LjIxLjUyLjM2cy4yNS4zMy4zNC41My4xMy40Mi4xNC42NGgxLjc5Yy0uMDItLjQ3LS4xMS0uOS0uMjgtMS4yOXMtLjQtLjczLS43LTEuMDEtLjY2LS41LTEuMDgtLjY2LS44OC0uMjMtMS4zOS0uMjNjLS42NSAwLTEuMjIuMTEtMS43LjM0cy0uODguNTMtMS4yLjkyLS41Ni44NC0uNzEgMS4zNlM4IDExLjI5IDggMTEuODd2LjI3YzAgLjU4LjA4IDEuMTIuMjMgMS42NHMuMzkuOTcuNzEgMS4zNS43Mi42OSAxLjIuOTFjLjQ4LjIyIDEuMDUuMzQgMS43LjM0LjQ3IDAgLjkxLS4wOCAxLjMyLS4yM3MuNzctLjM2IDEuMDgtLjYzLjU2LS41OC43NC0uOTQuMjktLjc0LjMtMS4xNWgtMS43OWMtLjAxLjIxLS4wNi40LS4xNS41OHMtLjIxLjMzLS4zNi40Ni0uMzIuMjMtLjUyLjNjLS4xOS4wNy0uMzkuMDktLjYuMS0uMzYtLjAxLS42Ni0uMDgtLjg5LS4yMy0uMjUtLjE2LS40NS0uMzctLjU5LS42MnMtLjI1LS41NS0uMy0uODgtLjA4LS42Ny0uMDgtMXYtLjI3YzAtLjM1LjAzLS42OC4wOC0xLjAxek0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyZWRpdENhcmRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjgzIDRIMjBjMS4xMSAwIDIgLjg5IDIgMnYxMmMwIC4zNC0uMDguNjYtLjIzLjk0TDIwIDE3LjE3VjEyaC01LjE3bC00LTRIMjBWNkg4LjgzbC0yLTJ6bTEzLjY2IDE5LjMxTDE3LjE3IDIwSDRjLTEuMTEgMC0yLS44OS0yLTJsLjAxLTEyYzAtLjM0LjA4LS42Ni4yMy0uOTNMLjY5IDMuNTEgMi4xIDIuMWwxOS44IDE5LjgtMS40MSAxLjQxek00IDYuODNWOGgxLjE3TDQgNi44M3pNMTUuMTcgMThsLTYtNkg0djZoMTEuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcmVkaXRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0di02aDE2djZ6bTAtMTBINFY2aDE2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMTR2LTFIMTF2LjVoMnYtMWgtMi41Yy0uNTUgMC0xLS40NS0xLTFWMTBjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MUgxM3YtLjVoLTJ2MWgyLjVjLjU1IDAgMSAuNDUgMSAxVjE0YzAgLjU1LS40NSAxLTEgMWgtM2MtLjU1IDAtMS0uNDUtMS0xem03LjUgMWgzYy41NSAwIDEtLjQ1IDEtMXYtMS41YzAtLjU1LS40NS0xLTEtMWgtMi41di0xaDJ2LjVIMjF2LTFjMC0uNTUtLjQ1LTEtMS0xaC0zYy0uNTUgMC0xIC40NS0xIDF2MS41YzAgLjU1LjQ1IDEgMSAxaDIuNXYxaC0yVjEzSDE2djFjMCAuNTUuNDUgMSAxIDF6bS05LTVjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxaDNjLjU1IDAgMS0uNDUgMS0xdi0xSDYuNXYuNWgtMnYtM2gydi41SDh2LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDdXJyZW5jeUV4Y2hhbmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuODkgMTEuMWMtMS43OC0uNTktMi42NC0uOTYtMi42NC0xLjkgMC0xLjAyIDEuMTEtMS4zOSAxLjgxLTEuMzkgMS4zMSAwIDEuNzkuOTkgMS45IDEuMzRsMS41OC0uNjdjLS4xNS0uNDUtLjgyLTEuOTItMi41NC0yLjI0VjVoLTJ2MS4yNmMtMi40OC41Ni0yLjQ5IDIuODYtMi40OSAyLjk2IDAgMi4yNyAyLjI1IDIuOTEgMy4zNSAzLjMxIDEuNTguNTYgMi4yOCAxLjA3IDIuMjggMi4wMyAwIDEuMTMtMS4wNSAxLjYxLTEuOTggMS42MS0xLjgyIDAtMi4zNC0xLjg3LTIuNC0yLjA5bC0xLjY2LjY3Yy42MyAyLjE5IDIuMjggMi43OCAyLjkgMi45NlYxOWgydi0xLjI0Yy40LS4wOSAyLjktLjU5IDIuOS0zLjIyIDAtMS4zOS0uNjEtMi42MS0zLjAxLTMuNDR6TTMgMjFIMXYtNmg2djJINC41MmMxLjYxIDIuNDEgNC4zNiA0IDcuNDggNGE5IDkgMCAwIDAgOS05aDJjMCA2LjA4LTQuOTIgMTEtMTEgMTEtMy43MiAwLTcuMDEtMS44NS05LTQuNjdWMjF6bS0yLTlDMSA1LjkyIDUuOTIgMSAxMiAxYzMuNzIgMCA3LjAxIDEuODUgOSA0LjY3VjNoMnY2aC02VjdoMi40OEMxNy44NyA0LjU5IDE1LjEyIDMgMTIgM2E5IDkgMCAwIDAtOSA5SDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYW5nZXJvdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjczIDNIOC4yN0wzIDguMjd2Ny40Nkw4LjI3IDIxaDcuNDZMMjEgMTUuNzNWOC4yN0wxNS43MyAzek0xOSAxNC45IDE0LjkgMTlIOS4xTDUgMTQuOVY5LjFMOS4xIDVoNS44TDE5IDkuMXY1Ljh6bS00LjE3LTcuMTRMMTIgMTAuNTkgOS4xNyA3Ljc2IDcuNzYgOS4xNyAxMC41OSAxMmwtMi44MyAyLjgzIDEuNDEgMS40MUwxMiAxMy40MWwyLjgzIDIuODMgMS40MS0xLjQxTDEzLjQxIDEybDIuODMtMi44My0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXNoYm9hcmRDdXN0b21pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTFoOFYzSDN2OHptMi02aDR2NEg1VjV6TTEzIDN2OGg4VjNoLTh6bTYgNmgtNFY1aDR2NHpNMyAyMWg4di04SDN2OHptMi02aDR2NEg1di00ek0xOCAxM2gtMnYzaC0zdjJoM3YzaDJ2LTNoM3YtMmgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURhc2hib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNXYyaC00VjVoNE05IDV2Nkg1VjVoNG0xMCA4djZoLTR2LTZoNE05IDE3djJINXYtMmg0TTIxIDNoLTh2Nmg4VjN6TTExIDNIM3YxMGg4VjN6bTEwIDhoLTh2MTBoOFYxMXptLTEwIDRIM3Y2aDh2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXRhRXhwbG9yYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwaDhjMS4xIDAgMi0uOSAyLTJ2LThjMC01LjUyLTQuNDgtMTAtMTAtMTB6bTAgMThjLTIuODkgMC01LjQzLTEuNTQtNi44My0zLjg0bDIuOTUtMi45NUwxMS40MSAxNiAxNiAxMS40MlYxM2gyVjhoLTV2MmgxLjU4bC0zLjI4IDMuMjhMOCAxMC41bC0zLjY5IDMuN0M0LjExIDEzLjUgNCAxMi43NiA0IDEyYzAtNC40MSAzLjU5LTggOC04czggMy41OSA4IDgtMy41OSA4LTggOHptNy41LjVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURhdGFUaHJlc2hvbGRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNmgtMS43M0wxOSAxNy4yN1YxOXptMC0zaC0uODVsLTMgM2gtMS42MmwzLTNoLTIuMTJsLTMgM0g5LjhsMy0zaC0yLjEybC0zIDNINS44NGwzLTNINi43Mkw1IDE3LjcyVjVoMTR2MTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwLjY3IDExIDIgMiA1LjA4LTUuMDktMS40MS0xLjQxLTMuNjcgMy42Ny0yLTItNC40MiA0LjQyTDcuNjYgMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXRlUmFuZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTFoMnYySDd2LTJ6bTE0LTV2MTRjMCAxLjEtLjkgMi0yIDJINWEyIDIgMCAwIDEtMi0ybC4wMS0xNGMwLTEuMS44OC0yIDEuOTktMmgxVjJoMnYyaDhWMmgydjJoMWMxLjEgMCAyIC45IDIgMnpNNSA4aDE0VjZINXYyem0xNCAxMlYxMEg1djEwaDE0em0tNC03aDJ2LTJoLTJ2MnptLTQgMGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZWxldGVGb3JldmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4xMiAxMC40NyAxMiAxMi41OWwtMi4xMy0yLjEyLTEuNDEgMS40MUwxMC41OSAxNGwtMi4xMiAyLjEyIDEuNDEgMS40MUwxMiAxNS40MWwyLjEyIDIuMTIgMS40MS0xLjQxTDEzLjQxIDE0bDIuMTItMi4xMnpNMTUuNSA0bC0xLTFoLTVsLTEgMUg1djJoMTRWNHpNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek04IDloOHYxMEg4Vjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZWxldGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6TTggOWg4djEwSDhWOXptNy41LTUtMS0xaC01bC0xIDFINXYyaDE0VjRoLTMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlbGV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOXYxMEg4VjloOG0tMS41LTZoLTVsLTEgMUg1djJoMTRWNGgtMy41bC0xLTF6TTE4IDdINnYxMmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlbnNpdHlMYXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM2gxOHYySDN6TTMgMTloMTh2MkgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVuc2l0eU1lZGl1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM2gxOHYySDN6TTMgMTloMTh2Mkgzek0zIDExaDE4djJIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlbnNpdHlTbWFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMmgxOHYySDN6TTMgMjBoMTh2Mkgzek0zIDE0aDE4djJIM3pNMyA4aDE4djJIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlc2NyaXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE2aDh2Mkg4em0wLTRoOHYySDh6bTYtMTBINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em00IDE4SDZWNGg3djVoNXYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpc2FibGVkQnlEZWZhdWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTlINVY1aDE0djE0ek0zIDN2MThoMThWM0gzem0xNCAxMi41OUwxNS41OSAxNyAxMiAxMy40MSA4LjQxIDE3IDcgMTUuNTkgMTAuNTkgMTIgNyA4LjQxIDguNDEgNyAxMiAxMC41OSAxNS41OSA3IDE3IDguNDEgMTMuNDEgMTIgMTcgMTUuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXNhYmxlZFZpc2libGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxNWMxLjk1IDAgMy43Ni45OCA0Ljc1IDIuNS0uOTkgMS41Mi0yLjggMi41LTQuNzUgMi41cy0zLjc2LS45OC00Ljc1LTIuNWMuOTktMS41MiAyLjgtMi41IDQuNzUtMi41em0wLTJjLTMuMTggMC01LjkgMS44Ny03IDQuNSAxLjEgMi42MyAzLjgyIDQuNSA3IDQuNXM1LjktMS44NyA3LTQuNWMtMS4xLTIuNjMtMy44Mi00LjUtNy00LjV6bTAgNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzE2LjE3IDE2IDE3IDE2czEuNS42NyAxLjUgMS41UzE3LjgzIDE5IDE3IDE5em00Ljk5LTYuNjZjLjAxLS4xMS4wMS0uMjMuMDEtLjM0IDAtNS41Mi00LjQ4LTEwLTEwLTEwUzIgNi40OCAyIDEyYzAgNS4xNyAzLjkzIDkuNDMgOC45NiA5Ljk1YTkuMzQzIDkuMzQzIDAgMCAxLTIuMzItMi42OEE4LjAxIDguMDEgMCAwIDEgNCAxMmMwLTEuODUuNjMtMy41NSAxLjY5LTQuOWw1LjY2IDUuNjZjLjU2LS40IDEuMTctLjczIDEuODItMUw3LjEgNS42OUE3LjkwMiA3LjkwMiAwIDAgMSAxMiA0YzQuMjQgMCA3LjcgMy4yOSA3Ljk4IDcuNDUuNzEuMjIgMS4zOS41MiAyLjAxLjg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlzcGxheVNldHRpbmdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNHYyaDh2LTJoNGMxLjEgMCAyLS45IDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTRINFY1aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDguMjVoOHYxLjVINnpNMTYuNSA5Ljc1SDE4di0xLjVoLTEuNVY3SDE1djRoMS41ek0xMCAxMi4yNWg4djEuNWgtOHpNNy41IDE1SDl2LTRINy41djEuMjVINnYxLjVoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxNXY0SDV2LTRoMTRtMS0ySDRjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE2Yy41NSAwIDEtLjQ1IDEtMXYtNmMwLS41NS0uNDUtMS0xLTF6TTcgMTguNWMtLjgyIDAtMS41LS42Ny0xLjUtMS41cy42OC0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6TTE5IDV2NEg1VjVoMTRtMS0ySDRjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE2Yy41NSAwIDEtLjQ1IDEtMVY0YzAtLjU1LS40NS0xLTEtMXpNNyA4LjVjLS44MiAwLTEuNS0uNjctMS41LTEuNVM2LjE4IDUuNSA3IDUuNXMxLjUuNjggMS41IDEuNVM3LjgzIDguNSA3IDguNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvbmVBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDctMS40MS0xLjQxLTYuMzQgNi4zNCAxLjQxIDEuNDFMMTggN3ptNC4yNC0xLjQxTDExLjY2IDE2LjE3IDcuNDggMTJsLTEuNDEgMS40MUwxMS42NiAxOWwxMi0xMi0xLjQyLTEuNDF6TS40MSAxMy40MSA2IDE5bDEuNDEtMS40MUwxLjgzIDEyIC40MSAxMy40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvbmVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS43NyA0LjkzIDEuNCAxLjRMOC40MyAxOS4wN2wtNS42LTUuNiAxLjQtMS40IDQuMiA0LjJMMTkuNzcgNC45M20wLTIuODNMOC40MyAxMy40NGwtNC4yLTQuMkwwIDEzLjQ3bDguNDMgOC40M0wyNCA2LjMzIDE5Ljc3IDIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTYuMiA0LjggMTJsLTEuNCAxLjRMOSAxOSAyMSA3bC0xLjQtMS40TDkgMTYuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvbnV0TGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDUuMDhBNyA3IDAgMCAxIDE4LjkyIDExaDMuMDNjLS40Ny00LjcyLTQuMjMtOC40OC04Ljk1LTguOTV2My4wM3pNMTguOTIgMTNBNyA3IDAgMCAxIDEzIDE4LjkydjMuMDNjNC43Mi0uNDcgOC40OC00LjIzIDguOTUtOC45NWgtMy4wM3pNMTEgMTguOTJjLTMuMzktLjQ5LTYtMy40LTYtNi45MnMyLjYxLTYuNDMgNi02LjkyVjIuMDVjLTUuMDUuNS05IDQuNzYtOSA5Ljk1IDAgNS4xOSAzLjk1IDkuNDUgOSA5Ljk1di0zLjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9udXRTbWFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuODIgMTFoNy4xM2MtLjQ3LTQuNzItNC4yMy04LjQ4LTguOTUtOC45NXY3LjEzYy44NS4zMSAxLjUxLjk3IDEuODIgMS44MnpNMTUgNC41OEMxNyA1LjQgMTguNiA3IDE5LjQyIDloLTMuNDNjLS4yOC0uMzctLjYyLS43MS0uOTktLjk5VjQuNTh6TTIgMTJjMCA1LjE5IDMuOTUgOS40NSA5IDkuOTV2LTcuMTNDOS44NCAxNC40IDkgMTMuMyA5IDEyYzAtMS4zLjg0LTIuNCAyLTIuODJWMi4wNWMtNS4wNS41LTkgNC43Ni05IDkuOTV6bTctNy40MnYzLjQ0Yy0xLjIzLjkyLTIgMi4zOS0yIDMuOTggMCAxLjU5Ljc3IDMuMDYgMiAzLjk5djMuNDRDNi4wNCAxOC4yNCA0IDE1LjM1IDQgMTJjMC0zLjM1IDIuMDQtNi4yNCA1LTcuNDJ6bTQgMTAuMjR2Ny4xM2M0LjcyLS40NyA4LjQ4LTQuMjMgOC45NS04Ljk1aC03LjEzYy0uMzEuODUtLjk3IDEuNTEtMS44MiAxLjgyem0yIDEuMTdjLjM3LS4yOC43MS0uNjEuOTktLjk5aDMuNDNDMTguNiAxNyAxNyAxOC42IDE1IDE5LjQydi0zLjQzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJhZ0luZGljYXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMThjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yIDIgLjkgMiAyem0tMi04Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMC02Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNiA0YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMCAyYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMCA2Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUR5bmFtaWNGb3JtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTFINGMtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yaDl2N3pNNCA5aDdWNkg0djN6bTExIDExSDRjLTEuMSAwLTItLjktMi0ydi0zYzAtMS4xLjktMiAyLTJoMTF2N3pNNCAxOGg5di0zSDR2M3ptMTgtOWgtMmwyLTVoLTd2N2gydjlsNS0xMXpNNC43NSAxNy4yNWgxLjV2LTEuNWgtMS41djEuNXptMC05aDEuNXYtMS41aC0xLjV2MS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWNvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4wNSA4LjA1YTcuMDA3IDcuMDA3IDAgMCAwIDAgOS45QzcuNDIgMTkuMzIgOS4yMSAyMCAxMSAyMHMzLjU4LS42OCA0Ljk1LTIuMDVDMTkuNDMgMTQuNDcgMjAgNCAyMCA0UzkuNTMgNC41NyA2LjA1IDguMDV6bTguNDkgOC40OWMtLjk1Ljk0LTIuMiAxLjQ2LTMuNTQgMS40Ni0uODkgMC0xLjczLS4yNS0yLjQ4LS42OC45Mi0yLjg4IDIuNjItNS40MSA0Ljg4LTcuMzItMi42MyAxLjM2LTQuODQgMy40Ni02LjM3IDYtMS40OC0xLjk2LTEuMzUtNC43NS40NC02LjU0QzkuMjEgNy43MiAxNC4wNCA2LjY1IDE3LjggNi4yYy0uNDUgMy43Ni0xLjUyIDguNTktMy4yNiAxMC4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVkaXRDYWxlbmRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTBoMTR2MmgyVjZjMC0xLjEtLjktMi0yLTJoLTFWMmgtMnYySDhWMkg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAyMGEyIDIgMCAwIDAgMiAyaDd2LTJINVYxMHptMC00aDE0djJINVY2em0xNy44NCAxMC4yOC0uNzEuNzEtMi4xMi0yLjEyLjcxLS43MWEuOTk2Ljk5NiAwIDAgMSAxLjQxIDBsLjcxLjcxYy4zOS4zOS4zOSAxLjAyIDAgMS40MXptLTMuNTQtLjcgMi4xMiAyLjEyLTUuMyA1LjNIMTR2LTIuMTJsNS4zLTUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVkaXRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjA2IDkuMDIuOTIuOTItMS4xMSAxLjExIDEuNDEgMS40MSAyLjUyLTIuNTItMy43NS0zLjc1LTIuNTIgMi41MiAxLjQxIDEuNDEgMS4xMi0xLjF6bTYuNjUtMS45OGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTIuMzQtMi4zNGMtLjItLjItLjQ1LS4yOS0uNzEtLjI5cy0uNTEuMS0uNy4yOWwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6TTIuODEgMi44MSAxLjM5IDQuMjJsNy4zMiA3LjMyTDMgMTcuMjVWMjFoMy43NWw1LjcxLTUuNzEgNy4zMiA3LjMyIDEuNDEtMS40MUwyLjgxIDIuODF6TTUuOTIgMTlINXYtLjkybDUuMTMtNS4xMy45Mi45Mkw1LjkyIDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTdoMTR2Mkg1em03LTEyTDUuMzMgMTVoMTMuMzRMMTIgNXptMCAzLjYgMi45MyA0LjRIOS4wN0wxMiA4LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFdXJvU3ltYm9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxOC41QTYuNDggNi40OCAwIDAgMSA5LjI0IDE1SDE1di0ySDguNThjLS4wNS0uMzMtLjA4LS42Ni0uMDgtMXMuMDMtLjY3LjA4LTFIMTVWOUg5LjI0QTYuNDkxIDYuNDkxIDAgMCAxIDE1IDUuNWMxLjYxIDAgMy4wOS41OSA0LjIzIDEuNTdMMjEgNS4zQTguOTU1IDguOTU1IDAgMCAwIDE1IDNjLTMuOTIgMC03LjI0IDIuNTEtOC40OCA2SDN2MmgzLjA2YTguMjYyIDguMjYyIDAgMCAwIDAgMkgzdjJoMy41MmMxLjI0IDMuNDkgNC41NiA2IDguNDggNiAyLjMxIDAgNC40MS0uODcgNi0yLjNsLTEuNzgtMS43N2MtMS4xMy45OC0yLjYgMS41Ny00LjIyIDEuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFdmVudFJlcGVhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDEyVjZjMC0xLjEtLjktMi0yLTJoLTFWMmgtMnYySDhWMkg2djJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg3di0ySDVWMTBoMTR2Mmgyem0tMi00SDVWNmgxNHYyem0tMy4zNiAxMmEzLjUwNCAzLjUwNCAwIDAgMCA2Ljg2LTFjMC0xLjkzLTEuNTctMy41LTMuNS0zLjUtLjk1IDAtMS44Mi4zOC0yLjQ1IDFIMThWMThoLTR2LTRoMS41djEuNDNjLjktLjg4IDIuMTQtMS40MyAzLjUtMS40MyAyLjc2IDAgNSAyLjI0IDUgNWE1LjAwMiA1LjAwMiAwIDAgMS05LjkgMWgxLjU0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXZlbnRTZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA1djdIOVY1aDZtMC0ySDljLTEuMSAwLTIgLjktMiAydjloMTBWNWMwLTEuMS0uOS0yLTItMnptNyA3aC0zdjNoM3YtM3pNNSAxMEgydjNoM3YtM3ptMTUgNUg0djZoMnYtNGgxMnY0aDJ2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFdmVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNGgtMVYyaC0ydjJIOFYySDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDIwYTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjEwaDE0djEwem0wLTEySDVWNmgxNHYyem0tNyA1aDV2NWgtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV4aXRUb0FwcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMDkgMTUuNTkgMTEuNSAxN2w1LTUtNS01LTEuNDEgMS40MUwxMi42NyAxMUgzdjJoOS42N2wtMi41OCAyLjU5ek0xOSAzSDVhMiAyIDAgMCAwLTIgMnY0aDJWNWgxNHYxNEg1di00SDN2NGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHBhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMjBoMTZ2Mkg0ek00IDJoMTZ2Mkg0ek05LjQxIDEzLjU5IDggMTVsNCA0IDQtNC0xLjQxLTEuNDFMMTMgMTUuMTdWOC44M2wxLjU5IDEuNThMMTYgOWwtNC00LTQgNCAxLjQxIDEuNDFMMTEgOC44M3Y2LjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXhwbG9yZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOCAwIDEuNDgtLjQxIDIuODYtMS4xMiA0LjA2bDEuNDYgMS40NkE5Ljk2NyA5Ljk2NyAwIDAgMCAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMC0yLjA0IDAtMy45My42MS01LjUxIDEuNjZsMS40NiAxLjQ2QTcuODY5IDcuODY5IDAgMCAxIDEyIDR6bTIuOTEgOC4wOEwxNy41IDYuNWwtNS41OCAyLjU5IDIuOTkgMi45OXpNMi4xIDQuOTNsMS41NiAxLjU2QTkuOTEgOS45MSAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMDQgMCAzLjkzLS42MSA1LjUxLTEuNjZsMS41NiAxLjU2IDEuNDEtMS40MUwzLjUxIDMuNTEgMi4xIDQuOTN6bTMuMDIgMy4wMSAzLjk4IDMuOTgtMi42IDUuNTggNS41OC0yLjU5IDMuOTggMy45OGMtMS4yLjctMi41OCAxLjExLTQuMDYgMS4xMS00LjQxIDAtOC0zLjU5LTgtOCAwLTEuNDguNDEtMi44NiAxLjEyLTQuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHBsb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptLTUuNS0yLjUgNy41MS0zLjQ5TDE3LjUgNi41IDkuOTkgOS45OSA2LjUgMTcuNXptNS41LTYuNmMuNjEgMCAxLjEuNDkgMS4xIDEuMXMtLjQ5IDEuMS0xLjEgMS4xLTEuMS0uNDktMS4xLTEuMS40OS0xLjEgMS4xLTEuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV4dGVuc2lvbk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEuMzkgNC4yMiAxLjYyIDEuNjJjMCAuMDUtLjAxLjEtLjAxLjE2djMuOGMyLjcgMCAzIDIuMTYgMyAyLjdzLS4yOSAyLjctMyAyLjdWMTljMCAxLjEuOSAyIDIgMmgzLjhjMC0yLjcxIDIuMTYtMyAyLjctM3MyLjcuMjkgMi43IDNIMThjLjA2IDAgLjExIDAgLjE2LS4wMWwxLjYxIDEuNjEgMS40MS0xLjQxTDIuODEgMi44MSAxLjM5IDQuMjJ6TTExLjUgMTZjLTEuNSAwLTMuNTcuODMtNC4zNyAzSDV2LTIuMTNjMi4xNy0uOCAzLTIuODcgMy00LjM3IDAtLjY5LS4xOC0xLjUtLjU4LTIuMjVsNi4zMyA2LjMzQTQuODkgNC44OSAwIDAgMCAxMS41IDE2ek04LjgzIDZsLTItMkg5YTIuNSAyLjUgMCAwIDEgNSAwaDRjMS4xIDAgMiAuOSAyIDJ2NGEyLjUgMi41IDAgMCAxIDAgNXYyLjE3bC0yLTJWMTNoMmMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41aC0yVjZoLTZWNGMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjV2Mkg4LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXh0ZW5zaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41IDQuNWMuMjggMCAuNS4yMi41LjV2Mmg2djZoMmMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjVoLTJ2NmgtMi4xMmMtLjY4LTEuNzUtMi4zOS0zLTQuMzgtM3MtMy43IDEuMjUtNC4zOCAzSDR2LTIuMTJjMS43NS0uNjggMy0yLjM5IDMtNC4zOCAwLTEuOTktMS4yNC0zLjctMi45OS00LjM4TDQgN2g2VjVjMC0uMjguMjItLjUuNS0uNW0wLTJBMi41IDIuNSAwIDAgMCA4IDVINGMtMS4xIDAtMS45OS45LTEuOTkgMnYzLjhoLjI5YzEuNDkgMCAyLjcgMS4yMSAyLjcgMi43cy0xLjIxIDIuNy0yLjcgMi43SDJWMjBjMCAxLjEuOSAyIDIgMmgzLjh2LS4zYzAtMS40OSAxLjIxLTIuNyAyLjctMi43czIuNyAxLjIxIDIuNyAyLjd2LjNIMTdjMS4xIDAgMi0uOSAyLTJ2LTRhMi41IDIuNSAwIDAgMCAwLTVWN2MwLTEuMS0uOS0yLTItMmgtNGEyLjUgMi41IDAgMCAwLTIuNS0yLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGYWNlVW5sb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4yNSAxM2ExLjI1IDEuMjUgMCAxIDEtMi41IDAgMS4yNSAxLjI1IDAgMCAxIDIuNSAwek0xNSAxMS43NWExLjI1IDEuMjUgMCAxIDAgMCAyLjUgMS4yNSAxLjI1IDAgMCAwIDAtMi41em03IC4yNWMwIDUuNTItNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTIgNi40OCAyIDEyIDJzMTAgNC40OCAxMCAxMHpNMTAuNjYgNC4xMkMxMi4wNiA2LjQ0IDE0LjYgOCAxNy41IDhjLjQ2IDAgLjkxLS4wNSAxLjM0LS4xMkMxNy40NCA1LjU2IDE0LjkgNCAxMiA0Yy0uNDYgMC0uOTEuMDUtMS4zNC4xMnpNNC40MiA5LjQ3YTguMDQ2IDguMDQ2IDAgMCAwIDMuNjYtNC40NCA4LjA0NiA4LjA0NiAwIDAgMC0zLjY2IDQuNDR6TTIwIDEyYzAtLjc4LS4xMi0xLjUzLS4zMy0yLjI0LS43LjE1LTEuNDIuMjQtMi4xNy4yNGExMCAxMCAwIDAgMS03Ljc2LTMuNjlBMTAuMDE2IDEwLjAxNiAwIDAgMSA0IDExLjg2Yy4wMS4wNCAwIC4wOSAwIC4xNCAwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMjUgMTNhMS4yNSAxLjI1IDAgMSAxLTIuNSAwIDEuMjUgMS4yNSAwIDAgMSAyLjUgMHpNMTUgMTEuNzVhMS4yNSAxLjI1IDAgMSAwIDAgMi41IDEuMjUgMS4yNSAwIDAgMCAwLTIuNXptNyAuMjVjMCA1LjUyLTQuNDggMTAtMTAgMTBTMiAxNy41MiAyIDEyIDYuNDggMiAxMiAyczEwIDQuNDggMTAgMTB6TTEwLjY2IDQuMTJDMTIuMDYgNi40NCAxNC42IDggMTcuNSA4Yy40NiAwIC45MS0uMDUgMS4zNC0uMTJDMTcuNDQgNS41NiAxNC45IDQgMTIgNGMtLjQ2IDAtLjkxLjA1LTEuMzQuMTJ6TTQuNDIgOS40N2E4LjA0NiA4LjA0NiAwIDAgMCAzLjY2LTQuNDQgOC4wNDYgOC4wNDYgMCAwIDAtMy42NiA0LjQ0ek0yMCAxMmMwLS43OC0uMTItMS41My0uMzMtMi4yNC0uNy4xNS0xLjQyLjI0LTIuMTcuMjRhMTAgMTAgMCAwIDEtNy43Ni0zLjY5QTEwLjAxNiAxMC4wMTYgMCAwIDEgNCAxMS44NmMuMDEuMDQgMCAuMDkgMCAuMTQgMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhY3RDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINFY1aDE2djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS40MSAxMC40MiAxNy45OSA5bC0zLjE3IDMuMTctMS40MS0xLjQyTDEyIDEyLjE2IDE0LjgyIDE1ek01IDdoNXYySDV6TTUgMTFoNXYySDV6TTUgMTVoNXYySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhdm9yaXRlQm9yZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDNjLTEuNzQgMC0zLjQxLjgxLTQuNSAyLjA5QzEwLjkxIDMuODEgOS4yNCAzIDcuNSAzIDQuNDIgMyAyIDUuNDIgMiA4LjVjMCAzLjc4IDMuNCA2Ljg2IDguNTUgMTEuNTRMMTIgMjEuMzVsMS40NS0xLjMyQzE4LjYgMTUuMzYgMjIgMTIuMjggMjIgOC41IDIyIDUuNDIgMTkuNTggMyAxNi41IDN6bS00LjQgMTUuNTUtLjEuMS0uMS0uMUM3LjE0IDE0LjI0IDQgMTEuMzkgNCA4LjUgNCA2LjUgNS41IDUgNy41IDVjMS41NCAwIDMuMDQuOTkgMy41NyAyLjM2aDEuODdDMTMuNDYgNS45OSAxNC45NiA1IDE2LjUgNWMyIDAgMy41IDEuNSAzLjUgMy41IDAgMi44OS0zLjE0IDUuNzQtNy45IDEwLjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmF2b3JpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDIxLjM1LTEuNDUtMS4zMkM1LjQgMTUuMzYgMiAxMi4yOCAyIDguNSAyIDUuNDIgNC40MiAzIDcuNSAzYzEuNzQgMCAzLjQxLjgxIDQuNSAyLjA5QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDMgMTkuNTggMyAyMiA1LjQyIDIyIDguNWMwIDMuNzgtMy40IDYuODYtOC41NSAxMS41NEwxMiAyMS4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZheCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDloLTFWNEg4djVoLS43OEM2LjY3IDguMzkgNS44OSA4IDUgOGMtMS42NiAwLTMgMS4zNC0zIDN2N2MwIDEuNjYgMS4zNCAzIDMgMyAuODkgMCAxLjY3LS4zOSAyLjIyLTFIMjJ2LThjMC0xLjY2LTEuMzQtMy0zLTN6TTYgMThjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTF2LTdjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjd6bTQtMTJoNnYzaC02VjZ6bTEwIDEySDh2LTdoMTFjLjU1IDAgMSAuNDUgMSAxdjZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjE2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCIxNlwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDEyaDR2NUg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmVlZGJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdsLS41OS41OS0uNTguNThWNGgxNnYxMnptLTktNGgydjJoLTJ6bTAtNmgydjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWxlUHJlc2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjhsLTYtNnptNCAxOEg2VjRoOHY0aDR2MTJ6bS02LTNjLTEuMSAwLTItLjktMi0yVjkuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVYxNWgyVjkuNWEyLjUgMi41IDAgMCAwLTUgMFYxNWMwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00di00aC0ydjRjMCAxLjEtLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXJBbHRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi45NSA2LTMuNTcgNC41NSAxLjQzIDEuNDNjMS4wMy0xLjMxIDQuOTgtNi4zNyA0Ljk4LTYuMzdBLjk5OC45OTggMCAwIDAgMTkgNEg2LjgzbDIgMmg4LjEyek0yLjgxIDIuODEgMS4zOSA0LjIyIDEwIDEzdjZjMCAuNTUuNDUgMSAxIDFoMmMuNTUgMCAxLS40NSAxLTF2LTIuMTdsNS43OCA1Ljc4IDEuNDEtMS40MUwyLjgxIDIuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNG0wIDI0SDBcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA2aDEwbC01LjAxIDYuM0w3IDZ6bS0yLjc1LS4zOUM2LjI3IDguMiAxMCAxMyAxMCAxM3Y2YzAgLjU1LjQ1IDEgMSAxaDJjLjU1IDAgMS0uNDUgMS0xdi02czMuNzItNC44IDUuNzQtNy4zOUEuOTk4Ljk5OCAwIDAgMCAxOC45NSA0SDUuMDRjLS44MyAwLTEuMy45NS0uNzkgMS42MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbmRJblBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnpNNiA0aDdsNSA1djguNThsLTEuODQtMS44NGE0Ljk5MiA0Ljk5MiAwIDAgMC0uNjQtNi4yOEE0Ljk2IDQuOTYgMCAwIDAgMTIgOGE1IDUgMCAwIDAtMy41MyAxLjQ2IDQuOTggNC45OCAwIDAgMCAwIDcuMDUgNC45ODIgNC45ODIgMCAwIDAgNi4yOC42M0wxNy42IDIwSDZWNHptOC4xMSAxMS4xYy0uNTYuNTYtMS4zMS44OC0yLjExLjg4cy0xLjU1LS4zMS0yLjExLS44OGMtLjU2LS41Ni0uODgtMS4zMS0uODgtMi4xMXMuMzEtMS41NS44OC0yLjExYy41Ni0uNTcgMS4zMS0uODggMi4xMS0uODhzMS41NS4zMSAyLjExLjg4Yy41Ni41Ni44OCAxLjMxLjg4IDIuMTFzLS4zMSAxLjU1LS44OCAyLjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmluZFJlcGxhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDZjMS4zOCAwIDIuNjMuNTYgMy41NCAxLjQ2TDEyIDEwaDZWNGwtMi4wNSAyLjA1QTYuOTc2IDYuOTc2IDAgMCAwIDExIDRjLTMuNTMgMC02LjQzIDIuNjEtNi45MiA2SDYuMUE1IDUgMCAwIDEgMTEgNnptNS42NCA5LjE0QTYuODkgNi44OSAwIDAgMCAxNy45MiAxMkgxNS45YTUgNSAwIDAgMS00LjkgNGMtMS4zOCAwLTIuNjMtLjU2LTMuNTQtMS40NkwxMCAxMkg0djZsMi4wNS0yLjA1QTYuOTc2IDYuOTc2IDAgMCAwIDExIDE4YzEuNTUgMCAyLjk4LS41MSA0LjE0LTEuMzZMMjAgMjEuNDkgMjEuNDkgMjBsLTQuODUtNC44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbmdlcnByaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy44MSA0LjQ3Yy0uMDggMC0uMTYtLjAyLS4yMy0uMDZDMTUuNjYgMy40MiAxNCAzIDEyLjAxIDNjLTEuOTggMC0zLjg2LjQ3LTUuNTcgMS40MS0uMjQuMTMtLjU0LjA0LS42OC0uMmEuNTA2LjUwNiAwIDAgMSAuMi0uNjhDNy44MiAyLjUyIDkuODYgMiAxMi4wMSAyYzIuMTMgMCAzLjk5LjQ3IDYuMDMgMS41Mi4yNS4xMy4zNC40My4yMS42N2EuNDkuNDkgMCAwIDEtLjQ0LjI4ek0zLjUgOS43MmEuNDk5LjQ5OSAwIDAgMS0uNDEtLjc5Yy45OS0xLjQgMi4yNS0yLjUgMy43NS0zLjI3QzkuOTggNC4wNCAxNCA0LjAzIDE3LjE1IDUuNjVjMS41Ljc3IDIuNzYgMS44NiAzLjc1IDMuMjVhLjUuNSAwIDAgMS0uMTIuN2MtLjIzLjE2LS41NC4xMS0uNy0uMTJhOS4zODggOS4zODggMCAwIDAtMy4zOS0yLjk0Yy0yLjg3LTEuNDctNi41NC0xLjQ3LTkuNC4wMS0xLjM2LjctMi41IDEuNy0zLjQgMi45Ni0uMDguMTQtLjIzLjIxLS4zOS4yMXptNi4yNSAxMi4wN2EuNDcuNDcgMCAwIDEtLjM1LS4xNWMtLjg3LS44Ny0xLjM0LTEuNDMtMi4wMS0yLjY0LS42OS0xLjIzLTEuMDUtMi43My0xLjA1LTQuMzQgMC0yLjk3IDIuNTQtNS4zOSA1LjY2LTUuMzlzNS42NiAyLjQyIDUuNjYgNS4zOWMwIC4yOC0uMjIuNS0uNS41cy0uNS0uMjItLjUtLjVjMC0yLjQyLTIuMDktNC4zOS00LjY2LTQuMzlzLTQuNjYgMS45Ny00LjY2IDQuMzljMCAxLjQ0LjMyIDIuNzcuOTMgMy44NS42NCAxLjE1IDEuMDggMS42NCAxLjg1IDIuNDIuMTkuMi4xOS41MSAwIC43MS0uMTEuMS0uMjQuMTUtLjM3LjE1em03LjE3LTEuODVjLTEuMTkgMC0yLjI0LS4zLTMuMS0uODktMS40OS0xLjAxLTIuMzgtMi42NS0yLjM4LTQuMzkgMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjVjMCAxLjQxLjcyIDIuNzQgMS45NCAzLjU2LjcxLjQ4IDEuNTQuNzEgMi41NC43MS4yNCAwIC42NC0uMDMgMS4wNC0uMS4yNy0uMDUuNTMuMTMuNTguNDEuMDUuMjctLjEzLjUzLS40MS41OC0uNTcuMTEtMS4wNy4xMi0xLjIxLjEyek0xNC45MSAyMmMtLjA0IDAtLjA5LS4wMS0uMTMtLjAyLTEuNTktLjQ0LTIuNjMtMS4wMy0zLjcyLTIuMWE3LjI5NyA3LjI5NyAwIDAgMS0yLjE3LTUuMjJjMC0xLjYyIDEuMzgtMi45NCAzLjA4LTIuOTRzMy4wOCAxLjMyIDMuMDggMi45NGMwIDEuMDcuOTMgMS45NCAyLjA4IDEuOTRzMi4wOC0uODcgMi4wOC0xLjk0YzAtMy43Ny0zLjI1LTYuODMtNy4yNS02LjgzLTIuODQgMC01LjQ0IDEuNTgtNi42MSA0LjAzLS4zOS44MS0uNTkgMS43Ni0uNTkgMi44IDAgLjc4LjA3IDIuMDEuNjcgMy42MS4xLjI2LS4wMy41NS0uMjkuNjQtLjI2LjEtLjU1LS4wNC0uNjQtLjI5YTExLjE0IDExLjE0IDAgMCAxLS43My0zLjk2YzAtMS4yLjIzLTIuMjkuNjgtMy4yNCAxLjMzLTIuNzkgNC4yOC00LjYgNy41MS00LjYgNC41NSAwIDguMjUgMy41MSA4LjI1IDcuODMgMCAxLjYyLTEuMzggMi45NC0zLjA4IDIuOTRzLTMuMDgtMS4zMi0zLjA4LTIuOTRjMC0xLjA3LS45My0xLjk0LTIuMDgtMS45NHMtMi4wOC44Ny0yLjA4IDEuOTRjMCAxLjcxLjY2IDMuMzEgMS44NyA0LjUxLjk1Ljk0IDEuODYgMS40NiAzLjI3IDEuODUuMjcuMDcuNDIuMzUuMzUuNjEtLjA1LjIzLS4yNi4zOC0uNDcuMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaXRTY3JlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTZoMTJWOEg2djh6bTItNmg4djRIOHYtNHptLTQgNUgydjNjMCAxLjEuOSAyIDIgMmgzdi0ySDR2LTN6bTAtOWgzVjRINGMtMS4xIDAtMiAuOS0yIDJ2M2gyVjZ6bTE2LTJoLTN2MmgzdjNoMlY2YzAtMS4xLS45LTItMi0yem0wIDE0aC0zdjJoM2MxLjEgMCAyLS45IDItMnYtM2gtMnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmxha3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJtMTQuMDUgMTcuNTgtLjAxLjAxLTIuNC0yLjQgMS4wNi0xLjA2IDEuMzUgMS4zNUwxNi41NCAxM2wxLjA2IDEuMDYtMy41NCAzLjU0LS4wMS0uMDJ6TTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyek03LjM0IDYuMjhsMS40MSAxLjQxIDEuNDEtMS40MSAxLjA2IDEuMDYtMS40MSAxLjQxIDEuNDEgMS40MS0xLjA2IDEuMDYtMS40MS0xLjQxLTEuNDEgMS40MS0xLjA2LTEuMDYgMS40MS0xLjQxLTEuNDEtMS40MSAxLjA2LTEuMDZ6TTEyIDIwYy0yLjIgMC00LjItLjktNS43LTIuM0wxNy43IDYuM0MxOS4xIDcuOCAyMCA5LjggMjAgMTJjMCA0LjQtMy42IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmxpZ2h0TGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDE5aDE5djJoLTE5di0yem0xNi44NC0zLjE1Yy44LjIxIDEuNjItLjI2IDEuODQtMS4wNi4yMS0uOC0uMjYtMS42Mi0xLjA2LTEuODRsLTUuMzEtMS40Mi0yLjc2LTkuMDJMMTAuMTIgMnY4LjI4TDUuMTUgOC45NWwtLjkzLTIuMzItMS40NS0uMzl2NS4xN2wxNi41NyA0LjQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmxpZ2h0VGFrZW9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDE5aDE5djJoLTE5di0yem0xOS41Ny05LjM2Yy0uMjEtLjgtMS4wNC0xLjI4LTEuODQtMS4wNkwxNC45MiAxMGwtNi45LTYuNDMtMS45My41MSA0LjE0IDcuMTctNC45NyAxLjMzLTEuOTctMS41NC0xLjQ1LjM5IDIuNTkgNC40OUwyMSAxMS40OWMuODEtLjIzIDEuMjgtMS4wNSAxLjA3LTEuODV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGlwVG9CYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDdIN3YyaDJWN3ptMCA0SDd2Mmgydi0yem0wLThhMiAyIDAgMCAwLTIgMmgyVjN6bTQgMTJoLTJ2Mmgydi0yem02LTEydjJoMmMwLTEuMS0uOS0yLTItMnptLTYgMGgtMnYyaDJWM3pNOSAxN3YtMkg3YTIgMiAwIDAgMCAyIDJ6bTEwLTRoMnYtMmgtMnYyem0wLTRoMlY3aC0ydjJ6bTAgOGMxLjEgMCAyLS45IDItMmgtMnYyek01IDdIM3YxMmEyIDIgMCAwIDAgMiAyaDEydi0ySDVWN3ptMTAtMmgyVjNoLTJ2MnptMCAxMmgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGlwVG9Gcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxM2gydi0ySDN2MnptMCA0aDJ2LTJIM3Yyem0yIDR2LTJIM2EyIDIgMCAwIDAgMiAyek0zIDloMlY3SDN2MnptMTIgMTJoMnYtMmgtMnYyem00LTE4SDlhMiAyIDAgMCAwLTIgMnYxMGEyIDIgMCAwIDAgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTJIOVY1aDEwdjEwem0tOCA2aDJ2LTJoLTJ2MnptLTQgMGgydi0ySDd2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsdXR0ZXJEYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMDcgMTEuN2MuMjktLjM5LjgxLS41NiAxLjI3LS4zNy4xNy4wNy4zMi4xOC40My4zMy4yMi4yOC4yNS41OS4yMi44NS0uMDUuMzMtLjI1LjYzLS41NC43OSAwIDAtNC44NyAyLjk1LTUuMDcgMi42OXMzLjY5LTQuMjkgMy42OS00LjI5ek0yMiAxMGMwIDIuNS0xIDMtMS41IDMtLjIzIDAtLjQ0LS4xLS42Mi0uMjYtLjQ4IDMuMzItMi4zNiA1LjMxLTUuMzMgNS45OS4xMS40NC40OC43Ny45NS43N2guNThjLjIyIDAgLjQxLjE1LjQ4LjM2LjE3LjUyLjY2IDEuMDIgMS4wMiAxLjMyLjI1LjIxLjI0LjU5LS4wMy43OC0uMzQuMjQtLjkuNDktMS43OS41M2EuNTAxLjUwMSAwIDAgMS0uNDUtLjIyYy0uMTMtLjItLjMxLS41Ni0uMzEtMS4wMSAwLS4zLjA0LS41Ny4wOS0uOC0uNzgtLjE2LTEuMzktLjc4LTEuNTUtMS41Ni0uNDkuMDYtMSAuMS0xLjU0LjEtLjg4IDAtMS43LS4wOS0yLjQ1LS4yNS0uMDIuMDgtLjA1LjE2LS4wNS4yNSAwIC41NS40NSAxIDEgMWguNThjLjIyIDAgLjQxLjE1LjQ4LjM2LjE3LjUyLjY2IDEuMDIgMS4wMiAxLjMyLjI1LjIxLjI0LjU5LS4wMy43OC0uMzQuMjQtLjkuNDktMS43OS41M2EuNTAxLjUwMSAwIDAgMS0uNDUtLjIyYy0uMTMtLjItLjMxLS41Ni0uMzEtMS4wMSAwLS4zLjA0LS41Ny4wOS0uOC0uOS0uMTktMS41OS0xLTEuNTktMS45NiAwLS4xOC4wMy0uMzYuMDgtLjUzLTIuNDYtLjg2LTQuMDMtMi43OC00LjQ2LTUuNzQtLjE4LjE3LS4zOC4yNy0uNjIuMjdDMyAxMyAyIDEyLjUgMiAxMGMwLTIuMjcgMS43LTQuNSAzLTQuNS40MyAwIC40OS40OS41Ljg1YTcuOTg5IDcuOTg5IDAgMCAxIDUuNTUtMy4yOWMuMi0uOTYgMS4wOC0xLjU2IDEuOTUtMS41NnYxcy4zMy0uNSAxLS41Yy42NyAwIDEgLjUgMSAuNS0uNDkgMC0uODUuMzUtLjk2Ljc3IDEuODIuNDggMy4zOSAxLjU5IDQuNDYgMy4wOC4wMS0uMzYuMDctLjg1LjUtLjg1IDEuMyAwIDMgMi4yMyAzIDQuNXpNNSAxMWMwIC44MS4xIDEuNTMuMjUgMi4yMS4xOC0uNjkuNDYtMS4zMy44My0xLjkyYTMuNzcgMy43NyAwIDAgMS0uMzQtMS41NEEzLjc2NiAzLjc2NiAwIDAgMSA5LjUgNmMuOTYgMCAxLjg0LjM3IDIuNS45Ny42Ni0uNiAxLjU0LS45NyAyLjUtLjk3IDIuMDcgMCAzLjc1IDEuNjggMy43NSAzLjc1IDAgLjU1LS4xMiAxLjA3LS4zNCAxLjU0LjM3LjU5LjY2IDEuMjQuODQgMS45NC4xNS0uNjguMjUtMS40MS4yNS0yLjIzIDAtMy44Ni0zLjE0LTctNy03cy03IDMuMTQtNyA3em0xMi45OCA0LjI5YzAtLjEuMDItLjE5LjAyLS4yOSAwLTEuMDEtLjI2LTEuOTUtLjctMi43OC0uNjkuNzgtMS42OCAxLjI4LTIuOCAxLjI4LS4yNyAwLS41NC0uMDMtLjc5LS4wOS4xNC0uMjMuMjMtLjQ5LjI3LS43Ny4wMS0uMDcuMDEtLjEzLjAyLS4xOS4xNy4wMy4zMy4wNS41LjA1IDEuNTIgMCAyLjc1LTEuMjMgMi43NS0yLjc1UzE2LjAyIDcgMTQuNSA3Yy0uNjcgMC0xLjMyLjI1LTEuODMuNzJsLS42Ny42LS42Ny0uNkMxMC44MiA3LjI1IDEwLjE3IDcgOS41IDcgNy45OCA3IDYuNzUgOC4yMyA2Ljc1IDkuNzVjMCAxLjM0Ljk2IDIuNDYgMi4yMyAyLjdsLS43Ni44M2MtLjYtLjIyLTEuMTItLjU5LTEuNTMtMS4wNUE2LjAxIDYuMDEgMCAwIDAgNiAxNWMwIC4wOC4wMS4xNS4wMS4yNEM3LjEzIDE3LjA2IDkuMTQgMTggMTIgMThjMi44OCAwIDQuODgtLjkxIDUuOTgtMi43MXpNMTYgOS43NWMwIC45Ny0uNjcgMS43NS0xLjUgMS43NVMxMyAxMC43MiAxMyA5Ljc1IDEzLjY3IDggMTQuNSA4czEuNS43OCAxLjUgMS43NXptLS43NS0uODdjMC0uMjEtLjE3LS4zOC0uMzgtLjM4cy0uMzcuMTctLjM3LjM4LjE3LjM4LjM4LjM4LjM3LS4xOC4zNy0uMzh6TTExIDkuNzVjMCAuOTctLjY3IDEuNzUtMS41IDEuNzVTOCAxMC43MiA4IDkuNzUgOC42NyA4IDkuNSA4czEuNS43OCAxLjUgMS43NXptLS43NS0uODdjMC0uMjEtLjE3LS4zOC0uMzgtLjM4cy0uMzcuMTctLjM3LjM4LjE3LjM4LjM4LjM4LjM3LS4xOC4zNy0uMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGcmVlQ2FuY2VsbGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMjEgMjBINVYxMGgxNHY0LjM4bDItMlY2YzAtMS4xLS45LTItMi0yaC0xVjJoLTJ2Mkg4VjJINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMjBhMiAyIDAgMCAwIDIgMmg4LjIxbC0yLTJ6TTUgNmgxNHYySDVWNnptMTEuNTQgMTYuNUwxMyAxOC45NmwxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNCAxLjQxIDEuNDEtNS42NCA1LjY2ek0xMC40MSAxNCAxMiAxNS41OSAxMC41OSAxNyA5IDE1LjQxIDcuNDEgMTcgNiAxNS41OSA3LjU5IDE0IDYgMTIuNDEgNy40MSAxMSA5IDEyLjU5IDEwLjU5IDExIDEyIDEyLjQxIDEwLjQxIDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR1RyYW5zbGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNWgtOS4xMkwxMCAySDRjLTEuMSAwLTIgLjktMiAydjEzYzAgMS4xLjkgMiAyIDJoN2wxIDNoOGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yek03LjE3IDE0LjU5Yy0yLjI1IDAtNC4wOS0xLjgzLTQuMDktNC4wOXMxLjgzLTQuMDkgNC4wOS00LjA5YzEuMDQgMCAxLjk5LjM3IDIuNzQgMS4wN2wuMDcuMDYtMS4yMyAxLjE4LS4wNi0uMDVjLS4yOS0uMjctLjc4LS41OS0xLjUyLS41OS0xLjMxIDAtMi4zOCAxLjA5LTIuMzggMi40MnMxLjA3IDIuNDIgMi4zOCAyLjQyYzEuMzcgMCAxLjk2LS44NyAyLjEyLTEuNDZINy4wOFY5LjkxaDMuOTVsLjAxLjA3Yy4wNC4yMS4wNS40LjA1LjYxIDAgMi4zNS0xLjYxIDQtMy45MiA0em02LjAzLTEuNzFjLjMzLjYuNzQgMS4xOCAxLjE5IDEuN2wtLjU0LjUzLS42NS0yLjIzem0uNzctLjc2aC0uOTlsLS4zMS0xLjA0aDMuOTlzLS4zNCAxLjMxLTEuNTYgMi43NGMtLjUyLS42Mi0uODktMS4yMy0xLjEzLTEuN3pNMjEgMjBjMCAuNTUtLjQ1IDEtMSAxaC03bDItMi0uODEtMi43Ny45Mi0uOTJMMTcuNzkgMThsLjczLS43My0yLjcxLTIuNjhjLjktMS4wMyAxLjYtMi4yNSAxLjkyLTMuNTFIMTl2LTEuMDRoLTMuNjRWOWgtMS4wNHYxLjA0aC0xLjk2TDExLjE4IDZIMjBjLjU1IDAgMSAuNDUgMSAxdjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR2F2ZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMjFoMTJ2Mkgxdi0yek01LjI0IDguMDdsMi44My0yLjgzIDE0LjE0IDE0LjE0LTIuODMgMi44M0w1LjI0IDguMDd6TTEyLjMyIDFsNS42NiA1LjY2LTIuODMgMi44My01LjY2LTUuNjZMMTIuMzIgMXpNMy44MyA5LjQ4bDUuNjYgNS42Ni0yLjgzIDIuODNMMSAxMi4zMWwyLjgzLTIuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHZW5lcmF0aW5nVG9rZW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LTgtMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6bTMtNy41aC0ydjVIOHYtNUg2VjloNnYxLjV6bTguMjUtNi43NUwyMyA1bC0yLjc1IDEuMjVMMTkgOWwtMS4yNS0yLjc1TDE1IDVsMi43NS0xLjI1TDE5IDFsMS4yNSAyLjc1em0wIDE0TDIzIDE5bC0yLjc1IDEuMjVMMTkgMjNsLTEuMjUtMi43NUwxNSAxOWwyLjc1LTEuMjVMMTkgMTVsMS4yNSAyLjc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR2V0QXBwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA1djZoMS4xN0wxMiAxMy4xNyA5LjgzIDExSDExVjVoMm0yLTJIOXY2SDVsNyA3IDctN2gtNFYzem00IDE1SDV2MmgxNHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdpZkJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5SDVWNWgxNHYxNHpNNSAzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJINXptNi41IDExaDF2LTRoLTF2NHptMiAwaDF2LTEuNUgxNnYtMWgtMS41VjExaDJ2LTFoLTN2NHptLTQtMnYxaC0xdi0yaDJjMC0uNTUtLjQ1LTEtMS0xaC0xYy0uNTUgMC0xIC40NS0xIDF2MmMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdpZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNSA5SDEzdjZoLTEuNVY5ek05IDlINmMtLjYgMC0xIC41LTEgMXY0YzAgLjUuNCAxIDEgMWgzYy42IDAgMS0uNSAxLTF2LTJIOC41djEuNWgtMnYtM0gxMFYxMGMwLS41LS40LTEtMS0xem0xMCAxLjVWOWgtNC41djZIMTZ2LTJoMnYtMS41aC0ydi0xaDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcmFkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgNy4xMy45NyAyLjI5LjQ3IDEuMTEgMS4yLjEgMi40Ny4yMS0xLjg4IDEuNjMtLjkxLjc5LjI3IDEuMTguNTYgMi40MS0yLjEyLTEuMjgtMS4wMy0uNjQtMS4wMy42Mi0yLjEyIDEuMjguNTYtMi40MS4yNy0xLjE4LS45MS0uNzktMS44OC0xLjYzIDIuNDctLjIxIDEuMi0uMS40Ny0xLjExLjk3LTIuMjdNMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3IDE4LjE4IDIxbC0xLjY0LTcuMDNMMjIgOS4yNGwtNy4xOS0uNjFMMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyYWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDdoMTZ2Mkg0Vjd6bTAgNmgxNnYtMkg0djJ6bTAgNGg3di0ySDR2MnptMCA0aDd2LTJINHYyem0xMS40MS0yLjgzTDE0IDE2Ljc1bC0xLjQxIDEuNDFMMTUuNDEgMjEgMjAgMTYuNDIgMTguNTggMTVsLTMuMTcgMy4xN3pNNCAzdjJoMTZWM0g0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JvdXBXb3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4XCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjhcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNlwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWxwQ2VudGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuMjUgMTYuNzRjMCAuNjktLjUzIDEuMjYtMS4yNSAxLjI2LS43IDAtMS4yNi0uNTYtMS4yNi0xLjI2IDAtLjcxLjU2LTEuMjUgMS4yNi0xLjI1LjcxIDAgMS4yNS41NSAxLjI1IDEuMjV6TTExLjk5IDZjLTEuNzcgMC0yLjk4IDEuMTUtMy40MyAyLjQ5bDEuNjQuNjljLjIyLS42Ny43NC0xLjQ4IDEuOC0xLjQ4IDEuNjIgMCAxLjk0IDEuNTIgMS4zNyAyLjMzLS41NC43Ny0xLjQ3IDEuMjktMS45NiAyLjE2LS4zOS42OS0uMzEgMS40OS0uMzEgMS45OGgxLjgyYzAtLjkzLjA3LTEuMTIuMjItMS40MS4zOS0uNzIgMS4xMS0xLjA2IDEuODctMi4xNy42OC0xIC40Mi0yLjM2LS4wMi0zLjA4LS41MS0uODQtMS41Mi0xLjUxLTMtMS41MXpNMTkgNUg1djE0aDE0VjVtMC0yYzEuMSAwIDIgLjkgMiAydjE0YzAgMS4xLS45IDItMiAySDVjLTEuMSAwLTItLjktMi0yVjVjMC0xLjEuOS0yIDItMmgxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhlbHBPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxOGgydi0yaC0ydjJ6bTEtMTZDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0wLTE0Yy0yLjIxIDAtNCAxLjc5LTQgNGgyYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJjMCAyLTMgMS43NS0zIDVoMmMwLTIuMjUgMy0yLjUgMy01IDAtMi4yMS0xLjc5LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGVscCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxN2gtMnYtMmgydjJ6bTIuMDctNy43NS0uOS45MkMxMy40NSAxMi45IDEzIDEzLjUgMTMgMTVoLTJ2LS41YzAtMS4xLjQ1LTIuMSAxLjE3LTIuODNsMS4yNC0xLjI2Yy4zNy0uMzYuNTktLjg2LjU5LTEuNDEgMC0xLjEtLjktMi0yLTJzLTIgLjktMiAySDhjMC0yLjIxIDEuNzktNCA0LTRzNCAxLjc5IDQgNGMwIC44OC0uMzYgMS42OC0uOTMgMi4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhpZGVTb3VyY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuODEgMi44MSAxLjM5IDQuMjJsMi4yNyAyLjI3QTkuOTEgOS45MSAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMDQgMCAzLjkzLS42MSA1LjUxLTEuNjZsMi4yNyAyLjI3IDEuNDEtMS40MUwyLjgxIDIuODF6TTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOCAwLTEuNDguNDEtMi44NiAxLjEyLTQuMDZsMTAuOTQgMTAuOTRDMTQuODYgMTkuNTkgMTMuNDggMjAgMTIgMjB6TTcuOTQgNS4xMiA2LjQ5IDMuNjZBOS45MSA5LjkxIDAgMCAxIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTAgMCAyLjA0LS42MSAzLjkzLTEuNjYgNS41MWwtMS40Ni0xLjQ2QTcuODY5IDcuODY5IDAgMCAwIDIwIDEyYzAtNC40MS0zLjU5LTgtOC04LTEuNDggMC0yLjg2LjQxLTQuMDYgMS4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhpZ2hsaWdodEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDVoLTJWM2gydjJ6bS0yIDEwdjZsMi4yOS0yLjI5IDIuMyAyLjI5TDIxIDE5LjU5bC0yLjI5LTIuMjlMMjEgMTVoLTZ6bTQtNmgyVjdoLTJ2MnptMCA0aDJ2LTJoLTJ2MnptLTggOGgydi0yaC0ydjJ6TTcgNWgyVjNIN3Yyek0zIDE3aDJ2LTJIM3Yyem0yIDR2LTJIM2MwIDEuMS45IDIgMiAyek0xOSAzdjJoMmMwLTEuMS0uOS0yLTItMnptLTggMmgyVjNoLTJ2MnpNMyA5aDJWN0gzdjJ6bTQgMTJoMnYtMkg3djJ6bS00LThoMnYtMkgzdjJ6bTAtOGgyVjNjLTEuMSAwLTIgLjktMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGlnaGxpZ2h0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41OSA4IDEyIDEwLjU5IDkuNDEgOCA4IDkuNDEgMTAuNTkgMTIgOCAxNC41OSA5LjQxIDE2IDEyIDEzLjQxIDE0LjU5IDE2IDE2IDE0LjU5IDEzLjQxIDEyIDE2IDkuNDEgMTQuNTkgOHpNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIaXN0b3J5VG9nZ2xlT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuMSAxOS4zNyAxIDEuNzRjLS45Ni40NC0yLjAxLjczLTMuMS44NHYtMi4wMmMuNzQtLjA5IDEuNDQtLjI4IDIuMS0uNTZ6TTQuMDcgMTNIMi4wNWMuMTEgMS4xLjQgMi4xNC44NCAzLjFsMS43NC0xYy0uMjgtLjY2LS40Ny0xLjM2LS41Ni0yLjF6TTE1LjEgNC42M2wxLTEuNzRjLS45Ni0uNDQtMi0uNzMtMy4xLS44NHYyLjAyYy43NC4wOSAxLjQ0LjI4IDIuMS41NnpNMTkuOTMgMTFoMi4wMmMtLjExLTEuMS0uNC0yLjE0LS44NC0zLjFsLTEuNzQgMWMuMjguNjYuNDcgMS4zNi41NiAyLjF6TTguOSAxOS4zN2wtMSAxLjc0Yy45Ni40NCAyLjAxLjczIDMuMS44NHYtMi4wMmMtLjc0LS4wOS0xLjQ0LS4yOC0yLjEtLjU2ek0xMSA0LjA3VjIuMDVjLTEuMS4xMS0yLjE0LjQtMy4xLjg0bDEgMS43NGMuNjYtLjI4IDEuMzYtLjQ3IDIuMS0uNTZ6bTcuMzYgMy4xIDEuNzQtMS4wMWMtLjYzLS44Ny0xLjQtMS42NC0yLjI3LTIuMjdsLTEuMDEgMS43NGMuNTkuNDUgMS4xLjk2IDEuNTQgMS41NHpNNC42MyA4LjlsLTEuNzQtMWMtLjQ0Ljk2LS43MyAyLS44NCAzLjFoMi4wMmMuMDktLjc0LjI4LTEuNDQuNTYtMi4xem0xNS4zIDQuMWMtLjA5Ljc0LS4yOCAxLjQ0LS41NiAyLjFsMS43NCAxYy40NC0uOTYuNzMtMi4wMS44NC0zLjFoLTIuMDJ6bS0zLjEgNS4zNiAxLjAxIDEuNzRjLjg3LS42MyAxLjY0LTEuNCAyLjI3LTIuMjdsLTEuNzQtMS4wMWMtLjQ1LjU5LS45NiAxLjEtMS41NCAxLjU0ek03LjE3IDUuNjRsLTEtMS43NWMtLjg4LjY0LTEuNjQgMS40LTIuMjcgMi4yOGwxLjc0IDEuMDFhNy43IDcuNyAwIDAgMSAxLjUzLTEuNTR6TTUuNjQgMTYuODNsLTEuNzQgMWMuNjMuODcgMS40IDEuNjQgMi4yNyAyLjI3bDEuMDEtMS43NGE3LjcgNy43IDAgMCAxLTEuNTQtMS41M3pNMTMgN2gtMnY1LjQxbDQuMjkgNC4yOSAxLjQxLTEuNDEtMy43LTMuN1Y3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGlzdG9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgM2E5IDkgMCAwIDAtOSA5SDFsMy44OSAzLjg5LjA3LjE0TDkgMTJINmMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3LTMuMTMgNy03IDdjLTEuOTMgMC0zLjY4LS43OS00Ljk0LTIuMDZsLTEuNDIgMS40MkE4Ljk1NCA4Ljk1NCAwIDAgMCAxMyAyMWE5IDkgMCAwIDAgMC0xOHptLTEgNXY1bDQuMjUgMi41Mi43Ny0xLjI4LTMuNTItMi4wOVY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGxzT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuODMgMTVoMS42N2MuNTUgMCAxLS40NSAxLTF2LTEuNWMwLS41NS0uNDUtMS0xLTFIMTd2LTFoMnYuNWgxLjV2LTFjMC0uNTUtLjQ1LTEtMS0xaC0zYy0uNTUgMC0xIC40NS0xIDF2MS41YzAgLjU1LjQ1IDEgMSAxSDE5djFoLTJWMTNoLTEuMTdsMiAyek04IDEwLjgzVjE1SDYuNXYtMi41aC0yVjE1SDNWOWgxLjV2MmgyVjkuMzNMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNDEgMS40MS03LjYtNy42SDEwdi0yLjE3bC0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgOUg4djZINi41di0yLjVoLTJWMTVIM1Y5aDEuNXYyaDJWOXptMTAgNmgzYy41NSAwIDEtLjQ1IDEtMXYtMS41YzAtLjU1LS40NS0xLTEtMUgxN3YtMWgydi41aDEuNXYtMWMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXYxLjVjMCAuNTUuNDUgMSAxIDFIMTl2MWgtMlYxM2gtMS41djFjMCAuNTUuNDUgMSAxIDF6TTE0IDE1di0xLjVoLTIuNVY5SDEwdjZoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDUuNjkgNSA0LjVWMThoLTJ2LTZIOXY2SDd2LTcuODFsNS00LjVNMTIgMyAyIDEyaDN2OGg2di02aDJ2Nmg2di04aDNMMTIgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvcml6b250YWxTcGxpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTV2Mkg1di0yaDE0bTItMTBIM3YyaDE4VjV6bTAgNEgzdjJoMThWOXptMCA0SDN2NmgxOHYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvdGVsQ2xhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMSA4Ljg5Ljk0IDMuMTFoMi44MmwtMi4yNyAxLjYyLjkzIDMuMDFMMTEgMTQuNzlsLTIuNDIgMS44NC45My0zLjAxTDcuMjQgMTJoMi44MkwxMSA4Ljg5ek04LjU4IDEwSDFsNi4xNyA0LjQxTDQuODMgMjIgMTEgMTcuMzEgMTcuMTggMjJsLTIuMzUtNy41OUwyMSAxMGgtNy41OEwxMSAybC0yLjQyIDh6bTEyLjc4IDEyLTEuODYtNi4wMUwyMy42OCAxM2gtMy40NGwtMy4wOCAyLjIgMS40NiA0LjcyTDIxLjM2IDIyek0xNyA4bC0xLjgyLTYtMS4wNCAzLjQ1Ljc3IDIuNTVIMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb3VyZ2xhc3NEaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNGg4djMuNWwtMi44NCAyLjg0IDEuMjUgMS4yNUwxOCA4LjAxIDE3Ljk5IDhIMThWMkg2djEuMTdsMiAyek0yLjEgMi4xLjY5IDMuNTFsOC45IDguOUw2IDE2bC4wMS4wMUg2VjIyaDEydi0xLjE3bDIuNDkgMi40OSAxLjQxLTEuNDFMMi4xIDIuMXpNMTYgMjBIOHYtMy41bDIuODQtMi44NEwxNiAxOC44M1YyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvdXJnbGFzc0VtcHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDJ2NmguMDFMNiA4LjAxIDEwIDEybC00IDQgLjAxLjAxSDZWMjJoMTJ2LTUuOTloLS4wMUwxOCAxNmwtNC00IDQtMy45OS0uMDEtLjAxSDE4VjJINnptMTAgMTQuNVYyMEg4di0zLjVsNC00IDQgNHptLTQtNS00LTRWNGg4djMuNWwtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG91cmdsYXNzRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAydjZoLjAxTDYgOC4wMSAxMCAxMmwtNCA0IC4wMS4wMUg2VjIyaDEydi01Ljk5aC0uMDFMMTggMTZsLTQtNCA0LTMuOTktLjAxLS4wMUgxOFYySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIdG1sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDlINXY2SDMuNXYtMi41aC0yVjE1SDBWOWgxLjV2MmgyVjl6bTE0IDBIMTNjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNXYtNC41aDFWMTRIMTZ2LTMuNTFoMVYxNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xek0xMSA5SDZ2MS41aDEuNzVWMTVoMS41di00LjVIMTFWOXptMTMgNnYtMS41aC0yLjVWOUgyMHY2aDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIdHRwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41IDExaC0yVjlIMXY2aDEuNXYtMi41aDJWMTVINlY5SDQuNXYyem0yLjUtLjVoMS41VjE1SDEwdi00LjVoMS41VjlIN3YxLjV6bTUuNSAwSDE0VjE1aDEuNXYtNC41SDE3VjloLTQuNXYxLjV6bTktMS41SDE4djZoMS41di0yaDJjLjggMCAxLjUtLjcgMS41LTEuNXYtMWMwLS44LS43LTEuNS0xLjUtMS41em0wIDIuNWgtMnYtMWgydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIdHRwcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yek05IDZjMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM3YySDlWNnptOSAxNEg2VjEwaDEydjEwem0tNi0zYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUltcG9ydGFudERldmljZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDExLjAxIDE4IDExYy0uNTUgMC0xIC40NS0xIDF2OWMwIC41NS40NSAxIDEgMWg1Yy41NSAwIDEtLjQ1IDEtMXYtOWMwLS41NS0uNDUtLjk5LTEtLjk5ek0yMyAyMGgtNXYtN2g1djd6TTIwIDJIMkMuODkgMiAwIDIuODkgMCA0djEyYTIgMiAwIDAgMCAyIDJoN3YySDd2Mmg4di0yaC0ydi0yaDJ2LTJIMlY0aDE4djVoMlY0YTIgMiAwIDAgMC0yLTJ6bS04LjAzIDdMMTEgNmwtLjk3IDNIN2wyLjQ3IDEuNzYtLjk0IDIuOTEgMi40Ny0xLjggMi40NyAxLjgtLjk0LTIuOTFMMTUgOWgtMy4wM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluZm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDdoMnYyaC0yem0wIDRoMnY2aC0yem0xLTlDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW5wdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwiLFwib3BhY2l0eVwiOlwiLjg3XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMy4wMUgzYy0xLjEgMC0yIC45LTIgMlY5aDJWNC45OWgxOHYxNC4wM0gzVjE1SDF2NC4wMWMwIDEuMS45IDEuOTggMiAxLjk4aDE4YzEuMSAwIDItLjg4IDItMS45OHYtMTRhMiAyIDAgMCAwLTItMnpNMTEgMTZsNC00LTQtNHYzSDF2MmgxMHYzek0yMSAzLjAxSDNjLTEuMSAwLTIgLjktMiAyVjloMlY0Ljk5aDE4djE0LjAzSDNWMTVIMXY0LjAxYzAgMS4xLjkgMS45OCAyIDEuOThoMThjMS4xIDAgMi0uODggMi0xLjk4di0xNGEyIDIgMCAwIDAtMi0yek0xMSAxNmw0LTQtNC00djNIMXYyaDEwdjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnN0YWxsRGVza3RvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE3SDRWNWg4VjNINGMtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDR2Mmg4di0yaDRjMS4xIDAgMi0uOSAyLTJ2LTNoLTJ2M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgMTQgNS01LTEuNDEtMS40MUwxOCAxMC4xN1YzaC0ydjcuMTdsLTIuNTktMi41OEwxMiA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW5zdGFsbE1vYmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDE4SDdWNmg3VjRIN1YzaDdWMS4wMUw3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJ2LTVoLTJ2MnptMCAzSDd2LTFoMTB2MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggMTQgNS01LTEuNDEtMS40MUwxOSAxMC4xN1YzaC0ydjcuMTdsLTIuNTktMi41OEwxMyA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW50ZWdyYXRpb25JbnN0cnVjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMy41XCIsXCJyXCI6XCIuNzVcIixcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjMuNVwiLFwiclwiOlwiLjc1XCIsXCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTUgMTV2NGgxNFY1SDV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE0LjE3IDguODMgMTIgMTEgOS44MyA5LjU5IDguNDEgNiAxMmwzLjU5IDMuNTl6TTE0LjQxIDE1LjU5IDE4IDEybC0zLjU5LTMuNTlMMTMgOS44MyAxNS4xNyAxMiAxMyAxNC4xN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFzLTIuNC44NC0yLjgyIDJINWMtLjE0IDAtLjI3LjAxLS40LjA0YTIuMDA4IDIuMDA4IDAgMCAwLTEuNDQgMS4xOWMtLjEuMjMtLjE2LjQ5LS4xNi43N3YxNGMwIC4yNy4wNi41NC4xNi43OHMuMjUuNDUuNDMuNjRjLjI3LjI3LjYyLjQ3IDEuMDEuNTUuMTMuMDIuMjYuMDMuNC4wM2gxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNy0uMjVjLjQxIDAgLjc1LjM0Ljc1Ljc1cy0uMzQuNzUtLjc1Ljc1LS43NS0uMzQtLjc1LS43NS4zNC0uNzUuNzUtLjc1ek0xOSAxNXY0SDVWNWgxNHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUludmVydENvbG9ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNC44MVYxOWMtMy4zMSAwLTYtMi42My02LTUuODcgMC0xLjU2LjYyLTMuMDMgMS43NS00LjE0TDEyIDQuODFNMTIgMiA2LjM1IDcuNTZDNC45IDguOTkgNCAxMC45NiA0IDEzLjEzIDQgMTcuNDggNy41OCAyMSAxMiAyMXM4LTMuNTIgOC03Ljg3YzAtMi4xNy0uOS00LjE0LTIuMzUtNS41N0wxMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSmF2YXNjcmlwdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE0di0xaDEuNXYuNWgydi0xSDEzYy0uNTUgMC0xLS40NS0xLTFWMTBjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MWgtMS41di0uNWgtMnYxSDE2Yy41NSAwIDEgLjQ1IDEgMVYxNGMwIC41NS0uNDUgMS0xIDFoLTNjLS41NSAwLTEtLjQ1LTEtMXpNOSA5djQuNUg3LjV2LTFINnYxYzAgLjgzLjY3IDEuNSAxLjUgMS41SDljLjgzIDAgMS41LS42NyAxLjUtMS41VjlIOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUpvaW5GdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImVsbGlwc2VcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwicnhcIjpcIjNcIixcInJ5XCI6XCI1Ljc0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxMmMwLS45Ny4yMy00LjE2IDMuMDMtNi41QzkuNzUgNS4xOSA4LjkgNSA4IDVjLTMuODYgMC03IDMuMTQtNyA3czMuMTQgNyA3IDdjLjkgMCAxLjc1LS4xOSAyLjUzLS41LTIuOC0yLjM0LTMuMDMtNS41My0zLjAzLTYuNXpNMTYgNWMtLjkgMC0xLjc1LjE5LTIuNTMuNSAyLjggMi4zNCAzLjAzIDUuNTMgMy4wMyA2LjUgMCAuOTctLjIzIDQuMTYtMy4wMyA2LjUuNzguMzEgMS42My41IDIuNTMuNSAzLjg2IDAgNy0zLjE0IDctN3MtMy4xNC03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUpvaW5Jbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJlbGxpcHNlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJ4XCI6XCIzXCIsXCJyeVwiOlwiNS43NFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjA0IDE2Ljg3Yy0uMzMuMDgtLjY4LjEzLTEuMDQuMTMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNWMuMzYgMCAuNzEuMDUgMS4wNC4xMy4zOS0uNTYuODgtMS4xMiAxLjQ5LTEuNjNDOS43NSA1LjE5IDguOSA1IDggNWMtMy44NiAwLTcgMy4xNC03IDdzMy4xNCA3IDcgN2MuOSAwIDEuNzUtLjE5IDIuNTMtLjUtLjYxLS41MS0xLjEtMS4wNy0xLjQ5LTEuNjN6TTE2IDVjLS45IDAtMS43NS4xOS0yLjUzLjUuNjEuNTEgMS4xIDEuMDcgMS40OSAxLjYzLjMzLS4wOC42OC0uMTMgMS4wNC0uMTMgMi43NiAwIDUgMi4yNCA1IDVzLTIuMjQgNS01IDVjLS4zNiAwLS43MS0uMDUtMS4wNC0uMTMtLjM5LjU2LS44OCAxLjEyLTEuNDkgMS42My43OC4zMSAxLjYzLjUgMi41My41IDMuODYgMCA3LTMuMTQgNy03cy0zLjE0LTctNy03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSm9pbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiZWxsaXBzZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyeFwiOlwiM1wiLFwicnlcIjpcIjUuNzRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDEyYzAtLjk3LjIzLTQuMTYgMy4wMy02LjVDOS43NSA1LjE5IDguOSA1IDggNWMtMy44NiAwLTcgMy4xNC03IDdzMy4xNCA3IDcgN2MuOSAwIDEuNzUtLjE5IDIuNTMtLjUtMi44LTIuMzQtMy4wMy01LjUzLTMuMDMtNi41ek0xNiA1Yy0uOSAwLTEuNzUuMTktMi41My41LjYxLjUxIDEuMSAxLjA3IDEuNDkgMS42My4zMy0uMDguNjgtLjEzIDEuMDQtLjEzIDIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1Yy0uMzYgMC0uNzEtLjA1LTEuMDQtLjEzLS4zOS41Ni0uODggMS4xMi0xLjQ5IDEuNjMuNzguMzEgMS42My41IDIuNTMuNSAzLjg2IDAgNy0zLjE0IDctN3MtMy4xNC03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUpvaW5SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJlbGxpcHNlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJ4XCI6XCIzXCIsXCJyeVwiOlwiNS43NFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDEyYzAgLjk3LS4yMyA0LjE2LTMuMDMgNi41Ljc4LjMxIDEuNjMuNSAyLjUzLjUgMy44NiAwIDctMy4xNCA3LTdzLTMuMTQtNy03LTdjLS45IDAtMS43NS4xOS0yLjUzLjUgMi44IDIuMzQgMy4wMyA1LjUzIDMuMDMgNi41ek04IDE5Yy45IDAgMS43NS0uMTkgMi41My0uNS0uNjEtLjUxLTEuMS0xLjA3LTEuNDktMS42My0uMzMuMDgtLjY4LjEzLTEuMDQuMTMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNWMuMzYgMCAuNzEuMDUgMS4wNC4xMy4zOS0uNTYuODgtMS4xMiAxLjQ5LTEuNjNDOS43NSA1LjE5IDguOSA1IDggNWMtMy44NiAwLTcgMy4xNC03IDdzMy4xNCA3IDcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxhYmVsSW1wb3J0YW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE4Ljk5aDExYy42NyAwIDEuMjctLjMyIDEuNjMtLjgzTDIxIDEybC00LjM3LTYuMTZDMTYuMjcgNS4zMyAxNS42NyA1IDE1IDVINGw1IDctNSA2Ljk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGFiZWxPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2IDcgMy41NSA1LTEuNjMgMi4yOSAxLjQzIDEuNDNMMjIgMTJsLTQuMzctNi4xNkMxNy4yNyA1LjMzIDE2LjY3IDUgMTYgNWwtNy4zNy4wMSAyIDEuOTlIMTZ6TTIgNC4wM2wxLjU4IDEuNThDMy4yMiA1Ljk2IDMgNi40NiAzIDd2MTBjMCAxLjEuOSAxLjk5IDIgMS45OUwxNiAxOWMuMjggMCAuNTUtLjA3Ljc5LS4xOEwxOC45NyAyMWwxLjQxLTEuNDFMMy40MSAyLjYyIDIgNC4wM3pNMTQuOTcgMTdINVY3LjAzTDE0Ljk3IDE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGFiZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjYzIDUuODRDMTcuMjcgNS4zMyAxNi42NyA1IDE2IDVMNSA1LjAxQzMuOSA1LjAxIDMgNS45IDMgN3YxMGMwIDEuMS45IDEuOTkgMiAxLjk5TDE2IDE5Yy42NyAwIDEuMjctLjMzIDEuNjMtLjg0TDIyIDEybC00LjM3LTYuMTZ6TTE2IDE3SDVWN2gxMWwzLjU1IDVMMTYgMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMYW5ndWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnptNi45MyA2aC0yLjk1YTE1LjY1IDE1LjY1IDAgMCAwLTEuMzgtMy41NkE4LjAzIDguMDMgMCAwIDEgMTguOTIgOHpNMTIgNC4wNGMuODMgMS4yIDEuNDggMi41MyAxLjkxIDMuOTZoLTMuODJjLjQzLTEuNDMgMS4wOC0yLjc2IDEuOTEtMy45NnpNNC4yNiAxNEM0LjEgMTMuMzYgNCAxMi42OSA0IDEycy4xLTEuMzYuMjYtMmgzLjM4Yy0uMDguNjYtLjE0IDEuMzItLjE0IDJzLjA2IDEuMzQuMTQgMkg0LjI2em0uODIgMmgyLjk1Yy4zMiAxLjI1Ljc4IDIuNDUgMS4zOCAzLjU2QTcuOTg3IDcuOTg3IDAgMCAxIDUuMDggMTZ6bTIuOTUtOEg1LjA4YTcuOTg3IDcuOTg3IDAgMCAxIDQuMzMtMy41NkExNS42NSAxNS42NSAwIDAgMCA4LjAzIDh6TTEyIDE5Ljk2Yy0uODMtMS4yLTEuNDgtMi41My0xLjkxLTMuOTZoMy44MmMtLjQzIDEuNDMtMS4wOCAyLjc2LTEuOTEgMy45NnpNMTQuMzQgMTRIOS42NmMtLjA5LS42Ni0uMTYtMS4zMi0uMTYtMnMuMDctMS4zNS4xNi0yaDQuNjhjLjA5LjY1LjE2IDEuMzIuMTYgMnMtLjA3IDEuMzQtLjE2IDJ6bS4yNSA1LjU2Yy42LTEuMTEgMS4wNi0yLjMxIDEuMzgtMy41NmgyLjk1YTguMDMgOC4wMyAwIDAgMS00LjMzIDMuNTZ6TTE2LjM2IDE0Yy4wOC0uNjYuMTQtMS4zMi4xNC0ycy0uMDYtMS4zNC0uMTQtMmgzLjM4Yy4xNi42NC4yNiAxLjMxLjI2IDJzLS4xIDEuMzYtLjI2IDJoLTMuMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMYXVuY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5SDVWNWg3VjNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTdoLTJ2N3pNMTQgM3YyaDMuNTlsLTkuODMgOS44MyAxLjQxIDEuNDFMMTkgNi40MVYxMGgyVjNoLTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMZWFkZXJib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDExVjNIOHY2SDJ2MTJoMjBWMTFoLTZ6bS02LTZoNHYxNGgtNFY1em0tNiA2aDR2OEg0di04em0xNiA4aC00di02aDR2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpZ2h0YnVsYkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxOWMuODMgMCAxLjUtLjY3IDEuNS0xLjVoLTNjMCAuODMuNjcgMS41IDEuNSAxLjV6TTkgMTVoNnYxLjVIOXpNMTIgNWMtMi43NiAwLTUgMi4yNC01IDUgMCAxLjY0LjggMy4wOSAyLjAzIDRoNS45NUE0Ljk4NSA0Ljk4NSAwIDAgMCAxNyAxMGMwLTIuNzYtMi4yNC01LTUtNXptMi40MyA3LjVIOS41N0EzLjQ3MyAzLjQ3MyAwIDAgMSA4LjUgMTBjMC0xLjkzIDEuNTctMy41IDMuNS0zLjVzMy41IDEuNTcgMy41IDMuNWMwIC45NS0uMzkgMS44NC0xLjA3IDIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpZ2h0YnVsYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMjFjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTFIOXYxem0zLTE5QzguMTQgMiA1IDUuMTQgNSA5YzAgMi4zOCAxLjE5IDQuNDcgMyA1Ljc0VjE3YzAgLjU1LjQ1IDEgMSAxaDZjLjU1IDAgMS0uNDUgMS0xdi0yLjI2YzEuODEtMS4yNyAzLTMuMzYgMy01Ljc0IDAtMy44Ni0zLjE0LTctNy03em0yLjg1IDExLjEtLjg1LjZWMTZoLTR2LTIuM2wtLjg1LS42QTQuOTk3IDQuOTk3IDAgMCAxIDcgOWMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMS42My0uOCAzLjE2LTIuMTUgNC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGluZVN0eWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNmg1di0ySDN2MnptNi41IDBoNXYtMmgtNXYyem02LjUgMGg1di0yaC01djJ6TTMgMjBoMnYtMkgzdjJ6bTQgMGgydi0ySDd2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnpNMyAxMmg4di0ySDN2MnptMTAgMGg4di0yaC04djJ6TTMgNHY0aDE4VjRIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpbmVXZWlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE3aDE4di0ySDN2MnptMCAzaDE4di0xSDN2MXptMC03aDE4di0zSDN2M3ptMC05djRoMThWNEgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzaDJ2LTJIM3Yyem0wIDRoMnYtMkgzdjJ6bTAtOGgyVjdIM3Yyem00IDRoMTR2LTJIN3Yyem0wIDRoMTR2LTJIN3Yyek03IDd2MmgxNFY3SDd6bS00IDZoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMC04aDJWN0gzdjJ6bTQgNGgxNHYtMkg3djJ6bTAgNGgxNHYtMkg3djJ6TTcgN3YyaDE0VjdIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2tDbG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAyMFYxMGgxMnYxYy43IDAgMS4zNy4xIDIgLjI5VjEwYzAtMS4xLS45LTItMi0yaC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNnYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoNi4yNmMtLjQyLS42LS43NS0xLjI4LS45Ny0ySDZ6TTkgNmMwLTEuNjYgMS4zNC0zIDMtM3MzIDEuMzQgMyAzdjJIOVY2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTEuNjUgNy4zNUwxNy41IDE4LjJWMTVoMXYyLjc5bDEuODUgMS44NS0uNy43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2tPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA4aC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNmgyYzAtMS42NiAxLjM0LTMgMy0zczMgMS4zNCAzIDN2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yem0wIDEySDZWMTBoMTJ2MTB6bS02LTNjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9ja1BlcnNvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMjBWMTBoMTJ2MWMuNyAwIDEuMzcuMSAyIC4yOVYxMGMwLTEuMS0uOS0yLTItMmgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDYuMjZjLS40Mi0uNi0uNzUtMS4yOC0uOTctMkg2ek05IDZjMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM3YySDlWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0wIDJjLjgzIDAgMS41LjY3IDEuNSAxLjVTMTguODMgMTggMTggMThzLTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNXptMCA2Yy0xLjAzIDAtMS45NC0uNTItMi40OC0xLjMyLjczLS40MiAxLjU3LS42OCAyLjQ4LS42OHMxLjc1LjI2IDIuNDguNjhjLS41NC44LTEuNDUgMS4zMi0yLjQ4IDEuMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NrUmVzZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzYTkgOSAwIDAgMC05IDljMCAuMDYuMDEuMTIuMDEuMTlsLTEuODQtMS44NC0xLjQxIDEuNDFMNSAxNmw0LjI0LTQuMjQtMS40MS0xLjQxLTEuODIgMS44MmMwLS4wNi0uMDEtLjExLS4wMS0uMTcgMC0zLjg2IDMuMTQtNyA3LTdzNyAzLjE0IDcgNy0zLjE0IDctNyA3Yy0xLjkgMC0zLjYyLS43Ni00Ljg4LTEuOTlMNi43IDE4LjQyQTguOTgyIDguOTgyIDAgMCAwIDEzIDIxYTkgOSAwIDAgMCAwLTE4em0yIDh2LTFjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXptLTEgMGgtMnYtMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwiLFwib3BhY2l0eVwiOlwiLjg3XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yek05IDZjMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM3YySDlWNnptOSAxNEg2VjEwaDEydjEwem0tNi0zYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvZ2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNyA5LjYgOC40bDIuNiAyLjZIMnYyaDEwLjJsLTIuNiAyLjZMMTEgMTdsNS01LTUtNXptOSAxMmgtOHYyaDhjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMmgtOHYyaDh2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2dvdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3IDgtMS40MSAxLjQxTDE3LjE3IDExSDl2Mmg4LjE3bC0xLjU4IDEuNThMMTcgMTZsNC00LTQtNHpNNSA1aDdWM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDd2LTJINVY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG95YWx0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNDEgMTEuNTgtOS05QzEyLjA1IDIuMjIgMTEuNTUgMiAxMSAySDRjLTEuMSAwLTIgLjktMiAydjdjMCAuNTUuMjIgMS4wNS41OSAxLjQybDkgOWMuMzYuMzYuODYuNTggMS40MS41OHMxLjA1LS4yMiAxLjQxLS41OWw3LTdjLjM3LS4zNi41OS0uODYuNTktMS40MXMtLjIzLTEuMDYtLjU5LTEuNDJ6TTEzIDIwLjAxIDQgMTFWNGg3di0uMDFsOSA5LTcgNy4wMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2LjVcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjkgMTIuNTVjMCAuNTcuMjMgMS4wNy42IDEuNDVsMy41IDMuNSAzLjUtMy41YTIuMDUzIDIuMDUzIDAgMCAwLTIuOS0yLjlsLS42LjYtLjYtLjU5Yy0uMzctLjM4LS44OS0uNjEtMS40NS0uNjEtMS4xMyAwLTIuMDUuOTItMi4wNSAyLjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFuYWdlQWNjb3VudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTh2LS42NWMwLS4zNC4xNi0uNjYuNDEtLjgxQzYuMSAxNS41MyA4LjAzIDE1IDEwIDE1Yy4wMyAwIC4wNSAwIC4wOC4wMS4xLS43LjMtMS4zNy41OS0xLjk4LS4yMi0uMDItLjQ0LS4wMy0uNjctLjAzLTIuNDIgMC00LjY4LjY3LTYuNjEgMS44Mi0uODguNTItMS4zOSAxLjUtMS4zOSAyLjUzVjIwaDkuMjZjLS40Mi0uNi0uNzUtMS4yOC0uOTctMkg0ek0xMCAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6TTIwLjc1IDE2YzAtLjIyLS4wMy0uNDItLjA2LS42M2wxLjE0LTEuMDEtMS0xLjczLTEuNDUuNDljLS4zMi0uMjctLjY4LS40OC0xLjA4LS42M0wxOCAxMWgtMmwtLjMgMS40OWMtLjQuMTUtLjc2LjM2LTEuMDguNjNsLTEuNDUtLjQ5LTEgMS43MyAxLjE0IDEuMDFjLS4wMy4yMS0uMDYuNDEtLjA2LjYzcy4wMy40Mi4wNi42M2wtMS4xNCAxLjAxIDEgMS43MyAxLjQ1LS40OWMuMzIuMjcuNjguNDggMS4wOC42M0wxNiAyMWgybC4zLTEuNDljLjQtLjE1Ljc2LS4zNiAxLjA4LS42M2wxLjQ1LjQ5IDEtMS43My0xLjE0LTEuMDFjLjAzLS4yMS4wNi0uNDEuMDYtLjYzek0xNyAxOGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYW5hZ2VIaXN0b3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuNjkgMTguMzcgMS4xNC0xLTEtMS43My0xLjQ1LjQ5Yy0uMzItLjI3LS42OC0uNDgtMS4wOC0uNjNMMjAgMTRoLTJsLS4zIDEuNDljLS40LjE1LS43Ni4zNi0xLjA4LjYzbC0xLjQ1LS40OS0xIDEuNzMgMS4xNCAxYy0uMDguNS0uMDguNzYgMCAxLjI2bC0xLjE0IDEgMSAxLjczIDEuNDUtLjQ5Yy4zMi4yNy42OC40OCAxLjA4LjYzTDE4IDI0aDJsLjMtMS40OWMuNC0uMTUuNzYtLjM2IDEuMDgtLjYzbDEuNDUuNDkgMS0xLjczLTEuMTQtMWMuMDgtLjUxLjA4LS43NyAwLTEuMjd6TTE5IDIxYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpNMTEgN3Y1LjQxbDIuMzYgMi4zNiAxLjA0LTEuNzktMS40LTEuMzlWN2gtMnptMTAgNWE5IDkgMCAwIDAtOS05QzkuMTcgMyA2LjY1IDQuMzIgNSA2LjM2VjRIM3Y2aDZWOEg2LjI2QTcuMDEgNy4wMSAwIDAgMSAxMiA1YzMuODYgMCA3IDMuMTQgNyA3aDJ6bS0xMC4xNCA2LjkxYy0yLjk5LS40OS01LjM1LTIuOS01Ljc4LTUuOTFIMy4wNmMuNSA0LjUgNC4zMSA4IDguOTQgOGguMDdsLTEuMjEtMi4wOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hcmtBc1VucmVhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMjMgN2gyLjZjLS4wNi0uNDctLjM2LS45NC0uNzktMS4xN0wxMC41IDIgMi44IDUuODNjLS40OC4yNi0uOC44MS0uOCAxLjM0VjE1YzAgMS4xLjkgMiAyIDJWNy40TDEwLjUgNGw1LjczIDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDhIN2MtMS4xIDAtMiAuOS0yIDJ2OWMwIDEuMS45IDIgMiAyaDEzYzEuMSAwIDItLjkgMi0ydi05YzAtMS4xLS45LTItMi0yem0wIDExSDd2LTdsNi41IDMuMzNMMjAgMTJ2N3ptLTYuNS01LjY3TDcgMTBoMTNsLTYuNSAzLjMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFya3VucmVhZE1haWxib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2SDEwdjJoMTB2MTJINFY4aDJ2NGgyVjRoNlYwSDZ2Nkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYXhpbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzaDE4djJIM1YzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVkaWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggMTYgNC00LTQtNHYzaC01LjA2QTguOTc0IDguOTc0IDAgMCAwIDggMy45NSAzLjAwNSAzLjAwNSAwIDAgMCA1IDFDMy4zNCAxIDIgMi4zNCAyIDRzMS4zNCAzIDMgM2MuOTUgMCAxLjc4LS40NSAyLjMzLTEuMTRDOS4yMyA2LjkgMTAuNiA4Ljc3IDEwLjkyIDExaC0zLjFDNy40IDkuODQgNi4zIDkgNSA5Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzYzEuMyAwIDIuNC0uODQgMi44Mi0yaDMuMWMtLjMyIDIuMjMtMS42OSA0LjEtMy41OCA1LjE0QzYuNzggMTcuNDUgNS45NSAxNyA1IDE3Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzYTIuOTkgMi45OSAwIDAgMCAyLjk5LTIuOTVBOC45NzQgOC45NzQgMCAwIDAgMTIuOTMgMTNIMTh2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1pbmltaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE5aDEydjJINnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vZGVsVHJhaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDEzLjVjMCAyLTIuNSAzLjUtMi41IDVoLTJjMC0xLjUtMi41LTMtMi41LTUgMC0xLjkzIDEuNTctMy41IDMuNS0zLjVzMy41IDEuNTcgMy41IDMuNXptLTIuNSA2aC0yVjIxaDJ2LTEuNXptNi02LjVjMCAxLjY4LS41OSAzLjIxLTEuNTggNC40MmwxLjQyIDEuNDJhOC45NzggOC45NzggMCAwIDAtMS0xMi42OGwtMS40MiAxLjQyQTYuOTkzIDYuOTkzIDAgMCAxIDE5IDEzem0tMy04LTQtNHYzYTkgOSAwIDAgMC05IDljMCAyLjIzLjgyIDQuMjcgMi4xNiA1Ljg0bDEuNDItMS40MkE2LjkzOCA2LjkzOCAwIDAgMSA1IDEzYzAtMy44NiAzLjE0LTcgNy03djNsNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmV0d29ya1BpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNC42NyAzLjQxIDYuMDkgMiA3LjVsOC41IDguNUg0djJoMTZ2LTJoLTYuNWw1LjE1LTUuMTVBMi41IDIuNSAwIDEgMCAxOS41IDYgMi41IDIuNSAwIDAgMCAxNyA4LjVjMCAuMzUuMDcuNjcuMi45N2wtNS4yIDUuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5ld0xhYmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEgMTItNC4zNyA2LjE2Yy0uMzcuNTItLjk4Ljg0LTEuNjMuODRoLTN2LTJoM2wzLjU1LTVMMTUgN0g1djNIM1Y3YzAtMS4xLjktMiAyLTJoMTBjLjY1IDAgMS4yNi4zMSAxLjYzLjg0TDIxIDEyem0tMTEgM0g3di0zSDV2M0gydjJoM3YzaDJ2LTNoM3YtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5leHRQbGFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ljk3IDExLjAzQzE0Ljg3IDkuNzkgMTMuMjggOSAxMS41IDljLTIuODIgMC01LjE4IDEuOTUtNS44MiA0LjU2bC45Ni4zMkM3LjE1IDExLjY2IDkuMTMgMTAgMTEuNSAxMGMxLjUxIDAgMi44NS42OCAzLjc2IDEuNzRMMTMgMTRoNVY5bC0yLjAzIDIuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOaWdodGxpZ2h0Um91bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDIyYzEuMDUgMCAyLjA1LS4xNiAzLS40Ni00LjA2LTEuMjctNy01LjA2LTctOS41NHMyLjk0LTguMjcgNy05LjU0Yy0uOTUtLjMtMS45NS0uNDYtMy0uNDYtNS41MiAwLTEwIDQuNDgtMTAgMTBzNC40OCAxMCAxMCAxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vQWNjb3VudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4xOCAxMC45NGMuMi0uNDQuMzItLjkyLjMyLTEuNDRDMTUuNSA3LjU3IDEzLjkzIDYgMTIgNmMtLjUyIDAtMSAuMTItMS40NC4zMmw0LjYyIDQuNjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTQgMTJjMC0xLjg1LjYzLTMuNTUgMS42OS00LjlsMi44NiAyLjg2YTMuNDcgMy40NyAwIDAgMCAyLjk5IDIuOTlsMi4yIDIuMmMtLjU3LS4xLTEuMTUtLjE1LTEuNzQtLjE1LTIuMzIgMC00LjQ1LjgtNi4xNCAyLjEyQTcuOTU3IDcuOTU3IDAgMCAxIDQgMTJ6bTggOGMtMS43NCAwLTMuMzQtLjU2LTQuNjUtMS41QzguNjYgMTcuNTYgMTAuMjYgMTcgMTIgMTdzMy4zNC41NiA0LjY1IDEuNWMtMS4zMS45NC0yLjkxIDEuNS00LjY1IDEuNXptNi4zMS0zLjFMNy4xIDUuNjlBNy45MDIgNy45MDIgMCAwIDEgMTIgNGM0LjQyIDAgOCAzLjU4IDggOCAwIDEuODUtLjYzIDMuNTQtMS42OSA0Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb2lzZUF3YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTVoLTJhMS4wMDMgMS4wMDMgMCAwIDEtMS45NS4zMmMtLjE1LS40NC0uNC0xLjA4LS45My0xLjYxbC0xLjM2LTEuMzZDOS4yOCAxMS44NyA5IDExLjE5IDkgMTAuNWEyLjUgMi41IDAgMCAxIDQuOTUtLjVoMi4wMmMtLjI1LTIuMjUtMi4xNi00LTQuNDctNEM5LjAyIDYgNyA4LjAyIDcgMTAuNWMwIDEuMjIuNDkgMi40MSAxLjM1IDMuMjdsMS4zNiAxLjM2Yy4xNy4xNy4zMS40NC40NC44MkEzLjAxMyAzLjAxMyAwIDAgMCAxMyAxOGMxLjY1IDAgMy0xLjM1IDMtM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMy41XCIsXCJjeVwiOlwiMTIuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMuNiA2LjU4IDEuNTggMS4yNmMuMzUtLjU3Ljc3LTEuMSAxLjI0LTEuNTdMNC44NSA1LjAyYy0uNDcuNDctLjg4IDEtMS4yNSAxLjU2ek05LjQ2IDQuNDJsLS44Ny0xLjgxYy0uNjMuMjMtMS4yNC41Mi0xLjguODdsLjg3IDEuODFjLjU2LS4zNiAxLjE2LS42NSAxLjgtLjg3ek00LjQ5IDkuMjZsLTEuOTYtLjQ1Yy0uMjEuNjMtLjM2IDEuMjgtLjQ0IDEuOTVsMS45Ni40NWE3LjkgNy45IDAgMCAxIC40NC0xLjk1ek0yMC40IDYuNThhOS40IDkuNCAwIDAgMC0xLjI1LTEuNTZsLTEuNTggMS4yNmMuNDguNDcuODkuOTkgMS4yNCAxLjU3bDEuNTktMS4yN3pNNC4wNCAxMi43OWwtMS45Ni40NWMuMDguNjcuMjMgMS4zMy40NCAxLjk1bDEuOTctLjQ1Yy0uMjItLjYyLS4zOC0xLjI3LS40NS0xLjk1ek0xNy4yMSAzLjQ4Yy0uNTctLjM1LTEuMTctLjY0LTEuOC0uODdsLS44NyAxLjgxYy42NC4yMiAxLjI0LjUxIDEuOC44N2wuODctMS44MXpNMTMgNC4wN1YyLjA1Yy0uMzMtLjAzLS42Ni0uMDUtMS0uMDVzLS42Ny4wMi0xIC4wNXYyLjAyYy4zMy0uMDQuNjYtLjA3IDEtLjA3cy42Ny4wMyAxIC4wN3pNMTEgMTkuOTN2Mi4wMmMuMzMuMDMuNjYuMDUgMSAuMDVzLjY3LS4wMiAxLS4wNXYtMi4wMmMtLjMzLjA0LS42Ni4wNy0xIC4wN3MtLjY3LS4wMy0xLS4wN3pNMTkuNTEgMTQuNzRsMS45Ny40NWMuMjEtLjYzLjM2LTEuMjguNDQtMS45NWwtMS45Ni0uNDVjLS4wNy42OC0uMjMgMS4zMy0uNDUgMS45NXpNMTkuOTYgMTEuMjFsMS45Ni0uNDVhOS42OSA5LjY5IDAgMCAwLS40NC0xLjk1bC0xLjk3LjQ1Yy4yMi42Mi4zOCAxLjI3LjQ1IDEuOTV6TTE3LjU4IDE3LjczbDEuNTggMS4yNmMuNDctLjQ4Ljg4LTEgMS4yNS0xLjU2bC0xLjU4LTEuMjZhOS40IDkuNCAwIDAgMS0xLjI1IDEuNTZ6TTYuNzkgMjAuNTJjLjU3LjM1IDEuMTcuNjQgMS44Ljg3bC44Ny0xLjgxYy0uNjQtLjIyLTEuMjQtLjUxLTEuOC0uODdsLS44NyAxLjgxek0xNC41NCAxOS41OGwuODcgMS44MWMuNjMtLjIzIDEuMjQtLjUyIDEuOC0uODdsLS44Ny0xLjgxYy0uNTYuMzYtMS4xNi42NS0xLjguODd6TTMuNiAxNy40MmE5LjQgOS40IDAgMCAwIDEuMjUgMS41NmwxLjU4LTEuMjZhNy44NyA3Ljg3IDAgMCAxLTEuMjQtMS41N0wzLjYgMTcuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb2lzZUNvbnRyb2xPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzEuNDQgMCAyLjc5LjM4IDMuOTUgMS4wNUwxNy40IDMuNkMxNS44NSAyLjU5IDEzLjk5IDIgMTIgMnMtMy44NS41OS01LjQxIDEuNTlsMS40NSAxLjQ1QTguMDM0IDguMDM0IDAgMCAxIDEyIDR6TTIwIDEyYzAgMS40NC0uMzggMi43OS0xLjA1IDMuOTVsMS40NSAxLjQ1YzEuMDEtMS41NSAxLjYtMy40MSAxLjYtNS40cy0uNTktMy44NS0xLjU5LTUuNDFsLTEuNDUgMS40NUE4LjAzNCA4LjAzNCAwIDAgMSAyMCAxMnpNMTIgMjBjLTEuNDQgMC0yLjc5LS4zOC0zLjk1LTEuMDVMNi42IDIwLjRDOC4xNSAyMS40MSAxMC4wMSAyMiAxMiAyMnMzLjg1LS41OSA1LjQxLTEuNTlsLTEuNDUtMS40NUE4LjAzNCA4LjAzNCAwIDAgMSAxMiAyMHpNNCAxMmMwLTEuNDQuMzgtMi43OSAxLjA1LTMuOTVMMy41OSA2LjU5QzIuNTkgOC4xNSAyIDEwLjAxIDIgMTJzLjU5IDMuODUgMS41OSA1LjQxbDEuNDUtMS40NUE4LjAzNCA4LjAzNCAwIDAgMSA0IDEyek0xMS41IDZDOS4wMiA2IDcgOC4wMiA3IDEwLjVjMCAxLjIyLjQ5IDIuNDEgMS4zNSAzLjI3bDEuMzYgMS4zNmMuMTcuMTcuMzEuNDQuNDQuODJBMy4wMTMgMy4wMTMgMCAwIDAgMTMgMThjMS42NSAwIDMtMS4zNSAzLTNoLTJhMS4wMDMgMS4wMDMgMCAwIDEtMS45NS4zMmMtLjE1LS40NC0uNC0xLjA4LS45My0xLjYxbC0xLjM2LTEuMzZDOS4yOCAxMS44NyA5IDExLjE5IDkgMTAuNWEyLjUgMi41IDAgMCAxIDQuOTUtLjVoMi4wMmMtLjI1LTIuMjUtMi4xNi00LTQuNDctNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMy41XCIsXCJjeVwiOlwiMTIuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RBY2Nlc3NpYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgNGMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem05IDl2LTJjLTEuNTQuMDItMy4wOS0uNzUtNC4wNy0xLjgzbC0xLjI5LTEuNDNjLS4yNC0uMjQtLjQ0LS4zNi0uNjMtLjQ2LS4zNi0uMTktLjcyLS4zLTEuMi0uMjYtLjQ5LjA0LS45MS4yNy0xLjIzLjYxTDE0IDExLjA1YzEuMjkgMS4wNyAzLjI1IDEuOTQgNSAxLjk1em0tOSA3Yy0xLjY2IDAtMy0xLjM0LTMtMyAwLTEuMzEuODQtMi40MSAyLTIuODNWMTIuMWE1IDUgMCAxIDAgNS45IDUuOWgtMi4wN2MtLjQxIDEuMTYtMS41MiAyLTIuODMgMnpNMi44MSAyLjgxIDEuMzkgNC4yMiAxMCAxMi44M1YxNWMwIDEuMS45IDIgMiAyaDIuMTdsNS42MSA1LjYxIDEuNDEtMS40MUwyLjgxIDIuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RTdGFydGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LThtMC0yQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMSA2SDl2OGgyVjh6bTYgNC01LTR2OGw1LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RlQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMWgtMnYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zem0xLTlINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em00IDE4SDZWNGg3djVoNXYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU9mZmxpbmVCb2x0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMi4wMmMtNS41MSAwLTkuOTggNC40Ny05Ljk4IDkuOThzNC40NyA5Ljk4IDkuOTggOS45OCA5Ljk4LTQuNDcgOS45OC05Ljk4UzE3LjUxIDIuMDIgMTIgMi4wMnptMCAxNy45NmMtNC40IDAtNy45OC0zLjU4LTcuOTgtNy45OFM3LjYgNC4wMiAxMiA0LjAyIDE5Ljk4IDcuNiAxOS45OCAxMiAxNi40IDE5Ljk4IDEyIDE5Ljk4ek0xMi43NSA1bC00LjUgOC41aDMuMTRWMTlsNC4zNi04LjVoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVPZmZsaW5lUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0tNS01aDEwdjJIN3ptMy4zLTMuOEw4LjQgOS4zIDcgMTAuN2wzLjMgMy4zTDE3IDcuM2wtMS40LTEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU9uRGV2aWNlVHJhaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNmgydjFoLTJ6TTEyIDExYy0xLjEgMC0yIC45LTIgMiAwIC43NC40IDEuMzggMSAxLjcydi43OGgydi0uNzhjLjYtLjM1IDEtLjk4IDEtMS43MiAwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMS4wMSA2IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTggMjFINnYtMWgxMnYxem0wLTNINlY2aDEydjEyem0wLTE0SDZWM2gxMnYxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4wMSAxNS45NWMuNjItLjgzLjk5LTEuODQuOTktMi45NXMtLjM3LTIuMTItLjk5LTIuOTVsLTEuMDcgMS4wN2MuMzUuNTQuNTYgMS4xOS41NiAxLjg4cy0uMjEgMS4zNC0uNTYgMS44OGwxLjA3IDEuMDd6TTkuMDYgMTQuODhjLS4zNS0uNTQtLjU2LTEuMTktLjU2LTEuODggMC0xLjkzIDEuNTctMy41IDMuNS0zLjV2MS4yNWwyLjI1LTItMi4yNS0yVjhjLTIuNzYgMC01IDIuMjQtNSA1IDAgMS4xMS4zNyAyLjEyLjk5IDIuOTVsMS4wNy0xLjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT25saW5lUHJlZGljdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTEuNWMwIDItMi41IDMuNS0yLjUgNWgtMmMwLTEuNS0yLjUtMy0yLjUtNUM4LjUgOS41NyAxMC4wNyA4IDEyIDhzMy41IDEuNTcgMy41IDMuNXptLTIuNSA2aC0yVjE5aDJ2LTEuNXptOS01LjVjMC0yLjc2LTEuMTItNS4yNi0yLjkzLTcuMDdsLTEuMDYgMS4wNkE4LjQ4MSA4LjQ4MSAwIDAgMSAyMC41IDEyYzAgMi4zNC0uOTUgNC40Ny0yLjQ5IDYuMDFsMS4wNiAxLjA2QTkuOTY5IDkuOTY5IDAgMCAwIDIyIDEyek0zLjUgMTJjMC0yLjM0Ljk1LTQuNDcgMi40OS02LjAxTDQuOTMgNC45M0E5Ljk2OSA5Ljk2OSAwIDAgMCAyIDEyYzAgMi43NiAxLjEyIDUuMjYgMi45MyA3LjA3bDEuMDYtMS4wNkE4LjQ4MSA4LjQ4MSAwIDAgMSAzLjUgMTJ6bTE0IDBjMCAxLjUyLS42MiAyLjg5LTEuNjEgMy44OWwxLjA2IDEuMDZBNi45NzYgNi45NzYgMCAwIDAgMTkgMTJjMC0xLjkzLS43OC0zLjY4LTIuMDUtNC45NWwtMS4wNiAxLjA2Yy45OSAxIDEuNjEgMi4zNyAxLjYxIDMuODl6TTcuMDUgMTYuOTVsMS4wNi0xLjA2Yy0xLTEtMS42MS0yLjM3LTEuNjEtMy44OXMuNjItMi44OSAxLjYxLTMuODlMNy4wNSA3LjA1QTYuOTc2IDYuOTc2IDAgMCAwIDUgMTJjMCAxLjkzLjc4IDMuNjggMi4wNSA0Ljk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT3BhY2l0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMEgwdjI0aDI0VjB6bTAgMEgwdjI0aDI0VjB6TTAgMjRoMjRWMEgwdjI0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy42NiA4IDEyIDIuMzUgNi4zNCA4QTguMDIgOC4wMiAwIDAgMCA0IDEzLjY0YzAgMiAuNzggNC4xMSAyLjM0IDUuNjdhNy45OSA3Ljk5IDAgMCAwIDExLjMyIDBjMS41Ni0xLjU2IDIuMzQtMy42NyAyLjM0LTUuNjdTMTkuMjIgOS41NiAxNy42NiA4ek02IDE0Yy4wMS0yIC42Mi0zLjI3IDEuNzYtNC40TDEyIDUuMjdsNC4yNCA0LjM4QzE3LjM4IDEwLjc3IDE3Ljk5IDEyIDE4IDE0SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVPcGVuSW5Ccm93c2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDR2LTJINVY4aDE0djEwaC00djJoNGMxLjEgMCAyLS45IDItMlY2YTIgMiAwIDAgMC0yLTJ6bS03IDYtNCA0aDN2Nmgydi02aDNsLTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU9wZW5JbkZ1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMVYzaC04bDMuMjkgMy4yOS0xMCAxMEwzIDEzdjhoOGwtMy4yOS0zLjI5IDEwLTEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT3BlbkluTmV3T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNzkgNS44IDE0IDNoN3Y3bC0yLjc5LTIuOC00LjA5IDQuMDktMS40MS0xLjQxIDQuMDgtNC4wOHpNMTkgMTJ2NC4xN2wyIDJWMTJoLTJ6bS43OCAxMC42MUwxOC4xNyAyMUg1YTIgMiAwIDAgMS0yLTJWNS44M0wxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6TTE2LjE3IDE5bC00Ljg4LTQuODgtMS41OSAxLjU5LTEuNDEtMS40MSAxLjU5LTEuNTlMNSA3LjgzVjE5aDExLjE3ek03LjgzIDVIMTJWM0g1LjgzbDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU9wZW5Jbk5ldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTlINVY1aDdWM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU9wZW5XaXRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA5aDRWNmgzbC01LTUtNSA1aDN2M3ptLTEgMUg2VjdsLTUgNSA1IDV2LTNoM3YtNHptMTQgMi01LTV2M2gtM3Y0aDN2M2w1LTV6bS05IDNoLTR2M0g3bDUgNSA1LTVoLTN2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVPdXRib25kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LThtMC0yQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xLjg4IDkuNTRMOC45MiAxNi41bC0xLjQxLTEuNDEgNC45Ni00Ljk2TDEwLjM0IDhsNS42NS4wMS4wMSA1LjY1LTIuMTItMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU91dGJvdW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LThtMC0yQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xLjg4IDkuNTRMOC45MiAxNi41bC0xLjQxLTEuNDEgNC45Ni00Ljk2TDEwLjM0IDhsNS42NS4wMS4wMSA1LjY1LTIuMTItMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU91dGJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDkuODNWMTRoMlY5LjgzbDEuNTkgMS41OEwxNiAxMGwtNC00LTQgNCAxLjQxIDEuNDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDV2LTNoMy4wMmMuOTEgMS4yMSAyLjM1IDIgMy45OCAyczMuMDYtLjc5IDMuOTgtMkgxOXYzem0wLTVoLTQuMThjLS40MSAxLjE2LTEuNTEgMi0yLjgyIDJzLTIuNC0uODQtMi44Mi0ySDVWNWgxNHY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT3V0bGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LThtMC0yQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMiA5VjhjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMXMxLS40NSAxLTF6bTYgMFY4YzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xem0tMiA1YzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYyaDR2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVPdXRwdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNyAxNyA1LTUtNS01LTEuNDEgMS40MUwxOC4xNyAxMUg5djJoOS4xN2wtMi41OCAyLjU5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOUg1VjVoMTR2MmgyVjVhMiAyIDAgMCAwLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YTIgMiAwIDAgMCAyLTJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhZ2V2aWV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS40OSAxNmMuODggMCAxLjctLjI2IDIuMzktLjdsMi40NCAyLjQ0IDEuNDItMS40Mi0yLjQ0LTIuNDNjLjQ0LS43LjctMS41MS43LTIuMzlDMTYgOS4wMSAxMy45OSA3IDExLjUgN1M3IDkuMDEgNyAxMS41IDkuMDEgMTYgMTEuNDkgMTZ6bS4wMS03YTIuNSAyLjUgMCAwIDEgMCA1IDIuNSAyLjUgMCAwIDEgMC01ek0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjZoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYWlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bS44OS04LjljLTEuNzgtLjU5LTIuNjQtLjk2LTIuNjQtMS45IDAtMS4wMiAxLjExLTEuMzkgMS44MS0xLjM5IDEuMzEgMCAxLjc5Ljk5IDEuOSAxLjM0bDEuNTgtLjY3Yy0uMTUtLjQ0LS44Mi0xLjkxLTIuNjYtMi4yM1Y1aC0xLjc1djEuMjZjLTIuNi41Ni0yLjYyIDIuODUtMi42MiAyLjk2IDAgMi4yNyAyLjI1IDIuOTEgMy4zNSAzLjMxIDEuNTguNTYgMi4yOCAxLjA3IDIuMjggMi4wMyAwIDEuMTMtMS4wNSAxLjYxLTEuOTggMS42MS0xLjgyIDAtMi4zNC0xLjg3LTIuNC0yLjA5bC0xLjY2LjY3Yy42MyAyLjE5IDIuMjggMi43OCAzLjAyIDIuOTZWMTloMS43NXYtMS4yNGMuNTItLjA5IDMuMDItLjU5IDMuMDItMy4yMi4wMS0xLjM5LS42LTIuNjEtMy0zLjQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFuVG9vbEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4Ljg5IDExLjc3LTMuOC0xLjY3Yy0uMTMtLjA2LS4yOC0uMS0uNDQtLjFIMTRWNS41YTIuNSAyLjUgMCAwIDAtNSAwdjguMTVsLTEuODctLjRjLS4xOS0uMDMtMS4wMi0uMTUtMS43My41Nkw0IDE1LjIybDUuMTIgNS4xOWMuMzcuMzguODguNTkgMS40MS41OWg2LjU1Yy45OCAwIDEuODEtLjcgMS45Ny0xLjY3bC45Mi01LjQ0YTIgMiAwIDAgMC0xLjA4LTIuMTJ6TTE3LjA4IDE5aC02LjU1bC0zLjctMy43OCA0LjE3Ljg5VjUuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXY2LjE4aDEuNzZMMTggMTMuNTYgMTcuMDggMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYW5Ub29sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMjRoLTYuNTVjLTEuMDggMC0yLjE0LS40NS0yLjg5LTEuMjNsLTcuMy03LjYxIDIuMDctMS44M2MuNjItLjU1IDEuNTMtLjY2IDIuMjYtLjI3TDggMTQuMzRWNC43OWEyLjUgMi41IDAgMCAxIDMuMDEtMi40NUMxMS4xIDEuMDQgMTIuMTguMDEgMTMuNS4wMWMuODYgMCAxLjYxLjQzIDIuMDYgMS4wOS4yOS0uMTIuNjEtLjE4Ljk0LS4xOGEyLjUgMi41IDAgMCAxIDIuNSAyLjV2LjI4YTIuNSAyLjUgMCAwIDEgMyAyLjQ1VjIwYzAgMi4yMS0xLjc5IDQtNCA0ek00LjE0IDE1LjI4bDUuODYgNi4xYy4zOC4zOS45LjYyIDEuNDQuNjJIMThjMS4xIDAgMi0uOSAyLTJWNi4xNWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjVWMTJoLTJWMy40MmMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjVWMTJoLTJWMi41MWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjVWMTJoLTJWNC43OWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIzLS41LjV2MTIuODdsLTUuMzUtMi44My0uNTEuNDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYXltZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0di02aDE2djZ6bTAtMTBINFY2aDE2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZW5kaW5nQWN0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEyYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMS42NSA3LjM1TDE2LjUgMTcuMlYxNGgxdjIuNzlsMS44NSAxLjg1LS43Ljcxek0xOCAzaC0zLjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNWMwIDEuMS45IDIgMiAyaDYuMTFhNi43NDMgNi43NDMgMCAwIDEtMS40Mi0ySDZWNWgydjNoOFY1aDJ2NS4wOGMuNzEuMSAxLjM4LjMxIDIgLjZWNWMwLTEuMS0uOS0yLTItMnptLTYgMmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVuZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjdcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTdcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJjZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDRDNS41NyA0IDQgNS41NyA0IDcuNVM1LjU3IDExIDcuNSAxMSAxMSA5LjQzIDExIDcuNSA5LjQzIDQgNy41IDR6bTAgNUM2LjY3IDkgNiA4LjMzIDYgNy41UzYuNjcgNiA3LjUgNiA5IDYuNjcgOSA3LjUgOC4zMyA5IDcuNSA5em05IDRjLTEuOTMgMC0zLjUgMS41Ny0zLjUgMy41czEuNTcgMy41IDMuNSAzLjUgMy41LTEuNTcgMy41LTMuNS0xLjU3LTMuNS0zLjUtMy41em0wIDVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek01LjQxIDIwIDQgMTguNTkgMTguNTkgNCAyMCA1LjQxIDUuNDEgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJtQ2FtZXJhTWljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2Yy0xLjEgMC0yIC45LTIgMnY0YzAgMS4xLjkgMiAyIDJzMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptOC0xaC0zLjE3bC0xLjg2LTJIOC45Nkw3LjE3IDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE0aC03di0xLjA5YzIuODMtLjQ4IDUtMi45NCA1LTUuOTFoLTJjMCAyLjIxLTEuNzkgNC00IDRzLTQtMS43OS00LTRINmMwIDIuOTcgMi4xNyA1LjQzIDUgNS45MVYxOUg0VjdoNC4yMWwuNTktLjY1TDEwLjA0IDVoNC4yNGwxLjI0IDEuMzUuNTkuNjVIMjB2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJtQ29udGFjdENhbGVuZGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC44NCA0LjIyYy0uMDUtLjEyLS4xMS0uMjMtLjE4LS4zNC0uMTQtLjIxLS4zMy0uNC0uNTQtLjU0LS4xMS0uMDctLjIyLS4xMy0uMzQtLjE4LS4yNC0uMS0uNS0uMTYtLjc4LS4xNmgtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0uNDIgMC0uOC4xMy0xLjEyLjM0LS4yMS4xNC0uNC4zMy0uNTQuNTQtLjA3LjExLS4xMy4yMi0uMTguMzQtLjEuMjQtLjE2LjUtLjE2Ljc4djE0YTIgMiAwIDAgMCAyIDJoMTRjLjI4IDAgLjU0LS4wNi43OC0uMTYuMTItLjA1LjIzLS4xMS4zNC0uMTguMjEtLjE0LjQtLjMzLjU0LS41NC4yMS0uMzIuMzQtLjcxLjM0LTEuMTJWNWMwLS4yOC0uMDYtLjU0LS4xNi0uNzh6TTUgMTlWNWgxNHYxNEg1em03LTYuMTJjLTIuMDMgMC02IDEuMDgtNiAzLjU4VjE4aDEydi0xLjUzYzAtMi41MS0zLjk3LTMuNTktNi0zLjU5ek04LjMxIDE2Yy42OS0uNTYgMi4zOC0xLjEyIDMuNjktMS4xMnMzLjAxLjU2IDMuNjkgMS4xMkg4LjMxek0xMiAxMmMxLjY1IDAgMy0xLjM1IDMtM3MtMS4zNS0zLTMtMy0zIDEuMzUtMyAzIDEuMzUgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVybURhdGFTZXR0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy45OSAxMS41N0gyMFYwTDAgMjBoMTEuNTZ2LTJINC44M0wxNy45OSA0LjgzdjYuNzR6bTUuNzggOC43NS0xLjA3LS44M2MuMDItLjE2LjA0LS4zMi4wNC0uNDkgMC0uMTctLjAxLS4zMy0uMDQtLjQ5bDEuMDYtLjgzYS4yNi4yNiAwIDAgMCAuMDYtLjMybC0xLTEuNzNjLS4wNi0uMTEtLjE5LS4xNS0uMzEtLjExbC0xLjI0LjVjLS4yNi0uMi0uNTQtLjM3LS44NS0uNDlsLS4xOS0xLjMyYy0uMDEtLjEyLS4xMi0uMjEtLjI0LS4yMWgtMmMtLjEyIDAtLjIzLjA5LS4yNS4yMWwtLjE5IDEuMzJjLS4zLjEzLS41OS4yOS0uODUuNDlsLTEuMjQtLjVjLS4xMS0uMDQtLjI0IDAtLjMxLjExbC0xIDEuNzNjLS4wNi4xMS0uMDQuMjQuMDYuMzJsMS4wNi44M2EzLjkwOCAzLjkwOCAwIDAgMCAwIC45OGwtMS4wNi44M2EuMjYuMjYgMCAwIDAtLjA2LjMybDEgMS43M2MuMDYuMTEuMTkuMTUuMzEuMTFsMS4yNC0uNWMuMjYuMi41NC4zNy44NS40OWwuMTkgMS4zMmMuMDIuMTIuMTIuMjEuMjUuMjFoMmMuMTIgMCAuMjMtLjA5LjI1LS4yMWwuMTktMS4zMmMuMy0uMTMuNTktLjI5Ljg0LS40OWwxLjI1LjVjLjExLjA0LjI0IDAgLjMxLS4xMWwxLTEuNzNhLjI2LjI2IDAgMCAwLS4wNi0uMzJ6bS00Ljc4LjE4Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcm1EZXZpY2VJbmZvcm1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgN2gydjJoLTJ6bTAgNGgydjZoLTJ6bTYtOS45OUw3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyek03IDRWM2gxMHYxSDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJtSWRlbnRpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAgOWMyLjcgMCA1LjggMS4yOSA2IDJ2MUg2di0uOTljLjItLjcyIDMuMy0yLjAxIDYtMi4wMW0wLTExQzkuNzkgNCA4IDUuNzkgOCA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDljLTIuNjcgMC04IDEuMzQtOCA0djNoMTZ2LTNjMC0yLjY2LTUuMzMtNC04LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJtTWVkaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNkgwdjVoLjAxTDAgMjBjMCAxLjEuOSAyIDIgMmgxOHYtMkgyVjZ6bTUgOWgxNGwtMy41LTQuNS0yLjUgMy4wMUwxMS41IDl6TTIyIDRoLThsLTItMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDEySDZWNGg1LjE3bDEuNDEgMS40MS41OS41OUgyMnYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcm1QaG9uZU1zZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTUuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTctLjEtLjAzLS4yMS0uMDUtLjMxLS4wNS0uMjYgMC0uNTEuMS0uNzEuMjlsLTIuMiAyLjJhMTUuMDc0IDE1LjA3NCAwIDAgMS02LjU5LTYuNThsMi4yLTIuMjFjLjI4LS4yNy4zNi0uNjYuMjUtMS4wMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNNS4wMyA1aDEuNWMuMDcuODguMjIgMS43NS40NiAyLjU5TDUuNzkgOC44Yy0uNDEtMS4yMS0uNjctMi40OC0uNzYtMy44ek0xOSAxOC45N2MtMS4zMi0uMDktMi42LS4zNS0zLjgtLjc2bDEuMi0xLjJjLjg1LjI0IDEuNzIuMzkgMi42LjQ1djEuNTF6TTEyIDN2MTBsMy0zaDZWM2gtOXptNyA1aC01VjVoNXYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVybVNjYW5XaWZpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzQzYuOTUgMyAzLjE1IDQuODUgMCA3LjIzTDEyIDIyIDI0IDcuMjVDMjAuODUgNC44NyAxNy4wNSAzIDEyIDN6TTIuOTIgNy42NUM1LjggNS44NSA4Ljc0IDUgMTIgNWMzLjI1IDAgNi4xOC44NSA5LjA4IDIuNjdMMTIgMTguODMgMi45MiA3LjY1ek0xMSAxMGgydjZoLTJ6bTAtNGgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjQuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjUuNVwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE5LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4zNCAxNC44NmMtLjg3LTEuMDItMS42LTEuODktMi40OC0yLjkxLS40Ni0uNTQtMS4wNS0xLjA4LTEuNzUtMS4zMi0uMTEtLjA0LS4yMi0uMDctLjMzLS4wOS0uMjUtLjA0LS41Mi0uMDQtLjc4LS4wNHMtLjUzIDAtLjc5LjA1Yy0uMTEuMDItLjIyLjA1LS4zMy4wOS0uNy4yNC0xLjI4Ljc4LTEuNzUgMS4zMi0uODcgMS4wMi0xLjYgMS44OS0yLjQ4IDIuOTEtMS4zMSAxLjMxLTIuOTIgMi43Ni0yLjYyIDQuNzkuMjkgMS4wMiAxLjAyIDIuMDMgMi4zMyAyLjMyLjczLjE1IDMuMDYtLjQ0IDUuNTQtLjQ0aC4xOGMyLjQ4IDAgNC44MS41OCA1LjU0LjQ0IDEuMzEtLjI5IDIuMDQtMS4zMSAyLjMzLTIuMzIuMzEtMi4wNC0xLjMtMy40OS0yLjYxLTQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBocCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDloMS41djZIMTN2LTIuNWgtMlYxNUg5LjVWOUgxMXYyaDJWOXptLTUgMS41djFjMCAuOC0uNyAxLjUtMS41IDEuNWgtMnYySDNWOWgzLjVjLjggMCAxLjUuNyAxLjUgMS41em0tMS41IDBoLTJ2MWgydi0xem0xNSAwdjFjMCAuOC0uNyAxLjUtMS41IDEuNWgtMnYyaC0xLjVWOUgyMGMuOCAwIDEuNS43IDEuNSAxLjV6bS0xLjUgMGgtMnYxaDJ2LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaWN0dXJlSW5QaWN0dXJlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMWgtOHY2aDh2LTZ6bS0yIDRoLTR2LTJoNHYyem00LTEySDNjLTEuMSAwLTIgLjg4LTIgMS45OFYxOWMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjQuOThDMjMgMy44OCAyMi4xIDMgMjEgM3ptMCAxNi4wMkgzVjQuOTdoMTh2MTQuMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaWN0dXJlSW5QaWN0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3aC04djZoOFY3em0tMiA0aC00VjloNHYyem00LThIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAxLjk4IDIgMS45OGgxOGMxLjEgMCAyLS44OCAyLTEuOThWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOThoMTh2MTQuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaW5FbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMlY2SDR2MTJoMTB2Mkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoMTZjMS4xIDAgMiAuOSAyIDJ2NmgtMnptLTEgMmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bS00LjM0LTZIOXY1LjY2aDJ2LTIuMjRsMi45NSAyLjk1IDEuNDEtMS40MUwxMi40MSAxMGgyLjI0Vjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaW5JbnZva2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMnY2YzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjZjMC0xLjEuOS0yIDItMmgxMHYySDR2MTJoMTZ2LTZoMnptMC01YzAtMS42Ni0xLjM0LTMtMy0zcy0zIDEuMzQtMyAzIDEuMzQgMyAzIDMgMy0xLjM0IDMtM3pNOS4zNCAxMmgyLjI0bC0yLjk1IDIuOTUgMS40MSAxLjQxTDEzIDEzLjQydjIuMjRoMlYxMEg5LjM0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaW5jaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMi41VjFoNXY1SDkuNVYzLjU2TDMuNTYgOS41SDZWMTFIMVY2aDEuNXYyLjQ0TDguNDQgMi41SDZ6bTE1Ljg5IDExLjI3LTMuOC0xLjY3Yy0uMTMtLjA2LS4yOC0uMS0uNDQtLjFIMTdWNy41YTIuNSAyLjUgMCAwIDAtNSAwdjguMTVsLTEuODctLjRjLS4xOS0uMDMtMS4wMi0uMTUtMS43My41Nkw3IDE3LjIybDUuMTIgNS4xOWMuMzcuMzguODguNTkgMS40MS41OWg2LjU1Yy45OCAwIDEuODEtLjcgMS45Ny0xLjY3bC45Mi01LjQ0YTIgMiAwIDAgMC0xLjA4LTIuMTJ6TTIwLjA4IDIxaC02LjU1bC0zLjctMy43OCA0LjE3Ljg5VjcuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXY2LjE4aDEuNzZMMjEgMTUuNTYgMjAuMDggMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQbGFnaWFyaXNtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTQgMThINlY0aDd2NWg1djExelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjAzIDExLjAzYTMuNDk1IDMuNDk1IDAgMCAwIDAgNC45NSAzLjQ4IDMuNDggMCAwIDAgNC4xMy41OWwxLjg4IDEuODggMS40MS0xLjQxLTEuODgtMS44OGMuNzEtMS4zMy41My0zLjAxLS41OS00LjEzYTMuNDk1IDMuNDk1IDAgMCAwLTQuOTUgMHptMy41MyAzLjUzYy0uNTkuNTktMS41NC41OS0yLjEyIDBhMS40OSAxLjQ5IDAgMCAxIDAtMi4xMiAxLjQ5IDEuNDkgMCAwIDEgMi4xMiAwYy41OS41OS41OSAxLjUzIDAgMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYXlGb3JXb3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA1djUuNTlINy41bDQuNSA0LjUgNC41LTQuNUgxM1Y1aC0yem0tNSA5YzAgMy4zMSAyLjY5IDYgNiA2czYtMi42OSA2LTZoLTJjMCAyLjIxLTEuNzkgNC00IDRzLTQtMS43OS00LTRINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvbHltZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRoLTRMNy4xMSAxNi42MyA0LjUgMTIgOSA0SDVMLjUgMTIgNSAyMGg0bDcuODktMTIuNjNMMTkuNSAxMiAxNSAyMGg0bDQuNS04TDE5IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb3dlclNldHRpbmdzTmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzaC0ydjEwaDJWM3ptNC44MyAyLjE3LTEuNDIgMS40MkE2LjkyIDYuOTIgMCAwIDEgMTkgMTJjMCAzLjg3LTMuMTMgNy03IDdBNi45OTUgNi45OTUgMCAwIDEgNy41OCA2LjU4TDYuMTcgNS4xN0E4LjkzMiA4LjkzMiAwIDAgMCAzIDEyYTkgOSAwIDAgMCAxOCAwYzAtMi43NC0xLjIzLTUuMTgtMy4xNy02LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHJlZ25hbnRXb21hbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNGMwLTEuMTEuODktMiAyLTJzMiAuODkgMiAyLS44OSAyLTIgMi0yLS44OS0yLTJ6bTcgOWEzLjI4NSAzLjI4NSAwIDAgMC0yLTNjMC0xLjY2LTEuMzQtMy0zLTNzLTMgMS4zNC0zIDN2N2gydjVoM3YtNWgzdi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHJldmlldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWEyIDIgMCAwIDAtMi0yem0wIDE2SDVWN2gxNHYxMnptLTctOC41YzEuODQgMCAzLjQ4Ljk2IDQuMzQgMi41LS44NiAxLjU0LTIuNSAyLjUtNC4zNCAyLjVzLTMuNDgtLjk2LTQuMzQtMi41Yy44Ni0xLjU0IDIuNS0yLjUgNC4zNC0yLjVNMTIgOWMtMi43MyAwLTUuMDYgMS42Ni02IDQgLjk0IDIuMzQgMy4yNyA0IDYgNHM1LjA2LTEuNjYgNi00Yy0uOTQtMi4zNC0zLjI3LTQtNi00em0wIDUuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQcmludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOGgtMVYzSDZ2NUg1Yy0xLjY2IDAtMyAxLjM0LTMgM3Y2aDR2NGgxMnYtNGg0di02YzAtMS42Ni0xLjM0LTMtMy0zek04IDVoOHYzSDhWNXptOCAxMnYySDh2LTRoOHYyem0yLTJ2LTJINnYySDR2LTRjMC0uNTUuNDUtMSAxLTFoMTRjLjU1IDAgMSAuNDUgMSAxdjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCIxMS41XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQcml2YWN5VGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgMy4xOSA3IDMuMTFWMTFjMCA0LjUyLTIuOTggOC42OS03IDkuOTMtNC4wMi0xLjI0LTctNS40MS03LTkuOTNWNi4zbDctMy4xMU0xMiAxIDMgNXY2YzAgNS41NSAzLjg0IDEwLjc0IDkgMTIgNS4xNi0xLjI2IDktNi40NSA5LTEyVjVsLTktNHptLTEgNmgydjJoLTJWN3ptMCA0aDJ2NmgtMnYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVByaXZhdGVDb25uZWN0aXZpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3YzIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1LTUtMi4yNC01LTUgMi4yNC01IDUtNXptLTYuOTMgNmMuNDkgMy4zOSAzLjQgNiA2LjkzIDZzNi40NC0yLjYxIDYuOTMtNkgyMnYtMmgtMy4wN2MtLjQ5LTMuMzktMy40LTYtNi45My02cy02LjQ0IDIuNjEtNi45MyA2SDJ2MmgzLjA3ek0xNCAxMC41di0uODljMC0xLS42OC0xLjkyLTEuNjYtMi4wOEEyIDIgMCAwIDAgMTAgOS41djFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXptLTIgMy4yNWMtLjQxIDAtLjc1LS4zNC0uNzUtLjc1cy4zNC0uNzUuNzUtLjc1Ljc1LjM0Ljc1Ljc1LS4zNC43NS0uNzUuNzV6bTEtMy4yNWgtMnYtMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVByb2R1Y3Rpb25RdWFudGl0eUxpbWl0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEwaC0yVjhoMnYyem0wLTRoLTJWMWgydjV6TTcgMThjLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6bTEwIDBjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyIDItLjkgMi0yLS45LTItMi0yem0tOC45LTVoNy40NWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNMMjEgNC45NiAxOS4yNSA0bC0zLjcgN0g4LjUzTDQuMjcgMkgxdjJoMmwzLjYgNy41OS0xLjM1IDIuNDRDNC41MiAxNS4zNyA1LjQ4IDE3IDcgMTdoMTJ2LTJIN2wxLjEtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVB1Ymxpc2hlZFdpdGhDaGFuZ2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNiAxOS41SDIxdjJoLTZ2LTZoMnYyLjczYzEuODMtMS40NyAzLTMuNzEgMy02LjIzIDAtNC4wNy0zLjA2LTcuNDQtNy03LjkzVjIuMDVjNS4wNS41IDkgNC43NiA5IDkuOTUgMCAyLjk5LTEuMzIgNS42Ny0zLjQgNy41ek00IDEyYzAtMi41MiAxLjE3LTQuNzcgMy02LjIzVjguNWgydi02SDN2MmgyLjRBOS45NjYgOS45NjYgMCAwIDAgMiAxMmMwIDUuMTkgMy45NSA5LjQ1IDkgOS45NXYtMi4wMmMtMy45NC0uNDktNy0zLjg2LTctNy45M3ptMTIuMjQtMy44OS01LjY2IDUuNjYtMi44My0yLjgzLTEuNDEgMS40MSA0LjI0IDQuMjQgNy4wNy03LjA3LTEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVF1ZXJ5QnVpbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0uNS0xM0gxMXY2bDUuMjUgMy4xNS43NS0xLjIzLTQuNS0yLjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXVlc3Rpb25BbnN3ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDR2N0g1LjE3bC0uNTkuNTktLjU4LjU4VjRoMTFtMS0ySDNjLS41NSAwLTEgLjQ1LTEgMXYxNGw0LTRoMTBjLjU1IDAgMS0uNDUgMS0xVjNjMC0uNTUtLjQ1LTEtMS0xem01IDRoLTJ2OUg2djJjMCAuNTUuNDUgMSAxIDFoMTFsNCA0VjdjMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXVlc3Rpb25NYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMDcgMTIuODVjLjc3LTEuMzkgMi4yNS0yLjIxIDMuMTEtMy40NC45MS0xLjI5LjQtMy43LTIuMTgtMy43LTEuNjkgMC0yLjUyIDEuMjgtMi44NyAyLjM0TDYuNTQgNi45NkM3LjI1IDQuODMgOS4xOCAzIDExLjk5IDNjMi4zNSAwIDMuOTYgMS4wNyA0Ljc4IDIuNDEuNyAxLjE1IDEuMTEgMy4zLjAzIDQuOS0xLjIgMS43Ny0yLjM1IDIuMzEtMi45NyAzLjQ1LS4yNS40Ni0uMzUuNzYtLjM1IDIuMjRoLTIuODljLS4wMS0uNzgtLjEzLTIuMDUuNDgtMy4xNXpNMTQgMjBjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yIDIgLjkgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXVpY2tyZXBseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTcuMTdWNGgxNnY2aDJWNGMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDl2LTJINS4xN0w0IDE3LjE3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi41IDE2aC0yLjJsMS43LTRoLTV2NmgydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZWNlaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41IDMuNSAxOCAybC0xLjUgMS41TDE1IDJsLTEuNSAxLjVMMTIgMmwtMS41IDEuNUw5IDIgNy41IDMuNSA2IDIgNC41IDMuNSAzIDJ2MjBsMS41LTEuNUw2IDIybDEuNS0xLjVMOSAyMmwxLjUtMS41TDEyIDIybDEuNS0xLjVMMTUgMjJsMS41LTEuNUwxOCAyMmwxLjUtMS41TDIxIDIyVjJsLTEuNSAxLjV6TTE5IDE5LjA5SDVWNC45MWgxNHYxNC4xOHpNNiAxNWgxMnYySDZ6bTAtNGgxMnYySDZ6bTAtNGgxMnYySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZWNvcmRWb2ljZU92ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTNjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTQtNCAxLjc5LTQgNCAxLjc5IDQgNCA0em0wLTZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yem0wIDhjLTIuNjcgMC04IDEuMzQtOCA0djJoMTZ2LTJjMC0yLjY2LTUuMzMtNC04LTR6bS02IDRjLjIyLS43MiAzLjMxLTIgNi0yIDIuNyAwIDUuOCAxLjI5IDYgMkgzek0xNS4wOCA3LjA1Yy44NCAxLjE4Ljg0IDIuNzEgMCAzLjg5bDEuNjggMS42OWMyLjAyLTIuMDIgMi4wMi01LjA3IDAtNy4yN2wtMS42OCAxLjY5ek0yMC4wNyAybC0xLjYzIDEuNjNjMi43NyAzLjAyIDIuNzcgNy41NiAwIDEwLjc0TDIwLjA3IDE2YzMuOS0zLjg5IDMuOTEtOS45NSAwLTE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVkZWVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC0yLjE4Yy4xMS0uMzEuMTgtLjY1LjE4LTFhMi45OTYgMi45OTYgMCAwIDAtNS41LTEuNjVsLS41LjY3LS41LS42OEMxMC45NiAyLjU0IDEwLjA1IDIgOSAyIDcuMzQgMiA2IDMuMzQgNiA1YzAgLjM1LjA3LjY5LjE4IDFINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMTljMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0tNS0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTkgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xMSAxNUg0di0yaDE2djJ6bTAtNUg0VjhoNS4wOEw3IDEwLjgzIDguNjIgMTIgMTEgOC43NmwxLTEuMzYgMSAxLjM2TDE1LjM4IDEyIDE3IDEwLjgzIDE0LjkyIDhIMjB2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlbW92ZURvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ljg0IDEuOTggMy40MyAzLjM5bDEwLjM4IDEwLjM4LTEuNDEgMS40MS00LjI0LTQuMjQtMS40MSAxLjQxIDUuNjYgNS42NiAyLjgzLTIuODMgNi42IDYuNiAxLjQxLTEuNDFMNC44NCAxLjk4em0xMy4yMSAxMC4zOEwyMyA3LjQgMjEuNTcgNmwtNC45NCA0Ljk0IDEuNDIgMS40MnptLS43MS00Ljk2LTEuNDEtMS40MS0yLjEyIDIuMTIgMS40MSAxLjQxIDIuMTItMi4xMnpNMS4wOCAxMi4zNWw1LjY2IDUuNjYgMS40MS0xLjQxLTUuNjYtNS42Ni0xLjQxIDEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZW1vdmVTaG9wcGluZ0NhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuNDEgMS4xMyAwIDIuNTRsNC4zOSA0LjM5IDIuMjEgNC42Ni0xLjM1IDIuNDVjLS4xNi4yOC0uMjUuNjEtLjI1Ljk2IDAgMS4xLjkgMiAyIDJoNy40NmwxLjM4IDEuMzhBMS45OTcgMS45OTcgMCAwIDAgMTcgMjJjLjY3IDAgMS4yNi0uMzMgMS42Mi0uODRMMjEuNDYgMjRsMS40MS0xLjQxTDEuNDEgMS4xM3pNNyAxNWwxLjEtMmgyLjM2bDIgMkg3ek0yMCA0SDcuMTJsMiAyaDkuMTlsLTIuNzYgNWgtMS40NGwxLjk0IDEuOTRjLjU0LS4xNC45OS0uNDkgMS4yNS0uOTdsMy41OC02LjQ5QzIxLjI1IDQuODIgMjAuNzYgNCAyMCA0ek03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVvcmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNWgxOHYtMkgzdjJ6bTAgNGgxOHYtMkgzdjJ6bTAtOGgxOFY5SDN2MnptMC02djJoMThWNUgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwYXJ0aXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIxaDE4di02SDN2NnptNy4zMy0ydi0yaDMuMzN2MmgtMy4zM3pNMTkgMTloLTMuMzN2LTJIMTl2MnpNNSAxN2gzLjMzdjJINXYtMnpNNiAxMGwxLjQyLTEuNDJMNS44MyA3SDE3YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMkgzdjJoMTRjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTRINS44M2wxLjU5LTEuNTlMNiAyIDIgNmw0IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBvcnRQcm9ibGVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1Ljk5IDE5LjUzIDE5SDQuNDdMMTIgNS45OU0xMiAyIDEgMjFoMjJMMTIgMnptMSAxNGgtMnYyaDJ2LTJ6bTAtNmgtMnY0aDJ2LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXF1ZXN0UGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjE3IDQgMTggOC44M1YyMEg2VjRoNy4xN00xNCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0xIDloLTR2MWgzYy41NSAwIDEgLjQ1IDEgMXYzYzAgLjU1LS40NSAxLTEgMWgtMXYxaC0ydi0xSDl2LTJoNHYtMWgtM2MtLjU1IDAtMS0uNDUtMS0xdi0zYzAtLjU1LjQ1LTEgMS0xaDFWOGgydjFoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVzdG9yZUZyb21UcmFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuNSA0LTEtMWgtNWwtMSAxSDV2MmgxNFY0ek02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6bTItNVY5aDh2MTBIOHYtNXptMiA0aDR2LTRoMmwtNC00LTQgNGgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVzdG9yZVBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptNCAxOEg2VjRoNy4xN0wxOCA4LjgzVjIwem0tOS41NS05LjQzTDcuMjggOS40VjEzaDMuNmwtMS40NC0xLjQ0YTMuMTUgMy4xNSAwIDAgMSAyLjc5LTEuNzEgMy4xNSAzLjE1IDAgMSAxIDAgNi4zIDMuMTQgMy4xNCAwIDAgMS0yLjU4LTEuMzVIOC4xYTQuNTEgNC41MSAwIDAgMCA0LjEyIDIuN2MyLjQ4IDAgNC41LTIuMDIgNC41LTQuNXMtMi4wMi00LjUtNC41LTQuNWMtMS41OSAwLTIuOTcuODMtMy43NyAyLjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVzdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgM2E5IDkgMCAwIDAtOSA5SDFsNCAzLjk5TDkgMTJINmMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3LTMuMTMgNy03IDdjLTEuOTMgMC0zLjY4LS43OS00Ljk0LTIuMDZsLTEuNDIgMS40MkE4Ljk1NCA4Ljk1NCAwIDAgMCAxMyAyMWE5IDkgMCAwIDAgMC0xOHptLTEgNXY1bDQuMjUgMi41Mi43Ny0xLjI4LTMuNTItMi4wOVY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUm9ja2V0TGF1bmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxNWMtLjgzIDAtMS41OC4zNC0yLjEyLjg4QzIuNyAxNy4wNiAyIDIyIDIgMjJzNC45NC0uNyA2LjEyLTEuODhBMi45OTYgMi45OTYgMCAwIDAgNiAxNXptLjcxIDMuNzFjLS4yOC4yOC0yLjE3Ljc2LTIuMTcuNzZzLjQ3LTEuODguNzYtMi4xN2MuMTctLjE5LjQyLS4zLjctLjNhMS4wMDMgMS4wMDMgMCAwIDEgLjcxIDEuNzF6bTEwLjcxLTUuMDZjNi4zNi02LjM2IDQuMjQtMTEuMzEgNC4yNC0xMS4zMVMxNi43MS4yMiAxMC4zNSA2LjU4bC0yLjQ5LS41YTIuMDMgMi4wMyAwIDAgMC0xLjgxLjU1TDIgMTAuNjlsNSAyLjE0TDExLjE3IDE3bDIuMTQgNSA0LjA1LTQuMDVjLjQ3LS40Ny42OC0xLjE1LjU1LTEuODFsLS40OS0yLjQ5ek03LjQxIDEwLjgzbC0xLjkxLS44MiAxLjk3LTEuOTcgMS40NC4yOWMtLjU3LjgzLTEuMDggMS43LTEuNSAyLjV6bTYuNTggNy42Ny0uODItMS45MWMuOC0uNDIgMS42Ny0uOTMgMi40OS0xLjVsLjI5IDEuNDQtMS45NiAxLjk3ek0xNiAxMi4yNGMtMS4zMiAxLjMyLTMuMzggMi40LTQuMDQgMi43M2wtMi45My0yLjkzYy4zMi0uNjUgMS40LTIuNzEgMi43My00LjA0IDQuNjgtNC42OCA4LjIzLTMuOTkgOC4yMy0zLjk5cy42OSAzLjU1LTMuOTkgOC4yM3pNMTUgMTFjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUm9ja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTFjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAyIC45IDIgMiAyIDItLjkgMi0yem0tNi4wMiA3LjI1Yy0uMjktLjktLjU3LTEuOTQtLjc2LTNMNiAxNi4wN3YyLjk4bDEuOTgtLjh6TTEyIDJzNSAyIDUgMTFsMi4xMSAxLjQxYy41Ni4zNy44OSAxIC44OSAxLjY2VjIybC01LTJIOWwtNSAydi01LjkzYzAtLjY3LjMzLTEuMjkuODktMS42Nkw3IDEzYzAtOSA1LTExIDUtMTF6bTAgMi4zNlM5IDYuMzggOSAxM2MwIDIuMjUgMSA1IDEgNWg0czEtMi43NSAxLTVjMC02LjYyLTMtOC42NC0zLTguNjR6bTYgMTQuNjl2LTIuOThsLTEuMjItLjgxYy0uMTkgMS4wNS0uNDcgMi4xLS43NiAzbDEuOTguNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzguMTMgMiA1IDUuMTMgNSA5YzAgNS4yNSA3IDEzIDcgMTNzNy03Ljc1IDctMTNjMC0zLjg3LTMuMTMtNy03LTd6TTcgOWMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMi44OC0yLjg4IDcuMTktNSA5Ljg4QzkuOTIgMTYuMjEgNyAxMS44NSA3IDl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI5XCIsXCJyXCI6XCIyLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvdW5kZWRDb3JuZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOWgydjJoLTJ2LTJ6bTAtMmgydi0yaC0ydjJ6TTMgMTNoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMC04aDJWN0gzdjJ6bTAtNGgyVjNIM3Yyem00IDBoMlYzSDd2MnptOCAxNmgydi0yaC0ydjJ6bS00IDBoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyem0tOCAwaDJ2LTJIN3Yyem0tNCAwaDJ2LTJIM3Yyek0yMSA4YzAtMi43Ni0yLjI0LTUtNS01aC01djJoNWMxLjY1IDAgMyAxLjM1IDMgM3Y1aDJWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvd2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSAxNC41IDQgMTlsMS41IDEuNUw5IDE3aDJsLTIuNS0yLjV6TTE1IDFjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem02IDIwLjAxTDE4IDI0bC0yLjk5LTMuMDFWMTkuNWwtNy4xLTcuMDljLS4zMS4wNS0uNjEuMDctLjkxLjA3di0yLjE2YzEuNjYuMDMgMy42MS0uODcgNC42Ny0yLjA0bDEuNC0xLjU1Yy4xOS0uMjEuNDMtLjM4LjY5LS41LjI5LS4xNC42Mi0uMjMuOTYtLjIzaC4wM0MxNS45OSA2LjAxIDE3IDcuMDIgMTcgOC4yNnY1Ljc1YzAgLjg0LS4zNSAxLjYxLS45MiAyLjE2bC0zLjU4LTMuNTh2LTIuMjdjLS42My41Mi0xLjQzIDEuMDItMi4yOSAxLjM5TDE2LjUgMThIMThsMyAzLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUnVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjU0IDExIDEzIDcuNDZsMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjQgMS40MSAxLjQxTDE2LjU0IDExek0xMSA3SDJ2Mmg5Vjd6bTEwIDYuNDFMMTkuNTkgMTIgMTcgMTQuNTkgMTQuNDEgMTIgMTMgMTMuNDEgMTUuNTkgMTYgMTMgMTguNTkgMTQuNDEgMjAgMTcgMTcuNDEgMTkuNTkgMjAgMjEgMTguNTkgMTguNDEgMTYgMjEgMTMuNDF6TTExIDE1SDJ2Mmg5di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2F0ZWxsaXRlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTRoMmE5IDkgMCAwIDEtOSA5di0yYzMuODcgMCA3LTMuMTMgNy03em0tNyAzdjJjMi43NiAwIDUtMi4yNCA1LTVoLTJjMCAxLjY2LTEuMzQgMy0zIDN6TTE4LjI2LjU5bDMuNTQgMy41NGMuNzguNzguNzggMi4wNSAwIDIuODNsLTMuMTggMy4xOGMtLjc4Ljc4LTIuMDUuNzgtMi44MyAwTDE0LjU1IDguOWwtLjcxLjcgMS4yNCAxLjI0Yy43OC43OC43OCAyLjA1IDAgMi44M2wtMS40MSAxLjQxYy0uNzguNzgtMi4wNS43OC0yLjgzIDBMOS42IDEzLjg0bC0uNzEuNzEgMS4yNCAxLjI0Yy43OC43OC43OCAyLjA1IDAgMi44M0w2Ljk1IDIxLjhjLS43OC43OC0yLjA1Ljc4LTIuODMgMEwuNTggMTguMjZjLS43OC0uNzgtLjc4LTIuMDUgMC0yLjgzbDMuMTgtMy4xOGMuNzgtLjc4IDIuMDUtLjc4IDIuODMgMGwxLjI0IDEuMjQuNzEtLjcxLTEuMjQtMS4yM2MtLjc4LS43OC0uNzgtMi4wNSAwLTIuODNMOC43MiA3LjNjLjc4LS43OCAyLjA1LS43OCAyLjgzIDBsMS4yNCAxLjI0LjcxLS43MS0xLjI1LTEuMjNjLS43OC0uNzgtLjc4LTIuMDUgMC0yLjgzTDE1LjQzLjU5Yy43OS0uNzkgMi4wNS0uNzkgMi44MyAwem0tMTUuMiAxNS4yTDIgMTYuODVsMy41NCAzLjU0IDEuMDYtMS4wNi0zLjU0LTMuNTR6bTIuMTItMi4xMi0xLjA2IDEuMDYgMy41NCAzLjU0IDEuMDYtMS4wNi0zLjU0LTMuNTR6bTQuOTUtNC45NS0xLjQxIDEuNDEgMy41NCAzLjU0IDEuNDEtMS40MS0zLjU0LTMuNTR6bTQuNi00LjYtMS4wNiAxLjA2IDMuNTQgMy41NCAxLjA2LTEuMDYtMy41NC0zLjU0ek0xNi44NSAybC0xLjA2IDEuMDYgMy41NCAzLjU0IDEuMDYtMS4wNkwxNi44NSAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2F2ZWRTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC43MyAxMy4zMUE2LjM4OCA2LjM4OCAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS40MyAwIDIuNzQtLjQ4IDMuODEtMS4yN0wxOS41OSAyMSAyMSAxOS41OWwtNi4yNy02LjI4ek05LjUgMTRDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjI5IDguNDQgOS41IDZsLS43OSAyLjQ0SDYuMjVsMi4wMSAxLjU5LS43NyAyLjQ3IDIuMDEtMS41MyAyLjAxIDEuNTMtLjc3LTIuNDcgMi4wMS0xLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2F2aW5ncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDEwYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMS0uNDUgMS0xIDEtMS0uNDUtMS0xek04IDloNVY3SDh2MnptMTQtMS41djYuOTdsLTIuODIuOTRMMTcuNSAyMUgxMnYtMmgtMnYySDQuNVMyIDEyLjU0IDIgOS41IDQuNDYgNCA3LjUgNGg1Yy45MS0xLjIxIDIuMzYtMiA0LTJhMS40OTggMS40OTggMCAwIDEgMS4zOCAyLjA4Yy0uMTQuMzQtLjI2LjczLS4zMiAxLjE1bDIuMjcgMi4yN0gyMnptLTIgMmgtMUwxNS41IDZjMC0uNjUuMDktMS4yOS4yNi0xLjkxLS45Ny4yNS0xLjc2Ljk3LTIuMDkgMS45MUg3LjVDNS41NyA2IDQgNy41NyA0IDkuNWMwIDEuODggMS4yMiA2LjY1IDIuMDEgOS41SDh2LTJoNnYyaDIuMDFsMS41NS01LjE1IDIuNDQtLjgyVjkuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNjaGVkdWxlU2VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEyYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMS42NSA3LjM1TDE2LjUgMTcuMlYxNGgxdjIuNzlsMS44NSAxLjg1LS43LjcxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMSAxMi02LTEuNVY3LjAxbDguODcgMy43NGMuOTQtLjQ3IDItLjc1IDMuMTMtLjc1LjEgMCAuMTkuMDEuMjguMDFMMyA0djE2bDctMi45NVYxN2MwLS44LjE0LTEuNTYuMzktMi4yOEw1IDE2Ljk5VjEzLjVsNi0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY2hlZHVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0uNS0xM0gxMXY2bDUuMjUgMy4xNS43NS0xLjIzLTQuNS0yLjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VhcmNoT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QTYuNDcxIDYuNDcxIDAgMCAwIDE2IDkuNSA2LjUgNi41IDAgMCAwIDkuNSAzQzYuMDggMyAzLjI4IDUuNjQgMy4wMyA5aDIuMDJDNS4zIDYuNzUgNy4xOCA1IDkuNSA1IDExLjk5IDUgMTQgNy4wMSAxNCA5LjVTMTEuOTkgMTQgOS41IDE0Yy0uMTcgMC0uMzMtLjAzLS41LS4wNXYyLjAyYy4xNy4wMi4zMy4wMy41LjAzIDEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi40NyAxMC44MiA0IDEzLjI5bC0yLjQ3LTIuNDctLjcxLjcxTDMuMjkgMTQgLjgyIDE2LjQ3bC43MS43MUw0IDE0LjcxbDIuNDcgMi40Ny43MS0uNzFMNC43MSAxNGwyLjQ3LTIuNDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VnbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMThoMTJ2LTJIOXYyek0zIDZ2MmgxOFY2SDN6bTYgN2gxMnYtMkg5djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW5kQW5kQXJjaGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExIDEyLTYtMS41VjcuMDFsOC44NyAzLjczYy45NC0uNDcgMi0uNzUgMy4xMy0uNzUuMSAwIC4xOS4wMS4yOC4wMUwzIDR2MTZsNy0yLjk1VjE3YzAtLjguMTQtMS41Ni4zOS0yLjI4TDUgMTYuOTlWMTMuNWw2LTEuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTJjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0wIDgtMy0zIC43MS0uNzEgMS43OSAxLjc5VjE0aDF2NC4wOWwxLjc5LTEuNzkuNzEuNy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW5zb3JzT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4xNCAxMC45NmMtLjA5LjMzLS4xNC42OC0uMTQgMS4wNCAwIDEuMS40NSAyLjEgMS4xNyAyLjgzbC0xLjQyIDEuNDJBNi4wMTggNi4wMTggMCAwIDEgNiAxMmMwLS45My4yMS0xLjguNTgtMi41OUw1LjExIDcuOTRBNy44OTcgNy44OTcgMCAwIDAgNCAxMmMwIDIuMjEuOSA0LjIxIDIuMzUgNS42NWwtMS40MiAxLjQyQTkuOTY5IDkuOTY5IDAgMCAxIDIgMTJjMC0yLjA0LjYxLTMuOTMgMS42Ni01LjUxTDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQxIDEuNDFMOC4xNCAxMC45NnptOS4yOCAzLjYzYy4zNy0uNzkuNTgtMS42Ni41OC0yLjU5IDAtMS42Ni0uNjctMy4xNi0xLjc2LTQuMjRsLTEuNDIgMS40MmEzLjk1MSAzLjk1MSAwIDAgMSAxLjA0IDMuODZsMS41NiAxLjU1ek0yMCAxMmMwIDEuNDgtLjQgMi44Ny0xLjExIDQuMDZsMS40NSAxLjQ1QTkuOTEgOS45MSAwIDAgMCAyMiAxMmMwLTIuNzYtMS4xMi01LjI2LTIuOTMtNy4wN2wtMS40MiAxLjQyQTcuOTQgNy45NCAwIDAgMSAyMCAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbnNvcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljc2IDE2LjI0QzYuNjcgMTUuMTYgNiAxMy42NiA2IDEycy42Ny0zLjE2IDEuNzYtNC4yNGwxLjQyIDEuNDJDOC40NSA5LjkgOCAxMC45IDggMTJjMCAxLjEuNDUgMi4xIDEuMTcgMi44M2wtMS40MSAxLjQxem04LjQ4IDBDMTcuMzMgMTUuMTYgMTggMTMuNjYgMTggMTJzLS42Ny0zLjE2LTEuNzYtNC4yNGwtMS40MiAxLjQyQzE1LjU1IDkuOSAxNiAxMC45IDE2IDEyYzAgMS4xLS40NSAyLjEtMS4xNyAyLjgzbDEuNDEgMS40MXpNMTIgMTBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem04IDJjMCAyLjIxLS45IDQuMjEtMi4zNSA1LjY1bDEuNDIgMS40MkMyMC44OCAxNy4yNiAyMiAxNC43NiAyMiAxMnMtMS4xMi01LjI2LTIuOTMtNy4wN2wtMS40MiAxLjQyQTcuOTQgNy45NCAwIDAgMSAyMCAxMnpNNi4zNSA2LjM1IDQuOTMgNC45M0MzLjEyIDYuNzQgMiA5LjI0IDIgMTJzMS4xMiA1LjI2IDIuOTMgNy4wN2wxLjQyLTEuNDJDNC45IDE2LjIxIDQgMTQuMjEgNCAxMnMuOS00LjIxIDIuMzUtNS42NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzQWNjZXNzaWJpbGl0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjUgNGMtMi42MS43LTUuNjcgMS04LjUgMXMtNS44OS0uMy04LjUtMUwzIDZjMS44Ni41IDQgLjgzIDYgMXYxMmgydi02aDJ2NmgyVjdjMi0uMTcgNC4xNC0uNSA2LTFsLS41LTJ6TTEyIDRjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyek03IDI0aDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NBcHBsaWNhdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTYuMjEgMTMuOTcgMS4yIDIuMDdjLjA4LjEzLjIzLjE4LjM3LjEzbDEuNDktLjZjLjMxLjI0LjY0LjQ0IDEuMDEuNTlsLjIyIDEuNTljLjAzLjE0LjE1LjI1LjMuMjVoMi40Yy4xNSAwIC4yNy0uMTEuMy0uMjZsLjIyLTEuNTljLjM2LS4xNS43LS4zNSAxLjAxLS41OWwxLjQ5LjZjLjE0LjA1LjI5IDAgLjM3LS4xM2wxLjItMi4wN2MuMDgtLjEzLjA0LS4yOS0uMDctLjM5bC0xLjI3LS45OWMuMDMtLjE5LjA0LS4zOS4wNC0uNTggMC0uMi0uMDItLjM5LS4wNC0uNTlsMS4yNy0uOTljLjExLS4wOS4xNS0uMjYuMDctLjM5bC0xLjItMi4wN2EuMzA2LjMwNiAwIDAgMC0uMzctLjEzbC0xLjQ5LjZjLS4zMS0uMjQtLjY0LS40NC0xLjAxLS41OWwtLjIyLTEuNTlhLjMxLjMxIDAgMCAwLS4zLS4yNWgtMi40YS4zMS4zMSAwIDAgMC0uMy4yNmwtLjIyIDEuNTljLS4zNi4xNS0uNzEuMzQtMS4wMS41OGwtMS40OS0uNmMtLjE0LS4wNS0uMjkgMC0uMzcuMTNsLTEuMiAyLjA3Yy0uMDguMTMtLjA0LjI5LjA3LjM5bDEuMjcuOTljLS4wMy4yLS4wNS4zOS0uMDUuNTkgMCAuMi4wMi4zOS4wNC41OWwtMS4yNy45OWMtLjExLjEtLjE0LjI2LS4wNi4zOXpNMTIgMTAuMjljLjk0IDAgMS43MS43NyAxLjcxIDEuNzFzLS43NyAxLjcxLTEuNzEgMS43MS0xLjcxLS43Ny0xLjcxLTEuNzEuNzctMS43MSAxLjcxLTEuNzF6TTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRhMiAyIDAgMCAwIDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NCYWNrdXBSZXN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMmMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDIgLjkgMiAyIDIgMi0uOSAyLTJ6bS0yLTlhOSA5IDAgMCAwLTkgOUgwbDQgNCA0LTRINWMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3YTYuOTk1IDYuOTk1IDAgMCAxLTExLjA2IDUuN2wtMS40MiAxLjQ0QTkgOSAwIDEgMCAxMiAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NCbHVldG9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDI0aDJ2LTJoLTJ2MnptLTQgMGgydi0ySDd2MnptOCAwaDJ2LTJoLTJ2MnptMi43MS0xOC4yOUwxMiAwaC0xdjcuNTlMNi40MSAzIDUgNC40MSAxMC41OSAxMCA1IDE1LjU5IDYuNDEgMTcgMTEgMTIuNDFWMjBoMWw1LjcxLTUuNzEtNC4zLTQuMjkgNC4zLTQuMjl6TTEzIDMuODNsMS44OCAxLjg4TDEzIDcuNTlWMy44M3ptMS44OCAxMC40NkwxMyAxNi4xN3YtMy43NmwxLjg4IDEuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0JyaWdodG5lc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnpNOCAxNmgyLjVsMS41IDEuNSAxLjUtMS41SDE2di0yLjVsMS41LTEuNS0xLjUtMS41VjhoLTIuNUwxMiA2LjUgMTAuNSA4SDh2Mi41TDYuNSAxMiA4IDEzLjVWMTZ6bTQtN2MxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgM1Y5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NDZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDIyaDJ2Mkg3em00IDBoMnYyaC0yem00IDBoMnYyaC0yek0xNiAuMDEgOCAwQzYuOSAwIDYgLjkgNiAydjE2YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlYyYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNiAxOEg4di0xaDh2MXptMC0zSDhWNWg4djEwem0wLTEySDhWMmg4djF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0V0aGVybmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljc3IDYuNzYgNi4yMyA1LjQ4LjgyIDEybDUuNDEgNi41MiAxLjU0LTEuMjhMMy40MiAxMmw0LjM1LTUuMjR6TTcgMTNoMnYtMkg3djJ6bTEwLTJoLTJ2Mmgydi0yem0tNiAyaDJ2LTJoLTJ2MnptNi43Ny03LjUyLTEuNTQgMS4yOEwyMC41OCAxMmwtNC4zNSA1LjI0IDEuNTQgMS4yOEwyMy4xOCAxMmwtNS40MS02LjUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NJbnB1dEFudGVubmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVjLTMuODcgMC03IDMuMTMtNyA3aDJjMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNWgyYzAtMy44Ny0zLjEzLTctNy03em0xIDkuMjljLjg4LS4zOSAxLjUtMS4yNiAxLjUtMi4yOWEyLjUgMi41IDAgMCAwLTUgMGMwIDEuMDIuNjIgMS45IDEuNSAyLjI5djMuM0w3LjU5IDIxIDkgMjIuNDFsMy0zIDMgM0wxNi40MSAyMSAxMyAxNy41OXYtMy4zek0xMiAxQzUuOTMgMSAxIDUuOTMgMSAxMmgyYTkgOSAwIDAgMSAxOCAwaDJjMC02LjA3LTQuOTMtMTEtMTEtMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0lucHV0Q29tcG9uZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEgxdjEwYzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOEM2LjE2IDE4LjQgNyAxNy4zIDcgMTZWNkg1VjJ6TTQgMTdjLS41NSAwLTEtLjQ1LTEtMXYtMmgydjJjMCAuNTUtLjQ1IDEtMSAxem0tMS01VjhoMnY0SDN6TTEzIDJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEg5djEwYzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MiAyLTEuNTIgMi0yLjgyVjZoLTJWMnptLTEgMTVjLS41NSAwLTEtLjQ1LTEtMXYtMmgydjJjMCAuNTUtLjQ1IDEtMSAxem0tMS01VjhoMnY0aC0yem0xMC02VjJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NGgtMnYxMGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThjMS4xNi0uNDIgMi0xLjUyIDItMi44MlY2aC0yem0tMSAxMWMtLjU1IDAtMS0uNDUtMS0xdi0yaDJ2MmMwIC41NS0uNDUgMS0xIDF6bS0xLTVWOGgydjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0lucHV0Q29tcG9zaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEgxdjEwYzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOEM2LjE2IDE4LjQgNyAxNy4zIDcgMTZWNkg1VjJ6TTQgMTdjLS41NSAwLTEtLjQ1LTEtMXYtMmgydjJjMCAuNTUtLjQ1IDEtMSAxem0tMS01VjhoMnY0SDN6TTEzIDJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEg5djEwYzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MiAyLTEuNTIgMi0yLjgyVjZoLTJWMnptLTEgMTVjLS41NSAwLTEtLjQ1LTEtMXYtMmgydjJjMCAuNTUtLjQ1IDEtMSAxem0tMS01VjhoMnY0aC0yem0xMC02VjJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NGgtMnYxMGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThjMS4xNi0uNDIgMi0xLjUyIDItMi44MlY2aC0yem0tMSAxMWMtLjU1IDAtMS0uNDUtMS0xdi0yaDJ2MmMwIC41NS0uNDUgMS0xIDF6bS0xLTVWOGgydjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0lucHV0SGRtaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggN1Y0YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAydjNINXY2bDMgNnYzaDh2LTNsMy02VjdoLTF6TTggNGg4djNoLTIuMDFWNWgtMXYySDExVjVoLTF2Mkg4VjR6bTkgOC41My0zIDZWMjBoLTR2LTEuNDdsLTMtNlY5aDEwdjMuNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0lucHV0U3ZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDExLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41UzUgMTAuNjcgNSAxMS41IDUuNjcgMTMgNi41IDEzIDggMTIuMzMgOCAxMS41em03LTVjMC0uODMtLjY3LTEuNS0xLjUtMS41aC0zQzkuNjcgNSA5IDUuNjcgOSA2LjVTOS42NyA4IDEwLjUgOGgzYy44MyAwIDEuNS0uNjcgMS41LTEuNXpNOC41IDE1Yy0uODMgMC0xLjUuNjctMS41IDEuNVM3LjY3IDE4IDguNSAxOHMxLjUtLjY3IDEuNS0xLjVTOS4zMyAxNSA4LjUgMTV6TTEyIDFDNS45MyAxIDEgNS45MyAxIDEyczQuOTMgMTEgMTEgMTEgMTEtNC45MyAxMS0xMVMxOC4wNyAxIDEyIDF6bTAgMjBjLTQuOTYgMC05LTQuMDQtOS05czQuMDQtOSA5LTkgOSA0LjA0IDkgOS00LjA0IDktOSA5em01LjUtMTFjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0tMiA1Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzT3ZlcnNjYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjAxIDUuNSAxMCA4aDRsLTEuOTktMi41ek0xOCAxMHY0bDIuNS0xLjk5TDE4IDEwek02IDEwbC0yLjUgMi4wMUw2IDE0di00em04IDZoLTRsMi4wMSAyLjVMMTQgMTZ6bTctMTNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDloMnYyaC0yem00IDBoMnYyaC0yem01IDYuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTctLjEtLjAzLS4yMS0uMDUtLjMxLS4wNS0uMjYgMC0uNTEuMS0uNzEuMjlsLTIuMiAyLjJhMTUuMDc0IDE1LjA3NCAwIDAgMS02LjU5LTYuNThsMi4yLTIuMjFjLjI4LS4yNy4zNi0uNjYuMjUtMS4wMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNNS4wMyA1aDEuNWMuMDcuODguMjIgMS43NS40NiAyLjU5TDUuNzkgOC44Yy0uNDEtMS4yMS0uNjctMi40OC0uNzYtMy44ek0xOSAxOC45N2MtMS4zMi0uMDktMi42LS4zNS0zLjgtLjc2bDEuMi0xLjJjLjg1LjI0IDEuNzIuMzkgMi42LjQ1djEuNTF6TTE5IDloMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NQb3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyNGgydi0ySDd2MnptNCAwaDJ2LTJoLTJ2MnptMi0yMmgtMnYxMGgyVjJ6bTMuNTYgMi40NC0xLjQ1IDEuNDVBNS45NjkgNS45NjkgMCAwIDEgMTggMTFjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTZjMC0yLjE3IDEuMTYtNC4wNiAyLjg4LTUuMTJMNy40NCA0LjQ0QTcuOTYxIDcuOTYxIDAgMCAwIDQgMTFjMCA0LjQyIDMuNTggOCA4IDhzOC0zLjU4IDgtOGMwLTIuNzItMS4zNi01LjEyLTMuNDQtNi41NnpNMTUgMjRoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NSZW1vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDlIOWMtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDZjLjU1IDAgMS0uNDUgMS0xVjEwYzAtLjU1LS40NS0xLTEtMXptLTEgMTJoLTRWMTFoNHYxMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTcuMDUgNi4wNSAxLjQxIDEuNDFhNS4wMjIgNS4wMjIgMCAwIDEgNy4wOCAwbDEuNDEtMS40MUMxNS42OCA0Ljc4IDEzLjkzIDQgMTIgNHMtMy42OC43OC00Ljk1IDIuMDV6TTEyIDBDOC45NiAwIDYuMjEgMS4yMyA0LjIyIDMuMjJsMS40MSAxLjQxQzcuMjYgMy4wMSA5LjUxIDIgMTIgMnM0Ljc0IDEuMDEgNi4zNiAyLjY0bDEuNDEtMS40MUMxNy43OSAxLjIzIDE1LjA0IDAgMTIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzVm9pY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMjJoMnYySDd6bTUtOWMxLjY2IDAgMy0xLjM0IDMtM1Y0YzAtMS42Ni0xLjM0LTMtMy0zUzkgMi4zNCA5IDR2NmMwIDEuNjYgMS4zNCAzIDMgM3ptLTEtOWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NmMwIC41Ni0uNDQgMS0xIDEtLjU1IDAtMS0uNDUtMS0xVjR6bTAgMThoMnYyaC0yem00IDBoMnYyaC0yem00LTEyaC0xLjdjMCAzLTIuNTQgNS4xLTUuMyA1LjFTNi43IDEzIDYuNyAxMEg1YzAgMy40MSAyLjcyIDYuMjMgNiA2LjcyVjIwaDJ2LTMuMjhjMy4yOC0uNDkgNi0zLjMxIDYtNi43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS40MyAxMi45OGMuMDQtLjMyLjA3LS42NC4wNy0uOTggMC0uMzQtLjAzLS42Ni0uMDctLjk4bDIuMTEtMS42NWMuMTktLjE1LjI0LS40Mi4xMi0uNjRsLTItMy40NmEuNS41IDAgMCAwLS42MS0uMjJsLTIuNDkgMWMtLjUyLS40LTEuMDgtLjczLTEuNjktLjk4bC0uMzgtMi42NUEuNDg4LjQ4OCAwIDAgMCAxNCAyaC00Yy0uMjUgMC0uNDYuMTgtLjQ5LjQybC0uMzggMi42NWMtLjYxLjI1LTEuMTcuNTktMS42OS45OGwtMi40OS0xYS41NjYuNTY2IDAgMCAwLS4xOC0uMDNjLS4xNyAwLS4zNC4wOS0uNDMuMjVsLTIgMy40NmMtLjEzLjIyLS4wNy40OS4xMi42NGwyLjExIDEuNjVjLS4wNC4zMi0uMDcuNjUtLjA3Ljk4IDAgLjMzLjAzLjY2LjA3Ljk4bC0yLjExIDEuNjVjLS4xOS4xNS0uMjQuNDItLjEyLjY0bDIgMy40NmEuNS41IDAgMCAwIC42MS4yMmwyLjQ5LTFjLjUyLjQgMS4wOC43MyAxLjY5Ljk4bC4zOCAyLjY1Yy4wMy4yNC4yNC40Mi40OS40Mmg0Yy4yNSAwIC40Ni0uMTguNDktLjQybC4zOC0yLjY1Yy42MS0uMjUgMS4xNy0uNTkgMS42OS0uOThsMi40OSAxYy4wNi4wMi4xMi4wMy4xOC4wMy4xNyAwIC4zNC0uMDkuNDMtLjI1bDItMy40NmMuMTItLjIyLjA3LS40OS0uMTItLjY0bC0yLjExLTEuNjV6bS0xLjk4LTEuNzFjLjA0LjMxLjA1LjUyLjA1LjczIDAgLjIxLS4wMi40My0uMDUuNzNsLS4xNCAxLjEzLjg5LjcgMS4wOC44NC0uNyAxLjIxLTEuMjctLjUxLTEuMDQtLjQyLS45LjY4Yy0uNDMuMzItLjg0LjU2LTEuMjUuNzNsLTEuMDYuNDMtLjE2IDEuMTMtLjIgMS4zNWgtMS40bC0uMTktMS4zNS0uMTYtMS4xMy0xLjA2LS40M2MtLjQzLS4xOC0uODMtLjQxLTEuMjMtLjcxbC0uOTEtLjctMS4wNi40My0xLjI3LjUxLS43LTEuMjEgMS4wOC0uODQuODktLjctLjE0LTEuMTNjLS4wMy0uMzEtLjA1LS41NC0uMDUtLjc0cy4wMi0uNDMuMDUtLjczbC4xNC0xLjEzLS44OS0uNy0xLjA4LS44NC43LTEuMjEgMS4yNy41MSAxLjA0LjQyLjktLjY4Yy40My0uMzIuODQtLjU2IDEuMjUtLjczbDEuMDYtLjQzLjE2LTEuMTMuMi0xLjM1aDEuMzlsLjE5IDEuMzUuMTYgMS4xMyAxLjA2LjQzYy40My4xOC44My40MSAxLjIzLjcxbC45MS43IDEuMDYtLjQzIDEuMjctLjUxLjcgMS4yMS0xLjA3Ljg1LS44OS43LjE0IDEuMTN6TTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2hvcDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDlIMXYxMWMwIDEuMTEuODkgMiAyIDJoMTZ2LTJIM1Y5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA1VjNjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDV2MTFjMCAxLjExLjg5IDIgMiAyaDE0YzEuMTEgMCAyLS44OSAyLTJWNWgtNXptLTYtMmg0djJoLTRWM3ptOSAxM0g3VjdoMTR2OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOHY3bDUuNS0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG9wVHdvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDlIMXYxMWMwIDEuMTEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjg5IDItMkgzVjl6bTE1LTRWM2MwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJINXYxMWMwIDEuMTEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjg5IDItMlY1aC01em0tNi0yaDR2MmgtNFYzem05IDEzSDdWN2gxNHY5em0tOS0xIDUuNS00TDEyIDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA2VjRjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDJ2MTNjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmgtNnptLTYtMmg0djJoLTRWNHptMTAgMTVINFY4aDE2djExek05IDE4bDcuNS01TDkgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNob3BwaW5nQmFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNmgtMmMwLTIuMjEtMS43OS00LTQtNFM4IDMuNzkgOCA2SDZjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTYtMmMxLjEgMCAyIC45IDIgMmgtNGMwLTEuMS45LTIgMi0yem02IDE2SDZWOGgydjJjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xVjhoNHYyYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMVY4aDJ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG9wcGluZ0Jhc2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgOWgtNC43OWwtNC4zOC02LjU2Yy0uMTktLjI4LS41MS0uNDItLjgzLS40MnMtLjY0LjE0LS44My40M0w2Ljc5IDlIMmMtLjU1IDAtMSAuNDUtMSAxIDAgLjA5LjAxLjE4LjA0LjI3bDIuNTQgOS4yN2MuMjMuODQgMSAxLjQ2IDEuOTIgMS40NmgxM2MuOTIgMCAxLjY5LS42MiAxLjkzLTEuNDZsMi41NC05LjI3TDIzIDEwYzAtLjU1LS40NS0xLTEtMXpNMTIgNC44IDE0LjggOUg5LjJMMTIgNC44ek0xOC41IDE5bC0xMi45OS4wMUwzLjMxIDExSDIwLjdsLTIuMiA4ek0xMiAxM2MtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG9wcGluZ0NhcnRDaGVja291dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMThjLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6bTEwIDBjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyIDItLjkgMi0yLS45LTItMi0yem0tOC45LTVoNy40NWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNMMjEgNC45NiAxOS4yNSA0bC0zLjcgN0g4LjUzTDQuMjcgMkgxdjJoMmwzLjYgNy41OS0xLjM1IDIuNDRDNC41MiAxNS4zNyA1LjQ4IDE3IDcgMTdoMTJ2LTJIN2wxLjEtMnpNMTIgMmw0IDQtNCA0LTEuNDEtMS40MUwxMi4xNyA3SDhWNWg0LjE3bC0xLjU5LTEuNTlMMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNob3BwaW5nQ2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNTUgMTNjLjc1IDAgMS40MS0uNDEgMS43NS0xLjAzbDMuNTgtNi40OUEuOTk2Ljk5NiAwIDAgMCAyMC4wMSA0SDUuMjFsLS45NC0ySDF2MmgybDMuNiA3LjU5LTEuMzUgMi40NEM0LjUyIDE1LjM3IDUuNDggMTcgNyAxN2gxMnYtMkg3bDEuMS0yaDcuNDV6TTYuMTYgNmgxMi4xNWwtMi43NiA1SDguNTNMNi4xNiA2ek03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yem0xMCAwYy0xLjEgMC0xLjk5LjktMS45OSAycy44OSAyIDEuOTkgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNtYXJ0QnV0dG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgOXY2YzAgMS4xLS45IDItMiAyaC0xdi0yaDFWOUg0djZoNnYySDRjLTEuMSAwLTItLjktMi0yVjljMC0xLjEuOS0yIDItMmgxNmMxLjEgMCAyIC45IDIgMnptLTcuNSAxMCAxLjA5LTIuNDFMMTggMTUuNWwtMi40MS0xLjA5TDE0LjUgMTJsLTEuMDkgMi40MUwxMSAxNS41bDIuNDEgMS4wOUwxNC41IDE5em0yLjUtNSAuNjItMS4zOEwxOSAxMmwtMS4zOC0uNjJMMTcgMTBsLS42MiAxLjM4TDE1IDEybDEuMzguNjJMMTcgMTR6bS0yLjUgNSAxLjA5LTIuNDFMMTggMTUuNWwtMi40MS0xLjA5TDE0LjUgMTJsLTEuMDkgMi40MUwxMSAxNS41bDIuNDEgMS4wOUwxNC41IDE5em0yLjUtNSAuNjItMS4zOEwxOSAxMmwtMS4zOC0uNjJMMTcgMTBsLS42MiAxLjM4TDE1IDEybDEuMzguNjJMMTcgMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTb3VyY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjZoNS4xN2wyIDJIMjB2MTB6bS0yLTZINnYtMmgxMnYyem0tNCA0SDZ2LTJoOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BhY2VEYXNoYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNNSAxOVY1aDZ2MTRINXptMTQgMGgtNnYtN2g2djd6bTAtOWgtNlY1aDZ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwYXRpYWxBdWRpb09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEzYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptMC02YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnpNMTYuMzkgMTUuNTZDMTQuNzEgMTQuNyAxMi41MyAxNCAxMCAxNHMtNC43MS43LTYuMzkgMS41NkEyLjk3IDIuOTcgMCAwIDAgMiAxOC4yMlYyMWgxNnYtMi43OGMwLTEuMTItLjYxLTIuMTUtMS42MS0yLjY2ek0xNiAxOUg0di0uNzhjMC0uMzguMi0uNzIuNTItLjg4QzUuNzEgMTYuNzMgNy42MyAxNiAxMCAxNmMyLjM3IDAgNC4yOS43MyA1LjQ4IDEuMzQuMzIuMTYuNTIuNS41Mi44OFYxOXpNMjAuMzYgMWwtMS40MSAxLjQxYTcuMDA3IDcuMDA3IDAgMCAxIDAgOS45bDEuNDEgMS40MWE4Ljk4IDguOTggMCAwIDAgMC0xMi43MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNTQgMTAuOWE1LjAwMyA1LjAwMyAwIDAgMCAwLTcuMDdsLTEuNDEgMS40MWEzIDMgMCAwIDEgMCA0LjI0bDEuNDEgMS40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwYXRpYWxBdWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEzYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptMC02YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnpNMTYuMzkgMTUuNTZDMTQuNzEgMTQuNyAxMi41MyAxNCAxMCAxNHMtNC43MS43LTYuMzkgMS41NkEyLjk3IDIuOTcgMCAwIDAgMiAxOC4yMlYyMWgxNnYtMi43OGMwLTEuMTItLjYxLTIuMTUtMS42MS0yLjY2ek0xNiAxOUg0di0uNzhjMC0uMzguMi0uNzIuNTItLjg4QzUuNzEgMTYuNzMgNy42MyAxNiAxMCAxNmMyLjM3IDAgNC4yOS43MyA1LjQ4IDEuMzQuMzIuMTYuNTIuNS41Mi44OFYxOXpNMTYgMWgtMmE5IDkgMCAwIDAgOSA5VjhjLTMuODYgMC03LTMuMTQtNy03elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxaC0yYzAgMi43NiAyLjI0IDUgNSA1VjRjLTEuNjUgMC0zLTEuMzUtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BhdGlhbFRyYWNraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTNjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTQtNCAxLjc5LTQgNCAxLjc5IDQgNCA0em0wLTZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yek0xNi4zOSAxNS41NkMxNC43MSAxNC43IDEyLjUzIDE0IDEwIDE0cy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCAyIDE4LjIyVjIxaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTE2IDE5SDR2LS43OGMwLS4zOC4yLS43Mi41Mi0uODhDNS43MSAxNi43MyA3LjYzIDE2IDEwIDE2YzIuMzcgMCA0LjI5LjczIDUuNDggMS4zNC4zMi4xNi41Mi41LjUyLjg4VjE5ek0yMC4wNSAyLjQxIDE4LjY0IDFjLTMuNTEgMy41MS0zLjUxIDkuMjEgMCAxMi43M2wxLjQxLTEuNDFjLTIuNzMtMi43NC0yLjczLTcuMTggMC05LjkxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMi44OCA1LjI0LTEuNDEtMS40MWE1LjAwMyA1LjAwMyAwIDAgMCAwIDcuMDdsMS40MS0xLjQxYTMuMDEyIDMuMDEyIDAgMCAxIDAtNC4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwZWFrZXJOb3Rlc09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNHYxMmgtMS4zNGwxLjkxIDEuOTFBMi4wMSAyLjAxIDAgMCAwIDIyIDE2VjRjMC0xLjEtLjktMi0yLTJINC42NmwyIDJIMjB6TTYgMTJoMnYySDZ6bTEyLTNoLTYuMzRsMiAySDE4em0wLTNoLTh2MS4zNGwuNjYuNjZIMTh6TTEuNDEgMS41OSAwIDNsMi4wMSAyLjAxTDIgMjJsNC00aDlsNS43MyA1LjczIDEuNDEtMS40MUwxLjQxIDEuNTl6TTUuMTcgMTYgNCAxNy4xN1Y3bDIgMnYyaDJsNSA1SDUuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcGVha2VyTm90ZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdsLS41OS41OS0uNTguNThWNGgxNnYxMnpNNiAxMmgydjJINnptMC0zaDJ2Mkg2em0wLTNoMnYySDZ6bTQgNmg1djJoLTV6bTAtM2g4djJoLTh6bTAtM2g4djJoLTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcGVsbGNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi40NSAxNmgyLjA5TDkuNDMgM0g3LjU3TDIuNDYgMTZoMi4wOWwxLjEyLTNoNS42NGwxLjE0IDN6bS02LjAyLTVMOC41IDUuNDggMTAuNTcgMTFINi40M3ptMTUuMTYuNTktOC4wOSA4LjA5TDkuODMgMTZsLTEuNDEgMS40MSA1LjA5IDUuMDlMMjMgMTNsLTEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YXJSYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgOC44OS45NCAzLjExaDIuODJsLTIuMjcgMS42Mi45MyAzLjAxTDEyIDE0Ljc5bC0yLjQyIDEuODQuOTMtMy4wMUw4LjI0IDEyaDIuODJMMTIgOC44OU0xMiAybC0yLjQyIDhIMmw2LjE3IDQuNDFMNS44MyAyMiAxMiAxNy4zMSAxOC4xOCAyMmwtMi4zNS03LjU5TDIyIDEwaC03LjU4TDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnptNy40OCA3LjE2LTUuMDEtLjQzLTItNC43MWMzLjIxLjE5IDUuOTEgMi4yNyA3LjAxIDUuMTR6bS01LjA3IDYuMjZMMTIgMTMuOThsLTIuMzkgMS40NC42My0yLjcyLTIuMTEtMS44MyAyLjc4LS4yNEwxMiA4LjA2bDEuMDkgMi41NiAyLjc4LjI0LTIuMTEgMS44My42NCAyLjczem0tMi44Ni0xMS40LTIgNC43Mi01LjAyLjQzYzEuMS0yLjg4IDMuOC00Ljk3IDcuMDItNS4xNXpNNCAxMmMwLS42NC4wOC0xLjI2LjIzLTEuODZsMy43OSAzLjI4LTEuMTEgNC43NUE3Ljk4MiA3Ljk4MiAwIDAgMSA0IDEyem0zLjg0IDYuODJMMTIgMTYuMzFsNC4xNiAyLjVBNy45MjQgNy45MjQgMCAwIDEgMTEuOTkgMjBjLTEuNTIgMC0yLjk0LS40NC00LjE1LTEuMTh6bTkuMjUtLjY1LTEuMTEtNC43NSAzLjc5LTMuMjhjLjE0LjU5LjIzIDEuMjIuMjMgMS44NiAwIDIuNDgtMS4xNCA0LjctMi45MSA2LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RpY2t5Tm90ZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djloLTV2NUg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTBsNi02VjVjMC0xLjEtLjktMi0yLTJ6bS03IDExSDd2LTJoNXYyem01LTRIN1Y4aDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguMzYgOSAuNiAzSDUuMDRsLjYtM2gxMi43Mk0yMCA0SDR2MmgxNlY0em0wIDNINGwtMSA1djJoMXY2aDEwdi02aDR2Nmgydi02aDF2LTJsLTEtNXpNNiAxOHYtNGg2djRINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1YmplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDE3SDR2MmgxMHYtMnptNi04SDR2MmgxNlY5ek00IDE1aDE2di0ySDR2MnpNNCA1djJoMTZWNUg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3VidGl0bGVzT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg2LjgzbDIgMkgyMHYxMS4xN2wxLjc2IDEuNzZjLjE1LS4yOC4yNC0uNTkuMjQtLjkzVjZjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEwaC01LjE3bDIgMkgxOHpNMS4wNCAzLjg3bDEuMiAxLjJDMi4wOSA1LjM1IDIgNS42NiAyIDZ2MTJjMCAxLjEuOSAyIDIgMmgxMy4xN2wyLjk2IDIuOTYgMS40MS0xLjQxTDIuNDUgMi40NSAxLjA0IDMuODd6TTQgNi44MyA3LjE3IDEwSDZ2Mmgydi0xLjE3TDExLjE3IDE0SDZ2Mmg3LjE3bDIgMkg0VjYuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdXBlcnZpc2VkVXNlckNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSAxMGMwLTEuNjUtMS4zNS0zLTMtM3MtMyAxLjM1LTMgMyAxLjM1IDMgMyAzIDMtMS4zNSAzLTN6bS0zIDFjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptNi41IDJjMS4xMSAwIDItLjg5IDItMiAwLTEuMTEtLjg5LTItMi0yLTEuMTEgMC0yLjAxLjg5LTIgMiAwIDEuMTEuODkgMiAyIDJ6TTExLjk5IDIuMDFjLTUuNTIgMC0xMCA0LjQ4LTEwIDEwczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMC00LjQ4LTEwLTEwLTEwek01Ljg0IDE3LjEyYy42OC0uNTQgMi4yNy0xLjExIDMuNjYtMS4xMS4wNyAwIC4xNS4wMS4yMy4wMS4yNC0uNjQuNjctMS4yOSAxLjMtMS44NkE5LjA1IDkuMDUgMCAwIDAgOS41IDE0Yy0xLjMgMC0zLjM5LjQ1LTQuNzMgMS40My0uNS0xLjA0LS43OC0yLjItLjc4LTMuNDMgMC00LjQxIDMuNTktOCA4LThzOCAzLjU5IDggOGMwIDEuMi0uMjcgMi4zNC0uNzUgMy4zNy0xLS41OS0yLjM2LS44Ny0zLjI0LS44Ny0xLjUyIDAtNC41LjgxLTQuNSAyLjd2Mi43OGE3LjkzNSA3LjkzNSAwIDAgMS01LjY2LTIuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdXBlcnZpc29yQWNjb3VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMmMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMxMC45MyA1IDkgNSA1LjUgNi41NyA1LjUgOC41IDcuMDcgMTIgOSAxMnptMC01Yy44MyAwIDEuNS42NyAxLjUgMS41UzkuODMgMTAgOSAxMHMtMS41LS42Ny0xLjUtMS41UzguMTcgNyA5IDd6bS4wNSAxMEg0Ljc3Yy45OS0uNSAyLjctMSA0LjIzLTEgLjExIDAgLjIzLjAxLjM0LjAxLjM0LS43My45My0xLjMzIDEuNjQtMS44MS0uNzMtLjEzLTEuNDItLjItMS45OC0uMi0yLjM0IDAtNyAxLjE3LTcgMy41VjE5aDd2LTEuNWMwLS4xNy4wMi0uMzQuMDUtLjV6bTcuNDUtMi41Yy0xLjg0IDAtNS41IDEuMDEtNS41IDNWMTloMTF2LTEuNWMwLTEuOTktMy42Ni0zLTUuNS0zem0xLjIxLTEuODJjLjc2LS40MyAxLjI5LTEuMjQgMS4yOS0yLjE4YTIuNSAyLjUgMCAwIDAtNSAwYzAgLjk0LjUzIDEuNzUgMS4yOSAyLjE4LjM2LjIuNzcuMzIgMS4yMS4zMnMuODUtLjEyIDEuMjEtLjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3VwcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTcuNDYgNy4xMi0yLjc4IDEuMTVhNC45ODIgNC45ODIgMCAwIDAtMi45NS0yLjk0bDEuMTUtMi43OGMyLjEuOCAzLjc3IDIuNDcgNC41OCA0LjU3ek0xMiAxNWMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6TTkuMTMgNC41NGwxLjE3IDIuNzhhNSA1IDAgMCAwLTIuOTggMi45N0w0LjU0IDkuMTNhNy45ODQgNy45ODQgMCAwIDEgNC41OS00LjU5ek00LjU0IDE0Ljg3bDIuNzgtMS4xNWE0Ljk2OCA0Ljk2OCAwIDAgMCAyLjk3IDIuOTZsLTEuMTcgMi43OGE3Ljk5NiA3Ljk5NiAwIDAgMS00LjU4LTQuNTl6bTEwLjM0IDQuNTktMS4xNS0yLjc4YTQuOTc4IDQuOTc4IDAgMCAwIDIuOTUtMi45N2wyLjc4IDEuMTdhOC4wMDcgOC4wMDcgMCAwIDEtNC41OCA0LjU4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dhcEhvcml6IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02Ljk5IDExIDMgMTVsMy45OSA0di0zSDE0di0ySDYuOTl2LTN6TTIxIDlsLTMuOTktNHYzSDEwdjJoNy4wMXYzTDIxIDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2FwSG9yaXpvbnRhbENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTMtMTMuNVY5aC00djJoNHYyLjVsMy41LTMuNXptLTYgNEw1LjUgMTQgOSAxNy41VjE1aDR2LTJIOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3YXBWZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxNy4wMVYxMGgtMnY3LjAxaC0zTDE1IDIxbDQtMy45OWgtM3pNOSAzIDUgNi45OWgzVjE0aDJWNi45OWgzTDkgM3ptNyAxNC4wMVYxMGgtMnY3LjAxaC0zTDE1IDIxbDQtMy45OWgtM3pNOSAzIDUgNi45OWgzVjE0aDJWNi45OWgzTDkgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3YXBWZXJ0aWNhbENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6TTYuNSA5IDEwIDUuNSAxMy41IDlIMTF2NEg5Vjl6bTExIDZMMTQgMTguNSAxMC41IDE1SDEzdi00aDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXBlRG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEzLjlhNSA1IDAgMSAwLTIgMHY0LjI3bC0xLjU5LTEuNTlMOCAxOGw0IDQgNC00LTEuNDEtMS40MUwxMyAxOC4xN1YxMy45ek0xNSA5YzAgMS42Ni0xLjM0IDMtMyAzcy0zLTEuMzQtMy0zIDEuMzQtMyAzLTMgMyAxLjM0IDMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXBlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjIyIDEwLTQuMTUuMDFhLjk3NS45NzUgMCAwIDAtLjQ1LjA4bC0uNTkuMjYtMS44My00LjFjLS41Ni0xLjI2LTIuMDQtMS44My0zLjMtMS4yN3MtMS44MyAyLjA0LTEuMjcgMy4zbDMuMyA3LjQ1LTEuODcuMzljLS4xOS4wNS0uOTkuMjctMS4zNiAxLjIxTDggMTkuMTlsNi43OCAyLjY3Yy40OS4xOSAxLjA1LjE4IDEuNTMtLjA0bDUuOTktMi42NWMuODktLjQgMS4zNy0xLjM4IDEuMTMtMi4zMmwtMS4zNi01LjM0Yy0uMjItLjg2LS45Ny0xLjQ3LTEuODUtMS41MXptMS4yNyA3LjM0TDE1LjUgMjBsLTQuOTItMS45NiA0LjE4LS44OC00LjMtOS43Yy0uMTEtLjI1IDAtLjU1LjI1LS42Ni4yNS0uMTEuNTUgMCAuNjYuMjVsMi41IDUuNjUgMS42MS0uNzEgNC42NS4wMSAxLjM2IDUuMzR6TTMuOCAxMi4xOGMtLjItLjg2LS4zLTEuNzYtLjMtMi42OCAwLTIuODQuOTktNS40NSAyLjYzLTcuNUw3LjIgMy4wN2ExMC40NTcgMTAuNDU3IDAgMCAwLTEuODggOC45OWwxLjYyLTEuNjJMOCAxMS41IDQuNSAxNSAxIDExLjVsMS4wNi0xLjA2IDEuNzQgMS43NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXBlTGVmdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjEgMTNhNSA1IDAgMSAwIDAtMkg1LjgzbDEuNTktMS41OUw2IDhsLTQgNCA0IDQgMS40MS0xLjQxTDUuODMgMTNoNC4yN3ptNC45IDJjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dpcGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguODkgMTMuNzctMy44LTEuNjdjLS4xMy0uMDYtLjI4LS4xLS40NC0uMUgxNFY3LjVhMi41IDIuNSAwIDAgMC01IDB2OC4xNWwtMS44Ny0uNGMtLjE5LS4wMy0xLjAyLS4xNS0xLjczLjU2TDQgMTcuMjJsNS4xMiA1LjE5Yy4zNy4zOC44OC41OSAxLjQxLjU5aDYuNTVjLjk4IDAgMS44MS0uNyAxLjk3LTEuNjdsLjkyLTUuNDRhMiAyIDAgMCAwLTEuMDgtMi4xMnpNMTcuMDggMjFoLTYuNTVsLTMuNy0zLjc4IDQuMTcuODlWNy41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41djYuMThoMS43NkwxOCAxNS41NiAxNy4wOCAyMXpNNC4wOSA1LjVIN1Y3SDJWMmgxLjV2Mi4wMkM1LjgyIDIuMTMgOC43OCAxIDEyIDFjNS40OSAwIDkuMjcgMy4xMiAxMCA2aC0xLjU3Yy0uNzYtMS45OC0zLjY5LTQuNS04LjQzLTQuNS0zLjAzIDAtNS43OSAxLjE0LTcuOTEgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXBlUmlnaHRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy45IDExYTUgNSAwIDEgMCAwIDJoNC4yN2wtMS41OSAxLjU5TDE4IDE2bDQtNC00LTQtMS40MSAxLjQxTDE4LjE3IDExSDEzLjl6TTkgOWMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgMy0zLTEuMzQtMy0zIDEuMzQtMyAzLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2lwZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguODkgMTMuNzctMy44LTEuNjdjLS4xMy0uMDYtLjI4LS4xLS40NC0uMUgxNFY3LjVhMi41IDIuNSAwIDAgMC01IDB2OC4xNWwtMS44Ny0uNGMtLjE5LS4wMy0xLjAyLS4xNS0xLjczLjU2TDQgMTcuMjJsNS4xMiA1LjE5Yy4zNy4zOC44OC41OSAxLjQxLjU5aDYuNTVjLjk4IDAgMS44MS0uNyAxLjk3LTEuNjdsLjkyLTUuNDRhMiAyIDAgMCAwLTEuMDgtMi4xMnpNMTcuMDggMjFoLTYuNTVsLTMuNy0zLjc4IDQuMTcuODlWNy41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41djYuMThoMS43NkwxOCAxNS41NiAxNy4wOCAyMXpNMTIgMi41QzcuMjYgMi41IDQuMzMgNS4wMiAzLjU3IDdIMmMuNzMtMi44OCA0LjUxLTYgMTAtNiAzLjIyIDAgNi4xOCAxLjEzIDguNSAzLjAyVjJIMjJ2NWgtNVY1LjVoMi45MWMtMi4xMi0xLjg2LTQuODgtMy03LjkxLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2lwZVVwQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgNS44MyAxLjU5IDEuNTlMMTYgNmwtNC00LTQgNCAxLjQxIDEuNDFMMTEgNS44M3Y0LjI3YTUgNSAwIDEgMCAyIDBWNS44M3pNMTIgMThjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dpcGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjIyIDEwLTQuMTUuMDFhLjk3NS45NzUgMCAwIDAtLjQ1LjA4bC0uNTkuMjYtMS44My00LjFjLS41Ni0xLjI2LTIuMDQtMS44My0zLjMtMS4yN3MtMS44MyAyLjA0LTEuMjcgMy4zbDMuMyA3LjQ1LTEuODcuMzljLS4xOS4wNS0uOTkuMjctMS4zNiAxLjIxTDggMTkuMTlsNi43OCAyLjY3Yy40OS4xOSAxLjA1LjE4IDEuNTMtLjA0bDUuOTktMi42NWMuODktLjQgMS4zNy0xLjM4IDEuMTMtMi4zMmwtMS4zNi01LjM0Yy0uMjItLjg2LS45Ny0xLjQ3LTEuODUtMS41MXptMS4yNyA3LjM0TDE1LjUgMjBsLTQuOTItMS45NiA0LjE4LS44OC00LjMtOS43Yy0uMTEtLjI1IDAtLjU1LjI1LS42Ni4yNS0uMTEuNTUgMCAuNjYuMjVsMi41IDUuNjUgMS42MS0uNzEgNC42NS4wMSAxLjM2IDUuMzR6TTIuMDYgNS41NiAxIDQuNSA0LjUgMSA4IDQuNSA2Ljk0IDUuNTYgNS4zMiAzLjk0YTEwLjQ1NyAxMC40NTcgMCAwIDAgMS44OCA4Ljk5TDYuMTMgMTRBMTEuOTc0IDExLjk3NCAwIDAgMSAzLjUgNi41YzAtLjkyLjEtMS44Mi4zLTIuNjhMMi4wNiA1LjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dpcGVWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMmg1djVINC41VjQuMDljLTEuODYgMi4xMS0zIDQuODgtMyA3LjkxczEuMTQgNS43OSAzIDcuOTFWMTdINnY1SDF2LTEuNWgyLjAyQzEuMTMgMTguMTggMCAxNS4yMiAwIDEyczEuMTMtNi4xOCAzLjAyLTguNUgxVjJ6bTE5LjIyIDgtNC4xNS4wMWEuOTc1Ljk3NSAwIDAgMC0uNDUuMDhsLS41OS4yNi0xLjgzLTQuMWMtLjU2LTEuMjYtMi4wNC0xLjgzLTMuMy0xLjI3cy0xLjgzIDIuMDQtMS4yNyAzLjNsMy4zIDcuNDUtMS44Ny4zOWMtLjE5LjA1LS45OS4yNy0xLjM2IDEuMjFMOCAxOS4xOWw2Ljc4IDIuNjdjLjQ5LjE5IDEuMDUuMTggMS41My0uMDRsNS45OS0yLjY1Yy44OS0uNCAxLjM3LTEuMzggMS4xMy0yLjMybC0xLjM2LTUuMzRjLS4yMi0uODYtLjk3LTEuNDctMS44NS0xLjUxem0xLjI3IDcuMzRMMTUuNSAyMGwtNC45Mi0xLjk2IDQuMTgtLjg4LTQuMy05LjdjLS4xMS0uMjUgMC0uNTUuMjUtLjY2LjI1LS4xMS41NSAwIC42Ni4yNWwyLjUgNS42NSAxLjYxLS43MSA0LjY1LjAxIDEuMzYgNS4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSAydjIuMDJDMTguMTggMi4xMyAxNS4yMiAxIDEyIDFTNS44MiAyLjEzIDMuNSA0LjAyVjJIMnY1aDVWNS41SDQuMDljMi4xMS0xLjg2IDQuODgtMyA3LjkxLTNzNS43OSAxLjE0IDcuOTEgM0gxN1Y3aDVWMmgtMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC44OSAxMy43Ny0zLjgtMS42N2MtLjEzLS4wNi0uMjgtLjEtLjQ0LS4xSDE0VjcuNjNjMC0xLjMyLS45Ni0yLjUtMi4yNy0yLjYyQTIuNTA4IDIuNTA4IDAgMCAwIDkgNy41djguMTVsLTEuODctLjRjLS4xOS0uMDMtMS4wMi0uMTUtMS43My41Nkw0IDE3LjIybDUuMTIgNS4xOWMuMzcuMzguODguNTkgMS40MS41OWg2LjU1Yy45OCAwIDEuODEtLjcgMS45Ny0xLjY3bC45Mi01LjQ0YTIgMiAwIDAgMC0xLjA4LTIuMTJ6TTE4IDE1LjU2IDE3LjA4IDIxaC02LjU1bC0zLjctMy43OCA0LjE3Ljg5VjcuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXY2LjE4aDEuNzZMMTggMTUuNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2l0Y2hBY2Nlc3NTaG9ydGN1dEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMDYgOC45NCA1IDhsMi4wNi0uOTRMOCA1bC45NCAyLjA2TDExIDhsLTIuMDYuOTRMOCAxMWwtLjk0LTIuMDZ6TTggMjFsLjk0LTIuMDZMMTEgMThsLTIuMDYtLjk0TDggMTVsLS45NCAyLjA2TDUgMThsMi4wNi45NEw4IDIxem0tMy42My04LjYzTDMgMTNsMS4zNy42M0w1IDE1bC42My0xLjM3TDcgMTNsLTEuMzctLjYzTDUgMTFsLS42MyAxLjM3ek0xMiAxMmMwLTMuMDkgMS4zOC01Ljk0IDMuNDQtOEgxMlYyaDd2N2gtMlY1LjI4Yy0xLjggMS43NC0zIDQuMi0zIDYuNzIgMCAzLjMyIDIuMSA2LjM2IDUgNy44MlYyMmMtNC4wOS0xLjU5LTctNS42NS03LTEwem0xMiAyaC0ydi0yaC0ydjJoLTJ2MmgydjJoMnYtMmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dpdGNoQWNjZXNzU2hvcnRjdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjA2IDguOTQgNSA4bDIuMDYtLjk0TDggNWwuOTQgMi4wNkwxMSA4bC0yLjA2Ljk0TDggMTFsLS45NC0yLjA2ek04IDIxbC45NC0yLjA2TDExIDE4bC0yLjA2LS45NEw4IDE1bC0uOTQgMi4wNkw1IDE4bDIuMDYuOTRMOCAyMXptLTMuNjMtOC42M0wzIDEzbDEuMzcuNjNMNSAxNWwuNjMtMS4zN0w3IDEzbC0xLjM3LS42M0w1IDExbC0uNjMgMS4zN3pNMTIgMTJjMC0zLjA5IDEuMzgtNS45NCAzLjQ0LThIMTJWMmg3djdoLTJWNS4yOGMtMS44IDEuNzQtMyA0LjItMyA2LjcyIDAgMy4zMiAyLjEgNi4zNiA1IDcuODJWMjJjLTQuMDktMS41OS03LTUuNjUtNy0xMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN5bmNBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjQxIDEzLjQxIDYgMTJsLTQgNCA0IDQgMS40MS0xLjQxTDUuODMgMTdIMjF2LTJINS44M3pNMTYuNTkgMTAuNTkgMTggMTJsNC00LTQtNC0xLjQxIDEuNDFMMTguMTcgN0gzdjJoMTUuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTeXN0ZW1VcGRhdGVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDE2IDQtNGgtM1YzaC0ydjlIOGw0IDR6bTktMTNoLTZ2MS45OWg2djE0LjAzSDNWNC45OWg2VjNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOSAxMyA0LTRoLTNWM2gtMnY5SDhsNCA0em05LTEzaC02djEuOTloNnYxNC4wM0gzVjQuOTloNlYzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhYlVuc2VsZWN0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgOWgyVjdIMXYyem0wIDRoMnYtMkgxdjJ6bTAtOGgyVjNjLTEuMSAwLTIgLjktMiAyem04IDE2aDJ2LTJIOXYyem0tOC00aDJ2LTJIMXYyem0yIDR2LTJIMWMwIDEuMS45IDIgMiAyek0yMSAzaC04djZoMTBWNWMwLTEuMS0uOS0yLTItMnptMCAxNGgydi0yaC0ydjJ6TTkgNWgyVjNIOXYyek01IDIxaDJ2LTJINXYyek01IDVoMlYzSDV2MnptMTYgMTZjMS4xIDAgMi0uOSAyLTJoLTJ2MnptMC04aDJ2LTJoLTJ2MnptLTggOGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUYWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxMHY0aDh2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUYWJsZVZpZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3SDljLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnptMCAydjJIOVY5aDEwem0tNiA2di0yaDJ2MmgtMnptMiAydjJoLTJ2LTJoMnptLTQtMkg5di0yaDJ2MnptNi0yaDJ2MmgtMnYtMnptLTggNGgydjJIOXYtMnptOCAydi0yaDJ2MmgtMnpNNiAxN0g1Yy0xLjEgMC0yLS45LTItMlY1YzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDJ2MWgtMlY1SDV2MTBoMXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGFza0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDUuMTggMTAuNTkgMTYuNmwtNC4yNC00LjI0IDEuNDEtMS40MSAyLjgzIDIuODMgMTAtMTBMMjIgNS4xOHptLTIuMjEgNS4wNGMuMTMuNTcuMjEgMS4xNy4yMSAxLjc4IDAgNC40Mi0zLjU4IDgtOCA4cy04LTMuNTgtOC04IDMuNTgtOCA4LThjMS41OCAwIDMuMDQuNDYgNC4yOCAxLjI1bDEuNDQtMS40NEE5LjkgOS45IDAgMCAwIDEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMGMwLTEuMTktLjIyLTIuMzMtLjYtMy4zOWwtMS42MSAxLjYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGVybWluYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZhMiAyIDAgMCAwLTItMnptMCAxNEg0VjhoMTZ2MTB6bS0yLTFoLTZ2LTJoNnYyek03LjUgMTdsLTEuNDEtMS40MUw4LjY3IDEzbC0yLjU5LTIuNTlMNy41IDlsNCA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRleHRSb3RhdGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggNC0zIDNoMnYxM2gyVjdoMmwtMy0zem0tNi4yIDExLjV2LTVsMi4yLS45VjcuNUwzIDEyLjI1djEuNWwxMSA0Ljc1di0yLjFsLTIuMi0uOXpNNC45OCAxMyAxMCAxMS4xM3YzLjc0TDQuOTggMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUZXh0Um90YXRlVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ljc1IDVoLTEuNUw5LjUgMTZoMi4xbC45LTIuMmg1bC45IDIuMmgyLjFMMTUuNzUgNXptLTIuNjIgN0wxNSA2Ljk4IDE2Ljg3IDEyaC0zLjc0ek02IDIwbDMtM0g3VjRINXYxM0gzbDMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRleHRSb3RhdGlvbkFuZ2xlZG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMjF2LTQuMjRsLTEuNDEgMS40MS05LjItOS4xOS0xLjQxIDEuNDEgOS4xOSA5LjE5TDEwLjc2IDIxSDE1ek0xMS4yNSA4LjQ4bDMuNTQgMy41NC0uOTIgMi4xOSAxLjQ4IDEuNDggNC40Mi0xMS4xNC0xLjA2LTEuMDVMNy41NyA3LjkyIDkuMDYgOS40bDIuMTktLjkyem02LjU5LTMuMDUtMi4yMyA0Ljg3LTIuNjQtMi42NCA0Ljg3LTIuMjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUZXh0Um90YXRpb25BbmdsZXVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi43NiA5IDEuNDEgMS40MS05LjE5IDkuMTkgMS40MSAxLjQxIDkuMTktOS4xOUwyMSAxMy4yNFY5aC00LjI0em0tOC4yOCAzLjc1IDMuNTQtMy41NCAyLjE5LjkyIDEuNDgtMS40OEw0LjU2IDQuMjMgMy41IDUuMjlsNC40MiAxMS4xNCAxLjQ4LTEuNDgtLjkyLTIuMnptLS44Mi0xLjcyTDUuNDMgNi4xNmw0Ljg3IDIuMjMtMi42NCAyLjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGV4dFJvdGF0aW9uRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNiAyMCAzLTNIN1Y0SDV2MTNIM2wzIDN6bTYuMi0xMS41djVsLTIuMi45djIuMWwxMS00Ljc1di0xLjVMMTAgNS41djIuMWwyLjIuOXptNi44MiAyLjVMMTQgMTIuODdWOS4xM0wxOS4wMiAxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRleHRSb3RhdGlvbk5vbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxIDE4LTMtM3YySDV2MmgxM3YybDMtM3pNOS41IDExLjhoNWwuOSAyLjJoMi4xTDEyLjc1IDNoLTEuNUw2LjUgMTRoMi4xbC45LTIuMnpNMTIgNC45OCAxMy44NyAxMGgtMy43NEwxMiA0Ljk4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGhlYXRlcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDN2MmgtMlYzSDh2Mkg2VjNINHYxOGgydi0yaDJ2Mmg4di0yaDJ2MmgyVjNoLTJ6TTggMTdINnYtMmgydjJ6bTAtNEg2di0yaDJ2MnptMC00SDZWN2gydjJ6bTYgMTBoLTRWNWg0djE0em00LTJoLTJ2LTJoMnYyem0wLTRoLTJ2LTJoMnYyem0wLTRoLTJWN2gydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaHVtYkRvd25PZmZBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAzSDZjLS44MyAwLTEuNTQuNS0xLjg0IDEuMjJsLTMuMDIgNy4wNWMtLjA5LjIzLS4xNC40Ny0uMTQuNzN2MmMwIDEuMS45IDIgMiAyaDYuMzFsLS45NSA0LjU3LS4wMy4zMmMwIC40MS4xNy43OS40NCAxLjA2TDkuODMgMjNsNi41OS02LjU5Yy4zNi0uMzYuNTgtLjg2LjU4LTEuNDFWNWMwLTEuMS0uOS0yLTItMnptMCAxMi00LjM0IDQuMzRMMTIgMTRIM3YtMmwzLTdoOXYxMHptNC0xMmg0djEyaC00VjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaHVtYkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDNINmMtLjgzIDAtMS41NC41LTEuODQgMS4yMmwtMy4wMiA3LjA1Yy0uMDkuMjMtLjE0LjQ3LS4xNC43M3YyYzAgMS4xLjkgMiAyIDJoNi4zMWwtLjk1IDQuNTctLjAzLjMyYzAgLjQxLjE3Ljc5LjQ0IDEuMDZMOS44MyAyM2w2LjU5LTYuNTljLjM2LS4zNi41OC0uODYuNTgtMS40MVY1YzAtMS4xLS45LTItMi0yem0wIDEyLTQuMzQgNC4zNEwxMiAxNEgzdi0ybDMtN2g5djEwem00LTEyaDR2MTJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaHVtYlVwT2ZmQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAyMWg5Yy44MyAwIDEuNTQtLjUgMS44NC0xLjIybDMuMDItNy4wNWMuMDktLjIzLjE0LS40Ny4xNC0uNzN2LTJjMC0xLjEtLjktMi0yLTJoLTYuMzFsLjk1LTQuNTcuMDMtLjMyYzAtLjQxLS4xNy0uNzktLjQ0LTEuMDZMMTQuMTcgMSA3LjU4IDcuNTlDNy4yMiA3Ljk1IDcgOC40NSA3IDl2MTBjMCAxLjEuOSAyIDIgMnpNOSA5bDQuMzQtNC4zNEwxMiAxMGg5djJsLTMgN0g5Vjl6TTEgOWg0djEySDFWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRodW1iVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMjFoOWMuODMgMCAxLjU0LS41IDEuODQtMS4yMmwzLjAyLTcuMDVjLjA5LS4yMy4xNC0uNDcuMTQtLjczdi0yYzAtMS4xLS45LTItMi0yaC02LjMxbC45NS00LjU3LjAzLS4zMmMwLS40MS0uMTctLjc5LS40NC0xLjA2TDE0LjE3IDEgNy41OCA3LjU5QzcuMjIgNy45NSA3IDguNDUgNyA5djEwYzAgMS4xLjkgMiAyIDJ6TTkgOWw0LjM0LTQuMzRMMTIgMTBoOXYybC0zIDdIOVY5ek0xIDloNHYxMkgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGh1bWJzVXBEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YzAtLjU1LS40NS0xLTEtMUg1LjgybC42Ni0zLjE4LjAyLS4yM2MwLS4zMS0uMTMtLjU5LS4zMy0uOEw1LjM4IDAgLjQ0IDQuOTRDLjE3IDUuMjEgMCA1LjU5IDAgNnY2LjVjMCAuODMuNjcgMS41IDEuNSAxLjVoNi43NWMuNjIgMCAxLjE1LS4zOCAxLjM4LS45MWwyLjI2LTUuMjljLjA3LS4xNy4xMS0uMzYuMTEtLjU1VjZ6bS0yIDEuMTNMNy45MiAxMkgyVjYuMjFsMS45My0xLjkzTDMuMzYgN0gxMHYuMTN6TTIyLjUgMTBoLTYuNzVjLS42MiAwLTEuMTUuMzgtMS4zOC45MWwtMi4yNiA1LjI5Yy0uMDcuMTctLjExLjM2LS4xMS41NVYxOGMwIC41NS40NSAxIDEgMWg1LjE4bC0uNjYgMy4xOC0uMDIuMjRjMCAuMzEuMTMuNTkuMzMuOGwuNzkuNzggNC45NC00Ljk0Yy4yNy0uMjcuNDQtLjY1LjQ0LTEuMDZ2LTYuNWMwLS44My0uNjctMS41LTEuNS0xLjV6bS0uNSA3Ljc5LTEuOTMgMS45My41Ny0yLjcySDE0di0uMTNMMTYuMDggMTJIMjJ2NS43OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRpbWVsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgOGMwIDEuMS0uOSAyLTIgMmExLjcgMS43IDAgMCAxLS41MS0uMDdsLTMuNTYgMy41NWMuMDUuMTYuMDcuMzQuMDcuNTIgMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yYzAtLjE4LjAyLS4zNi4wNy0uNTJsLTIuNTUtMi41NWMtLjE2LjA1LS4zNC4wNy0uNTIuMDdzLS4zNi0uMDItLjUyLS4wN2wtNC41NSA0LjU2Yy4wNS4xNi4wNy4zMy4wNy41MSAwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTJjLjE4IDAgLjM1LjAyLjUxLjA3bDQuNTYtNC41NUM4LjAyIDkuMzYgOCA5LjE4IDggOWMwLTEuMS45LTIgMi0yczIgLjkgMiAyYzAgLjE4LS4wMi4zNi0uMDcuNTJsMi41NSAyLjU1Yy4xNi0uMDUuMzQtLjA3LjUyLS4wN3MuMzYuMDIuNTIuMDdsMy41NS0zLjU2QTEuNyAxLjcgMCAwIDEgMTkgOGMwLTEuMS45LTIgMi0yczIgLjkgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGlwc0FuZFVwZGF0ZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDIwaDRjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yem0tMi0xaDh2LTJINXYyem0xMS41LTkuNWMwIDMuODItMi42NiA1Ljg2LTMuNzcgNi41SDUuMjdjLTEuMTEtLjY0LTMuNzctMi42OC0zLjc3LTYuNUMxLjUgNS4zNiA0Ljg2IDIgOSAyczcuNSAzLjM2IDcuNSA3LjV6bS0yIDBDMTQuNSA2LjQ3IDEyLjAzIDQgOSA0UzMuNSA2LjQ3IDMuNSA5LjVjMCAyLjQ3IDEuNDkgMy44OSAyLjM1IDQuNWg2LjNjLjg2LS42MSAyLjM1LTIuMDMgMi4zNS00LjV6bTYuODctMi4xM0wyMCA4bDEuMzcuNjNMMjIgMTBsLjYzLTEuMzdMMjQgOGwtMS4zNy0uNjNMMjIgNmwtLjYzIDEuMzd6TTE5IDZsLjk0LTIuMDZMMjIgM2wtMi4wNi0uOTRMMTkgMGwtLjk0IDIuMDZMMTYgM2wyLjA2Ljk0TDE5IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUb2MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgOWgxNFY3SDN2MnptMCA0aDE0di0ySDN2MnptMCA0aDE0di0ySDN2MnptMTYgMGgydi0yaC0ydjJ6bTAtMTB2MmgyVjdoLTJ6bTAgNmgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUb2RheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOWgxNHYxMHptMC0xMkg1VjVoMTR2MnpNNyAxMWg1djVIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRva2VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEgNy05LTUtOSA1djEwbDkgNSA5LTVWN3ptLTktMi43MSA1LjkxIDMuMjgtMy4wMSAxLjY3QzE0LjE3IDguNDggMTMuMTQgOCAxMiA4cy0yLjE3LjQ4LTIuOSAxLjI0TDYuMDkgNy41NyAxMiA0LjI5em0tMSAxNC44Ny02LTMuMzNWOS4yNkw4LjEzIDExYy0uMDkuMzEtLjEzLjY1LS4xMyAxIDAgMS44NiAxLjI3IDMuNDMgMyAzLjg3djMuMjl6TTEwIDEyYzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTMgNy4xNnYtMy4yOGMxLjczLS40NCAzLTIuMDEgMy0zLjg3IDAtLjM1LS4wNC0uNjktLjEzLTEuMDFMMTkgOS4yNnY2LjU3bC02IDMuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUb2xsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LTgtMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6TTMgMTJhNS45OSA1Ljk5IDAgMCAxIDQtNS42NVY0LjI2QzMuNTUgNS4xNSAxIDguMjcgMSAxMnMyLjU1IDYuODUgNiA3Ljc0di0yLjA5QTUuOTkgNS45OSAwIDAgMSAzIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVG91Y2hBcHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC4xOSAxMi40NC0zLjI0LTEuNjJjMS4yOS0xIDIuMTItMi41NiAyLjEyLTQuMzIgMC0zLjAzLTIuNDctNS41LTUuNS01LjVzLTUuNSAyLjQ3LTUuNSA1LjVjMCAyLjEzIDEuMjIgMy45OCAzIDQuODl2My4yNmMtMi4xNS0uNDYtMi4wMi0uNDQtMi4yNi0uNDQtLjUzIDAtMS4wMy4yMS0xLjQxLjU5TDQgMTYuMjJsNS4wOSA1LjA5Yy40My40NCAxLjAzLjY5IDEuNjUuNjloNi4zYy45OCAwIDEuODEtLjcgMS45Ny0xLjY3bC44LTQuNzFjLjIyLTEuMy0uNDMtMi41OC0xLjYyLTMuMTh6bS0uMzUgMi44NS0uOCA0LjcxaC02LjNjLS4wOSAwLS4xNy0uMDQtLjI0LS4xbC0zLjY4LTMuNjggNC4yNS44OVY2LjVjMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjV2NmgxLjc2bDMuNDYgMS43M2MuNC4yLjYyLjYzLjU1IDEuMDZ6TTguMDcgNi41YzAtMS45MyAxLjU3LTMuNSAzLjUtMy41czMuNSAxLjU3IDMuNSAzLjVjMCAuOTUtLjM4IDEuODEtMSAyLjQ0VjYuNWEyLjUgMi41IDAgMCAwLTUgMHYyLjQ0Yy0uNjItLjYzLTEtMS40OS0xLTIuNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUb3VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNEg3VjJINXYyMGgydi04aDE0bC0yLTUgMi01em0tMy44NiA1Ljc0LjkgMi4yNkg3VjZoMTEuMDVsLS45IDIuMjYtLjMuNzQuMjkuNzR6TTE0IDljMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yIDIgLjkgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHJhY2tDaGFuZ2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS4wNyA0LjkzLTEuNDEgMS40MUE4LjAxNCA4LjAxNCAwIDAgMSAyMCAxMmMwIDQuNDItMy41OCA4LTggOHMtOC0zLjU4LTgtOGMwLTQuMDggMy4wNS03LjQ0IDctNy45M3YyLjAyQzguMTYgNi41NyA2IDkuMDMgNiAxMmMwIDMuMzEgMi42OSA2IDYgNnM2LTIuNjkgNi02YzAtMS42Ni0uNjctMy4xNi0xLjc2LTQuMjRsLTEuNDEgMS40MUMxNS41NSA5LjkgMTYgMTAuOSAxNiAxMmMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNGMwLTEuODYgMS4yOC0zLjQxIDMtMy44NnYyLjE0Yy0uNi4zNS0xIC45OC0xIDEuNzIgMCAxLjEuOSAyIDIgMnMyLS45IDItMmMwLS43NC0uNC0xLjM4LTEtMS43MlYyaC0xQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBjMC0yLjc2LTEuMTItNS4yNi0yLjkzLTcuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmFuc2NyaWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxM2MyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTYuMzkgOC41NkMxMy43MSAxNC43IDExLjUzIDE0IDkgMTRzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDEgMTguMjJWMjFoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpNMTUgMTlIM3YtLjc4YzAtLjM4LjItLjcyLjUyLS44OEM0LjcxIDE2LjczIDYuNjMgMTYgOSAxNmMyLjM3IDAgNC4yOS43MyA1LjQ4IDEuMzQuMzIuMTYuNTIuNS41Mi44OFYxOXptMi45My0zIDEuNjMtMS42M2MtMi43Ny0zLjAyLTIuNzctNy41NiAwLTEwLjc0TDE3LjkzIDJjLTMuOSAzLjg5LTMuOTEgOS45NSAwIDE0em00Ljk5LTUuMDVhMy4zMTcgMy4zMTcgMCAwIDEgMC0zLjg5bC0xLjY4LTEuNjljLTIuMDIgMi4wMi0yLjAyIDUuMDcgMCA3LjI3bDEuNjgtMS42OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyYW5zbGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIuODcgMTUuMDctMi41NC0yLjUxLjAzLS4wM0ExNy41MiAxNy41MiAwIDAgMCAxNC4wNyA2SDE3VjRoLTdWMkg4djJIMXYxLjk5aDExLjE3QzExLjUgNy45MiAxMC40NCA5Ljc1IDkgMTEuMzUgOC4wNyAxMC4zMiA3LjMgOS4xOSA2LjY5IDhoLTJjLjczIDEuNjMgMS43MyAzLjE3IDIuOTggNC41NmwtNS4wOSA1LjAyTDQgMTlsNS01IDMuMTEgMy4xMS43Ni0yLjA0ek0xOC41IDEwaC0yTDEyIDIyaDJsMS4xMi0zaDQuNzVMMjEgMjJoMmwtNC41LTEyem0tMi42MiA3IDEuNjItNC4zM0wxOS4xMiAxN2gtMy4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyZW5kaW5nRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYgMTggMi4yOS0yLjI5LTQuODgtNC44OC00IDRMMiA3LjQxIDMuNDEgNmw2IDYgNC00IDYuMyA2LjI5TDIyIDEydjZoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmVuZGluZ0ZsYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDEyLTQtNHYzSDN2MmgxNXYzbDQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyZW5kaW5nVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2IDYgMi4yOSAyLjI5LTQuODggNC44OC00LTRMMiAxNi41OSAzLjQxIDE4bDYtNiA0IDQgNi4zLTYuMjlMMjIgMTJWNmgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyb3VibGVzaG9vdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDIwLjU5LTQuNjktNC42OUE3LjkwMiA3LjkwMiAwIDAgMCAxOSAxMWMwLTQuNDItMy41OC04LTgtOC00LjA4IDAtNy40NCAzLjA1LTcuOTMgN2gyLjAyQzUuNTcgNy4xNyA4LjAzIDUgMTEgNWMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNmMtMi40MiAwLTQuNS0xLjQ0LTUuNDUtMy41SDMuNEM0LjQ1IDE2LjY5IDcuNDYgMTkgMTEgMTljMS44NSAwIDMuNTUtLjYzIDQuOS0xLjY5TDIwLjU5IDIyIDIyIDIwLjU5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjQzIDkuNjkgOS42NSAxNWgxLjY0bDEuMjYtMy43OC45NSAyLjI4aDJWMTJoLTFsLTEuMjUtM2gtMS41NGwtMS4xMiAzLjM3TDkuMzUgN0g3LjdsLTEuMjUgNEgxdjEuNWg2LjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg1LjE3TDQgMTcuMTdWNGgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgMTUgMS41Ny0zLjQzTDE3IDEwbC0zLjQzLTEuNTdMMTIgNWwtMS41NyAzLjQzTDcgMTBsMy40MyAxLjU3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHVybmVkSW5Ob3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDNIN2MtMS4xIDAtMS45OS45LTEuOTkgMkw1IDIxbDctMyA3IDNWNWMwLTEuMS0uOS0yLTItMnptMCAxNS01LTIuMThMNyAxOFY1aDEwdjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHVybmVkSW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDNIN2MtMS4xIDAtMS45OS45LTEuOTkgMkw1IDIxbDctMyA3IDNWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVVuZm9sZExlc3NEb3VibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41OCAxLjQxIDE1LjE2IDBsLTMuMTcgMy4xN0w4LjgyIDAgNy40MSAxLjQxIDExLjk5IDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjU4IDYuNDEgMTUuMTYgNWwtMy4xNyAzLjE3TDguODIgNSA3LjQxIDYuNDEgMTEuOTkgMTF6TTcuNDIgMTcuNTkgOC44NCAxOWwzLjE3LTMuMTdMMTUuMTggMTlsMS40MS0xLjQxTDEyLjAxIDEzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjQyIDIyLjU5IDguODQgMjRsMy4xNy0zLjE3TDE1LjE4IDI0bDEuNDEtMS40MUwxMi4wMSAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVVuZm9sZE1vcmVEb3VibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3LjgzIDE1LjE3IDExbDEuNDEtMS40MUwxMiA1IDcuNDEgOS41OSA4LjgzIDExIDEyIDcuODN6bTAtNUwxNS4xNyA2bDEuNDEtMS40MUwxMiAwIDcuNDEgNC41OSA4LjgzIDYgMTIgMi44M3ptMCAxOC4zNEw4LjgzIDE4bC0xLjQxIDEuNDFMMTIgMjRsNC41OS00LjU5TDE1LjE3IDE4IDEyIDIxLjE3em0wLTVMOC44MyAxM2wtMS40MSAxLjQxTDEyIDE5bDQuNTktNC41OUwxNS4xNyAxMyAxMiAxNi4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVVucHVibGlzaGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy45NCA1LjEyIDYuNDkgMy42NkE5LjkxIDkuOTEgMCAwIDEgMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMCAwIDIuMDQtLjYxIDMuOTMtMS42NiA1LjUxbC0xLjQ2LTEuNDZBNy44NjkgNy44NjkgMCAwIDAgMjAgMTJjMC00LjQxLTMuNTktOC04LTgtMS40OCAwLTIuODYuNDEtNC4wNiAxLjEyem05LjcyIDQuNDEtMS40MS0xLjQxLTIuNjUgMi42NSAxLjQxIDEuNDEgMi42NS0yLjY1em0yLjEyIDEzLjA4LTIuMjctMi4yN0E5LjkxIDkuOTEgMCAwIDEgMTIgMjJDNi40OCAyMiAyIDE3LjUyIDIgMTJjMC0yLjA0LjYxLTMuOTMgMS42Ni01LjUxTDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQgMS40MnptLTMuNzItMy43M0wxMi4xOCAxNWwtMS41OSAxLjU5LTQuMjQtNC4yNCAxLjQxLTEuNDEgMi44MyAyLjgzLjE4LS4xOC01LjY1LTUuNjVBNy45MzIgNy45MzIgMCAwIDAgNCAxMmMwIDQuNDEgMy41OSA4IDggOCAxLjQ4IDAgMi44Ni0uNDEgNC4wNi0xLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVXBkYXRlRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC45NCAxM2E4Ljg2NSA4Ljg2NSAwIDAgMS0xLjMzIDMuNzlsLTEuNDctMS40N2MuMzgtLjcxLjY1LTEuNDkuNzctMi4zMmgyLjAzek04LjY3IDUuODRBNy4wNiA3LjA2IDAgMCAxIDEyIDVhNy4wMSA3LjAxIDAgMCAxIDUuNzQgM0gxNXYyaDZWNGgtMnYyLjM2QzE3LjM1IDQuMzIgMTQuODMgMyAxMiAzYy0xLjc2IDAtMy40LjUxLTQuNzggMS4zOWwxLjQ1IDEuNDV6TTExIDd2MS4xN2wyIDJWN2gtMnptOC43OCAxNS42MS0zLTNBOC45NzMgOC45NzMgMCAwIDEgMTIgMjFhOSA5IDAgMCAxLTktOWMwLTEuNzYuNTEtMy40IDEuMzktNC43OGwtMy0zTDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNCAxLjQyem0tNC40Ni00LjQ2TDUuODQgOC42N0E3LjA2IDcuMDYgMCAwIDAgNSAxMmMwIDMuODYgMy4xNCA3IDcgNyAxLjIgMCAyLjM0LS4zMSAzLjMyLS44NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVVwZGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDh2NWw0LjI1IDIuNTIuNzctMS4yOC0zLjUyLTIuMDlWOEgxMXptMTAgMlYzbC0yLjY0IDIuNjRBOC45MzcgOC45MzcgMCAwIDAgMTIgM2E5IDkgMCAxIDAgOSA5aC0yYzAgMy44Ni0zLjE0IDctNyA3cy03LTMuMTQtNy03IDMuMTQtNyA3LTdjMS45MyAwIDMuNjguNzkgNC45NSAyLjA1TDE0IDEwaDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVcGdyYWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTh2Mkg4di0yaDh6TTExIDcuOTlWMTZoMlY3Ljk5aDNMMTIgNCA4IDcuOTloM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZlcmlmaWVkVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMSAzIDV2NmMwIDUuNTUgMy44NCAxMC43NCA5IDEyIDUuMTYtMS4yNiA5LTYuNDUgOS0xMlY1bC05LTR6bTcgMTBjMCA0LjUyLTIuOTggOC42OS03IDkuOTMtNC4wMi0xLjI0LTctNS40MS03LTkuOTNWNi4zbDctMy4xMSA3IDMuMTFWMTF6bS0xMS41OS41OUw2IDEzbDQgNCA4LTgtMS40MS0xLjQyTDEwIDE0LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmVyaWZpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxMS45OSAyMC41NiA5LjJsLjM0LTMuNjktMy42MS0uODJMMTUuNCAxLjUgMTIgMi45NiA4LjYgMS41IDYuNzEgNC42OSAzLjEgNS41bC4zNCAzLjdMMSAxMS45OWwyLjQ0IDIuNzktLjM0IDMuNyAzLjYxLjgyIDEuODkgMy4yIDMuNC0xLjQ3IDMuNCAxLjQ2IDEuODktMy4xOSAzLjYxLS44Mi0uMzQtMy42OSAyLjQ0LTIuOHptLTMuOTUgMS40OC0uNTYuNjUuMDguODUuMTggMS45NS0xLjkuNDMtLjg0LjE5LS40NC43NC0uOTkgMS42OC0xLjc4LS43Ny0uOC0uMzQtLjc5LjM0LTEuNzguNzctLjk5LTEuNjctLjQ0LS43NC0uODQtLjE5LTEuOS0uNDMuMTgtMS45Ni4wOC0uODUtLjU2LS42NUwzLjY3IDEybDEuMjktMS40OC41Ni0uNjUtLjA5LS44Ni0uMTgtMS45NCAxLjktLjQzLjg0LS4xOS40NC0uNzQuOTktMS42OCAxLjc4Ljc3LjguMzQuNzktLjM0IDEuNzgtLjc3Ljk5IDEuNjguNDQuNzQuODQuMTkgMS45LjQzLS4xOCAxLjk1LS4wOC44NS41Ni42NSAxLjI5IDEuNDctMS4yOCAxLjQ4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMC4wOSAxMy43NS0yLjMyLTIuMzMtMS40OCAxLjQ5IDMuOCAzLjgxIDcuMzQtNy4zNi0xLjQ4LTEuNDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWZXJ0aWNhbFNwbGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzaDh2Mkgzem0wIDRoOHYySDN6bTAtOGg4djJIM3ptMC00aDh2Mkgzem0xNiAydjEwaC00VjdoNG0yLTJoLTh2MTRoOFY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0FnZW5kYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEzSDVjLTEuMSAwLTIgLjktMiAydjRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtNGMwLTEuMS0uOS0yLTItMnptMCA2SDV2LTRoMTR2NHpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnY0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCA2SDVWNWgxNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0FycmF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgN3YxMEg5VjdoNnptNi0yaC0zdjE0aDNWNXptLTQgMEg3djE0aDEwVjV6TTYgNUgzdjE0aDNWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZXdDYXJvdXNlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgN2g0djEwSDJWN3ptNSAxMmgxMFY1SDd2MTR6TTkgN2g2djEwSDlWN3ptOSAwaDR2MTBoLTRWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZXdDb2x1bW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDV2MTRoMThWNUgzem01LjMzIDEySDVWN2gzLjMzdjEwem01LjM0IDBoLTMuMzNWN2gzLjMzdjEwek0xOSAxN2gtMy4zM1Y3SDE5djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0NvbWZ5QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3aDR2NEg3ek0xMyA3aDR2NGgtNHpNNyAxM2g0djRIN3pNMTMgMTNoNHY0aC00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjZoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3Q29tcGFjdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDRWNmgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDcuNWg0djRoLTR6TTEyLjUgNy41aDR2NGgtNHpNNy41IDEyLjVoNHY0aC00ek0xMi41IDEyLjVoNHY0aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0NvenkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjI1IDcuMjVoNHY0aC00ek0xMi43NSA3LjI1aDR2NGgtNHpNNy4yNSAxMi43NWg0djRoLTR6TTEyLjc1IDEyLjc1aDR2NGgtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDE2djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0RheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMThIMnYyaDE5di0yem0tMi04djRINHYtNGgxNW0xLTJIM2MtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDFoMTdjLjU1IDAgMS0uNDUgMS0xVjljMC0uNTUtLjQ1LTEtMS0xem0xLTRIMnYyaDE5VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3SGVhZGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTVoMTZ2LTJINHYyem0wIDRoMTZ2LTJINHYyem0wLThoMTZWOUg0djJ6bTAtNnYyaDE2VjVINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZXdJbkFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA0YzAtLjU1LjQ1LTEgMS0xaDJWMUg0QzIuMzQgMSAxIDIuMzQgMSA0djJoMlY0ek0zIDIwdi0ySDF2MmMwIDEuNjYgMS4zNCAzIDMgM2gydi0ySDRjLS41NSAwLTEtLjQ1LTEtMXpNMjAgMWgtMnYyaDJjLjU1IDAgMSAuNDUgMSAxdjJoMlY0YzAtMS42Ni0xLjM0LTMtMy0zek0yMSAyMGMwIC41NS0uNDUgMS0xIDFoLTJ2MmgyYzEuNjYgMCAzLTEuMzQgMy0zdi0yaC0ydjJ6TTE5IDE0Ljg3VjkuMTNjMC0uNzItLjM4LTEuMzgtMS0xLjczbC01LTIuODhjLS4zMS0uMTgtLjY1LS4yNy0xLS4yN3MtLjY5LjA5LTEgLjI3TDYgNy4zOWMtLjYyLjM2LTEgMS4wMi0xIDEuNzR2NS43NGMwIC43Mi4zOCAxLjM4IDEgMS43M2w1IDIuODhjLjMxLjE4LjY1LjI3IDEgLjI3cy42OS0uMDkgMS0uMjdsNS0yLjg4Yy42Mi0uMzUgMS0xLjAxIDEtMS43M3ptLTggMi4zLTQtMi4zdi00LjYzbDQgMi4zM3Y0LjZ6bTEtNi4zM0w4LjA0IDguNTMgMTIgNi4yNWwzLjk2IDIuMjhMMTIgMTAuODR6bTUgNC4wMy00IDIuM3YtNC42bDQtMi4zM3Y0LjYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0thbmJhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgN2gydjEwSDd6TTExIDdoMnY1aC0yek0xNSA3aDJ2OGgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0xpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDV2MTRoMThWNUgzem00IDJ2Mkg1VjdoMnptLTIgNnYtMmgydjJINXptMCAyaDJ2Mkg1di0yem0xNCAySDl2LTJoMTB2MnptMC00SDl2LTJoMTB2MnptMC00SDlWN2gxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld01vZHVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNXYxNGgxOFY1SDN6bTE2IDZoLTMuMzNWN0gxOXY0em0tNS4zMyAwaC0zLjMzVjdoMy4zM3Y0ek04LjMzIDd2NEg1VjdoMy4zM3pNNSAxN3YtNGgzLjMzdjRINXptNS4zMyAwdi00aDMuMzN2NGgtMy4zM3ptNS4zNCAwdi00SDE5djRoLTMuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3UXVpbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDV2MTRoMThWNUgzem01LjMzIDEySDVWN2gzLjMzdjEwem01LjM0IDBoLTMuMzN2LTRoMy4zM3Y0ek0xOSAxN2gtMy4zM3YtNEgxOXY0em0wLTZoLTguNjdWN0gxOXY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld1NpZGViYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDR2MTZoMjBWNEgyem0xOCA0LjY3aC0yLjVWNkgyMHYyLjY3em0tMi41IDJIMjB2Mi42N2gtMi41di0yLjY3ek00IDZoMTEuNXYxMkg0VjZ6bTEzLjUgMTJ2LTIuNjdIMjBWMThoLTIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZXdTdHJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDd2MTBjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAyem0xNiAxMEg1di00aDE0djR6TTUgMTFWN2gxNHY0SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3VGltZWxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE1aDZ2Mkg2ek0xMiA3aDZ2MmgtNnpNOSAxMWg2djJIOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld1dlZWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNOCAxOEg0VjZoNHYxMnptNiAwaC00VjZoNHYxMnptNiAwaC00VjZoNHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpc2liaWxpdHlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZhOS43NyA5Ljc3IDAgMCAxIDguODIgNS41IDkuNjQ3IDkuNjQ3IDAgMCAxLTIuNDEgMy4xMmwxLjQxIDEuNDFjMS4zOS0xLjIzIDIuNDktMi43NyAzLjE4LTQuNTNDMjEuMjcgNy4xMSAxNyA0IDEyIDRjLTEuMjcgMC0yLjQ5LjItMy42NC41N2wxLjY1IDEuNjVDMTAuNjYgNi4wOSAxMS4zMiA2IDEyIDZ6bS0xLjA3IDEuMTRMMTMgOS4yMWMuNTcuMjUgMS4wMy43MSAxLjI4IDEuMjhsMi4wNyAyLjA3Yy4wOC0uMzQuMTQtLjcuMTQtMS4wN0MxNi41IDkuMDEgMTQuNDggNyAxMiA3Yy0uMzcgMC0uNzIuMDUtMS4wNy4xNHpNMi4wMSAzLjg3bDIuNjggMi42OEExMS43MzggMTEuNzM4IDAgMCAwIDEgMTEuNUMyLjczIDE1Ljg5IDcgMTkgMTIgMTljMS41MiAwIDIuOTgtLjI5IDQuMzItLjgybDMuNDIgMy40MiAxLjQxLTEuNDFMMy40MiAyLjQ1IDIuMDEgMy44N3ptNy41IDcuNSAyLjYxIDIuNjFjLS4wNC4wMS0uMDguMDItLjEyLjAyYTIuNSAyLjUgMCAwIDEtMi41LTIuNWMwLS4wNS4wMS0uMDguMDEtLjEzem0tMy40LTMuNCAxLjc1IDEuNzVhNC42IDQuNiAwIDAgMC0uMzYgMS43OCA0LjUwNyA0LjUwNyAwIDAgMCA2LjI3IDQuMTRsLjk4Ljk4Yy0uODguMjQtMS44LjM4LTIuNzUuMzhhOS43NyA5Ljc3IDAgMCAxLTguODItNS41Yy43LTEuNDMgMS43Mi0yLjYxIDIuOTMtMy41M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpc2liaWxpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZhOS43NyA5Ljc3IDAgMCAxIDguODIgNS41QzE5LjE3IDE0Ljg3IDE1Ljc5IDE3IDEyIDE3cy03LjE3LTIuMTMtOC44Mi01LjVBOS43NyA5Ljc3IDAgMCAxIDEyIDZtMC0yQzcgNCAyLjczIDcuMTEgMSAxMS41IDIuNzMgMTUuODkgNyAxOSAxMiAxOXM5LjI3LTMuMTEgMTEtNy41QzIxLjI3IDcuMTEgMTcgNCAxMiA0em0wIDVhMi41IDIuNSAwIDAgMSAwIDUgMi41IDIuNSAwIDAgMSAwLTVtMC0yYy0yLjQ4IDAtNC41IDIuMDItNC41IDQuNVM5LjUyIDE2IDEyIDE2czQuNS0yLjAyIDQuNS00LjVTMTQuNDggNyAxMiA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVm9pY2VPdmVyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi43NiA1LjM2LTEuNjggMS42OWMuOCAxLjEzLjgzIDIuNTguMDkgMy43NGwxLjcgMS43YzEuOS0yLjAyIDEuODctNC45OC0uMTEtNy4xM3pNMjAuMDcgMmwtMS42MyAxLjYzYzIuNzIgMi45NyAyLjc2IDcuMzkuMTQgMTAuNTZsMS42NCAxLjY0YzMuNzQtMy44OSAzLjcxLTkuODQtLjE1LTEzLjgzek05LjQzIDUuMDRsMy41MyAzLjUzYTMuOTc5IDMuOTc5IDAgMCAwLTMuNTMtMy41M3pNNC40MSAyLjg2IDMgNC4yN2wyLjYyIDIuNjJDNS4yMyA3LjUgNSA4LjIyIDUgOWMwIDIuMjEgMS43OSA0IDQgNCAuNzggMCAxLjUtLjIzIDIuMTEtLjYybDQuNCA0LjRDMTMuNzQgMTUuNiAxMC43OCAxNSA5IDE1Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtLjM3LS4xMS0uNy0uMjktMS4wMkwxOS43MyAyMWwxLjQxLTEuNDFMNC40MSAyLjg2ek0zIDE5Yy4yMi0uNzIgMy4zMS0yIDYtMiAyLjcgMCA1LjggMS4yOSA2IDJIM3ptNi04Yy0xLjEgMC0yLS45LTItMiAwLS4yMi4wNC0uNDIuMTEtLjYybDIuNTEgMi41MWMtLjIuMDctLjQuMTEtLjYyLjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F0Y2hMYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptLjUtMTNIMTF2Nmw1LjIgMy4yLjgtMS4zLTQuNS0yLjdWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdlYmhvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNWg1Ljg4Yy4yNy0uMzEuNjctLjUgMS4xMi0uNS44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjVjLS40NCAwLS44NC0uMTktMS4xMi0uNUgxMS45QTUgNSAwIDEgMSA2IDExLjF2Mi4wN2MtMS4xNi40MS0yIDEuNTMtMiAyLjgzIDAgMS42NSAxLjM1IDMgMyAzczMtMS4zNSAzLTN2LTF6bTIuNS0xMWMxLjY1IDAgMyAxLjM1IDMgM2gyYzAtMi43Ni0yLjI0LTUtNS01YTUuMDAyIDUuMDAyIDAgMCAwLTMuNDUgOC42MmwtMi4zNSAzLjljLS42OC4xNC0xLjIuNzUtMS4yIDEuNDggMCAuODMuNjcgMS41IDEuNSAxLjVhMS40OTggMS40OTggMCAwIDAgMS40My0xLjk1bDMuMzgtNS42M0EzLjAwMyAzLjAwMyAwIDAgMSA5LjUgN2MwLTEuNjUgMS4zNS0zIDMtM3ptNC41IDljLS42NCAwLTEuMjMuMi0xLjcyLjU0bC0zLjA1LTUuMDdDMTEuNTMgOC4zNSAxMSA3Ljc0IDExIDdjMC0uODMuNjctMS41IDEuNS0xLjVTMTQgNi4xNyAxNCA3YzAgLjE1LS4wMi4yOS0uMDYuNDNsMi4xOSAzLjY1Yy4yOC0uMDUuNTctLjA4Ljg3LS4wOCAyLjc2IDAgNSAyLjI0IDUgNXMtMi4yNCA1LTUgNWE1IDUgMCAwIDEtNC4zMy0yLjVoMi42N2MuNDguMzIgMS4wNS41IDEuNjYuNSAxLjY1IDAgMy0xLjM1IDMtM3MtMS4zNS0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZHRoRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek00IDE4VjZoMXYxMkg0em0zIDBWNmgxMHYxMkg3em0xMyAwaC0xVjZoMXYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZHRoTm9ybWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTQgMThWNmg0djEySDR6bTYgMFY2aDR2MTJoLTR6bTEwIDBoLTRWNmg0djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2lkdGhXaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTQgMThWNmgydjEySDR6bTQgMFY2aDh2MTJIOHptMTIgMGgtMlY2aDJ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpUHJvdGVjdGVkU2V0dXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi43MSA1LjI5IDE5IDNoLTh2OGwyLjMtMi4zYzEuOTcgMS40NiAzLjI1IDMuNzggMy4yNSA2LjQyIDAgMS4zMS0uMzIgMi41NC0uODggMy42MyAyLjMzLTEuNTIgMy44OC00LjE0IDMuODgtNy4xMyAwLTIuNTItMS4xMS00Ljc3LTIuODQtNi4zM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy40NiA4Ljg4YzAtMS4zMS4zMi0yLjU0Ljg4LTMuNjNhOC40NzkgOC40NzkgMCAwIDAtMy44OCA3LjEzYzAgMi41MiAxLjEgNC43NyAyLjg0IDYuMzNMNSAyMWg4di04bC0yLjMgMi4zYy0xLjk2LTEuNDYtMy4yNC0zLjc4LTMuMjQtNi40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdvcmtIaXN0b3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxOVY4aDE2djMuMjljLjcyLjIyIDEuNC41NCAyIC45N1Y4YzAtMS4xMS0uODktMi0yLTJoLTRWNGMwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMTljMCAxLjExLjg5IDIgMiAyaDcuNjhjLS4zLS42Mi0uNS0xLjI5LS42LTJINHptNi0xNWg0djJoLTRWNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0xLjY1IDcuMzVMMTcuNSAxOC4yVjE1aDF2Mi43OWwxLjg1IDEuODUtLjcuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXb3JrT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0aDR2MmgtMy42bDIgMkgyMHY3LjZsMiAyVjhjMC0xLjExLS44OS0yLTItMmgtNFY0YzAtMS4xMS0uODktMi0yLTJoLTRjLS45OSAwLTEuOC43LTEuOTYgMS42NEwxMCA1LjZWNHpNMy40IDEuODQgMS45OSAzLjI1IDQuNzQgNkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOWMwIDEuMTEuODkgMiAyIDJoMTUuNzRsMiAyIDEuNDEtMS40MUwzLjQgMS44NHpNNCAxOVY4aDIuNzRsMTEgMTFINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdvcmtPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA2VjRoLTR2Mmg0ek00IDh2MTFoMTZWOEg0em0xNi0yYzEuMTEgMCAyIC44OSAyIDJ2MTFjMCAxLjExLS44OSAyLTIgMkg0Yy0xLjExIDAtMi0uODktMi0ybC4wMS0xMWMwLTEuMTEuODgtMiAxLjk5LTJoNFY0YzAtMS4xMS44OS0yIDItMmg0YzEuMTEgMCAyIC44OSAyIDJ2Mmg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtNFY0YzAtMS4xMS0uODktMi0yLTJoLTRjLTEuMTEgMC0yIC44OS0yIDJ2Mkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOWMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS02IDBoLTRWNGg0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXeXNpd3lnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTZINVY3aDE0djEyem0tMi03SDd2LTJoMTB2MnptLTQgNEg3di0yaDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVlvdXR1YmVTZWFyY2hlZEZvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMDEgMTRoLS44bC0uMjctLjI3YTYuNDUxIDYuNDUxIDAgMCAwIDEuNTctNC4yM2MwLTMuNTktMi45MS02LjUtNi41LTYuNXMtNi41IDMtNi41IDYuNUgybDMuODQgNCA0LjE2LTRINi41MWE0LjUgNC41IDAgMCAxIDkgMCA0LjUwNyA0LjUwNyAwIDAgMS02LjMyIDQuMTJMNy43MSAxNS4xYTYuNDc0IDYuNDc0IDAgMCAwIDcuNTItLjY3bC4yNy4yN3YuNzlsNS4wMSA0Ljk5TDIyIDE5bC00Ljk5LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVab29tSW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0em0uNS03SDl2Mkg3djFoMnYyaDF2LTJoMlY5aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lWm9vbU91dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QTYuNDcxIDYuNDcxIDAgMCAwIDE2IDkuNSA2LjUgNi41IDAgMSAwIDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6TTcgOWg1djFIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZEFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wMSAyMS4wMWMwIDEuMS44OSAxLjk5IDEuOTkgMS45OXMxLjk5LS44OSAxLjk5LTEuOTloLTMuOTh6TTEyIDZjMi43NiAwIDUgMi4yNCA1IDV2N0g3di03YzAtMi43NiAyLjI0LTUgNS01em0wLTQuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjV2MS4xN0M3LjM2IDQuODUgNSA3LjY1IDUgMTF2NmwtMiAydjFoMTh2LTFsLTItMnYtNmMwLTMuMzUtMi4zNi02LjE1LTUuNS02LjgzVjNjMC0uODMtLjY3LTEuNS0xLjUtMS41ek0xMyA4aC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvRGVsZXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMmgtMy41bC0xLTFoLTVsLTEgMUgxdjJoMTR6TTE2IDljLS43IDAtMS4zNy4xLTIgLjI5VjVIMnYxMmMwIDEuMS45IDIgMiAyaDUuNjhBNi45OTkgNi45OTkgMCAwIDAgMjMgMTZjMC0zLjg3LTMuMTMtNy03LTd6bS03IDdjMCAuMzQuMDMuNjcuMDggMUg0VjdoOHYzLjI2Yy0xLjgxIDEuMjctMyAzLjM2LTMgNS43NHptNyA1Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAxMkgxNXY1bDMuNiAyLjEuOC0xLjItMi45LTEuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVycm9yT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTVoMnYyaC0ydi0yem0wLThoMnY2aC0yVjd6bS45OS01QzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFcnJvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtMmgydjJ6bTAtNGgtMlY3aDJ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdGlmaWNhdGlvbkltcG9ydGFudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMDEgMjEuMDFjMCAxLjEuODkgMS45OSAxLjk5IDEuOTlzMS45OS0uODkgMS45OS0xLjk5aC0zLjk4ek0xMiA2YzIuNzYgMCA1IDIuMjQgNSA1djdIN3YtN2MwLTIuNzYgMi4yNC01IDUtNXptMC00LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41djEuMTdDNy4zNiA0Ljg1IDUgNy42NSA1IDExdjZsLTIgMnYxaDE4di0xbC0yLTJ2LTZjMC0zLjM1LTIuMzYtNi4xNS01LjUtNi44M1YzYzAtLjgzLS42Ny0xLjUtMS41LTEuNXpNMTEgOGgydjRoLTJ6bTAgNmgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYXJuaW5nQW1iZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDUuOTkgMTkuNTMgMTlINC40N0wxMiA1Ljk5TTEyIDIgMSAyMWgyMkwxMiAyem0xIDE0aC0ydjJoMnYtMnptMC02aC0ydjRoMnYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdhcm5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMjFoMjJMMTIgMiAxIDIxem0xMi0zaC0ydi0yaDJ2MnptMC00aC0ydi00aDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTEwSyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDZ2MTBINXYtOC41aDFWMTVoMS41VjlINVY1aDE0djR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTEuMjVWOUgxNHY2aDEuNXYtMi4yNUwxNy4yNSAxNUgxOWwtMi4yNS0zTDE5IDloLTEuNzV6TTkuNSAxNUgxMmMuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xSDkuNWMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bS41LTQuNWgxLjV2M0gxMHYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTFrUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDguNWgtMS41VjEwaC0xdjEuNUgxNXYxaDEuNVYxNGgxdi0xLjVIMTlWMTlINVY1aDE0djYuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE1SDlWOUg2djEuNWgxLjV6TTEyIDEyLjc1IDEzLjc1IDE1aDEuNzVsLTIuMjUtMyAyLjI1LTNoLTEuNzVMMTIgMTEuMjVWOWgtMS41djZIMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxSyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDE1SDEwVjlIN3YxLjVoMS41ek0xMy41IDEyLjc1IDE1LjI1IDE1SDE3bC0yLjI1LTNMMTcgOWgtMS43NWwtMS43NSAyLjI1VjlIMTJ2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUya1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCA4LjVoLTEuNVYxMGgtMXYxLjVIMTV2MWgxLjVWMTRoMXYtMS41SDE5VjE5SDVWNWgxNHY2LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEzLjVINy41di0xSDljLjU1IDAgMS0uNDUgMS0xVjEwYzAtLjU1LS40NS0xLTEtMUg2djEuNWgyLjV2MUg3Yy0uNTUgMC0xIC40NS0xIDFWMTVoNHYtMS41ek0xMi41IDEyLjc1IDE0LjI1IDE1SDE2bC0yLjI1LTNMMTYgOWgtMS43NWwtMS43NSAyLjI1VjlIMTF2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUySyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTMuNUg4di0xaDJjLjU1IDAgMS0uNDUgMS0xVjEwYzAtLjU1LS40NS0xLTEtMUg2LjV2MS41aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxVjE1SDExdi0xLjV6TTE0LjUgMTIuNzUgMTYuMjUgMTVIMThsLTIuMjUtM0wxOCA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxM3Y2aDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTNrUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDguNWgtMS41VjEwaC0xdjEuNUgxNXYxaDEuNVYxNGgxdi0xLjVIMTlWMTlINVY1aDE0djYuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTR2LTRjMC0uNTUtLjQ1LTEtMS0xSDUuNXYxLjVoM3YxaC0ydjFoMnYxaC0zVjE1SDljLjU1IDAgMS0uNDUgMS0xek0xMi41IDEyLjc1IDE0LjI1IDE1SDE2bC0yLjI1LTNMMTYgOWgtMS43NWwtMS43NSAyLjI1VjlIMTF2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUzSyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTR2LTRjMC0uNTUtLjQ1LTEtMS0xSDYuNXYxLjVoM3YxaC0ydjFoMnYxaC0zVjE1SDEwYy41NSAwIDEtLjQ1IDEtMXpNMTQuNSAxMi43NSAxNi4yNSAxNUgxOGwtMi4yNS0zTDE4IDloLTEuNzVsLTEuNzUgMi4yNVY5SDEzdjZoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lNGtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgOC41aC0xLjVWMTBoLTF2MS41SDE1djFoMS41VjE0aDF2LTEuNUgxOVYxOUg1VjVoMTR2Ni41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgMTVIMTB2LTEuNWgxVjEyaC0xVjlIOC41djNIN1Y5SDUuNXY0LjVoM3pNMTMgMTIuNzUgMTQuNzUgMTVoMS43NWwtMi4yNS0zIDIuMjUtM2gtMS43NUwxMyAxMS4yNVY5aC0xLjV2NkgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTRLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWEyIDIgMCAwIDAtMi0yem0wIDE2SDVWNWgxNHYxNHptLTkuNS00SDExdi0xLjQ5aDFWMTJoLTFWOUg5LjV2M0g4VjlINi41djQuNWgzem04LjcgMC0yLTMgMi0zaC0xLjdsLTIgMyAyIDN6bS0zLjctM1Y5SDEzdjZoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lNUcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDEzSDE5djJoLTVWOWg3YzAtMS4xLS45LTItMi0yaC01Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoNWMxLjEgMCAyLS45IDItMnYtNGgtNC41djJ6TTMgMTNoNXYySDN2Mmg1YzEuMSAwIDItLjkgMi0ydi0yYzAtMS4xLS45LTItMi0ySDVWOWg1VjdIM3Y2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lNWtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgOC41aC0xLjVWMTBoLTF2MS41SDE1djFoMS41VjE0aDF2LTEuNUgxOVYxOUg1VjVoMTR2Ni41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNHYtMS41YzAtLjU1LS40NS0xLTEtMUg3LjV2LTFIMTBWOUg2djMuNWgyLjV2MUg2VjE1aDNjLjU1IDAgMS0uNDUgMS0xek0xMi41IDEyLjc1IDE0LjI1IDE1SDE2bC0yLjI1LTNMMTYgOWgtMS43NWwtMS43NSAyLjI1VjlIMTF2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU1SyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTR2LTEuNWMwLS41NS0uNDUtMS0xLTFIOHYtMWgzVjlINi41djMuNWgzdjFoLTNWMTVIMTBjLjU1IDAgMS0uNDUgMS0xek0xNC41IDEyLjc1IDE2LjI1IDE1SDE4bC0yLjI1LTNMMTggOWgtMS43NWwtMS43NSAyLjI1VjlIMTN2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU2a1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCA4LjVoLTEuNVYxMGgtMXYxLjVIMTV2MWgxLjVWMTRoMXYtMS41SDE5VjE5SDVWNWgxNHY2LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgMTIuNzUgMTQuMjUgMTVIMTZsLTIuMjUtM0wxNiA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxMXY2aDEuNXpNNyAxNWgyYy41NSAwIDEtLjQ1IDEtMXYtMS41YzAtLjU1LS40NS0xLTEtMUg3LjV2LTFIMTBWOUg3Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXptLjUtMi41aDFWMTRoLTF2LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTZLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDEyLjc1IDE2LjI1IDE1SDE4bC0yLjI1LTNMMTggOWgtMS43NWwtMS43NSAyLjI1VjlIMTN2NmgxLjV6TTcuNSAxNUgxMGMuNTUgMCAxLS40NSAxLTF2LTEuNWMwLS41NS0uNDUtMS0xLTFIOHYtMWgzVjlINy41Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXptLjUtMi41aDEuNVYxNEg4di0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU3a1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCA4LjVoLTEuNVYxMGgtMXYxLjVIMTV2MWgxLjVWMTRoMXYtMS41SDE5VjE5SDVWNWgxNHY2LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNzUgMTVIOC41bDEuNDYtNC43MUMxMC4xNSA5LjY1IDkuNjcgOSA5IDlINS41djEuNWgyLjYzTDYuNzUgMTV6TTEyLjUgMTIuNzUgMTQuMjUgMTVIMTZsLTIuMjUtM0wxNiA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxMXY2aDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTdLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljc1IDE1SDkuNWwxLjQ2LTQuNzFDMTEuMTUgOS42NSAxMC42NyA5IDEwIDlINi41djEuNWgyLjYzTDcuNzUgMTV6TTE0LjUgMTIuNzUgMTYuMjUgMTVIMThsLTIuMjUtM0wxOCA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxM3Y2aDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZThrUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTVoMmMuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxem0uNS01aDF2MS41aC0xVjEwem0wIDIuNWgxVjE0aC0xdi0xLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDguNWgtMS41VjEwaC0xdjEuNUgxNXYxaDEuNVYxNGgxdi0xLjVIMTlWMTlINVY1aDE0djYuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSAxMi43NSAxNC4yNSAxNUgxNmwtMi4yNS0zTDE2IDloLTEuNzVsLTEuNzUgMi4yNVY5SDExdjZoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lOEsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTVIMTBjLjU1IDAgMS0uNDUgMS0xdi00YzAtLjU1LS40NS0xLTEtMUg3LjVjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxem0uNS01aDEuNXYxLjVIOFYxMHptMCAyLjVoMS41VjE0SDh2LTEuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDEyLjc1IDE2LjI1IDE1SDE4bC0yLjI1LTNMMTggOWgtMS43NWwtMS43NSAyLjI1VjlIMTN2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU5a1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNHYtNGMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjEuNWMwIC41NS40NSAxIDEgMWgxLjV2MUg2VjE1aDNjLjU1IDAgMS0uNDUgMS0xem0tMS41LTIuNWgtMVYxMGgxdjEuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgOC41aC0xLjVWMTBoLTF2MS41SDE1djFoMS41VjE0aDF2LTEuNUgxOVYxOUg1VjVoMTR2Ni41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDEyLjc1IDE0LjI1IDE1SDE2bC0yLjI1LTNMMTYgOWgtMS43NWwtMS43NSAyLjI1VjlIMTF2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU5SyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE0di00YzAtLjU1LS40NS0xLTEtMUg3LjVjLS41NSAwLTEgLjQ1LTEgMXYxLjVjMCAuNTUuNDUgMSAxIDFoMnYxaC0zVjE1SDEwYy41NSAwIDEtLjQ1IDEtMXptLTEuNS0yLjVIOFYxMGgxLjV2MS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTIuNzUgMTYuMjUgMTVIMThsLTIuMjUtM0wxOCA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxM3Y2aDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZFRvUXVldWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE1aDJ2LTNoM3YtMmgtM1Y3aC0ydjNIOHYyaDN6TTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMi0uOSAyLTJWNWEyIDIgMCAwIDAtMi0yem0wIDE0SDNWNWgxOHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpcnBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119XX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMjJoMTJsLTYtNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDR2LTJIM1Y1aDE4djEyaC00djJoNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWxidW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0wLTEyLjVjLTIuNDkgMC00LjUgMi4wMS00LjUgNC41czIuMDEgNC41IDQuNSA0LjUgNC41LTIuMDEgNC41LTQuNS0yLjAxLTQuNS00LjUtNC41em0wIDUuNWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJ0VHJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEzaC04di0yaDh2MnptMC02aC04djJoOFY3em0tOCAxMGg4di0yaC04djJ6bS0yLTh2NmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJoNmMxLjEgMCAyIC45IDIgMnptLTEuNSA2LTIuMjUtMy0xLjc1IDIuMjYtMS4yNS0xLjUxTDMuNSAxNWg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXVkaW9GaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjhsLTYtNnpNNiAyMFY0aDd2NWg1djExSDZ6bTEwLTloLTR2My44OGEyLjI0NyAyLjI0NyAwIDAgMC0zLjUgMS44N2MwIDEuMjQgMS4wMSAyLjI1IDIuMjUgMi4yNVMxMyAxNy45OSAxMyAxNi43NVYxM2gzdi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXZUaW1lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTdjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xLS40NS0xLTEtMS0xIC40NS0xIDF6bTAtMTR2NGgyVjUuMDhjMy4zOS40OSA2IDMuMzkgNiA2LjkyIDAgMy44Ny0zLjEzIDctNyA3cy03LTMuMTMtNy03YzAtMS42OC41OS0zLjIyIDEuNTgtNC40MkwxMiAxM2wxLjQxLTEuNDEtNi44LTYuOHYuMDJDNC40MiA2LjQ1IDMgOS4wNSAzIDEyYzAgNC45NyA0LjAyIDkgOSA5YTkgOSAwIDAgMCAwLTE4aC0xem03IDljMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDEgLjQ1IDEgMSAxIDEtLjQ1IDEtMXpNNiAxMmMwIC41NS40NSAxIDEgMXMxLS40NSAxLTEtLjQ1LTEtMS0xLTEgLjQ1LTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyYW5kaW5nV2F0ZXJtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkgzVjVoMTh2MTR6bS0xMC03aDl2NmgtOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGxUb0FjdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIM1Y1aDE4djE0ek01IDE1aDE0djNINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3NlZENhcHRpb25EaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEwYzAtLjU1LjQ1LTEgMS0xaDNjLjU1IDAgMSAuNDUgMSAxdjFoLTEuNXYtLjVoLTJ2MUwxMyAxMHptMy41IDMuNSAxLjIxIDEuMjFjLjE4LS4xOS4yOS0uNDQuMjktLjcxdi0xaC0xLjV2LjV6TTguODMgNkgxOXYxMC4xN2wxLjk4IDEuOThjMC0uMDUuMDItLjEuMDItLjE2VjZjMC0xLjEtLjktMi0yLTJINi44M2wyIDJ6bTEwLjk1IDE2LjYxTDE3LjE3IDIwSDVhMiAyIDAgMCAxLTItMlY2YzAtLjA1LjAyLS4xLjAyLS4xNUwxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6TTcuNSAxMy41aDJWMTNoLjY3bC0yLjUtMi41SDcuNXYzem03LjY3IDQuNUwxMSAxMy44M1YxNGMwIC41NS0uNDUgMS0xIDFIN2MtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjMyLjE2LS41OS40LS43OEw1IDcuODNWMThoMTAuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbG9zZWRDYXB0aW9uT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNEg1YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDVWNmgxNHYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNWgzYy41NSAwIDEtLjQ1IDEtMXYtMUg5LjV2LjVoLTJ2LTNoMnYuNUgxMXYtMWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6TTE0IDE1aDNjLjU1IDAgMS0uNDUgMS0xdi0xaC0xLjV2LjVoLTJ2LTNoMnYuNUgxOHYtMWMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xvc2VkQ2FwdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNEg1YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDVWNmgxNHYxMnpNNyAxNWgzYy41NSAwIDEtLjQ1IDEtMXYtMUg5LjV2LjVoLTJ2LTNoMnYuNUgxMXYtMWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bTcgMGgzYy41NSAwIDEtLjQ1IDEtMXYtMWgtMS41di41aC0ydi0zaDJ2LjVIMTh2LTFjMC0uNTUtLjQ1LTEtMS0xaC0zYy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRyb2xDYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNTQgOC40NiAyIDEybDMuNTQgMy41NCAxLjc2LTEuNzdMNS41NCAxMmwxLjc2LTEuNzd6bTYuNDYgMTAtMS43Ny0xLjc2LTEuNzcgMS43NkwxMiAyMmwzLjU0LTMuNTQtMS43Ny0xLjc2em02LjQ2LTEwLTEuNzYgMS43N0wxOC40NiAxMmwtMS43NiAxLjc3IDEuNzYgMS43N0wyMiAxMnptLTEwLTIuOTIgMS43NyAxLjc2TDEyIDUuNTRsMS43NyAxLjc2IDEuNzctMS43NkwxMiAyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVxdWFsaXplciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMjBoNFY0aC00djE2em0tNiAwaDR2LThINHY4ek0xNiA5djExaDRWOWgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV4cGxpY2l0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6bS00LTRoLTR2LTJoNHYtMmgtNFY5aDRWN0g5djEwaDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGYXN0Rm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgOS44NiAxOC4wMyAxMiAxNSAxNC4xNFY5Ljg2bS05IDBMOS4wMyAxMiA2IDE0LjE0VjkuODZNMTMgNnYxMmw4LjUtNkwxMyA2ek00IDZ2MTJsOC41LTZMNCA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFzdFJld2luZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOS44NnY0LjI4TDE0Ljk3IDEyIDE4IDkuODZtLTkgMHY0LjI4TDUuOTcgMTIgOSA5Ljg2TTIwIDZsLTguNSA2IDguNSA2VjZ6bS05IDAtOC41IDYgOC41IDZWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZlYXR1cmVkUGxheUxpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxOHYxNHpNNSAxMGg5djJINXptMC0zaDl2Mkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmVhdHVyZWRWaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIM1Y1aDE4djE0ek00IDZoOXY3SDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWJlckR2ciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEuODcgMTIuNDMtMS0zLjQzaC0xLjVsMS43NSA2aDEuNWwxLjc1LTZoLTEuNXpNMjEgMTEuNXYtMWMwLS44NS0uNjUtMS41LTEuNS0xLjVIMTZ2NmgxLjV2LTJoMS4xNWwuODUgMkgyMWwtLjktMi4xYy41LS4yNS45LS44LjktMS40em0tMS41IDBoLTJ2LTFoMnYxek02LjUgOUgzdjZoMy41Yy44NSAwIDEuNS0uNjUgMS41LTEuNXYtM0M4IDkuNjUgNy4zNSA5IDYuNSA5em0wIDQuNWgtMnYtM2gydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWJlck1hbnVhbFJlY29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNi02LTIuNjktNi02IDIuNjktNiA2LTZtMC0yYy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LTgtMy41OC04LTgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpYmVyTmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjI1IDEyLjUgNC43NSA5SDMuNXY2aDEuMjV2LTMuNUw3LjMgMTVoMS4yVjlINy4yNXpNOS41IDE1aDR2LTEuMjVIMTF2LTEuMTFoMi41di0xLjI2SDExdi0xLjEyaDIuNVY5aC00em05Ljc1LTZ2NC41aC0xLjEyVjkuOTloLTEuMjV2My41MmgtMS4xM1Y5SDE0LjV2NWMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMVY5aC0xLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmliZXJQaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE1aDEuNVY5SDExdjZ6bTcuNzUtNnYzLjVMMTYuMjUgOUgxNXY2aDEuMjV2LTMuNUwxOC44IDE1SDIwVjloLTEuMjV6TTcuNSA5SDR2NmgxLjV2LTJoMmMuODUgMCAxLjUtLjY1IDEuNS0xLjV2LTFDOSA5LjY1IDguMzUgOSA3LjUgOXptMCAyLjVoLTJ2LTFoMnYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmliZXJTbWFydFJlY29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LTgtMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6bTgtMTMuNzR2Mi4wOWE1Ljk5IDUuOTkgMCAwIDEgMCAxMS4zdjIuMDljMy40NS0uODkgNi00LjAxIDYtNy43NCAwLTMuNzMtMi41NS02Ljg1LTYtNy43NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcndhcmQxMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTYgMi42OS02IDYtNnY0bDUtNS01LTV2NGMtNC40MiAwLTggMy41OC04IDhzMy41OCA4IDggOCA4LTMuNTggOC04aC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC45IDE2di00LjI3aC0uMDlsLTEuNzcuNjN2LjY5bDEuMDEtLjMxVjE2ek0xNC4zMiAxMS43OGMtLjE4LS4wNy0uMzctLjEtLjU5LS4xcy0uNDEuMDMtLjU5LjEtLjMzLjE4LS40NS4zMy0uMjMuMzQtLjI5LjU3LS4xLjUtLjEuODJ2Ljc0YzAgLjMyLjA0LjYuMTEuODJzLjE3LjQyLjMuNTcuMjguMjYuNDYuMzMuMzcuMS41OS4xLjQxLS4wMy41OS0uMS4zMy0uMTguNDUtLjMzLjIyLS4zNC4yOS0uNTcuMS0uNS4xLS44MnYtLjc0YzAtLjMyLS4wNC0uNi0uMTEtLjgycy0uMTctLjQyLS4zLS41Ny0uMjktLjI2LS40Ni0uMzN6bS4wMSAyLjU3YzAgLjE5LS4wMS4zNS0uMDQuNDhzLS4wNi4yNC0uMTEuMzItLjExLjE0LS4xOS4xNy0uMTYuMDUtLjI1LjA1LS4xOC0uMDItLjI1LS4wNS0uMTQtLjA5LS4xOS0uMTctLjA5LS4xOS0uMTItLjMyLS4wNC0uMjktLjA0LS40OHYtLjk3YzAtLjE5LjAxLS4zNS4wNC0uNDhzLjA2LS4yMy4xMi0uMzEuMTEtLjE0LjE5LS4xNy4xNi0uMDUuMjUtLjA1LjE4LjAyLjI1LjA1LjE0LjA5LjE5LjE3LjA5LjE4LjEyLjMxLjA0LjI5LjA0LjQ4di45N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcndhcmQzMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTYgMi42OS02IDYtNnY0bDUtNS01LTV2NGMtNC40MiAwLTggMy41OC04IDhzMy41OCA4IDggOCA4LTMuNTggOC04aC0yem0tNy40NiAyLjIyYy0uMDYuMDUtLjEyLjA5LS4yLjEycy0uMTcuMDQtLjI3LjA0YS42OS42OSAwIDAgMS0uNDUtLjE1Yy0uMDYtLjA1LS4xLS4xLS4xMy0uMTdzLS4wNS0uMTQtLjA1LS4yMmgtLjg1YzAgLjIxLjA0LjM5LjEyLjU1cy4xOS4yOC4zMy4zOC4yOS4xOC40Ni4yMy4zNS4wNy41My4wN2MuMjEgMCAuNDEtLjAzLjYtLjA4cy4zNC0uMTQuNDgtLjI0LjI0LS4yNC4zMi0uMzkuMTItLjMzLjEyLS41M2MwLS4yMy0uMDYtLjQ0LS4xOC0uNjFzLS4zLS4zLS41NC0uMzljLjEtLjA1LjItLjEuMjgtLjE3cy4xNS0uMTQuMi0uMjIuMS0uMTYuMTMtLjI1LjA0LS4xOC4wNC0uMjdjMC0uMi0uMDQtLjM3LS4xMS0uNTNzLS4xNy0uMjgtLjMtLjM4LS4yOC0uMTgtLjQ2LS4yMy0uMzctLjA4LS41OS0uMDhjLS4xOSAwLS4zOC4wMy0uNTQuMDhzLS4zMi4xMy0uNDQuMjMtLjIzLjIyLS4zLjM3LS4xMS4zLS4xMS40OGguODVhLjQ1NS40NTUgMCAwIDEgLjE3LS4zNWMuMDUtLjA0LjExLS4wNy4xOC0uMXMuMTQtLjAzLjIyLS4wM2MuMSAwIC4xOC4wMS4yNS4wNHMuMTMuMDYuMTguMTEuMDguMTEuMTEuMTcuMDQuMTQuMDQuMjJjMCAuMTgtLjA1LjMyLS4xNi40M3MtLjI2LjE2LS40OC4xNmgtLjQzdi42NmguNDVjLjExIDAgLjIuMDEuMjkuMDRzLjE2LjA2LjIyLjExLjExLjEyLjE0LjIuMDUuMTguMDUuMjljMCAuMDktLjAxLjE3LS4wNC4yNHMtLjA4LjExLS4xMy4xN3ptMy45LTMuNDRjLS4xOC0uMDctLjM3LS4xLS41OS0uMXMtLjQxLjAzLS41OS4xLS4zMy4xOC0uNDUuMzMtLjIzLjM0LS4yOS41Ny0uMS41LS4xLjgydi43NGMwIC4zMi4wNC42LjExLjgycy4xNy40Mi4zLjU3LjI4LjI2LjQ2LjMzLjM3LjEuNTkuMS40MS0uMDMuNTktLjEuMzMtLjE4LjQ1LS4zMy4yMi0uMzQuMjktLjU3LjEtLjUuMS0uODJ2LS43NGMwLS4zMi0uMDQtLjYtLjExLS44MnMtLjE3LS40Mi0uMy0uNTctLjI4LS4yNi0uNDYtLjMzem0uMDEgMi41N2MwIC4xOS0uMDEuMzUtLjA0LjQ4cy0uMDYuMjQtLjExLjMyLS4xMS4xNC0uMTkuMTctLjE2LjA1LS4yNS4wNS0uMTgtLjAyLS4yNS0uMDUtLjE0LS4wOS0uMTktLjE3LS4wOS0uMTktLjEyLS4zMi0uMDQtLjI5LS4wNC0uNDh2LS45N2MwLS4xOS4wMS0uMzUuMDQtLjQ4cy4wNi0uMjMuMTItLjMxLjExLS4xNC4xOS0uMTcuMTYtLjA1LjI1LS4wNS4xOC4wMi4yNS4wNS4xNC4wOS4xOS4xNy4wOS4xOC4xMi4zMS4wNC4yOS4wNC40OHYuOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3J3YXJkNSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuOTUgMTNjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTYgMi42OS02IDYtNnY0bDUtNS01LTV2NGMtNC40MiAwLTggMy41OC04IDhzMy41OCA4IDggOCA4LTMuNTggOC04aC0yem0tNS41MiAyLjE1Yy0uMDUuMDctLjExLjEzLS4xOC4xN3MtLjE3LjA2LS4yNy4wNmMtLjE3IDAtLjMxLS4wNS0uNDItLjE1cy0uMTctLjI0LS4xOS0uNDFoLS44NGMuMDEuMi4wNS4zNy4xMy41M3MuMTkuMjguMzIuMzkuMjkuMTkuNDYuMjQuMzUuMDguNTMuMDhjLjI0IDAgLjQ2LS4wNC42NC0uMTJzLjMzLS4xOC40NS0uMzEuMjEtLjI4LjI3LS40NS4wOS0uMzUuMDktLjU0YzAtLjIyLS4wMy0uNDMtLjA5LS42cy0uMTQtLjMzLS4yNS0uNDUtLjI1LS4yMi0uNDEtLjI4LS4zNC0uMS0uNTUtLjFjLS4wNyAwLS4xNC4wMS0uMi4wMnMtLjEzLjAyLS4xOC4wNC0uMS4wMy0uMTUuMDUtLjA4LjA0LS4xMS4wNWwuMTEtLjkyaDEuN3YtLjcxSDEwLjlsLS4yNSAyLjE3LjY3LjE3Yy4wMy0uMDMuMDYtLjA2LjEtLjA5cy4wNy0uMDUuMTItLjA3LjEtLjA0LjE1LS4wNS4xMy0uMDIuMi0uMDJjLjEyIDAgLjIyLjAyLjMuMDVzLjE2LjA5LjIxLjE1LjEuMTQuMTMuMjQuMDQuMTkuMDQuMzEtLjAxLjIyLS4wMy4zMS0uMDYuMTctLjExLjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR2FtZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDR2Mi42N2wtMSAxLTEtMVY0aDJtNyA3djJoLTIuNjdsLTEtMSAxLTFIMjBNNi42NyAxMWwxIDEtMSAxSDR2LTJoMi42N00xMiAxNi4zM2wxIDFWMjBoLTJ2LTIuNjdsMS0xTTE1IDJIOXY1LjVsMyAzIDMtM1Yyem03IDdoLTUuNWwtMyAzIDMgM0gyMlY5ek03LjUgOUgydjZoNS41bDMtMy0zLTN6bTQuNSA0LjUtMyAzVjIyaDZ2LTUuNWwtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6TTcuNSAxM2gydjJIMTFWOUg5LjV2Mi41aC0yVjlINnY2aDEuNXpNMTggMTR2LTRjMC0uNTUtLjQ1LTEtMS0xaC00djZoNGMuNTUgMCAxLS40NSAxLTF6bS0xLjUtLjVoLTJ2LTNoMnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGVhcmluZ0Rpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4wMyAzLjJDNy4xNSAyLjQ0IDguNTEgMiAxMCAyYzMuOTMgMCA3IDMuMDcgNyA3IDAgMS4yNi0uMzggMi42NS0xLjA3IDMuOS0uMDIuMDQtLjA1LjA4LS4wOC4xM2wtMS40OC0xLjQ4Yy40LS44Ni42My0xLjc1LjYzLTIuNTUgMC0yLjgtMi4yLTUtNS01LS45MiAwLTEuNzYuMjYtMi41LjY3TDYuMDMgMy4yem0xMS4xOCAxMS4xOCAxLjQzIDEuNDNDMjAuMTEgMTMuOTMgMjEgMTEuNTcgMjEgOWMwLTMuMDQtMS4yMy01Ljc5LTMuMjItNy43OGwtMS40MiAxLjQyQTguOTM3IDguOTM3IDAgMCAxIDE5IDljMCAyLjAyLS42NyAzLjg4LTEuNzkgNS4zOHpNMTAgNi41Yy0uMjEgMC0uNC4wMy0uNTkuMDhsMy4wMSAzLjAxYy4wNS0uMTkuMDgtLjM4LjA4LS41OUEyLjUgMi41IDAgMCAwIDEwIDYuNXptMTEuMTkgMTQuNjlMMi44MSAyLjgxIDEuMzkgNC4yMmwyLjEzIDIuMTNDMy4xOSA3LjE2IDMgOC4wNSAzIDloMmMwLS4zNi4wNS0uNzEuMTItMS4wNWw2LjYxIDYuNjFjLS44OC42OC0xLjc4IDEuNDEtMi4yNyAyLjktLjUgMS41LTEgMi4wMS0xLjcxIDIuMzgtLjE5LjEtLjQ2LjE2LS43NS4xNi0xLjEgMC0yLS45LTItMkgzYTMuOTk5IDMuOTk5IDAgMCAwIDUuNjQgMy42NWMxLjM2LS43MSAyLjEzLTEuNzMgMi43My0zLjU1LjMyLS45OC45LTEuNDMgMS43MS0yLjA1LjAzLS4wMi4wNS0uMDQuMDgtLjA2bDYuNjIgNi42MiAxLjQxLTEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWFyaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAyMGMtLjI5IDAtLjU2LS4wNi0uNzYtLjE1LS43MS0uMzctMS4yMS0uODgtMS43MS0yLjM4LS41MS0xLjU2LTEuNDctMi4yOS0yLjM5LTMtLjc5LS42MS0xLjYxLTEuMjQtMi4zMi0yLjUzQzkuMjkgMTAuOTggOSA5LjkzIDkgOWMwLTIuOCAyLjItNSA1LTVzNSAyLjIgNSA1aDJjMC0zLjkzLTMuMDctNy03LTdTNyA1LjA3IDcgOWMwIDEuMjYuMzggMi42NSAxLjA3IDMuOS45MSAxLjY1IDEuOTggMi40OCAyLjg1IDMuMTUuODEuNjIgMS4zOSAxLjA3IDEuNzEgMi4wNS42IDEuODIgMS4zNyAyLjg0IDIuNzMgMy41NUEzLjk5OSAzLjk5OSAwIDAgMCAyMSAxOGgtMmMwIDEuMS0uOSAyLTIgMnpNNy42NCAyLjY0IDYuMjIgMS4yMkM0LjIzIDMuMjEgMyA1Ljk2IDMgOXMxLjIzIDUuNzkgMy4yMiA3Ljc4bDEuNDEtMS40MUM2LjAxIDEzLjc0IDUgMTEuNDkgNSA5czEuMDEtNC43NCAyLjY0LTYuMzZ6TTExLjUgOWEyLjUgMi41IDAgMCAwIDUgMCAyLjUgMi41IDAgMCAwLTUgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhpZ2hRdWFsaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINVY2aDE0djEyek03LjUgMTNoMnYySDExVjlIOS41djIuNWgtMlY5SDZ2NmgxLjV6bTYuNSAyaC43NXYxLjVoMS41VjE1SDE3Yy41NSAwIDEtLjQ1IDEtMXYtNGMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxem0uNS00LjVoMnYzaC0ydi0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW50ZXJwcmV0ZXJNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSAxNi41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjV2LTIuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVYxNWMwIC44My0uNjcgMS41LTEuNSAxLjV6TTIwIDIwaDF2LTEuNTRjMS42OS0uMjQgMy0xLjcgMy0zLjQ2aC0xYTIuNSAyLjUgMCAwIDEtNSAwaC0xYzAgMS43NiAxLjMxIDMuMjIgMyAzLjQ2VjIwek05IDEyYy0yLjIxIDAtNC0xLjc5LTQtNGEzLjk5OSAzLjk5OSAwIDAgMSA1LjM0LTMuNzdBNS45MzggNS45MzggMCAwIDAgOSA4YzAgMS40My41IDIuNzQgMS4zNCAzLjc3LS40Mi4xNS0uODcuMjMtMS4zNC4yM3ptLTEuODkgMS4xM0E0Ljk2NSA0Ljk2NSAwIDAgMCA1IDE3LjIyVjIwSDF2LTIuNzhjMC0xLjEyLjYxLTIuMTUgMS42MS0yLjY2IDEuMjQtLjY0IDIuNzYtMS4xOSA0LjUtMS40M3pNMTEgOGMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0LTEuNzkgNC00IDQtNC0xLjc5LTQtNHptMiAwYzAgMS4xLjkgMiAyIDJzMi0uOSAyLTItLjktMi0yLTItMiAuOS0yIDJ6bTIgN2MtMi4zNyAwLTQuMjkuNzMtNS40OCAxLjM0LS4zMi4xNi0uNTIuNS0uNTIuODhWMThoNy4xN2MuNS44NiAxLjI1IDEuNTYgMi4xNSAySDd2LTIuNzhjMC0xLjEyLjYxLTIuMTUgMS42MS0yLjY2QzEwLjI5IDEzLjcgMTIuNDcgMTMgMTUgMTNjLjM5IDAgLjc3LjAyIDEuMTQuMDUtLjMzLjU5LS41NSAxLjI2LS42MiAxLjk2LS4xNy0uMDEtLjM0LS4wMS0uNTItLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGlicmFyeUFkZENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0djEySDhWNGgxMm0wLTJIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNy41MyAxMkw5IDEwLjVsMS40LTEuNDEgMi4wNyAyLjA4TDE3LjYgNiAxOSA3LjQxIDEyLjQ3IDE0ek00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpYnJhcnlBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg4VjRoMTJ2MTJ6bS03LTJoMnYtM2gzVjloLTNWNmgtMnYzaC0zdjJoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpYnJhcnlCb29rcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6bTE2LTRIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDhWNGgxMnYxMnpNMTAgOWg4djJoLTh6bTAgM2g0djJoLTR6bTAtNmg4djJoLTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaWJyYXJ5TXVzaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDhWNGgxMnYxMnptLTcuNS0xYTIuNSAyLjUgMCAwIDAgMi41LTIuNVY3aDNWNWgtNHY1LjUxYy0uNDItLjMyLS45My0uNTEtMS41LS41MWEyLjUgMi41IDAgMCAwIDAgNXpNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb29wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0VjFMOCA1bDQgNFY2YzMuMzEgMCA2IDIuNjkgNiA2IDAgMS4wMS0uMjUgMS45Ny0uNyAyLjhsMS40NiAxLjQ2QTcuOTMgNy45MyAwIDAgMCAyMCAxMmMwLTQuNDItMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTYgMC0xLjAxLjI1LTEuOTcuNy0yLjhMNS4yNCA3Ljc0QTcuOTMgNy45MyAwIDAgMCA0IDEyYzAgNC40MiAzLjU4IDggOCA4djNsNC00LTQtNHYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTHlyaWNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA2aDd2Mkg2ek02IDEyaDR2Mkg2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMS45N1YxNkg2bC0yIDJWNGgxMXYyLjAzYy41Mi0uNjkgMS4yLTEuMjUgMi0xLjZWNGMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDljMS4xIDAgMi0uOSAyLTJ2LTIuNDJhNS4xNiA1LjE2IDAgMCAxLTItMS42MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA5aDd2Mkg2ek0yMCA2LjE4Yy0uMzEtLjExLS42NS0uMTgtMS0uMTgtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zVjNoMlYxaC00djUuMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNaWNOb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNGMxLjY2IDAgMy0xLjM0IDMtM1Y1YzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDV2NmMwIDEuNjYgMS4zNCAzIDMgM3ptLTEtOWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NmMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMVY1em02IDZjMCAyLjc2LTIuMjQgNS01IDVzLTUtMi4yNC01LTVINWMwIDMuNTMgMi42MSA2LjQzIDYgNi45MlYyMWgydi0zLjA4YzMuMzktLjQ5IDYtMy4zOSA2LTYuOTJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNaWNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjggNC45YzAtLjY2LjU0LTEuMiAxLjItMS4yczEuMi41NCAxLjIgMS4ybC0uMDEgMy45MUwxNSAxMC42VjVjMC0xLjY2LTEuMzQtMy0zLTMtMS41NCAwLTIuNzkgMS4xNi0yLjk2IDIuNjVsMS43NiAxLjc2VjQuOXpNMTkgMTFoLTEuN2MwIC41OC0uMSAxLjEzLS4yNyAxLjY0bDEuMjcgMS4yN2MuNDQtLjg4LjctMS44Ny43LTIuOTF6TTQuNDEgMi44NiAzIDQuMjdsNiA2VjExYzAgMS42NiAxLjM0IDMgMyAzIC4yMyAwIC40NC0uMDMuNjUtLjA4bDEuNjYgMS42NmMtLjcxLjMzLTEuNS41Mi0yLjMxLjUyLTIuNzYgMC01LjMtMi4xLTUuMy01LjFINWMwIDMuNDEgMi43MiA2LjIzIDYgNi43MlYyMWgydi0zLjI4YTcuMTMgNy4xMyAwIDAgMCAyLjU1LS45bDQuMiA0LjIgMS40MS0xLjQxTDQuNDEgMi44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1pYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTRjMS42NiAwIDMtMS4zNCAzLTNWNWMwLTEuNjYtMS4zNC0zLTMtM1M5IDMuMzQgOSA1djZjMCAxLjY2IDEuMzQgMyAzIDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDExYzAgMi43Ni0yLjI0IDUtNSA1cy01LTIuMjQtNS01SDVjMCAzLjUzIDIuNjEgNi40MyA2IDYuOTJWMjFoMnYtMy4wOGMzLjM5LS40OSA2LTMuMzkgNi02LjkyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWlzc2VkVmlkZW9DYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMC41VjdjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMXYxMGMwIC41NS40NSAxIDEgMWgxMmMuNTUgMCAxLS40NSAxLTF2LTMuNWw0IDR2LTExbC00IDR6bS0yLTEuODNWMTZINVY4aDEwdi42N3ptLTcuODkgMi40NEwxMSAxNWwzLjc3LTMuNzktLjc4LS43OUwxMSAxMy40M2wtMy4xMS0zLjFoMi41NVY5LjIySDZ2NC40NGgxLjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW92aWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNi40NyA1Ljc2IDEwSDIwdjhINFY2LjQ3TTIyIDRoLTRsMiA0aC0zbC0yLTRoLTJsMiA0aC0zbC0yLTRIOGwyIDRIN0w1IDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU11c2ljVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxOHYxNHpNOCAxNWMwLTEuNjYgMS4zNC0zIDMtMyAuMzUgMCAuNjkuMDcgMSAuMThWNmg1djJoLTN2Ny4wM0EzLjAwMyAzLjAwMyAwIDAgMSAxMSAxOGMtMS42NiAwLTMtMS4zNC0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOZXdSZWxlYXNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjMgMTItMi40NC0yLjc4LjM0LTMuNjgtMy42MS0uODItMS44OS0zLjE4TDEyIDMgOC42IDEuNTQgNi43MSA0LjcybC0zLjYxLjgxLjM0IDMuNjhMMSAxMmwyLjQ0IDIuNzgtLjM0IDMuNjkgMy42MS44MiAxLjg5IDMuMThMMTIgMjFsMy40IDEuNDYgMS44OS0zLjE4IDMuNjEtLjgyLS4zNC0zLjY4TDIzIDEyem0tNC41MSAyLjExLjI2IDIuNzktMi43NC42Mi0xLjQzIDIuNDFMMTIgMTguODJsLTIuNTggMS4xMS0xLjQzLTIuNDEtMi43NC0uNjIuMjYtMi44TDMuNjYgMTJsMS44NS0yLjEyLS4yNi0yLjc4IDIuNzQtLjYxIDEuNDMtMi40MUwxMiA1LjE4bDIuNTgtMS4xMSAxLjQzIDIuNDEgMi43NC42Mi0uMjYgMi43OUwyMC4zNCAxMmwtMS44NSAyLjExek0xMSAxNWgydjJoLTJ6bTAtOGgydjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RJbnRlcmVzdGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOCAwLTEuODUuNjMtMy41NSAxLjY5LTQuOUwxNi45IDE4LjMxQTcuOTAyIDcuOTAyIDAgMCAxIDEyIDIwem02LjMxLTMuMUw3LjEgNS42OUE3LjkwMiA3LjkwMiAwIDAgMSAxMiA0YzQuNDIgMCA4IDMuNTggOCA4IDAgMS44NS0uNjMgMy41NS0xLjY5IDQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTIuMDFjMCAxLjEuOSAxLjk5IDIgMS45OWgxNmMxLjEgMCAyLS45IDItMnYtOGwtNi02ek00IDE4LjAxVjZoMTF2NWg1djcuMDFINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhdXNlQ2lyY2xlRmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiZ1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMSAxNEg5VjhoMnY4em00IDBoLTJWOGgydjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYXVzZUNpcmNsZU91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTZoMlY4SDl2OHptMy0xNEM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTEtNGgyVjhoLTJ2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhdXNlQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNmgyVjhIOXY4em0zLTE0QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMS00aDJWOGgtMnY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGF1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTloNFY1SDZ2MTR6bTgtMTR2MTRoNFY1aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGxheUFycm93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA4LjY0IDE1LjI3IDEyIDEwIDE1LjM2VjguNjRNOCA1djE0bDExLTdMOCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGxheUNpcmNsZUZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTIgMTQuNXYtOWw2IDQuNS02IDQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYXlDaXJjbGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMCAxNi41IDYtNC41LTYtNC41ek0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYXlDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptLTIuNS0zLjUgNy00LjUtNy00LjV2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYXlEaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjQ1IDEzLjYyIDE5IDEyIDggNXYuMTd6TTIuODEgMi44MSAxLjM5IDQuMjIgOCAxMC44M1YxOWw0Ljk5LTMuMTggNi43OCA2Ljc4IDEuNDEtMS40MUwyLjgxIDIuODF6TTEwIDE1LjM2di0yLjUzbDEuNTUgMS41NS0xLjU1Ljk4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGxheWxpc3RBZGRDaGVja0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjNC40MSAwIDggMy41OSA4IDhzLTMuNTkgOC04IDgtOC0zLjU5LTgtOCAzLjU5LTggOC04em0wLTJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTIgOEg3djJoN3YtMnptMC0zSDd2Mmg3Vjd6bS03IDhoM3YtMkg3djJ6bTEyLTEuNTlMMTcuNTkgMTJsLTMuNTQgMy41NC0xLjQxLTEuNDEtMS40MSAxLjQxIDIuODMgMi44M0wxOSAxMy40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYXlsaXN0QWRkQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEwaDExdjJIM3pNMyA2aDExdjJIM3pNMyAxNGg3djJIM3pNMjAuNTkgMTEuOTNsLTQuMjUgNC4yNC0yLjEyLTIuMTItMS40MSAxLjQxTDE2LjM0IDE5IDIyIDEzLjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGxheWxpc3RBZGRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMi0xMEg3djJoN3YtMnptMC0zSDd2Mmg3Vjd6bS03IDhoM3YtMkg3djJ6bTEyLTJ2MmgtMnYyaC0ydi0yaC0ydi0yaDJ2LTJoMnYyaDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQbGF5bGlzdEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEwSDN2MmgxMXYtMnptMC00SDN2MmgxMVY2em00IDh2LTRoLTJ2NGgtNHYyaDR2NGgydi00aDR2LTJoLTR6TTMgMTZoN3YtMkgzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQbGF5bGlzdFBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEwaDExdjJIM3pNMyA2aDExdjJIM3pNMyAxNGg3djJIM3pNMTYgMTN2OGw2LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQbGF5bGlzdFJlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEwSDN2MmgxMXYtMnptMC00SDN2MmgxMVY2ek0zIDE2aDd2LTJIM3Yyem0xMS40MSA2TDE3IDE5LjQxIDE5LjU5IDIyIDIxIDIwLjU5IDE4LjQxIDE4IDIxIDE1LjQxIDE5LjU5IDE0IDE3IDE2LjU5IDE0LjQxIDE0IDEzIDE1LjQxIDE1LjU5IDE4IDEzIDIwLjU5IDE0LjQxIDIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXVldWVNdXNpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDZoLTV2OC4xOGMtLjMxLS4xMS0uNjUtLjE4LTEtLjE4LTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtM1Y4aDNWNnptLTcgMEgzdjJoMTJWNnptMCA0SDN2MmgxMnYtMnptLTQgNEgzdjJoOHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVF1ZXVlUGxheU5leHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDV2Mmg4di0yaDJ2LTJIM1Y1aDE4djhoMlY1YTIgMiAwIDAgMC0yLTJ6bS04IDdWN2gtMnYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zem0xMSA4LTQuNSA0LjVMMTggMjFsMy0zLTMtMyAxLjUtMS41TDI0IDE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXVldWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg4VjRoMTJ2MTJ6bS03LTFoMnYtNGg0VjloLTRWNWgtMnY0SDl2Mmg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmFkaW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZIOC4zbDguMjYtMy4zNEwxNS44OCAxIDMuMjQgNi4xNUMyLjUxIDYuNDMgMiA3LjE3IDIgOHYxMmEyIDIgMCAwIDAgMiAyaDE2YTIgMiAwIDAgMCAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0wIDJ2M2gtMlY5aC0ydjJINFY4aDE2ek00IDIwdi03aDE2djdINHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4XCIsXCJjeVwiOlwiMTYuNDhcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVjZW50QWN0b3JzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA1aDJ2MTRoLTJ6bS00IDBoMnYxNGgtMnptLTMgMEgyYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xVjZjMC0uNTUtLjQ1LTEtMS0xem0tMSAxMkgzVjdoMTB2MTB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOFwiLFwiY3lcIjpcIjkuOTRcIixcInJcIjpcIjEuOTVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuODkgMTUuMzVjMC0xLjMtMi41OS0xLjk1LTMuODktMS45NXMtMy44OS42NS0zLjg5IDEuOTVWMTZoNy43OHYtLjY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVtb3ZlRnJvbVF1ZXVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMTEgMC0yIC44OS0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg1djJoOHYtMmg1YzEuMSAwIDItLjkgMi0yVjVhMiAyIDAgMCAwLTItMnptMCAxNEgzVjVoMTh2MTJ6bS01LTd2Mkg4di0yaDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBlYXRPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDFIM2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0tMiAxOEg2LjgzbDEuNTggMS41OEw3IDIybC00LTQgNC00IDEuNDEgMS40Mkw2LjgzIDE3SDE3di00aDJ2NnptLTItOS0xLjQxLTEuNDJMMTcuMTcgN0g3djRINVY1aDEyLjE3bC0xLjU4LTEuNThMMTcgMmw0IDQtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwZWF0T25lT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxSDNjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptLTIgMThINi44M2wxLjU4IDEuNThMNyAyMmwtNC00IDQtNCAxLjQxIDEuNDJMNi44MyAxN0gxN3YtNGgydjZ6bS05LTguNVY5aDN2NmgtMS41di00LjVIMTB6bTctLjUtMS40MS0xLjQyTDE3LjE3IDdIN3Y0SDVWNWgxMi4xN2wtMS41OC0xLjU4TDE3IDJsNCA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlcGVhdE9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3aDEwdjNsNC00LTQtNHYzSDV2NmgyVjd6bTEwIDEwSDd2LTNsLTQgNCA0IDR2LTNoMTJ2LTZoLTJ2NHptLTQtMlY5aC0xbC0yIDF2MWgxLjV2NEgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlcGVhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3aDEwdjNsNC00LTQtNHYzSDV2NmgyVjd6bTEwIDEwSDd2LTNsLTQgNCA0IDR2LTNoMTJ2LTZoLTJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlcGxheTEwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSA1VjFsLTUgNSA1IDVWN2MzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNi02LTIuNjktNi02aC0yYzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LTgtMy41OC04LTgtOHptLTEuMSAxMWgtLjg1di0zLjI2bC0xLjAxLjMxdi0uNjlsMS43Ny0uNjNoLjA5VjE2em00LjI4LTEuNzZjMCAuMzItLjAzLjYtLjEuODJzLS4xNy40Mi0uMjkuNTctLjI4LjI2LS40NS4zMy0uMzcuMS0uNTkuMS0uNDEtLjAzLS41OS0uMS0uMzMtLjE4LS40Ni0uMzMtLjIzLS4zNC0uMy0uNTctLjExLS41LS4xMS0uODJ2LS43NGMwLS4zMi4wMy0uNi4xLS44MnMuMTctLjQyLjI5LS41Ny4yOC0uMjYuNDUtLjMzLjM3LS4xLjU5LS4xLjQxLjAzLjU5LjEuMzMuMTguNDYuMzMuMjMuMzQuMy41Ny4xMS41LjExLjgydi43NHptLS44NS0uODZjMC0uMTktLjAxLS4zNS0uMDQtLjQ4cy0uMDctLjIzLS4xMi0uMzEtLjExLS4xNC0uMTktLjE3LS4xNi0uMDUtLjI1LS4wNS0uMTguMDItLjI1LjA1LS4xNC4wOS0uMTkuMTctLjA5LjE4LS4xMi4zMS0uMDQuMjktLjA0LjQ4di45N2MwIC4xOS4wMS4zNS4wNC40OHMuMDcuMjQuMTIuMzIuMTEuMTQuMTkuMTcuMTYuMDUuMjUuMDUuMTgtLjAyLjI1LS4wNS4xNC0uMDkuMTktLjE3LjA5LS4xOS4xMS0uMzIuMDQtLjI5LjA0LS40OHYtLjk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwbGF5MzAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVWMUw3IDZsNSA1VjdjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDYtNi0yLjY5LTYtNkg0YzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LTgtMy41OC04LTgtOHptLTIuNDQgOC40OWguNDVjLjIxIDAgLjM3LS4wNS40OC0uMTZzLjE2LS4yNS4xNi0uNDNhLjUzOC41MzggMCAwIDAtLjE1LS4zOWMtLjA1LS4wNS0uMTEtLjA5LS4xOC0uMTFzLS4xNi0uMDQtLjI1LS4wNGMtLjA4IDAtLjE1LjAxLS4yMi4wM3MtLjEzLjA1LS4xOC4xLS4wOS4wOS0uMTIuMTUtLjA1LjEzLS4wNS4yaC0uODVhMS4wNiAxLjA2IDAgMCAxIC40MS0uODVjLjEzLS4xLjI3LS4xOC40NC0uMjNzLjM1LS4wOC41NC0uMDhjLjIxIDAgLjQxLjAzLjU5LjA4cy4zMy4xMy40Ni4yMy4yMy4yMy4zLjM4LjExLjMzLjExLjUzYS44NDIuODQyIDAgMCAxLS4xNy41MiAxLjEgMS4xIDAgMCAxLS40OC4zOWMuMjQuMDkuNDIuMjEuNTQuMzlzLjE4LjM4LjE4LjYxYzAgLjItLjA0LjM4LS4xMi41M3MtLjE4LjI5LS4zMi4zOS0uMjkuMTktLjQ4LjI0LS4zOC4wOC0uNi4wOGMtLjE4IDAtLjM2LS4wMi0uNTMtLjA3cy0uMzMtLjEyLS40Ni0uMjMtLjI1LS4yMy0uMzMtLjM4LS4xMi0uMzQtLjEyLS41NWguODVjMCAuMDguMDIuMTUuMDUuMjJzLjA3LjEyLjEzLjE3LjEyLjA5LjIuMTEuMTYuMDQuMjUuMDRjLjEgMCAuMTktLjAxLjI3LS4wNHMuMTUtLjA3LjItLjEyLjEtLjExLjEzLS4xOC4wNC0uMTUuMDQtLjI0YzAtLjExLS4wMi0uMjEtLjA1LS4yOXMtLjA4LS4xNS0uMTQtLjItLjEzLS4wOS0uMjItLjExLS4xOC0uMDQtLjI5LS4wNGgtLjQ3di0uNjV6bTUuNzQuNzVjMCAuMzItLjAzLjYtLjEuODJzLS4xNy40Mi0uMjkuNTctLjI4LjI2LS40NS4zMy0uMzcuMS0uNTkuMS0uNDEtLjAzLS41OS0uMS0uMzMtLjE4LS40Ni0uMzMtLjIzLS4zNC0uMy0uNTctLjExLS41LS4xMS0uODJ2LS43NGMwLS4zMi4wMy0uNi4xLS44MnMuMTctLjQyLjI5LS41Ny4yOC0uMjYuNDUtLjMzLjM3LS4xLjU5LS4xLjQxLjAzLjU5LjEuMzMuMTguNDYuMzMuMjMuMzQuMy41Ny4xMS41LjExLjgydi43NHptLS44NS0uODZjMC0uMTktLjAxLS4zNS0uMDQtLjQ4cy0uMDctLjIzLS4xMi0uMzEtLjExLS4xNC0uMTktLjE3LS4xNi0uMDUtLjI1LS4wNS0uMTguMDItLjI1LjA1LS4xNC4wOS0uMTkuMTctLjA5LjE4LS4xMi4zMS0uMDQuMjktLjA0LjQ4di45N2MwIC4xOS4wMS4zNS4wNC40OHMuMDcuMjQuMTIuMzIuMTEuMTQuMTkuMTcuMTYuMDUuMjUuMDUuMTgtLjAyLjI1LS4wNS4xNC0uMDkuMTktLjE3LjA5LS4xOS4xMS0uMzJjLjAzLS4xMy4wNC0uMjkuMDQtLjQ4di0uOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBsYXk1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1VjFMNyA2bDUgNVY3YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTZINGMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04LTMuNTgtOC04LTh6bS0xLjMxIDguOS4yNS0yLjE3aDIuMzl2LjcxaC0xLjdsLS4xMS45MmMuMDMtLjAyLjA3LS4wMy4xMS0uMDVzLjA5LS4wNC4xNS0uMDUuMTItLjAzLjE4LS4wNC4xMy0uMDIuMi0uMDJjLjIxIDAgLjM5LjAzLjU1LjFzLjMuMTYuNDEuMjguMi4yNy4yNS40NS4wOS4zOC4wOS42YzAgLjE5LS4wMy4zNy0uMDkuNTRzLS4xNS4zMi0uMjcuNDUtLjI3LjI0LS40NS4zMS0uMzkuMTItLjY0LjEyYy0uMTggMC0uMzYtLjAzLS41My0uMDhzLS4zMi0uMTQtLjQ2LS4yNC0uMjQtLjI0LS4zMi0uMzktLjEzLS4zMy0uMTMtLjUzaC44NGMuMDIuMTguMDguMzIuMTkuNDFzLjI1LjE1LjQyLjE1YS40OS40OSAwIDAgMCAuNDUtLjIzYy4wNC0uMDcuMDgtLjE1LjExLS4yNXMuMDMtLjIuMDMtLjMxLS4wMS0uMjEtLjA0LS4zMS0uMDctLjE3LS4xMy0uMjQtLjEzLS4xMi0uMjEtLjE1LS4xOS0uMDUtLjMtLjA1Yy0uMDggMC0uMTUuMDEtLjIuMDJzLS4xMS4wMy0uMTUuMDUtLjA4LjA1LS4xMi4wNy0uMDcuMDYtLjEuMDlsLS42Ny0uMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBsYXlDaXJjbGVGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE2LjVjLTMuMzEgMC02LTIuNjktNi02aDJjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNGMwLTIuMjQtMS44NS00LjA5LTQuMTYtMy45OWwxLjU3IDEuNTdMMTIgMTEuNWwtNC00IDQtNCAxLjQxIDEuNDEtMS42IDEuNkMxNS4yOCA2LjQgMTggOS4xOCAxOCAxMi41YzAgMy4zMS0yLjY5IDYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiZ1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1VjFMNyA2bDUgNVY3YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTZINGMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04LTMuNTgtOC04LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTVoM2MuNTUgMCAxLS40NSAxLTF2LTEuNWMwLS41NS0uNDUtMS0xLTFINy41di0xaDJ2LjVIMTF2LTFjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXYxLjVjMCAuNTUuNDUgMSAxIDFoMi41djFoLTJWMTNINnYxYzAgLjU1LjQ1IDEgMSAxek0xOCAxNHYtNGMwLS41NS0uNDUtMS0xLTFoLTR2Nmg0Yy41NSAwIDEtLjQ1IDEtMXptLTEuNS0uNWgtMnYtM2gydjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjZoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaHVmZmxlT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxSDNjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNNS40MSA0bDUuMTggNS4xNy0xLjQxIDEuNDJMNCA1LjQyIDUuNDEgNHpNMjAgMjBoLTZ2LTJoMi42MWwtMy4yLTMuMiAxLjQyLTEuNDIgMy4xMyAzLjEzLjA0LjA0VjE0aDJ2NnptMC0xMGgtMlY3LjQyTDUuNDEgMjAgNCAxOC41OSAxNi41OCA2SDE0VjRoNnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2h1ZmZsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNTkgOS4xNyA1LjQxIDQgNCA1LjQxbDUuMTcgNS4xNyAxLjQyLTEuNDF6TTE0LjUgNGwyLjA0IDIuMDRMNCAxOC41OSA1LjQxIDIwIDE3Ljk2IDcuNDYgMjAgOS41VjRoLTUuNXptLjMzIDkuNDEtMS40MSAxLjQxIDMuMTMgMy4xM0wxNC41IDIwSDIwdi01LjVsLTIuMDQgMi4wNC0zLjEzLTMuMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTa2lwTmV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNiAxOCA4LjUtNkw2IDZ2MTJ6bTItOC4xNEwxMS4wMyAxMiA4IDE0LjE0VjkuODZ6TTE2IDZoMnYxMmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNraXBQcmV2aW91cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA2aDJ2MTJINnptMy41IDYgOC41IDZWNmwtOC41IDZ6bTYuNSAyLjE0TDEyLjk3IDEyIDE2IDkuODZ2NC4yOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNsb3dNb3Rpb25WaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuMDUgOS43OSAxMCA3LjV2OWwzLjA1LTIuMjlMMTYgMTJsLTIuOTUtMi4yMXptMCAwTDEwIDcuNXY5bDMuMDUtMi4yOUwxNiAxMmwtMi45NS0yLjIxem0wIDBMMTAgNy41djlsMy4wNS0yLjI5TDE2IDEybC0yLjk1LTIuMjF6TTExIDQuMDdWMi4wNWMtMi4wMS4yLTMuODQgMS01LjMyIDIuMjFMNy4xIDUuNjlBNy45NDEgNy45NDEgMCAwIDEgMTEgNC4wN3pNNS42OSA3LjEgNC4yNiA1LjY4QTkuOTQ5IDkuOTQ5IDAgMCAwIDIuMDUgMTFoMi4wMmMuMTgtMS40Ni43Ni0yLjc5IDEuNjItMy45ek00LjA3IDEzSDIuMDVjLjIgMi4wMSAxIDMuODQgMi4yMSA1LjMybDEuNDMtMS40M0E3Ljg2OCA3Ljg2OCAwIDAgMSA0LjA3IDEzem0xLjYxIDYuNzRBOS45ODEgOS45ODEgMCAwIDAgMTEgMjEuOTV2LTIuMDJhNy45NDEgNy45NDEgMCAwIDEtMy45LTEuNjJsLTEuNDIgMS40M3pNMjIgMTJjMCA1LjE2LTMuOTIgOS40Mi04Ljk1IDkuOTV2LTIuMDJDMTYuOTcgMTkuNDEgMjAgMTYuMDUgMjAgMTJzLTMuMDMtNy40MS02Ljk1LTcuOTNWMi4wNUMxOC4wOCAyLjU4IDIyIDYuODQgMjIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbm9vemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTFoMy42M0w5IDE1LjJWMTdoNnYtMmgtMy42M0wxNSAxMC44VjlIOXYyem03LjA1Ni03LjY1NCAxLjI4Mi0xLjUzNSA0LjYwNyAzLjg1LTEuMjggMS41NHpNMy4zMzYgNy4xOWwtMS4yOC0xLjUzNkw2LjY2MiAxLjgxbDEuMjggMS41MzZ6TTEyIDZjMy44NiAwIDcgMy4xNCA3IDdzLTMuMTQgNy03IDctNy0zLjE0LTctNyAzLjE0LTcgNy03bTAtMmE5IDkgMCAxIDAgLjAwMSAxOC4wMDFBOSA5IDAgMCAwIDEyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTb3J0QnlBbHBoYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuOTQgNC42NmgtNC43MmwyLjM2LTIuMzYgMi4zNiAyLjM2em0tNC42OSAxNC43MWg0LjY2bC0yLjMzIDIuMzMtMi4zMy0yLjMzek02LjEgNi4yNyAxLjYgMTcuNzNoMS44NGwuOTItMi40NWg1LjExbC45MiAyLjQ1aDEuODRMNy43NCA2LjI3SDYuMXptLTEuMTMgNy4zNyAxLjk0LTUuMTggMS45NCA1LjE4SDQuOTd6bTEwLjc2IDIuNWg2LjEydjEuNTloLTguNTN2LTEuMjlsNS45Mi04LjU2aC01Ljg4di0xLjZoOC4zdjEuMjZsLTUuOTMgOC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC4zOCA4LjU3LTEuMjMgMS44NWE4IDggMCAwIDEtLjIyIDcuNThINS4wN0E4IDggMCAwIDEgMTUuNTggNi44NWwxLjg1LTEuMjNBMTAgMTAgMCAwIDAgMy4zNSAxOWEyIDIgMCAwIDAgMS43MiAxaDEzLjg1YTIgMiAwIDAgMCAxLjc0LTEgMTAgMTAgMCAwIDAtLjI3LTEwLjQ0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41OSAxNS40MWEyIDIgMCAwIDAgMi44MyAwbDUuNjYtOC40OS04LjQ5IDUuNjZhMiAyIDAgMCAwIDAgMi44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0b3BDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptNC00SDhWOGg4djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4djhIOFY4aDhtMi0ySDZ2MTJoMTJWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1YnNjcmlwdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNmgxNnYySDR6bTItNGgxMnYySDZ6bTE0IDhINGMtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ydi04YzAtMS4xLS45LTItMi0yem0wIDEwSDR2LThoMTZ2OHptLTEwLTcuMjd2Ni41M0wxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1YnRpdGxlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDE2djEyek02IDEwaDJ2Mkg2em0wIDRoOHYySDZ6bTEwIDBoMnYyaC0yem0tNi00aDh2MmgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1cnJvdW5kU291bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119XX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDRWNmgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4yOSAxNS43MUE1LjIzMyA1LjIzMyAwIDAgMSA2Ljc1IDEyYzAtMS4zNS41Mi0yLjY5IDEuNTMtMy43Mkw3LjA1IDcuMDVDNS42OCA4LjQxIDUgMTAuMjEgNSAxMnMuNjggMy41OSAyLjA2IDQuOTRsMS4yMy0xLjIzek0xMiAxNS41YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzEzLjkzIDguNSAxMiA4LjUgOC41IDEwLjA3IDguNSAxMnMxLjU3IDMuNSAzLjUgMy41em0wLTVjLjgzIDAgMS41LjY3IDEuNSAxLjVzLS42NyAxLjUtMS41IDEuNS0xLjUtLjY3LTEuNS0xLjUuNjctMS41IDEuNS0xLjV6TTE1LjcyIDE1LjcybDEuMjMgMS4yM0MxOC4zMiAxNS41OSAxOSAxMy43OSAxOSAxMnMtLjY4LTMuNTktMi4wNi00Ljk0bC0xLjIzIDEuMjNBNS4yMzMgNS4yMzMgMCAwIDEgMTcuMjUgMTJjMCAxLjM1LS41MiAyLjY5LTEuNTMgMy43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZGVvQ2FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTAuNVY3YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xdi0zLjVsNCA0di0xMWwtNCA0ek0xNSAxNkg1VjhoMTB2OHptLTYtMWgydi0yaDJ2LTJoLTJWOUg5djJIN3YyaDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb0ZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGwtNi02ek02IDIwVjRoN3Y1aDV2MTFINnptOC02IDItMS4wNnY0LjEyTDE0IDE2djFjMCAuNTUtLjQ1IDEtMSAxSDljLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWg0Yy41NSAwIDEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlkZW9MYWJlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTNIM1Y1aDE4djExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlkZW9MaWJyYXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTYtNEg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRIOFY0aDEydjEyek0xMiA1LjV2OWw2LTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZGVvU2V0dGluZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDZoMTh2NWgyVjZjMC0xLjEtLjktMi0yLTJIM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg5di0ySDNWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTIgOSA4djh6TTIyLjcxIDE4LjQzYy4wMy0uMjkuMDQtLjU4LjAxLS44NmwxLjA3LS44NWMuMS0uMDguMTItLjIxLjA2LS4zMmwtMS4wMy0xLjc5Yy0uMDYtLjExLS4xOS0uMTUtLjMxLS4xMWwtMS4yOC41YTMuNDQgMy40NCAwIDAgMC0uNzUtLjQybC0uMi0xLjM2YS4yNDkuMjQ5IDAgMCAwLS4yNS0uMjJoLTIuMDdjLS4xMiAwLS4yMy4wOS0uMjUuMjFsLS4yIDEuMzZjLS4yNi4xMS0uNTEuMjYtLjc0LjQybC0xLjI4LS41Yy0uMTItLjA1LS4yNSAwLS4zMS4xMWwtMS4wMyAxLjc5Yy0uMDYuMTEtLjA0LjI0LjA2LjMybDEuMDcuODZjLS4wMy4yOS0uMDQuNTgtLjAxLjg2bC0xLjA3Ljg1Yy0uMS4wOC0uMTIuMjEtLjA2LjMybDEuMDMgMS43OWMuMDYuMTEuMTkuMTUuMzEuMTFsMS4yNy0uNWMuMjMuMTcuNDguMzEuNzUuNDJsLjIgMS4zNmMuMDIuMTIuMTIuMjEuMjUuMjFoMi4wN2MuMTIgMCAuMjMtLjA5LjI1LS4yMWwuMi0xLjM2Yy4yNi0uMTEuNTEtLjI2Ljc0LS40MmwxLjI4LjVjLjEyLjA1LjI1IDAgLjMxLS4xMWwxLjAzLTEuNzljLjA2LS4xMS4wNC0uMjQtLjA2LS4zMmwtMS4wNi0uODV6TTE5IDE5LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlkZW9jYW1PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTkuNTYgOC0yLTItNC4xNS00LjE0TDIgMy4yNyA0LjczIDZINGMtLjU1IDAtMSAuNDUtMSAxdjEwYzAgLjU1LjQ1IDEgMSAxaDEyYy4yMSAwIC4zOS0uMDguNTUtLjE4TDE5LjczIDIxbDEuNDEtMS40MS04Ljg2LTguODZMOS41NiA4ek01IDE2VjhoMS43M2w4IDhINXptMTAtOHYyLjYxbDYgNlY2LjVsLTQgNFY3YzAtLjU1LS40NS0xLTEtMWgtNS42MWwyIDJIMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb2NhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgOHY4SDVWOGgxMG0xLTJINGMtLjU1IDAtMSAuNDUtMSAxdjEwYzAgLjU1LjQ1IDEgMSAxaDEyYy41NSAwIDEtLjQ1IDEtMXYtMy41bDQgNHYtMTFsLTQgNFY3YzAtLjU1LS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZvbHVtZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDcuOTd2OC4wNWMxLjQ4LS43MyAyLjUtMi4yNSAyLjUtNC4wMkE0LjUgNC41IDAgMCAwIDE2IDcuOTd6TTUgOXY2aDRsNSA1VjRMOSA5SDV6bTctLjE3djYuMzRMOS44MyAxM0g3di0yaDIuODNMMTIgOC44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZvbHVtZU11dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDguODN2Ni4zNEwxMS44MyAxM0g5di0yaDIuODNMMTQgOC44M00xNiA0bC01IDVIN3Y2aDRsNSA1VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWb2x1bWVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMzQgMi45MyAyLjkzIDQuMzQgNy4yOSA4LjcgNyA5SDN2Nmg0bDUgNXYtNi41OWw0LjE4IDQuMThjLS42NS40OS0xLjM4Ljg4LTIuMTggMS4xMXYyLjA2YTguOTQgOC45NCAwIDAgMCAzLjYxLTEuNzVsMi4wNSAyLjA1IDEuNDEtMS40MUw0LjM0IDIuOTN6TTEwIDE1LjE3IDcuODMgMTNINXYtMmgyLjgzbC44OC0uODhMMTAgMTEuNDF2My43NnpNMTkgMTJjMCAuODItLjE1IDEuNjEtLjQxIDIuMzRsMS41MyAxLjUzYy41Ni0xLjE3Ljg4LTIuNDguODgtMy44NyAwLTQuMjgtMi45OS03Ljg2LTctOC43N3YyLjA2YzIuODkuODYgNSAzLjU0IDUgNi43MXptLTctOC0xLjg4IDEuODhMMTIgNy43NnptNC41IDhBNC41IDQuNSAwIDAgMCAxNCA3Ljk3djEuNzlsMi40OCAyLjQ4Yy4wMS0uMDguMDItLjE2LjAyLS4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZvbHVtZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDl2Nmg0bDUgNVY0TDcgOUgzem03LS4xN3Y2LjM0TDcuODMgMTNINXYtMmgyLjgzTDEwIDguODN6TTE2LjUgMTJBNC41IDQuNSAwIDAgMCAxNCA3Ljk3djguMDVjMS40OC0uNzMgMi41LTIuMjUgMi41LTQuMDJ6TTE0IDMuMjN2Mi4wNmMyLjg5Ljg2IDUgMy41NCA1IDYuNzFzLTIuMTEgNS44NS01IDYuNzF2Mi4wNmM0LjAxLS45MSA3LTQuNDkgNy04Ljc3IDAtNC4yOC0yLjk5LTcuODYtNy04Ljc3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2ViQXNzZXRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjgzIDRIMjBhMiAyIDAgMCAxIDIgMnYxMmMwIC4zNC0uMDkuNjYtLjIzLjk0TDIwIDE3LjE3VjhoLTkuMTdsLTQtNHptMTMuNjYgMTkuMzFMMTcuMTcgMjBINGEyIDIgMCAwIDEtMi0yVjZjMC0uMzQuMDgtLjY2LjIzLS45NEwuNjkgMy41MSAyLjEgMi4xbDE5LjggMTkuOC0xLjQxIDEuNDF6TTE1LjE3IDE4bC0xMC0xMEg0djEwaDExLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2ViQXNzZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRINWEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmEyIDIgMCAwIDAtMi0yem0wIDE0SDVWOGgxNHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdlYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek00IDloMTAuNXYzLjVINFY5em0wIDUuNWgxMC41VjE4SDR2LTMuNXpNMjAgMThoLTMuNVY5SDIwdjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUzUCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINC4wMWMtMS4xIDAtMiAuOS0yIDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg1LjE3TDQgMTcuMTdWNGgxNnYxMnptLTgtNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTQgMy40M2MwLS44MS0uNDgtMS41My0xLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgOCAxMy40M1YxNGg4di0uNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRJY0NhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjQ1Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41Ny0uMS0uMDMtLjIxLS4wNS0uMzEtLjA1LS4yNiAwLS41MS4xLS43MS4yOWwtMi4yIDIuMmExNS4wNDUgMTUuMDQ1IDAgMCAxLTYuNTktNi41OWwyLjItMi4yMWEuOTYuOTYgMCAwIDAgLjI1LTEgMTEuMzYgMTEuMzYgMCAwIDEtLjU3LTMuNTdjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6TTUuMDMgNC45NWgxLjVjLjA3Ljg4LjIyIDEuNzUuNDUgMi41OGwtMS4yIDEuMjFjLS40LTEuMjEtLjY2LTIuNDctLjc1LTMuNzl6TTE5IDE4LjkyYy0xLjMyLS4wOS0yLjYtLjM1LTMuOC0uNzZsMS4yLTEuMmMuODUuMjQgMS43Mi4zOSAyLjYuNDV2MS41MXpNMTggNS45NXYtM2gtMnYzaC0zdjJoM3YzaDJ2LTNoM3YtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFsdGVybmF0ZUVtYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxLjk1Yy01LjUyIDAtMTAgNC40OC0xMCAxMHM0LjQ4IDEwIDEwIDEwaDV2LTJoLTVjLTQuMzQgMC04LTMuNjYtOC04czMuNjYtOCA4LTggOCAzLjY2IDggOHYxLjQzYzAgLjc5LS43MSAxLjU3LTEuNSAxLjU3cy0xLjUtLjc4LTEuNS0xLjU3di0xLjQzYzAtMi43Ni0yLjI0LTUtNS01cy01IDIuMjQtNSA1IDIuMjQgNSA1IDVjMS4zOCAwIDIuNjQtLjU2IDMuNTQtMS40Ny42NS44OSAxLjc3IDEuNDcgMi45NiAxLjQ3IDEuOTcgMCAzLjUtMS42IDMuNS0zLjU3di0xLjQzYzAtNS41Mi00LjQ4LTEwLTEwLTEwem0wIDEzYy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFwcFJlZ2lzdHJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDRoNHY0aC00ek00IDE2aDR2NEg0ek00IDEwaDR2NEg0ek00IDRoNHY0SDR6TTE2IDRoNHY0aC00ek0xMSAxNy44NlYyMGgyLjFsNS45OC01Ljk3LTIuMTItMi4xMnpNMTQgMTIuMDNWMTBoLTR2NGgyLjAzek0yMC44NSAxMS41NmwtMS40MS0xLjQxYy0uMi0uMi0uNTEtLjItLjcxIDBsLTEuMDYgMS4wNiAyLjEyIDIuMTIgMS4wNi0xLjA2Yy4yLS4yLjItLjUxIDAtLjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnVzaW5lc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdWM0gydjE4aDIwVjdIMTJ6TTYgMTlINHYtMmgydjJ6bTAtNEg0di0yaDJ2MnptMC00SDRWOWgydjJ6bTAtNEg0VjVoMnYyem00IDEySDh2LTJoMnYyem0wLTRIOHYtMmgydjJ6bTAtNEg4VjloMnYyem0wLTRIOFY1aDJ2MnptMTAgMTJoLTh2LTJoMnYtMmgtMnYtMmgydi0yaC0yVjloOHYxMHptLTItOGgtMnYyaDJ2LTJ6bTAgNGgtMnYyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWxsRW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC41OSAxMC41MmMxLjA1LjUxIDIuMDQgMS4xNSAyLjk2IDEuOTFsLTEuMDcgMS4wN2MtLjU4LS40Ny0xLjIxLS44OS0xLjg4LTEuMjd2LTEuNzFtLTEzLjIgMHYxLjdjLS42NS4zNy0xLjI4Ljc5LTEuODcgMS4yN2wtMS4wNy0xLjA3Yy45MS0uNzUgMS45LTEuMzggMi45NC0xLjlNMTIgN0M3LjQ2IDcgMy4zNCA4Ljc4LjI5IDExLjY3Yy0uMTguMTgtLjI5LjQzLS4yOS43MXMuMTEuNTMuMjkuN2wyLjQ4IDIuNDhjLjE4LjE4LjQzLjI5LjcxLjI5LjI3IDAgLjUyLS4xLjctLjI4Ljc5LS43MyAxLjY4LTEuMzYgMi42Ni0xLjg1LjMzLS4xNi41Ni0uNTEuNTYtLjl2LTMuMUM4Ljg1IDkuMjUgMTAuNCA5IDEyIDlzMy4xNS4yNSA0LjU5LjczdjMuMWMwIC40LjIzLjc0LjU2LjkuOTguNDkgMS44OCAxLjExIDIuNjcgMS44NS4xOC4xNy40My4yOC43LjI4LjI4IDAgLjUzLS4xMS43MS0uMjlsMi40OC0yLjQ4Yy4xOC0uMTguMjktLjQzLjI5LS43MXMtLjExLS41My0uMjktLjcxQTE2Ljk3MSAxNi45NzEgMCAwIDAgMTIgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGxNYWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDV2Mmg2LjU5TDQgMTguNTkgNS40MSAyMCAxNyA4LjQxVjE1aDJWNUg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FsbE1lcmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAyMC40MSAxOC40MSAxOSAxNSAxNS41OSAxMy41OSAxNyAxNyAyMC40MXpNNy41IDhIMTF2NS41OUw1LjU5IDE5IDcgMjAuNDFsNi02VjhoMy41TDEyIDMuNSA3LjUgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGxNaXNzZWRPdXRnb2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMgOC40MSA5IDkgNy03VjE1aDJWN2gtOHYyaDQuNTlMMTIgMTQuNTkgNC40MSA3IDMgOC40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGxNaXNzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjU5IDcgMTIgMTQuNTkgNi40MSA5SDExVjdIM3Y4aDJ2LTQuNTlsNyA3IDktOUwxOS41OSA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FsbFJlY2VpdmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1LjQxIDE4LjU5IDQgNyAxNS41OVY5SDV2MTBoMTB2LTJIOC40MUwyMCA1LjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FsbFNwbGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA0IDIuMjkgMi4yOS0yLjg4IDIuODggMS40MiAxLjQyIDIuODgtMi44OEwyMCAxMFY0aC02em0tNCAwSDR2NmwyLjI5LTIuMjkgNC43MSA0LjdWMjBoMnYtOC40MWwtNS4yOS01LjNMMTAgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNTQgNWMuMDYuODkuMjEgMS43Ni40NSAyLjU5bC0xLjIgMS4yYy0uNDEtMS4yLS42Ny0yLjQ3LS43Ni0zLjc5aDEuNTFtOS44NiAxMi4wMmMuODUuMjQgMS43Mi4zOSAyLjYuNDV2MS40OWMtMS4zMi0uMDktMi41OS0uMzUtMy44LS43NWwxLjItMS4xOU03LjUgM0g0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjQ5YzAtLjU1LS40NS0xLTEtMS0xLjI0IDAtMi40NS0uMi0zLjU3LS41N2EuODQuODQgMCAwIDAtLjMxLS4wNWMtLjI2IDAtLjUxLjEtLjcxLjI5bC0yLjIgMi4yYTE1LjE0OSAxNS4xNDkgMCAwIDEtNi41OS02LjU5bDIuMi0yLjJjLjI4LS4yOC4zNi0uNjcuMjUtMS4wMkExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW5jZWxQcmVzZW50YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxOHYxNHpNOS40MSAxNS45NSAxMiAxMy4zNmwyLjU5IDIuNTlMMTYgMTQuNTRsLTIuNTktMi41OUwxNiA5LjM2bC0xLjQxLTEuNDFMMTIgMTAuNTQgOS40MSA3Ljk1IDggOS4zNmwyLjU5IDIuNTlMOCAxNC41NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNlbGxUb3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTcuMyAxNC43IDEuMi0xLjJjLTEtMS0xLjUtMi4zLTEuNS0zLjUgMC0xLjMuNS0yLjYgMS41LTMuNUw3LjMgNS4zYy0xLjMgMS4zLTIgMy0yIDQuN3MuNyAzLjQgMiA0Ljd6TTE5LjEgMi45bC0xLjIgMS4yYzEuNiAxLjYgMi40IDMuOCAyLjQgNS45IDAgMi4xLS44IDQuMy0yLjQgNS45bDEuMiAxLjJjMi0yIDIuOS00LjUgMi45LTcuMSAwLTIuNi0xLTUuMS0yLjktNy4xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjEgNC4xIDQuOSAyLjlDMyA0LjkgMiA3LjQgMiAxMGMwIDIuNiAxIDUuMSAyLjkgNy4xbDEuMi0xLjJjLTEuNi0xLjYtMi40LTMuOC0yLjQtNS45IDAtMi4xLjgtNC4zIDIuNC01Ljl6TTE2LjcgMTQuN2MxLjMtMS4zIDItMyAyLTQuNy0uMS0xLjctLjctMy40LTItNC43bC0xLjIgMS4yYzEgMSAxLjUgMi4zIDEuNSAzLjUgMCAxLjMtLjUgMi42LTEuNSAzLjVsMS4yIDEuMnpNMTQuNSAxMGEyLjUgMi41IDAgMCAwLTUgMGMwIC43Ni4zNCAxLjQyLjg3IDEuODhMNyAyMmgybC42Ny0yaDQuNjdsLjY2IDJoMmwtMy4zNy0xMC4xMmMuNTMtLjQ2Ljg3LTEuMTIuODctMS44OHptLTQuMTcgOEwxMiAxM2wxLjY3IDVoLTMuMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDZWxsV2lmaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMjJoMTZWNS45N0w2IDIyem0xNC0yaC0ydi03LjIybDItMlYyMHpNNS4yMiA3LjIyIDMuOTMgNS45M2MzLjktMy45MSAxMC4yNC0zLjkxIDE0LjE1IDBsLTEuMjkgMS4yOWMtMy4xOS0zLjE5LTguMzgtMy4xOS0xMS41NyAwem03LjcxIDMuODVMMTEgMTNsLTEuOTMtMS45M2EyLjc0IDIuNzQgMCAwIDEgMy44NiAwem0xLjI5LTEuMjhjLTEuNzgtMS43Ny00LjY2LTEuNzctNi40MyAwTDYuNSA4LjVhNi4zNzQgNi4zNzQgMCAwIDEgOSAwbC0xLjI4IDEuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGF0QnViYmxlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg2bC0yIDJWNGgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoYXRCdWJibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRoMTZ2MTJINS4xN0w0IDE3LjE3VjRtMC0yYy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJINHptMiAxMGg4djJINnYtMnptMC0zaDEydjJINlY5em0wLTNoMTJ2Mkg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbGVhckFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxM2gxNHYtMkg1djJ6bS0yIDRoMTR2LTJIM3Yyek03IDd2MmgxNFY3SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb1ByZXNlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjhoMlY1aDE4djE2YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEwYzAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0IDEuNzkgNCA0IDQgNC0xLjc5IDQtNHptLTYgMGMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yek0xNS4zOSAxNi41NkMxMy43MSAxNS43IDExLjUzIDE1IDkgMTVzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDEgMTkuMjJWMjJoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpNMTUgMjBIM2MwLS43Mi0uMS0xLjM0LjUyLTEuNjZDNC43MSAxNy43MyA2LjYzIDE3IDkgMTdjMi4zNyAwIDQuMjkuNzMgNS40OCAxLjM0LjYzLjMyLjUyLjk1LjUyIDEuNjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb21tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45OSA0YzAtMS4xLS44OS0yLTEuOTktMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE0bDQgNC0uMDEtMTh6TTIwIDR2MTMuMTdMMTguODMgMTZINFY0aDE2ek02IDEyaDEydjJINnptMC0zaDEydjJINnptMC0zaDEydjJINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbW1lbnRzRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC44MyAxNkgyMFY0SDYuODNsLTItMkgyMGMxLjEgMCAyIC45IDIgMnYxNS4xN0wxOC44MyAxNnpNMTggNkg4LjgzbDIgMkgxOFY2em0wIDNoLTYuMTdsMiAySDE4Vjl6bTAgNXYtMmgtMy4xN2wyIDJIMTh6bTMuOSA3LjktMS40MSAxLjQxTDE1LjE3IDE4SDRjLTEuMSAwLTItLjktMi0yVjQuODNMLjY5IDMuNTEgMi4xIDIuMWwxOS44IDE5Ljh6TTEzLjE3IDE2bC0yLTJINnYtMmgzLjE3bC0xLTFINlY5aC4xN0w0IDYuODNWMTZoOS4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRhY3RFbWVyZ2VuY3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE0YzEuNjUgMCAzLTEuMzUgMy0zcy0xLjM1LTMtMy0zLTMgMS4zNS0zIDMgMS4zNSAzIDMgM3ptMC00Yy41NCAwIDEgLjQ2IDEgMXMtLjQ2IDEtMSAxLTEtLjQ2LTEtMSAuNDYtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDNIMkMuOSAzIDAgMy45IDAgNXYxNGMwIDEuMS45IDIgMiAyaDIwYzEuMSAwIDEuOTktLjkgMS45OS0yTDI0IDVjMC0xLjEtLjktMi0yLTJ6TTQuNTQgMTljMS4xLTEuMjIgMi42OS0yIDQuNDYtMnMzLjM2Ljc4IDQuNDYgMkg0LjU0ek0yMiAxOWgtNi4wOGMtMS4zOC0yLjM5LTMuOTYtNC02LjkyLTRzLTUuNTQgMS42MS02LjkyIDRIMlY1aDIwdjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS43OCAxMS4xNSAxLjQ3LS44NVYxMmgxLjV2LTEuN2wxLjQ3Ljg1Ljc1LTEuM0wxOS41IDlsMS40Ny0uODUtLjc1LTEuMy0xLjQ3Ljg1VjZoLTEuNXYxLjdsLTEuNDctLjg1LS43NSAxLjNMMTYuNSA5bC0xLjQ3Ljg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGFjdE1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAzSDJDLjkgMyAwIDMuOSAwIDV2MTRjMCAxLjEuOSAyIDIgMmgyMGMxLjEgMCAxLjk5LS45IDEuOTktMkwyNCA1YzAtMS4xLS45LTItMi0yem0wIDE2SDJWNWgyMHYxNHpNMjEgNmgtN3Y1aDdWNnptLTEgMi0yLjUgMS43NUwxNSA4VjdsMi41IDEuNzVMMjAgN3Yxek05IDEyYzEuNjUgMCAzLTEuMzUgMy0zcy0xLjM1LTMtMy0zLTMgMS4zNS0zIDMgMS4zNSAzIDMgM3ptMC00Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTYgOC41OWMwLTIuNS0zLjk3LTMuNTgtNi0zLjU4cy02IDEuMDgtNiAzLjU4VjE4aDEydi0xLjQxek01LjQ4IDE2Yy43NC0uNSAyLjIyLTEgMy41Mi0xczIuNzcuNDkgMy41MiAxSDUuNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb250YWN0UGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDNIMkMuOSAzIDAgMy45IDAgNXYxNGMwIDEuMS45IDIgMiAyaDIwYzEuMSAwIDEuOTktLjkgMS45OS0yTDI0IDVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIMlY1aDIwdjE0em0tMi45OS0xLjAxTDIxIDE2bC0xLjUxLTJoLTEuNjRjLS4yMi0uNjMtLjM1LTEuMy0uMzUtMnMuMTMtMS4zNy4zNS0yaDEuNjRMMjEgOGwtMS45OS0xLjk5QTcuNDc0IDcuNDc0IDAgMCAwIDE2LjI4IDEwYy0uMTguNjQtLjI4IDEuMzEtLjI4IDJzLjEgMS4zNi4yOCAyYTcuNTEyIDcuNTEyIDAgMCAwIDIuNzMgMy45OXpNOSAxMmMxLjY1IDAgMy0xLjM1IDMtM3MtMS4zNS0zLTMtMy0zIDEuMzUtMyAzIDEuMzUgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem02IDguNTljMC0yLjUtMy45Ny0zLjU4LTYtMy41OHMtNiAxLjA4LTYgMy41OFYxOGgxMnYtMS40MXpNNS40OCAxNmMuNzQtLjUgMi4yMi0xIDMuNTItMXMyLjc3LjQ5IDMuNTIgMUg1LjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGFjdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDRWNmgxNnYxMnpNNCAwaDE2djJINHptMCAyMmgxNnYySDR6bTgtMTBhMi41IDIuNSAwIDAgMCAwLTUgMi41IDIuNSAwIDAgMCAwIDV6bTAtMy41Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTUgNy40OUMxNyAxMy45IDEzLjY5IDEzIDEyIDEzcy01IC45LTUgMi45OVYxN2gxMHYtMS4wMXptLTguMTktLjQ5Yy42MS0uNTIgMi4wMy0xIDMuMTktMSAxLjE3IDAgMi41OS40OCAzLjIgMUg4LjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVza3RvcEFjY2Vzc0Rpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjQxIDEuNjkgMCAzLjFsMSAuOTlWMTZjMCAxLjEuODkgMiAxLjk5IDJIMTB2Mkg4djJoOHYtMmgtMnYtMmguOWw2IDYgMS40MS0xLjQxLTIwLjktMjAuOXpNMi45OSAxNlY2LjA5TDEyLjkgMTZIMi45OXpNNC41NSAybDIgMkgyMXYxMmgtMi40NWwyIDJoLjQ0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJINC41NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpYWxlclNpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgM2gxdjVoLTF6bS0xIDJoLTJWNGgyVjNoLTN2M2gydjFoLTJ2MWgzem0zLTJ2NWgxVjZoMlYzaC0zem0yIDJoLTFWNGgxdjF6bTAgMTAuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTdhLjk4NC45ODQgMCAwIDAtMS4wMS4yNGwtMi4yIDIuMmExNS4wNDUgMTUuMDQ1IDAgMCAxLTYuNTktNi41OWwyLjItMi4yMWMuMjctLjI2LjM1LS42NS4yNC0xQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjVjMC0uNTUtLjQ1LTEtMS0xek01LjAzIDVoMS41Yy4wNy44OC4yMiAxLjc1LjQ2IDIuNTlMNS43OSA4LjhjLS40MS0xLjIxLS42Ny0yLjQ4LS43Ni0zLjh6TTE5IDE4Ljk3Yy0xLjMyLS4wOS0yLjU5LS4zNS0zLjgtLjc1bDEuMi0xLjJjLjg1LjI0IDEuNzEuMzkgMi41OS40NXYxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaWFscGFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxOWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6TTYgMWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTEyLThjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0tNiA4Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNiAwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMC02Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptLTYgMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAtNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb2N1bWVudFNjYW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDNINHYzSDJWMWg1djJ6bTE1IDNWMWgtNXYyaDN2M2gyek03IDIxSDR2LTNIMnY1aDV2LTJ6bTEzLTN2M2gtM3YyaDV2LTVoLTJ6TTE3IDZIN3YxMmgxMFY2em0yIDEyYzAgMS4xLS45IDItMiAySDdjLTEuMSAwLTItLjktMi0yVjZjMC0xLjEuOS0yIDItMmgxMGMxLjEgMCAyIC45IDIgMnYxMnpNMTUgOEg5djJoNlY4em0wIDNIOXYyaDZ2LTJ6bTAgM0g5djJoNnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvbWFpbkRpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjQxIDEuNjkgMCAzLjFsMiAyVjIxaDE1LjlsMyAzIDEuNDEtMS40MS0yMC45LTIwLjl6TTYgMTlINHYtMmgydjJ6bTAtNEg0di0yaDJ2MnptLTItNFY5aDJ2Mkg0em02IDhIOHYtMmgydjJ6bS0yLTR2LTJoMnYySDh6bTQgNHYtMmgxLjlsMiAySDEyek04IDVoMnYyaC0uNDVMMTIgOS40NVY5aDh2OC40NWwyIDJWN0gxMlYzSDUuNTVMOCA1LjQ1em04IDZoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9tYWluVmVyaWZpY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuNiAxMC44OC0xLjQyLTEuNDItNC4yNCA0LjI1LTIuMTItMi4xM0w3LjQgMTNsMy41NCAzLjU0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZhMiAyIDAgMCAwLTItMnptMCAxNEg1VjhoMTR2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEdW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJoLThDNi4zOCAyIDIgNi42NiAyIDEyLjI4IDIgMTcuNSA2LjQ5IDIyIDExLjcyIDIyIDE3LjM5IDIyIDIyIDE3LjYyIDIyIDEyVjRjMC0xLjEtLjktMi0yLTJ6bS0zIDEzLTMtMnYySDdWOWg3djJsMy0ydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbWFpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZ6bS0yIDAtOCA1LTgtNWgxNnptMCAxMkg0VjhsOCA1IDgtNXYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcnVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA0djdINS4xN0w0IDEyLjE3VjRoMTFtMS0ySDNjLS41NSAwLTEgLjQ1LTEgMXYxNGw0LTRoMTBjLjU1IDAgMS0uNDUgMS0xVjNjMC0uNTUtLjQ1LTEtMS0xem01IDRoLTJ2OUg2djJjMCAuNTUuNDUgMSAxIDFoMTFsNCA0VjdjMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9yd2FyZFRvSW5ib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoOXYtMkg0VjhsOCA1IDgtNXY1aDJWNmMwLTEuMS0uOS0yLTItMnptLTggN0w0IDZoMTZsLTggNXptNyA0IDQgNC00IDR2LTNoLTR2LTJoNHYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvdXJnbGFzc0JvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDIyLS4wMS02TDE0IDEybDMuOTktNC4wMUwxOCAySDZ2Nmw0IDQtNCAzLjk5VjIyaDEyek04IDcuNVY0aDh2My41bC00IDQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG91cmdsYXNzVG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNiAyIC4wMSA2TDEwIDEybC0zLjk5IDQuMDFMNiAyMmgxMnYtNmwtNC00IDQtMy45OVYySDZ6bTEwIDE0LjVWMjBIOHYtMy41bDQtNCA0IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIdWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA2LjVhMi45OTYgMi45OTYgMCAwIDAtMi45OSAzLjIxbC0yLjAzLjY4YTQuNDY4IDQuNDY4IDAgMCAwLTMuMjItMi4zMlY1LjkxQTMuMDE4IDMuMDE4IDAgMCAwIDE1IDNjMC0xLjY2LTEuMzQtMy0zLTNTOSAxLjM0IDkgM2MwIDEuNC45NiAyLjU3IDIuMjUgMi45MXYyLjE2Yy0xLjQuMjMtMi41OCAxLjExLTMuMjIgMi4zMmwtMi4wNC0uNjhDNiA5LjY0IDYgOS41NyA2IDkuNWMwLTEuNjYtMS4zNC0zLTMtM3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzYzEuMDYgMCAxLjk4LS41NSAyLjUyLTEuMzdsMi4wMy42OGMtLjIgMS4yOS4xNyAyLjY2IDEuMDkgMy42OWwtMS40MSAxLjc3QzYuODUgMTcuMDkgNi40NCAxNyA2IDE3Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTNjMC0uNjgtLjIyLTEuMy0uNi0xLjhsMS40MS0xLjc3YzEuMzYuNzYgMy4wMi43NSA0LjM3IDBsMS40MSAxLjc3Yy0uMzcuNS0uNTkgMS4xMi0uNTkgMS44IDAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTMtMS4zNC0zLTMtM2MtLjQ0IDAtLjg1LjA5LTEuMjMuMjZsLTEuNDEtMS43N2E0LjQ5IDQuNDkgMCAwIDAgMS4wOS0zLjY5bDIuMDMtLjY4Yy41My44MiAxLjQ2IDEuMzcgMi41MiAxLjM3IDEuNjYgMCAzLTEuMzQgMy0zUzIyLjY2IDYuNSAyMSA2LjV6bS0xOCA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6TTYgMjFjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptNS0xOGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDEtLjQ1IDEtMSAxLTEtLjQ1LTEtMXptMSAxMmEyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXptNiA0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTMtOC41Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbXBvcnRDb250YWN0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVjLTEuMTEtLjM1LTIuMzMtLjUtMy41LS41LTEuOTUgMC00LjA1LjQtNS41IDEuNS0xLjQ1LTEuMS0zLjU1LTEuNS01LjUtMS41UzIuNDUgNC45IDEgNnYxNC42NWMwIC4yNS4yNS41LjUuNS4xIDAgLjE1LS4wNS4yNS0uMDVDMy4xIDIwLjQ1IDUuMDUgMjAgNi41IDIwYzEuOTUgMCA0LjA1LjQgNS41IDEuNSAxLjM1LS44NSAzLjgtMS41IDUuNS0xLjUgMS42NSAwIDMuMzUuMyA0Ljc1IDEuMDUuMS4wNS4xNS4wNS4yNS4wNS4yNSAwIC41LS4yNS41LS41VjZjLS42LS40NS0xLjI1LS43NS0yLTF6bTAgMTMuNWMtMS4xLS4zNS0yLjMtLjUtMy41LS41LTEuNyAwLTQuMTUuNjUtNS41IDEuNVY4YzEuMzUtLjg1IDMuOC0xLjUgNS41LTEuNSAxLjIgMCAyLjQuMTUgMy41LjV2MTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUltcG9ydEV4cG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAzIDUgNi45OWgzVjE0aDJWNi45OWgzTDkgM3ptNyAxNC4wMVYxMGgtMnY3LjAxaC0zTDE1IDIxbDQtMy45OWgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUludmVydENvbG9yc09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjJsNC4yIDQuMmE3LjczIDcuNzMgMCAwIDAtMS42IDQuN0M0IDE3LjQ4IDcuNTggMjEgMTIgMjFjMS43NSAwIDMuMzYtLjU2IDQuNjctMS41bDMuMSAzLjEgMS40Mi0xLjQxek0xMiAxOWMtMy4zMSAwLTYtMi42My02LTUuODcgMC0xLjE5LjM2LTIuMzIgMS4wMi0zLjI4TDEyIDE0LjgzVjE5ek04LjM4IDUuNTYgMTIgMmw1LjY1IDUuNTZDMTkuMSA4Ljk5IDIwIDEwLjk2IDIwIDEzLjEzYzAgMS4xOC0uMjcgMi4yOS0uNzQgMy4zTDEyIDkuMTdWNC44MUw5LjggNi45NyA4LjM4IDUuNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMC43IDEzLjUzLTEuNzEtMS43MWMuMDEuMDYuMDEuMTIuMDEuMTggMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yYy4wNiAwIC4xMiAwIC4xOC4wMUw1LjQ3IDguM0M0LjAyIDguOSAzIDEwLjMzIDMgMTJjMCAyLjIxIDEuNzkgNCA0IDQgMS42NyAwIDMuMS0xLjAyIDMuNy0yLjQ3em0xLjQ5IDEuNDlBNi4wMTIgNi4wMTIgMCAwIDEgNyAxOGMtMy4zMSAwLTYtMi42OS02LTYgMC0yLjIxIDEuMi00LjE1IDIuOTgtNS4xOUwxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40MSAxLjQxLTcuNTgtNy41OHptNC4wNy0xLjU5IDEuMjQtLjkzIDEuODEgMS4zNkwyMS4xNyAxMmwtMS0xaC02LjM0bC0yLTJIMjFsMyAzLTQuNSA0LjUtLjY5LS41MS0yLjU1LTIuNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMGgtOC4zNUE1Ljk5IDUuOTkgMCAwIDAgNyA2Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2YTUuOTkgNS45OSAwIDAgMCA1LjY1LTRIMTNsMiAyIDItMiAyIDIgNC00LjA0TDIxIDEwek03IDE1Yy0xLjY1IDAtMy0xLjM1LTMtM3MxLjM1LTMgMy0zIDMgMS4zNSAzIDMtMS4zNSAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpc3RBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDdoNnYyaC02em0wIDRoNnYyaC02em0wIDRoNnYyaC02ek03IDdoMnYySDd6bTAgNGgydjJIN3ptMCA0aDJ2Mkg3ek0yMC4xIDNIMy45Yy0uNSAwLS45LjQtLjkuOXYxNi4yYzAgLjQuNC45LjkuOWgxNi4yYy40IDAgLjktLjUuOS0uOVYzLjljMC0uNS0uNS0uOS0uOS0uOXpNMTkgMTlINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGl2ZUhlbHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoNGwzIDMgMy0zaDRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNmgtNC44M2wtLjU5LjU5TDEyIDIwLjE3bC0xLjU5LTEuNTktLjU4LS41OEg1VjRoMTR2MTR6bS04LTNoMnYyaC0yem0xLThjMS4xIDAgMiAuOSAyIDIgMCAyLTMgMS43NS0zIDVoMmMwLTIuMjUgMy0yLjUgMy01IDAtMi4yMS0xLjc5LTQtNC00UzggNi43OSA4IDloMmMwLTEuMS45LTIgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYXRpb25PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjMi43NiAwIDUgMi4yNCA1IDUgMCAxLjA2LS4zOSAyLjMyLTEgMy42MmwxLjQ5IDEuNDlDMTguMzcgMTIuMzYgMTkgMTAuNTcgMTkgOWMwLTMuODctMy4xMy03LTctNy0xLjg0IDAtMy41LjcxLTQuNzUgMS44NmwxLjQzIDEuNDNDOS41NiA0LjUgMTAuNzIgNCAxMiA0em0wIDIuNWMtLjU5IDAtMS4xMy4yMS0xLjU2LjU2bDMuNSAzLjVjLjM1LS40My41Ni0uOTcuNTYtMS41NkEyLjUgMi41IDAgMCAwIDEyIDYuNXpNMy40MSAyLjg2IDIgNC4yN2wzLjE4IDMuMThDNS4wNyA3Ljk1IDUgOC40NyA1IDljMCA1LjI1IDcgMTMgNyAxM3MxLjY3LTEuODUgMy4zOC00LjM1TDE4LjczIDIxbDEuNDEtMS40MUwzLjQxIDIuODZ6TTEyIDE4Ljg4Yy0yLjAxLTIuNTgtNC44LTYuNzQtNC45OC05LjU5bDYuOTIgNi45MmMtLjY1Ljk4LTEuMzMgMS44OS0xLjk0IDIuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhdGlvbk9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzguMTMgMiA1IDUuMTMgNSA5YzAgNS4yNSA3IDEzIDcgMTNzNy03Ljc1IDctMTNjMC0zLjg3LTMuMTMtNy03LTd6TTcgOWMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMi44OC0yLjg4IDcuMTktNSA5Ljg4QzkuOTIgMTYuMjEgNyAxMS44NSA3IDl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI5XCIsXCJyXCI6XCIyLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1haWxMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNCA4IDggNSA4LTV2MmgyVjZjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTJ2LTJINFY4em0xNi0yLTggNS04LTVoMTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDE1di0xYzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYxYy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTF6bS0zIDB2LTFjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjFoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYWlsT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDRWOGw4IDUgOC01djEwem0tOC03TDQgNmgxNmwtOCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFya0NoYXRSZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMThINmwtNCA0VjRjMC0xLjEuOS0yIDItMmgxNmMxLjEgMCAyIC45IDIgMnY3aC0yVjRINHYxMmg4djJ6bTExLTMuNjYtMS40MS0xLjQxLTQuMjQgNC4yNC0yLjEyLTIuMTItMS40MSAxLjQxTDE3LjM0IDIwIDIzIDE0LjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFya0NoYXRVbnJlYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA2Ljk4VjE2YzAgMS4xLS45IDItMiAySDZsLTQgNFY0YzAtMS4xLjktMiAyLTJoMTAuMWMtLjA2LjMyLS4xLjY2LS4xIDFzLjA0LjY4LjEgMUg0djEyaDE2VjcuOWMuNzQtLjE1IDEuNDItLjQ4IDItLjkyek0xNiAzYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTMtMS4zNC0zLTMtMy0zIDEuMzQtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFya0VtYWlsUmVhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoOHYtMkg0VjhsOCA1IDgtNXY1aDJWNmMwLTEuMS0uOS0yLTItMnptLTggN0w0IDZoMTZsLTggNXptNS4zNCAxMS0zLjU0LTMuNTQgMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjRMMjMgMTYuMzQgMTcuMzQgMjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYXJrRW1haWxVbnJlYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA4Ljk4VjE4YzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0ybC4wMS0xMmMwLTEuMS44OS0yIDEuOTktMmgxMC4xYy0uMDYuMzItLjEuNjYtLjEgMXMuMDQuNjguMSAxSDRsOCA1IDMuNjctMi4yOWMuNDcuNDMgMS4wMi43NiAxLjYzLjk4TDEyIDEzIDQgOHYxMGgxNlY5LjljLjc0LS4xNSAxLjQyLS40OCAyLS45MnpNMTYgNWMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zLTEuMzQtMy0zLTMtMyAxLjM0LTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hcmtVbnJlYWRDaGF0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTZINFY0aDEwLjFhNSA1IDAgMCAxIDAtMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNi45OGMtLjU4LjQ0LTEuMjYuNzctMiAuOTJWMTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTlcIixcImN5XCI6XCIzXCIsXCJyXCI6XCIzXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTJoOHYySDZ6TTYgOWgxMnYySDZ6TTYgOGgxMnYtLjFBNS4wMTMgNS4wMTMgMCAwIDEgMTUuMDMgNkg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZXNzYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRoMTZ2MTJINS4xN0w0IDE3LjE3VjRtMC0yYy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJINHptMiAxMGgxMnYySDZ2LTJ6bTAtM2gxMnYySDZWOXptMC0zaDEydjJINlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9iaWxlU2NyZWVuU2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDFIN2MtMS4xIDAtMS45OS44NS0xLjk5IDEuOTV2MThDNS4wMSAyMi4wNSA1LjkgMjMgNyAyM2gxMGMxLjEgMCAyLS45NSAyLTIuMDV2LTE4QzE5IDEuODUgMTguMSAxIDE3IDF6bTAgMThIN1Y1aDEwdjE0em0tNC4yLTUuNzZ2MS43NUwxNiAxMmwtMy4yLTIuOTh2MS43Yy0zLjExLjQzLTQuMzUgMi41Ni00LjggNC43IDEuMTEtMS41IDIuNTgtMi4xOCA0LjgtMi4xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vcmVUaW1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgOHY2bDQuNyAyLjkuOC0xLjItNC0yLjRWOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuOTIgMTJBNi45NTcgNi45NTcgMCAwIDEgMTEgMjBjLTMuOSAwLTctMy4xLTctN3MzLjEtNyA3LTdjLjcgMCAxLjM3LjEgMiAuMjlWNC4yM2MtLjY0LS4xNS0xLjMxLS4yMy0yLS4yMy01IDAtOSA0LTkgOXM0IDkgOSA5YTguOTYzIDguOTYzIDAgMCAwIDguOTQtMTBoLTIuMDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVWMmgtMnYzaC0zdjJoM3YzaDJWN2gzVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjgyIDEzSDExdi0ySDYuODJDNi40IDkuODQgNS4zIDkgNCA5Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzYzEuMyAwIDIuNC0uODQgMi44Mi0yek00IDEzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIzIDEyLTQtM3YyaC00LjA1Yy0uNS01LjA1LTQuNzYtOS05Ljk1LTl2MmM0LjQyIDAgOCAzLjU4IDggOHMtMy41OCA4LTggOHYyYzUuMTkgMCA5LjQ1LTMuOTUgOS45NS05SDE5djJsNC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9TaW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS4yNiAyMS4yMSAzLjc5IDMuNzQgMi4zOCA1LjE1bDIuNzQgMi43NC0uMTIuMTJWMTljMCAxLjEuOSAyIDIgMmgxMGMuMzUgMCAuNjgtLjEuOTctLjI2bDEuODggMS44OCAxLjQxLTEuNDF6TTcgMTlWOS43N0wxNi4yMyAxOUg3em0zLjg0LTE0SDE3djkuMTFsMiAyVjVjMC0xLjEtLjktMi0yLTJoLTYuOTlMNy45NSA1LjA2bDEuNDEgMS40MUwxMC44NCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGF1c2VQcmVzZW50YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuODUtMiAxLjk1djE0YzAgMS4xLjkgMi4wNSAyIDIuMDVoMThjMS4xIDAgMi0uOTUgMi0yLjA1di0xNEMyMyAzLjg1IDIyLjEgMyAyMSAzem0wIDE2SDNWNWgxOHYxNHpNOSA4aDJ2OEg5em00IDBoMnY4aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVyc29uQWRkRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDZjMS4xIDAgMiAuOSAyIDJhMiAyIDAgMCAxLTEuNjcgMS45N2wtMi4zMS0yLjMxQzEzLjE5IDYuNzIgMTQuMDEgNiAxNSA2bTAtMmMtMi4yMSAwLTQgMS43OS00IDQgMCAuMTguMDMuMzUuMDUuNTJsMy40MyAzLjQzYy4xNy4wMi4zNC4wNS41Mi4wNSAyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNHptMS42OSAxMC4xNkwyMi41MyAyMEgyM3YtMmMwLTIuMTQtMy41Ni0zLjUtNi4zMS0zLjg0em0tMy42OCAxLjk3TDE0Ljg4IDE4SDljLjA4LS4yNC44OC0xLjAxIDIuOTEtMS41N2wxLjEtLjNNMS40MSAxLjcxIDAgMy4xMmw0IDRWMTBIMXYyaDN2M2gydi0zaDIuODhsMi41MSAyLjUxQzkuMTkgMTUuMTEgNyAxNi4zIDcgMTh2Mmg5Ljg4bDQgNCAxLjQxLTEuNDFMMS40MSAxLjcxek02IDEwdi0uODhsLjg4Ljg4SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25TZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6TTQgMThjLjIyLS43MiAzLjMxLTIgNi0yIDAtLjcuMTMtMS4zNy4zNS0xLjk5QzcuNjIgMTMuOTEgMiAxNS4yNyAyIDE4djJoOS41NGMtLjUyLS41OC0uOTMtMS4yNS0xLjE5LTJINHpNMTkuNDMgMTguMDJjLjM2LS41OS41Ny0xLjI4LjU3LTIuMDIgMC0yLjIxLTEuNzktNC00LTRzLTQgMS43OS00IDQgMS43OSA0IDQgNGMuNzQgMCAxLjQzLS4yMiAyLjAyLS41N0wyMC41OSAyMiAyMiAyMC41OWMtMS41LTEuNS0uNzktLjgtMi41Ny0yLjU3ek0xNiAxOGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZURpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMzQgMTQuNTQtMS40My0xLjQzYy41Ni0uNzMgMS4wNS0xLjUgMS40Ny0yLjMybC0yLjItMi4yYy0uMjgtLjI4LS4zNi0uNjctLjI1LTEuMDIuMzctMS4xMi41Ny0yLjMyLjU3LTMuNTcgMC0uNTUuNDUtMSAxLTFIMjBjLjU1IDAgMSAuNDUgMSAxIDAgMy45OC0xLjM3IDcuNjQtMy42NiAxMC41NHptLTIuODIgMi44MUExNi44ODQgMTYuODg0IDAgMCAxIDQgMjFjLS41NSAwLTEtLjQ1LTEtMXYtMy40OWMwLS41NS40NS0xIDEtMSAxLjI0IDAgMi40NS0uMiAzLjU3LS41Ny4xLS4wNC4yMS0uMDUuMzEtLjA1LjI2IDAgLjUxLjEuNzEuMjlsMi4yIDIuMmMuODEtLjQyIDEuNTgtLjkgMi4zLTEuNDZMMS4zOSA0LjIybDEuNDItMS40MUwyMS4xOSAyMS4ybC0xLjQxIDEuNDEtNS4yNi01LjI2em0tNi45Mi0uMzNjLS44NS4yNC0xLjcyLjM5LTIuNi40NXYxLjQ5YzEuMzItLjA5IDIuNTktLjM1IDMuOC0uNzVsLTEuMi0xLjE5ek0xNy40NiA1Yy0uMDYuODktLjIxIDEuNzYtLjQ1IDIuNTlsMS4yIDEuMmMuNDEtMS4yLjY3LTIuNDcuNzYtMy43OWgtMS41MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lRW5hYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjQ2IDVjLS4wNi44OS0uMjEgMS43Ni0uNDUgMi41OWwxLjIgMS4yYy40MS0xLjIuNjctMi40Ny43Ni0zLjc5aC0xLjUxek03LjYgMTcuMDJjLS44NS4yNC0xLjcyLjM5LTIuNi40NXYxLjQ5YzEuMzItLjA5IDIuNTktLjM1IDMuOC0uNzVsLTEuMi0xLjE5ek0xNi41IDNIMjBjLjU1IDAgMSAuNDUgMSAxIDAgOS4zOS03LjYxIDE3LTE3IDE3LS41NSAwLTEtLjQ1LTEtMXYtMy40OWMwLS41NS40NS0xIDEtMSAxLjI0IDAgMi40NS0uMiAzLjU3LS41Ny4xLS4wNC4yMS0uMDUuMzEtLjA1LjI2IDAgLjUxLjEuNzEuMjlsMi4yIDIuMmMyLjgzLTEuNDUgNS4xNS0zLjc2IDYuNTktNi41OWwtMi4yLTIuMmMtLjI4LS4yOC0uMzYtLjY3LS4yNS0xLjAyLjM3LTEuMTIuNTctMi4zMi41Ny0zLjU3IDAtLjU1LjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNTQgNWMuMDYuODkuMjEgMS43Ni40NSAyLjU5bC0xLjIgMS4yYy0uNDEtMS4yLS42Ny0yLjQ3LS43Ni0zLjc5aDEuNTFtOS44NiAxMi4wMmMuODUuMjQgMS43Mi4zOSAyLjYuNDV2MS40OWMtMS4zMi0uMDktMi41OS0uMzUtMy44LS43NWwxLjItMS4xOU03LjUgM0g0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjQ5YzAtLjU1LS40NS0xLTEtMS0xLjI0IDAtMi40NS0uMi0zLjU3LS41N2EuODQuODQgMCAwIDAtLjMxLS4wNWMtLjI2IDAtLjUxLjEtLjcxLjI5bC0yLjIgMi4yYTE1LjE0OSAxNS4xNDkgMCAwIDEtNi41OS02LjU5bDIuMi0yLjJjLjI4LS4yOC4zNi0uNjcuMjUtMS4wMkExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZWxpbmtFcmFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgOC4yLTEtMS00IDQtNC00LTEgMSA0IDQtNCA0IDEgMSA0LTQgNCA0IDEtMS00LTQgNC00ek0xOSAxSDljLTEuMSAwLTIgLjktMiAydjNoMlY0aDEwdjE2SDl2LTJIN3YzYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lbGlua0xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDFIOWMtMS4xIDAtMiAuOS0yIDJ2M2gyVjRoMTB2MTZIOXYtMkg3djNjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0tOC4yIDEwVjkuNUMxMC44IDguMSA5LjQgNyA4IDdTNS4yIDguMSA1LjIgOS41VjExYy0uNiAwLTEuMi42LTEuMiAxLjJ2My41YzAgLjcuNiAxLjMgMS4yIDEuM2g1LjVjLjcgMCAxLjMtLjYgMS4zLTEuMnYtMy41YzAtLjctLjYtMS4zLTEuMi0xLjN6bS0xLjMgMGgtM1Y5LjVjMC0uOC43LTEuMyAxLjUtMS4zczEuNS41IDEuNSAxLjNWMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZWxpbmtSaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC4xIDcuNy0xIDFjMS44IDEuOCAxLjggNC42IDAgNi41bDEgMWMyLjUtMi4zIDIuNS02LjEgMC04LjV6TTE4IDkuOGwtMSAxYy41LjcuNSAxLjYgMCAyLjNsMSAxYzEuMi0xLjIgMS4yLTMgMC00LjN6TTE0IDFINGMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE5SDRWNGgxMHYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lbGlua1NldHVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDN2M2gyVjRoMTB2MTZIOXYtMkg3djNjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0ySDljLTEuMSAwLTIgLjktMiAyem0yLjUgMTIuNWMuMjktLjEyLjU1LS4yOS44LS40OGwtLjAyLjAzIDEuMDEuMzljLjIzLjA5LjQ5IDAgLjYxLS4yMmwuODQtMS40NmMuMTItLjIxLjA3LS40OS0uMTItLjY0bC0uODUtLjY4LS4wMi4wM2MuMDItLjE2LjA1LS4zMi4wNS0uNDhzLS4wMy0uMzItLjA1LS40OGwuMDIuMDMuODUtLjY4Yy4xOS0uMTUuMjQtLjQzLjEyLS42NGwtLjg0LTEuNDZhLjQ5OS40OTkgMCAwIDAtLjYxLS4yMmwtMS4wMS4zOS4wMi4wM2MtLjI1LS4xNy0uNTEtLjM0LS44LS40NmwtLjE3LTEuMDhBLjQ4OC40ODggMCAwIDAgOC44NCA3SDcuMTZjLS4yNSAwLS40Ni4xOC0uNDkuNDJMNi41IDguNWMtLjI5LjEyLS41NS4yOS0uOC40OGwuMDItLjAzLTEuMDItLjM5Yy0uMjMtLjA5LS40OSAwLS42MS4yMmwtLjg0IDEuNDZjLS4xMi4yMS0uMDcuNDkuMTIuNjRsLjg1LjY4LjAyLS4wM2MtLjAyLjE1LS4wNS4zMS0uMDUuNDdzLjAzLjMyLjA1LjQ4bC0uMDItLjAzLS44NS42OGMtLjE5LjE1LS4yNC40My0uMTIuNjRsLjg0IDEuNDZjLjEyLjIxLjM4LjMxLjYxLjIybDEuMDEtLjM5LS4wMS0uMDRjLjI1LjE5LjUxLjM2LjguNDhsLjE3IDEuMDdjLjAzLjI1LjI0LjQzLjQ5LjQzaDEuNjhjLjI1IDAgLjQ2LS4xOC40OS0uNDJsLjE3LTEuMDh6TTYgMTJjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvcnRhYmxlV2lmaU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy40MiAyLjM2IDIuMDEgMy43OCA0LjEgNS44N0MyLjc5IDcuNTcgMiA5LjY5IDIgMTJjMCAzLjcgMi4wMSA2LjkyIDQuOTkgOC42NWwxLTEuNzNDNS42MSAxNy41MyA0IDE0Ljk2IDQgMTJjMC0xLjc2LjU3LTMuMzggMS41My00LjY5bDEuNDMgMS40NEM2LjM2IDkuNjggNiAxMC44IDYgMTJjMCAyLjIyIDEuMjEgNC4xNSAzIDUuMTlsMS0xLjc0Yy0xLjE5LS43LTItMS45Ny0yLTMuNDUgMC0uNjUuMTctMS4yNS40NC0xLjc5bDEuNTggMS41OEwxMCAxMmMwIDEuMS45IDIgMiAybC4yMS0uMDIgNy41MiA3LjUyIDEuNDEtMS40MUwzLjQyIDIuMzZ6bTE0LjI5IDExLjQ2Yy4xOC0uNTcuMjktMS4xOS4yOS0xLjgyIDAtMy4zMS0yLjY5LTYtNi02LS42MyAwLTEuMjUuMTEtMS44Mi4yOWwxLjcyIDEuNzJjLjAzIDAgLjA2LS4wMS4xLS4wMSAyLjIxIDAgNCAxLjc5IDQgNCAwIC4wNC0uMDEuMDctLjAxLjExbDEuNzIgMS43MXpNMTIgNGM0LjQyIDAgOCAzLjU4IDggOCAwIDEuMi0uMjkgMi4zMi0uNzcgMy4zNWwxLjQ5IDEuNDlBOS44MiA5LjgyIDAgMCAwIDIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwLTEuNzYgMC0zLjQuNDgtNC44NCAxLjI4bDEuNDggMS40OEM5LjY2IDQuMjggMTAuOCA0IDEyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQcmVzZW50VG9BbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxNGMwIDEuMTEuODkgMiAyIDJoMThjMS4xMSAwIDItLjg5IDItMlY1YzAtMS4xMS0uODktMi0yLTJ6bTAgMTYuMDJIM1Y0Ljk4aDE4djE0LjA0ek0xMCAxMkg4bDQtNCA0IDRoLTJ2NGgtNHYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVByaW50RGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjQxIDEuNiAwIDMuMDEgNSA4Yy0xLjY2IDAtMyAxLjM0LTMgM3Y2aDR2NGgxMmwyLjk1IDIuOTYgMS40MS0xLjQxTDEuNDEgMS42ek02IDE1SDR2LTRjMC0uNTUuNDUtMSAxLTFoMmwzIDNINnYyem0yIDR2LTRoNGw0IDRIOHpNOCA1aDh2M2gtNS4zNGwyIDJIMTljLjU1IDAgMSAuNDUgMSAxdjRsLTIgLjAxVjEzaC0yLjM0bDQgNEgyMnYtNmMwLTEuNjYtMS4zNC0zLTMtM2gtMVYzSDZ2LjM2bDIgMlY1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiMTEuNTFcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVFyQ29kZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyMWgtMnYtMmgydjJ6bS0yLTdoLTJ2NWgydi01em04LTJoLTJ2NGgydi00em0tMi0yaC0ydjJoMnYtMnpNNyAxMkg1djJoMnYtMnptLTItMkgzdjJoMnYtMnptNy01aDJWM2gtMnYyem0tNy41LS41djNoM3YtM2gtM3pNOSA5SDNWM2g2djZ6bS00LjUgNy41djNoM3YtM2gtM3pNOSAyMUgzdi02aDZ2NnptNy41LTE2LjV2M2gzdi0zaC0zek0yMSA5aC02VjNoNnY2em0tMiAxMHYtM2gtNHYyaDJ2M2g0di0yaC0yem0tMi03aC00djJoNHYtMnptLTQtMkg3djJoMnYyaDJ2LTJoMnYtMnptMS0xVjdoLTJWNWgtMnY0aDR6TTYuNzUgNS4yNWgtMS41djEuNWgxLjV2LTEuNXptMCAxMmgtMS41djEuNWgxLjV2LTEuNXptMTItMTJoLTEuNXYxLjVoMS41di0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVRckNvZGVTY2FubmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDYuNXYzaC0zdi0zaDNNMTEgNUg1djZoNlY1em0tMS41IDkuNXYzaC0zdi0zaDNNMTEgMTNINXY2aDZ2LTZ6bTYuNS02LjV2M2gtM3YtM2gzTTE5IDVoLTZ2Nmg2VjV6bS02IDhoMS41djEuNUgxM1YxM3ptMS41IDEuNUgxNlYxNmgtMS41di0xLjV6TTE2IDEzaDEuNXYxLjVIMTZWMTN6bS0zIDNoMS41djEuNUgxM1YxNnptMS41IDEuNUgxNlYxOWgtMS41di0xLjV6TTE2IDE2aDEuNXYxLjVIMTZWMTZ6bTEuNS0xLjVIMTlWMTZoLTEuNXYtMS41em0wIDNIMTlWMTloLTEuNXYtMS41ek0yMiA3aC0yVjRoLTNWMmg1djV6bTAgMTV2LTVoLTJ2M2gtM3YyaDV6TTIgMjJoNXYtMkg0di0zSDJ2NXpNMiAydjVoMlY0aDNWMkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXJDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMWg4VjNIM3Y4em0yLTZoNHY0SDVWNXpNMyAyMWg4di04SDN2OHptMi02aDR2NEg1di00ek0xMyAzdjhoOFYzaC04em02IDZoLTRWNWg0djR6TTE5IDE5aDJ2MmgtMnpNMTMgMTNoMnYyaC0yek0xNSAxNWgydjJoLTJ6TTEzIDE3aDJ2MmgtMnpNMTUgMTloMnYyaC0yek0xNyAxN2gydjJoLTJ6TTE3IDEzaDJ2MmgtMnpNMTkgMTVoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVhZE1vcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3aDl2MmgtOXpNMTMgMTVoOXYyaC05ek0xNiAxMWg2djJoLTZ6TTEzIDEyIDggN3Y0SDJ2Mmg2djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSaW5nVm9sdW1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMy43MSAxNi42N0ExNi45NzEgMTYuOTcxIDAgMCAwIDEyIDEyQzcuNDYgMTIgMy4zNCAxMy43OC4yOSAxNi42N2MtLjE4LjE4LS4yOS40My0uMjkuNzEgMCAuMjguMTEuNTMuMjkuNzFsMi40OCAyLjQ4Yy4xOC4xOC40My4yOS43MS4yOS4yNyAwIC41Mi0uMTEuNy0uMjguNzktLjc0IDEuNjktMS4zNiAyLjY2LTEuODUuMzMtLjE2LjU2LS41LjU2LS45di0zLjFjMS40NS0uNDggMy0uNzMgNC42LS43MyAxLjYgMCAzLjE1LjI1IDQuNi43MnYzLjFjMCAuMzkuMjMuNzQuNTYuOS45OC40OSAxLjg3IDEuMTIgMi42NiAxLjg1LjE4LjE4LjQzLjI4LjcuMjguMjggMCAuNTMtLjExLjcxLS4yOWwyLjQ4LTIuNDhjLjE4LS4xOC4yOS0uNDMuMjktLjcxYS45OS45OSAwIDAgMC0uMjktLjd6bS0xOC4zMS41NmMtLjY2LjM3LTEuMjkuOC0xLjg3IDEuMjdsLTEuMDctMS4wN2MuOTEtLjc1IDEuOS0xLjM5IDIuOTUtMS45djEuN3ptMTUuMDcgMS4yNmMtLjU5LS40OC0xLjIxLS45LTEuODctMS4yN3YtMS43YzEuMDQuNTEgMi4wMyAxLjE1IDIuOTQgMS45bC0xLjA3IDEuMDd6bS42OS0xMi4yMy0xLjQxLTEuNDEtMy41NiAzLjU1IDEuNDEgMS40MXMzLjQ1LTMuNTIgMy41Ni0zLjU1ek0xMSAyaDJ2NWgtMnpNNi40IDkuODEgNy44MSA4LjQgNC4yNiA0Ljg0IDIuODQgNi4yNmMuMTEuMDMgMy41NiAzLjU1IDMuNTYgMy41NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJzc0ZlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNi4xOFwiLFwiY3lcIjpcIjE3LjgyXCIsXCJyXCI6XCIyLjE4XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNC40NHYyLjgzYzcuMDMgMCAxMi43MyA1LjcgMTIuNzMgMTIuNzNoMi44M2MwLTguNTktNi45Ny0xNS41Ni0xNS41Ni0xNS41NnptMCA1LjY2djIuODNjMy45IDAgNy4wNyAzLjE3IDcuMDcgNy4wN2gyLjgzYzAtNS40Ny00LjQzLTkuOS05LjktOS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUnR0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOS4wMyAzLTEuMTEgNy4wN2gyLjYybC43LTQuNWgyLjU4TDExLjggMTguNDNIOS40N0w5LjA2IDIxaDcuMjdsLjQtMi41N2gtMi4zNWwyLTEyLjg2aDIuNThsLS43MSA0LjVoMi42NUwyMiAzSDkuMDN6TTggNUg0bC0uMzEgMmg0TDggNXptLS42MSA0aC00bC0uMzEgMmg0bC4zMS0yem0uOTIgOGgtNkwyIDE5aDZsLjMxLTJ6bS42Mi00aC02bC0uMzEgMmg2LjAxbC4zLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY3JlZW5TaGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMThjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjIgNmEyIDIgMCAwIDAtMi0ySDRjLTEuMTEgMC0yIC44OS0yIDJ2MTBhMiAyIDAgMCAwIDIgMkgwdjJoMjR2LTJoLTR6TTQgMTZWNmgxNnYxMC4wMUw0IDE2em05LTYuODdjLTMuODkuNTQtNS40NCAzLjItNiA1Ljg3IDEuMzktMS44NyAzLjIyLTIuNzIgNi0yLjcydjIuMTlsNC0zLjc0TDEzIDd2Mi4xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbmRUaW1lRXh0ZW5zaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNnY2LjI2bDIgMVY2YzAtMS4xLS45LTItMi0yaC00YTIuNSAyLjUgMCAwIDAtNSAwSDUuMDFjLTEuMSAwLTIgLjktMiAydjMuOEM1LjcgOS44IDYgMTEuOTYgNiAxMi41cy0uMjkgMi43LTMgMi43VjE5YzAgMS4xLjkgMiAyIDJoMy44YzAtMi4xNiAxLjM3LTIuNzggMi4yLTIuOTR2LTIuMDNjLTEuNDMuMTctMy4xNSAxLjA0LTMuODcgMi45N0g1di0yLjEzYzIuMTctLjggMy0yLjg3IDMtNC4zNyAwLTEuNDktLjgzLTMuNTYtMi45OS00LjM3VjZIMTFWNGMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXYyaDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEydjRsNCAxLTQgMXY0bDEwLTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW50aW1lbnRTYXRpc2ZpZWRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTZjLTEuNDggMC0yLjc1LS44MS0zLjQ1LTJINi44OGE1LjQ5NSA1LjQ5NSAwIDAgMCAxMC4yNCAwaC0xLjY3Yy0uNjkgMS4xOS0xLjk3IDItMy40NSAyem0tLjAxLTE0QzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRoMTZjMS4xIDAgMiAuOSAyIDJ2MTJjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yem0wIDJ2MTJoMTZWNkg0em03IDNoMnY2aC0yVjl6bTMgMGg0Yy41NSAwIDEgLjQ1IDEgMXYyYzAgLjU1LS40NSAxLTEgMWgtMi41djJIMTRWOXptMy41IDEuNWgtMnYxaDJ2LTF6bS0xMSAuNzVIOWMuNTUgMCAxIC40NSAxIDFWMTRjMCAuNTUtLjQ1IDEtMSAxSDV2LTEuNWgzLjV2LS43NUg2Yy0uNTUgMC0xLS40NS0xLTFWMTBjMC0uNTUuNDUtMSAxLTFoNHYxLjVINi41di43NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwZWFrZXJQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3LjA3IDguNDMgOC41Yy45MS0uOTEgMi4xOC0xLjQ4IDMuNTctMS40OHMyLjY2LjU3IDMuNTcgMS40OEwxNyA3LjA3QzE1LjcyIDUuNzkgMTMuOTUgNSAxMiA1cy0zLjcyLjc5LTUgMi4wN3pNMTIgMUM4Ljk4IDEgNi4yNCAyLjIzIDQuMjUgNC4yMWwxLjQxIDEuNDFDNy4yOCA0IDkuNTMgMyAxMiAzczQuNzIgMSA2LjM0IDIuNjJsMS40MS0xLjQxQTEwLjk2MyAxMC45NjMgMCAwIDAgMTIgMXptMi44NiA5LjAxTDkuMTQgMTBDOC41MSAxMCA4IDEwLjUxIDggMTEuMTR2OS43MWMwIC42My41MSAxLjE0IDEuMTQgMS4xNGg1LjcxYy42MyAwIDEuMTQtLjUxIDEuMTQtMS4xNHYtOS43MWMuMDEtLjYzLS41LTEuMTMtMS4xMy0xLjEzek0xNSAyMEg5di04aDZ2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb2tlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgN2MwLTIuMjEtMS43OS00LTQtNFM4IDQuNzkgOCA3czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptLTQgMmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bS01IDRjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem0xMC02Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCA2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YXlDdXJyZW50TGFuZHNjYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjAxIDcgMSAxN2MwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJIM2MtMS4xIDAtMS45OS45LTEuOTkgMnpNMTkgN3YxMEg1VjdoMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGF5Q3VycmVudFBvcnRyYWl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMS45OS45LTEuOTkgMnYxOGMwIDEuMS44OSAyIDEuOTkgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOUg3VjVoMTB2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGF5UHJpbWFyeUxhbmRzY2FwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMS4wMSA3IDEgMTdjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0ySDNjLTEuMSAwLTEuOTkuOS0xLjk5IDJ6TTE5IDd2MTBINVY3aDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RheVByaW1hcnlQb3J0cmFpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2MThjMCAxLjEuODkgMiAxLjk5IDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMTlIN1Y1aDEwdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RvcFNjcmVlblNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNzkgMTggMiAySDI0di0yaC0yLjIxek0xLjExIDIuOThsMS41NSAxLjU2Yy0uNDEuMzctLjY2Ljg5LS42NiAxLjQ4VjE2YzAgMS4xLjkgMiAyLjAxIDJIMHYyaDE4LjEzbDIuNzEgMi43MSAxLjQxLTEuNDFMMi41MiAxLjU3IDEuMTEgMi45OHpNNCA2LjAyaC4xM2w0Ljk1IDQuOTNDNy45NCAxMi4wNyA3LjMxIDEzLjUyIDcgMTVjLjk2LTEuMjkgMi4xMy0yLjA4IDMuNjctMi40NmwzLjQ2IDMuNDhINHYtMTB6bTE2IDB2MTAuMTlsMS4zIDEuM2MuNDItLjM3LjctLjg5LjctMS40OXYtMTBhMiAyIDAgMCAwLTItMkg3LjhsMiAySDIwem0tNy4wNyAzLjEzIDIuNzkgMi43OCAxLjI4LTEuMkwxMyA3djIuMTNsLS4wNy4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3YXBDYWxscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggNC00IDRoM3Y3YzAgMS4xLS45IDItMiAycy0yLS45LTItMlY4YzAtMi4yMS0xLjc5LTQtNC00UzUgNS43OSA1IDh2N0gybDQgNCA0LTRIN1Y4YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2N2MwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00VjhoM2wtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGV4dHNtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg2bC0yIDJWNGgxNnYxMnpNNyA5aDJ2Mkg3em00IDBoMnYyaC0yem00IDBoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVW5zdWJzY3JpYmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjk5IDE0LjA0VjVjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMC4wNWMuMjggMS45MiAyLjEgMy4zNSA0LjE4IDIuOTMgMS4zNC0uMjcgMi40My0xLjM3IDIuNy0yLjcxLjI1LTEuMjQtLjE2LTIuMzktLjk0LTMuMTh6bS0yLTkuMDRMMTIgOC41IDUgNWgxMy45OXptLTMuNjQgMTBINVY3bDcgMy41TDE5IDd2Ni4wNWMtLjE2LS4wMi0uMzMtLjA1LS41LS4wNS0xLjM5IDAtMi41OS44Mi0zLjE1IDJ6bTUuMTUgMmgtNHYtMWg0djF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWb2ljZW1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgNkMxNS40NiA2IDEzIDguNDYgMTMgMTEuNWMwIDEuMzMuNDcgMi41NSAxLjI2IDMuNUg5Ljc0Yy43OS0uOTUgMS4yNi0yLjE3IDEuMjYtMy41QzExIDguNDYgOC41NCA2IDUuNSA2UzAgOC40NiAwIDExLjUgMi40NiAxNyA1LjUgMTdoMTNjMy4wNCAwIDUuNS0yLjQ2IDUuNS01LjVTMjEuNTQgNiAxOC41IDZ6bS0xMyA5QzMuNTcgMTUgMiAxMy40MyAyIDExLjVTMy41NyA4IDUuNSA4IDkgOS41NyA5IDExLjUgNy40MyAxNSA1LjUgMTV6bTEzIDBjLTEuOTMgMC0zLjUtMS41Ny0zLjUtMy41UzE2LjU3IDggMTguNSA4IDIyIDkuNTcgMjIgMTEuNSAyMC40MyAxNSAxOC41IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVnBuS2V5T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi44MSAyLjgxIDEuMzkgNC4yMmwyLjU5IDIuNTlBNi4wMTIgNi4wMTIgMCAwIDAgMSAxMmMwIDMuMzEgMi42OSA2IDYgNiAyLjIyIDAgNC4xNS0xLjIxIDUuMTktM2w3LjU5IDcuNjEgMS40MS0xLjQxTDIuODEgMi44MXpNNyAxNmMtMi4yMSAwLTQtMS43OS00LTQgMC0xLjY3IDEuMDItMy4xIDIuNDctMy43bDEuNzEgMS43MUM3LjEyIDEwIDcuMDYgMTAgNyAxMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTJjMC0uMDYgMC0uMTItLjAxLS4xOGwxLjc0IDEuNzRDMTAuMjIgMTQuNDggOS4xNCAxNiA3IDE2em0xMC0xLjgzVjEzaC0xLjE3TDE3IDE0LjE3ek0xMy44MyAxMUgyMXYyaC0ydjNsMiAydi0zaDJWOUgxMS44M2wyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWcG5LZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE5aC02di00aC0yLjY4Yy0xLjE0IDIuNDItMy42IDQtNi4zMiA0LTMuODYgMC03LTMuMTQtNy03czMuMTQtNyA3LTdjMi43MiAwIDUuMTcgMS41OCA2LjMyIDRIMjR2NmgtMnY0em0tNC0yaDJ2LTRoMnYtMkgxMS45NGwtLjIzLS42N0MxMS4wMSA4LjM0IDkuMTEgNyA3IDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDVjMi4xMSAwIDQuMDEtMS4zNCA0LjcxLTMuMzNsLjIzLS42N0gxOHY0ek03IDE1Yy0xLjY1IDAtMy0xLjM1LTMtM3MxLjM1LTMgMy0zIDMgMS4zNSAzIDMtMS4zNSAzLTMgM3ptMC00Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpQ2FsbGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjUxYy0xLjI0IDAtMi40NS0uMi0zLjU3LS41N2EuODQuODQgMCAwIDAtLjMxLS4wNWMtLjI2IDAtLjUxLjEtLjcxLjI5bC0yLjIgMi4yYTE1LjE0OSAxNS4xNDkgMCAwIDEtNi41OS02LjU5bDIuMi0yLjJjLjI4LS4yOC4zNi0uNjcuMjUtMS4wMkExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy40OWMwLS41NS0uNDUtMS0xLTF6TTUuMDMgNWgxLjVhMTMgMTMgMCAwIDAgLjQ2IDIuNTlsLTEuMiAxLjJjLS40MS0xLjItLjY3LTIuNDctLjc2LTMuNzl6TTE5IDE4Ljk3Yy0xLjMyLS4wOS0yLjU5LS4zNS0zLjgtLjc1bDEuMTktMS4xOWMuODUuMjQgMS43Mi4zOSAyLjYuNDV2MS40OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNC45NUMyMS43OSA0Ljc4IDE5LjY3IDMgMTYuNSAzYy0zLjE4IDAtNS4yOSAxLjc4LTUuNSAxLjk1TDE2LjUgMTIgMjIgNC45NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZEJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHptLTgtMmgydi00aDR2LTJoLTRWN2gtMnY0SDd2Mmg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkQ2lyY2xlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgN2gtMnY0SDd2Mmg0djRoMnYtNGg0di0yaC00Vjd6bS0xLTVDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem01IDExaC00djRoLTJ2LTRIN3YtMmg0VjdoMnY0aDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZExpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDExaDh2Mkg4di0yem0xMi4xIDFIMjJjMC0yLjc2LTIuMjQtNS01LTVoLTR2MS45aDRjMS43MSAwIDMuMSAxLjM5IDMuMSAzLjF6TTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTE5IDEyaC0ydjNoLTN2MmgzdjNoMnYtM2gzdi0yaC0zdi0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxM2gtNnY2aC0ydi02SDV2LTJoNlY1aDJ2Nmg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbXBTdG9yaWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOWgxMFY0SDd2MTV6TTkgNmg2djExSDlWNnpNMyA2aDJ2MTFIM3pNMTkgNmgydjExaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJjaGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuNTQgNS4yMy0xLjM5LTEuNjhDMTguODggMy4yMSAxOC40NyAzIDE4IDNINmMtLjQ3IDAtLjg4LjIxLTEuMTYuNTVMMy40NiA1LjIzQzMuMTcgNS41NyAzIDYuMDIgMyA2LjVWMTljMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2LjVjMC0uNDgtLjE3LS45My0uNDYtMS4yN3pNNi4yNCA1aDExLjUybC44MS45N0g1LjQ0bC44LS45N3pNNSAxOVY4aDE0djExSDV6bTguNDUtOWgtMi45djNIOGw0IDQgNC00aC0yLjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXR0cmlidXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDguNWMtLjkxIDAtMi43NS40Ni0yLjc1IDEuMzh2NC42MmgxLjVWMTloMi41di00LjVoMS41VjkuODhjMC0uOTEtMS44NC0xLjM4LTIuNzUtMS4zOHpNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmFja3NwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAzSDdjLS42OSAwLTEuMjMuMzUtMS41OS44OEwwIDEybDUuNDEgOC4xMWMuMzYuNTMuOS44OSAxLjU5Ljg5aDE1YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINy4wN0wyLjQgMTJsNC42Ni03SDIydjE0em0tMTEuNTktMkwxNCAxMy40MSAxNy41OSAxNyAxOSAxNS41OSAxNS40MSAxMiAxOSA4LjQxIDE3LjU5IDcgMTQgMTAuNTkgMTAuNDEgNyA5IDguNDEgMTIuNTkgMTIgOSAxNS41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhbGxvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNy41aDV2MmgtNXptMCA3aDV2MmgtNXpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0ek0xMSA2SDZ2NWg1VjZ6bS0xIDRIN1Y3aDN2M3ptMSAzSDZ2NWg1di01em0tMSA0SDd2LTNoM3YzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmlvdGVjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTljLTEuMSAwLTIgLjktMiAyaDE0YzAtMS4xLS45LTItMi0yaC00di0yaDNjMS4xIDAgMi0uOSAyLTJoLThjLTEuNjYgMC0zLTEuMzQtMy0zYTMgMyAwIDAgMSAxLjQ3LTIuNTdjLjQxLjU5IDEuMDYgMSAxLjgzIDEuMDYuNy4wNiAxLjM2LS4xOSAxLjg1LS42MmwuNTkgMS42MS45NC0uMzQuMzQuOTQgMS44OC0uNjgtLjM0LS45NC45NC0uMzQtMi43NC03LjUyLS45NC4zNC0uMzQtLjk0LTEuODguNjguMzQuOTQtLjk0LjM1LjU2IDEuNTVjLTEuMTctLjA0LTIuMTkuNzUtMi40OCAxLjg2QTUuMDEgNS4wMSAwIDAgMCA1IDEyYzAgMi43NiAyLjI0IDUgNSA1djJIN3ptNS44Ni0xNC40OCAxLjcxIDQuNy0uOTQuMzQtMS43MS00LjcuOTQtLjM0ek0xMC41IDdjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek00IDEyYzAtNC40MiAzLjU4LTggOC04IDEuODUgMCAzLjU1LjYzIDQuOSAxLjY5TDUuNjkgMTYuOUE3LjkwMiA3LjkwMiAwIDAgMSA0IDEyem04IDhjLTEuODUgMC0zLjU1LS42My00LjktMS42OUwxOC4zMSA3LjFBNy45MDIgNy45MDIgMCAwIDEgMjAgMTJjMCA0LjQyLTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb2x0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMjFoLTFsMS03SDcuNWMtLjg4IDAtLjMzLS43NS0uMzEtLjc4QzguNDggMTAuOTQgMTAuNDIgNy41NCAxMy4wMSAzaDFsLTEgN2gzLjUxYy40IDAgLjYyLjE5LjQuNjZDMTIuOTcgMTcuNTUgMTEgMjEgMTEgMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWxjdWxhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMjUgNy43Mmg1djEuNWgtNXpNMTMgMTUuNzVoNXYxLjVoLTV6TTEzIDEzLjI1aDV2MS41aC01ek04IDE4aDEuNXYtMmgydi0xLjVoLTJ2LTJIOHYySDZWMTZoMnpNMTQuMDkgMTAuOTVsMS40MS0xLjQxIDEuNDEgMS40MSAxLjA2LTEuMDYtMS40MS0xLjQyIDEuNDEtMS40MUwxNi45MSA2IDE1LjUgNy40MSAxNC4wOSA2bC0xLjA2IDEuMDYgMS40MSAxLjQxLTEuNDEgMS40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoYW5nZUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em00LjE3LTUuMjQtMS4xLTEuMWMuNzEtMS4zMy41My0zLjAxLS41OS00LjEzQTMuNDgyIDMuNDgyIDAgMCAwIDEyIDguNWMtLjAzIDAtLjA2LjAxLS4wOS4wMUwxMyA5LjZsLTEuMDYgMS4wNi0yLjgzLTIuODNMMTEuOTQgNSAxMyA2LjA2bC0uOTYuOTZjMS4yNy4wMSAyLjUzLjQ4IDMuNSAxLjQ0IDEuNyAxLjcxIDEuOTEgNC4zNi42MyA2LjN6bS0xLjI4IDEuNDFMMTIuMDYgMTkgMTEgMTcuOTRsLjk1LS45NWE0Ljk3IDQuOTcgMCAwIDEtMy40OC0xLjQ2IDUuMDA2IDUuMDA2IDAgMCAxLS42NC02LjI5bDEuMSAxLjFjLS43MSAxLjMzLS41MyAzLjAxLjU5IDQuMTMuNy43IDEuNjMgMS4wNCAyLjU2IDEuMDFMMTEgMTQuNGwxLjA2LTEuMDYgMi44MyAyLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xlYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDYuNDEgMTcuNTkgNSAxMiAxMC41OSA2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMiAxMy40MSAxNy41OSAxOSAxOSAxNy41OSAxMy40MSAxMiAxOSA2LjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGVudENvcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDFINGMtMS4xIDAtMiAuOS0yIDJ2MTRoMlYzaDEyVjF6bTMgNEg4Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDExYzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTZIOFY3aDExdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGVudEN1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS42NCA3LjY0Yy4yMy0uNS4zNi0xLjA1LjM2LTEuNjQgMC0yLjIxLTEuNzktNC00LTRTMiAzLjc5IDIgNnMxLjc5IDQgNCA0Yy41OSAwIDEuMTQtLjEzIDEuNjQtLjM2TDEwIDEybC0yLjM2IDIuMzZDNy4xNCAxNC4xMyA2LjU5IDE0IDYgMTRjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNGMwLS41OS0uMTMtMS4xNC0uMzYtMS42NEwxMiAxNGw3IDdoM3YtMUw5LjY0IDcuNjR6TTYgOGMtMS4xIDAtMi0uODktMi0ycy45LTIgMi0yIDIgLjg5IDIgMi0uOSAyLTIgMnptMCAxMmMtMS4xIDAtMi0uODktMi0ycy45LTIgMi0yIDIgLjg5IDIgMi0uOSAyLTIgMnptNi03LjVjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNS41LjIyLjUuNS0uMjIuNS0uNS41ek0xOSAzbC02IDYgMiAyIDctN1YzaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGVudFBhc3RlR28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDVoMnYzaDEwVjVoMnY2aDJWNWMwLTEuMS0uOS0yLTItMmgtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFzLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg1di0ySDVWNXptNy0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4LjAxIDEzLTEuNDIgMS40MSAxLjU4IDEuNThIMTJ2Mmg2LjE3bC0xLjU4IDEuNTkgMS40MiAxLjQxIDMuOTktNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRlbnRQYXN0ZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjIgMyA1LjgzVjE5YzAgMS4xLjkgMiAyIDJoMTMuMTdsMS42MSAxLjYxIDEuNDEtMS40MnpNNSAxOVY3LjgzTDE2LjE3IDE5SDV6TTE3IDhWNWgydjExLjE3bDIgMlY1YzAtMS4xLS45LTItMi0yaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg1LjgzbDUgNUgxN3ptLTUtNWMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGVudFBhc3RlU2VhcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA1aDJ2M2gxMFY1aDJ2NWgyVjVjMC0xLjEtLjktMi0yLTJoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxcy0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNXYtMkg1VjV6bTctMmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC4zIDE4LjljLjQtLjcuNy0xLjUuNy0yLjQgMC0yLjUtMi00LjUtNC41LTQuNVMxMiAxNCAxMiAxNi41czIgNC41IDQuNSA0LjVjLjkgMCAxLjctLjMgMi40LS43bDIuNyAyLjcgMS40LTEuNC0yLjctMi43em0tMy44LjFjLTEuNCAwLTIuNS0xLjEtMi41LTIuNXMxLjEtMi41IDIuNS0yLjUgMi41IDEuMSAyLjUgMi41LTEuMSAyLjUtMi41IDIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRlbnRQYXN0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMmgtNC4xOEMxNC40Ljg0IDEzLjMgMCAxMiAwUzkuNi44NCA5LjE4IDJINWMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTcgMThINVY0aDJ2M2gxMFY0aDJ2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb3B5QWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMkg5Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDljMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg5VjRoOXYxMnpNMyAxNXYtMmgydjJIM3ptMC01LjVoMnYySDN2LTJ6TTEwIDIwaDJ2MmgtMnYtMnptLTctMS41di0yaDJ2Mkgzek01IDIyYy0xLjEgMC0yLS45LTItMmgydjJ6bTMuNSAwaC0ydi0yaDJ2MnptNSAwdi0yaDJjMCAxLjEtLjkgMi0yIDJ6TTUgNnYySDNjMC0xLjEuOS0yIDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyZWF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzIDE3LjI1ek01LjkyIDE5SDV2LS45Mmw5LjA2LTkuMDYuOTIuOTJMNS45MiAxOXpNMjAuNzEgNS42M2wtMi4zNC0yLjM0Yy0uMi0uMi0uNDUtLjI5LS43MS0uMjlzLS41MS4xLS43LjI5bC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZWxldGVTd2VlcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTZoNHYyaC00em0wLThoN3YyaC03em0wIDRoNnYyaC02ek0zIDE4YzAgMS4xLjkgMiAyIDJoNmMxLjEgMCAyLS45IDItMlY4SDN2MTB6bTItOGg2djhINXYtOHptNS02SDZMNSA1SDJ2MmgxMlY1aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVzZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzaDJ2LTJIM3Yyem00IDhoMnYtMkg3djJ6bTYtMThoLTJ2MmgyVjN6bTYgMHYyaDJjMC0xLjEtLjktMi0yLTJ6TTUgMjF2LTJIM2MwIDEuMS45IDIgMiAyem0tMi00aDJ2LTJIM3Yyem04IDRoMnYtMmgtMnYyem04LThoMnYtMmgtMnYyem0wLTRoMlY3aC0ydjJ6bS00LTRoMlYzaC0ydjJ6TTcuODMgNSA3IDQuMTdWM2gydjJINy44M3ptMTIgMTItLjgzLS44M1YxNWgydjJoLTEuMTd6bTEuMzYgNC4xOUwyLjgxIDIuODEgMS4zOSA0LjIyIDQuMTcgN0gzdjJoMlY3LjgzbDIgMlYxN2g3LjE3bDIgMkgxNXYyaDJ2LTEuMTdsMi43OCAyLjc4IDEuNDEtMS40MnpNOSAxNXYtMy4xN0wxMi4xNyAxNUg5em02LTIuODNWOWgtMy4xN2wtMi0ySDE3djcuMTdsLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURyYWZ0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTkgOGMwLS43Mi0uMzctMS4zNS0uOTQtMS43TDEyIDEgMi45NSA2LjNDMi4zOCA2LjY1IDIgNy4yOCAyIDh2MTBjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMmwtLjAxLTEwem0tMiAwdi4wMUwxMiAxMyA0IDhsOC00LjY4TDE5Ljk5IDh6TTQgMTh2LTcuNjZsOCA1LjAyIDcuOTktNC45OUwyMCAxOEg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHluYW1pY0ZlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDhINnY3YzAgMS4xLjkgMiAyIDJoOXYtMkg4Vjh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNoLThjLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgOGgtOFY3aDh2NHpNNCAxMkgydjdjMCAxLjEuOSAyIDIgMmg5di0ySDR2LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWxlQ29weSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMUg0Yy0xLjEgMC0yIC45LTIgMnYxNGgyVjNoMTJWMXptLTEgNEg4Yy0xLjEgMC0xLjk5LjktMS45OSAyTDYgMjFjMCAxLjEuODkgMiAxLjk5IDJIMTljMS4xIDAgMi0uOSAyLTJWMTFsLTYtNnpNOCAyMVY3aDZ2NWg1djlIOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlckxpc3RPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC44MyA4SDIxVjZIOC44M2wyIDJ6bTUgNUgxOHYtMmgtNC4xN2wyIDJ6TTE0IDE2LjgzVjE4aC00di0yaDMuMTdsLTMtM0g2di0yaDIuMTdsLTMtM0gzVjZoLjE3TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQxIDEuNDFMMTQgMTYuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXJMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxOGg0di0yaC00djJ6TTMgNnYyaDE4VjZIM3ptMyA3aDEydi0ySDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsYWdDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUgOS0xLTJIOHYxMWgxLjV2LTVIMTJsMSAyaDVWOWgtM3ptMS41IDQuNWgtMi41N2wtMS0ySDkuNXYtM2gzLjU3bDEgMmgyLjQzdjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMi4zNiA2IC40IDJIMTh2NmgtMy4zNmwtLjQtMkg3VjZoNS4zNk0xNCA0SDV2MTdoMnYtN2g1LjZsLjQgMmg3VjZoLTUuNkwxNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9udERvd25sb2FkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC44MyAySDIwYzEuMSAwIDIgLjkgMiAydjE1LjE3bC0yLTJWNEg2LjgzbC0yLTJ6bTYuMDkgNC0uNTcgMS41MiAxLjM2IDEuMzYuMjMtLjY2aC4xbC41NCAxLjUyIDMuMDQgMy4wNEwxMy4wNyA2aC0yLjE1em05LjU3IDE3LjMxTDE5LjE3IDIySDRjLTEuMSAwLTItLjktMi0yVjQuODNMLjY5IDMuNTEgMi4xIDIuMWwxOS44IDE5LjgtMS40MSAxLjQxek0xNy4xNyAyMGwtNS4wNy01LjA3SDkuNThMOC40OSAxOEg2LjQxbDIuMzktNi4zN0w0IDYuODNWMjBoMTMuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb250RG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMTcgMTUuNWg1LjY0bDEuMTQgM2gyLjA5bC01LjExLTEzaC0xLjg2bC01LjExIDEzaDIuMDlsMS4xMi0zek0xMiA3Ljk4bDIuMDcgNS41Mkg5LjkzTDEyIDcuOTh6TTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE4SDRWNGgxNnYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDguODMgMTcuMTcgMTIgMTQgMTUuMTdWMTRINnYtNGg4VjguODNNMTIgNHY0SDR2OGg4djRsOC04LTgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdlc3R1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNTkgNi44OWMuNy0uNzEgMS40LTEuMzUgMS43MS0xLjIyLjUuMiAwIDEuMDMtLjMgMS41Mi0uMjUuNDItMi44NiAzLjg5LTIuODYgNi4zMSAwIDEuMjguNDggMi4zNCAxLjM0IDIuOTguNzUuNTYgMS43NC43MyAyLjY0LjQ2IDEuMDctLjMxIDEuOTUtMS40IDMuMDYtMi43NyAxLjIxLTEuNDkgMi44My0zLjQ0IDQuMDgtMy40NCAxLjYzIDAgMS42NSAxLjAxIDEuNzYgMS43OS0zLjc4LjY0LTUuMzggMy42Ny01LjM4IDUuMzcgMCAxLjcgMS40NCAzLjA5IDMuMjEgMy4wOSAxLjYzIDAgNC4yOS0xLjMzIDQuNjktNi4xSDIxdi0yLjVoLTIuNDdjLS4xNS0xLjY1LTEuMDktNC4yLTQuMDMtNC4yLTIuMjUgMC00LjE4IDEuOTEtNC45NCAyLjg0LS41OC43My0yLjA2IDIuNDgtMi4yOSAyLjcyLS4yNS4zLS42OC44NC0xLjExLjg0LS40NSAwLS43Mi0uODMtLjM2LTEuOTIuMzUtMS4wOSAxLjQtMi44NiAxLjg1LTMuNTIuNzgtMS4xNCAxLjMtMS45MiAxLjMtMy4yOEM4Ljk1IDMuNjkgNy4zMSAzIDYuNDQgMyA1LjEyIDMgMy45NyA0IDMuNzIgNC4yNWMtLjM2LjM2LS42Ni42Ni0uODguOTNsMS43NSAxLjcxem05LjI5IDExLjY2Yy0uMzEgMC0uNzQtLjI2LS43NC0uNzIgMC0uNi43My0yLjIgMi44Ny0yLjc2LS4zIDIuNjktMS40MyAzLjQ4LTIuMTMgMy40OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvd1RvUmVnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6TTUgMThjLjItLjYzIDIuNTctMS42OCA0Ljk2LTEuOTRsMi4wNC0yYTkuMzQgOS4zNCAwIDAgMC0xLS4wNmMtMi42NyAwLTggMS4zNC04IDR2Mmg5bC0yLTJINXptMTUuNi01LjUtNS4xMyA1LjE3LTIuMDctMi4wOEwxMiAxN2wzLjQ3IDMuNUwyMiAxMy45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvd1RvVm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNoLS42OGwtMiAyaDEuOTFMMTkgMTdINWwxLjc4LTJoMi4wNWwtMi0ySDZsLTMgM3Y0YzAgMS4xLjg5IDIgMS45OSAySDE5YTIgMiAwIDAgMCAyLTJ2LTRsLTMtM3ptMSA3SDV2LTFoMTR2MXptLTcuNjYtNC45OGMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNi4zNi02LjM2YS45OTYuOTk2IDAgMCAwIDAtMS40MUwxNC4xNiAyLjNhLjk3NS45NzUgMCAwIDAtMS40LS4wMUw2LjM5IDguNjZhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDQuOTUgNC45NXptMi4xMi0xMC42MUwxNyA3Ljk1bC00Ljk1IDQuOTUtMy41NC0zLjU0IDQuOTUtNC45NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1di0zaDMuNTZjLjY5IDEuMTkgMS45NyAyIDMuNDUgMnMyLjc1LS44MSAzLjQ1LTJIMTl2M3ptMC01aC00Ljk5YzAgMS4xLS45IDItMiAycy0yLS45LTItMkg1VjVoMTR2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluc2lnaHRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOGMtMS40NSAwLTIuMjYgMS40NC0xLjkzIDIuNTFsLTMuNTUgMy41NmMtLjMtLjA5LS43NC0uMDktMS4wNCAwbC0yLjU1LTIuNTVDMTIuMjcgMTAuNDUgMTEuNDYgOSAxMCA5Yy0xLjQ1IDAtMi4yNyAxLjQ0LTEuOTMgMi41MmwtNC41NiA0LjU1QzIuNDQgMTUuNzQgMSAxNi41NSAxIDE4YzAgMS4xLjkgMiAyIDIgMS40NSAwIDIuMjYtMS40NCAxLjkzLTIuNTFsNC41NS00LjU2Yy4zLjA5Ljc0LjA5IDEuMDQgMGwyLjU1IDIuNTVDMTIuNzMgMTYuNTUgMTMuNTQgMTggMTUgMThjMS40NSAwIDIuMjctMS40NCAxLjkzLTIuNTJsMy41Ni0zLjU1YzEuMDcuMzMgMi41MS0uNDggMi41MS0xLjkzIDAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNSA5IC45NC0yLjA3TDE4IDZsLTIuMDYtLjkzTDE1IDNsLS45MiAyLjA3TDEyIDZsMi4wOC45M3pNMy41IDExIDQgOWwyLS41TDQgOGwtLjUtMkwzIDhsLTIgLjVMMyA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW52ZW50b3J5MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMSAwLTIgLjktMiAydjMuMDFjMCAuNzIuNDMgMS4zNCAxIDEuNjlWMjBjMCAxLjEgMS4xIDIgMiAyaDE0Yy45IDAgMi0uOSAyLTJWOC43Yy41Ny0uMzUgMS0uOTcgMS0xLjY5VjRjMC0xLjEtMS0yLTItMnptLTEgMThINVY5aDE0djExem0xLTEzSDRWNGgxNnYzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDEyaDZ2Mkg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW52ZW50b3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA1aDJ2M2gxMFY1aDJ2NWgyVjVjMC0xLjEtLjktMi0yLTJoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxcy0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNnYtMkg1VjV6bTctMmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMS41IDE1LjUxIDE3bC0zLjAxLTMtMS41IDEuNSA0LjUxIDQuNSA2Ljk5LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaW5rT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4zOSAxMSAxNiAxMi42MVYxMXpNMTcgN2gtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMSAwIDEuMjctLjc3IDIuMzctMS44NyAyLjg0bDEuNCAxLjRBNC45ODYgNC45ODYgMCAwIDAgMjIgMTJjMC0yLjc2LTIuMjQtNS01LTV6TTIgNC4yN2wzLjExIDMuMTFBNC45OTEgNC45OTEgMCAwIDAgMiAxMmMwIDIuNzYgMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjEgMC0xLjU5IDEuMjEtMi45IDIuNzYtMy4wN0w4LjczIDExSDh2MmgyLjczTDEzIDE1LjI3VjE3aDEuNzNsNC4wMSA0LjAxIDEuNDEtMS40MUwzLjQxIDIuODYgMiA0LjI3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGluayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgN2gtNHYyaDRjMS42NSAwIDMgMS4zNSAzIDNzLTEuMzUgMy0zIDNoLTR2Mmg0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01em0tNiA4SDdjLTEuNjUgMC0zLTEuMzUtMy0zczEuMzUtMyAzLTNoNFY3SDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDVoNHYtMnptLTMtNGg4djJIOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvd1ByaW9yaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA1aDh2MmgtOFY1em0wIDUuNWg4djJoLTh2LTJ6bTAgNS41aDh2MmgtOHYtMnpNMiAxMS41QzIgMTUuMDggNC45MiAxOCA4LjUgMThIOXYybDMtMy0zLTN2MmgtLjVDNi4wMiAxNiA0IDEzLjk4IDQgMTEuNVM2LjAyIDcgOC41IDdIMTJWNUg4LjVDNC45MiA1IDIgNy45MiAyIDExLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNnptLTIgMC04IDQuOTlMNCA2aDE2em0wIDEySDRWOGw4IDUgOC01djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFya3VucmVhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZ6bS0yIDAtOCA1LTgtNWgxNnptMCAxMkg0VjhsOCA1IDgtNXYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdmVUb0luYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA5aC0yLjU1VjZoLTIuOXYzSDhsNCA0em0zLTZINC45OUMzLjg4IDMgMyAzLjkgMyA1djE0YzAgMS4xLjg4IDIgMS45OSAySDE5YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINXYtM2gzLjU2Yy42OSAxLjE5IDEuOTcgMiAzLjQ1IDJzMi43NS0uODEgMy40NS0ySDE5djN6bTAtNWgtNC45OWMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJINWwtLjAxLTlIMTl2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5leHRXZWVrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMSAxOC41IDQtNC00LTQtMSAxIDMgMy0zIDN6TTIwIDdoLTRWNWMwLS41NS0uMjItMS4wNS0uNTktMS40MUMxNS4wNSAzLjIyIDE0LjU1IDMgMTQgM2gtNGMtMS4xIDAtMiAuOS0yIDJ2Mkg0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6TTEwIDVoNHYyaC00VjV6bTEwIDE1SDRWOWgxNnYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU91dGxpbmVkRmxhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQgNi0xLTJINXYxN2gydi03aDVsMSAyaDdWNmgtNnptNCA4aC00bC0xLTJIN1Y2aDVsMSAyaDV2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvbGljeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEgMyA1djZjMCA1LjU1IDMuODQgMTAuNzQgOSAxMiA1LjE2LTEuMjYgOS02LjQ1IDktMTJWNWwtOS00em03IDEwYzAgMS44NS0uNTEgMy42NS0xLjM4IDUuMjFsLTEuNDUtMS40NWE0Ljk5NCA0Ljk5NCAwIDAgMC0uNjQtNi4yOSA1LjAwMyA1LjAwMyAwIDAgMC03LjA3IDAgNS4wMDMgNS4wMDMgMCAwIDAgMCA3LjA3IDUuMDA2IDUuMDA2IDAgMCAwIDYuMjkuNjRsMS43MiAxLjcyYy0xLjE5IDEuNDItMi43MyAyLjUxLTQuNDcgMy4wNC00LjAyLTEuMjUtNy01LjQyLTctOS45NFY2LjNsNy0zLjExIDcgMy4xMVYxMXptLTcgNGMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQdXNoUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNHY1YzAgMS4xMi4zNyAyLjE2IDEgM0g5Yy42NS0uODYgMS0xLjkgMS0zVjRoNG0zLTJIN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgxdjVjMCAxLjY2LTEuMzQgMy0zIDN2Mmg1Ljk3djdsMSAxIDEtMXYtN0gxOXYtMmMtMS42NiAwLTMtMS4zNC0zLTNWNGgxYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVkbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNCAxMC42QzE2LjU1IDguOTkgMTQuMTUgOCAxMS41IDhjLTQuNjUgMC04LjU4IDMuMDMtOS45NiA3LjIyTDMuOSAxNmE4LjAwMiA4LjAwMiAwIDAgMSA3LjYtNS41YzEuOTUgMCAzLjczLjcyIDUuMTIgMS44OEwxMyAxNmg5VjdsLTMuNiAzLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZW1vdmVDaXJjbGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDExdjJoMTB2LTJIN3ptNS05QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlbW92ZUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNSAxMUg3di0yaDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEzSDV2LTJoMTR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlcGx5QWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDhWNWwtNyA3IDcgN3YtM2wtNC00IDQtNHptNiAxVjVsLTcgNyA3IDd2LTQuMWM1IDAgOC41IDEuNiAxMSA1LjEtMS01LTQtMTAtMTEtMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgOVY1bC03IDcgNyA3di00LjFjNSAwIDguNSAxLjYgMTEgNS4xLTEtNS00LTEwLTExLTExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwb3J0R21haWxlcnJvcnJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNzMgM0g4LjI3TDMgOC4yN3Y3LjQ2TDguMjcgMjFoNy40NkwyMSAxNS43M1Y4LjI3TDE1LjczIDN6TTE5IDE0LjkgMTQuOSAxOUg5LjFMNSAxNC45VjkuMUw5LjEgNWg1LjhMMTkgOS4xdjUuOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDdoMnY3aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwb3J0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjEgNWg1LjhMMTkgOS4xdjUuOGwtLjIyLjIyIDEuNDIgMS40MS44LS44VjguMjdMMTUuNzMgM0g4LjI3bC0uOC44IDEuNDEgMS40MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDkuMzNWN2gtMnYuMzN6TTIuNDEgMS41OCAxIDIuOTlsMy42NCAzLjY0TDMgOC4yN3Y3LjQ2TDguMjcgMjFoNy40NmwxLjY0LTEuNjRMMjEuMDEgMjNsMS40MS0xLjQxTDIuNDEgMS41OHpNMTQuOSAxOUg5LjFMNSAxNC45VjkuMWwxLjA1LTEuMDUgOS45IDkuOUwxNC45IDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS43MyAzSDguMjdMMyA4LjI3djcuNDZMOC4yNyAyMWg3LjQ2TDIxIDE1LjczVjguMjdMMTUuNzMgM3pNMTkgMTQuOSAxNC45IDE5SDkuMUw1IDE0LjlWOS4xTDkuMSA1aDUuOEwxOSA5LjF2NS44elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgN2gydjdoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTYXZlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMnY3SDV2LTdIM3Y3YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTdoLTJ6bS02IC42NyAyLjU5LTIuNThMMTcgMTEuNWwtNSA1LTUtNSAxLjQxLTEuNDFMMTEgMTIuNjdWM2gydjkuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTYXZlQXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMi40VjdsLTQtNEg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmg3LjRsMi0ySDVWNWgxMS4xN0wxOSA3LjgzdjYuNTdsMi0yek0xNSAxNWMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtMyAxLjM0LTMgMy0zIDMgMS4zNCAzIDN6TTYgNmg5djRINlY2em0xMy45OSAxMC4yNSAxLjc3IDEuNzdMMTYuNzcgMjNIMTV2LTEuNzdsNC45OS00Ljk4em0zLjI2LjI2LS44NS44NS0xLjc3LTEuNzcuODUtLjg1Yy4yLS4yLjUxLS4yLjcxIDBsMS4wNiAxLjA2Yy4yLjIuMi41MiAwIC43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWN2wtNC00em0yIDE2SDVWNWgxMS4xN0wxOSA3LjgzVjE5em0tNy03Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3pNNiA2aDl2NEg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VsZWN0QWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVoMlYzYy0xLjEgMC0yIC45LTIgMnptMCA4aDJ2LTJIM3Yyem00IDhoMnYtMkg3djJ6TTMgOWgyVjdIM3Yyem0xMC02aC0ydjJoMlYzem02IDB2MmgyYzAtMS4xLS45LTItMi0yek01IDIxdi0ySDNjMCAxLjEuOSAyIDIgMnptLTItNGgydi0ySDN2MnpNOSAzSDd2MmgyVjN6bTIgMThoMnYtMmgtMnYyem04LThoMnYtMmgtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnptMC0xMmgyVjdoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptLTQgNGgydi0yaC0ydjJ6bTAtMTZoMlYzaC0ydjJ6TTcgMTdoMTBWN0g3djEwem0yLThoNnY2SDlWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTQuMDEgNi4wMyA3LjUxIDMuMjItNy41Mi0xIC4wMS0yLjIybTcuNSA4LjcyTDQgMTcuOTd2LTIuMjJsNy41MS0xTTIuMDEgMyAyIDEwbDE1IDItMTUgMiAuMDEgN0wyMyAxMiAyLjAxIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaGllbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zem02IDkuMDljMCA0LTIuNTUgNy43LTYgOC44My0zLjQ1LTEuMTMtNi00LjgyLTYtOC44M3YtNC43bDYtMi4yNSA2IDIuMjV2NC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU29ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxOGg2di0ySDN2MnpNMyA2djJoMThWNkgzem0wIDdoMTJ2LTJIM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3F1YXJlRm9vdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjY2IDE3LjY2LTEuMDYgMS4wNi0uNzEtLjcxIDEuMDYtMS4wNi0xLjk0LTEuOTQtMS4wNiAxLjA2LS43MS0uNzEgMS4wNi0xLjA2LTEuOTQtMS45NC0xLjA2IDEuMDYtLjcxLS43MSAxLjA2LTEuMDZMOS43IDkuN2wtMS4wNiAxLjA2LS43MS0uNzEgMS4wNi0xLjA2LTEuOTQtMS45NC0xLjA2IDEuMDYtLjcxLS43MSAxLjA2LTEuMDZMNCA0djE0YzAgMS4xLjkgMiAyIDJoMTRsLTIuMzQtMi4zNHpNNyAxN3YtNS43NkwxMi43NiAxN0g3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RhY2tlZEJhckNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA5aDR2MTFINHpNNCA0aDR2NEg0ek0xMCA3aDR2NGgtNHpNMTYgMTBoNHY0aC00ek0xNiAxNWg0djVoLTR6TTEwIDEyaDR2OGgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0cmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMjBcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjRcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMjBcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuOTQzIDguNjE5IDQuNDA0LTQuMzkyIDEuNDEzIDEuNDE2LTQuNDA1IDQuMzkyek04LjMyIDkuNjhsLjMxLjMyIDEuNDItMS40MS00LjAyLTQuMDRoLS4wMWwtLjMxLS4zMi0xLjQyIDEuNDEgNC4wMiA0LjA1ek0xNS40MSAxMy45NCAxNCAxNS4zNWwzLjk5IDQuMDEuMzUuMzUgMS40Mi0xLjQxLTMuOTktNC4wMXpNOC41OSAxMy45NWwtNC4wMyA0LjAxLS4zMi4zMyAxLjQxIDEuNDEgNC4wMy00LjAyLjMzLS4zMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEwVjhoLTRWNGgtMnY0aC00VjRIOHY0SDR2Mmg0djRINHYyaDR2NGgydi00aDR2NGgydi00aDR2LTJoLTR2LTRoNHptLTYgNGgtNHYtNGg0djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUZXh0Rm9ybWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE3djJoMTR2LTJINXptNC41LTQuMmg1bC45IDIuMmgyLjFMMTIuNzUgNGgtMS41TDYuNSAxNWgyLjFsLjktMi4yek0xMiA1Ljk4IDEzLjg3IDExaC0zLjc0TDEyIDUuOTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVbmFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjU0IDUuMjMtMS4zOS0xLjY4QzE4Ljg4IDMuMjEgMTguNDcgMyAxOCAzSDZjLS40NyAwLS44OC4yMS0xLjE2LjU1TDMuNDYgNS4yM0MzLjE3IDUuNTcgMyA2LjAyIDMgNi41VjE5YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNi41YzAtLjQ4LS4xNy0uOTMtLjQ2LTEuMjd6TTYuMjQgNWgxMS41MmwuODMgMUg1LjQybC44Mi0xek01IDE5VjhoMTR2MTFINXptMy01aDIuNTV2M2gyLjl2LTNIMTZsLTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVVuZG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgOGMtMi42NSAwLTUuMDUuOTktNi45IDIuNkwyIDd2OWg5bC0zLjYyLTMuNjJjMS4zOS0xLjE2IDMuMTYtMS44OCA1LjEyLTEuODggMy41NCAwIDYuNTUgMi4zMSA3LjYgNS41bDIuMzctLjc4QzIxLjA4IDExLjAzIDE3LjE1IDggMTIuNSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVXBjb21pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy42IDEwLjgxIDE2LjE5IDkuNGwzLjU2LTMuNTUgMS40MSAxLjQxYy0uMTEuMDMtMy41NiAzLjU1LTMuNTYgMy41NXpNMTMgM2gtMnY1aDJWM3ptLTYuNiA3LjgxTDcuODEgOS40IDQuMjYgNS44NCAyLjg0IDcuMjZjLjExLjAzIDMuNTYgMy41NSAzLjU2IDMuNTV6TTIwIDE0aC0zLjQyYy0uNzcgMS43Ni0yLjU0IDMtNC41OCAzcy0zLjgxLTEuMjQtNC41OC0zSDR2NWgxNnYtNW0wLTJjMS4xIDAgMiAuOSAyIDJ2NWMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMnYtNWMwLTEuMS45LTIgMi0yaDVjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F2ZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDE2Ljk5Yy0xLjM1IDAtMi4yLjQyLTIuOTUuOC0uNjUuMzMtMS4xOC42LTIuMDUuNi0uOSAwLTEuNC0uMjUtMi4wNS0uNi0uNzUtLjM4LTEuNTctLjgtMi45NS0uOHMtMi4yLjQyLTIuOTUuOGMtLjY1LjMzLTEuMTcuNi0yLjA1LjZ2MS45NWMxLjM1IDAgMi4yLS40MiAyLjk1LS44LjY1LS4zMyAxLjE3LS42IDIuMDUtLjZzMS40LjI1IDIuMDUuNmMuNzUuMzggMS41Ny44IDIuOTUuOHMyLjItLjQyIDIuOTUtLjhjLjY1LS4zMyAxLjE4LS42IDIuMDUtLjYuOSAwIDEuNC4yNSAyLjA1LjYuNzUuMzggMS41OC44IDIuOTUuOHYtMS45NWMtLjkgMC0xLjQtLjI1LTIuMDUtLjYtLjc1LS4zOC0xLjYtLjgtMi45NS0uOHptMC00LjQ1Yy0xLjM1IDAtMi4yLjQzLTIuOTUuOC0uNjUuMzItMS4xOC42LTIuMDUuNi0uOSAwLTEuNC0uMjUtMi4wNS0uNi0uNzUtLjM4LTEuNTctLjgtMi45NS0uOHMtMi4yLjQzLTIuOTUuOGMtLjY1LjMyLTEuMTcuNi0yLjA1LjZ2MS45NWMxLjM1IDAgMi4yLS40MyAyLjk1LS44LjY1LS4zNSAxLjE1LS42IDIuMDUtLjZzMS40LjI1IDIuMDUuNmMuNzUuMzggMS41Ny44IDIuOTUuOHMyLjItLjQzIDIuOTUtLjhjLjY1LS4zNSAxLjE1LS42IDIuMDUtLjZzMS40LjI1IDIuMDUuNmMuNzUuMzggMS41OC44IDIuOTUuOHYtMS45NWMtLjkgMC0xLjQtLjI1LTIuMDUtLjYtLjc1LS4zOC0xLjYtLjgtMi45NS0uOHptMi45NS04LjA4Yy0uNzUtLjM4LTEuNTgtLjgtMi45NS0uOHMtMi4yLjQyLTIuOTUuOGMtLjY1LjMyLTEuMTguNi0yLjA1LjYtLjkgMC0xLjQtLjI1LTIuMDUtLjYtLjc1LS4zNy0xLjU3LS44LTIuOTUtLjhzLTIuMi40Mi0yLjk1LjhjLS42NS4zMy0xLjE3LjYtMi4wNS42djEuOTNjMS4zNSAwIDIuMi0uNDMgMi45NS0uOC42NS0uMzMgMS4xNy0uNiAyLjA1LS42czEuNC4yNSAyLjA1LjZjLjc1LjM4IDEuNTcuOCAyLjk1LjhzMi4yLS40MyAyLjk1LS44Yy42NS0uMzIgMS4xOC0uNiAyLjA1LS42LjkgMCAxLjQuMjUgMi4wNS42Ljc1LjM4IDEuNTguOCAyLjk1LjhWNS4wNGMtLjkgMC0xLjQtLjI1LTIuMDUtLjU4ek0xNyA4LjA5Yy0xLjM1IDAtMi4yLjQzLTIuOTUuOC0uNjUuMzUtMS4xNS42LTIuMDUuNnMtMS40LS4yNS0yLjA1LS42Yy0uNzUtLjM4LTEuNTctLjgtMi45NS0uOHMtMi4yLjQzLTIuOTUuOGMtLjY1LjM1LTEuMTUuNi0yLjA1LjZ2MS45NWMxLjM1IDAgMi4yLS40MyAyLjk1LS44LjY1LS4zMiAxLjE4LS42IDIuMDUtLjZzMS40LjI1IDIuMDUuNmMuNzUuMzggMS41Ny44IDIuOTUuOHMyLjItLjQzIDIuOTUtLjhjLjY1LS4zMiAxLjE4LS42IDIuMDUtLjYuOSAwIDEuNC4yNSAyLjA1LjYuNzUuMzggMS41OC44IDIuOTUuOFY5LjQ5Yy0uOSAwLTEuNC0uMjUtMi4wNS0uNi0uNzUtLjM4LTEuNi0uOC0yLjk1LS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2ViU3RvcmllcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDR2MTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNMTMgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDljMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxOEg0VjRoOXYxNnpNMjEgNnYxMmMuODMgMCAxLjUtLjY3IDEuNS0xLjV2LTljMC0uODMtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2Vla2VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOVY3YzAtMS42NS0xLjM1LTMtMy0zSDZDNC4zNSA0IDMgNS4zNSAzIDd2MmMtMS42NSAwLTMgMS4zNS0zIDN2NWMwIDEuNjUgMS4zNSAzIDMgM2gxOGMxLjY1IDAgMy0xLjM1IDMtM3YtNWMwLTEuNjUtMS4zNS0zLTMtM3pNNSA3YzAtLjU1LjQ1LTEgMS0xaDEyYy41NSAwIDEgLjQ1IDEgMXYyLjc4Yy0uNjEuNTUtMSAxLjM0LTEgMi4yMnYySDZ2LTJjMC0uODgtLjM5LTEuNjctMS0yLjIyVjd6bTE3IDEwYzAgLjU1LS40NSAxLTEgMUgzYy0uNTUgMC0xLS40NS0xLTF2LTVjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjRoMTZ2LTRjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaGVyZVRvVm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMUM3LjU5IDEgNCA0LjU5IDQgOWMwIDUuNTcgNi45NiAxMy4zNCA3LjI2IDEzLjY3bC43NC44Mi43NC0uODJDMTMuMDQgMjIuMzQgMjAgMTQuNTcgMjAgOWMwLTQuNDEtMy41OS04LTgtOHptMCAxOS40N0M5LjgyIDE3Ljg2IDYgMTIuNTQgNiA5YzAtMy4zMSAyLjY5LTYgNi02czYgMi42OSA2IDZjMCAzLjgzLTQuMjUgOS4zNi02IDExLjQ3em0tMS41My05LjNMOC43MSA5LjRsLTEuNDIgMS40MkwxMC40NyAxNGw2LjAxLTYuMDEtMS40MS0xLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMXhNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDdoNHYxMEg2VjlINFY3em0xMS44MyA0LjcyTDE4LjY2IDdoLTIuMzNsLTEuNjYgMi43N0wxMyA3aC0yLjMzbDIuODMgNC43MkwxMC4zMyAxN2gyLjMzbDItMy4zNCAyIDMuMzRIMTlsLTMuMTctNS4yOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTMwRnBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDV2M2g2djIuNUgzdjNoNVYxNkgydjNoNmMxLjY2IDAgMy0xLjM0IDMtM3YtMS45QTIuMSAyLjEgMCAwIDAgOC45IDEyIDIuMSAyLjEgMCAwIDAgMTEgOS45VjhjMC0xLjY2LTEuMzQtMy0zLTNIMnptMTcgM3Y4aC00VjhoNG0wLTNoLTRjLTEuNjYgMC0zIDEuMzQtMyAzdjhjMCAxLjY2IDEuMzQgMyAzIDNoNGMxLjY2IDAgMy0xLjM0IDMtM1Y4YzAtMS42Ni0xLjM0LTMtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lM2dNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDd2Mmg1djJINHYyaDR2MkgzdjJoNWMxLjEgMCAyLS45IDItMnYtMS41YzAtLjgzLS42Ny0xLjUtMS41LTEuNS44MyAwIDEuNS0uNjcgMS41LTEuNVY5YzAtMS4xLS45LTItMi0ySDN6bTE4IDR2NGMwIDEuMS0uOSAyLTIgMmgtNWMtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDVjMS4xIDAgMiAuOSAyIDJoLTd2Nmg1di0yaC0yLjV2LTJIMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU0Z01vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgN0g3djVINVY3SDN2N2g0djNoMnYtM2gydi0ySDlWN3ptOCA0djJoMnYyaC01VjloN2MwLTEuMS0uOS0yLTItMmgtNWMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDVjMS4xIDAgMi0uOSAyLTJ2LTRoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU0Z1BsdXNNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMXYyaDJ2MmgtNFY5aDZjMC0xLjEtLjktMi0yLTJoLTRjLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmg0YzEuMSAwIDItLjkgMi0ydi00aC00em0xMSAwaC0yVjloLTJ2MmgtMnYyaDJ2Mmgydi0yaDJ2LTJ6TTcgN0g1djVIM1Y3SDF2N2g0djNoMnYtM2gxdi0ySDdWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTYwRnBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA4djhoLTRWOGg0bTAtM2gtNGMtMS42NiAwLTMgMS4zNC0zIDN2OGMwIDEuNjYgMS4zNCAzIDMgM2g0YzEuNjYgMCAzLTEuMzQgMy0zVjhjMC0xLjY2LTEuMzQtMy0zLTN6bS05IDNWNUg1QzMuMzQgNSAyIDYuMzQgMiA4djhjMCAxLjY2IDEuMzQgMyAzIDNoM2MxLjY2IDAgMy0xLjM0IDMtM3YtM2MwLTEuNjYtMS4zNC0zLTMtM0g1VjhoNXptLTIgNXYzSDV2LTNoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFjY2Vzc0FsYXJtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiA1LjcyLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek03Ljg4IDMuMzkgNi42IDEuODYgMiA1LjcxbDEuMjkgMS41MyA0LjU5LTMuODV6TTEyLjUgOEgxMXY2bDQuNzUgMi44NS43NS0xLjIzLTQtMi4zN1Y4ek0xMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5YTkgOSAwIDAgMCAwLTE4em0wIDE2Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFjY2Vzc0FsYXJtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgNS43LTQuNi0zLjktMS4zIDEuNSA0LjYgMy45TDIyIDUuN3pNNy45IDMuNCA2LjYgMS45IDIgNS43bDEuMyAxLjUgNC42LTMuOHpNMTIuNSA4SDExdjZsNC43IDIuOS44LTEuMi00LTIuNFY4ek0xMiA0Yy01IDAtOSA0LTkgOXM0IDkgOSA5IDktNCA5LTktNC05LTktOXptMCAxNmMtMy45IDAtNy0zLjEtNy03czMuMS03IDctNyA3IDMuMSA3IDctMy4xIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjZXNzVGltZUZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnptMy4zIDE0LjcxTDExIDEyLjQxVjdoMnY0LjU5bDMuNzEgMy43MS0xLjQyIDEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBY2Nlc3NUaW1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bS41LTEzSDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZFVuaXRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6TTcgNFYzaDEwdjFIN3ptMCAxNFY2aDEwdjEySDd6bTAgM3YtMWgxMHYxSDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDdIOHYyaDhWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZEFsYXJtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljg4IDMuMzkgNi42IDEuODYgMiA1LjcxbDEuMjkgMS41MyA0LjU5LTMuODV6TTIyIDUuNzJsLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek0xMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5YTkgOSAwIDAgMCAwLTE4em0wIDE2Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3ptMS0xMWgtMnYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zVjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRUb0hvbWVTY3JlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEuMDEgOCAxYy0xLjEgMC0yIC45LTIgMnYzaDJWNWgxMHYxNEg4di0xSDZ2M2MwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTEwIDE1aDJWOEg1djJoMy41OUwzIDE1LjU5IDQuNDEgMTcgMTAgMTEuNDFWMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBaXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTdjMCAxLjY1LTEuMzUgMy0zIDNzLTMtMS4zNS0zLTNoMmMwIC41NS40NSAxIDEgMXMxLS40NSAxLTEtLjQ1LTEtMS0xSDJ2LTJoOS41YzEuNjUgMCAzIDEuMzUgMyAzek0xOSA2LjVDMTkgNC41NyAxNy40MyAzIDE1LjUgM1MxMiA0LjU3IDEyIDYuNWgyYzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41UzE2LjMzIDggMTUuNSA4SDJ2MmgxMy41YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41em0tLjUgNC41SDJ2MmgxNi41Yy44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjV2MmMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMyMC40MyAxMSAxOC41IDExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlycGxhbmVUaWNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjE5IDRINGMtMS4xIDAtMS45OS45LTEuOTkgMnY0YzEuMSAwIDEuOTkuOSAxLjk5IDJzLS44OSAyLTIgMnY0YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uODEtMi0xLjgxLTJ6TTIwIDE4SDR2LTIuNTRjMS4xOS0uNjkgMi0xLjk5IDItMy40NiAwLTEuNDgtLjgtMi43Ny0xLjk5LTMuNDZMNCA2aDE2djEyek04Ljg3IDE1LjY2bC0xLjY2LTIuODguOTMtLjI1IDEuMjYuOTkgMi4zOS0uNjQtMi40LTQuMTYgMS40LS4zOCA0LjAxIDMuNzQgMi40NC0uNjVhLjk2Ny45NjcgMCAwIDEgMS4xOC42OC45ODguOTg4IDAgMCAxLS42OSAxLjE5bC04Ljg2IDIuMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBaXJwbGFuZW1vZGVBY3RpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE2di0ybC04LjUtNVYzLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNVY5TDIgMTR2Mmw4LjUtMi41VjE5TDggMjAuNVYyMmw0LTEgNCAxdi0xLjVMMTMuNSAxOXYtNS41TDIyIDE2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlycGxhbmVtb2RlSW5hY3RpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjUgNy42N1YzLjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVWOWw4LjUgNXYybC00LjQ5LTEuMzItNy4wMS03LjAxem05LjI4IDE0Ljk0IDEuNDEtMS40MS03LjY5LTcuNy0zLjk0LTMuOTQtNi43NS02Ljc1LTEuNDIgMS40MSA2LjM4IDYuMzhMMiAxNHYybDguNS0yLjVWMTlMOCAyMC41VjIybDQtMSA0IDF2LTEuNUwxMy41IDE5di0yLjY3bDYuMjggNi4yOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFvZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyem0wLTE0SDdWM2gxMHYxem0tOSA2aDh2MS41SDhWMTB6bTEgM2g2djEuNUg5VjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeTBCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2MTRoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeTFCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2MTJoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeTJCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2MTBoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeTNCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2OGg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYXR0ZXJ5NEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDV2MTZjMCAuNTUtLjQ1IDEtMSAxSDhjLS41NSAwLTEtLjQ1LTEtMVY1YzAtLjU1LjQ1LTEgMS0xaDJWMmg0djJoMmMuNTUgMCAxIC40NSAxIDF6bS0yIDFIOXY2aDZWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdHRlcnk1QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNXYxNmMwIC41NS0uNDUgMS0xIDFIOGMtLjU1IDAtMS0uNDUtMS0xVjVjMC0uNTUuNDUtMSAxLTFoMlYyaDR2MmgyYy41NSAwIDEgLjQ1IDEgMXptLTIgMUg5djRoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeTZCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2Mmg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYXR0ZXJ5QWxlcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzdjE1LjMzQzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjUuMzNDMTcgNC42IDE2LjQgNCAxNS42NyA0ek0xMyAxOGgtMnYtMmgydjJ6bTAtNGgtMlY5aDJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdHRlcnlDaGFyZ2luZ0Z1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzdjE1LjMzQzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjUuMzNDMTcgNC42IDE2LjQgNCAxNS42NyA0ek0xMSAyMHYtNS41SDlMMTMgN3Y1LjVoMkwxMSAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdHRlcnlGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM3YxNS4zM0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdHRlcnlTYXZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNGgtMlYyaC00djJIOGMtLjU1IDAtMSAuNDUtMSAxdjE2YzAgLjU1LjQ1IDEgMSAxaDhjLjU1IDAgMS0uNDUgMS0xVjVjMC0uNTUtLjQ1LTEtMS0xem0tMSAxMGgtMnYyaC0ydi0ySDl2LTJoMnYtMmgydjJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeVN0ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzN2MTUuMzNDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYXR0ZXJ5VW5rbm93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzN2MTUuMzNDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6TTEzIDE4aC0ydi0yaDJ2MnptMS4zLTUuMzFzLS4zOC40Mi0uNjcuNzFjLS40OC40OC0uODMgMS4xNS0uODMgMS42aC0xLjZjMC0uODMuNDYtMS41Mi45My0ybC45My0uOTRBMS40OTggMS40OTggMCAwIDAgMTIgOS41Yy0uODMgMC0xLjUuNjctMS41IDEuNUg5YzAtMS42NiAxLjM0LTMgMy0zczMgMS4zNCAzIDNjMCAuNjYtLjI3IDEuMjYtLjcgMS42OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsb29kdHlwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNmg2djJIOXpNMTMgOWgtMnYySDl2MmgydjJoMnYtMmgydi0yaC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy01LjMzIDQuNTUtOCA4LjQ4LTggMTEuOCAwIDQuOTggMy44IDguMiA4IDguMnM4LTMuMjIgOC04LjJjMC0zLjMyLTIuNjctNy4yNS04LTExLjh6bTAgMThjLTMuMzUgMC02LTIuNTctNi02LjIgMC0yLjM0IDEuOTUtNS40NCA2LTkuMTQgNC4wNSAzLjcgNiA2Ljc5IDYgOS4xNCAwIDMuNjMtMi42NSA2LjItNiA2LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCbHVldG9vdGhDb25uZWN0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTcgMTItMi0yLTIgMiAyIDIgMi0yem0xMC43MS00LjI5TDEyIDJoLTF2Ny41OUw2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMSAxNC40MVYyMmgxbDUuNzEtNS43MS00LjMtNC4yOSA0LjMtNC4yOXpNMTMgNS44M2wxLjg4IDEuODhMMTMgOS41OVY1Ljgzem0xLjg4IDEwLjQ2TDEzIDE4LjE3di0zLjc2bDEuODggMS44OHpNMTkgMTBsLTIgMiAyIDIgMi0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsdWV0b290aERpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMyA1LjgzIDEuODggMS44OC0xLjYgMS42IDEuNDEgMS40MSAzLjAyLTMuMDJMMTIgMmgtMXY1LjAzbDIgMnYtMy4yek01LjQxIDQgNCA1LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMSAxNC40MVYyMmgxbDQuMjktNC4yOSAyLjMgMi4yOUwyMCAxOC41OSA1LjQxIDR6TTEzIDE4LjE3di0zLjc2bDEuODggMS44OEwxMyAxOC4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsdWV0b290aERyaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjYuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTdINHYtNWgxMXYtMkg0LjgxbDEuMDQtM0gxNVY1SDUuNWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMiAxMnY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThoLTJ2NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMy44NSAxOS4xNSAxaC0uNXYzLjc5bC0yLjMtMi4yOS0uNy43TDE4LjQ0IDZsLTIuNzkgMi43OS43LjcxIDIuMy0yLjNWMTFoLjVMMjIgOC4xNCAxOS44NSA2IDIyIDMuODV6bS0yLjM1LS45NC45NC45NC0uOTQuOTRWMi45MXptLjk0IDUuMjMtLjk0Ljk0VjcuMmwuOTQuOTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCbHVldG9vdGhTZWFyY2hpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjI0IDEyLjAxIDIuMzIgMi4zMmMuMjgtLjcyLjQ0LTEuNTEuNDQtMi4zM3MtLjE2LTEuNTktLjQzLTIuMzFsLTIuMzMgMi4zMnptNS4yOS01LjMtMS4yNiAxLjI2Yy42MyAxLjIxLjk4IDIuNTcuOTggNC4wMnMtLjM2IDIuODItLjk4IDQuMDJsMS4yIDEuMmE5LjkzNiA5LjkzNiAwIDAgMCAxLjU0LTUuMzFjLS4wMS0xLjg5LS41NS0zLjY3LTEuNDgtNS4xOXptLTMuODIgMUwxMCAySDl2Ny41OUw0LjQxIDUgMyA2LjQxIDguNTkgMTIgMyAxNy41OSA0LjQxIDE5IDkgMTQuNDFWMjJoMWw1LjcxLTUuNzEtNC4zLTQuMjkgNC4zLTQuMjl6TTExIDUuODNsMS44OCAxLjg4TDExIDkuNTlWNS44M3ptMS44OCAxMC40NkwxMSAxOC4xN3YtMy43NmwxLjg4IDEuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCbHVldG9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjcxIDcuNzEgMTIgMmgtMXY3LjU5TDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDExIDE0LjQxVjIyaDFsNS43MS01LjcxLTQuMy00LjI5IDQuMy00LjI5ek0xMyA1LjgzbDEuODggMS44OEwxMyA5LjU5VjUuODN6bTEuODggMTAuNDZMMTMgMTguMTd2LTMuNzZsMS44OCAxLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJpZ2h0bmVzc0F1dG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExIDctMy4yIDloMS45bC43LTJoMy4ybC43IDJoMS45TDEzIDdoLTJ6bS0uMTUgNS42NUwxMiA5bDEuMTUgMy42NWgtMi4zek0yMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OUwyMy4zMSAxMiAyMCA4LjY5em0tMiA1Ljc5VjE4aC0zLjUyTDEyIDIwLjQ4IDkuNTIgMThINnYtMy41MkwzLjUyIDEyIDYgOS41MlY2aDMuNTJMMTIgMy41MiAxNC40OCA2SDE4djMuNTJMMjAuNDggMTIgMTggMTQuNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCcmlnaHRuZXNzSGlnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOC42OVY0aC00LjY5TDEyIC42OSA4LjY5IDRINHY0LjY5TC42OSAxMiA0IDE1LjMxVjIwaDQuNjlMMTIgMjMuMzEgMTUuMzEgMjBIMjB2LTQuNjlMMjMuMzEgMTIgMjAgOC42OXptLTIgNS43OVYxOGgtMy41MkwxMiAyMC40OCA5LjUyIDE4SDZ2LTMuNTJMMy41MiAxMiA2IDkuNTJWNmgzLjUyTDEyIDMuNTIgMTQuNDggNkgxOHYzLjUyTDIwLjQ4IDEyIDE4IDE0LjQ4ek0xMiA2Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnptMCAxMGMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0LTEuNzkgNC00IDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCcmlnaHRuZXNzTG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OUwyMy4zMSAxMiAyMCA4LjY5em0tMiA1Ljc5VjE4aC0zLjUyTDEyIDIwLjQ4IDkuNTIgMThINnYtMy41MkwzLjUyIDEyIDYgOS41MlY2aDMuNTJMMTIgMy41MiAxNC40OCA2SDE4djMuNTJMMjAuNDggMTIgMTggMTQuNDh6TTEyIDZjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02em0wIDEwYy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDQtMS43OSA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyaWdodG5lc3NNZWRpdW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6bS0yIDUuNzlWMThoLTMuNTJMMTIgMjAuNDggOS41MiAxOEg2di0zLjUyTDMuNTIgMTIgNiA5LjUyVjZoMy41MkwxMiAzLjUyIDE0LjQ4IDZIMTh2My41MkwyMC40OCAxMiAxOCAxNC40OHpNMTIgNnYxMmMzLjMxIDAgNi0yLjY5IDYtNnMtMi42OS02LTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1VjRjMC0uNTUtLjQ1LTEtMS0xaC0yYy0uNTUgMC0xIC40NS0xIDF2MWgtMXY0YzAgLjU1LjQ1IDEgMSAxaDF2N2MwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJWN2MwLTIuMjEtMS43OS00LTQtNFM1IDQuNzkgNSA3djdINGMtLjU1IDAtMSAuNDUtMSAxdjRoMXYxYzAgLjU1LjQ1IDEgMSAxaDJjLjU1IDAgMS0uNDUgMS0xdi0xaDF2LTRjMC0uNTUtLjQ1LTEtMS0xSDdWN2MwLTEuMS45LTIgMi0yczIgLjkgMiAydjEwYzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTR2LTdoMWMuNTUgMCAxLS40NSAxLTFWNWgtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbWVyYXN3aXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgN2gtMWwtMS0xaC00TDkgN0g4Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0yem0wIDhIOFY5aDEuODNsMS0xaDIuMzRsMSAxSDE2djZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjU3LjUyIDEzLjA1IDVsMS40MS0xLjQxLTEuNTQtMS41NEMxNy43IDIuNDYgMjEuNTMgNi4yNCAyMiAxMWgyQzIzLjM2IDMuMyAxNS43OS0xLjY3IDguNTcuNTJ6TTkuNTQgMjAuNDFsMS41NCAxLjU0QzYuMyAyMS41NCAyLjQ3IDE3Ljc2IDIgMTNIMGMuNjQgNy43IDguMjEgMTIuNjcgMTUuNDMgMTAuNDhMMTAuOTUgMTlsLTEuNDEgMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyZWRpdFNjb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmg1di0ySDR2LTZoMThWNmMwLTEuMTEtLjg5LTItMi0yem0wIDRINFY2aDE2djJ6bS01LjA3IDExLjE3LTIuODMtMi44My0xLjQxIDEuNDFMMTQuOTMgMjIgMjIgMTQuOTNsLTEuNDEtMS40MS01LjY2IDUuNjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXJrTW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMzcgNS41MUE3LjM1IDcuMzUgMCAwIDAgOS4xIDcuNWMwIDQuMDggMy4zMiA3LjQgNy40IDcuNC42OCAwIDEuMzUtLjA5IDEuOTktLjI3QTcuMDE0IDcuMDE0IDAgMCAxIDEyIDE5Yy0zLjg2IDAtNy0zLjE0LTctNyAwLTIuOTMgMS44MS01LjQ1IDQuMzctNi40OXpNMTIgM2E5IDkgMCAxIDAgOSA5YzAtLjQ2LS4wNC0uOTItLjEtMS4zNmE1LjM4OSA1LjM4OSAwIDAgMS00LjQgMi4yNiA1LjQwMyA1LjQwMyAwIDAgMS0zLjE0LTkuOGMtLjQ0LS4wNi0uOS0uMS0xLjM2LS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGF0YVNhdmVyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAyLjA1djMuMDNjMy4zOS40OSA2IDMuMzkgNiA2LjkyIDAgLjktLjE4IDEuNzUtLjQ4IDIuNTRsMi42IDEuNTNjLjU2LTEuMjQuODgtMi42Mi44OC00LjA3IDAtNS4xOC0zLjk1LTkuNDUtOS05Ljk1ek0xMiAxOWMtMy44NyAwLTctMy4xMy03LTcgMC0zLjUzIDIuNjEtNi40MyA2LTYuOTJWMi4wNWMtNS4wNi41LTkgNC43Ni05IDkuOTUgMCA1LjUyIDQuNDcgMTAgOS45OSAxMCAzLjMxIDAgNi4yNC0xLjYxIDguMDYtNC4wOWwtMi42LTEuNTNBNi45NSA2Ljk1IDAgMCAxIDEyIDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGF0YVNhdmVyT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDh2M0g4djJoM3YzaDJ2LTNoM3YtMmgtM1Y4aC0yem0yLTUuOTV2My4wM2MzLjM5LjQ5IDYgMy4zOSA2IDYuOTIgMCAuOS0uMTggMS43NS0uNDggMi41NGwyLjYgMS41M2MuNTYtMS4yNC44OC0yLjYyLjg4LTQuMDcgMC01LjE4LTMuOTUtOS40NS05LTkuOTV6TTEyIDE5Yy0zLjg3IDAtNy0zLjEzLTctNyAwLTMuNTMgMi42MS02LjQzIDYtNi45MlYyLjA1Yy01LjA2LjUtOSA0Ljc2LTkgOS45NSAwIDUuNTIgNC40NyAxMCA5Ljk5IDEwIDMuMzEgMCA2LjI0LTEuNjEgOC4wNi00LjA5bC0yLjYtMS41M0E2Ljk1IDYuOTUgMCAwIDEgMTIgMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXRhVXNhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDIuMDV2My4wM2MzLjM5LjQ5IDYgMy4zOSA2IDYuOTIgMCAuOS0uMTggMS43NS0uNDggMi41NGwyLjYgMS41M2MuNTYtMS4yNC44OC0yLjYyLjg4LTQuMDcgMC01LjE4LTMuOTUtOS40NS05LTkuOTV6TTEyIDE5Yy0zLjg3IDAtNy0zLjEzLTctNyAwLTMuNTMgMi42MS02LjQzIDYtNi45MlYyLjA1Yy01LjA2LjUtOSA0Ljc2LTkgOS45NSAwIDUuNTIgNC40NyAxMCA5Ljk5IDEwIDMuMzEgMCA2LjI0LTEuNjEgOC4wNi00LjA5bC0yLjYtMS41M0E2Ljk1IDYuOTUgMCAwIDEgMTIgMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXRhc2V0TGlua2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxN2gxLjA5Yy4yOC0xLjY3IDEuMjQtMy4xIDIuNi00SDd2NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxOVY1aDE0djdoMWMuMzQgMCAuNjcuMDQgMSAuMDlWNWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDMuODFjLS4zNS0uNjEtLjYtMS4yOC0uNzItMkg1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDdoNHY0SDd6TTEzIDdoNHY0aC00ek0xNiAyMGgtMmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJoMnYtMmgtMmMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNGgydi0yek0yMCAxNGgtMnYyaDJjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyaC0ydjJoMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTl2LTJoLTZ2Mmg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGF0YXNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTNoNHY0SDd6TTEzIDEzaDR2NGgtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDdoNHY0SDd6TTEzIDdoNHY0aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGV2ZWxvcGVyTW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA1aDEwdjJoMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5TDcgMWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTguNDEgMTEuNTlMMjAgMTJsLTQuNTktNC41OUwxNCA4LjgzIDE3LjE3IDEyIDE0IDE1LjE3bDEuNDEgMS40MnpNMTAgMTUuMTcgNi44MyAxMiAxMCA4LjgzIDguNTkgNy40MSA0IDEybDQuNTkgNC41OUwxMCAxNS4xN3pNMTcgMTlIN3YtMkg1djRjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMnYtNGgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGV2aWNlVGhlcm1vc3RhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTNWNWMwLTEuNjYtMS4zNC0zLTMtM1M5IDMuMzQgOSA1djhjLTEuMjEuOTEtMiAyLjM3LTIgNCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01YzAtMS42My0uNzktMy4wOS0yLTR6bS00LTJWNWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MWgtMXYxaDF2MmgtMXYxaDF2MWgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURldmljZXNGb2xkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM2gtM2MwLTEuNDQtMS40Ny0yLjQtMi43OS0xLjg0bC0zIDEuMjlDMTAuNDggMi43NiAxMCAzLjQ5IDEwIDQuMjlWMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS01IDEzLjY4LTMgMS4yOVY0LjI5TDE1IDN2MTMuNjh6TTIwIDE5aC01LjMzbDEuMTItLjQ4Yy43My0uMzIgMS4yMS0xLjA0IDEuMjEtMS44NFY1aDN2MTR6TTIgM2gydjJIMnpNMiAxOWgydjJIMnpNMiAxNWgydjJIMnpNMiAxMWgydjJIMnpNMiA3aDJ2Mkgyek02IDNoMnYySDZ6TTYgMTloMnYySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXZpY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZoMThWNEg0Yy0xLjEgMC0yIC45LTIgMnYxMUgwdjNoMTR2LTNINFY2em0xOSAyaC02Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTF6bS0xIDloLTR2LTdoNHY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlzY291bnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi43OSAyMSAzIDExLjIxdjJjMCAuNTMuMjEgMS4wNC41OSAxLjQxbDcuNzkgNy43OWMuNzguNzggMi4wNS43OCAyLjgzIDBsNi4yMS02LjIxYy43OC0uNzguNzgtMi4wNSAwLTIuODNMMTIuNzkgMjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjM4IDE3LjQxYy4zOS4zOS45LjU5IDEuNDEuNTkuNTEgMCAxLjAyLS4yIDEuNDEtLjU5bDYuMjEtNi4yMWMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzTDEyLjYyLjU4QzEyLjI1LjIxIDExLjc0IDAgMTEuMjEgMEg1QzMuOSAwIDMgLjkgMyAydjYuMjFjMCAuNTMuMjEgMS4wNC41OSAxLjQxbDcuNzkgNy43OXpNNSAyaDYuMjFMMTkgOS43OSAxMi43OSAxNiA1IDguMjFWMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3LjI1XCIsXCJjeVwiOlwiNC4yNVwiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9Ob3REaXN0dXJiT25Ub3RhbFNpbGVuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0wLTE0Yy0zLjMgMC02IDIuNy02IDZzMi43IDYgNiA2IDYtMi43IDYtNi0yLjYtNi02LTZ6bTMgN0g5di0yaDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUR2ciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNEgzVjVoMTh2MTJ6bS0yLTlIOHYyaDExVjh6bTAgNEg4djJoMTF2LTJ6TTcgOEg1djJoMlY4em0wIDRINXYyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOVY3SDh2MTBoOHYtMmgtNnYtMmg2di0yaC02VjloNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVkZ2VzZW5zb3JIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDdoMnY3SDNWN3ptLTMgM2gydjdIMHYtN3ptMjItM2gydjdoLTJWN3ptLTMgM2gydjdoLTJ2LTd6bS0zLTcuOTlMOCAyYy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0xLjk5LTItMS45OXpNMTYgMjBIOHYtMWg4djF6bTAtM0g4VjdoOHYxMHpNOCA1VjRoOHYxSDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFZGdlc2Vuc29yTG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDdoMnY3SDJWN3ptMTggM2gydjdoLTJ2LTd6bS00LTcuOTlMOCAyYy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0xLjk5LTItMS45OXpNMTYgMjBIOHYtMWg4djF6bTAtM0g4VjdoOHYxMHpNOCA1VjRoOHYxSDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGFzaGxpZ2h0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjgxIDIuODEgMS4zOSA0LjIyIDggMTAuODNWMjJoOHYtMy4xN2wzLjc4IDMuNzggMS40MS0xLjQxTDIuODEgMi44MXpNMTQgMjBoLTR2LTcuMTdsNCA0VjIwek0xNiA0djFINy44M2wyIDJIMTZ2LjM5bC0yIDMuMDF2Ljc3bDIgMlYxMWwyLTNWMkg2djEuMTdsLjgzLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmxhc2hsaWdodE9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAySDZ2NmwyIDN2MTFoOFYxMWwyLTNWMnptLTIgMnYxSDhWNGg4em0tMiA2LjRWMjBoLTR2LTkuNjFsLTItM1Y3aDh2LjM5bC0yIDMuMDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbG91cmVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNWgxNFY5SDV2NnptMi00aDEwdjJIN3YtMnpNMTEgMmgydjNoLTJ6TTE3LjI4NiA2LjM5OWwxLjc5LTEuODAzIDEuNDIgMS40MS0xLjc5IDEuODAyek0xMSAxOWgydjNoLTJ6TTE3LjI5IDE3LjcxbDEuNzkgMS44IDEuNDItMS40Mi0xLjgtMS43OXpNMy40OTUgNi4wMWwxLjQwNy0xLjQwOEw2LjY5IDYuMzkxIDUuMjg0IDcuNzk4ek0zLjQ5MiAxOC4wNzZsMS44MDMtMS43OSAxLjQwOSAxLjQyLTEuODAzIDEuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbHVvcmVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNWgxNFY5SDV2NnptMi00aDEwdjJIN3YtMnpNMTEgMmgydjNoLTJ6TTE3LjI4NiA2LjM5OWwxLjc5LTEuODAzIDEuNDIgMS40MS0xLjc5IDEuODAyek0xMSAxOWgydjNoLTJ6TTE3LjI5IDE3LjcxbDEuNzkgMS44IDEuNDItMS40Mi0xLjgtMS43OXpNMy40OTUgNi4wMWwxLjQwNy0xLjQwOEw2LjY5IDYuMzkxIDUuMjg0IDcuNzk4ek0zLjQ5MiAxOC4wNzZsMS44MDMtMS43OSAxLjQwOSAxLjQyLTEuODAzIDEuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbWRCYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQuMiAwLTggMy4yMi04IDguMiAwIDMuMzIgMi42NyA3LjI1IDggMTEuOCA1LjMzLTQuNTUgOC04LjQ4IDgtMTEuOEMyMCA1LjIyIDE2LjIgMiAxMiAyem0wIDE3LjMzYy00LjA1LTMuNy02LTYuNzktNi05LjE0QzYgNi41NyA4LjY1IDQgMTIgNHM2IDIuNTcgNiA2LjJjMCAyLjM0LTEuOTUgNS40NC02IDkuMTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDZoMnY1aC0yek0xMSAxM2gydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbWRHb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTYtMS44QzE4IDYuNTcgMTUuMzUgNCAxMiA0cy02IDIuNTctNiA2LjJjMCAyLjM0IDEuOTUgNS40NCA2IDkuMTQgNC4wNS0zLjcgNi02LjggNi05LjE0ek0xMiAyYzQuMiAwIDggMy4yMiA4IDguMiAwIDMuMzItMi42NyA3LjI1LTggMTEuOC01LjMzLTQuNTUtOC04LjQ4LTgtMTEuOEM0IDUuMjIgNy44IDIgMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMXYyaDJ2Mkg5VjloN2MwLTEuMS0uOS0yLTItMkg5Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoNWMxLjEgMCAyLS45IDItMnYtNGgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdwcEJhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMiA0IDV2Ni4wOWMwIDUuMDUgMy40MSA5Ljc2IDggMTAuOTEgNC41OS0xLjE1IDgtNS44NiA4LTEwLjkxVjVsLTgtM3ptNiA5LjA5YzAgNC0yLjU1IDcuNy02IDguODMtMy40NS0xLjEzLTYtNC44Mi02LTguODN2LTQuN2w2LTIuMjUgNiAyLjI1djQuN3pNOS45MSA4LjUgOC41IDkuOTEgMTAuNTkgMTIgOC41IDE0LjA5bDEuNDEgMS40MUwxMiAxMy40MmwyLjA5IDIuMDggMS40MS0xLjQxTDEzLjQyIDEybDIuMDgtMi4wOS0xLjQxLTEuNDFMMTIgMTAuNTkgOS45MSA4LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcHBHb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zem02IDkuMDljMCA0LTIuNTUgNy43LTYgOC44My0zLjQ1LTEuMTMtNi00LjgyLTYtOC44M1Y2LjMxbDYtMi4xMiA2IDIuMTJ2NC43OHptLTkuMTgtLjVMNy40IDEybDMuNTQgMy41NCA1LjY2LTUuNjYtMS40MS0xLjQxLTQuMjQgNC4yNC0yLjEzLTIuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcHBNYXliZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMiA0IDV2Ni4wOWMwIDUuMDUgMy40MSA5Ljc2IDggMTAuOTEgNC41OS0xLjE1IDgtNS44NiA4LTEwLjkxVjVsLTgtM3ptNiA5LjA5YzAgNC0yLjU1IDcuNy02IDguODMtMy40NS0xLjEzLTYtNC44Mi02LTguODN2LTQuN2w2LTIuMjUgNiAyLjI1djQuN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTRoMnYyaC0yek0xMSA3aDJ2NWgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdwc0ZpeGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptOC45NCAzQTguOTk0IDguOTk0IDAgMCAwIDEzIDMuMDZWMWgtMnYyLjA2QTguOTk0IDguOTk0IDAgMCAwIDMuMDYgMTFIMXYyaDIuMDZBOC45OTQgOC45OTQgMCAwIDAgMTEgMjAuOTRWMjNoMnYtMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAyMC45NCAxM0gyM3YtMmgtMi4wNnpNMTIgMTljLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3BzTm90Rml4ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjk0IDExQTguOTk0IDguOTk0IDAgMCAwIDEzIDMuMDZWMWgtMnYyLjA2QTguOTk0IDguOTk0IDAgMCAwIDMuMDYgMTFIMXYyaDIuMDZBOC45OTQgOC45OTQgMCAwIDAgMTEgMjAuOTRWMjNoMnYtMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAyMC45NCAxM0gyM3YtMmgtMi4wNnpNMTIgMTljLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3BzT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC45NCAxMUE4Ljk5NCA4Ljk5NCAwIDAgMCAxMyAzLjA2VjFoLTJ2Mi4wNmMtLjk4LjExLTEuOTEuMzgtMi43Ny43OGwxLjUzIDEuNTNhNi45OTUgNi45OTUgMCAwIDEgOC44NyA4Ljg3bDEuNTMgMS41M2MuNC0uODYuNjctMS43OS43OC0yLjc3SDIzdi0yaC0yLjA2ek0zIDQuMjdsMi4wNCAyLjA0QTguOTk0IDguOTk0IDAgMCAwIDMuMDYgMTFIMXYyaDIuMDZBOC45OTQgOC45OTQgMCAwIDAgMTEgMjAuOTRWMjNoMnYtMi4wNmMxLjc3LS4yIDMuMzgtLjkxIDQuNjktMS45OEwxOS43MyAyMWwxLjQxLTEuNDFMNC40MSAyLjg2IDMgNC4yN3ptMTMuMjcgMTMuMjdhNi45OTUgNi45OTUgMCAwIDEtOS44MS05LjgxbDkuODEgOS44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyYXBoaWNFcSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOGgyVjZIN3YxMnptNCA0aDJWMmgtMnYyMHptLTgtOGgydi00SDN2NHptMTIgNGgyVjZoLTJ2MTJ6bTQtOHY0aDJ2LTRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcmlkM1gzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMFY4aC00VjRoLTJ2NGgtNFY0SDh2NEg0djJoNHY0SDR2Mmg0djRoMnYtNGg0djRoMnYtNGg0di0yaC00di00aDR6bS02IDRoLTR2LTRoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JpZDRYNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgN1Y1aC0zVjJoLTJ2M2gtNFYyaC0ydjNIN1YySDV2M0gydjJoM3Y0SDJ2MmgzdjRIMnYyaDN2M2gydi0zaDR2M2gydi0zaDR2M2gydi0zaDN2LTJoLTN2LTRoM3YtMmgtM1Y3aDN6TTcgN2g0djRIN1Y3em0wIDEwdi00aDR2NEg3em0xMCAwaC00di00aDR2NHptMC02aC00VjdoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JpZEdvbGRlbnJhdGlvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMVY5aC03VjJoLTJ2N2gtMlYySDl2N0gydjJoN3YySDJ2Mmg3djdoMnYtN2gydjdoMnYtN2g3di0yaC03di0yaDd6bS05IDJoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSE1vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDExSDlWN0g3djEwaDJ2LTRoNnY0aDJWN2gtMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSFBsdXNNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMUg2VjdINHYxMGgydi00aDZ2NGgyVjdoLTJ2NHptMTAgMGgtMlY5aC0ydjJoLTJ2MmgydjJoMnYtMmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGRyQXV0b1NlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTZINi41djZIMTBjLjggMCAxLjUtLjcgMS41LTEuNXYtM2MwLS44LS43LTEuNS0xLjUtMS41em0wIDQuNUg4di0zaDJ2M3pNMy41IDE4aC0ydi0ySDB2NmgxLjV2LTIuNWgyVjIySDV2LTZIMy41ek0yMiAxOC41di0yaC0xLjV2MmgtMlYyMGgydjJIMjJ2LTJoMnYtMS41ek0xNi41IDE2SDEzdjZoMS41di0yaDEuMWwuOSAySDE4bC0uOS0yLjFjLjUtLjMuOS0uOC45LTEuNHYtMWMwLS44LS43LTEuNS0xLjUtMS41em0wIDIuNWgtMnYtMWgydjF6TTExLjk3IDUuM2wtMS4wMiAyLjg5aDIuMUwxMi4wMyA1LjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDOC42OSAyIDYgNC42OSA2IDhzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6bTIuMDQgOS0uNjMtMS43OWgtMi44M0w5Ljk2IDExSDguNzRsMi42My03aDEuMjVsMi42MyA3aC0xLjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGRyQXV0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bS0uOTktMTRMNi44OCAxN2gxLjlsMS0yLjgxaDQuNDRsLjk5IDIuODFoMS45TDEyLjk4IDZoLTEuOTd6bS0uNjYgNi41OSAxLjYtNC41NWguMDlsMS42IDQuNTVoLTMuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZHJPZmZTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE4LjV2LTFjMC0uOC0uNy0xLjUtMS41LTEuNUgxM3Y2aDEuNXYtMmgxLjFsLjkgMkgxOGwtLjktMi4xYy41LS4zLjktLjguOS0xLjR6bS0xLjUgMGgtMnYtMWgydjF6bS0xMy0uNWgtMnYtMkgwdjZoMS41di0yLjVoMlYyMkg1di02SDMuNXYyem02LjUtMkg2LjV2NkgxMGMuOCAwIDEuNS0uNyAxLjUtMS41di0zYzAtLjgtLjctMS41LTEuNS0xLjV6bTAgNC41SDh2LTNoMnYzem0xNC0uNWgtMnYyaC0xLjV2LTJoLTJ2LTEuNWgydi0ySDIydjJoMlYyMHpNMTAuOTggNC4xNSA5LjQyIDIuNTljNS4xLTIuNDIgMTAuNDEgMi44OSA3Ljk5IDcuOTlsLTEuNTYtMS41NmMuODEtMi45Ni0xLjkxLTUuNjgtNC44Ny00Ljg3ek02LjM0IDIuMzQgNC45MyAzLjc2bDEuNjYgMS42NmMtMi40MiA1LjEgMi44OSAxMC40MSA3Ljk5IDcuOTlsMS42NiAxLjY2IDEuNDEtMS40MUw2LjM0IDIuMzR6bTEuODEgNC42NCA0Ljg3IDQuODdjLTIuOTYuODEtNS42OC0xLjkxLTQuODctNC44N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhkck9uU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxOC41di0xYzAtLjgtLjctMS41LTEuNS0xLjVIMTN2NmgxLjV2LTJoMS4xbC45IDJIMThsLS45LTIuMWMuNS0uMy45LS44LjktMS40em0tMS41IDBoLTJ2LTFoMnYxem0tMTMtLjVoLTJ2LTJIMHY2aDEuNXYtMi41aDJWMjJINXYtNkgzLjV2MnptNi41LTJINi41djZIMTBjLjggMCAxLjUtLjcgMS41LTEuNXYtM2MwLS44LS43LTEuNS0xLjUtMS41em0wIDQuNUg4di0zaDJ2M3ptMTQtLjVoLTJ2MmgtMS41di0yaC0ydi0xLjVoMnYtMkgyMnYyaDJWMjB6TTEyIDRjMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDQtNC0xLjc5LTQtNCAxLjc5LTQgNC00bTAtMkM4LjY5IDIgNiA0LjY5IDYgOHMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDIyaDh2LTdoLTN2LTRoLTVWOWgzVjJIOHY3aDN2Mkg2djRIM3Y3aDh2LTdIOHYtMmg4djJoLTN2N3pNMTAgN1Y0aDR2M2gtNHpNOSAxN3YzSDV2LTNoNHptMTAgMHYzaC00di0zaDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMZW5zQmx1ciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxM2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC04Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bS0zIC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNNiA1Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTE1IDUuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTE0IDdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMC0zLjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0tMTEgMTBjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em03IDdjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0wLTE3Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTAgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wIDUuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTggLjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCA0Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtOGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLTRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMyA4LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek0xNCAxN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bS00LTEyYy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptMCA4LjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptNC00LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0wLTRjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGlnaHRNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOWMxLjY1IDAgMyAxLjM1IDMgM3MtMS4zNSAzLTMgMy0zLTEuMzUtMy0zIDEuMzUtMyAzLTNtMC0yYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXpNMiAxM2gyYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xSDJjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDF6bTE4IDBoMmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtMmMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMXpNMTEgMnYyYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMVYyYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxem0wIDE4djJjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xdi0yYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxek01Ljk5IDQuNThhLjk5Ni45OTYgMCAwIDAtMS40MSAwIC45OTYuOTk2IDAgMCAwIDAgMS40MWwxLjA2IDEuMDZjLjM5LjM5IDEuMDMuMzkgMS40MSAwcy4zOS0xLjAzIDAtMS40MUw1Ljk5IDQuNTh6bTEyLjM3IDEyLjM3YS45OTYuOTk2IDAgMCAwLTEuNDEgMCAuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMS4wNiAxLjA2Yy4zOS4zOSAxLjAzLjM5IDEuNDEgMGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTEuMDYtMS4wNnptMS4wNi0xMC45NmEuOTk2Ljk5NiAwIDAgMCAwLTEuNDEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLTEuMDYgMS4wNmMtLjM5LjM5LS4zOSAxLjAzIDAgMS40MXMxLjAzLjM5IDEuNDEgMGwxLjA2LTEuMDZ6TTcuMDUgMTguMzZhLjk5Ni45OTYgMCAwIDAgMC0xLjQxLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0xLjA2IDEuMDZjLS4zOS4zOS0uMzkgMS4wMyAwIDEuNDFzMS4wMy4zOSAxLjQxIDBsMS4wNi0xLjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYXRpb25EaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTN2LTJoLTIuMDZBOC45OTQgOC45OTQgMCAwIDAgMTMgMy4wNlYxaC0ydjIuMDZjLS45OC4xMS0xLjkxLjM4LTIuNzcuNzhsMS41MyAxLjUzYTYuOTk1IDYuOTk1IDAgMCAxIDguODcgOC44N2wxLjUzIDEuNTNjLjQtLjg2LjY3LTEuNzkuNzgtMi43N0gyM3pNNC40MSAyLjg2IDMgNC4yN2wyLjA0IDIuMDRBOC45OTQgOC45OTQgMCAwIDAgMy4wNiAxMUgxdjJoMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAxMSAyMC45NFYyM2gydi0yLjA2YzEuNzctLjIgMy4zOC0uOTEgNC42OS0xLjk4TDE5LjczIDIxbDEuNDEtMS40MUw0LjQxIDIuODZ6TTEyIDE5QTYuOTk1IDYuOTk1IDAgMCAxIDYuNDYgNy43M2w5LjgxIDkuODFBNi45NzIgNi45NzIgMCAwIDEgMTIgMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhdGlvblNlYXJjaGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuOTQgMTFBOC45OTQgOC45OTQgMCAwIDAgMTMgMy4wNlYxaC0ydjIuMDZBOC45OTQgOC45OTQgMCAwIDAgMy4wNiAxMUgxdjJoMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAxMSAyMC45NFYyM2gydi0yLjA2QTguOTk0IDguOTk0IDAgMCAwIDIwLjk0IDEzSDIzdi0yaC0yLjA2ek0xMiAxOWMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMdGVNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE0aDN2Mkg0VjhoMnY2em0zLTRoMnY2aDJ2LTZoMlY4SDl2MnptMTIgMFY4aC01djhoNXYtMmgtM3YtMWgzdi0yaC0zdi0xaDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMdGVQbHVzTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNGgzdjJIMVY4aDJ2NnptMi00aDJ2Nmgydi02aDJWOEg1djJ6bTcgNmg1di0yaC0zdi0xaDN2LTJoLTN2LTFoM1Y4aC01djh6bTEyLTVoLTJWOWgtMnYyaC0ydjJoMnYyaDJ2LTJoMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hY3JvT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC42NiA0LjkzYy4yNCAwIC40Ni4wNy42NC4ybC44MS41NmMtLjI5LjI0LS41NC41NC0uNzIuODdsMS42NiAxLjY2QzExLjAzIDguMTQgMTEgOC4wOCAxMSA4YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMS0uNDUgMS0xIDFjLS4wOCAwLS4xNC0uMDMtLjIyLS4wNGw0LjA2IDQuMDZhMy4xMyAzLjEzIDAgMCAwIDIuNjMtMy4wOWMwLS43MS0uMjUtMS4zOS0uNjctMS45My40My0uNTQuNjctMS4yMi42Ny0xLjkzYTMuMTQ1IDMuMTQ1IDAgMCAwLTMuNTctMy4xMUMxNC40NCAxLjgxIDEzLjMxIDEgMTIgMXMtMi40NC44MS0yLjkxIDEuOTZhMy4xMzIgMy4xMzIgMCAwIDAtMi41Mi43OGwxLjQyIDEuNDJjLjItLjEzLjQyLS4yMy42Ny0uMjN6bTYuNjggNi4xNGMtLjI0IDAtLjQ2LS4wNy0uNjQtLjJsLS44MS0uNTdjLjU1LS40NS45NC0xLjA5IDEuMDYtMS44M2wuODguNDJjLjQuMTkuNjYuNTkuNjYgMS4wMyAwIC42NC0uNTIgMS4xNS0xLjE1IDEuMTV6bS0uNjUtNS45NGMuMi0uMTMuNDItLjIuNjUtLjIuNjMgMCAxLjE0LjUxIDEuMTQgMS4xNCAwIC40NC0uMjUuODMtLjY2IDEuMDNsLS44OC40MmMtLjEyLS43NC0uNTEtMS4zOC0xLjA3LTEuODNsLjgyLS41NnpNMTIgM2MuNjIgMCAxLjEyLjQ5IDEuMTQgMS4xbC0uMTEgMS4wOUMxMi43MSA1LjA3IDEyLjM2IDUgMTIgNXMtLjcuMDctMS4wMi4xOWwtLjEyLTEuMDljLjAyLS42MS41Mi0xLjEgMS4xNC0xLjF6TTE5Ljk4IDE3LjE1QTguOTA5IDguOTA5IDAgMCAwIDIxIDEzYy0xLjUgMC0yLjkxLjM3LTQuMTUgMS4wMmwzLjEzIDMuMTN6TTMgMTNhOSA5IDAgMCAwIDkgOSA5IDkgMCAwIDAtOS05em0yLjQ0IDIuNDRjMS45LjcxIDMuNDIgMi4yMiA0LjEyIDQuMTJhNy4wNCA3LjA0IDAgMCAxLTQuMTItNC4xMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi44MSAyLjgxIDEuMzkgNC4yMmw0LjQyIDQuNDJjLS4xOS40LS4zLjg0LS4zIDEuMjlhMy4xNDcgMy4xNDcgMCAwIDAgMy41OCAzLjExQTMuMTUgMy4xNSAwIDAgMCAxMiAxNWMuMDUgMCAuMTEtLjAxLjE2LS4wMWwxLjY0IDEuNjRBOC44NTMgOC44NTMgMCAwIDAgMTIgMjJjMi4wMiAwIDMuODgtLjY3IDUuMzgtMS44bDIuNCAyLjQgMS40MS0xLjQxTDIuODEgMi44MXptMTEuNjMgMTYuNzVjLjItLjU0LjQ3LTEuMDQuNzktMS41bC43Mi43MmMtLjQ3LjMxLS45Ny41OC0xLjUxLjc4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVkaWFCbHVldG9vdGhPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNi4xN1YzaDZ2NGgtNHYxLjE3bC0yLTJ6TTE5LjQyIDE1IDIyIDE3LjU3bC0uOC44LTYuNzgtNi43OC44LS44IDIuNzUgMi43NVY5aC42TDIyIDEyLjQzIDE5LjQyIDE1em0tLjI1LTEuNDUgMS4xMy0xLjEzLTEuMTMtMS4xM3YyLjI2em0yLjAyIDcuNjQtMS40MSAxLjQxLTMuOTgtMy45OC0uNTguNTgtLjg1LS44NS41OC0uNThMMTEgMTMuODNWMTdjMCAyLjIxLTEuNzggNC0zLjk5IDRTMyAxOS4yMSAzIDE3czEuNzktNCA0LjAxLTRjLjczIDAgMS40MS4yMSAyIC41NXYtMS43MkwxLjM5IDQuMjIgMi44IDIuODFsMTguMzkgMTguMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZWRpYUJsdWV0b290aE9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05IDMgLjAxIDEwLjU1Yy0uNi0uMzQtMS4yOC0uNTUtMi0uNTVhNC4wMDEgNC4wMDEgMCAxIDAgMCA4QzkuMjMgMjEgMTEgMTkuMjEgMTEgMTdWN2g0VjNIOXptMTIgOS40M0wxNy41NyA5aC0uNnY0LjU1bC0yLjc1LTIuNzUtLjg1Ljg1TDE2LjczIDE1bC0zLjM1IDMuMzUuODUuODUgMi43NS0yLjc1VjIxaC42TDIxIDE3LjU3IDE4LjQyIDE1IDIxIDEyLjQzem0tMi44My0xLjEzIDEuMTMgMS4xMy0xLjEzIDEuMTNWMTEuM3ptMS4xMyA2LjI3LTEuMTMgMS4xM3YtMi4yNmwxLjEzIDEuMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZWRpY2F0aW9uTGlxdWlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzaDEydjJIM3pNMiAyMWgxNFY2SDJ2MTV6bTMtOWgyLjVWOS41aDNWMTJIMTN2M2gtMi41djIuNWgtM1YxNUg1di0zek0yMCA2Yy0xLjY4IDAtMyAxLjc2LTMgNCAwIDEuNzcuODMgMy4yMiAyIDMuNzZWMjFoMnYtNy4yNGMxLjE3LS41NCAyLTEuOTkgMi0zLjc2IDAtMi4yNC0xLjMyLTQtMy00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVkaWNhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNSAxNUg4di0zaDIuNVY5LjVoM1YxMkgxNnYzaC0yLjV2Mi41aC0zVjE1ek0xOSA4djExYzAgMS4xLS45IDItMiAySDdjLTEuMSAwLTItLjktMi0yVjhjMC0xLjEuOS0yIDItMmgxMGMxLjEgMCAyIC45IDIgMnptLTIgMEg3djExaDEwVjh6bTEtNUg2djJoMTJWM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vYmlsZUZyaWVuZGx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxSDljLTEuMSAwLTIgLjktMiAydjNoMlY0aDEwdjE2SDl2LTJIN3YzYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNNy4wMSAxMy40N2wtMi41NS0yLjU1LTEuMjcgMS4yN0w3IDE2bDcuMTktNy4xOS0xLjI3LTEuMjctNS45MSA1LjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9iaWxlT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djguNjFsMiAyVjNjMC0xLjEtLjktMi0yLTJIN2MtLjcxIDAtMS4zMy4zNy0xLjY4LjkzTDguMzkgNUgxN3pNMS40OSAzLjc2IDUgNy4yN1YyMWMwIDEuMS45IDIgMiAyaDEwYzEuMDIgMCAxLjg1LS43NyAxLjk4LTEuNzVsMS43MiAxLjcyIDEuNDEtMS40MUwyLjkgMi4zNSAxLjQ5IDMuNzZ6TTcgOS4yNyAxNi43MyAxOUg3VjkuMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb2JpbGVkYXRhT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNiA2LjgyIDEuNTkgMS41OUwxOSA3bC00LTQtNCA0IDEuNDEgMS40MUwxNCA2LjgydjQuMzVsMiAyek0xLjM5IDQuMjIgOCAxMC44M3Y2LjM1bC0xLjU5LTEuNTlMNSAxN2w0IDQgNC00LTEuNDEtMS40MUwxMCAxNy4xOHYtNC4zNWw5Ljc4IDkuNzggMS40MS0xLjQyTDIuODEgMi44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vZGVOaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDRjNC40MSAwIDggMy41OSA4IDhzLTMuNTkgOC04IDhjLS4zNCAwLS42OC0uMDItMS4wMS0uMDcgMS45MS0yLjE2IDMuMDEtNC45OCAzLjAxLTcuOTNzLTEuMS01Ljc3LTMuMDEtNy45M0M4LjgyIDQuMDIgOS4xNiA0IDkuNSA0bTAtMmMtMS44MiAwLTMuNTMuNS01IDEuMzUgMi45OSAxLjczIDUgNC45NSA1IDguNjVzLTIuMDEgNi45Mi01IDguNjVjMS40Ny44NSAzLjE4IDEuMzUgNSAxLjM1IDUuNTIgMCAxMC00LjQ4IDEwLTEwUzE1LjAyIDIgOS41IDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb2RlU3RhbmRieSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ5IDIgMiA2LjQ5IDIgMTJzNC40OSAxMCAxMCAxMCAxMC00LjQ5IDEwLTEwUzE3LjUxIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTMtOGMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtMyAxLjM0LTMgMy0zIDMgMS4zNCAzIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb25pdG9ySGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjNoMlY2aDE2djNoMlY2YzAtMS4xLS45LTItMi0yek0yMCAxOEg0di0zSDJ2M2MwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ydi0zaC0ydjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0Ljg5IDcuNTVjLS4zNC0uNjgtMS40NS0uNjgtMS43OSAwTDEwIDEzLjc2bC0xLjExLTIuMjFBLjk4OC45ODggMCAwIDAgOCAxMUgydjJoNS4zOGwxLjcyIDMuNDVjLjE4LjM0LjUyLjU1LjkuNTVzLjcyLS4yMS44OS0uNTVMMTQgMTAuMjRsMS4xMSAyLjIxYy4xNy4zNC41MS41NS44OS41NWg2di0yaC01LjM4bC0xLjczLTMuNDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb25pdG9yV2VpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6TTEyIDZjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0tMSAzLjVoLTF2LTFoMXYxem0xLjUgMGgtMXYtMWgxdjF6bTEuNSAwaC0xdi0xaDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5lYXJieUVycm9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiA3LjU3IDQuNDIgNC40MkwxMiAxNi40MWwtNC40Mi00LjQyTDEyIDcuNTd6bTAgMTEuNjItNy4yLTcuMiA3LjItNy4yIDYgNlY3LjE2bC00LjU4LTQuNThjLS43OC0uNzgtMi4wNS0uNzgtMi44MyAwbC04LjAxIDhjLS43OC43OC0uNzggMi4wNSAwIDIuODNsOC4wMSA4Yy43OC43OCAyLjA1Ljc4IDIuODMgMEwxOCAxNi44MnYtMy42M2wtNiA2em04IC44MWgydjJoLTJ2LTJ6bTItMTBoLTJ2OGgydi04XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOZWFyYnlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjQxIDEzLjQyIDE4LjgzIDE2bC0xLjgxLTEuODFMMTkuMiAxMiAxMiA0LjggOS44MSA2Ljk5IDggNS4xN2wyLjU4LTIuNThjLjc4LS43OCAyLjA1LS43OCAyLjgzIDBsOCA4Yy43OS43OC43OSAyLjA0IDAgMi44M3ptLS4yMiA3Ljc3LTEuNDEgMS40MUwxNiAxOC44M2wtMi41OCAyLjU4Yy0uNzguNzgtMi4wNS43OC0yLjgzIDBsLTgtOGMtLjc4LS43OC0uNzgtMi4wNSAwLTIuODNMNS4xNyA4IDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOSAxOC4zOHptLTctNC4xNy0xLjM5LTEuMzktLjguOEw3LjU4IDEybC44LS44LTEuNC0xLjM5TDQuOCAxMmw3LjIgNy4yIDIuMTktMi4xOHpNMTYuNDIgMTIgMTIgNy41OGwtLjguOCA0LjQyIDQuNDIuOC0uOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5ldHdvcmtDZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDIyaDIwVjJMMiAyMnptMTgtMmgtM1Y5LjgzbDMtM1YyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5ldHdvcmtXaWZpMUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDR6bTMuMzIgMTAuODRDMTQuMzQgMTQuMyAxMy4yIDE0IDEyIDE0Yy0xLjIgMC0yLjM0LjMtMy4zMi44NEwyLjkyIDkuMDdDNS41MSA3LjA4IDguNjcgNiAxMiA2czYuNDkgMS4wOCA5LjA4IDMuMDdsLTUuNzYgNS43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5ldHdvcmtXaWZpMkJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDR6bTQuNzggOS4zOEE4Ljg1MyA4Ljg1MyAwIDAgMCAxMiAxMmMtMS43NiAwLTMuNC41LTQuNzggMS4zOGwtNC4zLTQuM0M1LjUxIDcuMDggOC42NyA2IDEyIDZzNi40OSAxLjA4IDkuMDggMy4wN2wtNC4zIDQuMzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOZXR3b3JrV2lmaTNCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjEgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0ek0yLjkyIDkuMDdDNS41MSA3LjA4IDguNjcgNiAxMiA2czYuNDkgMS4wOCA5LjA4IDMuMDdsLTIuODUgMi44NkExMC45NDUgMTAuOTQ1IDAgMCAwIDEyIDEwYy0yLjMxIDAtNC40Ni43MS02LjIzIDEuOTNMMi45MiA5LjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmV0d29ya1dpZmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDR6bTAgNGMtMi44NiAwLTUuNS45NC03LjY1IDIuNTFMMi45MiA5LjA3QzUuNTEgNy4wOCA4LjY3IDYgMTIgNnM2LjQ5IDEuMDggOS4wOCAzLjA3bC0xLjQzIDEuNDNBMTIuOTkgMTIuOTkgMCAwIDAgMTIgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5mYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMThINFY0aDE2djE2ek0xOCA2aC01Yy0xLjEgMC0yIC45LTIgMnYyLjI4Yy0uNi4zNS0xIC45OC0xIDEuNzIgMCAxLjEuOSAyIDIgMnMyLS45IDItMmMwLS43NC0uNC0xLjM4LTEtMS43MlY4aDN2OEg4VjhoMlY2SDZ2MTJoMTJWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5pZ2h0bGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDRjLjM0IDAgLjY4LjAyIDEuMDEuMDdDMTMuMSA2LjIzIDEyIDkuMDUgMTIgMTJzMS4xIDUuNzcgMy4wMSA3LjkzYy0uMzMuMDUtLjY3LjA3LTEuMDEuMDctNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOG0wLTJDOC40OCAyIDQgNi40OCA0IDEyczQuNDggMTAgMTAgMTBjMS44MiAwIDMuNTMtLjUgNS0xLjM1LTIuOTktMS43My01LTQuOTUtNS04LjY1czIuMDEtNi45MiA1LTguNjVBOS45NzMgOS45NzMgMCAwIDAgMTQgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdGVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxcy0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTctLjI1Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NS0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NXpNMTkgMTlINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS4wOCAxMS4wMy0yLjEyLTIuMTJMNyAxNC44NlYxN2gyLjF6TTE2Ljg1IDkuMjdjLjItLjIuMi0uNTEgMC0uNzFsLTEuNDEtMS40MWMtLjItLjItLjUxLS4yLS43MSAwbC0xLjA2IDEuMDYgMi4xMiAyLjEyIDEuMDYtMS4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhc3N3b3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE3aDIwdjJIMnYtMnptMS4xNS00LjA1TDQgMTEuNDdsLjg1IDEuNDggMS4zLS43NS0uODUtMS40OEg3di0xLjVINS4zbC44NS0xLjQ3TDQuODUgNyA0IDguNDcgMy4xNSA3bC0xLjMuNzUuODUgMS40N0gxdjEuNWgxLjdsLS44NSAxLjQ4IDEuMy43NXptNi43LS43NSAxLjMuNzUuODUtMS40OC44NSAxLjQ4IDEuMy0uNzUtLjg1LTEuNDhIMTV2LTEuNWgtMS43bC44NS0xLjQ3LTEuMy0uNzVMMTIgOC40NyAxMS4xNSA3bC0xLjMuNzUuODUgMS40N0g5djEuNWgxLjdsLS44NSAxLjQ4ek0yMyA5LjIyaC0xLjdsLjg1LTEuNDctMS4zLS43NUwyMCA4LjQ3IDE5LjE1IDdsLTEuMy43NS44NSAxLjQ3SDE3djEuNWgxLjdsLS44NSAxLjQ4IDEuMy43NS44NS0xLjQ4Ljg1IDEuNDggMS4zLS43NS0uODUtMS40OEgyM3YtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGF0dGVybiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2YzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTIgOGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYtNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYgMmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS0uMDIgNmMtLjc0IDAtMS4zNy40LTEuNzIgMWgtMi41NGExLjk4IDEuOTggMCAwIDAtMy40NCAwSDguNDFsMy4wNy0zLjA3Yy4xNy4wNC4zNC4wNy41Mi4wNyAxLjEgMCAyLS45IDItMiAwLS4xOC0uMDMtLjM1LS4wNy0uNTFsMy41Ni0zLjU2Yy4xNi4wNC4zMy4wNy41MS4wNyAxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDJjMCAuMTguMDMuMzUuMDcuNTFsLTMuNTYgMy41NmMtLjE2LS4wNC0uMzMtLjA3LS41MS0uMDctMS4xIDAtMiAuOS0yIDIgMCAuMTguMDMuMzUuMDcuNTFsLTMuNTYgMy41NkM2LjM1IDE2LjAzIDYuMTggMTYgNiAxNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDJjLjc0IDAgMS4zNy0uNCAxLjcyLTFoMi41N2ExLjk4IDEuOTggMCAwIDAgMy40NCAwaDIuNTVjLjM0LjYuOTggMSAxLjcyIDEgMS4xIDAgMi0uOSAyLTItLjAyLTEuMS0uOTItMi0yLjAyLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaGlzaGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDYuMThWMmgtMnY0LjE4QzEzLjg0IDYuNiAxMyA3LjcgMTMgOXMuODQgMi40IDIgMi44MlYxNWMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNHYtMS4xN2wxLjU5IDEuNTlMMTAgMTQgNSA5djZjMCAzLjMxIDIuNjkgNiA2IDZzNi0yLjY5IDYtNnYtMy4xOGMxLjE2LS40MSAyLTEuNTEgMi0yLjgycy0uODQtMi40LTItMi44MnpNMTYgMTBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjQ5IDEwLjVWMTVoMS4xNVY5aC0uODdsLTEuNzYgMS4yNy41OC44OXpNMTEuNDcgMTAuMDVjLjUgMCAuODEuMzIuODEuNzIgMCAuMzctLjE0LjY0LS41NCAxLjA2LS4zNi4zOC0xLjA2IDEuMDgtMi4xMyAyLjE1VjE1aDMuODl2LS45OWgtMi4zN2wtLjAzLS4wNWMuNjgtLjY4IDEuMTUtMS4xNCAxLjQtMS4zOS42MS0uNi45Mi0xLjIyLjkyLTEuODYgMC0uMjQtLjA1LTEuMDQtLjkxLTEuNDgtLjQ3LS4yMy0xLjI2LS4zNi0xLjk1LS4wMy0uODIuMzktLjk5IDEuMTMtMSAxLjE1bDEuMDEuNDJjLjEtLjMzLjM4LS43Mi45LS43MnpNMTYuOTkgMTMuOTRjLS44MyAwLS45OS0uNzYtMS4wMi0uODZsLTEuMDMuNDFjLjQ1IDEuNTkgMi4wMSAxLjUxIDIuMDUgMS41MSAxLjIgMCAxLjY4LS43MiAxLjc2LS44NS4zMi0uNDkuMzYtMS4yNC0uMDEtMS43Ni0uMTctLjI0LS40LS40MS0uNjgtLjUydi0uMDdjLjItLjEuMzctLjI2LjUyLS40OC4yNi0uNDEuMzEtMS4wNy0uMDItMS41Ny0uMDgtLjExLS41My0uNzUtMS42Mi0uNzUtMS4yNiAwLTEuNzQuOS0xLjg1IDEuMjRsLjk5LjQxYy4xMS0uMzIuMzUtLjY0Ljg1LS42NC40NCAwIC43NS4yNi43NS42NSAwIC41OC0uNTUuNzItLjg4LjcyaC0uNDZ2MWguNWMuNTYgMCAxLjA0LjI0IDEuMDQuNzkgMCAuNDktLjQ4Ljc3LS44OS43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYXlMZXNzb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMjBWNGgydjdsMi41LTEuNUwxMiAxMVY0aDV2Ny4wOGMuMzMtLjA1LjY2LS4wOCAxLS4wOHMuNjcuMDMgMSAuMDhWNGMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDcuMjZjLS40Mi0uNi0uNzUtMS4yOC0uOTctMkg1em0xMy03Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptLTEuMjUgNy41di01bDQgMi41LTQgMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHJpY2VDaGFuZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTdoMnYtMWgxYy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTFIOHYtMWg0VjhoLTJWN0g4djFIN2MtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoM3YxSDZ2MmgydjF6TTIwIDRINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmMwLTEuMTEtLjg5LTItMi0yem0wIDE0SDRWNmgxNnYxMnptLTYtOCAyLTIgMiAybTAgNC4yNS0yIDItMi0yXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQcmljZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxM1Y5YzAtLjU1LS40NS0xLTEtMUg2VjZoNVY0SDguNVYzaC0ydjFINWMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoNHYySDR2MmgyLjV2MWgydi0xSDEwYy41NSAwIDEtLjQ1IDEtMXpNMTkuNTkgMTIuNTJsLTUuNjYgNS42NS0yLjgzLTIuODMtMS40MSAxLjQyTDEzLjkzIDIxIDIxIDEzLjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHVuY2hDbG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDZoLTFWMUg2djVINWMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yek04IDNoOHYzSDhWM3ptMTEgMTdINVY4aDE0djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA5Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMCA4LjVjLTEuOTMgMC0zLjUtMS41Ny0zLjUtMy41czEuNTctMy41IDMuNS0zLjUgMy41IDEuNTcgMy41IDMuNS0xLjU3IDMuNS0zLjUgMy41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDExLjVoLTF2Mi43MWwxLjY0IDEuNjQuNzEtLjcxLTEuMzUtMS4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVF1aXogKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg4VjRoMTJ2MTJ6bS02LjQ5LTUuODRjLjQxLS43MyAxLjE4LTEuMTYgMS42My0xLjguNDgtLjY4LjIxLTEuOTQtMS4xNC0xLjk0LS44OCAwLTEuMzIuNjctMS41IDEuMjNsLTEuMzctLjU3QzExLjUxIDUuOTYgMTIuNTIgNSAxMy45OSA1YzEuMjMgMCAyLjA4LjU2IDIuNTEgMS4yNi4zNy42LjU4IDEuNzMuMDEgMi41Ny0uNjMuOTMtMS4yMyAxLjIxLTEuNTYgMS44MS0uMTMuMjQtLjE4LjQtLjE4IDEuMThoLTEuNTJjLjAxLS40MS0uMDYtMS4wOC4yNi0xLjY2em0tLjU2IDMuNzljMC0uNTkuNDctMS4wNCAxLjA1LTEuMDQuNTkgMCAxLjA0LjQ1IDEuMDQgMS4wNCAwIC41OC0uNDQgMS4wNS0xLjA0IDEuMDUtLjU4IDAtMS4wNS0uNDctMS4wNS0xLjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUk1vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuOCA3LjIgOSAxMEg3TDUuODcgNy4zM0g0VjEwSDJWMmg1YzEuMTMgMCAyIC44NyAyIDJ2MS4zM2MwIC44LS41MyAxLjU0LTEuMiAxLjg3ek03IDRINHYxLjMzaDNWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJhZGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS43NCAxOC4zM0E5Ljk4NCA5Ljk4NCAwIDAgMCAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMFMyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwYTkuOTg0IDkuOTg0IDAgMCAwIDcuMTEtMi45N2MuMDMtLjAzLjA1LS4wNi4wNy0uMDguMi0uMi4zOS0uNDEuNTYtLjYyek0xMiAyMGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4YzAgMS44NS0uNjMgMy41NC0xLjY5IDQuOWwtMS40My0xLjQzYy42OS0uOTggMS4xLTIuMTcgMS4xLTMuNDYgMC0zLjMxLTIuNjktNi02LTZzLTYgMi42OS02IDYgMi42OSA2IDYgNmMxLjMgMCAyLjUxLS40MiAzLjQ5LTEuMTNsMS40MiAxLjQyQTcuODIyIDcuODIyIDAgMCAxIDEyIDIwem0xLjkyLTcuNDljLjE3LS42Ni4wMi0xLjM4LS40OS0xLjlsLS4wMi0uMDJjLS43Ny0uNzctMi0uNzgtMi43OC0uMDQtLjAxLjAxLS4wMy4wMi0uMDUuMDQtLjc4Ljc4LS43OCAyLjA1IDAgMi44M2wuMDIuMDJjLjUyLjUxIDEuMjUuNjcgMS45MS40OWwxLjUxIDEuNTFjLS42LjM2LTEuMjkuNTgtMi4wNC41OC0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDRjMCAuNzMtLjIxIDEuNDEtLjU2IDJsLTEuNS0xLjUxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVtZW1iZXJNZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMjBIN3YtMWgxMHYxem0wLTNIN3YtLjQ4YzEuNDctLjk5IDMuMjItMS41MiA1LTEuNTJzMy41My41MyA1IDEuNTJWMTh6bTAtMi43OWMtMS41LS43Ny0zLjItMS4yMS01LTEuMjFzLTMuNS40NC01IDEuMjFWNmgxMHY5LjIxek0xNyA0SDdWM2gxMHYxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxM2MxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVzZXRUdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgOFY1YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoNHYyaDh2LTJoNGMxLjEgMCAxLjk5LS45IDEuOTktMnYtNUgyMmMwLTEuMS0uOS0yLTItMmgtNy4xN2wxLjgzLTEuODMtMS40MS0xLjQxQzkuNjkgMTAuMzEgMTAuODggOS4xMiA5IDExbDQuMjQgNC4yNCAxLjQxLTEuNDFMMTIuODMgMTJIMjB2NUg0VjVoMTZ2M2gyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVzdGFydEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxM2MwLTEuNjUuNjctMy4xNSAxLjc2LTQuMjRMNi4zNCA3LjM0QTguMDE0IDguMDE0IDAgMCAwIDQgMTNjMCA0LjA4IDMuMDUgNy40NCA3IDcuOTN2LTIuMDJjLTIuODMtLjQ4LTUtMi45NC01LTUuOTF6bTE0IDBjMC00LjQyLTMuNTgtOC04LTgtLjA2IDAtLjEyLjAxLS4xOC4wMWwxLjA5LTEuMDlMMTEuNSAyLjUgOCA2bDMuNSAzLjUgMS40MS0xLjQxLTEuMDgtMS4wOGMuMDYgMCAuMTItLjAxLjE3LS4wMSAzLjMxIDAgNiAyLjY5IDYgNiAwIDIuOTctMi4xNyA1LjQzLTUgNS45MXYyLjAyYzMuOTUtLjQ5IDctMy44NSA3LTcuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXZpZXdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdMNCAxNy4xN1Y0aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxNSAxLjU3LTMuNDNMMTcgMTBsLTMuNDMtMS41N0wxMiA1bC0xLjU3IDMuNDNMNyAxMGwzLjQzIDEuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSc3ZwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA5aDEuNWwtMS43NSA2aC0xLjVMMTIuNSA5SDE0bDEgMy40M0wxNiA5ek01LjEgMTIuOSA2IDE1SDQuNWwtLjg1LTJIMi41djJIMVY5aDMuNWMuODUgMCAxLjUuNjUgMS41IDEuNXYxYzAgLjYtLjQgMS4xNS0uOSAxLjR6bS0uNi0yLjRoLTJ2MWgydi0xem0xNyAyLjVoLTJ2MkgxOFY5aDMuNWMuODMgMCAxLjUuNjcgMS41IDEuNXYxYzAgLjgzLS42NyAxLjUtMS41IDEuNXptMC0yLjVoLTJ2MWgydi0xek0xMS41IDl2MS41aC0zdi43NWgyYy41NSAwIDEgLjQ1IDEgMVYxNGMwIC41NS0uNDUgMS0xIDFIN3YtMS41aDN2LS43NUg3Ljc1Yy0uNDEgMC0uNzUtLjM0LS43NS0uNzV2LTJjMC0uNTUuNDUtMSAxLTFoMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NyZWVuTG9ja0xhbmRzY2FwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNUgzYy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bS0yIDEySDVWN2gxNHYxMHptLTktMWg0Yy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTF2LTFhMiAyIDAgMSAwLTQgMHYxYy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMXptLjgtNmMwLS42Ni41NC0xLjIgMS4yLTEuMnMxLjIuNTQgMS4yIDEuMnYxaC0yLjR2LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY3JlZW5Mb2NrUG9ydHJhaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE2aDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXYtMWEyIDIgMCAxIDAtNCAwdjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxem0uOC02YzAtLjY2LjU0LTEuMiAxLjItMS4yczEuMi41NCAxLjIgMS4ydjFoLTIuNHYtMXpNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMThIN1Y1aDEwdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NyZWVuTG9ja1JvdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMi4zIDEzLjc3LTIuNTctMi41Ny0xLjQxIDEuNDEgMi4yMiAyLjIyLTUuNjYgNS42NkwzLjU2IDkuMTdsNS42Ni01LjY2IDIuMSAyLjEgMS40MS0xLjQxLTIuNDUtMi40NWExLjQ5IDEuNDkgMCAwIDAtMi4xMiAwTDEuOCA4LjExYTEuNDkgMS40OSAwIDAgMCAwIDIuMTJsMTIuMDIgMTIuMDJjLjU5LjU5IDEuNTQuNTkgMi4xMiAwbDYuMzYtNi4zNmMuNTktLjU5LjU5LTEuNTQgMC0yLjEyek03LjUyIDIxLjQ4QTEwLjQ4NyAxMC40ODcgMCAwIDEgMS41NSAxM0guMDVDLjU2IDE5LjE2IDUuNzEgMjQgMTIgMjRsLjY2LS4wMy0zLjgxLTMuODItMS4zMyAxLjMzek0xNS4wNSAxMGg1Yy41NSAwIDEtLjQ1IDEtMVY1YzAtLjU1LS40NS0xLTEtMXYtLjVhMi41IDIuNSAwIDAgMC01IDBWNGMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bS44LTYuNWMwLS45NC43Ni0xLjcgMS43LTEuN3MxLjcuNzYgMS43IDEuN1Y0aC0zLjR2LS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NyZWVuUm90YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjQ4IDIuNTJjMy4yNyAxLjU1IDUuNjEgNC43MiA1Ljk3IDguNDhoMS41QzIzLjQ0IDQuODQgMTguMjkgMCAxMiAwbC0uNjYuMDMgMy44MSAzLjgxIDEuMzMtMS4zMnptLTYuMjUtLjc3YTEuNDkgMS40OSAwIDAgMC0yLjEyIDBMMS43NSA4LjExYTEuNDkgMS40OSAwIDAgMCAwIDIuMTJsMTIuMDIgMTIuMDJjLjU5LjU5IDEuNTQuNTkgMi4xMiAwbDYuMzYtNi4zNmMuNTktLjU5LjU5LTEuNTQgMC0yLjEyTDEwLjIzIDEuNzV6bTQuNiAxOS40NEwyLjgxIDkuMTdsNi4zNi02LjM2IDEyLjAyIDEyLjAyLTYuMzYgNi4zNnptLTcuMzEuMjlBMTAuNDg3IDEwLjQ4NyAwIDAgMSAxLjU1IDEzSC4wNUMuNTYgMTkuMTYgNS43MSAyNCAxMiAyNGwuNjYtLjAzLTMuODEtMy44MS0xLjMzIDEuMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY3JlZW5TZWFyY2hEZXNrdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE4aDE2YzEuMSAwIDEuOTktLjkgMS45OS0yTDIyIDVjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMnpNNCA1aDE2djExSDRWNXpNMSAxOWgyMnYySDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjk3IDcuNTNjLTEuMzctMS4zNy0zLjU4LTEuMzctNC45NSAwcy0xLjM3IDMuNTggMCA0Ljk1YzEuMTggMS4xOCAzIDEuMzQgNC4zNi40N2wyLjA5IDIuMDkgMS4wNi0xLjA2LTIuMDktMi4wOWMuODctMS4zNi43Mi0zLjE4LS40Ny00LjM2em0tMS4wNiAzLjg4Yy0uNzguNzgtMi4wNS43OC0yLjgzIDAtLjc4LS43OC0uNzgtMi4wNSAwLTIuODNzMi4wNS0uNzggMi44MyAwYy43OC43OS43OCAyLjA1IDAgMi44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNjcmVlbnNob3RNb25pdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNHYyaDh2LTJoNGMxLjEgMCAyLS45IDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTRINFY1aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgNy41SDlWNkg1djRoMS41ek0xOSAxMmgtMS41djIuNUgxNVYxNmg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NyZWVuc2hvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyem0wLTE0SDdWM2gxMHYxek05LjUgOC41SDEyVjdIOHY0aDEuNVY4LjV6TTEyIDE3aDR2LTRoLTEuNXYyLjVIMTJWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZFN0b3JhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDR2MTZINlY4LjgzTDEwLjgzIDRIMThtMC0yaC04TDQgOHYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTkgN2gydjRIOXptMyAwaDJ2NGgtMnptMyAwaDJ2NGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlY3VyaXR5VXBkYXRlR29vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyem0wLTE0SDdWM2gxMHYxem0tMSA2LjA1LTEuNDEtMS40MS0zLjU0IDMuNTQtMS40MS0xLjQxLTEuNDEgMS40MUwxMS4wNSAxNSAxNiAxMC4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlY3VyaXR5VXBkYXRlV2FybmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTVoMnYyaC0yek0xMSA3aDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyem0wLTE0SDdWM2gxMHYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VjdXJpdHlVcGRhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEuMDEgNyAxYy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE3IDIxSDd2LTFoMTB2MXptMC0zSDdWNmgxMHYxMnpNNyA0VjNoMTB2MUg3em05IDgtNCA0LTQtNCAxLjQxLTEuNDFMMTEgMTIuMTdWOGgydjQuMTdsMS41OS0xLjU5TDE2IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNDEgMTEuNDEtOC44My04LjgzYy0uMzctLjM3LS44OC0uNTgtMS40MS0uNThINGMtMS4xIDAtMiAuOS0yIDJ2Ny4xN2MwIC41My4yMSAxLjA0LjU5IDEuNDFsOC44MyA4LjgzYy43OC43OCAyLjA1Ljc4IDIuODMgMGw3LjE3LTcuMTdjLjc4LS43OC43OC0yLjA0LS4wMS0yLjgzek0xMi44MyAyMCA0IDExLjE3VjRoNy4xN0wyMCAxMi44MyAxMi44MyAyMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2LjVcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VuZFRvTW9iaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCA4IDQgNC00IDQtMS40MS0xLjQxTDE4LjE3IDEzSDEzdi0yaDUuMTdsLTEuNTktMS41OUwxOCA4ek03IDEuMDEgMTcgMWMxLjEgMCAyIC45IDIgMnY0aC0yVjZIN3YxMmgxMHYtMWgydjRjMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJWM2MwLTEuMS45LTEuOTkgMi0xLjk5ek03IDIxaDEwdi0xSDd2MXpNNyA0aDEwVjNIN3YxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NTdWdnZXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTNjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMW0wLTJjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem04LjUtMiAxLjA5LTIuNDFMMjIgNS41bC0yLjQxLTEuMDlMMTguNSAybC0xLjA5IDIuNDFMMTUgNS41bDIuNDEgMS4wOUwxOC41IDl6bTIuNzggMy43MkwyMC41IDExbC0uNzggMS43Mi0xLjcyLjc4IDEuNzIuNzguNzggMS43Mi43OC0xLjcyTDIzIDEzLjVsLTEuNzItLjc4ek0xNi4yNSAxNGMwLS4xMiAwLS4yNS0uMDEtLjM3bDEuOTQtMS40Ny0yLjUtNC4zMy0yLjI0Ljk0Yy0uMi0uMTMtLjQyLS4yNi0uNjQtLjM3TDEyLjUgNmgtNWwtLjMgMi40MWMtLjIyLjExLS40My4yNC0uNjQuMzdsLTIuMjQtLjk1LTIuNSA0LjMzIDEuOTQgMS40N2MtLjAxLjEyLS4wMS4yNS0uMDEuMzdzMCAuMjUuMDEuMzdsLTEuOTQgMS40NyAyLjUgNC4zMyAyLjI0LS45NGMuMi4xMy40Mi4yNi42NC4zN2wuMyAyLjRoNWwuMy0yLjQxYy4yMi0uMTEuNDMtLjIzLjY0LS4zN2wyLjI0Ljk0IDIuNS00LjMzLTEuOTQtMS40N2MuMDEtLjExLjAxLS4yNC4wMS0uMzZ6bS0xLjQyIDMuNjQtMS43My0uNzNjLS41Ni42LTEuMyAxLjA0LTIuMTMgMS4yM0wxMC43MyAyMEg5LjI3bC0uMjMtMS44NmMtLjgzLS4xOS0xLjU3LS42My0yLjEzLTEuMjNsLTEuNzMuNzMtLjczLTEuMjcgMS40OS0xLjEzYy0uMTItLjM5LS4xOC0uOC0uMTgtMS4yMyAwLS40My4wNi0uODQuMTgtMS4yM2wtMS40OS0xLjEzLjczLTEuMjcgMS43My43M2MuNTYtLjYgMS4zLTEuMDQgMi4xMy0xLjIzTDkuMjcgOGgxLjQ3bC4yMyAxLjg2Yy44My4xOSAxLjU3LjYzIDIuMTMgMS4yM2wxLjczLS43My43MyAxLjI3LTEuNDkgMS4xM2MuMTIuMzkuMTguOC4xOCAxLjIzIDAgLjQzLS4wNi44NC0uMTggMS4yM2wxLjQ5IDEuMTMtLjczIDEuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc1N5c3RlbURheWRyZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDE3SDljLTIuMjEgMC00LTEuNzktNC00YTMuOTggMy45OCAwIDAgMSAzLjIyLTMuOTJBNC41MTQgNC41MTQgMCAwIDEgMTIgN2MxLjk1IDAgMy42NiAxLjI4IDQuMjYgMy4wOSAxLjU4LjM2IDIuNzQgMS43NSAyLjc0IDMuNDEgMCAxLjkzLTEuNTcgMy41LTMuNSAzLjV6bS02Ljc2LTUuOThDNy43NCAxMS4xNSA3IDExLjk5IDcgMTNjMCAxLjEuOSAyIDIgMmg2LjVjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjVoLS44N2wtLjE3LS44NkEyLjQ5NiAyLjQ5NiAwIDAgMCAxMiA5Yy0uOTYgMC0xLjg0LjU3LTIuMjYgMS40NWwtLjI3LjU3aC0uNzN6TTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNoYXJlTG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjAyIDE5LjkzdjIuMDJjMi4wMS0uMiAzLjg0LTEgNS4zMi0yLjIxbC0xLjQyLTEuNDNhNy45NDEgNy45NDEgMCAwIDEtMy45IDEuNjJ6TTQuMDMgMTJjMC00LjA1IDMuMDMtNy40MSA2Ljk1LTcuOTNWMi4wNUM1Ljk1IDIuNTggMi4wMyA2Ljg0IDIuMDMgMTJjMCA1LjE2IDMuOTIgOS40MiA4Ljk1IDkuOTV2LTIuMDJjLTMuOTItLjUyLTYuOTUtMy44OC02Ljk1LTcuOTN6TTE5Ljk1IDExaDIuMDJjLS4yLTIuMDEtMS0zLjg0LTIuMjEtNS4zMmwtMS40MyAxLjQzYy44NiAxLjEgMS40NCAyLjQzIDEuNjIgMy44OXpNMTguMzQgNC4yNmE5Ljk4MSA5Ljk4MSAwIDAgMC01LjMyLTIuMjF2Mi4wMmMxLjQ2LjE4IDIuNzkuNzYgMy45IDEuNjJsMS40Mi0xLjQzek0xOC4zMyAxNi45bDEuNDMgMS40MkE5Ljk0OSA5Ljk0OSAwIDAgMCAyMS45NyAxM2gtMi4wMmE3Ljk0MSA3Ljk0MSAwIDAgMS0xLjYyIDMuOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTEuMUMxNiA4LjYxIDE0LjEgNyAxMiA3cy00IDEuNjEtNCA0LjFjMCAxLjY2IDEuMzMgMy42MyA0IDUuOSAyLjY3LTIuMjcgNC00LjI0IDQtNS45em0tNCAuOWExLjA3MSAxLjA3MSAwIDAgMSAwLTIuMTRBMS4wNzEgMS4wNzEgMCAwIDEgMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG9ydGN1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUgNS0xLjQxIDEuNDFMMTUgNy44MyAxNy4xNyAxMEg4Yy0yLjc2IDAtNSAyLjI0LTUgNXY0aDJ2LTRjMC0xLjY1IDEuMzUtMyAzLTNoOS4xN0wxNSAxNC4xN2wtMS40MSAxLjQxTDE1IDE3bDYtNi02LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxDZWxsdWxhcjBCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMjJoMjBWMkwyIDIyem0xOC0ySDYuODNMMjAgNi44M1YyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbENlbGx1bGFyNEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyMmgyMFYyTDIgMjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxDZWxsdWxhckFsdDFCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE0aDN2Nkg1di02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsQ2VsbHVsYXJBbHQyQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNGgzdjZINXYtNnptNi01aDN2MTFoLTNWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbENlbGx1bGFyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA0aDN2MTZoLTNWNHpNNSAxNGgzdjZINXYtNnptNi01aDN2MTFoLTNWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbENlbGx1bGFyQ29ubmVjdGVkTm9JbnRlcm5ldDBCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOGgydi04aC0ydjh6bTAgNGgydi0yaC0ydjJ6bS0yLTJ2MkgyTDIyIDJ2NmgtMlY2LjgzTDYuODMgMjBIMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxDZWxsdWxhckNvbm5lY3RlZE5vSW50ZXJuZXQ0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOGgydi04aC0ydjh6bTAgNGgydi0yaC0ydjJ6TTIgMjJoMTZWOGg0VjJMMiAyMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbENlbGx1bGFyTm9TaW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjgzIDVIMTd2OS4xMWwyIDJWNWMwLTEuMS0uOS0yLTItMmgtN0w3Ljk0IDUuMDZsMS40MiAxLjQyTDEwLjgzIDV6bTEwLjQzIDE2LjIxTDMuNzkgMy43NCAyLjM4IDUuMTUgNSA3Ljc3VjE5YTIgMiAwIDAgMCAyIDJoMTEuMjNsMS42MiAxLjYyIDEuNDEtMS40MXpNNyAxOVY5Ljc5TDE2LjIzIDE5SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxDZWxsdWxhck5vZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTNoLTl2OUgyTDIyIDJ2MTF6bS0xIDIuNDFMMTkuNTkgMTRsLTIuMDkgMi4wOUwxNS40MSAxNCAxNCAxNS40MWwyLjA5IDIuMDlMMTQgMTkuNTkgMTUuNDEgMjFsMi4wOS0yLjA4TDE5LjU5IDIxIDIxIDE5LjU5bC0yLjA4LTIuMDlMMjEgMTUuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxDZWxsdWxhck51bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDYuODNWMjBINi44M0wyMCA2LjgzTTIyIDIgMiAyMmgyMFYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsQ2VsbHVsYXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxIDEtOC4zMSA4LjMxIDguMzEgOC4zek00LjkxIDQuMzYgMy41IDUuNzdsNi4zNiA2LjM3TDEgMjFoMTcuNzNsMiAyIDEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbFdpZmkwQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjEgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0ek0yLjkyIDkuMDdDNS41MSA3LjA4IDguNjcgNiAxMiA2czYuNDkgMS4wOCA5LjA4IDMuMDdMMTIgMTguMTdsLTkuMDgtOS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsV2lmaTRCYXJMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45OCAxMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OGw2LjM1IDYuMzZMMTIgMjFsMy4wNS0zLjA1VjE1YzAtLjQ1LjA5LS44OC4yMy0xLjI5LjU0LTEuNTcgMi4wMS0yLjcxIDMuNzctMi43MWgyLjkzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNnYtMWMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2MWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xem0tMSAwaC0ydi0xYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsV2lmaTRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjAxIDIxLjQ5IDIzLjY0IDdjLS40NS0uMzQtNC45My00LTExLjY0LTRDNS4yOCAzIC44MSA2LjY2LjM2IDdsMTEuNjMgMTQuNDkuMDEuMDEuMDEtLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsV2lmaUJhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjF2LTloOC45OUwyNCA4Ljk4ek0xOS41OSAxNGwtMi4wOSAyLjA5LS4zLS4zTDE1LjQxIDE0IDE0IDE1LjQxbDEuNzkgMS43OS4zLjNMMTQgMTkuNTkgMTUuNDEgMjFsMi4wOS0yLjA4TDE5LjU5IDIxIDIxIDE5LjU5bC0yLjA4LTIuMDlMMjEgMTUuNDEgMTkuNTkgMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxXaWZpQ29ubmVjdGVkTm9JbnRlcm5ldDQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxdi05aDguOTlMMjQgOC45OHpNMTkuNTkgMTRsLTIuMDkgMi4wOS0uMy0uM0wxNS40MSAxNCAxNCAxNS40MWwxLjc5IDEuNzkuMy4zTDE0IDE5LjU5IDE1LjQxIDIxbDIuMDktMi4wOEwxOS41OSAyMSAyMSAxOS41OWwtMi4wOC0yLjA5TDIxIDE1LjQxIDE5LjU5IDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsV2lmaU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMuNjQgN2MtLjQ1LS4zNC00LjkzLTQtMTEuNjQtNC0xLjMyIDAtMi41NS4xNC0zLjY5LjM4TDE4LjQzIDEzLjUgMjMuNjQgN3pNMy40MSAxLjMxIDIgMi43MmwyLjA1IDIuMDVDMS45MSA1Ljc2LjU5IDYuODIuMzYgN0wxMiAyMS41bDMuOTEtNC44NyAzLjMyIDMuMzIgMS40MS0xLjQxTDMuNDEgMS4zMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbFdpZmlTdGF0dXNiYXI0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjEgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsV2lmaVN0YXR1c2JhckNvbm5lY3RlZE5vSW50ZXJuZXQ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjFsNS01LjAxVjhoNS45MkMxOS45NyA1LjUxIDE2LjE2IDQgMTIgNHpNMTkgMThoMnYyaC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMGgydjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxXaWZpU3RhdHVzYmFyTnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNHpNMi45MiA5LjA3QzUuNTEgNy4wOCA4LjY3IDYgMTIgNnM2LjQ5IDEuMDggOS4wOCAzLjA3TDEyIDE4LjE3bC05LjA4LTkuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpbUNhcmREb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMmgtOEw0IDh2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDJ2MTZINlY4LjgzTDEwLjgzIDRIMTh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2IDEzLTQgNC00LTQgMS40MS0xLjQxTDExIDEzLjE3VjkuMDJMMTMgOXY0LjE3bDEuNTktMS41OUwxNiAxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwbGl0c2NyZWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA0djVINlY0aDEybTAtMkg2Yy0xLjEgMC0yIC45LTIgMnY1YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxM3Y1SDZ2LTVoMTJtMC0ySDZjLTEuMSAwLTIgLjktMiAydjVjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMnYtNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c1Njb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA2SDlWNGgydjJ6bTQtMmgtMnYyaDJWNHpNOSAxNGgydi0ySDl2MnptMTAtNFY4aC0ydjJoMnptMCA0di0yaC0ydjJoMnptLTYgMGgydi0yaC0ydjJ6bTYtMTBoLTJ2MmgyVjR6bS02IDRWNmgtMnYyaDJ6bS02IDJWOGgyVjZIN1Y0SDV2MTZoMnYtOGgydi0ySDd6bTggMmgydi0yaC0ydjJ6bS00LTJ2Mmgydi0yaC0yek05IDh2MmgyVjhIOXptNCAyaDJWOGgtMnYyem0yLTR2MmgyVjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTc2lkQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA1LjQ3IDEyIDEyIDcuNjIgNy42MiAzIDExVjguNTJMNy44MyA1bDQuMzggNC4zOEwyMSAzdjIuNDd6TTIxIDE1aC00LjdsLTQuMTcgMy4zNEw2IDEyLjQxbC0zIDIuMTNWMTdsMi44LTIgNi4yIDYgNS00aDR2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdG9yYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDIwaDIwdi00SDJ2NHptMi0zaDJ2Mkg0di0yek0yIDR2NGgyMFY0SDJ6bTQgM0g0VjVoMnYyem0tNCA3aDIwdi00SDJ2NHptMi0zaDJ2Mkg0di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3Rvcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkzIDhDMTYuNzIgNC4xOCAxMS44MiAyLjg3IDggNS4wN2MtMS40MS44Mi0yLjQ4IDItMy4xNiAzLjM3LS4xMy0yLjIuMjItNC40IDEuMDItNi40NEgzLjc0QzIuMiA2LjQ5IDIuNTIgMTEuNTggNS4wNyAxNmE3Ljk2IDcuOTYgMCAwIDAgNC44NiAzLjcyYzEuOTguNTMgNC4xNi4zMSA2LjA3LS43OSAxLjQxLS44MiAyLjQ4LTIgMy4xNi0zLjM3LjEzIDIuMi0uMjEgNC40LTEuMDEgNi40NGgyLjExYzEuNTMtNC40OSAxLjIyLTkuNTgtMS4zMy0xNHpNMTUgMTcuMkE2LjAxMiA2LjAxMiAwIDAgMSA2LjggMTVjLS4xMS0uMi0uMjEtLjQtLjMtLjYtMS4yLTIuNzYtLjE3LTYuMDYgMi41LTcuNiAyLjg2LTEuNjUgNi41NC0uNjcgOC4yIDIuMi4xMS4yLjIxLjQuMy42IDEuMiAyLjc2LjE3IDYuMDYtMi41IDcuNnpNMTIgMTBjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAtMmMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdW1tYXJpemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDNINWMtMS4xIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMS45OSAySDE5YzEuMSAwIDItLjkgMi0yVjlsLTYtNnpNNSAxOVY1aDl2NWg1djlINXpNOSA4YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xIC40NS0xIDEtMSAxIC40NSAxIDF6bTAgNGMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMSAuNDUtMSAxLTEgMSAuNDUgMSAxem0wIDRjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTEgLjQ1LTEgMS0xIDEgLjQ1IDEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN5c3RlbVNlY3VyaXR5VXBkYXRlR29vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyem0wLTE0SDdWM2gxMHYxem0tMSA2LjA1LTEuNDEtMS40MS0zLjU0IDMuNTQtMS40MS0xLjQxLTEuNDEgMS40MUwxMS4wNSAxNSAxNiAxMC4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN5c3RlbVNlY3VyaXR5VXBkYXRlV2FybmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTVoMnYyaC0yek0xMSA3aDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyem0wLTE0SDdWM2gxMHYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3lzdGVtU2VjdXJpdHlVcGRhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEuMDEgNyAxYy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE3IDIxSDd2LTFoMTB2MXptMC0zSDdWNmgxMHYxMnpNNyA0VjNoMTB2MUg3em05IDgtNCA0LTQtNCAxLjQxLTEuNDFMMTEgMTIuMTdWOGgydjQuMTdsMS41OS0xLjU5TDE2IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGFzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em00IDE4SDZWNGg3djVoNXYxMXptLTkuMTgtNi45NUw3LjQgMTQuNDYgMTAuOTQgMThsNS42Ni01LjY2LTEuNDEtMS40MS00LjI0IDQuMjQtMi4xMy0yLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGhlcm1vc3RhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTNWNWMwLTEuNjYtMS4zNC0zLTMtM1M5IDMuMzQgOSA1djhjLTEuMjEuOTEtMiAyLjM3LTIgNCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01YzAtMS42My0uNzktMy4wOS0yLTR6bS00LThjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxaC0xdjFoMXYyaC0xdjFoMXYyaC0yVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaW1lcjEwU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOHY4aC0zVjhoM20wLTNoLTNDOC4zNCA1IDcgNi4zNCA3IDh2OGMwIDEuNjYgMS4zNCAzIDMgM2gzYzEuNjYgMCAzLTEuMzQgMy0zVjhjMC0xLjY2LTEuMzQtMy0zLTN6TTEgOGgydjExaDNWNUgxdjN6bTE3LjUgM2MtLjgzIDAtMS41LjY4LTEuNSAxLjV2MmMwIC44Mi42NyAxLjUgMS41IDEuNUgyMXYxaC00djJoNC41Yy44MyAwIDEuNS0uNjcgMS41LTEuNXYtMmMwLS44My0uNjctMS41LTEuNS0xLjVIMTl2LTFoNHYtMmgtNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGltZXIzU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTF2MmgtNHYxaDIuNWMuODMgMCAxLjUuNjggMS41IDEuNXYyYzAgLjgzLS42NyAxLjUtMS41IDEuNUgxNXYtMmg0di0xaC0yLjVjLS44MiAwLTEuNS0uNjgtMS41LTEuNXYtMmMwLS44Mi42OC0xLjUgMS41LTEuNUgyMXpNNCA1djNoNnYyLjVINHYzaDZWMTZINHYzaDZjMS42NiAwIDMtMS4zNCAzLTN2LTEuOWEyLjEgMi4xIDAgMCAwLTIuMS0yLjFBMi4xIDIuMSAwIDAgMCAxMyA5LjlWOGMwLTEuNjYtMS4zNC0zLTMtM0g0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHVuZ3N0ZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE5aDJ2M2gtMnpNMiAxMWgzdjJIMnpNMTkgMTFoM3YyaC0zek0xNS44OTQgMTcuODAxbDEuNDA3LTEuNDA3IDIuMTIyIDIuMTIyLTEuNDA4IDEuNDA3ek00LjU4NCAxOC41MDlsMi4xMjEtMi4xMjIgMS40MDggMS40MDctMi4xMjIgMi4xMjJ6TTE1IDguMDJWM0g5djUuMDJjLTEuMjEuOTItMiAyLjM1LTIgMy45OCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01YzAtMS42My0uNzktMy4wNi0yLTMuOTh6TTExIDVoMnYyLjFjLS4zMi0uMDYtLjY2LS4xLTEtLjFzLS42OC4wNC0xIC4xVjV6bTEgMTBjLTEuNjUgMC0zLTEuMzUtMy0zczEuMzUtMyAzLTMgMyAxLjM1IDMgMy0xLjM1IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVXNiT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgOGg0djRoLTF2MmMwIC4zNC0uMDguNjYtLjIzLjk0TDE2IDEzLjE3VjEyaC0xVjh6bS00IC4xNyAyIDJWNmgybC0zLTQtMyA0aDJ2Mi4xN3pNMTMgMTZ2Mi4yOGMuNi4zNCAxIC45OCAxIDEuNzIgMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yYzAtLjc0LjQtMS4zNyAxLTEuNzJWMTZIOGMtMS4xMSAwLTItLjg5LTItMnYtMi4yOGMtLjYtLjM0LTEtLjk4LTEtMS43MiAwLS41OS4yNi0xLjEzLjY4LTEuNDlMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNDEgMS40MS02LjYtNi42SDEzem0tMi0ydi0uMTdsLTIuNTEtMi41MWMtLjE0LjE2LS4zMS4yOS0uNDkuNFYxNGgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVXNiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA3djRoMXYyaC0zVjVoMmwtMy00LTMgNGgydjhIOHYtMi4wN2MuNy0uMzcgMS4yLTEuMDggMS4yLTEuOTMgMC0xLjIxLS45OS0yLjItMi4yLTIuMlM0LjggNy43OSA0LjggOWMwIC44NS41IDEuNTYgMS4yIDEuOTNWMTNjMCAxLjExLjg5IDIgMiAyaDN2My4wNWMtLjcxLjM3LTEuMiAxLjEtMS4yIDEuOTVhMi4yIDIuMiAwIDAgMCA0LjQgMGMwLS44NS0uNDktMS41OC0xLjItMS45NVYxNWgzYzEuMTEgMCAyLS44OSAyLTJ2LTJoMVY3aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2FsbHBhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRoN1YySDRjLTEuMSAwLTIgLjktMiAydjdoMlY0em02IDktNCA1aDEybC0zLTQtMi4wMyAyLjcxTDEwIDEzem03LTQuNWMwLS44My0uNjctMS41LTEuNS0xLjVTMTQgNy42NyAxNCA4LjVzLjY3IDEuNSAxLjUgMS41UzE3IDkuMzMgMTcgOC41ek0yMCAyaC03djJoN3Y3aDJWNGMwLTEuMS0uOS0yLTItMnptMCAxOGgtN3YyaDdjMS4xIDAgMi0uOSAyLTJ2LTdoLTJ2N3pNNCAxM0gydjdjMCAxLjEuOSAyIDIgMmg3di0ySDR2LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTggMTRIMjJoLS4wMnpNNS4zNSAxM2MxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40Ljk4IDMuMzEgMXYtMmMtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMDkgMS0zLjMzIDEtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMDkgMS0zLjMzIDEtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMDkgMS0zLjMzIDF2MmMxLjkgMCAyLjE3LTEgMy4zNS0xem0xMy4zMiAyYy0xLjk1IDAtMi4wOSAxLTMuMzMgMS0xLjE5IDAtMS40Mi0xLTMuMzMtMS0xLjk1IDAtMi4xIDEtMy4zNCAxLTEuMjQgMC0xLjM4LTEtMy4zMy0xLTEuOTUgMC0yLjEgMS0zLjM0IDF2MmMxLjk1IDAgMi4xMS0xIDMuMzQtMSAxLjI0IDAgMS4zOCAxIDMuMzMgMSAxLjk1IDAgMi4xLTEgMy4zNC0xIDEuMTkgMCAxLjQyIDEgMy4zMyAxIDEuOTQgMCAyLjA5LTEgMy4zMy0xIDEuMTkgMCAxLjQyIDEgMy4zMyAxdi0yYy0xLjI0IDAtMS4zOC0xLTMuMzMtMXpNNS4zNSA5YzEuMTkgMCAxLjQyIDEgMy4zMyAxIDEuOTUgMCAyLjA5LTEgMy4zMy0xIDEuMTkgMCAxLjQyIDEgMy4zMyAxIDEuOTUgMCAyLjA5LTEgMy4zMy0xIDEuMTkgMCAxLjQuOTggMy4zMSAxVjhjLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xQzMuMzggNyAzLjI0IDggMiA4djJjMS45IDAgMi4xNy0xIDMuMzUtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZGdldHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2LjY2IDQuNTIgMi44MyAyLjgzLTIuODMgMi44My0yLjgzLTIuODMgMi44My0yLjgzTTkgNXY0SDVWNWg0bTEwIDEwdjRoLTR2LTRoNE05IDE1djRINXYtNGg0bTcuNjYtMTMuMzFMMTEgNy4zNCAxNi42NiAxM2w1LjY2LTUuNjYtNS42Ni01LjY1ek0xMSAzSDN2OGg4VjN6bTEwIDEwaC04djhoOHYtOHptLTEwIDBIM3Y4aDh2LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpMUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUzIDE3LjQ2IDEyIDIxbC0zLjUzLTMuNTRjLjktLjkgMi4xNS0xLjQ2IDMuNTMtMS40NnMyLjYzLjU2IDMuNTMgMS40NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZmkyQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMGMzLjAzIDAgNS43OCAxLjIzIDcuNzYgMy4yMmwtMi4xMiAyLjEyQTcuOTY3IDcuOTY3IDAgMCAwIDEyIDEzYy0yLjIgMC00LjIuOS01LjY0IDIuMzVsLTIuMTItMi4xMkM2LjIyIDExLjIzIDguOTcgMTAgMTIgMTB6bTAgNmMtMS4zOCAwLTIuNjMuNTYtMy41MyAxLjQ2TDEyIDIxbDMuNTMtMy41NEE0Ljk4IDQuOTggMCAwIDAgMTIgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpQ2FsbGluZzMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjQ5IDQuNWMxLjc5IDAgMy40Mi43MyA0LjU5IDEuOTFsMS4wNi0xLjA2QTcuOTQgNy45NCAwIDAgMCAxNi40OSAzYy0yLjIxIDAtNC4yMS45LTUuNjYgMi4zNGwxLjA2IDEuMDZhNi41NDUgNi41NDUgMCAwIDEgNC42LTEuOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNDkgNmMtMS4zOCAwLTIuNjMuNTYtMy41NCAxLjQ2bDEuMDYgMS4wNmMuNjMtLjYzIDEuNTEtMS4wMyAyLjQ3LTEuMDNzMS44NC4zOSAyLjQ3IDEuMDNsMS4wNi0xLjA2QTQuOTQgNC45NCAwIDAgMCAxNi40OSA2ek0xNi40OSA5Yy0uNTUgMC0xLjA1LjIyLTEuNDEuNTlMMTYuNDkgMTFsMS40MS0xLjQxYy0uMzYtLjM3LS44Ni0uNTktMS40MS0uNTl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjIgMTQuODctMy42Ny0uNzNjLS41LS4xLS44My4yLS45LjI3bC0yLjUyIDIuNWMtMi41LTEuNDMtNC41Ny0zLjUtNi02bDIuNS0yLjUyYy4yMy0uMjQuMzMtLjU3LjI3LS45TDkuMTMgMy44Yy0uMDktLjQ2LS41LS44LS45OC0uOEg0Yy0uNTYgMC0xLjAzLjQ3LTEgMS4wMy4xNyAyLjg5IDEuMDUgNS42IDIuNDMgNy45NyAxLjU4IDIuNzMgMy44NSA0Ljk5IDYuNTcgNi41NyAyLjM3IDEuMzcgNS4wOCAyLjI2IDcuOTcgMi40My41NS4wMyAxLjAzLS40MyAxLjAzLTF2LTQuMTVjMC0uNDgtLjM0LS44OS0uOC0uOTh6TTUuMSA1aDIuMjNsLjQ3IDIuMzVMNi4xNyA5Yy0uNTQtMS4zLS45LTIuNjMtMS4wNy00ek0xOSAxOC45Yy0xLjM3LS4xOC0yLjctLjUzLTQtMS4wN2wxLjY1LTEuNjMgMi4zNS40N3YyLjIzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2lmaUNoYW5uZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAzYy0yLjUxIDAtMy43NyA1LjYxLTQuNCAxMC41N0MxMC43OSAxMC42NiA5LjYxIDggOCA4IDQuNDMgOCAzIDIxIDMgMjFoMi4wMWMuNjEtNS4yNyAyLTkuODIgMi45OS0xMC44Ny45OCAxLjA1IDIuMzggNS42MSAyLjk5IDEwLjg3SDEzYy41LTIuNTMgMi02IDMtNnMyLjUgMy41MyAzIDZoMnMtLjUtMTgtNS0xOHptMCAxMGMtLjk5IDAtMS44Mi42Mi0yLjUgMS41LjU3LTQuNzcgMS41NC04LjYyIDIuNS05LjQ0Ljk3LjgxIDEuOTEgNC42NyAyLjQ5IDkuNDNDMTcuODEgMTMuNjIgMTYuOTggMTMgMTYgMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpRmluZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZjNC4xNCAwIDcuODggMS42OCAxMC41OSA0LjM5TDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxbDEuNDEtMS40MkwyLjkzIDkuMDhDNS40NSA3LjE2IDguNTkgNiAxMiA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNGMwLTIuMjQtMS43Ni00LTQtNHMtNCAxLjc2LTQgNCAxLjc2IDQgNCA0Yy43NSAwIDEuNDQtLjIxIDIuMDMtLjU2TDIxLjU5IDIwIDIzIDE4LjU5bC0yLjU2LTIuNTZjLjM1LS41OS41Ni0xLjI4LjU2LTIuMDN6bS00IDJjLTEuMTIgMC0yLS44OC0yLTJzLjg4LTIgMi0yIDIgLjg4IDIgMi0uODggMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTggMTEgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThsNi4zNSA2LjM2TDEyIDIxbDMuMDUtMy4wNVYxNWMwLS40NS4wOS0uODguMjMtMS4yOS41NC0xLjU3IDIuMDEtMi43MSAzLjc3LTIuNzFoMi45M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTZ2LTFjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXptLTEgMGgtMnYtMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZmlQYXNzd29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTI0IDguOTgtMi4xMiAyLjEzQzE5LjM1IDguNTcgMTUuODUgNyAxMiA3cy03LjM1IDEuNTctOS44OCA0LjExTDAgOC45OEMzLjA3IDUuOSA3LjMxIDQgMTIgNHM4LjkzIDEuOSAxMiA0Ljk4ek00LjI0IDEzLjIybDIuMTIgMi4xMkE3Ljk2NyA3Ljk2NyAwIDAgMSAxMiAxM2MyLjIgMCA0LjIuOSA1LjY0IDIuMzVsMi4xMi0yLjEyQzE3Ljc4IDExLjIzIDE1LjAzIDEwIDEyIDEwYy0zLjAzIDAtNS43OCAxLjIzLTcuNzYgMy4yMnpNMjQgMjB2M2MwIC41NS0uNDUgMS0xIDFoLTRjLS41NSAwLTEtLjQ1LTEtMXYtM2MwLS41NS40NS0xIDEtMXYtMWMwLTEuMS45LTIgMi0yczIgLjkgMiAydjFjLjU1IDAgMSAuNDUgMSAxem0tMi0yYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjFoMnYtMXptLTEwLTJjLTEuMzggMC0yLjYzLjU2LTMuNTMgMS40NkwxMiAyMWwzLjUzLTMuNTRBNC45OCA0Ljk4IDAgMCAwIDEyIDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2lmaVRldGhlcmluZ0Vycm9yUm91bmRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN2MtMy4zMSAwLTYgMi42OS02IDYgMCAxLjY2LjY4IDMuMTUgMS43NiA0LjI0bDEuNDItMS40MkEzLjkzNCAzLjkzNCAwIDAgMSA4IDEzYzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAxLjExLS40NSAyLjEtMS4xOCAyLjgybDEuNDIgMS40MkE2LjAwMyA2LjAwMyAwIDAgMCAxOCAxM2MwLTMuMzEtMi42OS02LTYtNnptMC00QzYuNDggMyAyIDcuNDggMiAxM2MwIDIuNzYgMS4xMiA1LjI2IDIuOTMgNy4wN2wxLjQyLTEuNDJBNy45NCA3Ljk0IDAgMCAxIDQgMTNjMC00LjQyIDMuNTgtOCA4LTggMi41MyAwIDQuNzggMS4xNyA2LjI0IDNoMi40MkMxOC45MyA1LjAxIDE1LjcgMyAxMiAzem0wIDhjLTEuMSAwLTIgLjktMiAyIDAgLjU1LjIzIDEuMDUuNTkgMS40MS4zNi4zNi44Ni41OSAxLjQxLjU5czEuMDUtLjIzIDEuNDEtLjU5Yy4zNi0uMzYuNTktLjg2LjU5LTEuNDEgMC0xLjEtLjktMi0yLTJ6bTgtMWgydjZoLTJ2LTZ6bTAgOGgydjJoLTJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpVGV0aGVyaW5nRXJyb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdjLTMuMzEgMC02IDIuNjktNiA2IDAgMS42Ni42OCAzLjE1IDEuNzYgNC4yNGwxLjQyLTEuNDJBMy45MzQgMy45MzQgMCAwIDEgOCAxM2MwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0YzAgMS4xMS0uNDUgMi4xLTEuMTggMi44MmwxLjQyIDEuNDJBNi4wMDMgNi4wMDMgMCAwIDAgMTggMTNjMC0zLjMxLTIuNjktNi02LTZ6bTAtNEM2LjQ4IDMgMiA3LjQ4IDIgMTNjMCAyLjc2IDEuMTIgNS4yNiAyLjkzIDcuMDdsMS40Mi0xLjQyQTcuOTQgNy45NCAwIDAgMSA0IDEzYzAtNC40MiAzLjU4LTggOC04IDIuNTMgMCA0Ljc4IDEuMTcgNi4yNCAzaDIuNDJDMTguOTMgNS4wMSAxNS43IDMgMTIgM3ptMCA4Yy0xLjEgMC0yIC45LTIgMiAwIC41NS4yMyAxLjA1LjU5IDEuNDEuMzYuMzYuODYuNTkgMS40MS41OXMxLjA1LS4yMyAxLjQxLS41OWMuMzYtLjM2LjU5LS44Ni41OS0xLjQxIDAtMS4xLS45LTItMi0yem04LTFoMnY2aC0ydi02em0wIDhoMnYyaC0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2lmaVRldGhlcmluZ09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi44MSAyLjgxIDEuMzkgNC4yMmwyLjY5IDIuNjlBOS45NTggOS45NTggMCAwIDAgMiAxM2MwIDIuNzYgMS4xMiA1LjI2IDIuOTMgNy4wN2wxLjQyLTEuNDJhNy45NTcgNy45NTcgMCAwIDEtLjg0LTEwLjMxbDEuNDMgMS40M2E2LjAwMyA2LjAwMyAwIDAgMCAuODIgNy40N2wxLjQyLTEuNDJBMy45MzQgMy45MzQgMCAwIDEgOCAxM2MwLS42My4xNS0xLjIzLjQxLTEuNzZsMS42MSAxLjYxYzAgLjA1LS4wMi4xLS4wMi4xNSAwIC41NS4yMyAxLjA1LjU5IDEuNDEuMzYuMzYuODYuNTkgMS40MS41OS4wNSAwIC4xLS4wMS4xNi0uMDJsNy42MiA3LjYyIDEuNDEtMS40MUwyLjgxIDIuODF6TTE3LjcgMTQuODdjLjE5LS41OS4zLTEuMjIuMy0xLjg3IDAtMy4zMS0yLjY5LTYtNi02LS42NSAwLTEuMjguMS0xLjg3LjNsMS43MSAxLjcxQzExLjg5IDkgMTEuOTUgOSAxMiA5YzIuMjEgMCA0IDEuNzkgNCA0IDAgLjA1IDAgLjExLS4wMS4xNmwxLjcxIDEuNzF6TTEyIDVjNC40MiAwIDggMy41OCA4IDggMCAxLjIyLS4yNyAyLjM3LS43NyAzLjRsMS40OSAxLjQ5QTkuOTUzIDkuOTUzIDAgMCAwIDIyIDEzYzAtNS41Mi00LjQ4LTEwLTEwLTEwLTEuNzggMC0zLjQ0LjQ2LTQuODkgMS4yOGwxLjQ4IDEuNDhDOS42MyA1LjI3IDEwLjc4IDUgMTIgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZmlUZXRoZXJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDExYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNiAyYzAtMy4zMS0yLjY5LTYtNi02cy02IDIuNjktNiA2YzAgMi4yMiAxLjIxIDQuMTUgMyA1LjE5bDEtMS43NGMtMS4xOS0uNy0yLTEuOTctMi0zLjQ1IDAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAxLjQ4LS44MSAyLjc1LTIgMy40NWwxIDEuNzRjMS43OS0xLjA0IDMtMi45NyAzLTUuMTl6TTEyIDNDNi40OCAzIDIgNy40OCAyIDEzYzAgMy43IDIuMDEgNi45MiA0Ljk5IDguNjVsMS0xLjczQzUuNjEgMTguNTMgNCAxNS45NiA0IDEzYzAtNC40MiAzLjU4LTggOC04czggMy41OCA4IDhjMCAyLjk2LTEuNjEgNS41My00IDYuOTJsMSAxLjczYzIuOTktMS43MyA1LTQuOTUgNS04LjY1IDAtNS41Mi00LjQ4LTEwLTEwLTEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOUg1VjVoOVYzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTloLTJ2OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTNoMnY0aC0yek03IDEwaDJ2N0g3ek0xMSA3aDJ2MTBoLTJ6TTE5IDVWM2gtMnYyaC0ydjJoMnYyaDJWN2gyVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRDb21tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA0YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRsNCA0VjR6bS0yIDEzLjE3TDE4LjgzIDE2SDRWNGgxNnYxMy4xN3pNMTMgNWgtMnY0SDd2Mmg0djRoMnYtNGg0VjloLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGlnbkhvcml6b250YWxDZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyaDJ2NWg4djNoLTh2NGg1djNoLTV2NWgtMnYtNUg2di0zaDV2LTRIM1Y3aDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGlnbkhvcml6b250YWxMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAyMkgyVjJoMnYyMHpNMjIgN0g2djNoMTZWN3ptLTYgN0g2djNoMTB2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGlnbkhvcml6b250YWxSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJoMnYyMGgtMlYyek0yIDEwaDE2VjdIMnYzem02IDdoMTB2LTNIOHYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWxpZ25WZXJ0aWNhbEJvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDIySDJ2LTJoMjB2MnpNMTAgMkg3djE2aDNWMnptNyA2aC0zdjEwaDNWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFsaWduVmVydGljYWxDZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMWgtNVY2aC0zdjVoLTRWM0g3djhIMS44NHYySDd2OGgzdi04aDR2NWgzdi01aDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGlnblZlcnRpY2FsVG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMnYySDJWMmgyMHpNNyAyMmgzVjZIN3YxNnptNy02aDNWNmgtM3YxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFyZWFDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3IDctNS00LTUgNy00LTN2MTNoMThWN2gtNHptMiA5Ljk1LTctNS40NUw4IDE3bC0zLTIuNFYxMWwyLjQ0IDEuODMgNC45Ni02Ljk1TDE2LjMgOUgxOXY3Ljk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXR0YWNoRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSA2djExLjVjMCAyLjIxLTEuNzkgNC00IDRzLTQtMS43OS00LTRWNWEyLjUgMi41IDAgMCAxIDUgMHYxMC41YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xVjZIMTB2OS41YTIuNSAyLjUgMCAwIDAgNSAwVjVjMC0yLjIxLTEuNzktNC00LTRTNyAyLjc5IDcgNXYxMi41YzAgMy4wNCAyLjQ2IDUuNSA1LjUgNS41czUuNS0yLjQ2IDUuNS01LjVWNmgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXR0YWNoTW9uZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjggMTAuOWMtMi4yNy0uNTktMy0xLjItMy0yLjE1IDAtMS4wOSAxLjAxLTEuODUgMi43LTEuODUgMS43OCAwIDIuNDQuODUgMi41IDIuMWgyLjIxYy0uMDctMS43Mi0xLjEyLTMuMy0zLjIxLTMuODFWM2gtM3YyLjE2Yy0xLjk0LjQyLTMuNSAxLjY4LTMuNSAzLjYxIDAgMi4zMSAxLjkxIDMuNDYgNC43IDQuMTMgMi41LjYgMyAxLjQ4IDMgMi40MSAwIC42OS0uNDkgMS43OS0yLjcgMS43OS0yLjA2IDAtMi44Ny0uOTItMi45OC0yLjFoLTIuMmMuMTIgMi4xOSAxLjc2IDMuNDIgMy42OCAzLjgzVjIxaDN2LTIuMTVjMS45NS0uMzcgMy41LTEuNSAzLjUtMy41NSAwLTIuODQtMi40My0zLjgxLTQuNy00LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvR3JhcGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4wNiA5Ljk0IDEyIDlsMi4wNi0uOTRMMTUgNmwuOTQgMi4wNkwxOCA5bC0yLjA2Ljk0TDE1IDEybC0uOTQtMi4wNnpNNCAxNGwuOTQtMi4wNkw3IDExbC0yLjA2LS45NEw0IDhsLS45NCAyLjA2TDEgMTFsMi4wNi45NEw0IDE0em00LjUtNSAxLjA5LTIuNDFMMTIgNS41IDkuNTkgNC40MSA4LjUgMiA3LjQxIDQuNDEgNSA1LjVsMi40MSAxLjA5TDguNSA5em0tNCAxMS41IDYtNi4wMSA0IDRMMjMgOC45M2wtMS40MS0xLjQxLTcuMDkgNy45Ny00LTRMMyAxOWwxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmFyQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDloNHYxMUg0ek0xNiAxM2g0djdoLTR6TTEwIDRoNHYxNmgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvcmRlckFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzdjE4aDE4VjNIM3ptOCAxNkg1di02aDZ2NnptMC04SDVWNWg2djZ6bTggOGgtNnYtNmg2djZ6bTAtOGgtNlY1aDZ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvcmRlckJvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMUg3djJoMnYtMnptNCA0aC0ydjJoMnYtMnpNOSAzSDd2MmgyVjN6bTQgOGgtMnYyaDJ2LTJ6TTUgM0gzdjJoMlYzem04IDRoLTJ2MmgyVjd6bTQgNGgtMnYyaDJ2LTJ6bS00LThoLTJ2MmgyVjN6bTQgMGgtMnYyaDJWM3ptMiAxMGgydi0yaC0ydjJ6bTAgNGgydi0yaC0ydjJ6TTUgN0gzdjJoMlY3em0xNC00djJoMlYzaC0yem0wIDZoMlY3aC0ydjJ6TTUgMTFIM3YyaDJ2LTJ6TTMgMjFoMTh2LTJIM3Yyem0yLTZIM3YyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb3JkZXJDbGVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA1aDJWM0g3djJ6bTAgOGgydi0ySDd2MnptMCA4aDJ2LTJIN3Yyem00LTRoMnYtMmgtMnYyem0wIDRoMnYtMmgtMnYyem0tOCAwaDJ2LTJIM3Yyem0wLTRoMnYtMkgzdjJ6bTAtNGgydi0ySDN2MnptMC00aDJWN0gzdjJ6bTAtNGgyVjNIM3Yyem04IDhoMnYtMmgtMnYyem04IDRoMnYtMmgtMnYyem0wLTRoMnYtMmgtMnYyem0wIDhoMnYtMmgtMnYyem0wLTEyaDJWN2gtMnYyem0tOCAwaDJWN2gtMnYyem04LTZ2MmgyVjNoLTJ6bS04IDJoMlYzaC0ydjJ6bTQgMTZoMnYtMmgtMnYyem0wLThoMnYtMmgtMnYyem0wLThoMlYzaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb3JkZXJDb2xvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2LjgxIDguOTQtMy43NS0zLjc1TDQgMTQuMjVWMThoMy43NWw5LjA2LTkuMDZ6TTYgMTZ2LS45Mmw3LjA2LTcuMDYuOTIuOTJMNi45MiAxNkg2ek0xOS43MSA2LjA0YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zNC0yLjM0YTEuMDAxIDEuMDAxIDAgMCAwLTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6TTIgMjBoMjB2NEgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9yZGVySG9yaXpvbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyMWgydi0ySDN2MnpNNSA3SDN2MmgyVjd6TTMgMTdoMnYtMkgzdjJ6bTQgNGgydi0ySDd2MnpNNSAzSDN2MmgyVjN6bTQgMEg3djJoMlYzem04IDBoLTJ2MmgyVjN6bS00IDRoLTJ2MmgyVjd6bTAtNGgtMnYyaDJWM3ptNiAxNGgydi0yaC0ydjJ6bS04IDRoMnYtMmgtMnYyem0tOC04aDE4di0ySDN2MnpNMTkgM3YyaDJWM2gtMnptMCA2aDJWN2gtMnYyem0tOCA4aDJ2LTJoLTJ2MnptNCA0aDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvcmRlcklubmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIxaDJ2LTJIM3Yyem00IDBoMnYtMkg3djJ6TTUgN0gzdjJoMlY3ek0zIDE3aDJ2LTJIM3Yyek05IDNIN3YyaDJWM3pNNSAzSDN2MmgyVjN6bTEyIDBoLTJ2MmgyVjN6bTIgNmgyVjdoLTJ2MnptMC02djJoMlYzaC0yem0tNCAxOGgydi0yaC0ydjJ6TTEzIDNoLTJ2OEgzdjJoOHY4aDJ2LThoOHYtMmgtOFYzem02IDE4aDJ2LTJoLTJ2MnptMC00aDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvcmRlckxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDIxaDJ2LTJoLTJ2MnptMC00aDJ2LTJoLTJ2MnptMC0xMmgyVjNoLTJ2MnptMCA0aDJWN2gtMnYyem0wIDRoMnYtMmgtMnYyem0tNCA4aDJ2LTJIN3Yyek03IDVoMlYzSDd2MnptMCA4aDJ2LTJIN3Yyem0tNCA4aDJWM0gzdjE4ek0xOSA5aDJWN2gtMnYyem0tNCAxMmgydi0yaC0ydjJ6bTQtNGgydi0yaC0ydjJ6bTAtMTR2MmgyVjNoLTJ6bTAgMTBoMnYtMmgtMnYyem0wIDhoMnYtMmgtMnYyem0tNC04aDJ2LTJoLTJ2MnptMC04aDJWM2gtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9yZGVyT3V0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDdoLTJ2MmgyVjd6bTAgNGgtMnYyaDJ2LTJ6bTQgMGgtMnYyaDJ2LTJ6TTMgM3YxOGgxOFYzSDN6bTE2IDE2SDVWNWgxNHYxNHptLTYtNGgtMnYyaDJ2LTJ6bS00LTRIN3YyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb3JkZXJSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyMWgydi0ySDd2MnpNMyA1aDJWM0gzdjJ6bTQgMGgyVjNIN3Yyem0wIDhoMnYtMkg3djJ6bS00IDhoMnYtMkgzdjJ6bTggMGgydi0yaC0ydjJ6bS04LThoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMC04aDJWN0gzdjJ6bTggOGgydi0yaC0ydjJ6bTQtNGgydi0yaC0ydjJ6bTQtMTB2MThoMlYzaC0yem0tNCAxOGgydi0yaC0ydjJ6bTAtMTZoMlYzaC0ydjJ6bS00IDhoMnYtMmgtMnYyem0wLThoMlYzaC0ydjJ6bTAgNGgyVjdoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvcmRlclN0eWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyMWgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6TTcgMjFoMnYtMkg3djJ6bTQgMGgydi0yaC0ydjJ6bTgtNGgydi0yaC0ydjJ6bTAtNGgydi0yaC0ydjJ6TTMgM3YxOGgyVjVoMTZWM0gzem0xNiA2aDJWN2gtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9yZGVyVG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDIxaDJ2LTJIN3Yyem0wLThoMnYtMkg3djJ6bTQgMGgydi0yaC0ydjJ6bTAgOGgydi0yaC0ydjJ6bS04LTRoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMC04aDJ2LTJIM3Yyem0wLTRoMlY3SDN2MnptOCA4aDJ2LTJoLTJ2MnptOC04aDJWN2gtMnYyem0wIDRoMnYtMmgtMnYyek0zIDN2MmgxOFYzSDN6bTE2IDE0aDJ2LTJoLTJ2MnptLTQgNGgydi0yaC0ydjJ6TTExIDloMlY3aC0ydjJ6bTggMTJoMnYtMmgtMnYyem0tNC04aDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvcmRlclZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDloMlY3SDN2MnptMC00aDJWM0gzdjJ6bTQgMTZoMnYtMkg3djJ6bTAtOGgydi0ySDd2MnptLTQgMGgydi0ySDN2MnptMCA4aDJ2LTJIM3Yyem0wLTRoMnYtMkgzdjJ6TTcgNWgyVjNIN3Yyem0xMiAxMmgydi0yaC0ydjJ6bS04IDRoMlYzaC0ydjE4em04IDBoMnYtMmgtMnYyem0wLThoMnYtMmgtMnYyem0wLTEwdjJoMlYzaC0yem0wIDZoMlY3aC0ydjJ6bS00LTRoMlYzaC0ydjJ6bTAgMTZoMnYtMmgtMnYyem0wLThoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnViYmxlQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTBjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem04LjAxLTFjLTEuNjUgMC0zIDEuMzUtMyAzczEuMzUgMyAzIDMgMy0xLjM1IDMtMy0xLjM1LTMtMy0zem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpNMTYuNSAzQzEzLjQ3IDMgMTEgNS40NyAxMSA4LjVzMi40NyA1LjUgNS41IDUuNVMyMiAxMS41MyAyMiA4LjUgMTkuNTMgMyAxNi41IDN6bTAgOWMtMS45MyAwLTMuNS0xLjU3LTMuNS0zLjVTMTQuNTcgNSAxNi41IDUgMjAgNi41NyAyMCA4LjUgMTguNDMgMTIgMTYuNSAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbmRsZXN0aWNrQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDRIN3YySDV2MTJoMnYyaDJ2LTJoMlY2SDlWNHptMCAxMkg3VjhoMnY4ek0xOSA4aC0yVjRoLTJ2NGgtMnY3aDJ2NWgydi01aDJWOHptLTIgNWgtMnYtM2gydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGVja2xpc3RSdGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA3SDJ2Mmg5Vjd6bTAgOEgydjJoOXYtMnptNS4zNC00TDEyLjggNy40NmwxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNEwyMiA1LjM0IDE2LjM0IDExem0wIDgtMy41NC0zLjU0IDEuNDEtMS40MSAyLjEyIDIuMTIgNC4yNC00LjI0TDIyIDEzLjM0IDE2LjM0IDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hlY2tsaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgN2gtOXYyaDlWN3ptMCA4aC05djJoOXYtMnpNNS41NCAxMSAyIDcuNDZsMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjQgMS40MSAxLjQxTDUuNTQgMTF6bTAgOEwyIDE1LjQ2bDEuNDEtMS40MSAyLjEyIDIuMTIgNC4yNC00LjI0IDEuNDEgMS40MUw1LjU0IDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGF0YUFycmF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgNHYyaDN2MTJoLTN2Mmg1VjR6TTQgMjBoNXYtMkg2VjZoM1Y0SDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXRhT2JqZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA3djJjMCAuNTUtLjQ1IDEtMSAxSDJ2NGgxYy41NSAwIDEgLjQ1IDEgMXYyYzAgMS42NSAxLjM1IDMgMyAzaDN2LTJIN2MtLjU1IDAtMS0uNDUtMS0xdi0yYzAtMS4zLS44NC0yLjQyLTItMi44M3YtLjM0QzUuMTYgMTEuNDIgNiAxMC4zIDYgOVY3YzAtLjU1LjQ1LTEgMS0xaDNWNEg3QzUuMzUgNCA0IDUuMzUgNCA3ek0yMSAxMGMtLjU1IDAtMS0uNDUtMS0xVjdjMC0xLjY1LTEuMzUtMy0zLTNoLTN2MmgzYy41NSAwIDEgLjQ1IDEgMXYyYzAgMS4zLjg0IDIuNDIgMiAyLjgzdi4zNGMtMS4xNi40MS0yIDEuNTItMiAyLjgzdjJjMCAuNTUtLjQ1IDEtMSAxaC0zdjJoM2MxLjY1IDAgMy0xLjM1IDMtM3YtMmMwLS41NS40NS0xIDEtMWgxdi00aC0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJhZ0hhbmRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDlINHYyaDE2Vjl6TTQgMTVoMTZ2LTJINHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJhdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4Ljg1IDEwLjM5IDEuMDYtMS4wNmMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzTDE4LjUgNS4wOWMtLjc4LS43OC0yLjA1LS43OC0yLjgzIDBsLTEuMDYgMS4wNiA0LjI0IDQuMjR6bS00LjI0IDEuNDJMNy40MSAxOUg2di0xLjQxbDcuMTktNy4xOSAxLjQyIDEuNDF6bS0xLjQyLTQuMjVMNCAxNi43NlYyMWg0LjI0bDkuMTktOS4xOS00LjI0LTQuMjV6TTE5IDE3LjVjMCAyLjE5LTIuNTQgMy41LTUgMy41LS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFjMS41NCAwIDMtLjczIDMtMS41IDAtLjQ3LS40OC0uODctMS4yMy0xLjJsMS40OC0xLjQ4YzEuMDcuNjMgMS43NSAxLjQ3IDEuNzUgMi42OHpNNC41OCAxMy4zNUMzLjYxIDEyLjc5IDMgMTIuMDYgMyAxMWMwLTEuOCAxLjg5LTIuNjMgMy41Ni0zLjM2QzcuNTkgNy4xOCA5IDYuNTYgOSA2YzAtLjQxLS43OC0xLTItMS0xLjI2IDAtMS44LjYxLTEuODMuNjQtLjM1LjQxLS45OC40Ni0xLjQuMTJhLjk5Mi45OTIgMCAwIDEtLjE1LTEuMzhDMy43MyA0LjI0IDQuNzYgMyA3IDNzNCAxLjMyIDQgM2MwIDEuODctMS45MyAyLjcyLTMuNjQgMy40N0M2LjQyIDkuODggNSAxMC41IDUgMTFjMCAuMzEuNDMuNiAxLjA3Ljg2bC0xLjQ5IDEuNDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFZGl0Tm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTBoMTF2Mkgzdi0yem0wLTJoMTFWNkgzdjJ6bTAgOGg3di0ySDN2MnptMTUuMDEtMy4xMy43MS0uNzFhLjk5Ni45OTYgMCAwIDEgMS40MSAwbC43MS43MWMuMzkuMzkuMzkgMS4wMiAwIDEuNDFsLS43MS43MS0yLjEyLTIuMTJ6bS0uNzEuNzEtNS4zIDUuM1YyMWgyLjEybDUuMy01LjMtMi4xMi0yLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0QWxpZ25DZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTV2MmgxMHYtMkg3em0tNCA2aDE4di0ySDN2MnptMC04aDE4di0ySDN2MnptNC02djJoMTBWN0g3ek0zIDN2MmgxOFYzSDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRBbGlnbkp1c3RpZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMjFoMTh2LTJIM3Yyem0wLTRoMTh2LTJIM3Yyem0wLTRoMTh2LTJIM3Yyem0wLTRoMThWN0gzdjJ6bTAtNnYyaDE4VjNIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdEFsaWduTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTVIM3YyaDEydi0yem0wLThIM3YyaDEyVjd6TTMgMTNoMTh2LTJIM3Yyem0wIDhoMTh2LTJIM3Yyek0zIDN2MmgxOFYzSDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRBbGlnblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIxaDE4di0ySDN2MnptNi00aDEydi0ySDl2MnptLTYtNGgxOHYtMkgzdjJ6bTYtNGgxMlY3SDl2MnpNMyAzdjJoMThWM0gzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0Qm9sZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNiAxMC43OWMuOTctLjY3IDEuNjUtMS43NyAxLjY1LTIuNzkgMC0yLjI2LTEuNzUtNC00LTRIN3YxNGg3LjA0YzIuMDkgMCAzLjcxLTEuNyAzLjcxLTMuNzkgMC0xLjUyLS44Ni0yLjgyLTIuMTUtMy40MnpNMTAgNi41aDNjLjgzIDAgMS41LjY3IDEuNSAxLjVzLS42NyAxLjUtMS41IDEuNWgtM3YtM3ptMy41IDlIMTB2LTNoMy41Yy44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRDbGVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOFY1SDYuMzlsMyAzaDEuODNsLS41NSAxLjI4IDIuMDkgMi4xTDE0LjIxIDh6TTMuNDEgNC44NiAyIDYuMjdsNi45NyA2Ljk3TDYuNSAxOWgzbDEuNTctMy42NkwxNi43MyAyMWwxLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRDb2xvckZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41NiA4Ljk0IDcuNjIgMCA2LjIxIDEuNDFsMi4zOCAyLjM4LTUuMTUgNS4xNWExLjQ5IDEuNDkgMCAwIDAgMCAyLjEybDUuNSA1LjVjLjI5LjI5LjY4LjQ0IDEuMDYuNDRzLjc3LS4xNSAxLjA2LS40NGw1LjUtNS41Yy41OS0uNTguNTktMS41MyAwLTIuMTJ6TTUuMjEgMTAgMTAgNS4yMSAxNC43OSAxMEg1LjIxek0xOSAxMS41cy0yIDIuMTctMiAzLjVjMCAxLjEuOSAyIDIgMnMyLS45IDItMmMwLTEuMzMtMi0zLjUtMi0zLjV6TTIgMjBoMjB2NEgydi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0Q29sb3JSZXNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNi4zNmMxLjUzIDIgMy4wOCA0LjQzIDMuNzEgNi4yNGwyLjIzIDIuMjNjLjAzLS4yNy4wNi0uNTUuMDYtLjgzIDAtMy45OC02LTEwLjgtNi0xMC44cy0xLjE4IDEuMzUtMi41IDMuMTlsMS40NCAxLjQ0Yy4zNC0uNTEuNy0xIDEuMDYtMS40N3pNNS40MSA1LjE0IDQgNi41NWwzLjMyIDMuMzJDNi41NSAxMS4zMyA2IDEyLjc5IDYgMTRjMCAzLjMxIDIuNjkgNiA2IDYgMS41MiAwIDIuOS0uNTcgMy45NS0xLjVsMi42MyAyLjYzTDIwIDE5LjcyIDUuNDEgNS4xNHpNMTIgMThjLTIuMjEgMC00LTEuNzktNC00IDAtLjY5LjMyLTEuNjIuODEtMi42NGw1LjcyIDUuNzJjLS43LjU2LTEuNTcuOTItMi41My45MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdENvbG9yVGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMjBoMjB2NEgydi00em0zLjQ5LTNoMi40MmwxLjI3LTMuNThoNS42NUwxNi4wOSAxN2gyLjQyTDEzLjI1IDNoLTIuNUw1LjQ5IDE3em00LjQyLTUuNjEgMi4wMy01Ljc5aC4xMmwyLjAzIDUuNzlIOS45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdEluZGVudERlY3JlYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxN2gxMHYtMkgxMXYyem0tOC01IDQgNFY4bC00IDR6bTAgOWgxOHYtMkgzdjJ6TTMgM3YyaDE4VjNIM3ptOCA2aDEwVjdIMTF2MnptMCA0aDEwdi0ySDExdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRJbmRlbnRJbmNyZWFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyMWgxOHYtMkgzdjJ6TTMgOHY4bDQtNC00LTR6bTggOWgxMHYtMkgxMXYyek0zIDN2MmgxOFYzSDN6bTggNmgxMFY3SDExdjJ6bTAgNGgxMHYtMkgxMXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0SXRhbGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0djNoMi4yMWwtMy40MiA4SDZ2M2g4di0zaC0yLjIxbDMuNDItOEgxOFY0aC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0TGluZVNwYWNpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgN2gyLjVMNSAzLjUgMS41IDdINHYxMEgxLjVMNSAyMC41IDguNSAxN0g2Vjd6bTQtMnYyaDEyVjVIMTB6bTAgMTRoMTJ2LTJIMTB2MnptMC02aDEydi0ySDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRMaXN0QnVsbGV0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTAuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTAtNmMtLjgzIDAtMS41LjY3LTEuNSAxLjVTMy4xNyA3LjUgNCA3LjUgNS41IDYuODMgNS41IDYgNC44MyA0LjUgNCA0LjV6bTAgMTJjLS44MyAwLTEuNS42OC0xLjUgMS41cy42OCAxLjUgMS41IDEuNSAxLjUtLjY4IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41ek03IDE5aDE0di0ySDd2MnptMC02aDE0di0ySDd2MnptMC04djJoMTRWNUg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0TGlzdE51bWJlcmVkUnRsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxN2gydi41aC0xdjFoMXYuNWgtMnYxaDN2LTRoLTN2MXptMS05aDFWNGgtMnYxaDF2M3ptLTEgM2gxLjhMMTggMTMuMXYuOWgzdi0xaC0xLjhsMS44LTIuMVYxMGgtM3Yxek0yIDVoMTR2MkgyVjV6bTAgMTJoMTR2Mkgydi0yem0wLTZoMTR2Mkgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0TGlzdE51bWJlcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE3aDJ2LjVIM3YxaDF2LjVIMnYxaDN2LTRIMnYxem0xLTloMVY0SDJ2MWgxdjN6bS0xIDNoMS44TDIgMTMuMXYuOWgzdi0xSDMuMkw1IDEwLjlWMTBIMnYxem01LTZ2MmgxNFY1SDd6bTAgMTRoMTR2LTJIN3Yyem0wLTZoMTR2LTJIN3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0UGFpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRWM2MwLS41NS0uNDUtMS0xLTFINWMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xVjZoMXY0SDl2MTFjMCAuNTUuNDUgMSAxIDFoMmMuNTUgMCAxLS40NSAxLTF2LTloOFY0aC0zem0tMiAySDZWNGgxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0UXVvdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjYyIDE4aC01LjI0bDItNEgxM1Y2aDh2Ny4yNEwxOC42MiAxOHptLTItMmguNzZMMTkgMTIuNzZWOGgtNHY0aDMuNjJsLTIgNHptLTggMkgzLjM4bDItNEgzVjZoOHY3LjI0TDguNjIgMTh6bS0yLTJoLjc2TDkgMTIuNzZWOEg1djRoMy42MmwtMiA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0U2hhcGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyA3VjFoLTZ2Mkg3VjFIMXY2aDJ2MTBIMXY2aDZ2LTJoMTB2Mmg2di02aC0yVjdoMnpNMyAzaDJ2MkgzVjN6bTIgMThIM3YtMmgydjJ6bTEyLTJIN3YtMkg1VjdoMlY1aDEwdjJoMnYxMGgtMnYyem00IDJoLTJ2LTJoMnYyek0xOSA1VjNoMnYyaC0yem0tNS4yNyA5aC0zLjQ5bC0uNzMgMkg3Ljg5bDMuNC05aDEuNGwzLjQxIDloLTEuNjNsLS43NC0yem0tMy4wNC0xLjI2aDIuNjFMMTIgOC45MWwtMS4zMSAzLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0U2l6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0djNoNXYxMmgzVjdoNVY0SDl6bS02IDhoM3Y3aDN2LTdoM1Y5SDN2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdFN0cmlrZXRocm91Z2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE5aDR2LTNoLTR2M3pNNSA0djNoNXYzaDRWN2g1VjRINXpNMyAxNGgxOHYtMkgzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRUZXh0ZGlyZWN0aW9uTFRvUiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0djRjLTEuMSAwLTItLjktMi0ycy45LTIgMi0ybTgtMkg5QzYuNzkgMiA1IDMuNzkgNSA2czEuNzkgNCA0IDR2NWgyVjRoMnYxMWgyVjRoMlYyem0wIDEydjNINXYyaDEydjNsNC00LTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdFRleHRkaXJlY3Rpb25SVG9MIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0djRjLTEuMSAwLTItLjktMi0ycy45LTIgMi0ybTgtMmgtOEM3Ljc5IDIgNiAzLjc5IDYgNnMxLjc5IDQgNCA0djVoMlY0aDJ2MTFoMlY0aDJWMnpNOCAxNGwtNCA0IDQgNHYtM2gxMnYtMkg4di0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0VW5kZXJsaW5lZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTdjMy4zMSAwIDYtMi42OSA2LTZWM2gtMi41djhjMCAxLjkzLTEuNTcgMy41LTMuNSAzLjVTOC41IDEyLjkzIDguNSAxMVYzSDZ2OGMwIDMuMzEgMi42OSA2IDYgNnptLTcgMnYyaDE0di0ySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGdW5jdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRINnYybDYuNSA2TDYgMTh2MmgxMnYtM2gtN2w1LTUtNS01aDdWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhlaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDYuOTloM0wxMiAzIDggNi45OWgzdjEwLjAySDhMMTIgMjFsNC0zLjk5aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGV4YWdvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjIgM0g2LjhsLTUuMiA5IDUuMiA5aDEwLjRsNS4yLTktNS4yLTl6bS0xLjE1IDE2aC04LjFsLTQuMDQtNyA0LjA0LTdoOC4wOWw0LjA0IDctNC4wMyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGlnaGxpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNiAxNCAzIDN2NWg2di01bDMtM1Y5SDZ2NXptMi0zaDh2Mi4xN2wtMyAzVjIwaC0ydi0zLjgzbC0zLTNWMTF6bTMtOWgydjNoLTJ6TTMuNTAyIDUuODc0IDQuOTE2IDQuNDZsMi4xMjIgMi4xMi0xLjQxNCAxLjQxNXptMTMuNDU4LjcwOCAyLjEyMy0yLjEyIDEuNDEzIDEuNDE2LTIuMTIzIDIuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb3Jpem9udGFsRGlzdHJpYnV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMjJIMlYyaDJ2MjB6TTIyIDJoLTJ2MjBoMlYyem0tOC41IDVoLTN2MTBoM1Y3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG9yaXpvbnRhbFJ1bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNCAxMWgxNnYySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnNlcnRDaGFydE91dGxpbmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0em0yIDJINVY1aDE0djE0em0wLTE2SDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluc2VydENoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6TTcgMTBoMnY3SDd6bTQtM2gydjEwaC0yem00IDZoMnY0aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW5zZXJ0Q29tbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNHYxMy4xN0wxOC44MyAxNkg0VjRoMTZtMC0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRsNCA0VjRjMC0xLjEtLjktMi0yLTJ6bS0yIDEwSDZ2MmgxMnYtMnptMC0zSDZ2MmgxMlY5em0wLTNINnYyaDEyVjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnNlcnREcml2ZUZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnpNNiAyMFY0aDd2NWg1djExSDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnNlcnRFbW90aWNvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0zLjUtOWMuODMgMCAxLjUtLjY3IDEuNS0xLjVTMTYuMzMgOCAxNS41IDggMTQgOC42NyAxNCA5LjVzLjY3IDEuNSAxLjUgMS41em0tNyAwYy44MyAwIDEuNS0uNjcgMS41LTEuNVM5LjMzIDggOC41IDggNyA4LjY3IDcgOS41IDcuNjcgMTEgOC41IDExem0zLjUgNi41YzIuMzMgMCA0LjMxLTEuNDYgNS4xMS0zLjVINi44OWMuOCAyLjA0IDIuNzggMy41IDUuMTEgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW5zZXJ0SW52aXRhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjloMTR2MTB6bTAtMTJINVY1aDE0djJ6bS0yIDVoLTV2NWg1di01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW5zZXJ0TGluayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy45IDEyYzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xaDRWN0g3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1aDR2LTEuOUg3Yy0xLjcxIDAtMy4xLTEuMzktMy4xLTMuMXpNOCAxM2g4di0ySDh2MnptOS02aC00djEuOWg0YzEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xcy0xLjM5IDMuMS0zLjEgMy4xaC00VjE3aDRjMi43NiAwIDUtMi4yNCA1LTVzLTIuMjQtNS01LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnNlcnRQYWdlQnJlYWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyMEg2di0zSDR2M2MwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi0zaC0ydjN6TTYgNGg3djVoNXYyaDJWOGwtNi02SDZjLTEuMSAwLTIgLjktMiAydjdoMlY0ek05IDEzaDZ2Mkg5ek0xNyAxM2g2djJoLTZ6TTEgMTNoNnYySDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnNlcnRQaG90byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQuODYgOC44Ni0zIDMuODdMOSAxMy4xNCA2IDE3aDEybC0zLjg2LTUuMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaW5lQXhpcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDcuNDMtMS40MS0xLjQxLTQuMDMgNC41M0w5LjUgNCAyIDExLjUxbDEuNSAxLjUgNi4xNC02LjE1IDUuNTkgNS4xOC0xLjczIDEuOTUtNC00TDIgMTcuNSAzLjUgMTlsNi02LjAxIDQgNCAzLjE5LTMuNTkgMy45IDMuNjFMMjIgMTUuNmwtMy45OC0zLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaW5lYXJTY2FsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjUgOS41Yy0xLjAzIDAtMS45LjYyLTIuMjkgMS41aC0yLjkyYy0uMzktLjg4LTEuMjYtMS41LTIuMjktMS41cy0xLjkuNjItMi4yOSAxLjVINi43OWMtLjM5LS44OC0xLjI2LTEuNS0yLjI5LTEuNWEyLjUgMi41IDAgMCAwIDAgNWMxLjAzIDAgMS45LS42MiAyLjI5LTEuNWgyLjkyYy4zOS44OCAxLjI2IDEuNSAyLjI5IDEuNXMxLjktLjYyIDIuMjktMS41aDIuOTJjLjM5Ljg4IDEuMjYgMS41IDIuMjkgMS41YTIuNSAyLjUgMCAwIDAgMC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFyZ2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzdjE4aDE4VjNIM3ptMTYgMTZINVY1aDE0djE0ek0xMSA3aDJ2MmgtMlY3ek03IDdoMnYySDdWN3ptOCAwaDJ2MmgtMlY3em0tOCA0aDJ2Mkg3di0yem00IDBoMnYyaC0ydi0yem00IDBoMnYyaC0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVyZ2VUeXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAyMC40MSAxOC40MSAxOSAxNSAxNS41OSAxMy41OSAxNyAxNyAyMC40MXpNNy41IDhIMTF2NS41OUw1LjU5IDE5IDcgMjAuNDFsNi02VjhoMy41TDEyIDMuNSA3LjUgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vZGVDb21tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNy4xNyAxOC44MyAxNkg0VjRoMTZ2MTMuMTd6TTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNGw0IDRWNGMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vZGVFZGl0T3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNVYyMXptMi0yLjkyIDkuMDYtOS4wNi45Mi45Mkw1LjkyIDE5SDV2LS45MnpNMTguMzcgMy4yOWEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzYS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zNC0yLjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9kZUVkaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjVWMjF6bTItMi45MiA5LjA2LTkuMDYuOTIuOTJMNS45MiAxOUg1di0uOTJ6TTE4LjM3IDMuMjlhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTIuMzQtMi4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjA2IDkuMDIuOTIuOTJMNS45MiAxOUg1di0uOTJsOS4wNi05LjA2TTE3LjY2IDNjLS4yNSAwLS41MS4xLS43LjI5bC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTIuMzQtMi4zNGMtLjItLjItLjQ1LS4yOS0uNzEtLjI5em0tMy42IDMuMTlMMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vbmV0aXphdGlvbk9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptLjMxLTguODZjLTEuNzctLjQ1LTIuMzQtLjk0LTIuMzQtMS42NyAwLS44NC43OS0xLjQzIDIuMS0xLjQzIDEuMzggMCAxLjkuNjYgMS45NCAxLjY0aDEuNzFjLS4wNS0xLjM0LS44Ny0yLjU3LTIuNDktMi45N1Y1SDEwLjl2MS42OWMtMS41MS4zMi0yLjcyIDEuMy0yLjcyIDIuODEgMCAxLjc5IDEuNDkgMi42OSAzLjY2IDMuMjEgMS45NS40NiAyLjM0IDEuMTUgMi4zNCAxLjg3IDAgLjUzLS4zOSAxLjM5LTIuMSAxLjM5LTEuNiAwLTIuMjMtLjcyLTIuMzItMS42NEg4LjA0Yy4xIDEuNyAxLjM2IDIuNjYgMi44NiAyLjk3VjE5aDIuMzR2LTEuNjdjMS41Mi0uMjkgMi43Mi0xLjE2IDIuNzMtMi43Ny0uMDEtMi4yLTEuOS0yLjk2LTMuNjYtMy40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vbmV5T2ZmQ3NyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgNi45YzEuNzggMCAyLjQ0Ljg1IDIuNSAyLjFoMi4yMWMtLjA3LTEuNzItMS4xMi0zLjMtMy4yMS0zLjgxVjNoLTN2Mi4xNmMtLjM5LjA4LS43NS4yMS0xLjEuMzZsMS41MSAxLjUxYy4zMi0uMDguNjktLjEzIDEuMDktLjEzek01LjQ3IDMuOTIgNC4wNiA1LjMzIDcuNSA4Ljc3YzAgMi4wOCAxLjU2IDMuMjIgMy45MSAzLjkxbDMuNTEgMy41MWMtLjM0LjQ5LTEuMDUuOTEtMi40Mi45MS0yLjA2IDAtMi44Ny0uOTItMi45OC0yLjFoLTIuMmMuMTIgMi4xOSAxLjc2IDMuNDIgMy42OCAzLjgzVjIxaDN2LTIuMTVjLjk2LS4xOCAxLjgzLS41NSAyLjQ2LTEuMTJsMi4yMiAyLjIyIDEuNDEtMS40MUw1LjQ3IDMuOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb25leU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSA2LjljMS43OCAwIDIuNDQuODUgMi41IDIuMWgyLjIxYy0uMDctMS43Mi0xLjEyLTMuMy0zLjIxLTMuODFWM2gtM3YyLjE2Yy0uMzkuMDgtLjc1LjIxLTEuMS4zNmwxLjUxIDEuNTFjLjMyLS4wOC42OS0uMTMgMS4wOS0uMTN6TTUuNDcgMy45MiA0LjA2IDUuMzMgNy41IDguNzdjMCAyLjA4IDEuNTYgMy4yMiAzLjkxIDMuOTFsMy41MSAzLjUxYy0uMzQuNDktMS4wNS45MS0yLjQyLjkxLTIuMDYgMC0yLjg3LS45Mi0yLjk4LTIuMWgtMi4yYy4xMiAyLjE5IDEuNzYgMy40MiAzLjY4IDMuODNWMjFoM3YtMi4xNWMuOTYtLjE4IDEuODMtLjU1IDIuNDYtMS4xMmwyLjIyIDIuMjIgMS40MS0xLjQxTDUuNDcgMy45MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdmVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMWMwIDIuNDUgMS43NiA0LjQ3IDQuMDggNC45MWwtMS40OS0xLjQ5TDcgMTNsNCA0LjAxTDcgMjFsLTEuNDEtMS40MSAxLjU4LTEuNTh2LS4wNkE3LjAwNyA3LjAwNyAwIDAgMSAxIDExYzAtMy44NyAzLjEzLTcgNy03aDN2Mkg4Yy0yLjc2IDAtNSAyLjI0LTUgNXpNMjIgMTFWNGgtOXY3aDl6bS0yLTJoLTVWNmg1djN6TTEzIDEzaDl2N2gtOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdmVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTNjMC0yLjQ1IDEuNzYtNC40NyA0LjA4LTQuOTFsLTEuNDkgMS41TDcgMTFsNC00LjAxTDcgMyA1LjU5IDQuNDFsMS41OCAxLjU4di4wNkE3LjAwNyA3LjAwNyAwIDAgMCAxIDEzYzAgMy44NyAzLjEzIDcgNyA3aDN2LTJIOGMtMi43NiAwLTUtMi4yNC01LTV6TTEzIDEzdjdoOXYtN2gtOXptNyA1aC01di0zaDV2M3pNMTMgNGg5djdoLTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNdWx0aWxpbmVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgNi45Mi0xLjQxLTEuNDEtMi44NSAzLjIxQzE1LjY4IDYuNCAxMi44MyA1IDkuNjEgNSA2LjcyIDUgNC4wNyA2LjE2IDIgOGwxLjQyIDEuNDJDNS4xMiA3LjkzIDcuMjcgNyA5LjYxIDdjMi43NCAwIDUuMDkgMS4yNiA2Ljc3IDMuMjRsLTIuODggMy4yNC00LTRMMiAxNi45OWwxLjUgMS41IDYtNi4wMSA0IDQgNC4wNS00LjU1Yy43NSAxLjM1IDEuMjUgMi45IDEuNDQgNC41NUgyMWMtLjIyLTIuMy0uOTUtNC4zOS0yLjA0LTYuMTRMMjIgNi45MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMS4wMSAzIDExdjJoMTh6TTMgMTZoMTJ2Mkgzek0yMSA2SDN2Mi4wMUwyMSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTnVtYmVycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjUgMTAgLjUtMmgtNGwxLTRoLTJsLTEgNGgtNGwxLTRoLTJMOSA4SDVsLS41IDJoNGwtMSA0aC00TDMgMTZoNGwtMSA0aDJsMS00aDRsLTEgNGgybDEtNGg0bC41LTJoLTRsMS00aDR6bS03IDRoLTRsMS00aDRsLTEgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhZGRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDV2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAyem0xNiAxNEg1VjVoMTR2MTR6TTExIDdoMnYyaC0yVjd6TTcgN2gydjJIN1Y3em04IDBoMnYyaC0yVjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZW50YWdvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjYzIDkuNzggMTYuNTYgMTlINy40NEw0LjM3IDkuNzggMTIgNC40NGw3LjYzIDUuMzR6TTIgOWw0IDEyaDEybDQtMTItMTAtN0wyIDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaWVDaGFydE91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyem0xIDIuMDdjMy42MS40NSA2LjQ4IDMuMzMgNi45MyA2LjkzSDEzVjQuMDd6TTQgMTJjMC00LjA2IDMuMDctNy40NCA3LTcuOTN2MTUuODdjLTMuOTMtLjUtNy0zLjg4LTctNy45NHptOSA3LjkzVjEzaDYuOTNBOC4wMDIgOC4wMDIgMCAwIDEgMTMgMTkuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaWVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNy45MyA5SDEzVjQuMDdjMy42MS40NSA2LjQ4IDMuMzIgNi45MyA2Ljkzek00IDEyYzAtNC4wNyAzLjA2LTcuNDQgNy03LjkzdjE1Ljg2Yy0zLjk0LS40OS03LTMuODYtNy03Ljkzem05IDcuOTNWMTNoNi45M0E4LjAwMiA4LjAwMiAwIDAgMSAxMyAxOS45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvbHlsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTZ2MS4yNmwtNi0zdi0zLjE3TDExLjcgOEgxNlYyaC02djQuOUw3LjMgMTBIM3Y2aDVsNyAzLjVWMjJoNnYtNmgtNnpNMTIgNGgydjJoLTJWNHpNNyAxNEg1di0yaDJ2MnptMTIgNmgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb3N0QWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTkuMjJINVY3aDdWNUg1Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi03aC0ydjcuMjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJoLTJ2M2gtM2MuMDEuMDEgMCAyIDAgMmgzdjIuOTljLjAxLjAxIDIgMCAyIDBWN2gzVjVoLTNWMnpNNyA5aDh2Mkg3ek03IDEydjJoOHYtMmgtM3pNNyAxNWg4djJIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVB1Ymxpc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNGgxNHYySDV6bTAgMTBoNHY2aDZ2LTZoNGwtNy03LTcgN3ptOC0ydjZoLTJ2LTZIOS44M0wxMiA5LjgzIDE0LjE3IDEySDEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXVlcnlTdGF0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljg4IDE4LjQ3Yy40NC0uNy43LTEuNTEuNy0yLjM5IDAtMi40OS0yLjAxLTQuNS00LjUtNC41cy00LjUgMi4wMS00LjUgNC41IDIuMDEgNC41IDQuNDkgNC41Yy44OCAwIDEuNy0uMjYgMi4zOS0uN0wyMS41OCAyMyAyMyAyMS41OGwtMy4xMi0zLjExem0tMy44LjExYTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1em0tLjM2LTguNWMtLjc0LjAyLTEuNDUuMTgtMi4xLjQ1bC0uNTUtLjgzLTMuOCA2LjE4LTMuMDEtMy41Mi0zLjYzIDUuODFMMSAxN2w1LTggMyAzLjVMMTMgNmwyLjcyIDQuMDh6bTIuNTkuNWMtLjY0LS4yOC0xLjMzLS40NS0yLjA1LS40OUwyMS4zOCAyIDIzIDMuMThsLTQuNjkgNy40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVjdGFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0djE2aDIwVjRIMnptMTggMTRINFY2aDE2djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NhdHRlclBsb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMThjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0em0wLTZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem00LTJjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0em0wLTZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem01LjYgMTcuNmMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0LTEuNzkgNC00IDR6bTAtNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY2hlbWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA5djJoLTNWOUg4LjVWN0gxMVYxSDR2NmgyLjV2Mkg0djZoMi41djJINHY2aDd2LTZIOC41di0ySDExdi0yaDN2Mmg3VjloLTd6TTYgM2gzdjJINlYzem0zIDE4SDZ2LTJoM3Yyem0wLThINnYtMmgzdjJ6bTEwIDBoLTN2LTJoM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVsNC00IDQgNCA2LTZ2NnptMC04LjUtNiA2LTQtNC00IDRWNWgxNHY1LjV6TTEzLjUgOVY2SDEydjZoMS41em0zLjcgMy0yLTMgMi0zaC0xLjdsLTIgMyAyIDN6TTExIDEwLjVIOC41di0uNzVIMTFWNkg3djEuNWgyLjV2Ljc1SDdWMTJoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNoYXBlTGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTFjMi43NiAwIDUtMi4yNCA1LTVTOC43NiAxIDYgMSAxIDMuMjQgMSA2czIuMjQgNSA1IDV6bTAtOGMxLjY1IDAgMyAxLjM1IDMgM1M3LjY1IDkgNiA5IDMgNy42NSAzIDZzMS4zNS0zIDMtM3pNMjEgMTRoLTVjLTEuMSAwLTIgLjktMiAydjVjMCAxLjEuOSAyIDIgMmg1YzEuMSAwIDItLjkgMi0ydi01YzAtMS4xLS45LTItMi0yem0wIDdoLTV2LTVoNXY1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy43MSA3LjdjLjQuMTkuODMuMyAxLjI5LjMgMS42NSAwIDMtMS4zNSAzLTNzLTEuMzUtMy0zLTMtMyAxLjM1LTMgM2MwIC40Ni4xMS44OS4zIDEuMjlMNi4yOSAxNi4zYy0uNC0uMTktLjgzLS4zLTEuMjktLjMtMS42NSAwLTMgMS4zNS0zIDNzMS4zNSAzIDMgMyAzLTEuMzUgMy0zYzAtLjQ2LS4xMS0uODktLjMtMS4yOUwxNy43MSA3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG9ydFRleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDloMTZ2Mkg0Vjl6bTAgNGgxMHYySDR2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG93Q2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMuNSAxOC40OSA2LTYuMDEgNCA0TDIyIDYuOTJsLTEuNDEtMS40MS03LjA5IDcuOTctNC00TDIgMTYuOTlsMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwYWNlQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5djRINlY5SDR2NmgxNlY5aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzdjE4aDE4VjNIM3ptMTYgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RhY2tlZExpbmVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIgMTkuOTkgNy41LTcuNTEgNCA0IDcuMDktNy45N0wyMiA5LjkybC04LjUgOS41Ni00LTQtNiA2LjAxLTEuNS0xLjV6bTEuNS00LjUgNi02LjAxIDQgNEwyMiAzLjkybC0xLjQxLTEuNDEtNy4wOSA3Ljk3LTQtNEwyIDEzLjk5bDEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdHJpa2V0aHJvdWdoUyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMjQgOC43NWMtLjI2LS40OC0uMzktMS4wMy0uMzktMS42NyAwLS42MS4xMy0xLjE2LjQtMS42Ny4yNi0uNS42My0uOTMgMS4xMS0xLjI5YTUuNzMgNS43MyAwIDAgMSAxLjctLjgzYy42Ni0uMTkgMS4zOS0uMjkgMi4xOC0uMjkuODEgMCAxLjU0LjExIDIuMjEuMzQuNjYuMjIgMS4yMy41NCAxLjY5Ljk0LjQ3LjQuODMuODggMS4wOCAxLjQzcy4zOCAxLjE1LjM4IDEuODFoLTMuMDFjMC0uMzEtLjA1LS41OS0uMTUtLjg1LS4wOS0uMjctLjI0LS40OS0uNDQtLjY4LS4yLS4xOS0uNDUtLjMzLS43NS0uNDQtLjMtLjEtLjY2LS4xNi0xLjA2LS4xNi0uMzkgMC0uNzQuMDQtMS4wMy4xM3MtLjUzLjIxLS43Mi4zNmMtLjE5LjE2LS4zNC4zNC0uNDQuNTUtLjEuMjEtLjE1LjQzLS4xNS42NiAwIC40OC4yNS44OC43NCAxLjIxLjM4LjI1Ljc3LjQ4IDEuNDEuN0g3LjM5Yy0uMDUtLjA4LS4xMS0uMTctLjE1LS4yNXpNMjEgMTJ2LTJIM3YyaDkuNjJjLjE4LjA3LjQuMTQuNTUuMi4zNy4xNy42Ni4zNC44Ny41MXMuMzUuMzYuNDMuNTdjLjA3LjIuMTEuNDMuMTEuNjkgMCAuMjMtLjA1LjQ1LS4xNC42Ni0uMDkuMi0uMjMuMzgtLjQyLjUzLS4xOS4xNS0uNDIuMjYtLjcxLjM1LS4yOS4wOC0uNjMuMTMtMS4wMS4xMy0uNDMgMC0uODMtLjA0LTEuMTgtLjEzcy0uNjYtLjIzLS45MS0uNDJjLS4yNS0uMTktLjQ1LS40NC0uNTktLjc1cy0uMjUtLjc2LS4yNS0xLjIxSDYuNGMwIC41NS4wOCAxLjEzLjI0IDEuNThzLjM3Ljg1LjY1IDEuMjFjLjI4LjM1LjYuNjYuOTguOTIuMzcuMjYuNzguNDggMS4yMi42NS40NC4xNy45LjMgMS4zOC4zOS40OC4wOC45Ni4xMyAxLjQ0LjEzLjggMCAxLjUzLS4wOSAyLjE4LS4yOHMxLjIxLS40NSAxLjY3LS43OWMuNDYtLjM0LjgyLS43NyAxLjA3LTEuMjdzLjM4LTEuMDcuMzgtMS43MWMwLS42LS4xLTEuMTQtLjMxLTEuNjEtLjA1LS4xMS0uMTEtLjIzLS4xNy0uMzNIMjFWMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdWJzY3JpcHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxOGgtMnYxaDN2MWgtNHYtMmMwLS41NS40NS0xIDEtMWgydi0xaC0zdi0xaDNjLjU1IDAgMSAuNDUgMSAxdjFjMCAuNTUtLjQ1IDEtMSAxek01Ljg4IDE4aDIuNjZsMy40LTUuNDJoLjEybDMuNCA1LjQyaDIuNjZsLTQuNjUtNy4yN0wxNy44MSA0aC0yLjY4bC0zLjA3IDQuOTloLS4xMkw4Ljg1IDRINi4xOWw0LjMyIDYuNzNMNS44OCAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1cGVyc2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgN2gtMnYxaDN2MWgtNFY3YzAtLjU1LjQ1LTEgMS0xaDJWNWgtM1Y0aDNjLjU1IDAgMSAuNDUgMSAxdjFjMCAuNTUtLjQ1IDEtMSAxek01Ljg4IDIwaDIuNjZsMy40LTUuNDJoLjEybDMuNCA1LjQyaDIuNjZsLTQuNjUtNy4yN0wxNy44MSA2aC0yLjY4bC0zLjA3IDQuOTloLS4xMkw4Ljg1IDZINi4xOWw0LjMyIDYuNzNMNS44OCAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhYmxlQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDJ2M0g1VjVoMTV6bS01IDE0aC01di05aDV2OXpNNSAxMGgzdjlINXYtOXptMTIgOXYtOWgzdjloLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUYWJsZVJvd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAydjNINVY1aDE0em0wIDV2NEg1di00aDE0ek01IDE5di0zaDE0djNINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRleHREZWNyZWFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS45OSAxOWgyLjQybDEuMjctMy41OGg1LjY1TDExLjU5IDE5aDIuNDJMOC43NSA1aC0yLjVMLjk5IDE5em00LjQyLTUuNjFMNy40NCA3LjZoLjEybDIuMDMgNS43OUg1LjQxek0yMyAxMXYyaC04di0yaDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUZXh0RmllbGRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDR2M2g1djEyaDNWN2g1VjRoLTEzem0xOSA1aC05djNoM3Y3aDN2LTdoM1Y5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGV4dEluY3JlYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjk5IDE5aDIuNDJsMS4yNy0zLjU4aDUuNjVMMTEuNTkgMTloMi40Mkw4Ljc1IDVoLTIuNUwuOTkgMTl6bTQuNDItNS42MUw3LjQ0IDcuNmguMTJsMi4wMyA1Ljc5SDUuNDF6TTIwIDExaDN2MmgtM3YzaC0ydi0zaC0zdi0yaDNWOGgydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaXRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA0djNoNS41djEyaDNWN0gxOVY0SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUeXBlU3BlY2ltZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRIOFY0aDEydjEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4xOSAxMi4yaDMuNjNsLjggMi4zaDEuNTZsLTMuMzgtOWgtMS42bC0zLjM4IDloMS41NmwuODEtMi4zem0xLjc3LTUuMDNoLjA4bDEuMzEgMy43MmgtMi42OWwxLjMtMy43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZlcnRpY2FsQWxpZ25Cb3R0b20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDEzaC0zVjNoLTJ2MTBIOGw0IDQgNC00ek00IDE5djJoMTZ2LTJINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZlcnRpY2FsQWxpZ25DZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTloM3Y0aDJ2LTRoM2wtNC00LTQgNHptOC0xNGgtM1YxaC0ydjRIOGw0IDQgNC00ek00IDExdjJoMTZ2LTJINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZlcnRpY2FsQWxpZ25Ub3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTFoM3YxMGgyVjExaDNsLTQtNC00IDR6TTQgM3YyaDE2VjNINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZlcnRpY2FsRGlzdHJpYnV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDJ2MkgyVjJoMjB6TTcgMTAuNXYzaDEwdi0zSDd6TTIgMjB2MmgyMHYtMkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV3JhcFRleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTloNnYtMkg0djJ6TTIwIDVINHYyaDE2VjV6bS0zIDZINHYyaDEzLjI1YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMkgxNXYtMmwtMyAzIDMgM3YtMmgyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXBwcm92YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE2djZoMTZ2LTZjMC0xLjEtLjktMi0yLTJINmMtMS4xIDAtMiAuOS0yIDJ6bTE0IDJINnYtMmgxMnYyek0xMiAyQzkuMjQgMiA3IDQuMjQgNyA3bDUgNyA1LTdjMC0yLjc2LTIuMjQtNS01LTV6bTAgOUw5IDdjMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM2wtMyA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXR0YWNoRW1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0zIDYgOCA1IDgtNXYzaDJWNGMwLTEuMS0uOS0yLTItMkgzYy0xLjEgMC0xLjk5LjktMS45OSAyTDEgMTZjMCAxLjEuOSAyIDIgMmgxMHYtMkgzVjZ6bTE2LTItOCA1LTgtNWgxNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTR2NGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJ2LTQuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVYxOGgydi00LjVhMi41IDIuNSAwIDAgMC01IDBWMThjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNHYtNGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF0dGFjaG1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgMTZIN2MtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNGgxMi41YTIuNSAyLjUgMCAwIDEgMCA1SDljLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFoOS41VjkuNUg5YTIuNSAyLjUgMCAwIDAgMCA1aDEwLjVjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTRIN2MtMy4wNCAwLTUuNSAyLjQ2LTUuNSA1LjVzMi40NiA1LjUgNS41IDUuNWgxMS41VjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xvdWRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em00LjI5LTkuODFhNC4zNzMgNC4zNzMgMCAwIDAtOC4xNy0xLjE2QTMuNDgzIDMuNDgzIDAgMCAwIDUgMTIuNUM1IDE0LjQzIDYuNTcgMTYgOC41IDE2aDcuNThjMS42MSAwIDIuOTItMS4zMSAyLjkyLTIuOTIgMC0xLjU0LTEuMi0yLjc5LTIuNzEtMi44OXpNMTYgMTRIOC41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNy42NyAxMSA4LjUgMTFoLjlsLjQ5LTEuMDVhMi4zNzcgMi4zNzcgMCAwIDEgNC40NC42M2wuMjggMS40MkgxNmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3VkRG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMzUgMTAuMDRBNy40OSA3LjQ5IDAgMCAwIDEyIDRDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNEE1Ljk5NCA1Ljk5NCAwIDAgMCAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xOSAxOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNCAwLTIuMDUgMS41My0zLjc2IDMuNTYtMy45N2wxLjA3LS4xMS41LS45NUE1LjQ2OSA1LjQ2OSAwIDAgMSAxMiA2YzIuNjIgMCA0Ljg4IDEuODYgNS4zOSA0LjQzbC4zIDEuNSAxLjUzLjExQTIuOTggMi45OCAwIDAgMSAyMiAxNWMwIDEuNjUtMS4zNSAzLTMgM3ptLTktMy44Mi0yLjA5LTIuMDlMNi41IDEzLjUgMTAgMTdsNi4wMS02LjAxLTEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3VkRG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDRBNS45OTQgNS45OTQgMCAwIDAgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTkgMThINmMtMi4yMSAwLTQtMS43OS00LTQgMC0yLjA1IDEuNTMtMy43NiAzLjU2LTMuOTdsMS4wNy0uMTEuNS0uOTVBNS40NjkgNS40NjkgMCAwIDEgMTIgNmMyLjYyIDAgNC44OCAxLjg2IDUuMzkgNC40M2wuMyAxLjUgMS41My4xMUEyLjk4IDIuOTggMCAwIDEgMjIgMTVjMCAxLjY1LTEuMzUgMy0zIDN6bS01LjU1LThoLTIuOXYzSDhsNCA0IDQtNGgtMi41NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3VkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCAxNWMwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NkE3LjQ5IDcuNDkgMCAwIDAgMTIgNGMtMS4zMyAwLTIuNTcuMzYtMy42NS45N2wxLjQ5IDEuNDlDMTAuNTEgNi4xNyAxMS4yMyA2IDEyIDZjMy4wNCAwIDUuNSAyLjQ2IDUuNSA1LjV2LjVIMTlhMi45OTYgMi45OTYgMCAwIDEgMS43OSA1LjRsMS40MSAxLjQxYzEuMDktLjkyIDEuOC0yLjI3IDEuOC0zLjgxek00LjQxIDMuODYgMyA1LjI3bDIuNzcgMi43N2gtLjQyQTUuOTk0IDUuOTk0IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTEuNzNsMiAyIDEuNDEtMS40MUw0LjQxIDMuODZ6TTYgMThjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTRoMS43M2w4IDhINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3VkUXVldWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDRBNS45OTQgNS45OTQgMCAwIDAgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTkgMThINmMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNGguNzFDNy4zNyA3LjY5IDkuNDggNiAxMiA2YzMuMDQgMCA1LjUgMi40NiA1LjUgNS41di41SDE5YzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xvdWRTeW5jIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuNSAxNC45OGMtLjAyIDAtLjAzIDAtLjA1LjAxQTMuNDkgMy40OSAwIDAgMCAxOCAxMmMtMS40IDAtMi42LjgzLTMuMTYgMi4wMkEyLjk4OCAyLjk4OCAwIDAgMCAxMiAxN2MwIDEuNjYgMS4zNCAzIDMgM2w2LjUtLjAyYTIuNSAyLjUgMCAwIDAgMC01em0uMDEgMy4wMkgxNWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMWgxLjI1di0uMjVjMC0uOTcuNzgtMS43NSAxLjc1LTEuNzVzMS43NS43OCAxLjc1IDEuNzVWMTdoMS43NmMuMjggMCAuNS4yMi41LjUtLjAxLjI3LS4yMy41LS41LjV6TTEwIDQuMjZ2Mi4wOUM3LjY3IDcuMTggNiA5LjM5IDYgMTJjMCAxLjc3Ljc4IDMuMzQgMiA0LjQ0VjE0aDJ2Nkg0di0yaDIuNzNBNy45NDIgNy45NDIgMCAwIDEgNCAxMmMwLTMuNzMgMi41NS02Ljg1IDYtNy43NHpNMjAgNmgtMi43M2E3Ljk4IDcuOTggMCAwIDEgMi42NiA1aC0yLjAyYy0uMjMtMS4zNi0uOTMtMi41NS0xLjkxLTMuNDRWMTBoLTJWNGg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbG91ZFVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMzUgMTAuMDRBNy40OSA3LjQ5IDAgMCAwIDEyIDRDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNEE1Ljk5NCA1Ljk5NCAwIDAgMCAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xOSAxOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNCAwLTIuMDUgMS41My0zLjc2IDMuNTYtMy45N2wxLjA3LS4xMS41LS45NUE1LjQ2OSA1LjQ2OSAwIDAgMSAxMiA2YzIuNjIgMCA0Ljg4IDEuODYgNS4zOSA0LjQzbC4zIDEuNSAxLjUzLjExQTIuOTggMi45OCAwIDAgMSAyMiAxNWMwIDEuNjUtMS4zNSAzLTMgM3pNOCAxM2gyLjU1djNoMi45di0zSDE2bC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbG91ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMyLjYyIDAgNC44OCAxLjg2IDUuMzkgNC40M2wuMyAxLjUgMS41My4xMUEyLjk4IDIuOTggMCAwIDEgMjIgMTVjMCAxLjY1LTEuMzUgMy0zIDNINmMtMi4yMSAwLTQtMS43OS00LTQgMC0yLjA1IDEuNTMtMy43NiAzLjU2LTMuOTdsMS4wNy0uMTEuNS0uOTVBNS40NjkgNS40NjkgMCAwIDEgMTIgNm0wLTJDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNEE1Ljk5NCA1Ljk5NCAwIDAgMCAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2QTcuNDkgNy40OSAwIDAgMCAxMiA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3JlYXRlTmV3Rm9sZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0wIDEySDRWNmg1LjE3bDIgMkgyMHYxMHptLTgtNGgydjJoMnYtMmgydi0yaC0ydi0yaC0ydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaWZmZXJlbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMjNINGMtMS4xIDAtMi0uOS0yLTJWN2gydjE0aDE0djJ6TTE0LjUgN1Y1aC0ydjJoLTJ2MmgydjJoMlY5aDJWN2gtMnptMiA2aC02djJoNnYtMnpNMTUgMUg4Yy0xLjEgMC0xLjk5LjktMS45OSAyTDYgMTdjMCAxLjEuODkgMiAxLjk5IDJIMTljMS4xIDAgMi0uOSAyLTJWN2wtNi02em00IDE2SDhWM2g2LjE3TDE5IDcuODNWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb3dubG9hZERvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMThoMTR2Mkg1di0yem00LjYtMi43TDUgMTAuN2wyLTEuOSAyLjYgMi42TDE3IDRsMiAyLTkuNCA5LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb3dubG9hZEZvck9mZmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwIDEwLTQuNDkgMTAtMTBTMTcuNTEgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMi41OS0xMS40MUwxNiAxMGwtNCA0LTQtNCAxLjQxLTEuNDFMMTEgMTAuMTdWNmgydjQuMTdsMS41OS0xLjU4ek0xNyAxN0g3di0yaDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOWgtNFYzSDl2Nkg1bDcgNyA3LTd6bS04IDJWNWgydjZoMS4xN0wxMiAxMy4xNyA5LjgzIDExSDExem0tNiA3aDE0djJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvd25sb2FkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMzIgNC4yNkE5Ljk0OSA5Ljk0OSAwIDAgMCAxMyAyLjA1djIuMDJjMS40Ni4xOCAyLjc5Ljc2IDMuOSAxLjYybDEuNDItMS40M3pNMTkuOTMgMTFoMi4wMmMtLjItMi4wMS0xLTMuODQtMi4yMS01LjMyTDE4LjMxIDcuMWE3Ljk0MSA3Ljk0MSAwIDAgMSAxLjYyIDMuOXptLTEuNjIgNS45IDEuNDMgMS40M2E5Ljk4MSA5Ljk4MSAwIDAgMCAyLjIxLTUuMzJoLTIuMDJhNy45NDUgNy45NDUgMCAwIDEtMS42MiAzLjg5ek0xMyAxOS45M3YyLjAyYzIuMDEtLjIgMy44NC0xIDUuMzItMi4yMWwtMS40My0xLjQzYy0xLjEuODYtMi40MyAxLjQ0LTMuODkgMS42MnptMi41OS05LjM0TDEzIDEzLjE3VjdoLTJ2Ni4xN2wtMi41OS0yLjU5TDcgMTJsNSA1IDUtNS0xLjQxLTEuNDF6TTExIDE5LjkzdjIuMDJjLTUuMDUtLjUtOS00Ljc2LTktOS45NXMzLjk1LTkuNDUgOS05Ljk1djIuMDJDNy4wNSA0LjU2IDQgNy45MiA0IDEyczMuMDUgNy40NCA3IDcuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEcml2ZUZpbGVNb3ZlUnRsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjZoNS4xN2wyIDJIMjB2MTB6bS02LjU5LTIuNDFMMTIgMTdsLTQtNCA0LTQgMS40MSAxLjQxTDExLjgzIDEySDE2djJoLTQuMTdsMS41OCAxLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJpdmVGaWxlTW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTJINFY2aDUuMTdsMS40MSAxLjQxLjU5LjU5SDIwdjEwem0tNy44NC02SDh2Mmg0LjE2bC0xLjU5IDEuNTlMMTEuOTkgMTcgMTYgMTMuMDEgMTEuOTkgOWwtMS40MSAxLjQxTDEyLjE2IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJpdmVGaWxlUmVuYW1lT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1IDE2LTQgNGgxMHYtNHpNMTIuMDYgNy4xOSAzIDE2LjI1VjIwaDMuNzVsOS4wNi05LjA2LTMuNzUtMy43NXpNNS45MiAxOEg1di0uOTJsNy4wNi03LjA2LjkyLjkyTDUuOTIgMTh6TTE4LjcxIDguMDRhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0yLjM0LTIuMzRhMS4wMDEgMS4wMDEgMCAwIDAtMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURyaXZlRm9sZGVyVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTJINFY2aDUuMTdsMiAySDIwdjEwek05LjQxIDE0LjQyIDExIDEyLjg0VjE3aDJ2LTQuMTZsMS41OSAxLjU5TDE2IDEzLjAxIDEyLjAxIDkgOCAxMy4wMWwxLjQxIDEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWxlRG93bmxvYWREb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMTMgNS40MSAxOC43MiA0bC05LjE5IDkuMTktNC4yNS00LjI0LTEuNDEgMS40MSA1LjY2IDUuNjZ6TTUgMThoMTR2Mkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsZURvd25sb2FkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTUuMTdWMTVoMnYyLjE3bC0yLTJ6bS0yLjU5LTIuNThMMTcgMTFsLTEuNDEtMS40MUwxNCAxMS4xN2wxLjQxIDEuNDJ6TTEzIDEwLjE3VjRoLTJ2NC4xN2wyIDJ6bTguMTkgMTEuMDItMS43OC0xLjc4LTE2LjYtMTYuNi0xLjQyIDEuNDEgNi4xOSA2LjE5TDcgMTFsNSA1IC41OS0uNTlMMTUuMTcgMThINnYtM0g0djNjMCAxLjEuOSAyIDIgMmgxMS4xN2wyLjYxIDIuNjEgMS40MS0xLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsZURvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTV2M0g2di0zSDR2M2MwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi0zaC0yem0tMS00LTEuNDEtMS40MUwxMyAxMi4xN1Y0aC0ydjguMTdMOC40MSA5LjU5IDcgMTFsNSA1IDUtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbGVPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMjJINmMtMS4xIDAtMi0uOS0yLTJWNGMwLTEuMS45LTIgMi0yaDhsNiA2djZoLTJWOWgtNVY0SDZ2MTZoOXYyem00LS4zNHYtMi4yNGwyLjk1IDIuOTUgMS40MS0xLjQxTDIwLjQxIDE4aDIuMjR2LTJIMTd2NS42NmgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsZVVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE1djNINnYtM0g0djNjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMnYtM2gtMnpNNyA5bDEuNDEgMS40MUwxMSA3LjgzVjE2aDJWNy44M2wyLjU5IDIuNThMMTcgOWwtNS01LTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvbGRlckNvcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE5aDE3djJIM2MtMS4xIDAtMi0uOS0yLTJWNmgydjEzek0yMyA2djljMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJsLjAxLTExYzAtMS4xLjg5LTIgMS45OS0yaDVsMiAyaDdjMS4xIDAgMiAuOSAyIDJ6TTcgMTVoMTRWNmgtNy44M2wtMi0ySDd2MTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb2xkZXJEZWxldGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDEwVjloLTJ2MUgxMnYxLjVoMXY0YzAgLjgzLjY3IDEuNSAxLjUgMS41aDJjLjgzIDAgMS41LS42NyAxLjUtMS41di00aDFWMTBoLTIuNXptMCA1LjVoLTJ2LTRoMnY0ek0yMCA2aC04bC0yLTJINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0wIDEySDRWNmg1LjE3bDIgMkgyMHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvbGRlck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg3LjE3bDQgNEgyMHY5LjE3bDEuNzYgMS43NmMuMTUtLjI4LjI0LS41OS4yNC0uOTNWOGMwLTEuMS0uOS0yLTItMnpNMi4xIDIuMS42OSAzLjUxbDEuNTYgMS41NmMtLjE1LjI4LS4yNC41OS0uMjQuOTNMMiAxOGMwIDEuMS45IDIgMiAyaDEzLjE3bDMuMzEgMy4zMSAxLjQxLTEuNDFMMi4xIDIuMXpNNCAxOFY2LjgzTDE1LjE3IDE4SDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb2xkZXJPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjhoMTZ2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb2xkZXJTaGFyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0wIDEySDRWNmg1LjE3bDIgMkgyMHYxMHptLTUtNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bS00IDRoOHYtMWMwLTEuMzMtMi42Ny0yLTQtMnMtNCAuNjctNCAydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb2xkZXJaaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTQgMTBoMnYtMmgtMnYtMmgydi0yaC0yVjhoNHYxMGgtNHYtMnptMCAwaC0ydjJINFY2aDUuMTdsMiAySDE0djJoMnYyaC0ydjJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9sZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05LjE3IDYgMiAySDIwdjEwSDRWNmg1LjE3TTEwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMmgtOGwtMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0T3ZlcmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzdjJINVYzaDE0em0tNyA0Yy0zLjg3IDAtNyAzLjEzLTcgN3MzLjEzIDcgNyA3IDctMy4xMyA3LTctMy4xMy03LTctN3ptMCAxMS41Yy0yLjQ5IDAtNC41LTIuMDEtNC41LTQuNVM5LjUxIDkuNSAxMiA5LjVzNC41IDIuMDEgNC41IDQuNS0yLjAxIDQuNS00LjUgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JpZFZpZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDN2OGg4VjNIM3ptNiA2SDVWNWg0djR6bS02IDR2OGg4di04SDN6bTYgNkg1di00aDR2NHptNC0xNnY4aDhWM2gtOHptNiA2aC00VjVoNHY0em0tNiA0djhoOHYtOGgtOHptNiA2aC00di00aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5ld3NwYXBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDMtMS42NyAxLjY3TDE4LjY3IDMgMTcgNC42NyAxNS4zMyAzbC0xLjY2IDEuNjdMMTIgM2wtMS42NyAxLjY3TDguNjcgMyA3IDQuNjcgNS4zMyAzIDMuNjcgNC42NyAyIDN2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlYzek0xMSAxOUg0di02aDd2NnptOSAwaC03di0yaDd2MnptMC00aC03di0yaDd2MnptMC00SDRWOGgxNnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVxdWVzdFF1b3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjhsLTYtNnpNNiAyMFY0aDd2NGg1djEySDZ6bTUtMWgydi0xaDFjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMWgtM3YtMWg0di0yaC0yVjloLTJ2MWgtMWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoM3YxSDl2MmgydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSdWxlRm9sZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy44MyAxNiA1IDEzLjE3bDEuNDEtMS40MSAxLjQxIDEuNDEgMy41NC0zLjU0IDEuNDEgMS40MUw3LjgzIDE2em05LjU4LTNMMTkgMTQuNTkgMTcuNTkgMTYgMTYgMTQuNDEgMTQuNDEgMTYgMTMgMTQuNTkgMTQuNTkgMTMgMTMgMTEuNDEgMTQuNDEgMTAgMTYgMTEuNTkgMTcuNTkgMTAgMTkgMTEuNDEgMTcuNDEgMTN6TTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0wIDEySDRWNmg1LjE3bDIgMkgyMHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNuaXBwZXRGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjZoNS4xN2wyIDJIMjB2MTB6bS0yLjUtNS44OHYzLjM4aC0zdi01aDEuMzhsMS42MiAxLjYyek0xMyA5djhoNnYtNS41TDE2LjUgOUgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRleHRTbmlwcGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuMTcgNSAxOSA5LjgzVjE5SDVWNWg5LjE3bTAtMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjkuODNjMC0uNTMtLjIxLTEuMDQtLjU5LTEuNDFsLTQuODMtNC44M2MtLjM3LS4zOC0uODgtLjU5LTEuNDEtLjU5ek03IDE1aDEwdjJIN3YtMnptMC00aDEwdjJIN3YtMnptMC00aDd2Mkg3Vjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUb3BpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNi43N2MuNjggMCAxLjIzLS41NiAxLjIzLTEuMjNWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjZoNS4xN2wyIDJIMjB2MTB6bS0yLTZINnYtMmgxMnYyem0tNCA0SDZ2LTJoOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVXBsb2FkRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptNCAxOEg2VjRoN3Y1aDV2MTF6TTggMTUuMDFsMS40MSAxLjQxTDExIDE0Ljg0VjE5aDJ2LTQuMTZsMS41OSAxLjU5TDE2IDE1LjAxIDEyLjAxIDExIDggMTUuMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVcGxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTZoNnYtNmg0bC03LTctNyA3aDR2NnptMy0xMC4xN0wxNC4xNyA4SDEzdjZoLTJWOEg5LjgzTDEyIDUuODN6TTUgMThoMTR2Mkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV29ya3NwYWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTVjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAtMmMtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00em02LThjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAtMkM5LjggMyA4IDQuOCA4IDdzMS44IDQgNCA0IDQtMS44IDQtNC0xLjgtNC00LTR6bTYgMTJjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAtMmMtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRmU2Nhbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEyaC0xVjRINnY4SDVjLTEuNjYgMC0zIDEuMzQtMyAzdjVoMjB2LTVjMC0xLjY2LTEuMzQtMy0zLTN6TTggNmg4djZIOFY2em0xMiAxMkg0di0zYzAtLjU1LjQ1LTEgMS0xaDE0Yy41NSAwIDEgLjQ1IDEgMXYzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiMTZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyb3dzZXJOb3RTdXBwb3J0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA2djEwLjVsMS45NSAxLjk1Yy4wMy0uMTUuMDUtLjMuMDUtLjQ1VjZjMC0xLjEtLjktMi0yLTJINi41bDIgMkgxOXpNMy4yMiAzLjMyIDEuOTUgNC41OSAzIDUuNjRWMThjMCAxLjEuOSAyIDIgMmgxMi4zNmwyLjA2IDIuMDYgMS4yNy0xLjI3TDMuMjIgMy4zMnpNMTUgMThINVY3LjY0TDE1LjM2IDE4SDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJvd3NlclVwZGF0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxM3YzYzAgMS4xLS45IDItMiAyaC0zbDEgMXYySDZ2LTJsMS0xSDRjLTEuMSAwLTItLjktMi0yVjVjMC0xLjEuOS0yIDItMmg4djJINHYxMWgxNnYtM2gyem0tNyAyLTUtNSAxLjQxLTEuNDFMMTQgMTEuMTdWM2gydjguMTdsMi41OS0yLjU4TDIwIDEwbC01IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYXN0Q29ubmVjdGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDE4djNoM2MwLTEuNjYtMS4zNC0zLTMtM3ptMC00djJjMi43NiAwIDUgMi4yNCA1IDVoMmMwLTMuODctMy4xMy03LTctN3ptMC00djJhOSA5IDAgMCAxIDkgOWgyYzAtNi4wOC00LjkzLTExLTExLTExem0yMC03SDNjLTEuMSAwLTIgLjktMiAydjNoMlY1aDE4djE0aC03djJoN2MxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek01IDd2MmgxMnY2aC0zdjJoNVY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FzdEZvckVkdWNhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYzaDJWNWgxOHYxNGgtN3YyaDdjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNMSAxOHYzaDNjMC0xLjY2LTEuMzQtMy0zLTN6bTAtNHYyYzIuNzYgMCA1IDIuMjQgNSA1aDJjMC0zLjg3LTMuMTMtNy03LTd6bTAtNHYyYTkgOSAwIDAgMSA5IDloMmMwLTYuMDgtNC45My0xMS0xMS0xMXptMTAgMS4wOXYyTDE0LjUgMTVsMy41LTEuOTF2LTJMMTQuNSAxMyAxMSAxMS4wOXpNMTQuNSA2IDkgOWw1LjUgM0wyMCA5bC01LjUtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2M2gyVjVoMTh2MTRoLTd2Mmg3YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTEgMTh2M2gzYzAtMS42Ni0xLjM0LTMtMy0zem0wLTR2MmMyLjc2IDAgNSAyLjI0IDUgNWgyYzAtMy44Ny0zLjEzLTctNy03em0wLTR2MmE5IDkgMCAwIDEgOSA5aDJjMC02LjA4LTQuOTMtMTEtMTEtMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb21wdXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMThjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjIgNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAySDB2MmgyNHYtMmgtNHpNNCA2aDE2djEwSDRWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbm5lY3RlZFR2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDR2Mmg4di0yaDRjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjIgNWMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjVoMTZ2MTJ6TTUgMTR2MmgyYzAtMS4xMS0uODktMi0yLTJ6bTAtM3YxLjQzYzEuOTcgMCAzLjU3IDEuNiAzLjU3IDMuNTdIMTBjMC0yLjc2LTIuMjQtNS01LTV6bTAtM3YxLjQ1YzMuNjEgMCA2LjU1IDIuOTMgNi41NSA2LjU1SDEzYzAtNC40Mi0zLjU5LTgtOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVza3RvcE1hYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMkgzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDdsLTIgM3YxaDh2LTFsLTItM2g3YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTJIM1Y0aDE4djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVza3RvcFdpbmRvd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDJIM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg3djJIOHYyaDh2LTJoLTJ2LTJoN2MxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDNWNGgxOHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURldmVsb3BlckJvYXJkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy44MyA1SDE4djEwLjE3TDE5LjgzIDE3SDIydi0yaC0ydi0yaDJ2LTJoLTJWOWgyVjdoLTJWNWMwLTEuMS0uOS0yLTItMkg1LjgzbDIgMnpNMTIgOS4xN1Y3aDR2M2gtMy4xN0wxMiA5LjE3ek05LjgzIDdIMTF2MS4xN0w5LjgzIDd6bTQgNEgxNnYyLjE3TDEzLjgzIDExek0xOCAyMWMuMDYgMCAuMTEgMCAuMTYtLjAxbDIuMzIgMi4zMiAxLjQxLTEuNDFMMi4xIDIuMS42OSAzLjUxbDEuMzIgMS4zMkMyIDQuODkgMiA0Ljk0IDIgNXYxNGMwIDEuMS45IDIgMiAyaDE0ek00IDE5VjYuODNsMiAyVjEyaDMuMTdsMSAxSDZ2NGg1di0zLjE3bDEgMVYxN2gyLjE3bDIgMkg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGV2ZWxvcGVyQm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDlWN2gtMlY1YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTJoMnYtMmgtMnYtMmgydi0yaC0yVjloMnptLTQgMTBINFY1aDE0djE0ek02IDEzaDV2NEg2di00em02LTZoNHYzaC00Vjd6TTYgN2g1djVINlY3em02IDRoNHY2aC00di02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGV2aWNlSHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNyAxNi00LTRWOC44MkMxNC4xNiA4LjQgMTUgNy4zIDE1IDZjMC0xLjY2LTEuMzQtMy0zLTNTOSA0LjM0IDkgNmMwIDEuMy44NCAyLjQgMiAyLjgyVjEybC00IDRIM3Y1aDV2LTMuMDVsNC00LjIgNCA0LjJWMjFoNXYtNWgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURldmljZVVua25vd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDFIN2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE4SDdWNWgxMHYxNHpNMTIgNi43MmMtMS45NiAwLTMuNSAxLjUyLTMuNSAzLjQ3aDEuNzVjMC0uOTMuODItMS43NSAxLjc1LTEuNzVzMS43NS44MiAxLjc1IDEuNzVjMCAxLjc1LTIuNjMgMS41Ny0yLjYzIDQuNDVoMS43NmMwLTEuOTYgMi42Mi0yLjE5IDIuNjItNC40NSAwLTEuOTYtMS41NC0zLjQ3LTMuNS0zLjQ3ek0xMSAxNmgydjJoLTJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXZpY2VzT3RoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNmgxOFY0SDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoNHYtMkgzVjZ6bTEwIDZIOXYxLjc4Yy0uNjEuNTUtMSAxLjMzLTEgMi4yMiAwIC44OS4zOSAxLjY3IDEgMi4yMlYyMGg0di0xLjc4Yy42MS0uNTUgMS0xLjM0IDEtMi4yMnMtLjM5LTEuNjctMS0yLjIyVjEyem0tMiA1LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek0yMiA4aC02Yy0uNSAwLTEgLjUtMSAxdjEwYzAgLjUuNSAxIDEgMWg2Yy41IDAgMS0uNSAxLTFWOWMwLS41LS41LTEtMS0xem0tMSAxMGgtNHYtOGg0djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDIzaDh2LTJIOHYyem04LTIxLjk5TDggMWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE2IDE1SDhWNWg4djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWFyYnVkc0JhdHRlcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA3aC0xVjZoLTJ2MWgtMWMtLjU1IDAtMSAuNDUtMSAxdjljMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTFWOGMwLS41NS0uNDUtMS0xLTF6bS0xIDloLTJWOWgydjd6bS02LTYuNjJDMTQgNy41MSAxMi40OSA2IDEwLjYyIDZTNy4yNSA3LjUxIDcuMjUgOS4zOHY1LjI1YzAgMS4wNC0uODQgMS44OC0xLjg4IDEuODhzLTEuODctLjg1LTEuODctMS44OXYtNC43Yy4xNi4wNS4zMy4wOC41LjA4IDEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMnY2LjYyQzIgMTYuNDkgMy41MSAxOCA1LjM4IDE4czMuMzgtMS41MSAzLjM4LTMuMzhWOS4zOGMwLTEuMDQuODQtMS44OCAxLjg4LTEuODhzMS44OC44NCAxLjg4IDEuODh2NC43Yy0uMTgtLjA1LS4zNS0uMDgtLjUyLS4wOC0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMlY5LjM4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWFyYnVkcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDNjLTIuNzYgMC01IDIuMjQtNSA1djhjMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTNWOWguODNDNy40NCA5IDguODkgNy44MiA5IDYuMjFBMyAzIDAgMCAwIDYuMiAzQzQuNDQgMi44OSAzIDQuNDIgMyA2LjE5VjE2YzAgMi43NiAyLjI0IDUgNSA1czUtMi4yNCA1LTVWOGMwLTEuNjYgMS4zNC0zIDMtM3MzIDEuMzQgMyAzdjdoLS44M2MtMS42MSAwLTMuMDYgMS4xOC0zLjE3IDIuNzlBMyAzIDAgMCAwIDE3LjggMjFjMS43Ni4xMiAzLjItMS40MiAzLjItMy4xOFY4YzAtMi43Ni0yLjI0LTUtNS01ek01IDZjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxLS40NSAxLTEgMUg1VjZ6bTE0IDEyYzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xIC40NS0xIDEtMWgxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHYW1lcGFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA0djIuNjdsLTEgMS0xLTFWNGgybTcgN3YyaC0yLjY3bC0xLTEgMS0xSDIwTTYuNjcgMTFsMSAxLTEgMUg0di0yaDIuNjdNMTIgMTYuMzNsMSAxVjIwaC0ydi0yLjY3bDEtMU0xNSAySDl2NS41bDMgMyAzLTNWMnptNyA3aC01LjVsLTMgMyAzIDNIMjJWOXpNNy41IDlIMnY2aDUuNWwzLTMtMy0zem00LjUgNC41LTMgM1YyMmg2di01LjVsLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhlYWRwaG9uZXNCYXR0ZXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgN2gtMVY2aC0ydjFoLTFjLS41NSAwLTEgLjQ1LTEgMXY5YzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xVjhjMC0uNTUtLjQ1LTEtMS0xem0tMSA5aC0yVjloMnY3ek04IDZjLTMuMzEgMC02IDIuNjktNiA2djRjMCAxLjEuOSAyIDIgMmgydi01SDMuNXYtMWMwLTIuNDggMi4wMi00LjUgNC41LTQuNXM0LjUgMi4wMiA0LjUgNC41djFIMTB2NWgyYzEuMSAwIDItLjkgMi0ydi00YzAtMy4zMS0yLjY5LTYtNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGVhZHBob25lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNhOSA5IDAgMCAwLTkgOXY3YzAgMS4xLjkgMiAyIDJoNHYtOEg1di0xYzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDd2MWgtNHY4aDRjMS4xIDAgMi0uOSAyLTJ2LTdhOSA5IDAgMCAwLTktOXpNNyAxNXY0SDV2LTRoMnptMTIgNGgtMnYtNGgydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWFkc2V0TWljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxNHY0aC0ydi00aDJNNyAxNHY0SDZjLS41NSAwLTEtLjQ1LTEtMXYtM2gybTUtMTNhOSA5IDAgMCAwLTkgOXY3YzAgMS42NiAxLjM0IDMgMyAzaDN2LThINXYtMmMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3djJoLTR2OGg0djFoLTd2Mmg2YzEuNjYgMCAzLTEuMzQgMy0zVjEwYTkgOSAwIDAgMC05LTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWFkc2V0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGMzLjg3IDAgNyAzLjEzIDcgN3YxaC00di4xN0wxNi44MyAxNEgxOXYyLjE3bDIgMlYxMWE5IDkgMCAwIDAtOS05Yy0yLjAyIDAtMy44OC42Ny01LjM4IDEuOGwxLjQzIDEuNDNBNi44NzggNi44NzggMCAwIDEgMTIgNHpNMi4xIDIuMS42OSAzLjUxbDMuMzMgMy4zM0E4Ljk4IDguOTggMCAwIDAgMyAxMXY3YzAgMS4xLjkgMiAyIDJoNHYtOEg1di0xYzAtLjk0LjE5LTEuODMuNTItMi42NUwxNSAxNy44M1YyMGgyLjE3bDEgMUgxMnYyaDdjLjM0IDAgLjY1LS4wOS45My0uMjRsLjU1LjU1IDEuNDEtMS40MUwyLjEgMi4xek03IDE0djRINXYtNGgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGVhZHNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTR2M2MwIC41NS0uNDUgMS0xIDFoLTF2LTRoMk03IDE0djRINmMtLjU1IDAtMS0uNDUtMS0xdi0zaDJtNS0xM2E5IDkgMCAwIDAtOSA5djdjMCAxLjY2IDEuMzQgMyAzIDNoM3YtOEg1di0yYzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDd2MmgtNHY4aDNjMS42NiAwIDMtMS4zNCAzLTN2LTdhOSA5IDAgMCAwLTktOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvbWVNYXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1SDVDMi43OSA1IDEgNi43OSAxIDl2NWMwIDIuMjEgMS43OSA0IDQgNGgydjFoMTB2LTFoMmMyLjIxIDAgNC0xLjc5IDQtNFY5YzAtMi4yMS0xLjc5LTQtNC00em0yIDljMCAxLjEtLjkgMi0yIDJINWMtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDE0YzEuMSAwIDIgLjkgMiAydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb21lTWluaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVDNC4xOSA1IDIgOS40OCAyIDEyYzAgMy44NiAzLjEzIDcgNi45OSA3aDYuMDJDMTcuNyAxOSAyMiAxNi45MiAyMiAxMmMwIDAgMC03LTEwLTd6bTAgMmM3LjY0IDAgNy45OSA0LjUxIDggNUg0YzAtLjIuMDktNSA4LTV6bTIuODYgMTBIOS4xNGMtMi4xIDAtMy45Mi0xLjI0LTQuNzEtM2gxNS4xNWMtLjggMS43Ni0yLjYyIDMtNC43MiAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2V5Ym9hcmRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEzYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNUgzVjZoMTh2MTN6TTkgOGgydjJIOVY4ek01IDhoMnYySDVWOHptMyA4aDh2MUg4di0xem01LThoMnYyaC0yVjh6bS00IDRoMnYySDl2LTJ6bS00IDBoMnYySDV2LTJ6bTggMGgydjJoLTJ2LTJ6bTQtNGgydjJoLTJWOHptMCA0aDJ2MmgtMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjQxIDguNTkgMTIgMTMuMTdsNC41OS00LjU4TDE4IDEwbC02IDYtNi02IDEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkQXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS40MSAxNi41OSAxMC44MyAxMmw0LjU4LTQuNTlMMTQgNmwtNiA2IDYgNiAxLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZEFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNTkgMTYuNTkgMTMuMTcgMTIgOC41OSA3LjQxIDEwIDZsNiA2LTYgNi0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZEFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNDEgMTUuNDEgMTIgMTAuODNsNC41OSA0LjU4TDE4IDE0bC02LTYtNiA2IDEuNDEgMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkQmFja3NwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMUg2LjgzbDMuNTgtMy41OUw5IDZsLTYgNiA2IDYgMS40MS0xLjQxTDYuODMgMTNIMjF2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZENhcHNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4LjQxIDE2LjU5IDEzIDE4IDExLjU5bC02LTYtNiA2TDcuNDEgMTMgMTIgOC40MXpNNiAxOGgxMnYtMkg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZENvbW1hbmRLZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDNDMTUuNTcgMyAxNCA0LjU3IDE0IDYuNVY4aC00VjYuNUMxMCA0LjU3IDguNDMgMyA2LjUgM1MzIDQuNTcgMyA2LjUgNC41NyAxMCA2LjUgMTBIOHY0SDYuNUM0LjU3IDE0IDMgMTUuNTcgMyAxNy41UzQuNTcgMjEgNi41IDIxczMuNS0xLjU3IDMuNS0zLjVWMTZoNHYxLjVjMCAxLjkzIDEuNTcgMy41IDMuNSAzLjVzMy41LTEuNTcgMy41LTMuNS0xLjU3LTMuNS0zLjUtMy41SDE2di00aDEuNWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMxOS40MyAzIDE3LjUgM3pNMTYgOFY2LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVTMTguMzMgOCAxNy41IDhIMTZ6TTYuNSA4QzUuNjcgOCA1IDcuMzMgNSA2LjVTNS42NyA1IDYuNSA1IDggNS42NyA4IDYuNVY4SDYuNXptMy41IDZ2LTRoNHY0aC00em03LjUgNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41VjE2aDEuNWMuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41em0tMTEgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgMTYgNi41IDE2SDh2MS41YzAgLjgzLS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkQ29udHJvbEtleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTUgMTIgMS40MSAxLjQxTDEyIDcuODNsNS41OSA1LjU4TDE5IDEybC03LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZERvdWJsZUFycm93RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDYuNDEgMTYuNTkgNSAxMiA5LjU4IDcuNDEgNSA2IDYuNDFsNiA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCAxMy0xLjQxLTEuNDFMMTIgMTYuMTdsLTQuNTktNC41OEw2IDEzbDYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkRG91YmxlQXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNTkgMTggMTkgMTYuNTkgMTQuNDIgMTIgMTkgNy40MSAxNy41OSA2bC02IDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExIDE4IDEuNDEtMS40MUw3LjgzIDEybDQuNTgtNC41OUwxMSA2bC02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZERvdWJsZUFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjQxIDYgNSA3LjQxIDkuNTggMTIgNSAxNi41OSA2LjQxIDE4bDYtNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgNi0xLjQxIDEuNDFMMTYuMTcgMTJsLTQuNTggNC41OUwxMyAxOGw2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZERvdWJsZUFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE3LjU5IDcuNDEgMTkgMTIgMTQuNDIgMTYuNTkgMTkgMTggMTcuNTlsLTYtNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNiAxMSAxLjQxIDEuNDFMMTIgNy44M2w0LjU5IDQuNThMMTggMTFsLTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkSGlkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMTVjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDEySDRWNWgxNnYxMHptLTktOWgydjJoLTJ6bTAgM2gydjJoLTJ6TTggNmgydjJIOHptMCAzaDJ2Mkg4ek01IDloMnYySDV6bTAtM2gydjJINXptMyA2aDh2Mkg4em02LTNoMnYyaC0yem0wLTNoMnYyaC0yem0zIDNoMnYyaC0yem0wLTNoMnYyaC0yem0tNSAxNyA0LTRIOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkT3B0aW9uS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgNWg2djJoLTZ6TTkgNUgzdjJoNC44NWw2LjkyIDEySDIxdi0yaC01LjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2V5Ym9hcmRSZXR1cm4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDd2NEg1LjgzbDMuNTgtMy41OUw4IDZsLTYgNiA2IDYgMS40MS0xLjQxTDUuODMgMTNIMjFWN2gtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkVGFiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41OSA3LjQxIDE1LjE3IDExSDF2MmgxNC4xN2wtMy41OSAzLjU5TDEzIDE4bDYtNi02LTYtMS40MSAxLjQxek0yMCA2djEyaDJWNmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkVm9pY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE1YzEuNjYgMCAyLjk5LTEuMzQgMi45OS0zTDE1IDZjMC0xLjY2LTEuMzQtMy0zLTNTOSA0LjM0IDkgNnY2YzAgMS42NiAxLjM0IDMgMyAzem0tMS4yLTkuMWMwLS42Ni41NC0xLjIgMS4yLTEuMnMxLjIuNTQgMS4yIDEuMmwtLjAxIDYuMmMwIC42Ni0uNTMgMS4yLTEuMTkgMS4ycy0xLjItLjU0LTEuMi0xLjJWNS45em02LjUgNi4xYzAgMy0yLjU0IDUuMS01LjMgNS4xUzYuNyAxNSA2LjcgMTJINWMwIDMuNDEgMi43MiA2LjIzIDYgNi43MlYyMmgydi0zLjI4YzMuMjgtLjQ4IDYtMy4zIDYtNi43MmgtMS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2V5Ym9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDd2MTBINFY3aDE2bTAtMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMTdjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tOSAzaDJ2MmgtMnptMCAzaDJ2MmgtMnpNOCA4aDJ2Mkg4em0wIDNoMnYySDh6bS0zIDBoMnYySDV6bTAtM2gydjJINXptMyA2aDh2Mkg4em02LTNoMnYyaC0yem0wLTNoMnYyaC0yem0zIDNoMnYyaC0yem0wLTNoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGFwdG9wQ2hyb21lYm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMThWM0gydjE1SDB2MmgyNHYtMmgtMnptLTggMGgtNHYtMWg0djF6bTYtM0g0VjVoMTZ2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMYXB0b3BNYWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4YzEuMSAwIDEuOTktLjkgMS45OS0yTDIyIDVjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMkgwYzAgMS4xLjkgMiAyIDJoMjBjMS4xIDAgMi0uOSAyLTJoLTR6TTQgNWgxNnYxMUg0VjV6bTggMTRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxhcHRvcFdpbmRvd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4di0xYzEuMSAwIDEuOTktLjkgMS45OS0yTDIyIDVjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMnYxSDB2MmgyNHYtMmgtNHpNNCA1aDE2djEwSDRWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxhcHRvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMkgwdjJoMjR2LTJoLTR6TTQgNmgxNnYxMEg0VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZW1vcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDlIOXY2aDZWOXptLTIgNGgtMnYtMmgydjJ6bTgtMlY5aC0yVjdjMC0xLjEtLjktMi0yLTJoLTJWM2gtMnYyaC0yVjNIOXYySDdjLTEuMSAwLTIgLjktMiAydjJIM3YyaDJ2MkgzdjJoMnYyYzAgMS4xLjkgMiAyIDJoMnYyaDJ2LTJoMnYyaDJ2LTJoMmMxLjEgMCAyLS45IDItMnYtMmgydi0yaC0ydi0yaDJ6bS00IDZIN1Y3aDEwdjEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9uaXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMmgzbC0xIDF2MmgxMnYtMmwtMS0xaDNjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxM0g0VjVoMTZ2MTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb3VzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOWMtLjA0LTQuMzktMy42LTcuOTMtOC03LjkzUzQuMDQgNC42MSA0IDl2NmMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04Vjl6bS0yIDBoLTVWMy4xNmMyLjgxLjQ3IDQuOTYgMi45IDUgNS44NHptLTctNS44NFY5SDZhNi4wMDUgNi4wMDUgMCAwIDEgNS01Ljg0ek0xOCAxNWMwIDMuMzEtMi42OSA2LTYgNnMtNi0yLjY5LTYtNnYtNGgxMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmVBbmRyb2lkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxSDhDNi4zNCAxIDUgMi4zNCA1IDR2MTZjMCAxLjY2IDEuMzQgMyAzIDNoOGMxLjY2IDAgMy0xLjM0IDMtM1Y0YzAtMS42Ni0xLjM0LTMtMy0zem0xIDE3SDdWNGgxMHYxNHptLTMgM2gtNHYtMWg0djF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZUlwaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxaC04QTIuNSAyLjUgMCAwIDAgNSAzLjV2MTdBMi41IDIuNSAwIDAgMCA3LjUgMjNoOGEyLjUgMi41IDAgMCAwIDIuNS0yLjV2LTE3QTIuNSAyLjUgMCAwIDAgMTUuNSAxem0tNCAyMWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTQuNS00SDdWNGg5djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmVsaW5rT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA2VjRINy4zOWwyIDJ6bTIgMTNWOWMwLS41NS0uNDUtMS0xLTFoLTZjLS41NSAwLTEgLjQ1LTEgMXYzLjYxbDIgMlYxMGg0djdoLTEuNjFsMi45MyAyLjkzYy4zOS0uMTMuNjgtLjQ5LjY4LS45M3pNMi4wNiAxLjUxLjY1IDIuOTJsMS44MiAxLjgyQzIuMTggNS4wOCAyIDUuNTIgMiA2djExSDB2M2gxNy43M2wyLjM1IDIuMzUgMS40MS0xLjQxTDIuMDYgMS41MXpNNCAxN1Y2LjI3TDE0LjczIDE3SDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZWxpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNmgxOFY0SDRjLTEuMSAwLTIgLjktMiAydjExSDB2M2gxNHYtM0g0VjZ6bTE5IDJoLTZjLS41NSAwLTEgLjQ1LTEgMXYxMGMwIC41NS40NSAxIDEgMWg2Yy41NSAwIDEtLjQ1IDEtMVY5YzAtLjU1LS40NS0xLTEtMXptLTEgOWgtNHYtN2g0djd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb2ludE9mU2FsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDJIN2MtMS4xIDAtMiAuOS0yIDJ2MmMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgNEg3VjRoMTB2MnptMyAxNkg0Yy0xLjEgMC0yLS45LTItMnYtMWgyMHYxYzAgMS4xLS45IDItMiAyem0tMS40Ny0xMS44MUEyLjAwOCAyLjAwOCAwIDAgMCAxNi43IDlINy4zYy0uNzkgMC0xLjUxLjQ3LTEuODMgMS4xOUwyIDE4aDIwbC0zLjQ3LTcuODF6TTkuNSAxNmgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMC0yaC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6bTMgNGgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMC0yaC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6bTMgNGgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMC0yaC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb3dlcklucHV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDl2MmgxOVY5SDJ6bTAgNmg1di0ySDJ2MnptNyAwaDV2LTJIOXYyem03IDBoNXYtMmgtNXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUm91dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA0LjJjMS41IDAgMyAuNiA0LjIgMS43bC44LS44QzE5LjYgMy43IDE3LjggMyAxNiAzcy0zLjYuNy01IDIuMWwuOC44QzEzIDQuOCAxNC41IDQuMiAxNiA0LjJ6bS0zLjMgMi41LjguOGMuNy0uNyAxLjYtMSAyLjUtMXMxLjguMyAyLjUgMWwuOC0uOGMtLjktLjktMi4xLTEuNC0zLjMtMS40cy0yLjQuNS0zLjMgMS40ek0xOSAxM2gtMlY5aC0ydjRINWMtMS4xIDAtMiAuOS0yIDJ2NGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi00YzAtMS4xLS45LTItMi0yem0wIDZINXYtNGgxNHY0ek02IDE2aDJ2Mkg2em0zLjUgMGgydjJoLTJ6bTMuNSAwaDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNjYW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjggMTAuNyA0LjIgNWwtLjcgMS45TDE3LjYgMTJINWMtMS4xIDAtMiAuOS0yIDJ2NGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi01LjVjMC0uOC0uNS0xLjYtMS4yLTEuOHpNMTkgMThINXYtNGgxNHY0ek02IDE1aDJ2Mkg2em00IDBoOHYyaC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VjdXJpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEgMyA1djZjMCA1LjU1IDMuODQgMTAuNzQgOSAxMiA1LjE2LTEuMjYgOS02LjQ1IDktMTJWNWwtOS00em0wIDEwLjk5aDdjLS41MyA0LjEyLTMuMjggNy43OS03IDguOTRWMTJINVY2LjNsNy0zLjExdjguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpbUNhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJoLThMNCA4djEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAydjE2SDZWOC44M0wxMC44MyA0SDE4ek03IDE3aDJ2Mkg3em04IDBoMnYyaC0yem0tOC02aDJ2NEg3em00IDRoMnY0aC0yem0wLTRoMnYyaC0yem00IDBoMnY0aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU21hcnREaXNwbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDcuNXY5bDctNC41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNC4wMUg0VjUuOTloMTZ2MTIuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbWFydFNjcmVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgMTEuMjVIMTR2MS41aC0xLjV6TTE1IDExLjI1aDEuNXYxLjVIMTV6TTEwIDExLjI1aDEuNXYxLjVIMTB6TTcuNSAxMS4yNUg5djEuNUg3LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVIM2MtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yek00IDE3SDNWN2gxdjEwem0xNCAwSDZWN2gxMnYxMHptMyAwaC0xVjdoMXYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNtYXJ0VG95IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOVY3YzAtMS4xLS45LTItMi0yaC0zYzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDVINmMtMS4xIDAtMiAuOS0yIDJ2MmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgM3Y0YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTRjMS42NiAwIDMtMS4zNCAzLTNzLTEuMzQtMy0zLTN6bS0yIDEwSDZWN2gxMnYxMnptLTktNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzguMTcgMTAgOSAxMHMxLjUuNjcgMS41IDEuNVM5LjgzIDEzIDkgMTN6bTcuNS0xLjVjMCAuODMtLjY3IDEuNS0xLjUgMS41cy0xLjUtLjY3LTEuNS0xLjUuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjV6TTggMTVoOHYySDh2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbWFydHBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOUg3VjVoMTB2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcGVha2VyR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjIgMUg5LjhDOC44MSAxIDggMS44MSA4IDIuOHYxNC40YzAgLjk5LjgxIDEuNzkgMS44IDEuNzlsOC40LjAxYy45OSAwIDEuOC0uODEgMS44LTEuOFYyLjhjMC0uOTktLjgxLTEuOC0xLjgtMS44ek0xOCAxN2wtOC0uMDFWM2g4djE0em0tNC05YzEuMSAwIDItLjg5IDItMnMtLjktMi0yLTItMiAuODktMiAyIC45IDIgMiAyem0wIDhjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTUuOTMgOSAxNCA5cy0zLjUgMS41Ny0zLjUgMy41UzEyLjA3IDE2IDE0IDE2em0wLTVjLjgzIDAgMS41LjY3IDEuNSAxLjVTMTQuODMgMTQgMTQgMTRzLTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNXpNNiA1SDR2MTZhMiAyIDAgMCAwIDIgMmgxMHYtMkg2VjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcGVha2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAySDdjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMS45OSAyIDEuOTlMMTcgMjJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNNyAyMFY0aDEwdjE2SDd6bTUtMTFjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yYTIgMiAwIDEgMCAwIDR6bTAgMmMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjU5IDcuNDEgMTguMTcgMTFINnYyaDEyLjE3bC0zLjU5IDMuNTlMMTYgMThsNi02LTYtNi0xLjQxIDEuNDF6TTIgNnYxMmgyVjZIMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhYmxldEFuZHJvaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDBINkM0LjM0IDAgMyAxLjM0IDMgM3YxOGMwIDEuNjYgMS4zNCAzIDMgM2gxMmMxLjY2IDAgMy0xLjM0IDMtM1YzYzAtMS42Ni0xLjM0LTMtMy0zem0tNCAyMmgtNHYtMWg0djF6bTUuMjUtM0g0Ljc1VjNoMTQuNXYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhYmxldE1hYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAwaC0xNEEyLjUgMi41IDAgMCAwIDIgMi41djE5QTIuNSAyLjUgMCAwIDAgNC41IDI0aDE0YTIuNSAyLjUgMCAwIDAgMi41LTIuNXYtMTlBMi41IDIuNSAwIDAgMCAxOC41IDB6bS03IDIzYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXptNy41LTRINFYzaDE1djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGFibGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNmMwLTEuMS0uOS0yLTItMnptLTIgMTRINVY2aDE0djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVG95cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNzUgMTAuMDggMTcuNCA2LjA1QTIuOTc4IDIuOTc4IDAgMCAwIDE0LjU2IDRIOS40NEM4LjE1IDQgNyA0LjgyIDYuNiA2LjA1TDUuODEgOC40IDQuNDEgN2wuMjktLjI5QS45OTYuOTk2IDAgMSAwIDMuMjkgNS4zbC0yIDJBLjk5Ni45OTYgMCAxIDAgMi43IDguNzFsLjMtLjMgMS43OSAxLjc5QzMuMTggMTAuNzIgMiAxMi4yMiAyIDE0YzAgMS40OS44MyAyLjc4IDIuMDUgMy40N0EyLjk5MSAyLjk5MSAwIDAgMCA3IDIwYzEuMyAwIDIuNC0uODQgMi44Mi0yaDQuMzdjLjQxIDEuMTYgMS41MSAyIDIuODIgMiAxLjQ5IDAgMi43My0xLjEgMi45NS0yLjUzQzIxLjE3IDE2Ljc4IDIyIDE1LjQ5IDIyIDE0YzAtMS45NS0xLjQtMy41Ny0zLjI1LTMuOTJ6TTEzIDZoMS41NmExIDEgMCAwIDEgLjk1LjY4bDEuMSAzLjMySDEzVjZ6bS00LjUxLjY4QTEgMSAwIDAgMSA5LjQ0IDZIMTF2NEg3LjQxbC0uMDItLjAyIDEuMS0zLjN6TTcgMThjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMTAgMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0yLjQ5LTIuNjhBMy4wMjggMy4wMjggMCAwIDAgMTcgMTRjLTEuMyAwLTIuNC44NC0yLjgyIDJIOS44MkM5LjQgMTQuODQgOC4zIDE0IDcgMTRjLTEuMDMgMC0xLjk1LjUzLTIuNDkgMS4zMkM0LjIgMTQuOTcgNCAxNC41MSA0IDE0YzAtMS4xLjktMiAyLTJoMTJjMS4xIDAgMiAuOSAyIDIgMCAuNTEtLjIuOTctLjUxIDEuMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNWMwLTEuMS0uOS0yLTItMnptMCAxNEgzVjVoMTh2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb2dhbWVBc3NldE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgOWMuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41LTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNXptLTYuNjctMUgyMHY4aC0xLjE3bDEuODcgMS44N2MuNzUtLjI5IDEuMy0xLjAyIDEuMy0xLjg3VjhjMC0xLjEtLjktMi0yLTJIOC44M2wyIDJ6bTguOTUgMTQuNjFMMTUuMTcgMThINGMtMS4xIDAtMi0uOS0yLTJWOGMwLS44NS41NS0xLjU4IDEuMy0xLjg3TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQgMS40MnpNMTMuMTcgMTZsLTMtM0g5djJIN3YtMkg1di0yaDJWOS44M0w1LjE3IDhINHY4aDkuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb2dhbWVBc3NldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNkgzYy0xLjEgMC0yIC45LTIgMnY4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMEgzVjhoMTh2OHpNNiAxNWgydi0yaDJ2LTJIOFY5SDZ2Mkg0djJoMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNC41XCIsXCJjeVwiOlwiMTMuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTguNVwiLFwiY3lcIjpcIjEwLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F0Y2hPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3YzIuNzYgMCA1IDIuMjQgNSA1IDAgLjY0LS4xMyAxLjI1LS4zNSAxLjgybDEuNSAxLjVhNi45NjMgNi45NjMgMCAwIDAtMS43OS04Ljc5TDE1IDJIOWwtLjk2IDMuMjEgMi4xNCAyLjE0QzEwLjc1IDcuMTMgMTEuMzYgNyAxMiA3em0tMS41MS0zaDMuMDJsLjM4IDEuMjdjLS41NS0uMTYtMS45Ny0uNTEtMy43OCAwTDEwLjQ5IDR6TTIuODEgMi44MSAxLjM5IDQuMjJsNC40NiA0LjQ2YTYuOTYzIDYuOTYzIDAgMCAwIDEuNzkgOC43OUw5IDIyaDZsLjk2LTMuMjEgMy44MiAzLjgyIDEuNDEtMS40MUwyLjgxIDIuODF6TTEzLjUxIDIwaC0zLjAybC0uMzgtMS4yN2MuNTUuMTUgMS45Ny41MSAzLjc4IDBMMTMuNTEgMjB6TTEyIDE3Yy0yLjc2IDAtNS0yLjI0LTUtNSAwLS42NC4xMy0xLjI1LjM1LTEuODJsNi40NyA2LjQ3Yy0uNTcuMjItMS4xOC4zNS0xLjgyLjM1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjMxIDIgLjQxIDIuNDhDMTMuODcgNC4xNyAxMi45NiA0IDEyIDRjLS45NSAwLTEuODcuMTctMi43MS40N0w5LjcgMmg0LjYxbS40MSAxNy41MkwxNC4zMSAyMkg5LjdsLS40MS0yLjQ3Yy44NC4zIDEuNzYuNDcgMi43MS40Ny45NiAwIDEuODctLjE3IDIuNzItLjQ4TTE2IDBIOGwtLjk1IDUuNzNDNS4xOSA3LjE5IDQgOS40NSA0IDEyczEuMTkgNC44MSAzLjA1IDYuMjdMOCAyNGg4bC45Ni01LjczQzE4LjgxIDE2LjgxIDIwIDE0LjU0IDIwIDEycy0xLjE5LTQuODEtMy4wNC02LjI3TDE2IDB6bS00IDE4Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF1dG9Nb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMDMgMy41NmMtMS42Ny0xLjM5LTMuNzQtMi4zLTYuMDMtMi41MXYyLjAxYzEuNzMuMTkgMy4zMS44OCA0LjYxIDEuOTJsMS40Mi0xLjQyek0xMSAzLjA2VjEuMDVjLTIuMjkuMi00LjM2IDEuMTItNi4wMyAyLjUxbDEuNDIgMS40MkE4LjkyOCA4LjkyOCAwIDAgMSAxMSAzLjA2ek00Ljk4IDYuMzkgMy41NiA0Ljk3QzIuMTcgNi42NCAxLjI2IDguNzEgMS4wNSAxMWgyLjAxYy4xOS0xLjczLjg4LTMuMzEgMS45Mi00LjYxek0yMC45NCAxMWgyLjAxYy0uMjEtMi4yOS0xLjEyLTQuMzYtMi41MS02LjAzbC0xLjQyIDEuNDJBOC45MjggOC45MjggMCAwIDEgMjAuOTQgMTF6TTcgMTJsMy40NCAxLjU2TDEyIDE3bDEuNTYtMy40NEwxNyAxMmwtMy40NC0xLjU2TDEyIDdsLTEuNTYgMy40NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjFhOC45NiA4Ljk2IDAgMCAxLTcuNDYtNEg3di0ySDF2Nmgydi0yLjdjMS45OSAyLjg0IDUuMjcgNC43IDkgNC43IDQuODcgMCA5LTMuMTcgMTAuNDQtNy41NmwtMS45Ni0uNDVDMTkuMjUgMTguNDggMTUuOTIgMjEgMTIgMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCbGluZHNDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDExLjI1YzAgLjk3Ljc4IDEuNzUgMS43NSAxLjc1czEuNzUtLjc4IDEuNzUtMS43NUgyMnYtMmgtMnptLTItOGgtMlY5aDJ2MnptLTQgMEg2VjloOHYyem0wIDJ2Mkg2di0yaDh6bTIgMGgydjJoLTJ2LTJ6bTItNmgtMlY1aDJ2MnptLTQtMnYySDZWNWg4ek02IDE5di0yaDh2Mkg2em0xMCAwdi0yaDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsaW5kcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjNINHYxNkgydjJoMjB2LTJoLTJ6TTE2IDloMnYyaC0yVjl6bS0yIDJINlY5aDh2MnptNC00aC0yVjVoMnYyem0tNC0ydjJINlY1aDh6TTYgMTl2LTZoOHYxLjgyQTEuNzQ2IDEuNzQ2IDAgMCAwIDE1IDE4YTEuNzQ2IDEuNzQ2IDAgMCAwIDEtMy4xOFYxM2gydjZINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyb2FkY2FzdE9uSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDZjMC0xLjEtLjktMi0yLTJINHYyaDE2djIuNTljLjczLjI5IDEuNC42OSAyIDEuMTdWNnpNOCA5SDNjLS41IDAtMSAuNS0xIDF2OWMwIC41LjUgMSAxIDFoNWMuNSAwIDEtLjUgMS0xdi05YzAtLjUtLjUtMS0xLTF6bS0xIDlINHYtN2gzdjd6TTE3Ljc1IDE2Ljk3Yy4zLS4yMy41LS41Ny41LS45N2ExLjI1IDEuMjUgMCAwIDAtMi41IDBjMCAuNC4yLjc1LjUuOTdWMjJoMS41di01LjAzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMy41YTIuNSAyLjUgMCAwIDEgMi41IDIuNWMwIC42OS0uMjggMS4zMS0uNzMgMS43NmwxLjA2IDEuMDZDMjAuNTUgMTguMSAyMSAxNy4xIDIxIDE2YzAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0YzAgMS4xLjQ1IDIuMSAxLjE3IDIuODNsMS4wNi0xLjA2QTIuNSAyLjUgMCAwIDEgMTcgMTMuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOS41YTYuNSA2LjUgMCAwIDAtNi41IDYuNWMwIDEuNzkuNzMgMy40MiAxLjkgNC42bDEuMDYtMS4wNkMxMi41NiAxOC42MyAxMiAxNy4zOCAxMiAxNmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMS4zNy0uNTYgMi42Mi0xLjQ2IDMuNTJsMS4wNyAxLjA2QTYuNSA2LjUgMCAwIDAgMTcgOS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJvYWRjYXN0T25QZXJzb25hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTl2LTlsNi00LjUgNC4wOCAzLjA2Yy44MS0uMzIgMS42OS0uNTEgMi42MS0uNTRMMTAgMyAyIDl2MTJoOC43NmMtLjQ4LS42LS44OC0xLjI3LTEuMTctMkg0ek0xNyAxNC43NWMtLjY5IDAtMS4yNS41Ni0xLjI1IDEuMjUgMCAuNC4yLjc1LjUuOTdWMjJoMS41di01LjAzYy4zLS4yMy41LS41Ny41LS45NyAwLS42OS0uNTYtMS4yNS0xLjI1LTEuMjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEyYy0yLjIxIDAtNCAxLjc5LTQgNCAwIDEuMS40NSAyLjEgMS4xNyAyLjgzbDEuMDYtMS4wNkEyLjUgMi41IDAgMSAxIDE5LjUgMTZjMCAuNjktLjI4IDEuMzEtLjczIDEuNzZsMS4wNiAxLjA2QzIwLjU1IDE4LjEgMjEgMTcuMSAyMSAxNmMwLTIuMjEtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOS41YTYuNSA2LjUgMCAwIDAtNi41IDYuNWMwIDEuNzkuNzMgMy40MiAxLjkgNC42bDEuMDYtMS4wNkMxMi41NiAxOC42MyAxMiAxNy4zOCAxMiAxNmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMS4zNy0uNTYgMi42Mi0xLjQ2IDMuNTJsMS4wNyAxLjA2QTYuNSA2LjUgMCAwIDAgMTcgOS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3VydGFpbnNDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDIwdi0yaC0yek0xMyA1djE0aC0yVjVoMnpNNiA1aDN2MTRINlY1em05IDE0VjVoM3YxNGgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUN1cnRhaW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTlWM0g0djE2SDJ2MmgyMHYtMmgtMnptLTItOC4xNGMtMi4wNS0uNTgtMy42NC0yLjkzLTMuOTQtNS44NkgxOHY1Ljg2ek0xNS44MSAxMmMtMi4wNCAxLjM1LTMuNSAzLjk0LTMuNzYgN2gtLjA5Yy0uMjYtMy4wNi0xLjcyLTUuNjUtMy43Ni03IDIuMDQtMS4zNSAzLjUtMy45NCAzLjc2LTdoLjA5Yy4yNiAzLjA2IDEuNzIgNS42NSAzLjc2IDd6TTkuOTQgNWMtLjMgMi45My0xLjg5IDUuMjctMy45NCA1Ljg2VjVoMy45NHpNNiAxMy4xNGMyLjA1LjU4IDMuNjQgMi45MyAzLjk0IDUuODZINnYtNS44NnpNMTQuMDYgMTljLjMtMi45MyAxLjg5LTUuMjcgMy45NC01Ljg2VjE5aC0zLjk0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWxlY3RyaWNCb2x0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNjkgMi4yMSA0LjMzIDExLjQ5Yy0uNjQuNTgtLjI4IDEuNjUuNTggMS43M0wxMyAxNGwtNC44NSA2Ljc2Yy0uMjIuMzEtLjE5Ljc0LjA4IDEuMDEuMy4zLjc3LjMxIDEuMDguMDJsMTAuMzYtOS4yOGMuNjQtLjU4LjI4LTEuNjUtLjU4LTEuNzNMMTEgMTBsNC44NS02Ljc2Yy4yMi0uMzEuMTktLjc0LS4wOC0xLjAxYS43Ny43NyAwIDAgMC0xLjA4LS4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVsZWN0cmljTWV0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMWE5IDkgMCAwIDAtMTggMGMwIDMuOTIgMi41MSA3LjI0IDYgOC40OFYyMmgydi0yLjA2YTguMjYyIDguMjYyIDAgMCAwIDIgMFYyMmgydi0yLjUyYzMuNDktMS4yNCA2LTQuNTYgNi04LjQ4em0tOSA3Yy0zLjg2IDAtNy0zLjE0LTctN3MzLjE0LTcgNy03IDcgMy4xNCA3IDctMy4xNCA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA3aDh2Mkg4ek0xMi43NSAxMGwtMyAzTDExIDE0LjI1IDkuNzUgMTUuNWwxLjUgMS41IDMtM0wxMyAxMi43NWwxLjI1LTEuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbmVyZ3lTYXZpbmdzTGVhZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNjLTQuOCAwLTkgMy44Ni05IDkgMCAyLjEyLjc0IDQuMDcgMS45NyA1LjYxTDMgMTkuNTkgNC40MSAyMWwxLjk3LTEuOTdBOS4wMTIgOS4wMTIgMCAwIDAgMTIgMjFjMi4zIDAgNC42MS0uODggNi4zNi0yLjY0QTguOTUgOC45NSAwIDAgMCAyMSAxMlYzaC05em03IDljMCAxLjg3LS43MyAzLjYzLTIuMDUgNC45NUE2Ljk2IDYuOTYgMCAwIDEgMTIgMTljLTMuODYgMC03LTMuMTQtNy03IDAtMS45Ljc0LTMuNjggMi4xLTQuOTlBNi45NCA2Ljk0IDAgMCAxIDEyIDVoN3Y3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04LjQ2IDEyLjYzIDQuMDUuNC0yLjQ0IDMuMzNjLS4xMS4xNi0uMS4zOC4wNC41Mi4xNS4xNS40LjE2LjU2LjAxbDUuMTYtNC42M2MuMzMtLjMuMTUtLjg1LS4zLS44OWwtNC4wNS0uNCAyLjQ0LTMuMzNjLjExLS4xNi4xLS4zOC0uMDQtLjUyYS40MDUuNDA1IDAgMCAwLS41Ni0uMDFsLTUuMTYgNC42M2MtLjMyLjMtLjE0Ljg1LjMuODl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHYXNNZXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDRoLTFWMmgtMnYyaC0yVjJIOXYySDhDNS43OSA0IDQgNS43OSA0IDh2MTBjMCAyLjIxIDEuNzkgNCA0IDRoOGMyLjIxIDAgNC0xLjc5IDQtNFY4YzAtMi4yMS0xLjc5LTQtNC00em0yIDE0YzAgMS4xLS45IDItMiAySDhjLTEuMSAwLTItLjktMi0yVjhjMC0xLjEuOS0yIDItMmg4YzEuMSAwIDIgLjkgMiAydjEwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMTUuNTRDOS41IDE2LjkgMTAuNjIgMTggMTIgMThzMi41LTEuMSAyLjUtMi40NmMwLTEuMDktLjQ1LTEuNDEtMi41LTMuNzktMi4wNyAyLjQtMi41IDIuNzEtMi41IDMuNzl6TTggOGg4djJIOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhlYXRQdW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxOGMzLjMxIDAgNi0yLjY5IDYtNnMtMi42OS02LTYtNi02IDIuNjktNiA2IDIuNjkgNiA2IDZ6bS0uNzUtMi4wOGMtLjU1LS4xLTEuMDUtLjMyLTEuNS0uNjJsMS41LTEuNXYyLjEyem0xLjUgMHYtMi4xMWwxLjUgMS41Yy0uNDUuMy0uOTUuNTEtMS41LjYxem0yLjU2LTEuNjctMS41LTEuNWgyLjExYy0uMS41NS0uMzEgMS4wNS0uNjEgMS41em0uNjEtM2gtMi4xMWwxLjUtMS41Yy4zLjQ1LjUxLjk1LjYxIDEuNXptLTMuMTctMy4xN2MuNTUuMSAxLjA1LjMyIDEuNS42MmwtMS41IDEuNVY4LjA4ek0xMiAxMWMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tLjc1LTIuOTJ2Mi4xMWwtMS41LTEuNWMuNDUtLjMuOTUtLjUxIDEuNS0uNjF6TTguNjkgOS43NWwxLjUgMS41SDguMDhjLjEtLjU1LjMxLTEuMDUuNjEtMS41em0xLjUgMy0xLjUgMS41Yy0uMy0uNDQtLjUxLS45NS0uNjItMS41aDIuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb2RlRmFuT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGMtMS4wNiAwLTEuNjQuMjktMy45MSAxLjE5LS4xOS0uMTQtLjQtLjI3LS42Mi0uMzcuMjUtMS4wMy42MS0xLjUzIDEuMzMtMi4wNC44MS0uNTcgMS4yLTEuMzQgMS4yLTIuMjggMC0xLjIyLS45NS0yLjUtMi42LTIuNS0zLjA4IDAtNC45MiAxLjQ3LTUuMzIgMy4yNmwyLjMzIDIuMzNDMTAuMDcgNi42OSAxMCA2LjM4IDEwIDZjMC0xLjE4IDEuNC0yIDMuNC0yIC41NyAwIC42LjQyLjYuNSAwIC4yNy0uMDUuNDMtLjM1LjY1LTEuMjcuOS0xLjgzIDEuOTEtMi4xNiAzLjM5bC0uMDIuMSA3LjI1IDcuMjVjLjI0LjA2LjUuMTEuNzguMTEgMS4yMiAwIDIuNS0uOTUgMi41LTIuNkMyMiA5LjkxIDIwLjExIDggMTggOHptMS41IDZjLS4yNyAwLS40My0uMDUtLjY1LS4zNS0uOS0xLjI3LTEuOTEtMS44My0zLjM5LTIuMTZhMy4xMiAzLjEyIDAgMCAwLS4xNS0uNjJjMS44LS43NSAyLjE4LS44NyAyLjY5LS44NyAxLjE4IDAgMiAxLjQgMiAzLjQgMCAuNTctLjQyLjYtLjUuNnpNMS4zOSA0LjIybDMuODkgMy44OUM1LjA0IDguMDUgNC43OCA4IDQuNSA4IDMuMjggOCAyIDguOTUgMiAxMC42IDIgMTQuMDkgMy44OSAxNiA2IDE2YzEuMDYgMCAxLjY0LS4yOSAzLjkxLTEuMTkuMTkuMTQuNC4yNy42Mi4zNy0uMjUgMS4wMy0uNjEgMS41My0xLjMzIDIuMDQtLjgxLjU3LTEuMiAxLjM0LTEuMiAyLjI4IDAgMS4yMi45NSAyLjUgMi42IDIuNSAzLjA4IDAgNC45Mi0xLjQ3IDUuMzItMy4yNmwzLjg2IDMuODYgMS40MS0xLjQxTDIuODEgMi44MSAxLjM5IDQuMjJ6bTExLjEzIDExLjI0Yy4wMyAwIC4wNi0uMDIuMDktLjAybC45Ny45N2MuMzUuOS40MiAxLjIxLjQyIDEuNTkgMCAxLjE4LTEuNCAyLTMuNCAyLS41NyAwLS42LS40Mi0uNi0uNSAwLS4yNy4wNS0uNDMuMzUtLjY1IDEuMjgtLjg5IDEuODMtMS45MSAyLjE3LTMuMzl6bS0zLjk4LTIuOTRjLjAzLjIyLjA4LjQyLjE1LjYyLTEuOC43NC0yLjE4Ljg2LTIuNjkuODYtMS4xOCAwLTItMS40LTItMy40IDAtLjU3LjQyLS42LjUtLjYuMjcgMCAuNDMuMDUuNjUuMzUuODkgMS4yOCAxLjkxIDEuODMgMy4zOSAyLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmVzdENhbVdpcmVkU3RhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxYy0uMTUgMCAuMTEtLjAyLTQuMjguNDJDOC40NyAxLjc1IDYgNC40OCA2IDcuNzVzMi40NyA2IDUuNzIgNi4zM2wxLjkuMTktLjU2Ljg1Yy0uMzUtLjA4LS43LS4xMi0xLjA2LS4xMi0yLjc2IDAtNSAyLjI0LTUgNXYyYzAgLjU1LjQ1IDEgMSAxaDhjLjU1IDAgMS0uNDUgMS0xdi0yYzAtMS42Ny0uODMtMy4xNS0yLjA5LTQuMDZsLjk3LTEuNDVjLjA0IDAgLjA5LjAxLjEzLjAxIDEuMDkgMCAyLS44OSAyLTJWM0MxOCAxLjg5IDE3LjA5IDEgMTYgMXptLTEgMjBIOXYtMWMwLTEuNjUgMS4zNS0zIDMtM3MzIDEuMzUgMyAzdjF6TTggNy43NWMwLTIuMjUgMS42OS00LjExIDMuOTItNC4zNEwxNiAzbC4wMyA5LjUtNC4xMS0uNDJBNC4zMzYgNC4zMzYgMCAwIDEgOCA3Ljc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT2lsQmFycmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMy4wNUM5IDE0LjY4IDEwLjM0IDE2IDEyIDE2czMtMS4zMiAzLTIuOTVjMC0xLjMxLS41My0xLjY5LTMtNC41NS0yLjQ4IDIuODgtMyAzLjI1LTMgNC41NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTNjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFoLTFWNWgxYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDFoMXY2SDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDFoMXY2SDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDFoMTZjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFoLTF2LTZoMXptLTMgNkg3di02Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xVjVoMTB2NmMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMXY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHJvcGFuZVRhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA2LjE0VjRjMC0xLjEtLjktMi0yLTJIOWMtMS4xIDAtMiAuOS0yIDJ2Mi4xNGMtMS43Mi40NS0zIDItMyAzLjg2djhjMCAyLjIxIDEuNzkgNCA0IDRoOGMyLjIxIDAgNC0xLjc5IDQtNHYtOGMwLTEuODYtMS4yOC0zLjQxLTMtMy44NnpNOSA0aDZ2MmgtMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMUg5VjR6TTggOGg4YzEuMSAwIDIgLjkgMiAydjNINnYtM2MwLTEuMS45LTIgMi0yem04IDEySDhjLTEuMSAwLTItLjktMi0ydi0zaDEydjNjMCAxLjEtLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQcm9wYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNmgtMVY1YzAtMS4xLS45LTItMi0yaC00Yy0xLjEgMC0yIC45LTIgMnYxSDdjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDZ2M2gydi0zaDZ2M2gydi0zYzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02em0tNy0xaDR2MWgtNFY1em03IDExSDdjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTRoMTBjMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb2xsZXJTaGFkZXNDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDguMjVjMCAuOTcuNzggMS43NSAxLjc1IDEuNzVzMS43NS0uNzggMS43NS0xLjc1SDIydi0yaC0yek0xOCA1djEwSDZWNWgxMnpNNiAxOXYtMmg1djJINnptNyAwdi0yaDV2MmgtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvbGxlclNoYWRlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjNINHYxNkgydjJoMjB2LTJoLTJ6TTE4IDV2Nkg2VjVoMTJ6TTYgMTl2LTZoNXYxLjgyQTEuNzQ2IDEuNzQ2IDAgMCAwIDEyIDE4YTEuNzQ2IDEuNzQ2IDAgMCAwIDEtMy4xOFYxM2g1djZINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbnNvckRvb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA0djE2SDZWNGgxMm0wLTJINmMtMS4xIDAtMiAuOS0yIDJ2MThoMTZWNGMwLTEuMS0uOS0yLTItMnptLTIuNSA4LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNVMxNyAxMi44MyAxNyAxMnMtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2Vuc29yT2NjdXBpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMWMxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xek0xMiAxMmMtMS44NCAwLTMuNTYuNS01LjAzIDEuMzctLjYxLjM1LS45NyAxLjAyLS45NyAxLjcyVjE3aDEydi0xLjkxYzAtLjctLjM2LTEuMzYtLjk3LTEuNzJBOS44NDQgOS44NDQgMCAwIDAgMTIgMTJ6bS0zLjg2IDNjMS4xOC0uNjUgMi41MS0xIDMuODYtMXMyLjY4LjM1IDMuODUgMUg4LjE0ek0yMS4yMyA4LjE1bDEuODUtLjc3QTEyLjA1NiAxMi4wNTYgMCAwIDAgMTYuNjIuOTJsLS43NyAxLjg1YzIuNDIgMS4wMiA0LjM2IDIuOTYgNS4zOCA1LjM4ek04LjE1IDIuNzcgNy4zOC45MkExMi4wODkgMTIuMDg5IDAgMCAwIC45MiA3LjM4bDEuODUuNzdjMS4wMi0yLjQyIDIuOTYtNC4zNiA1LjM4LTUuMzh6TTIuNzcgMTUuODVsLTEuODUuNzdjMS4yMiAyLjkxIDMuNTUgNS4yNSA2LjQ2IDYuNDZsLjc3LTEuODVhMTAuMTE3IDEwLjExNyAwIDAgMS01LjM4LTUuMzh6TTE1Ljg1IDIxLjIzbC43NyAxLjg1YzIuOTEtMS4yMiA1LjI1LTMuNTUgNi40Ni02LjQ2bC0xLjg1LS43N2ExMC4xMTcgMTAuMTE3IDAgMCAxLTUuMzggNS4zOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbnNvcldpbmRvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDJ2N2gtNHYtMWgtNHYxSDZWNGgxMnpNNiAyMHYtN2gxMnY3SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaGllbGRNb29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMiA0IDV2Ni4wOWMwIDUuMDUgMy40MSA5Ljc2IDggMTAuOTEgNC41OS0xLjE1IDgtNS44NiA4LTEwLjkxVjVsLTgtM3ptNiA5LjA5YzAgNC0yLjU1IDcuNy02IDguODMtMy40NS0xLjEzLTYtNC44Mi02LTguODN2LTQuN2w2LTIuMjUgNiAyLjI1djQuN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4wMSAxNC4zM2MxLjc1IDIuMTcgNS4xMiAyLjI0IDYuOTYuMDcuMjMtLjI3LjA4LS42OC0uMjYtLjc0YTQuNDkxIDQuNDkxIDAgMCAxLTMuMTgtMi4yIDQuNTAzIDQuNTAzIDAgMCAxLS4zMi0zLjg2LjQ1My40NTMgMCAwIDAtLjUxLS42Yy0zLjM0LjYyLTQuODkgNC42MS0yLjY5IDcuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTb2xhclBvd2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTJINEwyIDIyaDIwbC0yLTEwem0tMS42NCAyIC40IDJIMTN2LTJoNS4zNnpNMTEgMTR2Mkg1LjI0bC40LTJIMTF6bS02LjE2IDRIMTF2Mkg0LjQ0bC40LTJ6TTEzIDIwdi0yaDYuMTZsLjQgMkgxM3pNMTEgOGgydjNoLTJ6TTE1Ljc2NCA3LjIwNWwxLjQxNS0xLjQxNEwxOS4zIDcuOTEybC0xLjQxNCAxLjQxNHpNNC43MDUgNy45MTMgNi44MjYgNS43OSA4LjI0IDcuMjA2IDYuMTIgOS4zMjd6TTMgMmgzdjJIM3pNMTggMmgzdjJoLTN6TTEyIDdjMi43NiAwIDUtMi4yNCA1LTVoLTJjMCAxLjY1LTEuMzUgMy0zIDNTOSAzLjY1IDkgMkg3YzAgMi43NiAyLjI0IDUgNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmVydGljYWxTaGFkZXNDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDIwdi0yaC0yek0xMyA1aDEuNXYxNEgxM1Y1em0tMiAxNEg5LjVWNUgxMXYxNHpNNiA1aDEuNXYxNEg2VjV6bTEwLjUgMTRWNUgxOHYxNGgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmVydGljYWxTaGFkZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDIwdi0yaC0yek0xNCA1djE0aC00VjVoNHpNNiA1aDJ2MTRINlY1em0xMCAxNFY1aDJ2MTRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaW5kUG93ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDNoNnYySDR6TTEgN2g1djJIMXpNMyAxOWg1djJIM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuMjEgMTguNjEtMi4yOC00LjFhMi4wNSAyLjA1IDAgMCAwLTEuMjYtLjk3bC0yLjY5LS42N2EyLjk1IDIuOTUgMCAwIDAtLjM3LTEuMzNsMy45Ni02LjU5Yy42NS0xLjA4LjMtMi40OC0uNzgtMy4xM2EyLjI4OCAyLjI4OCAwIDAgMC0yLjczLjNsLTMuNDMgMy4yMWMtLjQuMzctLjYzLjktLjYzIDEuNDV2My40Yy0uNDcuMTctLjg5LjQ1LTEuMjMuODJIMy4yOGEyLjI3OSAyLjI3OSAwIDAgMC0uNjMgNC40N2w0LjUxIDEuMjljLjE4LjA1LjM3LjA4LjU1LjA4LjM2IDAgLjcyLS4xIDEuMDMtLjI5bDIuMjQtMS4zNGMuMjkuMjYuNjMuNDcgMS4wMi42MVYyMWMtMS4xIDAtMiAuOS0yIDJoNmMwLTEuMS0uOS0yLTItMnYtNC4yOGw0LjYxIDQuNjFjLjQ1LjQ1IDEuMDMuNjcgMS42MS42Ny41OCAwIDEuMTctLjIyIDEuNjEtLjY3LjcyLS43Mi44OC0xLjgzLjM4LTIuNzJ6TTcuNzIgMTQuODQgMy4yIDEzLjU1YS4yNzkuMjc5IDAgMCAxLS4yLS4yN2MwLS4xNS4xMy0uMjguMjgtLjI4aDYuNzNjMCAuMTUuMDEuMy4wMy40NGwtMi4zMiAxLjR6TTEzIDE0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTEtMy44NlY2Ljc4bDMuNDMtMy4yMWMuMDUtLjA1LjE5LS4xMi4zNC0uMDQuMTMuMDguMTguMjUuMS4zOGwtMy43NCA2LjI0LS4xMy0uMDF6bTYuNDIgOS43OGMtLjA1LjA1LS4yNC4xNi0uNCAwbC00Ljg1LTQuODVjLjA4LS4wOS4xNi0uMTguMjQtLjI4bDIuNzguNjkgMi4yOCA0LjFjLjA2LjExLjA0LjI1LS4wNS4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTEwTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMS41aDIuNWMuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xSDEzYy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXptLjUtNC41SDE1djNoLTEuNVY3ek03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek04LjUgMTEuNUgxMHYtNkg3VjdoMS41ek0xMy41IDE4LjVIMTVWMTdoMmMuNTUgMCAxLS40NSAxLTF2LTIuNWMwLS41NS0uNDUtMS0xLTFoLTMuNXY2ek0xNSAxNGgxLjV2MS41SDE1VjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxMU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMTEuNUgxMXYtNkg4VjdoMS41ek0xNC41IDExLjVIMTZ2LTZoLTNWN2gxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxMk1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgMTEuNUgxMHYtNkg3VjdoMS41ek0xNi41IDEwaC0zVjloMmMuNTUgMCAxLS40NSAxLTFWNi41YzAtLjU1LS40NS0xLTEtMUgxMlY3aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxdjIuNWg0LjVWMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxM01wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDExLjVIMTB2LTZIN1Y3aDEuNXpNMTYuNSAxMC41di00YzAtLjU1LS40NS0xLTEtMUgxMlY3aDN2MWgtMnYxaDJ2MWgtM3YxLjVoMy41Yy41NSAwIDEtLjQ1IDEtMXpNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMTRNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTIuNXY2SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV6bTMgM0gxNVYxNGgxLjV2MS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSAxMS41SDEwdi02SDdWN2gxLjV6TTE1IDExLjVoMS41VjEwaDFWOC41aC0xdi0zSDE1djNoLTEuNXYtM0gxMlYxMGgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMTVNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTguNUgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41djZ6TTE1IDE0aDEuNXYxLjVIMTVWMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDExLjVIMTB2LTZIN1Y3aDEuNXpNMTYuNSAxMC41VjljMC0uNTUtLjQ1LTEtMS0xaC0yVjdoM1Y1LjVIMTJWOWgzdjFoLTN2MS41aDMuNWMuNTUgMCAxLS40NSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxNk1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMS41aDIuNWMuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTFoLTJWN2gzVjUuNUgxM2MtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bS41LTIuNUgxNXYxLjVoLTEuNVY5ek04LjUgMTEuNUgxMHYtNkg3VjdoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMTdNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTguNUgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41djZ6TTE1IDE0aDEuNXYxLjVIMTVWMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDExLjVIMTB2LTZIN1Y3aDEuNXpNMTMuMjUgMTEuNUgxNWwxLjQ2LTQuNzFjLjE5LS42NC0uMjktMS4yOS0uOTYtMS4yOUgxMlY3aDIuNjJsLTEuMzcgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMThNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTguNUgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41djZ6TTE1IDE0aDEuNXYxLjVIMTVWMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDExLjVIMTB2LTZIN1Y3aDEuNXpNMTMgMTEuNWgyLjVjLjU1IDAgMS0uNDUgMS0xdi00YzAtLjU1LS40NS0xLTEtMUgxM2MtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bS41LTVIMTVWOGgtMS41VjYuNXptMCAyLjVIMTV2MS41aC0xLjVWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTE5TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek0xMy41IDE4LjVIMTVWMTdoMmMuNTUgMCAxLS40NSAxLTF2LTIuNWMwLS41NS0uNDUtMS0xLTFoLTMuNXY2ek0xNSAxNGgxLjV2MS41SDE1VjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSAxMS41SDEwdi02SDdWN2gxLjV6TTE2LjUgMTAuNXYtNGMwLS41NS0uNDUtMS0xLTFIMTNjLS41NSAwLTEgLjQ1LTEgMVY4YzAgLjU1LjQ1IDEgMSAxaDJ2MWgtM3YxLjVoMy41Yy41NSAwIDEtLjQ1IDEtMXpNMTUgOGgtMS41VjYuNUgxNVY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMjBNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTIuNXY2SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV6bTMgM0gxNVYxNGgxLjV2MS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDExLjVoMi41Yy41NSAwIDEtLjQ1IDEtMXYtNGMwLS41NS0uNDUtMS0xLTFIMTRjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxem0uNS00LjVIMTZ2M2gtMS41Vjd6TTExIDEwSDhWOWgyYy41NSAwIDEtLjQ1IDEtMVY2LjVjMC0uNTUtLjQ1LTEtMS0xSDYuNVY3aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxdjIuNUgxMVYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTIxTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTEuNUgxNnYtNmgtM1Y3aDEuNXpNMTIgMTBIOVY5aDJjLjU1IDAgMS0uNDUgMS0xVjYuNWMwLS41NS0uNDUtMS0xLTFINy41VjdoM3YxaC0yYy0uNTUgMC0xIC40NS0xIDF2Mi41SDEyVjEwek03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek0xNSAxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41djZIMTVWMTd6bTAtM2gxLjV2MS41SDE1VjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMjJNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTIuNXY2SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV6bTMgM0gxNVYxNGgxLjV2MS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDEwSDhWOWgyYy41NSAwIDEtLjQ1IDEtMVY2LjVjMC0uNTUtLjQ1LTEtMS0xSDYuNVY3aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxdjIuNUgxMVYxMHpNMTcuNSAxMGgtM1Y5aDJjLjU1IDAgMS0uNDUgMS0xVjYuNWMwLS41NS0uNDUtMS0xLTFIMTNWN2gzdjFoLTJjLS41NSAwLTEgLjQ1LTEgMXYyLjVoNC41VjEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMjNNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTIuNXY2SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV6bTMgM0gxNVYxNGgxLjV2MS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDEwSDhWOWgyYy41NSAwIDEtLjQ1IDEtMVY2LjVjMC0uNTUtLjQ1LTEtMS0xSDYuNVY3aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxdjIuNUgxMVYxMHpNMTcuNSAxMC41di00YzAtLjU1LS40NS0xLTEtMUgxM1Y3aDN2MWgtMnYxaDJ2MWgtM3YxLjVoMy41Yy41NSAwIDEtLjQ1IDEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTI0TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek0xNyAxMi41aC0zLjV2NkgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMXptLS41IDNIMTVWMTRoMS41djEuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxMEg4VjloMmMuNTUgMCAxLS40NSAxLTFWNi41YzAtLjU1LS40NS0xLTEtMUg2LjVWN2gzdjFoLTJjLS41NSAwLTEgLjQ1LTEgMXYyLjVIMTFWMTB6TTE2IDExLjVoMS41VjEwaDFWOC41aC0xdi0zSDE2djNoLTEuNXYtM0gxM1YxMGgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMk1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDEwaC0zVjloMmMuNTUgMCAxLS40NSAxLTFWNi41YzAtLjU1LS40NS0xLTEtMUgxMFY3aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxdjIuNWg0LjVWMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUzMEZwc1NlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNHYyaDV2Mkg1djJoNHYySDR2Mmg1YzEuMSAwIDItLjkgMi0ydi0xLjVjMC0uODMtLjE3LTEuNS0xLTEuNS44MyAwIDEtLjY3IDEtMS41VjZjMC0xLjEtLjktMi0yLTJINHptMTQgMGMxLjEgMCAyIC45IDIgMnY2YzAgMS4xLS45IDItMiAyaC0zYy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoM3ptMCAyaC0zdjZoM1Y2ek01IDIySDN2LTVoMnY1em00IDBIN3YtNWgydjV6bTQgMGgtMnYtNWgydjV6bTggMGgtNnYtNWg2djV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUzTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek0xMy41IDEyLjV2NkgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41em0zIDNIMTVWMTRoMS41djEuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDEwLjV2LTRjMC0uNTUtLjQ1LTEtMS0xSDEwVjdoM3YxaC0ydjFoMnYxaC0zdjEuNWgzLjVjLjU1IDAgMS0uNDUgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lNE1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDExLjVIMTRWMTBoMVY4LjVoLTF2LTNoLTEuNXYzSDExdi0zSDkuNVYxMGgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lNU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDEwLjVWOWMwLS41NS0uNDUtMS0xLTFoLTJWN2gzVjUuNUgxMFY5aDN2MWgtM3YxLjVoMy41Yy41NSAwIDEtLjQ1IDEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTYwRnBzU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNnY2aC0zVjZoM3ptMC0yaC0zYy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoM2MxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNyAyVjRINmMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDNjMS4xIDAgMi0uOSAyLTJ2LTJjMC0xLjEtLjktMi0yLTJINlY2aDV6bS0yIDR2Mkg2di0yaDN6TTUgMjJIM3YtNWgydjV6bTQgMEg3di01aDJ2NXptNCAwaC0ydi01aDJ2NXptOCAwaC02di01aDZ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTZNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTguNUgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41djZ6TTE1IDE0aDEuNXYxLjVIMTVWMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTEuNWgyLjVjLjU1IDAgMS0uNDUgMS0xVjljMC0uNTUtLjQ1LTEtMS0xaC0yVjdoM1Y1LjVIMTFjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxem0uNS0yLjVIMTN2MS41aC0xLjVWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTdNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTguNUgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41djZ6TTE1IDE0aDEuNXYxLjVIMTVWMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMjUgMTEuNUgxM2wxLjQ2LTQuNzFjLjE5LS42NC0uMjktMS4yOS0uOTYtMS4yOUgxMFY3aDIuNjJsLTEuMzcgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lOE1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxMS41aDIuNWMuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xSDExYy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXptLjUtNUgxM1Y4aC0xLjVWNi41em0wIDIuNUgxM3YxLjVoLTEuNVY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lOU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDEwLjV2LTRjMC0uNTUtLjQ1LTEtMS0xSDExYy0uNTUgMC0xIC40NS0xIDFWOGMwIC41NS40NSAxIDEgMWgydjFoLTN2MS41aDMuNWMuNTUgMCAxLS40NSAxLTF6TTEzIDhoLTEuNVY2LjVIMTNWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZEFQaG90byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDZoLTMuMTdMMTYgNGgtNnYyaDUuMTJsMS44MyAySDIxdjEySDV2LTlIM3Y5YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnpNOCAxNGMwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01LTIuMjQtNS01LTUtNSAyLjI0LTUgNXptNS0zYzEuNjUgMCAzIDEuMzUgMyAzcy0xLjM1IDMtMyAzLTMtMS4zNS0zLTMgMS4zNS0zIDMtM3pNNSA2aDNWNEg1VjFIM3YzSDB2MmgzdjNoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZFBob3RvQWx0ZXJuYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyMEg0VjZoOVY0SDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTloLTJ2OXptLTcuNzktMy4xNy0xLjk2LTIuMzZMNS41IDE4aDExbC0zLjU0LTQuNzF6TTIwIDRWMWgtMnYzaC0zYy4wMS4wMSAwIDIgMCAyaDN2Mi45OWMuMDEuMDEgMiAwIDIgMFY2aDNWNGgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZFRvUGhvdG9zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTYtNEg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRIOFY0aDEydjEyem0tNy0xaDJ2LTRoNFY5aC00VjVoLTJ2NEg5djJoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkanVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ5IDIgMiA2LjQ5IDIgMTJzNC40OSAxMCAxMCAxMCAxMC00LjQ5IDEwLTEwUzE3LjUxIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTMtOGMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtMyAxLjM0LTMgMy0zIDMgMS4zNCAzIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbmltYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyYy0yLjcxIDAtNS4wNSAxLjU0LTYuMjIgMy43OGE3LjA2MiA3LjA2MiAwIDAgMC0zIDNBNy4wMTQgNy4wMTQgMCAwIDAgMiAxNWMwIDMuODcgMy4xMyA3IDcgNyAyLjcxIDAgNS4wNS0xLjU0IDYuMjItMy43OGE3LjA2MiA3LjA2MiAwIDAgMCAzLTNBNy4wMTQgNy4wMTQgMCAwIDAgMjIgOWMwLTMuODctMy4xMy03LTctN3pNOSAyMGE1LjAwMiA1LjAwMiAwIDAgMS00LThjMCAzLjg3IDMuMTMgNyA3IDctLjg0LjYzLTEuODggMS0zIDF6bTMtM2E1LjAwMiA1LjAwMiAwIDAgMS00LThjMCAzLjg2IDMuMTMgNi45OSA3IDctLjg0LjYzLTEuODggMS0zIDF6bTQuNy0zLjNjLS41My4xOS0xLjEuMy0xLjcuMy0yLjc2IDAtNS0yLjI0LTUtNSAwLS42LjExLTEuMTcuMy0xLjcuNTMtLjE5IDEuMS0uMyAxLjctLjMgMi43NiAwIDUgMi4yNCA1IDUgMCAuNi0uMTEgMS4xNy0uMyAxLjd6TTE5IDEyYzAtMy44Ni0zLjEzLTYuOTktNy03YTUuMDAyIDUuMDAyIDAgMCAxIDcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFzc2lzdGFudFBob3RvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMi4zNiA2IC4wOC4zOS4zMiAxLjYxSDE4djZoLTMuMzZsLS4wOC0uMzktLjMyLTEuNjFIN1Y2aDUuMzZNMTQgNEg1djE3aDJ2LTdoNS42bC40IDJoN1Y2aC01LjZMMTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFzc2lzdGFudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDRsMyAzIDMtM2g0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTQuODNsLS41OS41OUwxMiAyMC4xN2wtMS41OS0xLjU5LS41OC0uNThINVY0aDE0djE0em0tNy0xIDEuODgtNC4xMkwxOCAxMWwtNC4xMi0xLjg4TDEyIDVsLTEuODggNC4xMkw2IDExbDQuMTIgMS44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF1ZGlvdHJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDN2MTAuNTVjLS41OS0uMzQtMS4yNy0uNTUtMi0uNTUtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00VjdoNFYzaC02em0tMiAxNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvQXdlc29tZU1vc2FpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNXYxNGEyIDIgMCAwIDAgMiAyaDZWM0g1YTIgMiAwIDAgMC0yIDJ6bTYgMTRINVY1aDR2MTR6TTE5IDNoLTZ2OGg4VjVjMC0xLjEtLjktMi0yLTJ6bTAgNmgtNFY1aDR2NHpNMTMgMjFoNmMxLjEgMCAyLS45IDItMnYtNmgtOHY4em0yLTZoNHY0aC00di00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXV0b0F3ZXNvbWVNb3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDRjLTEuMSAwLTIgLjktMiAydjEwaDJWNGgxMFYyem00IDRIOGMtMS4xIDAtMiAuOS0yIDJ2MTBoMlY4aDEwVjZ6bTIgNGgtOGMtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJ2LThjMC0xLjEtLjktMi0yLTJ6bTAgMTBoLTh2LThoOHY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXV0b0F3ZXNvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSA5IDEuMjUtMi43NUwyMyA1bC0yLjc1LTEuMjVMMTkgMWwtMS4yNSAyLjc1TDE1IDVsMi43NSAxLjI1ek0xOSAxNWwtMS4yNSAyLjc1TDE1IDE5bDIuNzUgMS4yNUwxOSAyM2wxLjI1LTIuNzVMMjMgMTlsLTIuNzUtMS4yNXpNMTEuNSA5LjUgOSA0IDYuNSA5LjUgMSAxMmw1LjUgMi41TDkgMjBsMi41LTUuNUwxNyAxMmwtNS41LTIuNXptLTEuNTEgMy40OUw5IDE1LjE3bC0uOTktMi4xOEw1LjgzIDEybDIuMTgtLjk5TDkgOC44M2wuOTkgMi4xOCAyLjE4Ljk5LTIuMTguOTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvRml4SGlnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwIDcgLjk0LTIuMDZMMjMgNGwtMi4wNi0uOTRMMjAgMWwtLjk0IDIuMDZMMTcgNGwyLjA2Ljk0ek04LjUgN2wuOTQtMi4wNkwxMS41IDRsLTIuMDYtLjk0TDguNSAxbC0uOTQgMi4wNkw1LjUgNGwyLjA2Ljk0ek0yMCAxMi41bC0uOTQgMi4wNi0yLjA2Ljk0IDIuMDYuOTQuOTQgMi4wNi45NC0yLjA2TDIzIDE1LjVsLTIuMDYtLjk0ek0xNy43MSA5LjEybC0yLjgzLTIuODNjLS4yLS4xOS0uNDUtLjI5LS43MS0uMjktLjI2IDAtLjUxLjEtLjcxLjI5TDIuMjkgMTcuNDZhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDIuODMgMi44M2MuMi4yLjQ1LjMuNzEuM3MuNTEtLjEuNzEtLjI5bDExLjE3LTExLjE3Yy4zOS0uMzkuMzktMS4wMyAwLTEuNDJ6bS0zLjU0LS43IDEuNDEgMS40MUwxNC40MSAxMSAxMyA5LjU5bDEuMTctMS4xN3pNNS44MyAxOS41OWwtMS40MS0xLjQxTDExLjU5IDExIDEzIDEyLjQxbC03LjE3IDcuMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvRml4Tm9ybWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAgNyAuOTQtMi4wNkwyMyA0bC0yLjA2LS45NEwyMCAxbC0uOTQgMi4wNkwxNyA0bDIuMDYuOTR6TTE3LjcxIDkuMTJsLTIuODMtMi44M2MtLjItLjE5LS40NS0uMjktLjcxLS4yOS0uMjYgMC0uNTEuMS0uNzEuMjlMMi4yOSAxNy40NmEuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMi44MyAyLjgzYy4yLjIuNDUuMy43MS4zcy41MS0uMS43MS0uMjlsMTEuMTctMTEuMTdjLjM5LS4zOS4zOS0xLjAzIDAtMS40MnptLTMuNTQtLjcgMS40MSAxLjQxTDE0LjQxIDExIDEzIDkuNTlsMS4xNy0xLjE3ek01LjgzIDE5LjU5bC0xLjQxLTEuNDFMMTEuNTkgMTEgMTMgMTIuNDFsLTcuMTcgNy4xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF1dG9GaXhPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMCA3IC45NC0yLjA2TDIzIDRsLTIuMDYtLjk0TDIwIDFsLS45NCAyLjA2TDE3IDRsMi4wNi45NHpNMTQuMTcgOC40MmwxLjQxIDEuNDEtMS40NiAxLjQ2IDEuNDEgMS40MSAyLjE3LTIuMTdhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0yLjgzLTIuODNhLjk4NC45ODQgMCAwIDAtLjctLjI5Yy0uMjYgMC0uNTEuMS0uNzEuMjlsLTIuMTcgMi4xNyAxLjQxIDEuNDEgMS40Ny0xLjQ1ek0xLjM5IDQuMjJsNy4wNyA3LjA3LTYuMTcgNi4xN2EuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMi44MyAyLjgzYy4yLjIuNDUuMy43MS4zcy41MS0uMS43MS0uMjlsNi4xNy02LjE3IDcuMDcgNy4wNyAxLjQxLTEuNDFMMi44MSAyLjgxIDEuMzkgNC4yMnptOS45IDkuOS01LjQ2IDUuNDYtMS40MS0xLjQxIDUuNDYtNS40NiAxLjQxIDEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvU3RvcmllcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjQ3IDUuMmMtLjQ3LS4yNC0uOTYtLjQ0LTEuNDctLjYxdjEyLjAzYy0xLjE0LS40MS0yLjMxLS42Mi0zLjUtLjYyLTEuOSAwLTMuNzguNTQtNS41IDEuNThWNS40OEMxMC4zOCA0LjU1IDguNTEgNCA2LjUgNGMtMS43OSAwLTMuNDguNDQtNC45NyAxLjItLjMzLjE2LS41My41MS0uNTMuODh2MTIuMDhjMCAuNTguNDcuOTkgMSAuOTkuMTYgMCAuMzItLjA0LjQ4LS4xMkMzLjY5IDE4LjQgNS4wNSAxOCA2LjUgMThjMi4wNyAwIDMuOTguODIgNS41IDIgMS41Mi0xLjE4IDMuNDMtMiA1LjUtMiAxLjQ1IDAgMi44MS40IDQuMDIgMS4wNC4xNi4wOC4zMi4xMi40OC4xMi41MiAwIDEtLjQxIDEtLjk5VjYuMDhjMC0uMzctLjItLjcyLS41My0uODh6TTEwIDE2LjYyQzguODYgMTYuMjEgNy42OSAxNiA2LjUgMTZzLTIuMzYuMjEtMy41LjYyVjYuNzFDNC4xMSA2LjI0IDUuMjggNiA2LjUgNmMxLjIgMCAyLjM5LjI1IDMuNS43MnY5Ljl6TTE5IC41bC01IDVWMTVsNS00LjVWLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvZnBzU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMDMgNi4zaC0uMDZsLTEuMDIgMi44OWgyLjF6TTMgMTdoMnY1SDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE1YzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02LTYgMi42OS02IDYgMi42OSA2IDYgNnptLS42My0xMGgxLjI1bDIuNjMgN2gtMS4yMWwtLjYzLTEuNzloLTIuODNMOS45NiAxMkg4Ljc0bDIuNjMtN3pNNyAxN2gydjVIN3pNMTEgMTdoMnY1aC0yek0xNSAxN2g2djVoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCZWR0aW1lT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yNyA0LjQ5Yy0uMTMuNTktLjIgMS4xNS0uMjQgMS43MWwyLjA1IDIuMDVjLS4yNy0yLjA1LjEtNC4yMiAxLjI2LTYuMjMtLjEyIDAtLjIzLS4wMS0uMzUtLjAxYTkuOSA5LjkgMCAwIDAtNS41IDEuNjVsMS40NiAxLjQ2Yy40Mi0uMjQuODYtLjQ2IDEuMzItLjYzem0tNy44OC0uMjcgMi4yNyAyLjI3QTkuOTM0IDkuOTM0IDAgMCAwIDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgMi4wNCAwIDMuOTItLjYzIDUuNS0xLjY3bDIuMjggMi4yOCAxLjQxLTEuNDFMMi44MSAyLjgxIDEuMzkgNC4yMnptMy43NCAzLjc0IDEwLjkyIDEwLjkyQzE0Ljg0IDE5LjYgMTMuNDUgMjAgMTIgMjBjLTQuNDEgMC04LTMuNTktOC04IDAtMS40OC40Mi0yLjg1IDEuMTMtNC4wNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJlZHRpbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjI3IDQuNDljLTEuNjMgNy41NCAzLjc1IDEyLjQxIDcuNjYgMTMuOEE3Ljk5MyA3Ljk5MyAwIDAgMSAxMiAyMGMtNC40MSAwLTgtMy41OS04LTggMC0zLjQ1IDIuMi02LjQgNS4yNy03LjUxbTIuNzItMi40OEM2LjQgMi4wMSAyIDYuNTQgMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMCAzLjcxIDAgNi45My0yLjAyIDguNjYtNS4wMi03LjUxLS4yNS0xMi4wOS04LjQzLTguMzItMTQuOTdoLS4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsdXJDaXJjdWxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgOWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpNNyA5LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0zIDdjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0tMy0zYy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMy02Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTQgOWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLTEuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bTMgNmMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTAtNGMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0yLTMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTAtMy41Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCbHVyTGluZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE3LjVjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjUtMS41LjY3LTEuNSAxLjUuNjcgMS41IDEuNSAxLjV6TTkgMTNjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMC00Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6TTMgMjFoMTh2LTJIM3Yyek01IDkuNWMuODMgMCAxLjUtLjY3IDEuNS0xLjVTNS44MyA2LjUgNSA2LjUgMy41IDcuMTcgMy41IDggNC4xNyA5LjUgNSA5LjV6bTAgNGMuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNS42NyAxLjUgMS41IDEuNXpNOSAxN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem04LS41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMyAzdjJoMThWM0gzem0xNCA1LjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0wIDRjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xMyA5Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAgNGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wIDRjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsdXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTRcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEzLjggMTEuNDguMi4wMmMuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNWwuMDIuMmMuMDkuNjcuNjEgMS4xOSAxLjI4IDEuMjh6TTE0IDMuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bS00IDBjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOFwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTAuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCIxOFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAyMC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptNy03Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptLTE4IDBjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA5LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em03IDExYy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDUuMjcgNiA4Ljc3bC4yOC4yOEw2IDljLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xYzAtLjEtLjAzLS4xOS0uMDYtLjI4bDIuODEgMi44MWMtLjcxLjExLTEuMjUuNzMtMS4yNSAxLjQ3IDAgLjgzLjY3IDEuNSAxLjUgMS41Ljc0IDAgMS4zNi0uNTQgMS40Ny0xLjI1bDIuODEgMi44MUEuODc1Ljg3NSAwIDAgMCAxNCAxN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTFjMC0uMS0uMDMtLjE5LS4wNi0uMjhsMy43OCAzLjc4aC4wMWwxLjQxLTEuNDFMMy45MSAzLjg2IDIuNSA1LjI3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmx1ck9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxM2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC04Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bS0zIC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNNiA1Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTE1IDUuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTE0IDdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMC0zLjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0tMTEgMTBjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em03IDdjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0wLTE3Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTAgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wIDUuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTggLjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCA0Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtOGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLTRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMyA4LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek0xNCAxN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bS00LTEyYy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptMCA4LjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptNC00LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0wLTRjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJpZ2h0bmVzczEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjNC40MSAwIDggMy41OSA4IDhzLTMuNTkgOC04IDgtOC0zLjU5LTgtOCAzLjU5LTggOC04bTAtMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyaWdodG5lc3MyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0YzQuNDEgMCA4IDMuNTkgOCA4cy0zLjU5IDgtOCA4Yy0uMzQgMC0uNjgtLjAyLTEuMDEtLjA3QzEwLjkgMTcuNzcgMTIgMTQuOTUgMTIgMTJzLTEuMS01Ljc3LTMuMDEtNy45M0M5LjMyIDQuMDIgOS42NiA0IDEwIDRtMC0yYy0xLjgyIDAtMy41My41LTUgMS4zNUM3Ljk5IDUuMDggMTAgOC4zIDEwIDEycy0yLjAxIDYuOTItNSA4LjY1QzYuNDcgMjEuNSA4LjE4IDIyIDEwIDIyYzUuNTIgMCAxMC00LjQ4IDEwLTEwUzE1LjUyIDIgMTAgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyaWdodG5lc3MzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi43IDQuOTFBOCA4IDAgMCAxIDE3IDEyYTggOCAwIDAgMS00LjMgNy4wOWMxLjQ2LTIgMi4zLTQuNDYgMi4zLTcuMDlzLS44NC01LjA5LTIuMy03LjA5TTkgMmMtMS4wNSAwLTIuMDUuMTYtMyAuNDYgNC4wNiAxLjI3IDcgNS4wNiA3IDkuNTRzLTIuOTQgOC4yNy03IDkuNTRjLjk1LjMgMS45NS40NiAzIC40NiA1LjUyIDAgMTAtNC40OCAxMC0xMFMxNC41MiAyIDkgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyaWdodG5lc3M0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OUwyMy4zMSAxMiAyMCA4LjY5em0tMiA1Ljc5VjE4aC0zLjUyTDEyIDIwLjQ4IDkuNTIgMThINnYtMy41MkwzLjUyIDEyIDYgOS41MlY2aDMuNTJMMTIgMy41MiAxNC40OCA2SDE4djMuNTJMMjAuNDggMTIgMTggMTQuNDh6TTEyLjI5IDdjLS43NCAwLTEuNDUuMTctMi4wOC40NiAxLjcyLjc5IDIuOTIgMi41MyAyLjkyIDQuNTRzLTEuMiAzLjc1LTIuOTIgNC41NGMuNjMuMjkgMS4zNC40NiAyLjA4LjQ2IDIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJpZ2h0bmVzczUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6bS0yIDUuNzlWMThoLTMuNTJMMTIgMjAuNDggOS41MiAxOEg2di0zLjUyTDMuNTIgMTIgNiA5LjUyVjZoMy41MkwxMiAzLjUyIDE0LjQ4IDZIMTh2My41MkwyMC40OCAxMiAxOCAxNC40OHpNMTIgNi41Yy0zLjAzIDAtNS41IDIuNDctNS41IDUuNXMyLjQ3IDUuNSA1LjUgNS41IDUuNS0yLjQ3IDUuNS01LjUtMi40Ny01LjUtNS41LTUuNXptMCA5Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyaWdodG5lc3M2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OUwyMy4zMSAxMiAyMCA4LjY5em0tMiA1Ljc5VjE4aC0zLjUyTDEyIDIwLjQ4IDkuNTIgMThINnYtMy41MkwzLjUyIDEyIDYgOS41MlY2aDMuNTJMMTIgMy41MiAxNC40OCA2SDE4djMuNTJMMjAuNDggMTIgMTggMTQuNDh6TTEyIDYuNXYxMWMzLjAzIDAgNS41LTIuNDcgNS41LTUuNVMxNS4wMyA2LjUgMTIgNi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJpZ2h0bmVzczcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6bS0yIDUuNzlWMThoLTMuNTJMMTIgMjAuNDggOS41MiAxOEg2di0zLjUyTDMuNTIgMTIgNiA5LjUyVjZoMy41MkwxMiAzLjUyIDE0LjQ4IDZIMTh2My41MkwyMC40OCAxMiAxOCAxNC40OHpNMTIgNi41Yy0zLjAzIDAtNS41IDIuNDctNS41IDUuNXMyLjQ3IDUuNSA1LjUgNS41IDUuNS0yLjQ3IDUuNS01LjUtMi40Ny01LjUtNS41LTUuNXptMCA5Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCcm9rZW5JbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINXYtNC41OGwuOTkuOTkgNC00IDQgNCA0LTMuOTlMMTkgMTIuNDNWMTl6bTAtOS40MS0xLjAxLTEuMDEtNCA0LjAxLTQtNC00IDQtLjk5LTFWNWgxNHY0LjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJ1c2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTZjLjU1IDAgMSAuNDUgMSAxIDAgMS4xLS45IDItMiAyLS4xNyAwLS4zMy0uMDItLjUtLjA1LjMxLS41NS41LTEuMjEuNS0xLjk1IDAtLjU1LjQ1LTEgMS0xTTE4LjY3IDNjLS4yNiAwLS41MS4xLS43MS4yOUw5IDEyLjI1IDExLjc1IDE1bDguOTYtOC45NmEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTEuMzQtMS4zNGMtLjItLjItLjQ1LS4yOS0uNy0uMjl6TTcgMTRjLTEuNjYgMC0zIDEuMzQtMyAzIDAgMS4zMS0xLjE2IDItMiAyIC45MiAxLjIyIDIuNDkgMiA0IDIgMi4yMSAwIDQtMS43OSA0LTQgMC0xLjY2LTEuMzQtMy0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCdXJzdE1vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDVoMnYxNEgxem00IDBoMnYxNEg1em0xNyAwSDEwYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xVjZjMC0uNTUtLjQ1LTEtMS0xem0tMSAxMkgxMVY3aDEwdjEwem0tMy41Ny00LjM4LTIgMi41N0wxNCAxMy40N2wtMiAyLjUyaDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW1lcmFBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRoLTMuMTdMMTUgMkg5TDcuMTcgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDQuMDVsMS44My0yaDQuMjRsMS44MyAySDIwdjEyek0xMiA3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMCA4Yy0xLjY1IDAtMy0xLjM1LTMtM3MxLjM1LTMgMy0zIDMgMS4zNSAzIDMtMS4zNSAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbWVyYUZyb250IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDIwdjJoNXYybDMtMy0zLTN2MnptOSAwaDV2MmgtNXpNMTEuOTkgOEMxMy4xIDggMTQgNy4xIDE0IDZzLS45LTItMi4wMS0yUzEwIDQuOSAxMCA2cy44OSAyIDEuOTkgMnpNMTcgMEg3QzUuOSAwIDUgLjkgNSAydjE0YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWMmMwLTEuMS0uOS0yLTItMnptMCAxNkg3di0yaDEwdjJ6bTAtMy41YzAtMS42Ny0zLjMzLTIuNS01LTIuNXMtNSAuODMtNSAyLjVWMmgxMHYxMC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FtZXJhUmVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAyMHYyaDV2MmwzLTMtMy0zdjJ6bTkgMGg1djJoLTV6bTMtMjBIN0M1LjkgMCA1IC45IDUgMnYxNGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjJjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YyaDEwdjE0em0tNS05YzEuMSAwIDItLjkgMS45OS0yIDAtMS4xLS45LTItMi0yUzEwIDMuOSAxMCA1cy44OSAyIDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbWVyYVJvbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDVjMC0xLjEtLjktMi0yLTJoLTFWMmMwLS41NS0uNDUtMS0xLTFINmMtLjU1IDAtMSAuNDUtMSAxdjFINGMtMS4xIDAtMiAuOS0yIDJ2MTVjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yaDhWNWgtOHptNiAxM2gtOHYySDRWNWgzVjNoMnYyaDN2Mmg4djExek05IDE1aDJ2Mkg5em0wLTdoMnYySDl6bTQgN2gydjJoLTJ6bTAtN2gydjJoLTJ6bTQgN2gydjJoLTJ6bTAtN2gydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjI1IDIuMjYtLjA4LS4wNC0uMDEuMDJDMTMuNDYgMi4wOSAxMi43NCAyIDEyIDIgNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMGMwLTQuNzUtMy4zMS04LjcyLTcuNzUtOS43NHpNMTkuNDEgOWgtNy45OWwyLjcxLTQuN2MyLjQuNjYgNC4zNSAyLjQyIDUuMjggNC43ek0xMy4xIDQuMDggMTAuMjcgOWwtMS4xNSAyTDYuNCA2LjNBNy45NTggNy45NTggMCAwIDEgMTIgNGMuMzcgMCAuNzQuMDMgMS4xLjA4ek01LjcgNy4wOSA4LjU0IDEybDEuMTUgMkg0LjI2QzQuMSAxMy4zNiA0IDEyLjY5IDQgMTJjMC0xLjg1LjY0LTMuNTUgMS43LTQuOTF6TTQuNTkgMTVoNy45OGwtMi43MSA0LjdBOC4wMzMgOC4wMzMgMCAwIDEgNC41OSAxNXptNi4zMSA0LjkxTDE0Ljg5IDEzbDIuNzIgNC43QTggOCAwIDAgMSAxMiAyMGMtLjM4IDAtLjc0LS4wNC0xLjEtLjA5em03LjQtMy00LTYuOTFoNS40M2MuMTcuNjQuMjcgMS4zMS4yNyAyIDAgMS44NS0uNjQgMy41NS0xLjcgNC45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhc2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA5SDF2MTFjMCAxLjExLjg5IDIgMiAyaDE3di0ySDNWOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNVYzYzAtMS4xLS45LTItMi0yaC00Yy0xLjEgMC0yIC45LTIgMnYySDV2MTFjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1aC01em0tNi0yaDR2MmgtNFYzem05IDEzSDdWN2gxNHY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2VudGVyRm9jdXNTdHJvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEyYzAtMi43Ni0yLjI0LTUtNS01cy01IDIuMjQtNSA1IDIuMjQgNSA1IDUgNS0yLjI0IDUtNXptLTUgM2MtMS42NSAwLTMtMS4zNS0zLTNzMS4zNS0zIDMtMyAzIDEuMzUgMyAzLTEuMzUgMy0zIDN6bS03IDBIM3Y0YzAgMS4xLjkgMiAyIDJoNHYtMkg1di00ek01IDVoNFYzSDVjLTEuMSAwLTIgLjktMiAydjRoMlY1em0xNC0yaC00djJoNHY0aDJWNWMwLTEuMS0uOS0yLTItMnptMCAxNmgtNHYyaDRjMS4xIDAgMi0uOSAyLTJ2LTRoLTJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNlbnRlckZvY3VzV2VhayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNUgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6TTUgNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTcgM2MtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTctMTFoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yem0wIDE2aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb2xsZWN0aW9uc0Jvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTYtNEg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS0zIDJ2NWwtMS0uNzVMMTUgOVY0aDJ6bTMgMTJIOFY0aDV2OWwzLTIuMjVMMTkgMTNWNGgxdjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29sbGVjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDR2MTJIOFY0aDEybTAtMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS04LjUgOS42NyAxLjY5IDIuMjYgMi40OC0zLjFMMTkgMTVIOXpNMiA2djE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2SDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb2xvckxlbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMkM2LjQ5IDIyIDIgMTcuNTEgMiAxMlM2LjQ5IDIgMTIgMnMxMCA0LjA0IDEwIDljMCAzLjMxLTIuNjkgNi02IDZoLTEuNzdjLS4yOCAwLS41LjIyLS41LjUgMCAuMTIuMDUuMjMuMTMuMzMuNDEuNDcuNjQgMS4wNi42NCAxLjY3QTIuNSAyLjUgMCAwIDEgMTIgMjJ6bTAtMThjLTQuNDEgMC04IDMuNTktOCA4czMuNTkgOCA4IDhjLjI4IDAgLjUtLjIyLjUtLjVhLjU0LjU0IDAgMCAwLS4xNC0uMzVjLS40MS0uNDYtLjYzLTEuMDUtLjYzLTEuNjVhMi41IDIuNSAwIDAgMSAyLjUtMi41SDE2YzIuMjEgMCA0LTEuNzkgNC00IDAtMy44Ni0zLjU5LTctOC03elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjYuNVwiLFwiY3lcIjpcIjExLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjkuNVwiLFwiY3lcIjpcIjcuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTQuNVwiLFwiY3lcIjpcIjcuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTcuNVwiLFwiY3lcIjpcIjExLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29sb3JpemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjY2IDUuNDEuOTIuOTItMi42OSAyLjY5LS45Mi0uOTIgMi42OS0yLjY5TTE3LjY3IDNjLS4yNiAwLS41MS4xLS43MS4yOWwtMy4xMiAzLjEyLTEuOTMtMS45MS0xLjQxIDEuNDEgMS40MiAxLjQyTDMgMTYuMjVWMjFoNC43NWw4LjkyLTguOTIgMS40MiAxLjQyIDEuNDEtMS40MS0xLjkyLTEuOTIgMy4xMi0zLjEyYy40LS40LjQtMS4wMy4wMS0xLjQybC0yLjM0LTIuMzRjLS4yLS4xOS0uNDUtLjI5LS43LS4yOXpNNi45MiAxOSA1IDE3LjA4bDguMDYtOC4wNiAxLjkyIDEuOTJMNi45MiAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbXBhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg1djJoMlYxaC0ydjJ6bTAgMTVINWw1LTZ2NnptOS0xNWgtNXYyaDV2MTNsLTUtNnY5aDVjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRyYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJjNS41MiAwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTB6bTEtMTcuOTNjMy45NC40OSA3IDMuODUgNyA3Ljkzcy0zLjA1IDcuNDQtNyA3LjkzVjQuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb250cm9sUG9pbnREdXBsaWNhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhoLTJ2M2gtM3YyaDN2M2gydi0zaDN2LTJoLTNWOHpNMiAxMmMwLTIuNzkgMS42NC01LjIgNC4wMS02LjMyVjMuNTJDMi41MiA0Ljc2IDAgOC4wOSAwIDEyczIuNTIgNy4yNCA2LjAxIDguNDh2LTIuMTZBNi45OSA2Ljk5IDAgMCAxIDIgMTJ6bTEzLTljLTQuOTYgMC05IDQuMDQtOSA5czQuMDQgOSA5IDkgOS00LjA0IDktOS00LjA0LTktOS05em0wIDE2Yy0zLjg2IDAtNy0zLjE0LTctN3MzLjE0LTcgNy03IDcgMy4xNCA3IDctMy4xNCA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRyb2xQb2ludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgN2gtMnY0SDd2Mmg0djRoMnYtNGg0di0yaC00Vjd6bS0xLTVDNi40OSAyIDIgNi40OSAyIDEyczQuNDkgMTAgMTAgMTAgMTAtNC40OSAxMC0xMFMxNy41MSAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3JvcDE2OSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDdINWMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6bTAgOEg1VjloMTR2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyb3AzMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDZINWMtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTBINVY4aDE0djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcm9wNTQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg1VjZoMTR2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcm9wNzUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1SDVjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxMkg1VjdoMTR2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcm9wRGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3JvcEZyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNXY0aDJWNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ6bTIgMTBIM3Y0YzAgMS4xLjkgMiAyIDJoNHYtMkg1di00em0xNCA0aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0em0wLTE2aC00djJoNHY0aDJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyb3BMYW5kc2NhcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDVINWMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDEySDVWN2gxNHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyb3BPcmlnaW5hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0em0tNS4wNC02LjcxLTIuNzUgMy41NC0xLjk2LTIuMzZMNi41IDE3aDExbC0zLjU0LTQuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcm9wUG9ydHJhaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDNIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDdWNWgxMHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyb3BSb3RhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNDcgMjEuNDlDNC4yIDE5LjkzIDEuODYgMTYuNzYgMS41IDEzSDBjLjUxIDYuMTYgNS42NiAxMSAxMS45NSAxMSAuMjMgMCAuNDQtLjAyLjY2LS4wM0w4LjggMjAuMTVsLTEuMzMgMS4zNHpNMTIuMDUgMGMtLjIzIDAtLjQ0LjAyLS42Ni4wNGwzLjgxIDMuODEgMS4zMy0xLjMzQzE5LjggNC4wNyAyMi4xNCA3LjI0IDIyLjUgMTFIMjRjLS41MS02LjE2LTUuNjYtMTEtMTEuOTUtMTF6TTE2IDE0aDJWOGEyIDIgMCAwIDAtMi0yaC02djJoNnY2em0tOCAyVjRINnYySDR2MmgydjhhMiAyIDAgMCAwIDIgMmg4djJoMnYtMmgydi0ySDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcm9wU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA0SDZjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg2VjZoMTJ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcm9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxNWgyVjdjMC0xLjEtLjktMi0yLTJIOXYyaDh2OHpNNyAxN1YxSDV2NEgxdjJoNHYxMGMwIDEuMS45IDIgMiAyaDEwdjRoMnYtNGg0di0ySDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDdXJyZW5jeUJpdGNvaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4wNiAxMS41N2MuNTktLjY5Ljk0LTEuNTkuOTQtMi41NyAwLTEuODYtMS4yNy0zLjQzLTMtMy44N1YzaC0ydjJoLTJWM0g5djJINnYyaDJ2MTBINnYyaDN2Mmgydi0yaDJ2Mmgydi0yYzIuMjEgMCA0LTEuNzkgNC00IDAtMS40NS0uNzgtMi43My0xLjk0LTMuNDN6TTEwIDdoNGMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDJoLTRWN3ptNSAxMGgtNXYtNGg1YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUN1cnJlbmN5RnJhbmMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA1VjNIN3YxM0g1djJoMnYzaDJ2LTNoNHYtMkg5di0zaDh2LTJIOVY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3VycmVuY3lMaXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA4Ljc2VjNoMnY0LjUxTDE1IDV2Mi4zNmwtNCAyLjUxLjAxIDIuMzVMMTUgOS43MnYyLjM2bC00IDIuNTFWMTljMi43NiAwIDUtMi4yNCA1LTVoMmMwIDMuODctMy4xMyA3LTcgN0g5di01LjE2bC0zIDEuODh2LTIuMzZsMy0xLjg4di0yLjM2TDYgMTN2LTIuMzZsMy0xLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3VycmVuY3lQb3VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDIxYzEuOTMgMCAzLjYyLTEuMTcgNC0zbC0xLjc1LS44OEMxNiAxOC4yMSAxNS4zMyAxOSAxNCAxOUg5LjFjLjgzLTEgMS41LTIuMzQgMS41LTQgMC0uMzUtLjAzLS42OS0uMDgtMUgxNHYtMkg5LjgyQzkgMTAuNDIgOCA5LjYgOCA4YTMuNSAzLjUgMCAwIDEgNi43OC0xLjIyTDE2LjYzIDZjLS44LTIuMDUtMi43OS0zLjUtNS4xMy0zLjVDOC40NiAyLjUgNiA0Ljk2IDYgOGMwIDEuNzguNzkgMi45IDEuNDkgNEg2djJoMi40N2MuMDguMzEuMTMuNjQuMTMgMSAwIDIuNy0yLjYgNC0yLjYgNHYyaDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDdXJyZW5jeVJ1YmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNSAzSDd2OUg1djJoMnYySDV2MmgydjNoMnYtM2g0di0ySDl2LTJoNC41YzMuMDQgMCA1LjUtMi40NiA1LjUtNS41UzE2LjU0IDMgMTMuNSAzem0wIDlIOVY1aDQuNUMxNS40MyA1IDE3IDYuNTcgMTcgOC41UzE1LjQzIDEyIDEzLjUgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDdXJyZW5jeVJ1cGVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNjYgN2MtLjU2LTEuMTgtMS43Ni0yLTMuMTYtMkg2VjNoMTJ2MmgtMy4yNmMuNDguNTguODQgMS4yNiAxLjA1IDJIMTh2MmgtMi4wMmMtLjI1IDIuOC0yLjYxIDUtNS40OCA1aC0uNzNsNi43MyA3aC0yLjc3TDcgMTR2LTJoMy41YzEuNzYgMCAzLjIyLTEuMyAzLjQ2LTNINlY3aDcuNjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDdXJyZW5jeVllbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjkyIDExSDE4djJoLTV2Mmg1djJoLTV2NGgtMnYtNEg2di0yaDV2LTJINnYtMmg0LjA4TDUgM2gyLjM3TDEyIDEwLjI5IDE2LjYzIDNIMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDdXJyZW5jeVl1YW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy4yOCAxMkgxOHYyaC01djdoLTJ2LTdINnYtMmg0LjcyTDUgM2gyLjM3TDEyIDEwLjI5IDE2LjYzIDNIMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZWJsdXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCIxOFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjNcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjNcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjIxXCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiM1wiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjEwXCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjE4XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDN2MmMzLjg2IDAgNyAzLjE0IDcgN3MtMy4xNCA3LTcgN3YyYzQuOTYgMCA5LTQuMDQgOS05cy00LjA0LTktOS05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVoYXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE2djJoMjB2LTJIMnptMC01djJoMjB2LTJIMnptMC01djJoMjBWNkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGV0YWlscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDMgMiAyMWgyMEwxMiAzem0xIDUuOTJMMTguNiAxOUgxM1Y4Ljkyem0tMiAwVjE5SDUuNEwxMSA4LjkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlydHlMZW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNWgtMy4xN0wxNSAzSDlMNy4xNyA1SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxNGgtNy4wMmMtLjIyLS44NC0uNTItMS43Ni0uMTMtMi4zMy44MS0xLjEyIDIuNjcgMS43NyAzLjgxLS4wOS43Ny0xLjU3LTEuNTgtMS4yOS0xLjY0LTIuMTItLjA1LS44NCAzLjY4LjE3IDMuMDQtMS42Ni0uNjEtMS43My0yLjQyLjQ4LTIuNzYtLjUzLS41OC0xLjc0IDQuNy0xLjY4IDIuODUtNC4wMS0xLjc2LTIuMjItMi40NyAyLjg1LTQuNDEgMi4zMy0xLjM0LS4zNi0xLjAxLTIuODgtMi42NS0yLjQ0LTEuODguNTEgMS4wMyAyLjIgMCAyLjg2LS45Ni42My0xLjcyLS45Mi0yLjUxLTEuMTktLjItLjA3LS42OS0uMDUtLjkxLjE5LS43OC44Ni4yOCAxLjE2LjI1IDEuOTEtLjAyLjc1LTEuNTkuNDktMS41MSAxLjQ5LjEyIDEuNiAyLjE4LjQ1IDIuNCAxLjI0LjU1IDEuOTgtMS44OSAyLjE1LS41IDMuMjcgMS41My43MSAxLjkxLTEuOTQgMi44LTEuMzUuNTguMzguMyAxLjQ1LjE2IDIuNDNINFY3aDQuMDVsMS44My0yaDQuMjRsMS44MyAySDIwdjEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4yOCAxNy4xNWMwIC40OC4zOS44Ni44Ni44Ni40OCAwIC44Ni0uMzguODYtLjg2cy0uMzktLjg2LS44Ni0uODZjLS40OCAwLS44Ni4zOC0uODYuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC4wNiA5LjAyLjkyLjkyTDUuOTIgMTlINXYtLjkybDkuMDYtOS4wNk0xNy42NiAzYy0uMjUgMC0uNTEuMS0uNy4yOWwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0yLjM0LTIuMzRjLS4yLS4yLS40NS0uMjktLjcxLS4yOXptLTMuNiAzLjE5TDMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFdXJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTguNUE2LjQ4IDYuNDggMCAwIDEgOS4yNCAxNUgxNWwxLTJIOC41OGMtLjA1LS4zMy0uMDgtLjY2LS4wOC0xcy4wMy0uNjcuMDgtMUgxNWwxLTJIOS4yNEE2LjQ5MSA2LjQ5MSAwIDAgMSAxNSA1LjVjMS42MSAwIDMuMDkuNTkgNC4yMyAxLjU3TDIxIDUuM0E4Ljk1NSA4Ljk1NSAwIDAgMCAxNSAzYy0zLjkyIDAtNy4yNCAyLjUxLTguNDggNkgzbC0xIDJoNC4wNmE4LjI2MiA4LjI2MiAwIDAgMCAwIDJIM2wtMSAyaDQuNTJjMS4yNCAzLjQ5IDQuNTYgNiA4LjQ4IDYgMi4zMSAwIDQuNDEtLjg3IDYtMi4zbC0xLjc4LTEuNzdjLTEuMTMuOTgtMi42IDEuNTctNC4yMiAxLjU3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXhwb3N1cmVOZWcxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDExdjJoOHYtMkg0em0xNSA3aC0yVjcuMzhMMTQgOC40VjYuN0wxOC43IDVoLjN2MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHBvc3VyZU5lZzIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjA1IDE2LjI5IDIuODYtMy4wN2MuMzgtLjM5LjcyLS43OSAxLjA0LTEuMTguMzItLjM5LjU5LS43OC44Mi0xLjE3cy40MS0uNzguNTQtMS4xNy4xOS0uNzkuMTktMS4xOGMwLS41My0uMDktMS4wMi0uMjctMS40NnMtLjQ0LS44MS0uNzgtMS4xMWMtLjM0LS4zMS0uNzctLjU0LTEuMjYtLjcxQTUuNzIgNS43MiAwIDAgMCAxNi40NyA1Yy0uNjkgMC0xLjMxLjExLTEuODUuMzItLjU0LjIxLTEgLjUxLTEuMzYuODgtLjM3LjM3LS42NS44LS44NCAxLjMtLjE4LjQ3LS4yNy45Ny0uMjggMS41aDIuMTRjLjAxLS4zMS4wNS0uNi4xMy0uODcuMDktLjI5LjIzLS41NC40LS43NS4xOC0uMjEuNDEtLjM3LjY4LS40OXMuNi0uMTguOTYtLjE4Yy4zMSAwIC41OC4wNS44MS4xNXMuNDMuMjUuNTkuNDMuMjguNC4zNy42NWMuMDguMjUuMTMuNTIuMTMuODEgMCAuMjItLjAzLjQzLS4wOC42NS0uMDYuMjItLjE1LjQ1LS4yOS43LS4xNC4yNS0uMzIuNTMtLjU2LjgzLS4yMy4zLS41Mi42NS0uODggMS4wM2wtNC4xNyA0LjU1VjE4SDIxdi0xLjcxaC01Ljk1ek0yIDExdjJoOHYtMkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXhwb3N1cmVQbHVzMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgN0g4djRINHYyaDR2NGgydi00aDR2LTJoLTRWN3ptMTAgMTFoLTJWNy4zOEwxNSA4LjRWNi43TDE5LjcgNWguM3YxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV4cG9zdXJlUGx1czIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2LjA1IDE2LjI5IDIuODYtMy4wN2MuMzgtLjM5LjcyLS43OSAxLjA0LTEuMTguMzItLjM5LjU5LS43OC44Mi0xLjE3cy40MS0uNzguNTQtMS4xN2MuMTMtLjM5LjE5LS43OS4xOS0xLjE4IDAtLjUzLS4wOS0xLjAyLS4yNy0xLjQ2cy0uNDQtLjgxLS43OC0xLjExYy0uMzQtLjMxLS43Ny0uNTQtMS4yNi0uNzFBNS43MiA1LjcyIDAgMCAwIDE3LjQ3IDVjLS42OSAwLTEuMzEuMTEtMS44NS4zMi0uNTQuMjEtMSAuNTEtMS4zNi44OC0uMzcuMzctLjY1LjgtLjg0IDEuMy0uMTguNDctLjI3Ljk3LS4yOCAxLjVoMi4xNGMuMDEtLjMxLjA1LS42LjEzLS44Ny4wOS0uMjkuMjMtLjU0LjQtLjc1LjE4LS4yMS40MS0uMzcuNjgtLjQ5cy42LS4xOC45Ni0uMThjLjMxIDAgLjU4LjA1LjgxLjE1cy40My4yNS41OS40My4yOC40LjM3LjY1Yy4wOC4yNS4xMy41Mi4xMy44MSAwIC4yMi0uMDMuNDMtLjA4LjY1LS4wNi4yMi0uMTUuNDUtLjI5LjctLjE0LjI1LS4zMi41My0uNTYuODMtLjIzLjMtLjUyLjY1LS44OCAxLjAzbC00LjE3IDQuNTVWMThIMjJ2LTEuNzFoLTUuOTV6TTggN0g2djRIMnYyaDR2NGgydi00aDR2LTJIOFY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXhwb3N1cmVaZXJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4xNCAxMi41YzAgMS0uMSAxLjg1LS4zIDIuNTVzLS40OCAxLjI3LS44MyAxLjdjLS4zNi40NC0uNzkuNzUtMS4zLjk1cy0xLjA3LjMtMS43LjNjLS42MiAwLTEuMTgtLjEtMS42OS0uMy0uNTEtLjItLjk1LS41MS0xLjMxLS45NXMtLjY1LTEuMDEtLjg1LTEuN2MtLjItLjctLjMtMS41NS0uMy0yLjU1di0yLjA0YzAtMSAuMS0xLjg1LjMtMi41NS4yLS43LjQ4LTEuMjYuODQtMS42OS4zNi0uNDMuOC0uNzQgMS4zMS0uOTNDMTAuODEgNS4xIDExLjM4IDUgMTIgNWMuNjMgMCAxLjE5LjEgMS43LjI5LjUxLjE5Ljk1LjUgMS4zMS45My4zNi40My42NC45OS44NCAxLjY5LjIuNy4zIDEuNTQuMyAyLjU1djIuMDRoLS4wMXptLTIuMTEtMi4zNmMwLS42NC0uMDUtMS4xOC0uMTMtMS42Mi0uMDktLjQ0LS4yMi0uNzktLjQtMS4wNi0uMTctLjI3LS4zOS0uNDYtLjY0LS41OC0uMjUtLjEzLS41NC0uMTktLjg2LS4xOXMtLjYxLjA2LS44Ni4xOC0uNDcuMzEtLjY0LjU4LS4zMS42Mi0uNCAxLjA2LS4xMy45OC0uMTMgMS42MnYyLjY3YzAgLjY0LjA1IDEuMTguMTQgMS42Mi4wOS40NS4yMy44MS40IDEuMDlzLjM5LjQ4LjY0LjYxLjU0LjE5Ljg3LjE5LjYyLS4wNi44Ny0uMTkuNDYtLjMzLjYzLS42MS4zLS42NC4zOS0xLjA5LjEzLS45OS4xMy0xLjYydi0yLjY2aC0uMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHBvc3VyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMS40MSAyTDUgMTcuNTlWNWgxMi41OXpNNi40MSAxOSAxOSA2LjQxVjE5SDYuNDF6TTYgN2g1djEuNUg2em0xMCA1LjVoLTEuNXYyaC0yVjE2aDJ2MkgxNnYtMmgydi0xLjVoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGYWNlUmV0b3VjaGluZ05hdHVyYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS44OSAxMC43NWMuMDcuNDEuMTEuODIuMTEgMS4yNSAwIDQuNDEtMy41OSA4LTggOHMtOC0zLjU5LTgtOGMwLS4wNS4wMS0uMSAwLS4xNCAyLjYtLjk4IDQuNjktMi45OSA1Ljc0LTUuNTUgMy4zOCA0LjE0IDcuOTcgMy43MyA4Ljk5IDMuNjFsLS44OS0xLjkzYy0uMTMuMDEtNC42Mi4zOC03LjE4LTMuODYgMS4wMS0uMTYgMS43MS0uMTUgMi41OS0uMDEgMi41Mi0xLjE1IDEuOTMtLjg5IDIuNzYtMS4yNkE5LjYyIDkuNjIgMCAwIDAgMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwYzAtMS40My0uMy0yLjc4LS44NC00LjAxbC0xLjI3IDIuNzZ6TTguMDggNS4wM2E4LjA0NiA4LjA0NiAwIDAgMS0zLjY2IDQuNDQgOC4wNDYgOC4wNDYgMCAwIDEgMy42Ni00LjQ0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjMgNC41LTIuNC0xLjFMMTkuNSAxbC0xLjEgMi40TDE2IDQuNWwyLjQgMS4xTDE5LjUgOGwxLjEtMi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFjZVJldG91Y2hpbmdPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDEwYy43NSAwIDEuNDctLjA5IDIuMTctLjI0LjIxLjcxLjMzIDEuNDYuMzMgMi4yNCAwIDEuMjItLjI4IDIuMzctLjc3IDMuNGwxLjQ5IDEuNDlBOS45ODEgOS45ODEgMCAwIDAgMjIgMTJjMC01LjUyLTQuNDgtMTAtMTAtMTAtMS43OCAwLTMuNDQuNDctNC44OSAxLjI4bDUuMzMgNS4zM2MxLjQ5Ljg4IDMuMjEgMS4zOSA1LjA2IDEuMzl6bS02Ljg0LTUuODhjLjQzLS4wNy44OC0uMTIgMS4zNC0uMTIgMi45IDAgNS40NCAxLjU2IDYuODQgMy44OC0uNDMuMDctLjg4LjEyLTEuMzQuMTItMi45IDAtNS40NC0xLjU2LTYuODQtMy44OHpNMS44OSAzLjcybDIuMTkgMi4xOUE5Ljk1OCA5Ljk1OCAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMjkgMCA0LjQtLjc4IDYuMDktMi4wOGwyLjE5IDIuMTkgMS40MS0xLjQxTDMuMzEgMi4zMSAxLjg5IDMuNzJ6bTE0Ljc3IDE0Ljc3QTcuOTEgNy45MSAwIDAgMSAxMiAyMGMtNC40MSAwLTgtMy41OS04LTggMC0uMDUuMDEtLjEgMC0uMTRhOS45NDYgOS45NDYgMCAwIDAgMy42NC0yLjM5bDkuMDIgOS4wMnpNNi4yMyA4LjA2Yy0uNTMuNTUtMS4xNCAxLjAzLTEuODEgMS40MS4yNi0uNzcuNjMtMS40OCAxLjA5LTIuMTNsLjcyLjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTExIDEwaDJWNWgtNHYyaDJ2OHptNy0xNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE4LTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHptLTQtNGgtNHYtMmgyYTIgMiAwIDAgMCAyLTJWN2EyIDIgMCAwIDAtMi0yaC00djJoNHYyaC0yYTIgMiAwIDAgMC0yIDJ2NGg2di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMUg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0ek0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTQgOHYtMS41YzAtLjgzLS42Ny0xLjUtMS41LTEuNS44MyAwIDEuNS0uNjcgMS41LTEuNVY3YTIgMiAwIDAgMC0yLTJoLTR2Mmg0djJoLTJ2MmgydjJoLTR2Mmg0YTIgMiAwIDAgMCAyLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXI0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTIgMTBoMlY1aC0ydjRoLTJWNWgtMnY2aDR2NHptNi0xNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyNSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDFIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHpNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE0IDh2LTJhMiAyIDAgMCAwLTItMmgtMlY3aDRWNWgtNnY2aDR2MmgtNHYyaDRhMiAyIDAgMCAwIDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlcjYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS04LTJoMmEyIDIgMCAwIDAgMi0ydi0yYTIgMiAwIDAgMC0yLTJoLTJWN2g0VjVoLTRhMiAyIDAgMCAwLTIgMnY2YTIgMiAwIDAgMCAyIDJ6bTAtNGgydjJoLTJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXI3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0em0tOC0yIDQtOFY1aC02djJoNGwtNCA4aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXI4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0em0tOC0yaDJhMiAyIDAgMCAwIDItMnYtMS41YzAtLjgzLS42Ny0xLjUtMS41LTEuNS44MyAwIDEuNS0uNjcgMS41LTEuNVY3YTIgMiAwIDAgMC0yLTJoLTJhMiAyIDAgMCAwLTIgMnYxLjVjMCAuODMuNjcgMS41IDEuNSAxLjUtLjgzIDAtMS41LjY3LTEuNSAxLjVWMTNhMiAyIDAgMCAwIDIgMnptMC04aDJ2MmgtMlY3em0wIDRoMnYyaC0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyOVBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xMSA3VjhhMiAyIDAgMCAwLTItMmgtMWEyIDIgMCAwIDAtMiAydjFhMiAyIDAgMCAwIDIgMmgxdjFIOXYyaDNhMiAyIDAgMCAwIDItMnptLTMtM1Y4aDF2MWgtMXptMTAtOEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgOGgtMlY3aC0ydjJoLTJ2MmgydjJoMnYtMmgydjZIN1YzaDE0djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXI5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0ek0xNSA1aC0yYTIgMiAwIDAgMC0yIDJ2MmEyIDIgMCAwIDAgMiAyaDJ2MmgtNHYyaDRhMiAyIDAgMCAwIDItMlY3YTIgMiAwIDAgMC0yLTJ6bTAgNGgtMlY3aDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlckJBbmRXIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi03LTh2OEg1bDctOFY1aDd2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXJDZW50ZXJGb2N1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNUgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6TTUgNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTE0LTJoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yem0wIDE2aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0ek0xMiA5Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlckRyYW1hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4zNSAxMC4wNEE3LjQ5IDcuNDkgMCAwIDAgMTIgNGE3LjQ4IDcuNDggMCAwIDAtNi42NCA0LjA0QTUuOTk2IDUuOTk2IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE5IDE4SDZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNGgyYzAtMi43Ni0xLjg2LTUuMDgtNC40LTUuNzhDOC42MSA2Ljg4IDEwLjIgNiAxMiA2YzMuMDMgMCA1LjUgMi40NyA1LjUgNS41di41SDE5YzEuNjUgMCAzIDEuMzUgMyAzcy0xLjM1IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyRnJhbWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNGgtNGwtNC00LTQgNEg0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTZINFY2aDQuNTJsMy41Mi0zLjVMMTUuNTIgNkgyMHYxNHpNNiAxOGgxMlY4SDZ2MTB6bTItOGg4djZIOHYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlckhkciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQgNi00LjIyIDUuNjMgMS4yNSAxLjY3TDE0IDkuMzMgMTkgMTZoLTguNDZsLTQuMDEtNS4zN0wxIDE4aDIyTDE0IDZ6TTUgMTZsMS41Mi0yLjAzTDguMDQgMTZINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlck5vbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXJUaWx0U2hpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDQuMDdWMi4wNWMtMi4wMS4yLTMuODQgMS01LjMyIDIuMjFMNy4xIDUuNjlBNy45NDEgNy45NDEgMCAwIDEgMTEgNC4wN3ptNy4zMi4xOUE5Ljk0OSA5Ljk0OSAwIDAgMCAxMyAyLjA1djIuMDJjMS40Ni4xOCAyLjc5Ljc2IDMuOSAxLjYybDEuNDItMS40M3pNMTkuOTMgMTFoMi4wMmMtLjItMi4wMS0xLTMuODQtMi4yMS01LjMyTDE4LjMxIDcuMWE3Ljk0MSA3Ljk0MSAwIDAgMSAxLjYyIDMuOXpNNS42OSA3LjEgNC4yNiA1LjY4QTkuOTQ5IDkuOTQ5IDAgMCAwIDIuMDUgMTFoMi4wMmMuMTgtMS40Ni43Ni0yLjc5IDEuNjItMy45ek00LjA3IDEzSDIuMDVjLjIgMi4wMSAxIDMuODQgMi4yMSA1LjMybDEuNDMtMS40M0E3Ljg2OCA3Ljg2OCAwIDAgMSA0LjA3IDEzek0xNSAxMmMwLTEuNjYtMS4zNC0zLTMtM3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzIDMtMS4zNCAzLTN6bTMuMzEgNC45IDEuNDMgMS40M2E5Ljk4MSA5Ljk4MSAwIDAgMCAyLjIxLTUuMzJoLTIuMDJhNy45NDUgNy45NDUgMCAwIDEtMS42MiAzLjg5ek0xMyAxOS45M3YyLjAyYzIuMDEtLjIgMy44NC0xIDUuMzItMi4yMWwtMS40My0xLjQzYy0xLjEuODYtMi40MyAxLjQ0LTMuODkgMS42MnptLTcuMzItLjE5QTkuOTgxIDkuOTgxIDAgMCAwIDExIDIxLjk1di0yLjAyYTcuOTQxIDcuOTQxIDAgMCAxLTMuOS0xLjYybC0xLjQyIDEuNDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXJWaW50YWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC43IDEyLjRhNi4wNiA2LjA2IDAgMCAwLS44Ni0uNGMuMjktLjExLjU4LS4yNC44Ni0uNGE2LjAxMiA2LjAxMiAwIDAgMCAzLTUuMTljLS45MS0uNTItMS45NS0uOC0zLjAxLS44LTEuMDIgMC0yLjA1LjI2LTIuOTkuOC0uMjguMTYtLjU0LjM1LS43OC41NC4wNS0uMzEuMDgtLjYzLjA4LS45NSAwLTIuMjItMS4yMS00LjE1LTMtNS4xOUMxMC4yMSAxLjg1IDkgMy43OCA5IDZjMCAuMzIuMDMuNjQuMDguOTUtLjI0LS4yLS41LS4zOS0uNzgtLjU1LS45NC0uNTQtMS45Ny0uOC0yLjk5LS44LTEuMDUgMC0yLjEuMjgtMy4wMS44YTUuOTcgNS45NyAwIDAgMCAzIDUuMTljLjI4LjE2LjU3LjI5Ljg2LjQtLjI5LjExLS41OC4yNC0uODYuNGE2LjAxMiA2LjAxMiAwIDAgMC0zIDUuMTljLjkxLjUyIDEuOTUuOCAzLjAxLjggMS4wMiAwIDIuMDUtLjI2IDIuOTktLjguMjgtLjE2LjU0LS4zNS43OC0uNTQtLjA1LjMyLS4wOC42NC0uMDguOTYgMCAyLjIyIDEuMjEgNC4xNSAzIDUuMTkgMS43OS0xLjA0IDMtMi45NyAzLTUuMTkgMC0uMzItLjAzLS42NC0uMDgtLjk1LjI0LjIuNS4zOC43OC41NC45NC41NCAxLjk3LjggMi45OS44IDEuMDUgMCAyLjEtLjI4IDMuMDEtLjhhNi4wMTIgNi4wMTIgMCAwIDAtMy01LjE5em0tMi41NC0zLjg4Yy4yMS0uMTcuMzgtLjI5LjU0LS4zNy42MS0uMzUgMS4zLS41NCAyLS41NC4yNyAwIC41My4wMy43OS4wOC0uMzEuOTEtLjk0IDEuNjktMS43OCAyLjE4LS4xNy4xLS4zNi4xOC0uNTguMjdsLTEuMzguNTJjLS4xNy0uNDYtLjQxLS44Ny0uNzItMS4yNGwxLjEzLS45ek0xMiAzLjM3Yy42My43MiAxIDEuNjYgMSAyLjYzIDAgLjE5LS4wMi40MS0uMDUuNjNsLS4yMyAxLjQ0QzEyLjQ4IDguMDMgMTIuMjQgOCAxMiA4cy0uNDguMDMtLjcxLjA3bC0uMjMtMS40NEMxMS4wMiA2LjQxIDExIDYuMTkgMTEgNmMwLS45OC4zNy0xLjkxIDEtMi42M3pNNC41MSA3LjY4Yy4yNi0uMDYuNTMtLjA4LjgtLjA4LjY5IDAgMS4zOC4xOCAxLjk5LjU0LjE1LjA5LjMyLjIuNDkuMzVsMS4xNS45NmMtLjMuMzYtLjUzLjc2LS43IDEuMmwtMS4zOC0uNTJjLS4yMS0uMDktLjQtLjE4LS41Ni0uMjctLjg3LS41LTEuNDktMS4yNy0xLjc5LTIuMTh6bTMuMzMgNy43OWMtLjIxLjE3LS4zOC4yOS0uNTQuMzctLjYxLjM1LTEuMy41NC0yIC41NC0uMjcgMC0uNTMtLjAzLS43OS0uMDguMzEtLjkxLjk0LTEuNjkgMS43OC0yLjE4LjE3LS4xLjM2LS4xOC41OC0uMjdsMS4zOC0uNTJjLjE2LjQ2LjQxLjg4LjcyIDEuMjRsLTEuMTMuOXpNMTIgMjAuNjNjLS42My0uNzItMS0xLjY2LTEtMi42MyAwLS4yLjAyLS40MS4wNi0uNjVsLjIyLTEuNDJjLjIzLjA0LjQ3LjA3LjcyLjA3LjI0IDAgLjQ4LS4wMy43MS0uMDdsLjIzIDEuNDRjLjA0LjIyLjA2LjQ0LjA2LjYzIDAgLjk4LS4zNyAxLjkxLTEgMi42M3ptNi42OS00LjI0YTMuOTE2IDMuOTE2IDAgMCAxLTIuNDgtLjg4bC0xLjE1LS45NmMuMy0uMzYuNTQtLjc2LjctMS4yMWwxLjM4LjUyYy4yMi4wOC40MS4xNy41Ny4yNi44NS40OSAxLjQ3IDEuMjcgMS43OCAyLjE4LS4yNy4wNy0uNTQuMDktLjguMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1Ljk2IDEwLjI5LTIuNzUgMy41NC0xLjk2LTIuMzZMOC41IDE1aDExbC0zLjU0LTQuNzF6TTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMUgxdjJoNnYtMnptMi4xNy0zLjI0TDcuMDUgNS42NCA1LjY0IDcuMDVsMi4xMiAyLjEyIDEuNDEtMS40MXpNMTMgMWgtMnY2aDJWMXptNS4zNiA2LjA1LTEuNDEtMS40MS0yLjEyIDIuMTIgMS40MSAxLjQxIDIuMTItMi4xMnpNMTcgMTF2Mmg2di0yaC02em0tNS0yYy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMi44MyA3LjI0IDIuMTIgMi4xMiAxLjQxLTEuNDEtMi4xMi0yLjEyLTEuNDEgMS40MXptLTkuMTkuNzEgMS40MSAxLjQxIDIuMTItMi4xMi0xLjQxLTEuNDEtMi4xMiAyLjEyek0xMSAyM2gydi02aC0ydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGFzaEF1dG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMnYxMmgzdjlsNy0xMkg5bDQtOUgzem0xNiAwaC0ybC0zLjIgOWgxLjlsLjctMmgzLjJsLjcgMmgxLjlMMTkgMnptLTIuMTUgNS42NUwxOCA0bDEuMTUgMy42NWgtMi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmxhc2hPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEwaC0zLjYxbDIuMjggMi4yOHptMC04SDd2MS42MWw2LjEzIDYuMTN6bS0xMy41OS44NkwyIDQuMjdsNSA1VjEzaDN2OWwzLjU4LTYuMTVMMTcuNzMgMjBsMS40MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmxhc2hPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAydjExaDN2OWw3LTEyaC00bDMtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsaXBDYW1lcmFBbmRyb2lkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zLTEuMzQtMy0zLTMtMyAxLjM0LTMgM3ptNCAwYzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xIC40NS0xIDEtMSAxIC40NSAxIDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTBWOEg1LjA5QzYuNDcgNS42MSA5LjA1IDQgMTIgNGMzLjcyIDAgNi44NSAyLjU2IDcuNzQgNmgyLjA2Yy0uOTMtNC41Ni00Ljk2LTgtOS44LTgtMy4yNyAwLTYuMTggMS41OC04IDQuMDFWNEgydjZoNnpNMTYgMTR2MmgyLjkxYy0xLjM4IDIuMzktMy45NiA0LTYuOTEgNC0zLjcyIDAtNi44NS0yLjU2LTcuNzQtNkgyLjJjLjkzIDQuNTYgNC45NiA4IDkuOCA4IDMuMjcgMCA2LjE4LTEuNTggOC00LjAxVjIwaDJ2LTZoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGlwQ2FtZXJhSW9zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNWgtMy4xN0wxNSAzSDlMNy4xNyA1SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxNEg0VjdoNC4wNWwuNTktLjY1TDkuODggNWg0LjI0bDEuMjQgMS4zNS41OS42NUgyMHYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTdjLTIuMjEgMC00LTEuNzktNC00aDJsLTIuNS0yLjVMNSAxM2gyYzAgMi43NiAyLjI0IDUgNSA1IC44NiAwIDEuNjUtLjI0IDIuMzYtLjYybC0uNzQtLjc0Yy0uNDkuMjMtMS4wNC4zNi0xLjYyLjM2ek0xMiA4Yy0uODYgMC0xLjY1LjI0LTIuMzYuNjJsLjc0LjczQzEwLjg3IDkuMTMgMTEuNDIgOSAxMiA5YzIuMjEgMCA0IDEuNzkgNCA0aC0ybDIuNSAyLjVMMTkgMTNoLTJjMC0yLjc2LTIuMjQtNS01LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyMWgydi0yaC0ydjJ6bTQtMTJoMlY3aC0ydjJ6TTMgNXYxNGMwIDEuMS45IDIgMiAyaDR2LTJINVY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMTYtMnYyaDJjMC0xLjEtLjktMi0yLTJ6bS04IDIwaDJWMWgtMnYyMnptOC02aDJ2LTJoLTJ2MnpNMTUgNWgyVjNoLTJ2MnptNCA4aDJ2LTJoLTJ2MnptMCA4YzEuMSAwIDItLjkgMi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcmFkaWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDloMnYyaC0yVjl6bS0yIDJoMnYySDl2LTJ6bTQgMGgydjJoLTJ2LTJ6bTItMmgydjJoLTJWOXpNNyA5aDJ2Mkg3Vjl6bTEyLTZINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE4SDd2LTJoMnYyem00IDBoLTJ2LTJoMnYyem00IDBoLTJ2LTJoMnYyem0yLTdoLTJ2MmgydjJoLTJ2LTJoLTJ2MmgtMnYtMmgtMnYySDl2LTJIN3YySDV2LTJoMnYtMkg1VjVoMTR2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxMmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6TTYgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTEyLThjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0tNCA4Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNC00Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptLTQtNGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS00LTRjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JpZE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA0di44OWwyIDJWNGg0djRoLTIuODlsMiAySDE0di44OWwyIDJWMTBoNHY0aC0yLjg5bDIgMkgyMHYuODlsMiAyVjRjMC0xLjEtLjktMi0yLTJINS4xMWwyIDJIOHptOCAwaDR2NGgtNFY0ek0xLjQxIDEuMTQgMCAyLjU1bDIgMlYyMGMwIDEuMS45IDIgMiAyaDE1LjQ1bDIuMDEgMi4wMSAxLjQxLTEuNDFMMS40MSAxLjE0ek0xMCAxMi41NSAxMS40NSAxNEgxMHYtMS40NXptLTYtNkw1LjQ1IDhINFY2LjU1ek04IDIwSDR2LTRoNHY0em0wLTZINHYtNGgzLjQ1bC41NS41NVYxNHptNiA2aC00di00aDMuNDVsLjU1LjU1VjIwem0yIDB2LTEuNDVMMTcuNDUgMjBIMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcmlkT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek04IDIwSDR2LTRoNHY0em0wLTZINHYtNGg0djR6bTAtNkg0VjRoNHY0em02IDEyaC00di00aDR2NHptMC02aC00di00aDR2NHptMC02aC00VjRoNHY0em02IDEyaC00di00aDR2NHptMC02aC00di00aDR2NHptMC02aC00VjRoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGRyRW5oYW5jZWRTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTYgMi42OS02IDYtNnptMCAyQzkuNzkgNCA4IDUuNzkgOCA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0xIDdoLTJWOUg5VjdoMlY1aDJ2MmgydjJoLTJ2MnptMTEgOWgtMnYyaC0xLjV2LTJoLTJ2LTEuNWgydi0ySDIydjJoMlYyMHptLTYtMS41YzAgLjYtLjQgMS4xLS45IDEuNEwxOCAyMmgtMS41bC0uOS0yaC0xLjF2MkgxM3YtNmgzLjVjLjggMCAxLjUuNyAxLjUgMS41djF6bS0xLjUgMHYtMWgtMnYxaDJ6bS0xMy0uNXYtMkg1djZIMy41di0yLjVoLTJWMjJIMHYtNmgxLjV2Mmgyem02LjUtMmMuOCAwIDEuNS43IDEuNSAxLjV2M2MwIC44LS43IDEuNS0xLjUgMS41SDYuNXYtNkgxMHptMCA0LjV2LTNIOHYzaDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZHJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgMTV2LTJoMS4xbC45IDJIMjFsLS45LTIuMWMuNS0uMy45LS44LjktMS40di0xYzAtLjgtLjctMS41LTEuNS0xLjVIMTZ2NC44NkwxNy4xNCAxNWguMzZ6bTAtNC41aDJ2MWgtMnYtMXptLTQuNSAwdi4zNmwxLjUgMS41VjEwLjVjMC0uOC0uNy0xLjUtMS41LTEuNWgtMS44NmwxLjUgMS41SDEzek0yLjUxIDIuNDkgMS40NSAzLjU1IDYuOSA5aC0uNHYyaC0yVjlIM3Y2aDEuNXYtMi41aDJWMTVIOHYtNC45bDEuNSAxLjVWMTVoMy40bDcuNiA3LjYgMS4wNi0xLjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGRyT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDExLjV2LTFjMC0uOC0uNy0xLjUtMS41LTEuNUgxNnY2aDEuNXYtMmgxLjFsLjkgMkgyMWwtLjktMi4xYy41LS4zLjktLjguOS0xLjR6bS0xLjUgMGgtMnYtMWgydjF6bS0xMy0uNWgtMlY5SDN2NmgxLjV2LTIuNWgyVjE1SDhWOUg2LjV2MnpNMTMgOUg5LjV2NkgxM2MuOCAwIDEuNS0uNyAxLjUtMS41di0zYzAtLjgtLjctMS41LTEuNS0xLjV6bTAgNC41aC0ydi0zaDJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhkclBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjEzIDE5YzEuMTUuNjQgMi40NyAxIDMuODcgMSA0LjQxIDAgOC0zLjU5IDgtOHMtMy41OS04LTgtOC04IDMuNTktOCA4YzAgMi41MiAxLjE3IDQuNzcgMyA2LjI0VjEzaDMuNWMuOCAwIDEuNS43IDEuNSAxLjV2MWMwIC42LS40IDEuMS0uOSAxLjRMMTIgMTloLTEuNWwtLjktMkg4LjV2MmgtLjM3ek0xMiAyYzUuNTIgMCAxMCA0LjQ4IDEwIDEwcy00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMiA2LjQ4IDIgMTIgMnptNS41IDE0SDE2djEuNWgtMS41VjE2SDEzdi0xLjVoMS41VjEzSDE2djEuNDloMS41VjE2em0tNy0uNXYtMWgtMnYxaDJ6bTAtNy41VjZIMTJ2NmgtMS41VjkuNWgtMlYxMkg3VjZoMS41djJoMnpNMTYgNmMuOCAwIDEuNS43IDEuNSAxLjV2M2MwIC44LS43IDEuNS0xLjUgMS41aC0zVjZoM3ptMCA0LjV2LTNoLTEuNXYzSDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGRyU3Ryb25nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA2Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnpNNSA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCA2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhkcldlYWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTEyLTJjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02em0wIDEwYy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDQtMS43OSA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhlYWxpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjczIDEyLjAyIDMuOTgtMy45OGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTQuMzQtNC4zNGEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLTMuOTggMy45OEw4IDIuMjlhMS4wMDEgMS4wMDEgMCAwIDAtMS40MSAwTDIuMjUgNi42M2EuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMy45OCAzLjk4TDIuMjUgMTZhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDQuMzQgNC4zNGMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsMy45OC0zLjk4IDMuOTggMy45OGMuMi4yLjQ1LjI5LjcxLjI5LjI2IDAgLjUxLS4xLjcxLS4yOWw0LjM0LTQuMzRhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0zLjk5LTMuOTh6TTEyIDljLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptLTQuNzEgMS45NkwzLjY2IDcuMzRsMy42My0zLjYzIDMuNjIgMy42Mi0zLjYyIDMuNjN6TTEwIDEzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTIgMmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0yLTRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMi42NiA5LjM0LTMuNjMtMy42MiAzLjYzLTMuNjMgMy42MiAzLjYyLTMuNjIgMy42M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhldmMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgMTFoLTFWOUgzdjZoMS41di0yLjVoMVYxNUg3VjlINS41ek0yMSAxMXYtMWMwLS41NS0uNDUtMS0xLTFoLTJjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxaDJjLjU1IDAgMS0uNDUgMS0xdi0xaC0xLjV2LjVoLTF2LTNoMXYuNUgyMXpNMTQuMjUgMTMuNSAxMy41IDlIMTJsMSA2aDIuNWwxLTZIMTV6TTggOXY2aDMuNXYtMS41aC0ydi0xaDJWMTFoLTJ2LS41aDJWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhpZGVJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDV2MTEuMTdsMiAyVjVjMC0xLjEtLjktMi0yLTJINS44M2wyIDJIMTl6TTIuODEgMi44MSAxLjM5IDQuMjIgMyA1LjgzVjE5YzAgMS4xLjkgMiAyIDJoMTMuMTdsMS42MSAxLjYxIDEuNDEtMS40MUwyLjgxIDIuODF6TTUgMTlWNy44M2w3LjA3IDcuMDctLjgyIDEuMUw5IDEzbC0zIDRoOC4xN2wyIDJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUltYWdlQXNwZWN0UmF0aW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMGgtMnYyaDJ2LTJ6bTAgNGgtMnYyaDJ2LTJ6bS04LTRINnYyaDJ2LTJ6bTQgMGgtMnYyaDJ2LTJ6bTgtNkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDE2djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW1hZ2VOb3RTdXBwb3J0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS45IDIxLjktNi4xLTYuMS0yLjY5LTIuNjlMNSA1IDMuNTkgMy41OSAyLjEgMi4xLjY5IDMuNTEgMyA1LjgzVjE5YzAgMS4xLjkgMiAyIDJoMTMuMTdsMi4zMSAyLjMxIDEuNDItMS40MXpNNSAxOVY3LjgzbDYuODQgNi44NC0uODQgMS4wNUw5IDEzbC0zIDRoOC4xN2wyIDJINXpNNy44MyA1bC0yLTJIMTljMS4xIDAgMiAuOSAyIDJ2MTMuMTdsLTItMlY1SDcuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbWFnZVNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTN2N0g0VjZoNS4wMmMuMDUtLjcxLjIyLTEuMzguNDgtMkg0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi01bC0yLTJ6bS0xLjUgNWgtMTFsMi43NS0zLjUzIDEuOTYgMi4zNiAyLjc1LTMuNTRMMTYuNSAxOHptMi44LTkuMTFjLjQ0LS43LjctMS41MS43LTIuMzlDMjAgNC4wMSAxNy45OSAyIDE1LjUgMlMxMSA0LjAxIDExIDYuNXMyLjAxIDQuNSA0LjQ5IDQuNWMuODggMCAxLjctLjI2IDIuMzktLjdMMjEgMTMuNDIgMjIuNDIgMTIgMTkuMyA4Ljg5ek0xNS41IDlhMi41IDIuNSAwIDAgMSAwLTUgMi41IDIuNSAwIDAgMSAwIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQuODYgOC44Ni0zIDMuODdMOSAxMy4xNCA2IDE3aDEybC0zLjg2LTUuMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbmNvbXBsZXRlQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTJjMCA1LjUyLTQuNDggMTAtMTAgMTBTMiAxNy41MiAyIDEyYzAtMi43NiAxLjEyLTUuMjYgMi45My03LjA3TDEyIDEyVjJjNS41MiAwIDEwIDQuNDggMTAgMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJc28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek01LjUgNy41aDJ2LTJIOXYyaDJWOUg5djJINy41VjloLTJWNy41ek0xOSAxOUg1TDE5IDV2MTR6bS0yLTJ2LTEuNWgtNVYxN2g1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGFuZHNjYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA2LTQuMjIgNS42MyAxLjI1IDEuNjdMMTQgOS4zMyAxOSAxNmgtOC40NmwtNC4wMS01LjM3TDEgMThoMjJMMTQgNnpNNSAxNmwxLjUyLTIuMDNMOC4wNCAxNkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGVha0FkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAzSDN2M2MxLjY2IDAgMy0xLjM0IDMtM3ptOCAwaC0yYTkgOSAwIDAgMS05IDl2MmM2LjA4IDAgMTEtNC45MyAxMS0xMXptLTQgMEg4YzAgMi43Ni0yLjI0IDUtNSA1djJjMy44NyAwIDctMy4xMyA3LTd6bTAgMThoMmE5IDkgMCAwIDEgOS05di0yYy02LjA3IDAtMTEgNC45My0xMSAxMXptOCAwaDN2LTNjLTEuNjYgMC0zIDEuMzQtMyAzem0tNCAwaDJjMC0yLjc2IDIuMjQtNSA1LTV2LTJjLTMuODcgMC03IDMuMTMtNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGVha1JlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgM2gtMmMwIDEuMzUtLjMxIDIuNjMtLjg0IDMuNzdsMS40OSAxLjQ5QzEzLjUxIDYuNyAxNCA0LjkxIDE0IDN6bTcgOXYtMmMtMS45MSAwLTMuNy40OS01LjI3IDEuMzVsMS40OSAxLjQ5YzEuMTUtLjUzIDIuNDMtLjg0IDMuNzgtLjg0em0wIDR2LTJjLS43OSAwLTEuNTQuMTMtMi4yNC4zN2wxLjY4IDEuNjhjLjE5LS4wMS4zNy0uMDUuNTYtLjA1ek0xMCAzSDhjMCAuMTktLjA0LjM3LS4wNi41NmwxLjY4IDEuNjhjLjI1LS43LjM4LTEuNDYuMzgtMi4yNHptLTUuNTktLjE0TDMgNC4yN2wyLjg0IDIuODRDNS4wMyA3LjY3IDQuMDYgOCAzIDh2MmMxLjYxIDAgMy4wOS0uNTUgNC4yNy0xLjQ2TDguNyA5Ljk3QTguOTkgOC45OSAwIDAgMSAzIDEydjJjMi43MiAwIDUuMi0uOTkgNy4xMS0yLjYybDIuNTEgMi41MUMxMC45OSAxNS44MSAxMCAxOC4yOSAxMCAyMWgyYzAtMi4xNi43Ni00LjE0IDIuMDMtNS43bDEuNDMgMS40M0E2Ljk3MiA2Ljk3MiAwIDAgMCAxNCAyMWgyYzAtMS4wNi4zMy0yLjAzLjg5LTIuODRMMTkuNzMgMjFsMS40MS0xLjQxTDQuNDEgMi44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxlbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjNC40MSAwIDggMy41OSA4IDhzLTMuNTkgOC04IDgtOC0zLjU5LTgtOCAzLjU5LTggOC04bTAtMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpbmtlZENhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOXYxMUg0VjhoNC4wNWwxLjgzLTJIMTVWNEg5TDcuMTcgNkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjloLTJ6bS42Ny0xLjAxSDIyQTYuMDAzIDYuMDAzIDAgMCAwIDE2IDJ2MS4zM2MyLjU4IDAgNC42NiAyLjA4IDQuNjcgNC42NnptLTIuNjcgMGgxLjMzQTMuMzI3IDMuMzI3IDAgMCAwIDE2IDQuNjdWNmMxLjExIDAgMS45OS44OSAyIDEuOTl6TTcgMTRjMCAyLjc2IDIuMjQgNSA1IDVzNS0yLjI0IDUtNS0yLjI0LTUtNS01LTUgMi4yNC01IDV6bTggMGMwIDEuNjUtMS4zNSAzLTMgM3MtMy0xLjM1LTMtMyAxLjM1LTMgMy0zIDMgMS4zNCAzIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2dvRGV2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTcuNjggMTQuOThINlY5aDEuNzFjMS4yOCAwIDEuNzEgMS4wMyAxLjcxIDEuNzF2Mi41NmMwIC42OC0uNDIgMS43MS0xLjc0IDEuNzF6bTQuNy0zLjUydjEuMDdIMTEuMnYxLjM5aDEuOTN2MS4wN2gtMi4yNWMtLjQuMDEtLjc0LS4zMS0uNzUtLjcxVjkuNzVjLS4wMS0uNC4zMS0uNzQuNzEtLjc1aDIuMjh2MS4wN0gxMS4ydjEuMzloMS4xOHptNC41IDIuNzdjLS40OCAxLjExLTEuMzMuODktMS43MSAwTDEzLjc3IDloMS4xOGwxLjA3IDQuMTFMMTcuMDkgOWgxLjE4bC0xLjM5IDUuMjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNzcgMTAuMTJoLS42M3YzLjc3aC42M2MuMTQgMCAuMjgtLjA1LjQyLS4xNi4xNC0uMS4yMS0uMjYuMjEtLjQ3di0yLjUyYzAtLjIxLS4wNy0uMzctLjIxLS40N2EuNzIuNzIgMCAwIDAtLjQyLS4xNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvb2tzMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0em0tNC00di0xLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41LjgzIDAgMS41LS42NyAxLjUtMS41VjlhMiAyIDAgMCAwLTItMkg5djJoNHYyaC0ydjJoMnYySDl2Mmg0YTIgMiAwIDAgMCAyLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb29rczQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTS4wNCAwaDI0djI0aC0yNFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4wNCAzaC0xNGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2aC0xNFY1aDE0djE0em0tNi0yaDJWN2gtMnY0aC0yVjdoLTJ2Nmg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9va3M1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6bS00LTR2LTJhMiAyIDAgMCAwLTItMmgtMlY5aDRWN0g5djZoNHYySDl2Mmg0YTIgMiAwIDAgMCAyLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb29rczYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE3aDJhMiAyIDAgMCAwIDItMnYtMmEyIDIgMCAwIDAtMi0yaC0yVjloNFY3aC00YTIgMiAwIDAgMC0yIDJ2NmEyIDIgMCAwIDAgMiAyem0wLTRoMnYyaC0ydi0yem04LTEwSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb29rc09uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0em0tNy0yaDJWN2gtNHYyaDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb29rc1R3byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0em0tNC00aC00di0yaDJhMiAyIDAgMCAwIDItMlY5YTIgMiAwIDAgMC0yLTJIOXYyaDR2MmgtMmEyIDIgMCAwIDAtMiAydjRoNnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvb2tzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMGMtMy44NiAwLTcgMy4xNC03IDdoMmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1aDJjMC0zLjg2LTMuMTQtNy03LTd6bTAtNEM1LjkzIDYgMSAxMC45MyAxIDE3aDJjMC00Ljk2IDQuMDQtOSA5LTlzOSA0LjA0IDkgOWgyYzAtNi4wNy00LjkzLTExLTExLTExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG91cGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwaDhjMS4xIDAgMi0uOSAyLTJ2LThjMC01LjUxLTQuNDktMTAtMTAtMTB6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWljRXh0ZXJuYWxPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA1YzAtMS42Ni0xLjM0LTMtMy0zLS42MiAwLTEuMTkuMTktMS42Ny41bDQuMTUgNC4xNUM5LjggNi4xOCAxMCA1LjYxIDEwIDV6TTE0IDZjMC0xLjEuOS0yIDItMnMyIC45IDIgMnY5LjE3bDIgMlY2YzAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0djMuMTdsMiAyVjZ6TTIuMSAyLjEuNjkgMy41MSA1LjE3IDhINGwxIDEwaDFjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNHYtMS4xN2w2LjQ5IDYuNDkgMS40MS0xLjQxTDIuMSAyLjF6TTcuMTkgMTZoLS4zOGwtLjYtNmguOTZsLjU2LjU2TDcuMTkgMTZ6TTEyIDE4YzAgMS4xLS45IDItMiAycy0yLS45LTItMmgxbC41Ni01LjYxTDEyIDE0LjgzVjE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWljRXh0ZXJuYWxPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjIgN2MuNDgtLjUzLjc4LTEuMjMuNzgtMiAwLTEuNjYtMS4zNC0zLTMtM1M0IDMuMzQgNCA1YzAgLjc3LjMgMS40Ny43OCAyaDQuNDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDJjLTIuMjEgMC00IDEuNzktNCA0djEyYzAgMS4xLS45IDItMiAycy0yLS45LTItMmgxbDEtMTBINGwxIDEwaDFjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNFY2YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2MTZoMlY2YzAtMi4yMS0xLjc5LTQtNC00ek03LjE5IDE2aC0uMzhsLS42LTZoMS41OGwtLjYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vbm9jaHJvbWVQaG90b3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVoLTMuMkwxNSAzSDlMNy4yIDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE0aC04di0xYy0yLjggMC01LTIuMi01LTVzMi4yLTUgNS01VjdoOHYxMnptLTMtNmMwLTIuOC0yLjItNS01LTV2MS44YzEuOCAwIDMuMiAxLjQgMy4yIDMuMnMtMS40IDMuMi0zLjIgMy4yVjE4YzIuOCAwIDUtMi4yIDUtNXptLTguMiAwYzAgMS44IDEuNCAzLjIgMy4yIDMuMlY5LjhjLTEuOCAwLTMuMiAxLjQtMy4yIDMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdGlvblBob3Rvc0F1dG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yLjg4IDcuODggMS41NCAxLjU0QzQuMTUgMTAuMjMgNCAxMS4xIDQgMTJjMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOC0zLjU5LTgtOC04Yy0uOSAwLTEuNzcuMTUtMi41OC40Mkw3Ljg5IDIuODlDOS4xNSAyLjMyIDEwLjU0IDIgMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMHMtNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0xLjQ3LjMyLTIuODYuODgtNC4xMnpNNyA1LjVDNyA2LjMzIDYuMzMgNyA1LjUgN1M0IDYuMzMgNCA1LjUgNC42NyA0IDUuNSA0IDcgNC42NyA3IDUuNXptNS4wMyAzLjQ5aC0uMDdMMTAuOCAxMi4zaDIuMzlsLTEuMTYtMy4zMXptLS43NC0xLjQ5aDEuNDNsMy4wMSA4aC0xLjM5bC0uNzItMi4wNGgtMy4yM2wtLjczIDIuMDRIOC4yOGwzLjAxLTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb3Rpb25QaG90b3NPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjgxIDIuODEgMS4zOSA0LjIybDIuMjcgMi4yN0E5LjkxIDkuOTEgMCAwIDAgMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMCAyLjA0IDAgMy45My0uNjEgNS41MS0xLjY2bDIuMjcgMi4yNyAxLjQxLTEuNDJMMi44MSAyLjgxek0xMiAyMGMtNC40MSAwLTgtMy41OS04LTggMC0xLjQ4LjQxLTIuODYgMS4xMi00LjA2bDEwLjkzIDEwLjk0QTcuODY5IDcuODY5IDAgMCAxIDEyIDIwek0xMiA0YzQuNDEgMCA4IDMuNTkgOCA4IDAgMS40OC0uNDEgMi44Ni0xLjEyIDQuMDVsMS40NSAxLjQ1QTkuNzgyIDkuNzgyIDAgMCAwIDIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwLTIuMDQgMC0zLjkzLjYxLTUuNTEgMS42NmwxLjQ1IDEuNDVDOS4xNCA0LjQxIDEwLjUyIDQgMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdGlvblBob3Rvc09uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMi44OCA3Ljg4IDEuNTQgMS41NEM0LjE1IDEwLjIzIDQgMTEuMSA0IDEyYzAgNC40MSAzLjU5IDggOCA4czgtMy41OSA4LTgtMy41OS04LTgtOGMtLjkgMC0xLjc3LjE1LTIuNTguNDJMNy44OSAyLjg5QzkuMTUgMi4zMiAxMC41NCAyIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTBzLTQuNDggMTAtMTAgMTBTMiAxNy41MiAyIDEyYzAtMS40Ny4zMi0yLjg2Ljg4LTQuMTJ6TTcgNS41QzcgNi4zMyA2LjMzIDcgNS41IDdTNCA2LjMzIDQgNS41IDQuNjcgNCA1LjUgNCA3IDQuNjcgNyA1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb3Rpb25QaG90b3NQYXVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIuODggNy44OCAxLjU0IDEuNTRDNC4xNSAxMC4yMyA0IDExLjEgNCAxMmMwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04LTMuNTktOC04LThjLS45IDAtMS43Ny4xNS0yLjU4LjQyTDcuODkgMi44OUM5LjE1IDIuMzIgMTAuNTQgMiAxMiAyYzUuNTIgMCAxMCA0LjQ4IDEwIDEwcy00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMmMwLTEuNDcuMzItMi44Ni44OC00LjEyek03IDUuNUM3IDYuMzMgNi4zMyA3IDUuNSA3UzQgNi4zMyA0IDUuNSA0LjY3IDQgNS41IDQgNyA0LjY3IDcgNS41em00IDkuNUg5VjloMnY2em00IDBoLTJWOWgydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb3Rpb25QaG90b3NQYXVzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMmMwIDUuNTItNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0xLjE5LjIyLTIuMzIuNi0zLjM4bDEuODguNjhDNC4xNyAxMC4xNCA0IDExLjA1IDQgMTJjMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOC0zLjU5LTgtOC04Yy0uOTUgMC0xLjg1LjE3LTIuNjkuNDhsLS42OC0xLjg5QzkuNjkgMi4yMiAxMC44MiAyIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTB6TTUuNSA0QzQuNjcgNCA0IDQuNjcgNCA1LjVTNC42NyA3IDUuNSA3IDcgNi4zMyA3IDUuNSA2LjMzIDQgNS41IDR6TTExIDE2VjhIOXY4aDJ6bTQgMFY4aC0ydjhoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdmllQ3JlYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNzYgMTBIMjB2OEg0VjYuNDdNMjIgNGgtNGwyIDRoLTNsLTItNGgtMmwyIDRoLTNsLTItNEg4bDIgNEg3TDUgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb3ZpZUZpbHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTAgMTEtLjk0IDIuMDZMNyAxNGwyLjA2Ljk0TDEwIDE3bC45NC0yLjA2TDEzIDE0bC0yLjA2LS45NHptOC4wMS03IDIgNGgtM2wtMi00aC0ybDIgNGgtM2wtMi00aC0ybDIgNGgtM2wtMi00aC0xYy0xLjEgMC0xLjk5LjktMS45OSAybC0uMDEgMTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAxLjk5LS45IDEuOTktMlY0aC0zLjk5em0yIDE0aC0xNlY2LjQ3TDUuNzcgMTBIMTZsLS42MyAxLjM3TDE0IDEybDEuMzcuNjNMMTYgMTRsLjYzLTEuMzdMMTggMTJsLTEuMzctLjYzTDE2IDEwaDQuMDF2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOWgtMy41djZIMTV2LTEuNWgyYy41NSAwIDEtLjQ1IDEtMVYxMGMwLS41NS0uNDUtMS0xLTF6bS0uNSAzSDE1di0xLjVoMS41VjEyek0xMS41IDlIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41di00LjVoMXYzSDEwdi0zaDFWMTVoMS41di01YzAtLjU1LS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTUgMTlWNWgxNHYxNEg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTXVzaWNOb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAzIC4wMSAxMC41NWMtLjU5LS4zNC0xLjI3LS41NS0yLS41NWE0LjAwMSA0LjAwMSAwIDEgMCAwIDhjMi4yMiAwIDMuOTktMS43OSAzLjk5LTRWN2g0VjNoLTZ6bS0xLjk5IDE2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU11c2ljT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA3aDRWM2gtNnY0LjYxbDIgMnptLTIgMy40NEw0LjQxIDIuODYgMyA0LjI3bDkgOXYuMjhjLS45NC0uNTQtMi4xLS43NS0zLjMzLS4zMi0xLjM0LjQ4LTIuMzcgMS42Ny0yLjYxIDMuMDdhNC4wMDcgNC4wMDcgMCAwIDAgNC41OSA0LjY1YzEuOTYtLjMxIDMuMzUtMi4xMSAzLjM1LTQuMXYtMS41OEwxOS43MyAyMWwxLjQxLTEuNDFMMTIgMTAuNDR6TTEwIDE5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5hdHVyZVBlb3BsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI0LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi4xNyA5LjE3YzAtMy44Ny0zLjEzLTctNy03cy03IDMuMTMtNyA3QTYuOTggNi45OCAwIDAgMCAxNCAxNi4wNlYyMEg2di0zaDF2LTRjMC0uNTUtLjQ1LTEtMS0xSDNjLS41NSAwLTEgLjQ1LTEgMXY0aDF2NWgxNnYtMmgtM3YtMy44OGE3IDcgMCAwIDAgNi4xNy02Ljk1em0tNyA1Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5hdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTYuMTJoLS4wM2MzLjQ5LS40IDYuMi0zLjM2IDYuMi02Ljk1IDAtMy44Ny0zLjEzLTctNy03cy03IDMuMTMtNyA3QTYuOTggNi45OCAwIDAgMCAxMSAxNi4wNlYyMEg1djJoMTR2LTJoLTZ2LTMuODh6TTcuMTcgOS4xN2MwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1LTIuMjQgNS01IDUtNS0yLjI0LTUtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5hdmlnYXRlQmVmb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42MSA3LjQxIDE0LjIgNmwtNiA2IDYgNiAxLjQxLTEuNDFMMTEuMDMgMTJsNC41OC00LjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmF2aWdhdGVOZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wMiA2IDguNjEgNy40MSAxMy4xOSAxMmwtNC41OCA0LjU5TDEwLjAyIDE4bDYtNi02LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYWxldHRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJDNi40OSAyMiAyIDE3LjUxIDIgMTJTNi40OSAyIDEyIDJzMTAgNC4wNCAxMCA5YzAgMy4zMS0yLjY5IDYtNiA2aC0xLjc3Yy0uMjggMC0uNS4yMi0uNS41IDAgLjEyLjA1LjIzLjEzLjMzLjQxLjQ3LjY0IDEuMDYuNjQgMS42N0EyLjUgMi41IDAgMCAxIDEyIDIyem0wLTE4Yy00LjQxIDAtOCAzLjU5LTggOHMzLjU5IDggOCA4Yy4yOCAwIC41LS4yMi41LS41YS41NC41NCAwIDAgMC0uMTQtLjM1Yy0uNDEtLjQ2LS42My0xLjA1LS42My0xLjY1YTIuNSAyLjUgMCAwIDEgMi41LTIuNUgxNmMyLjIxIDAgNC0xLjc5IDQtNCAwLTMuODYtMy41OS03LTgtN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2LjVcIixcImN5XCI6XCIxMS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5LjVcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0LjVcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE3LjVcIixcImN5XCI6XCIxMS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhbm9yYW1hRmlzaEV5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYW5vcmFtYUhvcml6b250YWxTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1LjVjLTMuODkgMC02Ljk1LS44NC04LjY5LTEuNDNBLjk5My45OTMgMCAwIDAgMiA1LjAyVjE5YzAgLjY4LjY2IDEuMTcgMS4zMS45NUM1LjM2IDE5LjI2IDguMSAxOC41IDEyIDE4LjVjMy44NyAwIDYuNjYuNzYgOC42OSAxLjQ1QS45OTkuOTk5IDAgMCAwIDIyIDE5VjVjMC0uNjgtLjY2LTEuMTctMS4zMS0uOTUtMi4wMy42OC00LjgzIDEuNDUtOC42OSAxLjQ1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFub3JhbWFIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2LjU0djEwLjkxYy0yLjYtLjc3LTUuMjgtMS4xNi04LTEuMTZzLTUuNC4zOS04IDEuMTZWNi41NGMyLjYuNzcgNS4yOCAxLjE2IDggMS4xNiAyLjcyLjAxIDUuNC0uMzggOC0xLjE2TTIxLjQzIDRjLS4xIDAtLjIuMDItLjMxLjA2QzE4LjE4IDUuMTYgMTUuMDkgNS43IDEyIDUuN3MtNi4xOC0uNTUtOS4xMi0xLjY0QS45NC45NCAwIDAgMCAyLjU3IDRjLS4zNCAwLS41Ny4yMy0uNTcuNjN2MTQuNzVjMCAuMzkuMjMuNjIuNTcuNjIuMSAwIC4yLS4wMi4zMS0uMDYgMi45NC0xLjEgNi4wMy0xLjY0IDkuMTItMS42NHM2LjE4LjU1IDkuMTIgMS42NGMuMTEuMDQuMjEuMDYuMzEuMDYuMzMgMCAuNTctLjIzLjU3LS42M1Y0LjYzYzAtLjQtLjI0LS42My0uNTctLjYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFub3JhbWFQaG90b3NwaGVyZVNlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk1IDguMTVjLS4yOS0uMTYtLjYxLS4zMS0uOTMtLjQ2QzE5LjQgNC4zMyAxNS45OCAyIDEyIDIgOC4wMiAyIDQuNiA0LjMzIDIuOTkgNy42OGMtLjMzLjE1LS42NC4zLS45My40NkMxLjQxIDguNSAxIDkuMTcgMSA5LjkxdjQuMThjMCAuNzQuNDEgMS40MSAxLjA1IDEuNzcuMjkuMTYuNjEuMzEuOTMuNDZDNC42IDE5LjY3IDguMDIgMjIgMTIgMjJjMy45OCAwIDcuNC0yLjMzIDkuMDEtNS42OC4zMy0uMTUuNjQtLjMuOTMtLjQ2LjY1LS4zNiAxLjA2LTEuMDMgMS4wNi0xLjc3VjkuOTFjMC0uNzQtLjQxLTEuNDEtMS4wNS0xLjc2ek0xMiA0YzIuMzcgMCA0LjQ5IDEuMDQgNS45NSAyLjY4QzE2LjE3IDYuMjUgMTQuMTUgNiAxMiA2Yy0yLjE1IDAtNC4xNy4yNS01Ljk1LjY4QTcuOTQzIDcuOTQzIDAgMCAxIDEyIDR6bTAgMTZjLTIuMzcgMC00LjQ5LTEuMDQtNS45NS0yLjY4IDEuNzguNDMgMy44LjY4IDUuOTUuNjhzNC4xNy0uMjUgNS45NS0uNjhBNy45NDMgNy45NDMgMCAwIDEgMTIgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYW5vcmFtYVBob3Rvc3BoZXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTUgOC4xNWMtLjI5LS4xNi0uNjEtLjMxLS45My0uNDZDMTkuNCA0LjMzIDE1Ljk4IDIgMTIgMiA4LjAyIDIgNC42IDQuMzMgMi45OSA3LjY4Yy0uMzMuMTUtLjY0LjMtLjkzLjQ2QzEuNDEgOC41IDEgOS4xNyAxIDkuOTF2NC4xOGMwIC43NC40MSAxLjQxIDEuMDUgMS43Ny4yOS4xNi42MS4zMS45My40NkM0LjYgMTkuNjcgOC4wMiAyMiAxMiAyMmMzLjk4IDAgNy40LTIuMzMgOS4wMS01LjY4LjMzLS4xNS42NC0uMy45My0uNDYuNjUtLjM2IDEuMDYtMS4wMyAxLjA2LTEuNzdWOS45MWMwLS43NC0uNDEtMS40MS0xLjA1LTEuNzZ6TTIxIDkuOTF2NC4xOWMtMi4xOSAxLjIxLTUuNDcgMS45LTkgMS45LTMuNTMgMC02LjgxLS43LTktMS45MVY5LjkxQzUuMiA4LjY5IDguNDcgOCAxMiA4YzMuNTMgMCA2LjgxLjcgOSAxLjkxek0xMiA0YzIuMzcgMCA0LjQ5IDEuMDQgNS45NSAyLjY4QzE2LjE3IDYuMjUgMTQuMTUgNiAxMiA2Yy0yLjE1IDAtNC4xNy4yNS01Ljk1LjY4QTcuOTQzIDcuOTQzIDAgMCAxIDEyIDR6bTAgMTZjLTIuMzcgMC00LjQ5LTEuMDQtNS45NS0yLjY4IDEuNzguNDMgMy44LjY4IDUuOTUuNjhzNC4xNy0uMjUgNS45NS0uNjhBNy45NDMgNy45NDMgMCAwIDEgMTIgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYW5vcmFtYVZlcnRpY2FsU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAxMmMwLTMuODkuODQtNi45NSAxLjQzLTguNjlBLjk5My45OTMgMCAwIDAgMTguOTggMkg1Yy0uNjggMC0xLjE2LjY2LS45NSAxLjMxQzQuNzQgNS4zNiA1LjUgOC4xIDUuNSAxMmMwIDMuODctLjc2IDYuNjYtMS40NSA4LjY5LS4yMS42NS4yNyAxLjMxLjk1IDEuMzFoMTRjLjY4IDAgMS4xNy0uNjYuOTUtMS4zMS0uNjgtMi4wMy0xLjQ1LTQuODMtMS40NS04LjY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFub3JhbWFWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOTQgMjEuMTJjLTEuMS0yLjk0LTEuNjQtNi4wMy0xLjY0LTkuMTJzLjU1LTYuMTggMS42NC05LjEyYS45NC45NCAwIDAgMCAuMDYtLjMxYzAtLjM0LS4yMy0uNTctLjYzLS41N0g0LjYzYy0uNCAwLS42My4yMy0uNjMuNTcgMCAuMS4wMi4yLjA2LjMxQzUuMTYgNS44MiA1LjcxIDguOTEgNS43MSAxMnMtLjU1IDYuMTgtMS42NCA5LjEyYy0uMDUuMTEtLjA3LjIyLS4wNy4zMSAwIC4zMy4yMy41Ny42My41N2gxNC43NWMuMzkgMCAuNjMtLjI0LjYzLS41Ny0uMDEtLjEtLjAzLS4yLS4wNy0uMzF6TTYuNTQgMjBjLjc3LTIuNiAxLjE2LTUuMjggMS4xNi04cy0uMzktNS40LTEuMTYtOGgxMC45MWMtLjc3IDIuNi0xLjE2IDUuMjgtMS4xNiA4cy4zOSA1LjQgMS4xNiA4SDYuNTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYW5vcmFtYVdpZGVBbmdsZVNlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjLTMuOTcgMC02Ljg1LjYzLTkgMS0uNTUgMS45Ny0xIDMuOTItMSA3IDAgMy4wMy40NSA1LjA1IDEgNyAyLjE1LjM3IDQuOTggMSA5IDEgMy45NyAwIDYuODUtLjYzIDktMSAuNTctMi4wMiAxLTMuOTkgMS03IDAtMy4wMy0uNDUtNS4wNS0xLTctMi4xNS0uMzctNC45OC0xLTktMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhbm9yYW1hV2lkZUFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YzIuNDUgMCA0LjcxLjIgNy4yOS42NC40NyAxLjc4LjcxIDMuNTguNzEgNS4zNnMtLjI0IDMuNTgtLjcxIDUuMzZjLTIuNTguNDQtNC44NC42NC03LjI5LjY0cy00LjcxLS4yLTcuMjktLjY0QzQuMjQgMTUuNTggNCAxMy43OCA0IDEycy4yNC0zLjU4LjcxLTUuMzZDNy4yOSA2LjIgOS41NSA2IDEyIDZtMC0yYy0yLjczIDAtNS4yMi4yNC03Ljk1LjcybC0uOTMuMTYtLjI1LjlDMi4yOSA3Ljg1IDIgOS45MyAyIDEycy4yOSA0LjE1Ljg3IDYuMjJsLjI1Ljg5LjkzLjE2YzIuNzMuNDkgNS4yMi43MyA3Ljk1LjczczUuMjItLjI0IDcuOTUtLjcybC45My0uMTYuMjUtLjg5Yy41OC0yLjA4Ljg3LTQuMTYuODctNi4yM3MtLjI5LTQuMTUtLjg3LTYuMjJsLS4yNS0uODktLjkzLS4xNkMxNy4yMiA0LjI0IDE0LjczIDQgMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhbm9yYW1hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEgzVjZoMTh2MTJ6bS02LjUtN0wxMSAxNS41MSA4LjUgMTIuNSA1IDE3aDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvdG9BbGJ1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE4SDZWNGg1djdsMi41LTEuNUwxNiAxMVY0aDJ2MTZ6bS00LjM4LTYuNUwxNyAxOEg3bDIuMzgtMy4xN0wxMSAxN2wyLjYyLTMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob3RvQ2FtZXJhQmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVoLTMuMTdMMTUgM0g5TDcuMTcgNUg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY3aDQuMDVsMS44My0yaDQuMjRsMS44MyAySDIwdjEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4yNSAxNiA5IDEzbC0zIDRoMTJsLTMuNzUtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob3RvQ2FtZXJhRnJvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1aC0zLjE3TDE1IDNIOUw3LjE3IDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE0SDRWN2g0LjA1bDEuODMtMmg0LjI0bDEuODMgMkgyMHYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjExXCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0Ljc4IDE0LjU4YTYuOTUgNi45NSAwIDAgMC01LjU2IDBBMi4wMSAyLjAxIDAgMCAwIDggMTYuNDNWMTdoOHYtLjU3YzAtLjgxLS40OC0xLjUzLTEuMjItMS44NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob3RvQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC4xMiA0IDEuODMgMkgyMHYxMkg0VjZoNC4wNWwxLjgzLTJoNC4yNE0xNSAySDlMNy4xNyA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMmgtMy4xN0wxNSAyem0tMyA3YzEuNjUgMCAzIDEuMzUgMyAzcy0xLjM1IDMtMyAzLTMtMS4zNS0zLTMgMS4zNS0zIDMtM20wLTJjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvdG9GaWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEwdjlINC45OFY1aDlWM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi05aC0yem0tMi45NC0yLjA2TDE3IDEwbC45NC0yLjA2TDIwIDdsLTIuMDYtLjk0TDE3IDRsLS45NCAyLjA2TDE0IDd6TTEyIDhsLTEuMjUgMi43NUw4IDEybDIuNzUgMS4yNUwxMiAxNmwxLjI1LTIuNzVMMTYgMTJsLTIuNzUtMS4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob3RvTGlicmFyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNHYxMkg4VjRoMTJtMC0ySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTguNSA5LjY3IDEuNjkgMi4yNiAyLjQ4LTMuMUwxOSAxNUg5ek0yIDZ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZIMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob3RvU2l6ZVNlbGVjdEFjdHVhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzQzIgMyAxIDQgMSA1djE0YzAgMS4xLjkgMiAyIDJoMThjMSAwIDItMSAyLTJWNWMwLTEtMS0yLTItMnptMCAxNS45MmMtLjAyLjAzLS4wNi4wNi0uMDguMDhIM1Y1LjA4TDMuMDggNWgxNy44M2MuMDMuMDIuMDYuMDYuMDguMDh2MTMuODR6bS0xMC0zLjQxTDguNSAxMi41IDUgMTdoMTRsLTQuNS02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvdG9TaXplU2VsZWN0TGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE1aDJ2MmgtMnYtMnptMC00aDJ2MmgtMnYtMnptMiA4aC0ydjJjMSAwIDItMSAyLTJ6TTEzIDNoMnYyaC0yVjN6bTggNGgydjJoLTJWN3ptMC00djJoMmMwLTEtMS0yLTItMnpNMSA3aDJ2MkgxVjd6bTE2LTRoMnYyaC0yVjN6bTAgMTZoMnYyaC0ydi0yek0zIDNDMiAzIDEgNCAxIDVoMlYzem02IDBoMnYySDlWM3pNNSAzaDJ2Mkg1VjN6bS00IDh2OGMwIDEuMS45IDIgMiAyaDEyVjExSDF6bTIgOCAyLjUtMy4yMSAxLjc5IDIuMTUgMi41LTMuMjJMMTMgMTlIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob3RvU2l6ZVNlbGVjdFNtYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxNWgtMnYyaDJ2LTJ6bTAtNGgtMnYyaDJ2LTJ6bTAgOGgtMnYyYzEgMCAyLTEgMi0yek0xNSAzaC0ydjJoMlYzem04IDRoLTJ2MmgyVjd6bS0yLTR2MmgyYzAtMS0xLTItMi0yek0zIDIxaDh2LTZIMXY0YzAgMS4xLjkgMiAyIDJ6TTMgN0gxdjJoMlY3em0xMiAxMmgtMnYyaDJ2LTJ6bTQtMTZoLTJ2MmgyVjN6bTAgMTZoLTJ2Mmgydi0yek0zIDNDMiAzIDEgNCAxIDVoMlYzem0wIDhIMXYyaDJ2LTJ6bTgtOEg5djJoMlYzek03IDNINXYyaDJWM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob3RvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djE0SDVWNWgxNG0wLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNC44NiA4Ljg2LTMgMy44N0w5IDEzLjE0IDYgMTdoMTJsLTMuODYtNS4xNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpY3R1cmVBc1BkZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRIOFY0aDEydjEyek00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTIgNlY5YzAtLjU1LS40NS0xLTEtMWgtMnY1aDJjLjU1IDAgMS0uNDUgMS0xem0tMi0zaDF2M2gtMVY5em00IDJoMXYtMWgtMVY5aDFWOGgtMnY1aDF6bS04IDBoMWMuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTFIOXY1aDF2LTJ6bTAtMmgxdjFoLTFWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvcnRyYWl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMmMxLjY1IDAgMy0xLjM1IDMtM3MtMS4zNS0zLTMtMy0zIDEuMzUtMyAzIDEuMzUgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem02IDguNThjMC0yLjUtMy45Ny0zLjU4LTYtMy41OHMtNiAxLjA4LTYgMy41OFYxOGgxMnYtMS40MnpNOC40OCAxNmMuNzQtLjUxIDIuMjMtMSAzLjUyLTFzMi43OC40OSAzLjUyIDFIOC40OHpNMTkgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJhd09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjE1IDE0LjMyLjU5LTIuMzYuNzYgMy4wNGgxLjQ4bDEuNS02aC0xLjVsLS43NCAzLS43NC0zaC0xLjUybC0uNzQgMy0uNzQtM0gxNGwuNzIgMi45ek0xLjM5IDQuMjIgNi4xNyA5SDN2NmgxLjV2LTJoMS4xbC45IDJIOGwtLjktMi4xYy41LS4zLjktLjguOS0xLjR2LS42N2wxLjQzIDEuNDNMOC43NSAxNWgxLjVsLjM4LTEuNWguMDRsOS4xMSA5LjExIDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIyek02LjUgMTEuNWgtMnYtMWgydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSYXdPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSA5SDN2NmgxLjV2LTJoMS4xbC45IDJIOGwtLjktMi4xYy41LS4zLjktLjguOS0xLjR2LTFDOCA5LjcgNy4zIDkgNi41IDl6bTAgMi41aC0ydi0xaDJ2MXpNMTAuMjUgOWwtMS41IDZoMS41bC4zOC0xLjVoMS43NWwuMzcgMS41aDEuNWwtMS41LTZoLTIuNXptLjc1IDMgLjI1LTFoLjVsLjI1IDFoLTF6TTE5Ljk4IDlsLS43NCAzLS43NC0zaC0xLjUybC0uNzQgMy0uNzQtM0gxNGwxLjUgNmgxLjQ4bC43Ni0zLjA0Ljc2IDMuMDRoMS40OGwxLjUtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlY2VpcHRMb25nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41IDMuNSAxOCAybC0xLjUgMS41TDE1IDJsLTEuNSAxLjVMMTIgMmwtMS41IDEuNUw5IDIgNy41IDMuNSA2IDJ2MTRIM3YzYzAgMS42NiAxLjM0IDMgMyAzaDEyYzEuNjYgMCAzLTEuMzQgMy0zVjJsLTEuNSAxLjV6TTE1IDIwSDZjLS41NSAwLTEtLjQ1LTEtMXYtMWgxMHYyem00LTFjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTF2LTNIOFY1aDExdjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDdoNnYySDl6TTE2IDdoMnYyaC0yek05IDEwaDZ2Mkg5ek0xNiAxMGgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZW1vdmVSZWRFeWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDYuNWE5Ljc3IDkuNzcgMCAwIDEgOC44MiA1LjVjLTEuNjUgMy4zNy01LjAyIDUuNS04LjgyIDUuNVM0LjgzIDE1LjM3IDMuMTggMTJBOS43NyA5Ljc3IDAgMCAxIDEyIDYuNW0wLTJDNyA0LjUgMi43MyA3LjYxIDEgMTJjMS43MyA0LjM5IDYgNy41IDExIDcuNXM5LjI3LTMuMTEgMTEtNy41Yy0xLjczLTQuMzktNi03LjUtMTEtNy41em0wIDVhMi41IDIuNSAwIDAgMSAwIDUgMi41IDIuNSAwIDAgMSAwLTVtMC0yYy0yLjQ4IDAtNC41IDIuMDItNC41IDQuNXMyLjAyIDQuNSA0LjUgNC41IDQuNS0yLjAyIDQuNS00LjUtMi4wMi00LjUtNC41LTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvdGF0ZTkwRGVncmVlc0NjdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4zNCA2LjQxLjg2IDEyLjlsNi40OSA2LjQ4IDYuNDktNi40OC02LjUtNi40OXpNMy42OSAxMi45bDMuNjYtMy42NkwxMSAxMi45bC0zLjY2IDMuNjYtMy42NS0zLjY2em0xNS42Ny02LjI2QTguOTUgOC45NSAwIDAgMCAxMyA0Vi43Nkw4Ljc2IDUgMTMgOS4yNFY2YzEuNzkgMCAzLjU4LjY4IDQuOTUgMi4wNWE3LjAwNyA3LjAwNyAwIDAgMSAwIDkuOSA2Ljk3MyA2Ljk3MyAwIDAgMS03Ljc5IDEuNDRsLTEuNDkgMS40OUMxMC4wMiAyMS42MiAxMS41MSAyMiAxMyAyMmMyLjMgMCA0LjYxLS44OCA2LjM2LTIuNjRhOC45OCA4Ljk4IDAgMCAwIDAtMTIuNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb3RhdGU5MERlZ3JlZXNDdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTNhOSA5IDAgMCAwIDEzLjc5IDcuNjJsLTEuNDYtMS40NmMtLjk5LjUzLTIuMTMuODQtMy4zMy44NC0zLjg2IDAtNy0zLjE0LTctN3MzLjE0LTcgNy03aC4xN0w5LjU5IDcuNTkgMTEgOWw0LTQtNC00LTEuNDIgMS40MUwxMS4xNyA0SDExYTkgOSAwIDAgMC05IDl6bTkgMCA2IDYgNi02LTYtNi02IDZ6bTYgMy4xN0wxMy44MyAxMyAxNyA5LjgzIDIwLjE3IDEzIDE3IDE2LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUm90YXRlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4xMSA4LjUzIDUuNyA3LjExQzQuOCA4LjI3IDQuMjQgOS42MSA0LjA3IDExaDIuMDJjLjE0LS44Ny40OS0xLjcyIDEuMDItMi40N3pNNi4wOSAxM0g0LjA3Yy4xNyAxLjM5LjcyIDIuNzMgMS42MiAzLjg5bDEuNDEtMS40MmMtLjUyLS43NS0uODctMS41OS0xLjAxLTIuNDd6bTEuMDEgNS4zMmMxLjE2LjkgMi41MSAxLjQ0IDMuOSAxLjYxVjE3LjljLS44Ny0uMTUtMS43MS0uNDktMi40Ni0xLjAzTDcuMSAxOC4zMnpNMTMgNC4wN1YxTDguNDUgNS41NSAxMyAxMFY2LjA5YzIuODQuNDggNSAyLjk0IDUgNS45MXMtMi4xNiA1LjQzLTUgNS45MXYyLjAyYzMuOTUtLjQ5IDctMy44NSA3LTcuOTNzLTMuMDUtNy40NC03LTcuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb3RhdGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNTUgNS41NSAxMSAxdjMuMDdDNy4wNiA0LjU2IDQgNy45MiA0IDEyczMuMDUgNy40NCA3IDcuOTN2LTIuMDJjLTIuODQtLjQ4LTUtMi45NC01LTUuOTFzMi4xNi01LjQzIDUtNS45MVYxMGw0LjU1LTQuNDV6TTE5LjkzIDExYTcuOTA2IDcuOTA2IDAgMCAwLTEuNjItMy44OWwtMS40MiAxLjQyYy41NC43NS44OCAxLjYgMS4wMiAyLjQ3aDIuMDJ6TTEzIDE3Ljl2Mi4wMmMxLjM5LS4xNyAyLjc0LS43MSAzLjktMS42MWwtMS40NC0xLjQ0Yy0uNzUuNTQtMS41OS44OS0yLjQ2IDEuMDN6bTMuODktMi40MiAxLjQyIDEuNDFjLjktMS4xNiAxLjQ1LTIuNSAxLjYyLTMuODloLTIuMDJjLS4xNC44Ny0uNDggMS43Mi0xLjAyIDIuNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaHV0dGVyU3BlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDFIOXYyaDZWMXptNC4wMyA2LjM5IDEuNDItMS40MmMtLjQzLS41MS0uOS0uOTktMS40MS0xLjQxbC0xLjQyIDEuNDJBOC45NjIgOC45NjIgMCAwIDAgMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWE4Ljk5NCA4Ljk5NCAwIDAgMCA3LjAzLTE0LjYxek0xMiAyMGMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6bS0uMzItNUg2LjM1YTUuOTkyIDUuOTkyIDAgMCAwIDMuNDEgMy41NmwtLjExLS4wNiAyLjAzLTMuNXptNS45Ny00YTYuMDEyIDYuMDEyIDAgMCAwLTMuMzQtMy41NEwxMi4yNiAxMWg1LjM5em0tNy4wNCA3LjgzYy40NS4xMS45MS4xNyAxLjM5LjE3IDEuMzQgMCAyLjU3LS40NSAzLjU3LTEuMTlsLTIuMTEtMy45LTIuODUgNC45MnpNNy41NSA4Ljk5QTUuOTY1IDUuOTY1IDAgMCAwIDYgMTNjMCAuMzQuMDQuNjcuMDkgMWg0LjcyTDcuNTUgOC45OXptOC43OSA4LjE0QTUuOTQgNS45NCAwIDAgMCAxOCAxM2MwLS4zNC0uMDQtLjY3LS4wOS0xaC00LjM0bDIuNzcgNS4xM3ptLTMuMDEtOS45OEMxMi45IDcuMDYgMTIuNDYgNyAxMiA3Yy0xLjQgMC0yLjY5LjQ5LTMuNzEgMS4yOWwyLjMyIDMuNTYgMi43Mi00Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbGlkZXNob3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDh2OGw1LTQtNS00em05LTVINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0cmFpZ2h0ZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDZIM2MtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTBIM1Y4aDJ2NGgyVjhoMnY0aDJWOGgydjRoMlY4aDJ2NGgyVjhoMnY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3R5bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIuNTMgMTkuNjUgMS4zNC41NnYtOS4wM2wtMi40MyA1Ljg2Yy0uNDEgMS4wMi4wOCAyLjE5IDEuMDkgMi42MXptMTkuNS0zLjdMMTcuMDcgMy45OGEyLjAxMyAyLjAxMyAwIDAgMC0xLjgxLTEuMjNjLS4yNiAwLS41My4wNC0uNzkuMTVMNy4xIDUuOTVhMS45OTkgMS45OTkgMCAwIDAtMS4wOCAyLjZsNC45NiAxMS45N2ExLjk5OCAxLjk5OCAwIDAgMCAyLjYgMS4wOGw3LjM2LTMuMDVhMS45OTQgMS45OTQgMCAwIDAgMS4wOS0yLjZ6bS05LjIgMy44TDcuODcgNy43OWw3LjM1LTMuMDRoLjAxbDQuOTUgMTEuOTUtNy4zNSAzLjA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiOVwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Ljg4IDE5Ljc1YzAgMS4xLjkgMiAyIDJoMS40NWwtMy40NS04LjM0djYuMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2l0Y2hDYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRoLTMuMTdMMTUgMkg5TDcuMTcgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTkuODggNGg0LjI0bDEuODMgMkgyMHYxMkg0VjZoNC4wNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMUg5VjguNUw1LjUgMTIgOSAxNS41VjEzaDZ2Mi41bDMuNS0zLjVMMTUgOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dpdGNoVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTNoNHYybDMtMy0zLTN2Mkg4VjlsLTMgMyAzIDN6bTEwLTMuNVY2YzAtLjU1LS40NS0xLTEtMUgzYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoMTRjLjU1IDAgMS0uNDUgMS0xdi0zLjVsNCA0di0xM2wtNCA0ek0xNiAxN0g0VjdoMTJ2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUYWdGYWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0zLjUtOWMuODMgMCAxLjUtLjY3IDEuNS0xLjVTMTYuMzMgOCAxNS41IDggMTQgOC42NyAxNCA5LjVzLjY3IDEuNSAxLjUgMS41em0tNyAwYy44MyAwIDEuNS0uNjcgMS41LTEuNVM5LjMzIDggOC41IDggNyA4LjY3IDcgOS41IDcuNjcgMTEgOC41IDExem0zLjUgNi41YzIuMzMgMCA0LjMxLTEuNDYgNS4xMS0zLjVINi44OWMuOCAyLjA0IDIuNzggMy41IDUuMTEgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGV4dHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNTEgMy4wOCAzLjA4IDE5LjUxYy4wOS4zNC4yNy42NS41MS45LjI1LjI0LjU2LjQyLjkuNTFMMjAuOTMgNC40OWMtLjE5LS42OS0uNzMtMS4yMy0xLjQyLTEuNDF6TTExLjg4IDMgMyAxMS44OHYyLjgzTDE0LjcxIDNoLTIuODN6TTUgM2MtMS4xIDAtMiAuOS0yIDJ2Mmw0LTRINXptMTQgMThjLjU1IDAgMS4wNS0uMjIgMS40MS0uNTkuMzctLjM2LjU5LS44Ni41OS0xLjQxdi0ybC00IDRoMnptLTkuNzEgMGgyLjgzTDIxIDEyLjEyVjkuMjlMOS4yOSAyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRoZXJtb3N0YXRBdXRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTJWNmMwLTEuNjYtMS4zNC0zLTMtM1M1IDQuMzQgNSA2djZjLTEuMjEuOTEtMiAyLjM3LTIgNCAwIDEuMTIuMzggMi4xNCAxIDIuOTdWMTloLjAyYy45MSAxLjIxIDIuMzUgMiAzLjk4IDJzMy4wNi0uNzkgMy45OC0ySDEydi0uMDNjLjYyLS44MyAxLTEuODUgMS0yLjk3IDAtMS42My0uNzktMy4wOS0yLTR6bS02IDRjMC0uOTQuNDUtMS44NCAxLjItMi40TDcgMTNWNmMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2N2wuOC42Yy43NS41NyAxLjIgMS40NiAxLjIgMi40SDV6TTE4LjYyIDRoLTEuNjFsLTMuMzggOWgxLjU2bC44MS0yLjNoMy42M2wuOCAyLjNIMjJsLTMuMzgtOXptLTIuMTUgNS4zOSAxLjMxLTMuNzJoLjA4bDEuMzEgMy43MmgtMi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGltZWxhcHNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4yNCA3Ljc1QTUuOTc0IDUuOTc0IDAgMCAwIDEyIDUuOTl2NmwtNC4yNCA0LjI0YzIuMzQgMi4zNCA2LjE0IDIuMzQgOC40OSAwYTUuOTkgNS45OSAwIDAgMC0uMDEtOC40OHpNMTIgMS45OWMtNS41MiAwLTEwIDQuNDgtMTAgMTBzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwLTQuNDgtMTAtMTAtMTB6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGltZXIxMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLS4wMSA3LjcyVjkuNGwzLTFWMThoMlY2aC0uMjVMLS4wMSA3Ljcyem0yMy43OCA2LjY1Yy0uMTQtLjI4LS4zNS0uNTMtLjYzLS43NC0uMjgtLjIxLS42MS0uMzktMS4wMS0uNTNzLS44NS0uMjctMS4zNS0uMzhhNi42NCA2LjY0IDAgMCAxLS44Ny0uMjNjLS4yMy0uMDgtLjQxLS4xNi0uNTUtLjI1cy0uMjMtLjE5LS4yOC0uM2EuOTc4Ljk3OCAwIDAgMSAuMDEtLjhjLjA2LS4xMy4xNS0uMjUuMjctLjM0LjEyLS4xLjI3LS4xOC40NS0uMjRzLjQtLjA5LjY0LS4wOWMuMjUgMCAuNDcuMDQuNjYuMTFzLjM1LjE3LjQ4LjI5LjIyLjI2LjI5LjQyYy4wNi4xNi4xLjMyLjEuNDloMS45NUEyLjUxNyAyLjUxNyAwIDAgMCAyMyA5LjgxYy0uMy0uMjUtLjY2LS40NC0xLjA5LS41OS0uNDMtLjE1LS45Mi0uMjItMS40Ni0uMjItLjUxIDAtLjk4LjA3LTEuMzkuMjFzLS43Ny4zMy0xLjA2LjU3Yy0uMjkuMjQtLjUxLjUyLS42Ny44NC0uMTYuMzItLjIzLjY1LS4yMyAxLjAxcy4wOC42OS4yMy45NmMuMTUuMjguMzYuNTIuNjQuNzMuMjcuMjEuNi4zOC45OC41My4zOC4xNC44MS4yNiAxLjI3LjM2LjM5LjA4LjcxLjE3Ljk1LjI2cy40My4xOS41Ny4yOWMuMTMuMS4yMi4yMi4yNy4zNC4wNS4xMi4wNy4yNS4wNy4zOSAwIC4zMi0uMTMuNTctLjQuNzdzLS42Ni4yOS0xLjE3LjI5Yy0uMjIgMC0uNDMtLjAyLS42NC0uMDgtLjIxLS4wNS0uNC0uMTMtLjU2LS4yNGExLjMzMyAxLjMzMyAwIDAgMS0uNTktMS4xMWgtMS44OWMwIC4zNi4wOC43MS4yNCAxLjA1cy4zOS42NS43LjkzYy4zMS4yNy42OS40OSAxLjE1LjY2cy45OC4yNSAxLjU4LjI1Yy41MyAwIDEuMDEtLjA2IDEuNDQtLjE5LjQzLS4xMy44LS4zMSAxLjExLS41NC4zMS0uMjMuNTQtLjUxLjcxLS44My4xNy0uMzIuMjUtLjY3LjI1LTEuMDYtLjAyLS40LS4wOS0uNzQtLjI0LTEuMDJ6bS05Ljk2LTcuMzJjLS4zNC0uNC0uNzUtLjctMS4yMy0uODgtLjQ3LS4xOC0xLjAxLS4yNy0xLjU5LS4yN3MtMS4xMS4wOS0xLjU5LjI3Yy0uNDguMTgtLjg5LjQ3LTEuMjMuODgtLjM0LjQxLS42LjkzLS43OSAxLjU5LS4xOC42NS0uMjggMS40NS0uMjggMi4zOXYxLjkyYzAgLjk0LjA5IDEuNzQuMjggMi4zOS4xOS42Ni40NSAxLjE5LjggMS42LjM0LjQxLjc1LjcxIDEuMjMuODlzMS4wMS4yOCAxLjU5LjI4Yy41OSAwIDEuMTItLjA5IDEuNTktLjI4LjQ4LS4xOC44OC0uNDggMS4yMi0uODlzLjYtLjk0Ljc4LTEuNmMuMTgtLjY1LjI4LTEuNDUuMjgtMi4zOXYtMS45MmMwLS45NC0uMDktMS43NC0uMjgtMi4zOS0uMTgtLjY2LS40NC0xLjE5LS43OC0xLjU5em0tLjkyIDYuMTdjMCAuNi0uMDQgMS4xMS0uMTIgMS41M3MtLjIuNzYtLjM2IDEuMDJjLS4xNi4yNi0uMzYuNDUtLjU5LjU3LS4yMy4xMi0uNTEuMTgtLjgyLjE4LS4zIDAtLjU4LS4wNi0uODItLjE4cy0uNDQtLjMxLS42LS41N2MtLjE2LS4yNi0uMjktLjYtLjM4LTEuMDJzLS4xMy0uOTMtLjEzLTEuNTN2LTIuNWMwLS42LjA0LTEuMTEuMTMtMS41MnMuMjEtLjc0LjM4LTFjLjE2LS4yNS4zNi0uNDMuNi0uNTUuMjQtLjExLjUxLS4xNy44MS0uMTcuMzEgMCAuNTguMDYuODEuMTcuMjQuMTEuNDQuMjkuNi41NS4xNi4yNS4yOS41OC4zNy45OXMuMTMuOTIuMTMgMS41MnYyLjUxaC0uMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaW1lcjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjYxIDEyLjk3Yy0uMTYtLjI0LS4zNi0uNDYtLjYyLS42NWEzLjM4IDMuMzggMCAwIDAtLjkzLS40OGMuMy0uMTQuNTctLjMuOC0uNS4yMy0uMi40Mi0uNDEuNTctLjY0LjE1LS4yMy4yNy0uNDYuMzQtLjcxLjA4LS4yNC4xMS0uNDkuMTEtLjczIDAtLjU1LS4wOS0xLjA0LS4yOC0xLjQ2LS4xOC0uNDItLjQ0LS43Ny0uNzgtMS4wNi0uMzMtLjI4LS43My0uNS0xLjItLjY0LS40NS0uMTMtLjk3LS4yLTEuNTMtLjItLjU1IDAtMS4wNi4wOC0xLjUyLjI0LS40Ny4xNy0uODcuNC0xLjIuNjktLjMzLjI5LS42LjYzLS43OCAxLjAzLS4yLjM5LS4yOS44My0uMjkgMS4yOWgxLjk4YzAtLjI2LjA1LS40OS4xNC0uNjkuMDktLjIuMjItLjM4LjM4LS41Mi4xNy0uMTQuMzYtLjI1LjU4LS4zM3MuNDYtLjEyLjczLS4xMmMuNjEgMCAxLjA2LjE2IDEuMzYuNDcuMy4zMS40NC43NS40NCAxLjMyIDAgLjI3LS4wNC41Mi0uMTIuNzQtLjA4LjIyLS4yMS40MS0uMzguNTdzLS4zOC4yOC0uNjMuMzctLjU1LjEzLS44OS4xM0g2LjcydjEuNTdINy45Yy4zNCAwIC42NC4wNC45MS4xMS4yNy4wOC41LjE5LjY5LjM1LjE5LjE2LjM0LjM2LjQ0LjYxLjEuMjQuMTYuNTQuMTYuODcgMCAuNjItLjE4IDEuMDktLjUzIDEuNDItLjM1LjMzLS44NC40OS0xLjQ1LjQ5LS4yOSAwLS41Ni0uMDQtLjgtLjEzLS4yNC0uMDgtLjQ0LS4yLS42MS0uMzZzLS4zLS4zNC0uMzktLjU2Yy0uMDktLjIyLS4xNC0uNDYtLjE0LS43Mkg0LjE5YzAgLjU1LjExIDEuMDMuMzIgMS40NS4yMS40Mi41Ljc3Ljg2IDEuMDVzLjc3LjQ5IDEuMjQuNjMuOTYuMjEgMS40OC4yMWMuNTcgMCAxLjA5LS4wOCAxLjU4LS4yM3MuOTEtLjM4IDEuMjYtLjY4Yy4zNi0uMy42NC0uNjYuODQtMS4xLjItLjQzLjMtLjkzLjMtMS40OCAwLS4yOS0uMDQtLjU4LS4xMS0uODYtLjA4LS4yNS0uMTktLjUxLS4zNS0uNzZ6bTkuMjYgMS40Yy0uMTQtLjI4LS4zNS0uNTMtLjYzLS43NC0uMjgtLjIxLS42MS0uMzktMS4wMS0uNTNzLS44NS0uMjctMS4zNS0uMzhhNi42NCA2LjY0IDAgMCAxLS44Ny0uMjNjLS4yMy0uMDgtLjQxLS4xNi0uNTUtLjI1cy0uMjMtLjE5LS4yOC0uM2MtLjA1LS4xMS0uMDgtLjI0LS4wOC0uMzlzLjAzLS4yOC4wOS0uNDEuMTUtLjI1LjI3LS4zNGMuMTItLjEuMjctLjE4LjQ1LS4yNHMuNC0uMDkuNjQtLjA5Yy4yNSAwIC40Ny4wNC42Ni4xMXMuMzUuMTcuNDguMjkuMjIuMjYuMjkuNDJjLjA2LjE2LjEuMzIuMS40OWgxLjk1YTIuNTE3IDIuNTE3IDAgMCAwLS45My0xLjk3Yy0uMy0uMjUtLjY2LS40NC0xLjA5LS41OS0uNDMtLjE1LS45Mi0uMjItMS40Ni0uMjItLjUxIDAtLjk4LjA3LTEuMzkuMjFzLS43Ny4zMy0xLjA2LjU3Yy0uMjkuMjQtLjUxLjUyLS42Ny44NHMtLjIzLjY1LS4yMyAxLjAxLjA4LjY4LjIzLjk2LjM3LjUyLjY0LjczYy4yNy4yMS42LjM4Ljk4LjUzLjM4LjE0LjgxLjI2IDEuMjcuMzYuMzkuMDguNzEuMTcuOTUuMjZzLjQzLjE5LjU3LjI5Yy4xMy4xLjIyLjIyLjI3LjM0LjA1LjEyLjA3LjI1LjA3LjM5IDAgLjMyLS4xMy41Ny0uNC43N3MtLjY2LjI5LTEuMTcuMjljLS4yMiAwLS40My0uMDItLjY0LS4wOC0uMjEtLjA1LS40LS4xMy0uNTYtLjI0YTEuMzMzIDEuMzMzIDAgMCAxLS41OS0xLjExaC0xLjg5YzAgLjM2LjA4LjcxLjI0IDEuMDVzLjM5LjY1LjcuOTNjLjMxLjI3LjY5LjQ5IDEuMTUuNjYuNDYuMTcuOTguMjUgMS41OC4yNS41MyAwIDEuMDEtLjA2IDEuNDQtLjE5LjQzLS4xMy44LS4zMSAxLjExLS41NC4zMS0uMjMuNTQtLjUxLjcxLS44My4xNy0uMzIuMjUtLjY3LjI1LTEuMDYtLjAyLS40LS4wOS0uNzQtLjI0LTEuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaW1lck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMWg2djJIOXpNMTIgNmMzLjg3IDAgNyAzLjEzIDcgNyAwIC45NC0uMTkgMS44My0uNTIgMi42NWwxLjUgMS41YTguOTYzIDguOTYzIDAgMCAwLS45NS05Ljc2bDEuNDItMS40MmMtLjQzLS41MS0uOS0uOTktMS40MS0xLjQxbC0xLjQyIDEuNDJhOC45NjIgOC45NjIgMCAwIDAtOS43Ny0uOTZsMS41IDEuNUE3LjA3IDcuMDcgMCAwIDEgMTIgNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEgOC4xNyAyIDJWOGgtMnpNMi44MSAyLjgxIDEuMzkgNC4yMmwzLjQgMy40YTguOTk0IDguOTk0IDAgMCAwIDEyLjU5IDEyLjU5bDIuNCAyLjQgMS40MS0xLjQxTDIuODEgMi44MXpNMTIgMjBjLTMuODcgMC03LTMuMTMtNy03IDAtMS40Ny40NS0yLjgzIDEuMjItMy45NWw5LjczIDkuNzNBNi45NDUgNi45NDUgMCAwIDEgMTIgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaW1lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDFIOXYyaDZWMXptLTQgMTNoMlY4aC0ydjZ6bTguMDMtNi42MSAxLjQyLTEuNDJjLS40My0uNTEtLjktLjk5LTEuNDEtMS40MWwtMS40MiAxLjQyQTguOTYyIDguOTYyIDAgMCAwIDEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDlhOC45OTQgOC45OTQgMCAwIDAgNy4wMy0xNC42MXpNMTIgMjBjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVG9uYWxpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0xIDE3LjkzYy0zLjk0LS40OS03LTMuODUtNy03LjkzczMuMDUtNy40NCA3LTcuOTN2MTUuODZ6bTItMTUuODZjMS4wMy4xMyAyIC40NSAyLjg3LjkzSDEzdi0uOTN6TTEzIDdoNS4yNGMuMjUuMzEuNDguNjUuNjggMUgxM1Y3em0wIDNoNi43NGMuMDguMzMuMTUuNjYuMTkgMUgxM3YtMXptMCA5LjkzVjE5aDIuODdjLS44Ny40OC0xLjg0LjgtMi44Ny45M3pNMTguMjQgMTdIMTN2LTFoNS45MmMtLjIuMzUtLjQzLjY5LS42OCAxem0xLjUtM0gxM3YtMWg2LjkzYy0uMDQuMzQtLjExLjY3LS4xOSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHJhbnNmb3JtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxOHYtMkg4VjRoMkw3IDEgNCA0aDJ2MkgydjJoNHY4YzAgMS4xLjkgMiAyIDJoOHYyaC0ybDMgMyAzLTNoLTJ2LTJoNHpNMTAgOGg2djZoMlY4YzAtMS4xLS45LTItMi0yaC02djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUdW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE3djJoNnYtMkgzek0zIDV2MmgxMFY1SDN6bTEwIDE2di0yaDh2LTJoLTh2LTJoLTJ2Nmgyek03IDl2MkgzdjJoNHYyaDJWOUg3em0xNCA0di0ySDExdjJoMTB6bS02LTRoMlY3aDRWNWgtNFYzaC0ydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb0NhbWVyYUJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMC40OFY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTQuNDhsNCAzLjk4di0xMWwtNCAzLjk4ek0xNiAxOEg0VjZoMTJ2MTJ6bS00LjM4LTYuNUw5IDE1bC0xLjYyLTIuMTdMNSAxNmgxMGwtMy4zOC00LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb0NhbWVyYUZyb250IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTAuNDhWNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi00LjQ4bDQgMy45OHYtMTFsLTQgMy45OHptLTItLjc5VjE4SDRWNmgxMnYzLjY5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTUuNDNjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1YTYuOTUgNi45NSAwIDAgMC01LjU2IDBBMi4wMSAyLjAxIDAgMCAwIDYgMTUuNDNWMTZoOHYtLjU3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlkZW9TdGFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNCAxOFY2aDIuOTVsLTIuMzMgOC43M0wxNi44MiAxOEg0em0xMS42Mi0yLjM5LTguNTUtMi4yOUw4LjM4IDguNGw4LjU2IDIuMjktMS4zMiA0Ljkyek0yMCAxOGgtMi45NWwyLjM0LTguNzNMNy4xOCA2SDIwdjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0NvbWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0djE2aDIwVjRIMnptMiAyaDE2djVINFY2em0wIDEydi01aDR2NUg0em02IDB2LTVoMTB2NUgxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZXdDb21wYWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0djE2aDIwVjRIMnptNC41IDE0SDR2LTIuNWgyLjVWMTh6bTAtNC43NUg0di0yLjVoMi41djIuNXptMC00Ljc1SDRWNmgyLjV2Mi41ek0xMSAxOEg4LjV2LTIuNUgxMVYxOHptMC00Ljc1SDguNXYtMi41SDExdjIuNXptMC00Ljc1SDguNVY2SDExdjIuNXptNC41IDkuNUgxM3YtMi41aDIuNVYxOHptMC00Ljc1SDEzdi0yLjVoMi41djIuNXptMC00Ljc1SDEzVjZoMi41djIuNXpNMjAgMThoLTIuNXYtMi41SDIwVjE4em0wLTQuNzVoLTIuNXYtMi41SDIwdjIuNXptMC00Ljc1aC0yLjVWNkgyMHYyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWduZXR0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNXYxNEgzVjVoMThtMC0ySDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTkgNWMzLjI1IDAgNiAxLjgzIDYgNHMtMi43NSA0LTYgNC02LTEuODMtNi00IDIuNzUtNCA2LTRtMC0yYy00LjQyIDAtOCAyLjY5LTggNnMzLjU4IDYgOCA2IDgtMi42OSA4LTYtMy41OC02LTgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZycGFubyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjAxIDRDMjAuNDUgNCAxNy40IDUuNSAxMiA1LjVjLTUuMzEgMC04LjQ5LTEuNDktOS4wMS0xLjQ5LS41MyAwLS45OS40NC0uOTkgMS4wMVYxOWMwIC41Ny40NiAxIC45OSAxIC41NyAwIDMuNTUtMS41IDkuMDEtMS41IDUuNDIgMCA4LjQ0IDEuNSA5LjAxIDEuNS41MyAwIC45OS0uNDMuOTktMVY1YzAtLjU3LS40Ni0xLS45OS0xek0yMCAxNy42M2MtMi4wMS0uNTktNC42Mi0xLjEzLTgtMS4xMy0zLjM5IDAtNS45OS41NC04IDEuMTNWNi4zOGMyLjU4LjczIDUuMzIgMS4xMiA4IDEuMTIgMy4zOCAwIDUuOTktLjU0IDgtMS4xM3YxMS4yNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOS4xNyAxMC45OS0zLjY5IDQuNDJjMi0uMjYgNC4xOC0uNDEgNi41Mi0uNDEgMi4zIDAgNC41Mi4xNSA2LjUxLjRMMTQgMTBsLTIuODMgMy4zOS0yLTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdiQXV0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNyA3LTMuMiA5aDEuOWwuNy0yaDMuMmwuNyAyaDEuOUw5IDdIN3ptLS4xNSA1LjY1TDggOWwxLjE1IDMuNjVoLTIuM3pNMjIgN2wtMS4yIDYuMjlMMTkuMyA3aC0xLjZsLTEuNDkgNi4yOUwxNSA3aC0uNzZsLS4wMS4wMUMxMi43NiA1LjE4IDEwLjUzIDQgOCA0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4YzIuOTYgMCA1LjU1LTEuNjEgNi45My00IC4wMy0uMDYuMDUtLjEyLjA4LS4xOC4wNS0uMDguMDktLjE3LjE0LS4yNWwuMS40M0gxN2wxLjUtNi4xTDIwIDE2aDEuNzVsMi4wNS05SDIyem0tOC42MyA3LjY3QzEyLjM4IDE2LjY0IDEwLjM1IDE4IDggMThjLTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTYgNiAyLjY5IDYgNmMwIC45Ni0uMjMgMS44Ni0uNjMgMi42N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdiQ2xvdWR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4wMSA2YzIuNjEgMCA0Ljg5IDEuODYgNS40IDQuNDNsLjMgMS41IDEuNTIuMTFjMS41Ni4xMSAyLjc4IDEuNDEgMi43OCAyLjk2IDAgMS42NS0xLjM1IDMtMyAzaC0xM2MtMi4yMSAwLTQtMS43OS00LTQgMC0yLjA1IDEuNTMtMy43NiAzLjU2LTMuOTdsMS4wNy0uMTEuNS0uOTVBNS40NTcgNS40NTcgMCAwIDEgMTIuMDEgNm0wLTJDOS4xMiA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM1IDguMzYuMDEgMTAuOTEuMDEgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY0LTQuOTZDMTguNjggNi41OSAxNS42NSA0IDEyLjAxIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYkluY2FuZGVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMy41NSAxOS4wOSAxLjQxIDEuNDEgMS43OS0xLjgtMS40MS0xLjQxek0xMSAyMGgydjNoLTJ6TTEgMTFoM3YySDF6bTEyLTYuOTV2My45NmwxIC41OGMxLjI0LjcyIDIgMi4wNCAyIDMuNDYgMCAyLjIxLTEuNzkgNC00IDRzLTQtMS43OS00LTRjMC0xLjQyLjc3LTIuNzQgMi0zLjQ2bDEtLjU4VjQuMDVoMm0yLTJIOXY0LjgxQzcuMjEgNy45IDYgOS44MyA2IDEyLjA1YzAgMy4zMSAyLjY5IDYgNiA2czYtMi42OSA2LTZjMC0yLjIyLTEuMjEtNC4xNS0zLTUuMTlWMi4wNXpNMjAgMTFoM3YyaC0zem0tMi43NiA3LjcxIDEuNzkgMS44IDEuNDEtMS40MS0xLjgtMS43OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdiSXJpZGVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNWgxNFY5SDV2NnptMi00aDEwdjJIN3YtMnptNC0xMGgydjNoLTJ6bTkuNDYgNC4wMUwxOS4wNCAzLjZsLTEuNzkgMS43OSAxLjQxIDEuNDF6TTExIDIwaDJ2M2gtMnptNi4yNC0xLjI5IDEuNzkgMS44IDEuNDItMS40Mi0xLjgtMS43OXpNNC45NiAzLjU5NWwxLjc4OCAxLjc5TDUuMzQgNi43OSAzLjU1MyA1LjAwM3pNMy41NSAxOS4wOGwxLjQxIDEuNDIgMS43OS0xLjgtMS40MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2JTaGFkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEydjIuNWw1LjUgNS41SDIybC04LTh6bTAgOGgzbC0zLTN2M3pNOCA0bC02IDZoMnYxMGg4VjEwaDJMOCA0em0xIDEwSDd2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2JTdW5ueSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNi43NiA0Ljg0LTEuOC0xLjc5LTEuNDEgMS40MSAxLjc5IDEuNzl6TTEgMTAuNWgzdjJIMXpNMTEgLjU1aDJWMy41aC0yem04LjA0IDIuNDk1IDEuNDA4IDEuNDA3LTEuNzkgMS43OS0xLjQwNy0xLjQwOHptLTEuOCAxNS4xMTUgMS43OSAxLjggMS40MS0xLjQxLTEuOC0xLjc5ek0yMCAxMC41aDN2MmgtM3ptLTgtNWMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6bTAgMTBjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0em0tMSA0aDJ2Mi45NWgtMnptLTcuNDUtLjk2IDEuNDEgMS40MSAxLjc5LTEuOC0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYlR3aWxpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuOTU1IDguNjYyIDIuMTItMi4xMjIgMS40MTYgMS40MTQtMi4xMjEgMi4xMjJ6TTIgMThoMjB2Mkgyek0xMSA0aDJ2M2gtMnpNMy41NDMgNy45MjUgNC45NTcgNi41MWwyLjEyMSAyLjEyLTEuNDE0IDEuNDE1ek01IDE2aDE0YzAtMy44Ny0zLjEzLTctNy03cy03IDMuMTMtNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMzYwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3QzYuNDggNyAyIDkuMjQgMiAxMmMwIDIuMjQgMi45NCA0LjEzIDcgNC43N1YyMGw0LTQtNC00djIuNzNjLTMuMTUtLjU2LTUtMS45LTUtMi43MyAwLTEuMDYgMy4wNC0zIDgtM3M4IDEuOTQgOCAzYzAgLjczLTEuNDYgMS44OS00IDIuNTN2Mi4wNWMzLjUzLS43NyA2LTIuNTMgNi00LjU4IDAtMi43Ni00LjQ4LTUtMTAtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZEJ1c2luZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0aDE1djJIMnpNMTUgMTdoMnYtM2gxdi0ybC0xLTVIMmwtMSA1djJoMXY2aDl2LTZoNHYzem0tNiAxSDR2LTRoNXY0em0tNS45Ni02IC42LTNoMTEuNzJsLjYgM0gzLjA0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxOGgtM3YtM2gtMnYzaC0zdjJoM3YzaDJ2LTNoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZExvY2F0aW9uQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMXYzaDN2MmgtM3YzaC0yVjZoLTNWNGgzVjFoMnptLTggMTJjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem0xLTkuOTR2Mi4wMkE2LjUzIDYuNTMgMCAwIDAgMTIgNWMtMy4zNSAwLTYgMi41Ny02IDYuMiAwIDIuMzQgMS45NSA1LjQ0IDYgOS4xNCA0LjA1LTMuNyA2LTYuNzkgNi05LjE0VjExaDJ2LjJjMCAzLjMyLTIuNjcgNy4yNS04IDExLjgtNS4zMy00LjU1LTgtOC40OC04LTExLjhDNCA2LjIyIDcuOCAzIDEyIDNjLjM0IDAgLjY3LjAyIDEgLjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkTG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA2djNoM3YyaC0zdjNoLTJ2LTNIOFY5aDNWNmgyem01IDQuMkMxOCA2LjU3IDE1LjM1IDQgMTIgNHMtNiAyLjU3LTYgNi4yYzAgMi4zNCAxLjk1IDUuNDQgNiA5LjE0IDQuMDUtMy43IDYtNi44IDYtOS4xNHpNMTIgMmM0LjIgMCA4IDMuMjIgOCA4LjIgMCAzLjMyLTIuNjcgNy4yNS04IDExLjgtNS4zMy00LjU1LTgtOC40OC04LTExLjhDNCA1LjIyIDcuOCAyIDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRSb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTh2LTNoLTJ2M2gtM3YyaDN2M2gydi0zaDN2LTJ6TTE4IDRoMnY5aC0yek00IDRoMnYxNkg0ek0xMSA0aDJ2NGgtMnpNMTEgMTBoMnY0aC0yek0xMSAxNmgydjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZ3JpY3VsdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgOWg1YzAtMS4xLS45LTItMi0ySDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE0LjA2VjhjMC0xLjEtLjktMi0yLTJoLTYuMjlsLTEuMDYtMS4wNiAxLjQxLTEuNDEtLjcxLS43MS0zLjUzIDMuNTMuNzEuNzEgMS40MS0xLjQxTDEzIDYuNzFWOWMwIDEuMS0uOSAyLTIgMkg4Ljk2Yy0uMjItLjE2LS40NS0uMy0uNjktLjQzbC0uNC44OS0uNDYtLjIxLjQtLjlDNy4yNiAxMC4xMyA2LjY0IDEwIDYgMTBjLS41MyAwLTEuMDQuMTEtMS41Mi4yNmwuMzQuOTEtLjQ3LjE4LS4zNS0uOTNhNC45MiA0LjkyIDAgMCAwLTIuNDMgMi4zMWwuODkuNC0uMjEuNDYtLjktLjRDMS4xMyAxMy43NCAxIDE0LjM2IDEgMTVjMCAuNTMuMTEgMS4wNC4yNiAxLjUybC45MS0uMzQuMTguNDctLjkzLjM1YTQuOTIgNC45MiAwIDAgMCAyLjMxIDIuNDNsLjQtLjg5LjQ2LjIxLS40LjljLjU1LjIyIDEuMTcuMzUgMS44MS4zNS41MyAwIDEuMDQtLjExIDEuNTItLjI2bC0uMzQtLjkxLjQ3LS4xOC4zNS45M2E0LjkyIDQuOTIgMCAwIDAgMi40My0yLjMxbC0uODktLjQuMjEtLjQ2LjkuNGMuMS0uMjYuMTgtLjU0LjI0LS44Mmg1LjE2Yy0uMDIuMTctLjA1LjM0LS4wNS41MSAwIDEuOTMgMS41NyAzLjUgMy41IDMuNXMzLjUtMS41NyAzLjUtMy41YzAtLjk1LS4zOC0xLjgxLTEtMi40NHpNNiAxOGMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6bTQuODctNGMtLjA0LS4xOC0uMDgtLjM1LS4xMy0uNTJsLS45MS4zNC0uMTgtLjQ3LjkzLS4zNUgxMWMyLjIxIDAgNC0xLjc5IDQtNFY4aDV2NS4wNWMtLjE2LS4wMi0uMzMtLjA1LS41LS4wNS0uOTUgMC0xLjgxLjM4LTIuNDQgMWgtNi4xOXptOC42MyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpcmxpbmVTdG9wcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDguN2MtMi40NiAxLjUtNS41IDQuMTctNiA4LjNoMnYySDl2LTJoMmMtLjUtNC41LTQuMzctOC05LThWN2M0LjM5IDAgOC4yMiAyLjU1IDEwIDYuMyAxLjM4LTIuOTcgMy44Ni01LjAzIDUuOTYtNi4zMUwxNCA3VjVoN3Y3aC0yVjguN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpcmxpbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMzQgMThINS44bDguMjUtMTJoNS41NGwtMi4yNSAxMnpNMTMgNCAyIDIwaDE3bDMtMTZoLTl6bTEuNSA1YTIuNSAyLjUgMCAwIDAgMCA1IDIuNSAyLjUgMCAwIDAgMC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWx0Um91dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05Ljc4IDExLjE2LTEuNDIgMS40MmE3LjI4MiA3LjI4MiAwIDAgMS0xLjc5LTIuOTRsMS45NC0uNDljLjMyLjg5Ljc3IDEuNSAxLjI3IDIuMDF6TTExIDYgNyAyIDMgNmgzLjAyYy4wMi44MS4wOCAxLjU0LjE5IDIuMTdsMS45NC0uNDlDOC4wOCA3LjIgOC4wMyA2LjYzIDguMDIgNkgxMXptMTAgMC00LTQtNCA0aDIuOTljLS4xIDMuNjgtMS4yOCA0Ljc1LTIuNTQgNS44OC0uNS40NC0xLjAxLjkyLTEuNDUgMS41NS0uMzQtLjQ5LS43My0uODgtMS4xMy0xLjI0TDkuNDYgMTMuNmMuOTMuODUgMS41NCAxLjU0IDEuNTQgMy40djVoMnYtNWMwLTIuMDIuNzEtMi42NiAxLjc5LTMuNjMgMS4zOC0xLjI0IDMuMDgtMi43OCAzLjItNy4zN0gyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF0bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA5djEuNWgyLjI1VjE1aDEuNXYtNC41SDE0VjlIOHpNNiA5SDNjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNXYtMS41aDJWMTVIN3YtNWMwLS41NS0uNDUtMS0xLTF6bS0uNSAzaC0ydi0xLjVoMlYxMnpNMjEgOWgtNC41Yy0uNTUgMC0xIC40NS0xIDF2NUgxN3YtNC41aDFWMTRoMS41di0zLjUxaDFWMTVIMjJ2LTVjMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXR0cmFjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC4xNSAxNC40MmMuMjMtLjc3LjM1LTEuNTguMzUtMi40MnMtLjEyLTEuNjUtLjM1LTIuNDJjLjc4LS42IDEuMDItMS43LjUxLTIuNThzLTEuNTgtMS4yMy0yLjQ5LS44NWE4LjUzIDguNTMgMCAwIDAtNC4xOC0yLjQyQzEzLjg1IDIuNzUgMTMuMDEgMiAxMiAycy0xLjg1Ljc1LTEuOTggMS43M2E4LjU2MSA4LjU2MSAwIDAgMC00LjE5IDIuNDJjLS45MS0uMzgtMS45OC0uMDMtMi40OS44NXMtLjI3IDEuOTguNTEgMi41OGMtLjIzLjc3LS4zNSAxLjU4LS4zNSAyLjQycy4xMiAxLjY1LjM1IDIuNDJjLS43OC42LTEuMDIgMS43LS41MSAyLjU4czEuNTggMS4yMyAyLjQ5Ljg1Yy40LjQyLjgzLjc5IDEuMyAxLjEyTDUuNzggMjJoMS44OGwuOTgtMi4xOWMuNDQuMTkuOS4zNCAxLjM4LjQ2LjEzLjk4Ljk3IDEuNzMgMS45OCAxLjczczEuODUtLjc1IDEuOTgtMS43M2MuNDYtLjExLjkxLS4yNiAxLjM0LS40NEwxNi4zIDIyaDEuODhsLTEuMzQtM2MuNDgtLjM0LjkzLS43MiAxLjM0LTEuMTUuOTEuMzggMS45OS4wMyAyLjQ5LS44NS41LS44OC4yNi0xLjk4LS41Mi0yLjU4em0tNi41OSA0LjMzYy0uMzctLjQ2LS45My0uNzUtMS41Ni0uNzVzLTEuMi4yOS0xLjU3Ljc1Yy0uNC0uMDktLjc5LS4yMS0xLjE2LS4zN2wxLjQzLTMuMTlhMy41MjIgMy41MjIgMCAwIDAgMi41Ni4wMmwxLjQyIDMuMThjLS4zNi4xNS0uNzMuMjctMS4xMi4zNnptLTMuMDgtNi43M2MwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjUtMS41LS42Ny0xLjUtMS41em04LjIzIDEuOTljLS42MS4wNy0xLjE4LjQxLTEuNTIuOTktLjMyLjU2LS4zNCAxLjItLjEyIDEuNzUtLjI4LjI5LS41OC41NS0uOS43OWwtMS41LTMuMzVjLjQ5LS41OS43OC0xLjM0Ljc4LTIuMTYgMC0xLjg5LTEuNTUtMy40MS0zLjQ2LTMuNDFzLTMuNDYgMS41My0zLjQ2IDMuNDFjMCAuOC4yOCAxLjU0Ljc1IDIuMTNsLTEuNTIgMy4zOWMtLjMxLS4yMy0uNi0uNDgtLjg3LS43Ni4yNi0uNTYuMjQtMS4yMi0uMDktMS43OS0uMzQtLjU5LS45My0uOTQtMS41Ni0uOTktLjIyLS42OC0uMzMtMS40LS4zMy0yLjE1IDAtLjY0LjA5LTEuMjYuMjUtMS44NS42Ni0uMDMgMS4zLS4zOCAxLjY1LTEgLjM3LS42My4zNS0xLjM4LjAxLTEuOTguOTItLjk4IDIuMTEtMS42OSAzLjQ1LTIuMDMuMzQuNTkuOTkgMSAxLjczIDFzMS4zOS0uNCAxLjczLTFjMS4zNC4zNCAyLjUzIDEuMDcgMy40NCAyLjA1LS4zMi41OS0uMzMgMS4zMy4wMyAxLjk1LjM1LjYuOTYuOTUgMS42IDEgLjE2LjU5LjI1IDEuMjEuMjUgMS44NiAwIC43NS0uMTIgMS40Ny0uMzQgMi4xNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhZGdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTJoNHYxLjVoLTR6TTE0IDE1aDR2MS41aC00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA3aC01VjRjMC0xLjEtLjktMi0yLTJoLTJjLTEuMSAwLTIgLjktMiAydjNINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0yem0tOSAwVjRoMnY1aC0yVjd6bTkgMTNINFY5aDVjMCAxLjEuOSAyIDIgMmgyYzEuMSAwIDItLjkgMi0yaDV2MTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4wOCAxNi4xOGMtLjY0LS4yOC0xLjM0LS40My0yLjA4LS40M3MtMS40NC4xNS0yLjA4LjQzYy0uNTYuMjQtLjkyLjc4LS45MiAxLjM5VjE4aDZ2LS40M2MwLS42MS0uMzYtMS4xNS0uOTItMS4zOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJha2VyeURpbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjUgMTAuOTRjLjEzLS4zMi4xLS4yMy4xNS0uMzkuMy0xLjIxLS4zNC0yLjQ3LTEuNS0yLjkzbC0yLjAxLS44Yy0uNDYtLjE4LS45NS0uMjEtMS40MS0uMTItLjExLS4zMy0uMjktLjYzLS41Mi0uODktLjQ4LS41Mi0xLjE1LS44MS0xLjg1LS44MWgtMi43MWMtLjcxIDAtMS4zOC4yOS0xLjg1LjgxLS4yNC4yNi0uNDIuNTYtLjUzLjg4LS40Ni0uMDktLjk1LS4wNi0xLjQxLjEybC0yLjAxLjhjLTEuMTYuNDYtMS44IDEuNzItMS41IDIuOTNsLjE1LjM4QzEuMSAxNS41NSAxIDE1LjU1IDEgMTYuMzhjMCAuOTEuNDYgMS43NCAxLjI0IDIuMjIgMS40Mi44OCAyLjQ5LjE0IDQtLjYxaDExLjUzYzEuNTIuNzYgMS44NiAxLjAxIDIuNjMgMS4wMSAxIDAgMi42MS0uNzcgMi42MS0yLjYxLS4wMS0uODUtLjEzLS44OC0yLjUxLTUuNDV6bS0uMzggNS45OS0xLjY4LS44NCAxLjA4LTIuNyAxLjQxIDIuNzFjLjI4LjUzLS4yOSAxLjA5LS44MS44M3ptLTUuMDMtLjk0LjYyLTYuOWMuMDMtLjMzLjM3LS41NC42OC0uNDJsMi4wMS44Yy4yMi4wOS4zNC4zMS4zMS41NGwtMi40IDUuOThoLTEuMjJ6bS03LjQxIDAtMi40LTUuOThjLS4wMy0uMjMuMDktLjQ1LjMxLS41NGwyLjAxLS44Yy4zMS0uMTIuNjUuMDguNjguNDJsLjYyIDYuOUg3LjY4em0tNC42MS4xMSAxLjQxLTIuNzIgMS4wOCAyLjcxLTEuNjguODRjLS41Mi4yNi0xLjA5LS4zLS44MS0uODN6bTcuMDgtOC41NmEuNS41IDAgMCAxIC41LS41NGgyLjcxYS41LjUgMCAwIDEgLjUuNTRsLS43NyA4LjQ1aC0yLjE3bC0uNzctOC40NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJlZW5oZXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxSDVjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMyAxNS45M2MwIC42OS4zNSAxLjMuODggMS42NkwxMiAyM2w4LjExLTUuNDFjLjUzLS4zNi44OC0uOTcuODgtMS42NkwyMSAzYzAtMS4xLS45LTItMi0yem0tNyAxOS42LTctNC42NlYzaDE0djEyLjkzbC03IDQuNjd6bS0yLjAxLTcuNDItMi41OC0yLjU5TDYgMTJsNCA0IDgtOC0xLjQyLTEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCaWtlU2Nvb3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE0aC43NEw4LjgyIDUuNTZBMi4wMDkgMi4wMDkgMCAwIDAgNi44NyA0SDN2MmgzLjg3bDEuNDIgNi4yNWgtLjAxQTYuMDA4IDYuMDA4IDAgMCAwIDQuMDkgMTdIMHYyaDZ2LTFjMC0yLjIxIDEuNzktNCA0LTR6TTE5IDhoLS44MmwtMS4zNS0zLjY5QTEuOTc2IDEuOTc2IDAgMCAwIDE0Ljk2IDNIMTF2MmgzLjk2bDEuMSAzSDEwLjRsLjQ2IDJIMTVjLS40My41OC0uNzUgMS4yNS0uOSAyaC0yLjc5bC40NiAyaDIuMzNjLjQ0IDIuMjMgMi4zMSAzLjg4IDQuNjUgMy45OSAyLjguMTMgNS4yNS0yLjE5IDUuMjUtNUMyNCAxMC4yIDIxLjggOCAxOSA4em0wIDhjLTEuNjggMC0zLTEuMzItMy0zIDAtLjkzLjQxLTEuNzMgMS4wNS0yLjI4bC45NiAyLjY0IDEuODgtLjY4LS45Ny0yLjY3Yy4wMyAwIC4wNi0uMDEuMDktLjAxIDEuNjggMCAzIDEuMzIgMyAzcy0xLjMzIDMtMy4wMSAzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNWMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJlYWtmYXN0RGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggM0g2QzMuNzkgMyAyIDQuNzkgMiA3YzAgMS40OC44MSAyLjc1IDIgMy40NVYxOWMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi04LjU1YzEuMTktLjY5IDItMS45NyAyLTMuNDUgMC0yLjIxLTEuNzktNC00LTR6bTEgNS43Mi0xIC41OFYxOUg2VjkuMzFsLS45OS0uNThDNC4zOCA4LjM1IDQgNy43MSA0IDdjMC0xLjEuOS0yIDItMmgxMmMxLjEgMCAyIC45IDIgMiAwIC43MS0uMzggMS4zNi0xIDEuNzJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjcxIDkuMjlDMTIuNTEgOS4xIDEyLjI2IDkgMTIgOXMtLjUxLjEtLjcxLjI5bC0zIDNhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDMgM2MuMi4yLjQ1LjMuNzEuM3MuNTEtLjEuNzEtLjI5bDMtM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTMtMy4wMXpNMTIgMTQuNTggMTAuNDEgMTMgMTIgMTEuNDEgMTMuNTkgMTMgMTIgMTQuNTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCcnVuY2hEaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDIxLjVjMCAuMjguMjIuNS40OS41aDEzLjAyYy4yNyAwIC40OS0uMjIuNDktLjVWMjBIMnYxLjV6TTE1LjUgMTZIMTF2LTJIN3YySDIuNWMtLjI4IDAtLjUuMjItLjUuNVYxOGgxNHYtMS41YzAtLjI4LS4yMi0uNS0uNS0uNXpNMjAuNDcgMTUuNDVBNS43OTYgNS43OTYgMCAwIDAgMjIgMTEuNTFWMmgtNnY5LjQ3YzAgMS40OC41OCAyLjkyIDEuNiA0bC40LjQyVjIyaDR2LTJoLTJ2LTQuMDNsLjQ3LS41MnpNMTggNGgydjRoLTJWNHptMS4wMyAxMC4wN2EzLjg5MyAzLjg5MyAwIDAgMS0xLjAzLTIuNlYxMGgydjEuNTFjMCAuOTUtLjM0IDEuODUtLjk3IDIuNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCdXNBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNi41XCIsXCJjeVwiOlwiMTUuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTMuNVwiLFwiY3lcIjpcIjE1LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDExVjhoNy4yOUMxMS4xIDcuMzcgMTEgNi43IDExIDZINC40M2MuODMtLjcxIDIuOTgtMS4wOSA2LjY1LS45OC4xLS43LjMtMS4zNy41OS0xLjk5QzIuOTcgMi42NyAyIDUuMDIgMiA3djkuNWMwIC45NS4zOCAxLjgxIDEgMi40NFYyMWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWg4djFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTIuMDZjLjYyLS42MyAxLTEuNDkgMS0yLjQ0VjEzYy0xLjkxIDAtMy42My0uNzYtNC44OS0ySDR6bTEyIDVjMCAxLjEtLjkgMi0yIDJINmMtMS4xIDAtMi0uOS0yLTJ2LTNoMTJ2M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMWMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bS41IDhoLTFWOGgxdjF6bTAtMmgtMVYzaDF2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhckNyYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMWMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bS41IDZoLTFWM2gxdjR6bTAgMXYxaC0xVjhoMXpNNiAxMy41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41UzguMzMgMTUgNy41IDE1IDYgMTQuMzMgNiAxMy41em0xMy0uNTdhNi43MiA2LjcyIDAgMCAwIDItLjZWMTljMCAuNTUtLjQ1IDEtMSAxaC0xYy0uNTUgMC0xLS40NS0xLTF2LTFINnYxYzAgLjU1LS40NSAxLTEgMUg0Yy0uNTUgMC0xLS40NS0xLTF2LThsMi4wOC01Ljk5QzUuMjkgNC40MiA1Ljg0IDQgNi41IDRoNC43OWMtLjE5LjYzLS4yOSAxLjMxLS4yOSAySDYuODVMNS44MSA5aDUuODZjLjM2Ljc1Ljg0IDEuNDMgMS40MyAySDV2NWgxNHYtMy4wN3ptLTEuMDkuMDdhNi45MiA2LjkyIDAgMCAxLTIuNTMtLjUxYy0uMjMuMjctLjM4LjYyLS4zOCAxLjAxIDAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNWMwLS4xOC0uMDMtLjM0LS4wOS0uNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhclJlbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjE2LjVcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjE2LjVcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMjUgOS42Yy0uMDItLjAyLS4wMy0uMDQtLjA1LS4wNy0uMzgtLjUyLS45Mi0uNTMtLjkyLS41M0g3Ljcycy0uNTQuMDEtLjkyLjU0Yy0uMDIuMDItLjAzLjA0LS4wNS4wNi0uMDcuMTEtLjE0LjI0LS4xOS40LS4yMi42Ni0uNzQgMi4yMi0xLjU2IDQuNjl2Ni41YzAgLjQ1LjM1LjgxLjc4LjgxaC40NGMuNDMgMCAuNzgtLjM2Ljc4LS44MVYyMGgxMHYxLjE5YzAgLjQ1LjM0LjgxLjc4LjgxaC40NGMuNDMgMCAuNzgtLjM2Ljc4LS44MXYtNi41Yy0uODItMi40Ni0xLjM0LTQuMDMtMS41Ni00LjY5LS4wNS0uMTYtLjEyLS4yOS0uMTktLjR6TTguMzMgMTFoNy4zNGwuMjMuNjkuNDMgMS4zMUg3LjY3bC42Ni0yek0xNyAxOEg3di0zaDEwdjN6TTEwLjgzIDNBMy4wMSAzLjAxIDAgMCAwIDggMUM2LjM0IDEgNSAyLjM0IDUgNGMwIDEuNjUgMS4zNCAzIDMgMyAxLjMgMCAyLjQxLS44NCAyLjgzLTJIMTZ2MmgyVjVoMVYzaC04LjE3ek04IDVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhclJlcGFpciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEwLjVcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjEwLjVcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS43OCAxNmguNDRjLjQzIDAgLjc4LS4zNi43OC0uODFWMTRoMTB2MS4xOWMwIC40NS4zNC44MS43OC44MWguNDRjLjQzIDAgLjc4LS4zNi43OC0uODF2LTYuNUwxNy40NCA0Yy0uMDUtLjE2LS4xMi0uMjktLjE5LS40LS4wMi0uMDItLjAzLS4wNC0uMDUtLjA3LS4zOC0uNTItLjkyLS41My0uOTItLjUzSDcuNzJzLS41NC4wMS0uOTIuNTRjLS4wMi4wMi0uMDMuMDQtLjA1LjA2LS4wNy4xMS0uMTQuMjQtLjE5LjRMNSA4LjY5djYuNWMwIC40NS4zNS44MS43OC44MXpNOC4zMyA1aDcuMzRsLjIzLjY5LjQzIDEuMzFINy42N2wuNjYtMnpNNyA5LjAxVjloMTB2M0g3VjkuMDF6TTQgMTcuMDFWMTloN3YzaDJ2LTNoN3YtMS45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhc3RsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDl2MmgtMlYzaC0ydjJoLTJWM2gtMnYyaC0yVjNIOXYySDdWM0g1djhIM1Y5SDF2MTJoOXYtM2MwLTEuMS45LTIgMi0yczIgLjkgMiAydjNoOVY5aC0yem0wIDEwaC01di0xYzAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0djFIM3YtNmg0VjdoMTB2Nmg0djZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgOWgydjNIOXpNMTMgOWgydjNoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYXRlZ29yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgMi01LjUgOWgxMUwxMiAyem0wIDMuODRMMTMuOTMgOWgtMy44N0wxMiA1Ljg0ek0xNy41IDEzYy0yLjQ5IDAtNC41IDIuMDEtNC41IDQuNXMyLjAxIDQuNSA0LjUgNC41IDQuNS0yLjAxIDQuNS00LjUtMi4wMS00LjUtNC41LTQuNXptMCA3YTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1ek0zIDIxLjVoOHYtOEgzdjh6bTItNmg0djRINXYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNlbGVicmF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMiAyMiAxNC01LTktOS01IDE0em0xMC4zNS01LjgyTDUuMyAxOC43bDIuNTItNy4wNSA0LjUzIDQuNTN6TTE0LjUzIDEyLjUzbDUuNTktNS41OWExLjI1IDEuMjUgMCAwIDEgMS43NyAwbC41OS41OSAxLjA2LTEuMDYtLjU5LS41OWEyLjc1OCAyLjc1OCAwIDAgMC0zLjg5IDBsLTUuNTkgNS41OSAxLjA2IDEuMDZ6TTEwLjA2IDYuODhsLS41OS41OSAxLjA2IDEuMDYuNTktLjU5YTIuNzU4IDIuNzU4IDAgMCAwIDAtMy44OWwtLjU5LS41OS0xLjA2IDEuMDcuNTkuNTljLjQ4LjQ4LjQ4IDEuMjggMCAxLjc2ek0xNy4wNiAxMS44OGwtMS41OSAxLjU5IDEuMDYgMS4wNiAxLjU5LTEuNTlhMS4yNSAxLjI1IDAgMCAxIDEuNzcgMGwxLjYxIDEuNjEgMS4wNi0xLjA2LTEuNjEtMS42MWEyLjc1OCAyLjc1OCAwIDAgMC0zLjg5IDB6TTE1LjA2IDUuODhsLTMuNTkgMy41OSAxLjA2IDEuMDYgMy41OS0zLjU5YTIuNzU4IDIuNzU4IDAgMCAwIDAtMy44OWwtMS41OS0xLjU5LTEuMDYgMS4wNiAxLjU5IDEuNTljLjQ4LjQ5LjQ4IDEuMjkgMCAxLjc3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2h1cmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTIuMjJWOWwtNS0yLjVWNWgyVjNoLTJWMWgtMnYySDl2MmgydjEuNUw2IDl2My4yMkwyIDE0djhoOXYtNGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NGg5di04bC00LTEuNzh6TTIwIDIwaC01di0yLjA0YzAtMS42OS0xLjM1LTMuMDYtMy0zLjA2cy0zIDEuMzctMyAzLjA2VjIwSDR2LTQuNzlsNC0xLjgxdi0zLjM1TDEyIDhsNCAyLjA0djMuMzVsNCAxLjgxVjIwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xlYW5pbmdTZXJ2aWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDExaC0xVjNjMC0xLjEtLjktMi0yLTJoLTJjLTEuMSAwLTIgLjktMiAydjhIOGMtMi43NiAwLTUgMi4yNC01IDV2N2gxOHYtN2MwLTIuNzYtMi4yNC01LTUtNXptLTUtOGgydjhoLTJWM3ptOCAxOGgtMnYtM2MwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXYzaC0ydi0zYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjNIOXYtM2MwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXYzSDV2LTVjMC0xLjY1IDEuMzUtMyAzLTNoOGMxLjY1IDAgMyAxLjM1IDMgM3Y1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29tcGFzc0NhbGlicmF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMmMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTAgOGMtMS42NSAwLTMtMS4zNS0zLTNzMS4zNS0zIDMtMyAzIDEuMzUgMyAzLTEuMzUgMy0zIDN6bTAtMTdDOC4xIDMgNC41NiA0LjU5IDIgNy4xNWw1IDVhNy4wNiA3LjA2IDAgMCAxIDEwLS4wMWw1LTVDMTkuNDQgNC41OSAxNS45IDMgMTIgM3ptNC44NCA2LjQ3Yy0xLjQ0LS45MS0zLjEtMS40LTQuODQtMS40LTEuNzQgMC0zLjQxLjQ5LTQuODUgMS40MUw0Ljk0IDcuMjZDNi45OSA1Ljc5IDkuNDQgNSAxMiA1YzIuNTYgMCA1IC43OSA3LjA1IDIuMjZsLTIuMjEgMi4yMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbm5lY3RpbmdBaXJwb3J0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjQgMTcgMS4zIDQuNGgtMS4xTDEzIDE3aC0zYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xaDNsMi42LTQuNGgxLjFMMTUuNCAxNWgyLjg1bC43NS0xaDFsLS42IDIgLjYgMmgtMWwtLjc1LTFIMTUuNHpNNS43NSA3IDUgNkg0bC42IDItLjYgMmgxbC43NS0xSDguNmwtMS4zIDQuNGgxLjFMMTEgOWgzYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xaC0zTDguNCAyLjZINy4zTDguNiA3SDUuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcmlzaXNBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMi41YzAgMS41LTEuNSA2LTEuNSA2aC0yUzkuNSA0IDkuNSAyLjVhMi41IDIuNSAwIDAgMSA1IDB6TTEyIDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNC4wOC00Ljg5Yy4xOC0uNzUuMzMtMS40Ny4zOS0yLjA2QTkuOTk2IDkuOTk2IDAgMCAxIDIyIDEyYzAgNS41Mi00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMmMwLTMuOTIgMi4yNS03LjMxIDUuNTMtOC45NS4wNy41OS4yMSAxLjMyLjM5IDIuMDZBOC4wMjggOC4wMjggMCAwIDAgNCAxMmMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04YzAtMi45My0xLjU4LTUuNDktMy45Mi02Ljg5ek0xOCAxMmMwIDMuMzEtMi42OSA2LTYgNnMtNi0yLjY5LTYtNmMwLTIgLjk4LTMuNzcgMi40OC00Ljg2LjIzLjgxLjY1IDIuMDcuNjUgMi4wN0M4LjQzIDkuOTMgOCAxMC45MiA4IDEyYzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTRjMC0xLjA4LS40My0yLjA3LTEuMTMtMi43OSAwIDAgLjQxLTEuMjIuNjUtMi4wN0E1Ljk5OCA1Ljk5OCAwIDAgMSAxOCAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlbGl2ZXJ5RGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN2MwLTEuMS0uOS0yLTItMmgtM3YyaDN2Mi42NUwxMy41MiAxNEgxMFY5SDZjLTIuMjEgMC00IDEuNzktNCA0djNoMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDQuNDhMMTkgMTAuMzVWN3pNNCAxNHYtMWMwLTEuMS45LTIgMi0yaDJ2M0g0em0zIDNjLS41NSAwLTEtLjQ1LTEtMWgyYzAgLjU1LS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA2aDV2Mkg1ek0xOSAxM2MtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVwYXJ0dXJlQm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNS41XCIsXCJjeVwiOlwiMTYuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTIuNVwiLFwiY3lcIjpcIjE2LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxYTYuOTggNi45OCAwIDAgMC01Ljc1IDMuMDJDOS44NCA0LjAxIDkuNDMgNCA5IDRjLTQuNDIgMC04IC41LTggNHYxMGMwIC44OC4zOSAxLjY3IDEgMi4yMlYyMmMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWg4djFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTEuNzhjLjYxLS41NSAxLTEuMzQgMS0yLjIydi0zLjA4YzMuMzktLjQ5IDYtMy4zOSA2LTYuOTIgMC0zLjg3LTMuMTMtNy03LTd6TTkgNmguMjljLS4wOS4zMi0uMTYuNjYtLjIxLjk5SDMuMzRDMy44OSA2LjQ2IDUuMzEgNiA5IDZ6TTMgOC45OWg2LjA4Yy4xNiAxLjExLjU3IDIuMTMgMS4xOCAzLjAxSDNWOC45OXpNMTUgMThjMCAuMzctLjIxLjYyLS4zNC43M2wtLjI5LjI3SDMuNjNsLS4yOS0uMjdBLjk2OC45NjggMCAwIDEgMyAxOHYtNGg5LjQxYy43OC40NyAxLjY1Ljc5IDIuNTkuOTJWMTh6bTEtNWMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6bS41LTlIMTV2NWwzLjYyIDIuMTYuNzUtMS4yMy0yLjg3LTEuNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXNpZ25TZXJ2aWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjk3IDcuMjdhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0yLjgzLTIuODNhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC00LjQ5IDQuNDktMy44OS0zLjg5Yy0uNzgtLjc4LTIuMDUtLjc4LTIuODMgMGwtMS45IDEuOWMtLjc4Ljc4LS43OCAyLjA1IDAgMi44M2wzLjg5IDMuODlMMyAxNi43NlYyMWg0LjI0bDQuNTItNC41MiAzLjg5IDMuODljLjk1Ljk1IDIuMjMuNiAyLjgzIDBsMS45LTEuOWMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzbC0zLjg5LTMuODkgNC40OC00LjQ4ek01LjA0IDYuOTRsMS44OS0xLjlMOC4yIDYuMzEgNy4wMiA3LjVsMS40MSAxLjQxIDEuMTktMS4xOSAxLjIgMS4yLTEuOSAxLjktMy44OC0zLjg4em0xMS4yMyA3LjQ0LTEuMTkgMS4xOSAxLjQxIDEuNDEgMS4xOS0xLjE5IDEuMjcgMS4yNy0xLjkgMS45LTMuODktMy44OSAxLjktMS45IDEuMjEgMS4yMXpNNi40MSAxOUg1di0xLjQxbDkuNjEtOS42MSAxLjMgMS4zLjExLjExTDYuNDEgMTl6bTkuNjEtMTIuNDQgMS40MS0xLjQxIDEuNDEgMS40MS0xLjQxIDEuNDEtMS40MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlhbW9uZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINUwyIDlsMTAgMTJMMjIgOWwtMy02ek05LjYyIDhsMS41LTNoMS43NmwxLjUgM0g5LjYyek0xMSAxMHY2LjY4TDUuNDQgMTBIMTF6bTIgMGg1LjU2TDEzIDE2LjY4VjEwem02LjI2LTJoLTIuNjVsLTEuNS0zaDIuNjVsMS41IDN6TTYuMjQgNWgyLjY1bC0xLjUgM0g0Ljc0bDEuNS0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlubmVyRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMiAxOSAyIDJoMTZsMi0yek0zIDE4aDE2Ljk3Yy4yOS0zLjI2LTIuMjgtNi01LjQ4LTYtMi4zNSAwLTQuMzUgMS40OC01LjE0IDMuNTUtLjQxLS4yMy0uODctLjM4LTEuMzUtLjQ3VjloMS43NUMxMC45OSA5IDEyIDcuOTkgMTIgNi43NWg5di0xLjVoLTlDMTIgNC4wMSAxMC45OSAzIDkuNzUgM0gzdjEuNWgxdi43NUgzdjEuNWgxdi43NUgzVjloMXY3LjM5Yy0uNDQuNDYtLjc4IDEtMSAxLjYxem0xMS41LTRjLjk5IDAgMS45MS40IDIuNTggMS4xNC4yNC4yNi40NC41NS41OC44NmgtNi4zMmMuNTgtMS4yMSAxLjgxLTIgMy4xNi0yek04IDQuNWgydi43NUg4VjQuNXptMCAyLjI1aDJ2Ljc1SDh2LS43NXpNNS41IDQuNWgxdi43NWgtMVY0LjV6bTAgMi4yNWgxdi43NWgtMXYtLjc1ek01LjUgOWgxdjYuMDZjLS4zNS4wNi0uNjguMTctMSAuM1Y5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc0Jpa2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgNS41YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnpNNSAxMmMtMi44IDAtNSAyLjItNSA1czIuMiA1IDUgNSA1LTIuMiA1LTUtMi4yLTUtNS01em0wIDguNWMtMS45IDAtMy41LTEuNi0zLjUtMy41czEuNi0zLjUgMy41LTMuNSAzLjUgMS42IDMuNSAzLjUtMS42IDMuNS0zLjUgMy41em01LjgtMTAgMi40LTIuNC44LjhjMS4zIDEuMyAzIDIuMSA1LjEgMi4xVjljLTEuNSAwLTIuNy0uNi0zLjYtMS41bC0xLjktMS45Yy0uNS0uNC0xLS42LTEuNi0uNnMtMS4xLjItMS40LjZMNy44IDguNGMtLjQuNC0uNi45LS42IDEuNCAwIC42LjIgMS4xLjYgMS40TDExIDE0djVoMnYtNi4ybC0yLjItMi4zek0xOSAxMmMtMi44IDAtNSAyLjItNSA1czIuMiA1IDUgNSA1LTIuMiA1LTUtMi4yLTUtNS01em0wIDguNWMtMS45IDAtMy41LTEuNi0zLjUtMy41czEuNi0zLjUgMy41LTMuNSAzLjUgMS42IDMuNSAzLjUtMS42IDMuNS0zLjUgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc0JvYXRGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS43NyAxMi42Ni0xLjEyIDMuOTdjLS43OC0uNDMtMS4wNy0uODYtMi42NS0yLjY3LTEuNiAxLjgyLTIuNDMgMy4wNC00IDMuMDQtMS41MyAwLTIuMzQtMS4xNS00LTMuMDQtMS42IDEuODItMS44NyAyLjIxLTIuNjUgMi42NWwtMS4xMy0zLjk2TDEyIDEwLjExbDcuNzcgMi41NXpNMTUgMUg5djNINmMtMS4xIDAtMiAuOS0yIDJ2NC42MmwtMS4yOS40MmMtLjYzLjE5LS44MS44NC0uNjYgMS4yOEwzLjk1IDE5SDRjMS42IDAgMy4wMi0uODggNC0yIC45OCAxLjEyIDIuNCAyIDQgMnMzLjAyLS44OCA0LTJjLjk4IDEuMTIgMi40IDIgNCAyaC4wNWwxLjkxLTYuNjhjLjExLS4zNy4wNC0xLjA2LS42Ni0xLjI4bC0xLjMtLjQyVjZjMC0xLjEtLjktMi0yLTJoLTNWMXpNNiA5Ljk3VjZoMTJ2My45N0wxMiA4IDYgOS45N3ptMTAgOS43MWMtMS4yMi44NS0yLjYxIDEuMjgtNCAxLjI4cy0yLjc4LS40My00LTEuMjhDNi43OCAyMC41MyA1LjM5IDIxIDQgMjFIMnYyaDJjMS4zOCAwIDIuNzQtLjM1IDQtLjk5IDEuMjYuNjQgMi42My45NyA0IC45N3MyLjc0LS4zMiA0LS45N2MxLjI2LjY1IDIuNjIuOTkgNCAuOTloMnYtMmgtMmMtMS4zOSAwLTIuNzgtLjQ3LTQtMS4zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNCb2F0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzdjFoLTJWM2gybS0xIDcuMTEgNS4zOCAxLjc3IDIuMzkuNzgtMS4xMiAzLjk3Yy0uNTQtLjMtLjk0LS43MS0xLjE0LS45NEwxNiAxMy45NmwtMS41MSAxLjcyYy0uMzQuNC0xLjI4IDEuMzItMi40OSAxLjMycy0yLjE1LS45Mi0yLjQ5LTEuMzJMOCAxMy45NmwtMS41MSAxLjcyYy0uMi4yMy0uNi42My0xLjE0LjkzbC0xLjEzLTMuOTYgMi40LS43OUwxMiAxMC4xMU0xNSAxSDl2M0g2Yy0xLjEgMC0yIC45LTIgMnY0LjYybC0xLjI5LjQyYTEuMDA3IDEuMDA3IDAgMCAwLS42NiAxLjI4TDMuOTUgMTlINGMxLjYgMCAzLjAyLS44OCA0LTIgLjk4IDEuMTIgMi40IDIgNCAyczMuMDItLjg4IDQtMmMuOTggMS4xMiAyLjQgMiA0IDJoLjA1bDEuODktNi42OGMuMDgtLjI2LjA2LS41NC0uMDYtLjc4cy0uMzQtLjQyLS42LS41TDIwIDEwLjYyVjZjMC0xLjEtLjktMi0yLTJoLTNWMXpNNiA5Ljk3VjZoMTJ2My45N0wxMiA4IDYgOS45N3ptMTAgOS43MWMtMS4yMi44NS0yLjYxIDEuMjgtNCAxLjI4cy0yLjc4LS40My00LTEuMjhDNi43OCAyMC41MyA1LjM5IDIxIDQgMjFIMnYyaDJjMS4zOCAwIDIuNzQtLjM1IDQtLjk5IDEuMjYuNjQgMi42My45NyA0IC45N3MyLjc0LS4zMiA0LS45N2MxLjI2LjY1IDIuNjIuOTkgNCAuOTloMnYtMmgtMmMtMS4zOSAwLTIuNzgtLjQ3LTQtMS4zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNCdXNGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy00IDAtOCAuNS04IDR2OS41YzAgLjk1LjM4IDEuODEgMSAyLjQ0VjIwYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDh2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMi4wNmMuNjItLjYzIDEtMS40OSAxLTIuNDRWNmMwLTMuNS0zLjU4LTQtOC00em0wIDJjMy43MSAwIDUuMTMuNDYgNS42NyAxSDYuNDNjLjYtLjUyIDIuMDUtMSA1LjU3LTF6bTYgMTFjMCAxLjEtLjkgMi0yIDJIOGMtMS4xIDAtMi0uOS0yLTJ2LTNoMTJ2M3ptMC01SDZWN2gxMnYzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNCdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQuNDIgMC04IC41LTggNHYxMGMwIC44OC4zOSAxLjY3IDEgMi4yMlYyMGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWg4djFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTEuNzhjLjYxLS41NSAxLTEuMzQgMS0yLjIyVjZjMC0zLjUtMy41OC00LTgtNHptNS42NiAyLjk5SDYuMzRDNi44OSA0LjQ2IDguMzEgNCAxMiA0czUuMTEuNDYgNS42Ni45OXptLjM0IDJWMTBINlY2Ljk5aDEyem0tLjM0IDkuNzQtLjI5LjI3SDYuNjNsLS4yOS0uMjdBLjk2OC45NjggMCAwIDEgNiAxNnYtNGgxMnY0YzAgLjM3LS4yMS42Mi0uMzQuNzN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc0NhckZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDYuMDFDMTguNzIgNS40MiAxOC4xNiA1IDE3LjUgNWgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTJ2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuODUgN2gxMC4yOWwxLjA0IDNINS44MWwxLjA0LTN6TTE5IDE3SDV2LTVoMTR2NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNi41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXJlY3Rpb25zQ2FyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MiA2LjAxQzE4LjcyIDUuNDIgMTguMTYgNSAxNy41IDVoLTExYy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwzIDEydjhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGwtMi4wOC01Ljk5ek02Ljg1IDdoMTAuMjlsMS4wOCAzLjExSDUuNzdMNi44NSA3ek0xOSAxN0g1di01aDE0djV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNy41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTYuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc1JhaWx3YXlGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy00IDAtOCAuNS04IDR2OS41QzQgMTcuNDMgNS41NyAxOSA3LjUgMTlMNiAyMHYxaDEydi0xbC0xLjUtMWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY2YzAtMy41LTMuNTgtNC04LTR6bTAgMmMzLjcxIDAgNS4xMy40NiA1LjY3IDFINi40M2MuNi0uNTIgMi4wNS0xIDUuNTctMXptNiAxMS41YzAgLjgzLS42NyAxLjUtMS41IDEuNWgtOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41VjEyaDEydjMuNXptMC01LjVINlY3aDEydjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNSYWlsd2F5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxYy00LjQyIDAtOCAuNS04IDR2MTAuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjAuNXYuNWgxMnYtLjVMMTYuNSAxOWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY1YzAtMy41LTMuNTgtNC04LTR6bTAgMmM2IDAgNiAxLjIgNiAySDZjMC0uOCAwLTIgNi0yem02IDR2M0g2VjdoMTJ6bS0xLjUgMTBoLTljLS44MyAwLTEuNS0uNjctMS41LTEuNVYxMmgxMnYzLjVjMCAuODMtLjY3IDEuNS0xLjUgMS41ek0xMiAxMi41Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNSdW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjQ5IDUuNDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0tMy42IDEzLjkgMS00LjQgMi4xIDJ2Nmgydi03LjVsLTIuMS0yIC42LTNjMS4zIDEuNSAzLjMgMi41IDUuNSAyLjV2LTJjLTEuOSAwLTMuNS0xLTQuMy0yLjRsLTEtMS42Yy0uNC0uNi0xLTEtMS43LTEtLjMgMC0uNS4xLS44LjFsLTUuMiAyLjJ2NC43aDJ2LTMuNGwxLjgtLjctMS42IDguMS00LjktMS0uNCAyIDcgMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc1N1YndheUZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQgMC04IC41LTggNHY5LjVDNCAxNy40MyA1LjU3IDE5IDcuNSAxOUw2IDIwdjFoMTJ2LTFsLTEuNS0xYzEuOTMgMCAzLjUtMS41NyAzLjUtMy41VjZjMC0zLjUtMy41OC00LTgtNHptMCAyYzMuNzEgMCA1LjEzLjQ2IDUuNjcgMUg2LjQzYy42LS41MiAyLjA1LTEgNS41Ny0xek02IDdoNXYzSDZWN3ptMTIgOC41YzAgLjgzLS42NyAxLjUtMS41IDEuNWgtOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41VjEyaDEydjMuNXptMC01LjVoLTVWN2g1djN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc1N1YndheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjAuNXYuNWgxMnYtLjVMMTYuNSAxOWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY2YzAtMy41LTMuNTgtNC04LTR6bTUuNjYgM0g2LjQzYy42MS0uNTIgMi4wNi0xIDUuNTctMSAzLjcxIDAgNS4xMi40NiA1LjY2IDF6TTExIDd2M0g2VjdoNXptMiAwaDV2M2gtNVY3em0zLjUgMTBoLTljLS44MyAwLTEuNS0uNjctMS41LTEuNVYxMmgxMnYzLjVjMCAuODMtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNUcmFuc2l0RmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjB2MWgxMnYtMWwtMS41LTFjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVWNmMwLTMuNS0zLjU4LTQtOC00em0wIDJjMy43MSAwIDUuMTMuNDYgNS42NyAxSDYuNDNjLjYtLjUyIDIuMDUtMSA1LjU3LTF6TTYgN2g1djNINlY3em0xMiA4LjVjMCAuODMtLjY3IDEuNS0xLjUgMS41aC05Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVWMTJoMTJ2My41em0wLTUuNWgtNVY3aDV2M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNS41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXJlY3Rpb25zVHJhbnNpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjAuNXYuNWgxMnYtLjVMMTYuNSAxOWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY2YzAtMy41LTMuNTgtNC04LTR6bTUuNjYgM0g2LjQzYy42MS0uNTIgMi4wNi0xIDUuNTctMSAzLjcxIDAgNS4xMi40NiA1LjY2IDF6TTExIDd2M0g2VjdoNXptMiAwaDV2M2gtNVY3em0zLjUgMTBoLTljLS44MyAwLTEuNS0uNjctMS41LTEuNVYxMmgxMnYzLjVjMCAuODMtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNXYWxrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6TTkuOCA4LjkgNyAyM2gyLjFsMS44LTggMi4xIDJ2Nmgydi03LjVsLTIuMS0yIC42LTNDMTQuOCAxMiAxNi44IDEzIDE5IDEzdi0yYy0xLjkgMC0zLjUtMS00LjMtMi40bC0xLTEuNmEyLjE0NSAyLjE0NSAwIDAgMC0yLjY1LS44NEw2IDguM1YxM2gyVjkuNmwxLjgtLjdcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjQzIDEwLjU5LTkuMDEtOS4wMWMtLjc1LS43NS0yLjA3LS43Ni0yLjgzIDBsLTkgOWMtLjc4Ljc4LS43OCAyLjA0IDAgMi44Mmw5IDljLjM5LjM5LjkuNTggMS40MS41OC41MSAwIDEuMDItLjE5IDEuNDEtLjU4bDguOTktOC45OWMuNzktLjc2LjgtMi4wMi4wMy0yLjgyem0tMTAuNDIgMTAuNC05LTkgOS05IDkgOS05IDl6TTggMTF2NGgydi0zaDR2Mi41bDMuNS0zLjVMMTQgNy41VjEwSDljLS41NSAwLTEgLjQ1LTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURyeUNsZWFuaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNTYgMTEuMzYgMTMgOC40NFY3YzAtLjU1LS40NS0xLTEtMXMtMS0uNDUtMS0xIC40NS0xIDEtMSAxIC40NSAxIDFoMmMwLTEuODQtMS42Ni0zLjMtMy41Ni0yLjk1LTEuMTguMjItMi4xNSAxLjE3LTIuMzggMi4zNS0uMyAxLjU2LjYgMi45NCAxLjk0IDMuNDJ2LjYzbC02LjU2IDIuOTJjLS44OC4zOC0xLjQ0IDEuMjUtMS40NCAyLjJ2LjAxQzMgMTQuOTIgNC4wOCAxNiA1LjQyIDE2SDd2NmgxMHYtNmgxLjU4YzEuMzQgMCAyLjQyLTEuMDggMi40Mi0yLjQydi0uMDFjMC0uOTUtLjU2LTEuODItMS40NC0yLjIxek0xNSAyMEg5di01aDZ2NXptMy41OC02SDE3di0xSDd2MUg1LjQyYy0uNDYgMC0uNTgtLjY1LS4xNy0uODFsNi43NS0zIDYuNzUgM2MuNDIuMTkuMjguODEtLjE3LjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWRpdEF0dHJpYnV0ZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjYzIDdINi4zN0MzLjk2IDcgMiA5LjI0IDIgMTJzMS45NiA1IDQuMzcgNWgxMS4yNmMyLjQxIDAgNC4zNy0yLjI0IDQuMzctNXMtMS45Ni01LTQuMzctNXptMCA4SDYuMzdDNS4wOSAxNSA0IDEzLjYzIDQgMTJzMS4wOS0zIDIuMzctM2gxMS4yNkMxOC45MSA5IDIwIDEwLjM3IDIwIDEycy0xLjA5IDMtMi4zNyAzek03LjI0IDEzLjA2bC0xLjg3LTEuODctLjcuNyAyLjU3IDIuNTcgNC4yMi00LjIyLS43LS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWRpdExvY2F0aW9uQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTFoMi4xMmw2LjE2LTYuMTYtMi4xMi0yLjEyTDExIDguODhWMTF6bTkuNzEtOUwyMCAxLjI5YS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtLjcyLjcyIDIuMTIgMi4xMi43Mi0uNzJhLjk5Ni45OTYgMCAwIDAgMC0xLjQxek0xNy45IDkuMDVjLjA2LjM2LjEuNzQuMSAxLjE1IDAgMS43MS0xLjA4IDQuNjQtNiA5LjE0LTQuOTItNC40OS02LTcuNDMtNi05LjE0QzYgNi4xNyA5LjA5IDQgMTIgNGMuMzIgMCAuNjUuMDMuOTcuMDhsMS42NS0xLjY1QTguNTYgOC41NiAwIDAgMCAxMiAyYy00LjIgMC04IDMuMjItOCA4LjIgMCAzLjMyIDIuNjcgNy4yNSA4IDExLjggNS4zMy00LjU1IDgtOC40OCA4LTExLjggMC0xLjAxLS4xNi0xLjk0LS40NS0yLjhMMTcuOSA5LjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWRpdExvY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMTcgNC45MSAxNy4xIDMuODRsLTUuNTUgNS41NXYxLjA4aDEuMDhsNS41NC01LjU2ek0xNiAyLjc0bDEuMjktMS4yOWExLjQ5IDEuNDkgMCAwIDEgMi4xMiAwbDEuMTUgMS4xNWMuNTkuNTkuNTkgMS41NCAwIDIuMTJsLS42OC42OC0uMDIuMDItLjU4LjU4LTYgNkgxMFY4Ljc0bDYtNnptLTIuMjgtLjU1LS41NS41NS0xLjI3IDEuMjdjLTMuMy4wNS01LjkgMi42LTUuOSA2LjIgMCAyLjM0IDEuOTUgNS40NCA2IDkuMTQgNC4wNS0zLjcgNi02Ljc5IDYtOS4xNHYtLjFsMS44LTEuOGMuMTMuNi4yIDEuMjQuMiAxLjkgMCAzLjMyLTIuNjcgNy4yNS04IDExLjgtNS4zMy00LjU1LTgtOC40OC04LTExLjggMC00Ljk4IDMuOC04LjIgOC04LjIuNTggMCAxLjE2LjA2IDEuNzIuMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFZGl0Um9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRoLTJ2Ny45bDItMnpNNCA0aDJ2MTZINHpNMTAgNGgydjRoLTJ6TTEwIDEwaDJ2NGgtMnpNMTAgMTZoMnY0aC0yek0yMi41NiAxMi41OWwtMS4xNS0xLjE1YTEuNDkgMS40OSAwIDAgMC0yLjEyIDBMMTQgMTYuNzNWMjBoMy4yN2w1LjI5LTUuMjljLjU5LS41OS41OS0xLjU0IDAtMi4xMnptLTUuOTggNS44NmgtMS4wM3YtMS4wM0wxOSAxMy45NyAyMC4wMyAxNWwtMy40NSAzLjQ1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWdnQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOWMtMi0yLTMuMDEtNy05LjAzLTdDNC45NSAyIDEuOTQgNiAyIDExLjUyIDIuMDYgMTcuMDQgNi45NiAxOSA5Ljk3IDE5YzIuMDEgMCAyLjAxIDMgNi4wMiAzQzE5IDIyIDIyIDE5IDIyIDE1LjAyIDIyIDEyIDIxLjAxIDExIDE5IDl6bS0zLjAxIDExYy0xLjQ5IDAtMS45Ni0uNS0yLjY4LTEuMjYtLjY1LS42OS0xLjY1LTEuNzQtMy4zNC0xLjc0LTEuNjQgMC01LjkyLS45OS01Ljk3LTUuNS0uMDMtMi41MS42OC00LjYyIDEuOTktNS45NUM3LjAxIDQuNTIgOC4zNSA0IDkuOTcgNGMzLjM0IDAgNC41MSAxLjg2IDUuODYgNC4wMi41NS44OCAxLjA3IDEuNzEgMS43NiAyLjM5IDEuOSAxLjg5IDIuNDEgMi40IDIuNDEgNC42MSAwIDIuODUtMi4xMiA0Ljk4LTQuMDEgNC45OHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIzLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVnZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNDOC41IDMgNSA5LjMzIDUgMTRjMCAzLjg3IDMuMTMgNyA3IDdzNy0zLjEzIDctN2MwLTQuNjctMy41LTExLTctMTF6bTAgMTZjLTIuNzYgMC01LTIuMjQtNS01IDAtNC4wOSAzLjA3LTkgNS05czUgNC45MSA1IDljMCAyLjc2LTIuMjQgNS01IDV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDE2Yy0uNTggMC0zLS4wOC0zLTMgMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDFjMCAzIDEuOTkgNSA1IDUgLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbGVjdHJpY0Jpa2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3aC0uODJsLTEuNy00LjY4QTIuMDA4IDIuMDA4IDAgMCAwIDE0LjYgMUgxMnYyaDIuNmwxLjQ2IDRoLTQuODFsLS4zNi0xSDEyVjRIN3YyaDEuNzVsMS44MiA1SDkuOWMtLjQ0LTIuMjMtMi4zMS0zLjg4LTQuNjUtMy45OUMyLjQ1IDYuODcgMCA5LjIgMCAxMmMwIDIuOCAyLjIgNSA1IDUgMi40NiAwIDQuNDUtMS42OSA0LjktNGg0LjJjLjQ0IDIuMjMgMi4zMSAzLjg4IDQuNjUgMy45OSAyLjguMTMgNS4yNS0yLjE5IDUuMjUtNUMyNCA5LjIgMjEuOCA3IDE5IDd6TTcuODIgMTNjLS40IDEuMTctMS40OSAyLTIuODIgMi0xLjY4IDAtMy0xLjMyLTMtM3MxLjMyLTMgMy0zYzEuMzMgMCAyLjQyLjgzIDIuODIgMkg1djJoMi44MnptNi4yOC0yaC0xLjRsLS43My0ySDE1Yy0uNDQuNTgtLjc2IDEuMjUtLjkgMnptNC45IDRjLTEuNjggMC0zLTEuMzItMy0zIDAtLjkzLjQxLTEuNzMgMS4wNS0yLjI4bC45NiAyLjY0IDEuODgtLjY4LS45Ny0yLjY3Yy4wMiAwIC4wNS0uMDEuMDgtLjAxIDEuNjggMCAzIDEuMzIgMyAzcy0xLjMyIDMtMyAzek0xMSAyMEg3bDYgM3YtMmg0bC02LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbGVjdHJpY0NhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDIuMDFDMTguNzIgMS40MiAxOC4xNiAxIDE3LjUgMWgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgOHY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTFWOGwtMi4wOC01Ljk5ek02Ljg1IDNoMTAuMjlsMS4wOCAzLjExSDUuNzdMNi44NSAzek0xOSAxM0g1VjhoMTR2NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3LjVcIixcImN5XCI6XCIxMC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNi41XCIsXCJjeVwiOlwiMTAuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMjBoNHYtMmw2IDNoLTR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVsZWN0cmljTW9wZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1YzAtMS4xLS45LTItMi0yaC0zdjJoM3YyLjY1TDEzLjUyIDEySDEwVjdINmMtMi4yMSAwLTQgMS43OS00IDR2M2gyYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoNC40OEwxOSA4LjM1VjV6TTQgMTJ2LTFjMC0xLjEuOS0yIDItMmgydjNINHptMyAzYy0uNTUgMC0xLS40NS0xLTFoMmMwIC41NS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNGg1djJINXpNMTkgMTFjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpNNyAyMGg0di0ybDYgM2gtNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWxlY3RyaWNSaWNrc2hhdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDExLjE4VjkuNzJjMC0uNDctLjE2LS45Mi0uNDYtMS4yOEwxNi42IDMuNzJjLS4zOC0uNDYtLjk0LS43Mi0xLjU0LS43MkgzYy0xLjEgMC0yIC45LTIgMnY4YzAgMS4xLjkgMiAyIDJoLjE4QzMuNiAxNi4xNiA0LjcgMTcgNiAxN3MyLjQtLjg0IDIuODItMmg4LjM3YTIuOTk2IDIuOTk2IDAgMCAwIDUuODItMWMtLjAxLTEuMy0uODUtMi40LTIuMDEtMi44MnpNNiAxNWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0xLTMuODNBMy4wMTQgMy4wMTQgMCAwIDAgMy4xNyAxM0gzdi0zaDR2MS4xN3pNNyA4SDNWNWg0djN6bTcgNUg5di0zaDNWOEg5VjVoNXY4em0yLTYuODhMMTguNCA5SDE2VjYuMTJ6TTE3LjE3IDEzSDE2di0yaDN2LjE3Yy0uODUuMy0xLjUzLjk4LTEuODMgMS44M3pNMjAgMTVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpNNyAyMGg0di0ybDYgM2gtNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWxlY3RyaWNTY29vdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy44MiAxNkgxNXYtMWMwLTIuMjEgMS43OS00IDQtNGguNzRsLTEuOS04LjQ0QTIuMDA5IDIuMDA5IDAgMCAwIDE1Ljg5IDFIMTJ2MmgzLjg5bDEuNCA2LjI1aC0uMDFBNi4wMDggNi4wMDggMCAwIDAgMTMuMDkgMTRINy44MmEyLjk5NiAyLjk5NiAwIDAgMC0zLjQyLTEuOTRjLTEuMTguMjMtMi4xMyAxLjItMi4zNSAyLjM4QTMuMDAyIDMuMDAyIDAgMCAwIDUgMThjMS4zIDAgMi40LS44NCAyLjgyLTJ6TTUgMTZjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTJjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpNMTEgMjBIN2w2IDN2LTJoNGwtNi0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWxlY3RyaWNhbFNlcnZpY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTRjMC0uNTUtLjQ1LTEtMS0xaC0ydjJoMmMuNTUgMCAxLS40NSAxLTF6TTIwIDE3aC0ydjJoMmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMXpNMTIgMTRoLTJ2NGgyYzAgMS4xLjkgMiAyIDJoM3YtOGgtM2MtMS4xIDAtMiAuOS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTNjMC0xLjEuOS0yIDItMmgxLjVjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTAuNDMgNCA4LjUgNEg1Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxaDMuNWMuODMgMCAxLjUuNjcgMS41IDEuNVM5LjMzIDkgOC41IDlIN2MtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNGgydi0ySDdjLTEuMSAwLTItLjktMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRW1lcmdlbmN5UmVjb3JkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTAuNDhWNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi00LjQ4bDQgMy45OHYtMTFsLTQgMy45OHpNMTYgMThINFY2aDEydjEyem0tNC02IDMgMS43My0xIDEuNzMtMy0xLjczVjE3SDl2LTMuMjdsLTMgMS43My0xLTEuNzNMOCAxMmwtMy0xLjczIDEtMS43MyAzIDEuNzNWN2gydjMuMjdsMy0xLjczIDEgMS43M0wxMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtZXJnZW5jeVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGMxLjkzIDAgMy42OC43OCA0Ljk1IDIuMDVsLTEuNDEgMS40MWE1LjAyMiA1LjAyMiAwIDAgMC03LjA4IDBMNy4wNSA2LjA1QTYuOTc2IDYuOTc2IDAgMCAxIDEyIDR6bTcuNzgtLjc3LTEuNDEgMS40MUMxNi43NCAzLjAxIDE0LjQ5IDIgMTIuMDEgMlM3LjI3IDMuMDEgNS42NCA0LjYzTDQuMjIgMy4yMkM2LjIyIDEuMjMgOC45NyAwIDEyLjAxIDBzNS43OCAxLjIzIDcuNzcgMy4yM3pNMTIgMTFjMS45NCAwIDQgMS40NSA0IDQuMTUgMCAuOTQtLjU1IDIuOTMtNCA2LjE3LTMuNDUtMy4yNC00LTUuMjMtNC02LjE3IDAtMi43IDIuMDYtNC4xNSA0LTQuMTV6bTAtMmMtMy4xNSAwLTYgMi40MS02IDYuMTUgMCAyLjQ5IDIgNS40NCA2IDguODUgNC0zLjQxIDYtNi4zNiA2LTguODVDMTggMTEuNDEgMTUuMTUgOSAxMiA5em0xLjUgNmMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41LjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtZXJnZW5jeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjI5IDEzLjkgMTggMTJsMy4yOS0xLjljLjQ4LS4yOC42NC0uODkuMzctMS4zN2wtMi0zLjQ2YTEuMDEgMS4wMSAwIDAgMC0xLjM3LS4zN0wxNSA2LjhWM2MwLS41NS0uNDUtMS0xLTFoLTRjLS41NSAwLTEgLjQ1LTEgMXYzLjhMNS43MSA0LjlhMS4wMSAxLjAxIDAgMCAwLTEuMzcuMzdsLTIgMy40NmMtLjI4LjQ4LS4xMSAxLjA5LjM3IDEuMzdMNiAxMmwtMy4yOSAxLjljLS40OC4yOC0uNjQuODktLjM3IDEuMzdsMiAzLjQ2Yy4yOC40OC44OS42NCAxLjM3LjM3TDkgMTcuMlYyMWMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtMy44bDMuMjkgMS45Yy40OC4yOCAxLjA5LjExIDEuMzctLjM3bDItMy40NmMuMjgtLjQ4LjExLTEuMDktLjM3LTEuMzd6bS0yLjg2IDIuOTctNC42OC0yLjdjLS4zMy0uMi0uNzUuMDQtLjc1LjQzVjIwaC0ydi01LjRjMC0uMzgtLjQyLS42My0uNzUtLjQzbC00LjY4IDIuNy0xLTEuNzMgNC42OC0yLjdjLjMzLS4xOS4zMy0uNjcgMC0uODdsLTQuNjgtMi43IDEtMS43MyA0LjY4IDIuN2MuMzMuMTkuNzUtLjA1Ljc1LS40NFY0aDJ2NS40YzAgLjM4LjQyLjYzLjc1LjQzbDQuNjgtMi43IDEgMS43My00LjY4IDIuN2MtLjMzLjE5LS4zMy42NyAwIC44N2w0LjY4IDIuNy0xIDEuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFdlN0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljc3IDcuMjMuMDEtLjAxLTMuNzItMy43MkwxNSA0LjU2bDIuMTEgMi4xMWMtLjk0LjM2LTEuNjEgMS4yNi0xLjYxIDIuMzNhMi41IDIuNSAwIDAgMCAyLjUgMi41Yy4zNiAwIC42OS0uMDggMS0uMjF2Ny4yMWMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMVYxNGMwLTEuMS0uOS0yLTItMmgtMVY1YzAtMS4xLS45LTItMi0ySDZjLTEuMSAwLTIgLjktMiAydjE2aDEwdi03LjVoMS41djVhMi41IDIuNSAwIDAgMCA1IDBWOWMwLS42OS0uMjgtMS4zMi0uNzMtMS43N3pNMTIgMTF2OEg2VjVoNnY2em02LTFjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptLTgtNC00IDcuNWgyVjE4bDQtN2gtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhY3RvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAyMkgyVjEwbDctM3YybDUtMnYzaDNsMS04aDNsMSA4djEyek0xMiA5Ljk1bC01IDJWMTBsLTMgMS4zMlYyMGgxNnYtOGgtOFY5Ljk1ek0xMSAxOGgydi00aC0ydjR6bS00IDBoMnYtNEg3djR6bTEwLTRoLTJ2NGgydi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFzdGZvb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMjEuOThjMCAuNTYuNDUgMS4wMSAxLjAxIDEuMDFIMTVjLjU2IDAgMS4wMS0uNDUgMS4wMS0xLjAxVjIxSDF2Ljk4ek04LjUgOC45OUM0Ljc1IDguOTkgMSAxMSAxIDE1aDE1YzAtNC0zLjc1LTYuMDEtNy41LTYuMDF6TTMuNjIgMTNjMS4xMS0xLjU1IDMuNDctMi4wMSA0Ljg4LTIuMDFzMy43Ny40NiA0Ljg4IDIuMDFIMy42MnpNMSAxN2gxNXYySDF6TTE4IDVWMWgtMnY0aC01bC4yMyAyaDkuNTZsLTEuNCAxNEgxOHYyaDEuNzJjLjg0IDAgMS41My0uNjUgMS42My0xLjQ3TDIzIDVoLTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGZXN0aXZhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDExVjljLTYtMi0xMS03LTExLTdTNyA3IDEgOXYyYzAgMS40OS45MyAyLjc1IDIuMjQgMy4yNkMzLjIgMTYuNzYgMi45MiAxOS42OSAyIDIyaDIwYy0uOTItMi4zMS0xLjItNS4yNC0xLjI0LTcuNzRBMy40OTYgMy40OTYgMCAwIDAgMjMgMTF6TTEyIDQuNzFjMS4zMyAxLjE0IDMuNDkgMi44NCA2LjExIDQuMjlINS44OUM4LjUxIDcuNTUgMTAuNjcgNS44NSAxMiA0Ljcxek0xMyAxMWgzYzAgLjgzLS42NyAxLjUtMS41IDEuNVMxMyAxMS44MyAxMyAxMXptLTMuNSAxLjVjLS44MyAwLTEuNS0uNjctMS41LTEuNWgzYzAgLjgzLS42NyAxLjUtMS41IDEuNXpNNiAxMWMwIC44My0uNjcgMS41LTEuNSAxLjVTMyAxMS44MyAzIDExaDN6bS0xLjM0IDljLjM5LTEuODYuNTQtMy44Mi41Ny01LjU4LjY4LS4xNSAxLjI5LS40OSAxLjc2LS45OC4yNS4yNS41NC40NS44NS42Mi0uMSAxLjg3LS4yNiA0LS41MiA1LjkzSDQuNjZ6bTQuNjkgMGMuMjQtMS44My4zOS0zLjc4LjQ4LTUuNTMuODQtLjA4IDEuNjEtLjQ1IDIuMTctMS4wMi41Ni41NyAxLjMyLjk0IDIuMTcgMS4wMi4xIDEuNzUuMjQgMy43LjQ4IDUuNTNoLTUuM3ptNy4zMiAwYy0uMjctMS45NC0uNDMtNC4wNy0uNTItNS45My4zMS0uMTcuNjEtLjM3Ljg1LS42Mi40Ny40OCAxLjA4LjgzIDEuNzYuOTguMDMgMS43Ni4xOCAzLjcyLjU3IDUuNThoLTIuNjZ6bTIuODMtNy41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVoM2MwIC44My0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaXJlSHlkcmFudEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEwLjVjLTEuOTMgMC0zLjUgMS41Ny0zLjUgMy41czEuNTcgMy41IDMuNSAzLjUgMy41LTEuNTcgMy41LTMuNS0xLjU3LTMuNS0zLjUtMy41em0wIDVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMWgtMVY4aDJWNmgtMi4zNWE1Ljk5IDUuOTkgMCAwIDAtMTEuMyAwSDR2MmgydjNINWMtMS4xIDAtMiAuOS0yIDJ2MmMwIDEuMS45IDIgMiAyaDF2M0g0djJoMTZ2LTJoLTJ2LTNoMWMxLjEgMCAyLS45IDItMnYtMmMwLTEuMS0uOS0yLTItMnptLTctN2MxLjQ3IDAgMi43NS44MSAzLjQ0IDJIOC41NmMuNjktMS4xOSAxLjk3LTIgMy40NC0yem03IDExaC0zdjVIOHYtNUg1di0yaDNWOGg4djVoM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlyZVRydWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuOSAxMC42OS0xLjQ0LTQuMzJBMi4wMSAyLjAxIDAgMCAwIDE5LjU2IDVIMTlWNGMwLS41NS0uNDUtMS0xLTFoLTFjLS41NSAwLTEgLjQ1LTEgMXYxaC0yYy0xLjEgMC0yIC45LTIgMnY0SDF2NWMwIDEuMS45IDIgMiAyaDFjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g0YzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoM3YtNi42OGMwLS4yMS0uMDMtLjQyLS4xLS42M3pNMTQgN2g1LjU2bDEuMzMgNEgxNFY3ek03IDE5Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTUtM0g5LjIyYy0uNTUtLjYxLTEuMzMtMS0yLjIyLTFzLTEuNjcuMzktMi4yMiAxSDN2LTNoOXYzem01IDNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMi4yMi0zYy0uNTUtLjYxLTEuMzQtMS0yLjIyLTFzLTEuNjcuMzktMi4yMiAxSDE0di0zaDd2M2gtMS43OHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOC41aC0xdi0yaDFWNUgxdjEuNWgxdjJIMVYxMGgxMFY4LjV6bS0yLjUgMEg2Ljc1di0ySDguNXYyem0tNS0yaDEuNzV2MkgzLjV2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGlnaHRDbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDRoLTJjLTEuMSAwLTIgLjktMiAydjVjMCAxLjEuOSAyIDIgMmgyYzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgN2gtMlY2aDJ2NXptLTYuNSA1SDE4djJIOS40OWMtLjg4IDAtMS42Ni0uNTgtMS45Mi0xLjQzTDUgOFY0aDJ2NGwyLjUgOHpNOCAxOWgxMHYySDh2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE2di0ybC04LTVWMy41YzAtLjgzLS42Ny0xLjUtMS41LTEuNVMxMCAyLjY3IDEwIDMuNVY5bC04IDV2Mmw4LTIuNVYxOWwtMiAxLjVWMjJsMy41LTEgMy41IDF2LTEuNUwxMyAxOXYtNS41bDggMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9yZXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjQgMTgtMy44Ni02SDIyTDE1IDJsLTMgNC4yOUw5IDIgMiAxMmgxLjg2TDAgMThoN3Y0aDR2LTRoMnY0aDR2LTRoN3pNMTUgNS40OSAxOC4xNiAxMGgtMS42OGwzLjg2IDZoLTMuNjJsLTIuNTctNEgxNmwtMi43OC0zLjk3TDE1IDUuNDl6TTMuNjYgMTZsMy44Ni02SDUuODRMOSA1LjQ5IDEyLjE2IDEwaC0xLjY4bDMuODYgNkgzLjY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ya0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjQxIDE1LjU5IDggMTdsLTQtNCA0LTQgMS40MSAxLjQxTDcuODMgMTJjMS41MS0uMzMgMy43My4wOCA1LjE3IDEuMzZWNi44M2wtMS41OSAxLjU5TDEwIDdsNC00IDQgNC0xLjQxIDEuNDFMMTUgNi44M1YyMWgtMnYtNGMtLjczLTIuNTgtMy4wNy0zLjQ3LTUuMTctM2wxLjU4IDEuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JrUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41OSAxNS41OSAxNiAxN2w0LTQtNC00LTEuNDEgMS40MUwxNi4xNyAxMmMtMS41MS0uMzMtMy43My4wOC01LjE3IDEuMzZWNi44M2wxLjU5IDEuNTlMMTQgN2wtNC00LTQgNCAxLjQxIDEuNDFMOSA2LjgzVjIxaDJ2LTRjLjczLTIuNTggMy4wNy0zLjQ3IDUuMTctM2wtMS41OCAxLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDN2MmgtMlYzaC0ydjJoLTJWM2gtMnY0bDIgMnYxSDlWOWwyLTJWM0g5djJIN1YzSDV2MkgzVjNIMXY0bDIgMnY2bC0yIDJ2NGg5di0zYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2M2g5di00bC0yLTJWOWwyLTJWM2gtMnptMCAxNmgtNXYtMWMwLTIuMjEtMS43OS00LTQtNHMtNCAxLjc5LTQgNHYxSDN2LTEuMTdsMi0yVjguMTdMMy44MyA3aDQuMzRMNyA4LjE3VjEyaDEwVjguMTdMMTUuODMgN2g0LjM0TDE5IDguMTd2Ny42NmwyIDJWMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTUtNGgyYzAgMi43LS45MyA0LjQxLTIuMyA1LjUtLjUuNC0xLjEuNy0xLjcuOVYyMmgtMnYtNmgtMnY2SDlWMTAuMWMtLjMuMS0uNS4yLS42LjMtLjUzLjQxLTEuNCAxLjAzLTEuNCAzLjZINWMwLTIuMDYuMzUtMy43OCAyLjExLTUuMjlDOC4yMSA3LjgxIDEwIDcgMTIgN3MyLjY4LS40NiAzLjQ4LTEuMDZDMTUuOTYgNS41NSAxNyA0Ljc2IDE3IDJ6TTQgMTZoM3Y2SDR2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIYW5keW1hbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjY3IDE4LjE3LTUuMy01LjNoLS45OWwtMi41NCAyLjU0di45OWw1LjMgNS4zYy4zOS4zOSAxLjAyLjM5IDEuNDEgMGwyLjEyLTIuMTJhLjk5Ni45OTYgMCAwIDAgMC0xLjQxem0tMi44MyAxLjQyLTQuMjQtNC4yNC43MS0uNzEgNC4yNCA0LjI0LS43MS43MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMzQgMTAuMTkgMS40MS0xLjQxIDIuMTIgMi4xMmEzIDMgMCAwIDAgMC00LjI0bC0zLjU0LTMuNTQtMS40MSAxLjQxVjEuNzFsLS43LS43MS0zLjU0IDMuNTQuNzEuNzFoMi44M2wtMS40MSAxLjQxIDEuMDYgMS4wNi0yLjg5IDIuODktNC4xMy00LjEzVjUuMDZMNC44MyAyLjA0IDIgNC44NyA1LjAzIDcuOWgxLjQxbDQuMTMgNC4xMy0uODUuODVINy42bC01LjMgNS4zYS45OTYuOTk2IDAgMCAwIDAgMS40MWwyLjEyIDIuMTJjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDUuMy01LjN2LTIuMTJsNS4xNS01LjE1IDEuMDYgMS4wNXptLTcuOTggNS4xNS00LjI0IDQuMjQtLjcxLS43MSA0LjI0LTQuMjQuNzEuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIYXJkd2FyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDMtMyAzVjNIOUM2LjI0IDMgNCA1LjI0IDQgOGg1djEyYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xVjhsMyAzaDJWM2gtMnptLTUgMTZoLTJ2LTZoMnY2em0tMi04VjZINi43N0M3LjMyIDUuMzkgOC4xMSA1IDkgNWg0djZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb21lUmVwYWlyU2VydmljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDhoLTNWNmMwLTEuMS0uOS0yLTItMkg5Yy0xLjEgMC0yIC45LTIgMnYySDRjLTEuMSAwLTIgLjktMiAydjEwaDIwVjEwYzAtMS4xLS45LTItMi0yek05IDZoNnYySDlWNnptMTEgMTJINHYtM2gydjFoMnYtMWg4djFoMnYtMWgydjN6bS0yLTV2LTFoLTJ2MUg4di0xSDZ2MUg0di0zaDE2djNoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb3RlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNGMxLjY2IDAgMy0xLjM0IDMtM1M4LjY2IDggNyA4cy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xMi0zaC04djhIM1Y1SDF2MTVoMnYtM2gxOHYzaDJ2LTljMC0yLjIxLTEuNzktNC00LTR6bTIgOGgtOFY5aDZjMS4xIDAgMiAuOSAyIDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUh2YWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE4YzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02LTYgMi42OS02IDYgMi42OSA2IDYgNnptMy40NC04Yy4yNi40NS40NC45Ni41MSAxLjVoLTcuOWMuMDctLjU0LjI0LTEuMDUuNTEtMS41aDYuODh6bS41MSAyLjVjLS4wNy41NC0uMjQgMS4wNS0uNTEgMS41SDguNTZjLS4yNi0uNDUtLjQ0LS45Ni0uNTEtMS41aDcuOXpNOS4zOCAxNWg1LjI0Yy0uNy42MS0xLjYxIDEtMi42MiAxcy0xLjkxLS4zOS0yLjYyLTF6bTUuMjQtNkg5LjM4Yy43LS42MSAxLjYxLTEgMi42Mi0xczEuOTEuMzkgMi42MiAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSWNlY3JlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4zOCA2LjI0QzE3Ljc5IDMuMjQgMTUuMTQgMSAxMiAxUzYuMjEgMy4yNCA1LjYyIDYuMjRBNC4wMTQgNC4wMTQgMCAwIDAgMyAxMGMwIDIuMjEgMS43OSA0IDQgNCAuMTIgMCAuMjMtLjAyLjM0LS4wMkwxMi4wNyAyM2w0LjYxLTkuMDNjLjExLjAxLjIxLjAzLjMyLjAzIDIuMjEgMCA0LTEuNzkgNC00IDAtMS43MS0xLjA4LTMuMTktMi42Mi0zLjc2em0tNi4zMyAxMi4zOS0yLjczLTUuMjFhNi40NjggNi40NjggMCAwIDAgNS40LS4wMmwtMi42NyA1LjIzek0xNyAxMmMtLjUyIDAtMS4wMS0uMi0xLjM5LS41NmwtLjU2LS41NC0uNjYuNDJhNC41MiA0LjUyIDAgMCAxLTQuNzgtLjAxbC0uNjYtLjQxLS41Ni41NGMtLjM4LjM1LS44Ny41Ni0xLjM5LjU2YTEuOTk5IDEuOTk5IDAgMCAxLS4zMi0zLjk3bC43Ny0uMTMuMDYtLjc4QzcuNzEgNC44IDkuNjYgMyAxMiAzczQuMjkgMS44IDQuNDggNC4xMmwuMDYuNzguNzcuMTJjLjk3LjE2IDEuNjkuOTkgMS42OSAxLjk4IDAgMS4xLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2ViYWJEaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy43NSA3aC43NWEyLjUgMi41IDAgMCAwIDAtNWgtLjc1VjFoLTEuNXYxaC0uNzVhMi41IDIuNSAwIDAgMCAwIDVoLjc1djFIMTN2NWgzLjI1djFoLS43NWEyLjUgMi41IDAgMCAwIDAgNWguNzV2NGgxLjV2LTRoLjc1YTIuNSAyLjUgMCAwIDAgMC01aC0uNzV2LTFIMjFWOGgtMy4yNVY3ek0xNS41IDVjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgzYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNWgtM3ptMyAxMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjVoLTNjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgzem0uNS02djFoLTR2LTFoNHpNNy43NSA3aC43NWEyLjUgMi41IDAgMCAwIDAtNWgtLjc1VjFoLTEuNXYxSDUuNWEyLjUgMi41IDAgMCAwIDAgNWguNzV2MUgzdjVoMy4yNXYxSDUuNWEyLjUgMi41IDAgMCAwIDAgNWguNzV2NGgxLjV2LTRoLjc1YTIuNSAyLjUgMCAwIDAgMC01aC0uNzV2LTFIMTFWOEg3Ljc1Vjd6TTUuNSA1Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoM2MuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjVoLTN6bTMgMTFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41aC0zYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoM3ptLjUtNnYxSDV2LTFoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxheWVyc0NsZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0LjUzIDE3Ljc0IDlsLTEuODkgMS40NyAxLjQzIDEuNDJMMjEgOWwtOS03LTIuNTkgMi4wMiAxLjQyIDEuNDJ6bTkgOS41NC0xLjYzLTEuMjctLjY3LjUyIDEuNDMgMS40M3pNMy40MS44NiAyIDIuMjdsNC4yMiA0LjIyTDMgOWw5IDcgMi4xLTEuNjMgMS40MiAxLjQyLTMuNTMgMi43NS03LjM3LTUuNzNMMyAxNC4wN2w5IDcgNC45NS0zLjg1TDIwLjczIDIxbDEuNDEtMS40MUwzLjQxLjg2ek0xMiAxMy40NyA2LjI2IDlsMS4zOS0xLjA4IDUuMDIgNS4wMi0uNjcuNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMYXllcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExLjk5IDE4LjU0LTcuMzctNS43M0wzIDE0LjA3bDkgNyA5LTctMS42My0xLjI3ek0xMiAxNmw3LjM2LTUuNzNMMjEgOWwtOS03LTkgNyAxLjYzIDEuMjdMMTIgMTZ6bTAtMTEuNDdMMTcuNzQgOSAxMiAxMy40NyA2LjI2IDkgMTIgNC41M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpcXVvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTRjMCAxLjMuODQgMi40IDIgMi44MlYyMEgzdjJoNnYtMkg3di0zLjE4QzguMTYgMTYuNCA5IDE1LjMgOSAxNFY2SDN2OHptMi02aDJ2M0g1Vjh6bTAgNWgydjFjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTF2LTF6TTIwLjY0IDguNTRsLS45Ni0uMzJhMSAxIDAgMCAxLS42OC0uOTVWM2MwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXY0LjI4YTEgMSAwIDAgMS0uNjguOTVsLS45Ni4zMmMtLjgxLjI4LTEuMzYgMS4wNC0xLjM2IDEuOVYyMGMwIDEuMS45IDIgMiAyaDdjMS4xIDAgMi0uOSAyLTJ2LTkuNTZjMC0uODYtLjU1LTEuNjItMS4zNi0xLjl6TTE2IDRoMXYxaC0xVjR6bTQgMTZoLTd2LTJoN3Yyem0wLTRoLTd2LTJoN3Yyem0wLTRoLTd2LTEuNTZsLjk1LS4zMkMxNS4xOCA5LjcyIDE2IDguNTcgMTYgNy4yOFY3aDF2LjI4YTMgMyAwIDAgMCAyLjA1IDIuODVsLjk1LjMxVjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxBY3Rpdml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTBWNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjRjMS4xIDAgMS45OS45IDEuOTkgMnMtLjg5IDItMiAydjRjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMnYtNGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJ6bS0yLTEuNDZjLTEuMTkuNjktMiAxLjk5LTIgMy40NnMuODEgMi43NyAyIDMuNDZWMThINHYtMi41NGMxLjE5LS42OSAyLTEuOTkgMi0zLjQ2IDAtMS40OC0uOC0yLjc3LTEuOTktMy40Nkw0IDZoMTZ2Mi41NHpNOS4wNyAxNiAxMiAxNC4xMiAxNC45MyAxNmwtLjg5LTMuMzYgMi42OS0yLjItMy40Ny0uMjFMMTIgN2wtMS4yNyAzLjIyLTMuNDcuMjEgMi42OSAyLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbEFpcnBvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE2di0ybC04LjUtNVYzLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNVY5TDIgMTR2Mmw4LjUtMi41VjE5TDggMjAuNVYyMmw0LTEgNCAxdi0xLjVMMTMuNSAxOXYtNS41TDIyIDE2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxBdG0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE3aDJ2LTFoMWMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xaC0zdi0xaDRWOGgtMlY3aC0ydjFoLTFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDN2MUg5djJoMnYxem05LTEzSDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0VjZoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNzcgOSAxMiAxMi4xMSA5LjIzIDloNS41NE0yMSAzSDN2Mmw4IDl2NUg2djJoMTJ2LTJoLTV2LTVsOC05VjN6TTcuNDMgNyA1LjY2IDVoMTIuNjlsLTEuNzggMkg3LjQzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxDYWZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA1djhjMCAxLjEtLjkgMi0yIDJIOGMtMS4xIDAtMi0uOS0yLTJWNWgxMG00LTJINHYxMGMwIDIuMjEgMS43OSA0IDQgNGg2YzIuMjEgMCA0LTEuNzkgNC00di0zaDJjMS4xMSAwIDItLjg5IDItMlY1YzAtMS4xMS0uODktMi0yLTJ6bS0yIDVWNWgydjNoLTJ6bTIgMTFIMnYyaDE4di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxDYXJXYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1Yy44MyAwIDEuNS0uNjcgMS41LTEuNSAwLTEtMS41LTIuNy0xLjUtMi43cy0xLjUgMS43LTEuNSAyLjdjMCAuODMuNjcgMS41IDEuNSAxLjV6bS01IDBjLjgzIDAgMS41LS42NyAxLjUtMS41IDAtMS0xLjUtMi43LTEuNS0yLjdzLTEuNSAxLjctMS41IDIuN2MwIC44My42NyAxLjUgMS41IDEuNXpNNyA1Yy44MyAwIDEuNS0uNjcgMS41LTEuNUM4LjUgMi41IDcgLjggNyAuOFM1LjUgMi41IDUuNSAzLjVDNS41IDQuMzMgNi4xNyA1IDcgNXptMTEuOTIgMy4wMUMxOC43MiA3LjQyIDE4LjE2IDcgMTcuNSA3aC0xMWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyAxNHY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThsLTIuMDgtNS45OXpNNi44NSA5aDEwLjI5bDEuMDQgM0g1LjgxbDEuMDQtM3pNMTkgMTlINXYtNC42NmwuMTItLjM0aDEzLjc3bC4xMS4zNFYxOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3LjVcIixcImN5XCI6XCIxNi41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNi41XCIsXCJjeVwiOlwiMTYuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbENvbnZlbmllbmNlU3RvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDdWNEg1djNIMnYxM2g4di00aDR2NGg4VjdoLTN6bTEgMTFoLTR2LTRIOHY0SDRWOWgzVjZoMTB2M2gzdjl6TTggOGgydjFIOHYzaDN2LTFIOXYtMWgyVjdIOHptNyAxaC0xVjdoLTF2M2gydjJoMVY3aC0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxEaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTguMSAxMy4zNCAyLjgzLTIuODNMMy45MSAzLjVhNC4wMDggNC4wMDggMCAwIDAgMCA1LjY2bDQuMTkgNC4xOHptNi43OC0xLjgxYzEuNTMuNzEgMy42OC4yMSA1LjI3LTEuMzggMS45MS0xLjkxIDIuMjgtNC42NS44MS02LjEyLTEuNDYtMS40Ni00LjItMS4xLTYuMTIuODEtMS41OSAxLjU5LTIuMDkgMy43NC0xLjM4IDUuMjdMMy43IDE5Ljg3bDEuNDEgMS40MUwxMiAxNC40MWw2Ljg4IDYuODggMS40MS0xLjQxTDEzLjQxIDEzbDEuNDctMS40N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsRHJpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMgMiAyLjAxIDE4LjIzQzUuMTMgMjEuMjMgNS45NyAyMiA3IDIyaDEwYzEuMDMgMCAxLjg3LS43NyAxLjk5LTEuNzdMMjEgMkgzem0xNCAxOC0xMCAuMDFMNS44OSAxMEgxOC4xTDE3IDIwem0xLjMzLTEySDUuNjdsLS40NC00aDEzLjUzbC0uNDMgNHpNMTIgMTljMS42NiAwIDMtMS4zNCAzLTMgMC0yLTMtNS40LTMtNS40UzkgMTQgOSAxNmMwIDEuNjYgMS4zNCAzIDMgM3ptMC01LjA5Yy41OS45MSAxIDEuNzMgMSAyLjA5IDAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xYzAtLjM3LjQxLTEuMTkgMS0yLjA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxGaXJlRGVwYXJ0bWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2IDYtLjQ0LjU1Yy0uNDIuNTItLjk4Ljc1LTEuNTQuNzVDMTMgNy4zIDEyIDYuNTIgMTIgNS4zVjJTNCA2IDQgMTNjMCA0LjQyIDMuNTggOCA4IDhzOC0zLjU4IDgtOGMwLTIuOTYtMS42MS01LjYyLTQtN3ptLTQgMTNjLTEuMSAwLTItLjg3LTItMS45NCAwLS41MS4yLS45OS41OC0xLjM2TDEyIDE0LjNsMS40MyAxLjRjLjM3LjM3LjU3Ljg1LjU3IDEuMzYgMCAxLjA3LS45IDEuOTQtMiAxLjk0em0zLjk2LTEuNWMuMDQtLjM2LjIyLTEuODktMS4xMy0zLjIyTDEyIDExLjVsLTIuODMgMi43OEM3LjgxIDE1LjYyIDggMTcuMTYgOC4wNCAxNy41QTUuOTgyIDUuOTgyIDAgMCAxIDYgMTNjMC0zLjE2IDIuMTMtNS42NSA0LjAzLTcuMjVhNC4wMjQgNC4wMjQgMCAwIDAgMy45OSAzLjU1Yy43OCAwIDEuNTQtLjIzIDIuMTgtLjY2QTYuMTc1IDYuMTc1IDAgMCAxIDE4IDEzYzAgMS43OS0uNzkgMy40LTIuMDQgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxGbG9yaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjY2IDEzLjA3Yy4xNSAwIC4yOS0uMDEuNDMtLjAzQzkuNTYgMTQuMTkgMTAuNjkgMTUgMTIgMTVzMi40NC0uODEgMi45MS0xLjk2YTMuMTQ1IDMuMTQ1IDAgMCAwIDMuNTctMy4xMWMwLS43MS0uMjUtMS4zOS0uNjctMS45My40My0uNTQuNjctMS4yMi42Ny0xLjkzYTMuMTQ1IDMuMTQ1IDAgMCAwLTMuNTctMy4xMUMxNC40NCAxLjgxIDEzLjMxIDEgMTIgMXMtMi40NC44MS0yLjkxIDEuOTZhMy4xNDUgMy4xNDUgMCAwIDAtMy41NyAzLjExYzAgLjcxLjI1IDEuMzkuNjcgMS45My0uNDMuNTQtLjY4IDEuMjItLjY4IDEuOTMgMCAxLjczIDEuNDEgMy4xNCAzLjE1IDMuMTR6TTEyIDEzYy0uNjIgMC0xLjEyLS40OS0xLjE0LTEuMWwuMTItMS4wOWMuMzIuMTIuNjYuMTkgMS4wMi4xOXMuNzEtLjA3IDEuMDMtLjE5bC4xMSAxLjA5Yy0uMDIuNjEtLjUyIDEuMS0xLjE0IDEuMXptMy4zNC0xLjkzYy0uMjQgMC0uNDYtLjA3LS42NC0uMmwtLjgxLS41N2MuNTUtLjQ1Ljk0LTEuMDkgMS4wNi0xLjgzbC44OC40MmMuNC4xOS42Ni41OS42NiAxLjAzIDAgLjY0LS41MiAxLjE1LTEuMTUgMS4xNXptLS42NS01Ljk0Yy4yLS4xMy40Mi0uMi42NS0uMi42MyAwIDEuMTQuNTEgMS4xNCAxLjE0IDAgLjQ0LS4yNS44My0uNjYgMS4wM2wtLjg4LjQyYy0uMTItLjc0LS41MS0xLjM4LTEuMDctMS44M2wuODItLjU2ek0xMiAzYy42MiAwIDEuMTIuNDkgMS4xNCAxLjFsLS4xMSAxLjA5QzEyLjcxIDUuMDcgMTIuMzYgNSAxMiA1cy0uNy4wNy0xLjAyLjE5bC0uMTItMS4wOWMuMDItLjYxLjUyLTEuMSAxLjE0LTEuMXpNOC42NiA0LjkzYy4yNCAwIC40Ni4wNy42NC4ybC44MS41NmMtLjU1LjQ1LS45NCAxLjA5LTEuMDYgMS44M2wtLjg4LS40MmMtLjQtLjItLjY2LS41OS0uNjYtMS4wMyAwLS42My41Mi0xLjE0IDEuMTUtMS4xNHpNOC4xNyA4LjlsLjg4LS40MmMuMTIuNzQuNTEgMS4zOCAxLjA3IDEuODNsLS44MS41NWMtLjIuMTMtLjQyLjItLjY1LjItLjYzIDAtMS4xNC0uNTEtMS4xNC0xLjE0LS4wMS0uNDMuMjUtLjgyLjY1LTEuMDJ6TTEyIDIyYTkgOSAwIDAgMCA5LTkgOSA5IDAgMCAwLTkgOXptMi40NC0yLjQ0Yy43MS0xLjkgMi4yMi0zLjQyIDQuMTItNC4xMmE3LjA0IDcuMDQgMCAwIDEtNC4xMiA0LjEyek0zIDEzYTkgOSAwIDAgMCA5IDkgOSA5IDAgMCAwLTktOXptMi40NCAyLjQ0YzEuOS43MSAzLjQyIDIuMjIgNC4xMiA0LjEyYTcuMDQgNy4wNCAwIDAgMS00LjEyLTQuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbEdhc1N0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljc3IDcuMjMuMDEtLjAxLTMuNzItMy43MkwxNSA0LjU2bDIuMTEgMi4xMWMtLjk0LjM2LTEuNjEgMS4yNi0xLjYxIDIuMzNhMi41IDIuNSAwIDAgMCAyLjUgMi41Yy4zNiAwIC42OS0uMDggMS0uMjF2Ny4yMWMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMVYxNGMwLTEuMS0uOS0yLTItMmgtMVY1YzAtMS4xLS45LTItMi0ySDZjLTEuMSAwLTIgLjktMiAydjE2aDEwdi03LjVoMS41djVhMi41IDIuNSAwIDAgMCA1IDBWOWMwLS42OS0uMjgtMS4zMi0uNzMtMS43N3pNMTIgMTMuNVYxOUg2di03aDZ2MS41em0wLTMuNUg2VjVoNnY1em02IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsR3JvY2VyeVN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yem0xMCAwYy0xLjEgMC0xLjk5LjktMS45OSAycy44OSAyIDEuOTkgMiAyLS45IDItMi0uOS0yLTItMnptLTEuNDUtNWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNsMy41OC02LjQ5QS45OTYuOTk2IDAgMCAwIDIwLjAxIDRINS4yMWwtLjk0LTJIMXYyaDJsMy42IDcuNTktMS4zNSAyLjQ0QzQuNTIgMTUuMzcgNS40OCAxNyA3IDE3aDEydi0ySDdsMS4xLTJoNy40NXpNNi4xNiA2aDEyLjE1bC0yLjc2IDVIOC41M0w2LjE2IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbEhvc3BpdGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMyAxOWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0em0tOC41LTJoM3YtMy41SDE3di0zaC0zLjVWN2gtM3YzLjVIN3YzaDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsSG90ZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTRjMS42NiAwIDMtMS4zNCAzLTNTOC42NiA4IDcgOHMtMyAxLjM0LTMgMyAxLjM0IDMgMyAzem0wLTRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMTItM2gtOHY4SDNWNUgxdjE1aDJ2LTNoMTh2M2gydi05YzAtMi4yMS0xLjc5LTQtNC00em0yIDhoLThWOWg2YzEuMSAwIDIgLjkgMiAydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbExhdW5kcnlTZXJ2aWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyLjAxIDYgMmMtMS4xMSAwLTIgLjg5LTIgMnYxNmMwIDEuMTEuODkgMiAyIDJoMTJjMS4xMSAwIDItLjg5IDItMlY0YzAtMS4xMS0uODktMS45OS0yLTEuOTl6TTE4IDIwSDZMNS45OSA0SDE4djE2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjhcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTFcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE5YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01LTUgMi4yNC01IDUgMi4yNCA1IDUgNXptMi4zNi03LjM2YzEuMyAxLjMgMS4zIDMuNDIgMCA0LjcyLTEuMyAxLjMtMy40MiAxLjMtNC43MiAwbDQuNzItNC43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsTGlicmFyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOWMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTAgOC41NUM5LjY0IDkuMzUgNi40OCA4IDMgOHYxMWMzLjQ4IDAgNi42NCAxLjM1IDkgMy41NSAyLjM2LTIuMTkgNS41Mi0zLjU1IDktMy41NVY4Yy0zLjQ4IDAtNi42NCAxLjM1LTkgMy41NXptNyA1LjU4Yy0yLjUzLjM0LTQuOTMgMS4zLTcgMi44MmExNS4yIDE1LjIgMCAwIDAtNy0yLjgzdi02Ljk1YzIuMS4zOCA0LjA1IDEuMzUgNS42NCAyLjgzTDEyIDE0LjI4bDEuMzYtMS4yN0ExMS4xOCAxMS4xOCAwIDAgMSAxOSAxMC4xOHY2Ljk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxNYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA2aC0yYzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZINWMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tNy0zYzEuNjYgMCAzIDEuMzQgMyAzSDljMC0xLjY2IDEuMzQtMyAzLTN6bTcgMTdINVY4aDE0djEyem0tNy04Yy0xLjY2IDAtMy0xLjM0LTMtM0g3YzAgMi43NiAyLjI0IDUgNSA1czUtMi4yNCA1LTVoLTJjMCAxLjY2LTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbE1vdmllcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNXYxNGgtNFY1aDRtNi0yaC0ydjJoLTJWM0g4djJINlYzSDR2MThoMnYtMmgydjJoOHYtMmgydjJoMlYzem0tNCA2VjdoMnYyaC0yek02IDlWN2gydjJINnptMTAgNHYtMmgydjJoLTJ6TTYgMTN2LTJoMnYySDZ6bTEwIDR2LTJoMnYyaC0yek02IDE3di0yaDJ2Mkg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxPZmZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNDEgMTEuNTgtOS05QzEyLjA1IDIuMjIgMTEuNTUgMiAxMSAySDRjLTEuMSAwLTIgLjktMiAydjdjMCAuNTUuMjIgMS4wNS41OSAxLjQybDkgOWMuMzYuMzYuODYuNTggMS40MS41OHMxLjA1LS4yMiAxLjQxLS41OWw3LTdjLjM3LS4zNi41OS0uODYuNTktMS40MXMtLjIzLTEuMDYtLjU5LTEuNDJ6TTEzIDIwLjAxIDQgMTFWNGg3di0uMDFsOSA5LTcgNy4wMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2LjVcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxQYXJraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzSDZ2MThoNHYtNmgzYzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02em0uMiA4SDEwVjdoMy4yYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsUGhhcm1hY3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVoLTIuNjRsMS4xNC0zLjE0TDE3LjE1IDFsLTEuNDYgNEgzdjJsMiA2LTIgNnYyaDE4di0ybC0yLTYgMi02VjV6bS0zLjkgOC42M0wxOC44OSAxOUg1LjExbDEuNzktNS4zNy4yMS0uNjMtLjIxLS42M0w1LjExIDdoMTMuNzhsLTEuNzkgNS4zNy0uMjEuNjMuMjEuNjN6TTEzIDloLTJ2M0g4djJoM3YzaDJ2LTNoM3YtMmgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNTQgNWMuMDYuODkuMjEgMS43Ni40NSAyLjU5bC0xLjIgMS4yYy0uNDEtMS4yLS42Ny0yLjQ3LS43Ni0zLjc5aDEuNTFtOS44NiAxMi4wMmMuODUuMjQgMS43Mi4zOSAyLjYuNDV2MS40OWMtMS4zMi0uMDktMi41OS0uMzUtMy44LS43NWwxLjItMS4xOU03LjUgM0g0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjQ5YzAtLjU1LS40NS0xLTEtMS0xLjI0IDAtMi40NS0uMi0zLjU3LS41N2EuODQuODQgMCAwIDAtLjMxLS4wNWMtLjI2IDAtLjUxLjEtLjcxLjI5bC0yLjIgMi4yYTE1LjE0OSAxNS4xNDkgMCAwIDEtNi41OS02LjU5bDIuMi0yLjJjLjI4LS4yOC4zNi0uNjcuMjUtMS4wMkExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbFBpenphIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzguNDMgMiA1LjIzIDMuNTQgMy4wMSA2TDEyIDIybDguOTktMTZDMTguNzggMy41NSAxNS41NyAyIDEyIDJ6bTAgMTUuOTJMNS41MSA2LjM2QzcuMzIgNC44NSA5LjYyIDQgMTIgNHM0LjY4Ljg1IDYuNDkgMi4zNkwxMiAxNy45MnpNOSA1LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41UzguMTcgOC41IDkgOC41czEuNS0uNjcgMS41LTEuNVM5LjgyIDUuNSA5IDUuNXptMS41IDcuNWMwIC44My42NyAxLjUgMS41IDEuNS44MiAwIDEuNS0uNjcgMS41LTEuNXMtLjY4LTEuNS0xLjUtMS41LTEuNS42Ny0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMFY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2NGMxLjEgMCAxLjk5LjkgMS45OSAycy0uODkgMi0yIDJ2NGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ydi00Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMnptLTItMS40NmMtMS4xOS42OS0yIDEuOTktMiAzLjQ2cy44MSAyLjc3IDIgMy40NlYxOEg0di0yLjU0YzEuMTktLjY5IDItMS45OSAyLTMuNDYgMC0xLjQ4LS44LTIuNzctMS45OS0zLjQ2TDQgNmgxNnYyLjU0ek05LjA3IDE2IDEyIDE0LjEyIDE0LjkzIDE2bC0uODktMy4zNiAyLjY5LTIuMi0zLjQ3LS4yMUwxMiA3bC0xLjI3IDMuMjItMy40Ny4yMSAyLjY5IDIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsUG9saWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuNSAxMi41OS45IDMuODgtMy40LTIuMDUtMy40IDIuMDUuOS0zLjg3LTMtMi41OSAzLjk2LS4zNEwxMiA2LjAybDEuNTQgMy42NCAzLjk2LjM0LTMgMi41OXpNMTIgMy4xOWw3IDMuMTFWMTFjMCA0LjUyLTIuOTggOC42OS03IDkuOTMtNC4wMi0xLjI0LTctNS40MS03LTkuOTNWNi4zbDctMy4xMU0xMiAxIDMgNXY2YzAgNS41NSAzLjg0IDEwLjc0IDkgMTIgNS4xNi0xLjI2IDktNi40NSA5LTEyVjVsLTktNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsUG9zdE9mZmljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZ6bS0yIDAtOCA1LTgtNWgxNnptMCAxMkg0VjhsOCA1IDgtNXYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsUHJpbnRzaG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA4aC0xVjNINnY1SDVjLTEuNjYgMC0zIDEuMzQtMyAzdjZoNHY0aDEydi00aDR2LTZjMC0xLjY2LTEuMzQtMy0zLTN6TTggNWg4djNIOFY1em04IDE0SDh2LTRoOHY0em0yLTR2LTJINnYySDR2LTRjMC0uNTUuNDUtMSAxLTFoMTRjLjU1IDAgMSAuNDUgMSAxdjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCIxMS41XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbFNlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNGgtMy4xN0wxNSAySDlMNy4xNyA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjZoNC4wNWwuNTktLjY1TDkuODggNGg0LjI0bDEuMjQgMS4zNS41OS42NUgyMHYxMnpNMTIgN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTAgOC4yYy0xLjc3IDAtMy4yLTEuNDMtMy4yLTMuMiAwLTEuNzcgMS40My0zLjIgMy4yLTMuMnMzLjIgMS40MyAzLjIgMy4yYzAgMS43Ny0xLjQzIDMuMi0zLjIgMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxTaGlwcGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOGgtM1Y0SDNjLTEuMSAwLTIgLjktMiAydjExaDJjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g2YzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoMnYtNWwtMy00em0tLjUgMS41IDEuOTYgMi41SDE3VjkuNWgyLjV6TTYgMThjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMi4yMi0zYy0uNTUtLjYxLTEuMzMtMS0yLjIyLTFzLTEuNjcuMzktMi4yMiAxSDNWNmgxMnY5SDguMjJ6TTE4IDE4Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbFRheGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDYuMDFDMTguNzIgNS40MiAxOC4xNiA1IDE3LjUgNUgxNVYzSDl2Mkg2LjVjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTJ2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuODUgN2gxMC4yOWwxLjA0IDNINS44MWwxLjA0LTN6TTE5IDE3SDV2LTQuNjZsLjEyLS4zNGgxMy43N2wuMTEuMzRWMTd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNy41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTYuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTHVuY2hEaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE5YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJ2LTNIMnYzem0yLTFoMTZ2MUg0di0xek0xOC42NiAxMS41Yy0xLjk1IDAtMi4wOSAxLTMuMzMgMS0xLjE5IDAtMS40Mi0xLTMuMzMtMS0xLjk1IDAtMi4wOSAxLTMuMzMgMS0xLjE5IDAtMS40Mi0xLTMuMzMtMS0xLjk1IDAtMi4wOSAxLTMuMzMgMXYyYzEuOSAwIDIuMTctMSAzLjM1LTEgMS4xOSAwIDEuNDIgMSAzLjMzIDEgMS45NSAwIDIuMDktMSAzLjMzLTEgMS4xOSAwIDEuNDIgMSAzLjMzIDEgMS45NSAwIDIuMDktMSAzLjMzLTEgMS4xOSAwIDEuNC45OCAzLjMyIDFsLS4wMS0xLjk4Yy0xLjYxLS4zMy0xLjYyLTEuMDItMy4zMy0xLjAyek0yMiA5Yy4wMi00LTQuMjgtNi0xMC02QzYuMjkgMyAyIDUgMiA5djFoMjBWOXpNNC4xOCA4QzUuMDEgNS44MSA4LjYxIDUgMTIgNWMzLjMxIDAgNS45My43MyA3LjE5IDEuOTkuMy4zMS41Mi42NC42NSAxLjAxSDQuMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjUgMy0uMTYuMDNMMTUgNS4xIDkgMyAzLjM2IDQuOWMtLjIxLjA3LS4zNi4yNS0uMzYuNDhWMjAuNWMwIC4yOC4yMi41LjUuNWwuMTYtLjAzTDkgMTguOWw2IDIuMSA1LjY0LTEuOWMuMjEtLjA3LjM2LS4yNS4zNi0uNDhWMy41YzAtLjI4LS4yMi0uNS0uNS0uNXpNMTAgNS40N2w0IDEuNHYxMS42NmwtNC0xLjRWNS40N3ptLTUgLjk5IDMtMS4wMXYxMS43bC0zIDEuMTZWNi40NnptMTQgMTEuMDgtMyAxLjAxVjYuODZsMy0xLjE2djExLjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFwc1VnYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjNC40MSAwIDggMy41OSA4IDhzLTMuNTkgOC04IDhjLTEuMTggMC0yLjM0LS4yNi0zLjQzLS43OC0uMjctLjEzLS41Ni0uMTktLjg2LS4xOS0uMTkgMC0uMzguMDMtLjU2LjA4bC0zLjIuOTQuOTQtMy4yYy4xNC0uNDcuMS0uOTgtLjExLTEuNDJBNy45MjUgNy45MjUgMCAwIDEgNCAxMmMwLTQuNDEgMy41OS04IDgtOG0wLTJDNi40OCAyIDIgNi40OCAyIDEyYzAgMS41NC4zNiAyLjk4Ljk3IDQuMjlMMSAyM2w2LjcxLTEuOTdjMS4zMS42MSAyLjc1Ljk3IDQuMjkuOTcgNS41MiAwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTMgOGgtMnYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVkaWNhbEluZm9ybWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgN2gtNVY0YzAtMS4xLS45LTItMi0yaC0yYy0xLjEgMC0yIC45LTIgMnYzSDRjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnptLTktM2gydjVoLTJWNHptOSAxNkg0VjloNWMwIDEuMS45IDIgMiAyaDJjMS4xIDAgMi0uOSAyLTJoNXYxMXptLTktNEg5djJIN3YtMkg1di0yaDJ2LTJoMnYyaDJ2MnptMi0xLjVWMTNoNnYxLjVoLTZ6bTAgM1YxNmg0djEuNWgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1lZGljYWxTZXJ2aWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLTRWNGMwLTEuMS0uOS0yLTItMmgtNGMtMS4xIDAtMiAuOS0yIDJ2Mkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6TTEwIDRoNHYyaC00VjR6bTEwIDE2SDRWOGgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTBoLTJ2M0g4djJoM3YzaDJ2LTNoM3YtMmgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1lbnVCb29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNWMtMS4xMS0uMzUtMi4zMy0uNS0zLjUtLjUtMS45NSAwLTQuMDUuNC01LjUgMS41LTEuNDUtMS4xLTMuNTUtMS41LTUuNS0xLjVTMi40NSA0LjkgMSA2djE0LjY1YzAgLjI1LjI1LjUuNS41LjEgMCAuMTUtLjA1LjI1LS4wNUMzLjEgMjAuNDUgNS4wNSAyMCA2LjUgMjBjMS45NSAwIDQuMDUuNCA1LjUgMS41IDEuMzUtLjg1IDMuOC0xLjUgNS41LTEuNSAxLjY1IDAgMy4zNS4zIDQuNzUgMS4wNS4xLjA1LjE1LjA1LjI1LjA1LjI1IDAgLjUtLjI1LjUtLjVWNmMtLjYtLjQ1LTEuMjUtLjc1LTItMXptMCAxMy41Yy0xLjEtLjM1LTIuMy0uNS0zLjUtLjUtMS43IDAtNC4xNS42NS01LjUgMS41VjhjMS4zNS0uODUgMy44LTEuNSA1LjUtMS41IDEuMiAwIDIuNC4xNSAzLjUuNXYxMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDEwLjVjLjg4IDAgMS43My4wOSAyLjUuMjZWOS4yNGMtLjc5LS4xNS0xLjY0LS4yNC0yLjUtLjI0LTEuNyAwLTMuMjQuMjktNC41LjgzdjEuNjZjMS4xMy0uNjQgMi43LS45OSA0LjUtLjk5ek0xMyAxMi40OXYxLjY2YzEuMTMtLjY0IDIuNy0uOTkgNC41LS45OS44OCAwIDEuNzMuMDkgMi41LjI2VjExLjljLS43OS0uMTUtMS42NC0uMjQtMi41LS4yNC0xLjcgMC0zLjI0LjMtNC41Ljgzek0xNy41IDE0LjMzYy0xLjcgMC0zLjI0LjI5LTQuNS44M3YxLjY2YzEuMTMtLjY0IDIuNy0uOTkgNC41LS45OS44OCAwIDEuNzMuMDkgMi41LjI2di0xLjUyYy0uNzktLjE2LTEuNjQtLjI0LTIuNS0uMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNDEgMjEgNSAxOS41OWw0LjgzLTQuODNjLjc1LS43NSAxLjE3LTEuNzcgMS4xNy0yLjgzdi01LjFMOS40MSA4LjQxIDggN2w0LTQgNCA0LTEuNDEgMS40MUwxMyA2LjgzdjUuMWMwIDEuMDYuNDIgMi4wOCAxLjE3IDIuODNMMTkgMTkuNTkgMTcuNTkgMjEgMTIgMTUuNDEgNi40MSAyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1pbm9yQ3Jhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MiA5LjAxQzE4LjcyIDguNDIgMTguMTYgOCAxNy41IDhoLTExYy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwzIDE1djhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGwtMi4wOC01Ljk5ek02Ljg1IDEwaDEwLjI5bDEuMDQgM0g1LjgxbDEuMDQtM3pNMTkgMjBINXYtNWgxNHY1ek02IDE3LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVTOC4zMyAxOSA3LjUgMTkgNiAxOC4zMyA2IDE3LjV6bTkgMGMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjUtMS41LS42Ny0xLjUtMS41ek05LjQxIDUgOCA2LjQxbC0zLTNMNi40MSAybDMgM3pNMTYgNi40MSAxNC41OSA1bDMtM0wxOSAzLjQxbC0zIDN6TTEzIDVoLTJWMGgydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNaXNjZWxsYW5lb3VzU2VydmljZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC4xNyAxMy43MSAxLjQtMi40MmMuMDktLjE1LjA1LS4zNC0uMDgtLjQ1bC0xLjQ4LTEuMTZjLjAzLS4yMi4wNS0uNDUuMDUtLjY4cy0uMDItLjQ2LS4wNS0uNjlsMS40OC0xLjE2Yy4xMy0uMTEuMTctLjMuMDgtLjQ1bC0xLjQtMi40MmMtLjA5LS4xNS0uMjctLjIxLS40My0uMTVsLTEuNzQuN2MtLjM2LS4yOC0uNzUtLjUxLTEuMTgtLjY5bC0uMjYtMS44NWEuMzY0LjM2NCAwIDAgMC0uMzUtLjI5aC0yLjhjLS4xNyAwLS4zMi4xMy0uMzUuM0w2LjggNC4xNWMtLjQyLjE4LS44Mi40MS0xLjE4LjY5bC0xLjc0LS43Yy0uMTYtLjA2LS4zNCAwLS40My4xNWwtMS40IDIuNDJjLS4wOS4xNS0uMDUuMzQuMDguNDVsMS40OCAxLjE2Yy0uMDMuMjItLjA1LjQ1LS4wNS42OHMuMDIuNDYuMDUuNjlsLTEuNDggMS4xNmMtLjEzLjExLS4xNy4zLS4wOC40NWwxLjQgMi40MmMuMDkuMTUuMjcuMjEuNDMuMTVsMS43NC0uN2MuMzYuMjguNzUuNTEgMS4xOC42OWwuMjYgMS44NWMuMDMuMTYuMTguMjkuMzUuMjloMi44Yy4xNyAwIC4zMi0uMTMuMzUtLjNsLjI2LTEuODVjLjQyLS4xOC44Mi0uNDEgMS4xOC0uNjlsMS43NC43Yy4xNi4wNi4zNCAwIC40My0uMTV6TTguODEgMTFjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyek0yMS45MiAxOC42N2wtLjk2LS43NGMuMDItLjE0LjA0LS4yOS4wNC0uNDQgMC0uMTUtLjAxLS4zLS4wNC0uNDRsLjk1LS43NGMuMDgtLjA3LjExLS4xOS4wNS0uMjlsLS45LTEuNTVjLS4wNS0uMS0uMTctLjEzLS4yOC0uMWwtMS4xMS40NWMtLjIzLS4xOC0uNDgtLjMzLS43Ni0uNDRsLS4xNy0xLjE4YS4yMTYuMjE2IDAgMCAwLS4yMS0uMmgtMS43OWMtLjExIDAtLjIxLjA4LS4yMi4xOWwtLjE3IDEuMThjLS4yNy4xMi0uNTMuMjYtLjc2LjQ0bC0xLjExLS40NWEuMjMuMjMgMCAwIDAtLjI4LjFsLS45IDEuNTVjLS4wNS4xLS4wNC4yMi4wNS4yOWwuOTUuNzRhMy4xNDUgMy4xNDUgMCAwIDAgMCAuODhsLS45NS43NGMtLjA4LjA3LS4xMS4xOS0uMDUuMjlsLjkgMS41NWMuMDUuMS4xNy4xMy4yOC4xbDEuMTEtLjQ1Yy4yMy4xOC40OC4zMy43Ni40NGwuMTcgMS4xOGMuMDIuMTEuMTEuMTkuMjIuMTloMS43OWMuMTEgMCAuMjEtLjA4LjIyLS4xOWwuMTctMS4xOGMuMjctLjEyLjUzLS4yNi43NS0uNDRsMS4xMi40NWMuMS4wNC4yMiAwIC4yOC0uMWwuOS0xLjU1Yy4wNi0uMDkuMDMtLjIxLS4wNS0uMjh6bS00LjI5LjE2YTEuMzUgMS4zNSAwIDEgMSAuMDAxLTIuNzAxIDEuMzUgMS4zNSAwIDAgMS0uMDAxIDIuNzAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9kZU9mVHJhdmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuMzEgMTguOWMtLjk2IDEtMi4wNiAyLjAzLTMuMzEgMy4xLTUuMzMtNC41NS04LTguNDgtOC0xMS44QzQgNS4yMiA3LjggMiAxMiAyYzQuMTkgMCA3Ljk5IDMuMjEgOCA4LjE3bDIuMDktMi4wOUwyMy41IDkuNSAxOSAxNGwtNC41LTQuNSAxLjQxLTEuNDFMMTggMTAuMTdDMTcuOTkgNi41NSAxNS4zNCA0IDEyIDRjLTMuMzUgMC02IDIuNTctNiA2LjIgMCAyLjM0IDEuOTUgNS40NCA2IDkuMTQuNjQtLjU5IDEuMjMtMS4xNiAxLjc3LTEuNzFhMi41IDIuNSAwIDAgMS0uMjctMS4xMiAyLjUgMi41IDAgMCAxIDUgMCAyLjQ5MiAyLjQ5MiAwIDAgMS0zLjE5IDIuMzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb25leSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTZoM2MuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxem0xLTZoMXY0aC0xdi00em0tNyA2aDNjLjU1IDAgMS0uNDUgMS0xVjljMC0uNTUtLjQ1LTEtMS0xSDljLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxem0xLTZoMXY0aC0xdi00ek01IDhoMnY4SDV6TTIgNHYxNmgyMFY0SDJ6bTE4IDE0SDRWNmgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vcGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN2MwLTEuMS0uOS0yLTItMmgtM3YyaDN2Mi42NUwxMy41MiAxNEgxMFY5SDZjLTIuMjEgMC00IDEuNzktNCA0djNoMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDQuNDhMMTkgMTAuMzVWN3pNNCAxNHYtMWMwLTEuMS45LTIgMi0yaDJ2M0g0em0zIDNjLS41NSAwLTEtLjQ1LTEtMWgyYzAgLjU1LS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA2aDV2Mkg1ek0xOSAxM2MtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9zcXVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgN2MwLTEuMS0yLTMtMi0zcy0yIDEuOS0yIDNjMCAuNzQuNCAxLjM4IDEgMS43MlYxM2gtMnYtMmMwLS45NS0uNjYtMS43NC0xLjU1LTEuOTQuMzQtLjU4LjU1LTEuMjUuNTUtMS45NyAwLTEuMzEtLjY1LTIuNTMtMS43NC0zLjI1TDEyIDEgNy43NCAzLjg0QTMuODg3IDMuODg3IDAgMCAwIDYgNy4wOWMwIC43Mi4yMSAxLjM5LjU1IDEuOTZDNS42NiA5LjI2IDUgMTAuMDUgNSAxMXYySDNWOC43MmMuNi0uMzQgMS0uOTggMS0xLjcyIDAtMS4xLTItMy0yLTNTMCA1LjkgMCA3YzAgLjc0LjQgMS4zOCAxIDEuNzJWMjFoMTB2LTRjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjRoMTBWOC43MmMuNi0uMzQgMS0uOTggMS0xLjcyek04Ljg1IDUuNSAxMiAzLjRsMy4xNSAyLjFjLjUzLjM2Ljg1Ljk1Ljg1IDEuNTlDMTYgOC4xNCAxNS4xNCA5IDE0LjA5IDlIOS45MUM4Ljg2IDkgOCA4LjE0IDggNy4wOWMwLS42NC4zMi0xLjIzLjg1LTEuNTl6TTIxIDE5aC02di0yYzAtMS42NS0xLjM1LTMtMy0zcy0zIDEuMzUtMyAzdjJIM3YtNGg0di00aDEwdjRoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW92aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOS40MlYxMmgyVjZoLTZ2MmgyLjU4bC00LjQ2IDQuNDZhLjk5Ni45OTYgMCAwIDEtMS40MSAwbC0xLjE3LTEuMTdhMyAzIDAgMCAwLTQuMjQgMEwyIDE2LjU5IDMuNDEgMThsNS4yOS01LjI5YS45OTYuOTk2IDAgMCAxIDEuNDEgMGwxLjE3IDEuMTdhMyAzIDAgMCAwIDQuMjQgMEwyMCA5LjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTXVsdGlwbGVTdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgNCA0IDQtNCA0VjloLTRWN2g0VjR6bS03IDNjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpNNiA3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTEgMTBoNHYtMkg3di0zbC00IDQgNCA0di0zem03IDBjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptNCAwYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNdXNldW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMVY5TDEyIDIgMiA5djJoMnY5SDJ2MmgyMHYtMmgtMnYtOWgyem0tNCA5SDZWOWgxMnYxMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTAgMTQgMiAzIDItM3Y0aDJ2LTdoLTJsLTIgMy0yLTNIOHY3aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNeUxvY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptOC45NCAzQTguOTk0IDguOTk0IDAgMCAwIDEzIDMuMDZWMWgtMnYyLjA2QTguOTk0IDguOTk0IDAgMCAwIDMuMDYgMTFIMXYyaDIuMDZBOC45OTQgOC45OTQgMCAwIDAgMTEgMjAuOTRWMjNoMnYtMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAyMC45NCAxM0gyM3YtMmgtMi4wNnpNMTIgMTljLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmF2aWdhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgNy4yNyA0LjI4IDEwLjQzLTMuNDctMS41My0uODEtLjM2LS44MS4zNi0zLjQ3IDEuNTNMMTIgNy4yN00xMiAyIDQuNSAyMC4yOWwuNzEuNzFMMTIgMThsNi43OSAzIC43MS0uNzFMMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5lYXJNZURpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNi4zNCAyMSAzbC0zLjM0IDktMS41Ni0xLjU2IDEuNS00LjA1LTQuMDUgMS41TDEyIDYuMzR6bTkuMTkgMTQuODUtNS4wNy01LjA3TDE0LjMxIDIxSDEyLjlsLTIuODMtNy4wN0wzIDExLjFWOS42OWw0Ljg4LTEuODEtNS4wNy01LjA3TDQuMjIgMS40IDIyLjYgMTkuNzhsLTEuNDEgMS40MXptLTYuNjItNi42Mkw5LjQzIDkuNDNsLTIuNzEgMS4wMSA0Ljg5IDEuOTUgMS45NSA0Ljg5IDEuMDEtMi43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5lYXJNZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMjcgNi43My00LjI0IDEwLjEzLTEuMzItMy40Mi0uMzItLjgzLS44Mi0uMzItMy40My0xLjMzIDEwLjEzLTQuMjNNMjEgMyAzIDEwLjUzdi45OGw2Ljg0IDIuNjVMMTIuNDggMjFoLjk4TDIxIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOaWdodGxpZmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDVoMTRsLTYgOXY0aDJ2Mkg1di0yaDJ2LTRMMSA1em05LjEgNCAxLjQtMkg0LjQ5bDEuNCAyaDQuMjF6TTE3IDVoNXYzaC0zdjljMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM2EzIDMgMCAwIDEgMSAuMTdWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vQ3Jhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MiA5LjAxQzE4LjcyIDguNDIgMTguMTYgOCAxNy41IDhoLTExYy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwzIDE1djhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGwtMi4wOC01Ljk5ek02Ljg1IDEwaDEwLjI5bDEuMDQgM0g1LjgxbDEuMDQtM3pNMTkgMjBINXYtNWgxNHY1ek02IDE3LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVTOC4zMyAxOSA3LjUgMTkgNiAxOC4zMyA2IDE3LjV6bTkgMGMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjUtMS41LS42Ny0xLjUtMS41ek0xMiA2LjM2IDkuMTcgMy41NGwxLjQxLTEuNDFMMTIgMy41NCAxNS41NCAwbDEuNDEgMS40MUwxMiA2LjM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9NZWFscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE0VjZjMC0xLjc2IDIuMjQtNCA1LTR2MTYuMTdsLTItMlYxNGgtM3ptNC40OSA5LjMxTDEwLjAyIDEyLjg1Yy0uMzMuMDktLjY2LjE1LTEuMDIuMTV2OUg3di05Yy0yLjIxIDAtNC0xLjc5LTQtNFY1LjgzTC42OSAzLjUxIDIuMSAyLjFsMTkuOCAxOS44LTEuNDEgMS40MXpNNi4xNyA5IDUgNy44M1Y5aDEuMTd6TTkgMkg3djIuMTdsMiAyVjJ6bTQgN1YyaC0ydjYuMTdsMS44NSAxLjg1Yy4wOS0uMzMuMTUtLjY2LjE1LTEuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb1RyYW5zZmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDEzYy44MyAwIDEuNS42NyAxLjUgMS41UzkuMzMgMTYgOC41IDE2IDcgMTUuMzMgNyAxNC41IDcuNjcgMTMgOC41IDEzem0xMS4yOCA5LjYxLTEuNjQtMS42NGMtLjA1LjAxLS4wOS4wMy0uMTQuMDNoLTFjLS41NSAwLTEtLjQ1LTEtMXYtMUg4djFjMCAuNTUtLjQ1IDEtMSAxSDZjLS41NSAwLTEtLjQ1LTEtMXYtMS43OGMtLjYxLS41NS0xLTEuMzQtMS0yLjIyVjYuODNMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNCAxLjQyek02IDguODNWMTBoMS4xN0w2IDguODN6TTE0LjE3IDE3bC01LTVINnY0YzAgLjM3LjIxLjYyLjM0LjczbC4yOS4yN2g3LjU0ek0xMiA0YzMuNjkgMCA1LjExLjQ2IDUuNjYuOTlINy44MmwyIDJIMThWMTBoLTUuMTdsMiAySDE4djMuMTdsMS44MSAxLjgxYy4xMS0uMzEuMTktLjYzLjE5LS45OFY2YzAtMy41LTMuNTgtNC04LTQtMi41MiAwLTQuNzYuMTYtNi4yMi45NWwxLjUzIDEuNTNDOC4xNyA0LjIgOS42IDQgMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdExpc3RlZExvY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4wMSAxNmEuOTkuOTkgMCAwIDEtLjcxLS4yOS45NS45NSAwIDAgMS0uMjktLjcxYy0uMDEtLjU1LjQzLS45OS45OC0xaC4wMmMuMjggMCAuNTEuMS43MS4yOS4xOC4xOS4yOC40My4yOC43cy0uMS41MS0uMjkuNzEtLjQzLjMtLjcuM3ptLS44OC0zLjY2YzAtLjQ1LjEtLjg0LjI5LTEuMTYuMTktLjMzLjUzLS43IDEtMS4xMi4yOC0uMjUuNDgtLjQ3LjYxLS42NnMuMTktLjQuMTktLjY0YzAtLjI5LS4xMS0uNTMtLjMyLS43NC0uMjEtLjItLjUtLjMtLjg1LS4zLS4zNyAwLS43NC4xLS45Ni4zLS4yMS4yLS40LjQ1LS40Ljk4SDljMC0xLjAxLjQ2LTEuNzMuOTctMi4yMUMxMC41MyA2LjI4IDExLjI1IDYgMTIgNmMuNTkgMCAxLjExLjEyIDEuNTcuMzVzLjc5LjU1IDEuMDUuOTYuMzguODYuMzggMS4zNS0uMS45LS4zMSAxLjI1LS40OC43MS0uODkgMS4wOWMtLjMyLjMtLjUzLjU2LS42NS43N3MtLjE4LjQ5LS4xOC44MVYxM2gtMS44NXYtLjY2aC4wMXpNMTggMTAuMkMxOCA2LjU3IDE1LjM1IDQgMTIgNHMtNiAyLjU3LTYgNi4yYzAgMi4zNCAxLjk1IDUuNDQgNiA5LjE0IDQuMDUtMy43IDYtNi44IDYtOS4xNHpNMTIgMmM0LjIgMCA4IDMuMjIgOCA4LjIgMCAzLjMyLTIuNjcgNy4yNS04IDExLjgtNS4zMy00LjU1LTgtOC40OC04LTExLjhDNCA1LjIyIDcuOCAyIDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTJoMkwxMiAyIDUuMDUgMTJIN2wtMy45IDZoNi45MnY0aDMuOTV2LTRIMjFsLTQtNnpNNi43OSAxNmwzLjktNkg4Ljg4bDMuMTMtNC41IDMuMTUgNC41aC0xLjlsNCA2SDYuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZWRhbEJpa2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC4xOCAxMC0xLjctNC42OEEyLjAwOCAyLjAwOCAwIDAgMCAxNC42IDRIMTJ2MmgyLjZsMS40NiA0aC00LjgxbC0uMzYtMUgxMlY3SDd2MmgxLjc1bDEuODIgNUg5LjljLS40NC0yLjIzLTIuMzEtMy44OC00LjY1LTMuOTlDMi40NSA5Ljg3IDAgMTIuMiAwIDE1YzAgMi44IDIuMiA1IDUgNSAyLjQ2IDAgNC40NS0xLjY5IDQuOS00aDQuMmMuNDQgMi4yMyAyLjMxIDMuODggNC42NSAzLjk5IDIuOC4xMyA1LjI1LTIuMTkgNS4yNS01IDAtMi44LTIuMi01LTUtNWgtLjgyek03LjgyIDE2Yy0uNCAxLjE3LTEuNDkgMi0yLjgyIDItMS42OCAwLTMtMS4zMi0zLTNzMS4zMi0zIDMtM2MxLjMzIDAgMi40Mi44MyAyLjgyIDJINXYyaDIuODJ6bTYuMjgtMmgtMS40bC0uNzMtMkgxNWMtLjQ0LjU4LS43NiAxLjI1LS45IDJ6bTQuOSA0Yy0xLjY4IDAtMy0xLjMyLTMtMyAwLS45My40MS0xLjczIDEuMDUtMi4yOGwuOTYgMi42NCAxLjg4LS42OC0uOTctMi42N2MuMDMgMCAuMDYtLjAxLjA5LS4wMSAxLjY4IDAgMyAxLjMyIDMgM3MtMS4zMyAzLTMuMDEgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvblBpbkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDExYzEuMzMgMCA0IC42NyA0IDJ2LjE2Yy0uOTcgMS4xMi0yLjQgMS44NC00IDEuODRzLTMuMDMtLjcyLTQtMS44NFYxM2MwLTEuMzMgMi42Ny0yIDQtMnptMC0xYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptNiAuMkMxOCA2LjU3IDE1LjM1IDQgMTIgNHMtNiAyLjU3LTYgNi4yYzAgMi4zNCAxLjk1IDUuNDQgNiA5LjE0IDQuMDUtMy43IDYtNi44IDYtOS4xNHpNMTIgMmM0LjIgMCA4IDMuMjIgOCA4LjIgMCAzLjMyLTIuNjcgNy4yNS04IDExLjgtNS4zMy00LjU1LTgtOC40OC04LTExLjhDNCA1LjIyIDcuOCAyIDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25QaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoNGwzIDMgMy0zaDRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNmgtNC44M2wtLjU5LjU5TDEyIDIwLjE3bC0xLjU5LTEuNTktLjU4LS41OEg1VjRoMTR2MTR6bS03LTdjMS42NSAwIDMtMS4zNSAzLTNzLTEuMzUtMy0zLTMtMyAxLjM1LTMgMyAxLjM1IDMgMyAzem0wLTRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNiA4LjU4YzAtMi41LTMuOTctMy41OC02LTMuNThzLTYgMS4wOC02IDMuNThWMTdoMTJ2LTEuNDJ6TTguNDggMTVjLjc0LS41MSAyLjIzLTEgMy41Mi0xczIuNzguNDkgMy41MiAxSDguNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXN0Q29udHJvbFJvZGVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTdcIixcImN5XCI6XCIxN1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC44NiAxNC45Ny0uOTMtLjg0Yy40OC0zLjQ1LTIuODctNi4wNC02LjA1LTQuODJBNS43OSA1Ljc5IDAgMCAwIDEyIDljLTQuMjYgMC01LjY1IDMuNTgtNS44OSA0Ljg1QTIuOTgzIDIuOTgzIDAgMCAxIDQgMTFjMC0xLjY2IDEuMzQtMyAzLTNoMi41YTIuNSAyLjUgMCAwIDAgMC01SDhjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDFoMS41Yy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNUg3Yy0yLjc2IDAtNSAyLjI0LTUgNSAwIDIuNDQgMS43NiA0LjQ3IDQuMDcgNC45MUE1Ljk5OCA1Ljk5OCAwIDAgMCAxMiAyMWg2LjUzYzMuMTEgMCA0LjctMy44OSAyLjMzLTYuMDN6TTE4LjUzIDE5SDEyYy0xLjIxIDAtMi4zNC0uNTQtMy4xMS0xLjQ4LS43OC0uOTUtMS4wNi0yLjE2LS44LTMuNDFhMy45NSAzLjk1IDAgMCAxIDIuOTktMy4wMWMuMjItLjA1LjQ1LS4wNi42Ny0uMDctLjQ3LjcxLS43NSAxLjU1LS43NSAyLjQ3IDAgMS4yNC41IDIuMzcgMS4zMiAzLjE4bDEuNDEtMS40MWMtLjQ1LS40NS0uNzMtMS4wOC0uNzMtMS43NyAwLTEuNDIgMS4yLTIuNSAyLjUtMi41YTIuNSAyLjUgMCAwIDEgMi41IDIuNWMwIC40Ni0uMTMuODgtLjM1IDEuMjVsMS44NyAxLjdjLjMxLjI4LjQ4LjY3LjQ4IDEuMDkgMCAuOC0uNjYgMS40Ni0xLjQ3IDEuNDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXN0Q29udHJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE1di0yaC0zLjA3Yy0uMDUtLjM5LS4xMi0uNzctLjIyLTEuMTRsMi41OC0xLjQ5LTEtMS43M0wxNi45MiAxMGMtLjI4LS40OC0uNjItLjkxLS45OS0xLjI5LjEtLjU2LjItMS42OS0uNTgtMi44OUwxNyA0LjE3bC0xLjQxLTEuNDEtMS43MiAxLjcyYy0xLjY4LS44OS0zLjEtLjMzLTMuNzMgMEw4LjQxIDIuNzYgNyA0LjE3bDEuNjUgMS42NWMtLjc4IDEuMi0uNjggMi4zNC0uNTggMi44OS0uMzcuMzktLjcxLjgyLS45OSAxLjI5TDQuNzEgOC42M2wtMSAxLjczIDIuNTggMS40OWMtLjEuMzctLjE3Ljc1LS4yMiAxLjE0SDN2MmgzLjA3Yy4wNS4zOS4xMi43Ny4yMiAxLjE0bC0yLjU4IDEuNDkgMSAxLjczTDcuMDggMThjMS4wOCAxLjgxIDIuODggMyA0LjkyIDNzMy44NC0xLjE5IDQuOTItM2wyLjM3IDEuMzcgMS0xLjczLTIuNTgtMS40OWMuMS0uMzcuMTctLjc1LjIyLTEuMTRIMjF6bS05LTljLjg4IDAgMS42Mi41NyAxLjg4IDEuMzZDMTMuMjkgNy4xMyAxMi42NiA3IDEyIDdzLTEuMjkuMTMtMS44OC4zNkMxMC4zOCA2LjU3IDExLjEyIDYgMTIgNnptMCAxM2MtMi4yMSAwLTQtMi4yNC00LTVzMS43OS01IDQtNSA0IDIuMjQgNCA1LTEuNzkgNS00IDV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDExaDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpbkRyb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzEuOTMgMCA1IDEuNCA1IDUuMTUgMCAyLjE2LTEuNzIgNC42Ny01IDcuMzItMy4yOC0yLjY1LTUtNS4xNy01LTcuMzJDNyA1LjQgMTAuMDcgNCAxMiA0bTAtMkM4LjczIDIgNSA0LjQ2IDUgOS4xNWMwIDMuMTIgMi4zMyA2LjQxIDcgOS44NSA0LjY3LTMuNDQgNy02LjczIDctOS44NUMxOSA0LjQ2IDE1LjI3IDIgMTIgMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN2MtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDJhMiAyIDAgMSAwIDAtNHpNNSAyMGgxNHYySDV2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQbGFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEyYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptNi0xLjhDMTggNi41NyAxNS4zNSA0IDEyIDRzLTYgMi41Ny02IDYuMmMwIDIuMzQgMS45NSA1LjQ0IDYgOS4xNCA0LjA1LTMuNyA2LTYuOCA2LTkuMTR6TTEyIDJjNC4yIDAgOCAzLjIyIDggOC4yIDAgMy4zMi0yLjY3IDcuMjUtOCAxMS44LTUuMzMtNC41NS04LTguNDgtOC0xMS44QzQgNS4yMiA3LjggMiAxMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGx1bWJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS4yOCA0LjkzLTIuMTItMi4xMmMtLjc4LS43OC0yLjA1LS43OC0yLjgzIDBMMTEuNSA1LjY0bDIuMTIgMi4xMiAyLjEyLTIuMTIgMy41NCAzLjU0YTMuMDEyIDMuMDEyIDAgMCAwIDAtNC4yNXpNNS40OSAxMy43N2MuNTkuNTkgMS41NC41OSAyLjEyIDBsMi40Ny0yLjQ3LTIuMTItMi4xMy0yLjQ3IDIuNDdjLS41OS41OS0uNTkgMS41NCAwIDIuMTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjA0IDcuNzYtLjcxLjcxLS43MS43MUwxMC40NCA2Yy0uNTktLjYtMS41NC0uNi0yLjEyLS4wMWExLjQ5IDEuNDkgMCAwIDAgMCAyLjEybDMuMTggMy4xOC0uNzEuNzEtNi4zNiA2LjM2Yy0uNzguNzgtLjc4IDIuMDUgMCAyLjgzLjc4Ljc4IDIuMDUuNzggMi44MyAwTDE2LjQ1IDEyYS45OTYuOTk2IDAgMSAwIDEuNDEtMS40MWwtMi44Mi0yLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmFpbHdheUFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjE1LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDExVjhoNy4yOUMxMS4xIDcuMzcgMTEgNi43IDExIDZINC40M2MuOS0uNzcgMy4yOC0xLjA4IDYuNjUtLjk4LjEtLjcuMy0xLjM3LjU5LTEuOTlDMi45NyAyLjY3IDIgNS4wMiAyIDd2OS41QzIgMTguNDMgMy41NyAyMCA1LjUgMjBMNCAyMXYxaDEydi0xbC0xLjUtMWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVYxM2MtMS45MSAwLTMuNjMtLjc2LTQuODktMkg0em0xMiA1LjVjMCAuODMtLjY3IDEuNS0xLjUgMS41aC05Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVWMTNoMTJ2My41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptLjUgOGgtMVY4aDF2MXptMC0yaC0xVjNoMXY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmFtZW5EaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS42NiAxNGMtLjY2IDEuOTItMi4yNCAzLjU0LTQuNCA0LjM5bC0xLjI2LjVWMjBoLTR2LTEuMTFsLTEuMjctLjVjLTIuMTYtLjg1LTMuNzQtMi40Ny00LjQtNC4zOWgxNS4zM00yMiAyIDQgMy45OVYxMkgyYzAgMy42OSAyLjQ3IDYuODYgNiA4LjI1VjIyaDh2LTEuNzVjMy41My0xLjM5IDYtNC41NiA2LTguMjVIMTAuNVY4SDIyVjYuNUgxMC41VjQuNzhMMjIgMy41MVYyek04IDYuNVY1LjA2bDEtLjExVjYuNUg4em0tMi41IDBWNS4zNGwxLS4xMVY2LjVoLTF6TTggMTJWOGgxdjRIOHptLTIuNSAwVjhoMXY0aC0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmFtcExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAyMWgtMlY2LjgzTDkuNDEgOC40MSA4IDdsNC00IDQgNC0xLjQxIDEuNDFMMTMgNi44M1Y5YzAgNC4yNyA0LjAzIDcuMTMgNiA4LjI3bC0xLjQ2IDEuNDZjLTEuOTEtMS4xNi0zLjQ0LTIuNTMtNC41NC00LjAyVjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmFtcFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMjFoMlY2LjgzbDEuNTkgMS41OUwxNiA3bC00LTQtNCA0IDEuNDEgMS40MUwxMSA2LjgzVjljMCA0LjI3LTQuMDMgNy4xMy02IDguMjdsMS40NiAxLjQ2QzguMzcgMTcuNTYgOS45IDE2LjE5IDExIDE0LjdWMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSYXRlUmV2aWV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg1LjE3bC0uNTkuNTktLjU4LjU4VjRoMTZ2MTJ6bS05LjUtMkgxOHYtMmgtNS41em0zLjg2LTUuODdjLjItLjIuMi0uNTEgMC0uNzFsLTEuNzctMS43N2MtLjItLjItLjUxLS4yLS43MSAwTDYgMTEuNTNWMTRoMi40N2w1Ljg5LTUuODd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZW1vdmVSb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNGgydjloLTJ6TTQgNGgydjE2SDR6TTExIDRoMnY0aC0yek0xMSAxMGgydjRoLTJ6TTExIDE2aDJ2NGgtMnpNMjIuNSAxNi40MSAyMS4wOSAxNSAxOSAxNy4wOSAxNi45MSAxNWwtMS40MSAxLjQxIDIuMDkgMi4wOS0yLjA5IDIuMDlMMTYuOTEgMjIgMTkgMTkuOTEgMjEuMDkgMjJsMS40MS0xLjQxLTIuMDktMi4wOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlc3RhdXJhbnRNZW51IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04LjEgMTMuMzQgMi44My0yLjgzTDMuOTEgMy41YTQuMDA4IDQuMDA4IDAgMCAwIDAgNS42Nmw0LjE5IDQuMTh6bTYuNzgtMS44MWMxLjUzLjcxIDMuNjguMjEgNS4yNy0xLjM4IDEuOTEtMS45MSAyLjI4LTQuNjUuODEtNi4xMi0xLjQ2LTEuNDYtNC4yLTEuMS02LjEyLjgxLTEuNTkgMS41OS0yLjA5IDMuNzQtMS4zOCA1LjI3TDMuNyAxOS44N2wxLjQxIDEuNDFMMTIgMTQuNDFsNi44OCA2Ljg4IDEuNDEtMS40MUwxMy40MSAxM2wxLjQ3LTEuNDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXN0YXVyYW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA2djhoM3Y4aDJWMmMtMi43NiAwLTUgMi4yNC01IDR6bS01IDNIOVYySDd2N0g1VjJIM3Y3YzAgMi4yMSAxLjc5IDQgNCA0djloMnYtOWMyLjIxIDAgNC0xLjc5IDQtNFYyaC0ydjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb3VuZGFib3V0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjA4IDhBNiA2IDAgMCAxIDE2IDNjMy4zMSAwIDYgMi42OSA2IDYgMCAyLjk3LTIuMTYgNS40NC01IDUuOTJWMjFoLTJ2LTYuMDljMC0uOTguNzEtMS44IDEuNjctMS45N2EzLjk5OSAzLjk5OSAwIDEgMC00LjYxLTQuNjFjLS4xNy45Ni0uOTkgMS42Ny0xLjk3IDEuNjdINS44M2wxLjU5IDEuNTlMNiAxMyAyIDlsNC00IDEuNDEgMS40MUw1LjgzIDhoNC4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvdW5kYWJvdXRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjkyIDhDMTMuNDQgNS4xNiAxMC45NyAzIDggMyA0LjY5IDMgMiA1LjY5IDIgOWMwIDIuOTcgMi4xNiA1LjQ0IDUgNS45MlYyMWgydi02LjA5YzAtLjk4LS43MS0xLjgtMS42Ny0xLjk3YTMuOTk5IDMuOTk5IDAgMSAxIDQuNjEtNC42MWMuMTcuOTYuOTkgMS42NyAxLjk3IDEuNjdoNC4yNmwtMS41OSAxLjU5TDE4IDEzbDQtNC00LTQtMS40MSAxLjQxTDE4LjE3IDhoLTQuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb3V0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE1LjE4VjdjMC0yLjIxLTEuNzktNC00LTRzLTQgMS43OS00IDR2MTBjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yVjguODJDOC4xNiA4LjQgOSA3LjMgOSA2YzAtMS42Ni0xLjM0LTMtMy0zUzMgNC4zNCAzIDZjMCAxLjMuODQgMi40IDIgMi44MlYxN2MwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00VjdjMC0xLjEuOS0yIDItMnMyIC45IDIgMnY4LjE4QTIuOTk2IDIuOTk2IDAgMCAwIDE4IDIxYzEuNjYgMCAzLTEuMzQgMy0zIDAtMS4zLS44NC0yLjQtMi0yLjgyek02IDdjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMTIgMTJjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJ1bkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41NCA4Ljk3Yy0uMjMtLjQ3LS43Ni0uNzEtMS4yNi0uNTNMOSA5LjY1VjEyaDF2LTEuNjVsMS41NC0uNTctLjk2IDQuODktMi43OC0uNTctLjIuOTggMy43Ni43Ny41Mi0yLjY0TDEzIDE0LjQyVjE4aDF2LTMuOTdsLTEuMzItMS40NC40MS0yLjM1QzEzLjk5IDExLjQ2IDE1LjMgMTIgMTYgMTJ2LTFjLS40MSAwLTEuNjMtLjMzLTIuNDYtMi4wM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMy41XCIsXCJjeVwiOlwiN1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2FmZXR5Q2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zem02IDkuMDljMCA0LTIuNTUgNy43LTYgOC44My0zLjQ1LTEuMTMtNi00LjgyLTYtOC44M3YtNC43bDYtMi4yNSA2IDIuMjV2NC43ek0xMiA3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMS42NSA3LjM1TDExLjUgMTIuMlY5aDF2Mi43OWwxLjg1IDEuODUtLjcuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTYWlsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTMuNVYyTDMgMTMuNWg4em0tMi0ySDYuODNMOSA4LjM4djMuMTJ6bTEyIDJDMjEgNi41IDE0LjUgMSAxMi41IDFjMCAwIDEgMyAxIDYuNXMtMSA2LTEgNkgyMXptLTUuNjItOC4yNmMxLjQyIDEuNTIgMi44OCAzLjcyIDMuNDEgNi4yNmgtMy42OGMuMjEtMS4xLjM5LTIuNDYuMzktNCAwLS43OS0uMDUtMS41NS0uMTItMi4yNnpNMjIgMTVIMmE2LjIzMyA2LjIzMyAwIDAgMCAyLjMzIDMuNzNjLjY1LS4yNyAxLjIyLS43MiAxLjY3LTEuMjMuNzMuODQgMS44IDEuNSAzIDEuNXMyLjI3LS42NiAzLTEuNWMuNzMuODQgMS44IDEuNSAzIDEuNXMyLjI2LS42NiAzLTEuNWMuNDUuNTEgMS4wMi45NiAxLjY3IDEuMjMgMS4xNy0uODkgMi4wMi0yLjIgMi4zMy0zLjczem0wIDh2LTJoLTFjLTEuMDQgMC0yLjA4LS4zNS0zLTEtMS44MyAxLjMtNC4xNyAxLjMtNiAwLTEuODMgMS4zLTQuMTcgMS4zLTYgMC0uOTEuNjUtMS45NiAxLTMgMUgydjJoMWMxLjAzIDAgMi4wNS0uMjUgMy0uNzUgMS44OSAxIDQuMTEgMSA2IDAgMS44OSAxIDQuMTEgMSA2IDAgLjk1LjUgMS45Ny43NSAzIC43NWgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2F0ZWxsaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6TTguNTcgNkg2djIuNThjMS40MiAwIDIuNTctMS4xNiAyLjU3LTIuNTh6TTEyIDZoLTEuNzFjMCAyLjM2LTEuOTIgNC4yOS00LjI5IDQuMjlWMTJjMy4zMiAwIDYtMi42OSA2LTZ6bTIuMTQgNS44Ni0zIDMuODdMOSAxMy4xNSA2IDE3aDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NyZWVuUm90YXRpb25BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm00IDcuNTkgNS01Yy43OC0uNzggMi4wNS0uNzggMi44MyAwTDIwLjI0IDExaC0yLjgzTDEwLjQgNCA1LjQxIDlIOHYySDJWNWgydjIuNTl6TTIwIDE5aDJ2LTZoLTZ2MmgyLjU5bC00Ljk5IDUtNy4wMS03SDMuNzZsOC40MSA4LjQxYy43OC43OCAyLjA1Ljc4IDIuODMgMGw1LTVWMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXRNZWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuMDUgMTcuNTYtMTcuOTcuOTRMMyAxN2wxNy45OC0uOTQuMDcgMS41ek0yMSAxOS40OEgzdjEuNWgxOHYtMS41ek0yMyAxM1Y0YzAtMS4xLS45LTItMi0ySDNjLTEuMSAwLTIgLjktMiAydjljMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnptLTIgMEgzVjRoMTh2OXptLTEtN2MtMS42OCAwLTMuMDQuOTgtMy4yMSAyLjIzLS42NC0uNzMtMi43My0yLjczLTYuNTQtMi43My00LjY3IDAtNi43NSAzLTYuNzUgM3MyLjA4IDMgNi43NSAzYzMuODEgMCA1LjktMiA2LjU0LTIuNzNDMTYuOTYgMTAuMDIgMTguMzIgMTEgMjAgMTFWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25wb3N0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTBoNWwzLTMtMy0zaC01VjJoLTJ2Mkg0djZoN3YySDZsLTMgMyAzIDNoNXY0aDJ2LTRoN3YtNmgtN3YtMnpNNiA2aDExLjE3bDEgMS0xIDFINlY2em0xMiAxMEg2LjgzbC0xLTEgMS0xSDE4djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbm93bW9iaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTdjMCAuNTUtLjQ1IDEtMSAxaC0uMTdsLTIuMi0yLjJDMjAuNTggMTUuMzcgMjIgMTQuNCAyMiAxM2MwLTEtOC04LTgtOGgtM3YyaDIuMjVsLjguNzJMMTEgMTAgMiA5bC0yIDQgNC41NCAxLjM2LTMuNDkgMS44OEMtLjc3IDE3LjIyLS4wNyAyMCAyIDIwaDZjMi4yMSAwIDQtMS43OSA0LTRoNGwyIDJoLTN2Mmg2YzEuNjYgMCAzLTEuMzQgMy0zaC0yek04IDE4SDJsNS4yNS0yLjgzTDEwIDE2YTIgMiAwIDAgMS0yIDJ6bTktNGgtNi43bC03LjQ1LTIuMjMuMzEtLjYyIDguNDQuODUgMy45My0yLjk0czMuNzcgMy40NCA0LjI3IDQuMTRjMCAwLTEuMS44LTIuOC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU29zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNSA3aC0zYy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoM2MxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0yem0wIDhoLTNWOWgzdjZ6TTEgMTVoNHYtMkgzYy0xLjEgMC0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJoNHYySDN2MmgyYzEuMSAwIDIgLjkgMiAydjJjMCAxLjEtLjkgMi0yIDJIMXYtMnptMTYgMGg0di0yaC0yYy0xLjEgMC0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJoNHYyaC00djJoMmMxLjEgMCAyIC45IDIgMnYyYzAgMS4xLS45IDItMiAyaC00di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU291cEtpdGNoZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjQgN2MtLjM0LjU1LS40Ljk3LS40IDEuMzhDNiA5LjE1IDcgMTEgNyAxMmMwIC45NS0uNCAxLjUtLjQgMS41SDUuMXMuNC0uNTUuNC0xLjVjMC0xLTEtMi44NS0xLTMuNjIgMC0uNDEuMDYtLjgzLjQtMS4zOGgxLjV6bTUgMGMtLjM0LjU1LS40Ljk3LS40IDEuMzggMCAuNzcgMSAyLjYyIDEgMy42MiAwIC45NS0uNCAxLjUtLjQgMS41aDEuNXMuNC0uNTUuNC0xLjVjMC0xLTEtMi44NS0xLTMuNjIgMC0uNDEuMDYtLjgzLjQtMS4zOGgtMS41ek04LjE1IDdjLS4zNC41NS0uNC45Ny0uNCAxLjM4IDAgLjc3IDEgMi42MyAxIDMuNjIgMCAuOTUtLjQgMS41LS40IDEuNWgxLjVzLjQtLjU1LjQtMS41YzAtMS0xLTIuODUtMS0zLjYyIDAtLjQxLjA2LS44My40LTEuMzhoLTEuNXpNMTguNiAyYy0xLjU0IDAtMi44MSAxLjE2LTIuOTggMi42NUwxNC41MyAxNUg0LjAxYy0uNiAwLTEuMDkuNTMtMSAxLjEzQzMuNTMgMTkuNDYgNi4zOSAyMiA5Ljc1IDIyYzMuNDggMCA2LjM0LTIuNzMgNi43MS02LjIzTDE3LjYxIDQuOWMuMDUtLjUxLjQ3LS45Ljk5LS45LjU1IDAgMSAuNDUgMSAxIDAgLjMtLjEgMS4yNS0uMSAxLjI1bDEuOTcuMjVzLjEzLTEuMDYuMTMtMS41YzAtMS42NS0xLjM1LTMtMy0zek05Ljc1IDIwYy0xLjk0IDAtMy42Ny0xLjIzLTQuNDMtM2g4Ljc5Yy0uNzIgMS43OC0yLjQyIDMtNC4zNiAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RhZGl1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgNSAzIDdWM2w0IDJ6bTExLTJ2NGw0LTItNC0yem0tNy0xdjRsNC0yLTQtMnptMiAxNmgtMnY0Yy01LjA1LS4xNS05LTEuNDQtOS0zdi05YzAtMS42NiA0LjQ4LTMgMTAtM3MxMCAxLjM0IDEwIDN2OWMwIDEuNTYtMy45NSAyLjg1LTkgM3YtNHptLTgtNy45NmMxLjM4LjQ5IDMuNzcuOTYgNyAuOTZzNS42Mi0uNDcgNy0uOTZDMTkgOS44NiAxNi4yMiA5IDEyIDlzLTcgLjg2LTcgMS4wNHptMTUgMS43NmMtMS44Mi43My00LjczIDEuMi04IDEuMnMtNi4xOC0uNDctOC0xLjJ2Ni43OGMuNjEuNDEgMi4zNiAxLjAxIDUgMS4yOFYxNmg2djMuODZjMi42NC0uMjcgNC4zOS0uODcgNS0xLjI4VjExLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdG9yZU1hbGxEaXJlY3RvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4LjM2IDkgLjYgM0g1LjA0bC42LTNoMTIuNzJNMjAgNEg0djJoMTZWNHptMCAzSDRsLTEgNXYyaDF2NmgxMHYtNmg0djZoMnYtNmgxdi0ybC0xLTV6TTYgMTh2LTRoNnY0SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdHJhaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDYuODMgOS40MSA4LjQxIDggN2w0LTQgNCA0LTEuNDEgMS40MUwxMyA2LjgzVjIxaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RyZWV0dmlldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNTYgMTQuMzNjLS4zNC4yNy0uNTYuNy0uNTYgMS4xN1YyMWg3YzEuMSAwIDItLjkgMi0ydi01Ljk4Yy0uOTQtLjMzLTEuOTUtLjUyLTMtLjUyLTIuMDMgMC0zLjkzLjctNS40NCAxLjgzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDZjMC0xLjA4LjI3LTIuMS43NC0zSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgLjU1LjIzIDEuMDUuNTkgMS40MWw5LjgyLTkuODJBNi40MzUgNi40MzUgMCAwIDEgMTEuNSA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3Vid2F5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy44IDIuOEMxNiAyLjA5IDEzLjg2IDIgMTIgMnMtNCAuMDktNS44LjhDMy41MyAzLjg0IDIgNi4wNSAyIDguODZWMjJoMjBWOC44NmMwLTIuODEtMS41My01LjAyLTQuMi02LjA2ek05LjE3IDIwbDEuNS0xLjVoMi42NmwxLjUgMS41SDkuMTd6bS0yLjE2LTZWOWgxMHY1aC0xMHptOS40OSAyYzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xIC40NS0xIDEtMSAxIC40NSAxIDF6bS04LTFjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXpNMjAgMjBoLTMuNXYtLjM4bC0xLjE1LTEuMTZBMi45NzkgMi45NzkgMCAwIDAgMTggMTUuNVY5YzAtMi42My0zLTMtNi0zcy02IC4zNy02IDN2Ni41YzAgMS41NCAxLjE2IDIuNzkgMi42NSAyLjk2TDcuNSAxOS42MlYyMEg0VjguODZjMC0yIDEuMDEtMy40NSAyLjkzLTQuMkM4LjQxIDQuMDggMTAuMzIgNCAxMiA0czMuNTkuMDggNS4wNy42NmMxLjkyLjc1IDIuOTMgMi4yIDIuOTMgNC4yVjIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3luYWdvZ3VlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNGMtMS42NiAwLTMgMS4zNC0zIDN2LjI5TDEyIDMgNyA3LjI5VjdjMC0xLjY2LTEuMzQtMy0zLTNTMSA1LjM0IDEgN3YxNGgxMHYtNWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NWgxMFY3YzAtMS42Ni0xLjM0LTMtMy0zem0wIDJjLjU1IDAgMSAuNDUgMSAxdjFoLTJWN2MwLS41NS40NS0xIDEtMXpNNCA2Yy41NSAwIDEgLjQ1IDEgMXYxSDNWN2MwLS41NS40NS0xIDEtMXpNMyAxOXYtOWgydjlIM3ptMTQgMGgtMnYtM2MwLTEuNjUtMS4zNS0zLTMtM3MtMyAxLjM1LTMgM3YzSDdWOS45Mmw1LTQuMjkgNSA0LjI5VjE5em0yIDB2LTloMnY5aC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGFrZW91dERpbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTcuNzkgMTgtLjUxLTdoOS40NmwtLjUxIDdINy43OXpNOS44MyA1aDQuMzNsMi44IDIuNzNMMTYuODcgOUg3LjEybC0uMDktMS4yN0w5LjgzIDV6TTIyIDcuNDZsLTEuNDEtMS40MUwxOSA3LjYzbC4wMy0uNTZMMTQuOTggM0g5LjAyTDQuOTcgNy4wN2wuMDMuNS0xLjU5LTEuNTZMMiA3LjQ0bDMuMjMgMy4xMS43IDkuNDVoMTIuMTRsLjctOS40NEwyMiA3LjQ2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGF4aUFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2LjVcIixcImN5XCI6XCIxNS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNS41XCIsXCJjeVwiOlwiMTUuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEzdjVINHYtNWgxNGMtMS45MSAwLTMuNjMtLjc2LTQuODktMmgtOC4zbDEuMDQtM2g1LjQ0QzExLjEgNy4zNyAxMSA2LjcgMTEgNnMuMS0xLjM3LjI5LTJIOHYySDUuNWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMiAxM3Y4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThsLS4wOS0uMjdjLS42MS4xNy0xLjI1LjI3LTEuOTEuMjd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDFjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0uNSA4aC0xVjhoMXYxem0wLTJoLTFWM2gxdjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUZW1wbGVCdWRkaGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDkuMDJjMCAxLjA5LS44OSAxLjk4LTEuOTggMS45OEgxOFY4Ljg2YzEuNzItLjQ0IDMtMS45OSAzLTMuODRWNWwtMiAuMDJDMTkgNi4xMSAxOC4xMSA3IDE3LjAyIDdoLS41MkwxMiAxIDcuNSA3aC0uNTJDNS44OSA3IDUgNi4xMSA1IDUuMDJIM2MwIDEuODYgMS4yOCAzLjQgMyAzLjg0VjExSDQuOThDMy44OSAxMSAzIDEwLjExIDMgOS4wMkgxYzAgMS44NiAxLjI4IDMuNCAzIDMuODRWMjJoN3YtNGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NGg3di05LjE0YzEuNzItLjQ0IDMtMS45OSAzLTMuODRWOWwtMiAuMDJ6bS05LTQuNjlMMTQgN2gtNGwyLTIuNjd6TTggOWg4djJIOFY5em0xMCAxMWgtM3YtMmMwLTEuNjUtMS4zNS0zLTMtM3MtMyAxLjM1LTMgM3YySDZ2LTdoMTJ2N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRlbXBsZUhpbmR1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTF2MmgtMkwxNSAzVjFoLTJ2MmgtMi4wM1YxaC0ydjIuMTJMNiAxM0g0di0ySDJ2MTFoOXYtNWgydjVoOVYxMWgtMnptLTQuNjkgMEg4LjY5bC42LTJoNS40MmwuNiAyem0tMS4yLTRIOS44OWwuNi0yaDMuMDJsLjYgMnpNMjAgMjBoLTV2LTVIOXY1SDR2LTVoMy40OWwuNi0yaDcuODJsLjYgMkgyMHY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGVycmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQgNi00LjIyIDUuNjMgMS4yNSAxLjY3TDE0IDkuMzMgMTkgMTZoLTguNDZsLTQuMDEtNS4zN0wxIDE4aDIyTDE0IDZ6TTUgMTZsMS41Mi0yLjAzTDguMDQgMTZINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRoZWF0ZXJDb21lZHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE5XCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuOTkgOWMtMS4zOCAwLTIuNS44NC0yLjUgMS44OGg1YzAtMS4wNC0xLjEyLTEuODgtMi41LTEuODh6TTEgMTZjMCAzLjMxIDIuNjkgNiA2IDZzNi0yLjY5IDYtNlY5SDF2N3ptMi01aDh2NWMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNHYtNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMnY1LjVoMlY0aDh2NWMwIDIuMjEtMS43OSA0LTQgNC0uOTUgMC0xLjgxLS4zNS0yLjUtLjl2Mi4zNWMuNzYuMzUgMS42MS41NSAyLjUuNTUgMy4zMSAwIDYtMi42OSA2LTZWMkgxMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI1XCIsXCJjeVwiOlwiMTMuNVwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxMy41XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTcuODhjMS4zOCAwIDIuNS0uODQgMi41LTEuODhoLTVjMCAxLjA0IDEuMTIgMS44OCAyLjUgMS44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRpcmVSZXBhaXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA4YTEuMDAzIDEuMDAzIDAgMCAxLS43MS0xLjcxYy40LS40IDIuNDYtMS4wNCAyLjQ2LTEuMDRzLS42NCAyLjA2LTEuMDQgMi40NmMtLjE4LjE4LS40My4yOS0uNzEuMjl6bTEgNXY1YzAgMS42NS0xLjM1IDMtMyAzcy0zLTEuMzUtMy0zdi0yYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjNjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWNWMwLTEuMS45LTIgMi0yaDZjMS4xIDAgMiAuOSAyIDJ2OC4xN0EzLjAwOSAzLjAwOSAwIDAgMSAxNiAxNnYyYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMXYtNWgtMXYtMS40MmMtMS43Ny0uNzctMy0yLjUzLTMtNC41OCAwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMi4wNS0xLjIzIDMuODEtMyA0LjU4VjEzaC0xem0yLTZjMC0xLjY2LTEuMzQtMy0zLTNzLTMgMS4zNC0zIDMgMS4zNCAzIDMgMyAzLTEuMzQgMy0zek0xMCA3IDggOVY2LjE3TDkuMTcgNUg0LjgzTDYgNi4xN1Y5TDQgN3YyLjE3bDIgMlYxNGwtMi0ydjIuMTdsMiAyVjE5bC0yLTJ2Mmg2di0ybC0yIDJ2LTIuODNsMi0yVjEybC0yIDJ2LTIuODNsMi0yVjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmFmZmljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMGgtM1Y4Ljg2YzEuNzItLjQ1IDMtMiAzLTMuODZoLTNWNGMwLS41NS0uNDUtMS0xLTFIOGMtLjU1IDAtMSAuNDUtMSAxdjFINGMwIDEuODYgMS4yOCAzLjQxIDMgMy44NlYxMEg0YzAgMS44NiAxLjI4IDMuNDEgMyAzLjg2VjE1SDRjMCAxLjg2IDEuMjggMy40MSAzIDMuODZWMjBjMCAuNTUuNDUgMSAxIDFoOGMuNTUgMCAxLS40NSAxLTF2LTEuMTRjMS43Mi0uNDUgMy0yIDMtMy44NmgtM3YtMS4xNGMxLjcyLS40NSAzLTIgMy0zLjg2em0tNSA5SDlWNWg2djE0em0tMy0xYy44MyAwIDEuNS0uNjcgMS41LTEuNVMxMi44MyAxNSAxMiAxNXMtMS41LjY3LTEuNSAxLjUuNjcgMS41IDEuNSAxLjV6bTAtNC41Yy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41LTEuNS42Ny0xLjUgMS41LjY3IDEuNSAxLjUgMS41ek0xMiA5Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxMi44MyA2IDEyIDZzLTEuNS42Ny0xLjUgMS41UzExLjE3IDkgMTIgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjAuNXYuNWgybDItMmg0bDIgMmgydi0uNUwxNi41IDE5YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41VjZjMC0zLjUtNC00LTgtNHptMCAyYzMuNTEgMCA0Ljk2LjQ4IDUuNTcgMUg2LjQzYy42MS0uNTIgMi4wNi0xIDUuNTctMXpNNiA3aDV2M0g2Vjd6bTEyIDguNWMwIC44My0uNjcgMS41LTEuNSAxLjVoLTljLS44MyAwLTEuNS0uNjctMS41LTEuNVYxMmgxMnYzLjV6bTAtNS41aC01VjdoNXYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHJhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgNSAuNzUtMS41SDE3VjJIN3YxLjVoNC43NUwxMSA1Yy0zLjEzLjA5LTYgLjczLTYgMy41VjE3YzAgMS41IDEuMTEgMi43MyAyLjU1IDIuOTVMNiAyMS41di41aDJsMi0yaDRsMiAyaDJ2LS41bC0xLjU1LTEuNTVoLS4wMS4wMUMxNy44OSAxOS43MyAxOSAxOC41IDE5IDE3VjguNWMwLTIuNzctMi44Ny0zLjQxLTYtMy41em0tMS45NyAyaDEuOTRjMi43NS4wOCAzLjYyLjU4IDMuOSAxSDcuMTNjLjI4LS40MiAxLjE1LS45MiAzLjktMXptLS4xOCAxMC45NUg3Ljc0QS45NzQuOTc0IDAgMCAxIDcgMTd2LTFoMy44OWMtLjI0LjI3LS4zOS42MS0uMzkgMSAwIC4zNi4xMy42OS4zNS45NXpNMTcgMTdjMCAuNDUtLjMuODQtLjc0Ljk1aC0zLjExYy4yMi0uMjYuMzUtLjU5LjM1LS45NSAwLS4zOS0uMTUtLjczLS4zOS0xSDE3djF6bTAtM0g3di00aDEwdjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmFuc2ZlcldpdGhpbkFTdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi40OSAxNS41di0xLjc1TDE0IDE2LjI1bDIuNDkgMi41VjE3SDIydi0xLjVoLTUuNTF6bTMuMDIgNC4yNUgxNHYxLjVoNS41MVYyM0wyMiAyMC41IDE5LjUxIDE4djEuNzV6TTkuNSA1LjVjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyek01Ljc1IDguOSAzIDIzaDIuMWwxLjc1LThMOSAxN3Y2aDJ2LTcuNTVMOC45NSAxMy40bC42LTNDMTAuODUgMTIgMTIuOCAxMyAxNSAxM3YtMmMtMS44NSAwLTMuNDUtMS00LjM1LTIuNDVsLS45NS0xLjZDOS4zNSA2LjM1IDguNyA2IDggNmMtLjI1IDAtLjUuMDUtLjc1LjE1TDIgOC4zVjEzaDJWOS42NWwxLjc1LS43NVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHJhbnNpdEVudGVyZXhpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMThINlY4aDN2NC43N0wxNS45OCA2IDE4IDguMDMgMTEuMTUgMTVIMTZ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyaXBPcmlnaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTJDMiA2LjQ4IDYuNDggMiAxMiAyczEwIDQuNDggMTAgMTAtNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJ6bTEwIDZjMy4zMSAwIDYtMi42OSA2LTZzLTIuNjktNi02LTYtNiAyLjY5LTYgNiAyLjY5IDYgNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHVybkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02LjgzIDExIDEuNTkgMS41OUw3IDE0bC00LTQgNC00IDEuNDEgMS40MUw2LjgzIDlIMTVjMS4xIDAgMiAuOSAyIDJ2OWgtMnYtOUg2LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHVyblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMTcgMTEtMS41OSAxLjU5TDE3IDE0bDQtNC00LTQtMS40MSAxLjQxTDE3LjE3IDlIOWMtMS4xIDAtMiAuOS0yIDJ2OWgydi05aDguMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUdXJuU2hhcnBMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA2LjgzIDQuNDEgOC40MSAzIDdsNC00IDQgNC0xLjQxIDEuNDFMOCA2LjgzVjEzaDhjMS4xIDAgMiAuOSAyIDJ2NmgtMnYtNkg4Yy0xLjEgMC0yLS45LTItMlY2LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHVyblNoYXJwUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCA2LjgzIDEuNTkgMS41OUwyMSA3bC00LTQtNCA0IDEuNDEgMS40MUwxNiA2LjgzVjEzSDhjLTEuMSAwLTIgLjktMiAydjZoMnYtNmg4YzEuMSAwIDItLjkgMi0yVjYuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUdXJuU2xpZ2h0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjY2IDZWNEg2djUuNjZoMlY3LjQxbDUgNVYyMGgydi03LjU4YzAtLjUzLS4yMS0xLjA0LS41OS0xLjQxbC01LTVoMi4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVR1cm5TbGlnaHRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjM0IDZWNEgxOHY1LjY2aC0yVjcuNDFsLTUgNVYyMEg5di03LjU4YzAtLjUzLjIxLTEuMDQuNTktMS40MWw1LTVoLTIuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUd29XaGVlbGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC4xNyAxMUg0aC4xN205LjI0LTZIOXYyaDMuNTlsMiAySDExbC00IDItMi0ySDB2Mmg0Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRsMiAyaDNsMy40OS02LjEgMS4wMSAxLjAxYy0uOTEuNzMtMS41IDEuODQtMS41IDMuMDkgMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNC0xLjc5LTQtNC00Yy0uMTggMC0uMzYuMDMtLjUzLjA1TDE3LjQxIDlIMjBWNmwtMy43MiAxLjg2TDEzLjQxIDV6TTIwIDE3Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpNNCAxN2MtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVVHVybkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5djEyaC0yVjljMC0yLjIxLTEuNzktNC00LTRTOCA2Ljc5IDggOXY0LjE3bDEuNTktMS41OUwxMSAxM2wtNCA0LTQtNCAxLjQxLTEuNDFMNiAxMy4xN1Y5YzAtMy4zMSAyLjY5LTYgNi02czYgMi42OSA2IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVVHVyblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA5djEyaDJWOWMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0djQuMTdsLTEuNTktMS41OUwxMyAxM2w0IDQgNC00LTEuNDEtMS40MUwxOCAxMy4xN1Y5YzAtMy4zMS0yLjY5LTYtNi02UzYgNS42OSA2IDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWb2x1bnRlZXJBY3RpdmlzbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDEzYzMuMDktMi44MSA2LTUuNDQgNi03LjdDMjIgMy40NSAyMC41NSAyIDE4LjcgMmMtMS4wNCAwLTIuMDUuNDktMi43IDEuMjVDMTUuMzQgMi40OSAxNC4zNCAyIDEzLjMgMiAxMS40NSAyIDEwIDMuNDUgMTAgNS4zYzAgMi4yNiAyLjkxIDQuODkgNiA3Ljd6bS0yLjctOWMuNDQgMCAuODkuMjEgMS4xOC41NUwxNiA2LjM0bDEuNTItMS43OWMuMjktLjM0Ljc0LS41NSAxLjE4LS41NS43NCAwIDEuMy41NiAxLjMgMS4zIDAgMS4xMi0yLjA0IDMuMTctNCA0Ljk5LTEuOTYtMS44Mi00LTMuODgtNC00Ljk5IDAtLjc0LjU2LTEuMyAxLjMtMS4zek0xOSAxNmgtMmMwLTEuMi0uNzUtMi4yOC0xLjg3LTIuN0w4Ljk3IDExSDF2MTFoNnYtMS40NGw3IDEuOTQgOC0yLjV2LTFjMC0xLjY2LTEuMzQtMy0zLTN6TTMgMjB2LTdoMnY3SDN6bTEwLjk3LjQxTDcgMTguNDhWMTNoMS42MWw1LjgyIDIuMTdjLjM0LjEzLjU3LjQ2LjU3LjgzIDAgMC0xLjk5LS4wNS0yLjMtLjE1bC0yLjM4LS43OS0uNjMgMS45IDIuMzguNzljLjUxLjE3IDEuMDQuMjYgMS41OC4yNkgxOWMuMzkgMCAuNzQuMjMuOS41NmwtNS45MyAxLjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2FyZWhvdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOC4zNVYxOWgtMnYtOEg2djhINFY4LjM1bDgtMy4yIDggMy4yek0yMiAyMVY3TDEyIDMgMiA3djE0aDZ2LThoOHY4aDZ6bS0xMS0ySDl2Mmgydi0yem0yLTNoLTJ2Mmgydi0yem0yIDNoLTJ2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2luZUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgM3Y2YzAgMi45NyAyLjE2IDUuNDMgNSA1LjkxVjE5SDh2Mmg4di0yaC0zdi00LjA5YzIuODQtLjQ4IDUtMi45NCA1LTUuOTFWM0g2em02IDEwYy0xLjg2IDAtMy40MS0xLjI4LTMuODYtM2g3LjcyYy0uNDUgMS43Mi0yIDMtMy44NiAzem00LTVIOFY1aDh2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdyb25nTG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMXYuMmMwIDIuMzQtMS45NSA1LjQ0LTYgOS4xNC00LjA1LTMuNy02LTYuNzktNi05LjE0QzYgNy41NyA4LjY1IDUgMTIgNWMuMzQgMCAuNjguMDMgMSAuMDhWMy4wNmMtLjMzLS4wNC0uNjYtLjA2LTEtLjA2LTQuMiAwLTggMy4yMi04IDguMiAwIDMuMzIgMi42NyA3LjI1IDggMTEuOCA1LjMzLTQuNTUgOC04LjQ4IDgtMTEuOFYxMWgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjExXCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjU0IDIuODgtMS40Mi0xLjQyTDE5IDMuNTlsLTIuMTItMi4xMy0xLjQyIDEuNDJMMTcuNTkgNWwtMi4xMyAyLjEyIDEuNDIgMS40MkwxOSA2LjQxbDIuMTIgMi4xMyAxLjQyLTEuNDJMMjAuNDEgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVpvb21Jbk1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgOVYzSDd2Mi41OUwzLjkxIDIuNSAyLjUgMy45MSA1LjU5IDdIM3YyaDZ6bTEyIDBWN2gtMi41OWwzLjA5LTMuMDktMS40MS0xLjQxTDE3IDUuNTlWM2gtMnY2aDZ6TTMgMTV2MmgyLjU5TDIuNSAyMC4wOWwxLjQxIDEuNDFMNyAxOC40MVYyMWgydi02SDN6bTEyIDB2Nmgydi0yLjU5bDMuMDkgMy4wOSAxLjQxLTEuNDFMMTguNDEgMTdIMjF2LTJoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVab29tT3V0TWFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNSAzIDIuMyAyLjMtMi44OSAyLjg3IDEuNDIgMS40MkwxOC43IDYuNyAyMSA5VjNoLTZ6TTMgOWwyLjMtMi4zIDIuODcgMi44OSAxLjQyLTEuNDJMNi43IDUuMyA5IDNIM3Y2em02IDEyLTIuMy0yLjMgMi44OS0yLjg3LTEuNDItMS40Mkw1LjMgMTcuMyAzIDE1djZoNnptMTItNi0yLjMgMi4zLTIuODctMi44OS0xLjQyIDEuNDIgMi44OSAyLjg3TDE1IDIxaDZ2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRIb21lV29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE0SDV2NUgzdi02Ljk3bDUtMy41NyA1IDMuNTd2MS4wOGMuNTctLjU5IDEuMjUtMS4wNyAyLTEuNDJWMTFMOCA2bC03IDV2MTBoNnYtNWgydjVoMi42OGMtLjQzLS45MS0uNjgtMS45Mi0uNjgtM3YtNHpNMTcgN2gydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDEzLjExVjNIMTB2MS45N2wyIDEuNDNWNWg5djYuNjhjLjc1LjM2IDEuNDMuODQgMiAxLjQzek0yMyAxOGMwLTIuNzYtMi4yNC01LTUtNXMtNSAyLjI0LTUgNSAyLjI0IDUgNSA1IDUtMi4yNCA1LTV6bS01LjUgM3YtMi41SDE1di0xaDIuNVYxNWgxdjIuNUgyMXYxaC0yLjVWMjFoLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcHBTZXR0aW5nc0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTcgMjBoMTB2MUg3ek03IDNoMTB2MUg3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS44MSAxMi43NC0uODItLjYzdi0uMjJsLjgtLjYzYy4xNi0uMTIuMi0uMzQuMS0uNTFsLS44NS0xLjQ4YS4zOTUuMzk1IDAgMCAwLS4zNS0uMmMtLjA1IDAtLjEuMDEtLjE1LjAzbC0uOTUuMzhjLS4wOC0uMDUtLjExLS4wNy0uMTktLjExbC0uMTUtMS4wMWEuNDA4LjQwOCAwIDAgMC0uNC0uMzZoLTEuNzFjLS4yIDAtLjM3LjE1LS40LjM0bC0uMTQgMS4wMWMtLjAzLjAyLS4wNy4wMy0uMS4wNWwtLjA5LjA2LS45NS0uMzhhLjQwMS40MDEgMCAwIDAtLjUuMTdsLS44NSAxLjQ4Yy0uMS4xNy0uMDYuMzkuMS41MWwuOC42M3YuMjNsLS44LjYzYS4zOS4zOSAwIDAgMC0uMS41MWwuODUgMS40OGMuMDcuMTMuMjEuMi4zNS4yLjA1IDAgLjEtLjAxLjE1LS4wM2wuOTUtLjM3Yy4wOC4wNS4xMi4wNy4yLjExbC4xNSAxLjAxYy4wMy4yLjIuMzQuNC4zNGgxLjcxYy4yIDAgLjM3LS4xNS40LS4zNGwuMTUtMS4wMWMuMDMtLjAyLjA3LS4wMy4xLS4wNWwuMDktLjA2Ljk1LjM4YS40MDEuNDAxIDAgMCAwIC41LS4xN2wuODUtMS40OGEuMzkuMzkgMCAwIDAtLjEtLjUxek0xOCAxMy41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNMTcgMThIN1Y2aDEwdjFoMlYzYzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJ2LTRoLTJ2MXpNNyAzaDEwdjFIN1Yzem0xMCAxOEg3di0xaDEwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcHBzT3V0YWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA4aDRWNEg0djR6bTYgMTJoNHYtNGgtNHY0em0tNiAwaDR2LTRINHY0em0wLTZoNHYtNEg0djR6bTYgMGg0di00aC00djR6bTYgNmg0di00aC00djR6bTMtMjBjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0uNSA4aC0xVjdoMXYxem0wLTJoLTFWMmgxdjR6TTE2IDE0aDR2LTIuMDdjLS4zMy4wNS0uNjYuMDctMSAuMDctMS4wNyAwLTIuMDktLjI0LTMtLjY4VjE0ek0xMCA0djRoMi42OGMtLjQ0LS45MS0uNjgtMS45My0uNjgtMyAwLS4zNC4wMi0uNjcuMDctMUgxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFwcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgOGg0VjRINHY0em02IDEyaDR2LTRoLTR2NHptLTYgMGg0di00SDR2NHptMC02aDR2LTRINHY0em02IDBoNHYtNGgtNHY0em02LTEwdjRoNFY0aC00em0tNiA0aDRWNGgtNHY0em02IDZoNHYtNGgtNHY0em0wIDZoNHYtNGgtNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dCYWNrSW9zTmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNzcgMy43NyAxNiAyIDYgMTJsMTAgMTAgMS43Ny0xLjc3TDkuNTQgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd0JhY2tJb3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNTEgMy44NyAxNS43MyAyLjEgNS44NCAxMmw5LjkgOS45IDEuNzctMS43N0w5LjM4IDEybDguMTMtOC4xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFycm93QmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTFINy44M2w1LjU5LTUuNTlMMTIgNGwtOCA4IDggOCAxLjQxLTEuNDFMNy44MyAxM0gyMHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFycm93RG93bndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwIDEyLTEuNDEtMS40MUwxMyAxNi4xN1Y0aC0ydjEyLjE3bC01LjU4LTUuNTlMNCAxMmw4IDggOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dEcm9wRG93bkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LThtMC0yQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDEzLTQtNGg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dEcm9wRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNyAxMCA1IDUgNS01SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd0Ryb3BVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNyAxNCA1LTUgNSA1SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd0ZvcndhcmRJb3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMjMgMjAuMjMgOCAyMmwxMC0xMEw4IDIgNi4yMyAzLjc3IDE0LjQ2IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dGb3J3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiA0LTEuNDEgMS40MUwxNi4xNyAxMUg0djJoMTIuMTdsLTUuNTggNS41OUwxMiAyMGw4LTgtOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAwdjI0SDBWMGgyNHpcIixcIm9wYWNpdHlcIjpcIi44N1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA3LTUgNSA1IDVWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDE3IDUtNS01LTV2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd1Vwd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNCAxMiAxLjQxIDEuNDFMMTEgNy44M1YyMGgyVjcuODNsNS41OCA1LjU5TDIwIDEybC04LTgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXNzaXN0YW50RGlyZWN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxQzUuOSAxIDEgNS45IDEgMTJzNC45IDExIDExIDExIDExLTQuOSAxMS0xMVMxOC4xIDEgMTIgMXptMCAyMGMtNC45OSAwLTktNC4wMS05LTlzNC4wMS05IDktOSA5IDQuMDEgOSA5LTQuMDEgOS05IDl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjczIDExLjQyIDEyLjU0IDQuMmMtLjM2LS4yNy0uOC0uMjctMS4xNSAwTDQuMiAxMS40MmMtLjI3LjM2LS4yNy44IDAgMS4xNmw3LjE5IDcuMjJjLjM2LjI3LjguMjcgMS4xNSAwbDcuMTktNy4yMmMuMzYtLjM2LjM2LS44OSAwLTEuMTZ6TTEzLjUgMTQuNWwtMS40MS0xLjQxTDEzLjE3IDEySDEwdjNIOHYtNGMwLS42LjQtMSAxLTFoNC4xN2wtMS4wOS0xLjA5TDEzLjUgNy41IDE3IDExbC0zLjUgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FtcGFpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMXYyaDR2LTJoLTR6TTE2IDE3LjYxYy45Ni43MSAyLjIxIDEuNjUgMy4yIDIuMzkuNC0uNTMuOC0xLjA3IDEuMi0xLjYtLjk5LS43NC0yLjI0LTEuNjgtMy4yLTIuNC0uNC41NC0uOCAxLjA4LTEuMiAxLjYxek0yMC40IDUuNmMtLjQtLjUzLS44LTEuMDctMS4yLTEuNi0uOTkuNzQtMi4yNCAxLjY4LTMuMiAyLjQuNC41My44IDEuMDcgMS4yIDEuNi45Ni0uNzIgMi4yMS0xLjY1IDMuMi0yLjR6TTQgOWMtMS4xIDAtMiAuOS0yIDJ2MmMwIDEuMS45IDIgMiAyaDF2NGgydi00aDFsNSAzVjZMOCA5SDR6bTUuMDMgMS43MUwxMSA5LjUzdjQuOTRsLTEuOTctMS4xOC0uNDgtLjI5SDR2LTJoNC41NWwuNDgtLjI5ek0xNS41IDEyYzAtMS4zMy0uNTgtMi41My0xLjUtMy4zNXY2LjY5Yy45Mi0uODEgMS41LTIuMDEgMS41LTMuMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW5jZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTMuNTktMTNMMTIgMTAuNTkgOC40MSA3IDcgOC40MSAxMC41OSAxMiA3IDE1LjU5IDguNDEgMTcgMTIgMTMuNDEgMTUuNTkgMTcgMTcgMTUuNTkgMTMuNDEgMTIgMTcgOC40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE2LjE3IDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MUw5IDE2LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hldnJvbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjQxIDcuNDEgMTQgNmwtNiA2IDYgNiAxLjQxLTEuNDFMMTAuODMgMTJsNC41OC00LjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hldnJvblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA2IDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNi02LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbG9zZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNi40MSAxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyIDE5IDYuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb3VibGVBcnJvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgNUgxMWw1IDctNSA3aDQuNWw1LTd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSA1SDRsNSA3LTUgN2g0LjVsNS03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWFzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1IDUtMS40MSAxLjQxTDE4LjE3IDExSDJ2MmgxNi4xN2wtNC41OSA0LjU5TDE1IDE5bDctNy03LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHBhbmRDaXJjbGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuMDggOS41OSAxMiAxMi42NyA4LjkyIDkuNTkgNy41IDExbDQuNSA0LjUgNC41LTQuNS0xLjQyLTEuNDF6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXhwYW5kTGVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgOC02IDYgMS40MSAxLjQxTDEyIDEwLjgzbDQuNTkgNC41OEwxOCAxNGwtNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXhwYW5kTW9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMjRIMFYwaDI0djI0elwiLFwib3BhY2l0eVwiOlwiLjg3XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjU5IDguNTkgMTIgMTMuMTcgNy40MSA4LjU5IDYgMTBsNiA2IDYtNi0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaXJzdFBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDB2MjRIMFYwaDI0elwiLFwib3BhY2l0eVwiOlwiLjg3XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjQxIDE2LjU5IDEzLjgyIDEybDQuNTktNC41OUwxNyA2bC02IDYgNiA2IDEuNDEtMS40MXpNNiA2aDJ2MTJINlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRnVsbHNjcmVlbkV4aXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTZoM3YzaDJ2LTVINXYyem0zLThINXYyaDVWNUg4djN6bTYgMTFoMnYtM2gzdi0yaC01djV6bTItMTFWNWgtMnY1aDVWOGgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZ1bGxzY3JlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTRINXY1aDV2LTJIN3YtM3ptLTItNGgyVjdoM1Y1SDV2NXptMTIgN2gtM3YyaDV2LTVoLTJ2M3pNMTQgNXYyaDN2M2gyVjVoLTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb21lV29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMTF2MTBoNnYtNWgydjVoNlYxMUw4IDZsLTcgNXptMTIgOGgtMnYtNUg1djVIM3YtNi45N2w1LTMuNTcgNSAzLjU3VjE5ek0xNyA3aDJ2MmgtMnpNMTcgMTFoMnYyaC0yek0xNyAxNWgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDN2MS45N2wyIDEuNDNWNWg5djE0aC00djJoNlYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGFzdFBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41OSA3LjQxIDEwLjE4IDEybC00LjU5IDQuNTlMNyAxOGw2LTYtNi02LTEuNDEgMS40MXpNMTYgNmgydjEyaC0yVjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMZWdlbmRUb2dnbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNUg0di0yaDE2djJ6bTAgMkg0djJoMTZ2LTJ6bS01LTYgNS0zLjU1VjVsLTUgMy41NUwxMCA1IDQgOC42NlYxMWw1LjkyLTMuNjFMMTUgMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYXBzSG9tZVdvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDdoMnYyaC0yek0xNyAxMWgydjJoLTJ6TTE3IDE1aDJ2MmgtMnpNMSAxMXYxMGg2di01aDJ2NWg2VjExTDggNmwtNyA1em0xMiA4aC0ydi01SDV2NUgzdi03bDUtMy41IDUgMy41djd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDN2MS45N2wyIDEuNDNWNWg5djE0aC00djJoNlYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVudU9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMThoMTN2LTJIM3Yyem0wLTVoMTB2LTJIM3Yyem0wLTd2MmgxM1Y2SDN6bTE4IDkuNTlMMTcuNDIgMTIgMjEgOC40MSAxOS41OSA3bC01IDUgNSA1TDIxIDE1LjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVudSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxOGgxOHYtMkgzdjJ6bTAtNWgxOHYtMkgzdjJ6bTAtN3YyaDE4VjZIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vcmVIb3JpeiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTEyIDBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0tNiAwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vcmVWZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMCAyYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMCA2Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vcnRoRWFzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNXYyaDYuNTlMNCAxOC41OSA1LjQxIDIwIDE3IDguNDFWMTVoMlY1SDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3J0aFdlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE1aDJWOC40MUwxOC41OSAyMCAyMCAxOC41OSA4LjQxIDdIMTVWNUg1djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9ydGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm01IDkgMS40MSAxLjQxTDExIDUuODNWMjJoMlY1LjgzbDQuNTkgNC41OUwxOSA5bC03LTctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT2ZmbGluZVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDVINHYxNmMwIDEuMS45IDIgMiAyaDEwdi0ySDZWNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMWgtOGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTh2LTFoOHYxem0wLTNoLThWNmg4djh6bTAtMTBoLThWM2g4djF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgMTAuMjVoMS42M2wtLjY5LjY5TDE0LjUgMTIgMTcgOS41IDE0LjUgN2wtMS4wNiAxLjA2LjY5LjY5SDEyYy0uNTUgMC0xIC40NS0xIDFWMTJoMS41di0xLjc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGF5bWVudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxNFY2YzAtMS4xLS45LTItMi0ySDNjLTEuMSAwLTIgLjktMiAydjhjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnptLTIgMEgzVjZoMTR2OHptLTctN2MtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTEzIDB2MTFjMCAxLjEtLjkgMi0yIDJINHYtMmgxN1Y3aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaXZvdFRhYmxlQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVjMC0xLjEtLjktMi0yLTJoLTl2NWgxMVY1ek0zIDE5YzAgMS4xLjkgMiAyIDJoM1YxMEgzdjl6TTMgNXYzaDVWM0g1Yy0xLjEgMC0yIC45LTIgMnptMTUgMy45OUwxNCAxM2wxLjQxIDEuNDEgMS41OS0xLjZWMTVjMCAxLjEtLjkgMi0yIDJoLTIuMTdsMS41OS0xLjU5TDEzIDE0bC00IDQgNCA0IDEuNDEtMS40MUwxMi44MyAxOUgxNWMyLjIxIDAgNC0xLjc5IDQtNHYtMi4xOGwxLjU5IDEuNkwyMiAxM2wtNC00LjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVmcmVzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNjUgNi4zNUE3Ljk1OCA3Ljk1OCAwIDAgMCAxMiA0Yy00LjQyIDAtNy45OSAzLjU4LTcuOTkgOHMzLjU3IDggNy45OSA4YzMuNzMgMCA2Ljg0LTIuNTUgNy43My02aC0yLjA4QTUuOTkgNS45OSAwIDAgMSAxMiAxOGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNmMxLjY2IDAgMy4xNC42OSA0LjIyIDEuNzhMMTMgMTFoN1Y0bC0yLjM1IDIuMzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTb3V0aEVhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA5aC0ydjYuNTlMNS40MSA0IDQgNS40MSAxNS41OSAxN0g5djJoMTBWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNvdXRoV2VzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE5di0ySDguNDFMMjAgNS40MSAxOC41OSA0IDcgMTUuNTlWOUg1djEwaDEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU291dGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSAxNS0xLjQxLTEuNDFMMTMgMTguMTdWMmgtMnYxNi4xN2wtNC41OS00LjU5TDUgMTVsNyA3IDctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1YmRpcmVjdG9yeUFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEgOSAxLjQyIDEuNDJMOC44MyAxNEgxOFY0aDJ2MTJIOC44M2wzLjU5IDMuNThMMTEgMjFsLTYtNiA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdWJkaXJlY3RvcnlBcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkgMTUtNiA2LTEuNDItMS40MkwxNS4xNyAxNkg0VjRoMnYxMGg5LjE3bC0zLjU5LTMuNThMMTMgOWw2IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2l0Y2hMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDguNjJ2Ni43Nkw1LjEyIDEyIDguNSA4LjYyTTEwIDVsLTcgNyA3IDdWNXptNCAwdjE0bDctNy03LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2l0Y2hSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMjRIMFYwaDI0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDE1LjM4VjguNjJMMTguODggMTJsLTMuMzggMy4zOE0xNCAxOWw3LTctNy03djE0em0tNCAwVjVsLTcgNyA3IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVbmZvbGRMZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAwdjI0SDBWMGgyNHpcIixcIm9wYWNpdHlcIjpcIi44N1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjQxIDE4LjU5IDguODMgMjAgMTIgMTYuODMgMTUuMTcgMjBsMS40MS0xLjQxTDEyIDE0bC00LjU5IDQuNTl6bTkuMTgtMTMuMThMMTUuMTcgNCAxMiA3LjE3IDguODMgNCA3LjQxIDUuNDEgMTIgMTBsNC41OS00LjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVW5mb2xkTW9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNS44MyAxNS4xNyA5bDEuNDEtMS40MUwxMiAzIDcuNDEgNy41OSA4LjgzIDkgMTIgNS44M3ptMCAxMi4zNEw4LjgzIDE1bC0xLjQxIDEuNDFMMTIgMjFsNC41OS00LjU5TDE1LjE3IDE1IDEyIDE4LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F0ZXJmYWxsQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRoM3YxNmgtM1Y0ek0zIDEzaDN2N0gzdi03em0xMS05aDN2M2gtM1Y0em0tNCAxaDN2NGgtM1Y1em0tMyA1aDN2NEg3di00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2VzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTkgMTkgMS40MS0xLjQxTDUuODMgMTNIMjJ2LTJINS44M2w0LjU5LTQuNTlMOSA1bC03IDcgNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjb3VudFRyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMVYzaC03djNIOVYzSDJ2OGg3VjhoMnYxMGg0djNoN3YtOGgtN3YzaC0yVjhoMnYzaDd6TTcgOUg0VjVoM3Y0em0xMCA2aDN2NGgtM3YtNHptMC0xMGgzdjRoLTNWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNmMwIDMuODcgMy4xMyA3IDcgN3M3LTMuMTMgNy03di00SDV2NHpNMTYuMTIgNC4zN2wyLjEtMi4xLS44Mi0uODMtMi4zIDIuMzFDMTQuMTYgMy4yOCAxMy4xMiAzIDEyIDNzLTIuMTYuMjgtMy4wOS43NUw2LjYgMS40NGwtLjgyLjgzIDIuMSAyLjFDNi4xNCA1LjY0IDUgNy42OCA1IDEwdjFoMTR2LTFjMC0yLjMyLTEuMTQtNC4zNi0yLjg4LTUuNjN6TTkgOWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem02IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpcmxpbmVTZWF0RmxhdEFuZ2xlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA2LjVjLjMxIDAgLjcuMTUuOS41Ni4yNC41LjAyIDEuMS0uNDcgMS4zNGEuOTc5Ljk3OSAwIDAgMS0xLjMyLS40Ni45ODYuOTg2IDAgMCAxIC40Ni0xLjM0Yy4xNC0uMDYuMjgtLjEuNDMtLjFtNi40NyAyLjExIDYuNjkgMi40MWMuNTIuMTkuOTMuNTYgMS4xNSAxLjA1LjIyLjQ4LjI1IDEuMDMuMDYgMS41M2wtLjAxLjAyLTguNTktMy4xMS43LTEuOU0xMCAxNS4xOWw0IDEuNDRWMTdoLTR2LTEuODFNNiA0LjVjLS40NCAwLS44OC4xLTEuMy4zYTIuOTkgMi45OSAwIDAgMC0xLjQgNCAyLjk4OCAyLjk4OCAwIDAgMCA0IDEuNCAzLjAxIDMuMDEgMCAwIDAgMS40MS00QTMuMDEzIDMuMDEzIDAgMCAwIDYgNC41em01LjI4IDEuNTVMOS4yIDExLjcxbDEyLjM2IDQuNDcuNjktMS44OWE0IDQgMCAwIDAtMi40MS01LjE1bC04LjU2LTMuMDl6bS05LjA5IDQuMi0uNjkgMS44OUw4IDE0LjQ4VjE5aDh2LTEuNjNMMjAuNTIgMTlsLjY5LTEuODktMTkuMDItNi44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpcmxpbmVTZWF0RmxhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxM2EzIDMgMCAwIDAgMi4xLTUuMTRDNi41MSA3LjI5IDUuNzUgNyA1IDdhMyAzIDAgMCAwLTIuMSA1LjE0Yy41OS41NyAxLjM1Ljg2IDIuMS44NnptLS43MS0zLjdhMSAxIDAgMCAxIDEuNDEtLjAyYy40LjM5LjQgMS4wMS4wMiAxLjQxLS4yLjItLjQ1LjMxLS43Mi4zMS0uMjYgMC0uNTEtLjEtLjctLjI4LS40LS40LS40LTEuMDItLjAxLTEuNDJ6TTE4IDdIOXY2aDEzdi0yYzAtMi4yMS0xLjc5LTQtNC00em0tNyA0VjloN2MxLjEgMCAyIC45IDIgMmgtOXptLTkgNWg2djJoOHYtMmg2di0ySDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBaXJsaW5lU2VhdEluZGl2aWR1YWxTdWl0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNGMxLjY2IDAgMy0xLjM0IDMtM1M4LjY2IDggNyA4cy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xMi0zaC04djhIM1Y3SDF2MTBoMjJ2LTZjMC0yLjIxLTEuNzktNC00LTR6bTIgOGgtOFY5aDZjMS4xIDAgMiAuOSAyIDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpcmxpbmVTZWF0TGVncm9vbUV4dHJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDEyVjNIMnY5YzAgMi43NiAyLjI0IDUgNSA1aDZ2LTJIN2MtMS42NiAwLTMtMS4zNC0zLTN6bTE4LjgzIDUuMjRjLS4zOC0uNzItMS4yOS0uOTctMi4wMy0uNjNsLTEuMDkuNS0zLjQxLTYuOThBMi4wMTkgMi4wMTkgMCAwIDAgMTQuNTEgOUgxMVYzSDV2OGMwIDEuNjYgMS4zNCAzIDMgM2g3bDMuNDEgNyAzLjcyLTEuN2MuNzctLjM2IDEuMS0xLjMuNy0yLjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlybGluZVNlYXRMZWdyb29tTm9ybWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEyVjNIM3Y5YzAgMi43NiAyLjI0IDUgNSA1aDZ2LTJIOGMtMS42NiAwLTMtMS4zNC0zLTN6bTE1LjUgNkgxOXYtN2MwLTEuMS0uOS0yLTItMmgtNVYzSDZ2OGMwIDEuNjUgMS4zNSAzIDMgM2g3djdoNC41Yy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlybGluZVNlYXRMZWdyb29tUmVkdWNlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOTcgMTkuMmMuMTguOTYtLjU1IDEuOC0xLjQ3IDEuOEgxNHYtM2wxLTRIOWMtMS42NSAwLTMtMS4zNS0zLTNWM2g2djZoNWMxLjEgMCAyIC45IDIgMmwtMiA3aDEuNDRjLjczIDAgMS4zOS40OSAxLjUzIDEuMnpNNSAxMlYzSDN2OWMwIDIuNzYgMi4yNCA1IDUgNWg0di0ySDhjLTEuNjYgMC0zLTEuMzQtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlybGluZVNlYXRSZWNsaW5lRXh0cmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuMzUgNS42NGMtLjktLjY0LTEuMTItMS44OC0uNDktMi43OS42My0uOSAxLjg4LTEuMTIgMi43OS0uNDkuOS42NCAxLjEyIDEuODguNDkgMi43OS0uNjQuOS0xLjg4IDEuMTItMi43OS40OXpNMTYgMTlIOC45M2MtMS40OCAwLTIuNzQtMS4wOC0yLjk2LTIuNTRMNCA3SDJsMS45OSA5Ljc2QTUuMDEgNS4wMSAwIDAgMCA4Ljk0IDIxSDE2di0yem0uMjMtNGgtNC44OGwtMS4wMy00LjFjMS41OC44OSAzLjI4IDEuNTQgNS4xNSAxLjIyVjkuOTljLTEuNjMuMzEtMy40NC0uMjctNC42OS0xLjI1TDkuMTQgNy40N2MtLjIzLS4xOC0uNDktLjMtLjc2LS4zOGEyLjIxIDIuMjEgMCAwIDAtLjk5LS4wNmgtLjAyYTIuMjY4IDIuMjY4IDAgMCAwLTEuODQgMi42MWwxLjM1IDUuOTJBMy4wMDggMy4wMDggMCAwIDAgOS44MyAxOGg2Ljg1bDMuODIgMyAxLjUtMS41LTUuNzctNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlybGluZVNlYXRSZWNsaW5lTm9ybWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjU5IDUuNDFjLS43OC0uNzgtLjc4LTIuMDUgMC0yLjgzczIuMDUtLjc4IDIuODMgMCAuNzggMi4wNSAwIDIuODNjLS43OS43OS0yLjA1Ljc5LTIuODMgMHpNNiAxNlY3SDR2OWMwIDIuNzYgMi4yNCA1IDUgNWg2di0ySDljLTEuNjYgMC0zLTEuMzQtMy0zem0xNCA0LjA3TDE0LjkzIDE1SDExLjV2LTMuNjhjMS40IDEuMTUgMy42IDIuMTYgNS41IDIuMTZ2LTIuMTZjLTEuNjYuMDItMy42MS0uODctNC42Ny0yLjA0bC0xLjQtMS41NWMtLjE5LS4yMS0uNDMtLjM4LS42OS0uNS0uMjktLjE0LS42Mi0uMjMtLjk2LS4yM2gtLjAzQzguMDEgNyA3IDguMDEgNyA5LjI1VjE1YzAgMS42NiAxLjM0IDMgMyAzaDUuMDdsMy41IDMuNUwyMCAyMC4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsdWV0b290aEF1ZGlvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC4yNCAxMi4wMSAyLjMyIDIuMzJjLjI4LS43Mi40NC0xLjUxLjQ0LTIuMzNzLS4xNi0xLjU5LS40My0yLjMxbC0yLjMzIDIuMzJ6bTUuMjktNS4zLTEuMjYgMS4yNmMuNjMgMS4yMS45OCAyLjU3Ljk4IDQuMDJzLS4zNiAyLjgyLS45OCA0LjAybDEuMiAxLjJhOS45MzYgOS45MzYgMCAwIDAgMS41NC01LjMxYy0uMDEtMS44OS0uNTUtMy42Ny0xLjQ4LTUuMTl6bS0zLjgyIDFMMTAgMkg5djcuNTlMNC40MSA1IDMgNi40MSA4LjU5IDEyIDMgMTcuNTkgNC40MSAxOSA5IDE0LjQxVjIyaDFsNS43MS01LjcxLTQuMy00LjI5IDQuMy00LjI5ek0xMSA1LjgzbDEuODggMS44OEwxMSA5LjU5VjUuODN6bTEuODggMTAuNDZMMTEgMTguMTd2LTMuNzZsMS44OCAxLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29uZmlybWF0aW9uTnVtYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTBWNmEyIDIgMCAwIDAtMi0ySDRjLTEuMSAwLTEuOTkuODktMS45OSAydjRjMS4xIDAgMS45OS45IDEuOTkgMnMtLjg5IDItMiAydjRjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMnYtNGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJ6bS0yLTEuNDZjLTEuMTkuNjktMiAxLjk5LTIgMy40NnMuODEgMi43NyAyIDMuNDZWMThINHYtMi41NGMxLjE5LS42OSAyLTEuOTkgMi0zLjQ2IDAtMS40OC0uOC0yLjc3LTEuOTktMy40Nkw0IDZoMTZ2Mi41NHpNMTEgMTVoMnYyaC0yem0wLTRoMnYyaC0yem0wLTRoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjcxIDExLjI5LTktOWEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBMOC4yMSA1LjM4bDEuNDEgMS40MUwxMiA0LjQyIDE5LjU4IDEybC0yLjM4IDIuMzggMS40MSAxLjQxIDMuMDktMy4wOWMuNC0uMzcuNC0xIC4wMS0xLjQxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3LjV2Mi42N2wyLjE3IDIuMTdMMTYuNSAxMXpNMS4zOSA0LjIybDMuOTkgMy45OS0zLjA5IDMuMDlhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDkgOWMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsMy4wOS0zLjA5IDMuOTkgMy45OSAxLjQxLTEuNDFMMi44MSAyLjgxIDEuMzkgNC4yMnptNi42NCA2LjYzYy0uMDEuMDUtLjA0LjEtLjA0LjE1djRoMnYtMi4xOGw0LjM4IDQuMzhMMTIgMTkuNTggNC40MiAxMiA2LjggOS42MmwxLjIzIDEuMjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXNjRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgN2gydjVoLTJ6TTEwIDRjLTQuNDIgMC04IDMuNTgtOCA4czMuNTggOCA4IDggOC0zLjU4IDgtOC0zLjU4LTgtOC04em0wIDE0Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnptMTAtNGgydjJoLTJ6bS0xMC00Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvRGlzdHVyYkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyek00IDEyYzAtNC40IDMuNi04IDgtOCAxLjggMCAzLjUuNiA0LjkgMS43TDUuNyAxNi45QzQuNiAxNS41IDQgMTMuOCA0IDEyem04IDhjLTEuOCAwLTMuNS0uNi00LjktMS43TDE4LjMgNy4xQzE5LjQgOC41IDIwIDEwLjIgMjAgMTJjMCA0LjQtMy42IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9EaXN0dXJiT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzQuNDEgMCA4IDMuNTkgOCA4IDAgMS40MS0uMzcgMi43My0xLjAxIDMuODhsMS40NiAxLjQ2QTkuOTYgOS45NiAwIDAgMCAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMGE5LjkgOS45IDAgMCAwLTUuMzMgMS41NWwxLjQ2IDEuNDZBNy44ODMgNy44ODMgMCAwIDEgMTIgNHptNSA3aC0yLjg4bDIgMkgxN3pNMi40MSAyLjEzIDEgMy41NGwyLjc4IDIuNzhBOS45MiA5LjkyIDAgMCAwIDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgMi4xMSAwIDQuMDctLjY2IDUuNjgtMS43OEwyMC40NiAyM2wxLjQxLTEuNDFMMi40MSAyLjEzek0xMiAyMGMtNC40MSAwLTgtMy41OS04LTggMC0xLjU2LjQ1LTMgMS4yMy00LjIzTDguNDYgMTFIN3YyaDMuNDZsNS43NyA1Ljc3QTcuODQ2IDcuODQ2IDAgMCAxIDEyIDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9EaXN0dXJiT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0tNS05aDEwdjJIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvRGlzdHVyYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LTggMC0xLjg1LjYzLTMuNTUgMS42OS00LjlMMTYuOSAxOC4zMUE3LjkwMiA3LjkwMiAwIDAgMSAxMiAyMHptNi4zMS0zLjFMNy4xIDUuNjlBNy45MDIgNy45MDIgMCAwIDEgMTIgNGM0LjQyIDAgOCAzLjU4IDggOCAwIDEuODUtLjYzIDMuNTUtMS42OSA0Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb05vdERpc3R1cmJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJzNC41IDEwIDEwIDEwIDEwLTQuNSAxMC0xMFMxNy41IDIgMTIgMnpNNCAxMmMwLTQuNCAzLjYtOCA4LTggMS44IDAgMy41LjYgNC45IDEuN0w1LjcgMTYuOUM0LjYgMTUuNSA0IDEzLjggNCAxMnptOCA4Yy0xLjggMC0zLjUtLjYtNC45LTEuN0wxOC4zIDcuMUMxOS40IDguNSAyMCAxMC4yIDIwIDEyYzAgNC40LTMuNiA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvTm90RGlzdHVyYk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuOTQgNS4xMkM5LjE0IDQuNDEgMTAuNTIgNCAxMiA0YzQuNDEgMCA4IDMuNTkgOCA4IDAgMS40OC0uNDEgMi44Ni0xLjEyIDQuMDZsMS40NiAxLjQ2QTkuOTY3IDkuOTY3IDAgMCAwIDIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwLTIuMDQgMC0zLjkzLjYxLTUuNTEgMS42NmwxLjQ1IDEuNDZ6TTIuODEgMi44MSAxLjM5IDQuMjJsMi4yNyAyLjI3QTkuOTEgOS45MSAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMDQgMCAzLjkzLS42MSA1LjUxLTEuNjZsMi4yNyAyLjI3IDEuNDEtMS40MUwyLjgxIDIuODF6TTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOCAwLTEuNDguNDEtMi44NiAxLjEyLTQuMDZMOC4xNyAxMUg3djJoMy4xN2w1Ljg4IDUuODhBNy44NjkgNy44NjkgMCAwIDEgMTIgMjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEzLjgzIDExIDIgMkgxN3YtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvTm90RGlzdHVyYk9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMXYyaDEwdi0ySDd6bTUtOUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb05vdERpc3R1cmIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOCAwLTEuODUuNjMtMy41NSAxLjY5LTQuOUwxNi45IDE4LjMxQTcuOTAyIDcuOTAyIDAgMCAxIDEyIDIwem02LjMxLTMuMUw3LjEgNS42OUE3LjkwMiA3LjkwMiAwIDAgMSAxMiA0YzQuNDIgMCA4IDMuNTggOCA4IDAgMS44NS0uNjMgMy41NS0xLjY5IDQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURyaXZlRXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MiA1LjAxQzE4LjcyIDQuNDIgMTguMTYgNCAxNy41IDRoLTExYy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwzIDExdjhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGwtMi4wOC01Ljk5ek02Ljg1IDZoMTAuMjlsMS4wNCAzSDUuODFsMS4wNC0zek0xOSAxNkg1di00LjY2bC4xMi0uMzRoMTMuNzdsLjExLjM0VjE2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjcuNVwiLFwiY3lcIjpcIjEzLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2LjVcIixcImN5XCI6XCIxMy41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVuaGFuY2VkRW5jcnlwdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yek04LjkgNmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMSAxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXYySDguOVY2ek0xOCAyMEg2VjEwaDEydjEwem0tNS05aC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFdmVudEF2YWlsYWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY5aDE0djEwek01IDdWNWgxNHYySDV6bTUuNTYgMTAuNDYgNS45My01LjkzLTEuMDYtMS4wNi00Ljg3IDQuODctMi4xMS0yLjExLTEuMDYgMS4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV2ZW50QnVzeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY5aDE0djEwek01IDdWNWgxNHYySDV6bTMuMjMgOS40MSAxLjA2IDEuMDYgMi40NC0yLjQ0IDIuNDQgMi40NCAxLjA2LTEuMDYtMi40NC0yLjQ0IDIuNDQtMi40NC0xLjA2LTEuMDYtMi40NCAyLjQ0LTIuNDQtMi40NC0xLjA2IDEuMDYgMi40NCAyLjQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXZlbnROb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC0xVjFoLTJ2Mkg4VjFINnYySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjloMTR2MTB6TTUgN1Y1aDE0djJINXptMiA0aDEwdjJIN3ptMCA0aDd2Mkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9sZGVyU3BlY2lhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjZoNS4xN2wyIDJIMjB2MTB6bS02LjkyLTMuOTZMMTIuMzkgMTcgMTUgMTUuNDcgMTcuNjEgMTdsLS42OS0yLjk2IDIuMy0xLjk5LTMuMDMtLjI2TDE1IDlsLTEuMTkgMi43OS0zLjAzLjI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW1hZ2VzZWFyY2hSb2xsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA3VjNjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXYxSDRjLTEuMSAwLTIgLjktMiAydjRjMCAxLjEuOSAyIDIgMmg4djNoLTFjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi02YzAtLjU1LS40NS0xLTEtMWgtMXYtM2MwLTEuMS0uOS0yLTItMkg0VjZoMnYxYzAgLjU1LjQ1IDEgMSAxaDEyYy41NSAwIDEtLjQ1IDEtMXpNOCA0aDEwdjJIOFY0em02IDE3aC0ydi00aDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpdmVUdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMHY4bDctNHptMTItNGgtNy41OGwzLjI5LTMuMjlMMTYgMmwtNCA0aC0uMDNsLTQtNC0uNjkuNzFMMTAuNTYgNkgzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTRIM1Y4aDE4djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW1zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdMNCAxNy4xN1Y0aDE2djEyem0tNS41LThMMTEgMTIuNTEgOC41IDkuNSA1IDE0aDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgM0g3Yy0uNjkgMC0xLjIzLjM1LTEuNTkuODhMMCAxMmw1LjQxIDguMTFjLjM2LjUzLjk3Ljg5IDEuNjYuODlIMjJjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg3LjA3TDIuNCAxMmw0LjY2LTdIMjJ2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNFwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOVwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5ldHdvcmtDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuOSA1Yy0uMTcgMC0uMzIuMDktLjQxLjIzbC0uMDcuMTUtNS4xOCAxMS42NWMtLjE2LjI5LS4yNi42MS0uMjYuOTYgMCAxLjExLjkgMi4wMSAyLjAxIDIuMDEuOTYgMCAxLjc3LS42OCAxLjk2LTEuNTlsLjAxLS4wM0wxNi40IDUuNWMwLS4yOC0uMjItLjUtLjUtLjV6TTEgOWwyIDJjMi44OC0yLjg4IDYuNzktNC4wOCAxMC41My0zLjYybDEuMTktMi42OEM5Ljg5IDMuODQgNC43NCA1LjI3IDEgOXptMjAgMiAyLTJhMTUuMzY3IDE1LjM2NyAwIDAgMC01LjU5LTMuNTdsLS41MyAyLjgyYzEuNS42MiAyLjkgMS41MyA0LjEyIDIuNzV6bS00IDQgMi0yYy0uOC0uOC0xLjctMS40Mi0yLjY2LTEuODlsLS41NSAyLjkyYy40Mi4yNy44My41OSAxLjIxLjk3ek01IDEzbDIgMmE3LjEgNy4xIDAgMCAxIDQuMDMtMmwxLjI4LTIuODhjLTIuNjMtLjA4LTUuMy44Ny03LjMxIDIuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOZXR3b3JrTG9ja2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNnYtLjVhMi41IDIuNSAwIDAgMC01IDB2LjVjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxaDVjLjU1IDAgMS0uNDUgMS0xdi00YzAtLjU1LS40NS0xLTEtMXptLTEgMGgtM3YtLjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjV2LjV6TTE4IDUuODN2NS40M2MuNDctLjE2Ljk3LS4yNiAxLjUtLjI2LjE3IDAgLjMzLjAzLjUuMDVWMUwxIDIwaDEzdi0ySDUuODNMMTggNS44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vRW5jcnlwdGlvbkdtYWlsZXJyb3JyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguOSA2YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xczMuMSAxLjM5IDMuMSAzLjF2MmgtNC42NmwyIDJIMTh2NS41NmwyIDJWMTBjMC0xLjEtLjktMi0yLTJoLTFWNmMwLTIuNzYtMi4yNC01LTUtNS0yLjMyIDAtNC4yNiAxLjU5LTQuODIgMy43NEw4LjkgNi40NlY2ek00LjQxIDQuODEgMyA2LjIybDIuMDQgMi4wNEM0LjQyIDguNiA0IDkuMjUgNCAxMHYxMGMwIDEuMS45IDIgMiAyaDEyLjc4bDEgMSAxLjQxLTEuNDFMNC40MSA0Ljgxek02IDIwVjEwaC43OGwxMCAxMEg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9FbmNyeXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjkgNmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMXMzLjEgMS4zOSAzLjEgMy4xdjJoLTQuNjZsMiAySDE4djUuNTZsMiAyVjEwYzAtMS4xLS45LTItMi0yaC0xVjZjMC0yLjc2LTIuMjQtNS01LTUtMi4zMiAwLTQuMjYgMS41OS00LjgyIDMuNzRMOC45IDYuNDZWNnpNNC40MSA0LjgxIDMgNi4yMmwyLjA0IDIuMDRDNC40MiA4LjYgNCA5LjI1IDQgMTB2MTBjMCAxLjEuOSAyIDIgMmgxMi43OGwxIDEgMS40MS0xLjQxTDQuNDEgNC44MXpNNiAyMFYxMGguNzhsMTAgMTBINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU9uZGVtYW5kVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgN3Y4bDctNHptMTItNEgzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNEgzVjVoMTh2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25hbFZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMTEgMC0yIC44OS0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg1djJoOHYtMmg1YzEuMSAwIDEuOTktLjkgMS45OS0yTDIzIDVhMiAyIDAgMCAwLTItMnptMCAxNEgzVjVoMTh2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZUJsdWV0b290aFNwZWFrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3LS4xLS4wMy0uMjEtLjA1LS4zMS0uMDUtLjI2IDAtLjUxLjEtLjcxLjI5bC0yLjIgMi4yYTE1LjA0NSAxNS4wNDUgMCAwIDEtNi41OS02LjU5bDIuMi0yLjIxYS45Ni45NiAwIDAgMCAuMjUtMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNNS4wMyA1aDEuNWMuMDcuODguMjIgMS43NS40NSAyLjU4bC0xLjIgMS4yMWMtLjQtMS4yMS0uNjYtMi40Ny0uNzUtMy43OXpNMTkgMTguOTdjLTEuMzItLjA5LTIuNi0uMzUtMy44LS43NmwxLjItMS4yYy44NS4yNCAxLjcyLjM5IDIuNi40NXYxLjUxek0xNC43MSA5LjUgMTcgNy4yMVYxMWguNWwyLjg1LTIuODVMMTguMjEgNmwyLjE1LTIuMTVMMTcuNSAxSDE3djMuNzlMMTQuNzEgMi41bC0uNzEuNzFMMTYuNzkgNiAxNCA4Ljc5bC43MS43MXpNMTggMi45MWwuOTQuOTQtLjk0Ljk0VjIuOTF6bTAgNC4zLjk0Ljk0LS45NC45NFY3LjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmVDYWxsYmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTUuNTFjLTEuMjQgMC0yLjQ1LS4yLTMuNTctLjU3YS44NC44NCAwIDAgMC0uMzEtLjA1Yy0uMjYgMC0uNTEuMS0uNzEuMjlsLTIuMiAyLjJhMTUuMTQ5IDE1LjE0OSAwIDAgMS02LjU5LTYuNTlsMi4yLTIuMmMuMjgtLjI4LjM2LS42Ny4yNS0xLjAyQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjQ5YzAtLjU1LS40NS0xLTEtMXpNNS4wMyA1aDEuNWExMyAxMyAwIDAgMCAuNDYgMi41OWwtMS4yIDEuMmMtLjQxLTEuMi0uNjctMi40Ny0uNzYtMy43OXpNMTkgMTguOTdjLTEuMzItLjA5LTIuNTktLjM1LTMuOC0uNzVsMS4xOS0xLjE5Yy44NS4yNCAxLjcyLjM5IDIuNi40NXYxLjQ5ek0xOCA5aC0yLjU5bDUuMDItNS4wMi0xLjQxLTEuNDFMMTQgNy41OVY1aC0ydjZoNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lRm9yd2FyZGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNS41Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41Ny0uMS0uMDMtLjIxLS4wNS0uMzEtLjA1LS4yNiAwLS41MS4xLS43MS4yOWwtMi4yIDIuMmExNS4wNDUgMTUuMDQ1IDAgMCAxLTYuNTktNi41OWwyLjItMi4yMWEuOTYuOTYgMCAwIDAgLjI1LTFBMTEuMzYgMTEuMzYgMCAwIDEgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6TTUuMDMgNWgxLjVjLjA3Ljg4LjIyIDEuNzUuNDUgMi41OGwtMS4yIDEuMjFjLS40LTEuMjEtLjY2LTIuNDctLjc1LTMuNzl6TTE5IDE4Ljk3Yy0xLjMyLS4wOS0yLjYtLjM1LTMuOC0uNzZsMS4yLTEuMmMuODUuMjQgMS43Mi4zOSAyLjYuNDV2MS41MXpNMTggMTFsNS01LTUtNXYzaC00djRoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lSW5UYWxrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMmgyYzAtMi43Ni0yLjI0LTUtNS01djJjMS42NiAwIDMgMS4zNCAzIDN6bTQgMGgyYTkgOSAwIDAgMC05LTl2MmMzLjg3IDAgNyAzLjEzIDcgN3ptMSAzLjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3LS4xLS4wMy0uMjEtLjA1LS4zMS0uMDUtLjI2IDAtLjUxLjEtLjcxLjI5bC0yLjIgMi4yYTE1LjA0NSAxNS4wNDUgMCAwIDEtNi41OS02LjU5bDIuMi0yLjIxYS45Ni45NiAwIDAgMCAuMjUtMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNNS4wMyA1aDEuNWMuMDcuODguMjIgMS43NS40NSAyLjU4bC0xLjIgMS4yMWMtLjQtMS4yMS0uNjYtMi40Ny0uNzUtMy43OXpNMTkgMTguOTdjLTEuMzItLjA5LTIuNi0uMzUtMy44LS43NmwxLjItMS4yYy44NS4yNCAxLjcyLjM5IDIuNi40NXYxLjUxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmVMb2NrZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1VjRjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjFoLTF2NWg2VjVoLTF6bS0xIDBoLTJWNGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuMiAxNC44Ny0zLjY3LS43M2MtLjUtLjEtLjgzLjItLjkuMjdsLTIuNTIgMi41Yy0yLjUtMS40My00LjU3LTMuNS02LTZsMi41LTIuNTJjLjIzLS4yNC4zMy0uNTcuMjctLjlMOS4xMyAzLjhjLS4wOS0uNDYtLjUtLjgtLjk4LS44SDRjLS41NiAwLTEuMDMuNDctMSAxLjAzLjE3IDIuODkgMS4wNSA1LjYgMi40MyA3Ljk3IDEuNTggMi43MyAzLjg1IDQuOTkgNi41NyA2LjU3IDIuMzcgMS4zNyA1LjA4IDIuMjYgNy45NyAyLjQzLjU1LjAzIDEuMDMtLjQzIDEuMDMtMXYtNC4xNWMwLS40OC0uMzQtLjg5LS44LS45OHpNNS4xIDVoMi4yM2wuNDcgMi4zNUw2LjE3IDljLS41NC0xLjMtLjktMi42My0xLjA3LTR6TTE5IDE4LjljLTEuMzctLjE4LTIuNy0uNTMtNC0xLjA3bDEuNjUtMS42MyAyLjM1LjQ3djIuMjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZU1pc3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMuNzEgMTYuNjdDMjAuNjYgMTMuNzggMTYuNTQgMTIgMTIgMTJTMy4zNCAxMy43OC4yOSAxNi42N2MtLjE4LjE4LS4yOS40My0uMjkuNzEgMCAuMjguMTEuNTMuMjkuNzFsMi40OCAyLjQ4Yy4xOC4xOC40My4yOS43MS4yOS4yNyAwIC41Mi0uMTEuNy0uMjguNzktLjc0IDEuNjktMS4zNiAyLjY2LTEuODUuMzMtLjE2LjU2LS41LjU2LS45di0zLjFjMS40NS0uNDggMy0uNzMgNC42LS43M3MzLjE1LjI1IDQuNi43MnYzLjFjMCAuMzkuMjMuNzQuNTYuOS45OC40OSAxLjg3IDEuMTIgMi42NyAxLjg1LjE4LjE4LjQzLjI4LjcuMjguMjggMCAuNTMtLjExLjcxLS4yOWwyLjQ4LTIuNDhjLjE4LS4xOC4yOS0uNDMuMjktLjcxIDAtLjI4LS4xMi0uNTItLjMtLjd6bS0xOC4zMS41NmMtLjY2LjM3LTEuMjkuOC0xLjg3IDEuMjdsLTEuMDctMS4wN2MuOTEtLjc1IDEuOS0xLjM5IDIuOTUtMS45djEuN3ptMTUuMDggMS4yNmMtLjYtLjQ4LTEuMjItLjktMS44OC0xLjI3di0xLjdjMS4wNS41MSAyLjAzIDEuMTUgMi45NSAxLjlsLTEuMDcgMS4wN3pNNyA2LjQzbDQuOTQgNC45NCA3LjA3LTcuMDctMS40MS0xLjQyLTUuNjYgNS42Nkw4LjQgNUgxMVYzSDV2NmgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmVQYXVzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNTQgNWMuMDYuODguMjEgMS43NS40NCAyLjU4bC0xLjIgMS4yMWMtLjQtMS4yMS0uNjYtMi40Ny0uNzUtMy43OWgxLjUxbTkuODYgMTIuMDFjLjg1LjI0IDEuNzIuMzkgMi42LjQ1djEuNWMtMS4zMi0uMDktMi42LS4zNS0zLjgtLjc2bDEuMi0xLjE5TTcuNSAzSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTEtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTctLjEtLjAzLS4yMS0uMDUtLjMxLS4wNS0uMjYgMC0uNTEuMS0uNzEuMjlsLTIuMiAyLjJhMTUuMDQ1IDE1LjA0NSAwIDAgMS02LjU5LTYuNTlsMi4yLTIuMjFhLjk2Ljk2IDAgMCAwIC4yNS0xQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMXpNMTUgM2gydjdoLTJ6bTQgMGgydjdoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb3dlck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgM0g4djEuODhsMiAyem02IDZ2My44OGwxLjggMS44LjItLjJWOWMwLTEuMS0uOS0yLTItMlYzaC0ydjRoLTMuODhsMiAySDE2ek00LjEyIDMuODQgMi43MSA1LjI1IDYgOC41NHY1Ljk2TDkuNSAxOHYzaDV2LTNsLjQ4LS40OCA0LjQ3IDQuNDcgMS40MS0xLjQxTDQuMTIgMy44NHptOC4zOCAxMy4zM1YxOWgtMXYtMS44M0w4IDEzLjY1di0zLjExbDUuNTcgNS41Ny0xLjA3IDEuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOXY0LjY2bC0zLjUgMy41MVYxOWgtMXYtMS44M0w4IDEzLjY1VjloOG0wLTZoLTJ2NGgtNFYzSDh2NGgtLjAxQzYuOSA2Ljk5IDYgNy44OSA2IDguOTh2NS41Mkw5LjUgMTh2M2g1di0zbDMuNS0zLjUxVjljMC0xLjEtLjktMi0yLTJWM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVByaW9yaXR5SGlnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE5XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDNoNHYxMmgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJ1bm5pbmdXaXRoRXJyb3JzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTB2OGgtMnYtOGgyem0tMiAxMHYyaDJ2LTJoLTJ6bS0yLTIuNzFBNy45OSA3Ljk5IDAgMCAxIDEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04djlsNy41NS03LjU1QTkuOTY1IDkuOTY1IDAgMCAwIDEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTBjMi4yNSAwIDQuMzMtLjc0IDYtMnYtMi43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNkQ2FyZEFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyaC04TDQuMDIgOCA0IDIwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxOEg2VjguODNMMTAuODMgNEgxOHYxNnptLTctNWgydjJoLTJ6bTAtN2gydjVoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJoLThMNCA4djEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxOEg2VjguODNMMTAuODMgNEgxOHYxNnpNOSA3aDJ2NEg5em0zIDBoMnY0aC0yem0zIDBoMnY0aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2ltQ2FyZEFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMmgtOEw0LjAyIDggNCAyMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMThINlY4LjgzTDEwLjgzIDRIMTh2MTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE1aDJ2MmgtMnpNMTEgOGgydjVoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbXNGYWlsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRINS4xN0w0IDE3LjE3VjRoMTZ2MTJ6bS05LTRoMnYyaC0yem0wLTZoMnY0aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU21zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdMNCAxNy4xN1Y0aDE2djEyek03IDloMnYySDd6bTggMGgydjJoLTJ6bS00IDBoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3VwcG9ydEFnZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTIuMjJDMjEgNi43MyAxNi43NCAzIDEyIDNjLTQuNjkgMC05IDMuNjUtOSA5LjI4LS42LjM0LTEgLjk4LTEgMS43MnYyYzAgMS4xLjkgMiAyIDJoMXYtNi4xYzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDdWMTloLTh2Mmg4YzEuMSAwIDItLjkgMi0ydi0xLjIyYy41OS0uMzEgMS0uOTIgMS0xLjY0di0yLjNjMC0uNy0uNDEtMS4zMS0xLTEuNjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMS4wM0E2LjA0IDYuMDQgMCAwIDAgMTIuMDUgNmMtMy4wMyAwLTYuMjkgMi41MS02LjAzIDYuNDVhOC4wNzUgOC4wNzUgMCAwIDAgNC44Ni01Ljg5YzEuMzEgMi42MyA0IDQuNDQgNy4xMiA0LjQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3luY0Rpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA2LjM1VjQuMjZjLS42Ni4xNy0xLjI5LjQzLTEuODguNzVsMS41IDEuNWMuMTMtLjA1LjI1LS4xMS4zOC0uMTZ6TTIwIDEyYzAtMi4yMS0uOTEtNC4yLTIuMzYtNS42NEwyMCA0aC02djZsMi4yNC0yLjI0QTYuMDAzIDYuMDAzIDAgMCAxIDE4IDEyYzAgLjg1LS4xOSAxLjY1LS41MSAyLjM4bDEuNSAxLjVBNy45MjEgNy45MjEgMCAwIDAgMjAgMTJ6TTQuMjcgNCAyLjg2IDUuNDFsMi4zNiAyLjM2YTcuOTI1IDcuOTI1IDAgMCAwIDEuMTQgOS44N0w0IDIwaDZ2LTZsLTIuMjQgMi4yNEE2LjAwMyA2LjAwMyAwIDAgMSA2IDEyYzAtMSAuMjUtMS45NC42OC0yLjc3bDguMDggOC4wOGMtLjI1LjEzLS41LjI0LS43Ni4zNHYyLjA5Yy44LS4yMSAxLjU1LS41NCAyLjIzLS45NmwyLjU4IDIuNTggMS40MS0xLjQxTDQuMjcgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN5bmNMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgNC4yNnYyLjA5QzcuNjcgNy4xOCA2IDkuMzkgNiAxMmMwIDEuNzcuNzggMy4zNCAyIDQuNDRWMTRoMnY2SDR2LTJoMi43M0E3Ljk0MiA3Ljk0MiAwIDAgMSA0IDEyYzAtMy43MyAyLjU1LTYuODUgNi03Ljc0ek0yMCA0aC02djZoMlY3LjU2YzEuMjIgMS4xIDIgMi42NyAyIDQuNDRoMmMwLTIuNC0xLjA2LTQuNTQtMi43My02SDIwVjR6bTAgMTN2LTFjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXptLTEgMGgtMnYtMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN5bmNQcm9ibGVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEyYzAgMi4yMS45MSA0LjIgMi4zNiA1LjY0TDMgMjBoNnYtNmwtMi4yNCAyLjI0QTYuMDAzIDYuMDAzIDAgMCAxIDUgMTJhNS45OSA1Ljk5IDAgMCAxIDQtNS42NVY0LjI2QzUuNTUgNS4xNSAzIDguMjcgMyAxMnptOCA1aDJ2LTJoLTJ2MnpNMjEgNGgtNnY2bDIuMjQtMi4yNEE2LjAwMyA2LjAwMyAwIDAgMSAxOSAxMmE1Ljk5IDUuOTkgMCAwIDEtNCA1LjY1djIuMDljMy40NS0uODkgNi00LjAxIDYtNy43NCAwLTIuMjEtLjkxLTQuMi0yLjM2LTUuNjRMMjEgNHptLTEwIDloMlY3aC0ydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTeW5jIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0uMDEgMGgyNHYyNGgtMjRWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNFYxTDggNWw0IDRWNmMzLjMxIDAgNiAyLjY5IDYgNiAwIDEuMDEtLjI1IDEuOTctLjcgMi44bDEuNDYgMS40NkE3LjkzIDcuOTMgMCAwIDAgMjAgMTJjMC00LjQyLTMuNTgtOC04LTh6bTAgMTRjLTMuMzEgMC02LTIuNjktNi02IDAtMS4wMS4yNS0xLjk3LjctMi44TDUuMjQgNy43NEE3LjkzIDcuOTMgMCAwIDAgNCAxMmMwIDQuNDIgMy41OCA4IDggOHYzbDQtNC00LTR2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN5c3RlbVVwZGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMTlIN1Y1aDEwdjE0em0tMS02aC0zVjhoLTJ2NUg4bDQgNCA0LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUYXBBbmRQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE2djJjMi43NiAwIDUgMi4yNCA1IDVoMmMwLTMuODctMy4xMy03LTctN3ptMCA0djNoM2MwLTEuNjYtMS4zNC0zLTMtM3ptMC04djJhOSA5IDAgMCAxIDkgOWgyYzAtNi4wOC00LjkyLTExLTExLTExek0xNyAxLjAxIDcgMWMtMS4xIDAtMiAuOS0yIDJ2Ny4zN2MuNjkuMTYgMS4zNi4zNyAyIC42NFY1aDEwdjEzaC0zLjAzYy41MiAxLjI1Ljg0IDIuNTkuOTUgNEgxN2MxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGltZVRvTGVhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDUuMDFDMTguNzIgNC40MiAxOC4xNiA0IDE3LjUgNGgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTF2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuODUgNmgxMC4yOWwxLjA0IDNINS44MWwxLjA0LTN6TTE5IDE2SDV2LTQuNjZsLjEyLS4zNGgxMy43N2wuMTEuMzRWMTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNy41XCIsXCJjeVwiOlwiMTMuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTYuNVwiLFwiY3lcIjpcIjEzLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHZPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDd2MTAuODhsMS44NSAxLjg1Yy4wOS0uMjMuMTUtLjQ3LjE1LS43M1Y3YzAtMS4xMS0uODktMi0yLTJoLTcuNThsMy4yOS0zLjNMMTYgMWwtNCA0LTQtNC0uNy43TDEwLjU4IDVIOC4xMmwyIDJIMjF6bS0uNTQgMTYgMS4yNi0xLjI3LTEuMjYgMS4yNnpNMi40MSAyLjEzbC0uMTQuMTRMMSAzLjU0bDEuNTMgMS41M0MxLjY1IDUuMjggMSA2LjA2IDEgN3YxMmMwIDEuMS45IDIgMiAyaDE1LjQ2bDEuOTkgMS45OSAxLjI2LTEuMjYuMTUtLjE1TDIuNDEgMi4xM3pNMyAxOVY3aDEuNDZsMTIgMTJIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpYnJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxNWgyVjlIMHY2em0zIDJoMlY3SDN2MTB6bTE5LTh2NmgyVjloLTJ6bS0zIDhoMlY3aC0ydjEwek0xNi41IDNoLTlDNi42NyAzIDYgMy42NyA2IDQuNXYxNWMwIC44My42NyAxLjUgMS41IDEuNWg5Yy44MyAwIDEuNS0uNjcgMS41LTEuNXYtMTVjMC0uODMtLjY3LTEuNS0xLjUtMS41ek0xNiAxOUg4VjVoOHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZGVvQ2hhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdMNCAxNy4xN1Y0aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE0aDZjLjU1IDAgMS0uNDUgMS0xdi0xLjk5TDE3IDEzVjdsLTIgMS45OVY3YzAtLjU1LS40NS0xLTEtMUg4Yy0uNTUgMC0xIC40NS0xIDF2NmMwIC41NS40NSAxIDEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZvaWNlQ2hhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRINS4xN0w0IDE3LjE3VjRoMTZ2MTJ6bS02LTUuNCAzIDIuNFY3bC0zIDIuNFY3SDd2Nmg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVnBuTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTIgMTJjLjA0LjMzLjA4LjY2LjA4IDEgMCAyLjA4LS44IDMuOTctMi4xIDUuMzktLjI2LS44MS0xLTEuMzktMS45LTEuMzloLTF2LTNjMC0uNTUtLjQ1LTEtMS0xSDd2LTJoMmMuNTUgMCAxLS40NSAxLTFWOGgyYzEuMSAwIDItLjkgMi0yVjMuNDZjLS45NS0uMy0xLjk1LS40Ni0zLS40NkM1LjQ4IDMgMSA3LjQ4IDEgMTNzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwYzAtLjM0LS4wMi0uNjctLjA1LTFoLTIuMDN6TTEwIDIwLjkzYy0zLjk1LS40OS03LTMuODUtNy03LjkzIDAtLjYyLjA4LTEuMjEuMjEtMS43OUw4IDE2djFjMCAxLjEuOSAyIDIgMnYxLjkzek0yMiA0di0uNWEyLjUgMi41IDAgMCAwLTUgMFY0Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWg1Yy41NSAwIDEtLjQ1IDEtMVY1YzAtLjU1LS40NS0xLTEtMXptLTEgMGgtM3YtLjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0uMDEgMGgyNHYyNGgtMjRWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41IDIydi03LjVINFY5YzAtMS4xLjktMiAyLTJoM2MxLjEgMCAyIC45IDIgMnY1LjVIOS41VjIyaC00ek0xOCAyMnYtNmgzbC0yLjU0LTcuNjNBMi4wMSAyLjAxIDAgMCAwIDE2LjU2IDdoLS4xMmEyIDIgMCAwIDAtMS45IDEuMzdMMTIgMTZoM3Y2aDN6TTcuNSA2YzEuMTEgMCAyLS44OSAyLTJzLS44OS0yLTItMi0yIC44OS0yIDIgLjg5IDIgMiAyem05IDBjMS4xMSAwIDItLjg5IDItMnMtLjg5LTItMi0yLTIgLjg5LTIgMiAuODkgMiAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMSAxMSAyLTJjLTMuNzMtMy43My04Ljg3LTUuMTUtMTMuNy00LjMxbDIuNTggMi41OGMzLjMtLjAyIDYuNjEgMS4yMiA5LjEyIDMuNzN6bS0yIDJhOS44OTUgOS44OTUgMCAwIDAtMy43Mi0yLjMzbDMuMDIgMy4wMi43LS42OXpNOSAxN2wzIDMgMy0zYTQuMjM3IDQuMjM3IDAgMCAwLTYgMHpNMy40MSAxLjY0IDIgMy4wNSA1LjA1IDYuMUMzLjU5IDYuODMgMi4yMiA3Ljc5IDEgOWwyIDJjMS4yMy0xLjIzIDIuNjUtMi4xNiA0LjE3LTIuNzhsMi4yNCAyLjI0QTkuODIzIDkuODIzIDAgMCAwIDUgMTNsMiAyYTYuOTk5IDYuOTk5IDAgMCAxIDQuODktMi4wNmw3LjA4IDcuMDggMS40MS0xLjQxTDMuNDEgMS42NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEgOSAyIDJjNC45Ny00Ljk3IDEzLjAzLTQuOTcgMTggMGwyLTJDMTYuOTMgMi45MyA3LjA4IDIuOTMgMSA5em04IDggMyAzIDMtM2E0LjIzNyA0LjIzNyAwIDAgMC02IDB6bS00LTQgMiAyYTcuMDc0IDcuMDc0IDAgMCAxIDEwIDBsMi0yQzE1LjE0IDkuMTQgOC44NyA5LjE0IDUgMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBY1VuaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDExaC00LjE3bDMuMjQtMy4yNC0xLjQxLTEuNDJMMTUgMTFoLTJWOWw0LjY2LTQuNjYtMS40Mi0xLjQxTDEzIDYuMTdWMmgtMnY0LjE3TDcuNzYgMi45MyA2LjM0IDQuMzQgMTEgOXYySDlMNC4zNCA2LjM0IDIuOTMgNy43NiA2LjE3IDExSDJ2Mmg0LjE3bC0zLjI0IDMuMjQgMS40MSAxLjQyTDkgMTNoMnYybC00LjY2IDQuNjYgMS40MiAxLjQxTDExIDE3LjgzVjIyaDJ2LTQuMTdsMy4yNCAzLjI0IDEuNDItMS40MUwxMyAxNXYtMmgybDQuNjYgNC42NiAxLjQxLTEuNDJMMTcuODMgMTNIMjJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBaXJwb3J0U2h1dHRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNUgzYTIgMiAwIDAgMC0yIDJ2OWgyYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoNmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDJ2LTVsLTYtNnptLTIgMmgxbDMgM2gtNFY3ek05IDdoNHYzSDlWN3pNMyA3aDR2M0gzVjd6bTMgMTAuMjVhMS4yNSAxLjI1IDAgMSAxIDAtMi41IDEuMjUgMS4yNSAwIDAgMSAwIDIuNXptMTIgMGExLjI1IDEuMjUgMCAxIDEgMC0yLjUgMS4yNSAxLjI1IDAgMCAxIDAgMi41ek0yMSAxNGgtLjc4Yy0uNTUtLjYxLTEuMzQtMS0yLjIyLTFzLTEuNjcuMzktMi4yMiAxSDguMjJjLS41NS0uNjEtMS4zMy0xLTIuMjItMXMtMS42Ny4zOS0yLjIyIDFIM3YtMmgxOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWxsSW5jbHVzaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC42IDYuNjJjLTEuNDQgMC0yLjguNTYtMy43NyAxLjUzTDcuOCAxNC4zOWMtLjY0LjY0LTEuNDkuOTktMi40Ljk5LTEuODcgMC0zLjM5LTEuNTEtMy4zOS0zLjM4UzMuNTMgOC42MiA1LjQgOC42MmMuOTEgMCAxLjc2LjM1IDIuNDQgMS4wM2wxLjEzIDEgMS41MS0xLjM0TDkuMjIgOC4yQTUuMzcgNS4zNyAwIDAgMCA1LjQgNi42MkMyLjQyIDYuNjIgMCA5LjA0IDAgMTJzMi40MiA1LjM4IDUuNCA1LjM4YzEuNDQgMCAyLjgtLjU2IDMuNzctMS41M2w3LjAzLTYuMjRjLjY0LS42NCAxLjQ5LS45OSAyLjQtLjk5IDEuODcgMCAzLjM5IDEuNTEgMy4zOSAzLjM4cy0xLjUyIDMuMzgtMy4zOSAzLjM4Yy0uOSAwLTEuNzYtLjM1LTIuNDQtMS4wM2wtMS4xNC0xLjAxLTEuNTEgMS4zNCAxLjI3IDEuMTJhNS4zODYgNS4zODYgMCAwIDAgMy44MiAxLjU3YzIuOTggMCA1LjQtMi40MSA1LjQtNS4zOHMtMi40Mi01LjM3LTUuNC01LjM3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXBhcnRtZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTFWM0g3djRIM3YxNGg4di00aDJ2NGg4VjExaC00ek03IDE5SDV2LTJoMnYyem0wLTRINXYtMmgydjJ6bTAtNEg1VjloMnYyem00IDRIOXYtMmgydjJ6bTAtNEg5VjloMnYyem0wLTRIOVY1aDJ2MnptNCA4aC0ydi0yaDJ2MnptMC00aC0yVjloMnYyem0wLTRoLTJWNWgydjJ6bTQgMTJoLTJ2LTJoMnYyem0wLTRoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmFieUNoYW5naW5nU3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDh2MmgtM0w4LjMxIDguODIgNyAxMi43NVYyMkgzVjEybDEuNTgtNC42M0EyLjAwMyAyLjAwMyAwIDAgMSA3LjMgNi4xOGw0LjE1IDEuODNMMTQgOHpNOCAxYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMSAxOGgxMnYtMkg5djJ6bTEwLjUtM2MuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNS42NyAxLjUgMS41IDEuNXpNMTMgMTJjMC0uNTUtLjQ1LTEtMS0xSDl2MmgydjFjMCAxLjEuOSAyIDIgMmgyYzEuMSAwIDItLjkgMi0ydi0zaC0ydjJoLTJ2LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYWNrcGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNC4xNFYyaC0zdjJoLTRWMkg3djIuMTRjLTEuNzIuNDUtMyAyLTMgMy44NnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjhjMC0xLjg2LTEuMjgtMy40MS0zLTMuODZ6TTE4IDIwSDZWOGMwLTEuMS45LTIgMi0yaDhjMS4xIDAgMiAuOSAyIDJ2MTJ6bS0xLjUtOHY0aC0ydi0yaC03di0yaDl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMHYyNGgyNFYwSDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYWxjb255IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTB2Mkg4di0yaDJ6bTYgMnYtMmgtMnYyaDJ6bTUgMnY4SDN2LThoMXYtNGMwLTQuNDIgMy41OC04IDgtOHM4IDMuNTggOCA4djRoMXpNNyAxNkg1djRoMnYtNHptNCAwSDl2NGgydi00em0wLTExLjkyQzguMTYgNC41NiA2IDcuMDMgNiAxMHY0aDVWNC4wOHpNMTMgMTRoNXYtNGMwLTIuOTctMi4xNi01LjQ0LTUtNS45MlYxNHptMiAyaC0ydjRoMnYtNHptNCAwaC0ydjRoMnYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdGh0dWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjdcIixcImN5XCI6XCI3XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEzVjQuODNDMjAgMy4yNyAxOC43MyAyIDE3LjE3IDJjLS43NSAwLTEuNDcuMy0yIC44M2wtMS4yNSAxLjI1Yy0uMTYtLjA1LS4zMy0uMDgtLjUxLS4wOC0uNCAwLS43Ny4xMi0xLjA4LjMybDIuNzYgMi43NmMuMi0uMzEuMzItLjY4LjMyLTEuMDggMC0uMTgtLjAzLS4zNC0uMDctLjUxbDEuMjUtMS4yNWEuODI4LjgyOCAwIDAgMSAxLjQxLjU5VjEzaC02Ljg1Yy0uMy0uMjEtLjU3LS40NS0uODItLjcybC0xLjQtMS41NWMtLjE5LS4yMS0uNDMtLjM4LS42OS0uNUEyLjI1MSAyLjI1MSAwIDAgMCA1IDEyLjI1VjEzSDJ2NmMwIDEuMS45IDIgMiAyIDAgLjU1LjQ1IDEgMSAxaDE0Yy41NSAwIDEtLjQ1IDEtMSAxLjEgMCAyLS45IDItMnYtNmgtMnptMCA2SDR2LTRoMTZ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJlYWNoQWNjZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMSAxOS41Ny0xLjQyNyAxLjQyOC02LjQ0Mi02LjQ0MiAxLjQzLTEuNDI4ek0xMy4xMiAzYy0yLjU4IDAtNS4xNi45OC03LjE0IDIuOTVsLS4wMS4wMWMtMy45NSAzLjk1LTMuOTUgMTAuMzYgMCAxNC4zMWwxNC4zLTE0LjMxQTEwLjA4NiAxMC4wODYgMCAwIDAgMTMuMTIgM3pNNi4xNCAxNy4yN2E4LjA2MyA4LjA2MyAwIDAgMS0uNjgtNi44MmMuMTkgMS45MS44OSAzLjc5IDIuMDcgNS40NGwtMS4zOSAxLjM4em0yLjg0LTIuODRDNy42MyAxMi4zOCA3LjEyIDkuOTMgNy42IDcuNmMuNTgtLjEyIDEuMTYtLjE4IDEuNzUtLjE4IDEuOCAwIDMuNTUuNTUgNS4wOCAxLjU2bC01LjQ1IDUuNDV6bTEuNDctOC45N2E4LjA2MyA4LjA2MyAwIDAgMSA2LjgyLjY4bC0xLjM5IDEuMzlhMTEuMjUgMTEuMjUgMCAwIDAtNS40My0yLjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmVudG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1SDRjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCA2aC02VjdoNnY0ek00IDdoOHYxMEg0Vjd6bTEwIDEwdi00aDZ2NGgtNnptLTQuNS01YzAgLjgzLS42NyAxLjUtMS41IDEuNXMtMS41LS42Ny0xLjUtMS41LjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnVuZ2Fsb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxNGgtMnYtMmgydjJ6bTUuMSAyLjU2TDE3IDE0Ljc5VjIxSDd2LTYuMmwtMS4xIDEuNzYtMS43LTEuMDZMMTIgM2w3LjggMTIuNS0xLjcgMS4wNnpNMTUgMTEuNTlsLTMtNC44LTMgNC44VjE5aDJ2LTNoMnYzaDJ2LTcuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCdXNpbmVzc0NlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgN2gtNFY1bC0yLTJoLTRMOCA1djJINGMtMS4xIDAtMiAuOS0yIDJ2NWMwIC43NS40IDEuMzggMSAxLjczVjE5YzAgMS4xMS44OSAyIDIgMmgxNGMxLjExIDAgMi0uODkgMi0ydi0zLjI4Yy41OS0uMzUgMS0uOTkgMS0xLjcyVjljMC0xLjEtLjktMi0yLTJ6TTEwIDVoNHYyaC00VjV6TTQgOWgxNnY1aC01di0zSDl2M0g0Vjl6bTkgNmgtMnYtMmgydjJ6bTYgNEg1di0zaDR2MWg2di0xaDR2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhYmluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMWMwIDEuNjYtMS4zNCAzLTMgMy0uNTUgMC0xIC40NS0xIDFINGMwLTEuNjYgMS4zNC0zIDMtMyAuNTUgMCAxLS40NSAxLTFoMnptMiAyTDYgNy41OFY2SDR2My4xMUwxIDExLjRsMS4yMSAxLjU5TDQgMTEuNjJWMjFoMTZ2LTkuMzhsMS43OSAxLjM2TDIzIDExLjQgMTIgM3ptMS45NCA0aC0zLjg5TDEyIDUuNTIgMTMuOTQgN3ptLTYuNSAyaDkuMTJMMTggMTAuMXYuOUg2di0uOUw3LjQ0IDl6TTE4IDEzdjJINnYtMmgxMnpNNiAxOXYtMmgxMnYySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYXJwZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS43MyAxNC4yMyA3IDEuNSAzLjExIDUuMzlsOC4xMyAxMS42N2MtLjc4Ljc4LS43OCAyLjA1IDAgMi44M2wxLjQxIDEuNDFjLjc4Ljc4IDIuMDUuNzggMi44MyAwbDQuMjQtNC4yNGMuNzktLjc4Ljc5LTIuMDUuMDEtMi44M3pNNS43MSA1LjYyIDcgNC4zM2w4LjQ5IDguNDktMi44MSAyLjgxTDUuNzEgNS42MnptOC4zNiAxNC4yNi0xLjQxLTEuNDEgNC4yNC00LjI0IDEuNDEgMS40MS00LjI0IDQuMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYXNpbm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNy41XCIsXCJjeVwiOlwiMTYuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNy41XCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNi41XCIsXCJjeVwiOlwiMTYuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTYuNVwiLFwiY3lcIjpcIjcuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGFsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDE1IDEwIDcuNSAyLjUgMTVsMS40MSAxLjQxTDUgMTUuMzNWMjBoMTB2LTQuNjdsMS4wOSAxLjA5TDE3LjUgMTV6TTEzIDE4aC0ydi0zSDl2M0g3di00LjY3bDMtMyAzIDNWMTh6bTktMTAuNWgtMS4xOWwuNzUuNzUtLjcxLjcxLTEuNDYtMS40NmgtLjg5di44OWwxLjQ1IDEuNDUtLjcxLjcxLS43NC0uNzRWMTFoLTFWOS44MWwtLjc1Ljc1LS43MS0uNzEgMS40NS0xLjQ1di0uOWgtLjg5bC0xLjQ1IDEuNDUtLjcxLS43MS43NS0uNzVIMTR2LTFoMS4xOWwtLjc1LS43NS43MS0uNzEgMS40NSAxLjQ1aC44OXYtLjg3bC0xLjQ1LTEuNDUuNzEtLjcxLjc1Ljc1VjNoMXYxLjE5bC43NS0uNzUuNzEuNzEtMS40NiAxLjQ2di44OWguODlsMS40NS0xLjQ1LjcxLjcxLS43NC43NEgyMnYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hhcmdpbmdTdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuNSAxMS0zIDZ2LTRoLTJsMy02djRoMnpNMTcgM0g3djFoMTBWM20wIDE3SDd2MWgxMHYtMW0wLTE5YzEuMSAwIDIgLjkgMiAydjE4YzAgMS4xLS45IDItMiAySDdjLTEuMSAwLTItLjktMi0yVjNjMC0xLjEuOS0yIDItMmgxMHpNNyAxOGgxMFY2SDd2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGVja3Jvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS42IDE4LjIgMTMgMTEuNzV2LS45MWEzLjQ5NiAzLjQ5NiAwIDAgMC0uMTgtNi43NUEzLjUxIDMuNTEgMCAwIDAgOC41IDcuNWgyYzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41YzAgLjg0LS42OSAxLjUyLTEuNTMgMS41LS41NC0uMDEtLjk3LjQ1LS45Ny45OXYxLjc2TDIuNCAxOC4yYy0uNzcuNTgtLjM2IDEuOC42IDEuOGgxOGMuOTYgMCAxLjM3LTEuMjIuNi0xLjh6TTYgMThsNi00LjUgNiA0LjVINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoaWxkQ2FyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNC41XCIsXCJjeVwiOlwiMTAuNVwiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjkuNVwiLFwiY3lcIjpcIjEwLjVcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuOTQgMTEuMzRhNC4wMDggNC4wMDggMCAwIDAtMi44MS0zLjE3IDkuMTE0IDkuMTE0IDAgMCAwLTIuMTktMi45MUMxNi4zNiAzLjg1IDE0LjI4IDMgMTIgM3MtNC4zNi44NS01Ljk0IDIuMjZjLS45Mi44MS0xLjY3IDEuOC0yLjE5IDIuOTFhMy45OTQgMy45OTQgMCAwIDAtMi44MSAzLjE3Yy0uMDQuMjEtLjA2LjQzLS4wNi42NiAwIC4yMy4wMi40NS4wNi42NmE0LjAwOCA0LjAwOCAwIDAgMCAyLjgxIDMuMTcgOC45NzcgOC45NzcgMCAwIDAgMi4xNyAyLjg5QzcuNjIgMjAuMTQgOS43MSAyMSAxMiAyMXM0LjM4LS44NiA1Ljk3LTIuMjhjLjktLjggMS42NS0xLjc5IDIuMTctMi44OWEzLjk5OCAzLjk5OCAwIDAgMCAyLjgtMy4xN2MuMDQtLjIxLjA2LS40My4wNi0uNjYgMC0uMjMtLjAyLS40NS0uMDYtLjY2ek0xOSAxNGMtLjEgMC0uMTktLjAyLS4yOS0uMDMtLjIuNjctLjQ5IDEuMjktLjg2IDEuODZDMTYuNiAxNy43NCAxNC40NSAxOSAxMiAxOXMtNC42LTEuMjYtNS44NS0zLjE3Yy0uMzctLjU3LS42Ni0xLjE5LS44Ni0xLjg2LS4xLjAxLS4xOS4wMy0uMjkuMDMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJjLjEgMCAuMTkuMDIuMjkuMDMuMi0uNjcuNDktMS4yOS44Ni0xLjg2QzcuNCA2LjI2IDkuNTUgNSAxMiA1czQuNiAxLjI2IDUuODUgMy4xN2MuMzcuNTcuNjYgMS4xOS44NiAxLjg2LjEtLjAxLjE5LS4wMy4yOS0uMDMgMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyem0tNyAzYzIuMDEgMCAzLjc0LTEuMjMgNC41LTNoLTljLjc2IDEuNzcgMi40OSAzIDQuNSAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hpbGRGcmllbmRseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMnY4aDhjMC00LjQyLTMuNTgtOC04LTh6bTIgNlY0LjM0YzEuNy42IDMuMDUgMS45NSAzLjY2IDMuNjZIMTV6bS04LjU2IDMtLjk1LTJIMnYyaDIuMjJzMS44OSA0LjA3IDIuMTIgNC40MmMtMS4xLjU5LTEuODQgMS43NS0xLjg0IDMuMDhDNC41IDIwLjQzIDYuMDcgMjIgOCAyMmMxLjc2IDAgMy4yMi0xLjMgMy40Ni0zaDIuMDhjLjI0IDEuNyAxLjcgMyAzLjQ2IDMgMS45MyAwIDMuNS0xLjU3IDMuNS0zLjUgMC0xLjA0LS40Ni0xLjk3LTEuMTgtMi42MUE3Ljk0OCA3Ljk0OCAwIDAgMCAyMSAxMUg2LjQ0ek04IDIwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNy4xNyAxNyA4IDE3czEuNS42NyAxLjUgMS41UzguODMgMjAgOCAyMHptOSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuMTcgMTcgMTcgMTdzMS41LjY3IDEuNSAxLjVTMTcuODMgMjAgMTcgMjB6bS43NC01LjM0LS4yOS4zN0EzLjUwNSAzLjUwNSAwIDAgMCAxMy44NCAxN2gtMi42OGMtLjUtMS4wNC0xLjUtMS44LTIuNjgtMS45N2wtLjQ0LS42N2MtLjEtLjE3LS4zNC0uNjktLjY3LTEuMzZoMTEuMjljLS4yMS41OS0uNTIgMS4xNS0uOTIgMS42NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvcnBvcmF0ZUZhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3VjNIMnYxOGgyMFY3SDEyem0tMiAxMkg0di0yaDZ2MnptMC00SDR2LTJoNnYyem0wLTRINFY5aDZ2MnptMC00SDRWNWg2djJ6bTEwIDEyaC04VjloOHYxMHptLTItOGgtNHYyaDR2LTJ6bTAgNGgtNHYyaDR2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb3R0YWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMyA2IDcuNThWNkg0djMuMTFMMSAxMS40bDEuMjEgMS41OUw0IDExLjYyVjIxaDE2di05LjM4bDEuNzkgMS4zNkwyMyAxMS40IDEyIDN6bTYgMTZoLTV2LTRoLTJ2NEg2di04LjlsNi00LjU4IDYgNC41OFYxOXpNMTAgMWMwIDEuNjYtMS4zNCAzLTMgMy0uNTUgMC0xIC40NS0xIDFINGMwLTEuNjYgMS4zNC0zIDMtMyAuNTUgMCAxLS40NSAxLTFoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvdW50ZXJ0b3BzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTBoLTRWN2MwLTEuNjYtMS4zNC0zLTMtM3MtMyAxLjM0LTMgM2gyYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYzSDhjMS4xIDAgMi0uOSAyLTJWNEg0djRjMCAxLjEuOSAyIDIgMkgydjJoMnY4aDE2di04aDJ2LTJ6TTYgNmgydjJINlY2em0wIDEydi02aDV2Nkg2em0xMiAwaC01di02aDV2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyaWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5aC02VjRIOEM1Ljc5IDQgNCA1Ljc5IDQgOHY2YzAgMS4xLjkgMiAyIDJoMnYyLjkzYy0uNjEtLjM1LTEuMTYtLjc4LTEuNjUtMS4yN2wtMS40MiAxLjQyQzYuNzQgMjAuODggOS4yNCAyMiAxMiAyMmMyLjc2IDAgNS4yNi0xLjEyIDcuMDctMi45M2wtMS40Mi0xLjQyYy0uNDkuNDktMS4wNS45Mi0xLjY1IDEuMjdWMTZoMmMxLjEgMCAyLS45IDItMnYtM2MwLTEuMS0uOS0yLTItMnptLTQgMTAuNzVjLS42NC4xNi0xLjMxLjI1LTIgLjI1cy0xLjM2LS4wOS0yLS4yNVYxNmg0djMuNzV6TTE4IDE0SDZWOGMwLTEuMS45LTIgMi0yaDJ2NWg4djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA2djEyaDJWOGgxMHYxMGgydi0yaDR2MmgyVjZIMnptMTggMnYyaC00VjhoNHptLTQgNnYtMmg0djJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb05vdFN0ZXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC41MSAxNS42OC0xLjQxLTEuNDEgNC40OC00LjQ4TDIzIDExLjJsLTQuNDkgNC40OHptLTMuNTMtMy41MyAzLjA3LTMuMDctNC4yNS00LjI2LTMuMDggMy4wN0w5LjMgNi40NyAxMy44IDJsNy4wOCA3LjA4LTQuNDggNC40OC0xLjQyLTEuNDF6bTYuMiA5LjA1LTEuNDEgMS40MS01Ljk0LTUuOTRMMTAuNSAyMEgxdi0yLjYzYzAtLjg0LjUyLTEuNTcgMS4zLTEuODguNTgtLjIzIDEuMjgtLjU2IDEuOTctMS4wMmwxLjM4IDEuMzhjLjA5LjEuMjIuMTUuMzUuMTVzLjI2LS4wNS4zNi0uMTVjLjItLjIuMi0uNTEgMC0uNzFsLTEuMjgtMS4yOGMuMjctLjI0LjUzLS41MS43Ny0uOGwxLjI3IDEuMjdhLjQ4NS40ODUgMCAwIDAgLjcgMGMuMi0uMi4yLS41MSAwLS43MWwtMS40LTEuNGMuMTktLjM0LjM0LS43Mi40NS0xLjEybDEuNzEgMS43MmEuNDg1LjQ4NSAwIDAgMCAuNyAwYy4xOS0uMi4xOS0uNS4wMS0uN2wtNy45LTcuOSAxLjQyLTEuNDFMMjEuMTggMjEuMnptLTguNzYtNS45NC0xLjY3LTEuNjgtMy4zMyAzLjMyYy0uNzguNzgtMi4wNS43OC0yLjgzLS4wMWwtLjE5LS4xNy0uNDcuMjRjLS4yOS4xNC0uNTkuMjctLjg5LjM5bC0uMDEuNjVoNi42NGwyLjc1LTIuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb05vdFRvdWNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi44MSAyLjgxIDEuMzkgNC4yMiA3IDkuODN2NC4zbC0yLjYtMS40OGMtLjE3LS4wOS0uMzQtLjE0LS41NC0uMTQtLjI2IDAtLjUuMDktLjcuMjZMMiAxMy44OGw2LjggNy4xOGMuNTcuNiAxLjM1Ljk0IDIuMTguOTRIMTdjLjYyIDAgMS4xOC0uMTkgMS42Ni0uNTJsMS4xMiAxLjEyIDEuNDEtMS40MUwyLjgxIDIuODF6TTE3IDIwaC02Yy0uMzkgMC0uNjQtLjIzLS43NS0uMzZMNi44NyAxNkg5di00LjE3bDguMTQgOC4xNGMtLjA1LjAxLS4wOS4wMy0uMTQuMDN6bS0zLjE3LTlIMTRWMy4yNWExLjI1IDEuMjUgMCAwIDEgMi41IDBWMTFoMVY1LjI1YTEuMjUgMS4yNSAwIDAgMSAyLjUgMHYxMS45MmwtMi0yVjEzaC0yLjE3bC0yLTJ6bS0uODMtLjgzVjIuMjVhMS4yNSAxLjI1IDAgMCAwLTIuNSAwdjUuNDJsMi41IDIuNXptLTMuNS0zLjVWNC4yNUM5LjUgMy41NiA4Ljk0IDMgOC4yNSAzYy0uNjcgMC0xLjIuNTMtMS4yNCAxLjE4TDkuNSA2LjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNzUgMTZhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDYuNzVjLjY5IDAgMS4yNS0uNTYgMS4yNS0xLjI1IDAtLjY3LS41My0xLjItMS4xOC0xLjI0TDguODcgMTBsMS40OC0yLjZjLjA5LS4xNy4xNC0uMzQuMTQtLjU0IDAtLjI2LS4wOS0uNS0uMjYtLjdMOS4xMiA1bC03LjE4IDYuOGMtLjYuNTYtLjk0IDEuMzUtLjk0IDIuMTdWMjBjMCAxLjY2IDEuMzQgMyAzIDNoMTMuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDcuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDguNzV6TTEwIDIxSDRjLS41NSAwLTEtLjQ1LTEtMXYtNmMwLS4zOS4yMy0uNjQuMzYtLjc1TDcgOS44N1YxMmgzdjl6bTUuNjUtMTYuMTQtLjA3LS4wN2MtLjU3LS42Mi0uODItMS40MS0uNjctMi4yTDE1IDJoLTEuODlsLS4wNi40M2MtLjIgMS4zNi4yNyAyLjcxIDEuMyAzLjcybC4wNy4wNmMuNTcuNjIuODIgMS40MS42NyAyLjJsLS4xMS41OWgxLjkxbC4wNi0uNDNjLjIxLTEuMzYtLjI3LTIuNzEtMS4zLTMuNzF6bTQgMC0uMDctLjA3Yy0uNTctLjYyLS44Mi0xLjQxLS42Ny0yLjJMMTkgMmgtMS44OWwtLjA2LjQzYy0uMiAxLjM2LjI3IDIuNzEgMS4zIDMuNzJsLjA3LjA2Yy41Ny42Mi44MiAxLjQxLjY3IDIuMmwtLjExLjU5aDEuOTFsLjA2LS40M2MuMjEtMS4zNi0uMjctMi43MS0xLjMtMy43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVsZXZhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTkgMTV2LTRoMXYtMi41YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAyVjE0aDF2NGgzek04LjUgOC41YTEuMjUgMS4yNSAwIDEgMCAwLTIuNSAxLjI1IDEuMjUgMCAwIDAgMCAyLjV6TTE4IDExbC0yLjUtNC0yLjUgNGg1em0tNSAyIDIuNSA0IDIuNS00aC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXNjYWxhdG9yV2FybmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAyYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptOSA3LjVjMCAuODMuNjcgMS41IDEuNSAxLjVzMS41LS42NyAxLjUtMS41UzE3LjgzIDggMTcgOHMtMS41LjY3LTEuNSAxLjV6bTMgMi41aC0yLjg0Yy0uNTguMDEtMS4xNC4zMi0xLjQ1Ljg2bC0uOTIgMS4zMkw5LjcyIDhhMi4wMiAyLjAyIDAgMCAwLTEuNzEtMUg1Yy0xLjEgMC0yIC45LTIgMnY2aDEuNXY3aDVWMTEuNjFMMTIuMDMgMTZoMi4ybC43Ny0xLjFWMjJoNHYtNWgxdi0zLjVjMC0uODItLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXNjYWxhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTIgM2gtMy4zbC01IDlIN2MtLjgzIDAtMS41LjY3LTEuNSAxLjVTNi4xNyAxOCA3IDE4aDMuM2w1LTlIMTdjLjgzIDAgMS41LS42NyAxLjUtMS41UzE3LjgzIDYgMTcgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhbWlseVJlc3Ryb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNGMwLTEuMTEuODktMiAyLTJzMiAuODkgMiAyLS44OSAyLTIgMi0yLS44OS0yLTJ6bTQgMTh2LTZoMi41bC0yLjU0LTcuNjNBMi4wMSAyLjAxIDAgMCAwIDE4LjA2IDdoLS4xMmEyIDIgMCAwIDAtMS45IDEuMzdsLS44NiAyLjU4YzEuMDguNiAxLjgyIDEuNzMgMS44MiAzLjA1djhoM3ptLTcuNS0xMC41Yy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41UzExIDkuMTcgMTEgMTBzLjY3IDEuNSAxLjUgMS41ek01LjUgNmMxLjExIDAgMi0uODkgMi0ycy0uODktMi0yLTItMiAuODktMiAyIC44OSAyIDIgMnptMiAxNnYtN0g5VjljMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2NmgxLjV2N2g0em02LjUgMHYtNGgxdi00YzAtLjgyLS42OC0xLjUtMS41LTEuNWgtMmMtLjgyIDAtMS41LjY4LTEuNSAxLjV2NGgxdjRoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZlbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTJ2LTJoLTJWN2wtMy0zLTIgMi0yLTItMiAyLTItMi0zIDN2M0gzdjJoMnYySDN2MmgydjRoMTR2LTRoMnYtMmgtMnYtMmgyem0tNS01LjE3IDEgMVYxMGgtMlY3LjgzbC40MS0uNDEuNTktLjU5em0tNCAwIC41OS41OS40MS40MVYxMGgtMlY3LjgzbC40MS0uNDEuNTktLjU5ek0xMSAxNHYtMmgydjJoLTJ6bTIgMnYyaC0ydi0yaDJ6TTcgNy44M2wxLTEgLjU5LjU5LjQxLjQxVjEwSDdWNy44M3pNNyAxMmgydjJIN3YtMnptMCA0aDJ2Mkg3di0yem0xMCAyaC0ydi0yaDJ2MnptMC00aC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpcmVFeHRpbmd1aXNoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE5aDEwdjFjMCAxLjEtLjkgMi0yIDJIOWMtMS4xIDAtMi0uOS0yLTJ2LTF6bTAtMWgxMHYtNUg3djV6TTE3IDN2NmwtMy4xNS0uNjZjLS4wMSAwLS4wMS4wMS0uMDIuMDIgMS41NS42MiAyLjcyIDEuOTggMy4wNyAzLjY0SDcuMWMuMzQtMS42NiAxLjUyLTMuMDIgMy4wNy0zLjY0LS4zMy0uMjYtLjYtLjU4LS44LS45NUw1IDYuNXYtMWw0LjM3LS45MUM5Ljg3IDMuNjUgMTAuODYgMyAxMiAzYy43IDAgMS4zNC4yNSAxLjg1LjY2TDE3IDN6bS00IDNjLS4wMy0uNTktLjQ1LTEtMS0xcy0xIC40NS0xIDEgLjQ1IDEgMSAxIDEtLjQ1IDEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpdG5lc3NDZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjU3IDE0Ljg2IDIyIDEzLjQzIDIwLjU3IDEyIDE3IDE1LjU3IDguNDMgNyAxMiAzLjQzIDEwLjU3IDIgOS4xNCAzLjQzIDcuNzEgMiA1LjU3IDQuMTQgNC4xNCAyLjcxIDIuNzEgNC4xNGwxLjQzIDEuNDNMMiA3LjcxbDEuNDMgMS40M0wyIDEwLjU3IDMuNDMgMTIgNyA4LjQzIDE1LjU3IDE3IDEyIDIwLjU3IDEzLjQzIDIybDEuNDMtMS40M0wxNi4yOSAyMmwyLjE0LTIuMTQgMS40MyAxLjQzIDEuNDMtMS40My0xLjQzLTEuNDNMMjIgMTYuMjlsLTEuNDMtMS40M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvb2RCYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgNS41IDYgNC41djlINnYtOWw2LTQuNU0xMiAzIDQgOXYxMmgxNlY5bC04LTZ6bS0uNSA2LjV2M0gxMXYtM2gtMXYzaC0uNXYtM2gtMXYzYzAgLjgzLjY3IDEuNSAxLjUgMS41djRoMXYtNGMuODMgMCAxLjUtLjY3IDEuNS0xLjV2LTNoLTF6bTEuNSAydjNoMVYxOGgxVjkuNWMtMS4xIDAtMiAuOS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3VuZGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTJoM0wxMiAzIDIgMTJoM3YzSDN2MmgydjNoMnYtM2g0djNoMnYtM2g0djNoMnYtM2gydi0yaC0ydi0zek03IDE1di00LjgxbDQtMy42VjE1SDd6bTYgMFY2LjU5bDQgMy42VjE1aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRnJlZUJyZWFrZmFzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxOWgxNnYySDR6TTIwIDNINHYxMGMwIDIuMjEgMS43OSA0IDQgNGg2YzIuMjEgMCA0LTEuNzkgNC00di0zaDJhMiAyIDAgMCAwIDItMlY1YzAtMS4xMS0uODktMi0yLTJ6bS00IDEwYzAgMS4xLS45IDItMiAySDhjLTEuMSAwLTItLjktMi0yVjVoMTB2OHptNC01aC0yVjVoMnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR2l0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDZIOVY0SDd2Mkg2bC00IDR2OWgyMHYtOWwtNC00ek00IDEyaDEwdjVINHYtNXptMTYgNWgtNHYtNi4xN2wyLTIgMiAyVjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR29sZkNvdXJzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOS41XCIsXCJjeVwiOlwiMTkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDUuOTIgOSAydjE4SDd2LTEuNzNjLTEuNzkuMzUtMyAuOTktMyAxLjczIDAgMS4xIDIuNjkgMiA2IDJzNi0uOSA2LTJjMC0uOTktMi4xNi0xLjgxLTUtMS45N1Y4Ljk4bDYtMy4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjBIMnYtMmg1Ljc1QTguMDMyIDguMDMyIDAgMCAwIDIgMTIuMjZjLjY0LS4xNiAxLjMxLS4yNiAyLS4yNiA0LjQyIDAgOCAzLjU4IDggOHptMTAtNy43NGMtLjY0LS4xNi0xLjMxLS4yNi0yLS4yNi0yLjkzIDAtNS40OCAxLjU4LTYuODggMy45M2E5LjgyIDkuODIgMCAwIDEgLjg3IDQuMDdoOHYtMmgtNS43NUE4LjA2MSA4LjA2MSAwIDAgMSAyMiAxMi4yNnptLTYuMzYtMS4yNGExMC4wMyAxMC4wMyAwIDAgMSA0LjA5LTVDMTUuNDQgNi4xNiAxMiA5LjY3IDEyIDE0di4wMmMuOTUtMS4yNyAyLjItMi4zIDMuNjQtM3ptLTQuMjItMi4xN0E4LjUyNyA4LjUyNyAwIDAgMCA2LjcgNEM4LjE0IDUuODYgOSA4LjE4IDkgMTAuNzFjMCAuMjEtLjAzLjQxLS4wNC42MS40My4yNC44My41MiAxLjIyLjgyYTkuOTEgOS45MSAwIDAgMSAxLjI0LTMuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb2xpZGF5VmlsbGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTggNC02IDZ2MTBoMTJWMTBMOCA0em00IDE0SDl2LTNIN3YzSDR2LTcuMTdsNC00IDQgNFYxOHptLTMtNUg3di0yaDJ2MnptOSA3VjguMzVMMTMuNjUgNGgtMi44M0wxNiA5LjE4VjIwaDJ6bTQgMFY2LjY5TDE5LjMxIDRoLTIuODNMMjAgNy41MlYyMGgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG90VHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjdcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjE1IDEyYy0uMzEtLjIyLS41OS0uNDYtLjgyLS43MmwtMS40LTEuNTVjLS4xOS0uMjEtLjQzLS4zOC0uNjktLjUtLjI5LS4xNC0uNjItLjIzLS45Ni0uMjNoLS4wM0M2LjAxIDkgNSAxMC4wMSA1IDExLjI1VjEySDJ2OGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ydi04SDExLjE1ek03IDIwSDV2LTZoMnY2em00IDBIOXYtNmgydjZ6bTQgMGgtMnYtNmgydjZ6bTQgMGgtMnYtNmgydjZ6TTE3LjQyIDcuMjFjLjU3LjYyLjgyIDEuNDEuNjcgMi4ybC0uMTEuNTloMS45MWwuMDYtLjQzYy4yMS0xLjM2LS4yNy0yLjcxLTEuMy0zLjcxbC0uMDctLjA3Yy0uNTctLjYyLS44Mi0xLjQxLS42Ny0yLjJMMTggM2gtMS44OWwtLjA2LjQzYy0uMiAxLjM2LjI3IDIuNzEgMS4zIDMuNzJsLjA3LjA2em0tNCAwYy41Ny42Mi44MiAxLjQxLjY3IDIuMmwtLjExLjU5aDEuOTFsLjA2LS40M2MuMjEtMS4zNi0uMjctMi43MS0xLjMtMy43MWwtLjA3LS4wN2MtLjU3LS42Mi0uODItMS40MS0uNjctMi4yTDE0IDNoLTEuODlsLS4wNi40M2MtLjIgMS4zNi4yNyAyLjcxIDEuMyAzLjcybC4wNy4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvdXNlU2lkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTJoM0wxMiAzIDIgMTJoM3Y4aDJ2LTJoMTB2Mmgydi04ek03LjIxIDEwaDkuNThsLjIxLjE5VjEySDd2LTEuODFsLjIxLS4xOXptNy4zNi0ySDkuNDNMMTIgNS42OSAxNC41NyA4ek03IDE2di0yaDEwdjJIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOS4zVjRoLTN2Mi42TDEyIDMgMiAxMmgzdjhoNnYtNmgydjZoNnYtOGgzbC0zLTIuN3pNMTcgMThoLTJ2LTZIOXY2SDd2LTcuODFsNS00LjUgNSA0LjVWMTh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEwaDRjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG91c2Vib2F0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTZjLTEuOTUgMC0yLjEgMS0zLjM0IDEtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMDkgMS0zLjMzIDF2MmMxLjkgMCAyLjE3LTEgMy4zNS0xIDEuMTkgMCAxLjQyIDEgMy4zMyAxIDEuOTUgMCAyLjA4LTEgMy4zMi0xczEuMzcgMSAzLjMyIDFjMS45MSAwIDIuMTQtMSAzLjMzLTEgMS4xOCAwIDEuNDUgMSAzLjM1IDF2LTJjLTEuMjQgMC0xLjM4LTEtMy4zMy0xLTEuOTEgMC0yLjE0IDEtMy4zMyAxLTEuMjQgMC0xLjM5LTEtMy4zNC0xem04LjM0LTQuNjYtMS4zNyAxLjM3Yy0uMTkuMTgtLjQ1LjI5LS43MS4yOUgxN1Y5LjY1bDEuMzIuOTdMMTkuNSA5IDEyIDMuNSA0LjUgOWwxLjE4IDEuNjFMNyA5LjY1VjEzSDUuNzRjLS4yNyAwLS41Mi0uMTEtLjcxLS4yOWwtMS4zNy0xLjM3LTEuNDEgMS40MSAxLjM3IDEuMzdjLjU2LjU2IDEuMzMuODggMi4xMi44OGgxMi41MWMuOCAwIDEuNTYtLjMyIDIuMTItLjg4bDEuMzctMS4zNy0xLjQtMS40MXpNMTMgMTN2LTJoLTJ2Mkg5VjguMThsMy0yLjIgMyAyLjJWMTNoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJcm9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNmMtMS42NiAwLTMgMS4zNC0zIDN2NGMwIC41NS0uNDUgMS0xIDF2LTRjMC0xLjY2LTEuMzQtMy0zLTNoLTRjLTEuNjYgMC0zIDEuMzQtMyAzaDJjMC0uNTUuNDUtMSAxLTFoNGMuNTUgMCAxIC40NSAxIDF2MUg2Yy0yLjIxIDAtNCAxLjc5LTQgNHYzaDE1di0yYzEuNjYgMCAzLTEuMzQgMy0zVjljMC0uNTUuNDUtMSAxLTFoMVY2aC0xem0tNiAxMEg0di0xYzAtMS4xLjktMiAyLTJoOXYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2l0Y2hlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA1aDJ2M0g4em0wIDdoMnY1SDh6bTEwLTkuOTlMNiAyYTIgMiAwIDAgMC0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xMS0uOS0xLjk5LTItMS45OXpNMTggMjBINnYtOS4wMmgxMlYyMHptMC0xMUg2VjRoMTJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1lZXRpbmdSb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOVY0aC00VjNINXYxNkgzdjJoMTJWNmgydjE1aDR2LTJoLTJ6bS02IDBIN1Y1aDZ2MTR6bS0zLThoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWljcm93YXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTQgNmgxMHYxMkg0VjZ6bTE2IDEyaC00VjZoNHYxMnptLTEtOWgtMlY3aDJ2MnptLTEgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptLTcuNzUtMWMtLjc5IDAtMS4zNy0uMzgtMS43OS0uNjYtLjMzLS4yMi0uNTItLjM0LS43MS0uMzQtLjM3IDAtLjguNDEtLjk1LjYxbC0xLjQyLTEuNDJjLjM1LS40IDEuMjEtMS4xOSAyLjM3LTEuMTkuOCAwIDEuMzkuMzkgMS44MS42Ny4zMS4yMS41MS4zMy42OS4zMy4zNyAwIC44LS40MS45NS0uNjFsMS40MiAxLjQyYy0uMzYuNC0xLjIxIDEuMTktMi4zNyAxLjE5em0wLTVjLS43OSAwLTEuMzctLjM4LTEuNzktLjY2LS4zMy0uMjItLjUyLS4zNC0uNzEtLjM0LS4zNyAwLS44LjQxLS45NS42MUw1LjM3IDkuMTlDNS43MyA4Ljc5IDYuNTkgOCA3Ljc1IDhjLjggMCAxLjM5LjM5IDEuODEuNjcuMzEuMjEuNTEuMzMuNjkuMzMuMzcgMCAuOC0uNDEuOTUtLjYxbDEuNDIgMS40MmMtLjM2LjQtMS4yMSAxLjE5LTIuMzcgMS4xOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5pZ2h0U2hlbHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDUuNSA2IDQuNXY5SDZ2LTlsNi00LjVNMTIgMyA0IDl2MTJoMTZWOWwtOC02em0zIDloLTMuNXYzLjVIOFYxMUg3djdoMXYtMS41aDhWMThoMXYtNGMwLTEuMS0uOS0yLTItMnptLTUuMjUuNWExLjI1IDEuMjUgMCAxIDAgMCAyLjUgMS4yNSAxLjI1IDAgMCAwIDAtMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9CYWNrcGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuOTggNC4xNWMuMDEgMCAuMDEtLjAxLjAyLS4wMVYyaDN2Mmg0VjJoM3YyLjE0YzEuNzIuNDUgMyAyIDMgMy44NnY5LjE3bC0yLTJWOGMwLTEuMS0uOS0yLTItMkg4LjgzTDYuOTggNC4xNXpNMTQuODMgMTJsMS42NyAxLjY3VjEyaC0xLjY3em00Ljk1IDEwLjYxLS44NS0uODVjLS4yOC4xNS0uNTkuMjQtLjkzLjI0SDZjLTEuMSAwLTItLjktMi0yVjhjMC0uMzYuMDYtLjY5LjE1LTEuMDJMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNCAxLjQyek0xNy4xNyAyMGwtNi02SDcuNXYtMmgxLjY3TDYgOC44M1YyMGgxMS4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vQ2VsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDZ2OC4xN2wyIDJWM2MwLTEuMS0uOS0xLjk5LTItMS45OUw3IDFjLS44NSAwLTEuNTguNTUtMS44NyAxLjNMOC44MyA2SDE3ek03IDNoMTB2MUg3VjN6bTE0LjE5IDE4LjE5TDE5IDE5bC0yLTJMNyA3IDUgNSAyLjgxIDIuODEgMS4zOSA0LjIyIDUgNy44M1YyMWMwIDEuMS45IDIgMiAyaDEwYy44NSAwIDEuNTgtLjU1IDEuODctMS4zbC45MS45MSAxLjQxLTEuNDJ6TTE3IDIxSDd2LTFoMTB2MXpNNyAxOFY5LjgzTDE1LjE3IDE4SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb0RyaW5rcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjJsOC4yMyA4LjIzTDExIDE0djVINnYyaDEydi0uMTdsMS43OCAxLjc4IDEuNDEtMS40MnpNMTMgMTl2LTMuMTdMMTYuMTcgMTlIMTN6TTcuODMgNWwtMi0ySDIxdjJsLTYuMiA2Ljk3LTEuNDItMS40MkwxNC43NyA5aC0yLjk0bC0yLTJoNi43NGwxLjc4LTJINy44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vRmxhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjQgNS42SDIyTDE5IDExVjdoLTFWMmg0bC0xLjYgMy42ek0xNiAxMS40djEuNzdsMiAyVjExYzAtLjg4LS43Mi0xLjYtMS42LTEuNmgtMi41NEwxMi41OCA4aC0xLjc1bDMuNCAzLjRIMTZ6TTIuMSAyLjEuNjkgMy41MWw1LjY2IDUuNjYtLjIxLjIzSDMuNmMtLjg4IDAtMS42LjcyLTEuNiAxLjZ2OS40YzAgLjg4LjcyIDEuNiAxLjYgMS42aDEyLjhjLjc1IDAgMS4zOC0uNTIgMS41NS0xLjIybDIuNTQgMi41NCAxLjQxLTEuNDFMMi4xIDIuMXptOS40IDEzLjRjMCAuODMtLjY3IDEuNS0xLjUgMS41cy0xLjUtLjY3LTEuNS0xLjVTOS4xNyAxNCAxMCAxNHMxLjUuNjcgMS41IDEuNXptNC40NiA0LjVINHYtOC42aDMuMDJsLjU5LS42NS4xNS0uMTYgMS41IDEuNUEzLjQ4NiAzLjQ4NiAwIDAgMCA2LjUgMTUuNWMwIDEuOTMgMS41NyAzLjUgMy41IDMuNSAxLjY4IDAgMy4wNy0xLjE4IDMuNDItMi43NmwyLjU1IDIuNTUtLjAxIDEuMjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb0Zvb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDIxaDE1LjAxdi45OGMwIC41Ni0uNDUgMS4wMS0xLjAxIDEuMDFIMi4wMWMtLjU2IDAtMS4wMS0uNDUtMS4wMS0xLjAxVjIxem0xOS40OSAyLjMxTDE2IDE4LjgzVjE5SDF2LTJoMTMuMTdsLTItMkgxYzAtMy4yNCAyLjQ2LTUuMTcgNS4zOC01Ljc5bC01LjctNS43TDIuMSAyLjEgMTMgMTNsMiAyIDYuOSA2LjktMS40MSAxLjQxek0xMC4xNyAxM2wtMi0yYy0xLjQyLjA2LTMuNTIuNTYtNC41NSAyaDYuNTV6TTIzIDVoLTVWMWgtMnY0aC01bC4yMyAyaDkuNTZsLTEgOS45NyAxLjgzIDEuODNMMjMgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vTWVldGluZ1Jvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDV2My44OGwyIDJWNmgzdjcuODhsMiAyVjRoLTVWM0g2LjEybDIgMnpNMi40MSAyLjEzIDEgMy41NGw0IDRWMTlIM3YyaDExdi00LjQ2TDIwLjQ2IDIzbDEuNDEtMS40MUwyLjQxIDIuMTN6TTEyIDE5SDdWOS41NGw1IDVWMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb1Bob3RvZ3JhcGh5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC45IDYuMDcgNy40OCA0LjY2IDkgM2g2bDEuODMgMkgyMGMxLjEgMCAyIC45IDIgMnYxMmMwIC4wNS0uMDEuMS0uMDIuMTZMMjAgMTcuMTdWN2gtNC4wNWwtMS44My0ySDkuODhMOC45IDYuMDd6bTExLjU5IDE3LjI0TDE4LjE3IDIxSDRjLTEuMSAwLTItLjktMi0yVjdjMC0uNTkuMjctMS4xMi42OC0xLjQ5bC0yLTJMMi4xIDIuMWwxOS44IDE5LjgtMS40MSAxLjQxek05LjE5IDEyLjAyYy0uMTEuMzEtLjE5LjYzLS4xOS45OCAwIDEuNjYgMS4zNCAzIDMgMyAuMzUgMCAuNjctLjA4Ljk4LS4xOWwtMy43OS0zLjc5ek0xNi4xNyAxOWwtMS42OC0xLjY4Yy0uNzMuNDMtMS41OC42OC0yLjQ5LjY4LTIuNzYgMC01LTIuMjQtNS01IDAtLjkxLjI1LTEuNzYuNjgtMi40OUw0LjE3IDdINHYxMmgxMi4xN3ptLTEuMzYtNy4wMiAyLjA3IDIuMDdjLjA4LS4zNC4xMi0uNjkuMTItMS4wNSAwLTIuNzYtMi4yNC01LTUtNS0uMzYgMC0uNzEuMDQtMS4wNi4xMmwyLjA3IDIuMDdjLjg0LjMgMS41Ljk2IDEuOCAxLjc5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9TdHJvbGxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMjBjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yIDIgLjkgMiAyem03LTExLjM0djMuNTFsMiAydi03LjljLjU4LS42OC45Ny0xLjI3IDEuNjUtMS4yNy43NyAwIDEuMzUuNjYgMS4zNSAxLjQ4VjdoMnYtLjUyQzIyIDQuNTYgMjAuNTIgMyAxOC42NSAzYy0xLjY2IDAtMi41NCAxLjI3LTMuMTggMi4wM2wtMy41IDQuMTEgMS40MiAxLjQyTDE1IDguNjZ6bTQuNzggMTMuOTUtMS45MS0xLjkxYy0uMjkuNzYtMS4wMSAxLjMtMS44NyAxLjMtMS4xIDAtMi0uOS0yLTIgMC0uODYuNTQtMS41OCAxLjMtMS44N0wxNC4xNyAxN0g3LjQzYy0uODUgMC0xLjMxLTEtLjc2LTEuNjVsMi42OS0zLjE2LTcuOTctNy45N0wyLjggMi44MWw3Ljg2IDcuODYgMS40MiAxLjQyIDkuMTEgOS4xMS0xLjQxIDEuNDF6TTEyLjE3IDE1bC0xLjM5LTEuMzlMOS42IDE1aDIuNTd6TTEwIDVjLjI5IDAgLjU4LjAyLjg2LjA1TDkuNDkgNi42N2wxLjQyIDEuNDJMMTQuMyA0LjFDMTMuMDMgMy40IDExLjU2IDMgMTAgM2MtMS4yMyAwLTIuNC4yNS0zLjQ3LjdMOC4xIDUuMjdBNy4wOSA3LjA5IDAgMCAxIDEwIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVPdGhlckhvdXNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDMgMSAxMS40bDEuMjEgMS41OUw0IDExLjYyVjIxaDE2di05LjM4bDEuNzkgMS4zNkwyMyAxMS40IDEyIDN6bTYgMTZINnYtOC45bDYtNC41OCA2IDQuNThWMTl6bS05LTVjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTEgLjQ1LTEgMS0xIDEgLjQ1IDEgMXptMy0xYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTMgMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDEtLjQ1IDEtMSAxLTEtLjQ1LTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDgtMy4yNSAzLjI1Yy4zMS4xMi41Ni4yNy43Ny4zOS4zNy4yMy41OS4zNiAxLjE1LjM2cy43OC0uMTMgMS4xNS0uMzZjLjQ2LS4yNyAxLjA4LS42NCAyLjE5LS42NHMxLjczLjM3IDIuMTguNjRjLjM3LjIyLjYuMzYgMS4xNS4zNi41NSAwIC43OC0uMTMgMS4xNS0uMzYuMTItLjA3LjI2LS4xNS40MS0uMjNMMTAuNDggNUM4LjkzIDMuNDUgNy41IDIuOTkgNSAzdjIuNWMxLjgyLS4wMSAyLjg5LjM5IDQgMS41bDEgMXptMTIgOC41aC0uMDIuMDJ6bS0xNi42NS0xYy41NSAwIC43OC4xNCAxLjE1LjM2LjQ1LjI3IDEuMDcuNjQgMi4xOC42NHMxLjczLS4zNyAyLjE4LS42NGMuMzctLjIzLjU5LS4zNiAxLjE1LS4zNi41NSAwIC43OC4xNCAxLjE1LjM2LjQ1LjI3IDEuMDcuNjQgMi4xOC42NHMxLjczLS4zNyAyLjE4LS42NGMuMzctLjIzLjU5LS4zNiAxLjE1LS4zNi41NSAwIC43OC4xNCAxLjE1LjM2LjQ1LjI3IDEuMDYuNjMgMi4xNi42NHYtMmMtLjU1IDAtLjc4LS4xNC0xLjE1LS4zNi0uNDUtLjI3LTEuMDctLjY0LTIuMTgtLjY0cy0xLjczLjM3LTIuMTguNjRjLS4zNy4yMy0uNi4zNi0xLjE1LjM2cy0uNzgtLjE0LTEuMTUtLjM2Yy0uNDUtLjI3LTEuMDctLjY0LTIuMTgtLjY0cy0xLjczLjM3LTIuMTguNjRjLS4zNy4yMy0uNTkuMzYtMS4xNS4zNi0uNTUgMC0uNzgtLjE0LTEuMTUtLjM2LS40NS0uMjctMS4wNy0uNjQtMi4xOC0uNjRzLTEuNzMuMzctMi4xOC42NGMtLjM3LjIzLS41OS4zNi0xLjE1LjM2djJjMS4xMSAwIDEuNzMtLjM3IDIuMi0uNjQuMzctLjIzLjYtLjM2IDEuMTUtLjM2ek0xOC42NyAxOGMtMS4xMSAwLTEuNzMuMzctMi4xOC42NC0uMzcuMjMtLjYuMzYtMS4xNS4zNi0uNTUgMC0uNzgtLjE0LTEuMTUtLjM2LS40NS0uMjctMS4wNy0uNjQtMi4xOC0uNjRzLTEuNzMuMzctMi4xOS42NGMtLjM3LjIzLS41OS4zNi0xLjE1LjM2cy0uNzgtLjEzLTEuMTUtLjM2Yy0uNDUtLjI3LTEuMDctLjY0LTIuMTgtLjY0cy0xLjczLjM3LTIuMTkuNjRjLS4zNy4yMy0uNTkuMzYtMS4xNS4zNnYyYzEuMTEgMCAxLjczLS4zNyAyLjE5LS42NC4zNy0uMjMuNi0uMzYgMS4xNS0uMzYuNTUgMCAuNzguMTMgMS4xNS4zNi40NS4yNyAxLjA3LjY0IDIuMTguNjRzMS43My0uMzcgMi4xOS0uNjRjLjM3LS4yMy41OS0uMzYgMS4xNS0uMzYuNTUgMCAuNzguMTQgMS4xNS4zNi40NS4yNyAxLjA3LjY0IDIuMTguNjRzMS43Mi0uMzcgMi4xOC0uNjRjLjM3LS4yMy41OS0uMzYgMS4xNS0uMzYuNTUgMCAuNzguMTQgMS4xNS4zNi40NS4yNyAxLjA3LjY0IDIuMTguNjR2LTJjLS41NiAwLS43OC0uMTMtMS4xNS0uMzYtLjQ1LS4yNy0xLjA3LS42NC0yLjE4LS42NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNi41XCIsXCJjeVwiOlwiNS41XCIsXCJyXCI6XCIyLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJpY2VCb3dsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNjYgMTRjLS42NiAxLjkyLTIuMjQgMy41NC00LjQgNC4zOWwtMS4yNi40OVYyMGgtNHYtMS4xMmwtMS4yNy0uNWMtMi4xNi0uODUtMy43NC0yLjQ3LTQuNC00LjM5aDE1LjMzTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyYzAgMy42OSAyLjQ3IDYuODYgNiA4LjI1VjIyaDh2LTEuNzVjMy41My0xLjM5IDYtNC41NiA2LTguMjUgMC01LjUyLTQuNDgtMTAtMTAtMTB6bS0yIDEwVjQuMjZjLjY0LS4xNiAxLjMxLS4yNiAyLS4yNnMxLjM2LjEgMiAuMjZWMTJoLTR6bTYgMFY1LjA4YzIuMzkgMS4zOSA0IDMuOTYgNCA2LjkyaC00ek00IDEyYzAtMi45NSAxLjYxLTUuNTMgNC02LjkyVjEySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb29maW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMThoLTJ2LTJoMnYyem0yLTRIOXY2aDZ2LTZ6bTQtNC43VjRoLTN2Mi42TDEyIDMgMiAxMmgzbDctNi4zMUwxOSAxMmgzbC0zLTIuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvb21QcmVmZXJlbmNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjY5IDE2LjM3IDEuMTQtMS0xLTEuNzMtMS40NS40OWMtLjMyLS4yNy0uNjgtLjQ4LTEuMDgtLjYzTDE5IDEyaC0ybC0uMyAxLjQ5Yy0uNC4xNS0uNzYuMzYtMS4wOC42M2wtMS40NS0uNDktMSAxLjczIDEuMTQgMWMtLjA4LjUtLjA4Ljc2IDAgMS4yNmwtMS4xNCAxIDEgMS43MyAxLjQ1LS40OWMuMzIuMjcuNjguNDggMS4wOC42M0wxNyAyMmgybC4zLTEuNDljLjQtLjE1Ljc2LS4zNiAxLjA4LS42M2wxLjQ1LjQ5IDEtMS43My0xLjE0LTFjLjA4LS41MS4wOC0uNzcgMC0xLjI3ek0xOCAxOWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTEtMTV2NmgtMlY2aC0ydjZoLTJWNUg3djE0aDV2Mkgzdi0yaDJWM2gxMHYxaDR6bS03IDloLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUm9vbVNlcnZpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ljk4IDE3SDJ2MmgyMHYtMnpNMjEgMTZjLS4yNy00LjA3LTMuMjUtNy40LTcuMTYtOC4yMUEyLjAwNiAyLjAwNiAwIDAgMCAxMiA1YTIuMDA2IDIuMDA2IDAgMCAwLTEuODQgMi43OUM2LjI1IDguNiAzLjI3IDExLjkzIDMgMTZoMTh6bS05LTYuNDJjMi45NSAwIDUuNDcgMS44MyA2LjUgNC40MWgtMTNBNy4wMDIgNy4wMDIgMCAwIDEgMTIgOS41OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJ2SG9va3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxN3YtNmMwLTEuMS0uOS0yLTItMkg3VjdsLTMgMyAzIDN2LTJoNHYzSDR2M2MwIDEuMS45IDIgMiAyaDJjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g4di0yaC0yem0tOSAzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTctNmgtNHYtM2g0djN6TTE3IDJ2Mkg5djJoOHYybDMtMy0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbW9rZUZyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjUgMTNIMjJ2M2gtMS41ek0xOCAxM2gxLjV2M0gxOHptLTEgMGgtMi4zNEwxNyAxNS4zNHptLTIuNS00LjM1aDEuNTNjMS4wNSAwIDEuOTcuNzQgMS45NyAyLjA1VjEyaDEuNXYtMS42NGMwLTEuODEtMS42LTMuMTYtMy40Ny0zLjE2SDE0LjVjLTEuMDIgMC0xLjg1LS45OC0xLjg1LTJzLjgzLTEuNzUgMS44NS0xLjc1di0xLjVhMy4zNSAzLjM1IDAgMCAwIDAgNi43em00LjM1LTMuOTJjLjYyLS42MSAxLTEuNDUgMS0yLjM4aC0xLjVjMCAxLjAyLS44MyAxLjg1LTEuODUgMS44NXYxLjVjMi4yNCAwIDQgMS44MyA0IDQuMDdWMTJIMjJWOS43NmMwLTIuMjItMS4yOC00LjE0LTMuMTUtNS4wM3pNMy40MSA0LjU5IDIgNmw3IDdIMnYzaDEwbDcgNyAxLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbW9raW5nUm9vbXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE2aDEuNXYzSDE4ek0yIDE2aDE1djNIMnptMTQuMDMtNS44SDE0LjVjLTEuMDIgMC0xLjg1LS45OC0xLjg1LTJzLjgzLTEuNzUgMS44NS0xLjc1di0xLjVhMy4zNSAzLjM1IDAgMCAwIDAgNi43aDEuNTNjMS4wNSAwIDEuOTcuNzQgMS45NyAyLjA1VjE1aDEuNXYtMS42NGMwLTEuODEtMS42LTMuMTYtMy40Ny0zLjE2ek0yMC41IDE2SDIydjNoLTEuNXptLTEuNjUtOC4yN2MuNjItLjYxIDEtMS40NSAxLTIuMzhDMTkuODUgMy41IDE4LjM1IDIgMTYuNSAydjEuNWMxLjAyIDAgMS44NS44MyAxLjg1IDEuODVTMTcuNTIgNy4yIDE2LjUgNy4ydjEuNWMyLjI0IDAgNCAxLjgzIDQgNC4wN1YxNUgyMnYtMi4yNGMwLTIuMjItMS4yOC00LjE0LTMuMTUtNS4wM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNvYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4yNSA2Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NS0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NW0wLTEuNUMxMy4wMSA0LjUgMTIgNS41MSAxMiA2Ljc1UzEzLjAxIDkgMTQuMjUgOXMyLjI1LTEuMDEgMi4yNS0yLjI1LTEuMDEtMi4yNS0yLjI1LTIuMjV6bTUuNzUgMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjUtLjUtLjIyLS41LS41LjIyLS41LjUtLjVNMjAgNGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS0zLjUtM2MtLjgzIDAtMS41LjY3LTEuNSAxLjVTMTUuNjcgNCAxNi41IDQgMTggMy4zMyAxOCAyLjUgMTcuMzMgMSAxNi41IDF6bTQuMjUgMTVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDYuNzVjLjY5IDAgMS4yNS0uNTYgMS4yNS0xLjI1IDAtLjY3LS41My0xLjItMS4xOC0xLjI0TDguODcgMTBsMS40OC0yLjZjLjA5LS4xNy4xNC0uMzQuMTQtLjU0IDAtLjI2LS4wOS0uNS0uMjYtLjdMOS4xMiA1bC03LjE4IDYuOGMtLjYuNTYtLjk0IDEuMzUtLjk0IDIuMTdWMjBjMCAxLjY2IDEuMzQgMyAzIDNoMTMuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDcuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDguNzV6TTEwIDIxSDRjLS41NSAwLTEtLjQ1LTEtMXYtNmMwLS4zOS4yMy0uNjQuMzYtLjc1TDcgOS44N1YxMmgzdjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjQ5IDkuNjNjLS4xOC0yLjc5LTEuMzEtNS41MS0zLjQzLTcuNjNhMTIuMTg4IDEyLjE4OCAwIDAgMC0zLjU1IDcuNjNjMS4yOC42OCAyLjQ2IDEuNTYgMy40OSAyLjYzIDEuMDMtMS4wNiAyLjIxLTEuOTQgMy40OS0yLjYzem0tMy40NC00LjQ0Yy42MyAxLjAzIDEuMDcgMi4xOCAxLjMgMy4zOC0uNDcuMy0uOTEuNjMtMS4zNC45OC0uNDItLjM0LS44Ny0uNjctMS4zMy0uOTcuMjUtMS4yLjcxLTIuMzUgMS4zNy0zLjM5ek0xMiAxNS40NWExMi4xMSAxMi4xMSAwIDAgMC0zLjA2LTMuMmMtLjEzLS4wOS0uMjctLjE2LS40LS4yNi4xMy4wOS4yNy4xNy4zOS4yNUExMS43NzcgMTEuNzc3IDAgMCAwIDIgMTBjMCA1LjMyIDMuMzYgOS44MiA4LjAzIDExLjQ5LjYzLjIzIDEuMjkuNCAxLjk3LjUxLjY4LS4xMiAxLjMzLS4yOSAxLjk3LS41MUMxOC42NCAxOS44MiAyMiAxNS4zMiAyMiAxMGMtNC4xOCAwLTcuODUgMi4xNy0xMCA1LjQ1em0xLjMyIDQuMTVjLS40NC4xNS0uODguMjctMS4zMy4zNy0uNDQtLjA5LS44Ny0uMjEtMS4yOC0uMzYtMy4yOS0xLjE4LTUuNy0zLjk5LTYuNDUtNy4zNSAxLjEuMjYgMi4xNS43MSAzLjEyIDEuMzNsLS4wMi4wMWMuMTMuMDkuMjYuMTguMzkuMjVsLjA3LjA0Yy45OS43MiAxLjg0IDEuNjEgMi41MSAyLjY1TDEyIDE5LjFsMS42Ny0yLjU1YTEwLjE5IDEwLjE5IDAgMCAxIDIuNTMtMi42NmwuMDctLjA1Yy4wOS0uMDUuMTgtLjExLjI3LS4xN2wtLjAxLS4wMmMuOTgtLjY1IDIuMDctMS4xMyAzLjIxLTEuNC0uNzUgMy4zNy0zLjE1IDYuMTgtNi40MiA3LjM1em0tNC4zMy03LjMyYy0uMDItLjAxLS4wNC0uMDMtLjA1LS4wNCAwIDAgLjAxIDAgLjAxLjAxLjAxLjAxLjAyLjAyLjA0LjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTlIOHYtNi42M2MxLjI2LS4zNCAyLjExLTEuMjcgMi43Ny0xLjk5QzExLjYgOS40NyAxMi4wOCA5IDEzIDloMnYxMHpNMTAgMi4wMmMtMS44OSAwLTMuNTEgMS4xMS00LjI3IDIuNzFDNC4xNSA1LjI2IDMgNi43NCAzIDguNWMwIDEuODYgMS4yOCAzLjQxIDMgMy44NlYyMWgxMXYtMmgyYzEuMSAwIDItLjkgMi0ydi02YzAtMS4xLS45LTItMi0yaC0xLjU2Yy4zNS0uNTkuNTYtMS4yNy41Ni0yIDAtMi4yMS0xLjc5LTQtNC00LS4zNCAwLS42Ni4wNS0uOTguMTNBNC43MDcgNC43MDcgMCAwIDAgMTAgMi4wMnpNNyAxMC41Yy0xLjEgMC0yLS45LTItMiAwLS44NS41NS0xLjYgMS4zNy0xLjg4bC44LS4yNy4zNi0uNzZDOCA0LjYyIDguOTQgNC4wMiAxMCA0LjAyYy43OSAwIDEuMzkuMzUgMS43NC42NWwuNzguNjVTMTMuMTYgNSAxMy45OSA1YzEuMSAwIDIgLjkgMiAyaC0zQzkuNjcgNyA5LjE1IDEwLjUgNyAxMC41ek0xNyAxN3YtNmgydjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGFpcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djE0SDVWNWgxNG0wLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMSAzaC00LjQydjMuMzNIMTF2My4zM0g4LjQyVjE2SDZ2Mmg0LjQydi0zLjMzSDEzdi0zLjMzaDIuNThWOEgxOFY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RvcmVmcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjkgOC44OS0xLjA1LTQuMzdjLS4yMi0uOS0xLTEuNTItMS45MS0xLjUySDUuMDVjLS45IDAtMS42OS42My0xLjkgMS41MkwyLjEgOC44OWMtLjI0IDEuMDItLjAyIDIuMDYuNjIgMi44OC4wOC4xMS4xOS4xOS4yOC4yOVYxOWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi02Ljk0Yy4wOS0uMDkuMi0uMTguMjgtLjI4LjY0LS44Mi44Ny0xLjg3LjYyLTIuODl6bS0yLjk5LTMuOSAxLjA1IDQuMzdjLjEuNDIuMDEuODQtLjI1IDEuMTctLjE0LjE4LS40NC40Ny0uOTQuNDctLjYxIDAtMS4xNC0uNDktMS4yMS0xLjE0TDE2Ljk4IDVsMS45My0uMDF6TTEzIDVoMS45NmwuNTQgNC41MmMuMDUuMzktLjA3Ljc4LS4zMyAxLjA3LS4yMi4yNi0uNTQuNDEtLjk1LjQxLS42NyAwLTEuMjItLjU5LTEuMjItMS4zMVY1ek04LjQ5IDkuNTIgOS4wNCA1SDExdjQuNjljMCAuNzItLjU1IDEuMzEtMS4yOSAxLjMxLS4zNCAwLS42NS0uMTUtLjg5LS40MWExLjQyIDEuNDIgMCAwIDEtLjMzLTEuMDd6bS00LjQ1LS4xNkw1LjA1IDVoMS45N2wtLjU4IDQuODZjLS4wOC42NS0uNiAxLjE0LTEuMjEgMS4xNC0uNDkgMC0uOC0uMjktLjkzLS40Ny0uMjctLjMyLS4zNi0uNzUtLjI2LTEuMTd6TTUgMTl2LTYuMDNjLjA4LjAxLjE1LjAzLjIzLjAzLjg3IDAgMS42Ni0uMzYgMi4yNC0uOTUuNi42IDEuNC45NSAyLjMxLjk1Ljg3IDAgMS42NS0uMzYgMi4yMy0uOTMuNTkuNTcgMS4zOS45MyAyLjI5LjkzLjg0IDAgMS42NC0uMzUgMi4yNC0uOTUuNTguNTkgMS4zNy45NSAyLjI0Ljk1LjA4IDAgLjE1LS4wMi4yMy0uMDNWMTlINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0cm9sbGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMjBjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yIDIgLjkgMiAyek02IDE4Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptOS05LjM0TDkuNiAxNUgxNVY4LjY2TTE4LjY1IDNDMjAuNTIgMyAyMiA0LjU2IDIyIDYuNDhWN2gtMnYtLjUyQzIwIDUuNjYgMTkuNDIgNSAxOC42NSA1Yy0uNjggMC0xLjA3LjU5LTEuNjUgMS4yN1YxNWMwIDEuMS0uOSAyLTIgMkg3LjQzYy0uODUgMC0xLjMxLTEtLjc2LTEuNjVsOC44LTEwLjMyQzE2LjExIDQuMjcgMTYuOTkgMyAxOC42NSAzek0xMCA1Yy0uNjUgMC0xLjI5LjA5LTEuOTEuMjdsMS40IDEuNCAxLjM3LTEuNjFBNi4xMSA2LjExIDAgMCAwIDEwIDVtMC0yYzEuNTYgMCAzLjAzLjQgNC4zIDEuMUw5LjYgOS42MSA0LjcyIDQuNzJBOC45NjIgOC45NjIgMCAwIDEgMTAgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhcGFzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTBWMWgtOHY5YzAgMS44NiAxLjI4IDMuNDEgMyAzLjg2VjIxaC0ydjJoNnYtMmgtMnYtNy4xNGMxLjcyLS40NSAzLTIgMy0zLjg2em0tMi03djNoLTRWM2g0em0tNCA3VjhoNHYyYzAgMS4xLS45IDItMiAycy0yLS45LTItMnptLTYtMUg4VjhoMmEyLjUgMi41IDAgMCAwIDAtNUg4VjFINnYySDRhMi41IDIuNSAwIDAgMCAwIDVoMnYxSDRhMi41IDIuNSAwIDAgMCAwIDVoMnY5aDJ2LTloMmEyLjUgMi41IDAgMCAwIDAtNXpNNCA2Yy0uMjggMC0uNS0uMjItLjUtLjVTMy43MiA1IDQgNWg2Yy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNUg0em02IDZINGMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDZjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNmgtMlY0aDJ2MnptMiAxaC0ydjJoMlY3em0xIDJoMlY3aC0ydjJ6bTAtNWgtMnYyaDJWNHptLTQgM2gtMnYyaDJWN3ptNCAzaC0ydjJoMnYtMnptLTMgMGgtMnYyaDJ2LTJ6bS0zLTZoLTJ2MmgyVjR6bTcgMTEuODJ2NC4xNWMwIC41Ni0uNDcgMS4wMy0xLjAzIDEtMi44OS0uMTctNS42LTEuMDMtNy45Ny0yLjRBMTcuOTk5IDE3Ljk5OSAwIDAgMSA0LjQzIDEyYTE3Ljg5IDE3Ljg5IDAgMCAxLTIuNC03Ljk3QzIgMy40NyAyLjQ3IDMgMy4wMyAzaDQuMTVjLjQ4IDAgLjg5LjM0Ljk4LjhsLjc0IDMuNjhhLjk5Ljk5IDAgMCAxLS4yNy45TDYuMSAxMC45YzEuNDMgMi41IDMuNSA0LjU3IDYgNmwyLjUyLTIuNTJhLjk4Ljk4IDAgMCAxIC45LS4yN2wzLjY3LjczYy40Ny4wOS44MS41LjgxLjk4ek01LjE4IDguOTlsMS42NS0xLjY1TDYuMzYgNUg0LjEzYy4xNyAxLjM3LjUzIDIuNzEgMS4wNSAzLjk5ek0xOCAxNi42NGwtMi4zNC0uNDctMS42NSAxLjY1YzEuMjguNTIgMi42My44NyAzLjk5IDEuMDV2LTIuMjN6TTIwIDR2MmgyVjRoLTJ6bTAgOGgydi0yaC0ydjJ6bS03LTJoLTJ2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVW1icmVsbGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDYuOTIgMTMgNS43N1YzLjRjMC0uMjYuMjItLjQ4LjUtLjQ4cy41LjIxLjUuNDhWNGgydi0uNkMxNiAyLjA3IDE0Ljg4IDEgMTMuNSAxUzExIDIuMDcgMTEgMy40djIuMzdMOS41IDYuOTIgNiA2LjA3bDUuMDUgMTUuMjVjLjE1LjQ1LjU1LjY4Ljk1LjY4cy44LS4yMy45NS0uNjlMMTggNi4wN2wtMy41Ljg1ek0xMy4yOCA4LjVsLjc2LjU4LjkyLS4yM0wxMyAxNC44VjguMjlsLjI4LjIxem0tMy4zMi41OS43Ni0uNTguMjgtLjIydjYuNTFMOS4wMyA4Ljg2bC45My4yM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZhcGVGcmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxNi41aDFjMS4zMyAwIDIuNzEtLjE4IDQtLjV2M2MtMS4yOS0uMzItMi42Ny0uNS00LS41SDJ2LTJ6TTE2LjE3IDE5SDh2LTNoNS4xN0wxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40MSAxLjQxLTMuNi0zLjZ6bTIuNjYtM0gyMnYzaC0uMTdsLTMtM3pNMTEgMTcuNWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjUuMjIuNS41LjUuNS0uMjIuNS0uNXptMTEtNC43NFYxNWgtMS41di0yLjIzYzAtMi4yNC0xLjc2LTQuMDctNC00LjA3VjcuMmMxLjAyIDAgMS44NS0uODMgMS44NS0xLjg1UzE3LjUyIDMuNSAxNi41IDMuNVYyYzEuODUgMCAzLjM1IDEuNSAzLjM1IDMuMzUgMCAuOTMtLjM4IDEuNzctMSAyLjM4IDEuODcuODkgMy4xNSAyLjgxIDMuMTUgNS4wM3pNMTEuMTUgOC4zMlY4LjNjMC0xLjg1IDEuNS0zLjM1IDMuMzUtMy4zNXYxLjVjLTEuMDIgMC0xLjg1LjczLTEuODUgMS43NXMuODMgMiAxLjg1IDJoMS41M2MxLjg3IDAgMy40NyAxLjM1IDMuNDcgMy4xNlYxNUgxOHYtMS4zYzAtMS4zMS0uOTItMi4wNS0xLjk3LTIuMDVoLTEuNTVsLTMuMzMtMy4zM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZhcGluZ1Jvb21zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxNi41aDFjMS4zMyAwIDIuNzEtLjE4IDQtLjV2M2MtMS4yOS0uMzItMi42Ny0uNS00LS41SDJ2LTJ6bTIwLS41djNIOHYtM2gxNHptLTExIDEuNWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjUuMjIuNS41LjUuNS0uMjIuNS0uNXptMTEtNC43NFYxNWgtMS41di0yLjIzYzAtMi4yNC0xLjc2LTQuMDctNC00LjA3VjcuMmMxLjAyIDAgMS44NS0uODMgMS44NS0xLjg1UzE3LjUyIDMuNSAxNi41IDMuNVYyYzEuODUgMCAzLjM1IDEuNSAzLjM1IDMuMzUgMCAuOTMtLjM4IDEuNzctMSAyLjM4IDEuODcuODkgMy4xNSAyLjgxIDMuMTUgNS4wM3ptLTIuNS42VjE1SDE4di0xLjNjMC0xLjMxLS45Mi0yLjA1LTEuOTctMi4wNUgxNC41YTMuMzUgMy4zNSAwIDAgMSAwLTYuN3YxLjVjLTEuMDIgMC0xLjg1LjczLTEuODUgMS43NXMuODMgMiAxLjg1IDJoMS41M2MxLjg3IDAgMy40NyAxLjM1IDMuNDcgMy4xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpbGxhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTBjLTEuMSAwLTIgLjktMiAyaC0xVjNMMyA4djEzaDE4di05YzAtMS4xLS45LTItMi0yek01IDkuMzdsOS0zLjQ2VjEySDl2N0g1VjkuMzd6TTE5IDE5aC0zdi0zaC0ydjNoLTN2LTVoOHY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2FzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjc1IDE2YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUgxMnYtMWg2Ljc1Yy42OSAwIDEuMjUtLjU2IDEuMjUtMS4yNSAwLS42Ny0uNTMtMS4yLTEuMTgtMS4yNEw4Ljg3IDEwbDEuNDgtMi42Yy4wOS0uMTcuMTQtLjM0LjE0LS41NCAwLS4yNi0uMDktLjUtLjI2LS43TDkuMTIgNWwtNy4xOCA2LjhjLS42LjU2LS45NCAxLjM1LS45NCAyLjE3VjIwYzAgMS42NiAxLjM0IDMgMyAzaDEzLjc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUgxMnYtMWg3Ljc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUgxMnYtMWg4Ljc1ek0xMCAyMUg0Yy0uNTUgMC0xLS40NS0xLTF2LTZjMC0uMzkuMjMtLjY0LjM2LS43NUw3IDkuODdWMTJoM3Y5em0zLjUtMTJjLjgzIDAgMS41LS42NyAxLjUtMS41IDAtLjg0LTEuNS0yLjUtMS41LTIuNVMxMiA2LjY2IDEyIDcuNWMwIC44My42NyAxLjUgMS41IDEuNXptNS04UzE2IDMuODMgMTYgNS41YTIuNSAyLjUgMCAwIDAgNSAwQzIxIDMuODMgMTguNSAxIDE4LjUgMXptMCA1LjVjLS41NSAwLTEtLjQ1LTEtMSAwLS40LjQzLTEuMjIgMS0yLjA1LjU3LjgzIDEgMS42NSAxIDIuMDUgMCAuNTUtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F0ZXJEYW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDIgMTJoM3Y4aDE0di04aDNMMTIgM3pNNyAxOHYtNy44MWw1LTQuNSA1IDQuNVYxOEg3em03LTRjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIDItNCAyLTQgMiAyLjkgMiA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2hlZWxjaGFpclBpY2t1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNSA0YzAtMS4xMS44OS0yIDItMnMyIC44OSAyIDItLjg5IDItMiAyLTItLjg5LTItMnptNS41IDYuOTVWOWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnY2aDJ2N2gzLjV2LS4xMWMtMS4yNC0xLjI2LTItMi45OS0yLTQuODkgMC0yLjU4IDEuNDEtNC44NCAzLjUtNi4wNXpNMTYuNSAxN2MwIDEuNjUtMS4zNSAzLTMgM3MtMy0xLjM1LTMtM2MwLTEuMTEuNjEtMi4wNiAxLjUtMi41OHYtMi4xNmMtMi4wMi42NC0zLjUgMi41MS0zLjUgNC43NCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01aC0yem0zLjA0LTNIMTVWOGgtMnY4aDUuNDZsMi40NyAzLjcxIDEuNjYtMS4xMS0zLjA1LTQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdGhyb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE0YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMS0uNDUgMS0xIDEtMS0uNDUtMS0xem00IDFjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMyAwYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bS0zLTcuNWMtMS43NiAwLTMuMjIgMS4zMS0zLjQ2IDNoNi45M2EzLjUyIDMuNTIgMCAwIDAtMy40Ny0zTTEyIDZjMi43NiAwIDUgMi4yNCA1IDV2MUg3di0xYzAtMi43NiAyLjI0LTUgNS01ek05IDE4Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTMgMGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0zIDBjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptNS0xNEg0djE2aDE2VjRtMC0yYzEuMSAwIDIgLjkgMiAydjE2YzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjRjMC0xLjEuOS0yIDItMmgxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTAuNzhWOGMwLTEuNjUtMS4zNS0zLTMtM2gtNGMtLjc3IDAtMS40Ny4zLTIgLjc4LS41My0uNDgtMS4yMy0uNzgtMi0uNzhINkM0LjM1IDUgMyA2LjM1IDMgOHYyLjc4Yy0uNjEuNTUtMSAxLjM0LTEgMi4yMnY2aDJ2LTJoMTZ2Mmgydi02YzAtLjg4LS4zOS0xLjY3LTEtMi4yMnpNMTQgN2g0Yy41NSAwIDEgLjQ1IDEgMXYyaC02VjhjMC0uNTUuNDUtMSAxLTF6TTUgOGMwLS41NS40NS0xIDEtMWg0Yy41NSAwIDEgLjQ1IDEgMXYySDVWOHptLTEgN3YtMmMwLS41NS40NS0xIDEtMWgxNGMuNTUgMCAxIC40NSAxIDF2Mkg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmVkcm9vbUJhYnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Ljk0IDE0LjA0Yy0uMzQuMzQtLjcxLjY0LTEuMS45MkwxNiAxMy41VjExaDF2LTFoLTUuNjJMOS42NSA3SDZsMSAuNzZMNS41IDkuNWwuOTUgMUw4IDkuNTF2My45OWwtLjg0IDEuNDZjLS4zOS0uMjctLjc2LS41OC0xLjEtLjkyTDUgMTUuMWMxLjg3IDEuODcgNC4zNiAyLjkgNyAyLjlzNS4xMy0xLjAzIDctMi45bC0xLjA2LTEuMDZ6bS05LjQ5IDEuNjcuMDMtLjA2LjgxLTEuNDFjMS43NC42NSAzLjY2LjY1IDUuNCAwbC44MSAxLjQxLjAzLjA2Yy0xLjEuNTEtMi4zLjc5LTMuNTUuNzlzLTIuNDMtLjI3LTMuNTMtLjc5ek0yMCA0djE2SDRWNGgxNm0wLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmVkcm9vbUNoaWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0djE2SDRWNGgxNm0wLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMy41IDguNjdWOWMwLTEuMS0uOS0yLTItMmgtNWMtMS4xIDAtMiAuOS0yIDJ2MS42N2MtLjg4LjM1LTEuNSAxLjItMS41IDIuMlYxN2gxLjV2LTEuNWg5VjE3SDE4di00LjEzYzAtMS0uNjItMS44NS0xLjUtMi4yek0xNSA4LjV2Mkg5di0yaDZ6bS03LjUgNC4zN2MwLS40OC4zOS0uODcuODctLjg3aDcuMjdjLjQ4IDAgLjg3LjM5Ljg3Ljg3VjE0aC05di0xLjEzSDcuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJlZHJvb21QYXJlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjM1IDExLjQ1VjljMC0xLjEtLjktMi0yLTJIMTNjLS4zNyAwLS43Mi4xMi0xIC4zMi0uMjgtLjItLjYzLS4zMi0xLS4zMkg3LjY1Yy0xLjEgMC0yIC45LTIgMnYyLjQ1Yy0uNC40Ni0uNjUgMS4wNi0uNjUgMS43MlYxN2gxLjV2LTEuNWgxMVYxN0gxOXYtMy44M2MwLS42Ni0uMjUtMS4yNi0uNjUtMS43MnptLTEuNi0uOTVoLTR2LTJoNHYyem0tOS41LTJoNHYyaC00di0yek0xNy41IDE0aC0xMXYtMWMwLS41NS40NS0xIDEtMWg5Yy41NSAwIDEgLjQ1IDEgMXYxek0yMCA0djE2SDRWNGgxNm0wLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmxlbmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMTMgMTUuMTMgMTggM2gtNFYyaC00djFINWMtMS4xIDAtMiAuOS0yIDJ2NGMwIDEuMS45IDIgMiAyaDIuMjNsLjY0IDQuMTNDNi43NCAxNi4wNSA2IDE3LjQzIDYgMTl2MWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJ2LTFjMC0xLjU3LS43NC0yLjk1LTEuODctMy44N3pNNSA5VjVoMS4zMWwuNjIgNEg1em0xMC42Ny00LTEuMzggOUg5LjcyTDguMzMgNWg3LjM0ek0xNiAyMEg4di0xYzAtMS42NSAxLjM1LTMgMy0zaDJjMS42NSAwIDMgMS4zNSAzIDN2MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE4XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW1lcmFJbmRvb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEzdi0xYzAtLjU1LS40NS0xLTEtMUg5Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtMWwyIDEuMDZ2LTQuMTJMMTQgMTN6bS0yLTcuNSA2IDQuNXY5SDZ2LTlsNi00LjVNMTIgMyA0IDl2MTJoMTZWOWwtOC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FtZXJhT3V0ZG9vciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjMC0uNTUtLjQ1LTEtMS0xaC00Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtMWwyIDEuMDZ2LTQuMTJMMTggMTR2LTF6TTEyIDMgNCA5djEyaDE2di0ySDZ2LTlsNi00LjUgNiA0LjV2MWgyVjlsLTgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoYWlyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjNjMCAxLjEuOSAyIDIgMmgxdjJIN2MtMS4xIDAtMiAuOS0yIDJ2N2gydi0zaDEwdjNoMnYtN2MwLTEuMS0uOS0yLTItMmgtMXYtMmgxek03IDhWNWgxMHYzSDd6bTEwIDhIN3YtMmgxMHYyem0tMy00aC00di0yaDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoYWlyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA4VjZjMC0xLjY1LTEuMzUtMy0zLTNIN0M1LjM1IDMgNCA0LjM1IDQgNnYyYy0xLjY1IDAtMyAxLjM1LTMgM3Y1YzAgMS42NSAxLjM1IDMgMyAzdjFjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xdi0xYzEuNjUgMCAzLTEuMzUgMy0zdi01YzAtMS42NS0xLjM1LTMtMy0zek02IDZjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxdjIuNzhjLS42MS41NS0xIDEuMzQtMSAyLjIydjJIN3YtMmMwLS44OC0uMzktMS42Ny0xLTIuMjJWNnptMTUgMTBjMCAuNTUtLjQ1IDEtMSAxSDRjLS41NSAwLTEtLjQ1LTEtMXYtNWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NGgxNHYtNGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvZmZlZU1ha2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA2VjRoMlYySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTR2LTJoLTQuMDNBNC45NjYgNC45NjYgMCAwIDAgMTggMTZ2LTVIOHY1YzAgMS42NC44MSAzLjA5IDIuMDMgNEg2VjRoMnYyYzAgLjU1LjQ1IDEgMSAxaDhjLjU1IDAgMS0uNDUgMS0xem0tOCAxMHYtM2g2djNjMCAxLjY1LTEuMzUgMy0zIDNzLTMtMS4zNS0zLTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTNcIixcImN5XCI6XCI5XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb2ZmZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgM0g2Yy0xLjEgMC0yIC45LTIgMnY1LjcxYzAgMy44MyAyLjk1IDcuMTggNi43OCA3LjI5IDMuOTYuMTIgNy4yMi0zLjA2IDcuMjItN3YtMWguNWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMyMC40MyAzIDE4LjUgM3pNMTYgNXYzSDZWNWgxMHptMCA1djFjMCAyLjc2LTIuMjQgNS01IDVzLTUtMi4yNC01LTV2LTFtMTIuNS0ySDE4VjVoLjVjLjgzIDAgMS41LjY3IDEuNSAxLjVTMTkuMzMgOCAxOC41IDh6TTQgMTloMTZ2Mkg0di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC43NSA2Yy0xLjM3IDAtMi41IDEuNTItMi41IDMuNCAwIDEuNDguNyAyLjcxIDEuNjcgMy4xOGwuMDguMDRWMTloMS41di02LjM4bC4wOC0uMDNjLjk3LS40NyAxLjY3LTEuNyAxLjY3LTMuMTggMC0xLjg4LTEuMTItMy40MS0yLjUtMy40MU0xMC41IDZjLS4yNyAwLS41LjIyLS41LjVWOWgtLjc1VjYuNWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjVWOUg3LjVWNi41YzAtLjI4LS4yMi0uNS0uNS0uNXMtLjUuMjItLjUuNXYzLjhjMCAuOTMuNjQgMS43MSAxLjUgMS45M1YxOWgxLjV2LTYuNzdjLjg2LS4yMiAxLjUtMSAxLjUtMS45M1Y2LjVjMC0uMjgtLjIyLS41LS41LS41ek0yMCA0SDR2MTZoMTZWNG0wLTJjMS4xIDAgMiAuOSAyIDJ2MTZjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWNGMwLTEuMS45LTIgMi0yaDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9vckJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5VjVjMC0xLjEtLjktMi0yLTJIN2MtMS4xIDAtMiAuOS0yIDJ2MTRIM3YyaDE4di0yaC0yem0tMiAwSDdWNWgxMHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMWgydjJIOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvb3JGcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTlWNWMwLTEuMS0uOS0yLTItMkg3Yy0xLjEgMC0yIC45LTIgMnYxNEgzdjJoMTh2LTJoLTJ6bS0yIDBIN1Y1aDEwdjE0em0tNC04aDJ2MmgtMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvb3JTbGlkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxM0g4di0yaDJ2MnptNi0yaC0ydjJoMnYtMnptNSA4djJIM3YtMmgxVjVjMC0xLjEuOS0yIDItMmgxMmMxLjEgMCAyIC45IDIgMnYxNGgxek0xMSA1SDZ2MTRoNVY1em03IDBoLTV2MTRoNVY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9vcmJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE2LjVoMmMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMXptNC0xLjV2LTIuMzRjMC0xLjU0LS44MS0yLjgyLTIuMjUtMy4xNnYtLjI1YzAtLjQxLS4zNC0uNzUtLjc1LS43NXMtLjc1LjM0LS43NS43NXYuMjVDOS44MiA5Ljg0IDkgMTEuMTIgOSAxMi42NlYxNUg4djFoOHYtMWgtMXptLTMtOS41TDYgMTB2OWgxMnYtOWwtNi00LjVNMTIgM2w4IDZ2MTJINFY5bDgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY4bC01LTV6bTMgMTZINVY1aDEwdjRoNHYxMHpNNyAxN2gxMHYtMkg3djJ6bTUtMTBIN3YyaDVWN3ptLTUgNmgxMHYtMkg3djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGF0d2FyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNy4wOGMwIDEuNzctLjg0IDMuMjUtMiAzLjgyVjIxaC0yVjEwLjljLTEuMTYtLjU3LTItMi4wNS0yLTMuODJDMTAuMDEgNC44MyAxMS4zNSAzIDEzIDNjMS42NiAwIDMgMS44MyAzIDQuMDh6TTE3IDN2MThoMnYtOGgyVjdjMC0xLjc2LTEuMjQtNC00LTR6TTguMjggM2MtLjQgMC0uNzIuMzItLjcyLjcyVjdoLS44NFYzLjcyQzYuNzIgMy4zMiA2LjQgMyA2IDNzLS43Mi4zMi0uNzIuNzJWN2gtLjg0VjMuNzJjMC0uNC0uMzItLjcyLS43Mi0uNzJTMyAzLjMyIDMgMy43MlY5YzAgMS4xLjkgMiAyIDJ2MTBoMlYxMWMxLjEgMCAyLS45IDItMlYzLjcyYzAtLjQtLjMyLS43Mi0uNzItLjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR2FyYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxOEg0VjRoMTZ2MTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Ljc4IDE4LjVoLjQ0Yy40MyAwIC43OC0uMzYuNzgtLjgxVjE2LjVoMTB2MS4xOWMwIC40NS4zNC44MS43OC44MWguNDRjLjQzIDAgLjc4LS4zNi43OC0uODF2LTYuNWMtLjgyLTIuNDYtMS4zNC00LjAzLTEuNTYtNC42OS0uMDUtLjE2LS4xMi0uMjktLjE5LS40LS4wMi0uMDItLjAzLS4wNC0uMDUtLjA3LS4zOC0uNTItLjkyLS41My0uOTItLjUzSDcuNzJzLS41NC4wMS0uOTIuNTRjLS4wMi4wMi0uMDMuMDQtLjA1LjA2LS4wNy4xMS0uMTQuMjQtLjE5LjQtLjIyLjY2LS43NCAyLjIyLTEuNTYgNC42OXY2LjVjMCAuNDUuMzUuODEuNzguODF6bTIuNTUtMTFoNy4zNGwuMjMuNjkuNDMgMS4zMUg3LjY3bC42Ni0yek03IDExLjUxdi0uMDFoMTB2M0g3di0yLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDYuMDZWM2gtMnYzLjA2Yy00LjUuNS04IDQuMzEtOCA4LjkzQzMgMTYuMSAzLjkgMTcgNS4wMSAxN0g4YzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTRoMi45OWMxLjExIDAgMi4wMS0uOSAyLjAxLTIuMDEgMC00LjYyLTMuNS04LjQzLTgtOC45M3pNMTIgMTljLTEuMSAwLTItLjktMi0yaDRjMCAxLjEtLjkgMi0yIDJ6bTAtNEg1YzAtMy44NiAzLjE0LTcgNy03czcgMy4xNCA3IDdoLTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaXZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Ljc1IDEwLjM1VjljMC0xLjY2LTEuMzQtMy0zLTNoLTUuNWMtMS42NiAwLTMgMS4zNC0zIDN2MS4zNUM1LjUxIDEwLjc4IDUgMTEuNTggNSAxMi41VjE2YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJ2LTMuNWMwLS45Mi0uNTEtMS43Mi0xLjI1LTIuMTV6TTkuMjUgNy41aDUuNWMuODMgMCAxLjUuNjcgMS41IDEuNXYxLjAzQTIuNDggMi40OCAwIDAgMCAxNCAxMi41di41aC00di0uNWMwLTEuMy0uOTktMi4zNS0yLjI1LTIuNDdWOWMwLS44My42Ny0xLjUgMS41LTEuNXpNMTcuNSAxNmMwIC4yOC0uMjIuNS0uNS41SDdjLS4yOCAwLS41LS4yMi0uNS0uNXYtMy41YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYyaDd2LTJjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxVjE2ek0yMCA0djE2SDRWNGgxNm0wLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFuYWdlU2VhcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDlIMlY3aDV2MnptMCAzSDJ2Mmg1di0yem0xMy41OSA3LTMuODMtMy44M2MtLjguNTItMS43NC44My0yLjc2LjgzLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNWMwIDEuMDItLjMxIDEuOTYtLjgzIDIuNzVMMjIgMTcuNTkgMjAuNTkgMTl6TTE3IDExYzAtMS42NS0xLjM1LTMtMy0zcy0zIDEuMzUtMyAzIDEuMzUgMyAzIDMgMy0xLjM1IDMtM3pNMiAxOWgxMHYtMkgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb2RjYXN0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTJjMCAuNzQtLjQgMS4zOC0xIDEuNzJWMjJoLTJ2LTguMjhjLS42LS4zNS0xLS45OC0xLTEuNzIgMC0xLjEuOS0yIDItMnMyIC45IDIgMnptLTItNmMtMy4zMSAwLTYgMi42OS02IDYgMCAxLjc0Ljc1IDMuMzEgMS45NCA0LjRsMS40Mi0xLjQyQTMuOTU3IDMuOTU3IDAgMCAxIDggMTJjMC0yLjIxIDEuNzktNCA0LTRzNCAxLjc5IDQgNGMwIDEuMTktLjUzIDIuMjUtMS4zNiAyLjk4bDEuNDIgMS40MkE1Ljk1NyA1Ljk1NyAwIDAgMCAxOCAxMmMwLTMuMzEtMi42OS02LTYtNnptMC00QzYuNDggMiAyIDYuNDggMiAxMmMwIDIuODUgMS4yIDUuNDEgMy4xMSA3LjI0bDEuNDItMS40MkE3Ljk4NyA3Ljk4NyAwIDAgMSA0IDEyYzAtNC40MSAzLjU5LTggOC04czggMy41OSA4IDhjMCAyLjI5LS45OCA0LjM2LTIuNTMgNS44MmwxLjQyIDEuNDJDMjAuOCAxNy40MSAyMiAxNC44NSAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNob3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxN2MwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMSAuNDUtMSAxLTEgMSAuNDUgMSAxem0zLTFjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptNCAwYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTMtNHYySDV2LTJjMC0zLjUzIDIuNjEtNi40MyA2LTYuOTJWM2gydjIuMDhjMy4zOS40OSA2IDMuMzkgNiA2Ljkyem0tMiAwYzAtMi43Ni0yLjI0LTUtNS01cy01IDIuMjQtNSA1aDEwem0tOSA3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTQgMGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem00IDBjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhYmxlQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNy41QzIyIDUuNTcgMTcuNTIgNCAxMiA0UzIgNS41NyAyIDcuNWMwIDEuODEgMy45NSAzLjMxIDkgMy40OFYxNUg5LjM1Yy0uODIgMC0xLjU1LjUtMS44NiAxLjI2TDYgMjBoMmwxLjItM2g1LjZsMS4yIDNoMmwtMS41LTMuNzRjLS4zLS43Ni0xLjA0LTEuMjYtMS44NS0xLjI2SDEzdi00LjAyYzUuMDUtLjE3IDktMS42NyA5LTMuNDh6TTEyIDZjNC4wNSAwIDYuNzQuODYgNy43MiAxLjVDMTguNzQgOC4xNCAxNi4wNSA5IDEyIDlzLTYuNzQtLjg2LTcuNzItMS41QzUuMjYgNi44NiA3Ljk1IDYgMTIgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhYmxlUmVzdGF1cmFudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjk2IDkuNzMtMS40My01YS45OTYuOTk2IDAgMCAwLS45Ni0uNzNINC40M2MtLjQ1IDAtLjg0LjMtLjk2LjczbC0xLjQzIDVjLS4xOC42My4zIDEuMjcuOTYgMS4yN2gyLjJMNCAyMGgybC42Ny01aDEwLjY3bC42NiA1aDJsLTEuMi05SDIxYy42NiAwIDEuMTQtLjY0Ljk2LTEuMjd6TTYuOTMgMTNsLjI3LTJoOS42bC4yNyAySDYuOTN6bS0yLjYtNCAuODYtM2gxMy42M2wuODYgM0g0LjMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2luZG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgOGgtNlY1aDZ2NnptLTgtNnY2SDVWNWg2em0tNiA4aDZ2Nkg1di02em04IDZ2LTZoNnY2aC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lWWFyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTMuMzEgMC02IDIuNjktNiA2IDMuMzEgMCA2LTIuNjkgNi02ek02IDEzYzAgMy4zMSAyLjY5IDYgNiA2IDAtMy4zMS0yLjY5LTYtNi02em0yLTEuOTdhMS41NjIgMS41NjIgMCAwIDAgMi40NSAxLjI4bC0uMDEuMTJjMCAuODYuNyAxLjU2IDEuNTYgMS41NnMxLjU2LS43IDEuNTYtMS41NmwtLjAxLS4xMmMuMjUuMTcuNTYuMjguODkuMjguODYgMCAxLjU2LS43IDEuNTYtMS41NiAwLS42Mi0uMzctMS4xNi0uODktMS40MS41Mi0uMjQuODktLjc4Ljg5LTEuNGExLjU2MiAxLjU2MiAwIDAgMC0yLjQ1LTEuMjhsLjAxLS4xMmMwLS44Ni0uNy0xLjU2LTEuNTYtMS41NnMtMS41Ni43LTEuNTYgMS41NmwuMDEuMTJBMS41NjIgMS41NjIgMCAwIDAgOCA4LjIyYzAgLjYyLjM3IDEuMTYuODkgMS40MS0uNTIuMjQtLjg5Ljc4LS44OSAxLjR6bTQtMi45N2MuODYgMCAxLjU2LjcgMS41NiAxLjU2cy0uNyAxLjU2LTEuNTYgMS41Ni0xLjU2LS43LTEuNTYtMS41Ni43LTEuNTYgMS41Ni0xLjU2ek0yMCA0djE2SDRWNGgxNm0wLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMThVcFJhdGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSAxNUgxMFY5SDd2MS41aDEuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDE1SDE1Yy41NSAwIDEtLjQ1IDEtMXYtNGMwLS41NS0uNDUtMS0xLTFoLTIuNWMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bS41LTVoMS41djEuNUgxM1YxMHptMCAyLjVoMS41VjE0SDEzdi0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU2RnRBcGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTQgMy40M2MwLS44MS0uNDgtMS41My0xLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgMiA5LjQzVjEwaDh2LS41N3pNMTggNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTQgMy40M2MwLS44MS0uNDgtMS41My0xLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgMTQgOS40M1YxMGg4di0uNTd6TTE5IDE3di0yLjAxTDUgMTV2MmwtMy0zIDMtM3YyLjAxTDE5IDEzdi0ybDMgMy0zIDN6bS05IDJ2LTFINy41Yy0uMjggMC0uNS4yMi0uNS41djNjMCAuMjguMjIuNS41LjVoMmMuMjggMCAuNS0uMjIuNS0uNVYyMGMwLS4yOC0uMjItLjUtLjUtLjVIOFYxOWgyem0tMSAxLjV2LjVIOHYtLjVoMXptOC41LTEuNWgtMXYzaC0xdi0zaC0xdi0xaDN2MXptLTUgMHYuNWgxdjFoLTFWMjJoLTF2LTRIMTR2MWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkTW9kZXJhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxMS4wOXYtNC43bDYtMi4yNSA2IDIuMjV2My42OWMuNzEuMSAxLjM4LjMxIDIgLjZWNWwtOC0zLTggM3Y2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MS4wMy0uMDEuMDUtLjAyLjA4LS4wMi0uNzktLjc4LTEuNC0xLjc2LTEuNzUtMi44NEM3Ljc2IDE3LjUzIDYgMTQuNDIgNiAxMS4wOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTJjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0zIDUuNWgtMi41VjIwaC0xdi0yLjVIMTR2LTFoMi41VjE0aDF2Mi41SDIwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRSZWFjdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOS41QzcgOC42NyA3LjY3IDggOC41IDhzMS41LjY3IDEuNSAxLjVTOS4zMyAxMSA4LjUgMTEgNyAxMC4zMyA3IDkuNXptNSA4YzIuMzMgMCA0LjMxLTEuNDYgNS4xMS0zLjVINi44OWMuOCAyLjA0IDIuNzggMy41IDUuMTEgMy41em0zLjUtNi41Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNXMuNjcgMS41IDEuNSAxLjV6TTIyIDFoLTJ2MmgtMnYyaDJ2MmgyVjVoMlYzaC0yVjF6bS0yIDExYzAgNC40Mi0zLjU4IDgtOCA4cy04LTMuNTgtOC04IDMuNTgtOCA4LThjMS40NiAwIDIuODIuNCA0IDEuMDhWMi44NEE5LjkyOSA5LjkyOSAwIDAgMCAxMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJjMC0xLjA1LS4xNy0yLjA1LS40Ny0zSDE5LjRjLjM4LjkzLjYgMS45NC42IDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcmNoaXRlY3R1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjM2IDE4Ljc4IDYuNjEgMjFsMS42Mi0xLjU0IDIuNzctNy42Yy0uNjgtLjE3LTEuMjgtLjUxLTEuNzctLjk4bC0yLjg3IDcuOXpNMTQuNzcgMTAuODhjLS40OS40Ny0xLjEuODEtMS43Ny45OGwyLjc3IDcuNkwxNy4zOSAyMWwuMjYtMi4yMi0yLjg4LTcuOXpNMTUgOGMwLTEuMy0uODQtMi40LTItMi44MlYzaC0ydjIuMThDOS44NCA1LjYgOSA2LjcgOSA4YzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTN6bS0zIDFjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFzc2lzdFdhbGtlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTIuNVwiLFwiY3lcIjpcIjQuNVwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS43NyAxNy43Mi0uNjQtNi4zN0ExLjQ5IDEuNDkgMCAwIDAgMTcuNjQgMTBIMTZjLTEuNS0uMDItMi44Ni0uNTQtMy43Ni0xLjQ0bC0yLTEuOThBMS45NSAxLjk1IDAgMCAwIDguODMgNmMtLjUxIDAtMS4wMi4yLTEuNDEuNTlMNC4wOCA5LjkxYy0uNTMuNjgtLjUxIDEuNTctLjIxIDIuMTNsMS40MyAyLjgtMy4xNSA0LjA1IDEuNTcgMS4yNEw3LjQgMTUuNGwtLjE3LTEuMzYuNzcuNzFWMjBoMnYtNi4xMmwtMi4xMi0yLjEyIDIuMzYtMi4zNmMuOTQuOTQgMS43MiAxLjgyIDMuNTkgMi4zMkwxMyAyMGgxLjVsLjQxLTMuNWgzLjE4bC4xNCAxLjIyYy0uNDQuMjYtLjczLjc0LS43MyAxLjI4IDAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNWMwLS41NC0uMjktMS4wMi0uNzMtMS4yOHpNMTUuMDkgMTVsLjQxLTMuNWgybC40MSAzLjVoLTIuODJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYWNrSGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDdhMi41IDIuNSAwIDAgMC0zLTIuNDVWNGEyLjUgMi41IDAgMCAwLTMuMTctMi40MUEyLjUwOSAyLjUwOSAwIDAgMCAxMi41IDBjLTEuMjMgMC0yLjI1Ljg5LTIuNDYgMi4wNkEyLjUgMi41IDAgMCAwIDcgNC41djUuODljLS4zNC0uMzEtLjc2LS41NC0xLjIyLS42NmwtLjc3LS4yMWMtLjgzLS4yMy0xLjcuMDktMi4xOS44My0uMzguNTctLjQgMS4zMS0uMTUgMS45NWwyLjU2IDYuNDNBOC4zNTQgOC4zNTQgMCAwIDAgMTMgMjRjNC40MiAwIDgtMy41OCA4LThWN3ptLTIgOWMwIDMuMzEtMi42OSA2LTYgNi0yLjYxIDAtNC45NS0xLjU5LTUuOTEtNC4wMWwtMi42LTYuNTQuNTMuMTRjLjQ2LjEyLjgzLjQ2IDEgLjlMNyAxNWgyVjQuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVYxMmgyVjIuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVYxMmgyVjRjMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjV2OGgyVjdjMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjV2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsaW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMS41XCIsXCJjeVwiOlwiMy41XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjEzIDcuMTJjLS4xNy0uMzUtLjQ0LS42NS0uOC0uODVhMS45OCAxLjk4IDAgMCAwLTEuOTMtLjAzdi0uMDFMNCA5LjNWMTRoMnYtMy41NGwxLjUtLjg1QzcuMTggMTAuNzEgNyAxMS44NSA3IDEzdjUuMzNMNC40IDIxLjggNiAyM2wzLTQgLjIyLTMuNTRMMTEgMTh2NWgydi02LjVsLTEuOTctMi44MWMtLjA0LS41Mi0uMTQtMS43Ni40NS0zLjQuNzUgMS4xNCAxLjg4IDEuOTggMy4yIDIuNDFMMjAuNjMgMjNsLjg3LS41LTUuNDgtOS41SDE3di0yYy0uNDkgMC0yLjg4LjE3LTQuMDgtMi4yMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm95IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNy41Yy45NyAwIDEuNzUtLjc4IDEuNzUtMS43NVMxMi45NyA0IDEyIDRzLTEuNzUuNzgtMS43NSAxLjc1UzExLjAzIDcuNSAxMiA3LjV6TTE0IDIwdi01aDF2LTQuNWMwLTEuMS0uOS0yLTItMmgtMmMtMS4xIDAtMiAuOS0yIDJWMTVoMXY1aDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YTIgMiAwIDAgMCAyLTJjMC0uMzgtLjEtLjczLS4yOS0xLjAzTDEyIDBsLTEuNzEgMi45N2MtLjE5LjMtLjI5LjY1LS4yOSAxLjAzIDAgMS4xLjkgMiAyIDJ6bTYgM2gtNVY3aC0ydjJINmMtMS42NiAwLTMgMS4zNC0zIDN2OWMwIC41NS40NSAxIDEgMWgxNmMuNTUgMCAxLS40NSAxLTF2LTljMC0xLjY2LTEuMzQtMy0zLTN6bTEgMTFINXYtM2MuOS0uMDEgMS43Ni0uMzcgMi40LTEuMDFsMS4wOS0xLjA3IDEuMDcgMS4wN2MxLjMxIDEuMzEgMy41OSAxLjMgNC44OSAwbDEuMDgtMS4wNyAxLjA3IDEuMDdjLjY0LjY0IDEuNSAxIDIuNCAxLjAxdjN6bTAtNC41Yy0uNTEtLjAxLS45OS0uMi0xLjM1LS41N2wtMi4xMy0yLjEzLTIuMTQgMi4xM2MtLjc0Ljc0LTIuMDMuNzQtMi43NyAwTDguNDggMTIuOGwtMi4xNCAyLjEzYy0uMzUuMzYtLjgzLjU2LTEuMzQuNTdWMTJjMC0uNTUuNDUtMSAxLTFoMTJjLjU1IDAgMSAuNDUgMSAxdjMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhdGNoaW5nUG9rZW1vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTJhMi41IDIuNSAwIDAgMS01IDAgMi41IDIuNSAwIDAgMSA1IDB6bTcuNSAwYzAgNS41Mi00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMiA2LjQ4IDIgMTIgMnMxMCA0LjQ4IDEwIDEwem0tMiAwaC00YzAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0SDRjMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsZWFuSGFuZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi45OSA1IC42MyAxLjM3IDEuMzcuNjMtMS4zNy42M0wxNi45OSA5bC0uNjMtMS4zN0wxNC45OSA3bDEuMzctLjYzLjYzLTEuMzdNMjAgMTRjMS4xIDAgMi0uOSAyLTJzLTItNC0yLTQtMiAyLjktMiA0IC45IDIgMiAyem0tOS03LjlWNGgyYy41NyAwIDEuMS4xNyAxLjU1LjQ1bDEuNDMtMS40M0E0Ljg5OSA0Ljg5OSAwIDAgMCAxMyAySDcuNXYySDl2Mi4xMWMtMS43OC4zNy0zLjIgMS42OC0zLjc1IDMuMzloMi4xNkM3Ljk0IDguNjEgOC44OSA4IDEwIDhjMS42MiAwIDIuOTQgMS4yOSAyLjk5IDIuOWwyLjAxLjc1VjExYTUgNSAwIDAgMC00LTQuOXpNMjIgMTl2MWwtOCAyLjUtNy0xLjk0VjIySDFWMTFoNy45N2w2LjE2IDIuM0EyLjg5IDIuODkgMCAwIDEgMTcgMTZoMmMxLjY2IDAgMyAxLjM0IDMgM3pNNSAyMHYtN0gzdjdoMnptMTQuOS0xLjQzYy0uMTYtLjMzLS41MS0uNTYtLjktLjU2aC01LjM1Yy0uNTQgMC0xLjA3LS4wOS0xLjU4LS4yNmwtMi4zOC0uNzkuNjMtMS45IDIuMzguNzljLjMxLjEgMi4zLjE1IDIuMy4xNSAwLS4zNy0uMjMtLjctLjU3LS44M0w4LjYxIDEzSDd2NS40OGw2Ljk3IDEuOTMgNS45My0xLjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ28yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOWgtM2MtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xem0tLjUgNC41aC0ydi0zaDJ2M3pNOCAxM3YxYzAgLjU1LS40NSAxLTEgMUg0Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MUg2LjV2LS41aC0ydjNoMlYxM0g4em0xMi41IDIuNWgtMnYxaDNWMThIMTd2LTIuNWMwLS41NS40NS0xIDEtMWgydi0xaC0zVjEyaDMuNWMuNTUgMCAxIC40NSAxIDF2MS41YzAgLjU1LS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbXBvc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi44NyAxMS44MUEyLjUgMi41IDAgMCAxIDE1IDhoMWMxLjUxIDAgMi0xIDItMXMuNTUgNi0zIDZjLS40OSAwLS45NC0uMTQtMS4zMi0uMzgtLjI0LjY0LS41OSAxLjc2LS43NiAyLjk2IDEuMjYuMjIgMi4yOC44OSAyLjc3IDEuNzdBNi41MDUgNi41MDUgMCAwIDAgMTguNSAxMmgzYzAgNS4yNC00LjI2IDkuNS05LjUgOS41UzIuNSAxNy4yNCAyLjUgMTIgNi43NiAyLjUgMTIgMi41VjBsNCA0LTQgNFY1LjVjLTMuNTggMC02LjUgMi45Mi02LjUgNi41IDAgMi4yMSAxLjExIDQuMTcgMi44MSA1LjM1LjUxLS45MiAxLjYzLTEuNjIgMi45OC0xLjgtLjA5LS42OS0uMjYtMS40Mi0uNDktMi4wMy0uMzUuMy0uOC40OC0xLjMuNDgtMS4xIDAtMi0uOS0yLTJ2LS45OWMwLS41Ni0uMTktMS4wOS0uNS0xLjUxIDAgMCA0LjQ1LS4yMyA0LjUgMi41IDAgLjI5LS4wNi41Ni0uMTcuOC0uNDItLjMyLS44Ni0uNi0xLjMzLS44LjU4LjQzIDEuMzcgMS4zNyAyIDIuNi42Ny0xLjYyIDEuNjgtMy4yNyAzLTQuNi0uNzYuNTItMS40NyAxLjEyLTIuMTMgMS44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbm5lY3RXaXRob3V0Q29udGFjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE0SDlhOSA5IDAgMCAxIDktOXYyYy0zLjg3IDAtNyAzLjEzLTcgN3ptNy0zVjljLTIuNzYgMC01IDIuMjQtNSA1aDJjMC0xLjY2IDEuMzQtMyAzLTN6TTcgNGMwLTEuMTEtLjg5LTItMi0ycy0yIC44OS0yIDIgLjg5IDIgMiAyIDItLjg5IDItMnptNC40NS41aC0yQTIuOTkgMi45OSAwIDAgMSA2LjUgN2gtM0MyLjY3IDcgMiA3LjY3IDIgOC41VjExaDZWOC43NGE0Ljk3IDQuOTcgMCAwIDAgMy40NS00LjI0ek0xOSAxN2MxLjExIDAgMi0uODkgMi0ycy0uODktMi0yLTItMiAuODktMiAyIC44OSAyIDIgMnptMS41IDFoLTNhMi45OSAyLjk5IDAgMCAxLTIuOTUtMi41aC0yQTQuOTcgNC45NyAwIDAgMCAxNiAxOS43NFYyMmg2di0yLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29uc3RydWN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuNzgzIDE1LjE3MiAyLjEyMS0yLjEyMSA1Ljk5NiA1Ljk5Ni0yLjEyMSAyLjEyMXpNMTcuNSAxMGMxLjkzIDAgMy41LTEuNTcgMy41LTMuNSAwLS41OC0uMTYtMS4xMi0uNDEtMS42bC0yLjcgMi43LTEuNDktMS40OSAyLjctMi43Yy0uNDgtLjI1LTEuMDItLjQxLTEuNi0uNDFDMTUuNTcgMyAxNCA0LjU3IDE0IDYuNWMwIC40MS4wOC44LjIxIDEuMTZsLTEuODUgMS44NS0xLjc4LTEuNzguNzEtLjcxLTEuNDEtMS40MUwxMiAzLjQ5YTMgMyAwIDAgMC00LjI0IDBMNC4yMiA3LjAzbDEuNDEgMS40MUgyLjgxbC0uNzEuNzEgMy41NCAzLjU0LjcxLS43MVY5LjE1bDEuNDEgMS40MS43MS0uNzEgMS43OCAxLjc4LTcuNDEgNy40MSAyLjEyIDIuMTJMMTYuMzQgOS43OWMuMzYuMTMuNzUuMjEgMS4xNi4yMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvb2tpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTAuNVwiLFwiY3lcIjpcIjguNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiMTMuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxNVwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45NSAxMC45OWMtMS43OS0uMDMtMy43LTEuOTUtMi42OC00LjIyLTIuOTcgMS01Ljc4LTEuNTktNS4xOS00LjU2QzcuMTEuNzQgMiA2LjQxIDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgNS44OSAwIDEwLjU0LTUuMDggOS45NS0xMS4wMXpNMTIgMjBjLTQuNDEgMC04LTMuNTktOC04IDAtMy4zMSAyLjczLTguMTggOC4wOC04LjAyLjQyIDIuNTQgMi40NCA0LjU2IDQuOTkgNC45NC4wNy4zNi41MiAyLjU1IDIuOTIgMy42M0MxOS43IDE2Ljg2IDE2LjA2IDIwIDEyIDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29yb25hdmlydXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMTJjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTEgLjQ1LTEgMS0xIDEgLjQ1IDEgMXptNC4yNS0yYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bS0zLjUgMGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpNMjIgMTEuMjV2MS41YzAgLjQxLS4zNC43NS0uNzUuNzVzLS43NS0uMzQtLjc1LS43NWgtMS41NGE2Ljk3OCA2Ljk3OCAwIDAgMS0xLjUyIDMuNjVsMS4wOSAxLjA5LjAxLS4wMWMuMjktLjI5Ljc3LS4yOSAxLjA2IDAgLjI5LjI5LjI5Ljc3IDAgMS4wNmwtMS4wNiAxLjA2Yy0uMjkuMjktLjc3LjI5LTEuMDYgMGEuNzUyLjc1MiAwIDAgMS0uMDEtMS4wNWwtMS4wOS0xLjA5YTcuMDE1IDcuMDE1IDAgMCAxLTMuNjQgMS41MXYxLjU0aC4wMWMuNDEgMCAuNzUuMzQuNzUuNzVzLS4zNC43NS0uNzUuNzVoLTEuNWMtLjQxIDAtLjc1LS4zNC0uNzUtLjc1cy4zMy0uNzQuNzQtLjc1di0xLjU1YTYuOTQ4IDYuOTQ4IDAgMCAxLTMuNjMtMS41MWwtMS4wOSAxLjA5LjAxLjAxYy4yOS4yOS4yOS43NyAwIDEuMDYtLjI5LjI5LS43Ny4yOS0xLjA2IDBMNC40IDE4LjU0YS43NTQuNzU0IDAgMCAxIDAtMS4wNmMuMjktLjI5Ljc2LS4yOSAxLjA1LS4wMWwxLjA5LTEuMDlhNi44OSA2Ljg5IDAgMCAxLTEuNS0zLjYzSDMuNWMwIC40MS0uMzQuNzUtLjc1Ljc1UzIgMTMuMTYgMiAxMi43NXYtMS41YzAtLjQxLjM0LS43NS43NS0uNzVzLjc1LjM0Ljc1Ljc1aDEuNTRjLjE1LTEuMzcuNjktMi42MSAxLjUtMy42M0w1LjQ1IDYuNTNjLS4yOS4yOC0uNzYuMjgtMS4wNS0uMDFhLjc1NC43NTQgMCAwIDEgMC0xLjA2TDUuNDYgNC40Yy4yOS0uMjkuNzctLjI5IDEuMDYgMCAuMjkuMjkuMjkuNzcgMCAxLjA2bC0uMDEuMDFMNy42IDYuNTZhNi45ODIgNi45ODIgMCAwIDEgMy42My0xLjUxVjMuNWEuNzUzLjc1MyAwIDAgMS0uNzQtLjc1Ljc3Ljc3IDAgMCAxIC43Ni0uNzVoMS41Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NWgtLjAxdjEuNTRjMS4zNy4xNCAyLjYyLjY5IDMuNjQgMS41MWwxLjA5LTEuMDlhLjc0Mi43NDIgMCAwIDEgLjAxLTEuMDVjLjI5LS4yOS43Ny0uMjkgMS4wNiAwbDEuMDYgMS4wNmMuMjkuMjkuMjkuNzcgMCAxLjA2cy0uNzcuMjktMS4wNiAwbC0uMDEtLjAxLTEuMDkgMS4wOGE3LjAyNSA3LjAyNSAwIDAgMSAxLjUyIDMuNjVoMS41NGMwLS40MS4zNC0uNzUuNzUtLjc1cy43NS4zNC43NS43NXpNMTcgMTJjMC0yLjc2LTIuMjQtNS01LTVzLTUgMi4yNC01IDUgMi4yNCA1IDUgNSA1LTIuMjQgNS01em0tNS0xYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTMuNSAwYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bS0xLjc1IDNjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNydWVsdHlGcmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTRjLS4yNC0uMjQtLjQ0LS40OS0uNjUtLjc1QzE3LjUxIDExLjUgMTkgOC41NiAxOSA1YzAtMS45NS0uNzQtMy0yLTMtMS41NCAwLTMuOTYgMi4wNi01IDUuOTdDMTAuOTYgNC4wNiA4LjU0IDIgNyAyIDUuNzQgMiA1IDMuMDUgNSA1YzAgMy41NiAxLjQ5IDYuNSAyLjY1IDguMjUtLjIxLjI2LS40MS41MS0uNjUuNzUtLjI1LjI1LTIgMS4zOS0yIDMuNUM1IDE5Ljk4IDcuMDIgMjIgOS41IDIyYzEuNSAwIDIuNS0uNSAyLjUtLjVzMSAuNSAyLjUuNWMyLjQ4IDAgNC41LTIuMDIgNC41LTQuNSAwLTIuMTEtMS43NS0zLjI1LTItMy41em0tLjEyLTkuOTdjLjA2LjE3LjEyLjQ4LjEyLjk3IDAgMi44NC0xLjExIDUuMjQtMi4wNyA2Ljc4LS4zOC0uMjYtLjgzLS40OC0xLjQtLjYyLjI0LTQuNTIgMi40NC02LjgzIDMuMzUtNy4xM3pNNyA1YzAtLjQ5LjA2LS44LjEyLS45Ny45MS4zIDMuMTEgMi42MSAzLjM2IDcuMTMtLjU4LjE0LTEuMDMuMzUtMS40LjYyQzguMTEgMTAuMjQgNyA3Ljg0IDcgNXptNy41IDE1Yy0xIDAtMS44LS4zMy0yLjIyLS41Ni40Mi0uMTguNzItLjcxLjcyLS45NCAwLS4yOC0uNDUtLjUtMS0uNXMtMSAuMjItMSAuNWMwIC4yMy4zLjc2LjcyLjk0LS40Mi4yMy0xLjIyLjU2LTIuMjIuNTZBMi41IDIuNSAwIDAgMSA3IDE3LjVjMC0uNy40My0xLjI0IDEtMS43My40NC0uMzYuNjEtLjUyIDEuMy0xLjM3Ljc2LS45NSAxLjA5LTEuNCAyLjctMS40czEuOTQuNDUgMi43IDEuNGMuNjkuODUuODYgMS4wMSAxLjMgMS4zNy41Ny40OSAxIDEuMDMgMSAxLjczYTIuNSAyLjUgMCAwIDEtMi41IDIuNXptLS41LTRjMCAuNDEtLjIyLjc1LS41Ljc1cy0uNS0uMzQtLjUtLjc1LjIyLS43NS41LS43NS41LjM0LjUuNzV6bS0zIDBjMCAuNDEtLjIyLjc1LS41Ljc1cy0uNS0uMzQtLjUtLjc1LjIyLS43NS41LS43NS41LjM0LjUuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDeWNsb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDcuNDdWNS4zNUMyMC4wNSA0Ljc3IDE2LjU2IDQgMTIgNGMtMi4xNSAwLTQuMTEuODYtNS41NCAyLjI0LjEzLS44NS40LTIuNCAxLjAxLTQuMjRINS4zNUM0Ljc3IDMuOTUgNCA3LjQ0IDQgMTJjMCAyLjE1Ljg2IDQuMTEgMi4yNCA1LjU0LS44NS0uMTQtMi40LS40LTQuMjQtMS4wMXYyLjEyQzMuOTUgMTkuMjMgNy40NCAyMCAxMiAyMGMyLjE1IDAgNC4xMS0uODYgNS41NC0yLjI0LS4xNC44NS0uNCAyLjQtMS4wMSA0LjI0aDIuMTJjLjU4LTEuOTUgMS4zNS01LjQ0IDEuMzUtMTAgMC0yLjE1LS44Ni00LjExLTIuMjQtNS41NC44NS4xMyAyLjQuNCA0LjI0IDEuMDF6TTEyIDE4Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA5IDEyIDIgMiA5aDl2MTNoMlY5aDl6TTEyIDQuNDQgMTUuNjYgN0g4LjM0TDEyIDQuNDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTQuMTQgMTItMS45Ni4zNy44MiA0LjM3VjIyaDJsLjAyLTRIN3Y0aDJ2LTZINC45ek0xOS4xIDE2SDE1djZoMnYtNGgxLjk4bC4wMiA0aDJ2LTUuMjZsLjgyLTQuMzctMS45Ni0uMzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXZlcnNpdHkxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI0XCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMS4yMiAxNy41OEEyLjAxIDIuMDEgMCAwIDAgMCAxOS40M1YyMWg0LjV2LTEuNjFjMC0uODMuMjMtMS42MS42My0yLjI5LS4zNy0uMDYtLjc0LS4xLTEuMTMtLjEtLjk5IDAtMS45My4yMS0yLjc4LjU4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjIwXCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuNzggMTcuNThBNi45NSA2Ljk1IDAgMCAwIDIwIDE3Yy0uMzkgMC0uNzYuMDQtMS4xMy4xLjQuNjguNjMgMS40Ni42MyAyLjI5VjIxSDI0di0xLjU3YzAtLjgxLS40OC0xLjUzLTEuMjItMS44NXpNMTYuMjQgMTYuNjVjLTEuMTctLjUyLTIuNjEtLjktNC4yNC0uOS0xLjYzIDAtMy4wNy4zOS00LjI0LjlBMi45ODggMi45ODggMCAwIDAgNiAxOS4zOVYyMWgxMnYtMS42MWMwLTEuMTgtLjY4LTIuMjYtMS43Ni0yLjc0ek04LjA3IDE5YS45Ni45NiAwIDAgMSAuNDktLjUyYzEuMS0uNDkgMi4yNi0uNzMgMy40My0uNzMgMS4xOCAwIDIuMzMuMjUgMy40My43My4yMy4xLjQuMjkuNDkuNTJIOC4wN3pNOSAxMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zLTEuMzQtMy0zLTMtMyAxLjM0LTMgM3ptNCAwYzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xIC40NS0xIDEtMSAxIC40NSAxIDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNDggMTAuODZDMi4xNyAxMC4xIDIgOS4zNiAyIDguNiAyIDYuMDIgNC4wMiA0IDYuNiA0YzIuNjggMCAzLjgyIDEuNzQgNS40IDMuNTlDMTMuNTcgNS43NiAxNC43IDQgMTcuNCA0IDE5Ljk4IDQgMjIgNi4wMiAyMiA4LjZjMCAuNzYtLjE3IDEuNS0uNDggMi4yNi42NS4zMSAxLjE4LjgyIDEuNTMgMS40NC42LTEuMi45NS0yLjQyLjk1LTMuN0MyNCA0LjkgMjEuMSAyIDE3LjQgMmMtMi4wOSAwLTQuMDkuOTctNS40IDIuNTFDMTAuNjkgMi45NyA4LjY5IDIgNi42IDIgMi45IDIgMCA0LjkgMCA4LjZjMCAxLjI4LjM1IDIuNS45NiAzLjcuMzUtLjYyLjg4LTEuMTMgMS41Mi0xLjQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGl2ZXJzaXR5MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwLjEgMTUuOSAxLjQyLTEuNDJDOC43OSAxMi4wNSA3IDEwLjQxIDcgOC44NSA3IDcuOCA3LjggNyA4Ljg1IDdjMS4xMSAwIDEuNTQuNjUgMi42OCAyaC45M2MxLjEyLTEuMzEgMS41My0yIDIuNjgtMiAuODcgMCAxLjU1LjU0IDEuNzcgMS4zMi4zNS0uMDQuNjgtLjA2IDEtLjA2LjM2IDAgLjcuMDMgMS4wMy4wOEMxOC43IDYuNDMgMTcuMTMgNSAxNS4xNSA1Yy0uMTIgMC0uMjMuMDMtLjM1LjA0LjEyLS4zMy4yLS42Ny4yLTEuMDQgMC0xLjY2LTEuMzQtMy0zLTNTOSAyLjM0IDkgNGMwIC4zNy4wOC43MS4yIDEuMDQtLjEyLS4wMS0uMjMtLjA0LS4zNS0uMDRDNi42OSA1IDUgNi42OSA1IDguODVjMCAyLjQyIDIuMDQgNC4zMSA1LjEgNy4wNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuNSAxNi4yNGMtLjMyLS4xOC0uNjYtLjI5LTEtLjM1LjA3LS4xLjE1LS4xOC4yMS0uMjggMS4wOC0xLjg3LjQ2LTQuMTgtMS40MS01LjI2LTIuMDktMS4yMS00Ljc2LS4zOS04LjY1LjlsLjUyIDEuOTRjMy40Ny0xLjE0IDUuNzktMS44OCA3LjE0LTEuMS45MS41MyAxLjIgMS42MS42OCAyLjUzLS41Ni45Ni0xLjMzIDEtMy4wNyAxLjMybC0uNDcuODFjLjU4IDEuNjIuOTcgMi4zMy4zOSAzLjMyLS41My45MS0xLjYxIDEuMi0yLjUzLjY4LS4wNi0uMDMtLjExLS4wOS0uMTctLjEzLS4zLjY3LS42NCAxLjI0LTEuMDMgMS43My4wNy4wNC4xMy4wOS4yLjE0IDEuODcgMS4wOCA0LjE4LjQ2IDUuMjYtMS40MS4wNi0uMS4wOS0uMjEuMTQtLjMyLjIyLjI3LjQ4LjUxLjguNjkgMS40My44MyAzLjI3LjM0IDQuMS0xLjFzLjMyLTMuMjktMS4xMS00LjExelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4zMiAxNC4wMWMtLjc0IDMuNTgtMS4yNyA1Ljk1LTIuNjIgNi43My0uOTEuNTMtMiAuMjQtMi41My0uNjgtLjU2LS45Ni0uMi0xLjY2LjM5LTMuMzJsLS40Ni0uODFjLTEuNy0uMzEtMi41LS4zMy0zLjA3LTEuMzItLjUzLS45MS0uMjQtMiAuNjgtMi41My4wOS0uMDUuMTktLjA4LjI5LS4xMS0uMzUtLjU2LS42NC0xLjE3LS44Mi0xLjg1LS4xNi4wNy0uMzIuMTQtLjQ4LjIzLTEuODcgMS4wOC0yLjQ5IDMuMzktMS40MSA1LjI2LjA2LjEuMTQuMTguMjEuMjgtLjM0LjA2LS42OC4xNy0xIC4zNS0xLjQzLjgzLTEuOTMgMi42Ni0xLjEgNC4xczIuNjYgMS45MyA0LjEgMS4xYy4zMi0uMTguNTgtLjQyLjgtLjY5LjA1LjExLjA4LjIyLjE0LjMyIDEuMDggMS44NyAzLjM5IDIuNDkgNS4yNiAxLjQxIDIuMDktMS4yMSAyLjcxLTMuOTMgMy41NS03Ljk0bC0xLjkzLS41M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpdmVyc2l0eTMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjMyIDEzLjAxYy45Ni4wMiAxLjg1LjUgMi40NSAxLjM0QTMuOTYxIDMuOTYxIDAgMCAwIDEyIDE2YzEuMjkgMCAyLjUtLjYyIDMuMjMtMS42Ni42LS44NCAxLjQ5LTEuMzIgMi40NS0xLjM0LS43Mi0xLjIyLTMuNi0yLTUuNjgtMi0yLjA3IDAtNC45Ni43OC01LjY4IDIuMDF6TTQgMTNjMS42NiAwIDMtMS4zNCAzLTNTNS42NiA3IDQgN3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzek0yMCAxM2MxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6TTEyIDEwYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTRoLTMuMjdjLS43NyAwLTEuMzUuNDUtMS42OC45Mi0uMDQuMDYtMS4zNiAyLjA4LTQuMDUgMi4wOC0xLjQzIDAtMy4wMy0uNjQtNC4wNS0yLjA4LS4zOS0uNTUtMS0uOTItMS42OC0uOTJIM2MtMS4xIDAtMiAuOS0yIDJ2NGg3di0yLjI2YzEuMTUuOCAyLjU0IDEuMjYgNCAxLjI2czIuODUtLjQ2IDQtMS4yNlYyMGg3di00YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9tYWluQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN1YzSDJ2MThoMTR2LTJoLTR2LTJoMnYtMmgtMnYtMmgydi0yaC0yVjloOHY2aDJWN0gxMnpNNiAxOUg0di0yaDJ2MnptMC00SDR2LTJoMnYyem0wLTRINFY5aDJ2MnptMC00SDRWNWgydjJ6bTQgMTJIOHYtMmgydjJ6bTAtNEg4di0yaDJ2MnptMC00SDhWOWgydjJ6bTAtNEg4VjVoMnYyem0xNCAxMnYyaC0ydjJoLTJ2LTJoLTJ2LTJoMnYtMmgydjJoMnptLTYtOGgtMnYyaDJ2LTJ6bTAgNGgtMnYyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb21haW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdWM0gydjE4aDIwVjdIMTJ6TTYgMTlINHYtMmgydjJ6bTAtNEg0di0yaDJ2MnptMC00SDRWOWgydjJ6bTAtNEg0VjVoMnYyem00IDEySDh2LTJoMnYyem0wLTRIOHYtMmgydjJ6bTAtNEg4VjloMnYyem0wLTRIOFY1aDJ2MnptMTAgMTJoLTh2LTJoMnYtMmgtMnYtMmgydi0yaC0yVjloOHYxMHptLTItOGgtMnYyaDJ2LTJ6bTAgNGgtMnYyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb3duaGlsbFNraWluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgNC41YzAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMiAyIC45IDIgMnptLTIuNzIgMTYuNC43Ni4yN2E1LjkzMyA1LjkzMyAwIDAgMCA0LjM0LS4xN0wyMiAyMi4xM2MtMS4wNS41NS0yLjI0Ljg3LTMuNS44Ny0uODYgMC0xLjY4LS4xNC0yLjQ1LS40MUwyIDE3LjQ3bC41LTEuNDEgNi45IDIuNTEgMS43Mi00LjQ0LTMuNTctMy43M2MtLjg5LS45NC0uNjctMi40Ny40NS0zLjEybDMuNDgtMi4wMWMxLjEtLjY0IDIuNTItLjEgMi45MSAxLjExbC4zMyAxLjA4YTUuMDE3IDUuMDE3IDAgMCAwIDIuODMgMy4xNGwuNTItMS42IDEuNDMuNDYtMS4xMiAzLjQ1QTcuMDI5IDcuMDI5IDAgMCAxIDEzIDguNTlsLTIuNTMgMS40NSAzLjAzIDMuNDYtMi4yMiA1Ljc2IDMuMDkgMS4xMiAyLjEtNi40NGMuNDYuMTguOTQuMzEgMS40NC40MWwtMi4xMyA2LjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWRpdE5vdGlmaWNhdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy41OCA2LjI1IDEuNzcgMS43N0wxNC4zNyAxM0gxMi42di0xLjc3bDQuOTgtNC45OHptMy4yNy0uNDQtMS4wNi0xLjA2Yy0uMi0uMi0uNTEtLjItLjcxIDBsLS44NS44NUwyMCA3LjM3bC44NS0uODVjLjItLjIuMi0uNTIgMC0uNzF6TTE4IDEyLjJWMTdoMnYySDR2LTJoMnYtN2MwLTIuNzkgMS45MS01LjE0IDQuNS01Ljh2LS43YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41di43Yy44Mi4yMSAxLjU3LjU5IDIuMjEgMS4wOWwtMS40MyAxLjQzQTMuODkgMy44OSAwIDAgMCAxMiA2Yy0yLjIxIDAtNCAxLjc5LTQgNHY3aDh2LTIuOGwyLTJ6TTEwIDIwaDRjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWxkZXJseVdvbWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAxMWMtMS41NiAwLTIuOTItLjktMy41OC0yLjIxbC0uNzktMS42N0MxNC4xMiA3LjEgMTMuNjMgNiAxMi4zNCA2IDguNzIgNiA2IDE2LjY5IDYgMTloMi41bC0yLjEgMi44TDggMjNsMy00aDJ2NGgydi00LjAzTDEzIDEzbC40OS0yLjcxQTYuMDIgNi4wMiAwIDAgMCAxNyAxMi44MXYuNjloMXYtMWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVYyM2gxVjEyLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41ek0xMS42IDIuOTFjLS4wNi4xOS0uMS4zOC0uMS41OSAwIDEuMS45IDIgMiAyczItLjkgMi0yLS45LTItMi0yYy0uMjEgMC0uNC4wNC0uNTkuMS0uMTUtLjM1LS41LS42LS45MS0uNi0uNTUgMC0xIC40NS0xIDEgMCAuNDEuMjUuNzYuNi45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVsZGVybHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYuNSA3VjIzaC0xVjEyLjVjMC0uMjgtLjIyLS41LS41LS41cy0uNS4yMi0uNS41djFoLTF2LS42OWE2LjAyIDYuMDIgMCAwIDEtMy41MS0yLjUyYy0uMzEuODctLjQ5IDEuNzgtLjQ5IDIuNzEgMCAuMjMuMDIuNDYuMDMuNjlMMTUgMTYuNVYyM2gtMnYtNWwtMS43OC0yLjU0TDExIDE5bC0zIDQtMS42LTEuMkw5IDE4LjMzVjEzYzAtMS4xNS4xOC0yLjI5LjUtMy4zOWwtMS41Ljg1VjE0SDZWOS4zbDUuNC0zLjA3di4wMWEyIDIgMCAwIDEgMS45NC4wM2MuMzYuMjEuNjMuNTEuOC44NWwuNzkgMS42N0EzLjk4NyAzLjk4NyAwIDAgMCAxOC41IDExYy44MyAwIDEuNS42NyAxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRW1vamlFbW90aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMThjMi4yOCAwIDQuMjItMS42NiA1LTRIN2MuNzggMi4zNCAyLjcyIDQgNSA0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbW9qaUV2ZW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDVoLTJWM0g3djJINWMtMS4xIDAtMiAuOS0yIDJ2MWMwIDIuNTUgMS45MiA0LjYzIDQuMzkgNC45NEE1LjAxIDUuMDEgMCAwIDAgMTEgMTUuOVYxOUg3djJoMTB2LTJoLTR2LTMuMWE1LjAxIDUuMDEgMCAwIDAgMy42MS0yLjk2QzE5LjA4IDEyLjYzIDIxIDEwLjU1IDIxIDhWN2MwLTEuMS0uOS0yLTItMnpNNSA4VjdoMnYzLjgyQzUuODQgMTAuNCA1IDkuMyA1IDh6bTcgNmMtMS42NSAwLTMtMS4zNS0zLTNWNWg2djZjMCAxLjY1LTEuMzUgMy0zIDN6bTctNmMwIDEuMy0uODQgMi40LTIgMi44MlY3aDJ2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtb2ppRmxhZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA5LTEtMkg3VjUuNzJjLjYtLjM0IDEtLjk4IDEtMS43MiAwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJjMCAuNzQuNCAxLjM4IDEgMS43MlYyMWgydi00aDVsMSAyaDdWOWgtNnptNCA4aC00bC0xLTJIN1Y5aDVsMSAyaDV2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtb2ppRm9vZEJldmVyYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxOWgxOHYySDJ6TTIwIDNINHYxMGMwIDIuMjEgMS43OSA0IDQgNGg2YzIuMjEgMCA0LTEuNzkgNC00di0zaDJjMS4xMSAwIDItLjg5IDItMlY1YzAtMS4xMS0uODktMi0yLTJ6bS00IDEwYzAgMS4xLS45IDItMiAySDhjLTEuMSAwLTItLjktMi0yVjVoM3YxLjRMNy4xOSA3Ljg1Yy0uMTIuMDktLjE5LjI0LS4xOS4zOXY0LjI2YzAgLjI4LjIyLjUuNS41aDRjLjI4IDAgLjUtLjIyLjUtLjVWOC4yNGMwLS4xNS0uMDctLjMtLjE5LS4zOUwxMCA2LjRWNWg2djh6TTkuNSA3LjI4bDEuNSAxLjJWMTJIOFY4LjQ4bDEuNS0xLjJ6TTIwIDhoLTJWNWgydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbW9qaU5hdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk0IDQuODhBMS4zMiAxLjMyIDAgMCAwIDIwLjY4IDRIMTkuNmwtLjMxLS45N0MxOS4xNSAyLjQzIDE4LjYxIDIgMTggMnMtMS4xNS40My0xLjI5IDEuMDRMMTYuNCA0aC0xLjA3Yy0uNTcgMC0xLjA4LjM1LTEuMjYuODgtLjE5LjU2LjA0IDEuMTcuNTYgMS40OGwuODcuNTItLjQgMS4yNGMtLjIzLjU4LS4wNCAxLjI1LjQ1IDEuNjIuMjMuMTcuNTEuMjYuNzguMjYuMzEgMCAuNjEtLjExLjg2LS4zMmwuODEtLjcuODEuN2MuMjUuMjEuNTUuMzIuODYuMzIuMjcgMCAuNTUtLjA5Ljc4LS4yNi41LS4zNy42OC0xLjA0LjQ1LTEuNjJsLS4zOS0xLjI0Ljg3LS41MmMuNTEtLjMxLjc0LS45Mi41Ni0xLjQ4ek0xOCA3Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6TTEzLjQ5IDEwLjUxYy0uNDMtLjQzLS45NC0uNzMtMS40OS0uOTNWOGgtMXYxLjM4Yy0uMTEtLjAxLS4yMy0uMDMtLjM0LS4wMy0xLjAyIDAtMi4wNS4zOS0yLjgzIDEuMTdsLS41LjUtMS4zMy0uNWEzLjAxIDMuMDEgMCAwIDAtMy44MyAxLjgyYy0uMjcuNzUtLjIzIDEuNTcuMTIgMi4yOS4yMy40OC41OC44NyAxIDEuMTYtLjM4IDEuMzUtLjA2IDIuODUgMSAzLjkxLjc4Ljc4IDEuOCAxLjE3IDIuODMgMS4xNy4zNyAwIC43My0uMDcgMS4wOS0uMTcuMjkuNDIuNjguNzcgMS4xNiAxIC40MS4yLjg0LjMgMS4yOC4zLjM0IDAgLjY4LS4wNiAxLjAxLS4xN2EzLjAwNyAzLjAwNyAwIDAgMCAxLjgyLTMuODVsLS40OS0xLjMuNS0uNWMuODctLjg3IDEuMjQtMi4wNCAxLjE0LTMuMTdIMTZ2LTFoLTEuNTljLS4xOS0uNTUtLjQ5LTEuMDYtLjkyLTEuNXptLTUuOTEgOC4zMWMtLjE1LjA0LS4zLjA2LS40Ni4wNi0uNTMgMC0xLjA0LS4yMS0xLjQxLS41OS0uMzgtLjM4LS41OS0uODgtLjU5LTEuNDEgMC0uMTYuMDMtLjMyLjA2LS40Ny4xNC4wMS4yOC4wMy40Mi4wMy44NSAwIDEuNjgtLjIgMi40NC0uNDgtLjMyLjg5LS41NCAxLjg3LS40NiAyLjg2em0tMi45MS00LjUzYy0uMjUtLjA5LS40NS0uMjctLjU3LS41MXMtLjEzLS41MS0uMDQtLjc2Yy4xOS0uNTIuNzYtLjc5IDEuMjYtLjYxbDMuMTYgMS4xOWMtMS4xNS42LTIuNjMgMS4xMS0zLjgxLjY5em02LjMyIDUuNjVjLS4yNS4wOS0uNTIuMDgtLjc2LS4wNGEuOTg5Ljk4OSAwIDAgMS0uNTEtLjU3Yy0uNDItMS4xOC4wOS0yLjY1LjctMy44bDEuMTggMy4xM2MuMTguNTItLjA5IDEuMS0uNjEgMS4yOHptMS4yMS01LjM0LS42MS0xLjYxYzAtLjAxLS4wMS0uMDItLjAyLS4wM2wtLjA2LS4xMmEuNjczLjY3MyAwIDAgMC0uMDctLjExbC0uMDktLjA5LS4wOS0uMDljLS4wMy0uMDMtLjA3LS4wNS0uMTEtLjA3LS4wNC0uMDItLjA3LS4wNS0uMTItLjA2LS4wMSAwLS4wMi0uMDEtLjAzLS4wMmwtMS42LS42YTEuOTY2IDEuOTY2IDAgMCAxIDIuNjcuMTNjLjczLjczLjc3IDEuODguMTMgMi42N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtb2ppT2JqZWN0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNjLS40NiAwLS45My4wNC0xLjQuMTQtMi43Ni41My00Ljk2IDIuNzYtNS40OCA1LjUyLS40OCAyLjYxLjQ4IDUuMDEgMi4yMiA2LjU2LjQzLjM4LjY2LjkxLjY2IDEuNDdWMTljMCAxLjEuOSAyIDIgMmguMjhhMS45OCAxLjk4IDAgMCAwIDMuNDQgMEgxNGMxLjEgMCAyLS45IDItMnYtMi4zMWMwLS41NS4yMi0xLjA5LjY0LTEuNDZBNi45NTYgNi45NTYgMCAwIDAgMTkgMTBjMC0zLjg3LTMuMTMtNy03LTd6bTIgMTRoLTR2LTFoNHYxem0tNCAydi0xaDR2MWgtNHptNS4zMS01LjI2Yy0uMDkuMDgtLjE2LjE4LS4yNC4yNkg4LjkyYy0uMDgtLjA5LS4xNS0uMTktLjI0LS4yNy0xLjMyLTEuMTgtMS45MS0yLjk0LTEuNTktNC43LjM2LTEuOTQgMS45Ni0zLjU1IDMuODktMy45My4zNC0uMDcuNjgtLjEgMS4wMi0uMSAyLjc2IDAgNSAyLjI0IDUgNSAwIDEuNDMtLjYxIDIuNzktMS42OSAzLjc0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDExaDF2M2gtMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOS42NzIgOS41OC43MDctLjcwNiAyLjEyMiAyLjEyMS0uNzA3LjcwN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIuMjA4IDExLjcxMi0uNzA3LS43MDcgMi4xMjEtMi4xMjEuNzA3LjcwN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtb2ppUGVvcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuODkgOC4xMUMxNS41IDcuNzIgMTQuODMgNyAxMy41MyA3aC0yLjU0QzguMjQgNi45OSA2IDQuNzUgNiAySDRjMCAzLjE2IDIuMTEgNS44NCA1IDYuNzFWMjJoMnYtNmgydjZoMlYxMC4wNUwxOC45NSAxNGwxLjQxLTEuNDEtNC40Ny00LjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRW1vamlTeW1ib2xzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyaDh2Mkgzek02IDExaDJWN2gzVjVIM3YyaDN6TTEyLjQwNCAyMC4xODJsNy43NzgtNy43NzggMS40MTQgMS40MTQtNy43NzggNy43Nzh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTQuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE5LjVcIixcImN5XCI6XCIxOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxMUEyLjUgMi41IDAgMCAwIDE4IDguNVY0aDNWMmgtNHY0LjUxYy0uNDItLjMyLS45My0uNTEtMS41LS41MWEyLjUgMi41IDAgMCAwIDAgNXpNOS43NCAxNS45NmwtMS40MSAxLjQxLS43MS0uNzEuMzUtLjM1YTIuNDk5IDIuNDk5IDAgMCAwLTEuNzctNC4yNyAyLjQ5OSAyLjQ5OSAwIDAgMC0xLjc3IDQuMjdsLjM1LjM1LTEuMDYgMS4wNmMtLjk4Ljk4LS45OCAyLjU2IDAgMy41NC41LjUgMS4xNC43NCAxLjc4Ljc0czEuMjgtLjI0IDEuNzctLjczbDEuMDYtMS4wNiAxLjQxIDEuNDEgMS40MS0xLjQxLTEuNDEtMS40MSAxLjQxLTEuNDEtMS40MS0xLjQzek01Ljg1IDE0LjJjLjEyLS4xMi4yNi0uMTUuMzUtLjE1cy4yMy4wMy4zNS4xNWMuMTkuMi4xOS41MSAwIC43MWwtLjM1LjM1LS4zNS0uMzZhLjUwMS41MDEgMCAwIDEgMC0uN3ptMCA1LjY1Yy0uMTIuMTItLjI2LjE1LS4zNS4xNXMtLjIzLS4wMy0uMzUtLjE1YS41MTMuNTEzIDAgMCAxIDAtLjcxbDEuMDYtMS4wNi43MS43MS0xLjA3IDEuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbW9qaVRyYW5zcG9ydGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNTcgMTAuNjZjLS4xNC0uNC0uNTItLjY2LS45Ny0uNjZoLTcuMTljLS40NiAwLS44My4yNi0uOTguNjZMMTAgMTQuNzdsLjAxIDUuNTFjMCAuMzguMzEuNzIuNjkuNzJoLjYyYy4zOCAwIC42OC0uMzguNjgtLjc2VjE5aDh2MS4yNGMwIC4zOC4zMS43Ni42OS43NmguNjFjLjM4IDAgLjY5LS4zNC42OS0uNzJsLjAxLTEuMzd2LTQuMTRsLTEuNDMtNC4xMXptLTguMTYuMzRoNy4xOWwxLjAzIDNoLTkuMjVsMS4wMy0zek0xMiAxN2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem04IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOWgxVjNIN3Y1SDJ2MTNoMVY5aDVWNGg2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDExaDJ2Mkg1ek0xMCA1aDJ2MmgtMnpNNSAxNWgydjJINXpNNSAxOWgydjJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVuZ2luZWVyaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNWMtMi42NyAwLTggMS4zNC04IDR2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHptLTYgNGMuMjItLjcyIDMuMzEtMiA2LTIgMi43IDAgNS44IDEuMjkgNiAySDN6TTQuNzQgOUg1YzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTRoLjI2Yy4yNyAwIC40OS0uMjIuNDktLjQ5di0uMDJhLjQ5LjQ5IDAgMCAwLS40OS0uNDlIMTNjMC0xLjQ4LS44MS0yLjc1LTItMy40NXYuOTVjMCAuMjgtLjIyLjUtLjUuNXMtLjUtLjIyLS41LS41VjQuMTRDOS42OCA0LjA2IDkuMzUgNCA5IDRzLS42OC4wNi0xIC4xNFY1LjVjMCAuMjgtLjIyLjUtLjUuNVM3IDUuNzggNyA1LjV2LS45NUM1LjgxIDUuMjUgNSA2LjUyIDUgOGgtLjI2YS40OS40OSAwIDAgMC0uNDkuNDl2LjAzYzAgLjI2LjIyLjQ4LjQ5LjQ4ek0xMSA5YzAgMS4xLS45IDItMiAycy0yLS45LTItMmg0ek0yMS45OCA2LjIzbC45My0uODMtLjc1LTEuMy0xLjE5LjM5Yy0uMTQtLjExLS4zLS4yLS40Ny0uMjdMMjAuMjUgM2gtMS41bC0uMjUgMS4yMmMtLjE3LjA3LS4zMy4xNi0uNDguMjdsLTEuMTgtLjM5LS43NSAxLjMuOTMuODNjLS4wMi4xNy0uMDIuMzUgMCAuNTJsLS45My44NS43NSAxLjMgMS4yLS4zOGMuMTMuMS4yOC4xOC40My4yNWwuMjggMS4yM2gxLjVsLjI3LTEuMjJjLjE2LS4wNy4zLS4xNS40NC0uMjVsMS4xOS4zOC43NS0xLjMtLjkzLS44NWMuMDMtLjE5LjAyLS4zNi4wMS0uNTN6TTE5LjUgNy43NWExLjI1IDEuMjUgMCAxIDEgMC0yLjUgMS4yNSAxLjI1IDAgMCAxIDAgMi41ek0xOS40IDEwLjc5bC0uODUuMjhjLS4xLS4wOC0uMjEtLjE0LS4zMy0uMTlsLS4xOC0uODhoLTEuMDdsLS4xOC44N2MtLjEyLjA1LS4yNC4xMi0uMzQuMTlsLS44NC0uMjgtLjU0LjkzLjY2LjU5Yy0uMDEuMTMtLjAxLjI1IDAgLjM3bC0uNjYuNjEuNTQuOTMuODYtLjI3Yy4xLjA3LjIuMTMuMzEuMThsLjE4Ljg4aDEuMDdsLjE5LS44N2MuMTEtLjA1LjIyLS4xMS4zMi0uMThsLjg1LjI3LjU0LS45My0uNjYtLjYxYy4wMS0uMTMuMDEtLjI1IDAtLjM3bC42Ni0uNTktLjUzLS45M3ptLTEuOSAyLjZjLS40OSAwLS44OS0uNC0uODktLjg5cy40LS44OS44OS0uODkuODkuNC44OS44OS0uNC44OS0uODkuODl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGYWNlMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk3IDEzLjUydi0uMDRDMjMuMjEgMTIuMzggMjQgMTAuNzggMjQgOWMwLTMuMzEtMi42OS02LTYtNi0uMjYgMC0uNTIuMDItLjc4LjA2YTUuOTggNS45OCAwIDAgMC0xMC40NCAwQzYuNTIgMy4wMiA2LjI2IDMgNiAzIDIuNjkgMyAwIDUuNjkgMCA5YzAgMS43OC43OSAzLjM4IDIuMDIgNC40OHYuMDRBNi4wMDggNi4wMDggMCAwIDAgMCAxOGMwIDMuMzEgMi42OSA2IDYgNiAxLjM5IDAgMi42Ny0uNDggMy42OS0xLjI4Ljc0LjE4IDEuNTEuMjggMi4zMS4yOHMxLjU3LS4xIDIuMzEtLjI4YzEuMDIuOCAyLjMgMS4yOCAzLjY5IDEuMjggMy4zMSAwIDYtMi42OSA2LTYgMC0xLjc4LS43OS0zLjM4LTIuMDMtNC40OHpNMjIgOWMwIC41NS0uMTIgMS4wNy0uMzIgMS41NEExMCAxMCAwIDAgMCAxNy45OCA1SDE4YzIuMjEgMCA0IDEuNzkgNCA0em0tOS45Ny00YzIuNzMuMDEgNS4xMyAxLjM5IDYuNTcgMy40OC0uNzEuNTctMS42Ljg5LTIuNTMuODlBNC4wNTkgNC4wNTkgMCAwIDEgMTIgNS4zMWMwLS4xLjAyLS4yLjAzLS4zMXpNMTIgMmMxLjI1IDAgMi4zNi41OSAzLjEgMS41LS45OC0uMzItMi4wMi0uNS0zLjEtLjVzLTIuMTIuMTgtMy4xLjVDOS42NCAyLjU5IDEwLjc1IDIgMTIgMnpNNiA1aC4wMmExMCAxMCAwIDAgMC0zLjcgNS41NEMyLjEyIDEwLjA3IDIgOS41NSAyIDljMC0yLjIxIDEuNzktNCA0LTR6bTAgMTdjLTIuMjEgMC00LTEuNzktNC00IDAtLjY5LjE5LTEuMzIuNS0xLjg4LjggMi40NCAyLjUyIDQuNDcgNC43NCA1LjY4LS4zOS4xMy0uOC4yLTEuMjQuMnptLTItOWMwLTMuNzIgMi41Ni02Ljg1IDYtNy43NHYuMDVjMCAzLjM0IDIuNzIgNi4wNiA2LjA2IDYuMDYgMS4yNiAwIDIuNDUtLjM5IDMuNDUtMS4wOS4zMS44Ni40OSAxLjc3LjQ5IDIuNzIgMCA0LjQxLTMuNTkgOC04IDhzLTgtMy41OS04LTh6bTE0IDljLS40NCAwLS44NS0uMDctMS4yNS0uMiAyLjIzLTEuMjEgMy45NC0zLjI0IDQuNzQtNS42OC4zMS41Ni41IDEuMi41IDEuODguMDEgMi4yMS0xLjc4IDQtMy45OSA0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhY2UzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjkxIDExLjk2QzIyLjM5IDYuMzIgMTcuNjYgMiAxMiAyUzEuNjEgNi4zMiAxLjA5IDExLjk2bC0uOSA5Ljg2Yy0uMSAxLjE3LjgyIDIuMTggMiAyLjE4aDE5LjYyYzEuMTggMCAyLjEtMS4wMSAxLjk5LTIuMThsLS44OS05Ljg2ek0xMyA0LjA3YzIuMjYuMjggNC4yMiAxLjUxIDUuNDkgMy4yOC0uNTguNC0xLjI2LjY1LTEuOTkuNjVDMTQuNTcgOCAxMyA2LjQzIDEzIDQuNXYtLjQzem0tMiAwdi40M0MxMSA2LjQzIDkuNDMgOCA3LjUgOGMtLjczIDAtMS40MS0uMjUtMS45OS0uNjUgMS4yNy0xLjc3IDMuMjMtMyA1LjQ5LTMuMjh6TTQuNTQgOS4xM2MuODcuNTUgMS44OS44NyAyLjk2Ljg3IDEuODYgMCAzLjUtLjkzIDQuNS0yLjM1QzEzIDkuMDcgMTQuNjQgMTAgMTYuNSAxMGMxLjA3IDAgMi4wOS0uMzIgMi45Ni0uODcuMzQuODkuNTQgMS44Ni41NCAyLjg3IDAgNC40MS0zLjU5IDgtOCA4cy04LTMuNTktOC04YzAtMS4wMS4yLTEuOTguNTQtMi44N3pNMTIgMjJIMi4xOWwuNTYtNi4yQzQuMjUgMTkuNDQgNy44MiAyMiAxMiAyMnM3Ljc1LTIuNTYgOS4yNS02LjJsLjU2IDYuMkgxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhY2U0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtLjk2IDAtMS44OC4xNC0yLjc1LjM5QTQuOTg2IDQuOTg2IDAgMCAwIDUgMEMyLjI0IDAgMCAyLjI0IDAgNWMwIDEuOC45NiAzLjM3IDIuMzkgNC4yNUMyLjE0IDEwLjEyIDIgMTEuMDQgMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMHMxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAyYzIuOSAwIDUuNDQgMS41NiA2Ljg0IDMuODgtLjQzLjA3LS44OC4xMi0xLjM0LjEyLTIuOSAwLTUuNDQtMS41Ni02Ljg0LTMuODguNDMtLjA3Ljg4LS4xMiAxLjM0LS4xMnpNNC40MiA5LjQ3YTguMDQ2IDguMDQ2IDAgMCAxIDMuNjYtNC40NCA4LjA0NiA4LjA0NiAwIDAgMS0zLjY2IDQuNDR6TTIgNWMwLTEuNjUgMS4zNS0zIDMtMyAuOTUgMCAxLjguNDYgMi4zNSAxLjE1LTEuNzkuOTQtMy4yNiAyLjQxLTQuMiA0LjJDMi40NiA2LjggMiA1Ljk1IDIgNXptMTAgMTVjLTQuNDEgMC04LTMuNTktOC04IDAtLjA1LjAxLS4xLjAxLS4xNSAyLjYtLjk4IDQuNjgtMi45OSA1Ljc0LTUuNTVhOS45NDIgOS45NDIgMCAwIDAgOS45MiAzLjQ2Yy4yMS43MS4zMyAxLjQ2LjMzIDIuMjQgMCA0LjQxLTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFjZTUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOCAwLTEuMTIuMjMtMi4xOC42NS0zLjE1YS40OTUuNDk1IDAgMCAwIC44NS0uMzVjMC0uMjUtLjE5LS40NS0uNDMtLjQ5LjE1LS4yNi4zMi0uNTEuNDktLjc1LS4wMy4wOC0uMDYuMTUtLjA2LjI0IDAgLjI4LjIyLjUuNS41cy41LS4yMi41LS41UzYuMjggNyA2IDdjLS4xMyAwLS4yNS4wNS0uMzQuMTMuNTItLjY4IDEuMTUtMS4yOCAxLjg2LTEuNzZBLjQ5NS40OTUgMCAwIDAgOCA2YS40OTUuNDk1IDAgMCAwIC4xLS45OGMuMTYtLjA5LjMyLS4xNy40OS0uMjUuMDkuMTQuMjQuMjMuNDEuMjMuMjggMCAuNS0uMjIuNS0uNSAwLS4wMy0uMDEtLjA2LS4wMi0uMDkuMzktLjEzLjc5LS4yMyAxLjIxLS4zLS4xMS4xLS4xOS4yMy0uMTkuMzkgMCAuMjguMjIuNS41LjVzLjUtLjIyLjUtLjVhLjUxLjUxIDAgMCAwLS4zLS40NmMuMjYtLjAzLjUzLS4wNC44LS4wNHMuNTQuMDEuOC4wNGMtLjE4LjA4LS4zLjI1LS4zLjQ2IDAgLjI4LjIyLjUuNS41cy41LS4yMi41LS41YzAtLjE2LS4wOC0uMjktLjE5LS4zOC40MS4wNy44Mi4xNyAxLjIxLjMtLjAxLjAyLS4wMi4wNS0uMDIuMDggMCAuMjguMjIuNS41LjUuMTcgMCAuMzItLjA5LjQxLS4yMy4xNy4wOC4zMy4xNi40OS4yNUEuNDk1LjQ5NSAwIDAgMCAxNiA2Yy4yOCAwIC41LS4yMi41LS41IDAtLjA1LS4wMS0uMDktLjAzLS4xMy43MS40OCAxLjM0IDEuMDggMS44NiAxLjc2YS40OTUuNDk1IDAgMCAwLS44My4zN2MwIC4yOC4yMi41LjUuNXMuNS0uMjIuNS0uNWMwLS4wOS0uMDMtLjE2LS4wNy0uMjMuMTguMjQuMzQuNDkuNDkuNzUtLjIzLjAzLS40Mi4yMy0uNDIuNDhhLjQ5NS40OTUgMCAwIDAgLjg1LjM1Yy40Mi45Ny42NSAyLjAzLjY1IDMuMTUgMCA0LjQxLTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTRcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTdcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjYuNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3XCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEzXCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0XCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2XCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjhcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjguNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3XCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEzXCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE3XCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhY2U2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAyYzMuNjggMCA2Ljc4IDIuNTEgNy43MSA1LjktLjYtLjE2LTEuMzMtLjM3LTIuMjYtMi4yNEEyLjk5MiAyLjk5MiAwIDAgMCAxNC43NiA2SDkuMjRjLTEuMTUgMC0yLjE4LjY0LTIuNjkgMS42Ni0uOTMgMS44Ni0xLjU4IDIuMDYtMi4yNiAyLjI0QzUuMjIgNi41MSA4LjMyIDQgMTIgNHptMCAxNmMtNC40MSAwLTgtMy41OS04LTh2LS4wM2MyLjMxLS4yMiAzLjQzLTEuNTkgNC4zNC0zLjQxLjE3LS4zNS41MS0uNTYuOS0uNTZoNS41M2MuMzggMCAuNzIuMjEuODkuNTUuOSAxLjggMS45OSAzLjE5IDQuMzQgMy40MXYuMDNjMCA0LjQyLTMuNTkgOC4wMS04IDguMDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFjZWJvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMFMyIDYuNDggMiAxMmMwIDQuODQgMy40NCA4Ljg3IDggOS44VjE1SDh2LTNoMlY5LjVDMTAgNy41NyAxMS41NyA2IDEzLjUgNkgxNnYzaC0yYy0uNTUgMC0xIC40NS0xIDF2MmgzdjNoLTN2Ni45NWM1LjA1LS41IDktNC43NiA5LTkuOTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGZW1hbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDkuNUMxNy41IDYuNDYgMTUuMDQgNCAxMiA0UzYuNSA2LjQ2IDYuNSA5LjVjMCAyLjcgMS45NCA0LjkzIDQuNSA1LjRWMTdIOXYyaDJ2Mmgydi0yaDJ2LTJoLTJ2LTIuMWMyLjU2LS40NyA0LjUtMi43IDQuNS01LjR6bS05IDBDOC41IDcuNTcgMTAuMDcgNiAxMiA2czMuNSAxLjU3IDMuNSAzLjVTMTMuOTMgMTMgMTIgMTNzLTMuNS0xLjU3LTMuNS0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaXJlcGxhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4wMSAxMi40NmMtLjE1LjQyLS4xNS44Mi0uMDggMS4yOC4xLjU1LjMzIDEuMDQuMiAxLjYtLjEzLjU5LS43NyAxLjM4LTEuNTMgMS42MyAxLjI4IDEuMDUgMy4yLjM3IDMuMzktMS4zMi4xNy0xLjU0LTEuNDQtMS45OC0xLjk4LTMuMTl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMnYyMGgyMFYySDJ6bTEwIDE2Yy0xLjU4IDAtMi45Ny0xLjg4LTMtMy4wNiAwLS4wNS0uMDEtLjEzLS4wMS0uMjItLjEzLTEuNzMgMS0zLjIgMi40Ny00LjM3LjQ3IDEuMDEgMS4yNyAyLjAzIDIuNTcgMi45Mi41OC40Mi45Ny44Ni45NyAxLjczIDAgMS42NS0xLjM1IDMtMyAzem04IDJoLTJ2LTJoLTIuMDJBNC45OCA0Ljk4IDAgMCAwIDE3IDE1YzAtMS44OS0xLjA5LTIuODUtMS44NS0zLjM3QzEyLjIgOS42MSAxMyA3IDEzIDdjLTYuNzMgMy41Ny02LjAyIDcuNDctNiA4IC4wMy45Ni40OSAyLjA3IDEuMjMgM0g2djJINFY0aDE2djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRml0Yml0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuODkgMTMuODljMS4wNCAwIDEuODktLjg1IDEuODktMS44OXMtLjg1LTEuODktMS44OS0xLjg5UzE4IDEwLjk2IDE4IDEycy44NSAxLjg5IDEuODkgMS44OXptLTQuMjQtLjIxYy45MyAwIDEuNjgtLjc1IDEuNjgtMS42OHMtLjc1LTEuNjgtMS42OC0xLjY4Yy0uOTMgMC0xLjY4Ljc1LTEuNjggMS42OHMuNzUgMS42OCAxLjY4IDEuNjh6bTAtNC4yNmMuOTMgMCAxLjY4LS43NSAxLjY4LTEuNjggMC0uOTMtLjc1LTEuNjgtMS42OC0xLjY4LS45MyAwLTEuNjguNzUtMS42OCAxLjY4IDAgLjkzLjc1IDEuNjggMS42OCAxLjY4em0wIDguNTFjLjkzIDAgMS42OC0uNzUgMS42OC0xLjY4IDAtLjkzLS43NS0xLjY4LTEuNjgtMS42OC0uOTMgMC0xLjY4Ljc1LTEuNjggMS42OCAwIC45Mi43NSAxLjY4IDEuNjggMS42OHptLTQuMjQtNC40NmMuODEgMCAxLjQ3LS42NiAxLjQ3LTEuNDdzLS42Ni0xLjQ3LTEuNDctMS40N2MtLjgxIDAtMS40Ny42Ni0xLjQ3IDEuNDdzLjY1IDEuNDcgMS40NyAxLjQ3em0wLTQuMjZjLjgxIDAgMS40Ny0uNjYgMS40Ny0xLjQ3cy0uNjYtMS40Ny0xLjQ3LTEuNDdjLS44MSAwLTEuNDcuNjYtMS40NyAxLjQ3cy42NSAxLjQ3IDEuNDcgMS40N3ptMCA4LjUyYy44MSAwIDEuNDctLjY2IDEuNDctMS40NyAwLS44MS0uNjYtMS40Ny0xLjQ3LTEuNDctLjgxIDAtMS40Ny42Ni0xLjQ3IDEuNDctLjAxLjgxLjY1IDEuNDcgMS40NyAxLjQ3em0wIDQuMjdjLjgxIDAgMS40Ny0uNjYgMS40Ny0xLjQ3IDAtLjgxLS42Ni0xLjQ3LTEuNDctMS40Ny0uODEgMC0xLjQ3LjY2LTEuNDcgMS40Ny0uMDEuODEuNjUgMS40NyAxLjQ3IDEuNDd6bTAtMTcuMDZjLjgxIDAgMS40Ny0uNjYgMS40Ny0xLjQ3UzEyLjIyIDIgMTEuNDEgMmMtLjgxIDAtMS40Ny42Ni0xLjQ3IDEuNDdzLjY1IDEuNDcgMS40NyAxLjQ3em0tNC4yNSA4LjMyYy43IDAgMS4yNi0uNTcgMS4yNi0xLjI2cy0uNTctMS4yNi0xLjI2LTEuMjZhMS4yNjEgMS4yNjEgMCAwIDAgMCAyLjUyem0wIDQuMjVhMS4yNjEgMS4yNjEgMCAwIDAgMC0yLjUyIDEuMjYxIDEuMjYxIDAgMCAwIDAgMi41MnptMC04LjQ5YTEuMjYxIDEuMjYxIDAgMCAwIDAtMi41MiAxLjI2MSAxLjI2MSAwIDAgMCAwIDIuNTJ6bS0zLjg3IDQuMDNhMS4wNSAxLjA1IDAgMSAwIDAtMi4xIDEuMDUgMS4wNSAwIDAgMCAwIDIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNjcgMTljLTEuOTUgMC0yLjA5IDEtMy4zMyAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjEgMS0zLjM0IDEtMS4yNCAwLTEuMzgtMS0zLjMzLTEtMS45NSAwLTIuMSAxLTMuMzQgMXYyYzEuOTUgMCAyLjExLTEgMy4zNC0xIDEuMjQgMCAxLjM4IDEgMy4zMyAxIDEuOTUgMCAyLjEtMSAzLjM0LTEgMS4yMiAwIDEuNCAxIDMuMzMgMSAxLjkzIDAgMi4xLTEgMy4zMy0xIDEuMjIgMCAxLjQgMSAzLjMzIDF2LTJjLTEuMjQgMC0xLjM4LTEtMy4zMy0xek04LjY4IDE3LjVjMS45NSAwIDIuMDktMSAzLjMzLTEgMS4xOSAwIDEuNDIgMSAzLjMzIDEgMS45NSAwIDIuMDktMSAzLjMzLTEgMS4xOSAwIDEuNC45OCAzLjMxIDF2LTJjLS42MyAwLTEtLjI4LTEuNDgtLjU1bC0yLjAyLTcuNTMgMi4wOS44NS43NC0xLjg2TDkuNzggMiAyIDExLjYxbDEuNTcgMS4yMyAxLjM5LTEuNzguOTMgMy40OGMtLjE4LS4wMi0uMzUtLjA1LS41Ni0uMDUtMS45NSAwLTIuMDkgMS0zLjMzIDF2MmMxLjkgMCAyLjE3LTEgMy4zNS0xIDEuMTkuMDEgMS40MiAxLjAxIDMuMzMgMS4wMXptMS43NC0xMy4wOSA1Ljc0IDIuMDkgMi4xNSA4LjAyYy0xLjU0LjExLTEuODIuODktMi44NS45NmwtMS40Mi01LjMxLTMuODYgMS4wNC45MSAzLjM5Yy0xLjEyLjI1LTEuNDEuOS0yLjQyLjktLjE4IDAtLjMzLS4wMi0uNDUtLjA1TDYuNSA5LjA5bDMuOTItNC42OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvbGxvd1RoZVNpZ25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6TTUuNzUgOC45IDMgMjNoMi4xbDEuNzUtOEw5IDE3djZoMnYtNy41NUw4Ljk1IDEzLjRsLjYtM0MxMC44NSAxMiAxMi44IDEzIDE1IDEzdi0yYy0xLjg1IDAtMy40NS0xLTQuMzUtMi40NWwtLjk1LTEuNkM5LjM1IDYuMzUgOC43IDYgOCA2Yy0uMjUgMC0uNS4wNS0uNzUuMTVMMiA4LjNWMTNoMlY5LjY1bDEuNzUtLjc1TTEzIDJ2N2gzLjc1djE0aDEuNVY5SDIyVjJoLTl6bTUuMDEgNlY2LjI1SDE0LjV2LTEuNWgzLjUxVjNsMi40OSAyLjVMMTguMDEgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZyb250SGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgOGMtLjE3IDAtLjM0LjAyLS41LjA1VjQuNWEyLjUgMi41IDAgMCAwLTMuMDQtMi40NEEyLjUwMiAyLjUwMiAwIDAgMCAxMi41IDBjLTEuMDYgMC0xLjk2LjY2LTIuMzMgMS41OUEyLjUgMi41IDAgMCAwIDcgNHYuNTVBMi41IDIuNSAwIDAgMCA0IDd2OC41YzAgNC42OSAzLjgxIDguNSA4LjUgOC41czguNS0zLjgxIDguNS04LjV2LTVBMi41IDIuNSAwIDAgMCAxOC41IDh6bS41IDcuNWE2LjUgNi41IDAgMSAxLTEzIDBWN2MwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXY1aDJWNGMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXY3aDJWMi41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41VjExaDJWNC41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41djguOTJjLTEuNzcuNzctMyAyLjUzLTMgNC41OGgyYzAtMS42NiAxLjM0LTMgMy0zdi00LjVjMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjV2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdpcmwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3LjVjLjk3IDAgMS43NS0uNzggMS43NS0xLjc1UzEyLjk3IDQgMTIgNHMtMS43NS43OC0xLjc1IDEuNzVTMTEuMDMgNy41IDEyIDcuNXptMiA4LjV2NGgtNHYtNEg4bDIuMzgtNi4zOGExLjczMyAxLjczMyAwIDAgMSAzLjI0IDBMMTYgMTZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcm91cEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA5VjdoLTJ2MmgtMnYyaDJ2Mmgydi0yaDJWOXpNOCAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6TTggMTNjLTIuNjcgMC04IDEuMzQtOCA0djNoMTZ2LTNjMC0yLjY2LTUuMzMtNC04LTR6bTYgNUgydi0uOTlDMi4yIDE2LjI5IDUuMyAxNSA4IDE1czUuOCAxLjI5IDYgMnYxek0xMi41MSA0LjA1QzEzLjQzIDUuMTEgMTQgNi40OSAxNCA4cy0uNTcgMi44OS0xLjQ5IDMuOTVDMTQuNDcgMTEuNyAxNiAxMC4wNCAxNiA4cy0xLjUzLTMuNy0zLjQ5LTMuOTV6TTE2LjUzIDEzLjgzQzE3LjQyIDE0LjY2IDE4IDE1LjcgMTggMTd2M2gydi0zYzAtMS40NS0xLjU5LTIuNTEtMy40Ny0zLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JvdXBPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA4YzAtMS40Mi0uNS0yLjczLTEuMzMtMy43Ni40Mi0uMTQuODYtLjI0IDEuMzMtLjI0IDIuMjEgMCA0IDEuNzkgNCA0cy0xLjc5IDQtNCA0aC0uMThsLS43Ny0uNzdjLjYtLjk0Ljk1LTIuMDUuOTUtMy4yM3ptNy44MyAxMkgyM3YtM2MwLTIuMTgtMy41OC0zLjQ3LTYuMzQtMy44NyAxLjEuNzUgMS45NSAxLjcxIDIuMjMgMi45NEwyMi44MyAyMHpNOSA2Yy0uMDYgMC0uMTEgMC0uMTYuMDFsLTEuNi0xLjZhMy45OTYgMy45OTYgMCAwIDEgNS4zNSA1LjM1bC0xLjYtMS42Yy4wMS0uMDUuMDEtLjEuMDEtLjE2IDAtMS4xLS45LTItMi0yem0uMTcgNkg5Yy0yLjIxIDAtNC0xLjc5LTQtNHYtLjE3TC42OSAzLjUxIDIuMSAyLjFsMTkuOCAxOS44LTEuNDEgMS40MUwxNyAxOS44M1YyMEgxdi0zYzAtMi42NiA1LjMzLTQgOC00IC4zNyAwIC44LjAzIDEuMjUuMDhMOS4xNyAxMnpNOSAxNWMtMi43IDAtNS44IDEuMjktNiAyLjAxVjE4aDEydi0uMTdsLTIuMTEtMi4xMUMxMS43NiAxNS4zMSAxMC4zMyAxNSA5IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JvdXBSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA5djJoLTZWOWg2ek04IDRDNS43OSA0IDQgNS43OSA0IDhzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTAgM2MtMi42NyAwLTggMS4zNC04IDR2M2gxNnYtM2MwLTIuNjYtNS4zMy00LTgtNHptNiA1SDJ2LS45OUMyLjIgMTYuMjkgNS4zIDE1IDggMTVzNS44IDEuMjkgNiAydjF6TTEyLjUxIDQuMDVDMTMuNDMgNS4xMSAxNCA2LjQ5IDE0IDhzLS41NyAyLjg5LTEuNDkgMy45NUMxNC40NyAxMS43IDE2IDEwLjA0IDE2IDhzLTEuNTMtMy43LTMuNDktMy45NXptNC4wMiA5Ljc4QzE3LjQyIDE0LjY2IDE4IDE1LjcgMTggMTd2M2gydi0zYzAtMS40NS0xLjU5LTIuNTEtMy40Ny0zLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTMuNzVjLTIuMzQgMC03IDEuMTctNyAzLjVWMTloMTR2LTEuNzVjMC0yLjMzLTQuNjYtMy41LTctMy41ek00LjM0IDE3Yy44NC0uNTggMi44Ny0xLjI1IDQuNjYtMS4yNXMzLjgyLjY3IDQuNjYgMS4yNUg0LjM0ek05IDEyYzEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzEwLjkzIDUgOSA1IDUuNSA2LjU3IDUuNSA4LjUgNy4wNyAxMiA5IDEyem0wLTVjLjgzIDAgMS41LjY3IDEuNSAxLjVTOS44MyAxMCA5IDEwcy0xLjUtLjY3LTEuNS0xLjVTOC4xNyA3IDkgN3ptNy4wNCA2LjgxYzEuMTYuODQgMS45NiAxLjk2IDEuOTYgMy40NFYxOWg0di0xLjc1YzAtMi4wMi0zLjUtMy4xNy01Ljk2LTMuNDR6TTE1IDEyYzEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzE2LjkzIDUgMTUgNWMtLjU0IDAtMS4wNC4xMy0xLjUuMzUuNjMuODkgMSAxLjk4IDEgMy4xNXMtLjM3IDIuMjYtMSAzLjE1Yy40Ni4yMi45Ni4zNSAxLjUuMzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcm91cHMyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMjcgMTJoMy40NmExLjUgMS41IDAgMCAwIDEuNDgtMS43NWwtLjMtMS43OWEyLjk1MSAyLjk1MSAwIDAgMC01LjgyLjAxbC0uMyAxLjc5Yy0uMTUuOTEuNTUgMS43NCAxLjQ4IDEuNzR6bS43OS0zLjIxYy4wOC0uNDYuNDctLjc5Ljk0LS43OXMuODYuMzMuOTQuNzlsLjIgMS4yMWgtMi4yOGwuMi0xLjIxek0xLjY2IDExLjExYy0uMTMuMjYtLjE4LjU3LS4xLjg4LjE2LjY5Ljc2IDEuMDMgMS41MyAxaDEuOTVjLjgzIDAgMS41MS0uNTggMS41MS0xLjI5IDAtLjE0LS4wMy0uMjctLjA3LS40LS4wMS0uMDMtLjAxLS4wNS4wMS0uMDguMDktLjE2LjE0LS4zNC4xNC0uNTMgMC0uMzEtLjE0LS42LS4zNi0uODItLjAzLS4wMy0uMDMtLjA2LS4wMi0uMS4wNy0uMi4wNy0uNDMuMDEtLjY1YTEuMTIgMS4xMiAwIDAgMC0uOTktLjc0LjA5LjA5IDAgMCAxLS4wNy0uMDNDNS4wMyA4LjE0IDQuNzIgOCA0LjM3IDhjLS4zIDAtLjU3LjEtLjc1LjI2LS4wMy4wMy0uMDYuMDMtLjA5LjAyYTEuMjQgMS4yNCAwIDAgMC0xLjcgMS4wM2MwIC4wMi0uMDEuMDQtLjAzLjA2LS4yOS4yNi0uNDYuNjUtLjQxIDEuMDUuMDMuMjIuMTIuNDMuMjUuNi4wMy4wMi4wMy4wNi4wMi4wOXpNMTYuMjQgMTMuNjVjLTEuMTctLjUyLTIuNjEtLjktNC4yNC0uOS0xLjYzIDAtMy4wNy4zOS00LjI0LjlBMi45ODggMi45ODggMCAwIDAgNiAxNi4zOVYxOGgxMnYtMS42MWMwLTEuMTgtLjY4LTIuMjYtMS43Ni0yLjc0ek04LjA3IDE2YS45Ni45NiAwIDAgMSAuNDktLjUyYzEuMS0uNDkgMi4yNi0uNzMgMy40My0uNzMgMS4xOCAwIDIuMzMuMjUgMy40My43My4yMy4xLjQuMjkuNDkuNTJIOC4wN3pNMS4yMiAxNC41OEEyLjAxIDIuMDEgMCAwIDAgMCAxNi40M1YxOGg0LjV2LTEuNjFjMC0uODMuMjMtMS42MS42My0yLjI5LS4zNy0uMDYtLjc0LS4xLTEuMTMtLjEtLjk5IDAtMS45My4yMS0yLjc4LjU4ek0yMi43OCAxNC41OEE2Ljk1IDYuOTUgMCAwIDAgMjAgMTRjLS4zOSAwLS43Ni4wNC0xLjEzLjEuNC42OC42MyAxLjQ2LjYzIDIuMjlWMThIMjR2LTEuNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1ek0yMiAxMXYtLjVjMC0xLjEtLjktMi0yLTJoLTJjLS40MiAwLS42NS40OC0uMzkuODFsLjcuNjNjLS4xOS4zMS0uMzEuNjctLjMxIDEuMDYgMCAxLjEuOSAyIDIgMnMyLS45IDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyb3VwczMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4yNCAxMy42NWMtMS4xNy0uNTItMi42MS0uOS00LjI0LS45LTEuNjMgMC0zLjA3LjM5LTQuMjQuOUEyLjk4OCAyLjk4OCAwIDAgMCA2IDE2LjM5VjE4aDEydi0xLjYxYzAtMS4xOC0uNjgtMi4yNi0xLjc2LTIuNzR6TTguMDcgMTZhLjk2Ljk2IDAgMCAxIC40OS0uNTJjMS4xLS40OSAyLjI2LS43MyAzLjQzLS43MyAxLjE4IDAgMi4zMy4yNSAzLjQzLjczLjIzLjEuNC4yOS40OS41Mkg4LjA3ek0xLjIyIDE0LjU4QTIuMDEgMi4wMSAwIDAgMCAwIDE2LjQzVjE4aDQuNXYtMS42MWMwLS44My4yMy0xLjYxLjYzLTIuMjktLjM3LS4wNi0uNzQtLjEtMS4xMy0uMS0uOTkgMC0xLjkzLjIxLTIuNzguNTh6TTIyLjc4IDE0LjU4QTYuOTUgNi45NSAwIDAgMCAyMCAxNGMtLjM5IDAtLjc2LjA0LTEuMTMuMS40LjY4LjYzIDEuNDYuNjMgMi4yOVYxOEgyNHYtMS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6TTEyIDEyYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3ptMC00Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTEuNDk3IDExIDQgOC40OTcgNi41MDMgMTEgNCAxMy41MDN6TTIwIDlsLTIuNSA0aDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcm91cHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDEzYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMS4xMyAxLjFjLS4zNy0uMDYtLjc0LS4xLTEuMTMtLjEtLjk5IDAtMS45My4yMS0yLjc4LjU4QTIuMDEgMi4wMSAwIDAgMCAwIDE2LjQzVjE4aDQuNXYtMS42MWMwLS44My4yMy0xLjYxLjYzLTIuMjl6TTIwIDEzYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptNCAzLjQzYzAtLjgxLS40OC0xLjUzLTEuMjItMS44NUE2Ljk1IDYuOTUgMCAwIDAgMjAgMTRjLS4zOSAwLS43Ni4wNC0xLjEzLjEuNC42OC42MyAxLjQ2LjYzIDIuMjlWMThIMjR2LTEuNTd6bS03Ljc2LTIuNzhjLTEuMTctLjUyLTIuNjEtLjktNC4yNC0uOS0xLjYzIDAtMy4wNy4zOS00LjI0LjlBMi45ODggMi45ODggMCAwIDAgNiAxNi4zOVYxOGgxMnYtMS42MWMwLTEuMTgtLjY4LTIuMjYtMS43Ni0yLjc0ek04LjA3IDE2Yy4wOS0uMjMuMTMtLjM5LjkxLS42OS45Ny0uMzggMS45OS0uNTYgMy4wMi0uNTZzMi4wNS4xOCAzLjAyLjU2Yy43Ny4zLjgxLjQ2LjkxLjY5SDguMDd6TTEyIDhjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMW0wLTJjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGFuZHNoYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMjIgMTkuODVjLS4xOC4xOC0uNS4yMS0uNzEgMGEuNTA0LjUwNCAwIDAgMSAwLS43MWwzLjM5LTMuMzktMS40MS0xLjQxLTMuMzkgMy4zOWMtLjE5LjItLjUxLjE5LS43MSAwYS41MDQuNTA0IDAgMCAxIDAtLjcxbDMuMzktMy4zOS0xLjQxLTEuNDEtMy4zOSAzLjM5Yy0uMTguMTgtLjUuMjEtLjcxIDBhLjUxMy41MTMgMCAwIDEgMC0uNzFsMy4zOS0zLjM5LTEuNDItMS40MS0zLjM5IDMuMzljLS4xOC4xOC0uNS4yMS0uNzEgMGEuNTEzLjUxMyAwIDAgMSAwLS43MUw5LjUyIDguNGwxLjg3IDEuODZjLjk1Ljk1IDIuNTkuOTQgMy41NCAwIC45OC0uOTguOTgtMi41NiAwLTMuNTRsLTEuODYtMS44Ni4yOC0uMjhjLjc4LS43OCAyLjA1LS43OCAyLjgzIDBsNC4yNCA0LjI0Yy43OC43OC43OCAyLjA1IDAgMi44M2wtOC4yIDguMnptOS42MS02Ljc4YTQuMDA4IDQuMDA4IDAgMCAwIDAtNS42NmwtNC4yNC00LjI0YTQuMDA4IDQuMDA4IDAgMCAwLTUuNjYgMGwtLjI4LjI4LS4yOC0uMjhhNC4wMDggNC4wMDggMCAwIDAtNS42NiAwTDIuMTcgNi43MWEzLjk5MiAzLjk5MiAwIDAgMC0uNCA1LjE5bDEuNDUtMS40NWEyIDIgMCAwIDEgLjM3LTIuMzNsMy41NC0zLjU0Yy43OC0uNzggMi4wNS0uNzggMi44MyAwbDMuNTYgMy41NmMuMTguMTguMjEuNSAwIC43MS0uMjEuMjEtLjUzLjE4LS43MSAwTDkuNTIgNS41N2wtNS44IDUuNzljLS45OC45Ny0uOTggMi41NiAwIDMuNTQuMzkuMzkuODkuNjMgMS40Mi43YTIuNDU4IDIuNDU4IDAgMCAwIDIuMTIgMi4xMiAyLjQ1OCAyLjQ1OCAwIDAgMCAyLjEyIDIuMTJjLjA3LjU0LjMxIDEuMDMuNyAxLjQyLjQ3LjQ3IDEuMS43MyAxLjc3LjczLjY3IDAgMS4zLS4yNiAxLjc3LS43M2w4LjIxLTguMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWFsdGhBbmRTYWZldHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41IDEzSDh2LTNoMi41VjcuNWgzVjEwSDE2djNoLTIuNXYyLjVoLTNWMTN6TTEyIDIgNCA1djYuMDljMCA1LjA1IDMuNDEgOS43NiA4IDEwLjkxIDQuNTktMS4xNSA4LTUuODYgOC0xMC45MVY1bC04LTN6bTYgOS4wOWMwIDQtMi41NSA3LjctNiA4LjgzLTMuNDUtMS4xMy02LTQuODItNi04Ljgzdi00LjdsNi0yLjI1IDYgMi4yNXY0Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWFydEJyb2tlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgM2MtLjk2IDAtMS45LjI1LTIuNzMuNjlMMTIgOWgzbC0zIDEwIDEtOWgtM2wxLjU0LTUuMzlDMTAuNDcgMy42MSA5LjAxIDMgNy41IDMgNC40MiAzIDIgNS40MiAyIDguNWMwIDQuMTMgNC4xNiA3LjE4IDEwIDEyLjUgNS40Ny00Ljk0IDEwLTguMjYgMTAtMTIuNUMyMiA1LjQyIDE5LjU4IDMgMTYuNSAzem0tNi4yNiAxMy43M0M2LjQ1IDEzLjM0IDQgMTEgNCA4LjUgNCA2LjU0IDUuNTQgNSA3LjUgNWMuNTkgMCAxLjE5LjE1IDEuNzMuNDJMNy4zNSAxMmgzLjQybC0uNTMgNC43M3ptNC44OS0xLjJMMTcuNjkgN2gtMi45MWwuNjEtMS44MmMuMzYtLjEyLjc0LS4xOCAxLjExLS4xOEMxOC40NiA1IDIwIDYuNTQgMjAgOC41YzAgMi4yMS0yLjAyIDQuNDMtNC44NyA3LjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGlraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNSA1LjVjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem00IDUuMjhjLTEuMjMtLjM3LTIuMjItMS4xNy0yLjgtMi4xOGwtMS0xLjZjLS40MS0uNjUtMS4xMS0xLTEuODQtMS0uNzggMC0xLjU5LjUtMS43OCAxLjQ0UzcgMjMgNyAyM2gyLjFsMS44LTggMi4xIDJ2Nmgydi03LjVsLTIuMS0yIC42LTNjMSAxLjE1IDIuNDEgMi4wMSA0IDIuMzRWMjNIMTlWOWgtMS41djEuNzh6TTcuNDMgMTMuMTNsLTIuMTItLjQxYS45OTkuOTk5IDAgMCAxLS43OS0xLjE3bC43Ni0zLjkzYTIgMiAwIDAgMSAyLjM0LTEuNThsMS4xNi4yMy0xLjM1IDYuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIaXN0b3J5RWR1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0djEuMzhjLS44My0uMzMtMS43Mi0uNS0yLjYxLS41LTEuNzkgMC0zLjU4LjY4LTQuOTUgMi4wNWwzLjMzIDMuMzNoMS4xMXYxLjExYy44Ni44NiAxLjk4IDEuMzEgMy4xMSAxLjM2VjE1SDZ2M2MwIDEuMS45IDIgMiAyaDEwYzEuNjYgMCAzLTEuMzQgMy0zVjRIOXptLTEuMTEgNi40MVY4LjI2SDUuNjFMNC41NyA3LjIyYTUuMDcgNS4wNyAwIDAgMSAxLjgyLS4zNGMxLjM0IDAgMi41OS41MiAzLjU0IDEuNDZsMS40MSAxLjQxLS4yLjJhMi43IDIuNyAwIDAgMS0xLjkyLjhjLS40NyAwLS45My0uMTItMS4zMy0uMzR6TTE5IDE3YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xdi0yaC02di0yLjU5Yy41Ny0uMjMgMS4xLS41NyAxLjU2LTEuMDNsLjItLjJMMTUuNTkgMTRIMTd2LTEuNDFsLTYtNS45N1Y2aDh2MTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNSA5LTIuMjUtNGgtMy4zMWwtMS42OS0zaC00LjVMOC4wNiA1SDQuNzVMMi41IDlsMS42OSAzLTEuNjkgMyAyLjI1IDRoMy4zMWwxLjY5IDNoNC41bDEuNjktM2gzLjMxbDIuMjUtNC0xLjY5LTMgMS42OS0zem0tMi4yOSAwLTEuMTIgMmgtMi4xNGwtMS4xMi0yIDEuMTItMmgyLjE0bDEuMTIgMnptLTguMjcgNS0xLjEyLTIgMS4xMi0yaDIuMTJsMS4xMiAyLTEuMTIgMmgtMi4xMnptMi4xNC0xMCAxLjEyIDEuOThMMTMuMDYgOGgtMi4xMkw5LjggNS45OCAxMC45MiA0aDIuMTZ6TTUuOTIgN2gyLjE0bDEuMTIgMi0xLjEyIDJINS45Mkw0Ljc5IDlsMS4xMy0yem0tMS4xMyA4IDEuMTItMmgyLjE0bDEuMTIgMi0xLjEyIDJINS45MmwtMS4xMy0yem02LjEzIDVMOS44IDE4LjAyIDEwLjk0IDE2aDIuMTJsMS4xMyAyLjAyTDEzLjA4IDIwaC0yLjE2em03LjE2LTNoLTIuMTRsLTEuMTItMiAxLjEyLTJoMi4xNGwxLjEyIDItMS4xMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSWNlU2thdGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE3YzAgMS42Ni0xLjM0IDMtMyAzaC0ydi0yaDN2LTRhMy45NiAzLjk2IDAgMCAwLTIuOTEtMy44MmwtMi42Mi0uNzRDMTIuNjIgOS4xOSAxMiA4LjM5IDEyIDcuNVYzSDN2MTVoM3YySDJ2MmgxNmMyLjc2IDAgNS0yLjI0IDUtNWgtMnpNNSAxNlY1aDV2MUg4LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41SDEwbC4xIDFIOC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNWgxLjgxYy40NSAxLjEyIDEuNCAyLjAxIDIuNiAyLjM2bDIuNjIuNzNDMTYuNCAxMi4zMyAxNyAxMy4xIDE3IDE0djJINXptOSA0SDh2LTJoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW50ZXJlc3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4wMiAxM2MtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6TTEzIDEzdjhoOHYtOGgtOHptNiA2aC00di00aDR2NHpNNyAybC01IDloMTBMNyAyem0wIDQuMTJMOC42IDlINS40TDcgNi4xMnpNMTkuMjUgMi41Yy0xLjA2IDAtMS44MS41Ni0yLjI1IDEuMTctLjQ0LS42MS0xLjE5LTEuMTctMi4yNS0xLjE3QzEzLjE5IDIuNSAxMiAzLjc4IDEyIDUuMjVjMCAyIDIuNDIgMy40MiA1IDUuNzUgMi41OC0yLjMzIDUtMy43NSA1LTUuNzUgMC0xLjQ3LTEuMTktMi43NS0yLjc1LTIuNzV6TTE3IDguMzVjLTEuNDUtMS4yMi0zLTIuNC0zLTMuMSAwLS40My4zNS0uNzUuNzUtLjc1LjMxIDAgLjUyLjE3LjczLjM3TDE3IDYuM2wxLjUyLTEuNDNjLjIxLS4yLjQyLS4zNy43My0uMzcuNCAwIC43NS4zMi43NS43NSAwIC43LTEuNTUgMS44OC0zIDMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUlvc1NoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYgNS0xLjQyIDEuNDItMS41OS0xLjU5VjE2aC0xLjk4VjQuODNMOS40MiA2LjQyIDggNWw0LTQgNCA0em00IDV2MTFjMCAxLjEtLjkgMi0yIDJINmEyIDIgMCAwIDEtMi0yVjEwYzAtMS4xMS44OS0yIDItMmgzdjJINnYxMWgxMlYxMGgtM1Y4aDNhMiAyIDAgMCAxIDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtheWFraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMjNjLTEuMDMgMC0yLjA2LS4yNS0zLS43NS0xLjg5IDEtNC4xMSAxLTYgMC0xLjg5IDEtNC4xMSAxLTYgMC0uOTUuNS0xLjk3Ljc1LTMgLjc1SDJ2LTJoMWMxLjA0IDAgMi4wOC0uMzUgMy0xIDEuODMgMS4zIDQuMTcgMS4zIDYgMCAxLjgzIDEuMyA0LjE3IDEuMyA2IDAgLjkxLjY1IDEuOTYgMSAzIDFoMXYyaC0xek0xMiA1LjVjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0xMiAxMnMtMS41Mi43MS0zLjkzIDEuMzdjLS44Mi0uMjMtMS41My0uNzUtMi4wNy0xLjM3LS43My44NC0xLjggMS41LTMgMS41cy0yLjI3LS42Ni0zLTEuNWMtLjczLjg0LTEuOCAxLjUtMyAxLjVzLTIuMjctLjY2LTMtMS41Yy0uNTQuNjEtMS4yNSAxLjEzLTIuMDcgMS4zN0MxLjUyIDE4LjIxIDAgMTcuNSAwIDE3LjVzMi45My0xLjM2IDcuMTMtMi4wOGwxLjM1LTQuMTdjLjMxLS45NSAxLjMyLTEuNDcgMi4yNy0xLjE2LjA5LjAzLjE5LjA3LjI3LjExbDIuNDcgMS4zIDIuODQtMS41IDEuNjUtMy43MS0uNTEtMS4zMkwxOC44IDIgMjIgMy40MyAyMC42NyA2LjRsLTEuMzEuNS0zLjcyIDguMzRjNC44NS42MyA4LjM2IDIuMjYgOC4zNiAyLjI2em0tOC45OC00LjU0LTEuNTIuOC0xLjc1LS45Mi0uNzEgMi4xN2MuMzIgMCAuNjQtLjAxLjk2LS4wMS43MSAwIDEuNC4wMyAyLjA3LjA4bC45NS0yLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2luZ0JlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEyYzAtMS4xLS45LTItMi0yVjdjMC0xLjEtLjktMi0yLTJINmMtMS4xIDAtMiAuOS0yIDJ2M2MtMS4xIDAtMiAuOS0yIDJ2NWgxLjMzTDQgMTloMWwuNjctMmgxMi42N2wuNjYgMmgxbC42Ny0ySDIydi01em0tNC0yaC01VjdoNXYzek02IDdoNXYzSDZWN3ptLTIgNWgxNnYzSDR2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLaXRlc3VyZmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgM2MwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem0xNC4wNi0yaC0yLjEyTDE1LjUgMy40NGwxLjA2IDEuMDYgMy41LTMuNXpNMjIgMjN2LTJoLTFjLTEuMDQgMC0yLjA4LS4zNS0zLTEtMS44MyAxLjMtNC4xNyAxLjMtNiAwLTEuODMgMS4zLTQuMTcgMS4zLTYgMC0uOTEuNjUtMS45NiAxLTMgMUgydjJoMWMxLjAzIDAgMi4wNS0uMjUgMy0uNzUgMS44OSAxIDQuMTEgMSA2IDAgMS44OSAxIDQuMTEgMSA2IDAgLjk1LjUgMS45Ny43NSAzIC43NWgxem0tMS05LjcyYzAgMS40NC0yLjE5IDMuNjItNS4wNCA1LjU4LS4zMS4wOS0uNjMuMTQtLjk2LjE0LTEuMiAwLTIuMjctLjY2LTMtMS41LS43My44NC0xLjggMS41LTMgMS41LS45NCAwLTEuODEtLjQxLTIuNDktLjk5LjQ2LS4zOS45Ni0uNzggMS40OS0xLjE3bC0xLjU1LTIuOTdBNC4wNiA0LjA2IDAgMCAxIDYgMTJWOGMwLTEuMS45LTIgMi0yaDNjMS4zOCAwIDIuNjMtLjU2IDMuNTQtMS40NmwxLjQxIDEuNDFBNy4wMTggNy4wMTggMCAwIDEgMTEgOEg5LjZ2My41aDIuOGwxLjY5IDEuODhjMS45NS0uODQgMy43Ny0xLjM4IDUuMDYtMS4zOC44NCAwIDEuODUuMjUgMS44NSAxLjI4em0tOC44Ljk5LS43LS43Ny0yLjUuMS44MyAyLjAxYy41OS0uMzggMS44MS0xLjA2IDIuMzctMS4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxhbmRzbGlkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDEyIDggOEgydjE0aDIwbC02LTgtNS0yem0xLjUzIDIuNzdMNiAxNi45NWwtMi0uNjd2LTEuODlsMiAuNjcgMy45NS0xLjMyIDIuNTggMS4wM3pNNyAxMGwxLjU3IDIuMDktMi41Ny44Ni0yLS42N1YxMGgzek00IDIwdi0xLjYxbDIgLjY3IDkuMDMtMy4wMUwxOCAyMEg0ek0xNyA2VjFsLTUtMS0zIDJ2NGwzIDIgNS0yem0tNi0yLjkzIDEuNDItLjk1IDIuNTguNTJ2Mi4wMWwtMi43NyAxLjExTDExIDQuOTNWMy4wN3pNMTguNSA3IDE2IDl2M2wyLjUgMiA0LjUtMlY4bC00LjUtMXptMi41IDMuNy0yLjIuOTgtLjgtLjY0VjkuOTZsMS0uOCAyIC40NHYxLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhdGlvbkNpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDExVjVsLTMtMy0zIDN2MkgzdjE0aDE4VjExaC02em0tOCA4SDV2LTJoMnYyem0wLTRINXYtMmgydjJ6bTAtNEg1VjloMnYyem02IDhoLTJ2LTJoMnYyem0wLTRoLTJ2LTJoMnYyem0wLTRoLTJWOWgydjJ6bTAtNGgtMlY1aDJ2MnptNiAxMmgtMnYtMmgydjJ6bTAtNGgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMdWdnYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDE4SDhWOWgxLjV2OXptMy4yNSAwaC0xLjVWOWgxLjV2OXpNMTYgMThoLTEuNVY5SDE2djl6bTEtMTJoLTJWM2MwLS41NS0uNDUtMS0xLTFoLTRjLS41NSAwLTEgLjQ1LTEgMXYzSDdjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDIgMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xaDZjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xYzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS02LjUtMi41aDNWNmgtM1YzLjV6TTE3IDE5SDdWOGgxMHYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMTFjMS45MyAwIDMuNSAxLjU3IDMuNSAzLjVTMTEuNDMgMTggOS41IDE4IDYgMTYuNDMgNiAxNC41IDcuNTcgMTEgOS41IDExem0wLTJDNi40NiA5IDQgMTEuNDYgNCAxNC41UzYuNDYgMjAgOS41IDIwczUuNS0yLjQ2IDUuNS01LjVjMC0xLjE2LS4zNi0yLjIzLS45Ny0zLjEyTDE4IDcuNDJWMTBoMlY0aC02djJoMi41OGwtMy45NyAzLjk3QzExLjczIDkuMzYgMTAuNjYgOSA5LjUgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hbjIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA3aC00Yy0xLjEgMC0yIC45LTIgMnY2aDIuNXY3aDN2LTdIMTZWOWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hbjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA3aC00Yy0xLjEgMC0yIC45LTIgMnY2aDJ2N2g0di03aDJWOWMwLTEuMS0uOS0yLTItMnpNMTIgMS43NTEgMTQuMjQ4IDQgMTIgNi4yNDggOS43NSA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFuNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjc1IDdoLTMuNUM5LjA0IDcgOC4xMSA4LjA3IDguMjcgOS4yNkwxMCAyMmg0bDEuNzMtMTIuNzRDMTUuODkgOC4wNyAxNC45NiA3IDEzLjc1IDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA3aC00Yy0xLjEgMC0yIC45LTIgMnY2aDJ2N2g0di03aDJWOWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hc2tzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNSA2Yy0xLjMxIDAtMi4zNyAxLjAxLTIuNDggMi4zLTEuODgtLjUtMi44NC0xLjgtNS4wMi0xLjgtMi4xOSAwLTMuMTQgMS4zLTUuMDIgMS44QzYuODcgNy4wMiA1LjgxIDYgNC41IDZBMi41IDIuNSAwIDAgMCAyIDguNVY5YzAgNiAzLjYgNy44MSA2LjUyIDcuOThDOS41MyAxNy42MiAxMC43MiAxOCAxMiAxOHMyLjQ3LS4zOCAzLjQ4LTEuMDJDMTguNCAxNi44MSAyMiAxNSAyMiA5di0uNUEyLjUgMi41IDAgMCAwIDE5LjUgNnptLTE2IDN2LS41YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYzYzAgMS4yOC4zOCAyLjQ3IDEuMDEgMy40OEM0Ljk5IDE0LjI3IDMuNSAxMi42NSAzLjUgOXpNNyAxMS41VjkuODVjMS4xMi0uMjMgMS45NS0uNjkgMi42Ni0xLjA4QzEwLjQ4IDguMzMgMTEuMDcgOCAxMiA4Yy45MyAwIDEuNTIuMzMgMi4zNC43OC43MS4zOSAxLjU0Ljg0IDIuNjYgMS4wOHYxLjY1YzAgMi43Ni0yLjI0IDUtNSA1cy01LTIuMjUtNS01LjAxek0yMC41IDljMCAzLjY1LTEuNDkgNS4yNy0zLjAxIDUuOTguNjQtMS4wMSAxLjAxLTIuMiAxLjAxLTMuNDh2LTNjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxVjl6bS05LjgxIDEuNDhjLS40NC4yNi0uOTYuNTYtMS42OS43NlYxMC4yYy40OC0uMTcuODQtLjM4IDEuMTgtLjU4QzEwLjcyIDkuMyAxMS4yMyA5IDEyIDlzMS4yNy4zIDEuOC42MmMuMzQuMi43MS40MiAxLjIuNTl2MS4wNGMtLjc1LS4yMS0xLjI2LS41MS0xLjcxLS43OC0uNDYtLjI3LS44LS40Ny0xLjI5LS40N3MtLjg0LjItMS4zMS40OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1pbGl0YXJ5VGVjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEwLjQzVjJIN3Y4LjQzYzAgLjM1LjE4LjY4LjQ5Ljg2bDQuMTggMi41MS0uOTkgMi4zNC0zLjQxLjI5IDIuNTkgMi4yNEw5LjA3IDIyIDEyIDIwLjIzIDE0LjkzIDIybC0uNzgtMy4zMyAyLjU5LTIuMjQtMy40MS0uMjktLjk5LTIuMzQgNC4xOC0yLjUxYy4zLS4xOC40OC0uNS40OC0uODZ6bS02IC42NC0yLTEuMlY0aDJ2Ny4wN3ptNC0xLjItMiAxLjJWNGgydjUuODd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb29kQmFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTMuNS05Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNXMuNjcgMS41IDEuNSAxLjV6bS03IDBjLjgzIDAgMS41LS42NyAxLjUtMS41UzkuMzMgOCA4LjUgOCA3IDguNjcgNyA5LjUgNy42NyAxMSA4LjUgMTF6bTMuNSAyLjVjLTIuMzMgMC00LjMxIDEuNDYtNS4xMSAzLjVoMTAuMjJjLS44LTIuMDQtMi43OC0zLjUtNS4xMS0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTMuNS05Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNXMuNjcgMS41IDEuNSAxLjV6bS03IDBjLjgzIDAgMS41LS42NyAxLjUtMS41UzkuMzMgOCA4LjUgOCA3IDguNjcgNyA5LjUgNy42NyAxMSA4LjUgMTF6bTMuNSA2LjVjMi4zMyAwIDQuMzEtMS40NiA1LjExLTMuNUg2Ljg5Yy44IDIuMDQgMi43OCAzLjUgNS4xMSAzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOaWdodHNTdGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNzggMTcuNTFjLTIuNDcgMC02LjU3LTEuMzMtOC42OC01LjQzLTIuMzMtNC41MS0uNS04LjQ4LjUzLTEwLjA3QzYuMjcgMi4yIDEuOTggNi41OSAxLjk4IDEyYzAgLjE0LjAyLjI4LjAyLjQyLjYxLS4yNiAxLjI4LS40MiAxLjk4LS40MiAwLTMuMDkgMS43My01Ljc3IDQuMy03LjEtLjUgMi4xOS0uNTQgNS4wNCAxLjA0IDguMSAxLjU3IDMuMDQgNC4xOCA0Ljk1IDYuOCA1Ljg2YTggOCAwIDAgMS01LjYxIDEuMDFjLS4zNy43LS45NCAxLjI3LTEuNjQgMS42NC45OC4zMiAyLjAzLjUgMy4xMS41IDMuNSAwIDYuNTgtMS44IDguMzctNC41Mi0uMTcuMDEtLjM3LjAyLS41Ny4wMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNmgtLjE4QzYuNCAxNC44NCA1LjMgMTQgNCAxNGMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgM2gzYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vQWR1bHRDb250ZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNNCAxMmMwLTEuODUuNjMtMy41NCAxLjY5LTQuOUw3LjU5IDloMi44M0w3LjEgNS42OUE3LjkyNCA3LjkyNCAwIDAgMSAxMiA0YzQuNDEgMCA4IDMuNTkgOCA4IDAgMS44NS0uNjMgMy41NC0xLjY5IDQuOWwtMS45LTEuOWgtMi44M2wzLjMxIDMuMzFBNy44NzQgNy44NzQgMCAwIDEgMTIgMjBjLTQuNDEgMC04LTMuNTktOC04elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC4yNSAxNC0xLjUtMiAxLjUtMmgtMS41TDEyIDExbC0uNzUtMWgtMS41bDEuNSAyLTEuNSAyaDEuNWwuNzUtMSAuNzUgMXpNOCAxMGwtLjc1IDEtLjc1LTFINWwxLjUgMkw1IDE0aDEuNWwuNzUtMUw4IDE0aDEuNUw4IDEybDEuNS0yek0xNiAxNGwuNzUtMSAuNzUgMUgxOWwtMS41LTIgMS41LTJoLTEuNWwtLjc1IDEtLjc1LTFoLTEuNWwxLjUgMi0xLjUgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vTHVnZ2FnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2IDEzLjE3LTEuNS0xLjVWOUgxNnY0LjE3em0zLjc4IDkuNDQtMS44NS0xLjg1Yy0uMjguMTUtLjU5LjI0LS45My4yNCAwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMUg5YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xYy0xLjEgMC0yLS45LTItMlY4YzAtLjA1LjAyLS4xLjAyLS4xNUwxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6TTE2LjE3IDE5bC0zLjQyLTMuNDJWMThoLTEuNXYtMy45Mkw5LjUgMTIuMzNWMThIOHYtNy4xN2wtMS0xVjE5aDkuMTd6TTEyLjc1IDloLS45MmwuOTIuOTJWOXpNMTkgOHY4LjE3bC0yLTJWOGgtNi4xN2wtLjk5LS45OUw5IDYuMTdWM2MwLS41NS40NS0xIDEtMWg0Yy41NSAwIDEgLjQ1IDEgMXYzaDJjMS4xIDAgMiAuOSAyIDJ6bS04LjUtMmgzVjMuNWgtM1Y2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9yZGljV2Fsa2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDIzaC0xLjV2LTlIMTl2OXpNNy41MyAxNEg2bC0yIDloMS41M2wyLTl6bTUuOTctOC41YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnpNOS44IDguOSA3IDIzaDIuMWwxLjgtOCAyLjEgMnY2aDJ2LTcuNWwtMi4xLTIgLjYtM0MxNC44IDEyIDE2LjggMTMgMTkgMTN2LTJjLTEuOSAwLTMuNS0xLTQuMy0yLjRsLTEtMS42YTIuMTQ1IDIuMTQ1IDAgMCAwLTIuNjUtLjg0TDYgOC4zVjEzaDJWOS42bDEuOC0uN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdGlmaWNhdGlvbkFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE0djNIOHYtN2MwLTIuMjEgMS43OS00IDQtNCAuODUgMCAxLjY0LjI2IDIuMjguNzJsMS40My0xLjQzQTUuODcgNS44NyAwIDAgMCAxMy41IDQuMnYtLjdjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNXYuN0M3LjkxIDQuODYgNiA3LjIxIDYgMTB2N0g0djJoMTZ2LTJoLTJ2LTNoLTJ6bS00IDhjMS4xIDAgMi0uOSAyLTJoLTRjMCAxLjEuOSAyIDIgMnpNMjQgOGgtM1Y1aC0ydjNoLTN2MmgzdjNoMnYtM2gzVjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RpZmljYXRpb25zQWN0aXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMmMxLjEgMCAyLS45IDItMmgtNGMwIDEuMS45IDIgMiAyem02LTZ2LTVjMC0zLjA3LTEuNjMtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4QzcuNjQgNS4zNiA2IDcuOTIgNiAxMXY1bC0yIDJ2MWgxNnYtMWwtMi0yem0tMiAxSDh2LTZjMC0yLjQ4IDEuNTEtNC41IDQtNC41czQgMi4wMiA0IDQuNXY2ek03LjU4IDQuMDggNi4xNSAyLjY1QzMuNzUgNC40OCAyLjE3IDcuMyAyLjAzIDEwLjVoMmE4LjQ0NSA4LjQ0NSAwIDAgMSAzLjU1LTYuNDJ6bTEyLjM5IDYuNDJoMmMtLjE1LTMuMi0xLjczLTYuMDItNC4xMi03Ljg1bC0xLjQyIDEuNDNhOC40OTUgOC40OTUgMCAwIDEgMy41NCA2LjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm90aWZpY2F0aW9uc05vbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIyYzEuMSAwIDItLjkgMi0yaC00YzAgMS4xLjkgMiAyIDJ6bTYtNnYtNWMwLTMuMDctMS42My01LjY0LTQuNS02LjMyVjRjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNXYuNjhDNy42NCA1LjM2IDYgNy45MiA2IDExdjVsLTIgMnYxaDE2di0xbC0yLTJ6bS0yIDFIOHYtNmMwLTIuNDggMS41MS00LjUgNC00LjVzNCAyLjAyIDQgNC41djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RpZmljYXRpb25zT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMmMxLjEgMCAyLS45IDItMmgtNGMwIDEuMS45IDIgMiAyem0wLTE1LjVjMi40OSAwIDQgMi4wMiA0IDQuNXYuMWwyIDJWMTFjMC0zLjA3LTEuNjMtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4Yy0uMjQuMDYtLjQ3LjE1LS42OS4yM2wxLjY0IDEuNjRjLjE4LS4wMi4zNi0uMDUuNTUtLjA1ek01LjQxIDMuMzUgNCA0Ljc2bDIuODEgMi44MUM2LjI5IDguNTcgNiA5Ljc0IDYgMTF2NWwtMiAydjFoMTQuMjRsMS43NCAxLjc0IDEuNDEtMS40MUw1LjQxIDMuMzV6TTE2IDE3SDh2LTZjMC0uNjguMTItMS4zMi4zNC0xLjlMMTYgMTYuNzZWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RpZmljYXRpb25zUGF1c2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgOS44aDIuOGwtMi44IDMuNFYxNWg1di0xLjhoLTIuOGwyLjgtMy40VjhoLTV6TTE4IDE2di01YzAtMy4wNy0xLjYzLTUuNjQtNC41LTYuMzJWNGMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41di42OEM3LjY0IDUuMzYgNiA3LjkyIDYgMTF2NWwtMiAydjFoMTZ2LTFsLTItMnptLTIgMUg4di02YzAtMi40OCAxLjUxLTQuNSA0LTQuNXM0IDIuMDIgNCA0LjV2NnptLTQgNWMxLjEgMCAyLS45IDItMmgtNGMwIDEuMS45IDIgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm90aWZpY2F0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJjMS4xIDAgMi0uOSAyLTJoLTRjMCAxLjEuOSAyIDIgMnptNi02di01YzAtMy4wNy0xLjYzLTUuNjQtNC41LTYuMzJWNGMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41di42OEM3LjY0IDUuMzYgNiA3LjkyIDYgMTF2NWwtMiAydjFoMTZ2LTFsLTItMnptLTIgMUg4di02YzAtMi40OCAxLjUxLTQuNSA0LTQuNXM0IDIuMDIgNCA0LjV2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU91dGRvb3JHcmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDIyYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zYy0xLjMgMC0yLjQuODQtMi44MiAySDkuMTRsMS45OS0zLjA2YTYuMzYgNi4zNiAwIDAgMCAxLjc0IDBsMS4wMiAxLjU3Yy40Mi0uNTMuOTYtLjk1IDEuNi0xLjIxbC0uNi0uOTNBNi45OTIgNi45OTIgMCAwIDAgMTkgOEg1YzAgMi44NCAxLjY5IDUuMjcgNC4xMiA2LjM3bC0zLjk1IDYuMDhhMSAxIDAgMCAwIC4yOSAxLjM4IDEgMSAwIDAgMCAxLjM4LS4yOWwxLTEuNTVoNi4zNEMxNC42IDIxLjE2IDE1LjcgMjIgMTcgMjJ6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tOS41OC04aDkuMTZjLS43NyAxLjc2LTIuNTQgMy00LjU4IDNzLTMuODEtMS4yNC00LjU4LTN6TTkuNDEgN2gxYy4xNS0xLjE1LjIzLTEuNjQtLjg5LTIuOTYtLjQyLS41LS42OC0uNzctLjQ2LTIuMDRoLS45OWMtLjIxIDEuMTEuMDMgMi4wNS44OSAyLjk2LjIyLjI0Ljc5LjY3LjQ1IDIuMDR6TTExLjg5IDdoMWMuMTUtMS4xNS4yMy0xLjY0LS44OS0yLjk2LS40Mi0uNS0uNjgtLjc4LS40Ni0yLjA0aC0uOTljLS4yMSAxLjExLjAzIDIuMDUuODkgMi45Ni4yMy4yNC44LjY3LjQ1IDIuMDR6TTE0LjQxIDdoMWMuMTUtMS4xNS4yMy0xLjY0LS44OS0yLjk2LS40Mi0uNS0uNjgtLjc3LS40Ni0yLjA0aC0uOTljLS4yMSAxLjExLjAzIDIuMDUuODkgMi45Ni4yMi4yNC43OS42Ny40NSAyLjA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFnZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNiAyaDZ2NmgtM2wxLTQtNCAxVjV6TTUgNWg2djNMNyA3bDEgNEg1VjV6bTYgMTRINXYtNmgzbC0xIDQgNC0xdjN6bTggMGgtNnYtM2w0IDEtMS00aDN2NnptLTQuMzctNC4zN0wxMiAxMy43MmwtMi42My45MS45MS0yLjYzLS45MS0yLjYzIDIuNjMuOTEgMi42My0uOTEtLjkxIDIuNjMuOTEgMi42M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhcmFnbGlkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTdjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem0zLjQ4Ljk0QzE0LjY4IDE4LjU0IDE0IDE5IDEyIDE5cy0yLjY4LS40Ni0zLjQ4LTEuMDZDOC4wNCAxNy41NSA3IDE2Ljc2IDcgMTRINWMwIDIuNy45MyA0LjQxIDIuMyA1LjUuNS40IDEuMS43IDEuNy45VjI0aDZ2LTMuNmMuNi0uMiAxLjItLjUgMS43LS45IDEuMzctMS4wOSAyLjMtMi44IDIuMy01LjVoLTJjMCAyLjc2LTEuMDQgMy41NS0xLjUyIDMuOTR6TTIzIDQuMjV2My40OWMwIC44LS44OCAxLjI2LTEuNTYuODMtLjE0LS4wOS0uMjgtLjE4LS40NC0uMjZMMTkgMTNoLTJsLTEuNS02LjI4YTI3Ljg1MiAyNy44NTIgMCAwIDAtNyAwTDcgMTNINUwzIDguMzFjLS4xNi4wOC0uMy4xNy0uNDQuMjZDMS44OCA5IDEgOC41NSAxIDcuNzRWNC4yNUMxIDEuOSA1LjkyIDAgMTIgMHMxMSAxLjkgMTEgNC4yNXpNNi45IDYuOThjLS45My4xOS0xLjc4LjQzLTIuNTMuNzFsMS41MSAzLjU1TDYuOSA2Ljk4em0xMi43My43MWMtLjc1LS4yOC0xLjYtLjUyLTIuNTMtLjcxbDEuMDIgNC4yNSAxLjUxLTMuNTR6TTIxIDQuMzFDMjAuNjUgMy42MyAxNy41NyAyIDEyIDJTMy4zNSAzLjYzIDMgNC4zMXYxLjc3QzUuMzQgNS4wNyA4LjU2IDQuNSAxMiA0LjVzNi42Ni41NyA5IDEuNThWNC4zMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhcnR5TW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNGgtMy4xN0wxNSAySDlMNy4xNyA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjZoNC4wNWwuNTktLjY1TDkuODggNGg0LjI0bDEuMjQgMS4zNS41OS42NUgyMHYxMnpNOSAxMmMwLTEuNjYgMS4zNC0zIDMtM2gzLjk4Yy0uOTItMS4yMS0yLjM1LTItMy45OC0yYTUuMDAyIDUuMDAyIDAgMCAwLTQuOSA2aDIuMDhjLS4xMS0uMzEtLjE4LS42NS0uMTgtMXptNiAwYzAgMS42Ni0xLjM0IDMtMyAzSDguMDJjLjkyIDEuMjEgMi4zNSAyIDMuOTggMmE1LjAwMiA1LjAwMiAwIDAgMCA0LjktNmgtMi4wOGMuMTEuMzEuMTguNjUuMTggMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlb3BsZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjY3IDEzLjEzQzE4LjA0IDE0LjA2IDE5IDE1LjMyIDE5IDE3djNoNHYtM2MwLTIuMTgtMy41Ny0zLjQ3LTYuMzMtMy44N3pNMTUgMTJjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTRjLS40NyAwLS45MS4xLTEuMzMuMjRhNS45OCA1Ljk4IDAgMCAxIDAgNy41MmMuNDIuMTQuODYuMjQgMS4zMy4yNHpNOSAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6TTkgMTNjLTIuNjcgMC04IDEuMzQtOCA0djNoMTZ2LTNjMC0yLjY2LTUuMzMtNC04LTR6bTYgNUgzdi0uOTlDMy4yIDE2LjI5IDYuMyAxNSA5IDE1czUuOCAxLjI5IDYgMnYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVvcGxlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMy43NWMtMi4zNCAwLTcgMS4xNy03IDMuNVYxOWgxNHYtMS43NWMwLTIuMzMtNC42Ni0zLjUtNy0zLjV6TTQuMzQgMTdjLjg0LS41OCAyLjg3LTEuMjUgNC42Ni0xLjI1czMuODIuNjcgNC42NiAxLjI1SDQuMzR6TTkgMTJjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTAuOTMgNSA5IDUgNS41IDYuNTcgNS41IDguNSA3LjA3IDEyIDkgMTJ6bTAtNWMuODMgMCAxLjUuNjcgMS41IDEuNVM5LjgzIDEwIDkgMTBzLTEuNS0uNjctMS41LTEuNVM4LjE3IDcgOSA3em03LjA0IDYuODFjMS4xNi44NCAxLjk2IDEuOTYgMS45NiAzLjQ0VjE5aDR2LTEuNzVjMC0yLjAyLTMuNS0zLjE3LTUuOTYtMy40NHpNMTUgMTJjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTYuOTMgNSAxNSA1Yy0uNTQgMC0xLjA0LjEzLTEuNS4zNS42My44OSAxIDEuOTggMSAzLjE1cy0uMzcgMi4yNi0xIDMuMTVjLjQ2LjIyLjk2LjM1IDEuNS4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlb3BsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMy43NWMtMi4zNCAwLTcgMS4xNy03IDMuNVYxOWgxNHYtMS43NWMwLTIuMzMtNC42Ni0zLjUtNy0zLjV6TTQuMzQgMTdjLjg0LS41OCAyLjg3LTEuMjUgNC42Ni0xLjI1czMuODIuNjcgNC42NiAxLjI1SDQuMzR6TTkgMTJjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTAuOTMgNSA5IDUgNS41IDYuNTcgNS41IDguNSA3LjA3IDEyIDkgMTJ6bTAtNWMuODMgMCAxLjUuNjcgMS41IDEuNVM5LjgzIDEwIDkgMTBzLTEuNS0uNjctMS41LTEuNVM4LjE3IDcgOSA3em03LjA0IDYuODFjMS4xNi44NCAxLjk2IDEuOTYgMS45NiAzLjQ0VjE5aDR2LTEuNzVjMC0yLjAyLTMuNS0zLjE3LTUuOTYtMy40NHpNMTUgMTJjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTYuOTMgNSAxNSA1Yy0uNTQgMC0xLjA0LjEzLTEuNS4zNS42My44OSAxIDEuOTggMSAzLjE1cy0uMzcgMi4yNi0xIDMuMTVjLjQ2LjIyLjk2LjM1IDEuNS4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvbjIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4zOSAxNC41NkMxNi43MSAxMy43IDE0LjUzIDEzIDEyIDEzcy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA0IDE3LjIyVjIwaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTE4IDE4SDZ2LS43OGMwLS4zOC4yLS43Mi41Mi0uODhDNy43MSAxNS43MyA5LjYzIDE1IDEyIDE1YzIuMzcgMCA0LjI5LjczIDUuNDggMS4zNC4zMi4xNi41Mi41LjUyLjg4VjE4ek05Ljc4IDEyaDQuNDRjMS4yMSAwIDIuMTQtMS4wNiAxLjk4LTIuMjZsLS4zMi0yLjQ1QzE1LjU3IDUuMzkgMTMuOTIgNCAxMiA0UzguNDMgNS4zOSA4LjEyIDcuMjlMNy44IDkuNzRjLS4xNiAxLjIuNzcgMi4yNiAxLjk4IDIuMjZ6bS4zMi00LjQxQzEwLjI2IDYuNjcgMTEuMDYgNiAxMiA2czEuNzQuNjcgMS45IDEuNTlsLjMyIDIuNDFIOS43OGwuMzItMi40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvbjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4zOSAxNC41NkMxNi43MSAxMy43IDE0LjUzIDEzIDEyIDEzcy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA0IDE3LjIyVjIwaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTE4IDE4SDZ2LS43OGMwLS4zOC4yLS43Mi41Mi0uODhDNy43MSAxNS43MyA5LjYzIDE1IDEyIDE1YzIuMzcgMCA0LjI5LjczIDUuNDggMS4zNC4zMi4xNi41Mi41LjUyLjg4VjE4ek0xMCAxMmg0YzEuNjYgMCAzLTEuMzQgMy0zIDAtLjczLS4yNy0xLjQtLjcxLTEuOTIuMTMtLjMzLjIxLS43LjIxLTEuMDhhMyAzIDAgMCAwLTEuODYtMi43N0MxNCAyLjQ4IDEzLjA2IDIgMTIgMnMtMiAuNDgtMi42NCAxLjIzQTMgMyAwIDAgMCA3LjUgNmMwIC4zOC4wOC43NS4yMSAxLjA4QzcuMjcgNy42IDcgOC4yNyA3IDljMCAxLjY2IDEuMzQgMyAzIDN6bS0uNzYtMy42M2MuODctMS4wNC4yNi0yIC4yNi0yLjM3IDAtLjQxLjI0LS43Ny42Mi0uOTIuMjktLjEyLjU1LS4zMS43NS0uNTQuMTctLjIxLjU1LS41NCAxLjEzLS41NHMuOTYuMzMgMS4xMy41M2MuMi4yNC40Ni40Mi43NS41NGExIDEgMCAwIDEgLjYyLjkzYzAgLjM3LS42MSAxLjMzLjI2IDIuMzcuNTguNjkuMDQgMS42My0uNzYgMS42M2gtNGMtLjggMC0xLjM0LS45NC0uNzYtMS42M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvbjQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4zOSAxNC41NkMxNi43MSAxMy43IDE0LjUzIDEzIDEyIDEzcy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA0IDE3LjIyVjIwaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTE4IDE4SDZ2LS43OGMwLS4zOC4yLS43Mi41Mi0uODhDNy43MSAxNS43MyA5LjYzIDE1IDEyIDE1YzIuMzcgMCA0LjI5LjczIDUuNDggMS4zNC4zMi4xNi41Mi41LjUyLjg4VjE4ek0xMiAxMmMyLjIxIDAgNC0xLjc5IDQtNFY0LjVjMC0uODMtLjY3LTEuNS0xLjUtMS41LS41MiAwLS45OC4yNy0xLjI1LjY3LS4yNy0uNC0uNzMtLjY3LTEuMjUtLjY3cy0uOTguMjctMS4yNS42N2MtLjI3LS40LS43My0uNjctMS4yNS0uNjdDOC42NyAzIDggMy42NyA4IDQuNVY4YzAgMi4yMSAxLjc5IDQgNCA0em0tMi02LjVoNFY4YzAgMS4xLS45IDItMiAycy0yLS45LTItMlY1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25BZGRBbHQxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOGMwLTIuMjEtMS43OS00LTQtNFM1IDUuNzkgNSA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptLTIgMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6TTEgMTh2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHMtOCAxLjM0LTggNHptMiAwYy4yLS43MSAzLjMtMiA2LTIgMi42OSAwIDUuNzggMS4yOCA2IDJIM3ptMTctM3YtM2gzdi0yaC0zVjdoLTJ2M2gtM3YyaDN2M2gyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVyc29uQWRkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOVY2aC0ydjNoLTN2MmgzdjNoMnYtM2gzVjloLTN6TTkgMTJjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTQtNCAxLjc5LTQgNCAxLjc5IDQgNCA0em0wLTZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yem02LjM5IDguNTZDMTMuNzEgMTMuNyAxMS41MyAxMyA5IDEzcy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCAxIDE3LjIyVjIwaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTE1IDE4SDN2LS43OGMwLS4zOC4yLS43Mi41Mi0uODhDNC43MSAxNS43MyA2LjYzIDE1IDkgMTVjMi4zNyAwIDQuMjkuNzMgNS40OCAxLjM0LjMyLjE2LjUyLjUuNTIuODhWMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25BZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDEyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptMC02YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptMCA4Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00em0tNiA0Yy4yMi0uNzIgMy4zMS0yIDYtMiAyLjcgMCA1LjggMS4yOSA2IDJIOXptLTMtM3YtM2gzdi0ySDZWN0g0djNIMXYyaDN2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvbk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwIDE3LjE3LTMuMzctMy4zOGMuNjQuMjIgMS4yMy40OCAxLjc3Ljc2Ljk3LjUxIDEuNTggMS41MiAxLjYgMi42MnptMS4xOSA0LjAyLTEuNDEgMS40MS0yLjYxLTIuNkg0di0yLjc4YzAtMS4xMi42MS0yLjE1IDEuNjEtMi42NiAxLjI5LS42NiAyLjg3LTEuMjIgNC42Ny0xLjQ1TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOSAxOC4zOHpNMTUuMTcgMThsLTMtM0gxMmMtMi4zNyAwLTQuMjkuNzMtNS40OCAxLjM0LS4zMi4xNi0uNTIuNS0uNTIuODhWMThoOS4xN3pNMTIgNmMxLjEgMCAyIC45IDIgMiAwIC44Ni0uNTQgMS41OS0xLjMgMS44N2wxLjQ4IDEuNDhhMy45OTkgMy45OTkgMCAxIDAtNS41My01LjUzbDEuNDggMS40OEExLjk5IDEuOTkgMCAwIDEgMTIgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvbk91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDUuOWEyLjEgMi4xIDAgMSAxIDAgNC4yIDIuMSAyLjEgMCAwIDEgMC00LjJtMCA5YzIuOTcgMCA2LjEgMS40NiA2LjEgMi4xdjEuMUg1LjlWMTdjMC0uNjQgMy4xMy0yLjEgNi4xLTIuMU0xMiA0QzkuNzkgNCA4IDUuNzkgOCA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDljLTIuNjcgMC04IDEuMzQtOCA0djNoMTZ2LTNjMC0yLjY2LTUuMzMtNC04LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25SZW1vdmVBbHQxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOGMwLTIuMjEtMS43OS00LTQtNFM2IDUuNzkgNiA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptLTIgMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6TTIgMTh2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHMtOCAxLjM0LTggNHptMiAwYy4yLS43MSAzLjMtMiA2LTIgMi42OSAwIDUuNzcgMS4yOCA2IDJINHpNMTcgMTBoNnYyaC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVyc29uUmVtb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOGMwLTIuMjEtMS43OS00LTQtNFM2IDUuNzkgNiA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptLTIgMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6TTIgMTh2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHMtOCAxLjM0LTggNHptMiAwYy4yLS43MSAzLjMtMiA2LTIgMi42OSAwIDUuNzcgMS4yOCA2IDJINHpNMTcgMTBoNnYyaC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVyc29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMm0wIDEwYzIuNyAwIDUuOCAxLjI5IDYgMkg2Yy4yMy0uNzIgMy4zMS0yIDYtMm0wLTEyQzkuNzkgNCA4IDUuNzkgOCA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDEwYy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVyc29uYWxJbmp1cnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMGMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTYuMzkgOC41NkMxNi43MSAxMS43IDE0LjUzIDExIDEyIDExcy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA0IDE1LjIyVjIyaDJ2LTYuNzhjMC0uMzguMi0uNzIuNTItLjg4QzcuNzEgMTMuNzMgOS42MyAxMyAxMiAxM2MuNzYgMCAxLjQ3LjA3IDIuMTMuMmwtMS41NSAzLjNIOS43NUM4LjIzIDE2LjUgNyAxNy43MyA3IDE5LjI1UzguMjMgMjIgOS43NSAyMkgxOGMxLjEgMCAyLS45IDItMnYtNC43OGMwLTEuMTItLjYxLTIuMTUtMS42MS0yLjY2ek0xMC45NCAyMEg5Ljc1Yy0uNDEgMC0uNzUtLjM0LS43NS0uNzVzLjM0LS43NS43NS0uNzVoMS44OWwtLjcgMS41ek0xOCAyMGgtNC44NWwyLjk0LTYuMjdjLjU0LjIgMS4wMS40MSAxLjQuNjEuMzEuMTYuNTEuNS41MS44OFYyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpYW5vT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMTkgMjEuMTkgMi44MSAyLjgxIDEuMzkgNC4yMiAzIDUuODNWMTljMCAxLjEuOSAyIDIgMmgxMy4xN2wxLjYxIDEuNjEgMS40MS0xLjQyek04LjI1IDE5SDVWNy44M2wyIDJ2My42N2MwIC41NS40NSAxIDEgMWguMjVWMTl6bTEuNSAwdi00LjVIMTBjLjQ2IDAgLjgyLS4zMS45NC0uNzNsMy4zMSAzLjMxVjE5aC00LjV6TTExIDguMTcgNS44MyAzSDE5YzEuMSAwIDIgLjkgMiAydjEzLjE3bC0yLTJWNWgtMnY4LjVjMCAuMTktLjA3LjM2LS4xNi41MUwxMyAxMC4xN1Y1aC0ydjMuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaWFubyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNSAxMS41aC4yNVYxOWgtNC41di00LjVIMTBjLjU1IDAgMS0uNDUgMS0xVjVoMnY4LjVjMCAuNTUuNDUgMSAxIDF6TTUgNWgydjguNWMwIC41NS40NSAxIDEgMWguMjVWMTlINVY1em0xNCAxNGgtMy4yNXYtNC41SDE2Yy41NSAwIDEtLjQ1IDEtMVY1aDJ2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS40NSAxNi41Mi0zLjAxLTMuMDFjLS4xMS0uMTEtLjI0LS4xMy0uMzEtLjEzcy0uMi4wMi0uMzEuMTNMOC44IDE2LjUzYy0uMzQuMzQtLjg3Ljg5LTIuNjQuODlsMy43MSAzLjdhMyAzIDAgMCAwIDQuMjQgMGwzLjcyLTMuNzFjLS45MSAwLTEuNjctLjE4LTIuMzgtLjg5ek04LjggNy40N2wzLjAyIDMuMDJjLjA4LjA4LjIuMTMuMzEuMTNzLjIzLS4wNS4zMS0uMTNsMi45OS0yLjk5Yy43MS0uNzQgMS41Mi0uOTEgMi40My0uOTFsLTMuNzItMy43MWEzIDMgMCAwIDAtNC4yNCAwbC0zLjcxIDMuN2MxLjc2IDAgMi4zLjU4IDIuNjEuODl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjExIDkuODUtMi4yNS0yLjI2SDE3LjZjLS41NCAwLTEuMDguMjItMS40NS42MWwtMyAzYy0uMjguMjgtLjY1LjQyLTEuMDIuNDJhMS41IDEuNSAwIDAgMS0xLjAyLS40Mkw4LjA5IDguMTdjLS4zOC0uMzgtLjktLjYtMS40NS0uNkg1LjE3bC0yLjI5IDIuM2EzIDMgMCAwIDAgMCA0LjI0bDIuMjkgMi4zaDEuNDhjLjU0IDAgMS4wNi0uMjIgMS40NS0uNmwzLjAyLTMuMDJjLjI4LS4yOC42NS0uNDIgMS4wMi0uNDJzLjc0LjE0IDEuMDIuNDJsMy4wMSAzLjAxYy4zOC4zOC45LjYgMS40NS42aDEuMjZsMi4yNS0yLjI2YTMuMDQyIDMuMDQyIDAgMCAwLS4wMi00LjI5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGx1c09uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgOEg4djRINHYyaDR2NGgydi00aDR2LTJoLTRWOHptNC41LTEuOTJWNy45bDIuNS0uNVYxOGgyVjVsLTQuNSAxLjA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUG9sbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0ek03IDEwaDJ2N0g3em00LTNoMnYxMGgtMnptNCA2aDJ2NGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVByZWNpc2lvbk1hbnVmYWN0dXJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS45MyA4LjM1LTMuNiAxLjY4TDE0IDcuN1Y2LjNsMi4zMy0yLjMzIDMuNiAxLjY4Yy4zOC4xOC44Mi4wMSAxLS4zNi4xOC0uMzguMDEtLjgyLS4zNi0xbC0zLjkyLTEuODNhLjk5My45OTMgMCAwIDAtMS4xMy4yTDEzLjc4IDQuNEEuOTc1Ljk3NSAwIDAgMCAxMyA0Yy0uNTUgMC0xIC40NS0xIDF2MUg4LjgyQzguNCA0Ljg0IDcuMyA0IDYgNCA0LjM0IDQgMyA1LjM0IDMgN2MwIDEuMS42IDIuMDUgMS40OCAyLjU4TDcuMDggMThINmMtMS4xIDAtMiAuOS0yIDJ2MWgxM3YtMWMwLTEuMS0uOS0yLTItMmgtMS42Mkw4LjQxIDguNzdjLjE3LS4yNC4zMS0uNDkuNDEtLjc3SDEydjFjMCAuNTUuNDUgMSAxIDEgLjMyIDAgLjYtLjE2Ljc4LS40bDEuNzQgMS43NGMuMy4zLjc1LjM4IDEuMTMuMmwzLjkyLTEuODNjLjM4LS4xOC41NC0uNjIuMzYtMWEuNzUzLjc1MyAwIDAgMC0xLS4zNnpNNiA4Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTUuMTEgMTBIOS4xN2wtMi40Ni04aC4xbDQuMyA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHN5Y2hvbG9neUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljk0IDkuMDZDMTkuNSA1LjczIDE2LjU3IDMgMTMgMyA5LjQ3IDMgNi41NyA1LjYxIDYuMDggOWwtMS45MyAzLjQ4Yy0uNDEuNjYuMDcgMS41Mi44NSAxLjUyaDF2MmMwIDEuMS45IDIgMiAyaDF2M2g3di00LjY4YTcuMDE2IDcuMDE2IDAgMCAwIDMuOTQtNy4yNnptLTUuMDUgNS41Ny0uODkuNDJWMTloLTN2LTNIOHYtNEg2LjdsMS4zMy0yLjMzQzguMjEgNy4wNiAxMC4zNSA1IDEzIDVjMi43NiAwIDUgMi4yNCA1IDUgMCAyLjA5LTEuMjkgMy44OC0zLjExIDQuNjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgMTIuNTRjLS40MSAwLS43NC4zMS0uNzQuNzMgMCAuNDEuMzMuNzQuNzQuNzQuNDIgMCAuNzMtLjMzLjczLS43NGEuNzEuNzEgMCAwIDAtLjczLS43M3pNMTIuNSA3Yy0xLjAzIDAtMS43NC42Ny0yIDEuNDVsLjk2LjRjLjEzLS4zOS40My0uODYgMS4wNS0uODYuOTUgMCAxLjEzLjg5LjggMS4zNi0uMzIuNDUtLjg2Ljc1LTEuMTQgMS4yNi0uMjMuNC0uMTguODctLjE4IDEuMTZoMS4wNmMwLS41NS4wNC0uNjUuMTMtLjgyLjIzLS40Mi42NS0uNjIgMS4wOS0xLjI3LjQtLjU5LjI1LTEuMzgtLjAxLTEuOC0uMzEtLjQ5LS45LS44OC0xLjc2LS44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBzeWNob2xvZ3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS44MiA3LjIyLTEgLjRjLS4yMS0uMTYtLjQzLS4yOS0uNjctLjM5TDE0IDYuMTdjLS4wMi0uMS0uMS0uMTctLjItLjE3aC0xLjZjLS4xIDAtLjE4LjA3LS4xOS4xN2wtLjE1IDEuMDZjLS4yNC4xLS40Ny4yMy0uNjcuMzlsLTEtLjRjLS4wOS0uMDMtLjIgMC0uMjQuMDlsLS44IDEuMzhhLjIuMiAwIDAgMCAuMDUuMjZsLjg1LjY2Yy0uMDMuMTItLjA1LjI2LS4wNS4zOXMuMDEuMjYuMDMuMzlsLS44NC42NmEuMTkuMTkgMCAwIDAtLjA1LjI1bC44IDEuMzljLjA1LjA5LjE1LjEyLjI1LjA5bC45OS0uNGMuMjEuMTYuNDMuMjkuNjguMzlsLjE0IDEuMDZjLjAyLjEuMS4xNy4yLjE3aDEuNmMuMSAwIC4xOC0uMDcuMi0uMTdsLjE1LTEuMDZjLjI0LS4xLjQ3LS4yMy42Ny0uMzlsLjk5LjRjLjA5LjA0LjIgMCAuMjQtLjA5bC44LTEuMzljLjA1LS4wOS4wMy0uMTktLjA1LS4yNWwtLjgzLS42NmEyLjU2MSAyLjU2MSAwIDAgMCAwLS43OGwuODUtLjY2YS4yLjIgMCAwIDAgLjA1LS4yNmwtLjgtMS4zOGMtLjA1LS4wOS0uMTYtLjEyLS4yNS0uMDl6TTEzIDExLjQzYTEuNDMgMS40MyAwIDEgMSAwLTIuODYgMS40MyAxLjQzIDAgMCAxIDAgMi44NnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOTQgOS4wNmMtLjQzLTMuMjctMy4yMy01Ljg2LTYuNTMtNi4wNUMxMy4yNyAzIDEzLjE0IDMgMTMgMyA5LjQ3IDMgNi41NyA1LjYxIDYuMDggOWwtMS45MyAzLjQ4Yy0uNDEuNjYuMDcgMS41Mi44NSAxLjUyaDF2MmMwIDEuMS45IDIgMiAyaDF2M2g3di00LjY4YTcuMDE2IDcuMDE2IDAgMCAwIDMuOTQtNy4yNnptLTUuMDUgNS41Ny0uODkuNDJWMTloLTN2LTNIOHYtNEg2LjdsMS4zMy0yLjMzQzguMjEgNy4wNiAxMC4zNSA1IDEzIDVjMi43NiAwIDUgMi4yNCA1IDUgMCAyLjA5LTEuMjkgMy44OC0zLjExIDQuNjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQdWJsaWNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA4LjE3IDYuNDkgMy42NkE5LjkxIDkuOTEgMCAwIDEgMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMCAwIDIuMDQtLjYxIDMuOTMtMS42NiA1LjUxbC0xLjQ2LTEuNDZBNy44NDIgNy44NDIgMCAwIDAgMjAgMTJjMC0zLjM1LTIuMDctNi4yMi01LTcuNDFWNWMwIDEuMS0uOSAyLTIgMmgtMnYxLjE3em0xMC4xOSAxMy4wMi0xLjQxIDEuNDEtMi4yNy0yLjI3QTkuODM5IDkuODM5IDAgMCAxIDEyIDIyQzYuNDggMjIgMiAxNy41MiAyIDEyYzAtMi4wNC42MS0zLjkzIDEuNjYtNS41MUwxLjM5IDQuMjIgMi44IDIuODFsMTguMzkgMTguMzh6TTExIDE4Yy0xLjEgMC0yLS45LTItMnYtMWwtNC43OS00Ljc5QzQuMDggMTAuNzkgNCAxMS4zOCA0IDEyYzAgNC4wOCAzLjA1IDcuNDQgNyA3LjkzVjE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHVibGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek00IDEyYzAtLjYxLjA4LTEuMjEuMjEtMS43OEw4Ljk5IDE1djFjMCAxLjEuOSAyIDIgMnYxLjkzQzcuMDYgMTkuNDMgNCAxNi4wNyA0IDEyem0xMy44OSA1LjRjLS4yNi0uODEtMS0xLjQtMS45LTEuNGgtMXYtM2MwLS41NS0uNDUtMS0xLTFoLTZ2LTJoMmMuNTUgMCAxLS40NSAxLTFWN2gyYzEuMSAwIDItLjkgMi0ydi0uNDFDMTcuOTIgNS43NyAyMCA4LjY1IDIwIDEyYzAgMi4wOC0uODEgMy45OC0yLjExIDUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlYWxFc3RhdGVBZ2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDYuNVYxNGgtMlY3LjVMMTQgNCA5IDcuNVY5SDdWNi41bDctNSA3IDV6bS01LjUuNWgtMXYxaDFWN3ptLTIgMGgtMXYxaDFWN3ptMiAyaC0xdjFoMVY5em0tMiAwaC0xdjFoMVY5em01LjUgN2gtMmMwLTEuMi0uNzUtMi4yOC0xLjg3LTIuN0w4Ljk3IDExSDF2MTFoNnYtMS40NGw3IDEuOTQgOC0yLjV2LTFjMC0xLjY2LTEuMzQtMy0zLTN6TTMgMjB2LTdoMnY3SDN6bTEwLjk3LjQxTDcgMTguNDhWMTNoMS42MWw1LjgyIDIuMTdjLjM0LjEzLjU3LjQ2LjU3LjgzIDAgMC0xLjk5LS4wNS0yLjMtLjE1bC0yLjM4LS43OS0uNjMgMS45IDIuMzguNzljLjUxLjE3IDEuMDQuMjYgMS41OC4yNkgxOWMuMzkgMCAuNzQuMjMuOS41NmwtNS45MyAxLjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVjb21tZW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEwaC00LjU5bC41OC0zLjQxdi0uMmMtLjAxLS4yNi0uMTItLjUxLS4zLS43TDEyIDVsLTQuNiA1Yy0uMjcuMjYtLjQyLjYyLS40IDF2NWMwIDEuMS45IDIgMiAyaDUuNWMuNTYuMDMgMS4wOC0uMjkgMS4zLS44bDIuMS00LjljLjA4LS4xNS4xMi0uMzMuMS0uNVYxMWMwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZWN5Y2xpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Ljc3IDcuMTUgNy4yIDQuNzhsMS4wMy0xLjcxYy4zOS0uNjUgMS4zMy0uNjUgMS43MiAwbDEuNDggMi40Ni0xLjIzIDIuMDYtMSAxLjYyLTMuNDMtMi4wNnptMTUuOTUgNS44Mi0xLjYtMi42Ni0zLjQ2IDJMMTguODcgMTZIMjBhMiAyIDAgMCAwIDItMmMwLS4zNi0uMS0uNzEtLjI4LTEuMDN6TTE2IDIxaDEuNWEyIDIgMCAwIDAgMS43OS0xLjExTDIwLjc0IDE3SDE2di0ybC00IDQgNCA0di0yem0tNi00SDUuN2wtLjg0IDEuNDFjLS4zLjUtLjMyIDEuMTItLjA2IDEuNjUuMjguNTcuODcuOTQgMS41Mi45NEgxMHYtNHptLTMuODgtMi42NSAxLjczIDEuMDRMNi40OCA5LjkgMSAxMS4yN2wxLjcgMS4wMi0uNDEuNjljLS4zNS41OS0uMzggMS4zMS0uMDcgMS45MmwxLjYzIDMuMjYgMi4yNy0zLjgxem0xMC45LTkuMjEtMS4zLTIuMTdDMTUuMzUgMi4zNyAxNC43IDIgMTQgMmgtMy41M2wzLjEyIDUuMi0xLjcyIDEuMDMgNS40OSAxLjM3IDEuMzctNS40OS0xLjcxIDEuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZWR1Y2VDYXBhY2l0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDRjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptNC43OCAzLjU4QTYuOTUgNi45NSAwIDAgMCAxOCA3Yy0uNjcgMC0xLjMxLjEtMS45Mi4yOC41OC41NS45MiAxLjMyLjkyIDIuMTVWMTBoNXYtLjU3YzAtLjgxLS40OC0xLjUzLTEuMjItMS44NXpNNiA2YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMS45MiAxLjI4QzcuMzEgNy4xIDYuNjcgNyA2IDdjLS45OSAwLTEuOTMuMjEtMi43OC41OEEyLjAxIDIuMDEgMCAwIDAgMiA5LjQzVjEwaDV2LS41N2MwLS44My4zNC0xLjYuOTItMi4xNXpNMTAgNGMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem02IDZIOHYtLjU3YzAtLjgxLjQ4LTEuNTMgMS4yMi0xLjg1YTYuOTUgNi45NSAwIDAgMSA1LjU2IDBBMi4wMSAyLjAxIDAgMCAxIDE2IDkuNDNWMTB6bS0xIDZjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptNiA2aC04di0uNTdjMC0uODEuNDgtMS41MyAxLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAxIDUuNTYgMEEyLjAxIDIuMDEgMCAwIDEgMjEgMjEuNDNWMjJ6TTUgMTZjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptNiA2SDN2LS41N2MwLS44MS40OC0xLjUzIDEuMjItMS44NWE2Ljk1IDYuOTUgMCAwIDEgNS41NiAwQTIuMDEgMi4wMSAwIDAgMSAxMSAyMS40M1YyMnptMS43NS05di0yaC0xLjV2Mkg5bDMgMyAzLTNoLTIuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZW1vdmVNb2RlcmF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgNC4xNCA2IDIuMjV2NC43YzAgMS4xOS0uMjMgMi4zNi0uNjQgMy40NGwxLjUxIDEuNTFjLjcyLTEuNTMgMS4xMy0zLjIyIDEuMTMtNC45NVY1bC04LTMtNS4yMiAxLjk2IDEuNTUgMS41NUwxMiA0LjE0ek0yLjgxIDIuODEgMS4zOSA0LjIyIDQgNi44M3Y0LjI2YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSAxLjcyLS40MyAzLjI4LTEuMzYgNC41NS0yLjYybDMuMjMgMy4yMyAxLjQxLTEuNDFMMi44MSAyLjgxek0xMiAxOS45MmMtMy40NS0xLjEzLTYtNC44Mi02LTguODNWOC44M2w5LjE0IDkuMTRjLS45Ljg4LTEuOTcgMS41Ny0zLjE0IDEuOTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb2xsZXJTa2F0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTJhMy45NiAzLjk2IDAgMCAwLTIuOTEtMy44MmwtMi42Mi0uNzRDMTMuNjIgNy4xOSAxMyA2LjM5IDEzIDUuNVYxSDR2MTVoMTZ2LTR6bS0yIDJINlYzaDV2MUg5LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41SDExbC4xIDFIOS41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNWgxLjgxYy40NSAxLjEyIDEuNCAyLjAxIDIuNiAyLjM2bDIuNjIuNzNDMTcuNCAxMC4zMyAxOCAxMS4xIDE4IDEydjJ6TTUgMTdjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMTQtNGMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tNy00Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMCA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTYWZldHlEaXZpZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNWgydjE0aC0yVjV6bS02IDdjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0yLjc4IDEuNThhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgMSAxNS40M1YxNmg4di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1ek0xOSAxMmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTIuNzggMS41OGE2Ljk1IDYuOTUgMCAwIDAtNS41NiAwQTIuMDEgMi4wMSAwIDAgMCAxNSAxNS40M1YxNmg4di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2FuaXRpemVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSA2LjVDMTUuNSA1LjY2IDE3IDQgMTcgNHMxLjUgMS42NiAxLjUgMi41YzAgLjgzLS42NyAxLjUtMS41IDEuNXMtMS41LS42Ny0xLjUtMS41em00IDguNWEyLjUgMi41IDAgMCAwIDIuNS0yLjVjMC0xLjY3LTIuNS00LjUtMi41LTQuNVMxNyAxMC44MyAxNyAxMi41YTIuNSAyLjUgMCAwIDAgMi41IDIuNXpNMTMgMTRoLTJ2LTJIOXYySDd2MmgydjJoMnYtMmgydi0yem0zLTJ2OGMwIDEuMS0uOSAyLTIgMkg2Yy0xLjEgMC0yLS45LTItMnYtOGMwLTIuOTcgMi4xNi01LjQzIDUtNS45MVY0SDdWMmg2YzEuMTMgMCAyLjE1LjM5IDIuOTkgMS4wMWwtMS40MyAxLjQzQzE0LjEgNC4xNyAxMy41NyA0IDEzIDRoLTJ2Mi4wOWMyLjg0LjQ4IDUgMi45NCA1IDUuOTF6bS0yIDBjMC0yLjIxLTEuNzktNC00LTRzLTQgMS43OS00IDR2OGg4di04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NhbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMVY4YzQuNTYtLjU4IDgtMy4xIDgtNkgyYzAgMi45IDMuNDQgNS40MiA4IDZ2M2MtMy42OC43My04IDMuNjEtOCAxMWg2di0ySDQuMTNjLjkzLTYuODMgNi42NS03LjIgNy44Ny03LjJzNi45NC4zNyA3Ljg3IDcuMkgxNnYyaDZjMC03LjM5LTQuMzItMTAuMjctOC0xMXptNC44Ny03QzE3LjUgNS4xOSAxNSA2LjEyIDEyIDYuMTJTNi41IDUuMTkgNS4xMyA0aDEzLjc0ek0xMiAyMmMtMS4xIDAtMi0uOS0yLTIgMC0uNTUuMjItMS4wNS41OS0xLjQxQzExLjM5IDE3Ljc5IDE2IDE2IDE2IDE2cy0xLjc5IDQuNjEtMi41OSA1LjQxYy0uMzYuMzctLjg2LjU5LTEuNDEuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY2hvb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDMgMSA5bDQgMi4xOHY2TDEyIDIxbDctMy44MnYtNmwyLTEuMDlWMTdoMlY5TDEyIDN6bTYuODIgNkwxMiAxMi43MiA1LjE4IDkgMTIgNS4yOCAxOC44MiA5ek0xNyAxNS45OWwtNSAyLjczLTUtMi43M3YtMy43MkwxMiAxNWw1LTIuNzN2My43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNjaWVuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMS4zMyAxOCAxOEg2bDUtNi42N1Y2aDJtMi45Ni0ySDguMDRjLS40MiAwLS42NS40OC0uMzkuODFMOSA2LjV2NC4xN0wzLjIgMTguNGMtLjQ5LjY2LS4wMiAxLjYuOCAxLjZoMTZjLjgyIDAgMS4yOS0uOTQuOC0xLjZMMTUgMTAuNjdWNi41bDEuMzUtMS42OWMuMjYtLjMzLjAzLS44MS0uMzktLjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NvcmVib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDloLTIuNWMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFIMThjLjU1IDAgMS0uNDUgMS0xdi00YzAtLjU1LS40NS0xLTEtMXptLS41IDQuNUgxNnYtM2gxLjV2M3ptLTggMS41SDV2LTIuNWMwLS41NS40NS0xIDEtMWgydi0xSDVWOWgzLjVjLjU1IDAgMSAuNDUgMSAxdjEuNWMwIC41NS0uNDUgMS0xIDFoLTJ2MWgzVjE1em0zLjI1LTRoLTEuNVY5LjVoMS41VjExem0wIDMuNWgtMS41VjEzaDEuNXYxLjV6TTIyIDZ2MTJjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yaDNWMmgydjJoNlYyaDJ2MmgzYzEuMSAwIDIgLjkgMiAyem0tMiAxMlY2aC03LjI1djEuNWgtMS41VjZINHYxMmg3LjI1di0xLjVoMS41VjE4SDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2N1YmFEaXZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDEzYzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTcuODktMi44OSA0LjUzLTEuMjEtLjc4LTIuOS00LjUzIDEuMjFjLS44LjIxLTEuMjggMS4wNC0xLjA2IDEuODQuMjIuOCAxLjA0IDEuMjggMS44NCAxLjA2ek0yMC41IDUuOSAyMyAzbC0xLTEtMyAzLTIgNC05LjQ4IDIuODdjLS44Mi4yLTEuMzkuODktMS41IDEuNjhMNS4yNCAxOCAyLjQgMjEuOCA0IDIzbDMtNCAxLjE0LTMuMTRMMTQgMTRsNS0zLjUgMS41LTQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbGZJbXByb3ZlbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE2di0yYy0yLjI0IDAtNC4xNi0uOTYtNS42LTIuNjhsLTEuMzQtMS42QTEuOTggMS45OCAwIDAgMCAxMi41MyA5aC0xLjA1Yy0uNTkgMC0xLjE1LjI2LTEuNTMuNzJsLTEuMzQgMS42QzcuMTYgMTMuMDQgNS4yNCAxNCAzIDE0djJjMi43NyAwIDUuMTktMS4xNyA3LTMuMjVWMTVsLTMuODggMS41NWMtLjY3LjI3LTEuMTIuOTMtMS4xMiAxLjY2QzUgMTkuMiA1LjggMjAgNi43OSAyMEg5di0uNWEyLjUgMi41IDAgMCAxIDIuNS0yLjVoM2MuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjVoLTNjLS44MyAwLTEuNS42Ny0xLjUgMS41di41aDcuMjFjLjk5IDAgMS43OS0uOCAxLjc5LTEuNzkgMC0uNzMtLjQ1LTEuMzktMS4xMi0xLjY2TDE0IDE1di0yLjI1YzEuODEgMi4wOCA0LjIzIDMuMjUgNyAzLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VudGltZW50RGlzc2F0aXNmaWVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE0Yy0yLjMzIDAtNC4zMiAxLjQ1LTUuMTIgMy41aDEuNjdjLjY5LTEuMTkgMS45Ny0yIDMuNDUtMnMyLjc1LjgxIDMuNDUgMmgxLjY3Yy0uOC0yLjA1LTIuNzktMy41LTUuMTItMy41em0tLjAxLTEyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW50aW1lbnROZXV0cmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE0aDZ2MS41SDl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VudGltZW50U2F0aXNmaWVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE2Yy0xLjQ4IDAtMi43NS0uODEtMy40NS0ySDYuODhhNS40OTUgNS40OTUgMCAwIDAgMTAuMjQgMGgtMS42N2MtLjcgMS4xOS0xLjk3IDItMy40NSAyem0tLjAxLTE0QzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW50aW1lbnRWZXJ5RGlzc2F0aXNmaWVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMy41Yy0yLjMzIDAtNC4zMSAxLjQ2LTUuMTEgMy41aDEwLjIyYy0uOC0yLjA0LTIuNzgtMy41LTUuMTEtMy41ek03LjgyIDEybDEuMDYtMS4wNkw5Ljk0IDEyIDExIDEwLjk0IDkuOTQgOS44OCAxMSA4LjgyIDkuOTQgNy43NiA4Ljg4IDguODIgNy44MiA3Ljc2IDYuNzYgOC44MmwxLjA2IDEuMDYtMS4wNiAxLjA2em00LjE3LTEwQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDkuOTkgMTBTMjIgMTcuNTMgMjIgMTIgMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTQuMTgtMTIuMjQtMS4wNiAxLjA2LTEuMDYtMS4wNkwxMyA4LjgybDEuMDYgMS4wNkwxMyAxMC45NCAxNC4wNiAxMmwxLjA2LTEuMDZMMTYuMTggMTJsMS4wNi0xLjA2LTEuMDYtMS4wNiAxLjA2LTEuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW50aW1lbnRWZXJ5U2F0aXNmaWVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDkuOTkgMTBTMjIgMTcuNTMgMjIgMTIgMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTEtMTAuMDZMMTQuMDYgMTFsMS4wNi0xLjA2TDE2LjE4IDExbDEuMDYtMS4wNi0yLjEyLTIuMTJMMTMgOS45NHptLTQuMTIgMEw5Ljk0IDExIDExIDkuOTQgOC44OCA3LjgyIDYuNzYgOS45NCA3LjgyIDExbDEuMDYtMS4wNnpNMTIgMTcuNWMyLjMzIDAgNC4zMS0xLjQ2IDUuMTEtMy41SDYuODljLjggMi4wNCAyLjc4IDMuNSA1LjExIDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldmVyZUNvbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxMC40MSA0LTRMMTQuNTkgNSAxMiA3LjU5VjRoLTJ2My41OUw3LjQxIDUgNiA2LjQxbDQgNFYxMkg4LjQxbC00LTRMMyA5LjQxIDUuNTkgMTJIMnYyaDMuNTlMMyAxNi41OSA0LjQxIDE4bDQtNEgxMHYxLjU5bC00IDRMNy40MSAyMSAxMCAxOC40MVYyMmgydi0zLjU5TDE0LjU5IDIxIDE2IDE5LjU5bC00LTRWMTRoMS41OWw0IDRMMTkgMTYuNTkgMTYuNDEgMTRIMjB2LTJoLTh6TTE5IDJoMnY1aC0yek0xOSA4aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxNi4wOGMtLjc2IDAtMS40NC4zLTEuOTYuNzdMOC45MSAxMi43Yy4wNS0uMjMuMDktLjQ2LjA5LS43cy0uMDQtLjQ3LS4wOS0uN2w3LjA1LTQuMTFjLjU0LjUgMS4yNS44MSAyLjA0LjgxIDEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDNjMCAuMjQuMDQuNDcuMDkuN0w4LjA0IDkuODFDNy41IDkuMzEgNi43OSA5IDYgOWMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgM2MuNzkgMCAxLjUtLjMxIDIuMDQtLjgxbDcuMTIgNC4xNmMtLjA1LjIxLS4wOC40My0uMDguNjUgMCAxLjYxIDEuMzEgMi45MiAyLjkyIDIuOTJzMi45Mi0xLjMxIDIuOTItMi45MmMwLTEuNjEtMS4zMS0yLjkyLTIuOTItMi45MnpNMTggNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xek02IDEzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTEyIDcuMDJjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjMyIDEwLjU2IDguMzggOS41IDcuMzIgOC40NGwxLjA2LTEuMDZMMTAuNSA5LjVsLTIuMTIgMi4xMi0xLjA2LTEuMDZ6TTQuNSA5Yy4wMyAwIC4wNS4wMS4wOC4wMUE4LjAwMiA4LjAwMiAwIDAgMSAxMiA0YzIuMTkgMCA0LjE2Ljg4IDUuNjEgMi4zLjE1LS42LjQ1LTEuMjkuODEtMS45NkE5Ljk2NSA5Ljk2NSAwIDAgMCAxMS45OSAyYy00Ljg4IDAtOC45NCAzLjUxLTkuODEgOC4xNEMyLjc0IDkuNDQgMy41OSA5IDQuNSA5ek0yMSAxMC41Yy0uNDIgMC0uODItLjA5LTEuMTktLjIyLjEyLjU1LjE5IDEuMTMuMTkgMS43MiAwIDQuNDItMy41OCA4LTggOC0zLjM2IDAtNi4yMy0yLjA3LTcuNDItNS4wMS0uMDMgMC0uMDUuMDEtLjA4LjAxLS41MiAwLTEuMDQtLjE0LTEuNS0uNC0uMzItLjE4LS41OS0uNDItLjgyLS43Ljg5IDQuNjEgNC45MyA4LjEgOS44IDguMUMxNy41MiAyMiAyMiAxNy41MiAyMiAxMmMwLS41NS0uMDYtMS4wOS0uMTQtMS42MmEzLjUgMy41IDAgMCAxLS44Ni4xMnpNMjEgM3MtMiAyLjktMiA0IC45IDIgMiAyIDItLjkgMi0yLTItNC0yLTR6bS01LjM4IDQuMzhMMTMuNSA5LjVsMi4xMiAyLjEyIDEuMDYtMS4wNi0xLjA2LTEuMDYgMS4wNi0xLjA2LTEuMDYtMS4wNnpNOC41NiAxN2MuNjktMS4xOSAxLjk3LTIgMy40NC0yczIuNzUuODEgMy40NCAyaDEuNjhjLS44LTIuMDUtMi43OS0zLjUtNS4xMi0zLjUtLjg3IDAtMS43LjItMi40My41N0w1Ljk5IDEyYzAtLjUyLS4yNi0xLjAyLS43NC0xLjI5LS43Mi0uNDEtMS42My0uMTctMi4wNS41NS0uNDEuNzItLjE3IDEuNjMuNTUgMi4wNS40OC4yOCAxLjA1LjI1IDEuNDkgMGwyLjk3IDEuNzJjLS41Ny41My0xLjAzIDEuMjEtMS4zMyAxLjk3aDEuNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduTGFuZ3VhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMi40OSAxMy0uOTMtMS44NmMtLjM3LS43NC0uMDctMS42NC42Ny0yLjAxbC4yNi0uMTMgNS43MyA1LjQ2Yy41LjQ3Ljc4IDEuMTMuNzggMS44MXY1LjIzYTIuNSAyLjUgMCAwIDEtMi41IDIuNWgtMTFjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFIMTB2LTFINGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMWg2di0xSDNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFoN3YtMUg0LjVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFoNy45OXptMS41MS4yVjE1aC0ydjdoNGMuNTUgMCAxLS40NSAxLTF2LTQuNTNjMC0uMjctLjExLS41NC0uMzEtLjczTDE0IDEzLjJ6bS0yLjIyLTYuMDhjLS44NC40LTEuMTcuNjItMS42MyAxLjE5bC0yLjctMi44NUEuOTk2Ljk5NiAwIDEgMSA4LjkgNC4wOWwyLjg4IDMuMDN6TTkuNjQgOS4yMWEzLjQ2IDMuNDYgMCAwIDAtLjIgMS43OWgtLjg2TDYuMzEgOC42MWEuOTg3Ljk4NyAwIDAgMSAuMDQtMS40MS45OTYuOTk2IDAgMCAxIDEuNDEuMDRsMS44OCAxLjk3em0xMC42OSA0LjcuODgtLjgzYy41LS40Ny43OS0xLjEzLjc5LTEuODJWMy4zNWwtLjI3LS4xYy0uNzgtLjI4LTEuNjQuMTItMS45Mi45bC0uNzEgMS45Ni01LjUtNS44YS45OTYuOTk2IDAgMSAwLTEuNDUgMS4zN2wzLjc5IDMuOTktLjczLjY5LTQuODItNS4wOGEuOTk2Ljk5NiAwIDEgMC0xLjQ1IDEuMzdsMy43OCAzLjk4TDE1LjM4IDlsMS45My0xLjg3IDEuMzggMS40NUwyMCA3LjM0djMuN2MwIC4yOC0uMTEuNTQtLjMxLjczbC0uNy42Ni42MS41OGMuMjkuMjcuNTMuNTcuNzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpbmdsZUJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEyYzAtMS4xLS45LTItMi0yVjdjMC0xLjEtLjktMi0yLTJIOGMtMS4xIDAtMiAuOS0yIDJ2M2MtMS4xIDAtMiAuOS0yIDJ2NWgxLjMzTDYgMTloMWwuNjctMmg4LjY3bC42NiAyaDFsLjY3LTJIMjB2LTV6bS00LTJoLTNWN2gzdjN6TTggN2gzdjNIOFY3em0tMiA1aDEydjNINnYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNrYXRlYm9hcmRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzYzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6TTcuMjUgMjIuNWMtLjQxIDAtLjc1LjM0LS43NS43NXMuMzQuNzUuNzUuNzUuNzUtLjM0Ljc1LS43NS0uMzQtLjc1LS43NS0uNzV6bTguNSAwYy0uNDEgMC0uNzUuMzQtLjc1Ljc1cy4zNC43NS43NS43NS43NS0uMzQuNzUtLjc1LS4zNC0uNzUtLjc1LS43NXptMy40OS0zLjVhLjcyLjcyIDAgMCAwLS41OS4zYy0uNTUuNzMtMS40MiAxLjItMi40IDEuMkgxNnYtNmwtNC4zMi0yLjY3IDEuOC0yLjg5QTYuNTA3IDYuNTA3IDAgMCAwIDE5IDEydi0yYy0xLjg1IDAtMy40NC0xLjEyLTQuMTMtMi43MmwtLjUyLTEuMjFDMTQuMTYgNS42NCAxMy42MSA1IDEyLjcgNUg3TDQuNSA5bDEuNyAxLjA2TDguMSA3aDIuMzVsLTIuNCAzLjg0Yy0uMzEuNS0uMzkgMS4xMS0uMjEgMS42N2wxLjM0IDQuMTUtMy4xMiAzLjc2Yy0uNy0uMTYtMS4zLS41Ny0xLjcxLTEuMTJhLjc0OS43NDkgMCAxIDAtMS4yLjljLjgyIDEuMSAyLjEzIDEuOCAzLjYgMS44aDkuNWMxLjQ3IDAgMi43OC0uNyAzLjYtMS44LjEtLjE0LjE1LS4zLjE1LS40NSAwLS4zOS0uMzItLjc1LS43Ni0uNzV6TTE0IDIwLjVIOC42bDIuOS0zLjUtMS0zLjMgMy41IDIuMnY0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbGVkZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDQuNWMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6bTguOCAxNS43NGE0LjAwMyA0LjAwMyAwIDAgMS01LjA0IDIuNTdMMSAxNy4zNmwuNDYtMS40MyAzLjkzIDEuMjguNDYtMS40My0zLjkyLTEuMjguNDYtMS40M0w0IDEzLjZWOS41bDUuNDctMi4zNWMuMzktLjE3Ljg0LS4yMSAxLjI4LS4wNy45NS4zMSAxLjQ2IDEuMzIgMS4xNiAyLjI3bC0xLjA1IDMuMjQgMi4xNC0uMzRjLjg5LS4xNSAxLjc2LjMyIDIuMTQgMS4xNGwyLjA4IDQuNTEgMS45My42My0uNDYgMS40My0zLjMyLTEuMDgtLjQ3IDEuNDIgMy4zMiAxLjA4YzEuMzEuNDMgMi43Mi0uMjkgMy4xNS0xLjYxLjQzLTEuMzEtLjI5LTIuNzItMS42MS0zLjE1bC40Ni0xLjQzYzIuMTEuNjkgMy4yNyAyLjk1IDIuNTggNS4wNXpNNiAxNC4yNWwxLjAxLjMzYy0uMjItLjQyLS4yOC0uOTItLjEyLTEuNEw3LjkyIDEwIDYgMTAuODJ2My40M3ptNy45NCA0LjE2LTYuNjYtMi4xNi0uNDYgMS40MyA2LjY2IDIuMTYuNDYtMS40M3ptLjY5LTEuMzYtMS4xOC0yLjU2LTMuOTcuODkgNS4xNSAxLjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU25vd2JvYXJkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgM2MwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem03LjQgMTcuMDlhLjc0OC43NDggMCAwIDAtLjY0LjE3Yy0uNjkuNi0xLjY0Ljg4LTIuNi42N0wxNyAyMC42OWwtMS02LjE5LTMuMzItMi42NyAxLjgtMi44OUE2LjUwNyA2LjUwNyAwIDAgMCAyMCAxMnYtMmMtMS44NSAwLTMuNDQtMS4xMi00LjEzLTIuNzJsLS41Mi0xLjIxQzE1LjE2IDUuNjQgMTQuNjEgNSAxMy43IDVIOEw1LjUgOWwxLjcgMS4wNkw5LjEgN2gyLjM1bC0yLjUxIDMuOTljLS4yOC40NS0uMzcgMS0uMjUgMS41Mkw5LjUgMTYgNiAxOC4zNWwtLjQ3LS4xYy0uOTYtLjItMS43MS0uODUtMi4xLTEuNjdhLjc0NC43NDQgMCAwIDAtLjUxLS40MmMtLjQzLS4wOS0uODIuMi0uOS41OC0uMDQuMTQtLjAyLjMxLjA1LjQ2LjU4IDEuMjQgMS43MSAyLjIgMy4xNSAyLjUxbDEyLjYzIDIuNjljMS40NC4zMSAyLjg2LS4xMSAzLjktMS4wMS4xMy0uMTEuMjEtLjI2LjI0LS40MS4wNy0uMzgtLjE2LS44LS41OS0uODl6TTguNzMgMTguOTNsMy4wMi0yLjAzLS40NC0zLjMyIDIuODQgMi4wMi43NSA0LjY0LTYuMTctMS4zMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNub3dzaG9laW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSAzLjVjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnpNNi4zMiAxOS4wM2wtMS4xNC0xLjQ3TDQgMTguNWwyLjM4IDMuMDRjLjUxLjY1IDEuMTYgMS4xNSAxLjg4IDEuNDEuMjguMS41My4wNC43Mi0uMTEuMy0uMjMuNDItLjcuMTItMS4wN2EuODQuODQgMCAwIDAtLjMxLS4yMiAyLjk3IDIuOTcgMCAwIDEtMS4xNC0uODNsLS4wOC0uMUwxMSAxOC4ybC44OS0zLjIyIDIuMTEgMnY0LjUyaC0yVjIzaDMuODdjLjgyIDAgMS42MS0uMjEgMi4yNi0uNjEuMjYtLjE2LjM3LS4zOS4zNy0uNjQgMC0uMzgtLjMtLjc1LS43Ny0uNzUtLjEzIDAtLjI2LjA0LS4zNy4xLS40LjIzLS44Ny4zNy0xLjM2LjR2LTYuMDJsLTIuMTEtMiAuNi0zQzE1Ljc5IDExLjk4IDE3LjggMTMgMjAgMTN2LTJjLTEuOSAwLTMuNTEtMS4wMi00LjMxLTIuNDJsLTEtMS41OGMtLjQtLjYtMS0xLTEuNy0xLS43NSAwLTEuNDEuMzQtNS45OSAyLjI4VjEzaDJWOS41OGwxLjc5LS43TDkuMiAxN2wtMi44OCAyLjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU29jaWFsRGlzdGFuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDVjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptNC43OCAzLjU4YTYuOTUgNi45NSAwIDAgMC01LjU2IDBBMi4wMSAyLjAxIDAgMCAwIDIgMTAuNDNWMTFoOHYtLjU3YzAtLjgxLS40OC0xLjUzLTEuMjItMS44NXpNMTggN2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTIuNzggMS41OGE2Ljk1IDYuOTUgMCAwIDAtNS41NiAwQTIuMDEgMi4wMSAwIDAgMCAxNCAxMC40M1YxMWg4di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1em0tMi43NyA0LjQzLTEuNDEgMS40MUwxOC4xNyAxNkg1LjgzbDEuNTgtMS41OUw2IDEzbC00IDQgMy45OSAzLjk5IDEuNDEtMS40MUw1LjgzIDE4aDEyLjM0bC0xLjU4IDEuNThMMTggMjAuOTkgMjIgMTdsLTMuOTktMy45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNvdXRoQW1lcmljYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTQgMTJjMC0xLjk1LjctMy43NCAxLjg3LTUuMTNMOSAxMHYxYzAgMS4xLjkgMiAyIDJ2NS41OWMwIC4yNy4xMS41Mi4yOS43MWwuNzEuN2MtNC40MiAwLTgtMy41OC04LTh6bTkgNy45NFYxOGwzLjc1LTUuNjJjLjE2LS4yNS4yNS0uNTQuMjUtLjgzVjEwLjVjMC0uNTUtLjQ1LTEtMS0xaC0xLjVsLTEuNC0xLjc1Yy0uMzgtLjQ3LS45NS0uNzUtMS41Ni0uNzVIOFY1LjA3QTcuOTcxIDcuOTcxIDAgMCAxIDEyIDRjNC40MSAwIDggMy41OSA4IDggMCA0LjA3LTMuMDYgNy40NC03IDcuOTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNCYXNlYmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTUuNjEgMTYuNzhDNC42IDE1LjQ1IDQgMTMuOCA0IDEycy42LTMuNDUgMS42MS00Ljc4YTUuOTc1IDUuOTc1IDAgMCAxIDAgOS41NnpNMTIgMjBjLTEuODkgMC0zLjYzLS42Ni01LTEuNzYgMS44My0xLjQ3IDMtMy43MSAzLTYuMjRTOC44MyA3LjIzIDcgNS43NkM4LjM3IDQuNjYgMTAuMTEgNCAxMiA0czMuNjMuNjYgNSAxLjc2Yy0xLjgzIDEuNDctMyAzLjcxLTMgNi4yNHMxLjE3IDQuNzcgMyA2LjI0QTcuOTYzIDcuOTYzIDAgMCAxIDEyIDIwem02LjM5LTMuMjJhNS45NzUgNS45NzUgMCAwIDEgMC05LjU2QzE5LjQgOC41NSAyMCAxMC4yIDIwIDEycy0uNiAzLjQ1LTEuNjEgNC43OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c0Jhc2tldGJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek01LjIzIDcuNzVDNi4xIDguNjIgNi43IDkuNzQgNi45MSAxMUg0LjA3YTguMTIgOC4xMiAwIDAgMSAxLjE2LTMuMjV6TTQuMDcgMTNoMi44NGE1Ljk3MiA1Ljk3MiAwIDAgMS0xLjY4IDMuMjVBOC4xMiA4LjEyIDAgMCAxIDQuMDcgMTN6TTExIDE5LjkzYy0xLjczLS4yMi0zLjI5LTEtNC40OS0yLjE0QTcuOTUyIDcuOTUyIDAgMCAwIDguOTMgMTNIMTF2Ni45M3pNMTEgMTFIOC45M0E3Ljk5IDcuOTkgMCAwIDAgNi41IDYuMiA4LjAzNSA4LjAzNSAwIDAgMSAxMSA0LjA3VjExem04LjkzIDBoLTIuODRjLjIxLTEuMjYuODEtMi4zOCAxLjY4LTMuMjUuNi45NyAxLjAxIDIuMDcgMS4xNiAzLjI1ek0xMyA0LjA3YzEuNzMuMjIgMy4yOS45OSA0LjUgMi4xM2E3Ljk5IDcuOTkgMCAwIDAtMi40MyA0LjhIMTNWNC4wN3ptMCAxNS44NlYxM2gyLjA3YTguMDA2IDguMDA2IDAgMCAwIDIuNDIgNC43OUE3Ljk4OCA3Ljk4OCAwIDAgMSAxMyAxOS45M3ptNS43Ny0zLjY4QTYuMDA0IDYuMDA0IDAgMCAxIDE3LjA5IDEzaDIuODRhOC4xMiA4LjEyIDAgMCAxLTEuMTYgMy4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c0NyaWNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS4wNCAxMi43OS04LjUtOC41QzYuMzUgNC4xIDYuMDkgNCA1LjgzIDRzLS41MS4xLS43LjI5TDIuMjkgNy4xM2MtLjM5LjM5LS4zOSAxLjAzIDAgMS40Mmw4LjUgOC41Yy4yLjIuNDUuMjkuNzEuMjkuMjYgMCAuNTEtLjEuNzEtLjI5bDIuODMtMi44M2MuMzktLjQuMzktMS4wNCAwLTEuNDN6bS0zLjU0IDIuMTNMNC40MSA3LjgzbDEuNDItMS40MiA3LjA5IDcuMDktMS40MiAxLjQyek0xNC4zNDEgMTcuNzU2bDEuNDE0LTEuNDE0IDQuMjQzIDQuMjQzLTEuNDE0IDEuNDE0ek0xOC41IDJDMTYuNTcgMiAxNSAzLjU3IDE1IDUuNVMxNi41NyA5IDE4LjUgOSAyMiA3LjQzIDIyIDUuNSAyMC40MyAyIDE4LjUgMnptMCA1Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTcuNjcgNCAxOC41IDRzMS41LjY3IDEuNSAxLjVTMTkuMzMgNyAxOC41IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNFc3BvcnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNTggMTYuMDktMS4wOS03LjY2QTMuOTk2IDMuOTk2IDAgMCAwIDE2LjUzIDVINy40N0M1LjQ4IDUgMy43OSA2LjQ2IDMuNTEgOC40M2wtMS4wOSA3LjY2QzIuMiAxNy42MyAzLjM5IDE5IDQuOTQgMTljLjY4IDAgMS4zMi0uMjcgMS44LS43NUw5IDE2aDZsMi4yNSAyLjI1Yy40OC40OCAxLjEzLjc1IDEuOC43NSAxLjU2IDAgMi43NS0xLjM3IDIuNTMtMi45MXptLTIuMS43MmEuNTQuNTQgMCAwIDEtLjQyLjE5Yy0uMTUgMC0uMjktLjA2LS4zOS0uMTZMMTUuODMgMTRIOC4xN2wtMi44NCAyLjg0Yy0uMS4xLS4yNC4xNi0uMzkuMTZhLjU0LjU0IDAgMCAxLS40Mi0uMTkuNTIuNTIgMCAwIDEtLjEzLS40NGwxLjA5LTcuNjZDNS42MyA3Ljc0IDYuNDggNyA3LjQ3IDdoOS4wNmMuOTkgMCAxLjg0Ljc0IDEuOTggMS43MmwxLjA5IDcuNjZjLjAzLjItLjA1LjM0LS4xMi40M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA4SDh2Mkg2djFoMnYyaDF2LTJoMnYtMUg5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE3XCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjlcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c0Zvb3RiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMzEgMy42OWMtLjMyLS4zMy0xLjk0LS42OS00LjA1LS42OS0zLjAzIDAtNy4wOS43NS05LjggMy40Ni00LjU5IDQuNTktMy41NiAxMy4wNi0yLjc3IDEzLjg1LjMyLjMzIDEuOTQuNjkgNC4wNS42OSAzLjAzIDAgNy4wOS0uNzUgOS44LTMuNDYgNC41OS00LjU5IDMuNTYtMTMuMDYgMi43Ny0xMy44NXpNNy43NCAxOWMtMS4xNCAwLTIuMDItLjEyLTIuNTMtLjIzLS4xOC0uNzktLjMtMi4yMS0uMTctMy44M2w0LjAxIDQuMDFjLS41Mi4wNC0uOTcuMDUtMS4zMS4wNXptOC4zOS0yLjg3Yy0xLjMzIDEuMzMtMy4wNiAyLjA1LTQuNjYgMi40NGwtNi4wNC02LjA0Yy40Mi0xLjY4IDEuMTYtMy4zNyAyLjQ1LTQuNjUgMS4zMi0xLjMyIDMuMDUtMi4wNCA0LjY0LTIuNDNsNi4wNSA2LjA1Yy0uNDIgMS42Ny0xLjE3IDMuMzUtMi40NCA0LjYzem0yLjgzLTcuMDQtNC4wMy00LjAzYy41Mi0uMDUuOTgtLjA2IDEuMzMtLjA2IDEuMTQgMCAyLjAyLjEyIDIuNTMuMjMuMTguNzkuMyAyLjIyLjE3IDMuODZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTguNSAxNC4xIDUuNi01LjYgMS40IDEuNC01LjYgNS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzR29sZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE2YzMuODcgMCA3LTMuMTMgNy03cy0zLjEzLTctNy03LTcgMy4xMy03IDcgMy4xMyA3IDcgN3ptMC0xMmMyLjc2IDAgNSAyLjI0IDUgNXMtMi4yNCA1LTUgNS01LTIuMjQtNS01IDIuMjQtNSA1LTV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI4XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTRcIixcImN5XCI6XCI4XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTloMmMxLjEgMCAyIC45IDIgMnYxaDJ2LTFjMC0xLjEuOS0yIDItMmgydi0ySDd2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c0d5bW5hc3RpY3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnpNMSA5aDZsNy01IDEuMzEgMS41Mi00LjE3IDIuOThIMTRMMjEuOCA0IDIzIDUuNCAxNC41IDEyIDE0IDIyaC0ybC0uNS0xMEw4IDExSDFWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c0hhbmRiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuMjcgNmMtLjU1Ljk1LS4yMiAyLjE4LjczIDIuNzMuOTUuNTUgMi4xOC4yMiAyLjczLS43My41NS0uOTUuMjItMi4xOC0uNzMtMi43My0uOTUtLjU1LTIuMTgtLjIyLTIuNzMuNzN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1Ljg0IDEwLjQxLTIuNi0xLjVjLTIuMzgtMS4zOC0zLjItNC40NC0xLjgyLTYuODJsLTEuNzMtMUM4LjEgMy44MyA4LjYgNy4yMSAxMC42NiA5LjRsLTUuMTUgOC45MiAxLjczIDEgMS41LTIuNiAxLjczIDEtMyA1LjIgMS43MyAxIDYuMjktMTAuODlhNS4wMDIgNS4wMDIgMCAwIDEgLjMxIDUuNDZsMS43MyAxYzEuNi0yLjc1IDEuMjgtNi41OC0xLjY5LTkuMDh6TTEyLjc1IDMuOGMuNzIuNDEgMS42My4xNyAyLjA1LS41NS40MS0uNzIuMTctMS42My0uNTUtMi4wNWExLjUwMSAxLjUwMSAwIDAgMC0xLjUgMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzSG9ja2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxN3YzaDJ2LTRIM2MtLjU1IDAtMSAuNDUtMSAxek05IDE2SDV2NGw0LjY5LS4wMWMuMzggMCAuNzItLjIxLjg5LS41NWwuODctMS45LTEuNTktMy40OEw5IDE2ek0yMS43MSAxNi4yOUEuOTk3Ljk5NyAwIDAgMCAyMSAxNmgtMXY0aDJ2LTNjMC0uMjgtLjExLS41My0uMjktLjcxek0xMy42IDEyLjg0IDE3LjY1IDRIMTQuM2wtMS43NiAzLjk3LS40OSAxLjEtLjA1LjE0TDkuNyA0SDYuMzVsNC4wNSA4Ljg0IDEuNTIgMy4zMi4wOC4xOCAxLjQyIDMuMWMuMTcuMzQuNTEuNTUuODkuNTVMMTkgMjB2LTRoLTRsLTEuNC0zLjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzS2FiYWRkaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTYuNVwiLFwiY3lcIjpcIjIuMzhcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgMTEuODh2LTQuN2wtNS4wNS0yLjE0Yy0uOTctLjQxLTIuMDktLjA2LTIuNjUuODRsLTEgMS42Yy0uNjcgMS4xOC0xLjkxIDIuMDYtMy40MSAyLjMybC4wNi4wNmMuNjkuNjkgMS41MiAxLjA3IDIuNDYgMS4xNy44LS40MiAxLjUyLS45OCAyLjA5LTEuNjRsLjYgMy0xLjE2IDEuMS0uOTQuODl2Ny41aDJ2LTZsMi4xLTIgMS44IDhIMjNsLTIuMTgtMTEtLjYyLTMuMSAxLjguN3YzLjRoMnpNMTAuMjkgOC4wOWMuMjIuMTUuNDcuMjQuNzIuMjkuMTMuMDIuMjUuMDQuMzguMDRzLjI2LS4wMS4zOC0uMDRjLjEzLS4wMi4yNS0uMDYuMzctLjExLjI0LS4xLjQ3LS4yNC42Ni0uNDQuNDktLjQ5LjY3LTEuMTcuNTUtMS44LS4wNy0uMzctLjI1LS43NC0uNTUtMS4wMy0uMTktLjE5LS40Mi0uMzQtLjY2LS40NC0uMTItLjA1LS4yNC0uMDktLjM3LS4xMXMtLjI1LS4wNC0uMzgtLjA0Yy0uMTIgMC0uMjMuMDEtLjM1LjAzLS4xNC4wMi0uMjguMDYtLjQxLjExLS4yMy4xMS0uNDYuMjYtLjY1LjQ1LS4zLjI5LS40OC42Ni0uNTUgMS4wMy0uMTIuNjMuMDYgMS4zMS41NSAxLjguMDkuMS4yLjE4LjMxLjI2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMS4yNCAxMC41Ni0yLTJjLS4xLS4xLS4yLS4xOC0uMzEtLjI2YTEuOTMgMS45MyAwIDAgMC0uNzItLjI4Yy0uMTMtLjAzLS4yNS0uMDQtLjM4LS4wNC0uNTEgMC0xLjAyLjItMS40MS41OWwtMy4zNCAzLjM0Yy0uNDEuNDEtLjYyLjk4LS41OCAxLjU0IDAgLjE4LjA0LjM3LjExLjU1bDEuMDcgMi45NS0zLjYzIDMuNjNMMS40NiAyMmw0LjI0LTQuMjR2LTIuMjJMNyAxNi43NXY1LjEzaDJ2LTZsLTIuMTItMi4xMiAyLjM2LTIuMzYuNzEuNzFjMS4yOSAxLjI2IDIuOTcgMi4wNCA1LjAzIDIuMDRsLS4xNC0yLjA3Yy0xLjUtLjAyLTIuNy0uNjItMy42LTEuNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNNYXJ0aWFsQXJ0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjggMi04LjIgNi43LTEuMjEtMS4wNCAzLjYtMi4wOEw5LjQxIDEgOCAyLjQxbDIuNzQgMi43NEw1IDguNDZsLTEuMTkgNC4yOUw2LjI3IDE3IDggMTZsLTIuMDMtMy41Mi4zNS0xLjNMOS41IDEzbC41IDloMmwuNS0xMEwyMSAzLjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNVwiLFwiY3lcIjpcIjVcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c01tYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMjBjMCAuNTUuNDUgMSAxIDFoOGMuNTUgMCAxLS40NSAxLTF2LTNIN3Yzek0xOCA3Yy0uNTUgMC0xIC40NS0xIDFWNWMwLTEuMS0uOS0yLTItMkg3Yy0xLjEgMC0yIC45LTIgMnY1LjhjMCAuMTMuMDEuMjYuMDQuMzlsLjggNGMuMDkuNDcuNS44Ljk4LjhIMTdjLjU1IDAgMS4wOS0uNDQgMS4yLS45OGwuNzctMy44M2MuMDItLjEyLjAzLS4yNS4wMy0uMzhWOGMwLS41NS0uNDUtMS0xLTF6bS0xIDMuNmMwIC4xMy0uNjQgMy40LS42NCAzLjRINy42NFM3IDEwLjc0IDcgMTAuNlY1aDh2NWgydi42elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDdoNnYzSDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNNb3RvcnNwb3J0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk2IDExLjIyQzIxLjU3IDcuMDEgMTcuNzYgNCAxMy41NiA0Yy0uMTkgMC0uMzguMDEtLjU3LjAyQzIgNC43NCAyIDE3LjIgMiAxNy4ydi44YzAgMS4xLjkgMiAyIDJoMTBjNC42NyAwIDguNDEtNC4wMSA3Ljk2LTguNzh6bS0xNi43LjM0Yy41Ny0xLjI5IDEuMjgtMi4zNSAyLjE0LTMuMTlsMy42MiAxLjUzYy42LjI1Ljk4LjgzLjk4IDEuNDggMCAuODktLjcyIDEuNjEtMS42MSAxLjYxSDQuNzJjLjE1LS40Ni4zMi0uOTQuNTQtMS40M3ptMTMuMTggNC40OEE2LjAyMiA2LjAyMiAwIDAgMSAxNCAxOEg0di0uOGMwLS4wMi4wMS0uOTIuMjQtMi4yaDYuMTVjMS45OSAwIDMuNjEtMS42MiAzLjYxLTMuNjEgMC0xLjQ1LS44Ny0yLjc2LTIuMi0zLjMyTDkuMyA3LjAxYzEuMS0uNTcgMi4zNy0uOSAzLjgyLS45OS4xNS0uMDIuMy0uMDIuNDQtLjAyIDMuMzEgMCA2LjEzIDIuMzcgNi40MSA1LjQxLjE2IDEuNzItLjM4IDMuMzYtMS41MyA0LjYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzUnVnYnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC40OSAzLjUxYy0uNTYtLjU2LTIuMTUtLjk3LTQuMTYtLjk3LTMuMDggMC03LjE1Ljk2LTkuOTggMy43OS00LjY5IDQuNy00LjI1IDEyLjc0LTIuODQgMTQuMTYuNTYuNTYgMi4xNS45NyA0LjE2Ljk3IDMuMDggMCA3LjE1LS45NiA5Ljk4LTMuNzkgNC42OS00LjcgNC4yNS0xMi43NCAyLjg0LTE0LjE2ek01LjcxIDE4LjI5Yy42My0xLjg5IDIuMTYtNC45OSA0Ljg3LTcuNyAyLjY4LTIuNjggNS43OC00LjIzIDcuNy00Ljg4LS42MyAxLjg5LTIuMTYgNC45OS00Ljg4IDcuNy0yLjY2IDIuNjgtNS43NiA0LjIzLTcuNjkgNC44OHpNNy43NiA3Ljc2YzIuNjQtMi42NCA2LjM0LTMuMTIgOC4wMy0zLjE5LTIuMDUuOTQtNC40NiAyLjQ2LTYuNjEgNC42MWEyMy4yMDYgMjMuMjA2IDAgMCAwLTQuNjEgNi42M2MuMDktMi40OC44Ny01Ljc0IDMuMTktOC4wNXptOC40OCA4LjQ4Yy0yLjY0IDIuNjQtNi4zNCAzLjEyLTguMDMgMy4xOSAyLjA1LS45NCA0LjQ2LTIuNDYgNi42MS00LjYxIDIuMTYtMi4xNiAzLjY3LTQuNTggNC42Mi02LjYzLS4xIDIuNDgtLjg4IDUuNzQtMy4yIDguMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNTb2NjZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDMuMyAxLjM1LS45NWE4LjAxIDguMDEgMCAwIDEgNC4zOCAzLjM0bC0uMzkgMS4zNC0xLjM1LjQ2TDEzIDYuN1Y1LjN6bS0zLjM1LS45NUwxMSA1LjN2MS40TDcuMDEgOS40OWwtMS4zNS0uNDYtLjM5LTEuMzRhOC4xMDMgOC4xMDMgMCAwIDEgNC4zOC0zLjM0ek03LjA4IDE3LjExbC0xLjE0LjFBNy45MzggNy45MzggMCAwIDEgNCAxMmMwLS4xMi4wMS0uMjMuMDItLjM1bDEtLjczIDEuMzguNDggMS40NiA0LjM0LS43OCAxLjM3em03LjQyIDIuNDhjLS43OS4yNi0xLjYzLjQxLTIuNS40MXMtMS43MS0uMTUtMi41LS40MWwtLjY5LTEuNDkuNjQtMS4xaDUuMTFsLjY0IDEuMTEtLjcgMS40OHpNMTQuMjcgMTVIOS43M2wtMS4zNS00LjAyTDEyIDguNDRsMy42MyAyLjU0TDE0LjI3IDE1em0zLjc5IDIuMjEtMS4xNC0uMS0uNzktMS4zNyAxLjQ2LTQuMzQgMS4zOS0uNDcgMSAuNzNjLjAxLjExLjAyLjIyLjAyLjM0IDAgMS45OS0uNzMgMy44MS0xLjk0IDUuMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNUZW5uaXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41MiAyLjQ5QzE3LjE4LjE1IDEyLjkuNjIgOS45NyAzLjU1Yy0xLjYgMS42LTIuNTIgMy44Ny0yLjU0IDUuNDYtLjAyIDEuNTguMjYgMy44OS0xLjM1IDUuNWwtNC4yNCA0LjI0IDEuNDIgMS40MiA0LjI0LTQuMjRjMS42MS0xLjYxIDMuOTItMS4zMyA1LjUtMS4zNXMzLjg2LS45NCA1LjQ2LTIuNTRjMi45Mi0yLjkzIDMuNC03LjIxIDEuMDYtOS41NXptLTkuMiA5LjE5Yy0xLjUzLTEuNTMtMS4wNS00LjYxIDEuMDYtNi43MnM1LjE4LTIuNTkgNi43Mi0xLjA2YzEuNTMgMS41MyAxLjA1IDQuNjEtMS4wNiA2Ljcycy01LjE4IDIuNTktNi43MiAxLjA2ek0xOCAxN2MuNTMgMCAxLjA0LjIxIDEuNDEuNTkuNzguNzguNzggMi4wNSAwIDIuODMtLjM3LjM3LS44OC41OC0xLjQxLjU4cy0xLjA0LS4yMS0xLjQxLS41OWMtLjc4LS43OC0uNzgtMi4wNSAwLTIuODMuMzctLjM3Ljg4LS41OCAxLjQxLS41OG0wLTJhMy45OTggMy45OTggMCAwIDAtMi44MyA2LjgzYy43OC43OCAxLjgxIDEuMTcgMi44MyAxLjE3YTMuOTk4IDMuOTk4IDAgMCAwIDIuODMtNi44M0EzLjk5OCAzLjk5OCAwIDAgMCAxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c1ZvbGxleWJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDIuMDdjMy4wNy4zOCA1LjU3IDIuNTIgNi41NCA1LjM2TDEzIDUuNjVWNC4wN3pNOCA1LjA4YzEuMTgtLjY5IDMuMzMtMS4wNiAzLTEuMDJ2Ny4zNWwtMyAxLjczVjUuMDh6TTQuNjMgMTUuMWMtLjQtLjk2LS42My0yLS42My0zLjEgMC0yLjAyLjc2LTMuODYgMi01LjI3djcuNThsLTEuMzcuNzl6bTEuMDEgMS43M0wxMiAxMy4xNWwzIDEuNzMtNi45OCA0LjAzYTcuNzk0IDcuNzk0IDAgMCAxLTIuMzgtMi4wOHpNMTIgMjBjLS41NCAwLTEuMDctLjA2LTEuNTgtLjE2bDYuNTgtMy44IDEuMzYuNzhDMTYuOSAxOC43NSAxNC42IDIwIDEyIDIwem0xLTguNThWNy45Nmw3IDQuMDVjMCAxLjEtLjIzIDIuMTQtLjYzIDMuMDlMMTMgMTEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4yMyA2Yy0xLjY2IDAtMy4yMi42Ni00LjM2IDEuNzNDNi41NCA2LjczIDUuNjEgNiA0LjUgNmEyLjUgMi41IDAgMCAwIDAgNWMuMjEgMCAuNDEtLjAzLjYxLS4wOC0uMDUuMjUtLjA5LjUxLS4xLjc4YTYuMDA2IDYuMDA2IDAgMCAwIDYuNjggNi4yN2MyLjU1LS4yOCA0LjY4LTIuMjYgNS4xOS00Ljc3LjE1LS43MS4xNS0xLjQuMDYtMi4wNi0uMDktLjYuMzgtMS4xMy45OS0xLjEzSDIyVjZIMTEuMjN6TTQuNSA5Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjUuNS4yMi41LjUtLjIyLjUtLjUuNXptNi41IDZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1cmZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAyM2MtMS4wMyAwLTIuMDYtLjI1LTMtLjc1LTEuODkgMS00LjExIDEtNiAwLTEuODkgMS00LjExIDEtNiAwLS45NS41LTEuOTcuNzUtMyAuNzVIMnYtMmgxYzEuMDQgMCAyLjA4LS4zNSAzLTEgMS44MyAxLjMgNC4xNyAxLjMgNiAwIDEuODMgMS4zIDQuMTcgMS4zIDYgMCAuOTEuNjUgMS45NiAxIDMgMWgxdjJoLTF6TTE3IDEuNWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS0yLjU3IDYuOThMMTIuMTggMTAgMTYgMTN2My44NGMuNTMuMzggMS4wMy43OCAxLjQ5IDEuMTctLjY4LjU4LTEuNTUuOTktMi40OS45OS0xLjIgMC0yLjI3LS42Ni0zLTEuNS0uNzMuODQtMS44IDEuNS0zIDEuNS0uMzMgMC0uNjUtLjA1LS45Ni0uMTRDNS4xOSAxNi45IDMgMTQuNzIgMyAxMy4yOCAzIDEyLjI1IDQuMDEgMTIgNC44NSAxMmMuOTggMCAyLjI4LjMxIDMuNy44M2wtLjUzLTMuMWMtLjExLS42Ny4xOC0xLjM4Ljc4LTEuNzlsMi4xNS0xLjQ1LTItLjM3LTIuODIgMS45M0w1IDYuNCA4LjUgNGw1LjU1IDEuMDNjLjQ1LjA5LjkzLjM3IDEuMjIuODlsLjg4IDEuNTVBNS4wMDcgNS4wMDcgMCAwIDAgMjAuNSAxMHYyYTcuMDEgNy4wMSAwIDAgMS02LjA3LTMuNTJ6TTEwLjMgMTEuMWwuNDQgMi42NWMuOTIuNDIgMi40OCAxLjI3IDMuMjYgMS43NVYxNGwtMy43LTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXRjaEFjY291bnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTAgNWMxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem02LTVIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tOS4zMSAxNGE1Ljk3NyA1Ljk3NyAwIDAgMSA2LjYyIDBoLTYuNjJ6bTkuMzEtLjI3QzE4LjUzIDE0LjA2IDE2LjQgMTMgMTQgMTNzLTQuNTMgMS4wNi02IDIuNzNWNGgxMnYxMS43M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRodW1iRG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIixcIm9wYWNpdHlcIjpcIi44N1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAzSDZjLS44MyAwLTEuNTQuNS0xLjg0IDEuMjJsLTMuMDIgNy4wNWMtLjA5LjIzLS4xNC40Ny0uMTQuNzN2MmMwIDEuMS45IDIgMiAyaDYuMzFsLS45NSA0LjU3LS4wMy4zMmMwIC40MS4xNy43OS40NCAxLjA2TDkuODMgMjNsNi41OC02LjU5Yy4zNy0uMzYuNTktLjg2LjU5LTEuNDFWNWMwLTEuMS0uOS0yLTItMnptMCAxMi00LjM0IDQuMzRMMTEuNzcgMTRIM3YtMmwzLTdoOXYxMHptNC0xMmg0djEyaC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGh1bWJVcEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIixcIm9wYWNpdHlcIjpcIi44N1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA4aC02LjMxbC45NS00LjU3LjAzLS4zMmMwLS40MS0uMTctLjc5LS40NC0xLjA2TDE0LjE3IDEgNy41OSA3LjU5QzcuMjIgNy45NSA3IDguNDUgNyA5djEwYzAgMS4xLjkgMiAyIDJoOWMuODMgMCAxLjU0LS41IDEuODQtMS4yMmwzLjAyLTcuMDVjLjA5LS4yMy4xNC0uNDcuMTQtLjczdi0yYzAtMS4xLS45LTItMi0yem0wIDQtMyA3SDlWOWw0LjM0LTQuMzRMMTIuMjMgMTBIMjF2MnpNMSA5aDR2MTJIMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRodW5kZXJzdG9ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjkyIDcuMDJDMTcuNDUgNC4xOCAxNC45NyAyIDEyIDIgOS44MiAyIDcuODMgMy4xOCA2Ljc4IDUuMDYgNC4wOSA1LjQxIDIgNy43NCAyIDEwLjUgMiAxMy41MyA0LjQ3IDE2IDcuNSAxNmgxMGMyLjQ4IDAgNC41LTIuMDIgNC41LTQuNWE0LjUgNC41IDAgMCAwLTQuMDgtNC40OHpNMTcuNSAxNGgtMTBDNS41NyAxNCA0IDEyLjQzIDQgMTAuNWEzLjUxIDMuNTEgMCAwIDEgMy4wNC0zLjQ2bC45OS0uMTMuNDktLjg3QTMuOTk4IDMuOTk4IDAgMCAxIDEyIDRjMS45NCAwIDMuNjMgMS40NCAzLjk1IDMuMzVsLjI1IDEuNTIgMS41NC4xNGMxLjI3LjEyIDIuMjYgMS4yMSAyLjI2IDIuNDlhMi41IDIuNSAwIDAgMS0yLjUgMi41ek0xNC44IDE3bC0yLjkgMy4zMiAyIDFMMTEuNTUgMjRoMi42NWwyLjktMy4zMi0yLTFMMTcuNDUgMTd6TTguOCAxN2wtMi45IDMuMzIgMiAxTDUuNTUgMjRIOC4ybDIuOS0zLjMyLTItMUwxMS40NSAxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRvcm5hZG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAzSDFsMTEgMTlMMjMgM3ptLTMuNDcgMi0xLjc0IDNINi4yMUw0LjQ3IDVoMTUuMDZ6bS05LjI3IDEwaDMuNDhMMTIgMTguMDEgMTAuMjYgMTV6bTQuNjQtMkg5LjFsLTEuNzQtM2g5LjI3bC0xLjczIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmFuc2dlbmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDhjMS45MyAwIDMuNSAxLjU3IDMuNSAzLjVTMTMuOTMgMTUgMTIgMTVzLTMuNS0xLjU3LTMuNS0zLjVTMTAuMDcgOCAxMiA4em00LjUzLjM4IDMuOTctMy45NlY3aDJWMWgtNnYyaDIuNThsLTMuOTcgMy45N0MxNC4yMyA2LjM2IDEzLjE2IDYgMTIgNnMtMi4yMy4zNi0zLjExLjk3bC0uNjUtLjY1IDEuNDEtMS40MS0xLjQxLTEuNDJMNi44MiA0LjkgNC45MiAzSDcuNVYxaC02djZoMlY0LjQybDEuOTEgMS45LTEuNDIgMS40Mkw1LjQgOS4xNWwxLjQxLTEuNDEuNjUuNjVjLS42Ljg4LS45NiAxLjk1LS45NiAzLjExYTUuNSA1LjUgMCAwIDAgNC41IDUuNDFWMTlIOXYyaDJ2Mmgydi0yaDJ2LTJoLTJ2LTIuMDlhNS41IDUuNSAwIDAgMCAzLjUzLTguNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmF2ZWxFeHBsb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMyAxNi45Yy40LS43LjctMS41LjctMi40IDAtMi41LTItNC41LTQuNS00LjVTMTEgMTIgMTEgMTQuNXMyIDQuNSA0LjUgNC41Yy45IDAgMS43LS4zIDIuNC0uN2wzLjIgMy4yIDEuNC0xLjQtMy4yLTMuMnptLTMuOC4xYy0xLjQgMC0yLjUtMS4xLTIuNS0yLjVzMS4xLTIuNSAyLjUtMi41IDIuNSAxLjEgMi41IDIuNS0xLjEgMi41LTIuNSAyLjV6TTEyIDIwdjJDNi40OCAyMiAyIDE3LjUyIDIgMTJTNi40OCAyIDEyIDJjNC44NCAwIDguODcgMy40NCA5LjggOGgtMi4wN0E4IDggMCAwIDAgMTUgNC41OVY1YzAgMS4xLS45IDItMiAyaC0ydjJjMCAuNTUtLjQ1IDEtMSAxSDh2MmgydjNIOWwtNC43OS00Ljc5QzQuMDggMTAuNzkgNCAxMS4zOCA0IDEyYzAgNC40MSAzLjU5IDggOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHN1bmFtaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjY3IDE3LjYzYy0zLjggMi44LTYuMTIuNC02LjY3IDAtLjY2LjQ5LTIuOTIgMi43Ni02LjY3IDBDMy40MyAxOS4wMyAyLjY1IDE5IDIgMTl2MmMxLjE2IDAgMi4zLS4zMiAzLjMzLS45M2E2LjUzNSA2LjUzNSAwIDAgMCA2LjY3IDAgNi41MzUgNi41MzUgMCAwIDAgNi42NyAwYzEuMDMuNjEgMi4xNy45MyAzLjMzLjkzdi0yYy0uNjYgMC0xLjUtLjAyLTMuMzMtMS4zN3pNMTkuMzMgMTJIMjJ2LTJoLTIuNjdDMTcuNSAxMCAxNiA4LjUgMTYgNi42N2MwLTEuMDIuMzgtMS43NCAxLjA5LTMuMzQtMS4zNy0uMjEtMi0uMzMtMy4wOS0uMzNDNy4zNiAzIDIuMTUgOC4wMyAyLjAxIDE0LjVsLS4wMSAyYzEuMTYgMCAyLjMtLjMyIDMuMzMtLjkzYTYuNTM1IDYuNTM1IDAgMCAwIDYuNjcgMCA2LjUzNSA2LjUzNSAwIDAgMCA2LjY3IDBjMS4wMy42MSAyLjE3LjkzIDMuMzMuOTN2LTJjLS42NiAwLTEuNS0uMDItMy4zMy0xLjM3LTMuOCAyLjgtNi4xMi40LTYuNjcgMC0uOS42Ny0uNTQuNDEtLjkxLjYzLS43LS45NC0xLjA5LTIuMDYtMS4wOS0zLjI2IDAtMi41OCAxLjc3LTQuNzQgNC4yMS01LjMzLS4xMy41MS0uMjEgMS4wMi0uMjEgMS41QzE0IDkuNjEgMTYuMzkgMTIgMTkuMzMgMTJ6bS0xNCAxLjEzYy0uNjIuNDYtLjgyLjYzLTEuMy44Ny4yNy0zLjUzIDIuMzgtNi40OCA1LjQzLTcuOTZBNy40OSA3LjQ5IDAgMCAwIDggMTAuNWMwIDEuNDIuNCAyLjc3IDEuMTMgMy45NS0uNzIuMDctMS43OS4xNS0zLjgtMS4zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZhY2NpbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNS41SDhWNGguNWMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtM2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMUg2djEuNUgzYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxVjE1YzAgMS4xLjkgMiAyIDJoMXY0bDIgMS41VjE3aDFjMS4xIDAgMi0uOSAyLTJWNy41Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xek05IDlINy4yNWMtLjQxIDAtLjc1LjM0LS43NS43NXMuMzQuNzUuNzUuNzVIOVYxMkg3LjI1Yy0uNDEgMC0uNzUuMzQtLjc1Ljc1cy4zNC43NS43NS43NUg5VjE1SDVWNy41aDRWOXptMTAuNSAxLjVWMTBjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFoLTVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDF2LjVjMCAuNS0xLjUgMS4xNi0xLjUgM1YyMGMwIDEuMS45IDIgMiAyaDRjMS4xIDAgMi0uOSAyLTJ2LTYuNWMwLTEuODQtMS41LTIuNS0xLjUtM3ptLTMgMFYxMGgxdi41YzAgMS42IDEuNSAyIDEuNSAzdi41aC00di0uNWMwLTEgMS41LTEuNCAxLjUtM3ptMi41IDVWMTdoLTR2LTEuNWg0ek0xNSAyMHYtMS41aDRWMjBoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWb2xjYW5vIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgtN2wtMiA1SDZsLTQgOWgyMEwxOCA4ek03LjMgMTVoMy4wNWwuNS0xLjI2IDEuNS0zLjc0aDQuMTRsMi44NiAxMEg1LjA4bDIuMjItNXpNMTMgMWgydjRoLTJ6TTE2LjEyMSA1LjQ2OCAxOC45NSAyLjY0bDEuNDE0IDEuNDE0LTIuODI5IDIuODI4ek03LjY0IDQuMDVsMS40MTQtMS40MTQgMi44MjggMi44MjktMS40MTQgMS40MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYWxsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA0SDZDMy43OSA0IDIgNS43OSAyIDh2OGMwIDIuMjEgMS43OSA0IDQgNGgxMmMyLjIxIDAgNC0xLjc5IDQtNFY4YzAtMi4yMS0xLjc5LTQtNC00em0tMS44NiA5Ljc3Yy0uMjQuMi0uNTcuMjgtLjg4LjJMNC4xNSAxMS4yNUM0LjQ1IDEwLjUyIDUuMTYgMTAgNiAxMGgxMmMuNjcgMCAxLjI2LjM0IDEuNjMuODRsLTMuNDkgMi45M3pNNiA2aDEyYzEuMSAwIDIgLjkgMiAydi41NWMtLjU5LS4zNC0xLjI3LS41NS0yLS41NUg2Yy0uNzMgMC0xLjQxLjIxLTIgLjU1VjhjMC0xLjEuOS0yIDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdhdGVyRHJvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTUuMzMgNC41NS04IDguNDgtOCAxMS44IDAgNC45OCAzLjggOC4yIDggOC4yczgtMy4yMiA4LTguMmMwLTMuMzItMi42Ny03LjI1LTgtMTEuOHptMCAxOGMtMy4zNSAwLTYtMi41Ny02LTYuMiAwLTIuMzQgMS45NS01LjQ0IDYtOS4xNCA0LjA1IDMuNyA2IDYuNzkgNiA5LjE0IDAgMy42My0yLjY1IDYuMi02IDYuMnptLTQuMTctNmMuMzcgMCAuNjcuMjYuNzQuNjIuNDEgMi4yMiAyLjI4IDIuOTggMy42NCAyLjg3LjQzLS4wMi43OS4zMi43OS43NSAwIC40LS4zMi43My0uNzIuNzUtMi4xMy4xMy00LjYyLTEuMDktNS4xOS00LjEyYS43NS43NSAwIDAgMSAuNzQtLjg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F2aW5nSGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMDMgNC45NSAzLjQ5IDguNDljLTMuMzIgMy4zMi0zLjMyIDguNyAwIDEyLjAyczguNyAzLjMyIDEyLjAyIDBsNi4wMS02LjAxYTIuNTE3IDIuNTE3IDAgMCAwLS4zOS0zLjg2bC4zOS0uMzljLjk3LS45Ny45Ny0yLjU2IDAtMy41NC0uMTYtLjE2LS4zNS0uMy0uNTQtLjQxYTIuNDk3IDIuNDk3IDAgMCAwLTMuNzItMy4wNSAyLjUxNyAyLjUxNyAwIDAgMC0zLjg4LS40MmwtMi41MSAyLjUxYTIuNDkzIDIuNDkzIDAgMCAwLTMuODQtLjM5em0xLjQxIDEuNDJjLjItLjIuNTEtLjIuNzEgMCAuMi4yLjIuNTEgMCAuNzFsLTMuMTggMy4xOGEzIDMgMCAwIDEgMCA0LjI0bDEuNDEgMS40MWE1LjAwNCA1LjAwNCAwIDAgMCAxLjEyLTUuMzZsNi4zLTYuM2MuMi0uMi41MS0uMi43MSAwcy4yLjUxIDAgLjcxbC00LjYgNC42IDEuNDEgMS40MSA2LjAxLTYuMDFjLjItLjIuNTEtLjIuNzEgMCAuMi4yLjIuNTEgMCAuNzFsLTYuMDEgNi4wMSAxLjQxIDEuNDEgNC45NS00Ljk1Yy4yLS4yLjUxLS4yLjcxIDAgLjIuMi4yLjUxIDAgLjcxbC01LjY2IDUuNjYgMS40MSAxLjQxIDMuNTQtMy41NGMuMi0uMi41MS0uMi43MSAwIC4yLjIuMi41MSAwIC43MWwtNiA2LjAxYy0yLjU0IDIuNTQtNi42NSAyLjU0LTkuMTkgMHMtMi41NC02LjY1IDAtOS4xOWwzLjUzLTMuNTR6TTIzIDE3YzAgMy4zMS0yLjY5IDYtNiA2di0xLjVjMi40OCAwIDQuNS0yLjAyIDQuNS00LjVIMjN6TTEgN2MwLTMuMzEgMi42OS02IDYtNnYxLjVDNC41MiAyLjUgMi41IDQuNTIgMi41IDdIMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdoYXRzYXBwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMDUgNC45MUE5LjgxNiA5LjgxNiAwIDAgMCAxMi4wNCAyYy01LjQ2IDAtOS45MSA0LjQ1LTkuOTEgOS45MSAwIDEuNzUuNDYgMy40NSAxLjMyIDQuOTVMMi4wNSAyMmw1LjI1LTEuMzhjMS40NS43OSAzLjA4IDEuMjEgNC43NCAxLjIxIDUuNDYgMCA5LjkxLTQuNDUgOS45MS05LjkxIDAtMi42NS0xLjAzLTUuMTQtMi45LTcuMDF6bS03LjAxIDE1LjI0Yy0xLjQ4IDAtMi45My0uNC00LjItMS4xNWwtLjMtLjE4LTMuMTIuODIuODMtMy4wNC0uMi0uMzFhOC4yNjQgOC4yNjQgMCAwIDEtMS4yNi00LjM4YzAtNC41NCAzLjctOC4yNCA4LjI0LTguMjQgMi4yIDAgNC4yNy44NiA1LjgyIDIuNDJhOC4xODMgOC4xODMgMCAwIDEgMi40MSA1LjgzYy4wMiA0LjU0LTMuNjggOC4yMy04LjIyIDguMjN6bTQuNTItNi4xNmMtLjI1LS4xMi0xLjQ3LS43Mi0xLjY5LS44MS0uMjMtLjA4LS4zOS0uMTItLjU2LjEyLS4xNy4yNS0uNjQuODEtLjc4Ljk3LS4xNC4xNy0uMjkuMTktLjU0LjA2LS4yNS0uMTItMS4wNS0uMzktMS45OS0xLjIzLS43NC0uNjYtMS4yMy0xLjQ3LTEuMzgtMS43Mi0uMTQtLjI1LS4wMi0uMzguMTEtLjUxLjExLS4xMS4yNS0uMjkuMzctLjQzcy4xNy0uMjUuMjUtLjQxYy4wOC0uMTcuMDQtLjMxLS4wMi0uNDNzLS41Ni0xLjM0LS43Ni0xLjg0Yy0uMi0uNDgtLjQxLS40Mi0uNTYtLjQzaC0uNDhjLS4xNyAwLS40My4wNi0uNjYuMzEtLjIyLjI1LS44Ni44NS0uODYgMi4wNyAwIDEuMjIuODkgMi40IDEuMDEgMi41Ni4xMi4xNyAxLjc1IDIuNjcgNC4yMyAzLjc0LjU5LjI2IDEuMDUuNDEgMS40MS41Mi41OS4xOSAxLjEzLjE2IDEuNTYuMS40OC0uMDcgMS40Ny0uNiAxLjY3LTEuMTguMjEtLjU4LjIxLTEuMDcuMTQtMS4xOHMtLjIyLS4xNi0uNDctLjI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2hhdHNob3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjU3IDEzLjE2Yy0xLjM2LjI4LTIuMTcgMS4xNi0yLjE3IDIuNDEgMCAxLjM0IDEuMTEgMi40MiAyLjQ5IDIuNDIgMi4wNSAwIDMuNzEtMS42NiAzLjcxLTMuNzEgMC0xLjA3LS4xNS0yLjEyLS40Ni0zLjEyLS43OSAxLjA3LTIuMiAxLjcyLTMuNTcgMnpNMTMuNS42N3MuNzQgMi42NS43NCA0LjhjMCAyLjA2LTEuMzUgMy43My0zLjQxIDMuNzMtMi4wNyAwLTMuNjMtMS42Ny0zLjYzLTMuNzNsLjAzLS4zNkM1LjIxIDcuNTEgNCAxMC42MiA0IDE0YzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LThDMjAgOC42MSAxNy40MSAzLjggMTMuNS42N3pNMTIgMjBjLTMuMzEgMC02LTIuNjktNi02IDAtMS41My4zLTMuMDQuODYtNC40M2E1LjU4MiA1LjU4MiAwIDAgMCAzLjk3IDEuNjNjMi42NiAwIDQuNzUtMS44MyA1LjI4LTQuNDNBMTQuNzcgMTQuNzcgMCAwIDEgMTggMTRjMCAzLjMxLTIuNjkgNi02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXb21hbjIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy45NCA4LjMxQzEzLjYyIDcuNTIgMTIuODUgNyAxMiA3cy0xLjYyLjUyLTEuOTQgMS4zMUw3IDE2aDMuNXY2aDN2LTZIMTdsLTMuMDYtNy42OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdvbWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuOTQgOC4zMUMxMy42MiA3LjUyIDEyLjg1IDcgMTIgN3MtMS42Mi41Mi0xLjk0IDEuMzFMNyAxNmgzdjZoNHYtNmgzbC0zLjA2LTcuNjl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXb3Jrc3BhY2VQcmVtaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS42OCAxMy42OSAxMiAxMS45M2wyLjMxIDEuNzYtLjg4LTIuODVMMTUuNzUgOWgtMi44NEwxMiA2LjE5IDExLjA5IDlIOC4yNWwyLjMxIDEuODQtLjg4IDIuODV6TTIwIDEwYzAtNC40Mi0zLjU4LTgtOC04cy04IDMuNTgtOCA4YzAgMi4wMy43NiAzLjg3IDIgNS4yOFYyM2w2LTIgNiAydi03LjcyQTcuOTYgNy45NiAwIDAgMCAyMCAxMHptLTgtNmMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNi02LTIuNjktNi02IDIuNjktNiA2LTZ6bTAgMTUtNCAxLjAydi0zLjFjMS4xOC42OCAyLjU0IDEuMDggNCAxLjA4czIuODItLjQgNC0xLjA4djMuMUwxMiAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoZWNrQm94T3V0bGluZUJsYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djE0SDVWNWgxNG0wLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hlY2tCb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpNMTcuOTkgOWwtMS40MS0xLjQyLTYuNTkgNi41OS0yLjU4LTIuNTctMS40MiAxLjQxIDQgMy45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluZGV0ZXJtaW5hdGVDaGVja0JveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpNNyAxMWgxMHYySDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSYWRpb0J1dHRvbkNoZWNrZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJhZGlvQnV0dG9uVW5jaGVja2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YXJCb3JkZXJQdXJwbGU1MDAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDkuMjQtNy4xOS0uNjJMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3IDE4LjE4IDIxbC0xLjYzLTcuMDNMMjIgOS4yNHpNMTIgMTUuNGwtMy43NiAyLjI3IDEtNC4yOC0zLjMyLTIuODggNC4zOC0uMzhMMTIgNi4xbDEuNzEgNC4wNCA0LjM4LjM4LTMuMzIgMi44OCAxIDQuMjhMMTIgMTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YXJCb3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDkuMjQtNy4xOS0uNjJMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3IDE4LjE4IDIxbC0xLjYzLTcuMDNMMjIgOS4yNHpNMTIgMTUuNGwtMy43NiAyLjI3IDEtNC4yOC0zLjMyLTIuODggNC4zOC0uMzhMMTIgNi4xbDEuNzEgNC4wNCA0LjM4LjM4LTMuMzIgMi44OCAxIDQuMjhMMTIgMTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YXJIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgOS4yNC03LjE5LS42MkwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjEgMTIgMTcuMjcgMTguMTggMjFsLTEuNjMtNy4wM0wyMiA5LjI0ek0xMiAxNS40VjYuMWwxLjcxIDQuMDQgNC4zOC4zOC0zLjMyIDIuODggMSA0LjI4TDEyIDE1LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGFyT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgOS4yNC03LjE5LS42MkwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjEgMTIgMTcuMjcgMTguMTggMjFsLTEuNjMtNy4wM0wyMiA5LjI0ek0xMiAxNS40bC0zLjc2IDIuMjcgMS00LjI4LTMuMzItMi44OCA0LjM4LS4zOEwxMiA2LjFsMS43MSA0LjA0IDQuMzguMzgtMy4zMiAyLjg4IDEgNC4yOEwxMiAxNS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RhclB1cnBsZTUwMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTcuMjcgMTguMTggMjFsLTEuNjQtNy4wM0wyMiA5LjI0bC03LjE5LS42MUwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjEgMTIgMTcuMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiZ1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNy4yNyAxOC4xOCAyMWwtMS42NC03LjAzTDIyIDkuMjRsLTcuMTktLjYxTDEyIDIgOS4xOSA4LjYzIDIgOS4yNGw1LjQ2IDQuNzNMNS44MiAyMSAxMiAxNy4yN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRvZ2dsZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNkg3Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2aDEwYzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02em0wIDEwSDdjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTRoMTBjMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDR6TTcgOWMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUb2dnbGVPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDZIN2MtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNmgxMGMzLjMxIDAgNi0yLjY5IDYtNnMtMi42OS02LTYtNnptMCAxMEg3Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00aDEwYzIuMjEgMCA0IDEuNzkgNCA0cy0xLjc5IDQtNCA0em0wLTdjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VJZCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IE1kQ2xvc2UsIE1kSG9tZSB9IGZyb20gJ3JlYWN0LWljb25zL21kJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlRHJhd2VyQ29udGV4dCB9IGZyb20gJy4vRHJhd2VyQ29udGV4dC5tanMnO1xuXG5jb25zdCBEcmF3ZXJIZWFkZXIgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBjbG9zZUljb246IENsb3NlSWNvbiA9IE1kQ2xvc2UsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICB0aXRsZSxcbiAgdGl0bGVJY29uOiBUaXRsZUljb24gPSBNZEhvbWUsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgY29uc3QgeyBpZDogbWFpbkRpdklkLCBpc09wZW4sIG9uQ2xvc2UsIHRoZW1lOiByb290VGhlbWUgfSA9IHVzZURyYXdlckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLmhlYWRlciwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWUsIC4uLnByb3BzLCBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiaDVcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmlubmVyLnRpdGxlVGV4dCwgaWQ6IG1haW5EaXZJZCwgY2hpbGRyZW46IFtcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goVGl0bGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgY2xhc3NOYW1lOiB0aGVtZS5pbm5lci50aXRsZUljb24gfSksXG4gICAgICB0aXRsZVxuICAgIF0gfSksXG4gICAgLyogQF9fUFVSRV9fICovIGpzeHMoXCJidXR0b25cIiwgeyBvbkNsaWNrOiBvbkNsb3NlLCBcImRhdGEtdGVzdGlkXCI6IFwiY2xvc2UtZHJhd2VyXCIsIGNsYXNzTmFtZTogdGhlbWUuaW5uZXIuY2xvc2VCdXR0b24sIGNoaWxkcmVuOiBbXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KENsb3NlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuaW5uZXIuY2xvc2VJY29uIH0pLFxuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IFwic3Itb25seVwiLCBjaGlsZHJlbjogXCJDbG9zZSBtZW51XCIgfSlcbiAgICBdIH0pLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5jb2xsYXBzZWRbaXNPcGVuID8gXCJvblwiIDogXCJvZmZcIl0sIGlkOiBgZmxvd2JpdGUtZHJhd2VyLWhlYWRlci0ke2lkfWAsIGNoaWxkcmVuIH0pXG4gIF0gfSk7XG59O1xuRHJhd2VySGVhZGVyLmRpc3BsYXlOYW1lID0gXCJEcmF3ZXIuSGVhZGVyXCI7XG5cbmV4cG9ydCB7IERyYXdlckhlYWRlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RHJhd2VySGVhZGVyLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZURyYXdlckNvbnRleHQgfSBmcm9tICcuL0RyYXdlckNvbnRleHQubWpzJztcblxuY29uc3QgRHJhd2VySXRlbXMgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUgfSA9IHVzZURyYXdlckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLml0ZW1zLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWRyYXdlci1pdGVtc1wiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcbkRyYXdlckl0ZW1zLmRpc3BsYXlOYW1lID0gXCJEcmF3ZXIuSXRlbXNcIjtcblxuZXhwb3J0IHsgRHJhd2VySXRlbXMgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyYXdlckl0ZW1zLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZUlkLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBEcmF3ZXJDb250ZXh0IH0gZnJvbSAnLi9EcmF3ZXJDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBEcmF3ZXJIZWFkZXIgfSBmcm9tICcuL0RyYXdlckhlYWRlci5tanMnO1xuaW1wb3J0IHsgRHJhd2VySXRlbXMgfSBmcm9tICcuL0RyYXdlckl0ZW1zLm1qcyc7XG5cbmNvbnN0IERyYXdlckNvbXBvbmVudCA9ICh7XG4gIGJhY2tkcm9wID0gdHJ1ZSxcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgZWRnZSA9IGZhbHNlLFxuICBwb3NpdGlvbiA9IFwibGVmdFwiLFxuICBvbkNsb3NlLFxuICBvcGVuOiBpc09wZW4gPSBmYWxzZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5kcmF3ZXIsIGN1c3RvbVRoZW1lKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVFc2NhcGVLZXkgPSAoZXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09IFwiRXNjYXBlXCIgJiYgaXNPcGVuICYmIG9uQ2xvc2UpIHtcbiAgICAgICAgb25DbG9zZSgpO1xuICAgICAgfVxuICAgIH07XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlRXNjYXBlS2V5KTtcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlRXNjYXBlS2V5KTtcbiAgfSwgW29uQ2xvc2UsIGlzT3Blbl0pO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoRHJhd2VyQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSwgb25DbG9zZSwgaXNPcGVuLCBpZCB9LCBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImRpdlwiLFxuICAgICAge1xuICAgICAgICBcImFyaWEtbW9kYWxcIjogdHJ1ZSxcbiAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGBkcmF3ZXItZGlhbG9nLSR7aWR9YCxcbiAgICAgICAgcm9sZTogXCJkaWFsb2dcIixcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtZHJhd2VyXCIsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICB0aGVtZS5yb290LmJhc2UsXG4gICAgICAgICAgdGhlbWUucm9vdC5wb3NpdGlvbltwb3NpdGlvbl1baXNPcGVuID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgZWRnZSAmJiAhaXNPcGVuICYmIHRoZW1lLnJvb3QuZWRnZSxcbiAgICAgICAgICBjbGFzc05hbWVcbiAgICAgICAgKSxcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIGNoaWxkcmVuXG4gICAgICB9XG4gICAgKSxcbiAgICBpc09wZW4gJiYgYmFja2Ryb3AgJiYgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IG9uQ2xpY2s6ICgpID0+IG9uQ2xvc2UoKSwgY2xhc3NOYW1lOiB0aGVtZS5yb290LmJhY2tkcm9wIH0pXG4gIF0gfSk7XG59O1xuRHJhd2VyQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJEcmF3ZXJcIjtcbmNvbnN0IERyYXdlciA9IE9iamVjdC5hc3NpZ24oRHJhd2VyQ29tcG9uZW50LCB7XG4gIEhlYWRlcjogRHJhd2VySGVhZGVyLFxuICBJdGVtczogRHJhd2VySXRlbXNcbn0pO1xuXG5leHBvcnQgeyBEcmF3ZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyYXdlci5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBEcm9wZG93bkNvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VEcm9wZG93bkNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERyb3Bkb3duQ29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZURyb3Bkb3duQ29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIERyb3Bkb3duQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IERyb3Bkb3duQ29udGV4dCwgdXNlRHJvcGRvd25Db250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ecm9wZG93bkNvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IHVzZURyb3Bkb3duQ29udGV4dCB9IGZyb20gJy4vRHJvcGRvd25Db250ZXh0Lm1qcyc7XG5cbmNvbnN0IERyb3Bkb3duRGl2aWRlciA9ICh7IGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lIH0gPSB1c2VEcm9wZG93bkNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBjdXN0b21UaGVtZS5kaXZpZGVyID8/IHJvb3RUaGVtZS5mbG9hdGluZy5kaXZpZGVyO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMgfSk7XG59O1xuXG5leHBvcnQgeyBEcm9wZG93bkRpdmlkZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyb3Bkb3duRGl2aWRlci5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3hzLCBGcmFnbWVudCwganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IHVzZURyb3Bkb3duQ29udGV4dCB9IGZyb20gJy4vRHJvcGRvd25Db250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBEcm9wZG93bkRpdmlkZXIgfSBmcm9tICcuL0Ryb3Bkb3duRGl2aWRlci5tanMnO1xuXG5jb25zdCBEcm9wZG93bkhlYWRlciA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSB9ID0gdXNlRHJvcGRvd25Db250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gY3VzdG9tVGhlbWUuaGVhZGVyID8/IHJvb3RUaGVtZS5mbG9hdGluZy5oZWFkZXI7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhGcmFnbWVudCwgeyBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUsIGNsYXNzTmFtZSksIC4uLnByb3BzLCBjaGlsZHJlbiB9KSxcbiAgICAvKiBAX19QVVJFX18gKi8ganN4KERyb3Bkb3duRGl2aWRlciwge30pXG4gIF0gfSk7XG59O1xuXG5leHBvcnQgeyBEcm9wZG93bkhlYWRlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RHJvcGRvd25IZWFkZXIubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4LCBqc3hzIH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdXNlTGlzdEl0ZW0sIHVzZU1lcmdlUmVmcyB9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdCc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgQnV0dG9uQmFzZSB9IGZyb20gJy4uL0J1dHRvbi9CdXR0b25CYXNlLm1qcyc7XG5pbXBvcnQgeyB1c2VEcm9wZG93bkNvbnRleHQgfSBmcm9tICcuL0Ryb3Bkb3duQ29udGV4dC5tanMnO1xuXG5jb25zdCBEcm9wZG93bkl0ZW0gPSBmb3J3YXJkUmVmKFxuICAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBpY29uOiBJY29uLCBvbkNsaWNrLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3QgeyByZWY6IGxpc3RJdGVtUmVmLCBpbmRleCB9ID0gdXNlTGlzdEl0ZW0oeyBsYWJlbDogdHlwZW9mIGNoaWxkcmVuID09PSBcInN0cmluZ1wiID8gY2hpbGRyZW4gOiB2b2lkIDAgfSk7XG4gICAgY29uc3QgcmVmID0gdXNlTWVyZ2VSZWZzKFtmb3J3YXJkZWRSZWYsIGxpc3RJdGVtUmVmXSk7XG4gICAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBhY3RpdmVJbmRleCwgZGlzbWlzc09uQ2xpY2ssIGdldEl0ZW1Qcm9wcywgaGFuZGxlU2VsZWN0IH0gPSB1c2VEcm9wZG93bkNvbnRleHQoKTtcbiAgICBjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZUluZGV4ID09PSBpbmRleDtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuZmxvYXRpbmcuaXRlbSwgY3VzdG9tVGhlbWUpO1xuICAgIGNvbnN0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImxpXCIsIHsgcm9sZTogXCJtZW51aXRlbVwiLCBjbGFzc05hbWU6IHRoZW1lLmNvbnRhaW5lciwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgICAgQnV0dG9uQmFzZSxcbiAgICAgIHtcbiAgICAgICAgcmVmLFxuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSxcbiAgICAgICAgLi4udGhlaXJQcm9wcyxcbiAgICAgICAgLi4uZ2V0SXRlbVByb3BzKHtcbiAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICBvbkNsaWNrPy4oKTtcbiAgICAgICAgICAgIGRpc21pc3NPbkNsaWNrICYmIGhhbmRsZVNlbGVjdChudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICB0YWJJbmRleDogaXNBY3RpdmUgPyAwIDogLTEsXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgSWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgY2xhc3NOYW1lOiB0aGVtZS5pY29uIH0pLFxuICAgICAgICAgIGNoaWxkcmVuXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICApIH0pO1xuICB9XG4pO1xuRHJvcGRvd25JdGVtLmRpc3BsYXlOYW1lID0gXCJEcm9wZG93bkl0ZW1cIjtcblxuZXhwb3J0IHsgRHJvcGRvd25JdGVtIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ecm9wZG93bkl0ZW0ubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4cywganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdXNlTGlzdE5hdmlnYXRpb24sIHVzZVR5cGVhaGVhZCwgRmxvYXRpbmdGb2N1c01hbmFnZXIsIEZsb2F0aW5nTGlzdCB9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdCc7XG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlRWZmZWN0LCBjbG9uZUVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBIaU91dGxpbmVDaGV2cm9uRG93biwgSGlPdXRsaW5lQ2hldnJvblVwLCBIaU91dGxpbmVDaGV2cm9uUmlnaHQsIEhpT3V0bGluZUNoZXZyb25MZWZ0IH0gZnJvbSAncmVhY3QtaWNvbnMvaGknO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlQmFzZUZMb2F0aW5nLCB1c2VGbG9hdGluZ0ludGVyYWN0aW9ucyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZS1mbG9hdGluZy5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vQnV0dG9uL0J1dHRvbi5tanMnO1xuaW1wb3J0ICcuLi9CdXR0b24vQnV0dG9uR3JvdXAubWpzJztcbmltcG9ydCB7IERyb3Bkb3duQ29udGV4dCB9IGZyb20gJy4vRHJvcGRvd25Db250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBEcm9wZG93bkRpdmlkZXIgfSBmcm9tICcuL0Ryb3Bkb3duRGl2aWRlci5tanMnO1xuaW1wb3J0IHsgRHJvcGRvd25IZWFkZXIgfSBmcm9tICcuL0Ryb3Bkb3duSGVhZGVyLm1qcyc7XG5pbXBvcnQgeyBEcm9wZG93bkl0ZW0gfSBmcm9tICcuL0Ryb3Bkb3duSXRlbS5tanMnO1xuXG5jb25zdCBpY29ucyA9IHtcbiAgdG9wOiBIaU91dGxpbmVDaGV2cm9uVXAsXG4gIHJpZ2h0OiBIaU91dGxpbmVDaGV2cm9uUmlnaHQsXG4gIGJvdHRvbTogSGlPdXRsaW5lQ2hldnJvbkRvd24sXG4gIGxlZnQ6IEhpT3V0bGluZUNoZXZyb25MZWZ0XG59O1xuY29uc3QgVHJpZ2dlciA9ICh7XG4gIHJlZnMsXG4gIGNoaWxkcmVuLFxuICBpbmxpbmUsXG4gIHRoZW1lLFxuICBkaXNhYmxlZCxcbiAgc2V0QnV0dG9uV2lkdGgsXG4gIGdldFJlZmVyZW5jZVByb3BzLFxuICByZW5kZXJUcmlnZ2VyLFxuICAuLi5idXR0b25Qcm9wc1xufSkgPT4ge1xuICBjb25zdCByZWYgPSByZWZzLnJlZmVyZW5jZTtcbiAgY29uc3QgYTExeVByb3BzID0gZ2V0UmVmZXJlbmNlUHJvcHMoKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmLmN1cnJlbnQpIHtcbiAgICAgIHNldEJ1dHRvbldpZHRoPy4ocmVmLmN1cnJlbnQuY2xpZW50V2lkdGgpO1xuICAgIH1cbiAgfSwgW3JlZiwgc2V0QnV0dG9uV2lkdGhdKTtcbiAgaWYgKHJlbmRlclRyaWdnZXIpIHtcbiAgICBjb25zdCB0cmlnZ2VyRWxlbWVudCA9IHJlbmRlclRyaWdnZXIodGhlbWUpO1xuICAgIHJldHVybiBjbG9uZUVsZW1lbnQodHJpZ2dlckVsZW1lbnQsIHsgcmVmOiByZWZzLnNldFJlZmVyZW5jZSwgZGlzYWJsZWQsIC4uLmExMXlQcm9wcywgLi4udHJpZ2dlckVsZW1lbnQucHJvcHMgfSk7XG4gIH1cbiAgcmV0dXJuIGlubGluZSA/IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJidXR0b25cIiwgeyB0eXBlOiBcImJ1dHRvblwiLCByZWY6IHJlZnMuc2V0UmVmZXJlbmNlLCBjbGFzc05hbWU6IHRoZW1lPy5pbmxpbmVXcmFwcGVyLCBkaXNhYmxlZCwgLi4uYTExeVByb3BzLCBjaGlsZHJlbiB9KSA6IC8qIEBfX1BVUkVfXyAqLyBqc3goQnV0dG9uLCB7IC4uLmJ1dHRvblByb3BzLCBkaXNhYmxlZCwgdHlwZTogXCJidXR0b25cIiwgcmVmOiByZWZzLnNldFJlZmVyZW5jZSwgLi4uYTExeVByb3BzLCBjaGlsZHJlbiB9KTtcbn07XG5jb25zdCBEcm9wZG93bkNvbXBvbmVudCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGRpc21pc3NPbkNsaWNrID0gdHJ1ZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIGVuYWJsZVR5cGVBaGVhZCA9IHRydWUsXG4gIHJlbmRlclRyaWdnZXIsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2FjdGl2ZUluZGV4LCBzZXRBY3RpdmVJbmRleF0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW3NlbGVjdGVkSW5kZXgsIHNldFNlbGVjdGVkSW5kZXhdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFtidXR0b25XaWR0aCwgc2V0QnV0dG9uV2lkdGhdID0gdXNlU3RhdGUodm9pZCAwKTtcbiAgY29uc3QgZWxlbWVudHNSZWYgPSB1c2VSZWYoW10pO1xuICBjb25zdCBsYWJlbHNSZWYgPSB1c2VSZWYoW10pO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmRyb3Bkb3duLCBjdXN0b21UaGVtZSk7XG4gIGNvbnN0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgY29uc3QgZGF0YVRlc3RJZCA9IHByb3BzW1wiZGF0YS10ZXN0aWRcIl0gfHwgXCJmbG93Yml0ZS1kcm9wZG93bi10YXJnZXRcIjtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCA9IHByb3BzLmlubGluZSA/IFwiYm90dG9tLXN0YXJ0XCIgOiBcImJvdHRvbVwiLFxuICAgIHRyaWdnZXIgPSBcImNsaWNrXCIsXG4gICAgbGFiZWwsXG4gICAgaW5saW5lLFxuICAgIGFycm93SWNvbiA9IHRydWUsXG4gICAgLi4uYnV0dG9uUHJvcHNcbiAgfSA9IHRoZWlyUHJvcHM7XG4gIGNvbnN0IGhhbmRsZVNlbGVjdCA9IHVzZUNhbGxiYWNrKChpbmRleCkgPT4ge1xuICAgIHNldFNlbGVjdGVkSW5kZXgoaW5kZXgpO1xuICAgIHNldE9wZW4oZmFsc2UpO1xuICB9LCBbXSk7XG4gIGNvbnN0IGhhbmRsZVR5cGVhaGVhZE1hdGNoID0gdXNlQ2FsbGJhY2soXG4gICAgKGluZGV4KSA9PiB7XG4gICAgICBpZiAob3Blbikge1xuICAgICAgICBzZXRBY3RpdmVJbmRleChpbmRleCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoYW5kbGVTZWxlY3QoaW5kZXgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW29wZW4sIGhhbmRsZVNlbGVjdF1cbiAgKTtcbiAgY29uc3QgeyBjb250ZXh0LCBmbG9hdGluZ1N0eWxlcywgcmVmcyB9ID0gdXNlQmFzZUZMb2F0aW5nKHtcbiAgICBvcGVuLFxuICAgIHNldE9wZW4sXG4gICAgcGxhY2VtZW50XG4gIH0pO1xuICBjb25zdCBsaXN0TmF2ID0gdXNlTGlzdE5hdmlnYXRpb24oY29udGV4dCwge1xuICAgIGxpc3RSZWY6IGVsZW1lbnRzUmVmLFxuICAgIGFjdGl2ZUluZGV4LFxuICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgb25OYXZpZ2F0ZTogc2V0QWN0aXZlSW5kZXhcbiAgfSk7XG4gIGNvbnN0IHR5cGVhaGVhZCA9IHVzZVR5cGVhaGVhZChjb250ZXh0LCB7XG4gICAgbGlzdFJlZjogbGFiZWxzUmVmLFxuICAgIGFjdGl2ZUluZGV4LFxuICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgb25NYXRjaDogaGFuZGxlVHlwZWFoZWFkTWF0Y2gsXG4gICAgZW5hYmxlZDogZW5hYmxlVHlwZUFoZWFkXG4gIH0pO1xuICBjb25zdCB7IGdldFJlZmVyZW5jZVByb3BzLCBnZXRGbG9hdGluZ1Byb3BzLCBnZXRJdGVtUHJvcHMgfSA9IHVzZUZsb2F0aW5nSW50ZXJhY3Rpb25zKHtcbiAgICBjb250ZXh0LFxuICAgIHJvbGU6IFwibWVudVwiLFxuICAgIHRyaWdnZXIsXG4gICAgaW50ZXJhY3Rpb25zOiBbbGlzdE5hdiwgdHlwZWFoZWFkXVxuICB9KTtcbiAgY29uc3QgSWNvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IFtwXSA9IHBsYWNlbWVudC5zcGxpdChcIi1cIik7XG4gICAgcmV0dXJuIGljb25zW3BdID8/IEhpT3V0bGluZUNoZXZyb25Eb3duO1xuICB9LCBbcGxhY2VtZW50XSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhEcm9wZG93bkNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHsgdGhlbWUsIGFjdGl2ZUluZGV4LCBkaXNtaXNzT25DbGljaywgZ2V0SXRlbVByb3BzLCBoYW5kbGVTZWxlY3QgfSwgY2hpbGRyZW46IFtcbiAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICAgIFRyaWdnZXIsXG4gICAgICB7XG4gICAgICAgIC4uLmJ1dHRvblByb3BzLFxuICAgICAgICByZWZzLFxuICAgICAgICBpbmxpbmUsXG4gICAgICAgIHRoZW1lLFxuICAgICAgICBcImRhdGEtdGVzdGlkXCI6IGRhdGFUZXN0SWQsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5mbG9hdGluZy50YXJnZXQsIGJ1dHRvblByb3BzLmNsYXNzTmFtZSksXG4gICAgICAgIHNldEJ1dHRvbldpZHRoLFxuICAgICAgICBnZXRSZWZlcmVuY2VQcm9wcyxcbiAgICAgICAgcmVuZGVyVHJpZ2dlcixcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICBhcnJvd0ljb24gJiYgLyogQF9fUFVSRV9fICovIGpzeChJY29uLCB7IGNsYXNzTmFtZTogdGhlbWUuYXJyb3dJY29uIH0pXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICApLFxuICAgIG9wZW4gJiYgLyogQF9fUFVSRV9fICovIGpzeChGbG9hdGluZ0ZvY3VzTWFuYWdlciwgeyBjb250ZXh0LCBtb2RhbDogZmFsc2UsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgXCJkaXZcIixcbiAgICAgIHtcbiAgICAgICAgcmVmOiByZWZzLnNldEZsb2F0aW5nLFxuICAgICAgICBzdHlsZTogeyAuLi5mbG9hdGluZ1N0eWxlcywgbWluV2lkdGg6IGJ1dHRvbldpZHRoIH0sXG4gICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1kcm9wZG93blwiLFxuICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogb3BlbixcbiAgICAgICAgLi4uZ2V0RmxvYXRpbmdQcm9wcyh7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgdGhlbWUuZmxvYXRpbmcuYmFzZSxcbiAgICAgICAgICAgIHRoZW1lLmZsb2F0aW5nLmFuaW1hdGlvbixcbiAgICAgICAgICAgIFwiZHVyYXRpb24tMTAwXCIsXG4gICAgICAgICAgICAhb3BlbiAmJiB0aGVtZS5mbG9hdGluZy5oaWRkZW4sXG4gICAgICAgICAgICB0aGVtZS5mbG9hdGluZy5zdHlsZS5hdXRvLFxuICAgICAgICAgICAgY2xhc3NOYW1lXG4gICAgICAgICAgKVxuICAgICAgICB9KSxcbiAgICAgICAgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goRmxvYXRpbmdMaXN0LCB7IGVsZW1lbnRzUmVmLCBsYWJlbHNSZWYsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwidWxcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmNvbnRlbnQsIHRhYkluZGV4OiAtMSwgY2hpbGRyZW4gfSkgfSlcbiAgICAgIH1cbiAgICApIH0pXG4gIF0gfSk7XG59O1xuRHJvcGRvd25Db21wb25lbnQuZGlzcGxheU5hbWUgPSBcIkRyb3Bkb3duXCI7XG5Ecm9wZG93bkhlYWRlci5kaXNwbGF5TmFtZSA9IFwiRHJvcGRvd24uSGVhZGVyXCI7XG5Ecm9wZG93bkRpdmlkZXIuZGlzcGxheU5hbWUgPSBcIkRyb3Bkb3duLkRpdmlkZXJcIjtcbmNvbnN0IERyb3Bkb3duID0gT2JqZWN0LmFzc2lnbihEcm9wZG93bkNvbXBvbmVudCwge1xuICBJdGVtOiBEcm9wZG93bkl0ZW0sXG4gIEhlYWRlcjogRHJvcGRvd25IZWFkZXIsXG4gIERpdmlkZXI6IERyb3Bkb3duRGl2aWRlclxufSk7XG5cbmV4cG9ydCB7IERyb3Bkb3duIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ecm9wZG93bi5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBGcmFnbWVudCwganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IEhlbHBlclRleHQgfSBmcm9tICcuLi9IZWxwZXJUZXh0L0hlbHBlclRleHQubWpzJztcblxuY29uc3QgRmlsZUlucHV0ID0gZm9yd2FyZFJlZihcbiAgKHsgY2xhc3NOYW1lLCBjb2xvciA9IFwiZ3JheVwiLCBoZWxwZXJUZXh0LCBzaXppbmcgPSBcIm1kXCIsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmZpbGVJbnB1dCwgY3VzdG9tVGhlbWUpO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhGcmFnbWVudCwgeyBjaGlsZHJlbjogW1xuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmJhc2UsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5maWVsZC5iYXNlLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgXCJpbnB1dFwiLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgdGhlbWUuZmllbGQuaW5wdXQuYmFzZSxcbiAgICAgICAgICAgIHRoZW1lLmZpZWxkLmlucHV0LmNvbG9yc1tjb2xvcl0sXG4gICAgICAgICAgICB0aGVtZS5maWVsZC5pbnB1dC5zaXplc1tzaXppbmddXG4gICAgICAgICAgKSxcbiAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgICByZWZcbiAgICAgICAgfVxuICAgICAgKSB9KSB9KSxcbiAgICAgIGhlbHBlclRleHQgJiYgLyogQF9fUFVSRV9fICovIGpzeChIZWxwZXJUZXh0LCB7IGNvbG9yLCBjaGlsZHJlbjogaGVscGVyVGV4dCB9KVxuICAgIF0gfSk7XG4gIH1cbik7XG5GaWxlSW5wdXQuZGlzcGxheU5hbWUgPSBcIkZpbGVJbnB1dFwiO1xuXG5leHBvcnQgeyBGaWxlSW5wdXQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZpbGVJbnB1dC5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VJZCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgRmxvYXRpbmdMYWJlbCA9IGZvcndhcmRSZWYoXG4gICh7XG4gICAgbGFiZWwsXG4gICAgaGVscGVyVGV4dCxcbiAgICBjb2xvciA9IFwiZGVmYXVsdFwiLFxuICAgIHNpemluZyA9IFwibWRcIixcbiAgICB2YXJpYW50LFxuICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gICAgY2xhc3NOYW1lLFxuICAgIC4uLnByb3BzXG4gIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHJhbmRvbUlkID0gdXNlSWQoKTtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmZsb2F0aW5nTGFiZWwsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjaGlsZHJlbjogW1xuICAgICAgLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UoXCJyZWxhdGl2ZVwiLCB2YXJpYW50ID09PSBcInN0YW5kYXJkXCIgPyBcInotMFwiIDogXCJcIiksIGNoaWxkcmVuOiBbXG4gICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgXCJpbnB1dFwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgaWQ6IHByb3BzLmlkID8gcHJvcHMuaWQgOiBcImZsb2F0aW5nTGFiZWxcIiArIHJhbmRvbUlkLFxuICAgICAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IFwib3V0bGluZWRfc3VjY2Vzc19oZWxwXCIsXG4gICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuaW5wdXRbY29sb3JdW3ZhcmlhbnRdW3NpemluZ10sIGNsYXNzTmFtZSksXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogXCIgXCIsXG4gICAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvYXRpbmctbGFiZWxcIixcbiAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgICAgICByZWZcbiAgICAgICAgICB9XG4gICAgICAgICksXG4gICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgXCJsYWJlbFwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGh0bWxGb3I6IHByb3BzLmlkID8gcHJvcHMuaWQgOiBcImZsb2F0aW5nTGFiZWxcIiArIHJhbmRvbUlkLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmxhYmVsW2NvbG9yXVt2YXJpYW50XVtzaXppbmddLCBjbGFzc05hbWUpLFxuICAgICAgICAgICAgY2hpbGRyZW46IGxhYmVsXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICBdIH0pLFxuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcInBcIiwgeyBpZDogXCJvdXRsaW5lZF9oZWxwZXJfdGV4dFwiICsgcmFuZG9tSWQsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5oZWxwZXJUZXh0W2NvbG9yXSwgY2xhc3NOYW1lKSwgY2hpbGRyZW46IGhlbHBlclRleHQgfSlcbiAgICBdIH0pO1xuICB9XG4pO1xuRmxvYXRpbmdMYWJlbC5kaXNwbGF5TmFtZSA9IFwiRmxvYXRpbmdMYWJlbFwiO1xuXG5leHBvcnQgeyBGbG9hdGluZ0xhYmVsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GbG9hdGluZ0xhYmVsLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCwganN4cyB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgRm9vdGVyQnJhbmQgPSAoe1xuICBhbHQsXG4gIGNsYXNzTmFtZSxcbiAgY2hpbGRyZW4sXG4gIGhyZWYsXG4gIG5hbWUsXG4gIHNyYyxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuZm9vdGVyLmJyYW5kLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2hpbGRyZW46IGhyZWYgPyAvKiBAX19QVVJFX18gKi8ganN4cyhcImFcIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtZm9vdGVyLWJyYW5kXCIsIGhyZWYsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW46IFtcbiAgICAvKiBAX19QVVJFX18gKi8ganN4KFwiaW1nXCIsIHsgYWx0LCBzcmMsIGNsYXNzTmFtZTogdGhlbWUuaW1nIH0pLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWZvb3Rlci1icmFuZC1zcGFuXCIsIGNsYXNzTmFtZTogdGhlbWUuc3BhbiwgY2hpbGRyZW46IG5hbWUgfSksXG4gICAgY2hpbGRyZW5cbiAgXSB9KSA6IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJpbWdcIixcbiAgICB7XG4gICAgICBhbHQsXG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtZm9vdGVyLWJyYW5kXCIsXG4gICAgICBzcmMsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuaW1nLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHNcbiAgICB9XG4gICkgfSk7XG59O1xuXG5leHBvcnQgeyBGb290ZXJCcmFuZCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Rm9vdGVyQnJhbmQubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4cywganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBGb290ZXJDb3B5cmlnaHQgPSAoe1xuICBieSxcbiAgY2xhc3NOYW1lLFxuICBocmVmLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgeWVhcixcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5mb290ZXIuY29weXJpZ2h0LCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1mb290ZXItY29weXJpZ2h0XCIsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW46IFtcbiAgICBcIlxceEE5IFwiLFxuICAgIHllYXIsXG4gICAgaHJlZiA/IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJhXCIsIHsgaHJlZiwgY2xhc3NOYW1lOiB0aGVtZS5ocmVmLCBjaGlsZHJlbjogYnkgfSkgOiAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1mb290ZXItY29weXJpZ2h0LXNwYW5cIiwgY2xhc3NOYW1lOiB0aGVtZS5zcGFuLCBjaGlsZHJlbjogYnkgfSlcbiAgXSB9KTtcbn07XG5cbmV4cG9ydCB7IEZvb3RlckNvcHlyaWdodCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Rm9vdGVyQ29weXJpZ2h0Lm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgRm9vdGVyRGl2aWRlciA9ICh7IGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5mb290ZXIuZGl2aWRlciwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImhyXCIsIHsgXCJkYXRhLXRlc3RpZFwiOiBcImZvb3Rlci1kaXZpZGVyXCIsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcyB9KTtcbn07XG5cbmV4cG9ydCB7IEZvb3RlckRpdmlkZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZvb3RlckRpdmlkZXIubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBGb290ZXJJY29uID0gKHtcbiAgYXJpYUxhYmVsLFxuICBjbGFzc05hbWUsXG4gIGhyZWYsXG4gIGljb246IEljb24sXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmZvb3Rlci5pY29uLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2hpbGRyZW46IGhyZWYgPyAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwiYVwiLFxuICAgIHtcbiAgICAgIFwiYXJpYS1sYWJlbFwiOiBhcmlhTGFiZWwsXG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtZm9vdGVyLWljb25cIixcbiAgICAgIGhyZWYsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goSWNvbiwgeyBjbGFzc05hbWU6IHRoZW1lLnNpemUgfSlcbiAgICB9XG4gICkgOiAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWZvb3Rlci1pY29uXCIsIGNsYXNzTmFtZTogdGhlbWUuc2l6ZSwgLi4ucHJvcHMgfSkgfSk7XG59O1xuXG5leHBvcnQgeyBGb290ZXJJY29uIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Gb290ZXJJY29uLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgRm9vdGVyTGluayA9ICh7XG4gIGFzOiBDb21wb25lbnQgPSBcImFcIixcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgaHJlZixcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuZm9vdGVyLmdyb3VwTGluay5saW5rLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwibGlcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goQ29tcG9uZW50LCB7IGhyZWYsIGNsYXNzTmFtZTogdGhlbWUuaHJlZiwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pIH0pO1xufTtcblxuZXhwb3J0IHsgRm9vdGVyTGluayB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Rm9vdGVyTGluay5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IEZvb3RlckxpbmtHcm91cCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGNvbCA9IGZhbHNlLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5mb290ZXIuZ3JvdXBMaW5rLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwidWxcIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiZm9vdGVyLWdyb3VwTGlua1wiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY29sICYmIHRoZW1lLmNvbCwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcblxuZXhwb3J0IHsgRm9vdGVyTGlua0dyb3VwIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Gb290ZXJMaW5rR3JvdXAubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBGb290ZXJUaXRsZSA9ICh7XG4gIGFzOiBDb21wb25lbnQgPSBcImgyXCIsXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIHRpdGxlLFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmZvb3Rlci50aXRsZSwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChDb21wb25lbnQsIHsgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWZvb3Rlci10aXRsZVwiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuOiB0aXRsZSB9KTtcbn07XG5cbmV4cG9ydCB7IEZvb3RlclRpdGxlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Gb290ZXJUaXRsZS5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBGb290ZXJCcmFuZCB9IGZyb20gJy4vRm9vdGVyQnJhbmQubWpzJztcbmltcG9ydCB7IEZvb3RlckNvcHlyaWdodCB9IGZyb20gJy4vRm9vdGVyQ29weXJpZ2h0Lm1qcyc7XG5pbXBvcnQgeyBGb290ZXJEaXZpZGVyIH0gZnJvbSAnLi9Gb290ZXJEaXZpZGVyLm1qcyc7XG5pbXBvcnQgeyBGb290ZXJJY29uIH0gZnJvbSAnLi9Gb290ZXJJY29uLm1qcyc7XG5pbXBvcnQgeyBGb290ZXJMaW5rIH0gZnJvbSAnLi9Gb290ZXJMaW5rLm1qcyc7XG5pbXBvcnQgeyBGb290ZXJMaW5rR3JvdXAgfSBmcm9tICcuL0Zvb3RlckxpbmtHcm91cC5tanMnO1xuaW1wb3J0IHsgRm9vdGVyVGl0bGUgfSBmcm9tICcuL0Zvb3RlclRpdGxlLm1qcyc7XG5cbmNvbnN0IEZvb3RlckNvbXBvbmVudCA9ICh7XG4gIGJnRGFyayA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBjb250YWluZXIgPSBmYWxzZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuZm9vdGVyLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwiZm9vdGVyXCIsXG4gICAge1xuICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWZvb3RlclwiLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3QuYmFzZSwgYmdEYXJrICYmIHRoZW1lLnJvb3QuYmdEYXJrLCBjb250YWluZXIgJiYgdGhlbWUucm9vdC5jb250YWluZXIsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApO1xufTtcbkZvb3RlckNvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiRm9vdGVyXCI7XG5Gb290ZXJDb3B5cmlnaHQuZGlzcGxheU5hbWUgPSBcIkZvb3Rlci5Db3B5cmlnaHRcIjtcbkZvb3RlckxpbmsuZGlzcGxheU5hbWUgPSBcIkZvb3Rlci5MaW5rXCI7XG5Gb290ZXJCcmFuZC5kaXNwbGF5TmFtZSA9IFwiRm9vdGVyLkJyYW5kXCI7XG5Gb290ZXJMaW5rR3JvdXAuZGlzcGxheU5hbWUgPSBcIkZvb3Rlci5MaW5rR3JvdXBcIjtcbkZvb3Rlckljb24uZGlzcGxheU5hbWUgPSBcIkZvb3Rlci5JY29uXCI7XG5Gb290ZXJUaXRsZS5kaXNwbGF5TmFtZSA9IFwiRm9vdGVyLlRpdGxlXCI7XG5Gb290ZXJEaXZpZGVyLmRpc3BsYXlOYW1lID0gXCJGb290ZXIuRGl2aWRlclwiO1xuY29uc3QgRm9vdGVyID0gT2JqZWN0LmFzc2lnbihGb290ZXJDb21wb25lbnQsIHtcbiAgQ29weXJpZ2h0OiBGb290ZXJDb3B5cmlnaHQsXG4gIExpbms6IEZvb3RlckxpbmssXG4gIExpbmtHcm91cDogRm9vdGVyTGlua0dyb3VwLFxuICBCcmFuZDogRm9vdGVyQnJhbmQsXG4gIEljb246IEZvb3Rlckljb24sXG4gIFRpdGxlOiBGb290ZXJUaXRsZSxcbiAgRGl2aWRlcjogRm9vdGVyRGl2aWRlclxufSk7XG5cbmV4cG9ydCB7IEZvb3RlciwgRm9vdGVyQ29tcG9uZW50IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Gb290ZXIubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4cywganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEZhUXVvdGVSaWdodCB9IGZyb20gJ3JlYWN0LWljb25zL2ZhNic7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IEhSSWNvbiA9IGZvcndhcmRSZWYoXG4gICh7IHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCBpY29uOiBJY29uID0gRmFRdW90ZVJpZ2h0LCBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuaHIuaWNvbiwgY3VzdG9tVGhlbWUpO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUuYmFzZSwgY2hpbGRyZW46IFtcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgIFwiaHJcIixcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5ockxpbmUsIGNsYXNzTmFtZSksXG4gICAgICAgICAgcm9sZTogXCJzZXBhcmF0b3JcIixcbiAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtaHItaWNvblwiLFxuICAgICAgICAgIHJlZixcbiAgICAgICAgICAuLi5wcm9wc1xuICAgICAgICB9XG4gICAgICApLFxuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUuaWNvbi5iYXNlLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgY2xhc3NOYW1lOiB0aGVtZS5pY29uLmljb24gfSkgfSlcbiAgICBdIH0pO1xuICB9XG4pO1xuXG5leHBvcnQgeyBIUkljb24gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUhSSWNvbi5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBIUlNxdWFyZSA9IGZvcndhcmRSZWYoXG4gICh7IHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuaHIuc3F1YXJlLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImhyXCIsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLFxuICAgICAgICByb2xlOiBcInNlcGFyYXRvclwiLFxuICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtaHItc3F1YXJlXCIsXG4gICAgICAgIHJlZixcbiAgICAgICAgLi4ucHJvcHNcbiAgICAgIH1cbiAgICApO1xuICB9XG4pO1xuXG5leHBvcnQgeyBIUlNxdWFyZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SFJTcXVhcmUubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4cywganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgSFJUZXh0ID0gZm9yd2FyZFJlZihcbiAgKHsgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIHRleHQsIGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5oci50ZXh0LCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5iYXNlLCBjaGlsZHJlbjogW1xuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgXCJoclwiLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmhyTGluZSwgY2xhc3NOYW1lKSxcbiAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtaHItdGV4dFwiLFxuICAgICAgICAgIHJvbGU6IFwic2VwYXJhdG9yXCIsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIC4uLnByb3BzXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUudGV4dCwgY2hpbGRyZW46IHRleHQgfSlcbiAgICBdIH0pO1xuICB9XG4pO1xuXG5leHBvcnQgeyBIUlRleHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUhSVGV4dC5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBIUlRyaW1tZWQgPSBmb3J3YXJkUmVmKFxuICAoeyB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmhyLnRyaW1tZWQsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwiaHJcIixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksXG4gICAgICAgIHJvbGU6IFwic2VwYXJhdG9yXCIsXG4gICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1oci10cmltbWVkXCIsXG4gICAgICAgIHJlZixcbiAgICAgICAgLi4ucHJvcHNcbiAgICAgIH1cbiAgICApO1xuICB9XG4pO1xuXG5leHBvcnQgeyBIUlRyaW1tZWQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUhSVHJpbW1lZC5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgSFJJY29uIH0gZnJvbSAnLi9IUkljb24ubWpzJztcbmltcG9ydCB7IEhSU3F1YXJlIH0gZnJvbSAnLi9IUlNxdWFyZS5tanMnO1xuaW1wb3J0IHsgSFJUZXh0IH0gZnJvbSAnLi9IUlRleHQubWpzJztcbmltcG9ydCB7IEhSVHJpbW1lZCB9IGZyb20gJy4vSFJUcmltbWVkLm1qcyc7XG5cbmNvbnN0IEhSQ29tcG9uZW50ID0gZm9yd2FyZFJlZigoeyB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5oci5yb290LCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiaHJcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgcm9sZTogXCJzZXBhcmF0b3JcIiwgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWhyXCIsIHJlZiwgLi4ucHJvcHMgfSk7XG59KTtcbkhSQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJIUlwiO1xuSFJUcmltbWVkLmRpc3BsYXlOYW1lID0gXCJIUi5UcmltbWVkXCI7XG5IUkljb24uZGlzcGxheU5hbWUgPSBcIkhSLkljb25cIjtcbkhSVGV4dC5kaXNwbGF5TmFtZSA9IFwiSFIuVGV4dFwiO1xuSFJTcXVhcmUuZGlzcGxheU5hbWUgPSBcIkhSLlNxdWFyZVwiO1xuY29uc3QgSFIgPSBPYmplY3QuYXNzaWduKEhSQ29tcG9uZW50LCB7XG4gIFRyaW1tZWQ6IEhSVHJpbW1lZCxcbiAgSWNvbjogSFJJY29uLFxuICBUZXh0OiBIUlRleHQsXG4gIFNxdWFyZTogSFJTcXVhcmVcbn0pO1xuXG5leHBvcnQgeyBIUiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SFIubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4cywganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBMaXN0SXRlbSA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGljb246IEljb24sIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkubGlzdC5pdGVtLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcImxpXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLndpdGhJY29uW0ljb24gPyBcIm9uXCIgOiBcIm9mZlwiXSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuOiBbXG4gICAgSWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmljb24pIH0pLFxuICAgIGNoaWxkcmVuXG4gIF0gfSk7XG59O1xuXG5leHBvcnQgeyBMaXN0SXRlbSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TGlzdEl0ZW0ubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgTGlzdEl0ZW0gfSBmcm9tICcuL0xpc3RJdGVtLm1qcyc7XG5cbmNvbnN0IExpc3RDb21wb25lbnQgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICB1bnN0eWxlZCxcbiAgbmVzdGVkLFxuICBvcmRlcmVkLFxuICBob3Jpem9udGFsLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5saXN0LCBjdXN0b21UaGVtZSk7XG4gIGNvbnN0IENvbXBvbmVudCA9IG9yZGVyZWQgPyBcIm9sXCIgOiBcInVsXCI7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIENvbXBvbmVudCxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgIHRoZW1lLnJvb3QuYmFzZSxcbiAgICAgICAgdGhlbWUucm9vdC5vcmRlcmVkW29yZGVyZWQgPyBcIm9uXCIgOiBcIm9mZlwiXSxcbiAgICAgICAgdW5zdHlsZWQgJiYgdGhlbWUucm9vdC51bnN0eWxlZCxcbiAgICAgICAgbmVzdGVkICYmIHRoZW1lLnJvb3QubmVzdGVkLFxuICAgICAgICBob3Jpem9udGFsICYmIHRoZW1lLnJvb3QuaG9yaXpvbnRhbCxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlblxuICAgIH1cbiAgKTtcbn07XG5MaXN0Q29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJMaXN0XCI7XG5MaXN0SXRlbS5kaXNwbGF5TmFtZSA9IFwiTGlzdC5JdGVtXCI7XG5jb25zdCBMaXN0ID0gT2JqZWN0LmFzc2lnbihMaXN0Q29tcG9uZW50LCB7IEl0ZW06IExpc3RJdGVtIH0pO1xuXG5leHBvcnQgeyBMaXN0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1MaXN0Lm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCwganN4cyB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgTGlzdEdyb3VwSXRlbSA9ICh7XG4gIGFjdGl2ZTogaXNBY3RpdmUsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGhyZWYsXG4gIGljb246IEljb24sXG4gIG9uQ2xpY2ssXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICBkaXNhYmxlZCxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5saXN0R3JvdXAuaXRlbSwgY3VzdG9tVGhlbWUpO1xuICBjb25zdCBpc0xpbmsgPSB0eXBlb2YgaHJlZiAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgY29uc3QgQ29tcG9uZW50ID0gaXNMaW5rID8gXCJhXCIgOiBcImJ1dHRvblwiO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImxpXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICBDb21wb25lbnQsXG4gICAge1xuICAgICAgaHJlZixcbiAgICAgIG9uQ2xpY2ssXG4gICAgICB0eXBlOiBpc0xpbmsgPyB2b2lkIDAgOiBcImJ1dHRvblwiLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgIHRoZW1lLmxpbmsuYWN0aXZlW2lzQWN0aXZlID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgIHRoZW1lLmxpbmsuZGlzYWJsZWRbZGlzYWJsZWQgPyBcIm9uXCIgOiBcIm9mZlwiXSxcbiAgICAgICAgdGhlbWUubGluay5iYXNlLFxuICAgICAgICB0aGVtZS5saW5rLmhyZWZbaXNMaW5rID8gXCJvblwiIDogXCJvZmZcIl1cbiAgICAgICksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgIEljb24gJiYgLyogQF9fUFVSRV9fICovIGpzeChJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWxpc3QtZ3JvdXAtaXRlbS1pY29uXCIsIGNsYXNzTmFtZTogdGhlbWUubGluay5pY29uIH0pLFxuICAgICAgICBjaGlsZHJlblxuICAgICAgXVxuICAgIH1cbiAgKSB9KTtcbn07XG5cbmV4cG9ydCB7IExpc3RHcm91cEl0ZW0gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUxpc3RHcm91cEl0ZW0ubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgTGlzdEdyb3VwSXRlbSB9IGZyb20gJy4vTGlzdEdyb3VwSXRlbS5tanMnO1xuXG5jb25zdCBMaXN0R3JvdXBDb21wb25lbnQgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmxpc3RHcm91cCwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcInVsXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3QuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcbkxpc3RHcm91cENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiTGlzdEdyb3VwXCI7XG5MaXN0R3JvdXBJdGVtLmRpc3BsYXlOYW1lID0gXCJMaXN0R3JvdXAuSXRlbVwiO1xuY29uc3QgTGlzdEdyb3VwID0gT2JqZWN0LmFzc2lnbihMaXN0R3JvdXBDb21wb25lbnQsIHtcbiAgSXRlbTogTGlzdEdyb3VwSXRlbVxufSk7XG5cbmV4cG9ydCB7IExpc3RHcm91cCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TGlzdEdyb3VwLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IE5hdmJhckNvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VOYXZiYXJDb250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChOYXZiYXJDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlTmF2QmFyQ29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIE5hdmJhckNvbnRleHQgcHJvdmlkZXIhXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgeyBOYXZiYXJDb250ZXh0LCB1c2VOYXZiYXJDb250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1OYXZiYXJDb250ZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZU5hdmJhckNvbnRleHQgfSBmcm9tICcuL05hdmJhckNvbnRleHQubWpzJztcblxuY29uc3QgTmF2YmFyQnJhbmQgPSAoe1xuICBhczogQ29tcG9uZW50ID0gXCJhXCIsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUgfSA9IHVzZU5hdmJhckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLmJyYW5kLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KENvbXBvbmVudCwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcblxuZXhwb3J0IHsgTmF2YmFyQnJhbmQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU5hdmJhckJyYW5kLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZU5hdmJhckNvbnRleHQgfSBmcm9tICcuL05hdmJhckNvbnRleHQubWpzJztcblxuY29uc3QgTmF2YmFyQ29sbGFwc2UgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUsIGlzT3BlbiB9ID0gdXNlTmF2YmFyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuY29sbGFwc2UsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtbmF2YmFyLWNvbGxhcHNlXCIsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgdGhlbWUuaGlkZGVuWyFpc09wZW4gPyBcIm9uXCIgOiBcIm9mZlwiXSwgY2xhc3NOYW1lKSxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJ1bFwiLCB7IGNsYXNzTmFtZTogdGhlbWUubGlzdCwgY2hpbGRyZW4gfSlcbiAgICB9XG4gICk7XG59O1xuXG5leHBvcnQgeyBOYXZiYXJDb2xsYXBzZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TmF2YmFyQ29sbGFwc2UubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlTmF2YmFyQ29udGV4dCB9IGZyb20gJy4vTmF2YmFyQ29udGV4dC5tanMnO1xuXG5jb25zdCBOYXZiYXJMaW5rID0gKHtcbiAgYWN0aXZlLFxuICBhczogQ29tcG9uZW50ID0gXCJhXCIsXG4gIGRpc2FibGVkLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgb25DbGljayxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBzZXRJc09wZW4gfSA9IHVzZU5hdmJhckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLmxpbmssIGN1c3RvbVRoZW1lKTtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZXZlbnQpID0+IHtcbiAgICBzZXRJc09wZW4oZmFsc2UpO1xuICAgIG9uQ2xpY2s/LihldmVudCk7XG4gIH07XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwibGlcIiwgeyBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBDb21wb25lbnQsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICB0aGVtZS5iYXNlLFxuICAgICAgICBhY3RpdmUgJiYgdGhlbWUuYWN0aXZlLm9uLFxuICAgICAgICAhYWN0aXZlICYmICFkaXNhYmxlZCAmJiB0aGVtZS5hY3RpdmUub2ZmLFxuICAgICAgICB0aGVtZS5kaXNhYmxlZFtkaXNhYmxlZCA/IFwib25cIiA6IFwib2ZmXCJdLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICksXG4gICAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW5cbiAgICB9XG4gICkgfSk7XG59O1xuXG5leHBvcnQgeyBOYXZiYXJMaW5rIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1OYXZiYXJMaW5rLm1qcy5tYXBcbiIsIi8vIFRISVMgRklMRSBJUyBBVVRPIEdFTkVSQVRFRFxuaW1wb3J0IHsgR2VuSWNvbiB9IGZyb20gJy4uL2xpYi9pbmRleC5tanMnO1xuZXhwb3J0IGZ1bmN0aW9uIEZhNTAwUHggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAzLjMgMzQ0LjNjLTYuNS0xNC4yLTYuOS0xOC4zIDcuNC0yMy4xIDI1LjYtOCA4IDkuMiA0My4yIDQ5LjJoLjN2LTkzLjljMS4yLTUwLjIgNDQtOTIuMiA5Ny43LTkyLjIgNTMuOSAwIDk3LjcgNDMuNSA5Ny43IDk2LjggMCA2My40LTYwLjggMTEzLjItMTI4LjUgOTMuMy0xMC41LTQuMi0yLjEtMzEuNyA4LjUtMjguNiA1MyAwIDg5LjQtMTAuMSA4OS40LTY0LjQgMC02MS03Ny4xLTg5LjYtMTE2LjktNDQuNi0yMy41IDI2LjQtMTcuNiA0Mi4xLTE3LjYgMTU3LjYgNTAuNyAzMSAxMTguMyAyMiAxNjAuNC0yMC4xIDI0LjgtMjQuOCAzOC41LTU4IDM4LjUtOTMgMC0zNS4yLTEzLjgtNjguMi0zOC44LTkzLjMtMjQuOC0yNC44LTU3LjgtMzguNS05My4zLTM4LjVzLTY4LjggMTMuOC05My41IDM4LjVjLS4zLjMtMTYgMTYuNS0yMS4yIDIzLjlsLS41LjZjLTMuMyA0LjctNi4zIDkuMS0yMC4xIDYuMS02LjktMS43LTE0LjMtNS44LTE0LjMtMTEuOFYyMGMwLTUgMy45LTEwLjUgMTAuNS0xMC41aDI0MS4zYzguMyAwIDguMyAxMS42IDguMyAxNS4xIDAgMy45IDAgMTUuMS04LjMgMTUuMUgxMzAuM3YxMzIuOWguM2MxMDQuMi0xMDkuOCAyODIuOC0zNiAyODIuOCAxMDguOSAwIDE3OC4xLTI0NC44IDIyMC4zLTMxMC4xIDYyLjh6bTYzLjMtMjYwLjhjLS41IDQuMiA0LjYgMjQuNSAxNC42IDIwLjZDMzA2IDU2LjYgMzg0IDE0NC41IDM5MC42IDE0NC41YzQuOCAwIDIyLjgtMTUuMyAxNC4zLTIyLjgtOTMuMi04OS0yMzQuNS01Ny0yMzguMy0zOC4yek0zOTMgNDE0LjdDMjgzIDUyNC42IDk0IDQ3NS41IDYxIDMxMC41YzAtMTIuMi0zMC40LTcuNC0yOC45IDMuMyAyNCAxNzMuNCAyNDYgMjU2LjkgMzgxLjYgMTIxLjMgNi45LTcuOC0xMi42LTI4LjQtMjAuNy0yMC40ek0yMTMuNiAzMDYuNmMwIDQgNC4zIDcuMyA1LjUgOC41IDMgMyA2LjEgNC40IDguNSA0LjQgMy44IDAgMi42LjIgMjIuMy0xOS41IDE5LjYgMTkuMyAxOS4xIDE5LjUgMjIuMyAxOS41IDUuNCAwIDE4LjUtMTAuNCAxMC43LTE4LjJMMjY1LjYgMjg0bDE4LjItMTguMmM2LjMtNi44LTEwLjEtMjEuOC0xNi4yLTE1LjdMMjQ5LjcgMjY4Yy0xOC42LTE4LjgtMTguNC0xOS41LTIxLjUtMTkuNS01IDAtMTggMTEuNy0xMi40IDE3LjNMMjM0IDI4NGMtMTguMSAxNy45LTIwLjQgMTkuMi0yMC40IDIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFjY2Vzc2libGVJY29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyMy45IDI1NS44TDQxMSA0MTMuMWMtMy4zIDQwLjctNjMuOSAzNS4xLTYwLjYtNC45bDEwLTEyMi41LTQxLjEgMi4zYzEwLjEgMjAuNyAxNS44IDQzLjkgMTUuOCA2OC41IDAgNDEuMi0xNi4xIDc4LjctNDIuMyAxMDYuNWwtMzkuMy0zOS4zYzU3LjktNjMuNyAxMy4xLTE2Ny4yLTc0LTE2Ny4yLTI1LjkgMC00OS41IDkuOS02Ny4yIDI2TDczIDI0My4yYzIyLTIwLjcgNTAuMS0zNS4xIDgxLjQtNDAuMmw3NS4zLTg1LjctNDIuNi0yNC44LTUxLjYgNDZjLTMwIDI2LjgtNzAuNi0xOC41LTQwLjUtNDUuNGw2OC02MC43YzkuOC04LjggMjQuMS0xMC4yIDM1LjUtMy42IDAgMCAxMzkuMyA4MC45IDEzOS41IDgxLjEgMTYuMiAxMC4xIDIwLjcgMzYgNi4xIDUyLjZMMjg1LjcgMjI5bDEwNi4xLTUuOWMxOC41LTEuMSAzMy42IDE0LjQgMzIuMSAzMi43em0tNjQuOS0xNTRjMjguMSAwIDUwLjktMjIuOCA1MC45LTUwLjlDNDA5LjkgMjIuOCAzODcuMSAwIDM1OSAwYy0yOC4xIDAtNTAuOSAyMi44LTUwLjkgNTAuOSAwIDI4LjEgMjIuOCA1MC45IDUwLjkgNTAuOXpNMTc5LjYgNDU2LjVjLTgwLjYgMC0xMjcuNC05MC42LTgyLjctMTU2LjFsLTM5LjctMzkuN0MzNi40IDI4NyAyNCAzMjAuMyAyNCAzNTYuNGMwIDEzMC43IDE1MC43IDIwMS40IDI1MS40IDEyMi41bC0zOS43LTM5LjdjLTE2IDEwLjktMzUuMyAxNy4zLTU2LjEgMTcuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWNjdXNvZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIyLjEgMjUydi0xbC01MS4yLTY1LjhzLTEyIDEuNi0yNSAxNS4xYy05IDkuMy0yNDIuMSAyMzkuMS0yNDMuNCAyNDAuOS03IDEwIDEuNiA2LjggMTUuNyAxLjcuOCAwIDExNC41LTM2LjYgMTE0LjUtMzYuNi41LS42LS4xLS4xLjYtLjYtLjQtNS4xLS44LTI2LjItMS0yNy43LS42LTUuMiAyLjItNi45IDctOC45bDkyLjYtMzMuOGMuNi0uOCA4OC41LTgxLjcgOTAuMi04My4zem0xNjAuMSAxMjAuMWMxMy4zIDE2LjEgMjAuNyAxMy4zIDMwLjggOS4zIDMuMi0xLjIgMTE1LjQtNDcuNiAxMTcuOC00OC45IDgtNC4zLTEuNy0xNi43LTcuMi0yMy40LTIuMS0yLjUtMjA1LjEtMjQ1LjYtMjA3LjItMjQ4LjMtOS43LTEyLjItMTQuMy0xMi45LTM4LjQtMTIuOC0xMC4yIDAtMTA2LjguNS0xMTYuNS42LTE5LjIuMS0zMi45LS4zLTE5LjIgMTYuOUMyNTAgNzUgNDc2LjUgMzY1LjIgNDgyLjIgMzcyLjF6bTE1Mi43IDEuNmMtMi4zLS4zLTI0LjYtNC43LTM4LTcuMiAwIDAtMTE1IDUwLjQtMTE3LjUgNTEuNi0xNiA3LjMtMjYuOS0zLjItMzYuNy0xNC42bC01Ny4xLTc0Yy01LjQtLjktNjAuNC05LjYtNjUuMy05LjMtMy4xLjItOS42LjgtMTQuNCAyLjktNC45IDIuMS0xNDUuMiA1Mi44LTE1MC4yIDU0LjctNS4xIDItMTEuNCAzLjYtMTEuMSA3LjYuMiAyLjUgMiAyLjYgNC42IDMuNSAyLjcuOCAzMDAuOSA2Ny42IDMwOCA2OS4xIDE1LjYgMy4zIDM4LjUgMTAuNSA1My42IDEuNyAyLjEtMS4yIDEyMy44LTc2LjQgMTI1LjgtNzcuOCA1LjQtNCA0LjMtNi44LTEuNy04LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFjcXVpc2l0aW9uc0luY29ycG9yYXRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTcuNDUgNDY4LjJjLTEuMi03LjctMS4zLTcuNi05LjYtNy42LTk5LjguMi0xMTEuOC0yLjQtMTEyLjctMi42LTEyLjMtMS43LTIwLjYtMTAuNS0yMS0yMy4xLS4xLTEuNi0uMi03MS42LTEtMTI5LjEtLjEtNC43IDEuNi02LjQgNS45LTcuNSAxMi41LTMgMjQuOS02LjEgMzcuMy05LjcgNC4zLTEuMyA2LjgtLjIgOC40IDMuNSA0LjUgMTAuMyA4LjggMjAuNiAxMy4yIDMwLjkgMS42IDMuNy4xIDQuNC0zLjQgNC40LTEwLS4yLTIwLS4xLTMwLjQtLjF2MjdoMTE2Yy0xLjQtOS41LTIuNy0xOC4xLTQtMjcuNS03IDAtMTMuOC40LTIwLjQtLjEtMjIuNi0xLjYtMTguMy00LjQtODQtMTU4LjYtOC44LTIwLjEtMjcuOS02Mi4xLTM2LjUtODkuMi00LjQtMTQgNS41LTI1LjQgMTguOS0yNi42IDE4LjYtMS43IDM3LjUtMS42IDU2LjItMiAyMC42LS40IDQxLjItLjQgNjEuOC0uNSAzLjEgMCA0LTEuNCA0LjMtNC4zIDEuMi05LjggMi43LTE5LjUgNC0yOS4yLjgtNS4zIDEuNi0xMC43IDIuNC0xNi4xTDIzLjc1IDBjLTMuNiAwLTUuMyAxLjEtNC42IDUuMyAyLjIgMTMuMi0uOC44IDYuNCA0NS4zIDYzLjQgMCA3MS44LjkgMTAxLjguNSAxMi4zLS4yIDM3IDMuNSAzNy43IDIyLjEuNCAxMS40LTEuMSAxMS4zLTMyLjYgODcuNC01My44IDEyOS44LTUwLjcgMTIwLjMtNjcuMyAxNjEtMS43IDQuMS0zLjYgNS4yLTcuNiA1LjItOC41LS4yLTE3LS4zLTI1LjQuMS0xLjkuMS01LjIgMS44LTUuNSAzLjItMS41IDguMS0yLjIgMTYuMy0zLjIgMjQuOWgxMTQuM3YtMjcuNmMtNi45IDAtMzMuNS40LTM1LjMtMi45IDUuMy0xMi4zIDEwLjQtMjQuNCAxNS43LTM2LjcgMTYuMyA0IDMxLjkgNy44IDQ3LjYgMTEuNyAzLjQuOSA0LjYgMyA0LjYgNi44LS4xIDQyLjkuMSA4NS45LjIgMTI4LjggMCAxMC4yLTUuNSAxOS4xLTE0LjkgMjMuMS02LjUgMi43LTMuMyAzLjQtMTIxLjQgMi40LTUuMyAwLTcuMSAyLTcuNiA2LjgtMS41IDEyLjktMi45IDI1LjktNSAzOC44LS44IDUgMS4zIDUuNyA1LjMgNS43IDE4My4yLjYtMzAuNyAwIDMzNy4xIDAtMi41LTE1LTQuNC0yOS40LTYuNi00My43em0tMTc0LjktMjA1LjdjLTEzLjMtNC4yLTI2LjYtOC4yLTM5LjktMTIuNWE0NC41MyA0NC41MyAwIDAgMS01LjgtMi45YzE3LjItNDQuMyAzNC4yLTg4LjEgNTEuMy0xMzIuMSA3LjUgMi40IDcuOS0uOCA5LjQgMCA5LjMgMjIuNSAxOC4xIDYwLjEgMjcgODIuOCA2LjYgMTYuNyAxMyAzMy41IDE5LjcgNTAuOWEzNS43OCAzNS43OCAwIDAgMS0zLjkgMi4xYy0xMy4xIDMuOS0yNi40IDcuNS0zOS40IDExLjdhMjcuNjYgMjcuNjYgMCAwIDEtMTguNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBZG4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDE2Ny41bDY0LjkgOTguOEgxODMuMWw2NC45LTk4Ljh6TTQ5NiAyNTZjMCAxMzYuOS0xMTEuMSAyNDgtMjQ4IDI0OFMwIDM5Mi45IDAgMjU2IDExMS4xIDggMjQ4IDhzMjQ4IDExMS4xIDI0OCAyNDh6bS05OS44IDgyLjdMMjQ4IDExNS41IDk5LjggMzM4LjdoMzAuNGwzMy42LTUxLjdoMTY4LjZsMzMuNiA1MS43aDMwLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFkdmVyc2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4Mi4xIDMySDI4LjdDNS44IDMyIDAgMzcuOSAwIDYwLjl2MzkwLjJDMCA0NzQuNCA1LjggNDgwIDI4LjcgNDgwaDQ1My40YzI0LjQgMCAyOS45LTUuMiAyOS45LTI5LjdWNjIuMmMwLTI0LjYtNS40LTMwLjItMjkuOS0zMC4yek0xNzguNCAyMjAuM2MtMjcuNS0yMC4yLTcyLjEtOC43LTg0LjIgMjMuNC00LjMgMTEuMS05LjMgOS41LTE3LjUgOC4zLTkuNy0xLjUtMTcuMi0zLjItMjIuNS01LjUtMjguOC0xMS40IDguNi01NS4zIDI0LjktNjQuMyA0MS4xLTIxLjQgODMuNC0yMi4yIDEyNS4zLTQuOCA0MC45IDE2LjggMzQuNSA1OS4yIDM0LjUgMTI4LjUgMi43IDI1LjgtNC4zIDU4LjMgOS4zIDg4LjggMS45IDQuNC40IDcuOS0yLjcgMTAuNy04LjQgNi43LTM5LjMgMi4yLTQ2LjYtNy40LTEuOS0yLjItMS44LTMuNi0zLjktNi4yLTMuNi0zLjktNy4zLTIuMi0xMS45IDEtNTcuNCAzNi40LTE0MC4zIDIxLjQtMTQ3LTQzLjMtMy4xLTI5LjMgMTIuNC01Ny4xIDM5LjYtNzEgMzguMi0xOS41IDExMi4yLTExLjggMTE0LTMwLjkgMS4xLTEwLjItMS45LTIwLjEtMTEuMy0yNy4zem0yODYuNyAyMjJjMCAxNS4xLTExLjEgOS45LTE3LjggOS45SDUyLjRjLTcuNCAwLTE4LjIgNC44LTE3LjgtMTAuNy40LTEzLjkgMTAuNS05LjEgMTcuMS05LjEgMTMyLjMtLjQgMjY0LjUtLjQgMzk2LjggMCA2LjggMCAxNi42LTQuNCAxNi42IDkuOXptMy44LTM0MC41djI5MWMwIDUuNy0uNyAxMy45LTguMSAxMy45LTEyLjQtLjQtMjcuNSA3LjEtMzYuMS01LjYtNS44LTguNy03LjgtNC0xMi40LTEuMi01My40IDI5LjctMTI4LjEgNy4xLTE0NC40LTg1LjItNi4xLTMzLjQtLjctNjcuMSAxNS43LTEwMCAxMS44LTIzLjkgNTYuOS03Ni4xIDEzNi4xLTMwLjV2LTcxYzAtMjYuMi0uMS0yNi4yIDI2LTI2LjIgMy4xIDAgNi42LjQgOS43IDAgMTAuMS0uOCAxMy42IDQuNCAxMy42IDE0LjMtLjEuMi0uMS4zLS4xLjV6bS01MS41IDIzMi4zYy0xOS41IDQ3LjYtNzIuOSA0My4zLTkwIDUuMi0xNS4xLTMzLjMtMTUuNS02OC4yLjQtMTAxLjUgMTYuMy0zNC4xIDU5LjctMzUuNyA4MS41LTQuOCAyMC42IDI4LjggMTQuOSA4NC42IDguMSAxMDEuMXptLTI5NC44IDM1LjNjLTcuNS0xLjMtMzMtMy4zLTMzLjctMjcuOC0uNC0xMy45IDcuOC0yMyAxOS44LTI1LjggMjQuNC01LjkgNDkuMy05LjkgNzMuNy0xNC43IDguOS0yIDcuNCA0LjQgNy44IDkuNSAxLjQgMzMtMjYuMSA1OS4yLTY3LjYgNTguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWZmaWxpYXRldGhlbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU5LjcgMjM3LjRDMTA4LjQgMzA4LjMgNDMuMSAzNDguMiAxNCAzMjYuNi0xNS4yIDMwNC45IDIuOCAyMzAgNTQuMiAxNTkuMWM1MS4zLTcwLjkgMTE2LjYtMTEwLjggMTQ1LjctODkuMiAyOS4xIDIxLjYgMTEuMSA5Ni42LTQwLjIgMTY3LjV6bTM1MS4yLTU3LjNDNDM3LjEgMzAzLjUgMzE5IDM2Ny44IDI0Ni40IDMyMy43Yy0yNS0xNS4yLTQxLjMtNDEuMi00OS03My44LTMzLjYgNjQuOC05Mi44IDExMy44LTE2NC4xIDEzMy4yIDQ5LjggNTkuMyAxMjQuMSA5Ni45IDIwNyA5Ni45IDE1MCAwIDI3MS42LTEyMy4xIDI3MS42LTI3NC45LjEtOC41LS4zLTE2LjgtMS0yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWlyYm5iIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAzNzMuMTJjLTI1LjI0LTMxLjY3LTQwLjA4LTU5LjQzLTQ1LTgzLjE4LTIyLjU1LTg4IDExMi42MS04OCA5MC4wNiAwLTUuNDUgMjQuMjUtMjAuMjkgNTItNDUgODMuMTh6bTEzOC4xNSA3My4yM2MtNDIuMDYgMTguMzEtODMuNjctMTAuODgtMTE5LjMtNTAuNDcgMTAzLjktMTMwLjA3IDQ2LjExLTIwMC0xOC44NS0yMDAtNTQuOTIgMC04NS4xNiA0Ni41MS03My4yOCAxMDAuNSA2LjkzIDI5LjE5IDI1LjIzIDYyLjM5IDU0LjQzIDk5LjUtMzIuNTMgMzYuMDUtNjAuNTUgNTIuNjktODUuMTUgNTQuOTItNTAgNy40My04OS4xMS00MS4wNi03MS4zLTkxLjA5IDE1LjEtMzkuMTYgMTExLjcyLTIzMS4xOCAxMTUuODctMjQxLjU2IDE1Ljc1LTMwLjA3IDI1LjU2LTU3LjQgNTkuMzgtNTcuNCAzMi4zNCAwIDQzLjQgMjUuOTQgNjAuMzcgNTkuODcgMzYgNzAuNjIgODkuMzUgMTc3LjQ4IDExNC44NCAyMzkuMDkgMTMuMTcgMzMuMDctMS4zNyA3MS4yOS0zNy4wMSA4Ni42NHptNDctMTM2LjEyQzI4MC4yNyAzNS45MyAyNzMuMTMgMzIgMjI0IDMyYy00NS41MiAwLTY0Ljg3IDMxLjY3LTg0LjY2IDcyLjc5QzMzLjE4IDMxNy4xIDIyLjg5IDM0Ny4xOSAyMiAzNDkuODEtMy4yMiA0MTkuMTQgNDguNzQgNDgwIDExMS42MyA0ODBjMjEuNzEgMCA2MC42MS02LjA2IDExMi4zNy02Mi40IDU4LjY4IDYzLjc4IDEwMS4yNiA2Mi40IDExMi4zNyA2Mi40IDYyLjg5LjA1IDExNC44NS02MC44NiA4OS42MS0xMzAuMTkuMDItMy44OS0xNi44Mi0zOC45LTE2LjgyLTM5LjU4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbGdvbGlhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyOS4zIDE4Mi42Yy00OS4zIDAtODkuMiAzOS45LTg5LjIgODkuMiAwIDQ5LjMgMzkuOSA4OS4yIDg5LjIgODkuMnM4OS4yLTM5LjkgODkuMi04OS4yYzAtNDkuMy00MC04OS4yLTg5LjItODkuMnptNjIuNyA1Ni42bC01OC45IDMwLjZjLTEuOC45LTMuOC0uNC0zLjgtMi4zVjIwMWMwLTEuNSAxLjMtMi43IDIuNy0yLjYgMjYuMiAxIDQ4LjkgMTUuNyA2MS4xIDM3LjEuNyAxLjMuMiAzLTEuMSAzLjd6TTM4OS4xIDMySDU4LjlDMjYuNCAzMiAwIDU4LjQgMCA5MC45VjQyMWMwIDMyLjYgMjYuNCA1OSA1OC45IDU5SDM4OWMzMi42IDAgNTguOS0yNi40IDU4LjktNTguOVY5MC45QzQ0OCA1OC40IDQyMS42IDMyIDM4OS4xIDMyem0tMjAyLjYgODQuN2MwLTEwLjggOC43LTE5LjUgMTkuNS0xOS41aDQ1LjNjMTAuOCAwIDE5LjUgOC43IDE5LjUgMTkuNXYxNS40YzAgMS44LTEuNyAzLTMuMyAyLjUtMTIuMy0zLjQtMjUuMS01LjEtMzguMS01LjEtMTMuNSAwLTI2LjcgMS44LTM5LjQgNS41LTEuNy41LTMuNC0uOC0zLjQtMi41di0xNS44em0tODQuNCAzN2w5LjItOS4yYzcuNi03LjYgMTkuOS03LjYgMjcuNSAwbDcuNyA3LjdjMS4xIDEuMSAxIDMtLjMgNC02LjIgNC41LTEyLjEgOS40LTE3LjYgMTQuOS01LjQgNS40LTEwLjQgMTEuMy0xNC44IDE3LjQtMSAxLjMtMi45IDEuNS00IC4zbC03LjctNy43Yy03LjYtNy41LTcuNi0xOS44IDAtMjcuNHptMTI3LjIgMjQ0LjhjLTcwIDAtMTI2LjYtNTYuNy0xMjYuNi0xMjYuNnM1Ni43LTEyNi42IDEyNi42LTEyNi42YzcwIDAgMTI2LjYgNTYuNiAxMjYuNiAxMjYuNiAwIDY5LjgtNTYuNyAxMjYuNi0xMjYuNiAxMjYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpcGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3Ny43NCAzMkg3MC4yNkMzMS40MSAzMiAwIDYzLjQxIDAgMTAyLjI2djMwNy40OEMwIDQ0OC41OSAzMS40MSA0ODAgNzAuMjYgNDgwaDMwNy40OGMzOC41MiAwIDY5Ljc2LTMxLjA4IDcwLjI2LTY5LjYtNDUuOTYtMjUuNjItMTEwLjU5LTYwLjM0LTE3MS42LTg4LjQ0LTMyLjA3IDQzLjk3LTg0LjE0IDgxLTE0OC42MiA4MS03MC41OSAwLTkzLjczLTQ1LjMtOTcuMDQtNzYuMzctMy45Ny0zOS4wMSAxNC44OC04MS41IDk5LjUyLTgxLjUgMzUuMzggMCA3OS4zNSAxMC4yNSAxMjcuMTMgMjQuOTYgMTYuNTMtMzAuMDkgMjYuNDUtNjAuMzQgMjYuNDUtNjAuMzRoLTE3OC4ydi0xNi43aDkyLjA4di0zMS4yNEg4OC4yOHYtMTkuMDFoMTA5LjQ0VjkyLjM0aDUwLjkydjUwLjQyaDEwOS40NHYxOS4wMUgyNDguNjN2MzEuMjRoODguNzdzLTE1LjIxIDQ2LjYyLTM4LjM1IDkwLjkyYzQ4LjkzIDE2LjcgMTAwLjAxIDM2LjA0IDE0OC42MiA1Mi43NFYxMDIuMjZDNDQ3LjgzIDYzLjU3IDQxNi40MyAzMiAzNzcuNzQgMzJ6TTQ3LjI4IDMyMi45NWMuOTkgMjAuMTcgMTAuMjUgNTMuNzMgNjkuOTMgNTMuNzMgNTIuMDcgMCA5Mi41OC0zOS42OCAxMTcuODctNzIuOS00NC42My0xOC42OC04NC40OC0zMS40MS0xMDkuNDQtMzEuNDEtNjcuNDUgMC03OS4zNSAzMy4wNi03OC4zNiA1MC41OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW1hem9uUGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDMyNS4zYzIuMy00LjIgNS4yLTQuOSA5LjctMi41IDEwLjQgNS42IDIwLjYgMTEuNCAzMS4yIDE2LjdhNTk1Ljg4IDU5NS44OCAwIDAgMCAxMjcuNCA0Ni4zIDYxNi42MSA2MTYuNjEgMCAwIDAgNjMuMiAxMS44IDYwMy4zMyA2MDMuMzMgMCAwIDAgOTUgNS4yYzE3LjQtLjQgMzQuOC0xLjggNTIuMS0zLjhhNjAzLjY2IDYwMy42NiAwIDAgMCAxNjMuMy00Mi44YzIuOS0xLjIgNS45LTIgOS4xLTEuMiA2LjcgMS44IDkgOSA0LjEgMTMuOWE3MCA3MCAwIDAgMS05LjYgNy40Yy0zMC43IDIxLjEtNjQuMiAzNi40LTk5LjYgNDcuOWE0NzMuMzEgNDczLjMxIDAgMCAxLTc1LjEgMTcuNiA0MzEgNDMxIDAgMCAxLTUzLjIgNC44IDIxLjMgMjEuMyAwIDAgMC0yLjUuM0gzMDhhMjEuMyAyMS4zIDAgMCAwLTIuNS0uM2MtMy42LS4yLTcuMi0uMy0xMC43LS40YTQyNi4zIDQyNi4zIDAgMCAxLTUwLjQtNS4zQTQ0OC40IDQ0OC40IDAgMCAxIDE2NCA0MjBhNDQzLjMzIDQ0My4zMyAwIDAgMS0xNDUuNi04N2MtMS44LTEuNi0zLTMuOC00LjQtNS43ek0xNzIgNjUuMWwtNC4zLjZhODAuOTIgODAuOTIgMCAwIDAtMzggMTUuMWMtMi40IDEuNy00LjYgMy41LTcuMSA1LjRhNC4yOSA0LjI5IDAgMCAxLS40LTEuNGMtLjQtMi43LS44LTUuNS0xLjMtOC4yLS43LTQuNi0zLTYuNi03LjYtNi42aC0xMS41Yy02LjkgMC04LjIgMS4zLTguMiA4LjJ2MjA5LjNjMCAxIDAgMiAuMSAzIC4yIDMgMiA0LjkgNC45IDUgNyAuMSAxNC4xLjEgMjEuMSAwIDIuOSAwIDQuNy0yIDUtNSAuMS0xIC4xLTIgLjEtM3YtNzIuNGMxLjEuOSAxLjcgMS40IDIuMiAxLjkgMTcuOSAxNC45IDM4LjUgMTkuOCA2MSAxNS40IDIwLjQtNCAzNC42LTE2LjUgNDMuOC0zNC45IDctMTMuOSA5LjktMjguNyAxMC4zLTQ0LjEuNS0xNy4xLTEuMi0zMy45LTguMS00OS44LTguNS0xOS42LTIyLjYtMzIuNS00My45LTM2LjktMy4yLS43LTYuNS0xLTkuOC0xLjUtMi44LS4xLTUuNS0uMS04LjMtLjF6TTEyNC42IDEwN2EzLjQ4IDMuNDggMCAwIDEgMS43LTMuM2MxMy43LTkuNSAyOC44LTE0LjUgNDUuNi0xMy4yIDE0LjkgMS4xIDI3LjEgOC40IDMzLjUgMjUuOSAzLjkgMTAuNyA0LjkgMjEuOCA0LjkgMzMgMCAxMC40LS44IDIwLjYtNCAzMC42LTYuOCAyMS4zLTIyLjQgMjkuNC00Mi42IDI4LjUtMTQtLjYtMjYuMi02LTM3LjQtMTMuOWEzLjU3IDMuNTcgMCAwIDEtMS43LTMuM2MuMS0xNC4xIDAtMjguMSAwLTQyLjJzLjEtMjggMC00Mi4xem0yMDUuNy00MS45Yy0xIC4xLTIgLjMtMi45LjRhMTQ4IDE0OCAwIDAgMC0yOC45IDQuMWMtNi4xIDEuNi0xMiAzLjgtMTcuOSA1LjgtMy42IDEuMi01LjQgMy44LTUuMyA3LjcuMSAzLjMtLjEgNi42IDAgOS45LjEgNC44IDIuMSA2LjEgNi44IDQuOSA3LjgtMiAxNS42LTQuMiAyMy41LTUuNyAxMi4zLTIuMyAyNC43LTMuMyAzNy4yLTEuNCA2LjUgMSAxMi42IDIuOSAxNi44IDguNCAzLjcgNC44IDUuMSAxMC41IDUuMyAxNi40LjMgOC4zLjIgMTYuNi4zIDI0LjlhNy44NCA3Ljg0IDAgMCAxLS4yIDEuNGMtLjUtLjEtLjkgMC0xLjMtLjFhMTgwLjU2IDE4MC41NiAwIDAgMC0zMi00LjljLTExLjMtLjYtMjIuNS4xLTMzLjMgMy45LTEyLjkgNC41LTIzLjMgMTIuMy0yOS40IDI0LjktNC43IDkuOC01LjQgMjAuMi0zLjkgMzAuNyAyIDE0IDkgMjQuOCAyMS40IDMxLjcgMTEuOSA2LjYgMjQuOCA3LjQgMzcuOSA1LjQgMTUuMS0yLjMgMjguNS04LjcgNDAuMy0xOC40YTcuMzYgNy4zNiAwIDAgMSAxLjYtMS4xYy42IDMuOCAxLjEgNy40IDEuOCAxMSAuNiAzLjEgMi41IDUuMSA1LjQgNS4yIDUuNC4xIDEwLjkuMSAxNi4zIDBhNC44NCA0Ljg0IDAgMCAwIDQuOC00LjcgMjYuMiAyNi4yIDAgMCAwIC4xLTIuOHYtMTA2YTgwIDgwIDAgMCAwLS45LTEyLjljLTEuOS0xMi45LTcuNC0yMy41LTE5LTMwLjQtNi43LTQtMTQuMS02LTIxLjgtNy4xLTMuNi0uNS03LjItLjgtMTAuOC0xLjMtMy45LjEtNy45LjEtMTEuOS4xem0zNSAxMjcuN2EzLjMzIDMuMzMgMCAwIDEtMS41IDNjLTExLjIgOC4xLTIzLjUgMTMuNS0zNy40IDE0LjktNS43LjYtMTEuNC40LTE2LjgtMS44YTIwLjA4IDIwLjA4IDAgMCAxLTEyLjQtMTMuMyAzMi45IDMyLjkgMCAwIDEtLjEtMTkuNGMyLjUtOC4zIDguNC0xMyAxNi40LTE1LjZhNjEuMzMgNjEuMzMgMCAwIDEgMjQuOC0yLjJjOC40LjcgMTYuNiAyLjMgMjUgMy40IDEuNi4yIDIuMSAxIDIuMSAyLjYtLjEgNC44IDAgOS41IDAgMTQuM3MtLjIgOS40LS4xIDE0LjF6bTI1OS45IDEyOS40Yy0xLTUtNC44LTYuOS05LjEtOC4zYTg4LjQyIDg4LjQyIDAgMCAwLTIxLTMuOSAxNDcuMzIgMTQ3LjMyIDAgMCAwLTM5LjIgMS45Yy0xNC4zIDIuNy0yNy45IDcuMy00MCAxNS42YTEzLjc1IDEzLjc1IDAgMCAwLTMuNyAzLjUgNS4xMSA1LjExIDAgMCAwLS41IDRjLjQgMS41IDIuMSAxLjkgMy42IDEuOGExNi4yIDE2LjIgMCAwIDAgMi4yLS4xYzcuOC0uOCAxNS41LTEuNyAyMy4zLTIuNSAxMS40LTEuMSAyMi45LTEuOCAzNC4zLS45YTcxLjY0IDcxLjY0IDAgMCAxIDE0LjQgMi43YzUuMSAxLjQgNy40IDUuMiA3LjYgMTAuNC40IDgtMS40IDE1LjctMy41IDIzLjMtNC4xIDE1LjQtMTAgMzAuMy0xNS44IDQ1LjFhMTcuNiAxNy42IDAgMCAwLTEgM2MtLjUgMi45IDEuMiA0LjggNC4xIDQuMWExMC41NiAxMC41NiAwIDAgMCA0LjgtMi41IDE0NS45MSAxNDUuOTEgMCAwIDAgMTIuNy0xMy40YzEyLjgtMTYuNCAyMC4zLTM1LjMgMjQuNy01NS42LjgtMy42IDEuNC03LjMgMi4xLTEwLjl2LTE3LjN6TTQ5My4xIDE5OXEtMTkuMzUtNTMuNTUtMzguNy0xMDcuMmMtMi01LjctNC4yLTExLjMtNi4zLTE2LjktMS4xLTIuOS0zLjItNC44LTYuNC00LjgtNy42LS4xLTE1LjItLjItMjIuOS0uMS0yLjUgMC0zLjcgMi0zLjIgNC41YTQzLjEgNDMuMSAwIDAgMCAxLjkgNi4xcTI5LjQgNzIuNzUgNTkuMSAxNDUuNWMxLjcgNC4xIDIuMSA3LjYuMiAxMS44LTMuMyA3LjMtNS45IDE1LTkuMyAyMi4zLTMgNi41LTggMTEuNC0xNS4yIDEzLjNhNDIuMTMgNDIuMTMgMCAwIDEtMTUuNCAxLjFjLTIuNS0uMi01LS44LTcuNS0xLTMuNC0uMi01LjEgMS4zLTUuMiA0LjhxLS4xNSA1IDAgOS45Yy4xIDUuNSAyIDggNy40IDguOWExMDguMTggMTA4LjE4IDAgMCAwIDE2LjkgMmMxNy4xLjQgMzAuNy02LjUgMzkuNS0yMS40YTEzMS42MyAxMzEuNjMgMCAwIDAgOS4yLTE4LjRxMzUuNTUtODkuNyA3MC42LTE3OS42YTI2LjYyIDI2LjYyIDAgMCAwIDEuNi01LjVjLjQtMi44LS45LTQuNC0zLjctNC40LTYuNi0uMS0xMy4zIDAtMTkuOSAwYTcuNTQgNy41NCAwIDAgMC03LjcgNS4yYy0uNSAxLjQtMS4xIDIuNy0xLjYgNC4xbC0zNC44IDEwMGMtMi41IDcuMi01LjEgMTQuNS03LjcgMjIuMi0uNC0xLjEtLjYtMS43LS45LTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW1hem9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ny4yIDE2Mi43Yy00OC43IDEuOC0xNjkuNSAxNS41LTE2OS41IDExNy41IDAgMTA5LjUgMTM4LjMgMTE0IDE4My41IDQzLjIgNi41IDEwLjIgMzUuNCAzNy41IDQ1LjMgNDYuOGw1Ni44LTU2UzM0MSAyODguOSAzNDEgMjYxLjRWMTE0LjNDMzQxIDg5IDMxNi41IDMyIDIyOC43IDMyIDE0MC43IDMyIDk0IDg3IDk0IDEzNi4zbDczLjUgNi44YzE2LjMtNDkuNSA1NC4yLTQ5LjUgNTQuMi00OS41IDQwLjctLjEgMzUuNSAyOS44IDM1LjUgNjkuMXptMCA4Ni44YzAgODAtODQuMiA2OC04NC4yIDE3LjIgMC00Ny4yIDUwLjUtNTYuNyA4NC4yLTU3Ljh2NDAuNnptMTM2IDE2My41Yy03LjcgMTAtNzAgNjctMTc0LjUgNjdTMzQuMiA0MDguNSA5LjcgMzc5Yy02LjgtNy43IDEtMTEuMyA1LjUtOC4zQzg4LjUgNDE1LjIgMjAzIDQ4OC41IDM4Ny43IDQwMWM3LjUtMy43IDEzLjMgMiA1LjUgMTJ6bTM5LjggMi4yYy02LjUgMTUuOC0xNiAyNi44LTIxLjIgMzEtNS41IDQuNS05LjUgMi43LTYuNS0zLjhzMTkuMy00Ni41IDEyLjctNTVjLTYuNS04LjMtMzctNC4zLTQ4LTMuMi0xMC44IDEtMTMgMi0xNC0uMy0yLjMtNS43IDIxLjctMTUuNSAzNy41LTE3LjUgMTUuNy0xLjggNDEtLjggNDYgNS43IDMuNyA1LjEgMCAyNy4xLTYuNSA0My4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbWlsaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwLjEgMzJjLTYxLjkgMC0xMzEuNSAxNi45LTE4NC4yIDU1LjQtNS4xIDMuMS05LjEgOS4yLTcuMiAxOS40IDEuMSA1LjEgNS4xIDI3LjQgMTAuMiAzOS42IDQuMSAxMC4yIDE0LjIgMTAuMiAyMC4zIDYuMSAzMi41LTIyLjMgOTYuNS00Ny43IDE1Mi4zLTQ3LjcgNTcuOSAwIDU4LjkgMjguNCA1OC45IDczLjF2MzguNUMyMDMgMjI3LjcgNzguMiAyNTEgNDYuNyAyNjQuMiAxMS4yIDI4MC41IDE2LjMgMzU3LjcgMTYuMyAzNzZzMTUuMiAxMDQgMTI0LjkgMTA0YzQ3LjggMCAxMTMuNy0yMC43IDE1My4zLTQyLjF2MjUuNGMwIDMgMi4xIDguMiA2LjEgOS4xIDMuMSAxIDUwLjcgMiA1OS45IDJzNjIuNS4zIDY2LjUtLjdjNC4xLTEgNS4xLTYuMSA1LjEtOS4xVjE2OGMtLjEtODAuMy01Ny45LTEzNi0xOTItMTM2em01MC4yIDM0OGMtMjEuNCAxMy4yLTQ4LjcgMjQuNC03OS4xIDI0LjQtNTIuOCAwLTU4LjktMzMuNS01OS00NC43IDAtMTIuMi0zLTQyLjcgMTguMy01Mi45IDI0LjMtMTMuMiA3NS4xLTI5LjQgMTE5LjgtMzMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5kcm9pZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjAuNTUsMzAxLjkzYTI0LDI0LDAsMSwxLDI0LTI0LDI0LDI0LDAsMCwxLTI0LDI0bS0yNjUuMSwwYTI0LDI0LDAsMSwxLDI0LTI0LDI0LDI0LDAsMCwxLTI0LDI0bTI3My43LTE0NC40OCw0Ny45NC04M2ExMCwxMCwwLDEsMC0xNy4yNy0xMGgwbC00OC41NCw4NC4wN2EzMDEuMjUsMzAxLjI1LDAsMCwwLTI0Ni41NiwwTDExNi4xOCw2NC40NWExMCwxMCwwLDEsMC0xNy4yNywxMGgwbDQ3Ljk0LDgzQzY0LjUzLDIwMi4yMiw4LjI0LDI4NS41NSwwLDM4NEg1NzZjLTguMjQtOTguNDUtNjQuNTQtMTgxLjc4LTE0Ni44NS0yMjYuNTVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nZWxsaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Ny4xIDIxNS40YzExLjctMzIuNiA0NS40LTEyNi45IDQ1LjQtMTU3LjEgMC0yNi42LTE1LjctNDguOS00My43LTQ4LjktNDQuNiAwLTg0LjYgMTMxLjctOTcuMSAxNjMuMUMyNDIgMTQ0IDE5Ni42IDAgMTU2LjYgMGMtMzEuMSAwLTQ1LjcgMjIuOS00NS43IDUxLjcgMCAzNS4zIDM0LjIgMTI2LjggNDYuNiAxNjItNi4zLTIuMy0xMy4xLTQuMy0yMC00LjMtMjMuNCAwLTQ4LjMgMjkuMS00OC4zIDUyLjYgMCA4LjkgNC45IDIxLjQgOCAyOS43LTM2LjkgMTAtNTEuMSAzNC42LTUxLjEgNzEuN0M0NiA0MzUuNiAxMTQuNCA1MTIgMjEwLjYgNTEyYzExOCAwIDE5MS40LTg4LjYgMTkxLjQtMjAyLjkgMC00My4xLTYuOS04Mi01NC45LTkzLjd6TTMxMS43IDEwOGM0LTEyLjMgMjEuMS02NC4zIDM3LjEtNjQuMyA4LjYgMCAxMC45IDguOSAxMC45IDE2IDAgMTkuMS0zOC42IDEyNC42LTQ3LjEgMTQ4bC0zNC02IDMzLjEtOTMuN3pNMTQyLjMgNDguM2MwLTExLjkgMTQuNS00NS43IDQ2LjMgNDcuMWwzNC42IDEwMC4zYy0xNS42LTEuMy0yNy43LTMtMzUuNCAxLjQtMTAuOS0yOC44LTQ1LjUtMTE5LjctNDUuNS0xNDguOHpNMTQwIDI0NGMyOS4zIDAgNjcuMSA5NC42IDY3LjEgMTA3LjQgMCA1LjEtNC45IDExLjQtMTAuNiAxMS40LTIwLjkgMC03Ni45LTc2LjktNzYuOS05Ny43LjEtNy43IDEyLjctMjEuMSAyMC40LTIxLjF6bTE4NC4zIDE4Ni4zYy0yOS4xIDMyLTY2LjMgNDguNi0xMDkuNyA0OC42LTU5LjQgMC0xMDYuMy0zMi42LTEyOC45LTg4LjMtMTcuMS00My40IDMuOC02OC4zIDIwLjYtNjguMyAxMS40IDAgNTQuMyA2MC4zIDU0LjMgNzMuMSAwIDQuOS03LjcgOC4zLTExLjcgOC4zLTE2LjEgMC0yMi40LTE1LjUtNTEuMS01MS40LTI5LjcgMjkuNyAyMC41IDg2LjkgNTguMyA4Ni45IDI2LjEgMCA0My4xLTI0LjIgMzgtNDIgMy43IDAgOC4zLjMgMTEuNy0uNiAxLjEgMjcuMSA5LjEgNTkuNCA0MS43IDYxLjcgMC0uOSAyLTcuMSAyLTcuNCAwLTE3LjQtMTAuNi0zMi42LTEwLjYtNTAuMyAwLTI4LjMgMjEuNy01NS43IDQzLjctNzEuNyA4LTYgMTcuNy05LjcgMjcuMS0xMy4xIDkuNy0zLjcgMjAtOCAyNy40LTE1LjQtMS4xLTExLjItNS43LTIxLjEtMTYuOS0yMS4xLTI3LjcgMC0xMjAuNiA0LTEyMC42LTM5LjcgMC02LjcuMS0xMy4xIDE3LjQtMTMuMSAzMi4zIDAgMTE0LjMgOCAxMzguMyAyOS4xIDE4LjEgMTYuMSAyNC4zIDExMy4yLTMxIDE3NC43em0tOTguNi0xMjZjOS43IDMuMSAxOS43IDQgMjkuNyA2LTcuNCA1LjQtMTQgMTItMjAuMyAxOS4xLTIuOC04LjUtNi4yLTE2LjgtOS40LTI1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ3J5Y3JlYXRpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQwIDIzOC4ybC0zLjIgMjguMi0zNC41IDIuMy0yIDE4LjEgMzQuNS0yLjMtMy4yIDI4LjItMzQuNCAyLjItMi4zIDIwLjEgMzQuNC0yLjItMyAyNi4xLTY0LjcgNC4xIDEyLjctMTEzLjJMNTI3IDM2NS4ybC0zMS45IDItMjMuOC0xMTcuOCAzMC4zLTIgMTMuNiA3OS40IDMxLjctODIuNCA5My4xLTYuMnpNNDI2LjggMzcxLjVsMjguMy0xLjhMNDY4IDI0OS42bC0yOC40IDEuOS0xMi44IDEyMHpNMTYyIDM4OC4xbC0xOS40LTM2LTMuNSAzNy40LTI4LjIgMS43IDIuNy0yOS4xYy0xMSAxOC0zMiAzNC4zLTU2LjkgMzUuOEMyMy45IDM5OS45LTMgMzc3IC4zIDMzOS43YzIuNi0yOS4zIDI2LjctNjIuOCA2Ny41LTY1LjQgMzcuNy0yLjQgNDcuNiAyMy4yIDUxLjMgMjguOGwyLjgtMzAuOCAzOC45LTIuNWMyMC4xLTEuMyAzOC43IDMuNyA0Mi41IDIzLjdsMi42LTI2LjYgNjQuOC00LjItMi43IDI3LjktMzYuNCAyLjQtMS43IDE3LjkgMzYuNC0yLjMtMi43IDI3LjktMzYuNCAyLjMtMS45IDE5LjkgMzYuMy0yLjMtMi4xIDIwLjggNTUtMTE3LjIgMjMuOC0xLjZMMzcwLjQgMzY5bDguOS04NS42LTIyLjMgMS40IDIuOS0yNy45IDc1LTQuOS0zIDI4LTI0LjMgMS42LTkuNyA5MS45LTU4IDMuNy00LjMtMTUuNi0zOS40IDIuNS04IDE2LjMtMTI2LjIgNy43em0tNDQuMy03MC4ybC0yNi40IDEuN0M4NC42IDMwNy4yIDc2LjkgMzAzIDY1IDMwMy44Yy0xOSAxLjItMzMuMyAxNy41LTM0LjYgMzMuMy0xLjQgMTYgNy4zIDMyLjUgMjguNyAzMS4yIDEyLjgtLjggMjEuMy04LjYgMjguOS0xOC45bDI3LTEuNyAyLjctMjkuOHptNTYuMS03LjdjMS4yLTEyLjktNy42LTEzLjYtMjYuMS0xMi40bC0yLjcgMjguNWMxNC4yLS45IDI3LjUtMi4xIDI4LjgtMTYuMXptMjEuMSA3MC44bDUuOC02MGMtNSAxMy41LTE0LjcgMjEuMS0yNy45IDI2LjZsMjIuMSAzMy40em0xMzUuNC00NWwtNy45LTM3LjgtMTUuOCAzOS4zIDIzLjctMS41em0tMTcwLjEtNzQuNmwtNC4zLTE3LjUtMzkuNiAyLjYtOC4xIDE4LjItMzEuOSAyLjEgNTctMTIxLjkgMjMuOS0xLjYgMzAuNyAxMDIgOS45LTEwNC43IDI3LTEuOCAzNy44IDYzLjYgNi41LTY2LjYgMjguNS0xLjktNCA0MS4yYzcuNC0xMy41IDIyLjktNDQuNyA2My42LTQ3LjUgNDAuNS0yLjggNTIuNCAyOS4zIDUzLjQgMzAuM2wzLjMtMzIgMzkuMy0yLjdjMTIuNy0uOSAyNy44LjMgMzYuMyA5LjdsLTQuNC0xMS45IDMyLjItMi4yIDEyLjkgNDMuMiAyMy00NS43IDMxLTIuMi00My42IDc4LjQtNC44IDQ0LjMtMjguNCAxLjkgNC44LTQ0LjMtMTUuOC00M2MxIDIyLjMtOS4yIDQwLjEtMzIgNDkuNmwyNS4yIDM4LjgtMzYuNCAyLjQtMTkuMi0zNi44LTQgMzguMy0yOC40IDEuOSAzLjMtMzEuNWMtNi43IDkuMy0xOS43IDM1LjQtNTkuNiAzOC0yNi4yIDEuNy00NS42LTEwLjMtNTUuNC0zOS4ybC00IDQwLjMtMjUgMS42LTM3LjYtNjMuMy02LjMgNjYuMi01Ni44IDMuN3ptMjc2LjYtODIuMWMxMC4yLS43IDE3LjUtMi4xIDIxLjYtNC4zIDQuNS0yLjQgNy02LjQgNy42LTEyLjEuNi01LjMtLjYtOC44LTMuNC0xMC40LTMuNi0yLjEtMTAuNi0yLjgtMjIuOS0ybC0yLjkgMjguOHpNMzI3LjcgMjE0YzUuNiA1LjkgMTIuNyA4LjUgMjEuMyA3LjkgNC43LS4zIDkuMS0xLjggMTMuMy00LjEgNS41LTMgMTAuNi04IDE1LjEtMTQuM2wtMzQuMiAyLjMgMi40LTIzLjkgNjMuMS00LjMgMS4yLTEyLTMxLjIgMi4xYy00LjEtMy43LTcuOC02LjYtMTEuMS04LjEtNC0xLjctOC4xLTIuOC0xMi4yLTIuNS04IC41LTE1LjMgMy42LTIyIDkuMi03LjcgNi40LTEyIDE0LjUtMTIuOSAyNC40LTEuMSA5LjYgMS40IDE3LjMgNy4yIDIzLjN6bS0yMDEuMyA4LjJsMjMuOC0xLjYtOC4zLTM3LjYtMTUuNSAzOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmd1bGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4NS43IDI2OC4xaDc2LjJsLTM4LjEtOTEuNi0zOC4xIDkxLjZ6TTIyMy44IDMyTDE2IDEwNi40bDMxLjggMjc1LjcgMTc2IDk3LjkgMTc2LTk3LjkgMzEuOC0yNzUuN3pNMzU0IDM3My44aC00OC42bC0yNi4yLTY1LjRIMTY4LjZsLTI2LjIgNjUuNEg5My43TDIyMy44IDgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFwcFN0b3JlSW9zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTEyNyAzODQuNWMtNS41IDkuNi0xNy44IDEyLjgtMjcuMyA3LjMtOS42LTUuNS0xMi44LTE3LjgtNy4zLTI3LjNsMTQuMy0yNC43YzE2LjEtNC45IDI5LjMtMS4xIDM5LjYgMTEuNEwxMjcgMzg0LjV6bTEzOC45LTUzLjlIODRjLTExIDAtMjAtOS0yMC0yMHM5LTIwIDIwLTIwaDUxbDY1LjQtMTEzLjItMjAuNS0zNS40Yy01LjUtOS42LTIuMi0yMS44IDcuMy0yNy4zIDkuNi01LjUgMjEuOC0yLjIgMjcuMyA3LjNsOC45IDE1LjQgOC45LTE1LjRjNS41LTkuNiAxNy44LTEyLjggMjcuMy03LjMgOS42IDUuNSAxMi44IDE3LjggNy4zIDI3LjNsLTg1LjggMTQ4LjZoNjIuMWMyMC4yIDAgMzEuNSAyMy43IDIyLjcgNDB6bTk4LjEgMGgtMjlsMTkuNiAzMy45YzUuNSA5LjYgMi4yIDIxLjgtNy4zIDI3LjMtOS42IDUuNS0yMS44IDIuMi0yNy4zLTcuMy0zMi45LTU2LjktNTcuNS05OS43LTc0LTEyOC4xLTE2LjctMjktNC44LTU4IDcuMS02Ny44IDEzLjEgMjIuNyAzMi43IDU2LjcgNTguOSAxMDJoNTJjMTEgMCAyMCA5IDIwIDIwIDAgMTEuMS05IDIwLTIwIDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBTdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTUuOSAxMjAuOWw5LjEtMTUuN2M1LjYtOS44IDE4LjEtMTMuMSAyNy45LTcuNSA5LjggNS42IDEzLjEgMTguMSA3LjUgMjcuOWwtODcuNSAxNTEuNWg2My4zYzIwLjUgMCAzMiAyNC4xIDIzLjEgNDAuOEgxMTMuOGMtMTEuMyAwLTIwLjQtOS4xLTIwLjQtMjAuNCAwLTExLjMgOS4xLTIwLjQgMjAuNC0yMC40aDUybDY2LjYtMTE1LjQtMjAuOC0zNi4xYy01LjYtOS44LTIuMy0yMi4yIDcuNS0yNy45IDkuOC01LjYgMjIuMi0yLjMgMjcuOSA3LjVsOC45IDE1Ljd6bS03OC43IDIxOGwtMTkuNiAzNGMtNS42IDkuOC0xOC4xIDEzLjEtMjcuOSA3LjUtOS44LTUuNi0xMy4xLTE4LjEtNy41LTI3LjlsMTQuNi0yNS4yYzE2LjQtNS4xIDI5LjgtMS4yIDQwLjQgMTEuNnptMTY4LjktNjEuN2g1My4xYzExLjMgMCAyMC40IDkuMSAyMC40IDIwLjQgMCAxMS4zLTkuMSAyMC40LTIwLjQgMjAuNGgtMjkuNWwxOS45IDM0LjVjNS42IDkuOCAyLjMgMjIuMi03LjUgMjcuOS05LjggNS42LTIyLjIgMi4zLTI3LjktNy41LTMzLjUtNTguMS01OC43LTEwMS42LTc1LjQtMTMwLjYtMTcuMS0yOS41LTQuOS01OS4xIDcuMi02OS4xIDEzLjQgMjMgMzMuNCA1Ny43IDYwLjEgMTA0ek0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0yMTYgMjQ4YzAgMTE4LjctOTYuMSAyMTYtMjE2IDIxNi0xMTguNyAwLTIxNi05Ni4xLTIxNi0yMTYgMC0xMTguNyA5Ni4xLTIxNiAyMTYtMjE2IDExOC43IDAgMjE2IDk2LjEgMjE2IDIxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXBwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIuMSAyMzkuMWMyMi4yIDAgMjkgMi44IDMzLjUgMTQuNmguOHYtMjIuOWMwLTExLjMtNC44LTE1LjQtMTcuOS0xNS40LTExLjMgMC0xNC40IDIuNS0xNS4xIDEyLjhINC44Yy4zLTEzLjkgMS41LTE5LjEgNS44LTI0LjRDMTcuOSAxOTUgMjkuNSAxOTIgNTYuNyAxOTJjMzMgMCA0Ny4xIDUgNTMuOSAxOC45IDIgNC4zIDQgMTUuNiA0IDIzLjd2NzYuM0g3Ni4zbDEuMy0xOS4xaC0xYy01LjMgMTUuNi0xMy42IDIwLjQtMzUuNSAyMC40LTMwLjMgMC00MS4xLTEwLjEtNDEuMS0zNy4zIDAtMjUuMiAxMi4zLTM1LjggNDIuMS0zNS44em0xNy4xIDQ4LjFjMTMuMSAwIDE2LjktMyAxNi45LTEzLjQgMC05LjEtNC4zLTExLjYtMTkuNi0xMS42LTEzLjEgMC0xNy45IDMtMTcuOSAxMi4xLS4xIDEwLjQgMy43IDEyLjkgMjAuNiAxMi45em03Ny44LTk0LjloMzguM2wtMS41IDIwLjZoLjhjOS4xLTE3LjEgMTUuOS0yMC45IDM3LjUtMjAuOSAxNC40IDAgMjQuNyAzIDMxLjUgOS4xIDkuOCA4LjYgMTIuOCAyMC40IDEyLjggNDguMSAwIDMwLTMgNDMuMS0xMi4xIDUyLjktNi44IDcuMy0xNi40IDEwLjEtMzMuMiAxMC4xLTIwLjQgMC0yOS4yLTUuNS0zMy44LTIxLjJoLS44djcwLjNIMTM3di0xNjl6bTgwLjkgNjAuN2MwLTI3LjUtMy4zLTMyLjUtMjAuNy0zMi41LTE2LjkgMC0yMC43IDUtMjAuNyAyOC43IDAgMjggMy41IDMzLjUgMjEuMiAzMy41IDE2LjQgMCAyMC4yLTUuNiAyMC4yLTI5Ljd6bTU3LjktNjAuN2gzOC4zbC0xLjUgMjAuNmguOGM5LjEtMTcuMSAxNS45LTIwLjkgMzcuNS0yMC45IDE0LjQgMCAyNC43IDMgMzEuNSA5LjEgOS44IDguNiAxMi44IDIwLjQgMTIuOCA0OC4xIDAgMzAtMyA0My4xLTEyLjEgNTIuOS02LjggNy4zLTE2LjQgMTAuMS0zMy4zIDEwLjEtMjAuNCAwLTI5LjItNS41LTMzLjgtMjEuMmgtLjh2NzAuM2gtMzkuNXYtMTY5em04MC45IDYwLjdjMC0yNy41LTMuMy0zMi41LTIwLjctMzIuNS0xNi45IDAtMjAuNyA1LTIwLjcgMjguNyAwIDI4IDMuNSAzMy41IDIxLjIgMzMuNSAxNi40IDAgMjAuMi01LjYgMjAuMi0yOS43em01My44LTMuOGMwLTI1LjQgMy4zLTM3LjggMTIuMy00NS44IDguOC04LjEgMjIuMi0xMS4zIDQ1LjEtMTEuMyA0Mi44IDAgNTUuNyAxMi44IDU1LjcgNTUuN3YxMS4xaC03NS4zYy0uMyAyLS4zIDQtLjMgNC44IDAgMTYuOSA0LjUgMjEuOSAyMC4xIDIxLjkgMTMuOSAwIDE3LjktMyAxNy45LTEzLjloMzcuNXYyLjNjMCA5LjgtMi41IDE4LjktNi44IDI0LjctNy4zIDkuOC0xOS42IDEzLjYtNDQuMyAxMy42LTI3LjUgMC00MS42LTMuMy01MC42LTEyLjMtOC41LTguNS0xMS4zLTIxLjMtMTEuMy01MC44em03Ni40LTExLjZjLS4zLTEuOC0uMy0zLjMtLjMtMy44IDAtMTIuMy0zLjMtMTQuNi0xOS42LTE0LjYtMTQuNCAwLTE3LjEgMy0xOC4xIDE1LjFsLS4zIDMuM2gzOC4zem01NS42LTQ1LjNoMzguM2wtMS44IDE5LjloLjdjNi44LTE0LjkgMTQuNC0yMC4yIDI5LjctMjAuMiAxMC44IDAgMTkuMSAzLjMgMjMuNCA5LjMgNS4zIDcuMyA2LjggMTQuNCA2LjggMzQgMCAxLjUgMCA1IC4yIDkuM2gtMzVjLjMtMS44LjMtMy4zLjMtNCAwLTE1LjQtMi0xOS40LTEwLjMtMTkuNC02LjMgMC0xMC44IDMuMy0xMy4xIDkuMy0xIDMtMSA0LjMtMSAxMi4zdjY4aC0zOC4zVjE5Mi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBsZVBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTYuOSAxNTguNWMtNy41IDguOS0xOS41IDE1LjktMzEuNSAxNC45LTEuNS0xMiA0LjQtMjQuOCAxMS4zLTMyLjYgNy41LTkuMSAyMC42LTE1LjYgMzEuMy0xNi4xIDEuMiAxMi40LTMuNyAyNC43LTExLjEgMzMuOG0xMC45IDE3LjJjLTE3LjQtMS0zMi4zIDkuOS00MC41IDkuOS04LjQgMC0yMS05LjQtMzQuOC05LjEtMTcuOS4zLTM0LjUgMTAuNC00My42IDI2LjUtMTguOCAzMi4zLTQuOSA4MCAxMy4zIDEwNi4zIDguOSAxMyAxOS41IDI3LjMgMzMuNSAyNi44IDEzLjMtLjUgMTguNS04LjYgMzQuNS04LjYgMTYuMSAwIDIwLjggOC42IDM0LjggOC40IDE0LjUtLjMgMjMuNi0xMyAzMi41LTI2IDEwLjEtMTQuOCAxNC4zLTI5LjEgMTQuNS0yOS45LS4zLS4zLTI4LTEwLjktMjguMy00Mi45LS4zLTI2LjggMjEuOS0zOS41IDIyLjktNDAuMy0xMi41LTE4LjYtMzItMjAuNi0zOC44LTIxLjFtMTAwLjQtMzYuMnYxOTQuOWgzMC4zdi02Ni42aDQxLjljMzguMyAwIDY1LjEtMjYuMyA2NS4xLTY0LjNzLTI2LjQtNjQtNjQuMS02NGgtNzMuMnptMzAuMyAyNS41aDM0LjljMjYuMyAwIDQxLjMgMTQgNDEuMyAzOC42cy0xNSAzOC44LTQxLjQgMzguOGgtMzQuOFYxNjV6bTE2Mi4yIDE3MC45YzE5IDAgMzYuNi05LjYgNDQuNi0yNC45aC42djIzLjRoMjh2LTk3YzAtMjguMS0yMi41LTQ2LjMtNTcuMS00Ni4zLTMyLjEgMC01NS45IDE4LjQtNTYuOCA0My42aDI3LjNjMi4zLTEyIDEzLjQtMTkuOSAyOC42LTE5LjkgMTguNSAwIDI4LjkgOC42IDI4LjkgMjQuNXYxMC44bC0zNy44IDIuM2MtMzUuMSAyLjEtNTQuMSAxNi41LTU0LjEgNDEuNS4xIDI1LjIgMTkuNyA0MiA0Ny44IDQyem04LjItMjMuMWMtMTYuMSAwLTI2LjQtNy44LTI2LjQtMTkuNiAwLTEyLjMgOS45LTE5LjQgMjguOC0yMC41bDMzLjYtMi4xdjExYzAgMTguMi0xNS41IDMxLjItMzYgMzEuMnptMTAyLjUgNzQuNmMyOS41IDAgNDMuNC0xMS4zIDU1LjUtNDUuNEw2NDAgMTkzaC0zMC44bC0zNS42IDExNS4xaC0uNkw1MzcuNCAxOTNoLTMxLjZMNTU3IDMzNC45bC0yLjggOC42Yy00LjYgMTQuNi0xMi4xIDIwLjMtMjUuNSAyMC4zLTIuNCAwLTctLjMtOC45LS41djIzLjRjMS44LjQgOS4zLjcgMTEuNi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguNyAyNjguN2MtLjItMzYuNyAxNi40LTY0LjQgNTAtODQuOC0xOC44LTI2LjktNDcuMi00MS43LTg0LjctNDQuNi0zNS41LTIuOC03NC4zIDIwLjctODguNSAyMC43LTE1IDAtNDkuNC0xOS43LTc2LjQtMTkuN0M2My4zIDE0MS4yIDQgMTg0LjggNCAyNzMuNXEwIDM5LjMgMTQuNCA4MS4yYzEyLjggMzYuNyA1OSAxMjYuNyAxMDcuMiAxMjUuMiAyNS4yLS42IDQzLTE3LjkgNzUuOC0xNy45IDMxLjggMCA0OC4zIDE3LjkgNzYuNCAxNy45IDQ4LjYtLjcgOTAuNC04Mi41IDEwMi42LTExOS4zLTY1LjItMzAuNy02MS43LTkwLTYxLjctOTEuOXptLTU2LjYtMTY0LjJjMjcuMy0zMi40IDI0LjgtNjEuOSAyNC03Mi41LTI0LjEgMS40LTUyIDE2LjQtNjcuOSAzNC45LTE3LjUgMTkuOC0yNy44IDQ0LjMtMjUuNiA3MS45IDI2LjEgMiA0OS45LTExLjQgNjkuNS0zNC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnRzdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMzc3LjRsNDMgNzQuM0E1MS4zNSA1MS4zNSAwIDAgMCA5MC45IDQ4MGgyODUuNGwtNTkuMi0xMDIuNnpNNTAxLjggMzUwTDMzNS42IDU5LjNBNTEuMzggNTEuMzggMCAwIDAgMjkwLjIgMzJoLTg4LjRsMjU3LjMgNDQ3LjYgNDAuNy03MC41YzEuOS0zLjIgMjEtMjkuNyAyLTU5LjF6TTI3NSAzMDQuNWwtMTE1LjUtMjAwTDQ0IDMwNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBc3ltbWV0cmlrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxNy41IDMwOS4yYzM4LjgtNDAgNTguMS04MCA1OC41LTExNi4xLjgtNjUuNS01OS40LTExOC4yLTE2OS40LTEzNUMyNzcuOSAzOC40IDExOC4xIDczLjYgMCAxNDAuNSA1MiAxMTQgMTEwLjYgOTIuMyAxNzAuNyA4Mi4zYzc0LjUtMjAuNSAxNTMtMjUuNCAyMjEuMy0xNC44QzU0NC41IDkxLjMgNTg4LjggMTk1IDQ5MC44IDI5OS4yYy0xMC4yIDEwLjgtMjIgMjEuMS0zNSAzMC42TDMwNC45IDEwMy40IDExNC43IDM4OC45Yy02NS42LTI5LjQtNzYuNS05MC4yLTE5LjEtMTUxLjIgMjAuOC0yMi4yIDQ4LjMtNDEuOSA3OS41LTU4LjEgMjAtMTIuMiAzOS43LTIyLjYgNjItMzAuNy02NS4xIDIwLjMtMTIyLjcgNTIuOS0xNjEuNiA5Mi45LTI3LjcgMjguNi00MS40IDU3LjEtNDEuNyA4Mi45LS41IDM1LjEgMjMuNCA2NS4xIDY4LjQgODNsLTM0LjUgNTEuN2gxMDEuNmwyMi0zNC40YzIyLjIgMSA0NS4zIDAgNjguNi0yLjdsLTIyLjggMzcuMWgxMzUuNUwzNDAgNDA2LjNjMTguNi01LjMgMzYuOS0xMS41IDU0LjUtMTguN2w0NS45IDcxLjhINTQyTDQ2OC42IDM0OWMxOC41LTEyLjEgMzUtMjUuNSA0OC45LTM5Ljh6bS0xODcuNiA4MC41bC0yNS00MC42LTMyLjcgNTMuM2MtMjMuNCAzLjUtNDYuNyA1LjEtNjkuMiA0LjRsMTAxLjktMTU5LjMgNzguNyAxMjNjLTE3LjIgNy40LTM1LjMgMTMuOS01My43IDE5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF0bGFzc2lhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTIuMiAyMzYuNGMtNy43LTguMi0xOS43LTcuNy0yNC44IDIuOEwxLjYgNDkwLjJjLTUgMTAgMi40IDIxLjcgMTMuNCAyMS43aDE3NWM1LjguMSAxMS0zLjIgMTMuNC04LjQgMzcuOS03Ny44IDE1LjEtMTk2LjMtNTEuMi0yNjcuMXpNMjQ0LjQgOC4xYy0xMjIuMyAxOTMuNC04LjUgMzQ4LjYgNjUgNDk1LjUgMi41IDUuMSA3LjcgOC40IDEzLjQgOC40SDQ5N2MxMS4yIDAgMTguNC0xMS44IDEzLjQtMjEuNyAwIDAtMjM0LjUtNDcwLjYtMjQwLjQtNDgyLjMtNS4zLTEwLjYtMTguOC0xMC44LTI1LjYuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXVkaWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMTk5Ljl2NTRsLTMyMCAyMDBMMCAyNTR2LTU0bDMyMCAyMDAgMzIwLTIwMC4xem0tMTk0LjUgNzJsNDcuMS0yOS40Yy0zNy4yLTU1LjgtMTAwLjctOTIuNi0xNzIuNy05Mi42LTcyIDAtMTM1LjUgMzYuNy0xNzIuNiA5Mi40aC4zYzIuNS0yLjMgNS4xLTQuNSA3LjctNi43IDg5LjctNzQuNCAyMTkuNC01OC4xIDI5MC4yIDM2LjN6bS0yMjAuMSAxOC44YzE2LjktMTEuOSAzNi41LTE4LjcgNTcuNC0xOC43IDM0LjQgMCA2NS4yIDE4LjQgODYuNCA0Ny42bDQ1LjQtMjguNGMtMjAuOS0yOS45LTU1LjYtNDkuNS05NC44LTQ5LjUtMzguOSAwLTczLjQgMTkuNC05NC40IDQ5ek0xMDMuNiAxNjEuMWMxMzEuOC0xMDQuMyAzMTguMi03Ni40IDQxNy41IDYyLjFsLjcgMSA0OC44LTMwLjRDNTE3LjEgMTEyLjEgNDI0LjggNTguMSAzMTkuOSA1OC4xYy0xMDMuNSAwLTE5Ni42IDUzLjUtMjUwLjUgMTM1LjYgOS45LTEwLjUgMjIuNy0yMy41IDM0LjItMzIuNnptNDY3IDMyLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF1dG9wcmVmaXhlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguNCAxNmwtMTYxIDQ4MGg3Ny41bDI1LjQtODEuNGgxMTkuNUw0MDUgNDk2aDc3LjVMMzE4LjQgMTZ6bS00MC4zIDM0MS45bDQxLjItMTMwLjRoMS41bDQwLjkgMTMwLjRoLTgzLjZ6TTY0MCA0MDVsLTEwLTMxLjRMNDYyLjEgMzU4bDE5LjQgNTYuNUw2NDAgNDA1em0tNDYyLjEtNDdMMTAgMzczLjcgMCA0MDVsMTU4LjUgOS40IDE5LjQtNTYuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXZpYW5leCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTMuMSAzMmgtMzEyYy0zOC45IDAtNzYuMiAzMS4yLTgzLjMgNjkuN0wxLjIgNDEwLjNDLTUuOSA0NDguOCAxOS45IDQ4MCA1OC45IDQ4MGgzMTJjMzguOSAwIDc2LjItMzEuMiA4My4zLTY5LjdsNTYuNy0zMDguNWM3LTM4LjYtMTguOC02OS44LTU3LjgtNjkuOHptLTU4LjIgMzQ3LjNsLTMyIDEzLjUtMTE1LjQtMTEwYy0xNC43IDEwLTI5LjIgMTkuNS00MS43IDI3LjFsMjIuMSA2NC4yLTE3LjkgMTIuNy00MC42LTYxLTUyLjQtNDguMSAxNS43LTE1LjQgNTggMzEuMWM5LjMtMTAuNSAyMC44LTIyLjYgMzIuOC0zNC45TDIwMyAyMjguOWwtNjguOC05OS44IDE4LjgtMjguOSA4LjktNC44TDI2NSAyMDcuOGw0LjkgNC41YzE5LjQtMTguOCAzMy44LTMyLjQgMzMuOC0zMi40IDcuNy02LjUgMjEuNS0yLjkgMzAuNyA3LjkgOSAxMC41IDEwLjYgMjQuNyAyLjcgMzEuMy0xLjggMS4zLTE1LjUgMTEuNC0zNS4zIDI1LjZsNC41IDcuMyA5NC45IDExOS40LTYuMyA3Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF2aWF0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDcuMiAyODMuNWwtMTktNDEuOEgzNi4xbC0xOSA0MS44SDBsNjIuMi0xMzEuNCA2Mi4yIDEzMS40aC0xNy4yem0tNDUtOTguMWwtMTkuNiA0Mi41aDM5LjJsLTE5LjYtNDIuNXptMTEyLjcgMTAyLjRsLTYyLjItMTMxLjRoMTcuMWw0NS4xIDk2IDQ1LjEtOTZoMTdsLTYyLjEgMTMxLjR6bTgwLjYtNC4zVjE1Ni40SDI3MXYxMjcuMWgtMTUuNXptMjA5LjEtMTE1LjZ2MTE1LjZoLTE3LjNWMTY3LjloLTQxLjJ2LTExLjVoOTkuNnYxMS41aC00MS4xek02NDAgMjE4LjhjMCA5LjItMS43IDE3LjgtNS4xIDI1LjgtMy40IDgtOC4yIDE1LjEtMTQuMiAyMS4xLTYgNi0xMy4xIDEwLjgtMjEuMSAxNC4yLTggMy40LTE2LjYgNS4xLTI1LjggNS4xcy0xNy44LTEuNy0yNS44LTUuMWMtOC0zLjQtMTUuMS04LjItMjEuMS0xNC4yLTYtNi0xMC44LTEzLTE0LjItMjEuMS0zLjQtOC01LjEtMTYuNi01LjEtMjUuOHMxLjctMTcuOCA1LjEtMjUuOGMzLjQtOCA4LjItMTUuMSAxNC4yLTIxLjEgNi02IDEzLTguNCAyMS4xLTExLjkgOC0zLjQgMTYuNi01LjEgMjUuOC01LjFzMTcuOCAxLjcgMjUuOCA1LjFjOCAzLjQgMTUuMSA1LjggMjEuMSAxMS45IDYgNiAxMC43IDEzLjEgMTQuMiAyMS4xIDMuNCA4IDUuMSAxNi42IDUuMSAyNS44em0tMTUuNSAwYzAtNy4zLTEuMy0xNC0zLjktMjAuMy0yLjYtNi4zLTYuMi0xMS43LTEwLjgtMTYuMy00LjYtNC42LTEwLTguMi0xNi4yLTEwLjktNi4yLTIuNy0xMi44LTQtMTkuOC00cy0xMy42IDEuMy0xOS44IDRjLTYuMiAyLjctMTEuNiA2LjMtMTYuMiAxMC45LTQuNiA0LjYtOC4yIDEwLTEwLjggMTYuMy0yLjYgNi4zLTMuOSAxMy4xLTMuOSAyMC4zIDAgNy4zIDEuMyAxNCAzLjkgMjAuMyAyLjYgNi4zIDYuMiAxMS43IDEwLjggMTYuMyA0LjYgNC42IDEwIDguMiAxNi4yIDEwLjkgNi4yIDIuNyAxMi44IDQgMTkuOCA0czEzLjYtMS4zIDE5LjgtNGM2LjItMi43IDExLjYtNi4zIDE2LjItMTAuOSA0LjYtNC42IDguMi0xMCAxMC44LTE2LjMgMi42LTYuMyAzLjktMTMuMSAzLjktMjAuM3ptLTk0LjggOTYuN3YtNi4zbDg4LjktMTAtMjQyLjkgMTMuNGMuNi0yLjIgMS4xLTQuNiAxLjQtNy4yLjMtMiAuNS00LjIuNi02LjVsNjQuOC04LjEtNjQuOSAxLjljMC0uNC0uMS0uNy0uMS0xLjEtMi44LTE3LjItMjUuNS0yMy43LTI1LjUtMjMuN2wtMS4xLTI2LjNoMjMuOGwxOSA0MS44aDE3LjFMMzQ4LjYgMTUybC02Mi4yIDEzMS40aDE3LjFsMTktNDEuOGgyMy42TDM0NSAyNjhzLTIyLjcgNi41LTI1LjUgMjMuN2MtLjEuMy0uMS43LS4xIDEuMWwtNjQuOS0xLjkgNjQuOCA4LjFjLjEgMi4zLjMgNC40LjYgNi41LjMgMi42LjggNSAxLjQgNy4yTDc4LjQgMjk5LjJsODguOSAxMHY2LjNjLTUuOS45LTEwLjUgNi0xMC41IDEyLjIgMCA2LjggNS42IDEyLjQgMTIuNCAxMi40IDYuOCAwIDEyLjQtNS42IDEyLjQtMTIuNCAwLTYuMi00LjYtMTEuMy0xMC41LTEyLjJ2LTUuOGw4MC4zIDl2NS40Yy01LjcgMS4xLTkuOSA2LjItOS45IDEyLjEgMCA2LjggNS42IDEwLjIgMTIuNCAxMC4yIDYuOCAwIDEyLjQtMy40IDEyLjQtMTAuMiAwLTYtNC4zLTExLTkuOS0xMi4xdi00LjlsMjguNCAzLjJ2MjMuN2gtNS45VjM2MGg1Ljl2LTYuNmg1djYuNmg1Ljl2LTEzLjhoLTUuOVYzMjNsMzguMyA0LjNjOC4xIDExLjQgMTkgMTMuNiAxOSAxMy42bC0uMSA2LjctNS4xLjItLjEgMTIuMWg0LjFsLjEtNWg1LjJsLjEgNWg0LjFsLS4xLTEyLjEtNS4xLS4yLS4xLTYuN3MxMC45LTIuMSAxOS0xMy42bDM4LjMtNC4zdjIzLjJoLTUuOVYzNjBoNS45di02LjZoNXY2LjZoNS45di0xMy44aC01Ljl2LTIzLjdsMjguNC0zLjJ2NC45Yy01LjcgMS4xLTkuOSA2LjItOS45IDEyLjEgMCA2LjggNS42IDEwLjIgMTIuNCAxMC4yIDYuOCAwIDEyLjQtMy40IDEyLjQtMTAuMiAwLTYtNC4zLTExLTkuOS0xMi4xdi01LjRsODAuMy05djUuOGMtNS45LjktMTAuNSA2LTEwLjUgMTIuMiAwIDYuOCA1LjYgMTIuNCAxMi40IDEyLjQgNi44IDAgMTIuNC01LjYgMTIuNC0xMi40LS4yLTYuMy00LjctMTEuNC0xMC43LTEyLjN6bS0yMDAuOC04Ny42bDE5LjYtNDIuNSAxOS42IDQyLjVoLTE3LjlsLTEuNy00MC4zLTEuNyA0MC4zaC0xNy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgwLjQxIDIwMy4wMWMtLjcyIDIyLjY1IDEwLjYgMzIuNjggMTAuODggMzkuMDVhOC4xNjQgOC4xNjQgMCAwIDEtNC4xIDYuMjdsLTEyLjggOC45NmExMC42NiAxMC42NiAwIDAgMS01LjYzIDEuOTJjLS40My0uMDItOC4xOSAxLjgzLTIwLjQ4LTI1LjYxYTc4LjYwOCA3OC42MDggMCAwIDEtNjIuNjEgMjkuNDVjLTE2LjI4Ljg5LTYwLjQtOS4yNC01OC4xMy01Ni4yMS0xLjU5LTM4LjI4IDM0LjA2LTYyLjA2IDcwLjkzLTYwLjA1IDcuMS4wMiAyMS42LjM3IDQ2Ljk5IDYuMjd2LTE1LjYyYzIuNjktMjYuNDYtMTQuNy00Ni45OS00NC44MS00My45MS0yLjQuMDEtMTkuNC0uNS00NS44NCAxMC4xMS03LjM2IDMuMzgtOC4zIDIuODItMTAuNzUgMi44Mi03LjQxIDAtNC4zNi0yMS40OC0yLjk0LTI0LjIgNS4yMS02LjQgMzUuODYtMTguMzUgNjUuOTQtMTguMThhNzYuODU3IDc2Ljg1NyAwIDAgMSA1NS42OSAxNy4yOCA3MC4yODUgNzAuMjg1IDAgMCAxIDE3LjY3IDUyLjM2bC0uMDEgNjkuMjl6TTkzLjk5IDIzNS40YzMyLjQzLS40NyA0Ni4xNi0xOS45NyA0OS4yOS0zMC40NyAyLjQ2LTEwLjA1IDIuMDUtMTYuNDEgMi4wNS0yNy40LTkuNjctMi4zMi0yMy41OS00Ljg1LTM5LjU2LTQuODctMTUuMTUtMS4xNC00Mi44MiA1LjYzLTQxLjc0IDMyLjI2LTEuMjQgMTYuNzkgMTEuMTIgMzEuNCAyOS45NiAzMC40OHptMTcwLjkyIDIzLjA1Yy03Ljg2LjcyLTExLjUyLTQuODYtMTIuNjgtMTAuMzdsLTQ5LjgtMTY0LjY1Yy0uOTctMi43OC0xLjYxLTUuNjUtMS45Mi04LjU4YTQuNjEgNC42MSAwIDAgMSAzLjg2LTUuMjVjLjI0LS4wNC0yLjEzIDAgMjIuMjUgMCA4Ljc4LS44OCAxMS42NCA2LjAzIDEyLjU1IDEwLjM3bDM1LjcyIDE0MC44MyAzMy4xNi0xNDAuODNjLjUzLTMuMjIgMi45NC0xMS4wNyAxMi44LTEwLjI0aDE3LjE2YzIuMTctLjE4IDExLjExLS41IDEyLjY4IDEwLjM3bDMzLjQyIDE0Mi42M0w0MjAuOTggODAuMWMuNDgtMi4xOCAyLjcyLTExLjM3IDEyLjY4LTEwLjM3aDE5LjcyYy44NS0uMTMgNi4xNS0uODEgNS4yNSA4LjU4LS40MyAxLjg1IDMuNDEtMTAuNjYtNTIuNzUgMTY5LjktMS4xNSA1LjUxLTQuODIgMTEuMDktMTIuNjggMTAuMzdoLTE4LjY5Yy0xMC45NCAxLjE1LTEyLjUxLTkuNjYtMTIuNjgtMTAuNzVMMzI4LjY3IDExMC43bC0zMi43OCAxMzYuOTljLS4xNiAxLjA5LTEuNzMgMTEuOS0xMi42OCAxMC43NWgtMTguM3ptMjczLjQ4IDUuNjNjLTUuODguMDEtMzMuOTItLjMtNTcuMzYtMTIuMjlhMTIuODAyIDEyLjgwMiAwIDAgMS03LjgxLTExLjkxdi0xMC43NWMwLTguNDUgNi4yLTYuOSA4LjgzLTUuODkgMTAuMDQgNC4wNiAxNi40OCA3LjE0IDI4LjgxIDkuNiAzNi42NSA3LjUzIDUyLjc3LTIuMyA1Ni43Mi00LjQ4IDEzLjE1LTcuODEgMTQuMTktMjUuNjggNS4yNS0zNC45NS0xMC40OC04Ljc5LTE1LjQ4LTkuMTItNTMuMTMtMjEtNC42NC0xLjI5LTQzLjctMTMuNjEtNDMuNzktNTIuMzYtLjYxLTI4LjI0IDI1LjA1LTU2LjE4IDY5LjUyLTU1Ljk1IDEyLjY3LS4wMSA0Ni40MyA0LjEzIDU1LjU3IDE1LjYyIDEuMzUgMi4wOSAyLjAyIDQuNTUgMS45MiA3LjA0djEwLjExYzAgNC40NC0xLjYyIDYuNjYtNC44NyA2LjY2LTcuNzEtLjg2LTIxLjM5LTExLjE3LTQ5LjE2LTEwLjc1LTYuODktLjM2LTM5Ljg5LjkxLTM4LjQxIDI0Ljk3LS40MyAxOC45NiAyNi42MSAyNi4wNyAyOS43IDI2Ljg5IDM2LjQ2IDEwLjk3IDQ4LjY1IDEyLjc5IDYzLjEyIDI5LjU4IDE3LjE0IDIyLjI1IDcuOSA0OC4zIDQuMzUgNTUuNDQtMTkuMDggMzcuNDktNjguNDIgMzQuNDQtNjkuMjYgMzQuNDJ6bTQwLjIgMTA0Ljg2Yy03MC4wMyA1MS43Mi0xNzEuNjkgNzkuMjUtMjU4LjQ5IDc5LjI1QTQ2OS4xMjcgNDY5LjEyNyAwIDAgMSAyLjgzIDMyNy40NmMtNi41My01Ljg5LS43Ny0xMy45NiA3LjE3LTkuNDdhNjM3LjM3IDYzNy4zNyAwIDAgMCAzMTYuODggODQuMTIgNjMwLjIyIDYzMC4yMiAwIDAgMCAyNDEuNTktNDkuNTVjMTEuNzgtNSAyMS43NyA3LjggMTAuMTIgMTYuMzh6bTI5LjE5LTMzLjI5Yy04Ljk2LTExLjUyLTU5LjI4LTUuMzgtODEuODEtMi42OS02Ljc5Ljc3LTcuOTQtNS4xMi0xLjc5LTkuNDcgNDAuMDctMjguMTcgMTA1Ljg4LTIwLjEgMTEzLjQ0LTEwLjYzIDcuNTUgOS40Ny0yLjA1IDc1LjQxLTM5LjU2IDEwNi45MS01Ljc2IDQuODctMTEuMjcgMi4zLTguNzEtNC4xIDguNDQtMjEuMjUgMjcuMzktNjguNDkgMTguNDMtODAuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbmRjYW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Niw4QzExOSw4LDgsMTE5LDgsMjU2UzExOSw1MDQsMjU2LDUwNCw1MDQsMzkzLDUwNCwyNTYsMzkzLDgsMjU2LDhabTQ4LjIsMzI2LjFoLTE4MUwyMDcuOSwxNzhoMTgxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXR0bGVOZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4LjYxIDIyNS42MmMyNi44Ny4xOCAzNS41Ny03LjQzIDM4LjkyLTEyLjM3IDEyLjQ3LTE2LjMyLTcuMDYtNDcuNi01Mi44NS03MS4zMyAxNy43Ni0zMy41OCAzMC4xMS02My42OCAzNi4zNC04NS4zIDMuMzgtMTEuODMgMS4wOS0xOSAuNDUtMjAuMjUtMS43MiAxMC41Mi0xNS44NSA0OC40Ni00OC4yIDEwMC4wNS0yNS0xMS4yMi01Ni41Mi0yMC4xLTkzLjc3LTIzLjgtOC45NC0xNi45NC0zNC44OC02My44Ni02MC40OC04OC45M0MyNTIuMTggNy4xNCAyMzguNyAxLjA3IDIyOC4xOC4yMmgtLjA1Yy0xMy44My0xLjU1LTIyLjY3IDUuODUtMjcuNCAxMS0xNy4yIDE4LjUzLTI0LjMzIDQ4Ljg3LTI1IDg0LjA3LTcuMjQtMTIuMzUtMTcuMTctMjQuNjMtMjguNS0yNS45M2gtLjE4Yy0yMC42Ni0zLjQ4LTM4LjM5IDI5LjIyLTM2IDgxLjI5LTM4LjM2IDEuMzgtNzEgNS43NS05MyAxMS4yMy05LjkgMi40NS0xNi4yMiA3LjI3LTE3Ljc2IDkuNzIgMS0uMzggMjIuNC05LjIyIDExMS41Ni05LjIyIDUuMjIgNTMgMjkuNzUgMTAxLjgyIDI2IDkzLjE5LTkuNzMgMTUuNC0zOC4yNCA2Mi4zNi00Ny4zMSA5Ny43LTUuODcgMjIuODgtNC4zNyAzNy42MS4xNSA0Ny4xNCA1LjU3IDEyLjc1IDE2LjQxIDE2LjcyIDIzLjIgMTguMjYgMjUgNS43MSA1NS4zOC0zLjYzIDg2LjctMjEuMTQtNy41MyAxMi44NC0xMy45IDI4LjUxLTkuMDYgMzkuMzQgNy4zMSAxOS42NSA0NC40OSAxOC42NiA4OC40NC05LjQ1IDIwLjE4IDMyLjE4IDQwLjA3IDU3Ljk0IDU1LjcgNzQuMTJhMzkuNzkgMzkuNzkgMCAwIDAgOC43NSA3LjA5YzUuMTQgMy4yMSA4LjU4IDMuMzcgOC41OCAzLjM3LTguMjQtNi43NS0zNC0zOC02Mi41NC05MS43OCAyMi4yMi0xNiA0NS42NS0zOC44NyA2Ny40Ny02OS4yNyAxMjIuODIgNC42IDE0My4yOS0yNC43NiAxNDgtMzEuNjQgMTQuNjctMTkuODggMy40My01Ny40NC01Ny4zMi05My42OXptLTc3Ljg1IDEwNi4yMmMyMy44MS0zNy43MSAzMC4zNC02Ny43NyAyOS40NS05Mi4zMyAyNy44NiAxNy41NyA0Ny4xOCAzNy41OCA0OS4wNiA1OC44MyAxLjE0IDEyLjkzLTguMSAyOS4xMi03OC41MSAzMy41ek0yMTYuOSAzODcuNjljOS43Ni02LjIzIDE5LjUzLTEzLjEyIDI5LjItMjAuNDkgNi42OCAxMy4zMyAxMy42IDI2LjEgMjAuNiAzOC4xOS00MC42IDIxLjg2LTY4Ljg0IDEyLjc2LTQ5LjgtMTcuN3ptMjE1LTE3MS4zNWMtMTAuMjktNS4zNC0yMS4xNi0xMC4zNC0zMi4zOC0xNS4wNWE3MjIuNDU5IDcyMi40NTkgMCAwIDAgMjIuNzQtMzYuOWMzOS4wNiAyNC4xIDQ1LjkgNTMuMTggOS42NCA1MS45NXpNMjc5LjE4IDM5OGMtNS41MS0xMS4zNS0xMS0yMy41LTE2LjUtMzYuNDQgNDMuMjUgMS4yNyA2Mi40Mi0xOC43MyA2My4yOC0yMC40MSAwIC4wNy0yNSAxNS42NC02Mi41MyAxMi4yNWE3MTguNzggNzE4Ljc4IDAgMCAwIDg1LjA2LTg0cTEzLjA2LTE1LjMxIDI0LjkzLTMxLjExYy0uMzYtLjI5LTEuNTQtMy0xNi41MS0xMi01MS43IDYwLjI3LTEwMi4zNCA5OC0xMzIuNzUgMTE1LjkyLTIwLjU5LTExLjE4LTQwLjg0LTMxLjc4LTU1LjcxLTYxLjQ5LTIwLTM5LjkyLTMwLTgyLjM5LTMxLjU3LTExNi4wNyAxMi4zLjkxIDI1LjI3IDIuMTcgMzguODUgMy44OC0yMi4yOSAzNi44LTE0LjM5IDYzLTEzLjQ3IDY0LjIzIDAtLjA3LS45NS0yOS4xNyAyMC4xNC01OS41N2E2OTUuMjMgNjk1LjIzIDAgMCAwIDQ0LjY3IDE1Mi44NGMuOTMtLjM4IDEuODQuODggMTguNjctOC4yNS0yNi4zMy03NC40Ny0zMy43Ni0xMzguMTctMzQtMTczLjQzIDIwLTEyLjQyIDQ4LjE4LTE5LjggODEuNjMtMTcuODEgNDQuNTcgMi42NyA4Ni4zNiAxNS4yNSAxMTYuMzIgMzAuNzFxLTEwLjY5IDE1LjY2LTIzLjMzIDMyLjQ3QzM2NS42MyAxNTIgMzM5LjEgMTQ1Ljg0IDMzNy41IDE0NmMuMTEgMCAyNS45IDE0LjA3IDQxLjUyIDQ3LjIyYTcxNy42MyA3MTcuNjMgMCAwIDAtMTE1LjM0LTMxLjcxIDY0Ni42MDggNjQ2LjYwOCAwIDAgMC0zOS4zOS02LjA1Yy0uMDcuNDUtMS44MSAxLjg1LTIuMTYgMjAuMzNDMzAwIDE5MC4yOCAzNTguNzggMjE1LjY4IDM4OS4zNiAyMzNjLjc0IDIzLjU1LTYuOTUgNTEuNjEtMjUuNDEgNzkuNTctMjQuNiAzNy4zMS01Ni4zOSA2Ny4yMy04NC43NyA4NS40M3ptMjcuNC0yODdjLTQ0LjU2LTEuNjYtNzMuNTggNy40My05NC42OSAyMC42NyAyLTUyLjMgMjEuMzEtNzYuMzggMzguMjEtNzUuMjhDMjY3IDUyLjE1IDMwNSAxMDguNTUgMzA2LjU4IDExMXptLTEzMC42NSAzLjFjLjQ4IDEyLjExIDEuNTkgMjQuNjIgMy4yMSAzNy4yOC0xNC41NS0uODUtMjguNzQtMS4yNS00Mi40LTEuMjYtLjA4IDMuMjQtLjEyLTUxIDI0LjY3LTQ5LjU5aC4wOWM1Ljc2IDEuMDkgMTAuNjMgNi44OCAxNC40MyAxMy41N3ptLTI4LjA2IDE2MmMyMC43NiAzOS43IDQzLjMgNjAuNTcgNjUuMjUgNzIuMzEtNDYuNzkgMjQuNzYtNzcuNTMgMjAtODQuOTIgNC41MS0uMi0uMjEtMTEuMTMtMTUuMyAxOS42Ny03Ni44MXptMjEwLjA2IDc0LjhcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVoYW5jZVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODYuNSAyOTNjMCAxOS4zLTE0IDI1LjQtMzEuMiAyNS40aC00NS4xdi01Mi45aDQ2YzE4LjYuMSAzMC4zIDcuOCAzMC4zIDI3LjV6bS03LjctODIuM2MwLTE3LjctMTMuNy0yMS45LTI4LjktMjEuOWgtMzkuNnY0NC44SDE1M2MxNS4xIDAgMjUuOC02LjYgMjUuOC0yMi45em0xMzIuMyAyMy4yYy0xOC4zIDAtMzAuNSAxMS40LTMxLjcgMjkuN2g2Mi4yYy0xLjctMTguNS0xMS4zLTI5LjctMzAuNS0yOS43ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTI3MS43IDE4NWg3Ny44di0xOC45aC03Ny44VjE4NXptLTQzIDExMC4zYzAtMjQuMS0xMS40LTQ0LjktMzUtNTEuNiAxNy4yLTguMiAyNi4yLTE3LjcgMjYuMi0zNyAwLTM4LjItMjguNS00Ny41LTYxLjQtNDcuNUg2OHYxOTJoOTMuMWMzNC45LS4yIDY3LjYtMTYuOSA2Ny42LTU1Ljl6TTM4MCAyODAuNWMwLTQxLjEtMjQuMS03NS40LTY3LjYtNzUuNC00Mi40IDAtNzEuMSAzMS44LTcxLjEgNzMuNiAwIDQzLjMgMjcuMyA3MyA3MS4xIDczIDMzLjIgMCA1NC43LTE0LjkgNjUuMS00Ni44aC0zMy43Yy0zLjcgMTEuOS0xOC42IDE4LjEtMzAuMiAxOC4xLTIyLjQgMC0zNC4xLTEzLjEtMzQuMS0zNS4zaDEwMC4yYy4xLTIuMy4zLTQuOC4zLTcuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVoYW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzIgMjM3LjJjMzEuOC0xNS4yIDQ4LjQtMzguMiA0OC40LTc0IDAtNzAuNi01Mi42LTg3LjgtMTEzLjMtODcuOEgwdjM1NC40aDE3MS44YzY0LjQgMCAxMjQuOS0zMC45IDEyNC45LTEwMi45IDAtNDQuNS0yMS4xLTc3LjQtNjQuNy04OS43ek03Ny45IDEzNS45SDE1MWMyOC4xIDAgNTMuNCA3LjkgNTMuNCA0MC41IDAgMzAuMS0xOS43IDQyLjItNDcuNSA0Mi4yaC03OXYtODIuN3ptODMuMyAyMzMuN0g3Ny45VjI3Mmg4NC45YzM0LjMgMCA1NiAxNC4zIDU2IDUwLjYgMCAzNS44LTI1LjkgNDctNTcuNiA0N3ptMzU4LjUtMjQwLjdIMzc2Vjk0aDE0My43djM0Ljl6TTU3NiAzMDUuMmMwLTc1LjktNDQuNC0xMzkuMi0xMjQuOS0xMzkuMi03OC4yIDAtMTMxLjMgNTguOC0xMzEuMyAxMzUuOCAwIDc5LjkgNTAuMyAxMzQuNyAxMzEuMyAxMzQuNyA2MS4zIDAgMTAxLTI3LjYgMTIwLjEtODYuM0g1MDljLTYuNyAyMS45LTM0LjMgMzMuNS01NS43IDMzLjUtNDEuMyAwLTYzLTI0LjItNjMtNjUuM2gxODUuMWMuMy00LjIuNi04LjcuNi0xMy4yek0zOTAuNCAyNzRjMi4zLTMzLjcgMjQuNy01NC44IDU4LjUtNTQuOCAzNS40IDAgNTMuMiAyMC44IDU2LjIgNTQuOEgzOTAuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmltb2JqZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAzMkgzMkMxNC40IDMyIDAgNDYuNCAwIDY0djM4NGMwIDE3LjYgMTQuNCAzMiAzMiAzMmgzODRjMTcuNiAwIDMyLTE0LjQgMzItMzJWNjRjMC0xNy42LTE0LjQtMzItMzItMzJ6bS02NCAyNTcuNGMwIDQ5LjQtMTEuNCA4Mi42LTEwMy44IDgyLjZoLTE2LjljLTQ0LjEgMC02Mi40LTE0LjktNzAuNC0zOC44aC0uOVYzNjhIOTZWMTM2aDY0djc0LjdoMS4xYzQuNi0zMC41IDM5LjctMzguOCA2OS43LTM4LjhoMTcuM2M5Mi40IDAgMTAzLjggMzMuMSAxMDMuOCA4Mi41djM1em0tNjQtMjguOXYyMi45YzAgMjEuNy0zLjQgMzMuOC0zOC40IDMzLjhoLTQ1LjNjLTI4LjkgMC00NC4xLTYuNS00NC4xLTM1Ljd2LTE5YzAtMjkuMyAxNS4yLTM1LjcgNDQuMS0zNS43aDQ1LjNjMzUtLjIgMzguNCAxMiAzOC40IDMzLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpdGJ1Y2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi4yIDMyQTE2IDE2IDAgMCAwIDYgNDcuOGEyNi4zNSAyNi4zNSAwIDAgMCAuMiAyLjhsNjcuOSA0MTIuMWEyMS43NyAyMS43NyAwIDAgMCAyMS4zIDE4LjJoMzI1LjdhMTYgMTYgMCAwIDAgMTYtMTMuNEw1MDUgNTAuN2ExNiAxNiAwIDAgMC0xMy4yLTE4LjMgMjQuNTggMjQuNTggMCAwIDAtMi44LS4yTDIyLjIgMzJ6bTI4NS45IDI5Ny44aC0xMDRsLTI4LjEtMTQ3aDE1Ny4zbC0yNS4yIDE0N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQml0Y29pbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2YzAgMTM2Ljk2Ny0xMTEuMDMzIDI0OC0yNDggMjQ4UzggMzkyLjk2NyA4IDI1NiAxMTkuMDMzIDggMjU2IDhzMjQ4IDExMS4wMzMgMjQ4IDI0OHptLTE0MS42NTEtMzUuMzNjNC45MzctMzIuOTk5LTIwLjE5MS01MC43MzktNTQuNTUtNjIuNTczbDExLjE0Ni00NC43MDItMjcuMjEzLTYuNzgxLTEwLjg1MSA0My41MjRjLTcuMTU0LTEuNzgzLTE0LjUwMi0zLjQ2NC0yMS44MDMtNS4xM2wxMC45MjktNDMuODEtMjcuMTk4LTYuNzgxLTExLjE1MyA0NC42ODZjLTUuOTIyLTEuMzQ5LTExLjczNS0yLjY4Mi0xNy4zNzctNC4wODRsLjAzMS0uMTQtMzcuNTMtOS4zNy03LjIzOSAyOS4wNjJzMjAuMTkxIDQuNjI3IDE5Ljc2NSA0LjkxM2MxMS4wMjIgMi43NTEgMTMuMDE0IDEwLjA0NCAxMi42OCAxNS44MjVsLTEyLjY5NiA1MC45MjVjLjc2LjE5NCAxLjc0NC40NzMgMi44MjkuOTA3LS45MDctLjIyNS0xLjg3Ni0uNDczLTIuODc2LS43MTNsLTE3Ljc5NiA3MS4zMzhjLTEuMzQ5IDMuMzQ4LTQuNzY3IDguMzctMTIuNDcxIDYuNDY0LjI3MS4zOTUtMTkuNzgtNC45MzctMTkuNzgtNC45MzdsLTEzLjUxIDMxLjE0NyAzNS40MTQgOC44MjdjNi41ODggMS42NTEgMTMuMDQ1IDMuMzc5IDE5LjQgNS4wMDZsLTExLjI2MiA0NS4yMTMgMjcuMTgyIDYuNzgxIDExLjE1My00NC43MzNhMTAzOC4yMDkgMTAzOC4yMDkgMCAwIDAgMjEuNjg3IDUuNjI3bC0xMS4xMTUgNDQuNTIzIDI3LjIxMyA2Ljc4MSAxMS4yNjItNDUuMTI4YzQ2LjQwNCA4Ljc4MSA4MS4yOTkgNS4yMzkgOTUuOTg2LTM2LjcyNyAxMS44MzYtMzMuNzktLjU4OS01My4yODEtMjUuMDA0LTY1Ljk5MSAxNy43OC00LjA5OCAzMS4xNzQtMTUuNzkyIDM0Ljc0Ny0zOS45NDl6bS02Mi4xNzcgODcuMTc5Yy04LjQxIDMzLjc5LTY1LjMwOCAxNS41MjMtODMuNzU1IDEwLjk0M2wxNC45NDQtNTkuODk5YzE4LjQ0NiA0LjYwMyA3Ny42IDEzLjcxNyA2OC44MTEgNDguOTU2em04LjQxNy04Ny42NjdjLTcuNjczIDMwLjczNi01NS4wMzEgMTUuMTItNzAuMzkzIDExLjI5MmwxMy41NDgtNTQuMzI3YzE1LjM2MyAzLjgyOCA2NC44MzYgMTAuOTczIDU2Ljg0NSA0My4wMzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzguNCA2Ny4yQzE3My44LTIyIDMyNC41LTI0IDQyMS41IDcxYzE0LjMgMTQuMS02LjQgMzcuMS0yMi40IDIxLjUtODQuOC04Mi40LTIxNS44LTgwLjMtMjk4LjktMy4yLTE2LjMgMTUuMS0zNi41LTguMy0yMS44LTIyLjF6bTk4LjkgNDE4LjZjMTkuMyA1LjcgMjkuMy0yMy42IDcuOS0zMEM3MyA0MjEuOSA5LjQgMzA2LjEgMzcuNyAxOTQuOGM1LTE5LjYtMjQuOS0yOC4xLTMwLjItNy4xLTMyLjEgMTI3LjQgNDEuMSAyNTkuOCAxNjkuOCAyOTguMXptMTQ4LjEtMmMxMjEuOS00MC4yIDE5Mi45LTE2Ni45IDE2NC40LTI5MS00LjUtMTkuNy0zNC45LTEzLjgtMzAgNy45IDI0LjIgMTA3LjctMzcuMSAyMTcuOS0xNDMuMiAyNTMuNC0yMS4yIDctMTAuNCAzNiA4LjggMjkuN3ptLTYyLjktNzlsLjItNzEuOGMwLTguMi02LjYtMTQuOC0xNC44LTE0LjgtOC4yIDAtMTQuOCA2LjctMTQuOCAxNC44bC0uMiA3MS44YzAgOC4yIDYuNiAxNC44IDE0LjggMTQuOHMxNC44LTYuNiAxNC44LTE0Ljh6bTcxLTI2OWMyLjEgOTAuOSA0LjcgMTMxLjktODUuNSAxMzIuNS05Mi41LS43LTg2LjktNDQuMy04NS41LTEzMi41IDAtMjEuOC0zMi41LTE5LjYtMzIuNSAwdjcxLjZjMCA2OS4zIDYwLjcgOTAuOSAxMTggOTAuMSA1Ny4zLjggMTE4LTIwLjggMTE4LTkwLjF2LTcxLjZjMC0xOS42LTMyLjUtMjEuOC0zMi41IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsYWNrVGllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJ2NDQ4aDQ0OFYzMkgwem0zMTYuNSAzMjUuMkwyMjQgNDQ1LjlsLTkyLjUtODguNyA2NC41LTE4NC02NC41LTg2LjZoMTg0LjlMMjUyIDE3My4ybDY0LjUgMTg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbGFja2JlcnJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2NiAxMTYuOWMwIDIzLjQtMTYuNCA0OS4xLTcyLjUgNDkuMUgyMy40bDIxLTg4LjhoNjcuOGM0Mi4xIDAgNTMuOCAyMy4zIDUzLjggMzkuN3ptMTI2LjItMzkuN2gtNjcuOEwyMDUuNyAxNjZoNzAuMWM1My44IDAgNzAuMS0yNS43IDcwLjEtNDkuMS4xLTE2LjQtMTEuNi0zOS43LTUzLjctMzkuN3pNODguOCAyMDguMUgyMUwwIDI5Ni45aDcwLjFjNTYuMSAwIDcyLjUtMjMuNCA3Mi41LTQ5LjEgMC0xNi4zLTExLjctMzkuNy01My44LTM5Ljd6bTE4MC4xIDBoLTY3LjhsLTE4LjcgODguOGg3MC4xYzUzLjggMCA3MC4xLTIzLjQgNzAuMS00OS4xIDAtMTYuMy0xMS43LTM5LjctNTMuNy0zOS43em0xODkuMy01My44aC02Ny44bC0xOC43IDg4LjhoNzAuMWM1My44IDAgNzAuMS0yMy40IDcwLjEtNDkuMS4xLTE2LjMtMTEuNi0zOS43LTUzLjctMzkuN3ptLTI4IDEzNy45aC02Ny44TDM0My43IDM4MWg3MC4xYzU2LjEgMCA3MC4xLTIzLjQgNzAuMS00OS4xIDAtMTYuMy0xMS42LTM5LjctNTMuNy0zOS43ek0yNDAuOCAzNDZIMTczbC0xOC43IDg4LjhoNzAuMWM1Ni4xIDAgNzAuMS0yNS43IDcwLjEtNDkuMS4xLTE2LjMtMTEuNi0zOS43LTUzLjctMzkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxvZ2dlckIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ2LjYgMjIyLjdjLTEuOC04LTYuOC0xNS40LTEyLjUtMTguNS0xLjgtMS0xMy0yLjItMjUtMi43LTIwLjEtLjktMjIuMy0xLjMtMjguNy01LTEwLjEtNS45LTEyLjgtMTIuMy0xMi45LTI5LjUtLjEtMzMtMTMuOC02My43LTQwLjktOTEuMy0xOS4zLTE5LjctNDAuOS0zMy02NS41LTQwLjUtNS45LTEuOC0xOS4xLTIuNC02My4zLTIuOS02OS40LS44LTg0LjguNi0xMDguNCAxMEM0NS45IDU5LjUgMTQuNyA5Ni4xIDMuMyAxNDIuOSAxLjIgMTUxLjcuNyAxNjUuOC4yIDI0Ni44Yy0uNiAxMDEuNS4xIDExNi40IDYuNCAxMzYuNSAxNS42IDQ5LjYgNTkuOSA4Ni4zIDEwNC40IDk0LjMgMTQuOCAyLjcgMTk3LjMgMy4zIDIxNiAuOCAzMi41LTQuNCA1OC0xNy41IDgxLjktNDEuOSAxNy4zLTE3LjcgMjguMS0zNi44IDM1LjItNjIuMSA0LjktMTcuNiA0LjUtMTQyLjggMi41LTE1MS43em0tMzIyLjEtNjMuNmM3LjgtNy45IDEwLTguMiA1OC44LTguMiA0My45IDAgNDUuNC4xIDUxLjggMy40IDkuMyA0LjcgMTMuNCAxMS4zIDEzLjQgMjEuOSAwIDkuNS0zLjggMTYuMi0xMi4zIDIxLjYtNC42IDIuOS03LjMgMy4xLTUwLjMgMy4zLTI2LjUuMi00Ny43LS40LTUwLjgtMS4yLTE2LjYtNC43LTIyLjgtMjguNS0xMC42LTQwLjh6bTE5MS44IDE5OS44bC0xNC45IDIuNC03Ny41LjljLTY4LjEuOC04Ny4zLS40LTkwLjktMi03LjEtMy4xLTEzLjgtMTEuNy0xNC45LTE5LjQtMS4xLTcuMyAyLjYtMTcuMyA4LjItMjIuNCA3LjEtNi40IDEwLjItNi42IDk3LjMtNi43IDg5LjYtLjEgODkuMS0uMSA5Ny42IDcuOCAxMi4xIDExLjMgOS41IDMxLjItNC45IDM5LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsb2dnZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYyLjQgMTk2YzQuOC00LjkgNi4yLTUuMSAzNi40LTUuMSAyNy4yIDAgMjguMS4xIDMyLjEgMi4xIDUuOCAyLjkgOC4zIDcgOC4zIDEzLjYgMCA1LjktMi40IDEwLTcuNiAxMy40LTIuOCAxLjgtNC41IDEuOS0zMS4xIDIuMS0xNi40LjEtMjkuNS0uMi0zMS41LS44LTEwLjMtMi45LTE0LjEtMTcuNy02LjYtMjUuM3ptNjEuNCA5NC41Yy01My45IDAtNTUuOC4yLTYwLjIgNC4xLTMuNSAzLjEtNS43IDkuNC01LjEgMTMuOS43IDQuNyA0LjggMTAuMSA5LjIgMTIgMi4yIDEgMTQuMSAxLjcgNTYuMyAxLjJsNDcuOS0uNiA5LjItMS41YzktNS4xIDEwLjUtMTcuNCAzLjEtMjQuNC01LjMtNC43LTUtNC43LTYwLjQtNC43em0yMjMuNCAxMzAuMWMtMy41IDI4LjQtMjMgNTAuNC01MS4xIDU3LjUtNy4yIDEuOC05LjcgMS45LTE3Mi45IDEuOC0xNTcuOCAwLTE2NS45LS4xLTE3Mi0xLjgtOC40LTIuMi0xNS42LTUuNS0yMi4zLTEwLTUuNi0zLjgtMTMuOS0xMS44LTE3LTE2LjQtMy44LTUuNi04LjItMTUuMy0xMC0yMkMuMSA0MjMgMCA0MjAuMyAwIDI1Ni4zIDAgOTMuMiAwIDg5LjcgMS44IDgyLjYgOC4xIDU3LjkgMjcuNyAzOSA1MyAzMy40YzcuMy0xLjYgMzMyLjEtMS45IDM0MC0uMyAyMS4yIDQuMyAzNy45IDE3LjEgNDcuNiAzNi40IDcuNyAxNS4zIDctMS41IDcuMyAxODAuNi4yIDExNS44IDAgMTY0LjUtLjcgMTcwLjV6bS04NS40LTE4NS4yYy0xLjEtNS00LjItOS42LTcuNy0xMS41LTEuMS0uNi04LTEuMy0xNS41LTEuNy0xMi40LS42LTEzLjgtLjgtMTcuOC0zLjEtNi4yLTMuNi03LjktNy42LTgtMTguMyAwLTIwLjQtOC41LTM5LjQtMjUuMy01Ni41LTEyLTEyLjItMjUuMy0yMC41LTQwLjYtMjUuMS0zLjYtMS4xLTExLjgtMS41LTM5LjItMS44LTQyLjktLjUtNTIuNS40LTY3LjEgNi4yLTI3IDEwLjctNDYuMyAzMy40LTUzLjQgNjIuNC0xLjMgNS40LTEuNiAxNC4yLTEuOSA2NC4zLS40IDYyLjggMCA3Mi4xIDQgODQuNSA5LjcgMzAuNyAzNy4xIDUzLjQgNjQuNiA1OC40IDkuMiAxLjcgMTIyLjIgMi4xIDEzMy43LjUgMjAuMS0yLjcgMzUuOS0xMC44IDUwLjctMjUuOSAxMC43LTEwLjkgMTcuNC0yMi44IDIxLjgtMzguNSAzLjItMTAuOSAyLjktODguNCAxLjctOTMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmx1ZXRvb3RoQiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTYuNDggMjYwLjAyM2w5Mi42MjYtMTAzLjMzM0wxNDMuMTI1IDB2MjA2LjMzbC04Ni4xMTEtODYuMTExLTMxLjQwNiAzMS40MDUgMTA4LjA2MSAxMDguMzk5TDI1LjYwOCAzNjguNDIybDMxLjQwNiAzMS40MDUgODYuMTExLTg2LjExMUwxNDUuODQgNTEybDE0OC41NTItMTQ4LjY0NC05Ny45MTItMTAzLjMzM3ptNDAuODYtMTAyLjk5NmwtNDkuOTc3IDQ5Ljk3OC0uMzM4LTEwMC4yOTUgNTAuMzE1IDUwLjMxN3pNMTg3LjM2MyAzMTMuMDRsNDkuOTc3IDQ5Ljk3OC01MC4zMTUgNTAuMzE2LjMzOC0xMDAuMjk0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbHVldG9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjkyLjYgMTcxLjFMMjQ5LjcgMjE0bC0uMy04NiA0My4yIDQzLjFtLTQzLjIgMjE5LjhsNDMuMS00My4xLTQyLjktNDIuOS0uMiA4NnpNNDE2IDI1OS40QzQxNiA0NjUgMzQ0LjEgNTEyIDIzMC45IDUxMlMzMiA0NjUgMzIgMjU5LjQgMTE1LjQgMCAyMjguNiAwIDQxNiA1My45IDQxNiAyNTkuNHptLTE1OC41IDBsNzkuNC04OC42TDIxMS44IDM2LjV2MTc2LjlMMTM4IDEzOS42bC0yNyAyNi45IDkyLjcgOTMtOTIuNyA5MyAyNi45IDI2LjkgNzMuOC03My44IDIuMyAxNzAgMTI3LjQtMTI3LjUtODMuOS04OC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb290c3RyYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMzLjUsMjAxLjRjMC0yMi4xLTE1LjYtMzQuMy00My0zNC4zaC01MC40djcxLjJoNDIuNUMzMTUuNCwyMzguMiwzMzMuNSwyMjUsMzMzLjUsMjAxLjR6IE01MTcsMTg4LjYgYy05LjUtMzAuOS0xMC45LTY4LjgtOS44LTk4LjFjMS4xLTMwLjUtMjIuNy01OC41LTU0LjctNTguNUgxMjMuN2MtMzIuMSwwLTU1LjgsMjguMS01NC43LDU4LjVjMSwyOS4zLTAuMyw2Ny4yLTkuOCw5OC4xIGMtOS42LDMxLTI1LjcsNTAuNi01Mi4yLDUzLjF2MjguNWMyNi40LDIuNSw0Mi42LDIyLjEsNTIuMiw1My4xYzkuNSwzMC45LDEwLjksNjguOCw5LjgsOTguMWMtMS4xLDMwLjUsMjIuNyw1OC41LDU0LjcsNTguNWgzMjguNyBjMzIuMSwwLDU1LjgtMjguMSw1NC43LTU4LjVjLTEtMjkuMywwLjMtNjcuMiw5LjgtOTguMWM5LjYtMzEsMjUuNy01MC42LDUyLjEtNTMuMXYtMjguNUM1NDIuNywyMzkuMiw1MjYuNSwyMTkuNiw1MTcsMTg4LjZ6IE0zMDAuMiwzNzUuMWgtOTcuOVYxMzYuOGg5Ny40YzQzLjMsMCw3MS43LDIzLjQsNzEuNyw1OS40YzAsMjUuMy0xOS4xLDQ3LjktNDMuNSw1MS44djEuM2MzMy4yLDMuNiw1NS41LDI2LjYsNTUuNSw1OC4zIEMzODMuNCwzNDkuNywzNTIuMSwzNzUuMSwzMDAuMiwzNzUuMXogTTI5MC4yLDI2Ni40aC01MC4xdjc4LjRoNTIuM2MzNC4yLDAsNTIuMy0xMy43LDUyLjMtMzkuNSBDMzQ0LjcsMjc5LjYsMzI2LjEsMjY2LjQsMjkwLjIsMjY2LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ0YyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTAuMjA0IDI0Mi42MzhjMjcuNzMtMTQuMTggNDUuMzc3LTM5LjM5IDQxLjI4LTgxLjMtNS4zNTgtNTcuMzUxLTUyLjQ1OC03Ni41NzMtMTE0Ljg1LTgxLjkyOVYwaC00OC41Mjh2NzcuMjAzYy0xMi42MDUgMC0yNS41MjUuMzE1LTM4LjQ0NC42M1YwaC00OC41Mjh2NzkuNDA5Yy0xNy44NDIuNTM5LTM4LjYyMi4yNzYtOTcuMzcgMHY1MS42NzhjMzguMzE0LS42NzggNTguNDE3LTMuMTQgNjMuMDIzIDIxLjQyN3YyMTcuNDI5Yy0yLjkyNSAxOS40OTItMTguNTI0IDE2LjY4NS01My4yNTUgMTYuMDcxTDMuNzY1IDQ0My42OGM4OC40ODEgMCA5Ny4zNy4zMTUgOTcuMzcuMzE1VjUxMmg0OC41Mjh2LTY3LjA2YzEzLjIzNC4zMTUgMjYuMTU0LjMxNSAzOC40NDQuMzE1VjUxMmg0OC41Mjh2LTY4LjAwNWM4MS4yOTktNC40MTIgMTM1LjY0Ny0yNC44OTQgMTQyLjg5NS0xMDEuNDY3IDUuNjcxLTYxLjQ0Ni0yMy4zMi04OC44NjItNjkuMzI2LTk5Ljg5ek0xNTAuNjA4IDEzNC41NTNjMjcuNDE1IDAgMTEzLjEyNi04LjUwNyAxMTMuMTI2IDQ4LjUyOCAwIDU0LjUxNS04NS43MSA0OC4yMTItMTEzLjEyNiA0OC4yMTJ2LTk2Ljc0em0wIDI1MS43NzZWMjc5LjgyMWMzMi43NzIgMCAxMzMuMTI3LTkuMTM4IDEzMy4xMjcgNTMuMjU1LS4wMDEgNjAuMTg2LTEwMC4zNTUgNTMuMjUzLTEzMy4xMjcgNTMuMjUzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWZmZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI3Ljg0IDM4MC42N2wtMTk2LjUgOTcuODJhMTguNiAxOC42IDAgMCAxLTE0LjY3IDBMMjAuMTYgMzgwLjY3Yy00LTItNC01LjI4IDAtNy4yOUw2Ny4yMiAzNTBhMTguNjUgMTguNjUgMCAwIDEgMTQuNjkgMGwxMzQuNzYgNjdhMTguNTEgMTguNTEgMCAwIDAgMTQuNjcgMGwxMzQuNzYtNjdhMTguNjIgMTguNjIgMCAwIDEgMTQuNjggMGw0Ny4wNiAyMy40M2M0LjA1IDEuOTYgNC4wNSA1LjI0IDAgNy4yNHptMC0xMzYuNTNsLTQ3LjA2LTIzLjQzYTE4LjYyIDE4LjYyIDAgMCAwLTE0LjY4IDBsLTEzNC43NiA2Ny4wOGExOC42OCAxOC42OCAwIDAgMS0xNC42NyAwTDgxLjkxIDIyMC43MWExOC42NSAxOC42NSAwIDAgMC0xNC42OSAwbC00Ny4wNiAyMy40M2MtNCAyLTQgNS4yOSAwIDcuMzFsMTk2LjUxIDk3LjhhMTguNiAxOC42IDAgMCAwIDE0LjY3IDBsMTk2LjUtOTcuOGM0LjA1LTIuMDIgNC4wNS01LjMgMC03LjMxek0yMC4xNiAxMzAuNDJsMTk2LjUgOTAuMjlhMjAuMDggMjAuMDggMCAwIDAgMTQuNjcgMGwxOTYuNTEtOTAuMjljNC0xLjg2IDQtNC44OSAwLTYuNzRMMjMxLjMzIDMzLjRhMTkuODggMTkuODggMCAwIDAtMTQuNjcgMGwtMTk2LjUgOTAuMjhjLTQuMDUgMS44NS00LjA1IDQuODggMCA2Ljc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdXJvbW9iZWxleHBlcnRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJ2MTI4aDEyOFYzMkgwem0xMjAgMTIwSDhWNDBoMTEydjExMnptNDAtMTIwdjEyOGgxMjhWMzJIMTYwem0xMjAgMTIwSDE2OFY0MGgxMTJ2MTEyem00MC0xMjB2MTI4aDEyOFYzMkgzMjB6bTEyMCAxMjBIMzI4VjQwaDExMnYxMTJ6TTAgMTkydjEyOGgxMjhWMTkySDB6bTEyMCAxMjBIOFYyMDBoMTEydjExMnptNDAtMTIwdjEyOGgxMjhWMTkySDE2MHptMTIwIDEyMEgxNjhWMjAwaDExMnYxMTJ6bTQwLTEyMHYxMjhoMTI4VjE5MkgzMjB6bTEyMCAxMjBIMzI4VjIwMGgxMTJ2MTEyek0wIDM1MnYxMjhoMTI4VjM1Mkgwem0xMjAgMTIwSDhWMzYwaDExMnYxMTJ6bTQwLTEyMHYxMjhoMTI4VjM1MkgxNjB6bTEyMCAxMjBIMTY4VjM2MGgxMTJ2MTEyem00MC0xMjB2MTI4aDEyOFYzNTJIMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdXlOTGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDMyQzEzMy4yNyAzMiA3Ljc5IDEzMi4zMiA3Ljc5IDI1NlMxMzMuMjcgNDgwIDI4OCA0ODBzMjgwLjIxLTEwMC4zMiAyODAuMjEtMjI0UzQ0Mi43MyAzMiAyODggMzJ6bS04NS4zOSAzNTcuMTlMNjQuMSAzOTAuNTVsNzcuMjUtMjkwLjc0aDEzMy40NGM2My4xNSAwIDg0LjkzIDI4LjY1IDc4IDcyLjg0YTYwLjI0IDYwLjI0IDAgMCAxLTEuNSA2Ljg1IDc3LjM5IDc3LjM5IDAgMCAwLTE3LjIxLTEuOTNjLTQyLjM1IDAtNzYuNjkgMzMuODgtNzYuNjkgNzUuNjUgMCAzNy4xNCAyNy4xNCA2OCA2Mi45MyA3NC40NS0xOC4yNCAzNy4xNi01Ni4xNiA2MC45Mi0xMTcuNzEgNjEuNTJ6TTM1OCAyMDcuMTFoMzJsLTIyLjE2IDkwLjMxaC0zNS40MWwtMTEuMTktMzUuNjMtNy44MyAzNS42M2gtMzcuODNsMjYuNjMtOTAuMzFoMzEuMzRsMTUgMzYuNzV6bTE0NS44NiAxODIuMDhIMzA2Ljc5TDMyMi42MyAzMjhhNzguOCA3OC44IDAgMCAwIDExLjQ3LjgzYzQyLjM0IDAgNzYuNjktMzMuODcgNzYuNjktNzUuNjUgMC0zMi42NS0yMS02MC40Ni01MC4zOC03MS4wNmwyMS4zMy04Mi4zNWg5Mi41bC01My4wNSAyMDUuMzZoMTAzLjg3ek0yMTEuNyAyNjkuMzlIMTg3bC0xMy44IDU2LjQ3aDI0LjdjMTYuMTQgMCAzMi4xMS0zLjE4IDM3Ljk0LTI2LjY1IDUuNTYtMjIuMzEtNy45OS0yOS44Mi0yNC4xNC0yOS44MnpNMjMzIDE3MGgtMjEuMzRMMjAwIDIxNy43MWgyMS4zN2MxOCAwIDM1LjM4LTE0LjY0IDM5LjIxLTMwLjE0QzI2NS4yMyAxNjguNzEgMjUxLjA3IDE3MCAyMzMgMTcwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdXlzZWxsYWRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxNTAuN2w0Mi45IDE2MC43aC04NS44TDIyNCAxNTAuN3pNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNjUuMyAzMjUuM2wtOTQuNS0yOTguN0gxNTkuOEw2NS4zIDQwNS4zSDE1NmwxMTEuNy05MS42IDI0LjIgOTEuNmg5MC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYW5hZGlhbk1hcGxlTGVhZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODMuOCAzNTEuN2MyLjUtMi41IDEwNS4yLTkyLjQgMTA1LjItOTIuNGwtMTcuNS03LjVjLTEwLTQuOS03LjQtMTEuNS01LTE3LjQgMi40LTcuNiAyMC4xLTY3LjMgMjAuMS02Ny4zcy00Ny43IDEwLTU3LjcgMTIuNWMtNy41IDIuNC0xMC0yLjUtMTIuNS03LjVzLTE1LTMyLjQtMTUtMzIuNC01Mi42IDU5LjktNTUuMSA2Mi4zYy0xMCA3LjUtMjAuMSAwLTE3LjYtMTAgMC0xMCAyNy42LTEyOS42IDI3LjYtMTI5LjZzLTMwLjEgMTcuNC00MC4xIDIyLjRjLTcuNSA1LTEyLjYgNS0xNy42LTVDMjkzLjUgNzIuMyAyNTUuOSAwIDI1NS45IDBzLTM3LjUgNzIuMy00Mi41IDc5LjhjLTUgMTAtMTAgMTAtMTcuNiA1LTEwLTUtNDAuMS0yMi40LTQwLjEtMjIuNFMxODMuMyAxODIgMTgzLjMgMTkyYzIuNSAxMC03LjUgMTcuNS0xNy42IDEwLTIuNS0yLjUtNTUuMS02Mi4zLTU1LjEtNjIuM1M5OC4xIDE2NyA5NS42IDE3MnMtNSA5LjktMTIuNSA3LjVDNzMgMTc3IDI1LjQgMTY3IDI1LjQgMTY3czE3LjYgNTkuNyAyMC4xIDY3LjNjMi40IDYgNSAxMi41LTUgMTcuNEwyMyAyNTkuM3MxMDIuNiA4OS45IDEwNS4yIDkyLjRjNS4xIDUgMTAgNy41IDUuMSAyMi41LTUuMSAxNS0xMC4xIDM1LjEtMTAuMSAzNS4xczk1LjItMjAuMSAxMDUuMy0yMi42YzguNy0uOSAxOC4zIDIuNSAxOC4zIDEyLjVTMjQxIDUxMiAyNDEgNTEyaDMwcy01LjgtMTAyLjctNS44LTExMi44IDkuNS0xMy40IDE4LjQtMTIuNWMxMCAyLjUgMTA1LjIgMjIuNiAxMDUuMiAyMi42cy01LTIwLjEtMTAtMzUuMSAwLTE3LjUgNS0yMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY0FtYXpvblBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjQuNyAyMDEuOGMuMS0xMS44IDAtMjMuNSAwLTM1LjN2LTM1LjNjMC0xLjMuNC0yIDEuNC0yLjcgMTEuNS04IDI0LjEtMTIuMSAzOC4yLTExLjEgMTIuNS45IDIyLjcgNyAyOC4xIDIxLjcgMy4zIDguOSA0LjEgMTguMiA0LjEgMjcuNyAwIDguNy0uNyAxNy4zLTMuNCAyNS42LTUuNyAxNy44LTE4LjcgMjQuNy0zNS43IDIzLjktMTEuNy0uNS0yMS45LTUtMzEuNC0xMS43LS45LS44LTEuNC0xLjYtMS4zLTIuOHptMTU0LjkgMTQuNmM0LjYgMS44IDkuMyAyIDE0LjEgMS41IDExLjYtMS4yIDIxLjktNS43IDMxLjMtMTIuNS45LS42IDEuMy0xLjMgMS4zLTIuNS0uMS0zLjkgMC03LjkgMC0xMS44IDAtNC0uMS04IDAtMTIgMC0xLjQtLjQtMi0xLjgtMi4yLTctLjktMTMuOS0yLjItMjAuOS0yLjktNy0uNi0xNC0uMy0yMC44IDEuOS02LjcgMi4yLTExLjcgNi4yLTEzLjcgMTMuMS0xLjYgNS40LTEuNiAxMC44LjEgMTYuMiAxLjYgNS41IDUuMiA5LjIgMTAuNCAxMS4yek01NzYgODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS0yMDcuNSAyMy45Yy40IDEuNy45IDMuNCAxLjYgNS4xIDE2LjUgNDAuNiAzMi45IDgxLjMgNDkuNSAxMjEuOSAxLjQgMy41IDEuNyA2LjQuMiA5LjktMi44IDYuMi00LjkgMTIuNi03LjggMTguNy0yLjYgNS41LTYuNyA5LjUtMTIuNyAxMS4yLTQuMiAxLjEtOC41IDEuMy0xMi45LjktMi4xLS4yLTQuMi0uNy02LjMtLjgtMi44LS4yLTQuMiAxLjEtNC4zIDQtLjEgMi44LS4xIDUuNiAwIDguMy4xIDQuNiAxLjYgNi43IDYuMiA3LjUgNC43LjggOS40IDEuNiAxNC4yIDEuNyAxNC4zLjMgMjUuNy01LjQgMzMuMS0xNy45IDIuOS00LjkgNS42LTEwLjEgNy43LTE1LjQgMTkuOC01MC4xIDM5LjUtMTAwLjMgNTkuMi0xNTAuNS42LTEuNSAxLjEtMyAxLjMtNC42LjQtMi40LS43LTMuNi0zLjEtMy43LTUuNi0uMS0xMS4xIDAtMTYuNyAwLTMuMSAwLTUuMyAxLjQtNi40IDQuMy0uNCAxLjEtLjkgMi4zLTEuMyAzLjRsLTI5LjEgODMuN2MtMi4xIDYuMS00LjIgMTIuMS02LjUgMTguNi0uNC0uOS0uNi0xLjQtLjgtMS45LTEwLjgtMjkuOS0yMS42LTU5LjktMzIuNC04OS44LTEuNy00LjctMy41LTkuNS01LjMtMTQuMi0uOS0yLjUtMi43LTQtNS40LTQtNi40LS4xLTEyLjgtLjItMTkuMi0uMS0yLjIgMC0zLjMgMS42LTIuOCAzLjd6TTI0Mi40IDIwNmMxLjcgMTEuNyA3LjYgMjAuOCAxOCAyNi42IDkuOSA1LjUgMjAuNyA2LjIgMzEuNyA0LjYgMTIuNy0xLjkgMjMuOS03LjMgMzMuOC0xNS41LjQtLjMuOC0uNiAxLjQtMSAuNSAzLjIuOSA2LjIgMS41IDkuMi41IDIuNiAyLjEgNC4zIDQuNSA0LjQgNC42LjEgOS4xLjEgMTMuNyAwIDIuMy0uMSAzLjgtMS42IDQtMy45LjEtLjguMS0xLjYuMS0yLjN2LTg4LjhjMC0zLjYtLjItNy4yLS43LTEwLjgtMS42LTEwLjgtNi4yLTE5LjctMTUuOS0yNS40LTUuNi0zLjMtMTEuOC01LTE4LjItNS45LTMtLjQtNi0uNy05LjEtMS4xaC0xMGMtLjguMS0xLjYuMy0yLjUuMy04LjIuNC0xNi4zIDEuNC0yNC4yIDMuNS01LjEgMS4zLTEwIDMuMi0xNSA0LjktMyAxLTQuNSAzLjItNC40IDYuNS4xIDIuOC0uMSA1LjYgMCA4LjMuMSA0LjEgMS44IDUuMiA1LjcgNC4xIDYuNS0xLjcgMTMuMS0zLjUgMTkuNy00LjggMTAuMy0xLjkgMjAuNy0yLjcgMzEuMS0xLjIgNS40LjggMTAuNSAyLjQgMTQuMSA3IDMuMSA0IDQuMiA4LjggNC40IDEzLjcuMyA2LjkuMiAxMy45LjMgMjAuOCAwIC40LS4xLjctLjIgMS4yLS40IDAtLjggMC0xLjEtLjEtOC44LTIuMS0xNy43LTMuNi0yNi44LTQuMS05LjUtLjUtMTguOS4xLTI3LjkgMy4yLTEwLjggMy44LTE5LjUgMTAuMy0yNC42IDIwLjgtNC4xIDguMy00LjYgMTctMy40IDI1Ljh6TTk4LjcgMTA2Ljl2MTc1LjNjMCAuOCAwIDEuNy4xIDIuNS4yIDIuNSAxLjcgNC4xIDQuMSA0LjIgNS45LjEgMTEuOC4xIDE3LjcgMCAyLjUgMCA0LTEuNyA0LjEtNC4xLjEtLjguMS0xLjcuMS0yLjV2LTYwLjdjLjkuNyAxLjQgMS4yIDEuOSAxLjYgMTUgMTIuNSAzMi4yIDE2LjYgNTEuMSAxMi45IDE3LjEtMy40IDI4LjktMTMuOSAzNi43LTI5LjIgNS44LTExLjYgOC4zLTI0LjEgOC43LTM3IC41LTE0LjMtMS0yOC40LTYuOC00MS43LTcuMS0xNi40LTE4LjktMjcuMy0zNi43LTMwLjktMi43LS42LTUuNS0uOC04LjItMS4yaC03Yy0xLjIuMi0yLjQuMy0zLjYuNS0xMS43IDEuNC0yMi4zIDUuOC0zMS44IDEyLjctMiAxLjQtMy45IDMtNS45IDQuNS0uMS0uNS0uMy0uOC0uNC0xLjItLjQtMi4zLS43LTQuNi0xLjEtNi45LS42LTMuOS0yLjUtNS41LTYuNC01LjZoLTkuN2MtNS45LS4xLTYuOSAxLTYuOSA2Ljh6TTQ5My42IDMzOWMtMi43LS43LTUuMSAwLTcuNiAxLTQzLjkgMTguNC04OS41IDMwLjItMTM2LjggMzUuOC0xNC41IDEuNy0yOS4xIDIuOC00My43IDMuMi0yNi42LjctNTMuMi0uOC03OS42LTQuMy0xNy44LTIuNC0zNS41LTUuNy01My05LjktMzctOC45LTcyLjctMjEuNy0xMDYuNy0zOC44LTguOC00LjQtMTcuNC05LjMtMjYuMS0xNC0zLjgtMi4xLTYuMi0xLjUtOC4yIDIuMXYxLjdjMS4yIDEuNiAyLjIgMy40IDMuNyA0LjggMzYgMzIuMiA3Ni42IDU2LjUgMTIyIDcyLjkgMjEuOSA3LjkgNDQuNCAxMy43IDY3LjMgMTcuNSAxNCAyLjMgMjggMy44IDQyLjIgNC41IDMgLjEgNiAuMiA5IC40LjcgMCAxLjQuMiAyLjEuM2gxNy43Yy43LS4xIDEuNC0uMyAyLjEtLjMgMTQuOS0uNCAyOS44LTEuOCA0NC42LTQgMjEuNC0zLjIgNDIuNC04LjEgNjIuOS0xNC43IDI5LjYtOS42IDU3LjctMjIuNCA4My40LTQwLjEgMi44LTEuOSA1LjctMy44IDgtNi4yIDQuMy00LjQgMi4zLTEwLjQtMy4zLTExLjl6bTUwLjQtMjcuN2MtLjgtNC4yLTQtNS44LTcuNi03LTUuNy0xLjktMTEuNi0yLjgtMTcuNi0zLjMtMTEtLjktMjItLjQtMzIuOCAxLjYtMTIgMi4yLTIzLjQgNi4xLTMzLjUgMTMuMS0xLjIuOC0yLjQgMS44LTMuMSAzLS42LjktLjcgMi4zLS41IDMuNC4zIDEuMyAxLjcgMS42IDMgMS41LjYgMCAxLjIgMCAxLjgtLjFsMTkuNS0yLjFjOS42LS45IDE5LjItMS41IDI4LjgtLjggNC4xLjMgOC4xIDEuMiAxMiAyLjIgNC4zIDEuMSA2LjIgNC40IDYuNCA4LjcuMyA2LjctMS4yIDEzLjEtMi45IDE5LjUtMy41IDEyLjktOC4zIDI1LjQtMTMuMyAzNy44LS4zLjgtLjcgMS43LS44IDIuNS0uNCAyLjUgMSA0IDMuNCAzLjUgMS40LS4zIDMtMS4xIDQtMi4xIDMuNy0zLjYgNy41LTcuMiAxMC42LTExLjIgMTAuNy0xMy44IDE3LTI5LjYgMjAuNy00Ni42LjctMyAxLjItNi4xIDEuNy05LjEuMi00LjcuMi05LjYuMi0xNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY0FtZXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI1LjEgMTY3LjhjMC0xNi40LTE0LjEtMTguNC0yNy40LTE4LjRsLTM5LjEtLjN2NjkuM0gyNzV2LTI1LjFoMThjMTguNCAwIDE0LjUgMTAuMyAxNC44IDI1LjFoMTYuNnYtMTMuNWMwLTkuMi0xLjUtMTUuMS0xMS0xOC40IDcuNC0zIDExLjgtMTAuNyAxMS43LTE4Ljd6bS0yOS40IDExLjNIMjc1di0xNS4zaDIxYzUuMSAwIDEwLjcgMSAxMC43IDcuNCAwIDYuNi01LjMgNy45LTExIDcuOXpNMjc5IDI2OC42aC01Mi43bC0yMSAyMi44LTIwLjUtMjIuOGgtNjYuNWwtLjEgNjkuM2g2NS40bDIxLjMtMjMgMjAuNCAyM2gzMi4ybC4xLTIzLjNjMTguOSAwIDQ5LjMgNC42IDQ5LjMtMjMuMyAwLTE3LjMtMTIuMy0yMi43LTI3LjktMjIuN3ptLTEwMy44IDU0LjdoLTQwLjZ2LTEzLjhoMzYuM3YtMTQuMWgtMzYuM3YtMTIuNWg0MS43bDE3LjkgMjAuMnptNjUuOCA4LjJsLTI1LjMtMjguMUwyNDEgMjc2em0zNy44LTMxaC0yMS4ydi0xNy42aDIxLjVjNS42IDAgMTAuMiAyLjMgMTAuMiA4LjQgMCA2LjQtNC42IDkuMi0xMC41IDkuMnptLTMxLjYtMTM2Ljd2LTE0LjZoLTU1LjV2NjkuM2g1NS41di0xNC4zaC0zOC45di0xMy44aDM3Ljh2LTE0LjFoLTM3Ljh2LTEyLjV6TTU3NiAyNTUuNGgtLjJ6bS0xOTQuNiAzMS45YzAtMTYuNC0xNC4xLTE4LjctMjcuMS0xOC43aC0zOS40bC0uMSA2OS4zaDE2LjZsLjEtMjUuM2gxNy42YzExIDAgMTQuOCAyIDE0LjggMTMuOGwtLjEgMTEuNWgxNi42bC4xLTEzLjhjMC04LjktMS44LTE1LjEtMTEtMTguNCA3LjctMy4xIDExLjgtMTAuOCAxMS45LTE4LjR6bS0yOS4yIDExLjJoLTIwLjd2LTE1LjZoMjFjNS4xIDAgMTAuNyAxIDEwLjcgNy40IDAgNi45LTUuNCA4LjItMTEgOC4yem0tMTcyLjgtODB2LTY5LjNoLTI3LjZsLTE5LjcgNDctMjEuNy00N0g4My4zdjY1LjdsLTI4LjEtNjUuN0gzMC43TDEgMjE4LjVoMTcuOWw2LjQtMTUuM2gzNC41bDYuNCAxNS4zSDEwMHYtNTQuMmwyNCA1NC4yaDE0LjZsMjQtNTQuMnY1NC4yek0zMS4yIDE4OC44bDExLjItMjcuNiAxMS41IDI3LjZ6bTQ3Ny40IDE1OC45di00LjVjLTEwLjggNS42LTMuOSA0LjUtMTU2LjcgNC41IDAtMjUuMi4xLTIzLjkgMC0yNS4yLTEuNy0uMS0zLjItLjEtOS40LS4xIDAgMTcuOS0uMSA2LjgtLjEgMjUuM2gtMzkuNmMwLTEyLjEuMS0xNS4zLjEtMjkuMi0xMCA2LTIyLjggNi40LTM0LjMgNi4yIDAgMTQuNy0uMSA4LjMtLjEgMjNoLTQ4LjljLTUuMS01LjctMi43LTMuMS0xNS40LTE3LjQtMy4yIDMuNS0xMi44IDEzLjktMTYuMSAxNy40aC04MnYtOTIuM2g4My4xYzUgNS42IDIuOCAzLjEgMTUuNSAxNy4yIDMuMi0zLjUgMTIuMi0xMy40IDE1LjctMTcuMmg1OGM5LjggMCAxOCAxLjkgMjQuMyA1LjZ2LTUuNmM1NC4zIDAgNjQuMy0xLjQgNzUuNyA1LjF2LTUuMWg3OC4ydjUuMmMxMS40LTYuOSAxOS42LTUuMiA2NC45LTUuMnY1YzEwLjMtNS45IDE2LjYtNS4yIDU0LjMtNVY4MGMwLTI2LjUtMjEuNS00OC00OC00OGgtNDgwYy0yNi41IDAtNDggMjEuNS00OCA0OHYxMDkuOGM5LjQtMjEuOSAxOS43LTQ2IDIzLjEtNTMuOWgzOS43YzQuMyAxMC4xIDEuNiAzLjcgOSAyMS4xdi0yMS4xaDQ2YzIuOSA2LjIgMTEuMSAyNCAxMy45IDMwIDUuOC0xMy42IDEwLjEtMjMuOSAxMi42LTMwaDEwM2MwLS4xIDExLjUgMCAxMS42IDAgNDMuNy4yIDUzLjYtLjggNjQuNCA1LjN2LTUuM0gzNjN2OS4zYzcuNi02LjEgMTcuOS05LjMgMzAuNy05LjNoMjcuNmMwIC41IDEuOS4zIDIuMy4zSDQ1NmM0LjIgOS44IDIuNiA2IDguOCAyMC42di0yMC42aDQzLjNjNC45IDgtMS0xLjggMTEuMiAxOC40di0xOC40aDM5Ljl2OTJoLTQxLjZjLTUuNC05LTEuNC0yLjItMTMuMi0yMS45djIxLjloLTUyLjhjLTYuNC0xNC44LS4xLS4zLTYuNi0xNS4zaC0xOWMtNC4yIDEwLTIuMiA1LjItNi40IDE1LjNoLTI2LjhjLTEyLjMgMC0yMi4zLTMtMjkuNy04Ljl2OC45aC02Ni41Yy0uMy0xMy45LS4xLTI0LjgtLjEtMjQuOC0xLjgtLjMtMy40LS4yLTkuOC0uMnYyNS4xSDE1MS4ydi0xMS40Yy0yLjUgNS42LTIuNyA1LjktNS4xIDExLjRoLTI5LjVjLTQtOC45LTIuOS02LjQtNS4xLTExLjR2MTEuNEg1OC42Yy00LjItMTAuMS0yLjItNS4zLTYuNC0xNS4zSDMzYy00LjIgMTAtMi4yIDUuMi02LjQgMTUuM0gwVjQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODAuMWMyNi41IDAgNDgtMjEuNSA0OC00OHYtOTAuNGMtMTIuNyA4LjMtMzIuNyA2LjEtNjcuNSA2LjF6bTM2LjMtNjQuNUg1NzV2LTE0LjZoLTMyLjljLTEyLjggMC0yMy44IDYuNi0yMy44IDIwLjcgMCAzMyA0Mi43IDEyLjggNDIuNyAyNy40IDAgNS4xLTQuMyA2LjQtOC40IDYuNGgtMzJsLS4xIDE0LjhoMzJjOC40IDAgMTcuNi0xLjggMjIuNS04Ljl2LTI1LjhjLTEwLjUtMTMuOC0zOS4zLTEuMy0zOS4zLTEzLjUgMC01LjggNC42LTYuNSA5LjItNi41em0tNTcgMzkuOGgtMzIuMmwtLjEgMTQuOGgzMi4yYzE0LjggMCAyNi4yLTUuNiAyNi4yLTIyIDAtMzMuMi00Mi45LTExLjItNDIuOS0yNi4zIDAtNS42IDQuOS02LjQgOS4yLTYuNGgzMC40di0xNC42aC0zMy4yYy0xMi44IDAtMjMuNSA2LjYtMjMuNSAyMC43IDAgMzMgNDIuNyAxMi41IDQyLjcgMjcuNC0uMSA1LjQtNC43IDYuNC04LjggNi40em0tNDIuMi00MC4xdi0xNC4zaC01NS4ybC0uMSA2OS4zaDU1LjJsLjEtMTQuMy0zOC42LS4zdi0xMy44SDQ0NXYtMTQuMWgtMzcuOHYtMTIuNXptLTU2LjMtMTA4LjFjLS4zLjItMS40IDIuMi0xLjQgNy42IDAgNiAuOSA3LjcgMS4xIDcuOS4yLjEgMS4xLjUgMy40LjVsNy4zLTE2LjljLTEuMSAwLTIuMS0uMS0zLjEtLjEtNS42IDAtNyAuNy03LjMgMXptMjAuNC0xMC41aC0uMXptLTE2LjItMTUuMmMtMjMuNSAwLTM0IDEyLTM0IDM1LjMgMCAyMi4yIDEwLjIgMzQgMzMgMzRoMTkuMmw2LjQtMTUuM2gzNC4zbDYuNiAxNS4zaDMzLjd2LTUxLjlsMzEuMiA1MS45aDIzLjZ2LTY5aC0xNi45djQ4LjFsLTI5LjEtNDguMWgtMjUuM3Y2NS40bC0yNy45LTY1LjRoLTI0LjhsLTIzLjUgNTQuNWgtNy40Yy0xMy4zIDAtMTYuMS04LjEtMTYuMS0xOS45IDAtMjMuOCAxNS43LTIwIDMzLjEtMTkuN3YtMTUuMnptNDIuMSAxMi4xbDExLjIgMjcuNmgtMjIuOHptLTEwMS4xLTEydjY5LjNoMTYuOXYtNjkuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NBcHBsZVBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDIuMiAyMTguNGMwIDE3LjItMTAuNSAyNy4xLTI5IDI3LjFoLTI0LjN2LTU0LjJoMjQuNGMxOC40IDAgMjguOSA5LjggMjguOSAyNy4xem00Ny41IDYyLjZjMCA4LjMgNy4yIDEzLjcgMTguNSAxMy43IDE0LjQgMCAyNS4yLTkuMSAyNS4yLTIxLjl2LTcuN2wtMjMuNSAxLjVjLTEzLjMuOS0yMC4yIDUuOC0yMC4yIDE0LjR6TTU3NiA3OXYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4Vjc5YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTI3LjggMTk3LjJjOC40LjcgMTYuOC00LjIgMjIuMS0xMC40IDUuMi02LjQgOC42LTE1IDcuNy0yMy43LTcuNC4zLTE2LjYgNC45LTIxLjkgMTEuMy00LjggNS41LTguOSAxNC40LTcuOSAyMi44em02MC42IDc0LjVjLS4yLS4yLTE5LjYtNy42LTE5LjgtMzAtLjItMTguNyAxNS4zLTI3LjcgMTYtMjguMi04LjgtMTMtMjIuNC0xNC40LTI3LjEtMTQuNy0xMi4yLS43LTIyLjYgNi45LTI4LjQgNi45LTUuOSAwLTE0LjctNi42LTI0LjMtNi40LTEyLjUuMi0yNC4yIDcuMy0zMC41IDE4LjYtMTMuMSAyMi42LTMuNCA1NiA5LjMgNzQuNCA2LjIgOS4xIDEzLjcgMTkuMSAyMy41IDE4LjcgOS4zLS40IDEzLTYgMjQuMi02IDExLjMgMCAxNC41IDYgMjQuMyA1LjkgMTAuMi0uMiAxNi41LTkuMSAyMi44LTE4LjIgNi45LTEwLjQgOS44LTIwLjQgMTAtMjF6bTEzNS40LTUzLjRjMC0yNi42LTE4LjUtNDQuOC00NC45LTQ0LjhoLTUxLjJ2MTM2LjRoMjEuMnYtNDYuNmgyOS4zYzI2LjggMCA0NS42LTE4LjQgNDUuNi00NXptOTAgMjMuN2MwLTE5LjctMTUuOC0zMi40LTQwLTMyLjQtMjIuNSAwLTM5LjEgMTIuOS0zOS43IDMwLjVoMTkuMWMxLjYtOC40IDkuNC0xMy45IDIwLTEzLjkgMTMgMCAyMC4yIDYgMjAuMiAxNy4ydjcuNWwtMjYuNCAxLjZjLTI0LjYgMS41LTM3LjkgMTEuNi0zNy45IDI5LjEgMCAxNy43IDEzLjcgMjkuNCAzMy40IDI5LjQgMTMuMyAwIDI1LjYtNi43IDMxLjItMTcuNGguNFYzMTBoMTkuNnYtNjh6TTUxNiAyMTAuOWgtMjEuNWwtMjQuOSA4MC42aC0uNGwtMjQuOS04MC42SDQyMmwzNS45IDk5LjMtMS45IDZjLTMuMiAxMC4yLTguNSAxNC4yLTE3LjkgMTQuMi0xLjcgMC00LjktLjItNi4yLS4zdjE2LjRjMS4yLjQgNi41LjUgOC4xLjUgMjAuNyAwIDMwLjQtNy45IDM4LjktMzEuOEw1MTYgMjEwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjRGluZXJzQ2x1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzkuNyA3OS45Yy05Ni45IDAtMTc1LjggNzguNi0xNzUuOCAxNzUuOCAwIDk2LjkgNzguOSAxNzUuOCAxNzUuOCAxNzUuOCA5Ny4yIDAgMTc1LjgtNzguOSAxNzUuOC0xNzUuOCAwLTk3LjItNzguNi0xNzUuOC0xNzUuOC0xNzUuOHptLTM5LjkgMjc5LjZjLTQxLjctMTUuOS03MS40LTU2LjQtNzEuNC0xMDMuOHMyOS43LTg3LjkgNzEuNC0xMDQuMXYyMDcuOXptNzkuOC4zVjE1MS42YzQxLjcgMTYuMiA3MS40IDU2LjcgNzEuNCAxMDQuMXMtMjkuNyA4Ny45LTcxLjQgMTA0LjF6TTUyOCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTMyOS43IDQ0OGgtOTAuM2MtMTA2LjIgMC0xOTMuOC04NS41LTE5My44LTE5MC4yQzQ1LjYgMTQzLjIgMTMzLjIgNjQgMjM5LjQgNjRoOTAuM2MxMDUgMCAyMDAuNyA3OS4yIDIwMC43IDE5My44IDAgMTA0LjctOTUuNyAxOTAuMi0yMDAuNyAxOTAuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NEaXNjb3ZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjAuNCAxOTYuMWMwLTcuOS01LjUtMTIuMS0xNS42LTEyLjFoLTQuOXYyNC45aDQuN2MxMC4zIDAgMTUuOC00LjQgMTUuOC0xMi44ek01MjggMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tNDQuMSAxMzguOWMyMi42IDAgNTIuOS00LjEgNTIuOSAyNC40IDAgMTIuNi02LjYgMjAuNy0xOC43IDIzLjJsMjUuOCAzNC40aC0xOS42bC0yMi4yLTMyLjhoLTIuMnYzMi44aC0xNnptLTU1LjkuMWg0NS4zdjE0SDQ0NHYxOC4yaDI4LjNWMjE3SDQ0NHYyMi4yaDI5LjNWMjUzSDQyOHptLTY4LjcgMGwyMS45IDU1LjIgMjIuMi01NS4yaDE3LjVsLTM1LjUgODQuMmgtOC42bC0zNS04NC4yem0tNTUuOS0zYzI0LjcgMCA0NC42IDIwIDQ0LjYgNDQuNiAwIDI0LjctMjAgNDQuNi00NC42IDQ0LjYtMjQuNyAwLTQ0LjYtMjAtNDQuNi00NC42IDAtMjQuNyAyMC00NC42IDQ0LjYtNDQuNnptLTQ5LjMgNi4xdjE5Yy0yMC4xLTIwLjEtNDYuOC00LjctNDYuOCAxOSAwIDI1IDI3LjUgMzguNSA0Ni44IDE5LjJ2MTljLTI5LjcgMTQuMy02My4zLTUuNy02My4zLTM4LjIgMC0zMS4yIDMzLjEtNTMgNjMuMy0zOHptLTk3LjIgNjYuM2MxMS40IDAgMjIuNC0xNS4zLTMuMy0yNC40LTE1LTUuNS0yMC4yLTExLjQtMjAuMi0yMi43IDAtMjMuMiAzMC42LTMxLjQgNDkuNy0xNC4zbC04LjQgMTAuOGMtMTAuNC0xMS42LTI0LjktNi4yLTI0LjkgMi41IDAgNC40IDIuNyA2LjkgMTIuMyAxMC4zIDE4LjIgNi42IDIzLjYgMTIuNSAyMy42IDI1LjYgMCAyOS41LTM4LjggMzcuNC01Ni42IDExLjNsMTAuMy05LjljMy43IDcuMSA5LjkgMTAuOCAxNy41IDEwLjh6TTU1LjQgMjUzSDMydi04MmgyMy40YzI2LjEgMCA0NC4xIDE3IDQ0LjEgNDEuMSAwIDE4LjUtMTMuMiA0MC45LTQ0LjEgNDAuOXptNjcuNSAwaC0xNnYtODJoMTZ6TTU0NCA0MzNjMCA4LjItNi44IDE1LTE1IDE1SDEyOGMxODkuNi0zNS42IDM4Mi43LTEzOS4yIDQxNi0xNjB6TTc0LjEgMTkxLjZjLTUuMi00LjktMTEuNi02LjYtMjEuOS02LjZINDh2NTQuMmg0LjJjMTAuMyAwIDE3LTIgMjEuOS02LjQgNS43LTUuMiA4LjktMTIuOCA4LjktMjAuN3MtMy4yLTE1LjUtOC45LTIwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjSmNiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMS41IDI0NC4zVjIxMmM0MS4yIDAgMzguNS4yIDM4LjUuMiA3LjMgMS4zIDEzLjMgNy4zIDEzLjMgMTYgMCA4LjgtNiAxNC41LTEzLjMgMTUuOC0xLjIuNC0zLjMuMy0zOC41LjN6bTQyLjggMjAuMmMtMi44LS43LTMuMy0uNS00Mi44LS41djM1YzM5LjYgMCA0MCAuMiA0Mi44LS41IDcuNS0xLjUgMTMuNS04IDEzLjUtMTcgMC04LjctNi0xNS41LTEzLjUtMTd6TTU3NiA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTgyIDE5Mi4zaC01N2MwIDY3LjEgMTAuNyAxMDkuNy0zNS44IDEwOS43LTE5LjUgMC0zOC44LTUuNy01Ny4yLTE0Ljh2MjhjMzAgOC4zIDY4IDguMyA2OCA4LjMgOTcuOSAwIDgyLTQ3LjcgODItMTMxLjJ6bTE3OC41IDQuNWMtNjMuNC0xNi0xNjUtMTQuOS0xNjUgNTkuMyAwIDc3LjEgMTA4LjIgNzMuNiAxNjUgNTkuMlYyODdDMzEyLjkgMzExLjcgMjUzIDMwOSAyNTMgMjU2czU5LjgtNTUuNiAxMDcuNS0zMS4ydi0yOHpNNTQ0IDI4Ni41YzAtMTguNS0xNi41LTMwLjUtMzgtMzJ2LS44YzE5LjUtMi43IDMwLjMtMTUuNSAzMC4zLTMwLjIgMC0xOS0xNS43LTMwLTM3LTMxIDAgMCA2LjMtLjMtMTIwLjMtLjN2MTI3LjVoMTIyLjdjMjQuMy4xIDQyLjMtMTIuOSA0Mi4zLTMzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjTWFzdGVyY2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODIuOSA0MTAuM2MwIDYuOC00LjYgMTEuNy0xMS4yIDExLjctNi44IDAtMTEuMi01LjItMTEuMi0xMS43IDAtNi41IDQuNC0xMS43IDExLjItMTEuNyA2LjYgMCAxMS4yIDUuMiAxMS4yIDExLjd6bS0zMTAuOC0xMS43Yy03LjEgMC0xMS4yIDUuMi0xMS4yIDExLjcgMCA2LjUgNC4xIDExLjcgMTEuMiAxMS43IDYuNSAwIDEwLjktNC45IDEwLjktMTEuNy0uMS02LjUtNC40LTExLjctMTAuOS0xMS43em0xMTcuNS0uM2MtNS40IDAtOC43IDMuNS05LjUgOC43aDE5LjFjLS45LTUuNy00LjQtOC43LTkuNi04Ljd6bTEwNy44LjNjLTYuOCAwLTEwLjkgNS4yLTEwLjkgMTEuNyAwIDYuNSA0LjEgMTEuNyAxMC45IDExLjcgNi44IDAgMTEuMi00LjkgMTEuMi0xMS43IDAtNi41LTQuNC0xMS43LTExLjItMTEuN3ptMTA1LjkgMjYuMWMwIC4zLjMuNS4zIDEuMSAwIC4zLS4zLjUtLjMgMS4xLS4zLjMtLjMuNS0uNS44LS4zLjMtLjUuNS0xLjEuNS0uMy4zLS41LjMtMS4xLjMtLjMgMC0uNSAwLTEuMS0uMy0uMyAwLS41LS4zLS44LS41LS4zLS4zLS41LS41LS41LS44LS4zLS41LS4zLS44LS4zLTEuMSAwLS41IDAtLjguMy0xLjEgMC0uNS4zLS44LjUtMS4xLjMtLjMuNS0uMy44LS41LjUtLjMuOC0uMyAxLjEtLjMuNSAwIC44IDAgMS4xLjMuNS4zLjguMyAxLjEuNXMuMi42LjUgMS4xem0tMi4yIDEuNGMuNSAwIC41LS4zLjgtLjMuMy0uMy4zLS41LjMtLjggMC0uMyAwLS41LS4zLS44LS4zIDAtLjUtLjMtMS4xLS4zaC0xLjZ2My41aC44VjQyNmguM2wxLjEgMS40aC44bC0xLjEtMS4zek01NzYgODF2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MWMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTY0IDIyMC42YzAgNzYuNSA2Mi4xIDEzOC41IDEzOC41IDEzOC41IDI3LjIgMCA1My45LTguMiA3Ni41LTIzLjEtNzIuOS01OS4zLTcyLjQtMTcxLjIgMC0yMzAuNS0yMi42LTE1LTQ5LjMtMjMuMS03Ni41LTIzLjEtNzYuNC0uMS0xMzguNSA2Mi0xMzguNSAxMzguMnptMjI0IDEwOC44YzcwLjUtNTUgNzAuMi0xNjIuMiAwLTIxNy41LTcwLjIgNTUuMy03MC41IDE2Mi42IDAgMjE3LjV6bS0xNDIuMyA3Ni4zYzAtOC43LTUuNy0xNC40LTE0LjctMTQuNy00LjYgMC05LjUgMS40LTEyLjggNi41LTIuNC00LjEtNi41LTYuNS0xMi4yLTYuNS0zLjggMC03LjYgMS40LTEwLjYgNS40VjM5MmgtOC4ydjM2LjdoOC4yYzAtMTguOS0yLjUtMzAuMiA5LTMwLjIgMTAuMiAwIDguMiAxMC4yIDguMiAzMC4yaDcuOWMwLTE4LjMtMi41LTMwLjIgOS0zMC4yIDEwLjIgMCA4LjIgMTAgOC4yIDMwLjJoOC4ydi0yM3ptNDQuOS0xMy43aC03Ljl2NC40Yy0yLjctMy4zLTYuNS01LjQtMTEuNy01LjQtMTAuMyAwLTE4LjIgOC4yLTE4LjIgMTkuMyAwIDExLjIgNy45IDE5LjMgMTguMiAxOS4zIDUuMiAwIDktMS45IDExLjctNS40djQuNmg3LjlWMzkyem00MC41IDI1LjZjMC0xNS0yMi45LTguMi0yMi45LTE1LjIgMC01LjcgMTEuOS00LjggMTguNS0xLjFsMy4zLTYuNWMtOS40LTYuMS0zMC4yLTYtMzAuMiA4LjIgMCAxNC4zIDIyLjkgOC4zIDIyLjkgMTUgMCA2LjMtMTMuNSA1LjgtMjAuNy44bC0zLjUgNi4zYzExLjIgNy42IDMyLjYgNiAzMi42LTcuNXptMzUuNCA5LjNsLTIuMi02LjhjLTMuOCAyLjEtMTIuMiA0LjQtMTIuMi00LjF2LTE2LjZoMTMuMVYzOTJoLTEzLjF2LTExLjJoLTguMlYzOTJoLTcuNnY3LjNoNy42VjQxNmMwIDE3LjYgMTcuMyAxNC40IDIyLjYgMTAuOXptMTMuMy0xMy40aDI3LjVjMC0xNi4yLTcuNC0yMi42LTE3LjQtMjIuNi0xMC42IDAtMTguMiA3LjktMTguMiAxOS4zIDAgMjAuNSAyMi42IDIzLjkgMzMuOCAxNC4ybC0zLjgtNmMtNy44IDYuNC0xOS42IDUuOC0yMS45LTQuOXptNTkuMS0yMS41Yy00LjYtMi0xMS42LTEuOC0xNS4yIDQuNFYzOTJoLTguMnYzNi43aDguMlY0MDhjMC0xMS42IDkuNS0xMC4xIDEyLjgtOC40bDIuNC03LjZ6bTEwLjYgMTguM2MwLTExLjQgMTEuNi0xNS4xIDIwLjctOC40bDMuOC02LjVjLTExLjYtOS4xLTMyLjctNC4xLTMyLjcgMTUgMCAxOS44IDIyLjQgMjMuOCAzMi43IDE1bC0zLjgtNi41Yy05LjIgNi41LTIwLjcgMi42LTIwLjctOC42em02Ni43LTE4LjNINDA4djQuNGMtOC4zLTExLTI5LjktNC44LTI5LjkgMTMuOSAwIDE5LjIgMjIuNCAyNC43IDI5LjkgMTMuOXY0LjZoOC4yVjM5MnptMzMuNyAwYy0yLjQtMS4yLTExLTIuOS0xNS4yIDQuNFYzOTJoLTcuOXYzNi43aDcuOVY0MDhjMC0xMSA5LTEwLjMgMTIuOC04LjRsMi40LTcuNnptNDAuMy0xNC45aC03Ljl2MTkuM2MtOC4yLTEwLjktMjkuOS01LjEtMjkuOSAxMy45IDAgMTkuNCAyMi41IDI0LjYgMjkuOSAxMy45djQuNmg3Ljl2LTUxLjd6bTcuNi03NS4xdjQuNmguOFYzMDJoMS45di0uOGgtNC42di44aDEuOXptNi42IDEyMy44YzAtLjUgMC0xLjEtLjMtMS42LS4zLS4zLS41LS44LS44LTEuMS0uMy0uMy0uOC0uNS0xLjEtLjgtLjUgMC0xLjEtLjMtMS42LS4zLS4zIDAtLjguMy0xLjQuMy0uNS4zLS44LjUtMS4xLjgtLjUuMy0uOC44LS44IDEuMS0uMy41LS4zIDEuMS0uMyAxLjYgMCAuMyAwIC44LjMgMS40IDAgLjMuMy44LjggMS4xLjMuMy41LjUgMS4xLjguNS4zIDEuMS4zIDEuNC4zLjUgMCAxLjEgMCAxLjYtLjMuMy0uMy44LS41IDEuMS0uOC4zLS4zLjUtLjguOC0xLjEuMy0uNi4zLTEuMS4zLTEuNHptMy4yLTEyNC43aC0xLjRsLTEuNiAzLjUtMS42LTMuNWgtMS40djUuNGguOHYtNC4xbDEuNiAzLjVoMS4xbDEuNC0zLjV2NC4xaDEuMXYtNS40em00LjQtODAuNWMwLTc2LjItNjIuMS0xMzguMy0xMzguNS0xMzguMy0yNy4yIDAtNTMuOSA4LjItNzYuNSAyMy4xIDcyLjEgNTkuMyA3My4yIDE3MS41IDAgMjMwLjUgMjIuNiAxNSA0OS41IDIzLjEgNzYuNSAyMy4xIDc2LjQuMSAxMzguNS02MS45IDEzOC41LTEzOC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY1BheXBhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODYuMyAyNTguMmMwIDEyLjItOS43IDIxLjUtMjIgMjEuNS05LjIgMC0xNi01LjItMTYtMTUgMC0xMi4yIDkuNS0yMiAyMS43LTIyIDkuMyAwIDE2LjMgNS43IDE2LjMgMTUuNXpNODAuNSAyMDkuN2gtNC43Yy0xLjUgMC0zIDEtMy4yIDIuN2wtNC4zIDI2LjcgOC4yLS4zYzExIDAgMTkuNS0xLjUgMjEuNS0xNC4yIDIuMy0xMy40LTYuMi0xNC45LTE3LjUtMTQuOXptMjg0IDBIMzYwYy0xLjggMC0zIDEtMy4yIDIuN2wtNC4yIDI2LjcgOC0uM2MxMyAwIDIyLTMgMjItMTgtLjEtMTAuNi05LjYtMTEuMS0xOC4xLTExLjF6TTU3NiA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTI4LjMgMjE1LjRjMC0yMS0xNi4yLTI4LTM0LjctMjhoLTQwYy0yLjUgMC01IDItNS4yIDQuN0wzMiAyOTQuMmMtLjMgMiAxLjIgNCAzLjIgNGgxOWMyLjcgMCA1LjItMi45IDUuNS01LjdsNC41LTI2LjZjMS03LjIgMTMuMi00LjcgMTgtNC43IDI4LjYgMCA0Ni4xLTE3IDQ2LjEtNDUuOHptODQuMiA4LjhoLTE5Yy0zLjggMC00IDUuNS00LjIgOC4yLTUuOC04LjUtMTQuMi0xMC0yMy43LTEwLTI0LjUgMC00My4yIDIxLjUtNDMuMiA0NS4yIDAgMTkuNSAxMi4yIDMyLjIgMzEuNyAzMi4yIDkgMCAyMC4yLTQuOSAyNi41LTExLjktLjUgMS41LTEgNC43LTEgNi4yIDAgMi4zIDEgNCAzLjIgNEgyMDBjMi43IDAgNS0yLjkgNS41LTUuN2wxMC4yLTY0LjNjLjMtMS45LTEuMi0zLjktMy4yLTMuOXptNDAuNSA5Ny45bDYzLjctOTIuNmMuNS0uNS41LTEgLjUtMS43IDAtMS43LTEuNS0zLjUtMy4yLTMuNWgtMTkuMmMtMS43IDAtMy41IDEtNC41IDIuNWwtMjYuNSAzOS0xMS0zNy41Yy0uOC0yLjItMy00LTUuNS00aC0xOC43Yy0xLjcgMC0zLjIgMS44LTMuMiAzLjUgMCAxLjIgMTkuNSA1Ni44IDIxLjIgNjIuMS0yLjcgMy44LTIwLjUgMjguNi0yMC41IDMxLjYgMCAxLjggMS41IDMuMiAzLjIgMy4yaDE5LjJjMS44LS4xIDMuNS0xLjEgNC41LTIuNnptMTU5LjMtMTA2LjdjMC0yMS0xNi4yLTI4LTM0LjctMjhoLTM5LjdjLTIuNyAwLTUuMiAyLTUuNSA0LjdsLTE2LjIgMTAyYy0uMiAyIDEuMyA0IDMuMiA0aDIwLjVjMiAwIDMuNS0xLjUgNC0zLjJsNC41LTI5YzEtNy4yIDEzLjItNC43IDE4LTQuNyAyOC40IDAgNDUuOS0xNyA0NS45LTQ1Ljh6bTg0LjIgOC44aC0xOWMtMy44IDAtNCA1LjUtNC4zIDguMi01LjUtOC41LTE0LTEwLTIzLjctMTAtMjQuNSAwLTQzLjIgMjEuNS00My4yIDQ1LjIgMCAxOS41IDEyLjIgMzIuMiAzMS43IDMyLjIgOS4zIDAgMjAuNS00LjkgMjYuNS0xMS45LS4zIDEuNS0xIDQuNy0xIDYuMiAwIDIuMyAxIDQgMy4yIDRINDg0YzIuNyAwIDUtMi45IDUuNS01LjdsMTAuMi02NC4zYy4zLTEuOS0xLjItMy45LTMuMi0zLjl6bTQ3LjUtMzMuM2MwLTItMS41LTMuNS0zLjItMy41aC0xOC41Yy0xLjUgMC0zIDEuMi0zLjIgMi43bC0xNi4yIDEwNC0uMy41YzAgMS44IDEuNSAzLjUgMy41IDMuNWgxNi41YzIuNSAwIDUtMi45IDUuMi01LjdMNTQ0IDE5MS4ydi0uM3ptLTkwIDUxLjhjLTEyLjIgMC0yMS43IDkuNy0yMS43IDIyIDAgOS43IDcgMTUgMTYuMiAxNSAxMiAwIDIxLjctOS4yIDIxLjctMjEuNS4xLTkuOC02LjktMTUuNS0xNi4yLTE1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjU3RyaXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5Mi40IDIyMC44Yy04LjkgMC0xOC43IDYuNy0xOC43IDIyLjdoMzYuN2MwLTE2LTkuMy0yMi43LTE4LTIyLjd6TTM3NSAyMjMuNGMtOC4yIDAtMTMuMyAyLjktMTcgN2wuMiA1Mi44YzMuNSAzLjcgOC41IDYuNyAxNi44IDYuNyAxMy4xIDAgMjEuOS0xNC4zIDIxLjktMzMuNCAwLTE4LjYtOS0zMy4yLTIxLjktMzMuMXpNNTI4IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MGMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTIyLjIgMjgxLjFjMCAyNS42LTIwLjMgNDAuMS00OS45IDQwLjMtMTIuMiAwLTI1LjYtMi40LTM4LjgtOC4xdi0zMy45YzEyIDYuNCAyNy4xIDExLjMgMzguOSAxMS4zIDcuOSAwIDEzLjYtMi4xIDEzLjYtOC43IDAtMTctNTQtMTAuNi01NC00OS45IDAtMjUuMiAxOS4yLTQwLjIgNDgtNDAuMiAxMS44IDAgMjMuNSAxLjggMzUuMyA2LjV2MzMuNGMtMTAuOC01LjgtMjQuNS05LjEtMzUuMy05LjEtNy41IDAtMTIuMSAyLjItMTIuMSA3LjcgMCAxNiA1NC4zIDguNCA1NC4zIDUwLjd6bTY4LjgtNTYuNmgtMjdWMjc1YzAgMjAuOSAyMi41IDE0LjQgMjcgMTIuNnYyOC45Yy00LjcgMi42LTEzLjMgNC43LTI0LjkgNC43LTIxLjEgMC0zNi45LTE1LjUtMzYuOS0zNi41bC4yLTExMy45IDM0LjctNy40djMwLjhIMTkxem03NCAyLjRjLTQuNS0xLjUtMTguNy0zLjYtMjcuMSA3LjR2ODQuNGgtMzUuNVYxOTQuMmgzMC43bDIuMiAxMC41YzguMy0xNS4zIDI0LjktMTIuMiAyOS42LTEwLjVoLjF6bTQ0LjEgOTEuOGgtMzUuN1YxOTQuMmgzNS43em0wLTE0Mi45bC0zNS43IDcuNnYtMjguOWwzNS43LTcuNnptNzQuMSAxNDUuNWMtMTIuNCAwLTIwLTUuMy0yNS4xLTlsLS4xIDQwLjItMzUuNSA3LjVWMTk0LjJoMzEuM2wxLjggOC44YzQuOS00LjUgMTMuOS0xMS4xIDI3LjgtMTEuMSAyNC45IDAgNDguNCAyMi41IDQ4LjQgNjMuOCAwIDQ1LjEtMjMuMiA2NS41LTQ4LjYgNjUuNnptMTYwLjQtNTEuNWgtNjkuNWMxLjYgMTYuNiAxMy44IDIxLjUgMjcuNiAyMS41IDE0LjEgMCAyNS4yLTMgMzQuOS03LjlWMzEyYy05LjcgNS4zLTIyLjQgOS4yLTM5LjQgOS4yLTM0LjYgMC01OC44LTIxLjctNTguOC02NC41IDAtMzYuMiAyMC41LTY0LjkgNTQuMy02NC45IDMzLjcgMCA1MS4zIDI4LjcgNTEuMyA2NS4xIDAgMy41LS4zIDEwLjktLjQgMTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NWaXNhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3MC4xIDIzMS4zczcuNiAzNy4yIDkuMyA0NUg0NDZjMy4zLTguOSAxNi00My41IDE2LTQzLjUtLjIuMyAzLjMtOS4xIDUuMy0xNC45bDIuOCAxMy40ek01NzYgODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTE1Mi41IDMzMS4yTDIxNS43IDE3NmgtNDIuNWwtMzkuMyAxMDYtNC4zLTIxLjUtMTQtNzEuNGMtMi4zLTkuOS05LjQtMTIuNy0xOC4yLTEzLjFIMzIuN2wtLjcgMy4xYzE1LjggNCAyOS45IDkuOCA0Mi4yIDE3LjFsMzUuOCAxMzVoNDIuNXptOTQuNC4yTDI3Mi4xIDE3NmgtNDAuMmwtMjUuMSAxNTUuNGg0MC4xem0xMzkuOS01MC44Yy4yLTE3LjctMTAuNi0zMS4yLTMzLjctNDIuMy0xNC4xLTcuMS0yMi43LTExLjktMjIuNy0xOS4yLjItNi42IDcuMy0xMy40IDIzLjEtMTMuNCAxMy4xLS4zIDIyLjcgMi44IDI5LjkgNS45bDMuNiAxLjcgNS41LTMzLjZjLTcuOS0zLjEtMjAuNS02LjYtMzYtNi42LTM5LjcgMC02Ny42IDIxLjItNjcuOCA1MS40LS4zIDIyLjMgMjAgMzQuNyAzNS4yIDQyLjIgMTUuNSA3LjYgMjAuOCAxMi42IDIwLjggMTkuMy0uMiAxMC40LTEyLjYgMTUuMi0yNC4xIDE1LjItMTYgMC0yNC42LTIuNS0zNy43LTguM2wtNS4zLTIuNS01LjYgMzQuOWM5LjQgNC4zIDI2LjggOC4xIDQ0LjggOC4zIDQyLjIuMSA2OS43LTIwLjggNzAtNTN6TTUyOCAzMzEuNEw0OTUuNiAxNzZoLTMxLjFjLTkuNiAwLTE2LjkgMi44LTIxIDEyLjlsLTU5LjcgMTQyLjVINDI2czYuOS0xOS4yIDguNC0yMy4zSDQ4NmMxLjIgNS41IDQuOCAyMy4zIDQuOCAyMy4zSDUyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2VudGVyY29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjkuMiAyNjguNmMtMy44IDM1LjItMzUuNCA2MC42LTcwLjYgNTYuOC0zNS4yLTMuOC02MC42LTM1LjQtNTYuOC03MC42IDMuOC0zNS4yIDM1LjQtNjAuNiA3MC42LTU2LjggMzUuMSAzLjggNjAuNiAzNS40IDU2LjggNzAuNnptLTg1LjggMjM1LjFDOTYuNyA0OTYtOC4yIDM2NS41IDEwLjEgMjI0LjNjMTEuMi04Ni42IDY1LjgtMTU2LjkgMTM5LjEtMTkyIDE2MS03Ny4xIDM0OS43IDM3LjQgMzU0LjcgMjE2LjYgNC4xIDE0Ny0xMTguNCAyNjIuMi0yNjAuNSAyNTQuOHptMTc5LjktMTgwYzI3LjktMTE4LTE2MC41LTIwNS45LTIzNy4yLTIzNC4yLTU3LjUgNTYuMy02OS4xIDE4OC42LTMzLjggMzQ0LjQgNjguOCAxNS44IDE2OS4xLTI2LjQgMjcxLTExMC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDZW50b3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg5LjYgOTcuNWwzMS42IDMxLjctNzYuMyA3Ni41Vjk3LjV6bS0xNjIuNCAzMS43bDc2LjMgNzYuNVY5Ny41aC00NC43em00MS41LTQxLjZoNDQuN3YxMjcuOWwxMC44IDEwLjggMTAuOC0xMC44Vjg3LjZoNDQuN0wyMjQuMiAzMnptMjYuMiAxNjguMWwtMTAuOC0xMC44SDU1LjV2LTQ0LjhMMCAyNTUuN2w1NS41IDU1LjZ2LTQ0LjhoMTI4LjZsMTAuOC0xMC44em03OS4zLTIwLjdoMTA3Ljl2LTQ0LjhsLTMxLjYtMzEuN3ptMTczLjMgMjAuN0wzOTIgMjAwLjF2NDQuOEgyNjQuM2wtMTAuOCAxMC44IDEwLjggMTAuOEgzOTJ2NDQuOGw1NS41LTU1LjZ6TTY1LjQgMTc2LjJsMzIuNS0zMS43IDkwLjMgOTAuNWgxNS4zdi0xNS4zbC05MC4zLTkwLjUgMzEuNi0zMS43SDY1LjR6bTMxNi43LTc4LjdoLTc4LjVsMzEuNiAzMS43LTkwLjMgOTAuNVYyMzVoMTUuM2w5MC4zLTkwLjUgMzEuNiAzMS43ek0yMDMuNSA0MTMuOVYzMDUuOGwtNzYuMyA3Ni41IDMxLjYgMzEuN2g0NC43ek02NS40IDIzNWgxMDguOGwtNzYuMy03Ni41LTMyLjUgMzEuN3ptMzE2LjcgMTAwLjJsLTMxLjYgMzEuNy05MC4zLTkwLjVoLTE1LjN2MTUuM2w5MC4zIDkwLjUtMzEuNiAzMS43aDc4LjV6bTAtNTguOEgyNzQuMmw3Ni4zIDc2LjUgMzEuNi0zMS43em0tNjAuOSAxMDUuOGwtNzYuMy03Ni41djEwOC4xaDQ0Ljd6TTk3LjkgMzUyLjlsNzYuMy03Ni41SDY1LjR2NDQuOHptMTgxLjggNzAuOUgyMzVWMjk1LjlsLTEwLjgtMTAuOC0xMC44IDEwLjh2MTI3LjloLTQ0LjdsNTUuNSA1NS42em0tMTY2LjUtNDEuNmw5MC4zLTkwLjV2LTE1LjNoLTE1LjNsLTkwLjMgOTAuNS0zMi41LTMxLjd2NzguN2g3OS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaHJvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMxLjUgMjE3LjVMNTUuMSAxMDAuMWM0Ny42LTU5LjIgMTE5LTkxLjggMTkyLTkyLjEgNDIuMy0uMyA4NS41IDEwLjUgMTI0LjggMzMuMiA0My40IDI1LjIgNzYuNCA2MS40IDk3LjQgMTAzTDI2NCAxMzMuNGMtNTguMS0zLjQtMTEzLjQgMjkuMy0xMzIuNSA4NC4xem0zMi45IDM4LjVjMCA0Ni4yIDM3LjQgODMuNiA4My42IDgzLjZzODMuNi0zNy40IDgzLjYtODMuNi0zNy40LTgzLjYtODMuNi04My42LTgzLjYgMzcuMy04My42IDgzLjZ6bTMxNC45LTg5LjJMMzM5LjYgMTc0YzM3LjkgNDQuMyAzOC41IDEwOC4yIDYuNiAxNTcuMkwyMzQuMSA1MDMuNmM0Ni41IDIuNSA5NC40LTcuNyAxMzcuOC0zMi45IDEwNy40LTYyIDE1MC45LTE5MiAxMDcuNC0zMDMuOXpNMTMzLjcgMzAzLjZMNDAuNCAxMjAuMUMxNC45IDE1OS4xIDAgMjA1LjkgMCAyNTZjMCAxMjQgOTAuOCAyMjYuNyAyMDkuNSAyNDQuOWw2My43LTEyNC44Yy01Ny42IDEwLjgtMTEzLjItMjAuOC0xMzkuNS03Mi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaHJvbWVjYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ny44LDY0SDY0Yy0yMy42LDAtNDIuNywxOS4xLTQyLjcsNDIuN3Y2My45SDY0di02My45aDM4My44djI5OC42SDI5OC42VjQ0OEg0NDhjMjMuNiwwLDQyLjctMTkuMSw0Mi43LTQyLjdWMTA2LjcgQzQ5MC43LDgzLjEsNDcxLjQsNjQsNDQ3LjgsNjR6IE0yMS4zLDM4My42TDIxLjMsMzgzLjZsMCw2My45aDYzLjlDODUuMiw0MTIuMiw1Ni42LDM4My42LDIxLjMsMzgzLjZMMjEuMywzODMuNnogTTIxLjMsMjk4LjZWMzQxIGM1OC45LDAsMTA2LjYsNDguMSwxMDYuNiwxMDdoNDIuN0MxNzAuNywzNjUuNiwxMDMuNywyOTguNywyMS4zLDI5OC42eiBNMjEzLjQsNDQ4aDQyLjdjLTAuNS0xMjkuNS0xMDUuMy0yMzQuMy0yMzQuOC0yMzQuNmwwLDQyLjQgQzEyNy4zLDI1NS42LDIxMy4zLDM0MiwyMTMuNCw0NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkZmxhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA3LjkwNiwzMTkuOTEzbC0yMzAuOC0yLjkyOGE0LjU4LDQuNTgsMCwwLDEtMy42MzItMS45MjYsNC42NDgsNC42NDgsMCwwLDEtLjQ5NC00LjE0Nyw2LjE0Myw2LjE0MywwLDAsMSw1LjM2MS00LjA3Nkw0MTEuMjgxLDMwMy45YzI3LjYzMS0xLjI2LDU3LjU0Ni0yMy41NzQsNjguMDIyLTUwLjc4NGwxMy4yODYtMzQuNTQyYTcuOTQ0LDcuOTQ0LDAsMCwwLC41MjQtMi45MzYsNy43MzUsNy43MzUsMCwwLDAtLjE2NC0xLjYzMUExNTEuOTEsMTUxLjkxLDAsMCwwLDIwMS4yNTcsMTk4LjQsNjguMTIsNjguMTIsMCwwLDAsOTQuMiwyNjkuNTlDNDEuOTI0LDI3MS4xMDYsMCwzMTMuNzI4LDAsMzY2LjEyYTk2LjA1NCw5Ni4wNTQsMCwwLDAsMS4wMjksMTMuOTU4LDQuNTA4LDQuNTA4LDAsMCwwLDQuNDQ1LDMuODcxbDQyNi4xLjA1MWMuMDQzLDAsLjA4LS4wMTkuMTIyLS4wMmE1LjYwNiw1LjYwNiwwLDAsMCw1LjI3MS00bDMuMjczLTExLjI2NWMzLjktMTMuNCwyLjQ0OC0yNS44LTQuMS0zNC45QzQzMC4xMjQsMzI1LjQyMyw0MjAuMDksMzIwLjQ4Nyw0MDcuOTA2LDMxOS45MTNaTTUxMy44NTYsMjIxLjFjLTIuMTQxLDAtNC4yNzEuMDYyLTYuMzkxLjE2NGEzLjc3MSwzLjc3MSwwLDAsMC0zLjMyNCwyLjY1M2wtOS4wNzcsMzEuMTkzYy0zLjksMTMuNC0yLjQ0OSwyNS43ODYsNC4xLDM0Ljg5LDYuMDIsOC40LDE2LjA1NCwxMy4zMjMsMjguMjM4LDEzLjlsNDkuMiwyLjkzOWE0LjQ5MSw0LjQ5MSwwLDAsMSwzLjUxLDEuODk0LDQuNjQsNC42NCwwLDAsMSwuNTE0LDQuMTY5LDYuMTUzLDYuMTUzLDAsMCwxLTUuMzUxLDQuMDc1bC01MS4xMjUsMi45MzljLTI3Ljc1NCwxLjI3LTU3LjY2OSwyMy41NzQtNjguMTQ1LDUwLjc4NGwtMy42OTUsOS42MDZhMi43MTYsMi43MTYsMCwwLDAsMi40MjcsMy42OGMuMDQ2LDAsLjA4OC4wMTcuMTM2LjAxN2gxNzUuOTFhNC42OSw0LjY5LDAsMCwwLDQuNTM5LTMuMzcsMTI0LjgwNywxMjQuODA3LDAsMCwwLDQuNjgyLTM0QzY0MCwyNzcuMyw1ODMuNTI0LDIyMS4xLDUxMy44NTYsMjIxLjFaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3Vkc2NhbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE4LjEgMTU0bC05LjQgNy42Yy0yMi41LTE5LjMtNTEuNS0zMy42LTgzLjMtMzMuNkMxNTMuOCAxMjggOTYgMTg4LjggOTYgMjYwLjNjMCA2LjYuNCAxMy4xIDEuNCAxOS40LTItNTYgNDEuOC05Ny40IDkyLjYtOTcuNCAyNC4yIDAgNDYuMiA5LjQgNjIuNiAyNC43bC0yNS4yIDIwLjRjLTguMy0uOS0xNi44IDEuOC0yMy4xIDguMS0xMS4xIDExLTExLjEgMjguOSAwIDQwIDExLjEgMTEgMjguOSAxMSA0MCAwIDYuMy02LjMgOS0xNC45IDguMS0yMy4xbDc1LjItODguOGM2LjMtNi41LTMuMy0xNS45LTkuNS05LjZ6bS04My44IDExMS41Yy01LjYgNS41LTE0LjYgNS41LTIwLjIgMC01LjYtNS42LTUuNi0xNC42IDAtMjAuMnMxNC42LTUuNiAyMC4yIDAgNS42IDE0LjcgMCAyMC4yek0yMjQgMzJDMTAwLjUgMzIgMCAxMzIuNSAwIDI1NnMxMDAuNSAyMjQgMjI0IDIyNCAyMjQtMTAwLjUgMjI0LTIyNFMzNDcuNSAzMiAyMjQgMzJ6bTAgMzg0Yy04OC4yIDAtMTYwLTcxLjgtMTYwLTE2MFMxMzUuOCA5NiAyMjQgOTZzMTYwIDcxLjggMTYwIDE2MC03MS44IDE2MC0xNjAgMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZHNtaXRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMzIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzMi41IDQxOS45YzAgNDYuNC0zNy42IDg0LjEtODQgODQuMXMtODQtMzcuNy04NC04NC4xIDM3LjYtODQgODQtODQgODQgMzcuNiA4NCA4NHptLTg0LTI0My45YzQ2LjQgMCA4MC0zNy42IDgwLTg0cy0zMy42LTg0LTgwLTg0LTg4IDM3LjYtODggODQtMjkuNiA3Ni03NiA3Ni04NCA0MS42LTg0IDg4IDM3LjYgODAgODQgODAgODQtMzMuNiA4NC04MCAzMy42LTgwIDgwLTgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZHZlcnNpZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDYxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ4LjYgMzA0YzguMiA2OC41IDY3LjQgMTE1LjUgMTQ2IDExMS4zIDUxLjIgNDMuMyAxMzYuOCA0NS44IDE4Ni40LTUuNiA2OS4yIDEuMSAxMTguNS00NC42IDEzMS41LTk5LjUgMTQuOC02Mi41LTE4LjItMTMyLjUtOTIuMS0xNTUuMS0zMy04OC4xLTEzMS40LTEwMS41LTE4Ni41LTg1LTU3LjMgMTcuMy04NC4zIDUzLjItOTkuMyAxMDkuNy03LjggMi43LTI2LjUgOC45LTQ1IDI0LjEgMTEuNyAwIDE1LjIgOC45IDE1LjIgMTkuNXYyMC40YzAgMTAuNy04LjcgMTkuNS0xOS41IDE5LjVoLTIwLjJjLTEwLjcgMC0xOS41LTYtMTkuNS0xNi43VjI0MEg5OC44Qzk1IDI0MCA4OCAyNDQuMyA4OCAyNTEuOXY0MC40YzAgNi40IDUuMyAxMS44IDExLjcgMTEuOGg0OC45em0yMjcuNCA4Yy0xMC43IDQ2LjMgMjEuNyA3Mi40IDU1LjMgODYuOEMzMjQuMSA0MzIuNiAyNTkuNyAzNDggMjk2IDI4OGMtMzMuMiAyMS42LTMzLjcgNzEuMi0yOS4yIDkyLjktMTcuOS0xMi40LTUzLjgtMzIuNC01Ny40LTc5LjgtMy0zOS45IDIxLjUtNzUuNyA1Ny05My45QzI5NyAxOTEuNCAzNjkuOSAxOTguNyA0MDAgMjQ4Yy0xNC4xLTQ4LTUzLjgtNzAuMS0xMDEuOC03NC44IDMwLjktMzAuNyA2NC40LTUwLjMgMTE0LjItNDMuNyA2OS44IDkuMyAxMzMuMiA4Mi44IDY3LjcgMTUwLjUgMzUtMTYuMyA0OC43LTU0LjQgNDcuNS03Ni45bDEwLjUgMTkuNmMxMS44IDIyIDE1LjIgNDcuNiA5LjQgNzItOS4yIDM5LTQwLjYgNjguOC03OS43IDc2LjUtMzIuMSA2LjMtODMuMS01LjEtOTEuOC01OS4yek0xMjggMjA4SDg4LjJjLTguOSAwLTE2LjItNy4zLTE2LjItMTYuMnYtMzkuNmMwLTguOSA3LjMtMTYuMiAxNi4yLTE2LjJIMTI4YzguOSAwIDE2LjIgNy4zIDE2LjIgMTYuMnYzOS42YzAgOC45LTcuMyAxNi4yLTE2LjIgMTYuMnpNMTAuMSAxNjhDNC41IDE2OCAwIDE2My41IDAgMTU3Ljl2LTI3LjhjMC01LjYgNC41LTEwLjEgMTAuMS0xMC4xaDI3LjdjNS41IDAgMTAuMSA0LjUgMTAuMSAxMC4xdjI3LjhjMCA1LjYtNC41IDEwLjEtMTAuMSAxMC4xSDEwLjF6TTE2OCAxNDIuN3YtMjEuNGMwLTUuMSA0LjItOS4zIDkuMy05LjNoMjEuNGM1LjEgMCA5LjMgNC4yIDkuMyA5LjN2MjEuNGMwIDUuMS00LjIgOS4zLTkuMyA5LjNoLTIxLjRjLTUuMSAwLTkuMy00LjItOS4zLTkuM3pNNTYgMjM1LjV2MjVjMCA2LjMtNS4xIDExLjUtMTEuNCAxMS41SDE5LjRDMTMuMSAyNzIgOCAyNjYuOCA4IDI2MC41di0yNWMwLTYuMyA1LjEtMTEuNSAxMS40LTExLjVoMjUuMWM2LjQgMCAxMS41IDUuMiAxMS41IDExLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGVwZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAyLjI4NSAxNTkuNzA0bC0yMzQtMTU2Yy03Ljk4Ny00LjkxNS0xNi41MTEtNC45Ni0yNC41NzEgMGwtMjM0IDE1NkMzLjcxNCAxNjMuNzAzIDAgMTcwLjg0NyAwIDE3Ny45ODl2MTU1Ljk5OWMwIDcuMTQzIDMuNzE0IDE0LjI4NiA5LjcxNSAxOC4yODZsMjM0IDE1Ni4wMjJjNy45ODcgNC45MTUgMTYuNTExIDQuOTYgMjQuNTcxIDBsMjM0LTE1Ni4wMjJjNi0zLjk5OSA5LjcxNS0xMS4xNDMgOS43MTUtMTguMjg2VjE3Ny45ODljLS4wMDEtNy4xNDItMy43MTUtMTQuMjg2LTkuNzE2LTE4LjI4NXpNMjc4IDYzLjEzMWwxNzIuMjg2IDExNC44NTgtNzYuODU3IDUxLjQyOUwyNzggMTY1LjcwM1Y2My4xMzF6bS00NCAwdjEwMi41NzJsLTk1LjQyOSA2My43MTUtNzYuODU3LTUxLjQyOUwyMzQgNjMuMTMxek00NCAyMTkuMTMybDU1LjE0MyAzNi44NTdMNDQgMjkyLjg0NnYtNzMuNzE0em0xOTAgMjI5LjcxNUw2MS43MTQgMzMzLjk4OWw3Ni44NTctNTEuNDI5TDIzNCAzNDYuMjc1djEwMi41NzJ6bTIyLTE0MC44NThsLTc3LjcxNS01MiA3Ny43MTUtNTIgNzcuNzE1IDUyLTc3LjcxNSA1MnptMjIgMTQwLjg1OFYzNDYuMjc1bDk1LjQyOS02My43MTUgNzYuODU3IDUxLjQyOUwyNzggNDQ4Ljg0N3ptMTkwLTE1Ni4wMDFsLTU1LjE0My0zNi44NTdMNDY4IDIxOS4xMzJ2NzMuNzE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2RpZXBpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDcyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjIuNSAyMDIuOWMzMC43IDAgMzMuNSA1My4xLS4zIDUzLjFoLTEwLjh2NDQuM2gtMjYuNnYtOTcuNGgzNy43ek00NzIgMzUyLjZDNDI5LjkgNDQ0LjUgMzUwLjQgNTA0IDI0OCA1MDQgMTExIDUwNCAwIDM5MyAwIDI1NlMxMTEgOCAyNDggOGM5Ny40IDAgMTcyLjggNTMuNyAyMTguMiAxMzguNGwtMTg2IDEwOC44TDQ3MiAzNTIuNnptLTM4LjUgMTIuNWwtNjAuMy0zMC43Yy0yNy4xIDQ0LjMtNzAuNCA3MS40LTEyMi40IDcxLjQtODIuNSAwLTE0OS4yLTY2LjctMTQ5LjItMTQ4LjkgMC04Mi41IDY2LjctMTQ5LjIgMTQ5LjItMTQ5LjIgNDguNCAwIDg4LjkgMjMuNSAxMTYuOSA2My40bDU5LjUtMzQuNmMtNDAuNy02Mi42LTEwNC43LTEwMC0xNzkuMi0xMDAtMTIxLjIgMC0yMTkuNSA5OC4zLTIxOS41IDIxOS41UzEyNi44IDQ3NS41IDI0OCA0NzUuNWM3OC42IDAgMTQ2LjUtNDIuMSAxODUuNS0xMTAuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29uZmx1ZW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjMgNDEyLjJjLTQuNSA3LjYtMi4xIDE3LjUgNS41IDIyLjJsMTA1LjkgNjUuMmM3LjcgNC43IDE3LjcgMi40IDIyLjQtNS4zIDAtLjEuMS0uMi4xLS4yIDY3LjEtMTEyLjIgODAuNS05NS45IDI4MC45LS43IDguMSAzLjkgMTcuOC40IDIxLjctNy43LjEtLjEuMS0uMy4yLS40bDUwLjQtMTE0LjFjMy42LTguMS0uMS0xNy42LTguMS0yMS4zLTIyLjItMTAuNC02Ni4yLTMxLjItMTA1LjktNTAuM0MxMjcuNSAxNzkgNDQuNiAzNDUuMyAyLjMgNDEyLjJ6bTUwNy40LTMxMi4xYzQuNS03LjYgMi4xLTE3LjUtNS41LTIyLjJMMzk4LjQgMTIuOGMtNy41LTUtMTcuNi0zLjEtMjIuNiA0LjQtLjIuMy0uNC42LS42IDEtNjcuMyAxMTIuNi04MS4xIDk1LjYtMjgwLjYuOS04LjEtMy45LTE3LjgtLjQtMjEuNyA3LjctLjEuMS0uMS4zLS4yLjRMMjIuMiAxNDEuM2MtMy42IDguMS4xIDE3LjYgOC4xIDIxLjMgMjIuMiAxMC40IDY2LjMgMzEuMiAxMDYgNTAuNCAyNDggMTIwIDMzMC44LTQ1LjQgMzczLjQtMTEyLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbm5lY3RkZXZlbG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU1MC41IDI0MWwtNTAuMDg5LTg2Ljc4NmMxLjA3MS0yLjE0MiAxLjg3NS00LjU1MyAxLjg3NS03LjIzMiAwLTguMDM2LTYuNjk2LTE0LjczMy0xNC43MzItMTUuMDAxbC01NS40NDctOTUuODkzYy41MzYtMS42MDcgMS4wNzEtMy4yMTQgMS4wNzEtNC44MjEgMC04LjU3MS02Ljk2NC0xNS4yNjgtMTUuMjY4LTE1LjI2OC00LjgyMSAwLTguODM5IDIuMTQzLTExLjc4NiA1LjYyNUgyOTkuNTE4QzI5Ni44MzkgMTguMTQzIDI5Mi44MjEgMTYgMjg4IDE2cy04LjgzOSAyLjE0My0xMS41MTggNS42MjVIMTcwLjQxMUMxNjcuNDY0IDE4LjE0MyAxNjMuNDQ3IDE2IDE1OC42MjUgMTZjLTguMzAzIDAtMTUuMjY4IDYuNjk2LTE1LjI2OCAxNS4yNjggMCAxLjYwNy41MzYgMy40ODIgMS4wNzIgNC44MjFsLTU1Ljk4MyA5Ny4yMzNjLTUuMzU2IDIuNDEtOS4xMDcgNy41LTkuMTA3IDEzLjY2MSAwIC41MzUuMjY4IDEuMDcxLjI2OCAxLjYwN2wtNTMuMzA0IDkyLjE0M2MtNy4yMzIgMS4zMzktMTIuNTkgNy41LTEyLjU5IDE1IDAgNy4yMzIgNS4wODkgMTMuMzkzIDEyLjA1NCAxNWw1NS4xNzkgOTUuMzU4Yy0uNTM2IDEuNjA3LS44MDQgMi45NDYtLjgwNCA0LjgyMSAwIDcuMjMyIDUuMDg5IDEzLjM5MyAxMi4wNTQgMTQuNzMybDUxLjY5NyA4OS43MzJjLS41MzYgMS42MDctMS4wNzEgMy40ODItMS4wNzEgNS4zNTcgMCA4LjU3MSA2Ljk2NCAxNS4yNjggMTUuMjY4IDE1LjI2OCA0LjgyMSAwIDguODM5LTIuMTQzIDExLjUxOC01LjM1N2gxMDYuODc1QzI3OS4xNjEgNDkzLjg1NyAyODMuNDQ3IDQ5NiAyODggNDk2czguODM5LTIuMTQzIDExLjUxOC01LjM1N2gxMDcuMTQzYzIuNjc4IDIuOTQ2IDYuNjk2IDQuODIxIDEwLjk4MiA0LjgyMSA4LjU3MSAwIDE1LjI2OC02Ljk2NCAxNS4yNjgtMTUuMjY4IDAtMS42MDctLjI2Ny0yLjk0Ni0uODAzLTQuMjg1bDUxLjY5Ny05MC4yNjhjNi45NjQtMS4zMzkgMTIuMDU0LTcuNSAxMi4wNTQtMTQuNzMyIDAtMS42MDctLjI2OC0zLjIxNC0uODA0LTQuODIxbDU0LjkxMS05NS4zNThjNi45NjQtMS4zMzkgMTIuMzIyLTcuNSAxMi4zMjItMTUtLjAwMi03LjIzMi01LjA5Mi0xMy4zOTMtMTEuNzg4LTE0LjczMnpNMTUzLjUzNSA0NTAuNzMybC00My42Ni03NS44MDNoNDMuNjZ2NzUuODAzem0wLTgzLjgzOWgtNDMuNjZjLS4yNjgtMS4wNzEtLjgwNC0yLjE0Mi0xLjMzOS0zLjIxNGw0NC45OTktNDcuNDF2NTAuNjI0em0wLTYyLjQxMWwtNTAuMzU3IDUzLjMwNGMtMS4zMzktLjUzNi0yLjY3OS0xLjM0LTQuMDE4LTEuNjA3TDQzLjQ0NyAyNTkuNzVjLjUzNS0xLjMzOS41MzUtMi42NzkuNTM1LTQuMDE4czAtMi40MS0uMjY4LTMuNDgybDUxLjk2NS05MGMyLjY3OS0uMjY4IDUuMzU3LTEuMDcyIDcuNzY4LTIuNjc5bDUwLjA4OSA1MS45NjV2OTIuOTQ2em0wLTEwMi4zMjJsLTQ1LjgwMy00Ny40MWMxLjMzOS0yLjE0MyAyLjE0My00LjgyMSAyLjE0My03Ljc2NyAwLS4yNjgtLjI2OC0uODA0LS4yNjgtMS4wNzJsNDMuOTI4LTE1LjgwNHY3Mi4wNTN6bTAtODAuNjI1bC00My42NiAxNS44MDQgNDMuNjYtNzUuNTM2djU5LjczMnptMzI2LjUxOSAzOS4xMDhsLjgwNCAxLjMzOUw0NDUuNSAzMjkuMTI1bC02My43NS02Ny4yMzIgOTguMDM2LTEwMS41MTguMjY4LjI2OHpNMjkxLjc1IDM1NS4xMDdsMTEuNTE4IDExLjc4NkgyODAuNWwxMS4yNS0xMS43ODZ6bS0uMjY4LTExLjI1bC04My4zMDMtODUuNDQ2IDc5LjU1My04NC4zNzUgODMuMDM2IDg3LjU4OS03OS4yODYgODIuMjMyem01LjM1NyA1Ljg5M2w3OS4yODYtODIuMjMyIDY3LjUgNzEuMjUtNS44OTIgMjguMTI1SDMxMy43MTRsLTE2Ljg3NS0xNy4xNDN6TTQxMC40MTEgNDQuMzkzYzEuMDcxLjUzNiAyLjE0MiAxLjA3MiAzLjQ4MiAxLjM0bDU3Ljg1NyAxMDAuNzE0di41MzZjMCAyLjk0Ni44MDMgNS42MjQgMi4xNDMgNy43NjdMMzc2LjM5MyAyNTZsLTgzLjAzNS04Ny41ODlMNDEwLjQxMSA0NC4zOTN6bS05LjEwNy0yLjE0M0wyODcuNzMyIDE2Mi41MThsLTU3LjA1NC02MC4yNjggMTY2LjMzOS02MGg0LjI4N3ptLTEyMy40ODMgMGMyLjY3OCAyLjY3OCA2LjE2IDQuMjg1IDEwLjE3OSA0LjI4NXM3LjUtMS42MDcgMTAuMTc5LTQuMjg1aDc1TDIyNC43ODYgOTUuODIxIDE3My44OTMgNDIuMjVoMTAzLjkyOHptLTExNi4yNDkgNS42MjVsMS4wNzEtMi4xNDJhMzMuODM0IDMzLjgzNCAwIDAgMCAyLjY3OS0uODA0bDUxLjE2MSA1My44NC01NC45MTEgMTkuODIxVjQ3Ljg3NXptMCA3OS4yODZsNjAuODAzLTIxLjk2NCA1OS43MzIgNjMuMjE0LTc5LjU1MyA4NC4xMDctNDAuOTgyLTQyLjA1M3YtODMuMzA0em0wIDkyLjY3OEwxOTggMjU3LjYwN2wtMzYuNDI4IDM4LjMwNHYtNzYuMDcyem0wIDg3Ljg1OGw0Mi4wNTMtNDQuNDY0IDgyLjc2OCA4NS45ODItMTcuMTQzIDE3LjY3OEgxNjEuNTcydi01OS4xOTZ6bTYuOTY0IDE2Mi4wNTNjLTEuNjA3LTEuNjA3LTMuNDgyLTIuNjc4LTUuODkzLTMuNDgybC0xLjA3MS0xLjYwN3YtODkuNzMyaDk5LjkxbC05MS42MDcgOTQuODIxaC0xLjMzOXptMTI5LjkxMSAwYy0yLjY3OS0yLjQxLTYuNDI4LTQuMjg1LTEwLjQ0Ny00LjI4NXMtNy43NjcgMS44NzUtMTAuNDQ3IDQuMjg1aC05Ni40MjlsOTEuNjA3LTk0LjgyMWgzOC4zMDRsOTEuNjA3IDk0LjgyMUgyOTguNDQ3em0xMjAtMTEuNzg2bC00LjI4NiA3LjVjLTEuMzM5LjI2OC0yLjQxLjgwMy0zLjQ4MiAxLjMzOWwtODkuMTk2LTkxLjg3NWgxMTQuMzc2bC0xNy40MTIgODMuMDM2em0xMi44NTYtMjIuMjMybDEyLjg1OC02MC44MDNoMjEuOTY0bC0zNC44MjIgNjAuODAzem0zNC44MjItNjguODM5aC0yMC4zNTdsNC41NTMtMjEuMTYgMTcuMTQzIDE4LjIxNGMtLjUzNS44MDMtMS4wNzEgMS44NzQtMS4zMzkgMi45NDZ6bTY2LjE2MS0xMDcuNDExbC01NS40NDcgOTYuNjk3Yy0xLjMzOS41MzUtMi42NzkgMS4wNzEtNC4wMTggMS44NzRsLTIwLjYyNS0yMS45NjQgMzQuNTU0LTE2My45MjggNDUuODAzIDc5LjI4NmMtLjI2NyAxLjMzOS0uODAzIDIuNjc4LS44MDMgNC4yODUgMCAxLjMzOS4yNjggMi40MTEuNTM2IDMuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbnRhbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NS40IDMwNWMxNC40IDY3LjEgMjYuNCAxMjkgNjguMiAxNzVIMzRjLTE4LjcgMC0zNC0xNS4yLTM0LTM0VjY2YzAtMTguNyAxNS4yLTM0IDM0LTM0aDU3LjdDNzcuOSA0NC42IDY1LjYgNTkuMiA1NC44IDc1LjZjLTQ1LjQgNzAtMjcgMTQ2LjgtOS40IDIyOS40ek00NzggMzJoLTkwLjJjMjEuNCAyMS40IDM5LjIgNDkuNSA1Mi43IDg0LjFsLTEzNy4xIDI5LjNjLTE0LjktMjktMzcuOC01My4zLTgyLjYtNDMuOS0yNC42IDUuMy00MSAxOS4zLTQ4LjMgMzQuNi04LjggMTguNy0xMy4yIDM5LjggOC4yIDE0MC4zIDIxLjEgMTAwLjIgMzMuNyAxMTcuNyA0OS41IDEzMS4yIDEyLjkgMTEuMSAzMy40IDE3IDU4LjMgMTEuNyA0NC41LTkuNCA1NS43LTQwLjcgNTcuNC03My4ybDEzNy40LTI5LjZjMy4yIDcxLjUtMTguNyAxMjUuMi01Ny40IDE2My42SDQ3OGMxOC43IDAgMzQtMTUuMiAzNC0zNFY2NmMwLTE4LjgtMTUuMi0zNC0zNC0zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ290dG9uQnVyZWF1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3NC4zMSAzMzAuNDFjLTIzLjY2IDkxLjg1LTk0LjIzIDE0NC41OS0yMDEuOSAxNDguMzVWNDI5LjZjMC00OCAyNi40MS03NC4zOSA3NC4zOS03NC4zOSA2MiAwIDk5LjItMzcuMiA5OS4yLTk5LjIxIDAtNjEuMzctMzYuNTMtOTguMjgtOTcuMzgtOTkuMDYtMzMtNjkuMzItMTQ2LjUtNjQuNjUtMTc3LjI0IDBDMTEwLjUyIDE1Ny43MiA3NCAxOTQuNjMgNzQgMjU2YzAgNjIuMTMgMzcuMjcgOTkuNDEgOTkuNCA5OS40MSA0OCAwIDc0LjU1IDI2LjIzIDc0LjU1IDc0LjM5VjQ3OWMtMTM0LjQzLTUtMjExLjEtODUuMDctMjExLjEtMjIzIDAtMTQxLjgyIDgxLjM1LTIyMy4yIDIyMy4yLTIyMy4yIDExNC43NyAwIDE4OS44NCA1My4yIDIxNC42OSAxNDguODFINTAwQzQ3My44OCA3MS41MSAzODguMjIgOCAyNTkuODIgOCAxMDUgOCAxMiAxMDEuMTkgMTIgMjU1LjgyIDEyIDQxMS4xNCAxMDUuMTkgNTA0LjM0IDI1OS44MiA1MDRjMTI4LjI3IDAgMjEzLjg3LTYzLjgxIDIzOS42Ny0xNzMuNTl6TTM1NyAxODIuMzNjNDEuMzcgMy40NSA2NC4yIDI5IDY0LjIgNzMuNjcgMCA0OC0yNi40MyA3NC40MS03NC40IDc0LjQxLTI4LjYxIDAtNDkuMzMtOS41OS02MS41OS0yNy4zMyA4My4wNi0xNi41NSA3NS41OS05OS42NyA3MS43OS0xMjAuNzV6bS04MS42OCA5Ny4zNmMtMi40Ni0xMC4zNC0xNi4zMy04NyA1Ni4yMy05NyAyLjI3IDEwLjA5IDE2LjUyIDg3LjExLTU2LjI2IDk3ek0yNjAgMTMyYzI4LjYxIDAgNDkgOS42NyA2MS40NCAyNy42MS0yOC4zNiA1LjQ4LTQ5LjM2IDIwLjU5LTYxLjU5IDQzLjQ1LTEyLjIzLTIyLjg2LTMzLjIzLTM4LTYxLjYtNDMuNDUgMTIuNDEtMTcuNjkgMzMuMjctMjcuMzUgNjEuNTctMjcuMzV6bS03MS41MiA1MC43MmM3My4xNyAxMC41NyA1OC45MSA4Ni44MSA1Ni40OSA5Ny03Mi40MS05Ljg0LTU5LTg2Ljk1LTU2LjI1LTk3ek0xNzMuMiAzMzAuNDFjLTQ4IDAtNzQuNC0yNi40LTc0LjQtNzQuNDEgMC00NC4zNiAyMi44Ni03MCA2NC4yMi03My42Ny02Ljc1IDM3LjItMS4zOCAxMDYuNTMgNzEuNjUgMTIwLjc1LTEyLjE0IDE3LjYzLTMyLjg0IDI3LjMtNjEuMTQgMjcuM3ptNTMuMjEgMTIuMzlBODAuOCA4MC44IDAgMCAwIDI2MCAzMDkuMjVjNy43NyAxNC40OSAxOS4zMyAyNS41NCAzMy44MiAzMy41NWE4MC4yOCA4MC4yOCAwIDAgMC0zMy41OCAzMy44M2MtOC0xNC41LTE5LjA3LTI2LjIzLTMzLjU2LTMzLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcGFuZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEwLjMgMjIwLjJjLTUuNi0yNC44LTI2LjktNDEuMi01MS00MS4yaC0zN2MtNy4xIDAtMTIuNSA0LjUtMTQuMyAxMC45TDczLjEgMzIwbDI0LjctLjFjNi44IDAgMTIuMy00LjUgMTQuMi0xMC43bDI1LjgtOTUuN2gxOS44YzguNCAwIDE2LjIgNS42IDE4LjMgMTQuOCAyLjUgMTAuOS01LjkgMjIuNi0xOC4zIDIyLjZoLTEwLjNjLTcgMC0xMi41IDQuNi0xNC4zIDEwLjhsLTYuNCAyMy44aDMyYzM3LjIgMCA1OC4zLTM2LjIgNTEuNy02NS4zem0tMTU2LjUgMjhoMTguNmM2LjkgMCAxMi40LTQuNCAxNC4zLTEwLjlsNi4yLTIzLjZoLTQwQzMwIDIxMy43IDkgMjI3LjggMS43IDI1NC44LTcgMjg4LjYgMTguNSAzMjAgNTIgMzIwaDEyLjRsNy4xLTI2LjFjMS4yLTQuNC0yLjItOC4zLTYuNC04LjNINTMuOGMtMjQuNyAwLTI0LjktMzcuNCAwLTM3LjR6bTI0Ny41LTM0LjhoLTc3LjlsLTMuNSAxMy40Yy0yLjQgOS42IDQuNSAxOC41IDE0LjIgMTguNWg1Ny41YzQgMCAyLjQgNC4zIDIuMSA1LjNsLTguNiAzMS44Yy0uNCAxLjQtLjkgNS4zLTUuNSA1LjNoLTM0LjljLTUuMyAwLTUuMy03LjkgMC03LjloMjEuNmM2LjggMCAxMi4zLTQuNiAxNC4yLTEwLjhsMy41LTEzLjJoLTQ4LjRjLTM5LjIgMC00My42IDYzLjgtLjcgNjMuOGw1Ny41LjJjMTEuMiAwIDIwLjYtNy4yIDIzLjQtMTcuOGwxNC01MS44YzQuOC0xOS4yLTkuNy0zNi44LTI4LjUtMzYuOHpNNjMzLjEgMTc5aC0xOC45Yy00LjkgMC05LjIgMy4yLTEwLjQgNy45TDU2OC4yIDMyMGMyMC43IDAgMzkuOC0xMy44IDQ0LjktMzQuNWwyNi41LTk4LjJjMS4yLTQuMy0yLTguMy02LjUtOC4zem0tMjM2LjMgMzQuN3YuMWgtNDguM2wtMjYuMiA5OGMtMS4yIDQuNCAyLjIgOC4zIDYuNCA4LjNoMTguOWM0LjggMCA5LjItMyAxMC40LTcuOGwxNy4yLTY0SDM5NWMxMi41IDAgMjEuNCAxMS44IDE4LjEgMjMuNGwtMTAuNiA0MGMtMS4yIDQuMyAxLjkgOC4zIDYuNCA4LjNINDI4YzQuNiAwIDkuMS0yLjkgMTAuMy03LjhsOC44LTMzLjFjOS0zMy4xLTE1LjktNjUuNC01MC4zLTY1LjR6bTk4LjMgNzQuNmMtMy42IDAtNi0zLjQtNS4xLTYuN2w4LTMwYy45LTMuOSAzLjctNiA3LjgtNmgzMi45YzIuNiAwIDQuNiAyLjQgMy45IDUuMWwtLjcgMi42Yy0uNiAyLTEuOSAzLTMuOSAzaC0yMS42Yy03IDAtMTIuNiA0LjYtMTQuMiAxMC44bC0zLjUgMTNoNTMuNGMxMC41IDAgMjAuMy02LjYgMjMuMi0xNy42bDMuMi0xMmM0LjktMTkuMS05LjMtMzYuOC0yOC4zLTM2LjhoLTQ3LjNjLTE3LjkgMC0zMy44IDEyLTM4LjYgMjkuNmwtMTAuOCA0MGMtNSAxNy43IDguMyAzNi43IDI4LjMgMzYuN2g2Ni43YzYuOCAwIDEyLjMtNC41IDE0LjItMTAuN2w1LjctMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc0J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxNC45IDE5NC40djEwMS40aC0yOC4zdjEyMC41aC03Ny4xVjI5NS45aC0yOC4zVjE5NC40YzAtNC40IDEuNi04LjIgNC42LTExLjMgMy4xLTMuMSA2LjktNC43IDExLjMtNC43SDI5OWM0LjEgMCA3LjggMS42IDExLjEgNC43IDMuMSAzLjIgNC44IDYuOSA0LjggMTEuM3ptLTEwMS41LTYzLjdjMC0yMy4zIDExLjUtMzUgMzQuNS0zNXMzNC41IDExLjcgMzQuNSAzNWMwIDIzLTExLjUgMzQuNS0zNC41IDM0LjVzLTM0LjUtMTEuNS0zNC41LTM0LjV6TTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNOY0V1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny43IDhDMTAzLjYgOCAwIDEyNC44IDAgMjU2YzAgMTM2LjMgMTExLjcgMjQ4IDI0Ny43IDI0OEMzNzcuOSA1MDQgNDk2IDQwMy4xIDQ5NiAyNTYgNDk2IDExNyAzODguNCA4IDI0Ny43IDh6bS42IDQ1MC43Yy0xMTIgMC0yMDMuNi05Mi41LTIwMy42LTIwMi43IDAtMjMuMiAzLjctNDUuMiAxMC45LTY2bDY1LjcgMjkuMWgtNC43djI5LjVoMjMuM2MwIDYuMi0uNCAzLjItLjQgMTkuNWgtMjIuOHYyOS41aDI3YzExLjQgNjcgNjcuMiAxMDEuMyAxMjQuNiAxMDEuMyAyNi42IDAgNTAuNi03LjkgNjQuOC0xNS44bC0xMC00Ni4xYy04LjcgNC42LTI4LjIgMTAuOC00Ny4zIDEwLjgtMjguMiAwLTU4LjEtMTAuOS02Ny4zLTUwLjJoOTAuM2wxMjguMyA1Ni44Yy0xLjUgMi4xLTU2LjIgMTA0LjMtMTc4LjggMTA0LjN6bS0xNi43LTE5MC42bC0uNS0uNC45LjRoLS40em03Ny4yLTE5LjVoMy43di0yOS41aC03MC4zbC0yOC42LTEyLjZjMi41LTUuNSA1LjQtMTAuNSA4LjgtMTQuMyAxMi45LTE1LjggMzEuMS0yMi40IDUxLjEtMjIuNCAxOC4zIDAgMzUuMyA1LjQgNDYuMSAxMGwxMS42LTQ3LjNjLTE1LTYuNi0zNy0xMi40LTYyLjMtMTIuNC0zOSAwLTcyLjIgMTUuOC05NS45IDQyLjMtNS4zIDYuMS05LjggMTIuOS0xMy45IDIwLjFsLTgxLjYtMzYuMWM2NC42LTk2LjggMTU3LjctOTMuNiAxNzAuNy05My42IDExMyAwIDIwMyA5MC4yIDIwMyAyMDMuNCAwIDE4LjctMi4xIDM2LjMtNi4zIDUyLjlsLTEzNi4xLTYwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc05jSnAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjcgOEMxMDMuNiA4IDAgMTI0LjggMCAyNTZjMCAxMzYuNCAxMTEuOCAyNDggMjQ3LjcgMjQ4QzM3Ny45IDUwNCA0OTYgNDAzLjIgNDk2IDI1NiA0OTYgMTE3LjIgMzg4LjUgOCAyNDcuNyA4em0uNiA0NTAuN2MtMTEyIDAtMjAzLjYtOTIuNS0yMDMuNi0yMDIuNyAwLTIxLjEgMy00MS4yIDktNjAuM2wxMjcgNTYuNWgtMjcuOXYzOC42aDU4LjFsNS43IDExLjh2MTguN2gtNjMuOFYzNjBoNjMuOHY1Nmg2MS43di01Nmg2NC4ydi0zNS43bDgxIDM2LjFjLTEuNSAyLjItNTcuMSA5OC4zLTE3NS4yIDk4LjN6bTg3LjYtMTM3LjNoLTU3LjZ2LTE4LjdsMi45LTUuNiA1NC43IDI0LjN6bTYuNS01MS40di0xNy44aC0zOC42bDYzLTExNkgzMDFsLTQzLjQgOTYtMjMtMTAuMi0zOS42LTg1LjdoLTY1LjhsMjcuMyA1MS04MS45LTM2LjVjMjcuOC00NC4xIDgyLjYtOTguMSAxNzMuNy05OC4xIDExMi44IDAgMjAzIDkwIDIwMyAyMDMuNCAwIDIxLTIuNyA0MC42LTcuOSA1OWwtMTAxLTQ1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc05jIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg3LjQgOCA0OTYgMTE1LjkgNDk2IDI1NmMwIDE0Ny4yLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjEgNTA0IDAgMzkzLjIgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6TTU1LjggMTg5LjFjLTcuNCAyMC40LTExLjEgNDIuNy0xMS4xIDY2LjkgMCAxMTAuOSA5Mi4xIDIwMi40IDIwMy43IDIwMi40IDEyMi40IDAgMTc3LjItMTAxLjggMTc4LjUtMTA0LjFsLTkzLjQtNDEuNmMtNy43IDM3LjEtNDEuMiA1My02OC4yIDU1LjR2MzguMWgtMjguOFYzNjhjLTI3LjUtLjMtNTIuNi0xMC4yLTc1LjMtMjkuN2wzNC4xLTM0LjVjMzEuNyAyOS40IDg2LjQgMzEuOCA4Ni40LTIuMiAwLTYuMi0yLjItMTEuMi02LjYtMTUuMS0xNC4yLTYtMS44LS4xLTIxOS4zLTk3LjR6TTI0OC40IDUyLjNjLTM4LjQgMC0xMTIuNCA4LjctMTcwLjUgOTNsOTQuOCA0Mi41YzEwLTMxLjMgNDAuNC00Mi45IDYzLjgtNDQuM3YtMzguMWgyOC44djM4LjFjMjIuNyAxLjIgNDMuNCA4LjkgNjIgMjNMMjk1IDE5OS43Yy00Mi43LTI5LjktODMuNS04LTcwIDExLjEgNTMuNCAyNC4xIDQzLjggMTkuOCA5MyA0MS42bDEyNy4xIDU2LjdjNC4xLTE3LjQgNi4yLTM1LjEgNi4yLTUzLjEgMC01Ny0xOS44LTEwNS01OS4zLTE0My45LTM5LjMtMzkuOS04Ny4yLTU5LjgtMTQzLjYtNTkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zTmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bTk0IDE0NC4zdjQyLjVIMTYyLjFWMTk3aDE4MC4zem0wIDc5Ljh2NDIuNUgxNjIuMXYtNDIuNWgxODAuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zUGRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMxMDQuNyA4IDAgMTIzLjEgMCAyNTZjMCAxMzguNSAxMTMuNiAyNDggMjQ3LjYgMjQ4QzM3Ny41IDUwNCA0OTYgNDAzLjEgNDk2IDI1NiA0OTYgMTE4LjEgMzg5LjQgOCAyNDcuNiA4em0uOCA0NTAuOGMtMTEyLjUgMC0yMDMuNy05My0yMDMuNy0yMDIuOCAwLTEwNS40IDg1LjUtMjAzLjMgMjAzLjctMjAzLjMgMTEyLjYgMCAyMDIuOSA4OS41IDIwMi44IDIwMy4zIDAgMTIxLjctOTkuNiAyMDIuOC0yMDIuOCAyMDIuOHpNMzE2LjcgMTg2aC01My4ydjEzNy4yaDUzLjJjMjEuNCAwIDcwLTUuMSA3MC02OC42IDAtNjMuNC00OC42LTY4LjYtNzAtNjguNnptLjggMTA4LjVoLTE5Ljl2LTc5LjdsMTkuNC0uMWMzLjggMCAzNS0yLjEgMzUgMzkuOSAwIDI0LjYtMTAuNSAzOS45LTM0LjUgMzkuOXpNMjAzLjcgMTg2aC02OC4ydjEzNy4zaDM0LjZWMjc5aDI3YzU0LjEgMCA1Ny4xLTM3LjUgNTcuMS00Ni41IDAtMzEtMTYuOC00Ni41LTUwLjUtNDYuNXptLTQuOSA2Ny4zaC0yOS4ydi00MS42aDI4LjNjMzAuOSAwIDI4LjggNDEuNi45IDQxLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1BkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5LjEgMCAyNTZjMCAxMzcgMTExIDI0OCAyNDggMjQ4czI0OC0xMTEgMjQ4LTI0OEM0OTYgMTE5LjEgMzg1IDggMjQ4IDh6bTAgNDQ5LjVjLTEzOS4yIDAtMjM1LjgtMTM4LTE5MC4yLTI2Ny45bDc4LjggMzUuMWMtMi4xIDEwLjUtMy4zIDIxLjUtMy4zIDMyLjkgMCA5OSA3My45IDEyNi45IDEyMC40IDEyNi45IDIyLjkgMCA1My41LTYuNyA3OS40LTI5LjVMMjk3IDMxMS4xYy01LjUgNi4zLTE3LjYgMTYuNy0zNi4zIDE2LjctMzcuOCAwLTUzLjctMzkuOS01My45LTcxLjkgMjMwLjQgMTAyLjYgMjE2LjUgOTYuNSAyMTcuOSA5Ni44LTM0LjMgNjIuNC0xMDAuNiAxMDQuOC0xNzYuNyAxMDQuOHptMTk0LjItMTUwbC0yMjQtMTAwYzE4LjgtMzQgNTQuOS0zMC43IDc0LjctMTFsNDAuNC00MS42Yy0yNy4xLTIzLjMtNTgtMjcuNS03OC4xLTI3LjUtNDcuNCAwLTgwLjkgMjAuNS0xMDAuNyA1MS42bC03NC45LTMzLjRjMzYuMS01NC45IDk4LjEtOTEuMiAxNjguNS05MS4yIDExMS4xIDAgMjAxLjUgOTAuNCAyMDEuNSAyMDEuNSAwIDE4LTIuNCAzNS40LTYuOCA1Mi0uMy0uMS0uNC0uMi0uNi0uNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zUmVtaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bTE2MS43IDIwNy43bDQuOSAyLjJ2NzBjLTcuMiAzLjYtNjMuNCAyNy41LTY3LjMgMjguOC02LjUtMS44LTExMy43LTQ2LjgtMTM3LjMtNTYuMmwtNjQuMiAyNi42LTYzLjMtMjcuNXYtNjMuOGw1OS4zLTI0LjhjLS43LS43LS40IDUtLjQtNzAuNGw2Ny4zLTI5LjdMMzYxIDE3OC41djYxLjZsNDkuMSAyMC4zem0tNzAuNCA4MS41di00My44aC0uNHYtMS44bC0xMTMuOC00Ni41VjI5NWwxMTMuOCA0Ni45di0uNGwuNC40em03LjUtNTcuNmwzOS45LTE2LjQtMzYuOC0xNS41LTM5IDE2LjQgMzUuOSAxNS41em01Mi4zIDM4LjF2LTQzTDM1NS4yIDI5OHY0My40bDQ0LjMtMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1NhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zek0xMzcuNyAyMjFjMTMtODMuOSA4MC41LTk1LjcgMTA4LjktOTUuNyA5OS44IDAgMTI3LjUgODIuNSAxMjcuNSAxMzQuMiAwIDYzLjYtNDEgMTMyLjktMTI4LjkgMTMyLjktMzguOSAwLTk5LjEtMjAtMTA5LjQtOTdoNjIuNWMxLjUgMzAuMSAxOS42IDQ1LjIgNTQuNSA0NS4yIDIzLjMgMCA1OC0xOC4yIDU4LTgyLjggMC04Mi41LTQ5LjEtODAuNi01Ni43LTgwLjYtMzMuMSAwLTUxLjcgMTQuNi01NS44IDQzLjhoMTguMmwtNDkuMiA0OS4yLTQ5LTQ5LjJoMTkuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zU2FtcGxpbmdQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem0xMDcgMjA1LjZjLTQuNyAwLTkgMi44LTEwLjcgNy4ybC00IDkuNS0xMS05Mi44Yy0xLjctMTMuOS0yMi0xMy40LTIzLjEuNGwtNC4zIDUxLjQtNS4yLTY4LjhjLTEuMS0xNC4zLTIyLjEtMTQuMi0yMy4yIDBsLTMuNSA0NC45LTUuOS05NC4zYy0uOS0xNC41LTIyLjMtMTQuNC0yMy4yIDBsLTUuMSA4My43LTQuMy02Ni4zYy0uOS0xNC40LTIyLjItMTQuNC0yMy4yIDBsLTUuMyA4MC4yLTQuMS01N2MtMS4xLTE0LjMtMjItMTQuMy0yMy4yLS4ybC03LjcgODkuOC0xLjgtMTIuMmMtMS43LTExLjQtMTcuMS0xMy42LTIyLTMuM2wtMTMuMiAyNy43SDg3LjV2MjMuMmg1MS4zYzQuNCAwIDguNC0yLjUgMTAuNC02LjRsMTAuNyA3My4xYzIgMTMuNSAyMS45IDEzIDIzLjEtLjdsMy44LTQzLjYgNS43IDc4LjNjMS4xIDE0LjQgMjIuMyAxNC4yIDIzLjItLjFsNC42LTcwLjQgNC44IDczLjNjLjkgMTQuNCAyMi4zIDE0LjQgMjMuMi0uMWw0LjktODAuNSA0LjUgNzEuOGMuOSAxNC4zIDIyLjEgMTQuNSAyMy4yLjJsNC42LTU4LjYgNC45IDY0LjRjMS4xIDE0LjMgMjIgMTQuMiAyMy4xLjFsNi44LTgzIDIuNyAyMi4zYzEuNCAxMS44IDE3LjcgMTQuMSAyMi4zIDMuMWwxOC00My40aDUwLjVWMjU4bC01OC40LjN6bS03OCA1LjJoLTIxLjl2MjEuOWMwIDQuMS0zLjMgNy41LTcuNSA3LjUtNC4xIDAtNy41LTMuMy03LjUtNy41di0yMS45aC0yMS45Yy00LjEgMC03LjUtMy4zLTcuNS03LjUgMC00LjEgMy40LTcuNSA3LjUtNy41aDIxLjl2LTIxLjljMC00LjEgMy40LTcuNSA3LjUtNy41czcuNSAzLjMgNy41IDcuNXYyMS45aDIxLjljNC4xIDAgNy41IDMuMyA3LjUgNy41IDAgNC4xLTMuNCA3LjUtNy41IDcuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zU2FtcGxpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bTMuNiA1My4yYzIuOC0uMyAxMS41IDEgMTEuNSAxMS41bDYuNiAxMDcuMiA0LjktNTkuM2MwLTYgNC43LTEwLjYgMTAuNi0xMC42IDUuOSAwIDEwLjYgNC43IDEwLjYgMTAuNiAwIDIuNS0uNS01LjcgNS43IDgxLjVsNS44LTY0LjJjLjMtMi45IDIuOS05LjMgMTAuMi05LjMgMy44IDAgOS45IDIuMyAxMC42IDguOWwxMS41IDk2LjUgNS4zLTEyLjhjMS44LTQuNCA1LjItNi42IDEwLjItNi42aDU4djIxLjNoLTUwLjlsLTE4LjIgNDQuM2MtMy45IDkuOS0xOS41IDkuMS0yMC44LTMuMWwtNC0zMS45LTcuNSA5Mi42Yy0uMyAzLTMgOS4zLTEwLjIgOS4zLTMgMC05LjgtMi4xLTEwLjYtOS4zIDAtMS45LjYgNS44LTYuMi03Ny45bC01LjMgNzIuMmMtMS4xIDQuOC00LjggOS4zLTEwLjYgOS4zLTIuOSAwLTkuOC0yLTEwLjYtOS4zIDAtMS45LjUgNi43LTUuOC04Ny43bC01LjggOTQuOGMwIDYuMy0zLjYgMTIuNC0xMC42IDEyLjQtNS4yIDAtMTAuNi00LjEtMTAuNi0xMmwtNS44LTg3LjdjLTUuOCA5Mi41LTUuMyA4NC01LjMgODUuOS0xLjEgNC44LTQuOCA5LjMtMTAuNiA5LjMtMyAwLTkuOC0yLjEtMTAuNi05LjMgMC0uNy0uNC0xLjEtLjQtMi42bC02LjItODguNkwxODIgMzQ4Yy0uNyA2LjUtNi43IDkuMy0xMC42IDkuMy01LjggMC05LjYtNC4xLTEwLjYtOC45TDE0OS43IDI3MmMtMiA0LTMuNSA4LjQtMTEuMSA4LjRIODcuMnYtMjEuM0gxMzJsMTMuNy0yNy45YzQuNC05LjkgMTguMi03LjIgMTkuOSAyLjdsMy4xIDIwLjQgOC40LTk3LjljMC02IDQuOC0xMC42IDEwLjYtMTAuNi41IDAgMTAuNi0uMiAxMC42IDEyLjRsNC45IDY5LjEgNi42LTkyLjZjMC0xMC4xIDkuNS0xMC42IDEwLjItMTAuNi42IDAgMTAuNi43IDEwLjYgMTAuNmw1LjMgODAuNiA2LjItOTcuOWMuMS0xLjEtLjYtMTAuMyA5LjktMTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zU2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bTEwMSAxMzIuNGM3LjggMCAxMy43IDYuMSAxMy43IDEzLjd2MTgyLjVjMCA3LjctNi4xIDEzLjctMTMuNyAxMy43SDIxNC4zYy03LjcgMC0xMy43LTYtMTMuNy0xMy43di01NGgtNTRjLTcuOCAwLTEzLjctNi0xMy43LTEzLjdWMTMxLjFjMC04LjIgNi42LTEyLjcgMTIuNC0xMy43aDEzNi40YzcuNyAwIDEzLjcgNiAxMy43IDEzLjd2NTRoNTR6TTE1OS45IDMwMC4zaDQwLjdWMTk4LjljMC03LjQgNS44LTEyLjYgMTItMTMuN2g1NS44di00MC4zSDE1OS45djE1NS40em0xNzYuMi04OC4xSDIyNy42djE1NS40aDEwOC41VjIxMi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNaZXJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem0tLjQgNjAuNWMtODEuOSAwLTEwMi41IDc3LjMtMTAyLjUgMTQyLjggMCA2NS41IDIwLjYgMTQyLjggMTAyLjUgMTQyLjhTMzUwLjUgMzIxLjUgMzUwLjUgMjU2YzAtNjUuNS0yMC42LTE0Mi44LTEwMi41LTE0Mi44em0wIDUzLjljMy4zIDAgNi40LjUgOS4yIDEuMiA1LjkgNS4xIDguOCAxMi4xIDMuMSAyMS45bC01NC41IDEwMC4yYy0xLjctMTIuNy0xLjktMjUuMS0xLjktMzQuNCAwLTI4LjggMi04OC45IDQ0LjEtODguOXptNDAuOCA0Ni4yYzIuOSAxNS40IDMuMyAzMS40IDMuMyA0Mi43IDAgMjguOS0yIDg4LjktNDQuMSA4OC45LTEzLjUgMC0zMi42LTcuNy0yMC4xLTI2LjRsNjAuOS0xMDUuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0NS44MyAyMTQuODdsLTMzLjIyIDE3LjI4Yy05LjQzLTE5LjU4LTI1LjI0LTE5LjkzLTI3LjQ2LTE5LjkzLTIyLjEzIDAtMzMuMjIgMTQuNjEtMzMuMjIgNDMuODQgMCAyMy41NyA5LjIxIDQzLjg0IDMzLjIyIDQzLjg0IDE0LjQ3IDAgMjQuNjUtNy4wOSAzMC41Ny0yMS4yNmwzMC41NSAxNS41Yy02LjE3IDExLjUxLTI1LjY5IDM4Ljk4LTY1LjEgMzguOTgtMjIuNiAwLTczLjk2LTEwLjMyLTczLjk2LTc3LjA1IDAtNTguNjkgNDMtNzcuMDYgNzIuNjMtNzcuMDYgMzAuNzItLjAxIDUyLjcgMTEuOTUgNjUuOTkgMzUuODZ6bTE0My4wNSAwbC0zMi43OCAxNy4yOGMtOS41LTE5Ljc3LTI1LjcyLTE5LjkzLTI3LjktMTkuOTMtMjIuMTQgMC0zMy4yMiAxNC42MS0zMy4yMiA0My44NCAwIDIzLjU1IDkuMjMgNDMuODQgMzMuMjIgNDMuODQgMTQuNDUgMCAyNC42NS03LjA5IDMwLjU0LTIxLjI2bDMxIDE1LjVjLTIuMSAzLjc1LTIxLjM5IDM4Ljk4LTY1LjA5IDM4Ljk4LTIyLjY5IDAtNzMuOTYtOS44Ny03My45Ni03Ny4wNSAwLTU4LjY3IDQyLjk3LTc3LjA2IDcyLjYzLTc3LjA2IDMwLjcxLS4wMSA1Mi41OCAxMS45NSA2NS41NiAzNS44NnpNMjQ3LjU2IDguMDVDMTA0Ljc0IDguMDUgMCAxMjMuMTEgMCAyNTYuMDVjMCAxMzguNDkgMTEzLjYgMjQ4IDI0Ny41NiAyNDggMTI5LjkzIDAgMjQ4LjQ0LTEwMC44NyAyNDguNDQtMjQ4IDAtMTM3Ljg3LTEwNi42Mi0yNDgtMjQ4LjQ0LTI0OHptLjg3IDQ1MC44MWMtMTEyLjU0IDAtMjAzLjctOTMuMDQtMjAzLjctMjAyLjgxIDAtMTA1LjQyIDg1LjQzLTIwMy4yNyAyMDMuNzItMjAzLjI3IDExMi41MyAwIDIwMi44MiA4OS40NiAyMDIuODIgMjAzLjI2LS4wMSAxMjEuNjktOTkuNjggMjAyLjgyLTIwMi44NCAyMDIuODJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyaXRpY2FsUm9sZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjUuODIgMGMuMjYuMTUgMjE2LjU3IDEyNC41MSAyMTcuMTIgMTI0LjcyIDMgMS4xOCAzLjcgMy40NiAzLjcgNi41NnEtLjExIDEyNS4xNyAwIDI1MC4zNmE1Ljg4IDUuODggMCAwIDEtMy4zOCA1Ljc4Yy0yMS4zNyAxMi0yMDcuODYgMTE4LjI5LTIxOC45MyAxMjQuNThoLTNDMTQyIDQ2Ni4zNCAzLjA4IDM4Ni41NiAyLjkzIDM4Ni40OGEzLjI5IDMuMjkgMCAwIDEtMS44OC0zLjI0YzAtLjg3IDAtMjI1Ljk0LS4wNS0yNTMuMWE1IDUgMCAwIDEgMi45My00LjkzQzI3LjE5IDExMi4xMSAyMTMuMiA2IDIyNC4wNyAwek0yMTUuNCAyMC40MmwtLjIyLS4xNlExMTguMDYgNzUuNTUgMjEgMTMwLjg3YzAgLjEyLjA4LjIzLjEzLjM1bDMwLjg2IDExLjY0Yy03LjcxIDYtOC4zMiA2LTEwLjY1IDUuMTMtLjEgMC0yNC4xNy05LjI4LTI2LjgtMTB2MjMwLjQzYy44OC0xLjQxIDY0LjA3LTExMC45MSA2NC4xMy0xMTEgMS42Mi0yLjgyIDMtMS45MiA5LjEyLTEuNTIgMS40LjA5IDEuNDguMjIuNzggMS40Mi00MS4xOSA3MS4zMy0zNi40IDYzLTY3LjQ4IDExNi45NC0uODEgMS40LS42MSAxLjEzIDEuMjUgMS4xM2gxODYuNWMxLjQ0IDAgMS42OS0uMjMgMS43LTEuNjR2LTguODhjMC0xLjM0IDIuMzYtLjgxLTE4LjM3LTEtNy40Ni0uMDctMTQuMTQtMy4yMi0yMS4zOC0xMi43LTcuMzgtOS42Ni0xNC42Mi0xOS40My0yMS44NS0yOS4yMS0yLjI4LTMuMDgtMy40NS0yLjM4LTE2Ljc2LTIuMzgtMS43NSAwLTEuNzggMC0xLjc2IDEuODIuMjkgMjYuMjEuMTUgMjUuMjcgMSAzMi42Ni41MiA0LjM3IDIuMTYgNC4yIDkuNjkgNC44MSAzLjE0LjI2IDMuODggNC4wOC41MiA0LjkyLTEuNTcuMzktMzEuNi41MS0zMy42Ny0uMWEyLjQyIDIuNDIgMCAwIDEgLjMtNC43M2MzLjI5LS43NiA2LjE2LjgxIDYuNjYtNC40NCAxLjMtMTMuNjYgMS4xNy05IDEuMS03OS40MiAwLTEwLjgyLS4zNS0xMi41OC01LjM2LTEzLjU1LTEuMjItLjI0LTMuNTQtLjE2LTQuNjktLjU1LTIuODgtMS0yLTQuODQgMS43Ny00Ljg1IDMzLjY3IDAgNDYuMDgtMS4wNyA1Ni4wNiA0Ljg2IDcuNzQgNC42MSAxMiAxMS40OCAxMi41MSAyMC40Ljg4IDE0LjU5LTYuNTEgMjIuMzUtMTUgMzIuNTlhMS40NiAxLjQ2IDAgMCAwIDAgMi4yMmMyLjYgMy4yNSA1IDYuNjMgNy43MSA5LjgzIDI3LjU2IDMzLjIzIDI0LjExIDMwLjU0IDQxLjI4IDMzLjA2Ljg5LjEzIDEtLjQyIDEtMS4xNXYtMTFjMC0xIC4zMi0xLjQzIDEuNDEtMS4yNmE3Mi4zNyA3Mi4zNyAwIDAgMCAyMy41OC0uM2MxLjA4LS4xNSAxLjUuMiAxLjQ4IDEuMzMgMCAuMTEuODggMjYuNjkuODcgMjYuOC0uMDUgMS41Mi42NyAxLjYyIDEuODkgMS42MmgxODYuNzFRMzg2LjUxIDMwNC42IDM0NiAyMzQuMzNjMi4yNi0uNjYtLjQgMCA2LjY5LTEuMzkgMi0uMzkgMi4wNS0uNDEgMy4xMSAxLjQ0IDcuMzEgMTIuNjQgNzcuMzEgMTM0IDc3LjM3IDEzNC4wNlYxMzhjLTEuNzIuNS0xMDMuMyAzOC43Mi0xMDUuNzYgMzkuNjgtMS4wOC40Mi0xLjU1LjItMS45MS0uODgtLjYzLTEuOS0xLjM0LTMuNzYtMi4wOS01LjYyLS4zMi0uNzktLjA5LTEuMTMuNjUtMS4zOS4xIDAgOTUuNTMtMzUuODUgMTAzLTM4Ljc3LTY1LjQyLTM3LjU3LTEzMC41Ni03NS0xOTYtMTEyLjZsODYuODIgMTUwLjM5LS4yOC4zM2MtOS41Ny0uOS0xMC40Ni0xLjYtMTEuOC0zLjk0LTEtMS42OS03My41LTEyNy43MS04Mi0xNDIuMTYtOS4xIDE0LjY3LTgzLjU2IDE0Ni4yMS04NS4zNyAxNDYuMzItMi45My4xNy01Ljg4LjA4LTkuMjUuMDhxNDMuMjUtNzQuNzQgODYuMTgtMTQ5em01MS45MyAxMjkuOTJhMzcuNjggMzcuNjggMCAwIDAgNS41NC0uODVjMS42OS0uMyAyLjUzLjIgMi42IDEuOTIgMCAuMTEuMDcgMTkuMDYtLjg2IDIwLjQ1cy0xLjg4IDEuMjItMi42LS4xOWMtNS05LjY5IDYuMjItOS42Ni0zOS4xMi0xMi0uNyAwLTEgLjIzLTEgLjkzIDAgLjEzIDMuNzIgMTIyIDMuNzMgMTIyLjExIDAgLjg5LjUyIDEuMiAxLjIxIDEuNTFhODMuOTIgODMuOTIgMCAwIDEgOC43IDQuMDVjNy4zMSA0LjMzIDExLjM4IDEwLjg0IDEyLjQxIDE5LjMxIDEuNDQgMTEuOC0yLjc3IDM1Ljc3LTMyLjIxIDM3LjE0LTIuNzUuMTMtMjguMjYgMS4wOC0zNC4xNC0yMy4yNS00LjY2LTE5LjI2IDguMjYtMzIuNyAxOS44OS0zNi40YTIuNDUgMi40NSAwIDAgMCAyLTIuNjZjLjEtNS42MyAzLTEwNy4xIDMuNzEtMTIxLjM1LjA1LTEuMDgtLjYyLTEuMTYtMS4zNS0xLjE1LTMyLjM1LjUyLTM2Ljc1LS4zNC00MC4yMiA4LjUyLTIuNDIgNi4xOC00LjE0IDEuMzItMy45NS4yM3ExLjU5LTkgMy4zMS0xOGMuNC0yLjExIDEuNDMtMi42MSAzLjQzLTEuODYgNS41OSAyLjExIDYuNzIgMS43IDM3LjI1IDEuOTIgMS43MyAwIDEuNzgtLjA4IDEuODItMS44NS42OC0yNy40OS41OC0yMi41OSAxLTI5LjU1YTIuNjkgMi42OSAwIDAgMC0xLjYzLTIuOGMtNS42LTIuOTEtOC43NS03LjU1LTguOS0xMy44Ny0uMzUtMTQuODEgMTcuNzItMjEuNjcgMjcuMzgtMTEuNTEgNi44NCA3LjE5IDUuOCAxOC45MS0yLjQ1IDI0LjE1YTQuMzUgNC4zNSAwIDAgMC0yLjIyIDQuMzRjMCAuNTktLjExLTQuMzEgMSAzMC4wNSAwIC45LjQzIDEuMTIgMS4yNCAxLjExLjEgMCAyMy0uMDkgMzQuNDctLjM3ek02OC4yNyAxNDEuN2MxOS44NC00LjUxIDMyLjY4LS41NiA1Mi40OSAxLjY5IDIuNzYuMzEgMy43NCAxLjIyIDMuNjIgNC0uMjEgNS0xLjE2IDIyLjMzLTEuMjQgMjMuMTVhMi42NSAyLjY1IDAgMCAxLTEuNjMgMi4zNGMtNC4wNiAxLjctMy42MS00LjQ1LTQtNy4yOS0zLjEzLTIyLjQzLTczLjg3LTMyLjctNzQuNjMgMjUuNC0uMzEgMjMuOTIgMTcgNTMuNjMgNTQuMDggNTAuODggMjcuMjQtMiAxOS0yMC4xOSAyNC44NC0yMC40N2EyLjcyIDIuNzIgMCAwIDEgMyAzLjM2Yy0xLjgzIDEwLjg1LTMuNDIgMTguOTUtMy40NSAxOS4xNS0xLjU0IDkuMTctODYuNyAyMi4wOS05My4zNS00Mi4wNi0yLjcxLTI1Ljg1IDEwLjQ0LTUzLjM3IDQwLjI3LTYwLjE1em04MCA4Ny42N2gtMTkuNDlhMi41NyAyLjU3IDAgMCAxLTIuNjYtMS43OWMyLjM4LTMuNzUgNS44OS45MiA1Ljg2LTYuMTQtLjA4LTI1Ljc1LjIxLTM4IC4yMy00MC4xIDAtMy40Mi0uNTMtNC42NS0zLjMyLTQuOTQtNy0uNzItMy4xMS0zLjM3LTEuMTEtMy4zOCAxMS44NC0uMSAyMi42Mi0uMTggMzAuMDUuNzIgOC43NyAxLjA3IDE2LjcxIDEyLjYzIDcuOTMgMjIuNjItMiAyLjI1LTQgNC40Mi02LjE0IDYuNzMuOTUgMS4xNSA2LjkgOC44MiAxNy4yOCAxOS42OCAyLjY2IDIuNzggNi4xNSAzLjUxIDkuODggMy4xM2EyLjIxIDIuMjEgMCAwIDAgMi4yMy0yLjEyYy4zLTMuNDIuMjYgNC43My40NS00MC41OCAwLTUuNjUtLjM0LTYuNTgtMy4yMy02LjgzLTMuOTUtLjM1LTQtMi4yNi0uNjktMy4zN2wxOS4wOS0uMDljLjMyIDAgNC40OS41MyAxIDMuMzggMCAuMDUtLjE2IDAtLjI0IDAtMy42MS4yNi0zLjk0IDEtNCA0LjYyLS4yNyA0My45My4wNyA0MC4yMy40MSA0Mi44Mi4xMS44NC4yNyAyLjIzIDUuMSAyLjE0IDIuNDkgMCAzLjg2IDMuMzcgMCAzLjQtMTAuMzcuMDgtMjAuNzQgMC0zMS4xMS4wNy0xMC42NyAwLTEzLjQ3LTYuMi0yNC4yMS0yMC44Mi0xLjYtMi4xOC04LjMxLTIuMzYtOC4yLS4zNy44OCAxNi40NyAwIDE3Ljc4IDQgMTcuNjcgNC43NS0uMSA0LjczIDMuNTcuODMgMy41NXptMjc1LTEwLjE1Yy0xLjIxIDcuMTMuMTcgMTAuMzgtNS4zIDEwLjM0LTYxLjU1LS40Mi00Ny44Mi0uMjItNTAuNzItLjMxYTE4LjQgMTguNCAwIDAgMS0zLjYzLS43M2MtMi41My0uNiAxLjQ4LTEuMjMtLjM4LTUuNi0xLjQzLTMuMzctMi43OC02Ljc4LTQuMTEtMTAuMTlhMS45NCAxLjk0IDAgMCAwLTItMS40NCAxMzggMTM4IDAgMCAwLTE0LjU4LjA3IDIuMjMgMi4yMyAwIDAgMC0xLjYyIDEuMDZjLTEuNTggMy42Mi0zLjA3IDcuMjktNC41MSAxMS0xLjI3IDMuMjMgNy44NiAxLjMyIDEyLjE5IDIuMTYgMyAuNTcgNC41MyAzLjcyLjY2IDMuNzNIMzIyLjljLTIuOTIgMC0zLjA5LTMuMTUtLjc0LTMuMjFhNi4zIDYuMyAwIDAgMCA1LjkyLTMuNDdjMS41LTMgMi44LTYgNC4xMS05LjA5IDE4LjE4LTQyLjE0IDE3LjA2LTQwLjE3IDE4LjQyLTQxLjYxYTEuODMgMS44MyAwIDAgMSAzIDBjMi45MyAzLjM0IDE4LjQgNDQuNzEgMjMuNjIgNTEuOTIgMiAyLjcgNS43NCAyIDYuMzYgMiAzLjYxLjEzIDQtMS4xMSA0LjEzLTQuMjkuMDktMS44Ny4wOCAxLjE3LjA3LTQxLjI0IDAtNC40Ni0yLjM2LTMuNzQtNS41NS00LjI3LS4yNiAwLTIuNTYtLjYzLS4wOC0zLjA2LjIxLS4yLS44OS0uMjQgMjEuNy0uMTUgMi4zMiAwIDUuMzIgMi43NS0xLjIxIDMuNDVhMi41NiAyLjU2IDAgMCAwLTIuNjYgMi44M2MtLjA3IDEuNjMtLjE5IDM4Ljg5LjI5IDQxLjIxYTMuMDYgMy4wNiAwIDAgMCAzLjIzIDIuNDNjMTMuMjUuNDMgMTQuOTIuNDQgMTYtMy40MSAxLjY3LTUuNzggNC4xMy0yLjUyIDMuNzMtLjE5em0tMTA0LjcyIDY0LjM3Yy00LjI0IDAtNC40Mi0zLjM5LS42MS0zLjQxIDM1LjkxLS4xNiAyOC4xMS4zOCAzNy4xOS0uNjUgMS42OC0uMTkgMi4zOC4yNCAyLjI1IDEuODktLjI2IDMuMzktLjY0IDYuNzgtMSAxMC4xNi0uMjUgMi4xNi0zLjIgMi42MS0zLjQtLjE1LS4zOC01LjMxLTIuMTUtNC40NS0xNS42My01LjA4LTEuNTgtLjA3LTEuNjQgMC0xLjY0IDEuNTJWMzA0YzAgMS42NSAwIDEuNiAxLjYyIDEuNDcgMy4xMi0uMjUgMTAuMzEuMzQgMTUuNjktMS41Mi40Ny0uMTYgMy4zLTEuNzkgMy4wNyAxLjc2IDAgLjIxLS43NiAxMC4zNS0xLjE4IDExLjM5LS41MyAxLjI5LTEuODggMS41MS0yLjU4LjMyLTEuMTctMiAwLTUuMDgtMy43MS01LjMtMTUuNDItLjktMTIuOTEtMi41NS0xMi45MSA2IDAgMTIuMjUtLjc2IDE2LjExIDMuODkgMTYuMjQgMTYuNjQuNDggMTQuNCAwIDE2LjQzLTUuNzEuODQtMi4zNyAzLjUtMS43NyAzLjE4LjU4LS40NCAzLjIxLS44NSA2LjQzLTEuMjMgOS42NCAwIC4zNi0uMTYgMi40LTQuNjYgMi4zOS0zNy4xNi0uMDgtMzQuNTQtLjE5LTM1LjIxLS4zMS0yLjcyLS41MS0yLjItMyAuMjItMy40NSAxLjEtLjE5IDQgLjU0IDQuMTYtMi41NiAyLjQ0LTU2LjIyLS4wNy01MS4zNC0zLjkxLTUxLjMzem0tLjQxLTEwOS41MmMyLjQ2LjYxIDMuMTMgMS43NiAyLjk1IDQuNjUtLjMzIDUuMy0uMzQgOS0uNTUgOS42OS0uNjYgMi4yMy0zLjE1IDIuMTItMy4zNC0uMjctLjM4LTQuODEtMy4wNS03LjgyLTcuNTctOS4xNS0yNi4yOC03LjczLTMyLjgxIDE1LjQ2LTI3LjE3IDMwLjIyIDUuODggMTUuNDEgMjIgMTUuOTIgMjguODYgMTMuNzggNS45Mi0xLjg1IDUuODgtNi41IDYuOTEtNy41OCAxLjIzLTEuMyAyLjI1LTEuODQgMy4xMiAxLjEgMCAuMS41NyAxMS44OS02IDEyLjc1LTEuNi4yMS0xOS4zOCAzLjY5LTMyLjY4LTMuMzktMjEtMTEuMTktMTYuNzQtMzUuNDctNi44OC00NS4zMyAxNC0xNC4wNiAzOS45MS03LjA2IDQyLjMyLTYuNDd6TTI4OS44IDI4MC4xNGMzLjI4IDAgMy42NiAzIC4xNiAzLjQzLTIuNjEuMzItNS0uNDItNSA1LjQ2IDAgMi0uMTkgMjkuMDUuNCA0MS40NS4xMSAyLjI5IDEuMTUgMy41MiAzLjQ0IDMuNjUgMjIgMS4yMSAxNC45NS0xLjY1IDE4Ljc5LTYuMzQgMS44My0yLjI0IDIuNzYuODQgMi43NiAxLjA4LjM1IDEzLjYyLTQgMTIuMzktNS4xOSAxMi40bC0zOC4xNi0uMTljLTEuOTMtLjIzLTIuMDYtMy0uNDItMy4zOCAyLS40OCA0Ljk0LjQgNS4xMy0yLjggMS0xNS44Ny41Ny00NC42NS4zNC00Ny44MS0uMjctMy43Ny0yLjgtMy4yNy01LjY4LTMuNzEtMi40Ny0uMzgtMi0zLjIyLjM0LTMuMjIgMS40NS0uMDIgMTcuOTctLjAzIDIzLjA5LS4wMnptLTMxLjYzLTU3Ljc5Yy4wNyA0LjA4IDIuODYgMy40NiA2IDMuNTggMi42MS4xIDIuNTMgMy40MS0uMDcgMy40My02LjQ4IDAtMTMuNyAwLTIxLjYxLS4wNi0zLjg0IDAtMy4zOC0zLjM1IDAtMy4zNyA0LjQ5IDAgMy4yNCAxLjYxIDMuNDEtNDUuNTQgMC01LjA4LTMuMjctMy41NC00LjcyLTQuMjMtMi41OC0xLjIzLTEuMzYtMy4wOS40MS0zLjE1IDEuMjkgMCAyMC4xOS0uNDEgMjEuMTcuMjFzMS44NyAxLjY1LS40MiAyLjg2Yy0xIC41Mi0zLjg2LS4yOC00LjE1IDIuNDcgMCAuMjEtLjgyIDEuNjMtLjA3IDQzLjh6bS0zNi45MSAyNzQuMjdhMi45MyAyLjkzIDAgMCAwIDMuMjYgMGMxNy05Ljc5IDE4Mi0xMDMuNTcgMTk3LjQyLTExMi41MS0uMTQtLjQzIDExLjI2LS4xOC0xODEuNTItLjI3LTEuMjIgMC0xLjU3LjM3LTEuNTMgMS41NiAwIC4xIDEuMjUgNDQuNTEgMS4yMiA1MC4zOGEyOC4zMyAyOC4zMyAwIDAgMS0xLjM2IDcuNzFjLS41NSAxLjgzLjM4LS41LTEzLjUgMzIuMjMtLjczIDEuNzItMSAyLjIxLTItLjA4LTQuMTktMTAuMzQtOC4yOC0yMC43Mi0xMi41Ny0zMWEyMy42IDIzLjYgMCAwIDEtMi0xMC43OWMuMTYtMi40Ni44LTE2LjEyIDEuNTEtNDggMC0xLjk1IDAtMi0yLTJoLTE4M2MyLjU4IDEuNjMgMTc4LjMyIDEwMi41NyAxOTYgMTEyLjc2em0tOTAuOS0xODguNzVjMCAyLjQuMzYgMi43OSAyLjc2IDMgMTEuNTQgMS4xNyAyMSAzLjc0IDI1LjY0LTcuMzIgNi0xNC40NiAyLjY2LTM0LjQxLTEyLjQ4LTM4Ljg0LTItLjU5LTE2LTIuNzYtMTUuOTQgMS41MS4wNSA4LjA0LjAxIDExLjYxLjAyIDQxLjY1em0xMDUuNzUtMTUuMDVjMCAyLjEzIDEuMDcgMzguNjggMS4wOSAzOS4xMy4zNCA5Ljk0LTI1LjU4IDUuNzctMjUuMjMtMi41OS4wOC0yIDEuMzctMzcuNDIgMS4xLTM5LjQzLTE0LjEgNy40NC0xNC40MiA0MC4yMSA2LjQ0IDQ4LjhhMTcuOSAxNy45IDAgMCAwIDIyLjM5LTcuMDdjNC45MS03Ljc2IDYuODQtMjkuNDctNS40My0zOWEyLjUzIDIuNTMgMCAwIDEtLjM2LjEyem0tMTIuMjgtMTk4Yy05LjgzIDAtOS43MyAxNC43NS0uMDcgMTQuODdzMTAuMS0xNC44OC4wNy0xNC45MXptLTgwLjE1IDEwMy44M2MwIDEuOC40MSAyLjQgMi4xNyAyLjU4IDEzLjYyIDEuMzkgMTIuNTEtMTEgMTIuMTYtMTMuMzYtMS42OS0xMS4yMi0xNC4zOC0xMC4yLTE0LjM1LTcuODEuMDUgNC41LS4wMyAxMy42OC4wMiAxOC41OXptMjEyLjMyIDYuNGwtNi4xLTE1Ljg0Yy0yLjE2IDUuNDgtNC4xNiAxMC41Ny02LjIzIDE1Ljg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDc3MzQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJsMzQuOSAzOTUuOEwxOTIgNDgwbDE1Ny4xLTUyLjJMMzg0IDMySDB6bTMxMy4xIDgwbC00LjggNDcuM0wxOTMgMjA4LjZsLS4zLjFoMTExLjVsLTEyLjggMTQ2LjYtOTguMiAyOC43LTk4LjgtMjkuMi02LjQtNzMuOWg0OC45bDMuMiAzOC4zIDUyLjYgMTMuMyA1NC43LTE1LjQgMy43LTYxLjYtMTY2LjMtLjV2LS4xbC0uMi4xLTMuNi00Ni4zTDE5My4xIDE2Mmw2LjUtMi43SDc2LjdMNzAuOSAxMTJoMjQyLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNzczMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDMybC02NCAzNjgtMjIzLjMgODBMMCA0MDBsMTkuNi05NC44aDgybC04IDQwLjZMMjEwIDM5MC4ybDEzNC4xLTQ0LjQgMTguOC05Ny4xSDI5LjVsMTYtODJoMzMzLjdsMTAuNS01Mi43SDU2LjNsMTYuMy04Mkg0ODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUN1dHRsZWZpc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ0IDMwNS41Yy0xNy41IDMxLjYtNTcuNCA1NC41LTk2IDU0LjUtNTYuNiAwLTEwNC00Ny40LTEwNC0xMDRzNDcuNC0xMDQgMTA0LTEwNGMzOC42IDAgNzguNSAyMi45IDk2IDU0LjUgMTMuNy01MC45IDQxLjctOTMuMyA4Ny0xMTcuOEMzODUuNyAzOS4xIDMyMC41IDggMjQ4IDggMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4YzcyLjUgMCAxMzcuNy0zMS4xIDE4My04MC43LTQ1LjMtMjQuNS03My4zLTY2LjktODctMTE3Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURBbmREQmV5b25kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy44IDI0MS41YzEzLjggMCAyMS0xMC4xIDI0LjgtMTcuOS0xLTEuMS01LTQuMi03LjQtNi42LTIuNCA0LjMtOC4yIDEwLjctMTMuOSAxMC43LTEwLjIgMC0xNS40LTE0LjctMy4yLTI2LjYtLjUtLjItNC4zLTEuOC04IDIuNCAwLTMgMS01LjEgMi4xLTYuNi0zLjUgMS4zLTkuOCA1LjYtMTEuNCA3LjkuMi01LjggMS42LTcuNS42LTlsLS4yLS4ycy04LjUgNS42LTkuMyAxNC43YzAgMCAxLjEtMS42IDIuMS0xLjkuNi0uMyAxLjMgMCAuNiAxLjktLjIuNi01LjggMTUuNyA1LjEgMjYtLjYtMS42LTEuOS03LjYgMi40LTEuOS0uMy4xIDUuOCA3LjEgMTUuNyA3LjF6bTUyLjQtMjEuMWMwLTQtNC45LTQuNC01LjYtNC41IDIgMy45LjkgNy41LjIgOSAyLjUtLjQgNS40LTEuNiA1LjQtNC41em0xMC4zIDUuMmMwLTYuNC02LjItMTEuNC0xMy41LTEwLjcgOCAxLjMgNS42IDEzLjgtNSAxMS40IDMuNy0yLjYgMy4yLTkuOS0xLjMtMTIuNSAxLjQgNC4yLTMgOC4yLTcuNCA0LjYtMi40LTEuOS04LTYuNi0xMC42LTguNi0yLjQtMi4xLTUuNS0xLTYuNi0xLjgtMS4zLTEuMS0uNS0zLjgtMi4yLTUtMS42LS44LTMtLjMtNC44LTEtMS42LS42LTIuNy0xLjktMi42LTMuNS0yLjUgNC40IDMuNCA2LjMgNC41IDguNSAxIDEuOS0uOCA0LjggNCA4LjUgMTQuOCAxMS42IDkuMSA4IDEwLjQgMTguMS42IDQuMyA0LjIgNi43IDYuNCA3LjQtMi4xLTEuOS0yLjktNi40IDAtOS4zIDAgMTMuOSAxOS4yIDEzLjMgMjMuMSA2LjQtMi40IDEuMS03LS4yLTktMS45IDcuNyAxIDE0LjItNC4xIDE0LjYtMTAuNnptLTM5LjQtMTguNGMyIC44IDEuNi43IDYuNCA0LjUgMTAuMi0yNC41IDIxLjctMTUuNyAyMi0xNS41IDIuMi0xLjkgOS44LTMuOCAxMy44LTIuNy0yLjQtMi43LTcuNS02LjItMTMuMy02LjItNC43IDAtNy40IDIuMi04IDEuMy0uOC0xLjQgMy4yLTMuNCAzLjItMy40LTUuNC4yLTkuNiA2LjctMTEuMiA1LjktMS4xLS41IDEuNC0zLjcgMS40LTMuNy01LjEgMi45LTkuMyA5LjEtMTAuMiAxMyA0LjYtNS44IDEzLjgtOS44IDE5LjctOS0xMC41LjUtMTkuNSA5LjctMjMuOCAxNS44em0yNDIuNSA1MS45Yy0yMC43IDAtNDAgMS4zLTUwLjMgMi4xbDcuNCA4LjJ2NzcuMmwtNy40IDguMmMxMC40LjggMzAuOSAyLjEgNTEuNiAyLjEgNDIuMSAwIDU5LjEtMjAuNyA1OS4xLTQ4LjkgMC0yOS4zLTIzLjItNDguOS02MC40LTQ4Ljl6bS0xNS4xIDc1LjZ2LTUzLjNjMzAuMS0zLjMgNDYuOCAzLjggNDYuOCAyNi4zIDAgMjUuNi0yMS40IDMwLjItNDYuOCAyN3pNMzAxLjYgMTgxYy0xLTMuNC0uMi02LjkgMS4xLTkuNCAxIDMgMi42IDYuNCA3LjUgOS0uNS0yLjQtLjItNS42LjUtOC0xLjQtNS40IDIuMS05LjkgNi40LTkuOSA2LjkgMCA4LjUgOC44IDQuNyAxNC40IDIuMSAzLjIgNS41IDUuNiA3LjcgNy44IDMuMi0zLjcgNS41LTkuNSA1LjUtMTMuOCAwLTguMi01LjUtMTUuOS0xNi43LTE2LjUtMjAtLjktMjAuMiAxNi42LTIwIDE4LjkuNSA1LjIgMy40IDcuOCAzLjMgNy41em0tLjQgNmMtLjUgMS44LTcgMy43LTEwLjIgNi45IDQuOC0xIDctLjIgNy44IDEuOC41IDEuNC0uMiAzLjQtLjUgNS42IDEuNi0xLjggNy01LjUgMTEtNi4yLTEtLjMtMy40LS44LTQuMy0uOCAyLjktMy40IDkuMy00LjUgMTIuOC0zLjctMi4yLS4yLTYuNyAxLjEtOC41IDIuNiAxLjYuMyAzIC42IDQuMyAxLjEtMi4xLjgtNC44IDMuNC01LjggNi4xIDctNSAxMy4xIDUuMiA3IDguMi44LjIgMi43IDAgMy41LS41LS4zIDEuMS0xLjkgMy0zIDMuNCAyLjkgMCA3LTEuOSA4LjItNC42IDAgMC0xLjguNi0yLjYtLjJzLjMtNC4zLjMtNC4zYy0yLjMgMi45LTMuNC0xLjMtMS4zLTQuMi0xLS4zLTMuNS0uNi00LjYtLjUgMy4yLTEuMSAxMC40LTEuOCAxMS4yLS4zLjYgMS4xLTEgMy40LTEgMy40IDQtLjUgOC4zIDEuMSA2LjcgNS4xIDIuOS0xLjQgNS41LTUuOSA0LjgtMTAuNC0uMyAxLTEuNiAyLjQtMi45IDIuNy4yLTEuNC0xLTIuMi0xLjktMi42IDEuNy05LjYtMTQuNi0xNC4yLTE0LjEtMjMuOS0xIDEuMy0xLjggNS0uOCA3LjEgMi43IDMuMiA4LjcgNi43IDEwLjEgMTIuMi0yLjYtNi40LTE1LjEtMTEuNC0xNC42LTIwLjItMS42IDEuNi0yLjYgNy44LTEuMyAxMSAyLjQgMS40IDQuNSAzLjggNC44IDYuMS0yLjItNS4xLTExLjQtNi4xLTEzLjktMTIuMi0uNiAyLjItLjMgNSAxIDYuNyAwIDAtMi4yLS44LTctLjYgMS43LjYgNS4xIDMuNSA0LjggNS4yem0yNS45IDcuNGMtMi43IDAtMy41LTIuMS00LjItNC4zIDMuMyAxLjMgNC4yIDQuMyA0LjIgNC4zem0zOC45IDMuN2wtMS0uNmMtMS4xLTEtMi45LTEuNC00LjctMS40LTIuOSAwLTUuOCAxLjMtNy41IDMuNC0uOC44LTEuNCAxLjgtMi4xIDIuNnYxNS43YzMuNSAyLjYgNy4xLTIuOSAzLTcuMiAxLjUuMyA0LjYgMi43IDUuMSAzLjIgMCAwIDIuNi0uNSA1LS41IDIuMSAwIDMuOS4zIDUuNiAxLjFWMTk2Yy0xLjEuNS0yLjIgMS0yLjcgMS40ek03OS45IDMwNS45YzE3LjItNC42IDE2LjItMTggMTYuMi0xOS45IDAtMjAuNi0yNC4xLTI1LTM3LTI1SDNsOC4zIDguNnYyOS41SDBsMTEuNCAxNC42VjM0NkwzIDM1NC42YzYxLjcgMCA3My44IDEuNSA4Ni40LTUuOSA2LjctNCA5LjktOS44IDkuOS0xNy42IDAtNS4xIDIuNi0xOC44LTE5LjQtMjUuMnptLTQxLjMtMjcuNWMyMCAwIDI5LjYtLjggMjkuNiA5LjF2M2MwIDEyLjEtMTkgOC44LTI5LjYgOC44em0wIDU5LjJWMzE1YzEyLjIgMCAzMi43LTIuMyAzMi43IDguOHY0LjVoLjJjMCAxMS4yLTEyLjUgOS4zLTMyLjkgOS4zem0xMDEuMi0xOS4zbDIzLjEuMnYtLjJsMTQuMS0yMS4yaC0zNy4ydi0xNC45aDUyLjRsLTE0LjEtMjF2LS4ybC03My41LjIgNy40IDguMnY3Ny4xbC03LjQgOC4yaDgxLjJsMTQuMS0yMS4yLTYwLjEuMnptMjE0LjctNjAuMWMtNzMuOSAwLTc3LjUgOTkuMy0uMyA5OS4zIDc3LjkgMCA3NC4xLTk5LjMuMy05OS4zem0tLjMgNzcuNWMtMzcuNCAwLTM2LjktNTUuMy4yLTU1LjMgMzYuOC4xIDM4LjggNTUuMy0uMiA1NS4zem0tOTEuMy04LjNsNDQuMS02Ni4yaC00MS43bDYuMSA3LjItMjAuNSAzNy4yaC0uM2wtMjEtMzcuMiA2LjQtNy4yaC00NC45bDQ0LjEgNjUuOC4yIDE5LjQtNy43IDguMmg0Mi42bC03LjItOC4yem0tMjguNC0xNTEuM2MxLjYgMS4zIDIuOSAyLjQgMi45IDYuNnYzOC44YzAgNC4yLS44IDUuMy0yLjcgNi40LS4xLjEtNy41IDQuNS03LjkgNC42aDM1LjFjMTAgMCAxNy40LTEuNSAyNi04LjYtLjYtNSAuMi05LjUuOC0xMiAwLS4yLTEuOCAxLjQtMi43IDMuNSAwLTUuNyAxLjYtMTUuNCA5LjYtMjAuNS0uMSAwLTMuNy0uOC05IDEuMSAyLTMuMSAxMC03LjkgMTAuNC03LjktOC4yLTI2LTM4LTIyLjktMzIuMi0yMi45LTMwLjkgMC0zMi42LjMtMzkuOS00IC4xLjguNSA4LjIgOS42IDE0Ljl6bTIxLjUgNS41YzQuNiAwIDIzLjEtMy4zIDIzLjEgMTcuMyAwIDIwLjctMTguNCAxNy4zLTIzLjEgMTcuM3ptMjI4LjkgNzkuNmw3IDguM1YzMTJoLS4zYy01LjQtMTQuNC00Mi4zLTQxLjUtNDUuMi01MC45aC0zMS42bDcuNCA4LjV2NzYuOWwtNy4yIDguM2gzOWwtNy40LTguMnYtNDcuNGguM2MzLjcgMTAuNiA0NC41IDQyLjkgNDguNSA1NS42aDIxLjN2LTg1LjJsNy40LTguM3ptLTEwNi43LTk2LjFjLTMyLjIgMC0zMi44LjItMzkuOS00IC4xLjcuNSA4LjMgOS42IDE0LjkgMy4xIDIgMi45IDQuMyAyLjkgOS41IDEuOC0xLjEgMy44LTIuMiA2LjEtMy0xLjEgMS4xLTIuNyAyLjctMy41IDQuNSAxLTEuMSA3LjUtNS4xIDE0LjYtMy41LTEuNi4zLTQgMS4xLTYuMSAyLjkuMSAwIDIuMS0xLjEgNy41LS4zdi00LjNjNC43IDAgMjMuMS0zLjQgMjMuMSAxNy4zIDAgMjAuNS0xOC41IDE3LjMtMTkuNyAxNy4zIDUuNyA0LjQgNS44IDEyIDIuMiAxNi4zaC4zYzMzLjQgMCAzNi43LTI3LjMgMzYuNy0zNCAwLTMuOC0xLjEtMzItMzMuOC0zMy42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEQW5kRCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04Mi41IDk4LjljLS42LTE3LjIgMi0zMy44IDEyLjctNDguMi4zIDcuNCAxLjIgMTQuNSA0LjIgMjEuNiA1LjktMjcuNSAxOS43LTQ5LjMgNDIuMy02NS41LTEuOSA1LjktMy41IDExLjgtMyAxNy43IDguNy03LjQgMTguOC0xNy44IDQ0LjQtMjIuNyAxNC43LTIuOCAyOS43LTIgNDIuMSAxIDM4LjUgOS4zIDYxIDM0LjMgNjkuNyA3Mi4zIDUuMyAyMy4xLjcgNDUtOC4zIDY2LjQtNS4yIDEyLjQtMTIgMjQuNC0yMC43IDM1LjEtMi0xLjktMy45LTMuOC01LjgtNS42LTQyLjgtNDAuOC0yNi44LTI1LjItMzcuNC0zNy40LTEuMS0xLjItMS0yLjItLjEtMy42IDguMy0xMy41IDExLjgtMjguMiAxMC00NC0xLjEtOS44LTQuMy0xOC45LTExLjMtMjYuMi0xNC41LTE1LjMtMzkuMi0xNS01My41LjYtMTEuNCAxMi41LTE0LjEgMjcuNC0xMC45IDQzLjYuMiAxLjMuNCAyLjcgMCAzLjktMy40IDEzLjctNC42IDI3LjYtMi41IDQxLjYuMS41LjEgMS4xLjEgMS42IDAgLjMtLjEuNS0uMiAxLjEtMjEuOC0xMS0zNi0yOC4zLTQzLjItNTIuMi04LjMgMTcuOC0xMS4xIDM1LjUtNi42IDU0LjEtMTUuNi0xNS4yLTIxLjMtMzQuMy0yMi01NS4yem00NjkuNiAxMjMuMmMtMTEuNi0xMS42LTI1LTIwLjQtNDAuMS0yNi42LTEyLjgtNS4yLTI2LTcuOS0zOS45LTcuMS0xMCAuNi0xOS42IDMuMS0yOSA2LjQtMi41LjktNS4xIDEuNi03LjcgMi4yLTQuOSAxLjItNy4zLTMuMS00LjctNi44IDMuMi00LjYgMy40LTQuMiAxNS0xMiAuNi0uNCAxLjItLjggMi4yLTEuNWgtMi41Yy0uNiAwLTEuMi4yLTEuOS4zLTE5LjMgMy4zLTMwLjcgMTUuNS00OC45IDI5LjYtMTAuNCA4LjEtMTMuOCAzLjgtMTItLjUgMS40LTMuNSAzLjMtNi43IDUuMS0xMCAxLTEuOCAyLjMtMy40IDMuNS01LjEtLjItLjItLjUtLjMtLjctLjUtMjcgMTguMy00Ni43IDQyLjQtNTcuNyA3My4zLjMuMy43LjYgMSAuOS4zLS42LjUtMS4yLjktMS43IDEwLjQtMTIuMSAyMi44LTIxLjggMzYuNi0yOS44IDE4LjItMTAuNiAzNy41LTE4LjMgNTguNy0yMC4yIDQuMy0uNCA4LjctLjEgMTMuMS0uMS0xLjguNy0zLjUuOS01LjMgMS4xLTE4LjUgMi40LTM1LjUgOS01MS41IDE4LjUtMzAuMiAxNy45LTU0LjUgNDIuMi03NS4xIDcwLjQtLjMuNC0uNC45LS43IDEuMyAxNC41IDUuMyAyNCAxNy4zIDM2LjEgMjUuNi4yLS4xLjMtLjIuNC0uNGwxLjItMi43YzEyLjItMjYuOSAyNy01Mi4zIDQ2LjctNzQuNSAxNi43LTE4LjggMzgtMjUuMyA2Mi41LTIwIDUuOSAxLjMgMTEuNCA0LjQgMTcuMiA2LjggMi4zLTEuNCA1LjEtMy4yIDgtNC43IDguNC00LjMgMTcuNC03IDI2LjctOSAxNC43LTMuMSAyOS41LTQuOSA0NC41LTEuM3YtLjVjLS41LS40LTEuMi0uOC0xLjctMS40ek0zMTYuNyAzOTcuNmMtMzkuNC0zMy0yMi44LTE5LjUtNDIuNy0zNS42LS44LjkgMC0uMi0xLjkgMy0xMS4yIDE5LjEtMjUuNSAzNS4zLTQ0IDQ3LjYtMTAuMyA2LjgtMjEuNSAxMS44LTM0LjEgMTEuOC0yMS42IDAtMzguMi05LjUtNDkuNC0yNy44LTEyLTE5LjUtMTMuMy00MC43LTguMi02Mi42IDcuOC0zMy44IDMwLjEtNTUuMiAzOC42LTY0LjMtMTguNy02LjItMzMgMS43LTQ2LjQgMTMuOS44LTEzLjkgNC4zLTI2LjIgMTEuOC0zNy4zLTI0LjMgMTAuNi00NS45IDI1LTY0LjggNDMuOS0uMy01LjggNS40LTQzLjcgNS42LTQ0LjcuMy0yLjctLjYtNS4zLTMtNy40LTI0LjIgMjQuNy00NC41IDUxLjgtNTYuMSA4NC42IDcuNC01LjkgMTQuOS0xMS40IDIzLjYtMTYuMi04LjMgMjIuMy0xOS42IDUyLjgtNy44IDEwMS4xIDQuNiAxOSAxMS45IDM2LjggMjQuMSA1Mi4zIDIuOSAzLjcgNi4zIDYuOSA5LjUgMTAuMy4yLS4yLjQtLjMuNi0uNS0xLjQtNy0yLjItMTQuMS0xLjUtMjEuOSAyLjIgMy4yIDMuOSA2IDUuOSA4LjYgMTIuNiAxNiAyOC43IDI3LjQgNDcuMiAzNS42IDI1IDExLjMgNTEuMSAxMy4zIDc3LjkgOC42IDU0LjktOS43IDkwLjctNDguNiAxMTYtOTguOCAxLTEuOC42LTIuOS0uOS00LjJ6bTE3Mi00Ni40Yy05LjUtMy4xLTIyLjItNC4yLTI4LjctMi45IDkuOSA0IDE0LjEgNi42IDE4LjggMTIgMTIuNiAxNC40IDEwLjQgMzQuNy01LjQgNDUuNi0xMS43IDguMS0yNC45IDEwLjUtMzguOSA5LjEtMS4yLS4xLTIuMy0uNC0zLS42IDIuOC0zLjcgNi03IDguMS0xMC44IDkuNC0xNi44IDUuNC00Mi4xLTguNy01Ni4xLTIuMS0yLjEtNC42LTMuOS03LTUuOS0uMyAxLjMtLjEgMi4xLjEgMi44IDQuMiAxNi42LTguMSAzMi40LTI0LjggMzEuOC03LjYtLjMtMTMuOS0zLjgtMTkuNi04LjUtMTkuNS0xNi4xLTM5LjEtMzIuMS01OC41LTQ4LjMtNS45LTQuOS0xMi41LTguMS0yMC4xLTguNy00LjYtLjQtOS4zLS42LTEzLjktLjktNS45LS40LTguOC0yLjgtMTAuNC04LjQtLjktMy40LTEuNS02LjgtMi4yLTEwLjItMS41LTguMS02LjItMTMtMTQuMy0xNC4yLTQuNC0uNy04LjktMS0xMy4zLTEuNS0xMy0xLjQtMTkuOC03LjQtMjIuNi0yMC4zLTUgMTEtMS42IDIyLjQgNy4zIDI5LjkgNC41IDMuOCA5LjMgNy4zIDEzLjggMTEuMiA0LjYgMy44IDcuNCA4LjcgNy45IDE0LjguNCA0LjcuOCA5LjUgMS44IDE0LjEgMi4yIDEwLjYgOC45IDE4LjQgMTcgMjUuMSAxNi41IDEzLjcgMzMgMjcuMyA0OS41IDQxLjEgMTcuOSAxNSAxMy45IDMyLjggMTMgNTYtLjkgMjIuOSAxMi4yIDQyLjkgMzMuNSA1MS4yIDEgLjQgMiAuNiAzLjYgMS4xLTE1LjctMTguMi0xMC4xLTQ0LjEuNy01Mi4zLjMgMi4yLjQgNC4zLjkgNi40IDkuNCA0NC4xIDQ1LjQgNjQuMiA4NSA1Ni45IDE2LTIuOSAzMC42LTguOSA0Mi45LTE5LjggMi0xLjggMy43LTQuMSA1LjktNi41LTE5LjMgNC42LTM1LjguMS01MC45LTEwLjYuNy0uMyAxLjMtLjMgMS45LS4zIDIxLjMgMS44IDQwLjYtMy40IDU3LTE3LjQgMTkuNS0xNi42IDI2LjYtNDIuOSAxNy40LTY2LTguMy0yMC4xLTIzLjYtMzIuMy00My44LTM4Ljl6TTk5LjQgMTc5LjNjLTUuMy05LjItMTMuMi0xNS42LTIyLjEtMjEuMyAxMy43LS41IDI2LjYuMiAzOS42IDMuNy03LTEyLjItOC41LTI0LjctNS0zOC43IDUuMyAxMS45IDEzLjcgMjAuMSAyMy42IDI2LjggMTkuNyAxMy4yIDM1LjcgMTkuNiA0Ni43IDMwLjIgMy40IDMuMyA2LjMgNy4xIDkuNiAxMC45LS44LTIuMS0xLjQtNC4xLTIuMi02LTUtMTAuNi0xMy0xOC42LTIyLjYtMjUtMS44LTEuMi0yLjgtMi41LTMuNC00LjUtMy4zLTEyLjUtMy0yNS4xLS43LTM3LjYgMS01LjUgMi44LTEwLjkgNC41LTE2LjMuOC0yLjQgMi4zLTQuNiA0LTYuNi42IDYuOSAwIDI1LjUgMTkuNiA0NiAxMC44IDExLjMgMjIuNCAyMS45IDMzLjkgMzIuNyA5IDguNSAxOC4zIDE2LjcgMjUuNSAyNi44IDEuMSAxLjYgMi4yIDMuMyAzLjggNC43LTUtMTMtMTQuMi0yNC4xLTI0LjItMzMuOC05LjYtOS4zLTE5LjQtMTguNC0yOS4yLTI3LjQtMy4zLTMtNC42LTYuNy01LjEtMTAuOS0xLjItMTAuNCAwLTIwLjYgNC4zLTMwLjIuNS0xIDEuMS0yIDEuOS0zLjMuNSA0LjIuNiA3LjkgMS40IDExLjYgNC44IDIzLjEgMjAuNCAzNi4zIDQ5LjMgNjMuNSAxMCA5LjQgMTkuMyAxOS4yIDI1LjYgMzEuNiA0LjggOS4zIDcuMyAxOSA1LjcgMjkuNi0uMS42LjUgMS43IDEuMSAyIDYuMiAyLjYgMTAgNi45IDkuNyAxNC4zIDcuNy0yLjYgMTIuNS04IDE2LjQtMTQuNSA0LjIgMjAuMi05LjEgNTAuMy0yNy4yIDU4LjcuNC00LjUgNS0yMy40LTE2LjUtMjcuNy02LjgtMS4zLTEyLjgtMS4zLTIyLjktMi4xIDQuNy05IDEwLjQtMjAuNi41LTIyLjQtMjQuOS00LjYtNTIuOCAxLjktNTcuOCA0LjYgOC4yLjQgMTYuMyAxIDIzLjUgMy4zLTIgNi41LTQgMTIuNy01LjggMTguOS0xLjkgNi41IDIuMSAxNC42IDkuMyA5LjYgMS4yLS45IDIuMy0xLjkgMy4zLTIuNy0zLjEgMTcuOS0yLjkgMTUuOS0yLjggMTguMy4zIDEwLjIgOS41IDcuOCAxNS43IDcuMy0yLjUgMTEuOC0yOS41IDI3LjMtNDUuNCAyNS44IDctNC43IDEyLjctMTAuMyAxNS45LTE3LjktNi41LjgtMTIuOSAxLjYtMTkuMiAyLjRsLS4zLS45YzQuNy0zLjQgOC03LjggMTAuMi0xMy4xIDguNy0yMS4xLTMuNi0zOC0yNS0zOS45LTkuMS0uOC0xNy44LjgtMjUuOSA1LjUgNi4yLTE1LjYgMTcuMi0yNi42IDMyLjYtMzQuNS0xNS4yLTQuMy04LjktMi43LTI0LjYtNi4zIDE0LjYtOS4zIDMwLjItMTMuMiA0Ni41LTE0LjYtNS4yLTMuMi00OC4xLTMuNi03MC4yIDIwLjkgNy45IDEuNCAxNS41IDIuOCAyMy4yIDQuMi0yMy44IDctNDQgMTkuNy02Mi40IDM1LjYgMS4xLTQuOCAyLjctOS41IDMuMy0xNC4zLjYtNC41LjgtOS4yLjEtMTMuNi0xLjUtOS40LTguOS0xNS4xLTE5LjctMTYuMy03LjktLjktMTUuNi4xLTIzLjMgMS4zLS45LjEtMS43LjMtMi45IDAgMTUuOC0xNC44IDM2LTIxLjcgNTMuMS0zMy41IDYtNC41IDYuOC04LjIgMy0xNC45em0xMjguNCAyNi44YzMuMyAxNiAxMi42IDI1LjUgMjMuOCAyNC4zLTQuNi0xMS4zLTEyLjEtMTkuNS0yMy44LTI0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURhaWx5bW90aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5OC45MywyNjdhNDguNCw0OC40LDAsMCwwLTI0LjM2LTYuMjFxLTE5LjgzLDAtMzMuNDQsMTMuMjd0LTEzLjYxLDMzLjQycTAsMjEuMTYsMTMuMjgsMzQuNnQzMy40MywxMy40NHEyMC41LDAsMzQuMTEtMTMuNzhUMzIyLDMwNy40N0E0Ny4xMyw0Ny4xMywwLDAsMCwzMTUuOSwyODQsNDQuMTMsNDQuMTMsMCwwLDAsMjk4LjkzLDI2N1pNMCwzMlY0ODBINDQ4VjMyWk0zNzQuNzEsNDA1LjI2aC01My4xVjM4MS4zN2gtLjY3cS0xNS43OSwyNi4yLTU1Ljc4LDI2LjItMjcuNTYsMC00OC44OS0xMy4xYTg4LjI5LDg4LjI5LDAsMCwxLTMyLjk0LTM1Ljc3cS0xMS42LTIyLjY4LTExLjU5LTUwLjg5LDAtMjcuNTYsMTEuNzYtNTAuMjJhODkuOSw4OS45LDAsMCwxLDMyLjkzLTM1Ljc4cTIxLjE4LTEzLjA5LDQ3LjcyLTEzLjFhODAuODcsODAuODcsMCwwLDEsMjkuNzQsNS4yMXExMy4yOCw1LjIxLDI1LDE3VjE1M2w1NS43OS0xMi4wOVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGFzaGN1YmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI2LjYgMTA0SDExMC40Yy01MS4xIDAtOTEuMiA0My4zLTkxLjIgOTMuNVY0MjdjMCA1MC41IDQwLjEgODUgOTEuMiA4NWgyMjcuMmM1MS4xIDAgOTEuMi0zNC41IDkxLjItODVWMEwzMjYuNiAxMDR6TTE1My45IDQxNi41Yy0xNy43IDAtMzIuNC0xNS4xLTMyLjQtMzIuOFYyNDAuOGMwLTE3LjcgMTQuNy0zMi41IDMyLjQtMzIuNWgxNDAuN2MxNy43IDAgMzIgMTQuOCAzMiAzMi41djEyMy41bDUxLjEgNTIuM0gxNTMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGVlemVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1MS40NiwyNDQuNzFINTc2VjE3Mkg0NTEuNDZabTAtMTczLjg5djcyLjY3SDU3NlY3MC44MlptMCwyNzUuMDZINTc2VjI3My4ySDQ1MS40NlpNMCw0NDcuMDlIMTI0LjU0VjM3NC40MkgwWm0xNTAuNDcsMEgyNzVWMzc0LjQySDE1MC40N1ptMTUwLjUyLDBINDI1LjUzVjM3NC40MkgzMDFabTE1MC40NywwSDU3NlYzNzQuNDJINDUxLjQ2Wk0zMDEsMzQ1Ljg4SDQyNS41M1YyNzMuMkgzMDFabS0xNTAuNTIsMEgyNzVWMjczLjJIMTUwLjQ3Wm0wLTEwMS4xN0gyNzVWMTcySDE1MC40N1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGVsaWNpb3VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ni41IDY4Yy0uNC0xLjUtLjktMy0xLjQtNC41LS45LTIuNS0yLTQuOC0zLjMtNy4xLTEuNC0yLjQtMy00LjgtNC43LTYuOS0yLjEtMi41LTQuNC00LjgtNi45LTYuOC0xLjEtLjktMi4yLTEuNy0zLjMtMi41LTEuMy0uOS0yLjYtMS43LTQtMi40LTEuOC0xLTMuNi0xLjgtNS41LTIuNS0xLjctLjctMy41LTEuMy01LjQtMS43LTMuOC0xLTcuOS0xLjUtMTItMS41SDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgNC4xLjUgOC4yIDEuNSAxMiAyIDcuNyA1LjggMTQuNiAxMSAyMC4zIDEgMS4xIDIuMSAyLjIgMy4zIDMuMyA1LjcgNS4yIDEyLjYgOSAyMC4zIDExIDMuOCAxIDcuOSAxLjUgMTIgMS41aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMtLjEtNC4xLS42LTguMi0xLjYtMTJ6TTQxNiA0MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDIyNFYyNTZIMzJWODBjMC04LjggNy4yLTE2IDE2LTE2aDE3NnYxOTJoMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZXBsb3lkb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgyLjIgMTM2aDUxLjd2MjM5LjZoLTUxLjd2LTIwLjdjLTE5LjggMjQuOC01Mi44IDI0LjEtNzMuOCAxNC43LTI2LjItMTEuNy00NC4zLTM4LjEtNDQuMy03MS44IDAtMjkuOCAxNC44LTU3LjkgNDMuMy03MC44IDIwLjItOS4xIDUyLjctMTAuNiA3NC44IDEyLjlWMTM2em0tNjQuNyAxNjEuOGMwIDE4LjIgMTMuNiAzMy41IDMzLjIgMzMuNSAxOS44IDAgMzMuMi0xNi40IDMzLjItMzIuOSAwLTE3LjEtMTMuNy0zMy4yLTMzLjItMzMuMi0xOS42IDAtMzMuMiAxNi40LTMzLjIgMzIuNnpNMTg4LjUgMTM2aDUxLjd2MjM5LjZoLTUxLjd2LTIwLjdjLTE5LjggMjQuOC01Mi44IDI0LjEtNzMuOCAxNC43LTI2LjItMTEuNy00NC4zLTM4LjEtNDQuMy03MS44IDAtMjkuOCAxNC44LTU3LjkgNDMuMy03MC44IDIwLjItOS4xIDUyLjctMTAuNiA3NC44IDEyLjlWMTM2em0tNjQuNyAxNjEuOGMwIDE4LjIgMTMuNiAzMy41IDMzLjIgMzMuNSAxOS44IDAgMzMuMi0xNi40IDMzLjItMzIuOSAwLTE3LjEtMTMuNy0zMy4yLTMzLjItMzMuMi0xOS43IDAtMzMuMiAxNi40LTMzLjIgMzIuNnpNNDQ4IDk2YzE3LjUgMCAzMiAxNC40IDMyIDMydjI1NmMwIDE3LjUtMTQuNCAzMi0zMiAzMkg2NGMtMTcuNSAwLTMyLTE0LjQtMzItMzJWMTI4YzAtMTcuNSAxNC40LTMyIDMyLTMyaDM4NG0wLTMySDY0QzI4LjggNjQgMCA5Mi44IDAgMTI4djI1NmMwIDM1LjIgMjguOCA2NCA2NCA2NGgzODRjMzUuMiAwIDY0LTI4LjggNjQtNjRWMTI4YzAtMzUuMi0yOC44LTY0LTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZXNrcHJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwNS45IDUxMmwzMS4xLTM4LjRjMTIuMy0uMiAyNS42LTEuNCAzNi41LTYuNiAzOC45LTE4LjYgMzguNC02MS45IDM4LjMtNjMuOC0uMS01LS44LTQuNC0yOC45LTM3LjRIMzYyYy0uMiA1MC4xLTcuMyA2OC41LTEwLjIgNzUuNy05LjQgMjMuNy00My45IDYyLjgtOTUuMiA2OS40LTguNyAxLjEtMzIuOCAxLjItNTAuNyAxLjF6bTIwMC40LTE2Ny43YzM4LjYgMCA1OC41LTEzLjYgNzMuNy0zMC45bC0xNzUuNS0uMy0xNy40IDMxLjMgMTE5LjItLjF6bS00My42LTIyMy45djE2OC4zaC03My41bC0zMi43IDU1LjVIMjUwYy01Mi4zIDAtNTguMS01Ni41LTU4LjMtNTguOS0xLjItMTMuMi0yMS4zLTExLjYtMjAuMSAxLjggMS40IDE1LjggOC44IDQwIDI2LjQgNTcuMWgtOTFjLTI1LjUgMC0xMTAuOC0yNi44LTEwNy0xMTRWMTYuOUMwIC45IDkuNy4zIDE1IC4xaDgyYy4yIDAgLjMuMS41LjEgNC4zLS40IDUwLjEtMi4xIDUwLjEgNDMuNyAwIDEzLjMgMjAuMiAxMy40IDIwLjIgMCAwLTE4LjItNS41LTMyLjgtMTUuOC00My43aDg0LjJjMTA4LjctLjQgMTI2LjUgNzkuNCAxMjYuNSAxMjAuMnptLTEzMi41IDU2bDY0IDI5LjNjMTMuMy00NS41LTQyLjItNzEuNy02NC0yOS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZXYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIwLjEyIDIwOC4yOWMtMy44OC0yLjktNy43Ny00LjM1LTExLjY1LTQuMzVIOTEuMDN2MTA0LjQ3aDE3LjQ1YzMuODggMCA3Ljc3LTEuNDUgMTEuNjUtNC4zNSAzLjg4LTIuOSA1LjgyLTcuMjUgNS44Mi0xMy4wNnYtNjkuNjVjLS4wMS01LjgtMS45Ni0xMC4xNi01LjgzLTEzLjA2ek00MDQuMSAzMkg0My45QzE5LjcgMzIgLjA2IDUxLjU5IDAgNzUuOHYzNjAuNEMuMDYgNDYwLjQxIDE5LjcgNDgwIDQzLjkgNDgwaDM2MC4yYzI0LjIxIDAgNDMuODQtMTkuNTkgNDMuOS00My44Vjc1LjhjLS4wNi0yNC4yMS0xOS43LTQzLjgtNDMuOS00My44ek0xNTQuMiAyOTEuMTljMCAxOC44MS0xMS42MSA0Ny4zMS00OC4zNiA0Ny4yNWgtNDYuNFYxNzIuOThoNDcuMzhjMzUuNDQgMCA0Ny4zNiAyOC40NiA0Ny4zNyA0Ny4yOGwuMDEgNzAuOTN6bTEwMC42OC04OC42NkgyMDEuNnYzOC40MmgzMi41N3YyOS41N0gyMDEuNnYzOC40MWg1My4yOXYyOS41N2gtNjIuMThjLTExLjE2LjI5LTIwLjQ0LTguNTMtMjAuNzItMTkuNjlWMTkzLjdjLS4yNy0xMS4xNSA4LjU2LTIwLjQxIDE5LjcxLTIwLjY5aDYzLjE5bC0uMDEgMjkuNTJ6bTEwMy42NCAxMTUuMjljLTEzLjIgMzAuNzUtMzYuODUgMjQuNjMtNDcuNDQgMGwtMzguNTMtMTQ0LjhoMzIuNTdsMjkuNzEgMTEzLjcyIDI5LjU3LTExMy43MmgzMi41OGwtMzguNDYgMTQ0Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURldmlhbnRhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDkzLjJsLTk4LjIgMTc5LjEgNy40IDkuNUgzMjB2MTI3LjdIMTU5LjFsLTEzLjUgOS4yLTQzLjcgODRjLS4zIDAtOC42IDguNi05LjIgOS4ySDB2LTkzLjJsOTMuMi0xNzkuNC03LjQtOS4ySDBWMTAyLjVoMTU2bDEzLjUtOS4yIDQzLjctODRjLjMgMCA4LjYtOC42IDkuMi05LjJIMzIwdjkzLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURobCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzggMzAxLjJoNTguN0wzMTkgMjcxaC01OC43TDIzOCAzMDEuMnpNMCAyODIuOXY2LjRoODEuOGw0LjctNi40SDB6TTE3Mi45IDI3MWMtOC43IDAtNi0zLjYtNC42LTUuNSAyLjgtMy44IDcuNi0xMC40IDEwLjQtMTQuMSAyLjgtMy43IDIuOC01LjktMi44LTUuOWgtNTFsLTQxLjEgNTUuOGgxMDAuMWMzMy4xIDAgNTEuNS0yMi41IDU3LjItMzAuM2gtNjguMnptMzE3LjUtNi45bDM5LjMtNTMuNGgtNjIuMmwtMzkuMyA1My40aDYyLjJ6TTk1LjMgMjcxSDB2Ni40aDkwLjZsNC43LTYuNHptMTExLTI2LjZjLTIuOCAzLjgtNy41IDEwLjQtMTAuMyAxNC4yLTEuNCAyLTQuMSA1LjUgNC42IDUuNWg0NS42czcuMy0xMCAxMy41LTE4LjRjOC40LTExLjQuNy0zNS0yOS4yLTM1SDExMi42bC0yMC40IDI3LjhoMTExLjRjNS42IDAgNS41IDIuMiAyLjcgNS45ek0wIDMwMS4yaDczLjFsNC43LTYuNEgwdjYuNHptMzIzIDBoNTguN0w0MDQgMjcxaC01OC43Yy0uMSAwLTIyLjMgMzAuMi0yMi4zIDMwLjJ6bTIyMiAuMWg5NXYtNi40aC05MC4zbC00LjcgNi40em0yMi4zLTMwLjNsLTQuNyA2LjRINjQwVjI3MWgtNzIuN3ptLTEzLjUgMTguM0g2NDB2LTYuNGgtODEuNWwtNC43IDYuNHptLTE2NC4yLTc4LjZsLTIyLjUgMzAuNmgtMjYuMmwyMi41LTMwLjZoLTU4LjdsLTM5LjMgNTMuNEg0MDlsMzkuMy01My40aC01OC43em0zMy41IDYwLjNzLTQuMyA1LjktNi40IDguN2MtNy40IDEwLS45IDIxLjYgMjMuMiAyMS42aDk0LjNsMjIuMy0zMC4zSDQyMy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWFzcG9yYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTEuNjQgMzU0LjU1Yy0xLjQgMC04OCAxMTkuOS04OC43IDExOS45Uzc2LjM0IDQxNCA3NiA0MTMuMjVzODYuNi0xMjUuNyA4Ni42LTEyNy40YzAtMi4yLTEyOS42LTQ0LTEzNy42LTQ3LjEtMS4zLS41IDMxLjQtMTAxLjggMzEuNy0xMDIuMS42LS43IDE0NC40IDQ3IDE0NS41IDQ3IC40IDAgLjktLjYgMS0xLjMuNC0yIDEtMTQ4LjYgMS43LTE0OS42LjgtMS4yIDEwNC41LS43IDEwNS4xLS4zIDEuNSAxIDMuNSAxNTYuMSA2LjEgMTU2LjEgMS40IDAgMTM4LjctNDcgMTM5LjMtNDYuMy44LjkgMzEuOSAxMDIuMiAzMS41IDEwMi42LS45LjktMTQwLjIgNDcuMS0xNDAuNiA0OC44LS4zIDEuNCA4Mi44IDEyMi4xIDgyLjUgMTIyLjlzLTg1LjUgNjMuNS04Ni4zIDYzLjVjLTEtLjItODktMTI1LjUtOTAuOS0xMjUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlnZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MS43IDE3Mi4zSDB2MTc0LjRoMTMyLjdWOTZoLTUxdjc2LjN6bTAgMTMzLjRINTAuOXYtOTIuM2gzMC44djkyLjN6bTI5Ny4yLTEzMy40djE3NC40aDgxLjh2MjguNWgtODEuOFY0MTZINTEyVjE3Mi4zSDM3OC45em04MS44IDEzMy40aC0zMC44di05Mi4zaDMwLjh2OTIuM3ptLTIzNS42IDQxaDgyLjF2MjguNWgtODIuMVY0MTZoMTMzLjNWMTcyLjNIMjI1LjF2MTc0LjR6bTUxLjItMTMzLjNoMzAuOHY5Mi4zaC0zMC44di05Mi4zek0xNTMuMyA5Nmg1MS4zdjUxaC01MS4zVjk2em0wIDc2LjNoNTEuM3YxNzQuNGgtNTEuM1YxNzIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlnaXRhbE9jZWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg3IDQ4MS44aDczLjd2LTczLjZIODd6TTI1LjQgMzQ2LjZ2NjEuNkg4N3YtNjEuNnptNDY2LjItMTY5LjdjLTIzLTc0LjItODIuNC0xMzMuMy0xNTYuNi0xNTYuNkMxNjQuOS0zMi44IDggOTMuNyA4IDI1NS45aDk1LjhjMC0xMDEuOCAxMDEtMTgwLjUgMjA4LjEtMTQxLjcgMzkuNyAxNC4zIDcxLjUgNDYuMSA4NS44IDg1LjcgMzkuMSAxMDctMzkuNyAyMDcuOC0xNDEuNCAyMDh2LjNoLS4zVjUwNGMxNjIuNiAwIDI4OC44LTE1Ni44IDIzNS42LTMyNy4xem0tMjM1LjMgMjMxdi05NS4zaC05NS42djk1LjZIMjU2di0uM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlzY29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjQuNTMxLDY5LjgzNmExLjUsMS41LDAsMCwwLS43NjQtLjdBNDg1LjA2NSw0ODUuMDY1LDAsMCwwLDQwNC4wODEsMzIuMDNhMS44MTYsMS44MTYsMCwwLDAtMS45MjMuOTEsMzM3LjQ2MSwzMzcuNDYxLDAsMCwwLTE0LjksMzAuNiw0NDcuODQ4LDQ0Ny44NDgsMCwwLDAtMTM0LjQyNiwwLDMwOS41NDEsMzA5LjU0MSwwLDAsMC0xNS4xMzUtMzAuNiwxLjg5LDEuODksMCwwLDAtMS45MjQtLjkxQTQ4My42ODksNDgzLjY4OSwwLDAsMCwxMTYuMDg1LDY5LjEzN2ExLjcxMiwxLjcxMiwwLDAsMC0uNzg4LjY3NkMzOS4wNjgsMTgzLjY1MSwxOC4xODYsMjk0LjY5LDI4LjQzLDQwNC4zNTRhMi4wMTYsMi4wMTYsMCwwLDAsLjc2NSwxLjM3NUE0ODcuNjY2LDQ4Ny42NjYsMCwwLDAsMTc2LjAyLDQ3OS45MThhMS45LDEuOSwwLDAsMCwyLjA2My0uNjc2QTM0OC4yLDM0OC4yLDAsMCwwLDIwOC4xMiw0MzAuNGExLjg2LDEuODYsMCwwLDAtMS4wMTktMi41ODgsMzIxLjE3MywzMjEuMTczLDAsMCwxLTQ1Ljg2OC0yMS44NTMsMS44ODUsMS44ODUsMCwwLDEtLjE4NS0zLjEyNmMzLjA4Mi0yLjMwOSw2LjE2Ni00LjcxMSw5LjEwOS03LjEzN2ExLjgxOSwxLjgxOSwwLDAsMSwxLjktLjI1NmM5Ni4yMjksNDMuOTE3LDIwMC40MSw0My45MTcsMjk1LjUsMGExLjgxMiwxLjgxMiwwLDAsMSwxLjkyNC4yMzNjMi45NDQsMi40MjYsNi4wMjcsNC44NTEsOS4xMzIsNy4xNmExLjg4NCwxLjg4NCwwLDAsMS0uMTYyLDMuMTI2LDMwMS40MDcsMzAxLjQwNywwLDAsMS00NS44OSwyMS44MywxLjg3NSwxLjg3NSwwLDAsMC0xLDIuNjExLDM5MS4wNTUsMzkxLjA1NSwwLDAsMCwzMC4wMTQsNDguODE1LDEuODY0LDEuODY0LDAsMCwwLDIuMDYzLjdBNDg2LjA0OCw0ODYuMDQ4LDAsMCwwLDYxMC43LDQwNS43MjlhMS44ODIsMS44ODIsMCwwLDAsLjc2NS0xLjM1MkM2MjMuNzI5LDI3Ny41OTQsNTkwLjkzMywxNjcuNDY1LDUyNC41MzEsNjkuODM2Wk0yMjIuNDkxLDMzNy41OGMtMjguOTcyLDAtNTIuODQ0LTI2LjU4Ny01Mi44NDQtNTkuMjM5UzE5My4wNTYsMjE5LjEsMjIyLjQ5MSwyMTkuMWMyOS42NjUsMCw1My4zMDYsMjYuODIsNTIuODQzLDU5LjIzOUMyNzUuMzM0LDMxMC45OTMsMjUxLjkyNCwzMzcuNTgsMjIyLjQ5MSwzMzcuNThabTE5NS4zOCwwYy0yOC45NzEsMC01Mi44NDMtMjYuNTg3LTUyLjg0My01OS4yMzlTMzg4LjQzNywyMTkuMSw0MTcuODcxLDIxOS4xYzI5LjY2NywwLDUzLjMwNywyNi44Miw1Mi44NDQsNTkuMjM5QzQ3MC43MTUsMzEwLjk5Myw0NDcuNTM4LDMzNy41OCw0MTcuODcxLDMzNy41OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlzY291cnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNS45IDMyQzEwMy4zIDMyIDAgMTMwLjUgMCAyNTIuMSAwIDI1NiAuMSA0ODAgLjEgNDgwbDIyNS44LS4yYzEyMi43IDAgMjIyLjEtMTAyLjMgMjIyLjEtMjIzLjlDNDQ4IDEzNC4zIDM0OC42IDMyIDIyNS45IDMyek0yMjQgMzg0Yy0xOS40IDAtMzcuOS00LjMtNTQuNC0xMi4xTDg4LjUgMzkybDIyLjktNzVjLTkuOC0xOC4xLTE1LjQtMzguOS0xNS40LTYxIDAtNzAuNyA1Ny4zLTEyOCAxMjgtMTI4czEyOCA1Ny4zIDEyOCAxMjgtNTcuMyAxMjgtMTI4IDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9jaHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0MTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5Ny45IDE2MEgyNTZWMTkuNkwzOTcuOSAxNjB6TTMwNCAxOTJ2MTMwYzAgNjYuOC0zNi41IDEwMC4xLTExMy4zIDEwMC4xSDk2Vjg0LjhoOTQuN2MxMiAwIDIzLjEuOCAzMy4xIDIuNXYtODRDMjEyLjkgMS4xIDIwMS40IDAgMTg5LjIgMEgwdjUxMmgxODkuMkMzMjkuNyA1MTIgNDAwIDQ0Ny40IDQwMCAzMTguMVYxOTJoLTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb2NrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ5LjkgMjM2LjNoLTY2LjF2LTU5LjRoNjYuMXY1OS40em0wLTIwNC4zaC02Ni4xdjYwLjdoNjYuMVYzMnptNzguMiAxNDQuOEgzNjJ2NTkuNGg2Ni4xdi01OS40em0tMTU2LjMtNzIuMWgtNjYuMXY2MC4xaDY2LjF2LTYwLjF6bTc4LjEgMGgtNjYuMXY2MC4xaDY2LjF2LTYwLjF6bTI3Ni44IDEwMGMtMTQuNC05LjctNDcuNi0xMy4yLTczLjEtOC40LTMuMy0yNC0xNi43LTQ0LjktNDEuMS02My43bC0xNC05LjMtOS4zIDE0Yy0xOC40IDI3LjgtMjMuNCA3My42LTMuNyAxMDMuOC04LjcgNC43LTI1LjggMTEuMS00OC40IDEwLjdIMi40Yy04LjcgNTAuOCA1LjggMTE2LjggNDQgMTYyLjEgMzcuMSA0My45IDkyLjcgNjYuMiAxNjUuNCA2Ni4yIDE1Ny40IDAgMjczLjktNzIuNSAzMjguNC0yMDQuMiAyMS40LjQgNjcuNi4xIDkxLjMtNDUuMiAxLjUtMi41IDYuNi0xMy4yIDguNS0xNy4xbC0xMy4zLTguOXptLTUxMS4xLTI3LjloLTY2djU5LjRoNjYuMXYtNTkuNHptNzguMSAwaC02Ni4xdjU5LjRoNjYuMXYtNTkuNHptNzguMSAwaC02Ni4xdjU5LjRoNjYuMXYtNTkuNHptLTc4LjEtNzIuMWgtNjYuMXY2MC4xaDY2LjF2LTYwLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyYWZ0MkRpZ2l0YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDM5OC4xbC0xNDQtODIuMnY2NC43aC05MS4zYzMwLjgtMzUgODEuOC05NS45IDExMS44LTE0OS4zIDM1LjItNjIuNiAxNi4xLTEyMy40LTEyLjgtMTUzLjMtNC40LTQuNi02Mi4yLTYyLjktMTY2LTQxLjItNTkuMSAxMi40LTg5LjQgNDMuNC0xMDQuMyA2Ny4zLTEzLjEgMjAuOS0xNyAzOS44LTE4LjIgNDcuNy01LjUgMzMgMTkuNCA2Ny4xIDU2LjcgNjcuMSAzMS43IDAgNTcuMy0yNS43IDU3LjMtNTcuNCAwLTI3LjEtMTkuNy01Mi4xLTQ4LTU2LjggMS44LTcuMyAxNy43LTIxLjEgMjYuMy0yNC43IDQxLjEtMTcuMyA3OCA1LjIgODMuMyAzMy41IDguMyA0NC4zLTM3LjEgOTAuNC02OS43IDEyNy42Qzg0LjUgMzI4LjEgMTguMyAzOTYuOCAwIDQxNS45bDMzNi0uMVY0ODB6TTM2OS45IDM3MWw0Ny4xIDI3LjItNDcuMSAyNy4yek0xMzQuMiAxNjEuNGMwIDEyLjQtMTAgMjIuNC0yMi40IDIyLjRzLTIyLjQtMTAtMjIuNC0yMi40IDEwLTIyLjQgMjIuNC0yMi40IDIyLjQgMTAuMSAyMi40IDIyLjR6TTgyLjUgMzgwLjVjMjUuNi0yNy40IDk3LjctMTA0LjcgMTUwLjgtMTY5LjkgMzUuMS00My4xIDQwLjMtODIuNCAyOC40LTExMi43LTcuNC0xOC44LTE3LjUtMzAuMi0yNC4zLTM1LjcgNDUuMyAyLjEgNjggMjMuNCA4Mi4yIDM4LjMgMCAwIDQyLjQgNDguMiA1LjggMTEzLjMtMzcgNjUuOS0xMTAuOSAxNDcuNS0xMjguNSAxNjYuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJpYmJibGVTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTAuMiAyMjguMmM4LjktNDIuNCAzNy40LTc3LjcgNzUuNy05NS43IDMuNiA0LjkgMjggMzguOCA1MC43IDc5LTY0IDE3LTEyMC4zIDE2LjgtMTI2LjQgMTYuN3pNMzE0LjYgMTU0Yy0zMy42LTI5LjgtNzkuMy00MS4xLTEyMi42LTMwLjYgMy44IDUuMSAyOC42IDM4LjkgNTEgODAgNDguNi0xOC4zIDY5LjEtNDUuOSA3MS42LTQ5LjR6TTE0MC4xIDM2NGM0MC41IDMxLjYgOTMuMyAzNi43IDEzNy4zIDE4LTItMTItMTAtNTMuOC0yOS4yLTEwMy42LTU1LjEgMTguOC05My44IDU2LjQtMTA4LjEgODUuNnptOTguOC0xMDguMmMtMy40LTcuOC03LjItMTUuNS0xMS4xLTIzLjJDMTU5LjYgMjUzIDkzLjQgMjUyLjIgODcuNCAyNTJjMCAxLjQtLjEgMi44LS4xIDQuMiAwIDM1LjEgMTMuMyA2Ny4xIDM1LjEgOTEuNCAyMi4yLTM3LjkgNjcuMS03Ny45IDExNi41LTkxLjh6bTM0LjkgMTYuM2MxNy45IDQ5LjEgMjUuMSA4OS4xIDI2LjUgOTcuNCAzMC43LTIwLjcgNTIuNS01My42IDU4LjYtOTEuNi00LjYtMS41LTQyLjMtMTIuNy04NS4xLTUuOHptLTIwLjMtNDguNGM0LjggOS44IDguMyAxNy44IDEyIDI2LjggNDUuNS01LjcgOTAuNyAzLjQgOTUuMiA0LjQtLjMtMzIuMy0xMS44LTYxLjktMzAuOS04NS4xLTIuOSAzLjktMjUuOCAzMy4yLTc2LjMgNTMuOXpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNjQgMTc2YzAtODguMi03MS44LTE2MC0xNjAtMTYwUzY0IDE2Ny44IDY0IDI1NnM3MS44IDE2MCAxNjAgMTYwIDE2MC03MS44IDE2MC0xNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyaWJiYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4yNTIgOCA4IDExOS4yNTIgOCAyNTZzMTExLjI1MiAyNDggMjQ4IDI0OCAyNDgtMTExLjI1MiAyNDgtMjQ4UzM5Mi43NDggOCAyNTYgOHptMTYzLjk3IDExNC4zNjZjMjkuNTAzIDM2LjA0NiA0Ny4zNjkgODEuOTU3IDQ3LjgzNSAxMzEuOTU1LTYuOTg0LTEuNDc3LTc3LjAxOC0xNS42ODItMTQ3LjUwMi02LjgxOC01Ljc1Mi0xNC4wNDEtMTEuMTgxLTI2LjM5My0xOC42MTctNDEuNjE0IDc4LjMyMS0zMS45NzcgMTEzLjgxOC03Ny40ODIgMTE4LjI4NC04My41MjN6TTM5Ni40MjEgOTcuODdjLTMuODEgNS40MjctMzUuNjk3IDQ4LjI4Ni0xMTEuMDIxIDc2LjUxOS0zNC43MTItNjMuNzc2LTczLjE4NS0xMTYuMTY4LTc5LjA0LTEyNC4wMDggNjcuMTc2LTE2LjE5MyAxMzcuOTY2IDEuMjcgMTkwLjA2MSA0Ny40ODl6bS0yMzAuNDgtMzMuMjVjNS41ODUgNy42NTkgNDMuNDM4IDYwLjExNiA3OC41MzcgMTIyLjUwOS05OS4wODcgMjYuMzEzLTE4Ni4zNiAyNS45MzQtMTk1LjgzNCAyNS44MDlDNjIuMzggMTQ3LjIwNSAxMDYuNjc4IDkyLjU3MyAxNjUuOTQxIDY0LjYyek00NC4xNyAyNTYuMzIzYzAtMi4xNjYuMDQzLTQuMzIyLjEwOC02LjQ3MyA5LjI2OC4xOSAxMTEuOTIgMS41MTMgMjE3LjcwNi0zMC4xNDYgNi4wNjQgMTEuODY4IDExLjg1NyAyMy45MTUgMTcuMTc0IDM1Ljk0OS03Ni41OTkgMjEuNTc1LTE0Ni4xOTQgODMuNTI3LTE4MC41MzEgMTQyLjMwNkM2NC43OTQgMzYwLjQwNSA0NC4xNyAzMTAuNzMgNDQuMTcgMjU2LjMyM3ptODEuODA3IDE2Ny4xMTNjMjIuMTI3LTQ1LjIzMyA4Mi4xNzgtMTAzLjYyMiAxNjcuNTc5LTEzMi43NTYgMjkuNzQgNzcuMjgzIDQyLjAzOSAxNDIuMDUzIDQ1LjE4OSAxNjAuNjM4LTY4LjExMiAyOS4wMTMtMTUwLjAxNSAyMS4wNTMtMjEyLjc2OC0yNy44ODJ6bTI0OC4zOCA4LjQ4OWMtMi4xNzEtMTIuODg2LTEzLjQ0Ni03NC44OTctNDEuMTUyLTE1MS4wMzMgNjYuMzgtMTAuNjI2IDEyNC43IDYuNzY4IDEzMS45NDcgOS4wNTUtOS40NDIgNTguOTQxLTQzLjI3MyAxMDkuODQ0LTkwLjc5NSAxNDEuOTc4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcm9wYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MjggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2NC40IDExNi4zbC0xMzIgODQuMyAxMzIgODQuMy0xMzIgODQuM0wwIDI4NC4xbDEzMi4zLTg0LjNMMCAxMTYuMyAxMzIuMyAzMmwxMzIuMSA4NC4zek0xMzEuNiAzOTUuN2wxMzItODQuMyAxMzIgODQuMy0xMzIgODQuMy0xMzItODQuM3ptMTMyLjgtMTExLjZsMTMyLTg0LjMtMTMyLTgzLjZMMzk1LjcgMzIgNTI4IDExNi4zbC0xMzIuMyA4NC4zTDUyOCAyODQuOGwtMTMyLjMgODQuMy0xMzEuMy04NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJ1cGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxOS41IDExNC43Yy0yMi4yLTE0LTQzLjUtMTkuNS02NC43LTMzLjUtMTMtOC44LTMxLjMtMzAtNDYuNS00OC4zLTIuNyAyOS4zLTExLjUgNDEuMi0yMiA0OS41LTIxLjMgMTctMzQuOCAyMi4yLTUzLjUgMzIuM0MxMTcgMTIzIDMyIDE4MS41IDMyIDI5MC41IDMyIDM5OS43IDEyMy44IDQ4MCAyMjUuOCA0ODAgMzI3LjUgNDgwIDQxNiA0MDYgNDE2IDI5NGMwLTExMi4zLTgzLTE3MS05Ni41LTE3OS4zem0yLjUgMzI1LjZjLTIwLjEgMjAuMS05MC4xIDI4LjctMTE2LjcgNC4yLTQuOC00LjguMy0xMiA2LjUtMTIgMCAwIDE3IDEzLjMgNTEuNSAxMy4zIDI3IDAgNDYtNy43IDU0LjUtMTQgNi4xLTQuNiA4LjQgNC4zIDQuMiA4LjV6bS01NC41LTUyLjZjOC43LTMuNiAyOS0zLjggMzYuOCAxLjMgNC4xIDIuOCAxNi4xIDE4LjggNi4yIDIzLjctOC40IDQuMi0xLjItMTUuNy0yNi41LTE1LjctMTQuNyAwLTE5LjUgNS4yLTI2LjcgMTEtNyA2LTkuOCA4LTEyLjIgNC43LTYtOC4yIDE1LjktMjIuMyAyMi40LTI1ek0zNjAgNDA1Yy0xNS4yLTEtNDUuNS00OC44LTY1LTQ5LjUtMzAuOS0uOS0xMDQuMSA4MC43LTE2MS4zIDQyLTM4LjgtMjYuNi0xNC42LTEwNC44IDUxLjgtMTA1LjIgNDkuNS0uNSA4My44IDQ5IDEwOC41IDQ4LjUgMjEuMy0uMyA2MS44LTQxLjggODEuOC00MS44IDQ4LjcgMCAyMy4zIDEwOS4zLTE1LjggMTA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEeWFsb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnYxMTkuMmg2NFY5NmgxMDcuMkMyODQuNiA5NiAzNTIgMTc2LjIgMzUyIDI1NS45IDM1MiAzMzIgMjkzLjQgNDE2IDE3MS4yIDQxNkgwdjY0aDE3MS4yQzMzMS45IDQ4MCA0MTYgMzY3LjMgNDE2IDI1NS45YzAtNTguNy0yMi4xLTExMy40LTYyLjMtMTU0LjNDMzA4LjkgNTYgMjQ1LjcgMzIgMTcxLjIgMzJIMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWFybHliaXJkcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuMiA0Ny41YzEuMi0xMyAyMS4zLTE0IDM2LjYtOC43LjkuMyAyNi4yIDkuNyAxOSAxNS4yLTI3LjktNy40LTU2LjQgMTguMi01NS42LTYuNXptLTIwMSA2LjljMzAuNy04LjEgNjIgMjAgNjEuMS03LjEtMS4zLTE0LjItMjMuNC0xNS4zLTQwLjItOS42LTEgLjMtMjguNyAxMC41LTIwLjkgMTYuN3pNMzE5LjQgMTYwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2IDE2LTcuMiAxNi0xNi03LjItMTYtMTYtMTZ6bS0xNTkuNyAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2IDE2LTcuMiAxNi0xNi03LjItMTYtMTYtMTZ6bTMxOC41IDE2My4yYy05LjkgMjQtNDAuNyAxMS02My45LTEuMi0xMy41IDY5LjEtNTguMSAxMTEuNC0xMjYuMyAxMjQuMi4zLjktMi0uMSAyNCAxIDMzLjYgMS40IDYzLjgtMy4xIDk3LjQtOC0xOS44LTEzLjgtMTEuNC0zNy4xLTkuOC0zOC4xIDEuNC0uOSAxNC43IDEuNyAyMS42IDExLjUgOC42LTEyLjUgMjguNC0xNC44IDMwLjItMTMuNiAxLjYgMS4xIDYuNiAyMC45LTYuOSAzNC42IDQuNy0uOSA4LjItMS42IDkuOC0yLjEgMi42LS44IDE3LjcgMTEuMyAzLjEgMTMuMy0xNC4zIDIuMy0yMi42IDUuMS00Ny4xIDEwLjgtNDUuOSAxMC43LTg1LjkgMTEuOC0xMTcuNyAxMi44bDEgMTEuNmMzLjggMTguMS0yMy40IDI0LjMtMjcuNiA2LjIuOCAxNy45LTI3LjEgMjEuOC0yOC40LTFsLS41IDUuM2MtLjcgMTguNC0yOC40IDE3LjktMjguMy0uNi03LjUgMTMuNS0yOC4xIDYuOC0yNi40LTguNWwxLjItMTIuNGMtMzYuNy45LTU5LjcgMy4xLTYxLjggMy4xLTIwLjkgMC0yMC45LTMxLjYgMC0zMS42IDIuNCAwIDI3LjcgMS4zIDYzLjIgMi44LTYxLjEtMTUuNS0xMDMuNy01NS0xMTQuOS0xMTguMi0yNSAxMi44LTU3LjUgMjYuOC02OC4yLjgtMTAuNS0yNS40IDIxLjUtNDIuNiA2Ni44LTczLjQuNy02LjYgMS42LTEzLjMgMi43LTE5LjgtMTQuNC0xOS42LTExLjYtMzYuMy0xNi4xLTYwLjQtMTYuOCAyLjQtMjMuMi05LjEtMjMuNi0yMy4xLjMtNy4zIDIuMS0xNC45IDIuNC0xNS40IDEuMS0xLjggMTAuMS0yIDEyLjctMi42IDYtMzEuNyA1MC42LTMzLjIgOTAuOS0zNC41IDE5LjctMjEuOCA0NS4yLTQxLjUgODAuOS00OC4zQzIwMy4zIDI5IDIxNS4yIDguNSAyMTYuMiA4YzEuNy0uOCAyMS4yIDQuMyAyNi4zIDIzLjIgNS4yLTguOCAxOC4zLTExLjQgMTkuNi0xMC43IDEuMS42IDYuNCAxNS00LjkgMjUuOSA0MC4zIDMuNSA3Mi4yIDI0LjcgOTYgNTAuNyAzNi4xIDEuNSA3MS44IDUuOSA3Ny4xIDM0IDIuNy42IDExLjYuOCAxMi43IDIuNi4zLjUgMi4xIDguMSAyLjQgMTUuNC0uNSAxMy45LTYuOCAyNS40LTIzLjYgMjMuMS0zLjIgMTcuMy0yLjcgMzIuOS04LjcgNDcuNyAyLjQgMTEuNyA0IDIzLjggNC44IDM2LjQgMzcgMjUuNCA3MC4zIDQyLjUgNjAuMyA2Ni45ek0yMDcuNCAxNTkuOWMuOS00NC0zNy45LTQyLjItNzguNi00MC4zLTIxLjcgMS0zOC45IDEuOS00NS41IDEzLjktMTEuNCAyMC45IDUuOSA5Mi45IDIzLjIgMTAxLjIgOS44IDQuNyA3My40IDcuOSA4Ni4zLTcuMSA4LjItOS40IDE1LTQ5LjQgMTQuNi02Ny43em01MiA1OC4zYy00LjMtMTIuNC02LTMwLjEtMTUuMy0zMi43LTItLjUtOS0uNS0xMSAwLTEwIDIuOC0xMC44IDIyLjEtMTcgMzcuMiAxNS40IDAgMTkuMyA5LjcgMjMuNyA5LjcgNC4zIDAgNi4zLTExLjMgMTkuNi0xNC4yem0xMzUuNy04NC43Yy02LjYtMTIuMS0yNC44LTEyLjktNDYuNS0xMy45LTQwLjItMS45LTc4LjItMy44LTc3LjMgNDAuMy0uNSAxOC4zIDUgNTguMyAxMy4yIDY3LjggMTMgMTQuOSA3Ni42IDExLjggODYuMyA3LjEgMTUuOC03LjYgMzYuNS03OC45IDI0LjMtMTAxLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUViYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjA2IDE4OS41bC01NC44IDEwOS45LTU0LjktMTA5LjloLTM3LjVsMTAuOSAyMC42Yy0xMS41LTE5LTM1LjktMjYtNjMuMy0yNi0zMS44IDAtNjcuOSA4LjctNzEuNSA0My4xaDMzLjdjMS40LTEzLjggMTUuNy0yMS44IDM1LTIxLjggMjYgMCA0MSA5LjYgNDEgMzN2My40Yy0xMi43IDAtMjggLjEtNDEuNy40LTQyLjQuOS02OS42IDEwLTc2LjcgMzQuNCAxLTUuMiAxLjUtMTAuNiAxLjUtMTYuMiAwLTUyLjEtMzkuNy03Ni4yLTc1LjQtNzYuMi0yMS4zIDAtNDMgNS41LTU4LjcgMjQuMnYtODAuNmgtMzIuMXYxNjkuNWMwIDEwLjMtLjYgMjIuOS0xLjEgMzMuMWgzMS41Yy43LTYuMyAxLjEtMTIuOSAxLjEtMTkuNSAxMy42IDE2LjYgMzUuNCAyNC45IDU4LjcgMjQuOSAzNi45IDAgNjQuOS0yMS45IDczLjMtNTQuMi0uNSAyLjgtLjcgNS44LS43IDkgMCAyNC4xIDIxLjEgNDUgNjAuNiA0NSAyNi42IDAgNDUuOC01LjcgNjEuOS0yNS41IDAgNi42LjMgMTMuMyAxLjEgMjAuMmgyOS44Yy0uNy04LjItMS0xNy41LTEtMjYuOHYtNjUuNmMwLTkuMy0xLjctMTcuMi00LjgtMjMuOGw2MS41IDExNi4xLTI4LjUgNTQuMWgzNS45TDY0MCAxODkuNXpNMjQzLjcgMzEzLjhjLTI5LjYgMC01MC4yLTIxLjUtNTAuMi01My44IDAtMzIuNCAyMC42LTUzLjggNTAuMi01My44IDI5LjggMCA1MC4yIDIxLjQgNTAuMiA1My44IDAgMzIuMy0yMC40IDUzLjgtNTAuMiA1My44em0yMDAuOS00Ny4zYzAgMzAtMTcuOSA0OC40LTUxLjYgNDguNC0yNS4xIDAtMzUtMTMuNC0zNS0yNS44IDAtMTkuMSAxOC4xLTI0LjQgNDcuMi0yNS4zIDEzLjEtLjUgMjcuNi0uNiAzOS40LS42em0tNDExLjkgMS42aDEyOC44di04LjVjMC01MS43LTMzLjEtNzUuNC03OC40LTc1LjQtNTYuOCAwLTgzIDMwLjgtODMgNzcuNiAwIDQyLjUgMjUuMyA3NCA4Mi41IDc0IDMxLjQgMCA2OC0xMS43IDc0LjQtNDYuMWgtMzMuMWMtMTIgMzUuOC04Ny43IDM2LjctOTEuMi0yMS42em05NS0yMS40SDMzLjNjNi45LTU2LjYgOTIuMS01NC43IDk0LjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWRnZUxlZ2FjeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNS43MSwyMjguMTZsLjM1LS40OGMwLC4xNiwwLC4zMi0uMDcuNDhabTQ2MC41OCwxNS41MWMwLTQ0LTcuNzYtODQuNDYtMjguODEtMTIyLjRDNDE2LjUsNDcuODgsMzQzLjkxLDgsMjU4Ljg5LDgsMTE5LDcuNzIsNDAuNjIsMTEzLjIxLDI2LjA2LDIyNy42OGM0Mi40Mi02MS4zMSwxMTcuMDctMTIxLjM4LDIyMC4zNy0xMjUsMCwwLDEwOS42NywwLDk5LjQyLDEwNUgxNzBjNi4zNy0zNy4zOSwxOC41NS01OSwzNC4zNC03OC45My03NS4wNSwzNC45LTEyMS44NSw5Ni4xLTEyMC43NSwxODguMzIuODMsNzEuNDUsNTAuMTMsMTQ0Ljg0LDEyMC43NSwxNzIsODMuMzUsMzEuODQsMTkyLjc3LDcuMiwyNDAuMTMtMjEuMzNWMzYzLjMxQzM2My42LDQxOS44LDE3My42LDQyNC4yMywxNzIuMjEsMjk1Ljc0SDQ4Ni4yOVYyNDMuNjdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVkZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgxLjkyLDEzNC40OEM0NDAuODcsNTQuMTgsMzUyLjI2LDgsMjU1LjkxLDgsMTM3LjA1LDgsMzcuNTEsOTEuNjgsMTMuNDcsMjAzLjY2YzI2LTQ2LjQ5LDg2LjIyLTc5LjE0LDE0OS40Ni03OS4xNCw3OS4yNywwLDEyMS4wOSw0OC45MywxMjIuMjUsNTAuMTgsMjIsMjMuOCwzMyw1MC4zOSwzMyw4My4xLDAsMTAuNC01LjMxLDI1LjgyLTE1LjExLDM4LjU3LTEuNTcsMi02LjM5LDQuODQtNi4zOSwxMSwwLDUuMDYsMy4yOSw5LjkyLDkuMTQsMTQsMjcuODYsMTkuMzcsODAuMzcsMTYuODEsODAuNTEsMTYuODFBMTE1LjM5LDExNS4zOSwwLDAsMCw0NDQuOTQsMzIyYTExOC45MiwxMTguOTIsMCwwLDAsNTguOTUtMTAyLjQ0QzUwNC4zOSwxNzYuMTMsNDg4LjM5LDE0Ny4yNiw0ODEuOTIsMTM0LjQ4Wk0yMTIuNzcsNDc1LjY3YTE1NC44OCwxNTQuODgsMCwwLDEtNDYuNjQtNDVjLTMyLjk0LTQ3LjQyLTM0LjI0LTk1LjYtMjAuMS0xMzZBMTU1LjUsMTU1LjUsMCwwLDEsMjAzLDIxNS43NWM1OS00NS4yLDk0Ljg0LTUuNjUsOTkuMDYtMWE4MCw4MCwwLDAsMC00Ljg5LTEwLjE0Yy05LjI0LTE1LjkzLTI0LTM2LjQxLTU2LjU2LTUzLjUxLTMzLjcyLTE3LjY5LTcwLjU5LTE4LjU5LTc3LjY0LTE4LjU5LTM4LjcxLDAtNzcuOSwxMy0xMDcuNTMsMzUuNjlDMzUuNjgsMTgzLjMsMTIuNzcsMjA4LjcyLDguNiwyNDNjLTEuMDgsMTIuMzEtMi43NSw2Mi44LDIzLDExOC4yN2EyNDgsMjQ4LDAsMCwwLDI0OC4zLDE0MS42MUMyNDEuNzgsNDk2LjI2LDIxNC4wNSw0NzYuMjQsMjEyLjc3LDQ3NS42N1ptMjUwLjcyLTk4LjMzYTcuNzYsNy43NiwwLDAsMC03LjkyLS4yMywxODEuNjYsMTgxLjY2LDAsMCwxLTIwLjQxLDkuMTIsMTk3LjU0LDE5Ny41NCwwLDAsMS02OS41NSwxMi41MmMtOTEuNjcsMC0xNzEuNTItNjMuMDYtMTcxLjUyLTE0NEE2MS4xMiw2MS4xMiwwLDAsMSwyMDAuNjEsMjI4LDE2OC43MiwxNjguNzIsMCwwLDAsMTYxLjg1LDI3OGMtMTQuOTIsMjkuMzctMzMsODguMTMsMTMuMzMsMTUxLjY2LDYuNTEsOC45MSwyMywzMCw1Niw0Ny42NywyMy41NywxMi42NSw0OSwxOS42MSw3MS43LDE5LjYxLDM1LjE0LDAsMTE1LjQzLTMzLjQ0LDE2My0xMDguODdBNy43NSw3Ljc1LDAsMCwwLDQ2My40OSwzNzcuMzRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVsZW1lbnRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjUuNiAzMkgyMi40QzEwIDMyIDAgNDIgMCA1NC40djQwMy4yQzAgNDcwIDEwIDQ4MCAyMi40IDQ4MGg0MDMuMmMxMi40IDAgMjIuNC0xMCAyMi40LTIyLjRWNTQuNEM0NDggNDIgNDM4IDMyIDQyNS42IDMyTTE2NC4zIDM1NS41aC0zOS44di0xOTloMzkuOHYxOTl6bTE1OS4zIDBIMjA0LjF2LTM5LjhoMTE5LjV2MzkuOHptMC03OS42SDIwNC4xdi0zOS44aDExOS41djM5Ljh6bTAtNzkuN0gyMDQuMXYtMzkuOGgxMTkuNXYzOS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbGxvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTE0My44NCAyODUuMkMzNzUuMzEgMzU4LjUxIDMxNS43OSA0MDQuOCAyNDggNDA0LjhzLTEyNy4zMS00Ni4yOS0xNDMuODQtMTExLjZjLTEuNjUtNy40NCAyLjQ4LTE1LjcxIDkuOTItMTcuMzYgNy40NC0xLjY1IDE1LjcxIDIuNDggMTcuMzYgOS45MiAxNC4wNSA1Mi45MSA2MiA5MC4xMSAxMTYuNTYgOTAuMTFzMTAyLjUxLTM3LjIgMTE2LjU2LTkwLjExYzEuNjUtNy40NCA5LjkyLTEyLjQgMTcuMzYtOS45MiA3LjQ0IDEuNjUgMTIuNCA5LjkyIDkuOTIgMTcuMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVtYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzOS45IDI1NC42Yy0xLjEtMTAuNy0xMC43LTYuOC0xMC43LTYuOHMtMTUuNiAxMi4xLTI5LjMgMTAuN2MtMTMuNy0xLjMtOS40LTMyLTkuNC0zMnMzLTI4LjEtNS4xLTMwLjRjLTguMS0yLjQtMTggNy4zLTE4IDcuM3MtMTIuNCAxMy43LTE4LjMgMzEuMmwtMS42LjVzMS45LTMwLjYtLjMtMzcuNmMtMS42LTMuNS0xNi40LTMuMi0xOC44IDNzLTE0LjIgNDkuMi0xNSA2Ny4yYzAgMC0yMy4xIDE5LjYtNDMuMyAyMi44cy0yNS05LjQtMjUtOS40IDU0LjgtMTUuMyA1Mi45LTU5LjEtNDQuMi0yNy42LTQ5LTI0Yy00LjYgMy41LTI5LjQgMTguNC0zNi42IDU5LjctLjIgMS40LS43IDcuNS0uNyA3LjVzLTIxLjIgMTQuMi0zMyAxOGMwIDAgMzMtNTUuNi03LjMtODAuOS0xMS40LTYuOC0yMS4zLS41LTI3LjIgNS4zIDEzLjYtMTcuMyA0Ni40LTY0LjIgMzYuOS0xMDUuMi01LjgtMjQuNC0xOC0yNy4xLTI5LjItMjMuMS0xNyA2LjctMjMuNSAxNi43LTIzLjUgMTYuN3MtMjIgMzItMjcuMSA3OS41LTEyLjYgMTA1LjEtMTIuNiAxMDUuMS0xMC41IDEwLjItMjAuMiAxMC43LTUuNC0yOC43LTUuNC0yOC43IDcuNS00NC42IDctNTIuMS0xLjEtMTEuNi05LjktMTQuMmMtOC45LTIuNy0xOC41IDguNi0xOC41IDguNnMtMjUuNSAzOC43LTI3LjcgNDQuNmwtMS4zIDIuNC0xLjMtMS42czE4LTUyLjcuOC01My41LTI4LjUgMTguOC0yOC41IDE4LjgtMTkuNiAzMi44LTIwLjQgMzYuNWwtMS4zLTEuNnM4LjEtMzguMiA2LjQtNDcuNmMtMS42LTkuNC0xMC41LTcuNS0xMC41LTcuNXMtMTEuMy0xLjMtMTQuMiA1LjktMTMuNyA1NS4zLTE1IDcwLjdjMCAwLTI4LjIgMjAuMi00Ni44IDIwLjQtMTguNS4zLTE2LjctMTEuOC0xNi43LTExLjhzNjgtMjMuMyA0OS40LTY5LjJjLTguMy0xMS44LTE4LTE1LjUtMzEuNy0xNS4zLTEzLjcuMy0zMC4zIDguNi00MS4zIDMzLjMtNS4zIDExLjgtNi44IDIzLTcuOCAzMS41IDAgMC0xMi4zIDIuNC0xOC44LTIuOXMtMTAgMC0xMCAwLTExLjIgMTQtLjEgMTguMyAyOC4xIDYuMSAyOC4xIDYuMWMxLjYgNy41IDYuMiAxOS41IDE5LjYgMjkuNyAyMC4yIDE1LjMgNTguOC0xLjMgNTguOC0xLjNsMTUuOS04LjhzLjUgMTQuNiAxMi4xIDE2LjcgMTYuNCAxIDM2LjUtNDcuOWMxMS44LTI1IDEyLjYtMjMuNiAxMi42LTIzLjZsMS4zLS4zcy05LjEgNDYuOC01LjYgNTkuN0MxODcuNyAzMTkuNCAyMDMgMzE4IDIwMyAzMThzOC4zIDIuNCAxNS0yMS4yIDE5LjYtNDkuOSAxOS42LTQ5LjloMS42cy01LjYgNDguMSAzIDYzLjcgMzAuOSA1LjMgMzAuOSA1LjMgMTUuNi03LjggMTgtMTAuMmMwIDAgMTguNSAxNS44IDQ0LjYgMTIuOSA1OC4zLTExLjUgNzkuMS0yNS45IDc5LjEtMjUuOXMxMCAyNC40IDQxLjEgMjYuN2MzNS41IDIuNyA1NC44LTE4LjYgNTQuOC0xOC42cy0uMyAxMy41IDEyLjEgMTguNiAyMC43LTIyLjggMjAuNy0yMi44bDIwLjctNTcuMmgxLjlzMS4xIDM3LjMgMjEuNSA0My4yIDQ3LTEzLjcgNDctMTMuNyA2LjQtMy41IDUuMy0xNC4zem0tNTc4IDUuM2MuOC0zMiAyMS44LTQ1LjkgMjktMzkgNy4zIDcgNC42IDIyLTkuMSAzMS40LTEzLjcgOS41LTE5LjkgNy42LTE5LjkgNy42em0yNzIuOC0xMjMuOHMxOS4xLTQ5LjcgMjMuNi0yNS41LTQwIDk2LjItNDAgOTYuMmMuNS0xNi4yIDE2LjQtNzAuNyAxNi40LTcwLjd6bTIyLjggMTM4LjRjLTEyLjYgMzMtNDMuMyAxOS42LTQzLjMgMTkuNnMtMy41LTExLjggNi40LTQ0LjkgMzMuMy0yMC4yIDMzLjMtMjAuMiAxNi4yIDEyLjQgMy42IDQ1LjV6bTg0LjYtMTQuNnMtMy0xMC41IDguMS0zMC42YzExLTIwLjIgMTkuNi05LjEgMTkuNi05LjFzOS40IDEwLjItMS4zIDI1LjUtMjYuNCAxNC4yLTI2LjQgMTQuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW1waXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4Ny42IDU0LjJjLTEwLjgtMi4yLTIyLjEtMy4zLTMzLjUtMy42VjMyLjRjNzguMSAyLjIgMTQ2LjEgNDQgMTg0LjYgMTA2LjZsLTE1LjggOS4xYy02LjEtOS43LTEyLjctMTguOC0yMC4yLTI3LjFsLTE4IDE1LjVjLTI2LTI5LjYtNjEuNC01MC43LTEwMS45LTU4LjRsNC44LTIzLjl6TTUzLjQgMzIyLjRsMjMtNy43Yy02LjQtMTguMy0xMC0zOC4yLTEwLTU4LjdzMy4zLTQwLjQgOS43LTU4LjdsLTIyLjctNy43YzMuNi0xMC44IDguMy0yMS4zIDEzLjYtMzFsLTE1LjgtOS4xQzM0IDE4MSAyNC4xIDIxNy41IDI0LjEgMjU2czEwIDc1IDI3LjEgMTA2LjZsMTUuOC05LjFjLTUuMy0xMC05LjctMjAuMy0xMy42LTMxLjF6TTIxMy4xIDQzNGMtNDAuNC04LTc1LjgtMjkuMS0xMDEuOS01OC43bC0xOCAxNS44Yy03LjUtOC42LTE0LjQtMTcuNy0yMC4yLTI3LjRsLTE2IDkuNGMzOC41IDYyLjMgMTA2LjggMTA0LjMgMTg0LjkgMTA2LjZ2LTE4LjNjLTExLjMtLjMtMjIuNy0xLjctMzMuNS0zLjZsNC43LTIzLjh6TTkzLjMgMTIwLjlsMTggMTUuNWMyNi0yOS42IDYxLjQtNTAuNyAxMDEuOS01OC40bC00LjctMjMuOGMxMC44LTIuMiAyMi4xLTMuMyAzMy41LTMuNlYzMi40QzE2My45IDM0LjYgOTUuOSA3Ni40IDU3LjQgMTM5bDE1LjggOS4xYzYtOS43IDEyLjYtMTguOSAyMC4xLTI3LjJ6bTMwOS40IDI3MC4ybC0xOC0xNS44Yy0yNiAyOS42LTYxLjQgNTAuNy0xMDEuOSA1OC43bDQuNyAyMy44Yy0xMC44IDEuOS0yMi4xIDMuMy0zMy41IDMuNnYxOC4zYzc4LjEtMi4yIDE0Ni40LTQ0LjMgMTg0LjktMTA2LjZsLTE2LjEtOS40Yy01LjcgOS43LTEyLjYgMTguOC0yMC4xIDI3LjR6TTQ5NiAyNTZjMCAxMzctMTExIDI0OC0yNDggMjQ4UzAgMzkzIDAgMjU2IDExMSA4IDI0OCA4czI0OCAxMTEgMjQ4IDI0OHptLTEyLjIgMGMwLTEzMC4xLTEwNS43LTIzNS44LTIzNS44LTIzNS44UzEyLjIgMTI1LjkgMTIuMiAyNTYgMTE3LjkgNDkxLjggMjQ4IDQ5MS44IDQ4My44IDM4Ni4xIDQ4My44IDI1NnptLTM5LTEwNi42bC0xNS44IDkuMWM1LjMgOS43IDEwIDIwLjIgMTMuNiAzMWwtMjIuNyA3LjdjNi40IDE4LjMgOS43IDM4LjIgOS43IDU4LjdzLTMuNiA0MC40LTEwIDU4LjdsMjMgNy43Yy0zLjkgMTAuOC04LjMgMjEtMTMuNiAzMWwxNS44IDkuMUM0NjIgMzMxIDQ3MS45IDI5NC41IDQ3MS45IDI1NnMtOS45LTc1LTI3LjEtMTA2LjZ6bS0xODMgMTc3LjdjMTYuMy0zLjMgMzAuNC0xMS42IDQwLjctMjMuNWw1MS4yIDQ0LjhjMTEuOS0xMy42IDIxLjMtMjkuMyAyNy4xLTQ2LjhsLTY0LjItMjIuMWMyLjUtNy41IDMuOS0xNS4yIDMuOS0yMy41cy0xLjQtMTYuMS0zLjktMjMuNWw2NC41LTIyLjFjLTYuMS0xNy40LTE1LjUtMzMuMi0yNy40LTQ2LjhsLTUxLjIgNDQuOGMtMTAuMi0xMS45LTI0LjQtMjAuNS00MC43LTIzLjhsMTMuMy02Ni40Yy04LjYtMS45LTE3LjctMi44LTI3LjEtMi44LTkuNCAwLTE4LjUuOC0yNy4xIDIuOGwxMy4zIDY2LjRjLTE2LjMgMy4zLTMwLjQgMTEuOS00MC43IDIzLjhsLTUxLjItNDQuOGMtMTEuOSAxMy42LTIxLjMgMjkuMy0yNy40IDQ2LjhsNjQuNSAyMi4xYy0yLjUgNy41LTMuOSAxNS4yLTMuOSAyMy41czEuNCAxNi4xIDMuOSAyMy41bC02NC4yIDIyLjFjNS44IDE3LjQgMTUuMiAzMy4yIDI3LjEgNDYuOGw1MS4yLTQ0LjhjMTAuMiAxMS45IDI0LjQgMjAuMiA0MC43IDIzLjVsLTEzLjMgNjYuN2M4LjYgMS43IDE3LjcgMi44IDI3LjEgMi44IDkuNCAwIDE4LjUtMS4xIDI3LjEtMi44bC0xMy4zLTY2Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVudmlyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyYzQ3Ny42IDAgMzY2LjYgMzE3LjMgMzY3LjEgMzY2LjNMNDQ4IDQ4MGgtMjZsLTcwLjQtNzEuMmMtMzkgNC4yLTEyNC40IDM0LjUtMjE0LjQtMzdDNDcgMzAwLjMgNTIgMjE0LjcgMCAzMnptNzkuNyA0NmMtNDkuNy0yMy41LTUuMiA5LjItNS4yIDkuMiA0NS4yIDMxLjIgNjYgNzMuNyA5MC4yIDExOS45IDMxLjUgNjAuMiA3OSAxMzkuNyAxNDQuMiAxNjcuNyA2NSAyOCAzNC4yIDEyLjUgNi04LjUtMjguMi0yMS4yLTY4LjItODctOTEtMTMwLjItMzEuNy02MC02MS0xMTguNi0xNDQuMi0xNTguMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXJsYW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg3LjIgNTMuNUgwdjQwNWgxMDAuNGMtNDkuNy01Mi42LTc4LjgtMTI1LjMtNzguNy0yMTIuMS0uMS03Ni43IDI0LTE0Mi43IDY1LjUtMTkyLjl6bTIzOC4yIDkuN2MtNDUuOS4xLTg1LjEgMzMuNS04OS4yIDgzLjJoMTY5LjljLTEuMS00OS43LTM0LjUtODMuMS04MC43LTgzLjJ6bTIzMC43LTkuNmguM2wtLjEtLjF6bS4zIDBjMzEuNCA0Mi43IDQ4LjcgOTcuNSA0Ni4yIDE2Mi43LjUgNiAuNSAxMS43IDAgMjQuMUgyMzAuMmMtLjIgMTA5LjcgMzguOSAxOTQuOSAxMzguNiAxOTUuMyA2OC41LS4zIDExOC01MSAxNTEuOS0xMDYuMWw5Ni40IDQ4LjJjLTE3LjQgMzAuOS0zNi41IDU3LjgtNTcuOSA4MC44SDY0MHYtNDA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFdGhlcmV1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTEuOSAyNjAuOEwxNjAgMzUzLjYgOCAyNjAuOCAxNjAgMGwxNTEuOSAyNjAuOHpNMTYwIDM4My40TDggMjkwLjYgMTYwIDUxMmwxNTItMjIxLjQtMTUyIDkyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV0c3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDM0OGMtMS43NSAxMC43NS0xMy43NSAxMTAtMTUuNSAxMzItMTE3Ljg3OS00LjI5OS0yMTkuODk1LTQuNzQzLTM2OC41IDB2LTI1LjVjNDUuNDU3LTguOTQ4IDYwLjYyNy04LjAxOSA2MS0zNS4yNSAxLjc5My03Mi4zMjIgMy41MjQtMjQ0LjE0MyAwLTMyMi0xLjAyOS0yOC40Ni0xMi4xMy0yNi43NjUtNjEtMzZ2LTI1LjVjNzMuODg2IDIuMzU4IDI1NS45MzMgOC41NTEgMzYyLjk5OS0zLjc1LTMuNSAzOC4yNS03Ljc1IDEyNi41LTcuNzUgMTI2LjVIMzMyQzMyMC45NDcgMTE1LjY2NSAzMTMuMjQxIDY4IDI3Ny4yNSA2OGgtMTM3Yy0xMC4yNSAwLTEwLjc1IDMuNS0xMC43NSA5Ljc1VjI0MS41YzU4IC41IDg4LjUtMi41IDg4LjUtMi41IDI5Ljc3LS45NTEgMjcuNTYtOC41MDIgNDAuNzUtNjUuMjUxaDI1Ljc1Yy00LjQwNyAxMDEuMzUxLTMuOTEgNjEuODI5LTEuNzUgMTYwLjI1SDI1N2MtOS4xNTUtNDAuMDg2LTkuMDY1LTYxLjA0NS0zOS41MDEtNjEuNSAwIDAtMjEuNS0yLTg4LTJ2MTM5YzAgMjYgMTQuMjUgMzguMjUgNDQuMjUgMzguMjVIMjYzYzYzLjYzNiAwIDY2LjU2NC0yNC45OTYgOTguNzUxLTk5Ljc1SDM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXZlcm5vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIwLjgyIDEzMi4yMWMxLjYgMjIuMzEtMTcuNTUgMjEuNTktMjEuNjEgMjEuNTktNjguOTMgMC03My42NC0xLTgzLjU4IDMuMzQtLjU2LjIyLS43NCAwLS4zNy0uMzdMMTIzLjc5IDQ2LjQ1Yy4zOC0uMzcuNi0uMjIuMzguMzctNC4zNSA5Ljk5LTMuMzUgMTUuMDktMy4zNSA4NS4zOXptNzkgMzA4Yy0xNC42OC0zNy4wOCAxMy03Ni45MyA1Mi41Mi03Ni42MiAxNy40OSAwIDIyLjYgMjMuMjEgNy45NSAzMS40Mi02LjE5IDMuMy0yNC45NSAxLjc0LTI1LjE0IDE5LjItLjA1IDE3LjA5IDE5LjY3IDI1IDMxLjIgMjQuODlBNDUuNjQgNDUuNjQgMCAwIDAgMzEyIDM5My40NXYtLjA4YzAtMTEuNjMtNy43OS00Ny4yMi00Ny41NC01NS4zNC03LjcyLTEuNTQtNjUtNi4zNS02OC4zNS01MC41Mi0zLjc0IDE2LjkzLTE3LjQgNjMuNDktNDMuMTEgNjkuMDktOC43NCAxLjk0LTY5LjY4IDcuNjQtMTEyLjkyLTM2Ljc3IDAgMC0xOC41Ny0xNS4yMy0yOC4yMy01Ny45NS0zLjM4LTE1Ljc1LTkuMjgtMzkuNy0xMS4xNC02MiAwLTE4IDExLjE0LTMwLjQ1IDI1LjA3LTMyLjIgODEgMCA5MCAyLjMyIDEwMS03LjggOS44Mi05LjI0IDcuOC0xNS41IDcuOC0xMDIuNzggMS04LjMgNy43OS0zMC44MSA1My40MS0yNC4xNCA2IC44NiAzMS45MSA0LjE4IDM3LjQ4IDMwLjY0bDY0LjI2IDExLjE1YzIwLjQzIDMuNzEgNzAuOTQgNyA4MC42IDU3Ljk0IDIyLjY2IDEyMS4wOSA4LjkxIDIzOC40NiA3LjggMjM4LjQ2QzM2Mi4xNSA0ODUuNTMgMjY3LjA2IDQ4MCAyNjcuMDYgNDgwYy0xOC45NS0uMjMtNTQuMjUtOS40LTY3LjI3LTM5Ljgzem04MC45NC0yMDQuODRjLTEgMS45Mi0yLjIgNiAuODUgNyAxNC4wOSA0LjkzIDM5Ljc1IDYuODQgNDUuODggNS41MyAzLjExLS4yNSAzLjA1LTQuNDMgMi40OC02LjY1LTMuNTMtMjEuODUtNDAuODMtMjYuNS00OS4yNC01LjkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeHBlZGl0ZWRzc2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDQzLjRDMTMwLjYgNDMuNCAzNS40IDEzOC42IDM1LjQgMjU2UzEzMC42IDQ2OC42IDI0OCA0NjguNiA0NjAuNiAzNzMuNCA0NjAuNiAyNTYgMzY1LjQgNDMuNCAyNDggNDMuNHptLTk3LjQgMTMyLjljMC01My43IDQzLjctOTcuNCA5Ny40LTk3LjRzOTcuNCA0My43IDk3LjQgOTcuNHYyNi42YzAgNS0zLjkgOC45LTguOSA4LjloLTE3LjdjLTUgMC04LjktMy45LTguOS04Ljl2LTI2LjZjMC04Mi4xLTEyNC04Mi4xLTEyNCAwdjI2LjZjMCA1LTMuOSA4LjktOC45IDguOWgtMTcuN2MtNSAwLTguOS0zLjktOC45LTguOXYtMjYuNnpNMzg5LjcgMzgwYzAgOS43LTggMTcuNy0xNy43IDE3LjdIMTI0Yy05LjcgMC0xNy43LTgtMTcuNy0xNy43VjIzOC4zYzAtOS43IDgtMTcuNyAxNy43LTE3LjdoMjQ4YzkuNyAwIDE3LjcgOCAxNy43IDE3LjdWMzgwem0tMjQ4LTEzNy4zdjEzMi45YzAgMi41LTEuOSA0LjQtNC40IDQuNGgtOC45Yy0yLjUgMC00LjQtMS45LTQuNC00LjRWMjQyLjdjMC0yLjUgMS45LTQuNCA0LjQtNC40aDguOWMyLjUgMCA0LjQgMS45IDQuNCA0LjR6bTE0MS43IDQ4LjdjMCAxMy03LjIgMjQuNC0xNy43IDMwLjR2MzEuNmMwIDUtMy45IDguOS04LjkgOC45aC0xNy43Yy01IDAtOC45LTMuOS04LjktOC45di0zMS42Yy0xMC41LTYuMS0xNy43LTE3LjQtMTcuNy0zMC40IDAtMTkuNyAxNS44LTM1LjQgMzUuNC0zNS40czM1LjUgMTUuOCAzNS41IDM1LjR6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDc4LjNDMTIxIDQ4Ni4zIDE3LjcgMzgzIDE3LjcgMjU2UzEyMSAyNS43IDI0OCAyNS43IDQ3OC4zIDEyOSA0NzguMyAyNTYgMzc1IDQ4Ni4zIDI0OCA0ODYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZWJvb2tGIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3OS4xNCAyODhsMTQuMjItOTIuNjZoLTg4Ljkxdi02MC4xM2MwLTI1LjM1IDEyLjQyLTUwLjA2IDUyLjI0LTUwLjA2aDQwLjQyVjYuMjZTMjYwLjQzIDAgMjI1LjM2IDBjLTczLjIyIDAtMTIxLjA4IDQ0LjM4LTEyMS4wOCAxMjQuNzJ2NzAuNjJIMjIuODlWMjg4aDgxLjM5djIyNGgxMDAuMTdWMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlYm9va01lc3NlbmdlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYuNTUgOEMxMTYuNTIgOCA4IDExMC4zNCA4IDI0OC41N2MwIDcyLjMgMjkuNzEgMTM0Ljc4IDc4LjA3IDE3Ny45NCA4LjM1IDcuNTEgNi42MyAxMS44NiA4LjA1IDU4LjIzQTE5LjkyIDE5LjkyIDAgMCAwIDEyMiA1MDIuMzFjNTIuOTEtMjMuMyA1My41OS0yNS4xNCA2Mi41Ni0yMi43QzMzNy44NSA1MjEuOCA1MDQgNDIzLjcgNTA0IDI0OC41NyA1MDQgMTEwLjM0IDM5Ni41OSA4IDI1Ni41NSA4em0xNDkuMjQgMTg1LjEzbC03MyAxMTUuNTdhMzcuMzcgMzcuMzcgMCAwIDEtNTMuOTEgOS45M2wtNTguMDgtNDMuNDdhMTUgMTUgMCAwIDAtMTggMGwtNzguMzcgNTkuNDRjLTEwLjQ2IDcuOTMtMjQuMTYtNC42LTE3LjExLTE1LjY3bDczLTExNS41N2EzNy4zNiAzNy4zNiAwIDAgMSA1My45MS05LjkzbDU4LjA2IDQzLjQ2YTE1IDE1IDAgMCAwIDE4IDBsNzguNDEtNTkuMzhjMTAuNDQtNy45OCAyNC4xNCA0LjU0IDE3LjA5IDE1LjYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlYm9va1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhBNDggNDggMCAwIDAgMCA4MHYzNTJhNDggNDggMCAwIDAgNDggNDhoMTM3LjI1VjMyNy42OWgtNjNWMjU2aDYzdi01NC42NGMwLTYyLjE1IDM3LTk2LjQ4IDkzLjY3LTk2LjQ4IDI3LjE0IDAgNTUuNTIgNC44NCA1NS41MiA0Ljg0djYxaC0zMS4yN2MtMzAuODEgMC00MC40MiAxOS4xMi00MC40MiAzOC43M1YyNTZoNjguNzhsLTExIDcxLjY5aC01Ny43OFY0ODBINDAwYTQ4IDQ4IDAgMCAwIDQ4LTQ4VjgwYTQ4IDQ4IDAgMCAwLTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlYm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2QzUwNCAxMTkgMzkzIDggMjU2IDhTOCAxMTkgOCAyNTZjMCAxMjMuNzggOTAuNjkgMjI2LjM4IDIwOS4yNSAyNDVWMzI3LjY5aC02M1YyNTZoNjN2LTU0LjY0YzAtNjIuMTUgMzctOTYuNDggOTMuNjctOTYuNDggMjcuMTQgMCA1NS41MiA0Ljg0IDU1LjUyIDQuODR2NjFoLTMxLjI4Yy0zMC44IDAtNDAuNDEgMTkuMTItNDAuNDEgMzguNzNWMjU2aDY4Ljc4bC0xMSA3MS42OWgtNTcuNzhWNTAxQzQxMy4zMSA0ODIuMzggNTA0IDM3OS43OCA1MDQgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYW50YXN5RmxpZ2h0R2FtZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyLjg2TDMyLjg2IDI1NiAyNTYgNDc5LjE0IDQ3OS4xNCAyNTYgMjU2IDMyLjg2ek04OC4zNCAyNTUuODNjMS45Ni0yIDExLjkyLTEyLjMgOTYuNDktOTcuNDggNDEuNDUtNDEuNzUgODYuMTktNDMuNzcgMTE5Ljc3LTE4LjY5IDI0LjYzIDE4LjQgNjIuMDYgNTguOSA2Mi4xNSA1OSAuNjguNzQgMS4wNyAyLjg2LjU4IDMuMzgtMTEuMjcgMTEuODQtMjIuNjggMjMuNTQtMzMuNSAzNC42OS0zNC4yMS0zMi4zMS00MC41Mi0zOC4yNC00OC41MS00My45NS0xNy43Ny0xMi42OS00MS40LTEwLjEzLTU2Ljk4IDUuMS0yLjE3IDIuMTMtMS43OSAzLjQzLjEyIDUuMzUgMi45NCAyLjk1IDI4LjEgMjguMzMgMzUuMDkgMzUuNzgtMTEuOTUgMTEuNi0yMy42NiAyMi45Ny0zNS42OSAzNC42Ni0xMi4wMi0xMi41NC0yNC40OC0yNS41My0zNi41NC0zOC4xMS0yMS4zOSAyMS4wOS00MS42OSA0MS4xMS02MS44NSA2MC45OWE0MjU2OS4wMSA0MjU2OS4wMSAwIDAgMS00MS4xMy00MC43MnptMjM0LjgyIDEwMS42Yy0zNS40OSAzNS40My03OC4wOSAzOC4xNC0xMDYuOTkgMjAuNDctMjIuMDgtMTMuNS0zOS4zOC0zMi4wOC03Mi45My02Ni44NCAxMi4wNS0xMi4zNyAyMy43OS0yNC40MiAzNS4zNy0zNi4zMSAzMy4wMiAzMS45MSAzNy4wNiAzNi4wMSA0NC42OCA0Mi4wOSAxOC40OCAxNC43NCA0Mi41MiAxMy42NyA1OS4zMi0xLjggMy42OC0zLjM5IDMuNjktMy42NC4xNC03LjI0LTEwLjU5LTEwLjczLTIxLjE5LTIxLjQ0LTMxLjc3LTMyLjE4LTEuMzItMS4zNC0zLjAzLTIuNDgtLjgtNC42OSAxMC43OS0xMC43MSAyMS40OC0yMS41MiAzMi4yMS0zMi4yOS4yNi0uMjYuNjUtLjM4IDEuOTEtMS4wNyAxMi4zNyAxMi44NyAyNC45MiAyNS45MiAzNy4yNSAzOC43NSAyMS4wMS0yMC43MyA0MS4yNC00MC42OCA2MS4yNS02MC40MiAxMy42OCAxMy40IDI3LjEzIDI2LjU4IDQwLjg2IDQwLjAzLTIwLjE3IDIwLjg2LTgxLjY4IDgyLjcxLTEwMC41IDEwMS41ek0yNTYgMEwwIDI1NmwyNTYgMjU2IDI1Ni0yNTZMMjU2IDB6TTE2IDI1NkwyNTYgMTZsMjQwIDI0MC0yNDAgMjQwTDE2IDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmVkZXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTg2IDI4NC41bDUzLjMtNTkuOWgtNjIuNGwtMjEuNyAyNC44LTIyLjUtMjQuOEg0MTR2LTE2aDU2LjF2LTQ4LjFIMzE4LjlWMjM2aC0uNWMtOS42LTExLTIxLjUtMTQuOC0zNS40LTE0LjgtMjguNCAwLTQ5LjggMTkuNC01Ny4zIDQ0LjktMTgtNTkuNC05Ny40LTU3LjYtMTIxLjktMTR2LTI0LjJINDl2LTI2LjJoNjB2LTQxLjFIMFYzNDVoNDl2LTc3LjVoNDguOWMtMS41IDUuNy0yLjMgMTEuOC0yLjMgMTguMiAwIDczLjEgMTAyLjYgOTEuNCAxMzAuMiAyMy43aC00MmMtMTQuNyAyMC45LTQ1LjggOC45LTQ1LjgtMTQuNmg4NS41YzMuNyAzMC41IDI3LjQgNTYuOSA2MC4xIDU2LjkgMTQuMSAwIDI3LTYuOSAzNC45LTE4LjZoLjVWMzQ1aDIxMi4ybDIyLjEtMjUgMjIuMyAyNUg2NDBsLTU0LTYwLjV6bS00NDYuNy0xNi42YzYuMS0yNi4zIDQxLjctMjUuNiA0Ni41IDBoLTQ2LjV6bTE1My40IDQ4LjljLTM0LjYgMC0zNC02Mi44IDAtNjIuOCAzMi42IDAgMzQuNSA2Mi44IDAgNjIuOHptMTY3LjggMTkuMWgtOTQuNFYxNjkuNGg5NXYzMC4ySDQwNXYzMy45aDU1LjV2MjguMWgtNTYuMXY0NC43aDU2LjF2MjkuNnptLTQ1LjktMzkuOHYtMjQuNGg1Ni4xdi00NGw1MC43IDU3LTUwLjcgNTd2LTQ1LjZoLTU2LjF6bTEzOC42IDEwLjNsLTI2LjEgMjkuNUg0ODlsNDUuNi01MS4yLTQ1LjYtNTEuMmgzOS43bDI2LjYgMjkuMyAyNS42LTI5LjNoMzguNWwtNDUuNCA1MSA0NiA1MS40aC00MC41bC0yNi4zLTI5LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlZG9yYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjUgMzJDMTAxLjMgMzEuNy44IDEzMS43LjQgMjU1LjRMMCA0MjUuN2E1My42IDUzLjYgMCAwIDAgNTMuNiA1My45bDE3MC4yLjRjMTIzLjcuMyAyMjQuMy05OS43IDIyNC42LTIyMy40UzM0OC43IDMyLjMgMjI1IDMyem0xNjkuOCAxNTcuMkwzMzMgMTI2LjZjMi4zLTQuNyAzLjgtOS4yIDMuOC0xNC4zdi0xLjZsNTUuMiA1Ni4xYTEwMSAxMDEgMCAwIDEgMi44IDIyLjR6TTMzMSA5NC4zYTEwNi4wNiAxMDYuMDYgMCAwIDEgNTguNSA2My44bC01NC4zLTU0LjZhMjYuNDggMjYuNDggMCAwIDAtNC4yLTkuMnpNMTE4LjEgMjQ3LjJhNDkuNjYgNDkuNjYgMCAwIDAtNy43IDExLjRsLTguNS04LjVhODUuNzggODUuNzggMCAwIDEgMTYuMi0yLjl6TTk3IDI1MS40bDExLjggMTEuOS0uOSA4YTM0Ljc0IDM0Ljc0IDAgMCAwIDIuNCAxMi41bC0yNy0yNy4yYTgwLjYgODAuNiAwIDAgMSAxMy43LTUuMnptLTE4LjIgNy40bDM4LjIgMzguNGE1My4xNyA1My4xNyAwIDAgMC0xNC4xIDQuN0w2Ny42IDI2NmExMDcgMTA3IDAgMCAxIDExLjItNy4yem0tMTUuMiA5LjhsMzUuMyAzNS41YTY3LjI1IDY3LjI1IDAgMCAwLTEwLjUgOC41TDUzLjUgMjc4YTY0LjMzIDY0LjMzIDAgMCAxIDEwLjEtOS40em0tMTMuMyAxMi4zbDM0LjkgMzVhNTYuODQgNTYuODQgMCAwIDAtNy43IDExLjRsLTM1LjgtMzUuOWMyLjgtMy44IDUuNy03LjIgOC42LTEwLjV6bS0xMSAxNC4zbDM2LjQgMzYuNmE0OC4yOSA0OC4yOSAwIDAgMC0zLjYgMTUuMmwtMzkuNS0zOS44YTk5LjgxIDk5LjgxIDAgMCAxIDYuNy0xMnptLTguOCAxNi4zbDQxLjMgNDEuOGE2My40NyA2My40NyAwIDAgMCA2LjcgMjYuMkwyNS44IDMyNmMxLjQtNC45IDIuOS05LjYgNC43LTE0LjV6bS03LjkgNDNsNjEuOSA2Mi4yYTMxLjI0IDMxLjI0IDAgMCAwLTMuNiAxNC4zdjEuMWwtNTUuNC01NS43YTg4LjI3IDg4LjI3IDAgMCAxLTIuOS0yMS45em01LjMgMzAuN2w1NC4zIDU0LjZhMjguNDQgMjguNDQgMCAwIDAgNC4yIDkuMiAxMDYuMzIgMTA2LjMyIDAgMCAxLTU4LjUtNjMuOHptLTUuMy0zN2E4MC42OSA4MC42OSAwIDAgMSAyLjEtMTdsNzIuMiA3Mi41YTM3LjU5IDM3LjU5IDAgMCAwLTkuOSA4Ljd6bTI1My4zLTUxLjhsLTQyLjYtLjEtLjEgNTZjLS4yIDY5LjMtNjQuNCAxMTUuOC0xMjUuNyAxMDIuOS01LjcgMC0xOS45LTguNy0xOS45LTI0LjJhMjQuODkgMjQuODkgMCAwIDEgMjQuNS0yNC42YzYuMyAwIDYuMyAxLjYgMTUuNyAxLjZhNTUuOTEgNTUuOTEgMCAwIDAgNTYuMS01NS45bC4xLTQ3YzAtNC41LTQuNS05LTguOS05bC0zMy42LS4xYy0zMi42LS4xLTMyLjUtNDkuNC4xLTQ5LjNsNDIuNi4xLjEtNTZhMTA1LjE4IDEwNS4xOCAwIDAgMSAxMDUuNi0xMDUgODYuMzUgODYuMzUgMCAwIDEgMjAuMiAyLjNjMTEuMiAxLjggMTkuOSAxMS45IDE5LjkgMjQgMCAxNS41LTE0LjkgMjcuOC0zMC4zIDIzLjktMjcuNC01LjktNjUuOSAxNC40LTY2IDU0LjlsLS4xIDQ3YTguOTQgOC45NCAwIDAgMCA4LjkgOWwzMy42LjFjMzIuNS4yIDMyLjQgNDkuNS0uMiA0OS40em0yMy41LS4zYTM1LjU4IDM1LjU4IDAgMCAwIDcuNi0xMS40bDguNSA4LjVhMTAyIDEwMiAwIDAgMS0xNi4xIDIuOXptMjEtNC4yTDMwOC42IDI4MGwuOS04LjFhMzQuNzQgMzQuNzQgMCAwIDAtMi40LTEyLjVsMjcgMjcuMmE3NC44OSA3NC44OSAwIDAgMS0xMy43IDUuM3ptMTgtNy40bC0zOC0zOC40YzQuOS0xLjEgOS42LTIuNCAxMy43LTQuN2wzNi4yIDM1LjljLTMuOCAyLjUtNy45IDUtMTEuOSA3LjJ6bTE1LjUtOS44bC0zNS4zLTM1LjVhNjEuMDYgNjEuMDYgMCAwIDAgMTAuNS04LjVsMzQuOSAzNWExMjQuNTYgMTI0LjU2IDAgMCAxLTEwLjEgOXptMTMuMi0xMi4zbC0zNC45LTM1YTYzLjE4IDYzLjE4IDAgMCAwIDcuNy0xMS40bDM1LjggMzUuOWExMzAuMjggMTMwLjI4IDAgMCAxLTguNiAxMC41em0xMS0xNC4zbC0zNi40LTM2LjZhNDguMjkgNDguMjkgMCAwIDAgMy42LTE1LjJsMzkuNSAzOS44YTg3LjcyIDg3LjcyIDAgMCAxLTYuNyAxMnptMTMuNS0zMC45YTE0MC42MyAxNDAuNjMgMCAwIDEtNC43IDE0LjNMMzQ1LjYgMTkwYTU4LjE5IDU4LjE5IDAgMCAwLTcuMS0yNi4yem0xLTUuNmwtNzEuOS03Mi4xYTMyIDMyIDAgMCAwIDkuOS05LjJsNjQuMyA2NC43YTkwLjkzIDkwLjkzIDAgMCAxLTIuMyAxNi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWdtYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA5NS43OTI0QzE0IDQyLjg4NzcgNTYuODg3OCAwIDEwOS43OTMgMEgyNzQuMTYxQzMyNy4wNjYgMCAzNjkuOTU0IDQyLjg4NzcgMzY5Ljk1NCA5NS43OTI0QzM2OS45NTQgMTI5LjI5MiAzNTIuNzU4IDE1OC43NzYgMzI2LjcxMSAxNzUuODk3QzM1Mi43NTggMTkzLjAxOSAzNjkuOTU0IDIyMi41MDIgMzY5Ljk1NCAyNTYuMDAyQzM2OS45NTQgMzA4LjkwNyAzMjcuMDY2IDM1MS43OTUgMjc0LjE2MSAzNTEuNzk1SDI3Mi4wODFDMjQ3LjI3OSAzNTEuNzk1IDIyNC42NzggMzQyLjM2OSAyMDcuNjY2IDMyNi45MDRWNDE1LjE2N0MyMDcuNjY2IDQ2OC43NzcgMTYzLjY1NyA1MTIgMTEwLjMwOSA1MTJDNTcuNTM2MSA1MTIgMTQgNDY5LjI0MyAxNCA0MTYuMjA3QzE0IDM4Mi43MDkgMzEuMTk0NSAzNTMuMjI3IDU3LjIzOTIgMzM2LjEwNUMzMS4xOTQ1IDMxOC45ODMgMTQgMjg5LjUgMTQgMjU2LjAwMkMxNCAyMjIuNTAyIDMxLjE5NiAxOTMuMDE5IDU3LjI0MjUgMTc1Ljg5N0MzMS4xOTYgMTU4Ljc3NiAxNCAxMjkuMjkyIDE0IDk1Ljc5MjRaTTE3Ni4yODggMTkxLjU4N0gxMDkuNzkzQzc0LjIxNzIgMTkxLjU4NyA0NS4zNzc4IDIyMC40MjcgNDUuMzc3OCAyNTYuMDAyQzQ1LjM3NzggMjkxLjQ0IDczLjk5NDggMzIwLjE5NCAxMDkuMzgxIDMyMC40MTZDMTA5LjUxOCAzMjAuNDE1IDEwOS42NTUgMzIwLjQxNSAxMDkuNzkzIDMyMC40MTVIMTc2LjI4OFYxOTEuNTg3Wk0yMDcuNjY2IDI1Ni4wMDJDMjA3LjY2NiAyOTEuNTc3IDIzNi41MDUgMzIwLjQxNyAyNzIuMDgxIDMyMC40MTdIMjc0LjE2MUMzMDkuNzM3IDMyMC40MTcgMzM4LjU3NiAyOTEuNTc3IDMzOC41NzYgMjU2LjAwMkMzMzguNTc2IDIyMC40MjcgMzA5LjczNyAxOTEuNTg3IDI3NC4xNjEgMTkxLjU4N0gyNzIuMDgxQzIzNi41MDUgMTkxLjU4NyAyMDcuNjY2IDIyMC40MjcgMjA3LjY2NiAyNTYuMDAyWk0xMDkuNzkzIDM1MS43OTVDMTA5LjY1NSAzNTEuNzk1IDEwOS41MTggMzUxLjc5NCAxMDkuMzgxIDM1MS43OTRDNzMuOTk0OCAzNTIuMDE1IDQ1LjM3NzggMzgwLjc2OSA0NS4zNzc4IDQxNi4yMDdDNDUuMzc3OCA0NTEuNjUyIDc0LjYwMjUgNDgwLjYyMiAxMTAuMzA5IDQ4MC42MjJDMTQ2LjU5MSA0ODAuNjIyIDE3Ni4yODggNDUxLjE4NiAxNzYuMjg4IDQxNS4xNjdWMzUxLjc5NUgxMDkuNzkzWk0xMDkuNzkzIDMxLjM3NzhDNzQuMjE3MiAzMS4zNzc4IDQ1LjM3NzggNjAuMjE3MyA0NS4zNzc4IDk1Ljc5MjRDNDUuMzc3OCAxMzEuMzY4IDc0LjIxNzIgMTYwLjIwNyAxMDkuNzkzIDE2MC4yMDdIMTc2LjI4OFYzMS4zNzc4SDEwOS43OTNaTTIwNy42NjYgMTYwLjIwN0gyNzQuMTYxQzMwOS43MzcgMTYwLjIwNyAzMzguNTc2IDEzMS4zNjggMzM4LjU3NiA5NS43OTI0QzMzOC41NzYgNjAuMjE3MyAzMDkuNzM3IDMxLjM3NzggMjc0LjE2MSAzMS4zNzc4SDIwNy42NjZWMTYwLjIwN1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlyZWZveEJyb3dzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg5LjM3LDE1Mi44NlptLTU4Ljc0LTI5LjM3QzEzMC43OSwxMjMuNSwxMzAuNzEsMTIzLjUsMTMwLjYzLDEyMy40OVptMzUxLjQyLDQ1LjM1Yy0xMC42MS0yNS41LTMyLjA4LTUzLTQ4Ljk0LTYxLjczLDEzLjcyLDI2Ljg5LDIxLjY3LDUzLjg4LDI0LjcsNzQsMCwwLDAsLjE0LjA1LjQxLTI3LjU4LTY4Ljc1LTc0LjM1LTk2LjQ3LTExMi41NS0xNTYuODMtMS45My0zLjA1LTMuODYtNi4xMS01Ljc0LTkuMzMtMS0xLjY1LTEuODYtMy4zNC0yLjY5LTUuMDVBNDQuODgsNDQuODgsMCwwLDEsMzMzLjI0LjY5YS42My42MywwLDAsMC0uNTUtLjY2LjkuOSwwLDAsMC0uNDYsMGwtLjEyLjA3LS4xOC4xLjEtLjE0Yy01NC4yMywzMS43Ny03Ni43Miw4Ny4zOC04Mi41LDEyMi43OGExMzAsMTMwLDAsMCwwLTQ4LjMzLDEyLjMzLDYuMjUsNi4yNSwwLDAsMC0zLjA5LDcuNzUsNi4xMyw2LjEzLDAsMCwwLDcuNzksMy43OWwuNTItLjIxYTExNy44NCwxMTcuODQsMCwwLDEsNDIuMTEtMTFsMS40Mi0uMWMyLS4xMiw0LS4yLDYtLjIyQTEyMi42MSwxMjIuNjEsMCwwLDEsMjkxLDE0MGMuNjcuMiwxLjMyLjQyLDIsLjYzLDEuODkuNTcsMy43NiwxLjIsNS42MiwxLjg3LDEuMzYuNSwyLjcxLDEsNC4wNSwxLjU4LDEuMDkuNDQsMi4xOC44OCwzLjI1LDEuMzVxMi41MiwxLjEzLDUsMi4zNWMuNzUuMzcsMS41Ljc0LDIuMjUsMS4xM3EyLjQsMS4yNiw0Ljc0LDIuNjMsMS41MS44NywzLDEuOGExMjQuODksMTI0Ljg5LDAsMCwxLDQyLjY2LDQ0LjEzYy0xMy05LjE1LTM2LjM1LTE4LjE5LTU4LjgyLTE0LjI4LDg3Ljc0LDQzLjg2LDY0LjE4LDE5NC45LTU3LjM5LDE4OS4yYTEwOC40MywxMDguNDMsMCwwLDEtMzEuNzQtNi4xMmMtMi40Mi0uOTEtNC44LTEuODktNy4xNi0yLjkzLTEuMzgtLjYzLTIuNzYtMS4yNy00LjEyLTJDMTc0LjUsMzQ2LDE0OS45LDMxNi45MiwxNDYuODMsMjgxLjU5YzAsMCwxMS4yNS00MS45NSw4MC42Mi00MS45NSw3LjUsMCwyOC45My0yMC45MiwyOS4zMy0yNy0uMDktMi00Mi41NC0xOC44Ny01OS4wOS0zNS4xOC04Ljg1LTguNzEtMTMuMDUtMTIuOTEtMTYuNzctMTYuMDZhNjkuNTgsNjkuNTgsMCwwLDAtNi4zMS00Ljc3QTExMy4wNSwxMTMuMDUsMCwwLDEsMTczLjkyLDk3Yy0yNS4wNiwxMS40MS00NC41NSwyOS40NS01OC43MSw0NS4zN2gtLjEyYy05LjY3LTEyLjI1LTktNTIuNjUtOC40My02MS4wOC0uMTItLjUzLTcuMjIsMy42OC04LjE1LDQuMzFhMTc4LjU0LDE3OC41NCwwLDAsMC0yMy44NCwyMC40M0EyMTQsMjE0LDAsMCwwLDUxLjksMTMzLjM2bDAsMGEuMDguMDgsMCwwLDEsMCwwLDIwNS44NCwyMDUuODQsMCwwLDAtMzIuNzMsNzMuOWMtLjA2LjI3LTIuMzMsMTAuMjEtNCwyMi40OHEtLjQyLDIuODctLjc4LDUuNzRjLS41NywzLjY5LTEsNy43MS0xLjQ0LDE0LDAsLjI0LDAsLjQ4LS4wNS43Mi0uMTgsMi43MS0uMzQsNS40MS0uNDksOC4xMiwwLC40MSwwLC44MiwwLDEuMjQsMCwxMzQuNywxMDkuMjEsMjQzLjg5LDI0My45MiwyNDMuODksMTIwLjY0LDAsMjIwLjgyLTg3LjU4LDI0MC40My0yMDIuNjIuNDEtMy4xMi43NC02LjI2LDEuMTEtOS40MSw0Ljg1LTQxLjgzLS41NC04NS43OS0xNS44Mi0xMjIuNTVaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmVmb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAzLjUyLDI0MS40OGMtLjEyLTEuNTYtLjI0LTMuMTItLjI0LTQuNjh2LS4xMmwtLjM2LTQuNjh2LS4xMmEyNDUuODYsMjQ1Ljg2LDAsMCwwLTcuMzItNDEuMTVjMC0uMTIsMC0uMTItLjEyLS4yNGwtMS4wOC00Yy0uMTItLjI0LS4xMi0uNDgtLjI0LS42LS4zNi0xLjItLjcyLTIuNTItMS4wOC0zLjcyLS4xMi0uMjQtLjEyLS42LS4yNC0uODQtLjM2LTEuMi0uNzItMi40LTEuMDgtMy40OC0uMTItLjM2LS4yNC0uNi0uMzYtMS0uMzYtMS4yLS43Mi0yLjI4LTEuMi0zLjQ4bC0uMzYtMS4wOGMtLjM2LTEuMDgtLjg0LTIuMjgtMS4yLTMuMzZhOC4yNyw4LjI3LDAsMCwwLS4zNi0xYy0uNDgtMS4wOC0uODQtMi4yOC0xLjMyLTMuMzYtLjEyLS4yNC0uMjQtLjYtLjM2LS44NC0uNDgtMS4yLTEtMi4yOC0xLjQ0LTMuNDgsMC0uMTItLjEyLS4yNC0uMTItLjM2LTEuNTYtMy44NC0zLjI0LTcuNjgtNS0xMS40bC0uMzYtLjcyYy0uNDgtMS0uODQtMS44LTEuMzItMi42NC0uMjQtLjQ4LS40OC0xLjA4LS43Mi0xLjU2LS4zNi0uODQtLjg0LTEuNTYtMS4yLTIuNC0uMzYtLjYtLjYtMS4yLTEtMS44cy0uODQtMS40NC0xLjItMi4yOGMtLjM2LS42LS43Mi0xLjMyLTEuMDgtMS45MnMtLjg0LTEuNDQtMS4yLTIuMTZhMTguMDcsMTguMDcsMCwwLDAtMS4yLTJjLS4zNi0uNzItLjg0LTEuMzItMS4yLTJzLS44NC0xLjMyLTEuMi0yLS44NC0xLjMyLTEuMi0xLjkyLS44NC0xLjQ0LTEuMzItMi4xNmExNS42MywxNS42MywwLDAsMC0xLjItMS44TDQ2My4yLDExOWExNS42MywxNS42MywwLDAsMC0xLjItMS44Yy0uNDgtLjcyLTEuMDgtMS41Ni0xLjU2LTIuMjgtLjM2LS40OC0uNzItMS4wOC0xLjA4LTEuNTZsLTEuOC0yLjUyYy0uMzYtLjQ4LS42LS44NC0xLTEuMzItMS0xLjMyLTEuOC0yLjUyLTIuNzYtMy43MmEyNDguNzYsMjQ4Ljc2LDAsMCwwLTIzLjUxLTI2LjY0QTE4Ni44MiwxODYuODIsMCwwLDAsNDEyLDYyLjQ2Yy00LTMuNDgtOC4xNi02LjcyLTEyLjQ4LTkuODRhMTYyLjQ5LDE2Mi40OSwwLDAsMC0yNC42LTE1LjEyYy0yLjQtMS4zMi00LjgtMi41Mi03LjItMy43MmEyNTQsMjU0LDAsMCwwLTU1LjQzLTE5LjU2Yy0xLjkyLS4zNi0zLjg0LS44NC01LjY0LTEuMmgtLjEyYy0xLS4xMi0xLjgtLjM2LTIuNzYtLjQ4YTIzNi4zNSwyMzYuMzUsMCwwLDAtMzgtNEgyNTUuMTRhMjM0LjYyLDIzNC42MiwwLDAsMC00NS40OCw1Yy0zMy41OSw3LjA4LTYzLjIzLDIxLjI0LTgyLjkxLDM5LTEuMDgsMS0xLjkyLDEuNjgtMi40LDIuMTZsLS40OC40OEgxMjRsLS4xMi4xMi4xMi0uMTJhLjEyLjEyLDAsMCwwLC4xMi0uMTJsLS4xMi4xMmEuNDIuNDIsMCwwLDEsLjI0LS4xMmMxNC42NC04Ljc2LDM0LjkyLTE2LDQ5LjQ0LTE5LjU2bDUuODgtMS40NGMuMzYtLjEyLjg0LS4xMiwxLjItLjI0LDEuNjgtLjM2LDMuMzYtLjcyLDUuMTYtMS4wOC4yNCwwLC42LS4xMi44NC0uMTJDMjUwLjk0LDIwLjk0LDMxOS4zNCw0MC4xNCwzNjcsODUuNjFhMTcxLjQ5LDE3MS40OSwwLDAsMSwyNi44OCwzMi43NmMzMC4zNiw0OS4yLDI3LjQ4LDExMS4xMSwzLjg0LDE0Ny41OS0zNC40NCw1My0xMTEuMzUsNzEuMjctMTU5LDI0Ljg0YTg0LjE5LDg0LjE5LDAsMCwxLTI1LjU2LTU5LDc0LjA1LDc0LjA1LDAsMCwxLDYuMjQtMzFjMS42OC0zLjg0LDEzLjA4LTI1LjY3LDE4LjI0LTI0LjU5LTEzLjA4LTIuNzYtMzcuNTUsMi42NC01NC43MSwyOC4xOS0xNS4zNiwyMi45Mi0xNC41Miw1OC4yLTUsODMuMjhhMTMyLjg1LDEzMi44NSwwLDAsMS0xMi4xMi0zOS4yNGMtMTIuMjQtODIuNTUsNDMuMzEtMTUzLDk0LjMxLTE3MC41MS0yNy40OC0yNC05Ni40Ny0yMi4zMS0xNDcuNzEsMTUuMzYtMjkuODgsMjItNTEuMjMsNTMuMTYtNjIuNTEsOTAuMzYsMS42OC0yMC44OCw5LjYtNTIuMDgsMjUuOC04My44OC0xNy4xNiw4Ljg4LTM5LDM3LTQ5LjgsNjIuODgtMTUuNiwzNy40My0yMSw4Mi4xOS0xNi4wOCwxMjQuNzkuMzYsMy4yNC43Miw2LjM2LDEuMDgsOS42LDE5LjkyLDExNy4xMSwxMjIsMjA2LjM4LDI0NC43OCwyMDYuMzhDMzkyLjc3LDUwMy40Miw1MDQsMzkyLjE5LDUwNCwyNTUsNTAzLjg4LDI1MC40OCw1MDMuNzYsMjQ1LjkyLDUwMy41MiwyNDEuNDhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcnN0T3JkZXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMCA0ODguMjFDMTE1LjM0IDQ5Ni4yMSA3Ljc5IDM4OC42NiA3Ljc5IDI1NlMxMTUuMzQgMTUuNzkgMjQ4IDE1Ljc5IDQ4OC4yMSAxMjMuMzQgNDg4LjIxIDI1NiAzODAuNjYgNDk2LjIxIDI0OCA0OTYuMjF6bTAtNDU5LjkyQzEyNi42NiAzNi4yOSAyOC4yOSAxMzQuNjYgMjguMjkgMjU2UzEyNi42NiA0NzUuNzEgMjQ4IDQ3NS43MSA0NjcuNzEgMzc3LjM0IDQ2Ny43MSAyNTYgMzY5LjM0IDM2LjI5IDI0OCAzNi4yOXptMCA0MzEuMjJjLTExNi44MSAwLTIxMS41MS05NC42OS0yMTEuNTEtMjExLjUxUzEzMS4xOSA0NC40OSAyNDggNDQuNDkgNDU5LjUxIDEzOS4xOSA0NTkuNTEgMjU2IDM2NC44MSA0NjcuNTEgMjQ4IDQ2Ny41MXptMTg2LjIzLTE2Mi45OGExOTEuNjEzIDE5MS42MTMgMCAwIDEtMjAuMTMgNDguNjlsLTc0LjEzLTM1Ljg4IDYxLjQ4IDU0LjgyYTE5My41MTUgMTkzLjUxNSAwIDAgMS0zNy4yIDM3LjI5bC01NC44LTYxLjU3IDM1Ljg4IDc0LjI3YTE5MC45NDQgMTkwLjk0NCAwIDAgMS00OC42MyAyMC4yM2wtMjcuMjktNzguNDcgNC43OSA4Mi45M2MtOC42MSAxLjE4LTE3LjQgMS44LTI2LjMzIDEuOHMtMTcuNzItLjYyLTI2LjMzLTEuOGw0Ljc2LTgyLjQ2LTI3LjE1IDc4LjAzYTE5MS4zNjUgMTkxLjM2NSAwIDAgMS00OC42NS0yMC4ybDM1LjkzLTc0LjM0LTU0Ljg3IDYxLjY0YTE5My44NSAxOTMuODUgMCAwIDEtMzcuMjItMzcuMjhsNjEuNTktNTQuOS03NC4yNiAzNS45M2ExOTEuNjM4IDE5MS42MzggMCAwIDEtMjAuMTQtNDguNjlsNzcuODQtMjcuMTEtODIuMjMgNC43NmMtMS4xNi04LjU3LTEuNzgtMTcuMzItMS43OC0yNi4yMSAwLTkgLjYzLTE3Ljg0IDEuODItMjYuNTFsODIuMzggNC43Ny03Ny45NC0yNy4xNmExOTEuNzI2IDE5MS43MjYgMCAwIDEgMjAuMjMtNDguNjdsNzQuMjIgMzUuOTItNjEuNTItNTQuODZhMTkzLjg1IDE5My44NSAwIDAgMSAzNy4yOC0zNy4yMmw1NC43NiA2MS41My0zNS44My03NC4xN2ExOTEuNDkgMTkxLjQ5IDAgMCAxIDQ4LjY1LTIwLjEzbDI2Ljg3IDc3LjI1LTQuNzEtODEuNjFjOC42MS0xLjE4IDE3LjM5LTEuOCAyNi4zMi0xLjhzMTcuNzEuNjIgMjYuMzIgMS44bC00Ljc0IDgyLjE2IDI3LjA1LTc3Ljc2YzE3LjI3IDQuNSAzMy42IDExLjM1IDQ4LjYzIDIwLjE3bC0zNS44MiA3NC4xMiA1NC43Mi02MS40N2ExOTMuMTMgMTkzLjEzIDAgMCAxIDM3LjI0IDM3LjIzbC02MS40NSA1NC43NyA3NC4xMi0zNS44NmExOTEuNTE1IDE5MS41MTUgMCAwIDEgMjAuMiA0OC42NWwtNzcuODEgMjcuMSA4Mi4yNC00Ljc1YzEuMTkgOC42NiAxLjgyIDE3LjUgMS44MiAyNi40OSAwIDguODgtLjYxIDE3LjYzLTEuNzggMjYuMTlsLTgyLjEyLTQuNzUgNzcuNzIgMjcuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcnN0T3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuOSAyMjkuMmMuMS0uMS4yLS4zLjMtLjQgMCAuMSAwIC4zLS4xLjRoLS4yek0yMjQgOTYuNmMtNy4xIDAtMTQuNi42LTIxLjQgMS43bDMuNyA2Ny40LTIyLTY0Yy0xNC4zIDMuNy0yNy43IDkuNC00MCAxNi42bDI5LjQgNjEuNC00NS4xLTUwLjljLTExLjQgOC45LTIxLjcgMTkuMS0zMC42IDMwLjlsNTAuNiA0NS40LTYxLjEtMjkuN2MtNy4xIDEyLjMtMTIuOSAyNS43LTE2LjYgNDBsNjQuMyAyMi42LTY4LTRjLS45IDcuMS0xLjQgMTQuNi0xLjQgMjJzLjYgMTQuNiAxLjQgMjEuN2w2Ny43LTQtNjQgMjIuNmMzLjcgMTQuMyA5LjQgMjcuNyAxNi42IDQwLjNsNjEuMS0yOS43TDk3LjcgMzUyYzguOSAxMS43IDE5LjEgMjIuMyAzMC45IDMwLjlsNDQuOS01MC45LTI5LjUgNjEuNGMxMi4zIDcuNCAyNS43IDEzLjEgNDAgMTYuOWwyMi4zLTY0LjYtNCA2OGM3LjEgMS4xIDE0LjYgMS43IDIxLjcgMS43IDcuNCAwIDE0LjYtLjYgMjEuNy0xLjdsLTQtNjguNiAyMi42IDY1LjFjMTQuMy00IDI3LjctOS40IDQwLTE2LjlMMjc0LjkgMzMybDQ0LjkgNTAuOWMxMS43LTguOSAyMi0xOS4xIDMwLjYtMzAuOWwtNTAuNi00NS4xIDYxLjEgMjkuNGM3LjEtMTIuMyAxMi45LTI1LjcgMTYuNi00MC4zbC02NC0yMi4zIDY3LjQgNGMxLjEtNy4xIDEuNC0xNC4zIDEuNC0yMS43cy0uMy0xNC45LTEuNC0yMmwtNjcuNyA0IDY0LTIyLjNjLTMuNy0xNC4zLTkuMS0yOC0xNi42LTQwLjNsLTYwLjkgMjkuNyA1MC42LTQ1LjRjLTguOS0xMS43LTE5LjEtMjItMzAuNi0zMC45bC00NS4xIDUwLjkgMjkuNC02MS4xYy0xMi4zLTcuNC0yNS43LTEzLjEtNDAtMTYuOUwyNDEuNyAxNjZsNC02Ny43Yy03LjEtMS4yLTE0LjMtMS43LTIxLjctMS43ek00NDMuNCAxMjh2MjU2TDIyNCA1MTIgNC42IDM4NFYxMjhMMjI0IDBsMjE5LjQgMTI4em0tMTcuMSAxMC4zTDIyNCAyMC45IDIxLjcgMTM4LjN2MjM1LjFMMjI0IDQ5MS4xbDIwMi4zLTExNy43VjEzOC4zek0yMjQgMzcuMWwxODcuNyAxMDkuNHYyMTguOUwyMjQgNDc0LjkgMzYuMyAzNjUuNFYxNDYuNkwyMjQgMzcuMXptMCA1MC45Yy05Mi4zIDAtMTY2LjkgNzUuMS0xNjYuOSAxNjggMCA5Mi42IDc0LjYgMTY3LjcgMTY2LjkgMTY3LjcgOTIgMCAxNjYuOS03NS4xIDE2Ni45LTE2Ny43IDAtOTIuOS03NC45LTE2OC0xNjYuOS0xNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcnN0ZHJhZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDE5MmgtNjR2MTI4SDE5MnYxMjhIMHYtMjUuNmgxNjYuNHYtMTI4aDEyOHYtMTI4SDM4NFYxOTJ6bS0yNS42IDM4LjR2MTI4aC0xMjh2MTI4SDY0VjUxMmgxOTJWMzg0aDEyOFYyMzAuNGgtMjUuNnptMjUuNiAxOTJoLTg5LjZWNTEySDMyMHYtNjRoNjR2LTI1LjZ6TTAgMHYzODRoMTI4VjI1NmgxMjhWMTI4aDEyOFYwSDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsaWNrciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xNDQuNSAzMTljLTM1LjEgMC02My41LTI4LjQtNjMuNS02My41czI4LjQtNjMuNSA2My41LTYzLjUgNjMuNSAyOC40IDYzLjUgNjMuNS0yOC40IDYzLjUtNjMuNSA2My41em0xNTkgMGMtMzUuMSAwLTYzLjUtMjguNC02My41LTYzLjVzMjguNC02My41IDYzLjUtNjMuNSA2My41IDI4LjQgNjMuNSA2My41LTI4LjQgNjMuNS02My41IDYzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsaXBib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMydjQ0OGg0NDhWMzJIMHptMzU4LjQgMTc5LjJoLTg5LjZ2ODkuNmgtODkuNnY4OS42SDg5LjZWMTIxLjZoMjY4Ljh2ODkuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ny44IDQyNy44YzEyLjkgMTEuNyAzMy43IDMzLjMgMzMuMiA1MC43IDAgLjgtLjEgMS42LS4xIDIuNS0xLjggMTkuOC0xOC44IDMxLjEtMzkuMSAzMS0yNS0uMS0zOS45LTE2LjgtMzguNy0zNS44IDEtMTYuMiAyMC41LTM2LjcgMzIuNC00Ny42IDIuMy0yLjEgMi43LTIuNyA1LjYtMy42IDMuNCAwIDMuOS4zIDYuNyAyLjh6TTMzMS45IDY3LjNjLTE2LjMtMjUuNy0zOC42LTQwLjYtNjMuMy01Mi4xQzI0My4xIDQuNSAyMTQtLjIgMTkyIDBjLTQ0LjEgMC03MS4yIDEzLjItODEuMSAxNy4zQzU3LjMgNDUuMiAyNi41IDg3LjIgMjggMTU4LjZjNy4xIDgyLjIgOTcgMTc2IDE1NS44IDIzMy44IDEuNyAxLjYgNC41IDQuNSA2LjIgNS4xbDMuMy4xYzIuMS0uNyAxLjgtLjUgMy41LTIuMSA1Mi4zLTQ5LjIgMTQwLjctMTQ1LjggMTU1LjktMjE1LjcgNy0zOS4yIDMuMS03Mi41LTIwLjgtMTEyLjV6TTE4Ni44IDM1MS45Yy0yOC01MS4xLTY1LjItMTMwLjctNjkuMy0xODktMy40LTQ3LjUgMTEuNC0xMzEuMiA2OS4zLTEzNi43djMyNS43ek0zMjguNyAxODBjLTE2LjQgNTYuOC03Ny4zIDEyOC0xMTguOSAxNzAuM0MyMzcuNiAyOTguNCAyNzUgMjE3IDI3NyAxNTguNGMxLjYtNDUuOS05LjgtMTA1LjgtNDgtMTMxLjQgODguOCAxOC4zIDExNS41IDk4LjEgOTkuNyAxNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbnRBd2Vzb21lQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEE0OCA0OCAwIDAgMCAwIDgwVjQzMmE0OCA0OCAwIDAgMCA0OCA0OEg0MDBhNDggNDggMCAwIDAgNDgtNDhWODBBNDggNDggMCAwIDAgNDAwIDMyWm0xNiA0MDBhMTYgMTYgMCAwIDEtMTYgMTZINDhhMTYgMTYgMCAwIDEtMTYtMTZWODBBMTYgMTYgMCAwIDEgNDggNjRINDAwYTE2IDE2IDAgMCAxIDE2IDE2Wk0yMDEuNiAxNTJjLTI1LjQgMC0zNy40IDEwLjQtNTcuNiAxNC40VjE2MGExNiAxNiAwIDAgMC0zMiAwVjM1MmExNiAxNiAwIDAgMCAzMiAwVjE5OC40YzIwLjItNCAzMi4yLTE0LjQgNTcuNi0xNC40IDMxLjQgMCA0My4yIDE2IDc0LjYgMTYgMTAuMiAwIDE3LjgtMS40IDI3LjgtNC42djk2Yy0xMCAzLjItMTcuNiA0LjYtMjcuOCA0LjYtMzEuNCAwLTQzLjQtMTYtNzQuNi0xNmE4NS45IDg1LjkgMCAwIDAtMjUuNiA0djMyYTgwIDgwIDAgMCAxIDI1LjYtNGMzMS40IDAgNDMuMiAxNiA3NC42IDE2IDE4LjYgMCAyOC4yLTQuOCA1OS44LTE2VjE1MmMtMzEuNiAxMS4yLTQxLjIgMTYtNTkuOCAxNkMyNDQuOCAxNjggMjMyLjggMTUyIDIwMS42IDE1MlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9udEF3ZXNvbWVGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA0OFYzODRjLTYzIDIzLTgyIDMyLTExOSAzMi02MyAwLTg3LTMyLTE1MC0zMi0yMCAwLTM2IDQtNTEgOFYzMjhjMTUtNCAzMS04IDUxLTggNjMgMCA4NyAzMiAxNTAgMzIgMjAgMCAzNS0zIDU1LTlWMTM1Yy0yMCA2LTM1IDktNTUgOS02MyAwLTg3LTMyLTE1MC0zMi01MSAwLTc1IDIxLTExNSAyOVY0NDhhMzEuNiAzMS42IDAgMCAxLTMyIDMyQTMxLjYgMzEuNiAwIDAgMSAwIDQ0OFY2NEEzMS42IDMxLjYgMCAwIDEgMzIgMzIgMzEuNiAzMS42IDAgMCAxIDY0IDY0Vjc3YzQwLTggNjQtMjkgMTE1LTI5IDYzIDAgODcgMzIgMTUwIDMyQzM2NiA4MCAzODUgNzEgNDQ4IDQ4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250QXdlc29tZUxvZ29GdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzOTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjA5LjcgMTU2LjVjLTU3LjggMC0xMDIgNDMuOS0xMDIgOTkuMSAwIDU2IDQ0LjYgOTkuMSAxMDIgOTkuMSA1Ny40IDAgMTAyLTQzLjEgMTAyLTk5LjFDMTMxMS43IDIwMC40IDEyNjcuNSAxNTYuNSAxMjA5LjcgMTU2LjVabTAgMTUyLjdjLTM1LjEgMC01MS44LTI3LjQtNTEuOC01My4yIDAtMjUuOCAxNi43LTUzLjIgNTEuOC01My4yIDM1LjEgMCA1MS44IDI3LjggNTEuOCA1My4yQzEyNjEuMSAyODEuOCAxMjQ0LjggMzA5LjIgMTIwOS43IDMwOS4yWm05NjIuMS0xMzYuMWMtNC40LTEwLjktMTIuMy0xNi41LTIzLjUtMTYuNXMtMTkuMSA1LjYtMjMuNSAxNi41bC01OS40IDE0NS44Yy03LjIgMTcuNyAyLjggMjcuNCA0LjQgMjlhMjQuNiAyNC42IDAgMCAwIDE3LjUgNi44YzEwLjggMCAxOC43LTYgMjMuMS0xOC4xbDQtMTAuMWg2Ny43bDQgMTAuMWM0LjggMTIuMSAxMi4zIDE4LjEgMjMuMSAxOC4xYTI0LjYgMjQuNiAwIDAgMCAxNy41LTYuOGMxMC0xMC4xIDYuOC0yMi42IDQuNC0yOVptLTQzIDExMy42IDE5LjEtNTYgMTkuMSA1NlptLTU3NC41LTEzMC4xYy0xNC4zIDAtMjQuNyAxMC45LTI0LjcgMjUuNHY3Ni41bC02OC41LTg1LjhjLTQuNC01LjYtMTEuNi0xNi4xLTI1LjUtMTYuMS0xOS4xIDAtMjQuMyAxNy43LTI0LjMgMjUuNFYzMjkuN2MwIDE0LjEgMTAuNCAyNS40IDI0LjcgMjUuNCAxNC4zIDAgMjQuNy0xMC45IDI0LjctMjUuNFYyNTIuOGw2OC45IDg2LjJjNC44IDUuNiAxMS42IDE2LjEgMjUuNSAxNi4xIDE5LjEgMCAyMy45LTE3LjMgMjMuOS0yNS40VjE4MS45QzE1NzkgMTY3LjQgMTU2OC42IDE1Ni41IDE1NTQuMyAxNTYuNVptLTU1NC4xIDEuNkg5MTYuNWMtMTkuOSAwLTI1LjEgMTcuMy0yNS4xIDI1LjRWMzI4LjFjMCAxOS43IDE2LjcgMjUuNCAyNC43IDI1LjQgOCAwIDI0LjctNS4yIDI0LjctMjUuNFYyODVoNDQuNmMxMi44IDAgMjIuNy05LjMgMjIuNy0yMi42IDAtMTcuNy0xNS41LTIyLjEtMjIuNy0yMi4xSDk0MC44VjIwMy42aDU5LjRjMTIuOCAwIDIyLjctOS4zIDIyLjctMjIuNkMxMDIyLjkgMTYzIDEwMDcuMyAxNTguMSAxMDAwLjIgMTU4LjFabTgxNS4xIDBIMTY5MS43Yy03LjIgMC0yMi43IDQuNC0yMi43IDIyLjIgMCAxMy4zIDEwIDIyLjYgMjIuNyAyMi42aDM3VjMyNy43YzAgMTQuMSAxMC40IDI1LjQgMjQuNyAyNS40IDE0LjMgMCAyNC43LTEwLjkgMjQuNy0yNS40VjIwMi44aDM3YzEyLjcgMCAyMi43LTkuMyAyMi43LTIyLjZDMTgzNy45IDE2MyAxODIyLjQgMTU4LjEgMTgxNS4yIDE1OC4xWm0xNzg5LjUtMS42Yy05LjYgMC0xNy41IDYtMjUuMSAxOC4xbC00Ni42IDc2LjFMMzQ4Ni40IDE3NC42cS0xMC44LTE4LjEtMjUuMS0xOC4xYy0xOS41IDAtMjQuNyAxOC4xLTI0LjcgMjUuOFYzMjkuN2MwIDE0LjEgMTAuNCAyNS40IDI0LjcgMjUuNHMyNC43LTEwLjkgMjQuNy0yNS40VjI2Mi44TDM1MTAuNyAzMDIuN2M2LjQgMTAuMSAxMy45IDE1LjMgMjIuMyAxNS4zIDguOCAwIDE1LjktNS4yIDIyLjMtMTUuM2wyNC43LTM5Ljl2NjYuOWMwIDE0LjEgMTAuMyAyNS40IDI0LjcgMjUuNCAxNC4zIDAgMjQuNy0xMC45IDI0LjctMjUuNFYxODIuM0MzNjI5LjQgMTc0LjIgMzYyNC42IDE1Ni41IDM2MDQuNyAxNTYuNVptMjQ4LjYgMTQ5LjhoLTY1LjdWMjcyLjloMzkuNGMxMS45IDAgMjEuMS04LjkgMjEuMS0yMC45IDAtMTIuMS05LjItMjAuOS0yMS4xLTIwLjloLTM5LjRWMjA0LjhoNjIuMWMxMi44IDAgMjIuNy05LjMgMjIuNy0yMi42IDAtMTcuNy0xNS42LTIyLjItMjIuNy0yMi4yaC04Ni40Yy0xOS45IDAtMjUuMSAxNy4zLTI1LjEgMjUuNFYzMjYuNWMwIDguMSA1LjIgMjUuNCAyNS4xIDI1LjRoOTBjMTIuOCAwIDIyLjctOS4zIDIyLjctMjIuNkMzODc2IDMxMS4yIDM4NjAuNSAzMDYuMyAzODUzLjMgMzA2LjNaTTMyMzUgMTU2LjVjLTU3LjggMC0xMDIgNDMuOS0xMDIgOTkuMSAwIDU2IDQ0LjYgOTkuMSAxMDIgOTkuMSA1Ny40IDAgMTAyLTQzLjEgMTAyLTk5LjFDMzMzNyAyMDAuNCAzMjkyLjggMTU2LjUgMzIzNSAxNTYuNVptMCAxNTIuN2MtMzUuMSAwLTUxLjgtMjcuNC01MS44LTUzLjIgMC0yNS44IDE2LjctNTMuMiA1MS44LTUzLjIgMzUuMSAwIDUxLjggMjcuOCA1MS44IDUzLjJDMzI4Ni44IDI4MS44IDMyNzAuMSAzMDkuMiAzMjM1IDMwOS4yWk0yNTUwLjIgMTU2LjVjLTExLjIgMC0xOS4xIDUuNi0yMy4xIDE2LjVsLTM0LjMgOTQuNy0zMS41LTkyLjJjLTQuNC0xMi41LTEyLjMtMTguOS0yNC4zLTE4LjktMTEuOSAwLTE5LjkgNi40LTI0LjMgMTguOWwtMzEuNSA5Mi4yLTM0LjMtOTUuNXEtNS40LTE1LjctMjIuNy0xNS43Yy02LjggMC0xMi4zIDIuNC0xNy41IDcuMy01LjIgNS4yLTEwLjggMTQuNS00LjggMjguNmw1NS44IDE0NS44YzQgMTEuMyAxMS42IDE2LjkgMjMuMSAxNi45cTE2LjcgMCAyMi43LTE2LjlsMzMuNS05MS44IDMzLjUgOTEuOHE2IDE2LjkgMjIuNyAxNi45YzExLjIgMCAxOS4xLTUuNiAyMy4xLTE2LjlsNTUuOC0xNDUuOGMzLjYtOS4zIDQuNC0xOS4zLTQuOC0yOC42QTIzIDIzIDAgMCAwIDI1NTAuMiAxNTYuNVptNDQ0LjIgODEtMjEuOS05LjNjLTExLjktNC44LTE2LjMtOC41LTE2LjMtMTUuN3EwLTEyLjEgMTYuNy0xMi4xYzEyLjcgMCAxOS41IDcuNyAyNC4zIDEwLjkgNy4yIDUuMiAxOC4zIDYuOCAyNy45LTIgMTAuOC0xMC41IDYuOC0yMy44IDEuMi0zMC42LTEyLjMtMTQuOS0zMC4zLTIyLjItNTMuOC0yMi4yLTE5LjEgMC0zNS4xIDUuMi00Ny40IDE1LjctMTIuMyAxMC41LTE4LjcgMjQuMi0xOC43IDQxLjEgMCAyNC4yIDE1LjkgNDMuNSA0Ny44IDU3LjZsMTkuNSA4LjljMTUuOSA2LjggMTkuMSA5LjcgMTkuMSAxNy43IDAgOS4zLTYuNCAxNC4xLTE5LjUgMTQuMS0xOS4xIDAtMzQuNy0xNC45LTM2LjMtMTYuMS0xMC44LTcuMy0yMS41LTItMjYuMyAyLjgtNi44IDYuNC0xMi43IDIwLjkgMy4yIDM2LjIgNi44IDYuNCAxNS41IDExLjcgMjYuNyAxNS4zYTk0LjYgOTQuNiAwIDAgMCAzMi43IDUuNmMxOS45IDAgMzYuNy01LjIgNDkuOC0xNi4xIDEzLjEtMTAuOSAxOS41LTI1LjQgMTkuNS00My41cTAtMjAuNS0xMi0zMy44QzMwMjIuNyAyNTMuMiAzMDEwLjcgMjQ0LjMgMjk5NC40IDIzNy41Wm0tMjA2LjQgNjguOWgtNjUuN1YyNzIuOWgzOS40YzEyIDAgMjEuMS04LjkgMjEuMS0yMC45IDAtMTIuMS05LjItMjAuOS0yMS4xLTIwLjloLTM5LjRWMjA0LjhoNjIuMWMxMi44IDAgMjIuNy05LjMgMjIuNy0yMi42IDAtMTcuNy0xNS41LTIyLjItMjIuNy0yMi4yaC04Ni40Yy0xOS45IDAtMjUuMSAxNy4zLTI1LjEgMjUuNFYzMjYuNWMwIDguMSA1LjIgMjUuNCAyNS4xIDI1LjRoOTBjMTIuNyAwIDIyLjctOS4zIDIyLjctMjIuNkMyODEwLjggMzExLjIgMjc5NS4yIDMwNi4zIDI3ODggMzA2LjNaTTE3OC4zIDQ5LjFjLTUwLjUgMC03NC40IDIwLjctMTE0LjYgMjguN1Y2NUEzMS44IDMxLjggMCAxIDAgMCA2NVY0NDdhMzEuOCAzMS44IDAgMCAwIDYzLjcgMFYxNDEuNGM0MC4yLTggNjQuMS0yOC43IDExNC42LTI4LjcgNjIuNSAwIDg2IDMxLjggMTQ4LjQgMzEuOCAyMC4zIDAgMzUuNC0yLjggNTUuMy05LjJ2MTkxYy0xOS45IDYuNC0zNSA5LjItNTUuMyA5LjItNjIuNSAwLTg2LjQtMzEuOC0xNDguNC0zMS44LTIwLjMgMC0zNi4yIDMuNi01MC45IDhWMzc1LjRhMTU5LjEgMTU5LjEgMCAwIDEgNTAuOS04YzYyLjUgMCA4NiAzMS44IDE0OC40IDMxLjggMzcgMCA1Ni4xLTkuNiAxMTktMzEuOFY0OS4xQzM4Mi44IDcxLjQgMzYzLjcgODAuOSAzMjYuNyA4MC45IDI2NC4yIDgwLjkgMjQwLjQgNDkuMSAxNzguMyA0OS4xWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250QXdlc29tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhBNDggNDggMCAwIDAgMCA4MFY0MzJhNDggNDggMCAwIDAgNDggNDhINDAwYTQ4IDQ4IDAgMCAwIDQ4LTQ4VjgwQTQ4IDQ4IDAgMCAwIDQwMCAzMlpNMzM2IDMxMmMtMzEuNiAxMS4yLTQxLjIgMTYtNTkuOCAxNi0zMS40IDAtNDMuMi0xNi03NC42LTE2YTgwIDgwIDAgMCAwLTI1LjYgNFYyODRhODUuOSA4NS45IDAgMCAxIDI1LjYtNGMzMS4yIDAgNDMuMiAxNiA3NC42IDE2IDEwLjIgMCAxNy44LTEuNCAyNy44LTQuNnYtOTZjLTEwIDMuMi0xNy42IDQuNi0yNy44IDQuNi0zMS40IDAtNDMuMi0xNi03NC42LTE2LTI1LjQgMC0zNy40IDEwLjQtNTcuNiAxNC40VjM1MmExNiAxNiAwIDAgMS0zMiAwVjE2MGExNiAxNiAwIDAgMSAzMiAwdjYuNGMyMC4yLTQgMzIuMi0xNC40IDU3LjYtMTQuNCAzMS4yIDAgNDMuMiAxNiA3NC42IDE2IDE4LjYgMCAyOC4yLTQuOCA1OS44LTE2WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250aWNvbnNGaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTQuNCAyMjRoOTIuNGwtMTUuMiA1MS4yaC03Ni40VjQzM2MwIDgtMi44IDkuMiA0LjQgMTBsNTkuNiA1LjZWNDgzSDB2LTM1LjJsMjkuMi0yLjhjNy4yLS44IDkuMi0zLjIgOS4yLTEwLjhWMjc4LjRjMC0zLjItNC0zLjItOC0zLjJIMFYyMjRoMzguNHYtMjguOGMwLTY4IDM2LjQtOTYgMTA2LTk2IDQ2LjggMCA4OC44IDExLjIgODguOCA3Mi40bC02OS42IDguNGMuNC0yNS42LTYtMzEuNi0yMi40LTMxLjYtMjUuMiAwLTI2IDEzLjYtMjYgMzcuNnYzMmMwIDMuMi00LjggNi0uOCA2ek0zODQgNDgzSDI0My4ydi0zNC40bDI4LTMuNmM3LjItLjggMTAuNC0yLjQgMTAuNC0xMFYyODdjMC01LjYtNC05LjItOS4yLTEwLjhsLTMzLjItOC44IDkuMi00MC40aDExMHYyMDhjMCA4LTMuNiA4LjggNCAxMGwyMS42IDMuNlY0ODN6bS0zMC0zNDcuMmwxMi40IDQ1LjYtMTAgMTAtNDIuOC0yMi44LTQyLjggMjIuOC0xMC0xMCAxMi40LTQ1LjYtMzAtMzYuNCA0LjgtMTBoMzhMMzA3LjIgNTFIMzIwbDIxLjIgMzguNGgzOGw0LjggMTMuMi0zMCAzMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250aWNvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMyem0xODcgMTQwLjljLTE4LjQgMC0xOSA5LjktMTkgMjcuNHYyMy4zYzAgMi40LTMuNSA0LjQtLjYgNC40aDY3LjRsLTExLjEgMzcuM0gxNjh2MTEyLjljMCA1LjgtMiA2LjcgMy4yIDcuM2w0My41IDQuMXYyNS4xSDg0VjM4OWwyMS4zLTJjNS4yLS42IDYuNy0yLjMgNi43LTcuOVYyNjcuN2MwLTIuMy0yLjktMi4zLTUuOC0yLjNIODRWMjI4aDI4di0yMWMwLTQ5LjYgMjYuNS03MCA3Ny4zLTcwIDM0LjEgMCA2NC43IDguMiA2NC43IDUyLjhsLTUwLjcgNi4xYy4zLTE4LjctNC40LTIzLTE2LjMtMjN6bTc0LjMgMjQxLjh2LTI1LjFsMjAuNC0yLjZjNS4yLS42IDcuNi0xLjcgNy42LTcuM1YyNzEuOGMwLTQuMS0yLjktNi43LTYuNy03LjlsLTI0LjItNi40IDYuNy0yOS41aDgwLjJ2MTUxLjdjMCA1LjgtMi42IDYuNCAyLjkgNy4zbDE1LjcgMi42djI1LjF6bTgwLjgtMjU1LjVsOSAzMy4yLTcuMyA3LjMtMzEuMi0xNi42LTMxLjIgMTYuNi03LjMtNy4zIDktMzMuMi0yMS44LTI0LjIgMy41LTkuNmgyNy43bDE1LjUtMjhoOS4zbDE1LjUgMjhoMjcuN2wzLjUgOS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb3J0QXdlc29tZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggMjM3LjRoLTIyLjJjLTIuMSAwLTMuNyAxLjYtMy43IDMuN3Y1MS43YzAgMi4xIDEuNiAzLjcgMy43IDMuN0gyMDhjMi4xIDAgMy43LTEuNiAzLjctMy43di01MS43YzAtMi4xLTEuNi0zLjctMy43LTMuN3ptMTE4LjIgMEgzMDRjLTIuMSAwLTMuNyAxLjYtMy43IDMuN3Y1MS43YzAgMi4xIDEuNiAzLjcgMy43IDMuN2gyMi4yYzIuMSAwIDMuNy0xLjYgMy43LTMuN3YtNTEuN2MtLjEtMi4xLTEuNy0zLjctMy43LTMuN3ptMTMyLTEyNS4xYy0yLjMtMy4yLTQuNi02LjQtNy4xLTkuNS05LjgtMTIuNS0yMC44LTI0LTMyLjgtMzQuNC00LjUtMy45LTkuMS03LjYtMTMuOS0xMS4yLTEuNi0xLjItMy4yLTIuMy00LjgtMy41QzM3MiAzNC4xIDM0MC4zIDIwIDMwNiAxM2MtMTYuMi0zLjMtMzIuOS01LTUwLTVzLTMzLjkgMS43LTUwIDVjLTM0LjMgNy4xLTY2IDIxLjItOTMuMyA0MC44LTEuNiAxLjEtMy4yIDIuMy00LjggMy41LTQuOCAzLjYtOS40IDcuMy0xMy45IDExLjItMyAyLjYtNS45IDUuMy04LjggOHMtNS43IDUuNS04LjQgOC40Yy01LjUgNS43LTEwLjcgMTEuOC0xNS42IDE4LTIuNCAzLjEtNC44IDYuMy03LjEgOS41QzI1LjIgMTUzIDguMyAyMDIuNSA4LjMgMjU2YzAgMiAuMSA0IC4xIDYgLjEuNy4xIDEuMy4xIDIgLjEgMS4zLjEgMi43LjIgNCAwIC44LjEgMS41LjEgMi4zIDAgMS4zLjEgMi41LjIgMy43LjEuOC4xIDEuNi4yIDIuNC4xIDEuMS4yIDIuMy4zIDMuNSAwIC44LjEgMS42LjIgMi40LjEgMS4yLjMgMi40LjQgMy42LjEuOC4yIDEuNS4zIDIuMy4xIDEuMy4zIDIuNi41IDMuOS4xLjYuMiAxLjMuMyAxLjlsLjkgNS43Yy4xLjYuMiAxLjEuMyAxLjcuMyAxLjMuNSAyLjcuOCA0IC4yLjguMyAxLjYuNSAyLjQuMiAxIC41IDIuMS43IDMuMi4yLjkuNCAxLjcuNiAyLjYuMiAxIC40IDIgLjcgMyAuMi45LjUgMS44LjcgMi43LjMgMSAuNSAxLjkuOCAyLjkuMy45LjUgMS44LjggMi43LjIuOS41IDEuOS44IDIuOHMuNSAxLjguOCAyLjdjLjMgMSAuNiAxLjkuOSAyLjguNiAxLjYgMS4xIDMuMyAxLjcgNC45LjQgMSAuNyAxLjkgMSAyLjguMyAxIC43IDIgMS4xIDMgLjMuOC42IDEuNS45IDIuM2wxLjIgM2MuMy43LjYgMS41LjkgMi4yLjQgMSAuOSAyIDEuMyAzbC45IDIuMWMuNSAxIC45IDIgMS40IDMgLjMuNy42IDEuMy45IDIgLjUgMSAxIDIuMSAxLjUgMy4xLjIuNi41IDEuMS44IDEuNy42IDEuMSAxLjEgMi4yIDEuNyAzLjMuMS4yLjIuMy4zLjUgMi4yIDQuMSA0LjQgOC4yIDYuOCAxMi4yLjIuNC41LjguNyAxLjIuNyAxLjEgMS4zIDIuMiAyIDMuMy4zLjUuNi45LjkgMS40LjYgMS4xIDEuMyAyLjEgMiAzLjIuMy41LjYuOS45IDEuNC43IDEuMSAxLjQgMi4xIDIuMSAzLjIuMi40LjUuOC44IDEuMi43IDEuMSAxLjUgMi4yIDIuMyAzLjMuMi4yLjMuNS41LjcgMzcuNSA1MS43IDk0LjQgODguNSAxNjAgOTkuNC45LjEgMS43LjMgMi42LjQgMSAuMiAyLjEuNCAzLjEuNXMxLjkuMyAyLjguNGMxIC4yIDIgLjMgMyAuNC45LjEgMS45LjIgMi45LjNzMS45LjIgMi45LjMgMi4xLjIgMy4xLjNjLjkuMSAxLjguMSAyLjcuMiAxLjEuMSAyLjMuMSAzLjQuMi44IDAgMS43LjEgMi41LjEgMS4zIDAgMi42LjEgMy45LjEuNy4xIDEuNC4xIDIuMS4xIDIgLjEgNCAuMSA2IC4xczQtLjEgNi0uMWMuNyAwIDEuNC0uMSAyLjEtLjEgMS4zIDAgMi42IDAgMy45LS4xLjggMCAxLjctLjEgMi41LS4xIDEuMS0uMSAyLjMtLjEgMy40LS4yLjkgMCAxLjgtLjEgMi43LS4yIDEtLjEgMi4xLS4yIDMuMS0uM3MxLjktLjIgMi45LS4zYy45LS4xIDEuOS0uMiAyLjktLjNzMi0uMyAzLS40IDEuOS0uMyAyLjgtLjRjMS0uMiAyLjEtLjMgMy4xLS41LjktLjEgMS43LS4zIDIuNi0uNCA2NS42LTExIDEyMi41LTQ3LjcgMTYwLjEtMTAyLjQuMi0uMi4zLS41LjUtLjcuOC0xLjEgMS41LTIuMiAyLjMtMy4zLjItLjQuNS0uOC44LTEuMi43LTEuMSAxLjQtMi4xIDIuMS0zLjIuMy0uNS42LS45LjktMS40LjYtMS4xIDEuMy0yLjEgMi0zLjIuMy0uNS42LS45LjktMS40LjctMS4xIDEuMy0yLjIgMi0zLjMuMi0uNC41LS44LjctMS4yIDIuNC00IDQuNi04LjEgNi44LTEyLjIuMS0uMi4yLS4zLjMtLjUuNi0xLjEgMS4xLTIuMiAxLjctMy4zLjItLjYuNS0xLjEuOC0xLjcuNS0xIDEtMi4xIDEuNS0zLjEuMy0uNy42LTEuMy45LTIgLjUtMSAxLTIgMS40LTNsLjktMi4xYy41LTEgLjktMiAxLjMtMyAuMy0uNy42LTEuNS45LTIuMmwxLjItM2MuMy0uOC42LTEuNS45LTIuMy40LTEgLjctMiAxLjEtM3MuNy0xLjkgMS0yLjhjLjYtMS42IDEuMi0zLjMgMS43LTQuOS4zLTEgLjYtMS45LjktMi44cy41LTEuOC44LTIuN2MuMi0uOS41LTEuOS44LTIuOHMuNi0xLjguOC0yLjdjLjMtMSAuNS0xLjkuOC0yLjkuMi0uOS41LTEuOC43LTIuNy4yLTEgLjUtMiAuNy0zIC4yLS45LjQtMS43LjYtMi42LjItMSAuNS0yLjEuNy0zLjIuMi0uOC4zLTEuNi41LTIuNC4zLTEuMy42LTIuNy44LTQgLjEtLjYuMi0xLjEuMy0xLjdsLjktNS43Yy4xLS42LjItMS4zLjMtMS45LjEtMS4zLjMtMi42LjUtMy45LjEtLjguMi0xLjUuMy0yLjMuMS0xLjIuMy0yLjQuNC0zLjYgMC0uOC4xLTEuNi4yLTIuNC4xLTEuMS4yLTIuMy4zLTMuNS4xLS44LjEtMS42LjItMi40LjEgMS43LjEuNS4yLS43IDAtLjguMS0xLjUuMS0yLjMuMS0xLjMuMi0yLjcuMi00IC4xLS43LjEtMS4zLjEtMiAuMS0yIC4xLTQgLjEtNiAwLTUzLjUtMTYuOS0xMDMtNDUuOC0xNDMuN3pNNDQ4IDM3MS41Yy05LjQgMTUuNS0yMC42IDI5LjktMzMuNiA0Mi45LTIwLjYgMjAuNi00NC41IDM2LjctNzEuMiA0OC0xMy45IDUuOC0yOC4yIDEwLjMtNDIuOSAxMy4ydi03NS44YzAtNTguNi04OC42LTU4LjYtODguNiAwdjc1LjhjLTE0LjctMi45LTI5LTcuMy00Mi45LTEzLjItMjYuNy0xMS4zLTUwLjYtMjcuNC03MS4yLTQ4LTEzLTEzLTI0LjItMjcuNC0zMy42LTQyLjl2LTcxLjNjMC0yLjEgMS42LTMuNyAzLjctMy43aDIyLjFjMi4xIDAgMy43IDEuNiAzLjcgMy43VjMyNmgyOS42VjE4MmMwLTIuMSAxLjYtMy43IDMuNy0zLjdoMjIuMWMyLjEgMCAzLjcgMS42IDMuNyAzLjd2MjUuOWgyOS41VjE4MmMwLTIuMSAxLjYtMy43IDMuNy0zLjdIMjA4YzIuMSAwIDMuNyAxLjYgMy43IDMuN3YyNS45aDI5LjVWMTgyYzAtNC44IDYuNS0zLjcgOS41LTMuN1Y4OC4xYy00LjQtMi03LjQtNi43LTcuNC0xMS41IDAtMTYuOCAyNS40LTE2LjggMjUuNCAwIDAgNC44LTMgOS40LTcuNCAxMS41VjkyYzYuMy0xLjQgMTIuNy0yLjMgMTkuMi0yLjMgOS40IDAgMTguNCAzLjUgMjYuMyAzLjUgNy4yIDAgMTUuMi0zLjUgMTkuNC0zLjUgMi4xIDAgMy43IDEuNiAzLjcgMy43djQ4LjRjMCA1LjYtMTguNyA2LjUtMjIuNCA2LjUtOC42IDAtMTYuNi0zLjUtMjUuNC0zLjUtNyAwLTE0LjEgMS4yLTIwLjggMi44djMwLjdjMyAwIDkuNS0xLjEgOS41IDMuN3YyNS45aDI5LjVWMTgyYzAtMi4xIDEuNi0zLjcgMy43LTMuN2gyMi4yYzIuMSAwIDMuNyAxLjYgMy43IDMuN3YyNS45aDI5LjVWMTgyYzAtMi4xIDEuNi0zLjcgMy43LTMuN2gyMi4xYzIuMSAwIDMuNyAxLjYgMy43IDMuN3YxNDRoMjkuNXYtMjUuOGMwLTIuMSAxLjYtMy43IDMuNy0zLjdoMjIuMmMyLjEgMCAzLjcgMS42IDMuNyAzLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvcnRBd2Vzb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OS4yIDI4Ny45aC0yNy40Yy0yLjYgMC00LjYgMi00LjYgNC42djMyaC0zNi42VjE0Ni4yYzAtMi42LTItNC42LTQuNi00LjZoLTI3LjRjLTIuNiAwLTQuNiAyLTQuNiA0LjZ2MzJoLTM2LjZ2LTMyYzAtMi42LTItNC42LTQuNi00LjZoLTI3LjRjLTIuNiAwLTQuNiAyLTQuNiA0LjZ2MzJoLTM2LjZ2LTMyYzAtNi04LTQuNi0xMS43LTQuNnYtMzhjOC4zLTIgMTcuMS0zLjQgMjUuNy0zLjQgMTAuOSAwIDIwLjkgNC4zIDMxLjQgNC4zIDQuNiAwIDI3LjctMS4xIDI3LjctOHYtNjBjMC0yLjYtMi00LjYtNC42LTQuNi01LjEgMC0xNS4xIDQuMy0yNCA0LjMtOS43IDAtMjAuOS00LjMtMzIuNi00LjMtOCAwLTE2IDEuMS0yMy43IDIuOXYtNC45YzUuNC0yLjYgOS4xLTguMyA5LjEtMTQuMyAwLTIwLjctMzEuNC0yMC44LTMxLjQgMCAwIDYgMy43IDExLjcgOS4xIDE0LjN2MTExLjdjLTMuNyAwLTExLjctMS40LTExLjcgNC42djMyaC0zNi42di0zMmMwLTIuNi0yLTQuNi00LjYtNC42aC0yNy40Yy0yLjYgMC00LjYgMi00LjYgNC42djMySDEyOHYtMzJjMC0yLjYtMi00LjYtNC42LTQuNkg5NmMtMi42IDAtNC42IDItNC42IDQuNnYxNzguM0g1NC44di0zMmMwLTIuNi0yLTQuNi00LjYtNC42SDIyLjhjLTIuNiAwLTQuNiAyLTQuNiA0LjZWNTEyaDE4Mi45di05NmMwLTcyLjYgMTA5LjctNzIuNiAxMDkuNyAwdjk2aDE4Mi45VjI5Mi41Yy4xLTIuNi0xLjktNC42LTQuNS00LjZ6bS0yODguMS00LjVjMCAyLjYtMiA0LjYtNC42IDQuNmgtMjcuNGMtMi42IDAtNC42LTItNC42LTQuNnYtNjRjMC0yLjYgMi00LjYgNC42LTQuNmgyNy40YzIuNiAwIDQuNiAyIDQuNiA0LjZ2NjR6bTE0Ni40IDBjMCAyLjYtMiA0LjYtNC42IDQuNmgtMjcuNGMtMi42IDAtNC42LTItNC42LTQuNnYtNjRjMC0yLjYgMi00LjYgNC42LTQuNmgyNy40YzIuNiAwIDQuNiAyIDQuNiA0LjZ2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvcnVtYmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuOCAzMDkuN0MyIDI5Mi43IDAgMjc1LjUgMCAyNTguMyAwIDEzNSA5OS44IDM1IDIyMy4xIDM1YzE2LjYgMCAzMy4zIDIgNDkuMyA1LjVDMTQ5IDg3LjUgNTEuOSAxODYgNS44IDMwOS43em0zOTIuOS0xODkuMkMzODUgMTAzIDM2OSA4Ny44IDM1MC45IDc1LjJjLTE0OS42IDQ0LjMtMjY2LjMgMTYyLjEtMzA5LjcgMzEyIDEyLjUgMTguMSAyOCAzNS42IDQ1LjIgNDkgNDMuMS0xNTEuMyAxNjEuMi0yNzEuNyAzMTIuMy0zMTUuN3ptMTUuOCAyNTIuN2MxNS4yLTI1LjEgMjUuNC01My43IDI5LjUtODIuOC03OS40IDQyLjktMTQ1IDExMC42LTE4Ny42IDE5MC4zIDMwLTQuNCA1OC45LTE1LjMgODQuNi0zMS4zIDM1IDEzLjEgNzAuOSAyNC4zIDEwNyAzMy42LTkuMy0zNi41LTIwLjQtNzQuNS0zMy41LTEwOS44em0yOS43LTE0NS41Yy0yLjYtMTkuNS03LjktMzguNy0xNS44LTU2LjhDMjkwLjUgMjE2LjcgMTgyIDMyNy41IDEzNy4xIDQ2NmMxOC4xIDcuNiAzNyAxMi41IDU2LjYgMTUuMkMyNDAgMzY3LjEgMzMwLjUgMjc0LjQgNDQ0LjIgMjI3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvdXJzcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM2OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIzLjEgM0g0OS45QzEyLjQgMyAwIDMxLjMgMCA0OS4xdjQzMy44YzAgMjAuMyAxMi4xIDI3LjcgMTguMiAzMC4xIDYuMiAyLjUgMjIuOCA0LjYgMzIuOS03LjFDMTgwIDM1Ni41IDE4Mi4yIDM1NCAxODIuMiAzNTRjMy4xLTMuNCAzLjQtMy4xIDYuOC0zLjFoODMuNGMzNS4xIDAgNDAuNi0yNS4yIDQ0LjMtMzkuN2w0OC42LTI0M0MzNzMuOCAyNS44IDM2My4xIDMgMzIzLjEgM3ptLTE2LjMgNzMuOGwtMTEuNCA1OS43Yy0xLjIgNi41LTkuNSAxMy4yLTE2LjkgMTMuMkgxNzIuMWMtMTIgMC0yMC42IDguMy0yMC42IDIwLjN2MTNjMCAxMiA4LjYgMjAuNiAyMC42IDIwLjZoOTAuNGM4LjMgMCAxNi42IDkuMiAxNC44IDE4LjItMS44IDguOS0xMC41IDUzLjgtMTEuNCA1OC44LS45IDQuOS02LjggMTMuNS0xNi45IDEzLjVoLTczLjVjLTEzLjUgMC0xNy4yIDEuOC0yNi41IDEyLjYgMCAwLTguOSAxMS40LTg5LjUgMTA4LjMtLjkuOS0xLjguNi0xLjgtLjNWNzUuOWMwLTcuNyA2LjgtMTYuNiAxNi42LTE2LjZoMjE5YzguMiAwIDE1LjYgNy43IDEzLjUgMTcuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnJlZUNvZGVDYW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk3LjIyLDk2LjIxYzEwLjM2LTEwLjY1LDE2LTE3LjEyLDE2LTIxLjksMC0yLjc2LTEuOTItNS41MS0zLjgzLTcuNDJBMTQuODEsMTQuODEsMCwwLDAsMTAxLDY0LjA1Yy04LjQ4LDAtMjAuOTIsOC43OS0zNS44NCwyNS42OUMyMy42OCwxMzcsMi41MSwxODIuODEsMy4zNywyNTAuMzRzMTcuNDcsMTE3LDU0LjA2LDE2MS44N0M3Ni4yMiw0MzUuODYsOTAuNjIsNDQ4LDEwMC45LDQ0OGExMy41NSwxMy41NSwwLDAsMCw4LjM3LTMuODRjMS45MS0yLjc2LDMuODEtNS42MywzLjgxLTguMzgsMC01LjYzLTMuODYtMTIuMi0xMy4yLTIwLjU1LTQ0LjQ1LTQyLjMzLTY3LjMyLTk3LTY3LjQ4LTE2NUMzMi4yNSwxODguOCw1NCwxMzcuODMsOTcuMjIsOTYuMjFaTTIzOS40Nyw0MjAuMDdjLjU4LjM3LjkxLjU1LjkxLjU1Wm05My43OS41NS4xNy0uMTNDMzMzLjI0LDQyMC42MiwzMzMuMTcsNDIwLjY3LDMzMy4yNiw0MjAuNjJabTMuMTMtMTU4LjE4Yy0xNi4yNC00LjE1LDUwLjQxLTgyLjg5LTY4LjA1LTE3Ny4xNywwLDAsMTUuNTQsNDkuMzgtNjIuODMsMTU5LjU3LTc0LjI3LDEwNC4zNSwyMy40NiwxNjguNzMsMzQsMTc1LjIzLTYuNzMtNC4zNS00Ny40LTM1LjcsOS41NS0xMjguNjQsMTEtMTguMywyNS41My0zNC44Nyw0My41LTcyLjE2LDAsMCwxNS45MSwyMi40NSw3LjYsNzEuMTNDMjg3LjcsMzY0LDM1NCwzNDIuOTEsMzU1LDM0My45NGMyMi43NSwyNi43OC0xNy43Miw3My41MS0yMS41OCw3Ni41NSw1LjQ5LTMuNjUsMTE3LjcxLTc4LDMzLTE4OC4xQzM2MC40MywyMzguNCwzNTIuNjIsMjY2LjU5LDMzNi4zOSwyNjIuNDRaTTUxMC44OCw4OS42OUM0OTYsNzIuNzksNDgzLjUyLDY0LDQ3NSw2NGExNC44MSwxNC44MSwwLDAsMC04LjM5LDIuODRjLTEuOTEsMS45MS0zLjgzLDQuNjYtMy44Myw3LjQyLDAsNC43OCw1LjYsMTEuMjYsMTYsMjEuOSw0My4yMyw0MS42MSw2NSw5Mi41OSw2NC44MiwxNTQuMDYtLjE2LDY4LTIzLDEyMi42My02Ny40OCwxNjUtOS4zNCw4LjM1LTEzLjE4LDE0LjkyLTEzLjIsMjAuNTUsMCwyLjc1LDEuOSw1LjYyLDMuODEsOC4zOEExMy42MSwxMy42MSwwLDAsMCw0NzUuMSw0NDhjMTAuMjgsMCwyNC42OC0xMi4xMyw0My40Ny0zNS43OSwzNi41OS00NC44NSw1My4xNC05NC4zOCw1NC4wNi0xNjEuODdTNTUyLjMyLDEzNyw1MTAuODgsODkuNjlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZyZWVic2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAzLjcgOTYuMmMxMS4xLTExLjEgMTE1LjUtNzcgMTM5LjItNTMuMiAyMy43IDIzLjctNDIuMSAxMjguMS01My4yIDEzOS4yLTExLjEgMTEuMS0zOS40LjktNjMuMS0yMi45LTIzLjgtMjMuNy0zNC4xLTUyLTIyLjktNjMuMXpNMTA5LjkgNjguMUM3My42IDQ3LjUgMjIgMjQuNiA1LjYgNDEuMWMtMTYuNiAxNi42IDcuMSA2OS40IDI3LjkgMTA1LjcgMTguNS0zMi4yIDQ0LjgtNTkuMyA3Ni40LTc4Ljd6TTQwNi43IDE3NGMzLjMgMTEuMyAyLjcgMjAuNy0yLjcgMjYuMS0yMC4zIDIwLjMtODcuNS0yNy0xMDkuMy03MC4xLTE4LTMyLjMtMTEuMS01My40IDE0LjktNDguNyA1LjctMy42IDEyLjMtNy42IDE5LjYtMTEuNi0yOS44LTE1LjUtNjMuNi0yNC4zLTk5LjUtMjQuMy0xMTkuMSAwLTIxNS42IDk2LjUtMjE1LjYgMjE1LjYgMCAxMTkgOTYuNSAyMTUuNiAyMTUuNiAyMTUuNlM0NDUuMyAzODAuMSA0NDUuMyAyNjFjMC0zOC40LTEwLjEtNzQuNS0yNy43LTEwNS44LTMuOSA3LTcuNiAxMy4zLTEwLjkgMTguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnVsY3J1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NS43NSAxNjQuMTRsLTM1LjM4IDQzLjU1TDI1IDE2NC4xNGwzNS4zOC00My41NXpNMTQ0LjIzIDBsLTIwLjU0IDE5OC4xOEw3Mi43MiAyNTZsNTEgNTcuODJMMTQ0LjIzIDUxMlYzMDAuODlMMTAzLjE1IDI1Nmw0MS4wOC00NC44OXptNzkuNjcgMTY0LjE0bDM1LjM4IDQzLjU1IDM1LjM4LTQzLjU1LTM1LjM4LTQzLjU1em0tNDguNDggNDdMMjE2LjUgMjU2bC00MS4wOCA0NC44OVY1MTJMMTk2IDMxMy44MiAyNDcgMjU2bC01MS01Ny44MkwxNzUuNDIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2FsYWN0aWNSZXB1YmxpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggNTA0QzExMS4yNSA1MDQgMCAzOTIuNzUgMCAyNTZTMTExLjI1IDggMjQ4IDhzMjQ4IDExMS4yNSAyNDggMjQ4LTExMS4yNSAyNDgtMjQ4IDI0OHptMC00NzkuNDdDMTIwLjM3IDI0LjUzIDE2LjUzIDEyOC4zNyAxNi41MyAyNTZTMTIwLjM3IDQ4Ny40NyAyNDggNDg3LjQ3IDQ3OS40NyAzODMuNjMgNDc5LjQ3IDI1NiAzNzUuNjMgMjQuNTMgMjQ4IDI0LjUzem0yNy42MiAyMS44MXYyNC42MmExODUuOTMzIDE4NS45MzMgMCAwIDEgODMuNTcgMzQuNTRsMTcuMzktMTcuMzZjLTI4Ljc1LTIyLjA2LTYzLjMtMzYuODktMTAwLjk2LTQxLjh6bS01NS4zNy4wN2MtMzcuNjQgNC45NC03Mi4xNiAxOS44LTEwMC44OCA0MS44NWwxNy4yOCAxNy4zNmguMDhjMjQuMDctMTcuODQgNTIuNTUtMzAuMDYgODMuNTItMzQuNjdWNDYuNDF6bTEyLjI1IDUwLjE3djgyLjg3Yy0xMC4wNCAyLjAzLTE5LjQyIDUuOTQtMjcuNjcgMTEuNDJsLTU4LjYyLTU4LjU5LTIxLjkzIDIxLjkzIDU4LjY3IDU4LjY3Yy01LjQ3IDguMjMtOS40NSAxNy41OS0xMS40NyAyNy42MmgtODIuOXYzMWg4Mi45YzIuMDIgMTAuMDIgNi4wMSAxOS4zMSAxMS40NyAyNy41NGwtNTguNjcgNTguNjkgMjEuOTMgMjEuOTMgNTguNjItNTguNjJhNzcuODczIDc3Ljg3MyAwIDAgMCAyNy42NyAxMS40N3Y4Mi45aDMxdi04Mi45YzEwLjA1LTIuMDMgMTkuMzctNi4wNiAyNy42Mi0xMS41NWw1OC42NyA1OC42OSAyMS45My0yMS45My01OC42Ny01OC42OWM1LjQ2LTguMjMgOS40Ny0xNy41MiAxMS41LTI3LjU0aDgyLjg3di0zMWgtODIuODdjLTIuMDItMTAuMDItNi4wMy0xOS4zOC0xMS41LTI3LjYybDU4LjY3LTU4LjY3LTIxLjkzLTIxLjkzLTU4LjY3IDU4LjY3Yy04LjI1LTUuNDktMTcuNTctOS40Ny0yNy42Mi0xMS41Vjk2LjU4aC0zMXptMTgzLjI0IDMwLjcybC0xNy4zNiAxNy4zNmExODYuMzM3IDE4Ni4zMzcgMCAwIDEgMzQuNjcgODMuNjdoMjQuNjJjLTQuOTUtMzcuNjktMTkuODMtNzIuMjktNDEuOTMtMTAxLjAzem0tMzM1LjU1LjEzYy0yMi4wNiAyOC43Mi0zNi45MSA2My4yNi00MS44NSAxMDAuOTFoMjQuNjVjNC42LTMwLjk2IDE2Ljc2LTU5LjQ1IDM0LjU5LTgzLjUybC0xNy4zOS0xNy4zOXpNMzguMzQgMjgzLjY3YzQuOTIgMzcuNjQgMTkuNzUgNzIuMTggNDEuOCAxMDAuOWwxNy4zNi0xNy4zOWMtMTcuODEtMjQuMDctMjkuOTItNTIuNTctMzQuNTEtODMuNTJIMzguMzR6bTM5NC43IDBjLTQuNjEgMzAuOTktMTYuOCA1OS41LTM0LjY3IDgzLjZsMTcuMzYgMTcuMzZjMjIuMDgtMjguNzQgMzYuOTgtNjMuMjkgNDEuOTMtMTAwLjk2aC0yNC42MnpNMTM2LjY2IDQwNi4zOGwtMTcuMzYgMTcuMzZjMjguNzMgMjIuMDkgNjMuMyAzNi45OCAxMDAuOTYgNDEuOTN2LTI0LjY0Yy0zMC45OS00LjYzLTU5LjUzLTE2Ljc5LTgzLjYtMzQuNjV6bTIyMi41My4wNWMtMjQuMDkgMTcuODQtNTIuNTggMzAuMDgtODMuNTcgMzQuNjd2MjQuNTdjMzcuNjctNC45MiA3Mi4yMS0xOS43OSAxMDAuOTYtNDEuODVsLTE3LjMxLTE3LjM5aC0uMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdhbGFjdGljU2VuYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OS44NiAzMy40OHYyNi4wN0MyMzYuMjggODAuMTcgMjI2IDE2OC4xNCAyMjUuMzkgMjc0LjljMTEuNzQtMTUuNjIgMTkuMTMtMzMuMzMgMTkuMTMtNDguMjR2LTE2Ljg4Yy0uMDMtNS4zMi43NS0xMC41MyAyLjE5LTE1LjY1LjY1LTIuMTQgMS4zOS00LjA4IDIuNjItNS44MiAxLjIzLTEuNzUgMy40My0zLjc5IDYuNjgtMy43OSAzLjI0IDAgNS40NSAyLjA1IDYuNjggMy43OSAxLjIzIDEuNzUgMS45NyAzLjY4IDIuNjIgNS44MiAxLjQ0IDUuMTIgMi4yMiAxMC4zMyAyLjE5IDE1LjY1djE2Ljg4YzAgMTQuOTEgNy4zOSAzMi42MiAxOS4xMyA0OC4yNC0uNjMtMTA2Ljc2LTEwLjkxLTE5NC43My0yNC40OS0yMTUuMzVWMzMuNDhoLTEyLjI4em0tMjYuMzQgMTQ3Ljc3Yy05LjUyIDIuMTUtMTguNyA1LjE5LTI3LjQ2IDkuMDggOC45IDE2LjEyIDkuNzYgMzIuNjQgMS43MSAzNy4yOS04IDQuNjItMjEuODUtNC4yMy0zMS4zNi0xOS44Mi0xMS41OCA4Ljc5LTIxLjg4IDE5LjMyLTMwLjU2IDMxLjA5IDE0LjczIDkuNjIgMjIuODkgMjIuOTIgMTguMzIgMzAuNjYtNC41NCA3LjctMjAuMDMgNy4xNC0zNS40Ny0uOTYtNS43OCAxMy4yNS05Ljc1IDI3LjUxLTExLjY1IDQyLjQyIDkuNjguMTggMTguNjcgMi4zOCAyNi4xOCA2LjA0IDE3Ljc4LS4zIDMyLjc3LTEuOTYgNDAuNDktNC4yMiA1LjU1LTI2LjM1IDIzLjAyLTQ4LjIzIDQ2LjMyLTU5LjUxLjczLTI1LjU1IDEuODgtNDkuNjcgMy40OC03Mi4wN3ptNjQuOTYgMGMxLjU5IDIyLjQgMi43NSA0Ni41MiAzLjQ3IDcyLjA3IDIzLjI5IDExLjI4IDQwLjc3IDMzLjE2IDQ2LjMyIDU5LjUxIDcuNzIgMi4yNiAyMi43MSAzLjkyIDQwLjQ5IDQuMjIgNy41MS0zLjY2IDE2LjUtNS44NSAyNi4xOC02LjA0LTEuOS0xNC45MS01Ljg2LTI5LjE3LTExLjY1LTQyLjQyLTE1LjQ0IDguMS0zMC45MyA4LjY2LTM1LjQ3Ljk2LTQuNTctNy43NCAzLjYtMjEuMDUgMTguMzItMzAuNjYtOC42OC0xMS43Ny0xOC45OC0yMi4zLTMwLjU2LTMxLjA5LTkuNTEgMTUuNTktMjMuMzYgMjQuNDQtMzEuMzYgMTkuODItOC4wNS00LjY1LTcuMTktMjEuMTYgMS43MS0zNy4yOWExNDcuNDkgMTQ3LjQ5IDAgMCAwLTI3LjQ1LTkuMDh6bS0zMi40OCA4LjZjLTMuMjMgMC01Ljg2IDguODEtNi4wOSAxOS45M2gtLjA1djE2Ljg4YzAgNDEuNDItNDkuMDEgOTUuMDQtOTMuNDkgOTUuMDQtNTIgMC0xMjIuNzUtMS40NS0xNTYuMzcgMjkuMTd2Mi41MWM5LjQyIDE3LjEyIDIwLjU4IDMzLjE3IDMzLjE4IDQ3Ljk3QzQ1LjcgMzgwLjI2IDg0Ljc3IDM2MC40IDE0MS4yIDM2MGM0NS42OCAxLjAyIDc5LjAzIDIwLjMzIDkwLjc2IDQwLjg3LjAxLjAxLS4wMS4wNCAwIC4wNSA3LjY3IDIuMTQgMTUuODUgMy4yMyAyNC4wNCAzLjIxIDguMTkuMDIgMTYuMzctMS4wNyAyNC4wNC0zLjIxLjAxLS4wMS0uMDEtLjA0IDAtLjA1IDExLjc0LTIwLjU0IDQ1LjA4LTM5Ljg1IDkwLjc2LTQwLjg3IDU2LjQzLjM5IDk1LjQ5IDIwLjI2IDEwOC4wMiA0MS4zNSAxMi42LTE0LjggMjMuNzYtMzAuODYgMzMuMTgtNDcuOTd2LTIuNTFjLTMzLjYxLTMwLjYyLTEwNC4zNy0yOS4xNy0xNTYuMzctMjkuMTctNDQuNDggMC05My40OS01My42Mi05My40OS05NS4wNHYtMTYuODhoLS4wNWMtLjIzLTExLjEyLTIuODYtMTkuOTMtNi4wOS0xOS45M3ptMCA5Ni41OWMyMi40MiAwIDQwLjYgMTguMTggNDAuNiA0MC42cy0xOC4xOCA0MC42NS00MC42IDQwLjY1LTQwLjYtMTguMjMtNDAuNi00MC42NWMwLTIyLjQyIDE4LjE4LTQwLjYgNDAuNi00MC42em0wIDcuNjRjLTE4LjE5IDAtMzIuOTYgMTQuNzctMzIuOTYgMzIuOTZTMjM3LjgxIDM2MCAyNTYgMzYwczMyLjk2LTE0Ljc3IDMyLjk2LTMyLjk2LTE0Ljc3LTMyLjk2LTMyLjk2LTMyLjk2em0wIDYuMTRjMTQuODEgMCAyNi44MiAxMi4wMSAyNi44MiAyNi44MnMtMTIuMDEgMjYuODItMjYuODIgMjYuODItMjYuODItMTIuMDEtMjYuODItMjYuODIgMTIuMDEtMjYuODIgMjYuODItMjYuODJ6bS0xMTQuOCA2Ni42N2MtMTAuMTkuMDctMjEuNi4zNi0zMC41IDEuNjYuNDMgNC40MiAxLjUxIDE4LjYzIDcuMTEgMjkuNzYgOS4xMS0yLjU2IDE4LjM2LTMuOSAyNy42Mi0zLjkgNDEuMjguOTQgNzEuNDggMzQuMzUgNzguMjYgNzQuNDdsLjExIDQuN2MxMC40IDEuOTEgMjEuMTkgMi45NCAzMi4yMSAyLjk0IDExLjAzIDAgMjEuODEtMS4wMiAzMi4yMS0yLjk0bC4xMS00LjdjNi43OC00MC4xMiAzNi45OC03My41MyA3OC4yNi03NC40NyA5LjI2IDAgMTguNTEgMS4zNCAyNy42MiAzLjkgNS42LTExLjEzIDYuNjgtMjUuMzQgNy4xMS0yOS43Ni04LjktMS4zLTIwLjMyLTEuNTgtMzAuNS0xLjY2LTE4Ljc2LjQyLTM1LjE5IDQuMTctNDguNjEgOS42Ny0xMi41NCAxNi4wMy0yOS4xNiAzMC4wMy00OS41OCAzMy4wNy0uMDkuMDItLjE3LjA0LS4yNy4wNS0uMDUuMDEtLjExLjA0LS4xNi4wNS01LjI0IDEuMDctMTAuNjMgMS42LTE2LjE5IDEuNi01LjU1IDAtMTAuOTUtLjUzLTE2LjE5LTEuNi0uMDUtLjAxLS4xMS0uMDQtLjE2LS4wNS0uMS0uMDItLjE3LS4wNC0uMjctLjA1LTIwLjQyLTMuMDMtMzcuMDMtMTcuMDQtNDkuNTgtMzMuMDctMTMuNDItNS40OS0yOS44Ni05LjI1LTQ4LjYxLTkuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdldFBvY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcuNiA2NGgtMzY3QzE4LjUgNjQgMCA4Mi41IDAgMTA0LjZ2MTM1LjJDMCAzNjQuNSA5OS43IDQ2NCAyMjQuMiA0NjRjMTI0IDAgMjIzLjgtOTkuNSAyMjMuOC0yMjQuMlYxMDQuNmMwLTIyLjQtMTcuNy00MC42LTQwLjQtNDAuNnptLTE2MiAyNjguNWMtMTIuNCAxMS44LTMxLjQgMTEuMS00Mi40IDBDODkuNSAyMjMuNiA4OC4zIDIyNy40IDg4LjMgMjA5LjNjMC0xNi45IDEzLjgtMzAuNyAzMC43LTMwLjcgMTcgMCAxNi4xIDMuOCAxMDUuMiA4OS4zIDkwLjYtODYuOSA4OC42LTg5LjMgMTA1LjUtODkuMyAxNi45IDAgMzAuNyAxMy44IDMwLjcgMzAuNyAwIDE3LjgtMi45IDE1LjctMTE0LjggMTIzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdnQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NyA4QzEyMCA4IDkgMTE5IDkgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzk0IDggMjU3IDh6bS00OS41IDM3NC44TDgxLjggMjU3LjFsMTI1LjctMTI1LjcgMzUuMiAzNS40LTI0LjIgMjQuMi0xMS4xLTExLjEtNzcuMiA3Ny4yIDc3LjIgNzcuMiAyNi42LTI2LjYtNTMuMS01Mi45IDI0LjQtMjQuNCA3Ny4yIDc3LjItNzUgNzUuMnptOTktMi4ybC0zNS4yLTM1LjIgMjQuMS0yNC40IDExLjEgMTEuMSA3Ny4yLTc3LjItNzcuMi03Ny4yLTI2LjUgMjYuNSA1My4xIDUyLjktMjQuNCAyNC40LTc3LjItNzcuMiA3NS03NUw0MzIuMiAyNTUgMzA2LjUgMzgwLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3OS4yIDIzMC40bDEwMi40IDEwMi40LTEwMi40IDEwMi40TDAgMjU2IDE3OS4yIDc2LjhsNDQuOCA0NC44LTI1LjYgMjUuNi0xOS4yLTE5LjItMTI4IDEyOCAxMjggMTI4IDUxLjUtNTEuNS03Ny4xLTc2LjUgMjUuNi0yNS42ek0zMzIuOCA3Ni44TDIzMC40IDE3OS4ybDEwMi40IDEwMi40IDI1LjYtMjUuNi03Ny4xLTc2LjUgNTEuNS01MS41IDEyOCAxMjgtMTI4IDEyOC0xOS4yLTE5LjItMjUuNiAyNS42IDQ0LjggNDQuOEw1MTIgMjU2IDMzMi44IDc2Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzkuNTUgMjM2LjA1TDI0NCA0MC40NWEyOC44NyAyOC44NyAwIDAgMC00MC44MSAwbC00MC42NiA0MC42MyA1MS41MiA1MS41MmMyNy4wNi05LjE0IDUyLjY4IDE2Ljc3IDQzLjM5IDQzLjY4bDQ5LjY2IDQ5LjY2YzM0LjIzLTExLjggNjEuMTggMzEgMzUuNDcgNTYuNjktMjYuNDkgMjYuNDktNzAuMjEtMi44Ny01Ni0zNy4zNEwyNDAuMjIgMTk5djEyMS44NWMyNS4zIDEyLjU0IDIyLjI2IDQxLjg1IDkuMDggNTVhMzQuMzQgMzQuMzQgMCAwIDEtNDguNTUgMGMtMTcuNTctMTcuNi0xMS4wNy00Ni45MSAxMS4yNS01NnYtMTIzYy0yMC44LTguNTEtMjQuNi0zMC43NC0xOC42NC00NUwxNDIuNTcgMTAxIDguNDUgMjM1LjE0YTI4Ljg2IDI4Ljg2IDAgMCAwIDAgNDAuODFsMTk1LjYxIDE5NS42YTI4Ljg2IDI4Ljg2IDAgMCAwIDQwLjggMGwxOTQuNjktMTk0LjY5YTI4Ljg2IDI4Ljg2IDAgMCAwIDAtNDAuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDAuNTkgMzM0LjI0YzQ4LjU3IDMuMzEgNTguOTUgMi4xMSA1OC45NSAxMS45NCAwIDIwLTY1LjU1IDIwLjA2LTY1LjU1IDEuNTIuMDEtNS4wOSAzLjI5LTkuNCA2LjYtMTMuNDZ6bTI3Ljk1LTExNi42NGMtMzIuMjkgMC0zMy43NSA0NC40Ny0uNzUgNDQuNDcgMzIuNTEgMCAzMS43MS00NC40Ny43NS00NC40N3pNNDQ4IDgwdjM1MmE0OCA0OCAwIDAgMS00OCA0OEg0OGE0OCA0OCAwIDAgMS00OC00OFY4MGE0OCA0OCAwIDAgMSA0OC00OGgzNTJhNDggNDggMCAwIDEgNDggNDh6bS0yMjcgNjkuMzFjMCAxNC40OSA4LjM4IDIyLjg4IDIyLjg2IDIyLjg4IDE0Ljc0IDAgMjMuMTMtOC4zOSAyMy4xMy0yMi44OFMyNTguNjIgMTI3IDI0My44OCAxMjdjLTE0LjQ4IDAtMjIuODggNy44NC0yMi44OCAyMi4zMXpNMTk5LjE4IDE5NWgtNDkuNTVjLTI1LTYuNTUtODEuNTYtNC44NS04MS41NiA0Ni43NSAwIDE4LjggOS40IDMyIDIxLjg1IDM4LjExQzc0LjIzIDI5NC4yMyA2Ni44IDMwMSA2Ni44IDMxMC42YzAgNi44NyAyLjc5IDEzLjIyIDExLjE4IDE2Ljc2LTguOSA4LjQtMTQgMTQuNDgtMTQgMjUuOTJDNjQgMzczLjM1IDgxLjUzIDM4NSAxMjcuNTIgMzg1YzQ0LjIyIDAgNjkuODctMTYuNTEgNjkuODctNDUuNzMgMC0zNi42Ny0yOC4yMy0zNS4zMi05NC43Ny0zOS4zOGw4LjM4LTEzLjQzYzE3IDQuNzQgNzQuMTkgNi4yMyA3NC4xOS00Mi40MyAwLTExLjY5LTQuODMtMTkuODItOS40LTI1LjY3bDIzLjM4LTEuNzh6bTg0LjM0IDEwOS44NGwtMTMtMS43OGMtMy44Mi0uNTEtNC4wNy0xLTQuMDctNS4wOVYxOTIuNTJoLTUyLjZsLTIuNzkgMjAuNTdjMTUuNzUgNS41NSAxNyA0Ljg2IDE3IDEwLjE3VjI5OGMwIDUuNjItLjMxIDQuNTgtMTcgNi44N3YyMC4wNmg3Mi40MnpNMzg0IDMxNWwtNi44Ny0yMi4zN2MtNDAuOTMgMTUuMzctMzcuODUtMTIuNDEtMzcuODUtMTYuNzN2LTYwLjcyaDM3Ljg1di0yNS40MWgtMzUuODJjLTIuODcgMC0yIDIuNTItMi0zOC42M2gtMjQuMThjLTIuNzkgMjcuNy0xMS42OCAzOC44OC0zNCA0MS40MnYyMi42MmMyMC40NyAwIDE5LjgyLS44NSAxOS44MiAyLjU0djY2LjU3YzAgMjguNzIgMTEuNDMgNDAuOTEgNDEuNjcgNDAuOTEgMTQuNDUgMCAzMC40NS00LjgzIDQxLjM4LTEwLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYuMjkgMTU4LjM5SDEzN0M5NyAxNDcuOSA2LjUxIDE1MC42MyA2LjUxIDIzMy4xOGMwIDMwLjA5IDE1IDUxLjIzIDM1IDYxLTI1LjEgMjMtMzcgMzMuODUtMzcgNDkuMjEgMCAxMSA0LjQ3IDIxLjE0IDE3Ljg5IDI2LjgxQzguMTMgMzgzLjYxIDAgMzkzLjM1IDAgNDExLjY1YzAgMzIuMTEgMjguMDUgNTAuODIgMTAxLjYzIDUwLjgyIDcwLjc1IDAgMTExLjc5LTI2LjQyIDExMS43OS03My4xOCAwLTU4LjY2LTQ1LjE2LTU2LjUtMTUxLjYzLTYzbDEzLjQzLTIxLjU1YzI3LjI3IDcuNTggMTE4LjcgMTAgMTE4LjctNjcuODkgMC0xOC43LTcuNzMtMzEuNzEtMTUtNDEuMDdsMzcuNDEtMi44NHptLTYzLjQyIDI0MS45YzAgMzIuMDYtMTA0Ljg5IDMyLjEtMTA0Ljg5IDIuNDMgMC04LjE0IDUuMjctMTUgMTAuNTctMjEuNTQgNzcuNzEgNS4zIDk0LjMyIDMuMzcgOTQuMzIgMTkuMTF6bS01MC44MS0xMzQuNThjLTUyLjggMC01MC40Ni03MS4xNiAxLjItNzEuMTYgNDkuNTQgMCA1MC44MiA3MS4xNi0xLjIgNzEuMTZ6bTEzMy4zIDEwMC41MXYtMzIuMWMyNi43NS0zLjY2IDI3LjI0LTIgMjcuMjQtMTFWMjAzLjYxYzAtOC41LTIuMDUtNy4zOC0yNy4yNC0xNi4yNmw0LjQ3LTMyLjkySDMyNHYxNjguNzFjMCA2LjUxLjQgNy4zMiA2LjUxIDguMTRsMjAuNzMgMi44NHYzMi4xem01Mi40NS0yNDQuMzFjLTIzLjE3IDAtMzYuNTktMTMuNDMtMzYuNTktMzYuNjFzMTMuNDItMzUuNzcgMzYuNTktMzUuNzdjMjMuNTggMCAzNyAxMi42MiAzNyAzNS43N3MtMTMuNDIgMzYuNjEtMzcgMzYuNjF6TTUxMiAzNTAuNDZjLTE3LjQ5IDguNTMtNDMuMSAxNi4yNi02Ni4yOCAxNi4yNi00OC4zOCAwLTY2LjY3LTE5LjUtNjYuNjctNjUuNDZWMTk0Ljc1YzAtNS40MiAxLjA1LTQuMDYtMzEuNzEtNC4wNlYxNTQuNWMzNS43OC00LjA3IDUwLTIyIDU0LjQ3LTY2LjI3aDM4LjYzYzAgNjUuODMtMS4zNCA2MS44MSAzLjI2IDYxLjgxSDUwMXY0MC42NWgtNjAuNTZ2OTcuMTVjMCA2LjkyLTQuOTIgNTEuNDEgNjAuNTcgMjYuODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdGh1YkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODYuMSAzMjguN2MwIDIwLjktMTAuOSA1NS4xLTM2LjcgNTUuMXMtMzYuNy0zNC4yLTM2LjctNTUuMSAxMC45LTU1LjEgMzYuNy01NS4xIDM2LjcgMzQuMiAzNi43IDU1LjF6TTQ4MCAyNzguMmMwIDMxLjktMy4yIDY1LjctMTcuNSA5NS0zNy45IDc2LjYtMTQyLjEgNzQuOC0yMTYuNyA3NC44LTc1LjggMC0xODYuMiAyLjctMjI1LjYtNzQuOC0xNC42LTI5LTIwLjItNjMuMS0yMC4yLTk1IDAtNDEuOSAxMy45LTgxLjUgNDEuNS0xMTMuNi01LjItMTUuOC03LjctMzIuNC03LjctNDguOCAwLTIxLjUgNC45LTMyLjMgMTQuNi01MS44IDQ1LjMgMCA3NC4zIDkgMTA4LjggMzYgMjktNi45IDU4LjgtMTAgODguNy0xMCAyNyAwIDU0LjIgMi45IDgwLjQgOS4yIDM0LTI2LjcgNjMtMzUuMiAxMDcuOC0zNS4yIDkuOCAxOS41IDE0LjYgMzAuMyAxNC42IDUxLjggMCAxNi40LTIuNiAzMi43LTcuNyA0OC4yIDI3LjUgMzIuNCAzOSA3Mi4zIDM5IDExNC4yem0tNjQuMyA1MC41YzAtNDMuOS0yNi43LTgyLjYtNzMuNS04Mi42LTE4LjkgMC0zNyAzLjQtNTYgNi0xNC45IDIuMy0yOS44IDMuMi00NS4xIDMuMi0xNS4yIDAtMzAuMS0uOS00NS4xLTMuMi0xOC43LTIuNi0zNy02LTU2LTYtNDYuOCAwLTczLjUgMzguNy03My41IDgyLjYgMCA4Ny44IDgwLjQgMTAxLjMgMTUwLjQgMTAxLjNoNDguMmM3MC4zIDAgMTUwLjYtMTMuNCAxNTAuNi0xMDEuM3ptLTgyLjYtNTUuMWMtMjUuOCAwLTM2LjcgMzQuMi0zNi43IDU1LjFzMTAuOSA1NS4xIDM2LjcgNTUuMSAzNi43LTM0LjIgMzYuNy01NS4xLTEwLjktNTUuMS0zNi43LTU1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdGh1YlNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yNzcuMyA0MTUuN2MtOC40IDEuNS0xMS41LTMuNy0xMS41LTggMC01LjQuMi0zMyAuMi01NS4zIDAtMTUuNi01LjItMjUuNS0xMS4zLTMwLjcgMzctNC4xIDc2LTkuMiA3Ni03My4xIDAtMTguMi02LjUtMjcuMy0xNy4xLTM5IDEuNy00LjMgNy40LTIyLTEuNy00NS0xMy45LTQuMy00NS43IDE3LjktNDUuNyAxNy45LTEzLjItMy43LTI3LjUtNS42LTQxLjYtNS42LTE0LjEgMC0yOC40IDEuOS00MS42IDUuNiAwIDAtMzEuOC0yMi4yLTQ1LjctMTcuOS05LjEgMjIuOS0zLjUgNDAuNi0xLjcgNDUtMTAuNiAxMS43LTE1LjYgMjAuOC0xNS42IDM5IDAgNjMuNiAzNy4zIDY5IDc0LjMgNzMuMS00LjggNC4zLTkuMSAxMS43LTEwLjYgMjIuMy05LjUgNC4zLTMzLjggMTEuNy00OC4zLTEzLjktOS4xLTE1LjgtMjUuNS0xNy4xLTI1LjUtMTcuMS0xNi4yLS4yLTEuMSAxMC4yLTEuMSAxMC4yIDEwLjggNSAxOC40IDI0LjIgMTguNCAyNC4yIDkuNyAyOS43IDU2LjEgMTkuNyA1Ni4xIDE5LjcgMCAxMy45LjIgMzYuNS4yIDQwLjYgMCA0LjMtMyA5LjUtMTEuNSA4LTY2LTIyLjEtMTEyLjItODQuOS0xMTIuMi0xNTguMyAwLTkxLjggNzAuMi0xNjEuNSAxNjItMTYxLjVTMzg4IDE2NS42IDM4OCAyNTcuNGMuMSA3My40LTQ0LjcgMTM2LjMtMTEwLjcgMTU4LjN6bS05OC4xLTYxLjFjLTEuOS40LTMuNy0uNC0zLjktMS43LS4yLTEuNSAxLjEtMi44IDMtMy4yIDEuOS0uMiAzLjcuNiAzLjkgMS45LjMgMS4zLTEgMi42LTMgM3ptLTkuNS0uOWMwIDEuMy0xLjUgMi40LTMuNSAyLjQtMi4yLjItMy43LS45LTMuNy0yLjQgMC0xLjMgMS41LTIuNCAzLjUtMi40IDEuOS0uMiAzLjcuOSAzLjcgMi40em0tMTMuNy0xLjFjLS40IDEuMy0yLjQgMS45LTQuMSAxLjMtMS45LS40LTMuMi0xLjktMi44LTMuMi40LTEuMyAyLjQtMS45IDQuMS0xLjUgMiAuNiAzLjMgMi4xIDIuOCAzLjR6bS0xMi4zLTUuNGMtLjkgMS4xLTIuOC45LTQuMy0uNi0xLjUtMS4zLTEuOS0zLjItLjktNC4xLjktMS4xIDIuOC0uOSA0LjMuNiAxLjMgMS4zIDEuOCAzLjMuOSA0LjF6bS05LjEtOS4xYy0uOS42LTIuNiAwLTMuNy0xLjVzLTEuMS0zLjIgMC0zLjljMS4xLS45IDIuOC0uMiAzLjcgMS4zIDEuMSAxLjUgMS4xIDMuMyAwIDQuMXptLTYuNS05LjdjLS45LjktMi40LjQtMy41LS42LTEuMS0xLjMtMS4zLTIuOC0uNC0zLjUuOS0uOSAyLjQtLjQgMy41LjYgMS4xIDEuMyAxLjMgMi44LjQgMy41em0tNi43LTcuNGMtLjQuOS0xLjcgMS4xLTIuOC40LTEuMy0uNi0xLjktMS43LTEuNS0yLjYuNC0uNiAxLjUtLjkgMi44LS40IDEuMy43IDEuOSAxLjggMS41IDIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0aHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2NS45IDM5Ny40YzAgMi0yLjMgMy42LTUuMiAzLjYtMy4zLjMtNS42LTEuMy01LjYtMy42IDAtMiAyLjMtMy42IDUuMi0zLjYgMy0uMyA1LjYgMS4zIDUuNiAzLjZ6bS0zMS4xLTQuNWMtLjcgMiAxLjMgNC4zIDQuMyA0LjkgMi42IDEgNS42IDAgNi4yLTJzLTEuMy00LjMtNC4zLTUuMmMtMi42LS43LTUuNS4zLTYuMiAyLjN6bTQ0LjItMS43Yy0yLjkuNy00LjkgMi42LTQuNiA0LjkuMyAyIDIuOSAzLjMgNS45IDIuNiAyLjktLjcgNC45LTIuNiA0LjYtNC42LS4zLTEuOS0zLTMuMi01LjktMi45ek0yNDQuOCA4QzEwNi4xIDggMCAxMTMuMyAwIDI1MmMwIDExMC45IDY5LjggMjA1LjggMTY5LjUgMjM5LjIgMTIuOCAyLjMgMTcuMy01LjYgMTcuMy0xMi4xIDAtNi4yLS4zLTQwLjQtLjMtNjEuNCAwIDAtNzAgMTUtODQuNy0yOS44IDAgMC0xMS40LTI5LjEtMjcuOC0zNi42IDAgMC0yMi45LTE1LjcgMS42LTE1LjQgMCAwIDI0LjkgMiAzOC42IDI1LjggMjEuOSAzOC42IDU4LjYgMjcuNSA3Mi45IDIwLjkgMi4zLTE2IDguOC0yNy4xIDE2LTMzLjctNTUuOS02LjItMTEyLjMtMTQuMy0xMTIuMy0xMTAuNSAwLTI3LjUgNy42LTQxLjMgMjMuNi01OC45LTIuNi02LjUtMTEuMS0zMy4zIDIuNi02Ny45IDIwLjktNi41IDY5IDI3IDY5IDI3IDIwLTUuNiA0MS41LTguNSA2Mi44LTguNXM0Mi44IDIuOSA2Mi44IDguNWMwIDAgNDguMS0zMy42IDY5LTI3IDEzLjcgMzQuNyA1LjIgNjEuNCAyLjYgNjcuOSAxNiAxNy43IDI1LjggMzEuNSAyNS44IDU4LjkgMCA5Ni41LTU4LjkgMTA0LjItMTE0LjggMTEwLjUgOS4yIDcuOSAxNyAyMi45IDE3IDQ2LjQgMCAzMy43LS4zIDc1LjQtLjMgODMuNiAwIDYuNSA0LjYgMTQuNCAxNy4zIDEyLjFDNDI4LjIgNDU3LjggNDk2IDM2Mi45IDQ5NiAyNTIgNDk2IDExMy4zIDM4My41IDggMjQ0LjggOHpNOTcuMiAzNTIuOWMtMS4zIDEtMSAzLjMuNyA1LjIgMS42IDEuNiAzLjkgMi4zIDUuMiAxIDEuMy0xIDEtMy4zLS43LTUuMi0xLjYtMS42LTMuOS0yLjMtNS4yLTF6bS0xMC44LTguMWMtLjcgMS4zLjMgMi45IDIuMyAzLjkgMS42IDEgMy42LjcgNC4zLS43LjctMS4zLS4zLTIuOS0yLjMtMy45LTItLjYtMy42LS4zLTQuMy43em0zMi40IDM1LjZjLTEuNiAxLjMtMSA0LjMgMS4zIDYuMiAyLjMgMi4zIDUuMiAyLjYgNi41IDEgMS4zLTEuMy43LTQuMy0xLjMtNi4yLTIuMi0yLjMtNS4yLTIuNi02LjUtMXptLTExLjQtMTQuN2MtMS42IDEtMS42IDMuNiAwIDUuOSAxLjYgMi4zIDQuMyAzLjMgNS42IDIuMyAxLjYtMS4zIDEuNi0zLjkgMC02LjItMS40LTIuMy00LTMuMy01LjYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0a3Jha2VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1OTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2NS43IDExOC4xYy0yLjMtNi4xLTkuMy05LjItMTUuMy02LjYtNS43IDIuNC04LjUgOC45LTYuMyAxNC42IDEwLjkgMjkgMTYuOSA2MC41IDE2LjkgOTMuMyAwIDEzNC42LTEwMC4zIDI0NS43LTIzMC4yIDI2Mi43VjM1OC40YzcuOS0xLjUgMTUuNS0zLjYgMjMtNi4ydjEwNGMxMDYuNy0yNS45IDE4NS45LTEyMi4xIDE4NS45LTIzNi44IDAtOTEuOC01MC44LTE3MS44LTEyNS44LTIxMy4zLTUuNy0zLjItMTMtLjktMTUuOSA1LTIuNyA1LjUtLjYgMTIuMiA0LjcgMTUuMSA2Ny45IDM3LjYgMTEzLjkgMTEwIDExMy45IDE5My4yIDAgOTMuMy01Ny45IDE3My4xLTEzOS44IDIwNS40di05Mi4yYzE0LjItNC41IDI0LjktMTcuNyAyNC45LTMzLjUgMC0xMy4xLTYuOC0yNC40LTE3LjMtMzAuNSA4LjMtNzkuNSA0NC41LTU4LjYgNDQuNS04My45VjE3MGMwLTM4LTg3LjktMTYxLjgtMTI5LTE2NC43LTIuNS0uMi01LS4yLTcuNiAwQzI1MS4xIDguMyAxNjMuMiAxMzIgMTYzLjIgMTcwdjE0LjhjMCAyNS4zIDM2LjMgNC4zIDQ0LjUgODMuOS0xMC42IDYuMS0xNy4zIDE3LjQtMTcuMyAzMC41IDAgMTUuOCAxMC42IDI5IDI0LjggMzMuNXY5Mi4yYy04MS45LTMyLjItMTM5LjgtMTEyLTEzOS44LTIwNS40IDAtODMuMSA0Ni0xNTUuNSAxMTMuOS0xOTMuMiA1LjQtMyA3LjQtOS42IDQuNy0xNS4xLTIuOS01LjktMTAuMS04LjItMTUuOS01LTc1IDQxLjUtMTI1LjggMTIxLjUtMTI1LjggMjEzLjMgMCAxMTQuNyA3OS4yIDIxMC44IDE4NS45IDIzNi44di0xMDRjNy42IDIuNSAxNS4xIDQuNiAyMyA2LjJ2MTIzLjdDMTMxLjQgNDY1LjIgMzEgMzU0LjEgMzEgMjE5LjVjMC0zMi44IDYtNjQuMyAxNi45LTkzLjMgMi4yLTUuOC0uNi0xMi4yLTYuMy0xNC42LTYtMi42LTEzIC40LTE1LjMgNi42QzE0LjUgMTQ5LjcgOCAxODMuOCA4IDIxOS41YzAgMTU1LjEgMTIyLjYgMjgxLjYgMjc2LjMgMjg3LjhWMzYxLjRjNi44LjQgMTUgLjUgMjMuNCAwdjE0NS44QzQ2MS40IDUwMS4xIDU4NCAzNzQuNiA1ODQgMjE5LjVjMC0zNS43LTYuNS02OS44LTE4LjMtMTAxLjR6TTM2NS45IDI3NS41YzEzIDAgMjMuNyAxMC41IDIzLjcgMjMuNyAwIDEzLjEtMTAuNiAyMy43LTIzLjcgMjMuNy0xMyAwLTIzLjctMTAuNS0yMy43LTIzLjcgMC0xMy4xIDEwLjYtMjMuNyAyMy43LTIzLjd6bS0xMzkuOCA0Ny4zYy0xMy4yIDAtMjMuNy0xMC43LTIzLjctMjMuN3MxMC41LTIzLjcgMjMuNy0yMy43YzEzLjEgMCAyMy43IDEwLjYgMjMuNyAyMy43IDAgMTMtMTAuNSAyMy43LTIzLjcgMjMuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0bGFiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwNS4yIDI0LjljLTMuMS04LjktMTUuNy04LjktMTguOSAwTDI5LjggMTk5LjdoMTMyYy0uMSAwLTU2LjYtMTc0LjgtNTYuNi0xNzQuOHpNLjkgMjg3LjdjLTIuNiA4IC4zIDE2LjkgNy4xIDIybDI0Ny45IDE4NC0yMjYuMi0yOTR6bTE2MC44LTg4bDk0LjMgMjk0IDk0LjMtMjk0em0zNDkuNCA4OGwtMjguOC04OC0yMjYuMyAyOTQgMjQ3LjktMTg0YzYuOS01LjEgOS43LTE0IDcuMi0yMnpNNDI1LjcgMjQuOWMtMy4xLTguOS0xNS43LTguOS0xOC45IDBsLTU2LjYgMTc0LjhoMTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHaXR0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjYuNCAzMjIuNUgxNlYwaDUwLjR2MzIyLjV6TTE2Ni45IDc2LjFoLTUwLjRWNTEyaDUwLjRWNzYuMXptMTAwLjYgMGgtNTAuNFY1MTJoNTAuNFY3Ni4xek0zNjggNzZoLTUwLjR2MjQ3SDM2OFY3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xpZGVHIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNy4xIDIxMS4yYy0zLjUtMS40LTExLjYtMy44LTE1LjQtMy44LTM3LjEgMC02Mi4yIDE2LjgtOTMuNSAzNC41bC0uOS0uOWM3LTQ3LjMgMjMuNS05MS45IDIzLjUtMTQwLjRDMzIwLjggMjkuMSAyODIuNiAwIDIxMi40IDAgOTcuMyAwIDM5IDExMy43IDM5IDE5OC40IDM5IDI4Ni4zIDkwLjMgMzM1IDE3Ny42IDMzNWMxMiAwIDExLTEgMTEgMy44LTE2LjkgMTI4LjktOTAuOCAxMzMuMS05MC44IDk0LjYgMC0zOS4yIDQ1LTU4LjYgNDUuNS02MS0uMy0xMi4yLTQ3LTI3LjYtNTguOS0yNy42LTMzLjkuMS01Mi40IDUxLjItNTIuNCA3OS4zQzMyIDQ3NiA2NC44IDUxMiAxMTcuNSA1MTJjNzcuNCAwIDEzNC03Ny44IDE1MS40LTE0NS40IDE1LjEtNjAuNSAxMS4yLTYzLjMgMTkuNy02Ny42IDMyLjItMTYuMiA1Ny41LTI3IDkzLjgtMjcgMTcuOCAwIDMwLjUgMy43IDU4LjkgOC40IDIuOSAwIDYuNy0yLjkgNi43LTUuOCAwLTgtMzMuNC02MC41LTQwLjktNjMuNHptLTE3NS4zLTg0LjRjLTkuMyA0NC43LTE4LjYgODkuNi0yNy44IDEzNC4zLTIuMyAxMC4yLTEzLjMgNy44LTIyIDcuOC0zOC4zIDAtNDktNDEuOC00OS03My4xIDAtNDcgMTgtMTA5LjMgNjEuOC0xMzMuNCA3LTQuMSAxNC44LTYuNyAyMi42LTYuNyAxOC42IDAgMjAgMTMuMyAyMCAyOC43LS4xIDE0LjMtMi43IDI4LjUtNS42IDQyLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Mi44IDE0OC42YzAgOC44LTEuNiAxNy43LTMuNCAyNi40LTUuOCAyNy44LTExLjYgNTUuOC0xNy4zIDgzLjYtMS40IDYuMy04LjMgNC45LTEzLjcgNC45LTIzLjggMC0zMC41LTI2LTMwLjUtNDUuNSAwLTI5LjMgMTEuMi02OC4xIDM4LjUtODMuMSA0LjMtMi41IDkuMi00LjIgMTQuMS00LjIgMTEuNCAwIDEyLjMgOC4zIDEyLjMgMTcuOXpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNjQgMTg3YzAtNS4xLTIwLjgtMzcuNy0yNS41LTM5LjUtMi4yLS45LTcuMi0yLjMtOS42LTIuMy0yMy4xIDAtMzguNyAxMC41LTU4LjIgMjEuNWwtLjUtLjVjNC4zLTI5LjQgMTQuNi01Ny4yIDE0LjYtODcuNCAwLTQ0LjYtMjMuOC02Mi43LTY3LjUtNjIuNy03MS43IDAtMTA4IDcwLjgtMTA4IDEyMy41IDAgNTQuNyAzMiA4NSA4Ni4zIDg1IDcuNSAwIDYuOS0uNiA2LjkgMi4zLTEwLjUgODAuMy01Ni41IDgyLjktNTYuNSA1OC45IDAtMjQuNCAyOC0zNi41IDI4LjMtMzgtLjItNy42LTI5LjMtMTcuMi0zNi43LTE3LjItMjEuMSAwLTMyLjcgMzMtMzIuNyA1MC42IDAgMzIuMyAyMC40IDU0LjcgNTMuMyA1NC43IDQ4LjIgMCA4My40LTQ5LjcgOTQuMy05MS43IDkuNC0zNy43IDctMzkuNCAxMi4zLTQyLjEgMjAtMTAuMSAzNS44LTE2LjggNTguNC0xNi44IDExLjEgMCAxOSAyLjMgMzYuNyA1LjIgMS44LjEgNC4xLTEuNyA0LjEtMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb2ZvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQwMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI0IDMxOS44aC0xMy4ydjM0LjdjLTI0LjUgMjMuMS01Ni4zIDM1LjgtODkuOSAzNS44LTczLjIgMC0xMzIuNC02MC4yLTEzMi40LTEzNC40IDAtNzQuMSA1OS4yLTEzNC40IDEzMi40LTEzNC40IDM1LjMgMCA2OC42IDE0IDkzLjYgMzkuNGw2Mi4zLTYzLjNDMzM1IDU1LjMgMjc5LjcgMzIgMjIwLjcgMzIgOTggMzIgMCAxMzIuNiAwIDI1NmMwIDEyMi41IDk3IDIyNCAyMjAuNyAyMjQgNjMuMiAwIDEyNC41LTI2LjIgMTcxLTgyLjUtMi0yNy42LTEzLjQtNzcuNy02Ny43LTc3Ljd6bS0xMi4xLTExMi41SDIwNS42djg5SDMyNGMzMy41IDAgNjAuNSAxNS4xIDc2IDQxLjh2LTMwLjZjMC02NS4yLTQwLjQtMTAwLjItODguMS0xMDAuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29vZHJlYWRzRyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Mi42IDQwMy4zaDIuOGMxMi43IDAgMjUuNSAwIDM4LjIuMSAxLjYgMCAzLjEtLjQgMy42IDIuMSA3LjEgMzQuOSAzMCA1NC42IDYyLjkgNjMuOSAyNi45IDcuNiA1NC4xIDcuOCA4MS4zIDEuOCAzMy44LTcuNCA1Ni0yOC4zIDY4LTYwLjQgOC0yMS41IDEwLjctNDMuOCAxMS02Ni41LjEtNS44LjMtNDctLjItNTIuOGwtLjktLjNjLS44IDEuNS0xLjcgMi45LTIuNSA0LjQtMjIuMSA0My4xLTYxLjMgNjcuNC0xMDUuNCA2OS4xLTEwMyA0LTE2OS40LTU3LTE3Mi0xNzYuMi0uNS0yMy43IDEuOC00Ni45IDguMy02OS43QzU4LjMgNDcuNyAxMTIuMy42IDE5MS42IDBjNjEuMy0uNCAxMDEuNSAzOC43IDExNi4yIDcwLjMuNSAxLjEgMS4zIDIuMyAyLjQgMS45VjEwLjZoNDQuM2MwIDI4MC4zLjEgMzMyLjIuMSAzMzIuMi0uMSA3OC41LTI2LjcgMTQzLjctMTAzIDE2Mi4yLTY5LjUgMTYuOS0xNTkgNC44LTE5Ni01Ny4yLTgtMTMuNS0xMS44LTI4LjMtMTMtNDQuNXpNMTg4LjkgMzYuNWMtNTIuNS0uNS0xMDguNSA0MC43LTExNSAxMzMuOC00LjEgNTkgMTQuOCAxMjIuMiA3MS41IDE0OC42IDI3LjYgMTIuOSA3NC4zIDE1IDEwOC4zLTguNyA0Ny42LTMzLjIgNjIuNy05NyA1NC44LTE1NC05LjctNzEuMS00Ny44LTEyMC0xMTkuNi0xMTkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29vZHJlYWRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5OS45IDE5MS4yYzUuMSAzNy4zLTQuNyA3OS0zNS45IDEwMC43LTIyLjMgMTUuNS01Mi44IDE0LjEtNzAuOCA1LjctMzcuMS0xNy4zLTQ5LjUtNTguNi00Ni44LTk3LjIgNC4zLTYwLjkgNDAuOS04Ny45IDc1LjMtODcuNSA0Ni45LS4yIDcxLjggMzEuOCA3OC4yIDc4LjN6TTQ0OCA4OHYzMzZjMCAzMC45LTI1LjEgNTYtNTYgNTZINTZjLTMwLjkgMC01Ni0yNS4xLTU2LTU2Vjg4YzAtMzAuOSAyNS4xLTU2IDU2LTU2aDMzNmMzMC45IDAgNTYgMjUuMSA1NiA1NnpNMzMwIDMxMy4ycy0uMS0zNC0uMS0yMTcuM2gtMjl2NDAuM2MtLjguMy0xLjItLjUtMS42LTEuMi05LjYtMjAuNy0zNS45LTQ2LjMtNzYtNDYtNTEuOS40LTg3LjIgMzEuMi0xMDAuNiA3Ny44LTQuMyAxNC45LTUuOCAzMC4xLTUuNSA0NS42IDEuNyA3Ny45IDQ1LjEgMTE3LjggMTEyLjQgMTE1LjIgMjguOS0xLjEgNTQuNS0xNyA2OS00NS4yLjUtMSAxLjEtMS45IDEuNy0yLjkuMi4xLjQuMS42LjIuMyAzLjguMiAzMC43LjEgMzQuNS0uMiAxNC44LTIgMjkuNS03LjIgNDMuNS03LjggMjEtMjIuMyAzNC43LTQ0LjUgMzkuNS0xNy44IDMuOS0zNS42IDMuOC01My4yLTEuMi0yMS41LTYuMS0zNi41LTE5LTQxLjEtNDEuOC0uMy0xLjYtMS4zLTEuMy0yLjMtMS4zaC0yNi44Yy44IDEwLjYgMy4yIDIwLjMgOC41IDI5LjIgMjQuMiA0MC41IDgyLjcgNDguNSAxMjguMiAzNy40IDQ5LjktMTIuMyA2Ny4zLTU0LjkgNjcuNC0xMDYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29vZ2xlRHJpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM5IDMxNC45TDE3NS40IDMyaDE2MS4ybDE2My42IDI4Mi45SDMzOXptLTEzNy41IDIzLjZMMTIwLjkgNDgwaDMxMC41TDUxMiAzMzguNUgyMDEuNXpNMTU0LjEgNjcuNEwwIDMzOC41IDgwLjYgNDgwIDIzNyAyMDguOCAxNTQuMSA2Ny40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVQYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA1LjcyLDIxNXY0MS4yNWg1Ny4xYTQ5LjY2LDQ5LjY2LDAsMCwxLTIxLjE0LDMyLjZjLTkuNTQsNi41NS0yMS43MiwxMC4yOC0zNiwxMC4yOC0yNy42LDAtNTAuOTMtMTguOTEtNTkuMy00NC4yMmE2NS42MSw2NS42MSwwLDAsMSwwLTQxbDAsMGM4LjM3LTI1LjQ2LDMxLjctNDQuMzcsNTkuMy00NC4zN2E1Ni40Myw1Ni40MywwLDAsMSw0MC41MSwxNi4wOEwxNzYuNDcsMTU1YTEwMS4yNCwxMDEuMjQsMCwwLDAtNzAuNzUtMjcuODQsMTA1LjU1LDEwNS41NSwwLDAsMC05NC4zOCw1OS4xMSwxMDcuNjQsMTA3LjY0LDAsMCwwLDAsOTYuMTh2LjE1YTEwNS40MSwxMDUuNDEsMCwwLDAsOTQuMzgsNTljMjguNDcsMCw1Mi41NS05LjUzLDcwLTI1LjkxLDIwLTE4LjYxLDMxLjQxLTQ2LjE1LDMxLjQxLTc4LjkxQTEzMy43NiwxMzMuNzYsMCwwLDAsMjA1LjM4LDIxNVptMzg5LjQxLTRjLTEwLjEzLTkuMzgtMjMuOTMtMTQuMTQtNDEuMzktMTQuMTQtMjIuNDYsMC0zOS4zNCw4LjM0LTUwLjUsMjQuODZsMjAuODUsMTMuMjZxMTEuNDUtMTcsMzEuMjYtMTdhMzQuMDUsMzQuMDUsMCwwLDEsMjIuNzUsOC43OUEyOC4xNCwyOC4xNCwwLDAsMSw0ODcuNzksMjQ4djUuNTFjLTkuMS01LjA3LTIwLjU1LTcuNzUtMzQuNjQtNy43NS0xNi40NCwwLTI5LjY1LDMuODgtMzkuNDksMTEuNzdzLTE0LjgyLDE4LjMxLTE0LjgyLDMxLjU2YTM5Ljc0LDM5Ljc0LDAsMCwwLDEzLjk0LDMxLjI3YzkuMjUsOC4zNCwyMSwxMi41MSwzNC43OSwxMi41MSwxNi4yOSwwLDI5LjIxLTcuMywzOS0yMS44OWgxdjE3LjcyaDIyLjYxVjI1MEM1MTAuMjUsMjMzLjQ1LDUwNS4yNiwyMjAuMzQsNDk1LjEzLDIxMVpNNDc1LjksMzAwLjNhMzcuMzIsMzcuMzIsMCwwLDEtMjYuNTcsMTEuMTZBMjguNjEsMjguNjEsMCwwLDEsNDMxLDMwNS4yMWExOS40MSwxOS40MSwwLDAsMS03Ljc3LTE1LjYzYzAtNywzLjIyLTEyLjgxLDkuNTQtMTcuNDJzMTQuNTMtNywyNC4wNy03QzQ3MCwyNjUsNDgwLjMsMjY4LDQ4Ny42NCwyNzMuOTQsNDg3LjY0LDI4NC4wNyw0ODMuNjgsMjkyLjg1LDQ3NS45LDMwMC4zWm0tOTMuNjUtMTQyQTU1LjcxLDU1LjcxLDAsMCwwLDM0MS43NCwxNDJIMjc5LjA3VjMyOC43NEgzMDIuN1YyNTMuMWgzOWMxNiwwLDI5LjUtNS4zNiw0MC41MS0xNS45My44OC0uODksMS43Ni0xLjc5LDIuNjUtMi42OEE1NC40NSw1NC40NSwwLDAsMCwzODIuMjUsMTU4LjI2Wm0tMTYuNTgsNjIuMjNhMzAuNjUsMzAuNjUsMCwwLDEtMjMuMzQsOS42OEgzMDIuN1YxNjVoMzkuNjNhMzIsMzIsMCwwLDEsMjIuNiw5LjIzQTMzLjE4LDMzLjE4LDAsMCwxLDM2NS42NywyMjAuNDlaTTYxNC4zMSwyMDEsNTc3Ljc3LDI5Mi43aC0uNDVMNTM5LjksMjAxSDUxNC4yMUw1NjYsMzIwLjU1bC0yOS4zNSw2NC4zMkg1NjFMNjQwLDIwMVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29vZ2xlUGxheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjUuMyAyMzQuM0wxMDQuNiAxM2wyODAuOCAxNjEuMi02MC4xIDYwLjF6TTQ3IDBDMzQgNi44IDI1LjMgMTkuMiAyNS4zIDM1LjN2NDQxLjNjMCAxNi4xIDguNyAyOC41IDIxLjcgMzUuM2wyNTYuNi0yNTZMNDcgMHptNDI1LjIgMjI1LjZsLTU4LjktMzQuMS02NS43IDY0LjUgNjUuNyA2NC41IDYwLjEtMzQuMWMxOC0xNC4zIDE4LTQ2LjUtMS4yLTYwLjh6TTEwNC42IDQ5OWwyODAuOC0xNjEuMi02MC4xLTYwLjFMMTA0LjYgNDk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVQbHVzRyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODYuMDYxIDIyOC40OTZjMS44MzQgOS42OTIgMy4xNDMgMTkuMzg0IDMuMTQzIDMxLjk1NkMzODkuMjA0IDM3MC4yMDUgMzE1LjU5OSA0NDggMjA0LjggNDQ4Yy0xMDYuMDg0IDAtMTkyLTg1LjkxNS0xOTItMTkyczg1LjkxNi0xOTIgMTkyLTE5MmM1MS44NjQgMCA5NS4wODMgMTguODU5IDEyOC42MTEgNTAuMjkybC01Mi4xMjYgNTAuMDNjLTE0LjE0NS0xMy42MjEtMzkuMDI4LTI5LjU5OS03Ni40ODUtMjkuNTk5LTY1LjQ4NCAwLTExOC45MiA1NC4yMjEtMTE4LjkyIDEyMS4yNzcgMCA2Ny4wNTYgNTMuNDM2IDEyMS4yNzcgMTE4LjkyIDEyMS4yNzcgNzUuOTYxIDAgMTA0LjUxMy01NC43NDUgMTA4Ljk2NS04Mi43NzNIMjA0Ljh2LTY2LjAwOWgxODEuMjYxem0xODUuNDA2IDYuNDM3VjE3OS4yaC01Ni4wMDF2NTUuNzMzaC01NS43MzN2NTYuMDAxaDU1LjczM3Y1NS43MzNoNTYuMDAxdi01NS43MzNINjI3LjJ2LTU2LjAwMWgtNTUuNzMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVQbHVzU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE2NCAzNTZjLTU1LjMgMC0xMDAtNDQuNy0xMDAtMTAwczQ0LjctMTAwIDEwMC0xMDBjMjcgMCA0OS41IDkuOCA2NyAyNi4ybC0yNy4xIDI2LjFjLTcuNC03LjEtMjAuMy0xNS40LTM5LjgtMTUuNC0zNC4xIDAtNjEuOSAyOC4yLTYxLjkgNjMuMiAwIDM0LjkgMjcuOCA2My4yIDYxLjkgNjMuMiAzOS42IDAgNTQuNC0yOC41IDU2LjgtNDMuMUgxNjR2LTM0LjRoOTQuNGMxIDUgMS42IDEwLjEgMS42IDE2LjYgMCA1Ny4xLTM4LjMgOTcuNi05NiA5Ny42em0yMjAtODEuOGgtMjl2MjloLTI5LjJ2LTI5aC0yOVYyNDVoMjl2LTI5SDM1NXYyOWgyOXYyOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Niw4QzExOS4xLDgsOCwxMTkuMSw4LDI1NlMxMTkuMSw1MDQsMjU2LDUwNCw1MDQsMzkyLjksNTA0LDI1NiwzOTIuOSw4LDI1Niw4Wk0xODUuMywzODBhMTI0LDEyNCwwLDAsMSwwLTI0OGMzMS4zLDAsNjAuMSwxMSw4MywzMi4zbC0zMy42LDMyLjZjLTEzLjItMTIuOS0zMS4zLTE5LjEtNDkuNC0xOS4xLTQyLjksMC03Ny4yLDM1LjUtNzcuMiw3OC4xUzE0Mi4zLDMzNCwxODUuMywzMzRjMzIuNiwwLDY0LjktMTkuMSw3MC4xLTUzLjNIMTg1LjNWMjM4LjFIMzAyLjJhMTA5LjIsMTA5LjIsMCwwLDEsMS45LDIwLjdjMCw3MC44LTQ3LjUsMTIxLjItMTE4LjgsMTIxLjJaTTQxNS41LDI3My44djM1LjVIMzgwVjI3My44SDM0NC41VjIzOC4zSDM4MFYyMDIuOGgzNS41djM1LjVoMzUuMnYzNS41WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVXYWxsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU2LjggMTI2LjhjMzcuNiA2MC42IDY0LjIgMTEzLjEgODQuMyAxNjIuNS04LjMgMzMuOC0xOC44IDY2LjUtMzEuMyA5OC4zLTEzLjItNTIuMy0yNi41LTEwMS4zLTU2LTE0OC41IDYuNS0zNi40IDIuMy03My42IDMtMTEyLjN6TTEwOS4zIDIwMEgxNi4xYy02LjUgMC0xMC41IDcuNS02LjUgMTIuN0M1MS44IDI2NyA4MS4zIDMzMC41IDEwMS4zIDQwMGgxMDMuNWMtMTYuMi02OS43LTM4LjctMTMzLjctODIuNS0xOTMuNS0zLTQtOC02LjUtMTMtNi41em00Ny44LTg4YzY4LjUgMTA4IDEzMCAyMzQuNSAxMzguMiAzNjhINDA5Yy0xMi0xMzgtNjguNC0yNjUtMTQzLjItMzY4SDE1Ny4xem0yNTEuOC02OC41Yy0xLjgtNi44LTguMi0xMS41LTE1LjItMTEuNWgtODguM2MtNS4zIDAtOSA1LTcuOCAxMC4zIDEzLjIgNDYuNSAyMi4zIDk1LjUgMjYuNSAxNDYgNDguMiA4Ni4yIDc5LjcgMTc4LjMgOTAuNiAyNzAuOCAxNS44LTYwLjUgMjUuMy0xMzMuNSAyNS4zLTIwMyAwLTczLjYtMTIuMS0xNDUuMS0zMS4xLTIxMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4IDI2MS44QzQ4OCA0MDMuMyAzOTEuMSA1MDQgMjQ4IDUwNCAxMTAuOCA1MDQgMCAzOTMuMiAwIDI1NlMxMTAuOCA4IDI0OCA4YzY2LjggMCAxMjMgMjQuNSAxNjYuMyA2NC45bC02Ny41IDY0LjlDMjU4LjUgNTIuNiA5NC4zIDExNi42IDk0LjMgMjU2YzAgODYuNSA2OS4xIDE1Ni42IDE1My43IDE1Ni42IDk4LjIgMCAxMzUtNzAuNCAxNDAuOC0xMDYuOUgyNDh2LTg1LjNoMjM2LjFjMi4zIDEyLjcgMy45IDI0LjkgMy45IDQxLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyYXRpcGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4xIDggMCAxMTkuMSAwIDI1NnMxMTEuMSAyNDggMjQ4IDI0OCAyNDgtMTExLjEgMjQ4LTI0OFMzODQuOSA4IDI0OCA4em0xMTQuNiAyMjYuNGwtMTEzIDE1Mi43LTExMi43LTE1Mi43Yy04LjctMTEuOS0xOS4xLTUwLjQgMTMuNi03MiAyOC4xLTE4LjEgNTQuNi00LjIgNjguNSAxMS45IDE1LjkgMTcuOSA0Ni42IDE2LjkgNjEuNyAwIDEzLjktMTYuMSA0MC40LTMwIDY4LjEtMTEuOSAzMi45IDIxLjYgMjIuNiA2MCAxMy44IDcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmF2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMS4xIDIxMmM0LjQgNC40IDQuNCAxMS45IDAgMTYuM2wtOS43IDkuN2MtNC40IDQuNy0xMS45IDQuNy0xNi42IDBsLTEwLjUtMTAuNWMtNC40LTQuNy00LjQtMTEuOSAwLTE2LjZsOS43LTkuN2M0LjQtNC40IDExLjktNC40IDE2LjYgMGwxMC41IDEwLjh6bS0zMC4yLTE5LjdjMy0zIDMtNy44IDAtMTAuNS0yLjgtMy03LjUtMy0xMC41IDAtMi44IDIuOC0yLjggNy41IDAgMTAuNSAzLjEgMi44IDcuOCAyLjggMTAuNSAwem0tMjYgNS4zYy0zIDIuOC0zIDcuNSAwIDEwLjIgMi44IDMgNy41IDMgMTAuNSAwIDIuOC0yLjggMi44LTcuNSAwLTEwLjItMy0zLTcuNy0zLTEwLjUgMHptNzIuNS0xMy4zYy0xOS45LTE0LjQtMzMuOC00My4yLTExLjktNjguMSAyMS42LTI0LjkgNDAuNy0xNy4yIDU5LjguOCAxMS45IDExLjMgMjkuMyAyNC45IDE3LjIgNDguMi0xMi41IDIzLjUtNDUuMSAzMy4yLTY1LjEgMTkuMXptNDcuNy00NC41Yy04LjktMTAtMjMuMyA2LjktMTUuNSAxNi4xIDcuNCA5IDMyLjEgMi40IDE1LjUtMTYuMXpNNTA0IDI1NmMwIDEzNy0xMTEgMjQ4LTI0OCAyNDhTOCAzOTMgOCAyNTYgMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4em0tNjYuMiA0Mi42YzIuNS0xNi4xLTIwLjItMTYuNi0yNS4yLTI1LjctMTMuNi0yNC4xLTI3LjctMzYuOC01NC41LTMwLjQgMTEuNi04IDIzLjUtNi4xIDIzLjUtNi4xLjMtNi40IDAtMTMtOS40LTI0LjkgMy45LTEyLjUuMy0yMi40LjMtMjIuNCAxNS41LTguNiAyNi44LTI0LjQgMjkuMS00My4yIDMuNi0zMS0xOC44LTU5LjItNDkuOC02Mi44LTIyLjEtMi41LTQzLjcgNy43LTU0LjMgMjUuNy0yMy4yIDQwLjEgMS40IDcwLjkgMjIuNCA4MS40LTE0LjQtMS40LTM0LjMtMTEuOS00MC4xLTM0LjMtNi42LTI1LjcgMi44LTQ5LjggOC45LTYxLjQgMCAwLTQuNC01LjgtOC04LjkgMCAwLTEzLjggMC0yNC42IDUuMyAxMS45LTE1LjIgMjUuMi0xNC40IDI1LjItMTQuNCAwLTYuNC0uNi0xNC45LTMuNi0yMS42LTUuNC0xMS0yMy44LTEyLjktMzEuNyAyLjguMS0uMi4zLS40LjQtLjUtNSAxMS45LTEuMSA1NS45IDE2LjkgODcuMi0yLjUgMS40LTkuMSA2LjEtMTMgMTAtMjEuNiA5LjctNTYuMiA2MC4zLTU2LjIgNjAuMy0yOC4yIDEwLjgtNzcuMiA1MC45LTcwLjYgNzkuNy4zIDMgMS40IDUuNSAzIDcuNS0yLjggMi4yLTUuNSA1LTguMyA4LjMtMTEuOSAxMy44LTUuMyAzNS4yIDE3LjcgMjQuNCAxNS44LTcuMiAyOS42LTIwLjIgMzYuMy0zMC40IDAgMC01LjUtNS0xNi4zLTQuNCAyNy43LTYuNiAzNC4zLTkuNCA0Ni4yLTkuMSA4IDMuOSA4LTM0LjMgOC0zNC4zIDAtMTQuNy0yLjItMzEtMTEuMS00MS41IDEyLjUgMTIuMiAyOS4xIDMyLjcgMjggNjAuNi0uOCAxOC4zLTE1LjIgMjMtMTUuMiAyMy05LjEgMTYuNi00My4yIDY1LjktMzAuNCAxMDYgMCAwLTkuNy0xNC45LTEwLjItMjIuMS0xNy40IDE5LjQtNDYuNSA1Mi4zLTI0LjYgNjQuNSAyNi42IDE0LjcgMTA4LjgtODguNiAxMjYuMi0xNDIuMyAzNC42LTIwLjggNTUuNC00Ny4zIDYzLjktNjUgMjIgNDMuNSA5NS4zIDk0LjUgMTAxLjEgNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaXBmaXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMi41IDMwMS40YzAtNzMuOCAxMDUuMS0xMjIuNSAxMDUuMS0yMDMgMC00Ny4xLTM0LTg4LTM5LjEtOTAuNC40IDMuMy42IDYuNy42IDEwQzE3OS4xIDExMC4xIDMyIDE3MS45IDMyIDI4Ni42YzAgNDkuOCAzMi4yIDc5LjIgNjYuNSAxMDguMyA2NS4xIDQ2LjcgNzguMSA3MS40IDc4LjEgODYuNiAwIDEwLjEtNC44IDE3LTQuOCAyMi4zIDEzLjEtMTYuNyAxNy40LTMxLjkgMTcuNS00Ni40IDAtMjkuNi0yMS43LTU2LjMtNDQuMi04Ni41LTE2LTIyLjMtMzIuNi00Mi42LTMyLjYtNjkuNXptMjA1LjMtMzljLTEyLjEtNjYuOC03OC0xMjQuNC05NC43LTEzMC45bDQgNy4yYzIuNCA1LjEgMy40IDEwLjkgMy40IDE3LjEgMCA0NC43LTU0LjIgMTExLjItNTYuNiAxMTYuNy0yLjIgNS4xLTMuMiAxMC41LTMuMiAxNS44IDAgMjAuMSAxNS4yIDQyLjEgMTcuOSA0Mi4xIDIuNCAwIDU2LjYtNTUuNCA1OC4xLTg3LjcgNi40IDExLjcgOS4xIDIyLjYgOS4xIDMzLjQgMCA0MS4yLTQxLjggOTYuOS00MS44IDk2LjkgMCAxMS42IDMxLjkgNTMuMiAzNS41IDUzLjIgMSAwIDIuMi0xLjQgMy4yLTIuNCAzNy45LTM5LjMgNjcuMy04NSA2Ny4zLTEzNi44IDAtOC0uNy0xNi4yLTIuMi0yNC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcnVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MS4zIDE4OS4zYy0xLjEgMTAgNS4yIDE5LjEgNS4yIDE5LjEuNy03LjUgMi4yLTEyLjggNC0xNi42LjQgMTAuMyAzLjIgMjMuNSAxMi44IDM0LjEgNi45IDcuNiAzNS42IDIzLjMgNTQuOSA2LjEgMSAyLjQgMi4xIDUuMyAzIDguNSAyLjkgMTAuMy0yLjcgMjUuMy0yLjcgMjUuM3MxNS4xLTE3LjEgMTMuOS0zMi41YzEwLjgtLjUgMjEuNC04LjQgMjEuMS0xOS41IDAgMC0xOC45IDEwLjQtMzUuNS04LjgtOS43LTExLjItNDAuOS00Mi04My4xLTMxLjggNC4zIDEgOC45IDIuNCAxMy41IDQuMWgtLjFjLTQuMiAyLTYuNSA3LjEtNyAxMnptMjguMy0xLjhjMTkuNSAxMSAzNy40IDI1LjcgNDQuOSAzNy01LjcgMy4zLTIxLjcgMTAuNC0zOC0xLjctMTAuMy03LjYtOS44LTI2LjItNi45LTM1LjN6bTE0Mi4xIDQ1LjhjLTEuMiAxNS41IDEzLjkgMzIuNSAxMy45IDMyLjVzLTUuNi0xNS0yLjctMjUuM2MuOS0zLjIgMi02IDMtOC41IDE5LjMgMTcuMyA0OCAxLjUgNTQuOC02LjEgOS42LTEwLjYgMTIuMy0yMy44IDEyLjgtMzQuMSAxLjggMy44IDMuNCA5LjEgNCAxNi42IDAgMCA2LjQtOS4xIDUuMi0xOS4xLS42LTUtMi45LTEwLTctMTEuOGgtLjFjNC42LTEuOCA5LjItMy4yIDEzLjUtNC4xLTQyLjMtMTAuMi03My40IDIwLjYtODMuMSAzMS44LTE2LjcgMTkuMi0zNS41IDguOC0zNS41IDguOC0uMiAxMC45IDEwLjQgMTguOSAyMS4yIDE5LjN6bTYyLjctNDUuOGMzIDkuMSAzLjQgMjcuNy03IDM1LjQtMTYuMyAxMi4xLTMyLjIgNS0zNy45IDEuNiA3LjUtMTEuNCAyNS40LTI2IDQ0LjktMzd6TTE2MCA0MTguNWgtMjkuNGMtNS41IDAtOC4yIDEuNi05LjUgMi45LTEuOSAyLTIuMiA0LjctLjkgOC4xIDMuNSA5LjEgMTEuNCAxNi41IDEzLjcgMTguNiAzLjEgMi43IDcuNSA0LjMgMTEuOCA0LjMgNC40IDAgOC4zLTEuNyAxMS00LjYgNy41LTguMiAxMS45LTE3LjEgMTMtMTkuOC42LTEuNSAxLjMtNC41LS45LTYuOC0xLjgtMS44LTQuNy0yLjctOC44LTIuN3ptMTg5LjItMTAxLjJjLTIuNCAxNy45LTEzIDMzLjgtMjQuNiA0My43LTMuMS0yMi43LTMuNy01NS41LTMuNy02Mi40IDAtMTQuNyA5LjUtMjQuNSAxMi4yLTI2LjEgMi41LTEuNSA1LjQtMyA4LjMtNC42IDE4LTkuNiA0MC40LTIxLjYgNDAuNC00My43IDAtMTYuMi05LjMtMjMuMi0xNS40LTI3LjgtLjgtLjYtMS41LTEuMS0yLjItMS43LTIuMS0xLjctMy43LTMtNC4zLTQuNC00LjQtOS44LTMuNi0zNC4yLTEuNy0zNy42LjYtLjYgMTYuNy0yMC45IDExLjgtMzkuMi0yLTcuNC02LjktMTMuMy0xNC4xLTE3LTUuMy0yLjctMTEuOS00LjItMTkuNS00LjUtLjEtMi0uNS0zLjktLjktNS45LS42LTIuNi0xLjEtNS4zLS45LTguMS40LTQuNy44LTkgMi4yLTExLjMgOC40LTEzLjMgMjguOC0xNy42IDI5LTE3LjZsMTIuMy0yLjQtOC4xLTkuNWMtLjEtLjItMTcuMy0xNy41LTQ2LjMtMTcuNS03LjkgMC0xNiAxLjMtMjQuMSAzLjktMjQuMiA3LjgtNDIuOSAzMC41LTQ5LjQgMzkuMy0zLjEtMS02LjMtMS45LTkuNi0yLjctNC4yLTE1LjggOS0zOC41IDktMzguNXMtMTMuNi0zLTMzLjcgMTUuMmMtMi42LTYuNS04LjEtMjAuNS0xLjgtMzcuMkMxODQuNiAxMC4xIDE3Ny4yIDI2IDE3NSA0MC40Yy03LjYtNS40LTYuNy0yMy4xLTcuMi0yNy42LTcuNS45LTI5LjIgMjEuOS0yOC4yIDQ4LjMtMiAuNS0zLjkgMS4xLTUuOSAxLjctNi41LTguOC0yNS4xLTMxLjUtNDkuNC0zOS4zLTcuOS0yLjItMTYtMy41LTIzLjktMy41LTI5IDAtNDYuMSAxNy4zLTQ2LjMgMTcuNUw2IDQ2LjlsMTIuMyAyLjRjLjIgMCAyMC42IDQuMyAyOSAxNy42IDEuNCAyLjIgMS44IDYuNiAyLjIgMTEuMy4yIDIuOC0uNCA1LjUtLjkgOC4xLS40IDEuOS0uOCAzLjktLjkgNS45LTcuNy4zLTE0LjIgMS44LTE5LjUgNC41LTcuMiAzLjctMTIuMSA5LjYtMTQuMSAxNy01IDE4LjIgMTEuMiAzOC41IDExLjggMzkuMiAxLjkgMy40IDIuNyAyNy44LTEuNyAzNy42LS42IDEuNC0yLjIgMi43LTQuMyA0LjQtLjcuNS0xLjQgMS4xLTIuMiAxLjctNi4xIDQuNi0xNS40IDExLjctMTUuNCAyNy44IDAgMjIuMSAyMi40IDM0LjEgNDAuNCA0My43IDMgMS42IDUuOCAzLjEgOC4zIDQuNiAyLjcgMS42IDEyLjIgMTEuNCAxMi4yIDI2LjEgMCA2LjktLjYgMzkuNy0zLjcgNjIuNC0xMS42LTkuOS0yMi4yLTI1LjktMjQuNi00My44IDAgMC0yOS4yIDIyLjYtMjAuNiA3MC44IDUuMiAyOS41IDIzLjIgNDYuMSA0NyA1NC43IDguOCAxOS4xIDI5LjQgNDUuNyA2Ny4zIDQ5LjZDMTQzIDUwNC4zIDE2MyA1MTIgMTkyLjIgNTEyaC4yYzI5LjEgMCA0OS4xLTcuNyA2My42LTE5LjUgMzcuOS0zLjkgNTguNS0zMC41IDY3LjMtNDkuNiAyMy44LTguNyA0MS43LTI1LjIgNDctNTQuNyA4LjItNDguNC0yMS4xLTcwLjktMjEuMS03MC45ek0zMDUuNyAzNy43YzUuNi0xLjggMTEuNi0yLjcgMTcuNy0yLjcgMTEgMCAxOS45IDMgMjQuNyA1LTMuMSAxLjQtNi40IDMuMi05LjcgNS4zLTIuNC0uNC01LjYtLjgtOS4yLS44LTEwLjUgMC0yMC41IDMuMS0yOC43IDguOS0xMi4zIDguNy0xOCAxNi45LTIwLjcgMjIuNC0yLjItMS4zLTQuNS0yLjUtNy4xLTMuNy0xLjYtLjgtMy4xLTEuNS00LjctMi4yIDYuMS05LjEgMTkuOS0yNi41IDM3LjctMzIuMnptMjEgMTguMmMtLjggMS0xLjYgMi4xLTIuMyAzLjItMy4zIDUuMi0zLjkgMTEuNi00LjQgMTcuOC0uNSA2LjQtMS4xIDEyLjUtNC40IDE3LTQuMi44LTguMSAxLjctMTEuNSAyLjctMi4zLTMuMS01LjYtNy0xMC41LTExLjIgMS40LTQuOCA1LjUtMTYuMSAxMy41LTIyLjUgNS42LTQuMyAxMi4yLTYuNyAxOS42LTd6TTQ1LjYgNDUuM2MtMy4zLTIuMi02LjYtNC05LjctNS4zIDQuOC0yIDEzLjctNSAyNC43LTUgNi4xIDAgMTIgLjkgMTcuNyAyLjcgMTcuOCA1LjggMzEuNiAyMy4yIDM3LjcgMzIuMS0xLjYuNy0zLjIgMS40LTQuOCAyLjItMi41IDEuMi00LjkgMi41LTcuMSAzLjctMi42LTUuNC04LjMtMTMuNy0yMC43LTIyLjQtOC4zLTUuOC0xOC4yLTguOS0yOC44LTguOS0zLjQuMS02LjYuNS05IC45em00NC43IDQwLjFjLTQuOSA0LjItOC4zIDgtMTAuNSAxMS4yLTMuNC0uOS03LjMtMS45LTExLjUtMi43QzY1IDg5LjUgNjQuNSA4My40IDY0IDc3Yy0uNS02LjItMS4xLTEyLjYtNC40LTE3LjgtLjctMS4xLTEuNS0yLjItMi4zLTMuMiA3LjQuMyAxNCAyLjYgMTkuNSA3IDggNi4zIDEyLjEgMTcuNiAxMy41IDIyLjR6TTU4LjEgMjU5LjljLTIuNy0xLjYtNS42LTMuMS04LjQtNC42LTE0LjktOC0zMC4yLTE2LjMtMzAuMi0zMC41IDAtMTEuMSA0LjMtMTQuNiA4LjktMTguMmwuNS0uNGMuNy0uNiAxLjQtMS4yIDIuMi0xLjgtLjkgNy4yLTEuOSAxMy4zLTIuNyAxNC45IDAgMCAxMi4xLTE1IDE1LjctNDQuMyAxLjQtMTEuNS0xLjEtMzQuMy01LjEtNDMgLjIgNC45IDAgOS44LS4zIDE0LjQtLjQtLjgtLjgtMS42LTEuMy0yLjItMy4yLTQtMTEuOC0xNy41LTkuNC0yNi42LjktMy41IDMuMS02IDYuNy03LjggMy44LTEuOSA4LjgtMi45IDE1LjEtMi45IDEyLjMgMCAyNS45IDMuNyAzMi45IDYgMjUuMSA4IDU1LjQgMzAuOSA2NC4xIDM3LjcuMi4yLjQuMy40LjNsNS42IDMuOS0zLjUtNS44Yy0uMi0uMy0xOS4xLTMxLjQtNTMuMi00Ni41IDItMi45IDcuNC04LjEgMjEuNi0xNS4xIDIxLjQtMTAuNSA0Ni41LTE1LjggNzQuMy0xNS44IDI3LjkgMCA1Mi45IDUuMyA3NC4zIDE1LjggMTQuMiA2LjkgMTkuNiAxMi4yIDIxLjYgMTUuMS0zNCAxNS4xLTUyLjkgNDYuMi01My4xIDQ2LjVsLTMuNSA1LjggNS42LTMuOXMuMi0uMS40LS4zYzguNy02LjggMzktMjkuOCA2NC4xLTM3LjcgNy0yLjIgMjAuNi02IDMyLjktNiA2LjMgMCAxMS4zIDEgMTUuMSAyLjkgMy41IDEuOCA1LjcgNC40IDYuNyA3LjggMi41IDkuMS02LjEgMjIuNi05LjQgMjYuNi0uNS42LS45IDEuMy0xLjMgMi4yLS4zLTQuNi0uNS05LjUtLjMtMTQuNC00IDguOC02LjUgMzEuNS01LjEgNDMgMy42IDI5LjMgMTUuNyA0NC4zIDE1LjcgNDQuMy0uOC0xLjYtMS44LTcuNy0yLjctMTQuOS43LjYgMS41IDEuMiAyLjIgMS44bC41LjRjNC42IDMuNyA4LjkgNy4xIDguOSAxOC4yIDAgMTQuMi0xNS40IDIyLjUtMzAuMiAzMC41LTIuOSAxLjUtNS43IDMuMS04LjQgNC42LTguNyA1LTE4IDE2LjctMTkuMSAzNC4yLS45IDE0LjYuOSA0OS45IDMuNCA3NS45LTEyLjQgNC44LTI2LjcgNi40LTM5LjcgNi44LTItNC4xLTMuOS04LjUtNS41LTEzLjEtLjctMi0xOS42LTUxLjEtMjYuNC02Mi4yIDUuNSAzOSAxNy41IDczLjcgMjMuNSA4OS42LTMuNS0uNS03LjMtLjctMTEuNy0uN2gtMTE3Yy00LjQgMC04LjMuMy0xMS43LjcgNi0xNS45IDE4LjEtNTAuNiAyMy41LTg5LjYtNi44IDExLjItMjUuNyA2MC4zLTI2LjQgNjIuMi0xLjYgNC42LTMuNSA5LTUuNSAxMy4xLTEzLS40LTI3LjItMi0zOS43LTYuOCAyLjUtMjYgNC4zLTYxLjIgMy40LTc1LjktLjktMTcuNC0xMC4zLTI5LjItMTktMzQuMnpNMzQuOCA0MDQuNmMtMTIuMS0yMC04LjctNTQuMS0zLjctNTkuMSAxMC45IDM0LjQgNDcuMiA0NC4zIDc0LjQgNDUuNC0yLjcgNC4yLTUuMiA3LjYtNyAxMGwtMS40IDEuNGMtNy4yIDcuOC04LjYgMTguNS00LjEgMzEuOC0yMi43LS4xLTQ2LjMtOS44LTU4LjItMjkuNXptNDUuNyA0My41YzYgMS4xIDEyLjIgMS45IDE4LjYgMi40IDMuNSA4IDcuNCAxNS45IDEyLjMgMjMuMS0xNC40LTUuOS0yNC40LTE2LTMwLjktMjUuNXpNMTkyIDQ5OC4yYy02MC42LS4xLTc4LjMtNDUuOC04NC45LTY0LjctMy43LTEwLjUtMy40LTE4LjIuOS0yMy4xIDIuOS0zLjMgOS41LTcuMiAyNC42LTcuMmgxMTguOGMxNS4xIDAgMjEuOCAzLjkgMjQuNiA3LjIgNC4yIDQuOCA0LjUgMTIuNi45IDIzLjEtNi42IDE4LjgtMjQuMyA2NC42LTg0LjkgNjQuN3ptODAuNi0yNC42YzQuOS03LjIgOC44LTE1LjEgMTIuMy0yMy4xIDYuNC0uNSAxMi42LTEuMyAxOC42LTIuNC02LjUgOS41LTE2LjUgMTkuNi0zMC45IDI1LjV6bTc2LjYtNjljLTEyIDE5LjctMzUuNiAyOS4zLTU4LjEgMjkuNyA0LjUtMTMuMyAzLjEtMjQuMS00LjEtMzEuOC0uNC0uNS0uOS0xLTEuNC0xLjUtMS44LTIuNC00LjMtNS44LTctMTAgMjcuMi0xLjIgNjMuNS0xMSA3NC40LTQ1LjQgNSA1IDguNCAzOS4xLTMuOCA1OXpNMTkxLjkgMTg3LjdoLjJjMTIuNy0uMSAyNy4yLTE3LjggMjcuMi0xNy44LTkuOSA2LTE4LjggOC4xLTI3LjMgOC4zLTguNS0uMi0xNy40LTIuMy0yNy4zLTguMyAwIDAgMTQuNSAxNy42IDI3LjIgMTcuOHptNjEuNyAyMzAuN2gtMjkuNGMtNC4yIDAtNy4yLjktOC45IDIuNy0yLjIgMi4zLTEuNSA1LjItLjkgNi43IDEgMi42IDUuNSAxMS4zIDEzIDE5LjMgMi43IDIuOSA2LjYgNC41IDExIDQuNXM4LjctMS42IDExLjgtNC4yYzIuMy0yIDEwLjItOS4yIDEzLjctMTguMSAxLjMtMy4zIDEtNi0uOS03LjktMS4zLTEuMy00LTIuOS05LjQtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3VpbGRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDMuNDI3LDY0SDQuNTcxYzAsMTAzLjI2LDIyLjE5MiwxODAuMDYsNDMuNDE4LDIyMi4zNThDMTEyLjA0Niw0MTQuMTM1LDIyNCw0NDgsMjI1LjI1Niw0NDhhMzEyLjgyNCwzMTIuODI0LDAsMCwwLDE0MC41NS0xMDMuNDc3YzI1LjkwNy0zMy45MjMsNTMuMS04Ny4xOSw2NS45MTYtMTQ1Ljc2MUgxNzEuODMzYzQuMTQsMzYuNDI5LDIyLjE3Nyw2Ny45NDYsNDUuMSw4Ni45NDRoODguNTg5Yy0xNy4wMTIsMjguMjEzLTQ4LjE4Niw1NC40LTgwLjQ1Niw2OS40ODItMzEuMjMyLTEzLjI1OS02OS4wOS00Ni41NDQtOTYuNTQ4LTk4LjM2Mi0yNi43MjYtNTMuODMzLTI3LjA5Mi0xMDUuODgzLTI3LjA5Mi0xMDUuODgzSDQzNy41NzNBNjI1LjkxLDYyNS45MSwwLDAsMCw0NDMuNDI3LDY0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHdWxwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOS44IDM5MS4xbC0xNC4xIDI0LjYtNC42IDgwLjJjMCA4LjktMjguMyAxNi4xLTYzLjEgMTYuMXMtNjMuMS03LjItNjMuMS0xNi4xbC01LjgtNzkuNC0xNC45LTI1LjRjNDEuMiAxNy4zIDEyNiAxNi43IDE2NS42IDB6bS0xOTYtMjUzLjNsMTMuNiAxMjUuNWM1LjktMjAgMjAuOC00NyA0MC01NS4yIDYuMy0yLjcgMTIuNy0yLjcgMTguNy45IDUuMiAzIDkuNiA5LjMgMTAuMSAxMS44IDEuMiA2LjUtMiA5LjEtNC41IDkuMS0zIDAtNS4zLTQuNi02LjgtNy4zLTQuMS03LjMtMTAuMy03LjYtMTYuOS0yLjgtNi45IDUtMTIuOSAxMy40LTE3LjEgMjAuNy01LjEgOC44LTkuNCAxOC41LTEyIDI4LjItMS41IDUuNi0yLjkgMTQuNi0uNiAxOS45IDEgMi4yIDIuNSAzLjYgNC45IDMuNiA1IDAgMTIuMy02LjYgMTUuOC0xMC4xIDQuNS00LjUgMTAuMy0xMS41IDEyLjUtMTZsNS4yLTE1LjVjMi42LTYuOCA5LjktNS42IDkuOSAwIDAgMTAuMi0zLjcgMTMuNi0xMCAzNC43LTUuOCAxOS41LTcuNiAyNS44LTcuNiAyNS44LS43IDIuOC0zLjQgNy41LTYuMyA3LjUtMS4yIDAtMi4xLS40LTIuNi0xLjItMS0xLjQtLjktNS4zLS44LTYuMy4yLTMuMiA2LjMtMjIuMiA3LjMtMjUuMi0yIDIuMi00LjEgNC40LTYuNCA2LjYtNS40IDUuMS0xNC4xIDExLjgtMjEuNSAxMS44LTMuNCAwLTUuNi0uOS03LjctMi40bDcuNiA3OS42YzIgNSAzOS4yIDE3LjEgODguMiAxNy4xIDQ5LjEgMCA4Ni4zLTEyLjIgODguMi0xNy4xbDEwLjktOTQuNmMtNS43IDUuMi0xMi4zIDExLjYtMTkuNiAxNC44LTUuNCAyLjMtMTcuNCAzLjgtMTcuNC01LjcgMC01LjIgOS4xLTE0LjggMTQuNC0yMS41IDEuNC0xLjcgNC43LTUuOSA0LjctOC4xIDAtMi45LTYtMi4yLTExLjcgMi41LTMuMiAyLjctNi4yIDYuMy04LjcgOS43LTQuMyA2LTYuNiAxMS4yLTguNSAxNS41LTYuMiAxNC4yLTQuMSA4LjYtOS4xIDIyLTUgMTMuMy00LjIgMTEuOC01LjIgMTQtLjkgMS45LTIuMiAzLjUtNCA0LjUtMS45IDEtNC41LjktNi4xLS4zLS45LS42LTEuMy0xLjktMS4zLTMuNyAwLS45LjEtMS44LjMtMi43IDEuNS02LjEgNy44LTE4LjEgMTUtMzQuMyAxLjYtMy43IDEtMi42LjgtMi4zLTYuMiA2LTEwLjkgOC45LTE0LjQgMTAuNS01LjggMi42LTEzIDIuNi0xNC41LTQuMS0uMS0uNC0uMS0uOC0uMi0xLjItMTEuOCA5LjItMjQuMyAxMS43LTIwLTguMS00LjYgOC4yLTEyLjYgMTQuOS0yMi40IDE0LjktNC4xIDAtNy4xLTEuNC04LjYtNS4xLTIuMy01LjUgMS4zLTE0LjkgNC42LTIzLjggMS43LTQuNSA0LTkuOSA3LjEtMTYuMiAxLjYtMy40IDQuMi01LjQgNy42LTQuNS42LjIgMS4xLjQgMS42LjcgMi42IDEuOCAxLjYgNC41LjMgNy4yLTMuOCA3LjUtNy4xIDEzLTkuMyAyMC44LS45IDMuMy0yIDkgMS41IDkgMi40IDAgNC43LS44IDYuOS0yLjQgNC42LTMuNCA4LjMtOC41IDExLjEtMTMuNSAyLTMuNiA0LjQtOC4zIDUuNi0xMi4zLjUtMS43IDEuMS0zLjMgMS44LTQuOCAxLjEtMi41IDIuNi01LjEgNS4yLTUuMSAxLjMgMCAyLjQuNSAzLjIgMS41IDEuNyAyLjIgMS4zIDQuNS40IDYuOS0yIDUuNi00LjcgMTAuNi02LjkgMTYuNy0xLjMgMy41LTIuNyA4LTIuNyAxMS43IDAgMy40IDMuNyAyLjYgNi44IDEuMiAyLjQtMS4xIDQuOC0yLjggNi44LTQuNSAxLjItNC45LjktMy44IDI2LjQtNjguMiAxLjMtMy4zIDMuNy00LjcgNi4xLTQuNyAxLjIgMCAyLjIuNCAzLjIgMS4xIDEuNyAxLjMgMS43IDQuMSAxIDYuMi0uNyAxLjktLjYgMS4zLTQuNSAxMC41LTUuMiAxMi4xLTguNiAyMC44LTEzLjIgMzEuOS0xLjkgNC42LTcuNyAxOC45LTguNyAyMi4zLS42IDIuMi0xLjMgNS44IDEgNS44IDUuNCAwIDE5LjMtMTMuMSAyMy4xLTE3IC4yLS4zLjUtLjQuOS0uNi42LTEuOSAxLjItMy43IDEuNy01LjUgMS40LTMuOCAyLjctOC4yIDUuMy0xMS4zLjgtMSAxLjctMS42IDIuNy0xLjYgMi44IDAgNC4yIDEuMiA0LjIgNCAwIDEuMS0uNyA1LjEtMS4xIDYuMiAxLjQtMS41IDIuOS0zIDQuNS00LjUgMTUtMTMuOSAyNS43LTYuOCAyNS43LjIgMCA3LjQtOC45IDE3LjctMTMuOCAyMy40LTEuNiAxLjktNC45IDUuNC01IDYuNCAwIDEuMy45IDEuOCAyLjIgMS44IDIgMCA2LjQtMy41IDgtNC43IDUtMy45IDExLjgtOS45IDE2LjYtMTQuMWwxNC44LTEzNi44Yy0zMC41IDE3LjEtMTk3LjYgMTcuMi0yMjguMy4yem0yMjkuNy04LjVjMCAyMS0yMzEuMiAyMS0yMzEuMiAwIDAtOC44IDUxLjgtMTUuOSAxMTUuNi0xNS45IDkgMCAxNy44LjEgMjYuMy40bDEyLjYtNDguN0wyMjguMS42YzEuNC0xLjQgNS44LS4yIDkuOSAzLjVzNi42IDcuOSA1LjMgOS4zbC0uMS4xTDE4NS45IDc0bC0xMCA0MC43YzM5LjkgMi42IDY3LjYgOC4xIDY3LjYgMTQuNnptLTY5LjQgNC42YzAtLjgtLjktMS41LTIuNS0yLjFsLS4yLjhjMCAxLjMtNSAyLjQtMTEuMSAyLjRzLTExLjEtMS4xLTExLjEtMi40YzAtLjEgMC0uMi4xLS4zbC4yLS43Yy0xLjguNi0zIDEuNC0zIDIuMyAwIDIuMSA2LjIgMy43IDEzLjcgMy43IDcuNy4xIDEzLjktMS42IDEzLjktMy43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYWNrZXJOZXdzU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTIxLjIgMjI5LjJIMjFjLjEtLjEuMi0uMy4zLS40IDAgLjEgMCAuMy0uMS40em0yMTggNTMuOVYzODRoLTMxLjRWMjgxLjNMMTI4IDEyOGgzNy4zYzUyLjUgOTguMyA0OS4yIDEwMS4yIDU5LjMgMTI1LjYgMTIuMy0yNyA1LjgtMjQuNCA2MC42LTEyNS42SDMyMGwtODAuOCAxNTUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFja2VyTmV3cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMydjQ0OGg0NDhWMzJIMHptMjEuMiAxOTcuMkgyMWMuMS0uMS4yLS4zLjMtLjQgMCAuMSAwIC4zLS4xLjR6bTIxOCA1My45VjM4NGgtMzEuNFYyODEuM0wxMjggMTI4aDM3LjNjNTIuNSA5OC4zIDQ5LjIgMTAxLjIgNTkuMyAxMjUuNiAxMi4zLTI3IDUuOC0yNC40IDYwLjYtMTI1LjZIMzIwbC04MC44IDE1NS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYWNrZXJyYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3Ny41IDEyOEM0NjMgMTAzLjA1IDI4NS4xMyAwIDI1Ni4xNiAwUzQ5LjI1IDEwMi43OSAzNC44NCAxMjhzLTE0LjQ5IDIzMC44IDAgMjU2IDE5Mi4zOCAxMjggMjIxLjMyIDEyOFM0NjMgNDA5LjA4IDQ3Ny40OSAzODRzMTQuNTEtMjMxIC4wMS0yNTZ6TTMxNi4xMyA0MTQuMjJjLTQgMC00MC45MS0zNS43Ny0zOC0zOC42OS44Ny0uODcgNi4yNi0xLjQ4IDE3LjU1LTEuODMgMC0yNi4yMy41OS02OC41OS45NC04Ni4zMiAwLTItLjQ0LTMuNDMtLjQ0LTUuODVoLTc5LjkzYzAgNy4xLS40NiAzNi4yIDEuMzcgNzIuODguMjMgNC41NC0xLjU4IDYtNS43NCA1Ljk0LTEwLjEzIDAtMjAuMjctLjExLTMwLjQxLS4wOC00LjEgMC01Ljg3LTEuNTMtNS43NC02LjExLjkyLTMzLjQ0IDMtODQtLjE1LTIxMi42N3YtMy4xN2MtOS42Ny0uMzUtMTYuMzgtMS0xNy4yNi0xLjg0LTIuOTItMi45MiAzNC41NC0zOC42OSAzOC40OS0zOC42OXM0MS4xNyAzNS43OCAzOC4yNyAzOC42OWMtLjg3Ljg3LTcuOSAxLjQ5LTE2Ljc3IDEuODR2My4xNmMtMi40MiAyNS43NS0yIDc5LjU5LTIuNjMgMTA1LjM5aDgwLjI2YzAtNC41NS4zOS0zNC43NC0xLjItODMuNjQtLjEtMy4zOS45NS01LjE3IDQuMjEtNS4yIDExLjA3LS4wOCAyMi4xNS0uMTMgMzMuMjMtLjA2IDMuNDYgMCA0LjU3IDEuNzIgNC41IDUuMzhDMzMzIDM1NC42NCAzMzYgMzQxLjI5IDMzNiAzNzMuNjljOC44Ny4zNSAxNi44MiAxIDE3LjY5IDEuODQgMi44OCAyLjkxLTMzLjYyIDM4LjY5LTM3LjU4IDM4LjY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIaXBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1MS42IDE1Ny42YzAtMS45LS45LTIuOC0yLjgtMi44aC00MC45Yy0xLjYgMC0yLjcgMS40LTIuNyAyLjh2MjAxLjhjMCAxLjQgMS4xIDIuOCAyLjcgMi44aDQwLjljMS45IDAgMi44LS45IDIuOC0yLjh6TTE1Ni41IDE2OGMtMTYuMS0xMS44LTM2LjMtMTcuOS02MC4zLTE4LTE4LjEtLjEtMzQuNiAzLjctNDkuOCAxMS40VjgwLjJjMC0xLjgtLjktMi43LTIuOC0yLjdIMi43Yy0xLjggMC0yLjcuOS0yLjcgMi43djI3OS4yYzAgMS45LjkgMi44IDIuNyAyLjhoNDFjMS45IDAgMi44LS45IDIuOC0yLjhWMjIzLjNjMC0uOC0yLjgtMjcgNDUuOC0yNyA0OC41IDAgNDUuOCAyNi4xIDQ1LjggMjd2MTIyLjZjMCA5IDcuMyAxNi4zIDE2LjQgMTYuM2gyNy4zYzEuOCAwIDIuNy0uOSAyLjctMi44VjIyMy4zYzAtMjMuNC05LjMtNDEuOC0yOC01NS4zem00NzguNCAxMTAuMWMtNi44LTE1LjctMTguNC0yNy0zNC45LTM0LjFsLTU3LjYtMjUuM2MtOC42LTMuNi05LjItMTEuMi0yLjYtMTYuMSA3LjQtNS41IDQ0LjMtMTMuOSA4NCA2LjggMS43IDEgNC0uMyA0LTIuNHYtNDQuN2MwLTEuMy0uNi0yLjEtMS45LTIuNi0xNy43LTYuNi0zNi4xLTkuOS01NS4xLTkuOS0yNi41IDAtNDUuMyA1LjgtNTguNSAxNS40LS41LjQtMjguNCAyMC0yMi43IDUzLjcgMy40IDE5LjYgMTUuOCAzNC4yIDM3LjIgNDMuNmw1My42IDIzLjVjMTEuNiA1LjEgMTUuMiAxMy4zIDEyLjIgMjEuMi0zLjcgOS4xLTEzLjIgMTMuNi0zNi41IDEzLjYtMjQuMyAwLTQ0LjctOC45LTU4LjQtMTkuMS0yLjEtMS40LTQuNC4yLTQuNCAyLjN2MzQuNGMwIDEwLjQgNC45IDE3LjMgMTQuNiAyMC43IDE1LjYgNS41IDMxLjYgOC4yIDQ4LjIgOC4yIDEyLjcgMCAyNS44LTEuMiAzNi4zLTQuMy43LS4zIDM2LTguOSA0NS42LTQ1LjggMy41LTEzLjUgMi40LTI2LjUtMy4xLTM5LjF6TTM3Ni4yIDE0OS44Yy0zMS43IDAtMTA0LjIgMjAuMS0xMDQuMiAxMDMuNXYxODMuNWMwIC44LjYgMi43IDIuNyAyLjdoNDAuOWMxLjkgMCAyLjgtLjkgMi44LTIuN1YzNDhjMTYuNSAxMi43IDM1LjggMTkuMSA1Ny43IDE5LjEgNjAuNSAwIDEwOC43LTQ4LjUgMTA4LjctMTA4LjcuMS02MC4zLTQ4LjItMTA4LjYtMTA4LjYtMTA4LjZ6bTAgMTcwLjljLTE3LjIgMC0zMS45LTYuMS00NC0xOC4yLTEyLjItMTIuMi0xOC4yLTI2LjgtMTguMi00NCAwLTM0LjUgMjcuNi02Mi4yIDYyLjItNjIuMiAzNC41IDAgNjIuMiAyNy42IDYyLjIgNjIuMi4xIDM0LjMtMjcuMyA2Mi4yLTYyLjIgNjIuMnpNMjI4LjMgNzIuNWMtMTUuOSAwLTI4LjggMTIuOS0yOC45IDI4LjkgMCAxNS42IDEyLjcgMjguOSAyOC45IDI4LjlzMjguOS0xMy4xIDI4LjktMjguOWMwLTE2LjItMTMtMjguOS0yOC45LTI4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpcmVBSGVscGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0My4xIDBINzEuOUM2Ny45IDM3LjMgMzcuNCA2Ny44IDAgNzEuN3YzNzEuNWMzNy40IDQuOSA2NiAzMi40IDcxLjkgNjguOGgzNzIuMmMzLTM2LjQgMzIuNS02NS44IDY3LjktNjkuOFY3MS43Yy0zNi40LTUuOS02NS0zNS4zLTY4LjktNzEuN3ptLTM3IDQwNC45Yy0zNi4zIDAtMTguOC0yLTU1LjEtMi0zNS44IDAtMjEgMi01Ni4xIDItNS45IDAtNC45LTguMiAwLTkuOCAyMi44LTcuNiAyMi45LTEwLjIgMjQuNi0xMi44IDEwLjQtMTUuNiA1LjktODMgNS45LTExMyAwLTUuMy02LjQtMTIuOC0xMy44LTEyLjhIMjAwLjRjLTcuNCAwLTEzLjggNy41LTEzLjggMTIuOCAwIDMwLTQuNSA5Ny40IDUuOSAxMTMgMS43IDIuNSAxLjggNS4yIDI0LjYgMTIuOCA0LjkgMS42IDYgOS44IDAgOS44LTM1LjEgMC0yMC4zLTItNTYuMS0yLTM2LjMgMC0xOC44IDItNTUuMSAyLTcuOSAwLTUuOC0xMC44IDAtMTAuOCAxMC4yLTMuNCAxMy41LTMuNSAyMS43LTEzLjggNy43LTEyLjkgNy45LTQ0LjQgNy45LTEyNy44VjE1MS4zYzAtMjIuMi0xMi4yLTI4LjMtMjguNi0zMi40LTguOC0yLjItNC0xMS44IDEtMTEuOCAzNi41IDAgMjAuNiAyIDU3LjEgMiAzMi43IDAgMTYuNS0yIDQ5LjItMiAzLjMgMCA4LjUgOC4zIDEgMTAuOC00LjkgMS42LTI3LjYgMy43LTI3LjYgMzkuMyAwIDQ1LjYtLjIgNTUuOCAxIDY4LjggMCAxLjMgMi4zIDEyLjggMTIuOCAxMi44aDEwOS4yYzEwLjUgMCAxMi44LTExLjUgMTIuOC0xMi44IDEuMi0xMyAxLTIzLjIgMS02OC44IDAtMzUuNi0yMi43LTM3LjctMjcuNi0zOS4zLTcuNS0yLjUtMi4zLTEwLjggMS0xMC44IDMyLjcgMCAxNi41IDIgNDkuMiAyIDM2LjUgMCAyMC42LTIgNTcuMS0yIDQuOSAwIDkuOSA5LjYgMSAxMS44LTE2LjQgNC4xLTI4LjYgMTAuMy0yOC42IDMyLjR2MTAxLjJjMCA4My40LjEgMTE0LjkgNy45IDEyNy44IDguMiAxMC4yIDExLjQgMTAuNCAyMS43IDEzLjggNS44IDAgNy44IDEwLjggMCAxMC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2MC4zNTMsMjU0Ljg3OCwxMzEuNTM4LDMzLjFhMi4yMDgsMi4yMDgsMCwwLDAtMy44MjkuMDA5TC4zLDI1NC44ODdBMi4yMzQsMi4yMzQsMCwwLDAsLjMsMjU3LjEyMkwxMjkuMTE2LDQ3OC45YTIuMjA4LDIuMjA4LDAsMCwwLDMuODMtLjAwOUwyNjAuMzU4LDI1Ny4xMTNBMi4yMzksMi4yMzksMCwwLDAsMjYwLjM1MywyNTQuODc4Wm0zOS4wNzgtMjUuNzEzYTIuMTksMi4xOSwwLDAsMCwxLjksMS4xMTFoNjYuNTA5YTIuMjI2LDIuMjI2LDAsMCwwLDEuOS0zLjM0MUwyNTkuMTE1LDMzLjExMWEyLjE4NywyLjE4NywwLDAsMC0xLjktMS4xMTFIMTkwLjcwN2EyLjIyNiwyLjIyNiwwLDAsMC0xLjksMy4zNDFaTTUxMS43LDI1NC44ODYsMzg0LjksMzMuMTEyQTIuMiwyLjIsMCwwLDAsMzgyLjk5LDMyaC02Ni42YTIuMjI2LDIuMjI2LDAsMCwwLTEuOTA2LDMuMzRMNDQwLjY1MiwyNTYsMzE0LjQ4MSw0NzYuNjZhMi4yMjYsMi4yMjYsMCwwLDAsMS45MDYsMy4zNGg2Ni42YTIuMiwyLjIsMCwwLDAsMS45MDYtMS4xMTJMNTExLjcsMjU3LjExNEEyLjI0MywyLjI0MywwLDAsMCw1MTEuNywyNTQuODg2Wk0zNjYuMDE2LDI4NC45MTdIMjk5LjUwOGEyLjE4NywyLjE4NywwLDAsMC0xLjksMS4xMTFsLTEwOC44LDE5MC42MzFhMi4yMjYsMi4yMjYsMCwwLDAsMS45LDMuMzQxaDY2LjUwOWEyLjE4NywyLjE4NywwLDAsMCwxLjktMS4xMTFsMTA4LjgtMTkwLjYzMUEyLjIyNiwyLjIyNiwwLDAsMCwzNjYuMDE2LDI4NC45MTdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvb2xpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NC41IDM1MmwzOC4zLjhjLTEzLjItNC42LTI2LTEwLjItMzguMy0xNi44em01Ny43LTUuM3Y1LjNsLTE5LjQuOGMzNi41IDEyLjUgNjkuOSAxNC4yIDk0LjcgNy4yLTE5LjkuMi00NS44LTIuNi03NS4zLTEzLjN6bTQwOC45LTExNS4yYzE1LjkgMCAyOC45LTEyLjkgMjguOS0yOC45cy0xMi45LTI0LjUtMjguOS0yNC41Yy0xNS45IDAtMjguOSA4LjYtMjguOSAyNC41czEyLjkgMjguOSAyOC45IDI4Ljl6bS0yOSAxMjAuNUg2NDBWMjQxLjVoLTU3Ljl6bS03My43IDBoNTcuOVYxNTYuN0w1MDguNCAxODR6bS0zMS0xMTkuNGMtMTguMi0xOC4yLTUwLjQtMTcuMS01MC40LTE3LjFzLTMyLjMtMS4xLTUwLjQgMTcuMWMtMTguMiAxOC4yLTE2LjggMzMuOS0xNi44IDUyLjZzLTEuNCAzNC4zIDE2LjggNTIuNSA1MC40IDE3LjEgNTAuNCAxNy4xIDMyLjMgMS4xIDUwLjQtMTcuMWMxOC4yLTE4LjIgMTYuOC0zMy44IDE2LjgtNTIuNS0uMS0xOC44IDEuMy0zNC41LTE2LjgtNTIuNnptLTM5LjggNzEuOWMwIDMuNi0xLjggMTIuNS0xMC43IDEyLjVzLTEwLjctOC45LTEwLjctMTIuNXYtNDAuNGMwLTguNyA3LjMtMTAuOSAxMC43LTEwLjlzMTAuNyAyLjEgMTAuNyAxMC45em0tMTA2LjItNzEuOWMtMTguMi0xOC4yLTUwLjQtMTcuMS01MC40LTE3LjFzLTMyLjItMS4xLTUwLjQgMTcuMWMtMS45IDEuOS0zLjcgMy45LTUuMyA2LTM4LjItMjkuNi03Mi41LTQ2LjUtMTAyLjEtNjEuMXYtMjAuN2wtMjIuNSAxMC42Yy01NC40LTIyLjEtODktMTguMi05Ny4zLjEgMCAwLTI0LjkgMzIuOCA2MS44IDExMC44VjM1Mmg1Ny45di0yOC42Yy02LjUtNC4yLTEzLTguNy0xOS40LTEzLjYtMTQuOC0xMS4yLTI3LjQtMjEuNi0zOC40LTMxLjR2LTMxYzEzLjEgMTQuNyAzMC41IDMxLjQgNTMuNCA1MC4zbDQuNSAzLjZ2LTI5LjhjMC02LjkgMS43LTE4LjIgMTAuOC0xOC4yczEwLjYgNi45IDEwLjYgMTVWMzE3YzE4IDEyLjIgMzcuMyAyMi4xIDU3LjcgMjkuNnYtOTMuOWMwLTE4LjctMTMuNC0zNy40LTQwLjYtMzcuNC0xNS44LS4xLTMwLjUgOC4yLTM4LjUgMjEuOXYtNTQuM2M0MS45IDIwLjkgODMuOSA0Ni41IDk5LjkgNTguMy0xMC4yIDE0LjYtOS4zIDI4LjEtOS4zIDQzLjcgMCAxOC43LTEuNCAzNC4zIDE2LjggNTIuNXM1MC40IDE3LjEgNTAuNCAxNy4xIDMyLjMgMS4xIDUwLjQtMTcuMWMxOC4yLTE4LjIgMTYuNy0zMy44IDE2LjctNTIuNSAwLTE4LjUgMS41LTM0LjItMTYuNy01Mi4zek02NS4yIDE4NHY2My4zYy00OC43LTU0LjUtMzguOS03Ni0zNS4yLTc5LjEgMTMuNS0xMS40IDM3LjUtOCA2NC40IDIuMXptMjI2LjUgMTIwLjVjMCAzLjYtMS44IDEyLjUtMTAuNyAxMi41cy0xMC43LTguOS0xMC43LTEyLjV2LTQwLjRjMC04LjcgNy4zLTEwLjkgMTAuNy0xMC45czEwLjcgMi4xIDEwLjcgMTAuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9ybmJpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzYuMzggMzcwLjNhMzcuOCAzNy44IDAgMSAxLTMyLjA3LTMyLjQyYy03OC4yOC0xMTEuMzUgNTItMTkwLjUzIDUyLTE5MC41My01Ljg2IDQzLTguMjQgOTEuMTYtOC4yNCA5MS4xNi02Ny4zMSA0MS40OS45MyA2NC4wNiAzOS44MSA3Mi44N2ExNDAuMzggMTQwLjM4IDAgMCAwIDEzMS42NiA5MS45NGMxLjkyIDAgMy43Ny0uMjEgNS42Ny0uMjhsLjExIDE4Ljg2Yy05OS4yMiAxLjM5LTE1OC43LTI5LjE0LTE4OC45NC01MS42em0xMDgtMzI3LjdBMzcuNTcgMzcuNTcgMCAwIDAgMTgxIDIxLjQ1YTM3Ljk1IDM3Ljk1IDAgMSAwLTMxLjE3IDU0LjIyYy0yMi41NSAyOS45MS01My44MyA4OS41Ny01Mi40MiAxOTBsMjEuODQtLjE1YzAtLjktLjE0LTEuNzctLjE0LTIuNjhBMTQwLjQyIDE0MC40MiAwIDAgMSAyMDcgMTMyLjcxYzgtMzcuNzEgMzAuNy0xMTQuMyA3My44LTQ0LjI5IDAgMCA0OC4xNCAyLjM4IDkxLjE4IDguMjQgMCAwLTc3Ljg0LTEyOC0xODcuNTktNTQuMDZ6bTMwNC4xOSAxMzQuMTdhMzcuOTQgMzcuOTQgMCAxIDAtNTMuODQtMjguN0M0MDMgMTI2LjEzIDM0NC44OSA5OSAyNTEuMjggMTAwLjMzbC4xNCAyMi41YzIuNy0uMTUgNS4zOS0uNDEgOC4xNC0uNDFhMTQwLjM3IDE0MC4zNyAwIDAgMSAxMzAuNDkgODguNzZjMzkuMSA5IDEwNS4wNiAzMS41OCAzOC40NiA3Mi41NCAwIDAtMi4zNCA0OC4xMy04LjIxIDkxLjE2IDAgMCAxMzMuNDUtODEuMTYgNDktMTk0LjYxYTM3LjQ1IDM3LjQ1IDAgMCAwIDE5LjMxLTMuNXpNMzc0LjA2IDQzNi4yNGMyMS40My0zMi40NiA0Ni40Mi04OS42OSA0NS4xNC0xNzkuNjZsLTE5LjUyLjE0Yy4wOCAyLjA2LjMgNC4wNy4zIDYuMTVhMTQwLjM0IDE0MC4zNCAwIDAgMS05MS4zOSAxMzEuNDVjLTguODUgMzguOTUtMzEuNDQgMTA2LjY2LTcyLjc3IDM5LjQ5IDAgMC00OC4xMi0yLjM0LTkxLjE5LTguMjIgMCAwIDc5LjkyIDEzMS4zNCAxOTEuOSA1MWEzNy41IDM3LjUgMCAwIDAgMy42NCAxNCAzNy45MyAzNy45MyAwIDEgMCAzMy44OS01NC4yOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG90amFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNC45IDE2MS41QzM0MC4yIDI5IDEyMS4xIDAgMTIxLjEgMFMyMjIuMiAxMTAuNCA5MyAxOTcuN0MxMS4zIDI1Mi44LTIxIDMyNC40IDE0IDQwMi42YzI2LjggNTkuOSA4My41IDg0LjMgMTQ0LjYgOTMuNC0yOS4yLTU1LjEtNi42LTEyMi40LTQuMS0xMjkuNiA1Ny4xIDg2LjQgMTY1IDAgMTEwLjgtOTMuOSA3MSAxNS40IDgxLjYgMTM4LjYgMjcuMSAyMTUuNSA4MC41LTI1LjMgMTM0LjEtODguOSAxNDguOC0xNDUuNiAxNS41LTU5LjMgMy43LTEyNy45LTI2LjMtMTgwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXp6IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3NS45IDMzMC43SDE3MS4zVjQ4MEgxN1YzMmgxMDkuNXYxMDQuNWwzMDUuMSA4NS42VjQ4MEgyNzUuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSHRtbDUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMmwzNC45IDM5NS44TDE5MS41IDQ4MGwxNTcuNi01Mi4yTDM4NCAzMkgwem0zMDguMiAxMjcuOUgxMjQuNGw0LjEgNDkuNGgxNzUuNmwtMTMuNiAxNDguNC05Ny45IDI3di4zaC0xLjFsLTk4LjctMjcuMy02LTc1LjhoNDcuN0wxMzggMzIwbDUzLjUgMTQuNSA1My43LTE0LjUgNi02Mi4ySDg0LjNMNzEuNSAxMTIuMmgyNDEuMWwtNC40IDQ3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUh1YnNwb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY3LjQgMjExLjZjLTI1LjEgMjMuNy00MC44IDU3LjMtNDAuOCA5NC42IDAgMjkuMyA5LjcgNTYuMyAyNiA3OEwyMDMuMSA0MzRjLTQuNC0xLjYtOS4xLTIuNS0xNC0yLjUtMTAuOCAwLTIwLjkgNC4yLTI4LjUgMTEuOC03LjYgNy42LTExLjggMTcuOC0xMS44IDI4LjZzNC4yIDIwLjkgMTEuOCAyOC41YzcuNiA3LjYgMTcuOCAxMS42IDI4LjUgMTEuNiAxMC44IDAgMjAuOS0zLjkgMjguNi0xMS42IDcuNi03LjYgMTEuOC0xNy44IDExLjgtMjguNSAwLTQuMi0uNi04LjItMS45LTEyLjFsNTAtNTAuMmMyMiAxNi45IDQ5LjQgMjYuOSA3OS4zIDI2LjkgNzEuOSAwIDEzMC01OC4zIDEzMC0xMzAuMiAwLTY1LjItNDcuNy0xMTkuMi0xMTAuMi0xMjguN1YxMTZjMTcuNS03LjQgMjguMi0yMy44IDI4LjItNDIuOSAwLTI2LjEtMjAuOS00Ny45LTQ3LTQ3LjlTMzExLjIgNDcgMzExLjIgNzMuMWMwIDE5LjEgMTAuNyAzNS41IDI4LjIgNDIuOXY2MS4yYy0xNS4yIDIuMS0yOS42IDYuNy00Mi43IDEzLjYtMjcuNi0yMC45LTExNy41LTg1LjctMTY4LjktMTI0LjggMS4yLTQuNCAyLTkgMi0xMy44QzEyOS44IDIzLjQgMTA2LjMgMCA3Ny40IDAgNDguNiAwIDI1LjIgMjMuNCAyNS4yIDUyLjJjMCAyOC45IDIzLjQgNTIuMyA1Mi4yIDUyLjMgOS44IDAgMTguOS0yLjkgMjYuOC03LjZsMTYzLjIgMTE0Ljd6bTg5LjUgMTYzLjZjLTM4LjEgMC02OS0zMC45LTY5LTY5czMwLjktNjkgNjktNjkgNjkgMzAuOSA2OSA2OS0zMC45IDY5LTY5IDY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJZGVhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjUuNjEsMTY1LjQ4YTQ5LjA3LDQ5LjA3LDAsMSwwLDQ5LjA2LDQ5LjA2QTQ5LjA4LDQ5LjA4LDAsMCwwLDEyNS42MSwxNjUuNDhaTTg2LjE1LDQyNS44NGg3OC45NFYyODUuMzJIODYuMTVabTE1MS40Ni0yMTEuNmMwLTIwLTEwLTIyLjUzLTE4Ljc0LTIyLjUzSDIwNC44MlYyMzcuNWgxNC4wNUMyMjguNjIsMjM3LjUsMjM3LjYxLDIzNC42OSwyMzcuNjEsMjE0LjI0Wm0yMDEuNjksNDZWMTY4LjkzaDIyLjc1VjIzNy41aDMzLjY5QzQ4Ni41LDExMy4wOCwzODguNjEsODYuMTksMjk5LjY3LDg2LjE5SDIwNC44NFYxNjloMTRjMjUuNiwwLDQxLjUsMTcuMzUsNDEuNSw0NS4yNiwwLDI4LjgxLTE1LjUyLDQ2LTQxLjUsNDZoLTE0VjQyNS44OGg5NC44M2MxNDQuNjEsMCwxOTQuOTQtNjcuMTYsMTk2LjcyLTE2NS42NFptLTEwOS43NSwwSDI3My4zVjE2OWg1NC40M3YyMi43M0gyOTZ2MTAuNThoMzBWMjI1SDI5NlYyMzcuNWgzMy41MVptNzQuNjYsMC01LjE2LTE3LjY3SDM2OS4zMWwtNS4xOCwxNy42N0gzNDAuNDdMMzY4LDE2OC45MmgzMi4zNWwyNy41Myw5MS4zNFpNMjk5LjY1LDMySDMyVjQ4MEgyOTkuNjVjMTYxLjg1LDAsMjUxLTc5LjczLDI1MS0yMjQuNTJDNTUwLjYyLDE3Miw1MTgsMzIsMjk5LjY1LDMyWm0wLDQyNi45Mkg1My4wN1Y1My4wN0gyOTkuNjVjMTQyLjEsMCwyMjkuOSw2NC42MSwyMjkuOSwyMDIuNDFDNTI5LjU1LDM4OS41Nyw0NDguNTUsNDU4LjkyLDI5OS42NSw0NTguOTJabTgzLjg2LTI2NC44NUwzNzYsMjE5Ljg4SDM5Mi40bC03LjUyLTI1LjgxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbWRiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTIxLjMgMjI5LjJIMjFjLjEtLjEuMi0uMy4zLS40ek05NyAzMTkuOEg2NFYxOTJoMzN6bTExMy4yIDBoLTI4Ljd2LTg2LjRsLTExLjYgODYuNGgtMjAuNmwtMTIuMi04NC41djg0LjVoLTI5VjE5Mmg0Mi44YzMuMyAxOS44IDYgMzkuOSA4LjcgNTkuOWw3LjYtNTkuOWg0M3ptMTEuNCAwVjE5MmgyNC42YzE3LjYgMCA0NC43LTEuNiA0OSAyMC45IDEuNyA3LjYgMS40IDE2LjMgMS40IDI0LjQgMCA4OC41IDExLjEgODIuNi03NSA4Mi41em0xNjAuOS0yOS4yYzAgMTUuNy0yLjQgMzAuOS0yMi4yIDMwLjktOSAwLTE1LjItMy0yMC45LTkuOGwtMS45IDguMWgtMjkuOFYxOTJoMzEuN3Y0MS43YzYtNi41IDEyLTkuMiAyMC45LTkuMiAyMS40IDAgMjIuMiAxMi44IDIyLjIgMzAuMXpNMjY1IDIyOS45YzAtOS43IDEuNi0xNi0xMC4zLTE2djgzLjdjMTIuMi4zIDEwLjMtOC43IDEwLjMtMTguNHptODUuNSAyNi4xYzAtNS40IDEuMS0xMi43LTYuMi0xMi43LTYgMC00LjkgOC45LTQuOSAxMi43IDAgLjYtMS4xIDM5LjYgMS4xIDQ0LjcuOCAxLjYgMi4yIDIuNCAzLjggMi40IDcuOCAwIDYuMi05IDYuMi0xNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbm5vc29mdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjIuNTU5LDE1OS43MWEyNy4zNzksMjcuMzc5LDAsMCwwLTEzLjg2Ni0yMy4zMzcsMjYuNDIsMjYuNDIsMCwwLDAtMjYuMjExLjEzM0w3My45NDMsMzE0LjY0N1YxNzYuMjYxYTExLjk1NSwxMS45NTUsMCwwLDEsNi4wNDctMTAuMzRMMjE4LjA2Niw4Ni4yMDhhMTIuMTUzLDEyLjE1MywwLDAsMSwxMS45MjIuMDI1bDMyLjY1NiwxOC44NTNMMTEyLjU4MSwxOTEuNzIzdjU2TDM1OS42NDIsMTA1LjA4NiwyNDEuMTI5LDM2LjY3OWMtMTAuOTkyLTYuMTI5LTIyLjMtNi4yNTUtMzMuOC0uMjdsLTE2NC42LDk1LjAyNmMtMTAuNjM0LDYuMTItMTYuNzcxLDE2LjM5LTE3LjI5LDI5LjEyNGwwLDE5MS41Yy4xNywxMC4xMzUsNS4wOCwxOC42NzIsMTMuNDc0LDIzLjQyOGEyNy4wMzcsMjcuMDM3LDAsMCwwLDI2LjczNi0uMDQ1TDM3NC4wNTcsMTk3LjM3NlYzMzUuNjU3YTExLjk3NiwxMS45NzYsMCwwLDEtNS45MiwxMC4zNjhMMjMwLjAyNSw0MjUuNzdhMTIuMTc1LDEyLjE3NSwwLDAsMS0xMS45MzcuMDYybC0zMi43MjMtMTguOSwxNTAuMDUxLTg2LjYyN3YtNTZMODguMzY3LDQwNi45MzJsMTE4Ljc5NCw2OC41ODNhMzMuODgsMzMuODgsMCwwLDAsMzQuMjUtLjMyN2wxNjQuNTI3LTk0Ljk5NWMxMC43NDYtNi42MzEsMTYuNjQ5LTE3LjExOCwxNi42MjQtMjkuNTI4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbnN0YWdyYW1TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0LDIwMi42NkE1My4zNCw1My4zNCwwLDEsMCwyNzcuMzYsMjU2LDUzLjM4LDUzLjM4LDAsMCwwLDIyNCwyMDIuNjZabTEyNC43MS00MWE1NCw1NCwwLDAsMC0zMC40MS0zMC40MWMtMjEtOC4yOS03MS02LjQzLTk0LjMtNi40M3MtNzMuMjUtMS45My05NC4zMSw2LjQzYTU0LDU0LDAsMCwwLTMwLjQxLDMwLjQxYy04LjI4LDIxLTYuNDMsNzEuMDUtNi40Myw5NC4zM1M5MSwzMjkuMjYsOTkuMzIsMzUwLjMzYTU0LDU0LDAsMCwwLDMwLjQxLDMwLjQxYzIxLDguMjksNzEsNi40Myw5NC4zMSw2LjQzczczLjI0LDEuOTMsOTQuMy02LjQzYTU0LDU0LDAsMCwwLDMwLjQxLTMwLjQxYzguMzUtMjEsNi40My03MS4wNSw2LjQzLTk0LjMzUzM1Ny4xLDE4Mi43NCwzNDguNzUsMTYxLjY3Wk0yMjQsMzM4YTgyLDgyLDAsMSwxLDgyLTgyQTgxLjksODEuOSwwLDAsMSwyMjQsMzM4Wm04NS4zOC0xNDguM2ExOS4xNCwxOS4xNCwwLDEsMSwxOS4xMy0xOS4xNEExOS4xLDE5LjEsMCwwLDEsMzA5LjQyLDE4OS43NFpNNDAwLDMySDQ4QTQ4LDQ4LDAsMCwwLDAsODBWNDMyYTQ4LDQ4LDAsMCwwLDQ4LDQ4SDQwMGE0OCw0OCwwLDAsMCw0OC00OFY4MEE0OCw0OCwwLDAsMCw0MDAsMzJaTTM4Mi44OCwzMjJjLTEuMjksMjUuNjMtNy4xNCw0OC4zNC0yNS44NSw2N3MtNDEuNCwyNC42My02NywyNS44NWMtMjYuNDEsMS40OS0xMDUuNTksMS40OS0xMzIsMC0yNS42My0xLjI5LTQ4LjI2LTcuMTUtNjctMjUuODVzLTI0LjYzLTQxLjQyLTI1Ljg1LTY3Yy0xLjQ5LTI2LjQyLTEuNDktMTA1LjYxLDAtMTMyLDEuMjktMjUuNjMsNy4wNy00OC4zNCwyNS44NS02N3M0MS40Ny0yNC41Niw2Ny0yNS43OGMyNi40MS0xLjQ5LDEwNS41OS0xLjQ5LDEzMiwwLDI1LjYzLDEuMjksNDguMzMsNy4xNSw2NywyNS44NXMyNC42Myw0MS40MiwyNS44NSw2Ny4wNUMzODQuMzcsMjE2LjQ0LDM4NC4zNywyOTUuNTYsMzgyLjg4LDMyMlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW5zdGFncmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNC4xIDE0MWMtNjMuNiAwLTExNC45IDUxLjMtMTE0LjkgMTE0LjlzNTEuMyAxMTQuOSAxMTQuOSAxMTQuOVMzMzkgMzE5LjUgMzM5IDI1NS45IDI4Ny43IDE0MSAyMjQuMSAxNDF6bTAgMTg5LjZjLTQxLjEgMC03NC43LTMzLjUtNzQuNy03NC43czMzLjUtNzQuNyA3NC43LTc0LjcgNzQuNyAzMy41IDc0LjcgNzQuNy0zMy42IDc0LjctNzQuNyA3NC43em0xNDYuNC0xOTQuM2MwIDE0LjktMTIgMjYuOC0yNi44IDI2LjgtMTQuOSAwLTI2LjgtMTItMjYuOC0yNi44czEyLTI2LjggMjYuOC0yNi44IDI2LjggMTIgMjYuOCAyNi44em03Ni4xIDI3LjJjLTEuNy0zNS45LTkuOS02Ny43LTM2LjItOTMuOS0yNi4yLTI2LjItNTgtMzQuNC05My45LTM2LjItMzctMi4xLTE0Ny45LTIuMS0xODQuOSAwLTM1LjggMS43LTY3LjYgOS45LTkzLjkgMzYuMXMtMzQuNCA1OC0zNi4yIDkzLjljLTIuMSAzNy0yLjEgMTQ3LjkgMCAxODQuOSAxLjcgMzUuOSA5LjkgNjcuNyAzNi4yIDkzLjlzNTggMzQuNCA5My45IDM2LjJjMzcgMi4xIDE0Ny45IDIuMSAxODQuOSAwIDM1LjktMS43IDY3LjctOS45IDkzLjktMzYuMiAyNi4yLTI2LjIgMzQuNC01OCAzNi4yLTkzLjkgMi4xLTM3IDIuMS0xNDcuOCAwLTE4NC44ek0zOTguOCAzODhjLTcuOCAxOS42LTIyLjkgMzQuNy00Mi42IDQyLjYtMjkuNSAxMS43LTk5LjUgOS0xMzIuMSA5cy0xMDIuNyAyLjYtMTMyLjEtOWMtMTkuNi03LjgtMzQuNy0yMi45LTQyLjYtNDIuNi0xMS43LTI5LjUtOS05OS41LTktMTMyLjFzLTIuNi0xMDIuNyA5LTEzMi4xYzcuOC0xOS42IDIyLjktMzQuNyA0Mi42LTQyLjYgMjkuNS0xMS43IDk5LjUtOSAxMzIuMS05czEwMi43LTIuNiAxMzIuMSA5YzE5LjYgNy44IDM0LjcgMjIuOSA0Mi42IDQyLjYgMTEuNyAyOS41IDkgOTkuNSA5IDEzMi4xczIuNyAxMDIuNy05IDEzMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbnN0YWxvZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTMuMzg0LDQ4MEgzODcuMTEzTDUwMi41NTQsMjc1Ljc2NSwyMDQuMjI5LDMzMy4yMTFaTTUwNC43MjYsMjQwLjA3OCwzODcuMTEzLDMySDE1NS42NjlMMzYwLjIzLDI2Ny45Wk0xMjQuMzg2LDQ4LjgwOSw3LjI3NCwyNTYsMTIzLjIzNiw0NjEuMTU0LDIyNS42MjcsMTY1LjU2MVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW50ZXJjb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkyIDMySDU2QzI1LjEgMzIgMCA1Ny4xIDAgODh2MzM2YzAgMzAuOSAyNS4xIDU2IDU2IDU2aDMzNmMzMC45IDAgNTYtMjUuMSA1Ni01NlY4OGMwLTMwLjktMjUuMS01Ni01Ni01NnptLTEwOC4zIDgyLjFjMC0xOS44IDI5LjktMTkuOCAyOS45IDB2MTk5LjVjMCAxOS44LTI5LjkgMTkuOC0yOS45IDBWMTE0LjF6bS03NC42LTcuNWMwLTE5LjggMjkuOS0xOS44IDI5LjkgMHYyMTYuNWMwIDE5LjgtMjkuOSAxOS44LTI5LjkgMFYxMDYuNnptLTc0LjcgNy41YzAtMTkuOCAyOS45LTE5LjggMjkuOSAwdjE5OS41YzAgMTkuOC0yOS45IDE5LjgtMjkuOSAwVjExNC4xek01OS43IDE0NGMwLTE5LjggMjkuOS0xOS44IDI5LjkgMHYxMzQuM2MwIDE5LjgtMjkuOSAxOS44LTI5LjkgMFYxNDR6bTMyMy40IDIyNy44Yy03Mi44IDYzLTI0MS43IDY1LjQtMzE4LjEgMC0xNS0xMi44IDQuNC0zNS41IDE5LjQtMjIuNyA2NS45IDU1LjMgMjE2LjEgNTMuOSAyNzkuMyAwIDE0LjktMTIuOSAzNC4zIDkuOCAxOS40IDIyLjd6bTUuMi05My41YzAgMTkuOC0yOS45IDE5LjgtMjkuOSAwVjE0NGMwLTE5LjggMjkuOS0xOS44IDI5LjkgMHYxMzQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW50ZXJuZXRFeHBsb3JlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODMuMDQ5IDE1OS43MDZjMTAuODU1LTI0LjU3NSAyMS40MjQtNjAuNDM4IDIxLjQyNC04Ny44NzEgMC03Mi43MjItNzkuNjQxLTk4LjM3MS0yMDkuNjczLTM4LjU3Ny0xMDcuNjMyLTcuMTgxLTIxMS4yMjEgNzMuNjctMjM3LjA5OCAxODYuNDU3IDMwLjg1Mi0zNC44NjIgNzguMjcxLTgyLjI5OCAxMjEuOTc3LTEwMS4xNThDMTI1LjQwNCAxNjYuODUgNzkuMTI4IDIyOC4wMDIgNDMuOTkyIDI5MS43MjUgMjMuMjQ2IDMyOS42NTEgMCAzOTAuOTQgMCA0MzYuNzQ3YzAgOTguNTc1IDkyLjg1NCA4Ni41IDE4MC4yNTEgNDIuMDA2IDMxLjQyMyAxNS40MyA2Ni41NTkgMTUuNTczIDEwMS42OTUgMTUuNTczIDk3LjEyNCAwIDE4NC4yNDktNTQuMjk0IDIxNi44MTQtMTQ2LjAyMkgzNzcuOTI3Yy01Mi41MDkgODguNTkzLTE5Ni44MTkgNTIuOTk2LTE5Ni44MTktNDcuNDM2SDUwOS45YzYuNDA3LTQzLjU4MS0xLjY1NS05NS43MTUtMjYuODUxLTE0MS4xNjJ6TTY0LjU1OSAzNDYuODc3YzE3LjcxMSA1MS4xNSA1My43MDMgOTUuODcxIDEwMC4yNjYgMTIzLjMwNC04OC43NDEgNDguOTQtMTczLjI2NyAyOS4wOTYtMTAwLjI2Ni0xMjMuMzA0em0xMTUuOTc3LTEwOC44NzNjMi01NS4xNTEgNTAuMjc2LTk0Ljg3MSAxMDMuOTgtOTQuODcxIDUzLjQxOCAwIDEwMS45ODEgMzkuNzIgMTAzLjk4MSA5NC44NzFIMTgwLjUzNnptMTg0LjUzNi0xODcuNmMyMS40MjUtMTAuMjg3IDQ4LjU2My0yMi4wMDMgNzIuNTU4LTIyLjAwMyAzMS40MjIgMCA1NC4yNzQgMjEuNzE3IDU0LjI3NCA1My43MjIgMCAyMC4wMDMtNy40MjcgNDkuMDA3LTE0LjU2OSA2Ny44NjctMjYuMjgtNDIuMjkyLTY1Ljk4Ni04MS41ODQtMTEyLjI2My05OS41ODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUludmlzaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNy40IDMySDQwLjZDMTguMiAzMiAwIDUwLjIgMCA3Mi42djM2Ni44QzAgNDYxLjggMTguMiA0ODAgNDAuNiA0ODBoMzY2LjhjMjIuNCAwIDQwLjYtMTguMiA0MC42LTQwLjZWNzIuNmMwLTIyLjQtMTguMi00MC42LTQwLjYtNDAuNnpNMTc2LjEgMTQ1LjZjLjQgMjMuNC0yMi40IDI3LjMtMjYuNiAyNy40LTE0LjkgMC0yNy4xLTEyLTI3LjEtMjcgLjEtMzUuMiA1My4xLTM1LjUgNTMuNy0uNHpNMzMyLjggMzc3Yy02NS42IDAtMzQuMS03NC0yNS0xMDYuNiAxNC4xLTQ2LjQtNDUuMi01OS01OS45LjdsLTI1LjggMTAzLjNIMTc3bDguMS0zMi41Yy0zMS41IDUxLjgtOTQuNiA0NC40LTk0LjYtNC4zLjEtMTQuMy45LTE0IDIzLTEwNC4xSDgxLjdsOS43LTM1LjZoNzYuNGMtMzMuNiAxMzMuNy0zMi42IDEyNi45LTMyLjkgMTM4LjIgMCAyMC45IDQwLjkgMTMuNSA1Ny40LTIzLjJsMTkuOC03OS40aC0zMi4zbDkuNy0zNS42aDY4LjhsLTguOSA0MC41YzQwLjUtNzUuNSAxMjcuOS00Ny44IDEwMS44IDM4LTE0LjIgNTEuMS0xNC42IDUwLjctMTQuOSA1OC44IDAgMTUuNSAxNy41IDIyLjYgMzEuOC0xNi45TDM4NiAzMjVjLTEwLjUgMzYuNy0yOS40IDUyLTUzLjIgNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUlveGhvc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjE2IDE2MGgtNjcuM0M1MTEuMiA3MC43IDQyMi45IDggMzIwIDggMTgzIDggNzIgMTE5IDcyIDI1NmMwIDE2LjQgMS42IDMyLjUgNC43IDQ4SDI0Yy0xMy4zIDAtMjQgMTAuOC0yNCAyNCAwIDEzLjMgMTAuNyAyNCAyNCAyNGg2Ny4zYzM3LjUgODkuMyAxMjUuOCAxNTIgMjI4LjcgMTUyIDEzNyAwIDI0OC0xMTEgMjQ4LTI0OCAwLTE2LjQtMS42LTMyLjUtNC43LTQ4SDYxNmMxMy4zIDAgMjQtMTAuOCAyNC0yNCAwLTEzLjMtMTAuNy0yNC0yNC0yNHptLTk2IDk2YzAgMTEwLjUtODkuNSAyMDAtMjAwIDIwMC03NS43IDAtMTQxLjYtNDItMTc1LjUtMTA0SDQyNGMxMy4zIDAgMjQtMTAuOCAyNC0yNCAwLTEzLjMtMTAuNy0yNC0yNC0yNEgxMjUuOGMtMy44LTE1LjQtNS44LTMxLjQtNS44LTQ4IDAtMTEwLjUgODkuNS0yMDAgMjAwLTIwMCA3NS43IDAgMTQxLjYgNDIgMTc1LjUgMTA0SDIxNmMtMTMuMyAwLTI0IDEwLjgtMjQgMjQgMCAxMy4zIDEwLjcgMjQgMjQgMjRoMjk4LjJjMy44IDE1LjQgNS44IDMxLjQgNS44IDQ4em0tMzA0LTI0aDIwOGMxMy4zIDAgMjQgMTAuNyAyNCAyNCAwIDEzLjItMTAuNyAyNC0yNCAyNEgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0IDAtMTMuMiAxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJdGNoSW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzEuOTIgMzQuNzdDNTAuMiA0Ny42NyA3LjQgOTYuODQgNyAxMDkuNzN2MjEuMzRjMCAyNy4wNiAyNS4yOSA1MC44NCA0OC4yNSA1MC44NCAyNy41NyAwIDUwLjU0LTIyLjg1IDUwLjU0LTUwIDAgMjcuMTIgMjIuMTggNTAgNDkuNzYgNTBzNDktMjIuODUgNDktNTBjMCAyNy4xMiAyMy41OSA1MCA1MS4xNiA1MGguNWMyNy41NyAwIDUxLjE2LTIyLjg1IDUxLjE2LTUwIDAgMjcuMTIgMjEuNDcgNTAgNDkgNTBzNDkuNzYtMjIuODUgNDkuNzYtNTBjMCAyNy4xMiAyMyA1MCA1MC41NCA1MCAyMyAwIDQ4LjI1LTIzLjc4IDQ4LjI1LTUwLjg0di0yMS4zNGMtLjQtMTIuOS00My4yLTYyLjA3LTY0LjkyLTc1QzM3Mi41NiAzMi40IDMyNS43NiAzMiAyNTYgMzJTOTEuMTQgMzMuMSA3MS45MiAzNC43N3ptMTMyLjMyIDEzNC4zOWMtMjIgMzguNC03Ny45IDM4LjcxLTk5Ljg1LjI1LTEzLjE3IDIzLjE0LTQzLjE3IDMyLjA3LTU2IDI3LjY2LTMuODcgNDAuMTUtMTMuNjcgMjM3LjEzIDE3LjczIDI2OS4xNSA4MCAxOC42NyAzMDIuMDggMTguMTIgMzc5Ljc2IDAgMzEuNjUtMzIuMjcgMjEuMzItMjMyIDE3Ljc1LTI2OS4xNS0xMi45MiA0LjQ0LTQyLjg4LTQuNi01Ni0yNy42Ni0yMiAzOC41Mi03Ny44NSAzOC4xLTk5Ljg1LS4yNC03LjEgMTIuNDktMjMuMDUgMjguOTQtNTEuNzYgMjguOTRhNTcuNTQgNTcuNTQgMCAwIDEtNTEuNzUtMjguOTR6bS00MS41OCA1My43N2MxNi40NyAwIDMxLjA5IDAgNDkuMjIgMTkuNzhhNDM2LjkxIDQzNi45MSAwIDAgMSA4OC4xOCAwQzMxOC4yMiAyMjMgMzMyLjg1IDIyMyAzNDkuMzEgMjIzYzUyLjMzIDAgNjUuMjIgNzcuNTMgODMuODcgMTQ0LjQ1IDE3LjI2IDYyLjE1LTUuNTIgNjMuNjctMzMuOTUgNjMuNzMtNDIuMTUtMS41Ny02NS40OS0zMi4xOC02NS40OS02Mi43OS0zOS4yNSA2LjQzLTEwMS45MyA4Ljc5LTE1NS41NSAwIDAgMzAuNjEtMjMuMzQgNjEuMjItNjUuNDkgNjIuNzktMjguNDItLjA2LTUxLjItMS41OC0zMy45NC02My43MyAxOC42Ny02NyAzMS41Ni0xNDQuNDUgODMuODgtMTQ0LjQ1ek0yNTYgMjcwLjc5cy00NC4zOCA0MC43Ny01Mi4zNSA1NS4yMWwyOS0xLjE3djI1LjMyYzAgMS41NSAyMS4zNC4xNiAyMy4zMy4xNiAxMS42NS41NCAyMy4zMSAxIDIzLjMxLS4xNnYtMjUuMjhsMjkgMS4xN2MtOC0xNC40OC01Mi4zNS01NS4yNC01Mi4zNS01NS4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSXR1bmVzTm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODEuOSAzODguMmMtNi40IDI3LjQtMjcuMiA0Mi44LTU1LjEgNDgtMjQuNSA0LjUtNDQuOSA1LjYtNjQuNS0xMC4yLTIzLjktMjAuMS0yNC4yLTUzLjQtMi43LTc0LjQgMTctMTYuMiA0MC45LTE5LjUgNzYuOC0yNS44IDYtMS4xIDExLjItMi41IDE1LjYtNy40IDYuNC03LjIgNC40LTQuMSA0LjQtMTYzLjIgMC0xMS4yLTUuNS0xNC4zLTE3LTEyLjMtOC4yIDEuNC0xODUuNyAzNC42LTE4NS43IDM0LjYtMTAuMiAyLjItMTMuNCA1LjItMTMuNCAxNi43IDAgMjM0LjcgMS4xIDIyMy45LTIuNSAyMzkuNS00LjIgMTguMi0xNS40IDMxLjktMzAuMiAzOS41LTE2LjggOS4zLTQ3LjIgMTMuNC02My40IDEwLjQtNDMuMi04LjEtNTguNC01OC0yOS4xLTg2LjYgMTctMTYuMiA0MC45LTE5LjUgNzYuOC0yNS44IDYtMS4xIDExLjItMi41IDE1LjYtNy40IDEwLjEtMTEuNSAxLjgtMjU2LjYgNS4yLTI3MC4yLjgtNS4yIDMtOS42IDcuMS0xMi45IDQuMi0zLjUgMTEuOC01LjUgMTMuNC01LjUgMjA0LTM4LjIgMjI4LjktNDMuMSAyMzIuNC00My4xIDExLjUtLjggMTguMSA2IDE4LjEgMTcuNi4yIDM0NC41IDEuMSAzMjYtMS44IDMzOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJdHVuZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIzLjYgODAuM0MxMjkgODAuMyA1Mi41IDE1NyA1Mi41IDI1MS41UzEyOSA0MjIuOCAyMjMuNiA0MjIuOHMxNzEuMi03Ni43IDE3MS4yLTE3MS4yYzAtOTQuNi03Ni43LTE3MS4zLTE3MS4yLTE3MS4zem03OS40IDI0MGMtMy4yIDEzLjYtMTMuNSAyMS4yLTI3LjMgMjMuOC0xMi4xIDIuMi0yMi4yIDIuOC0zMS45LTUtMTEuOC0xMC0xMi0yNi40LTEuNC0zNi44IDguNC04IDIwLjMtOS42IDM4LTEyLjggMy0uNSA1LjYtMS4yIDcuNy0zLjcgMy4yLTMuNiAyLjItMiAyLjItODAuOCAwLTUuNi0yLjctNy4xLTguNC02LjEtNCAuNy05MS45IDE3LjEtOTEuOSAxNy4xLTUgMS4xLTYuNyAyLjYtNi43IDguMyAwIDExNi4xLjUgMTEwLjgtMS4yIDExOC41LTIuMSA5LTcuNiAxNS44LTE0LjkgMTkuNi04LjMgNC42LTIzLjQgNi42LTMxLjQgNS4yLTIxLjQtNC0yOC45LTI4LjctMTQuNC00Mi45IDguNC04IDIwLjMtOS42IDM4LTEyLjggMy0uNSA1LjYtMS4yIDcuNy0zLjcgNS01LjcuOS0xMjcgMi42LTEzMy43LjQtMi42IDEuNS00LjggMy41LTYuNCAyLjEtMS43IDUuOC0yLjcgNi43LTIuNyAxMDEtMTkgMTEzLjMtMjEuNCAxMTUuMS0yMS40IDUuNy0uNCA5IDMgOSA4LjctLjEgMTcwLjYuNCAxNjEuNC0xIDE2Ny42ek0zNDUuMiAzMkgxMDIuOEM0NS45IDMyIDAgNzcuOSAwIDEzNC44djI0Mi40QzAgNDM0LjEgNDUuOSA0ODAgMTAyLjggNDgwaDI0Mi40YzU3IDAgMTAyLjgtNDUuOSAxMDIuOC0xMDIuOFYxMzQuOEM0NDggNzcuOSA0MDIuMSAzMiAzNDUuMiAzMnpNMjIzLjYgNDQ0Yy0xMDYuMyAwLTE5Mi41LTg2LjItMTkyLjUtMTkyLjVTMTE3LjMgNTkgMjIzLjYgNTlzMTkyLjUgODYuMiAxOTIuNSAxOTIuNVMzMjkuOSA0NDQgMjIzLjYgNDQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKYXZhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3Ny43NCAzMTIuOWM5LjgtNi43IDIzLjQtMTIuNSAyMy40LTEyLjVzLTM4LjcgNy03Ny4yIDEwLjJjLTQ3LjEgMy45LTk3LjcgNC43LTEyMy4xIDEuMy02MC4xLTggMzMtMzAuMSAzMy0zMC4xcy0zNi4xLTIuNC04MC42IDE5Yy01Mi41IDI1LjQgMTMwIDM3IDIyNC41IDEyLjF6bS04NS40LTMyLjFjLTE5LTQyLjctODMuMS04MC4yIDAtMTQ1LjhDMjk2IDUzLjIgMjQyLjg0IDAgMjQyLjg0IDBjMjEuNSA4NC41LTc1LjYgMTEwLjEtMTEwLjcgMTYyLjYtMjMuOSAzNS45IDExLjcgNzQuNCA2MC4yIDExOC4yem0xMTQuNi0xNzYuMmMuMSAwLTE3NS4yIDQzLjgtOTEuNSAxNDAuMiAyNC43IDI4LjQtNi41IDU0LTYuNSA1NHM2Mi43LTMyLjQgMzMuOS03Mi45Yy0yNi45LTM3LjgtNDcuNS01Ni42IDY0LjEtMTIxLjN6bS02LjEgMjcwLjVhMTIuMTkgMTIuMTkgMCAwIDEtMiAyLjZjMTI4LjMtMzMuNyA4MS4xLTExOC45IDE5LjgtOTcuM2ExNy4zMyAxNy4zMyAwIDAgMC04LjIgNi4zIDcwLjQ1IDcwLjQ1IDAgMCAxIDExLTNjMzEtNi41IDc1LjUgNDEuNS0yMC42IDkxLjR6TTM0OCA0MzcuNHMxNC41IDExLjktMTUuOSAyMS4yYy01Ny45IDE3LjUtMjQwLjggMjIuOC0yOTEuNi43LTE4LjMtNy45IDE2LTE5IDI2LjgtMjEuMyAxMS4yLTIuNCAxNy43LTIgMTcuNy0yLTIwLjMtMTQuMy0xMzEuMyAyOC4xLTU2LjQgNDAuMkMyMzIuODQgNTA5LjQgNDAxIDQ2MS4zIDM0OCA0MzcuNHpNMTI0LjQ0IDM5NmMtNzguNyAyMiA0Ny45IDY3LjQgMTQ4LjEgMjQuNWExODUuODkgMTg1Ljg5IDAgMCAxLTI4LjItMTMuOGMtNDQuNyA4LjUtNjUuNCA5LjEtMTA2IDQuNS0zMy41LTMuOC0xMy45LTE1LjItMTMuOS0xNS4yem0xNzkuOCA5Ny4yYy03OC43IDE0LjgtMTc1LjggMTMuMS0yMzMuMyAzLjYgMC0uMSAxMS44IDkuNyA3Mi40IDEzLjYgOTIuMiA1LjkgMjMzLjgtMy4zIDIzNy4xLTQ2LjkgMCAwLTYuNCAxNi41LTc2LjIgMjkuN3pNMjYwLjY0IDM1M2MtNTkuMiAxMS40LTkzLjUgMTEuMS0xMzYuOCA2LjYtMzMuNS0zLjUtMTEuNi0xOS43LTExLjYtMTkuNy04Ni44IDI4LjggNDguMiA2MS40IDE2OS41IDI1LjlhNjAuMzcgNjAuMzcgMCAwIDEtMjEuMS0xMi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKZWRpT3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk4LjUgMzczLjZjOTUuOS0xMjIuMSAxNy4yLTIzMy4xIDE3LjItMjMzLjEgNDUuNCA4NS44LTQxLjQgMTcwLjUtNDEuNCAxNzAuNSAxMDUtMTcxLjUtNjAuNS0yNzEuNS02MC41LTI3MS41IDk2LjkgNzIuNy0xMC4xIDE5MC43LTEwLjEgMTkwLjcgODUuOCAxNTguNC02OC42IDIzMC4xLTY4LjYgMjMwLjFzLS40LTE2LjktMi4yLTg1LjdjNC4zIDQuNSAzNC41IDM2LjIgMzQuNSAzNi4ybC0yNC4yLTQ3LjQgNjIuNi05LjEtNjIuNi05LjEgMjAuMi01NS41LTMxLjQgNDUuOWMtMi4yLTg3LjctNy44LTMwNS4xLTcuOS0zMDYuOXYtMi40IDEtMSAyLjRjMCAxLTUuNiAyMTktNy45IDMwNi45bC0zMS40LTQ1LjkgMjAuMiA1NS41LTYyLjYgOS4xIDYyLjYgOS4xLTI0LjIgNDcuNCAzNC41LTM2LjJjLTEuOCA2OC44LTIuMiA4NS43LTIuMiA4NS43cy0xNTQuNC03MS43LTY4LjYtMjMwLjFjMCAwLTEwNy0xMTguMS0xMC4xLTE5MC43IDAgMC0xNjUuNSA5OS45LTYwLjUgMjcxLjUgMCAwLTg2LjgtODQuOC00MS40LTE3MC41IDAgMC03OC43IDExMSAxNy4yIDIzMy4xIDAgMC0yNi4yLTE2LjEtNDkuNC03Ny43IDAgMCAxNi45IDE4My4zIDIyMiAxODUuN2g0LjFjMjA1LTIuNCAyMjItMTg1LjcgMjIyLTE4NS43LTIzLjYgNjEuNS00OS45IDc3LjctNDkuOSA3Ny43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKZW5raW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4Ny4xIDQyNWMtMS40LTExLjItMTktMjMuMS0yOC4yLTMxLjktNS4xLTUtMjktMjMuMS0zMC40LTI5LjktMS40LTYuNiA5LjctMjEuNSAxMy4zLTI4LjkgNS4xLTEwLjcgOC44LTIzLjcgMTEuMy0zMi42IDE4LjgtNjYuMSAyMC43LTE1Ni45LTYuMi0yMTEuMi0xMC4yLTIwLjYtMzguNi00OS01Ni40LTYyLjUtNDItMzEuNy0xMTkuNi0zNS4zLTE3MC4xLTE2LjYtMTQuMSA1LjItMjcuOCA5LjgtNDAuMSAxNy4xLTMzLjEgMTkuNC02OC4zIDMyLjUtNzguMSA3MS42LTI0LjIgMTAuOC0zMS41IDQxLjgtMzAuMyA3Ny44LjIgNyA0LjEgMTUuOCAyLjcgMjIuNC0uNyAzLjMtNS4yIDcuNi02LjEgOS44LTExLjYgMjcuNy0yLjMgNjQgMTEuMSA4My43IDguMSAxMS45IDIxLjUgMjIuNCAzOS4yIDI1LjIuNyAxMC42IDMuMyAxOS43IDguMiAzMC40IDMuMSA2LjggMTQuNyAxOSAxMC40IDI3LjctMi4yIDQuNC0yMSAxMy44LTI3LjMgMTcuNkM4OSA0MDcuMiA3My43IDQxNSA1NC4yIDQyOWMtMTIuNiA5LTMyLjMgMTAuMi0yOS4yIDMxLjEgMi4xIDE0LjEgMTAuMSAzMS42IDE0LjcgNDUuOC43IDIgMS40IDQuMSAyLjEgNmg0MjJjNC45LTE1LjMgOS43LTMwLjkgMTQuNi00Ny4yIDMuNC0xMS40IDEwLjItMjcuOCA4LjctMzkuN3pNMjA1LjkgMzMuN2MxLjgtLjUgMy40LjcgNC45IDIuNC0uMiA1LjItNS40IDUuMS04LjkgNi44LTUuNCA2LjctMTMuNCA5LjgtMjAgMTcuMi02LjggNy41LTE0LjQgMjcuNy0yMy40IDMwLTQuNSAxLjEtOS43LS44LTEzLjYtLjUtMTAuNC43LTE3LjcgNi0yOC4zIDcuNSAxMy42LTI5LjkgNTYuMS01NCA4OS4zLTYzLjR6bS0xMDQuOCA5My42YzEzLjUtMTQuOSAzMi4xLTI0LjEgNTQuOC0yNS45IDExLjcgMjkuNy04LjQgNjUtLjkgOTcuNiAyLjMgOS45IDEwLjIgMjUuNC0yLjQgMjUuNy4zLTI4LjMtMzQuOC00Ni4zLTYxLjMtMjkuNi0xLjgtMjEuNS00LjktNTEuNyA5LjgtNjcuOHptMzYuNyAyMDAuMmMtMS00LjEtMi43LTEyLjktMi4zLTE1LjEgMS42LTguNyAxNy4xLTEyLjUgMTEtMjQuNy0xMS4zLS4xLTEzLjggMTAuMi0yNC4xIDExLjMtMjYuNyAyLjYtNDUuNi0zNS40LTQ0LjQtNTguNCAxLTE5LjUgMTcuNi0zOC4yIDQwLjEtMzUuOCAxNiAxLjggMjEuNCAxOS4yIDI0LjUgMzQuNyA5LjIuNSAyMi41LS40IDI2LjktNy42LS42LTE3LjUtOC44LTMxLjYtOC4yLTQ3LjcgMS0zMC4zIDE3LjUtNTcuNiA0LjgtODcuNCAxMy42LTMwLjkgNTMuNS01NS4zIDgzLjEtNzAgMzYuNi0xOC4zIDk0LjktMy43IDEyOS4zIDE1LjggMTkuNyAxMS4xIDM0LjQgMzIuNyA0OC4zIDUwLjctMTkuNS01LjgtMzYuMSA0LjItMzMuMSAyMC4zIDE2LjMtMTQuOSA0NC4yLS4yIDUyLjUgMTYuNCA3LjkgMTUuOCA3LjggMzkuMyA5IDYyLjggMi45IDU3LTEwLjQgMTE1LjktMzkuMSAxNTcuMS03LjcgMTEtMTQuMSAyMy0yNC45IDMwLjYtMjYgMTguMi02NS40IDM0LjctOTkuMiAyMy40LTQ0LjctMTUtNjUtNDQuOC04OS41LTc4LjguNyAxOC43IDEzLjggMzQuMSAyNi44IDQ4LjQgMTEuMyAxMi41IDI1IDI2LjYgMzkuNyAzMi40LTEyLjMtMi45LTMxLjEtMy44LTM2LjIgNy4yLTI4LjYtMS45LTU1LjEtNC44LTY4LjctMjQuMi0xMC42LTE1LjQtMjEuNC00MS40LTI2LjMtNjEuNHptMjIyIDEyNC4xYzQuMS0zIDExLjEtMi45IDE3LjQtMy42LTUuNC0yLjctMTMtMy43LTE5LjMtMi4yLS4xLTQuMi0yLTYuOC0zLjItMTAuMiAxMC42LTMuOCAzNS41LTI4LjUgNDkuNi0yMC4zIDYuNyAzLjkgOS41IDI2LjIgMTAuMSAzNyAuNCA5LS44IDE4LTQuNSAyMi44LTE4LjgtLjYtMzUuOC0yLjgtNTAuNy03IC45LTYuMS0xLTEyLjEuNi0xNi41em0tMTcuMi0yMGMtMTYuOC44LTI2LTEuMi0zOC4zLTEwLjguMi0uOCAxLjQtLjUgMS41LTEuNCAxOCA4IDQwLjgtMy4zIDU5LTQuOS03LjkgNS4xLTE0LjYgMTEuNi0yMi4yIDE3LjF6bS0xMi4xIDMzLjJjLTEuNi05LjQtMy41LTEyLTIuOC0yMC4yIDI1LTE2LjYgMjkuNyAyOC42IDIuOCAyMC4yek0yMjYgNDM4LjZjLTExLjYtLjctNDguMS0xNC0zOC41LTIzLjcgOS40IDYuNSAyNy41IDQuOSA0MS4zIDcuMy44IDQuNC0yLjggMTAuMi0yLjggMTYuNHpNNTcuNyA0OTcuMWMtNC4zLTEyLjctOS4yLTI1LjEtMTQuOC0zNi45IDMwLjgtMjMuOCA2NS4zLTQ4LjkgMTAyLjItNjMuNSAyLjgtMS4xIDIzLjIgMjUuNCAyNi4yIDI3LjYgMTYuNSAxMS43IDM3IDIxIDU2LjIgMzAuMiAxLjIgOC44IDMuOSAyMC4yIDguNyAzNS41LjcgMi4zIDEuNCA0LjcgMi4yIDcuMkg1Ny43em0yNDAuNiA1LjdoLS44Yy4zLS4yLjUtLjQuOC0uNXYuNXptNy41LTUuN2MyLjEtMS40IDQuMy0yLjggNi40LTQuMyAxLjEgMS40IDIuMiAyLjggMy4yIDQuM2gtOS42em0xNS4xLTI0LjdjLTEwLjggNy4zLTIwLjYgMTguMy0zMy4zIDI1LjItNiAzLjMtMjcgMTEuNy0zMy40IDEwLjItMy42LS44LTMuOS01LjMtNS40LTkuNS0zLjEtOS0xMC4xLTIzLjQtMTAuOC0zNy0uOC0xNy4yLTIuNS00NiAxNi00Mi40IDE0LjkgMi45IDMyLjMgOS43IDQzLjkgMTYuMSA3LjEgMy45IDExLjEgOC42IDIxLjkgOS41LS4xIDEuNC0uMSAyLjgtLjIgNC4zLTUuOSAzLjktMTUuMyAzLjgtMjEuOCA3LjEgOS41LjQgMTcgMi43IDIzLjUgNS45LS4xIDMuNC0uMyA3LS40IDEwLjZ6bTUzLjQgMjQuN2gtMTRjLS4xLTMuMi0yLjgtNS44LTYuMS01LjhzLTUuOSAyLjYtNi4xIDUuOGgtMTcuNGMtMi44LTQuNC01LjctOC42LTguOS0xMi41IDIuMS0yLjIgNC00LjcgNi02LjkgOSAzLjcgMTQuOC00LjkgMjEuNy00LjIgNy45LjggMTQuMiAxMS43IDI1LjQgMTFsLS42IDEyLjZ6bTguNyAwYy4yLTQgLjQtNy44LjYtMTEuNSAxNS42LTcuMyAyOSAxLjMgMzUuNyAxMS41SDM4M3ptODMuNC0zN2MtMi4zIDExLjItNS44IDI0LTkuOSAzNy4xLS4yLS4xLS40LS4xLS42LS4xSDQyOGMuNi0xLjEgMS4yLTIuMiAxLjktMy4zLTIuNi02LjEtOS04LjctMTAuOS0xNS41IDEyLjEtMjIuNyA2LjUtOTMuNC0yNC4yLTc4LjUgNC4zLTYuMyAxNS42LTExLjUgMjAuOC0xOS4zIDEzIDEwLjQgMjAuOCAyMC4zIDMzLjIgMzEuNCA2LjggNiAyMCAxMy4zIDIxLjQgMjMuMS44IDUuNS0yLjYgMTguOS0zLjggMjUuMXpNMjIyLjIgMTMwLjVjNS40LTE0LjkgMjcuMi0zNC43IDQ1LTMyIDcuNyAxLjIgMTggOC4yIDEyLjIgMTcuNy0zMC4yLTctNDUuMiAxMi42LTU0LjQgMzMuMS04LjEtMi00LjktMTMuMS0yLjgtMTguOHptMTg0LjEgNjMuMWM4LjItMy42IDIyLjQtLjcgMjkuNi01LjMtNC4yLTExLjUtMTAuMy0yMS40LTkuMy0zNy43LjUgMCAxIDAgMS40LjEgNi44IDE0LjIgMTIuNyAyOS4yIDIxLjQgNDEuNy01LjcgMTMuNS00My42IDI1LjQtNDMuMSAxLjJ6bTIwLjQtNDN6bS0xMTcuMiA0NS43Yy02LjgtMTAuOS0xOS0zMi41LTE0LjUtNDUuMyA2LjUgMTEuOSA4LjYgMjQuNCAxNy44IDMzLjMgNC4xIDQgMTIuMiA5IDguMiAyMC4yLS45IDIuNy03LjggOC42LTExLjcgOS43LTE0LjQgNC4zLTQ3LjkuOS0zNi42LTE3LjEgMTEuOS43IDI3LjkgNy44IDM2LjgtLjh6bTI3LjMgNzBjMy44IDYuNiAxLjQgMTguNyAxMi4xIDIwLjYgMjAuMiAzLjQgNDMuNi0xMi4zIDU4LjEtMTcuOCA5LTE1LjItLjgtMjAuNy04LjktMzAuNS0xNi42LTIwLTM4LjgtNDQuOC0zOC03NC43IDYuNy00LjkgNy4zIDcuNCA4LjIgOS43IDguNyAyMC4zIDMwLjQgNDYuMiA0Ni4zIDYzLjUgMy45IDQuMyAxMC4zIDguNCAxMSAxMS4yIDIuMSA4LjItNS40IDE4LTQuNSAyMy41LTIxLjcgMTMuOS00NS44IDI5LjEtODEuNCAyNS42LTcuNC02LjctMTAuMy0yMS40LTIuOS0zMS4xem0tMjAxLjMtOS4yYy02LjgtMy45LTguNC0yMS0xNi40LTIxLjQtMTEuNC0uNy05LjMgMjIuMi05LjMgMzUuNS03LjgtNy4xLTkuMi0yOS4xLTMuNS00MC4zLTYuNi0zLjItOS41IDMuNi0xMy4xIDUuOSA0LjctMzQuMSA0OS44LTE1LjggNDIuMyAyMC4zem0yOTkuNiAyOC44Yy0xMC4xIDE5LjItMjQuNCA0MC40LTU0IDQxLS42LTYuMi0xLjEtMTUuNiAwLTE5LjQgMjIuNy0yLjIgMzYuNi0xMy43IDU0LTIxLjZ6bS0xNDEuOSAxMi40YzE4LjkgOS45IDUzLjYgMTEgNzkuMyAxMC4yIDEuNCA1LjYgMS4zIDEyLjYgMS40IDE5LjQtMzMgMS44LTcyLTYuNC04MC43LTI5LjZ6bTkyLjIgNDYuN2MtMS43IDQuMy01LjMgOS4zLTkuOCAxMS4xLTEyLjEgNC45LTQ1LjYgOC43LTYyLjQtLjMtMTAuNy01LjctMTcuNS0xOC41LTIzLjQtMjYtMi44LTMuNi0xNi45LTEyLjktLjItMTIuOSAxMy4xIDMyLjcgNTggMjkgOTUuOCAyOC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKaXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5MCAyNDEuN0M0MTcuMSAxNjkgMzIwLjYgNzEuOCAyNDguNSAwIDgzIDE2NC45IDYgMjQxLjcgNiAyNDEuN2MtNy45IDcuOS03LjkgMjAuNyAwIDI4LjdDMTM4LjggNDAyLjcgNjcuOCAzMzEuOSAyNDguNSA1MTJjMzc5LjQtMzc4IDE1LjctMTYuNyAyNDEuNS0yNDEuNyA4LTcuOSA4LTIwLjcgMC0yOC42em0tMjQxLjUgOTBsLTc2LTc1LjcgNzYtNzUuNyA3NiA3NS43LTc2IDc1Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpvZ2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3OC4xIDQ1QzMzNy42IDE5LjkgMjkyLjYgOCAyNDguMiA4IDE2NSA4IDgzLjggNDkuOSAzNi45IDEyNS45Yy03MS45IDExNi42LTM1LjYgMjY5LjMgODEgMzQxLjJzMjY5LjMgMzUuNiAzNDEuMi04MC45YzcxLjktMTE2LjYgMzUuNi0yNjkuNC04MS0zNDEuMnptNTEuOCAzMjMuMmMtNDAuNCA2NS41LTExMC40IDEwMS41LTE4MiAxMDEuNS02LjggMC0xMy42LS40LTIwLjQtMS05LTEzLjYtMTkuOS0zMy4zLTIzLjctNDIuNC01LjctMTMuNy0yNy4yLTQ1LjYgMzEuMi02Ny4xIDUxLjctMTkuMSAxNzYuNy0xNi41IDIwOC44LTE3LjYtNCA5LTguNiAxNy45LTEzLjkgMjYuNnptLTIwMC44LTg2LjNjLTU1LjUtMS40LTgxLjctMjAuOC01OC41LTQ4LjJzNTEuMS00MC43IDY4LjktNTEuMmMxNy45LTEwLjUgMjcuMy0zMy43LTIzLjYtMjkuN0M4Ny4zIDE2MS41IDQ4LjYgMjUyLjEgMzcuNiAyOTNjLTguOC00OS43LS4xLTEwMi43IDI4LjUtMTQ5LjFDMTI4IDQzLjQgMjU5LjYgMTIuMiAzNjAuMSA3NC4xYzc0LjggNDYuMSAxMTEuMiAxMzAuOSA5OS4zIDIxMi43LTI0LjktLjUtMTc5LjMtMy42LTIzMC4zLTQuOXptMTgzLjgtNTQuOGMtMjIuNy02LTU3IDExLjMtODYuNyAyNy4yLTI5LjcgMTUuOC0zMS4xIDguMi0zMS4xIDguMnM0MC4yLTI4LjEgNTAuNy0zNC41IDMxLjktMTQgMTMuNC0yNC42Yy0zLjItMS44LTYuNy0yLjctMTAuNC0yLjctMTcuOCAwLTQxLjUgMTguNy02Ny41IDM1LjYtMzEuNSAyMC41LTY1LjMgMzEuMy02NS4zIDMxLjNsMTY5LjUtMS42IDQ2LjUtMjMuNHMzLjYtOS41LTE5LjEtMTUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSm9vbWxhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS42IDkyLjFDLjYgNTguOCAyNy40IDMyIDYwLjQgMzJjMzAgMCA1NC41IDIxLjkgNTkuMiA1MC4yIDMyLjYtNy42IDY3LjEuNiA5Ni41IDMwbC00NC4zIDQ0LjNjLTIwLjUtMjAuNS00Mi42LTE2LjMtNTUuNC0zLjUtMTQuMyAxNC4zLTE0LjMgMzcuOSAwIDUyLjJsOTkuNSA5OS41LTQ0IDQ0LjNjLTg3LjctODcuMi00OS43LTQ5LjctOTkuOC05OS43LTI2LjgtMjYuNS0zNS02NC44LTI0LjgtOTguOUMyMC40IDE0NC42LjYgMTIwLjcuNiA5Mi4xem0xMjkuNSAxMTYuNGw0NC4zIDQ0LjNjMTAtMTAgODkuNy04OS43IDk5LjctOTkuOCAxNC4zLTE0LjMgMzcuNi0xNC4zIDUxLjkgMCAxMi44IDEyLjggMTcgMzUtMy41IDU1LjRsNDQgNDQuM2MzMS4yLTMxLjIgMzguNS02Ny42IDI4LjktMTAxLjIgMjkuMi00LjEgNTEuOS0yOS4yIDUxLjktNTkuNSAwLTMzLjItMjYuOC02MC4xLTU5LjgtNjAuMS0zMC4zIDAtNTUuNCAyMi41LTU5LjUgNTEuNi0zMy44LTkuOS03MS43LTEuNS05OC4zIDI1LjEtMTguMyAxOS4xLTcxLjEgNzEuNS05OS42IDk5Ljl6bTI2Ni4zIDE1Mi4yYzguMi0zMi43LS45LTY4LjUtMjYuMy05My45LTExLjgtMTIuMiA1IDQuNy05OS41LTk5LjdsLTQ0LjMgNDQuMyA5OS43IDk5LjdjMTQuMyAxNC4zIDE0LjMgMzcuNiAwIDUxLjktMTIuOCAxMi44LTM1IDE3LTU1LjQtMy41bC00NCA0NC4zYzI3LjYgMzAuMiA2OCAzOC44IDEwMi43IDI4IDUuNSAyNy40IDI5LjcgNDguMSA1OC45IDQ4LjEgMzMgMCA1OS44LTI2LjggNTkuOC02MC4xIDAtMzAuMi0yMi41LTU1LTUxLjYtNTkuMXptLTg0LjMtNTMuMWwtNDQtNDQuM2MtODcgODYuNC01MC40IDUwLjQtOTkuNyA5OS44LTE0LjMgMTQuMy0zNy42IDE0LjMtNTEuOSAwLTEzLjEtMTMuNC0xNi45LTM1LjMgMy4yLTU1LjRsLTQ0LTQ0LjNjLTMwLjIgMzAuMi0zOCA2NS4yLTI5LjUgOTguMy0yNi43IDYtNDYuMiAyOS45LTQ2LjIgNTguMkMwIDQ1My4yIDI2LjggNDgwIDU5LjggNDgwYzI4LjYgMCA1Mi41LTE5LjggNTguNi00Ni43IDMyLjcgOC4yIDY4LjUtLjYgOTQuMi0yNiAzMi4xLTMyIDEyLjItMTIuNCA5OS41LTk5Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpzU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTI0My44IDM4MS40YzAgNDMuNi0yNS42IDYzLjUtNjIuOSA2My41LTMzLjcgMC01My4yLTE3LjQtNjMuMi0zOC41bDM0LjMtMjAuN2M2LjYgMTEuNyAxMi42IDIxLjYgMjcuMSAyMS42IDEzLjggMCAyMi42LTUuNCAyMi42LTI2LjVWMjM3LjdoNDIuMXYxNDMuN3ptOTkuNiA2My41Yy0zOS4xIDAtNjQuNC0xOC42LTc2LjctNDNsMzQuMy0xOS44YzkgMTQuNyAyMC44IDI1LjYgNDEuNSAyNS42IDE3LjQgMCAyOC42LTguNyAyOC42LTIwLjggMC0xNC40LTExLjQtMTkuNS0zMC43LTI4bC0xMC41LTQuNWMtMzAuNC0xMi45LTUwLjUtMjkuMi01MC41LTYzLjUgMC0zMS42IDI0LjEtNTUuNiA2MS42LTU1LjYgMjYuOCAwIDQ2IDkuMyA1OS44IDMzLjdMMzY4IDI5MGMtNy4yLTEyLjktMTUtMTgtMjcuMS0xOC0xMi4zIDAtMjAuMSA3LjgtMjAuMSAxOCAwIDEyLjYgNy44IDE3LjcgMjUuOSAyNS42bDEwLjUgNC41YzM1LjggMTUuMyA1NS45IDMxIDU1LjkgNjYuMiAwIDM3LjgtMjkuOCA1OC42LTY5LjcgNTguNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMySDB6bTI0My44IDM0OS40YzAgNDMuNi0yNS42IDYzLjUtNjIuOSA2My41LTMzLjcgMC01My4yLTE3LjQtNjMuMi0zOC41bDM0LjMtMjAuN2M2LjYgMTEuNyAxMi42IDIxLjYgMjcuMSAyMS42IDEzLjggMCAyMi42LTUuNCAyMi42LTI2LjVWMjM3LjdoNDIuMXYxNDMuN3ptOTkuNiA2My41Yy0zOS4xIDAtNjQuNC0xOC42LTc2LjctNDNsMzQuMy0xOS44YzkgMTQuNyAyMC44IDI1LjYgNDEuNSAyNS42IDE3LjQgMCAyOC42LTguNyAyOC42LTIwLjggMC0xNC40LTExLjQtMTkuNS0zMC43LTI4bC0xMC41LTQuNWMtMzAuNC0xMi45LTUwLjUtMjkuMi01MC41LTYzLjUgMC0zMS42IDI0LjEtNTUuNiA2MS42LTU1LjYgMjYuOCAwIDQ2IDkuMyA1OS44IDMzLjdMMzY4IDI5MGMtNy4yLTEyLjktMTUtMTgtMjcuMS0xOC0xMi4zIDAtMjAuMSA3LjgtMjAuMSAxOCAwIDEyLjYgNy44IDE3LjcgMjUuOSAyNS42bDEwLjUgNC41YzM1LjggMTUuMyA1NS45IDMxIDU1LjkgNjYuMiAwIDM3LjgtMjkuOCA1OC42LTY5LjcgNTguNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSnNmaWRkbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEwLjYzNCAyMzcuNDYyYy00LjcyNy0yLjYyMS01LjY2NC01Ljc0OC02LjM4MS0xMC43NzYtMi4zNTItMTYuNDg4LTMuNTM5LTMzLjYxOS05LjA5Ny00OS4wOTUtMzUuODk1LTk5Ljk1Ny0xNTMuOTktMTQzLjM4Ni0yNDYuODQ5LTkxLjY0Ni0yNy4zNyAxNS4yNS00OC45NzEgMzYuMzY5LTY1LjQ5MyA2My45MDMtMy4xODQtMS41MDgtNS40NTgtMi43MS03LjgyNC0zLjY4Ni0zMC4xMDItMTIuNDIxLTU5LjA0OS0xMC4xMjEtODUuMzMxIDkuMTY3LTI1LjUzMSAxOC43MzctMzYuNDIyIDQ0LjU0OC0zMi42NzYgNzYuNDA4LjM1NSAzLjAyNS0xLjk2NyA3LjYyMS00LjUxNCA5LjU0NS0zOS43MTIgMjkuOTkyLTU2LjAzMSA3OC4wNjUtNDEuOTAyIDEyNC42MTUgMTMuODMxIDQ1LjU2OSA1Ny41MTQgNzkuNzk2IDEwNS42MDggODEuNDMzIDMwLjI5MSAxLjAzMSA2MC42MzcuNTQ2IDkwLjk1OS41MzkgODQuMDQxLS4wMjEgMTY4LjA5LjUzMSAyNTIuMTItLjQ4IDUyLjY2NC0uNjM0IDk2LjEwOC0zNi44NzMgMTA4LjIxMi04Ny4yOTMgMTEuNTQtNDguMDc0LTExLjE0NC05Ny4zLTU2LjgzMi0xMjIuNjM0em0yMS4xMDcgMTU2Ljg4Yy0xOC4yMyAyMi40MzItNDIuMzQzIDM1LjI1My03MS4yOCAzNS42NS01Ni44NzQuNzgxLTExMy43NjcuMjMtMTcwLjY1Mi4yMyAwIC43LTE2My4wMjguMTU5LTE2My43MjguMTU0LTQzLjg2MS0uMzMyLTc2LjczOS0xOS43NjYtOTUuMTc1LTU5Ljk5NS0xOC45MDItNDEuMjQ1LTQuMDA0LTkwLjg0OCAzNC4xODYtMTE2LjEwNiA5LjE4Mi02LjA3MyAxMi41MDUtMTEuNTY2IDEwLjA5Ni0yMy4xMzYtNS40OS0yNi4zNjEgNC40NTMtNDcuOTU2IDI2LjQyLTYyLjk4MSAyMi45ODctMTUuNzIzIDQ3LjQyMi0xNi4xNDYgNzIuMDM0LTMuMDgzIDEwLjI2OSA1LjQ1IDE0LjYwNyAxMS41NjQgMjIuMTk4LTIuNTI3IDE0LjIyMi0yNi4zOTkgMzQuNTU3LTQ2LjcyNyA2MC42NzEtNjEuMjk0IDk3LjQ2LTU0LjM2NiAyMjguMzcgNy41NjggMjMwLjI0IDEzMi42OTcuMTIyIDguMTUgMi40MTIgMTIuNDI4IDkuODQ4IDE1Ljg5NCA1Ny41NiAyNi44MjkgNzQuNDU2IDk2LjEyMiAzNS4xNDIgMTQ0LjQ5N3ptLTg3Ljc4OS04MC40OTljLTUuODQ4IDMxLjE1Ny0zNC42MjIgNTUuMDk2LTY2LjY2NiA1NS4wOTUtMTYuOTUzLS4wMDEtMzIuMDU4LTYuNTQ1LTQ0LjA3OS0xNy43MDUtMjcuNjk3LTI1LjcxMy03MS4xNDEtNzQuOTgtOTUuOTM3LTkzLjM4Ny0yMC4wNTYtMTQuODg4LTQxLjk5LTEyLjMzMy02MC4yNzIgMy43ODItNDkuOTk2IDQ0LjA3MSAxNS44NTkgMTIxLjc3NSA2Ny4wNjMgNzcuMTg4IDQuNTQ4LTMuOTYgNy44NC05LjU0MyAxMi43NDQtMTIuODQ0IDguMTg0LTUuNTA5IDIwLjc2Ni0uODg0IDEzLjE2OCAxMC42MjItMTcuMzU4IDI2LjI4NC00OS4zMyAzOC4xOTctNzguODYzIDI5LjMwMS0yOC44OTctOC43MDQtNDguODQtMzUuOTY4LTQ4LjYyNi03MC4xNzkgMS4yMjUtMjIuNDg1IDEyLjM2NC00My4wNiAzNS40MTQtNTUuOTY1IDIyLjU3NS0xMi42MzggNDYuMzY5LTEzLjE0NiA2Ni45OTEgMi40NzRDMjk1LjY4IDI4MC43IDMyMC40NjcgMzIzLjk3IDM1Mi4xODUgMzQzLjQ3YzI0LjU1OCAxNS4wOTkgNTQuMjU0IDcuMzYzIDY4LjgyMy0xNy41MDYgMjguODMtNDkuMjA5LTM0LjU5Mi0xMDUuMDE2LTc4Ljg2OC02My40Ni0zLjk4OSAzLjc0NC02LjkxNyA4LjkzMi0xMS40MSAxMS43Mi0xMC45NzUgNi44MTEtMTcuMzMzLTQuMTEzLTEyLjgwOS0xMC4zNTMgMjAuNzAzLTI4LjU1NCA1MC40NjQtNDAuNDQgODMuMjcxLTI4LjIxNCAzMS40MjkgMTEuNzE0IDQ5LjEwOCA0NC4zNjYgNDIuNzYgNzguMTg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLYWdnbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0LjIgNTAxLjVMMTU4LjQgMzIwLjMgMjk4LjIgMTg1YzIuNi0yLjcgMS43LTEwLjUtNS4zLTEwLjVoLTY5LjJjLTMuNSAwLTcgMS44LTEwLjUgNS4zTDgwLjkgMzEzLjVWNy41cTAtNy41LTcuNS03LjVIMjEuNVExNCAwIDE0IDcuNXY0OTdxMCA3LjUgNy41IDcuNWg1MS45cTcuNSAwIDcuNS03LjV2LTEwOWwzMC44LTI5LjMgMTEwLjUgMTQwLjZjMyAzLjUgNi41IDUuMyAxMC41IDUuM2g2Ni45cTUuMjUgMCA2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtleWJhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg2LjE3IDQxOWExOCAxOCAwIDEgMCAxOCAxOCAxOCAxOCAwIDAgMC0xOC0xOHptMTExLjkyLTE0Ny42Yy05LjUtMTQuNjItMzkuMzctNTIuNDUtODcuMjYtNzMuNzFxLTkuMS00LjA2LTE4LjM4LTcuMjdhNzguNDMgNzguNDMgMCAwIDAtNDcuODgtMTA0LjEzYy0xMi40MS00LjEtMjMuMzMtNi0zMi40MS01Ljc3LS42LTItMS44OS0xMSA5LjQtMzVMMTk4LjY2IDMybC01LjQ4IDcuNTZjLTguNjkgMTIuMDYtMTYuOTIgMjMuNTUtMjQuMzQgMzQuODlhNTEgNTEgMCAwIDAtOC4yOS0xLjI1Yy00MS41My0yLjQ1LTM5LTIuMzMtNDEuMDYtMi4zMy01MC42MSAwLTUwLjc1IDUyLjEyLTUwLjc1IDQ1Ljg4bC0yLjM2IDM2LjY4Yy0xLjYxIDI3IDE5Ljc1IDUwLjIxIDQ3LjYzIDUxLjg1bDguOTMuNTRhMjE0IDIxNCAwIDAgMC00Ni4yOSAzNS41NEMxNCAzMDQuNjYgMTQgMzc0IDE0IDQyOS43N3YzMy42NGwyMy4zMi0yOS44YTE0OC42IDE0OC42IDAgMCAwIDE0LjU2IDM3LjU2YzUuNzggMTAuMTMgMTQuODcgOS40NSAxOS42NCA3LjMzIDQuMjEtMS44NyAxMC02LjkyIDMuNzUtMjAuMTFhMTc4LjI5IDE3OC4yOSAwIDAgMS0xNS43Ni01My4xM2w0Ni44Mi01OS44My0yNC42NiA3NC4xMWM1OC4yMy00Mi40IDE1Ny4zOC02MS43NiAyMzYuMjUtMzguNTkgMzQuMiAxMC4wNSA2Ny40NS42OSA4NC43NC0yMy44NC43Mi0xIDEuMi0yLjE2IDEuODUtMy4yMmExNTYuMDkgMTU2LjA5IDAgMCAxIDIuOCAyOC40M2MwIDIzLjMtMy42OSA1Mi45My0xNC44OCA4MS42NC0yLjUyIDYuNDYgMS43NiAxNC41IDguNiAxNS43NCA3LjQyIDEuNTcgMTUuMzMtMy4xIDE4LjM3LTExLjE1QzQyOSA0NDMgNDM0IDQxNCA0MzQgMzgyLjMyYzAtMzguNTgtMTMtNzcuNDYtMzUuOTEtMTEwLjkyek0xNDIuMzcgMTI4LjU4bC0xNS43LS45My0xLjM5IDIxLjc5IDEzLjEzLjc4YTkzIDkzIDAgMCAwIC4zMiAxOS41N2wtMjIuMzgtMS4zNGExMi4yOCAxMi4yOCAwIDAgMS0xMS43Ni0xMi43OUwxMDcgMTE5YzEtMTIuMTcgMTMuODctMTEuMjcgMTMuMjYtMTEuMzJsMjkuMTEgMS43M2ExNDQuMzUgMTQ0LjM1IDAgMCAwLTcgMTkuMTd6bTE0OC40MiAxNzIuMThhMTAuNTEgMTAuNTEgMCAwIDEtMTQuMzUtMS4zOWwtOS42OC0xMS40OS0zNC40MiAyN2E4LjA5IDguMDkgMCAwIDEtMTEuMTMtMS4wOGwtMTUuNzgtMTguNjRhNy4zOCA3LjM4IDAgMCAxIDEuMzQtMTAuMzRsMzQuNTctMjcuMTgtMTQuMTQtMTYuNzQtMTcuMDkgMTMuNDVhNy43NSA3Ljc1IDAgMCAxLTEwLjU5LTFzLTMuNzItNC40Mi0zLjgtNC41M2E3LjM4IDcuMzggMCAwIDEgMS4zNy0xMC4zNEwyMTQgMjI1LjE5cy0xOC41MS0yMi0xOC42LTIyLjE0YTkuNTYgOS41NiAwIDAgMSAxLjc0LTEzLjQyIDEwLjM4IDEwLjM4IDAgMCAxIDE0LjMgMS4zN2w4MS4wOSA5Ni4zMmE5LjU4IDkuNTggMCAwIDEtMS43NCAxMy40NHpNMTg3LjQ0IDQxOWExOCAxOCAwIDEgMCAxOCAxOCAxOCAxOCAwIDAgMC0xOC0xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2V5Y2RuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzLjggNDA5LjNsNjAuNS01OWMzMi4xIDQyLjggNzEuMSA2NiAxMjYuNiA2Ny40IDMwLjUuNyA2MC4zLTcgODYuNC0yMi40IDUuMSA1LjMgMTguNSAxOS41IDIwLjkgMjItMzIuMiAyMC43LTY5LjYgMzEuMS0xMDguMSAzMC4yLTQzLjMtMS4xLTg0LjYtMTYuNy0xMTcuNy00NC40LjMtLjYtMzguMiAzNy41LTM4LjYgMzcuOSA5LjUgMjkuOC0xMy4xIDYyLjQtNDYuMyA2Mi40QzIwLjcgNTAzLjMgMCA0ODEuNyAwIDQ1NC45YzAtMzQuMyAzMy4xLTU2LjYgNjMuOC00NS42em0zNTQuOS0yNTIuNGMxOS4xIDMxLjMgMjkuNiA2Ny40IDI4LjcgMTA0LTEuMSA0NC44LTE5IDg3LjUtNDguNiAxMjEgLjMuMyAyMy44IDI1LjIgMjQuMSAyNS41IDkuNi0xLjMgMTkuMiAyIDI1LjkgOS4xIDExLjMgMTIgMTAuOSAzMC45LTEuMSA0Mi40LTEyIDExLjMtMzAuOSAxMC45LTQyLjQtMS4xLTYuNy03LTkuNC0xNi44LTcuNi0yNi4zLTI0LjktMjYuNi00NC40LTQ3LjItNDQuNC00Ny4yIDQyLjctMzQuMSA2My4zLTc5LjYgNjQuNC0xMjQuMi43LTI4LjktNy4yLTU3LjItMjEuMS04Mi4ybDIyLjEtMjF6TTEwNCA1My4xYzYuNyA3IDkuNCAxNi44IDcuNiAyNi4zbDQ1LjkgNDguMWMtNC43IDMuOC0xMy4zIDEwLjQtMjIuOCAyMS4zLTI1LjQgMjguNS0zOS42IDY0LjgtNDAuNyAxMDIuOS0uNyAyOC45IDYuMSA1Ny4yIDIwIDgyLjRsLTIyIDIxLjVDNzIuNyAzMjQgNjMuMSAyODcuOSA2NC4yIDI1MC45YzEtNDQuNiAxOC4zLTg3LjYgNDcuNS0xMjEuMWwtMjUuMy0yNi40Yy05LjYgMS4zLTE5LjItMi0yNS45LTkuMS0xMS4zLTEyLTEwLjktMzAuOSAxLjEtNDIuNEM3My41IDQwLjcgOTIuMiA0MSAxMDQgNTMuMXpNNDY0LjkgOGMyNiAwIDQ3LjEgMjIuNCA0Ny4xIDQ4LjNTNDkwLjkgMTA0IDQ2NC45IDEwNGMtNi4zLjEtMTQtMS4xLTE1LjktMS44bC02Mi45IDU5LjdjLTMyLjctNDMuNi03Ni43LTY1LjktMTI2LjktNjcuMi0zMC41LS43LTYwLjMgNi44LTg2LjIgMjIuNGwtMjEuMS0yMkMxODQuMSA3NC4zIDIyMS41IDY0IDI2MCA2NC45YzQzLjMgMS4xIDg0LjYgMTYuNyAxMTcuNyA0NC42bDQxLjEtMzguNmMtMS41LTQuNy0yLjItOS42LTIuMi0xNC41QzQxNi41IDI5LjcgNDM4LjkgOCA0NjQuOSA4ek0yNTYuNyAxMTMuNGM1LjUgMCAxMC45LjQgMTYuNCAxLjEgNzguMSA5LjggMTMzLjQgODEuMSAxMjMuOCAxNTkuMS05LjggNzguMS04MS4xIDEzMy40LTE1OS4xIDEyMy44LTc4LjEtOS44LTEzMy40LTgxLjEtMTIzLjgtMTU5LjIgOS4zLTcyLjQgNzAuMS0xMjQuNiAxNDIuNy0xMjQuOHptLTU5IDExOS40Yy42IDIyLjcgMTIuMiA0MS44IDMyLjQgNTIuMmwtMTEgNTEuN2g3My43bC0xMS01MS43YzIwLjEtMTAuOSAzMi4xLTI5IDMyLjQtNTIuMi0uNC0zMi44LTI1LjgtNTcuNS01OC4zLTU4LjMtMzIuMS44LTU3LjMgMjQuOC01OC4yIDU4LjN6TTI1NiAxNjBcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2lja3N0YXJ0ZXJLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0Ny4zIDExNC40YzAtNTYuMi0zMi41LTgyLjQtNzMuNC04Mi40QzI2LjIgMzIgMCA2OC4yIDAgMTEzLjR2MjgzYzAgNDcuMyAyNS4zIDgzLjQgNzQuOSA4My40IDM5LjggMCA3Mi40LTI1LjYgNzIuNC04My40di03Ni41bDExMi4xIDEzOC4zYzIyLjcgMjcuMiA3Mi4xIDMwLjcgMTAzLjIgMCAyNy0yNy42IDI3LjMtNjcuNCA3LjQtOTIuMmwtOTAuOC0xMTQuOCA3NC45LTEwNy40YzE3LjQtMjQuNyAxNy41LTYzLjEtMTAuNC04OS44LTMwLjMtMjktODIuNC0zMS42LTExMy42IDEyLjhMMTQ3LjMgMTg1di03MC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaWNrc3RhcnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgNDgwSDQ4Yy0yNi40IDAtNDgtMjEuNi00OC00OFY4MGMwLTI2LjQgMjEuNi00OCA0OC00OGgzNTJjMjYuNCAwIDQ4IDIxLjYgNDggNDh2MzUyYzAgMjYuNC0yMS42IDQ4LTQ4IDQ4ek0xOTkuNiAxNzguNWMwLTMwLjctMTcuNi00NS4xLTM5LjctNDUuMS0yNS44IDAtNDAgMTkuOC00MCA0NC41djE1NC44YzAgMjUuOCAxMy43IDQ1LjYgNDAuNSA0NS42IDIxLjUgMCAzOS4yLTE0IDM5LjItNDUuNnYtNDEuOGw2MC42IDc1LjdjMTIuMyAxNC45IDM5IDE2LjggNTUuOCAwIDE0LjYtMTUuMSAxNC44LTM2LjggNC01MC40bC00OS4xLTYyLjggNDAuNS01OC43YzkuNC0xMy41IDkuNS0zNC41LTUuNi00OS4xLTE2LjQtMTUuOS00NC42LTE3LjMtNjEuNCA3bC00NC44IDY0Ljd2LTM4Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtvcnZ1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODYuNSAzNGgtMzI3QzI2LjggMzQgMCA2MC44IDAgOTMuNXYzMjcuMUMwIDQ1My4yIDI2LjggNDgwIDU5LjUgNDgwaDMyNy4xYzMzIDAgNTkuNS0yNi44IDU5LjUtNTkuNXYtMzI3QzQ0NiA2MC44IDQxOS4yIDM0IDM4Ni41IDM0ek04Ny4xIDEyMC44aDk2djExNmw2MS44LTExNmgxMTAuOWwtODEuMiAxMzJIODcuMXYtMTMyem0xNjEuOCAyNzIuMWwtNjUuNy0xMTMuNnYxMTMuNmgtOTZWMjYyLjFoMTkxLjVsODguNiAxMzAuOEgyNDguOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFyYXZlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQuNCwxMTUuODNhNS43Miw1LjcyLDAsMCwwLS4yOC0uNjgsOC41Miw4LjUyLDAsMCwwLS41My0xLjI1LDYsNiwwLDAsMC0uNTQtLjcxLDkuMzYsOS4zNiwwLDAsMC0uNzItLjk0Yy0uMjMtLjIyLS41Mi0uNC0uNzctLjZhOC44NCw4Ljg0LDAsMCwwLS45LS42OEw0MDQuNCw1NS41NWE4LDgsMCwwLDAtOCwwTDMwMC4xMiwxMTFoMGE4LjA3LDguMDcsMCwwLDAtLjg4LjY5LDcuNjgsNy42OCwwLDAsMC0uNzguNiw4LjIzLDguMjMsMCwwLDAtLjcyLjkzYy0uMTcuMjQtLjM5LjQ1LS41NC43MWE5LjcsOS43LDAsMCwwLS41MiwxLjI1Yy0uMDguMjMtLjIxLjQ0LS4yOC42OGE4LjA4LDguMDgsMCwwLDAtLjI4LDIuMDhWMjIzLjE4bC04MC4yMiw0Ni4xOVY2My40NGE3LjgsNy44LDAsMCwwLS4yOC0yLjA5Yy0uMDYtLjI0LS4yLS40NS0uMjgtLjY4YTguMzUsOC4zNSwwLDAsMC0uNTItMS4yNGMtLjE0LS4yNi0uMzctLjQ3LS41NC0uNzJhOS4zNiw5LjM2LDAsMCwwLS43Mi0uOTQsOS40Niw5LjQ2LDAsMCwwLS43OC0uNiw5LjgsOS44LDAsMCwwLS44OC0uNjhoMEwxMTUuNjEsMS4wN2E4LDgsMCwwLDAtOCwwTDExLjM0LDU2LjQ5aDBhNi41Miw2LjUyLDAsMCwwLS44OC42OSw3LjgxLDcuODEsMCwwLDAtLjc5LjYsOC4xNSw4LjE1LDAsMCwwLS43MS45M2MtLjE4LjI1LS40LjQ2LS41NS43MmE3Ljg4LDcuODgsMCwwLDAtLjUxLDEuMjQsNi40Niw2LjQ2LDAsMCwwLS4yOS42Nyw4LjE4LDguMTgsMCwwLDAtLjI4LDIuMXYzMjkuN2E4LDgsMCwwLDAsNCw2Ljk1bDE5Mi41LDExMC44NGE4LjgzLDguODMsMCwwLDAsMS4zMy41NGMuMjEuMDguNDEuMi42My4yNmE3LjkyLDcuOTIsMCwwLDAsNC4xLDBjLjItLjA1LjM3LS4xNi41NS0uMjJhOC42LDguNiwwLDAsMCwxLjQtLjU4TDQwNC40LDQwMC4wOWE4LDgsMCwwLDAsNC02Ljk1VjI4Ny44OGw5Mi4yNC01My4xMWE4LDgsMCwwLDAsNC03VjExNy45MkE4LjYzLDguNjMsMCwwLDAsNTA0LjQsMTE1LjgzWk0xMTEuNiwxNy4yOGgwbDgwLjE5LDQ2LjE1LTgwLjIsNDYuMThMMzEuNDEsNjMuNDRabTg4LjI1LDYwVjI3OC42bC00Ni41MywyNi43OS0zMy42OSwxOS40VjEyMy41bDQ2LjUzLTI2Ljc5Wm0wLDQxMi43OEwyMy4zNywzODguNVY3Ny4zMkw1Ny4wNiw5Ni43bDQ2LjUyLDI2LjhWMzM4LjY4YTYuOTQsNi45NCwwLDAsMCwuMTIuOSw4LDgsMCwwLDAsLjE2LDEuMThoMGE1LjkyLDUuOTIsMCwwLDAsLjM4LjksNi4zOCw2LjM4LDAsMCwwLC40MiwxdjBhOC41NCw4LjU0LDAsMCwwLC42Ljc4LDcuNjIsNy42MiwwLDAsMCwuNjYuODRsMCwwYy4yMy4yMi41Mi4zOC43Ny41OGE4LjkzLDguOTMsMCwwLDAsLjg2LjY2bDAsMCwwLDAsOTIuMTksNTIuMThabTgtMTA2LjE3LTgwLjA2LTQ1LjMyLDg0LjA5LTQ4LjQxLDkyLjI2LTUzLjExLDgwLjEzLDQ2LjEzLTU4LjgsMzMuNTZabTE4NC41Miw0LjU3TDIxNS44OCw0OTAuMTFWMzk3LjhMMzQ2LjYsMzIzLjJsNDUuNzctMjYuMTVabTAtMTE5LjEzTDM1OC42OCwyNTBsLTQ2LjUzLTI2Ljc5VjEzMS43OWwzMy42OSwxOS40TDM5Mi4zNywxNzhabTgtMTA1LjI4LTgwLjItNDYuMTcsODAuMi00Ni4xNiw4MC4xOCw0Ni4xNVptOCwxMDUuMjhWMTc4TDQ1NSwxNTEuMTlsMzMuNjgtMTkuNHY5MS4zOWgwWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXN0Zm1TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptLTkyLjIgMzEyLjljLTYzLjQgMC04NS40LTI4LjYtOTcuMS02NC4xLTE2LjMtNTEtMjEuNS04NC4zLTYzLTg0LjMtMjIuNCAwLTQ1LjEgMTYuMS00NS4xIDYxLjIgMCAzNS4yIDE4IDU3LjIgNDMuMyA1Ny4yIDI4LjYgMCA0Ny42LTIxLjMgNDcuNi0yMS4zbDExLjcgMzEuOXMtMTkuOCAxOS40LTYxLjIgMTkuNGMtNTEuMyAwLTc5LjktMzAuMS03OS45LTg1LjggMC01Ny45IDI4LjYtOTIgODIuNS05MiA3My41IDAgODAuOCA0MS40IDEwMC44IDEwMS45IDguOCAyNi44IDI0LjIgNDYuMiA2MS4yIDQ2LjIgMjQuOSAwIDM4LjEtNS41IDM4LjEtMTkuMSAwLTE5LjktMjEuOC0yMi00OS45LTI4LjYtMzAuNC03LjMtNDIuNS0yMy4xLTQyLjUtNDggMC00MCAzMi4zLTUyLjQgNjUuMi01Mi40IDM3LjQgMCA2MC4xIDEzLjYgNjMgNDYuNmwtMzYuNyA0LjRjLTEuNS0xNS44LTExLTIyLjQtMjguNi0yMi40LTE2LjEgMC0yNiA3LjMtMjYgMTkuOCAwIDExIDQuOCAxNy42IDIwLjkgMjEuMyAzMi43IDcuMSA3MS44IDEyIDcxLjggNTcuNS4xIDM2LjctMzAuNyA1MC42LTc2LjEgNTAuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFzdGZtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNS44IDM2Ny4xbC0xOC44LTUxcy0zMC41IDM0LTc2LjIgMzRjLTQwLjUgMC02OS4yLTM1LjItNjkuMi05MS41IDAtNzIuMSAzNi40LTk3LjkgNzIuMS05Ny45IDY2LjUgMCA3NC44IDUzLjMgMTAwLjkgMTM0LjkgMTguOCA1Ni45IDU0IDEwMi42IDE1NS40IDEwMi42IDcyLjcgMCAxMjItMjIuMyAxMjItODAuOSAwLTcyLjktNjIuNy04MC42LTExNS05Mi4xLTI1LjgtNS45LTMzLjQtMTYuNC0zMy40LTM0IDAtMTkuOSAxNS44LTMxLjcgNDEuNi0zMS43IDI4LjIgMCA0My40IDEwLjYgNDUuNyAzNS44bDU4LjYtN2MtNC43LTUyLjgtNDEuMS03NC41LTEwMC45LTc0LjUtNTIuOCAwLTEwNC40IDE5LjktMTA0LjQgODMuOSAwIDM5LjkgMTkuNCA2NS4xIDY4IDc2LjggNDQuOSAxMC42IDc5LjggMTMuOCA3OS44IDQ1LjcgMCAyMS43LTIxLjEgMzAuNS02MSAzMC41LTU5LjIgMC04My45LTMxLjEtOTcuOS03My45LTMyLTk2LjgtNDMuNi0xNjMtMTYxLjMtMTYzQzQ1LjcgMTEzLjggMCAxNjguMyAwIDI2MWMwIDg5LjEgNDUuNyAxMzcuMiAxMjcuOSAxMzcuMiA2Ni4yIDAgOTcuOS0zMS4xIDk3LjktMzEuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGVhbnB1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODYuNTM5IDExMS40ODVsMTUuMDk2IDI0OC45NTUtMTAuOTc5LS4yNzVjLTM2LjIzMi0uODI0LTcxLjY0IDguNzgzLTEwMi42NTcgMjcuOTk3LTMxLjAxNi0xOS4yMTQtNjYuNDI0LTI3Ljk5Ny0xMDIuNjU3LTI3Ljk5Ny00NS41NjQgMC04Mi4wNyAxMC43MDUtMTIzLjUxNiAyNy43MjNMOTMuMTE3IDEyOS42YzI4LjU0Ni0xMS44MDMgNjEuNDg0LTE4LjExNSA5Mi4yMjYtMTguMTE1IDQxLjE3MyAwIDczLjgzNiAxMy4xNzUgMTAyLjY1NyA0Mi41NDQgMjcuNzIzLTI4LjI3MSA1OS4wMTMtNDEuNzIxIDk4LjUzOS00Mi41NDR6TTU2OS4wNyA0NDhjLTI1LjUyNiAwLTQ3LjQ4NS01LjIxNS03MC41NDItMTUuNjQ1LTM0LjMxLTE1LjY0NS02OS45OTMtMjQuOTc4LTEwNy44NzEtMjQuOTc4LTM4Ljk3NyAwLTc0LjkzNCAxMi45MDEtMTAyLjY1NyA0MC42MjMtMjcuNzIzLTI3LjcyMy02My42OC00MC42MjMtMTAyLjY1Ny00MC42MjMtMzcuODc4IDAtNzMuNTYxIDkuMzMzLTEwNy44NzEgMjQuOTc4QzU1LjIzOSA0NDIuMjM2IDMyLjczMSA0NDggOC4zMDMgNDQ4SDYuOTNMNDkuNDc1IDk4Ljg1OUM4OC43MjYgNzYuNjI2IDEzNi40ODYgNjQgMTgxLjc3NSA2NCAyMTguODMgNjQgMjU2Ljk4NCA3MS42ODUgMjg4IDkzLjA5NSAzMTkuMDE2IDcxLjY4NSAzNTcuMTcgNjQgMzk0LjIyNSA2NGM0NS4yODkgMCA5My4wNDkgMTIuNjI2IDEzMi4zIDM0Ljg1OUw1NjkuMDcgNDQ4em0tNDMuMzY4LTQ0Ljc0MWwtMzQuMDM2LTI4MC4yNDZjLTMwLjc0Mi0xMy45OTktNjcuMjQ4LTIxLjQxLTEwMS4wMDktMjEuNDEtMzguNDI4IDAtNzQuMzg1IDEyLjA3Ny0xMDIuNjU3IDM4LjcwMi0yOC4yNzItMjYuNjI1LTY0LjIyOC0zOC43MDItMTAyLjY1Ny0zOC43MDItMzMuNzYxIDAtNzAuMjY3IDcuNDExLTEwMS4wMDkgMjEuNDFMNTAuMjk4IDQwMy4yNTljNDcuMjExLTE5LjQ4NyA4Mi44OTQtMzMuNDg2IDEzNS4wNDUtMzMuNDg2IDM3LjYwNCAwIDcwLjgxNyA5LjYwNiAxMDIuNjU3IDI5LjY0NCAzMS44NC0yMC4wMzggNjUuMDUyLTI5LjY0NCAxMDIuNjU3LTI5LjY0NCA1Mi4xNTEgMCA4Ny44MzQgMTMuOTk5IDEzNS4wNDUgMzMuNDg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxMi43IDIxOWMwLTIwLjUgMy4yLTMyLjYgMy4yLTU0LjYgMC0zNC4yLTEyLjYtNDUuMi00MC41LTQ1LjJoLTIwLjV2MjQuMmg2LjNjMTQuMiAwIDE3LjMgNC43IDE3LjMgMjIuMSAwIDE2LjMtMS42IDMyLjYtMS42IDUxLjUgMCAyNC4yIDcuOSAzMy42IDIzLjYgMzcuM3YxLjZjLTE1LjggMy43LTIzLjYgMTMuMS0yMy42IDM3LjMgMCAxOC45IDEuNiAzNC4yIDEuNiA1MS41IDAgMTcuOS0zLjcgMjIuNi0xNy4zIDIyLjZ2LjVoLTYuM1YzOTNoMjAuNWMyNy44IDAgNDAuNS0xMSA0MC41LTQ1LjIgMC0yMi42LTMuMi0zNC4yLTMuMi01NC42IDAtMTEgNi44LTIyLjYgMjcuMy0yMy42di0yNy4zYy0yMC41LS43LTI3LjMtMTIuMy0yNy4zLTIzLjN6bS0xMDUuNiAzMmMtMTUuOC02LjMtMzAuNS0xMC0zMC41LTIwLjUgMC03LjkgNi4zLTEyLjYgMTcuOS0xMi42czIyLjEgNC43IDMzLjYgMTMuMWwyMS0yNy44Yy0xMy4xLTEwLTMxLTIwLjUtNTUuMi0yMC41LTM1LjcgMC01OS45IDIwLjUtNTkuOSA0OS40IDAgMjUuNyAyMi42IDM4LjkgNDEuNSA0Ni4yIDE2LjMgNi4zIDMyLjEgMTEuNiAzMi4xIDIyLjEgMCA3LjktNi4zIDEzLjEtMjAuNSAxMy4xLTEzLjEgMC0yNi4zLTUuMy00MC41LTE2LjNsLTIxIDMwLjVjMTUuOCAxMy4xIDM5LjkgMjIuMSA1OS45IDIyLjEgNDIgMCA2NC42LTIyLjEgNjQuNi01MXMtMjIuNS00MS00My00Ny44em0tMzU4LjkgNTkuNGMtMy43IDAtOC40LTMuMi04LjQtMTMuMVYxMTkuMUg2NS4yYy0yOC40IDAtNDEgMTEtNDEgNDUuMiAwIDIyLjYgMy4yIDM1LjIgMy4yIDU0LjYgMCAxMS02LjggMjIuNi0yNy4zIDIzLjZ2MjcuM2MyMC41LjUgMjcuMyAxMi4xIDI3LjMgMjMuMSAwIDE5LjQtMy4yIDMxLTMuMiA1My42IDAgMzQuMiAxMi42IDQ1LjIgNDAuNSA0NS4yaDIwLjV2LTI0LjJoLTYuM2MtMTMuMSAwLTE3LjMtNS4zLTE3LjMtMjIuNnMxLjYtMzIuMSAxLjYtNTEuNWMwLTI0LjItNy45LTMzLjYtMjMuNi0zNy4zdi0xLjZjMTUuOC0zLjcgMjMuNi0xMy4xIDIzLjYtMzcuMyAwLTE4LjktMS42LTM0LjItMS42LTUxLjVzMy43LTIyLjEgMTcuMy0yMi4xSDkzdjE1MC44YzAgMzIuMSAxMSA1My4xIDQzLjEgNTMuMSAxMCAwIDE3LjktMS42IDIzLjYtMy43bC01LjMtMzQuMmMtMy4xLjgtNC42LjgtNi4yLjh6TTM3OS45IDI1MWMtMTYuMy02LjMtMzEtMTAtMzEtMjAuNSAwLTcuOSA2LjMtMTIuNiAxNy45LTEyLjYgMTEuNiAwIDIyLjEgNC43IDMzLjYgMTMuMWwyMS0yNy44Yy0xMy4xLTEwLTMxLTIwLjUtNTUuMi0yMC41LTM1LjcgMC01OS45IDIwLjUtNTkuOSA0OS40IDAgMjUuNyAyMi42IDM4LjkgNDEuNSA0Ni4yIDE2LjMgNi4zIDMyLjEgMTEuNiAzMi4xIDIyLjEgMCA3LjktNi4zIDEzLjEtMjAuNSAxMy4xLTEzLjEgMC0yNi4zLTUuMy00MC41LTE2LjNsLTIwLjUgMzAuNWMxNS44IDEzLjEgMzkuOSAyMi4xIDU5LjkgMjIuMSA0MiAwIDY0LjYtMjIuMSA2NC42LTUxIC4xLTI4LjktMjIuNS00MS00My00Ny44em0tMTU1LTY4LjhjLTM4LjQgMC03NS4xIDMyLjEtNzQuMSA4Mi41IDAgNTIgMzQuMiA4Mi41IDc5LjMgODIuNSAxOC45IDAgMzkuOS02LjggNTYuMi0xNy45bC0xNS44LTI3LjhjLTExLjYgNi44LTIyLjYgMTAtMzQuMiAxMC0yMSAwLTM3LjMtMTAtNDEuNS0zNC4ySDI5MGMuNS0zLjcgMS42LTExIDEuNi0xOS40LjYtNDIuNi0yMi42LTc1LjctNjYuNy03NS43em0tMzAgNjYuMmMzLjItMjEgMTUuOC0zMSAzMC41LTMxIDE4LjkgMCAyNi4zIDEzLjEgMjYuMyAzMWgtNTYuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzIuMSAyMDQuMnY3MS4xYzAgMS44LTEuNCAzLjItMy4yIDMuMmgtMTEuNGMtMS4xIDAtMi4xLS42LTIuNi0xLjNsLTMyLjYtNDR2NDIuMmMwIDEuOC0xLjQgMy4yLTMuMiAzLjJoLTExLjRjLTEuOCAwLTMuMi0xLjQtMy4yLTMuMnYtNzEuMWMwLTEuOCAxLjQtMy4yIDMuMi0zLjJIMjE5YzEgMCAyLjEuNSAyLjYgMS40bDMyLjYgNDR2LTQyLjJjMC0xLjggMS40LTMuMiAzLjItMy4yaDExLjRjMS44LS4xIDMuMyAxLjQgMy4zIDMuMXptLTgyLTMuMmgtMTEuNGMtMS44IDAtMy4yIDEuNC0zLjIgMy4ydjcxLjFjMCAxLjggMS40IDMuMiAzLjIgMy4yaDExLjRjMS44IDAgMy4yLTEuNCAzLjItMy4ydi03MS4xYzAtMS43LTEuNC0zLjItMy4yLTMuMnptLTI3LjUgNTkuNmgtMzEuMXYtNTYuNGMwLTEuOC0xLjQtMy4yLTMuMi0zLjJoLTExLjRjLTEuOCAwLTMuMiAxLjQtMy4yIDMuMnY3MS4xYzAgLjkuMyAxLjYuOSAyLjIuNi41IDEuMy45IDIuMi45aDQ1LjdjMS44IDAgMy4yLTEuNCAzLjItMy4ydi0xMS40YzAtMS43LTEuNC0zLjItMy4xLTMuMnpNMzMyLjEgMjAxaC00NS43Yy0xLjcgMC0zLjIgMS40LTMuMiAzLjJ2NzEuMWMwIDEuNyAxLjQgMy4yIDMuMiAzLjJoNDUuN2MxLjggMCAzLjItMS40IDMuMi0zLjJ2LTExLjRjMC0xLjgtMS40LTMuMi0zLjItMy4ySDMwMXYtMTJoMzEuMWMxLjggMCAzLjItMS40IDMuMi0zLjJWMjM0YzAtMS44LTEuNC0zLjItMy4yLTMuMkgzMDF2LTEyaDMxLjFjMS44IDAgMy4yLTEuNCAzLjItMy4ydi0xMS40Yy0uMS0xLjctMS41LTMuMi0zLjItMy4yek00NDggMTEzLjdWMzk5Yy0uMSA0NC44LTM2LjggODEuMS04MS43IDgxSDgxYy00NC44LS4xLTgxLjEtMzYuOS04MS04MS43VjExM2MuMS00NC44IDM2LjktODEuMSA4MS43LTgxSDM2N2M0NC44LjEgODEuMSAzNi44IDgxIDgxLjd6bS02MS42IDEyMi42YzAtNzMtNzMuMi0xMzIuNC0xNjMuMS0xMzIuNC04OS45IDAtMTYzLjEgNTkuNC0xNjMuMSAxMzIuNCAwIDY1LjQgNTggMTIwLjIgMTM2LjQgMTMwLjYgMTkuMSA0LjEgMTYuOSAxMS4xIDEyLjYgMzYuOC0uNyA0LjEtMy4zIDE2LjEgMTQuMSA4LjggMTcuNC03LjMgOTMuOS01NS4zIDEyOC4yLTk0LjcgMjMuNi0yNiAzNC45LTUyLjMgMzQuOS04MS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW5rZWRpbkluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwMC4yOCA0NDhINy40VjE0OC45aDkyLjg4ek01My43OSAxMDguMUMyNC4wOSAxMDguMSAwIDgzLjUgMCA1My44YTUzLjc5IDUzLjc5IDAgMCAxIDEwNy41OCAwYzAgMjkuNy0yNC4xIDU0LjMtNTMuNzkgNTQuM3pNNDQ3LjkgNDQ4aC05Mi42OFYzMDIuNGMwLTM0LjctLjctNzkuMi00OC4yOS03OS4yLTQ4LjI5IDAtNTUuNjkgMzcuNy01NS42OSA3Ni43VjQ0OGgtOTIuNzhWMTQ4LjloODkuMDh2NDAuOGgxLjNjMTIuNC0yMy41IDQyLjY5LTQ4LjMgODcuODgtNDguMyA5NCAwIDExMS4yOCA2MS45IDExMS4yOCAxNDIuM1Y0NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpbmtlZGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAzMkgzMS45QzE0LjMgMzIgMCA0Ni41IDAgNjQuM3YzODMuNEMwIDQ2NS41IDE0LjMgNDgwIDMxLjkgNDgwSDQxNmMxNy42IDAgMzItMTQuNSAzMi0zMi4zVjY0LjNjMC0xNy44LTE0LjQtMzIuMy0zMi0zMi4zek0xMzUuNCA0MTZINjlWMjAyLjJoNjYuNVY0MTZ6bS0zMy4yLTI0M2MtMjEuMyAwLTM4LjUtMTcuMy0zOC41LTM4LjVTODAuOSA5NiAxMDIuMiA5NmMyMS4yIDAgMzguNSAxNy4zIDM4LjUgMzguNSAwIDIxLjMtMTcuMiAzOC41LTM4LjUgMzguNXptMjgyLjEgMjQzaC02Ni40VjMxMmMwLTI0LjgtLjUtNTYuNy0zNC41LTU2LjctMzQuNiAwLTM5LjkgMjctMzkuOSA1NC45VjQxNmgtNjYuNFYyMDIuMmg2My43djI5LjJoLjljOC45LTE2LjggMzAuNi0zNC41IDYyLjktMzQuNSA2Ny4yIDAgNzkuNyA0NC4zIDc5LjcgMTAxLjlWNDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW5vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM3LjQgMjI2LjNjLS4zLS45LS45LTEuNC0xLjQtMmwtNzAtMzguNmMtLjktLjYtMi0uNi0zLjEgMGwtNTguOSAzNmMtLjkuNi0xLjQgMS43LTEuNCAyLjZsLS45IDMxLjQtMjQtMTZjLS45LS42LTIuMy0uNi0zLjEgMEwyNDAgMjYwLjlsLTEuNC0zNS4xYzAtLjktLjYtMi0xLjQtMi4zbC0zNi0yNC4zIDMzLjctMTcuNGMxLjEtLjYgMS43LTEuNyAxLjctMi45bC01LjctMTMyLjNjMC0uOS0uOS0yLTEuNy0yLjZMMTM4LjYuM2MtLjktLjMtMS43LS4zLTIuMy0uM0wxMi42IDM4LjZjLTEuNC42LTIuMyAyLTIgMy43TDM4IDE3NS40Yy45IDMuNCAzNCAyNy40IDM4LjYgMzAuOWwtMjYuOSAxMi45Yy0xLjQuOS0yIDIuMy0xLjcgMy40bDIwLjYgMTAwLjNjLjYgMi45IDIzLjcgMjMuMSAyNy4xIDI2LjNsLTE3LjQgMTAuNmMtLjkuNi0xLjcgMi0xLjQgMy4xIDEuNCA3LjEgMTUuNCA3Ny43IDE2LjkgNzkuMWw2NS4xIDY5LjFjLjYuNiAxLjQuNiAyLjMuOS42IDAgMS4xLS4zIDEuNy0uNmw4My43LTY2LjljLjktLjYgMS4xLTEuNCAxLjEtMi4zbC0yLTQ2IDI4IDIzLjdjMS4xLjkgMi45LjkgNCAwbDY2LjktNTMuNGMuOS0uNiAxLjEtMS40IDEuMS0yLjNsMi4zLTMzLjQgMjAuMyAxNGMxLjEuOSAyLjYuOSAzLjcgMGw1NC42LTQzLjdjLjYtLjMgMS4xLTEuMSAxLjEtMiAuOS02LjUgMTAuMy03MC44IDkuNy03Mi44em0tMjA0LjggNC44bDQgOTIuNi05MC42IDYxLjItMTQtOTYuNiAxMDAuNi01Ny4yem0tNy43LTE4MGw1LjQgMTI2LTEwNi42IDU1LjRMMTA0IDk3LjdsMTIwLjktNDYuNnpNNDQgMTczLjFMMTggNDhsNzkuNyA0OS40IDE5LjQgMTMyLjlMNDQgMTczLjF6bTMwLjYgMTQ3LjhMNTUuNyAyMzBsNzAgNTguMyAxMy43IDkzLjQtNjQuOC02MC44em0yNC4zIDExNy43bC0xMy43LTY3LjEgNjEuNyA2MC45IDkuNyA2Ny40LTU3LjctNjEuMnptNjQuNSA2NC41bC0xMC42LTcwLjkgODUuNy02MS40IDMuMSA3MC03OC4yIDYyLjN6bTgyLTExNS4xYzAtMy40LjktMjIuOS0yLTI1LjFsLTI0LjMtMjAgMjIuMy0xNC45YzIuMy0xLjcgMS4xLTUuNyAxLjEtOGwyOS40IDIyLjYuNiA2OC4zLTI3LjEtMjIuOXptOTQuMy0yNS40bC02MC45IDQ4LjYtLjYtNjguNiA2NS43LTQ2LjktNC4yIDY2Ljl6bTI3LjctMjUuN2wtMTkuMS0xMy40IDItMzRjLjMtLjktLjMtMi0xLjEtMi42TDMwOCAyNTkuN2wuNi0zMCA2NC42IDQwLjYtNS44IDY2LjZ6bTU0LjYtMzkuOGwtNDguMyAzOC4zIDUuNy02NS4xIDUxLjEtMzYuNi04LjUgNjMuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGludXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIwLjggMTIzLjNjMSAuNSAxLjggMS43IDMgMS43IDEuMSAwIDIuOC0uNCAyLjktMS41LjItMS40LTEuOS0yLjMtMy4yLTIuOS0xLjctLjctMy45LTEtNS41LS4xLS40LjItLjguNy0uNiAxLjEuMyAxLjMgMi4zIDEuMSAzLjQgMS43em0tMjEuOSAxLjdjMS4yIDAgMi0xLjIgMy0xLjcgMS4xLS42IDMuMS0uNCAzLjUtMS42LjItLjQtLjItLjktLjYtMS4xLTEuNi0uOS0zLjgtLjYtNS41LjEtMS4zLjYtMy40IDEuNS0zLjIgMi45LjEgMSAxLjggMS41IDIuOCAxLjR6TTQyMCA0MDMuOGMtMy42LTQtNS4zLTExLjYtNy4yLTE5LjctMS44LTguMS0zLjktMTYuOC0xMC41LTIyLjQtMS4zLTEuMS0yLjYtMi4xLTQtMi45LTEuMy0uOC0yLjctMS41LTQuMS0yIDkuMi0yNy4zIDUuNi01NC41LTMuNy03OS4xLTExLjQtMzAuMS0zMS4zLTU2LjQtNDYuNS03NC40LTE3LjEtMjEuNS0zMy43LTQxLjktMzMuNC03MkMzMTEuMSA4NS40IDMxNS43LjEgMjM0LjggMCAxMzIuNC0uMiAxNTggMTAzLjQgMTU2LjkgMTM1LjJjLTEuNyAyMy40LTYuNCA0MS44LTIyLjUgNjQuNy0xOC45IDIyLjUtNDUuNSA1OC44LTU4LjEgOTYuNy02IDE3LjktOC44IDM2LjEtNi4yIDUzLjMtNi41IDUuOC0xMS40IDE0LjctMTYuNiAyMC4yLTQuMiA0LjMtMTAuMyA1LjktMTcgOC4zcy0xNCA2LTE4LjUgMTQuNWMtMi4xIDMuOS0yLjggOC4xLTIuOCAxMi40IDAgMy45LjYgNy45IDEuMiAxMS44IDEuMiA4LjEgMi41IDE1LjcuOCAyMC44LTUuMiAxNC40LTUuOSAyNC40LTIuMiAzMS43IDMuOCA3LjMgMTEuNCAxMC41IDIwLjEgMTIuMyAxNy4zIDMuNiA0MC44IDIuNyA1OS4zIDEyLjUgMTkuOCAxMC40IDM5LjkgMTQuMSA1NS45IDEwLjQgMTEuNi0yLjYgMjEuMS05LjYgMjUuOS0yMC4yIDEyLjUtLjEgMjYuMy01LjQgNDguMy02LjYgMTQuOS0xLjIgMzMuNiA1LjMgNTUuMSA0LjEuNiAyLjMgMS40IDQuNiAyLjUgNi43di4xYzguMyAxNi43IDIzLjggMjQuMyA0MC4zIDIzIDE2LjYtMS4zIDM0LjEtMTEgNDguMy0yNy45IDEzLjYtMTYuNCAzNi0yMy4yIDUwLjktMzIuMiA3LjQtNC41IDEzLjQtMTAuMSAxMy45LTE4LjMuNC04LjItNC40LTE3LjMtMTUuNS0yOS43ek0yMjMuNyA4Ny4zYzkuOC0yMi4yIDM0LjItMjEuOCA0NC0uNCA2LjUgMTQuMiAzLjYgMzAuOS00LjMgNDAuNC0xLjYtLjgtNS45LTIuNi0xMi42LTQuOSAxLjEtMS4yIDMuMS0yLjcgMy45LTQuNiA0LjgtMTEuOC0uMi0yNy05LjEtMjcuMy03LjMtLjUtMTMuOSAxMC44LTExLjggMjMtNC4xLTItOS40LTMuNS0xMy00LjQtMS02LjktLjMtMTQuNiAyLjktMjEuOHpNMTgzIDc1LjhjMTAuMSAwIDIwLjggMTQuMiAxOS4xIDMzLjUtMy41IDEtNy4xIDIuNS0xMC4yIDQuNiAxLjItOC45LTMuMy0yMC4xLTkuNi0xOS42LTguNC43LTkuOCAyMS4yLTEuOCAyOC4xIDEgLjggMS45LS4yLTUuOSA1LjUtMTUuNi0xNC42LTEwLjUtNTIuMSA4LjQtNTIuMXptLTEzLjYgNjAuN2M2LjItNC42IDEzLjYtMTAgMTQuMS0xMC41IDQuNy00LjQgMTMuNS0xNC4yIDI3LjktMTQuMiA3LjEgMCAxNS42IDIuMyAyNS45IDguOSA2LjMgNC4xIDExLjMgNC40IDIyLjYgOS4zIDguNCAzLjUgMTMuNyA5LjcgMTAuNSAxOC4yLTIuNiA3LjEtMTEgMTQuNC0yMi43IDE4LjEtMTEuMSAzLjYtMTkuOCAxNi0zOC4yIDE0LjktMy45LS4yLTctMS05LjYtMi4xLTgtMy41LTEyLjItMTAuNC0yMC0xNS04LjYtNC44LTEzLjItMTAuNC0xNC43LTE1LjMtMS40LTQuOSAwLTkgNC4yLTEyLjN6bTMuMyAzMzRjLTIuNyAzNS4xLTQzLjkgMzQuNC03NS4zIDE4LTI5LjktMTUuOC02OC42LTYuNS03Ni41LTIxLjktMi40LTQuNy0yLjQtMTIuNyAyLjYtMjYuNHYtLjJjMi40LTcuNi42LTE2LS42LTIzLjktMS4yLTcuOC0xLjgtMTUgLjktMjAgMy41LTYuNyA4LjUtOS4xIDE0LjgtMTEuMyAxMC4zLTMuNyAxMS44LTMuNCAxOS42LTkuOSA1LjUtNS43IDkuNS0xMi45IDE0LjMtMTggNS4xLTUuNSAxMC04LjEgMTcuNy02LjkgOC4xIDEuMiAxNS4xIDYuOCAyMS45IDE2bDE5LjYgMzUuNmM5LjUgMTkuOSA0My4xIDQ4LjQgNDEgNjguOXptLTEuNC0yNS45Yy00LjEtNi42LTkuNi0xMy42LTE0LjQtMTkuNiA3LjEgMCAxNC4yLTIuMiAxNi43LTguOSAyLjMtNi4yIDAtMTQuOS03LjQtMjQuOS0xMy41LTE4LjItMzguMy0zMi41LTM4LjMtMzIuNS0xMy41LTguNC0yMS4xLTE4LjctMjQuNi0yOS45cy0zLTIzLjMtLjMtMzUuMmM1LjItMjIuOSAxOC42LTQ1LjIgMjcuMi01OS4yIDIuMy0xLjcuOCAzLjItOC43IDIwLjgtOC41IDE2LjEtMjQuNCA1My4zLTIuNiA4Mi40LjYtMjAuNyA1LjUtNDEuOCAxMy44LTYxLjUgMTItMjcuNCAzNy4zLTc0LjkgMzkuMy0xMTIuNyAxLjEuOCA0LjYgMy4yIDYuMiA0LjEgNC42IDIuNyA4LjEgNi43IDEyLjYgMTAuMyAxMi40IDEwIDI4LjUgOS4yIDQyLjQgMS4yIDYuMi0zLjUgMTEuMi03LjUgMTUuOS05IDkuOS0zLjEgMTcuOC04LjYgMjIuMy0xNSA3LjcgMzAuNCAyNS43IDc0LjMgMzcuMiA5NS43IDYuMSAxMS40IDE4LjMgMzUuNSAyMy42IDY0LjYgMy4zLS4xIDcgLjQgMTAuOSAxLjQgMTMuOC0zNS43LTExLjctNzQuMi0yMy4zLTg0LjktNC43LTQuNi00LjktNi42LTIuNi02LjUgMTIuNiAxMS4yIDI5LjIgMzMuNyAzNS4yIDU5IDIuOCAxMS42IDMuMyAyMy43LjQgMzUuNyAxNi40IDYuOCAzNS45IDE3LjkgMzAuNyAzNC44LTIuMi0uMS0zLjIgMC00LjIgMCAzLjItMTAuMS0zLjktMTcuNi0yMi44LTI2LjEtMTkuNi04LjYtMzYtOC42LTM4LjMgMTIuNS0xMi4xIDQuMi0xOC4zIDE0LjctMjEuNCAyNy4zLTIuOCAxMS4yLTMuNiAyNC43LTQuNCAzOS45LS41IDcuNy0zLjYgMTgtNi44IDI5LTMyLjEgMjIuOS03Ni43IDMyLjktMTE0LjMgNy4yem0yNTcuNC0xMS41Yy0uOSAxNi44LTQxLjIgMTkuOS02My4yIDQ2LjUtMTMuMiAxNS43LTI5LjQgMjQuNC00My42IDI1LjVzLTI2LjUtNC44LTMzLjctMTkuM2MtNC43LTExLjEtMi40LTIzLjEgMS4xLTM2LjMgMy43LTE0LjIgOS4yLTI4LjggOS45LTQwLjYuOC0xNS4yIDEuNy0yOC41IDQuMi0zOC43IDIuNi0xMC4zIDYuNi0xNy4yIDEzLjctMjEuMS4zLS4yLjctLjMgMS0uNS44IDEzLjIgNy4zIDI2LjYgMTguOCAyOS41IDEyLjYgMy4zIDMwLjctNy41IDM4LjQtMTYuMyA5LS4zIDE1LjctLjkgMjIuNiA1LjEgOS45IDguNSA3LjEgMzAuMyAxNy4xIDQxLjYgMTAuNiAxMS42IDE0IDE5LjUgMTMuNyAyNC42ek0xNzMuMyAxNDguN2MyIDEuOSA0LjcgNC41IDggNy4xIDYuNiA1LjIgMTUuOCAxMC42IDI3LjMgMTAuNiAxMS42IDAgMjIuNS01LjkgMzEuOC0xMC44IDQuOS0yLjYgMTAuOS03IDE0LjgtMTAuNHM1LjktNi4zIDMuMS02LjYtMi42IDIuNi02IDUuMWMtNC40IDMuMi05LjcgNy40LTEzLjkgOS44LTcuNCA0LjItMTkuNSAxMC4yLTI5LjkgMTAuMnMtMTguNy00LjgtMjQuOS05LjdjLTMuMS0yLjUtNS43LTUtNy43LTYuOS0xLjUtMS40LTEuOS00LjYtNC4zLTQuOS0xLjQtLjEtMS44IDMuNyAxLjcgNi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMeWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgODEuMWg3Ny44djIwOC43YzAgMzMuMSAxNSA1Mi44IDI3LjIgNjEtMTIuNyAxMS4xLTUxLjIgMjAuOS04MC4yLTIuOEM3LjggMzM0IDAgMzEwLjcgMCAyODlWODEuMXptNDg1LjkgMTczLjV2LTIyaDIzLjh2LTc2LjhoLTI2LjFjLTEwLjEtNDYuMy01MS4yLTgwLjctMTAwLjMtODAuNy01Ni42IDAtMTAyLjcgNDYtMTAyLjcgMTAyLjdWMzU3YzE2IDIuMyAzNS40LS4zIDUxLjctMTQgMTcuMS0xNCAyNC44LTM3LjIgMjQuOC01OXYtNi43aDM4Ljh2LTc2LjhoLTM4Ljh2LTIzLjNjMC0zNC42IDUyLjItMzQuNiA1Mi4yIDB2NzcuMWMwIDU2LjYgNDYgMTAyLjcgMTAyLjcgMTAyLjd2LTc2LjVjLTE0LjUgMC0yNi4xLTExLjctMjYuMS0yNS45em0tMjk0LjMtOTl2MTEzYzAgMTUuNC0yMy44IDE1LjQtMjMuOCAwdi0xMTNIOTF2MTMyLjdjMCAyMy44IDggNTQgNDUgNjMuOSAzNyA5LjggNTguMi0xMC42IDU4LjItMTAuNi0yLjEgMTMuNC0xNC41IDIzLjMtMzQuOSAyNS4zLTE1LjUgMS42LTM1LjItMy42LTQ1LTcuOHY3MC4zYzI1LjEgNy41IDUxLjUgOS44IDc3LjYgNC43IDQ3LjEtOS4xIDc2LjgtNDguNCA3Ni44LTEwMC44VjE1NS4xaC03Ny4xdi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWdlbnRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0NS43IDEyNy45VjM4NGwtNjMuNCAzNi41VjE2NC43TDIyMy44IDczLjEgNjUuMiAxNjQuN2wuNCAyNTUuOUwyLjMgMzg0VjEyOC4xTDIyNC4yIDBsMjIxLjUgMTI3Ljl6TTI1NS42IDQyMC41TDIyNCA0MzguOWwtMzEuOC0xOC4ydi0yNTZsLTYzLjMgMzYuNi4xIDI1NS45IDk0LjkgNTQuOSA5NS4xLTU0Ljl2LTI1NmwtNjMuNC0zNi42djI1NS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWlsY2hpbXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMwLjYxIDI0My41MmEzNi4xNSAzNi4xNSAwIDAgMSA5LjMgMGMxLjY2LTMuODMgMS45NS0xMC40My40NS0xNy42MS0yLjIzLTEwLjY3LTUuMjUtMTcuMTQtMTEuNDgtMTYuMTNzLTYuNDcgOC43NC00LjI0IDE5LjQyYzEuMjYgNiAzLjQ5IDExLjE0IDYgMTQuMzJ6TTI3Ny4wNSAyNTJjNC40NyAyIDcuMiAzLjI2IDguMjggMi4xMyAxLjg5LTEuOTQtMy40OC05LjM5LTEyLjEyLTEzLjA5YTMxLjQ0IDMxLjQ0IDAgMCAwLTMwLjYxIDMuNjhjLTMgMi4xOC01LjgxIDUuMjItNS40MSA3LjA2Ljg1IDMuNzQgMTAtMi43MSAyMi42LTMuNDggNy0uNDQgMTIuOCAxLjc1IDE3LjI2IDMuNzF6bS05IDUuMTNjLTkuMDcgMS40Mi0xNSA2LjUzLTEzLjQ3IDEwLjEuOS4zNCAxLjE3LjgxIDUuMjEtLjgxYTM3IDM3IDAgMCAxIDE4LjcyLTEuOTVjMi45Mi4zNCA0LjMxLjUyIDQuOTQtLjQ5IDEuNDYtMi4yMi01LjcxLTgtMTUuMzktNi44NXptNTQuMTcgMTcuMWMzLjM4LTYuODctMTAuOS0xMy45My0xNC4zLTdzMTAuOTIgMTMuODggMTQuMzIgNi45N3ptMTUuNjYtMjAuNDdjLTcuNjYtLjEzLTcuOTUgMTUuOC0uMjYgMTUuOTNzNy45OC0xNS44MS4yOC0xNS45NnptLTIxOC43OSA3OC45Yy0xLjMyLjMxLTYgMS40NS04LjQ3LTIuMzUtNS4yLTggMTEuMTEtMjAuMzggMy0zNS43Ny05LjEtMTcuNDctMjcuODItMTMuNTQtMzUuMDUtNS41NC04LjcxIDkuNi04LjcyIDIzLjU0LTUgMjQuMDggNC4yNy41NyA0LjA4LTYuNDcgNy4zOC0xMS42M2ExMi44MyAxMi44MyAwIDAgMSAxNy44NS0zLjcyYzExLjU5IDcuNTkgMS4zNyAxNy43NiAyLjI4IDI4LjYyIDEuMzkgMTYuNjggMTguNDIgMTYuMzcgMjEuNTggOWEyLjA4IDIuMDggMCAwIDAtLjItMi4zM2MuMDMuODkuNjgtMS4zLTMuMzUtLjM5em0yOTkuNzItMTcuMDdjLTMuMzUtMTEuNzMtMi41Ny05LjIyLTYuNzgtMjAuNTIgMi40NS0zLjY3IDE1LjI5LTI0LTMuMDctNDMuMjUtMTAuNC0xMC45Mi0zMy45LTE2LjU0LTQxLjEtMTguNTQtMS41LTExLjM5IDQuNjUtNTguNy0yMS41Mi04MyAyMC43OS0yMS41NSAzMy43Ni00NS4yOSAzMy43My02NS42NS0uMDYtMzkuMTYtNDguMTUtNTEtMTA3LjQyLTI2LjQ3bC0xMi41NSA1LjMzYy0uMDYtLjA1LTIyLjcxLTIyLjI3LTIzLjA1LTIyLjU3QzE2OS41LTE4LTQxLjc3IDIxNi44MSAyNS43OCAyNzMuODVsMTQuNzYgMTIuNTFhNzIuNDkgNzIuNDkgMCAwIDAtNC4xIDMzLjVjMy4zNiAzMy40IDM2IDYwLjQyIDY3LjUzIDYwLjM4IDU3LjczIDEzMy4wNiAyNjcuOSAxMzMuMjggMzIyLjI5IDMgMS43NC00LjQ3IDkuMTEtMjQuNjEgOS4xMS00Mi4zOHMtMTAuMDktMjUuMjctMTYuNTMtMjUuMjd6bS0zMTYgNDguMTZjLTIyLjgyLS42MS00Ny40Ni0yMS4xNS00OS45MS00NS41MS02LjE3LTYxLjMxIDc0LjI2LTc1LjI3IDg0LTEyLjMzIDQuNTQgMjkuNjQtNC42NyA1OC40OS0zNC4xMiA1Ny44MXpNODQuMyAyNDkuNTVDNjkuMTQgMjUyLjUgNTUuNzggMjYxLjA5IDQ3LjYgMjczYy00Ljg4LTQuMDctMTQtMTItMTUuNTktMTUtMTMuMDEtMjQuODUgMTQuMjQtNzMgMzMuMy0xMDAuMjFDMTEyLjQyIDkwLjU2IDE4Ni4xOSAzOS42OCAyMjAuMzYgNDguOTFjNS41NSAxLjU3IDIzLjk0IDIyLjg5IDIzLjk0IDIyLjg5cy0zNC4xNSAxOC45NC02NS44IDQ1LjM1Yy00Mi42NiAzMi44NS03NC44OSA4MC41OS05NC4yIDEzMi40ek0zMjMuMTggMzUwLjdzLTM1Ljc0IDUuMy02OS41MS03LjA3YzYuMjEtMjAuMTYgMjcgNi4xIDk2LjQtMTMuODEgMTUuMjktNC4zOCAzNS4zNy0xMyA1MS0yNS4zNWExMDIuODUgMTAyLjg1IDAgMCAxIDcuMTIgMjQuMjhjMy42Ni0uNjYgMTQuMjUtLjUyIDExLjQ0IDE4LjEtMy4yOSAxOS44Ny0xMS43MyAzNi0yNS45MyA1MC44NEExMDYuODYgMTA2Ljg2IDAgMCAxIDM2Mi41NSA0MjFhMTMyLjQ1IDEzMi40NSAwIDAgMS0yMC4zNCA4LjU4Yy01My41MSAxNy40OC0xMDguMy0xLjc0LTEyNi00M2E2Ni4zMyA2Ni4zMyAwIDAgMS0zLjU1LTkuNzRjLTcuNTMtMjcuMi0xLjE0LTU5LjgzIDE4Ljg0LTgwLjM3IDEuMjMtMS4zMSAyLjQ4LTIuODUgMi40OC00Ljc5YTguNDUgOC40NSAwIDAgMC0xLjkyLTQuNTRjLTctMTAuMTMtMzEuMTktMjcuNC0yNi4zMy02MC44MyAzLjUtMjQgMjQuNDktNDAuOTEgNDQuMDctMzkuOTFsNSAuMjljOC40OC41IDE1Ljg5IDEuNTkgMjIuODggMS44OCAxMS42OS41IDIyLjItMS4xOSAzNC42NC0xMS41NiA0LjItMy41IDcuNTctNi41NCAxMy4yNi03LjUxYTE3LjQ1IDE3LjQ1IDAgMCAxIDEzLjYgMi4yNGMxMCA2LjY0IDExLjQgMjIuNzMgMTEuOTIgMzQuNDkuMjkgNi43MiAxLjEgMjMgMS4zOCAyNy42My42MyAxMC42NyAzLjQzIDEyLjE3IDkuMTEgMTQgMy4xOSAxLjA1IDYuMTUgMS44MyAxMC41MSAzLjA2IDEzLjIxIDMuNzEgMjEgNy40OCAyNiAxMi4zMWExNi4zOCAxNi4zOCAwIDAgMSA0Ljc0IDkuMjljMS41NiAxMS4zNy04LjgyIDI1LjQtMzYuMzEgMzguMTYtNDYuNzEgMjEuNjgtOTMuNjggMTQuNDUtMTAwLjQ4IDEzLjY4LTIwLjE1LTIuNzEtMzEuNjMgMjMuMzItMTkuNTUgNDEuMTUgMjIuNjQgMzMuNDEgMTIyLjQgMjAgMTUxLjM3LTIxLjM1LjY5LTEgLjEyLTEuNTktLjczLTEtNDEuNzcgMjguNTgtOTcuMDYgMzguMjEtMTI4LjQ2IDI2LTQuNzctMS44NS0xNC43My02LjQ0LTE1Ljk0LTE2LjY3IDQzLjYgMTMuNDkgNzEgLjc0IDcxIC43NHMyLjAzLTIuNzktLjU2LTIuNTN6bS02OC40Ny01Ljd6bS04My40LTE4Ny41YzE2Ljc0LTE5LjM1IDM3LjM2LTM2LjE4IDU1LjgzLTQ1LjYzYS43My43MyAwIDAgMSAxIDFjLTEuNDYgMi42Ni00LjI5IDguMzQtNS4xOSAxMi42NWEuNzUuNzUgMCAwIDAgMS4xNi43OWMxMS40OS03LjgzIDMxLjQ4LTE2LjIyIDQ5LTE3LjNhLjc3Ljc3IDAgMCAxIC41MiAxLjM4IDQxLjg2IDQxLjg2IDAgMCAwLTcuNzEgNy43NC43NS43NSAwIDAgMCAuNTkgMS4xOWMxMi4zMS4wOSAyOS42NiA0LjQgNDEgMTAuNzQuNzYuNDMuMjIgMS45MS0uNjQgMS43Mi02OS41NS0xNS45NC0xMjMuMDggMTguNTMtMTM0LjUgMjYuODNhLjc2Ljc2IDAgMCAxLTEtMS4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFuZGFsb3JpYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMyLjI3IDUxMS44OWMtMS0zLjI2LTEuNjktMTUuODMtMS4zOS0yNC41OC41NS0xNS44OSAxLTI0LjcyIDEuNC0yOC43Ni42NC02LjIgMi44Ny0yMC43MiAzLjI4LTIxLjM4LjYtMSAuNC0yNy44Ny0uMjQtMzMuMTMtLjMxLTIuNTgtLjYzLTExLjktLjY5LTIwLjczLS4xMy0xNi40Ny0uNTMtMjAuMTItMi43My0yNC43Ni0xLjEtMi4zMi0xLjIzLTMuODQtMS0xMS40M2E5Mi4zOCA5Mi4zOCAwIDAgMC0uMzQtMTIuNzFjLTItMTMtMy40Ni0yNy43LTMuMjUtMzMuOXMuNDMtNy4xNSAyLjA2LTkuNjdjMy4wNS00LjcxIDYuNTEtMTQgOC42Mi0yMy4yNyAyLjI2LTkuODYgMy44OC0xNy4xOCA0LjU5LTIwLjc0YTEwOS41NCAxMDkuNTQgMCAwIDEgNC40Mi0xNS4wNWMyLjI3LTYuMjUgMi40OS0xNS4zOS4zNy0xNS4zOS0uMyAwLTEuMzggMS4yMi0yLjQxIDIuNzFzLTQuNzYgNC44LTguMjkgNy4zNmMtOC4zNyA2LjA4LTExLjcgOS4zOS0xMi42NiAxMi41OHMtMSA3LjIzLS4xNiA3Ljc2Yy4zNC4yMSAxLjI5IDIuNCAyLjExIDQuODhhMjguODMgMjguODMgMCAwIDEgLjcyIDE1LjM2Yy0uMzkgMS43Ny0xIDUuNDctMS40NiA4LjIzcy0xIDYuNDYtMS4yNSA4LjIyYTkuODUgOS44NSAwIDAgMS0xLjU1IDQuMjZjLTEgMS0xLjE0LjkxLTIuMDUtLjUzYTE0Ljg3IDE0Ljg3IDAgMCAxLTEuNDQtNC43NWMtLjI1LTEuNzQtMS42My03LjExLTMuMDgtMTEuOTMtMy4yOC0xMC45LTMuNTItMTYuMTUtMS0yMWExNC4yNCAxNC4yNCAwIDAgMCAxLjY3LTQuNjFjMC0yLjM5LTIuMi01LjMyLTcuNDEtOS44OS03LTYuMTgtOC42My03LjkyLTEwLjIzLTExLjMtMS43MS0zLjYtMy4wNi00LjA2LTQuNTQtMS41NC0xLjc4IDMtMi42IDkuMTEtMyAyMmwtLjM0IDEyLjE5IDIgMi4yNWMzLjIxIDMuNyAxMi4wNyAxNi40NSAxMy43OCAxOS44MyAzLjQxIDYuNzQgNC4zNCAxMS42OSA0LjQxIDIzLjU2cy45NSAyMi43NSAyIDI0LjcxYy4zNi42Ni41MSAxLjM1LjM0IDEuNTJzLjQxIDIuMDkgMS4yOSA0LjI3YTM4LjE0IDM4LjE0IDAgMCAxIDIuMDYgOSA5MSA5MSAwIDAgMCAxLjcxIDEwLjM3YzIuMjMgOS41NiAyLjc3IDE0LjA4IDIuMzkgMjAuMTQtLjIgMy4yNy0uNTMgMTEuMDctLjczIDE3LjMyLTEuMzEgNDEuNzYtMS44NSA1OC0yIDYxLjIxLS4xMiAyLS4zOSAxMS41MS0uNiAyMS4wNy0uMzYgMTYuMy0xLjMgMjcuMzctMi40MiAyOC42NS0uNjQuNzMtOC4wNy00LjkxLTEyLjUyLTkuNDktMy43NS0zLjg3LTQtNC43OS0yLjgzLTkuOTUuNy0zIDIuMjYtMTguMjkgMy4zMy0zMi42Mi4zNi00Ljc4LjgxLTEwLjUgMS0xMi43MS44My05LjM3IDEuNjYtMjAuMzUgMi42MS0zNC43OC41Ni04LjQ2IDEuMzMtMTYuNDQgMS43Mi0xNy43M3MuODktOS44OSAxLjEzLTE5LjExbC40My0xNi43Ny0yLjI2LTQuM2MtMS43Mi0zLjI4LTQuODctNi45NC0xMy4yMi0xNS4zNC02LTYuMDctMTEuODQtMTIuMy0xMi45MS0xMy44NWwtMS45NS0yLjgxLjc1LTEwLjljMS4wOS0xNS43MSAxLjEtNDguNTcgMC01OS4wNmwtLjg5LTguNy0zLjI4LTQuNTJjLTUuODYtOC4wOC01LjgtNy43NS02LjIyLTMzLjI3LS4xLTYuMDctLjM4LTExLjUtLjYzLTEyLjA2LS44My0xLjg3LTMuMDUtMi42Ni04LjU0LTMuMDUtOC44Ni0uNjItMTEtMS45LTIzLjg1LTE0LjU1LTYuMTUtNi0xMi4zNC0xMi0xMy43NS0xMy4xOS0yLjgxLTIuNDItMi43OS0yLS41Ni05LjYzbDEuMzUtNC42NS0xLjY5LTNhMzIuMjIgMzIuMjIgMCAwIDAtMi41OS00LjA3Yy0xLjMzLTEuNTEtNS41LTEwLjg5LTYtMTMuNDlhNC4yNCA0LjI0IDAgMCAxIC44Ny0zLjljMi4yMy0yLjg2IDMuNC01LjY4IDQuNDUtMTAuNzMgMi4zMy0xMS4xOSA3Ljc0LTI2LjA5IDEwLjYtMjkuMjIgMy4xOC0zLjQ3IDcuNy0xIDkuNDEgNSAxLjM0IDQuNzkgMS4zNyA5Ljc5LjEgMTguNTVhMTAxLjIgMTAxLjIgMCAwIDAtMSAxMS4xMWMwIDQgLjE5IDQuNjkgMi4yNSA3LjM5IDMuMzMgNC4zNyA3LjczIDcuNDEgMTUuMiAxMC41MmExOC42NyAxOC42NyAwIDAgMSA0LjcyIDIuODVjMTEuMTcgMTAuNzIgMTguNjIgMTYuMTggMjIuOTUgMTYuODUgNS4xOC44IDggNC41NCAxMCAxMy4zOSAxLjMxIDUuNjUgNCAxMS4xNCA1LjQ2IDExLjE0YTkuMzggOS4zOCAwIDAgMCAzLjMzLTEuMzljMi0xLjIyIDIuMjUtMS43MyAyLjI1LTQuMThhMTMyLjg4IDEzMi44OCAwIDAgMC0yLTE3Ljg0Yy0uMzctMS42Ni0uNzgtNC4wNi0uOTMtNS4zNXMtLjYxLTMuODUtMS01LjY5Yy0yLjU1LTExLjE2LTMuNjUtMTUuNDYtNC4xLTE2LTEuNTUtMi00LjA4LTEwLjItNC45My0xNS45Mi0xLjY0LTExLjExLTQtMTQuMjMtMTIuOTEtMTcuMzlBNDMuMTUgNDMuMTUgMCAwIDEgMTY1LjI0IDc4Yy0xLjE1LTEtNC0zLjIyLTYuMzUtNS4wNnMtNC40MS0zLjUzLTQuNi0zLjc2YTIyLjcgMjIuNyAwIDAgMC0yLjY5LTJjLTYuMjQtNC4yMi04Ljg0LTctMTEuMjYtMTJsLTIuNDQtNS0uMjItMTMtLjIyLTEzIDYuOTEtNi41NWMzLjk1LTMuNzUgOC40OC03LjM1IDEwLjU5LTguNDMgMy4zMS0xLjY5IDQuNDUtMS44OSAxMS4zNy0yIDguNTMtLjE5IDEwLjEyIDAgMTEuNjYgMS41NnMxLjM2IDYuNC0uMjkgOC41YTYuNjYgNi42NiAwIDAgMC0xLjM0IDIuMzJjMCAuNTgtMi42MSA0LjkxLTUuNDIgOWEzMC4zOSAzMC4zOSAwIDAgMC0yLjM3IDYuODJjMjAuNDQgMTMuMzkgMjEuNTUgMy43NyAxNC4wNyAyOUwxOTQgNjYuOTJjMy4xMS04LjY2IDYuNDctMTcuMjYgOC42MS0yNi4yMi4yOS03LjYzLTEyLTQuMTktMTUuNC04LjY4LTIuMzMtNS45MyAzLjEzLTE0LjE4IDYuMDYtMTkuMiAxLjYtMi4zNCA2LjYyLTQuNyA4LjgyLTQuMTUuODguMjIgNC4xNi0uMzUgNy4zNy0xLjI4YTQ1LjMgNDUuMyAwIDAgMSA3LjU1LTEuNjggMjkuNTcgMjkuNTcgMCAwIDAgNi0xLjI5YzMuNjUtMS4xMSA0LjUtMS4xNyA2LjM1LS40YTI5LjU0IDI5LjU0IDAgMCAwIDUuODIgMS4zNiAxOC4xOCAxOC4xOCAwIDAgMSA2IDEuOTEgMjIuNjcgMjIuNjcgMCAwIDAgNSAyLjE3YzIuNTEuNjggMyAuNTcgNy4wNS0xLjY3bDQuMzUtMi40TDI2OC4zMiA1YzEwLjQ0LS40IDEwLjgxLS40NyAxNS4yNi0yLjY4TDI4OC4xNiAwbDIuNDYgMS40M2MxLjc2IDEgMy4xNCAyLjczIDQuODUgNiAyLjM2IDQuNTEgMi4zOCA0LjU4IDEuMzcgNy4zNy0uODggMi40NC0uODkgMy4zLS4xIDYuMzlhMzUuNzYgMzUuNzYgMCAwIDAgMi4xIDUuOTEgMTMuNTUgMTMuNTUgMCAwIDEgMS4zMSA0Yy4zMSA0LjMzIDAgNS4zLTIuNDEgNi45Mi0yLjE3IDEuNDctNyA3LjkxLTcgOS4zNGExNC43NyAxNC43NyAwIDAgMS0xLjA3IDNjLTUgMTEuNTEtNi43NiAxMy41Ni0xNC4yNiAxNy05LjIgNC4yLTEyLjMgNS4xOS0xNi4yMSA1LjE5LTMuMSAwLTQgLjI1LTQuNTQgMS4yNmExOC4zMyAxOC4zMyAwIDAgMS00LjA5IDMuNzEgMTMuNjIgMTMuNjIgMCAwIDAtNC4zOCA0Ljc4IDUuODkgNS44OSAwIDAgMS0yLjQ5IDIuOTEgNi44OCA2Ljg4IDAgMCAwLTIuNDUgMS43MSA2Ny42MiA2Ny42MiAwIDAgMS03IDUuMzhjLTMuMzMgMi4zNC02Ljg3IDUtNy44NyA2QTcuMjcgNy4yNyAwIDAgMSAyMjQgMTAwYTUuNzYgNS43NiAwIDAgMC0yLjEzIDEuNjVjLTEuMzEgMS4zOS0xLjQ5IDIuMTEtMS4xNCA0LjZhMzYuNDUgMzYuNDUgMCAwIDAgMS40MiA1Ljg4YzEuMzIgMy44IDEuMzEgNy44NiAwIDEwLjU3cy0uODkgNi42NSAxLjM1IDkuNTljMiAyLjYzIDIuMTYgNC41Ni43MSA4Ljg0YTMzLjQ1IDMzLjQ1IDAgMCAwLTEuMDYgOC45MWMwIDQuODguMjIgNi4yOCAxLjQ2IDguMzhzMS44MiAyLjQ4IDMuMjQgMi4zMmMyLS4yMyAyLjMtMS4wNSA0LjcxLTEyLjEyIDIuMTgtMTAgMy43MS0xMS45MiAxMy43Ni0xNy4wOCAyLjk0LTEuNTEgNy40Ni00IDEwLTUuNDRzNi43OS0zLjY5IDkuMzctNC45MWE0MC4wOSA0MC4wOSAwIDAgMCAxNS4yMi0xMS42N2M3LjExLTguNzkgMTAtMTYuMjIgMTIuODUtMzMuM2ExOC4zNyAxOC4zNyAwIDAgMSAyLjg2LTcuNzMgMjAuMzkgMjAuMzkgMCAwIDAgMi44OS03LjMxYzEtNS4zIDIuODUtOS4wOCA1LjU4LTExLjUxIDQuNy00LjE4IDYtMS4wOSA0LjU5IDEwLjg3LS40NiAzLjg2LTEuMSAxMC4zMy0xLjQ0IDE0LjM4bC0uNjEgNy4zNiA0LjQ1IDQuMDkgNC40NSA0LjA5LjExIDguNDJjLjA2IDQuNjMuNDcgOS41My45MiAxMC44OWwuODIgMi40Ny02LjQzIDYuMjhjLTguNTQgOC4zMy0xMi44OCAxMy45My0xNi43NiAyMS42MS0xLjc3IDMuNDktMy43NCA3LjExLTQuMzggOC0yLjE4IDMuMTEtNi40NiAxMy04Ljc2IDIwLjI2bC0yLjI5IDcuMjItNyA2LjQ5Yy0zLjgzIDMuNTctOCA3LjI1LTkuMTcgOC4xNy0zLjA1IDIuMzItNC4yNiA1LjE1LTQuMjYgMTBhMTQuNjIgMTQuNjIgMCAwIDAgMS41OSA3LjI2IDQyIDQyIDAgMCAxIDIuMDkgNC44MyA5LjI4IDkuMjggMCAwIDAgMS41NyAyLjg5YzEuNCAxLjU5IDEuOTIgMTYuMTIuODMgMjMuMjItLjY4IDQuNDgtMy42MyAxMi00LjcgMTItMS43OSAwLTQuMDYgOS4yNy01LjA3IDIwLjc0LS4xOCAyLS42MiA1Ljk0LTEgOC43cy0xIDEwLTEuMzUgMTYuMDVjLS43NyAxMi4yMi0uMTkgMTguNzcgMiAyMy4xNSAzLjQxIDYuNjkuNTIgMTIuNjktMTEgMjIuODRsLTQgMy40OS4wNyA1LjE5YTQwLjgxIDQwLjgxIDAgMCAwIDEuMTQgOC44N2M0LjYxIDE2IDQuNzMgMTYuOTIgNC4zOCAzNy4xMy0uNDYgMjYuNC0uMjYgNDAuMjcuNjMgNDQuMTVhNjEuMzEgNjEuMzEgMCAwIDEgMS4wOCA3Yy4xNyAyIC42NiA1LjMzIDEuMDggNy4zNi40NyAyLjI2Ljc4IDExIC43OSAyMi43NHYxOS4wNmwtMS44MSAyLjYzYy0yLjcxIDMuOTEtMTUuMTEgMTMuNTQtMTUuNDkgMTIuMjl6bTI5LjUzLTQ1LjExYy0uMTgtLjMtLjMzLTYuODctLjMzLTE0LjU5IDAtMTQuMDYtLjg5LTI3LjU0LTIuMjYtMzQuNDUtLjQtMi0uODEtOS43LS45LTE3LjA2LS4xNS0xMS45My0xLjQtMjQuMzctMi42NC0yNi4zOC0uNjYtMS4wNy0zLTE3LjY2LTMtMjEuMyAwLTQuMjMgMS02IDUuMjgtOS4xM3M0Ljg2LTMuMTQgNS40OC0uNzJjLjI4IDEuMSAxLjQ1IDUuNjIgMi42IDEwIDMuOTMgMTUuMTIgNC4xNCAxNi4yNyA0LjA1IDIxLjc0LS4xIDUuNzgtLjEzIDYuMTMtMS43NCAxNy43My0xIDcuMDctMS4xNyAxMi4zOS0xIDI4LjQzLjE3IDE5LjQtLjY0IDM1LjczLTIgNDEuMjctLjcxIDIuNzgtMi44IDUuNDgtMy40MyA0LjQzem0tNzEtMzcuNThhMTAxIDEwMSAwIDAgMS0xLjczLTEwLjc5IDEwMC41IDEwMC41IDAgMCAwLTEuNzMtMTAuNzkgMzcuNTMgMzcuNTMgMCAwIDEtMS02LjQ5Yy0uMzEtMy4xOS0uOTEtNy40Ni0xLjMzLTkuNDgtMS00Ljc5LTMuMzUtMTkuMzUtMy40Mi0yMS4wNyAwLS43NC0uMzQtNC4wNS0uNy03LjM2LS42Ny02LjIxLS44NC0yNy42Ny0uMjItMjguMjkgMS0xIDYuNjMgMi43NiAxMS4zMyA3LjQzbDUuMjggNS4yNS0uNDUgNi40N2MtLjI1IDMuNTYtLjYgMTAuMjMtLjc4IDE0Ljgzcy0uNDkgOS44Ny0uNjcgMTEuNzEtLjYxIDkuMzYtLjk0IDE2LjcyYy0uNzkgMTcuNDEtMS45NCAzMS4yOS0yLjY1IDMyYS42Mi42MiAwIDAgMS0xLS4xNHptLTg3LjE4LTI2Ni41OWMyMS4wNyAxMi43OSAxNy44NCAxNC4xNSAyOC40OSAxNy42NiAxMyA0LjI5IDE4Ljg3IDcuMTMgMjMuMTUgMTYuODdDMTExLjYgMjMzLjI4IDg2LjI1IDI1NSA3OC41NSAyNjhjLTMxIDUyLTYgMTAxLjU5IDYyLjc1IDg3LjIxLTE0LjE4IDI5LjIzLTc4IDI4LjYzLTk4LjY4LTQuOS0yNC42OC0zOS45NS0yMi4wOS0xMTguMyA2MS0xODcuNjZ6bTIxMC43OSAxNzljNTYuNjYgNi44OCA4Mi4zMi0zNy43NCA0Ni41NC04OS4yMyAwIDAtMjYuODctMjkuMzQtNjQuMjgtNjggMy0xNS40NSA5LjQ5LTMyLjEyIDMwLjU3LTUzLjgyIDg5LjIgNjMuNTEgOTIgMTQxLjYxIDkyLjQ2IDE0OS4zNiA0LjMgNzAuNjQtNzguNyA5MS4xOC0xMDUuMjkgNjEuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcmtkb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU5My44IDU5LjFINDYuMkMyMC43IDU5LjEgMCA3OS44IDAgMTA1LjJ2MzAxLjVjMCAyNS41IDIwLjcgNDYuMiA0Ni4yIDQ2LjJoNTQ3LjdjMjUuNSAwIDQ2LjItMjAuNyA0Ni4xLTQ2LjFWMTA1LjJjMC0yNS40LTIwLjctNDYuMS00Ni4yLTQ2LjF6TTMzOC41IDM2MC42SDI3N3YtMTIwbC02MS41IDc2LjktNjEuNS03Ni45djEyMEg5Mi4zVjE1MS40aDYxLjVsNjEuNSA3Ni45IDYxLjUtNzYuOWg2MS41djIwOS4yem0xMzUuMyAzLjFMMzgxLjUgMjU2SDQ0M1YxNTEuNGg2MS41VjI1Nkg1NjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hc3RvZG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMyAxNzkuMTFjMC05Ny4yLTYzLjcxLTEyNS43LTYzLjcxLTEyNS43LTYyLjUyLTI4LjctMjI4LjU2LTI4LjQtMjkwLjQ4IDAgMCAwLTYzLjcyIDI4LjUtNjMuNzIgMTI1LjcgMCAxMTUuNy02LjYgMjU5LjQgMTA1LjYzIDI4OS4xIDQwLjUxIDEwLjcgNzUuMzIgMTMgMTAzLjMzIDExLjQgNTAuODEtMi44IDc5LjMyLTE4LjEgNzkuMzItMTguMWwtMS43LTM2LjlzLTM2LjMxIDExLjQtNzcuMTIgMTAuMWMtNDAuNDEtMS40LTgzLTQuNC04OS42My01NGExMDIuNTQgMTAyLjU0IDAgMCAxLS45LTEzLjljODUuNjMgMjAuOSAxNTguNjUgOS4xIDE3OC43NSA2LjcgNTYuMTItNi43IDEwNS00MS4zIDExMS4yMy03Mi45IDkuOC00OS44IDktMTIxLjUgOS0xMjEuNXptLTc1LjEyIDEyNS4yaC00Ni42M3YtMTE0LjJjMC00OS43LTY0LTUxLjYtNjQgNi45djYyLjVoLTQ2LjMzVjE5N2MwLTU4LjUtNjQtNTYuNi02NC02Ljl2MTE0LjJIOTAuMTljMC0xMjIuMS01LjItMTQ3LjkgMTguNDEtMTc1IDI1LjktMjguOSA3OS44Mi0zMC44IDEwMy44MyA2LjFsMTEuNiAxOS41IDExLjYtMTkuNWMyNC4xMS0zNy4xIDc4LjEyLTM0LjggMTAzLjgzLTYuMSAyMy43MSAyNy4zIDE4LjQgNTMgMTguNCAxNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1heGNkbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjEuMSA0NDIuN2gtOTcuNEw0MTUuNiAyMDBjMi4zLTEwLjIuOS0xOS41LTQuNC0yNS43LTUtNi4xLTEzLjctOS42LTI0LjItOS42aC00OS4zbC01OS41IDI3OGgtOTcuNGw1OS41LTI3OGgtODMuNGwtNTkuNSAyNzhIMGw1OS41LTI3OC00NC42LTk1LjRIMzg3YzM5LjQgMCA3NS4zIDE2LjMgOTguMyA0NC45IDIzLjMgMjguNiAzMS44IDY3LjQgMjMuNiAxMDUuOWwtNDcuOCAyMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWRiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjM3IDE2MC40MUw3IDM1Mmg0My45MWw1LjU5LTc5LjgzTDg0LjQzIDM1Mmg0NC43MWwyNS41NC03Ny40MyA0Ljc5IDc3LjQzSDIwNWwtMTIuNzktMTkxLjU5SDE0Ni43TDEwNiAyNzcuNzQgNjMuNjcgMTYwLjQxem0yODEgMGgtNDcuOVYzNTJoNDcuOXM5NSAuOCA5NC4yLTk1Ljc5Yy0uNzgtOTQuMjEtOTQuMTgtOTUuNzgtOTQuMTgtOTUuNzh6bS0xLjIgMTQ2LjQ2VjIwNC43OHM0NiA0LjI3IDQ2LjggNTAuNTctNDYuNzggNTEuNTQtNDYuNzggNTEuNTR6bTIzOC4yOS03NC4yNGE1Ni4xNiA1Ni4xNiAwIDAgMCA4LTM4LjMxYy01LjM0LTM1Ljc2LTU1LjA4LTM0LjMyLTU1LjA4LTM0LjMyaC01MS45djE5MS41OEg0ODJzODcgNC43OSA4Ny02My44NWMwLTQzLjE0LTMzLjUyLTU1LjA4LTMzLjUyLTU1LjA4em0tNTEuOS0zMS45NHMxMy41Ny0xLjU5IDE2IDkuNTljMS40MyA2LjY2LTQgMTItNCAxMmgtMTJ2LTIxLjU3em0tLjEgMTA5LjQ2bC4xLTI0LjkyVjI2N2guMDhzNDEuNTgtNC43MyA0MS4xOSAyMi40M2MtLjMzIDI1LjY1LTQxLjM1IDIwLjc0LTQxLjM1IDIwLjc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWRhcHBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExOC4zIDIzOC40YzMuNS0xMi41IDYuOS0zMy42IDEzLjItMzMuNiA4LjMgMS44IDkuNiAyMy40IDE4LjYgMzYuNiA0LjYtMjMuNSA1LjMtODUuMSAxNC4xLTg2LjcgOS0uNyAxOS43IDY2LjUgMjIgNzcuNSA5LjkgNC4xIDQ4LjkgNi42IDQ4LjkgNi42IDEuOSA3LjMtMjQgNy42LTQwIDcuOC00LjYgMTQuOC01LjQgMjcuNy0xMS40IDI4LTQuNy4yLTguMi0yOC44LTE3LjUtNDkuNmwtOS40IDY1LjVjLTQuNCAxMy0xNS41LTIyLjUtMjEuOS0zOS4zLTMuMy0uMS02Mi40LTEuNi00Ny42LTcuOGwzMS01ek0yMjggNDQ4YzIxLjIgMCAyMS4yLTMyIDAtMzJIOTJjLTIxLjIgMC0yMS4yIDMyIDAgMzJoMTM2em0tMjQgNjRjMjEuMiAwIDIxLjItMzIgMC0zMmgtODhjLTIxLjIgMC0yMS4yIDMyIDAgMzJoODh6bTM0LjItMTQxLjVjMy4yLTE4LjkgNS4yLTM2LjQgMTEuOS00OC44IDcuOS0xNC43IDE2LjEtMjguMSAyNC00MSAyNC42LTQwLjQgNDUuOS03NS4yIDQ1LjktMTI1LjVDMzIwIDY5LjYgMjQ4LjIgMCAxNjAgMFMwIDY5LjYgMCAxNTUuMmMwIDUwLjIgMjEuMyA4NS4xIDQ1LjkgMTI1LjUgNy45IDEyLjkgMTYgMjYuMyAyNCA0MSA2LjcgMTIuNSA4LjcgMjkuOCAxMS45IDQ4LjkgMy41IDIxIDM2LjEgMTUuNyAzMi42LTUuMS0zLjYtMjEuNy01LjYtNDAuNy0xNS4zLTU4LjZDNjYuNSAyNDYuNSAzMyAyMTEuMyAzMyAxNTUuMiAzMyA4Ny4zIDkwIDMyIDE2MCAzMnMxMjcgNTUuMyAxMjcgMTIzLjJjMCA1Ni4xLTMzLjUgOTEuMy02Ni4xIDE1MS42LTkuNyAxOC0xMS43IDM3LjQtMTUuMyA1OC42LTMuNCAyMC42IDI5IDI2LjQgMzIuNiA1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZGl1bU0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzEuNSAxNDIuM2MuNi01LjktMS43LTExLjgtNi4xLTE1LjhMMjAuMyA3Mi4xVjY0aDE0MC4ybDEwOC40IDIzNy43TDM2NC4yIDY0aDEzMy43djguMWwtMzguNiAzN2MtMy4zIDIuNS01IDYuNy00LjMgMTAuOHYyNzJjLS43IDQuMSAxIDguMyA0LjMgMTAuOGwzNy43IDM3djguMUgzMDcuM3YtOC4xbDM5LjEtMzcuOWMzLjgtMy44IDMuOC01IDMuOC0xMC44VjE3MS4yTDI0MS41IDQ0Ny4xaC0xNC43TDEwMC40IDE3MS4ydjE4NC45Yy0xLjEgNy44IDEuNSAxNS42IDcgMjEuMmw1MC44IDYxLjZ2OC4xaC0xNDR2LThMNjUgMzc3LjNjNS40LTUuNiA3LjktMTMuNSA2LjUtMjEuMlYxNDIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVkaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJ2NDQ4aDQ0OFYzMkgwem0zNzIuMiAxMDYuMWwtMjQgMjNjLTIuMSAxLjYtMy4xIDQuMi0yLjcgNi43djE2OS4zYy0uNCAyLjYuNiA1LjIgMi43IDYuN2wyMy41IDIzdjUuMWgtMTE4VjM2N2wyNC4zLTIzLjZjMi40LTIuNCAyLjQtMy4xIDIuNC02LjdWMTk5LjhsLTY3LjYgMTcxLjZoLTkuMUwxMjUgMTk5Ljh2MTE1Yy0uNyA0LjggMSA5LjcgNC40IDEzLjJsMzEuNiAzOC4zdjUuMUg3MS4ydi01LjFsMzEuNi0zOC4zYzMuNC0zLjUgNC45LTguNCA0LjEtMTMuMnYtMTMzYy40LTMuNy0xLTcuMy0zLjgtOS44TDc1IDEzOC4xVjEzM2g4Ny4zbDY3LjQgMTQ4TDI4OSAxMzMuMWg4My4ydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZHJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NDQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMy43IDI1NmMwIDEyMS44IDgzLjkgMjIyLjggMTkzLjUgMjQxLjEtMTguNyA0LjUtMzguMiA2LjktNTguMiA2LjlDMTExLjQgNTA0IDAgMzkzIDAgMjU2UzExMS40IDggMjQ4LjkgOGMyMC4xIDAgMzkuNiAyLjQgNTguMiA2LjlDMTk3LjUgMzMuMiAxMTMuNyAxMzQuMiAxMTMuNyAyNTZtMjk3LjQgMTAwLjNjLTc3LjcgNTUuNC0xNzkuNiA0Ny41LTI0MC40LTE0LjYgNS41IDE0LjEgMTIuNyAyNy43IDIxLjcgNDAuNSA2MS42IDg4LjIgMTgyLjQgMTA5LjMgMjY5LjcgNDcgODcuMy02Mi4zIDEwOC4xLTE4NC4zIDQ2LjUtMjcyLjYtOS0xMi45LTE5LjMtMjQuMy0zMC41LTM0LjIgMzcuNCA3OC44IDEwLjcgMTc4LjUtNjcgMjMzLjltLTIxOC44LTI0NGMtMS40IDEtMi43IDIuMS00IDMuMSA2NC4zLTE3LjggMTM1LjkgNCAxNzguOSA2MC41IDM1LjcgNDcgNDIuOSAxMDYuNiAyNC40IDE1OCA1Ni43LTU2LjIgNjcuNi0xNDIuMSAyMi4zLTIwMS44LTUwLTY1LjUtMTQ5LjEtNzQuNC0yMjEuNi0xOS44TTI5NiAyMjRjLTQuNCAwLTgtMy42LTgtOHYtNDBjMC00LjQtMy42LTgtOC04aC00OGMtNC40IDAtOCAzLjYtOCA4djQwYzAgNC40LTMuNiA4LTggOGgtNDBjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDhoNDBjNC40IDAgOCAzLjYgOCA4djQwYzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LTh2LTQwYzAtNC40IDMuNi04IDgtOGg0MGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOGgtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZXR1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05OSA0MTQuM2MxLjEgNS43LTIuMyAxMS4xLTggMTIuMy01LjQgMS4xLTEwLjktMi4zLTEyLTgtMS4xLTUuNCAyLjMtMTEuMSA3LjctMTIuMyA1LjQtMS4yIDExLjEgMi4zIDEyLjMgOHptMTQzLjEgNzEuNGMtNi4zIDQuNi04IDEzLjQtMy43IDIwIDQuNiA2LjYgMTMuNCA4LjMgMjAgMy43IDYuMy00LjYgOC0xMy40IDMuNC0yMC00LjItNi41LTEzLjEtOC4zLTE5LjctMy43em0tODYtNDYyLjNjNi4zLTEuNCAxMC4zLTcuNyA4LjktMTQtMS4xLTYuNi03LjQtMTAuNi0xMy43LTkuMS02LjMgMS40LTEwLjMgNy43LTkuMSAxNCAxLjQgNi42IDcuNiAxMC42IDEzLjkgOS4xek0zNC40IDIyNi4zYy0xMC02LjktMjMuNy00LjMtMzAuNiA2LTYuOSAxMC00LjMgMjQgNS43IDMwLjkgMTAgNy4xIDIzLjcgNC42IDMwLjYtNS43IDYuOS0xMC40IDQuMy0yNC4xLTUuNy0zMS4yem0yNzItMTcwLjljMTAuNi02LjMgMTMuNy0yMCA3LjctMzAuMy02LjMtMTAuNi0xOS43LTE0LTMwLTcuN3MtMTMuNyAyMC03LjQgMzAuNmM2IDEwLjMgMTkuNCAxMy43IDI5LjcgNy40em0tMTkxLjEgNThjNy43LTUuNCA5LjQtMTYgNC4zLTIzLjdzLTE1LjctOS40LTIzLjEtNC4zYy03LjcgNS40LTkuNCAxNi00LjMgMjMuNyA1LjEgNy44IDE1LjYgOS41IDIzLjEgNC4zem0zNzIuMyAxNTZjLTcuNCAxLjctMTIuMyA5LjEtMTAuNiAxNi45IDEuNCA3LjQgOC45IDEyLjMgMTYuMyAxMC42IDcuNC0xLjQgMTIuMy04LjkgMTAuNi0xNi42LTEuNS03LjQtOC45LTEyLjMtMTYuMy0xMC45em0zOS43LTU2LjhjLTEuMS01LjctNi42LTkuMS0xMi04LTUuNyAxLjEtOS4xIDYuOS04IDEyLjYgMS4xIDUuNCA2LjYgOS4xIDEyLjMgOCA1LjQtMS41IDkuMS02LjkgNy43LTEyLjZ6TTQ0NyAxMzguOWMtOC42IDYtMTAuNiAxNy43LTQuOSAyNi4zIDUuNyA4LjYgMTcuNCAxMC42IDI2IDQuOSA4LjMtNiAxMC4zLTE3LjcgNC42LTI2LjMtNS43LTguNy0xNy40LTEwLjktMjUuNy00Ljl6bS02LjMgMTM5LjRjMjYuMyA0My4xIDE1LjEgMTAwLTI2LjMgMTI5LjEtMTcuNCAxMi4zLTM3LjEgMTcuNy01Ni45IDE3LjEtMTIgNDcuMS02OS40IDY0LjYtMTA1LjEgMzIuNi0xLjEuOS0yLjYgMS43LTMuNyAyLjktMzkuMSAyNy4xLTkyLjMgMTcuNC0xMTkuNC0yMi4zLTkuNy0xNC4zLTE0LjYtMzAuNi0xNS4xLTQ2LjktNjUuNC0xMC45LTkwLTk0LTQxLjEtMTM5LjctMjguMy00Ni45LjYtMTA3LjQgNTMuNC0xMTQuOUMxNTEuNiA3MCAyMzQuMSAzOC42IDI5MC4xIDgyYzY3LjQtMjIuMyAxMzYuMyAyOS40IDEzMC45IDEwMS4xIDQxLjEgMTIuNiA1Mi44IDY2LjkgMTkuNyA5NS4yem0tNzAgNzQuM2MtMy4xLTIwLjYtNDAuOS00LjYtNDMuMS0yNy4xLTMuMS0zMiA0My43LTEwMS4xIDQwLTEyOC0zLjQtMjQtMTkuNC0yOS4xLTMzLjQtMjkuNC0xMy40LS4zLTE2LjkgMi0yMS40IDQuNi0yLjkgMS43LTYuNiA0LjktMTEuNy0uMy02LjMtNi0xMS4xLTExLjctMTkuNC0xMi45LTEyLjMtMi0xNy43IDItMjYuNiA5LjctMy40IDIuOS0xMiAxMi45LTIwIDkuMS0zLjQtMS43LTE1LjQtNy43LTI0LTExLjQtMTYuMy03LjEtNDAgNC42LTQ4LjYgMjAtMTIuOSAyMi45LTM4IDExMy4xLTQxLjcgMTI1LjEtOC42IDI2LjYgMTAuOSA0OC42IDM2LjkgNDcuMSAxMS4xLS42IDE4LjMtNC42IDI1LjQtMTcuNCA0LTcuNCA0MS43LTEwNy43IDQ0LjYtMTEyLjYgMi0zLjQgOC45LTggMTQuNi01LjEgNS43IDMuMSA2LjkgOS40IDYgMTUuMS0xLjEgOS43LTI4IDcwLjktMjguOSA3Ny43LTMuNCAyMi45IDI2LjkgMjYuNiAzOC42IDQgMy43LTcuMSA0NS43LTkyLjYgNDkuNC05OC4zIDQuMy02LjMgNy40LTguMyAxMS43LTggMy4xIDAgOC4zLjkgNy4xIDEwLjktMS40IDkuNC0zNS4xIDcyLjMtMzguOSA4Ny43LTQuNiAyMC42IDYuNiA0MS40IDI0LjkgNTAuNiAxMS40IDUuNyA2Mi41IDE1LjcgNTguNS0xMS4xem01LjcgOTIuM2MtMTAuMyA3LjQtMTIuOSAyMi01LjcgMzIuNiA3LjEgMTAuNiAyMS40IDEzLjEgMzIgNiAxMC42LTcuNCAxMy4xLTIyIDYtMzIuNi03LjQtMTAuNi0yMS43LTEzLjUtMzIuMy02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWdhcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTQuNSAyMDkuNnY2Ni4ybDMzLjUgMzMuNSAzMy4zLTMzLjN2LTY2LjRsLTMzLjQtMzMuNHpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMTQ1LjEgNDE0LjRMMzY3IDQ0MS42bC0yNi0xOS4ydi02NS41bC0zMy40LTMzLjQtMzMuNCAzMy40djY1LjVMMjQ4IDQ0MS42bC0yNi4xLTE5LjJ2LTY1LjVsLTMzLjQtMzMuNC0zMy41IDMzLjR2NjUuNWwtMjYuMSAxOS4yLTI2LjEtMTkuMnYtODdsNTkuNS01OS41VjE4OGw1OS41LTU5LjVWNTIuOWwyNi4xLTE5LjJMMjc0IDUyLjl2NzUuNmw1OS41IDU5LjV2ODcuNmw1OS43IDU5Ljd2ODcuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVuZGVsZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0LjYgMzI1LjJjLTEyLjMtMTIuNC0yOS43LTE5LjItNDguNC0xNy4yLTQzLjMtMS00OS43LTM0LjktMzcuNS05OC44IDIyLjgtNTcuNS0xNC45LTEzMS41LTg3LjQtMTMwLjgtNzcuNC43LTgxLjcgODItMTMwLjkgODItNDguMSAwLTU0LTgxLjMtMTMwLjktODItNzIuOS0uOC0xMTAuMSA3My4zLTg3LjQgMTMwLjggMTIuMiA2My45IDUuOCA5Ny44LTM3LjUgOTguOC0yMS4yLTIuMy0zNyA2LjUtNTMgMjIuNS0xOS45IDE5LjctMTkuMyA5NC44IDQyLjYgMTAyLjYgNDcuMSA1LjkgODEuNi00Mi45IDYxLjItODcuOC00Ny4zLTEwMy43IDE4NS45LTEwNi4xIDE0Ni41LTguMi0uMS4xLS4yLjItLjMuNC0yNi44IDQyLjggNi44IDk3LjQgNTguOCA5NS4yIDUyLjEgMi4xIDg1LjQtNTIuNiA1OC44LTk1LjItLjEtLjItLjItLjMtLjMtLjQtMzkuNC05Ny45IDE5My44LTk1LjUgMTQ2LjUgOC4yLTQuNiAxMC02LjcgMjEuMy01LjcgMzMgNC45IDUzLjQgNjguNyA3NC4xIDEwNC45IDM1LjIgMTcuOC0xNC44IDIzLjEtNjUuNiAwLTg4LjN6bS0zMDMuOS0xOS4xaC0uNmMtNDMuNCAwLTYyLjgtMzcuNS02Mi44LTYyLjggMC0zNC43IDI4LjItNjIuOCA2Mi44LTYyLjhoLjZjMzQuNyAwIDYyLjggMjguMSA2Mi44IDYyLjggMCAyNS0xOS4yIDYyLjgtNjIuOCA2Mi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWNyb2Jsb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk5LjM2LDM2Mi4yM2MyOS40OS0zNC42OSw0Ny4xLTc4LjM0LDQ3LjEtMTI1Ljc5QzQ0Ni40NiwxMjMuNDksMzQ2Ljg2LDMyLDIyNCwzMlMxLjU0LDEyMy40OSwxLjU0LDIzNi40NCwxMDEuMTQsNDQwLjg3LDIyNCw0NDAuODdhMjM5LjI4LDIzOS4yOCwwLDAsMCw3OS40NC0xMy40NCw3LjE4LDcuMTgsMCwwLDEsOC4xMiwyLjU2YzE4LjU4LDI1LjA5LDQ3LjYxLDQyLjc0LDc5Ljg5LDQ5LjkyYTQuNDIsNC40MiwwLDAsMCw1LjIyLTMuNDMsNC4zNyw0LjM3LDAsMCwwLS44NS0zLjYyLDg3LDg3LDAsMCwxLDMuNjktMTEwLjY5Wk0zMjkuNTIsMjEyLjRsLTU3LjMsNDMuNDlMMjkzLDMyNC43NWE2LjUsNi41LDAsMCwxLTkuOTQsNy4yMkwyMjQsMjkwLjkyLDE2NC45NCwzMzJhNi41MSw2LjUxLDAsMCwxLTkuOTUtNy4yMmwyMC43OS02OC44Ni01Ny4zLTQzLjQ5YTYuNSw2LjUsMCwwLDEsMy44LTExLjY4bDcxLjg4LTEuNTEsMjMuNjYtNjcuOTJhNi41LDYuNSwwLDAsMSwxMi4yOCwwbDIzLjY2LDY3LjkyLDcxLjg4LDEuNTFhNi41LDYuNSwwLDAsMSwzLjg4LDExLjY4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWNyb3NvZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMmgyMTQuNnYyMTQuNkgwVjMyem0yMzMuNCAwSDQ0OHYyMTQuNkgyMzMuNFYzMnpNMCAyNjUuNGgyMTQuNlY0ODBIMFYyNjUuNHptMjMzLjQgMEg0NDhWNDgwSDIzMy40VjI2NS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NHYzNDguOWMwIDU2LjIgODggNTguMSA4OCAwVjE3NC4zYzcuOS01Mi45IDg4LTUwLjQgODggNi41djE3NS4zYzAgNTcuOSA5NiA1OCA5NiAwVjI0MGM1LjMtNTQuNyA4OC01Mi41IDg4IDQuM3YyMy44YzAgNTkuOSA4OCA1Ni42IDg4IDBWNjRIMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWl4Y2xvdWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI0LjQzIDIxOS43MjlDNDE2LjEyNCAxMzQuNzI3IDM0NC4xMzUgNjggMjU2LjkxOSA2OGMtNzIuMjY2IDAtMTM2LjIyNCA0Ni41MTYtMTU5LjIwNSAxMTQuMDc0LTU0LjU0NSA4LjAyOS05Ni42MyA1NC44MjItOTYuNjMgMTExLjU4MiAwIDYyLjI5OCA1MC42NjggMTEyLjk2NiAxMTMuMjQzIDExMi45NjZoMjg5LjYxNGM1Mi4zMjkgMCA5NC45NjktNDIuMzYyIDk0Ljk2OS05NC42OTMgMC00NS4xMzEtMzIuMTE4LTgzLjA2My03NC40OC05Mi4yem0tMjAuNDg5IDE0NC41M0gxMTQuMzI3Yy0zOS4wNCAwLTcwLjg4MS0zMS41NjQtNzAuODgxLTcwLjYwNHMzMS44NDEtNzAuNjA0IDcwLjg4MS03MC42MDRjMTguODI3IDAgMzYuNTQ4IDcuNDc1IDQ5LjgzOCAyMC43NjYgMTkuOTYzIDE5Ljk2MyA1MC4xMzMtMTAuMjI3IDMwLjE4LTMwLjE4LTE0LjY3NS0xNC4zOTgtMzIuNjcyLTI0LjM2NS01Mi4wNTMtMjkuMzQ5IDE5LjkzNS00NC4zIDY0Ljc5LTczLjkyNiAxMTQuNjI4LTczLjkyNiA2OS40OTYgMCAxMjUuOTc5IDU2LjQ4MyAxMjUuOTc5IDEyNS43MDIgMCAxMy41NjgtMi4yMTUgMjYuODU3LTYuMzY5IDM5LjU5NC04Ljk0MyAyNy41MTcgMzIuMTMzIDM4LjkzOSA0MC4xNDcgMTMuMjkgMi43NjktOC4zMDYgNC45ODQtMTYuODg5IDYuMzY5LTI1LjQ3MiAxOS4zODEgNy40NzYgMzMuNTAyIDI2LjMwMyAzMy41MDIgNDguNDUzIDAgMjguNzk1LTIzLjUzNSA1Mi4zMy01Mi42MDcgNTIuMzN6bTIzNS4wNjktNTIuMzNjMCA0NC4wMjQtMTIuNzM3IDg2LjM4Ni0zNy4xMDIgMTIyLjY1Ny00LjE1MyA2LjA5Mi0xMC43OTggOS40MTQtMTcuNzIgOS40MTQtMTYuMzE3IDAtMjcuMTI3LTE4LjgyNi0xNy40NDMtMzIuOTQ5IDE5LjM4MS0yOS4zNDkgMjkuOTAzLTYzLjY4MiAyOS45MDMtOTkuMTIycy0xMC41MjEtNjkuNzczLTI5LjkwMy05OC44NDVjLTE1LjY1NS0yMi44MzEgMTkuMzYxLTQ3LjI0IDM1LjE2My0yMy41MzQgMjQuMzY2IDM1Ljk5MyAzNy4xMDIgNzguMzU2IDM3LjEwMiAxMjIuMzc5em0tNzAuODggMGMwIDMxLjU2NS05LjEzNyA2Mi4wMjEtMjYuODU3IDg4LjMyNS00LjE1MyA2LjA5MS0xMC43OTggOS4xMzYtMTcuNzIgOS4xMzYtMTcuMjAxIDAtMjcuMDIyLTE4Ljk3OS0xNy40NDMtMzIuOTQ4IDEzLjAxMy0xOS4xMDQgMTkuNjU4LTQxLjI1NSAxOS42NTgtNjQuNTEzIDAtMjIuOTgxLTYuNjQ1LTQ1LjQwOC0xOS42NTgtNjQuNTEyLTE1Ljc2MS0yMi45ODYgMTkuMDA4LTQ3LjA5NSAzNS4xNjMtMjMuNTM1IDE3LjcxOSAyNi4wMjYgMjYuODU3IDU2LjQ4MyAyNi44NTcgODguMDQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaXhlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTQuNTcsNzYuMDdhNDUuNzEsNDUuNzEsMCwwLDAtNjcuNTEtNi40MWMtMTcuNTgsMTYuMTgtMTksNDMuNTItNC43NSw2Mi43N2w5MS43OCwxMjNMNDEuNzYsMzc5LjU4Yy0xNC4yMywxOS4yNS0xMy4xMSw0Ni41OSw0Ljc0LDYyLjc3QTQ1LjcxLDQ1LjcxLDAsMCwwLDExNCw0MzUuOTRMMjQyLjg5LDI2Mi43YTEyLjE0LDEyLjE0LDAsMCwwLDAtMTQuMjNaTTQ3MC4yNCwzNzkuNTgsMzc3LjkxLDI1NS40NWw5MS43OC0xMjNjMTQuMjItMTkuMjUsMTIuODMtNDYuNTktNC43NS02Mi43N2E0NS43MSw0NS43MSwwLDAsMC02Ny41MSw2LjQxbC0xMjgsMTcyLjEyYTEyLjE0LDEyLjE0LDAsMCwwLDAsMTQuMjNMMzk4LDQzNS45NGE0NS43MSw0NS43MSwwLDAsMCw2Ny41MSw2LjQxQzQ4My4zNSw0MjYuMTcsNDg0LjQ3LDM5OC44Myw0NzAuMjQsMzc5LjU4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaXp1bmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkuMSAwIDI1NmMwIDEzNyAxMTEgMjQ4IDI0OCAyNDhzMjQ4LTExMSAyNDgtMjQ4QzQ5NiAxMTkuMSAzODUgOCAyNDggOHptLTgwIDM1MS45Yy0zMS40IDEwLjYtNTguOCAyNy4zLTgwIDQ4LjJWMTM2YzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDB2MjIzLjl6bTEyMC05LjljLTEyLjktMi0yNi4yLTMuMS0zOS44LTMuMS0xMy44IDAtMjcuMiAxLjEtNDAuMiAzLjFWMTM2YzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDB2MjE0em0xMjAgNTcuN2MtMjEuMi0yMC44LTQ4LjYtMzcuNC04MC00OFYxMzZjMC0yMi4xIDE3LjktNDAgNDAtNDBzNDAgMTcuOSA0MCA0MHYyNzEuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9keCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTYgMjQxLjhsMzYuNyAyMy43VjQ4MGwtMTMzLTgzLjhMMzU2IDI0MS44ek00NDAgNzVIMjI2LjNsLTIzIDM3LjggMTUzLjUgOTYuNUw0NDAgNzV6bS04OSAxNDIuOEw1NS4yIDMydjIxNC41bDQ2IDI5TDM1MSAyMTcuOHpNOTcgMjk0LjJMOCA0MzdoMjEzLjdsMTI1LTIwMC41TDk3IDI5NC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb25lcm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDM4NGgxMDguNEM0MTcgNDU1LjkgMzM4LjEgNTA0IDI0OCA1MDRTNzkgNDU1LjkgMzUuNiAzODRIMTQ0VjI1Ni4yTDI0OCAzNjFsMTA0LTEwNXYxMjh6TTg4IDMzNlYxMjhsMTU5LjQgMTU5LjRMNDA4IDEyOHYyMDhoNzQuOGM4LjUtMjUuMSAxMy4yLTUyIDEzLjItODBDNDk2IDExOSAzODUgOCAyNDggOFMwIDExOSAwIDI1NmMwIDI4IDQuNiA1NC45IDEzLjIgODBIODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5hcHN0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk4LjMgMzczLjZjLTE0LjIgMTMuNi0zMS4zIDI0LjEtNTAuNCAzMC41LTE5LTYuNC0zNi4yLTE2LjktNTAuMy0zMC41aDEwMC43em00NC0xOTkuNmMyMC0xNi45IDQzLjYtMjkuMiA2OS42LTM2LjJWMjk5YzAgMjE5LjQtMzI4IDIxNy42LTMyOCAuM1YxMzcuN2MyNS45IDYuOSA0OS42IDE5LjYgNjkuNSAzNi40IDU2LjgtNDAgMTMyLjUtMzkuOSAxODguOS0uMXptLTIwOC44LTU4LjVjNjQuNC02MCAxNjQuMy02MC4xIDIyOC45LS4yLTcuMSAzLjUtMTMuOSA3LjMtMjAuNiAxMS41LTU4LjctMzAuNS0xMjkuMi0zMC40LTE4Ny45LjEtNi4zLTQtMTMuOS04LjItMjAuNC0xMS40ek00My44IDkzLjJ2NjkuM2MtNTguNCAzNi41LTU4LjQgMTIxLjEuMSAxNTguMyAyNi40IDI0NS4xIDM4MS43IDI0MC4zIDQwNy42IDEuNWwuMy0xLjdjNTguNy0zNi4zIDU4LjktMTIxLjcuMi0xNTguMlY5My4yYy0xNy4zLjUtMzQgMy01MC4xIDcuNC04Mi05MS41LTIyNS41LTkxLjUtMzA3LjUuMS0xNi4zLTQuNC0zMy4xLTctNTAuNi03LjV6TTI1OS4yIDM1MnMzNi0uMyA2MS4zLTEuNWMxMC4yLS41IDIxLjEtNCAyNS41LTYuNSAyNi4zLTE1LjEgMjUuNC0zOS4yIDI2LjItNDcuNC03OS41LS42LTk5LjktMy45LTExMyA1NS40em0tMTM1LjUtNTUuM2MuOCA4LjItLjEgMzIuMyAyNi4yIDQ3LjQgNC40IDIuNSAxNS4yIDYgMjUuNSA2LjUgMjUuMyAxLjEgNjEuMyAxLjUgNjEuMyAxLjUtMTMuMi01OS40LTMzLjctNTYuMS0xMTMtNTUuNHptMTY5LjEgMTIzLjRjLTMuMi01LjMtNi45LTcuMy02LjktNy4zLTI0LjggNy4zLTUyLjIgNi45LTc1LjkgMCAwIDAtMi45IDEuNS02LjQgNi42LTIuOCA0LjEtMy43IDkuNi0zLjcgOS42IDI5LjEgMTcuNiA2Ny4xIDE3LjYgOTYuMiAwLS4xLS4xLS4zLTQtMy4zLTguOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmVvcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTUuNDQgNTEyaC05NS4xMUwyMTIuMTIgMzU3LjQ2djkxLjFMMTI1LjY5IDUxMkgyOFYyOS44Mkw2OC40NyAwaDEwOC4wNWwxMjMuNzQgMTc2LjEzVjYzLjQ1TDM4Ni42OSAwaDk3LjY5djQ2MS41ek0zOC43NyAzNS4yN1Y0OTZsNzItNTIuODhWMTk0bDIxNS41IDMwNy42NGg4NC43OWw1Mi4zNS0zOC4xN2gtNzguMjdMNjkgMTN6bTgyLjU0IDQ2Ni42MWw4MC01OC43OHYtMTAxbC03OS43Ni0xMTQuNHYyMjAuOTRMNDkgNTAxLjg5aDcyLjM0ek04MC42MyAxMC43N2wzMTAuNiA0NDIuNTdoODIuMzdWMTAuNzdoLTc5Ljc1djMxNy41NkwxNzAuOTEgMTAuNzd6TTMxMSAxOTEuNjVsNzIgMTAyLjgxVjE1LjkzbC03MiA1M3YxMjIuNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5pbWJsciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDYuNiAyOTkuMjljMTUuNTcgMCAyNy4xNSAxMS40NiAyNy4xNSAyN3MtMTEuNjIgMjctMjcuMTUgMjdjLTE1LjcgMC0yNy4xNS0xMS41Ny0yNy4xNS0yN3MxMS41NS0yNyAyNy4xNS0yN3pNMTEzIDMyNi4yNWMwLTE1LjYxIDExLjY4LTI3IDI3LjE1LTI3czI3LjE1IDExLjQ2IDI3LjE1IDI3LTExLjQ3IDI3LTI3LjE1IDI3Yy0xNS40NCAwLTI3LjE1LTExLjMxLTI3LjE1LTI3TTE5MS43NiAxNTlDMTU3IDE1OSA4OS40NSAxNzguNzcgNTkuMjUgMjI3TDE0IDB2MzM1LjQ4QzE0IDQzMy4xMyA5My42MSA1MTIgMTkxLjc2IDUxMnMxNzcuNzYtNzguOTUgMTc3Ljc2LTE3Ni41MlMyOTAuMTMgMTU5IDE5MS43NiAxNTl6bTAgMzA4LjEyYy03My4yNyAwLTEzMi41MS01OC45LTEzMi41MS0xMzEuNTlzNTkuMjQtMTMxLjU5IDEzMi41MS0xMzEuNTkgMTMyLjUxIDU4Ljg2IDEzMi41MSAxMzEuNTRTMjY1IDQ2Ny4wNyAxOTEuNzYgNDY3LjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOb2RlSnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDUwOGMtNi43IDAtMTMuNS0xLjgtMTkuNC01LjJsLTYxLjctMzYuNWMtOS4yLTUuMi00LjctNy0xLjctOCAxMi4zLTQuMyAxNC44LTUuMiAyNy45LTEyLjcgMS40LS44IDMuMi0uNSA0LjYuNGw0Ny40IDI4LjFjMS43IDEgNC4xIDEgNS43IDBsMTg0LjctMTA2LjZjMS43LTEgMi44LTMgMi44LTVWMTQ5LjNjMC0yLjEtMS4xLTQtMi45LTUuMUwyMjYuOCAzNy43Yy0xLjctMS00LTEtNS43IDBMMzYuNiAxNDQuM2MtMS44IDEtMi45IDMtMi45IDUuMXYyMTMuMWMwIDIgMS4xIDQgMi45IDQuOWw1MC42IDI5LjJjMjcuNSAxMy43IDQ0LjMtMi40IDQ0LjMtMTguN1YxNjcuNWMwLTMgMi40LTUuMyA1LjQtNS4zaDIzLjRjMi45IDAgNS40IDIuMyA1LjQgNS4zVjM3OGMwIDM2LjYtMjAgNTcuNi01NC43IDU3LjYtMTAuNyAwLTE5LjEgMC00Mi41LTExLjZsLTQ4LjQtMjcuOUM4LjEgMzg5LjIuNyAzNzYuMy43IDM2Mi40VjE0OS4zYzAtMTMuOCA3LjQtMjYuOCAxOS40LTMzLjdMMjA0LjYgOWMxMS43LTYuNiAyNy4yLTYuNiAzOC44IDBsMTg0LjcgMTA2LjdjMTIgNi45IDE5LjQgMTkuOCAxOS40IDMzLjd2MjEzLjFjMCAxMy44LTcuNCAyNi43LTE5LjQgMzMuN0wyNDMuNCA1MDIuOGMtNS45IDMuNC0xMi42IDUuMi0xOS40IDUuMnptMTQ5LjEtMjEwLjFjMC0zOS45LTI3LTUwLjUtODMuNy01OC01Ny40LTcuNi02My4yLTExLjUtNjMuMi0yNC45IDAtMTEuMSA0LjktMjUuOSA0Ny40LTI1LjkgMzcuOSAwIDUxLjkgOC4yIDU3LjcgMzMuOC41IDIuNCAyLjcgNC4yIDUuMiA0LjJoMjRjMS41IDAgMi45LS42IDMuOS0xLjdzMS41LTIuNiAxLjQtNC4xYy0zLjctNDQuMS0zMy02NC42LTkyLjItNjQuNi01Mi43IDAtODQuMSAyMi4yLTg0LjEgNTkuNSAwIDQwLjQgMzEuMyA1MS42IDgxLjggNTYuNiA2MC41IDUuOSA2NS4yIDE0LjggNjUuMiAyNi43IDAgMjAuNi0xNi42IDI5LjQtNTUuNSAyOS40LTQ4LjkgMC01OS42LTEyLjMtNjMuMi0zNi42LS40LTIuNi0yLjYtNC41LTUuMy00LjVoLTIzLjljLTMgMC01LjMgMi40LTUuMyA1LjMgMCAzMS4xIDE2LjkgNjguMiA5Ny44IDY4LjIgNTguNC0uMSA5Mi0yMy4yIDkyLTYzLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE2LjMgNDUyYy0yLjEgMC00LjItLjYtNi4xLTEuNkwyOTEgNDM5Yy0yLjktMS42LTEuNS0yLjItLjUtMi41IDMuOC0xLjMgNC42LTEuNiA4LjctNCAuNC0uMiAxLS4xIDEuNC4xbDE0LjggOC44Yy41LjMgMS4zLjMgMS44IDBMMzc1IDQwOGMuNS0uMy45LS45LjktMS42di02Ni43YzAtLjctLjMtMS4zLS45LTEuNmwtNTcuOC0zMy4zYy0uNS0uMy0xLjItLjMtMS44IDBsLTU3LjggMzMuM2MtLjYuMy0uOSAxLS45IDEuNnY2Ni43YzAgLjYuNCAxLjIuOSAxLjVsMTUuOCA5LjFjOC42IDQuMyAxMy45LS44IDEzLjktNS44di02NS45YzAtLjkuNy0xLjcgMS43LTEuN2g3LjNjLjkgMCAxLjcuNyAxLjcgMS43djY1LjljMCAxMS41LTYuMiAxOC0xNy4xIDE4LTMuMyAwLTYgMC0xMy4zLTMuNmwtMTUuMi04LjdjLTMuNy0yLjItNi4xLTYuMi02LjEtMTAuNXYtNjYuN2MwLTQuMyAyLjMtOC40IDYuMS0xMC41bDU3LjgtMzMuNGMzLjctMi4xIDguNS0yLjEgMTIuMSAwbDU3LjggMzMuNGMzLjcgMi4yIDYuMSA2LjIgNi4xIDEwLjV2NjYuN2MwIDQuMy0yLjMgOC40LTYuMSAxMC41bC01Ny44IDMzLjRjLTEuNyAxLjEtMy44IDEuNy02IDEuN3ptNDYuNy02NS44YzAtMTIuNS04LjQtMTUuOC0yNi4yLTE4LjItMTgtMi40LTE5LjgtMy42LTE5LjgtNy44IDAtMy41IDEuNS04LjEgMTQuOC04LjEgMTEuOSAwIDE2LjMgMi42IDE4LjEgMTAuNi4yLjguOCAxLjMgMS42IDEuM2g3LjVjLjUgMCAuOS0uMiAxLjItLjUuMy0uNC41LS44LjQtMS4zLTEuMi0xMy44LTEwLjMtMjAuMi0yOC44LTIwLjItMTYuNSAwLTI2LjMgNy0yNi4zIDE4LjYgMCAxMi43IDkuOCAxNi4xIDI1LjYgMTcuNyAxOC45IDEuOSAyMC40IDQuNiAyMC40IDguMyAwIDYuNS01LjIgOS4yLTE3LjQgOS4yLTE1LjMgMC0xOC43LTMuOC0xOS44LTExLjQtLjEtLjgtLjgtMS40LTEuNy0xLjRoLTcuNWMtLjkgMC0xLjcuNy0xLjcgMS43IDAgOS43IDUuMyAyMS4zIDMwLjYgMjEuMyAxOC41IDAgMjktNy4yIDI5LTE5Ljh6bTU0LjUtNTAuMWMwIDYuMS01IDExLjEtMTEuMSAxMS4xcy0xMS4xLTUtMTEuMS0xMS4xYzAtNi4zIDUuMi0xMS4xIDExLjEtMTEuMSA2LS4xIDExLjEgNC44IDExLjEgMTEuMXptLTEuOCAwYzAtNS4yLTQuMi05LjMtOS40LTkuMy01LjEgMC05LjMgNC4xLTkuMyA5LjMgMCA1LjIgNC4yIDkuNCA5LjMgOS40IDUuMi0uMSA5LjQtNC4zIDkuNC05LjR6bS00LjUgNi4yaC0yLjZjLS4xLS42LS41LTMuOC0uNS0zLjktLjItLjctLjQtMS4xLTEuMy0xLjFoLTIuMnY1aC0yLjR2LTEyLjVoNC4zYzEuNSAwIDQuNCAwIDQuNCAzLjMgMCAyLjMtMS41IDIuOC0yLjQgMy4xIDEuNy4xIDEuOCAxLjIgMi4xIDIuOC4xIDEgLjMgMi43LjYgMy4zem0tMi44LTguOGMwLTEuNy0xLjItMS43LTEuOC0xLjdoLTJ2My41aDEuOWMxLjYgMCAxLjktMS4xIDEuOS0xLjh6TTEzNy4zIDE5MWMwLTIuNy0xLjQtNS4xLTMuNy02LjRsLTYxLjMtMzUuM2MtMS0uNi0yLjItLjktMy40LTFoLS42Yy0xLjIgMC0yLjMuNC0zLjQgMUwzLjcgMTg0LjZDMS40IDE4NS45IDAgMTg4LjQgMCAxOTFsLjEgOTVjMCAxLjMuNyAyLjUgMS44IDMuMiAxLjEuNyAyLjUuNyAzLjcgMEw0MiAyNjguM2MyLjMtMS40IDMuNy0zLjggMy43LTYuNHYtNDQuNGMwLTIuNiAxLjQtNS4xIDMuNy02LjRsMTUuNS04LjljMS4yLS43IDIuNC0xIDMuNy0xIDEuMyAwIDIuNi4zIDMuNyAxbDE1LjUgOC45YzIuMyAxLjMgMy43IDMuOCAzLjcgNi40djQ0LjRjMCAyLjYgMS40IDUuMSAzLjcgNi40bDM2LjQgMjAuOWMxLjEuNyAyLjYuNyAzLjcgMCAxLjEtLjYgMS44LTEuOSAxLjgtMy4ybC4yLTk1ek00NzIuNSA4Ny4zdjE3Ni40YzAgMi42LTEuNCA1LjEtMy43IDYuNGwtNjEuMyAzNS40Yy0yLjMgMS4zLTUuMSAxLjMtNy40IDBsLTYxLjMtMzUuNGMtMi4zLTEuMy0zLjctMy44LTMuNy02LjR2LTcwLjhjMC0yLjYgMS40LTUuMSAzLjctNi40bDYxLjMtMzUuNGMyLjMtMS4zIDUuMS0xLjMgNy40IDBsMTUuMyA4LjhjMS43IDEgMy45LS4zIDMuOS0yLjJ2LTk0YzAtMi44IDMtNC42IDUuNS0zLjJsMzYuNSAyMC40YzIuMyAxLjIgMy44IDMuNyAzLjggNi40em0tNDYgMTI4LjljMC0uNy0uNC0xLjMtLjktMS42bC0yMS0xMi4yYy0uNi0uMy0xLjMtLjMtMS45IDBsLTIxIDEyLjJjLS42LjMtLjkuOS0uOSAxLjZ2MjQuM2MwIC43LjQgMS4zLjkgMS42bDIxIDEyLjFjLjYuMyAxLjMuMyAxLjggMGwyMS0xMi4xYy42LS4zLjktLjkuOS0xLjZ2LTI0LjN6bTIwOS44LS43YzIuMy0xLjMgMy43LTMuOCAzLjctNi40VjE5MmMwLTIuNi0xLjQtNS4xLTMuNy02LjRsLTYwLjktMzUuNGMtMi4zLTEuMy01LjEtMS4zLTcuNCAwbC02MS4zIDM1LjRjLTIuMyAxLjMtMy43IDMuOC0zLjcgNi40djcwLjhjMCAyLjcgMS40IDUuMSAzLjcgNi40bDYwLjkgMzQuN2MyLjIgMS4zIDUgMS4zIDcuMyAwbDM2LjgtMjAuNWMyLjUtMS40IDIuNS01IDAtNi40TDU1MCAyNDEuNmMtMS4yLS43LTEuOS0xLjktMS45LTMuMnYtMjIuMmMwLTEuMy43LTIuNSAxLjktMy4ybDE5LjItMTEuMWMxLjEtLjcgMi42LS43IDMuNyAwbDE5LjIgMTEuMWMxLjEuNyAxLjkgMS45IDEuOSAzLjJ2MTcuNGMwIDIuOCAzLjEgNC42IDUuNiAzLjJsMzYuNy0yMS4zek01NTkgMjE5Yy0uNC4zLS43LjctLjcgMS4ydjEzLjZjMCAuNS4zIDEgLjcgMS4ybDExLjggNi44Yy40LjMgMSAuMyAxLjQgMEw1ODQgMjM1Yy40LS4zLjctLjcuNy0xLjJ2LTEzLjZjMC0uNS0uMy0xLS43LTEuMmwtMTEuOC02LjhjLS40LS4zLTEtLjMtMS40IDBMNTU5IDIxOXptLTI1NC4yIDQzLjV2LTcwLjRjMC0yLjYtMS42LTUuMS0zLjktNi40bC02MS4xLTM1LjJjLTIuMS0xLjItNS0xLjQtNy40IDBsLTYxLjEgMzUuMmMtMi4zIDEuMy0zLjkgMy43LTMuOSA2LjR2NzAuNGMwIDIuOCAxLjkgNS4yIDQgNi40bDYxLjIgMzUuMmMyLjQgMS40IDUuMiAxLjMgNy40IDBsNjEtMzUuMmMxLjgtMSAzLjEtMi43IDMuNi00LjcuMS0uNS4yLTEuMS4yLTEuN3ptLTc0LjMtMTI0LjlsLS44LjVoMS4xbC0uMy0uNXptNzYuMiAxMzAuMmwtLjQtLjd2LjlsLjQtLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5wbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMjg4aC0zMnYtNjRoMzJ2NjR6bTI4OC0xMjh2MTkySDI4OHYzMkgxNjB2LTMySDBWMTYwaDU3NnptLTQxNiAzMkgzMnYxMjhoNjR2LTk2aDMydjk2aDMyVjE5MnptMTYwIDBIMTkydjE2MGg2NHYtMzJoNjRWMTkyem0yMjQgMEgzNTJ2MTI4aDY0di05NmgzMnY5NmgzMnYtOTZoMzJ2OTZoMzJWMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOczggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA0LjMyNCwyNjkuMTcyaDI2LjA2N1YyNDIuOTk0SDEwNC4zMjRabTUyLjQ2Ni0yNi4xNzgtLjA1NS0yNi4xNzh2LS45NDFhMzkuMzI1LDM5LjMyNSwwLDAsMC03OC42NDQuOTQxdi4xNjZoMjYuNHYtLjE2NmExMi45OCwxMi45OCwwLDAsMSwyNS45NTYsMHYyNi4xNzhabTUyLjM1NiwyNS44NDZhOTEuMSw5MS4xLDAsMCwxLTkxLjEsOTEuMWgtLjYwOWE5MS4xLDkxLjEsMCwwLDEtOTEuMS05MS4xSDB2LjE2NkExMTcuMzMsMTE3LjMzLDAsMCwwLDExNy40NCwzODYuMjhoLjc3NUExMTcuMzMxLDExNy4zMzEsMCwwLDAsMjM1LjQ5LDI2OC44NFYyNDIuODI4SDIwOS4xNDZabS0xNTcuMjMzLDBhNjUuMzYyLDY1LjM2MiwwLDAsMCwxMzAuNzIzLDBIMTU2LjI5MmEzOS4wMjMsMzkuMDIzLDAsMCwxLTc4LjAzNSwwVjI0Mi44ODNINTEuOTY4di0yNi42MkE2NS40Miw2NS40MiwwLDAsMSwxODIuOCwyMTcuNDh2MjUuMjkzaDI2LjM0NFYyMTcuNDhhOTEuNzYxLDkxLjc2MSwwLDAsMC0xODMuNTIyLDB2MjUuNEg1MS45MTNabTQxOC40LTcxLjE3M2MxMy42NywwLDI0LjU3Myw2LjY0MiwzMC4wNTIsMTguMjY0bC43MTksMS41NDksMjMuMjQ1LTExLjUxMS0uNjA5LTEuNDM5Yy04LjAyNS0xOS4yNi0yOC41LTMxLjI3LTUzLjQwNy0zMS4yNy0yMy4xMzQsMC00My42MTEsMTEuNC01MC45NzIsMjguNDQ3LS4xMjMsMjYuODc2LS4xNTgsMjMuOSwwLDI0Ljg1LDQuNywxMS4wMTMsMTQuNTU1LDE5LjM3LDI4LjY2OCwyNC4yNDFhMTAyLjAzMywxMDIuMDMzLDAsMCwwLDE5LjgxMywzLjk4NGM1LjQ3OS43MiwxMC42MjYsMS4zODQsMTUuODI5LDMuMSw2LjM2NCwyLjEsMTAuNDYsNS4yNTcsMTIuODQsOS44NTF2OS44NTFjLTMuNzA4LDcuNTI3LTEzLjc4MSwxMi4zNDItMjUuNzkxLDEyLjM0Mi0xNC4zMzQsMC0yNS45NTYtNi45MTgtMzEuOTMzLTE5LjAzOWwtLjcyLTEuNDk0TDQxNS4wMjYsMjgwLjlsLjU1MywxLjQzOWM3LjkxNSwxOS40MjYsMjkuNjA5LDMyLjA0NCw1NS4yODksMzIuMDQ0LDIzLjYzMiwwLDQ0LjYwOC0xMS40LDUyLjMtMjguNDQ3bC4xNjYtMjUuOS0uMTY2LS42NjRjLTQuODctMTEuMDE0LTE1LjIxOS0xOS42NDctMjguOTQ0LTI0LjI0MS03LjY5My0yLjcxMi0xNC4zMzUtMy42LTIwLjctNC40MjdhODMuNzc3LDgzLjc3NywwLDAsMS0xNC44MzItMi44NzhjLTYuMzEtMS45MzctMTAuNC01LjA5Mi0xMi42MTktOS42M3YtOC40MTJDNDQ5LjQ1LDIwMi40MjcsNDU4Ljk2OSwxOTcuNjY3LDQ3MC4zMTUsMTk3LjY2N1pNMjg3LjU2OCwzMTEuMzQ0aDI2LjA2N3YtNjguNEgyODcuNTY4Wm0zNTIuMjY2LTUzLjNjLTIuOTMzLTYuMjU0LTguMy0xMi4wMS0xNS40NDEtMTYuNzE0QTM3Ljk5LDM3Ljk5LDAsMCwwLDYzNy40LDIyNmwuMTY2LTI1LjM0Ny0uMTY2LS42NjRDNjMwLjAzOCwxODQsNjEwLjY2NywxNzMuMjYsNTg5LjI1LDE3My4yNlM1NDguNDYxLDE4NCw1NDEuMSwxOTkuOTkybC0uMTY2LDI1LjM0Ny4xNjYuNjY0YTM5LjY0MywzOS42NDMsMCwwLDAsMTMuMDA2LDE1LjMzMWMtNy4yLDQuNy0xMi41MDgsMTAuNDYtMTUuNDQxLDE2LjcxNGwtLjE2NiwyOC44ODkuMTY2LjcyYzcuNTgyLDE1Ljk5NCwyNy44OTMsMjYuNzMxLDUwLjU4NSwyNi43MzFzNDMuMDU3LTEwLjczNyw1MC41ODQtMjYuNzMxbC4xNjYtMjguODlabS03My4yMi01MC44MDZjMy42LTYuMzEsMTIuNTYzLTEwLjUxNiwyMi41OC0xMC41MTZzMTkuMDM4LDQuMjA2LDIyLjYzNiwxMC41MTZ2MTMuNzI1Yy0zLjU0Miw2LjItMTIuNTYzLDEwLjM0OS0yMi42MzYsMTAuMzQ5cy0xOS4wOTQtNC4xNS0yMi41OC0xMC4zNDlabTQ3LjMxOSw3Mi4xNjljLTMuNzY0LDYuNjQxLTEzLjMzOCwxMC45LTI0LjY4MywxMC45LTExLjEyNSwwLTIwLjk3Ni00LjM3Mi0yNC42ODQtMTAuOVYyNjMuMjVjMy43MDgtNi4zMDksMTMuNS0xMC41MTUsMjQuNjg0LTEwLjUxNSwxMS4zNDUsMCwyMC45MTksNC4xNSwyNC42ODMsMTAuNTE1Wk0zNzYuNCwyNjUuOTYybC01OS44MjctODkuNzEzaC0yOXY0MC42MjNoMjYuNTF2LjM4N2w2Mi41MzksOTQuMDg1SDQwMi4zVjE3Ni4yNDlIMzc2LjRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU51dHJpdGlvbml4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0MDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg4IDguMVMyMjEuNC0uMSAyMDkgMTEyLjVjMCAwIDE5LjEtNzQuOSAxMDMtNDAuNiAwIDAtMTcuNyA3NC04OCA1NiAwIDAgMTQuNi01NC42IDY2LjEtNTYuNiAwIDAtMzkuOS0xMC4zLTgyLjEgNDguOCAwIDAtMTkuOC05NC41LTkzLjYtOTkuNyAwIDAgNzUuMiAxOS40IDc3LjYgMTA3LjUgMCAuMS0xMDYuNCA3LTEwNC0xMTkuOHptMzEyIDMxNS42YzAgNDguNS05LjcgOTUuMy0zMiAxMzIuMy00Mi4yIDMwLjktMTA1IDQ4LTE2OCA0OC02Mi45IDAtMTI1LjgtMTcuMS0xNjgtNDhDOS43IDQxOSAwIDM3Mi4yIDAgMzIzLjcgMCAyNzUuMyAxNy43IDIyOSA0MCAxOTJjNDIuMi0zMC45IDk3LjEtNDguNiAxNjAtNDguNiA2MyAwIDExNy44IDE3LjYgMTYwIDQ4LjYgMjIuMyAzNyA0MCA4My4zIDQwIDEzMS43ek0xMjAgNDI4YzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHpNMTkyIDQyOGMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6TTI2NCA0MjhjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4em0wLTY2LjJjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4em0wLTY2LjJjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4ek0zMzYgNDI4YzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMjQtMzkuNmMtNC44LTIyLjMtNy40LTM2LjktMTYtNTYtMzguOC0xOS45LTkwLjUtMzItMTQ0LTMyUzk0LjggMTgwLjEgNTYgMjAwYy04LjggMTkuNS0xMS4yIDMzLjktMTYgNTYgNDIuMi03LjkgOTguNy0xNC44IDE2MC0xNC44czExNy44IDYuOSAxNjAgMTQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2N0b3B1c0RlcGxveSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTUuNiwzNDkuMmMtNDUuODkxLTM5LjA5LTM2LjY3LTc3Ljg3Ny0xNi4wOTUtMTI4LjExQzQ3NS4xNiwxMzQuMDQsNDE1Ljk2NywzNC4xNCwzMjkuOTMsOC4zLDIzNy4wNC0xOS42LDEzNC4yNTIsMjQuMzQxLDk5LjY3NywxMTcuMTQ3YTE4MC44NjIsMTgwLjg2MiwwLDAsMC0xMC45ODgsNzMuNTQ0YzEuNzMzLDI5LjU0MywxNC43MTcsNTIuOTcsMjQuMDksODAuMywxNy4yLDUwLjE2MS0yOC4xLDkyLjc0My02Ni42NjIsMTE3LjU4Mi00Ni44MDYsMzAuMi0zNi4zMTksMzkuODU3LTguNDI4LDQxLjg1OCwyMy4zNzgsMS42OCw0NC40NzgtNC41NDgsNjUuMjY1LTE1LjA0NSw5LjItNC42NDcsNDAuNjg3LTE4LjkzMSw0NS4xMy0yOC41ODhDMTM1LjksNDEzLjM4OCwxMTEuMTIyLDQ1OS41LDEyNi42MjEsNDg4LjljMTkuMSwzNi4yMjksNjcuMTEyLTMxLjc3LDc2LjcwOS00NS44MTIsOC41OTEtMTIuNTcyLDQyLjk2My04MS4yNzksNjMuNjI3LTQ2LjkyNiwxOC44NjUsMzEuMzYxLDguNiw3Ni4zOTEsMzUuNzM4LDEwNC42MjIsMzIuODU0LDM0LjIsNTEuMTU1LTE4LjMxMiw1MS40MTItNDQuMjIxLjE2My0xNi40MTEtNi4xLTk1Ljg1MiwyOS45LTU5Ljk0NEM0MDUuNDI4LDQxOCw0MzYuOTEyLDQ2Ny44LDQ3Mi41NjgsNDYzLjY0MmMzOC43MzYtNC41MTYtMjIuMTIzLTY3Ljk2Ny0yOC4yNjItNzguNjk1LDUuMzkzLDQuMjc5LDUzLjY2NSwzNC4xMjgsNTMuODE4LDkuNTJDNDk4LjIzNCwzNzUuNjc4LDQ2OC4wMzksMzU5LjgsNDU1LjYsMzQ5LjJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9kbm9rbGFzc25pa2lTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg0LjIgMTc3LjFjMC0yMi4xIDE3LjktNDAgMzkuOC00MHMzOS44IDE3LjkgMzkuOCA0MGMwIDIyLTE3LjkgMzkuOC0zOS44IDM5LjhzLTM5LjgtMTcuOS0zOS44LTM5Ljh6TTQ0OCA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHptLTMwNS4xIDk3LjFjMCA0NC42IDM2LjQgODAuOSA4MS4xIDgwLjlzODEuMS0zNi4yIDgxLjEtODAuOWMwLTQ0LjgtMzYuNC04MS4xLTgxLjEtODEuMXMtODEuMSAzNi4yLTgxLjEgODEuMXptMTc0LjUgOTAuN2MtNC42LTkuMS0xNy4zLTE2LjgtMzQuMS0zLjYgMCAwLTIyLjcgMTgtNTkuMyAxOHMtNTkuMy0xOC01OS4zLTE4Yy0xNi44LTEzLjItMjkuNS01LjUtMzQuMSAzLjYtNy45IDE2LjEgMS4xIDIzLjcgMjEuNCAzNyAxNy4zIDExLjEgNDEuMiAxNS4yIDU2LjYgMTYuOGwtMTIuOSAxMi45Yy0xOC4yIDE4LTM1LjUgMzUuNS00Ny43IDQ3LjctMTcuNiAxNy42IDEwLjcgNDUuOCAyOC40IDI4LjZsNDcuNy00Ny45YzE4LjIgMTguMiAzNS43IDM1LjcgNDcuNyA0Ny45IDE3LjYgMTcuMiA0Ni0xMC43IDI4LjYtMjguNmwtNDcuNy00Ny43LTEzLTEyLjljMTUuNS0xLjYgMzkuMS01LjkgNTYuMi0xNi44IDIwLjQtMTMuMyAyOS4zLTIxIDIxLjUtMzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9kbm9rbGFzc25pa2kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc1LjEgMzM0Yy0yNy40IDE3LjQtNjUuMSAyNC4zLTkwIDI2LjlsMjAuOSAyMC42IDc2LjMgNzYuM2MyNy45IDI4LjYtMTcuNSA3My4zLTQ1LjcgNDUuNy0xOS4xLTE5LjQtNDcuMS00Ny40LTc2LjMtNzYuNkw4NCA1MDMuNGMtMjguMiAyNy41LTczLjYtMTcuNi00NS40LTQ1LjcgMTkuNC0xOS40IDQ3LjEtNDcuNCA3Ni4zLTc2LjNsMjAuNi0yMC42Yy0yNC42LTIuNi02Mi45LTkuMS05MC42LTI2LjktMzIuNi0yMS00Ni45LTMzLjMtMzQuMy01OSA3LjQtMTQuNiAyNy43LTI2LjkgNTQuNi01LjcgMCAwIDM2LjMgMjguOSA5NC45IDI4LjlzOTQuOS0yOC45IDk0LjktMjguOWMyNi45LTIxLjEgNDcuMS04LjkgNTQuNiA1LjcgMTIuNCAyNS43LTEuOSAzOC0zNC41IDU5LjF6TTMwLjMgMTI5LjdDMzAuMyA1OCA4OC42IDAgMTYwIDBzMTI5LjcgNTggMTI5LjcgMTI5LjdjMCA3MS40LTU4LjMgMTI5LjQtMTI5LjcgMTI5LjRzLTEyOS43LTU4LTEyOS43LTEyOS40em02NiAwYzAgMzUuMSAyOC42IDYzLjcgNjMuNyA2My43czYzLjctMjguNiA2My43LTYzLjdjMC0zNS40LTI4LjYtNjQtNjMuNy02NHMtNjMuNyAyOC42LTYzLjcgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9sZFJlcHVibGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzNS43NiAxMC4yM2M3LjUtLjMxIDE1LS4yOCAyMi41LS4wOSAzLjYxLjE0IDcuMi40IDEwLjc5LjczIDQuOTIuMjcgOS43OSAxLjAzIDE0LjY3IDEuNjIgMi45My40MyA1LjgzLjk4IDguNzUgMS40NiA3LjkgMS4zMyAxNS42NyAzLjI4IDIzLjM5IDUuNCAxMi4yNCAzLjQ3IDI0LjE5IDcuOTIgMzUuNzYgMTMuMjEgMjYuNTYgMTIuMjQgNTAuOTQgMjkuMjEgNzEuNjMgNDkuODggMjAuMDMgMjAuMDkgMzYuNzIgNDMuNTUgNDguODkgNjkuMTkgMS4xMyAyLjU5IDIuNDQgNS4xIDMuNDcgNy43NCAyLjgxIDYuNDMgNS4zOSAxMi45NyA3LjU4IDE5LjYzIDQuMTQgMTIuMzMgNy4zNCAyNC45OSA5LjQyIDM3LjgzLjU3IDMuMTQgMS4wNCA2LjMgMS40IDkuNDcuNTUgMy44My45NCA3LjY5IDEuMTggMTEuNTYuODMgOC4zNC44NCAxNi43My43NyAyNS4xLS4wNyA0Ljk3LS4yNiA5Ljk0LS43NSAxNC44OS0uMjQgMy4zOC0uNTEgNi43Ni0uOTggMTAuMTItLjM5IDIuNzItLjYzIDUuNDYtMS4xMSA4LjE3LS45IDUuMTUtMS43IDEwLjMxLTIuODcgMTUuNDEtNC4xIDE4LjUtMTAuMyAzNi41NS0xOC41MSA1My42My0xNS43NyAzMi44My0zOC44MyA2Mi4xNy02Ny4xMiA4NS4xMmEyNDYuNTAzIDI0Ni41MDMgMCAwIDEtNTYuOTEgMzQuODZjLTYuMjEgMi42OC0xMi40NiA1LjI1LTE4Ljg3IDcuNDEtMy41MSAxLjE2LTcuMDEgMi4zOC0xMC41NyAzLjM5LTYuNjIgMS44OC0xMy4yOSAzLjY0LTIwLjA0IDUtNC42Ni45MS05LjM0IDEuNzMtMTQuMDMgMi40OC01LjI1LjY2LTEwLjUgMS40NC0xNS43OSAxLjc0LTYuNjkuNjYtMTMuNDEuODQtMjAuMTIuODEtNi44Mi4wMy0xMy42NS0uMTItMjAuNDUtLjc5LTMuMjktLjIzLTYuNTctLjUtOS44My0uOTUtMi43Mi0uMzktNS40Ni0uNjMtOC4xNy0xLjExLTQuMTItLjcyLTguMjUtMS4zNy0xMi4zNS0yLjIyLTQuMjUtLjk0LTguNDktMS44OS0xMi42OS0zLjAyLTguNjMtMi4xNy0xNy4wOC01LjAxLTI1LjQxLTguMTMtMTAuNDktNC4xMi0yMC43OS04Ljc1LTMwLjY0LTE0LjI1LTIuMTQtMS4xNS00LjI4LTIuMjktNi4zNS0zLjU3LTExLjIyLTYuNTgtMjEuODYtMTQuMS0zMS45Mi0yMi4zNC0zNC42OC0yOC40MS02MS40MS02Ni40My03Ni4zNS0xMDguNy0zLjA5LTguNzQtNS43MS0xNy42NS03LjgtMjYuNjgtMS40OC02LjE2LTIuNTItMTIuNDItMy41OC0xOC42Ni0uNC0yLjM1LS42MS00LjczLS45NS03LjA5LS42LTMuOTYtLjc1LTcuOTYtMS4xNy0xMS45NC0uOC05LjQ3LS43MS0xOC45OS0uNTEtMjguNDkuMTQtMy41MS4zNC03LjAxLjctMTAuNTEuMzEtMy4xNy40Ni02LjM3LjkyLTkuNTIuNDEtMi44MS42NS01LjY1IDEuMTYtOC40NC43LTMuOTQgMS4zLTcuOSAyLjEyLTExLjgyIDMuNDMtMTYuNTIgOC40Ny0zMi43MyAxNS4yNi00OC4xOCAxLjE1LTIuOTIgMi41OS01LjcyIDMuODYtOC41OSA4LjA1LTE2LjcxIDE3LjktMzIuNTYgMjkuNDktNDcuMDYgMjAtMjUuMzggNDUuMS00Ni42OCA3My4yNy02Mi40NyA3LjUtNC4xNSAxNS4xNi04LjA1IDIzLjA3LTExLjM3IDE1LjgyLTYuODggMzIuNDEtMTEuOTUgNDkuMzEtMTUuMzggMy41MS0uNjcgNy4wNC0xLjI0IDEwLjU2LTEuODUgMi42Mi0uNDcgNS4yOC0uNyA3LjkxLTEuMDggMy41My0uNTMgNy4xLS42OCAxMC42NS0xLjA0IDIuNDYtLjI0IDQuOTEtLjM2IDcuMzYtLjUxbTguNjQgMjQuNDFjLTkuMjMuMS0xOC40My45OS0yNy41NyAyLjIzLTcuMyAxLjA4LTE0LjUzIDIuNi0yMS43MSA0LjMtMTMuOTEgMy41LTI3LjQ4IDguMzQtNDAuNDYgMTQuNDItMTAuNDYgNC45OS0yMC41OSAxMC43LTMwLjE4IDE3LjIyLTQuMTggMi45Mi04LjQgNS44LTEyLjM0IDkuMDMtNS4wOCAzLjk3LTkuOTggOC4xNy0xNC42OCAxMi41OS0yLjUxIDIuMjQtNC44MSA0LjctNy4yMiA3LjA2LTI4LjIyIDI4Ljc5LTQ4LjQ0IDY1LjM5LTU3LjUgMTA0LjY5LTIuMDQgOC40NC0zLjU0IDE3LjAyLTQuNDQgMjUuNjUtMS4xIDguODktMS40NCAxNy44NS0xLjQxIDI2LjguMTEgNy4xNC4zOCAxNC4yOCAxLjIyIDIxLjM3LjYyIDcuMTIgMS44NyAxNC4xNiAzLjIgMjEuMTggMS4wNyA0LjY1IDIuMDMgOS4zMiAzLjMzIDEzLjkxIDYuMjkgMjMuMzggMTYuNSA0NS43IDMwLjA3IDY1Ljc1IDguNjQgMTIuOTggMTguNzggMjQuOTMgMjkuOTggMzUuNzcgMTYuMjggMTUuODIgMzUuMDUgMjkuMDQgNTUuMzQgMzkuMjIgNy4yOCAzLjUyIDE0LjY2IDYuODcgMjIuMjcgOS42MyA1LjA0IDEuNzYgMTAuMDYgMy41NyAxNS4yMiA0Ljk4IDExLjI2IDMuMjMgMjIuNzcgNS42IDM0LjM5IDcuMDYgMi45MS4yOSA1LjgxLjYxIDguNzIuOSAxMy44MiAxLjA4IDI3Ljc0IDEgNDEuNTQtLjQzIDQuNDUtLjYgOC45Mi0uOTkgMTMuMzUtMS43OCAzLjYzLS42NyA3LjI4LTEuMjUgMTAuODctMi4xIDQuMTMtLjk4IDguMjgtMS45MSAxMi4zNi0zLjA3IDI2LjUtNy4zNCA1MS41OC0xOS43MSA3My41OC0zNi4yIDE1Ljc4LTExLjgyIDI5Ljk2LTI1Ljc2IDQyLjEyLTQxLjI4IDMuMjYtNC4wMiA2LjE3LTguMzEgOS4xMy0xMi41NSAzLjM5LTUuMDYgNi41OC0xMC4yNSA5LjYtMTUuNTQgMi40LTQuNDQgNC43NC04LjkxIDYuOTUtMTMuNDUgNS42OS0xMi4wNSAxMC4yOC0yNC42MiAxMy43NS0zNy40OSAyLjU5LTEwLjAxIDQuNzUtMjAuMTYgNS45LTMwLjQ1IDEuNzctMTMuNDcgMS45NC0yNy4xIDEuMjktNDAuNjUtLjI5LTMuODktLjY3LTcuNzctMS0xMS42Ni0yLjIzLTE5LjA4LTYuNzktMzcuOTEtMTMuODItNTUuOC01Ljk1LTE1LjEzLTEzLjUzLTI5LjYzLTIyLjYxLTQzLjEzLTEyLjY5LTE4LjgtMjguMjQtMzUuNjgtNDUuOTctNDkuODMtMjUuMDUtMjAtNTQuNDctMzQuNTUtODUuNjUtNDIuMDgtNy43OC0xLjkzLTE1LjY5LTMuMzQtMjMuNjMtNC40NS0zLjkxLS41OS03Ljg1LS44Mi0xMS43Ny0xLjI0LTcuMzktLjU3LTE0LjgxLS43Mi0yMi4yMi0uNTh6TTEzOS4yNiA4My41M2MxMy4zLTguODkgMjguMDgtMTUuMzggNDMuMy0yMC4xOC0zLjE3IDEuNzctNi40NCAzLjM4LTkuNTMgNS4yOS0xMS4yMSA2LjY4LTIxLjUyIDE0LjktMzAuMzggMjQuNDktNi44IDcuNDMtMTIuNzYgMTUuNzMtMTcuMDEgMjQuODktMy4yOSA2Ljg2LTUuNjQgMTQuMTktNi44NiAyMS43MS0uOTMgNC44NS0xLjMgOS44MS0xLjE3IDE0Ljc1LjEzIDEzLjY2IDQuNDQgMjcuMDggMTEuMjkgMzguODIgNS45MiAxMC4yMiAxMy42MyAxOS4zMyAyMi4zNiAyNy4yNiA0Ljg1IDQuMzYgMTAuMjQgOC4wOSAxNC45NSAxMi42IDIuMjYgMi4xOSA0LjQ5IDQuNDIgNi40MyA2LjkxIDIuNjIgMy4zMSA0Ljg5IDYuOTkgNS45OSAxMS4xLjkgMy4wMi42NiA2LjIuNjkgOS4zMS4wMiA0LjEtLjA0IDguMi4wMyAxMi4zLjE0IDMuNTQtLjAyIDcuMDkuMTEgMTAuNjMuMDggMi4zOC4wMiA0Ljc2LjA1IDcuMTQuMTYgNS43Ny4wNiAxMS41My4xNSAxNy4zLjExIDIuOTEuMDIgNS44Mi4xMyA4Ljc0LjAzIDEuNjMuMTMgMy4yOC0uMDMgNC45MS0uOTEuMTItMS44Mi4xOC0yLjczLjE2LTEwLjk5IDAtMjEuODgtMi42My0zMS45NS02LjkzLTYtMi43LTExLjgxLTUuODktMTcuMDktOS44My01Ljc1LTQuMTktMTEuMDktOC45Ni0xNS43OS0xNC4zMS02LjUzLTcuMjQtMTEuOTgtMTUuMzktMTYuNjItMjMuOTUtMS4wNy0yLjAzLTIuMjQtNC4wMi0zLjE4LTYuMTItMS4xNi0yLjY0LTIuNjItNS4xNC0zLjY3LTcuODItNC4wNS05LjY4LTYuNTctMTkuOTQtOC4wOC0zMC4zMS0uNDktNC40NC0xLjA5LTguODgtMS4yLTEzLjM1LS43LTE1LjczLjg0LTMxLjU1IDQuNjctNDYuODIgMi4xMi04LjE1IDQuNzctMTYuMTggOC4zMS0yMy44MyA2LjMyLTE0LjIgMTUuMzQtMjcuMTggMjYuMy0zOC4xOSA2LjI4LTYuMiAxMy4xMy0xMS44NCAyMC41My0xNi42N3ptMTc1LjM3LTIwLjEyYzIuNzQuNzQgNS40MSAxLjc0IDguMDkgMi42OCA2LjM2IDIuMzMgMTIuNjggNC44NCAxOC43MSA3Ljk2IDEzLjExIDYuNDQgMjUuMzEgMTQuODEgMzUuODIgMjQuOTcgMTAuMiA5Ljk1IDE4Ljc0IDIxLjYgMjUuMTQgMzQuMzQgMS4yOCAyLjc1IDIuNjQgNS40NiAzLjgxIDguMjYgNi4zMSAxNS4xIDEwIDMxLjI2IDExLjIzIDQ3LjU3LjQxIDQuNTQuNDQgOS4wOS40NSAxMy42NC4wNyAxMS42NC0xLjQ5IDIzLjI1LTQuMyAzNC41My0xLjk3IDcuMjctNC4zNSAxNC40OS03Ljg2IDIxLjE4LTMuMTggNi42NC02LjY4IDEzLjE2LTEwLjg0IDE5LjI0LTYuOTQgMTAuNDctMTUuNiAxOS44Ny0yNS44MiAyNy4yMi0xMC40OCA3LjY0LTIyLjY0IDEzLjAyLTM1LjQgMTUuMzgtMy41MS42OS03LjA4IDEuMDgtMTAuNjYgMS4yMS0xLjg1LjA2LTMuNzIuMTYtNS41Ni0uMS0uMjgtMi4xNSAwLTQuMzEtLjAxLTYuNDYtLjAzLTMuNzMuMTQtNy40NS4xLTExLjE3LjE5LTcuMDIuMDItMTQuMDUuMjEtMjEuMDcuMDMtMi4zOC0uMDMtNC43Ni4wMy03LjE0LjE3LTUuMDctLjA0LTEwLjE0LjE0LTE1LjIxLjEtMi45OS0uMjQtNi4wNC41MS04Ljk2LjY2LTIuNSAxLjc4LTQuODYgMy4wOS03LjA4IDQuNDYtNy4zMSAxMS4wNi0xMi45NiAxNy42OC0xOC4yNiA1LjM4LTQuMTggMTAuNDctOC43NyAxNS4wMi0xMy44NCA3LjY4LTguMzcgMTQuMTctMTcuODggMTguNzgtMjguMjcgMi41LTUuOTMgNC41Mi0xMi4xIDUuNTUtMTguNDYuODYtNC4zNyAxLjA2LTguODMgMS4wMS0xMy4yNy0uMDItNy44NS0xLjQtMTUuNjUtMy42NC0yMy4xNy0xLjc1LTUuNzMtNC4yNy0xMS4xOC03LjA5LTE2LjQ1LTMuODctNi45My04LjY1LTEzLjMxLTEzLjk2LTE5LjItOS45NC0xMC44NS0yMS43NS0xOS45NC0zNC42LTI3LjEtMS44NS0xLjAyLTMuODQtMS44Mi01LjYzLTIuOTd6bS0xMDAuOCA1OC40NWMuOTgtMS4xOCAxLjk5LTIuMzMgMy4xMi0zLjM4LS42MS45My0xLjI3IDEuODEtMS45NSAyLjY4LTMuMSAzLjg4LTUuNTQgOC4zMS03LjAzIDEzLjA2LS44NyAzLjI3LTEuNjggNi42LTEuNzMgMTAtLjA3IDIuNTItLjA4IDUuMDcuMzIgNy41NyAxLjEzIDcuNjMgNC4zMyAxNC44NSA4Ljc3IDIxLjEyIDIgMi43IDQuMjUgNS4yNyA2LjkyIDcuMzMgMS42MiAxLjI3IDMuNTMgMi4wOSA1LjM0IDMuMDUgMy4xMSAxLjY4IDYuMzIgMy4yMyA5LjA3IDUuNDggMi42NyAyLjA5IDQuNTUgNS4zMyA0LjQgOC43OS0uMDEgNzMuNjcgMCAxNDcuMzQtLjAxIDIyMS4wMiAwIDEuMzUtLjA4IDIuNy4wNCA0LjA0LjEzIDEuNDguODIgMi44MyAxLjQ3IDQuMTUuODYgMS42NiAxLjc4IDMuMzQgMy4xOCA0LjYyLjg1Ljc3IDEuOTcgMS40IDMuMTUgMS4yNCAxLjUtLjIgMi42Ni0xLjM1IDMuNDUtMi41Ny45Ni0xLjUxIDEuNjgtMy4xNiAyLjI4LTQuODUuNzYtMi4xMy40NC00LjQyLjU0LTYuNjMuMTQtNC4wMy0uMDItOC4wNi4xNC0xMi4wOS4wMy01Ljg5LjAzLTExLjc3LjA2LTE3LjY2LjE0LTMuNjIuMDMtNy4yNC4xMS0xMC44Ni4xNS00LjAzLS4wMi04LjA2LjE0LTEyLjA5LjAzLTUuOTkuMDMtMTEuOTguMDctMTcuOTcuMTQtMy42Mi4wMi03LjI0LjExLTEwLjg2LjE0LTMuOTMtLjAyLTcuODYuMTQtMTEuNzguMDMtNS45OS4wMy0xMS45OC4wNi0xNy45Ny4xNi0zLjk0LS4wMS03Ljg4LjE5LTExLjgyLjI5IDEuNDQuMTMgMi45Mi4yMiA0LjM4LjE5IDMuNjEuNDIgNy4yMy43NiAxMC44NC4zMiAzLjQ0LjQ0IDYuODkuODYgMTAuMzIuMzcgMy4xLjUxIDYuMjIuOTUgOS4zMS41NyA0LjA5Ljg3IDguMjEgMS41NCAxMi4yOSAxLjQ2IDkuMDQgMi44MyAxOC4xMSA1LjA5IDI2Ljk5IDEuMTMgNC44MiAyLjQgOS42MSA0IDE0LjMgMi41NCA3LjkgNS43MiAxNS42NyAxMC4zMSAyMi42MiAxLjczIDIuNjQgMy44NyA0Ljk4IDYuMSA3LjIxLjI3LjI1LjU1LjUxLjg4LjcxLjYuMjUgMS4zMS0uMDcgMS43LS41Ny43MS0uODggMS4xNy0xLjk0IDEuNy0yLjkzIDQuMDUtNy44IDguMTgtMTUuNTYgMTIuMzQtMjMuMzEuNy0xLjMxIDEuNDQtMi42MiAyLjU2LTMuNjEgMS43NS0xLjU3IDMuODQtMi42OSA1Ljk4LTMuNjMgMi44OC0xLjIyIDUuOS0yLjE5IDkuMDMtMi40MiA2LjU4LS42MiAxMy4xMS43NSAxOS41NiAxLjg1IDMuNjkuNTggNy40IDEuMTcgMTEuMTMgMS40MSAzLjc0LjEgNy40OC4wNSAxMS4yMS0uMjggOC41NS0uOTIgMTYuOTktMi45NiAyNC45NC02LjI1IDUuMy0yLjI0IDEwLjQ2LTQuODMgMTUuMzEtNy45MyAxMS40Ni03LjIxIDIxLjQ2LTE2LjU3IDMwLjA0LTI3LjAxIDEuMTctMS40MiAyLjI1LTIuOSAzLjQ2LTQuMjgtMS4yIDMuMjQtMi42NyA2LjM3LTQuMTYgOS40OC0xLjI1IDIuOS0yLjg0IDUuNjEtNC4yNyA4LjQyLTUuMTYgOS42My0xMS4wMiAxOC45MS0xNy43NSAyNy41Mi00LjAzIDUuMjEtOC41MyAxMC4wNS0xMy4zMyAxNC41Ny02LjY0IDYuMDUtMTQuMDcgMTEuMzctMjIuNDMgMTQuNzYtOC4yMSAzLjM3LTE3LjMxIDQuNjMtMjYuMDkgMy4yOS0zLjU2LS41OC03LjAxLTEuNjktMTAuNDEtMi44OC0yLjc5LS45Ny01LjM5LTIuMzgtOC4wMy0zLjY5LTMuNDMtMS43MS02LjY0LTMuODEtOS43MS02LjA4IDIuNzEgMy4wNiA1LjY5IDUuODYgOC43IDguNjEgNC4yNyAzLjc2IDguNzQgNy4zMSAxMy42MyAxMC4yMyAzLjk4IDIuNDUgOC4yOSA0LjQgMTIuODQgNS41MSAxLjQ2LjM3IDIuOTYuNDYgNC40NS42LTEuMjUgMS4xLTIuNjMgMi4wNC0zLjk5IDIuOTgtOS42MSA2LjU0LTIwLjAxIDExLjg2LTMwLjY5IDE2LjQzLTIwLjg2IDguNy00My4xNyAxMy45Ny02NS43NCAxNS4zNC00LjY2LjI0LTkuMzIuMzYtMTMuOTguMzYtNC45OC0uMTEtOS45Ny0uMTMtMTQuOTItLjY1LTExLjItLjc2LTIyLjI5LTIuNzMtMzMuMTctNS40My0xMC4zNS0yLjcxLTIwLjU1LTYuMTItMzAuMy0xMC41NS04LjcxLTMuODYtMTcuMTItOC40Mi0yNC45OS0xMy43OS0xLjgzLTEuMzEtMy43NC0yLjUzLTUuMzctNC4wOCA2LjYtMS4xOSAxMy4wMy0zLjM5IDE4Ljk5LTYuNDggNS43NC0yLjg2IDEwLjk5LTYuNjYgMTUuNjMtMTEuMDcgMi4yNC0yLjE5IDQuMjktNC41OSA2LjE5LTcuMDktMy40MyAyLjEzLTYuOTMgNC4xNS0xMC42MiA1Ljc4LTQuNDEgMi4xNi05LjA3IDMuNzctMTMuODEgNS4wMi01LjczIDEuNTItMTEuNzQgMS43My0xNy42MSAxLjE0LTguMTMtLjk1LTE1Ljg2LTQuMjctMjIuNTEtOC45OC00LjMyLTIuOTQtOC4yMi02LjQzLTExLjk2LTEwLjA2LTkuOTMtMTAuMTYtMTguMi0yMS44MS0yNS42Ni0zMy44Ni0zLjk0LTYuMjctNy41My0xMi43NS0xMS4xMi0xOS4yMi0xLjA1LTIuMDQtMi4xNS00LjA1LTMuMTgtNi4xIDIuODUgMi45MiA1LjU3IDUuOTcgOC40MyA4Ljg4IDguOTkgOC45NyAxOC41NiAxNy40NCAyOS4xNiAyNC40OCA3LjU1IDQuOSAxNS42NyA5LjIzIDI0LjU2IDExLjAzIDMuMTEuNzMgNi4zMi40NyA5LjQ3LjgxIDIuNzcuMjggNS41Ni4yIDguMzQuMyA1LjA1LjA2IDEwLjExLjA0IDE1LjE2LS4xNiAzLjY1LS4xNiA3LjI3LS42NiAxMC44OS0xLjA5IDIuMDctLjI1IDQuMTEtLjcxIDYuMTQtMS4yIDMuODgtLjk1IDguMTEtLjk2IDExLjgzLjYxIDQuNzYgMS44NSA4LjQ0IDUuNjQgMTEuMzggOS43MSAyLjE2IDMuMDIgNC4wNiA2LjIyIDUuNjYgOS41OCAxLjE2IDIuNDMgMi40NiA0Ljc5IDMuNTUgNy4yNiAxIDIuMjQgMi4xNSA0LjQyIDMuNDIgNi41Mi42NyAxLjAyIDEuNCAyLjE1IDIuNjIgMi41NSAxLjA2LS43NSAxLjcxLTEuOTEgMi4yOC0zLjAzIDIuMS00LjE2IDMuNDItOC42NSA0Ljg5LTEzLjA1IDIuMDItNi41OSAzLjc4LTEzLjI3IDUuMTktMjAuMDIgMi4yMS05LjI1IDMuMjUtMTguNzIgNC41NC0yOC4xMy41Ni0zLjk4LjgzLTcuOTkgMS4zMS0xMS45Ny44Ny0xMC42NCAxLjktMjEuMjcgMi4yNC0zMS45NC4wOC0xLjg2LjI0LTMuNzEuMjUtNS41Ny4wMS00LjM1LjI1LTguNjkuMjItMTMuMDMtLjAxLTIuMzgtLjAxLTQuNzYgMC03LjEzLjA1LTUuMDctLjItMTAuMTQtLjIyLTE1LjIxLS4yLTYuNjEtLjcxLTEzLjItMS4yOS0xOS43OC0uNzMtNS44OC0xLjU1LTExLjc4LTMuMTItMTcuNTEtMi4wNS03Ljc1LTUuNTktMTUuMDMtOS44LTIxLjgyLTMuMTYtNS4wNy02Ljc5LTkuODgtMTEuMDktMTQuMDMtMy44OC0zLjg2LTguNTgtNy4wOC0xMy45NC04LjQ1LTEuNS0uNDEtMy4wNi0uNDUtNC41OS0uNjQuMDctMi45OS43LTUuOTMgMS4yNi04Ljg1IDEuNTktNy43MSAzLjgtMTUuMyA2Ljc2LTIyLjYgMS41Mi00LjAzIDMuNDEtNy45IDUuMzktMTEuNzIgMy40NS02LjU2IDcuNjItMTIuNzkgMTIuNDYtMTguNDZ6bTMxLjI3IDEuN2MuMzUtLjA2LjcxLS4xMiAxLjA3LS4xOS4xOSAxLjc5LjA5IDMuNTguMSA1LjM3djM4LjEzYy0uMDEgMS43NC4xMyAzLjQ5LS4xNSA1LjIyLS4zNi0uMDMtLjcxLS4wNS0xLjA2LS4wNS0uOTUtMy43NS0xLjcyLTcuNTUtMi42Mi0xMS4zMS0uMzgtMS41My0uNTgtMy4wOS0xLjA3LTQuNTktMS43LS4yNC0zLjQzLS4xNy01LjE1LS4yLTUuMDYtLjAxLTEwLjEzIDAtMTUuMTktLjAxLTEuNjYtLjAxLTMuMzIuMDktNC45OC0uMDMtLjAzLS4zOS0uMjYtLjkxLjE2LTEuMTggMS4yOC0uNjUgMi43Mi0uODggNC4wNi0xLjM1IDMuNDMtMS4xNCA2Ljg4LTIuMTYgMTAuMzEtMy4zMSAxLjM5LS40OCAyLjktLjcyIDQuMTYtMS41NC4wNC0uNTYuMDItMS4xMy0uMDUtMS42OC0xLjIzLS41NS0yLjUzLS44Ny0zLjgxLTEuMjgtMy4xMy0xLjAzLTYuMjktMS45Ni05LjQxLTMuMDItMS43OS0uNjItMy42Ny0xLTUuNDEtMS43OS0uMDMtLjM3LS4wNy0uNzMtLjExLTEuMDkgNS4wOS0uMTkgMTAuMi4wNiAxNS4zLS4xMiAzLjM2LS4xMyA2LjczLjA4IDEwLjA5LS4wNy4xMi0uMzkuMjYtLjc3LjM3LTEuMTYgMS4wOC00Ljk0IDIuMzMtOS44MyAzLjM5LTE0Ljc1em01Ljk3LS4yYy4zNi4wNS43Mi4xMiAxLjA4LjIuOTggMy44NSAxLjczIDcuNzYgMi43MSAxMS42MS4zNiAxLjQyLjU2IDIuODggMS4wMyA0LjI3IDIuNTMuMTggNS4wNy0uMDEgNy42MS4wNSA1LjE2LjEyIDEwLjMzLjEyIDE1LjQ5LjA3Ljc2LS4wMSAxLjUyLjAzIDIuMjguMDgtLjA0LjM2LS4wNy43Mi0uMSAxLjA4LTEuODIuODMtMy43OCAxLjI1LTUuNjcgMS44OS0zLjczIDEuMjMtNy40OCAyLjM5LTExLjIyIDMuNTctLjU3LjE3LTEuMTIuNDItMS42Ny42NC0uMTUuNTUtLjE4IDEuMTItLjEyIDEuNjkuODcuNDggMS44Mi44MSAyLjc3IDEuMDkgNC44OCAxLjUyIDkuNzMgMy4xNCAxNC42MyA0LjYuMzguMTMuNzguMjcgMS4xMy40OS40LjI3LjIzLjc5LjE1IDEuMTgtMS42Ni4xMy0zLjMxLjAzLTQuOTcuMDQtNS4xNy4wMS0xMC4zMy0uMDEtMTUuNS4wMS0xLjYxLjAzLTMuMjItLjAyLTQuODIuMjEtLjUyIDEuNjctLjcyIDMuNDItMS4xNyA1LjExLS45NCAzLjU3LTEuNTIgNy4yNC0yLjU0IDEwLjc4LS4zNi4wMS0uNzEuMDItMS4wNi4wNi0uMjktMS43My0uMTUtMy40OC0uMTUtNS4yMnYtMzguMTNjLjAyLTEuNzgtLjA4LTMuNTguMTEtNS4zN3pNNjUuMDUgMTY4LjMzYzEuMTItMi4xNSAyLjA4LTQuNCAzLjM3LTYuNDYtMS44MiA3LjU2LTIuOTEgMTUuMjctMy42MiAyMy0uOCA3LjcxLS44NSAxNS40OS0uNTQgMjMuMjMgMS4wNSAxOS45NCA1LjU0IDM5LjgzIDE0LjIzIDU3Ljg4IDIuOTkgNS45OSA2LjM1IDExLjgzIDEwLjUgMTcuMTEgNi4xMiA3LjQ3IDEyLjUzIDE0Ljc2IDE5Ljg0IDIxLjA5IDQuOCA0LjEgOS45OSA3Ljc4IDE1LjU0IDEwLjggMy4yNyAxLjY1IDYuNTEgMy4zOSA5Ljk0IDQuNjggNS4wMSAyLjAzIDEwLjE5IDMuNjEgMTUuNDIgNC45NCAzLjgzLjk2IDcuNzggMS40MSAxMS41MiAyLjcxIDUgMS41NyA5LjQ3IDQuNjEgMTMuMDMgOC40MyA0LjkzIDUuMjMgOC4wOSAxMS44NyAxMC4yIDE4LjY3Ljk5IDIuOSAxLjU5IDUuOTEgMi4xNyA4LjkyLjE1Ljc1LjIyIDEuNTIuMTYgMi4yOS02LjUgMi43OC0xMy4yNiA1LjA2LTIwLjI2IDYuMTgtNC4xMS43OC04LjI5Ljk5LTEyLjQ2IDEuMDgtMTAuMjUuMjQtMjAuNDctMS43Ni0zMC4xMi01LjEyLTMuNzQtMS40Mi03LjQ5LTIuODUtMTEuMDMtNC43Mi04LjA2LTMuODQtMTUuNjQtOC43LTIyLjQ2LTE0LjQ2LTIuOTItMi41NS01LjgzLTUuMTMtOC40LTguMDMtOS4xNi05LjgzLTE2LjMtMjEuNDEtMjEuNzktMzMuNjUtMi4zOS01LjU1LTQuNjEtMTEuMTgtNi4zNy0xNi45Ni0xLjE3LTMuOTQtMi4zNi03Ljg5LTMuMjYtMTEuOTEtLjc1LTIuOTQtMS4yMi01Ljk1LTEuODctOC45Mi0uNDYtMi4xNC0uNjktNC4zMi0xLjAzLTYuNDgtLjg1LTUuNDMtMS4yOC0xMC45My0xLjMzLTE2LjQzLjExLTYuMTguMjUtMTIuMzcgMS4wNy0xOC41LjQtMi44Ni42Ny01Ljc0IDEuMTUtOC42Ljk4LTUuNyAyLjE0LTExLjM3IDMuNzEtMTYuOTMgMy4wOS0xMS42NSA3LjQ4LTIyLjk1IDEyLjY5LTMzLjg0em0zNjMuNzMtNi40NGMxLjEgMS42NiAxLjkxIDMuNDggMi43OCA1LjI2IDIuMSA0LjQ1IDQuMjQgOC45IDYuMDIgMTMuNDkgNy42MSAxOC43NiAxMi4zIDM4Ljc5IDEzLjA0IDU5LjA1LjAyIDEuNzYuMDcgMy41Mi4xMSA1LjI5LjEzIDkuNTctMS4yNyAxOS4wOS0zLjE4IDI4LjQ1LS43MyAzLjU5LTEuNTQgNy4xNy0yLjU4IDEwLjY5LTQuMDQgMTQuNzItMTAgMjktMTguNDEgNDEuNzgtOC4yMSAxMi41Ny0xOS4wMSAyMy41NS0zMS44NCAzMS40MS01LjczIDMuNTktMTEuNzkgNi42NC0xOC4wNSA5LjE5LTUuNzggMi4xOS0xMS43MSA0LjAzLTE3LjggNS4xMS02LjQgMS4wNS0xMi45MSAxLjUyLTE5LjQgMS4yMy03LjkyLS40OC0xNS43OC0yLjA3LTIzLjIxLTQuODUtMS45NC0uOC0zLjk0LTEuNDYtNS44NC0yLjMzLS4yMS0xLjUxLjI1LTIuOTkuNTMtNC40NiAxLjE2LTUuNzQgMy4wMy0xMS4zNiA1LjctMTYuNTggMi4zNy00LjUxIDUuNTItOC42NSA5LjQ2LTExLjkgMi40My0yLjA1IDUuMjQtMy42MSA4LjE2LTQuODMgMy41OC0xLjUgNy40Ny0xLjk3IDExLjI0LTIuODMgNy4yMy0xLjcxIDE0LjM3LTMuOTMgMjEuMTUtNyAxMC4zNS00LjY1IDE5LjcxLTExLjM4IDI3LjY1LTE5LjQ2IDEuNTktMS42MSAzLjIzLTMuMTggNC43NC00Ljg3IDMuMzctMy43NiA2LjcxLTcuNTcgOS44NS0xMS41MyA3LjQ4LTEwLjA3IDEyLjgyLTIxLjU5IDE2LjcxLTMzLjQ4IDEuNTgtNS4zIDMuMjEtMTAuNiA0LjIxLTE2LjA1LjYzLTIuODcgMS4wNC01Ljc4IDEuNTItOC42OC44Ny02LjA5IDEuNTktMTIuMjIgMS42OC0xOC4zOC4xMi02LjY1LjE0LTEzLjMyLS41My0xOS45NC0uNzMtNy45OS0xLjg3LTE1Ljk2LTMuNzEtMjMuNzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9wZW5jYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyMy4zIDQ0MC43YzAgMjUuMy0yMC4zIDQ1LjYtNDUuNiA0NS42cy00NS44LTIwLjMtNDUuOC00NS42IDIwLjYtNDUuOCA0NS44LTQ1LjhjMjUuNCAwIDQ1LjYgMjAuNSA0NS42IDQ1Ljh6bS0yNTMuOS00NS44Yy0yNS4zIDAtNDUuNiAyMC42LTQ1LjYgNDUuOHMyMC4zIDQ1LjYgNDUuNiA0NS42IDQ1LjgtMjAuMyA0NS44LTQ1LjYtMjAuNS00NS44LTQ1LjgtNDUuOHptMjkxLjctMjcwQzE1OC45IDEyNC45IDgxLjkgMTEyLjEgMCAyNS43YzM0LjQgNTEuNyA1My4zIDE0OC45IDM3My4xIDE0NC4yIDMzMy4zLTUgMTMwIDg2LjEgNzAuOCAxODguOSAxODYuNy0xNjYuNyAzMTkuNC0yMzMuOSAxNy4yLTIzMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPcGVuaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcxLjUgNDMybC02OCAzMkM4OC41IDQ1My43IDAgMzkyLjUgMCAzMTguMmMwLTcxLjUgODIuNS0xMzEgMTkxLjctMTQ0LjN2NDNjLTcxLjUgMTIuNS0xMjQgNTMtMTI0IDEwMS4zIDAgNTEgNTguNSA5My4zIDEzNS43IDEwM3YtMzQwbDY4LTMzLjJ2Mzg0ek00NDggMjkxbC0xMzEuMy0yOC41IDM2LjgtMjAuN2MtMTkuNS0xMS41LTQzLjUtMjAtNzAtMjQuOHYtNDNjNDYuMiA1LjUgODcuNyAxOS41IDEyMC4zIDM5LjNsMzUtMTkuOEw0NDggMjkxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPcGVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuOSAzMi43Yy0xNzAuMiAwLTI1Mi42IDIyMy44LTE0Ny41IDM1NS4xIDM2LjUgNDUuNCA4OC42IDc1LjYgMTQ3LjUgNzUuNiAzNi4zIDAgNzAuMy0xMS4xIDk5LjQtMzAuNC00My44IDM5LjItMTAxLjkgNjMtMTY1LjMgNjMtMy45IDAtOCAwLTExLjktLjNDMTA0LjYgNDg5LjYgMCAzODEuMSAwIDI0OCAwIDExMSAxMTEgMCAyNDggMGguOGM2My4xLjMgMTIwLjcgMjQuMSAxNjQuNCA2My4xLTI5LTE5LjQtNjMuMS0zMC40LTk5LjMtMzAuNHptMTAxLjggMzk3LjdjLTQwLjkgMjQuNy05MC43IDIzLjYtMTMyLTUuOCA1Ni4yLTIwLjUgOTcuNy05MS42IDk3LjctMTc2LjYgMC04NC43LTQxLjItMTU1LjgtOTcuNC0xNzYuNiA0MS44LTI5LjIgOTEuMi0zMC4zIDEzMi45LTUgMTA1LjkgOTguNyAxMDUuNSAyNjUuNy0xLjIgMzY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPcHRpbk1vbnN0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTcyLjYgNDIxLjRjNS42LTkuNSA0LjctMTUuMi01LjQtMTEuNi0zLTQuOS03LTkuNS0xMS4xLTEzLjggMi45LTkuNy0uNy0xNC4yLTEwLjgtOS4yLTQuNi0zLjItMTAuMy02LjUtMTUuOS05LjIgMC0xNS4xLTExLjYtMTEuNi0xNy42LTUuNy0xMC40LTEuNS0xOC43LS4zLTI2LjggNS43LjMtNi41LjMtMTMgLjMtMTkuNyAxMi42IDAgNDAuMi0xMSA0NS45LTM2LjIgMS40LTYuOCAxLjYtMTMuOC0uMy0yMS45LTMtMTMuNS0xNC4zLTIxLjMtMjUuMS0yNS43LS44LTUuOS03LjYtMTQuMy0xNC45LTE1LjlzLTEyLjQgNC45LTE0LjEgMTAuM2MtOC41IDAtMTkuMiAyLjgtMjEuMSA4LjQtNS40LS41LTExLjEtMS40LTE2LjgtMS45IDIuNy0xLjkgNS40LTMuNSA4LjQtNC42IDUuNC05LjIgMTQuNi0xMS40IDI1LjctMTEuNlYyNTZjMTkuNS0uNSA0My01LjkgNTMuOC0xOC4xIDEyLjctMTMuOCAxNC42LTM3LjMgMTIuNC01NS4xLTIuNC0xNy4zLTkuNy0zNy42LTI0LjYtNDguMS04LjQtNS45LTIxLjYtLjgtMjIuNyA5LjUtMi4yIDE5LjYgMS4yIDMwLTM4LjYgMjUuMS0xMC4zLTIzLjgtMjQuNi00NC42LTQyLjctNjBDMzQxIDQ5LjYgMjQyLjkgNTUuNSAxNjYuNCA3MS43YzE5LjcgNC42IDQxLjEgOC42IDU5LjcgMTYuNS0yNi4yIDIuNC01Mi43IDExLjMtNzYuMiAyMy4yLTMyLjggMTctNDQgMjkuOS01Ni43IDQyLjQgMTQuOS0yLjIgMjguOS01LjEgNDMuOC0zLjgtOS43IDUuNC0xOC40IDEyLjItMjYuNSAyMC0yNS44LjktMjMuOC01LjMtMjYuMi0yNS45LTEuMS0xMC41LTE0LjMtMTUuNC0yMi43LTkuNy0yOC4xIDE5LjktMzMuNSA3OS45LTEyLjIgMTAzLjUgMTAuOCAxMi4yIDM1LjEgMTcuMyA1NC45IDE3LjgtLjMgMS4xLS4zIDEuOS0uMyAyLjcgMTAuOC41IDE5LjUgMi43IDI0LjYgMTEuNiAzIDEuMSA1LjcgMi43IDguMSA0LjYtNS40LjUtMTEuMSAxLjQtMTYuNSAxLjktMy4zLTYuNi0xMy43LTguMS0yMS4xLTguMS0xLjYtNS43LTYuNS0xMi4yLTE0LjEtMTAuMy02LjggMS45LTE0LjEgMTAtMTQuOSAxNS45LTIyLjUgOS41LTMwLjEgMjYuOC0yNS4xIDQ3LjYgNS4zIDI0LjggMzMgMzYuMiA0NS45IDM2LjJ2MTkuN2MtNi42LTUtMTQuMy03LjUtMjYuOC01LjctNS41LTUuNS0xNy4zLTEwLjEtMTcuMyA1LjctNS45IDIuNy0xMS40IDUuOS0xNS45IDkuMi05LjgtNC45LTEzLjYtMS43LTExLjEgOS4yLTQuMSA0LjMtNy44IDguNi0xMS4xIDEzLjgtMTAuMi0zLjctMTEgMi4yLTUuNCAxMS42LTEuMSAzLjUtMS42IDctMS45IDEwLjgtLjUgMzEuNiA0NC42IDY0IDczLjUgNjUuMSAxNy4zLjUgMzQuNi04LjQgNDMtMjMuNSAxMTMuMiA0LjkgMjI2LjcgNC4xIDM0MC4yIDAgOC4xIDE1LjEgMjUuNCAyNC4zIDQyLjcgMjMuNSAyOS4yLTEuMSA3NC4zLTMzLjUgNzMuNS02NS4xLjItMy43LS43LTcuMi0xLjctMTAuN3ptLTczLjgtMjU0YzEuMS0zIDIuNC04LjQgMi40LTE0LjYgMC01LjkgNi44LTguMSAxNC4xLS44IDExLjEgMTEuNiAxNC45IDQwLjUgMTMuOCA1MS4xLTQuMS0xMy42LTEzLTI5LTMwLjMtMzUuN3ptLTQuNiA2LjdjMTkuNSA2LjIgMjguNiAyNy42IDI5LjcgNDguOS0xLjEgMi43LTMgNS40LTQuOSA3LjYtNS43IDUuOS0xNS40IDEwLTI2LjIgMTIuMiA0LjMtMjEuMy4zLTQ3LjMtMTIuNy02MyA0LjktLjggMTAuOS0yLjQgMTQuMS01Ljd6bS0yNC4xIDYuOGMxMy44IDExLjkgMjAgMzkuMiAxNC4xIDYzLjUtNC4xLjUtOC4xLjgtMTEuNi44LTEuOS0yMS45LTYuOC00NC0xNC4zLTY0LjYgMy43LjMgOC4xLjMgMTEuOC4zek00Ny41IDIwM2MtMS4xLTEwLjUgMi40LTM5LjUgMTMuOC01MS4xIDctNy4zIDE0LjEtNS4xIDE0LjEuOCAwIDYuMiAxLjQgMTEuNiAyLjQgMTQuNi0xNy4zIDYuOC0yNi4yIDIyLjItMzAuMyAzNS43em05LjcgMjcuNmMtMS45LTIuMi0zLjUtNC45LTQuOS03LjYgMS40LTIxLjMgMTAuMy00Mi43IDI5LjctNDguOSAzLjIgMy4yIDkuMiA0LjkgMTQuMSA1LjctMTMgMTUuNy0xNyA0MS42LTEyLjcgNjMtMTAuOC0yLjItMjAuNS02LTI2LjItMTIuMnptNDcuOSAxNC42Yy00LjEgMC04LjEtLjMtMTIuNy0uOC00LjYtMTguNi0xLjktMzguOSA1LjQtNTN2LjNsMTIuMi01LjFjNC45LTEuOSA5LjctMy44IDE0LjktNC45LTEwLjcgMTkuNy0xNy40IDQxLjMtMTkuOCA2My41em0xODQtMTYyLjdjNDEuOSAwIDc2LjIgMzQgNzYuMiA3NS45IDAgNDIuMi0zNC4zIDc2LjItNzYuMiA3Ni4ycy03Ni4yLTM0LTc2LjItNzYuMmMwLTQxLjggMzQuMy03NS45IDc2LjItNzUuOXptMTE1LjYgMTc0LjNjLS4zIDE3LjgtNyA0OC45LTIzIDU3LTEzLjIgNi42LTYuNS03LjUtMTYuNS01OC4xIDEzLjMuMyAyNi42LjMgMzkuNSAxLjF6bS01NC0xLjZjLjggNC45IDMuOCA0MC4zLTEuNiA0MS45LTExLjYgMy41LTQwIDQuMy01MS4xLTEuMS00LjEtMy00LjYtMzUuOS00LjMtNDEuMXYuM2MxOC45LS4zIDM4LjEtLjMgNTcgMHpNMjc4LjMgMzA5Yy0xMyAzLjUtNDEuNiA0LjEtNTQuNi0xLjYtNi41LTIuNy0zLjgtNDIuNC0xLjktNTEuNiAxOS4yLS41IDM4LjQtLjUgNTcuOC0uOHYuM2MxLjEgOC4zIDMuMyA1MS4yLTEuMyA1My43em0tMTA2LjUtNTEuMWMxMi4yLS44IDI0LjYtMS40IDM2LjgtMS42LTIuNCAxNS40LTMgNDMuNS00LjkgNTIuMi0xLjEgNi44LTQuMyA2LjgtOS43IDQuMy0yMS45LTkuOC0yNy42LTM1LjItMjIuMi01NC45em0tMzUuNCAzMS4zYzcuOC0xLjEgMTUuNy0xLjkgMjMuNS0yLjcgMS42IDYuMiAzLjggMTEuOSA3IDE3LjYgMTAgMTcgNDQgMzUuNyA0NS4xIDcgNi4yIDE0LjkgNDAuOCAxMi4yIDU0LjkgMTAuOCAxNS43LTEuNCAyMy44LTEuNCAyNi44LTE0LjMgMTIuNCA0LjMgMzAuOCA0LjEgNDQgMyAxMS4zLS44IDIwLjgtLjUgMjQuNi04LjkgMS4xIDUuMSAxLjkgMTEuNiA0LjYgMTYuOCAxMC44IDIxLjMgMzcuMyAxLjQgNDYuOC0zMS42IDguNi44IDE3LjYgMS45IDI2LjUgMi43LS40IDEuMy0zLjggNy4zIDcuMyAxMS42LTQ3LjYgNDctOTUuNyA4Ny44LTE2My4yIDEwNy02My4yLTIwLjgtMTEyLjEtNTkuNS0xNTUuOS0xMDYuNSA5LjYtMy40IDEwLjQtOC44IDgtMTIuNXptLTIxLjYgMTcyLjVjLTMuOCAxNy44LTIxLjkgMjkuNy0zOS43IDI4LjktMTkuMi0uOC00Ni41LTE3LTU5LjItMzYuNS0yLjctMzEuMSA0My44LTYxLjMgNjYuMi01NC42IDE0LjkgNC4zIDI3LjggMzAuOCAzMy41IDU0IDAgMy0uMyA1LjctLjggOC4yem0tOC43LTY2Yy0uNS0xMy41LS41LTI3LS4zLTQwLjVoLjNjMi43LTEuNiA1LjctMy44IDcuOC02LjUgNi41LTEuNiAxMy01LjEgMTUuMS05LjIgMy4zLTcuMS03LTcuNS01LjQtMTIuNCAyLjctMS4xIDUuNy0yLjIgNy44LTMuNSAyOS4yIDI5LjIgNTguNiA1Ni41IDk3LjMgNzctMzYuOCAxMS4zLTcyLjQgMjcuNi0xMDUuOSA0Ny0xLjItMTguNi03LjctMzUuOS0xNi43LTUxLjl6bTMzNy42IDY0LjZjLTEwMyAzLjUtMjA2LjIgNC4xLTMwOS40IDAgMCAuMyAwIC4zLS4zLjN2LS4zaC4zYzM1LjEtMjEuNiA3Mi4yLTM5LjIgMTEyLjQtNTAuOCAxMS42IDUuMSAyMyA5LjUgMzQuOSAxMy4yIDIuMi44IDIuMi44IDQuMyAwIDE0LjMtNC4xIDI4LjQtOS4yIDQyLjItMTUuNCA0MS41IDExLjcgNzguOCAzMS43IDExNS42IDUzem0xMC41LTEyLjRjLTM1LjktMTkuNS03My0zNS45LTExMS45LTQ3LjYgMzguMS0yMCA3MS45LTQ3LjMgMTAzLjUtNzYuNyAyLjIgMS40IDQuNiAyLjQgNy42IDMuMiAwIC44LjMgMS45LjUgMi40LTQuNiAyLjctNy44IDYuMi01LjkgMTAuMyAyLjIgMy44IDguNiA3LjYgMTUuMSA4LjkgMi40IDIuNyA1LjEgNS4xIDguMSA2LjggMCAxMy44LS4zIDI3LjYtLjggNDEuM2wuMy0uM2MtOS4zIDE1LjktMTUuNSAzNy0xNi41IDUxLjd6bTEwNS45IDYuMmMtMTIuNyAxOS41LTQwIDM1LjctNTkuMiAzNi41LTE5LjMuOS00MC41LTEzLjItNDAuNS0zNyA1LjctMjMuMiAxOC45LTQ5LjcgMzMuNS01NCAyMi43LTYuOSA2OS4yIDIzLjQgNjYuMiA1NC41ek0zNzIuOSA3NS4yYy0zLjgtNzIuMS0xMDAuOC03OS43LTEyNi0yMy41IDQ0LjYtMjQuMyA5MC4zLTE1LjcgMTI2IDIzLjV6TTc0LjggNDA3LjFjLTE1LjcgMS42LTQ5LjUgMjUuNC00OS41IDQzLjIgMCAxMS42IDE1LjcgMTkuNSAzMi4yIDE0LjkgMTIuMi0zLjIgMzEuMS0xNy42IDM1LjktMjcuMyA2LTExLjYtMy43LTMyLjctMTguNi0zMC44em0yMTUuOS0xNzYuMmMyOC42IDAgNTEuOS0yMS42IDUxLjktNDguNCAwLTM2LjEtNDAuNS01OC4xLTcyLjItNDQuMyA5LjUgMyAxNi41IDExLjYgMTYuNSAyMS42IDAgMjMuMy0zMy4zIDMyLTQ2LjUgMTEuMy03LjMgMzQuMSAxOS40IDU5LjggNTAuMyA1OS44ek02OCA0NzQuMWMuNSA2LjUgMTIuMiAxMi43IDIxLjYgOS41IDYuOC0yLjcgMTQuNi0xMC41IDE3LjMtMTYuMiAzLTctMS4xLTIwLTkuNy0xOC40LTguOSAxLjYtMjkuNyAxNi43LTI5LjIgMjUuMXptNDMzLjItNjdjLTE0LjktMS45LTI0LjYgMTkuMi0xOC45IDMwLjggNC45IDkuNyAyNC4xIDI0LjEgMzYuMiAyNy4zIDE2LjUgNC42IDMyLjItMy4yIDMyLjItMTQuOSAwLTE3LjgtMzMuOC00MS42LTQ5LjUtNDMuMnpNNDc4LjggNDQ5Yy04LjQtMS42LTEyLjQgMTEuMy05LjUgMTguNCAyLjQgNS43IDEwLjMgMTMuNSAxNy4zIDE2LjIgOS4yIDMuMiAyMS4xLTMgMjEuMy05LjUuOS04LjQtMjAuMi0yMy41LTI5LjEtMjUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT3JjaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk0Ljc1IDE4OC4xOWgtNDUuOTJWMzQyaDQ3LjQ3YzY3LjYyIDAgODMuMTItNTEuMzQgODMuMTItNzYuOTEgMC00MS42NC0yNi41NC03Ni45LTg0LjY3LTc2Ljl6TTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bS04MC43OSAzNjAuNzZoLTI5Ljg0di0yMDcuNWgyOS44NHptLTE0LjkyLTIzMS4xNGExOS41NyAxOS41NyAwIDEgMSAxOS41Ny0xOS41NyAxOS42NCAxOS42NCAwIDAgMS0xOS41NyAxOS41N3pNMzAwIDM2OWgtODFWMTYxLjI2aDgwLjZjNzYuNzMgMCAxMTAuNDQgNTQuODMgMTEwLjQ0IDEwMy44NUM0MTAgMzE4LjM5IDM2OC4zOCAzNjkgMzAwIDM2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT3NpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMjY2LjQ0QzEwLjMgMTMwLjY0IDEwNS40IDM0IDIyMS44IDE4LjM0YzEzOC44LTE4LjYgMjU1LjYgNzUuOCAyNzggMjAxLjEgMjEuMyAxMTguOC00NCAyMzAtMTUxLjYgMjc0LTkuMyAzLjgtMTQuNCAxLjctMTgtNy43cS0yNi43LTY5LjQ1LTUzLjQtMTM5Yy0zLjEtOC4xLTEtMTMuMiA3LTE2LjggMjQuMi0xMSAzOS4zLTI5LjQgNDMuMy01NS44YTcxLjQ3IDcxLjQ3IDAgMCAwLTY0LjUtODIuMmMtMzktMy40LTcxLjggMjMuNy03Ny41IDU5LjctNS4yIDMzIDExLjEgNjMuNyA0MS45IDc3LjcgOS42IDQuNCAxMS41IDguNiA3LjggMTguNHEtMjYuODUgNjkuOS01My43IDEzOS45Yy0yLjYgNi45LTguMyA5LjMtMTUuNSA2LjUtNTIuNi0yMC4zLTEwMS40LTYxLTEzMC44LTExOS0yNC45LTQ5LjItMjUuMi04Ny43LTI2LjgtMTA4Ljd6bTIwLjktMS45Yy40IDYuNi42IDE0LjMgMS4zIDIyLjEgNi4zIDcxLjkgNDkuNiAxNDMuNSAxMzEgMTgzLjEgMy4yIDEuNSA0LjQuOCA1LjYtMi4zcTIyLjM1LTU4LjY1IDQ1LTExNy4zYzEuMy0zLjMuNi00LjgtMi40LTYuNy0zMS42LTE5LjktNDcuMy00OC41LTQ1LjYtODYgMS0yMS42IDkuMy00MC41IDIzLjgtNTYuMyAzMC0zMi43IDc3LTM5LjggMTE1LjUtMTcuNmE5MS42NCA5MS42NCAwIDAgMSA0NS4yIDkwLjRjLTMuNiAzMC42LTE5LjMgNTMuOS00NS43IDY5LjgtMi43IDEuNi0zLjUgMi45LTIuMyA2cTIyLjggNTguOCA0NS4yIDExNy43YzEuMiAzLjEgMi40IDMuOCA1LjYgMi4zIDM1LjUtMTYuNiA2NS4yLTQwLjMgODguMS03MiAzNC44LTQ4LjIgNDkuMS0xMDEuOSA0Mi4zLTE2MS0xMy43LTExNy41LTExOS40LTIxNC44LTI1NS41LTE5OC0xMDYuMSAxMy0xOTUuMyAxMDIuNS0xOTcuMSAyMjUuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFnZTQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDUwNEMxMTEgNTA0IDAgMzkzIDAgMjU2UzExMSA4IDI0OCA4YzIwLjkgMCA0MS4zIDIuNiA2MC43IDcuNUw0Mi4zIDM5MkgyNDh2MTEyem0wLTE0My42VjE0Ni44TDk4LjYgMzYwLjRIMjQ4em05NiAzMS42djkyLjdjNDUuNy0xOS4yIDg0LjUtNTEuNyAxMTEuNC05Mi43SDM0NHptNTcuNC0xMzguMmwtMjEuMiA4LjQgMjEuMiA4LjN2LTE2Ljd6bS0yMC4zIDU0LjVjLTYuNyAwLTggNi4zLTggMTIuOXY3LjdoMTYuMnYtMTBjMC01LjktMi4zLTEwLjYtOC4yLTEwLjZ6TTQ5NiAyNTZjMCAzNy4zLTguMiA3Mi43LTIzIDEwNC40SDM0NFYyNy4zQzQzMy4zIDY0LjggNDk2IDE1My4xIDQ5NiAyNTZ6TTM2MC40IDE0My42aDY4LjJWOTZoLTEzLjl2MzIuNmgtMTMuOVY5OWgtMTMuOXYyOS42aC0xMi43Vjk2aC0xMy45djQ3LjZ6bTY4LjEgMTg1LjNINDAydi0xMWMwLTE1LjQtNS42LTI1LjItMjAuOS0yNS4yLTE1LjQgMC0yMC43IDEwLjYtMjAuNyAyNS45djI1LjNoNjguMnYtMTV6bTAtMTAzbC02OC4yIDI5LjdWMjY4bDY4LjIgMjkuNXYtMTYuNmwtMTQuNC01Ljd2LTI2LjVsMTQuNC01Ljl2LTE2Ljl6bS00LjgtNjguNWgtMzUuNlYxODRINDAydi0xMi4yaDExYzguNiAxNS44IDEuMyAzNS4zLTE4LjYgMzUuMy0yMi41IDAtMjguMy0yNS4zLTE1LjUtMzcuN2wtMTEuNi0xMC42Yy0xNi4yIDE3LjUtMTIuMiA2My45IDI3LjEgNjMuOSAzNCAwIDQ0LjctMzUuOSAyOS4zLTY1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhZ2VsaW5lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzEyLjdjLTU1LjEgMTM2LjctMTg3LjEgNTQtMTg3LjEgNTQtNDAuNSA4MS44LTEwNy40IDEzNC40LTE4NC42IDEzNC43LTE2LjEgMC0xNi42LTI0LjQgMC0yNC40IDY0LjQtLjMgMTIwLjUtNDIuNyAxNTcuMi0xMTAuMS00MS4xIDE1LjktMTE4LjYgMjcuOS0xNjEuNi04Mi4yIDEwOS00NC45IDE1OS4xIDExLjIgMTc4LjMgNDUuNSA5LjktMjQuNCAxNy01MC45IDIxLjYtNzkuNyAwIDAtMTM5LjcgMjEuOS0xNDkuNS05OC4xIDExOS4xLTQ3LjkgMTUyLjYgNzYuNyAxNTIuNiA3Ni43IDEuNi0xNi43IDMuMy01Mi42IDMuMy01My40IDAgMC0xMDYuMy03My43LTM4LjEtMTY1LjIgMTI0LjYgNDMgNjEuNCAxNjIuNCA2MS40IDE2Mi40LjUgMS42LjUgMjMuOCAwIDMzLjQgMCAwIDQ1LjItODkgMTM2LjQtNTcuNS00LjIgMTM0LTE0MS45IDEwNi40LTE0MS45IDEwNi40LTQuNCAyNy40LTExLjIgNTMuNC0yMCA3Ny41IDAgMCA4My05MS44IDE3Mi0yMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFsZmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NC45IDE5My45YzAtNDcuNC01NS4yLTQ0LjItOTUuNC0yOS44LTEuMyAzOS40LTIuNSA4MC43LTMgMTE5LjguNyAyLjggMi42IDYuMiAxNS4xIDYuMiAzNi44IDAgODMuNC00Mi44IDgzLjMtOTYuMnptLTE5NC41IDcyLjJjLjIgMCA2LjUtMi43IDExLjItMi43IDI2LjYgMCAyMC43IDQ0LjEtMTQuNCA0NC4xLTIxLjUgMC0zNy4xLTE4LjEtMzcuMS00MyAwLTQyIDQyLjktOTUuNiAxMDAuNy0xMjYuNSAxLTEyLjQgMy0yMiAxMC41LTI4LjIgMTEuMi05IDI2LjYtMy41IDI5LjUgMTEuMSA3Mi4yLTIyLjIgMTM1LjIgMSAxMzUuMiA3MiAwIDc3LjktNzkuMyAxNTIuNi0xNDAuMSAxMzguMi0uMSAzOS40LjkgNzQuNCAyLjcgMTAwdi4yYy4yIDMuNC42IDEyLjUtNS4zIDE5LjEtOS42IDEwLjYtMzMuNCAxMC0zNi40LTIyLjMtNC4xLTQ0LjQuMi0yMDYuMSAxLjQtMjQyLjUtMjEuNSAxNS01OC41IDUwLjMtNTguNSA3NS45LjIgMi41LjQgNCAuNiA0LjZ6TTggMTgxLjFzLS4xIDM3LjQgMzguNCAzNy40aDMwbDIyLjQgMjE3LjJzMCA0NC4zIDQ0LjcgNDQuM2gyODguOXM0NC43LS40IDQ0LjctNDQuM2wyMi40LTIxNy4yaDMwczM4LjQgMS4yIDM4LjQtMzcuNGMwIDAgLjEtMzcuNC0zOC40LTM3LjRoLTMwLjFjLTcuMy0yNS42LTMwLjItNzQuMy0xMTkuNC03NC4zaC0yOFY1MC4zcy0yLjctMTguNC0yMS4xLTE4LjRoLTg1LjhzLTIxLjEgMC0yMS4xIDE4LjR2MTkuMWgtMjguMXMtMTA1IDQuMi0xMjAuNSA3NC4zaC0yOVM4IDE0Mi41IDggMTgxLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhdHJlb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDE5NC44YzAgMTAxLjMtODIuNCAxODMuOC0xODMuOCAxODMuOC0xMDEuNyAwLTE4NC40LTgyLjQtMTg0LjQtMTgzLjggMC0xMDEuNiA4Mi43LTE4NC4zIDE4NC40LTE4NC4zQzQyOS42IDEwLjUgNTEyIDkzLjIgNTEyIDE5NC44ek0wIDUwMS41aDkwdi00OTFIMHY0OTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBheXBhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTEuNCAyOTUuOWMtMy41IDE5LjItMTcuNCAxMDguNy0yMS41IDEzNC0uMyAxLjgtMSAyLjUtMyAyLjVIMTIuM2MtNy42IDAtMTMuMS02LjYtMTIuMS0xMy45TDU4LjggNDYuNmMxLjUtOS42IDEwLjEtMTYuOSAyMC0xNi45IDE1Mi4zIDAgMTY1LjEtMy43IDIwNCAxMS40IDYwLjEgMjMuMyA2NS42IDc5LjUgNDQgMTQwLjMtMjEuNSA2Mi42LTcyLjUgODkuNS0xNDAuMSA5MC4zLTQzLjQuNy02OS41LTctNzUuMyAyNC4yek0zNTcuMSAxNTJjLTEuOC0xLjMtMi41LTEuOC0zIDEuMy0yIDExLjQtNS4xIDIyLjUtOC44IDMzLjYtMzkuOSAxMTMuOC0xNTAuNSAxMDMuOS0yMDQuNSAxMDMuOS02LjEgMC0xMC4xIDMuMy0xMC45IDkuNC0yMi42IDE0MC40LTI3LjEgMTY5LjctMjcuMSAxNjkuNy0xIDcuMSAzLjUgMTIuOSAxMC42IDEyLjloNjMuNWM4LjYgMCAxNS43LTYuMyAxNy40LTE0LjkuNy01LjQtMS4xIDYuMSAxNC40LTkxLjMgNC42LTIyIDE0LjMtMTkuNyAyOS4zLTE5LjcgNzEgMCAxMjYuNC0yOC44IDE0Mi45LTExMi4zIDYuNS0zNC44IDQuNi03MS40LTIzLjgtOTIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVubnlBcmNhZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIxLjkxIDE2NC4yN2MtNC40OSAxOS40NS0xLjQgNi4wNi0xNS4xIDY1LjI5bDM5LjczLTEwLjYxYy0yMi4zNC00OS42MS0xNy4yOS0zOC40MS0yNC42My01NC42OHptLTIwNi4wOSA1MS4xMWMtMjAuMTkgNS40LTExLjMxIDMuMDMtMzkuNjMgMTAuNThsNC40NiA0Ni4xOWMyOC4xNy03LjU5IDIwLjYyLTUuNTcgMzQuODItOS4zNCA0Mi4zLTkuNzkgMzIuODUtNTYuNDIuMzUtNDcuNDN6bTMyNi4xNi0yNi4xOWwtNDUuNDctOTkuMmMtNS42OS0xMi4zNy0xOS40Ni0xOC44NC0zMi42Mi0xNS4zMy03MC4yNyAxOC43NS0zOC43MiAxMC4zMi0xMzUuNTkgMzYuMjNhMjcuNjE4IDI3LjYxOCAwIDAgMC0xOC44OSAxNy40MUMxNDQuMjYgMTEzLjI3IDAgMTUzLjc1IDAgMjI2LjY3YzAgMzMuNSAzMC42NyA2Ny4xMSA4MC45IDk1LjM3bDEuNzQgMTcuODhhMjcuODkxIDI3Ljg5MSAwIDAgMC0xNy43NyAyOC42N2w0LjMgNDQuNDhjMS4zOSAxNC4zMSAxMy40MyAyNS4yMSAyNy44IDI1LjIgNS4xOC0uMDEtMy4wMSAxLjc4IDEyMi41My0zMS43NiAxMi41Ny0zLjM3IDIxLjEyLTE1LjAyIDIwLjU4LTI4LjAyIDIxNi41OSA0NS41IDQwMS45OS01Ljk4IDM5OS44OS04NC44My4wMS0yOC4xNS0yMi4xOS02Ni41Ni05Ny45OS0xMDQuNDd6TTI1NS4xNCAyOTguM2wtMjEuOTEgNS44OC00OC40NCAxMi45MSAyLjQ2IDIzLjU1IDIwLjUzLTUuNTEgNC41MSA0NC41MS0xMTUuMzEgMzAuNzgtNC4zLTQ0LjUyIDIwLjAyLTUuMzUtMTEuMTEtMTE0LjY0LTIwLjEyIDUuMzktNC4zNS00NC41YzE3OC4xNS00Ny41NCAxNzAuMTgtNDYuNDIgMTg2LjIyLTQ2LjY1IDU2LjY2LTEuMTMgNjQuMTUgNzEuODQgNDIuNTUgMTA0LjQzYTg2LjcgODYuNyAwIDAgMS01MC43NSAzMy43MnptMTk5LjE4IDE2LjYybC0zLjg5LTM5LjQ5IDE0LjktMy45OC02LjYxLTE0LjY4LTU3Ljc2IDE1LjQyLTQuMSAxNy41NCAxOS4yLTUuMTIgNC4wNSAzOS41NC0xMTIuODUgMzAuMDctNC40Ni00NC40MyAyMC45OS01LjU5IDMzLjA4LTEyNi40Ny0xNy4xNSA0LjU2LTQuMi00NC40OGM5My4zNi0yNC45OSA2NS4wMS0xNy40MSAxMzUuNTktMzYuMjRsNjYuNjcgMTQ1LjQ3IDIwLjc5LTUuNTYgNC4zIDQ0LjQ4LTEwOC41NSAyOC45NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyYnl0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDUuMzE0LDI4NC41NzhIMjQ2LjZWMzgzLjNoNTguNzExcTI0LjQyMywwLDM4LjE5My0xMy43N3QxMy43Ny0zNi4xMXEwLTIxLjgyNi0xNC4wMzItMzUuMzM1VDMwNS4zMTQsMjg0LjU3OFpNMTQ5LjQzNSwxMjguN0g5MC43MjR2OTguNzIzaDU4LjcxMXEyNC40MiwwLDM4LjE5LTEzLjc3M3QxMy43Ny0zNi4xMDdxMC0yMS44MjYtMTQuMDI5LTM1LjMzOFQxNDkuNDM1LDEyOC43Wk0zNjYuNjQ3LDMySDgxLjM1M0E4MS40NDUsODEuNDQ1LDAsMCwwLDAsMTEzLjM1MlYzOTguNjQ3QTgxLjQ0NSw4MS40NDUsMCwwLDAsODEuMzUzLDQ4MEgzNjYuNjQ3QTgxLjQ0NSw4MS40NDUsMCwwLDAsNDQ4LDM5OC42NDdWMTEzLjM1MkE4MS40NDUsODEuNDQ1LDAsMCwwLDM2Ni42NDcsMzJabTYzLjYzNSwzNjYuNjQ3YTYzLjcwNiw2My43MDYsMCwwLDEtNjMuNjM1LDYzLjYzNUg4MS4zNTNhNjMuNzA2LDYzLjcwNiwwLDAsMS02My42MzUtNjMuNjM1VjExMy4zNTJBNjMuNzA2LDYzLjcwNiwwLDAsMSw4MS4zNTMsNDkuNzE4SDM2Ni42NDdhNjMuNzA2LDYzLjcwNiwwLDAsMSw2My42MzUsNjMuNjM0Wk0zMDUuMzE0LDEyOC43SDI0Ni42djk4LjcyM2g1OC43MTFxMjQuNDIzLDAsMzguMTkzLTEzLjc3M3QxMy43Ny0zNi4xMDdxMC0yMS44MjYtMTQuMDMyLTM1LjMzOFQzMDUuMzE0LDEyOC43WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJpc2NvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcwIDYzLjZDMzMxLjQgMjIuNiAyODAuNSAwIDIyNi42IDAgMTExLjkgMCAxOC41IDk2LjIgMTguNSAyMTQuNGMwIDc1LjEgNTcuOCAxNTkuOCA4Mi43IDE5Mi43QzEzNy44IDQ1NS41IDE5Mi42IDUxMiAyMjYuNiA1MTJjNDEuNiAwIDExMi45LTk0LjIgMTIwLjktMTA1IDI0LjYtMzMuMSA4Mi0xMTguMyA4Mi0xOTIuNiAwLTU2LjUtMjEuMS0xMTAuMS01OS41LTE1MC44ek0yMjYuNiA0OTMuOWMtNDIuNSAwLTE5MC0xNjcuMy0xOTAtMjc5LjQgMC0xMDcuNCA4My45LTE5Ni4zIDE5MC0xOTYuMyAxMDAuOCAwIDE4NC43IDg5IDE4NC43IDE5Ni4zLjEgMTEyLjEtMTQ3LjQgMjc5LjQtMTg0LjcgMjc5LjR6TTMzOCAyMDYuOGMwIDU5LjEtNTEuMSAxMDkuNy0xMTAuOCAxMDkuNy0xMDAuNiAwLTE1MC43LTEwOC4yLTkyLjktMTgxLjh2LjRjMCAyNC41IDIwLjEgNDQuNCA0NC44IDQ0LjQgMjQuNyAwIDQ0LjgtMTkuOSA0NC44LTQ0LjQgMC0xOC4yLTExLjEtMzMuOC0yNi45LTQwLjcgNzYuNi0xOS4yIDE0MSAzOS4zIDE0MSAxMTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhhYnJpY2F0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIzIDI2Mi4xbC0uMS0xM3MyMS43LTE5LjggMjEuMS0yMS4ybC05LjUtMjBjLS42LTEuNC0yOS41LS41LTI5LjUtLjVsLTkuNC05LjNzLjItMjguNS0xLjItMjkuMWwtMjAuMS05LjJjLTEuNC0uNi0yMC43IDIxLTIwLjcgMjFsLTEzLjEtLjJzLTIwLjUtMjEuNC0yMS45LTIwLjhsLTIwIDguM2MtMS40LjUuMiAyOC45LjIgMjguOWwtOS4xIDkuMXMtMjkuMi0uOS0yOS43LjRsLTguMSAxOS44Yy0uNiAxLjQgMjEgMjEgMjEgMjFsLjEgMTIuOXMtMjEuNyAxOS44LTIxLjEgMjEuMmw5LjUgMjBjLjYgMS40IDI5LjUuNSAyOS41LjVsOS40IDkuM3MtLjIgMzEuOCAxLjIgMzIuM2wyMC4xIDguM2MxLjQuNiAyMC43LTIzLjUgMjAuNy0yMy41bDEzLjEuMnMyMC41IDIzLjggMjEuOCAyMy4zbDIwLTcuNWMxLjQtLjYtLjItMzIuMS0uMi0zMi4xbDkuMS05LjFzMjkuMi45IDI5LjctLjVsOC4xLTE5LjhjLjctMS4xLTIwLjktMjAuNy0yMC45LTIwLjd6bS00NC45LTguN2MuNyAxNy4xLTEyLjggMzEuNi0zMC4xIDMyLjQtMTcuMy44LTMyLjEtMTIuNS0zMi44LTI5LjYtLjctMTcuMSAxMi44LTMxLjYgMzAuMS0zMi4zIDE3LjMtLjggMzIuMSAxMi41IDMyLjggMjkuNXptMjAxLjItMzcuOWwtOTctOTctLjEuMWMtNzUuMS03My4zLTE5NS40LTcyLjgtMjY5LjggMS42LTUwLjkgNTEtMjcuOCAyNy45LTk1LjcgOTUuMy0yMi4zIDIyLjMtMjIuMyA1OC43IDAgODEgNjkuOSA2OS40IDQ2LjQgNDYgOTcuNCA5N2wuMS0uMWM3NS4xIDczLjMgMTk1LjQgNzIuOSAyNjkuOC0xLjYgNTEtNTAuOSAyNy45LTI3LjkgOTUuMy05NS4zIDIyLjMtMjIuMyAyMi4zLTU4LjcgMC04MXpNMTQwLjQgMzYzLjhjLTU5LjYtNTkuNS01OS42LTE1NiAwLTIxNS41IDU5LjUtNTkuNiAxNTYtNTkuNSAyMTUuNiAwIDU5LjUgNTkuNSA1OS42IDE1NiAwIDIxNS42LTU5LjYgNTkuNS0xNTYgNTkuNC0yMTUuNi0uMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvZW5peEZyYW1ld29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTIuOSAzNDQuM2MzLjgtLjEgMjIuOC0xLjQgMjUuNi0yLjItMi40LTIuNi00My42LTEtNjgtNDkuNi00LjMtOC42LTcuNS0xNy42LTYuNC0yNy42IDIuOS0yNS41IDMyLjktMzAgNTItMTguNSAzNiAyMS42IDYzLjMgOTEuMyAxMTMuNyA5Ny41IDM3IDQuNSA4NC42LTE3IDEwOC4yLTQ1LjQtLjYtLjEtLjgtLjItMS0uMS0uNC4xLS44LjItMS4xLjMtMzMuMyAxMi4xLTk0LjMgOS43LTEzNC43LTE0LjgtMzcuNi0yMi44LTUzLjEtNTguNy01MS44LTc0LjYgMS44LTIxLjMgMjIuOS0yMy4yIDM1LjktMTkuNiAxNC40IDMuOSAyNC40IDE3LjYgMzguOSAyNy40IDE1LjYgMTAuNCAzMi45IDEzLjcgNTEuMyAxMC4zIDE0LjktMi43IDM0LjQtMTIuMyAzNi41LTE0LjUtMS4xLS4xLTEuOC0uMS0yLjUtLjItNi4yLS42LTEyLjQtLjgtMTguNS0xLjdDMjc5LjggMTk0LjUgMjYyLjEgNDcuNCAxMzguNSAzNy45IDk0LjIgMzQuNSAzOS4xIDQ2IDIuMiA3Mi45Yy0uOC42LTEuNSAxLjItMi4yIDEuOC4xLjIuMS4zLjIuNS44IDAgMS42LS4xIDIuNC0uMiA2LjMtMSAxMi41LS44IDE4LjcuMyAyMy44IDQuMyA0Ny43IDIzLjEgNTUuOSA3Ni41IDUuMyAzNC4zLS43IDUwLjggOCA4Ni4xIDE5IDc3LjEgOTEgMTA3LjYgMTI3LjcgMTA2LjR6TTc1LjMgNjQuOWMtLjktMS0uOS0xLjItMS4zLTIgMTIuMS0yLjYgMjQuMi00LjEgMzYuNi00LjgtMS4xIDE0LjctMjIuMiAyMS4zLTM1LjMgNi44em0xOTYuOSAzNTAuNWMtNDIuOCAxLjItOTItMjYuNy0xMjMuNS02MS40LTQuNi01LTE2LjgtMjAuMi0xOC42LTIzLjRsLjQtLjRjNi42IDQuMSAyNS43IDE4LjYgNTQuOCAyNyAyNC4yIDcgNDguMSA2LjMgNzEuNi0zLjMgMjIuNy05LjMgNDEtLjUgNDMuMSAyLjktMTguNSAzLjgtMjAuMSA0LjQtMjQgNy45LTUuMSA0LjQtNC42IDExLjcgNyAxNy4yIDI2LjIgMTIuNCA2My0yLjggOTcuMiAyNS40IDIuNCAyIDguMSA3LjggMTAuMSAxMC43LS4xLjItLjMuMy0uNC41LTQuOC0xLjUtMTYuNC03LjUtNDAuMi05LjMtMjQuNy0yLTQ2LjMgNS4zLTc3LjUgNi4yem0xNzQuOC0yNTJjMTYuNC01LjIgNDEuMy0xMy40IDY2LjUtMy4zIDE2LjEgNi41IDI2LjIgMTguNyAzMi4xIDM0LjYgMy41IDkuNCA1LjEgMTkuNyA1LjEgMjguNy0uMiAwLS40IDAtLjYuMS0uMi0uNC0uNC0uOS0uNS0xLjMtNS0yMi0yOS45LTQzLjgtNjcuNi0yOS45LTUwLjIgMTguNi0xMzAuNCA5LjctMTc2LjktNDgtLjctLjktMi40LTEuNy0xLjMtMy4yLjEtLjIgMi4xLjYgMyAxLjMgMTguMSAxMy40IDM4LjMgMjEuOSA2MC4zIDI2LjIgMzAuNSA2LjEgNTQuNiAyLjkgNzkuOS01LjJ6bTEwMi43IDExNy41Yy0zMi40LjItMzMuOCA1MC4xLTEwMy42IDY0LjQtMTguMiAzLjctMzguNyA0LjYtNDQuOSA0LjJ2LS40YzIuOC0xLjUgMTQuNy0yLjYgMjkuNy0xNi42IDcuOS03LjMgMTUuMy0xNS4xIDIyLjgtMjIuOSAxOS41LTIwLjIgNDEuNC00Mi4yIDgxLjktMzkgMjMuMSAxLjggMjkuMyA4LjIgMzYuMSAxMi43LjMuMi40LjUuNy45LS41IDAtLjcuMS0uOSAwLTctMi43LTE0LjMtMy4zLTIxLjgtMy4zem0tMTIuMy0yNC4xYy0uMS4yLS4xLjQtLjIuNi0yOC45LTQuNC00OC03LjktNjguNSA0LTE3IDkuOS0zMS40IDIwLjUtNjIgMjQuNC0yNy4xIDMuNC00NS4xIDIuNC02Ni4xLTgtLjMtLjItLjYtLjQtMS0uNiAwLS4yLjEtLjMuMS0uNSAyNC45IDMuOCAzNi40IDUuMSA1NS41LTUuOCAyMi4zLTEyLjkgNDAuMS0yNi42IDcxLjMtMzEgMjkuNi00LjEgNTEuMyAyLjUgNzAuOSAxNi45ek0yNjguNiA5Ny4zYy0uNi0uNi0xLjEtMS4yLTIuMS0yLjMgNy42IDAgMjkuNy0xLjIgNTMuNCA4LjQgMTkuNyA4IDMyLjIgMjEgNTAuMiAzMi45IDExLjEgNy4zIDIzLjQgOS4zIDM2LjQgOC4xIDQuMy0uNCA4LjUtMS4yIDEyLjgtMS43LjQtLjEuOSAwIDEuNS4zLS42LjQtMS4yLjktMS44IDEuMi04LjEgNC0xNi43IDYuMy0yNS42IDcuMS0yNi4xIDIuNi01MC4zLTMuNy03My40LTE1LjQtMTkuMy05LjktMzYuNC0yMi45LTUxLjQtMzguNnpNNjQwIDMzNS43Yy0zLjUgMy4xLTIyLjcgMTEuNi00Mi43IDUuMy0xMi4zLTMuOS0xOS41LTE0LjktMzEuNi0yNC4xLTEwLTcuNi0yMC45LTcuOS0yOC4xLTguNC42LS44LjktMS4yIDEuMi0xLjQgMTQuOC05LjIgMzAuNS0xMi4yIDQ3LjMtNi41IDEyLjUgNC4yIDE5LjIgMTMuNSAzMC40IDI0LjIgMTAuOCAxMC40IDIxIDkuOSAyMy4xIDEwLjUuMS0uMS4yIDAgLjQuNHptLTIxMi41IDEzN2MyLjIgMS4yIDEuNiAxLjUgMS41IDItMTguNS0xLjQtMzMuOS03LjYtNDYuOC0yMi4yLTIxLjgtMjQuNy00MS43LTI3LjktNDguNi0yOS43LjUtLjIuOC0uNCAxLjEtLjQgMTMuMS4xIDI2LjEuNyAzOC45IDMuOSAyNS4zIDYuNCAzNSAyNS40IDQxLjYgMzUuMyAzLjIgNC44IDcuMyA4LjMgMTIuMyAxMS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9lbml4U3F1YWRyb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNjMuMzhDMTQyLjQ5IDI3LjI1IDIwMS41NSA3LjMxIDI2MC41MSA4LjgxYzI5LjU4LS4zOCA1OS4xMSA1LjM3IDg2LjkxIDE1LjMzLTI0LjEzLTQuNjMtNDktNi4zNC03My4zOC0yLjQ1QzIzMS4xNyAyNyAxOTEgNDguODQgMTYyLjIxIDgwLjg3YzUuNjctMSAxMC43OC0zLjY3IDE2LTUuODYgMTguMTQtNy44NyAzNy40OS0xMy4yNiA1Ny4yMy0xNC44MyAxOS43NC0yLjEzIDM5LjY0LS40MyA1OS4yOCAxLjkyLTE0LjQyIDIuNzktMjkuMTIgNC41Ny00MyA5LjU5LTM0LjQzIDExLjA3LTY1LjI3IDMzLjE2LTg2LjMgNjIuNjMtMTMuOCAxOS43MS0yMy42MyA0Mi44Ni0yNC42NyA2Ny4xMy0uMzUgMTYuNDkgNS4yMiAzNC44MSAxOS44MyA0NGE1My4yNyA1My4yNyAwIDAgMCAzNy41MiA2Ljc0YzE1LjQ1LTIuNDYgMzAuMDctOC42NCA0My42LTE2LjMzIDExLjUyLTYuODIgMjIuNjctMTQuNTUgMzItMjQuMjUgMy43OS0zLjIyIDIuNTMtOC40NSAyLjYyLTEyLjc5LTIuMTItLjM0LTQuMzgtMS4xMS02LjMuM2EyMDMgMjAzIDAgMCAxLTM1LjgyIDE1LjM3Yy0yMCA2LjE3LTQyLjE2IDguNDYtNjIuMS43OCAxMi43OSAxLjczIDI2LjA2LjMxIDM3Ljc0LTUuNDQgMjAuMjMtOS43MiAzNi44MS0yNS4yIDU0LjQ0LTM4Ljc3YTUyNi41NyA1MjYuNTcgMCAwIDEgODguOS01NS4zMWMyNS43MS0xMiA1Mi45NC0yMi43OCA4MS41Ny0yNC4xMi0xNS42MyAxMy43Mi0zMi4xNSAyNi41Mi00Ni43OCA0MS4zOC0xNC41MSAxNC0yNy40NiAyOS41LTQwLjExIDQ1LjE4LTMuNTIgNC42LTguOTUgNi45NC0xMy41OCAxMC4xNmExNTAuNyAxNTAuNyAwIDAgMC01MS44OSA2MC4xYy05LjMzIDE5LjY4LTE0LjUgNDEuODUtMTEuNzcgNjMuNjUgMS45NCAxMy42OSA4LjcxIDI3LjU5IDIwLjkgMzQuOTEgMTIuOSA4IDI5LjA1IDguMDcgNDMuNDggNS4xIDMyLjgtNy40NSA2MS40My0yOC44OSA4MS01NS44NCAyMC40NC0yNy41MiAzMC41Mi02Mi4yIDI5LjE2LTk2LjM1LS41Mi03LjUtMS41Ny0xNS0xLjY2LTIyLjQ5IDggMTkuNDggMTQuODIgMzkuNzEgMTYuNjUgNjAuODMgMiAxNC4yOC43NSAyOC43Ni0xLjYyIDQyLjktMS45MSAxMS01LjY3IDIxLjUxLTcuNzggMzIuNDNhMTY1IDE2NSAwIDAgMCAzOS4zNC04MS4wNyAxODMuNjQgMTgzLjY0IDAgMCAwLTE0LjIxLTEwNC42NGMyMC43OCAzMiAzMi4zNCA2OS41OCAzNS43MSAxMDcuNDguNDkgMTIuNzMuNDkgMjUuNTEgMCAzOC4yM0EyNDMuMjEgMjQzLjIxIDAgMCAxIDQ4MiAzNzEuMzRjLTI2LjEyIDQ3LjM0LTY4IDg1LjYzLTExNy4xOSAxMDgtNzguMjkgMzYuMjMtMTc0LjY4IDMxLjMyLTI0OC0xNC42OEEyNDguMzQgMjQ4LjM0IDAgMCAxIDI1LjM2IDM2NiAyMzguMzQgMjM4LjM0IDAgMCAxIDAgMjczLjA4di0zMS4zNEMzLjkzIDE3MiA0MC44NyAxMDUuODIgOTYgNjMuMzhtMjIyIDgwLjMzYTc5LjEzIDc5LjEzIDAgMCAwIDE2LTQuNDhjNS0xLjc3IDkuMjQtNS45NCAxMC4zMi0xMS4yMi04Ljk2IDQuOTktMTcuOTggOS45Mi0yNi4zMiAxNS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDEwNC41YzE3MS40IDAgMzAzLjIgNzIuMiAzMDMuMiAxNTEuNVM0OTEuMyA0MDcuNSAzMjAgNDA3LjVjLTE3MS40IDAtMzAzLjItNzIuMi0zMDMuMi0xNTEuNVMxNDguNyAxMDQuNSAzMjAgMTA0LjVtMC0xNi44QzE0My4zIDg3LjcgMCAxNjMgMCAyNTZzMTQzLjMgMTY4LjMgMzIwIDE2OC4zUzY0MCAzNDkgNjQwIDI1NiA0OTYuNyA4Ny43IDMyMCA4Ny43ek0yMTguMiAyNDIuNWMtNy45IDQwLjUtMzUuOCAzNi4zLTcwLjEgMzYuM2wxMy43LTcwLjZjMzggMCA2My44LTQuMSA1Ni40IDM0LjN6TTk3LjQgMzUwLjNoMzYuN2w4LjctNDQuOGM0MS4xIDAgNjYuNiAzIDkwLjItMTkuMSAyNi4xLTI0IDMyLjktNjYuNyAxNC4zLTg4LjEtOS43LTExLjItMjUuMy0xNi43LTQ2LjUtMTYuN2gtNzAuN0w5Ny40IDM1MC4zem0xODUuNy0yMTMuNmgzNi41bC04LjcgNDQuOGMzMS41IDAgNjAuNy0yLjMgNzQuOCAxMC43IDE0LjggMTMuNiA3LjcgMzEtOC4zIDExMy4xaC0zN2MxNS40LTc5LjQgMTguMy04NiAxMi43LTkyLTUuNC01LjgtMTcuNy00LjYtNDcuNC00LjZsLTE4LjggOTYuNmgtMzYuNWwzMi43LTE2OC42ek01MDUgMjQyLjVjLTggNDEuMS0zNi43IDM2LjMtNzAuMSAzNi4zbDEzLjctNzAuNmMzOC4yIDAgNjMuOC00LjEgNTYuNCAzNC4zek0zODQuMiAzNTAuM0g0MjFsOC43LTQ0LjhjNDMuMiAwIDY3LjEgMi41IDkwLjItMTkuMSAyNi4xLTI0IDMyLjktNjYuNyAxNC4zLTg4LjEtOS43LTExLjItMjUuMy0xNi43LTQ2LjUtMTYuN0g0MTdsLTMyLjggMTY4Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDQgMjQ2Yy0zLjItMi02LjMtMi45LTEwLjEtMi45LTYuNiAwLTEyLjYgMy4yLTE5LjMgMy43bDEuNyA0Ljl6bTEzNS45IDE5Ny45Yy0xOSAwLTY0LjEgOS41LTc5LjkgMTkuOGw2LjkgNDUuMWMzNS43IDYuMSA3MC4xIDMuNiAxMDYtOS44LTQuOC0xMC0yMy41LTU1LjEtMzMtNTUuMXpNMzQwLjggMTc3YzYuNiAyLjggMTEuNSA5LjIgMjIuNyAyMi4xIDItMS40IDcuNS01LjIgNy41LTguNiAwLTQuOS0xMS44LTEzLjItMTMuMi0yMyAxMS4yLTUuNyAyNS4yLTYgMzcuNi04LjkgNjguMS0xNi40IDExNi4zLTUyLjkgMTQ2LjgtMTE2LjdDNTQ4LjMgMjkuMyA1NTQgMTYuMSA1NTQuNiAybC0yIDIuNmMtMjguNCA1MC0zMyA2My4yLTgxLjMgMTAwLTMxLjkgMjQuNC02OS4yIDQwLjItMTA2LjYgNTQuNmwtNi4zLS4zdi0yMS44Yy0xOS42IDEuNi0xOS43LTE0LjYtMzEuNi0yMy0xOC43IDIwLjYtMzEuNiA0MC44LTU4LjkgNTEuMS0xMi43IDQuOC0xOS42IDEwLTI1LjkgMjEuOCAzNC45LTE2LjQgOTEuMi0xMy41IDk4LjgtMTB6TTU1NS41IDBsLS42IDEuMS0uMy45LjYtLjZ6bS01OS4yIDM4Mi4xYy0zMy45LTU2LjktNzUuMy0xMTguNC0xNTAtMTE1LjVsLS4zLTZjLTEuMS0xMy41IDMyLjggMy4yIDM1LjEtMzFsLTE0LjQgNy4yYy0xOS44LTQ1LjctOC42LTU0LjMtNjUuNS01NC4zLTE0LjcgMC0yNi43IDEuNy00MS40IDQuNiAyLjkgMTguNiAyLjIgMzYuNy0xMC45IDUwLjNsMTkuNSA1LjVjLTEuNyAzLjItMi45IDYuMy0yLjkgOS44IDAgMjEgNDIuOCAyLjkgNDIuOCAzMy42IDAgMTguNC0zNi44IDYwLjEtNTQuOSA2MC4xLTggMC01My43LTUwLTUzLjQtNjAuMWwuMy00LjYgNTIuMy0xMS41YzEzLTIuNiAxMi4zLTIyLjctMi45LTIyLjctMy43IDAtNDMuMSA5LjItNDkuNCAxMC42LTItNS4yLTcuNS0xNC4xLTEzLjgtMTQuMS0zLjIgMC02LjMgMy4yLTkuNSA0LTkuMiAyLjYtMzEgMi45LTIxLjUgMjAuMUwxNS45IDI5OC41Yy01LjUgMS4xLTguOSA2LjMtOC45IDExLjggMCA2IDUuNSAxMC45IDExLjUgMTAuOSA4IDAgMTMxLjMtMjguNCAxNDcuNC0zMi4yIDIuNiAzLjIgNC42IDYuMyA3LjggOC42IDIwLjEgMTQuNCA1OS44IDg1LjkgNzYuNCA4NS45IDI0LjEgMCA1OC0yMi40IDcxLjMtNDEuOSAzLjItNC4zIDYuOS03LjUgMTIuNC02LjkuNiAxMy44LTMxLjYgMzQuMi0zMyA0My43LTEuNCAxMC4yLTEgMzUuMi0uMyA0MS4xIDI2LjcgOC4xIDUyLTMuNiA3Ny45LTIuOSA0LjMtMjEgMTAuNi00MS45IDkuOC02My41bC0uMy05LjVjLTEuNC0zNC4yLTEwLjktMzguNS0zNC44LTU4LjYtMS4xLTEuMS0yLjYtMi42LTMuNy00IDIuMi0xLjQgMS4xLTEgNC42LTEuNyA4OC41IDAgNTYuMyAxODMuNiAxMTEuNSAyMjkuOSAzMy4xLTE1IDcyLjUtMjcuOSAxMDMuNS00Ny4yLTI5LTI1LjYtNTIuNi00NS43LTcyLjctNzkuOXptLTE5Ni4yIDQ2LjF2MjcuMmwxMS44LTMuNC0yLjktMjMuOHptLTY4LjctMTUwLjRsMjQuMSA2MS4yIDIxLTEzLjgtMzEuMy01MC45em04NC40IDE1NC45bDIgMTIuNGM5LTEuNSA1OC40LTYuNiA1OC40LTE0LjEgMC0xLjQtLjYtMy4yLS45LTQuNi0yNi44IDAtMzYuOSAzLjgtNTkuNSA2LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlckhhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMjQuOWMtODAuOCA1My42LTg5LjQgOTIuNS05Ni40IDEwNC40LTYuNyAxMi4yLTExLjcgNjAuMy0yMy4zIDgzLjYtMTEuNyAyMy42LTU0LjIgNDIuMi02Ni4xIDUwLTExLjcgNy44LTI4LjMgMzguMS00MS45IDY0LjItMTA4LjEtNC40LTE2Ny40IDM4LjgtMjU5LjIgOTMuNiAyOS40LTkuNyA0My4zLTE2LjcgNDMuMy0xNi43IDk0LjItMzYgMTM5LjMtNjguMyAyODEuMS00OS4yIDEuMSAwIDEuOS42IDIuOC44IDMuOSAyLjIgNS4zIDYuOSAzLjEgMTAuOGwtNTMuOSA5NS44Yy0yLjUgNC43LTcuOCA3LjItMTMuMSA2LjEtMTI2LjgtMjMuOC0yMjYuOSAxNy4zLTMxOC45IDE4LjZDMjQuMSA0ODggMCA0NTMuNCAwIDQ1MS44YzAtMS4xLjYtMS43IDEuNy0xLjcgMCAwIDM4LjMgMCAxMDMuMS0xNS4zQzE3OC40IDI5NC41IDI0NCAyNDUuNCAzMTUuNCAyNDUuNGMwIDAgNzEuNyAwIDkwLjYgNjEuOSAyMi44LTM5LjcgMjguMy00OS4yIDI4LjMtNDkuMiA1LjMtOS40IDM1LTc3LjIgODYuNC0xNDEuNCA1MS41LTY0IDkwLjQtNzkuOSAxMTkuMy05MS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaWVkUGlwZXJQcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDUuMyAxNzQuNmMwIDIxLjEtMTQuMiAzOC4xLTMxLjcgMzguMS03LjEgMC0xMi44LTEuMi0xNy4yLTMuN3YtNjhjNC40LTIuNyAxMC4xLTQuMiAxNy4yLTQuMiAxNy41IDAgMzEuNyAxNi45IDMxLjcgMzcuOHptNTIuNiA2N2MtNy4xIDAtMTIuOCAxLjUtMTcuMiA0LjJ2NjhjNC40IDIuNSAxMC4xIDMuNyAxNy4yIDMuNyAxNy40IDAgMzEuNy0xNi45IDMxLjctMzcuOCAwLTIxLjEtMTQuMy0zOC4xLTMxLjctMzguMXpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0xODUgMjU1LjFjNDEgMCA3NC4yLTM1LjYgNzQuMi03OS42IDAtNDQtMzMuMi03OS42LTc0LjItNzkuNi0xMiAwLTI0LjEgMy4yLTM0LjYgOC44aC00NS43VjMxMWw1MS44LTEwLjF2LTUwLjZjOC42IDMuMSAxOC4xIDQuOCAyOC41IDQuOHptMTU4LjQgMjUuM2MwLTQ0LTMzLjItNzkuNi03My45LTc5LjYtMy4yIDAtNi40LjItOS42LjctMy43IDEyLjUtMTAuMSAyMy44LTE5LjIgMzMuNC0xMy44IDE1LTMyLjIgMjMuOC01MS44IDI0LjhWNDE2bDUxLjgtMTAuMXYtNTAuNmM4LjYgMy4yIDE4LjIgNC43IDI4LjcgNC43IDQwLjggMCA3NC0zNS42IDc0LTc5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlclNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0MTlMMCA0NzkuMmwuOC0zMjhDLjggODUuMyA1NCAzMiAxMjAgMzJoMzI3LjJjLTkzIDI4LjktMTg5LjkgOTQuMi0yNTMuOSAxNjguNkMxMjIuNyAyODIgODIuNiAzMzggMzIgNDE5TTQ0OCAzMlMzMDUuMiA5OC44IDI2MS42IDE5OS4xYy0yMy4yIDUzLjYtMjguOSAxMTguMS03MSAxNTguNi0yOC45IDI3LjgtNjkuOCAzOC4yLTEwNS4zIDU2LjMtMjMuMiAxMi02Ni40IDQwLjUtODQuOSA2NmgzMjguNGM2NiAwIDExOS4zLTUzLjMgMTE5LjMtMTE5LjItLjEgMC0uMS0zMjguOC0uMS0zMjguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGllZFBpcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1NS45MywyMy4yQzQyOS4yMywzMCwzODcuNzksNTEuNjksMzQxLjM1LDkwLjY2QTIwNiwyMDYsMCwwLDAsMjQwLDY0QzEyNS4xMyw2NCwzMiwxNTcuMTIsMzIsMjcyczkzLjEzLDIwOCwyMDgsMjA4LDIwOC05My4xMywyMDgtMjA4YTIwNy4yNSwyMDcuMjUsMCwwLDAtNTguNzUtMTQ0LjgxLDE1NS4zNSwxNTUuMzUsMCwwLDAtMTcsMjcuNEExNzYuMTYsMTc2LjE2LDAsMCwxLDQxNy4xLDI3MmMwLDk3LjY2LTc5LjQ0LDE3Ny4xMS0xNzcuMDksMTc3LjExYTE3NS44MSwxNzUuODEsMCwwLDEtODcuNjMtMjMuNGM4Mi45NC0xMDcuMzMsMTUwLjc5LTM3Ljc3LDE4NC4zMS0yMjYuNjUsNS43OS0zMi42MiwyOC05NC4yNiwxMjYuMjMtMTYwLjE4QzQ3MSwzMy40NSw0NjUuMzUsMjAuOCw0NTUuOTMsMjMuMlpNMTI1LDQwNi40QTE3Ni42NiwxNzYuNjYsMCwwLDEsNjIuOSwyNzJDNjIuOSwxNzQuMzQsMTQyLjM1LDk0LjksMjQwLDk0LjlhMTc0LDE3NCwwLDAsMSw3Ni42MywxNy43NUMyNTAuNjQsMTc0Ljc2LDE4OS43NywyNjUuNTIsMTI1LDQwNi40WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaW50ZXJlc3RQIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwNCA2LjVDMTAxLjQgNi41IDAgNzQuOSAwIDE4NS42IDAgMjU2IDM5LjYgMjk2IDYzLjYgMjk2YzkuOSAwIDE1LjYtMjcuNiAxNS42LTM1LjQgMC05LjMtMjMuNy0yOS4xLTIzLjctNjcuOCAwLTgwLjQgNjEuMi0xMzcuNCAxNDAuNC0xMzcuNCA2OC4xIDAgMTE4LjUgMzguNyAxMTguNSAxMDkuOCAwIDUzLjEtMjEuMyAxNTIuNy05MC4zIDE1Mi43LTI0LjkgMC00Ni4yLTE4LTQ2LjItNDMuOCAwLTM3LjggMjYuNC03NC40IDI2LjQtMTEzLjQgMC02Ni4yLTkzLjktNTQuMi05My45IDI1LjggMCAxNi44IDIuMSAzNS40IDkuNiA1MC43LTEzLjggNTkuNC00MiAxNDcuOS00MiAyMDkuMSAwIDE4LjkgMi43IDM3LjUgNC41IDU2LjQgMy40IDMuOCAxLjcgMy40IDYuOSAxLjUgNTAuNC02OSA0OC42LTgyLjUgNzEuNC0xNzIuOCAxMi4zIDIzLjQgNDQuMSAzNiA2OS4zIDM2IDEwNi4yIDAgMTUzLjktMTAzLjUgMTUzLjktMTk2LjhDMzg0IDcxLjMgMjk4LjIgNi41IDIwNCA2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpbnRlcmVzdFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDE1NC40YzkuOC0xNi40IDIyLjQtNDAgMjcuNC01OS4zIDMtMTEuNSAxNS4zLTU4LjQgMTUuMy01OC40IDggMTUuMyAzMS40IDI4LjIgNTYuMyAyOC4yIDc0LjEgMCAxMjcuNC02OC4xIDEyNy40LTE1Mi43IDAtODEuMS02Ni4yLTE0MS44LTE1MS40LTE0MS44LTEwNiAwLTE2Mi4yIDcxLjEtMTYyLjIgMTQ4LjYgMCAzNiAxOS4yIDgwLjggNDkuOCA5NS4xIDQuNyAyLjIgNy4xIDEuMiA4LjItMy4zLjgtMy40IDUtMjAuMSA2LjgtMjcuOC42LTIuNS4zLTQuNi0xLjctNy0xMC4xLTEyLjMtMTguMy0zNC45LTE4LjMtNTYgMC01NC4yIDQxLTEwNi42IDExMC45LTEwNi42IDYwLjMgMCAxMDIuNiA0MS4xIDEwMi42IDk5LjkgMCA2Ni40LTMzLjUgMTEyLjQtNzcuMiAxMTIuNC0yNC4xIDAtNDIuMS0xOS45LTM2LjQtNDQuNCA2LjktMjkuMiAyMC4zLTYwLjcgMjAuMy04MS44IDAtNTMtNzUuNS00NS43LTc1LjUgMjUgMCAyMS43IDcuMyAzNi41IDcuMyAzNi41LTMxLjQgMTMyLjgtMzYuMSAxMzQuNS0yOS42IDE5Mi42bDIuMi44SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpbnRlcmVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OC0yNS42IDAtNTAuMi0zLjktNzMuNC0xMS4xIDEwLjEtMTYuNSAyNS4yLTQzLjUgMzAuOC02NSAzLTExLjYgMTUuNC01OSAxNS40LTU5IDguMSAxNS40IDMxLjcgMjguNSA1Ni44IDI4LjUgNzQuOCAwIDEyOC43LTY4LjggMTI4LjctMTU0LjMgMC04MS45LTY2LjktMTQzLjItMTUyLjktMTQzLjItMTA3IDAtMTYzLjkgNzEuOC0xNjMuOSAxNTAuMSAwIDM2LjQgMTkuNCA4MS43IDUwLjMgOTYuMSA0LjcgMi4yIDcuMiAxLjIgOC4zLTMuMy44LTMuNCA1LTIwLjMgNi45LTI4LjEuNi0yLjUuMy00LjctMS43LTcuMS0xMC4xLTEyLjUtMTguMy0zNS4zLTE4LjMtNTYuNiAwLTU0LjcgNDEuNC0xMDcuNiAxMTItMTA3LjYgNjAuOSAwIDEwMy42IDQxLjUgMTAzLjYgMTAwLjkgMCA2Ny4xLTMzLjkgMTEzLjYtNzggMTEzLjYtMjQuMyAwLTQyLjYtMjAuMS0zNi43LTQ0LjggNy0yOS41IDIwLjUtNjEuMyAyMC41LTgyLjYgMC0xOS0xMC4yLTM0LjktMzEuNC0zNC45LTI0LjkgMC00NC45IDI1LjctNDQuOSA2MC4yIDAgMjIgNy40IDM2LjggNy40IDM2LjhzLTI0LjUgMTAzLjgtMjkgMTIzLjJjLTUgMjEuNC0zIDUxLjYtLjkgNzEuMkM2NS40IDQ1MC45IDAgMzYxLjEgMCAyNTYgMCAxMTkgMTExIDggMjQ4IDhzMjQ4IDExMSAyNDggMjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGF5c3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzAuOSAzNzIuM2MtMTEuMyAxNC4yLTM4LjggMjQuMy0zOC44IDI0LjNMMzI3IDQ3MC4ydi01NC4zbDE1MC45LTUzLjhjMTcuMS02LjEgMTkuOC0xNC44IDUuOC0xOS40LTEzLjktNC42LTM5LjEtMy4zLTU2LjIgMi45TDMyNyAzODEuMXYtNTYuNGMyMy4yLTcuOCA0Ny4xLTEzLjYgNzUuNy0xNi44IDQwLjktNC41IDkwLjkuNiAxMzAuMiAxNS41IDQ0LjIgMTQgNDkuMiAzNC43IDM4IDQ4Ljl6bS0yMjQuNC05Mi41di0xMzljMC0xNi4zLTMtMzEuMy0xOC4zLTM1LjYtMTEuNy0zLjgtMTkgNy4xLTE5IDIzLjR2MzQ3LjlsLTkzLjgtMjkuOFYzMmMzOS45IDcuNCA5OCAyNC45IDEyOS4yIDM1LjRDNDI0LjEgOTQuNyA0NTEgMTI4LjcgNDUxIDIwNS4yYzAgNzQuNS00NiAxMDIuOC0xMDQuNSA3NC42ek00My4yIDQxMC4yYy00NS40LTEyLjgtNTMtMzkuNS0zMi4zLTU0LjggMTkuMS0xNC4yIDUxLjctMjQuOSA1MS43LTI0LjlsMTM0LjUtNDcuOHY1NC41bC05Ni44IDM0LjZjLTE3LjEgNi4xLTE5LjcgMTQuOC01LjggMTkuNCAxMy45IDQuNiAzOS4xIDMuMyA1Ni4yLTIuOWw0Ni40LTE2Ljl2NDguOGMtNTEuNiA5LjMtMTAxLjQgNy4zLTE1My45LTEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQcm9kdWN0SHVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjYuMyAyMTguOGMwIDIwLjUtMTYuNyAzNy4yLTM3LjIgMzcuMmgtNzAuM3YtNzQuNGg3MC4zYzIwLjUgMCAzNy4yIDE2LjcgMzcuMiAzNy4yek01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6bS0xMjguMS0zNy4yYzAtNDcuOS0zOC45LTg2LjgtODYuOC04Ni44SDE2OS4ydjI0OGg0OS42di03NC40aDcwLjNjNDcuOSAwIDg2LjgtMzguOSA4Ni44LTg2Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVB1c2hlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDMyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcgMTExLjlsLTk4LjUtOSAxNC0zMy40YzEwLjQtMjMuNS0xMC44LTQwLjQtMjguNy0zN0wyMi41IDc2LjljLTE1LjEgMi43LTI2IDE4LjMtMjEuNCAzNi42bDEwNS4xIDM0OC4zYzYuNSAyMS4zIDM2LjcgMjQuMiA0Ny43IDdsMzUuMy04MC44IDIzNS4yLTIzMS4zYzE2LjQtMTYuOCA0LjMtNDIuOS0xNy40LTQ0Ljh6TTI5Ny42IDUzLjZjNS4xLS43IDcuNSAyLjUgNS4yIDcuNEwyODYgMTAwLjkgMTA4LjYgODQuNmwxODktMzF6TTIyLjcgMTA3LjljLTMuMS01LjEgMS0xMCA2LjEtOS4xbDI0OC43IDIyLjctOTYuOSAyMzAuN0wyMi43IDEwNy45ek0xMzYgNDU2LjRjLTIuNiA0LTcuOSAzLjEtOS40LTEuMkw0My41IDE3OS43bDEyNy43IDE5Ny42Yy03IDE1LTM1LjIgNzkuMS0zNS4yIDc5LjF6bTI3Mi44LTMxNC41TDIxMC4xIDMzNy4zbDg5LjctMjEzLjcgMTA2LjQgOS43YzQgMS4xIDUuNyA1LjMgMi42IDguNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHl0aG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOS44IDIwMC41Yy03LjctMzAuOS0yMi4zLTU0LjItNTMuNC01NC4yaC00MC4xdjQ3LjRjMCAzNi44LTMxLjIgNjcuOC02Ni44IDY3LjhIMTcyLjdjLTI5LjIgMC01My40IDI1LTUzLjQgNTQuM3YxMDEuOGMwIDI5IDI1LjIgNDYgNTMuNCA1NC4zIDMzLjggOS45IDY2LjMgMTEuNyAxMDYuOCAwIDI2LjktNy44IDUzLjQtMjMuNSA1My40LTU0LjN2LTQwLjdIMjI2LjJ2LTEzLjZoMTYwLjJjMzEuMSAwIDQyLjYtMjEuNyA1My40LTU0LjIgMTEuMi0zMy41IDEwLjctNjUuNyAwLTEwOC42ek0yODYuMiA0MDRjMTEuMSAwIDIwLjEgOS4xIDIwLjEgMjAuMyAwIDExLjMtOSAyMC40LTIwLjEgMjAuNC0xMSAwLTIwLjEtOS4yLTIwLjEtMjAuNC4xLTExLjMgOS4xLTIwLjMgMjAuMS0yMC4zek0xNjcuOCAyNDguMWgxMDYuOGMyOS43IDAgNTMuNC0yNC41IDUzLjQtNTQuM1Y5MS45YzAtMjktMjQuNC01MC43LTUzLjQtNTUuNi0zNS44LTUuOS03NC43LTUuNi0xMDYuOC4xLTQ1LjIgOC01My40IDI0LjctNTMuNCA1NS42djQwLjdoMTA2Ljl2MTMuNmgtMTQ3Yy0zMS4xIDAtNTguMyAxOC43LTY2LjggNTQuMi05LjggNDAuNy0xMC4yIDY2LjEgMCAxMDguNiA3LjYgMzEuNiAyNS43IDU0LjIgNTYuOCA1NC4ySDEwMXYtNDguOGMwLTM1LjMgMzAuNS02Ni40IDY2LjgtNjYuNHptLTYuNy0xNDIuNmMtMTEuMSAwLTIwLjEtOS4xLTIwLjEtMjAuMy4xLTExLjMgOS0yMC40IDIwLjEtMjAuNCAxMSAwIDIwLjEgOS4yIDIwLjEgMjAuNHMtOSAyMC4zLTIwLjEgMjAuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMzLjc1NCA0MjAuNDQ1Yy0xMS41MjYgMS4zOTMtNDQuODYtNTIuNzQxLTQ0Ljg2LTUyLjc0MSAwIDMxLjM0NS0xNi4xMzYgNzIuMjQ3LTUxLjA1MSAxMDEuNzg2IDE2Ljg0MiA1LjE5MiA1NC44NDMgMTkuMTY3IDQ1LjgwMyAzNC40MjEtNy4zMTYgMTIuMzQzLTEyNS41MSA3Ljg4MS0xNTkuNjMyIDQuMDM3LTM0LjEyMiAzLjg0NC0xNTIuMzE2IDguMzA2LTE1OS42MzItNC4wMzctOS4wNDUtMTUuMjUgMjguOTE4LTI5LjIxNCA0NS43ODMtMzQuNDE1LTM0LjkyLTI5LjUzOS01MS4wNTktNzAuNDQ1LTUxLjA1OS0xMDEuNzkyIDAgMC0zMy4zMzQgNTQuMTM0LTQ0Ljg1OSA1Mi43NDEtNS4zNy0uNjUtMTIuNDI0LTI5LjY0NCA5LjM0Ny05OS43MDQgMTAuMjYxLTMzLjAyNCAyMS45OTUtNjAuNDc4IDQwLjE0NC0xMDUuNzc5QzYwLjY4MyA5OC4wNjMgMTA4Ljk4Mi4wMDYgMjI0IDBjMTEzLjczNy4wMDYgMTYzLjE1NiA5Ni4xMzMgMTYwLjI2NCAyMTQuOTYzIDE4LjExOCA0NS4yMjMgMjkuOTEyIDcyLjg1IDQwLjE0NCAxMDUuNzc4IDIxLjc2OCA3MC4wNiAxNC43MTYgOTkuMDUzIDkuMzQ2IDk5LjcwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVpbnNjYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy42IDQ3NC42aC0xYTE1OC4xIDE1OC4xIDAgMCAxIDAtMzE2LjJjOTQuOSAwIDE2OC4yIDgzLjEgMTU3IDE3Ni42IDQgNS4xIDguMiA5LjYgMTEuMiAxNS4zIDEzLjQtMzAuMyAyMC4zLTYyLjQgMjAuMy05Ny43QzUwMS4xIDExNy41IDM5MS42IDggMjU2LjUgOFMxMiAxMTcuNSAxMiAyNTIuNnMxMDkuNSAyNDQuNiAyNDQuNSAyNDQuNmEyMzcuMzYgMjM3LjM2IDAgMCAwIDcwLjQtMTAuMWMtNS4yLTMuNS04LjktOC4xLTEzLjMtMTIuNXptLS4xLS4xbC40LjF6bTc4LjQtMTY4LjlhOTkuMiA5OS4yIDAgMSAwIDk5LjIgOTkuMiA5OS4xOCA5OS4xOCAwIDAgMC05OS4yLTk5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVF1b3JhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC41IDM4Ni43aC0yOS4zYy0xLjUgMTMuNS0xMC41IDMwLjgtMzMgMzAuOC0yMC41IDAtMzUuMy0xNC4yLTQ5LjUtMzUuOCA0NC4yLTM0LjIgNzQuNy04Ny41IDc0LjctMTUzQzQwMy41IDExMS4yIDMwNi44IDMyIDIwNSAzMiAxMDUuMyAzMiA3LjMgMTExLjcgNy4zIDIyOC43YzAgMTM0LjEgMTMxLjMgMjIxLjYgMjQ5IDE4OUMyNzYgNDUxLjMgMzAyIDQ4MCAzNTEuNSA0ODBjODEuOCAwIDkwLjgtNzUuMyA4OS05My4zek0yOTcgMzI5LjJDMjc3LjUgMzAwIDI1My4zIDI3NyAyMDUuNSAyNzdjLTMwLjUgMC01NC4zIDEwLTY5IDIyLjhsMTIuMiAyNC4zYzYuMi0zIDEzLTQgMTkuOC00IDM1LjUgMCA1My43IDMwLjggNjkuMiA2MS4zLTEwIDMtMjAuNyA0LjItMzIuNyA0LjItNzUgMC0xMDcuNS01My0xMDcuNS0xNTYuN0M5Ny41IDEyNC41IDEzMCA3MSAyMDUgNzFjNzYuMiAwIDEwOC43IDUzLjUgMTA4LjcgMTU3LjcuMSA0MS44LTUuNCA3NS42LTE2LjcgMTAwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJQcm9qZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1ODEgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU4MSAyMjYuNkM1ODEgMTE5LjEgNDUwLjkgMzIgMjkwLjUgMzJTMCAxMTkuMSAwIDIyNi42QzAgMzIyLjQgMTAzLjMgNDAyIDIzOS40IDQxOC4xVjQ4MGg5OS4xdi02MS41YzI0LjMtMi43IDQ3LjYtNy40IDY5LjQtMTMuOUw0NDggNDgwaDExMmwtNjcuNC0xMTMuN2M1NC41LTM1LjQgODguNC04NC45IDg4LjQtMTM5Ljd6bS00NjYuOCAxNC41YzAtNzMuNSA5OC45LTEzMyAyMjAuOC0xMzNzMjExLjkgNDAuNyAyMTEuOSAxMzNjMCA1MC4xLTI2LjUgODUtNzAuMyAxMDYuNC0yLjQtMS42LTQuNy0yLjktNi40LTMuNy0xMC4yLTUuMi0yNy44LTEwLjUtMjcuOC0xMC41czg2LjYtNi40IDg2LjYtOTIuNy05MC42LTg3LjktOTAuNi04Ny45aC0xOTlWMzYxYy03NC4xLTIxLjUtMTI1LjItNjcuMS0xMjUuMi0xMTkuOXptMjI1LjEgMzguM3YtNTUuNmM1Ny44IDAgODcuOC02LjggODcuOCAyNy4zIDAgMzYuNS0zOC4yIDI4LjMtODcuOCAyOC4zem0tLjkgNzIuNUgzNjVjMTAuOCAwIDE4LjkgMTEuNyAyNCAxOS4yLTE2LjEgMS45LTMzIDIuOC01MC42IDIuOXYtMjIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmFzcGJlcnJ5UGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQwNyA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyIDIzMi41bC0zLjctNi41Yy4xLTQ2LjQtMjEuNC02NS4zLTQ2LjUtNzkuNyA3LjYtMiAxNS40LTMuNiAxNy42LTEzLjIgMTMuMS0zLjMgMTUuOC05LjQgMTcuMS0xNS44IDMuNC0yLjMgMTQuOC04LjcgMTMuNi0xOS43IDYuNC00LjQgMTAtMTAuMSA4LjEtMTguMSA2LjktNy41IDguNy0xMy43IDUuOC0xOS40IDguMy0xMC4zIDQuNi0xNS42IDEuMS0yMC45IDYuMi0xMS4yLjctMjMuMi0xNi42LTIxLjItNi45LTEwLjEtMjEuOS03LjgtMjQuMi03LjgtMi42LTMuMi02LTYtMTYuNS00LjctNi44LTYuMS0xNC40LTUtMjIuMy0yLjEtOS4zLTcuMy0xNS41LTEuNC0yMi42LjhDMjcxLjYuNiAyNjkgNS41IDI2My41IDcuNmMtMTIuMy0yLjYtMTYuMSAzLTIyIDguOWwtNi45LS4xYy0xOC42IDEwLjgtMjcuOCAzMi44LTMxLjEgNDQuMS0zLjMtMTEuMy0xMi41LTMzLjMtMzEuMS00NC4xbC02LjkuMWMtNS45LTUuOS05LjctMTEuNS0yMi04LjktNS42LTItOC4xLTctMTkuNC0zLjQtNC42LTEuNC04LjktNC40LTEzLjktNC4zLTIuNi4xLTUuNSAxLTguNyAzLjUtNy45LTMtMTUuNS00LTIyLjMgMi4xLTEwLjUtMS4zLTE0IDEuNC0xNi41IDQuNy0yLjMgMC0xNy4zLTIuMy0yNC4yIDcuOEMyMS4yIDE2IDE1LjggMjggMjIgMzkuMmMtMy41IDUuNC03LjIgMTAuNyAxLjEgMjAuOS0yLjkgNS43LTEuMSAxMS45IDUuOCAxOS40LTEuOCA4IDEuOCAxMy43IDguMSAxOC4xLTEuMiAxMSAxMC4yIDE3LjQgMTMuNiAxOS43IDEuMyA2LjQgNCAxMi40IDE3LjEgMTUuOCAyLjIgOS41IDEwIDExLjIgMTcuNiAxMy4yLTI1LjEgMTQuNC00Ni42IDMzLjMtNDYuNSA3OS43bC0zLjcgNi41Yy0yOC44IDE3LjItNTQuNyA3Mi43LTE0LjIgMTE3LjcgMi42IDE0LjEgNy4xIDI0LjIgMTEgMzUuNCA1LjkgNDUuMiA0NC41IDY2LjMgNTQuNiA2OC44IDE0LjkgMTEuMiAzMC44IDIxLjggNTIuMiAyOS4yQzE1OSA1MDQuMiAxODEgNTEyIDIwMyA1MTJoMWMyMi4xIDAgNDQtNy44IDY0LjItMjguNCAyMS41LTcuNCAzNy4zLTE4IDUyLjItMjkuMiAxMC4yLTIuNSA0OC43LTIzLjYgNTQuNi02OC44IDMuOS0xMS4yIDguNC0yMS4zIDExLTM1LjQgNDAuNi00NS4xIDE0LjctMTAwLjUtMTQtMTE3Ljd6bS0yMi4yLThjLTEuNSAxOC43LTk4LjktNjUuMS04Mi4xLTY3LjkgNDUuNy03LjUgODMuNiAxOS4yIDgyLjEgNjcuOXptLTQzIDkzLjFjLTI0LjUgMTUuOC01OS44IDUuNi03OC44LTIyLjhzLTE0LjYtNjQuMiA5LjktODBjMjQuNS0xNS44IDU5LjgtNS42IDc4LjggMjIuOHMxNC42IDY0LjItOS45IDgwek0yMzguOSAyOS4zYy44IDQuMiAxLjggNi44IDIuOSA3LjYgNS40LTUuOCA5LjgtMTEuNyAxNi44LTE3LjMgMCAzLjMtMS43IDYuOCAyLjUgOS40IDMuNy01IDguOC05LjUgMTUuNS0xMy4zLTMuMiA1LjYtLjYgNy4zIDEuMiA5LjYgNS4xLTQuNCAxMC04LjggMTkuNC0xMi4zLTIuNiAzLjEtNi4yIDYuMi0yLjQgOS44IDUuMy0zLjMgMTAuNi02LjYgMjMuMS04LjktMi44IDMuMS04LjcgNi4zLTUuMSA5LjQgNi42LTIuNSAxNC00LjQgMjIuMS01LjQtMy45IDMuMi03LjEgNi4zLTMuOSA4LjggNy4xLTIuMiAxNi45LTUuMSAyNi40LTIuNmwtNiA2LjFjLS43LjggMTQuMS42IDIzLjkuOC0zLjYgNS03LjIgOS43LTkuMyAxOC4yIDEgMSA1LjguNCAxMC40IDAtNC43IDkuOS0xMi44IDEyLjMtMTQuNyAxNi42IDIuOSAyLjIgNi44IDEuNiAxMS4yLjEtMy40IDYuOS0xMC40IDExLjctMTYgMTcuMyAxLjQgMSAzLjkgMS42IDkuNy45LTUuMiA1LjUtMTEuNCAxMC41LTE4LjggMTUgMS4zIDEuNSA1LjggMS41IDEwIDEuNi02LjcgNi41LTE1LjMgOS45LTIzLjQgMTQuMiA0IDIuNyA2LjkgMi4xIDEwIDIuMS01LjcgNC43LTE1LjQgNy4xLTI0LjQgMTAgMS43IDIuNyAzLjQgMy40IDcuMSA0LjEtOS41IDUuMy0yMy4yIDIuOS0yNyA1LjYuOSAyLjcgMy42IDQuNCA2LjcgNS44LTE1LjQuOS01Ny4zLS42LTY1LjQtMzIuMyAxNS43LTE3LjMgNDQuNC0zNy41IDkzLjctNjIuNi0zOC40IDEyLjgtNzMgMzAtMTAyIDUzLjUtMzQuMy0xNS45LTEwLjgtNTUuOSA1LjgtNzEuOHptLTM0LjQgMTE0LjZjMjQuMi0uMyA1NC4xIDE3LjggNTQgMzQuNy0uMSAxNS0yMSAyNy4xLTUzLjggMjYuOS0zMi4xLS40LTUzLjctMTUuMi01My42LTI5LjggMC0xMS45IDI2LjItMzIuNSA1My40LTMxLjh6bS0xMjMtMTIuOGMzLjctLjcgNS40LTEuNSA3LjEtNC4xLTktMi44LTE4LjctNS4zLTI0LjQtMTAgMy4xIDAgNiAuNyAxMC0yLjEtOC4xLTQuMy0xNi43LTcuNy0yMy40LTE0LjIgNC4yLS4xIDguNyAwIDEwLTEuNi03LjQtNC41LTEzLjYtOS41LTE4LjgtMTUgNS44LjcgOC4zLjEgOS43LS45LTUuNi01LjYtMTIuNy0xMC40LTE2LTE3LjMgNC4zIDEuNSA4LjMgMiAxMS4yLS4xLTEuOS00LjItMTAtNi43LTE0LjctMTYuNiA0LjYuNCA5LjQgMSAxMC40IDAtMi4xLTguNS01LjgtMTMuMy05LjMtMTguMiA5LjgtLjEgMjQuNiAwIDIzLjktLjhsLTYtNi4xYzkuNS0yLjUgMTkuMy40IDI2LjQgMi42IDMuMi0yLjUtLjEtNS42LTMuOS04LjggOC4xIDEuMSAxNS40IDIuOSAyMi4xIDUuNCAzLjUtMy4xLTIuMy02LjMtNS4xLTkuNCAxMi41IDIuMyAxNy44IDUuNiAyMy4xIDguOSAzLjgtMy42LjItNi43LTIuNC05LjggOS40IDMuNCAxNC4zIDcuOSAxOS40IDEyLjMgMS43LTIuMyA0LjQtNCAxLjItOS42IDYuNyAzLjggMTEuOCA4LjMgMTUuNSAxMy4zIDQuMS0yLjYgMi41LTYuMiAyLjUtOS40IDcgNS42IDExLjQgMTEuNSAxNi44IDE3LjMgMS4xLS44IDItMy40IDIuOS03LjYgMTYuNiAxNS45IDQwLjEgNTUuOSA2IDcxLjgtMjktMjMuNS02My42LTQwLjctMTAyLTUzLjUgNDkuMyAyNSA3OCA0NS4zIDkzLjcgNjIuNi04IDMxLjgtNTAgMzMuMi02NS40IDMyLjMgMy4xLTEuNCA1LjgtMy4yIDYuNy01LjgtNC0yLjgtMTcuNi0uNC0yNy4yLTUuNnptNjAuMSAyNC4xYzE2LjggMi44LTgwLjYgODYuNS04Mi4xIDY3LjktMS41LTQ4LjcgMzYuNS03NS41IDgyLjEtNjcuOXpNMzguMiAzNDJjLTIzLjctMTguOC0zMS4zLTczLjcgMTIuNi05OC4zIDI2LjUtNyA5IDEwNy44LTEyLjYgOTguM3ptOTEgOTguMmMtMTMuMyA3LjktNDUuOCA0LjctNjguOC0yNy45LTE1LjUtMjcuNC0xMy41LTU1LjItMi42LTYzLjQgMTYuMy05LjggNDEuNSAzLjQgNjAuOSAyNS42IDE2LjkgMjAgMjQuNiA1NS4zIDEwLjUgNjUuN3ptLTI2LjQtMTE5LjdjLTI0LjUtMTUuOC0yOC45LTUxLjYtOS45LTgwczU0LjMtMzguNiA3OC44LTIyLjggMjguOSA1MS42IDkuOSA4MGMtMTkuMSAyOC40LTU0LjQgMzguNi03OC44IDIyLjh6TTIwNSA0OTZjLTI5LjQgMS4yLTU4LjItMjMuNy01Ny44LTMyLjMtLjQtMTIuNyAzNS44LTIyLjYgNTkuMy0yMiAyMy43LTEgNTUuNiA3LjUgNTUuNyAxOC45LjUgMTEtMjguOCAzNS45LTU3LjIgMzUuNHptNTguOS0xMjQuOWMuMiAyOS43LTI2LjIgNTMuOC01OC44IDU0LTMyLjYuMi01OS4yLTIzLjgtNTkuNC01My40di0uNmMtLjItMjkuNyAyNi4yLTUzLjggNTguOC01NCAzMi42LS4yIDU5LjIgMjMuOCA1OS40IDUzLjR2LjZ6bTgyLjIgNDIuN2MtMjUuMyAzNC42LTU5LjYgMzUuOS03Mi4zIDI2LjMtMTMuMy0xMi40LTMuMi01MC45IDE1LjEtNzIgMjAuOS0yMy4zIDQzLjMtMzguNSA1OC45LTI2LjYgMTAuNSAxMC4zIDE2LjcgNDkuMS0xLjcgNzIuM3ptMjIuOS03My4yYy0yMS41IDkuNC0zOS0xMDUuMy0xMi42LTk4LjMgNDMuOSAyNC43IDM2LjMgNzkuNiAxMi42IDk4LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJhdmVscnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk4LjI1MiwyMzQuMjIzYy0xLjIwOC0xMC4zNC0xLjctMjAuODI2LTMuNzQ2LTMxYTMxMC4zMDYsMzEwLjMwNiwwLDAsMC05LjYyMi0zNi42LDE4NC4wNjgsMTg0LjA2OCwwLDAsMC0zMC44NzQtNTcuNSwyNTEuMTU0LDI1MS4xNTQsMCwwLDAtMTguODE4LTIxLjY4OSwyMzcuMzYyLDIzNy4zNjIsMCwwLDAtNDcuMTEzLTM2LjExNkEyNDAuOCwyNDAuOCwwLDAsMCwzMzEuMzU2LDI2LjY1Yy0xMS4wMTgtMy4xLTIyLjI3Mi01LjQzMS0zMy41MTUtNy42MTUtNi43OC0xLjMxNC0xMy43NDktMS42NjctMjAuNjI3LTIuNDgyLS4zMTYtLjAzNi0uNi0uMzU4LS45LS41NTNxLTE2LjE0My4wMDktMzIuMjg4LjAwNmMtMi40MS4zODktNC44MDguOTI1LTcuMjM2LDEuMTVhMTc5LjMzMSwxNzkuMzMxLDAsMCwwLTM0LjI1Niw3LjEsMjIxLjUsMjIxLjUsMCwwLDAtMzkuNzY4LDE2LjM1NSwyODEuMzg1LDI4MS4zODUsMCwwLDAtMzguMDgsMjQuMTU4Yy02LjE2Nyw0LjYxLTEyLjI2OCw5LjM2LTE3Ljk3NCwxNC41MThDOTYuNTM5LDg4LjQ5NCw4Ni4zNCw5Ny43Miw3Ni43ODUsMTA3LjU1NWEyNDMuODc4LDI0My44NzgsMCwwLDAtMzMuNjQ4LDQzLjk1LDIwNi40ODgsMjA2LjQ4OCwwLDAsMC0yMC40OTQsNDQuNiwxOTguMiwxOTguMiwwLDAsMC03LjY5MSwzNC43NTlBMjAxLjEzLDIwMS4xMywwLDAsMCwxMy40LDI2Ni4zODVhMjk5LjcxNiwyOTkuNzE2LDAsMCwwLDQuNDI1LDQwLjI0LDIyNi44NjUsMjI2Ljg2NSwwLDAsMCwxNi43Myw1My4zLDIxMC41NDMsMjEwLjU0MywwLDAsMCwyNCwzOS41MjgsMjEzLjU4OSwyMTMuNTg5LDAsMCwwLDI2LjM1OCwyOC40MTZBMjUxLjMxMywyNTEuMzEzLDAsMCwwLDEyNi43LDQ1OC40NTVhMjg3LjgzMSwyODcuODMxLDAsMCwwLDU1LjksMjUuMjc3LDI2OS41LDI2OS41LDAsMCwwLDQwLjY0MSw5LjgzNWM2LjA3MSwxLjAxLDEyLjI3NSwxLjI1MywxOC40MTIsMS44NzNhNC4xNDksNC4xNDksMCwwLDEsMS4xOS41NmgzMi4yODljMi41MDctLjM4OSw1LS45MzcsNy41MjctMS4xNDMsMTYuMzM2LTEuMzMyLDMyLjEwNy01LjMzNSw0Ny40ODktMTAuNzE3QTIxOS45OTIsMjE5Ljk5MiwwLDAsMCwzNzkuMSw0NjAuMzIyYzkuNzQ5LTYuNDQ3LDE5LjM5NS0xMy4wNzcsMjguNzM3LTIwLjEsNS43ODUtNC4zNDgsMTAuOTg4LTkuNSwxNi4zLTE0LjQ1NywzLjk2NC0zLjcsNy43NjQtNy41NzgsMTEuNTEtMTEuNWEyMzIuMTYyLDIzMi4xNjIsMCwwLDAsMzEuNDI3LTQxLjYzOWM5LjU0Mi0xNi4wNDUsMTcuMzU1LTMyLjkwNSwyMi4zLTUwLjkyNiwyLjg1OS0xMC40MTMsNC45NDctMjEuMDQ1LDcuMDE3LTMxLjY1MiwxLjAzMi01LjI3OSwxLjI1MS0xMC43MjMsMS44Ny0xNi4wODcuMDM2LS4zMTcuMzU4LS42LjU1Mi0uOVYyMzYuMDA1QTkuNzU3LDkuNzU3LDAsMCwxLDQ5OC4yNTIsMjM0LjIyM1ptLTE2MS4xMTctMS4xNXMtMTYuNTcyLTIuOTgtMjguNDctMi45OGMtMjcuMiwwLTMzLjU3LDE0LjktMzMuNTcsMzcuMDRWMzYwLjhIMjAxLjU4MlYxNzAuMDYySDI3NS4xdjMxLjkzMWM4LjkyNC0yNi44MjIsMjYuNzcxLTM2LjE4OSw2Mi4wNC0zNi4xODlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlYWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxOC4yIDE3Ny4yYy01LjQtMS44LTEwLjgtMy41LTE2LjItNS4xLjktMy43IDEuNy03LjQgMi41LTExLjEgMTIuMy01OS42IDQuMi0xMDcuNS0yMy4xLTEyMy4zLTI2LjMtMTUuMS02OS4yLjYtMTEyLjYgMzguNC00LjMgMy43LTguNSA3LjYtMTIuNSAxMS41LTIuNy0yLjYtNS41LTUuMi04LjMtNy43LTQ1LjUtNDAuNC05MS4xLTU3LjQtMTE4LjQtNDEuNS0yNi4yIDE1LjItMzQgNjAuMy0yMyAxMTYuNyAxLjEgNS42IDIuMyAxMS4xIDMuNyAxNi43LTYuNCAxLjgtMTIuNyAzLjgtMTguNiA1LjlDMzguMyAxOTYuMiAwIDIyNS40IDAgMjU1LjZjMCAzMS4yIDQwLjggNjIuNSA5Ni4zIDgxLjUgNC41IDEuNSA5IDMgMTMuNiA0LjMtMS41IDYtMi44IDExLjktNCAxOC0xMC41IDU1LjUtMi4zIDk5LjUgMjMuOSAxMTQuNiAyNyAxNS42IDcyLjQtLjQgMTE2LjYtMzkuMSAzLjUtMy4xIDctNi4zIDEwLjUtOS43IDQuNCA0LjMgOSA4LjQgMTMuNiAxMi40IDQyLjggMzYuOCA4NS4xIDUxLjcgMTExLjIgMzYuNiAyNy0xNS42IDM1LjgtNjIuOSAyNC40LTEyMC41LS45LTQuNC0xLjktOC45LTMtMTMuNSAzLjItLjkgNi4zLTEuOSA5LjQtMi45IDU3LjctMTkuMSA5OS41LTUwIDk5LjUtODEuNyAwLTMwLjMtMzkuNC01OS43LTkzLjgtNzguNHpNMjgyLjkgOTIuM2MzNy4yLTMyLjQgNzEuOS00NS4xIDg3LjctMzYgMTYuOSA5LjcgMjMuNCA0OC45IDEyLjggMTAwLjQtLjcgMy40LTEuNCA2LjctMi4zIDEwLTIyLjItNS00NC43LTguNi02Ny4zLTEwLjYtMTMtMTguNi0yNy4yLTM2LjQtNDIuNi01My4xIDMuOS0zLjcgNy43LTcuMiAxMS43LTEwLjd6TTE2Ny4yIDMwNy41YzUuMSA4LjcgMTAuMyAxNy40IDE1LjggMjUuOS0xNS42LTEuNy0zMS4xLTQuMi00Ni40LTcuNSA0LjQtMTQuNCA5LjktMjkuMyAxNi4zLTQ0LjUgNC42IDguOCA5LjMgMTcuNSAxNC4zIDI2LjF6bS0zMC4zLTEyMC4zYzE0LjQtMy4yIDI5LjctNS44IDQ1LjYtNy44LTUuMyA4LjMtMTAuNSAxNi44LTE1LjQgMjUuNC00LjkgOC41LTkuNyAxNy4yLTE0LjIgMjYtNi4zLTE0LjktMTEuNi0yOS41LTE2LTQzLjZ6bTI3LjQgNjguOWM2LjYtMTMuOCAxMy44LTI3LjMgMjEuNC00MC42czE1LjgtMjYuMiAyNC40LTM4LjljMTUtMS4xIDMwLjMtMS43IDQ1LjktMS43czMxIC42IDQ1LjkgMS43YzguNSAxMi42IDE2LjYgMjUuNSAyNC4zIDM4LjdzMTQuOSAyNi43IDIxLjcgNDAuNGMtNi43IDEzLjgtMTMuOSAyNy40LTIxLjYgNDAuOC03LjYgMTMuMy0xNS43IDI2LjItMjQuMiAzOS0xNC45IDEuMS0zMC40IDEuNi00Ni4xIDEuNnMtMzAuOS0uNS00NS42LTEuNGMtOC43LTEyLjctMTYuOS0yNS43LTI0LjYtMzlzLTE0LjgtMjYuOC0yMS41LTQwLjZ6bTE4MC42IDUxLjJjNS4xLTguOCA5LjktMTcuNyAxNC42LTI2LjcgNi40IDE0LjUgMTIgMjkuMiAxNi45IDQ0LjMtMTUuNSAzLjUtMzEuMiA2LjItNDcgOCA1LjQtOC40IDEwLjUtMTcgMTUuNS0yNS42em0xNC40LTc2LjVjLTQuNy04LjgtOS41LTE3LjYtMTQuNS0yNi4yLTQuOS04LjUtMTAtMTYuOS0xNS4zLTI1LjIgMTYuMSAyIDMxLjUgNC43IDQ1LjkgOC00LjYgMTQuOC0xMCAyOS4yLTE2LjEgNDMuNHpNMjU2LjIgMTE4LjNjMTAuNSAxMS40IDIwLjQgMjMuNCAyOS42IDM1LjgtMTkuOC0uOS0zOS43LS45LTU5LjUgMCA5LjgtMTIuOSAxOS45LTI0LjkgMjkuOS0zNS44ek0xNDAuMiA1N2MxNi44LTkuOCA1NC4xIDQuMiA5My40IDM5IDIuNSAyLjIgNSA0LjYgNy42IDctMTUuNSAxNi43LTI5LjggMzQuNS00Mi45IDUzLjEtMjIuNiAyLTQ1IDUuNS02Ny4yIDEwLjQtMS4zLTUuMS0yLjQtMTAuMy0zLjUtMTUuNS05LjQtNDguNC0zLjItODQuOSAxMi42LTk0em0tMjQuNSAyNjMuNmMtNC4yLTEuMi04LjMtMi41LTEyLjQtMy45LTIxLjMtNi43LTQ1LjUtMTcuMy02My0zMS4yLTEwLjEtNy0xNi45LTE3LjgtMTguOC0yOS45IDAtMTguMyAzMS42LTQxLjcgNzcuMi01Ny42IDUuNy0yIDExLjUtMy44IDE3LjMtNS41IDYuOCAyMS43IDE1IDQzIDI0LjUgNjMuNi05LjYgMjAuOS0xNy45IDQyLjUtMjQuOCA2NC41em0xMTYuNiA5OGMtMTYuNSAxNS4xLTM1LjYgMjcuMS01Ni40IDM1LjMtMTEuMSA1LjMtMjMuOSA1LjgtMzUuMyAxLjMtMTUuOS05LjItMjIuNS00NC41LTEzLjUtOTIgMS4xLTUuNiAyLjMtMTEuMiAzLjctMTYuNyAyMi40IDQuOCA0NSA4LjEgNjcuOSA5LjggMTMuMiAxOC43IDI3LjcgMzYuNiA0My4yIDUzLjQtMy4yIDMuMS02LjQgNi4xLTkuNiA4Ljl6bTI0LjUtMjQuM2MtMTAuMi0xMS0yMC40LTIzLjItMzAuMy0zNi4zIDkuNi40IDE5LjUuNiAyOS41LjYgMTAuMyAwIDIwLjQtLjIgMzAuNC0uNy05LjIgMTIuNy0xOS4xIDI0LjgtMjkuNiAzNi40em0xMzAuNyAzMGMtLjkgMTIuMi02LjkgMjMuNi0xNi41IDMxLjMtMTUuOSA5LjItNDkuOC0yLjgtODYuNC0zNC4yLTQuMi0zLjYtOC40LTcuNS0xMi43LTExLjUgMTUuMy0xNi45IDI5LjQtMzQuOCA0Mi4yLTUzLjYgMjIuOS0xLjkgNDUuNy01LjQgNjguMi0xMC41IDEgNC4xIDEuOSA4LjIgMi43IDEyLjIgNC45IDIxLjYgNS43IDQ0LjEgMi41IDY2LjN6bTE4LjItMTA3LjVjLTIuOC45LTUuNiAxLjgtOC41IDIuNi03LTIxLjgtMTUuNi00My4xLTI1LjUtNjMuOCA5LjYtMjAuNCAxNy43LTQxLjQgMjQuNS02Mi45IDUuMiAxLjUgMTAuMiAzLjEgMTUgNC43IDQ2LjYgMTYgNzkuMyAzOS44IDc5LjMgNTggMCAxOS42LTM0LjkgNDQuOS04NC44IDYxLjR6bS0xNDkuNy0xNWMyNS4zIDAgNDUuOC0yMC41IDQ1LjgtNDUuOHMtMjAuNS00NS44LTQ1LjgtNDUuOGMtMjUuMyAwLTQ1LjggMjAuNS00NS44IDQ1LjhzMjAuNSA0NS44IDQ1LjggNDUuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVhY3RldXJvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjUwLjYgMjExLjc0bDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjMtNy4xLS4xLTIuMy02LjgtMi4zIDYuOC03LjIuMSA1LjcgNC4zem02My43IDBsNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuMy03LjItLjEtMi4zLTYuOC0yLjMgNi44LTcuMi4xIDUuNyA0LjN6bS05MS4zIDUwLjVoLTMuNGMtNC44IDAtMy44IDQtMy44IDEyLjEgMCA0LjctMi4zIDYuMS01LjggNi4xcy01LjgtMS40LTUuOC02LjF2LTM2LjZjMC00LjcgMi4zLTYuMSA1LjgtNi4xczUuOCAxLjQgNS44IDYuMWMwIDcuMi0uNyAxMC41IDMuOCAxMC41aDMuNGM0LjctLjEgMy44LTMuOSAzLjgtMTIuMyAwLTkuOS02LjctMTQuMS0xNi44LTE0LjFoLS4yYy0xMC4xIDAtMTYuOCA0LjItMTYuOCAxNC4xVjI3NmMwIDEwLjQgNi43IDE0LjEgMTYuOCAxNC4xaC4yYzEwLjEgMCAxNi44LTMuOCAxNi44LTE0LjEgMC05Ljg2IDEuMS0xMy43Ni0zLjgtMTMuNzZ6bS04MC43IDE3LjRoLTE0Ljd2LTE5LjNIMTM5YzIuNSAwIDMuOC0xLjMgMy44LTMuOHYtMi4xYzAtMi41LTEuMy0zLjgtMy44LTMuOGgtMTEuNHYtMTguM0gxNDJjMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44aC0yMS43Yy0yLjQtLjEtMy43IDEuMy0zLjcgMy44djU5LjFjMCAyLjUgMS4zIDMuOCAzLjggMy44aDIxLjljMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44em0tNDItMTguNWM0LjYtMiA3LjMtNiA3LjMtMTIuNHYtMTEuOWMwLTEwLjEtNi43LTE0LjEtMTYuOC0xNC4xSDc3LjRjLTIuNSAwLTMuOCAxLjMtMy44IDMuOHY1OS4xYzAgMi41IDEuMyAzLjggMy44IDMuOGgzLjRjMi41IDAgMy44LTEuMyAzLjgtMy44di0yMi45aDUuNmw3LjQgMjMuNWE0LjEgNC4xIDAgMCAwIDQuMyAzLjJoMy4zYzIuOCAwIDQtMS44IDMuMi00LjR6bS0zLjgtMTRjMCA0LjgtMi41IDYuMS02LjEgNi4xaC01Ljh2LTIwLjloNS44YzMuNiAwIDYuMSAxLjMgNi4xIDYuMXpNMTc2IDIyNmEzLjgyIDMuODIgMCAwIDAtNC4yLTMuNGgtNi45YTMuNjggMy42OCAwIDAgMC00IDMuNGwtMTEgNTkuMmMtLjUgMi43LjkgNC4xIDMuNCA0LjFoM2EzLjc0IDMuNzQgMCAwIDAgNC4xLTMuNWwxLjgtMTEuM2gxMi4ybDEuOCAxMS4zYTMuNzQgMy43NCAwIDAgMCA0LjEgMy41aDMuNWMyLjYgMCAzLjktMS40IDMuNC00LjF6bS0xMi4zIDM5LjNsNC43LTI5LjcgNC43IDI5Ljd6bTg5LjMgMjAuMnYtNTMuMmg3LjVjMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44aC0yNS44Yy0yLjUgMC0zLjggMS4zLTMuOCAzLjh2Mi4xYzAgMi41IDEuMyAzLjggMy44IDMuOGg3LjN2NTMuMmMwIDIuNSAxLjMgMy44IDMuOCAzLjhoMy40YzIuNS4wNCAzLjgtMS4zIDMuOC0zLjc2em0yNDgtLjhoLTE5LjRWMjU4aDE2LjFhMS44OSAxLjg5IDAgMCAwIDItMnYtLjhhMS44OSAxLjg5IDAgMCAwLTItMmgtMTYuMXYtMjUuOGgxOS4xYTEuODkgMS44OSAwIDAgMCAyLTJ2LS44YTEuNzcgMS43NyAwIDAgMC0yLTEuOWgtMjIuMmExLjYyIDEuNjIgMCAwIDAtMiAxLjh2NjNhMS44MSAxLjgxIDAgMCAwIDIgMS45SDUwMWExLjgxIDEuODEgMCAwIDAgMi0xLjl2LS44YTEuODQgMS44NCAwIDAgMC0yLTEuOTZ6bS05My4xLTYyLjloLS44Yy0xMC4xIDAtMTUuMyA0LjctMTUuMyAxNC4xVjI3NmMwIDkuMyA1LjIgMTQuMSAxNS4zIDE0LjFoLjhjMTAuMSAwIDE1LjMtNC44IDE1LjMtMTQuMXYtNDAuMWMwLTkuMzYtNS4yLTE0LjA2LTE1LjMtMTQuMDZ6bTEwLjIgNTIuNGMtLjEgOC0zIDExLjEtMTAuNSAxMS4xcy0xMC41LTMuMS0xMC41LTExLjF2LTM2LjZjMC03LjkgMy0xMS4xIDEwLjUtMTEuMXMxMC41IDMuMiAxMC41IDExLjF6bS00Ni41LTE0LjVjNi4xLTEuNiA5LjItNi4xIDkuMi0xMy4zdi05LjdjMC05LjQtNS4yLTE0LjEtMTUuMy0xNC4xaC0xMy43YTEuODEgMS44MSAwIDAgMC0yIDEuOXY2M2ExLjgxIDEuODEgMCAwIDAgMiAxLjloMS4yYTEuNzQgMS43NCAwIDAgMCAxLjktMS45di0yNi45aDExLjZsMTAuNCAyNy4yYTIuMzIgMi4zMiAwIDAgMCAyLjMgMS41aDEuNWMxLjQgMCAyLTEgMS41LTIuM3ptLTYuNC0zLjlIMzU1di0yOC41aDEwLjJjNy41IDAgMTAuNSAzLjEgMTAuNSAxMS4xdjYuNGMwIDcuODQtMyAxMS4wNC0xMC41IDExLjA0em04NS45LTMzLjFoLTEzLjdhMS42MiAxLjYyIDAgMCAwLTIgMS44djYzYTEuODEgMS44MSAwIDAgMCAyIDEuOWgxLjJhMS43NCAxLjc0IDAgMCAwIDEuOS0xLjl2LTI2LjFoMTAuNmMxMC4xIDAgMTUuMy00LjggMTUuMy0xNC4xdi0xMC41YzAtOS40LTUuMi0xNC4xLTE1LjMtMTQuMXptMTAuMiAyMi44YzAgNy45LTMgMTEuMS0xMC41IDExLjFoLTEwLjJ2LTI5LjJoMTAuMmM3LjUtLjEgMTAuNSAzLjEgMTAuNSAxMXpNMjU5LjUgMzA4bC0yLjMtNi44LTIuMyA2LjgtNy4xLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjN6bTIyNy42LTEzNi4xYTM2NC40MiAzNjQuNDIgMCAwIDAtMzUuNi0xMS4zYzE5LjYtNzggMTEuNi0xMzQuNy0yMi4zLTE1My45QzM5NC43LTEyLjY2IDM0My4zIDExIDI5MSA2MS45NHE1LjEgNC45NSAxMC4yIDEwLjJjODIuNS04MCAxMTkuNi01My41IDEyMC45LTUyLjggMjIuNCAxMi43IDM2IDU1LjggMTUuNSAxMzcuOGE1ODcuODMgNTg3LjgzIDAgMCAwLTg0LjYtMTNDMjgxLjEgNDMuNjQgMjEyLjQgMiAxNzAuOCAyIDE0MCAyIDEyNyAyMyAxMjMuMiAyOS43NGMtMTguMSAzMi0xMy4zIDg0LjIuMSAxMzMuOC03MC41IDIwLjMtMTIwLjcgNTQuMS0xMjAuMyA5NSAuNSA1OS42IDEwMy4yIDg3LjggMTIyLjEgOTIuOC0yMC41IDgxLjktMTAuMSAxMzUuNiAyMi4zIDE1My45IDI4IDE1LjggNzUuMSA2IDEzOC4yLTU1LjJxLTUuMS00Ljk1LTEwLjItMTAuMmMtODIuNSA4MC0xMTkuNyA1My41LTEyMC45IDUyLjgtMjIuMy0xMi42LTM2LTU1LjYtMTUuNS0xMzcuOSAxMi40IDIuOSA0MS44IDkuNSA4NC42IDEzIDcxLjkgMTAwLjQgMTQwLjYgMTQyIDE4Mi4xIDE0MiAzMC44IDAgNDMuOC0yMSA0Ny42LTI3LjcgMTgtMzEuOSAxMy4zLTg0LjEtLjEtMTMzLjggMTUyLjMtNDMuOCAxNTYuMi0xMzAuMiAzMy45LTE3Ni4zek0xMzUuOSAzNi44NGMyLjktNS4xIDExLjktMjAuMyAzNC45LTIwLjMgMzYuOCAwIDk4LjggMzkuNiAxNjMuMyAxMjYuMmE3MTQgNzE0IDAgMCAwLTkzLjkuOSA1NDcuNzYgNTQ3Ljc2IDAgMCAxIDQyLjItNTIuNFEyNzcuMyA4NiAyNzIuMiA4MWE1OTguMjUgNTk4LjI1IDAgMCAwLTUwLjcgNjQuMiA1NjkuNjkgNTY5LjY5IDAgMCAwLTg0LjQgMTQuNmMtLjItMS40LTI0LjMtODIuMi0xLjItMTIzem0zMDQuOCA0MzguM2MtMi45IDUuMS0xMS44IDIwLjMtMzQuOSAyMC4zLTM2LjcgMC05OC43LTM5LjQtMTYzLjMtMTI2LjJhNjk1LjM4IDY5NS4zOCAwIDAgMCA5My45LS45IDU0Ny43NiA1NDcuNzYgMCAwIDEtNDIuMiA1Mi40cTUuMSA1LjI1IDEwLjIgMTAuMmE1ODguNDcgNTg4LjQ3IDAgMCAwIDUwLjctNjQuMmM0Ny4zLTQuNyA4MC4zLTEzLjUgODQuNC0xNC42IDIyLjcgODQuNCA0LjUgMTE3IDEuMiAxMjN6bTkuMS0xMzguNmMtMy42LTExLjktNy43LTI0LjEtMTIuNC0zNi40YTEyLjY3IDEyLjY3IDAgMCAxLTEwLjctNS43bC0uMS4xYTE5LjYxIDE5LjYxIDAgMCAxLTUuNCAzLjZjNS43IDE0LjMgMTAuNiAyOC40IDE0LjcgNDIuMmE1MzUuMyA1MzUuMyAwIDAgMS03MiAxM2MzLjUtNS4zIDE3LjItMjYuMiAzMi4yLTU0LjJhMjQuNiAyNC42IDAgMCAxLTYtMy4yYy0xLjEgMS4yLTMuNiA0LjItMTAuOSA0LjItNi4yIDExLjItMTcuNCAzMC45LTMzLjkgNTUuMmE3MTEuOTEgNzExLjkxIDAgMCAxLTExMi40IDFjLTcuOS0xMS4yLTIxLjUtMzEuMS0zNi44LTU3LjhhMjEgMjEgMCAwIDEtMy0xLjVjLTEuOSAxLjYtMy45IDMuMi0xMi42IDMuMiA2LjMgMTEuMiAxNy41IDMwLjcgMzMuOCA1NC42YTU0OC44MSA1NDguODEgMCAwIDEtNzIuMi0xMS43cTUuODUtMjEgMTQuMS00Mi45Yy0zLjIgMC01LjQuMi04LjQtMWExNy41OCAxNy41OCAwIDAgMS02LjkgMWMtNC45IDEzLjQtOS4xIDI2LjUtMTIuNyAzOS40Qy0zMS43IDI5Ny0xMi4xIDIxNiAxMjYuNyAxNzUuNjRjMy42IDExLjkgNy43IDI0LjEgMTIuNCAzNi40IDEwLjQgMCAxMi45IDMuNCAxNC40IDUuM2ExMiAxMiAwIDAgMSAyLjMtMi4yYy01LjgtMTQuNy0xMC45LTI5LjItMTUuMi00My4zIDctMS44IDMyLjQtOC40IDcyLTEzLTE1LjkgMjQuMy0yNi43IDQzLjktMzIuOCA1NS4zYTE0LjIyIDE0LjIyIDAgMCAxIDYuNCA4IDIzLjQyIDIzLjQyIDAgMCAxIDEwLjItOC40YzYuNS0xMS43IDE3LjktMzEuOSAzNC44LTU2LjlhNzExLjcyIDcxMS43MiAwIDAgMSAxMTIuNC0xYzMxLjUgNDQuNiAyOC45IDQ4LjEgNDIuNSA2NC41YTIxLjQyIDIxLjQyIDAgMCAxIDEwLjQtNy40Yy02LjQtMTEuNC0xNy42LTMxLTM0LjMtNTUuNSA0MC40IDQuMSA2NSAxMCA3Mi4yIDExLjctNCAxNC40LTguOSAyOS4yLTE0LjYgNDQuMmEyMC43NCAyMC43NCAwIDAgMSA2LjggNC4zbC4xLjFhMTIuNzIgMTIuNzIgMCAwIDEgOC45LTUuNmM0LjktMTMuNCA5LjItMjYuNiAxMi44LTM5LjVhMzU5LjcxIDM1OS43MSAwIDAgMSAzNC41IDExYzEwNi4xIDM5LjkgNzQgODcuOSA3Mi42IDkwLjQtMTkuOCAzNS4xLTgwLjEgNTUuMi0xMDUuNyA2Mi41em0tMTE0LjQtMTE0aC0xLjJhMS43NCAxLjc0IDAgMCAwLTEuOSAxLjl2NDkuOGMwIDcuOS0yLjYgMTEuMS0xMC4xIDExLjFzLTEwLjEtMy4xLTEwLjEtMTEuMXYtNDkuOGExLjY5IDEuNjkgMCAwIDAtMS45LTEuOUgzMDlhMS44MSAxLjgxIDAgMCAwLTIgMS45djUxLjVjMCA5LjYgNSAxNC4xIDE1LjEgMTQuMWguNGMxMC4xIDAgMTUuMS00LjYgMTUuMS0xNC4xdi01MS41YTIgMiAwIDAgMC0yLjItMS45ek0zMjEuNyAzMDhsLTIuMy02LjgtMi4zIDYuOC03LjEuMSA1LjcgNC4zLTIuMSA2LjggNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuM3ptLTMxLjEgNy40bC0yLjMtNi44LTIuMyA2LjgtNy4xLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjN6bTUuMS0zMC44aC0xOS40di0yNi43aDE2LjFhMS44OSAxLjg5IDAgMCAwIDItMnYtLjhhMS44OSAxLjg5IDAgMCAwLTItMmgtMTYuMXYtMjUuOGgxOS4xYTEuODkgMS44OSAwIDAgMCAyLTJ2LS44YTEuNzcgMS43NyAwIDAgMC0yLTEuOWgtMjIuMmExLjgxIDEuODEgMCAwIDAtMiAxLjl2NjNhMS44MSAxLjgxIDAgMCAwIDIgMS45aDIyLjVhMS43NyAxLjc3IDAgMCAwIDItMS45di0uOGExLjgzIDEuODMgMCAwIDAtMi0yLjA2em0tNy40LTk5LjRMMjg2IDE5MmwtNy4xLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjMtNy4xLS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWFkbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4LjMgNDYuNUgzODguNWMtNDguMSAwLTg5LjkgMzMuMy0xMDAuNCA4MC4zLTEwLjYtNDctNTIuMy04MC4zLTEwMC40LTgwLjNINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djI0NS44YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDg5LjdjMTAyLjIgMCAxMzIuNyAyNC40IDE0Ny4zIDc1IC43IDIuOCA1LjIgMi44IDYgMCAxNC43LTUwLjYgNDUuMi03NSAxNDcuMy03NUg1MjhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWOTQuNmMwLTI2LjQtMjEuMy00Ny45LTQ3LjctNDguMXpNMjQyIDMxMS45YzAgMS45LTEuNSAzLjUtMy41IDMuNUg3OC4yYy0xLjkgMC0zLjUtMS41LTMuNS0zLjVWMjg5YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjV2MjIuOXptMC02MC45YzAgMS45LTEuNSAzLjUtMy41IDMuNUg3OC4yYy0xLjkgMC0zLjUtMS41LTMuNS0zLjV2LTIyLjljMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNVYyNTF6bTAtNjAuOWMwIDEuOS0xLjUgMy41LTMuNSAzLjVINzguMmMtMS45IDAtMy41LTEuNS0zLjUtMy41di0yMi45YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjV2MjIuOXptMjU5LjMgMTIxLjdjMCAxLjktMS41IDMuNS0zLjUgMy41SDMzNy41Yy0xLjkgMC0zLjUtMS41LTMuNS0zLjV2LTIyLjljMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNXYyMi45em0wLTYwLjljMCAxLjktMS41IDMuNS0zLjUgMy41SDMzNy41Yy0xLjkgMC0zLjUtMS41LTMuNS0zLjVWMjI4YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjV2MjIuOXptMC02MC45YzAgMS45LTEuNSAzLjUtMy41IDMuNUgzMzcuNWMtMS45IDAtMy41LTEuNS0zLjUtMy41di0yMi44YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjVWMTkwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWJlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYuNSA1MDRDMTE3LjIgNTA0IDkgMzg3LjggMTMuMiAyNDkuOSAxNiAxNzAuNyA1Ni40IDk3LjcgMTI5LjcgNDkuNWMuMyAwIDEuOS0uNiAxLjEuOC01LjggNS41LTExMS4zIDEyOS44LTE0LjEgMjI2LjQgNDkuOCA0OS41IDkwIDIuNSA5MCAyLjUgMzguNS01MC4xLS42LTEyNS45LS42LTEyNS45LTEwLTI0LjktNDUuNy00MC4xLTQ1LjctNDAuMWwyOC44LTMxLjhjMjQuNCAxMC41IDQzLjIgMzguNyA0My4yIDM4LjcuOC0yOS42LTIxLjktNjEuNC0yMS45LTYxLjRMMjU1LjEgOGw0NC4zIDUwLjFjLTIwLjUgMjguOC0yMS45IDYyLjYtMjEuOSA2Mi42IDEzLjgtMjMgNDMuNS0zOS4zIDQzLjUtMzkuM2wyOC41IDMxLjhjLTI3LjQgOC45LTQ1LjQgMzkuOS00NS40IDM5LjktMTUuOCAyOC41LTI3LjEgODkuNC42IDEyNy4zIDMyLjQgNDQuNiA4Ny43LTIuOCA4Ny43LTIuOCAxMDIuNy05MS45LTEwLjUtMjI1LTEwLjUtMjI1LTYuMS01LjUuOC0yLjguOC0yLjggNTAuMSAzNi41IDExNC42IDg0LjQgMTE2LjIgMjA0LjhDNTAwLjkgNDAwLjIgMzk5IDUwNCAyNTYuNSA1MDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZFJpdmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1My4yIDMySDk0LjhDNDIuNCAzMiAwIDc0LjQgMCAxMjYuOHYyNTguNEMwIDQzNy42IDQyLjQgNDgwIDk0LjggNDgwaDI1OC40YzUyLjQgMCA5NC44LTQyLjQgOTQuOC05NC44VjEyNi44YzAtNTIuNC00Mi40LTk0LjgtOTQuOC05NC44ek0xNDQuOSAyMDAuOXY1Ni4zYzAgMjctMjEuOSA0OC45LTQ4LjkgNDguOVYxNTEuOWMwLTEzLjIgMTAuNy0yMy45IDIzLjktMjMuOWgxNTQuMmMwIDI3LTIxLjkgNDguOS00OC45IDQ4LjloLTU2LjNjLTEyLjMtLjYtMjQuNiAxMS42LTI0IDI0em0xNzYuMyA3MmgtNTYuM2MtMTIuMy0uNi0yNC42IDExLjYtMjQgMjR2NTYuM2MwIDI3LTIxLjkgNDguOS00OC45IDQ4LjlWMjQ3LjljMC0xMy4yIDEwLjctMjMuOSAyMy45LTIzLjloMTU0LjJjMCAyNy0yMS45IDQ4LjktNDguOSA0OC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWRkaXRBbGllbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDAuMyAyMDMuNWMtMTUgMC0yOC4yIDYuMi0zNy45IDE1LjktMzUuNy0yNC43LTgzLjgtNDAuNi0xMzcuMS00Mi4zTDI5MyA1Mi4zbDg4LjIgMTkuOGMwIDIxLjYgMTcuNiAzOS4yIDM5LjIgMzkuMiAyMiAwIDM5LjctMTguMSAzOS43LTM5LjdzLTE3LjYtMzkuNy0zOS43LTM5LjdjLTE1LjQgMC0yOC43IDkuMy0zNS4zIDIybC05Ny40LTIxLjZjLTQuOS0xLjMtOS43IDIuMi0xMSA3LjFMMjQ2LjMgMTc3Yy01Mi45IDIuMi0xMDAuNSAxOC4xLTEzNi4zIDQyLjgtOS43LTEwLjEtMjMuNC0xNi4zLTM4LjQtMTYuMy01NS42IDAtNzMuOCA3NC42LTIyLjkgMTAwLjEtMS44IDcuOS0yLjYgMTYuMy0yLjYgMjQuNyAwIDgzLjggOTQuNCAxNTEuNyAyMTAuMyAxNTEuNyAxMTYuNCAwIDIxMC44LTY3LjkgMjEwLjgtMTUxLjcgMC04LjQtLjktMTcuMi0zLjEtMjUuMSA0OS45LTI1LjYgMzEuNS05OS43LTIzLjgtOTkuN3pNMTI5LjQgMzA4LjljMC0yMiAxNy42LTM5LjcgMzkuNy0zOS43IDIxLjYgMCAzOS4yIDE3LjYgMzkuMiAzOS43IDAgMjEuNi0xNy42IDM5LjItMzkuMiAzOS4yLTIyIC4xLTM5LjctMTcuNi0zOS43LTM5LjJ6bTIxNC4zIDkzLjVjLTM2LjQgMzYuNC0xMzkuMSAzNi40LTE3NS41IDAtNC0zLjUtNC05LjcgMC0xMy43IDMuNS0zLjUgOS43LTMuNSAxMy4yIDAgMjcuOCAyOC41IDEyMCAyOSAxNDkgMCAzLjUtMy41IDkuNy0zLjUgMTMuMiAwIDQuMSA0IDQuMSAxMC4yLjEgMTMuN3ptLS44LTU0LjJjLTIxLjYgMC0zOS4yLTE3LjYtMzkuMi0zOS4yIDAtMjIgMTcuNi0zOS43IDM5LjItMzkuNyAyMiAwIDM5LjcgMTcuNiAzOS43IDM5LjctLjEgMjEuNS0xNy43IDM5LjItMzkuNyAzOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWRkaXRTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjgzLjIgMzQ1LjVjMi43IDIuNyAyLjcgNi44IDAgOS4yLTI0LjUgMjQuNS05My44IDI0LjYtMTE4LjQgMC0yLjctMi40LTIuNy02LjUgMC05LjIgMi40LTIuNCA2LjUtMi40IDguOSAwIDE4LjcgMTkuMiA4MSAxOS42IDEwMC41IDAgMi40LTIuMyA2LjYtMi4zIDkgMHptLTkxLjMtNTMuOGMwLTE0LjktMTEuOS0yNi44LTI2LjUtMjYuOC0xNC45IDAtMjYuOCAxMS45LTI2LjggMjYuOCAwIDE0LjYgMTEuOSAyNi41IDI2LjggMjYuNSAxNC42IDAgMjYuNS0xMS45IDI2LjUtMjYuNXptOTAuNy0yNi44Yy0xNC42IDAtMjYuNSAxMS45LTI2LjUgMjYuOCAwIDE0LjYgMTEuOSAyNi41IDI2LjUgMjYuNSAxNC45IDAgMjYuOC0xMS45IDI2LjgtMjYuNSAwLTE0LjktMTEuOS0yNi44LTI2LjgtMjYuOHpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tOTkuNyAxNDAuNmMtMTAuMSAwLTE5IDQuMi0yNS42IDEwLjctMjQuMS0xNi43LTU2LjUtMjcuNC05Mi41LTI4LjZsMTguNy04NC4yIDU5LjUgMTMuNGMwIDE0LjYgMTEuOSAyNi41IDI2LjUgMjYuNSAxNC45IDAgMjYuOC0xMi4yIDI2LjgtMjYuOCAwLTE0LjYtMTEuOS0yNi44LTI2LjgtMjYuOC0xMC40IDAtMTkuMyA2LjItMjMuOCAxNC45bC02NS43LTE0LjZjLTMuMy0uOS02LjUgMS41LTcuNCA0LjhsLTIwLjUgOTIuOGMtMzUuNyAxLjUtNjcuOCAxMi4yLTkxLjkgMjguOS02LjUtNi44LTE1LjgtMTEtMjUuOS0xMS0zNy41IDAtNDkuOCA1MC40LTE1LjUgNjcuNS0xLjIgNS40LTEuOCAxMS0xLjggMTYuNyAwIDU2LjUgNjMuNyAxMDIuMyAxNDEuOSAxMDIuMyA3OC41IDAgMTQyLjItNDUuOCAxNDIuMi0xMDIuMyAwLTUuNy0uNi0xMS42LTIuMS0xNyAzMy42LTE3LjIgMjEuMi02Ny4yLTE2LjEtNjcuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMS41IDMwNS41Yy0xMy44IDAtMjQuOS0xMS4xLTI0LjktMjQuNiAwLTEzLjggMTEuMS0yNC45IDI0LjktMjQuOSAxMy42IDAgMjQuNiAxMS4xIDI0LjYgMjQuOSAwIDEzLjYtMTEuMSAyNC42LTI0LjYgMjQuNnpNNTA0IDI1NmMwIDEzNy0xMTEgMjQ4LTI0OCAyNDhTOCAzOTMgOCAyNTYgMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4em0tMTMyLjMtNDEuMmMtOS40IDAtMTcuNyAzLjktMjMuOCAxMC0yMi40LTE1LjUtNTIuNi0yNS41LTg2LjEtMjYuNmwxNy40LTc4LjMgNTUuNCAxMi41YzAgMTMuNiAxMS4xIDI0LjYgMjQuNiAyNC42IDEzLjggMCAyNC45LTExLjMgMjQuOS0yNC45cy0xMS4xLTI0LjktMjQuOS0yNC45Yy05LjcgMC0xOCA1LjgtMjIuMSAxMy44bC02MS4yLTEzLjZjLTMtLjgtNi4xIDEuNC02LjkgNC40bC0xOS4xIDg2LjRjLTMzLjIgMS40LTYzLjEgMTEuMy04NS41IDI2LjgtNi4xLTYuNC0xNC43LTEwLjItMjQuMS0xMC4yLTM0LjkgMC00Ni4zIDQ2LjktMTQuNCA2Mi44LTEuMSA1LTEuNyAxMC4yLTEuNyAxNS41IDAgNTIuNiA1OS4yIDk1LjIgMTMyIDk1LjIgNzMuMSAwIDEzMi4zLTQyLjYgMTMyLjMtOTUuMiAwLTUuMy0uNi0xMC44LTEuOS0xNS44IDMxLjMtMTYgMTkuOC02Mi41LTE0LjktNjIuNXpNMzAyLjggMzMxYy0xOC4yIDE4LjItNzYuMSAxNy45LTkzLjYgMC0yLjItMi4yLTYuMS0yLjItOC4zIDAtMi41IDIuNS0yLjUgNi40IDAgOC42IDIyLjggMjIuOCA4Ny4zIDIyLjggMTEwLjIgMCAyLjUtMi4yIDIuNS02LjEgMC04LjYtMi4yLTIuMi02LjEtMi4yLTguMyAwem03LjctNzVjLTEzLjYgMC0yNC42IDExLjEtMjQuNiAyNC45IDAgMTMuNiAxMS4xIDI0LjYgMjQuNiAyNC42IDEzLjggMCAyNC45LTExLjEgMjQuOS0yNC42IDAtMTMuOC0xMS0yNC45LTI0LjktMjQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0MS41MiAyODUuNTZjMzMuNjUgMCA4Mi4zNC02Ljk0IDgyLjM0LTQ3IC4yMi02Ljc0Ljg2LTEuODItMjAuODgtOTYuMjQtNC42Mi0xOS4xNS04LjY4LTI3Ljg0LTQyLjMxLTQ0LjY1LTI2LjA5LTEzLjM0LTgyLjkyLTM1LjM3LTk5LjczLTM1LjM3LTE1LjY2IDAtMjAuMiAyMC4xNy0zOC44NyAyMC4xNy0xOCAwLTMxLjMxLTE1LjA2LTQ4LjEyLTE1LjA2LTE2LjE0IDAtMjYuNjYgMTEtMzQuNzggMzMuNjItMjcuNSA3Ny41NS0yNi4yOCA3NC4yNy0yNi4xMiA3OC4yNyAwIDI0LjggOTcuNjQgMTA2LjExIDIyOC40NyAxMDYuMTFNNDI5IDI1NC44NGM0LjY1IDIyIDQuNjUgMjQuMzUgNC42NSAyNy4yNSAwIDM3LjY2LTQyLjMzIDU4LjU2LTk4IDU4LjU2LTEyNS43NC4wOC0yMzUuOTEtNzMuNjUtMjM1LjkxLTEyMi4zM2E0OS41NSA0OS41NSAwIDAgMSA0LjA2LTE5LjcyQzU4LjU2IDIwMC44NiAwIDIwOC45MyAwIDI2MC42M2MwIDg0LjY3IDIwMC42MyAxODkgMzU5LjQ5IDE4OSAxMjEuNzkgMCAxNTIuNTEtNTUuMDggMTUyLjUxLTk4LjU4IDAtMzQuMjEtMjkuNTktNzMuMDUtODIuOTMtOTYuMjRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVucmVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNCAxNjkuMWMwIDExMC40LTYxIDIwNS40LTE0Ny42IDI0Ny40QzMwIDM3My4yIDggMzE3LjcgOCAyNTYuNiA4IDEzMy45IDk3LjEgMzIuMiAyMTQgMTIuNXYxNTYuNnpNMjU1IDUwNGMtNDIuOSAwLTgzLjMtMTEtMTE4LjUtMzAuNEMxOTMuNyA0MzcuNSAyMzkuOSAzODIuOSAyNTUgMzE5YzE1LjUgNjMuOSA2MS43IDExOC41IDExOC44IDE1NC43QzMzOC43IDQ5MyAyOTguMyA1MDQgMjU1IDUwNHptMTkwLjYtODcuNUMzNTkgMzc0LjUgMjk4IDI3OS42IDI5OCAxNjkuMVYxMi41YzExNi45IDE5LjcgMjA2IDEyMS40IDIwNiAyNDQuMSAwIDYxLjEtMjIgMTE2LjYtNTguNCAxNTkuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVwbHlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA0ODBIMTI4QzU3LjYgNDgwIDAgNDIyLjQgMCAzNTJWMTYwQzAgODkuNiA1Ny42IDMyIDEyOCAzMmgxOTJjNzAuNCAwIDEyOCA1Ny42IDEyOCAxMjh2MTkyYzAgNzAuNC01Ny42IDEyOC0xMjggMTI4ek0xOTMuNCAyNzMuMmMtNi4xLTItMTEuNi0zLjEtMTYuNC0zLjEtNy4yIDAtMTMuNSAxLjktMTguOSA1LjYtNS40IDMuNy05LjYgOS0xMi44IDE1LjhoLTEuMWwtNC4yLTE4LjNoLTI4djEzOC45aDM2LjF2LTg5LjdjMS41LTUuNCA0LjQtOS44IDguNy0xMy4yIDQuMy0zLjQgOS44LTUuMSAxNi4yLTUuMSA0LjYgMCA5LjggMSAxNS42IDMuMWw0LjgtMzR6bTExNS4yIDEwMy40Yy0zLjIgMi40LTcuNyA0LjgtMTMuNyA3LjEtNiAyLjMtMTIuOCAzLjUtMjAuNCAzLjUtMTIuMiAwLTIxLjEtMy0yNi41LTguOS01LjUtNS45LTguNS0xNC43LTktMjYuNGg4My4zYy45LTQuOCAxLjYtOS40IDIuMS0xMy45LjUtNC40LjctOC42LjctMTIuNSAwLTEwLjctMS42LTE5LjctNC43LTI2LjktMy4yLTcuMi03LjMtMTMtMTIuNS0xNy4yLTUuMi00LjMtMTEuMS03LjMtMTcuOC05LjItNi43LTEuOC0xMy41LTIuOC0yMC42LTIuOC0yMS4xIDAtMzcuNSA2LjEtNDkuMiAxOC4zcy0xNy41IDMwLjUtMTcuNSA1NWMwIDIyLjggNS4yIDQwLjcgMTUuNiA1My43IDEwLjQgMTMuMSAyNi44IDE5LjYgNDkuMiAxOS42IDEwLjcgMCAyMC45LTEuNSAzMC40LTQuNiA5LjUtMy4xIDE3LjEtNi44IDIyLjYtMTEuMmwtMTItMjMuNnptLTIxLjgtNzAuM2MzLjggNS40IDUuMyAxMy4xIDQuNiAyMy4xaC01MS43Yy45LTkuNCAzLjctMTcgOC4yLTIyLjYgNC41LTUuNiAxMS41LTguNSAyMS04LjUgOC4yLS4xIDE0LjEgMi42IDE3LjkgOHptNzkuOSAyLjVjNC4xIDMuOSA5LjQgNS44IDE2LjEgNS44IDcgMCAxMi42LTEuOSAxNi43LTUuOHM2LjEtOS4xIDYuMS0xNS42LTItMTEuNi02LjEtMTUuNGMtNC4xLTMuOC05LjYtNS43LTE2LjctNS43LTYuNyAwLTEyIDEuOS0xNi4xIDUuNy00LjEgMy44LTYuMSA4LjktNi4xIDE1LjRzMiAxMS43IDYuMSAxNS42em0wIDEwMC41YzQuMSAzLjkgOS40IDUuOCAxNi4xIDUuOCA3IDAgMTIuNi0xLjkgMTYuNy01LjhzNi4xLTkuMSA2LjEtMTUuNi0yLTExLjYtNi4xLTE1LjRjLTQuMS0zLjgtOS42LTUuNy0xNi43LTUuNy02LjcgMC0xMiAxLjktMTYuMSA1LjctNC4xIDMuOC02LjEgOC45LTYuMSAxNS40IDAgNi42IDIgMTEuNyA2LjEgMTUuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVzZWFyY2hnYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJ2NDQ4aDQ0OFYzMkgwem0yNjIuMiAzMzQuNGMtNi42IDMtMzMuMiA2LTUwLTE0LjItOS4yLTEwLjYtMjUuMy0zMy4zLTQyLjItNjMuNi04LjkgMC0xNC43IDAtMjEuNC0uNnY0Ni40YzAgMjMuNSA2IDIxLjIgMjUuOCAyMy45djguMWMtNi45LS4zLTIzLjEtLjgtMzUuNi0uOC0xMy4xIDAtMjYuMS42LTMzLjYuOHYtOC4xYzE1LjUtMi45IDIyLTEuMyAyMi0yMy45VjIyNWMwLTIyLjYtNi40LTIxLTIyLTIzLjlWMTkzYzI1LjggMSA1My4xLS42IDcwLjktLjYgMzEuNyAwIDU1LjkgMTQuNCA1NS45IDQ1LjYgMCAyMS4xLTE2LjcgNDIuMi0zOS4yIDQ3LjUgMTMuNiAyNC4yIDMwIDQ1LjYgNDIuMiA1OC45IDcuMiA3LjggMTcuMiAxNC43IDI3LjIgMTQuN3Y3LjN6bTIyLjktMTM1Yy0yMy4zIDAtMzIuMi0xNS43LTMyLjItMzIuMlYxNjdjMC0xMi4yIDguOC0zMC40IDM0LTMwLjRzMzAuNCAxNy45IDMwLjQgMTcuOWwtMTAuNyA3LjJzLTUuNS0xMi41LTE5LjctMTIuNWMtNy45IDAtMTkuNyA3LjMtMTkuNyAxOS43djI2LjhjMCAxMy40IDYuNiAyMy4zIDE3LjkgMjMuMyAxNC4xIDAgMjEuNS0xMC45IDIxLjUtMjYuOGgtMTcuOXYtMTAuN2gzMC40YzAgMjAuNSA0LjcgNDkuOS0zNCA0OS45em0tMTE2LjUgNDQuN2MtOS40IDAtMTMuNi0uMy0yMC0uOHYtNjkuN2M2LjQtLjYgMTUtLjYgMjIuNS0uNiAyMy4zIDAgMzcuMiAxMi4yIDM3LjIgMzQuNSAwIDIxLjktMTUgMzYuNi0zOS43IDM2LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlc29sdmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODEuMiAyNzguMmM0Ni0xMy4zIDQ5LjYtMjMuNSA0NC00My40TDMxNCAxOTUuNWMtNi4xLTIwLjktMTguNC0yOC4xLTcxLjEtMTIuOEw1NC43IDIzNi44bDI4LjYgOTguNiAxOTcuOS01Ny4yek0yNDguNSA4QzEzMS40IDggMzMuMiA4OC43IDcuMiAxOTcuNWwyMjEuOS02My45YzM0LjgtMTAuMiA1NC4yLTExLjcgNzkuMy04LjIgMzYuMyA2LjEgNTIuNyAyNSA2MS40IDU1LjJsMTAuNyAzNy44YzguMiAyOC4xIDEgNTAuNi0yMy41IDczLjYtMTkuNCAxNy40LTMxLjIgMjQuNS02MS40IDMzLjJMMjAzIDM1MS44bDIyMC40IDI3LjEgOS43IDM0LjItNDguMSAxMy4zLTI4Ni44LTM3LjMgMjMgODAuMmMzNi44IDIyIDgwLjMgMzQuNyAxMjYuMyAzNC43IDEzNyAwIDI0OC41LTExMS40IDI0OC41LTI0OC4zQzQ5NyAxMTkuNCAzODUuNSA4IDI0OC41IDh6TTM4LjMgMzg4LjZMMCAyNTYuOGMwIDQ4LjUgMTQuMyA5My40IDM4LjMgMTMxLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJldiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODkuNjcgMjc0Ljg5YTY1LjU3IDY1LjU3IDAgMSAxLTY1LjU2LTY1LjU2IDY1LjY0IDY1LjY0IDAgMCAxIDY1LjU2IDY1LjU2em0xMzkuNTUtNS4wNWgtLjEzYTIwNC42OSAyMDQuNjkgMCAwIDAtNzQuMzItMTUzbC00NS4zOCAyNi4yYTE1Ny4wNyAxNTcuMDcgMCAwIDEgNzEuODEgMTMxLjg0QzM4MS4yIDM2MS41IDMxMC43MyA0MzIgMjI0LjExIDQzMlM2NyAzNjEuNSA2NyAyNzQuODhjMC04MS44OCA2My0xNDkuMjcgMTQzLTE1Ni40M3YzOS4xMmwxMDguNzctNjIuNzlMMjEwIDMydjM4LjMyYy0xMDYuNyA3LjI1LTE5MSA5Ni0xOTEgMjA0LjU3IDAgMTExLjU5IDg5LjEyIDIwMi4yOSAyMDAuMDYgMjA1di4xMWgyMTAuMTZWMjY5Ljg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2NrZXRjaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4NC4wNDYsMjI0LjhhMzQuMTE0LDM0LjExNCwwLDEsMCwzNC4zMTcsMzQuMTEzQTM0LjIxNywzNC4yMTcsMCwwLDAsMjg0LjA0NiwyMjQuOFptLTExMC40NSwwYTM0LjExNCwzNC4xMTQsMCwxLDAsMzQuMzE3LDM0LjExM0EzNC4yMTcsMzQuMjE3LDAsMCwwLDE3My42LDIyNC44Wm0yMjAuOTIzLDBhMzQuMTE0LDM0LjExNCwwLDEsMCwzNC4zMTcsMzQuMTEzQTM0LjIxNSwzNC4yMTUsMCwwLDAsMzk0LjUxOSwyMjQuOFptMTUzLjgwNy01NS4zMTljLTE1LjUzNS0yNC4xNzItMzcuMzEtNDUuNTctNjQuNjgxLTYzLjYxOC01Mi44ODYtMzQuODE3LTEyMi4zNzQtNTQtMTk1LjY2Ni01NGE0MDUuOTc1LDQwNS45NzUsMCwwLDAtNzIuMDMyLDYuMzU3LDIzOC41MjQsMjM4LjUyNCwwLDAsMC00OS41MS0zNi41ODhDOTkuNjg0LTExLjcsNDAuODU5LjcxMSwxMS4xMzUsMTEuNDIxQTE0LjI5MSwxNC4yOTEsMCwwLDAsNS41OCwzNC43ODJDMjYuNTQyLDU2LjQ1OCw2MS4yMjIsOTkuMyw1Mi43LDEzOC4yNTJjLTMzLjE0MiwzMy45LTUxLjExMiw3NC43NzYtNTEuMTEyLDExNy4zMzcsMCw0My4zNzIsMTcuOTcsODQuMjQ4LDUxLjExMiwxMTguMTQ4LDguNTI2LDM4Ljk1Ni0yNi4xNTQsODEuODE2LTQ3LjExNiwxMDMuNDkxYTE0LjI4NCwxNC4yODQsMCwwLDAsNS41NTUsMjMuMzRjMjkuNzI0LDEwLjcwOSw4OC41NDksMjMuMTQ3LDE1NS4zMjQtMTAuMmEyMzguNjc5LDIzOC42NzksMCwwLDAsNDkuNTEtMzYuNTg5QTQwNS45NzIsNDA1Ljk3MiwwLDAsMCwyODgsNDYwLjE0YzczLjMxMywwLDE0Mi44LTE5LjE1OSwxOTUuNjY3LTUzLjk3NSwyNy4zNzEtMTguMDQ5LDQ5LjE0NS0zOS40MjYsNjQuNjc5LTYzLjYxOSwxNy4zMDktMjYuOTIzLDI2LjA3LTU1LjkxNiwyNi4wNy04Ni4xMjVDNTc0LjM5NCwyMjUuNCw1NjUuNjM0LDE5Ni40Myw1NDguMzI2LDE2OS40ODVaTTI4NC45ODcsNDA5LjlhMzQ1LjY1LDM0NS42NSwwLDAsMS04OS40NDYtMTEuNWwtMjAuMTI5LDE5LjM5M2ExODQuMzY2LDE4NC4zNjYsMCwwLDEtMzcuMTM4LDI3LjU4NSwxNDUuNzY3LDE0NS43NjcsMCwwLDEtNTIuNTIyLDE0Ljg3Yy45ODMtMS43NzEsMS44ODEtMy41NjMsMi44NDItNS4zNTZxMzAuMjU4LTU1LjY4LDE2LjMyNS0xMDAuMDc4Yy0zMi45OTItMjUuOTYyLTUyLjc3OC01OS4yLTUyLjc3OC05NS40LDAtODMuMSwxMDQuMjU0LTE1MC40NjksMjMyLjg0Ni0xNTAuNDY5czIzMi44NjcsNjcuMzczLDIzMi44NjcsMTUwLjQ2OUM1MTcuODU0LDM0Mi41MjUsNDEzLjYsNDA5LjksMjg0Ljk4Nyw0MDkuOVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9ja3JtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0xNTcuNCA0MTkuNWgtOTBsLTExMi0xMzEuM2MtMTcuOS0yMC40LTMuOS01Ni4xIDI2LjYtNTYuMWg3NS4zbC04NC42LTk5LjMtODQuMyA5OC45aC05MEwxOTMuNSA2Ny4yYzE0LjQtMTguNCA0MS4zLTE3LjMgNTQuNSAwbDE1Ny43IDE4NS4xYzE5IDIyLjggMiA1Ny4yLTI3LjYgNTYuMS0uNiAwLTc0LjIuMi03NC4yLjJsMTAxLjUgMTE4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1c3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA4LjUyLDI0OS43NSw0ODYuNywyMzYuMjRjLS4xNy0yLS4zNC0zLjkzLS41NS01Ljg4bDE4LjcyLTE3LjVhNy4zNSw3LjM1LDAsMCwwLTIuNDQtMTIuMjVsLTI0LTljLS41NC0xLjg4LTEuMDgtMy43OC0xLjY3LTUuNjRsMTUtMjAuODNhNy4zNSw3LjM1LDAsMCwwLTQuNzktMTEuNTRsLTI1LjQyLTQuMTVjLS45LTEuNzMtMS43OS0zLjQ1LTIuNzMtNS4xNWwxMC42OC0yMy40MmE3LjM1LDcuMzUsMCwwLDAtNi45NS0xMC4zOWwtMjUuODIuOTFxLTEuNzktMi4yMi0zLjYxLTQuNEw0MzksODEuODRBNy4zNiw3LjM2LDAsMCwwLDQzMC4xNiw3M0w0MDUsNzguOTNxLTIuMTctMS44My00LjQtMy42MWwuOTEtMjUuODJhNy4zNSw3LjM1LDAsMCwwLTEwLjM5LTdMMzY3LjcsNTMuMjNjLTEuNy0uOTQtMy40My0xLjg0LTUuMTUtMi43M0wzNTguNCwyNS4wOGE3LjM1LDcuMzUsMCwwLDAtMTEuNTQtNC43OUwzMjYsMzUuMjZjLTEuODYtLjU5LTMuNzUtMS4xMy01LjY0LTEuNjdsLTktMjRhNy4zNSw3LjM1LDAsMCwwLTEyLjI1LTIuNDRsLTE3LjUsMTguNzJjLTEuOTUtLjIxLTMuOTEtLjM4LTUuODgtLjU1TDI2Mi4yNSwzLjQ4YTcuMzUsNy4zNSwwLDAsMC0xMi41LDBMMjM2LjI0LDI1LjNjLTIsLjE3LTMuOTMuMzQtNS44OC41NUwyMTIuODYsNy4xM2E3LjM1LDcuMzUsMCwwLDAtMTIuMjUsMi40NGwtOSwyNGMtMS44OS41NS0zLjc5LDEuMDgtNS42NiwxLjY4bC0yMC44Mi0xNWE3LjM1LDcuMzUsMCwwLDAtMTEuNTQsNC43OWwtNC4xNSwyNS40MWMtMS43My45LTMuNDUsMS43OS01LjE2LDIuNzNMMTIwLjg4LDQyLjU1YTcuMzUsNy4zNSwwLDAsMC0xMC4zOSw3bC45MiwyNS44MWMtMS40OSwxLjE5LTMsMi4zOS00LjQyLDMuNjFMODEuODQsNzNBNy4zNiw3LjM2LDAsMCwwLDczLDgxLjg0TDc4LjkzLDEwN2MtMS4yMywxLjQ1LTIuNDMsMi45My0zLjYyLDQuNDFsLTI1LjgxLS45MWE3LjQyLDcuNDIsMCwwLDAtNi4zNywzLjI2LDcuMzUsNy4zNSwwLDAsMC0uNTcsNy4xM2wxMC42NiwyMy40MWMtLjk0LDEuNy0xLjgzLDMuNDMtMi43Myw1LjE2TDI1LjA4LDE1My42YTcuMzUsNy4zNSwwLDAsMC00Ljc5LDExLjU0bDE1LDIwLjgyYy0uNTksMS44Ny0xLjEzLDMuNzctMS42OCw1LjY2bC0yNCw5YTcuMzUsNy4zNSwwLDAsMC0yLjQ0LDEyLjI1bDE4LjcyLDE3LjVjLS4yMSwxLjk1LS4zOCwzLjkxLS41NSw1Ljg4TDMuNDgsMjQ5Ljc1YTcuMzUsNy4zNSwwLDAsMCwwLDEyLjVMMjUuMywyNzUuNzZjLjE3LDIsLjM0LDMuOTIuNTUsNS44N0w3LjEzLDI5OS4xM2E3LjM1LDcuMzUsMCwwLDAsMi40NCwxMi4yNWwyNCw5Yy41NSwxLjg5LDEuMDgsMy43OCwxLjY4LDUuNjVsLTE1LDIwLjgzYTcuMzUsNy4zNSwwLDAsMCw0Ljc5LDExLjU0bDI1LjQyLDQuMTVjLjksMS43MiwxLjc5LDMuNDUsMi43Myw1LjE0TDQyLjU2LDM5MS4xMmE3LjM1LDcuMzUsMCwwLDAsLjU3LDcuMTMsNy4xMyw3LjEzLDAsMCwwLDYuMzcsMy4yNmwyNS44My0uOTFxMS43NywyLjIyLDMuNiw0LjRMNzMsNDMwLjE2QTcuMzYsNy4zNiwwLDAsMCw4MS44NCw0MzlMMTA3LDQzMy4wN3EyLjE4LDEuODMsNC40MSwzLjYxbC0uOTIsMjUuODJhNy4zNSw3LjM1LDAsMCwwLDEwLjM5LDYuOTVsMjMuNDMtMTAuNjhjMS42OS45NCwzLjQyLDEuODMsNS4xNCwyLjczbDQuMTUsMjUuNDJhNy4zNCw3LjM0LDAsMCwwLDExLjU0LDQuNzhsMjAuODMtMTVjMS44Ni42LDMuNzYsMS4xMyw1LjY1LDEuNjhsOSwyNGE3LjM2LDcuMzYsMCwwLDAsMTIuMjUsMi40NGwxNy41LTE4LjcyYzEuOTUuMjEsMy45Mi4zOCw1Ljg4LjU1bDEzLjUxLDIxLjgyYTcuMzUsNy4zNSwwLDAsMCwxMi41LDBsMTMuNTEtMjEuODJjMi0uMTcsMy45My0uMzQsNS44OC0uNTZsMTcuNSwxOC43M2E3LjM2LDcuMzYsMCwwLDAsMTIuMjUtMi40NGw5LTI0YzEuODktLjU1LDMuNzgtMS4wOCw1LjY1LTEuNjhsMjAuODIsMTVhNy4zNCw3LjM0LDAsMCwwLDExLjU0LTQuNzhsNC4xNS0yNS40MmMxLjcyLS45LDMuNDUtMS43OSw1LjE1LTIuNzNsMjMuNDIsMTAuNjhhNy4zNSw3LjM1LDAsMCwwLDEwLjM5LTYuOTVsLS45MS0yNS44MnEyLjIyLTEuNzksNC40LTMuNjFMNDMwLjE2LDQzOWE3LjM2LDcuMzYsMCwwLDAsOC44NC04Ljg0TDQzMy4wNyw0MDVxMS44My0yLjE3LDMuNjEtNC40bDI1LjgyLjkxYTcuMjMsNy4yMywwLDAsMCw2LjM3LTMuMjYsNy4zNSw3LjM1LDAsMCwwLC41OC03LjEzTDQ1OC43NywzNjcuN2MuOTQtMS43LDEuODMtMy40MywyLjczLTUuMTVsMjUuNDItNC4xNWE3LjM1LDcuMzUsMCwwLDAsNC43OS0xMS41NGwtMTUtMjAuODNjLjU5LTEuODcsMS4xMy0zLjc2LDEuNjctNS42NWwyNC05YTcuMzUsNy4zNSwwLDAsMCwyLjQ0LTEyLjI1bC0xOC43Mi0xNy41Yy4yMS0xLjk1LjM4LTMuOTEuNTUtNS44N2wyMS44Mi0xMy41MWE3LjM1LDcuMzUsMCwwLDAsMC0xMi41Wm0tMTUxLDEyOS4wOEExMy45MSwxMy45MSwwLDAsMCwzNDEsMzg5LjUxbC03LjY0LDM1LjY3QTE4Ny41MSwxODcuNTEsMCwwLDEsMTc3LDQyNC40NGwtNy42NC0zNS42NmExMy44NywxMy44NywwLDAsMC0xNi40Ni0xMC42OGwtMzEuNTEsNi43NmExODcuMzgsMTg3LjM4LDAsMCwxLTE2LjI2LTE5LjIxSDI1OC4zYzEuNzIsMCwyLjg5LS4yOSwyLjg5LTEuOTFWMzA5LjU1YzAtMS41Ny0xLjE3LTEuOTEtMi44OS0xLjkxSDIxMy40N2wuMDUtMzQuMzVIMjYyYzQuNDEsMCwyMy42NiwxLjI4LDI5Ljc5LDI1Ljg3LDEuOTEsNy41NSw2LjE3LDMyLjE0LDkuMDYsNDAsMi44OSw4LjgyLDE0LjYsMjYuNDYsMjcuMSwyNi40Nkg0MDdhMTg3LjMsMTg3LjMsMCwwLDEtMTcuMzQsMjAuMDlabTI1Ljc3LDM0LjQ5QTE1LjI0LDE1LjI0LDAsMSwxLDM2OCwzOTguMDhoLjQ0QTE1LjIzLDE1LjIzLDAsMCwxLDM4My4yNCw0MTMuMzJabS0yMjUuNjItLjY4YTE1LjI0LDE1LjI0LDAsMSwxLTE1LjI1LTE1LjI1aC40NUExNS4yNSwxNS4yNSwwLDAsMSwxNTcuNjIsNDEyLjY0Wk02OS41NywyMzQuMTVsMzIuODMtMTQuNmExMy44OCwxMy44OCwwLDAsMCw3LjA2LTE4LjMzTDEwMi42OSwxODZoMjYuNTZWMzA1LjczSDc1LjY1QTE4Ny42NSwxODcuNjUsMCwwLDEsNjkuNTcsMjM0LjE1Wk01OC4zMSwxOTguMDlhMTUuMjQsMTUuMjQsMCwwLDEsMTUuMjMtMTUuMjVINzRhMTUuMjQsMTUuMjQsMCwxLDEtMTUuNjcsMTUuMjRabTE1NS4xNiwyNC40OS4wNS0zNS4zMmg2My4yNmMzLjI4LDAsMjMuMDcsMy43NywyMy4wNywxOC42MiwwLDEyLjI5LTE1LjE5LDE2LjctMjcuNjgsMTYuN1pNMzk5LDMwNi43MWMtOS44LDEuMTMtMjAuNjMtNC4xMi0yMi0xMC4wOS01Ljc4LTMyLjQ5LTE1LjM5LTM5LjQtMzAuNTctNTEuNCwxOC44Ni0xMS45NSwzOC40Ni0yOS42NCwzOC40Ni01My4yNiwwLTI1LjUyLTE3LjQ5LTQxLjU5LTI5LjQtNDkuNDgtMTYuNzYtMTEtMzUuMjgtMTMuMjMtNDAuMjctMTMuMjNIMTE2LjMyQTE4Ny40OSwxODcuNDksMCwwLDEsMjIxLjIxLDcwLjA2bDIzLjQ3LDI0LjZhMTMuODIsMTMuODIsMCwwLDAsMTkuNi40NGwyNi4yNi0yNWExODcuNTEsMTg3LjUxLDAsMCwxLDEyOC4zNyw5MS40M2wtMTgsNDAuNTdBMTQsMTQsMCwwLDAsNDA4LDIyMC40M2wzNC41OSwxNS4zM2ExODcuMTIsMTg3LjEyLDAsMCwxLC40LDMyLjU0SDQyMy43MWMtMS45MSwwLTIuNjksMS4yNy0yLjY5LDMuMTN2OC44MkM0MjEsMzAxLDQwOS4zMSwzMDUuNTgsMzk5LDMwNi43MVpNMjQwLDYwLjIxQTE1LjI0LDE1LjI0LDAsMCwxLDI1NS4yMSw0NWguNDVBMTUuMjQsMTUuMjQsMCwxLDEsMjQwLDYwLjIxWk00MzYuODQsMjE0YTE1LjI0LDE1LjI0LDAsMSwxLDAtMzAuNDhoLjQ0YTE1LjI0LDE1LjI0LDAsMCwxLS40NCwzMC40OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2FmYXJpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3NC42OSwyNzQuNjlsLTM3LjM4LTM3LjM4TDE2NiwzNDZaTTI1Niw4QzExOSw4LDgsMTE5LDgsMjU2UzExOSw1MDQsMjU2LDUwNCw1MDQsMzkzLDUwNCwyNTYsMzkzLDgsMjU2LDhaTTQxMS44NSwxODIuNzlsMTQuNzgtNi4xM0E4LDgsMCwwLDEsNDM3LjA4LDE4MWgwYTgsOCwwLDAsMS00LjMzLDEwLjQ2TDQxOCwxOTcuNTdhOCw4LDAsMCwxLTEwLjQ1LTQuMzNoMEE4LDgsMCwwLDEsNDExLjg1LDE4Mi43OVpNMzE0LjQzLDk0bDYuMTItMTQuNzhBOCw4LDAsMCwxLDMzMSw3NC45MmgwYTgsOCwwLDAsMSw0LjMzLDEwLjQ1bC02LjEzLDE0Ljc4YTgsOCwwLDAsMS0xMC40NSw0LjMzaDBBOCw4LDAsMCwxLDMxNC40Myw5NFpNMjU2LDYwaDBhOCw4LDAsMCwxLDgsOFY4NGE4LDgsMCwwLDEtOCw4aDBhOCw4LDAsMCwxLTgtOFY2OEE4LDgsMCwwLDEsMjU2LDYwWk0xODEsNzQuOTJhOCw4LDAsMCwxLDEwLjQ2LDQuMzNMMTk3LjU3LDk0YTgsOCwwLDEsMS0xNC43OCw2LjEybC02LjEzLTE0Ljc4QTgsOCwwLDAsMSwxODEsNzQuOTJabS02My41OCw0Mi40OWgwYTgsOCwwLDAsMSwxMS4zMSwwTDE0MCwxMjguNzJBOCw4LDAsMCwxLDE0MCwxNDBoMGE4LDgsMCwwLDEtMTEuMzEsMGwtMTEuMzEtMTEuMzFBOCw4LDAsMCwxLDExNy40MSwxMTcuNDFaTTYwLDI1NmgwYTgsOCwwLDAsMSw4LThIODRhOCw4LDAsMCwxLDgsOGgwYTgsOCwwLDAsMS04LDhINjhBOCw4LDAsMCwxLDYwLDI1NlptNDAuMTUsNzMuMjEtMTQuNzgsNi4xM0E4LDgsMCwwLDEsNzQuOTIsMzMxaDBhOCw4LDAsMCwxLDQuMzMtMTAuNDZMOTQsMzE0LjQzYTgsOCwwLDAsMSwxMC40NSw0LjMzaDBBOCw4LDAsMCwxLDEwMC4xNSwzMjkuMjFabTQuMzMtMTM2aDBBOCw4LDAsMCwxLDk0LDE5Ny41N2wtMTQuNzgtNi4xMkE4LDgsMCwwLDEsNzQuOTIsMTgxaDBhOCw4LDAsMCwxLDEwLjQ1LTQuMzNsMTQuNzgsNi4xM0E4LDgsMCwwLDEsMTA0LjQ4LDE5My4yNFpNMTk3LjU3LDQxOGwtNi4xMiwxNC43OGE4LDgsMCwwLDEtMTQuNzktNi4xMmw2LjEzLTE0Ljc4QTgsOCwwLDEsMSwxOTcuNTcsNDE4Wk0yNjQsNDQ0YTgsOCwwLDAsMS04LDhoMGE4LDgsMCwwLDEtOC04VjQyOGE4LDgsMCwwLDEsOC04aDBhOCw4LDAsMCwxLDgsOFptNjctNi45MmgwYTgsOCwwLDAsMS0xMC40Ni00LjMzTDMxNC40Myw0MThhOCw4LDAsMCwxLDQuMzMtMTAuNDVoMGE4LDgsMCwwLDEsMTAuNDUsNC4zM2w2LjEzLDE0Ljc4QTgsOCwwLDAsMSwzMzEsNDM3LjA4Wm02My41OC00Mi40OWgwYTgsOCwwLDAsMS0xMS4zMSwwTDM3MiwzODMuMjhBOCw4LDAsMCwxLDM3MiwzNzJoMGE4LDgsMCwwLDEsMTEuMzEsMGwxMS4zMSwxMS4zMUE4LDgsMCwwLDEsMzk0LjU5LDM5NC41OVpNMjg2LjI1LDI4Ni4yNSwxMTAuMzQsNDAxLjY2LDIyNS43NSwyMjUuNzUsNDAxLjY2LDExMC4zNFpNNDM3LjA4LDMzMWgwYTgsOCwwLDAsMS0xMC40NSw0LjMzbC0xNC43OC02LjEzYTgsOCwwLDAsMS00LjMzLTEwLjQ1aDBBOCw4LDAsMCwxLDQxOCwzMTQuNDNsMTQuNzgsNi4xMkE4LDgsMCwwLDEsNDM3LjA4LDMzMVpNNDQ0LDI2NEg0MjhhOCw4LDAsMCwxLTgtOGgwYTgsOCwwLDAsMSw4LThoMTZhOCw4LDAsMCwxLDgsOGgwQTgsOCwwLDAsMSw0NDQsMjY0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYWxlc2ZvcmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OC44OSAyNDUuNjRoLTI2LjM1Yy42OS01LjE2IDMuMzItMTQuMTIgMTMuNjQtMTQuMTIgNi43NSAwIDExLjk3IDMuODIgMTIuNzEgMTQuMTJ6bTEzNi42Ni0xMy44OGMtLjQ3IDAtMTQuMTEtMS43Ny0xNC4xMSAyMHMxMy42MyAyMCAxNC4xMSAyMGMxMyAwIDE0LjExLTEzLjU0IDE0LjExLTIwIDAtMjEuNzYtMTMuNjYtMjAtMTQuMTEtMjB6bS0yNDMuMjIgMjMuNzZhOC42MyA4LjYzIDAgMCAwLTMuMjkgNy4yOWMwIDQuNzggMi4wOCA2LjA1IDMuMjkgNy4wNSA0LjcgMy43IDE1LjA3IDIuMTIgMjAuOTMuOTV2LTE2Ljk0Yy01LjMyLTEuMDctMTYuNzMtMS45Ni0yMC45MyAxLjY1ek02NDAgMjMyYzAgODcuNTgtODAgMTU0LjM5LTE2NS4zNiAxMzYuNDMtMTguMzcgMzMtNzAuNzMgNzAuNzUtMTMyLjIgNDEuNjMtNDEuMTYgOTYuMDUtMTc3Ljg5IDkyLjE4LTIxMy44MS01LjE3QzguOTEgNDI4Ljc4LTUwLjE5IDI2Ni41MiA1My4zNiAyMDUuNjEgMTguNjEgMTI2LjE4IDc2IDMyIDE2Ny42NyAzMmExMjQuMjQgMTI0LjI0IDAgMCAxIDk4LjU2IDQ4LjdjMjAuNy0yMS40IDQ5LjQtMzQuODEgODEuMTUtMzQuODEgNDIuMzQgMCA3OSAyMy41MiA5OC44IDU4LjU3QzUzOSA2My43OCA2NDAgMTMyLjY5IDY0MCAyMzJ6bS01MTkuNTUgMzEuOGMwLTExLjc2LTExLjY5LTE1LjE3LTE3Ljg3LTE3LjE3LTUuMjctMi4xMS0xMy40MS0zLjUxLTEzLjQxLTguOTQgMC05LjQ2IDE3LTYuNjYgMjUuMTctMi4xMiAwIDAgMS4xNy43MSAxLjY0LS40Ny4yNC0uNyAyLjM2LTYuNTggMi41OS03LjI5YTEuMTMgMS4xMyAwIDAgMC0uNy0xLjQxYy0xMi4zMy03LjYzLTQwLjctOC41MS00MC43IDEyLjcgMCAxMi40NiAxMS40OSAxNS40NCAxNy44OCAxNy4xNyA0LjcyIDEuNTggMTMuMTcgMyAxMy4xNyA4LjcgMCA0LTMuNTMgNy4wNi05LjE3IDcuMDZhMzEuNzYgMzEuNzYgMCAwIDEtMTktNi4zNWMtLjQ3LS4yMy0xLjQyLS43MS0xLjY1LjcxbC0yLjQgNy40N2MtLjQ3Ljk0LjIzIDEuMTguMjMgMS40MSAxLjc1IDEuNCAxMC4zIDYuNTkgMjIuODIgNi41OSAxMy4xNyAwIDIxLjQtNy4wNiAyMS40LTE4LjExem0zMi00Mi41OGMtMTAuMTMgMC0xOC42NiAzLjE3LTIxLjQgNS4xOGExIDEgMCAwIDAtLjI0IDEuNDFsMi41OSA3LjA2YTEgMSAwIDAgMCAxLjE4LjdjLjY1IDAgNi44LTQgMTYuOTMtNCA0IDAgNy4wNi43MSA5LjE4IDIuMzYgMy42IDIuOCAzLjA2IDguMjkgMy4wNiAxMC41OC00Ljc5LS4zLTE5LjExLTMuNDQtMjkuNDEgMy43NmExNi45MiAxNi45MiAwIDAgMC03LjM0IDE0LjU0YzAgNS45IDEuNTEgMTAuNCA2LjU5IDE0LjM1IDEyLjI0IDguMTYgMzYuMjggMiAzOC4xIDEuNDEgMS41OC0uMzIgMy41My0uNjYgMy41My0xLjg4di0zMy44OGMuMDQtNC42MS4zMi0yMS42NC0yMi43OC0yMS42NHpNMTk5IDIwMC4yNGExLjExIDEuMTEgMCAwIDAtMS4xOC0xLjE4SDE4OGExLjExIDEuMTEgMCAwIDAtMS4xNyAxLjE4djc5YTEuMTEgMS4xMSAwIDAgMCAxLjE3IDEuMThoOS44OGExLjExIDEuMTEgMCAwIDAgMS4xOC0xLjE4em01NS43NSAyOC45M2MtMi4xLTIuMzEtNi43OS03LjUzLTE3LjY1LTcuNTMtMy41MSAwLTE0LjE2LjIzLTIwLjcgOC45NC02LjM1IDcuNjMtNi41OCAxOC4xMS02LjU4IDIxLjQxIDAgMy4xMi4xNSAxNC4yNiA3LjA2IDIxLjE3IDIuNjQgMi45MSA5LjA2IDguMjMgMjIuODEgOC4yMyAxMC44MiAwIDE2LjQ3LTIuMzUgMTguNTgtMy43Ni40Ny0uMjQuNzEtLjcxLjI0LTEuODhsLTIuMzUtNi44M2ExLjI2IDEuMjYgMCAwIDAtMS40MS0uN2MtMi41OS45NC02LjM1IDIuODItMTUuMjkgMi44Mi0xNy40MiAwLTE2Ljg1LTE0Ljc0LTE2Ljk0LTE2LjdoMzcuMTdhMS4yMyAxLjIzIDAgMCAwIDEuMTctLjk0Yy0uMjkgMCAyLjA3LTE0LjctNi4wOS0yNC4yM3ptMzYuNjkgNTIuNjljMTMuMTcgMCAyMS40MS03LjA2IDIxLjQxLTE4LjExIDAtMTEuNzYtMTEuNy0xNS4xNy0xNy44OC0xNy4xNy00LjE0LTEuNjYtMTMuNDEtMy4zOC0xMy40MS04Ljk0IDAtMy43NiAzLjI5LTYuMzUgOC40Ny02LjM1YTM4LjExIDM4LjExIDAgMCAxIDE2LjcgNC4yM3MxLjE4LjcxIDEuNjUtLjQ3Yy4yMy0uNyAyLjM1LTYuNTggMi41OC03LjI5YTEuMTMgMS4xMyAwIDAgMC0uNy0xLjQxYy03LjkxLTQuOS0xNi43NC00Ljk0LTIwLjIzLTQuOTQtMTIgMC0yMC40NiA3LjI5LTIwLjQ2IDE3LjY0IDAgMTIuNDYgMTEuNDggMTUuNDQgMTcuODcgMTcuMTcgNi4xMSAyIDEzLjE3IDMuMjYgMTMuMTcgOC43IDAgNC0zLjUyIDcuMDYtOS4xNyA3LjA2YTMxLjggMzEuOCAwIDAgMS0xOS02LjM1IDEgMSAwIDAgMC0xLjY1LjcxbC0yLjM1IDcuNTJjLS40Ny45NC4yMyAxLjE4LjIzIDEuNDEgMS43MiAxLjQgMTAuMzMgNi41OSAyMi43OSA2LjU5ek0zNTcuMDkgMjI0YzAtLjcxLS4yNC0xLjE4LTEuMTgtMS4xOGgtMTEuNzZjMC0uMTQuOTQtOC45NCA0LjQ3LTEyLjQ3IDQuMTYtNC4xNSAxMS43Ni0xLjY0IDEyLTEuNjQgMS4xNy40NyAxLjQxIDAgMS42NC0uNDdsMi44My03Ljc3Yy43LS45NCAwLTEuMTctLjI0LTEuNDEtNS4wOS0yLTE3LjM1LTIuODctMjQuNDYgNC4yNC01LjQ4IDUuNDgtNyAxMy45Mi04IDE5LjUyaC04LjQ3YTEuMjggMS4yOCAwIDAgMC0xLjE3IDEuMThsLTEuNDIgNy43NmMwIC43LjI0IDEuMTcgMS4xOCAxLjE3aDguMjNjLTguNTEgNDcuOS04Ljc1IDUwLjIxLTEwLjM1IDU1LjUyLTEuMDggMy42Mi0zLjI5IDYuOS01Ljg4IDcuNzYtLjA5IDAtMy44OCAxLjY4LTkuNjQtLjI0IDAgMC0uOTQtLjQ3LTEuNDEuNzEtLjI0LjcxLTIuNTkgNi44Mi0yLjgzIDcuNTNzMCAxLjQxLjQ3IDEuNDFjNS4xMSAyIDEzIDEuNzcgMTcuODggMCA2LjI4LTIuMjggOS43Mi03Ljg5IDExLjUzLTEyLjk0IDIuNzUtNy43MSAyLjgxLTkuNzkgMTEuNzYtNTkuNzRoMTIuMjNhMS4yOSAxLjI5IDAgMCAwIDEuMTgtMS4xOHptNTMuMzkgMTZjLS41Ni0xLjY4LTUuMS0xOC4xMS0yNS4xNy0xOC4xMS0xNS4yNSAwLTIzIDEwLTI1LjE2IDE4LjExLTEgMy0zLjE4IDE0IDAgMjMuNTIuMDkuMyA0LjQxIDE4LjEyIDI1LjE2IDE4LjEyIDE0Ljk1IDAgMjIuOS05LjYxIDI1LjE3LTE4LjEyIDMuMjEtOS42MSAxLjAxLTIwLjUyIDAtMjMuNTJ6bTQ1LjQtMTYuN2MtNS0xLjY1LTE2LjYyLTEuOS0yMi4xMSA1LjQxdi00LjQ3YTEuMTEgMS4xMSAwIDAgMC0xLjE4LTEuMTdoLTkuNGExLjExIDEuMTEgMCAwIDAtMS4xOCAxLjE3djU1LjI4YTEuMTIgMS4xMiAwIDAgMCAxLjE4IDEuMThoOS42NGExLjEyIDEuMTIgMCAwIDAgMS4xOC0xLjE4di0yNy43N2MwLTIuOTEuMDUtMTEuMzcgNC40Ni0xNS4wNSA0LjktNC45IDEyLTMuMzYgMTMuNDEtMy4wNmExLjU3IDEuNTcgMCAwIDAgMS40MS0uOTQgNzQgNzQgMCAwIDAgMy4wNi04IDEuMTYgMS4xNiAwIDAgMC0uNDctMS40MXptNDYuODEgNTQuMWwtMi4xMi03LjI5Yy0uNDctMS4xOC0xLjQxLS43MS0xLjQxLS43MS00LjIzIDEuODItMTAuMTUgMS44OS0xMS4yOSAxLjg5LTQuNjQgMC0xNy4xNy0xLjEzLTE3LjE3LTE5Ljc2IDAtNi4yMyAxLjg1LTE5Ljc2IDE2LjQ3LTE5Ljc2YTM0Ljg1IDM0Ljg1IDAgMCAxIDExLjUyIDEuNjVzLjk0LjQ3IDEuMTgtLjcxYy45NC0yLjU5IDEuNjQtNC40NyAyLjU5LTcuNTMuMjMtLjk0LS40Ny0xLjE3LS43MS0xLjE3LTExLjU5LTMuODctMjIuMzQtMi41My0yNy43NiAwLTEuNTkuNzQtMTYuMjMgNi40OS0xNi4yMyAyNy41MiAwIDIuOS0uNTggMzAuMTEgMjguOTQgMzAuMTFhNDQuNDUgNDQuNDUgMCAwIDAgMTUuNTItMi44MyAxLjMgMS4zIDAgMCAwIC40Ny0xLjQyem01My44Ny0zOS41MmMtLjgtMy01LjM3LTE2LjIzLTIyLjM1LTE2LjIzLTE2IDAtMjMuNTIgMTAuMTEtMjUuNjQgMTguNTlhMzguNTggMzguNTggMCAwIDAtMS42NSAxMS43NmMwIDI1Ljg3IDE4Ljg0IDI5LjQgMjkuODggMjkuNCAxMC44MiAwIDE2LjQ2LTIuMzUgMTguNTgtMy43Ni40Ny0uMjQuNzEtLjcxLjI0LTEuODhsLTIuMzYtNi44M2ExLjI2IDEuMjYgMCAwIDAtMS40MS0uN2MtMi41OS45NC02LjM1IDIuODItMTUuMjkgMi44Mi0xNy40MiAwLTE2Ljg1LTE0Ljc0LTE2LjkzLTE2LjdoMzcuMTZhMS4yNSAxLjI1IDAgMCAwIDEuMTgtLjk0Yy0uMjQtLjAxLjk0LTcuMDctMS40MS0xNS41NHptLTIzLjI5LTYuMzVjLTEwLjMzIDAtMTMgOS0xMy42NCAxNC4xMkg1NDZjLS44OC0xMS45Mi03LjYyLTE0LjEzLTEyLjczLTE0LjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMS44NCAzNzguOTJjLS4zLjYtLjYgMS4wOCAwIDB6bTI0OS4xMy04N2ExMzEuMTYgMTMxLjE2IDAgMCAwLTU4IDEzLjVjLTUuOS0xMS45LTEyLTIyLjMtMTMtMzAuMS0xLjItOS4xLTIuNS0xNC41LTEuMS0yNS4zczcuNy0yNi4xIDcuNi0yNy4yLTEuNC02LjYtMTQuMy02LjctMjQgMi41LTI1LjI5IDUuOWExMjIuODMgMTIyLjgzIDAgMCAwLTUuMyAxOS4xYy0yLjMgMTEuNy0yNS43OSA1My41LTM5LjA5IDc1LjMtNC40LTguNS04LjEtMTYtOC45LTIyLTEuMi05LjEtMi41LTE0LjUtMS4xLTI1LjNzNy43LTI2LjEgNy42LTI3LjItMS40LTYuNi0xNC4yOS02LjctMjQgMi41LTI1LjMgNS45LTIuNyAxMS40LTUuMyAxOS4xLTMzLjg5IDc3LjMtNDIuMDggOTUuNGMtNC4yIDkuMi03LjggMTYuNi0xMC40IDIxLjYtLjQuOC0uNyAxLjMtLjkgMS43LjMtLjUuNS0xIC41LS44LTIuMiA0LjMtMy41IDYuNy0zLjUgNi43di4xYy0xLjcgMy4yLTMuNiA2LjEtNC41IDYuMS0uNiAwLTEuOS04LjQuMy0xOS45IDQuNy0yNC4yIDE1LjgtNjEuOCAxNS43LTYzLjEtLjEtLjcgMi4xLTcuMi03LjMtMTAuNy05LjEtMy4zLTEyLjQgMi4yLTEzLjIgMi4ycy0xLjQgMi0xLjQgMiAxMC4xLTQyLjQtMTkuMzktNDIuNGMtMTguNCAwLTQ0IDIwLjItNTYuNTggMzguNS03LjkgNC4zLTI1IDEzLjYtNDMgMjMuNS02LjkgMy44LTE0IDcuNy0yMC43IDExLjQtLjUtLjUtLjktMS0xLjQtMS41LTM1Ljc5LTM4LjItMTAxLjg3LTY1LjItOTkuMDctMTE2LjUgMS0xOC43IDcuNS02Ny44IDEyNy4wNy0xMjcuNCA5OC00OC44IDE3Ni4zNS0zNS40IDE4OS44NC01LjYgMTkuNCA0Mi41LTQxLjg5IDEyMS42LTE0My42NiAxMzMtMzguNzkgNC4zLTU5LjE4LTEwLjctNjQuMjgtMTYuMy01LjMtNS45LTYuMS02LjItOC4xLTUuMS0zLjMgMS44LTEuMiA3IDAgMTAuMSAzIDcuOSAxNS41IDIxLjkgMzYuNzkgMjguOSAxOC43IDYuMSA2NC4xOCA5LjUgMTE5LjE3LTExLjggNjEuNzgtMjMuOCAxMDkuODctOTAuMSA5NS43Ny0xNDUuNkMzODYuNTIgMTguMzIgMjkzLS4xOCAyMDQuNTcgMzEuMjJjLTUyLjY5IDE4LjctMTA5LjY3IDQ4LjEtMTUwLjY2IDg2LjQtNDguNjkgNDUuNi01Ni40OCA4NS4zLTUzLjI4IDEwMS45IDExLjM5IDU4LjkgOTIuNTcgOTcuMyAxMjUuMDYgMTI1LjctMS42LjktMy4xIDEuNy00LjUgMi41LTE2LjI5IDguMS03OC4xOCA0MC41LTkzLjY3IDc0LjctMTcuNSAzOC44IDIuOSA2Ni42IDE2LjI5IDcwLjQgNDEuNzkgMTEuNiA4NC41OC05LjMgMTA3LjU3LTQzLjZzMjAuMi03OS4xIDkuNi05OS41Yy0uMS0uMy0uMy0uNS0uNC0uOCA0LjItMi41IDguNS01IDEyLjgtNy41IDguMjktNC45IDE2LjM5LTkuNCAyMy40OS0xMy4zLTQgMTAuOC02LjkgMjMuOC04LjQgNDIuNi0xLjggMjIgNy4zIDUwLjUgMTkuMSA2MS43IDUuMiA0LjkgMTEuNDkgNSAxNS4zOSA1IDEzLjggMCAyMC0xMS40IDI2Ljg5LTI1IDguNS0xNi42IDE2LTM1LjkgMTYtMzUuOXMtOS40IDUyLjIgMTYuMyA1Mi4yYzkuMzkgMCAxOC43OS0xMi4xIDIzLTE4LjN2LjFzLjItLjQuNy0xLjJjMS0xLjUgMS41LTIuNCAxLjUtMi40di0uM2MzLjgtNi41IDEyLjEtMjEuNCAyNC41OS00NiAxNi4yLTMxLjggMzEuNjktNzEuNSAzMS42OS03MS41YTIwMS4yNCAyMDEuMjQgMCAwIDAgNi4yIDI1LjhjMi44IDkuNSA4LjcgMTkuOSAxMy40IDMwLTMuOCA1LjItNi4xIDguMi02LjEgOC4yYS4zMS4zMSAwIDAgMCAuMS4yYy0zIDQtNi40IDguMy05LjkgMTIuNS0xMi43OSAxNS4yLTI4IDMyLjYtMzAgMzcuNi0yLjQgNS45LTEuOCAxMC4zIDIuOCAxMy43IDMuNCAyLjYgOS40IDMgMTUuNjkgMi41IDExLjUtLjggMTkuNi0zLjYgMjMuNS01LjRhODIuMiA4Mi4yIDAgMCAwIDIwLjE5LTEwLjZjMTIuNS05LjIgMjAuMS0yMi40IDE5LjQtMzkuOC0uNC05LjYtMy41LTE5LjItNy4zLTI4LjIgMS4xLTEuNiAyLjMtMy4zIDMuNC01QzQzNC44IDMwMS43MiA0NTAuMSAyNzAgNDUwLjEgMjcwYTIwMS4yNCAyMDEuMjQgMCAwIDAgNi4yIDI1LjhjMi40IDguMSA3LjA5IDE3IDExLjM5IDI1LjctMTguNTkgMTUuMS0zMC4wOSAzMi42LTM0LjA5IDQ0LjEtNy40IDIxLjMtMS42IDMwLjkgOS4zIDMzLjEgNC45IDEgMTEuOS0xLjMgMTcuMS0zLjVhNzkuNDYgNzkuNDYgMCAwIDAgMjEuNTktMTEuMWMxMi41LTkuMiAyNC41OS0yMi4xIDIzLjc5LTM5LjYtLjMtNy45LTIuNS0xNS44LTUuNC0yMy40IDE1LjctNi42IDM2LjA5LTEwLjIgNjIuMDktNy4yIDU1LjY4IDYuNSA2Ni41OCA0MS4zIDY0LjQ4IDU1LjhzLTEzLjggMjIuNi0xNy43IDI1LTUuMSAzLjMtNC44IDUuMWMuNSAyLjYgMi4zIDIuNSA1LjYgMS45IDQuNi0uOCAyOS4xOS0xMS44IDMwLjI5LTM4LjcgMS42LTM0LTMxLjA5LTcxLjQtODktNzEuMXptLTQyOS4xOCAxNDQuN2MtMTguMzkgMjAuMS00NC4xOSAyNy43LTU1LjI4IDIxLjNDNTQuNjEgNDUxIDU5LjMxIDQyMS40MiA4MiA0MDBjMTMuOC0xMyAzMS41OS0yNSA0My4zOS0zMi40IDIuNy0xLjYgNi42LTQgMTEuNC02LjkuOC0uNSAxLjItLjcgMS4yLS43LjktLjYgMS45LTEuMSAyLjktMS43IDguMjkgMzAuNC4zIDU3LjItMTkuMSA3OC4zem0xMzQuMzYtOTEuNGMtNi40IDE1LjctMTkuODkgNTUuNy0yOC4wOSA1My42LTctMS44LTExLjMtMzIuMy0xLjQtNjIuMyA1LTE1LjEgMTUuNi0zMy4xIDIxLjktNDAuMSAxMC4wOS0xMS4zIDIxLjE5LTE0LjkgMjMuNzktMTAuNCAzLjUgNS45LTEyLjIgNDkuNC0xNi4yIDU5LjJ6bTExMSA1M2MtMi43IDEuNC01LjIgMi4zLTYuNCAxLjYtLjktLjUgMS4xLTIuNCAxLjEtMi40czEzLjktMTQuOSAxOS40LTIxLjdjMy4yLTQgNi45LTguNyAxMC44OS0xMy45IDAgLjUuMSAxIC4xIDEuNi0uMTMgMTcuOS0xNy4zMiAzMC0yNS4xMiAzNC44em04NS41OC0xOS41Yy0yLTEuNC0xLjctNi4xIDUtMjAuNyAyLjYtNS43IDguNTktMTUuMyAxOS0yNC41YTM2LjE4IDM2LjE4IDAgMCAxIDEuOSAxMC44Yy0uMSAyMi41LTE2LjIgMzAuOS0yNS44OSAzNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2hsaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUwLjUgMTU3LjdsLTU0LjItNDYuMSA3My40LTM5IDc4LjMgNDQuMi05Ny41IDQwLjl6TTE5MiAxMjIuMWw0NS43LTI4LjIgMzQuNyAzNC42LTU1LjQgMjktMjUtMzUuNHptLTY1LjEgNi42bDMxLjktMjIuMUwxNzYgMTM1bC0zNi43IDIyLjUtMTIuNC0yOC44em0tMjMuMyA4OC4ybC04LjgtMzQuOCAyOS42LTE4LjMgMTMuMSAzNS4zLTMzLjkgMTcuOHptLTIxLjItODMuN2wyMy45LTE4LjEgOC45IDI0LTI2LjcgMTguMy02LjEtMjQuMnpNNTkgMjA2LjVsLTMuNi0yOC40IDIyLjMtMTUuNSA2LjEgMjguN0w1OSAyMDYuNXptLTMwLjYgMTYuNmwyMC44LTEyLjggMy4zIDMzLjQtMjIuOSAxMi0xLjItMzIuNnpNMS40IDI2OGwxOS4yLTEwLjIuNCAzOC4yLTIxIDguOEwxLjQgMjY4em01OS4xIDU5LjNsLTI4LjMgOC4zLTEuNi00Ni44IDI1LjEtMTAuNyA0LjggNDkuMnpNOTkgMjYzLjJsLTMxLjEgMTMtNS4yLTQwLjhMOTAuMSAyMjFsOC45IDQyLjJ6TTEyMy4yIDM3N2wtNDEuNiA1LjktOC4xLTYzLjUgMzUuMi0xMC44IDE0LjUgNjguNHptMjguNS0xMzkuOWwyMS4yIDU3LjEtNDYuMiAxMy42LTEzLjctNTQuMSAzOC43LTE2LjZ6bTg1LjcgMjMwLjVsLTcwLjktMy4zLTI0LjMtOTUuOCA1NS4yLTguNiA0MCAxMDcuN3ptLTg0LjktMjc5LjdsNDIuMi0yMi40IDI4IDQ1LjktNTAuOCAyMS4zLTE5LjQtNDQuOHptNDEgOTQuOWw2MS4zLTE4LjcgNTIuOCA4Ni42LTc5LjggMTEuMy0zNC4zLTc5LjJ6bTUxLjQtODUuNmw2Ny4zLTI4LjggNjUuNSA2NS40LTg4LjYgMjYuMi00NC4yLTYyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjcmliZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Mi4zIDI1Mi43Yy0xNi4xLTE5LTI0LjctNDUuOS0yNC44LTc5LjkgMC0xMDAuNCA3NS4yLTE1My4xIDE2Ny4yLTE1My4xIDk4LjYtMS42IDE1Ni44IDQ5IDE4NC4zIDcwLjZsLTUwLjUgNzIuMS0zNy4zLTI0LjYgMjYuOS0zOC42Yy0zNi41LTI0LTc5LjQtMzYuNS0xMjMtMzUuOC01MC43LS44LTExMS43IDI3LjItMTExLjcgNzYuMiAwIDE4LjcgMTEuMiAyMC43IDI4LjYgMTUuNiAyMy4zLTUuMyA0MS45LjYgNTUuOCAxNCAyNi40IDI0LjMgMjMuMiA2Ny42LS43IDkxLjktMjkuMiAyOS41LTg1LjIgMjcuMy0xMTQuOC04LjR6bTMxNy43IDUuOWMtMTUuNS0xOC44LTM4LjktMjkuNC02My4yLTI4LjYtMzguMS0yLTcxLjEgMjgtNzAuNSA2Ny4yLS43IDE2LjggNiAzMyAxOC40IDQ0LjMgMTQuMSAxMy45IDMzIDE5LjcgNTYuMyAxNC40IDE3LjQtNS4xIDI4LjYtMy4xIDI4LjYgMTUuNiAwIDQuMy0uNSA4LjUtMS40IDEyLjctMTYuNyA0MC45LTU5LjUgNjQuNC0xMjEuNCA2NC40LTUxLjkuMi0xMDIuNC0xNi40LTE0NC4xLTQ3LjNsMzMuNy0zOS40LTM1LjYtMjcuNEwwIDQwNi4zbDE1LjQgMTMuOGM1Mi41IDQ2LjggMTIwLjQgNzIuNSAxOTAuNyA3Mi4yIDUxLjQgMCA5NC40LTEwLjUgMTMzLjYtNDQuMSA1Ny4xLTUxLjQgNTQuMi0xNDkuMiAyMC4zLTE4OS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZWFyY2hlbmdpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDYwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjAuNiAxMzAuM2wtNjcuMiAyOC4yVjQzLjJMOTguNyAyMzMuNWw1NC43LTI0LjJ2MTMwLjNsNjcuMi0yMDkuM3ptLTgzLjItOTYuN2wtMS4zIDQuNy0xNS4yIDUyLjlDODAuNiAxMDYuNyA1MiAxNDUuOCA1MiAxOTEuNWMwIDUyLjMgMzQuMyA5NS45IDgzLjQgMTA1LjV2NTMuNkM1Ny41IDM0MC4xIDAgMjcyLjQgMCAxOTEuNmMwLTgwLjUgNTkuOC0xNDcuMiAxMzcuNC0xNTh6bTMxMS40IDQ0Ny4yYy0xMS4yIDExLjItMjMuMSAxMi4zLTI4LjYgMTAuNS01LjQtMS44LTI3LjEtMTkuOS02MC40LTQ0LjQtMzMuMy0yNC42LTMzLjYtMzUuNy00My01Ni43LTkuNC0yMC45LTMwLjQtNDIuNi01Ny41LTUyLjRsLTkuNy0xNC43Yy0yNC43IDE2LjktNTMgMjYuOS04MS4zIDI4LjdsMi4xLTYuNiAxNS45LTQ5LjVjNDYuNS0xMS45IDgwLjktNTQgODAuOS0xMDQuMiAwLTU0LjUtMzguNC0xMDIuMS05Ni0xMDcuMVYzMi4zQzI1NC40IDM3LjQgMzIwIDEwNi44IDMyMCAxOTEuNmMwIDMzLjYtMTEuMiA2NC43LTI5IDkwLjRsMTQuNiA5LjZjOS44IDI3LjEgMzEuNSA0OCA1Mi40IDU3LjRzMzIuMiA5LjcgNTYuOCA0M2MyNC42IDMzLjIgNDIuNyA1NC45IDQ0LjUgNjAuM3MuNyAxNy4zLTEwLjUgMjguNXptLTkuOS0xNy45YzAtNC40LTMuNi04LTgtOHMtOCAzLjYtOCA4IDMuNiA4IDggOCA4LTMuNiA4LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlbGxjYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1My40IDMySDk0LjdDNDIuNiAzMiAwIDc0LjYgMCAxMjYuNnYyNTguN0MwIDQzNy40IDQyLjYgNDgwIDk0LjcgNDgwaDI1OC43YzUyLjEgMCA5NC43LTQyLjYgOTQuNy05NC42VjEyNi42YzAtNTItNDIuNi05NC42LTk0LjctOTQuNnptLTUwIDMxNi40Yy0yNy45IDQ4LjItODkuOSA2NC45LTEzOC4yIDM3LjItMjIuOSAzOS44LTU0LjkgOC42LTQyLjMtMTMuMmwxNS43LTI3LjJjNS45LTEwLjMgMTkuMi0xMy45IDI5LjUtNy45IDE4LjYgMTAuOC0uMS0uMSAxOC41IDEwLjcgMjcuNiAxNS45IDYzLjQgNi4zIDc5LjQtMjEuMyAxNS45LTI3LjYgNi4zLTYzLjQtMjEuMy03OS40LTE3LjgtMTAuMi0uNi0uNC0xOC42LTEwLjYtMjQuNi0xNC4yLTMuNC01MS45IDIxLjYtMzcuNSAxOC42IDEwLjgtLjEtLjEgMTguNSAxMC43IDQ4LjQgMjggNjUuMSA5MC4zIDM3LjIgMTM4LjV6bTIxLjgtMjA4LjhjLTE3IDI5LjUtMTYuMyAyOC44LTE5IDMxLjUtNi41IDYuNS0xNi4zIDguNy0yNi41IDMuNi0xOC42LTEwLjguMS4xLTE4LjUtMTAuNy0yNy42LTE1LjktNjMuNC02LjMtNzkuNCAyMS4zcy02LjMgNjMuNCAyMS4zIDc5LjRjMCAwIDE4LjUgMTAuNiAxOC42IDEwLjYgMjQuNiAxNC4yIDMuNCA1MS45LTIxLjYgMzcuNS0xOC42LTEwLjguMS4xLTE4LjUtMTAuNy00OC4yLTI3LjgtNjQuOS05MC4xLTM3LjEtMTM4LjQgMjcuOS00OC4yIDg5LjktNjQuOSAxMzguMi0zNy4ybDQuOC04LjRjMTQuMy0yNC45IDUyLTMuMyAzNy43IDIxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlbGxzeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MzkuNzEgMjM3LjMwOGMzLjA2NC0xMi4yNTcgNC4yOS0yNC44MjEgNC4yOS0zNy4zODRDNTQ0IDEwNy4zODIgNDY4LjYxOCAzMiAzNzYuMDc2IDMyYy03Ny4yMiAwLTE0NC42MzQgNTMuMDEyLTE2My4wMiAxMjcuNzgxLTE1LjMyMi0xMy4xNzYtMzQuOTM0LTIwLjUzLTU1LjE1Ny0yMC41My00Ni4yNzEgMC04My45NjIgMzcuNjktODMuOTYyIDgzLjk2MSAwIDcuMzU0LjkyIDE1LjAxNSAzLjA2NSAyMi4zNjktNDIuOSAyMC4yMjUtNzAuNzg1IDYzLjczOC03MC43ODUgMTExLjIzNEM2LjIxNiA0MjQuODQzIDYxLjY4IDQ4MCAxMjkuNDAxIDQ4MGgzODEuMTk4YzY3LjcyIDAgMTIzLjE4NC01NS4xNTcgMTIzLjE4NC0xMjMuMTg0LjAwMS01Ni4zODQtMzguOTE2LTEwNi4wMjUtOTQuMDczLTExOS41MDh6TTE5OS44OCA0MDEuNTU0YzAgOC4yNzQtNy4wNDggMTUuMzIxLTE1LjMyMSAxNS4zMjFIMTUzLjYxYy04LjI3NCAwLTE1LjMyMS03LjA0OC0xNS4zMjEtMTUuMzIxVjI5MC42MjZjMC04LjI3MyA3LjA0OC0xNS4zMjEgMTUuMzIxLTE1LjMyMWgzMC45NDljOC4yNzQgMCAxNS4zMjEgNy4wNDggMTUuMzIxIDE1LjMyMXYxMTAuOTI4em04OS40NzcgMGMwIDguMjc0LTcuMDQ4IDE1LjMyMS0xNS4zMjIgMTUuMzIxaC0zMC45NDljLTguMjc0IDAtMTUuMzIxLTcuMDQ4LTE1LjMyMS0xNS4zMjFWMjcwLjA5NmMwLTguMjc0IDcuMDQ4LTE1LjMyMSAxNS4zMjEtMTUuMzIxaDMwLjk0OWM4LjI3NCAwIDE1LjMyMiA3LjA0OCAxNS4zMjIgMTUuMzIxdjEzMS40NTh6bTg5LjQ3NyAwYzAgOC4yNzQtNy4wNDcgMTUuMzIxLTE1LjMyMSAxNS4zMjFoLTMwLjk0OWMtOC4yNzQgMC0xNS4zMjItNy4wNDgtMTUuMzIyLTE1LjMyMVYyMzguODRjMC04LjI3NCA3LjA0OC0xNS4zMjEgMTUuMzIyLTE1LjMyMWgzMC45NDljOC4yNzQgMCAxNS4zMjEgNy4wNDggMTUuMzIxIDE1LjMyMXYxNjIuNzE0em04Ny4wMjcgMGMwIDguMjc0LTcuMDQ4IDE1LjMyMS0xNS4zMjIgMTUuMzIxaC0yOC40OTdjLTguMjc0IDAtMTUuMzIxLTcuMDQ4LTE1LjMyMS0xNS4zMjFWMTc2Ljk0MWMwLTguNTc5IDcuMDQ3LTE1LjYyOCAxNS4zMjEtMTUuNjI4aDI4LjQ5N2M4LjI3NCAwIDE1LjMyMiA3LjA0OCAxNS4zMjIgMTUuNjI4djIyNC42MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlcnZpY2VzdGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04OCAyMTZjODEuNyAxMC4yIDI3My43IDEwMi4zIDMwNCAyMzJIMGM5OS41LTguMSAxODQuNS0xMzcgODgtMjMyem0zMi0xNTJjMzIuMyAzNS42IDQ3LjcgODMuOSA0Ni40IDEzMy42QzI0OS4zIDIzMS4zIDM3My43IDMyMS4zIDQwMCA0NDhoOTZDNDU1LjMgMjMxLjkgMjIyLjggNzkuNSAxMjAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaXJ0c2luYnVsayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDAgNDEwLjNsMzAuNiAxMy40IDQuNC05LjktMzAuNi0xMy40em0zOS40IDE3LjVsMzAuNiAxMy40IDQuNC05LjktMzAuNi0xMy40em0xNzIuMS0xNGw0LjQgOS45IDMwLjYtMTMuNC00LjQtOS45ek0xNzkuMSA0NDVsMzAuMyAxMy43IDQuNC05LjktMzAuMy0xMy40ek02MC40IDM5Mi44TDkxIDQwNi4ybDQuNC05LjYtMzAuNi0xMy43em0yMTEuNCAzOC41bDQuNCA5LjkgMzAuNi0xMy40LTQuNC05Ljl6bS0zOS4zIDE3LjVsNC40IDkuOSAzMC42LTEzLjctNC40LTkuNnptMTE4LjQtNTIuMmw0LjQgOS42IDMwLjYtMTMuNC00LjQtOS45ek0xNzAgNDYuNmgtMzMuNXYxMC41SDE3MHptLTQ3LjIgMEg4OS4ydjEwLjVoMzMuNXptLTQ3LjMgMEg0Mi4zdjEwLjVoMzMuM3ptMTQxLjUgMGgtMzMuMnYxMC41SDIxN3ptOTQuNSAwSDI3OHYxMC41aDMzLjV6bTQ3LjMgMGgtMzMuNXYxMC41aDMzLjV6bS05NC42IDBIMjMxdjEwLjVoMzMuMnptMTQxLjUgMGgtMzMuM3YxMC41aDMzLjN6TTUyLjggMzUxLjFINDJ2MzMuNWgxMC44em03MC0yMTUuOUg4OS4ydjEwLjVoMzMuNXptLTcwIDEwLjZoMjIuOHYtMTAuNUg0MnYzMy41aDEwLjh6bTE2OC45IDIyOC42YzUwLjUgMCA5MS4zLTQwLjggOTEuMy05MS4zIDAtNTAuMi00MC44LTkxLjMtOTEuMy05MS4zLTUwLjIgMC05MS4zIDQxLjEtOTEuMyA5MS4zIDAgNTAuNSA0MS4xIDkxLjMgOTEuMyA5MS4zem0tNDguMi0xMTEuMWMwLTI1LjQgMjkuNS0zMS44IDQ5LjYtMzEuOCAxNi45IDAgMjkuMiA1LjggNDQuMyAxMmwtOC44IDE2LjloLS45Yy02LjQtOS45LTI0LjgtMTMuMS0zNS42LTEzLjEtOSAwLTI5LjggMS44LTI5LjggMTQuOSAwIDIxLjYgNzguNS0xMC4yIDc4LjUgMzcuOSAwIDI1LjQtMzEuNSAzMS4yLTUxIDMxLjItMTguMSAwLTMyLjQtMi45LTQ3LjItMTIuMmw5LTE4LjRoLjljNi4xIDEyLjIgMjMuNiAxNC45IDM1LjkgMTQuOSA4LjcgMCAzMi43LTEuMiAzMi43LTE0LjMgMC0yNi4xLTc3LjYgNi4zLTc3LjYtMzh6TTUyLjggMTc4LjRINDJWMjEyaDEwLjh6bTM0Mi40IDIwNi4ySDQwNnYtMzMuNWgtMTAuOHpNNTIuOCAzMDcuOUg0MnYzMy41aDEwLjh6TTAgMy43djQwNmwyMjEuNyA5OC42TDQ0OCA0MDkuN1YzLjd6bTQxOC44IDM4Ny4xTDIyMiA0NzYuNSAyOS4yIDM5MC44VjEyMC43aDM4OS43djI3MC4xem0wLTI5OS4zSDI5LjJWMzIuOWgzODkuN3Y1OC42em0tMzY2IDEzMC4xSDQydjMzLjVoMTAuOHptMCA0My4ySDQydjMzLjVoMTAuOHpNMTcwIDEzNS4yaC0zMy41djEwLjVIMTcwem0yMjUuMiAxNjMuMUg0MDZ2LTMzLjVoLTEwLjh6bTAtNDMuMkg0MDZ2LTMzLjVoLTEwLjh6TTIxNyAxMzUuMmgtMzMuMnYxMC41SDIxN3pNMzk1LjIgMjEySDQwNnYtMzMuNWgtMTAuOHptMCAxMjkuNUg0MDZWMzA4aC0xMC44em0tMTMxLTIwNi4zSDIzMXYxMC41aDMzLjJ6bTQ3LjMgMEgyNzh2MTAuNWgzMy41em04My43IDMzLjZINDA2di0zMy41aC0zMy41djEwLjVoMjIuOHptLTM2LjQtMzMuNmgtMzMuNXYxMC41aDMzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob3BpZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg4LjMyLDEwNC4xYTQuNjYsNC42NiwwLDAsMC00LjQtNGMtMiwwLTM3LjIzLS44LTM3LjIzLS44cy0yMS42MS0yMC44Mi0yOS42Mi0yOC44M1Y1MDMuMkw0NDIuNzYsNDcyUzM4OC43MiwxMDYuNSwzODguMzIsMTA0LjFaTTI4OC42NSw3MC40N2ExMTYuNjcsMTE2LjY3LDAsMCwwLTcuMjEtMTcuNjFDMjcxLDMyLjg1LDI1NS40MiwyMiwyMzcsMjJhMTUsMTUsMCwwLDAtNCwuNGMtLjQtLjgtMS4yLTEuMi0xLjYtMkMyMjMuNCwxMS42MywyMTMsNy42MywyMDAuNTgsOGMtMjQsLjgtNDgsMTgtNjcuMjUsNDguODMtMTMuNjEsMjEuNjItMjQsNDguODQtMjYuODIsNzAuMDYtMjcuNjIsOC40LTQ2LjgzLDE0LjQxLTQ3LjIzLDE0LjgxLTE0LDQuNC0xNC40MSw0LjgtMTYsMTgtMS4yLDEwLTM4LDI5MS44Mi0zOCwyOTEuODJMMzA3Ljg2LDUwNFY2NS42N2E0MS42Niw0MS42NiwwLDAsMC00LjQuNFMyOTcuODYsNjcuNjcsMjg4LjY1LDcwLjQ3Wk0yMzMuNDEsODcuNjljLTE2LDQuOC0zMy42MywxMC40LTUwLjg0LDE1LjYxLDQuOC0xOC44MiwxNC40MS0zNy42MywyNS42Mi01MCw0LjQtNC40LDEwLjQxLTkuNjEsMTcuMjEtMTIuODFDMjMyLjIxLDU0Ljg2LDIzMy44MSw3NC40OCwyMzMuNDEsODcuNjlaTTIwMC41OCwyNC40NEEyNy40OSwyNy40OSwwLDAsMSwyMTUsMjhjLTYuNCwzLjItMTIuODEsOC40MS0xOC44MSwxNC40MS0xNS4yMSwxNi40Mi0yNi44Miw0Mi0zMS42Miw2Ni40NS0xNC40Miw0LjQxLTI4LjgzLDguODEtNDIsMTIuODFDMTMxLjMzLDgzLjI4LDE2My43NSwyNS4yNCwyMDAuNTgsMjQuNDRaTTE1NC4xNSwyNDQuNjFjMS42LDI1LjYxLDY5LjI1LDMxLjIyLDczLjI1LDkxLjY2LDIuOCw0Ny42NC0yNS4yMiw4MC4wNi02NS42NSw4Mi40Ny00OC44MywzLjItNzUuNjUtMjUuNjItNzUuNjUtMjUuNjJsMTAuNC00NHMyNi44MiwyMC40Miw0OC40NCwxOC44MmMxNC0uOCwxOS4yMi0xMi40MSwxOC44MS0yMC40Mi0yLTMzLjYyLTU3LjI0LTMxLjYyLTYwLjg0LTg2Ljg2LTMuMi00Ni40NCwyNy4yMi05My4yNyw5NC40Ny05Ny42OCwyNi0xLjYsMzkuMjMsNC44MSwzOS4yMyw0LjgxTDIyMS40LDIyNS4zOXMtMTcuMjEtOC0zNy42My02LjRDMTU0LjE1LDIyMSwxNTMuNzUsMjM5LjgsMTU0LjE1LDI0NC42MVpNMjQ5LjQyLDgyLjg4YzAtMTItMS42LTI5LjIyLTcuMjEtNDMuNjMsMTguNDIsMy42LDI3LjIyLDI0LDMxLjIzLDM2LjQzUTI2Mi42Myw3OC42OCwyNDkuNDIsODIuODhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob3B3YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMy41IDQ1NS40MUEyNDYuMTcgMjQ2LjE3IDAgMCAxIDI1NiA1MDRDMTE4LjgxIDUwNCA4IDM5MyA4IDI1NiA4IDExOC44MSAxMTkgOCAyNTYgOGEyNDcuMzkgMjQ3LjM5IDAgMCAxIDE2NS43IDYzLjUgMy41NyAzLjU3IDAgMCAxLTIuODYgNi4xOEE0MTguNjIgNDE4LjYyIDAgMCAwIDM2Mi4xMyA3NGMtMTI5LjM2IDAtMjIyLjQgNTMuNDctMjIyLjQgMTU1LjM1IDAgMTA5IDkyLjEzIDE0NS44OCAxNzYuODMgMTc4LjczIDMzLjY0IDEzIDY1LjQgMjUuMzYgODcgNDEuNTlhMy41OCAzLjU4IDAgMCAxIDAgNS43MnpNNTAzIDIzMy4wOWEzLjY0IDMuNjQgMCAwIDAtMS4yNy0yLjQ0Yy01MS43Ni00My05My42Mi02MC40OC0xNDQuNDgtNjAuNDgtODQuMTMgMC04MC4yNSA1Mi4xNy04MC4yNSA1My42MyAwIDQyLjYgNTIuMDYgNjIgMTEyLjM0IDg0LjQ5IDMxLjA3IDExLjU5IDYzLjE5IDIzLjU3IDkyLjY4IDM5LjkzYTMuNTcgMy41NyAwIDAgMCA1LTEuODJBMjQ5IDI0OSAwIDAgMCA1MDMgMjMzLjA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaW1wbHlidWlsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODEuMiA2NGgtMTA2Yy0xNC41IDAtMjYuNiAxMS44LTI2LjYgMjYuM3YzOS42SDE2My4zVjkwLjNjMC0xNC41LTEyLTI2LjMtMjYuNi0yNi4zaC0xMDZDMTYuMSA2NCA0LjMgNzUuOCA0LjMgOTAuM3YzMzEuNGMwIDE0LjUgMTEuOCAyNi4zIDI2LjYgMjYuM2g0NTAuNGMxNC44IDAgMjYuNi0xMS44IDI2LjYtMjYuM1Y5MC4zYy0uMi0xNC41LTEyLTI2LjMtMjYuNy0yNi4zek0xNDkuOCAzNTUuOGMtMzYuNiAwLTY2LjQtMjkuNy02Ni40LTY2LjQgMC0zNi45IDI5LjctNjYuNiA2Ni40LTY2LjYgMzYuOSAwIDY2LjYgMjkuNyA2Ni42IDY2LjYgMCAzNi43LTI5LjcgNjYuNC02Ni42IDY2LjR6bTIxMi40IDBjLTM2LjkgMC02Ni42LTI5LjctNjYuNi02Ni42IDAtMzYuNiAyOS43LTY2LjQgNjYuNi02Ni40IDM2LjYgMCA2Ni40IDI5LjcgNjYuNCA2Ni40IDAgMzYuOS0yOS44IDY2LjYtNjYuNCA2Ni42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaXN0cml4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA0NDlMMzAxLjIgMzAwLjJjMjAtMjcuOSAzMS45LTYyLjIgMzEuOS05OS4yIDAtOTMuMS03NC43LTE2OC45LTE2Ni41LTE2OC45Qzc0LjcgMzIgMCAxMDcuOCAwIDIwMC45czc0LjcgMTY4LjkgMTY2LjUgMTY4LjljMzkuOCAwIDc2LjMtMTQuMiAxMDUtMzcuOWwxNDYgMTQ4LjEgMzAuNS0zMXpNMTY2LjUgMzMwLjhjLTcwLjYgMC0xMjguMS01OC4zLTEyOC4xLTEyOS45Uzk1LjkgNzEgMTY2LjUgNzFzMTI4LjEgNTguMyAxMjguMSAxMjkuOS01Ny40IDEyOS45LTEyOC4xIDEyOS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaXRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJsNjkuNzEgMTE4Ljc1LTU4Ljg2LTExLjUyIDY5Ljg0IDkxLjAzYTE0Ni43NDEgMTQ2Ljc0MSAwIDAgMCAwIDUxLjQ1bC02OS44NCA5MS4wMyA1OC44Ni0xMS41MkwwIDQ4MGwxMTguNzUtNjkuNzEtMTEuNTIgNTguODYgOTEuMDMtNjkuODRjMTcuMDIgMy4wNCAzNC40NyAzLjA0IDUxLjQ4IDBsOTEuMDMgNjkuODQtMTEuNTItNTguODZMNDQ4IDQ4MGwtNjkuNzEtMTE4Ljc4IDU4Ljg2IDExLjUyLTY5Ljg0LTkxLjAzYzMuMDMtMTcuMDEgMy4wNC0zNC40NCAwLTUxLjQ1bDY5Ljg0LTkxLjAzLTU4Ljg2IDExLjUyTDQ0OCAzMmwtMTE4Ljc1IDY5LjcxIDExLjUyLTU4LjktOTEuMDYgNjkuODdjLTguNS0xLjUyLTE3LjEtMi4yOS0yNS43MS0yLjI5cy0xNy4yMS43OC0yNS43MSAyLjI5bC05MS4wNi02OS44NyAxMS41MiA1OC45TDAgMzJ6bTIyNCA5OS43OGMzMS44IDAgNjMuNiAxMi4xMiA4Ny44NSAzNi4zNyA0OC41IDQ4LjUgNDguNDkgMTI3LjIxIDAgMTc1LjdzLTEyNy4yIDQ4LjQ2LTE3NS43LS4wM2MtNDguNS00OC41LTQ4LjQ5LTEyNy4yMSAwLTE3NS43IDI0LjI0LTI0LjI1IDU2LjA1LTM2LjM0IDg3Ljg1LTM2LjM0em0wIDM2LjY2Yy0yMi40MiAwLTQ0LjgzIDguNTItNjEuOTIgMjUuNjEtMzQuMTggMzQuMTgtMzQuMTkgODkuNjggMCAxMjMuODdzODkuNjUgMzQuMTggMTIzLjg0IDBjMzQuMTgtMzQuMTggMzQuMTktODkuNjggMC0xMjMuODctMTcuMDktMTcuMDktMzkuNS0yNS42MS02MS45Mi0yNS42MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2tldGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3LjUgMTYyLjJMOSAxODcuMWg5MC41bDYuOS0xMzAuNy03OC45IDEwNS44ek0zOTYuMyA0NS43TDI2Ny43IDMybDEzNS43IDE0Ny4yLTcuMS0xMzMuNXpNMTEyLjIgMjE4LjNsLTExLjItMjJIOS45TDIzNC44IDQ1OHptMi0zMS4yaDI4NGwtODEuNS04OC41TDI1Ni4zIDMzem0yOTcuMyA5LjFMMjc3LjYgNDU4bDIyNC44LTI2MS43aC05MC45ek00MTUuNCA2OUw0MDYgNTYuNGwuOSAxNy4zIDYuMSAxMTMuNGg5MC4zek0xMTMuNSA5My41bC00LjYgODUuNkwyNDQuNyAzMiAxMTYuMSA0NS43em0yODcuNyAxMDIuN2gtMjkwbDQyLjQgODIuOUwyNTYuMyA0ODBsMTQ0LjktMjgzLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNreWF0bGFzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAzMjkuM2MwIDY1LjktNTIuNSAxMTQuNC0xMTcuNSAxMTQuNC0xNjUuOSAwLTE5Ni42LTI0OS43LTM1OS43LTI0OS43LTE0Ni45IDAtMTQ3LjEgMjEyLjIgNS42IDIxMi4yIDQyLjUgMCA5MC45LTE3LjggMTI1LjMtNDIuNSA1LjYtNC4xIDE2LjktMTYuMyAyMi44LTE2LjNzMTAuOSA1IDEwLjkgMTAuOWMwIDcuOC0xMy4xIDE5LjEtMTguNyAyNC4xLTQwLjkgMzUuNi0xMDAuMyA2MS4yLTE1NC43IDYxLjItODMuNC4xLTE1NC01OS0xNTQtMTQ0LjlzNjcuNS0xNDkuMSAxNTIuOC0xNDkuMWMxODUuMyAwIDIyMi41IDI0NS45IDM2MS45IDI0NS45IDk5LjkgMCA5NC44LTEzOS43IDMuNC0xMzkuNy0xNy41IDAtMzUgMTEuNi00Ni45IDExLjYtOC40IDAtMTUuOS03LjItMTUuOS0xNS42IDAtMTEuNiA1LjMtMjMuNyA1LjMtMzYuMyAwLTY2LjYtNTAuOS0xMTQuNy0xMTYuOS0xMTQuNy01My4xIDAtODAgMzYuOS04OC44IDM2LjktNi4yIDAtMTEuMi01LTExLjItMTEuMiAwLTUuNiA0LjEtMTAuMyA3LjgtMTQuNCAyNS4zLTI4LjggNjQuNy00My43IDEwMi44LTQzLjcgNzkuNCAwIDEzOS4xIDU4LjQgMTM5LjEgMTM3LjggMCA2LjktLjMgMTMuNy0xLjIgMjAuNiAxMS45LTMuMSAyNC4xLTQuNyAzNS45LTQuNyA2MC43IDAgMTExLjkgNDUuMyAxMTEuOSAxMDcuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2t5cGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI0LjcgMjk5LjhjMi45LTE0IDQuNy0yOC45IDQuNy00My44IDAtMTEzLjUtOTEuOS0yMDUuMy0yMDUuMy0yMDUuMy0xNC45IDAtMjkuNyAxLjctNDMuOCA0LjdDMTYxLjMgNDAuNyAxMzcuNyAzMiAxMTIgMzIgNTAuMiAzMiAwIDgyLjIgMCAxNDRjMCAyNS43IDguNyA0OS4zIDIzLjMgNjguMi0yLjkgMTQtNC43IDI4LjktNC43IDQzLjggMCAxMTMuNSA5MS45IDIwNS4zIDIwNS4zIDIwNS4zIDE0LjkgMCAyOS43LTEuNyA0My44LTQuNyAxOSAxNC42IDQyLjYgMjMuMyA2OC4yIDIzLjMgNjEuOCAwIDExMi01MC4yIDExMi0xMTIgLjEtMjUuNi04LjYtNDkuMi0yMy4yLTY4LjF6bS0xOTQuNiA5MS41Yy02NS42IDAtMTIwLjUtMjkuMi0xMjAuNS02NSAwLTE2IDktMzAuNiAyOS41LTMwLjYgMzEuMiAwIDM0LjEgNDQuOSA4OC4xIDQ0LjkgMjUuNyAwIDQyLjMtMTEuNCA0Mi4zLTI2LjMgMC0xOC43LTE2LTIxLjYtNDItMjgtNjIuNS0xNS40LTExNy44LTIyLTExNy44LTg3LjIgMC01OS4yIDU4LjYtODEuMSAxMDkuMS04MS4xIDU1LjEgMCAxMTAuOCAyMS45IDExMC44IDU1LjQgMCAxNi45LTExLjQgMzEuOC0zMC4zIDMxLjgtMjguMyAwLTI5LjItMzMuNS03NS0zMy41LTI1LjcgMC00MiA3LTQyIDIyLjUgMCAxOS44IDIwLjggMjEuOCA2OS4xIDMzIDQxLjQgOS4zIDkwLjcgMjYuOCA5MC43IDc3LjYgMCA1OS4xLTU3LjEgODYuNS0xMTIgODYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2xhY2tIYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ni4yIDI3MC40Yy02LjItMTktMjYuOS0yOS4xLTQ2LTIyLjlsLTQ1LjQgMTUuMS0zMC4zLTkwIDQ1LjQtMTUuMWMxOS4xLTYuMiAyOS4xLTI2LjggMjMtNDUuOS02LjItMTktMjYuOS0yOS4xLTQ2LTIyLjlsLTQ1LjQgMTUuMS0xNS43LTQ3Yy02LjItMTktMjYuOS0yOS4xLTQ2LTIyLjktMTkuMSA2LjItMjkuMSAyNi44LTIzIDQ1LjlsMTUuNyA0Ny05My40IDMxLjItMTUuNy00N2MtNi4yLTE5LTI2LjktMjkuMS00Ni0yMi45LTE5LjEgNi4yLTI5LjEgMjYuOC0yMyA0NS45bDE1LjcgNDctNDUuMyAxNWMtMTkuMSA2LjItMjkuMSAyNi44LTIzIDQ1LjkgNSAxNC41IDE5LjEgMjQgMzMuNiAyNC42IDYuOCAxIDEyLTEuNiA1Ny43LTE2LjhsMzAuMyA5MEw3OCAzNTQuOGMtMTkgNi4yLTI5LjEgMjYuOS0yMyA0NS45IDUgMTQuNSAxOS4xIDI0IDMzLjYgMjQuNiA2LjggMSAxMi0xLjYgNTcuNy0xNi44bDE1LjcgNDdjNS45IDE2LjkgMjQuNyAyOSA0NiAyMi45IDE5LjEtNi4yIDI5LjEtMjYuOCAyMy00NS45bC0xNS43LTQ3IDkzLjYtMzEuMyAxNS43IDQ3YzUuOSAxNi45IDI0LjcgMjkgNDYgMjIuOSAxOS4xLTYuMiAyOS4xLTI2LjggMjMtNDUuOWwtMTUuNy00NyA0NS40LTE1LjFjMTktNiAyOS4xLTI2LjcgMjIuOS00NS43em0tMjU0LjEgNDcuMmwtMzAuMy05MC4yIDkzLjUtMzEuMyAzMC4zIDkwLjItOTMuNSAzMS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NC4xMiAzMTUuMWMwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZTMCAzNDEgMCAzMTUuMWMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZoNDcuMDZ2NDcuMDZ6bTIzLjcyIDBjMC0yNS45IDIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2czQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2djExNy44NGMwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZzLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2VjMxNS4xem00Ny4wNi0xODguOThjLTI1LjkgMC00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNlMxMzkgMzIgMTY0LjkgMzJzNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZ2NDcuMDZIMTY0Ljl6bTAgMjMuNzJjMjUuOSAwIDQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2cy0yMS4xNiA0Ny4wNi00Ny4wNiA0Ny4wNkg0Ny4wNkMyMS4xNiAyNDMuOTYgMCAyMjIuOCAwIDE5Ni45czIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2SDE2NC45em0xODguOTggNDcuMDZjMC0yNS45IDIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2IDI1LjkgMCA0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNnMtMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZoLTQ3LjA2VjE5Ni45em0tMjMuNzIgMGMwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDYtMjUuOSAwLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2Vjc5LjA2YzAtMjUuOSAyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNiAyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZWMTk2Ljl6TTI4My4xIDM4NS44OGMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDYgMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2LTI1LjkgMC00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNnYtNDcuMDZoNDcuMDZ6bTAtMjMuNzJjLTI1LjkgMC00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNiAwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZoMTE3Ljg0YzI1LjkgMCA0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNiAwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZIMjgzLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNsaWRlc2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg3LjcgMTUzLjdjLTM0IDAtNjEuNyAyNS43LTYxLjcgNTcuNyAwIDMxLjcgMjcuNyA1Ny43IDYxLjcgNTcuN3M2MS43LTI2IDYxLjctNTcuN2MwLTMyLTI3LjctNTcuNy02MS43LTU3Ljd6bTE0My40IDBjLTM0IDAtNjEuNyAyNS43LTYxLjcgNTcuNyAwIDMxLjcgMjcuNyA1Ny43IDYxLjcgNTcuNyAzNC4zIDAgNjEuNy0yNiA2MS43LTU3LjcuMS0zMi0yNy40LTU3LjctNjEuNy01Ny43em0xNTYuNiA5MGwtNiA0LjNWNDkuN2MwLTI3LjQtMjAuNi00OS43LTQ2LTQ5LjdINzYuNmMtMjUuNCAwLTQ2IDIyLjMtNDYgNDkuN1YyNDhjLTItMS40LTQuMy0yLjktNi4zLTQuMy0xNS4xLTEwLjYtMjUuMSA0LTE2IDE3LjcgMTguMyAyMi42IDUzLjEgNTAuMyAxMDYuMyA3MkM1OC4zIDUyNS4xIDI1MiA1NTUuNyAyNDguOSA0NTcuNWMwLS43LjMtNTYuNi4zLTk2LjYgNS4xIDEuMSA5LjQgMi4zIDEzLjcgMy4xIDAgMzkuNy4zIDkyLjguMyA5My41LTMuMSA5OC4zIDE5MC42IDY3LjcgMTM0LjMtMTI0IDUzLjEtMjEuNyA4OC00OS40IDEwNi4zLTcyIDkuMS0xMy44LS45LTI4LjMtMTYuMS0xNy44em0tMzAuNSAxOS4yYy02OC45IDM3LjQtMTI4LjMgMzEuMS0xNjAuNiAyOS43LTIzLjctLjktMzIuNiA5LjEtMzMuNyAyNC45LTEwLjMtNy43LTE4LjYtMTUuNS0yMC4zLTE3LjEtNS4xLTUuNC0xMy43LTgtMjcuMS03LjctMzEuNyAxLjEtODkuNyA3LjQtMTU3LjQtMjhWNzIuM2MwLTM0LjkgOC45LTQ1LjcgNDAuNi00NS43aDMxNy43YzMwLjMgMCA0MC45IDEyLjkgNDAuOSA0NS43djE5MC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbmFwY2hhdEdob3N0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMC44NDYgMzkyLjY3M2MtNS4yMTEgMTIuMTU3LTI3LjIzOSAyMS4wODktNjcuMzYgMjcuMzE4LTIuMDY0IDIuNzg2LTMuNzc1IDE0LjY4Ni02LjUwNyAyMy45NTYtMS42MjUgNS41NjYtNS42MjMgOC44NjktMTIuMTI4IDguODY5bC0uMjk3LS4wMDVjLTkuMzk1IDAtMTkuMjAzLTQuMzIzLTM4Ljg1Mi00LjMyMy0yNi41MjEgMC0zNS42NjIgNi4wNDMtNTYuMjU0IDIwLjU4OC0yMS44MzIgMTUuNDM4LTQyLjc3MSAyOC43NjQtNzQuMDI3IDI3LjM5OS0zMS42NDYgMi4zMzQtNTguMDI1LTE2LjkwOC03Mi44NzEtMjcuNDA0LTIwLjcxNC0xNC42NDMtMjkuODI4LTIwLjU4Mi01Ni4yNDEtMjAuNTgyLTE4Ljg2NCAwLTMwLjczNiA0LjcyLTM4Ljg1MiA0LjcyLTguMDczIDAtMTEuMjEzLTQuOTIyLTEyLjQyMi05LjA0LTIuNzAzLTkuMTg5LTQuNDA0LTIxLjI2My02LjUyMy0yNC4xMy0yMC42NzktMy4yMDktNjcuMzEtMTEuMzQ0LTY4LjQ5OC0zMi4xNWExMC42MjcgMTAuNjI3IDAgMCAxIDguODc3LTExLjA2OWM2OS41ODMtMTEuNDU1IDEwMC45MjQtODIuOTAxIDEwMi4yMjctODUuOTM0LjA3NC0uMTc2LjE1NS0uMzQ0LjIzNy0uNTE1IDMuNzEzLTcuNTM3IDQuNTQ0LTEzLjg0OSAyLjQ2My0xOC43NTMtNS4wNS0xMS44OTYtMjYuODcyLTE2LjE2NC0zNi4wNTMtMTkuNzk2LTIzLjcxNS05LjM2Ni0yNy4wMTUtMjAuMTI4LTI1LjYxMi0yNy41MDQgMi40MzctMTIuODM2IDIxLjcyNS0yMC43MzUgMzMuMDAyLTE1LjQ1MyA4LjkxOSA0LjE4MSAxNi44NDMgNi4yOTcgMjMuNTQ3IDYuMjk3IDUuMDIyIDAgOC4yMTItMS4yMDQgOS45Ni0yLjE3MS0yLjA0My0zNS45MzYtNy4xMDEtODcuMjkgNS42ODctMTE1Ljk2OUMxNTguMTIyIDIxLjMwNCAyMjkuNzA1IDE1LjQyIDI1MC44MjYgMTUuNDJjLjk0NCAwIDkuMTQxLS4wODkgMTAuMTEtLjA4OSA1Mi4xNDggMCAxMDIuMjU0IDI2Ljc4IDEyNi43MjMgODEuNjQzIDEyLjc3NyAyOC42NSA3Ljc0OSA3OS43OTIgNS42OTUgMTE2LjAwOSAxLjU4Mi44NzIgNC4zNTcgMS45NDIgOC41OTkgMi4xMzkgNi4zOTctLjI4NiAxMy44MTUtMi4zODkgMjIuMDY5LTYuMjU3IDYuMDg1LTIuODQ2IDE0LjQwNi0yLjQ2MSAyMC40OC4wNThsLjAyOS4wMWM5LjQ3NiAzLjM4NSAxNS40MzkgMTAuMjE1IDE1LjU4OSAxNy44Ny4xODQgOS43NDctOC41MjIgMTguMTY1LTI1Ljg3OCAyNS4wMTgtMi4xMTguODM1LTQuNjk0IDEuNjU1LTcuNDM0IDIuNTI1LTkuNzk3IDMuMTA2LTI0LjYgNy44MDUtMjguNjE2IDE3LjI3MS0yLjA3OSA0LjkwNC0xLjI1NiAxMS4yMTEgMi40NiAxOC43NDguMDg3LjE2OC4xNjYuMzQyLjIzOS41MTUgMS4zMDEgMy4wMyAzMi42MTUgNzQuNDYgMTAyLjIzIDg1LjkzNCA2LjQyNyAxLjA1OCAxMS4xNjMgNy44NzcgNy43MjUgMTUuODU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbmFwY2hhdFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tNi41IDMxNC45Yy0zLjUgOC4xLTE4LjEgMTQtNDQuOCAxOC4yLTEuNCAxLjktMi41IDkuOC00LjMgMTUuOS0xLjEgMy43LTMuNyA1LjktOC4xIDUuOWgtLjJjLTYuMiAwLTEyLjgtMi45LTI1LjgtMi45LTE3LjYgMC0yMy43IDQtMzcuNCAxMy43LTE0LjUgMTAuMy0yOC40IDE5LjEtNDkuMiAxOC4yLTIxIDEuNi0zOC42LTExLjItNDguNS0xOC4yLTEzLjgtOS43LTE5LjgtMTMuNy0zNy40LTEzLjctMTIuNSAwLTIwLjQgMy4xLTI1LjggMy4xLTUuNCAwLTcuNS0zLjMtOC4zLTYtMS44LTYuMS0yLjktMTQuMS00LjMtMTYtMTMuOC0yLjEtNDQuOC03LjUtNDUuNS0yMS40LS4yLTMuNiAyLjMtNi44IDUuOS03LjQgNDYuMy03LjYgNjcuMS01NS4xIDY4LTU3LjEgMC0uMS4xLS4yLjItLjMgMi41LTUgMy05LjIgMS42LTEyLjUtMy40LTcuOS0xNy45LTEwLjctMjQtMTMuMi0xNS44LTYuMi0xOC0xMy40LTE3LTE4LjMgMS42LTguNSAxNC40LTEzLjggMjEuOS0xMC4zIDUuOSAyLjggMTEuMiA0LjIgMTUuNyA0LjIgMy4zIDAgNS41LS44IDYuNi0xLjQtMS40LTIzLjktNC43LTU4IDMuOC03Ny4xQzE1OS4xIDEwMCAyMDYuNyA5NiAyMjAuNyA5NmMuNiAwIDYuMS0uMSA2LjctLjEgMzQuNyAwIDY4IDE3LjggODQuMyA1NC4zIDguNSAxOS4xIDUuMiA1My4xIDMuOCA3Ny4xIDEuMS42IDIuOSAxLjMgNS43IDEuNCA0LjMtLjIgOS4yLTEuNiAxNC43LTQuMiA0LTEuOSA5LjYtMS42IDEzLjYgMCA2LjMgMi4zIDEwLjMgNi44IDEwLjQgMTEuOS4xIDYuNS01LjcgMTIuMS0xNy4yIDE2LjYtMS40LjYtMy4xIDEuMS00LjkgMS43LTYuNSAyLjEtMTYuNCA1LjItMTkgMTEuNS0xLjQgMy4zLS44IDcuNSAxLjYgMTIuNS4xLjEuMS4yLjIuMy45IDIgMjEuNyA0OS41IDY4IDU3LjEgNCAxIDcuMSA1LjUgNC45IDEwLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNuYXBjaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTE2OS41IDMzOC45Yy0zLjUgOC4xLTE4LjEgMTQtNDQuOCAxOC4yLTEuNCAxLjktMi41IDkuOC00LjMgMTUuOS0xLjEgMy43LTMuNyA1LjktOC4xIDUuOWgtLjJjLTYuMiAwLTEyLjgtMi45LTI1LjgtMi45LTE3LjYgMC0yMy43IDQtMzcuNCAxMy43LTE0LjUgMTAuMy0yOC40IDE5LjEtNDkuMiAxOC4yLTIxIDEuNi0zOC42LTExLjItNDguNS0xOC4yLTEzLjgtOS43LTE5LjgtMTMuNy0zNy40LTEzLjctMTIuNSAwLTIwLjQgMy4xLTI1LjggMy4xLTUuNCAwLTcuNS0zLjMtOC4zLTYtMS44LTYuMS0yLjktMTQuMS00LjMtMTYtMTMuOC0yLjEtNDQuOC03LjUtNDUuNS0yMS40LS4yLTMuNiAyLjMtNi44IDUuOS03LjQgNDYuMy03LjYgNjcuMS01NS4xIDY4LTU3LjEgMC0uMS4xLS4yLjItLjMgMi41LTUgMy05LjIgMS42LTEyLjUtMy40LTcuOS0xNy45LTEwLjctMjQtMTMuMi0xNS44LTYuMi0xOC0xMy40LTE3LTE4LjMgMS42LTguNSAxNC40LTEzLjggMjEuOS0xMC4zIDUuOSAyLjggMTEuMiA0LjIgMTUuNyA0LjIgMy4zIDAgNS41LS44IDYuNi0xLjQtMS40LTIzLjktNC43LTU4IDMuOC03Ny4xQzE4My4xIDEwMCAyMzAuNyA5NiAyNDQuNyA5NmMuNiAwIDYuMS0uMSA2LjctLjEgMzQuNyAwIDY4IDE3LjggODQuMyA1NC4zIDguNSAxOS4xIDUuMiA1My4xIDMuOCA3Ny4xIDEuMS42IDIuOSAxLjMgNS43IDEuNCA0LjMtLjIgOS4yLTEuNiAxNC43LTQuMiA0LTEuOSA5LjYtMS42IDEzLjYgMCA2LjMgMi4zIDEwLjMgNi44IDEwLjQgMTEuOS4xIDYuNS01LjcgMTIuMS0xNy4yIDE2LjYtMS40LjYtMy4xIDEuMS00LjkgMS43LTYuNSAyLjEtMTYuNCA1LjItMTkgMTEuNS0xLjQgMy4zLS44IDcuNSAxLjYgMTIuNS4xLjEuMS4yLjIuMy45IDIgMjEuNyA0OS41IDY4IDU3LjEgNCAxIDcuMSA1LjUgNC45IDEwLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvdW5kY2xvdWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTExLjQgMjU2LjNsNS44IDY1LTUuOCA2OC4zYy0uMyAyLjUtMi4yIDQuNC00LjQgNC40cy00LjItMS45LTQuMi00LjRsLTUuNi02OC4zIDUuNi02NWMwLTIuMiAxLjktNC4yIDQuMi00LjIgMi4yIDAgNC4xIDIgNC40IDQuMnptMjEuNC00NS42Yy0yLjggMC00LjcgMi4yLTUgNWwtNSAxMDUuNiA1IDY4LjNjLjMgMi44IDIuMiA1IDUgNSAyLjUgMCA0LjctMi4yIDQuNy01bDUuOC02OC4zLTUuOC0xMDUuNmMwLTIuOC0yLjItNS00LjctNXptMjUuNS0yNC4xYy0zLjEgMC01LjMgMi4yLTUuNiA1LjNsLTQuNCAxMzAgNC40IDY3LjhjLjMgMy4xIDIuNSA1LjMgNS42IDUuMyAyLjggMCA1LjMtMi4yIDUuMy01LjNsNS4zLTY3LjgtNS4zLTEzMGMwLTMuMS0yLjUtNS4zLTUuMy01LjN6TTcuMiAyODMuMmMtMS40IDAtMi4yIDEuMS0yLjUgMi41TDAgMzIxLjNsNC43IDM1Yy4zIDEuNCAxLjEgMi41IDIuNSAyLjVzMi4yLTEuMSAyLjUtMi41bDUuNi0zNS01LjYtMzUuNmMtLjMtMS40LTEuMS0yLjUtMi41LTIuNXptMjMuNi0yMS45Yy0xLjQgMC0yLjUgMS4xLTIuNSAyLjVsLTYuNCA1Ny41IDYuNCA1Ni4xYzAgMS43IDEuMSAyLjggMi41IDIuOHMyLjUtMS4xIDIuOC0yLjVsNy4yLTU2LjQtNy4yLTU3LjVjLS4zLTEuNC0xLjQtMi41LTIuOC0yLjV6bTI1LjMtMTEuNGMtMS43IDAtMy4xIDEuNC0zLjMgMy4zTDQ3IDMyMS4zbDUuOCA2NS44Yy4zIDEuNyAxLjcgMy4xIDMuMyAzLjEgMS43IDAgMy4xLTEuNCAzLjEtMy4xbDYuOS02NS44LTYuOS02OC4xYzAtMS45LTEuNC0zLjMtMy4xLTMuM3ptMjUuMy0yLjJjLTEuOSAwLTMuNiAxLjQtMy42IDMuNmwtNS44IDcwIDUuOCA2Ny44YzAgMi4yIDEuNyAzLjYgMy42IDMuNnMzLjYtMS40IDMuOS0zLjZsNi40LTY3LjgtNi40LTcwYy0uMy0yLjItMi0zLjYtMy45LTMuNnptMjQxLjQtMTEwLjljLTEuMS0uOC0yLjgtMS40LTQuMi0xLjQtMi4yIDAtNC4yLjgtNS42IDEuOS0xLjkgMS43LTMuMSA0LjItMy4zIDYuN3YuOGwtMy4zIDE3Ni43IDEuNyAzMi41IDEuNyAzMS43Yy4zIDQuNyA0LjIgOC42IDguOSA4LjZzOC42LTMuOSA4LjYtOC42bDMuOS02NC4yLTMuOS0xNzcuNWMtLjQtMy0yLTUuOC00LjUtNy4yem0tMjYuNyAxNS4zYy0xLjQtLjgtMi44LTEuNC00LjQtMS40cy0zLjEuNi00LjQgMS40Yy0yLjIgMS40LTMuNiAzLjktMy42IDYuN2wtLjMgMS43LTIuOCAxNjAuOHMwIC4zIDMuMSA2NS42di4zYzAgMS43LjYgMy4zIDEuNyA0LjcgMS43IDEuOSAzLjkgMy4xIDYuNCAzLjEgMi4yIDAgNC4yLTEuMSA1LjYtMi41IDEuNy0xLjQgMi41LTMuMyAyLjUtNS42bC4zLTYuNyAzLjEtNTguNi0zLjMtMTYyLjhjLS4zLTIuOC0xLjctNS4zLTMuOS02Ljd6bS0xMTEuNCAyMi41Yy0zLjEgMC01LjggMi44LTUuOCA2LjFsLTQuNCAxNDAuNiA0LjQgNjcuMmMuMyAzLjMgMi44IDUuOCA1LjggNS44IDMuMyAwIDUuOC0yLjUgNi4xLTUuOGw1LTY3LjItNS0xNDAuNmMtLjItMy4zLTIuNy02LjEtNi4xLTYuMXptMzc2LjcgNjIuOGMtMTAuOCAwLTIxLjEgMi4yLTMwLjYgNi4xLTYuNC03MC44LTY1LjgtMTI2LjQtMTM4LjMtMTI2LjQtMTcuOCAwLTM1IDMuMy01MC4zIDkuNC02LjEgMi4yLTcuOCA0LjQtNy44IDkuMnYyNDkuN2MwIDUgMy45IDguNiA4LjYgOS4yaDIxOC4zYzQzLjMgMCA3OC42LTM1IDc4LjYtNzguMy4xLTQzLjYtMzUuMi03OC45LTc4LjUtNzguOXptLTI5Ni43LTYwLjNjLTQuMiAwLTcuNSAzLjMtNy44IDcuOGwtMy4zIDEzNi43IDMuMyA2NS42Yy4zIDQuMiAzLjYgNy41IDcuOCA3LjUgNC4yIDAgNy41LTMuMyA3LjUtNy41bDMuOS02NS42LTMuOS0xMzYuN2MtLjMtNC41LTMuMy03LjgtNy41LTcuOHptLTUzLjYtNy44Yy0zLjMgMC02LjQgMy4xLTYuNCA2LjdsLTMuOSAxNDUuMyAzLjkgNjYuOWMuMyAzLjYgMy4xIDYuNCA2LjQgNi40IDMuNiAwIDYuNC0yLjggNi43LTYuNGw0LjQtNjYuOS00LjQtMTQ1LjNjLS4zLTMuNi0zLjEtNi43LTYuNy02Ljd6bTI2LjcgMy40Yy0zLjkgMC02LjkgMy4xLTYuOSA2LjlMMjI3IDMyMS4zbDMuOSA2Ni40Yy4zIDMuOSAzLjEgNi45IDYuOSA2LjlzNi45LTMuMSA2LjktNi45bDQuMi02Ni40LTQuMi0xNDEuN2MwLTMuOS0zLTYuOS02LjktNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3VyY2V0cmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyNy4yIDIwM2MwLTExMi4xLTkwLjktMjAzLTIwMy0yMDNDMTEyLjEtLjIgMjEuMiA5MC42IDIxIDIwMi42QTIwMi44NiAyMDIuODYgMCAwIDAgMTYxLjUgMzk2djEwMS43YTE0LjMgMTQuMyAwIDAgMCAxNC4zIDE0LjNoOTYuNGExNC4zIDE0LjMgMCAwIDAgMTQuMy0xNC4zVjM5Ni4xQTIwMy4xOCAyMDMuMTggMCAwIDAgNDI3LjIgMjAzem0tMjcxLjYgMGMwLTkwLjggMTM3LjMtOTAuOCAxMzcuMyAwLS4xIDg5LjktMTM3LjMgOTEtMTM3LjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BlYWthcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzOTEuNzhDLTE1LjQxIDMwMy41OS04IDE2Ny40MiA4MC42NCA4Ny42NHMyMjQuOC03MyAzMDQuMjEgMTUuMjQgNzIgMjI0LjM2LTE2LjY0IDMwNC4xNGMtMTguNzQgMTYuODcgNjQgNDMuMDkgNDIgNTIuMjYtODIuMDYgMzQuMjEtMjUzLjkxIDM1LTM0Ni4yMy02Ny41em0yMTMuMzEtMjExLjZsMzguNS00MC44NmMtOS42MS04Ljg5LTMyLTI2LjgzLTc2LjE3LTI3LjYtNTIuMzMtLjkxLTk1Ljg2IDI4LjMtOTYuNzcgODAtLjIgMTEuMzMuMjkgMzYuNzIgMjkuNDIgNTQuODMgMzQuNDYgMjEuNDIgODYuNTIgMjEuNTEgODYgNTIuMjYtLjM3IDIxLjI4LTI2LjQyIDI1LjgxLTM4LjU5IDI1LjYtMy0uMDUtMzAuMjMtLjQ2LTQ3LjYxLTI0LjYybC00MCA0Mi42MWMyOC4xNiAyNyA1OSAzMi42MiA4My40OSAzMy4wNSAxMC4yMy4xOCA5Ni40Mi4zMyA5Ny44NC04MSAuMjgtMTUuODEtMi4wNy0zOS43Mi0yOC44Ni01Ni41OS0zNC4zNi0yMS42NC04NS0xOS40NS04NC40My00OS43NS40MS0yMy4yNSAzMS0yNS4zNyAzNy41My0yNS4yNi40MyAwIDI2LjYyLjI2IDM5LjYyIDE3LjM3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGVha2VyRGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTMuODYgMjk2SDEwMGExMDAgMTAwIDAgMCAxIDAtMjAwaDEzMi44NGE0MCA0MCAwIDAgMSAwIDgwSDk4Yy0yNi40NyAwLTI2LjQ1IDQwIDAgNDBoMTEzLjgyYTEwMCAxMDAgMCAwIDEgMCAyMDBINDBhNDAgNDAgMCAwIDEgMC04MGgxNzMuODZjMjYuNDggMCAyNi40Ni00MCAwLTQwek0yOTggNDE2YTEyMC4yMSAxMjAuMjEgMCAwIDAgNTEuMTEtODBoNjQuNTVhMTkuODMgMTkuODMgMCAwIDAgMTkuNjYtMjBWMTk2YTE5LjgzIDE5LjgzIDAgMCAwLTE5LjY2LTIwSDI5Ni40MmE2MC43NyA2MC43NyAwIDAgMCAwLTgwaDEzNi45M2M0My40NCAwIDc4LjY1IDM1LjgyIDc4LjY1IDgwdjE2MGMwIDQ0LjE4LTM1LjIxIDgwLTc4LjY1IDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcG90aWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4xIDggMCAxMTkuMSAwIDI1NnMxMTEuMSAyNDggMjQ4IDI0OCAyNDgtMTExLjEgMjQ4LTI0OFMzODQuOSA4IDI0OCA4em0xMDAuNyAzNjQuOWMtNC4yIDAtNi44LTEuMy0xMC43LTMuNi02Mi40LTM3LjYtMTM1LTM5LjItMjA2LjctMjQuNS0zLjkgMS05IDIuNi0xMS45IDIuNi05LjcgMC0xNS44LTcuNy0xNS44LTE1LjggMC0xMC4zIDYuMS0xNS4yIDEzLjYtMTYuOCA4MS45LTE4LjEgMTY1LjYtMTYuNSAyMzcgMjYuMiA2LjEgMy45IDkuNyA3LjQgOS43IDE2LjVzLTcuMSAxNS40LTE1LjIgMTUuNHptMjYuOS02NS42Yy01LjIgMC04LjctMi4zLTEyLjMtNC4yLTYyLjUtMzctMTU1LjctNTEuOS0yMzguNi0yOS40LTQuOCAxLjMtNy40IDIuNi0xMS45IDIuNi0xMC43IDAtMTkuNC04LjctMTkuNC0xOS40czUuMi0xNy44IDE1LjUtMjAuN2MyNy44LTcuOCA1Ni4yLTEzLjYgOTcuOC0xMy42IDY0LjkgMCAxMjcuNiAxNi4xIDE3NyA0NS41IDguMSA0LjggMTEuMyAxMSAxMS4zIDE5LjctLjEgMTAuOC04LjUgMTkuNS0xOS40IDE5LjV6bTMxLTc2LjJjLTUuMiAwLTguNC0xLjMtMTIuOS0zLjktNzEuMi00Mi41LTE5OC41LTUyLjctMjgwLjktMjkuNy0zLjYgMS04LjEgMi42LTEyLjkgMi42LTEzLjIgMC0yMy4zLTEwLjMtMjMuMy0yMy42IDAtMTMuNiA4LjQtMjEuMyAxNy40LTIzLjkgMzUuMi0xMC4zIDc0LjYtMTUuMiAxMTcuNS0xNS4yIDczIDAgMTQ5LjUgMTUuMiAyMDUuNCA0Ny44IDcuOCA0LjUgMTIuOSAxMC43IDEyLjkgMjIuNiAwIDEzLjYtMTEgMjMuMy0yMy4yIDIzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZXNwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni4xMiAzNDMuMzRjLTkuNjUgOS42NS05LjY1IDI1LjI5IDAgMzQuOTQgOS42NSA5LjY1IDI1LjI5IDkuNjUgMzQuOTQgMEwzNzguMjQgMjIxLjFjMTkuMjktMTkuMjkgNTAuNTctMTkuMjkgNjkuODYgMHMxOS4yOSA1MC41NyAwIDY5Ljg2TDI5My45NSA0NDUuMWMxOS4yNyAxOS4yOSA1MC41MyAxOS4zMSA2OS44Mi4wNGwuMDQtLjA0IDExOS4yNS0xMTkuMjRjMzguNTktMzguNTkgMzguNTktMTAxLjE0IDAtMTM5LjcyLTM4LjU5LTM4LjU5LTEwMS4xNS0zOC41OS0xMzkuNzIgMGwtMTU3LjIyIDE1Ny4yem0yNDQuNTMtMTA0LjhjLTkuNjUtOS42NS0yNS4yOS05LjY1LTM0LjkzIDBsLTE1Ny4yIDE1Ny4xOGMtMTkuMjcgMTkuMjktNTAuNTMgMTkuMzEtNjkuODIuMDVsLS4wNS0uMDVjLTkuNjQtOS42NC0yNS4yNy05LjY1LTM0LjkyLS4wMWwtLjAxLjAxYy05LjY1IDkuNjQtOS42NiAyNS4yOC0uMDIgMzQuOTNsLjAyLjAyYzM4LjU4IDM4LjU3IDEwMS4xNCAzOC41NyAxMzkuNzIgMGwxNTcuMi0xNTcuMmM5LjY1LTkuNjUgOS42NS0yNS4yOS4wMS0zNC45M3ptLTI2MS45OSA4Ny4zM2wxNTcuMTgtMTU3LjE4YzkuNjQtOS42NSA5LjY0LTI1LjI5IDAtMzQuOTQtOS42NC05LjY0LTI1LjI3LTkuNjQtMzQuOTEgMEwxMzMuNzIgMjkwLjkzYy0xOS4yOCAxOS4yOS01MC41NiAxOS4zLTY5Ljg1LjAxbC0uMDEtLjAxYy0xOS4yOS0xOS4yOC0xOS4zMS01MC41NC0uMDMtNjkuODRsLjAzLS4wM0wyMTguMDMgNjYuODljLTE5LjI4LTE5LjI5LTUwLjU1LTE5LjMtNjkuODUtLjAybC0uMDIuMDJMMjguOTMgMTg2LjE0Yy0zOC41OCAzOC41OS0zOC41OCAxMDEuMTQgMCAxMzkuNzIgMzguNiAzOC41OSAxMDEuMTMgMzguNTkgMTM5LjczLjAxem0tODcuMzMtNTIuNGM5LjY0IDkuNjQgMjUuMjcgOS42NCAzNC45MSAwbDE1Ny4yMS0xNTcuMTljMTkuMjgtMTkuMjkgNTAuNTUtMTkuMyA2OS44NC0uMDJsLjAyLjAyYzkuNjUgOS42NSAyNS4yOSA5LjY1IDM0LjkzIDAgOS42NS05LjY1IDkuNjUtMjUuMjkgMC0zNC45My0zOC41OS0zOC41OS0xMDEuMTMtMzguNTktMTM5LjcyIDBMODEuMzMgMjM4LjU0Yy05LjY1IDkuNjQtOS42NSAyNS4yOC0uMDEgMzQuOTNoLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFja0V4Y2hhbmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjcgMzMyLjNoNDEyLjd2MjJjMCAzNy43LTI5LjMgNjgtNjUuMyA2OGgtMTlMMjU5LjMgNTEydi04OS43SDgzYy0zNiAwLTY1LjMtMzAuMy02NS4zLTY4di0yMnptMC0yMy42aDQxMi43di04NUgxNy43djg1em0wLTEwOS40aDQxMi43di04NUgxNy43djg1ek0zNjUgMEg4M0M0NyAwIDE3LjcgMzAuMyAxNy43IDY3LjdWOTBoNDEyLjdWNjcuN0M0MzAuMyAzMC4zIDQwMSAwIDM2NSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFja092ZXJmbG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5MC43IDMxMUw5NSAyNjkuNyA4Ni44IDMwOWwxOTUuNyA0MXptNTEtODdMMTg4LjIgOTUuN2wtMjUuNSAzMC44IDE1My41IDEyOC4zem0tMzEuMiAzOS43TDEyOS4yIDE3OWwtMTYuNyAzNi41TDI5My43IDMwMHpNMjYyIDMybC0zMiAyNCAxMTkuMyAxNjAuMyAzMi0yNHptMjAuNSAzMjhoLTIwMHYzOS43aDIwMHptMzkuNyA4MEg0Mi43VjMyMGgtNDB2MTYwaDM1OS41VjMyMGgtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YWNrcGF0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDQuNiAyMzIuNGMwIDguNS00LjI2IDIwLjQ5LTIxLjM0IDIwLjQ5aC0xOS42MXYtNDEuNDdoMTkuNjFjMTcuMTMgMCAyMS4zNCAxMi4zNiAyMS4zNCAyMC45OHpNNDQ4IDMydjQ0OEgwVjMyek0xNTEuMyAyODcuODRjMC0yMS4yNC0xMi4xMi0zNC41NC00Ni43Mi00NC44NS0yMC41Ny03LjQxLTI2LTEwLjkxLTI2LTE4LjYzczctMTQuNjEgMjAuNDEtMTQuNjFjMTQuMDkgMCAyMC43OSA4LjQ1IDIwLjc5IDE4LjM1aDMwLjdsLjE5LS41N2MuNS0xOS41Ny0xNS4wNi00MS42NS01MS4xMi00MS42NS0yMy4zNyAwLTUyLjU1IDEwLjc1LTUyLjU1IDM4LjI5IDAgMTkuNCA5LjI1IDMxLjI5IDUwLjc0IDQ0LjM3IDE3LjI2IDYuMTUgMjEuOTEgMTAuNCAyMS45MSAxOS40OCAwIDE1LjItMTkuMTMgMTQuMjMtMTkuNDcgMTQuMjMtMjAuNCAwLTI1LjY1LTkuMS0yNS42NS0yMS45aC0zMC44bC0uMTguNTZjLS42OCAzMS4zMiAyOC4zOCA0NS4yMiA1Ni42MyA0NS4yMiAyOS45OCAwIDUxLjEyLTEzLjU1IDUxLjEyLTM4LjI5em0xMjUuMzgtNTUuNjNjMC0yNS4zLTE4LjQzLTQ1LjQ2LTUzLjQyLTQ1LjQ2aC01MS43OHYxMzguMThoMzIuMTd2LTQ3LjM2aDE5LjYxYzMwLjI1IDAgNTMuNDItMTUuOTUgNTMuNDItNDUuMzZ6TTI5Ny45NCAzMjVMMzQ3IDE4Ni43OGgtMzEuMDlMMjY4IDMyNXptMTA2LjUyLTEzOC4yMmgtMzEuMDlMMzI1LjQ2IDMyNWgyOS45NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RheWxpbmtlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODIuNyAyOTIuNWwyLjcgMi43LTE3MC0xNjcuM2MtMy41LTMuNS05LjctMy43LTEzLjgtLjVMMTQ0LjMgMTcxYy00LjIgMy4yLTQuNiA4LjctMS4xIDEyLjJsNjguMSA2NC4zYzMuNiAzLjUgOS45IDMuNyAxNCAuNWwuMS0uMWM0LjEtMy4yIDEwLjQtMyAxNCAuNWw4NCA4MS4zYzMuNiAzLjUgMy4yIDktLjkgMTIuMmwtOTMuMiA3NGMtNC4yIDMuMy0xMC41IDMuMS0xNC4yLS40TDYzLjIgMjY4Yy0zLjUtMy41LTkuNy0zLjctMTMuOS0uNUwzLjUgMzAyLjRjLTQuMiAzLjItNC43IDguNy0xLjIgMTIuMkwyMTEgNTEwLjdzNy40IDYuOCAxNy4zLS44bDE5OC0xNjMuOWM0LTMuMiA0LjQtOC43LjctMTIuMnptNTQuNS04My40TDIyNi43IDIuNWMtMS41LTEuMi04LTUuNS0xNi4zIDEuMUwzLjYgMTY1LjdjLTQuMiAzLjItNC44IDguNy0xLjIgMTIuMmw0Mi4zIDQxLjcgMTcxLjcgMTY1LjFjMy43IDMuNSAxMC4xIDMuNyAxNC4zLjRsNTAuMi0zOC44LS4zLS4zIDcuNy02YzQuMi0zLjIgNC42LTguNy45LTEyLjJsLTU3LjEtNTQuNGMtMy42LTMuNS0xMC0zLjctMTQuMi0uNWwtLjEuMWMtNC4yIDMuMi0xMC41IDMuMS0xNC4yLS40TDEwOSAxODAuOGMtMy42LTMuNS0zLjEtOC45IDEuMS0xMi4ybDkyLjItNzEuNWM0LjEtMy4yIDEwLjMtMyAxMy45LjVsMTYwLjQgMTU5YzMuNyAzLjUgMTAgMy43IDE0LjEuNWw0NS44LTM1LjhjNC4xLTMuMiA0LjQtOC43LjctMTIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RlYW1TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg1LjIgMzU2LjVjNy43LTE4LjUtMS0zOS43LTE5LjYtNDcuNGwtMjkuNS0xMi4yYzExLjQtNC4zIDI0LjMtNC41IDM2LjQuNSAxMi4yIDUuMSAyMS42IDE0LjYgMjYuNyAyNi43IDUgMTIuMiA1IDI1LjYtLjEgMzcuNy0xMC41IDI1LjEtMzkuNCAzNy02NC42IDI2LjUtMTEuNi00LjgtMjAuNC0xMy42LTI1LjQtMjQuMmwyOC41IDExLjhjMTguNiA3LjggMzkuOS0uOSA0Ny42LTE5LjR6TTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjE2MC43bDExNi42IDQ4LjFjMTItOC4yIDI2LjItMTIuMSA0MC43LTExLjNsNTUuNC04MC4ydi0xLjFjMC00OC4yIDM5LjMtODcuNSA4Ny42LTg3LjVzODcuNiAzOS4zIDg3LjYgODcuNWMwIDQ5LjItNDAuOSA4OC43LTg5LjYgODcuNWwtNzkgNTYuM2MxLjYgMzguNS0yOS4xIDY4LjgtNjUuNyA2OC44LTMxLjggMC01OC41LTIyLjctNjQuNS01Mi43TDAgMzE5LjJWNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptLTk5LjcgMjIyLjVjLTMyLjIgMC01OC40LTI2LjEtNTguNC01OC4zczI2LjItNTguMyA1OC40LTU4LjMgNTguNCAyNi4yIDU4LjQgNTguMy0yNi4yIDU4LjMtNTguNCA1OC4zem0uMS0xNC42YzI0LjIgMCA0My45LTE5LjYgNDMuOS00My44IDAtMjQuMi0xOS42LTQzLjgtNDMuOS00My44LTI0LjIgMC00My45IDE5LjYtNDMuOSA0My44IDAgMjQuMiAxOS43IDQzLjggNDMuOSA0My44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGVhbVN5bWJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTUuNSAxNzcuNWMwIDMzLjgtMjcuNSA2MS02MSA2MS0zMy44IDAtNjEtMjcuMy02MS02MXMyNy4zLTYxIDYxLTYxYzMzLjUgMCA2MSAyNy4yIDYxIDYxem01Mi41LjJjMCA2My01MSAxMTMuOC0xMTMuNyAxMTMuOEwyMjUgMzcxLjNjLTQgNDMtNDAuNSA3Ni44LTg0LjUgNzYuOC00MC41IDAtNzQuNy0yOC44LTgzLTY3TDAgMzU4VjI1MC43TDk3LjIgMjkwYzE1LjEtOS4yIDMyLjItMTMuMyA1Mi0xMS41bDcxLTEwMS43Yy41LTYyLjMgNTEuNS0xMTIuOCAxMTQtMTEyLjhDMzk3IDY0IDQ0OCAxMTUgNDQ4IDE3Ny43ek0yMDMgMzYzYzAtMzQuNy0yNy44LTYyLjUtNjIuNS02Mi41LTQuNSAwLTkgLjUtMTMuNSAxLjVsMjYgMTAuNWMyNS41IDEwLjIgMzggMzkgMjcuNyA2NC41LTEwLjIgMjUuNS0zOS4yIDM4LTY0LjcgMjcuNS0xMC4yLTQtMjAuNS04LjMtMzAuNy0xMi4yIDEwLjUgMTkuNyAzMS4yIDMzLjIgNTUuMiAzMy4yIDM0LjcgMCA2Mi41LTI3LjggNjIuNS02Mi41em0yMDcuNS0xODUuM2MwLTQyLTM0LjMtNzYuMi03Ni4yLTc2LjItNDIuMyAwLTc2LjUgMzQuMi03Ni41IDc2LjIgMCA0Mi4yIDM0LjMgNzYuMiA3Ni41IDc2LjIgNDEuOS4xIDc2LjItMzMuOSA3Ni4yLTc2LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0ZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAyNTZjMCAxMzctMTExLjIgMjQ4LTI0OC40IDI0OC0xMTMuOCAwLTIwOS42LTc2LjMtMjM5LTE4MC40bDk1LjIgMzkuM2M2LjQgMzIuMSAzNC45IDU2LjQgNjguOSA1Ni40IDM5LjIgMCA3MS45LTMyLjQgNzAuMi03My41bDg0LjUtNjAuMmM1Mi4xIDEuMyA5NS44LTQwLjkgOTUuOC05My41IDAtNTEuNi00Mi05My41LTkzLjctOTMuNXMtOTMuNyA0Mi05My43IDkzLjV2MS4yTDE3Ni42IDI3OWMtMTUuNS0uOS0zMC43IDMuNC00My41IDEyLjFMMCAyMzYuMUMxMC4yIDEwOC40IDExNy4xIDggMjQ3LjYgOCAzODQuOCA4IDQ5NiAxMTkgNDk2IDI1NnpNMTU1LjcgMzg0LjNsLTMwLjUtMTIuNmE1Mi43OSA1Mi43OSAwIDAgMCAyNy4yIDI1LjhjMjYuOSAxMS4yIDU3LjgtMS42IDY5LTI4LjQgNS40LTEzIDUuNS0yNy4zLjEtNDAuMy01LjQtMTMtMTUuNS0yMy4yLTI4LjUtMjguNi0xMi45LTUuNC0yNi43LTUuMi0zOC45LS42bDMxLjUgMTNjMTkuOCA4LjIgMjkuMiAzMC45IDIwLjkgNTAuNy04LjMgMTkuOS0zMSAyOS4yLTUwLjggMjF6bTE3My44LTEyOS45Yy0zNC40IDAtNjIuNC0yOC02Mi40LTYyLjNzMjgtNjIuMyA2Mi40LTYyLjMgNjIuNCAyOCA2Mi40IDYyLjMtMjcuOSA2Mi4zLTYyLjQgNjIuM3ptLjEtMTUuNmMyNS45IDAgNDYuOS0yMSA0Ni45LTQ2LjggMC0yNS45LTIxLTQ2LjgtNDYuOS00Ni44cy00Ni45IDIxLTQ2LjkgNDYuOGMuMSAyNS44IDIxLjEgNDYuOCA0Ni45IDQ2Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0aWNrZXJNdWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2MS43IDE5OS42Yy0xLjMuMy4zIDAgMCAwem0tNi4yLTc3LjRjLTcuNy0yMi4zLTUuMS03LjItMTMuNC0zNi45LTEuNi02LjUtMy42LTE0LjUtNi4yLTIwLTQuNC04LjctNC42LTcuNS00LjYtOS41IDAtNS4zIDMwLjctNDUuMyAxOS00Ni45LTUuNy0uNi0xMi4yIDExLjYtMjAuNiAxNy04LjYgNC4yLTggNS0xMC4zIDUtMi42IDAtNS43LTMtNi4yLTUtMi01LjcgMS45LTI1LjktMy42LTI1LjktMy42IDAtMTIuMyAyNC44LTE3IDI1LjgtNS4yIDEuMy0yNy45LTExLjQtNzUuMSAxOC0yNS4zIDEzLjItODYuOSA2NS4yLTg3IDY1LjMtNi43IDQuNy0yMCA0LjctMzUuNSAxNi00NC40IDMwLjEtMTA5LjYgOS40LTExMC43IDktMTEwLjYtMjYuOC0xMjgtMTUuMi0xNTkgMTEuNS0yMC44IDE3LjktMjMuNyAzNi41LTI0LjIgMzguOS00LjIgMjAuNCA1LjIgNDguMyA2LjcgNjQuMyAxLjggMTkuMy0yLjcgMTcuNyA3LjcgOTguMy41IDEgNC4xIDAgNS4xIDEuNSAwIDguNC0zLjggMTIuMS00LjEgMTMtMS41IDQuNS0xLjUgMTAuNSAwIDE2IDIuMyA4LjIgOC4yIDM3LjIgOC4yIDQ2LjkgMCA0MS44LjQgNDQgMi42IDQ5LjQgMy45IDEwIDEyLjUgOS4xIDE3IDEyIDMuMSAzLjUtLjUgOC41IDEgMTIuNS41IDIgMy42IDQgNi4yIDUgOS4yIDMuNiAyNyAuMyAyOS45LTIuNSAxLjYtMS41LjUtNC41IDMuMS01IDUuMSAwIDEwLjgtLjUgMTQuNC0yLjUgNS4xLTIuNSA0LjEtNiAxLjUtMTAuNS0uNC0uOC03LTEzLjMtOS44LTE2LTIuMS0yLTUuMS0zLTcuMi00LjUtNS44LTQuOS0xMC4zLTE5LjQtMTAuMy0xOS41LTQuNi0xOS40LTEwLjMtNDYuMy00LjEtNjYuOCA0LjYtMTcuMiAzOS41LTg3LjcgMzkuNi04Ny44IDQuMS02LjUgMTctMTEuNSAyNy4zLTcgNiAxLjkgMTkuMyAyMiA2NS40IDMwLjkgNDcuOSA4LjcgOTcuNC0yIDExMi4yLTIgMi44IDItMS45IDEzLS41IDM4LjkgMCAyNi40LS40IDEzLjctNC4xIDI5LjktMi4yIDkuNyAzLjQgMjMuMi0xLjUgNDYuOS0xLjQgOS44LTkuOSAzMi43LTguMiA0My40LjUgMSAxIDIgMS41IDMuNS41IDQuNSAxLjUgOC41IDQuNiAxMCA3LjMgMy42IDEyLTMuNSA5LjggMTEuNS0uNyAzLjEtMi42IDEyIDEuNSAxNSA0LjQgMy43IDMwLjYgMy40IDM2LjUuNSAyLjYtMS41IDEuNi00LjUgNi40LTcuNCAxLjktLjkgMTEuMy0uNCAxMS4zLTYuNS4zLTEuOC05LjItMTkuOS05LjMtMjAtMi42LTMuNS05LjItNC41LTExLjMtOC02LjktMTAuMS0xLjctNTIuNi41LTU5LjQgMy0xMSA1LjYtMjIuNCA4LjctMzIuNCAxMS00Mi41IDEwLjMtNTAuNiAxNi41LTY4LjMuOC0xLjggNi40LTIzLjEgMTAuMy0yOS45IDkuMy0xNyAyMS43LTMyLjQgMzMuNS00Ny40IDE4LTIyLjkgMzQtNDYuOSA1Mi02OS44IDYuMS03IDguMi0xMy43IDE4LTggMTAuOCA1LjcgMjEuNiA3IDMxLjkgMTcgMTQuNiAxMi44IDEwLjIgMTguMiAxMS44IDIyLjkgMS41IDUgNy43IDEwLjUgMTQuOSA5LjUgMTAuNC0yIDEzLTIuNSAxMy40LTIuNSAyLjYtLjUgNS43LTUgNy4yLTggMy4xLTUuNSA3LjItOSA3LjItMTYuNSAwLTcuNy0uNC0yLjgtMjAuNi01Mi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHJhdmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU4LjQgMEw3IDI5Mmg4OS4ybDYyLjItMTE2LjFMMjIwLjEgMjkyaDg4LjV6bTE1MC4yIDI5MmwtNDMuOSA4OC4yLTQ0LjYtODguMmgtNjcuNmwxMTIuMiAyMjAgMTExLjUtMjIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHJpcGVTIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1NS4zIDE1NC42YzAtMjIuMyAxOC42LTMwLjkgNDguNC0zMC45IDQzLjQgMCA5OC41IDEzLjMgMTQxLjkgMzYuN1YyNi4xQzI5OC4zIDcuMiAyNTEuMSAwIDIwMy44IDAgODguMSAwIDExIDYwLjQgMTEgMTYxLjRjMCAxNTcuOSAyMTYuOCAxMzIuMyAyMTYuOCAyMDAuNCAwIDI2LjQtMjIuOSAzNC45LTU0LjcgMzQuOS00Ny4yIDAtMTA4LjItMTkuNS0xNTYuMS00NS41djEyOC41YTM5Ni4wOSAzOTYuMDkgMCAwIDAgMTU2IDMyLjRjMTE4LjYgMCAyMDAuMy01MSAyMDAuMy0xNTMuNiAwLTE3MC4yLTIxOC0xMzkuNy0yMTgtMjAzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0cmlwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjUgMTQ0LjdsLTQzLjMgOS4yLS4yIDE0Mi40YzAgMjYuMyAxOS44IDQzLjMgNDYuMSA0My4zIDE0LjYgMCAyNS4zLTIuNyAzMS4yLTUuOXYtMzMuOGMtNS43IDIuMy0zMy43IDEwLjUtMzMuNy0xNS43VjIyMWgzMy43di0zNy44aC0zMy43em04OS4xIDUxLjZsLTIuNy0xMy4xSDIxM3YxNTMuMmg0NC4zVjIzMy4zYzEwLjUtMTMuOCAyOC4yLTExLjEgMzMuOS05LjN2LTQwLjhjLTYtMi4xLTI2LjctNi0zNy4xIDEzLjF6bTkyLjMtNzIuM2wtNDQuNiA5LjV2MzYuMmw0NC42LTkuNXpNNDQuOSAyMjguM2MwLTYuOSA1LjgtOS42IDE1LjEtOS43IDEzLjUgMCAzMC43IDQuMSA0NC4yIDExLjR2LTQxLjhjLTE0LjctNS44LTI5LjQtOC4xLTQ0LjEtOC4xLTM2IDAtNjAgMTguOC02MCA1MC4yIDAgNDkuMiA2Ny41IDQxLjIgNjcuNSA2Mi40IDAgOC4yLTcuMSAxMC45LTE3IDEwLjktMTQuNyAwLTMzLjctNi4xLTQ4LjYtMTQuMnY0MGMxNi41IDcuMSAzMy4yIDEwLjEgNDguNSAxMC4xIDM2LjkgMCA2Mi4zLTE1LjggNjIuMy00Ny44IDAtNTIuOS02Ny45LTQzLjQtNjcuOS02My40ek02NDAgMjYxLjZjMC00NS41LTIyLTgxLjQtNjQuMi04MS40cy02Ny45IDM1LjktNjcuOSA4MS4xYzAgNTMuNSAzMC4zIDc4LjIgNzMuNSA3OC4yIDIxLjIgMCAzNy4xLTQuOCA0OS4yLTExLjV2LTMzLjRjLTEyLjEgNi4xLTI2IDkuOC00My42IDkuOC0xNy4zIDAtMzIuNS02LjEtMzQuNS0yNi45aDg2LjljLjItMi4zLjYtMTEuNi42LTE1Ljl6bS04Ny45LTE2LjhjMC0yMCAxMi4zLTI4LjQgMjMuNC0yOC40IDEwLjkgMCAyMi41IDguNCAyMi41IDI4LjR6bS0xMTIuOS02NC42Yy0xNy40IDAtMjguNiA4LjItMzQuOCAxMy45bC0yLjMtMTFIMzYzdjIwNC44bDQ0LjQtOS40LjEtNTAuMmM2LjQgNC43IDE1LjkgMTEuMiAzMS40IDExLjIgMzEuOCAwIDYwLjgtMjMuMiA2MC44LTc5LjYuMS01MS42LTI5LjMtNzkuNy02MC41LTc5Ljd6bS0xMC42IDEyMi41Yy0xMC40IDAtMTYuNi0zLjgtMjAuOS04LjRsLS4zLTY2YzQuNi01LjEgMTEtOC44IDIxLjItOC44IDE2LjIgMCAyNy40IDE4LjIgMjcuNCA0MS40LjEgMjMuOS0xMC45IDQxLjgtMjcuNCA0MS44em0tMTI2LjcgMzMuN2g0NC42VjE4My4yaC00NC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHVkaW92aW5hcmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwLjMgMTg3LjdsNC4yIDI4djI4bC0yNS4xIDQ0LjEtMzkuOCA3OC40LTU2LjEgNjcuNS03OS4xIDM3LjgtMTcuNyAyNC41LTcuNyAxMi05LjYgNHMxNy4zLTYzLjYgMTkuNC02My42YzIuMSAwIDIwLjMuNyAyMC4zLjdsNjYuNy0zOC42LTkyLjUgMjYuMS01NS45IDM2LjgtMjIuOCAyOC02LjYgMS40IDIwLjgtNzMuNiA2LjktNS41IDIwLjcgMTIuOSA4OC4zLTQ1LjIgNTYuOC01MS41IDE0LjgtNjguNC0xMjUuNCAyMy4zIDE1LjItMTguMi0xNzMuNC01My4zIDgxLjktMTAuNS0xNjYtMTIyLjlMMTMzLjUgMTA4IDMyLjIgMGwyNTIuOSAxMjYuNi0zMS41LTM4TDM3OCAxNjMgMjM0LjcgNjRsMTguNyAzOC40LTQ5LjYtMTguMUwxNTguMyAwbDE5NC42IDEyMkwzMTAgNjYuMmwxMDggOTYuNCAxMi04LjktMjEtMTYuNCA0LjItMzcuOEw0NTEgODkuMWwyOS4yIDI0LjcgMTEuNSA0LjItNyA2LjIgOC41IDEyLTEzLjEgNy40LTEwLjMgMjAuMiAxMC41IDIzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0dW1ibGV1cG9uQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTAgMTc3LjVjLTkuOCAwLTE3LjggOC0xNy44IDE3Ljh2MTA2LjljMCA0MC45LTMzLjkgNzMuOS03NC45IDczLjktNDEuNCAwLTc0LjktMzMuNS03NC45LTc0Ljl2LTQ2LjVoNTcuM3Y0NS44YzAgMTAgOCAxNy44IDE3LjggMTcuOHMxNy44LTcuOSAxNy44LTE3LjhWMjAwLjFjMC00MCAzNC4yLTcyLjEgNzQuNy03Mi4xIDQwLjcgMCA3NC43IDMyLjMgNzQuNyA3Mi42djIzLjdsLTM0LjEgMTAuMS0yMi45LTEwLjd2LTIwLjZjLjEtOS42LTcuOS0xNy42LTE3LjctMTcuNnptMTY3LjYgMTIzLjZjMCA0MS40LTMzLjUgNzQuOS03NC45IDc0LjktNDEuMiAwLTc0LjktMzMuMi03NC45LTc0LjJWMjYzbDIyLjkgMTAuNyAzNC4xLTEwLjF2NDcuMWMwIDkuOCA4IDE3LjYgMTcuOCAxNy42czE3LjgtNy45IDE3LjgtMTcuNnYtNDhoNTcuM2MtLjEgNDUuOS0uMSA0Ni40LS4xIDQ2LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0dW1ibGV1cG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi45IDI2NnY2OS43YzAgNjIuMS01MC4zIDExMi40LTExMi40IDExMi40LTYxLjggMC0xMTIuNC00OS44LTExMi40LTExMS4zdi03MC4ybDM0LjMgMTYgNTEuMS0xNS4yVjMzOGMwIDE0LjcgMTIgMjYuNSAyNi43IDI2LjVTNDE3IDM1Mi43IDQxNyAzMzh2LTcyaDg1Ljl6bS0yMjQuNy01OC4ybDM0LjMgMTYgNTEuMS0xNS4yVjE3M2MwLTYwLjUtNTEuMS0xMDktMTEyLjEtMTA5LTYwLjggMC0xMTIuMSA0OC4yLTExMi4xIDEwOC4ydjE2Mi40YzAgMTQuOS0xMiAyNi43LTI2LjcgMjYuN1M4NiAzNDkuNSA4NiAzMzQuNlYyNjZIMHY2OS43QzAgMzk3LjcgNTAuMyA0NDggMTEyLjQgNDQ4YzYxLjYgMCAxMTIuNC00OS41IDExMi40LTExMC44VjE3Ni45YzAtMTQuNyAxMi0yNi43IDI2LjctMjYuN3MyNi43IDEyIDI2LjcgMjYuN3YzMC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdXBlcnBvd2VycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzJjLTgzLjMgMTEtMTY2LjggMjItMjUwIDMzLTkyIDEyLjUtMTYzLjMgODYuNy0xNjkgMTgwLTMuMyA1NS41IDE4IDEwOS41IDU3LjggMTQ4LjJMMCA0ODBjODMuMy0xMSAxNjYuNS0yMiAyNDkuOC0zMyA5MS44LTEyLjUgMTYzLjMtODYuOCAxNjguNy0xNzkuOCAzLjUtNTUuNS0xOC0xMDkuNS01Ny43LTE0OC4yTDQ0OCAzMnptLTc5LjcgMjMyLjNjLTQuMiA3OS41LTc0IDEzOS4yLTE1Mi44IDEzNC41LTc5LjUtNC43LTE0MC43LTcxLTEzNi4zLTE1MSA0LjUtNzkuMiA3NC4zLTEzOS4zIDE1My0xMzQuNSA3OS4zIDQuNyAxNDAuNSA3MSAxMzYuMSAxNTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1cHBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMjYyLjVjMCA2NC4xLTEwOSAxMTYuMS0yNDMuNSAxMTYuMS0yNC44IDAtNDguNi0xLjgtNzEuMS01IDcuNy40IDE1LjUuNiAyMy40LjYgMTM0LjUgMCAyNDMuNS01Ni45IDI0My41LTEyNy4xIDAtMjkuNC0xOS4xLTU2LjQtNTEuMi03OCA2MCAyMS4xIDk4LjkgNTUuMSA5OC45IDkzLjR6TTQ3LjcgMjI3LjljLS4xLTcwLjIgMTA4LjgtMTI3LjMgMjQzLjMtMTI3LjYgNy45IDAgMTUuNi4yIDIzLjMuNS0yMi41LTMuMi00Ni4zLTQuOS03MS00LjlDMTA4LjggOTYuMy0uMSAxNDguNSAwIDIxMi42Yy4xIDM4LjMgMzkuMSA3Mi4zIDk5LjMgOTMuMy0zMi4zLTIxLjUtNTEuNS00OC42LTUxLjYtNzh6bTYwLjIgMzkuOXMxMC41IDEzLjIgMjkuMyAxMy4yYzE3LjkgMCAyOC40LTExLjUgMjguNC0yNS4xIDAtMjgtNDAuMi0yNS4xLTQwLjItMzkuNyAwLTUuNCA1LjMtOS4xIDEyLjUtOS4xIDUuNyAwIDExLjMgMi42IDExLjMgNi42djMuOWgxNC4ydi03LjljMC0xMi4xLTE1LjQtMTYuOC0yNS40LTE2LjgtMTYuNSAwLTI4LjUgMTAuMi0yOC41IDI0LjEgMCAyNi42IDQwLjIgMjUuNCA0MC4yIDM5LjkgMCA2LjYtNS44IDEwLjEtMTIuMyAxMC4xLTExLjkgMC0yMC43LTEwLjEtMjAuNy0xMC4xbC04LjggMTAuOXptMTIwLjgtNzMuNnY1NC40YzAgMTEuMy03LjEgMTcuOC0xNy44IDE3LjgtMTAuNyAwLTE3LjgtNi41LTE3LjgtMTcuN3YtNTQuNWgtMTUuOHY1NWMwIDE4LjkgMTMuNCAzMS45IDMzLjcgMzEuOSAyMC4xIDAgMzMuNC0xMyAzMy40LTMxLjl2LTU1aC0xNS43em0zNC40IDg1LjRoMTUuOHYtMjkuNWgxNS41YzE2IDAgMjcuMi0xMS41IDI3LjItMjguMXMtMTEuMi0yNy44LTI3LjItMjcuOGgtMzkuMXYxMy40aDcuOHY3MnptMTUuOC00M3YtMjkuMWgxMi45YzguNyAwIDEzLjcgNS43IDEzLjcgMTQuNCAwIDguOS01LjEgMTQuNy0xNCAxNC43aC0xMi42em01NyA0M2gxNS44di0yOS41aDE1LjVjMTYgMCAyNy4yLTExLjUgMjcuMi0yOC4xcy0xMS4yLTI3LjgtMjcuMi0yNy44aC0zOS4xdjEzLjRoNy44djcyem0xNS43LTQzdi0yOS4xaDEyLjljOC43IDAgMTMuNyA1LjcgMTMuNyAxNC40IDAgOC45LTUgMTQuNy0xNCAxNC43aC0xMi42em01Ny4xIDM0LjhjMCA1LjggMi40IDguMiA4LjIgOC4yaDM3LjZjNS44IDAgOC4yLTIuNCA4LjItOC4ydi0xM2gtMTQuM3Y1LjJjMCAxLjctMSAyLjYtMi42IDIuNmgtMTguNmMtMS43IDAtMi42LTEtMi42LTIuNnYtNjEuMmMwLTUuNy0yLjQtOC4yLTguMi04LjJINDAxdjEzLjRoNS4yYzEuNyAwIDIuNiAxIDIuNiAyLjZ2NjEuMnptNjMuNCAwYzAgNS44IDIuNCA4LjIgOC4yIDguMkg1MTljNS43IDAgOC4yLTIuNCA4LjItOC4ydi0xM2gtMTQuM3Y1LjJjMCAxLjctMSAyLjYtMi42IDIuNmgtMTkuN2MtMS43IDAtMi42LTEtMi42LTIuNnYtMjAuM2gyNy43di0xMy40SDQ4OHYtMjIuNGgxOS4yYzEuNyAwIDIuNiAxIDIuNiAyLjZ2NS4ySDUyNHYtMTNjMC01LjctMi41LTguMi04LjItOC4yaC01MS42djEzLjRoNy44djYzLjl6bTU4LjktNzZ2NS45aDEuNnYtNS45aDIuN3YtMS4yaC03djEuMmgyLjd6bTUuNy0xLjJ2Ny4xaDEuNXYtNS43bDIuMyA1LjdoMS4zbDIuMy01Ljd2NS43aDEuNXYtNy4xaC0yLjNsLTIuMSA1LjEtMi4xLTUuMWgtMi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3MS4wOCAxMDIuNjZzLS4zIDE4LjMtLjMgMjAuM2MtOS4xLTMtNzQuNC0yNC4xLTEzNS43LTI2LjMtNTEuOS0xLjgtMTIyLjgtNC4zLTIyMyA1Ny4zLTE5LjQgMTIuNC03My45IDQ2LjEtOTkuNiAxMDkuN0M3IDI3Ny0uMTIgMzA3IDcgMzM1LjA2YTExMSAxMTEgMCAwIDAgMTYuNSAzNS43YzE3LjQgMjUgNDYuNiA0MS42IDc4LjEgNDQuNCA0NC40IDMuOSA3OC4xLTE2IDkwLTUzLjMgOC4yLTI1LjggMC02My42LTMxLjUtODIuOS0yNS42LTE1LjctNTMuMy0xMi4xLTY5LjItMS42LTEzLjkgOS4yLTIxLjggMjMuNS0yMS42IDM5LjIuMyAyNy44IDI0LjMgNDIuNiA0MS41IDQyLjZhNDkgNDkgMCAwIDAgMTUuOC0yLjdjNi41LTEuOCAxMy4zLTYuNSAxMy4zLTE0LjkgMC0xMi4xLTExLjYtMTQuOC0xNi44LTEzLjktMi45LjUtNC41IDItMTEuOCAyLjQtMi0uMi0xMi0zLjEtMTItMTRWMzE2Yy4yLTEyLjMgMTMuMi0xOCAyNS41LTE2LjkgMzIuMyAyLjggNDcuNyA0MC43IDI4LjUgNjUuNy0xOC4zIDIzLjctNzYuNiAyMy4yLTk5LjctMjAuNC0yNi00OS4yIDEyLjctMTExLjIgODctOTguNCAzMy4yIDUuNyA4My42IDM1LjUgMTAyLjQgMTA0LjNoNDUuOWMtNS43LTE3LjYtOC45LTY4LjMgNDIuNy02OC4zIDU2LjcgMCA2My45IDM5LjkgNzkuOCA2OC4zSDQ2MGMtMTIuOC0xOC4zLTIxLjctMzguNy0xOC45LTU1LjggNS42LTMzLjggMzkuNy0xOC40IDgyLjQtMTcuNCA2Ni41LjQgMTAyLjEtMjcgMTAzLjEtMjggMy43LTMuMSA2LjUtMTUuOCA3LTE3LjcgMS4zLTUuMS0zLjItMi40LTMuMi0yLjQtOC43IDUuMi0zMC41IDE1LjItNTAuOSAxNS42LTI1LjMuNS03Ni4yLTI1LjQtODEuNi0yOC4yLS4zLS40LjEgMS4yLTExLTI1LjUgODguNCA1OC4zIDExOC4zIDQwLjUgMTQ1LjIgMjEuNy44LS42IDQuMy0yLjkgMy42LTUuNy0xMy44LTQ4LjEtMjIuNC02Mi43LTM0LjUtNjkuNi0zNy0yMS42LTEyNS0zNC43LTEyOS4yLTM1LjMuMS0uMS0uOS0uMy0uOS43em02MC40IDcyLjhhMzcuNTQgMzcuNTQgMCAwIDEgMzguOS0zNi4zYzMzLjQgMS4yIDQ4LjggNDIuMyAyNC40IDY1LjItMjQuMiAyMi43LTY0LjQgNC42LTYzLjMtMjguOXptMzguNi0yNS4zYTI2LjI3IDI2LjI3IDAgMSAwIDI1LjQgMjcuMiAyNi4xOSAyNi4xOSAwIDAgMC0yNS40LTI3LjJ6bTQuMyAyOC44Yy0xNS40IDAtMTUuNC0xNS42IDAtMTUuNnMxNS40IDE1LjY0IDAgMTUuNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN3aWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAxNTYuMDljMC00LjUxLS4wOC05LS4yLTEzLjUyYTE5Ni4zMSAxOTYuMzEgMCAwIDAtMi41OC0yOS40MiA5OS42MiA5OS42MiAwIDAgMC05LjIyLTI4QTk0LjA4IDk0LjA4IDAgMCAwIDM5NC44NCA0NGE5OS4xNyA5OS4xNyAwIDAgMC0yOC05LjIyIDE5NSAxOTUgMCAwIDAtMjkuNDMtMi41OWMtNC41MS0uMTItOS0uMTctMTMuNTItLjJIMTI0LjE0Yy00LjUxIDAtOSAuMDgtMTMuNTIuMi0yLjQ1LjA3LTQuOTEuMTUtNy4zNy4yN2ExNzEuNjggMTcxLjY4IDAgMCAwLTIyLjA2IDIuMzIgMTAzLjA2IDEwMy4wNiAwIDAgMC0yMS4yMSA2LjFxLTMuNDYgMS40NS02LjgxIDMuMTJhOTQuNjYgOTQuNjYgMCAwIDAtMTguMzkgMTIuMzJjLTEuODggMS42MS0zLjY5IDMuMjgtNS40MyA1QTkzLjg2IDkzLjg2IDAgMCAwIDEyIDg1LjE3YTk5LjQ1IDk5LjQ1IDAgMCAwLTkuMjIgMjggMTk2LjMxIDE5Ni4zMSAwIDAgMC0yLjU0IDI5LjRjLS4xMyA0LjUxLS4xOCA5LS4yMSAxMy41MnYxOTkuODNjMCA0LjUxLjA4IDkgLjIxIDEzLjUxYTE5Ni4wOCAxOTYuMDggMCAwIDAgMi41OCAyOS40MiA5OS4zIDk5LjMgMCAwIDAgOS4yMiAyOEE5NC4zMSA5NC4zMSAwIDAgMCA1My4xNyA0NjhhOTkuNDcgOTkuNDcgMCAwIDAgMjggOS4yMSAxOTUgMTk1IDAgMCAwIDI5LjQzIDIuNTljNC41LjEyIDkgLjE3IDEzLjUyLjJIMzIzLjkxYzQuNTEgMCA5LS4wOCAxMy41Mi0uMmExOTYuNTkgMTk2LjU5IDAgMCAwIDI5LjQ0LTIuNTkgOTkuNTcgOTkuNTcgMCAwIDAgMjgtOS4yMUE5NC4yMiA5NC4yMiAwIDAgMCA0MzYgNDI2Ljg0YTk5LjMgOTkuMyAwIDAgMCA5LjIyLTI4IDE5NC43OSAxOTQuNzkgMCAwIDAgMi41OS0yOS40MmMuMTItNC41LjE3LTkgLjItMTMuNTFWMTcyLjE0Yy0uMDEtNS4zNS0uMDEtMTAuNy0uMDEtMTYuMDV6bS02OS44OCAyNDFjLTIwLTM4LjkzLTU3LjIzLTI5LjI3LTc2LjMxLTE5LjQ3LTEuNzIgMS0zLjQ4IDItNS4yNSAzbC0uNDIuMjVjLTM5LjUgMjEtOTIuNTMgMjIuNTQtMTQ1Ljg1LS4zOEEyMzQuNjQgMjM0LjY0IDAgMCAxIDQ1IDI5MC4xMmEyMzAuNjMgMjMwLjYzIDAgMCAwIDM5LjE3IDIzLjM3YzU2LjM2IDI2LjQgMTEzIDI0LjQ5IDE1MyAwLTU3LTQzLjg1LTEwNC42LTEwMS0xNDEuMDktMTQ3LjIyYTE5Ny4wOSAxOTcuMDkgMCAwIDEtMTguNzgtMjUuOWM0My43IDQwIDExMi43IDkwLjIyIDEzNy40OCAxMDQuMTItNTIuNTctNTUuNDktOTguODktMTIzLjk0LTk2LjcyLTEyMS43NCA4Mi43OSA4My40MiAxNTkuMTggMTMwLjU5IDE1OS4xOCAxMzAuNTkgMi44OCAxLjU4IDUgMi44NSA2LjczIDRhMTI3LjQ0IDEyNy40NCAwIDAgMCA0LjE2LTEyLjQ3YzEzLjIyLTQ4LjMzLTEuNjYtMTAzLjU4LTM1LjMxLTE0OS4yQzMyOS42MSAxNDEuNzUgMzc1IDIyOS4zNCAzNTYuNCAzMDMuNDJjLS40NCAxLjczLS45NSAzLjQtMS40NCA1LjA5IDM4LjUyIDQ3LjQgMjguMDQgOTguMTcgMjMuMTMgODguNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN5bWZvbnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMTMzLjc0IDE0My41NGMtMTEuNDcuNDEtMTkuNC02LjQ1LTE5Ljc3LTE2Ljg3LS4yNy05LjE4IDYuNjgtMTMuNDQgNi41My0xOC44NS0uMjMtNi41NS0xMC4xNi02LjgyLTEyLjg3LTYuNjctMzkuNzggMS4yOS00OC41OSA1Ny01OC44OSAxMTMuODUgMjEuNDMgMy4xNSAzNi42NS0uNzIgNDUuMTQtNi4yMiAxMi03Ljc1LTMuMzQtMTUuNzItMS40Mi0yNC41NiA0LTE4LjE2IDMyLjU1LTE5IDMyIDUuMy0uMzYgMTcuODYtMjUuOTIgNDEuODEtNzcuNiAzNS43LTEwLjc2IDU5LjUyLTE4LjM1IDExNS01OC4yIDE2MS43Mi0yOSAzNC40Ni01OC40IDM5LjgyLTcxLjU4IDQwLjI2LTI0LjY1Ljg1LTQxLTEyLjMxLTQxLjU4LTI5Ljg0LS41Ni0xNyAxNC40NS0yNi4yNiAyNC4zMS0yNi41OSAyMS44OS0uNzUgMzAuMTIgMjUuNjcgMTQuODggMzQtMTIuMDkgOS43MS4xMSAxMi42MSAyLjA1IDEyLjU1IDEwLjQyLS4zNiAxNy4zNC01LjUxIDIyLjE4LTkgMjQtMjAgMzMuMjQtNTQuODYgNDUuMzUtMTE4LjM1IDguMTktNDkuNjYgMTctNzggMTguMjMtODItMTYuOTMtMTIuNzUtMjcuMDgtMjguNTUtNDkuODUtMzQuNzItMTUuNjEtNC4yMy0yNS4xMi0uNjMtMzEuODEgNy44My03LjkyIDEwLTUuMjkgMjMgMi4zNyAzMC43bDEyLjYzIDE0YzE1LjUxIDE3LjkzIDI0IDMxLjg3IDIwLjggNTAuNjItNS4wNiAyOS45My00MC43MiA1Mi45LTgyLjg4IDM5Ljk0LTM2LTExLjExLTQyLjctMzYuNTYtMzguMzgtNTAuNjIgNy41MS0yNC4xNSA0Mi4zNi0xMS43MiAzNC42MiAxMy42LTIuNzkgOC42LTQuOTIgOC42OC02LjI4IDEzLjA3LTQuNTYgMTQuNzcgNDEuODUgMjguNCA1MS0xLjM5IDQuNDctMTQuNTItNS4zLTIxLjcxLTIyLjI1LTM5Ljg1LTI4LjQ3LTMxLjc1LTE2LTY1LjQ5IDIuOTUtNzkuNjdDMjA0LjIzIDE0MC4xMyAyNTEuOTQgMTk3IDI2MiAyMDUuMjljMzcuMTctMTA5IDEwMC41My0xMDUuNDYgMTAyLjQzLTEwNS41MyAyNS4xNi0uODEgNDQuMTkgMTAuNTkgNDQuODMgMjguNjUuMjUgNy42OS00LjE3IDIyLjU5LTE5LjUyIDIzLjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZWFtc3BlYWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ0LjIgMzQ2Ljc5YzIuNC0xMi4zLTEyLTMwLTMyLjQtNDguNy0yMC45LTE5LjItNDguMi0zOS4xLTYzLjQtNDYuNi0yMS43LTEyLTQxLjctMS44LTQ2LjMgMjIuNy01IDI2LjIgMCA1MS40IDE0LjUgNzMuOSAxMC4yIDE1LjUgMjUuNCAyMi43IDQzLjQgMjQgMTEuNi42IDUyLjUgMi4yIDYxLjctMSAxMS45LTQuMyAyMC4xLTExLjggMjIuNS0yNC4zem0yMDUgMjAuOGE1LjIyIDUuMjIgMCAwIDAtOC4zIDIuNGMtOCAyNS40LTQ0LjcgMTEyLjUtMTcyLjEgMTIxLjUtMTQ5LjcgMTAuNSA4MC4zIDQzLjYgMTQ1LjQtNi40IDIyLjctMTcuNCA0Ny42LTM1IDQ2LjYtODUuNC0uNC0xMC4xLTQuOS0yNi42OS0xMS42LTMyLjF6bTYyLTEyMi40Yy0uMy0xOC45LTguNi0zMy40LTI2LTQyLjItMi45LTEuMy01LTIuNy01LjktNi40QTIyMi42NCAyMjIuNjQgMCAwIDAgNDM4LjkgMTAzYy0xLjEtMS41LTMuNS0zLjItMi4yLTUgOC41LTExLjUtLjMtMTgtNy0yNC40UTMyMS40LTMxLjExIDE3Ny40IDEzLjA5Yy00MC4xIDEyLjMtNzMuOSAzNS42LTEwMiA2Ny40LTQgNC4zLTYuNyA5LjEtMyAxNC41IDMgNCAxLjMgNi4yLTEgOS4zQzUxLjYgMTMyIDM4LjIgMTYyLjU5IDMyLjEgMTk2Yy0uNyA0LjMtMi45IDYtNi40IDcuOC0xNC4yIDctMjIuNSAxOC41LTI0LjkgMzRMMCAyNjQuMjl2MjAuOWMwIDMwLjggMjEgNTAuNCA1MS44IDQ5IDcuNy0uMyAxMS43LTQuMyAxMi0xMS41IDItNzcuNS0yLjQtOTUuNCAzLjctMTI1LjhDOTIuMSA3Mi4zOSAyMzQuMyA1IDM0NS4zIDY1LjM5IDQxMS40IDEwMiA0NDUuNyAxNTkgNDQ3LjYgMjM0Ljc5Yy44IDI4LjIgMCA1Ni41IDAgODQuNiAwIDcgMi4yIDEyLjUgOS40IDE0LjIgMjQuMSA1IDQ5LjItMTIgNTMuMi0zNi43IDIuOS0xNy4xIDEtMzQuNSAxLTUxLjd6bS0xNTkuNiAxMzEuNWMzNi41IDIuOCA1OS4zLTI4LjUgNTguNC02MC41LTIuMS00NS4yLTY2LjItMTYuNS04Ny44LTgtNzMuMiAyOC4xLTQ1IDU0LjktMjIuMiA2MC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZWxlZ3JhbVBsYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ni43IDk4LjZsLTY3LjYgMzE4LjhjLTUuMSAyMi41LTE4LjQgMjguMS0zNy4zIDE3LjVsLTEwMy03NS45LTQ5LjcgNDcuOGMtNS41IDUuNS0xMC4xIDEwLjEtMjAuNyAxMC4xbDcuNC0xMDQuOSAxOTAuOS0xNzIuNWM4LjMtNy40LTEuOC0xMS41LTEyLjktNC4xTDExNy44IDI4NCAxNi4yIDI1Mi4yYy0yMi4xLTYuOS0yMi41LTIyLjEgNC42LTMyLjdMNDE4LjIgNjYuNGMxOC40LTYuOSAzNC41IDQuMSAyOC41IDMyLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbGVncmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTEyMS44IDE2OS45bC00MC43IDE5MS44Yy0zIDEzLjYtMTEuMSAxNi45LTIyLjQgMTAuNWwtNjItNDUuNy0yOS45IDI4LjhjLTMuMyAzLjMtNi4xIDYuMS0xMi41IDYuMWw0LjQtNjMuMSAxMTQuOS0xMDMuOGM1LTQuNC0xLjEtNi45LTcuNy0yLjVsLTE0MiA4OS40LTYxLjItMTkuMWMtMTMuMy00LjItMTMuNi0xMy4zIDIuOC0xOS43bDIzOS4xLTkyLjJjMTEuMS00IDIwLjggMi43IDE3LjIgMTkuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVuY2VudFdlaWJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcyLjMgNDk1LjhjMS40IDE5LjktMjcuNiAyMi4yLTI5LjcgMi45QzMxIDM2OC44IDczLjcgMjU5LjIgMTQ0IDE4NS41Yy0xNS42LTM0IDkuMi03Ny4xIDUwLjYtNzcuMSAzMC4zIDAgNTUuMSAyNC42IDU1LjEgNTUuMSAwIDQ0LTQ5LjUgNzAuOC04Ni45IDQ1LjEtNjUuNyA3MS4zLTEwMS40IDE2OS44LTkwLjUgMjg3LjJ6TTE5MiAuMUM2Ni4xLjEtMTIuMyAxMzQuMyA0My43IDI0Mi40IDUyLjQgMjU5LjggNzkgMjQ2LjkgNzAgMjI5IDIzLjcgMTM2LjQgOTEgMjkuOCAxOTIgMjkuOGM3NS40IDAgMTM2LjkgNjEuNCAxMzYuOSAxMzYuOSAwIDkwLjgtODYuOSAxNTMuOS0xNjcuNyAxMzMuMS0xOS4xLTQuMS0yNS42IDI0LjQtNi42IDI5LjEgMTEwLjcgMjMuMiAyMDQtNjAgMjA0LTE2Mi4zQzM1OC42IDc0LjcgMjg0IC4xIDE5MiAuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhlUmVkWWV0aSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODguMjMgMjQxLjdsMjAuNyA3LjFjLTkuNi0yMy45LTIzLjktMzctMzEuNy00NC44bDcuMS0xOC4yYy4yIDAgMTIuMy0yNy44LTIuNS0zMC43LS42LTExLjMtNi42LTI3LTE4LjQtMjctNy42LTEwLjYtMTcuNy0xMi4zLTMwLjctNS45YTEyMi4yIDEyMi4yIDAgMCAwLTI1LjMgMTYuNWMtNS4zLTYuNC0zIC40LTMtMjkuOC0zNy4xLTI0LjMtNDUuNC0xMS43LTc0LjggM2wuNS41YTIzOS4zNiAyMzkuMzYgMCAwIDAtNjguNC0xMy4zYy01LjUtOC43LTE4LjYtMTkuMS0yNS4xLTI1LjFsMjQuOCA3LjFjLTUuNS01LjUtMjYuOC0xMi45LTM0LjItMTUuMiAxOC4yLTQuMSAyOS44LTIwLjggNDIuNS0zMy0zNC45LTEwLjEtNjcuOS01LjktOTcuOSAxMS44bDEyLTQ0LjJMMTgyIDBjLTMxLjYgMjQuMi0zMyA0MS45LTMzLjcgNDUuNS0uOS0yLjQtNi4zLTE5LjYtMTUuMi0yN2EzNS4xMiAzNS4xMiAwIDAgMC0uNSAyNS4zYzMgOC40IDUuOSAxNC44IDguNCAxOC45LTE2LTMuMy0yOC4zLTQuOS00OS4yIDBoLTMuN2wzMyAxNC4zYTE5NC4yNiAxOTQuMjYgMCAwIDAtNDYuNyA2Ny40bC0xLjcgOC40IDEuNyAxLjcgNy42LTQuN2MtMy4zIDExLjYtNS4zIDE5LjQtNi42IDI1LjhhMjAwLjE4IDIwMC4xOCAwIDAgMC0yNy44IDQwLjNjLTE1IDEtMzEuOCAxMC44LTQwLjMgMTQuM2wzIDMuNCAyOC44IDFjLS41IDEtLjcgMi4yLTEuMiAzLjItNy4zIDYuNC0zOS44IDM3LjctMzMgODAuN2wyMC4yLTIyLjRjLjUgMS43LjcgMy40IDEuMiA1LjIgMCAyNS41LjQgODkuNiA2NC45IDE1MC41IDQzLjYgNDAgOTYgNjAuMiAxNTcuNSA2MC4yIDEyMS43IDAgMjIzLTg3LjMgMjIzLTIxMS41IDYuOC05LjctMS4yIDMgMTYuNy0yNS4xbDEzIDE0LjMgMi41LS41QTE4MS44NCAxODEuODQgMCAwIDAgNDk1IDI1NWE0NC43NCA0NC43NCAwIDAgMC02LjgtMTMuM3pNMzk4IDExMS4ybC0uNSAyMS45YzUuNSAxOC4xIDE2LjkgMTcuMiAyMi40IDE3LjJsLTMuNC00LjcgMjIuNC01LjRhMjQyLjQ0IDI0Mi40NCAwIDAgMS0yNyAwYzEyLjgtMi4xIDMzLjMtMjkgNDMtMTEuMyAzLjQgNy42IDYuNCAxNy4yIDkuMyAyNy44bDEuNy01LjlhNTYuMzggNTYuMzggMCAwIDEtMS43LTE1LjJjNS40LjUgOC44IDMuNCA5LjMgMTAuMS41IDYuNCAxLjcgMTQuOCAzLjQgMjUuM2w0LjctMTEuM2M0LjYgMCA0LjUtMy42LTIuNSAyMC43LTIwLjktOC43LTM1LjEtOC40LTQ2LjUtOC40bDE4LjItMTZjLTI1LjMgOC4yLTMzIDEwLjgtNTQuOCAyMC45LTEuMS01LjQtNS0xMy41LTE2LTE5LjktMy4yIDMuOC0yLjguOS0uNyAxNC44aC0yLjVhNjIuMzIgNjIuMzIgMCAwIDAtOC40LTIzLjFsNC4yLTMuNGM4LjQtNy4xIDExLjgtMTQuMyAxMC42LTIxLjktLjUtNi40LTUuNC0xMy41LTEzLjUtMjAuNyA1LjYtMy40IDE1LjItLjQgMjguMyA4LjV6bS0zOS42LTEwLjFjMi43IDEuOSAxMS40IDUuNCAxOC45IDE3LjIgNC4yIDguNCA0IDkuOCAzLjQgMTEuMS0uNSAyLjQtLjUgNC4zLTMgNy4xLTEuNyAyLjUtNS40IDQuNy0xMS44IDcuNi03LjYtMTMtMTYuNS0yMy42LTI3LjgtMzEuMnpNOTEgMTQzLjFsMS4yLTEuN2MxLjItMi45IDQuMi03LjYgOS4zLTE1LjJsMi41LTMuNC0xMyAxMi4zIDUuNC00LjctMTAuMSA5LjMtNC4yIDEuMmMxMi4zLTI0LjEgMjMuMS00MS4zIDMyLjUtNTAuMiA5LjMtOS4zIDE2LTE2IDIwLjItMTkuNGwtNi40IDEuMmMtMTEuMy00LjItMTkuNC03LjEtMjQuOC04LjQgMi41LS41IDMuNy0uNSAzLjItLjUgMTAuMyAwIDE3LjUuNSAyMC45IDEuMmE1Mi4zNSA1Mi4zNSAwIDAgMCAxNiAyLjVsLjUtMS43LTguNC0zNS44IDEzLjUgMjlhNDIuODkgNDIuODkgMCAwIDAgNS45LTE0LjNjMS43LTYuNCA1LjQtMTMgMTAuMS0xOS40czcuNi0xMC42IDkuMy0xMS4zYTIzNC42OCAyMzQuNjggMCAwIDAtNi40IDI1LjNsLTEuNyA3LjEtLjUgNC43IDIuNSAyLjVDMTkwLjQgMzkuOSAyMTQgMzQgMjM5LjggMzQuNWwyMS4xLjVjLTExLjggMTMuNS0yNy44IDIxLjktNDguNSAyNC44YTIwMS4yNiAyMDEuMjYgMCAwIDEtMjMuNCAyLjlsLS4yLS41LTIuNS0xLjJhMjAuNzUgMjAuNzUgMCAwIDAtMTQgMmMtMi41LS4yLTQuOS0uNS03LjEtLjdsLTIuNSAxLjcuNSAxLjJjMiAuMiAzLjkuNSA2LjIuN2wtMiAzLjQgMy40LS41LTEwLjYgMTEuM2MtNC4yIDMtNS40IDYuNC00LjIgOS4zbDUuNC0zLjRoMS4yYTM5LjQgMzkuNCAwIDAgMSAyNS4zLTE1LjJ2LTNjNi40LjUgMTMgMSAxOS40IDEuMiA2LjQgMCA4LjQuNSA1LjQgMS4yYTE4OS42IDE4OS42IDAgMCAxIDIwLjcgMTMuNWMxMy41IDEwLjEgMjMuNiAyMS45IDMwIDM1LjQgOC44IDE4LjIgMTMuNSAzNy4xIDEzLjUgNTYuNmExNDEuMTMgMTQxLjEzIDAgMCAxLTMgMjguMyAyMDkuOTEgMjA5LjkxIDAgMCAxLTE2IDQ2bDIuNS41YzE4LjItMTkuNyA0MS45LTE2IDQ5LjItMTZsLTYuNCA1LjkgMjIuNCAxNy43LTEuNyAzMC43Yy01LjQtMTIuMy0xNi41LTIxLjEtMzMtMjcuOCAxNi41IDE0LjggMjMuNiAyMS4xIDIxLjkgMjAuMi00LjgtMi44LTMuNS0xLjktMTAuOC0zLjcgNC4xIDQuMSAxNy41IDE4LjggMTguMiAyMC43bC4yLjItLjIuMmMwIDEuOCAxLjYtMS4yLTE0IDIyLjktNzUuMi0xNS4zLTEwNi4yNy00Mi43LTE0MS4yLTYzLjJsMTEuOCAxLjJjLTExLjgtMTguNS0xNS42LTE3LjctMzguNC0yNi4xTDE0OSAyMjVjLTguOC0zLTE4LjItMy0yOC4zLjVsNy42LTEwLjYtMS4yLTEuN2MtMTQuOSA0LjMtMTkuOCA5LjItMjIuNiAxMS4zLTEuMS01LjUtMi44LTEyLjQtMTIuMy0yOC44bC0xLjIgMjctMTMuMi01YzEuNS0yNS4yIDUuNC01MC41IDEzLjItNzQuNnptMjc2LjUgMzMwYy00OS45IDI1LTU2LjEgMjIuNC01OSAyMy45LTI5LjgtMTEuOC01MC45LTMxLjctNjMuNS01OC44bDMwIDE2LjVjLTkuOC05LjMtMTguMy0xNi41LTM4LjQtNDQuM2wxMS44IDIzLjEtMTcuNy03LjZjMTQuMiAyMS4xIDIzLjUgNTEuNyA2Ni42IDczLjUtMTIwLjggMjQuMi0xOTktNzIuMS0yMDAuOS03NC4zYTI2Mi41NyAyNjIuNTcgMCAwIDAgMzUuNCAyNC44YzMuNCAxLjcgNy4xIDIuNSAxMC4xIDEuMmwtMTYtMjAuN2M5LjIgNC4yIDkuNSA0LjUgNjkuMSAyOS00Mi41LTIwLjctNzMuOC00MC44LTkzLjItNjAuMi0uNSA2LjQtMS4yIDEwLjEtMS4yIDEwLjFhODAuMjUgODAuMjUgMCAwIDEgMjAuNyAyNi42Yy0zOS0xOC45LTU3LjYtNDcuNi03MS4zLTgyLjYgNDkuOSA1NS4xIDExOC45IDM3LjUgMTIwLjUgMzcuMSAzNC44IDE2LjQgNjkuOSAyMy42IDExMy45IDEwLjYgMy4zIDAgMjAuMyAxNyAyNS4zIDM5LjFsNC4yLTMtMi41LTIzLjZjOSA5IDI0LjkgMjIuNiAzNC40IDEzLTE1LjYtNS4zLTIzLjUtOS41LTI5LjUtMzEuNyA0LjYgNC4yIDcuNiA5IDI3LjggMTVsMS4yLTEuMi0xMC41LTE0LjJjMTEuNy00LjgtMy41IDEgMzItMTAuOCA0LjMgMzQuMyA5IDQ5LjIuNyA4OS41em0xMTUuMy0yMTQuNGwtMi41LjUgMyA5LjNjLTMuNSA1LjktMjMuNyA0NC4zLTcxLjYgNzkuNy0zOS41IDI5LjgtNzYuNiAzOS4xLTgwLjkgNDAuM2wtNy42LTcuMS0xLjIgMyAxNC4zIDE2LTcuMS00LjcgMy40IDQuMmgtMS4ybC0yMS45LTEzLjUgOS4zIDI2LjYtMTktMjcuOS0xLjIgMi41IDcuNiAyOWMtNi4xLTguMi0yMS0zMi42LTU2LjgtMzkuNmwzMi41IDIxLjJhMjE0LjgyIDIxNC44MiAwIDAgMS05My4yLTYuNGMtNC4yLTEuMi04LjktMi41LTEzLjUtNC4ybDEuMi0zLTQ0LjgtMjIuNCAyNi4xIDIyLjRjLTU3LjcgOS4xLTExMy0yNS40LTEyNi40LTgzLjRsLTIuNS0xNi40LTIyLjI3IDIyLjNjMTkuNS01Ny41IDI1LjYtNTcuOSA1MS40LTcwLjEtOS4xLTUuMy0xLjYtMy4zLTM4LjQtOS4zIDE1LjgtNS44IDMzLTE1LjQgNzMgNS4yYTE4LjUgMTguNSAwIDAgMSAzLjctMS43Yy42LTMuMi40LS44IDEtMTEuOCAzLjkgMTAgMy42IDguNyAzIDkuM2wxLjcuNWMxMi43LTYuNSA4LjktNC41IDE3LTguOWwtNS40IDEzLjUgMjIuMy01LjgtOC40IDguNCAyLjUgMi41YzQuNS0xLjggMzAuMyAzLjQgNDAuOCAxNmwtMjMuNi0yLjVjMzkuNCAyMyA1MS41IDU0IDU1LjggNjkuNmwxLjctMS4yYy0yLjgtMjIuMy0xMi40LTMzLjktMTYtNDAuMSA0LjIgNSAzOS4yIDM0LjYgMTEwLjQgNDYtMTEuMy0uNS0yMy4xIDUuNC0zNC45IDE4LjlsNDYuNy0yMC4yLTkuMyAyMS45YzcuNi0xMC4xIDE0LjgtMjMuNiAyMS4yLTM5LjZ2LS41bDEuMi0zLTEuMiAxNmMxMy41LTQxLjggMjUuMy03OC41IDM1LjQtMTA5LjdsMTMuNS0yNy44di0ybC01LjQtNC4yaDEwLjFsNS45IDQuMiAyLjUtMS4yLTMuNC0xNiAxMi4zIDE4LjkgNDEuOC0yMC4yLTE0LjggMTMgLjUgMi45IDE3LjctLjVhMTg0IDE4NCAwIDAgMSAzMyA0LjJsLTIzLjYgMi41LTEuMiAzIDI2LjYgMjMuMWEyNTQuMjEgMjU0LjIxIDAgMCAxIDI3IDMyYy0xMS4yLTMuMy0xMC4zLTMuNC0yMS4yLTMuNGwxMi4zIDMyLjV6bS02LjEtNzEuM2wtMy45IDEzLTE0LjMtMTEuOHptLTI1NC44IDcuMWMxLjcgMTAuNiA0LjcgMTcuNyA4LjggMjEuOS05LjMgNi42LTI3LjUgMTMuOS00Ni41IDE2bC41IDEuMmE1MC4yMiA1MC4yMiAwIDAgMCAyNC44LTIuNWwtNy4xIDEzYzQuMi0xLjcgMTAuMS03LjEgMTcuNy0xNC44IDExLjktNS41IDEyLjctNS4xIDIwLjItMTYtMTIuNy02LjQtMTUuNy0xMy43LTE4LjQtMTguOHptMy43LTEwMi4zYy02LjQtMy40LTEwLjYgMy0xMi4zIDE4LjlzMi41IDI5LjUgMTEuOCAzOS42IDE4LjIgMTAuNiAyNi4xIDMgMy40LTIzLjYtMTEuMy00Ny43YTM5LjU3IDM5LjU3IDAgMCAwLTE0LjI3LTEzLjh6bS00LjcgNDYuM2M1LjQgMi4yIDEwLjUgMS45IDEyLjMtMTAuNnYtNC43bC0xLjIuNWMtNC4zLTMuMS0yLjUtNC41LTEuNy02LjJsLjUtLjVjLS45LTEuMi01LTguMS0xMi41IDQuNy0uNS0xMy41LjUtMjEuOSAzLTI0LjggMS4yLTIuNSA0LjctMS4yIDExLjMgNC4yIDYuNCA1LjQgMTEuMyAxNiAxNS4yIDMyLjUgNi41IDI4LTE5LjggMjYuMi0yNi45IDQuOXptLTQ1LTUuNWMxLjYuMyA5LjMtMS4xIDkuMy0xNC44aC0uNWMtNS40LTEuMS0yLjItNS41LS43LTUuOS0xLjctMy0zLjQtNC4yLTUuNC00LjctOC4xIDAtMTEuNiAxMi43LTguMSAyMS4yYTcuNTEgNy41MSAwIDAgMCA1LjQzIDQuMnpNMjE2IDgyLjlsLTIuNS41LjUgM2E0OC45NCA0OC45NCAwIDAgMSAyNi4xIDUuOWMtMi41LTUuNS0xMC0xNC4zLTI4LjMtMTQuM2wuNSAyLjV6bS03MS44IDQ5LjRjMjEuNyAxNi44IDE2LjUgMjEuNCA0Ni41IDIzLjZsLTIuOS00LjdhNDIuNjcgNDIuNjcgMCAwIDAgMTQuOC0yOC4zYzEuNy0xNi0xLjItMjkuNS04LjgtNDEuM2wxMy03LjZhMi4yNiAyLjI2IDAgMCAwLS41LTEuNyAxNC4yMSAxNC4yMSAwIDAgMC0xMy41IDEuN2MtMTIuNyA2LjctMjggMjAuOS0yOSAyMi40LTEuNyAxLjctMy40IDUuOS01LjQgMTMuNWE5OS42MSA5OS42MSAwIDAgMC0yLjkgMjMuNmMtNC43LTgtMTAuNS02LjQtMTkuOS01LjlsNy4xIDcuNmMtMTYuNSAwLTIzLjMgMTUuNC0yMy42IDE2IDYuOCAwIDQuNi03LjYgMzAtMTIuMy00LjMtNi4zLTMuMy01LTQuOS02LjZ6bTE4LjctMTguN2MxLjItNy42IDMuNC0xMyA2LjQtMTcuMiA1LjQtNi40IDEwLjYtMTAuMSAxNi0xMS44IDQuMi0xLjcgNy4xIDEuMiAxMC4xIDkuM2E3Mi4xNCA3Mi4xNCAwIDAgMSAzIDI1LjNjLS41IDkuMy0zLjQgMTcuMi04LjQgMjMuMS0yLjkgMy40LTUuNCA1LjktNi40IDcuNmEzOS4yMSAzOS4yMSAwIDAgMS0xMS4zLS41bC03LjEtMy40LTUuNC02LjRjLjgtMTAgMS4zLTE4LjggMy4xLTI2em00MiA1Ni4xYy0zNC44IDE0LjQtMzQuNyAxNC0zNi4xIDE0LjMtMjAuOCA0LjctMTktMjQuNC0xOC45LTI0LjhsNS45LTEuMi0uNS0yLjVjLTIwLjItMi42LTMxIDQuMi0zMi41IDQuOS41LjUgMyAzLjQgNS45IDkuMyA0LjItNi40IDguOC0xMC4xIDE1LjItMTAuNmE4My40NyA4My40NyAwIDAgMCAxLjcgMzMuN2MuMS41IDIuNiAxNy40IDI3LjUgMjQuMSAxMS4zIDMgMjcgMS4yIDQ4LjktNS40bC05LjIuNWMtNC4yLTE0LjgtNi40LTI0LjgtNS45LTI5LjUgMTEuMy04LjggMjEuOS0xMS4zIDMwLjctNy42aDIuNWwtMTEuOC03LjYtNy4xLjVjLTUuOSAxLjItMTIuMyA0LjItMTkuNCA4LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZW1lY28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAyLjkgOC40M2M5LjktNS43MyAyNi01LjgyIDM1Ljk1LS4yMUw0MzAgMTE1Ljg1YzEwIDUuNiAxOCAxOS40NCAxOCAzMC44NlYzNjRjMCAxMS40NC04LjA2IDI1LjI5LTE4IDMxTDIzOC44MSA1MDMuNzRjLTkuOTMgNS42Ni0yNiA1LjU3LTM1Ljg1LS4yMUwxNy44NiAzOTUuMTJDOCAzODkuMzQgMCAzNzUuMzggMCAzNjRWMTQ2LjcxYzAtMTEuNDQgOC0yNS4zNiAxNy45MS0zMS4wOHptLTc3LjQgMTk5LjgzYy0xNS45NCAwLTMxLjg5LjE0LTQ3LjgzLjE0djEwMS40NUg5Ni44VjI4MGgyOC43YzQ5LjcxIDAgNDkuNTYtNzEuNzQgMC03MS43NHptMTQwLjE0IDEwMC4yOWwtMzAuNzMtMzQuNjRjMzctNy41MSAzNC44LTY1LjIzLTEwLjg3LTY1LjUxLTE2LjA5IDAtMzIuMTctLjE0LTQ4LjI2LS4xNHYxMDEuNTloMTkuMTN2LTMzLjkxaDE4LjQxbDI5LjU2IDMzLjkxaDIyLjc2em0tNDEuNTktODIuMzJjMjMuMzQgMCAyMy4yNiAzMi40NiAwIDMyLjQ2aC0yOS4xM3YtMzIuNDZ6bS05NS41Ni0xLjZjMjEuMTggMCAyMS4xMSAzOC44NSAwIDM4Ljg1SDk2LjE4di0zOC44NHptMTkyLjY1LTE4LjI1Yy02OC40NiAwLTcxIDEwNS44IDAgMTA1LjggNjkuNDgtLjAxIDY5LjQxLTEwNS44IDAtMTA1Ljh6bTAgMTcuMzljNDQuMTIgMCA0NC44IDcwLjg2IDAgNzAuODZzLTQ0LjQzLTcwLjg2IDAtNzAuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZW1laXNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggODguMjg2YzAtMTAgNi4yODYtMjEuNzE0IDE3LjcxNS0yMS43MTQgMTEuMTQyIDAgMTcuNzE0IDExLjcxNCAxNy43MTQgMjEuNzE0IDAgMTAuMjg1LTYuNTcyIDIxLjcxNC0xNy43MTQgMjEuNzE0QzIxNC4yODYgMTEwIDIwOCA5OC41NzEgMjA4IDg4LjI4NnptMzA0IDE2MGMwIDM2LjAwMS0xMS40MjkgMTAyLjI4Ni0zNi4yODYgMTI5LjcxNC0yMi44NTggMjQuODU4LTg3LjQyOCA2MS4xNDMtMTIwLjg1NyA3MC41NzJsLTEuMTQzLjI4NnYzMi41NzFjMCAxNi4yODYtMTIuNTcyIDMwLjU3MS0yOS4xNDMgMzAuNTcxLTEwIDAtMTkuNDI5LTUuNzE0LTI0LjU3Mi0xNC4yODYtNS40MjcgOC41NzItMTQuODU2IDE0LjI4Ni0yNC44NTYgMTQuMjg2LTEwIDAtMTkuNDI5LTUuNzE0LTI0Ljg1OC0xNC4yODYtNS4xNDIgOC41NzItMTQuNTcxIDE0LjI4Ni0yNC41NyAxNC4yODYtMTAuMjg2IDAtMTkuNDI5LTUuNzE0LTI0Ljg1OC0xNC4yODYtNS4xNDMgOC41NzItMTQuNTcxIDE0LjI4Ni0yNC41NzEgMTQuMjg2LTE4Ljg1NyAwLTI5LjQyOS0xNS43MTQtMjkuNDI5LTMyLjg1Ny0xNi4yODYgMTIuMjg1LTM1LjcxNSAxOS40MjgtNTYuNTcxIDE5LjQyOC0yMiAwLTQzLjQyOS04LjI4NS02MC4yODYtMjIuODU3IDEwLjI4NS0uMjg2IDIwLjU3MS0yLjI4NiAzMC4yODUtNS43MTQtMjAuODU3LTUuNzE0LTM5LjQyOC0xOC44NTctNTItMzYuMjg2IDIxLjM3IDQuNjQ1IDQ2LjIwOSAxLjY3MyA2Ny4xNDMtMTEuMTQzLTIyLTIyLTU2LjU3MS01OC44NTctNjguNTcyLTg3LjQyOEMxLjE0MyAzMjEuNzE0IDAgMzAzLjcxNCAwIDI4OS40MjljMC00OS43MTQgMjAuMjg2LTE2MCA4Ni4yODYtMTYwIDEwLjU3MSAwIDE4Ljg1NyA0Ljg1OCAyMy4xNDMgMTQuODU3YTE1OC43OTIgMTU4Ljc5MiAwIDAgMSAxMi0xNS40MjhjMi0yLjU3MiA1LjcxNC01LjQyOSA3LjE0My04LjI4NiA3Ljk5OS0xMi41NzEgMTEuNzE0LTIxLjE0MiAyMS43MTQtMzRDMTgyLjU3MSA0NS40MjggMjMyIDE3LjE0MyAyODUuMTQzIDE3LjE0M2M2IDAgMTIgLjI4NSAxNy43MTQgMS4xNDNDMzEzLjcxNCA2LjU3MSAzMjguODU3IDAgMzQ0LjU3MiAwYzE0LjU3MSAwIDI5LjcxNCA2IDQwIDE2LjI4Ni44NTcuODU4IDEuNDI4IDIuMjg2IDEuNDI4IDMuNDI4IDAgMy43MTQtMTAuMjg1IDEzLjQyOS0xMi44NTcgMTYuMjg2IDQuMjg2IDEuNDI5IDE1LjcxNCA2Ljg1OCAxNS43MTQgMTIgMCAyLjg1Ny0yLjg1NyA1LjE0My00LjU3MSA3LjE0MyAzMS40MjkgMjcuNzE0IDQ5LjQyOSA2Ny4xNDMgNTYuMjg2IDEwOCA0LjI4Ni01LjE0MyAxMC4yODUtOC41NzIgMTcuMTQzLTguNTcyIDEwLjU3MSAwIDIwLjg1NyA3LjE0NCAyOC41NzEgMTQuMDAxQzUwNy4xNDMgMTg3LjE0MyA1MTIgMjIxLjcxNCA1MTIgMjQ4LjI4NnpNMTg4IDg5LjQyOGMwIDE4LjI4NiAxMi41NzEgMzcuMTQzIDMyLjI4NiAzNy4xNDMgMTkuNzE0IDAgMzIuMjg1LTE4Ljg1NyAzMi4yODUtMzcuMTQzIDAtMTgtMTIuNTcxLTM2Ljg1Ny0zMi4yODUtMzYuODU3LTE5LjcxNSAwLTMyLjI4NiAxOC44NTgtMzIuMjg2IDM2Ljg1N3pNMjM3LjcxNCAxOTRjMC0xOS43MTQgMy43MTQtMzkuMTQzIDguNTcxLTU4LjI4Ni01Mi4wMzkgNzkuNTM0LTEzLjUzMSAxODQuNTcxIDY4Ljg1OCAxODQuNTcxIDIxLjQyOCAwIDQyLjU3MS03LjcxNCA2MC0yMCAyLTcuNDI5IDMuNzE0LTE0Ljg1NyAzLjcxNC0yMi41NzIgMC0xNC4yODYtNi4yODYtMjEuNDI4LTIwLjU3Mi0yMS40MjgtNC41NzEgMC05LjE0My44NTctMTMuNDI5IDEuNzE0LTYzLjM0MyAxMi42NjgtMTA3LjE0MiAzLjY2OS0xMDcuMTQyLTYzLjk5OXptLTQxLjE0MiAyNTQuODU4YzAtMTEuMTQzLTguODU4LTIwLjg1Ny0yMC4yODYtMjAuODU3LTExLjQyOSAwLTIwIDkuNzE1LTIwIDIwLjg1N3YzMi41NzFjMCAxMS4xNDMgOC41NzEgMjEuMTQyIDIwIDIxLjE0MiAxMS40MjggMCAyMC4yODYtOS43MTUgMjAuMjg2LTIxLjE0MnYtMzIuNTcxem00OS4xNDMgMGMwLTExLjE0My04LjU3Mi0yMC44NTctMjAtMjAuODU3LTExLjQyOSAwLTIwLjI4NiA5LjcxNS0yMC4yODYgMjAuODU3djMyLjU3MWMwIDExLjE0MyA4Ljg1NyAyMS4xNDIgMjAuMjg2IDIxLjE0MiAxMS40MjggMCAyMC0xMCAyMC0yMS4xNDJ2LTMyLjU3MXptNDkuNzEzIDBjMC0xMS4xNDMtOC44NTctMjAuODU3LTIwLjI4NS0yMC44NTctMTEuNDI5IDAtMjAuMjg2IDkuNzE1LTIwLjI4NiAyMC44NTd2MzIuNTcxYzAgMTEuMTQzIDguODU3IDIxLjE0MiAyMC4yODYgMjEuMTQyIDExLjQyOCAwIDIwLjI4NS05LjcxNSAyMC4yODUtMjEuMTQydi0zMi41NzF6bTQ5LjcxNSAwYzAtMTEuMTQzLTguODU3LTIwLjg1Ny0yMC4yODYtMjAuODU3LTExLjQyOCAwLTIwLjI4NiA5LjcxNS0yMC4yODYgMjAuODU3djMyLjU3MWMwIDExLjE0MyA4Ljg1OCAyMS4xNDIgMjAuMjg2IDIxLjE0MiAxMS40MjkgMCAyMC4yODYtMTAgMjAuMjg2LTIxLjE0MnYtMzIuNTcxek00MjEuNzE0IDI4NmMtMzAuODU3IDU5LjE0Mi05MC4yODUgMTAyLjU3Mi0xNTguNTcxIDEwMi41NzItOTYuNTcxIDAtMTYwLjU3MS04NC41NzItMTYwLjU3MS0xNzYuNTcyIDAtMTYuODU3IDItMzMuNDI5IDYtNDkuNzE0LTIwIDMzLjcxNS0yOS43MTQgNzIuNTcyLTI5LjcxNCAxMTEuNDI5IDAgNjAuMjg2IDI0Ljg1NyAxMjEuNzE1IDcxLjQyOSAxNjAuODU3IDUuMTQzLTkuNzE0IDE0Ljg1Ny0xNi4yODYgMjYtMTYuMjg2IDEwIDAgMTkuNDI4IDUuNzE0IDI0LjU3MSAxNC4yODYgNS40MjktOC41NzEgMTQuNTcxLTE0LjI4NiAyNC44NTgtMTQuMjg2IDEwIDAgMTkuNDI4IDUuNzE0IDI0LjU3MSAxNC4yODYgNS40MjktOC41NzEgMTQuODU3LTE0LjI4NiAyNC44NTgtMTQuMjg2IDEwIDAgMTkuNDI4IDUuNzE0IDI0Ljg1NyAxNC4yODYgNS4xNDMtOC41NzEgMTQuNTcxLTE0LjI4NiAyNC41NzItMTQuMjg2IDEwLjg1NyAwIDIwLjg1NyA2LjU3MiAyNS43MTQgMTYgNDMuNDI3LTM2LjI4NiA2OC41NjktOTIgNzEuNDI2LTE0OC4yODZ6bTEwLjU3Mi05OS43MTRjMC01My43MTQtMzQuNTcxLTEwNS43MTQtOTIuNTcyLTEwNS43MTQtMzAuMjg1IDAtNTguNTcxIDE1LjE0My03OC44NTcgMzYuODU3QzI0MC44NjIgMTgzLjgxMiAyMzMuNDEgMjU0IDMwMi4yODYgMjU0YzI4LjgwNSAwIDk3LjM1Ny0yOC41MzggODQuMjg2IDM2Ljg1NyAyOC44NTctMjYgNDUuNzE0LTY1LjcxNCA0NS43MTQtMTA0LjU3MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhpbmtQZWFrcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjUuNCA0MDkuNGw4Ny4xLTE1MC4yLTMyLS4zLTU1LjEgOTVMMjU5LjIgMCAyMyA0MDcuNGwzMiAuM0wyNTkuMiA1NS42em0tMzU1LjMtNDQuMWgzMi4xbDExNy40LTIwMi41TDQ2MyA1MTEuOWwzMi41LjEtMjM1LjgtNDA0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRpa3RvayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDgsMjA5LjkxYTIxMC4wNiwyMTAuMDYsMCwwLDEtMTIyLjc3LTM5LjI1VjM0OS4zOEExNjIuNTUsMTYyLjU1LDAsMSwxLDE4NSwxODguMzFWMjc4LjJhNzQuNjIsNzQuNjIsMCwxLDAsNTIuMjMsNzEuMThWMGw4OCwwYTEyMS4xOCwxMjEuMTgsMCwwLDAsMS44NiwyMi4xN2gwQTEyMi4xOCwxMjIuMTgsMCwwLDAsMzgxLDEwMi4zOWExMjEuNDMsMTIxLjQzLDAsMCwwLDY3LDIwLjE0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFkZUZlZGVyYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDguOGMtMTM3IDAtMjQ4IDExMS0yNDggMjQ4czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDgtMTExLTI0OC0yNDgtMjQ4em0wIDQ4Mi44Yy0xMjkuNyAwLTIzNC44LTEwNS4xLTIzNC44LTIzNC44UzExOC4zIDIyIDI0OCAyMnMyMzQuOCAxMDUuMSAyMzQuOCAyMzQuOFMzNzcuNyA0OTEuNiAyNDggNDkxLjZ6bTE1NS4xLTMyOC41di00Ni44SDIwOS4zVjE5OEg1NC4ybDM2LjcgNDZoMTE3Ljd2MTk2LjhoNDguOFYyNDVoODMuM3YtNDdoLTgzLjN2LTM0LjhoMTQ1Ljd6bS03My4zIDQ1LjF2MjMuOWgtODIuOXYxOTcuNGgtMjYuOFYyMzIuMUg5Ni4zbC0yMC4xLTIzLjloMTQzLjl2LTgwLjZoMTcxLjhWMTUyaC0xNDV2NTYuMnptLTE2MS4zLTY5bC0xMi40LTIwLjcgMi4xIDIzLjgtMjMuNSA1LjQgMjMuMyA1LjQtMi4xIDI0IDEyLjMtMjAuNSAyMi4yIDkuNS0xNS43LTE4LjEgMTUuOC0xOC4xem0tMjkuNi0xOS43bDkuMy0xMS41LTEyLjcgNS45LTgtMTIuNCAxLjcgMTMuOS0xNC4zIDMuOCAxMy43IDIuNy0uOCAxNC43IDYuOC0xMi4yIDEzLjggNS4zem0xNjUuNCAxNDUuMmwtMTMuMSA1LjYtNy4zLTEyLjIgMS4zIDE0LjItMTMuOSAzLjIgMTMuOSAzLjItMS4yIDE0LjIgNy4zLTEyLjIgMTMuMSA1LjUtOS40LTEwLjd6bTEwNi45LTc3LjJsLTIwLjkgOS4xLTEyLTE5LjYgMi4yIDIyLjctMjIuMyA1LjQgMjIuMiA0LjktMS44IDIyLjkgMTEuNS0xOS42IDIxLjIgOC44LTE1LjEtMTd6TTI0OCAyOS45Yy0xMjUuMyAwLTIyNi45IDEwMS42LTIyNi45IDIyNi45UzEyMi43IDQ4My43IDI0OCA0ODMuN3MyMjYuOS0xMDEuNiAyMjYuOS0yMjYuOVMzNzMuMyAyOS45IDI0OCAyOS45ek0zNDIuNiAxOTZ2NTFoLTgzLjN2MTk1LjdoLTUyLjdWMjQ1LjlIODkuOWwtNDAtNDkuOWgxNTcuNHYtODEuNmgxOTcuOHY1MC43SDI1OS40VjE5NnpNMjQ4IDQzLjJjNjAuMyAwIDExNC44IDI1IDE1My42IDY1LjJIMjAyLjVWMTkwSDQ1LjFDNzMuMSAxMDQuOCAxNTMuNCA0My4yIDI0OCA0My4yem0wIDQyNy4xYy0xMTcuOSAwLTIxMy42LTk1LjYtMjEzLjYtMjEzLjUgMC0yMS4yIDMuMS00MS44IDguOS02MS4xTDg3LjEgMjUyaDExNC43djE5Ni44aDY0LjZWMjUzaDgzLjN2LTYyLjdoLTgzLjJ2LTE5LjJoMTQ1LjZ2LTUwLjhjMzAuOCAzNyA0OS4zIDg0LjYgNDkuMyAxMzYuNS4xIDExNy45LTk1LjUgMjEzLjUtMjEzLjQgMjEzLjV6TTE3OC44IDI3NWwtMTEtMjEuNCAxLjcgMjQuNS0yMy43IDMuOSAyMy44IDUuOS0zLjcgMjMuOCAxMy0yMC45IDIxLjUgMTAuOC0xNS44LTE4LjggMTYuOS0xNy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmVsbG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkyLjMgMzJINTYuMUMyNS4xIDMyIDAgNTcuMSAwIDg4Yy0uMSAwIDAtNCAwIDMzNiAwIDMwLjkgMjUuMSA1NiA1NiA1NmgzMzYuMmMzMC44LS4yIDU1LjctMjUuMiA1NS43LTU2Vjg4Yy4xLTMwLjgtMjQuOC01NS44LTU1LjYtNTZ6TTE5NyAzNzEuM2MtLjIgMTQuNy0xMi4xIDI2LjYtMjYuOSAyNi42SDg3LjRjLTE0LjguMS0yNi45LTExLjgtMjctMjYuNlYxMTcuMWMwLTE0LjggMTItMjYuOSAyNi45LTI2LjloODIuOWMxNC44IDAgMjYuOSAxMiAyNi45IDI2Ljl2MjU0LjJ6bTE5My4xLTExMmMwIDE0LjgtMTIgMjYuOS0yNi45IDI2LjloLTgxYy0xNC44IDAtMjYuOS0xMi0yNi45LTI2LjlWMTE3LjJjMC0xNC44IDEyLTI2LjkgMjYuOC0yNi45aDgxLjFjMTQuOCAwIDI2LjkgMTIgMjYuOSAyNi45djE0Mi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmlwYWR2aXNvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjguOTEsMTc4LjgyLDU3NiwxMjcuNThINDcxLjY2YTMyNi4xMSwzMjYuMTEsMCwwLDAtMzY3LDBIMGw0Ny4wOSw1MS4yNEExNDMuOTExLDE0My45MTEsMCwwLDAsMjQxLjg2LDM5MC43M0wyODgsNDQwLjkzbDQ2LjExLTUwLjE3QTE0My45NCwxNDMuOTQsMCwwLDAsNTc1Ljg4LDI4NS4xOGgtLjAzQTE0My41NiwxNDMuNTYsMCwwLDAsNTI4LjkxLDE3OC44MlpNMTQ0LjA2LDM4Mi41N2E5Ny4zOSw5Ny4zOSwwLDEsMSw5Ny4zOS05Ny4zOUE5Ny4zOSw5Ny4zOSwwLDAsMSwxNDQuMDYsMzgyLjU3Wk0yODgsMjgyLjM3YzAtNjQuMDktNDYuNjItMTE5LjA4LTEwOC4wOS0xNDIuNTlhMjgxLDI4MSwwLDAsMSwyMTYuMTcsMEMzMzQuNjEsMTYzLjMsMjg4LDIxOC4yOSwyODgsMjgyLjM3Wm0xNDMuODgsMTAwLjJoLS4wMWE5Ny40MDUsOTcuNDA1LDAsMSwxLC4wMSwwWk0xNDQuMDYsMjM0LjEyaC0uMDFhNTEuMDYsNTEuMDYsMCwxLDAsNTEuMDYsNTEuMDZ2LS4xMUE1MSw1MSwwLDAsMCwxNDQuMDYsMjM0LjEyWm0yODcuODIsMGE1MS4wNiw1MS4wNiwwLDEsMCw1MS4wNiw1MS4wNkE1MS4wNiw1MS4wNiwwLDAsMCw0MzEuODgsMjM0LjEyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUdW1ibHJTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptLTgyLjMgMzY0LjJjLTguNSA5LjEtMzEuMiAxOS44LTYwLjkgMTkuOC03NS41IDAtOTEuOS01NS41LTkxLjktODcuOXYtOTBoLTI5LjdjLTMuNCAwLTYuMi0yLjgtNi4yLTYuMnYtNDIuNWMwLTQuNSAyLjgtOC41IDcuMS0xMCAzOC44LTEzLjcgNTAuOS00Ny41IDUyLjctNzMuMi41LTYuOSA0LjEtMTAuMiAxMC0xMC4yaDQ0LjNjMy40IDAgNi4yIDIuOCA2LjIgNi4ydjcyaDUxLjljMy40IDAgNi4yIDIuOCA2LjIgNi4ydjUxLjFjMCAzLjQtMi44IDYuMi02LjIgNi4yaC01Mi4xVjMyMWMwIDIxLjQgMTQuOCAzMy41IDQyLjUgMjIuNCAzLTEuMiA1LjYtMiA4LTEuNCAyLjIuNSAzLjYgMi4xIDQuNiA0LjlsMTMuOCA0MC4yYzEgMy4yIDIgNi43LS4zIDkuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHVtYmxyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwOS44IDQ4MC4zYy0xMy42IDE0LjUtNTAgMzEuNy05Ny40IDMxLjctMTIwLjggMC0xNDctODguOC0xNDctMTQwLjZ2LTE0NEgxNy45Yy01LjUgMC0xMC00LjUtMTAtMTB2LTY4YzAtNy4yIDQuNS0xMy42IDExLjMtMTYgNjItMjEuOCA4MS41LTc2IDg0LjMtMTE3LjEuOC0xMSA2LjUtMTYuMyAxNi4xLTE2LjNoNzAuOWM1LjUgMCAxMCA0LjUgMTAgMTB2MTE1LjJoODNjNS41IDAgMTAgNC40IDEwIDkuOXY4MS43YzAgNS41LTQuNSAxMC0xMCAxMGgtODMuNFYzNjBjMCAzNC4yIDIzLjcgNTMuNiA2OCAzNS44IDQuOC0xLjkgOS0zLjIgMTIuNy0yLjIgMy41LjkgNS44IDMuNCA3LjQgNy45bDIyIDY0LjNjMS44IDUgMy4zIDEwLjYtLjQgMTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHdpdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5MS4xNywxMDMuNDdIMzUyLjU0djEwOS43aDM4LjYzWk0yODUsMTAzSDI0Ni4zN1YyMTIuNzVIMjg1Wk0xMjAuODMsMCwyNC4zMSw5MS40MlY0MjAuNThIMTQwLjE0VjUxMmw5Ni41My05MS40Mmg3Ny4yNUw0ODcuNjksMjU2VjBaTTQ0OS4wNywyMzcuNzVsLTc3LjIyLDczLjEySDI5NC42MWwtNjcuNiw2NHYtNjRIMTQwLjE0VjM2LjU4SDQ0OS4wN1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHdpdHRlclNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tNDguOSAxNTguOGMuMiAyLjguMiA1LjcuMiA4LjUgMCA4Ni43LTY2IDE4Ni42LTE4Ni42IDE4Ni42LTM3LjIgMC03MS43LTEwLjgtMTAwLjctMjkuNCA1LjMuNiAxMC40LjggMTUuOC44IDMwLjcgMCA1OC45LTEwLjQgODEuNC0yOC0yOC44LS42LTUzLTE5LjUtNjEuMy00NS41IDEwLjEgMS41IDE5LjIgMS41IDI5LjYtMS4yLTMwLTYuMS01Mi41LTMyLjUtNTIuNS02NC40di0uOGM4LjcgNC45IDE4LjkgNy45IDI5LjYgOC4zYTY1LjQ0NyA2NS40NDcgMCAwIDEtMjkuMi01NC42YzAtMTIuMiAzLjItMjMuNCA4LjktMzMuMSAzMi4zIDM5LjggODAuOCA2NS44IDEzNS4yIDY4LjYtOS4zLTQ0LjUgMjQtODAuNiA2NC04MC42IDE4LjkgMCAzNS45IDcuOSA0Ny45IDIwLjcgMTQuOC0yLjggMjktOC4zIDQxLjYtMTUuOC00LjkgMTUuMi0xNS4yIDI4LTI4LjggMzYuMSAxMy4yLTEuNCAyNi01LjEgMzcuOC0xMC4yLTguOSAxMy4xLTIwLjEgMjQuNy0zMi45IDM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUd2l0dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1OS4zNyAxNTEuNzE2Yy4zMjUgNC41NDguMzI1IDkuMDk3LjMyNSAxMy42NDUgMCAxMzguNzItMTA1LjU4MyAyOTguNTU4LTI5OC41NTggMjk4LjU1OC01OS40NTIgMC0xMTQuNjgtMTcuMjE5LTE2MS4xMzctNDcuMTA2IDguNDQ3Ljk3NCAxNi41NjggMS4yOTkgMjUuMzQgMS4yOTkgNDkuMDU1IDAgOTQuMjEzLTE2LjU2OCAxMzAuMjc0LTQ0LjgzMi00Ni4xMzItLjk3NS04NC43OTItMzEuMTg4LTk4LjExMi03Mi43NzIgNi40OTguOTc0IDEyLjk5NSAxLjYyNCAxOS44MTggMS42MjQgOS40MjEgMCAxOC44NDMtMS4zIDI3LjYxNC0zLjU3My00OC4wODEtOS43NDctODQuMTQzLTUxLjk4LTg0LjE0My0xMDIuOTg1di0xLjI5OWMxMy45NjkgNy43OTcgMzAuMjE0IDEyLjY3IDQ3LjQzMSAxMy4zMTktMjguMjY0LTE4Ljg0My00Ni43ODEtNTEuMDA1LTQ2Ljc4MS04Ny4zOTEgMC0xOS40OTIgNS4xOTctMzcuMzYgMTQuMjk0LTUyLjk1NCA1MS42NTUgNjMuNjc1IDEyOS4zIDEwNS4yNTggMjE2LjM2NSAxMDkuODA3LTEuNjI0LTcuNzk3LTIuNTk5LTE1LjkxOC0yLjU5OS0yNC4wNCAwLTU3LjgyOCA0Ni43ODItMTA0LjkzNCAxMDQuOTM0LTEwNC45MzQgMzAuMjEzIDAgNTcuNTAyIDEyLjY3IDc2LjY3IDMzLjEzNyAyMy43MTUtNC41NDggNDYuNDU2LTEzLjMyIDY2LjU5OS0yNS4zNC03Ljc5OCAyNC4zNjYtMjQuMzY2IDQ0LjgzMy00Ni4xMzIgNTcuODI3IDIxLjExNy0yLjI3MyA0MS41ODQtOC4xMjIgNjAuNDI2LTE2LjI0My0xNC4yOTIgMjAuNzkxLTMyLjE2MSAzOS4zMDgtNTIuNjI4IDU0LjI1M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHlwbzMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc4LjcgNzguNGMwLTI0LjcgNS40LTMyLjQgMTMuOS0zOS40LTY5LjUgOC41LTE0OS4zIDM0LTE3Ni4zIDY2LjQtNS40IDcuNy05LjMgMjAuOC05LjMgMzcuMUM3IDI0NiAxMTMuOCA0ODAgMTkxLjEgNDgwYzM2LjMgMCA5Ny4zLTU5LjUgMTQ2LjctMTM5LTcgMi4zLTExLjYgMi4zLTE4LjUgMi4zLTU3LjIgMC0xNDAuNi0xOTguNS0xNDAuNi0yNjQuOXpNMzAxLjUgMzJjLTMwLjEgMC00MS43IDUuNC00MS43IDM2LjMgMCA2Ni40IDUzLjggMTk4LjUgMTAxLjcgMTk4LjUgMjYuMyAwIDc4LjgtOTkuNyA3OC44LTE4Mi4zIDAtNDAuOS02Ny01Mi41LTEzOC44LTUyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVViZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE0LjEgMzJIMzMuOUMxNS4yIDMyIDAgNDcuMiAwIDY1LjlWNDQ2YzAgMTguOCAxNS4yIDM0IDMzLjkgMzRINDE0YzE4LjcgMCAzMy45LTE1LjIgMzMuOS0zMy45VjY1LjlDNDQ4IDQ3LjIgNDMyLjggMzIgNDE0LjEgMzJ6TTIzNy42IDM5MS4xQzE2MyAzOTguNiA5Ni40IDM0NC4yIDg4LjkgMjY5LjZoOTQuNFYyOTBjMCAzLjcgMyA2LjggNi44IDYuOEgyNThjMy43IDAgNi44LTMgNi44LTYuOHYtNjcuOWMwLTMuNy0zLTYuOC02LjgtNi44aC02Ny45Yy0zLjcgMC02LjggMy02LjggNi44djIwLjRIODguOWM3LTY5LjQgNjUuNC0xMjIuMiAxMzUuMS0xMjIuMiA2OS43IDAgMTI4LjEgNTIuOCAxMzUuMSAxMjIuMiA3LjUgNzQuNS00Ni45IDE0MS4xLTEyMS41IDE0OC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVYnVudHUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptNTIuNyA5M2M4LjgtMTUuMiAyOC4zLTIwLjUgNDMuNS0xMS43IDE1LjMgOC44IDIwLjUgMjguMyAxMS43IDQzLjYtOC44IDE1LjItMjguMyAyMC41LTQzLjUgMTEuNy0xNS4zLTguOS0yMC41LTI4LjQtMTEuNy00My42ek04Ny40IDI4Ny45Yy0xNy42IDAtMzEuOS0xNC4zLTMxLjktMzEuOSAwLTE3LjYgMTQuMy0zMS45IDMxLjktMzEuOSAxNy42IDAgMzEuOSAxNC4zIDMxLjkgMzEuOSAwIDE3LjYtMTQuMyAzMS45LTMxLjkgMzEuOXptMjguMSAzLjFjMjIuMy0xNy45IDIyLjQtNTEuOSAwLTY5LjkgOC42LTMyLjggMjkuMS02MC43IDU2LjUtNzkuMWwyMy43IDM5LjZjLTUxLjUgMzYuMy01MS41IDExMi41IDAgMTQ4LjhMMTcyIDM3MGMtMjcuNC0xOC4zLTQ3LjgtNDYuMy01Ni41LTc5em0yMjguNyAxMzEuN2MtMTUuMyA4LjgtMzQuNyAzLjYtNDMuNS0xMS43LTguOC0xNS4zLTMuNi0zNC44IDExLjctNDMuNiAxNS4yLTguOCAzNC43LTMuNiA0My41IDExLjcgOC44IDE1LjMgMy42IDM0LjgtMTEuNyA0My42em0uMy02OS41Yy0yNi43LTEwLjMtNTYuMSA2LjYtNjAuNSAzNS01LjIgMS40LTQ4LjkgMTQuMy05Ni43LTkuNGwyMi41LTQwLjNjNTcgMjYuNSAxMjMuNC0xMS43IDEyOC45LTc0LjRsNDYuMS43Yy0yLjMgMzQuNS0xNy4zIDY1LjUtNDAuMyA4OC40em0tNS45LTEwNS4zYy01LjQtNjItNzEuMy0xMDEuMi0xMjguOS03NC40bC0yMi41LTQwLjNjNDcuOS0yMy43IDkxLjUtMTAuOCA5Ni43LTkuNCA0LjQgMjguMyAzMy44IDQ1LjMgNjAuNSAzNSAyMy4xIDIyLjkgMzggNTMuOSA0MC4yIDg4LjVsLTQ2IC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVaWtpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDMuOSAxMjh2MjU2TDIxOCA1MTIgMCAzODRWMTY5LjdsODcuNiA0NS4xdjExN2wxMzMuNSA3NS41IDEzNS44LTc1LjV2LTE1MWwtMTAxLjEtNTcuNiA4Ny42LTUzLjFMNDQzLjkgMTI4ek0zMDguNiA0OS4xTDIyMy44IDBsLTg4LjYgNTQuOCA4NiA0Ny4zIDg3LjQtNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVtYnJhY28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU1LjM1IDhDMTE4LjM2IDcuODMgNy4xNCAxMTguNzIgNyAyNTUuNjhjLS4wNyAxMzcgMTExIDI0OC4yIDI0OCAyNDguMjcgMTM2Ljg1IDAgMjQ3LjgyLTExMC43IDI0OC0yNDcuNjdTMzkyLjM0IDguMTcgMjU1LjM1IDh6bTE0NSAyNjZxLTEuMTQgNDAuNjgtMTQgNjV0LTQzLjUxIDM1cS0zMC42MSAxMC43LTg1LjQ1IDEwLjQ3aC00LjZxLTU0Ljc4LjIyLTg1LjQ0LTEwLjQ3dC00My41Mi0zNXEtMTIuODUtMjQuMzYtMTQtNjVhMjI0LjgxIDIyNC44MSAwIDAgMSAwLTMwLjcxIDQxOC4zNyA0MTguMzcgMCAwIDEgMy42LTQzLjg4YzEuODgtMTMuMzkgMy41Ny0yMi41OCA1LjQtMzIgMS00Ljg4IDEuMjgtNi40MiAxLjgyLTguNDVhNS4wOSA1LjA5IDAgMCAxIDQuOS0zLjg5aC42OWwzMiA1YTUuMDcgNS4wNyAwIDAgMSA0LjE2IDUgNSA1IDAgMCAxIDAgLjc3bC0xLjcgOC43OHEtMi40MSAxMy4yNS00Ljg0IDMzLjY4YTM4MC42MiAzODAuNjIgMCAwIDAtMi42NCA0Mi4xNXEtLjI4IDQwLjQzIDguMTMgNTkuODNhNDMuODcgNDMuODcgMCAwIDAgMzEuMzEgMjUuMThBMjQzIDI0MyAwIDAgMCAyNTAgMzQwLjZoMTAuMjVhMjQyLjY0IDI0Mi42NCAwIDAgMCA1Ny4yNy01LjE2IDQzLjg2IDQzLjg2IDAgMCAwIDMxLjE1LTI1LjIzcTguNTMtMTkuNDIgOC4xMy01OS43OGEzODggMzg4IDAgMCAwLTIuNi00Mi4xNXEtMi40OC0yMC4zOC00Ljg5LTMzLjY4bC0xLjY5LTguNzhhNSA1IDAgMCAxIDAtLjc3IDUgNSAwIDAgMSA0LjItNWwzMi01aC44MmE1IDUgMCAwIDEgNC45IDMuODljLjU1IDIuMDUuODEgMy41NyAxLjgzIDguNDUgMS44MiA5LjYyIDMuNTIgMTguNzggNS4zOSAzMmE0MTUuNzEgNDE1LjcxIDAgMCAxIDMuNjEgNDMuODggMjI4LjA2IDIyOC4wNiAwIDAgMS0uMDQgMzAuNzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuY2hhcnRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzEuNzMsMjMyLjgxM0E1LjM4MSw1LjM4MSwwLDAsMCwxNzYuNywyMjkuNSw0OC4wODEsNDguMDgxLDAsMCwxLDE5MS42LDIwNC4yNDRjMS4yNDMtLjgyOCwxLjY1Ny0yLjQ4NCwxLjY1Ny00LjE0MWE0LjIyLDQuMjIsMCwwLDAtMi4wNzEtMy4zMTJMNzQuNDI5LDEyOC40NzMsMTQ4Ljk1OCw4NWE5Ljk0MSw5Ljk0MSwwLDAsMCw0Ljk2OC04LjI4MSw5LjEwOCw5LjEwOCwwLDAsMC00Ljk2OC04LjI4MUwxMjYuNiw1NS42YTkuNzQ4LDkuNzQ4LDAsMCwwLTkuNTIzLDBsLTEwMC4yLDU3Ljk2NmE5Ljk0Myw5Ljk0MywwLDAsMC00Ljk2OSw4LjI4MVYyMzYuOTU0YTkuMTA5LDkuMTA5LDAsMCwwLDQuOTY5LDguMjgxTDM5LjIzNSwyNTguMDdhOC44MjksOC44MjksMCwwLDAsNC45NjgsMS4yNDIsOS40LDkuNCwwLDAsMCw2LjYyNS0yLjQ4NCwxMC44LDEwLjgsMCwwLDAsMi45LTcuMDM5VjE2NC41TDE2OS42NiwyMzIuNEE0LjUsNC41LDAsMCwwLDE3MS43MywyMzIuODEzWk0zMjMuMjcyLDM3Ny43M2ExMi40NzgsMTIuNDc4LDAsMCwwLTQuOTY5LDEuMjQybC03NC41MjgsNDMuMDYyVjI4Ny44ODJjMC0yLjktMi45LTUuOC02LjIxMS00LjU1NWE1My4wMzYsNTMuMDM2LDAsMCwxLTI4Ljk4NC40MTQsNC44Niw0Ljg2LDAsMCwwLTYuMjEsNC41NTVWNDIxLjYxOWwtNzQuNTI5LTQzLjA2MWE4LjgzLDguODMsMCwwLDAtNC45NjktMS4yNDIsOS42MzEsOS42MzEsMCwwLDAtOS41MjMsOS41MjN2MjYuMDg1YTkuMTA3LDkuMTA3LDAsMCwwLDQuOTY5LDguMjgxbDEwMC4yLDU3LjU1M0E4LjgyOSw4LjgyOSwwLDAsMCwyMjMuNDg2LDQ4MGExMS4wMjcsMTEuMDI3LDAsMCwwLDQuOTY5LTEuMjQybDEwMC4yLTU3LjU1M2E5Ljk0MSw5Ljk0MSwwLDAsMCw0Ljk2OC04LjI4MVYzODYuODM5QzMzMi44LDM4Mi4yODUsMzI4LjI0LDM3Ny43MywzMjMuMjcyLDM3Ny43M1pNMjg2LjAwNyw3OGEyMywyMywwLDEsMC0yMy0yM0EyMywyMywwLDAsMCwyODYuMDA3LDc4Wm02My42MjctMTAuMDg2YTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDM0OS42MzQsNjcuOTE0Wk00MTIuODE2LDE1MS42YTIzLDIzLDAsMSwwLTIzLTIzQTIzLDIzLDAsMCwwLDQxMi44MTYsMTUxLjZabS02My4xODItOS4yYTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDM0OS42MzQsMTQyLjRabS02My42MjcsODMuMjQ0YTIzLDIzLDAsMSwwLTIzLTIzQTIzLDIzLDAsMCwwLDI4Ni4wMDcsMjI1LjY0OFptLTYyLjA3NCwzNi4zNThhMjMsMjMsMCwxLDAtMjMtMjNBMjMsMjMsMCwwLDAsMjIzLjkzMywyNjIuMDA2Wm0xODguODgzLTgyLjM1OGEyMywyMywwLDEsMCwyMywyM0EyMywyMywwLDAsMCw0MTIuODE2LDE3OS42NDhabTAsNzIuMjcyYTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDQxMi44MTYsMjUxLjkyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmlyZWdpc3RyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNDgwYzM5LjUgMCA3Ni4yLTExLjggMTA2LjgtMzIuMkg4NS4zQzExNS44IDQ2OC4yIDE1Mi41IDQ4MCAxOTIgNDgwem0tODkuMS0xOTMuMXYtMTIuNEgwdjEyLjRjMCAyLjUgMCA1IC4xIDcuNGgxMDMuMWMtLjItMi40LS4zLTQuOS0uMy03LjR6bTIwLjUgNTdIOC41YzIuNiA4LjUgNS44IDE2LjggOS42IDI0LjhoMTM4LjNjLTEyLjktNS43LTI0LjEtMTQuMi0zMy0yNC44em0tMTcuNy0zNC43SDEuM2MuOSA3LjYgMi4yIDE1IDMuOSAyMi4zaDEwOS43Yy00LTYuOS03LjItMTQuNC05LjItMjIuM3ptLTIuOC02OS4zSDB2MTcuM2gxMDIuOXptMC0xNzMuMkgwdjQuOWgxMDIuOXptMC0zNC43SDB2Mi41aDEwMi45em0wIDY5LjNIMHY3LjRoMTAyLjl6bTAgMTA0SDB2MTQuOGgxMDIuOXptMC02OS4zSDB2OS45aDEwMi45em0wIDM0LjZIMFYxODNoMTAyLjl6bTE2Ni4yIDE2MC45aDEwOS43YzEuOC03LjMgMy4xLTE0LjcgMy45LTIyLjNIMjc4LjNjLTIuMSA3LjktNS4yIDE1LjQtOS4yIDIyLjN6bTEyLTE4NS43SDM4NFYxMzZIMjgxLjF6bTAgMzcuMkgzODR2LTEyLjRIMjgxLjF6bTAtNzQuM0gzODR2LTcuNEgyODEuMXptMC03Ni43djIuNUgzODRWMzJ6bS0yMDMgNDEwLjloMjI3LjdjMTEuOC04LjcgMjIuNy0xOC42IDMyLjItMjkuN0g0NC45YzkuNiAxMSAyMS40IDIxIDMzLjIgMjkuN3ptMjAzLTM3MS4zSDM4NHYtNC45SDI4MS4xem0wIDE0OC41SDM4NHYtMTQuOEgyODEuMXpNMzguOCA0MDUuN2gzMDUuM2M2LjctOC41IDEyLjYtMTcuNiAxNy44LTI3LjJIMjNjNS4yIDkuNiA5LjIgMTguNyAxNS44IDI3LjJ6bTE4OC44LTM3LjFIMzY3YzMuNy04IDUuOC0xNi4yIDguNS0yNC44aC0xMTVjLTguOCAxMC43LTIwLjEgMTkuMi0zMi45IDI0Ljh6bTUzLjUtODEuN2MwIDIuNS0uMSA1LS40IDcuNGgxMDMuMWMuMS0yLjUuMi00LjkuMi03LjR2LTEyLjRIMjgxLjF6bTAtMjkuN0gzODR2LTE3LjNIMjgxLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5OC4xMSwyMDYuNCw0NDUuMzEsMTQuNzIsMjQ4LjIsNjYuMDgsMjE5LDExNi4xNGwtNTkuMi0uNDNMMTUuNTQsMjU2LDE1OS44MiwzOTYuMzJsNTkuMTctLjQzLDI5LjI0LDUwLDE5Ny4wOCw1MS4zNiw1Mi44LTE5MS42Mi0zMC00OS42M1pNMjIzLjc3LDEyNC4yLDM3NC41NSw4Ni41MSwyODgsMjMyLjMzSDExNC44N1ptMCwyNjMuNjNMMTE0Ljg3LDI3OS43MUgyODhsODYuNTUsMTQ1LjgxWm0xOTMsMTRMMzMwLjE3LDI1Nmw4Ni41OC0xNDUuODRMNDU4LjU2LDI1NlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5zcGxhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4LDIzMC4xN1Y0ODBIMFYyMzAuMTdIMTQxLjEzVjM1NS4wOUgzMDYuODdWMjMwLjE3Wk0zMDYuODcsMzJIMTQxLjEzVjE1Ni45MUgzMDYuODdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVudGFwcGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAxLjMgNDkuOWMtNzkuOCAxNjAuMS04NC42IDE1Mi41LTg3LjkgMTczLjJsLTUuMiAzMi44Yy0xLjkgMTItNi42IDIzLjUtMTMuNyAzMy40TDE0NS42IDQ5Ny4xYy03LjYgMTAuNi0yMC40IDE2LjItMzMuNCAxNC42LTQwLjMtNS03Ny44LTMyLjItOTUuMy02OC41LTUuNy0xMS44LTQuNS0yNS44IDMuMS0zNi40bDE0OC45LTIwNy45YzcuMS05LjkgMTYuNC0xOCAyNy4yLTIzLjdsMjkuMy0xNS41YzE4LjUtOS44IDkuNy0xMS45IDEzNS42LTEzOC45IDEtNC44IDEtNy4zIDMuNi04IDMtLjcgNi42LTEgNi4zLTQuNmwtLjQtNC42Yy0uMi0xLjkgMS4zLTMuNiAzLjItMy42IDQuNS0uMSAxMy4yIDEuMiAyNS42IDEwIDEyLjMgOC45IDE2LjQgMTYuOCAxNy43IDIxLjEuNiAxLjgtLjYgMy43LTIuNCA0LjJsLTQuNSAxLjFjLTMuNC45LTIuNSA0LjQtMi4zIDcuNC4xIDIuOC0yLjMgMy42LTYuNSA2LjF6TTIzMC4xIDM2LjRjMy40LjkgMi41IDQuNCAyLjMgNy40LS4yIDIuNyAyLjEgMy41IDYuNCA2IDcuOSAxNS45IDE1LjMgMzAuNSAyMi4yIDQ0IC43IDEuMyAyLjMgMS41IDMuMy41IDExLjItMTIgMjQuNi0yNi4yIDQwLjUtNDIuNiAxLjMtMS40IDEuNC0zLjUuMS00LjktOC04LjItMTYuNS0xNi45LTI1LjYtMjYuMS0xLTQuNy0xLTcuMy0zLjYtOC0zLS44LTYuNi0xLTYuMy00LjYuMy0zLjMgMS40LTguMS0yLjgtOC4yLTQuNS0uMS0xMy4yIDEuMS0yNS42IDEwLTEyLjMgOC45LTE2LjQgMTYuOC0xNy43IDIxLjEtMS40IDQuMiAzLjYgNC42IDYuOCA1LjR6TTYyMCA0MDYuN0w0NzEuMiAxOTguOGMtMTMuMi0xOC41LTI2LjYtMjMuNC01Ni40LTM5LjEtMTEuMi01LjktMTQuMi0xMC45LTMwLjUtMjguOS0xLTEuMS0yLjktLjktMy42LjUtNDYuMyA4OC44LTQ3LjEgODIuOC00OSA5NC44LTEuNyAxMC43LTEuMyAyMCAuMyAyOS44IDEuOSAxMiA2LjYgMjMuNSAxMy43IDMzLjRsMTQ4LjkgMjA3LjljNy42IDEwLjYgMjAuMiAxNi4yIDMzLjEgMTQuNyA0MC4zLTQuOSA3OC0zMiA5NS43LTY4LjYgNS40LTExLjkgNC4zLTI1LjktMy40LTM2LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVwcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDMuMiAzMDNjLTUuMiAzLjYtMzIuNiAxMy4xLTMyLjYtMTlWMTgwSDM3Ljl2MTAyLjZjMCA3NC45IDgwLjIgNTEuMSA5Ny45IDM5VjE4MGgtMzIuNnpNNCA3NC44MnYyMjAuOWMwIDEwMy43IDc0LjkgMTM1LjIgMTg3LjcgMTg0LjEgMTEyLjQtNDguOSAxODcuNy04MC4yIDE4Ny43LTE4NC4xVjc0LjgyYy0xMTYuMy02MS42LTI4MS44LTQ5LjYtMzc1LjQgMHptMzU4LjEgMjIwLjljMCA4Ni42LTUzLjIgMTEzLjYtMTcwLjQgMTY1LjMtMTE3LjUtNTEuOC0xNzAuNS03OC43LTE3MC41LTE2NS4zdi0xMjYuNGMxMDIuMy05My44IDIzMS42LTEwMCAzNDAuOS04OS44em0tMjA5LjYtMTA3LjR2MjEyLjhoMzIuN3YtNjguN2MyNC40IDcuMyA3MS43LTIuNiA3MS43LTc4LjUgMC05Ny40LTgwLjctODAuOTItMTA0LjQtNjUuNnptMzIuNyAxMTcuM3YtMTAwLjNjOC40LTQuMiAzOC40LTEyLjcgMzguNCA0OS4zIDAgNjcuOS0zNi40IDUxLjgtMzguNCA1MXptNzkuMS04Ni40Yy4xIDQ3LjMgNTEuNiA0Mi41IDUyLjIgNzAuNC42IDIzLjUtMzAuNCAyMy01MC44IDQuOXYzMC4xYzM2LjIgMjEuNSA4MS45IDguMSA4My4yLTMzLjUgMS43LTUxLjUtNTQuMS00Ni42LTUzLjQtNzMuMi42LTIwLjMgMzAuNi0yMC41IDQ4LjUtMi4ydi0yOC40Yy0yOC41LTIyLTc5LjktOS4yLTc5LjcgMzEuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MS41IDI1NmMwIDMuMS0xLjcgNi4xLTQuNSA3LjVMNTQ3LjkgMzE3Yy0xLjQuOC0yLjggMS40LTQuNSAxLjQtMS40IDAtMy4xLS4zLTQuNS0xLjEtMi44LTEuNy00LjUtNC41LTQuNS03Ljh2LTM1LjZIMjk1LjdjMjUuMyAzOS42IDQwLjUgMTA2LjkgNjkuNiAxMDYuOUgzOTJWMzU0YzAtNSAzLjktOC45IDguOS04LjlINDkwYzUgMCA4LjkgMy45IDguOSA4Ljl2ODkuMWMwIDUtMy45IDguOS04LjkgOC45aC04OS4xYy01IDAtOC45LTMuOS04LjktOC45di0yNi43aC0yNi43Yy03NS40IDAtODEuMS0xNDIuNS0xMjQuNy0xNDIuNUgxNDAuM2MtOC4xIDMwLjYtMzUuOSA1My41LTY5IDUzLjVDMzIgMzI3LjMgMCAyOTUuMyAwIDI1NnMzMi03MS4zIDcxLjMtNzEuM2MzMy4xIDAgNjEgMjIuOCA2OSA1My41IDM5LjEgMCA0My45IDkuNSA3NC42LTYwLjRDMjU1IDg4LjcgMjczIDk1LjcgMzIzLjggOTUuN2M3LjUtMjAuOSAyNy0zNS42IDUwLjQtMzUuNiAyOS41IDAgNTMuNSAyMy45IDUzLjUgNTMuNXMtMjMuOSA1My41LTUzLjUgNTMuNWMtMjMuNCAwLTQyLjktMTQuOC01MC40LTM1LjZIMjk0Yy0yOS4xIDAtNDQuMyA2Ny40LTY5LjYgMTA2LjloMzEwLjF2LTM1LjZjMC0zLjMgMS43LTYuMSA0LjUtNy44IDIuOC0xLjcgNi40LTEuNCA4LjkuM2w4OS4xIDUzLjVjMi44IDEuMSA0LjUgNC4xIDQuNSA3LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDYwLjMgMjQxLjdjMjUuOC00MS4zIDE1LjItNDguOC0xMS43LTQ4LjhoLTI3Yy0uMSAwLTEuNS0xLjQtMTAuOSA4LTExLjIgNS42LTM3LjkgNi4zLTM3LjkgOC43IDAgNC41IDcwLjMtMy4xIDg4LjEgMCA5LjUgMS41LTEuNSAyMC40LTQuNCAzMi0uNSA0LjUgMi40IDIuMyAzLjguMXptLTExMi4xIDIyLjZjNjQtMjEuMyA5Ny4zLTIzLjkgMTAyLTI2LjIgNC40LTIuOS00LjQtNi42LTI2LjItNS44LTUxLjcgMi4yLTEzNy42IDM3LjEtMTcyLjYgNTMuOWwtMzAuNy05My4zaDE5Ni42Yy0yLjctMjguMi0xNTIuOS0yMi42LTMzNy45LTIyLjZMMjcgNDE1LjhjMTk2LjQtOTcuMyAyNTguOS0xMzAuMyAzMjEuMi0xNTEuNXpNOTQuNyA5NmMyNTMuMyA1My43IDMzMCA2NS43IDMzMi4xIDg1LjIgMzYuNCAwIDQ1LjkgMCA1Mi40IDYuNiAyMS4xIDE5LjctMTQuNiA2Ny43LTE0LjYgNjcuNy00LjQgMi45LTQwNi40IDE2MC4yLTQwNi40IDE2MC4yaDQyMy4xTDU0OSA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNzdW5uYWggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU2LjggMjg1LjFsNS43IDE0LjRoLTguMmMtMS4zLTMuMi0zLjEtNy43LTMuOC05LjUtMi41LTYuMy0xLjEtOC40IDAtMTAgMS45LTIuNyAzLjItNC40IDMuNi01LjIgMCAyLjIuOCA1LjcgMi43IDEwLjN6bTI5Ny4zIDE4LjhjLTIuMSAxMy44LTUuNyAyNy4xLTEwLjUgMzkuN2w0MyAyMy40LTQ0LjgtMTguOGMtNS4zIDEzLjItMTIgMjUuNi0xOS45IDM3LjJsMzQuMiAzMC4yLTM2LjgtMjYuNGMtOC40IDExLjgtMTggMjIuNi0yOC43IDMyLjNsMjQuOSAzNC43LTI4LjEtMzEuOGMtMTEgOS42LTIzLjEgMTgtMzYuMSAyNS4xbDE1LjcgMzcuMi0xOS4zLTM1LjNjLTEzLjEgNi44LTI3IDEyLjEtNDEuNiAxNS45bDYuNyAzOC40LTEwLjUtMzcuNGMtMTQuMyAzLjQtMjkuMiA1LjMtNDQuNSA1LjRMMjU2IDUxMmwtMS45LTM4LjRjLTE1LjMtLjEtMzAuMi0yLTQ0LjUtNS4zTDE5OSA1MDUuNmw2LjctMzguMmMtMTQuNi0zLjctMjguNi05LjEtNDEuNy0xNS44bC0xOS4yIDM1LjEgMTUuNi0zN2MtMTMtNy0yNS4yLTE1LjQtMzYuMi0yNS4xbC0yNy45IDMxLjYgMjQuNy0zNC40Yy0xMC43LTkuNy0yMC40LTIwLjUtMjguOC0zMi4zbC0zNi41IDI2LjIgMzMuOS0yOS45Yy03LjktMTEuNi0xNC42LTI0LjEtMjAtMzcuM2wtNDQuNCAxOC43TDY3LjggMzQ0Yy00LjgtMTIuNy04LjQtMjYuMS0xMC41LTM5LjlsLTUxIDkgNTAuMy0xNC4yYy0xLjEtOC41LTEuNy0xNy4xLTEuNy0yNS45IDAtNC43LjItOS40LjUtMTQuMUwwIDI1Nmw1Ni0yLjhjMS4zLTEzLjEgMy44LTI1LjggNy41LTM4LjFMNi40IDE5OWw1OC45IDEwLjRjNC0xMiA5LjEtMjMuNSAxNS4yLTM0LjRsLTU1LjEtMzAgNTguMyAyNC42QzkwIDE1OSA5Ny4yIDE0OS4yIDEwNS4zIDE0MEw1NS44IDk2LjRsNTMuOSAzOC43YzguMS04LjYgMTctMTYuNSAyNi42LTIzLjZsLTQwLTU1LjYgNDUuNiA1MS42YzkuNS02LjYgMTkuNy0xMi4zIDMwLjMtMTcuMmwtMjcuMy02NC45IDMzLjggNjIuMWMxMC41LTQuNCAyMS40LTcuOSAzMi43LTEwLjRMMTk5IDYuNGwxOS41IDY5LjJjMTEtMi4xIDIyLjMtMy4yIDMzLjgtMy40TDI1NiAwbDMuNiA3Mi4yYzExLjUuMiAyMi44IDEuNCAzMy44IDMuNUwzMTMgNi40bC0xMi40IDcwLjdjMTEuMyAyLjYgMjIuMiA2LjEgMzIuNiAxMC41bDMzLjktNjIuMi0yNy40IDY1LjFjMTAuNiA0LjkgMjAuNyAxMC43IDMwLjIgMTcuMmw0NS44LTUxLjgtNDAuMSA1NS45YzkuNSA3LjEgMTguNCAxNSAyNi41IDIzLjZsNTQuMi0zOC45LTQ5LjcgNDMuOWM4IDkuMSAxNS4yIDE4LjkgMjEuNSAyOS40bDU4LjctMjQuNy01NS41IDMwLjJjNi4xIDEwLjkgMTEuMSAyMi4zIDE1LjEgMzQuM2w1OS4zLTEwLjQtNTcuNSAxNi4yYzMuNyAxMi4yIDYuMiAyNC45IDcuNSAzNy45TDUxMiAyNTZsLTU2IDIuOGMuMyA0LjYuNSA5LjMuNSAxNC4xIDAgOC43LS42IDE3LjMtMS42IDI1LjhsNTAuNyAxNC4zLTUxLjUtOS4xem0tMjEuOC0zMWMwLTk3LjUtNzktMTc2LjUtMTc2LjUtMTc2LjVzLTE3Ni41IDc5LTE3Ni41IDE3Ni41IDc5IDE3Ni41IDE3Ni41IDE3Ni41IDE3Ni41LTc5IDE3Ni41LTE3Ni41em0tMjQgMGMwIDg0LjMtNjguMyAxNTIuNi0xNTIuNiAxNTIuNnMtMTUyLjYtNjguMy0xNTIuNi0xNTIuNiA2OC4zLTE1Mi42IDE1Mi42LTE1Mi42IDE1Mi42IDY4LjMgMTUyLjYgMTUyLjZ6TTE5NSAyNDFjMCAyLjEgMS4zIDMuOCAzLjYgNS4xIDMuMyAxLjkgNi4yIDQuNiA4LjIgOC4yIDIuOC01LjcgNC4zLTkuNSA0LjMtMTEuMiAwLTIuMi0xLjEtNC40LTMuMi03LTIuMS0yLjUtMy4yLTUuMi0zLjMtNy43LTYuNSA2LjgtOS42IDEwLjktOS42IDEyLjZ6bS00MC43LTE5YzAgMi4xIDEuMyAzLjggMy42IDUuMSAzLjUgMS45IDYuMiA0LjYgOC4yIDguMiAyLjgtNS43IDQuMy05LjUgNC4zLTExLjIgMC0yLjItMS4xLTQuNC0zLjItNy0yLjEtMi41LTMuMi01LjItMy4zLTcuNy02LjUgNi44LTkuNiAxMC45LTkuNiAxMi42em0tMTkgMGMwIDIuMSAxLjMgMy44IDMuNiA1LjEgMy4zIDEuOSA2LjIgNC42IDguMiA4LjIgMi44LTUuNyA0LjMtOS41IDQuMy0xMS4yIDAtMi4yLTEuMS00LjQtMy4yLTctMi4xLTIuNS0zLjItNS4yLTMuMy03LjctNi40IDYuOC05LjYgMTAuOS05LjYgMTIuNnptMjA0LjkgODcuOWMtOC40LTMtOC43LTYuOC04LjctMTUuNlYxODJjLTguMiAxMi41LTE0LjIgMTguNi0xOCAxOC42IDYuMyAxNC40IDkuNSAyMy45IDkuNSAyOC4zdjY0LjNjMCAyLjItMi4yIDYuNS00LjcgNi41aC0xOGMtMi44LTcuNS0xMC4yLTI2LjktMTUuMy00MC4zLTIgMi41LTcuMiA5LjItMTAuNyAxMy43IDIuNCAxLjYgNC4xIDMuNiA1LjIgNi4zIDIuNiA2LjcgNi40IDE2LjUgNy45IDIwLjJoLTkuMmMtMy45LTEwLjQtOS42LTI1LjQtMTEuOC0zMS4xLTIgMi41LTcuMiA5LjItMTAuNyAxMy43IDIuNCAxLjYgNC4xIDMuNiA1LjIgNi4zLjggMiAyLjggNy4zIDQuMyAxMC45SDI1NmMtMS41LTQuMS01LjYtMTQuNi04LjQtMjItMiAyLjUtNy4yIDkuMi0xMC43IDEzLjcgMi41IDEuNiA0LjMgMy42IDUuMiA2LjMuMi42LjUgMS40LjYgMS43SDIyNWMtNC42LTEzLjktMTEuNC0yNy43LTExLjQtMzQuMSAwLTIuMi4zLTUuMSAxLjEtOC4yLTguOCAxMC44LTE0IDE1LjktMTQgMjUgMCA3LjUgMTAuNCAyOC4zIDEwLjQgMzMuMyAwIDEuNy0uNSAzLjMtMS40IDQuOS05LjYtMTIuNy0xNS41LTIwLjctMTguOC0yMC43aC0xMmwtMTEuMi0yOGMtMy44LTkuNi01LjctMTYtNS43LTE4LjggMC0zLjguNS03LjcgMS43LTEyLjItMSAxLjMtMy43IDQuNy01LjUgNy4xLS44LTIuMS0zLjEtNy43LTQuNi0xMS41LTIuMSAyLjUtNy41IDkuMS0xMS4yIDEzLjYuOSAyLjMgMy4zIDguMSA0LjkgMTIuMi0yLjUgMy4zLTkuMSAxMS44LTEzLjYgMTcuNy00IDUuMy01LjggMTMuMy0yLjcgMjEuOCAyLjUgNi43IDIgNy45LTEuNyAxNC4xSDE5MWM1LjUgMCAxNC4zIDE0IDE1LjUgMjIgMTMuMi0xNiAxNS40LTE5LjYgMTYuOC0yMS42aDEwN2MzLjkgMCA3LjItMS45IDkuOS01Ljh6bTIwLjEtMjYuNlYxODEuN2MtOSAxMi41LTE1LjkgMTguNi0yMC43IDE4LjYgNy4xIDE0LjQgMTAuNyAyMy45IDEwLjcgMjguM3Y2Ni4zYzAgMTcuNSA4LjYgMjAuNCAyNCAyMC40IDguMSAwIDEyLjUtLjggMTMuNy0yLjctNC4zLTEuNi03LjYtMi41LTkuOS0zLjMtOC4xLTMuMi0xNy44LTcuNC0xNy44LTI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWYWFkaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0LjUgMTQwLjdjMS41LTE3LjYgNC45LTUyLjcgNDkuOC01Mi43aDk4LjZjMjAuNyAwIDMyLjEtNy44IDMyLjEtMjEuNlY1NC4xYzAtMTIuMiA5LjMtMjIuMSAyMS41LTIyLjFTNDQ4IDQxLjkgNDQ4IDU0LjF2MzYuNWMwIDQyLjktMjEuNSA2Mi02Ni44IDYySDI4MC43Yy0zMC4xIDAtMzMgMTQuNy0zMyAyNy4xIDAgMS4zLS4xIDIuNS0uMiAzLjctLjcgMTIuMy0xMC45IDIyLjItMjMuNCAyMi4ycy0yMi43LTkuOC0yMy40LTIyLjJjLS4xLTEuMi0uMi0yLjQtLjItMy43IDAtMTIuMy0zLTI3LjEtMzMtMjcuMUg2Ni44Yy00NS4zIDAtNjYuOC0xOS4xLTY2LjgtNjJWNTQuMUMwIDQxLjkgOS40IDMyIDIxLjYgMzJzMjEuNSA5LjkgMjEuNSAyMi4xdjEyLjNDNDMuMSA4MC4yIDU0LjUgODggNzUuMiA4OGg5OC42YzQ0LjggMCA0OC4zIDM1LjEgNDkuOCA1Mi43aC45ek0yMjQgNDU2YzExLjUgMCAyMS40LTcgMjUuNy0xNi4zIDEuMS0xLjggOTcuMS0xNjkuNiA5OC4yLTE3MS40IDExLjktMTkuNi0zLjItNDQuMy0yNy4yLTQ0LjMtMTMuOSAwLTIzLjMgNi40LTI5LjggMjAuM0wyMjQgMzYybC02Ni45LTExNy43Yy02LjQtMTMuOS0xNS45LTIwLjMtMjkuOC0yMC4zLTI0IDAtMzkuMSAyNC42LTI3LjIgNDQuMyAxLjEgMS45IDk3LjEgMTY5LjYgOTguMiAxNzEuNCA0LjMgOS4zIDE0LjIgMTYuMyAyNS43IDE2LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpYWNvaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMyaC02NGwtODAuNyAxOTJoLTk0LjVMNjQgMzJIMGw0OCAxMTJIMHY0OGg2OC41bDEzLjggMzJIMHY0OGgxMDIuOEwxOTIgNDgwbDg5LjItMjA4SDM4NHYtNDhoLTgyLjNsMTMuOC0zMkgzODR2LTQ4aC00OGw0OC0xMTJ6TTE5MiAzMzZsLTI3LTY0aDU0bC0yNyA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlhZGVvU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTI4MC43IDM4MS4yYy00Mi40IDQ2LjItMTIwIDQ2LjYtMTYyLjQgMC02OC03My42LTE5LjgtMTk2LjEgODEuMi0xOTYuMSAxMy4zIDAgMjYuNiAyLjEgMzkuMSA2LjctNC4zIDguNC03LjMgMTcuNi04LjQgMjcuMS05LjctNC4xLTIwLjItNi0zMC43LTYtNDguOCAwLTg0LjYgNDEuNy04NC42IDg4LjkgMCA0MyAyOC41IDc4LjcgNjkuNSA4NS45IDYxLjUtMjQgNzIuOS0xMTcuNiA3Mi45LTE3NSAwLTcuMyAwLTE0LjgtLjYtMjIuMS0xMS4yLTMyLjktMjYuNi02NC42LTQ0LjItOTQuNSAyNy4xIDE4LjMgNDEuOSA2Mi41IDQ0LjIgOTQuMXYuNGM3LjcgMjIuNSAxMS44IDQ2LjIgMTEuOCA3MCAwIDU0LjEtMjEuOSA5OS02OC4zIDEyOC4ybC0yLjQuMmM1MCAxIDg2LjItMzguNiA4Ni4yLTg3LjIgMC0xMi4yLTIuMS0yNC4zLTYuOS0zNS43IDkuNS0xLjkgMTguNS01LjYgMjYuNC0xMC41IDE1LjMgMzYuNiAxMi42IDg3LjMtMjIuOCAxMjUuNnpNMzA5IDIzMy43Yy0xMy4zIDAtMjUuMS03LjEtMzQuNC0xNi4xIDIxLjktMTIgNDkuNi0zMC43IDYyLjMtNTMgMS41LTMgNC4xLTguNiA0LjUtMTItMTIuNSAyNy45LTQ0LjIgNDkuOC03My45IDU2LjctNC43LTcuMy03LjUtMTUuNS03LjUtMjQuMyAwLTEwLjMgNS4yLTI0LjEgMTIuOS0zMS42IDIxLjYtMjAuNSA1My04LjUgNzIuNC01MCAzMi41IDQ2LjIgMTMuMSAxMzAuMy0zNi4zIDEzMC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWFkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc2LjIgMTUwLjV2LjdDMjU4LjMgOTguNiAyMzMuNiA0Ny44IDIwNS40IDBjNDMuMyAyOS4yIDY3IDEwMCA3MC44IDE1MC41em0zMi43IDEyMS43YzcuNiAxOC4yIDExIDM3LjUgMTEgNTcgMCA3Ny43LTU3LjggMTQxLTEzNy44IDEzOS40bDMuOC0uM2M3NC4yLTQ2LjcgMTA5LjMtMTE4LjYgMTA5LjMtMjA1LjEgMC0zOC4xLTYuNS03NS45LTE4LjktMTEyIDEgMTEuNyAxIDIzLjcgMSAzNS40IDAgOTEuOC0xOC4xIDI0MS42LTExNi42IDI4MEM5NSA0NTUuMiA0OS40IDM5OCA0OS40IDMyOS4yYzAtNzUuNiA1Ny40LTE0Mi4zIDEzNS40LTE0Mi4zIDE2LjggMCAzMy43IDMuMSA0OS4xIDkuNiAxLjctMTUuMSA2LjUtMjkuOSAxMy40LTQzLjMtMTkuOS03LjItNDEuMi0xMC43LTYyLjUtMTAuNy0xNjEuNSAwLTIzOC43IDE5NS45LTEyOS45IDMxMy43IDY3LjkgNzQuNiAxOTIgNzMuOSAyNTkuOCAwIDU2LjYtNjEuMyA2MC45LTE0Mi40IDM2LjQtMjAxLTEyLjcgOC0yNy4xIDEzLjktNDIuMiAxN3pNNDE4LjEgMTEuN2MtMzEgNjYuNS04MS4zIDQ3LjItMTE1LjggODAuMS0xMi40IDEyLTIwLjYgMzQtMjAuNiA1MC41IDAgMTQuMSA0LjUgMjcuMSAxMiAzOC44IDQ3LjQtMTEgOTguMy00NiAxMTguMi05MC43LS43IDUuNS00LjggMTQuNC03LjIgMTkuMi0yMC4zIDM1LjctNjQuNiA2NS42LTk5LjcgODQuOSAxNC44IDE0LjQgMzMuNyAyNS44IDU1IDI1LjggNzkgMCAxMTAuMS0xMzQuNiA1OC4xLTIwOC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWJlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDQgNDkuOUM0MzEuMyAzOC4yIDM3OS45LjkgMjY1LjMuNGMwIDAtMTM1LjEtOC4xLTIwMC45IDUyLjNDMjcuOCA4OS4zIDE0LjkgMTQzIDEzLjUgMjA5LjVjLTEuNCA2Ni41LTMuMSAxOTEuMSAxMTcgMjI0LjloLjFsLS4xIDUxLjZzLS44IDIwLjkgMTMgMjUuMWMxNi42IDUuMiAyNi40LTEwLjcgNDIuMy0yNy44IDguNy05LjQgMjAuNy0yMy4yIDI5LjgtMzMuNyA4Mi4yIDYuOSAxNDUuMy04LjkgMTUyLjUtMTEuMiAxNi42LTUuNCAxMTAuNS0xNy40IDEyNS43LTE0MiAxNS44LTEyOC42LTcuNi0yMDkuOC00OS44LTI0Ni41ek00NTcuOSAyODdjLTEyLjkgMTA0LTg5IDExMC42LTEwMyAxMTUuMS02IDEuOS02MS41IDE1LjctMTMxLjIgMTEuMiAwIDAtNTIgNjIuNy02OC4yIDc5LTUuMyA1LjMtMTEuMSA0LjgtMTEtNS43IDAtNi45LjQtODUuNy40LTg1LjctLjEgMC0uMSAwIDAgMC0xMDEuOC0yOC4yLTk1LjgtMTM0LjMtOTQuNy0xODkuOCAxLjEtNTUuNSAxMS42LTEwMSA0Mi42LTEzMS42IDU1LjctNTAuNSAxNzAuNC00MyAxNzAuNC00MyA5Ni45LjQgMTQzLjMgMjkuNiAxNTQuMSAzOS40IDM1LjcgMzAuNiA1My45IDEwMy44IDQwLjYgMjExLjF6bS0xMzktODAuOGMuNCA4LjYtMTIuNSA5LjItMTIuOS42LTEuMS0yMi0xMS40LTMyLjctMzIuNi0zMy45LTguNi0uNS03LjgtMTMuNC43LTEyLjkgMjcuOSAxLjUgNDMuNCAxNy41IDQ0LjggNDYuMnptMjAuMyAxMS4zYzEtNDIuNC0yNS41LTc1LjYtNzUuOC03OS4zLTguNS0uNi03LjYtMTMuNS45LTEyLjkgNTggNC4yIDg4LjkgNDQuMSA4Ny44IDkyLjUtLjEgOC42LTEzLjEgOC4yLTEyLjktLjN6bTQ3IDEzLjRjLjEgOC42LTEyLjkgOC43LTEyLjkuMS0uNi04MS41LTU0LjktMTI1LjktMTIwLjgtMTI2LjQtOC41LS4xLTguNS0xMi45IDAtMTIuOSA3My43LjUgMTMzIDUxLjQgMTMzLjcgMTM5LjJ6TTM3NC45IDMyOXYuMmMtMTAuOCAxOS0zMSA0MC01MS44IDMzLjNsLS4yLS4zYy0yMS4xLTUuOS03MC44LTMxLjUtMTAyLjItNTYuNS0xNi4yLTEyLjgtMzEtMjcuOS00Mi40LTQyLjQtMTAuMy0xMi45LTIwLjctMjguMi0zMC44LTQ2LjYtMjEuMy0zOC41LTI2LTU1LjctMjYtNTUuNy02LjctMjAuOCAxNC4yLTQxIDMzLjMtNTEuOGguMmM5LjItNC44IDE4LTMuMiAyMy45IDMuOSAwIDAgMTIuNCAxNC44IDE3LjcgMjIuMSA1IDYuOCAxMS43IDE3LjcgMTUuMiAyMy44IDYuMSAxMC45IDIuMyAyMi0zLjcgMjYuNmwtMTIgOS42Yy02LjEgNC45LTUuMyAxNC01LjMgMTRzMTcuOCA2Ny4zIDg0LjMgODQuM2MwIDAgOS4xLjggMTQtNS4zbDkuNi0xMmM0LjYtNiAxNS43LTkuOCAyNi42LTMuNyAxNC43IDguMyAzMy40IDIxLjIgNDUuOCAzMi45IDcgNS43IDguNiAxNC40IDMuOCAyMy42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaW1lb1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMTYuMiAxNDkuNmMtMS40IDMxLjEtMjMuMiA3My44LTY1LjMgMTI3LjktNDMuNSA1Ni41LTgwLjMgODQuOC0xMTAuNCA4NC44LTE4LjcgMC0zNC40LTE3LjItNDcuMy01MS42LTI1LjItOTIuMy0zNS45LTE0Ni40LTU2LjctMTQ2LjQtMi40IDAtMTAuOCA1LTI1LjEgMTUuMUw2NCAxOTJjMzYuOS0zMi40IDcyLjEtNjguNCA5NC4xLTcwLjQgMjQuOS0yLjQgNDAuMiAxNC42IDQ2IDUxLjEgMjAuNSAxMjkuNiAyOS42IDE0OS4yIDY2LjggOTAuNSAxMy40LTIxLjIgMjAuNi0zNy4yIDIxLjUtNDguMyAzLjQtMzIuOC0yNS42LTMwLjYtNDUuMi0yMi4yIDE1LjctNTEuNSA0NS44LTc2LjUgOTAuMS03NS4xIDMyLjkgMSA0OC40IDIyLjQgNDYuNSA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmltZW9WIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ny44IDE1My42Yy0yIDQzLjYtMzIuNCAxMDMuMy05MS40IDE3OS4xLTYwLjkgNzkuMi0xMTIuNCAxMTguOC0xNTQuNiAxMTguOC0yNi4xIDAtNDguMi0yNC4xLTY2LjMtNzIuM0MxMDAuMyAyNTAgODUuMyAxNzQuMyA1Ni4yIDE3NC4zYy0zLjQgMC0xNS4xIDcuMS0zNS4yIDIxLjFMMCAxNjguMmM1MS42LTQ1LjMgMTAwLjktOTUuNyAxMzEuOC05OC41IDM0LjktMy40IDU2LjMgMjAuNSA2NC40IDcxLjUgMjguNyAxODEuNSA0MS40IDIwOC45IDkzLjYgMTI2LjcgMTguNy0yOS42IDI4LjgtNTIuMSAzMC4yLTY3LjYgNC44LTQ1LjktMzUuOC00Mi44LTYzLjMtMzEgMjItNzIuMSA2NC4xLTEwNy4xIDEyNi4yLTEwNS4xIDQ1LjggMS4yIDY3LjUgMzEuMSA2NC45IDg5LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpbWVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMy4yIDMySDQ0LjhDMjAuMSAzMiAwIDUyLjEgMCA3Ni44djM1OC40QzAgNDU5LjkgMjAuMSA0ODAgNDQuOCA0ODBoMzU4LjRjMjQuNyAwIDQ0LjgtMjAuMSA0NC44LTQ0LjhWNzYuOGMwLTI0LjctMjAuMS00NC44LTQ0LjgtNDQuOHpNMzc3IDE4MC44Yy0xLjQgMzEuNS0yMy40IDc0LjctNjYgMTI5LjQtNDQgNTcuMi04MS4zIDg1LjgtMTExLjcgODUuOC0xOC45IDAtMzQuOC0xNy40LTQ3LjktNTIuMy0yNS41LTkzLjMtMzYuNC0xNDgtNTcuNC0xNDgtMi40IDAtMTAuOSA1LjEtMjUuNCAxNS4ybC0xNS4yLTE5LjZjMzcuMy0zMi44IDcyLjktNjkuMiA5NS4yLTcxLjIgMjUuMi0yLjQgNDAuNyAxNC44IDQ2LjUgNTEuNyAyMC43IDEzMS4yIDI5LjkgMTUxIDY3LjYgOTEuNiAxMy41LTIxLjQgMjAuOC0zNy43IDIxLjgtNDguOSAzLjUtMzMuMi0yNS45LTMwLjktNDUuOC0yMi40IDE1LjktNTIuMSA0Ni4zLTc3LjQgOTEuMi03NiAzMy4zLjkgNDkgMjIuNSA0Ny4xIDY0Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDI1NC43djUyLjFjLTE4LjQgNC4yLTM2LjkgNi4xLTUyLjEgNi4xLTM2LjkgNzcuNC0xMDMgMTQzLjgtMTI1LjEgMTU2LjItMTQgNy45LTI3LjEgOC40LTQyLjctLjhDMTM3IDQ1MiAzNC4yIDM2Ny43IDAgMTAyLjdoNzQuNUM5My4yIDI2MS44IDEzOSAzNDMuNCAxODkuMyA0MDQuNWMyNy45LTI3LjkgNTQuOC02NS4xIDc1LjYtMTA2LjktNDkuOC0yNS4zLTgwLjEtODAuOS04MC4xLTE0NS42IDAtNjUuNiAzNy43LTExNS4xIDEwMi4yLTExNS4xIDExNC45IDAgMTA2LjIgMTI3LjkgODEuNiAxODEuNSAwIDAtNDYuNCA5LjItNjMuNS0yMC41IDMuNC0xMS4zIDguMi0zMC44IDguMi00OC41IDAtMzEuMy0xMS4zLTQ2LjYtMjguNC00Ni42LTE4LjIgMC0zMC44IDE3LjEtMzAuOCA1MCAuMSA3OS4yIDU5LjQgMTE4LjcgMTI5LjkgMTAxLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NSAxMTcuN2MzLjctMTIuNSAwLTIxLjctMTcuOC0yMS43aC01OC45Yy0xNSAwLTIxLjkgNy45LTI1LjYgMTYuNyAwIDAtMzAgNzMuMS03Mi40IDEyMC41LTEzLjcgMTMuNy0yMCAxOC4xLTI3LjUgMTguMS0zLjcgMC05LjQtNC40LTkuNC0xNi45VjExNy43YzAtMTUtNC4yLTIxLjctMTYuNi0yMS43aC05Mi42Yy05LjQgMC0xNSA3LTE1IDEzLjUgMCAxNC4yIDIxLjIgMTcuNSAyMy40IDU3LjV2ODYuOGMwIDE5LTMuNCAyMi41LTEwLjkgMjIuNS0yMCAwLTY4LjYtNzMuNC05Ny40LTE1Ny40LTUuOC0xNi4zLTExLjUtMjIuOS0yNi42LTIyLjlIMzguOGMtMTYuOCAwLTIwLjIgNy45LTIwLjIgMTYuNyAwIDE1LjYgMjAgOTMuMSA5My4xIDE5NS41QzE2MC40IDM3OC4xIDIyOSA0MTYgMjkxLjQgNDE2YzM3LjUgMCA0Mi4xLTguNCA0Mi4xLTIyLjkgMC02Ni44LTMuNC03My4xIDE1LjQtNzMuMSA4LjcgMCAyMy43IDQuNCA1OC43IDM4LjEgNDAgNDAgNDYuNiA1Ny45IDY5IDU3LjloNTguOWMxNi44IDAgMjUuMy04LjQgMjAuNC0yNS0xMS4yLTM0LjktODYuOS0xMDYuNy05MC4zLTExMS41LTguNy0xMS4yLTYuMi0xNi4yIDAtMjYuMi4xLS4xIDcyLTEwMS4zIDc5LjQtMTM1LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZudiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDQuOSAzNTJjLTM0LjEgMC00Ni40LTMwLjQtNDYuNC0zMC40TDIuNiAyMTAuMVMtNy44IDE5MiAxMyAxOTJoMzIuOGMxMC40IDAgMTMuMiA4LjcgMTguOCAxOC4xbDM2LjcgNzQuNXM1LjIgMTMuMSAyMS4xIDEzLjEgMjEuMS0xMy4xIDIxLjEtMTMuMWwzNi43LTc0LjVjNS42LTkuNSA4LjQtMTguMSAxOC44LTE4LjFoMzIuOGMyMC44IDAgMTAuNCAxOC4xIDEwLjQgMTguMWwtNTUuOCAxMTEuNVMxNzQuMiAzNTIgMTQwIDM1MmgtMzUuMXptMzk1IDBjLTM0LjEgMC00Ni40LTMwLjQtNDYuNC0zMC40bC01NS45LTExMS41UzM4Ny4yIDE5MiA0MDggMTkyaDMyLjhjMTAuNCAwIDEzLjIgOC43IDE4LjggMTguMWwzNi43IDc0LjVzNS4yIDEzLjEgMjEuMSAxMy4xIDIxLjEtMTMuMSAyMS4xLTEzLjFsMzYuOC03NC41YzUuNi05LjUgOC40LTE4LjEgMTguOC0xOC4xSDYyN2MyMC44IDAgMTAuNCAxOC4xIDEwLjQgMTguMWwtNTUuOSAxMTEuNVM1NjkuMyAzNTIgNTM1LjEgMzUyaC0zNS4yek0zMzcuNiAxOTJjMzQuMSAwIDQ2LjQgMzAuNCA0Ni40IDMwLjRsNTUuOSAxMTEuNXMxMC40IDE4LjEtMTAuNCAxOC4xaC0zMi44Yy0xMC40IDAtMTMuMi04LjctMTguOC0xOC4xbC0zNi43LTc0LjVzLTUuMi0xMy4xLTIxLjEtMTMuMWMtMTUuOSAwLTIxLjEgMTMuMS0yMS4xIDEzLjFsLTM2LjcgNzQuNWMtNS42IDkuNC04LjQgMTguMS0xOC44IDE4LjFoLTMyLjljLTIwLjggMC0xMC40LTE4LjEtMTAuNC0xOC4xbDU1LjktMTExLjVzMTIuMi0zMC40IDQ2LjQtMzAuNGgzNS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWdWVqcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTYuOSA2NC4zSDI4MGwtNTYgODguNi00OC04OC42SDBMMjI0IDQ0OCA0NDggNjQuM2gtOTEuMXptLTMwMS4yIDMyaDUzLjhMMjI0IDI5NC41IDMzOC40IDk2LjNoNTMuOEwyMjQgMzg0LjUgNTUuNyA5Ni4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYXRjaG1hbk1vbml0b3JpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2LDE2QzEyMy40NTIsMTYsMTYsMTIzLjQ1MiwxNiwyNTZTMTIzLjQ1Miw0OTYsMjU2LDQ5Niw0OTYsMzg4LjU0OCw0OTYsMjU2LDM4OC41NDgsMTYsMjU2LDE2Wk0xMjEuNjksNDI5LjEyMkM3MC4wNTYsMzg4Ljk3MiwzNi43NDEsMzI2LjMyMiwzNi43NDEsMjU2YTIxOC41MTksMjE4LjUxOSwwLDAsMSw5LjU4Ny02NC4xMjJsMTAyLjktMTcuODk1LS4xMjEsMTAuOTY3LTEzLjk0MywyLjAxM3MtLjE0NCwxMi41LS4xNDQsMTkuNTQ5YTEyLjc3OCwxMi43NzgsMCwwLDAsNC44ODcsMTAuMzQ5bDkuNDY4LDcuNFptMTA1LjY5Mi0yODMuMjcsOC40OC03LjYxOHM2LjkzNC01LjM4LS4xNDMtOS4zNDRjLTcuMTg4LTQuMDI0LTM5LjUzLTM0LjUtMzkuNTMtMzQuNS01LjM0OC01LjQ3Ny04LjI1Ny03LjM0Ny0xNS40NiwwLDAsMC0zMi4zNDIsMzAuNDc0LTM5LjUyOSwzNC41LTcuMDc4LDMuOTY0LS4xNDQsOS4zNDQtLjE0NCw5LjM0NGw4LjQ4MSw3LjYxOC0uMDQ4LDQuMzY5TDc1Ljk4MiwxMzEuMDQ1YzM5LjY0NC01Ni45MzgsMTA1LjUzMi05NC4zLDE4MC4wMTgtOTQuM0EyMTguNzU0LDIxOC43NTQsMCwwLDEsNDIwLjkzNCwxMTEuNzdsLTE5My41MTIsMzcuN1ptMzQuMDYzLDMyOS4yNjktMzMuOS0yNTAuODU3LDkuNDY3LTcuNGExMi43NzgsMTIuNzc4LDAsMCwwLDQuODg4LTEwLjM0OWMwLTcuMDQ0LS4xNDQtMTkuNTQ5LS4xNDQtMTkuNTQ5bC0xMy45NDMtMi4wMTMtLjExNi0xMC40NzQsMjQxLjcxMSwzMS4zOTFBMjE4Ljg3MiwyMTguODcyLDAsMCwxLDQ3NS4yNTksMjU2QzQ3NS4yNTksMzc1LjA3NCwzNzkuODMxLDQ3Mi4yMTIsMjYxLjQ0NSw0NzUuMTIxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi4xNyAyMDEuNjdDNTE2LjY5IDI4Ny41MyA0NzEuMjMgMzY5LjU5IDM4OSA0MDkuOGMxMyAzNC4xLTEyLjQgNzAuMi00OC4zMiA3MC4yYTUxLjY4IDUxLjY4IDAgMCAxLTUxLjU3LTQ5Yy02LjQ0LjE5LTY0LjIgMC03Ni4zMy0uNjRBNTEuNjkgNTEuNjkgMCAwIDEgMTU5IDQ3OS45MmMtMzMuODYtMS4zNi01Ny45NS0zNC44NC00Ny02Ny45Mi0zNy4yMS0xMy4xMS03Mi41NC0zNC44Ny05OS42Mi03MC44LTEzLTE3LjI4LS40OC00MS44IDIwLjg0LTQxLjggNDYuMzEgMCAzMi4yMi01NC4xNyA0My4xNS0xMTAuMjZDOTQuOCA5NS4yIDE5My4xMiAzMiAyODguMDkgMzJjMTAyLjQ4IDAgMTk3LjE1IDcwLjY3IDIxNC4wOCAxNjkuNjd6TTM3My41MSAzODguMjhjNDItMTkuMTggODEuMzMtNTYuNzEgOTYuMjktMTAyLjE0IDQwLjQ4LTEyMy4wOS02NC4xNS0yMjgtMTgxLjcxLTIyOC04My40NSAwLTE3MC4zMiA1NS40Mi0xODYuMDcgMTM2LTkuNTMgNDguOTEgNSAxMzEuMzUtNjguNzUgMTMxLjM1QzU4LjIxIDM1OC42IDkxLjYgMzc4LjExIDEyNyAzODkuNTRjMjQuNjYtMjEuOCA2My44Ny0xNS40NyA3OS44MyAxNC4zNCAxNC4yMiAxIDc5LjE5IDEuMTggODcuOS44MmE1MS42OSA1MS42OSAwIDAgMSA3OC43OC0xNi40MnpNMjA1LjEyIDE4Ny4xM2MwLTM0Ljc0IDUwLjg0LTM0Ljc1IDUwLjg0IDBzLTUwLjg0IDM0Ljc0LTUwLjg0IDB6bTExNi41NyAwYzAtMzQuNzQgNTAuODYtMzQuNzUgNTAuODYgMHMtNTAuODYgMzQuNzUtNTAuODYgMHptLTEyMi42MSA3MC42OWMtMy40NC0xNi45NCAyMi4xOC0yMi4xOCAyNS42Mi01LjIxbC4wNi4yOGM0LjE0IDIxLjQyIDI5Ljg1IDQ0IDY0LjEyIDQzLjA3IDM1LjY4LS45NCA1OS4yNS0yMi4yMSA2NC4xMS00Mi43NyA0LjQ2LTE2LjA1IDI4LjYtMTAuMzYgMjUuNDcgNi01LjIzIDIyLjE4LTMxLjIxIDYyLTkxLjQ2IDYyLjktNDIuNTUgMC04MC44OC0yNy44NC04Ny45LTY0LjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWVibHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI1LjA5IDY1LjgzYy0zOS44OCAwLTczLjI4IDI1LjczLTgzLjY2IDY0LjMzLTE4LjE2LTU4LjA2LTY1LjUtNjQuMzMtODQuOTUtNjQuMzMtMTkuNzggMC02Ni44IDYuMjgtODUuMjggNjQuMzMtMTAuMzgtMzguNi00My40NS02NC4zMy04My42Ni02NC4zM0MzOC41OSA2NS44MyAwIDk5LjcyIDAgMTQzLjAzYzAgMjguOTYgNC4xOCAzMy4yNyA3Ny4xNyAyMzMuNDggMjIuMzcgNjAuNTcgNjcuNzcgNjkuMzUgOTIuNzQgNjkuMzUgMzkuMjMgMCA3MC4wNC0xOS40NiA4NS45My01My45OCAxNS44OSAzNC44MyA0Ni42OSA1NC4yOSA4NS45MyA1NC4yOSAyNC45NyAwIDcwLjM2LTkuMSA5Mi43NC02OS42NyA3Ni41NS0yMDguNjUgNzcuNS0yMDUuNTggNzcuNS0yMjcuMi42My00OC4zMi0zNi4wMS04My40Ny04Ni45Mi04My40N3ptMjYuMzQgMTE0LjgxbC02NS41NyAxNzYuNDRjLTcuOTIgMjEuNDktMjEuMjIgMzcuMjItNDYuMjQgMzcuMjItMjMuNDQgMC0zNy4zOC0xMi40MS00NC4wMy0zMy45bC0zOS4yOC0xMTcuNDJoLS45NUwyMTYuMDggMzYwLjRjLTYuOTYgMjEuNS0yMC45IDMzLjYtNDQuMDIgMzMuNi0yNS4wMiAwLTM4LjMzLTE1Ljc0LTQ2LjI0LTM3LjIyTDYwLjg4IDE4MS41NWMtNS4zOC0xNC44My03LjkyLTIzLjkxLTcuOTItMzQuNSAwLTE2LjM0IDE1Ljg0LTI5LjM2IDM4LjMzLTI5LjM2IDE4LjY5IDAgMzEuOTkgMTEuOCAzNi4xMSAyOS4wNWw0NC4wMyAxMzkuODJoLjk1bDQ0LjY2LTEzNi43OWM2LjAyLTE5LjY3IDE2LjQ3LTMyLjA4IDM4Ljk2LTMyLjA4czMyLjk0IDEyLjExIDM4Ljk2IDMyLjA4bDQ0LjY2IDEzNi43OWguOTVsNDQuMDMtMTM5LjgyYzQuMTItMTcuMjUgMTcuNDItMjkuMDUgMzYuMTEtMjkuMDUgMjIuMTcgMCAzOC4zMyAxMy4zMiAzOC4zMyAzNS43MS0uMzIgNy44Ny00LjEyIDE2LjA0LTcuNjEgMjcuMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdlaWJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNyAxNzcuNmM3LjYtMjQtMTMuNC00Ni44LTM3LjQtNDEuNy0yMiA0LjgtMjguOC0yOC4xLTcuMS0zMi44IDUwLjEtMTAuOSA5Mi4zIDM3LjEgNzYuNSA4NC44LTYuOCAyMS4yLTM4LjggMTAuOC0zMi0xMC4zek0yMTQuOCA0NDYuN0MxMDguNSA0NDYuNyAwIDM5NS4zIDAgMzEwLjRjMC00NC4zIDI4LTk1LjQgNzYuMy0xNDMuN0MxNzYgNjcgMjc5LjUgNjUuOCAyNDkuOSAxNjFjLTQgMTMuMSAxMi4zIDUuNyAxMi4zIDYgNzkuNS0zMy42IDE0MC41LTE2LjggMTE0IDUxLjQtMy43IDkuNCAxLjEgMTAuOSA4LjMgMTMuMSAxMzUuNyA0Mi4zIDM0LjggMjE1LjItMTY5LjcgMjE1LjJ6bTE0My43LTE0Ni4zYy01LjQtNTUuNy03OC41LTk0LTE2My40LTg1LjctODQuOCA4LjYtMTQ4LjggNjAuMy0xNDMuNCAxMTZzNzguNSA5NCAxNjMuNCA4NS43Yzg0LjgtOC42IDE0OC44LTYwLjMgMTQzLjQtMTE2ek0zNDcuOSAzNS4xYy0yNS45IDUuNi0xNi44IDQzLjcgOC4zIDM4LjMgNzIuMy0xNS4yIDEzNC44IDUyLjggMTExLjcgMTI0LTcuNCAyNC4yIDI5LjEgMzcgMzcuNCAxMiAzMS45LTk5LjgtNTUuMS0xOTUuOS0xNTcuNC0xNzQuM3ptLTc4LjUgMzExYy0xNy4xIDM4LjgtNjYuOCA2MC0xMDkuMSA0Ni4zLTQwLjgtMTMuMS01OC01My40LTQwLjMtODkuNyAxNy43LTM1LjQgNjMuMS01NS40IDEwMy40LTQ1LjEgNDIgMTAuOCA2My4xIDUwLjIgNDYgODguNXptLTg2LjMtMzBjLTEyLjktNS40LTMwIC4zLTM4IDEyLjktOC4zIDEyLjktNC4zIDI4IDguNiAzNCAxMy4xIDYgMzAuOC4zIDM5LjEtMTIuOSA4LTEzLjEgMy43LTI4LjMtOS43LTM0em0zMi42LTEzLjRjLTUuMS0xLjctMTEuNC42LTE0LjMgNS40LTIuOSA1LjEtMS40IDEwLjYgMy43IDEyLjkgNS4xIDIgMTEuNy0uMyAxNC42LTUuNCAyLjgtNS4yIDEuMS0xMC45LTQtMTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2VpeGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NS4yIDE2Ny42YzYuNCAwIDEyLjYuMyAxOC44IDEuMUMzODcuNCA5MC4zIDMwMy4zIDMyIDIwNy43IDMyIDEwMC41IDMyIDEzIDEwNC44IDEzIDE5Ny40YzAgNTMuNCAyOS4zIDk3LjUgNzcuOSAxMzEuNmwtMTkuMyA1OC42IDY4LTM0LjFjMjQuNCA0LjggNDMuOCA5LjcgNjguMiA5LjcgNi4yIDAgMTIuMS0uMyAxOC4zLS44LTQtMTIuOS02LjItMjYuNi02LjItNDAuOC0uMS04NC45IDcyLjktMTU0IDE2NS4zLTE1NHptLTEwNC41LTUyLjljMTQuNSAwIDI0LjIgOS43IDI0LjIgMjQuNCAwIDE0LjUtOS43IDI0LjItMjQuMiAyNC4yLTE0LjggMC0yOS4zLTkuNy0yOS4zLTI0LjIuMS0xNC43IDE0LjYtMjQuNCAyOS4zLTI0LjR6bS0xMzYuNCA0OC42Yy0xNC41IDAtMjkuMy05LjctMjkuMy0yNC4yIDAtMTQuOCAxNC44LTI0LjQgMjkuMy0yNC40IDE0LjggMCAyNC40IDkuNyAyNC40IDI0LjQgMCAxNC42LTkuNiAyNC4yLTI0LjQgMjQuMnpNNTYzIDMxOS40YzAtNzcuOS03Ny45LTE0MS4zLTE2NS40LTE0MS4zLTkyLjcgMC0xNjUuNCA2My40LTE2NS40IDE0MS4zUzMwNSA0NjAuNyAzOTcuNiA0NjAuN2MxOS4zIDAgMzguOS01LjEgNTguNi05LjlsNTMuNCAyOS4zLTE0LjgtNDguNkM1MzQgNDAyLjEgNTYzIDM2My4yIDU2MyAzMTkuNHptLTIxOS4xLTI0LjVjLTkuNyAwLTE5LjMtOS43LTE5LjMtMTkuNiAwLTkuNyA5LjctMTkuMyAxOS4zLTE5LjMgMTQuOCAwIDI0LjQgOS43IDI0LjQgMTkuMyAwIDEwLTkuNyAxOS42LTI0LjQgMTkuNnptMTA3LjEgMGMtOS43IDAtMTkuMy05LjctMTkuMy0xOS42IDAtOS43IDkuNy0xOS4zIDE5LjMtMTkuMyAxNC41IDAgMjQuNCA5LjcgMjQuNCAxOS4zLjEgMTAtOS45IDE5LjYtMjQuNCAxOS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaGF0c2FwcFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTIyLjhjLTcyLjcgMC0xMzEuOCA1OS4xLTEzMS45IDEzMS44IDAgMjQuOSA3IDQ5LjIgMjAuMiA3MC4xbDMuMSA1LTEzLjMgNDguNiA0OS45LTEzLjEgNC44IDIuOWMyMC4yIDEyIDQzLjQgMTguNCA2Ny4xIDE4LjRoLjFjNzIuNiAwIDEzMy4zLTU5LjEgMTMzLjMtMTMxLjggMC0zNS4yLTE1LjItNjguMy00MC4xLTkzLjItMjUtMjUtNTgtMzguNy05My4yLTM4Ljd6bTc3LjUgMTg4LjRjLTMuMyA5LjMtMTkuMSAxNy43LTI2LjcgMTguOC0xMi42IDEuOS0yMi40LjktNDcuNS05LjktMzkuNy0xNy4yLTY1LjctNTcuMi02Ny43LTU5LjgtMi0yLjYtMTYuMi0yMS41LTE2LjItNDFzMTAuMi0yOS4xIDEzLjktMzMuMWMzLjYtNCA3LjktNSAxMC42LTUgMi42IDAgNS4zIDAgNy42LjEgMi40LjEgNS43LS45IDguOSA2LjggMy4zIDcuOSAxMS4yIDI3LjQgMTIuMiAyOS40czEuNyA0LjMuMyA2LjljLTcuNiAxNS4yLTE1LjcgMTQuNi0xMS42IDIxLjYgMTUuMyAyNi4zIDMwLjYgMzUuNCA1My45IDQ3LjEgNCAyIDYuMyAxLjcgOC42LTEgMi4zLTIuNiA5LjktMTEuNiAxMi41LTE1LjUgMi42LTQgNS4zLTMuMyA4LjktMiAzLjYgMS4zIDIzLjEgMTAuOSAyNy4xIDEyLjlzNi42IDMgNy42IDQuNmMuOSAxLjkuOSA5LjktMi40IDE5LjF6TTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTIyMy45IDQxMy4yYy0yNi42IDAtNTIuNy02LjctNzUuOC0xOS4zTDY0IDQxNmwyMi41LTgyLjJjLTEzLjktMjQtMjEuMi01MS4zLTIxLjItNzkuM0M2NS40IDE2Ny4xIDEzNi41IDk2IDIyMy45IDk2YzQyLjQgMCA4Mi4yIDE2LjUgMTEyLjIgNDYuNSAyOS45IDMwIDQ3LjkgNjkuOCA0Ny45IDExMi4yIDAgODcuNC03Mi43IDE1OC41LTE2MC4xIDE1OC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaGF0c2FwcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODAuOSA5Ny4xQzMzOSA1NS4xIDI4My4yIDMyIDIyMy45IDMyYy0xMjIuNCAwLTIyMiA5OS42LTIyMiAyMjIgMCAzOS4xIDEwLjIgNzcuMyAyOS42IDExMUwwIDQ4MGwxMTcuNy0zMC45YzMyLjQgMTcuNyA2OC45IDI3IDEwNi4xIDI3aC4xYzEyMi4zIDAgMjI0LjEtOTkuNiAyMjQuMS0yMjIgMC01OS4zLTI1LjItMTE1LTY3LjEtMTU3em0tMTU3IDM0MS42Yy0zMy4yIDAtNjUuNy04LjktOTQtMjUuN2wtNi43LTQtNjkuOCAxOC4zTDcyIDM1OS4ybC00LjQtN2MtMTguNS0yOS40LTI4LjItNjMuMy0yOC4yLTk4LjIgMC0xMDEuNyA4Mi44LTE4NC41IDE4NC42LTE4NC41IDQ5LjMgMCA5NS42IDE5LjIgMTMwLjQgNTQuMSAzNC44IDM0LjkgNTYuMiA4MS4yIDU2LjEgMTMwLjUgMCAxMDEuOC04NC45IDE4NC42LTE4Ni42IDE4NC42em0xMDEuMi0xMzguMmMtNS41LTIuOC0zMi44LTE2LjItMzcuOS0xOC01LjEtMS45LTguOC0yLjgtMTIuNSAyLjgtMy43IDUuNi0xNC4zIDE4LTE3LjYgMjEuOC0zLjIgMy43LTYuNSA0LjItMTIgMS40LTMyLjYtMTYuMy01NC0yOS4xLTc1LjUtNjYtNS43LTkuOCA1LjctOS4xIDE2LjMtMzAuMyAxLjgtMy43LjktNi45LS41LTkuNy0xLjQtMi44LTEyLjUtMzAuMS0xNy4xLTQxLjItNC41LTEwLjgtOS4xLTkuMy0xMi41LTkuNS0zLjItLjItNi45LS4yLTEwLjYtLjItMy43IDAtOS43IDEuNC0xNC44IDYuOS01LjEgNS42LTE5LjQgMTktMTkuNCA0Ni4zIDAgMjcuMyAxOS45IDUzLjcgMjIuNiA1Ny40IDIuOCAzLjcgMzkuMSA1OS43IDk0LjggODMuOCAzNS4yIDE1LjIgNDkgMTYuNSA2Ni42IDEzLjkgMTAuNy0xLjYgMzIuOC0xMy40IDM3LjQtMjYuNCA0LjYtMTMgNC42LTI0LjEgMy4yLTI2LjQtMS4zLTIuNS01LTMuOS0xMC41LTYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2htY3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDE2MXYtMjEuM2wtMjguNS04LjgtMi4yLTEwLjQgMjAuMS0yMC43TDQyNyA4MC40bC0yOSA3LjUtNy4yLTcuNSA3LjUtMjguMi0xOS4xLTExLjYtMjEuMyAyMS0xMC43LTMuMi03LTI2LjRoLTIyLjZsLTYuMiAyNi40LTEyLjEgMy4yLTE5LjctMjEtMTkuNCAxMSA4LjEgMjcuNy04LjEgOC40LTI4LjUtNy41LTExIDE5LjEgMjAuNyAyMS0yLjkgMTAuNC0yOC41IDcuOC0uMyAyMS43IDI4LjggNy41IDIuNCAxMi4xLTIwLjEgMTkuOSAxMC40IDE4LjUgMjkuNi03LjUgNy4yIDguNi04LjEgMjYuOSAxOS45IDExLjYgMTkuNC0yMC40IDExLjYgMi45IDYuNyAyOC41IDIyLjYuMyA2LjctMjguOCAxMS42LTMuNSAyMC43IDIxLjYgMjAuNC0xMi4xLTguOC0yOCA3LjgtOC4xIDI4LjggOC44IDEwLjMtMjAuMS0yMC45LTE4LjggMi4yLTEyLjEgMjkuMS03em0tMTE5LjIgNDUuMmMtMzEuMyAwLTU2LjgtMjUuNC01Ni44LTU2LjhzMjUuNC01Ni44IDU2LjgtNTYuOCA1Ni44IDI1LjQgNTYuOCA1Ni44YzAgMzEuNS0yNS40IDU2LjgtNTYuOCA1Ni44em03Mi4zIDE2LjRsNDYuOSAxNC41VjI3N2wtNTUuMSAxMy40LTQuMSAyMi43IDM4LjkgMzUuMy0xOS4yIDM3LjktNTQtMTYuNy0xNC42IDE1LjIgMTYuNyA1Mi41LTM4LjMgMjIuNy0zOC45LTQwLjUtMjEuNyA2LjYtMTIuNiA1NC00Mi40LS41LTEyLjYtNTMuNi0yMS43LTUuNi0zNi40IDM4LjQtMzcuNC0yMS43IDE1LjItNTAuNS0xMy43LTE2LjEtNTUuNSAxNC4xLTE5LjctMzQuOCAzNy45LTM3LjQtNC44LTIyLjgtNTQtMTQuMS41LTQwLjlMNTQgMjE5LjlsNS43LTE5LjctMzguOS0zOS40TDQxLjUgMTI1bDUzLjYgMTQuMSAxNS4yLTE1LjctMTUuMi01MiAzNi40LTIwLjcgMzYuOCAzOS40TDE5MSA4NGwxMS42LTUySDI0NWwxMS42IDQ1LjlMMjM0IDcybC02LjMtMS43LTMuMyA1LjctMTEgMTkuMS0zLjMgNS42IDQuNiA0LjYgMTcuMiAxNy40LS4zIDEtMjMuOCA2LjUtNi4yIDEuNy0uMSA2LjQtLjIgMTIuOUMxNTMuOCAxNjEuNiAxMTggMjA0IDExOCAyNTQuN2MwIDU4LjMgNDcuMyAxMDUuNyAxMDUuNyAxMDUuNyA1MC41IDAgOTIuNy0zNS40IDEwMy4yLTgyLjhsMTMuMi4yIDYuOS4xIDEuNi02LjcgNS42LTI0IDEuOS0uNiAxNy4xIDE3LjggNC43IDQuOSA1LjgtMy40IDIwLjQtMTIuMSA1LjgtMy41LTItNi41LTYuOC0yMS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaWtpcGVkaWFXIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCA1MS4ybC0uMyAxMi4yYy0yOC4xLjgtNDUgMTUuOC01NS44IDQwLjMtMjUgNTcuOC0xMDMuMyAyNDAtMTU1LjMgMzU4LjZINDE1bC04MS45LTE5My4xYy0zMi41IDYzLjYtNjguMyAxMzAtOTkuMiAxOTMuMS0uMy4zLTE1IDAtMTUtLjNDMTcyIDM1Mi4zIDEyMi44IDI0My40IDc1LjggMTMzLjQgNjQuNCAxMDYuNyAyNi40IDYzLjQuMiA2My43YzAtMy4xLS4zLTEwLS4zLTE0LjJoMTYxLjl2MTMuOWMtMTkuMiAxLjEtNTIuOCAxMy4zLTQzLjMgMzQuMiAyMS45IDQ5LjcgMTAzLjYgMjQwLjMgMTI1LjYgMjg4LjYgMTUtMjkuNyA1Ny44LTEwOS4yIDc1LjMtMTQyLjgtMTMuOS0yOC4zLTU4LjYtMTMzLjktNzIuOC0xNjAtOS43LTE3LjgtMzYuMS0xOS40LTU1LjgtMTkuN1Y0OS44bDE0Mi41LjN2MTMuMWMtMTkuNC42LTM4LjEgNy44LTI5LjQgMjYuMSAxOC45IDQwIDMwLjYgNjguMSA0OC4xIDEwNC43IDUuNi0xMC44IDM0LjctNjkuNCA0OC4xLTEwMC44IDguOS0yMC42LTMuOS0yOC42LTM4LjYtMjkuNC4zLTMuNiAwLTEwLjMuMy0xMy42IDQ0LjQtLjMgMTExLjEtLjMgMTIzLjEtLjZ2MTMuNmMtMjIuNS44LTQ1LjggMTIuOC01OC4xIDMxLjdsLTU5LjIgMTIyLjhjNi40IDE2LjEgNjMuMyAxNDIuOCA2OS4yIDE1Ni43TDU1OS4yIDkxLjhjLTguNi0yMy4xLTM2LjQtMjguMS00Ny4yLTI4LjNWNDkuNmwxMjcuOCAxLjEuMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kb3dzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTMuN2wxODMuNi0yNS4zdjE3Ny40SDBWOTMuN3ptMCAzMjQuNmwxODMuNiAyNS4zVjI2OC40SDB2MTQ5Ljl6bTIwMy44IDI4TDQ0OCA0ODBWMjY4LjRIMjAzLjh2MTc3Ljl6bTAtMzgwLjZ2MTgwLjFINDQ4VjMyTDIwMy44IDY1Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpeCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTMuMzggMTMxLjY5YzAgMTMuMDMgMi4wOCAzMi42OS0yOC42OCA0My44My05LjUyIDMuNDUtMTUuOTUgOS42Ni0xNS45NSA5LjY2IDAtMzEgNC43Mi00Mi4yMiAxNy40LTQ4Ljg2IDkuNzUtNS4xMSAyNy4yMy00LjYzIDI3LjIzLTQuNjN6bS0xMTUuOCAzNS41NGwtMzQuMjQgMTMyLjY2LTI4LjQ4LTEwOC41N2MtNy42OS0zMS45OS0yMC44MS00OC41My00OC40My00OC41My0yNy4zNyAwLTQwLjY2IDE2LjE4LTQ4LjQzIDQ4LjUzTDg5LjUyIDI5OS44OSA1NS4yOCAxNjcuMjNDNDkuNzMgMTQwLjUxIDIzLjg2IDEyOC45NiAwIDEzMS45Nmw2NS41NyAyNDcuOTNzMjEuNjMgMS41NiAzMi40Ni0zLjk2YzE0LjIyLTcuMjUgMjAuOTgtMTIuODQgMjkuNTktNDYuNTcgNy42Ny0zMC4wNyAyOS4xMS0xMTguNDEgMzEuMTItMTI0LjcgNC43Ni0xNC45NCAxMS4wOS0xMy44MSAxNS40IDAgMS45NyA2LjMgMjMuNDUgOTQuNjMgMzEuMTIgMTI0LjcgOC42IDMzLjczIDE1LjM3IDM5LjMyIDI5LjU5IDQ2LjU3IDEwLjgyIDUuNTIgMzIuNDYgMy45NiAzMi40NiAzLjk2bDY1LjU3LTI0Ny45M2MtMjQuNDItMy4wNy00OS44MiA4LjkzLTU1LjMgMzUuMjd6bTExNS43OCA1LjIxcy00LjEgNi4zNC0xMy40NiAxMS41N2MtNi4wMSAzLjM2LTExLjc4IDUuNjQtMTcuOTcgOC42MS0xNS4xNCA3LjI2LTEzLjE4IDEzLjk1LTEzLjE4IDM1LjJ2MTUyLjA3czE2LjU1IDIuMDkgMjcuMzctMy40M2MxMy45My03LjEgMTcuMTMtMTMuOTUgMTcuMjYtNDQuNzhWMTgxLjQxbC0uMDIuMDF2LTguOTh6bTE2My40NCA4NC4wOEw2NDAgMTMyLjc4cy0zNS4xMS01Ljk4LTUyLjUgOS44NWMtMTMuMyAxMi4xLTI0LjQxIDI5LjU1LTU0LjE4IDcyLjQ3LS40Ny43My02LjI1IDEwLjU0LTEzLjA3IDAtMjkuMjktNDIuMjMtNDAuOC02MC4yOS01NC4xOC03Mi40Ny0xNy4zOS0xNS44My01Mi41LTkuODUtNTIuNS05Ljg1bDgzLjIgMTIzLjc0LTgyLjk3IDEyMy4zNnMzNi41NyA0LjYyIDUzLjk1LTExLjIxYzExLjQ5LTEwLjQ2IDE3LjU4LTIwLjM3IDUyLjUxLTcwLjcyIDYuODEtMTAuNTIgMTIuNTctLjc3IDEzLjA3IDAgMjkuNCA0Mi4zOCAzOS4yMyA1OC4wNiA1My4xNCA3MC43MiAxNy4zOSAxNS44MyA1My4zMiAxMS4yMSA1My4zMiAxMS4yMUw1NTYuOCAyNTYuNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpemFyZHNPZlRoZUNvYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxOS4xOSAzNDUuNjljLTEuOSAxLjM4LTExLjA3IDguNDQtLjI2IDIzLjU3IDQuNjQgNi40MiAxNC4xMSAxMi43OSAyMS43MyA2LjU1IDYuNS00Ljg4IDcuMzUtMTIuOTIuMjYtMjMuMDQtNS40Ny03Ljc2LTE0LjI4LTEyLjg4LTIxLjczLTcuMDh6bTMzNi43NSA3NS45NGMtLjM0IDEuNy0uNTUgMS42Ny43OSAwIDIuMDktNC4xOSA0LjE5LTEwLjIxIDQuOTgtMTkuOSAzLjE0LTM4LjQ5LTQwLjMzLTcxLjQ5LTEwMS4zNC03OC4wMy01NC43My02LjAyLTEyNC4zOCA5LjE3LTE4OC44IDYwLjQ5bC0uMjYgMS41N2MyLjYyIDQuOTggNC45OCAxMC43NCAzLjQgMjEuMjFsLjc5LjI2YzYzLjg5LTU4LjQgMTMxLjE5LTc3LjI1IDE4NC4zNS03My44NSA1OC40IDMuNjcgMTAwLjAzIDM0LjA0IDEwMC4wMyA2OC4wOC0uMDEgOS45Ni0yLjYzIDE1LjcyLTMuOTQgMjAuMTd6TTM5Mi4yOCAyNDAuNDJjLjc5IDcuMDcgNC4xOSAxMC4yMSA5LjE3IDEwLjQ3IDUuNS4yNiA5LjQzLTIuNjIgMTAuNDctNi41NS43OS0zLjQgMi4wOS0yOS44NSAyLjA5LTI5Ljg1cy0xMS4yNiA2LjU1LTE0LjkzIDEwLjQ3Yy0zLjY2IDMuNjgtNy4zMyA4LjM5LTYuOCAxNS40NnptLTUwLjAyLTE1MS4xQzEzNy43NSA4OS4zMiAxMy4xIDIyNi44Ljc5IDI0MS4yYy0xLjA1LjUyLTEuMzEuNzkuNzkgMS4zMSA2MC40OSAxNi41IDE1NS44MSA4MS4xOCAxOTYuMTMgMjAyLjE2bDEuMDUuMjZjNTUuMjUtNjkuOTIgMTQwLjg4LTEyOC4wNSAyMzYuOTktMTI4LjA1IDgwLjkyIDAgMTMwLjE1IDQyLjE2IDEzMC4xNSA4MC4zOSAwIDE4LjMzLTYuNTUgMzMuNTItMjIuMjYgNDYuMzUgMCAuOTYtLjIuNzkuNzkuNzkgMTQuNjYtMTAuNzQgMjcuNS0yOC44IDI3LjUtNDguMTggMC0yMi43OC0xMi4wNS0zOC4yMy0xMi4wNS0zOC4yMyA3LjA3IDcuMDcgMTAuNzQgMTYuMjQgMTAuNzQgMTYuMjQgNS43Ni00MC44NSAyNi45Ny02Mi4zMiAyNi45Ny02Mi4zMi0yLjM2LTkuNjktNi44MS0xNy44MS02LjgxLTE3LjgxIDcuNTkgOC4xMiAxNC40IDI3LjUgMTQuNCA0MS4zNyAwIDEwLjQ3LTMuNCAyMi43OC0xMi41NyAzMS45NWwuMjYuNTJjOC4xMi00Ljk4IDE2LjUtMTYuNzYgMTYuNS0zNy45NyAwLTE1LjcxLTQuNzEtMjUuOTItNC43MS0yNS45MiA1Ljc2LTUuMjQgMTEuMjYtOS4xNyAxNS45Ny0xMS43OC43OSAzLjQgMi4wOSA5LjY5IDIuMzYgMTQuOTMgMCAxLjA1Ljc5IDEuODMgMS4wNSAwIC43OS01Ljc2LS4yNi0xNi4yNC0uMjYtMTYuNSA2LjAyLTMuMTQgOS42OS00LjQ1IDkuNjktNC40NUM2MTcuNzQgMTc2IDQ4OS40MyA4OS4zMiAzNDIuMjYgODkuMzJ6bS05OS4yNCAyODkuNjJjLTExLjA2IDguOTktMjQuMiA0LjA4LTMwLjY0LTQuMTktNy40NS05LjU4LTYuNzYtMjQuMDkgNC4xOS0zMi40NyAxNC44NS0xMS4zNSAyNy4wOC0uNDkgMzEuMTYgNS41LjI4LjM5IDEyLjEzIDE2LjU3LTQuNzEgMzEuMTZ6bTIuMDktMTM2LjQzbDkuNDMtMTcuODEgMTEuNzggNzAuOTYtMTIuNTcgNi4wMi0yNC42Mi0yOC44IDE0LjE0LTI2LjcxIDMuNjcgNC40NS0xLjgzLTguMTF6bTE4LjU5IDExNy41OGwtLjI2LS4yNmMyLjA1LTQuMS0yLjUtNi42MS0xNy41NC0zMS42OS0xLjMxLTIuMzYtMy4xNC0yLjg4LTQuNDUtMi42MmwtLjI2LS41MmM3Ljg2LTUuNzYgMTUuNDUtMTAuMjEgMjUuNC0xNS43MWwuNTIuMjZjMS4zMSAxLjgzIDIuMDkgMi44OCAzLjQgNC43MWwtLjI2LjUyYy0xLjA1LS4yNi0yLjM2LS43OS01LjI0LjI2LTIuMDkuNzktNy44NiAzLjY3LTEyLjMxIDcuNTl2MS4zMWMxLjU3IDIuMzYgMy45MyA2LjU1IDUuNzYgOS42OWguMjZjMTAuMDUtNi4yOCA3LjU2LTQuNTUgMTEuNTItNy44NmguMjZjLjUyIDEuODMuNTIgMS44MyAxLjgzIDUuNWwtLjI2LjI2Yy0zLjA2LjYxLTQuNjUuMzQtMTEuNTIgNS41di4yNmM5LjQ2IDE3LjAyIDExLjAxIDE2Ljc1IDEyLjU3IDE1Ljk3bC4yNi4yNmMtMi4zNCAxLjU5LTYuMjcgNC4yMS05LjY4IDYuNTd6bTU1LjI2LTMyLjQ3Yy0zLjE0IDEuNTctNi4wMiAyLjg4LTkuOTUgNC45OGwtLjI2LS4yNmMxLjI5LTIuNTkgMS4xNi0yLjcxLTExLjc4LTMyLjQ3bC0uMjYtLjI2Yy0uMTUgMC04LjkgMy42NS05Ljk1IDcuMzNoLS41MmwtMS4wNS01Ljc2LjI2LS41MmM3LjI5LTQuNTYgMjUuNTMtMTEuNjQgMjcuNzYtMTIuNTdsLjUyLjI2IDMuMTQgNC45OC0uMjYuNTJjLTMuNTMtMS43Ni03LjM1Ljc2LTEyLjMxIDIuNjJ2LjI2YzEyLjMxIDMyLjAxIDEyLjY3IDMwLjY0IDE0LjY2IDMwLjY0di4yNXptNDQuNzctMTYuNWMtNC4xOSAxLjA1LTUuMjQgMS4zMS05LjY5IDIuODhsLS4yNi0uMjYuNTItNC40NWMtMS4wNS0zLjQtMy4xNC0xMS41Mi0zLjY3LTEzLjYybC0uMjYtLjI2Yy0zLjQuNzktOC45IDIuNjItMTIuODMgMy45M2wtLjI2LjI2Yy43OSAyLjYyIDMuMTQgOS45NSA0LjE5IDEzLjg4Ljc5IDIuMzYgMS44MyAyLjg4IDIuODggMy4xNHYuNTJjLTMuNjcgMS4wNS03LjA3IDIuNjItMTAuMjEgMy45M2wtLjI2LS4yNmMxLjA1LTEuMzEgMS4wNS0yLjg4LjI2LTQuOTgtMS4wNS0zLjE0LTguMTItMjMuODMtOS4xNy0yNy4yMy0uNTItMS44My0xLjU3LTMuMTQtMi42Mi0zLjE0di0uNTJjMy4xNC0xLjA1IDYuMDItMi4wOSAxMC43NC0zLjRsLjI2LjI2LS4yNiA0LjcxYzEuMzEgMy45MyAyLjM2IDcuNTkgMy4xNCA5LjY5aC4yNmMzLjkzLTEuMzEgOS40My0yLjg4IDEyLjgzLTMuOTNsLjI2LS4yNi0yLjYyLTkuNDNjLS41Mi0xLjgzLTEuMDUtMy40LTIuNjItMy45M3YtLjI2YzQuNDUtMS4wNSA3LjMzLTEuODMgMTAuNzQtMi4zNmwuMjYuMjZjLTEuMDUgMS4zMS0xLjA1IDIuODgtLjUyIDQuNDUgMS41NyA2LjI4IDQuNzEgMjAuNDMgNi4yOCAyNi40NS41NCAyLjYyIDEuODUgMy40MSAyLjYzIDMuOTN6bTMyLjIxLTYuODFsLS4yNi4yNmMtNC43MS41Mi0xNC4xNCAyLjM2LTIyLjUyIDQuMTlsLS4yNi0uMjYuNzktNC4xOWMtMS41Ny03Ljg2LTMuNC0xOC41OS00Ljk4LTI2LjE5LS4yNi0xLjgzLS43OS0yLjg4LTIuNjItMy42N2wuNzktLjUyYzkuMTctMS41NyAyMC4xNi0yLjM2IDI0Ljg4LTIuNjJsLjI2LjI2Yy41MiAyLjM2Ljc5IDMuMTQgMS41NyA1LjVsLS4yNi4yNmMtMS4xNC0xLjE0LTMuMzQtMy4yLTE2LjI0LS43OWwtLjI2LjI2Yy4yNiAxLjU3IDEuMDUgNi41NSAxLjU3IDkuOTVsLjI2LjI2YzkuNTItMS42OCA0Ljc2LS4wNiAxMC43NC0yLjM2aC4yNmMwIDEuNTctLjI2IDEuODMtLjI2IDUuMjRoLS4yNmMtNC44MS0xLjAzLTIuMTUtLjktMTAuMjEgMGwtLjI2LjI2Yy4yNiAyLjA5IDEuNTcgOS40MyAyLjA5IDEyLjU3bC4yNi4yNmMxLjE1LjM4IDE0LjIxLS42NSAxNi4yNC00LjcxaC4yNmMtLjUzIDIuMzgtMS4wNSA0LjIxLTEuNTggNi4wNHptMTAuNzQtNDQuNTFjLTQuNDUgMi4zNi04LjEyIDIuODgtMTEgMi44OC0uMjUuMDItMTEuNDEgMS4wOS0xNy41NC05Ljk1LTYuNzQtMTAuNzktLjk4LTI1LjIgNS41LTMxLjY5IDguOC04LjEyIDIzLjM1LTEwLjEgMjguNTQtMTcuMDIgOC4wMy0xMC4zMy0xMy4wNC0yMi4zMS0yOS41OS01Ljc2bC0yLjYyLTIuODggNS4yNC0xNi4yNGMyNS41OS0xLjU3IDQ1LjItMy4wNCA1MC4wMiAxNi4yNC43OSAzLjE0IDAgOS40My0uMjYgMTIuMDUgMCAyLjYyLTEuODMgMTguODUtMi4wOSAyMy4wNC0uNTIgNC4xOS0uNzkgMTguMzMtLjc5IDIwLjY5LjI2IDIuMzYuNTIgNC4xOSAxLjU3IDUuNSAxLjU3IDEuODMgNS43NiAxLjgzIDUuNzYgMS44M2wtLjc5IDQuNzFjLTExLjgyLTEuMDctMTAuMjgtLjU5LTIwLjQzLTEuMDUtMy4yMi01LjE1LTIuMjMtMy4yOC00LjE5LTcuODYgMCAuMDEtNC4xOSAzLjk0LTcuMzMgNS41MXptMzcuMTggMjEuMjFjLTYuMzUtMTAuNTgtMTkuODItNy4xNi0yMS43MyA1LjUtMi42MyAxNy4wOCAxNC4zIDE5Ljc5IDIwLjY5IDEwLjIxbC4yNi4yNmMtLjUyIDEuODMtMS44MyA2LjAyLTEuODMgNi4yOGwtLjUyLjUyYy0xMC4zIDYuODctMjguNS0yLjUtMjUuNjYtMTguNTkgMS45NC0xMC44NyAxNC40NC0xOC45MyAyOC44LTkuOTVsLjI2LjUyYzAgMS4wNi0uMjcgMy40MS0uMjcgNS4yNXptNS43Ny04Ny43M3YtNi41NWMuNjkgMCAxOS42NSAzLjI4IDI3Ljc2IDcuMzNsLTEuNTcgMTcuNTRzMTAuMjEtOS40MyAxNS40NS0xMC43NGM1LjI0LTEuNTcgMTQuOTMgNy4zMyAxNC45MyA3LjMzbC0xMS4yNiAxMS4yNmMtMTIuMDctNi4zNS0xOS41OS0uMDgtMjAuNjkuNzktNS4yOSAzOC43Mi04LjYgNDIuMTcgNC40NSA0Ni4wOWwtLjUyIDQuNzFjLTE3LjU1LTQuMjktMTguNTMtNC41LTM2LjkyLTcuMzNsLjc5LTQuNzFjNy4yNSAwIDcuNDgtNS4zMiA3LjU5LTYuODEgMCAwIDQuOTgtNTMuMTYgNC45OC01NS4yNS0uMDItMi44Ny00Ljk5LTMuNjYtNC45OS0zLjY2em0xMC45OSAxMTQuNDRjLTguMTItMi4wOS0xNC4xNC0xMS0xMC43NC0yMC42OSAzLjE0LTkuNDMgMTIuMzEtMTIuMzEgMTguODUtMTAuMjEgOS4xNyAyLjYyIDEyLjgzIDExLjc4IDEwLjc0IDE5LjM4LTIuNjEgOC45LTkuNDIgMTMuODctMTguODUgMTEuNTJ6bTQyLjE2IDkuNjljLTIuMzYtLjUyLTcuMDctMi4zNi04LjY0LTIuODh2LS4yNmwxLjU3LTEuODNjLjU5LTguMjQuNTktNy4yNy4yNi03LjU5LTQuODItMS44MS02LjY2LTIuMzYtNy4wNy0yLjM2LTEuMzEgMS44My0yLjg4IDQuNDUtMy42NyA1LjVsLS43OSAzLjR2LjI2Yy0xLjMxLS4yNi0zLjkzLTEuMzEtNi4wMi0xLjU3di0uMjZsMi42Mi0xLjgzYzMuNC00LjcxIDkuOTUtMTQuMTQgMTMuODgtMjAuMTZ2LTIuMDlsLjUyLS4yNmMyLjA5Ljc5IDUuNSAyLjA5IDcuNTkgMi44OC40OC40OC4xOC0xLjg3LTEuMDUgMjUuMTQtLjI0IDEuODEuMDIgMi42LjggMy45MXptLTQuNzEtODkuODJjMTEuMjUtMTguMjcgMzAuNzYtMTYuMTkgMzQuMDQtMy40TDUzOS43IDE5OGMyLjM0LTYuMjUtMi44Mi05LjktNC40NS0xMS4yNmwxLjgzLTMuNjdjMTIuMjIgMTAuMzcgMTYuMzggMTMuOTcgMjIuNTIgMjAuNDMtMjUuOTEgNzMuMDctMzAuNzYgODAuODEtMjQuNjIgODQuMzJsLTEuODMgNC40NWMtNi4zNy0zLjM1LTguOS00LjQyLTE3LjgxLTguNjRsMi4wOS02LjgxYy0uMjYtLjI2LTMuOTMgMy45My05LjY5IDMuNjctMTkuMDYtMS4zLTIyLjg5LTMxLjc1LTkuNjctNTIuOXptMjkuMzMgNzkuMzRjMC01LjcxLTYuMzQtNy44OS03Ljg2LTUuMjQtMS4zMSAyLjA5IDEuMDUgNC45OCAyLjg4IDguMzggMS41NyAyLjYyIDIuNjIgNi4yOCAxLjA1IDkuNDMtMi42NCA2LjM0LTEyLjQgNS4zMS0xNS40NS0uNzkgMC0uNy0uMjcuMDkgMS44My00LjcxbC43OS0uMjZjLS41NyA1LjY2IDYuMDYgOS42MSA4LjM4IDQuOTggMS4wNS0yLjA5LS41Mi01LjUtMi4wOS04LjM4LTEuNTctMi42Mi0zLjY3LTYuMjgtMS44My05LjY5IDIuNzItNS4wNiAxMS4yNS00LjQ3IDE0LjY2IDIuMzZ2LjUybC0yLjM2IDMuNHptMjEuMjEgMTMuMzZjLTEuOTYtMy4yNy0uOTEtMi4xNC00LjQ1LTQuNzFoLS4yNmMtMi4zNiA0LjE5LTUuNzYgMTAuNDctOC42NCAxNi4yNC0xLjMxIDIuMzYtMS4wNSAzLjQtLjc5IDMuOTNsLS4yNi4yNi01Ljc2LTQuNDUuMjYtLjI2IDIuMDktMS4zMWMzLjE0LTUuNzYgNi41NS0xMi4wNSA5LjE3LTE3LjAydi0uMjZjLTIuNjQtMS45OC0xLjIyLTEuNTEtNi4wMi0xLjgzdi0uMjZsMy4xNC0zLjRoLjI2YzMuNjcgMi4zNiA5Ljk1IDYuODEgMTIuMzEgOC45bC4yNi4yNi0xLjMxIDMuOTF6bTI3LjIzLTQ0LjI2bC0yLjg4LTIuODhjLjc5LTIuMzYgMS44My00Ljk4IDIuMDktNy41OS43NS05Ljc0LTExLjUyLTExLjg0LTExLjUyLTQuOTggMCA0Ljk4IDcuODYgMTkuMzggNy44NiAyNy43NiAwIDEwLjIxLTUuNzYgMTUuNzEtMTMuODggMTYuNS04LjM4Ljc5LTIwLjE2LTEwLjQ3LTIwLjE2LTEwLjQ3bDQuOTgtMTQuNCAyLjg4IDIuMDljLTIuOTcgMTcuOCAxNy42OCAyMC4zNyAxMy4zNSA1LjI0LTEuMDYtNC4wMi0xOC43NS0zNC4yIDIuMDktMzguMjMgMTMuNjItMi4zNiAyMy4wNCAxNi41IDIzLjA0IDE2LjVsLTcuODUgMTAuNDZ6bTM1LjYyLTEwLjIxYy0xMS0zMC4zOC02MC40OS0xMjcuNTMtMTkxLjk1LTEyOS42Mi01My40Mi0xLjA1LTk0LjI3IDE1LjQ1LTEzMi43NiAzNy45N2w4NS42My05LjE3LTkxLjM5IDIwLjY5IDI1LjE0IDE5LjY0LTMuOTMtMTYuNWM3LjUtMS43MSAzOS4xNS04LjQ1IDY2Ljc3LTguOWwtMjIuMjYgODAuMzljMTMuNjEtLjcgMTguOTctOC45OCAxOS42NC0yMi43OGw0Ljk4LTEuMDUuMjYgMjYuNzFjLTIyLjQ2IDMuMjEtMzcuMyA2LjY5LTQ5LjQ5IDkuOTVsMTMuMDktNDMuMjEtNjEuNTQtMzYuNjYgMi4zNiA4LjEyIDEwLjIxIDQuOThjNi4yOCAxOC41OSAxOS4zOCA1Ni41NiAyMC40MyA1OC42NiAxLjk1IDQuMjggMy4xNiA1Ljc4IDEyLjA1IDQuNDVsMS4wNSA0Ljk4Yy0xNi4wOCA0Ljg2LTIzLjY2IDcuNjEtMzkuMDIgMTQuNGwtMi4zNi00LjcxYzQuNC0yLjk0IDguNzMtMy45NCA1LjUtMTIuODMtMjMuNy02Mi41LTIxLjQ4LTU4LjE0LTIyLjc4LTU5LjQ0bDIuMzYtNC40NSAzMy41MiA2Ny4zYy0zLjg0LTExLjg3IDEuNjggMS42OS0zMi45OS03OC44MmwtNDEuOSA4OC41MSA0LjcxLTEzLjg4LTM1Ljg4LTQyLjE2IDI3Ljc2IDkzLjQ4LTExLjc4IDguMzhDOTUgMjI4LjU4IDEwMS4wNSAyMzEuODcgOTMuMjMgMjMxLjUyYy01LjUtLjI2LTEzLjYyIDUuNS0xMy42MiA1LjVMNzQuNjMgMjMxYzMwLjU2LTIzLjUzIDMxLjYyLTI0LjMzIDU4LjQtNDIuNjhsNC4xOSA3LjA3cy01Ljc2IDQuMTktNy44NiA3LjA3Yy01LjkgOS4yOCAxLjY3IDEzLjI4IDYxLjggNzUuNjhsLTE4Ljg1LTU4LjkyIDM5LjgtMTAuMjEgMjUuNjYgMzAuNjQgNC40NS0xMi4zMS00Ljk4LTI0LjYyIDEzLjA5LTMuNC41MiAzLjE0IDMuNjctMTAuNDctOTQuMjcgMjkuMzMgMTEuMjYtNC45OC0xMy42Mi00Mi40MiAxNy4yOC05LjE3IDMwLjExIDM2LjE0IDI4LjU0LTEzLjA5Yy0xLjQxLTcuNDctMi40Ny0xNC41LTQuNzEtMTkuNjRsMTcuMjggMTMuODggNC43MS0yLjA5LTU5LjE4LTQyLjY4IDIzLjA4IDExLjVjMTguOTgtNi4wNyAyNS4yMy03LjQ3IDMyLjIxLTkuNjlsMi42MiAxMWMtMTIuNTUgMTIuNTUgMS40MyAxNi44MiA2LjU1IDE5LjM4bC0xMy42Mi02MS4wMSAxMi4wNSAyOC4yOGM0LjE5LTEuMzEgNy4zMy0yLjA5IDcuMzMtMi4wOWwyLjYyIDguNjRzLTMuMTQgMS4wNS02LjI4IDIuMDlsOC45IDIwLjk1IDMzLjc4LTY1LjczLTIwLjY5IDYxLjAxYzQyLjQyLTI0LjA5IDgxLjQ0LTM2LjY2IDEzMS45OC0zNS44OCA2Ny4wNCAxLjA1IDE2Ny4zMyA0MC44NSAxOTkuOCAxMzkuODMuNzggMi4xLS4wMSAyLjYzLS43OS4yN3pNMjAzLjQ4IDE1Mi40M3MxLjgzLS41MiA0LjE5LTEuMzFsOS40MyA3LjU5Yy0uNCAwLTMuNDQtLjI1LTExLjI2IDIuMzZsLTIuMzYtOC42NHptMTQzLjc2IDM4LjVjLTEuNTctLjYtMjYuNDYtNC44MS0zMy4yNiAyMC42OWwyMS43MyAxNy4wMiAxMS41My0zNy43MXpNMzE4LjQzIDY3LjA3Yy01OC40IDAtMTA2LjA1IDEyLjA1LTExNC45NiAxNC40di43OWM4LjM4IDIuMDkgMTQuNCA0LjE5IDIxLjIxIDExLjc4bDEuNTcuMjZjNi41NS0xLjgzIDQ4Ljk3LTEzLjg4IDExMC4yNC0xMy44OCAxODAuMTYgMCAzMDEuNjcgMTE2Ljc5IDMwMS42NyAyMjMuMzd2OS45NWMwIDEuMzEuNzkgMi42MiAxLjA1LjUyLjUyLTIuMDkuNzktOC42NC43OS0xOS42NC4yNi04My43OS05Ni42My0yMjcuNTUtMzIxLjU3LTIyNy41NXptMjExLjA2IDE2OS42OGMxLjMxLTUuNzYgMC0xMi4zMS03LjMzLTEzLjA5LTkuNjItMS4xMy0xNi4xNCAyMy43OS0xNy4wMiAzMy41Mi0uNzkgNS41LTEuMzEgMTQuOTMgNi4wMiAxNC45MyA0LjY4LS4wMSA5LjcyLS45MSAxOC4zMy0zNS4zNnptLTYxLjUzIDQyLjk1Yy0yLjYyLS43OS05LjQzLS43OS0xMi41NyAxMC40Ny0xLjgzIDYuODEuNTIgMTMuMzUgNi4wMiAxNC42NiAzLjY3IDEuMDUgOC45LjUyIDExLjc4LTEwLjc0IDIuNjItOS45NC0xLjgzLTEzLjYxLTUuMjMtMTQuMzl6TTQ5MSAzMDAuNjVjMS44My41MiAzLjE0IDEuMDUgNS43NiAxLjgzIDAtMS44My41Mi04LjM4Ljc5LTEyLjA1LTEuMDUgMS4zMS01LjUgOC4xMi02LjU1IDkuOTV2LjI3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXb2R1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3OC40MTQgMzM5LjcwNkgxNDEuMUwxMTIuMTY2IDIyMy40NzVoLS40NzhMODMuMjI4IDMzOS43MDZINDUuMkwwIDE2OC45NDZIMzcuNTQ4TDY0LjU3NCAyODUuMTc3aC40NzhMOTQuNzA3IDE2OC45NDZoMzUuMTU3bDI5LjE3OCAxMTcuNjY3aC40NzlMMTg3LjUgMTY4Ljk0NmgzNi44MzF6TTI3MS40IDIxMi43MTNjMzguOTg0IDAgNjQuMSAyNS44MjggNjQuMSA2NS4yOTEgMCAzOS4yMjItMjUuMTExIDY1LjA1LTY0LjEgNjUuMDUtMzguNzQzIDAtNjMuODU1LTI1LjgyOC02My44NTUtNjUuMDVDMjA3LjU0NyAyMzguNTQxIDIzMi42NTkgMjEyLjcxMyAyNzEuNCAyMTIuNzEzem0wIDEwNC43NTNjMjMuMiAwIDMwLjEzMy0xOS44NTIgMzAuMTMzLTM5LjQ2MiAwLTE5Ljg1Mi02LjkzNC0zOS43LTMwLjEzMy0zOS43LTI3LjcgMC0yOS44OTQgMTkuODUtMjkuODk0IDM5LjdDMjQxLjUwOCAyOTcuNjE0IDI0OC40NDMgMzE3LjQ2NiAyNzEuNCAzMTcuNDY2ek00MzUuMDg0IDMyMy45MjJoLS40NzhjLTcuODkzIDEzLjM5Mi0yMS43NjUgMTkuMTMyLTM3LjU0OCAxOS4xMzItMzcuMzEgMC01NS40ODUtMzIuMDQ1LTU1LjQ4NS02Ni4yNDYgMC0zMy4yNDMgMTguNDE1LTY0LjA5NSA1NC43NjctNjQuMDk1IDE0LjU4OSAwIDI4LjkzOCA2LjIxOCAzNi44MzEgMTguNDE2aC4yNFYxNjguOTQ2aDMzLjk2djE3MC43Nkg0MzUuMDg0ek00MDUuNDI4IDIzOC4zYy0yMi4yNCAwLTI5Ljg5NCAxOS4xMzQtMjkuODk0IDM5LjQ2MyAwIDE5LjM3MSA4Ljg0OCAzOS43IDI5Ljg5NCAzOS43IDIyLjQ4MiAwIDI5LjE3OC0xOS42MTMgMjkuMTc4LTM5Ljk0QzQzNC42MDYgMjU3LjQzNiA0MjcuNDMyIDIzOC4zIDQwNS40MjggMjM4LjN6TTU5Mi45NiAzMzkuNzA2SDU2MC42NzNWMzIyLjQ4N2gtLjcxOGMtOC42MDkgMTMuODctMjMuNDM2IDIwLjU2Ny0zNy43ODYgMjAuNTY3LTM2LjExMyAwLTQ1LjItMjAuMzI4LTQ1LjItNTAuOTQxVjIxNi4wNjFoMzMuOTU5VjI4NS45YzAgMjAuMzI5IDUuOTc5IDMwLjM3MiAyMS43NjUgMzAuMzcyIDE4LjQxNSAwIDI2LjMwNi0xMC4yODMgMjYuMzA2LTM1LjM5M1YyMTYuMDYxSDU5Mi45NnpNNjAyLjQ1MyAzMDIuODc2SDY0MHYzNi44M0g2MDIuNDUzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXb2xmUGFja0JhdHRhbGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjcuNzMgNDcxLjUzbDEwLjU2IDE1Ljg0IDUuMjgtMTIuMzIgNS4yOCA3VjUxMmMyMS4wNi03LjkyIDIxLjExLTY2Ljg2IDI1LjUxLTk3LjIxIDQuNjItMzEuODktLjg4LTkyLjgxIDgxLjM3LTE0OS4xMS04Ljg4LTIzLjYxLTEyLTQ5LjQzLTIuNjQtODAuMDVDNDIxIDE4OSA0NDcgMTk2LjIxIDQ1Ni40MyAyMzkuNzNsLTMwLjM1IDguMzZjMTEuMTUgMjMgMTcgNDYuNzYgMTMuMiA3Mi4xNEw0MTIgMzEzLjE4bC02LjE2IDMzLjQzLTE4LjQ3LTctOC44IDMzLjM5LTE5LjM1LTcgMjYuMzkgMjEuMTEgOC44LTI4LjE1TDQxOSAzNjQuMmw3LTM1LjYzIDI2LjM5IDE0LjUyYy4yNS0yMCA3LTU4LjA2LTguOC04NC40NWwyNi4zOSA1LjI4YzQtMjIuMDctMi4zOC0zOS4yMS03LjkyLTU2Ljc0bDIyLjQzIDkuNjhjLS40NC0yNS4wNy0yOS45NC01Ni43OS02MS41OC01OC41LTIwLjIyLTEuMDktNTYuNzQtMjUuMTctNTQuMS01MS45IDItMTkuODcgMTcuNDUtNDIuNjIgNDMuMTEtNDkuNy00NCAzNi41MS05LjY4IDY3LjMgNS4yOCA3My40NiA0LjQtMTEuNDQgMTcuNTQtNjkuMDggMC0xMzAuMi00MC4zOSAyMi44Ny04OS42NSA2NS4xLTkzLjIgMTQ3Ljc5bC01OCAzOC43MS0zLjUyIDkzLjI1TDM2OS43OCAyMjBsNyA3LTE3LjU5IDMuNTItNDQgMzguNzEtMTUuODQtNS4yOC0yOC4xIDQ5LjI1LTMuNTIgMTE5LjY0IDIxLjExIDE1Ljg0LTMyLjU1IDE1Ljg0LTMyLjU1LTE1Ljg0IDIxLjExLTE1Ljg0LTMuNTItMTE5LjY0LTI4LjE1LTQ5LjI2LTE1Ljg0IDUuMjgtNDQtMzguNzEtMTcuNTgtMy41MSA3LTcgMTA3LjMzIDU5LjgyLTMuNTItOTMuMjUtNTguMDYtMzguNzFDMTg1IDY1LjEgMTM1Ljc3IDIyLjg3IDk1LjMgMGMtMTcuNTQgNjEuMTItNC40IDExOC43NiAwIDEzMC4yIDE1LTYuMTYgNDkuMjYtMzYuOTUgNS4yOC03My40NiAyNS42NiA3LjA4IDQxLjE1IDI5LjgzIDQzLjExIDQ5LjcgMi42MyAyNi43NC0zMy44OCA1MC44MS01NC4xIDUxLjktMzEuNjUgMS43Mi02MS4xNSAzMy40NC02MS41OSA1OC41MWwyMi40My05LjY4Yy01LjU0IDE3LjUzLTExLjkxIDM0LjY3LTcuOTIgNTYuNzRsMjYuMzktNS4yOGMtMTUuNzYgMjYuMzktOS4wNSA2NC40My04LjggODQuNDVsMjYuMzktMTQuNTIgNyAzNS42MyAyNC42My01LjI4IDguOCAyOC4xNUwxNTMuMzUgMzY2IDEzNCAzNzNsLTguOC0zMy40My0xOC40NyA3LTYuMTYtMzMuNDMtMjcuMjcgN2MtMy44Mi0yNS4zOCAyLTQ5LjEgMTMuMi03Mi4xNGwtMzAuMzUtOC4zNmM5LjQtNDMuNTIgMzUuNDctNTAuNzcgNjMuMzQtNTQuMSA5LjM2IDMwLjYyIDYuMjQgNTYuNDUtMi42NCA4MC4wNSA4Mi4yNSA1Ni4zIDc2Ljc1IDExNy4yMyA4MS4zNyAxNDkuMTEgNC40IDMwLjM1IDQuNDUgODkuMjkgMjUuNTEgOTcuMjF2LTI5LjgzbDUuMjgtNyA1LjI4IDEyLjMyIDEwLjU2LTE1Ljg0IDExLjQ0IDIxLjExIDExLjQzLTIxLjF6bTc5LjE3LTk1TDMzMS4wNiAzNjZjNy40Ny00LjM2IDEzLjc2LTguNDIgMTkuMzUtMTIuMzItLjYgNy4yMi0uMjcgMTMuODQtMy41MSAyMi44NHptMjguMTUtNDkuMjZjLS40IDEwLjk0LS45IDIxLjY2LTEuNzYgMzEuNjctNy44NS0xLjg2LTE1LjU3LTMuOC0yMS4xMS03IDguMjQtNy45NCAxNS41NS0xNi4zMiAyMi44Ny0yNC42OHptMjQuNjMgNS4yOGMwLTEzLjQzLTIuMDUtMjQuMjEtNS4yOC0zMy40M2EyMzUgMjM1IDAgMCAxLTE4LjQ3IDI3LjI3em0zLjUyLTgwLjk0YzE5LjQ0IDEyLjgxIDI3LjggMzMuNjYgMjkuOTEgNTYuMy0xMi4zMi00LjUzLTI0LjYzLTkuMzEtMzYuOTUtMTAuNTYgNS4wNi0xMiA2LjY1LTI4LjE0IDctNDUuNzR6bS0xLjc2LTQ1Ljc0Yy44MSAxNC4zIDEuODQgMjguODIgMS43NiA0Mi4yMyAxOS4yMi04LjExIDI5Ljc4LTkuNzIgNDQtMTQuMDgtMTAuNjEtMTguOTYtMjcuMi0yNS41My00NS43Ni0yOC4xNnpNMTY1LjY4IDM3Ni41MkwxODEuNTIgMzY2Yy03LjQ3LTQuMzYtMTMuNzYtOC40Mi0xOS4zNS0xMi4zMi42IDcuMjYuMjcgMTMuODggMy41MSAyMi44OHptLTI4LjE1LTQ5LjI2Yy40IDEwLjk0LjkgMjEuNjYgMS43NiAzMS42NyA3Ljg1LTEuODYgMTUuNTctMy44IDIxLjExLTctOC4yNC03LjkzLTE1LjU1LTE2LjMxLTIyLjg3LTI0LjY3em0tMjQuNjQgNS4yOGMwLTEzLjQzIDItMjQuMjEgNS4yOC0zMy40M2EyMzUgMjM1IDAgMCAwIDE4LjQ3IDI3LjI3em0tMy41Mi04MC45NGMtMTkuNDQgMTIuODEtMjcuOCAzMy42Ni0yOS45MSA1Ni4zIDEyLjMyLTQuNTMgMjQuNjMtOS4zMSAzNy0xMC41Ni01LTEyLTYuNjUtMjguMTQtNy00NS43NHptMS43Ni00NS43NGMtLjgxIDE0LjMtMS44NCAyOC44Mi0xLjc2IDQyLjIzLTE5LjIyLTguMTEtMjkuNzgtOS43Mi00NC0xNC4wOCAxMC42My0xOC45NSAyNy4yMy0yNS41MiA0NS43Ni0yOC4xNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV29yZHByZXNzU2ltcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4zIDggOCAxMTkuMiA4IDI1NmMwIDEzNi43IDExMS4zIDI0OCAyNDggMjQ4czI0OC0xMTEuMyAyNDgtMjQ4QzUwNCAxMTkuMiAzOTIuNyA4IDI1NiA4ek0zMyAyNTZjMC0zMi4zIDYuOS02MyAxOS4zLTkwLjdsMTA2LjQgMjkxLjRDODQuMyA0MjAuNSAzMyAzNDQuMiAzMyAyNTZ6bTIyMyAyMjNjLTIxLjkgMC00My0zLjItNjMtOS4xbDY2LjktMTk0LjQgNjguNSAxODcuOGMuNSAxLjEgMSAyLjEgMS42IDMuMS0yMy4xIDguMS00OCAxMi42LTc0IDEyLjZ6bTMwLjctMzI3LjVjMTMuNC0uNyAyNS41LTIuMSAyNS41LTIuMSAxMi0xLjQgMTAuNi0xOS4xLTEuNC0xOC40IDAgMC0zNi4xIDIuOC01OS40IDIuOC0yMS45IDAtNTguNy0yLjgtNTguNy0yLjgtMTItLjctMTMuNCAxNy43LTEuNCAxOC40IDAgMCAxMS40IDEuNCAyMy40IDIuMWwzNC43IDk1LjJMMjAwLjYgMzkzbC04MS4yLTI0MS41YzEzLjQtLjcgMjUuNS0yLjEgMjUuNS0yLjEgMTItMS40IDEwLjYtMTkuMS0xLjQtMTguNCAwIDAtMzYuMSAyLjgtNTkuNCAyLjgtNC4yIDAtOS4xLS4xLTE0LjQtLjNDMTA5LjYgNzMgMTc4LjEgMzMgMjU2IDMzYzU4IDAgMTEwLjkgMjIuMiAxNTAuNiA1OC41LTEtLjEtMS45LS4yLTIuOS0uMi0yMS45IDAtMzcuNCAxOS4xLTM3LjQgMzkuNiAwIDE4LjQgMTAuNiAzMy45IDIxLjkgNTIuMyA4LjUgMTQuOCAxOC40IDMzLjkgMTguNCA2MS41IDAgMTkuMS03LjMgNDEuMi0xNyA3Mi4xbC0yMi4yIDc0LjMtODAuNy0yMzkuNnptODEuNCAyOTcuMmw2OC4xLTE5Ni45YzEyLjctMzEuOCAxNy01Ny4yIDE3LTc5LjkgMC04LjItLjUtMTUuOC0xLjUtMjIuOSAxNy40IDMxLjggMjcuMyA2OC4yIDI3LjMgMTA3IDAgODIuMy00NC42IDE1NC4xLTExMC45IDE5Mi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXb3JkcHJlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjEuNyAxNjkuNGwxMDEuNSAyNzhDOTIuMiA0MTMgNDMuMyAzNDAuMiA0My4zIDI1NmMwLTMwLjkgNi42LTYwLjEgMTguNC04Ni42em0zMzcuOSA3NS45YzAtMjYuMy05LjQtNDQuNS0xNy41LTU4LjctMTAuOC0xNy41LTIwLjktMzIuNC0yMC45LTQ5LjkgMC0xOS42IDE0LjgtMzcuOCAzNS43LTM3LjguOSAwIDEuOC4xIDIuOC4yLTM3LjktMzQuNy04OC4zLTU1LjktMTQzLjctNTUuOS03NC4zIDAtMTM5LjcgMzguMS0xNzcuOCA5NS45IDUgLjIgOS43LjMgMTMuNy4zIDIyLjIgMCA1Ni43LTIuNyA1Ni43LTIuNyAxMS41LS43IDEyLjggMTYuMiAxLjQgMTcuNSAwIDAtMTEuNSAxLjMtMjQuMyAybDc3LjUgMjMwLjRMMjQ5LjggMjQ3bC0zMy4xLTkwLjhjLTExLjUtLjctMjIuMy0yLTIyLjMtMi0xMS41LS43LTEwLjEtMTguMiAxLjMtMTcuNSAwIDAgMzUuMSAyLjcgNTYgMi43IDIyLjIgMCA1Ni43LTIuNyA1Ni43LTIuNyAxMS41LS43IDEyLjggMTYuMiAxLjQgMTcuNSAwIDAtMTEuNSAxLjMtMjQuMyAybDc2LjkgMjI4LjcgMjEuMi03MC45YzktMjkuNCAxNi01MC41IDE2LTY4Ljd6bS0xMzkuOSAyOS4zbC02My44IDE4NS41YzE5LjEgNS42IDM5LjIgOC43IDYwLjEgOC43IDI0LjggMCA0OC41LTQuMyA3MC42LTEyLjEtLjYtLjktMS4xLTEuOS0xLjUtMi45bC02NS40LTE3OS4yem0xODMtMTIwLjdjLjkgNi44IDEuNCAxNCAxLjQgMjEuOSAwIDIxLjYtNCA0NS44LTE2LjIgNzYuMmwtNjUgMTg3LjlDNDI2LjIgNDAzIDQ2OC43IDMzNC41IDQ2OC43IDI1NmMwLTM3LTkuNC03MS44LTI2LTEwMi4xek01MDQgMjU2YzAgMTM2LjgtMTExLjMgMjQ4LTI0OCAyNDhDMTE5LjIgNTA0IDggMzkyLjcgOCAyNTYgOCAxMTkuMiAxMTkuMiA4IDI1NiA4YzEzNi43IDAgMjQ4IDExMS4yIDI0OCAyNDh6bS0xMS40IDBjMC0xMzAuNS0xMDYuMi0yMzYuNi0yMzYuNi0yMzYuNkMxMjUuNSAxOS40IDE5LjQgMTI1LjUgMTkuNCAyNTZTMTI1LjYgNDkyLjYgMjU2IDQ5Mi42YzEzMC41IDAgMjM2LjYtMTA2LjEgMjM2LjYtMjM2LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdwYmVnaW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDYyLjc5OSAzMjIuMzc0QzUxOS4wMSAzODYuNjgyIDQ2Ni45NjEgNDgwIDM3MC45NDQgNDgwYy0zOS42MDIgMC03OC44MjQtMTcuNjg3LTEwMC4xNDItNTAuMDQtNi44ODcuMzU2LTIyLjcwMi4zNTYtMjkuNTkgMEMyMTkuODQ4IDQ2Mi4zODEgMTgwLjU4OCA0ODAgMTQxLjA2OSA0ODBjLTk1LjQ5IDAtMTQ4LjM0OC05Mi45OTYtOTEuODU1LTE1Ny42MjZDLTI5LjkyNSAxOTAuNTIzIDgwLjQ3OSAzMiAyNTYuMDA2IDMyYzE3NS42MzIgMCAyODUuODcgMTU4LjYyNiAyMDYuNzkzIDI5MC4zNzR6bS0zMzkuNjQ3LTgyLjk3Mmg0MS41Mjl2LTU4LjA3NWgtNDEuNTI5djU4LjA3NXptMjE3LjE4IDg2LjA3MnYtMjMuODM5Yy02MC41MDYgMjAuOTE1LTEzMi4zNTUgOS4xOTgtMTg3LjU4OS0zMy45NzFsLjI0NiAyNC44OTdjNTEuMTAxIDQ2LjM2NyAxMzEuNzQ2IDU3Ljg3NSAxODcuMzQzIDMyLjkxM3ptLTE1MC43NTMtODYuMDcyaDE2Ni4wNTh2LTU4LjA3NUgxODkuNTc5djU4LjA3NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV3BleHBsb3JlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMjU2YzAgMTQxLjItMTE0LjcgMjU2LTI1NiAyNTZDMTE0LjggNTEyIDAgMzk3LjMgMCAyNTZTMTE0LjcgMCAyNTYgMHMyNTYgMTE0LjcgMjU2IDI1NnptLTMyIDBjMC0xMjMuMi0xMDAuMy0yMjQtMjI0LTIyNEMxMzIuNSAzMiAzMiAxMzIuNSAzMiAyNTZzMTAwLjUgMjI0IDIyNCAyMjQgMjI0LTEwMC41IDIyNC0yMjR6TTE2MC45IDEyNC42bDg2LjkgMzcuMS0zNy4xIDg2LjktODYuOS0zNy4xIDM3LjEtODYuOXptMTEwIDE2OS4xbDQ2LjYgOTRoLTE0LjZsLTUwLTEwMC00OC45IDEwMGgtMTRsNTEuMS0xMDYuOS0yMi4zLTkuNCA2LTE0IDY4LjYgMjkuMS02IDE0LjMtMTYuNS03LjF6bS0xMS44LTExNi4zbDY4LjYgMjkuNC0yOS40IDY4LjNMMjMwIDI0NmwyOS4xLTY4LjZ6bTgwLjMgNDIuOWw1NC42IDIzLjEtMjMuNCA1NC4zLTU0LjMtMjMuMSAyMy4xLTU0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdwZm9ybXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDc1LjJ2MzYxLjdjMCAyNC4zLTE5IDQzLjItNDMuMiA0My4ySDQzLjJDMTkuMyA0ODAgMCA0NjEuNCAwIDQzNi44Vjc1LjJDMCA1MS4xIDE4LjggMzIgNDMuMiAzMmgzNjEuN2MyNCAwIDQzLjEgMTguOCA0My4xIDQzLjJ6bS0zNy4zIDM2MS42Vjc1LjJjMC0zLTIuNi01LjgtNS44LTUuOGgtOS4zTDI4NS4zIDE0NCAyMjQgOTQuMSAxNjIuOCAxNDQgNTIuNSA2OS4zaC05LjNjLTMuMiAwLTUuOCAyLjgtNS44IDUuOHYzNjEuN2MwIDMgMi42IDUuOCA1LjggNS44aDM2MS43YzMuMi4xIDUuOC0yLjcgNS44LTUuOHpNMTUwLjIgMTg2djM3SDc2Ljd2LTM3aDczLjV6bTAgNzQuNHYzNy4zSDc2Ljd2LTM3LjNoNzMuNXptMTEuMS0xNDcuM2w1NC00My43SDk2LjhsNjQuNSA0My43em0yMTAgNzIuOXYzN2gtMTk2di0zN2gxOTZ6bTAgNzQuNHYzNy4zaC0xOTZ2LTM3LjNoMTk2em0tODQuNi0xNDcuM2w2NC41LTQzLjdIMjMyLjhsNTMuOSA0My43ek0zNzEuMyAzMzV2MzcuM2gtOTkuNFYzMzVoOTkuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV3ByZXNzciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEuMDMgOCAwIDExOS4wMyAwIDI1NnMxMTEuMDMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMyAyNDgtMjQ4UzM4NC45NyA4IDI0OCA4em0xNzEuMzMgMTU4LjZjLTE1LjE4IDM0LjUxLTMwLjM3IDY5LjAyLTQ1LjYzIDEwMy41LTIuNDQgNS41MS02Ljg5IDguMjQtMTIuOTcgOC4yNC0yMy4wMi0uMDEtNDYuMDMuMDYtNjkuMDUtLjA1LTUuMTItLjAzLTguMjUgMS44OS0xMC4zNCA2LjcyLTEwLjE5IDIzLjU2LTIwLjYzIDQ3LTMwLjk1IDcwLjUtMS41NCAzLjUxLTQuMDYgNS4yOS03LjkyIDUuMjktNDUuOTQtLjAxLTkxLjg3LS4wMi0xMzcuODEgMC0zLjEzIDAtNS42My0xLjE1LTcuNzItMy40NS0xMS4yMS0xMi4zMy0yMi40Ni0yNC42My0zMy42OC0zNi45NC0yLjY5LTIuOTUtMi43OS02LjE4LTEuMjEtOS43MyA4LjY2LTE5LjU0IDE3LjI3LTM5LjEgMjUuODktNTguNjYgMTIuOTMtMjkuMzUgMjUuODktNTguNjkgMzguNzUtODguMDggMS43LTMuODggNC4yOC01LjY4IDguNTQtNS42NSAxNC4yNC4xIDI4LjQ4LjAyIDQyLjcyLjA1IDYuMjQuMDEgOS4yIDQuODQgNi42NiAxMC41OS0xMy42IDMwLjc3LTI3LjE3IDYxLjU1LTQwLjc0IDkyLjMzLTUuNzIgMTIuOTktMTEuNDIgMjUuOTktMTcuMDkgMzktMy45MSA4Ljk1IDcuMDggMTEuOTcgMTAuOTUgNS42LjIzLS4zNy0xLjQyIDQuMTggMzAuMDEtNjcuNjkgMS4zNi0zLjEgMy40MS00LjQgNi43Ny00LjM5IDE1LjIxLjA4IDMwLjQzLjAyIDQ1LjY0LjA0IDUuNTYuMDEgNy45MSAzLjY0IDUuNjYgOC43NS04LjMzIDE4Ljk2LTE2LjcxIDM3LjktMjQuOTggNTYuODktNC45OCAxMS40MyA4LjA4IDEyLjQ5IDExLjI4IDUuMzMuMDQtLjA4IDI3Ljg5LTYzLjMzIDMyLjE5LTczLjE2IDIuMDItNC42MSA1LjQ0LTYuNTEgMTAuMzUtNi41IDI2LjQzLjA1IDUyLjg2IDAgNzkuMjkuMDUgMTIuNDQuMDIgMTMuOTMtMTMuNjUgMy45LTEzLjY0LTI1LjI2LjAzLTUwLjUyLjAyLTc1Ljc4LjAyLTYuMjcgMC03Ljg0LTIuNDctNS4yNy04LjI3IDUuNzgtMTMuMDYgMTEuNTktMjYuMTEgMTcuMy0zOS4yMSAxLjczLTMuOTYgNC41Mi01Ljc5IDguODQtNS43OCAyMy4wOS4wNiAyNS45OC4wMiAxMzAuNzguMDMgNi4wOC0uMDEgOC4wMyAyLjc5IDUuNjIgOC4yN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWGJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjkuOSAzMTguMmM0NC4zIDU0LjMgNjQuNyA5OC44IDU0LjQgMTE4LjctNy45IDE1LjEtNTYuNyA0NC42LTkyLjYgNTUuOS0yOS42IDkuMy02OC40IDEzLjMtMTAwLjQgMTAuMi0zOC4yLTMuNy03Ni45LTE3LjQtMTEwLjEtMzlDOTMuMyA0NDUuOCA4NyA0MzguMyA4NyA0MjMuNGMwLTI5LjkgMzIuOS04Mi4zIDg5LjItMTQyLjEgMzItMzMuOSA3Ni41LTczLjcgODEuNC03Mi42IDkuNCAyLjEgODQuMyA3NS4xIDExMi4zIDEwOS41ek0xODguNiAxNDMuOGMtMjkuNy0yNi45LTU4LjEtNTMuOS04Ni40LTYzLjQtMTUuMi01LjEtMTYuMy00LjgtMjguNyA4LjEtMjkuMiAzMC40LTUzLjUgNzkuNy02MC4zIDEyMi40LTUuNCAzNC4yLTYuMSA0My44LTQuMiA2MC41IDUuNiA1MC41IDE3LjMgODUuNCA0MC41IDEyMC45IDkuNSAxNC42IDEyLjEgMTcuMyA5LjMgOS45LTQuMi0xMS0uMy0zNy41IDkuNS02NCAxNC4zLTM5IDUzLjktMTEyLjkgMTIwLjMtMTk0LjR6bTMxMS42IDYzLjVDNDgzLjMgMTI3LjMgNDMyLjcgNzcgNDI1LjYgNzdjLTcuMyAwLTI0LjIgNi41LTM2IDEzLjktMjMuMyAxNC41LTQxIDMxLjQtNjQuMyA1Mi44QzM2Ny43IDE5NyA0MjcuNSAyODMuMSA0NDguMiAzNDZjNi44IDIwLjcgOS43IDQxLjEgNy40IDUyLjMtMS43IDguNS0xLjcgOC41IDEuNCA0LjYgNi4xLTcuNyAxOS45LTMxLjMgMjUuNC00My41IDcuNC0xNi4yIDE1LTQwLjIgMTguNi01OC43IDQuMy0yMi41IDMuOS03MC44LS44LTkzLjR6TTE0MS4zIDQzQzE4OSA0MC41IDI1MSA3Ny41IDI1NS42IDc4LjRjLjcuMSAxMC40LTQuMiAyMS42LTkuNyA2My45LTMxLjEgOTQtMjUuOCAxMDcuNC0yNS4yLTYzLjktMzkuMy0xNTIuNy01MC0yMzMuOS0xMS43LTIzLjQgMTEuMS0yNCAxMS45LTkuNCAxMS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYaW5nU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE0MC40IDMyMC4ySDkzLjhjLTUuNSAwLTguNy01LjMtNi0xMC4zbDQ5LjMtODYuN2MuMSAwIC4xLS4xIDAtLjJsLTMxLjQtNTRjLTMtNS42LjItMTAuMSA2LTEwLjFoNDYuNmM1LjIgMCA5LjUgMi45IDEyLjkgOC43bDMxLjkgNTUuM2MtMS4zIDIuMy0xOCAzMS43LTUwLjEgODguMi0zLjUgNi4yLTcuNyA5LjEtMTIuNiA5LjF6bTIxOS43LTIxNC4xTDI1Ny4zIDI4Ni44di4ybDY1LjUgMTE5YzIuOCA1LjEuMSAxMC4xLTYgMTAuMWgtNDYuNmMtNS41IDAtOS43LTIuOS0xMi45LTguN2wtNjYtMTIwLjNjMi4zLTQuMSAzNi44LTY0LjkgMTAzLjQtMTgyLjMgMy4zLTUuOCA3LjQtOC43IDEyLjUtOC43aDQ2LjljNS43LS4xIDguOCA0LjcgNiAxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjIuNyAyMTBjLTEuOCAzLjMtMjUuMiA0NC40LTcwLjEgMTIzLjUtNC45IDguMy0xMC44IDEyLjUtMTcuNyAxMi41SDkuOGMtNy43IDAtMTIuMS03LjUtOC41LTE0LjRsNjktMTIxLjNjLjIgMCAuMi0uMSAwLS4zbC00My45LTc1LjZjLTQuMy03LjguMy0xNC4xIDguNS0xNC4xSDEwMGM3LjMgMCAxMy4zIDQuMSAxOCAxMi4ybDQ0LjcgNzcuNXpNMzgyLjYgNDYuMWwtMTQ0IDI1M3YuM0wzMzAuMiA0NjZjMy45IDcuMS4yIDE0LjEtOC41IDE0LjFoLTY1LjJjLTcuNiAwLTEzLjYtNC0xOC0xMi4ybC05Mi40LTE2OC41YzMuMy01LjggNTEuNS05MC44IDE0NC44LTI1NS4yIDQuNi04LjEgMTAuNC0xMi4yIDE3LjUtMTIuMmg2NS43YzggMCAxMi4zIDYuNyA4LjUgMTQuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWUNvbWJpbmF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDMydjQ0OEgwVjMyaDQ0OHpNMjM2IDI4Ny41TDMxMy41IDE0MmgtMzIuN0wyMzUgMjMzYy00LjcgOS4zLTkgMTguMy0xMi44IDI2LjhMMjEwIDIzM2wtNDUuMi05MWgtMzVsNzYuNyAxNDMuOHY5NC41SDIzNnYtOTIuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWFob28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIzLjY5LDE0MS4wNiwxNjcsMjg0LjIzLDExMSwxNDEuMDZIMTQuOTNMMTIwLjc2LDM5MC4xOSw4Mi4xOSw0ODBoOTQuMTdMMzE3LjI3LDE0MS4wNlptMTA1LjQsMTM1Ljc5YTU4LjIyLDU4LjIyLDAsMSwwLDU4LjIyLDU4LjIyQTU4LjIyLDU4LjIyLDAsMCwwLDMyOS4wOSwyNzYuODVaTTM5NC42NSwzMmwtOTMsMjIzLjQ3SDQwNi40NEw0OTkuMDcsMzJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlhbW1lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjEuNzggMTUyLjE3QTIzLjA2IDIzLjA2IDAgMCAwIDQwMC45IDExMmMtLjgzLjQzLTEuNzEuOS0yLjYzIDEuNC0xNS4yNSA4LjQtMTE4LjMzIDgwLjYyLTEwNi42OSA4OC43N3M4Mi4wNC0yMy42MSAxMzAuMi01MHptMCAyMTcuMTdjLTQ4LjE2LTI2LjM4LTExOC42NC01OC4xLTEzMC4yLTUwczkxLjQyIDgwLjM1IDEwNi42OSA4OC43NGMuOTIuNTEgMS44IDEgMi42MyAxLjQxYTIzLjA3IDIzLjA3IDAgMCAwIDIwLjg4LTQwLjE1ek00NjQuMjEgMjM3Yy0uOTUgMC0xLjk1LS4wNi0zLS4wNi0xNy40IDAtMTQyLjUyIDEzLjc2LTEzNi4yNCAyNi41MXM4My4zIDE4Ljc0IDEzOC4yMSAxOC43NmEyMyAyMyAwIDAgMCAxLTQ1LjIxek0zMSA5Ni42NWEyNC44OCAyNC44OCAwIDAgMSA0Ni4xNC0xOC40bDgxIDIwNS4wNmgxLjIxbDc3LTIwMy41M2EyMy41MiAyMy41MiAwIDAgMSA0NC40NSAxNS4yN0wxNzEuMiAzNjguNDRDMTUyLjY1IDQxNS42NiAxMzQuMDggNDQ4IDc3LjkxIDQ0OGExMzkuNjcgMTM5LjY3IDAgMCAxLTIzLjgxLTEuOTUgMjEuMzEgMjEuMzEgMCAwIDEgNi45LTQxLjc3Yy42Ni4wNiAxMC45MS42NiAxMy44Ni42NiAzMC40NyAwIDQzLjc0LTE4Ljk0IDU4LjA3LTU5LjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZYW5kZXhJbnRlcm5hdGlvbmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOS41IDUxMlYzNDUuOUwxOC41IDQ4aDU1LjhsODEuOCAyMjkuN0wyNTAuMiAwaDUxLjNMMTgwLjggMzQ3LjhWNTEyaC01MS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZYW5kZXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUzLjEgMzE1LjhMNjUuNyA1MTJIMmw5Ni0yMDkuOGMtNDUuMS0yMi45LTc1LjItNjQuNC03NS4yLTE0MS4xQzIyLjcgNTMuNyA5MC44IDAgMTcxLjcgMEgyNTR2NTEyaC01NS4xVjMxNS44aC00NS44em00NS44LTI2OS4zaC0yOS40Yy00NC40IDAtODcuNCAyOS40LTg3LjQgMTE0LjYgMCA4Mi4zIDM5LjQgMTA4LjggODcuNCAxMDguOGgyOS40VjQ2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlhcm4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkzLjkgMzQ1LjJjLTM5IDkuMy00OC40IDMyLjEtMTA0IDQ3LjQgMCAwLTIuNyA0LTEwLjQgNS44LTEzLjQgMy4zLTYzLjkgNi02OC41IDYuMS0xMi40LjEtMTkuOS0zLjItMjItOC4yLTYuNC0xNS4zIDkuMi0yMiA5LjItMjItOC4xLTUtOS05LjktOS44LTguMS0yLjQgNS44LTMuNiAyMC4xLTEwLjEgMjYuNS04LjggOC45LTI1LjUgNS45LTM1LjMuOC0xMC44LTUuNy44LTE5LjIuOC0xOS4ycy01LjggMy40LTEwLjUtMy42Yy02LTkuMy0xNy4xLTM3LjMgMTEuNS02Mi0xLjMtMTAuMS00LjYtNTMuNyA0MC42LTg1LjYgMCAwLTIwLjYtMjIuOC0xMi45LTQzLjMgNS0xMy40IDctMTMuMyA4LjYtMTMuOSA1LjctMi4yIDExLjMtNC42IDE1LjQtOS4xIDIwLjYtMjIuMiA0Ni44LTE4IDQ2LjgtMThzMTIuNC0zNy44IDIzLjktMzAuNGMzLjUgMi4zIDE2LjMgMzAuNiAxNi4zIDMwLjZzMTMuNi03LjkgMTUuMS01YzguMiAxNiA5LjIgNDYuNSA1LjYgNjUuMS02LjEgMzAuNi0yMS40IDQ3LjEtMjcuNiA1Ny41LTEuNCAyLjQgMTYuNSAxMCAyNy44IDQxLjMgMTAuNCAyOC42IDEuMSA1Mi43IDIuOCA1NS4zLjggMS40IDEzLjcuOCAzNi40LTEzLjIgMTIuOC03LjkgMjguMS0xNi45IDQ1LjQtMTcgMTYuNy0uNSAxNy42IDE5LjIgNC45IDIyLjJ6TTQ5NiAyNTZjMCAxMzYuOS0xMTEuMSAyNDgtMjQ4IDI0OFMwIDM5Mi45IDAgMjU2IDExMS4xIDggMjQ4IDhzMjQ4IDExMS4xIDI0OCAyNDh6bS03OS4zIDc1LjJjLTEuNy0xMy42LTEzLjItMjMtMjgtMjIuOC0yMiAuMy00MC41IDExLjctNTIuOCAxOS4yLTQuOCAzLTguOSA1LjItMTIuNCA2LjggMy4xLTQ0LjUtMjIuNS03My4xLTI4LjctNzkuNCA3LjgtMTEuMyAxOC40LTI3LjggMjMuNC01My4yIDQuMy0yMS43IDMtNTUuNS02LjktNzQuNS0xLjYtMy4xLTcuNC0xMS4yLTIxLTcuNC05LjctMjAtMTMtMjIuMS0xNS42LTIzLjgtMS4xLS43LTIzLjYtMTYuNC00MS40IDI4LTEyLjIuOS0zMS4zIDUuMy00Ny41IDIyLjgtMiAyLjItNS45IDMuOC0xMC4xIDUuNGguMWMtOC40IDMtMTIuMyA5LjktMTYuOSAyMi4zLTYuNSAxNy40LjIgMzQuNiA2LjggNDUuNy0xNy44IDE1LjktMzcgMzkuOC0zNS43IDgyLjUtMzQgMzYtMTEuOCA3My01LjYgNzkuNi0xLjYgMTEuMSAzLjcgMTkuNCAxMiAyMy44IDEyLjYgNi43IDMwLjMgOS42IDQzLjkgMi44IDQuOSA1LjIgMTMuOCAxMC4xIDMwIDEwLjEgNi44IDAgNTgtMi45IDcyLjYtNi41IDYuOC0xLjYgMTEuNS00LjUgMTQuNi03LjEgOS44LTMuMSAzNi44LTEyLjMgNjIuMi0yOC43IDE4LTExLjcgMjQuMi0xNC4yIDM3LjYtMTcuNCAxMi45LTMuMiAyMS0xNS4xIDE5LjQtMjguMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWVscCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Mi45IDI0MC4zMmw5OS42MiA0OC42MWMxOS4yIDkuNCAxNi4yIDM3LjUxLTQuNSA0Mi43MUwzMC41IDM1OC40NWEyMi43OSAyMi43OSAwIDAgMS0yOC4yMS0xOS42IDE5Ny4xNiAxOTcuMTYgMCAwIDEgOS04NS4zMiAyMi44IDIyLjggMCAwIDEgMzEuNjEtMTMuMjF6bTQ0IDIzOS4yNWExOTkuNDUgMTk5LjQ1IDAgMCAwIDc5LjQyIDMyLjExQTIyLjc4IDIyLjc4IDAgMCAwIDE5Mi45NCA0OTBsMy45LTExMC44MmMuNy0yMS4zLTI1LjUtMzEuOTEtMzkuODEtMTYuMWwtNzQuMjEgODIuNGEyMi44MiAyMi44MiAwIDAgMCA0LjA5IDM0LjA5em0xNDUuMzQtMTA5LjkybDU4LjgxIDk0YTIyLjkzIDIyLjkzIDAgMCAwIDM0IDUuNSAxOTguMzYgMTk4LjM2IDAgMCAwIDUyLjcxLTY3LjYxQTIzIDIzIDAgMCAwIDM2NC4xNyAzNzBsLTEwNS40Mi0zNC4yNmMtMjAuMzEtNi41LTM3LjgxIDE1LjgtMjYuNTEgMzMuOTF6bTE0OC4zMy0xMzIuMjNhMTk3LjQ0IDE5Ny40NCAwIDAgMC01MC40MS02OS4zMSAyMi44NSAyMi44NSAwIDAgMC0zNCA0LjRsLTYyIDkxLjkyYy0xMS45IDE3LjcgNC43IDQwLjYxIDI1LjIgMzQuNzFMMzY2IDI2OC42M2EyMyAyMyAwIDAgMCAxNC42MS0zMS4yMXpNNjIuMTEgMzAuMThhMjIuODYgMjIuODYgMCAwIDAtOS45IDMybDEwNC4xMiAxODAuNDRjMTEuNyAyMC4yIDQyLjYxIDExLjkgNDIuNjEtMTEuNFYyMi44OGEyMi42NyAyMi42NyAwIDAgMC0yNC41LTIyLjggMzIwLjM3IDMyMC4zNyAwIDAgMC0xMTIuMzMgMzAuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWW9hc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTEuMyA3NmgxODZsLTcgMTguOWgtMTc5Yy0zOS43IDAtNzEuOSAzMS42LTcxLjkgNzAuM3YyMDUuNGMwIDM1LjQgMjQuOSA3MC4zIDg0IDcwLjNWNDYwSDkxLjNDNDEuMiA0NjAgMCA0MTkuOCAwIDM3MC41VjE2NS4yQzAgMTE1LjkgNDAuNyA3NiA5MS4zIDc2em0yMjkuMS01Nmg2Ni41QzI0My4xIDM5OC4xIDI0MS4yIDQxOC45IDIwMi4yIDQ1OS4zYy0yMC44IDIxLjYtNDkuMyAzMS43LTc4LjMgMzIuN3YtNTEuMWM0OS4yLTcuNyA2NC42LTQ5LjkgNjQuNi03NS4zIDAtMjAuMS42LTEyLjYtODIuMS0yMjMuMmg2MS40TDIxOC4yIDI5OSAzMjAuNCAyMHpNNDQ4IDE2MS41VjQ2MEgyMzRjNi42LTkuNiAxMC43LTE2LjMgMTIuMS0xOS40aDE4Mi41VjE2MS41YzAtMzIuNS0xNy4xLTUxLjktNDguMi02Mi45bDYuNy0xNy42YzQxLjcgMTMuNiA2MC45IDQzLjEgNjAuOSA4MC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZb3V0dWJlU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni44IDIwMi4xbDk1LjIgNTQuMS05NS4yIDU0LjFWMjAyLjF6TTQ0OCA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHptLTQyIDE3Ni4zczAtNTkuNi03LjYtODguMmMtNC4yLTE1LjgtMTYuNS0yOC4yLTMyLjItMzIuNEMzMzcuOSAxMjggMjI0IDEyOCAyMjQgMTI4cy0xMTMuOSAwLTE0Mi4yIDcuN2MtMTUuNyA0LjItMjggMTYuNi0zMi4yIDMyLjQtNy42IDI4LjUtNy42IDg4LjItNy42IDg4LjJzMCA1OS42IDcuNiA4OC4yYzQuMiAxNS44IDE2LjUgMjcuNyAzMi4yIDMxLjlDMTEwLjEgMzg0IDIyNCAzODQgMjI0IDM4NHMxMTMuOSAwIDE0Mi4yLTcuN2MxNS43LTQuMiAyOC0xNi4xIDMyLjItMzEuOSA3LjYtMjguNSA3LjYtODguMSA3LjYtODguMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWW91dHViZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDkuNjU1IDEyNC4wODNjLTYuMjgxLTIzLjY1LTI0Ljc4Ny00Mi4yNzYtNDguMjg0LTQ4LjU5N0M0NTguNzgxIDY0IDI4OCA2NCAyODggNjRTMTE3LjIyIDY0IDc0LjYyOSA3NS40ODZjLTIzLjQ5NyA2LjMyMi00Mi4wMDMgMjQuOTQ3LTQ4LjI4NCA0OC41OTctMTEuNDEyIDQyLjg2Ny0xMS40MTIgMTMyLjMwNS0xMS40MTIgMTMyLjMwNXMwIDg5LjQzOCAxMS40MTIgMTMyLjMwNWM2LjI4MSAyMy42NSAyNC43ODcgNDEuNSA0OC4yODQgNDcuODIxQzExNy4yMiA0NDggMjg4IDQ0OCAyODggNDQ4czE3MC43OCAwIDIxMy4zNzEtMTEuNDg2YzIzLjQ5Ny02LjMyMSA0Mi4wMDMtMjQuMTcxIDQ4LjI4NC00Ny44MjEgMTEuNDEyLTQyLjg2NyAxMS40MTItMTMyLjMwNSAxMS40MTItMTMyLjMwNXMwLTg5LjQzOC0xMS40MTItMTMyLjMwNXptLTMxNy41MSAyMTMuNTA4VjE3NS4xODVsMTQyLjczOSA4MS4yMDUtMTQyLjczOSA4MS4yMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVpoaWh1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3MC41NCAxNDguMTN2MjE3LjU0bDIzLjQzLjAxIDcuNzEgMjYuMzcgNDIuMDEtMjYuMzdoNDkuNTNWMTQ4LjEzSDE3MC41NHptOTcuNzUgMTkzLjkzaC0yNy45NGwtMjcuOSAxNy41MS01LjA4LTE3LjQ3LTExLjktLjA0VjE3MS43NWg3Mi44MnYxNzAuMzF6bS0xMTguNDYtOTQuMzlIOTcuNWMxLjc0LTI3LjEgMi4yLTUxLjU5IDIuMi03My40Nmg1MS4xNnMxLjk3LTIyLjU2LTguNTgtMjIuMzFoLTg4LjVjMy40OS0xMy4xMiA3Ljg3LTI2LjY2IDEzLjEyLTQwLjY3IDAgMC0yNC4wNyAwLTMyLjI3IDIxLjU3LTMuMzkgOC45LTEzLjIxIDQzLjE0LTMwLjcgNzguMTIgNS44OS0uNjQgMjUuMzctMS4xOCAzNi44NC0yMi4yMSAyLjExLTUuODkgMi41MS02LjY2IDUuMTQtMTQuNTNoMjguODdjMCAxMC41LTEuMiA2Ni44OC0xLjY4IDczLjQ0SDIwLjgzYy0xMS43NCAwLTE1LjU2IDIzLjYyLTE1LjU2IDIzLjYyaDY1LjU4QzY2LjQ1IDMyMS4xIDQyLjgzIDM2My4xMiAwIDM5Ni4zNGMyMC40OSA1Ljg1IDQwLjkxLS45MyA1MS05LjkgMCAwIDIyLjk4LTIwLjkgMzUuNTktNjkuMjVsNTMuOTYgNjQuOTRzNy45MS0yNi44OS0xLjI0LTM5Ljk5Yy03LjU4LTguOTItMjguMDYtMzMuMDYtMzYuNzktNDEuODFMODcuOSAzMTEuOTVjNC4zNi0xMy45OCA2Ljk5LTI3LjU1IDcuODctNDAuNjdoNjEuNjVzLS4wOS0yMy42Mi03LjU5LTIzLjYydi4wMXptNDEyLjAyLTEuNmMyMC44My0yNS42NCA0NC45OC01OC41NyA0NC45OC01OC41N3MtMTguNjUtMTQuOC0yNy4zOC00LjA2Yy02IDguMTUtMzYuODMgNDguMi0zNi44MyA0OC4ybDE5LjIzIDE0LjQzem0tMTUwLjA5LTU5LjA5Yy05LjAxLTguMjUtMjUuOTEgMi4xMy0yNS45MSAyLjEzczM5LjUyIDU1LjA0IDQxLjEyIDU3LjQ1bDE5LjQ2LTEzLjczcy0yNS42Ny0zNy42MS0zNC42Ni00NS44NmgtLjAxek02NDAgMjU4LjM1Yy0xOS43OCAwLTEzMC45MS45My0xMzEuMDYuOTN2LTEwMWM0LjgxIDAgMTIuNDItLjQgMjIuODUtMS4yIDQwLjg4LTIuNDEgNzAuMTMtNCA4Ny43Ny00LjgxIDAgMCAxMi4yMi0yNy4xOS0uNTktMzMuNDQtMy4wNy0xLjE4LTIzLjE3IDQuNTgtMjMuMTcgNC41OHMtMTY1LjIyIDE2LjQ5LTIzMi4zNiAxOC4wNWMxLjYgOC44MiA3LjYyIDE3LjA4IDE1Ljc4IDE5LjU1IDEzLjMxIDMuNDggMjIuNjkgMS43IDQ5LjE1Ljg5IDI0LjgzLTEuNiA0My42OC0yLjQzIDU2LjUxLTIuNDN2OTkuODFIMzUxLjQxczIuODIgMjIuMzEgMjUuNTEgMjIuODVoMTA3Ljk0djcwLjkyYzAgMTMuOTctMTEuMTkgMjEuOTktMjQuNDggMjEuMTItMTQuMDguMTEtMjYuMDgtMS4xNS00MS42OS0xLjgxIDEuOTkgMy45NyA2LjMzIDE0LjM5IDE5LjMxIDIxLjg0IDkuODggNC44MSAxNi4xNyA2LjU3IDI2LjAyIDYuNTcgMjkuNTYgMCA0NS42Ny0xNy4yOCA0NC44OS00NS4zMXYtNzMuMzJoMTIyLjM2YzkuNjggMCA4LjctMjMuNzggOC43LTIzLjc4bC4wMy0uMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ny41MiAyNzJoMzYuOTZMMTc2IDIxOC43OCAxNTcuNTIgMjcyek0zNTIgMjU2Yy0xMy4yMyAwLTI0IDEwLjc3LTI0IDI0czEwLjc3IDI0IDI0IDI0IDI0LTEwLjc3IDI0LTI0LTEwLjc3LTI0LTI0LTI0ek00NjQgNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2Mjg4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTI1MC41OCAzNTJoLTE2Ljk0Yy02LjgxIDAtMTIuODgtNC4zMi0xNS4xMi0xMC43NUwyMTEuMTUgMzIwaC03MC4yOWwtNy4zOCAyMS4yNUExNiAxNiAwIDAgMSAxMTguMzYgMzUyaC0xNi45NGMtMTEuMDEgMC0xOC43My0xMC44NS0xNS4xMi0yMS4yNUwxNDAgMTc2LjEyQTIzLjk5NSAyMy45OTUgMCAwIDEgMTYyLjY3IDE2MGgyNi42NkEyMy45OSAyMy45OSAwIDAgMSAyMTIgMTc2LjEzbDUzLjY5IDE1NC42MmMzLjYxIDEwLjQtNC4xMSAyMS4yNS0xNS4xMSAyMS4yNXpNNDI0IDMzNmMwIDguODQtNy4xNiAxNi0xNiAxNmgtMTZjLTQuODUgMC05LjA0LTIuMjctMTEuOTgtNS42OC04LjYyIDMuNjYtMTguMDkgNS42OC0yOC4wMiA1LjY4LTM5LjcgMC03Mi0zMi4zLTcyLTcyczMyLjMtNzIgNzItNzJjOC40NiAwIDE2LjQ2IDEuNzMgMjQgNC40MlYxNzZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMTZjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBZGRyZXNzQm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzYgMTYwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0yMFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDMyMGMyNi41IDAgNDgtMjEuNSA0OC00OHYtNDhoMjBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTIwdi02NGgyMGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMjB2LTY0aDIwem0tMjI4LTMyYzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHptMTEyIDIzNi44YzAgMTAuNi0xMCAxOS4yLTIyLjQgMTkuMkgxMTguNEMxMDYgMzg0IDk2IDM3NS40IDk2IDM2NC44di0xOS4yYzAtMzEuOCAzMC4xLTU3LjYgNjcuMi01Ny42aDVjMTIuMyA1LjEgMjUuNyA4IDM5LjggOHMyNy42LTIuOSAzOS44LThoNWMzNy4xIDAgNjcuMiAyNS44IDY3LjIgNTcuNnYxOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBZGRyZXNzQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjggMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMzUyIDk2YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHptMTEyIDIzNi44YzAgMTAuNi0xMCAxOS4yLTIyLjQgMTkuMkg4Ni40Qzc0IDM4NCA2NCAzNzUuNCA2NCAzNjQuOHYtMTkuMmMwLTMxLjggMzAuMS01Ny42IDY3LjItNTcuNmg1YzEyLjMgNS4xIDI1LjcgOCAzOS44IDhzMjcuNi0yLjkgMzkuOC04aDVjMzcuMSAwIDY3LjIgMjUuOCA2Ny4yIDU3LjZ2MTkuMnpNNTEyIDMxMmMwIDQuNC0zLjYgOC04IDhIMzYwYy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxNDRjNC40IDAgOCAzLjYgOCA4djE2em0wLTY0YzAgNC40LTMuNiA4LTggOEgzNjBjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDE0NGM0LjQgMCA4IDMuNiA4IDh2MTZ6bTAtNjRjMCA0LjQtMy42IDgtOCA4SDM2MGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTQ0YzQuNCAwIDggMy42IDggOHYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWRqdXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMjU2YzAgMTM2Ljk2NiAxMTEuMDMzIDI0OCAyNDggMjQ4czI0OC0xMTEuMDM0IDI0OC0yNDhTMzkyLjk2NiA4IDI1NiA4IDggMTE5LjAzMyA4IDI1NnptMjQ4IDE4NFY3MmMxMDEuNzA1IDAgMTg0IDgyLjMxMSAxODQgMTg0IDAgMTAxLjcwNS04Mi4zMTEgMTg0LTE4NCAxODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFpckZyZXNoZW5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTYwSDk2QzQzIDE2MCAwIDIwMyAwIDI1NlY0ODBDMCA0OTcuNjI1IDE0LjM3NSA1MTIgMzIgNTEySDI4OEMzMDUuNjI1IDUxMiAzMjAgNDk3LjYyNSAzMjAgNDgwVjI1NkMzMjAgMjAzIDI3NyAxNjAgMjI0IDE2MFpNMTYwIDQxNkMxMTUuODc1IDQxNiA4MCAzODAuMTI1IDgwIDMzNlMxMTUuODc1IDI1NiAxNjAgMjU2UzI0MCAyOTEuODc1IDI0MCAzMzZTMjA0LjEyNSA0MTYgMTYwIDQxNlpNMjI0IDMyQzIyNCAxNC4zNzUgMjA5LjYyNSAwIDE5MiAwSDEyOEMxMTAuMzc1IDAgOTYgMTQuMzc1IDk2IDMyVjEyOEgyMjRWMzJaTTM4MS43ODEgNTEuNTc4QzM4MyA1MC45NjkgMzg0IDQ5LjM1OSAzODQgNDhDMzg0IDQ2LjYyNSAzODMgNDUuMDMxIDM4MS43ODEgNDQuNDIyTDM1MiAzMkwzMzkuNTYyIDIuMjE5QzMzOC45NjkgMSAzMzcuMzc1IDAgMzM2IDBTMzMzLjAzMSAxIDMzMi40MDYgMi4yMTlMMzIwIDMyTDI5MC4yMTkgNDQuNDIyQzI4OSA0NS4wMzEgMjg4IDQ2LjYyNSAyODggNDhDMjg4IDQ5LjM1OSAyODkgNTAuOTY5IDI5MC4yMTkgNTEuNTc4TDMyMCA2NEwzMzIuNDA2IDkzLjc4MUMzMzMuMDMxIDk1IDMzNC42MjUgOTYgMzM2IDk2UzMzOC45NjkgOTUgMzM5LjU2MiA5My43ODFMMzUyIDY0TDM4MS43ODEgNTEuNTc4Wk00NDggNjRMNDYwLjQwNiA5My43ODFDNDYxLjAzMSA5NSA0NjIuNjI1IDk2IDQ2NCA5NlM0NjYuOTY5IDk1IDQ2Ny41NjIgOTMuNzgxTDQ4MCA2NEw1MDkuNzgxIDUxLjU3OEM1MTEgNTAuOTY5IDUxMiA0OS4zNTkgNTEyIDQ4QzUxMiA0Ni42MjUgNTExIDQ1LjAzMSA1MDkuNzgxIDQ0LjQyMkw0ODAgMzJMNDY3LjU2MiAyLjIxOUM0NjYuOTY5IDEgNDY1LjM3NSAwIDQ2NCAwUzQ2MS4wMzEgMSA0NjAuNDA2IDIuMjE5TDQ0OCAzMkw0MTguMjE5IDQ0LjQyMkM0MTcgNDUuMDMxIDQxNiA0Ni42MjUgNDE2IDQ4QzQxNiA0OS4zNTkgNDE3IDUwLjk2OSA0MTguMjE5IDUxLjU3OEw0NDggNjRaTTQ4MCAyMjRMNDY3LjU2MiAxOTQuMjE5QzQ2Ni45NjkgMTkzIDQ2NS4zNzUgMTkyIDQ2NCAxOTJTNDYxLjAzMSAxOTMgNDYwLjQwNiAxOTQuMjE5TDQ0OCAyMjRMNDE4LjIxOSAyMzYuNDIyQzQxNyAyMzcuMDMxIDQxNiAyMzguNjI1IDQxNiAyNDBDNDE2IDI0MS4zNTkgNDE3IDI0Mi45NjkgNDE4LjIxOSAyNDMuNTc4TDQ0OCAyNTZMNDYwLjQwNiAyODUuNzgxQzQ2MS4wMzEgMjg3IDQ2Mi42MjUgMjg4IDQ2NCAyODhTNDY2Ljk2OSAyODcgNDY3LjU2MiAyODUuNzgxTDQ4MCAyNTZMNTA5Ljc4MSAyNDMuNTc4QzUxMSAyNDIuOTY5IDUxMiAyNDEuMzU5IDUxMiAyNDBDNTEyIDIzOC42MjUgNTExIDIzNy4wMzEgNTA5Ljc4MSAyMzYuNDIyTDQ4MCAyMjRaTTQ0NS43ODEgMTQ3LjU3OEM0NDcgMTQ2Ljk2OSA0NDggMTQ1LjM1OSA0NDggMTQ0QzQ0OCAxNDIuNjI1IDQ0NyAxNDEuMDMxIDQ0NS43ODEgMTQwLjQyMkw0MTYgMTI4TDQwMy41NjIgOTguMjE5QzQwMi45NjkgOTcgNDAxLjM3NSA5NiA0MDAgOTZTMzk3LjAzMSA5NyAzOTYuNDA2IDk4LjIxOUwzODQgMTI4TDM1NC4yMTkgMTQwLjQyMkMzNTMgMTQxLjAzMSAzNTIgMTQyLjYyNSAzNTIgMTQ0QzM1MiAxNDUuMzU5IDM1MyAxNDYuOTY5IDM1NC4yMTkgMTQ3LjU3OEwzODQgMTYwTDM5Ni40MDYgMTg5Ljc4MUMzOTcuMDMxIDE5MSAzOTguNjI1IDE5MiA0MDAgMTkyUzQwMi45NjkgMTkxIDQwMy41NjIgMTg5Ljc4MUw0MTYgMTYwTDQ0NS43ODEgMTQ3LjU3OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpZ25DZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDE2MEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wIDI1NkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek0xMDguMSA5NmgyMzEuODFBMTIuMDkgMTIuMDkgMCAwIDAgMzUyIDgzLjlWNDQuMDlBMTIuMDkgMTIuMDkgMCAwIDAgMzM5LjkxIDMySDEwOC4xQTEyLjA5IDEyLjA5IDAgMCAwIDk2IDQ0LjA5VjgzLjlBMTIuMSAxMi4xIDAgMCAwIDEwOC4xIDk2em0yMzEuODEgMjU2QTEyLjA5IDEyLjA5IDAgMCAwIDM1MiAzMzkuOXYtMzkuODFBMTIuMDkgMTIuMDkgMCAwIDAgMzM5LjkxIDI4OEgxMDguMUExMi4wOSAxMi4wOSAwIDAgMCA5NiAzMDAuMDl2MzkuODFhMTIuMSAxMi4xIDAgMCAwIDEyLjEgMTIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpZ25KdXN0aWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMiA0MTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xMjhIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xMjhIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xMjhIMTZBMTYgMTYgMCAwIDAgMCA0OHYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFsaWduTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi44MyAzNTJoMjYyLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDI4OCAzMzkuMTd2LTM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDI3NS4xNyAyODhIMTIuODNBMTIuODIgMTIuODIgMCAwIDAgMCAzMDAuODN2MzguMzRBMTIuODIgMTIuODIgMCAwIDAgMTIuODMgMzUyem0wLTI1NmgyNjIuMzRBMTIuODIgMTIuODIgMCAwIDAgMjg4IDgzLjE3VjQ0LjgzQTEyLjgyIDEyLjgyIDAgMCAwIDI3NS4xNyAzMkgxMi44M0ExMi44MiAxMi44MiAwIDAgMCAwIDQ0LjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDEyLjgzIDk2ek00MzIgMTYwSDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgMjU2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFsaWduUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMjI0aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZ6bTQxNiAxOTJIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMy4xNy0zODRIMTcyLjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE2MCA0NC44M3YzOC4zNEExMi44MiAxMi44MiAwIDAgMCAxNzIuODMgOTZoMjYyLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCA4My4xN1Y0NC44M0ExMi44MiAxMi44MiAwIDAgMCA0MzUuMTcgMzJ6bTAgMjU2SDE3Mi44M0ExMi44MiAxMi44MiAwIDAgMCAxNjAgMzAwLjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDE3Mi44MyAzNTJoMjYyLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCAzMzkuMTd2LTM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQzNS4xNyAyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFsbGVyZ2llcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMTEyYy0xNy42IDAtMzIgMTQuNC0zMiAzMnY3MmMwIDQuNC0zLjYgOC04IDhoLTE2Yy00LjQgMC04LTMuNi04LThWNjRjMC0xNy42LTE0LjQtMzItMzItMzJzLTMyIDE0LjQtMzIgMzJ2MTUyYzAgNC40LTMuNiA4LTggOGgtMTZjLTQuNCAwLTgtMy42LTgtOFYzMmMwLTE3LjYtMTQuNC0zMi0zMi0zMnMtMzIgMTQuNC0zMiAzMnYxODRjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04VjY0YzAtMTcuNi0xNC40LTMyLTMyLTMyUzk2IDQ2LjQgOTYgNjR2MjQxbC0yMy42LTMyLjVjLTEzLTE3LjktMzgtMjEuOC01NS45LTguOHMtMjEuOCAzOC04LjggNTUuOWwxMjUuNiAxNzIuN2M5IDEyLjQgMjMuNSAxOS44IDM4LjggMTkuOGgxOTcuNmMyMi4zIDAgNDEuNi0xNS4zIDQ2LjctMzdsMjYuNS0xMTIuN2MzLjItMTMuNyA0LjktMjguMyA1LjEtNDIuM1YxNDRjMC0xNy42LTE0LjQtMzItMzItMzJ6TTE3NiA0MTZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMC05NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em02NCAxMjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMC05NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em02NCAzMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0zMiA2NGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0zMi0xMjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW1idWxhbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCAzNTJoLTE2VjI0My45YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlMNDk0IDExMC4xYy05LTktMjEuMi0xNC4xLTMzLjktMTQuMUg0MTZWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djMyMGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgxNmMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDEyOGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2ek0xNjAgNDY0Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptMTQ0LTI0OGMwIDQuNC0zLjYgOC04IDhoLTU2djU2YzAgNC40LTMuNiA4LTggOGgtNDhjLTQuNCAwLTgtMy42LTgtOHYtNTZoLTU2Yy00LjQgMC04LTMuNi04LTh2LTQ4YzAtNC40IDMuNi04IDgtOGg1NnYtNTZjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHY1Nmg1NmM0LjQgMCA4IDMuNiA4IDh2NDh6bTE3NiAyNDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em04MC0yMDhINDE2VjE0NGg0NC4xbDk5LjkgOTkuOVYyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFtZXJpY2FuU2lnbkxhbmd1YWdlSW50ZXJwcmV0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5MC41NDcgMTg5LjAzOWMtMjAuMjk1LTEwLjE0OS00NC4xNDctMTEuMTk5LTY0LjczOS0zLjg5IDQyLjYwNiAwIDcxLjIwOCAyMC40NzUgODUuNTc4IDUwLjU3NiA4LjU3NiAxNy44OTktNS4xNDggMzguMDcxLTIzLjYxNyAzOC4wNzEgMTguNDI5IDAgMzIuMjExIDIwLjEzNiAyMy42MTcgMzguMDcxLTE0LjcyNSAzMC44NDYtNDYuMTIzIDUwLjg1NC04MC4yOTggNTAuODU0LS41NTcgMC05NC40NzEtOC42MTUtOTQuNDcxLTguNjE1bC02Ni40MDYgMzMuMzQ3Yy05LjM4NCA0LjY5My0xOS44MTUuMzc5LTIzLjg5NS03Ljc4MUwxLjg2IDI5MC43NDdjLTQuMTY3LTguNjE1LTEuMTExLTE4Ljg5NyA2Ljk0Ni0yMy42MjFsNTguMDcyLTMzLjA2OUwxMDggMTU5Ljg2MWM2LjM5LTU3LjI0NSAzNC43MzEtMTA5Ljc2NyA3OS43NDMtMTQ2LjcyNiAxMS4zOTEtOS40NDggMjguMzQxLTcuNzgxIDM3LjUxIDMuNjEzIDkuNDQ2IDExLjM5NCA3Ljc4IDI4LjA2Ny0zLjYxMiAzNy41MTYtMTIuNTAzIDEwLjU1OS0yMy42MTggMjIuNTA5LTMyLjUwOSAzNS41NyAyMS42NzItMTQuNzI5IDQ2LjY3OS0yNC43MzIgNzQuMTg2LTI4LjA2NyAxNC43MjUtMS45NDUgMjguMDYzIDguMzM2IDI5LjczIDIzLjA2NSAxLjk0NSAxNC43MjgtOC4zMzYgMjguMDY3LTIzLjA2MiAyOS43MzQtMTYuMTE2IDEuOTQ1LTMxLjEyIDcuNTAzLTQ0LjE3OCAxNS4yODQgMjYuMTE0LTUuNzEzIDU4LjcxMi0zLjEzOCA4OC4wNzkgMTEuMTE1IDEzLjMzNiA2LjY2OSAxOC44OTMgMjIuNTA5IDEyLjIyNCAzNS44NDgtNi4zODkgMTMuMDYtMjIuNTA0IDE4LjYxNy0zNS41NjQgMTIuMjI2em0tMjcuMjI5IDY5LjQ3MmMtNi4xMTItMTIuNTA1LTE4LjMzOC0yMC4yODYtMzIuMjMxLTIwLjI4NmEzNS40NiAzNS40NiAwIDAgMC0zNS41NjUgMzUuNTdjMCAyMS40MjggMTcuODA4IDM1LjU3IDM1LjU2NSAzNS41NyAxMy44OTMgMCAyNi4xMTktNy43ODEgMzIuMjMxLTIwLjI4NiA0LjQ0Ni05LjQ0OSAxMy42MTQtMTUuMDA2IDIzLjMzOS0xNS4yODQtOS43MjUtLjI3Ny0xOC44OTMtNS44MzUtMjMuMzM5LTE1LjI4NHptMzc0LjgyMS0zNy4yMzdjNC4xNjggOC42MTUgMS4xMTEgMTguODk3LTYuOTQ2IDIzLjYyMWwtNTguMDcxIDMzLjA2OUw1MzIgMzUyLjE2Yy02LjM5IDU3LjI0NS0zNC43MzEgMTA5Ljc2Ny03OS43NDMgMTQ2LjcyNi0xMC45MzIgOS4xMTItMjcuNzk5IDguMTQ0LTM3LjUxLTMuNjEzLTkuNDQ2LTExLjM5NC03Ljc4LTI4LjA2NyAzLjYxMy0zNy41MTYgMTIuNTAzLTEwLjU1OSAyMy42MTctMjIuNTA5IDMyLjUwOC0zNS41Ny0yMS42NzIgMTQuNzI5LTQ2LjY3OSAyNC43MzItNzQuMTg2IDI4LjA2Ny0xMC4wMjEgMi41MDYtMjcuNTUyLTUuNjQzLTI5LjczLTIzLjA2NS0xLjk0NS0xNC43MjggOC4zMzYtMjguMDY3IDIzLjA2Mi0yOS43MzQgMTYuMTE2LTEuOTQ2IDMxLjEyLTcuNTAzIDQ0LjE3OC0xNS4yODQtMjYuMTE0IDUuNzEzLTU4LjcxMiAzLjEzOC04OC4wNzktMTEuMTE1LTEzLjMzNi02LjY2OS0xOC44OTMtMjIuNTA5LTEyLjIyNC0zNS44NDggNi4zODktMTMuMDYxIDIyLjUwNS0xOC42MTkgMzUuNTY1LTEyLjIyNyAyMC4yOTUgMTAuMTQ5IDQ0LjE0NyAxMS4xOTkgNjQuNzM5IDMuODktNDIuNjA2IDAtNzEuMjA4LTIwLjQ3NS04NS41NzgtNTAuNTc2LTguNTc2LTE3Ljg5OSA1LjE0OC0zOC4wNzEgMjMuNjE3LTM4LjA3MS0xOC40MjkgMC0zMi4yMTEtMjAuMTM2LTIzLjYxNy0zOC4wNzEgMTQuMDMzLTI5LjM5NiA0NC4wMzktNTAuODg3IDgxLjk2Ni01MC44NTRsOTIuODAzIDguNjE1IDY2LjQwNi0zMy4zNDdjOS40MDgtNC43MDQgMTkuODI4LS4zNTQgMjMuODk0IDcuNzgxbDQ0LjQ1NSA4OC45MjZ6bS0yMjkuMjI3LTE4LjYxOGMtMTMuODkzIDAtMjYuMTE5IDcuNzgxLTMyLjIzMSAyMC4yODYtNC40NDYgOS40NDktMTMuNjE0IDE1LjAwNi0yMy4zMzkgMTUuMjg0IDkuNzI1LjI3OCAxOC44OTMgNS44MzYgMjMuMzM5IDE1LjI4NCA2LjExMiAxMi41MDUgMTguMzM4IDIwLjI4NiAzMi4yMzEgMjAuMjg2YTM1LjQ2IDM1LjQ2IDAgMCAwIDM1LjU2NS0zNS41N2MwLTIxLjQyOS0xNy44MDgtMzUuNTctMzUuNTY1LTM1LjU3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmNob3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuOTcxIDM1MmgzMi4zOTRDNjcuMTcyIDQ1NC43MzUgMTgxLjk0NCA1MTIgMjg4IDUxMmMxMDYuMjI5IDAgMjIwLjg1My01Ny4zOCAyNDIuNjM1LTE2MGgzMi4zOTRjMTAuNjkxIDAgMTYuMDQ1LTEyLjkyNiA4LjQ4NS0yMC40ODVsLTY3LjAyOS02Ny4wMjljLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMGwtNjcuMDI5IDY3LjAyOWMtNy41NiA3LjU2LTIuMjA2IDIwLjQ4NSA4LjQ4NSAyMC40ODVoMzUuMTQ2Yy0yMC4yOSA1NC4zMTctODQuOTYzIDg2LjU4OC0xNDQuMTE3IDk0LjAxNVYyNTZoNTJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNTJ2LTUuNDdjMzcuMjgxLTEzLjE3OCA2My45OTUtNDguNzI1IDY0LTkwLjUxOEMzODQuMDA1IDQzLjc3MiAzNDEuNjA1LjczOCAyODkuMzcuMDEgMjM1LjcyMy0uNzM5IDE5MiA0Mi41MjUgMTkyIDk2YzAgNDEuNzk4IDI2LjcxNiA3Ny4zNSA2NCA5MC41M1YxOTJoLTUyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNTJ2MTkwLjAxNWMtNTguOTM2LTcuMzk5LTEyMy44Mi0zOS42NzktMTQ0LjExNy05NC4wMTVoMzUuMTQ2YzEwLjY5MSAwIDE2LjA0NS0xMi45MjYgOC40ODUtMjAuNDg1bC02Ny4wMjktNjcuMDI5Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMNC40ODUgMzMxLjUxNUMtMy4wNzQgMzM5LjA3NCAyLjI4IDM1MiAxMi45NzEgMzUyek0yODggNjRjMTcuNjQ1IDAgMzIgMTQuMzU1IDMyIDMycy0xNC4zNTUgMzItMzIgMzItMzItMTQuMzU1LTMyLTMyIDE0LjM1NS0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVEb3VibGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0MyAyNTYuM0w3IDEyMC4zYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWwyMi42LTIyLjZjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsOTYuNCA5Ni40IDk2LjQtOTYuNGM5LjQtOS40IDI0LjYtOS40IDMzLjkgMEwzMTMgODYuM2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtMTM2IDEzNmMtOS40IDkuNS0yNC42IDkuNS0zNCAuMXptMzQgMTkybDEzNi0xMzZjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlsLTIyLjYtMjIuNmMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMMTYwIDM1Mi4xbC05Ni40LTk2LjRjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDcgMjc4LjNjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDEzNiAxMzZjOS40IDkuNSAyNC42IDkuNSAzNCAuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVEb3VibGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyMy43IDIzOWwxMzYtMTM2YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDIyLjYgMjIuNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUwzMTkuOSAyNTZsOTYuNCA5Ni40YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45TDM5My43IDQwOWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTEzNi0xMzZjLTkuNS05LjQtOS41LTI0LjYtLjEtMzR6bS0xOTIgMzRsMTM2IDEzNmM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwyMi42LTIyLjZjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlMMTI3LjkgMjU2bDk2LjQtOTYuNGM5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyMDEuNyAxMDNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC0xMzYgMTM2Yy05LjUgOS40LTkuNSAyNC42LS4xIDM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdsZURvdWJsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNC4zIDI3M2wtMTM2IDEzNmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTIyLjYtMjIuNmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsOTYuNC05Ni40LTk2LjQtOTYuNGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlMNTQuMyAxMDNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTM2IDEzNmM5LjUgOS40IDkuNSAyNC42LjEgMzR6bTE5Mi0zNGwtMTM2LTEzNmMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTIyLjYgMjIuNmMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsOTYuNCA5Ni40LTk2LjQgOTYuNGMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsMjIuNiAyMi42YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDEzNi0xMzZjOS40LTkuMiA5LjQtMjQuNCAwLTMzLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlRG91YmxlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc3IDI1NS43bDEzNiAxMzZjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTIyLjYgMjIuNmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMTYwIDM1MS45bC05Ni40IDk2LjRjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDcgNDI1LjdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDEzNi0xMzZjOS40LTkuNSAyNC42LTkuNSAzNC0uMXptLTM0LTE5Mkw3IDE5OS43Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWwyMi42IDIyLjZjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsOTYuNC05Ni40IDk2LjQgOTYuNGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwyMi42LTIyLjZjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlsLTEzNi0xMzZjLTkuMi05LjQtMjQuNC05LjQtMzMuOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQzIDM1Mi4zTDcgMjE2LjNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDIyLjYtMjIuNmM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw5Ni40IDk2LjQgOTYuNC05Ni40YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDIyLjYgMjIuNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtMTM2IDEzNmMtOS4yIDkuNC0yNC40IDkuNC0zMy44IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMS43IDIzOWwxMzYtMTM2YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDIyLjYgMjIuNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUwxMjcuOSAyNTZsOTYuNCA5Ni40YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45TDIwMS43IDQwOWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTEzNi0xMzZjLTkuNS05LjQtOS41LTI0LjYtLjEtMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0LjMgMjczbC0xMzYgMTM2Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtMjIuNi0yMi42Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw5Ni40LTk2LjQtOTYuNC05Ni40Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOUw1NC4zIDEwM2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwxMzYgMTM2YzkuNSA5LjQgOS41IDI0LjYuMSAzNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzcgMTU5LjdsMTM2IDEzNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtMjIuNiAyMi42Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwxNjAgMjU1LjlsLTk2LjQgOTYuNGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMNyAzMjkuN2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsMTM2LTEzNmM5LjQtOS41IDI0LjYtOS41IDM0LS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4ek0xMzYgMjQwYzAtOS4zIDQuMS0xNy41IDEwLjUtMjMuNGwtMzEtOS4zYy04LjUtMi41LTEzLjMtMTEuNS0xMC43LTE5LjkgMi41LTguNSAxMS40LTEzLjIgMTkuOS0xMC43bDgwIDI0YzguNSAyLjUgMTMuMyAxMS41IDEwLjcgMTkuOS0yLjEgNi45LTguNCAxMS40LTE1LjMgMTEuNC0uNSAwLTEuMS0uMi0xLjctLjIuNyAyLjcgMS43IDUuMyAxLjcgOC4yIDAgMTcuNy0xNC4zIDMyLTMyIDMyUzEzNiAyNTcuNyAxMzYgMjQwem0xNjggMTU0LjJjLTI3LjgtMzMuNC04NC4yLTMzLjQtMTEyLjEgMC0xMy41IDE2LjMtMzguMi00LjItMjQuNi0yMC41IDIwLTI0IDQ5LjQtMzcuOCA4MC42LTM3LjhzNjAuNiAxMy44IDgwLjYgMzcuOGMxMy44IDE2LjUtMTEuMSAzNi42LTI0LjUgMjAuNXptNzYuNi0xODYuOWwtMzEgOS4zYzYuMyA1LjggMTAuNSAxNC4xIDEwLjUgMjMuNCAwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmMwLTIuOS45LTUuNiAxLjctOC4yLS42LjEtMS4xLjItMS43LjItNi45IDAtMTMuMi00LjUtMTUuMy0xMS40LTIuNS04LjUgMi4zLTE3LjQgMTAuNy0xOS45bDgwLTI0YzguNC0yLjUgMTcuNCAyLjMgMTkuOSAxMC43IDIuNSA4LjUtMi4zIDE3LjQtMTAuOCAxOS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmtoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5NiAyNTZoLTQ0LjYyQzI3Mi40NiAyMjIuMDEgMjg4IDE4MS42NSAyODggMTQ0IDI4OCA1NS42MyAyMzAuNjkgMCAxNjAgMFMzMiA1NS42MyAzMiAxNDRjMCAzNy42NSAxNS41NCA3OC4wMSAzNi42MiAxMTJIMjRjLTEzLjI1IDAtMjQgMTAuNzQtMjQgMjR2MzJjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGg5NnYxNTJjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGgzMmMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0VjMzNmg5NmMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di0zMmMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0ek0xNjAgODBjMjkuNjEgMCA0OCAyNC41MiA0OCA2NCAwIDM0LjY2LTI3LjE0IDc4LjE0LTQ4IDEwMC44Ny0yMC44Ni0yMi43Mi00OC02Ni4yMS00OC0xMDAuODcgMC0zOS40OCAxOC4zOS02NCA0OC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXBwbGVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUwLjg1IDEyOWMyNS45NyA0LjY3IDQ3LjI3IDE4LjY3IDYzLjkyIDQyIDE0LjY1IDIwLjY3IDI0LjY0IDQ2LjY3IDI5Ljk2IDc4IDQuNjcgMjguNjcgNC4zMiA1Ny4zMy0xIDg2LTcuOTkgNDcuMzMtMjMuOTcgODctNDcuOTQgMTE5LTI4LjY0IDM4LjY3LTY0LjU5IDU4LTEwNy44NyA1OC0xMC42NiAwLTIyLjMtMy4zMy0zNC45Ni0xMC04LjY2LTUuMzMtMTguMzEtOC0yOC45Ny04cy0yMC4zIDIuNjctMjguOTcgOGMtMTIuNjYgNi42Ny0yNC4zIDEwLTM0Ljk2IDEwLTQzLjI4IDAtNzkuMjMtMTkuMzMtMTA3Ljg3LTU4LTIzLjk3LTMyLTM5Ljk1LTcxLjY3LTQ3Ljk0LTExOS01LjMyLTI4LjY3LTUuNjctNTcuMzMtMS04NiA1LjMyLTMxLjMzIDE1LjMxLTU3LjMzIDI5Ljk2LTc4IDE2LjY1LTIzLjMzIDM3Ljk1LTM3LjMzIDYzLjkyLTQyIDE1Ljk4LTIuNjcgMzcuOTUtLjMzIDY1LjkyIDcgMjMuOTcgNi42NyA0NC4yOCAxNC42NyA2MC45MyAyNCAxNi42NS05LjMzIDM2Ljk2LTE3LjMzIDYwLjkzLTI0IDI3Ljk4LTcuMzMgNDkuOTYtOS42NyA2NS45NC03em0tNTQuOTQtNDFjLTkuMzIgOC42Ny0yMS42NSAxNS0zNi45NiAxOS0xMC42NiAzLjMzLTIyLjMgNS0zNC45NiA1bC0xNC45OC0xYy0xLjMzLTkuMzMtMS4zMy0yMCAwLTMyIDIuNjctMjQgMTAuMzItNDIuMzMgMjIuOTctNTUgOS4zMi04LjY3IDIxLjY1LTE1IDM2Ljk2LTE5IDEwLjY2LTMuMzMgMjIuMy01IDM0Ljk2LTVsMTQuOTggMSAxIDE1YzAgMTIuNjctMS42NyAyNC4zMy00Ljk5IDM1LTMuOTkgMTUuMzMtMTAuMzEgMjcuNjctMTguOTggMzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDM4NGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjBIMzJ2Mjg4em0xNjAtMjEyYzAtNi42IDUuNC0xMiAxMi0xMmgxMDRjNi42IDAgMTIgNS40IDEyIDEydjhjMCA2LjYtNS40IDEyLTEyIDEySDIwNGMtNi42IDAtMTItNS40LTEyLTEydi04ek00ODAgMzJIMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoNDgwYzguOCAwIDE2LTcuMiAxNi0xNlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJjaHdheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjAgNDQ4aC0xNlY5NkgzMnYzNTJIMTYuMDJjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2SDE3NmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYzMjBjMC01My4wMiA0Mi45OC05NiA5Ni05NnM5NiA0Mi45OCA5NiA5NmwuMDIgMTYwdjE2YzAgOC44NCA3LjE2IDE2IDE2IDE2SDU2MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bTAtNDQ4SDE2QzcuMTYgMCAwIDcuMTYgMCAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg1NDRjOC44NCAwIDE2LTcuMTYgMTYtMTZWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93QWx0Q2lyY2xlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6TTIxMiAxNDB2MTE2aC03MC45Yy0xMC43IDAtMTYuMSAxMy04LjUgMjAuNWwxMTQuOSAxMTQuM2M0LjcgNC43IDEyLjIgNC43IDE2LjkgMGwxMTQuOS0xMTQuM2M3LjYtNy42IDIuMi0yMC41LTguNS0yMC41SDMwMFYxNDBjMC02LjYtNS40LTEyLTEyLTEyaC02NGMtNi42IDAtMTIgNS40LTEyIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0FsdENpcmNsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUwNEMxMTkgNTA0IDggMzkzIDggMjU2UzExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OC0xMTEgMjQ4LTI0OCAyNDh6bTExNi0yOTJIMjU2di03MC45YzAtMTAuNy0xMy0xNi4xLTIwLjUtOC41TDEyMS4yIDI0Ny41Yy00LjcgNC43LTQuNyAxMi4yIDAgMTYuOWwxMTQuMyAxMTQuOWM3LjYgNy42IDIwLjUgMi4yIDIwLjUtOC41VjMwMGgxMTZjNi42IDAgMTItNS40IDEyLTEydi02NGMwLTYuNi01LjQtMTItMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93QWx0Q2lyY2xlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhjMTM3IDAgMjQ4IDExMSAyNDggMjQ4UzM5MyA1MDQgMjU2IDUwNCA4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHpNMTQwIDMwMGgxMTZ2NzAuOWMwIDEwLjcgMTMgMTYuMSAyMC41IDguNWwxMTQuMy0xMTQuOWM0LjctNC43IDQuNy0xMi4yIDAtMTYuOWwtMTE0LjMtMTE1Yy03LjYtNy42LTIwLjUtMi4yLTIwLjUgOC41VjIxMkgxNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY2NGMwIDYuNiA1LjQgMTIgMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93QWx0Q2lyY2xlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyNTZDOCAxMTkgMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NnptMjkyIDExNlYyNTZoNzAuOWMxMC43IDAgMTYuMS0xMyA4LjUtMjAuNUwyNjQuNSAxMjEuMmMtNC43LTQuNy0xMi4yLTQuNy0xNi45IDBsLTExNSAxMTQuM2MtNy42IDcuNi0yLjIgMjAuNSA4LjUgMjAuNUgyMTJ2MTE2YzAgNi42IDUuNCAxMiAxMiAxMmg2NGM2LjYgMCAxMi01LjQgMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93Q2lyY2xlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6bS0xNDMuNi0yOC45TDI4OCAzMDIuNlYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRoLTE2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxODIuNmwtNzIuNC03NS41Yy05LjMtOS43LTI0LjgtOS45LTM0LjMtLjRsLTEwLjkgMTFjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45TDIzOSA0MDQuM2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwxMzIuNy0xMzIuN2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOWwtMTAuOS0xMWMtOS41LTkuNS0yNS05LjMtMzQuMy40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0NpcmNsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUwNEMxMTkgNTA0IDggMzkzIDggMjU2UzExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OC0xMTEgMjQ4LTI0OCAyNDh6bTI4LjktMTQzLjZMMjA5LjQgMjg4SDM5MmMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtMTZjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjA5LjRsNzUuNS03Mi40YzkuNy05LjMgOS45LTI0LjguNC0zNC4zbC0xMS0xMC45Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwxMDcuNyAyMzljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDEzMi43IDEzMi43YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDExLTEwLjljOS41LTkuNSA5LjMtMjUtLjQtMzQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dDaXJjbGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOGMxMzcgMCAyNDggMTExIDI0OCAyNDhTMzkzIDUwNCAyNTYgNTA0IDggMzkzIDggMjU2IDExOSA4IDI1NiA4em0tMjguOSAxNDMuNmw3NS41IDcyLjRIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxNmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxODIuNmwtNzUuNSA3Mi40Yy05LjcgOS4zLTkuOSAyNC44LS40IDM0LjNsMTEgMTAuOWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMEw0MDQuMyAyNzNjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlMMjcxLjYgMTA2LjNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC0xMSAxMC45Yy05LjUgOS42LTkuMyAyNS4xLjQgMzQuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dDaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDI1NkM4IDExOSAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDgtMTExIDI0OC0yNDggMjQ4UzggMzkzIDggMjU2em0xNDMuNiAyOC45bDcyLjQtNzUuNVYzOTJjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjA5LjRsNzIuNCA3NS41YzkuMyA5LjcgMjQuOCA5LjkgMzQuMy40bDEwLjktMTFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlMMjczIDEwNy43Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwxMDYuMyAyNDAuNGMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsMTAuOSAxMWM5LjYgOS41IDI1LjEgOS4zIDM0LjQtLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTMuMSAyMjIuNWwyMi4yIDIyLjJjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMMjQxIDQ3M2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMTIuNyAyNzguNmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsMjIuMi0yMi4yYzkuNS05LjUgMjUtOS4zIDM0LjMuNEwxODQgMzQzLjRWNTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjR2Mjg3LjRsMTE0LjgtMTIwLjVjOS4zLTkuOCAyNC44LTEwIDM0LjMtLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTcuNSA0NDUuMWwtMjIuMiAyMi4yYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEw3IDI3M2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlMMjAxLjQgNDQuN2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwyMi4yIDIyLjJjOS41IDkuNSA5LjMgMjUtLjQgMzQuM0wxMzYuNiAyMTZINDI0YzEzLjMgMCAyNCAxMC43IDI0IDI0djMyYzAgMTMuMy0xMC43IDI0LTI0IDI0SDEzNi42bDEyMC41IDExNC44YzkuOCA5LjMgMTAgMjQuOC40IDM0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkwLjUgNjYuOWwyMi4yLTIyLjJjOS40LTkuNCAyNC42LTkuNCAzMy45IDBMNDQxIDIzOWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUwyNDYuNiA0NjcuM2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTIyLjItMjIuMmMtOS41LTkuNS05LjMtMjUgLjQtMzQuM0wzMTEuNCAyOTZIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0di0zMmMwLTEzLjMgMTAuNy0yNCAyNC0yNGgyODcuNEwxOTAuOSAxMDEuMmMtOS44LTkuMy0xMC0yNC44LS40LTM0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQuOSAyODkuNWwtMjIuMi0yMi4yYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOUwyMDcgMzljOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTk0LjMgMTk0LjNjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMNDEzIDI4OS40Yy05LjUgOS41LTI1IDkuMy0zNC4zLS40TDI2NCAxNjguNlY0NTZjMCAxMy4zLTEwLjcgMjQtMjQgMjRoLTMyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYxNjguNkw2OS4yIDI4OS4xYy05LjMgOS44LTI0LjggMTAtMzQuMy40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NBbHRIIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3Ny45NDEgMTY5Ljk0MVYyMTZIMTM0LjA1OXYtNDYuMDU5YzAtMjEuMzgyLTI1Ljg1MS0zMi4wOS00MC45NzEtMTYuOTcxTDcuMDI5IDIzOS4wMjljLTkuMzczIDkuMzczLTkuMzczIDI0LjU2OCAwIDMzLjk0MWw4Ni4wNTkgODYuMDU5YzE1LjExOSAxNS4xMTkgNDAuOTcxIDQuNDExIDQwLjk3MS0xNi45NzFWMjk2aDI0My44ODJ2NDYuMDU5YzAgMjEuMzgyIDI1Ljg1MSAzMi4wOSA0MC45NzEgMTYuOTcxbDg2LjA1OS04Ni4wNTljOS4zNzMtOS4zNzMgOS4zNzMtMjQuNTY4IDAtMzMuOTQxbC04Ni4wNTktODYuMDU5Yy0xNS4xMTktMTUuMTItNDAuOTcxLTQuNDEyLTQwLjk3MSAxNi45N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzQWx0ViAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTQuMDU5IDM3Ny45NDFIMTY4VjEzNC4wNTloNDYuMDU5YzIxLjM4MiAwIDMyLjA5LTI1Ljg1MSAxNi45NzEtNDAuOTcxTDE0NC45NzEgNy4wMjljLTkuMzczLTkuMzczLTI0LjU2OC05LjM3My0zMy45NDEgMEwyNC45NzEgOTMuMDg4Yy0xNS4xMTkgMTUuMTE5LTQuNDExIDQwLjk3MSAxNi45NzEgNDAuOTcxSDg4djI0My44ODJINDEuOTQxYy0yMS4zODIgMC0zMi4wOSAyNS44NTEtMTYuOTcxIDQwLjk3MWw4Ni4wNTkgODYuMDU5YzkuMzczIDkuMzczIDI0LjU2OCA5LjM3MyAzMy45NDEgMGw4Ni4wNTktODYuMDU5YzE1LjEyLTE1LjExOSA0LjQxMi00MC45NzEtMTYuOTctNDAuOTcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyLjIwMSA0MjUuNzc1bC03OS4xOTYgNzkuMTk2Yy05LjM3MyA5LjM3My0yNC41NjggOS4zNzMtMzMuOTQxIDBsLTc5LjE5Ni03OS4xOTZjLTE1LjExOS0xNS4xMTktNC40MTEtNDAuOTcxIDE2Ljk3MS00MC45N2g1MS4xNjJMMjI4IDI4NEgxMjcuMTk2djUxLjE2MmMwIDIxLjM4Mi0yNS44NTEgMzIuMDktNDAuOTcxIDE2Ljk3MUw3LjAyOSAyNzIuOTM3Yy05LjM3My05LjM3My05LjM3My0yNC41NjkgMC0zMy45NDFMODYuMjI1IDE1OS44YzE1LjExOS0xNS4xMTkgNDAuOTcxLTQuNDExIDQwLjk3MSAxNi45NzFWMjI4SDIyOFYxMjcuMTk2aC01MS4yM2MtMjEuMzgyIDAtMzIuMDktMjUuODUxLTE2Ljk3MS00MC45NzFsNzkuMTk2LTc5LjE5NmM5LjM3My05LjM3MyAyNC41NjgtOS4zNzMgMzMuOTQxIDBsNzkuMTk2IDc5LjE5NmMxNS4xMTkgMTUuMTE5IDQuNDExIDQwLjk3MS0xNi45NzEgNDAuOTcxaC01MS4xNjJWMjI4aDEwMC44MDR2LTUxLjE2MmMwLTIxLjM4MiAyNS44NTEtMzIuMDkgNDAuOTctMTYuOTcxbDc5LjE5NiA3OS4xOTZjOS4zNzMgOS4zNzMgOS4zNzMgMjQuNTY5IDAgMzMuOTQxTDQyNS43NzMgMzUyLjJjLTE1LjExOSAxNS4xMTktNDAuOTcxIDQuNDExLTQwLjk3LTE2Ljk3MVYyODRIMjg0djEwMC44MDRoNTEuMjNjMjEuMzgyIDAgMzIuMDkgMjUuODUxIDE2Ljk3MSA0MC45NzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFzc2lzdGl2ZUxpc3RlbmluZ1N5c3RlbXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE2IDI2MGMwIDE1LjQ2NC0xMi41MzYgMjgtMjggMjhzLTI4LTEyLjUzNi0yOC0yOGMwLTQ0LjExMiAzNS44ODgtODAgODAtODBzODAgMzUuODg4IDgwIDgwYzAgMTUuNDY0LTEyLjUzNiAyOC0yOCAyOHMtMjgtMTIuNTM2LTI4LTI4YzAtMTMuMjM0LTEwLjc2Ny0yNC0yNC0yNHMtMjQgMTAuNzY2LTI0IDI0em0yNC0xNzZjLTk3LjA0NyAwLTE3NiA3OC45NTMtMTc2IDE3NiAwIDE1LjQ2NCAxMi41MzYgMjggMjggMjhzMjgtMTIuNTM2IDI4LTI4YzAtNjYuMTY4IDUzLjgzMi0xMjAgMTIwLTEyMHMxMjAgNTMuODMyIDEyMCAxMjBjMCA3NS4xNjQtNzEuMDA5IDcwLjMxMS03MS45OTcgMTQzLjYyMkwyODggNDA0YzAgMjguNjczLTIzLjMyNyA1Mi01MiA1Mi0xNS40NjQgMC0yOCAxMi41MzYtMjggMjhzMTIuNTM2IDI4IDI4IDI4YzU5LjQ3NSAwIDEwNy44NzYtNDguMzI4IDEwOC0xMDcuNzc0LjU5NS0zNC40MjggNzItNDguMjQgNzItMTQ0LjIyNiAwLTk3LjA0Ny03OC45NTMtMTc2LTE3Ni0xNzZ6bS04MCAyMzZjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnpNMzIgNDQ4Yy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTQ4MC0xODcuOTkzYzAtMS41MTgtLjAxMi0zLjAyNS0uMDQ1LTQuNTMxQzUxMC4wNzYgMTQwLjUyNSA0MzYuMTU3IDM4LjQ3IDMyNy45OTQgMS41MTFjLTE0LjYzMy00Ljk5OC0zMC41NDkgMi44MDktMzUuNTUgMTcuNDQyLTUgMTQuNjMzIDIuODEgMzAuNTQ5IDE3LjQ0MiAzNS41NSA4NS45MDYgMjkuMzU0IDE0NC42MSAxMTAuNTEzIDE0Ni4wNzcgMjAxLjk1M2wuMDAzLjE4OGMuMDI2IDEuMTE4LjAzMyAyLjIzNi4wMzMgMy4zNjMgMCAxNS40NjQgMTIuNTM2IDI4IDI4IDI4czI4LjAwMS0xMi41MzYgMjguMDAxLTI4ek0xNTIuOTcxIDQzOS4wMjlsLTgwLTgwTDM5LjAzIDM5Mi45N2w4MCA4MCAzMy45NDEtMzMuOTQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBc3RlcmlzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzguMjEgMzM0LjA5M0wzMzYgMjU2bDE0Mi4yMS03OC4wOTNjMTEuNzk1LTYuNDc3IDE1Ljk2MS0yMS4zODQgOS4yMzItMzMuMDM3bC0xOS40OC0zMy43NDFjLTYuNzI4LTExLjY1My0yMS43Mi0xNS40OTktMzMuMjI3LTguNTIzTDI5NiAxODYuNzE4bDMuNDc1LTE2Mi4yMDRDMjk5Ljc2MyAxMS4wNjEgMjg4LjkzNyAwIDI3NS40OCAwaC0zOC45NmMtMTMuNDU2IDAtMjQuMjgzIDExLjA2MS0yMy45OTQgMjQuNTE0TDIxNiAxODYuNzE4IDc3LjI2NSAxMDIuNjA3Yy0xMS41MDYtNi45NzYtMjYuNDk5LTMuMTMtMzMuMjI3IDguNTIzbC0xOS40OCAzMy43NDFjLTYuNzI4IDExLjY1My0yLjU2MiAyNi41NiA5LjIzMyAzMy4wMzdMMTc2IDI1NiAzMy43OSAzMzQuMDkzYy0xMS43OTUgNi40NzctMTUuOTYxIDIxLjM4NC05LjIzMiAzMy4wMzdsMTkuNDggMzMuNzQxYzYuNzI4IDExLjY1MyAyMS43MjEgMTUuNDk5IDMzLjIyNyA4LjUyM0wyMTYgMzI1LjI4MmwtMy40NzUgMTYyLjIwNEMyMTIuMjM3IDUwMC45MzkgMjIzLjA2NCA1MTIgMjM2LjUyIDUxMmgzOC45NjFjMTMuNDU2IDAgMjQuMjgzLTExLjA2MSAyMy45OTUtMjQuNTE0TDI5NiAzMjUuMjgybDEzOC43MzUgODQuMTExYzExLjUwNiA2Ljk3NiAyNi40OTkgMy4xMyAzMy4yMjctOC41MjNsMTkuNDgtMzMuNzQxYzYuNzI4LTExLjY1MyAyLjU2My0yNi41NTktOS4yMzItMzMuMDM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTguOTQxIDggOCAxMTguOTE5IDggMjU2YzAgMTM3LjA1OSAxMTAuOTE5IDI0OCAyNDggMjQ4IDQ4LjE1NCAwIDk1LjM0Mi0xNC4xNCAxMzUuNDA4LTQwLjIyMyAxMi4wMDUtNy44MTUgMTQuNjI1LTI0LjI4OCA1LjU1Mi0zNS4zNzJsLTEwLjE3Ny0xMi40MzNjLTcuNjcxLTkuMzcxLTIxLjE3OS0xMS42NjctMzEuMzczLTUuMTI5QzMyNS45MiA0MjkuNzU3IDI5MS4zMTQgNDQwIDI1NiA0NDBjLTEwMS40NTggMC0xODQtODIuNTQyLTE4NC0xODRTMTU0LjU0MiA3MiAyNTYgNzJjMTAwLjEzOSAwIDE4NCA1Ny42MTkgMTg0IDE2MCAwIDM4Ljc4Ni0yMS4wOTMgNzkuNzQyLTU4LjE3IDgzLjY5My0xNy4zNDktLjQ1NC0xNi45MS0xMi44NTctMTMuNDc2LTMwLjAyNGwyMy40MzMtMTIxLjExQzM5NC42NTMgMTQ5Ljc1IDM4My4zMDggMTM2IDM2OC4yMjUgMTM2aC00NC45ODFhMTMuNTE4IDEzLjUxOCAwIDAgMC0xMy40MzIgMTEuOTkzbC0uMDEuMDkyYy0xNC42OTctMTcuOTAxLTQwLjQ0OC0yMS43NzUtNTkuOTcxLTIxLjc3NS03NC41OCAwLTEzNy44MzEgNjIuMjM0LTEzNy44MzEgMTUxLjQ2IDAgNjUuMzAzIDM2Ljc4NSAxMDUuODcgOTYgMTA1Ljg3IDI2Ljk4NCAwIDU3LjM2OS0xNS42MzcgNzQuOTkxLTM4LjMzMyA5LjUyMiAzNC4xMDQgNDAuNjEzIDM0LjEwMyA3MC43MSAzNC4xMDNDNDYyLjYwOSAzNzkuNDEgNTA0IDMwNy43OTggNTA0IDIzMiA1MDQgOTUuNjUzIDM5NC4wMjMgOCAyNTYgOHptLTIxLjY4IDMwNC40M2MtMjIuMjQ5IDAtMzYuMDctMTUuNjIzLTM2LjA3LTQwLjc3MSAwLTQ0Ljk5MyAzMC43NzktNzIuNzI5IDU4LjYzLTcyLjcyOSAyMi4yOTIgMCAzNS42MDEgMTUuMjQxIDM1LjYwMSA0MC43NyAwIDQ1LjA2MS0zMy44NzUgNzIuNzMtNTguMTYxIDcyLjczelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdGxhcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguMzggMjA4aC0zOS4wOWMtMS40OSAyNy4wMy02LjU0IDUxLjM1LTE0LjIxIDcwLjQxIDI3LjcxLTEzLjI0IDQ4LjAyLTM5LjE5IDUzLjMtNzAuNDF6bTAtMzJjLTUuMjktMzEuMjItMjUuNTktNTcuMTctNTMuMy03MC40MSA3LjY4IDE5LjA2IDEyLjcyIDQzLjM4IDE0LjIxIDcwLjQxaDM5LjA5ek0yMjQgOTcuMzFjLTcuNjkgNy40NS0yMC43NyAzNC40Mi0yMy40MyA3OC42OWg0Ni44N2MtMi42Ny00NC4yNi0xNS43NS03MS4yNC0yMy40NC03OC42OXptLTQxLjA4IDguMjhjLTI3LjcxIDEzLjI0LTQ4LjAyIDM5LjE5LTUzLjMgNzAuNDFoMzkuMDljMS40OS0yNy4wMyA2LjUzLTUxLjM1IDE0LjIxLTcwLjQxem0wIDE3Mi44MmMtNy42OC0xOS4wNi0xMi43Mi00My4zOC0xNC4yMS03MC40MWgtMzkuMDljNS4yOCAzMS4yMiAyNS41OSA1Ny4xNyA1My4zIDcwLjQxek0yNDcuNDMgMjA4aC00Ni44N2MyLjY2IDQ0LjI2IDE1Ljc0IDcxLjI0IDIzLjQzIDc4LjY5IDcuNy03LjQ1IDIwLjc4LTM0LjQzIDIzLjQ0LTc4LjY5ek00NDggMzU4LjRWMjUuNmMwLTE2LTkuNi0yNS42LTI1LjYtMjUuNkg5NkM0MS42IDAgMCA0MS42IDAgOTZ2MzIwYzAgNTQuNCA0MS42IDk2IDk2IDk2aDMyNi40YzEyLjggMCAyNS42LTkuNiAyNS42LTI1LjZ2LTE2YzAtNi40LTMuMi0xMi44LTkuNi0xOS4yLTMuMi0xNi0zLjItNjAuOCAwLTczLjYgNi40LTMuMiA5LjYtOS42IDkuNi0xOS4yek0yMjQgNjRjNzAuNjkgMCAxMjggNTcuMzEgMTI4IDEyOHMtNTcuMzEgMTI4LTEyOCAxMjhTOTYgMjYyLjY5IDk2IDE5MiAxNTMuMzEgNjQgMjI0IDY0em0xNjAgMzg0SDk2Yy0xOS4yIDAtMzItMTIuOC0zMi0zMnMxNi0zMiAzMi0zMmgyODh2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF0b20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIzLjk5OTA4LDIyNGEzMiwzMiwwLDEsMCwzMi4wMDc4MiwzMkEzMi4wNjQzMSwzMi4wNjQzMSwwLDAsMCwyMjMuOTk5MDgsMjI0Wm0yMTQuMTcyLTk2Yy0xMC44NzctMTkuNS00MC41MDk3OS01MC43NS0xMTYuMjc1NDQtNDEuODc1QzMwMC4zOTE2OCwzNC44NzUsMjY3LjYzMzg2LDAsMjIzLjk5OTA4LDBzLTc2LjM5MDY2LDM0Ljg3NS05Ny44OTY1Myw4Ni4xMjVDNTAuMzM2OSw3Ny4zNzUsMjAuNzA2LDEwOC41LDkuODI5MDcsMTI4LTYuNTQ5ODQsMTU3LjM3NS01LjE3NDg0LDIwMS4xMjUsMzQuOTU4LDI1Ni01LjE3NDg0LDMxMC44NzUtNi41NDk4NCwzNTQuNjI1LDkuODI5MDcsMzg0YzI5LjEzMDg3LDUyLjM3NSwxMDEuNjQ2NTIsNDMuNjI1LDExNi4yNzM0OCw0MS44NzVDMTQ3LjYwODQyLDQ3Ny4xMjUsMTgwLjM2NDI5LDUxMiwyMjMuOTk5MDgsNTEyczc2LjM5MjYtMzQuODc1LDk3Ljg5NjUyLTg2LjEyNWMxNC42Mjg5MSwxLjc1LDg3LjE0NDU2LDEwLjUsMTE2LjI3NTQ0LTQxLjg3NUM0NTQuNTUsMzU0LjYyNSw0NTMuMTc1LDMxMC44NzUsNDEzLjA0MDE3LDI1Niw0NTMuMTc1LDIwMS4xMjUsNDU0LjU1LDE1Ny4zNzUsNDM4LjE3MSwxMjhaTTYzLjMzODg2LDM1MmMtNC03LjI1LS4xMjUtMjQuNzUsMTUuMDAzOTEtNDguMjUsNi44NzY5NSw2LjUsMTQuMTI4OTEsMTIuODc1LDIxLjg4MDg3LDE5LjEyNSwxLjYyNSwxMy43NSw0LDI3LjEyNSw2Ljc1LDQwLjEyNUM4Mi4zNDQ3MiwzNjMuODc1LDY3LjA5MDgxLDM1OC42MjUsNjMuMzM4ODYsMzUyWm0zNi44ODQ3OC0xNjIuODc1Yy03Ljc1Miw2LjI1LTE1LjAwMzkyLDEyLjYyNS0yMS44ODA4NywxOS4xMjUtMTUuMTI4OTEtMjMuNS0xOS4wMDM5Mi00MS0xNS4wMDM5MS00OC4yNSwzLjM3Ny02LjEyNSwxNi4zNzg5MS0xMS41LDM3Ljg4NDc4LTExLjUsMS43NSwwLDMuODc1LjM3NSw1Ljc1LjM3NUMxMDQuMDk4NjQsMTYyLjI1LDEwMS44NDg2NCwxNzUuNjI1LDEwMC4yMjM2NCwxODkuMTI1Wk0yMjMuOTk5MDgsNjRjOS41MDE5NSwwLDIyLjI1NTg2LDEzLjUsMzMuODgyODIsMzcuMjUtMTEuMjUyLDMuNzUtMjIuNTAzOTEsOC0zMy44ODI4MiwxMi44NzUtMTEuMzc3LTQuODc1LTIyLjYyODkyLTkuMTI1LTMzLjg4MjgzLTEyLjg3NUMyMDEuNzQ1MTYsNzcuNSwyMTQuNDk3MTIsNjQsMjIzLjk5OTA4LDY0Wm0wLDM4NGMtOS41MDIsMC0yMi4yNTM5Mi0xMy41LTMzLjg4MjgzLTM3LjI1LDExLjI1MzkxLTMuNzUsMjIuNTA1ODctOCwzMy44ODI4My0xMi44NzVDMjM1LjM3OCw0MDIuNzUsMjQ2LjYyOTk0LDQwNywyNTcuODgxOSw0MTAuNzUsMjQ2LjI1NDk0LDQzNC41LDIzMy41MDEsNDQ4LDIyMy45OTkwOCw0NDhabTAtMTEyYTgwLDgwLDAsMSwxLDgwLTgwQTgwLjAwMDIzLDgwLjAwMDIzLDAsMCwxLDIyMy45OTkwOCwzMzZaTTM4NC42NTkzLDM1MmMtMy42MjUsNi42MjUtMTkuMDAzOTIsMTEuODc1LTQzLjYzNDc5LDExLDIuNzUyLTEzLDUuMTI3LTI2LjM3NSw2Ljc1Mi00MC4xMjUsNy43NTE5NS02LjI1LDE1LjAwMzkxLTEyLjYyNSwyMS44Nzg5MS0xOS4xMjVDMzg0Ljc4NDMsMzI3LjI1LDM4OC42NTkzLDM0NC43NSwzODQuNjU5MywzNTJaTTM2OS42NTUzOCwyMDguMjVjLTYuODc1LTYuNS0xNC4xMjctMTIuODc1LTIxLjg3ODkxLTE5LjEyNS0xLjYyNS0xMy41LTMuODc1LTI2Ljg3NS02Ljc1Mi00MC4yNSwxLjg3NSwwLDQuMDAyLS4zNzUsNS43NTItLjM3NSwyMS41MDM5MSwwLDM0LjUwNzgyLDUuMzc1LDM3Ljg4MjgzLDExLjVDMzg4LjY1OTMsMTY3LjI1LDM4NC43ODQzLDE4NC43NSwzNjkuNjU1MzgsMjA4LjI1WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdWRpb0Rlc2NyaXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2Mi45MjUgMjM4LjcwOWw4LjgyMiAzMC42NTVoLTI1LjYwNmw5LjA0MS0zMC42NTJjMS4yNzctNC40MjEgMi42NTEtOS45OTQgMy44NzItMTUuMjQ1IDEuMjIgNS4yNTEgMi41OTQgMTAuODIzIDMuODcxIDE1LjI0MnptMTY2LjQ3NC0zMi4wOTloLTE0LjUyM3Y5OC43ODFoMTQuNTIzYzI5Ljc3NiAwIDQ2LjE3NS0xNy42NzggNDYuMTc1LTQ5Ljc3NiAwLTMyLjIzOS0xNy40OS00OS4wMDUtNDYuMTc1LTQ5LjAwNXpNNTEyIDExMnYyODhjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxMTJjMC0yNi41MSAyMS40OS00OCA0OC00OGg0MTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHpNMjQ1LjQ1OSAzMzYuMTM5bC01Ny4wOTctMTY4QTEyLjAwMSAxMi4wMDEgMCAwIDAgMTc3IDE2MGgtMzUuODk0YTEyLjAwMSAxMi4wMDEgMCAwIDAtMTEuMzYyIDguMTM5bC01Ny4wOTcgMTY4QzcwLjAwMyAzNDMuOTIyIDc1Ljc4OSAzNTIgODQuMDA5IDM1MmgyOS4xMzNhMTIgMTIgMCAwIDAgMTEuNTM1LTguNjkzbDguNTc0LTI5LjkwNmg1MS4zNjdsOC43OTMgMjkuOTc3QTEyIDEyIDAgMCAwIDIwNC45MjYgMzUyaDI5LjE3MmM4LjIyIDAgMTQuMDA2LTguMDc4IDExLjM2MS0xNS44NjF6bTE4NC43MDEtODAuNTI1YzAtNTguOTc3LTM3LjkxOS05NS42MTQtOTguOTYtOTUuNjE0aC01Ny4zNjZjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTY4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJIMzMxLjJjNjEuMDQxIDAgOTguOTYtMzYuOTMzIDk4Ljk2LTk2LjM4NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXdhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTcuMTIgMzYyLjYzYy04LjY5LTguNjktNC4xNi02LjI0LTI1LjEyLTExLjg1LTkuNTEtMi41NS0xNy44Ny03LjQ1LTI1LjQzLTEzLjMyTDEuMiA0NDguN2MtNC4zOSAxMC43NyAzLjgxIDIyLjQ3IDE1LjQzIDIyLjAzbDUyLjY5LTIuMDFMMTA1LjU2IDUwN2M4IDguNDQgMjIuMDQgNS44MSAyNi40My00Ljk2bDUyLjA1LTEyNy42MmMtMTAuODQgNi4wNC0yMi44NyA5LjU4LTM1LjMxIDkuNTgtMTkuNSAwLTM3LjgyLTcuNTktNTEuNjEtMjEuMzd6TTM4Mi44IDQ0OC43bC00NS4zNy0xMTEuMjRjLTcuNTYgNS44OC0xNS45MiAxMC43Ny0yNS40MyAxMy4zMi0yMS4wNyA1LjY0LTE2LjQ1IDMuMTgtMjUuMTIgMTEuODUtMTMuNzkgMTMuNzgtMzIuMTIgMjEuMzctNTEuNjIgMjEuMzctMTIuNDQgMC0yNC40Ny0zLjU1LTM1LjMxLTkuNThMMjUyIDUwMi4wNGM0LjM5IDEwLjc3IDE4LjQ0IDEzLjQgMjYuNDMgNC45NmwzNi4yNS0zOC4yOCA1Mi42OSAyLjAxYzExLjYyLjQ0IDE5LjgyLTExLjI3IDE1LjQzLTIyLjAzek0yNjMgMzQwYzE1LjI4LTE1LjU1IDE3LjAzLTE0LjIxIDM4Ljc5LTIwLjE0IDEzLjg5LTMuNzkgMjQuNzUtMTQuODQgMjguNDctMjguOTggNy40OC0yOC40IDUuNTQtMjQuOTcgMjUuOTUtNDUuNzUgMTAuMTctMTAuMzUgMTQuMTQtMjUuNDQgMTAuNDItMzkuNTgtNy40Ny0yOC4zOC03LjQ4LTI0LjQyIDAtNTIuODMgMy43Mi0xNC4xNC0uMjUtMjkuMjMtMTAuNDItMzkuNTgtMjAuNDEtMjAuNzgtMTguNDctMTcuMzYtMjUuOTUtNDUuNzUtMy43Mi0xNC4xNC0xNC41OC0yNS4xOS0yOC40Ny0yOC45OC0yNy44OC03LjYxLTI0LjUyLTUuNjItNDQuOTUtMjYuNDEtMTAuMTctMTAuMzUtMjUtMTQuNC0zOC44OS0xMC42MS0yNy44NyA3LjYtMjMuOTggNy42MS01MS45IDAtMTMuODktMy43OS0yOC43Mi4yNS0zOC44OSAxMC42MS0yMC40MSAyMC43OC0xNy4wNSAxOC44LTQ0Ljk0IDI2LjQxLTEzLjg5IDMuNzktMjQuNzUgMTQuODQtMjguNDcgMjguOTgtNy40NyAyOC4zOS01LjU0IDI0Ljk3LTI1Ljk1IDQ1Ljc1LTEwLjE3IDEwLjM1LTE0LjE1IDI1LjQ0LTEwLjQyIDM5LjU4IDcuNDcgMjguMzYgNy40OCAyNC40IDAgNTIuODItMy43MiAxNC4xNC4yNSAyOS4yMyAxMC40MiAzOS41OSAyMC40MSAyMC43OCAxOC40NyAxNy4zNSAyNS45NSA0NS43NSAzLjcyIDE0LjE0IDE0LjU4IDI1LjE5IDI4LjQ3IDI4Ljk4QzEwNC42IDMyNS45NiAxMDYuMjcgMzI1IDEyMSAzNDBjMTMuMjMgMTMuNDcgMzMuODQgMTUuODggNDkuNzQgNS44MmEzOS42NzYgMzkuNjc2IDAgMCAxIDQyLjUzIDBjMTUuODkgMTAuMDYgMzYuNSA3LjY1IDQ5LjczLTUuODJ6TTk3LjY2IDE3NS45NmMwLTUzLjAzIDQyLjI0LTk2LjAyIDk0LjM0LTk2LjAyczk0LjM0IDQyLjk5IDk0LjM0IDk2LjAyLTQyLjI0IDk2LjAyLTk0LjM0IDk2LjAyLTk0LjM0LTQyLjk5LTk0LjM0LTk2LjAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWJ5Q2FycmlhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0LjggMTdjLTExLjMtMTcuOC0zNy4yLTIyLjgtNTQtOS40QzM1LjMgNTEuOSAwIDExOCAwIDE5MmgyNTZMMTQ0LjggMTd6TTQ5NiA5NmgtNDhjLTM1LjMgMC02NCAyOC43LTY0IDY0djY0SDBjMCA1MC42IDIzIDk2LjQgNjAuMyAxMzAuN0MyNS43IDM2My42IDAgMzk0LjcgMCA0MzJjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTguOS0xLjgtMTcuMi00LjQtMjUuMiAyMS42IDUuOSA0NC42IDkuMiA2OC40IDkuMnM0Ni45LTMuMyA2OC40LTkuMmMtMi43IDgtNC40IDE2LjMtNC40IDI1LjIgMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTM3LjMtMjUuNy02OC40LTYwLjMtNzcuM0M0MjUgMzIwLjQgNDQ4IDI3NC42IDQ0OCAyMjR2LTY0aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2ek04MCA0NjRjLTE3LjYgMC0zMi0xNC40LTMyLTMyczE0LjQtMzIgMzItMzIgMzIgMTQuNCAzMiAzMi0xNC40IDMyLTMyIDMyem0zMjAtMzJjMCAxNy42LTE0LjQgMzItMzIgMzJzLTMyLTE0LjQtMzItMzIgMTQuNC0zMiAzMi0zMiAzMiAxNC40IDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAxNjBjNDQuMiAwIDgwLTM1LjggODAtODBTMjM2LjIgMCAxOTIgMHMtODAgMzUuOC04MCA4MCAzNS44IDgwIDgwIDgwem0tNTMuNCAyNDguOGwyNS42LTMyLTYxLjUtNTEuMkw1Ni44IDM4M2MtMTEuNCAxNC4yLTExLjcgMzQuNC0uOCA0OWw0OCA2NGM3LjkgMTAuNSAxOS45IDE2IDMyIDE2IDguMyAwIDE2LjgtMi42IDI0LTggMTcuNy0xMy4yIDIxLjItMzguMyA4LTU2bC0yOS40LTM5LjJ6bTE0Mi43LTgzLjJsLTYxLjUgNTEuMiAyNS42IDMyTDIxNiA0NDhjLTEzLjIgMTcuNy05LjcgNDIuOCA4IDU2IDcuMiA1LjQgMTUuNiA4IDI0IDggMTIuMiAwIDI0LjItNS41IDMyLTE2bDQ4LTY0YzEwLjktMTQuNiAxMC42LTM0LjgtLjgtNDlsLTQ1LjktNTcuNHpNMzc2LjcgMTQ1Yy0xMi43LTE4LjEtMzcuNi0yMi40LTU1LjctOS44bC00MC42IDI4LjVjLTUyLjcgMzctMTI0LjIgMzctMTc2LjggMEw2MyAxMzUuM0M0NC45IDEyMi42IDIwIDEyNyA3LjMgMTQ1LTUuNCAxNjMuMS0xIDE4OCAxNyAyMDAuN2w0MC42IDI4LjVjMTcgMTEuOSAzNS40IDIwLjkgNTQuNCAyNy45VjI4OGgxNjB2LTMwLjhjMTktNyAzNy40LTE2IDU0LjQtMjcuOWw0MC42LTI4LjVjMTguMS0xMi44IDIyLjQtMzcuNyA5LjctNTUuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFja3NwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NiA2NEgyMDUuMjZBNjMuOTcgNjMuOTcgMCAwIDAgMTYwIDgyLjc1TDkuMzcgMjMzLjM3Yy0xMi41IDEyLjUtMTIuNSAzMi43NiAwIDQ1LjI1TDE2MCA0MjkuMjVjMTIgMTIgMjguMjggMTguNzUgNDUuMjUgMTguNzVINTc2YzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWMTI4YzAtMzUuMzUtMjguNjUtNjQtNjQtNjR6bS04NC42OSAyNTQuMDZjNi4yNSA2LjI1IDYuMjUgMTYuMzggMCAyMi42M2wtMjIuNjIgMjIuNjJjLTYuMjUgNi4yNS0xNi4zOCA2LjI1LTIyLjYzIDBMMzg0IDMwMS4yNWwtNjIuMDYgNjIuMDZjLTYuMjUgNi4yNS0xNi4zOCA2LjI1LTIyLjYzIDBsLTIyLjYyLTIyLjYyYy02LjI1LTYuMjUtNi4yNS0xNi4zOCAwLTIyLjYzTDMzOC43NSAyNTZsLTYyLjA2LTYyLjA2Yy02LjI1LTYuMjUtNi4yNS0xNi4zOCAwLTIyLjYzbDIyLjYyLTIyLjYyYzYuMjUtNi4yNSAxNi4zOC02LjI1IDIyLjYzIDBMMzg0IDIxMC43NWw2Mi4wNi02Mi4wNmM2LjI1LTYuMjUgMTYuMzgtNi4yNSAyMi42MyAwbDIyLjYyIDIyLjYyYzYuMjUgNi4yNSA2LjI1IDE2LjM4IDAgMjIuNjNMNDI5LjI1IDI1Nmw2Mi4wNiA2Mi4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFja3dhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNSAyODAuNmwxOTIgMTYwYzIwLjYgMTcuMiA1Mi41IDIuOCA1Mi41LTI0LjZWOTZjMC0yNy40LTMxLjktNDEuOC01Mi41LTI0LjZsLTE5MiAxNjBjLTE1LjMgMTIuOC0xNS4zIDM2LjQgMCA0OS4yem0yNTYgMGwxOTIgMTYwYzIwLjYgMTcuMiA1Mi41IDIuOCA1Mi41LTI0LjZWOTZjMC0yNy40LTMxLjktNDEuOC01Mi41LTI0LjZsLTE5MiAxNjBjLTE1LjMgMTIuOC0xNS4zIDM2LjQgMCA0OS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWNvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTguOTIgMzM2LjM5YzM0Ljg5LTM0Ljg5IDQ0LjItNTkuNyA1NC4wNS04NiAxMC42MS0yOC4yOSAyMS41OS01Ny41NCA2MS4zNy05Ny4zNHM2OS4wNS01MC43NyA5Ny4zNS02MS4zOGMyMy44OC05IDQ2LjY0LTE3LjY4IDc2Ljc5LTQ1LjM3TDQ3MC44MSA4LjkxYTMxIDMxIDAgMCAwLTQwLjE4LTIuODNjLTEzLjY0IDEwLjEtMjUuMTUgMTQuMzktNDEgMjAuM0MyNDcgNzkuNTIgMjA5LjI2IDE5MS4yOSAyMDAuNjUgMjE0LjFjLTI5Ljc1IDc4LjgzLTg5LjU1IDk0LjY4LTk4LjcyIDk4LjA5LTI0Ljg2IDkuMjYtNTQuNzMgMjAuMzgtOTEuMDcgNTAuMzZDLTMgMzc0LTMuNjMgMzk1IDkuMDcgNDA3LjYxbDM1Ljc2IDM1LjUxQzgwIDQxMC41MiAxMDcgNDAwLjE1IDEzMyAzOTAuMzljMjYuMjctOS44NCA1MS4wNi0xOS4xMiA4NS45Mi01NHptMzQ4LTIzMmwtMzUuNzUtMzUuNTFjLTM1LjE5IDMyLjYzLTYyLjE4IDQzLTg4LjI1IDUyLjc5LTI2LjI2IDkuODUtNTEuMDYgMTkuMTYtODUuOTUgNTRzLTQ0LjE5IDU5LjY5LTU0IDg2QzI5Mi4zMyAyOTAgMjgxLjM0IDMxOS4yMiAyNDEuNTUgMzU5cy02OSA1MC43My05Ny4zIDYxLjMyYy0yMy44NiA5LTQ2LjYxIDE3LjY2LTc2LjcyIDQ1LjMzbDM3LjY4IDM3LjQzYTMxIDMxIDAgMCAwIDQwLjE4IDIuODJjMTMuNi0xMC4wNiAyNS4wOS0xNC4zNCA0MC45NC0yMC4yNCAxNDIuMi01MyAxODAtMTY0LjEgMTg4Ljk0LTE4Ny42OUM0MDUgMjE5LjE4IDQ2NC44IDIwMy4zIDQ3NCAxOTkuODZjMjQuODctOS4yNyA1NC43NC0yMC40IDkxLjExLTUwLjQxIDEzLjg5LTExLjQgMTQuNTItMzIuNDUgMS44Mi00NS4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFjdGVyaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyLjM1LDIyNi40QTE3LjcxLDE3LjcxLDAsMCwwLDI4MS40NiwyMDNsLTQtOS4wOGExMjEuMjksMTIxLjI5LDAsMCwxLDEyLjM2LTMuMDhBODMuMzQsODMuMzQsMCwwLDAsMzIzLjU3LDE3N2wxMCw5YTE3Ljc2LDE3Ljc2LDAsMSwwLDIzLjkyLTI2LjI3bC05LjcyLTguNzZhODMuMTIsODMuMTIsMCwwLDAsMTEuNjUtNDguMThsMTEuODUtMy41MWExNy43MywxNy43MywwLDEsMC0xMC4xNS0zNGwtMTEuMzQsMy4zNmE4NCw4NCwwLDAsMC0zNi4zOC0zNS41N2wyLjg0LTEwLjg1YTE3LjgsMTcuOCwwLDAsMC0zNC40Ny04LjkzbC0yLjgyLDEwLjc4YTgzLjI1LDgzLjI1LDAsMCwwLTE2Ljc0LDEuMUMyNTAuODMsMjcsMjQwLDMwLjIyLDIyOS4xLDMzLjM5bC0zLjM4LTkuNDZhMTcuOCwxNy44LDAsMCwwLTMzLjU2LDExLjg5bDMuNDksOS44YTI4Ni43NCwyODYuNzQsMCwwLDAtNDMuOTQsMjMuNTdsLTYuMzItOC40M2ExNy45LDE3LjksMCwwLDAtMjQuOTQtMy42QTE3LjY5LDE3LjY5LDAsMCwwLDExNi44NCw4Mmw2LjQ1LDguNjFhMjg2LjU5LDI4Ni41OSwwLDAsMC0zNC45NSwzNS4zM2wtOC44Mi02LjQyYTE3Ljg0LDE3Ljg0LDAsMCwwLTI0Ljg5LDMuODYsMTcuNjYsMTcuNjYsMCwwLDAsMy44OCwyNC43N2w4Ljg4LDYuNDdhMjg2LjYsMjg2LjYsMCwwLDAtMjMsNDMuOTFsLTEwLjQ4LTMuNTlhMTcuNzMsMTcuNzMsMCwxLDAtMTEuNTksMzMuNTJMMzIuNjcsMjMyYy0yLjc5LDEwLTUuNzksMTkuODQtNy41MiwzMC4yMmE4My4xNiw4My4xNiwwLDAsMC0uODIsMTlsLTExLjU4LDMuNDNhMTcuNzMsMTcuNzMsMCwxLDAsMTAuMTMsMzRsMTEuMjctMy4zM2E4My41MSw4My41MSwwLDAsMCwzNi4zOSwzNS40M2wtMi44OCwxMS4wNmExNy44MSwxNy44MSwwLDAsMCwzNC40OCw4LjkybDIuODctMTFjMSwwLDIuMDcuMjYsMy4xLjI2YTgzLjM5LDgzLjM5LDAsMCwwLDQ1LjY1LTEzLjg4bDguNTksOC44YTE3Ljc3LDE3Ljc3LDAsMCwwLDI1LjU2LTI0LjdsLTkuMTQtOS4zN2E4My40MSw4My40MSwwLDAsMCwxMi4wOC0zMS4wNSwxMTkuMDgsMTE5LjA4LDAsMCwxLDMuODctMTUuNTNsOSw0LjIyYTE3Ljc0LDE3Ljc0LDAsMSwwLDE1LjE1LTMyLjA5bC04LjgtNC4xMWMuNjctMSwxLjItMi4wOCwxLjktMy4wNWExMTkuODksMTE5Ljg5LDAsMCwxLDcuODctOS40MSwxMjEuNzMsMTIxLjczLDAsMCwxLDExLjY1LTExLjQsMTE5LjQ5LDExOS40OSwwLDAsMSw5Ljk0LTcuODJjMS4xMi0uNzcsMi4zMi0xLjQyLDMuNDctMi4xNWwzLjkyLDguODVhMTcuODYsMTcuODYsMCwwLDAsMTYuMzIsMTAuNThBMTguMTQsMTguMTQsMCwwLDAsMjcyLjM1LDIyNi40Wk0xMjgsMjU2YTMyLDMyLDAsMSwxLDMyLTMyQTMyLDMyLDAsMCwxLDEyOCwyNTZabTgwLTk2YTE2LDE2LDAsMSwxLDE2LTE2QTE2LDE2LDAsMCwxLDIwOCwxNjBabTQzMS4yNiw0NS4zYTE3Ljc5LDE3Ljc5LDAsMCwwLTE3LjA2LTEyLjY5LDE3LjU1LDE3LjU1LDAsMCwwLTUuMDguNzRsLTExLjI3LDMuMzNhODMuNjEsODMuNjEsMCwwLDAtMzYuMzktMzUuNDNsMi44OC0xMS4wNmExNy44MSwxNy44MSwwLDAsMC0zNC40OC04LjkxbC0yLjg3LDExYy0xLDAtMi4wNy0uMjYtMy4xLS4yNmE4My4zMiw4My4zMiwwLDAsMC00NS42NSwxMy44OWwtOC41OS04LjgxYTE3Ljc3LDE3Ljc3LDAsMCwwLTI1LjU2LDI0LjdsOS4xNCw5LjM3YTgzLjI4LDgzLjI4LDAsMCwwLTEyLjA4LDMxLjA2LDExOS4zNCwxMTkuMzQsMCwwLDEtMy44NywxNS41MmwtOS00LjIyYTE3Ljc0LDE3Ljc0LDAsMSwwLTE1LjE1LDMyLjA5bDguOCw0LjExYy0uNjcsMS0xLjIsMi4wOC0xLjg5LDMuMDVhMTE3LjcxLDExNy43MSwwLDAsMS03Ljk0LDkuNDcsMTE5LDExOSwwLDAsMS0xMS41NywxMS4zMywxMjEuNTksMTIxLjU5LDAsMCwxLTEwLDcuODNjLTEuMTIuNzctMi4zMiwxLjQyLTMuNDcsMi4xNWwtMy45Mi04Ljg1YTE3Ljg2LDE3Ljg2LDAsMCwwLTE2LjMyLTEwLjU4LDE4LjE0LDE4LjE0LDAsMCwwLTcuMTgsMS41QTE3LjcxLDE3LjcxLDAsMCwwLDM1OC41NCwzMDlsNCw5LjA4YTExOC43MSwxMTguNzEsMCwwLDEtMTIuMzYsMy4wOCw4My4zNCw4My4zNCwwLDAsMC0zMy43NywxMy45bC0xMC05YTE3Ljc3LDE3Ljc3LDAsMSwwLTIzLjkyLDI2LjI4bDkuNzIsOC43NWE4My4xMiw4My4xMiwwLDAsMC0xMS42NSw0OC4xOGwtMTEuODYsMy41MWExNy43MywxNy43MywwLDEsMCwxMC4xNiwzNGwxMS4zNC0zLjM2QTg0LDg0LDAsMCwwLDMyNi42MSw0NzlsLTIuODQsMTAuODVhMTcuOCwxNy44LDAsMCwwLDM0LjQ3LDguOTNMMzYxLjA2LDQ4OGE4My4zLDgzLjMsMCwwLDAsMTYuNzQtMS4xYzExLjM3LTEuODksMjIuMjQtNS4wNywzMy4xLTguMjRsMy4zOCw5LjQ2YTE3LjgsMTcuOCwwLDAsMCwzMy41Ni0xMS44OWwtMy40OS05Ljc5YTI4Ny42NiwyODcuNjYsMCwwLDAsNDMuOTQtMjMuNThsNi4zMiw4LjQzYTE3Ljg4LDE3Ljg4LDAsMCwwLDI0LjkzLDMuNkExNy42NywxNy42NywwLDAsMCw1MjMuMTYsNDMwbC02LjQ1LTguNjFhMjg3LjM3LDI4Ny4zNywwLDAsMCwzNC45NS0zNS4zNGw4LjgyLDYuNDJhMTcuNzYsMTcuNzYsMCwxLDAsMjEtMjguNjNsLTguODgtNi40NmEyODcuMTcsMjg3LjE3LDAsMCwwLDIzLTQzLjkybDEwLjQ4LDMuNTlhMTcuNzMsMTcuNzMsMCwxLDAsMTEuNTktMzMuNTJMNjA3LjMzLDI4MGMyLjc5LTEwLDUuNzktMTkuODQsNy41Mi0zMC4yMWE4My4yNyw4My4yNywwLDAsMCwuODItMTkuMDVsMTEuNTgtMy40M0ExNy43LDE3LjcsMCwwLDAsNjM5LjI2LDIwNS4zWk00MTYsNDE2YTMyLDMyLDAsMSwxLDMyLTMyQTMyLDMyLDAsMCwxLDQxNiw0MTZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhY3Rlcml1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTEsMTAyLjkzQTIzLjc2LDIzLjc2LDAsMCwwLDQ4MS40Nyw4N2wtMTUuMTIsNC40OGExMTEuODUsMTExLjg1LDAsMCwwLTQ4LjUtNDcuNDJsMy43OS0xNC40N2EyMy43NCwyMy43NCwwLDAsMC00Ni0xMS45MWwtMy43NiwxNC4zN2ExMTEuOTQsMTExLjk0LDAsMCwwLTIyLjMzLDEuNDcsMzg2Ljc0LDM4Ni43NCwwLDAsMC00NC4zMywxMC40MWwtNC4zLTEyYTIzLjc0LDIzLjc0LDAsMCwwLTQ0Ljc1LDE1Ljg1bDQuMywxMi4wNWEzODMuNCwzODMuNCwwLDAsMC01OC42OSwzMS44M2wtOC0xMC42M2EyMy44NSwyMy44NSwwLDAsMC0zMy4yNC00LjgsMjMuNTcsMjMuNTcsMCwwLDAtNC44MywzMy4wOWw4LDEwLjYzYTM4Ni4xNCwzODYuMTQsMCwwLDAtNDYuNyw0Ny40NGwtMTEtOGEyMy42OCwyMy42OCwwLDEsMC0yOCwzOC4xN2wxMS4wOSw4LjA2YTM4My40NSwzODMuNDUsMCwwLDAtMzAuOTIsNTguNzVsLTEyLjkzLTQuNDNhMjMuNjUsMjMuNjUsMCwxLDAtMTUuNDcsNDQuNjlsMTMsNC40OGEzODUuODEsMzg1LjgxLDAsMCwwLTkuMyw0MC41M0ExMTEuNTgsMTExLjU4LDAsMCwwLDMyLjQ0LDM3NUwxNywzNzkuNTZhMjMuNjQsMjMuNjQsMCwwLDAsMTMuNTEsNDUuMzFsMTUtNC40NGExMTEuNDksMTExLjQ5LDAsMCwwLDQ4LjUzLDQ3LjI0bC0zLjg1LDE0Ljc1YTIzLjY2LDIzLjY2LDAsMCwwLDE3LDI4LjgzLDI0LjcsMjQuNywwLDAsMCw2LC43NSwyMy43MywyMy43MywwLDAsMCwyMy0xNy43TDE0MCw0NzkuNjdjMS4zNy4wNSwyLjc3LjM1LDQuMTMuMzVBMTExLjIyLDExMS4yMiwwLDAsMCwyMDUsNDYxLjVsMTEuNDUsMTEuNzRhMjMuNywyMy43LDAsMCwwLDM0LjA4LTMyLjkzbC0xMi4xOS0xMi41YTExMSwxMTEsMCwwLDAsMTYuMTEtNDEuNCwxNTguNjksMTU4LjY5LDAsMCwxLDUuMTYtMjAuNzFsMTIsNS42NGEyMy42NiwyMy42NiwwLDEsMCwyMC4xOS00Mi43OWwtMTEuNzItNS40OWMuODktMS4zMiwxLjU5LTIuNzcsMi41Mi00LjA2YTE1Ny44NiwxNTcuODYsMCwwLDEsMTAuNDYtMTIuNDksMTU5LjUsMTU5LjUsMCwwLDEsMTUuNTktMTUuMjgsMTYyLjE4LDE2Mi4xOCwwLDAsMSwxMy4yMy0xMC40YzEuNS0xLDMuMS0xLjg5LDQuNjMtMi44N2w1LjIzLDExLjhhMjMuNzQsMjMuNzQsMCwwLDAsNDMuNDgtMTkuMDhsLTUuMzYtMTIuMTFhMTU4Ljg3LDE1OC44NywwLDAsMSwxNi40OS00LjEsMTExLDExMSwwLDAsMCw0NS0xOC41NGwxMy4zMywxMmEyMy42OSwyMy42OSwwLDEsMCwzMS44OC0zNWwtMTIuOTQtMTEuNjdBMTEwLjgzLDExMC44MywwLDAsMCw0NzkuMjEsMTM3TDQ5NSwxMzIuMzJBMjMuNjEsMjMuNjEsMCwwLDAsNTExLDEwMi45M1pNMTYwLDM2OGE0OCw0OCwwLDEsMSw0OC00OEE0OCw0OCwwLDAsMSwxNjAsMzY4Wm04MC0xMzZhMjQsMjQsMCwxLDEsMjQtMjRBMjQsMjQsMCwwLDEsMjQwLDIzMlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFoYWkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2LjI1IDIwMi41MmwtMTEwLTE1LjQ0IDQxLjgyLTEwNC4zNGM2LjY3LTE2LjY0LTExLjYtMzIuMTgtMjYuNTktMjIuNjNMMzA3LjQ0IDEyMCAyNzMuMzUgMTIuODJDMjcwLjY0IDQuMjcgMjYzLjMyIDAgMjU2IDBjLTcuMzIgMC0xNC42NCA0LjI3LTE3LjM1IDEyLjgybC0zNC4wOSAxMDcuMTktOTQuMDQtNTkuODljLTE0Ljk5LTkuNTUtMzMuMjUgNS45OS0yNi41OSAyMi42M2w0MS44MiAxMDQuMzQtMTEwIDE1LjQzYy0xNy41NCAyLjQ2LTIxLjY4IDI2LjI3LTYuMDMgMzQuNjdsOTguMTYgNTIuNjYtNzQuNDggODMuNTRjLTEwLjkyIDEyLjI1LTEuNzIgMzAuOTMgMTMuMjkgMzAuOTMgMS4zMSAwIDIuNjctLjE0IDQuMDctLjQ1bDEwOC41Ny0yMy42NS00LjExIDExMi41NWMtLjQzIDExLjY1IDguODcgMTkuMjIgMTguNDEgMTkuMjIgNS4xNSAwIDEwLjM5LTIuMjEgMTQuMi03LjE4bDY4LjE4LTg4LjkgNjguMTggODguOWMzLjgxIDQuOTcgOS4wNCA3LjE4IDE0LjIgNy4xOCA5LjU0IDAgMTguODQtNy41NyAxOC40MS0xOS4yMmwtNC4xMS0xMTIuNTUgMTA4LjU3IDIzLjY1YzE3LjM2IDMuNzYgMjkuMjEtMTcuMiAxNy4zNS0zMC40OWwtNzQuNDgtODMuNTQgOTguMTYtNTIuNjZjMTUuNjQtOC4zOSAxMS41LTMyLjItNi4wNC0zNC42NnpNMzM4LjUxIDMxMS42OGwtNTEuODktMTEuMyAxLjk3IDUzLjc5TDI1NiAzMTEuNjhsLTMyLjU5IDQyLjQ5IDEuOTYtNTMuNzktNTEuODkgMTEuMyAzNS42LTM5LjkzLTQ2LjkyLTI1LjE3IDUyLjU3LTcuMzgtMTkuOTktNDkuODcgNDQuOTUgMjguNjJMMjU2IDE2Ni43MmwxNi4yOSA1MS4yMyA0NC45NS0yOC42Mi0xOS45OSA0OS44NyA1Mi41NyA3LjM4LTQ2LjkyIDI1LjE3IDM1LjYxIDM5LjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWxhbmNlU2NhbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCA0NDhIMzUyVjE1My4yNWMyMC40Mi04Ljk0IDM2LjEtMjYuMjIgNDMuMzgtNDcuNDdsMTMyLTQ0LjI2YzguMzgtMi44MSAxMi44OS0xMS44OCAxMC4wOC0yMC4yNmwtMTAuMTctMzAuMzRDNTI0LjQ4IDIuNTQgNTE1LjQxLTEuOTcgNTA3LjAzLjg0TDM4OS4xMSA0MC4zN0MzNzUuMyAxNi4zNiAzNDkuNjkgMCAzMjAgMGMtNDQuMTggMC04MCAzNS44Mi04MCA4MCAwIDMuNDMuNTkgNi43MSAxLjAxIDEwLjAzbC0xMjguMzkgNDMuMDVjLTguMzggMi44MS0xMi44OSAxMS44OC0xMC4wOCAyMC4yNmwxMC4xNyAzMC4zNGMyLjgxIDguMzggMTEuODggMTIuODkgMjAuMjYgMTAuMDhsMTQyLjA1LTQ3LjYzYzQuMDcgMi43NyA4LjQzIDUuMTIgMTIuOTkgNy4xMlY0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMjI0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMtLjAxLTguODQtNy4xNy0xNi0xNi4wMS0xNnptMTExLjk4LTE0NGMwLTE2LjE4IDEuMzQtOC43My04NS4wNS0xODEuNTEtMTcuNjUtMzUuMjktNjguMTktMzUuMzYtODUuODcgMC04Ny4xMiAxNzQuMjYtODUuMDQgMTY1Ljg0LTg1LjA0IDE4MS41MUgzODRjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MGgtLjAyek00NDAgMjg4bDcyLTE0NCA3MiAxNDRINDQwem0tMjY5LjA3LTM3LjUxYy0xNy42NS0zNS4yOS02OC4xOS0zNS4zNi04NS44NyAwQy0yLjA2IDQyNC43NS4wMiA0MTYuMzMuMDIgNDMySDBjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MGgtLjAyYzAtMTYuMTggMS4zNC04LjczLTg1LjA1LTE4MS41MXpNNTYgNDE2bDcyLTE0NCA3MiAxNDRINTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbGFuY2VTY2FsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDQ2NHYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgyMjRjOC44NCAwIDE2LTcuMTYgMTYtMTZWMTUzLjI1YzQuNTYtMiA4LjkyLTQuMzUgMTIuOTktNy4xMmwxNDIuMDUgNDcuNjNjOC4zOCAyLjgxIDE3LjQ1LTEuNzEgMjAuMjYtMTAuMDhsMTAuMTctMzAuMzRjMi44MS04LjM4LTEuNzEtMTcuNDUtMTAuMDgtMjAuMjZsLTEyOC40LTQzLjA1Yy40Mi0zLjMyIDEuMDEtNi42IDEuMDEtMTAuMDMgMC00NC4xOC0zNS44Mi04MC04MC04MC0yOS42OSAwLTU1LjMgMTYuMzYtNjkuMTEgNDAuMzdMMTMyLjk2LjgzYy04LjM4LTIuODEtMTcuNDUgMS43MS0yMC4yNiAxMC4wOGwtMTAuMTcgMzAuMzRjLTIuODEgOC4zOCAxLjcxIDE3LjQ1IDEwLjA4IDIwLjI2bDEzMiA0NC4yNmM3LjI4IDIxLjI1IDIyLjk2IDM4LjU0IDQzLjM4IDQ3LjQ3VjQ0OEgxMTJjLTguODQgMC0xNiA3LjE2LTE2IDE2ek0wIDMwNGMwIDQ0LjE4IDU3LjMxIDgwIDEyOCA4MHMxMjgtMzUuODIgMTI4LTgwaC0uMDJjMC0xNS42NyAyLjA4LTcuMjUtODUuMDUtMTgxLjUxLTE3LjY4LTM1LjM2LTY4LjIyLTM1LjI5LTg1Ljg3IDBDLTEuMzIgMjk1LjI3LjAyIDI4Ny44Mi4wMiAzMDRIMHptNTYtMTZsNzItMTQ0IDcyIDE0NEg1NnptMzI4LjAyIDE0NEgzODRjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MGgtLjAyYzAtMTUuNjcgMi4wOC03LjI1LTg1LjA1LTE4MS41MS0xNy42OC0zNS4zNi02OC4yMi0zNS4yOS04NS44NyAwLTg2LjM4IDE3Mi43OC04NS4wNCAxNjUuMzMtODUuMDQgMTgxLjUxek00NDAgNDE2bDcyLTE0NCA3MiAxNDRINDQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWxhbmNlU2NhbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMzNmgtLjAyYzAtMTYuMTggMS4zNC04LjczLTg1LjA1LTE4MS41MS0xNy42NS0zNS4yOS02OC4xOS0zNS4zNi04NS44NyAwQy0yLjA2IDMyOC43NS4wMiAzMjAuMzMuMDIgMzM2SDBjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MHpNMTI4IDE3Nmw3MiAxNDRINTZsNzItMTQ0em01MTEuOTggMTYwYzAtMTYuMTggMS4zNC04LjczLTg1LjA1LTE4MS41MS0xNy42NS0zNS4yOS02OC4xOS0zNS4zNi04NS44NyAwLTg3LjEyIDE3NC4yNi04NS4wNCAxNjUuODQtODUuMDQgMTgxLjUxSDM4NGMwIDQ0LjE4IDU3LjMxIDgwIDEyOCA4MHMxMjgtMzUuODIgMTI4LTgwaC0uMDJ6TTQ0MCAzMjBsNzItMTQ0IDcyIDE0NEg0NDB6bTg4IDEyOEgzNTJWMTUzLjI1YzIzLjUxLTEwLjI5IDQxLjE2LTMxLjQ4IDQ2LjM5LTU3LjI1SDUyOGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlY0OGMwLTguODQtNy4xNi0xNi0xNi0xNkgzODMuNjRDMzY5LjA0IDEyLjY4IDM0Ni4wOSAwIDMyMCAwcy00OS4wNCAxMi42OC02My42NCAzMkgxMTJjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDEyOS42MWM1LjIzIDI1Ljc2IDIyLjg3IDQ2Ljk2IDQ2LjM5IDU3LjI1VjQ0OEgxMTJjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkuMDM0IDggOCAxMTkuMDMzIDggMjU2czExMS4wMzQgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMzQgMjQ4LTI0OFMzOTIuOTY3IDggMjU2IDh6bTEzMC4xMDggMTE3Ljg5MmM2NS40NDggNjUuNDQ4IDcwIDE2NS40ODEgMjAuNjc3IDIzNS42MzdMMTUwLjQ3IDEwNS4yMTZjNzAuMjA0LTQ5LjM1NiAxNzAuMjI2LTQ0LjczNSAyMzUuNjM4IDIwLjY3NnpNMTI1Ljg5MiAzODYuMTA4Yy02NS40NDgtNjUuNDQ4LTcwLTE2NS40ODEtMjAuNjc3LTIzNS42MzdMMzYxLjUzIDQwNi43ODRjLTcwLjIwMyA0OS4zNTYtMTcwLjIyNiA0NC43MzYtMjM1LjYzOC0yMC42NzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbmRBaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxNjB2MTkyYzAgMzUuMyAyOC43IDY0IDY0IDY0aDk2Vjk2SDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NHptNTc2LTY0aC05NnYzMjBoOTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0ek0xOTIgNDE2aDI1NlY5NkgxOTJ2MzIwem0xNzYtMjMyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptMCA5NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNC0yNC0xMC43LTI0LTI0IDEwLjctMjQgMjQtMjR6bS05Ni05NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNC0yNC0xMC43LTI0LTI0IDEwLjctMjQgMjQtMjR6bTAgOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXJjb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDQ4VjY0aDE4djM4NEgwem0yNi44NTctLjI3M1Y2NEgzNnYzODMuNzI3aC05LjE0M3ptMjcuMTQzIDBWNjRoOC44NTd2MzgzLjcyN0g1NHptNDQuODU3IDBWNjRoOC44NTd2MzgzLjcyN2gtOC44NTd6bTM2IDBWNjRoMTcuNzE0djM4My43MjdoLTE3LjcxNHptNDQuODU3IDBWNjRoOC44NTd2MzgzLjcyN2gtOC44NTd6bTE4IDBWNjRoOC44NTd2MzgzLjcyN2gtOC44NTd6bTE4IDBWNjRoOC44NTd2MzgzLjcyN2gtOC44NTd6bTM1LjcxNSAwVjY0aDE4djM4My43MjdoLTE4em00NC44NTcgMFY2NGgxOHYzODMuNzI3aC0xOHptMzUuOTk5IDBWNjRoMTguMDAxdjM4My43MjdoLTE4LjAwMXptMzYuMDAxIDBWNjRoMTguMDAxdjM4My43MjdoLTE4LjAwMXptMjYuODU3IDBWNjRoMTh2MzgzLjcyN2gtMTh6bTQ1LjE0MyAwVjY0aDI2Ljg1N3YzODMuNzI3aC0yNi44NTd6bTM1LjcxNCAwVjY0aDkuMTQzdjM4My43MjdINDc2em0xOCAuMjczVjY0aDE4djM4NGgtMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTMyaDQxNmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2Vjc2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZIMTZDNy4xNjMgNjAgMCA2Ny4xNjMgMCA3NnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2em0wIDE2MGg0MTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtNDBjMC04LjgzNy03LjE2My0xNi0xNi0xNkgxNmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2em0wIDE2MGg0MTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtNDBjMC04LjgzNy03LjE2My0xNi0xNi0xNkgxNmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXNlYmFsbEJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4LjUgMzYzLjlsMjguOC0xMy45YzExLjEgMjIuOSAyNiA0My4yIDQ0LjEgNjAuOSAzNC00Mi41IDU0LjUtOTYuMyA1NC41LTE1NC45IDAtNTguNS0yMC40LTExMi4yLTU0LjItMTU0LjYtMTcuOCAxNy4zLTMyLjYgMzcuMS00My42IDU5LjVsLTI4LjctMTQuMWMxMi44LTI2IDMwLTQ5IDUwLjgtNjlDMzc1LjYgMzQuNyAzMTUgOCAyNDggOCAxODEuMSA4IDEyMC41IDM0LjYgNzUuOSA3Ny43YzIwLjcgMTkuOSAzNy45IDQyLjkgNTAuNyA2OC44bC0yOC43IDE0LjFjLTExLTIyLjMtMjUuNy00Mi4xLTQzLjUtNTkuNEMyMC40IDE0My43IDAgMTk3LjQgMCAyNTZjMCA1OC42IDIwLjQgMTEyLjMgNTQuNCAxNTQuNyAxOC4yLTE3LjcgMzMuMi0zOCA0NC4zLTYxbDI4LjggMTMuOWMtMTIuOSAyNi43LTMwLjMgNTAuMy01MS41IDcwLjcgNDQuNSA0My4xIDEwNS4xIDY5LjcgMTcyIDY5LjcgNjYuOCAwIDEyNy4zLTI2LjUgMTcxLjktNjkuNS0yMS4xLTIwLjQtMzguNS00My45LTUxLjQtNzAuNnptLTIyOC4zLTMybC0zMC41LTkuOGMxNC45LTQ2LjQgMTIuNy05My44LS42LTEzNGwzMC40LTEwYzE1IDQ1LjYgMTggOTkuOS43IDE1My44em0yMTYuMy0xNTMuNGwzMC40IDEwYy0xMy4yIDQwLjEtMTUuNSA4Ny41LS42IDEzNGwtMzAuNSA5LjhjLTE3LjMtNTQtMTQuMy0xMDguMy43LTE1My44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXNrZXRiYWxsQmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTIuMyAxMC4zYy00My44IDYuMy04Ni4yIDI0LjEtMTIyLjIgNTMuOGw3Ny40IDc3LjRjMjcuOC0zNS44IDQzLjMtODEuMiA0NC44LTEzMS4yek0yNDggMjIyTDQwNS45IDY0LjFjLTQyLjQtMzUtOTMuNi01My41LTE0NS41LTU2LjEtMS4yIDYzLjktMjEuNSAxMjIuMy01OC43IDE2Ny43TDI0OCAyMjJ6TTU2LjEgOTguMWMtMjkuNyAzNi00Ny41IDc4LjQtNTMuOCAxMjIuMiA1MC0xLjUgOTUuNS0xNyAxMzEuMi00NC44TDU2LjEgOTguMXptMjcyLjIgMjA0LjJjNDUuMy0zNy4xIDEwMy43LTU3LjQgMTY3LjctNTguNy0yLjYtNTEuOS0yMS4xLTEwMy4xLTU2LjEtMTQ1LjVMMjgyIDI1Nmw0Ni4zIDQ2LjN6TTI0OCAyOTBMOTAuMSA0NDcuOWM0Mi40IDM0LjkgOTMuNiA1My41IDE0NS41IDU2LjEgMS4zLTY0IDIxLjYtMTIyLjQgNTguNy0xNjcuN0wyNDggMjkwem0xOTEuOSAxMjMuOWMyOS43LTM2IDQ3LjUtNzguNCA1My44LTEyMi4yLTUwLjEgMS42LTk1LjUgMTcuMS0xMzEuMiA0NC44bDc3LjQgNzcuNHpNMTY3LjcgMjA5LjdDMTIyLjMgMjQ2LjkgNjMuOSAyNjcuMyAwIDI2OC40YzIuNiA1MS45IDIxLjEgMTAzLjEgNTYuMSAxNDUuNUwyMTQgMjU2bC00Ni4zLTQ2LjN6bTExNiAyOTJjNDMuOC02LjMgODYuMi0yNC4xIDEyMi4yLTUzLjhsLTc3LjQtNzcuNGMtMjcuNyAzNS43LTQzLjIgODEuMi00NC44IDEzMS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyLDM4NGE5NS40LDk1LjQsMCwwLDAsMzIsNzEuMDlWNDk2YTE2LDE2LDAsMCwwLDE2LDE2aDMyYTE2LDE2LDAsMCwwLDE2LTE2VjQ4MEgzODR2MTZhMTYsMTYsMCwwLDAsMTYsMTZoMzJhMTYsMTYsMCwwLDAsMTYtMTZWNDU1LjA5QTk1LjQsOTUuNCwwLDAsMCw0ODAsMzg0VjMzNkgzMlpNNDk2LDI1Nkg4MFY2OS4yNWEyMS4yNiwyMS4yNiwwLDAsMSwzNi4yOC0xNWwxOS4yNywxOS4yNmMtMTMuMTMsMjkuODgtNy42MSw1OS4xMSw4LjYyLDc5LjczbC0uMTcuMTdBMTYsMTYsMCwwLDAsMTQ0LDE3NmwxMS4zMSwxMS4zMWExNiwxNiwwLDAsMCwyMi42MywwTDI4My4zMSw4MS45NGExNiwxNiwwLDAsMCwwLTIyLjYzTDI3Miw0OGExNiwxNiwwLDAsMC0yMi42MiwwbC0uMTcuMTdjLTIwLjYyLTE2LjIzLTQ5LjgzLTIxLjc1LTc5LjczLTguNjJMMTUwLjIyLDIwLjI4QTY5LjI1LDY5LjI1LDAsMCwwLDMyLDY5LjI1VjI1NkgxNkExNiwxNiwwLDAsMCwwLDI3MnYxNmExNiwxNiwwLDAsMCwxNiwxNkg0OTZhMTYsMTYsMCwwLDAsMTYtMTZWMjcyQTE2LDE2LDAsMCwwLDQ5NiwyNTZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlFbXB0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDQgMTYwdjY0aDMydjY0aC0zMnY2NEg2NFYxNjBoNDgwbTE2LTY0SDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djIyNGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDUxMmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4di0xNmg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYxODRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0aC04di0xNmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXR0ZXJ5RnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDQgMTYwdjY0aDMydjY0aC0zMnY2NEg2NFYxNjBoNDgwbTE2LTY0SDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djIyNGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDUxMmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4di0xNmg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYxODRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0aC04di0xNmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0tNDggOTZIOTZ2MTI4aDQxNlYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAxNjB2NjRoMzJ2NjRoLTMydjY0SDY0VjE2MGg0ODBtMTYtNjRINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNTEyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTE2aDhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTh2LTE2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS0yNDAgOTZIOTZ2MTI4aDIyNFYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlRdWFydGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAxNjB2NjRoMzJ2NjRoLTMydjY0SDY0VjE2MGg0ODBtMTYtNjRINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNTEyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTE2aDhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTh2LTE2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS0zMzYgOTZIOTZ2MTI4aDEyOFYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlUaHJlZVF1YXJ0ZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAxNjB2NjRoMzJ2NjRoLTMydjY0SDY0VjE2MGg0ODBtMTYtNjRINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNTEyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTE2aDhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTh2LTE2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS0xNDQgOTZIOTZ2MTI4aDMyMFYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgMjU2YzQ0LjExIDAgODAtMzUuODkgODAtODBzLTM1Ljg5LTgwLTgwLTgwLTgwIDM1Ljg5LTgwIDgwIDM1Ljg5IDgwIDgwIDgwem0zNTItMTI4SDMwNGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTQ0SDY0VjgwYzAtOC44NC03LjE2LTE2LTE2LTE2SDE2QzcuMTYgNjQgMCA3MS4xNiAwIDgwdjM1MmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNDhoNTEydjQ4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2VjI0MGMwLTYxLjg2LTUwLjE0LTExMi0xMTItMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCZWVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCA5NmgtNDhWNTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI0QzEwLjc0NSAzMiAwIDQyLjc0NSAwIDU2djQwMGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMjcyYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtNDIuMTFsODAuNjA2LTM1Ljk3N0M0MjkuMzk2IDM2NS4wNjMgNDQ4IDMzNi4zODggNDQ4IDMwNC44NlYxNzZjMC00NC4xMTItMzUuODg4LTgwLTgwLTgwem0xNiAyMDguODZhMTYuMDE4IDE2LjAxOCAwIDAgMS05LjQ3OSAxNC42MTFMMzIwIDM0My44MDVWMTYwaDQ4YzguODIyIDAgMTYgNy4xNzggMTYgMTZ2MTI4Ljg2ek0yMDggMzg0Yy04LjgzNiAwLTE2LTcuMTY0LTE2LTE2VjE0NGMwLTguODM2IDcuMTY0LTE2IDE2LTE2czE2IDcuMTY0IDE2IDE2djIyNGMwIDguODM2LTcuMTY0IDE2LTE2IDE2em0tOTYgMGMtOC44MzYgMC0xNi03LjE2NC0xNi0xNlYxNDRjMC04LjgzNiA3LjE2NC0xNiAxNi0xNnMxNiA3LjE2NCAxNiAxNnYyMjRjMCA4LjgzNi03LjE2NCAxNi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVsbFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzMy44MiA0NTguMWwtOTAuNjItNzAuMDVjLjE5LTEuMzguOC0yLjY2LjgtNC4wNi4wNS03LjU1LTIuNjEtMTUuMjctOC42MS0yMS43MS0xOS4zMi0yMC43Ni01NS40Ny01MS45OS01NS40Ny0xNTQuMjkgMC03Ny43LTU0LjQ4LTEzOS45LTEyNy45NC0xNTUuMTZWMzJjMC0xNy42Ny0xNC4zMi0zMi0zMS45OC0zMnMtMzEuOTggMTQuMzMtMzEuOTggMzJ2MjAuODRjLTQwLjMzIDguMzgtNzQuNjYgMzEuMDctOTcuNTkgNjIuNTdMNDUuNDcgMy4zN0MzOC40OS0yLjA1IDI4LjQzLS44IDIzLjAxIDYuMThMMy4zNyAzMS40NUMtMi4wNSAzOC40Mi0uOCA0OC40NyA2LjE4IDUzLjlsNTg4LjM1IDQ1NC43M2M2Ljk4IDUuNDMgMTcuMDMgNC4xNyAyMi40Ni0yLjgxbDE5LjY0LTI1LjI3YzUuNDItNi45NyA0LjE3LTE3LjAyLTIuODEtMjIuNDV6TTE1Ny4yMyAyNTEuNTRjLTguNjEgNjcuOTYtMzYuNDEgOTMuMzMtNTIuNjIgMTEwLjc1LTYgNi40NS04LjY2IDE0LjE2LTguNjEgMjEuNzEuMTEgMTYuNCAxMi45OCAzMiAzMi4xIDMyaDI0MS45MkwxNTcuMjMgMjUxLjU0ek0zMjAgNTEyYzM1LjMyIDAgNjMuOTctMjguNjUgNjMuOTctNjRIMjU2LjAzYzAgMzUuMzUgMjguNjUgNjQgNjMuOTcgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDUxMmMzNS4zMiAwIDYzLjk3LTI4LjY1IDYzLjk3LTY0SDE2MC4wM2MwIDM1LjM1IDI4LjY1IDY0IDYzLjk3IDY0em0yMTUuMzktMTQ5LjcxYy0xOS4zMi0yMC43Ni01NS40Ny01MS45OS01NS40Ny0xNTQuMjkgMC03Ny43LTU0LjQ4LTEzOS45LTEyNy45NC0xNTUuMTZWMzJjMC0xNy42Ny0xNC4zMi0zMi0zMS45OC0zMnMtMzEuOTggMTQuMzMtMzEuOTggMzJ2MjAuODRDMTE4LjU2IDY4LjEgNjQuMDggMTMwLjMgNjQuMDggMjA4YzAgMTAyLjMtMzYuMTUgMTMzLjUzLTU1LjQ3IDE1NC4yOS02IDYuNDUtOC42NiAxNC4xNi04LjYxIDIxLjcxLjExIDE2LjQgMTIuOTggMzIgMzIuMSAzMmgzODMuOGMxOS4xMiAwIDMyLTE1LjYgMzIuMS0zMiAuMDUtNy41NS0yLjYxLTE1LjI3LTguNjEtMjEuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlemllckN1cnZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCAzMmgtOTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTIwOCA4OGgtODQuNzVDMTEzLjc1IDY0LjU2IDkwLjg0IDQ4IDY0IDQ4IDI4LjY2IDQ4IDAgNzYuNjUgMCAxMTJzMjguNjYgNjQgNjQgNjRjMjYuODQgMCA0OS43NS0xNi41NiA1OS4yNS00MGg3OS43M2MtNTUuMzcgMzIuNTItOTUuODYgODcuMzItMTA5LjU0IDE1Mmg0OS40YzExLjMtNDEuNjEgMzYuNzctNzcuMjEgNzEuMDQtMTAxLjU2LTMuNy04LjA4LTUuODgtMTYuOTktNS44OC0yNi40NFY4OHptLTQ4IDIzMkg2NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTU3NiA0OGMtMjYuODQgMC00OS43NSAxNi41Ni01OS4yNSA0MEg0MzJ2NzJjMCA5LjQ1LTIuMTkgMTguMzYtNS44OCAyNi40NCAzNC4yNyAyNC4zNSA1OS43NCA1OS45NSA3MS4wNCAxMDEuNTZoNDkuNGMtMTMuNjgtNjQuNjgtNTQuMTctMTE5LjQ4LTEwOS41NC0xNTJoNzkuNzNjOS41IDIzLjQ0IDMyLjQxIDQwIDU5LjI1IDQwIDM1LjM0IDAgNjQtMjguNjUgNjQtNjRzLTI4LjY2LTY0LTY0LTY0em0wIDI3MmgtOTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzU4LjRWMjUuNmMwLTE2LTkuNi0yNS42LTI1LjYtMjUuNkg5NkM0MS42IDAgMCA0MS42IDAgOTZ2MzIwYzAgNTQuNCA0MS42IDk2IDk2IDk2aDMyNi40YzEyLjggMCAyNS42LTkuNiAyNS42LTI1LjZ2LTE2YzAtNi40LTMuMi0xMi44LTkuNi0xOS4yLTMuMi0xNi0zLjItNjAuOCAwLTczLjYgNi40LTMuMiA5LjYtOS42IDkuNi0xOS4yek0xNDQgMTQ0YzAtOC44NCA3LjE2LTE2IDE2LTE2aDQ4VjgwYzAtOC44NCA3LjE2LTE2IDE2LTE2aDMyYzguODQgMCAxNiA3LjE2IDE2IDE2djQ4aDQ4YzguODQgMCAxNiA3LjE2IDE2IDE2djMyYzAgOC44NC03LjE2IDE2LTE2IDE2aC00OHYxMTJjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTMyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNlYxOTJoLTQ4Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMzJ6bTIzNi44IDMwNEg5NmMtMTkuMiAwLTMyLTEyLjgtMzItMzJzMTYtMzIgMzItMzJoMjg0Ljh2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpY3ljbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyLjUwOSAxOTIuMDAxYy0xNi4zNzMtLjA2NC0zMi4wMyAyLjk1NS00Ni40MzYgOC40OTVsLTc3LjY4LTEyNS4xNTNBMjQgMjQgMCAwIDAgMzY4LjAwMSA2NGgtNjRjLTguODM3IDAtMTYgNy4xNjMtMTYgMTZ2MTZjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmg1MC42NDlsMTQuODk2IDI0SDI1Ni4wMDJ2LTE2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZoLTg3LjQ1OWMtMTMuNDQxIDAtMjQuNzc3IDEwLjk5OS0yNC41MzYgMjQuNDM3LjIzMiAxMy4wNDQgMTAuODc2IDIzLjU2MyAyMy45OTUgMjMuNTYzaDQ4LjcyNmwtMjkuNDE3IDQ3LjUyYy0xMy40MzMtNC44My0yNy45MDQtNy40ODMtNDIuOTkyLTcuNTJDNTguMDk0IDE5MS44My40MTIgMjQ5LjAxMi4wMDIgMzE5LjIzNi0uNDEzIDM5MC4yNzkgNTcuMDU1IDQ0OCAxMjguMDAyIDQ0OGM1OS42NDIgMCAxMDkuNzU4LTQwLjc5MyAxMjMuOTY3LTk2aDUyLjAzM2EyNCAyNCAwIDAgMCAyMC40MDYtMTEuMzY3TDQxMC4zNyAyMDEuNzdsMTQuOTM4IDI0LjA2N2MtMjUuNDU1IDIzLjQ0OC00MS4zODUgNTcuMDgxLTQxLjMwNyA5NC40MzcuMTQ1IDY4LjgzMyA1Ny44OTkgMTI3LjA1MSAxMjYuNzI5IDEyNy43MTkgNzAuNjA2LjY4NSAxMjguMTgxLTU1LjgwMyAxMjkuMjU1LTEyNS45OTYgMS4wODYtNzAuOTQxLTU2LjUyNi0xMjkuNzItMTI3LjQ3Ni0xMjkuOTk2ek0xODYuNzUgMjY1Ljc3MmM5LjcyNyAxMC41MjkgMTYuNjczIDIzLjY2MSAxOS42NDIgMzguMjI4aC00My4zMDZsMjMuNjY0LTM4LjIyOHpNMTI4LjAwMiA0MDBjLTQ0LjExMiAwLTgwLTM1Ljg4OC04MC04MHMzNS44ODgtODAgODAtODBjNS44NjkgMCAxMS41ODYuNjUzIDE3LjA5OSAxLjg1OWwtNDUuNTA1IDczLjUwOUM4OS43MTUgMzMxLjMyNyAxMDEuMjEzIDM1MiAxMjAuMDAyIDM1Mmg4MS4zYy0xMi4zNyAyOC4yMjUtNDAuNTYyIDQ4LTczLjMgNDh6bTE2Mi42My05NmgtMzUuNjI0Yy0zLjk2LTMxLjc1Ni0xOS41NTYtNTkuODk0LTQyLjM4My04MC4wMjZMMjM3LjM3MSAxODRoMTI3LjU0N2wtNzQuMjg2IDEyMHptMjE3LjA1NyA5NS44ODZjLTQxLjAzNi0yLjE2NS03NC4wNDktMzUuNjkyLTc1LjYyNy03Ni43NTUtLjgxMi0yMS4xMjEgNi42MzMtNDAuNTE4IDE5LjMzNS01NS4yNjNsNDQuNDMzIDcxLjU4NmM0LjY2IDcuNTA4IDE0LjUyNCA5LjgxNiAyMi4wMzIgNS4xNTZsMTMuNTk0LTguNDM3YzcuNTA4LTQuNjYgOS44MTctMTQuNTI0IDUuMTU2LTIyLjAzMmwtNDQuNDY4LTcxLjY0M2E3OS45MDEgNzkuOTAxIDAgMCAxIDE5Ljg1OC0yLjQ5N2M0NC4xMTIgMCA4MCAzNS44ODggODAgODAtLjAwMSA0NS41NC0zOC4yNTIgODIuMzE2LTg0LjMxMyA3OS44ODV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpa2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgOTZhNDggNDggMCAxIDAtNDgtNDggNDggNDggMCAwIDAgNDggNDh6bS00IDEyMWEzMS45IDMxLjkgMCAwIDAgMjAgN2g2NGEzMiAzMiAwIDAgMCAwLTY0aC01Mi43OEwzNTYgMTAzYTMxLjk0IDMxLjk0IDAgMCAwLTQwLjgxLjY4bC0xMTIgOTZhMzIgMzIgMCAwIDAgMy4wOCA1MC45MkwyODggMzA1LjEyVjQxNmEzMiAzMiAwIDAgMCA2NCAwVjI4OGEzMiAzMiAwIDAgMC0xNC4yNS0yNi42MmwtNDEuMzYtMjcuNTcgNTguMjUtNDkuOTJ6bTExNiAzOWExMjggMTI4IDAgMSAwIDEyOCAxMjggMTI4IDEyOCAwIDAgMC0xMjgtMTI4em0wIDE5MmE2NCA2NCAwIDEgMSA2NC02NCA2NCA2NCAwIDAgMS02NCA2NHpNMTI4IDI1NmExMjggMTI4IDAgMSAwIDEyOCAxMjggMTI4IDEyOCAwIDAgMC0xMjgtMTI4em0wIDE5MmE2NCA2NCAwIDEgMSA2NC02NCA2NCA2NCAwIDAgMS02NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmlub2N1bGFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTY0Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OGg5NlY0OHpNNjMuOTEgMTU5Ljk5QzYxLjQgMjUzLjg0IDMuNDYgMjc0LjIyIDAgNDA0djQ0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYyODhoMzJWMTI4SDk1Ljg0Yy0xNy42MyAwLTMxLjQ1IDE0LjM3LTMxLjkzIDMxLjk5em0zODQuMTggMGMtLjQ4LTE3LjYyLTE0LjMtMzEuOTktMzEuOTMtMzEuOTlIMzIwdjE2MGgzMnYxNjBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi00NGMtMy40Ni0xMjkuNzgtNjEuNC0xNTAuMTYtNjMuOTEtMjQ0LjAxek0xNzYgMzJoLTY0Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OGg5NlY0OGMwLTguODQtNy4xNi0xNi0xNi0xNnptNDggMjU2aDY0VjEyOGgtNjR2MTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaW9oYXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg3LjkgMTEyYzE4LjYgMCAzNi4yIDMuOCA1Mi44IDkuNiAxMy4zLTEwLjMgMjMuNi0yNC4zIDI5LjUtNDAuNy0yNS4yLTEwLjktNTMtMTctODIuMi0xNy0yOS4xIDAtNTYuOSA2LTgyLjEgMTYuOSA1LjkgMTYuNCAxNi4yIDMwLjQgMjkuNSA0MC43IDE2LjUtNS43IDM0LTkuNSA1Mi41LTkuNXpNMTYzLjYgNDM4LjdjMTItMTEuOCAyMC40LTI2LjQgMjQuNS00Mi40LTMyLjktMjYuNC01NC44LTY1LjMtNTguOS0xMDkuNi04LjUtMi44LTE3LjItNC42LTI2LjQtNC42LTcuNiAwLTE1LjIgMS0yMi41IDMuMSA0LjEgNjIuOCAzNS44IDExOCA4My4zIDE1My41em0yMjQuMi00Mi42YzQuMSAxNiAxMi41IDMwLjcgMjQuNSA0Mi41IDQ3LjQtMzUuNSA3OS4xLTkwLjcgODMtMTUzLjUtNy4yLTItMTQuNy0zLTIyLjItMy05LjIgMC0xOCAxLjktMjYuNiA0LjctNC4xIDQ0LjItMjYgODIuOS01OC43IDEwOS4zem0xMTMuNS0yMDVjLTE3LjYtMTAuNC0zNi4zLTE2LjYtNTUuMy0xOS45IDYtMTcuNyAxMC0zNi40IDEwLTU2LjIgMC00MS0xNC41LTgwLjgtNDEtMTEyLjItMi41LTMtNi42LTMuNy0xMC0xLjgtMy4zIDEuOS00LjggNi0zLjYgOS43IDQuNSAxMy44IDYuNiAyNi4zIDYuNiAzOC41IDAgNjcuOC01My44IDEyMi45LTEyMCAxMjIuOVMxNjggMTE3IDE2OCA0OS4yYzAtMTIuMSAyLjItMjQuNyA2LjYtMzguNSAxLjItMy43LS4zLTcuOC0zLjYtOS43LTMuNC0xLjktNy41LTEuMi0xMCAxLjhDMTM0LjYgMzQuMiAxMjAgNzQgMTIwIDExNWMwIDE5LjggMy45IDM4LjUgMTAgNTYuMi0xOC45IDMuMy0zNy43IDkuNS01NS4zIDE5LjktMzQuNiAyMC41LTYxIDUzLjMtNzQuMyA5Mi40LTEuMyAzLjcuMiA3LjcgMy41IDkuOCAzLjMgMiA3LjUgMS4zIDEwLTEuNiA5LjQtMTAuOCAxOS0xOS4xIDI5LjItMjUuMSA1Ny4zLTMzLjkgMTMwLjgtMTMuNyAxNjMuOSA0NSAzMy4xIDU4LjcgMTMuNCAxMzQtNDMuOSAxNjcuOS0xMC4yIDYuMS0yMiAxMC40LTM1LjggMTMuNC0zLjcuOC02LjQgNC4yLTYuNCA4LjEuMSA0IDIuNyA3LjMgNi41IDggMzkuNyA3LjggODAuNi44IDExNS4yLTE5LjcgMTgtMTAuNiAzMi45LTI0LjUgNDUuMy00MC4xIDEyLjQgMTUuNiAyNy4zIDI5LjUgNDUuMyA0MC4xIDM0LjYgMjAuNSA3NS41IDI3LjUgMTE1LjIgMTkuNyAzLjgtLjcgNi40LTQgNi41LTggMC0zLjktMi42LTcuMy02LjQtOC4xLTEzLjktMi45LTI1LjYtNy4zLTM1LjgtMTMuNC01Ny4zLTMzLjktNzctMTA5LjItNDMuOS0xNjcuOXMxMDYuNi03OC45IDE2My45LTQ1YzEwLjIgNi4xIDE5LjggMTQuMyAyOS4yIDI1LjEgMi41IDIuOSA2LjcgMy42IDEwIDEuNnM0LjgtNi4xIDMuNS05LjhjLTEzLjEtMzkuMS0zOS41LTcyLTc0LjEtOTIuNHptLTIxMy40IDEyOWMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpcnRoZGF5Q2FrZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzg0Yy0yOC4wMiAwLTMxLjI2LTMyLTc0LjUtMzItNDMuNDMgMC00Ni44MjUgMzItNzQuNzUgMzItMjcuNjk1IDAtMzEuNDU0LTMyLTc0Ljc1LTMyLTQyLjg0MiAwLTQ3LjIxOCAzMi03NC41IDMyLTI4LjE0OCAwLTMxLjIwMi0zMi03NC43NS0zMi00My41NDcgMC00Ni42NTMgMzItNzQuNzUgMzJ2LTgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDE2VjExMmg2NHYxNDRoNjRWMTEyaDY0djE0NGg2NFYxMTJoNjR2MTQ0aDE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djgwem0wIDEyOEgwdi05NmM0My4zNTYgMCA0Ni43NjctMzIgNzQuNzUtMzIgMjcuOTUxIDAgMzEuMjUzIDMyIDc0Ljc1IDMyIDQyLjg0MyAwIDQ3LjIxNy0zMiA3NC41LTMyIDI4LjE0OCAwIDMxLjIwMSAzMiA3NC43NSAzMiA0My4zNTcgMCA0Ni43NjctMzIgNzQuNzUtMzIgMjcuNDg4IDAgMzEuMjUyIDMyIDc0LjUgMzJ2OTZ6TTk2IDk2Yy0xNy43NSAwLTMyLTE0LjI1LTMyLTMyIDAtMzEgMzItMjMgMzItNjQgMTIgMCAzMiAyOS41IDMyIDU2cy0xNC4yNSA0MC0zMiA0MHptMTI4IDBjLTE3Ljc1IDAtMzItMTQuMjUtMzItMzIgMC0zMSAzMi0yMyAzMi02NCAxMiAwIDMyIDI5LjUgMzIgNTZzLTE0LjI1IDQwLTMyIDQwem0xMjggMGMtMTcuNzUgMC0zMi0xNC4yNS0zMi0zMiAwLTMxIDMyLTIzIDMyLTY0IDEyIDAgMzIgMjkuNSAzMiA1NnMtMTQuMjUgNDAtMzIgNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsZW5kZXJQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTIgNjRoMTY2LjU0TDU3NiAwSDE5MnYzNTJoMjg4bDE3LjQ2LTY0SDM5MmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDExNC4xOGwxNy40Ni02NEgzOTJjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxNDAuMzZsMTcuNDYtNjRIMzkyYy00LjQyIDAtOC0zLjU4LTgtOFY3MmMwLTQuNDIgMy41OC04IDgtOHpNMTU4LjggMzM1LjAxbC0yNS43OC02My4yNmMtMi43OC02LjgxLTkuOC0xMC45OS0xNy4yNC0xMC4yNmwtNDUuMDMgNC40MmMtMTcuMjgtNDYuOTQtMTcuNjUtOTkuNzggMC0xNDcuNzJsNDUuMDMgNC40MmM3LjQzLjczIDE0LjQ2LTMuNDYgMTcuMjQtMTAuMjZsMjUuNzgtNjMuMjZjMy4wMi03LjM5LjItMTUuODUtNi42OC0yMC4wN2wtMzkuMjgtMjQuMUM5OC41MS0zLjg3IDgwLjA5LS41IDY4Ljk1IDExLjk3Yy05Mi41NyAxMDMuNi05MiAyNTkuNTUgMi4xIDM2Mi40OSA5Ljg3IDEwLjggMjkuMTIgMTIuNDggNDEuNjUgNC44bDM5LjQxLTI0LjE4YzYuODktNC4yMiA5LjctMTIuNjcgNi42OS0yMC4wN3pNNDgwIDM4NEgxOTJjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzNTJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0zNS4zNS0yOC42NS02NC02NC02NHptLTE0NCA5NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxlbmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMzg0SDE2MGMtMzUuMzUgMC02NCAyOC42NS02NCA2NHYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyMGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0em0tMTI4IDk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem00MC00MTZoMTY2LjU0TDUxMiAwSDQ4QzIxLjQ5IDAgMCAyMS40OSAwIDQ4djE2MGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDEwMy4yN2w4LjczIDk2aDI1NmwxNy40Ni02NEgzMjhjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxMTQuMThsMTcuNDYtNjRIMzI4Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTQwLjM2bDE3LjQ2LTY0SDMyOGMtNC40MiAwLTgtMy41OC04LThWNzJjMC00LjQyIDMuNTgtOCA4LTh6TTY0IDE5MlY2NGg2OS44MmwxMS42NCAxMjhINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsaW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4MC4xNSA1MTAuODM3YTggOCAwIDAgMS0xMC45ODktMi42ODdsLTEyNS4zMy0yMDYuNDI3YTMxLjkyMyAzMS45MjMgMCAwIDAgMTIuOTU4LTkuNDg1bDEyNi4wNDggMjA3LjYwOGE4IDggMCAwIDEtMi42ODcgMTAuOTkxek0xNDIuODAzIDMxNC4zMzhsLTMyLjU0IDg5LjQ4NSAzNi4xMiA4OC4yODVjNi42OTMgMTYuMzYgMjUuMzc3IDI0LjE5MiA0MS43MzMgMTcuNTAxIDE2LjM1Ny02LjY5MiAyNC4xOTMtMjUuMzc2IDE3LjUwMS00MS43MzRsLTYyLjgxNC0xNTMuNTM3ek05NiA4OGMyNC4zMDEgMCA0NC0xOS42OTkgNDQtNDRTMTIwLjMwMSAwIDk2IDAgNTIgMTkuNjk5IDUyIDQ0czE5LjY5OSA0NCA0NCA0NHptMTU0LjgzNyAxNjkuMTI4bC0xMjAtMTUyYy00LjczMy01Ljk5NS0xMS43NS05LjEwOC0xOC44MzctOS4xMTJWOTZIODB2LjAyNmMtNy4xNDYuMDAzLTE0LjIxNyAzLjE2MS0xOC45NDQgOS4yNEwwIDE4My43NjZ2OTUuNjk0YzAgMTMuNDU1IDExLjAxMSAyNC43OTEgMjQuNDY0IDI0LjUzNkMzNy41MDUgMzAzLjc0OCA0OCAyOTMuMSA0OCAyODB2LTc5Ljc2NmwxNi0yMC41NzF2MTQwLjY5OEw5LjkyNyA0NjkuMDU1Yy02LjA0IDE2LjYwOSAyLjUyOCAzNC45NjkgMTkuMTM4IDQxLjAwOSAxNi42MDIgNi4wMzkgMzQuOTY4LTIuNTI0IDQxLjAwOS0xOS4xMzhMMTM2IDMwOS42MzhWMjAyLjQ0MWwtMzEuNDA2LTM5LjgxNmE0IDQgMCAxIDEgNi4yNjktNC45NzFsMTAyLjMgMTI5LjIxN2M5LjE0NSAxMS41ODQgMjQuMzY4IDExLjMzOSAzMy43MDggMy45NjUgMTAuNDEtOC4yMTYgMTIuMTU5LTIzLjMzNCAzLjk2Ni0zMy43MDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcyLjIgMjI2LjhjLTE0LjYtMi45LTI4LjIgOC45LTI4LjIgMjMuOFYzMDFjMCAxMC4yIDcuMSAxOC40IDE2LjcgMjIgMTguMiA2LjggMzEuMyAyNC40IDMxLjMgNDUgMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0SDI0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNDhjMCA4OS41IDgyLjEgMTYwLjIgMTc1IDE0MC43IDU0LjQtMTEuNCA5OC4zLTU1LjQgMTA5LjctMTA5LjcgMTcuNC04Mi45LTM3LTE1Ny4yLTExMi41LTE3Mi4yek0yMDkgMGMtOS4yLS41LTE3IDYuOC0xNyAxNnYzMS42YzAgOC41IDYuNiAxNS41IDE1IDE1LjkgMTI5LjQgNyAyMzMuNCAxMTIgMjQwLjkgMjQxLjUuNSA4LjQgNy41IDE1IDE1LjkgMTVoMzIuMWM5LjIgMCAxNi41LTcuOCAxNi0xN0M1MDMuNCAxMzkuOCAzNzIuMiA4LjYgMjA5IDB6bS4zIDk2Yy05LjMtLjctMTcuMyA2LjctMTcuMyAxNi4xdjMyLjFjMCA4LjQgNi41IDE1LjMgMTQuOCAxNS45IDc2LjggNi4zIDEzOCA2OC4yIDE0NC45IDE0NS4yLjggOC4zIDcuNiAxNC43IDE1LjkgMTQuN2gzMi4yYzkuMyAwIDE2LjgtOCAxNi4xLTE3LjMtOC40LTExMC4xLTk2LjUtMTk4LjItMjA2LjYtMjA2Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMzLjQ5IDIzOGExMjIgMTIyIDAgMCAwIDI3LTY1LjIxQzM2Ny44NyA5Ni40OSAzMDggMzIgMjMzLjQyIDMySDM0YTE2IDE2IDAgMCAwLTE2IDE2djQ4YTE2IDE2IDAgMCAwIDE2IDE2aDMxLjg3djI4OEgzNGExNiAxNiAwIDAgMC0xNiAxNnY0OGExNiAxNiAwIDAgMCAxNiAxNmgyMDkuMzJjNzAuOCAwIDEzNC4xNC01MS43NSAxNDEtMTIyLjQgNC43NC00OC40NS0xNi4zOS05Mi4wNi01MC44My0xMTkuNnpNMTQ1LjY2IDExMmg4Ny43NmE0OCA0OCAwIDAgMSAwIDk2aC04Ny43NnptODcuNzYgMjg4aC04Ny43NlYyODhoODcuNzZhNTYgNTYgMCAwIDEgMCAxMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk2IDE2MEgxODAuNmw0Mi42LTEyOS44QzIyNy4yIDE1IDIxNS43IDAgMjAwIDBINTZDNDQgMCAzMy44IDguOSAzMi4yIDIwLjhsLTMyIDI0MEMtMS43IDI3NS4yIDkuNSAyODggMjQgMjg4aDExOC43TDk2LjYgNDgyLjVjLTMuNiAxNS4yIDggMjkuNSAyMy4zIDI5LjUgOC40IDAgMTYuNC00LjQgMjAuOC0xMmwxNzYtMzA0YzkuMy0xNS45LTIuMi0zNi0yMC43LTM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb21iIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC41IDg4LjVsLTUyIDUyTDQxNSAxNjdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTE3LjQgMTcuNGMxMS44IDI2LjEgMTguNCA1NS4xIDE4LjQgODUuNiAwIDExNC45LTkzLjEgMjA4LTIwOCAyMDhTMCA0MTguOSAwIDMwNCA5My4xIDk2IDIwOCA5NmMzMC41IDAgNTkuNSA2LjYgODUuNiAxOC40TDMxMSA5N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwyNi41IDI2LjUgNTItNTIgMTcuMSAxN3pNNTAwIDYwaC0yNGMtNi42IDAtMTIgNS40LTEyIDEyczUuNCAxMiAxMiAxMmgyNGM2LjYgMCAxMi01LjQgMTItMTJzLTUuNC0xMi0xMi0xMnpNNDQwIDBjLTYuNiAwLTEyIDUuNC0xMiAxMnYyNGMwIDYuNiA1LjQgMTIgMTIgMTJzMTItNS40IDEyLTEyVjEyYzAtNi42LTUuNC0xMi0xMi0xMnptMzMuOSA1NWwxNy0xN2M0LjctNC43IDQuNy0xMi4zIDAtMTctNC43LTQuNy0xMi4zLTQuNy0xNyAwbC0xNyAxN2MtNC43IDQuNy00LjcgMTIuMyAwIDE3IDQuOCA0LjcgMTIuNCA0LjcgMTcgMHptLTY3LjggMGM0LjcgNC43IDEyLjMgNC43IDE3IDAgNC43LTQuNyA0LjctMTIuMyAwLTE3bC0xNy0xN2MtNC43LTQuNy0xMi4zLTQuNy0xNyAwLTQuNyA0LjctNC43IDEyLjMgMCAxN2wxNyAxN3ptNjcuOCAzNGMtNC43LTQuNy0xMi4zLTQuNy0xNyAwLTQuNyA0LjctNC43IDEyLjMgMCAxN2wxNyAxN2M0LjcgNC43IDEyLjMgNC43IDE3IDAgNC43LTQuNyA0LjctMTIuMyAwLTE3bC0xNy0xN3pNMTEyIDI3MmMwLTM1LjMgMjguNy02NCA2NC02NCA4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmMtNTIuOSAwLTk2IDQzLjEtOTYgOTYgMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01OTguODggMjQ0LjU2YzI1LjItMTIuNiA0MS4xMi0zOC4zNiA0MS4xMi02Ni41M3YtNy42NEM2NDAgMTI5LjMgNjA2LjcgOTYgNTY1LjYxIDk2Yy0zMi4wMiAwLTYwLjQ0IDIwLjQ5LTcwLjU3IDUwLjg2LTcuNjggMjMuMDMtMTEuNiA0NS4xNC0zOC4xMSA0NS4xNEgxODMuMDZjLTI3LjM4IDAtMzEuNTgtMjUuNTQtMzguMTEtNDUuMTRDMTM0LjgzIDExNi40OSAxMDYuNCA5NiA3NC4zOSA5NiAzMy4zIDk2IDAgMTI5LjMgMCAxNzAuMzl2Ny42NGMwIDI4LjE3IDE1LjkyIDUzLjkzIDQxLjEyIDY2LjUzIDkuNDMgNC43MSA5LjQzIDE4LjE3IDAgMjIuODhDMTUuOTIgMjgwLjA0IDAgMzA1LjggMCAzMzMuOTd2Ny42NEMwIDM4Mi43IDMzLjMgNDE2IDc0LjM4IDQxNmMzMi4wMiAwIDYwLjQ0LTIwLjQ5IDcwLjU3LTUwLjg2IDcuNjgtMjMuMDMgMTEuNi00NS4xNCAzOC4xMS00NS4xNGgyNzMuODdjMjcuMzggMCAzMS41OCAyNS41NCAzOC4xMSA0NS4xNEM1MDUuMTcgMzk1LjUxIDUzMy42IDQxNiA1NjUuNjEgNDE2YzQxLjA4IDAgNzQuMzgtMzMuMyA3NC4zOC03NC4zOXYtNy42NGMwLTI4LjE4LTE1LjkyLTUzLjkzLTQxLjEyLTY2LjUzLTkuNDItNC43MS05LjQyLTE4LjE3LjAxLTIyLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb25nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMi41IDUxMmMyMy4xOCAwIDQ0LjQzLTEyLjU4IDU2LTMyLjY2QzM3NC42OSA0NTEuMjYgMzg0IDQxOC43NSAzODQgMzg0YzAtMzYuMTItMTAuMDgtNjkuODEtMjcuNDQtOTguNjJMNDAwIDI0MS45NGw5LjM4IDkuMzhjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwxMS4zLTExLjMyYzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjNsLTUyLjY5LTUyLjY5Yy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwbC0xMS4zMSAxMS4zMWMtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2w5LjM4IDkuMzgtMzkuNDEgMzkuNDFjLTExLjU2LTExLjM3LTI0LjUzLTIxLjMzLTM4LjY1LTI5LjUxVjYzLjc0bDE1Ljk3LS4wMmM4LjgyLS4wMSAxNS45Ny03LjE2IDE1Ljk4LTE1Ljk4bC4wNC0zMS43MkMzMjAgNy4xNyAzMTIuODItLjAxIDMwMy45NyAwTDgwLjAzLjI2Yy04LjgyLjAxLTE1Ljk3IDcuMTYtMTUuOTggMTUuOThsLS4wNCAzMS43M2MtLjAxIDguODUgNy4xNyAxNi4wMiAxNi4wMiAxNi4wMUw5NiA2My45NnYxNTMuOTNDMzguNjcgMjUxLjEgMCAzMTIuOTcgMCAzODRjMCAzNC43NSA5LjMxIDY3LjI3IDI1LjUgOTUuMzRDMzcuMDggNDk5LjQyIDU4LjMzIDUxMiA4MS41IDUxMmgyMjF6TTEyMC4wNiAyNTkuNDNMMTQ0IDI0NS41NlY2My45MWw5Ni0uMTF2MTgxLjc2bDIzLjk0IDEzLjg3YzI0LjgxIDE0LjM3IDQ0LjEyIDM1LjczIDU2LjU2IDYwLjU3aC0yNTdjMTIuNDUtMjQuODQgMzEuNzUtNDYuMiA1Ni41Ni02MC41N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va0RlYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDEzNmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNi0xNiA3LjItMTYgMTYgNy4yIDE2IDE2IDE2em0xNzYgMjIyLjRWMjUuNmMwLTE2LTkuNi0yNS42LTI1LjYtMjUuNkg5NkM0MS42IDAgMCA0MS42IDAgOTZ2MzIwYzAgNTQuNCA0MS42IDk2IDk2IDk2aDMyNi40YzEyLjggMCAyNS42LTkuNiAyNS42LTI1LjZ2LTE2YzAtNi40LTMuMi0xMi44LTkuNi0xOS4yLTMuMi0xNi0zLjItNjAuOCAwLTczLjYgNi40LTMuMiA5LjYtOS42IDkuNi0xOS4yek0yNDAgNTZjNDQuMiAwIDgwIDI4LjcgODAgNjQgMCAyMC45LTEyLjcgMzkuMi0zMiA1MC45VjE4NGMwIDguOC03LjIgMTYtMTYgMTZoLTY0Yy04LjggMC0xNi03LjItMTYtMTZ2LTEzLjFjLTE5LjMtMTEuNy0zMi0zMC0zMi01MC45IDAtMzUuMyAzNS44LTY0IDgwLTY0ek0xMjQuOCAyMjMuM2w2LjMtMTQuN2MxLjctNC4xIDYuNC01LjkgMTAuNS00LjJsOTguMyA0Mi4xIDk4LjQtNDIuMWM0LjEtMS43IDguOC4xIDEwLjUgNC4ybDYuMyAxNC43YzEuNyA0LjEtLjEgOC44LTQuMiAxMC41TDI4MC42IDI2NGw3MC4zIDMwLjFjNC4xIDEuNyA1LjkgNi40IDQuMiAxMC41bC02LjMgMTQuN2MtMS43IDQuMS02LjQgNS45LTEwLjUgNC4yTDI0MCAyODEuNGwtOTguMyA0Mi4yYy00LjEgMS43LTguOC0uMS0xMC41LTQuMmwtNi4zLTE0LjdjLTEuNy00LjEuMS04LjggNC4yLTEwLjVsNzAuNC0zMC4xLTcwLjUtMzAuM2MtNC4xLTEuNy01LjktNi40LTQuMi0xMC41em0yNTYgMjI0LjdIOTZjLTE5LjIgMC0zMi0xMi44LTMyLTMyczE2LTMyIDMyLTMyaDI4NC44ek0yMDggMTM2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2LTE2IDcuMi0xNiAxNiA3LjIgMTYgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2tNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzNTguNFYyNS42YzAtMTYtOS42LTI1LjYtMjUuNi0yNS42SDk2QzQxLjYgMCAwIDQxLjYgMCA5NnYzMjBjMCA1NC40IDQxLjYgOTYgOTYgOTZoMzI2LjRjMTIuOCAwIDI1LjYtOS42IDI1LjYtMjUuNnYtMTZxMC05LjYtOS42LTE5LjJjLTMuMi0xNi0zLjItNjAuOCAwLTczLjZxOS42LTQuOCA5LjYtMTkuMnpNMTQ0IDE2OGE4IDggMCAwIDEgOC04aDU2di01NmE4IDggMCAwIDEgOC04aDQ4YTggOCAwIDAgMSA4IDh2NTZoNTZhOCA4IDAgMCAxIDggOHY0OGE4IDggMCAwIDEtOCA4aC01NnY1NmE4IDggMCAwIDEtOCA4aC00OGE4IDggMCAwIDEtOC04di01NmgtNTZhOCA4IDAgMCAxLTgtOHptMjM2LjggMjgwSDk2Yy0xOS4yIDAtMzItMTIuOC0zMi0zMnMxNi0zMiAzMi0zMmgyODQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va09wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQyLjIyIDMyLjA1Yy01NC44IDMuMTEtMTYzLjcyIDE0LjQzLTIzMC45NiA1NS41OS00LjY0IDIuODQtNy4yNyA3Ljg5LTcuMjcgMTMuMTd2MzYzLjg3YzAgMTEuNTUgMTIuNjMgMTguODUgMjMuMjggMTMuNDkgNjkuMTgtMzQuODIgMTY5LjIzLTQ0LjMyIDIxOC43LTQ2LjkyIDE2Ljg5LS44OSAzMC4wMi0xNC40MyAzMC4wMi0zMC42NlY2Mi43NWMuMDEtMTcuNzEtMTUuMzUtMzEuNzQtMzMuNzctMzAuN3pNMjY0LjczIDg3LjY0QzE5Ny41IDQ2LjQ4IDg4LjU4IDM1LjE3IDMzLjc4IDMyLjA1IDE1LjM2IDMxLjAxIDAgNDUuMDQgMCA2Mi43NVY0MDAuNmMwIDE2LjI0IDEzLjEzIDI5Ljc4IDMwLjAyIDMwLjY2IDQ5LjQ5IDIuNiAxNDkuNTkgMTIuMTEgMjE4Ljc3IDQ2Ljk1IDEwLjYyIDUuMzUgMjMuMjEtMS45NCAyMy4yMS0xMy40NlYxMDAuNjNjMC01LjI5LTIuNjItMTAuMTQtNy4yNy0xMi45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va1JlYWRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgOTZjMC01My4wMi00Mi45OC05Ni05Ni05NnMtOTYgNDIuOTgtOTYgOTYgNDIuOTggOTYgOTYgOTYgOTYtNDIuOTggOTYtOTZ6TTIzMy41OSAyNDEuMWMtNTkuMzMtMzYuMzItMTU1LjQzLTQ2LjMtMjAzLjc5LTQ5LjA1QzEzLjU1IDE5MS4xMyAwIDIwMy41MSAwIDIxOS4xNHYyMjIuOGMwIDE0LjMzIDExLjU5IDI2LjI4IDI2LjQ5IDI3LjA1IDQzLjY2IDIuMjkgMTMxLjk5IDEwLjY4IDE5My4wNCA0MS40MyA5LjM3IDQuNzIgMjAuNDgtMS43MSAyMC40OC0xMS44N1YyNTIuNTZjLS4wMS00LjY3LTIuMzItOC45NS02LjQyLTExLjQ2em0yNDguNjEtNDkuMDVjLTQ4LjM1IDIuNzQtMTQ0LjQ2IDEyLjczLTIwMy43OCA0OS4wNS00LjEgMi41MS02LjQxIDYuOTYtNi40MSAxMS42M3YyNDUuNzljMCAxMC4xOSAxMS4xNCAxNi42MyAyMC41NCAxMS45IDYxLjA0LTMwLjcyIDE0OS4zMi0zOS4xMSAxOTIuOTctNDEuNCAxNC45LS43OCAyNi40OS0xMi43MyAyNi40OS0yNy4wNlYyMTkuMTRjLS4wMS0xNS42My0xMy41Ni0yOC4wMS0yOS44MS0yNy4wOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzYwVjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0SDk2QzQzIDAgMCA0MyAwIDk2djMyMGMwIDUzIDQzIDk2IDk2IDk2aDMyOGMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtMTZjMC03LjUtMy41LTE0LjMtOC45LTE4LjctNC4yLTE1LjQtNC4yLTU5LjMgMC03NC43IDUuNC00LjMgOC45LTExLjEgOC45LTE4LjZ6TTEyOCAxMzRjMC0zLjMgMi43LTYgNi02aDIxMmMzLjMgMCA2IDIuNyA2IDZ2MjBjMCAzLjMtMi43IDYtNiA2SDEzNGMtMy4zIDAtNi0yLjctNi02di0yMHptMCA2NGMwLTMuMyAyLjctNiA2LTZoMjEyYzMuMyAwIDYgMi43IDYgNnYyMGMwIDMuMy0yLjcgNi02IDZIMTM0Yy0zLjMgMC02LTIuNy02LTZ2LTIwem0yNTMuNCAyNTBIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyIDAtMTcuNiAxNC40LTMyIDMyLTMyaDI4NS40Yy0xLjkgMTcuMS0xLjkgNDYuOSAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb29rbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDUxMlY0OEMwIDIxLjQ5IDIxLjQ5IDAgNDggMGgyODhjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHY0NjRMMTkyIDQwMCAwIDUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9yZGVyQWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAzMkgzMkEzMiAzMiAwIDAgMCAwIDY0djM4NGEzMiAzMiAwIDAgMCAzMiAzMmgzODRhMzIgMzIgMCAwIDAgMzItMzJWNjRhMzIgMzIgMCAwIDAtMzItMzJ6bS0zMiA2NHYxMjhIMjU2Vjk2em0tMTkyIDB2MTI4SDY0Vjk2ek02NCA0MTZWMjg4aDEyOHYxMjh6bTE5MiAwVjI4OGgxMjh2MTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3JkZXJOb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MCAyMjRoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptOTYgMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bS0yODggMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em05NiAxOTJoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptOTYgMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtOTZoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xOTJoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMjQwIDMyMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTE5MmgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tOTYgMjg4aC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2LTM4NGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2IDBoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2em05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpNNDggMjI0SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMCAxOTJIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTk2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xOTJIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTk2SDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2IDBoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3JkZXJTdHlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDAgNDE2aC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bS05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTE5MiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2LTE5MmgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wIDk2aC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgOTZoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0yODhoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC05NkgzMkEzMiAzMiAwIDAgMCAwIDY0djQwMGExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlY5NmgzNjhhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvd2xpbmdCYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTEyMCAxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem02NC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMnptNDggMTQ0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm94T3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjUuNyAyNTZjLTE2LjkgMC0zMi44LTktNDEuNC0yMy40TDMyMCAxMjZsLTY0LjIgMTA2LjZjLTguNyAxNC41LTI0LjYgMjMuNS00MS41IDIzLjUtNC41IDAtOS0uNi0xMy4zLTEuOUw2NCAyMTV2MTc4YzAgMTQuNyAxMCAyNy41IDI0LjIgMzFsMjE2LjIgNTQuMWMxMC4yIDIuNSAyMC45IDIuNSAzMSAwTDU1MS44IDQyNGMxNC4yLTMuNiAyNC4yLTE2LjQgMjQuMi0zMVYyMTVsLTEzNyAzOS4xYy00LjMgMS4zLTguOCAxLjktMTMuMyAxLjl6bTIxMi42LTExMi4yTDU4Ni44IDQxYy0zLjEtNi4yLTkuOC05LjgtMTYuNy04LjlMMzIwIDY0bDkxLjcgMTUyLjFjMy44IDYuMyAxMS40IDkuMyAxOC41IDcuM2wxOTcuOS01Ni41YzkuOS0yLjkgMTQuNy0xMy45IDEwLjItMjMuMXpNNTMuMiA0MUwxLjcgMTQzLjhjLTQuNiA5LjIuMyAyMC4yIDEwLjEgMjNsMTk3LjkgNTYuNWM3LjEgMiAxNC43LTEgMTguNS03LjNMMzIwIDY0IDY5LjggMzIuMWMtNi45LS44LTEzLjUgMi43LTE2LjYgOC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3hUaXNzdWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgzLjg4LDI4Ny44Mmw2NC0xOTJIMzM4LjQ3YTcwLjIsNzAuMiwwLDAsMS02Ni41OS00OCw3MC4yMSw3MC4yMSwwLDAsMC02Ni42LTQ4SDYzLjg4bDY0LDI4OFptLTM4NCwxOTJhMzIsMzIsMCwwLDAsMzIsMzJoNDQ4YTMyLDMyLDAsMCwwLDMyLTMydi02NEgtLjEyWm00ODAtMjU2SDQzOC45NGwtMjEuMzMsNjRoMTQuMjdhMTYsMTYsMCwwLDEsMCwzMmgtMzUyYTE2LDE2LDAsMSwxLDAtMzJIOTUuMDlsLTE0LjIyLTY0aC00OWEzMiwzMiwwLDAsMC0zMiwzMnYxMjhoNTEydi0xMjhBMzIsMzIsMCwwLDAsNDc5Ljg4LDIyMy44MlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwOS41IDE4NC42TDQ1OC45IDMyLjhDNDUyLjQgMTMuMiA0MzQuMSAwIDQxMy40IDBIMjcydjE5MmgyMzguN2MtLjQtMi41LS40LTUtMS4yLTcuNHpNMjQwIDBIOTguNmMtMjAuNyAwLTM5IDEzLjItNDUuNSAzMi44TDIuNSAxODQuNmMtLjggMi40LS44IDQuOS0xLjIgNy40SDI0MFYwek0wIDIyNHYyNDBjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjIyNEgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3hlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjAgMjg4aC04MHY5NmwtMzItMjEuMy0zMiAyMS4zdi05NmgtODBjLTguOCAwLTE2IDcuMi0xNiAxNnYxOTJjMCA4LjggNy4yIDE2IDE2IDE2aDIyNGM4LjggMCAxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNnptLTM4NC02NGgyMjRjOC44IDAgMTYtNy4yIDE2LTE2VjE2YzAtOC44LTcuMi0xNi0xNi0xNmgtODB2OTZsLTMyLTIxLjNMMjU2IDk2VjBoLTgwYy04LjggMC0xNiA3LjItMTYgMTZ2MTkyYzAgOC44IDcuMiAxNiAxNiAxNnptNjQgNjRoLTgwdjk2bC0zMi0yMS4zTDk2IDM4NHYtOTZIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYxOTJjMCA4LjggNy4yIDE2IDE2IDE2aDIyNGM4LjggMCAxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJhaWxsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMjU2YzAgMzUuMzQ2LTI4LjY1NCA2NC02NCA2NFMwIDI5MS4zNDYgMCAyNTZzMjguNjU0LTY0IDY0LTY0IDY0IDI4LjY1NCA2NCA2NHpNNjQgMzg0Yy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTAtMzUyQzI4LjY1NCAzMiAwIDYwLjY1NCAwIDk2czI4LjY1NCA2NCA2NCA2NCA2NC0yOC42NTQgNjQtNjQtMjguNjU0LTY0LTY0LTY0em0xNjAgMTkyYy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTAgMTYwYy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTAtMzUyYy0zNS4zNDYgMC02NCAyOC42NTQtNjQgNjRzMjguNjU0IDY0IDY0IDY0IDY0LTI4LjY1NCA2NC02NC0yOC42NTQtNjQtNjQtNjR6bTIyNCAxOTJjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnptMCAxNjBjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnptMC0zNTJjLTM1LjM0NiAwLTY0IDI4LjY1NC02NCA2NHMyOC42NTQgNjQgNjQgNjQgNjQtMjguNjU0IDY0LTY0LTI4LjY1NC02NC02NC02NHptMTYwIDE5MmMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyem0wIDE2MGMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyem0wLTMyMGMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggMGMtMjkuOSAwLTU0LjcgMjAuNS02MS44IDQ4LjItLjggMC0xLjQtLjItMi4yLS4yLTM1LjMgMC02NCAyOC43LTY0IDY0IDAgNC44LjYgOS41IDEuNyAxNEM1Mi41IDEzOCAzMiAxNjYuNiAzMiAyMDBjMCAxMi42IDMuMiAyNC4zIDguMyAzNC45QzE2LjMgMjQ4LjcgMCAyNzQuMyAwIDMwNGMwIDMzLjMgMjAuNCA2MS45IDQ5LjQgNzMuOS0uOSA0LjYtMS40IDkuMy0xLjQgMTQuMSAwIDM5LjggMzIuMiA3MiA3MiA3MiA0LjEgMCA4LjEtLjUgMTItMS4yIDkuNiAyOC41IDM2LjIgNDkuMiA2OCA0OS4yIDM5LjggMCA3Mi0zMi4yIDcyLTcyVjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0em0zNjggMzA0YzAtMjkuNy0xNi4zLTU1LjMtNDAuMy02OS4xIDUuMi0xMC42IDguMy0yMi4zIDguMy0zNC45IDAtMzMuNC0yMC41LTYyLTQ5LjctNzQgMS00LjUgMS43LTkuMiAxLjctMTQgMC0zNS4zLTI4LjctNjQtNjQtNjQtLjggMC0xLjUuMi0yLjIuMkM0MjIuNyAyMC41IDM5Ny45IDAgMzY4IDBjLTM1LjMgMC02NCAyOC42LTY0IDY0djM3NmMwIDM5LjggMzIuMiA3MiA3MiA3MiAzMS44IDAgNTguNC0yMC43IDY4LTQ5LjIgMy45LjcgNy45IDEuMiAxMiAxLjIgMzkuOCAwIDcyLTMyLjIgNzItNzIgMC00LjgtLjUtOS41LTEuNC0xNC4xIDI5LTEyIDQ5LjQtNDAuNiA0OS40LTczLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyZWFkU2xpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBDMTA4IDAgMCA5My40IDAgMTY5LjE0IDAgMTk5LjQ0IDI0LjI0IDIyNCA2NCAyMjR2MjU2YzAgMTcuNjcgMTYuMTIgMzIgMzYgMzJoMzc2YzE5Ljg4IDAgMzYtMTQuMzMgMzYtMzJWMjI0YzM5Ljc2IDAgNjQtMjQuNTYgNjQtNTQuODZDNTc2IDkzLjQgNDY4IDAgMjg4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyaWVmY2FzZU1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDEyOGgtODBWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhIMTc2Yy0yNi41IDAtNDggMjEuNS00OCA0OHY0OEg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2Mjg4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFYxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE5MiA5NmgxMjh2MzJIMTkyVjk2em0xNjAgMjQ4YzAgNC40LTMuNiA4LTggOGgtNTZ2NTZjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di01NmgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDhjMC00LjQgMy42LTggOC04aDU2di01NmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djU2aDU2YzQuNCAwIDggMy42IDggOHY0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJpZWZjYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAzMzZjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTk2Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtNDhIMHYxNDRjMCAyNS42IDIyLjQgNDggNDggNDhoNDE2YzI1LjYgMCA0OC0yMi40IDQ4LTQ4VjI4OEgzMjB2NDh6bTE0NC0yMDhoLTgwVjgwYzAtMjUuNi0yMi40LTQ4LTQ4LTQ4SDE3NmMtMjUuNiAwLTQ4IDIyLjQtNDggNDh2NDhINDhjLTI1LjYgMC00OCAyMi40LTQ4IDQ4djgwaDUxMnYtODBjMC0yNS42LTIyLjQtNDgtNDgtNDh6bS0xNDQgMEgxOTJWOTZoMTI4djMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcm9hZGNhc3RUb3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTAuOTQgMTkyaDMzLjczYzExLjAxIDAgMTguNjEtMTAuODMgMTQuODYtMjEuMTgtNC45My0xMy41OC03LjU1LTI3Ljk4LTcuNTUtNDIuODJzMi42Mi0yOS4yNCA3LjU1LTQyLjgyQzIwMy4yOSA3NC44MyAxOTUuNjggNjQgMTg0LjY3IDY0aC0zMy43M2MtNy4wMSAwLTEzLjQ2IDQuNDktMTUuNDEgMTEuMjNDMTMwLjY0IDkyLjIxIDEyOCAxMDkuODggMTI4IDEyOGMwIDE4LjEyIDIuNjQgMzUuNzkgNy41NCA1Mi43NiAxLjk0IDYuNzQgOC4zOSAxMS4yNCAxNS40IDExLjI0ek04OS45MiAyMy4zNEM5NS41NiAxMi43MiA4Ny45NyAwIDc1Ljk2IDBINDAuNjNjLTYuMjcgMC0xMi4xNCAzLjU5LTE0Ljc0IDkuMzFDOS40IDQ1LjU0IDAgODUuNjUgMCAxMjhjMCAyNC43NSAzLjEyIDY4LjMzIDI2LjY5IDExOC44NiAyLjYyIDUuNjMgOC40MiA5LjE0IDE0LjYxIDkuMTRoMzQuODRjMTIuMDIgMCAxOS42MS0xMi43NCAxMy45NS0yMy4zNy00OS43OC05My4zMi0xNi43MS0xNzguMTUtLjE3LTIwOS4yOXpNNjE0LjA2IDkuMjlDNjExLjQ2IDMuNTggNjA1LjYgMCA1OTkuMzMgMGgtMzUuNDJjLTExLjk4IDAtMTkuNjYgMTIuNjYtMTQuMDIgMjMuMjUgMTguMjcgMzQuMjkgNDguNDIgMTE5LjQyLjI4IDIwOS4yMy01LjcyIDEwLjY4IDEuOCAyMy41MiAxMy45MSAyMy41MmgzNS4yM2M2LjI3IDAgMTIuMTMtMy41OCAxNC43My05LjI5QzYzMC41NyAyMTAuNDggNjQwIDE3MC4zNiA2NDAgMTI4cy05LjQyLTgyLjQ4LTI1Ljk0LTExOC43MXpNNDg5LjA2IDY0aC0zMy43M2MtMTEuMDEgMC0xOC42MSAxMC44My0xNC44NiAyMS4xOCA0LjkzIDEzLjU4IDcuNTUgMjcuOTggNy41NSA0Mi44MnMtMi42MiAyOS4yNC03LjU1IDQyLjgyYy0zLjc2IDEwLjM1IDMuODUgMjEuMTggMTQuODYgMjEuMThoMzMuNzNjNy4wMiAwIDEzLjQ2LTQuNDkgMTUuNDEtMTEuMjQgNC45LTE2Ljk3IDcuNTMtMzQuNjQgNy41My01Mi43NiAwLTE4LjEyLTIuNjQtMzUuNzktNy41NC01Mi43Ni0xLjk0LTYuNzUtOC4zOS0xMS4yNC0xNS40LTExLjI0em0tMTE2LjMgMTAwLjEyYzcuMDUtMTAuMjkgMTEuMi0yMi43MSAxMS4yLTM2LjEyIDAtMzUuMzUtMjguNjMtNjQtNjMuOTYtNjQtMzUuMzIgMC02My45NiAyOC42NS02My45NiA2NCAwIDEzLjQxIDQuMTUgMjUuODMgMTEuMiAzNi4xMmwtMTMwLjUgMzEzLjQxYy0zLjQgOC4xNS40NiAxNy41MiA4LjYxIDIwLjkybDI5LjUxIDEyLjMxYzguMTUgMy40IDE3LjUyLS40NiAyMC45MS04LjYxTDI0NC45NiAzODRoMTUwLjA3bDQ5LjIgMTE4LjE1YzMuNCA4LjE2IDEyLjc2IDEyLjAxIDIwLjkxIDguNjFsMjkuNTEtMTIuMzFjOC4xNS0zLjQgMTItMTIuNzcgOC42MS0yMC45MmwtMTMwLjUtMzEzLjQxek0yNzEuNjIgMzIwTDMyMCAyMDMuODEgMzY4LjM4IDMyMGgtOTYuNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ni40NyAyMTYuNzdsODYuNzMgMTA5LjE4cy0xNi42IDEwMi4zNi03Ni41NyAxNTAuMTJDMjA2LjY2IDUyMy44NSAwIDUxMC4xOSAwIDUxMC4xOXMzLjgtMjMuMTQgMTEtNTUuNDNsOTQuNjItMTEyLjE3YzMuOTctNC43LS44Ny0xMS42Mi02LjY1LTkuNWwtNjAuNCAyMi4wOWMxNC40NC00MS42NiAzMi43Mi04MC4wNCA1NC42LTk3LjQ3IDU5Ljk3LTQ3Ljc2IDE2My4zLTQwLjk0IDE2My4zLTQwLjk0ek02MzYuNTMgMzEuMDNsLTE5Ljg2LTI1Yy01LjQ5LTYuOS0xNS41Mi04LjA1LTIyLjQxLTIuNTZsLTIzMi40OCAxNzcuOC0zNC4xNC00Mi45N2MtNS4wOS02LjQxLTE1LjE0LTUuMjEtMTguNTkgMi4yMWwtMjUuMzMgNTQuNTUgODYuNzMgMTA5LjE4IDU4LjgtMTIuNDVjOC0xLjY5IDExLjQyLTExLjIgNi4zNC0xNy42bC0zNC4wOS00Mi45MiAyMzIuNDgtMTc3LjhjNi44OS01LjQ4IDguMDQtMTUuNTMgMi41NS0yMi40NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJ1c2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDBIMzJDMTQuMzMgMCAwIDE0LjMzIDAgMzJ2MjI0aDM4NFYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0wIDMyMGMwIDM1LjM1IDI4LjY2IDY0IDY0IDY0aDY0djY0YzAgMzUuMzUgMjguNjYgNjQgNjQgNjRzNjQtMjguNjUgNjQtNjR2LTY0aDY0YzM1LjM0IDAgNjQtMjguNjUgNjQtNjR2LTMySDB2MzJ6bTE5MiAxMDRjMTMuMjUgMCAyNCAxMC43NCAyNCAyNCAwIDEzLjI1LTEwLjc1IDI0LTI0IDI0cy0yNC0xMC43NS0yNC0yNGMwLTEzLjI2IDEwLjc1LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTExLjk4OCAyODguOWMtLjQ3OCAxNy40My0xNS4yMTcgMzEuMS0zMi42NTMgMzEuMUg0MjR2MTZjMCAyMS44NjQtNC44ODIgNDIuNTg0LTEzLjYgNjEuMTQ1bDYwLjIyOCA2MC4yMjhjMTIuNDk2IDEyLjQ5NyAxMi40OTYgMzIuNzU4IDAgNDUuMjU1LTEyLjQ5OCAxMi40OTctMzIuNzU5IDEyLjQ5Ni00NS4yNTYgMGwtNTQuNzM2LTU0LjczNkMzNDUuODg2IDQ2Ny45NjUgMzE0LjM1MSA0ODAgMjgwIDQ4MFYyMzZjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjRjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjQ0Yy0zNC4zNTEgMC02NS44ODYtMTIuMDM1LTkwLjYzNi0zMi4xMDhsLTU0LjczNiA1NC43MzZjLTEyLjQ5OCAxMi40OTctMzIuNzU5IDEyLjQ5Ni00NS4yNTYgMC0xMi40OTYtMTIuNDk3LTEyLjQ5Ni0zMi43NTggMC00NS4yNTVsNjAuMjI4LTYwLjIyOEM5Mi44ODIgMzc4LjU4NCA4OCAzNTcuODY0IDg4IDMzNnYtMTZIMzIuNjY2QzE1LjIzIDMyMCAuNDkxIDMwNi4zMy4wMTMgMjg4LjktLjQ4NCAyNzAuODE2IDE0LjAyOCAyNTYgMzIgMjU2aDU2di01OC43NDVsLTQ2LjYyOC00Ni42MjhjLTEyLjQ5Ni0xMi40OTctMTIuNDk2LTMyLjc1OCAwLTQ1LjI1NSAxMi40OTgtMTIuNDk3IDMyLjc1OC0xMi40OTcgNDUuMjU2IDBMMTQxLjI1NSAxNjBoMjI5LjQ4OWw1NC42MjctNTQuNjI3YzEyLjQ5OC0xMi40OTcgMzIuNzU4LTEyLjQ5NyA0NS4yNTYgMCAxMi40OTYgMTIuNDk3IDEyLjQ5NiAzMi43NTggMCA0NS4yNTVMNDI0IDE5Ny4yNTVWMjU2aDU2YzE3Ljk3MiAwIDMyLjQ4NCAxNC44MTYgMzEuOTg4IDMyLjl6TTI1NyAwYy02MS44NTYgMC0xMTIgNTAuMTQ0LTExMiAxMTJoMjI0QzM2OSA1MC4xNDQgMzE4Ljg1NiAwIDI1NyAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWlsZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzYgNDgwaC0yMFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRINTZDNDIuNzQ1IDAgMzIgMTAuNzQ1IDMyIDI0djQ1NkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyMGg0NDh2LTIwYzAtNi42MjctNS4zNzMtMTItMTItMTJ6TTEyOCA3NmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMmgtNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJWNzZ6bTAgOTZjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQwYzAgNi42MjctNS4zNzMgMTItMTIgMTJoLTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi00MHptNTIgMTQ4aC00MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtNDBjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQwYzAgNi42MjctNS4zNzMgMTItMTIgMTJ6bTc2IDE2MGgtNjR2LTg0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY4NHptNjQtMTcyYzAgNi42MjctNS4zNzMgMTItMTIgMTJoLTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi00MGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDB6bTAtOTZjMCA2LjYyNy01LjM3MyAxMi0xMiAxMmgtNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTQwYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY0MHptMC05NmMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC00MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMlY3NmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1bGxob3JuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NiAyNDBjMC0yMy42My0xMi45NS00NC4wNC0zMi01NS4xMlYzMi4wMUM1NDQgMjMuMjYgNTM3LjAyIDAgNTEyIDBjLTcuMTIgMC0xNC4xOSAyLjM4LTE5Ljk4IDcuMDJsLTg1LjAzIDY4LjAzQzM2NC4yOCAxMDkuMTkgMzEwLjY2IDEyOCAyNTYgMTI4SDY0Yy0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0djk2YzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzMuN2MtMS4zOSAxMC40OC0yLjE4IDIxLjE0LTIuMTggMzIgMCAzOS43NyA5LjI2IDc3LjM1IDI1LjU2IDExMC45NCA1LjE5IDEwLjY5IDE2LjUyIDE3LjA2IDI4LjQgMTcuMDZoNzQuMjhjMjYuMDUgMCA0MS42OS0yOS44NCAyNS45LTUwLjU2LTE2LjQtMjEuNTItMjYuMTUtNDguMzYtMjYuMTUtNzcuNDQgMC0xMS4xMSAxLjYyLTIxLjc5IDQuNDEtMzJIMjU2YzU0LjY2IDAgMTA4LjI4IDE4LjgxIDE1MC45OCA1Mi45NWw4NS4wMyA2OC4wM2EzMi4wMjMgMzIuMDIzIDAgMCAwIDE5Ljk4IDcuMDJjMjQuOTIgMCAzMi0yMi43OCAzMi0zMlYyOTUuMTNDNTYzLjA1IDI4NC4wNCA1NzYgMjYzLjYzIDU3NiAyNDB6bS05NiAxNDEuNDJsLTMzLjA1LTI2LjQ0QzM5Mi45NSAzMTEuNzggMzI1LjEyIDI4OCAyNTYgMjg4di05NmM2OS4xMiAwIDEzNi45NS0yMy43OCAxOTAuOTUtNjYuOThMNDgwIDk4LjU4djI4Mi44NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVsbHNleWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMCA0MzJjLTEwMS42OSAwLTE4NC04Mi4yOS0xODQtMTg0IDAtMTAxLjY5IDgyLjI5LTE4NCAxODQtMTg0IDEwMS42OSAwIDE4NCA4Mi4yOSAxODQgMTg0IDAgMTAxLjY5LTgyLjI5IDE4NC0xODQgMTg0em0wLTMxMmMtNzAuNjkgMC0xMjggNTcuMzEtMTI4IDEyOHM1Ny4zMSAxMjggMTI4IDEyOCAxMjgtNTcuMzEgMTI4LTEyOC01Ny4zMS0xMjgtMTI4LTEyOHptMCAxOTJjLTM1LjI5IDAtNjQtMjguNzEtNjQtNjRzMjguNzEtNjQgNjQtNjQgNjQgMjguNzEgNjQgNjQtMjguNzEgNjQtNjQgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1cm4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBDNzkuNyAxMDEuMyAwIDIyMC45IDAgMzAwLjUgMCA0MjUgNzkgNTEyIDE5MiA1MTJzMTkyLTg3IDE5Mi0yMTEuNWMwLTc5LjktODAuMi0xOTkuNi0xOTItMzAwLjV6bTAgNDQ4Yy01Ni41IDAtOTYtMzktOTYtOTQuOCAwLTEzLjUgNC42LTYxLjUgOTYtMTYxLjIgOTEuNCA5OS43IDk2IDE0Ny43IDk2IDE2MS4yIDAgNTUuOC0zOS41IDk0LjgtOTYgOTQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVzQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OCAxMjhoLThWODBjMC00NC44LTk5LjItODAtMjI0LTgwUzMyIDM1LjIgMzIgODB2NDhoLThjLTEzLjI1IDAtMjQgMTAuNzQtMjQgMjR2ODBjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGg4djE2MGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJoMTkydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJoNi40YzE2IDAgMjUuNi0xMi44IDI1LjYtMjUuNlYyNTZoOGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di04MGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0ek0xNjAgNzJjMC00LjQyIDMuNTgtOCA4LThoMTc2YzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDE2OGMtNC40MiAwLTgtMy41OC04LThWNzJ6bS00OCAzMjhjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTEyOC0xMTJIMTI4Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMydi05NmMwLTE3LjY3IDE0LjMzLTMyIDMyLTMyaDExMnYxNjB6bTMyIDBWMTI4aDExMmMxNy42NyAwIDMyIDE0LjMzIDMyIDMydjk2YzAgMTcuNjctMTQuMzMgMzItMzIgMzJIMjcyem0xMjggMTEyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4IDEyOGgtOFY4MGMwLTQ0LjgtOTkuMi04MC0yMjQtODBTMzIgMzUuMiAzMiA4MHY0OGgtOGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY4MGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDh2MTYwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmgxOTJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmg2LjRjMTYgMCAyNS42LTEyLjggMjUuNi0yNS42VjI1Nmg4YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTgwYzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6TTExMiA0MDBjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTE2LTExMmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMlYxMjhjMC0xNy42NyAxNC4zMy0zMiAzMi0zMmgyNTZjMTcuNjcgMCAzMiAxNC4zMyAzMiAzMnYxMjhjMCAxNy42Ny0xNC4zMyAzMi0zMiAzMkgxMjh6bTI3MiAxMTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1c2luZXNzVGltZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMjI0Yy03OS41OSAwLTE0NCA2NC40MS0xNDQgMTQ0czY0LjQxIDE0NCAxNDQgMTQ0IDE0NC02NC40MSAxNDQtMTQ0LTY0LjQxLTE0NC0xNDQtMTQ0em02NCAxNTAuMjljMCA1LjM0LTQuMzcgOS43MS05LjcxIDkuNzFoLTYwLjU3Yy01LjM0IDAtOS43MS00LjM3LTkuNzEtOS43MXYtNzYuNTdjMC01LjM0IDQuMzctOS43MSA5LjcxLTkuNzFoMTIuNTdjNS4zNCAwIDkuNzEgNC4zNyA5LjcxIDkuNzFWMzUyaDM4LjI5YzUuMzQgMCA5LjcxIDQuMzcgOS43MSA5LjcxdjEyLjU4ek00OTYgMTkyYzUuNCAwIDEwLjcyLjMzIDE2IC44MVYxNDRjMC0yNS42LTIyLjQtNDgtNDgtNDhoLTgwVjQ4YzAtMjUuNi0yMi40LTQ4LTQ4LTQ4SDE3NmMtMjUuNiAwLTQ4IDIyLjQtNDggNDh2NDhINDhjLTI1LjYgMC00OCAyMi40LTQ4IDQ4djgwaDM5NS4xMmMyOC42LTIwLjA5IDYzLjM1LTMyIDEwMC44OC0zMnpNMzIwIDk2SDE5MlY2NGgxMjh2MzJ6bTYuODIgMjI0SDIwOGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTQ4SDB2MTQ0YzAgMjUuNiAyMi40IDQ4IDQ4IDQ4aDI5MS40M0MzMjcuMSA0MjMuOTYgMzIwIDM5Ni44MiAzMjAgMzY4YzAtMTYuNjYgMi40OC0zMi43MiA2LjgyLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxjdWxhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAwSDQ4QzIyLjQgMCAwIDIyLjQgMCA0OHY0MTZjMCAyNS42IDIyLjQgNDggNDggNDhoMzUyYzI1LjYgMCA0OC0yMi40IDQ4LTQ4VjQ4YzAtMjUuNi0yMi40LTQ4LTQ4LTQ4ek0xMjggNDM1LjJjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44SDc2LjhjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNHptMC0xMjhjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44SDc2LjhjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNHptMTI4IDEyOGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTM4LjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNHptMC0xMjhjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjRjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjR6bTEyOCAxMjhjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjhWMjY4LjhjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djE2Ni40em0wLTI1NmMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhINzYuOGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44Vjc2LjhDNjQgNzAuNCA3MC40IDY0IDc2LjggNjRoMjk0LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djEwMi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTkySDB2Mjcyem0zMjAtMTk2YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MHptMCAxMjhjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwek0xOTIgMjY4YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MHptMCAxMjhjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwek02NCAyNjhjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJINzZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDB6bTAgMTI4YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEySDc2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwek00MDAgNjRoLTQ4VjE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgxNjBWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjQ4aDQ0OHYtNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbGVuZGFyQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM2IDE2MEgxMmMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMzZjMC0yNi41MSAyMS40OS00OCA0OC00OGg0OFYxMmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NTJoMTI4VjEyYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY1Mmg0OGMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djM2YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6TTEyIDE5Mmg0MjRjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNjBjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYyMDRjMC02LjYyNyA1LjM3My0xMiAxMi0xMnptMzMzLjI5NiA5NS45NDdsLTI4LjE2OS0yOC4zOThjLTQuNjY3LTQuNzA1LTEyLjI2NS00LjczNi0xNi45Ny0uMDY4TDE5NC4xMiAzNjQuNjY1bC00NS45OC00Ni4zNTJjLTQuNjY3LTQuNzA1LTEyLjI2Ni00LjczNi0xNi45NzEtLjA2OGwtMjguMzk3IDI4LjE3Yy00LjcwNSA0LjY2Ny00LjczNiAxMi4yNjUtLjA2OCAxNi45N2w4Mi42MDEgODMuMjY5YzQuNjY3IDQuNzA1IDEyLjI2NSA0LjczNiAxNi45Ny4wNjhsMTQyLjk1My0xNDEuODA1YzQuNzA1LTQuNjY3IDQuNzM2LTEyLjI2NS4wNjgtMTYuOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbGVuZGFyRGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxOTJIMHYyNzJ6bTY0LTE5MmMwLTguOCA3LjItMTYgMTYtMTZoOTZjOC44IDAgMTYgNy4yIDE2IDE2djk2YzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2di05NnpNNDAwIDY0aC00OFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhIMTYwVjE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnY0OGg0NDh2LTQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzNiAxNjBIMTJjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMzZjMC0yNi41IDIxLjUtNDggNDgtNDhoNDhWMTJjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY1MmgxMjhWMTJjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY1Mmg0OGMyNi41IDAgNDggMjEuNSA0OCA0OHYzNmMwIDYuNi01LjQgMTItMTIgMTJ6TTEyIDE5Mmg0MjRjNi42IDAgMTIgNS40IDEyIDEydjI2MGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMjA0YzAtNi42IDUuNC0xMiAxMi0xMnptMzA0IDE5MmM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMkgxMzJjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMTg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhclBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM2IDE2MEgxMmMtNi42IDAtMTItNS40LTEyLTEydi0zNmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djM2YzAgNi42LTUuNCAxMi0xMiAxMnpNMTIgMTkyaDQyNGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjYwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyMDRjMC02LjYgNS40LTEyIDEyLTEyem0zMTYgMTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNjB2LTYwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY2MGgtNjBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoNjB2NjBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNjBoNjBjNi42IDAgMTItNS40IDEyLTEydi00MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FsZW5kYXJUaW1lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzYgMTYwSDEyYy02LjYgMC0xMi01LjQtMTItMTJ2LTM2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoMTI4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2MzZjMCA2LjYtNS40IDEyLTEyIDEyek0xMiAxOTJoNDI0YzYuNiAwIDEyIDUuNCAxMiAxMnYyNjBjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjIwNGMwLTYuNiA1LjQtMTIgMTItMTJ6bTI1Ny4zIDE2MGw0OC4xLTQ4LjFjNC43LTQuNyA0LjctMTIuMyAwLTE3bC0yOC4zLTI4LjNjLTQuNy00LjctMTIuMy00LjctMTcgMEwyMjQgMzA2LjdsLTQ4LjEtNDguMWMtNC43LTQuNy0xMi4zLTQuNy0xNyAwbC0yOC4zIDI4LjNjLTQuNyA0LjctNC43IDEyLjMgMCAxN2w0OC4xIDQ4LjEtNDguMSA0OC4xYy00LjcgNC43LTQuNyAxMi4zIDAgMTdsMjguMyAyOC4zYzQuNyA0LjcgMTIuMyA0LjcgMTcgMGw0OC4xLTQ4LjEgNDguMSA0OC4xYzQuNyA0LjcgMTIuMyA0LjcgMTcgMGwyOC4zLTI4LjNjNC43LTQuNyA0LjctMTIuMyAwLTE3TDI2OS4zIDM1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FsZW5kYXJXZWVrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxOTJIMHYyNzJ6bTY0LTE5MmMwLTguOCA3LjItMTYgMTYtMTZoMjg4YzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnYtNjR6TTQwMCA2NGgtNDhWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDE2MFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2NDhoNDQ4di00OGMwLTI2LjUtMjEuNS00OC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FsZW5kYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTkyaDQyNGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjYwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyMDRjMC02LjYgNS40LTEyIDEyLTEyem00MzYtNDR2LTM2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4aC00OFYxMmMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NTJIMTYwVjEyYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY1Mkg0OEMyMS41IDY0IDAgODUuNSAwIDExMnYzNmMwIDYuNiA1LjQgMTIgMTIgMTJoNDI0YzYuNiAwIDEyLTUuNCAxMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FtZXJhUmV0cm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMzJDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4em0wIDMyaDEwNmMzLjMgMCA2IDIuNyA2IDZ2MjBjMCAzLjMtMi43IDYtNiA2SDM4Yy0zLjMgMC02LTIuNy02LTZWODBjMC04LjggNy4yLTE2IDE2LTE2em00MjYgOTZIMzhjLTMuMyAwLTYtMi43LTYtNnYtMzZjMC0zLjMgMi43LTYgNi02aDEzOGwzMC4yLTQ1LjNjMS4xLTEuNyAzLTIuNyA1LTIuN0g0NjRjOC44IDAgMTYgNy4yIDE2IDE2djc0YzAgMy4zLTIuNyA2LTYgNnpNMjU2IDQyNGMtNjYuMiAwLTEyMC01My44LTEyMC0xMjBzNTMuOC0xMjAgMTIwLTEyMCAxMjAgNTMuOCAxMjAgMTIwLTUzLjggMTIwLTEyMCAxMjB6bTAtMjA4Yy00OC41IDAtODggMzkuNS04OCA4OHMzOS41IDg4IDg4IDg4IDg4LTM5LjUgODgtODgtMzkuNS04OC04OC04OHptLTQ4IDEwNGMtOC44IDAtMTYtNy4yLTE2LTE2IDAtMzUuMyAyOC43LTY0IDY0LTY0IDguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2Yy0xNy42IDAtMzIgMTQuNC0zMiAzMiAwIDguOC03LjIgMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMTQ0djI4OGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDg4bDEyLjMtMzIuOWM3LTE4LjcgMjQuOS0zMS4xIDQ0LjktMzEuMWgxMjUuNWMyMCAwIDM3LjkgMTIuNCA0NC45IDMxLjFMMzc2IDk2aDg4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0zNzYgMjg4YzAtNjYuMi01My44LTEyMC0xMjAtMTIwcy0xMjAgNTMuOC0xMjAgMTIwIDUzLjggMTIwIDEyMCAxMjAgMTIwLTUzLjggMTIwLTEyMHptLTMyIDBjMCA0OC41LTM5LjUgODgtODggODhzLTg4LTM5LjUtODgtODggMzkuNS04OCA4OC04OCA4OCAzOS41IDg4IDg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYW1wZ3JvdW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCA0NDhoLTI0LjY4TDM1OS41NCAxMTcuNzVsNTMuNDEtNzMuNTVjNS4xOS03LjE1IDMuNjEtMTcuMTYtMy41NC0yMi4zNWwtMjUuOS0xOC43OWMtNy4xNS01LjE5LTE3LjE1LTMuNjEtMjIuMzUgMy41NUwzMjAgNjMuMyAyNzguODMgNi42Yy01LjE5LTcuMTUtMTUuMi04Ljc0LTIyLjM1LTMuNTVsLTI1Ljg4IDE4LjhjLTcuMTUgNS4xOS04Ljc0IDE1LjItMy41NCAyMi4zNWw1My40MSA3My41NUw0MC42OCA0NDhIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDYwOGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTMyMCAyODhsMTE2LjM2IDE2MEgyMDMuNjRMMzIwIDI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FuZHlDYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5Ny41IDkyQzQ2OS42IDMzLjEgNDExLjggMCAzNTIuNCAwYy0yNy45IDAtNTYuMiA3LjMtODEuOCAyMi42TDI0My4xIDM5Yy0xNS4yIDkuMS0yMC4xIDI4LjctMTEgNDMuOWwzMi44IDU0LjljNiAxMCAxNi42IDE1LjYgMjcuNSAxNS42IDUuNiAwIDExLjItMS41IDE2LjQtNC41bDI3LjUtMTYuNGM1LjEtMy4xIDEwLjgtNC41IDE2LjQtNC41IDEwLjkgMCAyMS41IDUuNiAyNy41IDE1LjYgOS4xIDE1LjEgNC4xIDM0LjgtMTEgNDMuOUwxNS42IDM5Ny42Yy0xNS4yIDkuMS0yMC4xIDI4LjctMTEgNDMuOWwzMi44IDU0LjljNiAxMCAxNi42IDE1LjYgMjcuNSAxNS42IDUuNiAwIDExLjItMS41IDE2LjQtNC41TDQyOC42IDMwMWM3MS43LTQyLjkgMTA0LjYtMTMzLjUgNjguOS0yMDl6bS0xNzcuNyAxM2wtMi41IDEuNUwyOTYuOCA0NWM5LjctNC43IDE5LjgtOC4xIDMwLjMtMTAuMmwyMC42IDYxLjhjLTkuOC44LTE5LjQgMy4zLTI3LjkgOC40ek0xNDUuOSA0MzEuOGwtNjAuNS0zOC41IDMwLjgtMTguMyA2MC41IDM4LjUtMzAuOCAxOC4zem0xMDcuNS02My45bC02MC41LTM4LjUgMzAuOC0xOC4zIDYwLjUgMzguNS0zMC44IDE4LjN6TTM2NC4zIDMwMmwtNjAuNS0zOC41IDMwLjgtMTguMyA2MC41IDM4LjUtMzAuOCAxOC4zem0yMC40LTE5Ny4zbDQ2LTQ2YzguNCA2LjUgMTYgMTQuMSAyMi42IDIyLjZMNDA3LjYgMTI3Yy01LjctOS4zLTEzLjctMTYuOS0yMi45LTIyLjN6bTgyLjEgMTA3LjhsLTU5LjUtMTkuOGMzLjItNS4zIDUuOC0xMC45IDcuNC0xNy4xIDEuMS00LjUgMS43LTkuMSAxLjgtMTMuNmw2MC40IDIwLjFjLTIuMSAxMC40LTUuNSAyMC42LTEwLjEgMzAuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FubmFiaXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAzLjQ3IDM2MC4yNWMtMS41Ni0uODItMzIuMzktMTYuODktNzYuNzgtMjUuODEgNjQuMjUtNzUuMTIgODQuMDUtMTYxLjY3IDg0LjkzLTE2NS42NCAxLjE4LTUuMzMtLjQ0LTEwLjktNC4zLTE0Ljc3LTMuMDMtMy4wNC03LjEyLTQuNy0xMS4zMi00LjctMS4xNCAwLTIuMjkuMTItMy40NC4zOC0zLjg4Ljg1LTg2LjU0IDE5LjU5LTE2MC41OCA3OS43Ni4wMS0xLjQ2LjAxLTIuOTMuMDEtNC40IDAtMTE4Ljc5LTU5Ljk4LTIxMy43Mi02Mi41My0yMTcuN0ExNS45NzMgMTUuOTczIDAgMCAwIDI1NiAwYy01LjQ1IDAtMTAuNTMgMi43OC0xMy40NyA3LjM3LTIuNTUgMy45OC02Mi41MyA5OC45MS02Mi41MyAyMTcuNyAwIDEuNDcuMDEgMi45NC4wMSA0LjQtNzQuMDMtNjAuMTYtMTU2LjY5LTc4LjktMTYwLjU4LTc5Ljc2LTEuMTQtLjI1LTIuMjktLjM4LTMuNDQtLjM4LTQuMiAwLTguMjkgMS42Ni0xMS4zMiA0LjdBMTUuOTg2IDE1Ljk4NiAwIDAgMCAuMzggMTY4LjhjLjg4IDMuOTcgMjAuNjggOTAuNTIgODQuOTMgMTY1LjY0LTQ0LjM5IDguOTItNzUuMjEgMjQuOTktNzYuNzggMjUuODFhMTYuMDAzIDE2LjAwMyAwIDAgMC0uMDIgMjguMjljMi40NSAxLjI5IDYwLjc2IDMxLjcyIDEzMy40OSAzMS43MiA2LjE0IDAgMTEuOTYtLjEgMTcuNS0uMzEtMTEuMzcgMjIuMjMtMTYuNTIgMzguMzEtMTYuODEgMzkuMjItMS44IDUuNjgtLjI5IDExLjg5IDMuOTEgMTYuMTFhMTYuMDE5IDE2LjAxOSAwIDAgMCAxNi4xIDMuOTljMS44My0uNTcgMzcuNzItMTEuOTkgNzcuMy0zOS4yOVY1MDRjMCA0LjQyIDMuNTggOCA4IDhoMTZjNC40MiAwIDgtMy41OCA4LTh2LTY0LjAxYzM5LjU4IDI3LjMgNzUuNDcgMzguNzEgNzcuMyAzOS4yOWExNi4wMTkgMTYuMDE5IDAgMCAwIDE2LjEtMy45OWM0LjItNC4yMiA1LjcxLTEwLjQzIDMuOTEtMTYuMTEtLjI5LS45MS01LjQ1LTE2Ljk5LTE2LjgxLTM5LjIyIDUuNTQuMjEgMTEuMzcuMzEgMTcuNS4zMSA3Mi43MiAwIDEzMS4wNC0zMC40MyAxMzMuNDktMzEuNzIgNS4yNC0yLjc4IDguNTItOC4yMiA4LjUxLTE0LjE1LS4wMS01Ljk0LTMuMjktMTEuMzktOC41My0xNC4xNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2Fwc3VsZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTU1LjMgMzAwLjFMNDI0LjIgMTEyLjhDNDAxLjkgODEgMzY2LjQgNjQgMzMwLjQgNjRjLTIyLjYgMC00NS41IDYuNy02NS41IDIwLjctMTkuNyAxMy44LTMzLjcgMzIuOC00MS41IDUzLjhDMjIwLjUgNzkuMiAxNzIgMzIgMTEyIDMyIDUwLjEgMzIgMCA4Mi4xIDAgMTQ0djIyNGMwIDYxLjkgNTAuMSAxMTIgMTEyIDExMnMxMTItNTAuMSAxMTItMTEyVjIxOC45YzMuMyA4LjYgNy4zIDE3LjEgMTIuOCAyNUwzNjggNDMxLjJjMjIuMiAzMS44IDU3LjcgNDguOCA5My44IDQ4LjggMjIuNyAwIDQ1LjUtNi43IDY1LjUtMjAuNyA1MS43LTM2LjIgNjQuMi0xMDcuNSAyOC0xNTkuMnpNMTYwIDI1Nkg2NFYxNDRjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHYxMTJ6bTE5NC44IDQ0LjlsLTY1LjYtOTMuN2MtNy43LTExLTEwLjctMjQuNC04LjMtMzcuNiAyLjMtMTMuMiA5LjctMjQuOCAyMC43LTMyLjUgOC41LTYgMTguNS05LjEgMjguOC05LjEgMTYuNSAwIDMxLjkgOCA0MS4zIDIxLjVsNjUuNiA5My43LTgyLjUgNTcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOC42NiAyMTIuMzNsLTExLjI0LTI4LjEtMTkuOTMtNDkuODNDMzkwLjM4IDkxLjYzIDM0OS41NyA2NCAzMDMuNSA2NGgtMTI3Yy00Ni4wNiAwLTg2Ljg4IDI3LjYzLTEwMy45OSA3MC40bC0xOS45MyA0OS44My0xMS4yNCAyOC4xQzE3LjIyIDIyMS41IDAgMjQ0LjY2IDAgMjcydjQ4YzAgMTYuMTIgNi4xNiAzMC42NyAxNiA0MS45M1Y0MTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmgyNTZ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi01NC4wN2M5Ljg0LTExLjI1IDE2LTI1LjggMTYtNDEuOTN2LTQ4YzAtMjcuMzQtMTcuMjItNTAuNS00MS4zNC01OS42N3ptLTMwNi43My01NC4xNmM3LjI5LTE4LjIyIDI0Ljk0LTMwLjE3IDQ0LjU3LTMwLjE3aDEyN2MxOS42MyAwIDM3LjI4IDExLjk1IDQ0LjU3IDMwLjE3TDM2OCAyMDhIMTEybDE5LjkzLTQ5Ljgzek04MCAzMTkuOGMtMTkuMiAwLTMyLTEyLjc2LTMyLTMxLjlTNjAuOCAyNTYgODAgMjU2czQ4IDI4LjcxIDQ4IDQ3Ljg1LTI4LjggMTUuOTUtNDggMTUuOTV6bTMyMCAwYy0xOS4yIDAtNDggMy4xOS00OC0xNS45NVMzODAuOCAyNTYgNDAwIDI1NnMzMiAxMi43NiAzMiAzMS45LTEyLjggMzEuOS0zMiAzMS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJCYXR0ZXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAxMjhoLTMyVjgwYzAtOC44NC03LjE2LTE2LTE2LTE2aC05NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhIMTkyVjgwYzAtOC44NC03LjE2LTE2LTE2LTE2SDgwYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYyNTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg0NDhjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYxNjBjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNMTkyIDI2NGMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDExMmM0LjQyIDAgOCAzLjU4IDggOHYxNnptMjU2IDBjMCA0LjQyLTMuNTggOC04IDhoLTQwdjQwYzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTQwaC00MGMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDQwdi00MGMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHY0MGg0MGM0LjQyIDAgOCAzLjU4IDggOHYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyQ3Jhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQzLjI1IDIyMC44MWwtMTIuNDIgNDYuMzdjLTMuMDEgMTEuMjUtMy42MyAyMi44OS0yLjQxIDM0LjM5bC0zNS4yIDI4Ljk4Yy02LjU3IDUuNDEtMTYuMzEtLjQzLTE0LjYyLTguNzdsMTUuNDQtNzYuNjhjMS4wNi01LjI2LTIuNjYtMTAuMjgtOC0xMC43OWwtNzcuODYtNy41NWMtOC40Ny0uODItMTEuMjMtMTEuODMtNC4xNC0xNi41NGw2NS4xNS00My4zYzQuNDYtMi45NyA1LjM4LTkuMTUgMS45OC0xMy4yOUwyMS40NiA5My4yMmMtNS40MS02LjU3LjQzLTE2LjMgOC43OC0xNC42Mmw3Ni42OCAxNS40NGM1LjI2IDEuMDYgMTAuMjgtMi42NiAxMC44LThsNy41NS03Ny44NmMuODItOC40OCAxMS44My0xMS4yMyAxNi41NS00LjE0bDQzLjMgNjUuMTRjMi45NyA0LjQ2IDkuMTUgNS4zOCAxMy4yOSAxLjk4bDYwLjQtNDkuNzFjNi41Ny01LjQxIDE2LjMuNDMgMTQuNjIgOC43N0wyNjIuMSA4Ni4zOGMtMi43MSAzLjA1LTUuNDMgNi4wOS03LjkxIDkuNGwtMzIuMTUgNDIuOTctMTAuNzEgMTQuMzJjLTMyLjczIDguNzYtNTkuMTggMzQuNTMtNjguMDggNjcuNzR6bTQ5NC41NyAxMzIuNTFsLTEyLjQyIDQ2LjM2Yy0zLjEzIDExLjY4LTkuMzggMjEuNjEtMTcuNTUgMjkuMzZhNjYuODc2IDY2Ljg3NiAwIDAgMS04Ljc2IDdsLTEzLjk5IDUyLjIzYy0xLjE0IDQuMjctMy4xIDguMS01LjY1IDExLjM4LTcuNjcgOS44NC0yMC43NCAxNC42OC0zMy41NCAxMS4yNUw1MTUgNTAyLjYyYy0xNy4wNy00LjU3LTI3LjItMjIuMTItMjIuNjMtMzkuMTlsOC4yOC0zMC45MS0yNDcuMjgtNjYuMjYtOC4yOCAzMC45MWMtNC41NyAxNy4wNy0yMi4xMiAyNy4yLTM5LjE5IDIyLjYzbC0zMC45MS04LjI4Yy0xMi44LTMuNDMtMjEuNy0xNC4xNi0yMy40Mi0yNi41MS0uNTctNC4xMi0uMzUtOC40Mi43OS0xMi42OGwxMy45OS01Mi4yM2E2Ni42MiA2Ni42MiAwIDAgMS00LjA5LTEwLjQ1Yy0zLjItMTAuNzktMy42NS0yMi41Mi0uNTItMzQuMmwxMi40Mi00Ni4zN2M1LjMxLTE5LjggMTkuMzYtMzQuODMgMzYuODktNDIuMjFhNjQuMzM2IDY0LjMzNiAwIDAgMSAxOC40OS00LjcybDE4LjEzLTI0LjIzIDMyLjE1LTQyLjk3YzMuNDUtNC42MSA3LjE5LTguOSAxMS4yLTEyLjg0IDgtNy44OSAxNy4wMy0xNC40NCAyNi43NC0xOS41MSA0Ljg2LTIuNTQgOS44OS00LjcxIDE1LjA1LTYuNDkgMTAuMzMtMy41OCAyMS4xOS01LjYzIDMyLjI0LTYuMDQgMTEuMDUtLjQxIDIyLjMxLjgyIDMzLjQzIDMuOGwxMjIuNjggMzIuODdjMTEuMTIgMi45OCAyMS40OCA3LjU0IDMwLjg1IDEzLjQzYTExMS4xMSAxMTEuMTEgMCAwIDEgMzQuNjkgMzQuNWM4LjgyIDEzLjg4IDE0LjY0IDI5Ljg0IDE2LjY4IDQ2Ljk5bDYuMzYgNTMuMjkgMy41OSAzMC4wNWE2NC40OSA2NC40OSAwIDAgMSAyMi43NCAyOS45M2M0LjM5IDExLjg4IDUuMjkgMjUuMTkgMS43NSAzOC4zOXpNMjU1LjU4IDIzNC4zNGMtMTguNTUtNC45Ny0zNC4yMSA0LjA0LTM5LjE3IDIyLjUzLTQuOTYgMTguNDkgNC4xMSAzNC4xMiAyMi42NSAzOS4wOSAxOC41NSA0Ljk3IDQ1LjU0IDE1LjUxIDUwLjQ5LTIuOTggNC45Ni0xOC40OS0xNS40My01My42Ny0zMy45Ny01OC42NHptMjkwLjYxIDI4LjE3bC02LjM2LTUzLjI5Yy0uNTgtNC44Ny0xLjg5LTkuNTMtMy44Mi0xMy44Ni01LjgtMTIuOTktMTcuMi0yMy4wMS0zMS40Mi0yNi44MmwtMTIyLjY4LTMyLjg3YTQ4LjAwOCA0OC4wMDggMCAwIDAtNTAuODYgMTcuNjFsLTMyLjE1IDQyLjk3IDE3MiA0Ni4wOCA3NS4yOSAyMC4xOHptMTguNDkgNTQuNjVjLTE4LjU1LTQuOTctNTMuOCAxNS4zMS01OC43NSAzMy43OS00Ljk1IDE4LjQ5IDIzLjY5IDIyLjg2IDQyLjI0IDI3LjgzIDE4LjU1IDQuOTcgMzQuMjEtNC4wNCAzOS4xNy0yMi41MyA0Ljk1LTE4LjQ4LTQuMTEtMzQuMTItMjIuNjYtMzkuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhclNpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDE5MmgtMTZMNDE5LjIyIDU2LjAyQTY0LjAyNSA2NC4wMjUgMCAwIDAgMzY5LjI0IDMySDE1NS4zM2MtMjYuMTcgMC00OS43IDE1LjkzLTU5LjQyIDQwLjIzTDQ4IDE5NC4yNkMyMC40NCAyMDEuNCAwIDIyNi4yMSAwIDI1NnYxMTJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDhjMCA1My4wMiA0Mi45OCA5NiA5NiA5NnM5Ni00Mi45OCA5Ni05NmgxMjhjMCA1My4wMiA0Mi45OCA5NiA5NiA5NnM5Ni00Mi45OCA5Ni05Nmg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtODBjMC01My4wMi00Mi45OC05Ni05Ni05NnpNMTYwIDQzMmMtMjYuNDcgMC00OC0yMS41My00OC00OHMyMS41My00OCA0OC00OCA0OCAyMS41MyA0OCA0OC0yMS41MyA0OC00OCA0OHptNzItMjQwSDExNi45M2wzOC40LTk2SDIzMnY5NnptNDggMFY5Nmg4OS4yNGw3Ni44IDk2SDI4MHptMjAwIDI0MGMtMjYuNDcgMC00OC0yMS41My00OC00OHMyMS41My00OCA0OC00OCA0OCAyMS41MyA0OCA0OC0yMS41MyA0OC00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5OS45OSAxNzZoLTU5Ljg3bC0xNi42NC00MS42QzQwNi4zOCA5MS42MyAzNjUuNTcgNjQgMzE5LjUgNjRoLTEyN2MtNDYuMDYgMC04Ni44OCAyNy42My0xMDMuOTkgNzAuNEw3MS44NyAxNzZIMTIuMDFDNC4yIDE3Ni0xLjUzIDE4My4zNC4zNyAxOTAuOTFsNiAyNEM3LjcgMjIwLjI1IDEyLjUgMjI0IDE4LjAxIDIyNGgyMC4wN0MyNC42NSAyMzUuNzMgMTYgMjUyLjc4IDE2IDI3MnY0OGMwIDE2LjEyIDYuMTYgMzAuNjcgMTYgNDEuOTNWNDE2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJoMjU2djMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNTQuMDdjOS44NC0xMS4yNSAxNi0yNS44IDE2LTQxLjkzdi00OGMwLTE5LjIyLTguNjUtMzYuMjctMjIuMDctNDhINDk0YzUuNTEgMCAxMC4zMS0zLjc1IDExLjY0LTkuMDlsNi0yNGMxLjg5LTcuNTctMy44NC0xNC45MS0xMS42NS0xNC45MXptLTM1Mi4wNi0xNy44M2M3LjI5LTE4LjIyIDI0Ljk0LTMwLjE3IDQ0LjU3LTMwLjE3aDEyN2MxOS42MyAwIDM3LjI4IDExLjk1IDQ0LjU3IDMwLjE3TDM4NCAyMDhIMTI4bDE5LjkzLTQ5Ljgzek05NiAzMTkuOGMtMTkuMiAwLTMyLTEyLjc2LTMyLTMxLjlTNzYuOCAyNTYgOTYgMjU2czQ4IDI4LjcxIDQ4IDQ3Ljg1LTI4LjggMTUuOTUtNDggMTUuOTV6bTMyMCAwYy0xOS4yIDAtNDggMy4xOS00OC0xNS45NVMzOTYuOCAyNTYgNDE2IDI1NnMzMiAxMi43NiAzMiAzMS45LTEyLjggMzEuOS0zMiAzMS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJhdmFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiwyMDhhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsNDE2LDIwOFpNNjI0LDMyMEg1NzZWMTYwQTE2MCwxNjAsMCwwLDAsNDE2LDBINjRBNjQsNjQsMCwwLDAsMCw2NFYzMjBhNjQsNjQsMCwwLDAsNjQsNjRIOTZhOTYsOTYsMCwwLDAsMTkyLDBINjI0YTE2LDE2LDAsMCwwLDE2LTE2VjMzNkExNiwxNiwwLDAsMCw2MjQsMzIwWk0xOTIsNDMyYTQ4LDQ4LDAsMSwxLDQ4LTQ4QTQ4LjA1LDQ4LjA1LDAsMCwxLDE5Miw0MzJabTY0LTI0MGEzMiwzMiwwLDAsMS0zMiwzMkg5NmEzMiwzMiwwLDAsMS0zMi0zMlYxMjhBMzIsMzIsMCwwLDEsOTYsOTZIMjI0YTMyLDMyLDAsMCwxLDMyLDMyWk00NDgsMzIwSDMyMFYxMjhhMzIsMzIsMCwwLDEsMzItMzJoNjRhMzIsMzIsMCwwLDEsMzIsMzJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmV0RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMS4zIDE5MmgyNTcuM2MxNy44IDAgMjYuNyAyMS41IDE0LjEgMzQuMUwxNzQuMSAzNTQuOGMtNy44IDcuOC0yMC41IDcuOC0yOC4zIDBMMTcuMiAyMjYuMUM0LjYgMjEzLjUgMTMuNSAxOTIgMzEuMyAxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmV0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMTI3LjMzOHYyNTcuMzI0YzAgMTcuODE4LTIxLjU0MyAyNi43NDEtMzQuMTQyIDE0LjE0MkwyOS4xOTYgMjcwLjE0MmMtNy44MS03LjgxLTcuODEtMjAuNDc0IDAtMjguMjg0bDEyOC42NjItMTI4LjY2MmMxMi41OTktMTIuNiAzNC4xNDItMy42NzYgMzQuMTQyIDE0LjE0MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyZXRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDM4NC42NjJWMTI3LjMzOGMwLTE3LjgxOCAyMS41NDMtMjYuNzQxIDM0LjE0Mi0xNC4xNDJsMTI4LjY2MiAxMjguNjYyYzcuODEgNy44MSA3LjgxIDIwLjQ3NCAwIDI4LjI4NEwzNC4xNDIgMzk4LjgwNEMyMS41NDMgNDExLjQwNCAwIDQwMi40OCAwIDM4NC42NjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmV0U3F1YXJlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTkyLjUgMjIwLjVsMTIzIDEyM2M0LjcgNC43IDEyLjMgNC43IDE3IDBsMTIzLTEyM2M3LjYtNy42IDIuMi0yMC41LTguNS0yMC41SDEwMWMtMTAuNyAwLTE2LjEgMTIuOS04LjUgMjAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyZXRTcXVhcmVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCA0ODBINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OHpNMjU5LjUxNSAxMjQuNDg1bC0xMjMuMDMgMTIzLjAzYy00LjY4NiA0LjY4Ni00LjY4NiAxMi4yODQgMCAxNi45NzFsMTIzLjAyOSAxMjMuMDI5YzcuNTYgNy41NiAyMC40ODUgMi4yMDYgMjAuNDg1LTguNDg1VjEzMi45NzFjLjAwMS0xMC42OTEtMTIuOTI1LTE2LjA0NS0yMC40ODQtOC40ODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmV0U3F1YXJlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMzJoMzUyYzI2LjUxIDAgNDggMjEuNDkgNDggNDh2MzUyYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OHptMTQwLjQ4NSAzNTUuNTE1bDEyMy4wMjktMTIzLjAyOWM0LjY4Ni00LjY4NiA0LjY4Ni0xMi4yODQgMC0xNi45NzFsLTEyMy4wMjktMTIzLjAzYy03LjU2LTcuNTYtMjAuNDg1LTIuMjA2LTIwLjQ4NSA4LjQ4NXYyNDYuMDU5YzAgMTAuNjkxIDEyLjkyNiAxNi4wNDUgMjAuNDg1IDguNDg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJldFNxdWFyZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDMyVjgwYzAtMjYuNTEgMjEuNDktNDggNDgtNDhoMzUyYzI2LjUxIDAgNDggMjEuNDkgNDggNDh2MzUyYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDh6bTM1NS41MTUtMTQwLjQ4NWwtMTIzLjAzLTEyMy4wM2MtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDkyLjQ4NSAyOTEuNTE1Yy03LjU2IDcuNTYtMi4yMDYgMjAuNDg1IDguNDg1IDIwLjQ4NWgyNDYuMDU5YzEwLjY5MSAwIDE2LjA0NS0xMi45MjYgOC40ODYtMjAuNDg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJldFVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OC42NjIgMzUySDMxLjMzOGMtMTcuODE4IDAtMjYuNzQxLTIxLjU0My0xNC4xNDItMzQuMTQybDEyOC42NjItMTI4LjY2MmM3LjgxLTcuODEgMjAuNDc0LTcuODEgMjguMjg0IDBsMTI4LjY2MiAxMjguNjYyYzEyLjYgMTIuNTk5IDMuNjc2IDM0LjE0Mi0xNC4xNDIgMzQuMTQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJyb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk4LjIgMTU2LjZjLTUyLjctMjUuNy0xMTQuNS0xMC41LTE1MC4yIDMyLjhsNTUuMiA1NS4yYzYuMyA2LjMgNi4zIDE2LjQgMCAyMi42LTMuMSAzLjEtNy4yIDQuNy0xMS4zIDQuN3MtOC4yLTEuNi0xMS4zLTQuN0wxMzAuNCAyMTcgMi4zIDQ3OS43Yy0yLjkgNi0zLjEgMTMuMyAwIDE5LjcgNS40IDExLjEgMTguOSAxNS43IDMwIDEwLjNsMTMzLjYtNjUuMi00OS4yLTQ5LjJjLTYuMy02LjItNi4zLTE2LjQgMC0yMi42IDYuMy02LjIgMTYuNC02LjIgMjIuNiAwbDU3IDU3IDEwMi00OS44YzI0LTExLjcgNDQuNS0zMS4zIDU3LjEtNTcuMSAzMC4xLTYxLjcgNC41LTEzNi4xLTU3LjItMTY2LjJ6bTkyLjEtMzQuOUM0MDkuOCA4MSAzOTkuNyAzMi45IDM2MCAwYy01MC4zIDQxLjctNTIuNSAxMDcuNS03LjkgMTUxLjlsOCA4YzQ0LjQgNDQuNiAxMTAuMyA0Mi40IDE1MS45LTcuOS0zMi45LTM5LjctODEtNDkuOC0xMjEuNy0zMC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJ0QXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNC43MTcgMzIwSDIxMS41NzJsNi41NDUgMzJoMjY4LjQxOGMxNS40MDEgMCAyNi44MTYgMTQuMzAxIDIzLjQwMyAyOS4zMTlsLTUuNTE3IDI0LjI3NkM1MjMuMTEyIDQxNC42NjggNTM2IDQzMy44MjggNTM2IDQ1NmMwIDMxLjIwMi0yNS41MTkgNTYuNDQ0LTU2LjgyNCA1NS45OTQtMjkuODIzLS40MjktNTQuMzUtMjQuNjMxLTU1LjE1NS01NC40NDctLjQ0LTE2LjI4NyA2LjA4NS0zMS4wNDkgMTYuODAzLTQxLjU0OEgyMzEuMTc2QzI0MS41NTMgNDI2LjE2NSAyNDggNDQwLjMyNiAyNDggNDU2YzAgMzEuODEzLTI2LjUyOCA1Ny40MzEtNTguNjcgNTUuOTM4LTI4LjU0LTEuMzI1LTUxLjc1MS0yNC4zODUtNTMuMjUxLTUyLjkxNy0xLjE1OC0yMi4wMzQgMTAuNDM2LTQxLjQ1NSAyOC4wNTEtNTEuNTg2TDkzLjg4MyA2NEgyNEMxMC43NDUgNjQgMCA1My4yNTUgMCA0MFYyNEMwIDEwLjc0NSAxMC43NDUgMCAyNCAwaDEwMi41MjljMTEuNDAxIDAgMjEuMjI4IDguMDIxIDIzLjUxMyAxOS4xOUwxNTkuMjA4IDY0SDU1MS45OWMxNS40MDEgMCAyNi44MTYgMTQuMzAxIDIzLjQwMyAyOS4zMTlsLTQ3LjI3MyAyMDhDNTI1LjYzNyAzMTIuMjQ2IDUxNS45MjMgMzIwIDUwNC43MTcgMzIwek00MDMuMDI5IDE5MkgzNjB2LTYwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjYwaC00My4wMjljLTEwLjY5MSAwLTE2LjA0NSAxMi45MjYtOC40ODUgMjAuNDg1bDY3LjAyOSA2Ny4wMjljNC42ODYgNC42ODYgMTIuMjg0IDQuNjg2IDE2Ljk3MSAwbDY3LjAyOS02Ny4wMjljNy41NTktNy41NTkgMi4yMDUtMjAuNDg1LTguNDg2LTIwLjQ4NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FydFBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0LjcxNyAzMjBIMjExLjU3Mmw2LjU0NSAzMmgyNjguNDE4YzE1LjQwMSAwIDI2LjgxNiAxNC4zMDEgMjMuNDAzIDI5LjMxOWwtNS41MTcgMjQuMjc2QzUyMy4xMTIgNDE0LjY2OCA1MzYgNDMzLjgyOCA1MzYgNDU2YzAgMzEuMjAyLTI1LjUxOSA1Ni40NDQtNTYuODI0IDU1Ljk5NC0yOS44MjMtLjQyOS01NC4zNS0yNC42MzEtNTUuMTU1LTU0LjQ0Ny0uNDQtMTYuMjg3IDYuMDg1LTMxLjA0OSAxNi44MDMtNDEuNTQ4SDIzMS4xNzZDMjQxLjU1MyA0MjYuMTY1IDI0OCA0NDAuMzI2IDI0OCA0NTZjMCAzMS44MTMtMjYuNTI4IDU3LjQzMS01OC42NyA1NS45MzgtMjguNTQtMS4zMjUtNTEuNzUxLTI0LjM4NS01My4yNTEtNTIuOTE3LTEuMTU4LTIyLjAzNCAxMC40MzYtNDEuNDU1IDI4LjA1MS01MS41ODZMOTMuODgzIDY0SDI0QzEwLjc0NSA2NCAwIDUzLjI1NSAwIDQwVjI0QzAgMTAuNzQ1IDEwLjc0NSAwIDI0IDBoMTAyLjUyOWMxMS40MDEgMCAyMS4yMjggOC4wMjEgMjMuNTEzIDE5LjE5TDE1OS4yMDggNjRINTUxLjk5YzE1LjQwMSAwIDI2LjgxNiAxNC4zMDEgMjMuNDAzIDI5LjMxOWwtNDcuMjczIDIwOEM1MjUuNjM3IDMxMi4yNDYgNTE1LjkyMyAzMjAgNTA0LjcxNyAzMjB6TTQwOCAxNjhoLTQ4di00MGMwLTguODM3LTcuMTYzLTE2LTE2LTE2aC0xNmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnY0MGgtNDhjLTguODM3IDAtMTYgNy4xNjMtMTYgMTZ2MTZjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmg0OHY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2aDE2YzguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTQwaDQ4YzguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTE2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhc2hSZWdpc3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTEuMSAzNzguOGwtMjYuNy0xNjBjLTIuNi0xNS40LTE1LjktMjYuNy0zMS42LTI2LjdIMjA4di02NGg5NmM4LjggMCAxNi03LjIgMTYtMTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2SDQ4Yy04LjggMC0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2aDk2djY0SDU5LjFjLTE1LjYgMC0yOSAxMS4zLTMxLjYgMjYuN0wuOCAzNzguN2MtLjYgMy41LS45IDctLjkgMTAuNVY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMydi05MC43Yy4xLTMuNS0uMi03LS44LTEwLjV6TTI4MCAyNDhjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZoLTE2Yy04LjggMC0xNi03LjItMTYtMTZ2LTE2em0tMzIgNjRoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNmgtMTZjLTguOCAwLTE2LTcuMi0xNi0xNnYtMTZjMC04LjggNy4yLTE2IDE2LTE2em0tMzItODBjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNmgtMTZjLTguOCAwLTE2LTcuMi0xNi0xNnYtMTZjMC04LjggNy4yLTE2IDE2LTE2aDE2ek04MCA4MFY0OGgxOTJ2MzJIODB6bTQwIDIwMGgtMTZjLTguOCAwLTE2LTcuMi0xNi0xNnYtMTZjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZ6bTE2IDY0di0xNmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNmgtMTZjLTguOCAwLTE2LTcuMi0xNi0xNnptMjE2IDExMmMwIDQuNC0zLjYgOC04IDhIMTY4Yy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxNzZjNC40IDAgOCAzLjYgOCA4djE2em0yNC0xMTJjMCA4LjgtNy4yIDE2LTE2IDE2aC0xNmMtOC44IDAtMTYtNy4yLTE2LTE2di0xNmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2em00OC04MGMwIDguOC03LjIgMTYtMTYgMTZoLTE2Yy04LjggMC0xNi03LjItMTYtMTZ2LTE2YzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTAuNTkgMTkyYy0yMC4xOCAwLTEwNi44MiAxLjk4LTE2Mi41OSA4NS45NVYxOTJjMC01Mi45NC00My4wNi05Ni05Ni05Ni0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyYzE3LjY0IDAgMzIgMTQuMzYgMzIgMzJ2MjU2YzAgMzUuMyAyOC43IDY0IDY0IDY0aDE3NmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMzJsMTI4LTk2djE0NGMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyODkuODZjLTEwLjI5IDIuNjctMjAuODkgNC41NC0zMiA0LjU0LTYxLjgxIDAtMTEzLjUyLTQ0LjA1LTEyNS40MS0xMDIuNHpNNDQ4IDk2aC02NGwtNjQtNjR2MTM0LjRjMCA1My4wMiA0Mi45OCA5NiA5NiA5NnM5Ni00Mi45OCA5Ni05NlYzMmwtNjQgNjR6bS03MiA4MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNiAxNiA3LjE2IDE2IDE2LTcuMTYgMTYtMTYgMTZ6bTgwIDBjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTYgMTYgNy4xNiAxNiAxNi03LjE2IDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDZXJ0aWZpY2F0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTguNjIyIDI1NS45Mmw0NS45ODUtNDUuMDA1YzEzLjcwOC0xMi45NzcgNy4zMTYtMzYuMDM5LTEwLjY2NC00MC4zMzlsLTYyLjY1LTE1Ljk5IDE3LjY2MS02Mi4wMTVjNC45OTEtMTcuODM4LTExLjgyOS0zNC42NjMtMjkuNjYxLTI5LjY3MWwtNjEuOTk0IDE3LjY2Ny0xNS45ODQtNjIuNjcxQzMzNy4wODUuMTk3IDMxMy43NjUtNi4yNzYgMzAwLjk5IDcuMjI4TDI1NiA1My41NyAyMTEuMDExIDcuMjI5Yy0xMi42My0xMy4zNTEtMzYuMDQ3LTcuMjM0LTQwLjMyNSAxMC42NjhsLTE1Ljk4NCA2Mi42NzEtNjEuOTk1LTE3LjY2N0M3NC44NyA1Ny45MDcgNTguMDU2IDc0LjczOCA2My4wNDYgOTIuNTcybDE3LjY2MSA2Mi4wMTUtNjIuNjUgMTUuOTlDLjA2OSAxNzQuODc4LTYuMzEgMTk3Ljk0NCA3LjM5MiAyMTAuOTE1bDQ1Ljk4NSA0NS4wMDUtNDUuOTg1IDQ1LjAwNGMtMTMuNzA4IDEyLjk3Ny03LjMxNiAzNi4wMzkgMTAuNjY0IDQwLjMzOWw2Mi42NSAxNS45OS0xNy42NjEgNjIuMDE1Yy00Ljk5MSAxNy44MzggMTEuODI5IDM0LjY2MyAyOS42NjEgMjkuNjcxbDYxLjk5NC0xNy42NjcgMTUuOTg0IDYyLjY3MWM0LjQzOSAxOC41NzUgMjcuNjk2IDI0LjAxOCA0MC4zMjUgMTAuNjY4TDI1NiA0NTguNjFsNDQuOTg5IDQ2LjAwMWMxMi41IDEzLjQ4OCAzNS45ODcgNy40ODYgNDAuMzI1LTEwLjY2OGwxNS45ODQtNjIuNjcxIDYxLjk5NCAxNy42NjdjMTcuODM2IDQuOTk0IDM0LjY1MS0xMS44MzcgMjkuNjYxLTI5LjY3MWwtMTcuNjYxLTYyLjAxNSA2Mi42NS0xNS45OWMxNy45ODctNC4zMDIgMjQuMzY2LTI3LjM2NyAxMC42NjQtNDAuMzM5bC00NS45ODQtNDUuMDA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFpciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgMTI4YzAtMjkuNSAxNi4yLTU1IDQwLTY4LjlWMjU2aDQ4VjQ4aDQ4djIwOGg0OFY1OS4xYzIzLjggMTMuOSA0MCAzOS40IDQwIDY4Ljl2MTI4aDQ4VjEyOEMzODQgNTcuMyAzMjYuNyAwIDI1NiAwaC02NEMxMjEuMyAwIDY0IDU3LjMgNjQgMTI4djEyOGg0OHptMzM0LjMgMjEzLjlsLTEwLjctMzJjLTQuNC0xMy4xLTE2LjYtMjEuOS0zMC40LTIxLjlINDIuN2MtMTMuOCAwLTI2IDguOC0zMC40IDIxLjlsLTEwLjcgMzJDLTUuMiAzNjIuNiAxMC4yIDM4NCAzMiAzODR2MTEyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzg0aDI1NnYxMTJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzODRjMjEuOCAwIDM3LjItMjEuNCAzMC4zLTQyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYWxrYm9hcmRUZWFjaGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCAzNTJjLTIuMzkgMC00Ljc4LjM1LTcuMDYgMS4wOUMxODcuOTggMzU3LjMgMTc0LjM1IDM2MCAxNjAgMzYwYy0xNC4zNSAwLTI3Ljk4LTIuNy00MC45NS02LjkxLTIuMjgtLjc0LTQuNjYtMS4wOS03LjA1LTEuMDlDNDkuOTQgMzUyLS4zMyA0MDIuNDggMCA0NjQuNjIuMTQgNDkwLjg4IDIxLjczIDUxMiA0OCA1MTJoMjI0YzI2LjI3IDAgNDcuODYtMjEuMTIgNDgtNDcuMzguMzMtNjIuMTQtNDkuOTQtMTEyLjYyLTExMi0xMTIuNjJ6bS00OC0zMmM1My4wMiAwIDk2LTQyLjk4IDk2LTk2cy00Mi45OC05Ni05Ni05Ni05NiA0Mi45OC05NiA5NiA0Mi45OCA5NiA5NiA5NnpNNTkyIDBIMjA4Yy0yNi40NyAwLTQ4IDIyLjI1LTQ4IDQ5LjU5Vjk2YzIzLjQyIDAgNDUuMSA2Ljc4IDY0IDE3LjhWNjRoMzUydjI4OGgtNjR2LTY0SDM4NHY2NGgtNzYuMjRjMTkuMSAxNi42OSAzMy4xMiAzOC43MyAzOS42OSA2NEg1OTJjMjYuNDcgMCA0OC0yMi4yNSA0OC00OS41OVY0OS41OUM2NDAgMjIuMjUgNjE4LjQ3IDAgNTkyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYWxrYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNjRoNDQ4djM1Mmg2NFY0MGMwLTIyLjA2LTE3Ljk0LTQwLTQwLTQwSDcyQzQ5Ljk0IDAgMzIgMTcuOTQgMzIgNDB2Mzc2aDY0VjY0em01MjggMzg0SDQ4MHYtNjRIMjg4djY0SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg2MDhjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFyZ2luZ1N0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDQ0OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzIwYzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnptMjA4LTMyMFY4MGMwLTguODQtNy4xNi0xNi0xNi0xNnMtMTYgNy4xNi0xNiAxNnY0OGgtMzJWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZzLTE2IDcuMTYtMTYgMTZ2NDhoLTE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDM1Ljc2IDIzLjYyIDY1LjY5IDU2IDc1LjkzdjExOC40OWMwIDEzLjk1LTkuNSAyNi45Mi0yMy4yNiAyOS4xOUM0MzEuMjIgNDAyLjUgNDE2IDM4OC45OSA0MTYgMzcydi0yOGMwLTQ4LjYtMzkuNC04OC04OC04OGgtOFY2NGMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0SDk2QzYwLjY1IDAgMzIgMjguNjUgMzIgNjR2MzUyaDI4OFYzMDRoOGMyMi4wOSAwIDQwIDE3LjkxIDQwIDQwdjI0LjYxYzAgMzkuNjcgMjguOTIgNzUuMTYgNjguNDEgNzkuMDFDNDgxLjcxIDQ1Mi4wNSA1MjAgNDE2LjQxIDUyMCAzNzJWMjUxLjkzYzMyLjM4LTEwLjI0IDU2LTQwLjE3IDU2LTc1Ljkzdi0zMmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMTZ6bS0yODMuOTEgNDcuNzZsLTkzLjcgMTM5Yy0yLjIgMy4zMy02LjIxIDUuMjQtMTAuMzkgNS4yNC03LjY3IDAtMTMuNDctNi4yOC0xMS42Ny0xMi45MkwxNjcuMzUgMjI0SDEwOGMtNy4yNSAwLTEyLjg1LTUuNTktMTEuODktMTEuODlsMTYtMTA3QzExMi45IDk5LjkgMTE3Ljk4IDk2IDEyNCA5Nmg2OGM3Ljg4IDAgMTMuNjIgNi41NCAxMS42IDEzLjIxTDE5MiAxNjBoNTcuN2M5LjI0IDAgMTUuMDEgOC43OCAxMC4zOSAxNS43NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hhcnRBcmVhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMCAzODRjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMkgxMmMtNi42IDAtMTItNS40LTEyLTEyVjc2YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2MzA4aDQzNnpNMzcyLjcgMTU5LjVMMjg4IDIxNmwtODUuMy0xMTMuN2MtNS4xLTYuOC0xNS41LTYuMy0xOS45IDFMOTYgMjQ4djEwNGgzODRsLTg5LjktMTg3LjhjLTMuMi02LjUtMTEuNC04LjctMTcuNC00Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYXJ0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzMi44IDMyMGgzOC40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOFYxNzIuOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYxMzQuNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6bTk2IDBoMzguNGM2LjQgMCAxMi44LTYuNCAxMi44LTEyLjhWNzYuOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYyMzAuNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6bS0yODggMGgzOC40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOHYtNzAuNGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHY3MC40YzAgNi40IDYuNCAxMi44IDEyLjggMTIuOHptOTYgMGgzOC40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOFYxMDguOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYxOTguNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6TTQ5NiAzODRINjRWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiA2NCAwIDcxLjE2IDAgODB2MzM2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNDY0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hhcnRMaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAzODRINjRWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiA2NCAwIDcxLjE2IDAgODB2MzM2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNDY0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNNDY0IDk2SDM0NS45NGMtMjEuMzggMC0zMi4wOSAyNS44NS0xNi45NyA0MC45N2wzMi40IDMyLjRMMjg4IDI0Mi43NWwtNzMuMzctNzMuMzdjLTEyLjUtMTIuNS0zMi43Ni0xMi41LTQ1LjI1IDBsLTY4LjY5IDY4LjY5Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDIyLjYyIDIyLjYyYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBMMTkyIDIzNy4yNWw3My4zNyA3My4zN2MxMi41IDEyLjUgMzIuNzYgMTIuNSA0NS4yNSAwbDk2LTk2IDMyLjQgMzIuNGMxNS4xMiAxNS4xMiA0MC45NyA0LjQxIDQwLjk3LTE2Ljk3VjExMmMuMDEtOC44NC03LjE1LTE2LTE1Ljk5LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFydFBpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTQ0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjcuNzkgMjg4SDI5MC41bDE1OC4wMyAxNTguMDNjNi4wNCA2LjA0IDE1Ljk4IDYuNTMgMjIuMTkuNjggMzguNy0zNi40NiA2NS4zMi04NS42MSA3My4xMy0xNDAuODYgMS4zNC05LjQ2LTYuNTEtMTcuODUtMTYuMDYtMTcuODV6bS0xNS44My02NC44QzUwMy43MiAxMDMuNzQgNDA4LjI2IDguMjggMjg4LjguMDQgMjc5LjY4LS41OSAyNzIgNy4xIDI3MiAxNi4yNFYyNDBoMjIzLjc3YzkuMTQgMCAxNi44Mi03LjY4IDE2LjE5LTE2Ljh6TTIyNCAyODhWNTAuNzFjMC05LjU1LTguMzktMTcuNC0xNy44NC0xNi4wNkM4Ni45OSA1MS40OS00LjEgMTU1LjYuMTQgMjgwLjM3IDQuNSA0MDguNTEgMTE0LjgzIDUxMy41OSAyNDMuMDMgNTExLjk4YzUwLjQtLjYzIDk2Ljk3LTE2Ljg3IDEzNS4yNi00NC4wMyA3LjktNS42IDguNDItMTcuMjMgMS41Ny0yNC4wOEwyMjQgMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVja0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2YzAgMTM2Ljk2Ny0xMTEuMDMzIDI0OC0yNDggMjQ4UzggMzkyLjk2NyA4IDI1NiAxMTkuMDMzIDggMjU2IDhzMjQ4IDExMS4wMzMgMjQ4IDI0OHpNMjI3LjMxNCAzODcuMzE0bDE4NC0xODRjNi4yNDgtNi4yNDggNi4yNDgtMTYuMzc5IDAtMjIuNjI3bC0yMi42MjctMjIuNjI3Yy02LjI0OC02LjI0OS0xNi4zNzktNi4yNDktMjIuNjI4IDBMMjE2IDMwOC4xMThsLTcwLjA1OS03MC4wNTljLTYuMjQ4LTYuMjQ4LTE2LjM3OS02LjI0OC0yMi42MjggMGwtMjIuNjI3IDIyLjYyN2MtNi4yNDggNi4yNDgtNi4yNDggMTYuMzc5IDAgMjIuNjI3bDEwNCAxMDRjNi4yNDkgNi4yNDkgMTYuMzc5IDYuMjQ5IDIyLjYyOC4wMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZWNrRG91YmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNSAxNzQuOGwtMzkuNi0zOS42Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwxOTIgMzc0LjcgODAuNiAyNjMuMmMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMNyAzMDIuOWMtOS40IDkuNC05LjQgMjQuNiAwIDM0TDE3NSA1MDVjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsMjk2LTI5Ni4yYzkuNC05LjUgOS40LTI0LjcuMS0zNHptLTMyNC4zIDEwNmM2LjIgNi4zIDE2LjQgNi4zIDIyLjYgMGwyMDgtMjA4LjJjNi4yLTYuMyA2LjItMTYuNCAwLTIyLjZMMzY2LjEgNC43Yy02LjItNi4zLTE2LjQtNi4zLTIyLjYgMEwxOTIgMTU2LjJsLTU1LjQtNTUuNWMtNi4yLTYuMy0xNi40LTYuMy0yMi42IDBMNjguNyAxNDZjLTYuMiA2LjMtNi4yIDE2LjQgMCAyMi42bDExMiAxMTIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlY2tTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDQ4MEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDM1MmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djM1MmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4em0tMjA0LjY4Ni05OC4wNTlsMTg0LTE4NGM2LjI0OC02LjI0OCA2LjI0OC0xNi4zNzkgMC0yMi42MjdsLTIyLjYyNy0yMi42MjdjLTYuMjQ4LTYuMjQ4LTE2LjM3OS02LjI0OS0yMi42MjggMEwxODQgMzAyLjc0NWwtNzAuMDU5LTcwLjA1OWMtNi4yNDgtNi4yNDgtMTYuMzc5LTYuMjQ4LTIyLjYyOCAwbC0yMi42MjcgMjIuNjI3Yy02LjI0OCA2LjI0OC02LjI0OCAxNi4zNzkgMCAyMi42MjdsMTA0IDEwNGM2LjI0OSA2LjI1IDE2LjM3OSA2LjI1IDIyLjYyOC4wMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3My44OTggNDM5LjQwNGwtMTY2LjQtMTY2LjRjLTkuOTk3LTkuOTk3LTkuOTk3LTI2LjIwNiAwLTM2LjIwNGwzNi4yMDMtMzYuMjA0YzkuOTk3LTkuOTk4IDI2LjIwNy05Ljk5OCAzNi4yMDQgMEwxOTIgMzEyLjY5IDQzMi4wOTUgNzIuNTk2YzkuOTk3LTkuOTk3IDI2LjIwNy05Ljk5NyAzNi4yMDQgMGwzNi4yMDMgMzYuMjA0YzkuOTk3IDkuOTk3IDkuOTk3IDI2LjIwNiAwIDM2LjIwNGwtMjk0LjQgMjk0LjQwMWMtOS45OTggOS45OTctMjYuMjA3IDkuOTk3LTM2LjIwNC0uMDAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVlc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyODh2MTYwYTMyIDMyIDAgMCAwIDMyIDMyaDQ0OGEzMiAzMiAwIDAgMCAzMi0zMlYyODh6TTI5OS44MyAzMmEzMiAzMiAwIDAgMC0yMS4xMyA3TDAgMjU2aDUxMmMwLTExOS44OS05NC0yMTcuOC0yMTIuMTctMjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc0Jpc2hvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDI4Ny44OGMwIDUxLjY0IDIyLjE0IDczLjgzIDU2IDg0LjZWNDE2aDE5MnYtNDMuNTJjMzMuODYtMTAuNzcgNTYtMzMgNTYtODQuNiAwLTMwLjYxLTEwLjczLTY3LjEtMjYuNjktMTAyLjU2TDE4NSAyODUuNjVhOCA4IDAgMCAxLTExLjMxIDBsLTExLjMxLTExLjMxYTggOCAwIDAgMSAwLTExLjMxTDI3MC4yNyAxNTUuMWMtMjAuOC0zNy45MS00Ni40Ny03Mi4xLTcwLjg3LTkyLjU5QzIxMy40IDU5LjA5IDIyNCA0Ny4wNSAyMjQgMzJhMzIgMzIgMCAwIDAtMzItMzJoLTY0YTMyIDMyIDAgMCAwLTMyIDMyYzAgMTUgMTAuNiAyNy4wOSAyNC42IDMwLjUxQzY3LjgxIDEwNi44IDggMjE0LjUgOCAyODcuODh6TTMwNCA0NDhIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMjg4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3NCb2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTUuOS4yaC02NHY2NGg2NHpNMCA2NC4xN3Y2NGg2NHYtNjR6TTEyOCAuMkg2NHY2NGg2NHptNjQgMjU1Ljl2NjRoNjR2LTY0ek0wIDE5Mi4xMnY2NGg2NHYtNjR6TTM4My44NS4yaC02NHY2NGg2NHptMTI4IDBoLTY0djY0aDY0ek0xMjggMjU2LjFINjR2NjRoNjR6TTUxMS44IDQ0OHYtNjRoLTY0djY0em0wLTEyOHYtNjRoLTY0djY0ek0zODMuODUgNTEyaDY0di02NGgtNjR6bTEyOC0zMTkuODh2LTY0aC02NHY2NHpNMTI4IDUxMmg2NHYtNjRoLTY0ek0wIDUxMmg2NHYtNjRIMHptMjU1LjkgMGg2NHYtNjRoLTY0ek0wIDMyMC4wN3Y2NGg2NHYtNjR6bTMxOS44OC0xOTEuOTJ2LTY0aC02NHY2NHptLTY0IDEyOGg2NHYtNjRoLTY0em0tNjQgMTI4djY0aDY0di02NHptMTI4LTY0aDY0di02NGgtNjR6bTAtMTI3Ljk1aDY0di02NGgtNjR6bTAgMTkxLjkzdjY0aDY0di02NHpNNjQgMzg0LjA1djY0aDY0di02NHptMTI4LTI1NS45di02NGgtNjR2NjR6bTE5MS45MiAyNTUuOWg2NHYtNjRoLTY0em0tMTI4LTE5MS45M3YtNjRoLTY0djY0em0xMjgtMTI3Ljk1djY0aDY0di02NHptLTEyOCAyNTUuOXY2NGg2NHYtNjR6bS02NC0xMjcuOTVIMTI4djY0aDY0em0xOTEuOTIgNjRoNjR2LTY0aC02NHpNMTI4IDEyOC4xNUg2NHY2NGg2NHptMCAxOTEuOTJ2NjRoNjR2LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc0tpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDQ0OEg0OGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzNTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0xNi0yODhIMjU2di00OGg0MGE4IDggMCAwIDAgOC04VjU2YTggOCAwIDAgMC04LThoLTQwVjhhOCA4IDAgMCAwLTgtOGgtNDhhOCA4IDAgMCAwLTggOHY0MGgtNDBhOCA4IDAgMCAwLTggOHY0OGE4IDggMCAwIDAgOCA4aDQwdjQ4SDMyYTMyIDMyIDAgMCAwLTMwLjUyIDQxLjU0TDc0LjU2IDQxNmgyOTguODhsNzMuMDgtMjE0LjQ2QTMyIDMyIDAgMCAwIDQxNiAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzS25pZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDI3Mi40N2w0MC42MyAxOC4wNmEzMiAzMiAwIDAgMCAyNC44OC40N2wxMi43OC01LjEyYTMyIDMyIDAgMCAwIDE4Ljc2LTIwLjVsOS4yMi0zMC42NWEyNCAyNCAwIDAgMSAxMi41NS0xNS42NUwxNTkuOTQgMjA4djUwLjMzYTQ4IDQ4IDAgMCAxLTI2LjUzIDQyLjk0bC01Ny4yMiAyOC42NUE4MCA4MCAwIDAgMCAzMiA0MDEuNDhWNDE2aDMxOS44NlYyMjRjMC0xMDYtODUuOTItMTkyLTE5MS45Mi0xOTJIMTJBMTIgMTIgMCAwIDAgMCA0NGExNi45IDE2LjkgMCAwIDAgMS43OSA3LjU4TDE2IDgwbC05IDlhMjQgMjQgMCAwIDAtNyAxN3YxMzcuMjFhMzIgMzIgMCAwIDAgMTkgMjkuMjZ6TTUyIDEyOGEyMCAyMCAwIDEgMS0yMCAyMCAyMCAyMCAwIDAgMSAyMC0yMHptMzE2IDMyMEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzNTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc1Bhd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA1LjEgMjI0SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDE2djUuNDljMCA0NC00LjE0IDg2LjYtMjQgMTIyLjUxaDE3NmMtMTkuODktMzUuOTEtMjQtNzguNTEtMjQtMTIyLjUxVjI4OGgxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTI1LjFjMjkuMzktMTguMzggNDkuMS01MC43OCA0OS4xLTg4YTEwNCAxMDQgMCAwIDAtMjA4IDBjMCAzNy4yMiAxOS43MSA2OS42MiA0OS4xIDg4ek0zMDQgNDQ4SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI4OGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzUXVlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDExMmE1NiA1NiAwIDEgMC01Ni01NiA1NiA1NiAwIDAgMCA1NiA1NnptMTc2IDMzNkg4MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzNTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em03Mi44Ny0yNjMuODRsLTI4LjUxLTE1LjkyYy03LjQ0LTUtMTYuOTEtMi40Ni0yMi4yOSA0LjY4YTQ3LjU5IDQ3LjU5IDAgMCAxLTQ3LjIzIDE4LjIzQzM4My43IDE4Ni44NiAzNjggMTY0LjkzIDM2OCAxNDEuNGExMy40IDEzLjQgMCAwIDAtMTMuNC0xMy40aC0zOC43N2MtNiAwLTExLjYxIDQtMTIuODYgOS45MWE0OCA0OCAwIDAgMS05My45NCAwYy0xLjI1LTUuOTItNi44Mi05LjkxLTEyLjg2LTkuOTFIMTU3LjRhMTMuNCAxMy40IDAgMCAwLTEzLjQgMTMuNGMwIDI1LjY5LTE5IDQ4Ljc1LTQ0LjY3IDUwLjQ5YTQ3LjUgNDcuNSAwIDAgMS00MS41NC0xOS4xNWMtNS4yOC03LjA5LTE0LjczLTkuNDUtMjIuMDktNC41NGwtMjguNTcgMTZhMTYgMTYgMCAwIDAtNS40NCAyMC40N0wxMDQuMjQgNDE2aDMwMy41MmwxMDIuNTUtMjExLjM3YTE2IDE2IDAgMCAwLTUuNDQtMjAuNDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzUm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjggMzJoLTU2YTE2IDE2IDAgMCAwLTE2IDE2djQ4aC00OFY0OGExNiAxNiAwIDAgMC0xNi0xNmgtODBhMTYgMTYgMCAwIDAtMTYgMTZ2NDhIODguMVY0OGExNiAxNiAwIDAgMC0xNi0xNkgxNkExNiAxNiAwIDAgMCAwIDQ4djE3Nmw2NCAzMmMwIDQ4LjMzLTEuNTQgOTUtMTMuMjEgMTYwaDI4Mi40MkMzMjEuNTQgMzUxIDMyMCAzMDMuNzIgMzIwIDI1Nmw2NC0zMlY0OGExNiAxNiAwIDAgMC0xNi0xNnpNMjI0IDMyMGgtNjR2LTY0YTMyIDMyIDAgMCAxIDY0IDB6bTE0NCAxMjhIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzUyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzQgMjA4SDY0YTE2IDE2IDAgMCAwLTE2IDE2djE2YTE2IDE2IDAgMCAwIDE2IDE2aDE1Ljk0QTUzNS43OCA1MzUuNzggMCAwIDEgNjQgMzg0aDEyOGE1MzUuNzggNTM1Ljc4IDAgMCAxLTE1Ljk0LTEyOEgxOTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTE2YTE2IDE2IDAgMCAwLTE2LTE2aC0xMGwzMy44OS05MC4zOGExNiAxNiAwIDAgMC0xNS0yMS42MkgxNDRWNjRoMjRhOCA4IDAgMCAwIDgtOFY0MGE4IDggMCAwIDAtOC04aC0yNFY4YTggOCAwIDAgMC04LThoLTE2YTggOCAwIDAgMC04IDh2MjRIODhhOCA4IDAgMCAwLTggOHYxNmE4IDggMCAwIDAgOCA4aDI0djMySDU1LjA5YTE2IDE2IDAgMCAwLTE1IDIxLjYyem0xNzMuMTYgMjUxLjU4TDIyNCA0NDh2LTE2YTE2IDE2IDAgMCAwLTE2LTE2SDQ4YTE2IDE2IDAgMCAwLTE2IDE2djE2TDguODUgNDU5LjU4QTE2IDE2IDAgMCAwIDAgNDczLjg5VjQ5NmExNiAxNiAwIDAgMCAxNiAxNmgyMjRhMTYgMTYgMCAwIDAgMTYtMTZ2LTIyLjExYTE2IDE2IDAgMCAwLTguODQtMTQuMzF6bTkyLjc3LTE1Ny43OGwtMy4yOSA4Mi4yaDEyNi43MmwtMy4yOS04Mi4yMSAyNC42LTIwLjc5QTMyIDMyIDAgMCAwIDQ5NiAyNTYuNTRWMTk4YTYgNiAwIDAgMC02LTZoLTI2LjM4YTYgNiAwIDAgMC02IDZ2MjZoLTI0Ljcxdi0yNmE2IDYgMCAwIDAtNi02SDM3My4xYTYgNiAwIDAgMC02IDZ2MjZoLTI0Ljcxdi0yNmE2IDYgMCAwIDAtNi02SDMxMGE2IDYgMCAwIDAtNiA2djU4LjZhMzIgMzIgMCAwIDAgMTEuMzYgMjQuNHpNMzg0IDMwNGExNiAxNiAwIDAgMSAzMiAwdjMyaC0zMnptMTE5LjE2IDE1NS41OEw0ODAgNDQ4di0xNmExNiAxNiAwIDAgMC0xNi0xNkgzMzZhMTYgMTYgMCAwIDAtMTYgMTZ2MTZsLTIzLjE1IDExLjU4YTE2IDE2IDAgMCAwLTguODUgMTQuMzFWNDk2YTE2IDE2IDAgMCAwIDE2IDE2aDE5MmExNiAxNiAwIDAgMCAxNi0xNnYtMjIuMTFhMTYgMTYgMCAwIDAtOC44NC0xNC4zMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkNpcmNsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0IDI1NmMwIDEzNy0xMTEgMjQ4LTI0OCAyNDhTOCAzOTMgOCAyNTYgMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4ek0yNzMgMzY5LjlsMTM1LjUtMTM1LjVjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlsLTE3LTE3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwyNTYgMjg1LjEgMTU0LjQgMTgzLjVjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC0xNyAxN2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlMMjM5IDM2OS45YzkuNCA5LjQgMjQuNiA5LjQgMzQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkNpcmNsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUwNEMxMTkgNTA0IDggMzkzIDggMjU2UzExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OC0xMTEgMjQ4LTI0OCAyNDh6TTE0Mi4xIDI3M2wxMzUuNSAxMzUuNWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwxNy0xN2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyMjYuOSAyNTZsMTAxLjYtMTAxLjZjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlsLTE3LTE3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwxNDIuMSAyMzljLTkuNCA5LjQtOS40IDI0LjYgMCAzNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkNpcmNsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4YzEzNyAwIDI0OCAxMTEgMjQ4IDI0OFMzOTMgNTA0IDI1NiA1MDQgOCAzOTMgOCAyNTYgMTE5IDggMjU2IDh6bTExMy45IDIzMUwyMzQuNCAxMDMuNWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTE3IDE3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOUwyODUuMSAyNTYgMTgzLjUgMzU3LjZjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDE3IDE3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDM2OS45IDI3M2M5LjQtOS40IDkuNC0yNC42IDAtMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXZyb25DaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDI1NkM4IDExOSAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDgtMTExIDI0OC0yNDggMjQ4UzggMzkzIDggMjU2em0yMzEtMTEzLjlMMTAzLjUgMjc3LjZjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDE3IDE3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDI1NiAyMjYuOWwxMDEuNiAxMDEuNmM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwxNy0xN2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyNzMgMTQyLjFjLTkuNC05LjQtMjQuNi05LjQtMzQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA3LjAyOSAzODEuNDc2TDEyLjY4NiAxODcuMTMyYy05LjM3My05LjM3My05LjM3My0yNC41NjkgMC0zMy45NDFsMjIuNjY3LTIyLjY2N2M5LjM1Ny05LjM1NyAyNC41MjItOS4zNzUgMzMuOTAxLS4wNEwyMjQgMjg0LjUwNWwxNTQuNzQ1LTE1NC4wMjFjOS4zNzktOS4zMzUgMjQuNTQ0LTkuMzE3IDMzLjkwMS4wNGwyMi42NjcgMjIuNjY3YzkuMzczIDkuMzczIDkuMzczIDI0LjU2OSAwIDMzLjk0MUwyNDAuOTcxIDM4MS40NzZjLTkuMzczIDkuMzcyLTI0LjU2OSA5LjM3Mi0zMy45NDIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQuNTIgMjM5LjAzTDIyOC44NyA0NC42OWM5LjM3LTkuMzcgMjQuNTctOS4zNyAzMy45NCAwbDIyLjY3IDIyLjY3YzkuMzYgOS4zNiA5LjM3IDI0LjUyLjA0IDMzLjlMMTMxLjQ5IDI1NmwxNTQuMDIgMTU0Ljc1YzkuMzQgOS4zOCA5LjMyIDI0LjU0LS4wNCAzMy45bC0yMi42NyAyMi42N2MtOS4zNyA5LjM3LTI0LjU3IDkuMzctMzMuOTQgMEwzNC41MiAyNzIuOTdjLTkuMzctOS4zNy05LjM3LTI0LjU3IDAtMzMuOTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXZyb25SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODUuNDc2IDI3Mi45NzFMOTEuMTMyIDQ2Ny4zMTRjLTkuMzczIDkuMzczLTI0LjU2OSA5LjM3My0zMy45NDEgMGwtMjIuNjY3LTIyLjY2N2MtOS4zNTctOS4zNTctOS4zNzUtMjQuNTIyLS4wNC0zMy45MDFMMTg4LjUwNSAyNTYgMzQuNDg0IDEwMS4yNTVjLTkuMzM1LTkuMzc5LTkuMzE3LTI0LjU0NC4wNC0zMy45MDFsMjIuNjY3LTIyLjY2N2M5LjM3My05LjM3MyAyNC41NjktOS4zNzMgMzMuOTQxIDBMMjg1LjQ3NSAyMzkuMDNjOS4zNzMgOS4zNzIgOS4zNzMgMjQuNTY4LjAwMSAzMy45NDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXZyb25VcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDAuOTcxIDEzMC41MjRsMTk0LjM0MyAxOTQuMzQzYzkuMzczIDkuMzczIDkuMzczIDI0LjU2OSAwIDMzLjk0MWwtMjIuNjY3IDIyLjY2N2MtOS4zNTcgOS4zNTctMjQuNTIyIDkuMzc1LTMzLjkwMS4wNEwyMjQgMjI3LjQ5NSA2OS4yNTUgMzgxLjUxNmMtOS4zNzkgOS4zMzUtMjQuNTQ0IDkuMzE3LTMzLjkwMS0uMDRsLTIyLjY2Ny0yMi42NjdjLTkuMzczLTkuMzczLTkuMzczLTI0LjU2OSAwLTMzLjk0MUwyMDcuMDMgMTMwLjUyNWM5LjM3Mi05LjM3MyAyNC41NjgtOS4zNzMgMzMuOTQxLS4wMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoaWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyMCA3MmMwLTM5Ljc2NSAzMi4yMzUtNzIgNzItNzJzNzIgMzIuMjM1IDcyIDcyYzAgMzkuNzY0LTMyLjIzNSA3Mi03MiA3MnMtNzItMzIuMjM2LTcyLTcyem0yNTQuNjI3IDEuMzczYy0xMi40OTYtMTIuNDk3LTMyLjc1OC0xMi40OTctNDUuMjU0IDBMMjQyLjc0NSAxNjBIMTQxLjI1NEw1NC42MjcgNzMuMzczYy0xMi40OTYtMTIuNDk3LTMyLjc1OC0xMi40OTctNDUuMjU0IDAtMTIuNDk3IDEyLjQ5Ny0xMi40OTcgMzIuNzU4IDAgNDUuMjU1TDEwNCAyMTMuMjU0VjQ4MGMwIDE3LjY3MyAxNC4zMjcgMzIgMzIgMzJoMTZjMTcuNjczIDAgMzItMTQuMzI3IDMyLTMyVjM2OGgxNnYxMTJjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMyaDE2YzE3LjY3MyAwIDMyLTE0LjMyNyAzMi0zMlYyMTMuMjU0bDk0LjYyNy05NC42MjdjMTIuNDk3LTEyLjQ5NyAxMi40OTctMzIuNzU3IDAtNDUuMjU0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaHVyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0LjQ2IDI0Ni42OEwzNTIgMTc5LjJWMTI4aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjgwYzAtOC44NC03LjE2LTE2LTE2LTE2aC00OFYxNmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4aC00OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDh2NTEuMmwtMTEyLjQ2IDY3LjQ4QTMxLjk5NyAzMS45OTcgMCAwIDAgMTYwIDI3NC4xMlY1MTJoOTZ2LTk2YzAtMzUuMzUgMjguNjUtNjQgNjQtNjRzNjQgMjguNjUgNjQgNjR2OTZoOTZWMjc0LjEyYzAtMTEuMjQtNS45LTIxLjY2LTE1LjU0LTI3LjQ0ek0wIDM5NS45NlY0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTEyVjMyMEwxOS4zOSAzNjYuNTRBMzIuMDI0IDMyLjAyNCAwIDAgMCAwIDM5NS45NnptNjIwLjYxLTI5LjQyTDUxMiAzMjB2MTkyaDExMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYzOTUuOTZjMC0xMi44LTcuNjMtMjQuMzctMTkuMzktMjkuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZU5vdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAzOS4wNTZ2MTYuNjU5YzAgMTAuODA0IDcuMjgxIDIwLjE1OSAxNy42ODYgMjMuMDY2QzM4My4yMDQgMTAwLjQzNCA0NDAgMTcxLjUxOCA0NDAgMjU2YzAgMTAxLjY4OS04Mi4yOTUgMTg0LTE4NCAxODQtMTAxLjY4OSAwLTE4NC04Mi4yOTUtMTg0LTE4NCAwLTg0LjQ3IDU2Ljc4Ni0xNTUuNTY0IDEzNC4zMTItMTc3LjIxOUMyMTYuNzE5IDc1Ljg3NCAyMjQgNjYuNTE3IDIyNCA1NS43MTJWMzkuMDY0YzAtMTUuNzA5LTE0LjgzNC0yNy4xNTMtMzAuMDQ2LTIzLjIzNEM4Ni42MDMgNDMuNDgyIDcuMzk0IDE0MS4yMDYgOC4wMDMgMjU3LjMzMmMuNzIgMTM3LjA1MiAxMTEuNDc3IDI0Ni45NTYgMjQ4LjUzMSAyNDYuNjY3QzM5My4yNTUgNTAzLjcxMSA1MDQgMzkyLjc4OCA1MDQgMjU2YzAtMTE1LjYzMy03OS4xNC0yMTIuNzc5LTE4Ni4yMTEtMjQwLjIzNkMzMDIuNjc4IDExLjg4OSAyODggMjMuNDU2IDI4OCAzOS4wNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxNiAxOTJINDgwVjI0YzAtMTMuMjYtMTAuNzQtMjQtMjQtMjRIMzEyYy0xMy4yNiAwLTI0IDEwLjc0LTI0IDI0djcyaC02NFYxNmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djgwaC02NFYxNmMwLTguODQtNy4xNi0xNi0xNi0xNkg4MGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2ODBIMjRjLTEzLjI2IDAtMjQgMTAuNzQtMjQgMjR2MzYwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTc2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMjE2YzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6TTEyOCA0MDRjMCA2LjYzLTUuMzcgMTItMTIgMTJINzZjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMC05NmMwIDYuNjMtNS4zNyAxMi0xMiAxMkg3NmMtNi42MyAwLTEyLTUuMzctMTItMTJ2LTQwYzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwem0wLTk2YzAgNi42My01LjM3IDEyLTEyIDEySDc2Yy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTEyOCAxOTJjMCA2LjYzLTUuMzcgMTItMTIgMTJoLTQwYy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTAtOTZjMCA2LjYzLTUuMzcgMTItMTIgMTJoLTQwYy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTAtOTZjMCA2LjYzLTUuMzcgMTItMTIgMTJoLTQwYy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTE2MCA5NmMwIDYuNjMtNS4zNyAxMi0xMiAxMmgtNDBjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMC05NmMwIDYuNjMtNS4zNyAxMi0xMiAxMmgtNDBjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMC05NmMwIDYuNjMtNS4zNyAxMi0xMiAxMmgtNDBjLTYuNjMgMC0xMi01LjM3LTEyLTEyVjc2YzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwem0xNjAgMjg4YzAgNi42My01LjM3IDEyLTEyIDEyaC00MGMtNi42MyAwLTEyLTUuMzctMTItMTJ2LTQwYzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwem0wLTk2YzAgNi42My01LjM3IDEyLTEyIDEyaC00MGMtNi42MyAwLTEyLTUuMzctMTItMTJ2LTQwYzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbGluaWNNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxMTVMNjkuNDcgMzA3LjcxYy0xLjYyIDEuNDYtMy42OSAyLjE0LTUuNDcgMy4zNVY0OTZhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2VjMxMS4xYy0xLjctMS4xNi0zLjcyLTEuODItNS4yNi0zLjJ6bTk2IDI2MWE4IDggMCAwIDEtOCA4aC01NnY1NmE4IDggMCAwIDEtOCA4aC00OGE4IDggMCAwIDEtOC04di01NmgtNTZhOCA4IDAgMCAxLTgtOHYtNDhhOCA4IDAgMCAxIDgtOGg1NnYtNTZhOCA4IDAgMCAxIDgtOGg0OGE4IDggMCAwIDEgOCA4djU2aDU2YTggOCAwIDAgMSA4IDh6bTE4Ni42OS0xMzkuNzJsLTI1NS45NC0yMjZhMzkuODUgMzkuODUgMCAwIDAtNTMuNDUgMGwtMjU2IDIyNmExNiAxNiAwIDAgMC0xLjIxIDIyLjZMMjUuNSAyODIuN2ExNiAxNiAwIDAgMCAyMi42IDEuMjFMMjc3LjQyIDgxLjYzYTE2IDE2IDAgMCAxIDIxLjE3IDBMNTI3LjkxIDI4My45YTE2IDE2IDAgMCAwIDIyLjYtMS4yMWwyMS40LTIzLjgyYTE2IDE2IDAgMCAwLTEuMjItMjIuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsaXBib2FyZENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiA2NGgtODBjMC0zNS4zLTI4LjctNjQtNjQtNjRzLTY0IDI4LjctNjQgNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE5MiA0MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNC0yNC0xMC43LTI0LTI0IDEwLjctMjQgMjQtMjR6bTEyMS4yIDIzMS44bC0xNDMgMTQxLjhjLTQuNyA0LjctMTIuMyA0LjYtMTctLjFsLTgyLjYtODMuM2MtNC43LTQuNy00LjYtMTIuMy4xLTE3TDk5LjEgMjg1YzQuNy00LjcgMTIuMy00LjYgMTcgLjFsNDYgNDYuNCAxMDYtMTA1LjJjNC43LTQuNyAxMi4zLTQuNiAxNyAuMWwyOC4yIDI4LjRjNC43IDQuOCA0LjYgMTIuMy0uMSAxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xpcGJvYXJkTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgNjRoLTgwYzAtMzUuMy0yOC43LTY0LTY0LTY0cy02NCAyOC43LTY0IDY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek05NiA0MjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjQgMjQgMTAuNyAyNCAyNC0xMC43IDI0LTI0IDI0em0wLTk2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0IDI0IDEwLjcgMjQgMjQtMTAuNyAyNC0yNCAyNHptMC05NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNCAyNCAxMC43IDI0IDI0LTEwLjcgMjQtMjQgMjR6bTk2LTE5MmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNC0yNC0xMC43LTI0LTI0IDEwLjctMjQgMjQtMjR6bTEyOCAzNjhjMCA0LjQtMy42IDgtOCA4SDE2OGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTQ0YzQuNCAwIDggMy42IDggOHYxNnptMC05NmMwIDQuNC0zLjYgOC04IDhIMTY4Yy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxNDRjNC40IDAgOCAzLjYgOCA4djE2em0wLTk2YzAgNC40LTMuNiA4LTggOEgxNjhjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDE0NGM0LjQgMCA4IDMuNiA4IDh2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsaXBib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMTEydjM1MmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjExMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDgwYzAtMzUuMjkgMjguNzEtNjQgNjQtNjRzNjQgMjguNzEgNjQgNjRoODBjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHpNMTkyIDQwYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjRzMTAuNzQ1IDI0IDI0IDI0IDI0LTEwLjc0NSAyNC0yNC0xMC43NDUtMjQtMjQtMjRtOTYgMTE0di0yMGE2IDYgMCAwIDAtNi02SDEwMmE2IDYgMCAwIDAtNiA2djIwYTYgNiAwIDAgMCA2IDZoMTgwYTYgNiAwIDAgMCA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Niw4QzExOSw4LDgsMTE5LDgsMjU2UzExOSw1MDQsMjU2LDUwNCw1MDQsMzkzLDUwNCwyNTYsMzkzLDgsMjU2LDhabTkyLjQ5LDMxM2gwbC0yMCwyNWExNiwxNiwwLDAsMS0yMi40OSwyLjVoMGwtNjctNDkuNzJhNDAsNDAsMCwwLDEtMTUtMzEuMjNWMTEyYTE2LDE2LDAsMCwxLDE2LTE2aDMyYTE2LDE2LDAsMCwxLDE2LDE2VjI1Nmw1OCw0Mi41QTE2LDE2LDAsMCwxLDM0OC40OSwzMjFaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAwYzI2LjUxIDAgNDggMjEuNDkgNDggNDh2Mjg4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhIMTc2Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjQ4YzAtMjYuNTEgMjEuNDktNDggNDgtNDhoMjg4TTE3NiA0MTZjLTQ0LjExMiAwLTgwLTM1Ljg4OC04MC04MFYxMjhINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2Mjg4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMjg4YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTQ4SDE3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvc2VkQ2FwdGlvbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2Mjg4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTIxOC4xIDI4Ny43YzIuOC0yLjUgNy4xLTIuMSA5LjIuOWwxOS41IDI3LjdjMS43IDIuNCAxLjUgNS42LS41IDcuNy01My42IDU2LjgtMTcyLjggMzIuMS0xNzIuOC02Ny45IDAtOTcuMyAxMjEuNy0xMTkuNSAxNzIuNS03MC4xIDIuMSAyIDIuNSAzLjIgMSA1LjdsLTE3LjUgMzAuNWMtMS45IDMuMS02LjIgNC05LjEgMS43LTQwLjgtMzItOTQuNi0xNC45LTk0LjYgMzEuMi4xIDQ4IDUxLjEgNzAuNSA5Mi4zIDMyLjZ6bTE5MC40IDBjMi44LTIuNSA3LjEtMi4xIDkuMi45bDE5LjUgMjcuN2MxLjcgMi40IDEuNSA1LjYtLjUgNy43LTUzLjUgNTYuOS0xNzIuNyAzMi4xLTE3Mi43LTY3LjkgMC05Ny4zIDEyMS43LTExOS41IDE3Mi41LTcwLjEgMi4xIDIgMi41IDMuMiAxIDUuN0w0MjAgMjIyLjJjLTEuOSAzLjEtNi4yIDQtOS4xIDEuNy00MC44LTMyLTk0LjYtMTQuOS05NC42IDMxLjIgMCA0OCA1MSA3MC41IDkyLjIgMzIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWREb3dubG9hZEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MzcuNiAyMjYuNmM0LjEtMTAuNyA2LjQtMjIuNCA2LjQtMzQuNiAwLTUzLTQzLTk2LTk2LTk2LTE5LjcgMC0zOC4xIDYtNTMuMyAxNi4yQzM2NyA2NC4yIDMxNS4zIDMyIDI1NiAzMmMtODguNCAwLTE2MCA3MS42LTE2MCAxNjAgMCAyLjcuMSA1LjQuMiA4LjFDNDAuMiAyMTkuOCAwIDI3My4yIDAgMzM2YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0aDM2OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOCAwLTYxLjktNDQtMTEzLjYtMTAyLjQtMTI1LjR6bS0xMzIuOSA4OC43TDI5OS4zIDQyMC43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMEwxNzEuMyAzMTUuM2MtMTAuMS0xMC4xLTIuOS0yNy4zIDExLjMtMjcuM0gyNDhWMTc2YzAtOC44IDcuMi0xNiAxNi0xNmg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MTEyaDY1LjRjMTQuMiAwIDIxLjQgMTcuMiAxMS4zIDI3LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkTWVhdGJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMzUyYy0yNi41IDAtNDggMjEuNS00OCA0OHMyMS41IDQ4IDQ4IDQ4IDQ4LTIxLjUgNDgtNDgtMjEuNS00OC00OC00OHptNDE2IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4czIxLjUgNDggNDggNDggNDgtMjEuNSA0OC00OC0yMS41LTQ4LTQ4LTQ4em0tMTE5IDExLjFjNC42LTE0LjUgMS42LTMwLjgtOS44LTQyLjMtMTEuNS0xMS41LTI3LjgtMTQuNC00Mi4zLTkuOS03LTEzLjUtMjAuNy0yMy0zNi45LTIzcy0yOS45IDkuNS0zNi45IDIzYy0xNC41LTQuNi0zMC44LTEuNi00Mi4zIDkuOS0xMS41IDExLjUtMTQuNCAyNy44LTkuOSA0Mi4zLTEzLjUgNy0yMyAyMC43LTIzIDM2LjlzOS41IDI5LjkgMjMgMzYuOWMtNC42IDE0LjUtMS42IDMwLjggOS45IDQyLjMgOC4yIDguMiAxOC45IDEyLjMgMjkuNyAxMi4zIDQuMyAwIDguNS0xLjEgMTIuNi0yLjUgNyAxMy41IDIwLjcgMjMgMzYuOSAyM3MyOS45LTkuNSAzNi45LTIzYzQuMSAxLjMgOC4zIDIuNSAxMi42IDIuNSAxMC44IDAgMjEuNS00LjEgMjkuNy0xMi4zIDExLjUtMTEuNSAxNC40LTI3LjggOS44LTQyLjMgMTMuNS03IDIzLTIwLjcgMjMtMzYuOXMtOS41LTI5LjktMjMtMzYuOXpNNTEyIDIyNGMwLTUzLTQzLTk2LTk2LTk2LS42IDAtMS4xLjItMS42LjIgMS4xLTUuMiAxLjYtMTAuNiAxLjYtMTYuMiAwLTQ0LjItMzUuOC04MC04MC04MC0yNC42IDAtNDYuMyAxMS4zLTYxIDI4LjhDMjU2LjQgMjQuOCAyMTkuMyAwIDE3NiAwIDExNC4xIDAgNjQgNTAuMSA2NCAxMTJjMCA3LjMuOCAxNC4zIDIuMSAyMS4yQzI3LjggMTQ1LjggMCAxODEuNSAwIDIyNGMwIDUzIDQzIDk2IDk2IDk2aDQzLjRjMy42LTggOC40LTE1LjQgMTQuOC0yMS44IDEzLjUtMTMuNSAzMS41LTIxLjEgNTAuOC0yMS4zIDEzLjUtMTMuMiAzMS43LTIwLjkgNTEtMjAuOXMzNy41IDcuNyA1MSAyMC45YzE5LjMuMiAzNy4zIDcuOCA1MC44IDIxLjMgNi40IDYuNCAxMS4zIDEzLjggMTQuOCAyMS44SDQxNmM1MyAwIDk2LTQzIDk2LTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZE1vb25SYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MC41IDIyNS41Yy02LjktMzcuMi0zOS4zLTY1LjUtNzguNS02NS41LTEyLjMgMC0yMy45IDMtMzQuMyA4LTE3LjQtMjQuMS00NS42LTQwLTc3LjctNDAtNTMgMC05NiA0My05NiA5NiAwIC41LjIgMS4xLjIgMS42QzI3LjYgMjMyLjkgMCAyNjUuMiAwIDMwNGMwIDQ0LjIgMzUuOCA4MCA4MCA4MGgyNTZjNDQuMiAwIDgwLTM1LjggODAtODAgMC0zOS4yLTI4LjItNzEuNy02NS41LTc4LjV6bTIxNy40LTEuN2MtNzAuNCAxMy4zLTEzNS00MC4zLTEzNS0xMTAuOCAwLTQwLjYgMjEuOS03OCA1Ny41LTk4LjEgNS41LTMuMSA0LjEtMTEuNC0yLjEtMTIuNUM0NzkuNi44IDQ3MC43IDAgNDYxLjggMGMtNzcuOSAwLTE0MS4xIDYxLjItMTQ0LjQgMTM3LjkgMjYuNyAxMS45IDQ4LjIgMzMuOCA1OC45IDYxLjcgMzcuMSAxNC4zIDY0IDQ3LjQgNzAuMiA4Ni44IDUuMS41IDEwIDEuNSAxNS4yIDEuNSA0NC43IDAgODUuNi0yMC4yIDExMi42LTUzLjMgNC4yLTQuOC0uMi0xMi02LjQtMTAuOHpNMzY0LjUgNDE4LjFjLTcuNi00LjMtMTcuNC0xLjgtMjEuOCA2bC0zNi42IDY0Yy00LjQgNy43LTEuNyAxNy40IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWwzNi42LTY0YzQuMy03LjcgMS43LTE3LjQtNi0yMS44em0tOTYgMGMtNy42LTQuMy0xNy40LTEuOC0yMS44IDZsLTM2LjYgNjRjLTQuNCA3LjctMS43IDE3LjQgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDM2LjYtNjRjNC4zLTcuNyAxLjctMTcuNC02LTIxLjh6bS05NiAwYy03LjYtNC4zLTE3LjQtMS44LTIxLjggNmwtMzYuNiA2NGMtNC40IDcuNy0xLjcgMTcuNCA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsMzYuNi02NGM0LjMtNy43IDEuNy0xNy40LTYtMjEuOHptLTk2IDBjLTcuNi00LjMtMTcuNC0xLjgtMjEuOCA2bC0zNi42IDY0Yy00LjQgNy43LTEuNyAxNy40IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWwzNi42LTY0YzQuMy03LjcgMS43LTE3LjQtNi0yMS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZE1vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQyLjggMzUyLjdjNS43LTkuNiA5LjItMjAuNyA5LjItMzIuNyAwLTM1LjMtMjguNy02NC02NC02NC0xNy4yIDAtMzIuOCA2LjktNDQuMyAxNy45LTE2LjMtMjkuNi00Ny41LTQ5LjktODMuNy00OS45LTUzIDAtOTYgNDMtOTYgOTYgMCAyIC41IDMuOC42IDUuN0MyNy4xIDMzOC44IDAgMzc0LjEgMCA0MTZjMCA1MyA0MyA5NiA5NiA5NmgyNDBjNDQuMiAwIDgwLTM1LjggODAtODAgMC00MS45LTMyLjMtNzUuOC03My4yLTc5LjN6bTIyMi41LTU0LjNjLTkzLjEgMTcuNy0xNzguNS01My43LTE3OC41LTE0Ny43IDAtNTQuMiAyOS0xMDQgNzYuMS0xMzAuOCA3LjMtNC4xIDUuNC0xNS4xLTIuOC0xNi43QzQ0OC40IDEuMSA0MzYuNyAwIDQyNSAwIDMxOS4xIDAgMjMzLjEgODUuOSAyMzMuMSAxOTJjMCA4LjUuNyAxNi44IDEuOCAyNSA1LjkgNC4zIDExLjYgOC45IDE2LjcgMTQuMiAxMS40LTQuNyAyMy43LTcuMiAzNi40LTcuMiA1Mi45IDAgOTYgNDMuMSA5NiA5NiAwIDMuNi0uMiA3LjItLjYgMTAuNyAyMy42IDEwLjggNDIuNCAyOS41IDUzLjUgNTIuNiA1NC40LTMuNCAxMDMuNy0yOS4zIDEzNy4xLTcwLjQgNS4zLTYuNS0uNS0xNi4xLTguNy0xNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZFJhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDEyOGMtLjYgMC0xLjEuMi0xLjYuMiAxLjEtNS4yIDEuNi0xMC42IDEuNi0xNi4yIDAtNDQuMi0zNS44LTgwLTgwLTgwLTI0LjYgMC00Ni4zIDExLjMtNjEgMjguOEMyNTYuNCAyNC44IDIxOS4zIDAgMTc2IDAgMTE0LjEgMCA2NCA1MC4xIDY0IDExMmMwIDcuMy44IDE0LjMgMi4xIDIxLjJDMjcuOCAxNDUuOCAwIDE4MS41IDAgMjI0YzAgNTMgNDMgOTYgOTYgOTZoMzIwYzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2ek04OCAzNzQuMmMtMTIuOCA0NC40LTQwIDU2LjQtNDAgODcuNyAwIDI3LjcgMjEuNSA1MC4xIDQ4IDUwLjFzNDgtMjIuNCA0OC01MC4xYzAtMzEuNC0yNy4yLTQzLjEtNDAtODcuNy0yLjItOC4xLTEzLjUtOC41LTE2IDB6bTE2MCAwYy0xMi44IDQ0LjQtNDAgNTYuNC00MCA4Ny43IDAgMjcuNyAyMS41IDUwLjEgNDggNTAuMXM0OC0yMi40IDQ4LTUwLjFjMC0zMS40LTI3LjItNDMuMS00MC04Ny43LTIuMi04LjEtMTMuNS04LjUtMTYgMHptMTYwIDBjLTEyLjggNDQuNC00MCA1Ni40LTQwIDg3LjcgMCAyNy43IDIxLjUgNTAuMSA0OCA1MC4xczQ4LTIyLjQgNDgtNTAuMWMwLTMxLjQtMjcuMi00My4xLTQwLTg3LjctMi4yLTguMS0xMy41LTguNS0xNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZFNob3dlcnNIZWF2eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODMuOSAzNzAuMWMtNy42LTQuNC0xNy40LTEuOC0yMS44IDZsLTY0IDExMmMtNC40IDcuNy0xLjcgMTcuNSA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsNjQtMTEyYzQuNC03LjYgMS43LTE3LjQtNi0yMS44em05NiAwYy03LjYtNC40LTE3LjQtMS44LTIxLjggNmwtNjQgMTEyYy00LjQgNy43LTEuNyAxNy41IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWw2NC0xMTJjNC40LTcuNiAxLjctMTcuNC02LTIxLjh6bS0xOTIgMGMtNy42LTQuNC0xNy40LTEuOC0yMS44IDZsLTY0IDExMmMtNC40IDcuNy0xLjcgMTcuNSA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsNjQtMTEyYzQuNC03LjYgMS43LTE3LjQtNi0yMS44em0zODQgMGMtNy42LTQuNC0xNy40LTEuOC0yMS44IDZsLTY0IDExMmMtNC40IDcuNy0xLjcgMTcuNSA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsNjQtMTEyYzQuNC03LjYgMS43LTE3LjQtNi0yMS44em0tOTYgMGMtNy42LTQuNC0xNy40LTEuOC0yMS44IDZsLTY0IDExMmMtNC40IDcuNy0xLjcgMTcuNSA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsNjQtMTEyYzQuNC03LjYgMS43LTE3LjQtNi0yMS44ek00MTYgMTI4Yy0uNiAwLTEuMS4yLTEuNi4yIDEuMS01LjIgMS42LTEwLjYgMS42LTE2LjIgMC00NC4yLTM1LjgtODAtODAtODAtMjQuNiAwLTQ2LjMgMTEuMy02MSAyOC44QzI1Ni40IDI0LjggMjE5LjMgMCAxNzYgMCAxMTQuMiAwIDY0IDUwLjEgNjQgMTEyYzAgNy4zLjggMTQuMyAyLjEgMjEuMkMyNy44IDE0NS44IDAgMTgxLjUgMCAyMjRjMCA1MyA0MyA5NiA5NiA5NmgzMjBjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkU3VuUmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTAuNSAyMjUuNWMtNi45LTM3LjItMzkuMy02NS41LTc4LjUtNjUuNS0xMi4zIDAtMjMuOSAzLTM0LjMgOC0xNy40LTI0LjEtNDUuNi00MC03Ny43LTQwLTUzIDAtOTYgNDMtOTYgOTYgMCAuNS4yIDEuMS4yIDEuNkMxODcuNiAyMzMgMTYwIDI2NS4yIDE2MCAzMDRjMCA0NC4yIDM1LjggODAgODAgODBoMjU2YzQ0LjIgMCA4MC0zNS44IDgwLTgwIDAtMzkuMi0yOC4yLTcxLjctNjUuNS03OC41em0tMzg2LjQgMzQuNGMtMzcuNC0zNy40LTM3LjQtOTguMyAwLTEzNS44IDM0LjYtMzQuNiA4OS4xLTM2LjggMTI2LjctNy40IDIwLTEyLjkgNDMuNi0yMC43IDY5LjItMjAuNy43IDAgMS4zLjIgMiAuMmw4LjktMjYuN2MzLjQtMTAuMi02LjMtMTkuOC0xNi41LTE2LjRsLTc1LjMgMjUuMS0zNS41LTcxYy00LjgtOS42LTE4LjUtOS42LTIzLjMgMGwtMzUuNSA3MS03NS4zLTI1LjFjLTEwLjItMy40LTE5LjggNi4zLTE2LjQgMTYuNWwyNS4xIDc1LjMtNzEgMzUuNWMtOS42IDQuOC05LjYgMTguNSAwIDIzLjNsNzEgMzUuNS0yNS4xIDc1LjNjLTMuNCAxMC4yIDYuMyAxOS44IDE2LjUgMTYuNWw1OS4yLTE5LjdjLS4yLTIuNC0uNy00LjctLjctNy4yIDAtMTIuNSAyLjMtMjQuNSA2LjItMzUuOS0zLjYtMi43LTcuMS01LjItMTAuMi04LjN6bTY5LjgtNThjNC4zLTI0LjUgMTUuOC00Ni40IDMxLjktNjQtOS44LTYuMi0yMS40LTkuOS0zMy44LTkuOS0zNS4zIDAtNjQgMjguNy02NCA2NCAwIDE4LjcgOC4yIDM1LjQgMjEuMSA0Ny4xIDExLjMtMTUuOSAyNi42LTI4LjkgNDQuOC0zNy4yem0zMzAuNiAyMTYuMmMtNy42LTQuMy0xNy40LTEuOC0yMS44IDZsLTM2LjYgNjRjLTQuNCA3LjctMS43IDE3LjQgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDM2LjYtNjRjNC4zLTcuNyAxLjctMTcuNC02LTIxLjh6bS05NiAwYy03LjYtNC4zLTE3LjQtMS44LTIxLjggNmwtMzYuNiA2NGMtNC40IDcuNy0xLjcgMTcuNCA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsMzYuNi02NGM0LjMtNy43IDEuNy0xNy40LTYtMjEuOHptLTk2IDBjLTcuNi00LjMtMTcuNC0xLjgtMjEuOCA2bC0zNi42IDY0Yy00LjQgNy43LTEuNyAxNy40IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWwzNi42LTY0YzQuMy03LjcgMS43LTE3LjQtNi0yMS44em0tOTYgMGMtNy42LTQuMy0xNy40LTEuOC0yMS44IDZsLTM2LjYgNjRjLTQuNCA3LjctMS43IDE3LjQgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDM2LjYtNjRjNC4zLTcuNyAxLjctMTcuNC02LTIxLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkU3VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NS4yIDMyNS43Yy4yLTEuOS44LTMuNy44LTUuNiAwLTM1LjMtMjguNy02NC02NC02NC0xMi42IDAtMjQuMiAzLjgtMzQuMSAxMC0xNy42LTM4LjgtNTYuNS02Ni0xMDEuOS02Ni02MS44IDAtMTEyIDUwLjEtMTEyIDExMiAwIDMgLjcgNS44LjkgOC43LTQ5LjYgMy43LTg4LjkgNDQuNy04OC45IDk1LjMgMCA1MyA0MyA5NiA5NiA5NmgyNzJjNTMgMCA5Ni00MyA5Ni05NiAwLTQyLjEtMjcuMi03Ny40LTY0LjgtOTAuNHptLTQzMC40LTIyLjZjLTQzLjctNDMuNy00My43LTExNC43IDAtMTU4LjMgNDMuNy00My43IDExNC43LTQzLjcgMTU4LjQgMCA5LjcgOS43IDE2LjkgMjAuOSAyMi4zIDMyLjcgOS44LTMuNyAyMC4xLTYgMzAuNy03LjVMMzg2IDgxLjFjNC0xMS45LTcuMy0yMy4xLTE5LjItMTkuMkwyNzkgOTEuMiAyMzcuNSA4LjRDMjMyLTIuOCAyMTYtMi44IDIxMC40IDguNEwxNjkgOTEuMiA4MS4xIDYxLjlDNjkuMyA1OCA1OCA2OS4zIDYxLjkgODEuMWwyOS4zIDg3LjgtODIuOCA0MS41Yy0xMS4yIDUuNi0xMS4yIDIxLjUgMCAyNy4xbDgyLjggNDEuNC0yOS4zIDg3LjhjLTQgMTEuOSA3LjMgMjMuMSAxOS4yIDE5LjJsNzYuMS0yNS4zYzYuMS0xMi40IDE0LTIzLjcgMjMuNi0zMy41LTEzLjEtNS40LTI1LjQtMTMuNC0zNi0yNHptLTQuOC03OS4yYzAgNDAuOCAyOS4zIDc0LjggNjcuOSA4Mi4zIDgtNC43IDE2LjMtOC44IDI1LjItMTEuNyA1LjQtNDQuMyAzMS04Mi41IDY3LjQtMTA1QzI4Ny4zIDE2MC40IDI1OCAxNDAgMjI0IDE0MGMtNDYuMyAwLTg0IDM3LjYtODQgODMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRVcGxvYWRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTM3LjYgMjI2LjZjNC4xLTEwLjcgNi40LTIyLjQgNi40LTM0LjYgMC01My00My05Ni05Ni05Ni0xOS43IDAtMzguMSA2LTUzLjMgMTYuMkMzNjcgNjQuMiAzMTUuMyAzMiAyNTYgMzJjLTg4LjQgMC0xNjAgNzEuNi0xNjAgMTYwIDAgMi43LjEgNS40LjIgOC4xQzQwLjIgMjE5LjggMCAyNzMuMiAwIDMzNmMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NGgzNjhjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjggMC02MS45LTQ0LTExMy42LTEwMi40LTEyNS40ek0zOTMuNCAyODhIMzI4djExMmMwIDguOC03LjIgMTYtMTYgMTZoLTQ4Yy04LjggMC0xNi03LjItMTYtMTZWMjg4aC02NS40Yy0xNC4zIDAtMjEuNC0xNy4yLTExLjMtMjcuM2wxMDUuNC0xMDUuNGM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMGwxMDUuNCAxMDUuNGMxMC4xIDEwLjEgMi45IDI3LjMtMTEuMyAyNy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MzcuNiAyMjYuNmM0LjEtMTAuNyA2LjQtMjIuNCA2LjQtMzQuNiAwLTUzLTQzLTk2LTk2LTk2LTE5LjcgMC0zOC4xIDYtNTMuMyAxNi4yQzM2NyA2NC4yIDMxNS4zIDMyIDI1NiAzMmMtODguNCAwLTE2MCA3MS42LTE2MCAxNjAgMCAyLjcuMSA1LjQuMiA4LjFDNDAuMiAyMTkuOCAwIDI3My4yIDAgMzM2YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0aDM2OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOCAwLTYxLjktNDQtMTEzLjYtMTAyLjQtMTI1LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvY2t0YWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5NiA0NjRoLTU2VjMzOC43OGwxNjguNzQtMTY4LjczYzE1LjUyLTE1LjUyIDQuNTMtNDIuMDUtMTcuNDItNDIuMDVIMjQuNjhjLTIxLjk1IDAtMzIuOTQgMjYuNTMtMTcuNDIgNDIuMDVMMTc2IDMzOC43OFY0NjRoLTU2Yy0yMi4wOSAwLTQwIDE3LjkxLTQwIDQwIDAgNC40MiAzLjU4IDggOCA4aDI0MGM0LjQyIDAgOC0zLjU4IDgtOCAwLTIyLjA5LTE3LjkxLTQwLTQwLTQwek00MzIgMGMtNjIuNjEgMC0xMTUuMzUgNDAuMi0xMzUuMTggOTZoNTIuNTRjMTYuNjUtMjguNTUgNDcuMjctNDggODIuNjQtNDggNTIuOTMgMCA5NiA0My4wNiA5NiA5NnMtNDMuMDcgOTYtOTYgOTZjLTE0LjA0IDAtMjcuMjktMy4yLTM5LjMyLTguNjRsLTM1LjI2IDM1LjI2QzM3OS4yMyAyNzkuOTIgNDA0LjU5IDI4OCA0MzIgMjg4Yzc5LjUzIDAgMTQ0LTY0LjQ3IDE0NC0xNDRTNTExLjUzIDAgNDMyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGVCcmFuY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDE0NGMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MGMwIDM2LjQgMjQuMyA2Ny4xIDU3LjUgNzYuOC0uNiAxNi4xLTQuMiAyOC41LTExIDM2LjktMTUuNCAxOS4yLTQ5LjMgMjIuNC04NS4yIDI1LjctMjguMiAyLjYtNTcuNCA1LjQtODEuMyAxNi45di0xNDRjMzIuNS0xMC4yIDU2LTQwLjUgNTYtNzYuMyAwLTQ0LjItMzUuOC04MC04MC04MFMwIDM1LjggMCA4MGMwIDM1LjggMjMuNSA2Ni4xIDU2IDc2LjN2MTk5LjNDMjMuNSAzNjUuOSAwIDM5Ni4yIDAgNDMyYzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0zNC0yMS4yLTYzLjEtNTEuMi03NC42IDMuMS01LjIgNy44LTkuOCAxNC45LTEzLjQgMTYuMi04LjIgNDAuNC0xMC40IDY2LjEtMTIuOCA0Mi4yLTMuOSA5MC04LjQgMTE4LjItNDMuNCAxNC0xNy40IDIxLjEtMzkuOCAyMS42LTY3LjkgMzEuNi0xMC44IDU0LjQtNDAuNyA1NC40LTc1Ljl6TTgwIDY0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2LTE2LTcuMi0xNi0xNiA3LjItMTYgMTYtMTZ6bTAgMzg0Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6bTIyNC0zMjBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTYtMTYtNy4yLTE2LTE2IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzguOSA1MTEuNWwtNjEtMTcuN2MtNi40LTEuOC0xMC04LjUtOC4yLTE0LjlMMzQ2LjIgOC43YzEuOC02LjQgOC41LTEwIDE0LjktOC4ybDYxIDE3LjdjNi40IDEuOCAxMCA4LjUgOC4yIDE0LjlMMjkzLjggNTAzLjNjLTEuOSA2LjQtOC41IDEwLjEtMTQuOSA4LjJ6bS0xMTQtMTEyLjJsNDMuNS00Ni40YzQuNi00LjkgNC4zLTEyLjctLjgtMTcuMkwxMTcgMjU2bDkwLjYtNzkuN2M1LjEtNC41IDUuNS0xMi4zLjgtMTcuMmwtNDMuNS00Ni40Yy00LjUtNC44LTEyLjEtNS4xLTE3LS41TDMuOCAyNDcuMmMtNS4xIDQuNy01LjEgMTIuOCAwIDE3LjVsMTQ0LjEgMTM1LjFjNC45IDQuNiAxMi41IDQuNCAxNy0uNXptMzI3LjIuNmwxNDQuMS0xMzUuMWM1LjEtNC43IDUuMS0xMi44IDAtMTcuNUw0OTIuMSAxMTIuMWMtNC44LTQuNS0xMi40LTQuMy0xNyAuNUw0MzEuNiAxNTljLTQuNiA0LjktNC4zIDEyLjcuOCAxNy4yTDUyMyAyNTZsLTkwLjYgNzkuN2MtNS4xIDQuNS01LjUgMTIuMy0uOCAxNy4ybDQzLjUgNDYuNGM0LjUgNC45IDEyLjEgNS4xIDE3IC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2ZmZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDM4NGgxOTJjNTMgMCA5Ni00MyA5Ni05NmgzMmM3MC42IDAgMTI4LTU3LjQgMTI4LTEyOFM1ODIuNiAzMiA1MTIgMzJIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyMzJjMCA1MyA0MyA5NiA5NiA5NnpNNTEyIDk2YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0aC0zMlY5NmgzMnptNDcuNyAzODRINDguM2MtNDcuNiAwLTYxLTY0LTM2LTY0aDU4My4zYzI1IDAgMTEuOCA2NC0zNS45IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg3LjQgMzE1LjdsLTQyLjYtMjQuNmM0LjMtMjMuMiA0LjMtNDcgMC03MC4ybDQyLjYtMjQuNmM0LjktMi44IDcuMS04LjYgNS41LTE0LTExLjEtMzUuNi0zMC02Ny44LTU0LjctOTQuNi0zLjgtNC4xLTEwLTUuMS0xNC44LTIuM0wzODAuOCAxMTBjLTE3LjktMTUuNC0zOC41LTI3LjMtNjAuOC0zNS4xVjI1LjhjMC01LjYtMy45LTEwLjUtOS40LTExLjctMzYuNy04LjItNzQuMy03LjgtMTA5LjIgMC01LjUgMS4yLTkuNCA2LjEtOS40IDExLjdWNzVjLTIyLjIgNy45LTQyLjggMTkuOC02MC44IDM1LjFMODguNyA4NS41Yy00LjktMi44LTExLTEuOS0xNC44IDIuMy0yNC43IDI2LjctNDMuNiA1OC45LTU0LjcgOTQuNi0xLjcgNS40LjYgMTEuMiA1LjUgMTRMNjcuMyAyMjFjLTQuMyAyMy4yLTQuMyA0NyAwIDcwLjJsLTQyLjYgMjQuNmMtNC45IDIuOC03LjEgOC42LTUuNSAxNCAxMS4xIDM1LjYgMzAgNjcuOCA1NC43IDk0LjYgMy44IDQuMSAxMCA1LjEgMTQuOCAyLjNsNDIuNi0yNC42YzE3LjkgMTUuNCAzOC41IDI3LjMgNjAuOCAzNS4xdjQ5LjJjMCA1LjYgMy45IDEwLjUgOS40IDExLjcgMzYuNyA4LjIgNzQuMyA3LjggMTA5LjIgMCA1LjUtMS4yIDkuNC02LjEgOS40LTExLjd2LTQ5LjJjMjIuMi03LjkgNDIuOC0xOS44IDYwLjgtMzUuMWw0Mi42IDI0LjZjNC45IDIuOCAxMSAxLjkgMTQuOC0yLjMgMjQuNy0yNi43IDQzLjYtNTguOSA1NC43LTk0LjYgMS41LTUuNS0uNy0xMS4zLTUuNi0xNC4xek0yNTYgMzM2Yy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29ncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIuMSAxOTFsLTguMiAxNC4zYy0zIDUuMy05LjQgNy41LTE1LjEgNS40LTExLjgtNC40LTIyLjYtMTAuNy0zMi4xLTE4LjYtNC42LTMuOC01LjgtMTAuNS0yLjgtMTUuN2w4LjItMTQuM2MtNi45LTgtMTIuMy0xNy4zLTE1LjktMjcuNGgtMTYuNWMtNiAwLTExLjItNC4zLTEyLjItMTAuMy0yLTEyLTIuMS0yNC42IDAtMzcuMSAxLTYgNi4yLTEwLjQgMTIuMi0xMC40aDE2LjVjMy42LTEwLjEgOS0xOS40IDE1LjktMjcuNGwtOC4yLTE0LjNjLTMtNS4yLTEuOS0xMS45IDIuOC0xNS43IDkuNS03LjkgMjAuNC0xNC4yIDMyLjEtMTguNiA1LjctMi4xIDEyLjEuMSAxNS4xIDUuNGw4LjIgMTQuM2MxMC41LTEuOSAyMS4yLTEuOSAzMS43IDBMNTUyIDYuM2MzLTUuMyA5LjQtNy41IDE1LjEtNS40IDExLjggNC40IDIyLjYgMTAuNyAzMi4xIDE4LjYgNC42IDMuOCA1LjggMTAuNSAyLjggMTUuN2wtOC4yIDE0LjNjNi45IDggMTIuMyAxNy4zIDE1LjkgMjcuNGgxNi41YzYgMCAxMS4yIDQuMyAxMi4yIDEwLjMgMiAxMiAyLjEgMjQuNiAwIDM3LjEtMSA2LTYuMiAxMC40LTEyLjIgMTAuNGgtMTYuNWMtMy42IDEwLjEtOSAxOS40LTE1LjkgMjcuNGw4LjIgMTQuM2MzIDUuMiAxLjkgMTEuOS0yLjggMTUuNy05LjUgNy45LTIwLjQgMTQuMi0zMi4xIDE4LjYtNS43IDIuMS0xMi4xLS4xLTE1LjEtNS40bC04LjItMTQuM2MtMTAuNCAxLjktMjEuMiAxLjktMzEuNyAwem0tMTAuNS01OC44YzM4LjUgMjkuNiA4Mi40LTE0LjMgNTIuOC01Mi44LTM4LjUtMjkuNy04Mi40IDE0LjMtNTIuOCA1Mi44ek0zODYuMyAyODYuMWwzMy43IDE2LjhjMTAuMSA1LjggMTQuNSAxOC4xIDEwLjUgMjkuMS04LjkgMjQuMi0yNi40IDQ2LjQtNDIuNiA2NS44LTcuNCA4LjktMjAuMiAxMS4xLTMwLjMgNS4zbC0yOS4xLTE2LjhjLTE2IDEzLjctMzQuNiAyNC42LTU0LjkgMzEuN3YzMy42YzAgMTEuNi04LjMgMjEuNi0xOS43IDIzLjYtMjQuNiA0LjItNTAuNCA0LjQtNzUuOSAwLTExLjUtMi0yMC0xMS45LTIwLTIzLjZWNDE4Yy0yMC4zLTcuMi0zOC45LTE4LTU0LjktMzEuN0w3NCA0MDNjLTEwIDUuOC0yMi45IDMuNi0zMC4zLTUuMy0xNi4yLTE5LjQtMzMuMy00MS42LTQyLjItNjUuNy00LTEwLjkuNC0yMy4yIDEwLjUtMjkuMWwzMy4zLTE2LjhjLTMuOS0yMC45LTMuOS00Mi40IDAtNjMuNEwxMiAyMDUuOGMtMTAuMS01LjgtMTQuNi0xOC4xLTEwLjUtMjkgOC45LTI0LjIgMjYtNDYuNCA0Mi4yLTY1LjggNy40LTguOSAyMC4yLTExLjEgMzAuMy01LjNsMjkuMSAxNi44YzE2LTEzLjcgMzQuNi0yNC42IDU0LjktMzEuN1Y1Ny4xYzAtMTEuNSA4LjItMjEuNSAxOS42LTIzLjUgMjQuNi00LjIgNTAuNS00LjQgNzYtLjEgMTEuNSAyIDIwIDExLjkgMjAgMjMuNnYzMy42YzIwLjMgNy4yIDM4LjkgMTggNTQuOSAzMS43bDI5LjEtMTYuOGMxMC01LjggMjIuOS0zLjYgMzAuMyA1LjMgMTYuMiAxOS40IDMzLjIgNDEuNiA0Mi4xIDY1LjggNCAxMC45LjEgMjMuMi0xMCAyOS4xbC0zMy43IDE2LjhjMy45IDIxIDMuOSA0Mi41IDAgNjMuNXptLTExNy42IDIxLjFjNTkuMi03Ny0yOC43LTE2NC45LTEwNS43LTEwNS43LTU5LjIgNzcgMjguNyAxNjQuOSAxMDUuNyAxMDUuN3ptMjQzLjQgMTgyLjdsLTguMiAxNC4zYy0zIDUuMy05LjQgNy41LTE1LjEgNS40LTExLjgtNC40LTIyLjYtMTAuNy0zMi4xLTE4LjYtNC42LTMuOC01LjgtMTAuNS0yLjgtMTUuN2w4LjItMTQuM2MtNi45LTgtMTIuMy0xNy4zLTE1LjktMjcuNGgtMTYuNWMtNiAwLTExLjItNC4zLTEyLjItMTAuMy0yLTEyLTIuMS0yNC42IDAtMzcuMSAxLTYgNi4yLTEwLjQgMTIuMi0xMC40aDE2LjVjMy42LTEwLjEgOS0xOS40IDE1LjktMjcuNGwtOC4yLTE0LjNjLTMtNS4yLTEuOS0xMS45IDIuOC0xNS43IDkuNS03LjkgMjAuNC0xNC4yIDMyLjEtMTguNiA1LjctMi4xIDEyLjEuMSAxNS4xIDUuNGw4LjIgMTQuM2MxMC41LTEuOSAyMS4yLTEuOSAzMS43IDBsOC4yLTE0LjNjMy01LjMgOS40LTcuNSAxNS4xLTUuNCAxMS44IDQuNCAyMi42IDEwLjcgMzIuMSAxOC42IDQuNiAzLjggNS44IDEwLjUgMi44IDE1LjdsLTguMiAxNC4zYzYuOSA4IDEyLjMgMTcuMyAxNS45IDI3LjRoMTYuNWM2IDAgMTEuMiA0LjMgMTIuMiAxMC4zIDIgMTIgMi4xIDI0LjYgMCAzNy4xLTEgNi02LjIgMTAuNC0xMi4yIDEwLjRoLTE2LjVjLTMuNiAxMC4xLTkgMTkuNC0xNS45IDI3LjRsOC4yIDE0LjNjMyA1LjIgMS45IDExLjktMi44IDE1LjctOS41IDcuOS0yMC40IDE0LjItMzIuMSAxOC42LTUuNyAyLjEtMTIuMS0uMS0xNS4xLTUuNGwtOC4yLTE0LjNjLTEwLjQgMS45LTIxLjIgMS45LTMxLjcgMHpNNTAxLjYgNDMxYzM4LjUgMjkuNiA4Mi40LTE0LjMgNTIuOC01Mi44LTM4LjUtMjkuNi04Mi40IDE0LjMtNTIuOCA1Mi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2lucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQwNS4zVjQ0OGMwIDM1LjMgODYgNjQgMTkyIDY0czE5Mi0yOC43IDE5Mi02NHYtNDIuN0MzNDIuNyA0MzQuNCAyNjcuMiA0NDggMTkyIDQ0OFM0MS4zIDQzNC40IDAgNDA1LjN6TTMyMCAxMjhjMTA2IDAgMTkyLTI4LjcgMTkyLTY0UzQyNiAwIDMyMCAwIDEyOCAyOC43IDEyOCA2NHM4NiA2NCAxOTIgNjR6TTAgMzAwLjRWMzUyYzAgMzUuMyA4NiA2NCAxOTIgNjRzMTkyLTI4LjcgMTkyLTY0di01MS42Yy00MS4zIDM0LTExNi45IDUxLjYtMTkyIDUxLjZTNDEuMyAzMzQuNCAwIDMwMC40em00MTYgMTFjNTcuMy0xMS4xIDk2LTMxLjcgOTYtNTUuNHYtNDIuN2MtMjMuMiAxNi40LTU3LjMgMjcuNi05NiAzNC41djYzLjZ6TTE5MiAxNjBDODYgMTYwIDAgMTk1LjggMCAyNDBzODYgODAgMTkyIDgwIDE5Mi0zNS44IDE5Mi04MC04Ni04MC0xOTItODB6bTIxOS4zIDU2LjNjNjAtMTAuOCAxMDAuNy0zMiAxMDAuNy01Ni4zdi00Mi43Yy0zNS41IDI1LjEtOTYuNSAzOC42LTE2MC43IDQxLjggMjkuNSAxNC4zIDUxLjIgMzMuNSA2MCA1Ny4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2x1bW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODBjMC0yNi41MS0yMS40OS00OC00OC00OHpNMjI0IDQxNkg2NFYxNjBoMTYwdjI1NnptMjI0IDBIMjg4VjE2MGgxNjB2MjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21tZW50QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAwSDY0QzI4LjcgMCAwIDI4LjcgMCA2NHYyODhjMCAzNS4zIDI4LjcgNjQgNjQgNjRoOTZ2ODRjMCA5LjggMTEuMiAxNS41IDE5LjEgOS43TDMwNCA0MTZoMTQ0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21tZW50RG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAzMkMxMTQuNjIgMzIgMCAxMjUuMTIgMCAyNDBjMCA0OS41NiAyMS40MSA5NS4wMSA1Ny4wMiAxMzAuNzRDNDQuNDYgNDIxLjA1IDIuNyA0NjUuOTcgMi4yIDQ2Ni41QTcuOTk1IDcuOTk1IDAgMCAwIDggNDgwYzY2LjI2IDAgMTE1Ljk5LTMxLjc1IDE0MC42LTUxLjM4QzE4MS4yOSA0NDAuOTMgMjE3LjU5IDQ0OCAyNTYgNDQ4YzE0MS4zOCAwIDI1Ni05My4xMiAyNTYtMjA4UzM5Ny4zOCAzMiAyNTYgMzJ6bTI0IDMwMi40NFYzNTJjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTE2Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMTcuNzNjLTExLjQyLTEuMzUtMjIuMjgtNS4xOS0zMS43OC0xMS40Ni02LjIyLTQuMTEtNi44Mi0xMy4xMS0xLjU1LTE4LjM4bDE3LjUyLTE3LjUyYzMuNzQtMy43NCA5LjMxLTQuMjQgMTQuMTEtMi4wMyAzLjE4IDEuNDYgNi42NiAyLjIyIDEwLjI2IDIuMjJoMzIuNzhjNC42NiAwIDguNDQtMy43OCA4LjQ0LTguNDIgMC0zLjc1LTIuNTItNy4wOC02LjEyLTguMTFsLTUwLjA3LTE0LjNjLTIyLjI1LTYuMzUtNDAuMDEtMjQuNzEtNDIuOTEtNDcuNjctNC4wNS0zMi4wNyAxOS4wMy01OS40MyA0OS4zMi02My4wNVYxMjhjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMTZjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTcuNzNjMTEuNDIgMS4zNSAyMi4yOCA1LjE5IDMxLjc4IDExLjQ2IDYuMjIgNC4xMSA2LjgyIDEzLjExIDEuNTUgMTguMzhsLTE3LjUyIDE3LjUyYy0zLjc0IDMuNzQtOS4zMSA0LjI0LTE0LjExIDIuMDNhMjQuNTE2IDI0LjUxNiAwIDAgMC0xMC4yNi0yLjIyaC0zMi43OGMtNC42NiAwLTguNDQgMy43OC04LjQ0IDguNDIgMCAzLjc1IDIuNTIgNy4wOCA2LjEyIDguMTFsNTAuMDcgMTQuM2MyMi4yNSA2LjM2IDQwLjAxIDI0LjcxIDQyLjkxIDQ3LjY3IDQuMDUgMzIuMDYtMTkuMDMgNTkuNDItNDkuMzIgNjMuMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnREb3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAzMkMxMTQuNiAzMiAwIDEyNS4xIDAgMjQwYzAgNDkuNiAyMS40IDk1IDU3IDEzMC43QzQ0LjUgNDIxLjEgMi43IDQ2NiAyLjIgNDY2LjVjLTIuMiAyLjMtMi44IDUuNy0xLjUgOC43UzQuOCA0ODAgOCA0ODBjNjYuMyAwIDExNi0zMS44IDE0MC42LTUxLjQgMzIuNyAxMi4zIDY5IDE5LjQgMTA3LjQgMTkuNCAxNDEuNCAwIDI1Ni05My4xIDI1Ni0yMDhTMzk3LjQgMzIgMjU2IDMyek0xMjggMjcyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTI4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xMjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnRNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAzMkMxMTQuNjIgMzIgMCAxMjUuMTIgMCAyNDBjMCA0OS41NiAyMS40MSA5NSA1NyAxMzAuNzRDNDQuNDYgNDIxLjA1IDIuNyA0NjYgMi4yIDQ2Ni41QTggOCAwIDAgMCA4IDQ4MGM2Ni4yNiAwIDExNi0zMS43NSAxNDAuNi01MS4zOEEzMDQuNjYgMzA0LjY2IDAgMCAwIDI1NiA0NDhjMTQxLjM5IDAgMjU2LTkzLjEyIDI1Ni0yMDhTMzk3LjM5IDMyIDI1NiAzMnptOTYgMjMyYTggOCAwIDAgMS04IDhoLTU2djU2YTggOCAwIDAgMS04IDhoLTQ4YTggOCAwIDAgMS04LTh2LTU2aC01NmE4IDggMCAwIDEtOC04di00OGE4IDggMCAwIDEgOC04aDU2di01NmE4IDggMCAwIDEgOC04aDQ4YTggOCAwIDAgMSA4IDh2NTZoNTZhOCA4IDAgMCAxIDggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDI0MGMwIDQ5LjYgMjEuNCA5NSA1NyAxMzAuNy0xMi42IDUwLjMtNTQuMyA5NS4yLTU0LjggOTUuOC0yLjIgMi4zLTIuOCA1LjctMS41IDguNyAxLjMgMi45IDQuMSA0LjggNy4zIDQuOCA2Ni4zIDAgMTE2LTMxLjggMTQwLjYtNTEuNCAzMi43IDEyLjMgNjkgMTkuNCAxMDcuNCAxOS40IDI3LjQgMCA1My43LTMuNiA3OC40LTEwTDcyLjkgMTg2LjRjLTUuNiAxNy4xLTguOSAzNS04LjkgNTMuNnptNTY5LjggMjE4LjFsLTExNC40LTg4LjRDNTU0LjYgMzM0LjEgNTc2IDI4OS4yIDU3NiAyNDBjMC0xMTQuOS0xMTQuNi0yMDgtMjU2LTIwOC02NS4xIDAtMTI0LjIgMjAuMS0xNjkuNCA1Mi43TDQ1LjUgMy40QzM4LjUtMiAyOC41LS44IDIzIDYuMkwzLjQgMzEuNGMtNS40IDctNC4yIDE3IDIuOCAyMi40bDU4OC40IDQ1NC43YzcgNS40IDE3IDQuMiAyMi41LTIuOGwxOS42LTI1LjNjNS40LTYuOCA0LjEtMTYuOS0yLjktMjIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJDMTE0LjYgMzIgMCAxMjUuMSAwIDI0MGMwIDQ5LjYgMjEuNCA5NSA1NyAxMzAuN0M0NC41IDQyMS4xIDIuNyA0NjYgMi4yIDQ2Ni41Yy0yLjIgMi4zLTIuOCA1LjctMS41IDguN1M0LjggNDgwIDggNDgwYzY2LjMgMCAxMTYtMzEuOCAxNDAuNi01MS40IDMyLjcgMTIuMyA2OSAxOS40IDEwNy40IDE5LjQgMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudHNEb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDE5MmMwLTg4LjM3LTkzLjEyLTE2MC0yMDgtMTYwUzAgMTAzLjYzIDAgMTkyYzAgMzQuMjcgMTQuMTMgNjUuOTUgMzcuOTcgOTEuOThDMjQuNjEgMzE0LjIyIDIuNTIgMzM4LjE2IDIuMiAzMzguNUE3Ljk5NSA3Ljk5NSAwIDAgMCA4IDM1MmMzNi41OCAwIDY2LjkzLTEyLjI1IDg4LjczLTI0Ljk4QzEyOC45MyAzNDIuNzYgMTY3LjAyIDM1MiAyMDggMzUyYzExNC44OCAwIDIwOC03MS42MyAyMDgtMTYwem0tMjI0IDk2di0xNi4yOWMtMTEuMjktLjU4LTIyLjI3LTQuNTItMzEuMzctMTEuMzUtMy45LTIuOTMtNC4xLTguNzctLjU3LTEyLjE0bDExLjc1LTExLjIxYzIuNzctMi42NCA2Ljg5LTIuNzYgMTAuMTMtLjczIDMuODcgMi40MiA4LjI2IDMuNzIgMTIuODIgMy43MmgyOC4xMWM2LjUgMCAxMS44LTUuOTIgMTEuOC0xMy4xOSAwLTUuOTUtMy42MS0xMS4xOS04Ljc3LTEyLjczbC00NS0xMy41Yy0xOC41OS01LjU4LTMxLjU4LTIzLjQyLTMxLjU4LTQzLjM5IDAtMjQuNTIgMTkuMDUtNDQuNDQgNDIuNjctNDUuMDdWOTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTYuMjljMTEuMjkuNTggMjIuMjcgNC41MSAzMS4zNyAxMS4zNSAzLjkgMi45MyA0LjEgOC43Ny41NyAxMi4xNGwtMTEuNzUgMTEuMjFjLTIuNzcgMi42NC02Ljg5IDIuNzYtMTAuMTMuNzMtMy44Ny0yLjQzLTguMjYtMy43Mi0xMi44Mi0zLjcyaC0yOC4xMWMtNi41IDAtMTEuOCA1LjkyLTExLjggMTMuMTkgMCA1Ljk1IDMuNjEgMTEuMTkgOC43NyAxMi43M2w0NSAxMy41YzE4LjU5IDUuNTggMzEuNTggMjMuNDIgMzEuNTggNDMuMzkgMCAyNC41My0xOS4wNSA0NC40NC00Mi42NyA0NS4wN1YyODhjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptMzQ2LjAxIDEyMy45OUM1NjEuODcgMzg1Ljk2IDU3NiAzNTQuMjcgNTc2IDMyMGMwLTY2Ljk0LTUzLjQ5LTEyNC4yLTEyOS4zMy0xNDguMDcuODYgNi42IDEuMzMgMTMuMjkgMS4zMyAyMC4wNyAwIDEwNS44Ny0xMDcuNjYgMTkyLTI0MCAxOTItMTAuNzggMC0yMS4zMi0uNzctMzEuNzMtMS44OEMyMDcuOCA0MzkuNjMgMjgxLjc3IDQ4MCAzNjggNDgwYzQwLjk4IDAgNzkuMDctOS4yNCAxMTEuMjctMjQuOThDNTAxLjA3IDQ2Ny43NSA1MzEuNDIgNDgwIDU2OCA0ODBjMy4yIDAgNi4wOS0xLjkxIDcuMzQtNC44NCAxLjI3LTIuOTQuNjYtNi4zNC0xLjU1LTguNjctLjMxLS4zMy0yMi40Mi0yNC4yNC0zNS43OC01NC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21tZW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMTkyYzAtODguNC05My4xLTE2MC0yMDgtMTYwUzAgMTAzLjYgMCAxOTJjMCAzNC4zIDE0LjEgNjUuOSAzOCA5Mi0xMy40IDMwLjItMzUuNSA1NC4yLTM1LjggNTQuNS0yLjIgMi4zLTIuOCA1LjctMS41IDguN1M0LjggMzUyIDggMzUyYzM2LjYgMCA2Ni45LTEyLjMgODguNy0yNSAzMi4yIDE1LjcgNzAuMyAyNSAxMTEuMyAyNSAxMTQuOSAwIDIwOC03MS42IDIwOC0xNjB6bTEyMiAyMjBjMjMuOS0yNiAzOC01Ny43IDM4LTkyIDAtNjYuOS01My41LTEyNC4yLTEyOS4zLTE0OC4xLjkgNi42IDEuMyAxMy4zIDEuMyAyMC4xIDAgMTA1LjktMTA3LjcgMTkyLTI0MCAxOTItMTAuOCAwLTIxLjMtLjgtMzEuNy0xLjlDMjA3LjggNDM5LjYgMjgxLjggNDgwIDM2OCA0ODBjNDEgMCA3OS4xLTkuMiAxMTEuMy0yNSAyMS44IDEyLjcgNTIuMSAyNSA4OC43IDI1IDMuMiAwIDYuMS0xLjkgNy4zLTQuOCAxLjMtMi45LjctNi4zLTEuNS04LjctLjMtLjMtMjIuNC0yNC4yLTM1LjgtNTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tcGFjdERpc2MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNODggMjU2SDU2YzAtMTA1LjkgODYuMS0xOTIgMTkyLTE5MnYzMmMtODguMiAwLTE2MCA3MS44LTE2MCAxNjB6bTE2MCA5NmMtNTMgMC05Ni00My05Ni05NnM0My05NiA5Ni05NiA5NiA0MyA5NiA5Ni00MyA5Ni05NiA5NnptMC0xMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21wYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNS4zOCAyMzMuMzdjLTEyLjUgMTIuNS0xMi41IDMyLjc2IDAgNDUuMjUgMTIuNDkgMTIuNSAzMi43NiAxMi41IDQ1LjI1IDAgMTIuNS0xMi41IDEyLjUtMzIuNzYgMC00NS4yNS0xMi41LTEyLjQ5LTMyLjc2LTEyLjQ5LTQ1LjI1IDB6TTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTEyNi4xNCAxNDguMDVMMzA4LjE3IDMwMC40YTMxLjkzOCAzMS45MzggMCAwIDEtMTUuNzcgMTUuNzdsLTE0NC4zNCA2NS45N2MtMTYuNjUgNy42MS0zMy44MS05LjU1LTI2LjItMjYuMmw2NS45OC0xNDQuMzVhMzEuOTM4IDMxLjkzOCAwIDAgMSAxNS43Ny0xNS43N2wxNDQuMzQtNjUuOTdjMTYuNjUtNy42IDMzLjggOS41NSAyNi4xOSAyNi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21wcmVzc0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjY4NiA0MjcuMzE0TDEwNCAzMjhsLTMyLjkyMi0zMS4wMjlDNTUuOTU4IDI4MS44NTEgNjYuNjY2IDI1NiA4OC4wNDggMjU2aDExMkMyMTMuMzAzIDI1NiAyMjQgMjY2Ljc0NSAyMjQgMjgwdjExMmMwIDIxLjM4Mi0yNS44MDMgMzIuMDktNDAuOTIyIDE2Ljk3MUwxNTIgMzc2bC05OS4zMTQgOTkuMzE0Yy02LjI0OCA2LjI0OC0xNi4zNzkgNi4yNDgtMjIuNjI3IDBMNC42ODYgNDQ5Ljk0MWMtNi4yNDgtNi4yNDgtNi4yNDgtMTYuMzc5IDAtMjIuNjI3ek00NDMuMzE0IDg0LjY4NkwzNDQgMTg0bDMyLjkyMiAzMS4wMjljMTUuMTIgMTUuMTIgNC40MTIgNDAuOTcxLTE2Ljk3IDQwLjk3MWgtMTEyQzIzNC42OTcgMjU2IDIyNCAyNDUuMjU1IDIyNCAyMzJWMTIwYzAtMjEuMzgyIDI1LjgwMy0zMi4wOSA0MC45MjItMTYuOTcxTDI5NiAxMzZsOTkuMzE0LTk5LjMxNGM2LjI0OC02LjI0OCAxNi4zNzktNi4yNDggMjIuNjI3IDBsMjUuMzczIDI1LjM3M2M2LjI0OCA2LjI0OCA2LjI0OCAxNi4zNzkgMCAyMi42Mjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbXByZXNzQXJyb3dzQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMCAyODhIODhjLTIxLjQgMC0zMi4xIDI1LjgtMTcgNDFsMzIuOSAzMS05OS4yIDk5LjNjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42bDI1LjQgMjUuNGM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMEwxNTIgNDA4bDMxLjEgMzNjMTUuMSAxNS4xIDQwLjkgNC40IDQwLjktMTdWMzEyYzAtMTMuMy0xMC43LTI0LTI0LTI0em0xMTItNjRoMTEyYzIxLjQgMCAzMi4xLTI1LjkgMTctNDFsLTMzLTMxIDk5LjMtOTkuM2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNkw0ODEuOSA0LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDM2MCAxMDRsLTMxLjEtMzNDMzEzLjggNTUuOSAyODggNjYuNiAyODggODh2MTEyYzAgMTMuMyAxMC43IDI0IDI0IDI0em05NiAxMzZsMzMtMzEuMWMxNS4xLTE1LjEgNC40LTQwLjktMTctNDAuOUgzMTJjLTEzLjMgMC0yNCAxMC43LTI0IDI0djExMmMwIDIxLjQgMjUuOSAzMi4xIDQxIDE3bDMxLTMyLjkgOTkuMyA5OS4zYzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDI1LjQtMjUuNGM2LjItNi4yIDYuMi0xNi40IDAtMjIuNkw0MDggMzYwek0xODMgNzEuMUwxNTIgMTA0IDUyLjcgNC43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw0LjcgMzAuMWMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZMMTA0IDE1MmwtMzMgMzEuMUM1NS45IDE5OC4yIDY2LjYgMjI0IDg4IDIyNGgxMTJjMTMuMyAwIDI0LTEwLjcgMjQtMjRWODhjMC0yMS4zLTI1LjktMzItNDEtMTYuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tcHJlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM2IDE5MkgzMTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjQ0YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2ODRoODRjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMnptLTI3Ni0yNFY0NGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2ODRIMTJjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMTI0YzEzLjMgMCAyNC0xMC43IDI0LTI0em0wIDMwMFYzNDRjMC0xMy4zLTEwLjctMjQtMjQtMjRIMTJjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoODR2ODRjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnptMTkyIDB2LTg0aDg0YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEySDMxMmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MTI0YzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbmNpZXJnZUJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDEzMC41NFYxMTJoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTk2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNnYxOC41NEMxMTUuNDkgMTQ2LjExIDMyIDIzOS4xOCAzMiAzNTJoNDQ4YzAtMTEyLjgyLTgzLjQ5LTIwNS44OS0xOTItMjIxLjQ2ek00OTYgMzg0SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0ODBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb29raWVCaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMC41MiAyNTUuODJjLTY5Ljk3LS44NS0xMjYuNDctNTcuNjktMTI2LjQ3LTEyNy44Ni03MC4xNyAwLTEyNy01Ni40OS0xMjcuODYtMTI2LjQ1LTI3LjI2LTQuMTQtNTUuMTMuMy03OS43MiAxMi44MmwtNjkuMTMgMzUuMjJhMTMyLjIyMSAxMzIuMjIxIDAgMCAwLTU3Ljc5IDU3LjgxbC0zNS4xIDY4Ljg4YTEzMi42NDUgMTMyLjY0NSAwIDAgMC0xMi44MiA4MC45NWwxMi4wOCA3Ni4yN2ExMzIuNTIxIDEzMi41MjEgMCAwIDAgMzcuMTYgNzIuOTZsNTQuNzcgNTQuNzZhMTMyLjAzNiAxMzIuMDM2IDAgMCAwIDcyLjcxIDM3LjA2bDc2LjcxIDEyLjE1YzI3LjUxIDQuMzYgNTUuNy0uMTEgODAuNTMtMTIuNzZsNjkuMTMtMzUuMjFhMTMyLjI3MyAxMzIuMjczIDAgMCAwIDU3Ljc5LTU3LjgxbDM1LjEtNjguODhjMTIuNTYtMjQuNjQgMTcuMDEtNTIuNTggMTIuOTEtNzkuOTF6TTE3NiAzNjhjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTMyLTE2MGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTYwIDEyOGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29va2llIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMC4zNyAyNTQuNzlsLTEyLjA4LTc2LjI2YTEzMi40OTMgMTMyLjQ5MyAwIDAgMC0zNy4xNi03Mi45NWwtNTQuNzYtNTQuNzVjLTE5LjczLTE5LjcyLTQ1LjE4LTMyLjctNzIuNzEtMzcuMDVsLTc2LjctMTIuMTVjLTI3LjUxLTQuMzYtNTUuNjkuMTEtODAuNTIgMTIuNzZMMTA3LjMyIDQ5LjZhMTMyLjI1IDEzMi4yNSAwIDAgMC01Ny43OSA1Ny44bC0zNS4xIDY4Ljg4YTEzMi42MDIgMTMyLjYwMiAwIDAgMC0xMi44MiA4MC45NGwxMi4wOCA3Ni4yN2ExMzIuNDkzIDEzMi40OTMgMCAwIDAgMzcuMTYgNzIuOTVsNTQuNzYgNTQuNzVhMTMyLjA4NyAxMzIuMDg3IDAgMCAwIDcyLjcxIDM3LjA1bDc2LjcgMTIuMTRjMjcuNTEgNC4zNiA1NS42OS0uMTEgODAuNTItMTIuNzVsNjkuMTItMzUuMjFhMTMyLjMwMiAxMzIuMzAyIDAgMCAwIDU3Ljc5LTU3LjhsMzUuMS02OC44N2MxMi43MS0yNC45NiAxNy4yLTUzLjMgMTIuODItODAuOTZ6TTE3NiAzNjhjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTMyLTE2MGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTYwIDEyOGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29weSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNDQ4djQwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyNGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0VjEyMGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoNzJ2Mjk2YzAgMzAuODc5IDI1LjEyMSA1NiA1NiA1NmgxNjh6bTAtMzQ0VjBIMTUyYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MzY4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgyNzJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjEyOEgzNDRjLTEzLjIgMC0yNC0xMC44LTI0LTI0em0xMjAuOTcxLTMxLjAyOUwzNzUuMDI5IDcuMDI5QTI0IDI0IDAgMCAwIDM1OC4wNTkgMEgzNTJ2OTZoOTZ2LTYuMDU5YTI0IDI0IDAgMCAwLTcuMDI5LTE2Ljk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb3B5cmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0xMTcuMTM0IDM0Ni43NTNjLTEuNTkyIDEuODY3LTM5Ljc3NiA0NS43MzEtMTA5Ljg1MSA0NS43MzEtODQuNjkyIDAtMTQ0LjQ4NC02My4yNi0xNDQuNDg0LTE0NS41NjcgMC04MS4zMDMgNjIuMDA0LTE0My40MDEgMTQzLjc2Mi0xNDMuNDAxIDY2Ljk1NyAwIDEwMS45NjUgMzcuMzE1IDEwMy40MjIgMzguOTA0YTEyIDEyIDAgMCAxIDEuMjM4IDE0LjYyM2wtMjIuMzggMzQuNjU1Yy00LjA0OSA2LjI2Ny0xMi43NzQgNy4zNTEtMTguMjM0IDIuMjk1LS4yMzMtLjIxNC0yNi41MjktMjMuODgtNjEuODgtMjMuODgtNDYuMTE2IDAtNzMuOTE2IDMzLjU3NS03My45MTYgNzYuMDgyIDAgMzkuNjAyIDI1LjUxNCA3OS42OTIgNzQuMjc3IDc5LjY5MiAzOC42OTcgMCA2NS4yOC0yOC4zMzggNjUuNTQ0LTI4LjYyNSA1LjEzMi01LjU2NSAxNC4wNTktNS4wMzMgMTguNTA4IDEuMDUzbDI0LjU0NyAzMy41NzJhMTIuMDAxIDEyLjAwMSAwIDAgMS0uNTUzIDE0Ljg2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ291Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDIyNHY2NGgzMjB2LTY0YzAtMzUuMyAyOC43LTY0IDY0LTY0aDMyYzAtNTMtNDMtOTYtOTYtOTZIMTYwYy01MyAwLTk2IDQzLTk2IDk2aDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0em00MTYtMzJoLTMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5NkgxMjh2LTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NCAwIDIzLjYgMTMgNDQgMzIgNTUuMVY0MzJjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNnYtMTZoMzg0djE2YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZWMzExLjFjMTktMTEuMSAzMi0zMS41IDMyLTU1LjEgMC0zNS4zLTI4LjctNjQtNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWRpdENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0MzJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI1NkgwdjE3NnptMTkyLTY4YzAtNi42IDUuNC0xMiAxMi0xMmgxMzZjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMkgyMDRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDB6bS0xMjggMGMwLTYuNiA1LjQtMTIgMTItMTJoNzJjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMkg3NmMtNi42IDAtMTItNS40LTEyLTEydi00MHpNNTc2IDgwdjQ4SDBWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoNDgwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm9wQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OCAzNTJoLTQwVjk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJIMTkydjk2aDE2MHYzMjhjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGg0OGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di00MGg0MGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di00OGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0ek0xNjAgMjRjMC0xMy4yNi0xMC43NS0yNC0yNC0yNEg4OEM3NC43NSAwIDY0IDEwLjc0IDY0IDI0djQwSDI0QzEwLjc1IDY0IDAgNzQuNzQgMCA4OHY0OGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQwdjI1NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDIyNHYtOTZIMTYwVjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OCAzNTJoLTQwVjEwOS4yNWw1OS4zMS01OS4zMWM2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzTDQ4NC42OSA0LjY5Yy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwTDQwMi43NSA2NEgxOTJ2OTZoMTE0Ljc1TDE2MCAzMDYuNzVWMjRjMC0xMy4yNi0xMC43NS0yNC0yNC0yNEg4OEM3NC43NSAwIDY0IDEwLjc0IDY0IDI0djQwSDI0QzEwLjc1IDY0IDAgNzQuNzQgMCA4OHY0OGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQwdjI2NGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDIzMnYtOTZIMjA1LjI1TDM1MiAyMDUuMjVWNDg4YzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoNDhjMTMuMjUgMCAyNC0xMC43NSAyNC0yNHYtNDBoNDBjMTMuMjUgMCAyNC0xMC43NSAyNC0yNHYtNDhjMC0xMy4yNi0xMC43NS0yNC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3Jvc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDEyOGgtOTZWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NnYyMjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjI1Nmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm9zc2hhaXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMCAyMjRoLTMwLjM2NEM0NTUuNzI0IDEzMC4zMjUgMzgxLjY3NSA1Ni4yNzYgMjg4IDQyLjM2NFYxMmMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYzMC4zNjRDMTMwLjMyNSA1Ni4yNzYgNTYuMjc2IDEzMC4zMjUgNDIuMzY0IDIyNEgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDMwLjM2NEM1Ni4yNzYgMzgxLjY3NSAxMzAuMzI1IDQ1NS43MjQgMjI0IDQ2OS42MzZWNTAwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtMzAuMzY0QzM4MS42NzUgNDU1LjcyNCA0NTUuNzI0IDM4MS42NzUgNDY5LjYzNiAyODhINTAwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJ6TTI4OCA0MDQuNjM0VjM2NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MC42MzRDMTY1LjgyNiAzOTIuMjMyIDExOS43ODMgMzQ2LjI0MyAxMDcuMzY2IDI4OEgxNDhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDAuNjM0QzExOS43NjggMTY1LjgyNiAxNjUuNzU3IDExOS43ODMgMjI0IDEwNy4zNjZWMTQ4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDAuNjM0QzM0Ni4xNzQgMTE5Ljc2OCAzOTIuMjE3IDE2NS43NTcgNDA0LjYzNCAyMjRIMzY0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDAuNjM0QzM5Mi4yMzIgMzQ2LjE3NCAzNDYuMjQzIDM5Mi4yMTcgMjg4IDQwNC42MzR6TTI4OCAyNTZjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMycy0zMi0xNC4zMjctMzItMzJjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyczMyIDE0LjMyNyAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDQgMzJoLTE2LjM2QzUxMy4wNCAxMi42OCA0OTAuMDkgMCA0NjQgMGMtNDQuMTggMC04MCAzNS44Mi04MCA4MHYyMC45OEwxMi4wOSAzOTMuNTdBMzAuMjE2IDMwLjIxNiAwIDAgMCAwIDQxNy43NGMwIDIyLjQ2IDIzLjY0IDM3LjA3IDQzLjczIDI3LjAzTDE2NS4yNyAzODRoOTYuNDlsNDQuNDEgMTIwLjFjMi4yNyA2LjIzIDkuMTUgOS40NCAxNS4zOCA3LjE3bDIyLjU1LTguMjFjNi4yMy0yLjI3IDkuNDQtOS4xNSA3LjE3LTE1LjM4TDMxMi45NCAzODRIMzUyYzEuOTEgMCAzLjc2LS4yMyA1LjY2LS4yOWw0NC41MSAxMjAuMzhjMi4yNyA2LjIzIDkuMTUgOS40NCAxNS4zOCA3LjE3bDIyLjU1LTguMjFjNi4yMy0yLjI3IDkuNDQtOS4xNSA3LjE3LTE1LjM4bC00MS4yNC0xMTEuNTNDNDg1Ljc0IDM1Mi44IDU0NCAyNzkuMjYgNTQ0IDE5MnYtODBsOTYtMTZjMC0zNS4zNS00Mi45OC02NC05Ni02NHptLTgwIDcyYy0xMy4yNSAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzUtMjQgMjQtMjRzMjQgMTAuNzQgMjQgMjRjMCAxMy4yNS0xMC43NSAyNC0yNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3Jvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4IDQ0OEgxMTJjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNDE2YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2em02NC0zMjBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4IDAgNy4xIDEuNiAxMy43IDQuNCAxOS44TDQ3NiAyMzkuMmMtMTUuNCA5LjItMzUuMyA0LTQ0LjItMTEuNkwzNTAuMyA4NUMzNjEgNzYuMiAzNjggNjMgMzY4IDQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4YzAgMTUgNyAyOC4yIDE3LjcgMzdsLTgxLjUgMTQyLjZjLTguOSAxNS42LTI4LjkgMjAuOC00NC4yIDExLjZsLTcyLjMtNDMuNGMyLjctNiA0LjQtMTIuNyA0LjQtMTkuOCAwLTI2LjUtMjEuNS00OC00OC00OFMwIDE0OS41IDAgMTc2czIxLjUgNDggNDggNDhjMi42IDAgNS4yLS40IDcuNy0uOEwxMjggNDE2aDM4NGw3Mi4zLTE5Mi44YzIuNS40IDUuMS44IDcuNy44IDI2LjUgMCA0OC0yMS41IDQ4LTQ4cy0yMS41LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcnV0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA3LjMxIDE4NS43MWwtMTgxLTE4MWExNiAxNiAwIDAgMC0yMi42MiAwTDI4MSAyNy4zMWExNiAxNiAwIDAgMCAwIDIyLjYzbDE4MSAxODFhMTYgMTYgMCAwIDAgMjIuNjMgMGwyMi42Mi0yMi42M2ExNiAxNiAwIDAgMCAuMDYtMjIuNnptLTE3OS41NCA2Ni40MWwtNjcuODktNjcuODkgNTUuMS01NS4xLTQ1LjI1LTQ1LjI1LTEwOS42NyAxMDkuNjdhOTYuMDggOTYuMDggMCAwIDAtMjUuNjcgNDYuMjlMMTA2LjY1IDM2MC4xbC0xMDIgMTAyYTE2IDE2IDAgMCAwIDAgMjIuNjNsMjIuNjIgMjIuNjJhMTYgMTYgMCAwIDAgMjIuNjMgMGwxMDItMTAyIDEyMC4yNS0yNy43NWE5NS44OCA5NS44OCAwIDAgMCA0Ni4yOS0yNS42NWwxMDkuNjgtMTA5LjY4TDM4Mi44NyAxOTd6bS01NC41NyA1NC41N2EzMiAzMiAwIDAgMS0xNS40NSA4LjU0bC03OS4zIDE4LjMyIDE4LjMtNzkuM2EzMi4yMiAzMi4yMiAwIDAgMSA4LjU2LTE1LjQ1bDkuMzEtOS4zMSA2Ny44OSA2Ny44OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3ViZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzkuMSA2LjNsLTIwOCA3OGMtMTguNyA3LTMxLjEgMjUtMzEuMSA0NXYyMjUuMWMwIDE4LjIgMTAuMyAzNC44IDI2LjUgNDIuOWwyMDggMTA0YzEzLjUgNi44IDI5LjQgNi44IDQyLjkgMGwyMDgtMTA0YzE2LjMtOC4xIDI2LjUtMjQuOCAyNi41LTQyLjlWMTI5LjNjMC0yMC0xMi40LTM3LjktMzEuMS00NC45bC0yMDgtNzhDMjYyIDIuMiAyNTAgMi4yIDIzOS4xIDYuM3pNMjU2IDY4LjRsMTkyIDcydjEuMWwtMTkyIDc4LTE5Mi03OHYtMS4xbDE5Mi03MnptMzIgMzU2VjI3NS41bDE2MC02NXYxMzMuOWwtMTYwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDdWJlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODguNiAyNTAuMkwzOTIgMjE0VjEwNS41YzAtMTUtOS4zLTI4LjQtMjMuNC0zMy43bC0xMDAtMzcuNWMtOC4xLTMuMS0xNy4xLTMuMS0yNS4zIDBsLTEwMCAzNy41Yy0xNC4xIDUuMy0yMy40IDE4LjctMjMuNCAzMy43VjIxNGwtOTYuNiAzNi4yQzkuMyAyNTUuNSAwIDI2OC45IDAgMjgzLjlWMzk0YzAgMTMuNiA3LjcgMjYuMSAxOS45IDMyLjJsMTAwIDUwYzEwLjEgNS4xIDIyLjEgNS4xIDMyLjIgMGwxMDMuOS01MiAxMDMuOSA1MmMxMC4xIDUuMSAyMi4xIDUuMSAzMi4yIDBsMTAwLTUwYzEyLjItNi4xIDE5LjktMTguNiAxOS45LTMyLjJWMjgzLjljMC0xNS05LjMtMjguNC0yMy40LTMzLjd6TTM1OCAyMTQuOGwtODUgMzEuOXYtNjguMmw4NS0zN3Y3My4zek0xNTQgMTA0LjFsMTAyLTM4LjIgMTAyIDM4LjJ2LjZsLTEwMiA0MS40LTEwMi00MS40di0uNnptODQgMjkxLjFsLTg1IDQyLjV2LTc5LjFsODUtMzguOHY3NS40em0wLTExMmwtMTAyIDQxLjQtMTAyLTQxLjR2LS42bDEwMi0zOC4yIDEwMiAzOC4ydi42em0yNDAgMTEybC04NSA0Mi41di03OS4xbDg1LTM4Ljh2NzUuNHptMC0xMTJsLTEwMiA0MS40LTEwMi00MS40di0uNmwxMDItMzguMiAxMDIgMzguMnYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3OC4wNiAyNTZMNDQ0LjQ4IDg5LjU3YzQuNjktNC42OSA0LjY5LTEyLjI5IDAtMTYuOTctMzIuOC0zMi44LTg1Ljk5LTMyLjgtMTE4Ljc5IDBMMjEwLjE4IDE4OC4xMmwtMjQuODYtMjQuODZjNC4zMS0xMC45MiA2LjY4LTIyLjgxIDYuNjgtMzUuMjYgMC01My4wMi00Mi45OC05Ni05Ni05NlMwIDc0Ljk4IDAgMTI4czQyLjk4IDk2IDk2IDk2YzQuNTQgMCA4Ljk5LS4zMiAxMy4zNi0uOTNMMTQyLjI5IDI1NmwtMzIuOTMgMzIuOTNjLTQuMzctLjYxLTguODMtLjkzLTEzLjM2LS45My01My4wMiAwLTk2IDQyLjk4LTk2IDk2czQyLjk4IDk2IDk2IDk2IDk2LTQyLjk4IDk2LTk2YzAtMTIuNDUtMi4zNy0yNC4zNC02LjY4LTM1LjI2bDI0Ljg2LTI0Ljg2TDMyNS42OSA0MzkuNGMzMi44IDMyLjggODUuOTkgMzIuOCAxMTguNzkgMCA0LjY5LTQuNjggNC42OS0xMi4yOCAwLTE2Ljk3TDI3OC4wNiAyNTZ6TTk2IDE2MGMtMTcuNjQgMC0zMi0xNC4zNi0zMi0zMnMxNC4zNi0zMiAzMi0zMiAzMiAxNC4zNiAzMiAzMi0xNC4zNiAzMi0zMiAzMnptMCAyNTZjLTE3LjY0IDAtMzItMTQuMzYtMzItMzJzMTQuMzYtMzIgMzItMzIgMzIgMTQuMzYgMzIgMzItMTQuMzYgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURhdGFiYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA3My4xNDN2NDUuNzE0QzQ0OCAxNTkuMTQzIDM0Ny42NjcgMTkyIDIyNCAxOTJTMCAxNTkuMTQzIDAgMTE4Ljg1N1Y3My4xNDNDMCAzMi44NTcgMTAwLjMzMyAwIDIyNCAwczIyNCAzMi44NTcgMjI0IDczLjE0M3pNNDQ4IDE3NnYxMDIuODU3QzQ0OCAzMTkuMTQzIDM0Ny42NjcgMzUyIDIyNCAzNTJTMCAzMTkuMTQzIDAgMjc4Ljg1N1YxNzZjNDguMTI1IDMzLjE0MyAxMzYuMjA4IDQ4LjU3MiAyMjQgNDguNTcyUzM5OS44NzQgMjA5LjE0MyA0NDggMTc2em0wIDE2MHYxMDIuODU3QzQ0OCA0NzkuMTQzIDM0Ny42NjcgNTEyIDIyNCA1MTJTMCA0NzkuMTQzIDAgNDM4Ljg1N1YzMzZjNDguMTI1IDMzLjE0MyAxMzYuMjA4IDQ4LjU3MiAyMjQgNDguNTcyUzM5OS44NzQgMzY5LjE0MyA0NDggMzM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZWFmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNiAyNjBjMCAxNS40NjQtMTIuNTM2IDI4LTI4IDI4cy0yOC0xMi41MzYtMjgtMjhjMC00NC4xMTIgMzUuODg4LTgwIDgwLTgwczgwIDM1Ljg4OCA4MCA4MGMwIDE1LjQ2NC0xMi41MzYgMjgtMjggMjhzLTI4LTEyLjUzNi0yOC0yOGMwLTEzLjIzNC0xMC43NjctMjQtMjQtMjRzLTI0IDEwLjc2Ni0yNCAyNHptMjQtMTc2Yy05Ny4wNDcgMC0xNzYgNzguOTUzLTE3NiAxNzYgMCAxNS40NjQgMTIuNTM2IDI4IDI4IDI4czI4LTEyLjUzNiAyOC0yOGMwLTY2LjE2OCA1My44MzItMTIwIDEyMC0xMjBzMTIwIDUzLjgzMiAxMjAgMTIwYzAgNzUuMTY0LTcxLjAwOSA3MC4zMTEtNzEuOTk3IDE0My42MjJMMjg4IDQwNGMwIDI4LjY3My0yMy4zMjcgNTItNTIgNTItMTUuNDY0IDAtMjggMTIuNTM2LTI4IDI4czEyLjUzNiAyOCAyOCAyOGM1OS40NzUgMCAxMDcuODc2LTQ4LjMyOCAxMDgtMTA3Ljc3NC41OTUtMzQuNDI4IDcyLTQ4LjI0IDcyLTE0NC4yMjYgMC05Ny4wNDctNzguOTUzLTE3Ni0xNzYtMTc2em0yNjguNDg1LTUyLjIwMUw0ODAuMiAzLjUxNWMtNC42ODctNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDM3Ni4yIDkwLjU0NGMtNC42ODYgNC42ODYtNC42ODYgMTIuMjg0IDAgMTYuOTcxbDI4LjI4NSAyOC4yODVjNC42ODYgNC42ODYgMTIuMjg0IDQuNjg2IDE2Ljk3IDBsODcuMDMtODcuMDI5YzQuNjg3LTQuNjg4IDQuNjg3LTEyLjI4NiAwLTE2Ljk3MnpNMTY4Ljk3IDMxNC43NDVjLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NyAwTDMuNTE1IDQ2My4yM2MtNC42ODYgNC42ODYtNC42ODYgMTIuMjg0IDAgMTYuOTcxTDMxLjggNTA4LjQ4NWM0LjY4NyA0LjY4NiAxMi4yODQgNC42ODYgMTYuOTcxIDBMMTk3LjI1NiAzNjBjNC42ODYtNC42ODYgNC42ODYtMTIuMjg0IDAtMTYuOTcxbC0yOC4yODYtMjguMjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZW1vY3JhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzcuMyAyNTYuOWwtMTkuNi0yOS40Yy0yOC4yLTQyLjMtNzUuMy02Ny41LTEyNi4xLTY3LjVIMjU2bC04MS4yLTgxLjJjMjAuMS0yMC4xIDIyLjYtNTEuMSA3LjUtNzMuOS0zLjQtNS4yLTEwLjgtNS45LTE1LjItMS41bC00MS44IDQxLjhMODIuNCAyLjRjLTMuNi0zLjYtOS42LTMtMTIuNCAxLjItMTIuMyAxOC42LTEwLjMgNDQgNi4xIDYwLjQgMy4zIDMuMyA3LjMgNS4zIDExLjMgNy41LTIuMiAxLjctNC43IDMuMS02LjQgNS40TDYuNCAxNzYuMmMtNy4zIDkuNy04LjQgMjIuNy0zIDMzLjVsMTQuMyAyOC42YzUuNCAxMC44IDE2LjUgMTcuNyAyOC42IDE3LjdoMzFjOC41IDAgMTYuNi0zLjQgMjIuNi05LjRMMTM4IDIxMmw1NCAxMDhoMzUydi03Ny44YzE2LjIgMTIuMiAxOC4zIDE3LjYgNDAuMSA1MC4zIDQuOSA3LjQgMTQuOCA5LjMgMjIuMiA0LjRsMjYuNi0xNy43YzcuMy01IDkuMy0xNC45IDQuNC0yMi4zem0tMzQxLjEtMTMuNmwtMTYuNSAxNi4xIDMuOSAyMi43Yy43IDQuMS0zLjYgNy4yLTcuMiA1LjNMMjU2IDI3Ni43bC0yMC40IDEwLjdjLTMuNiAxLjktNy45LTEuMi03LjItNS4zbDMuOS0yMi43LTE2LjUtMTYuMWMtMy0yLjktMS4zLTcuOSAyLjgtOC41bDIyLjgtMy4zIDEwLjItMjAuN2MxLjgtMy43IDcuMS0zLjcgOSAwbDEwLjIgMjAuNyAyMi44IDMuM2M0IC42IDUuNiA1LjYgMi42IDguNXptMTEyIDBsLTE2LjUgMTYuMSAzLjkgMjIuN2MuNyA0LjEtMy42IDcuMi03LjIgNS4zTDM2OCAyNzYuN2wtMjAuNCAxMC43Yy0zLjYgMS45LTcuOS0xLjItNy4yLTUuM2wzLjktMjIuNy0xNi41LTE2LjFjLTMtMi45LTEuMy03LjkgMi44LTguNWwyMi44LTMuMyAxMC4yLTIwLjdjMS44LTMuNyA3LjEtMy43IDkgMGwxMC4yIDIwLjcgMjIuOCAzLjNjNCAuNiA1LjYgNS42IDIuNiA4LjV6bTExMiAwbC0xNi41IDE2LjEgMy45IDIyLjdjLjcgNC4xLTMuNiA3LjItNy4yIDUuM0w0ODAgMjc2LjdsLTIwLjQgMTAuN2MtMy42IDEuOS03LjktMS4yLTcuMi01LjNsMy45LTIyLjctMTYuNS0xNi4xYy0zLTIuOS0xLjMtNy45IDIuOC04LjVsMjIuOC0zLjMgMTAuMi0yMC43YzEuOC0zLjcgNy4xLTMuNyA5IDBsMTAuMiAyMC43IDIyLjggMy4zYzQgLjYgNS42IDUuNiAyLjYgOC41ek0xOTIgNDk2YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZ2LTgwaDE2MHY4MGMwIDguOCA3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2VjM1MkgxOTJ2MTQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZXNrdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHYzMjBjMCAyNi41IDIxLjUgNDggNDggNDhoMTkybC0xNiA0OGgtNzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMjcyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0aC03MmwtMTYtNDhoMTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMTYgMzUySDY0VjY0aDQ0OHYyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURoYXJtYWNoYWtyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTUgMjI1LjA2bC0xNy4yMiAxLjA4Yy01LjI3LTM5LjQ5LTIwLjc5LTc1LjY0LTQzLjg2LTEwNS44NGwxMi45NS0xMS40M2M2LjkyLTYuMTEgNy4yNS0xNi43OS43My0yMy4zMUw0MjYuNDQgNjQuNGMtNi41My02LjUzLTE3LjIxLTYuMTktMjMuMzEuNzNMMzkxLjcgNzguMDdjLTMwLjItMjMuMDYtNjYuMzUtMzguNTgtMTA1LjgzLTQzLjg2TDI4Ni45NCAxN2MuNTgtOS4yMS02Ljc0LTE3LTE1Ljk3LTE3aC0yOS45NGMtOS4yMyAwLTE2LjU0IDcuNzktMTUuOTcgMTdsMS4wOCAxNy4yMmMtMzkuNDkgNS4yNy03NS42NCAyMC43OS0xMDUuODMgNDMuODZsLTExLjQzLTEyLjk1Yy02LjExLTYuOTItMTYuNzktNy4yNS0yMy4zMS0uNzNMNjQuNCA4NS41NmMtNi41MyA2LjUzLTYuMTkgMTcuMjEuNzMgMjMuMzFsMTIuOTUgMTEuNDNjLTIzLjA2IDMwLjItMzguNTggNjYuMzUtNDMuODYgMTA1Ljg0TDE3IDIyNS4wNmMtOS4yMS0uNTgtMTcgNi43NC0xNyAxNS45N3YyOS45NGMwIDkuMjMgNy43OSAxNi41NCAxNyAxNS45N2wxNy4yMi0xLjA4YzUuMjcgMzkuNDkgMjAuNzkgNzUuNjQgNDMuODYgMTA1LjgzbC0xMi45NSAxMS40M2MtNi45MiA2LjExLTcuMjUgMTYuNzktLjczIDIzLjMxbDIxLjE3IDIxLjE3YzYuNTMgNi41MyAxNy4yMSA2LjE5IDIzLjMxLS43M2wxMS40My0xMi45NWMzMC4yIDIzLjA2IDY2LjM1IDM4LjU4IDEwNS44NCA0My44NkwyMjUuMDYgNDk1Yy0uNTggOS4yMSA2Ljc0IDE3IDE1Ljk3IDE3aDI5Ljk0YzkuMjMgMCAxNi41NC03Ljc5IDE1Ljk3LTE3bC0xLjA4LTE3LjIyYzM5LjQ5LTUuMjcgNzUuNjQtMjAuNzkgMTA1Ljg0LTQzLjg2bDExLjQzIDEyLjk1YzYuMTEgNi45MiAxNi43OSA3LjI1IDIzLjMxLjczbDIxLjE3LTIxLjE3YzYuNTMtNi41MyA2LjE5LTE3LjIxLS43My0yMy4zMWwtMTIuOTUtMTEuNDNjMjMuMDYtMzAuMiAzOC41OC02Ni4zNSA0My44Ni0xMDUuODNsMTcuMjIgMS4wOGM5LjIxLjU4IDE3LTYuNzQgMTctMTUuOTd2LTI5Ljk0Yy0uMDEtOS4yMy03LjgtMTYuNTQtMTcuMDEtMTUuOTd6TTI4MS44NCA5OC42MWMyNC44MSA0LjA3IDQ3LjYzIDEzLjY2IDY3LjIzIDI3Ljc4bC00Mi42MiA0OC4yOWMtOC43My01LjQ0LTE4LjMyLTkuNTQtMjguNjItMTEuOTVsNC4wMS02NC4xMnptLTUxLjY4IDBsNC4wMSA2NC4xMmMtMTAuMjkgMi40MS0xOS44OSA2LjUyLTI4LjYyIDExLjk1bC00Mi42Mi00OC4yOWMxOS42LTE0LjEyIDQyLjQyLTIzLjcxIDY3LjIzLTI3Ljc4em0tMTAzLjc3IDY0LjMzbDQ4LjMgNDIuNjFjLTUuNDQgOC43My05LjU0IDE4LjMzLTExLjk2IDI4LjYybC02NC4xMi00LjAxYzQuMDctMjQuODEgMTMuNjYtNDcuNjIgMjcuNzgtNjcuMjJ6bS0yNy43OCAxMTguOWw2NC4xMi00LjAxYzIuNDEgMTAuMjkgNi41MiAxOS44OSAxMS45NSAyOC42MmwtNDguMjkgNDIuNjJjLTE0LjEyLTE5LjYtMjMuNzEtNDIuNDItMjcuNzgtNjcuMjN6bTEzMS41NSAxMzEuNTVjLTI0LjgxLTQuMDctNDcuNjMtMTMuNjYtNjcuMjMtMjcuNzhsNDIuNjEtNDguM2M4LjczIDUuNDQgMTguMzMgOS41NCAyOC42MiAxMS45NmwtNCA2NC4xMnpNMjU2IDI4OGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMjUuODQgMTI1LjM5bC00LjAxLTY0LjEyYzEwLjI5LTIuNDEgMTkuODktNi41MiAyOC42Mi0xMS45Nmw0Mi42MSA0OC4zYy0xOS42IDE0LjEyLTQyLjQxIDIzLjcxLTY3LjIyIDI3Ljc4em0xMDMuNzctNjQuMzNsLTQ4LjI5LTQyLjYyYzUuNDQtOC43MyA5LjU0LTE4LjMyIDExLjk1LTI4LjYybDY0LjEyIDQuMDFjLTQuMDcgMjQuODItMTMuNjYgNDcuNjQtMjcuNzggNjcuMjN6bS0zNi4zNC0xMTQuODljLTIuNDEtMTAuMjktNi41Mi0xOS44OS0xMS45Ni0yOC42Mmw0OC4zLTQyLjYxYzE0LjEyIDE5LjYgMjMuNzEgNDIuNDIgMjcuNzggNjcuMjNsLTY0LjEyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpYWdub3NlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMjU2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2LTE2IDcuMi0xNiAxNiA3LjIgMTYgMTYgMTZ6bS0xNzYtODBjNDguNSAwIDg4LTM5LjUgODgtODhTMzY4LjUgMCAzMjAgMHMtODggMzkuNS04OCA4OCAzOS41IDg4IDg4IDg4ek01OS44IDM2NGMxMC4yIDE1LjMgMjkuMyAxNy44IDQyLjkgOS44IDE2LjItOS42IDU2LjItMzEuNyAxMDUuMy00OC42VjQxNmgyMjR2LTkwLjdjNDkuMSAxNi44IDg5LjEgMzkgMTA1LjMgNDguNiAxMy42IDggMzIuNyA1LjMgNDIuOS05LjhsMTcuOC0yNi43YzguOC0xMy4yIDcuNi0zNC42LTEwLTQ1LjEtMTEuOS03LjEtMjkuNy0xNy01MS4xLTI3LjQtMjguMSA0Ni4xLTk5LjQgMTcuOC04Ny43LTM1LjFDNDA5LjMgMjE3LjIgMzY1LjEgMjA4IDMyMCAyMDhjLTU3IDAtMTEyLjkgMTQuNS0xNjAgMzIuMi0uMiA0MC4yLTQ3LjYgNjMuMy03OS4yIDM2LTExLjIgNi0yMS4zIDExLjYtMjguNyAxNi0xNy42IDEwLjUtMTguOCAzMS44LTEwIDQ1LjFMNTkuOCAzNjR6TTM2OCAzNDRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0em0tOTYtOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0em0tMTYwIDhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTYtMTYgNy4yLTE2IDE2IDcuMiAxNiAxNiAxNnptNTEyIDE5MkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg2MDhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpY2VEMjAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA2Ljc1IDIxNS4wNkwxLjIgMzcwLjk1Yy0zLjA4IDUgLjEgMTEuNSA1LjkzIDEyLjE0bDIwOC4yNiAyMi4wNy0xMDguNjQtMTkwLjF6TTcuNDEgMzE1LjQzTDgyLjcgMTkzLjA4IDYuMDYgMTQ3LjFjLTIuNjctMS42LTYuMDYuMzItNi4wNiAzLjQzdjE2Mi44MWMwIDQuMDMgNS4yOSA1LjUzIDcuNDEgMi4wOXpNMTguMjUgNDIzLjZsMTk0LjQgODcuNjZjNS4zIDIuNDUgMTEuMzUtMS40MyAxMS4zNS03LjI2di02NS42N2wtMjAzLjU1LTIyLjNjLTQuNDUtLjUtNi4yMyA1LjU5LTIuMiA3LjU3em04MS4yMi0yNTcuNzhMMTc5LjQgMjIuODhjNC4zNC03LjA2LTMuNTktMTUuMjUtMTAuNzgtMTEuMTRMMTcuODEgMTEwLjM1Yy0yLjQ3IDEuNjItMi4zOSA1LjI2LjEzIDYuNzhsODEuNTMgNDguNjl6TTI0MCAxNzZoMTA5LjIxTDI1My42MyA3LjYyQzI1MC41IDIuNTQgMjQ1LjI1IDAgMjQwIDBzLTEwLjUgMi41NC0xMy42MyA3LjYyTDEzMC43OSAxNzZIMjQwem0yMzMuOTQtMjguOWwtNzYuNjQgNDUuOTkgNzUuMjkgMTIyLjM1YzIuMTEgMy40NCA3LjQxIDEuOTQgNy40MS0yLjFWMTUwLjUzYzAtMy4xMS0zLjM5LTUuMDMtNi4wNi0zLjQzem0tOTMuNDEgMTguNzJsODEuNTMtNDguN2MyLjUzLTEuNTIgMi42LTUuMTYuMTMtNi43OGwtMTUwLjgxLTk4LjZjLTcuMTktNC4xMS0xNS4xMiA0LjA4LTEwLjc4IDExLjE0bDc5LjkzIDE0Mi45NHptNzkuMDIgMjUwLjIxTDI1NiA0MzguMzJ2NjUuNjdjMCA1Ljg0IDYuMDUgOS43MSAxMS4zNSA3LjI2bDE5NC40LTg3LjY2YzQuMDMtMS45NyAyLjI1LTguMDYtMi4yLTcuNTZ6bS04Ni4zLTIwMC45N2wtMTA4LjYzIDE5MC4xIDIwOC4yNi0yMi4wN2M1LjgzLS42NSA5LjAxLTcuMTQgNS45My0xMi4xNEwzNzMuMjUgMjE1LjA2ek0yNDAgMjA4SDEzOS41N0wyNDAgMzgzLjc1IDM0MC40MyAyMDhIMjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlRDYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIyLjE5IDEwOS45NUwyNTYuMjEgOS4wN2MtMTkuOTEtMTIuMS00NC41Mi0xMi4xLTY0LjQzIDBMMjUuODEgMTA5Ljk1Yy01LjMyIDMuMjMtNS4yOSAxMS4yNy4wNiAxNC40NkwyMjQgMjQyLjU1bDE5OC4xNC0xMTguMTRjNS4zNS0zLjE5IDUuMzgtMTEuMjIuMDUtMTQuNDZ6bTEzLjg0IDQ0LjYzTDI0MCAyNzEuNDZ2MjIzLjgyYzAgMTIuODggMTMuMzkgMjAuOTEgMjQuMDUgMTQuNDNsMTUyLjE2LTkyLjQ4YzE5LjY4LTExLjk2IDMxLjc5LTMzLjk0IDMxLjc5LTU3Ljd2LTE5Ny43YzAtNi40MS02LjY0LTEwLjQzLTExLjk3LTcuMjV6TTAgMTYxLjgzdjE5Ny43YzAgMjMuNzcgMTIuMTEgNDUuNzQgMzEuNzkgNTcuN2wxNTIuMTYgOTIuNDdjMTAuNjcgNi40OCAyNC4wNS0xLjU0IDI0LjA1LTE0LjQzVjI3MS40NkwxMS45NyAxNTQuNThDNi42NCAxNTEuNCAwIDE1NS40MiAwIDE2MS44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZUZpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMySDY0QzI4LjY1IDMyIDAgNjAuNjUgMCA5NnYzMjBjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMjBjMzUuMzUgMCA2NC0yOC42NSA2NC02NFY5NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0ek0xMjggMzg0Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptOTYgOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTk2IDk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZUZvdXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMySDY0QzI4LjY1IDMyIDAgNjAuNjUgMCA5NnYzMjBjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMjBjMzUuMzUgMCA2NC0yOC42NSA2NC02NFY5NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0ek0xMjggMzg0Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTkyIDE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC0xOTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpY2VPbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMySDY0QzI4LjY1IDMyIDAgNjAuNjUgMCA5NnYzMjBjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMjBjMzUuMzUgMCA2NC0yOC42NSA2NC02NFY5NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0ek0yMjQgMjg4Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlU2l4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMkg2NEMyOC42NSAzMiAwIDYwLjY1IDAgOTZ2MzIwYzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzIwYzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWOTZjMC0zNS4zNS0yOC42NS02NC02NC02NHpNMTI4IDM4NGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC05NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC05NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTkyIDE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC05NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC05NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZVRocmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMkg2NEMyOC42NSAzMiAwIDYwLjY1IDAgOTZ2MzIwYzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzIwYzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWOTZjMC0zNS4zNS0yOC42NS02NC02NC02NHpNMTI4IDE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptOTYgOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTk2IDk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlVHdvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMkg2NEMyOC42NSAzMiAwIDYwLjY1IDAgOTZ2MzIwYzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzIwYzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWOTZjMC0zNS4zNS0yOC42NS02NC02NC02NHpNMTI4IDE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTkyIDE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01OTIgMTkySDQ3My4yNmMxMi42OSAyOS41OSA3LjEyIDY1LjItMTcgODkuMzJMMzIwIDQxNy41OFY0NjRjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgyMjRjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYyNDBjMC0yNi41MS0yMS40OS00OC00OC00OHpNNDgwIDM3NmMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6bS00Ni4zNy0xODYuN0wyNTguNyAxNC4zN2MtMTkuMTYtMTkuMTYtNTAuMjMtMTkuMTYtNjkuMzkgMEwxNC4zNyAxODkuM2MtMTkuMTYgMTkuMTYtMTkuMTYgNTAuMjMgMCA2OS4zOUwxODkuMyA0MzMuNjNjMTkuMTYgMTkuMTYgNTAuMjMgMTkuMTYgNjkuMzkgMEw0MzMuNjMgMjU4LjdjMTkuMTYtMTkuMTcgMTkuMTYtNTAuMjQgMC02OS40ek05NiAyNDhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0em0xMjggMTI4Yy0xMy4yNSAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzUtMjQgMjQtMjRzMjQgMTAuNzQgMjQgMjRjMCAxMy4yNS0xMC43NSAyNC0yNCAyNHptMC0xMjhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0em0wLTEyOGMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6bTEyOCAxMjhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWdpdGFsVGFjaG9ncmFwaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDggOTZIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MjU2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTc2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMTI4YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTMwNCAzNTJjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04di04YzAtNC40MiAzLjU4LTggOC04aDIyNGM0LjQyIDAgOCAzLjU4IDggOHY4ek03MiAyODh2LTE2YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDgwYy00LjQyIDAtOC0zLjU4LTgtOHptNjQgMHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptNjQgMHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptNjQgMHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptNDAtNjRjMCA4Ljg0LTcuMTYgMTYtMTYgMTZIODBjLTguODQgMC0xNi03LjE2LTE2LTE2di00OGMwLTguODQgNy4xNi0xNiAxNi0xNmgyMDhjOC44NCAwIDE2IDcuMTYgMTYgMTZ2NDh6bTI3MiAxMjhjMCA0LjQyLTMuNTggOC04IDhIMzQ0Yy00LjQyIDAtOC0zLjU4LTgtOHYtOGMwLTQuNDIgMy41OC04IDgtOGgyMjRjNC40MiAwIDggMy41OCA4IDh2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlyZWN0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuNjEgMjMzLjMyTDI3OC42OCA5LjM5Yy0xMi41Mi0xMi41Mi0zMi44My0xMi41Mi00NS4zNiAwTDkuMzkgMjMzLjMyYy0xMi41MiAxMi41My0xMi41MiAzMi44MyAwIDQ1LjM2bDIyMy45MyAyMjMuOTNjMTIuNTIgMTIuNTMgMzIuODMgMTIuNTMgNDUuMzYgMGwyMjMuOTMtMjIzLjkzYzEyLjUyLTEyLjUzIDEyLjUyLTMyLjgzIDAtNDUuMzZ6bS0xMDAuOTggMTIuNTZsLTg0LjIxIDc3LjczYy01LjEyIDQuNzMtMTMuNDMgMS4xLTEzLjQzLTUuODhWMjY0aC05NnY2NGMwIDQuNDItMy41OCA4LTggOGgtMzJjLTQuNDIgMC04LTMuNTgtOC04di04MGMwLTE3LjY3IDE0LjMzLTMyIDMyLTMyaDExMnYtNTMuNzNjMC02Ljk3IDguMy0xMC42MSAxMy40My01Ljg4bDg0LjIxIDc3LjczYzMuNDMgMy4xNyAzLjQzIDguNTkgMCAxMS43NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlzZWFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzIuMjkgMTk1LjlsLTY3LjA2LTIzYy0xOS4yOC02LjYtMzMuNTQtMjAuOTItMzguMTQtMzguMzFsLTE2LTYwLjQ1Yy0xMS41OC00My43Ny03Ni41Ny01Ny4xMy0xMTAtMjIuNjJMMTk1IDk5LjI0Yy0xMy4yNiAxMy43MS0zMy41NCAyMC45My01NC4yIDE5LjMxbC03MS45LTUuNjJjLTUyLTQuMDctODYuOTMgNDQuODktNTkgODIuODRsMzguNTQgNTIuNDJjMTEuMDggMTUuMDcgMTIuODIgMzMuODYgNC42NCA1MC4yNGwtMjguNDMgNTdDNCAzOTYuNjcgNDcuNDYgNDQwLjI5IDk4LjExIDQyOS4yM2w3MC0xNS4yOGMyMC4xMS00LjM5IDQxLjQ1IDAgNTcuMDcgMTEuNzNsNTQuMzIgNDAuODNjMzkuMzIgMjkuNTYgMTAxIDcuNTcgMTA0LjQ1LTM3LjIybDQuNy02MS44NmMxLjM1LTE3LjggMTIuOC0zMy44NyAzMC42My00M2w2Mi0zMS43NGM0NC44NC0yMi45NiAzOS41NS04MC4xNy04Ljk5LTk2Ljc5ek0xNjAgMjU2YTMyIDMyIDAgMSAxIDMyLTMyIDMyIDMyIDAgMCAxLTMyIDMyem0xMjggOTZhMzIgMzIgMCAxIDEgMzItMzIgMzIgMzIgMCAwIDEtMzIgMzJ6bTE2LTEyOGExNiAxNiAwIDEgMSAxNi0xNiAxNiAxNiAwIDAgMS0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGl2aWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAzNTJjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjRzMjguNjUgNjQgNjQgNjQgNjQtMjguNjUgNjQtNjQtMjguNjUtNjQtNjQtNjR6bTAtMTkyYzM1LjM1IDAgNjQtMjguNjUgNjQtNjRzLTI4LjY1LTY0LTY0LTY0LTY0IDI4LjY1LTY0IDY0IDI4LjY1IDY0IDY0IDY0em0xOTIgNDhIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzODRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGl6enkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptLTk2IDIwNi42bC0yOC43IDI4LjdjLTE0LjggMTQuOC0zNy44LTcuNS0yMi42LTIyLjZsMjguNy0yOC43LTI4LjctMjguN2MtMTUtMTUgNy43LTM3LjYgMjIuNi0yMi42bDI4LjcgMjguNyAyOC43LTI4LjdjMTUtMTUgMzcuNiA3LjcgMjIuNiAyMi42TDE3NC42IDE5MmwyOC43IDI4LjdjMTUuMiAxNS4yLTcuOSAzNy40LTIyLjYgMjIuNkwxNTIgMjE0LjZ6TTI0OCA0MTZjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjQgNjQgMjguNyA2NCA2NC0yOC43IDY0LTY0IDY0em0xNDcuMy0xOTUuM2MxNS4yIDE1LjItNy45IDM3LjQtMjIuNiAyMi42TDM0NCAyMTQuNmwtMjguNyAyOC43Yy0xNC44IDE0LjgtMzcuOC03LjUtMjIuNi0yMi42bDI4LjctMjguNy0yOC43LTI4LjdjLTE1LTE1IDcuNy0zNy42IDIyLjYtMjIuNmwyOC43IDI4LjcgMjguNy0yOC43YzE1LTE1IDM3LjYgNy43IDIyLjYgMjIuNkwzNjYuNiAxOTJsMjguNyAyOC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEbmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjEgNDk0LjFjLTEuMSA5LjUgNi4zIDE3LjggMTUuOSAxNy44bDMyLjMuMWM4LjEgMCAxNC45LTUuOSAxNi0xMy45LjctNC45IDEuOC0xMS4xIDMuNC0xOC4xSDM4MGMxLjYgNi45IDIuOSAxMy4yIDMuNSAxOC4xIDEuMSA4IDcuOSAxNCAxNiAxMy45bDMyLjMtLjFjOS42IDAgMTcuMS04LjMgMTUuOS0xNy44LTQuNi0zNy45LTI1LjYtMTI5LTExOC45LTIwNy43LTE3LjYgMTIuNC0zNy4xIDI0LjItNTguNSAzNS40IDYuMiA0LjYgMTEuNCA5LjQgMTcgMTQuMkgxNTkuN2MyMS4zLTE4LjEgNDctMzUuNiA3OC43LTUxLjRDNDEwLjUgMTk5LjEgNDQyLjEgNjUuOCA0NDcuOSAxNy45IDQ0OSA4LjQgNDQxLjYuMSA0MzIgLjFMMzk5LjYgMGMtOC4xIDAtMTQuOSA1LjktMTYgMTMuOS0uNyA0LjktMS44IDExLjEtMy40IDE4LjFINjcuOGMtMS42LTctMi43LTEzLjEtMy40LTE4LjEtMS4xLTgtNy45LTE0LTE2LTEzLjlMMTYuMS4xQzYuNS4xLTEgOC40LjEgMTcuOSA1LjMgNjAuOCAzMS40IDE3MS44IDE2MCAyNTYgMzEuNSAzNDAuMiA1LjMgNDUxLjIuMSA0OTQuMXpNMjI0IDIxOS42Yy0yNS4xLTEzLjctNDYuNC0yOC40LTY0LjMtNDMuNmgxMjguNWMtMTcuOCAxNS4yLTM5LjEgMzAtNjQuMiA0My42ek0zNTUuMSA5NmMtNS44IDEwLjQtMTIuOCAyMS4xLTIxIDMySDExNGMtOC4zLTEwLjktMTUuMy0yMS42LTIxLTMyaDI2Mi4xek05Mi45IDQxNmM1LjgtMTAuNCAxMi44LTIxLjEgMjEtMzJoMjE5LjRjOC4zIDEwLjkgMTUuNCAyMS42IDIxLjIgMzJIOTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5OC4wNiwyMjQsNDQ4LDI3Ny41NVY0OTZhMTYsMTYsMCwwLDEtMTYsMTZIMzY4YTE2LDE2LDAsMCwxLTE2LTE2VjM4NEgxOTJWNDk2YTE2LDE2LDAsMCwxLTE2LDE2SDExMmExNiwxNiwwLDAsMS0xNi0xNlYyODIuMDlDNTguODQsMjY4Ljg0LDMyLDIzMy42NiwzMiwxOTJhMzIsMzIsMCwwLDEsNjQsMCwzMi4wNiwzMi4wNiwwLDAsMCwzMiwzMlpNNTQ0LDExMnYzMmE2NCw2NCwwLDAsMS02NCw2NEg0NDh2MzUuNThMMzIwLDE5Ny44N1Y0OGMwLTE0LjI1LDE3LjIyLTIxLjM5LDI3LjMxLTExLjMxTDM3NC41OSw2NGg1My42M2MxMC45MSwwLDIzLjc1LDcuOTIsMjguNjIsMTcuNjlMNDY0LDk2aDY0QTE2LDE2LDAsMCwxLDU0NCwxMTJabS0xMTIsMGExNiwxNiwwLDEsMC0xNiwxNkExNiwxNiwwLDAsMCw0MzIsMTEyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb2xsYXJTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyODggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOS4yIDIzMy40bC0xMDgtMzEuNkM4OC43IDE5OC4yIDgwIDE4Ni41IDgwIDE3My41YzAtMTYuMyAxMy4yLTI5LjUgMjkuNS0yOS41aDY2LjNjMTIuMiAwIDI0LjIgMy43IDM0LjIgMTAuNSA2LjEgNC4xIDE0LjMgMy4xIDE5LjUtMmwzNC44LTM0YzcuMS02LjkgNi4xLTE4LjQtMS44LTI0LjVDMjM4IDc0LjggMjA3LjQgNjQuMSAxNzYgNjRWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4aC0yLjVDNDUuOCA2NC01LjQgMTE4LjcuNSAxODMuNmM0LjIgNDYuMSAzOS40IDgzLjYgODMuOCA5Ni42bDEwMi41IDMwYzEyLjUgMy43IDIxLjIgMTUuMyAyMS4yIDI4LjMgMCAxNi4zLTEzLjIgMjkuNS0yOS41IDI5LjVoLTY2LjNDMTAwIDM2OCA4OCAzNjQuMyA3OCAzNTcuNWMtNi4xLTQuMS0xNC4zLTMuMS0xOS41IDJsLTM0LjggMzRjLTcuMSA2LjktNi4xIDE4LjQgMS44IDI0LjUgMjQuNSAxOS4yIDU1LjEgMjkuOSA4Ni41IDMwdjQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ2LTQ4LjJjNDYuNi0uOSA5MC4zLTI4LjYgMTA1LjctNzIuNyAyMS41LTYxLjYtMTQuNi0xMjQuOC03Mi41LTE0MS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb2xseUZsYXRiZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDMyMGgzODRjOC44IDAgMTYtNy4yIDE2LTE2VjQ4YzAtOC44LTcuMi0xNi0xNi0xNkg0NDh2MTI4bC00OC0zMi00OCAzMlYzMkgyMDhjLTguOCAwLTE2IDcuMi0xNiAxNnYyNTZjMCA4LjggNy4yIDE2IDE2IDE2em00MTYgNjRIMTI4VjE2YzAtOC44LTcuMi0xNi0xNi0xNkgxNkM3LjIgMCAwIDcuMiAwIDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHYzNjhjMCA4LjggNy4yIDE2IDE2IDE2aDgyLjljLTEuOCA1LTIuOSAxMC40LTIuOSAxNiAwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4YzAtNS42LTEuMi0xMS0yLjktMTZINDUxYy0xLjggNS0yLjkgMTAuNC0yLjkgMTYgMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OGMwLTUuNi0xLjItMTEtMi45LTE2SDYyNGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9sbHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk0LjIgMjc3LjdjMTggNSAzNC43IDEzLjQgNDkuNSAyNC43bDE2MS41LTUzLjhjOC40LTIuOCAxMi45LTExLjkgMTAuMS0yMC4yTDQ1NC45IDQ3LjJjLTIuOC04LjQtMTEuOS0xMi45LTIwLjItMTAuMWwtNjEuMSAyMC40IDMzLjEgOTkuNEwzNDYgMTc3bC0zMy4xLTk5LjQtNjEuNiAyMC41Yy04LjQgMi44LTEyLjkgMTEuOS0xMC4xIDIwLjJsNTMgMTU5LjR6bTI4MSA0OC43TDU2NSAyOTZjLTIuOC04LjQtMTEuOS0xMi45LTIwLjItMTAuMWwtMjEzLjUgNzEuMmMtMTcuMi0yMi00My42LTM2LjQtNzMuNS0zN0wxNTguNCAyMS45QzE1NCA4LjggMTQxLjggMCAxMjggMEgxNkM3LjIgMCAwIDcuMiAwIDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg4OC45bDkyLjIgMjc2LjdjLTI2LjEgMjAuNC00MS43IDUzLjYtMzYgOTAuNSA2LjEgMzkuNCAzNy45IDcyLjMgNzcuMyA3OS4yIDYwLjIgMTAuNyAxMTIuMy0zNC44IDExMy40LTkyLjZsMjEzLjMtNzEuMmM4LjMtMi44IDEyLjktMTEuOCAxMC4xLTIwLjJ6TTI1NiA0NjRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb25hdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQxNmMxMTQuOSAwIDIwOC05My4xIDIwOC0yMDhTMzcwLjkgMCAyNTYgMCA0OCA5My4xIDQ4IDIwOHM5My4xIDIwOCAyMDggMjA4ek0yMzMuOCA5Ny40VjgwLjZjMC05LjIgNy40LTE2LjYgMTYuNi0xNi42aDExLjFjOS4yIDAgMTYuNiA3LjQgMTYuNiAxNi42djE3YzE1LjUuOCAzMC41IDYuMSA0MyAxNS40IDUuNiA0LjEgNi4yIDEyLjMgMS4yIDE3LjFMMzA2IDE0NS42Yy0zLjggMy43LTkuNSAzLjgtMTQgMS01LjQtMy40LTExLjQtNS4xLTE3LjgtNS4xaC0zOC45Yy05IDAtMTYuMyA4LjItMTYuMyAxOC4zIDAgOC4yIDUgMTUuNSAxMi4xIDE3LjZsNjIuMyAxOC43YzI1LjcgNy43IDQzLjcgMzIuNCA0My43IDYwLjEgMCAzNC0yNi40IDYxLjUtNTkuMSA2Mi40djE2LjhjMCA5LjItNy40IDE2LjYtMTYuNiAxNi42aC0xMS4xYy05LjIgMC0xNi42LTcuNC0xNi42LTE2LjZ2LTE3Yy0xNS41LS44LTMwLjUtNi4xLTQzLTE1LjQtNS42LTQuMS02LjItMTIuMy0xLjItMTcuMWwxNi4zLTE1LjVjMy44LTMuNyA5LjUtMy44IDE0LTEgNS40IDMuNCAxMS40IDUuMSAxNy44IDUuMWgzOC45YzkgMCAxNi4zLTguMiAxNi4zLTE4LjMgMC04LjItNS0xNS41LTEyLjEtMTcuNmwtNjIuMy0xOC43Yy0yNS43LTcuNy00My43LTMyLjQtNDMuNy02MC4xLjEtMzQgMjYuNC02MS41IDU5LjEtNjIuNHpNNDgwIDM1MmgtMzIuNWMtMTkuNiAyNi00NC42IDQ3LjctNzMgNjRoNjMuOGM1LjMgMCA5LjYgMy42IDkuNiA4djE2YzAgNC40LTQuMyA4LTkuNiA4SDczLjZjLTUuMyAwLTkuNi0zLjYtOS42LTh2LTE2YzAtNC40IDQuMy04IDkuNi04aDYzLjhjLTI4LjQtMTYuMy01My4zLTM4LTczLTY0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb29yQ2xvc2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCA0NDhINTEyVjUwLjhDNTEyIDIyLjc4IDQ5MC40NyAwIDQ2NCAwSDE3NS45OWMtMjYuNDcgMC00OCAyMi43OC00OCA1MC44VjQ0OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjA4YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNNDE1Ljk5IDI4OGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMmMuMDEgMTcuNjctMTQuMzIgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvb3JPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCA0NDhoLTgwVjExMy40NUM1NDQgODYuMTkgNTIyLjQ3IDY0IDQ5NiA2NEgzODR2NjRoOTZ2Mzg0aDE0NGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTMxMi4yNCAxLjAxbC0xOTIgNDkuNzRDMTA1Ljk5IDU0LjQ0IDk2IDY3LjcgOTYgODIuOTJWNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMzZWMzMuMThjMC0yMS41OC0xOS41Ni0zNy40MS0zOS43Ni0zMi4xN3pNMjY0IDI4OGMtMTMuMjUgMC0yNC0xNC4zMy0yNC0zMnMxMC43NS0zMiAyNC0zMiAyNCAxNC4zMyAyNCAzMi0xMC43NSAzMi0yNCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG90Q2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4wMzMgOCA4IDExOS4wMzMgOCAyNTZzMTExLjAzMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzMyAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOHptODAgMjQ4YzAgNDQuMTEyLTM1Ljg4OCA4MC04MCA4MHMtODAtMzUuODg4LTgwLTgwIDM1Ljg4OC04MCA4MC04MCA4MCAzNS44ODggODAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDE2Ny4ydi0yOC4xYy0yOC4yLTM2LjMtNDcuMS03OS4zLTU0LjEtMTI1LjItMi4xLTEzLjUtMTktMTguOC0yNy44LTguMy0yMS4xIDI0LjktMzcuNyA1NC4xLTQ4LjkgODYuNSAzNC4yIDM4LjMgODAgNjQuNiAxMzAuOCA3NS4xek00MDAgNjRjLTQ0LjIgMC04MCAzNS45LTgwIDgwLjF2NTkuNEMyMTUuNiAxOTcuMyAxMjcgMTMzIDg3IDQxLjhjLTUuNS0xMi41LTIzLjItMTMuMi0yOS0uOUM0MS40IDc2IDMyIDExNS4yIDMyIDE1Ni42YzAgNzAuOCAzNC4xIDEzNi45IDg1LjEgMTg1LjkgMTMuMiAxMi43IDI2LjEgMjMuMiAzOC45IDMyLjhsLTE0My45IDM2QzEuNCA0MTQtMy40IDQyNi40IDIuNiA0MzUuNyAyMCA0NjIuNiA2MyA1MDguMiAxNTUuOCA1MTJjOCAuMyAxNi0yLjYgMjIuMS03LjlsNjUuMi01Ni4xSDMyMGM4OC40IDAgMTYwLTcxLjUgMTYwLTE1OS45VjEyOGwzMi02NEg0MDB6bTAgOTYuMWMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYgMGg4MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHYxNjhoODcuN2MxNy44IDAgMjYuNyAyMS41IDE0LjEgMzQuMUwyNjkuNyAzNzguM2MtNy41IDcuNS0xOS44IDcuNS0yNy4zIDBMOTAuMSAyMjYuMWMtMTIuNi0xMi42LTMuNy0zNC4xIDE0LjEtMzQuMUgxOTJWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6bTI5NiAzNzZ2MTEyYzAgMTMuMy0xMC43IDI0LTI0IDI0SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYzNzZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTQ2LjdsNDkgNDljMjAuMSAyMC4xIDUyLjUgMjAuMSA3Mi42IDBsNDktNDlINDg4YzEzLjMgMCAyNCAxMC43IDI0IDI0em0tMTI0IDg4YzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMCA5IDIwIDIwIDIwIDIwLTkgMjAtMjB6bTY0IDBjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwIDkgMjAgMjAgMjAgMjAtOSAyMC0yMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJhZnRpbmdDb21wYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1Ny4wMSAzNDQuNDJjLTI1LjA1IDIwLjMzLTUyLjYzIDM3LjE4LTgyLjU0IDQ5LjA1bDU0LjM4IDk0LjE5IDUzLjk1IDIzLjA0YzkuODEgNC4xOSAyMC44OS0yLjIxIDIyLjE3LTEyLjhsNy4wMi01OC4yNS01NC45OC05NS4yM3ptNDIuNDktOTQuNTZjNC44Ni03LjY3IDEuODktMTcuOTktNi4wNS0yMi4zOWwtMjguMDctMTUuNTdjLTcuNDgtNC4xNS0xNi42MS0xLjQ2LTIxLjI2IDUuNzJDNDAzLjAxIDI4MS4xNSAzMzIuMjUgMzIwIDI1NiAzMjBjLTIzLjkzIDAtNDcuMjMtNC4yNS02OS40MS0xMS41M2w2Ny4zNi0xMTYuNjhjLjcuMDIgMS4zNC4yMSAyLjA0LjIxczEuMzUtLjE5IDIuMDQtLjIxbDUxLjA5IDg4LjVjMzEuMjMtOC45NiA1OS41Ni0yNS43NSA4Mi42MS00OC45MmwtNTEuNzktODkuNzFDMzQ3LjM5IDEyOC4wMyAzNTIgMTEyLjYzIDM1MiA5NmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2cy05NiA0Mi45OC05NiA5NmMwIDE2LjYzIDQuNjEgMzIuMDMgMTIuMDUgNDUuNjZsLTY4LjMgMTE4LjMxYy0xMi41NS0xMS42MS0yMy45Ni0yNC41OS0zMy42OC0zOS00Ljc5LTcuMS0xMy45Ny05LjYyLTIxLjM4LTUuMzNsLTI3Ljc1IDE2LjA3Yy03Ljg1IDQuNTQtMTAuNjMgMTQuOS01LjY0IDIyLjQ3IDE1LjU3IDIzLjY0IDM0LjY5IDQ0LjIxIDU1Ljk4IDYyLjAyTDAgNDM5LjY2bDcuMDIgNTguMjVjMS4yOCAxMC41OSAxMi4zNiAxNi45OSAyMi4xNyAxMi44bDUzLjk1LTIzLjA0IDcwLjgtMTIyLjYzQzE4Ni4xMyAzNzcuMjggMjIwLjYyIDM4NCAyNTYgMzg0Yzk5LjA1IDAgMTkwLjg4LTUxLjAxIDI0My41LTEzNC4xNHpNMjU2IDY0YzE3LjY3IDAgMzIgMTQuMzMgMzIgMzJzLTE0LjMzIDMyLTMyIDMyLTMyLTE0LjMzLTMyLTMyIDE0LjMzLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcmFnb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMzIgMjU1Ljc4TDE5MiAyMjMuOTZsLTkxLjI4IDY4LjY5Yy0xMC4wOCAxMC4wOC0yLjk0IDI3LjMxIDExLjMxIDI3LjMxaDIyMi43Yy05LjQ0LTI2LjQtMTQuNzMtNTQuNDctMTQuNzMtODMuMzh2LTQyLjI3bC0xMTkuNzMtODcuNmMtMjMuODItMTUuODgtNTUuMjktMTQuMDEtNzcuMDYgNC41OUw1LjgxIDIyNy42NGMtMTIuMzggMTAuMzMtMy40NSAzMC40MiAxMi41MSAyOC4xNHptNTU2Ljg3IDM0LjFsLTEwMC42Ni01MC4zMUE0Ny45OTIgNDcuOTkyIDAgMCAxIDQ0OCAxOTYuNjV2LTM2LjY5aDY0bDI4LjA5IDIyLjYzYzYgNiAxNC4xNCA5LjM3IDIyLjYzIDkuMzdoMzAuOTdhMzIgMzIgMCAwIDAgMjguNjItMTcuNjlsMTQuMzEtMjguNjJhMzIuMDA1IDMyLjAwNSAwIDAgMC0zLjAyLTMzLjUxbC03NC41My05OS4zOEM1NTMuMDIgNC43IDU0My41NCAwIDUzMy40NyAwSDI5Ni4wMmMtNy4xMyAwLTEwLjcgOC41Ny01LjY2IDEzLjYxTDM1MiA2My45NiAyOTIuNDIgODguOGMtNS45IDIuOTUtNS45IDExLjM2IDAgMTQuMzFMMzUyIDEyNy45NnYxMDguNjJjMCA3Mi4wOCAzNi4wMyAxMzkuMzkgOTYgMTc5LjM4LTE5NS41OSA2LjgxLTM0NC41NiA0MS4wMS00MzQuMSA2MC45MUM1Ljc4IDQ3OC42NyAwIDQ4NS44OCAwIDQ5NC4yIDAgNTA0IDcuOTUgNTEyIDE3Ljc2IDUxMmg0OTkuMDhjNjMuMjkuMDEgMTE5LjYxLTQ3LjU2IDEyMi45OS0xMTAuNzYgMi41Mi00Ny4yOC0yMi43My05MC40LTY0LjY0LTExMS4zNnpNNDg5LjE4IDY2LjI1bDQ1LjY1IDExLjQxYy0yLjc1IDEwLjkxLTEyLjQ3IDE4Ljg5LTI0LjEzIDE4LjI2LTEyLjk2LS43MS0yNS44NS0xMi41My0yMS41Mi0yOS42N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJhd1BvbHlnb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDM1MmMtLjM1IDAtLjY3LjEtMS4wMi4xbC0zOS4yLTY1LjMyYzUuMDctOS4xNyA4LjIyLTE5LjU2IDguMjItMzAuNzhzLTMuMTQtMjEuNjEtOC4yMi0zMC43OGwzOS4yLTY1LjMyYy4zNS4wMS42Ny4xIDEuMDIuMSAzNS4zNSAwIDY0LTI4LjY1IDY0LTY0cy0yOC42NS02NC02NC02NGMtMjMuNjMgMC00NC4wNCAxMi45NS01NS4xMiAzMkgxMTkuMTJDMTA4LjA0IDQ0Ljk1IDg3LjYzIDMyIDY0IDMyIDI4LjY1IDMyIDAgNjAuNjUgMCA5NmMwIDIzLjYzIDEyLjk1IDQ0LjA0IDMyIDU1LjEydjIwOS43NUMxMi45NSAzNzEuOTYgMCAzOTIuMzcgMCA0MTZjMCAzNS4zNSAyOC42NSA2NCA2NCA2NCAyMy42MyAwIDQ0LjA0LTEyLjk1IDU1LjEyLTMyaDIwOS43NWMxMS4wOSAxOS4wNSAzMS40OSAzMiA1NS4xMiAzMiAzNS4zNSAwIDY0LTI4LjY1IDY0LTY0IC4wMS0zNS4zNS0yOC42NC02NC02My45OS02NHptLTI4OCA4Ljg4VjE1MS4xMkE2My44MjUgNjMuODI1IDAgMCAwIDExOS4xMiAxMjhoMjA4LjM2bC0zOC40NiA2NC4xYy0uMzUtLjAxLS42Ny0uMS0xLjAyLS4xLTM1LjM1IDAtNjQgMjguNjUtNjQgNjRzMjguNjUgNjQgNjQgNjRjLjM1IDAgLjY3LS4xIDEuMDItLjFsMzguNDYgNjQuMUgxMTkuMTJBNjMuNzQ4IDYzLjc0OCAwIDAgMCA5NiAzNjAuODh6TTI3MiAyNTZjMC04LjgyIDcuMTgtMTYgMTYtMTZzMTYgNy4xOCAxNiAxNi03LjE4IDE2LTE2IDE2LTE2LTcuMTgtMTYtMTZ6TTQwMCA5NmMwIDguODItNy4xOCAxNi0xNiAxNnMtMTYtNy4xOC0xNi0xNiA3LjE4LTE2IDE2LTE2IDE2IDcuMTggMTYgMTZ6TTY0IDgwYzguODIgMCAxNiA3LjE4IDE2IDE2cy03LjE4IDE2LTE2IDE2LTE2LTcuMTgtMTYtMTYgNy4xOC0xNiAxNi0xNnpNNDggNDE2YzAtOC44MiA3LjE4LTE2IDE2LTE2czE2IDcuMTggMTYgMTYtNy4xOCAxNi0xNiAxNi0xNi03LjE4LTE2LTE2em0zMzYgMTZjLTguODIgMC0xNi03LjE4LTE2LTE2czcuMTgtMTYgMTYtMTYgMTYgNy4xOCAxNiAxNi03LjE4IDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcnVtU3RlZWxwYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDMyQzEyOC45NCAzMiAwIDg5LjMxIDAgMTYwdjE5MmMwIDcwLjY5IDEyOC45NCAxMjggMjg4IDEyOHMyODgtNTcuMzEgMjg4LTEyOFYxNjBjMC03MC42OS0xMjguOTQtMTI4LTI4OC0xMjh6bS04Mi45OSAxNTguMzZjLTQuNDUgMTYuNjEtMTQuNTQgMzAuNTctMjguMzEgNDAuNDhDMTAwLjIzIDIxNy40NiA0OCAxOTAuNzggNDggMTYwYzAtMzAuMTYgNTAuMTEtNTYuMzkgMTI0LjA0LTcwLjAzbDI1LjYgNDQuMzRjOS44NiAxNy4wOSAxMi40OCAzNi45OSA3LjM3IDU2LjA1ek0yODggMjQwYy0yMS4wOCAwLTQxLjQxLTEtNjAuODktMi43IDguMDYtMjYuMTMgMzIuMTUtNDUuMyA2MC44OS00NS4zczUyLjgzIDE5LjE3IDYwLjg5IDQ1LjNDMzI5LjQxIDIzOSAzMDkuMDggMjQwIDI4OCAyNDB6bTY0LTE0NGMwIDM1LjI5LTI4LjcxIDY0LTY0IDY0cy02NC0yOC43MS02NC02NFY4Mi45NmMyMC40LTEuODggNDEuOC0yLjk2IDY0LTIuOTZzNDMuNiAxLjA4IDY0IDIuOTZWOTZ6bTQ2LjkzIDEzNC45Yy0xMy44MS05LjkxLTIzLjk0LTIzLjktMjguNC00MC41NC01LjExLTE5LjA2LTIuNDktMzguOTYgNy4zOC01Ni4wNGwyNS42NS00NC40MkM0NzcuNzIgMTAzLjUgNTI4IDEyOS43OSA1MjggMTYwYzAgMzAuODMtNTIuNCA1Ny41NC0xMjkuMDcgNzAuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJ1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzEuMzQgMTIyLjA1bDczLjUzLTQ3LjQyYTE2IDE2IDAgMCAwIDQuNDQtMjIuMTlsLTguODctMTMuMzFhMTYgMTYgMCAwIDAtMjIuMTktNC40NGwtMTEwLjA2IDcxQzMxOC40MyA5Ni45MSAyNzEuMjIgOTYgMjU2IDk2IDIxOS41NSA5NiAwIDEwMC41NSAwIDIwOC4xNXYxNjAuMjNjMCAzMC4yNyAyNy41IDU3LjY4IDcyIDc3Ljg2di0xMDEuOWEyNCAyNCAwIDEgMSA0OCAwdjExOC45M2MzMy4wNSA5LjExIDcxLjA3IDE1LjA2IDExMiAxNi43M1YzNzYuMzlhMjQgMjQgMCAxIDEgNDggMFY0ODBjNDAuOTMtMS42NyA3OC45NS03LjYyIDExMi0xNi43M1YzNDQuMzRhMjQgMjQgMCAxIDEgNDggMHYxMDEuOWM0NC41LTIwLjE4IDcyLTQ3LjU5IDcyLTc3Ljg2VjIwOC4xNWMwLTQzLjMyLTM1Ljc2LTY5Ljc2LTgwLjY2LTg2LjF6TTI1NiAyNzIuMjRjLTExNC44OCAwLTIwOC0yOC42OS0yMDgtNjQuMDlzOTMuMTItNjQuMDggMjA4LTY0LjA4YzE3LjE1IDAgMzMuNzMuNzEgNDkuNjggMS45MWwtNzIuODEgNDdhMTYgMTYgMCAwIDAtNC40MyAyMi4xOWw4Ljg3IDEzLjMxYTE2IDE2IDAgMCAwIDIyLjE5IDQuNDRsMTE4LjY0LTc2LjUyQzQzMC4wOSAxNjggNDY0IDE4Ni44NCA0NjQgMjA4LjE1YzAgMzUuNC05My4xMyA2NC4wOS0yMDggNjQuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURydW1zdGlja0JpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDYyLjggNDkuNTdhMTY5LjQ0IDE2OS40NCAwIDAgMC0yMzkuNSAwQzE4Ny44MiA4NSAxNjAuMTMgMTI4IDE2MC4xMyAxOTJ2ODUuODNsLTQwLjYyIDQwLjU5Yy05LjcgOS42OS0yNCAxMS4wNy0zNi43OCA2YTYwLjMzIDYwLjMzIDAgMCAwLTY1IDk4LjcyQzMzIDQzOC4zOSA1NC4yNCA0NDIuNyA3My44NSA0MzguMjFjLTQuNSAxOS42LS4xOCA0MC44MyAxNS4xIDU2LjFhNjAuMzUgNjAuMzUgMCAwIDAgOTguOC02NWMtNS4wOS0xMi43My0zLjcyLTI3IDYtMzYuNzVMMjM0LjM2IDM1Mmg4NS44OWExODcuODcgMTg3Ljg3IDAgMCAwIDYxLjg5LTEwYy0zOS42NC00My44OS0zOS44My0xMTAuMjMgMS4wNS0xNTEuMDcgMzQuMzgtMzQuMzYgODYuNzYtMzkuNDYgMTI4Ljc0LTE2LjggMS4zLTQ0Ljk2LTE0LjgxLTkwLjI4LTQ5LjEzLTEyNC41NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHVtYmJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA0IDk2SDU2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxMDRIOGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGgyNHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0em01MjggMTI4aC0yNFYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRoLTQ4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjg4aDI0YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04ek00NTYgMzJoLTQ4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxNjhIMjU2VjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0aC00OGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDAwYzAgMTMuMyAxMC43IDI0IDI0IDI0aDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjI4OGgxMjh2MTY4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEdW1wc3RlckZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE4LjcgMTA0LjFsLjItLjItMTQuNC03MkgzMDR2MTI4aDYwLjhjMTYuMi0xOS4zIDM0LjItMzguMiA1My45LTU1Ljh6TTI3MiAzMkgxNzEuNWwtMjUuNiAxMjhIMjcyVjMyem0xODkuMyA3Mi4xYzE4LjIgMTYuMyAzNS41IDMzLjcgNTEuMSA1MS41IDUuNy01LjYgMTEuNC0xMS4xIDE3LjMtMTYuM2wyMS4zLTE5IDIxLjMgMTljMS4xLjkgMi4xIDIuMSAzLjEgMy4xLS4xLS44LjItMS41IDAtMi4zbC0yNC05NkM1NDkuNyAzNyA1NDMuMyAzMiA1MzYgMzJoLTk4LjlsMTIuMyA2MS41IDExLjkgMTAuNnpNMTYgMTYwaDk3LjNsMjUuNi0xMjhINDBjLTcuMyAwLTEzLjcgNS0xNS41IDEyLjFsLTI0IDk2Qy0yIDE1MC4yIDUuNiAxNjAgMTYgMTYwem0zMjQuNiAzMkgzMmw0IDMySDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDI4bDIwIDE2MHYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di0xNmgyMDguOGMtMzAuMi0zMy43LTQ4LjgtNzcuOS00OC44LTEyNi40IDAtMzUuOSAxOS45LTgyLjkgNTIuNi0xMjkuNnptMjEwLjUtMjguOGMtMTQuOSAxMy4zLTI4LjMgMjcuMi00MC4yIDQxLjItMTkuNS0yNS44LTQzLjYtNTItNzEtNzYuNC03MC4yIDYyLjctMTIwIDE0NC4zLTEyMCAxOTMuNiAwIDg3LjUgNzEuNiAxNTguNCAxNjAgMTU4LjRzMTYwLTcwLjkgMTYwLTE1OC40Yy4xLTM2LjYtMzctMTEyLjItODguOC0xNTguNHptLTE4LjYgMjI5LjRjLTE0LjcgMTAuNy0zMi45IDE3LTUyLjUgMTctNDkgMC04OC45LTMzLjUtODguOS04OCAwLTI3LjEgMTYuNS01MSA0OS40LTkxLjkgNC43IDUuNiA2Ny4xIDg4LjEgNjcuMSA4OC4xbDM5LjgtNDdjMi44IDQuOCA1LjQgOS41IDcuNyAxNCAxOC42IDM2LjcgMTAuOCA4My42LTIyLjYgMTA3Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUR1bXBzdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2MCAxNjBjMTAuNCAwIDE4LTkuOCAxNS41LTE5LjlsLTI0LTk2QzU0OS43IDM3IDU0My4zIDMyIDUzNiAzMmgtOTguOWwyNS42IDEyOEg1NjB6TTI3MiAzMkgxNzEuNWwtMjUuNiAxMjhIMjcyVjMyem0xMzIuNSAwSDMwNHYxMjhoMTI2LjFMNDA0LjUgMzJ6TTE2IDE2MGg5Ny4zbDI1LjYtMTI4SDQwYy03LjMgMC0xMy43IDUtMTUuNSAxMi4xbC0yNCA5NkMtMiAxNTAuMiA1LjYgMTYwIDE2IDE2MHptNTQ0IDY0aC0yMGw0LTMySDMybDQgMzJIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMjhsMjAgMTYwdjE2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ2LTE2aDMyMHYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di0xNmwyMC0xNjBoMjhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUR1bmdlb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4LjczIDE5NS4zMmwtODIuODEtNTEuNzZjLTguMDQtNS4wMi0xOC45OS0yLjE3LTIyLjkzIDYuNDVBMjU0LjE5IDI1NC4xOSAwIDAgMCAuNTQgMjM5LjI4Qy0uMDUgMjQ4LjM3IDcuNTkgMjU2IDE2LjY5IDI1Nmg5Ny4xM2M3Ljk2IDAgMTQuMDgtNi4yNSAxNS4wMS0xNC4xNiAxLjA5LTkuMzMgMy4yNC0xOC4zMyA2LjI0LTI2Ljk0IDIuNTYtNy4zNC4yNS0xNS40Ni02LjM0LTE5LjU4ek0zMTkuMDMgOEMyOTguODYgMi44MiAyNzcuNzcgMCAyNTYgMHMtNDIuODYgMi44Mi02My4wMyA4Yy05LjE3IDIuMzUtMTMuOTEgMTIuNi0xMC4zOSAyMS4zOWwzNy40NyAxMDQuMDNBMTYuMDAzIDE2LjAwMyAwIDAgMCAyMzUuMSAxNDRoNDEuOGM2Ljc1IDAgMTIuNzctNC4yMyAxNS4wNS0xMC41OGwzNy40Ny0xMDQuMDNjMy41Mi04Ljc5LTEuMjItMTkuMDMtMTAuMzktMjEuMzl6TTExMiAyODhIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDk2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnptMCAxMjhIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDk2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnptNzcuMzEtMjgzLjY3bC0zNi4zMi05MC44Yy0zLjUzLTguODMtMTQuMTMtMTIuOTktMjIuNDItOC4zMWEyNTcuMzA4IDI1Ny4zMDggMCAwIDAtNzEuNjEgNTkuODljLTYuMDYgNy4zMi0zLjg1IDE4LjQ4IDQuMjIgMjMuNTJsODIuOTMgNTEuODNjNi41MSA0LjA3IDE0LjY2IDIuNjIgMjAuMTEtMi43OSA1LjE4LTUuMTUgMTAuNzktOS44NSAxNi43OS0xNC4wNSA2LjI4LTQuNDEgOS4xNS0xMi4xNyA2LjMtMTkuMjl6TTM5OC4xOCAyNTZoOTcuMTNjOS4xIDAgMTYuNzQtNy42MyAxNi4xNS0xNi43MmEyNTQuMTM1IDI1NC4xMzUgMCAwIDAtMjIuNDUtODkuMjdjLTMuOTQtOC42Mi0xNC44OS0xMS40Ny0yMi45My02LjQ1bC04Mi44MSA1MS43NmMtNi41OSA0LjEyLTguOSAxMi4yNC02LjM0IDE5LjU4IDMuMDEgOC42MSA1LjE1IDE3LjYyIDYuMjQgMjYuOTQuOTMgNy45MSA3LjA1IDE0LjE2IDE1LjAxIDE0LjE2em01NC44NS0xNjIuODlhMjU3LjMwOCAyNTcuMzA4IDAgMCAwLTcxLjYxLTU5Ljg5Yy04LjI4LTQuNjgtMTguODgtLjUyLTIyLjQyIDguMzFsLTM2LjMyIDkwLjhjLTIuODUgNy4xMi4wMiAxNC44OCA2LjMgMTkuMjggNiA0LjIgMTEuNjEgOC45IDE2Ljc5IDE0LjA1IDUuNDQgNS40MSAxMy42IDYuODYgMjAuMTEgMi43OWw4Mi45My01MS44M2M4LjA3LTUuMDMgMTAuMjktMTYuMTkgNC4yMi0yMy41MXpNNDk2IDI4OGgtOTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDk2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnptMCAxMjhoLTk2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY2NGMwIDguODQgNy4xNiAxNiAxNiAxNmg5NmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNjRjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTI0MCAxNzcuNjJWNDcyYzAgNC40MiAzLjU4IDggOCA4aDE2YzQuNDIgMCA4LTMuNTggOC04VjE3Ny42MmMtNS4yMy0uODktMTAuNTItMS42Mi0xNi0xLjYycy0xMC43Ny43My0xNiAxLjYyem0tNjQgNDEuNTFWNDcyYzAgNC40MiAzLjU4IDggOCA4aDE2YzQuNDIgMCA4LTMuNTggOC04VjE4OS4zNmMtMTIuNzggNy40NS0yMy44NCAxNy40Ny0zMiAyOS43N3ptMTI4LTI5Ljc3VjQ3MmMwIDQuNDIgMy41OCA4IDggOGgxNmM0LjQyIDAgOC0zLjU4IDgtOFYyMTkuMTNjLTguMTYtMTIuMy0xOS4yMi0yMi4zMi0zMi0yOS43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWRpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDIuNiA4My4ybDkwLjIgOTAuMmMzLjggMy44IDMuOCAxMCAwIDEzLjhMMjc0LjQgNDA1LjZsLTkyLjggMTAuM2MtMTIuNCAxLjQtMjIuOS05LjEtMjEuNS0yMS41bDEwLjMtOTIuOEwzODguOCA4My4yYzMuOC0zLjggMTAtMy44IDEzLjggMHptMTYyLTIyLjlsLTQ4LjgtNDguOGMtMTUuMi0xNS4yLTM5LjktMTUuMi01NS4yIDBsLTM1LjQgMzUuNGMtMy44IDMuOC0zLjggMTAgMCAxMy44bDkwLjIgOTAuMmMzLjggMy44IDEwIDMuOCAxMy44IDBsMzUuNC0zNS40YzE1LjItMTUuMyAxNS4yLTQwIDAtNTUuMnpNMzg0IDM0Ni4yVjQ0OEg2NFYxMjhoMjI5LjhjMy4yIDAgNi4yLTEuMyA4LjUtMy41bDQwLTQwYzcuNi03LjYgMi4yLTIwLjUtOC41LTIwLjVINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYzMDYuMmMwLTEwLjctMTIuOS0xNi0yMC41LTguNWwtNDAgNDBjLTIuMiAyLjMtMy41IDUuMy0zLjUgOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFZ2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBDODYgMCAwIDIxNCAwIDMyMHM4NiAxOTIgMTkyIDE5MiAxOTItODYgMTkyLTE5MlMyOTggMCAxOTIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDM4NHY2NGMwIDE3LjY3My0xNC4zMjcgMzItMzIgMzJIMzJjLTE3LjY3MyAwLTMyLTE0LjMyNy0zMi0zMnYtNjRjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyaDM4NGMxNy42NzMgMCAzMiAxNC4zMjcgMzIgMzJ6TTQ4LjA1MyAzMjBoMzUxLjg4NmM0MS42NTEgMCA2My41ODEtNDkuNjc0IDM1LjM4My04MC40MzVMMjU5LjM4MyA0Ny41NThjLTE5LjAxNC0yMC43NDMtNTEuNzUxLTIwLjc0NC03MC43NjcgMEwxMi42NyAyMzkuNTY1Qy0xNS40NzUgMjcwLjI2OCA2LjMyNCAzMjAgNDguMDUzIDMyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWxsaXBzaXNIIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyOCAyNTZjMCAzOS44LTMyLjIgNzItNzIgNzJzLTcyLTMyLjItNzItNzIgMzIuMi03MiA3Mi03MiA3MiAzMi4yIDcyIDcyem0xMDQtNzJjLTM5LjggMC03MiAzMi4yLTcyIDcyczMyLjIgNzIgNzIgNzIgNzItMzIuMiA3Mi03Mi0zMi4yLTcyLTcyLTcyem0tMzUyIDBjLTM5LjggMC03MiAzMi4yLTcyIDcyczMyLjIgNzIgNzIgNzIgNzItMzIuMiA3Mi03Mi0zMi4yLTcyLTcyLTcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbGxpcHNpc1YgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDE5MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMTg0YzM5LjggMCA3MiAzMi4yIDcyIDcycy0zMi4yIDcyLTcyIDcyLTcyLTMyLjItNzItNzIgMzIuMi03MiA3Mi03MnpNMjQgODBjMCAzOS44IDMyLjIgNzIgNzIgNzJzNzItMzIuMiA3Mi03MlMxMzUuOCA4IDk2IDggMjQgNDAuMiAyNCA4MHptMCAzNTJjMCAzOS44IDMyLjIgNzIgNzIgNzJzNzItMzIuMiA3Mi03Mi0zMi4yLTcyLTcyLTcyLTcyIDMyLjItNzIgNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVudmVsb3BlT3BlblRleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDIxNmgxNjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE3NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZ6bS0xNiA4MGMwIDguODQgNy4xNiAxNiAxNiAxNmgxNjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE3NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZ6bTk2IDEyMS4xM2MtMTYuNDIgMC0zMi44NC01LjA2LTQ2Ljg2LTE1LjE5TDAgMjUwLjg2VjQ2NGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjI1MC44NkwzMDIuODYgNDAxLjk0Yy0xNC4wMiAxMC4xMi0zMC40NCAxNS4xOS00Ni44NiAxNS4xOXptMjM3LjYxLTI1NC4xOGMtOC44NS02Ljk0LTE3LjI0LTEzLjQ3LTI5LjYxLTIyLjgxVjk2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDhoLTc3LjU1Yy0zLjA0LTIuMi01Ljg3LTQuMjYtOS4wNC02LjU2QzMxMi42IDI5LjE3IDI3OS4yLS4zNSAyNTYgMGMtMjMuMi0uMzUtNTYuNTkgMjkuMTctNzMuNDEgNDEuNDQtMy4xNyAyLjMtNiA0LjM2LTkuMDQgNi41Nkg5NmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY0NC4xNGMtMTIuMzcgOS4zMy0yMC43NiAxNS44Ny0yOS42MSAyMi44MUE0Ny45OTUgNDcuOTk1IDAgMCAwIDAgMjAwLjcydjEwLjY1bDk2IDY5LjM1Vjk2aDMyMHYxODQuNzJsOTYtNjkuMzV2LTEwLjY1YzAtMTQuNzQtNi43OC0yOC42Ny0xOC4zOS0zNy43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW52ZWxvcGVPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiA0NjRjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYyMDAuNzI0YTQ4IDQ4IDAgMCAxIDE4LjM4Ny0zNy43NzZjMjQuOTEzLTE5LjUyOSA0NS41MDEtMzUuMzY1IDE2NC4yLTEyMS41MTFDMTk5LjQxMiAyOS4xNyAyMzIuNzk3LS4zNDcgMjU2IC4wMDNjMjMuMTk4LS4zNTQgNTYuNTk2IDI5LjE3MiA3My40MTMgNDEuNDMzIDExOC42ODcgODYuMTM3IDEzOS4zMDMgMTAxLjk5NSAxNjQuMiAxMjEuNTEyQTQ4IDQ4IDAgMCAxIDUxMiAyMDAuNzI0VjQ2NHptLTY1LjY2Ni0xOTYuNjA1Yy0yLjU2My0zLjcyOC03LjctNC41OTUtMTEuMzM5LTEuOTA3LTIyLjg0NSAxNi44NzMtNTUuNDYyIDQwLjcwNS0xMDUuNTgyIDc3LjA3OS0xNi44MjUgMTIuMjY2LTUwLjIxIDQxLjc4MS03My40MTMgNDEuNDMtMjMuMjExLjM0NC01Ni41NTktMjkuMTQzLTczLjQxMy00MS40My01MC4xMTQtMzYuMzctODIuNzM0LTYwLjIwNC0xMDUuNTgyLTc3LjA3OS0zLjYzOS0yLjY4OC04Ljc3Ni0xLjgyMS0xMS4zMzkgMS45MDdsLTkuMDcyIDEzLjE5NmE3Ljk5OCA3Ljk5OCAwIDAgMCAxLjgzOSAxMC45NjdjMjIuODg3IDE2Ljg5OSA1NS40NTQgNDAuNjkgMTA1LjMwMyA3Ni44NjggMjAuMjc0IDE0Ljc4MSA1Ni41MjQgNDcuODEzIDkyLjI2NCA0Ny41NzMgMzUuNzI0LjI0MiA3MS45NjEtMzIuNzcxIDkyLjI2My00Ny41NzMgNDkuODUtMzYuMTc5IDgyLjQxOC01OS45NyAxMDUuMzAzLTc2Ljg2OGE3Ljk5OCA3Ljk5OCAwIDAgMCAxLjgzOS0xMC45NjdsLTkuMDcxLTEzLjE5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW52ZWxvcGVTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjQ5IDMyIDAgNTMuNDkgMCA4MHYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY4MGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4ek0xNzguMTE3IDI2Mi4xMDRDODcuNDI5IDE5Ni4yODcgODguMzUzIDE5Ni4xMjEgNjQgMTc3LjE2N1YxNTJjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDI3MmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MjUuMTY3Yy0yNC4zNzEgMTguOTY5LTIzLjQzNCAxOS4xMjQtMTE0LjExNyA4NC45MzgtMTAuNSA3LjY1NS0zMS4zOTIgMjYuMTItNDUuODgzIDI1Ljg5NC0xNC41MDMuMjE4LTM1LjM2Ny0xOC4yMjctNDUuODgzLTI1Ljg5NXpNMzg0IDIxNy43NzVWMzYwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEg4OGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0VjIxNy43NzVjMTMuOTU4IDEwLjc5NCAzMy4zMjkgMjUuMjM2IDk1LjMwMyA3MC4yMTQgMTQuMTYyIDEwLjM0MSAzNy45NzUgMzIuMTQ1IDY0LjY5NCAzMi4wMSAyNi44ODcuMTM0IDUxLjAzNy0yMi4wNDEgNjQuNzItMzIuMDI1IDYxLjk1OC00NC45NjUgODEuMzI1LTU5LjQwNiA5NS4yODMtNzAuMTk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbnZlbG9wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuMyAxOTAuOGMzLjktMy4xIDkuNy0uMiA5LjcgNC43VjQwMGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTk1LjZjMC01IDUuNy03LjggOS43LTQuNyAyMi40IDE3LjQgNTIuMSAzOS41IDE1NC4xIDExMy42IDIxLjEgMTUuNCA1Ni43IDQ3LjggOTIuMiA0Ny42IDM1LjcuMyA3Mi0zMi44IDkyLjMtNDcuNiAxMDItNzQuMSAxMzEuNi05Ni4zIDE1NC0xMTMuN3pNMjU2IDMyMGMyMy4yLjQgNTYuNi0yOS4yIDczLjQtNDEuNCAxMzIuNy05Ni4zIDE0Mi44LTEwNC43IDE3My40LTEyOC43IDUuOC00LjUgOS4yLTExLjUgOS4yLTE4Ljl2LTE5YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjE5YzAgNy40IDMuNCAxNC4zIDkuMiAxOC45IDMwLjYgMjMuOSA0MC43IDMyLjQgMTczLjQgMTI4LjcgMTYuOCAxMi4yIDUwLjIgNDEuOCA3My40IDQxLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVxdWFscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMzA0SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzg0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTAtMTkySDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzg0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVyYXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTcuOTQxIDI3My45NDFjMTguNzQ1LTE4Ljc0NSAxOC43NDUtNDkuMTM3IDAtNjcuODgybC0xNjAtMTYwYy0xOC43NDUtMTguNzQ1LTQ5LjEzNi0xOC43NDYtNjcuODgzIDBsLTI1NiAyNTZjLTE4Ljc0NSAxOC43NDUtMTguNzQ1IDQ5LjEzNyAwIDY3Ljg4Mmw5NiA5NkE0OC4wMDQgNDguMDA0IDAgMCAwIDE0NCA0ODBoMzU2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJIMzU1Ljg4M2wxNDIuMDU4LTE0Mi4wNTl6bS0zMDIuNjI3LTYyLjYyN2wxMzcuMzczIDEzNy4zNzNMMjY1LjM3MyA0MTZIMTUwLjYyOGwtODAtODAgMTI0LjY4Ni0xMjQuNjg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFdGhlcm5ldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMTkyaC00OHYtNDhjMC04LjgtNy4yLTE2LTE2LTE2aC00OFY4MGMwLTguOC03LjItMTYtMTYtMTZIMTQ0Yy04LjggMC0xNiA3LjItMTYgMTZ2NDhIODBjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djIyNGMwIDguOCA3LjIgMTYgMTYgMTZoODBWMzIwaDMydjEyOGg2NFYzMjBoMzJ2MTI4aDY0VjMyMGgzMnYxMjhoNjRWMzIwaDMydjEyOGg4MGM4LjggMCAxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXVyb1NpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEwLjcwNiA0MTMuNzY1Yy0xLjMxNC02LjYzLTcuODM1LTEwLjg3Mi0xNC40MjQtOS4zNjktMTAuNjkyIDIuNDM5LTI3LjQyMiA1LjQxMy00NS40MjYgNS40MTMtNTYuNzYzIDAtMTAxLjkyOS0zNC43OS0xMjEuNDYxLTg1LjQ0OWgxMTMuNjg5YTEyIDEyIDAgMCAwIDExLjcwOC05LjM2OWw2LjM3My0yOC4zNmMxLjY4Ni03LjUwMi00LjAxOS0xNC42MzEtMTEuNzA4LTE0LjYzMUgxMTUuMjJjLTEuMjEtMTQuMzI4LTEuNDE0LTI4LjI4Ny4xMzctNDIuMjQ1SDI2MS45NWExMiAxMiAwIDAgMCAxMS43MjMtOS40MzRsNi41MTItMjkuNzU1YzEuNjM4LTcuNDg0LTQuMDYxLTE0LjU2Ni0xMS43MjMtMTQuNTY2SDEzMC4xODRjMjAuNjMzLTQ0Ljk5MSA2Mi42OS03NS4wMyAxMTcuNjE5LTc1LjAzIDE0LjQ4NiAwIDI4LjU2NCAyLjI1IDM3Ljg1MSA0LjE0NSA2LjIxNiAxLjI2OCAxMi4zNDctMi40OTggMTQuMDAyLTguNjIzbDExLjk5MS00NC4zNjhjMS44MjItNi43NDEtMi40NjUtMTMuNjE2LTkuMzI2LTE0LjkxN0MyOTAuMjE3IDM0LjkxMiAyNzAuNzEgMzIgMjQ5LjYzNSAzMiAxNTIuNDUxIDMyIDc0LjAzIDkyLjI1MiA0NS4wNzUgMTc2SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI5Ljc1NWMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDIxLjU2OWMtMS4wMDkgMTMuNjA3LTEuMTgxIDI5LjI4Ny0uMTgxIDQyLjI0NUgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOC4zNmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDMwLjExNEM2Ny4xMzkgNDE0LjY5MiAxNDUuMjY0IDQ4MCAyNDkuNjM1IDQ4MGMyNi4zMDEgMCA0OC41NjItNC41NDQgNjEuMTAxLTcuNzg4IDYuMTY3LTEuNTk1IDEwLjAyNy03LjcwOCA4Ljc4OC0xMy45NTdsLTguODE4LTQ0LjQ5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeGNoYW5nZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDE2OHYtMTZjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDM2MFY4MGMwLTIxLjM2NyAyNS44OTktMzIuMDQyIDQwLjk3MS0xNi45NzFsODAgODBjOS4zNzIgOS4zNzMgOS4zNzIgMjQuNTY5IDAgMzMuOTQxbC04MCA4MEM0MDkuOTU2IDI3MS45ODIgMzg0IDI2MS40NTYgMzg0IDI0MHYtNDhIMjRjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHptNDg4IDE1MkgxMjh2LTQ4YzAtMjEuMzE0LTI1Ljg2Mi0zMi4wOC00MC45NzEtMTYuOTcxbC04MCA4MGMtOS4zNzIgOS4zNzMtOS4zNzIgMjQuNTY5IDAgMzMuOTQxbDgwIDgwQzEwMi4wNTcgNDYzLjk5NyAxMjggNDUzLjQzNyAxMjggNDMydi00OGgzNjBjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV4Y2xhbWF0aW9uQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNCAyNTZjMCAxMzYuOTk3LTExMS4wNDMgMjQ4LTI0OCAyNDhTOCAzOTIuOTk3IDggMjU2QzggMTE5LjA4MyAxMTkuMDQzIDggMjU2IDhzMjQ4IDExMS4wODMgMjQ4IDI0OHptLTI0OCA1MGMtMjUuNDA1IDAtNDYgMjAuNTk1LTQ2IDQ2czIwLjU5NSA0NiA0NiA0NiA0Ni0yMC41OTUgNDYtNDYtMjAuNTk1LTQ2LTQ2LTQ2em0tNDMuNjczLTE2NS4zNDZsNy40MTggMTM2Yy4zNDcgNi4zNjQgNS42MDkgMTEuMzQ2IDExLjk4MiAxMS4zNDZoNDguNTQ2YzYuMzczIDAgMTEuNjM1LTQuOTgyIDExLjk4Mi0xMS4zNDZsNy40MTgtMTM2Yy4zNzUtNi44NzQtNS4wOTgtMTIuNjU0LTExLjk4Mi0xMi42NTRoLTYzLjM4M2MtNi44ODQgMC0xMi4zNTYgNS43OC0xMS45ODEgMTIuNjU0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeGNsYW1hdGlvblRyaWFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2OS41MTcgNDQwLjAxM0M1ODcuOTc1IDQ3Mi4wMDcgNTY0LjgwNiA1MTIgNTI3Ljk0IDUxMkg0OC4wNTRjLTM2LjkzNyAwLTU5Ljk5OS00MC4wNTUtNDEuNTc3LTcxLjk4N0wyNDYuNDIzIDIzLjk4NWMxOC40NjctMzIuMDA5IDY0LjcyLTMxLjk1MSA4My4xNTQgMGwyMzkuOTQgNDE2LjAyOHpNMjg4IDM1NGMtMjUuNDA1IDAtNDYgMjAuNTk1LTQ2IDQ2czIwLjU5NSA0NiA0NiA0NiA0Ni0yMC41OTUgNDYtNDYtMjAuNTk1LTQ2LTQ2LTQ2em0tNDMuNjczLTE2NS4zNDZsNy40MTggMTM2Yy4zNDcgNi4zNjQgNS42MDkgMTEuMzQ2IDExLjk4MiAxMS4zNDZoNDguNTQ2YzYuMzczIDAgMTEuNjM1LTQuOTgyIDExLjk4Mi0xMS4zNDZsNy40MTgtMTM2Yy4zNzUtNi44NzQtNS4wOTgtMTIuNjU0LTExLjk4Mi0xMi42NTRoLTYzLjM4M2MtNi44ODQgMC0xMi4zNTYgNS43OC0xMS45ODEgMTIuNjU0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgNDMyYzAgNDQuMTEyLTM1Ljg4OCA4MC04MCA4MHMtODAtMzUuODg4LTgwLTgwIDM1Ljg4OC04MCA4MC04MCA4MCAzNS44ODggODAgODB6TTI1LjI2IDI1LjE5OWwxMy42IDI3MkMzOS40OTkgMzA5Ljk3MiA1MC4wNDEgMzIwIDYyLjgzIDMyMGg2Ni4zNGMxMi43ODkgMCAyMy4zMzEtMTAuMDI4IDIzLjk3LTIyLjgwMWwxMy42LTI3MkMxNjcuNDI1IDExLjQ5IDE1Ni40OTYgMCAxNDIuNzcgMEg0OS4yM0MzNS41MDQgMCAyNC41NzUgMTEuNDkgMjUuMjYgMjUuMTk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeHBhbmRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEyLjY4NiAzMTUuMzE0TDEyMCA0MDhsMzIuOTIyIDMxLjAyOWMxNS4xMiAxNS4xMiA0LjQxMiA0MC45NzEtMTYuOTcgNDAuOTcxaC0xMTJDMTAuNjk3IDQ4MCAwIDQ2OS4yNTUgMCA0NTZWMzQ0YzAtMjEuMzgyIDI1LjgwMy0zMi4wOSA0MC45MjItMTYuOTcxTDcyIDM2MGw5Mi42ODYtOTIuNjg2YzYuMjQ4LTYuMjQ4IDE2LjM3OS02LjI0OCAyMi42MjcgMGwyNS4zNzMgMjUuMzczYzYuMjQ5IDYuMjQ4IDYuMjQ5IDE2LjM3OCAwIDIyLjYyN3ptMjIuNjI4LTExOC42MjhMMzI4IDEwNGwtMzIuOTIyLTMxLjAyOUMyNzkuOTU4IDU3Ljg1MSAyOTAuNjY2IDMyIDMxMi4wNDggMzJoMTEyQzQzNy4zMDMgMzIgNDQ4IDQyLjc0NSA0NDggNTZ2MTEyYzAgMjEuMzgyLTI1LjgwMyAzMi4wOS00MC45MjIgMTYuOTcxTDM3NiAxNTJsLTkyLjY4NiA5Mi42ODZjLTYuMjQ4IDYuMjQ4LTE2LjM3OSA2LjI0OC0yMi42MjcgMGwtMjUuMzczLTI1LjM3M2MtNi4yNDktNi4yNDgtNi4yNDktMTYuMzc4IDAtMjIuNjI3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeHBhbmRBcnJvd3NBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDM0NHYxMTJhMjMuOTQgMjMuOTQgMCAwIDEtMjQgMjRIMzEyYy0yMS4zOSAwLTMyLjA5LTI1LjktMTctNDFsMzYuMi0zNi4yTDIyNCAyOTUuNiAxMTYuNzcgNDAyLjkgMTUzIDQzOWMxNS4wOSAxNS4xIDQuMzkgNDEtMTcgNDFIMjRhMjMuOTQgMjMuOTQgMCAwIDEtMjQtMjRWMzQ0YzAtMjEuNCAyNS44OS0zMi4xIDQxLTE3bDM2LjE5IDM2LjJMMTg0LjQ2IDI1NiA3Ny4xOCAxNDguNyA0MSAxODVjLTE1LjEgMTUuMS00MSA0LjQtNDEtMTdWNTZhMjMuOTQgMjMuOTQgMCAwIDEgMjQtMjRoMTEyYzIxLjM5IDAgMzIuMDkgMjUuOSAxNyA0MWwtMzYuMiAzNi4yTDIyNCAyMTYuNGwxMDcuMjMtMTA3LjNMMjk1IDczYy0xNS4wOS0xNS4xLTQuMzktNDEgMTctNDFoMTEyYTIzLjk0IDIzLjk0IDAgMCAxIDI0IDI0djExMmMwIDIxLjQtMjUuODkgMzIuMS00MSAxN2wtMzYuMTktMzYuMkwyNjMuNTQgMjU2bDEwNy4yOCAxMDcuM0w0MDcgMzI3LjFjMTUuMS0xNS4yIDQxLTQuNSA0MSAxNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeHBhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxODBWNTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTI0YzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJINjR2ODRjMCA2LjYtNS40IDEyLTEyIDEySDEyYy02LjYgMC0xMi01LjQtMTItMTJ6TTI4OCA0NHY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoODR2ODRjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMlY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgzMDBjLTYuNiAwLTEyIDUuNC0xMiAxMnptMTQ4IDI3NmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY4NGgtODRjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMTI0YzEzLjMgMCAyNC0xMC43IDI0LTI0VjMzMmMwLTYuNi01LjQtMTItMTItMTJ6TTE2MCA0Njh2LTQwYzAtNi42LTUuNC0xMi0xMi0xMkg2NHYtODRjMC02LjYtNS40LTEyLTEyLTEySDEyYy02LjYgMC0xMiA1LjQtMTIgMTJ2MTI0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDEyNGM2LjYgMCAxMi01LjQgMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV4dGVybmFsTGlua0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIsMzIwSDQwMGExNiwxNiwwLDAsMC0xNiwxNlY0NDhINjRWMTI4SDIwOGExNiwxNiwwLDAsMCwxNi0xNlY4MGExNiwxNiwwLDAsMC0xNi0xNkg0OEE0OCw0OCwwLDAsMCwwLDExMlY0NjRhNDgsNDgsMCwwLDAsNDgsNDhINDAwYTQ4LDQ4LDAsMCwwLDQ4LTQ4VjMzNkExNiwxNiwwLDAsMCw0MzIsMzIwWk00ODgsMGgtMTI4Yy0yMS4zNywwLTMyLjA1LDI1LjkxLTE3LDQxbDM1LjczLDM1LjczTDEzNSwzMjAuMzdhMjQsMjQsMCwwLDAsMCwzNEwxNTcuNjcsMzc3YTI0LDI0LDAsMCwwLDM0LDBMNDM1LjI4LDEzMy4zMiw0NzEsMTY5YzE1LDE1LDQxLDQuNSw0MS0xN1YyNEEyNCwyNCwwLDAsMCw0ODgsMFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXh0ZXJuYWxMaW5rU3F1YXJlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA4MHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDM1MmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4em0tODggMTZIMjQ4LjAyOWMtMjEuMzEzIDAtMzIuMDggMjUuODYxLTE2Ljk3MSA0MC45NzFsMzEuOTg0IDMxLjk4N0w2Ny41MTUgMzY0LjQ4NWMtNC42ODYgNC42ODYtNC42ODYgMTIuMjg0IDAgMTYuOTcxbDMxLjAyOSAzMS4wMjljNC42ODcgNC42ODYgMTIuMjg1IDQuNjg2IDE2Ljk3MSAwbDE5NS41MjYtMTk1LjUyNiAzMS45ODggMzEuOTkxQzM1OC4wNTggMjYzLjk3NyAzODQgMjUzLjQyNSAzODQgMjMxLjk3OVYxMjBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeWVEcm9wcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwLjc1IDMzMy4yNWMtMTIgMTItMTguNzUgMjguMjgtMTguNzUgNDUuMjZWNDI0TDAgNDgwbDMyIDMyIDU2LTMyaDQ1LjQ5YzE2Ljk3IDAgMzMuMjUtNi43NCA0NS4yNS0xOC43NGwxMjYuNjQtMTI2LjYyLTEyOC0xMjhMNTAuNzUgMzMzLjI1ek00ODMuODggMjguMTJjLTM3LjQ3LTM3LjUtOTguMjgtMzcuNS0xMzUuNzUgMGwtNzcuMDkgNzcuMDktMTMuMS0xMy4xYy05LjQ0LTkuNDQtMjQuNjUtOS4zMS0zMy45NCAwbC00MC45NyA0MC45N2MtOS4zNyA5LjM3LTkuMzcgMjQuNTcgMCAzMy45NGwxNjEuOTQgMTYxLjk0YzkuNDQgOS40NCAyNC42NSA5LjMxIDMzLjk0IDBMNDE5Ljg4IDI4OGM5LjM3LTkuMzcgOS4zNy0yNC41NyAwLTMzLjk0bC0xMy4xLTEzLjEgNzcuMDktNzcuMDljMzcuNTEtMzcuNDggMzcuNTEtOTguMjYuMDEtMTM1Ljc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeWVTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNDAwYy03NS44NSAwLTEzNy4yNS01OC43MS0xNDIuOS0xMzMuMTFMNzIuMiAxODUuODJjLTEzLjc5IDE3LjMtMjYuNDggMzUuNTktMzYuNzIgNTUuNTlhMzIuMzUgMzIuMzUgMCAwIDAgMCAyOS4xOUM4OS43MSAzNzYuNDEgMTk3LjA3IDQ0OCAzMjAgNDQ4YzI2LjkxIDAgNTIuODctNCA3Ny44OS0xMC40NkwzNDYgMzk3LjM5YTE0NC4xMyAxNDQuMTMgMCAwIDEtMjYgMi42MXptMzEzLjgyIDU4LjFsLTExMC41NS04NS40NGEzMzEuMjUgMzMxLjI1IDAgMCAwIDgxLjI1LTEwMi4wNyAzMi4zNSAzMi4zNSAwIDAgMCAwLTI5LjE5QzU1MC4yOSAxMzUuNTkgNDQyLjkzIDY0IDMyMCA2NGEzMDguMTUgMzA4LjE1IDAgMCAwLTE0Ny4zMiAzNy43TDQ1LjQ2IDMuMzdBMTYgMTYgMCAwIDAgMjMgNi4xOEwzLjM3IDMxLjQ1QTE2IDE2IDAgMCAwIDYuMTggNTMuOWw1ODguMzYgNDU0LjczYTE2IDE2IDAgMCAwIDIyLjQ2LTIuODFsMTkuNjQtMjUuMjdhMTYgMTYgMCAwIDAtMi44Mi0yMi40NXptLTE4My43Mi0xNDJsLTM5LjMtMzAuMzhBOTQuNzUgOTQuNzUgMCAwIDAgNDE2IDI1NmE5NC43NiA5NC43NiAwIDAgMC0xMjEuMzEtOTIuMjFBNDcuNjUgNDcuNjUgMCAwIDEgMzA0IDE5MmE0Ni42NCA0Ni42NCAwIDAgMS0xLjU0IDEwbC03My42MS01Ni44OUExNDIuMzEgMTQyLjMxIDAgMCAxIDMyMCAxMTJhMTQzLjkyIDE0My45MiAwIDAgMSAxNDQgMTQ0YzAgMjEuNjMtNS4yOSA0MS43OS0xMy45IDYwLjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTcyLjUyIDI0MS40QzUxOC4yOSAxMzUuNTkgNDEwLjkzIDY0IDI4OCA2NFM1Ny42OCAxMzUuNjQgMy40OCAyNDEuNDFhMzIuMzUgMzIuMzUgMCAwIDAgMCAyOS4xOUM1Ny43MSAzNzYuNDEgMTY1LjA3IDQ0OCAyODggNDQ4czIzMC4zMi03MS42NCAyODQuNTItMTc3LjQxYTMyLjM1IDMyLjM1IDAgMCAwIDAtMjkuMTl6TTI4OCA0MDBhMTQ0IDE0NCAwIDEgMSAxNDQtMTQ0IDE0My45MyAxNDMuOTMgMCAwIDEtMTQ0IDE0NHptMC0yNDBhOTUuMzEgOTUuMzEgMCAwIDAtMjUuMzEgMy43OSA0Ny44NSA0Ny44NSAwIDAgMS02Ni45IDY2LjlBOTUuNzggOTUuNzggMCAxIDAgMjg4IDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1Mi41NyAxMjhjLTI4LjA5IDAtNTQuMDkgNC41Mi03Ny4wNiAxMi44NmwxMi40MS0xMjMuMTFDMjg5IDcuMzEgMjc5LjgxLTEuMTggMjY5LjMzLjEzIDE4OS42MyAxMC4xMyAxMjggNzcuNjQgMTI4IDE1OS40M2MwIDI4LjA5IDQuNTIgNTQuMDkgMTIuODYgNzcuMDZMMTcuNzUgMjI0LjA4QzcuMzEgMjIzLTEuMTggMjMyLjE5LjEzIDI0Mi42N2MxMCA3OS43IDc3LjUxIDE0MS4zMyAxNTkuMyAxNDEuMzMgMjguMDkgMCA1NC4wOS00LjUyIDc3LjA2LTEyLjg2bC0xMi40MSAxMjMuMTFjLTEuMDUgMTAuNDMgOC4xMSAxOC45MyAxOC41OSAxNy42MiA3OS43LTEwIDE0MS4zMy03Ny41MSAxNDEuMzMtMTU5LjMgMC0yOC4wOS00LjUyLTU0LjA5LTEyLjg2LTc3LjA2bDEyMy4xMSAxMi40MWMxMC40NCAxLjA1IDE4LjkzLTguMTEgMTcuNjItMTguNTktMTAtNzkuNy03Ny41MS0xNDEuMzMtMTU5LjMtMTQxLjMzek0yNTYgMjg4YTMyIDMyIDAgMSAxIDMyLTMyIDMyIDMyIDAgMCAxLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYXN0QmFja3dhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0MzZWNzZjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnYxNTEuOUwyMzUuNSA3MS40QzI1Ni4xIDU0LjMgMjg4IDY4LjYgMjg4IDk2djEzMS45TDQ1OS41IDcxLjRDNDgwLjEgNTQuMyA1MTIgNjguNiA1MTIgOTZ2MzIwYzAgMjcuNC0zMS45IDQxLjctNTIuNSAyNC42TDI4OCAyODUuM1Y0MTZjMCAyNy40LTMxLjkgNDEuNy01Mi41IDI0LjZMNjQgMjg1LjNWNDM2YzAgNi42LTUuNCAxMi0xMiAxMkgxMmMtNi42IDAtMTItNS40LTEyLTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYXN0Rm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgNzZ2MzYwYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMlYyODQuMUwyNzYuNSA0NDAuNmMtMjAuNiAxNy4yLTUyLjUgMi44LTUyLjUtMjQuNlYyODQuMUw1Mi41IDQ0MC42QzMxLjkgNDU3LjggMCA0NDMuNCAwIDQxNlY5NmMwLTI3LjQgMzEuOS00MS43IDUyLjUtMjQuNkwyMjQgMjI2LjhWOTZjMC0yNy40IDMxLjktNDEuNyA1Mi41LTI0LjZMNDQ4IDIyNi44Vjc2YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhdWNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIsMjU2SDMxMy4zOWMtMTUuNzEtMTMuNDQtMzUuNDYtMjMuMDctNTcuMzktMjhWMTgwLjQ0bC0zMi0zLjM4LTMyLDMuMzhWMjI4Yy0yMS45Myw1LTQxLjY4LDE0LjYtNTcuMzksMjhIMTZBMTYsMTYsMCwwLDAsMCwyNzJ2OTZhMTYsMTYsMCwwLDAsMTYsMTZoOTIuNzlDMTI5LjM4LDQyMS43MywxNzMsNDQ4LDIyNCw0NDhzOTQuNjItMjYuMjcsMTE1LjIxLTY0SDM1MmEzMiwzMiwwLDAsMSwzMiwzMiwzMiwzMiwwLDAsMCwzMiwzMmg2NGEzMiwzMiwwLDAsMCwzMi0zMkExNjAsMTYwLDAsMCwwLDM1MiwyNTZaTTgxLjU5LDE1OS45MWwxNDIuNDEtMTUsMTQyLjQxLDE1YzkuNDIsMSwxNy41OS02LjgxLDE3LjU5LTE2LjhWMTEyLjg5YzAtMTAtOC4xNy0xNy44LTE3LjU5LTE2LjgxTDI1NiwxMDcuNzRWODBhMTYsMTYsMCwwLDAtMTYtMTZIMjA4YTE2LDE2LDAsMCwwLTE2LDE2djI3Ljc0TDgxLjU5LDk2LjA4QzcyLjE3LDk1LjA5LDY0LDEwMi45LDY0LDExMi44OXYzMC4yMkM2NCwxNTMuMSw3Mi4xNywxNjAuOTEsODEuNTksMTU5LjkxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDE2MFY3Ny4yNWEzMiAzMiAwIDAgMC05LjM4LTIyLjYzTDQyNS4zNyA5LjM3QTMyIDMyIDAgMCAwIDQwMi43NSAwSDE2MGEzMiAzMiAwIDAgMC0zMiAzMnY0NDhhMzIgMzIgMCAwIDAgMzIgMzJoMzIwYTMyIDMyIDAgMCAwIDMyLTMyVjE5MmEzMiAzMiAwIDAgMC0zMi0zMnpNMjg4IDQzMmExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZ2LTMyYTE2IDE2IDAgMCAxIDE2LTE2aDMyYTE2IDE2IDAgMCAxIDE2IDE2em0wLTEyOGExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZ2LTMyYTE2IDE2IDAgMCAxIDE2LTE2aDMyYTE2IDE2IDAgMCAxIDE2IDE2em0xMjggMTI4YTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoMzJhMTYgMTYgMCAwIDEgMTYgMTZ6bTAtMTI4YTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoMzJhMTYgMTYgMCAwIDEgMTYgMTZ6bTAtMTEySDE5MlY2NGgxNjB2NDhhMTYgMTYgMCAwIDAgMTYgMTZoNDh6TTY0IDEyOEgzMmEzMiAzMiAwIDAgMC0zMiAzMnYzMjBhMzIgMzIgMCAwIDAgMzIgMzJoMzJhMzIgMzIgMCAwIDAgMzItMzJWMTYwYTMyIDMyIDAgMCAwLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGZWF0aGVyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAwQzQ2MC4yMiAzLjU2IDk2LjQ0IDM4LjIgNzEuMDEgMjg3LjYxYy0zLjA5IDI2LjY2LTQuODQgNTMuNDQtNS45OSA4MC4yNGwxNzguODctMTc4LjY5YzYuMjUtNi4yNSAxNi40LTYuMjUgMjIuNjUgMHM2LjI1IDE2LjM4IDAgMjIuNjNMNy4wNCA0NzEuMDNjLTkuMzggOS4zNy05LjM4IDI0LjU3IDAgMzMuOTQgOS4zOCA5LjM3IDI0LjU5IDkuMzcgMzMuOTggMGw1Ny4xMy01Ny4wN2M0Mi4wOS0uMTQgODQuMTUtMi41MyAxMjUuOTYtNy4zNiA1My40OC01LjQ0IDk3LjAyLTI2LjQ3IDEzMi41OC01Ni41NEgyNTUuNzRsMTQ2Ljc5LTQ4Ljg4YzExLjI1LTE0Ljg5IDIxLjM3LTMwLjcxIDMwLjQ1LTQ3LjEyaC04MS4xNGwxMDYuNTQtNTMuMjFDNTAwLjI5IDEzMi44NiA1MTAuMTkgMjYuMjYgNTEyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlYXRoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY3LjE0IDQ0Ljg0Yy02Mi41NS02Mi40OC0xNjEuNjctNjQuNzgtMjUyLjI4IDI1LjczLTc4LjYxIDc4LjUyLTYwLjk4IDYwLjkyLTg1Ljc1IDg1LjY2LTYwLjQ2IDYwLjM5LTcwLjM5IDE1MC44My02My42NCAyMTEuMTdsMTc4LjQ0LTE3OC4yNWM2LjI2LTYuMjUgMTYuNC02LjI1IDIyLjY1IDBzNi4yNSAxNi4zOCAwIDIyLjYzTDcuMDQgNDcxLjAzYy05LjM4IDkuMzctOS4zOCAyNC41NyAwIDMzLjk0IDkuMzggOS4zNyAyNC42IDkuMzcgMzMuOTggMGw2Ni4xLTY2LjAzQzE1OS40MiA0NTQuNjUgMjc5IDQ1Ny4xMSAzNTMuOTUgMzg0aC05OC4xOWwxNDcuNTctNDkuMTRjNDkuOTktNDkuOTMgMzYuMzgtMzYuMTggNDYuMzEtNDYuODZoLTk3Ljc4bDEzMS41NC00My44YzQ1LjQ0LTc0LjQ2IDM0LjMxLTE0OC44NC0xNi4yNi0xOTkuMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlbWFsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMGMzNS4zNDYgMCA2NCAyOC42NTQgNjQgNjRzLTI4LjY1NCA2NC02NCA2NGMtMzUuMzQ2IDAtNjQtMjguNjU0LTY0LTY0UzkyLjY1NCAwIDEyOCAwbTExOS4yODMgMzU0LjE3OWwtNDgtMTkyQTI0IDI0IDAgMCAwIDE3NiAxNDRoLTExLjM2Yy0yMi43MTEgMTAuNDQzLTQ5LjU5IDEwLjg5NC03My4yOCAwSDgwYTI0IDI0IDAgMCAwLTIzLjI4MyAxOC4xNzlsLTQ4IDE5MkM0LjkzNSAzNjkuMzA1IDE2LjM4MyAzODQgMzIgMzg0aDU2djEwNGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjM4NGg1NmMxNS41OTEgMCAyNy4wNzEtMTQuNjcxIDIzLjI4My0yOS44MjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpZ2h0ZXJKZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDIyNGwtMTI4LTE2LTQ4LTE2aC0yNEwyMjcuMTU4IDQ0aDM5LjUwOUMyNzguMzMzIDQ0IDI4OCA0MS4zNzUgMjg4IDM4cy05LjY2Ny02LTIxLjMzMy02SDE1MnYxMmgxNnYxNjRoLTQ4bC02Ni42NjctODBIMTguNjY3TDggMTM4LjY2N1YyMDhoOHYxNmg0OHYyLjY2NmwtNjQgOHY0Mi42NjdsNjQgOFYyODhIMTZ2MTZIOHY2OS4zMzNMMTguNjY3IDM4NGgzNC42NjdMMTIwIDMwNGg0OHYxNjRoLTE2djEyaDExNC42NjdjMTEuNjY3IDAgMjEuMzMzLTIuNjI1IDIxLjMzMy02cy05LjY2Ny02LTIxLjMzMy02aC0zOS41MDlMMzQ0IDMyMGgyNGw0OC0xNiAxMjgtMTZjOTYtMjEuMzMzIDk2LTI2LjU4MyA5Ni0zMiAwLTUuNDE3IDAtMTAuNjY3LTk2LTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptNjQgMjM2YzAgNi42LTUuNCAxMi0xMiAxMkgxMDhjLTYuNiAwLTEyLTUuNC0xMi0xMnYtOGMwLTYuNiA1LjQtMTIgMTItMTJoMTY4YzYuNiAwIDEyIDUuNCAxMiAxMnY4em0wLTY0YzAgNi42LTUuNCAxMi0xMiAxMkgxMDhjLTYuNiAwLTEyLTUuNC0xMi0xMnYtOGMwLTYuNiA1LjQtMTIgMTItMTJoMTY4YzYuNiAwIDEyIDUuNCAxMiAxMnY4em0wLTcydjhjMCA2LjYtNS40IDEyLTEyIDEySDEwOGMtNi42IDAtMTItNS40LTEyLTEydi04YzAtNi42IDUuNC0xMiAxMi0xMmgxNjhjNi42IDAgMTIgNS40IDEyIDEyem05Ni0xMTQuMXY2LjFIMjU2VjBoNi4xYzYuNCAwIDEyLjUgMi41IDE3IDdsOTcuOSA5OGM0LjUgNC41IDcgMTAuNiA3IDE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVBcmNoaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3NyAxMDVMMjc5LjEgN2MtNC41LTQuNS0xMC42LTctMTctN0gyNTZ2MTI4aDEyOHYtNi4xYzAtNi4zLTIuNS0xMi40LTctMTYuOXpNMTI4LjQgMzM2Yy0xNy45IDAtMzIuNCAxMi4xLTMyLjQgMjcgMCAxNSAxNC42IDI3IDMyLjUgMjdzMzIuNC0xMi4xIDMyLjQtMjctMTQuNi0yNy0zMi41LTI3ek0yMjQgMTM2VjBoLTYzLjZ2MzJoLTMyVjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6TTk1LjkgMzJoMzJ2MzJoLTMyem0zMi4zIDM4NGMtMzMuMiAwLTU4LTMwLjQtNTEuNC02Mi45TDk2LjQgMjU2di0zMmgzMnYtMzJoLTMydi0zMmgzMnYtMzJoLTMyVjk2aDMyVjY0aDMydjMyaC0zMnYzMmgzMnYzMmgtMzJ2MzJoMzJ2MzJoLTMydjMyaDIyLjFjNS43IDAgMTAuNyA0LjEgMTEuOCA5LjdsMTcuMyA4Ny43YzYuNCAzMi40LTE4LjQgNjIuNi01MS40IDYyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVBdWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTM2VjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bS02NCAyNjhjMCAxMC43LTEyLjkgMTYtMjAuNSA4LjVMMTA0IDM3Nkg3NmMtNi42IDAtMTItNS40LTEyLTEydi01NmMwLTYuNiA1LjQtMTIgMTItMTJoMjhsMzUuNS0zNi41YzcuNi03LjYgMjAuNS0yLjIgMjAuNSA4LjV2MTM2em0zMy4yLTQ3LjZjOS4xLTkuMyA5LjEtMjQuMSAwLTMzLjQtMjIuMS0yMi44IDEyLjItNTYuMiAzNC40LTMzLjUgMjcuMiAyNy45IDI3LjIgNzIuNCAwIDEwMC40LTIxLjggMjIuMy01Ni45LTEwLjQtMzQuNC0zMy41em04Ni0xMTcuMWM1NC40IDU1LjkgNTQuNCAxNDQuOCAwIDIwMC44LTIxLjggMjIuNC01Ny0xMC4zLTM0LjQtMzMuNSAzNi4yLTM3LjIgMzYuMy05Ni41IDAtMTMzLjgtMjIuMS0yMi44IDEyLjMtNTYuMyAzNC40LTMzLjV6TTM4NCAxMjEuOXY2LjFIMjU2VjBoNi4xYzYuNCAwIDEyLjUgMi41IDE3IDdsOTcuOSA5OGM0LjUgNC41IDcgMTAuNiA3IDE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxMjEuOTQxVjEyOEgyNTZWMGg2LjA1OWM2LjM2NSAwIDEyLjQ3IDIuNTI5IDE2Ljk3MSA3LjAyOWw5Ny45NDEgOTcuOTQxQTI0LjAwNSAyNC4wMDUgMCAwIDEgMzg0IDEyMS45NDF6TTI0OCAxNjBjLTEzLjIgMC0yNC0xMC44LTI0LTI0VjBIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHY0NjRjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMzNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTYwSDI0OHpNMTIzLjIwNiA0MDAuNTA1YTUuNCA1LjQgMCAwIDEtNy42MzMuMjQ2bC02NC44NjYtNjAuODEyYTUuNCA1LjQgMCAwIDEgMC03Ljg3OWw2NC44NjYtNjAuODEyYTUuNCA1LjQgMCAwIDEgNy42MzMuMjQ2bDE5LjU3OSAyMC44ODVhNS40IDUuNCAwIDAgMS0uMzcyIDcuNzQ3TDEwMS42NSAzMzZsNDAuNzYzIDM1Ljg3NGE1LjQgNS40IDAgMCAxIC4zNzIgNy43NDdsLTE5LjU3OSAyMC44ODR6bTUxLjI5NSA1MC40NzlsLTI3LjQ1My03Ljk3YTUuNDAyIDUuNDAyIDAgMCAxLTMuNjgxLTYuNjkybDYxLjQ0LTIxMS42MjZhNS40MDIgNS40MDIgMCAwIDEgNi42OTItMy42ODFsMjcuNDUyIDcuOTdhNS40IDUuNCAwIDAgMSAzLjY4IDYuNjkybC02MS40NCAyMTEuNjI2YTUuMzk3IDUuMzk3IDAgMCAxLTYuNjkgMy42ODF6bTE2MC43OTItMTExLjA0NWwtNjQuODY2IDYwLjgxMmE1LjQgNS40IDAgMCAxLTcuNjMzLS4yNDZsLTE5LjU4LTIwLjg4NWE1LjQgNS40IDAgMCAxIC4zNzItNy43NDdMMjg0LjM1IDMzNmwtNDAuNzYzLTM1Ljg3NGE1LjQgNS40IDAgMCAxLS4zNzItNy43NDdsMTkuNTgtMjAuODg1YTUuNCA1LjQgMCAwIDEgNy42MzMtLjI0Nmw2NC44NjYgNjAuODEyYTUuNCA1LjQgMCAwIDEtLjAwMSA3Ljg3OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUNvbnRyYWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHpNNjQgNzJjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04Vjcyem0wIDY0YzAtNC40MiAzLjU4LTggOC04aDgwYzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZ6bTE5Mi44MSAyNDhIMzA0YzguODQgMCAxNiA3LjE2IDE2IDE2cy03LjE2IDE2LTE2IDE2aC00Ny4xOWMtMTYuNDUgMC0zMS4yNy05LjE0LTM4LjY0LTIzLjg2LTIuOTUtNS45Mi04LjA5LTYuNTItMTAuMTctNi41MnMtNy4yMi41OS0xMC4wMiA2LjE5bC03LjY3IDE1LjM0YTE1Ljk4NiAxNS45ODYgMCAwIDEtMTQuMzEgOC44NGMtLjM4IDAtLjc1LS4wMi0xLjE0LS4wNS02LjQ1LS40NS0xMi00Ljc1LTE0LjAzLTEwLjg5TDE0NCAzNTQuNTlsLTEwLjYxIDMxLjg4Yy01Ljg5IDE3LjY2LTIyLjM4IDI5LjUzLTQxIDI5LjUzSDgwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2aDEyLjM5YzQuODMgMCA5LjExLTMuMDggMTAuNjQtNy42NmwxOC4xOS01NC42NGMzLjMtOS44MSAxMi40NC0xNi40MSAyMi43OC0xNi40MXMxOS40OCA2LjU5IDIyLjc3IDE2LjQxbDEzLjg4IDQxLjY0YzE5Ljc3LTE2LjE5IDU0LjA1LTkuNyA2NiAxNC4xNiAyLjAyIDQuMDYgNS45NiA2LjUgMTAuMTYgNi41ek0zNzcgMTA1TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVDc3YgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em0tOTYgMTQ0YzAgNC40Mi0zLjU4IDgtOCA4aC04Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg4YzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4aC04Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4di0zMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDhjNC40MiAwIDggMy41OCA4IDh2MTZ6bTQ0LjI3IDEwNEgxNjBjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxMi4yN2M1Ljk1IDAgMTAuNDEtMy41IDEwLjQxLTYuNjIgMC0xLjMtLjc1LTIuNjYtMi4xMi0zLjg0bC0yMS44OS0xOC43N2MtOC40Ny03LjIyLTEzLjMzLTE3LjQ4LTEzLjMzLTI4LjE0IDAtMjEuMyAxOS4wMi0zOC42MiA0Mi40MS0zOC42MkgyMDBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTEyLjI3Yy01Ljk1IDAtMTAuNDEgMy41LTEwLjQxIDYuNjIgMCAxLjMuNzUgMi42NiAyLjEyIDMuODRsMjEuODkgMTguNzdjOC40NyA3LjIyIDEzLjMzIDE3LjQ4IDEzLjMzIDI4LjE0LjAxIDIxLjI5LTE5IDM4LjYyLTQyLjM5IDM4LjYyek0yNTYgMjY0djIwLjhjMCAyMC4yNyA1LjcgNDAuMTcgMTYgNTYuODggMTAuMy0xNi43IDE2LTM2LjYxIDE2LTU2Ljg4VjI2NGMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHYyMC44YzAgMzUuNDgtMTIuODggNjguODktMzYuMjggOTQuMDktMy4wMiAzLjI1LTcuMjcgNS4xMS0xMS43MiA1LjExcy04LjctMS44Ni0xMS43Mi01LjExYy0yMy40LTI1LjItMzYuMjgtNTguNjEtMzYuMjgtOTQuMDlWMjY0YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4em0xMjEtMTU5TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTM2VjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTc2LjQ1IDIxMS4zNmwtOTYuNDIgOTUuN2MtNi42NSA2LjYxLTE3LjM5IDYuNjEtMjQuMDQgMGwtOTYuNDItOTUuN0M3My40MiAzMzcuMjkgODAuNTQgMzIwIDk0LjgyIDMyMEgxNjB2LTgwYzAtOC44NCA3LjE2LTE2IDE2LTE2aDMyYzguODQgMCAxNiA3LjE2IDE2IDE2djgwaDY1LjE4YzE0LjI4IDAgMjEuNCAxNy4yOSAxMS4yNyAyNy4zNnpNMzc3IDEwNUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlRXhjZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em02MC4xIDEwNi41TDIyNCAzMzZsNjAuMSA5My41YzUuMSA4LS42IDE4LjUtMTAuMSAxOC41aC0zNC45Yy00LjQgMC04LjUtMi40LTEwLjYtNi4zQzIwOC45IDQwNS41IDE5MiAzNzMgMTkyIDM3M2MtNi40IDE0LjgtMTAgMjAtMzYuNiA2OC44LTIuMSAzLjktNi4xIDYuMy0xMC41IDYuM0gxMTBjLTkuNSAwLTE1LjItMTAuNS0xMC4xLTE4LjVsNjAuMy05My41LTYwLjMtOTMuNWMtNS4yLTggLjYtMTguNSAxMC4xLTE4LjVoMzQuOGM0LjQgMCA4LjUgMi40IDEwLjYgNi4zIDI2LjEgNDguOCAyMCAzMy42IDM2LjYgNjguNSAwIDAgNi4xLTExLjcgMzYuNi02OC41IDIuMS0zLjkgNi4yLTYuMyAxMC42LTYuM0gyNzRjOS41LS4xIDE1LjIgMTAuNCAxMC4xIDE4LjR6TTM4NCAxMjEuOXY2LjFIMjU2VjBoNi4xYzYuNCAwIDEyLjUgMi41IDE3IDdsOTcuOSA5OGM0LjUgNC41IDcgMTAuNiA3IDE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVFeHBvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDEyMS45YzAtNi4zLTIuNS0xMi40LTctMTYuOUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4ek01NzEgMzA4bC05NS43LTk2LjRjLTEwLjEtMTAuMS0yNy40LTMtMjcuNCAxMS4zVjI4OGgtNjR2NjRoNjR2NjUuMmMwIDE0LjMgMTcuMyAyMS40IDI3LjQgMTEuM0w1NzEgMzMyYzYuNi02LjYgNi42LTE3LjQgMC0yNHptLTM3OSAyOHYtMzJjMC04LjggNy4yLTE2IDE2LTE2aDE3NlYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNFYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjM1MkgyMDhjLTguOCAwLTE2LTcuMi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUltYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxMjEuOTQxVjEyOEgyNTZWMGg2LjA1OWEyNCAyNCAwIDAgMSAxNi45NyA3LjAyOWw5Ny45NDEgOTcuOTQxYTI0LjAwMiAyNC4wMDIgMCAwIDEgNy4wMyAxNi45NzF6TTI0OCAxNjBjLTEzLjIgMC0yNC0xMC44LTI0LTI0VjBIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHY0NjRjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMzNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTYwSDI0OHptLTEzNS40NTUgMTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHMtMjEuNDkgNDgtNDggNDgtNDgtMjEuNDktNDgtNDggMjEuNDkxLTQ4IDQ4LTQ4em0yMDggMjQwaC0yNTZsLjQ4NS00OC40ODVMMTA0LjU0NSAzMjhjNC42ODYtNC42ODYgMTEuNzk5LTQuMjAxIDE2LjQ4NS40ODVMMTYwLjU0NSAzNjggMjY0LjA2IDI2NC40ODVjNC42ODYtNC42ODYgMTIuMjg0LTQuNjg2IDE2Ljk3MSAwTDMyMC41NDUgMzA0djExMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUltcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAyODhjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMTEydi02NHptNDg5LTE4M0w0MDcuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDM4NHYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45em0tMTUzIDMxVjBIMTUyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNjRoMTI4di02NS4yYzAtMTQuMyAxNy4zLTIxLjQgMjcuNC0xMS4zTDM3OSAzMDhjNi42IDYuNyA2LjYgMTcuNCAwIDI0bC05NS43IDk2LjRjLTEwLjEgMTAuMS0yNy40IDMtMjcuNC0xMS4zVjM1MkgxMjh2MTM2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMzc2Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUludm9pY2VEb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc3IDEwNUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45em0tMTUzIDMxVjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6TTY0IDcyYzAtNC40MiAzLjU4LTggOC04aDgwYzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOFY3MnptMCA4MHYtMTZjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04em0xNDQgMjYzLjg4VjQ0MGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di0yNC4yOWMtMTEuMjktLjU4LTIyLjI3LTQuNTItMzEuMzctMTEuMzUtMy45LTIuOTMtNC4xLTguNzctLjU3LTEyLjE0bDExLjc1LTExLjIxYzIuNzctMi42NCA2Ljg5LTIuNzYgMTAuMTMtLjczIDMuODcgMi40MiA4LjI2IDMuNzIgMTIuODIgMy43MmgyOC4xMWM2LjUgMCAxMS44LTUuOTIgMTEuOC0xMy4xOSAwLTUuOTUtMy42MS0xMS4xOS04Ljc3LTEyLjczbC00NS0xMy41Yy0xOC41OS01LjU4LTMxLjU4LTIzLjQyLTMxLjU4LTQzLjM5IDAtMjQuNTIgMTkuMDUtNDQuNDQgNDIuNjctNDUuMDdWMjMyYzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djI0LjI5YzExLjI5LjU4IDIyLjI3IDQuNTEgMzEuMzcgMTEuMzUgMy45IDIuOTMgNC4xIDguNzcuNTcgMTIuMTRsLTExLjc1IDExLjIxYy0yLjc3IDIuNjQtNi44OSAyLjc2LTEwLjEzLjczLTMuODctMi40My04LjI2LTMuNzItMTIuODItMy43MmgtMjguMTFjLTYuNSAwLTExLjggNS45Mi0xMS44IDEzLjE5IDAgNS45NSAzLjYxIDExLjE5IDguNzcgMTIuNzNsNDUgMTMuNWMxOC41OSA1LjU4IDMxLjU4IDIzLjQyIDMxLjU4IDQzLjM5IDAgMjQuNTMtMTkuMDUgNDQuNDQtNDIuNjcgNDUuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVJbnZvaWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAyNTZIOTZ2NjRoMTkydi02NHptODktMTUxTDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6bS0xNTMgMzFWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHpNNjQgNzJjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04Vjcyem0wIDY0YzAtNC40MiAzLjU4LTggOC04aDgwYzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZ6bTI1NiAzMDRjMCA0LjQyLTMuNTggOC04IDhoLTgwYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZ6bTAtMjAwdjk2YzAgOC44NC03LjE2IDE2LTE2IDE2SDgwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtOTZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMjI0YzguODQgMCAxNiA3LjE2IDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlTWVkaWNhbEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMTM2VjBIODhDNzQuNyAwIDY0IDEwLjcgNjQgMjR2MjMySDhjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDhoMTQwLjljMyAwIDUuOCAxLjcgNy4yIDQuNGwxOS45IDM5LjggNTYuOC0xMTMuN2MyLjktNS45IDExLjQtNS45IDE0LjMgMGwzNC43IDY5LjVIMzUyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2aC04OS45TDI0MCAyNzUuOGwtNTYuOCAxMTMuN2MtMi45IDUuOS0xMS40IDUuOS0xNC4zIDBMMTM0LjEgMzIwSDY0djE2OGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDMxMmMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTE1My0zMUwzNDMuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDMyMHYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzcgMTA1TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6bS0xNTMgMzFWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptNjQgMTYwdjQ4YzAgNC40LTMuNiA4LTggOGgtNTZ2NTZjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di01NmgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDhjMC00LjQgMy42LTggOC04aDU2di01NmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djU2aDU2YzQuNCAwIDggMy42IDggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVBkZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODEuOSAyNTYuMWMtNS0xNi00LjktNDYuOS0yLTQ2LjkgOC40IDAgNy42IDM2LjkgMiA0Ni45em0tMS43IDQ3LjJjLTcuNyAyMC4yLTE3LjMgNDMuMy0yOC40IDYyLjcgMTguMy03IDM5LTE3LjIgNjIuOS0yMS45LTEyLjctOS42LTI0LjktMjMuNC0zNC41LTQwLjh6TTg2LjEgNDI4LjFjMCAuOCAxMy4yLTUuNCAzNC45LTQwLjItNi43IDYuMy0yOS4xIDI0LjUtMzQuOSA0MC4yek0yNDggMTYwaDEzNnYzMjhjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjI0QzAgMTAuNyAxMC43IDAgMjQgMGgyMDB2MTM2YzAgMTMuMiAxMC44IDI0IDI0IDI0em0tOCAxNzEuOGMtMjAtMTIuMi0zMy4zLTI5LTQyLjctNTMuOCA0LjUtMTguNSAxMS42LTQ2LjYgNi4yLTY0LjItNC43LTI5LjQtNDIuNC0yNi41LTQ3LjgtNi44LTUgMTguMy0uNCA0NC4xIDguMSA3Ny0xMS42IDI3LjYtMjguNyA2NC42LTQwLjggODUuOC0uMSAwLS4xLjEtLjIuMS0yNy4xIDEzLjktNzMuNiA0NC41LTU0LjUgNjggNS42IDYuOSAxNiAxMCAyMS41IDEwIDE3LjkgMCAzNS43LTE4IDYxLjEtNjEuOCAyNS44LTguNSA1NC4xLTE5LjEgNzktMjMuMiAyMS43IDExLjggNDcuMSAxOS41IDY0IDE5LjUgMjkuMiAwIDMxLjItMzIgMTkuNy00My40LTEzLjktMTMuNi01NC4zLTkuNy03My42LTcuMnpNMzc3IDEwNUwyNzkgN2MtNC41LTQuNS0xMC42LTctMTctN2gtNnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45em0tNzQuMSAyNTUuM2M0LjEtMi43LTIuNS0xMS45LTQyLjgtOSAzNy4xIDE1LjggNDIuOCA5IDQyLjggOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVBvd2VycG9pbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkzLjcgMjcxLjJjOC44IDAgMTUuNSAyLjcgMjAuMyA4LjEgOS42IDEwLjkgOS44IDMyLjctLjIgNDQuMS00LjkgNS42LTExLjkgOC41LTIxLjEgOC41aC0yNi45di02MC43aDI3Ljl6TTM3NyAxMDVMMjc5IDdjLTQuNS00LjUtMTAuNi03LTE3LTdoLTZ2MTI4aDEyOHYtNi4xYzAtNi4zLTIuNS0xMi40LTctMTYuOXptLTE1MyAzMVYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em01MyAxNjUuMmMwIDkwLjMtODguOCA3Ny42LTExMS4xIDc3LjZWNDM2YzAgNi42LTUuNCAxMi0xMiAxMmgtMzAuOGMtNi42IDAtMTItNS40LTEyLTEyVjIzNi4yYzAtNi42IDUuNC0xMiAxMi0xMmg4MWM0NC41IDAgNzIuOSAzMi44IDcyLjkgNzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVQcmVzY3JpcHRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em02OC41MyAxNzkuNDhsMTEuMzEgMTEuMzFjNi4yNSA2LjI1IDYuMjUgMTYuMzggMCAyMi42M2wtMjkuOSAyOS45TDMwNCA0MDkuMzhjNi4yNSA2LjI1IDYuMjUgMTYuMzggMCAyMi42M2wtMTEuMzEgMTEuMzFjLTYuMjUgNi4yNS0xNi4zOCA2LjI1LTIyLjYzIDBMMjQwIDQxMy4yNWwtMzAuMDYgMzAuMDZjLTYuMjUgNi4yNS0xNi4zOCA2LjI1LTIyLjYzIDBMMTc2IDQzMmMtNi4yNS02LjI1LTYuMjUtMTYuMzggMC0yMi42M2wzMC4wNi0zMC4wNkwxNDYuNzQgMzIwSDEyOHY0OGMwIDguODQtNy4xNiAxNi0xNiAxNkg5NmMtOC44NCAwLTE2LTcuMTYtMTYtMTZWMjA4YzAtOC44NCA3LjE2LTE2IDE2LTE2aDgwYzM1LjM1IDAgNjQgMjguNjUgNjQgNjQgMCAyNC4yMi0xMy42MiA0NS4wNS0zMy40NiA1NS45MkwyNDAgMzQ1LjM4bDI5LjktMjkuOWM2LjI1LTYuMjUgMTYuMzgtNi4yNSAyMi42MyAwek0xNzYgMjcyaC00OHYtMzJoNDhjOC44MiAwIDE2IDcuMTggMTYgMTZzLTcuMTggMTYtMTYgMTZ6bTIwOC0xNTAuMXY2LjFIMjU2VjBoNi4xYzYuNCAwIDEyLjUgMi41IDE3IDdsOTcuOSA5OGM0LjUgNC41IDcgMTAuNiA3IDE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVTaWduYXR1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE4LjE3IDQyNC4xNGMtMi45NS01LjkyLTguMDktNi41Mi0xMC4xNy02LjUycy03LjIyLjU5LTEwLjAyIDYuMTlsLTcuNjcgMTUuMzRjLTYuMzcgMTIuNzgtMjUuMDMgMTEuMzctMjkuNDgtMi4wOUwxNDQgMzg2LjU5bC0xMC42MSAzMS44OGMtNS44OSAxNy42Ni0yMi4zOCAyOS41My00MSAyOS41M0g4MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNmgxMi4zOWM0LjgzIDAgOS4xMS0zLjA4IDEwLjY0LTcuNjZsMTguMTktNTQuNjRjMy4zLTkuODEgMTIuNDQtMTYuNDEgMjIuNzgtMTYuNDFzMTkuNDggNi41OSAyMi43NyAxNi40MWwxMy44OCA0MS42NGMxOS43NS0xNi4xOSA1NC4wNi05LjcgNjYgMTQuMTYgMS44OSAzLjc4IDUuNDkgNS45NSA5LjM2IDYuMjZ2LTgyLjEybDEyOC0xMjcuMDlWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjRWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtNDBsLTEyOC0uMTFjLTE2LjEyLS4zMS0zMC41OC05LjI4LTM3LjgzLTIzLjc1ek0zODQgMTIxLjljMC02LjMtMi41LTEyLjQtNy0xNi45TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMXptLTk2IDIyNS4wNlY0MTZoNjguOTlsMTYxLjY4LTE2Mi43OC02Ny44OC02Ny44OEwyODggMzQ2Ljk2em0yODAuNTQtMTc5LjYzbC0zMS44Ny0zMS44N2MtOS45NC05Ljk0LTI2LjA3LTkuOTQtMzYuMDEgMGwtMjcuMjUgMjcuMjUgNjcuODggNjcuODggMjcuMjUtMjcuMjVjOS45NS05Ljk0IDkuOTUtMjYuMDcgMC0zNi4wMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTM2VjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTY1LjE4IDIxNi4wMUgyMjR2ODBjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTMyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtODBIOTQuODJjLTE0LjI4IDAtMjEuNDEtMTcuMjktMTEuMjctMjcuMzZsOTYuNDItOTUuN2M2LjY1LTYuNjEgMTcuMzktNi42MSAyNC4wNCAwbDk2LjQyIDk1LjdjMTAuMTUgMTAuMDcgMy4wMyAyNy4zNi0xMS4yNSAyNy4zNnpNMzc3IDEwNUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDEyMS45NDFWMTI4SDI1NlYwaDYuMDU5YzYuMzY1IDAgMTIuNDcgMi41MjkgMTYuOTcxIDcuMDI5bDk3Ljk0MSA5Ny45NDFBMjQuMDA1IDI0LjAwNSAwIDAgMSAzODQgMTIxLjk0MXpNMjI0IDEzNlYwSDI0QzEwLjc0NSAwIDAgMTAuNzQ1IDAgMjR2NDY0YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em05NiAxNDQuMDE2djExMS45NjNjMCAyMS40NDUtMjUuOTQzIDMxLjk5OC00MC45NzEgMTYuOTcxTDIyNCAzNTMuOTQxVjM5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIODhjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNFYyODBjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDExMmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MzguMDU5bDU1LjAyOS01NS4wMTNjMTUuMDExLTE1LjAxIDQwLjk3MS00LjQ5MSA0MC45NzEgMTYuOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVXb3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptNTcuMSAxMjBIMzA1YzcuNyAwIDEzLjQgNy4xIDExLjcgMTQuN2wtMzggMTY4Yy0xLjIgNS41LTYuMSA5LjMtMTEuNyA5LjNoLTM4Yy01LjUgMC0xMC4zLTMuOC0xMS42LTkuMS0yNS44LTEwMy41LTIwLjgtODEuMi0yNS42LTExMC41aC0uNWMtMS4xIDE0LjMtMi40IDE3LjQtMjUuNiAxMTAuNS0xLjMgNS4zLTYuMSA5LjEtMTEuNiA5LjFIMTE3Yy01LjYgMC0xMC41LTMuOS0xMS43LTkuNGwtMzcuOC0xNjhjLTEuNy03LjUgNC0xNC42IDExLjctMTQuNmgyNC41YzUuNyAwIDEwLjcgNCAxMS44IDkuNyAxNS42IDc4IDIwLjEgMTA5LjUgMjEgMTIyLjIgMS42LTEwLjIgNy4zLTMyLjcgMjkuNC0xMjIuNyAxLjMtNS40IDYuMS05LjEgMTEuNy05LjFoMjkuMWM1LjYgMCAxMC40IDMuOCAxMS43IDkuMiAyNCAxMDAuNCAyOC44IDEyNCAyOS42IDEyOS40LS4yLTExLjItMi42LTE3LjggMjEuNi0xMjkuMiAxLTUuNiA1LjktOS41IDExLjUtOS41ek0zODQgMTIxLjl2Ni4xSDI1NlYwaDYuMWM2LjQgMCAxMi41IDIuNSAxNyA3bDk3LjkgOThjNC41IDQuNSA3IDEwLjYgNyAxNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptMTYwLTE0LjF2Ni4xSDI1NlYwaDYuMWM2LjQgMCAxMi41IDIuNSAxNyA3bDk3LjkgOThjNC41IDQuNSA3IDEwLjYgNyAxNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxsRHJpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMzIwcy02NCA5Mi42NS02NCAxMjhjMCAzNS4zNSAyOC42NiA2NCA2NCA2NHM2NC0yOC42NSA2NC02NC02NC0xMjgtNjQtMTI4em0tOS4zNy0xMDIuOTRMMjk0Ljk0IDkuMzdDMjg4LjY5IDMuMTIgMjgwLjUgMCAyNzIuMzEgMHMtMTYuMzggMy4xMi0yMi42MiA5LjM3bC04MS41OCA4MS41OEw4MS45MyA0Ljc2Yy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MiAwTDM2LjY5IDI3LjM4Yy02LjI0IDYuMjUtNi4yNCAxNi4zOCAwIDIyLjYybDg2LjE5IDg2LjE4LTk0Ljc2IDk0Ljc2Yy0zNy40OSAzNy40OC0zNy40OSA5OC4yNiAwIDEzNS43NWwxMTcuMTkgMTE3LjE5YzE4Ljc0IDE4Ljc0IDQzLjMxIDI4LjEyIDY3Ljg3IDI4LjEyIDI0LjU3IDAgNDkuMTMtOS4zNyA2Ny44Ny0yOC4xMmwyMjEuNTctMjIxLjU3YzEyLjUtMTIuNSAxMi41LTMyLjc1LjAxLTQ1LjI1em0tMTE2LjIyIDcwLjk3SDY1LjkzYzEuMzYtMy44NCAzLjU3LTcuOTggNy40My0xMS44M2wxMy4xNS0xMy4xNSA4MS42MS04MS42MSA1OC42IDU4LjZjMTIuNDkgMTIuNDkgMzIuNzUgMTIuNDkgNDUuMjQgMHMxMi40OS0zMi43NSAwLTQ1LjI0bC01OC42LTU4LjYgNTguOTUtNTguOTUgMTYyLjQ0IDE2Mi40NC00OC4zNCA0OC4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuNjMgMjE3LjA2TDI5NC45NCA5LjM3QzI4OC42OSAzLjEyIDI4MC41IDAgMjcyLjMxIDBzLTE2LjM4IDMuMTItMjIuNjIgOS4zN2wtODEuNTggODEuNThMODEuOTMgNC43N2MtNi4yNC02LjI1LTE2LjM4LTYuMjUtMjIuNjIgMEwzNi42OSAyNy4zOGMtNi4yNCA2LjI1LTYuMjQgMTYuMzggMCAyMi42M2w4Ni4xOSA4Ni4xOC05NC43NiA5NC43NmMtMzcuNDkgMzcuNDktMzcuNDkgOTguMjYgMCAxMzUuNzVsMTE3LjE5IDExNy4xOWMxOC43NSAxOC43NCA0My4zMSAyOC4xMiA2Ny44NyAyOC4xMiAyNC41NyAwIDQ5LjEzLTkuMzcgNjcuODgtMjguMTJsMjIxLjU3LTIyMS41N2MxMi40OS0xMi41IDEyLjQ5LTMyLjc2IDAtNDUuMjZ6bS0xMTYuMjIgNzAuOTdINjUuOTNjMS4zNi0zLjg0IDMuNTctNy45OCA3LjQzLTExLjgzbDEzLjE1LTEzLjE1IDgxLjYxLTgxLjYxIDU4LjYxIDU4LjZjMTIuNDkgMTIuNDkgMzIuNzUgMTIuNDkgNDUuMjQgMCAxMi40OS0xMi40OSAxMi40OS0zMi43NSAwLTQ1LjI0bC01OC42MS01OC42IDU4Ljk1LTU4Ljk1IDE2Mi40NSAxNjIuNDQtNDguMzUgNDguMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbG0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4IDY0aC04djIwYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMlY2NEg5NnYyMGMwIDYuNi01LjQgMTItMTIgMTJINDRjLTYuNiAwLTEyLTUuNC0xMi0xMlY2NGgtOEMxMC43IDY0IDAgNzQuNyAwIDg4djMzNmMwIDEzLjMgMTAuNyAyNCAyNCAyNGg4di0yMGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjIwaDMyMHYtMjBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnYyMGg4YzEzLjMgMCAyNC0xMC43IDI0LTI0Vjg4YzAtMTMuMy0xMC43LTI0LTI0LTI0ek05NiAzNzJjMCA2LjYtNS40IDEyLTEyIDEySDQ0Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtOTZjMCA2LjYtNS40IDEyLTEyIDEySDQ0Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtOTZjMCA2LjYtNS40IDEyLTEyIDEySDQ0Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTI3MiAyMDhjMCA2LjYtNS40IDEyLTEyIDEySDE1NmMtNi42IDAtMTItNS40LTEyLTEydi05NmMwLTYuNiA1LjQtMTIgMTItMTJoMjAwYzYuNiAwIDEyIDUuNCAxMiAxMnY5NnptMC0xNjhjMCA2LjYtNS40IDEyLTEyIDEySDE1NmMtNi42IDAtMTItNS40LTEyLTEydi05NmMwLTYuNiA1LjQtMTIgMTItMTJoMjAwYzYuNiAwIDEyIDUuNCAxMiAxMnY5NnptMTEyIDE1MmMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtOTZjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwem0wLTk2YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4Ny45NzYgMEgyNC4wMjhDMi43MSAwLTguMDQ3IDI1Ljg2NiA3LjA1OCA0MC45NzFMMTkyIDIyNS45NDFWNDMyYzAgNy44MzEgMy44MjEgMTUuMTcgMTAuMjM3IDE5LjY2Mmw4MCA1NS45OEMyOTguMDIgNTE4LjY5IDMyMCA1MDcuNDkzIDMyMCA0ODcuOThWMjI1Ljk0MWwxODQuOTQ3LTE4NC45N0M1MjAuMDIxIDI1Ljg5NiA1MDkuMzM4IDAgNDg3Ljk3NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaW5nZXJwcmludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYuMTIgMjQ1Ljk2Yy0xMy4yNSAwLTI0IDEwLjc0LTI0IDI0IDEuMTQgNzIuMjUtOC4xNCAxNDEuOS0yNy43IDIxMS41NS0yLjczIDkuNzIgMi4xNSAzMC40OSAyMy4xMiAzMC40OSAxMC40OCAwIDIwLjExLTYuOTIgMjMuMDktMTcuNTIgMTMuNTMtNDcuOTEgMzEuMDQtMTI1LjQxIDI5LjQ4LTIyNC41Mi4wMS0xMy4yNS0xMC43My0yNC0yMy45OS0yNHptLS44Ni04MS43M0MxOTQgMTY0LjE2IDE1MS4yNSAyMTEuMyAxNTIuMSAyNjUuMzJjLjc1IDQ3Ljk0LTMuNzUgOTUuOTEtMTMuMzcgMTQyLjU1LTIuNjkgMTIuOTggNS42NyAyNS42OSAxOC42NCAyOC4zNiAxMy4wNSAyLjY3IDI1LjY3LTUuNjYgMjguMzYtMTguNjQgMTAuMzQtNTAuMDkgMTUuMTctMTAxLjU4IDE0LjM3LTE1My4wMi0uNDEtMjUuOTUgMTkuOTItNTIuNDkgNTQuNDUtNTIuMzQgMzEuMzEuNDcgNTcuMTUgMjUuMzQgNTcuNjIgNTUuNDcuNzcgNDguMDUtMi44MSA5Ni4zMy0xMC42MSAxNDMuNTUtMi4xNyAxMy4wNiA2LjY5IDI1LjQyIDE5Ljc2IDI3LjU4IDE5Ljk3IDMuMzMgMjYuODEtMTUuMSAyNy41OC0xOS43NyA4LjI4LTUwLjAzIDEyLjA2LTEwMS4yMSAxMS4yNy0xNTIuMTEtLjg4LTU1LjgtNDcuOTQtMTAxLjg4LTEwNC45MS0xMDIuNzJ6bS0xMTAuNjktMTkuNzhjLTEwLjMtOC4zNC0yNS4zNy02LjgtMzMuNzYgMy40OC0yNS42MiAzMS41LTM5LjM5IDcxLjI4LTM4Ljc1IDExMiAuNTkgMzcuNTgtMi40NyA3NS4yNy05LjExIDExMi4wNS0yLjM0IDEzLjA1IDYuMzEgMjUuNTMgMTkuMzYgMjcuODkgMjAuMTEgMy41IDI3LjA3LTE0LjgxIDI3Ljg5LTE5LjM2IDcuMTktMzkuODQgMTAuNS04MC42NiA5Ljg2LTEyMS4zMy0uNDctMjkuODggOS4yLTU3Ljg4IDI4LTgwLjk3IDguMzUtMTAuMjggNi43OS0yNS4zOS0zLjQ5LTMzLjc2em0xMDkuNDctNjIuMzNjLTE1LjQxLS40MS0zMC44NyAxLjQ0LTQ1Ljc4IDQuOTctMTIuODkgMy4wNi0yMC44NyAxNS45OC0xNy44MyAyOC44OSAzLjA2IDEyLjg5IDE2IDIwLjgzIDI4Ljg5IDE3LjgzIDExLjA1LTIuNjEgMjIuNDctMy43NyAzNC0zLjY5IDc1LjQzIDEuMTMgMTM3LjczIDYxLjUgMTM4Ljg4IDEzNC41OC41OSAzNy44OC0xLjI4IDc2LjExLTUuNTggMTEzLjYzLTEuNSAxMy4xNyA3Ljk1IDI1LjA4IDIxLjExIDI2LjU4IDE2LjcyIDEuOTUgMjUuNTEtMTEuODggMjYuNTgtMjEuMTFhOTI5LjA2IDkyOS4wNiAwIDAgMCA1Ljg5LTExOS44NWMtMS41Ni05OC43NS04NS4wNy0xODAuMzMtMTg2LjE2LTE4MS44M3ptMjUyLjA3IDEyMS40NWMtMi44Ni0xMi45Mi0xNS41MS0yMS4yLTI4LjYxLTE4LjI3LTEyLjk0IDIuODYtMjEuMTIgMTUuNjYtMTguMjYgMjguNjEgNC43MSAyMS40MSA0LjkxIDM3LjQxIDQuNyA2MS42LS4xMSAxMy4yNyAxMC41NSAyNC4wOSAyMy44IDI0LjJoLjJjMTMuMTcgMCAyMy44OS0xMC42MSAyNC0yMy44LjE4LTIyLjE4LjQtNDQuMTEtNS44My03Mi4zNHptLTQwLjEyLTkwLjcyQzQxNy4yOSA0My40NiAzMzcuNiAxLjI5IDI1Mi44MS4wMiAxODMuMDItLjgyIDExOC40NyAyNC45MSA3MC40NiA3Mi45NCAyNC4wOSAxMTkuMzctLjkgMTgxLjA0LjE0IDI0Ni42NWwtLjEyIDIxLjQ3Yy0uMzkgMTMuMjUgMTAuMDMgMjQuMzEgMjMuMjggMjQuNjkuMjMuMDIuNDguMDIuNzIuMDIgMTIuOTIgMCAyMy41OS0xMC4zIDIzLjk3LTIzLjNsLjE2LTIzLjY0Yy0uODMtNTIuNSAxOS4xNi0xMDEuODYgNTYuMjgtMTM5IDM4Ljc2LTM4LjggOTEuMzQtNTkuNjcgMTQ3LjY4LTU4Ljg2IDY5LjQ1IDEuMDMgMTM0LjczIDM1LjU2IDE3NC42MiA5Mi4zOSA3LjYxIDEwLjg2IDIyLjU2IDEzLjQ1IDMzLjQyIDUuODYgMTAuODQtNy42MiAxMy40Ni0yMi41OSA1Ljg0LTMzLjQzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMy41NiA1MS4yYy0yMC44IDE5LjMtMzkuNTggMzkuNTktNTYuMjIgNTkuOTdDMjQwLjA4IDczLjYyIDIwNi4yOCAzNS41MyAxNjggMCA2OS43NCA5MS4xNyAwIDIwOS45NiAwIDI4MS42IDAgNDA4Ljg1IDEwMC4yOSA1MTIgMjI0IDUxMnMyMjQtMTAzLjE1IDIyNC0yMzAuNGMwLTUzLjI3LTUxLjk4LTE2My4xNC0xMjQuNDQtMjMwLjR6bS0xOS40NyAzNDAuNjVDMjgyLjQzIDQwNy4wMSAyNTUuNzIgNDE2IDIyNi44NiA0MTYgMTU0LjcxIDQxNiA5NiAzNjguMjYgOTYgMjkwLjc1YzAtMzguNjEgMjQuMzEtNzIuNjMgNzIuNzktMTMwLjc1IDYuOTMgNy45OCA5OC44MyAxMjUuMzQgOTguODMgMTI1LjM0bDU4LjYzLTY2Ljg4YzQuMTQgNi44NSA3LjkxIDEzLjU1IDExLjI3IDE5Ljk3IDI3LjM1IDUyLjE5IDE1LjgxIDExOC45Ny0zMy40MyAxNTMuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmVFeHRpbmd1aXNoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM0LjAyNyAyNi4zMjlsLTE2OCAyOEMyNTQuNjkzIDU2LjIxOCAyNTYgNjcuOCAyNTYgNzJoLTU4LjMzMkMyMDguMzUzIDM2LjEwOCAxODEuNDQ2IDAgMTQ0IDBjLTM5LjQzNSAwLTY2LjM2OCAzOS42NzYtNTIuMjI4IDc2LjIwMy01Mi4wMzkgMTMuMDUxLTc1LjM4MSA1NC4yMTMtOTAuMDQ5IDkwLjg4NC00LjkyMyAxMi4zMDcgMS4wNjMgMjYuMjc0IDEzLjM3IDMxLjE5NyAxMi4zMTcgNC45MjYgMjYuMjc5LTEuMDc1IDMxLjE5Ni0xMy4zN0M3NS4wNTggMTEyLjk5IDEwNi45NjQgMTIwIDE2OCAxMjB2MjcuMDc2Yy00MS41NDMgMTAuODYyLTcyIDQ5LjIzNS03MiA5NC4xMjlWNDg4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxNDRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0MGMwLTQ0LjczMS0zMC41OTYtODIuMzEyLTcyLTkyLjk3VjEyMGg0MGMwIDIuOTc0LTEuNzAzIDE1LjcxNiAxMC4wMjcgMTcuNjcxbDE2OCAyOEM0NDEuMzQyIDE2Ni44OSA0NDggMTYxLjI1IDQ0OCAxNTMuODM0VjM4LjE2NmMwLTcuNDE2LTYuNjU4LTEzLjA1Ni0xMy45NzMtMTEuODM3ek0xNDQgNzJjLTguODIyIDAtMTYtNy4xNzgtMTYtMTZzNy4xNzgtMTYgMTYtMTYgMTYgNy4xNzggMTYgMTYtNy4xNzggMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE2IDIzLjg2YzAtMjMuOC0zMC42NS0zMi43Ny00NC4xNS0xMy4wNEM0OCAxOTEuODUgMjI0IDIwMCAyMjQgMjg4YzAgMzUuNjMtMjkuMTEgNjQuNDYtNjQuODUgNjMuOTktMzUuMTctLjQ1LTYzLjE1LTI5Ljc3LTYzLjE1LTY0Ljk0di04NS41MWMwLTIxLjctMjYuNDctMzIuMjMtNDEuNDMtMTYuNUMyNy44IDIxMy4xNiAwIDI2MS4zMyAwIDMyMGMwIDEwNS44NyA4Ni4xMyAxOTIgMTkyIDE5MnMxOTItODYuMTMgMTkyLTE5MmMwLTE3MC4yOS0xNjgtMTkzLTE2OC0yOTYuMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcnN0QWlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4VjMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB6bTEyOCA0MDBoMzIwVjMySDEyOHY0NDh6bTY0LTI0OGMwLTQuNCAzLjYtOCA4LThoNTZ2LTU2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2NTZoNTZjNC40IDAgOCAzLjYgOCA4djQ4YzAgNC40LTMuNiA4LTggOGgtNTZ2NTZjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di01NmgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDh6TTUyOCAzMmgtNDh2NDQ4aDQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNy4xIDk2Yy04OS45NyAwLTE2OC41NCA1NC43Ny0yMTIuMjcgMTAxLjYzTDI3LjUgMTMxLjU4Yy0xMi4xMy05LjE4LTMwLjI0LjYtMjcuMTQgMTQuNjZMMjQuNTQgMjU2IC4zNSAzNjUuNzdjLTMuMSAxNC4wNiAxNS4wMSAyMy44MyAyNy4xNCAxNC42Nmw4Ny4zMy02Ni4wNUMxNTguNTUgMzYxLjIzIDIzNy4xMyA0MTYgMzI3LjEgNDE2IDQ2NC41NiA0MTYgNTc2IDI4OCA1NzYgMjU2UzQ2NC41NiA5NiAzMjcuMSA5NnptODcuNDMgMTg0Yy0xMy4yNSAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzUtMjQgMjQtMjQgMTMuMjYgMCAyNCAxMC43NCAyNCAyNCAwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXN0UmFpc2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NS45OCAxNjBWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNDYuOTNjNS4wMi0xLjc4IDEwLjM0LTIuOTMgMTUuOTctMi45M2g0OC4wM3ptMTI4IDk1Ljk5Yy0uMDEtMzUuMzQtMjguNjYtNjMuOTktNjMuOTktNjMuOTlIMjA3Ljg1Yy04Ljc4IDAtMTUuOSA3LjA3LTE1LjkgMTUuODV2LjU2YzAgMjYuMjcgMjEuMyA0Ny41OSA0Ny41NyA0Ny41OWgzNS4yNmM5LjY4IDAgMTMuMiAzLjU4IDEzLjIgOHYxNi4yYzAgNC4yOS0zLjU5IDcuNzgtNy44OCA4LTQ0LjUyIDIuMjgtNjQuMTYgMjQuNzEtOTYuMDUgNzIuNTVsLTYuMzEgOS40N2E3Ljk5NCA3Ljk5NCAwIDAgMS0xMS4wOSAyLjIybC0xMy4zMS04Ljg4YTcuOTk0IDcuOTk0IDAgMCAxLTIuMjItMTEuMDlsNi4zMS05LjQ3YzE1LjczLTIzLjYgMzAuMi00My4yNiA0Ny4zMS01OC4wOC0xNy4yNy01LjUxLTMxLjQtMTguMTItMzguODctMzQuNDUtNi41OSAzLjQxLTEzLjk2IDUuNTItMjEuODcgNS41MmgtMzJjLTEyLjM0IDAtMjMuNDktNC44MS0zMi0xMi40OEM3MS40OCAyNTEuMTkgNjAuMzMgMjU2IDQ4IDI1NkgxNmMtNS42NCAwLTEwLjk3LTEuMTUtMTYtMi45NXY3Ny45M2MwIDMzLjk1IDEzLjQ4IDY2LjUgMzcuNDkgOTAuNTFMNjMuOTkgNDQ4djY0aDI1NS45OHYtNjMuOTZsMzUuOTEtMzUuOTJBOTYuMDM1IDk2LjAzNSAwIDAgMCAzODQgMzQ0LjIxbC0uMDItODguMjJ6bS0zMi4wMS05MC4wOVY0OGMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djExMmgzMmMxMS4yOCAwIDIxLjk0IDIuMzEgMzIgNS45ek0xNiAyMjRoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiA2NCAwIDcxLjE2IDAgODB2MTI4YzAgOC44NCA3LjE2IDE2IDE2IDE2em05NS45OSAwaDMyYzguODQgMCAxNi03LjE2IDE2LTE2VjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTYwYzAgOC44NCA3LjE2IDE2IDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGFnQ2hlY2tlcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0My4yIDE4OS45VjI1OGMyNi4xIDUuOSA0OS4zIDE1LjYgNzMuNiAyMi4zdi02OC4yYy0yNi01LjgtNDkuNC0xNS41LTczLjYtMjIuMnptMjIzLjMtMTIzYy0zNC4zIDE1LjktNzYuNSAzMS45LTExNyAzMS45QzI5NiA5OC44IDI1MS43IDY0IDE4NC4zIDY0Yy0yNSAwLTQ3LjMgNC40LTY4IDEyIDIuOC03LjMgNC4xLTE1LjIgMy42LTIzLjZDMTE4LjEgMjQgOTQuOCAxLjIgNjYuMyAwIDM0LjMtMS4zIDggMjQuMyA4IDU2YzAgMTkgOS41IDM1LjggMjQgNDUuOVY0ODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTZjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTk0LjRjMjguMy0xMi4xIDYzLjYtMjIuMSAxMTQuNC0yMi4xIDUzLjYgMCA5Ny44IDM0LjggMTY1LjIgMzQuOCA0OC4yIDAgODYuNy0xNi4zIDEyMi41LTQwLjkgOC43LTYgMTMuOC0xNS44IDEzLjgtMjYuNFY5NS45Yy4xLTIzLjMtMjQuMi0zOC44LTQ1LjQtMjl6TTE2OS42IDMyNS41Yy0yNS44IDIuNy01MCA4LjItNzMuNiAxNi42di03MC41YzI2LjItOS4zIDQ3LjUtMTUgNzMuNi0xNy40ek00NjQgMTkxYy0yMy42IDkuOC00Ni4zIDE5LjUtNzMuNiAyMy45VjI4NmMyNC44LTMuNCA1MS40LTExLjggNzMuNi0yNnY3MC41Yy0yNS4xIDE2LjEtNDguNSAyNC43LTczLjYgMjcuMVYyODZjLTI3IDMuNy00Ny45IDEuNS03My42LTUuNnY2Ny40Yy0yMy45LTcuNC00Ny4zLTE2LjctNzMuNi0yMS4zVjI1OGMtMTkuNy00LjQtNDAuOC02LjgtNzMuNi0zLjh2LTcwYy0yMi40IDMuMS00NC42IDEwLjItNzMuNiAyMC45di03MC41YzMzLjItMTIuMiA1MC4xLTE5LjggNzMuNi0yMnY3MS42YzI3LTMuNyA0OC40LTEuMyA3My42IDUuN3YtNjcuNGMyMy43IDcuNCA0Ny4yIDE2LjcgNzMuNiAyMS4zdjY4LjRjMjMuNyA1LjMgNDcuNiA2LjkgNzMuNiAyLjdWMTQzYzI3LTQuOCA1Mi4zLTEzLjYgNzMuNi0yMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGFnVXNhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDBDMTQuMyAwIDAgMTQuMyAwIDMydjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyQzY0IDE0LjMgNDkuNyAwIDMyIDB6bTI2Ny45IDMwMy42Yy01Ny4yLTE1LjEtMTExLjctMjguOC0yMDMuOSAxMS4xVjM4NGMxODUuNy05Mi4yIDIyMS43IDUzLjMgMzk3LjUtMjMuMSAxMS40LTUgMTguNS0xNi41IDE4LjUtMjguOHYtMzZjLTQzLjYgMTcuMy04MC4yIDI0LjEtMTEyLjEgMjQuMS0zNy40LS4xLTY4LjktOC40LTEwMC0xNi42em0wLTk2Yy01Ny4yLTE1LjEtMTExLjctMjguOC0yMDMuOSAxMS4xdjYxLjVjOTQuOC0zNy42IDE1NC42LTIyLjcgMjEyLjEtNy42IDU3LjIgMTUuMSAxMTEuNyAyOC44IDIwMy45LTExLjFWMjAwYy00My42IDE3LjMtODAuMiAyNC4xLTExMi4xIDI0LjEtMzcuNCAwLTY4LjktOC4zLTEwMC0xNi41em05LjUtMTI1LjljNTEuOCAxNS42IDk3LjQgMjkgMjAyLjYtMjAuMVYzMC44YzAtMjUuMS0yNi44LTM4LjEtNDkuNC0yNi42QzI5MS4zIDkxLjUgMzA1LjQtNjIuMiA5NiAzMi40djE1MS45Yzk0LjgtMzcuNSAxNTQuNi0yMi43IDIxMi4xLTcuNiA1Ny4yIDE1IDExMS43IDI4LjcgMjAzLjktMTEuMVY5Ni43Yy01My42IDIzLjUtOTMuMyAzMS40LTEyNi4xIDMxLjRzLTU5LTcuOC04NS43LTE1LjljLTQtMS4yLTguMS0yLjQtMTIuMS0zLjVWNzUuNWM3LjIgMiAxNC4zIDQuMSAyMS4zIDYuMnpNMTYwIDEyOC4xYy04LjggMC0xNi03LjEtMTYtMTYgMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMSAxNiAxNi03LjIgMTYtMTYgMTZ6bTAtNTUuOGMtOC44IDAtMTYtNy4xLTE2LTE2IDAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjEgMTYgMTZjMCA4LjgtNy4yIDE2LTE2IDE2em02NCA0Ny45Yy04LjggMC0xNi03LjEtMTYtMTYgMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMSAxNiAxNmMwIDguOC03LjIgMTYtMTYgMTZ6bTAtNTUuOWMtOC44IDAtMTYtNy4xLTE2LTE2IDAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjEgMTYgMTZjMCA4LjgtNy4yIDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0OS41NjUgOTguNzgzQzI5NS45NzggOTguNzgzIDI1MS43MjEgNjQgMTg0LjM0OCA2NGMtMjQuOTU1IDAtNDcuMzA5IDQuMzg0LTY4LjA0NSAxMi4wMTNhNTUuOTQ3IDU1Ljk0NyAwIDAgMCAzLjU4Ni0yMy41NjJDMTE4LjExNyAyNC4wMTUgOTQuODA2IDEuMjA2IDY2LjMzOC4wNDggMzQuMzQ1LTEuMjU0IDggMjQuMjk2IDggNTZjMCAxOS4wMjYgOS40OTcgMzUuODI1IDI0IDQ1Ljk0NVY0ODhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDE2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtOTQuNGMyOC4zMTEtMTIuMDY0IDYzLjU4Mi0yMi4xMjIgMTE0LjQzNS0yMi4xMjIgNTMuNTg4IDAgOTcuODQ0IDM0Ljc4MyAxNjUuMjE3IDM0Ljc4MyA0OC4xNjkgMCA4Ni42NjctMTYuMjk0IDEyMi41MDUtNDAuODU4QzUwNi44NCAzNTkuNDUyIDUxMiAzNDkuNTcxIDUxMiAzMzkuMDQ1di0yNDMuMWMwLTIzLjM5My0yNC4yNjktMzguODctNDUuNDg1LTI5LjAxNi0zNC4zMzggMTUuOTQ4LTc2LjQ1NCAzMS44NTQtMTE2Ljk1IDMxLjg1NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmxhc2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM3LjIgNDAzLjVMMzIwIDIxNVY2NGg4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0SDEyMGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoOHYxNTFMMTAuOCA0MDMuNUMtMTguNSA0NTAuNiAxNS4zIDUxMiA3MC45IDUxMmgzMDYuMmM1NS43IDAgODkuNC02MS41IDYwLjEtMTA4LjV6TTEzNy45IDMyMGw0OC4yLTc3LjZjMy43LTUuMiA1LjgtMTEuNiA1LjgtMTguNFY2NGg2NHYxNjBjMCA2LjkgMi4yIDEzLjIgNS44IDE4LjRsNDguMiA3Ny42aC0xNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsdXNoZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ0IDIwMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6bS0xOTIgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTgwIDIyNGMwLTM5LjggMzIuMi03MiA3Mi03MnM3MiAzMi4yIDcyIDcyLTMyLjIgNzItNzIgNzItNzItMzIuMi03Mi03MnptMjMyIDE3NkgxODRjLTIxLjIgMC0yMS4yLTMyIDAtMzJoMTI4YzIxLjIgMCAyMS4yIDMyIDAgMzJ6bTMyLTEwNGMtMzkuOCAwLTcyLTMyLjItNzItNzJzMzIuMi03MiA3Mi03MiA3MiAzMi4yIDcyIDcyLTMyLjIgNzItNzIgNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbGRlck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAxMjhIMjcybC02NC02NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjI4OGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjE3NmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0tOTYgMTY4YzAgOC44NC03LjE2IDE2LTE2IDE2SDE2MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTE2YzAtOC44NCA3LjE2LTE2IDE2LTE2aDE5MmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9sZGVyT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzIuNjk0IDI5Mi4wOTNMNTAwLjI3IDQxNi4yNDhBNjMuOTk3IDYzLjk5NyAwIDAgMSA0NDQuOTg5IDQ0OEg0NS4wMjVjLTE4LjUyMyAwLTMwLjA2NC0yMC4wOTMtMjAuNzMxLTM2LjA5M2w3Mi40MjQtMTI0LjE1NUE2NCA2NCAwIDAgMSAxNTIgMjU2aDM5OS45NjRjMTguNTIzIDAgMzAuMDY0IDIwLjA5MyAyMC43MyAzNi4wOTN6TTE1MiAyMjRoMzI4di00OGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4SDI3MmwtNjQtNjRINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYyNzguMDQ2bDY5LjA3Ny0xMTguNDE4Qzg2LjIxNCAyNDIuMjUgMTE3Ljk4OSAyMjQgMTUyIDIyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9sZGVyUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQsMTI4SDI3MkwyMDgsNjRINDhBNDgsNDgsMCwwLDAsMCwxMTJWNDAwYTQ4LDQ4LDAsMCwwLDQ4LDQ4SDQ2NGE0OCw0OCwwLDAsMCw0OC00OFYxNzZBNDgsNDgsMCwwLDAsNDY0LDEyOFpNMzU5LjUsMjk2YTE2LDE2LDAsMCwxLTE2LDE2aC02NHY2NGExNiwxNiwwLDAsMS0xNiwxNmgtMTZhMTYsMTYsMCwwLDEtMTYtMTZWMzEyaC02NGExNiwxNiwwLDAsMS0xNi0xNlYyODBhMTYsMTYsMCwwLDEsMTYtMTZoNjRWMjAwYTE2LDE2LDAsMCwxLDE2LTE2aDE2YTE2LDE2LDAsMCwxLDE2LDE2djY0aDY0YTE2LDE2LDAsMCwxLDE2LDE2WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDEyOEgyNzJsLTY0LTY0SDQ4QzIxLjQ5IDY0IDAgODUuNDkgMCAxMTJ2Mjg4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTc2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDQxNmgtMjMuNDFMMjc3Ljg4IDUzLjY5QTMyIDMyIDAgMCAwIDI0Ny41OCAzMmgtNDcuMTZhMzIgMzIgMCAwIDAtMzAuMyAyMS42OUwzOS40MSA0MTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNmgtMTkuNThsMjMuMy02NGgxNTIuNTZsMjMuMyA2NEgzMDRhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMTc2Ljg1IDI3MkwyMjQgMTQyLjUxIDI3MS4xNSAyNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvb3RiYWxsQmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODEuNSA2MC4zYy00LjgtMTguMi0xOS4xLTMyLjUtMzcuMy0zNy40QzQyMC4zIDE2LjUgMzgzIDguOSAzMzkuNCA4TDQ5NiAxNjQuOGMtLjgtNDMuNS04LjItODAuNi0xNC41LTEwNC41em0tNDY3IDM5MS40YzQuOCAxOC4yIDE5LjEgMzIuNSAzNy4zIDM3LjQgMjMuOSA2LjQgNjEuMiAxNCAxMDQuOCAxNC45TDAgMzQ3LjJjLjggNDMuNSA4LjIgODAuNiAxNC41IDEwNC41ek00LjIgMjgzLjRMMjIwLjQgNTAwYzEzMi41LTE5LjQgMjQ4LjgtMTE4LjcgMjcxLjUtMjcxLjRMMjc1LjYgMTJDMTQzLjEgMzEuNCAyNi44IDEzMC43IDQuMiAyODMuNHptMzE3LjMtMTIzLjZjMy4xLTMuMSA4LjItMy4xIDExLjMgMGwxMS4zIDExLjNjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtMjguMyAyOC4zIDI4LjMgMjguM2MzLjEgMy4xIDMuMSA4LjIgMCAxMS4zbC0xMS4zIDExLjNjLTMuMSAzLjEtOC4yIDMuMS0xMS4zIDBsLTI4LjMtMjguMy0yMi42IDIyLjcgMjguMyAyOC4zYzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMEwyNDggMjc4LjZsLTIyLjYgMjIuNiAyOC4zIDI4LjNjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtMTEuMyAxMS4zYy0zLjEgMy4xLTguMiAzLjEtMTEuMyAwbC0yOC4zLTI4LjMtMjguMyAyOC4zYy0zLjEgMy4xLTguMiAzLjEtMTEuMyAwbC0xMS4zLTExLjNjLTMuMS0zLjEtMy4xLTguMiAwLTExLjNsMjguMy0yOC4zLTI4LjMtMjguMmMtMy4xLTMuMS0zLjEtOC4yIDAtMTEuM2wxMS4zLTExLjNjMy4xLTMuMSA4LjItMy4xIDExLjMgMGwyOC4zIDI4LjMgMjIuNi0yMi42LTI4LjMtMjguM2MtMy4xLTMuMS0zLjEtOC4yIDAtMTEuM2wxMS4zLTExLjNjMy4xLTMuMSA4LjItMy4xIDExLjMgMGwyOC4zIDI4LjMgMjIuNi0yMi42LTI4LjMtMjguM2MtMy4xLTMuMS0zLjEtOC4yIDAtMTEuM2wxMS4zLTExLjNjMy4xLTMuMSA4LjItMy4xIDExLjMgMGwyOC4zIDI4LjMgMjguMy0yOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb3J3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMC41IDIzMS40bC0xOTItMTYwQzI4Ny45IDU0LjMgMjU2IDY4LjYgMjU2IDk2djMyMGMwIDI3LjQgMzEuOSA0MS44IDUyLjUgMjQuNmwxOTItMTYwYzE1LjMtMTIuOCAxNS4zLTM2LjQgMC00OS4yem0tMjU2IDBsLTE5Mi0xNjBDMzEuOSA1NC4zIDAgNjguNiAwIDk2djMyMGMwIDI3LjQgMzEuOSA0MS44IDUyLjUgMjQuNmwxOTItMTYwYzE1LjMtMTIuOCAxNS4zLTM2LjQgMC00OS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGcm9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ni41MyA5Ny40M0M0MzkuNjcgNjAuMjMgNDA3LjE5IDMyIDM2OCAzMmMtMzkuMjMgMC03MS43MiAyOC4yOS03OC41NCA2NS41NEMxMjYuNzUgMTEyLjk2LS41IDI1MC4xMiAwIDQxNi45OC4xMSA0NTEuOSAyOS4wOCA0ODAgNjQgNDgwaDMwNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNiAwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC03OS40OWwzNS44LTQ4LjMzYzI0LjE0LTM2LjIzIDEwLjM1LTg4LjI4LTMzLjcxLTEwNi42LTIzLjg5LTkuOTMtNTEuNTUtNC42NS03Mi4yNCAxMC44OGwtMzIuNzYgMjQuNTljLTcuMDYgNS4zMS0xNy4wOSAzLjkxLTIyLjQxLTMuMTktNS4zLTcuMDgtMy44OC0xNy4xMSAzLjE5LTIyLjQxbDM0Ljc4LTI2LjA5YzM2Ljg0LTI3LjY2IDg4LjI4LTI3LjYyIDEyNS4xMyAwIDEwLjg3IDguMTUgNDUuODcgMzkuMDYgNDAuOCA5My4yMUw0NjkuNjIgNDgwSDU2MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNiAwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC01My42M2wtOTguNTItMTA0LjY4IDE1NC40NC04Ni42NUE1OC4xNiA1OC4xNiAwIDAgMCA1NzYgMTg5Ljk0YzAtMjEuNC0xMS43Mi00MC45NS0zMC40OC01MS4yMy00MC41Ni0yMi4yMi05OC45OS00MS4yOC05OC45OS00MS4yOHpNMzY4IDEzNmMtMTMuMjYgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc0LTI0IDI0LTI0IDEzLjI1IDAgMjQgMTAuNzQgMjQgMjQgMCAxMy4yNS0xMC43NSAyNC0yNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnJvd25PcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTEzNiAyMDhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzJ6bTE4Ny4zIDE4My4zYy0zMS4yLTkuNi01OS40LTE1LjMtNzUuMy0xNS4zcy00NC4xIDUuNy03NS4zIDE1LjNjLTExLjUgMy41LTIyLjUtNi4zLTIwLjUtMTguMSA3LTQwIDYwLjEtNjEuMiA5NS44LTYxLjJzODguOCAyMS4zIDk1LjggNjEuMmMyIDExLjktOS4xIDIxLjYtMjAuNSAxOC4xek0zMjggMjQwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnJvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptODAgMTY4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptLTE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptMTcwLjIgMjE4LjJDMzE1LjggMzY3LjQgMjgyLjkgMzUyIDI0OCAzNTJzLTY3LjggMTUuNC05MC4yIDQyLjJjLTEzLjUgMTYuMy0zOC4xLTQuMi0yNC42LTIwLjVDMTYxLjcgMzM5LjYgMjAzLjYgMzIwIDI0OCAzMjBzODYuMyAxOS42IDExNC43IDUzLjhjMTMuNiAxNi4yLTExIDM2LjctMjQuNSAyMC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGdW5uZWxEb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMzLjQ2IDE2NS45NGwxMDEuMi0xMTEuODdDNTU0LjYxIDM0LjEyIDU0MC40OCAwIDUxMi4yNiAwSDMxLjc0QzMuNTIgMC0xMC42MSAzNC4xMiA5LjM0IDU0LjA3TDE5MiAyNTZ2MTU1LjkyYzAgMTIuNTkgNS45MyAyNC40NCAxNiAzMmw3OS45OSA2MGMyMC44NiAxNS42NCA0OC40NyA2Ljk3IDU5LjIyLTEzLjU3QzMxMC44IDQ1NS4zOCAyODggNDA2LjM1IDI4OCAzNTJjMC04OS43OSA2Mi4wNS0xNjUuMTcgMTQ1LjQ2LTE4Ni4wNnpNNDgwIDE5MmMtODguMzcgMC0xNjAgNzEuNjMtMTYwIDE2MHM3MS42MyAxNjAgMTYwIDE2MCAxNjAtNzEuNjMgMTYwLTE2MC03MS42My0xNjAtMTYwLTE2MHptMTYgMjM5Ljg4VjQ0OGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di0xNi4yOWMtMTEuMjktLjU4LTIyLjI3LTQuNTItMzEuMzctMTEuMzUtMy45LTIuOTMtNC4xLTguNzctLjU3LTEyLjE0bDExLjc1LTExLjIxYzIuNzctMi42NCA2Ljg5LTIuNzYgMTAuMTMtLjczIDMuODcgMi40MiA4LjI2IDMuNzIgMTIuODIgMy43MmgyOC4xMWM2LjUgMCAxMS44LTUuOTIgMTEuOC0xMy4xOSAwLTUuOTUtMy42MS0xMS4xOS04Ljc3LTEyLjczbC00NS0xMy41Yy0xOC41OS01LjU4LTMxLjU4LTIzLjQyLTMxLjU4LTQzLjM5IDAtMjQuNTIgMTkuMDUtNDQuNDQgNDIuNjctNDUuMDdWMjU2YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djE2LjI5YzExLjI5LjU4IDIyLjI3IDQuNTEgMzEuMzcgMTEuMzUgMy45IDIuOTMgNC4xIDguNzcuNTcgMTIuMTRsLTExLjc1IDExLjIxYy0yLjc3IDIuNjQtNi44OSAyLjc2LTEwLjEzLjczLTMuODctMi40My04LjI2LTMuNzItMTIuODItMy43MmgtMjguMTFjLTYuNSAwLTExLjggNS45Mi0xMS44IDEzLjE5IDAgNS45NSAzLjYxIDExLjE5IDguNzcgMTIuNzNsNDUgMTMuNWMxOC41OSA1LjU4IDMxLjU4IDIzLjQyIDMxLjU4IDQzLjM5IDAgMjQuNTMtMTkuMDQgNDQuNDQtNDIuNjcgNDUuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZ1dGJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2YzAgMTM2Ljk2Ny0xMTEuMDMzIDI0OC0yNDggMjQ4UzggMzkyLjk2NyA4IDI1NiAxMTkuMDMzIDggMjU2IDhzMjQ4IDExMS4wMzMgMjQ4IDI0OHptLTQ4IDBsLS4wMDMtLjI4Mi0yNi4wNjQgMjIuNzQxLTYyLjY3OS01OC41IDE2LjQ1NC04NC4zNTUgMzQuMzAzIDMuMDcyYy0yNC44ODktMzQuMjE2LTYwLjAwNC02MC4wODktMTAwLjcwOS03My4xNDFsMTMuNjUxIDMxLjkzOUwyNTYgMTM5bC03NC45NTMtNDEuNTI1IDEzLjY1MS0zMS45MzljLTQwLjYzMSAxMy4wMjgtNzUuNzggMzguODctMTAwLjcwOSA3My4xNDFsMzQuNTY1LTMuMDczIDE2LjE5MiA4NC4zNTUtNjIuNjc4IDU4LjUtMjYuMDY0LTIyLjc0MS0uMDAzLjI4MmMwIDQzLjAxNSAxMy40OTcgODMuOTUyIDM4LjQ3MiAxMTcuOTkxbDcuNzA0LTMzLjg5NyA4NS4xMzggMTAuNDQ3IDM2LjMwMSA3Ny44MjYtMjkuOTAyIDE3Ljc4NmM0MC4yMDIgMTMuMTIyIDg0LjI5IDEzLjE0OCAxMjQuNTcyIDBsLTI5LjkwMi0xNy43ODYgMzYuMzAxLTc3LjgyNiA4NS4xMzgtMTAuNDQ3IDcuNzA0IDMzLjg5N0M0NDIuNTAzIDMzOS45NTIgNDU2IDI5OS4wMTUgNDU2IDI1NnptLTI0OC4xMDIgNjkuNTcxbC0yOS44OTQtOTEuMzEyTDI1NiAxNzcuNzMybDc3Ljk5NiA1Ni41MjctMjkuNjIyIDkxLjMxMmgtOTYuNDc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHYW1lcGFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MC4wNyA5NkgxNjBhMTYwIDE2MCAwIDEgMCAxMTQuMjQgMjcyaDkxLjUyQTE2MCAxNjAgMCAxIDAgNDgwLjA3IDk2ek0yNDggMjY4YTEyIDEyIDAgMCAxLTEyIDEyaC01MnY1MmExMiAxMiAwIDAgMS0xMiAxMmgtMjRhMTIgMTIgMCAwIDEtMTItMTJ2LTUySDg0YTEyIDEyIDAgMCAxLTEyLTEydi0yNGExMiAxMiAwIDAgMSAxMi0xMmg1MnYtNTJhMTIgMTIgMCAwIDEgMTItMTJoMjRhMTIgMTIgMCAwIDEgMTIgMTJ2NTJoNTJhMTIgMTIgMCAwIDEgMTIgMTJ6bTIxNiA3NmE0MCA0MCAwIDEgMSA0MC00MCA0MCA0MCAwIDAgMS00MCA0MHptNjQtOTZhNDAgNDAgMCAxIDEgNDAtNDAgNDAgNDAgMCAwIDEtNDAgNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdhc1B1bXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDQ0OEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMjBjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bTE1Ny4yLTM0MC43bC04MS04MWMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBsLTExLjMgMTEuM2MtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZMNDE2IDk3LjlWMTYwYzAgMjguMSAyMC45IDUxLjMgNDggNTUuMlYzNzZjMCAxMy4yLTEwLjggMjQtMjQgMjRzLTI0LTEwLjgtMjQtMjR2LTMyYzAtNDguNi0zOS40LTg4LTg4LTg4aC04VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDk2QzYwLjcgMCAzMiAyOC43IDMyIDY0djM1MmgyODhWMzA0aDhjMjIuMSAwIDQwIDE3LjkgNDAgNDB2MjcuOGMwIDM3LjcgMjcgNzIgNjQuNSA3NS45IDQzIDQuMyA3OS41LTI5LjUgNzkuNS03MS43VjE1Mi42YzAtMTctNi44LTMzLjMtMTguOC00NS4zek0yNTYgMTkySDk2VjY0aDE2MHYxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdhdmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNC45NzEgMTk5LjM2MmwtMjIuNjI3LTIyLjYyN2MtOS4zNzMtOS4zNzMtMjQuNTY5LTkuMzczLTMzLjk0MSAwbC01LjY1NyA1LjY1N0wzMjkuNjA4IDY5LjI1NWw1LjY1Ny01LjY1N2M5LjM3My05LjM3MyA5LjM3My0yNC41NjkgMC0zMy45NDFMMzEyLjYzOCA3LjAyOWMtOS4zNzMtOS4zNzMtMjQuNTY5LTkuMzczLTMzLjk0MSAwTDE1NC4yNDYgMTMxLjQ4Yy05LjM3MyA5LjM3My05LjM3MyAyNC41NjkgMCAzMy45NDFsMjIuNjI3IDIyLjYyN2M5LjM3MyA5LjM3MyAyNC41NjkgOS4zNzMgMzMuOTQxIDBsNS42NTctNS42NTcgMzkuNTk4IDM5LjU5OC04MS4wNCA4MS4wNC01LjY1Ny01LjY1N2MtMTIuNDk3LTEyLjQ5Ny0zMi43NTgtMTIuNDk3LTQ1LjI1NSAwTDkuMzczIDQxMi4xMThjLTEyLjQ5NyAxMi40OTctMTIuNDk3IDMyLjc1OCAwIDQ1LjI1NWw0NS4yNTUgNDUuMjU1YzEyLjQ5NyAxMi40OTcgMzIuNzU4IDEyLjQ5NyA0NS4yNTUgMGwxMTQuNzQ1LTExNC43NDVjMTIuNDk3LTEyLjQ5NyAxMi40OTctMzIuNzU4IDAtNDUuMjU1bC01LjY1Ny01LjY1NyA4MS4wNC04MS4wNCAzOS41OTggMzkuNTk4LTUuNjU3IDUuNjU3Yy05LjM3MyA5LjM3My05LjM3MyAyNC41NjkgMCAzMy45NDFsMjIuNjI3IDIyLjYyN2M5LjM3MyA5LjM3MyAyNC41NjkgOS4zNzMgMzMuOTQxIDBsMTI0LjQ1MS0xMjQuNDUxYzkuMzcyLTkuMzcyIDkuMzcyLTI0LjU2OCAwLTMzLjk0MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2VtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4NS41IDBMNTc2IDE2MEg0NzQuOUw0MDUuNyAwaDc5Ljh6bS0xMjggMGw2OS4yIDE2MEgxNDkuM0wyMTguNSAwaDEzOXptLTI2NyAwaDc5LjhsLTY5LjIgMTYwSDBMOTAuNSAwek0wIDE5MmgxMDAuN2wxMjMgMjUxLjdjMS41IDMuMS0yLjcgNS45LTUgMy4zTDAgMTkyem0xNDguMiAwaDI3OS42bC0xMzcgMzE4LjJjLTEgMi40LTQuNSAyLjQtNS41IDBMMTQ4LjIgMTkyem0yMDQuMSAyNTEuN2wxMjMtMjUxLjdINTc2TDM1Ny4zIDQ0Ni45Yy0yLjMgMi43LTYuNS0uMS01LTMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2VuZGVybGVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjg4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgMTc2YzQ0LjEgMCA4MCAzNS45IDgwIDgwcy0zNS45IDgwLTgwIDgwLTgwLTM1LjktODAtODAgMzUuOS04MCA4MC04MG0wLTY0QzY0LjUgMTEyIDAgMTc2LjUgMCAyNTZzNjQuNSAxNDQgMTQ0IDE0NCAxNDQtNjQuNSAxNDQtMTQ0LTY0LjUtMTQ0LTE0NC0xNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdob3N0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni4xLjA5QzgxLjAxIDMuMjQgMCA5NC45MiAwIDIwMC4wNXYyNjMuOTJjMCAxNC4yNiAxNy4yMyAyMS4zOSAyNy4zMSAxMS4zMWwyNC45Mi0xOC41M2M2LjY2LTQuOTUgMTYtMy45OSAyMS41MSAyLjIxbDQyLjk1IDQ4LjM1YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsNDAuNzItNDUuODVjNi4zNy03LjE3IDE3LjU2LTcuMTcgMjMuOTIgMGw0MC43MiA0NS44NWM2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDQyLjk1LTQ4LjM1YzUuNTEtNi4yIDE0Ljg1LTcuMTcgMjEuNTEtMi4yMWwyNC45MiAxOC41M2MxMC4wOCAxMC4wOCAyNy4zMSAyLjk0IDI3LjMxLTExLjMxVjE5MkMzODQgODQgMjk0LjgzLTMuMTcgMTg2LjEuMDl6TTEyOCAyMjRjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTEyOCAwYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHaWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgxNjBWMzIwSDMydjEyOHptMjU2IDMyaDE2MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMjBIMjg4djE2MHptMTkyLTMyMGgtNDIuMWM2LjItMTIuMSAxMC4xLTI1LjUgMTAuMS00MCAwLTQ4LjUtMzkuNS04OC04OC04OC00MS42IDAtNjguNSAyMS4zLTEwMyA2OC4zLTM0LjUtNDctNjEuNC02OC4zLTEwMy02OC4zLTQ4LjUgMC04OCAzOS41LTg4IDg4IDAgMTQuNSAzLjggMjcuOSAxMC4xIDQwSDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY4MGMwIDguOCA3LjIgMTYgMTYgMTZoNDgwYzguOCAwIDE2LTcuMiAxNi0xNnYtODBjMC0xNy43LTE0LjMtMzItMzItMzJ6bS0zMjYuMSAwYy0yMi4xIDAtNDAtMTcuOS00MC00MHMxNy45LTQwIDQwLTQwYzE5LjkgMCAzNC42IDMuMyA4Ni4xIDgwaC04Ni4xem0yMDYuMSAwaC04Ni4xYzUxLjQtNzYuNSA2NS43LTgwIDg2LjEtODAgMjIuMSAwIDQwIDE3LjkgNDAgNDBzLTE3LjkgNDAtNDAgNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpZnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MC42IDE5NC4xYzEuOS0zMC44IDE3LjMtNjEuMiA0NC03OS44QzI3OS40IDEwMy41IDI2OC43IDk2IDI1NiA5NmgtMjkuNGwzMC43LTIyYzcuMi01LjEgOC45LTE1LjEgMy43LTIyLjNsLTkuMy0xM2MtNS4xLTcuMi0xNS4xLTguOS0yMi4zLTMuN2wtMzIgMjIuOSAxMS41LTMwLjZjMy4xLTguMy0xLjEtMTcuNS05LjQtMjAuNmwtMTUtNS42Yy04LjMtMy4xLTE3LjUgMS4xLTIwLjYgOS40bC0xOS45IDUzLTE5LjktNTMuMUMxMjEgMi4xIDExMS44LTIuMSAxMDMuNSAxbC0xNSA1LjZDODAuMiA5LjcgNzYgMTkgNzkuMiAyNy4ybDExLjUgMzAuNkw1OC42IDM1Yy03LjItNS4xLTE3LjItMy41LTIyLjMgMy43bC05LjMgMTNjLTUuMSA3LjItMy41IDE3LjIgMy43IDIyLjNsMzAuNyAyMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDE2OC45Yy01LjUtOS41LTguOS0yMC4zLTguOS0zMlYyNTZjMC0yOS45IDIwLjgtNTUgNDguNi02MS45ek0yMjQgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDE2MFYzODRIMjI0djk2em0yMjQgMzJoMTYwYzE3LjcgMCAzMi0xNC4zIDMyLTMydi05Nkg0NDh2MTI4em0xNjAtMjg4aC0yMC40YzIuNi03LjYgNC40LTE1LjUgNC40LTIzLjggMC0zNS41LTI3LTcyLjItNzIuMS03Mi4yLTQ4LjEgMC03NS45IDQ3LjctODcuOSA3NS4zLTEyLjEtMjcuNi0zOS45LTc1LjMtODcuOS03NS4zLTQ1LjEgMC03Mi4xIDM2LjctNzIuMSA3Mi4yIDAgOC4zIDEuNyAxNi4yIDQuNCAyMy44SDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZoMTkyVjIyNGgxNS4zbC43LS4yLjcuMkg0NDh2MTI4aDE5MnYtOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6bS0yNzIgMGMtMi43LTEuNC01LjEtMy03LjItNC44LTcuMy02LjQtOC44LTEzLjgtOC44LTE5IDAtOS43IDYuNC0yNC4yIDI0LjEtMjQuMiAxOC43IDAgMzUuNiAyNy40IDQ0LjUgNDhIMzM2em0xOTkuMi00LjhjLTIuMSAxLjgtNC41IDMuNC03LjIgNC44aC01Mi42YzguOC0yMC4zIDI1LjgtNDggNDQuNS00OCAxNy43IDAgMjQuMSAxNC41IDI0LjEgMjQuMiAwIDUuMi0xLjUgMTIuNi04LjggMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsYXNzQ2hlZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzOS40IDQzMy42Yy04LjQtMjAuNC0zMS44LTMwLjEtNTIuMi0yMS42bC0yMi4xIDkuMi0zOC43LTEwMS45YzQ3LjktMzUgNjQuOC0xMDAuMyAzNC41LTE1Mi44TDQ3NC4zIDE2Yy04LTEzLjktMjUuMS0xOS43LTQwLTEzLjZMMzIwIDQ5LjggMjA1LjcgMi40Yy0xNC45LTYuMi0zMi0uMy00MCAxMy42TDc5LjEgMTY2LjVDNDguOSAyMTkgNjUuNyAyODQuMyAxMTMuNiAzMTkuMkw3NC45IDQyMS4xbC0yMi4xLTkuMmMtMjAuNC04LjUtNDMuNyAxLjItNTIuMiAyMS42LTEuNyA0LjEuMiA4LjggNC4zIDEwLjVsMTYyLjMgNjcuNGM0LjEgMS43IDguNy0uMiAxMC40LTQuMyA4LjQtMjAuNC0xLjItNDMuOC0yMS42LTUyLjNsLTIyLjEtOS4yTDE3My4zIDM0MmM0LjQuNSA4LjggMS4zIDEzLjEgMS4zIDUxLjcgMCA5OS40LTMzLjEgMTEzLjQtODUuM2wyMC4yLTc1LjQgMjAuMiA3NS40YzE0IDUyLjIgNjEuNyA4NS4zIDExMy40IDg1LjMgNC4zIDAgOC43LS44IDEzLjEtMS4zTDUwNiA0NDUuNmwtMjIuMSA5LjJjLTIwLjQgOC41LTMwLjEgMzEuOS0yMS42IDUyLjMgMS43IDQuMSA2LjQgNiAxMC40IDQuM0w2MzUuMSA0NDRjNC0xLjcgNi02LjMgNC4zLTEwLjR6TTI3NS45IDE2Mi4xbC0xMTIuMS00Ni41IDM2LjUtNjMuNCA5NC41IDM5LjItMTguOSA3MC43em04OC4yIDBsLTE4LjktNzAuNyA5NC41LTM5LjIgMzYuNSA2My40LTExMi4xIDQ2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsYXNzTWFydGluaUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuMDUgNTcuNkM1MjMuMyAzNi4zNCA1MDguMjUgMCA0NzguMiAwSDMzLjhDMy43NSAwLTExLjMgMzYuMzQgOS45NSA1Ny42TDIyNCAyNzEuNjRWNDY0aC01NmMtMjIuMDkgMC00MCAxNy45MS00MCA0MCAwIDQuNDIgMy41OCA4IDggOGgyNDBjNC40MiAwIDgtMy41OCA4LTggMC0yMi4wOS0xNy45MS00MC00MC00MGgtNTZWMjcxLjY0TDUwMi4wNSA1Ny42ek00NDMuNzcgNDhsLTQ4IDQ4SDExNi4yNGwtNDgtNDhoMzc1LjUzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbGFzc01hcnRpbmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAyLjA1IDU3LjZDNTIzLjMgMzYuMzQgNTA4LjI1IDAgNDc4LjIgMEgzMy44QzMuNzUgMC0xMS4zIDM2LjM0IDkuOTUgNTcuNkwyMjQgMjcxLjY0VjQ2NGgtNTZjLTIyLjA5IDAtNDAgMTcuOTEtNDAgNDAgMCA0LjQyIDMuNTggOCA4IDhoMjQwYzQuNDIgMCA4LTMuNTggOC04IDAtMjIuMDktMTcuOTEtNDAtNDAtNDBoLTU2VjI3MS42NEw1MDIuMDUgNTcuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xhc3NXaGlza2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAzMkgzMkMxMi41IDMyLTIuNCA0OS4yLjMgNjguNWw1NiAzNTYuNWM0LjUgMzEuNSAzMS41IDU0LjkgNjMuNCA1NC45aDI3M2MzMS44IDAgNTguOS0yMy40IDYzLjQtNTQuOWw1NS42LTM1Ni41QzUxNC40IDQ5LjIgNDk5LjUgMzIgNDgwIDMyem0tMzcuNCA2NGwtMzAgMTkyaC0zMTNMNjkuNCA5NmgzNzMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xhc3NlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzQuMSAyODAuMzdMNTI4Ljc1IDk4LjY2Yy01LjkxLTIzLjctMjEuNTktNDQuMDUtNDMtNTUuODEtMjEuNDQtMTEuNzMtNDYuOTctMTQuMTEtNzAuMTktNi4zM2wtMTUuMjUgNS4wOGMtOC4zOSAyLjc5LTEyLjkyIDExLjg2LTEwLjEyIDIwLjI0bDUuMDYgMTUuMThjMi43OSA4LjM4IDExLjg1IDEyLjkxIDIwLjIzIDEwLjEybDEzLjE4LTQuMzljMTAuODctMy42MiAyMy0zLjU3IDMzLjE2IDEuNzMgMTAuMjkgNS4zNyAxNy41NyAxNC41NiAyMC4zNyAyNS44MmwzOC40NiAxNTMuODJjLTIyLjE5LTYuODEtNDkuNzktMTIuNDYtODEuMi0xMi40Ni0zNC43NyAwLTczLjk4IDcuMDItMTE0Ljg1IDI2Ljc0aC03My4xOGMtNDAuODctMTkuNzQtODAuMDgtMjYuNzUtMTE0Ljg2LTI2Ljc1LTMxLjQyIDAtNTkuMDIgNS42NS04MS4yMSAxMi40NmwzOC40Ni0xNTMuODNjMi43OS0xMS4yNSAxMC4wOS0yMC40NSAyMC4zOC0yNS44MSAxMC4xNi01LjMgMjIuMjgtNS4zNSAzMy4xNS0xLjczbDEzLjE3IDQuMzljOC4zOCAyLjc5IDE3LjQ0LTEuNzQgMjAuMjMtMTAuMTJsNS4wNi0xNS4xOGMyLjgtOC4zOC0xLjczLTE3LjQ1LTEwLjEyLTIwLjI0bC0xNS4yNS01LjA4Yy0yMy4yMi03Ljc4LTQ4Ljc1LTUuNDEtNzAuMTkgNi4zMy0yMS40MSAxMS43Ny0zNy4wOSAzMi4xMS00MyA1NS44TDEuOSAyODAuMzdBNjQuMjE4IDY0LjIxOCAwIDAgMCAwIDI5NS44NnY3MC4yNUMwIDQyOS4wMSA1MS41OCA0ODAgMTE1LjIgNDgwaDM3LjEyYzYwLjI4IDAgMTEwLjM3LTQ1Ljk0IDExNC44OC0xMDUuMzdsMi45My0zOC42M2gzNS43NWwyLjkzIDM4LjYzQzMxMy4zMSA0MzQuMDYgMzYzLjQgNDgwIDQyMy42OCA0ODBoMzcuMTJjNjMuNjIgMCAxMTUuMi01MC45OSAxMTUuMi0xMTMuODh2LTcwLjI1YzAtNS4yMy0uNjQtMTAuNDMtMS45LTE1LjV6bS0zNzAuNzIgODkuNDJjLTEuOTcgMjUuOTEtMjQuNCA0Ni4yMS01MS4wNiA0Ni4yMUgxMTUuMkM4Ni45NyA0MTYgNjQgMzkzLjYyIDY0IDM2Ni4xMXYtMzcuNTRjMTguMTItNi40OSA0My40Mi0xMi45MiA3Mi41OC0xMi45MiAyMy44NiAwIDQ3LjI2IDQuMzMgNjkuOTMgMTIuOTJsLTMuMTMgNDEuMjJ6TTUxMiAzNjYuMTJjMCAyNy41MS0yMi45NyA0OS44OC01MS4yIDQ5Ljg4aC0zNy4xMmMtMjYuNjcgMC00OS4xLTIwLjMtNTEuMDYtNDYuMjFsLTMuMTMtNDEuMjJjMjIuNjctOC41OSA0Ni4wOC0xMi45MiA2OS45NS0xMi45MiAyOS4xMiAwIDU0LjQzIDYuNDQgNzIuNTUgMTIuOTN2MzcuNTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsb2JlQWZyaWNhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTE2MCAyMTUuNXY2LjkzYzAgNS44Ny0zLjMyIDExLjI0LTguNTcgMTMuODZsLTE1LjM5IDcuN2ExNS40ODUgMTUuNDg1IDAgMCAxLTE1LjUzLS45N2wtMTguMjEtMTIuMTRhMTUuNTIgMTUuNTIgMCAwIDAtMTMuNS0xLjgxbC0yLjY1Ljg4Yy05LjcgMy4yMy0xMy42NiAxNC43OS03Ljk5IDIzLjNsMTMuMjQgMTkuODZjMi44NyA0LjMxIDcuNzEgNi45IDEyLjg5IDYuOWg4LjIxYzguNTYgMCAxNS41IDYuOTQgMTUuNSAxNS41djExLjM0YzAgMy4zNS0xLjA5IDYuNjItMy4xIDkuM2wtMTguNzQgMjQuOThjLTEuNDIgMS45LTIuMzkgNC4xLTIuODMgNi40M2wtNC4zIDIyLjgzYy0uNjIgMy4yOS0yLjI5IDYuMjktNC43NiA4LjU2YTE1OS42MDggMTU5LjYwOCAwIDAgMC0yNSAyOS4xNmwtMTMuMDMgMTkuNTVhMjcuNzU2IDI3Ljc1NiAwIDAgMS0yMy4wOSAxMi4zNmMtMTAuNTEgMC0yMC4xMi01Ljk0LTI0LjgyLTE1LjM0YTc4LjkwMiA3OC45MDIgMCAwIDEtOC4zMy0zNS4yOVYzNjcuNWMwLTguNTYtNi45NC0xNS41LTE1LjUtMTUuNWgtMjUuODhjLTE0LjQ5IDAtMjguMzgtNS43Ni0zOC42My0xNmE1NC42NTkgNTQuNjU5IDAgMCAxLTE2LTM4LjYzdi0xNC4wNmMwLTE3LjE5IDguMS0zMy4zOCAyMS44NS00My43bDI3LjU4LTIwLjY5YTU0LjY2MyA1NC42NjMgMCAwIDEgMzIuNzgtMTAuOTNoLjg5YzguNDggMCAxNi44NSAxLjk3IDI0LjQzIDUuNzdsMTQuNzIgNy4zNmMzLjY4IDEuODQgNy45MyAyLjE0IDExLjgzLjg0bDQ3LjMxLTE1Ljc3YzYuMzMtMi4xMSAxMC42LTguMDMgMTAuNi0xNC43IDAtOC41Ni02Ljk0LTE1LjUtMTUuNS0xNS41aC0xMC4wOWMtNC4xMSAwLTguMDUtMS42My0xMC45Ni00LjU0bC02LjkyLTYuOTJhMTUuNDkzIDE1LjQ5MyAwIDAgMC0xMC45Ni00LjU0SDE5OS41Yy04LjU2IDAtMTUuNS02Ljk0LTE1LjUtMTUuNXYtNC40YzAtNy4xMSA0Ljg0LTEzLjMxIDExLjc0LTE1LjA0bDE0LjQ1LTMuNjFjMy43NC0uOTQgNy0zLjIzIDkuMTQtNi40NGw4LjA4LTEyLjExYzIuODctNC4zMSA3LjcxLTYuOSAxMi44OS02LjloMjQuMjFjOC41NiAwIDE1LjUtNi45NCAxNS41LTE1LjV2LTIxLjdDMzU5LjIzIDcxLjYzIDQyMi44NiAxMzEuMDIgNDQxLjkzIDIwOEg0MjMuNWMtOC41NiAwLTE1LjUgNi45NC0xNS41IDE1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsb2JlQW1lcmljYXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptODIuMjkgMzU3LjZjLTMuOSAzLjg4LTcuOTkgNy45NS0xMS4zMSAxMS4yOC0yLjk5IDMtNS4xIDYuNy02LjE3IDEwLjcxLTEuNTEgNS42Ni0yLjczIDExLjM4LTQuNzcgMTYuODdsLTE3LjM5IDQ2Ljg1Yy0xMy43NiAzLTI4IDQuNjktNDIuNjUgNC42OXYtMjcuMzhjMS42OS0xMi42Mi03LjY0LTM2LjI2LTIyLjYzLTUxLjI1LTYtNi05LjM3LTE0LjE0LTkuMzctMjIuNjN2LTMyLjAxYzAtMTEuNjQtNi4yNy0yMi4zNC0xNi40Ni0yNy45Ny0xNC4zNy03Ljk1LTM0LjgxLTE5LjA2LTQ4LjgxLTI2LjExLTExLjQ4LTUuNzgtMjIuMS0xMy4xNC0zMS42NS0yMS43NWwtLjgtLjcyYTExNC43OTIgMTE0Ljc5MiAwIDAgMS0xOC4wNi0yMC43NGMtOS4zOC0xMy43Ny0yNC42Ni0zNi40Mi0zNC41OS01MS4xNCAyMC40Ny00NS41IDU3LjM2LTgyLjA0IDEwMy4yLTEwMS44OWwyNC4wMSAxMi4wMUMyMDMuNDggODkuNzQgMjE2IDgyLjAxIDIxNiA3MC4xMXYtMTEuM2M3Ljk5LTEuMjkgMTYuMTItMi4xMSAyNC4zOS0yLjQybDI4LjMgMjguM2M2LjI1IDYuMjUgNi4yNSAxNi4zOCAwIDIyLjYzTDI2NCAxMTJsLTEwLjM0IDEwLjM0Yy0zLjEyIDMuMTItMy4xMiA4LjE5IDAgMTEuMzFsNC42OSA0LjY5YzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtOCA4YTguMDA4IDguMDA4IDAgMCAxLTUuNjYgMi4zNGgtOC45OWMtMi4wOCAwLTQuMDguODEtNS41OCAyLjI3bC05LjkyIDkuNjVhOC4wMDggOC4wMDggMCAwIDAtMS41OCA5LjMxbDE1LjU5IDMxLjE5YzIuNjYgNS4zMi0xLjIxIDExLjU4LTcuMTUgMTEuNThoLTUuNjRjLTEuOTMgMC0zLjc5LS43LTUuMjQtMS45NmwtOS4yOC04LjA2YTE2LjAxNyAxNi4wMTcgMCAwIDAtMTUuNTUtMy4xbC0zMS4xNyAxMC4zOWExMS45NSAxMS45NSAwIDAgMC04LjE3IDExLjM0YzAgNC41MyAyLjU2IDguNjYgNi42MSAxMC42OWwxMS4wOCA1LjU0YzkuNDEgNC43MSAxOS43OSA3LjE2IDMwLjMxIDcuMTZzMjIuNTkgMjcuMjkgMzIgMzJoNjYuNzVjOC40OSAwIDE2LjYyIDMuMzcgMjIuNjMgOS4zN2wxMy42OSAxMy42OWEzMC41MDMgMzAuNTAzIDAgMCAxIDguOTMgMjEuNTcgNDYuNTM2IDQ2LjUzNiAwIDAgMS0xMy43MiAzMi45OHpNNDE3IDI3NC4yNWMtNS43OS0xLjQ1LTEwLjg0LTUtMTQuMTUtOS45N2wtMTcuOTgtMjYuOTdhMjMuOTcgMjMuOTcgMCAwIDEgMC0yNi42MmwxOS41OS0yOS4zOGMyLjMyLTMuNDcgNS41LTYuMjkgOS4yNC04LjE1bDEyLjk4LTYuNDlDNDQwLjIgMTkzLjU5IDQ0OCAyMjMuODcgNDQ4IDI1NmMwIDguNjctLjc0IDE3LjE2LTEuODIgMjUuNTRMNDE3IDI3NC4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xvYmVBc2lhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bS0xMS4zNCAyNDAuMjNjLTIuODkgNC44Mi04LjEgNy43Ny0xMy43MiA3Ljc3aC0uMzFjLTQuMjQgMC04LjMxIDEuNjktMTEuMzEgNC42OWwtNS42NiA1LjY2Yy0zLjEyIDMuMTItMy4xMiA4LjE5IDAgMTEuMzFsNS42NiA1LjY2YzMgMyA0LjY5IDcuMDcgNC42OSAxMS4zMVYzMDRjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTYuMTFjLTYuMDYgMC0xMS42LTMuNDItMTQuMzEtOC44NWwtMjIuNjItNDUuMjNjLTIuNDQtNC44OC04Ljk1LTUuOTQtMTIuODEtMi4wOGwtMTkuNDcgMTkuNDZjLTMgMy03LjA3IDQuNjktMTEuMzEgNC42OUg1MC44MUM0OS4xMiAyNzcuNTUgNDggMjY2LjkyIDQ4IDI1NmMwLTExMC4yOCA4OS43Mi0yMDAgMjAwLTIwMCAyMS41MSAwIDQyLjIgMy41MSA2MS42MyA5LjgybC01MC4xNiAzOC41M2MtNS4xMSAzLjQxLTQuNjMgMTEuMDYuODYgMTMuODFsMTAuODMgNS40MWM1LjQyIDIuNzEgOC44NCA4LjI1IDguODQgMTQuMzFWMjE2YzAgNC40Mi0zLjU4IDgtOCA4aC0zLjA2Yy0zLjAzIDAtNS44LTEuNzEtNy4xNS00LjQyLTEuNTYtMy4xMi01Ljk2LTMuMjktNy43Ni0uM2wtMTcuMzcgMjguOTV6TTQwOCAzNTguNDNjMCA0LjI0LTEuNjkgOC4zMS00LjY5IDExLjMxbC05LjU3IDkuNTdjLTMgMy03LjA3IDQuNjktMTEuMzEgNC42OWgtMTUuMTZjLTQuMjQgMC04LjMxLTEuNjktMTEuMzEtNC42OWwtMTMuMDEtMTMuMDFhMjYuNzY3IDI2Ljc2NyAwIDAgMC0yNS40Mi03LjA0bC0yMS4yNyA1LjMyYy0xLjI3LjMyLTIuNTcuNDgtMy44OC40OGgtMTAuMzRjLTQuMjQgMC04LjMxLTEuNjktMTEuMzEtNC42OWwtMTEuOTEtMTEuOTFhOC4wMDggOC4wMDggMCAwIDEtMi4zNC01LjY2di0xMC4yYzAtMy4yNyAxLjk5LTYuMjEgNS4wMy03LjQzbDM5LjM0LTE1Ljc0YzEuOTgtLjc5IDMuODYtMS44MiA1LjU5LTMuMDVsMjMuNzEtMTYuODlhNy45NzggNy45NzggMCAwIDEgNC42NC0xLjQ4aDEyLjA5YzMuMjMgMCA2LjE1IDEuOTQgNy4zOSA0LjkzbDUuMzUgMTIuODVhNCA0IDAgMCAwIDMuNjkgMi40NmgzLjhjMS43OCAwIDMuMzUtMS4xOCAzLjg0LTIuODhsNC4yLTE0LjQ3Yy41LTEuNzEgMi4wNi0yLjg4IDMuODQtMi44OGg2LjA2YzIuMjEgMCA0IDEuNzkgNCA0djEyLjkzYzAgMi4xMi44NCA0LjE2IDIuMzQgNS42NmwxMS45MSAxMS45MWMzIDMgNC42OSA3LjA3IDQuNjkgMTEuMzF2MjQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xvYmVFdXJvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMjAwIDI0OGMwIDIyLjUtMy45IDQ0LjItMTAuOCA2NC40aC0yMC4zYy00LjMgMC04LjQtMS43LTExLjQtNC44bC0zMi0zMi42Yy00LjUtNC42LTQuNS0xMi4xLjEtMTYuN2wxMi41LTEyLjV2LTguN2MwLTMtMS4yLTUuOS0zLjMtOGwtOS40LTkuNGMtMi4xLTIuMS01LTMuMy04LTMuM2gtMTZjLTYuMiAwLTExLjMtNS4xLTExLjMtMTEuMyAwLTMgMS4yLTUuOSAzLjMtOGw5LjQtOS40YzIuMS0yLjEgNS0zLjMgOC0zLjNoMzJjNi4yIDAgMTEuMy01LjEgMTEuMy0xMS4zdi05LjRjMC02LjItNS4xLTExLjMtMTEuMy0xMS4zaC0zNi43Yy04LjggMC0xNiA3LjItMTYgMTZ2NC41YzAgNi45LTQuNCAxMy0xMC45IDE1LjJsLTMxLjYgMTAuNWMtMy4zIDEuMS01LjUgNC4xLTUuNSA3LjZ2Mi4yYzAgNC40LTMuNiA4LTggOGgtMTZjLTQuNCAwLTgtMy42LTgtOHMtMy42LTgtOC04SDI0N2MtMyAwLTUuOCAxLjctNy4yIDQuNGwtOS40IDE4LjdjLTIuNyA1LjQtOC4yIDguOC0xNC4zIDguOEgxOTRjLTguOCAwLTE2LTcuMi0xNi0xNlYxOTljMC00LjIgMS43LTguMyA0LjctMTEuM2wyMC4xLTIwLjFjNC42LTQuNiA3LjItMTAuOSA3LjItMTcuNSAwLTMuNCAyLjItNi41IDUuNS03LjZsNDAtMTMuM2MxLjctLjYgMy4yLTEuNSA0LjQtMi43bDI2LjgtMjYuOGMyLjEtMi4xIDMuMy01IDMuMy04IDAtNi4yLTUuMS0xMS4zLTExLjMtMTEuM0gyNThsLTE2IDE2djhjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04di0yMGMwLTIuNSAxLjItNC45IDMuMi02LjRsMjguOS0yMS43YzEuOS0uMSAzLjgtLjMgNS43LS4zQzM1OC4zIDU2IDQ0OCAxNDUuNyA0NDggMjU2ek0xMzAuMSAxNDkuMWMwLTMgMS4yLTUuOSAzLjMtOGwyNS40LTI1LjRjMi4xLTIuMSA1LTMuMyA4LTMuMyA2LjIgMCAxMS4zIDUuMSAxMS4zIDExLjN2MTZjMCAzLTEuMiA1LjktMy4zIDhsLTkuNCA5LjRjLTIuMSAyLjEtNSAzLjMtOCAzLjNoLTE2Yy02LjIgMC0xMS4zLTUuMS0xMS4zLTExLjN6bTEyOCAzMDYuNHYtNy4xYzAtOC44LTcuMi0xNi0xNi0xNmgtMjAuMmMtMTAuOCAwLTI2LjctNS4zLTM1LjQtMTEuOGwtMjIuMi0xNi43Yy0xMS41LTguNi0xOC4yLTIyLjEtMTguMi0zNi40di0yMy45YzAtMTYgOC40LTMwLjggMjIuMS0zOWw0Mi45LTI1LjdjNy4xLTQuMiAxNS4yLTYuNSAyMy40LTYuNWgzMS4yYzEwLjkgMCAyMS40IDMuOSAyOS42IDEwLjlsNDMuMiAzNy4xaDE4LjNjOC41IDAgMTYuNiAzLjQgMjIuNiA5LjRsMTcuMyAxNy4zYzMuNCAzLjQgOC4xIDUuMyAxMi45IDUuM0g0MjNjLTMyLjQgNTguOS05My44IDk5LjUtMTY0LjkgMTAzLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsb2JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNi41IDE2MEMzMjIgNzAuNyAyODcuOCA4IDI0OCA4cy03NCA2Mi43LTg4LjUgMTUyaDE3N3pNMTUyIDI1NmMwIDIyLjIgMS4yIDQzLjUgMy4zIDY0aDE4NS4zYzIuMS0yMC41IDMuMy00MS44IDMuMy02NHMtMS4yLTQzLjUtMy4zLTY0SDE1NS4zYy0yLjEgMjAuNS0zLjMgNDEuOC0zLjMgNjR6bTMyNC43LTk2Yy0yOC42LTY3LjktODYuNS0xMjAuNC0xNTgtMTQxLjYgMjQuNCAzMy44IDQxLjIgODQuNyA1MCAxNDEuNmgxMDh6TTE3Ny4yIDE4LjRDMTA1LjggMzkuNiA0Ny44IDkyLjEgMTkuMyAxNjBoMTA4YzguNy01Ni45IDI1LjUtMTA3LjggNDkuOS0xNDEuNnpNNDg3LjQgMTkySDM3Mi43YzIuMSAyMSAzLjMgNDIuNSAzLjMgNjRzLTEuMiA0My0zLjMgNjRoMTE0LjZjNS41LTIwLjUgOC42LTQxLjggOC42LTY0cy0zLjEtNDMuNS04LjUtNjR6TTEyMCAyNTZjMC0yMS41IDEuMi00MyAzLjMtNjRIOC42QzMuMiAyMTIuNSAwIDIzMy44IDAgMjU2czMuMiA0My41IDguNiA2NGgxMTQuNmMtMi0yMS0zLjItNDIuNS0zLjItNjR6bTM5LjUgOTZjMTQuNSA4OS4zIDQ4LjcgMTUyIDg4LjUgMTUyczc0LTYyLjcgODguNS0xNTJoLTE3N3ptMTU5LjMgMTQxLjZjNzEuNC0yMS4yIDEyOS40LTczLjcgMTU4LTE0MS42aC0xMDhjLTguOCA1Ni45LTI1LjYgMTA3LjgtNTAgMTQxLjZ6TTE5LjMgMzUyYzI4LjYgNjcuOSA4Ni41IDEyMC40IDE1OCAxNDEuNi0yNC40LTMzLjgtNDEuMi04NC43LTUwLTE0MS42aC0xMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvbGZCYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0MTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDQxNmgyMjRjMCAxNy43LTE0LjMgMzItMzIgMzJoLTE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYyMGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTIwYzAtMTcuNy0xNC4zLTMyLTMyLTMyaC0xNmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6bTMyMC0yMDhjMCA3NC4yLTM5IDEzOS4yLTk3LjUgMTc2aC0yMjFDMzkgMzQ3LjIgMCAyODIuMiAwIDIwOCAwIDkzLjEgOTMuMSAwIDIwOCAwczIwOCA5My4xIDIwOCAyMDh6bS0xODAuMSA0My45YzE4LjMgMCAzMy4xLTE0LjggMzMuMS0zMy4xIDAtMTQuNC05LjMtMjYuMy0yMi4xLTMwLjkgOS42IDI2LjgtMTUuNiA1MS4zLTQxLjkgNDEuOSA0LjYgMTIuOCAxNi41IDIyLjEgMzAuOSAyMi4xem00OS4xIDQ2LjljMC0xNC40LTkuMy0yNi4zLTIyLjEtMzAuOSA5LjYgMjYuOC0xNS42IDUxLjMtNDEuOSA0MS45IDQuNiAxMi44IDE2LjUgMjIuMSAzMC45IDIyLjEgMTguMyAwIDMzLjEtMTQuOSAzMy4xLTMzLjF6bTY0LTY0YzAtMTQuNC05LjMtMjYuMy0yMi4xLTMwLjkgOS42IDI2LjgtMTUuNiA1MS4zLTQxLjkgNDEuOSA0LjYgMTIuOCAxNi41IDIyLjEgMzAuOSAyMi4xIDE4LjMgMCAzMy4xLTE0LjkgMzMuMS0zMy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb3B1cmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAzNTJoLTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZoLTE2di04MGMwLTguOC03LjItMTYtMTYtMTZoLTE2VjE2YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djE2aC02NFYxNmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnYxNmgtNjRWMTZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2MTZoLTY0VjE2YzAtOC44LTcuMi0xNi0xNi0xNlM5NiA3LjIgOTYgMTZ2MTEySDgwYy04LjggMC0xNiA3LjItMTYgMTZ2ODBINDhjLTguOCAwLTE2IDcuMi0xNiAxNnYxMTJIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYxMjhjMCA4LjggNy4yIDE2IDE2IDE2aDgwVjM1MmgzMlYyMjRoMzJ2LTk2aDMydjk2aC0zMnYxMjhoLTMydjE2MGg4MHYtODBjMC04LjggNy4yLTE2IDE2LTE2aDY0YzguOCAwIDE2IDcuMiAxNiAxNnY4MGg4MFYzNTJoLTMyVjIyNGgtMzJ2LTk2aDMydjk2aDMydjEyOGgzMnYxNjBoODBjOC44IDAgMTYtNy4yIDE2LTE2VjM2OGMwLTguOC03LjItMTYtMTYtMTZ6TTIzMiAxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnY0OGgtNDh6bTU2IDE3NmgtNjR2LTY0YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyYWR1YXRpb25DYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjIyLjM0IDE1My4yTDM0My40IDY3LjVjLTE1LjItNC42Ny0zMS42LTQuNjctNDYuNzkgMEwxNy42NiAxNTMuMmMtMjMuNTQgNy4yMy0yMy41NCAzOC4zNiAwIDQ1LjU5bDQ4LjYzIDE0Ljk0Yy0xMC42NyAxMy4xOS0xNy4yMyAyOS4yOC0xNy44OCA0Ni45QzM4Ljc4IDI2Ni4xNSAzMiAyNzYuMTEgMzIgMjg4YzAgMTAuNzggNS42OCAxOS44NSAxMy44NiAyNS42NUwyMC4zMyA0MjguNTNDMTguMTEgNDM4LjUyIDI1LjcxIDQ0OCAzNS45NCA0NDhoNTYuMTFjMTAuMjQgMCAxNy44NC05LjQ4IDE1LjYyLTE5LjQ3TDgyLjE0IDMxMy42NUM5MC4zMiAzMDcuODUgOTYgMjk4Ljc4IDk2IDI4OGMwLTExLjU3LTYuNDctMjEuMjUtMTUuNjYtMjYuODcuNzYtMTUuMDIgOC40NC0yOC4zIDIwLjY5LTM2LjcyTDI5Ni42IDI4NC41YzkuMDYgMi43OCAyNi40NCA2LjI1IDQ2Ljc5IDBsMjc4Ljk1LTg1LjdjMjMuNTUtNy4yNCAyMy41NS0zOC4zNiAwLTQ1LjZ6TTM1Mi43OSAzMTUuMDljLTI4LjUzIDguNzYtNTIuODQgMy45Mi02NS41OSAwbC0xNDUuMDItNDQuNTVMMTI4IDM4NGMwIDM1LjM1IDg1Ljk2IDY0IDE5MiA2NHMxOTItMjguNjUgMTkyLTY0bC0xNC4xOC0xMTMuNDctMTQ1LjAzIDQ0LjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmVhdGVyVGhhbkVxdWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU1LjIyIDEwNy42OWwxNzUuNTYgNjguMDktMTc1LjQ0IDY4LjA1Yy0xOC4zOSA2LjAzLTI3Ljg4IDI0LjM5LTIxLjIgNDFsMTIuMDkgMzAuMDhjNi42OCAxNi42MSAyNi45OSAyNS4xOSA0NS4zOCAxOS4xNUwzOTMuMDIgMjE0LjJjMTMuNzctNC41MiAyMi45OC0xNi42MSAyMi45OC0zMC4xN3YtMTUuOTZjMC0xMy41Ni05LjIxLTI1LjY1LTIyLjk4LTMwLjE3TDkxLjMgMTcuOTJjLTE4LjI5LTYtMzguNTEgMi41My00NS4xNSAxOS4wNkwzNC4xMiA2Ni45Yy02LjY0IDE2LjUzIDIuODEgMzQuNzkgMjEuMSA0MC43OXpNNDI0IDQwMEgyNGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY0OGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQwMGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di00OGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmVhdGVyVGhhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjUuNTIgMjA5Ljg1TDU5LjIyIDY3LjAxYy0xNi4wNi03LjQ5LTM1LjE1LS41NC00Mi42NCAxNS41MkwzLjAxIDExMS42MWMtNy40OSAxNi4wNi0uNTQgMzUuMTUgMTUuNTIgNDIuNjRMMjM2Ljk2IDI1Ni4xIDE4LjQ5IDM1Ny45OUMyLjQ3IDM2NS40Ni00LjQ2IDM4NC41IDMuMDEgNDAwLjUybDEzLjUyIDI5QzI0IDQ0NS41NCA0My4wNCA0NTIuNDcgNTkuMDYgNDQ1bDMwNi40Ny0xNDIuOTFhMzIuMDAzIDMyLjAwMyAwIDAgMCAxOC40OC0yOXYtMzQuMjNjLS4wMS0xMi40NS03LjIxLTIzLjc2LTE4LjQ5LTI5LjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmltYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTE0NCA0MDBoLThjLTE3LjcgMC0zMi0xNC4zLTMyLTMydi04aDQwdjQwem0wLTU2aC00MHYtOGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg4djQwem0tOC0xMzZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzJ6bTcyIDE5MmgtNDh2LTQwaDQ4djQwem0wLTU2aC00OHYtNDBoNDh2NDB6bTY0IDU2aC00OHYtNDBoNDh2NDB6bTAtNTZoLTQ4di00MGg0OHY0MHptNjQgNTZoLTQ4di00MGg0OHY0MHptMC01NmgtNDh2LTQwaDQ4djQwem0tOC0xMDRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem02NCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJoLTh2LTQwaDQwdjh6bTAtMjRoLTQwdi00MGg4YzE3LjcgMCAzMiAxNC4zIDMyIDMydjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaW5BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptNjMuNyAxMjguN2M3LjYtMTEuNCAyNC43LTExLjcgMzIuNyAwIDEyLjQgMTguNCAxNS4xIDM2LjkgMTUuNyA1NS4zLS41IDE4LjQtMy4zIDM2LjktMTUuNyA1NS4zLTcuNiAxMS40LTI0LjcgMTEuNy0zMi43IDAtMTIuNC0xOC40LTE1LjEtMzYuOS0xNS43LTU1LjMuNS0xOC40IDMuMy0zNi45IDE1LjctNTUuM3ptLTE2MCAwYzcuNi0xMS40IDI0LjctMTEuNyAzMi43IDAgMTIuNCAxOC40IDE1LjEgMzYuOSAxNS43IDU1LjMtLjUgMTguNC0zLjMgMzYuOS0xNS43IDU1LjMtNy42IDExLjQtMjQuNyAxMS43LTMyLjcgMC0xMi40LTE4LjQtMTUuMS0zNi45LTE1LjctNTUuMy41LTE4LjQgMy4zLTM2LjkgMTUuNy01NS4zek0yNDggNDMyYy02MC42IDAtMTM0LjUtMzguMy0xNDMuOC05My4zLTItMTEuOCA5LjMtMjEuNiAyMC43LTE3LjlDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuNC0zLjcgMjIuNiA2LjEgMjAuNyAxNy45LTkuMyA1NS04My4yIDkzLjMtMTQzLjggOTMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpbkJlYW1Td2VhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTA0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTYgMTI4YzI2LjUgMCA0OC0yMSA0OC00NyAwLTIwLTI4LjUtNjAuNC00MS42LTc3LjgtMy4yLTQuMy05LjYtNC4zLTEyLjggMEM0MzYuNSAyMC42IDQwOCA2MSA0MDggODFjMCAyNiAyMS41IDQ3IDQ4IDQ3em0wIDMyYy00NC4xIDAtODAtMzUuNC04MC03OSAwLTQuNC4zLTE0LjIgOC4xLTMyLjJDMzQ1IDIzLjEgMjk4LjMgOCAyNDggOCAxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4YzAtMzUuMS03LjQtNjguNC0yMC41LTk4LjYtNi4zIDEuNS0xMi43IDIuNi0xOS41IDIuNnptLTEyOC04YzIzLjggMCA1Mi43IDI5LjMgNTYgNzEuNC43IDguNi0xMC44IDEyLTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjEgNy40LTE1LjYgNC0xNC45LTQuNSAzLjEtNDIuMSAzMi03MS40IDU1LjgtNzEuNHptLTE2MCAwYzIzLjggMCA1Mi43IDI5LjMgNTYgNzEuNC43IDguNi0xMC44IDEyLTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjIgNy40LTE1LjYgNC0xNC45LTQuNSAzLjEtNDIuMSAzMi03MS40IDU1LjgtNzEuNHptODAgMjgwYy02MC42IDAtMTM0LjUtMzguMy0xNDMuOC05My4zLTItMTEuOCA5LjMtMjEuNiAyMC43LTE3LjlDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuNS0zLjcgMjIuNiA2LjIgMjAuNyAxNy45LTkuMyA1NS04My4yIDkzLjMtMTQzLjggOTMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpbkJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptODAgMTQ0YzIzLjggMCA1Mi43IDI5LjMgNTYgNzEuNC43IDguNi0xMC44IDExLjktMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMSA3LjMtMTUuNiA0LTE0LjktNC41IDMuMS00Mi4xIDMyLTcxLjQgNTUuOC03MS40em0tMTYwIDBjMjMuOCAwIDUyLjcgMjkuMyA1NiA3MS40LjcgOC42LTEwLjggMTEuOS0xNC45IDQuNWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4yIDcuNC0xNS42IDQtMTQuOS00LjUgMy4xLTQyLjEgMzItNzEuNCA1NS44LTcxLjR6bTgwIDI4MGMtNjAuNiAwLTEzNC41LTM4LjMtMTQzLjgtOTMuMy0yLTExLjkgOS40LTIxLjYgMjAuNy0xNy45QzE1NS4xIDMzMC41IDIwMCAzMzYgMjQ4IDMzNnM5Mi45LTUuNSAxMjMuMS0xNS4yYzExLjQtMy43IDIyLjYgNi4xIDIwLjcgMTcuOS05LjMgNTUtODMuMiA5My4zLTE0My44IDkzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaW5IZWFydHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNOTAuNCAxODMuNmM2LjctMTcuNiAyNi43LTI2LjcgNDQuOS0yMS45bDcuMSAxLjkgMi03LjFjNS0xOC4xIDIyLjgtMzAuOSA0MS41LTI3LjkgMjEuNCAzLjQgMzQuNCAyNC4yIDI4LjggNDQuNUwxOTUuMyAyNDNjLTEuMiA0LjUtNS45IDcuMi0xMC41IDZsLTcwLjItMTguMmMtMjAuNC01LjQtMzEuOS0yNy0yNC4yLTQ3LjJ6TTI0OCA0MzJjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS44IDkuMi0yMS41IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS40LTMuNiAyMi42IDYuMSAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zem0xMzMuNC0yMDEuM2wtNzAuMiAxOC4yYy00LjUgMS4yLTkuMi0xLjUtMTAuNS02TDI4MS4zIDE3M2MtNS42LTIwLjMgNy40LTQxLjEgMjguOC00NC41IDE4LjYtMyAzNi40IDkuOCA0MS41IDI3LjlsMiA3LjEgNy4xLTEuOWMxOC4yLTQuNyAzOC4yIDQuMyA0NC45IDIxLjkgNy43IDIwLjMtMy44IDQxLjktMjQuMiA0Ny4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluU3F1aW50VGVhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA5LjYgMTExLjljMjIuNi0zLjIgNzMuNS0xMiA4OC4zLTI2LjggMTkuMi0xOS4yIDE4LjktNTAuNi0uNy03MC4yUzQ0Ni01IDQyNi45IDE0LjJjLTE0LjggMTQuOC0yMy41IDY1LjctMjYuOCA4OC4zLS44IDUuNSAzLjkgMTAuMiA5LjUgOS40ek0xMDIuNCA0MDAuMWMtMjIuNiAzLjItNzMuNSAxMi04OC4zIDI2LjgtMTkuMSAxOS4xLTE4LjggNTAuNi44IDcwLjJzNTEgMTkuOSA3MC4yLjdjMTQuOC0xNC44IDIzLjUtNjUuNyAyNi44LTg4LjMuOC01LjUtMy45LTEwLjItOS41LTkuNHptMzExLjctMjU2LjVjLTMzIDMuOS00OC42LTI1LjEtNDUuNy00NS43IDMuNC0yNCA3LjQtNDIuMSAxMS41LTU2LjVDMjg1LjEtMTMuNCAxNjEuOC0uNSA4MC42IDgwLjYtLjUgMTYxLjctMTMuNCAyODUgNDEuNCAzNzkuOWMxNC40LTQuMSAzMi40LTggNTYuNS0xMS41IDMzLjItMy45IDQ4LjYgMjUuMiA0NS43IDQ1LjctMy40IDI0LTcuNCA0Mi4xLTExLjUgNTYuNSA5NC44IDU0LjggMjE4LjEgNDEuOSAyOTkuMy0zOS4yczk0LTIwNC40IDM5LjItMjk5LjNjLTE0LjQgNC4xLTMyLjUgOC01Ni41IDExLjV6TTI1NS43IDEwNmMzLjMtMTMuMiAyMi40LTExLjUgMjMuNiAxLjhsNC44IDUyLjMgNTIuMyA0LjhjMTMuNCAxLjIgMTQuOSAyMC4zIDEuOCAyMy42bC05MC41IDIyLjZjLTguOSAyLjItMTYuNy01LjktMTQuNS0xNC41bDIyLjUtOTAuNnptLTkwLjkgMjMwLjNMMTYwIDI4NGwtNTIuMy00LjhjLTEzLjQtMS4yLTE0LjktMjAuMy0xLjgtMjMuNmw5MC41LTIyLjZjOC44LTIuMiAxNi43IDUuOCAxNC41IDE0LjVMMTg4LjMgMzM4Yy0zLjEgMTMuMi0yMi4yIDExLjctMjMuNS0xLjd6bTIxNS43IDQ0LjJjLTI5LjMgMjkuMy03NS43IDUwLjQtMTE2LjcgNTAuNC0xOC45IDAtMzYuNi00LjUtNTEtMTQuNy05LjgtNi45LTguNy0yMS44IDItMjcuMiAyOC4zLTE0LjYgNjMuOS00Mi40IDk3LjgtNzYuM3M2MS43LTY5LjYgNzYuMy05Ny44YzUuNC0xMC41IDIwLjItMTEuOSAyNy4zLTIgMzIuMyA0NS4zIDcuMSAxMjQuNy0zNS43IDE2Ny42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluU3F1aW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTMzLjggMTg5LjdsODAtNDhjMTEuNi02LjkgMjQgNy43IDE1LjQgMThMMzQzLjYgMjA4bDMzLjYgNDAuM2M4LjcgMTAuNC0zLjkgMjQuOC0xNS40IDE4bC04MC00OGMtNy43LTQuNy03LjctMTUuOSAwLTIwLjZ6bS0xNjMtMzBjLTguNi0xMC4zIDMuOC0yNC45IDE1LjQtMThsODAgNDhjNy44IDQuNyA3LjggMTUuOSAwIDIwLjZsLTgwIDQ4Yy0xMS41IDYuOC0yNC03LjYtMTUuNC0xOGwzMy42LTQwLjMtMzMuNi00MC4zek0yNDggNDMyYy02MC42IDAtMTM0LjUtMzguMy0xNDMuOC05My4zLTItMTEuOSA5LjQtMjEuNiAyMC43LTE3LjlDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuNS0zLjcgMjIuNiA2LjIgMjAuNyAxNy45LTkuMyA1NS04My4yIDkzLjMtMTQzLjggOTMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpblN0YXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTk0LjYgMTY4LjlsMzQuOS01IDE1LjUtMzEuNmMyLjktNS44IDExLTUuOCAxMy45IDBsMTUuNSAzMS42IDM0LjkgNWM2LjIgMSA4LjkgOC42IDQuMyAxMy4ybC0yNS40IDI0LjYgNiAzNC45YzEgNi4yLTUuMyAxMS0xMSA3LjlMMTUyIDIzMy4zbC0zMS4zIDE2LjNjLTUuNyAzLjEtMTItMS43LTExLTcuOWw2LTM0LjktMjUuNC0yNC42Yy00LjYtNC43LTEuOS0xMi4zIDQuMy0xMy4zek0yNDggNDMyYy02MC42IDAtMTM0LjUtMzguMy0xNDMuOC05My4zLTItMTEuOCA5LjMtMjEuNSAyMC43LTE3LjlDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuNS0zLjcgMjIuNiA2LjEgMjAuNyAxNy45LTkuMyA1NS04My4yIDkzLjMtMTQzLjggOTMuM3ptMTU3LjctMjQ5LjlsLTI1LjQgMjQuNiA2IDM0LjljMSA2LjItNS4zIDExLTExIDcuOUwzNDQgMjMzLjNsLTMxLjMgMTYuM2MtNS43IDMuMS0xMi0xLjctMTEtNy45bDYtMzQuOS0yNS40LTI0LjZjLTQuNS00LjYtMS45LTEyLjIgNC4zLTEzLjJsMzQuOS01IDE1LjUtMzEuNmMyLjktNS44IDExLTUuOCAxMy45IDBsMTUuNSAzMS42IDM0LjkgNWM2LjMuOSA5IDguNSA0LjQgMTMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpblRlYXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwMi40IDI1Ni4xYy0yMi42IDMuMi03My41IDEyLTg4LjMgMjYuOC0xOS4xIDE5LjEtMTguOCA1MC42LjggNzAuMnM1MSAxOS45IDcwLjIuN2MxNC44LTE0LjggMjMuNS02NS43IDI2LjgtODguMy44LTUuNS0zLjktMTAuMi05LjUtOS40em01MjMuNCAyNi44Yy0xNC44LTE0LjgtNjUuNy0yMy41LTg4LjMtMjYuOC01LjUtLjgtMTAuMyAzLjktOS41IDkuNSAzLjIgMjIuNiAxMiA3My41IDI2LjggODguMyAxOS4yIDE5LjIgNTAuNiAxOC45IDcwLjItLjdzMjAtNTEuMi44LTcwLjN6bS0xMjkuNC0xMi44Yy0zLjgtMjYuNiAxOS4xLTQ5LjUgNDUuNy00NS43IDguOSAxLjMgMTYuOCAyLjcgMjQuMyA0LjFDNTUyLjcgMTA0LjUgNDQ3LjcgOCAzMjAgOFM4Ny4zIDEwNC41IDczLjYgMjI4LjVjNy41LTEuNCAxNS40LTIuOCAyNC4zLTQuMSAzMy4yLTMuOSA0OC42IDI1LjMgNDUuNyA0NS43LTExLjggODIuMy0yOS45IDEwMC40LTM1LjggMTA2LjQtLjkuOS0yIDEuNi0zIDIuNSA0Mi43IDc0LjYgMTIzIDEyNSAyMTUuMiAxMjVzMTcyLjUtNTAuNCAyMTUuMi0xMjUuMWMtMS0uOS0yLjEtMS41LTMtMi41LTUuOS01LjktMjQtMjQtMzUuOC0xMDYuM3pNNDAwIDE1MmMyMy44IDAgNTIuNyAyOS4zIDU2IDcxLjQuNyA4LjYtMTAuOCAxMi0xNC45IDQuNWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4yIDcuNC0xNS42IDQtMTQuOS00LjUgMy4xLTQyLjEgMzItNzEuNCA1NS44LTcxLjR6bS0xNjAgMGMyMy44IDAgNTIuNyAyOS4zIDU2IDcxLjQuNyA4LjYtMTAuOCAxMi0xNC45IDQuNWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4yIDcuNC0xNS42IDQtMTQuOS00LjUgMy4xLTQyLjEgMzItNzEuNCA1NS44LTcxLjR6bTgwIDI4MGMtNjAuNiAwLTEzNC41LTM4LjMtMTQzLjgtOTMuMy0yLTExLjcgOS4yLTIxLjYgMjAuNy0xNy45QzIyNy4xIDMzMC41IDI3MiAzMzYgMzIwIDMzNnM5Mi45LTUuNSAxMjMuMS0xNS4yYzExLjQtMy43IDIyLjYgNi4xIDIwLjcgMTcuOS05LjMgNTUtODMuMiA5My4zLTE0My44IDkzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaW5Ub25ndWVTcXVpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjkzLjEgMzc0LjZjLTE0LjQtNi41LTMxLjEgMi4yLTM0LjYgMTcuNmwtMS44IDcuOGMtMi4xIDkuMi0xNS4yIDkuMi0xNy4zIDBsLTEuOC03LjhjLTMuNS0xNS40LTIwLjItMjQuMS0zNC42LTE3LjYtLjkuNC4zLS4yLTE4LjkgOS40djYzYzAgMzUuMiAyOCA2NC41IDYzLjEgNjQuOSAzNS43LjUgNjQuOS0yOC40IDY0LjktNjR2LTY0Yy0xOS41LTkuNi0xOC4yLTguOS0xOS05LjN6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2YzAgMTA2LjMgNjcgMTk2LjcgMTYxIDIzMi01LjYtMTIuMi05LTI1LjctOS00MHYtNDUuNWMtMjQuNy0xNi4yLTQzLjUtMzguMS00Ny44LTYzLjgtMi0xMS44IDkuMi0yMS41IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS40LTMuNyAyMi42IDYuMSAyMC43IDE3LjktNC4zIDI1LjctMjMuMSA0Ny42LTQ3LjggNjMuOFY0NDhjMCAxNC4zLTMuNCAyNy44LTkgNDAgOTQtMzUuMyAxNjEtMTI1LjcgMTYxLTIzMkM0OTYgMTE5IDM4NSA4IDI0OCA4em0tMzMuOCAyMTAuM2wtODAgNDhjLTExLjUgNi44LTI0LTcuNi0xNS40LTE4bDMzLjYtNDAuMy0zMy42LTQwLjNjLTguNi0xMC4zIDMuOC0yNC45IDE1LjQtMThsODAgNDhjNy43IDQuNyA3LjcgMTUuOSAwIDIwLjZ6bTE2MyAzMGM4LjcgMTAuNC0zLjkgMjQuOC0xNS40IDE4bC04MC00OGMtNy44LTQuNy03LjgtMTUuOSAwLTIwLjZsODAtNDhjMTEuNy02LjkgMjMuOSA3LjcgMTUuNCAxOEwzNDMuNiAyMDhsMzMuNiA0MC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluVG9uZ3VlV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDQgMTg0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZjMCAxMDYuMyA2NyAxOTYuNyAxNjEgMjMyLTUuNi0xMi4yLTktMjUuNy05LTQwdi00NS41Yy0yNC43LTE2LjItNDMuNS0zOC4xLTQ3LjgtNjMuOC0yLTExLjggOS4zLTIxLjUgMjAuNy0xNy45QzE1NS4xIDMzMC41IDIwMCAzMzYgMjQ4IDMzNnM5Mi45LTUuNSAxMjMuMS0xNS4yYzExLjUtMy43IDIyLjYgNi4xIDIwLjcgMTcuOS00LjMgMjUuNy0yMy4xIDQ3LjYtNDcuOCA2My44VjQ0OGMwIDE0LjMtMy40IDI3LjgtOSA0MCA5NC0zNS4zIDE2MS0xMjUuNyAxNjEtMjMyQzQ5NiAxMTkgMzg1IDggMjQ4IDh6bS01NiAyMjVsLTkuNS04LjVjLTE0LjgtMTMuMi00Ni4yLTEzLjItNjEgMEwxMTIgMjMzYy04LjUgNy40LTIxLjYuMy0xOS44LTEwLjggNC0yNS4yIDM0LjItNDIuMSA1OS45LTQyLjFTMjA4IDE5NyAyMTIgMjIyLjJjMS42IDExLjEtMTEuNiAxOC4yLTIwIDEwLjh6bTE1MiAzOWMtMzUuMyAwLTY0LTI4LjctNjQtNjRzMjguNy02NCA2NC02NCA2NCAyOC43IDY0IDY0LTI4LjcgNjQtNjQgNjR6bS01MC45IDEwMi42Yy0xNC40LTYuNS0zMS4xIDIuMi0zNC42IDE3LjZsLTEuOCA3LjhjLTIuMSA5LjItMTUuMiA5LjItMTcuMyAwbC0xLjgtNy44Yy0zLjUtMTUuNC0yMC4yLTI0LjEtMzQuNi0xNy42LS45LjQuMy0uMi0xOC45IDkuNHY2M2MwIDM1LjIgMjggNjQuNSA2My4xIDY0LjkgMzUuNy41IDY0LjktMjguNCA2NC45LTY0di02NGMtMTkuNS05LjYtMTguMi04LjktMTktOS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluVG9uZ3VlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2YzAgMTA2LjMgNjcgMTk2LjcgMTYxIDIzMi01LjYtMTIuMi05LTI1LjctOS00MHYtNDUuNWMtMjQuNy0xNi4yLTQzLjUtMzguMS00Ny44LTYzLjgtMi0xMS44IDkuMy0yMS41IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS40LTMuNiAyMi42IDYuMSAyMC43IDE3LjktNC4zIDI1LjctMjMuMSA0Ny42LTQ3LjggNjMuOFY0NDhjMCAxNC4zLTMuNCAyNy44LTkgNDAgOTQtMzUuMyAxNjEtMTI1LjcgMTYxLTIzMkM0OTYgMTE5IDM4NSA4IDI0OCA4em0tODAgMjMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTYwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0tMzQuOSAxMzQuNmMtMTQuNC02LjUtMzEuMSAyLjItMzQuNiAxNy42bC0xLjggNy44Yy0yLjEgOS4yLTE1LjIgOS4yLTE3LjMgMGwtMS44LTcuOGMtMy41LTE1LjQtMjAuMi0yNC4xLTM0LjYtMTcuNi0uOS40LjMtLjItMTguOSA5LjR2NjNjMCAzNS4yIDI4IDY0LjUgNjMuMSA2NC45IDM1LjcuNSA2NC45LTI4LjQgNjQuOS02NHYtNjRjLTE5LjUtOS42LTE4LjItOC45LTE5LTkuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpbldpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZjMCAxMzcgMTExIDI0OCAyNDggMjQ4czI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOCAwIDExOSAwIDI1NnptMjAwLTQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMnptMTY4IDI1bC05LjUtOC41Yy0xNC44LTEzLjItNDYuMi0xMy4yLTYxIDBMMjg4IDIzM2MtOC4zIDcuNC0yMS42LjQtMTkuOC0xMC44IDQtMjUuMiAzNC4yLTQyLjEgNTkuOS00Mi4xUzM4NCAxOTcgMzg4IDIyMi4yYzEuNiAxMS0xMS41IDE4LjItMjAgMTAuOHptLTI0My4xIDg3LjhDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuMy0zLjcgMjIuNiA2IDIwLjcgMTcuOS05LjIgNTUtODMuMiA5My4zLTE0My44IDkzLjNzLTEzNC41LTM4LjMtMTQzLjgtOTMuM2MtMi0xMS45IDkuMy0yMS42IDIwLjctMTcuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em04MCAxNjhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem0tMTYwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem04MCAyNTZjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS44IDkuMy0yMS42IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS4zLTMuNyAyMi42IDYuMSAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmlwSG9yaXpvbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAyODhIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0xNjAgMGgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0xNjAgMGgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek05NiA5NkgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTE2MCAwaC02NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTE2MCAwaC02NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaXBMaW5lc1ZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDQ5NlYxNmMwLTguOC03LjItMTYtMTYtMTZINDhjLTguOCAwLTE2IDcuMi0xNiAxNnY0ODBjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnptMTI4IDBWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4MGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmlwTGluZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDI4OEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0ODBjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bTAtMTI4SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4MGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpcFZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDMySDMyQzE0LjMzIDMyIDAgNDYuMzMgMCA2NHY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMCAxNjBIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0wIDE2MEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTI4OCAzMmgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTAgMTYwaC02NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTAgMTYwaC02NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUd1aXRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuNjMgMzlMNDczIDkuMzdhMzIgMzIgMCAwIDAtNDUuMjYgMEwzODEuNDYgNTUuN2EzNS4xNCAzNS4xNCAwIDAgMC04LjUzIDEzLjc5TDM2MC43NyAxMDZsLTc2LjI2IDc2LjI2Yy0xMi4xNi04Ljc2LTI1LjUtMTUuNzQtNDAuMS0xOS4xNC0zMy40NS03Ljc4LTY3LS44OC04OS44OCAyMmE4Mi40NSA4Mi40NSAwIDAgMC0yMC4yNCAzMy40N2MtNiAxOC41Ni0yMy4yMSAzMi42OS00Mi4xNSAzNC40Ni0yMy43IDIuMjctNDUuNzMgMTEuNDUtNjIuNjEgMjguNDRDLTE2LjExIDMyNy03LjkgNDA5IDQ3LjU4IDQ2NC40NVMxODUgNTI4IDIzMC41NiA0ODIuNTJjMTctMTYuODggMjYuMTYtMzguOSAyOC40NS02Mi43MSAxLjc2LTE4Ljg1IDE1Ljg5LTM2LjEzIDM0LjQzLTQyLjE0YTgyLjYgODIuNiAwIDAgMCAzMy40OC0yMC4yNWMyMi44Ny0yMi44OCAyOS43NC01Ni4zNiAyMi04OS43NS0zLjM5LTE0LjY0LTEwLjM3LTI4LTE5LjE2LTQwLjJMNDA2IDE1MS4yM2wzNi40OC0xMi4xNmEzNS4xNCAzNS4xNCAwIDAgMCAxMy43OS04LjUzbDQ2LjMzLTQ2LjMyYTMyIDMyIDAgMCAwIC4wMy00NS4yMnpNMjA4IDM1MmE0OCA0OCAwIDEgMSA0OC00OCA0OCA0OCAwIDAgMS00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggODB2MzUyYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHptLTExMiA0OGgtMzJjLTguODM3IDAtMTYgNy4xNjMtMTYgMTZ2ODBIMTYwdi04MGMwLTguODM3LTcuMTYzLTE2LTE2LTE2aC0zMmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnYyMjRjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmgzMmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di04MGgxMjh2ODBjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmgzMmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2VjE0NGMwLTguODM3LTcuMTYzLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW1idXJnZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1Nkg0OGE0OCA0OCAwIDAgMCAwIDk2aDQxNmE0OCA0OCAwIDAgMCAwLTk2em0xNiAxMjhIMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MTZhNjQgNjQgMCAwIDAgNjQgNjRoMzUyYTY0IDY0IDAgMCAwIDY0LTY0di0xNmExNiAxNiAwIDAgMC0xNi0xNnpNNTguNjQgMjI0aDM5NC43MmMzNC41NyAwIDU0LjYyLTQzLjkgMzQuODItNzUuODhDNDQ4IDgzLjIgMzU5LjU1IDMyLjEgMjU2IDMyYy0xMDMuNTQuMS0xOTIgNTEuMi0yMzIuMTggMTE2LjExQzQgMTgwLjA5IDI0LjA3IDIyNCA1OC42NCAyMjR6TTM4NCAxMTJhMTYgMTYgMCAxIDEtMTYgMTYgMTYgMTYgMCAwIDEgMTYtMTZ6TTI1NiA4MGExNiAxNiAwIDEgMS0xNiAxNiAxNiAxNiAwIDAgMSAxNi0xNnptLTEyOCAzMmExNiAxNiAwIDEgMS0xNiAxNiAxNiAxNiAwIDAgMSAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFtbWVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3MS4zMSAxOTMuOTRsLTIyLjYzLTIyLjYzYy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwbC0xMS4zMSAxMS4zMS0yOC45LTI4LjljNS42My0yMS4zMS4zNi00NC45LTE2LjM1LTYxLjYxbC00NS4yNS00NS4yNWMtNjIuNDgtNjIuNDgtMTYzLjc5LTYyLjQ4LTIyNi4yOCAwbDkwLjUxIDQ1LjI1djE4Ljc1YzAgMTYuOTcgNi43NCAzMy4yNSAxOC43NSA0NS4yNWw0OS4xNCA0OS4xNGMxNi43MSAxNi43MSA0MC4zIDIxLjk4IDYxLjYxIDE2LjM1bDI4LjkgMjguOS0xMS4zMSAxMS4zMWMtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wyMi42MyAyMi42M2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDkwLjUxLTkwLjUxYzYuMjMtNi4yNCA2LjIzLTE2LjM3LS4wMi0yMi42MnptLTI4Ni43Mi0xNS4yYy0zLjctMy43LTYuODQtNy43OS05Ljg1LTExLjk1TDE5LjY0IDQwNC45NmMtMjUuNTcgMjMuODgtMjYuMjYgNjQuMTktMS41MyA4OC45M3M2NS4wNSAyNC4wNSA4OC45My0xLjUzbDIzOC4xMy0yNTUuMDdjLTMuOTYtMi45MS03LjktNS44Ny0xMS40NC05LjQxbC00OS4xNC00OS4xNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFtc2EgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA5LjM0IDMwNy4yNUM1MDQuMjggMjk1LjU2IDQ5Mi43NSAyODggNDgwIDI4OGgtNjRWODBjMC0yMi0xOC00MC00MC00MHMtNDAgMTgtNDAgNDB2MTM0YzAgNS41Mi00LjQ4IDEwLTEwIDEwaC0yMGMtNS41MiAwLTEwLTQuNDgtMTAtMTBWNDBjMC0yMi0xOC00MC00MC00MHMtNDAgMTgtNDAgNDB2MTc0YzAgNS41Mi00LjQ4IDEwLTEwIDEwaC0yMGMtNS41MiAwLTEwLTQuNDgtMTAtMTBWODBjMC0yMi0xOC00MC00MC00MFM5NiA1OCA5NiA4MHYyMDhIMzJjLTEyLjc1IDAtMjQuMjggNy41Ni0yOS4zNCAxOS4yNWEzMS45NjYgMzEuOTY2IDAgMCAwIDUuOTQgMzQuNThsMTAyLjY5IDExMC4wM0MxNDYuOTcgNDkwLjA4IDE5OS42OSA1MTIgMjU2IDUxMnMxMDkuMDMtMjEuOTIgMTQ0LjcyLTYwLjE0TDUwMy40IDM0MS44M2EzMS45NjYgMzEuOTY2IDAgMCAwIDUuOTQtMzQuNTh6TTI1NiA0MTZjLTUzLjAyIDAtOTYtNjQtOTYtNjRzNDIuOTgtNjQgOTYtNjQgOTYgNjQgOTYgNjQtNDIuOTggNjQtOTYgNjR6bTAtOTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJzMTQuMzMgMzIgMzIgMzIgMzItMTQuMzMgMzItMzItMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRIb2xkaW5nSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc1LjMgMjUwLjVjNyA3LjQgMTguNCA3LjQgMjUuNSAwbDEwOC45LTExNC4yYzMxLjYtMzMuMiAyOS44LTg4LjItNS42LTExOC44LTMwLjgtMjYuNy03Ni43LTIxLjktMTA0LjkgNy43TDI4OCAzNi45bC0xMS4xLTExLjZDMjQ4LjctNC40IDIwMi44LTkuMiAxNzIgMTcuNWMtMzUuMyAzMC42LTM3LjIgODUuNi01LjYgMTE4LjhsMTA4LjkgMTE0LjJ6bTI5MCA3Ny42Yy0xMS44LTEwLjctMzAuMi0xMC00Mi42IDBMNDMwLjMgNDAyYy0xMS4zIDkuMS0yNS40IDE0LTQwIDE0SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg3OC4zYzE1LjkgMCAzMC43LTEwLjkgMzMuMy0yNi42IDMuMy0yMC0xMi4xLTM3LjQtMzEuNi0zNy40SDE5MmMtMjcgMC01My4xIDkuMy03NC4xIDI2LjNMNzEuNCAzODRIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnY5NmMwIDguOCA3LjIgMTYgMTYgMTZoMzU2LjhjMTQuNSAwIDI4LjYtNC45IDQwLTE0TDU2NCAzNzdjMTUuMi0xMi4xIDE2LjQtMzUuMyAxLjMtNDguOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEhvbGRpbmdNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1OS44OCwxNzUuODJoNjR2NjRhMTYsMTYsMCwwLDAsMTYsMTZoNjRhMTYsMTYsMCwwLDAsMTYtMTZ2LTY0aDY0YTE2LDE2LDAsMCwwLDE2LTE2di02NGExNiwxNiwwLDAsMC0xNi0xNmgtNjR2LTY0YTE2LDE2LDAsMCwwLTE2LTE2aC02NGExNiwxNiwwLDAsMC0xNiwxNnY2NGgtNjRhMTYsMTYsMCwwLDAtMTYsMTZ2NjRBMTYsMTYsMCwwLDAsMTU5Ljg4LDE3NS44MlpNNTY4LjA3LDMzNi4xM2EzOS45MSwzOS45MSwwLDAsMC01NS45My04LjQ3TDM5Mi40Nyw0MTUuODRIMjcxLjg2YTE2LDE2LDAsMCwxLDAtMzJIMzUwLjFjMTYsMCwzMC43NS0xMC44NywzMy4zNy0yNi42MWEzMi4wNiwzMi4wNiwwLDAsMC0zMS42Mi0zNy4zOGgtMTYwYTExNy43LDExNy43LDAsMCwwLTc0LjEyLDI2LjI1bC00Ni41LDM3Ljc0SDE1Ljg3YTE2LjExLDE2LjExLDAsMCwwLTE2LDE2djk2YTE2LjExLDE2LjExLDAsMCwwLDE2LDE2aDM0N2ExMDQuOCwxMDQuOCwwLDAsMCw2MS43LTIwLjI3TDU1OS42LDM5MkE0MCw0MCwwLDAsMCw1NjguMDcsMzM2LjEzWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kSG9sZGluZ1VzZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzEuMDYsMTQ0LjNsNTQuMjcsMTQuM2E4LjU5LDguNTksMCwwLDEsNi42Myw4LjFjMCw0LjYtNC4wOSw4LjQtOS4xMiw4LjRoLTM1LjZhMzAsMzAsMCwwLDEtMTEuMTktMi4yYy01LjI0LTIuMi0xMS4yOC0xLjctMTUuMywybC0xOSwxNy41YTExLjY4LDExLjY4LDAsMCwwLTIuMjUsMi42NiwxMS40MiwxMS40MiwwLDAsMCwzLjg4LDE1Ljc0LDgzLjc3LDgzLjc3LDAsMCwwLDM0LjUxLDExLjVWMjQwYzAsOC44LDcuODMsMTYsMTcuMzcsMTZoMTcuMzdjOS41NSwwLDE3LjM4LTcuMiwxNy4zOC0xNlYyMjIuNGMzMi45My0zLjYsNTcuODQtMzEsNTMuNS02My0zLjE1LTIzLTIyLjQ2LTQxLjMtNDYuNTYtNDcuN0wyODIuNjgsOTcuNGE4LjU5LDguNTksMCwwLDEtNi42My04LjFjMC00LjYsNC4wOS04LjQsOS4xMi04LjRoMzUuNkEzMCwzMCwwLDAsMSwzMzIsODMuMWM1LjIzLDIuMiwxMS4yOCwxLjcsMTUuMy0ybDE5LTE3LjVBMTEuMzEsMTEuMzEsMCwwLDAsMzY4LjQ3LDYxYTExLjQzLDExLjQzLDAsMCwwLTMuODQtMTUuNzgsODMuODIsODMuODIsMCwwLDAtMzQuNTItMTEuNVYxNmMwLTguOC03LjgyLTE2LTE3LjM3LTE2SDI5NS4zN0MyODUuODIsMCwyNzgsNy4yLDI3OCwxNlYzMy42Yy0zMi44OSwzLjYtNTcuODUsMzEtNTMuNTEsNjNDMjI3LjYzLDExOS42LDI0NywxMzcuOSwyNzEuMDYsMTQ0LjNaTTU2NS4yNywzMjguMWMtMTEuOC0xMC43LTMwLjItMTAtNDIuNiwwTDQzMC4yNyw0MDJhNjMuNjQsNjMuNjQsMCwwLDEtNDAsMTRIMjcyYTE2LDE2LDAsMCwxLDAtMzJoNzguMjljMTUuOSwwLDMwLjcxLTEwLjksMzMuMjUtMjYuNmEzMS4yLDMxLjIsMCwwLDAsLjQ2LTUuNDZBMzIsMzIsMCwwLDAsMzUyLDMyMEgxOTJhMTE3LjY2LDExNy42NiwwLDAsMC03NC4xLDI2LjI5TDcxLjQsMzg0SDE2QTE2LDE2LDAsMCwwLDAsNDAwdjk2YTE2LDE2LDAsMCwwLDE2LDE2SDM3Mi43N2E2NCw2NCwwLDAsMCw0MC0xNEw1NjQsMzc3YTMyLDMyLDAsMCwwLDEuMjgtNDguOVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEhvbGRpbmdXYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMjU2YzUzIDAgOTYtNDIuMSA5Ni05NCAwLTQwLTU3LjEtMTIwLjctODMuMi0xNTUuNi02LjQtOC41LTE5LjItOC41LTI1LjYgMEMyNDkuMSA0MS4zIDE5MiAxMjIgMTkyIDE2MmMwIDUxLjkgNDMgOTQgOTYgOTR6bTI3Ny4zIDcyLjFjLTExLjgtMTAuNy0zMC4yLTEwLTQyLjYgMEw0MzAuMyA0MDJjLTExLjMgOS4xLTI1LjQgMTQtNDAgMTRIMjcyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDc4LjNjMTUuOSAwIDMwLjctMTAuOSAzMy4zLTI2LjYgMy4zLTIwLTEyLjEtMzcuNC0zMS42LTM3LjRIMTkyYy0yNyAwLTUzLjEgOS4zLTc0LjEgMjYuM0w3MS40IDM4NEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNmgzNTYuOGMxNC41IDAgMjguNi00LjkgNDAtMTRMNTY0IDM3N2MxNS4yLTEyLjEgMTYuNC0zNS4zIDEuMy00OC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kSG9sZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjUuMyAzMjguMWMtMTEuOC0xMC43LTMwLjItMTAtNDIuNiAwTDQzMC4zIDQwMmMtMTEuMyA5LjEtMjUuNCAxNC00MCAxNEgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoNzguM2MxNS45IDAgMzAuNy0xMC45IDMzLjMtMjYuNiAzLjMtMjAtMTIuMS0zNy40LTMxLjYtMzcuNEgxOTJjLTI3IDAtNTMuMSA5LjMtNzQuMSAyNi4zTDcxLjQgMzg0SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2aDM1Ni44YzE0LjUgMCAyOC42LTQuOSA0MC0xNEw1NjQgMzc3YzE1LjItMTIuMSAxNi40LTM1LjMgMS4zLTQ4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRMaXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDQ4MGgxOTJWMzYzLjc3OGE5NS45OTggOTUuOTk4IDAgMCAwLTE0LjgzMy01MS4yNjNMMzk4LjEyNyA1NC4zNjhBNDggNDggMCAwIDAgMzU3LjU0NCAzMkgyNEMxMC43NDUgMzIgMCA0Mi43NDUgMCA1NnYxNmMwIDMwLjkyOCAyNS4wNzIgNTYgNTYgNTZoMjI5Ljk4MWMxMi44NDQgMCAyMS41NTYgMTMuMDY3IDE2LjYxNSAyNC45MjNsLTIxLjQxIDUxLjM4NUEzMiAzMiAwIDAgMSAyNTEuNjQ4IDIyNEgxMjhjLTM1LjM0NiAwLTY0IDI4LjY1NC02NCA2NHY4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxNDcuNDA2YTQ3Ljk5NSA0Ny45OTUgMCAwIDEgMjUuNjkyIDcuNDU1bDExMS43NDggNzAuODExQTI0LjAwMSAyNC4wMDEgMCAwIDEgMzg0IDQxOC41MzlWNDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kTWlkZGxlRmluZ2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3OS45MyAzMTcuMTJhMzcuMzMgMzcuMzMgMCAwIDAtMjguMjgtMzYuMTlMNDE2IDI3MnYtNDkuNTljMC0xMS40NC05LjY5LTIxLjI5LTIzLjE1LTIzLjU0bC0zOC40LTYuNEMzMzYuNjMgMTg5LjUgMzIwIDIwMC44NiAzMjAgMjE2djMyYTggOCAwIDAgMS0xNiAwVjUwYzAtMjYuMjgtMjAuMjUtNDkuMi00Ni41Mi01MEE0OCA0OCAwIDAgMCAyMDggNDh2MjAwYTggOCAwIDAgMS0xNiAwdi0zMmMwLTE1LjE1LTE2LjYzLTI2LjUxLTM0LjQ1LTIzLjU0bC0zMC42OCA1LjEyYy0xOCAzLTMwLjg3IDE2LjEyLTMwLjg3IDMxLjM4VjM3NmE4IDggMCAwIDEtMTYgMHYtNzZsLTI3LjM2IDE1QTM3LjM0IDM3LjM0IDAgMCAwIDMyIDM0OC40djczLjQ3YTM3LjMxIDM3LjMxIDAgMCAwIDEwLjkzIDI2LjM5bDMwLjkzIDMwLjkzQTExMiAxMTIgMCAwIDAgMTUzLjA1IDUxMmgyMTVBMTEyIDExMiAwIDAgMCA0ODAgNDAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUGFwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA4Ljc4MSAxMjguMDA3QzM4Ni4zNTYgMTI3LjU3OCAzNjggMTQ2LjM2IDM2OCAxNjguNzlWMjU2aC04Vjc5Ljc5YzAtMjIuNDMtMTguMzU2LTQxLjIxMi00MC43ODEtNDAuNzgzQzI5Ny40ODggMzkuNDIzIDI4MCA1Ny4xNjkgMjgwIDc5djE3N2gtOFY0MC43OUMyNzIgMTguMzYgMjUzLjY0NC0uNDIyIDIzMS4yMTkuMDA3IDIwOS40ODguNDIzIDE5MiAxOC4xNjkgMTkyIDQwdjIxNmgtOFY4MC43OWMwLTIyLjQzLTE4LjM1Ni00MS4yMTItNDAuNzgxLTQwLjc4M0MxMjEuNDg4IDQwLjQyMyAxMDQgNTguMTY5IDEwNCA4MHYyMzUuOTkybC0zMS42NDgtNDMuNTE5Yy0xMi45OTMtMTcuODY2LTM4LjAwOS0yMS44MTctNTUuODc3LTguODIzLTE3Ljg2NSAxMi45OTQtMjEuODE1IDM4LjAxLTguODIyIDU1Ljg3N2wxMjUuNjAxIDE3Mi43MDVBNDggNDggMCAwIDAgMTcyLjA3MyA1MTJoMTk3LjU5YzIyLjI3NCAwIDQxLjYyMi0xNS4zMjQgNDYuNzI0LTM3LjAwNmwyNi41MDgtMTEyLjY2YTE5Mi4wMTEgMTkyLjAxMSAwIDAgMCA1LjEwNC00My45NzVWMTY4Yy4wMDEtMjEuODMxLTE3LjQ4Ny0zOS41NzctMzkuMjE4LTM5Ljk5M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBlYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwOCAyMTZjLTIyLjA5MiAwLTQwIDE3LjkwOS00MCA0MGgtOHYtMzJjMC0yMi4wOTEtMTcuOTA4LTQwLTQwLTQwcy00MCAxNy45MDktNDAgNDB2MzJoLThWNDhjMC0yNi41MS0yMS40OS00OC00OC00OHMtNDggMjEuNDktNDggNDh2MjA4aC0xMy41NzJMOTIuNjg4IDc4LjQ0OUM4Mi45OTQgNTMuNzc0IDU1LjEzNCA0MS42MyAzMC40NjEgNTEuMzI0IDUuNzg3IDYxLjAxNy02LjM1NiA4OC44NzcgMy4zMzcgMTEzLjU1MWw3NC43NjUgMTkwLjM0Mi0zMS4wOSAyNC44NzJjLTE1LjM4MSAxMi4zMDYtMTkuNTE1IDMzLjk3OC05Ljc0MSA1MS4wODFsNjQgMTEyQTM5Ljk5OCAzOS45OTggMCAwIDAgMTM2IDUxMmgyNDBjMTguNTYyIDAgMzQuNjg2LTEyLjc3IDM4LjkzNy0zMC44MzhsMzItMTM2QTM5Ljk3IDM5Ljk3IDAgMCAwIDQ0OCAzMzZ2LTgwYzAtMjIuMDkxLTE3LjkwOC00MC00MC00MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBvaW50RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05MS44MjYgNDY3LjJWMzE3Ljk2NmMtOC4yNDggNS44NDEtMTYuNTU4IDEwLjU3LTI0LjkxOCAxNC4xNTNDMzUuMDk4IDM0NS43NTItLjAxNCAzMjIuMjIyIDAgMjg4Yy4wMDgtMTguNjE2IDEwLjg5Ny0zMi4yMDMgMjkuMDkyLTQwIDI4LjI4Ni0xMi4xMjIgNjQuMzI5LTc4LjY0OCA3Ny4zMjMtMTA3LjUzNCA3Ljk1Ni0xNy44NTcgMjUuNDc5LTI4LjQ1MyA0My44NDUtMjguNDY0bC4wMDEtLjAwMmgxNzEuNTI2YzExLjgxMiAwIDIxLjg5NyA4LjU5NiAyMy43MDMgMjAuMjY5IDcuMjUgNDYuODM3IDM4LjQ4MyA2MS43NiAzOC4zMTUgMTIzLjczMS0uMDA3IDIuNzI0LjE5NSAxMy4yNTQuMTk1IDE2IDAgNTAuNjU0LTIyLjEyMiA4MS41NzQtNzEuMjYzIDcyLjYtOS4yOTcgMTguNTk3LTM5LjQ4NiAzMC43MzgtNjIuMzE1IDE2LjQ1LTIxLjE3NyAyNC42NDUtNTMuODk2IDIyLjYzOS03MC45NDQgNi4yOTlWNDY3LjJjMCAyNC4xNS0yMC4yMDEgNDQuOC00My44MjYgNDQuOC0yMy4yODMgMC00My44MjYtMjEuMzUtNDMuODI2LTQ0Ljh6TTExMiA3MlYyNGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoMTkyYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHY0OGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMTM2Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjR6bTIxMi0yNGMwLTExLjA0Ni04Ljk1NC0yMC0yMC0yMHMtMjAgOC45NTQtMjAgMjAgOC45NTQgMjAgMjAgMjAgMjAtOC45NTQgMjAtMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRQb2ludExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQuOCAxNTUuODI2aDE0OS4yMzRjLTUuODQxLTguMjQ4LTEwLjU3LTE2LjU1OC0xNC4xNTMtMjQuOTE4QzE2Ni4yNDggOTkuMDk4IDE4OS43NzggNjMuOTg2IDIyNCA2NGMxOC42MTYuMDA4IDMyLjIwMyAxMC44OTcgNDAgMjkuMDkyIDEyLjEyMiAyOC4yODYgNzguNjQ4IDY0LjMyOSAxMDcuNTM0IDc3LjMyMyAxNy44NTcgNy45NTYgMjguNDUzIDI1LjQ3OSAyOC40NjQgNDMuODQ1bC4wMDIuMDAxdjE3MS41MjZjMCAxMS44MTItOC41OTYgMjEuODk3LTIwLjI2OSAyMy43MDMtNDYuODM3IDcuMjUtNjEuNzYgMzguNDgzLTEyMy43MzEgMzguMzE1LTIuNzI0LS4wMDctMTMuMjU0LjE5NS0xNiAuMTk1LTUwLjY1NCAwLTgxLjU3NC0yMi4xMjItNzIuNi03MS4yNjMtMTguNTk3LTkuMjk3LTMwLjczOC0zOS40ODYtMTYuNDUtNjIuMzE1LTI0LjY0NS0yMS4xNzctMjIuNjM5LTUzLjg5Ni02LjI5OS03MC45NDRINDQuOGMtMjQuMTUgMC00NC44LTIwLjIwMS00NC44LTQzLjgyNiAwLTIzLjI4MyAyMS4zNS00My44MjYgNDQuOC00My44MjZ6TTQ0MCAxNzZoNDhjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0djE5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRoLTQ4Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRWMjAwYzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNHptMjQgMjEyYzExLjA0NiAwIDIwLTguOTU0IDIwLTIwcy04Ljk1NC0yMC0yMC0yMC0yMCA4Ljk1NC0yMCAyMCA4Ljk1NCAyMCAyMCAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBvaW50UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDE5OS42NTJjMCAyMy42MjUtMjAuNjUgNDMuODI2LTQ0LjggNDMuODI2aC05OS44NTFjMTYuMzQgMTcuMDQ4IDE4LjM0NiA0OS43NjYtNi4yOTkgNzAuOTQ0IDE0LjI4OCAyMi44MjkgMi4xNDcgNTMuMDE3LTE2LjQ1IDYyLjMxNUMzNTMuNTc0IDQyNS44NzggMzIyLjY1NCA0NDggMjcyIDQ0OGMtMi43NDYgMC0xMy4yNzYtLjIwMy0xNi0uMTk1LTYxLjk3MS4xNjgtNzYuODk0LTMxLjA2NS0xMjMuNzMxLTM4LjMxNUMxMjAuNTk2IDQwNy42ODMgMTEyIDM5Ny41OTkgMTEyIDM4NS43ODZWMjE0LjI2MWwuMDAyLS4wMDFjLjAxMS0xOC4zNjYgMTAuNjA3LTM1Ljg4OSAyOC40NjQtNDMuODQ1IDI4Ljg4Ni0xMi45OTQgOTUuNDEzLTQ5LjAzOCAxMDcuNTM0LTc3LjMyMyA3Ljc5Ny0xOC4xOTQgMjEuMzg0LTI5LjA4NCA0MC0yOS4wOTIgMzQuMjIyLS4wMTQgNTcuNzUyIDM1LjA5OCA0NC4xMTkgNjYuOTA4LTMuNTgzIDguMzU5LTguMzEyIDE2LjY3LTE0LjE1MyAyNC45MThINDY3LjJjMjMuNDUgMCA0NC44IDIwLjU0MyA0NC44IDQzLjgyNnpNOTYgMjAwdjE5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMjRjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNFYyMDBjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDQ4YzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHpNNjggMzY4YzAtMTEuMDQ2LTguOTU0LTIwLTIwLTIwcy0yMCA4Ljk1NC0yMCAyMCA4Ljk1NCAyMCAyMCAyMCAyMC04Ljk1NCAyMC0yMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBvaW50VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTM1LjY1MiAwYzIzLjYyNSAwIDQzLjgyNiAyMC42NSA0My44MjYgNDQuOHY5OS44NTFjMTcuMDQ4LTE2LjM0IDQ5Ljc2Ni0xOC4zNDYgNzAuOTQ0IDYuMjk5IDIyLjgyOS0xNC4yODggNTMuMDE3LTIuMTQ3IDYyLjMxNSAxNi40NUMzNjEuODc4IDE1OC40MjYgMzg0IDE4OS4zNDYgMzg0IDI0MGMwIDIuNzQ2LS4yMDMgMTMuMjc2LS4xOTUgMTYgLjE2OCA2MS45NzEtMzEuMDY1IDc2Ljg5NC0zOC4zMTUgMTIzLjczMUMzNDMuNjgzIDM5MS40MDQgMzMzLjU5OSA0MDAgMzIxLjc4NiA0MDBIMTUwLjI2MWwtLjAwMS0uMDAyYy0xOC4zNjYtLjAxMS0zNS44ODktMTAuNjA3LTQzLjg0NS0yOC40NjRDOTMuNDIxIDM0Mi42NDggNTcuMzc3IDI3Ni4xMjIgMjkuMDkyIDI2NCAxMC44OTcgMjU2LjIwMy4wMDggMjQyLjYxNiAwIDIyNGMtLjAxNC0zNC4yMjIgMzUuMDk4LTU3Ljc1MiA2Ni45MDgtNDQuMTE5IDguMzU5IDMuNTgzIDE2LjY3IDguMzEyIDI0LjkxOCAxNC4xNTNWNDQuOGMwLTIzLjQ1IDIwLjU0My00NC44IDQzLjgyNi00NC44ek0xMzYgNDE2aDE5MmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2NDhjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDEzNmMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di00OGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjR6bTE2OCAyOGMtMTEuMDQ2IDAtMjAgOC45NTQtMjAgMjBzOC45NTQgMjAgMjAgMjAgMjAtOC45NTQgMjAtMjAtOC45NTQtMjAtMjAtMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRQb2ludGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAyNDB2OTZjMCAzLjA4NC0uMzU2IDYuMTU5LTEuMDYzIDkuMTYybC0zMiAxMzZDNDEwLjY4NiA0OTkuMjMgMzk0LjU2MiA1MTIgMzc2IDUxMkgxNjhhNDAuMDA0IDQwLjAwNCAwIDAgMS0zMi4zNS0xNi40NzNsLTEyNy45OTctMTc2Yy0xMi45OTMtMTcuODY2LTkuMDQzLTQyLjg4MyA4LjgyMi01NS44NzYgMTcuODY3LTEyLjk5NCA0Mi44ODQtOS4wNDMgNTUuODc3IDguODIzTDEwNCAzMTUuOTkyVjQwYzAtMjIuMDkxIDE3LjkwOC00MCA0MC00MHM0MCAxNy45MDkgNDAgNDB2MjAwaDh2LTQwYzAtMjIuMDkxIDE3LjkwOC00MCA0MC00MHM0MCAxNy45MDkgNDAgNDB2NDBoOHYtMjRjMC0yMi4wOTEgMTcuOTA4LTQwIDQwLTQwczQwIDE3LjkwOSA0MCA0MHYyNGg4YzAtMjIuMDkxIDE3LjkwOC00MCA0MC00MHM0MCAxNy45MDkgNDAgNDB6bS0yNTYgODBoLTh2OTZoOHYtOTZ6bTg4IDBoLTh2OTZoOHYtOTZ6bTg4IDBoLTh2OTZoOHYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRSb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NC44IDgwYy0yNi45LS40LTQ4LjggMjEuMi00OC44IDQ4aC04Vjk2LjhjMC0yNi4zLTIwLjktNDguMy00Ny4yLTQ4LjgtMjYuOS0uNC00OC44IDIxLjItNDguOCA0OHYzMmgtOFY4MC44YzAtMjYuMy0yMC45LTQ4LjMtNDcuMi00OC44LTI2LjktLjQtNDguOCAyMS4yLTQ4LjggNDh2NDhoLThWOTYuOGMwLTI2LjMtMjAuOS00OC4zLTQ3LjItNDguOC0yNi45LS40LTQ4LjggMjEuMi00OC44IDQ4djEzNmwtOC03LjF2LTQ4LjFjMC0yNi4zLTIwLjktNDguMy00Ny4yLTQ4LjhDMjEuOSAxMjcuNiAwIDE0OS4yIDAgMTc2djY2LjRjMCAyNy40IDExLjcgNTMuNSAzMi4yIDcxLjhsMTExLjcgOTkuM2MxMC4yIDkuMSAxNi4xIDIyLjIgMTYuMSAzNS45djYuN2MwIDEzLjMgMTAuNyAyNCAyNCAyNGgyNDBjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTIuOWMwLTEyLjggMi42LTI1LjUgNy41LTM3LjNsNDktMTE2LjNjNS0xMS44IDcuNS0yNC41IDcuNS0zNy4zVjEyOC44YzAtMjYuMy0yMC45LTQ4LjQtNDcuMi00OC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kU2Npc3NvcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE2IDQ0MGMwLTIyLjA5MiAxNy45MDktNDAgNDAtNDB2LThoLTMyYy0yMi4wOTEgMC00MC0xNy45MDgtNDAtNDBzMTcuOTA5LTQwIDQwLTQwaDMydi04SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4aDIwOHYtMTMuNTcybC0xNzcuNTUxLTY5Ljc0Yy0yNC42NzQtOS42OTQtMzYuODE4LTM3LjU1NS0yNy4xMjUtNjIuMjI4IDkuNjkzLTI0LjY3NCAzNy41NTQtMzYuODE3IDYyLjIyOC0yNy4xMjRsMTkwLjM0MiA3NC43NjUgMjQuODcyLTMxLjA5YzEyLjMwNi0xNS4zODEgMzMuOTc4LTE5LjUxNSA1MS4wODEtOS43NDFsMTEyIDY0QTQwLjAwMiA0MC4wMDIgMCAwIDEgNTEyIDE2OHYyNDBjMCAxOC41NjItMTIuNzcgMzQuNjg2LTMwLjgzOCAzOC45MzdsLTEzNiAzMkEzOS45ODIgMzkuOTgyIDAgMCAxIDMzNiA0ODBoLTgwYy0yMi4wOTEgMC00MC0xNy45MDgtNDAtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRTcGFya2xlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDYuNjYsMTcwLjY0bC4wOSwwLDQ5LjU1LTIwLjY1YTcuMzIsNy4zMiwwLDAsMCwzLjY4LTZoMGE3LjI5LDcuMjksMCwwLDAtMy42OC02bC00OS41Ny0yMC42Ny0uMDcsMEw4Niw2Ny42OGE2LjY2LDYuNjYsMCwwLDAtMTEuOTIsMGwtMjAuNyw0OS42My0uMDUsMEwzLjcsMTM4QTcuMjksNy4yOSwwLDAsMCwwLDE0NEgwYTcuMzIsNy4zMiwwLDAsMCwzLjY4LDZMNTMuMjcsMTcwLjZsLjA3LDBMNzQsMjIwLjI2YTYuNjUsNi42NSwwLDAsMCwxMS45MiwwbDIwLjY5LTQ5LjYyWk00NzEuMzgsNDY3LjQxbC0xLS40Mi0xLS41YTM4LjY3LDM4LjY3LDAsMCwxLDAtNjkuMTRsMS0uNDksMS0uNDMsMzcuNDktMTUuNjMsMTUuNjMtMzcuNDguNDEtMSwuNDctLjk1YzMuODUtNy43NCwxMC41OC0xMy42MywxOC4zNS0xNy4zNCwwLTEuMzMuMjUtMi42OS4yNy00VjE0NGEzMiwzMiwwLDAsMC02NCwwdjcyYTgsOCwwLDAsMS04LDhINDU2YTgsOCwwLDAsMS04LThWNjRhMzIsMzIsMCwwLDAtNjQsMFYyMTZhOCw4LDAsMCwxLTgsOEgzNjBhOCw4LDAsMCwxLTgtOFYzMmEzMiwzMiwwLDAsMC02NCwwVjIxNmE4LDgsMCwwLDEtOCw4SDI2NGE4LDgsMCwwLDEtOC04VjY0YTMyLDMyLDAsMCwwLTY0LDB2MjQxbC0yMy41OS0zMi40OWE0MCw0MCwwLDAsMC02NC43MSw0Ny4wOUwyMjkuMyw0OTIuMjFBNDguMDcsNDguMDcsMCwwLDAsMjY4LjA5LDUxMkg0NjUuN2MxOS4yNCwwLDM1LjY1LTExLjczLDQzLjI0LTI4Ljc5bC0uMDctLjE3Wk0zNDkuNzksMzM5LjUyLDMyMCwzNTEuOTNsLTEyLjQyLDI5Ljc4YTQsNCwwLDAsMS03LjE1LDBMMjg4LDM1MS45M2wtMjkuNzktMTIuNDFhNCw0LDAsMCwxLDAtNy4xNkwyODgsMzE5Ljk0bDEyLjQyLTI5Ljc4YTQsNCwwLDAsMSw3LjE1LDBMMzIwLDMxOS45NGwyOS43OSwxMi40MmE0LDQsMCwwLDEsMCw3LjE2Wk02NDAsNDMxLjkxYTcuMjgsNy4yOCwwLDAsMC0zLjY4LTZsLTQ5LjU3LTIwLjY3LS4wNywwTDU2NiwzNTUuNjNhNi42Niw2LjY2LDAsMCwwLTExLjkyLDBsLTIwLjcsNDkuNjMtLjA1LDBMNDgzLjcsNDI2YTcuMjgsNy4yOCwwLDAsMC0zLjY4LDZoMGE3LjI5LDcuMjksMCwwLDAsMy42OCw1Ljk1bDQ5LjU3LDIwLjY3LjA3LDBMNTU0LDUwOC4yMWE2LjY1LDYuNjUsMCwwLDAsMTEuOTIsMGwyMC42OS00OS42MmgwbC4wOSwwLDQ5LjU1LTIwLjY2YTcuMjksNy4yOSwwLDAsMCwzLjY4LTUuOTVoMFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFNwb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMC45MDA1LDE0NS4yNzAyNyw0NDIuNjA0LDQzMi4wOTM5MUExMDMuOTk1MDcsMTAzLjk5NTA3LDAsMCwxLDM0MS40Mzc0NSw1MTJIMjE0LjA3NGExMzUuOTY5NjgsMTM1Ljk2OTY4LDAsMCwxLTkzLjE4NDg5LTM2Ljk1MjkxTDEyLjU5MDcyLDM3My4xMjcyM2EzOS45OTIsMzkuOTkyLDAsMCwxLDU0LjgxMjItNTguMjQ5ODhsNjAuNTkzNDIsNTcuMDI1Mjh2MGEyODMuMjQ4NDksMjgzLjI0ODQ5LDAsMCwwLTExLjY3MDMtODAuNDY3MzRMNzMuNjM3MjYsMTQ3LjM2MDExYTQwLjAwNTc1LDQwLjAwNTc1LDAsMSwxLDc2LjcxODMzLTIyLjcxODdsMzcuMTU0NTgsMTI1LjM5NDc3YTguMzMxMTMsOC4zMzExMywwLDAsMCwxNi4wNTY1Ni00LjQ0MTRMMTUzLjI2MTgzLDQ5Ljk1NDA2QTM5Ljk5NjM4LDM5Ljk5NjM4LDAsMSwxLDIzMC43MzAxNSwzMC4wMTY2bDU2LjA5NDkxLDIxOC4xNTgyNWExMC40MjA0NywxMC40MjA0NywwLDAsMCwyMC4zMDAxOC0uNTAxTDM0NC44MDc2Niw2My45Njk2NmE0MC4wNTIsNDAuMDUyLDAsMCwxLDUxLjMwMjQ1LTMwLjA4OTNjMTkuODYwNzMsNi4yOTk4LDMwLjg2MjYyLDI3LjY3Mzc4LDI2LjY3NTY0LDQ4LjA4NDg3bC0zMy44Mzg2OSwxNjQuOTY2YTcuNTUxNzIsNy41NTE3MiwwLDAsMCwxNC43NDQwNiwzLjI2NjZsMjkuMzk3My0xMjMuNDU4NzRhMzkuOTk0MTQsMzkuOTk0MTQsMCwxLDEsNzcuODEyMDgsMTguNTMxMjFaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzSGVscGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODggMTkySDMzNnY1NmMwIDM5LjctMzIuMyA3Mi03MiA3MnMtNzItMzIuMy03Mi03MlYxMjYuNGwtNjQuOSAzOUMxMDcuOCAxNzYuOSA5NiAxOTcuOCA5NiAyMjAuMnY0Ny4zbC04MCA0Ni4yQy43IDMyMi41LTQuNiAzNDIuMSA0LjMgMzU3LjRsODAgMTM4LjZjOC44IDE1LjMgMjguNCAyMC41IDQzLjcgMTEuN0wyMzEuNCA0NDhIMzY4YzM1LjMgMCA2NC0yOC43IDY0LTY0aDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMydi02NGg4YzEzLjMgMCAyNC0xMC43IDI0LTI0di00OGMwLTEzLjMtMTAuNy0yNC0yNC0yNHptMTQ3LjctMzcuNEw1NTUuNyAxNkM1NDYuOS43IDUyNy4zLTQuNSA1MTIgNC4zTDQwOC42IDY0SDMwNi40Yy0xMiAwLTIzLjcgMy40LTMzLjkgOS43TDIzOSA5NC42Yy05LjQgNS44LTE1IDE2LjEtMTUgMjcuMVYyNDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBzNDAtMTcuOSA0MC00MHYtODhoMTg0YzMwLjkgMCA1NiAyNS4xIDU2IDU2djI4LjVsODAtNDYuMmMxNS4zLTguOSAyMC41LTI4LjQgMTEuNy00My43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc1dhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2LDIyNGE0OCw0OCwwLDEsMC00OC00OEE0OCw0OCwwLDAsMCw0OTYsMjI0Wk0zMTEuNDcsMTc4LjQ1QTU2Ljc3LDU2Ljc3LDAsMCwxLDMyOCwxNzZhNTYsNTYsMCwwLDEsMTksMy40OWwxNS4zNS00OC42MUEyNCwyNCwwLDAsMCwzNDIsOTkuNzRjLTExLjUzLTEuMzUtMjIuMjEsNi40NC0yNS43MSwxNy41MWwtMjAuOSw2Ni4xN1pNOTMuNjUsMzg2LjMzYy44LS4xOSwxLjU0LS41NCwyLjM1LS43MVYzNTkuOTNhMTU2LDE1NiwwLDAsMSwxMDcuMDYtMTQ4bDczLjctMjIuNzZMMzEwLjkyLDgxLjA1YTI0LDI0LDAsMCwwLTIwLjMzLTMxLjExYy0xMS41My0xLjM0LTIyLjIyLDYuNDUtMjUuNzIsMTcuNTJMMjMxLjQyLDE3My44OGE4LDgsMCwwLDEtMTUuMjYtNC44M0wyNTkuNTMsMzEuMjZBMjQsMjQsMCwwLDAsMjM5LjIuMTVDMjI3LjY3LTEuMTksMjE3LDYuNiwyMTMuNDksMTcuNjZMMTY1LjU2LDE2OS4zN2E4LDgsMCwxLDEtMTUuMjYtNC44MmwzOC41Ni0xMjJhMjQsMjQsMCwwLDAtMjAuMzMtMzEuMTFDMTU3LDEwLDE0Ni4zMiwxNy44MywxNDIuODIsMjguOWwtNjAsMTg5Ljg1TDgwLjc2LDE2OC43QTI0LDI0LDAsMCwwLDU2LjksMTQ0LjU1Yy0xMy4yMy0uMDUtMjQuNzIsMTAuNTQtMjQuOSwyMy44NlYyODEuMTRBMTIzLjY5LDEyMy42OSwwLDAsMCw5My42NSwzODYuMzNaTTUxOS4xLDMzNkgzNjBhOCw4LDAsMCwxLDAtMTZINDg4YTI0LDI0LDAsMCwwLDIzLjU0LTI4Ljc2QzUwOS4zNSwyNzkuODQsNDk4LjcxLDI3Miw0ODcuMSwyNzJIMjg4bDQ3LjA5LTE3LjA2YTI0LDI0LDAsMCwwLTE0LjE4LTQ1Ljg4TDIxMy4xOSwyNDIuMzFBMTIzLjg4LDEyMy44OCwwLDAsMCwxMjgsMzYwdjI1LjY1YTc5Ljc4LDc5Ljc4LDAsMCwxLDU4LDEwOC42M0ExMTguOSwxMTguOSwwLDAsMCwyNDgsNTEySDQ1NmEyNCwyNCwwLDAsMCwyMy41NC0yOC43NkM0NzcuMzUsNDcxLjg0LDQ2Ni43MSw0NjQsNDU1LjEsNDY0SDM2MGE4LDgsMCwwLDEsMC0xNkg0ODhhMjQsMjQsMCwwLDAsMjMuNTQtMjguNzZDNTA5LjM1LDQwNy44NCw0OTguNzEsNDAwLDQ4Ny4xLDQwMEgzNjBhOCw4LDAsMCwxLDAtMTZINTIwYTI0LDI0LDAsMCwwLDIzLjU0LTI4Ljc2QzU0MS4zNSwzNDMuODQsNTMwLjcxLDMzNiw1MTkuMSwzMzZaTTQxNiw2NGEzMiwzMiwwLDEsMC0zMi0zMkEzMiwzMiwwLDAsMCw0MTYsNjRaTTExMiw0MTZhNDgsNDgsMCwxLDAsNDgsNDhBNDgsNDgsMCwwLDAsMTEyLDQxNlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA0LjggMjMwLjRjLTEwLjYtMTQuMS0zMC43LTE3LTQ0LjgtNi40LTE0LjEgMTAuNi0xNyAzMC43LTYuNCA0NC44bDM4LjEgNTAuOGM0LjggNi40IDQuMSAxNS4zLTEuNSAyMC45bC0xMi44IDEyLjhjLTYuNyA2LjctMTcuNiA2LjItMjMuNi0xLjFMNjQgMjQ0LjRWOTZjMC0xNy43LTE0LjMtMzItMzItMzJTMCA3OC4zIDAgOTZ2MjE4LjRjMCAxMC45IDMuNyAyMS41IDEwLjUgMzBsMTA0LjEgMTM0LjNjNSA2LjUgOC40IDEzLjkgMTAuNCAyMS43IDEuOCA2LjkgOC4xIDExLjYgMTUuMyAxMS42SDI3MmM4LjggMCAxNi03LjIgMTYtMTZWMzg0YzAtMjcuNy05LTU0LjYtMjUuNi03Ni44bC01Ny42LTc2Ljh6TTYwOCA2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MTQ4LjRsLTg5LjggMTA3LjhjLTYgNy4yLTE3IDcuNy0yMy42IDEuMWwtMTIuOC0xMi44Yy01LjYtNS42LTYuMy0xNC41LTEuNS0yMC45bDM4LjEtNTAuOGMxMC42LTE0LjEgNy43LTM0LjItNi40LTQ0LjgtMTQuMS0xMC42LTM0LjItNy43LTQ0LjggNi40bC01Ny42IDc2LjhDMzYxIDMyOS40IDM1MiAzNTYuMyAzNTIgMzg0djExMmMwIDguOCA3LjIgMTYgMTYgMTZoMTMxLjdjNy4xIDAgMTMuNS00LjcgMTUuMy0xMS42IDItNy44IDUuNC0xNS4yIDEwLjQtMjEuN2wxMDQuMS0xMzQuM2M2LjgtOC41IDEwLjUtMTkuMSAxMC41LTMwVjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc2hha2VBbHRTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTguNTksMTk1LjYsNTA0LjIsMzEzLjhhNjMuNCw2My40LDAsMCwxLDIyLjIxLDM3LjkxSDYyNGExNi4wNSwxNi4wNSwwLDAsMCwxNi0xNlYxNDMuOTFBMTYsMTYsMCwwLDAsNjI0LDEyOEg1MTJMNDU3LjQxLDczLjQxQTMyLDMyLDAsMCwwLDQzNC44LDY0SDM0OC45MWEzMiwzMiwwLDAsMC0yMS42MSw4LjQxbC04OC4xMiw4MC42OC0yNS42OS0xOS44NUwyODkuMDksNjRIMjA1LjNhMzIsMzIsMCwwLDAtMjIuNiw5LjQxbC0yMC4zNCwyMC4zTDQ1LjQ3LDMuMzhBMTYsMTYsMCwwLDAsMjMsNi4xOUwzLjM4LDMxLjQ2QTE2LDE2LDAsMCwwLDYuMTksNTMuOTFMNTk0LjU0LDUwOC42M0ExNiwxNiwwLDAsMCw2MTcsNTA1LjgybDE5LjY0LTI1LjI3YTE2LDE2LDAsMCwwLTIuODEtMjIuNDVMMzAzLjQsMjAyLjcybDMyLjY5LTI5LjkyLDI3LTI0LjdhMTYsMTYsMCwwLDEsMjEuNjEsMjMuNjFaTTE2LDEyOEExNi4wNSwxNi4wNSwwLDAsMCwwLDE0NFYzMzUuOTFhMTYsMTYsMCwwLDAsMTYsMTZIMTQ2LjNsOTAuNSw4MS44OWE2NCw2NCwwLDAsMCw5MC05LjNsLjItLjIsMTcuOTEsMTUuNWEzNy4xNiwzNy4xNiwwLDAsMCw1Mi4yOS01LjM5bDguOC0xMC44MkwyMy41NiwxMjhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzaGFrZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAsMTI4LjIxVjM4NEg2NGEzMiwzMiwwLDAsMCwzMi0zMlYxODRMMjMuODMsMTI4LjIxWk00OCwzMjAuMWExNiwxNiwwLDEsMS0xNiwxNkExNiwxNiwwLDAsMSw0OCwzMjAuMVptODAsMzEuODFoMTguM2w5MC41LDgxLjg5YTY0LDY0LDAsMCwwLDkwLTkuM2wuMi0uMiwxNy45MSwxNS41YTM3LjE2LDM3LjE2LDAsMCwwLDUyLjI5LTUuMzlsOC44LTEwLjgyTDEyOCwyMDguNzJabTQxNi0yMjMuN1YzNTIuMWEzMiwzMiwwLDAsMCwzMiwzMmg2NFYxMjguMjFaTTU5MiwzNTIuMWExNiwxNiwwLDEsMSwxNi0xNkExNiwxNiwwLDAsMSw1OTIsMzUyLjFaTTMwMy4zMywyMDIuNjdsNTkuNTgtNTQuNTdhMTYsMTYsMCwwLDEsMjEuNTksMjMuNjFMMzU4LjQxLDE5NS42LDUwNCwzMTMuOGE3My4wOCw3My4wOCwwLDAsMSw3LjkxLDcuN1YxMjhMNDU3LjMsNzMuNDFBMzEuNzYsMzEuNzYsMCwwLDAsNDM0LjcsNjRIMzQ4LjhhMzEuOTMsMzEuOTMsMCwwLDAtMjEuNiw4LjQxbC04OC4wNyw4MC42NC0yNS42NC0xOS44MUwyODkuMDksNjRIMjA1LjNhMzIsMzIsMCwwLDAtMjIuNiw5LjQxTDE2Mi4zNiw5My43Miw0NS40NywzLjM4QTE2LDE2LDAsMCwwLDIzLDYuMTlMMy4zOCwzMS40NkExNiwxNiwwLDAsMCw2LjE5LDUzLjkxTDU5NC41Myw1MDguNjNBMTYsMTYsMCwwLDAsNjE3LDUwNS44MmwxOS42NS0yNS4yN2ExNiwxNiwwLDAsMC0yLjgyLTIyLjQ1WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc2hha2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM0LjcgNjRoLTg1LjljLTggMC0xNS43IDMtMjEuNiA4LjRsLTk4LjMgOTBjLS4xLjEtLjIuMy0uMy40LTE2LjYgMTUuNi0xNi4zIDQwLjUtMi4xIDU2IDEyLjcgMTMuOSAzOS40IDE3LjYgNTYuMSAyLjcuMS0uMS4zLS4xLjQtLjJsNzkuOS03My4yYzYuNS01LjkgMTYuNy01LjUgMjIuNiAxIDYgNi41IDUuNSAxNi42LTEgMjIuNmwtMjYuMSAyMy45TDUwNCAzMTMuOGMyLjkgMi40IDUuNSA1IDcuOSA3LjdWMTI4bC01NC42LTU0LjZjLTUuOS02LTE0LjEtOS40LTIyLjYtOS40ek01NDQgMTI4LjJ2MjIzLjljMCAxNy43IDE0LjMgMzIgMzIgMzJoNjRWMTI4LjJoLTk2em00OCAyMjMuOWMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2ek0wIDM4NGg2NGMxNy43IDAgMzItMTQuMyAzMi0zMlYxMjguMkgwVjM4NHptNDgtNjMuOWM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNi0xNi03LjItMTYtMTZjMC04LjkgNy4yLTE2IDE2LTE2em00MzUuOSAxOC42TDMzNC42IDIxNy41bC0zMCAyNy41Yy0yOS43IDI3LjEtNzUuMiAyNC41LTEwMS43LTQuNC0yNi45LTI5LjQtMjQuOC03NC45IDQuNC0xMDEuN0wyODkuMSA2NGgtODMuOGMtOC41IDAtMTYuNiAzLjQtMjIuNiA5LjRMMTI4IDEyOHYyMjMuOWgxOC4zbDkwLjUgODEuOWMyNy40IDIyLjMgNjcuNyAxOC4xIDkwLTkuM2wuMi0uMiAxNy45IDE1LjVjMTUuOSAxMyAzOS40IDEwLjUgNTIuMy01LjRsMzEuNC0zOC42IDUuNCA0LjRjMTMuNyAxMS4xIDMzLjkgOS4xIDQ1LTQuN2w5LjUtMTEuN2MxMS4yLTEzLjggOS4xLTMzLjktNC42LTQ1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbnVraWFoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMiAxNjBjLTQuNDIgMC04IDMuNTgtOCA4djEyMGgzMlYxNjhjMC00LjQyLTMuNTgtOC04LThoLTE2em0tNjQgMGMtNC40MiAwLTggMy41OC04IDh2MTIwaDMyVjE2OGMwLTQuNDItMy41OC04LTgtOGgtMTZ6bTIyNCAwYy00LjQyIDAtOCAzLjU4LTggOHYxMjBoMzJWMTY4YzAtNC40Mi0zLjU4LTgtOC04aC0xNnptNjQgMGMtNC40MiAwLTggMy41OC04IDh2MTIwaDMyVjE2OGMwLTQuNDItMy41OC04LTgtOGgtMTZ6bTg4IDhjMC00LjQyLTMuNTgtOC04LThoLTE2Yy00LjQyIDAtOCAzLjU4LTggOHYxMjBoMzJWMTY4em0tNDQwLThjLTQuNDIgMC04IDMuNTgtOCA4djEyMGgzMlYxNjhjMC00LjQyLTMuNTgtOC04LThoLTE2em01MjAgMGgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djExMmMwIDE3LjY3LTE0LjMzIDMyLTMyIDMySDM1MlYxMjhjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxOTJIOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJWMTc2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxMTJjMCA1My4wMiA0Mi45OCA5NiA5NiA5NmgxOTJ2NjRIMTEyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0MTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2SDM1MnYtNjRoMTkyYzUzLjAyIDAgOTYtNDIuOTggOTYtOTZWMTc2YzAtOC44NC03LjE2LTE2LTE2LTE2em0tMTYtMzJjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1M2MDggNDggNjA4IDQ4cy0yNCAzOC42MS0yNCA1My4zM1M1OTQuNzUgMTI4IDYwOCAxMjh6bS01NzYgMGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzMyIDQ4IDMyIDQ4IDggODYuNjEgOCAxMDEuMzMgMTguNzUgMTI4IDMyIDEyOHptMjg4LTQ4YzEzLjI1IDAgMjQtMTEuOTQgMjQtMjYuNjdTMzIwIDAgMzIwIDBzLTI0IDM4LjYxLTI0IDUzLjMzUzMwNi43NSA4MCAzMjAgODB6bS0yMDggNDhjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1MxMTIgNDggMTEyIDQ4cy0yNCAzOC42MS0yNCA1My4zM1M5OC43NSAxMjggMTEyIDEyOHptNjQgMGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzE3NiA0OCAxNzYgNDhzLTI0IDM4LjYxLTI0IDUzLjMzUzE2Mi43NSAxMjggMTc2IDEyOHptNjQgMGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzI0MCA0OCAyNDAgNDhzLTI0IDM4LjYxLTI0IDUzLjMzUzIyNi43NSAxMjggMjQwIDEyOHptMTYwIDBjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1M0MDAgNDggNDAwIDQ4cy0yNCAzOC42MS0yNCA1My4zM1MzODYuNzUgMTI4IDQwMCAxMjh6bTY0IDBjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1M0NjQgNDggNDY0IDQ4cy0yNCAzOC42MS0yNCA1My4zM1M0NTAuNzUgMTI4IDQ2NCAxMjh6bTY0IDBjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1M1MjggNDggNTI4IDQ4cy0yNCAzOC42MS0yNCA1My4zM1M1MTQuNzUgMTI4IDUyOCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhcmRIYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDI4OGMwLTgwLjI1LTQ5LjI4LTE0OC45Mi0xMTkuMTktMTc3LjYyTDMyMCAxOTJWODBhMTYgMTYgMCAwIDAtMTYtMTZoLTk2YTE2IDE2IDAgMCAwLTE2IDE2djExMmwtNDAuODEtODEuNjJDODEuMjggMTM5LjA4IDMyIDIwNy43NSAzMiAyODh2NjRoNDQ4em0xNiA5NkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0ODBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYXNodGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC42NjcgMTgyLjEwOWw3LjE0My00MGMxLjMxMy03LjM1NS00LjM0Mi0xNC4xMDktMTEuODEzLTE0LjEwOWgtNzQuODFsMTQuNjIzLTgxLjg5MUMzNzcuMTIzIDM4Ljc1NCAzNzEuNDY4IDMyIDM2My45OTcgMzJoLTQwLjYzMmExMiAxMiAwIDAgMC0xMS44MTMgOS44OTFMMjk2LjE3NSAxMjhIMTk3LjU0bDE0LjYyMy04MS44OTFDMjEzLjQ3NyAzOC43NTQgMjA3LjgyMiAzMiAyMDAuMzUgMzJoLTQwLjYzMmExMiAxMiAwIDAgMC0xMS44MTMgOS44OTFMMTMyLjUyOCAxMjhINTMuNDMyYTEyIDEyIDAgMCAwLTExLjgxMyA5Ljg5MWwtNy4xNDMgNDBDMzMuMTYzIDE4NS4yNDYgMzguODE4IDE5MiA0Ni4yODkgMTkyaDc0LjgxTDk4LjI0MiAzMjBIMTkuMTQ2YTEyIDEyIDAgMCAwLTExLjgxMyA5Ljg5MWwtNy4xNDMgNDBDLTEuMTIzIDM3Ny4yNDYgNC41MzIgMzg0IDEyLjAwMyAzODRoNzQuODFMNzIuMTkgNDY1Ljg5MUM3MC44NzcgNDczLjI0NiA3Ni41MzIgNDgwIDg0LjAwMyA0ODBoNDAuNjMyYTEyIDEyIDAgMCAwIDExLjgxMy05Ljg5MUwxNTEuODI2IDM4NGg5OC42MzRsLTE0LjYyMyA4MS44OTFDMjM0LjUyMyA0NzMuMjQ2IDI0MC4xNzggNDgwIDI0Ny42NSA0ODBoNDAuNjMyYTEyIDEyIDAgMCAwIDExLjgxMy05Ljg5MUwzMTUuNDcyIDM4NGg3OS4wOTZhMTIgMTIgMCAwIDAgMTEuODEzLTkuODkxbDcuMTQzLTQwYzEuMzEzLTcuMzU1LTQuMzQyLTE0LjEwOS0xMS44MTMtMTQuMTA5aC03NC44MWwyMi44NTctMTI4aDc5LjA5NmExMiAxMiAwIDAgMCAxMS44MTMtOS44OTF6TTI2MS44ODkgMzIwaC05OC42MzRsMjIuODU3LTEyOGg5OC42MzRsLTIyLjg1NyAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhdENvd2JveVNpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjYwLjggMjkxLjA2Yy0yOC42My0yMi45NC02Mi0zNS4wNi05Ni40LTM1LjA2Qzg3IDI1NiAyMS40NyAzMTguNzIgMS40MyA0MTIuMDZjLTMuNTUgMTYuNi0uNDMgMzMuODMgOC41NyA0Ny4zQzE4Ljc1IDQ3Mi40NyAzMS44MyA0ODAgNDUuODggNDgwSDU5MmMtMTAzLjIxIDAtMTU1LTM3LjA3LTIzMy4xOS0xMDQuNDZ6bTIzNC42NS0xOC4yOUw0NjguNCAxMTYuMkE2NCA2NCAwIDAgMCAzOTIgNjQuNDFMMjAwLjg1IDEwNWE2NCA2NCAwIDAgMC01MC4zNSA1NS43OUwxNDMuNjEgMjI2YzYuOS0uODMgMTMuNy0yIDIwLjc5LTIgNDEuNzkgMCA4MiAxNC41NSAxMTcuMjkgNDIuODJsOTggODQuNDhDNDUwLjc2IDQxMi41NCA0OTQuOSA0NDggNTkyIDQ0OGE0OCA0OCAwIDAgMCA0OC00OGMwLTI1LjM5LTI5LjYtMTE5LjMzLTE0NC41NS0xMjcuMjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhdENvd2JveSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTAgMjk2LjlDNDgwLjUxIDIzOS41MSA0NTAuNTEgNjQgMzkyLjMgNjRjLTE0IDAtMjYuNDkgNS45My0zNyAxNGE1OC4yMSA1OC4yMSAwIDAgMS03MC41OCAwYy0xMC41MS04LTIzLTE0LTM3LTE0LTU4LjIgMC04OC4yIDE3NS40Ny05Ny43MSAyMzIuODhDMTg4LjgxIDMwOS40NyAyNDMuNzMgMzIwIDMyMCAzMjBzMTMxLjIzLTEwLjUxIDE3MC0yMy4xem0xNDIuOS0zNy4xOGExNiAxNiAwIDAgMC0xOS43NSAxLjVjLTEgLjktMTAxLjI3IDkwLjc4LTI5My4xNiA5MC43OC0xOTAuODIgMC0yOTIuMjItODkuOTQtMjkzLjI0LTkwLjg0QTE2IDE2IDAgMCAwIDEgMjc4LjUzQzEuNzMgMjgwLjU1IDc4LjMyIDQ4MCAzMjAgNDgwczMxOC4yNy0xOTkuNDUgMzE5LTIwMS40N2ExNiAxNiAwIDAgMC02LjA5LTE4LjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYXRXaXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDQ0OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDgwYzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnptLTMwNC02NGwtNjQtMzIgNjQtMzIgMzItNjQgMzIgNjQgNjQgMzItNjQgMzItMTYgMzJoMjA4bC04Ni40MS0yMDEuNjNhNjMuOTU1IDYzLjk1NSAwIDAgMS0xLjg5LTQ1LjQ1TDQxNiAwIDIyOC40MiAxMDcuMTlhMTI3Ljk4OSAxMjcuOTg5IDAgMCAwLTUzLjQ2IDU5LjE1TDY0IDQxNmgxNDRsLTE2LTMyem02NC0yMjRsMTYtMzIgMTYgMzIgMzIgMTYtMzIgMTYtMTYgMzItMTYtMzItMzItMTYgMzItMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzYgMzA0djk2YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDh2LTk2YzAtMjYuNTEgMjEuNDktNDggNDgtNDhoNDgwYzI2LjUxIDAgNDggMjEuNDkgNDggNDh6bS00OC04MGE3OS41NTcgNzkuNTU3IDAgMCAxIDMwLjc3NyA2LjE2NUw0NjIuMjUgODUuMzc0QTQ4LjAwMyA0OC4wMDMgMCAwIDAgNDIyLjMxMSA2NEgxNTMuNjg5YTQ4IDQ4IDAgMCAwLTM5LjkzOCAyMS4zNzRMMTcuMjIzIDIzMC4xNjVBNzkuNTU3IDc5LjU1NyAwIDAgMSA0OCAyMjRoNDgwem0tNDggOTZjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnptLTk2IDBjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhZFNpZGVDb3VnaFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1NC4xMSwzMTkuMjFjMTkuNTYtMy44MSwzMS42Mi0yNSwyMy4xMS00NC4yMS0yMS00Ny4xMi00OC41LTE1MS43NS03My4xMi0xODYuNzVBMjA4LjEzLDIwOC4xMywwLDAsMCwyMzQuMSwwSDE5MkExOTAuNjQsMTkwLjY0LDAsMCwwLDg0LjE4LDMzLjNMNDUuNDYsMy4zOEExNiwxNiwwLDAsMCwyMyw2LjE5TDMuMzcsMzEuNDZBMTYsMTYsMCwwLDAsNi4xOCw1My45MUw1OTQuNTMsNTA4LjYzQTE2LDE2LDAsMCwwLDYxNyw1MDUuODJsMTkuNjQtMjUuMjdhMTYsMTYsMCwwLDAtMi44MS0yMi40NVpNMzEzLjM5LDIxMC40NSwyNjMuNjEsMTcyYzUuODgtNy4xNCwxNC40My0xMiwyNC4zNi0xMmEzMi4wNiwzMi4wNiwwLDAsMSwzMiwzMkMzMjAsMTk5LDMxNy4yNCwyMDUuMTcsMzEzLjM5LDIxMC40NVpNNjE2LDMwNGEyNCwyNCwwLDEsMC0yNC0yNEEyNCwyNCwwLDAsMCw2MTYsMzA0Wm0tNjQsNjRhMjQsMjQsMCwxLDAtMjQtMjRBMjQsMjQsMCwwLDAsNTUyLDM2OFpNMjg4LDM4NGEzMiwzMiwwLDAsMSwzMi0zMmgxOS41NEwyMC43MywxMDUuNTlBMTkwLjg2LDE5MC44NiwwLDAsMCwwLDE5MmMwLDU2Ljc1LDI0Ljc1LDEwNy42Miw2NCwxNDIuODhWNTEySDI4OFY0ODBoNjRhNjQsNjQsMCwwLDAsNjQtNjRIMzIwQTMyLDMyLDAsMCwxLDI4OCwzODRabTMyOC0yNGEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw2MTYsMzYwWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkU2lkZUNvdWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxNiwzMDRhMjQsMjQsMCwxLDAtMjQtMjRBMjQsMjQsMCwwLDAsNjE2LDMwNFpNNTUyLDQxNmEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw1NTIsNDE2Wm0tNjQtNTZhMjQsMjQsMCwxLDAsMjQsMjRBMjQsMjQsMCwwLDAsNDg4LDM2MFpNNjE2LDQ2NGEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw2MTYsNDY0Wm0wLTEwNGEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw2MTYsMzYwWm0tNjQtNDBhMjQsMjQsMCwxLDAsMjQsMjRBMjQsMjQsMCwwLDAsNTUyLDMyMFptLTc0Ljc4LTQ1Yy0yMS00Ny4xMi00OC41LTE1MS43NS03My4xMi0xODYuNzVBMjA4LjEzLDIwOC4xMywwLDAsMCwyMzQuMSwwSDE5MkM4NiwwLDAsODYsMCwxOTJjMCw1Ni43NSwyNC43NSwxMDcuNjIsNjQsMTQyLjg4VjUxMkgyODhWNDgwaDY0YTY0LDY0LDAsMCwwLDY0LTY0SDMyMGEzMiwzMiwwLDAsMSwwLTY0aDk2VjMyMGgzMkEzMiwzMiwwLDAsMCw0NzcuMjIsMjc1Wk0yODgsMjI0YTMyLDMyLDAsMSwxLDMyLTMyQTMyLjA3LDMyLjA3LDAsMCwxLDI4OCwyMjRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRTaWRlTWFzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uMTUsMTg0LjQyQy0yLjE3LDI0NC4yMSwyMywyOTguMDYsNjQsMzM0Ljg4VjUxMkgyMjRWMzE2LjUxTDMuNjcsMTU2LjI1QTE4Mi4yOCwxODIuMjgsMCwwLDAsLjE1LDE4NC40MlpNNTA5LjIyLDI3NWMtMjEtNDcuMTItNDguNS0xNTEuNzUtNzMuMTItMTg2Ljc1QTIwOC4xMSwyMDguMTEsMCwwLDAsMjY2LjExLDBIMjAwQzExNywwLDQyLjQ4LDUwLjU3LDEzLjI1LDEyMy42NUwyMzkuMjEsMjg4SDUxMS43NkEzMS4zNSwzMS4zNSwwLDAsMCw1MDkuMjIsMjc1Wk0zMjAsMjI0YTMyLDMyLDAsMSwxLDMyLTMyQTMyLjA3LDMyLjA3LDAsMCwxLDMyMCwyMjRabTE2LDE0NEg0OTZsMTYtNDhIMjU2VjUxMkg0MDEuODhhNjQsNjQsMCwwLDAsNjAuNzEtNDMuNzZMNDY0LDQ2NEgzMzZhMTYsMTYsMCwwLDEsMC0zMkg0NzQuNjdsMTAuNjctMzJIMzM2YTE2LDE2LDAsMCwxLDAtMzJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRTaWRlVmlydXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyLDI0MGExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwyNzIsMjQwWm0tNjQtNjRhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMjA4LDE3NlptMzAxLjIsOTljLTIwLjkzLTQ3LjEyLTQ4LjQzLTE1MS43My03My4wNy0xODYuNzVBMjA3LjksMjA3LjksMCwwLDAsMjY2LjA5LDBIMTkyQzg2LDAsMCw4NiwwLDE5MkExOTEuMjMsMTkxLjIzLDAsMCwwLDY0LDMzNC44MVY1MTJIMzIwVjQ0OGg2NGE2NCw2NCwwLDAsMCw2NC02NFYzMjBINDgwQTMyLDMyLDAsMCwwLDUwOS4yLDI3NVpNMzY4LDI0MEgzNTUuODhjLTI4LjUxLDAtNDIuNzksMzQuNDctMjIuNjMsNTQuNjNsOC41OCw4LjU3YTE2LDE2LDAsMSwxLTIyLjYzLDIyLjYzbC04LjU3LTguNThDMjkwLjQ3LDI5Ny4wOSwyNTYsMzExLjM3LDI1NiwzMzkuODhWMzUyYTE2LDE2LDAsMCwxLTMyLDBWMzM5Ljg4YzAtMjguNTEtMzQuNDctNDIuNzktNTQuNjMtMjIuNjNsLTguNTcsOC41OGExNiwxNiwwLDAsMS0yMi42My0yMi42M2w4LjU4LTguNTdjMjAuMTYtMjAuMTYsNS44OC01NC42My0yMi42My01NC42M0gxMTJhMTYsMTYsMCwwLDEsMC0zMmgxMi4xMmMyOC41MSwwLDQyLjc5LTM0LjQ3LDIyLjYzLTU0LjYzbC04LjU4LTguNTdhMTYsMTYsMCwwLDEsMjIuNjMtMjIuNjNsOC41Nyw4LjU4YzIwLjE2LDIwLjE2LDU0LjYzLDUuODgsNTQuNjMtMjIuNjNWOTZhMTYsMTYsMCwwLDEsMzIsMHYxMi4xMmMwLDI4LjUxLDM0LjQ3LDQyLjc5LDU0LjYzLDIyLjYzbDguNTctOC41OGExNiwxNiwwLDAsMSwyMi42MywyMi42M2wtOC41OCw4LjU3QzMxMy4wOSwxNzMuNTMsMzI3LjM3LDIwOCwzNTUuODgsMjA4SDM2OGExNiwxNiwwLDAsMSwwLDMyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA5NnYzMjBoMzJhMTYgMTYgMCAwIDEgMTYgMTZ2MzJhMTYgMTYgMCAwIDEtMTYgMTZIMzIwYTE2IDE2IDAgMCAxLTE2LTE2di0zMmExNiAxNiAwIDAgMSAxNi0xNmgzMlYyODhIMTYwdjEyOGgzMmExNiAxNiAwIDAgMSAxNiAxNnYzMmExNiAxNiAwIDAgMS0xNiAxNkgzMmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoMzJWOTZIMzJhMTYgMTYgMCAwIDEtMTYtMTZWNDhhMTYgMTYgMCAwIDEgMTYtMTZoMTYwYTE2IDE2IDAgMCAxIDE2IDE2djMyYTE2IDE2IDAgMCAxLTE2IDE2aC0zMnYxMjhoMTkyVjk2aC0zMmExNiAxNiAwIDAgMS0xNi0xNlY0OGExNiAxNiAwIDAgMSAxNi0xNmgxNjBhMTYgMTYgMCAwIDEgMTYgMTZ2MzJhMTYgMTYgMCAwIDEtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRwaG9uZXNBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDI4OGgtMTZjLTM1LjM1IDAtNjQgMjguNy02NCA2NC4xMnY2My43NmMwIDM1LjQxIDI4LjY1IDY0LjEyIDY0IDY0LjEyaDE2YzE3LjY3IDAgMzItMTQuMzYgMzItMzIuMDZWMzIwLjA2YzAtMTcuNzEtMTQuMzMtMzIuMDYtMzItMzIuMDZ6bTIwOCAwaC0xNmMtMTcuNjcgMC0zMiAxNC4zNS0zMiAzMi4wNnYxMjcuODhjMCAxNy43IDE0LjMzIDMyLjA2IDMyIDMyLjA2aDE2YzM1LjM1IDAgNjQtMjguNzEgNjQtNjQuMTJ2LTYzLjc2YzAtMzUuNDEtMjguNjUtNjQuMTItNjQtNjQuMTJ6TTI1NiAzMkMxMTIuOTEgMzIgNC41NyAxNTEuMTMgMCAyODh2MTEyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2VjI4OGMwLTExNC42NyA5My4zMy0yMDcuOCAyMDgtMjA3LjgyIDExNC42Ny4wMiAyMDggOTMuMTUgMjA4IDIwNy44MnYxMTJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjg4QzUwNy40MyAxNTEuMTMgMzk5LjA5IDMyIDI1NiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhZHBob25lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJDMTE0LjUyIDMyIDAgMTQ2LjQ5NiAwIDI4OHY0OGEzMiAzMiAwIDAgMCAxNy42ODkgMjguNjIybDE0LjM4MyA3LjE5MUMzNC4wODMgNDMxLjkwMyA4My40MjEgNDgwIDE0NCA0ODBoMjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI4MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTI0Yy0zMS4zNDIgMC01OS42NzEgMTIuODc5LTgwIDMzLjYyN1YyODhjMC0xMDUuODY5IDg2LjEzMS0xOTIgMTkyLTE5MnMxOTIgODYuMTMxIDE5MiAxOTJ2MS42MjdDNDI3LjY3MSAyNjguODc5IDM5OS4zNDIgMjU2IDM2OCAyNTZoLTI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTc2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgyNGM2MC41NzkgMCAxMDkuOTE3LTQ4LjA5OCAxMTEuOTI4LTEwOC4xODdsMTQuMzgyLTcuMTkxQTMyIDMyIDAgMCAwIDUxMiAzMzZ2LTQ4YzAtMTQxLjQ3OS0xMTQuNDk2LTI1Ni0yNTYtMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAyMDhjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMTZjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2NDhjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgxNmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjIwOHptMTc2IDE0NGMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0di00OGMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0aC0xNmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMTJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgxNnpNMjU2IDBDMTEzLjE4IDAgNC41OCAxMTguODMgMCAyNTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtMTE0LjY5IDkzLjMxLTIwOCAyMDgtMjA4czIwOCA5My4zMSAyMDggMjA4aC0uMTJjLjA4IDIuNDMuMTIgMTY1LjcyLjEyIDE2NS43MiAwIDIzLjM1LTE4LjkzIDQyLjI4LTQyLjI4IDQyLjI4SDMyMGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4aC0zMmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OGgxODEuNzJjNDkuODYgMCA5MC4yOC00MC40MiA5MC4yOC05MC4yOFYyNTZDNTA3LjQyIDExOC44MyAzOTguODIgMCAyNTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRCcm9rZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDczLjcgNzMuOGwtMi40LTIuNWMtNDYtNDctMTE4LTUxLjctMTY5LjYtMTQuOEwzMzYgMTU5LjlsLTk2IDY0IDQ4IDEyOC0xNDQtMTQ0IDk2LTY0LTI4LjYtODYuNUMxNTkuNyAxOS42IDg3IDI0IDQwLjcgNzEuNGwtMi40IDIuNEMtMTAuNCAxMjMuNi0xMi41IDIwMi45IDMxIDI1NmwyMTIuMSAyMTguNmM3LjEgNy4zIDE4LjYgNy4zIDI1LjcgMEw0ODEgMjU1LjljNDMuNS01MyA0MS40LTEzMi4zLTcuMy0xODIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDYyLjMgNjIuNkM0MDcuNSAxNS45IDMyNiAyNC4zIDI3NS43IDc2LjJMMjU2IDk2LjVsLTE5LjctMjAuM0MxODYuMSAyNC4zIDEwNC41IDE1LjkgNDkuNyA2Mi42Yy02Mi44IDUzLjYtNjYuMSAxNDkuOC05LjkgMjA3LjlsMTkzLjUgMTk5LjhjMTIuNSAxMi45IDMyLjggMTIuOSA0NS4zIDBsMTkzLjUtMTk5LjhjNTYuMy01OC4xIDUzLTE1NC4zLTkuOC0yMDcuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRiZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMC4yIDI0My44bC00OS43IDk5LjRjLTYgMTIuMS0yMy40IDExLjctMjguOS0uNmwtNTYuOS0xMjYuMy0zMCA3MS43SDYwLjZsMTgyLjUgMTg2LjVjNy4xIDcuMyAxOC42IDcuMyAyNS43IDBMNDUxLjQgMjg4SDM0Mi4zbC0yMi4xLTQ0LjJ6TTQ3My43IDczLjlsLTIuNC0yLjVjLTUxLjUtNTIuNi0xMzUuOC01Mi42LTE4Ny40IDBMMjU2IDEwMGwtMjcuOS0yOC41Yy01MS41LTUyLjctMTM1LjktNTIuNy0xODcuNCAwbC0yLjQgMi40Qy0xMC40IDEyMy43LTEyLjUgMjAzIDMxIDI1NmgxMDIuNGwzNS45LTg2LjJjNS40LTEyLjkgMjMuNi0xMy4yIDI5LjQtLjRsNTguMiAxMjkuMyA0OS05Ny45YzUuOS0xMS44IDIyLjctMTEuOCAyOC42IDBsMjcuNiA1NS4ySDQ4MWM0My41LTUzIDQxLjQtMTMyLjMtNy4zLTE4Mi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWxpY29wdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNCAzODRoMjcyYzE3LjY3IDAgMzItMTQuMzMgMzItMzIgMC0xMjMuNzEtMTAwLjI5LTIyNC0yMjQtMjI0VjY0aDE3NmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNmMwLTguODQtNy4xNi0xNi0xNi0xNkgxNDRjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE3NnY2NEgxMTJMNjguOCA3MC40QzY1Ljc4IDY2LjM3IDYxLjAzIDY0IDU2IDY0SDE2LjAxQzUuNiA2NC0yLjA0IDczLjc4LjQ5IDgzLjg4TDMyIDE5MmwxNjAgNjQgODYuNCAxMTUuMkEzMS45OTIgMzEuOTkyIDAgMCAwIDMwNCAzODR6bTExMi0xODguNDlDNDc4LjU1IDIwOC4zIDUyOC4wMyAyNTcuNDQgNTQwLjc5IDMyMEg0MTZWMTk1LjUxem0yMTkuMzcgMjYzLjNsLTIyLjE1LTIyLjJjLTYuMjUtNi4yNi0xNi4yNC02LjEtMjIuNjQuMDEtNy4wOSA2Ljc3LTEzLjg0IDExLjI1LTI0LjY0IDExLjI1SDI0MGMtOC44NCAwLTE2IDcuMTgtMTYgMTYuMDN2MzIuMDZjMCA4Ljg1IDcuMTYgMTYuMDMgMTYgMTYuMDNoMzI1Ljk0YzE0Ljg4IDAgMzUuMy0uNDcgNjguNDUtMjkuNTIgNy4wMi02LjE0IDcuNTctMTcuMDUuOTgtMjMuNjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpZ2hsaWdodGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NDQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDc5Ljk4TDk5LjkyIDUxMmwzNS40NS0zNS40NS02Ny4wNC02Ny4wNEwwIDQ3OS45OHptMTI0LjYxLTI0MC4wMWEzNi41OTIgMzYuNTkyIDAgMCAwLTEwLjc5IDM4LjFsMTMuMDUgNDIuODMtNTAuOTMgNTAuOTQgOTYuMjMgOTYuMjMgNTAuODYtNTAuODYgNDIuNzQgMTMuMDhjMTMuNzMgNC4yIDI4LjY1LS4wMSAzOC4xNS0xMC43OGwzNS41NS00MS42NC0xNzMuMzQtMTczLjM0LTQxLjUyIDM1LjQ0em00MDMuMzEtMTYwLjdsLTYzLjItNjMuMmMtMjAuNDktMjAuNDktNTMuMzgtMjEuNTItNzUuMTItMi4zNUwxOTAuNTUgMTgzLjY4bDE2OS43NyAxNjkuNzhMNTMwLjI3IDE1NC40YzE5LjE4LTIxLjc0IDE4LjE1LTU0LjYzLTIuMzUtNzUuMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpa2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MC45NSA0NzIuMjNjLTQuMjggMTcuMTYgNi4xNCAzNC41MyAyMy4yOCAzOC44MSAyLjYxLjY2IDUuMjIuOTUgNy44Ljk1IDE0LjMzIDAgMjcuMzctOS43IDMxLjAyLTI0LjIzbDI1LjI0LTEwMC45Ny01Mi43OC01Mi43OC0zNC41NiAxMzguMjJ6bTE0Ljg5LTE5Ni4xMkwxMzcgMTE3YzIuMTktOC40Mi0zLjE0LTE2Ljk1LTExLjkyLTE5LjA2LTQzLjg4LTEwLjUyLTg4LjM1IDE1LjA3LTk5LjMyIDU3LjE3TC40OSAyNTMuMjRjLTIuMTkgOC40MiAzLjE0IDE2Ljk1IDExLjkyIDE5LjA2bDYzLjU2IDE1LjI1YzguNzkgMi4xIDE3LjY4LTMuMDIgMTkuODctMTEuNDR6TTM2OCAxNjBoLTE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmgtMzQuNzVsLTQ2Ljc4LTQ2Ljc4QzI0My4zOCAxMzQuMTEgMjI4LjYxIDEyOCAyMTIuOTEgMTI4Yy0yNy4wMiAwLTUwLjQ3IDE4LjMtNTcuMDMgNDQuNTJsLTI2LjkyIDEwNy43MmEzMi4wMTIgMzIuMDEyIDAgMCAwIDguNDIgMzAuMzlMMjI0IDM5Ny4yNVY0ODBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMnMzMi0xNC4zMyAzMi0zMnYtODIuNzVjMC0xNy4wOS02LjY2LTMzLjE2LTE4Ljc1LTQ1LjI1bC00Ni44Mi00Ni44MmMuMTUtLjUuNDktLjg5LjYyLTEuNDFsMTkuODktNzkuNTcgMjIuNDMgMjIuNDNjNiA2IDE0LjE0IDkuMzggMjIuNjIgOS4zOGg0OHYyNDBjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWMTc2Yy4wMS04Ljg0LTcuMTUtMTYtMTUuOTktMTZ6TTI0MCA5NmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4UzI2Ni41MSAwIDI0MCAwcy00OCAyMS40OS00OCA0OCAyMS40OSA0OCA0OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGlwcG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTgxLjEyIDk2LjJjLTI3LjY3LS4xNS01Mi41IDE3LjU4LTc2LjYgMjYuNjJDNDg5Ljk4IDg4LjI3IDQ1NS44MyA2NCA0MTYgNjRjLTExLjI4IDAtMjEuOTUgMi4zLTMyIDUuODhWNTZjMC0xMy4yNi0xMC43NS0yNC0yNC0yNGgtMTZjLTEzLjI1IDAtMjQgMTAuNzQtMjQgMjR2NDguOThDMjg2LjAxIDc5LjU4IDI0MS4yNCA2NCAxOTIgNjQgODUuOTYgNjQgMCAxMzUuNjQgMCAyMjR2MjQwYzAgOC44NCA3LjE2IDE2IDE2IDE2aDY0YzguODQgMCAxNi03LjE2IDE2LTE2di03MC43OUMxMjguMzUgNDA3LjU3IDE2Ni43MiA0MTYgMjA4IDQxNnM3OS42NS04LjQzIDExMi0yMi43OVY0NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjRjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjg4aDEyOHYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTIuMDJjMC0zNC4wOS0yNC43OS02Ny41OS01OC44OC02Ny43OHpNNDQ4IDE3NmMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNiAxNiA3LjE2IDE2IDE2LTcuMTYgMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpc3RvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0IDI1NS41MzFjLjI1MyAxMzYuNjQtMTExLjE4IDI0OC4zNzItMjQ3LjgyIDI0OC40NjgtNTkuMDE1LjA0Mi0xMTMuMjIzLTIwLjUzLTE1NS44MjItNTQuOTExLTExLjA3Ny04Ljk0LTExLjkwNS0yNS41NDEtMS44MzktMzUuNjA3bDExLjI2Ny0xMS4yNjdjOC42MDktOC42MDkgMjIuMzUzLTkuNTUxIDMxLjg5MS0xLjk4NEMxNzMuMDYyIDQyNS4xMzUgMjEyLjc4MSA0NDAgMjU2IDQ0MGMxMDEuNzA1IDAgMTg0LTgyLjMxMSAxODQtMTg0IDAtMTAxLjcwNS04Mi4zMTEtMTg0LTE4NC0xODQtNDguODE0IDAtOTMuMTQ5IDE4Ljk2OS0xMjYuMDY4IDQ5LjkzMmw1MC43NTQgNTAuNzU0YzEwLjA4IDEwLjA4IDIuOTQxIDI3LjMxNC0xMS4zMTMgMjcuMzE0SDI0Yy04LjgzNyAwLTE2LTcuMTYzLTE2LTE2VjM4LjYyN2MwLTE0LjI1NCAxNy4yMzQtMjEuMzkzIDI3LjMxNC0xMS4zMTRsNDkuMzcyIDQ5LjM3MkMxMjkuMjA5IDM0LjEzNiAxODkuNTUyIDggMjU2IDhjMTM2LjgxIDAgMjQ3Ljc0NyAxMTAuNzggMjQ4IDI0Ny41MzF6bS0xODAuOTEyIDc4Ljc4NGw5LjgyMy0xMi42M2M4LjEzOC0xMC40NjMgNi4yNTMtMjUuNTQyLTQuMjEtMzMuNjc5TDI4OCAyNTYuMzQ5VjE1MmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTE2Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTM1LjY1MWw2NS40MDkgNTAuODc0YzEwLjQ2MyA4LjEzNyAyNS41NDEgNi4yNTMgMzMuNjc5LTQuMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvY2tleVB1Y2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxNjBjMC01MyAxMTQuNi05NiAyNTYtOTZzMjU2IDQzIDI1NiA5Ni0xMTQuNiA5Ni0yNTYgOTZTMCAyMTMgMCAxNjB6bTAgODIuMlYzNTJjMCA1MyAxMTQuNiA5NiAyNTYgOTZzMjU2LTQzIDI1Ni05NlYyNDIuMmMtMTEzLjQgODIuMy0zOTguNSA4Mi40LTUxMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb2xseUJlcnJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAxOTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDgtNDggMjEuNS00OCA0OCAyMS41IDQ4IDQ4IDQ4em0xMTItNDhjMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OC0yMS41LTQ4LTQ4LTQ4LTQ4IDIxLjUtNDggNDh6bS0zMi00OGMyNi41IDAgNDgtMjEuNSA0OC00OFMyNTAuNSAwIDIyNCAwcy00OCAyMS41LTQ4IDQ4IDIxLjUgNDggNDggNDh6bS0xNi4yIDEzOS4xYy4xLTEyLjQtMTMuMS0yMC4xLTIzLjgtMTMuNy0zNC4zIDIwLjMtNzEuNCAzMi43LTEwOC43IDM2LjItOS43LjktMTUuNiAxMS4zLTExLjYgMjAuMiA2LjIgMTMuOSAxMS4xIDI4LjYgMTQuNyA0My44IDMuNiAxNS4yLTUuMyAzMC42LTIwLjIgMzUuMS0xNC45IDQuNS0zMC4xIDcuNi00NS4zIDkuMS05LjcgMS0xNS43IDExLjMtMTEuNyAyMC4yIDE1IDMyLjggMjIuOSA2OS41IDIzIDEwNy43LjEgMTQuNCAxNS4yIDIzLjEgMjcuNiAxNiAzMy4yLTE5IDY4LjktMzAuNSAxMDQuOC0zMy45IDkuNy0uOSAxNS42LTExLjMgMTEuNi0yMC4yLTYuMi0xMy45LTExLjEtMjguNi0xNC43LTQzLjgtMy42LTE1LjIgNS4zLTMwLjYgMjAuMi0zNS4xIDE0LjktNC41IDMwLjEtNy42IDQ1LjMtOS4xIDkuNy0xIDE1LjctMTEuMyAxMS43LTIwLjItMTUuNS0zNC4yLTIzLjMtNzIuNS0yMi45LTExMi4zek00MzUgMzY1LjZjLTE1LjItMS42LTMwLjMtNC43LTQ1LjMtOS4xLTE0LjktNC41LTIzLjgtMTkuOS0yMC4yLTM1LjEgMy42LTE1LjIgOC41LTI5LjggMTQuNy00My44IDQtOC45LTEuOS0xOS4zLTExLjYtMjAuMi0zNy4zLTMuNS03NC40LTE1LjktMTA4LjctMzYuMi0xMC43LTYuMy0yMy45IDEuNC0yMy44IDEzLjcgMCAxLjYtLjIgMy4yLS4yIDQuOS4yIDMzLjMgNyA2NS43IDE5LjkgOTQgNS43IDEyLjQgNS4yIDI2LjYtLjYgMzguOSA0LjkgMS4yIDkuOSAyLjIgMTQuOCAzLjcgMTQuOSA0LjUgMjMuOCAxOS45IDIwLjIgMzUuMS0zLjYgMTUuMi04LjUgMjkuOC0xNC43IDQzLjgtNCA4LjkgMS45IDE5LjMgMTEuNiAyMC4yIDM1LjkgMy40IDcxLjYgMTQuOSAxMDQuOCAzMy45IDEyLjUgNy4xIDI3LjYtMS42IDI3LjYtMTYgLjItMzguMiA4LTc1IDIzLTEwNy43IDQuMy04LjctMS44LTE5LjEtMTEuNS0yMC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4MC4zNyAxNDguMjZMOTYgMzAwLjExVjQ2NGExNiAxNiAwIDAgMCAxNiAxNmwxMTIuMDYtLjI5YTE2IDE2IDAgMCAwIDE1LjkyLTE2VjM2OGExNiAxNiAwIDAgMSAxNi0xNmg2NGExNiAxNiAwIDAgMSAxNiAxNnY5NS42NGExNiAxNiAwIDAgMCAxNiAxNi4wNUw0NjQgNDgwYTE2IDE2IDAgMCAwIDE2LTE2VjMwMEwyOTUuNjcgMTQ4LjI2YTEyLjE5IDEyLjE5IDAgMCAwLTE1LjMgMHpNNTcxLjYgMjUxLjQ3TDQ4OCAxODIuNTZWNDQuMDVhMTIgMTIgMCAwIDAtMTItMTJoLTU2YTEyIDEyIDAgMCAwLTEyIDEydjcyLjYxTDMxOC40NyA0M2E0OCA0OCAwIDAgMC02MSAwTDQuMzQgMjUxLjQ3YTEyIDEyIDAgMCAwLTEuNiAxNi45bDI1LjUgMzFBMTIgMTIgMCAwIDAgNDUuMTUgMzAxbDIzNS4yMi0xOTMuNzRhMTIuMTkgMTIuMTkgMCAwIDEgMTUuMyAwTDUzMC45IDMwMWExMiAxMiAwIDAgMCAxNi45LTEuNmwyNS41LTMxYTEyIDEyIDAgMCAwLTEuNy0xNi45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9yc2VIZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwOS44IDMzMi41bC02OS45LTE2NC4zYy0xNC45LTQxLjItNTAuNC03MS05My03OS4yIDE4LTEwLjYgNDYuMy0zNS45IDM0LjItODIuMy0xLjMtNS03LjEtNy45LTEyLTYuMUwxNjYuOSA3Ni4zQzM1LjkgMTIzLjQgMCAyMzguOSAwIDM5OC44VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgyMzYuMmMyMy44IDAgMzkuMy0yNSAyOC42LTQ2LjNMMjU2IDM4NHYtLjdjLTQ1LjYtMy41LTg0LjYtMzAuNy0xMDQuMy02OS42LTEuNi0zLjEtLjktNi45IDEuNi05LjNsMTIuMS0xMi4xYzMuOS0zLjkgMTAuNi0yLjcgMTIuOSAyLjQgMTQuOCAzMy43IDQ4LjIgNTcuNCA4Ny40IDU3LjQgMTcuMiAwIDMzLTUuMSA0Ni44LTEzLjJsNDYgNjMuOWM2IDguNCAxNS43IDEzLjMgMjYgMTMuM2g1MC4zYzguNSAwIDE2LjYtMy40IDIyLjYtOS40bDQ1LjMtMzkuOGM4LjktOS4xIDExLjctMjIuNiA3LjEtMzQuNHpNMzI4IDIyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNCAyNCAxMC43IDI0IDI0LTEwLjcgMjQtMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvcnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NS45MiA3Ni42Yy0uMDEtOC4xMy0zLjAyLTE1Ljg3LTguNTgtMjEuOC0zLjc4LTQuMDMtOC41OC05LjEyLTEzLjY5LTE0LjUgMTEuMDYtNi44NCAxOS41LTE3LjQ5IDIyLjE4LTMwLjY2QzU3Ni44NSA0LjY4IDU3Mi45NiAwIDU2Ny45IDBINDQ3LjkyYy03MC42OSAwLTEyOCA1Ny4zMS0xMjggMTI4SDE2MGMtMjguODQgMC01NC40IDEyLjk4LTcyIDMzLjExVjE2MGMtNDguNTMgMC04OCAzOS40Ny04OCA4OHY1NmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNTZjMC0xMy4yMiA2Ljg3LTI0LjM5IDE2Ljc4LTMxLjY4LS4yMSAyLjU4LS43OCA1LjA1LS43OCA3LjY4IDAgMjcuNjQgMTEuODQgNTIuMzYgMzAuNTQgNjkuODhsLTI1LjcyIDY4LjZhNjMuOTQ1IDYzLjk0NSAwIDAgMC0yLjE2IDM3Ljk5bDI0Ljg1IDk5LjQxQTE1Ljk4MiAxNS45ODIgMCAwIDAgMTA3LjAyIDUxMmg2NS45NmMxMC40MSAwIDE4LjA1LTkuNzggMTUuNTItMTkuODhsLTI2LjMxLTEwNS4yNiAyMy44NC02My41OUwzMjAgMzQ1LjZWNDk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDY0YzguODQgMCAxNi03LjE2IDE2LTE2VjMxOC4yMmMxOS43NC0yMC4xOSAzMi00Ny43NSAzMi03OC4yMiAwLS4yMi0uMDctLjQyLS4wOC0uNjRWMTM2Ljg5bDE2IDcuMTEgMTguOSAzNy43YzcuNDUgMTQuODcgMjUuMDUgMjEuNTUgNDAuNDkgMTUuMzdsMzIuNTUtMTMuMDJhMzEuOTk3IDMxLjk5NyAwIDAgMCAyMC4xMi0yOS43NGwtLjA2LTc3Ljcxem0tNjQgMTkuNGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNiAxNiA3LjE2IDE2IDE2LTcuMTYgMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvc3BpdGFsQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCA5Nkg0MTZWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzY4YzAgOC44IDcuMiAxNiAxNiAxNmg1NDRjOC44IDAgMTYtNy4yIDE2LTE2VjEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMTYwIDQzNmMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtMTI4YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMTYwIDEyOGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtMTI4YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMTYtMTcwYzAgMy4zLTIuNyA2LTYgNmgtMjZ2MjZjMCAzLjMtMi43IDYtNiA2aC0yMGMtMy4zIDAtNi0yLjctNi02di0yNmgtMjZjLTMuMyAwLTYtMi43LTYtNnYtMjBjMC0zLjMgMi43LTYgNi02aDI2Vjg2YzAtMy4zIDIuNy02IDYtNmgyMGMzLjMgMCA2IDIuNyA2IDZ2MjZoMjZjMy4zIDAgNiAyLjcgNiA2djIwem0xNDQgMjk4YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMC0xMjhjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3NwaXRhbFN5bWJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMEMxMTQuNiAwIDAgMTE0LjYgMCAyNTZzMTE0LjYgMjU2IDI1NiAyNTYgMjU2LTExNC42IDI1Ni0yNTZTMzk3LjQgMCAyNTYgMHptMTEyIDM3NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTg4aC05NnY4OGMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LThWMTM2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2ODhoOTZ2LTg4YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3NwaXRhbFVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDMyMGE5NiA5NiAwIDEgMC05Ni05NiA5NiA5NiAwIDAgMCA5NiA5NnptNDggMzJhMjIuODggMjIuODggMCAwIDAtNy4wNiAxLjA5IDEyNC43NiAxMjQuNzYgMCAwIDEtODEuODkgMEEyMi44MiAyMi44MiAwIDAgMCA0MzIgMzUyYTExMiAxMTIgMCAwIDAtMTEyIDExMi42MmMuMTQgMjYuMjYgMjEuNzMgNDcuMzggNDggNDcuMzhoMjI0YzI2LjI3IDAgNDcuODYtMjEuMTIgNDgtNDcuMzhBMTEyIDExMiAwIDAgMCA1MjggMzUyem0tMTk4LjA5IDEwLjQ1QTE0NS4xOSAxNDUuMTkgMCAwIDEgMzUyIDM0NC42MlYxMjhhMzIgMzIgMCAwIDAtMzItMzJoLTMyVjMyYTMyIDMyIDAgMCAwLTMyLTMySDk2YTMyIDMyIDAgMCAwLTMyIDMydjY0SDMyYTMyIDMyIDAgMCAwLTMyIDMydjM2OGExNiAxNiAwIDAgMCAxNiAxNmgyODguMzFBNzguNjIgNzguNjIgMCAwIDEgMjg4IDQ2NC43OWExNDMuMDYgMTQzLjA2IDAgMCAxIDQxLjkxLTEwMi4zNHpNMTQ0IDQwNGExMiAxMiAwIDAgMS0xMiAxMkg5MmExMiAxMiAwIDAgMS0xMi0xMnYtNDBhMTIgMTIgMCAwIDEgMTItMTJoNDBhMTIgMTIgMCAwIDEgMTIgMTJ6bTAtMTI4YTEyIDEyIDAgMCAxLTEyIDEySDkyYTEyIDEyIDAgMCAxLTEyLTEydi00MGExMiAxMiAwIDAgMSAxMi0xMmg0MGExMiAxMiAwIDAgMSAxMiAxMnptNDgtMTIyYTYgNiAwIDAgMS02IDZoLTIwYTYgNiAwIDAgMS02LTZ2LTI2aC0yNmE2IDYgMCAwIDEtNi02di0yMGE2IDYgMCAwIDEgNi02aDI2VjcwYTYgNiAwIDAgMSA2LTZoMjBhNiA2IDAgMCAxIDYgNnYyNmgyNmE2IDYgMCAwIDEgNiA2djIwYTYgNiAwIDAgMS02IDZoLTI2em04MCAyNTBhMTIgMTIgMCAwIDEtMTIgMTJoLTQwYTEyIDEyIDAgMCAxLTEyLTEydi00MGExMiAxMiAwIDAgMSAxMi0xMmg0MGExMiAxMiAwIDAgMSAxMiAxMnptMC0xMjhhMTIgMTIgMCAwIDEtMTIgMTJoLTQwYTEyIDEyIDAgMCAxLTEyLTEydi00MGExMiAxMiAwIDAgMSAxMi0xMmg0MGExMiAxMiAwIDAgMSAxMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9zcGl0YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDQ5MnYyMEgwdi0yMGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDIwVjEyMGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoODhWMjRjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDExMmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2NzJoODhjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0djM2MGgyMGM2LjYyNyAwIDEyIDUuMzczIDEyIDEyek0zMDggMTkyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJ6bS0xNjggNjRoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMnptMTA0IDEyOGgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2ODRoNjR2LTg0YzAtNi42MjctNS4zNzMtMTItMTItMTJ6bTY0LTk2aC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJ6bS0xMTYgMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MHpNMTgyIDk2aDI2djI2YTYgNiAwIDAgMCA2IDZoMjBhNiA2IDAgMCAwIDYtNlY5NmgyNmE2IDYgMCAwIDAgNi02VjcwYTYgNiAwIDAgMC02LTZoLTI2VjM4YTYgNiAwIDAgMC02LTZoLTIwYTYgNiAwIDAgMC02IDZ2MjZoLTI2YTYgNiAwIDAgMC02IDZ2MjBhNiA2IDAgMCAwIDYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG90VHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNC4yMSAxNzcuNjVjMS4wMiA4LjIxIDcuNzUgMTQuMzUgMTUuNzUgMTQuMzVoMTYuMTJjOS41MSAwIDE3LjA4LTguNTcgMTYtMTguMzUtNC4zNC0zOS4xMS0yMi40LTc0LjUzLTUwLjEzLTk3LjE2LTE3LjM3LTE0LjE3LTI4LjgyLTM2Ljc1LTMxLjk4LTYyLjE1QzM3OC45NiA2LjE0IDM3Mi4yMiAwIDM2NC4yMyAwaC0xNi4xMmMtOS41MSAwLTE3LjA5IDguNTctMTYgMTguMzUgNC4zNCAzOS4xMSAyMi40IDc0LjUzIDUwLjEzIDk3LjE2IDE3LjM2IDE0LjE3IDI4LjgyIDM2Ljc1IDMxLjk3IDYyLjE0em0tMTA4IDBjMS4wMiA4LjIxIDcuNzUgMTQuMzUgMTUuNzUgMTQuMzVoMTYuMTJjOS41MSAwIDE3LjA4LTguNTcgMTYtMTguMzUtNC4zNC0zOS4xMS0yMi40LTc0LjUzLTUwLjEzLTk3LjE2LTE3LjM3LTE0LjE3LTI4LjgyLTM2Ljc1LTMxLjk4LTYyLjE1QzI3MC45NiA2LjE0IDI2NC4yMiAwIDI1Ni4yMyAwaC0xNi4xMmMtOS41MSAwLTE3LjA5IDguNTctMTYgMTguMzUgNC4zNCAzOS4xMSAyMi40IDc0LjUzIDUwLjEzIDk3LjE2IDE3LjM2IDE0LjE3IDI4LjgyIDM2Ljc1IDMxLjk3IDYyLjE0ek00ODAgMjU2SDI1NmwtMTEwLjkzLTgzLjJhNjMuOTkgNjMuOTkgMCAwIDAtMzguNC0xMi44SDY0Yy0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0djIyNGMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0aDM4NGMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0VjI4OGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0xMjggNDQwYzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LThWMzI4YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djExMnptOTYgMGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04VjMyOGMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHYxMTJ6bTk2IDBjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOFYzMjhjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTEyem05NiAwYzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LThWMzI4YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djExMnpNNjQgMTI4YzM1LjM1IDAgNjQtMjguNjUgNjQtNjRTOTkuMzUgMCA2NCAwIDAgMjguNjUgMCA2NHMyOC42NSA2NCA2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG90ZG9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OC41NiAyMy40NGE4MCA4MCAwIDAgMC0xMTMuMTIgMGwtMzUyIDM1MmE4MCA4MCAwIDEgMCAxMTMuMTIgMTEzLjEybDM1Mi0zNTJhODAgODAgMCAwIDAgMC0xMTMuMTJ6bS00OS45MyA5NS4xOWMtMTkuNiAxOS41OS0zNy41MiAyMi42Ny01MS45MyAyNS4xNEMzNzMuNzYgMTQ2IDM2NC40IDE0Ny42IDM1MiAxNjBzLTE0IDIxLjc2LTE2LjIzIDM0LjcxYy0yLjQ4IDE0LjQtNS41NSAzMi4zMy0yNS4xNSA1MS45MnMtMzcuNTIgMjIuNjctNTEuOTIgMjUuMTVDMjQ1Ljc1IDI3NCAyMzYuNCAyNzUuNiAyMjQgMjg4cy0xNCAyMS43NS0xNi4yMyAzNC43Yy0yLjQ3IDE0LjQtNS41NCAzMi4zMy0yNS4xNCA1MS45MnMtMzcuNTMgMjIuNjgtNTEuOTMgMjUuMTVDMTE3Ljc2IDQwMiAxMDguNCA0MDMuNiA5NiA0MTZhMTYgMTYgMCAwIDEtMjIuNjMtMjIuNjNjMTkuNi0xOS41OSAzNy41Mi0yMi42NyA1MS45Mi0yNS4xNCAxMy0yLjIyIDIyLjMtMy44MiAzNC43MS0xNi4yM3MxNC0yMS43NSAxNi4yMi0zNC43YzIuNDgtMTQuNCA1LjU1LTMyLjMzIDI1LjE1LTUxLjkyczM3LjUyLTIyLjY3IDUxLjkyLTI1LjE0YzEzLTIuMjIgMjIuMy0zLjgzIDM0LjctMTYuMjNzMTQtMjEuNzYgMTYuMjQtMzQuNzFjMi40Ny0xNC40IDUuNTQtMzIuMzMgMjUuMTQtNTEuOTJzMzcuNTItMjIuNjggNTEuOTItMjUuMTVDMzk0LjI0IDExMCA0MDMuNTkgMTA4LjQxIDQxNiA5NmExNiAxNiAwIDAgMSAyMi42MyAyMi42M3pNMzEuNDQgMzIyLjE4TDMyMi4xOCAzMS40NGwtMTEuNTQtMTEuNTVjLTI1LTI1LTYzLjg1LTI2LjY2LTg2Ljc5LTMuNzJMMTYuMTcgMjIzLjg1Yy0yMi45NCAyMi45NC0yMS4yNyA2MS43OSAzLjcyIDg2Ljc4em00NDkuMTItMTMyLjM2TDE4OS44MiA0ODAuNTZsMTEuNTQgMTEuNTVjMjUgMjUgNjMuODUgMjYuNjYgODYuNzkgMy43MmwyMDcuNjgtMjA3LjY4YzIyLjk0LTIyLjk0IDIxLjI3LTYxLjc5LTMuNzItODYuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdGVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2MCA2NGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNmMwLTguODQtNy4xNi0xNi0xNi0xNkgxNkM3LjE2IDAgMCA3LjE2IDAgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTUuOTh2Mzg0SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgyNDB2LTgwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2ODBoMjQwYzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMTZWNjRoMTZ6bS0zMDQgNDQuOGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTM4LjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNHptMCA5NmMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTM4LjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNHptLTEyOC05NmMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTM4LjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNHpNMTc5LjIgMjU2aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjRjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjRjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44ek0xOTIgMzg0YzAtNTMuMDIgNDIuOTgtOTYgOTYtOTZzOTYgNDIuOTggOTYgOTZIMTkyem0yNTYtMTQwLjhjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjRjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjR6bTAtOTZjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjRjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXJnbGFzc0VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjAgNjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyNEMxMC43NDUgMCAwIDEwLjc0NSAwIDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNCAwIDkwLjk2NSA1MS4wMTYgMTY3LjczNCAxMjAuODQyIDE5MkM3NS4wMTYgMjgwLjI2NiAyNCAzNTcuMDM1IDI0IDQ0OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjQgMC05MC45NjUtNTEuMDE2LTE2Ny43MzQtMTIwLjg0Mi0xOTJDMzA4Ljk4NCAyMzEuNzM0IDM2MCAxNTQuOTY1IDM2MCA2NHpNMTkyIDIwOGMtNTcuNzg3IDAtMTA0LTY2LjUxOC0xMDQtMTQ0aDIwOGMwIDc3Ljk0NS00Ni41MSAxNDQtMTA0IDE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91cmdsYXNzSGFsZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjAgMEgyNEMxMC43NDUgMCAwIDEwLjc0NSAwIDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNCAwIDkwLjk2NSA1MS4wMTYgMTY3LjczNCAxMjAuODQyIDE5MkM3NS4wMTYgMjgwLjI2NiAyNCAzNTcuMDM1IDI0IDQ0OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjQgMC05MC45NjUtNTEuMDE2LTE2Ny43MzQtMTIwLjg0Mi0xOTJDMzA4Ljk4NCAyMzEuNzM0IDM2MCAxNTQuOTY1IDM2MCA2NGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMjRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0em0tNzUuMDc4IDM4NEg5OS4wOGMxNy4wNTktNDYuNzk3IDUyLjA5Ni04MCA5Mi45Mi04MCA0MC44MjEgMCA3NS44NjIgMzMuMTk2IDkyLjkyMiA4MHptLjAxOS0yNTZIOTkuMDc4QzkxLjk4OCAxMDguNTQ4IDg4IDg2Ljc0OCA4OCA2NGgyMDhjMCAyMi44MDUtMy45ODcgNDQuNTg3LTExLjA1OSA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91cmdsYXNzU3RhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzYwIDBIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjQgMCA5MC45NjUgNTEuMDE2IDE2Ny43MzQgMTIwLjg0MiAxOTJDNzUuMDE2IDI4MC4yNjYgMjQgMzU3LjAzNSAyNCA0NDhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzM2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtMTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0IDAtOTAuOTY1LTUxLjAxNi0xNjcuNzM0LTEyMC44NDItMTkyQzMwOC45ODQgMjMxLjczNCAzNjAgMTU0Ljk2NSAzNjAgNjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHptLTY0IDQ0OEg4OGMwLTc3LjQ1OCA0Ni4yMDQtMTQ0IDEwNC0xNDQgNTcuNzg2IDAgMTA0IDY2LjUxNyAxMDQgMTQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VyZ2xhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzYwIDY0YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjQgMCA5MC45NjUgNTEuMDE2IDE2Ny43MzQgMTIwLjg0MiAxOTJDNzUuMDE2IDI4MC4yNjYgMjQgMzU3LjAzNSAyNCA0NDhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzM2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtMTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0IDAtOTAuOTY1LTUxLjAxNi0xNjcuNzM0LTEyMC44NDItMTkyQzMwOC45ODQgMjMxLjczNCAzNjAgMTU0Ljk2NSAzNjAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlRGFtYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxMTQuOTZMNjkuNDcgMzA3LjcxYy0xLjYyIDEuNDYtMy42OSAyLjE0LTUuNDcgMy4zNVY0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTQ5LjIzTDE5MiA0MzkuMTlsMTA0LjExLTY0LTYwLjE2LTExOS4yMkwzODQgMzkyLjc1bC0xMDQuMTEgNjRMMzE5LjgxIDUxMkg0OTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWMzExLjFjLTEuNy0xLjE2LTMuNzItMS44Mi01LjI2LTMuMkwyODggMTE0Ljk2em0yODIuNjkgMTIxLjMyTDUxMiAxODQuNDVWNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTY0Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY1MS42OUwzMTQuNzUgMTAuMzFDMzA3LjEyIDMuNDUgMjk3LjU2LjAxIDI4OCAwcy0xOS4xIDMuNDEtMjYuNyAxMC4yN0w1LjMxIDIzNi4yOGMtNi41NyA1LjkxLTcuMTIgMTYuMDItMS4yMSAyMi42bDIxLjQgMjMuODJjNS45IDYuNTcgMTYuMDIgNy4xMiAyMi42IDEuMjFMMjc3LjQyIDgxLjYzYzYuMDUtNS4zMyAxNS4xMi01LjMzIDIxLjE3IDBMNTI3LjkxIDI4My45YzYuNTcgNS45IDE2LjY5IDUuMzYgMjIuNi0xLjIxbDIxLjQtMjMuODJjNS45LTYuNTcgNS4zNi0xNi42OS0xLjIyLTIyLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZVVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTcwLjY5LDIzNi4yNyw1MTIsMTg0LjQ0VjQ4YTE2LDE2LDAsMCwwLTE2LTE2SDQzMmExNiwxNiwwLDAsMC0xNiwxNlY5OS42N0wzMTQuNzgsMTAuM0MzMDguNSw0LjYxLDI5Ni41MywwLDI4OCwwcy0yMC40Niw0LjYxLTI2Ljc0LDEwLjNsLTI1NiwyMjZBMTguMjcsMTguMjcsMCwwLDAsMCwyNDguMmExOC42NCwxOC42NCwwLDAsMCw0LjA5LDEwLjcxTDI1LjUsMjgyLjdhMjEuMTQsMjEuMTQsMCwwLDAsMTIsNS4zLDIxLjY3LDIxLjY3LDAsMCwwLDEwLjY5LTQuMTFsMTUuOS0xNFY0ODBhMzIsMzIsMCwwLDAsMzIsMzJINDgwYTMyLDMyLDAsMCwwLDMyLTMyVjI2OS44OGwxNS45MSwxNEEyMS45NCwyMS45NCwwLDAsMCw1MzguNjMsMjg4YTIwLjg5LDIwLjg5LDAsMCwwLDExLjg3LTUuMzFsMjEuNDEtMjMuODFBMjEuNjQsMjEuNjQsMCwwLDAsNTc2LDI0OC4xOSwyMSwyMSwwLDAsMCw1NzAuNjksMjM2LjI3Wk0yODgsMTc2YTY0LDY0LDAsMSwxLTY0LDY0QTY0LDY0LDAsMCwxLDI4OCwxNzZaTTQwMCw0NDhIMTc2YTE2LDE2LDAsMCwxLTE2LTE2LDk2LDk2LDAsMCwxLDk2LTk2aDY0YTk2LDk2LDAsMCwxLDk2LDk2QTE2LDE2LDAsMCwxLDQwMCw0NDhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhyeXZuaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4IDI0MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTQxLjg2YzEzLjQxLTI4LjYzIDEzLjc0LTYzLjMzLTQuMTMtOTQuMDVDMzAzLjM0IDQ5Ljg0IDI2Ny4xIDMyIDIyOS45NiAzMmgtNzguODJjLTI0LjMyIDAtNDcuODYgOC41My02Ni41NCAyNC4wOUw3Mi44MyA2NS45Yy0xMC4xOCA4LjQ5LTExLjU2IDIzLjYyLTMuMDcgMzMuOGwyMC40OSAyNC41OWM4LjQ5IDEwLjE5IDIzLjYyIDExLjU2IDMzLjgxIDMuMDdsMTEuNzMtOS43OGM0LjMyLTMuNiA5Ljc3LTUuNTcgMTUuMzktNS41N2g4My42MmMxMS42OSAwIDIxLjIgOS41MiAyMS4yIDIxLjIgMCA1LjkxLTIuNDggMTEuNTgtNi44MSAxNS41OEwyMTkuNyAxNzZIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDEzNC4zN2wtMzQuNjcgMzJIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQxLjg2Yy0xMy40MSAyOC42My0xMy43NCA2My4zMyA0LjEzIDk0LjA1QzgwLjY2IDQ2Mi4xNSAxMTYuOSA0ODAgMTU0LjA0IDQ4MGg3OC44MmMyNC4zMiAwIDQ3Ljg2LTguNTMgNjYuNTQtMjQuMDlsMTEuNzctOS44MWMxMC4xOC04LjQ5IDExLjU2LTIzLjYyIDMuMDctMzMuOGwtMjAuNDktMjQuNTljLTguNDktMTAuMTktMjMuNjItMTEuNTYtMzMuODEtMy4wN2wtMTEuNzUgOS44YTIzLjk5MiAyMy45OTIgMCAwIDEtMTUuMzYgNS41NkgxNDkuMmMtMTEuNjkgMC0yMS4yLTkuNTItMjEuMi0yMS4yIDAtNS45MSAyLjQ4LTExLjU4IDYuODEtMTUuNThMMTY0LjMgMzM2SDM2OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMjMzLjYzbDM0LjY3LTMySDM2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSUN1cnNvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTIuMDQ4VjEyLjA2NUMyNTYgNS40OTYgMjUwLjcyNi4xNDggMjQ0LjE1OC4wNjYgMjExLjYyMS0uMzQ0IDE2Ni40NjkuMDExIDEyOCAzNy45NTkgOTAuMjY2LjczNiA0Ni45NzktLjExNCAxMS45MTMuMTE0IDUuMzE4LjE1NyAwIDUuNTE5IDAgMTIuMTE0djM5LjY0NWMwIDYuNjg3IDUuNDU4IDEyLjA3OCAxMi4xNDUgMTEuOTk4QzM4LjExMSA2My40NDcgOTYgNjcuMjQzIDk2IDExMi4xODJWMjI0SDYwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMzZ2MTEyYzAgNDQuOTMyLTU2LjA3NSA0OC4wMzEtODMuOTUgNDcuOTU5QzUuNDA0IDQ0Ny45NDIgMCA0NTMuMzA2IDAgNDU5Ljk1MnYzOS45ODNjMCA2LjU2OSA1LjI3NCAxMS45MTcgMTEuODQyIDExLjk5OSAzMi41MzcuNDA5IDc3LjY4OS4wNTQgMTE2LjE1OC0zNy44OTQgMzcuNzM0IDM3LjIyMyA4MS4wMjEgMzguMDczIDExNi4wODcgMzcuODQ1IDYuNTk1LS4wNDMgMTEuOTEzLTUuNDA1IDExLjkxMy0xMlY0NjAuMjRjMC02LjY4Ny01LjQ1OC0xMi4wNzgtMTIuMTQ1LTExLjk5OEMyMTcuODg5IDQ0OC41NTMgMTYwIDQ0NC45MzkgMTYwIDQwMFYyODhoMzZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMzZWMTEyLjE4MmMwLTQ0LjkzMiA1Ni4wNzUtNDguMjEzIDgzLjk1LTQ4LjE0MiA2LjY0Ni4wMTggMTIuMDUtNS4zNDYgMTIuMDUtMTEuOTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJY2VDcmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjggMTYwaC0uOTRhMTQ0IDE0NCAwIDEgMC0yODYuMTIgMEg4MGE0OCA0OCAwIDAgMCAwIDk2aDI4OGE0OCA0OCAwIDAgMCAwLTk2ek0xOTUuMzggNDkzLjY5YTMxLjUyIDMxLjUyIDAgMCAwIDU3LjI0IDBMMzUyIDI4OEg5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWNpY2xlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTEuNCAzNy45QzUxNS4xIDE4LjIgNTAwIDAgNDgwIDBIMzJDMTAuNiAwLTQuOCAyMC43IDEuNCA0MS4ybDg3LjEgMjczLjRjMi41IDcuMiAxMi43IDcuMiAxNS4xIDBMMTQwIDE5MC41bDQ0LjIgMTg3LjNjMS45IDguMyAxMy43IDguMyAxNS42IDBsNDYuNS0xOTYuOSAzNC4xIDEzMy40YzIuMyA3LjYgMTMgNy42IDE1LjMgMGw0NS44LTE3Mi41IDY2LjcgMzYzLjhjMS43IDguNiAxNCA4LjYgMTUuNyAwbDg3LjUtNDY3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUljb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExNi42NSAyMTkuMzVhMTUuNjggMTUuNjggMCAwIDAgMjIuNjUgMGw5Ni43NS05OS44M2MyOC4xNS0yOSAyNi41LTc3LjEtNC45MS0xMDMuODhDMjAzLjc1LTcuNyAxNjMtMy41IDEzNy44NiAyMi40NEwxMjggMzIuNThsLTkuODUtMTAuMTRDOTMuMDUtMy41IDUyLjI1LTcuNyAyNC44NiAxNS42NGMtMzEuNDEgMjYuNzgtMzMgNzQuODUtNSAxMDMuODh6bTE0My45MiAxMDAuNDloLTQ4bC03LjA4LTE0LjI0YTI3LjM5IDI3LjM5IDAgMCAwLTI1LjY2LTE3Ljc4aC03MS43MWEyNy4zOSAyNy4zOSAwIDAgMC0yNS42NiAxNy43OGwtNyAxNC4yNGgtNDhBMjcuNDUgMjcuNDUgMCAwIDAgMCAzNDcuM3YxMzcuMjVBMjcuNDQgMjcuNDQgMCAwIDAgMjcuNDMgNTEyaDIzMy4xNEEyNy40NSAyNy40NSAwIDAgMCAyODggNDg0LjU1VjM0Ny4zYTI3LjQ1IDI3LjQ1IDAgMCAwLTI3LjQzLTI3LjQ2ek0xNDQgNDY4YTUyIDUyIDAgMSAxIDUyLTUyIDUyIDUyIDAgMCAxLTUyIDUyem0zNTUuNC0xMTUuOWgtNjAuNThsMjIuMzYtNTAuNzVjMi4xLTYuNjUtMy45My0xMy4yMS0xMi4xOC0xMy4yMWgtNzUuNTljLTYuMyAwLTExLjY2IDMuOS0xMi41IDkuMWwtMTYuOCAxMDYuOTNjLTEgNi4zIDQuODggMTEuODkgMTIuNSAxMS44OWg2Mi4zMWwtMjQuMiA4M2MtMS44OSA2LjY1IDQuMiAxMi45IDEyLjIzIDEyLjlhMTMuMjYgMTMuMjYgMCAwIDAgMTAuOTItNS4yNWw5Mi40LTEzOC45MWM0Ljg4LTYuOTEtMS4xNi0xNS43LTEwLjg3LTE1Ljd6TTQ3OC4wOC4zM0wzMjkuNTEgMjMuMTdDMzE0Ljg3IDI1LjQyIDMwNCAzOC45MiAzMDQgNTQuODNWMTYxLjZhODMuMjUgODMuMjUgMCAwIDAtMTYtMS43Yy0zNS4zNSAwLTY0IDIxLjQ4LTY0IDQ4czI4LjY1IDQ4IDY0IDQ4YzM1LjIgMCA2My43My0yMS4zMiA2NC00Ny42NlY5OS42NmwxMTItMTcuMjJ2NDcuMThhODMuMjUgODMuMjUgMCAwIDAtMTYtMS43Yy0zNS4zNSAwLTY0IDIxLjQ4LTY0IDQ4czI4LjY1IDQ4IDY0IDQ4YzM1LjIgMCA2My43My0yMS4zMiA2NC00Ny42NlYzMmMwLTE5LjQ4LTE2LTM0LjQyLTMzLjkyLTMxLjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJZEJhZGdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xNDQgMzJoOTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZoLTk2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em00OCAxMjhjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjQtNjQtMjguNy02NC02NCAyOC43LTY0IDY0LTY0em0xMTIgMjM2LjhjMCAxMC42LTEwIDE5LjItMjIuNCAxOS4ySDEwMi40QzkwIDQxNiA4MCA0MDcuNCA4MCAzOTYuOHYtMTkuMmMwLTMxLjggMzAuMS01Ny42IDY3LjItNTcuNmg1YzEyLjMgNS4xIDI1LjcgOCAzOS44IDhzMjcuNi0yLjkgMzkuOC04aDVjMzcuMSAwIDY3LjIgMjUuOCA2Ny4yIDU3LjZ2MTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWRDYXJkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCA2NEgzODR2OTZIMTkyVjY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yODggMjI0YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHptOTMuMyAyMjRIMTk0LjdjLTEwLjQgMC0xOC44LTEwLTE1LjYtMTkuOCA4LjMtMjUuNiAzMi40LTQ0LjIgNjAuOS00NC4yaDguMmMxMi4zIDUuMSAyNS43IDggMzkuOCA4czI3LjYtMi45IDM5LjgtOGg4LjJjMjguNCAwIDUyLjUgMTguNSA2MC45IDQ0LjIgMy4yIDkuOC01LjIgMTkuOC0xNS42IDE5Ljh6TTM1MiAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMmgtNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2aDEyOFYzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjE2aDU3NlY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMCA0MzJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjEyOEgwdjMwNHptMzUyLTIzMmMwLTQuNCAzLjYtOCA4LThoMTQ0YzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIMzYwYy00LjQgMC04LTMuNi04LTh2LTE2em0wIDY0YzAtNC40IDMuNi04IDgtOGgxNDRjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEgzNjBjLTQuNCAwLTgtMy42LTgtOHYtMTZ6bTAgNjRjMC00LjQgMy42LTggOC04aDE0NGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDM2MGMtNC40IDAtOC0zLjYtOC04di0xNnpNMTc2IDE5MmMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NC02NC0yOC43LTY0LTY0IDI4LjctNjQgNjQtNjR6TTY3LjEgMzk2LjJDNzUuNSAzNzAuNSA5OS42IDM1MiAxMjggMzUyaDguMmMxMi4zIDUuMSAyNS43IDggMzkuOCA4czI3LjYtMi45IDM5LjgtOGg4LjJjMjguNCAwIDUyLjUgMTguNSA2MC45IDQ0LjIgMy4yIDkuOS01LjIgMTkuOC0xNS42IDE5LjhIODIuN2MtMTAuNCAwLTE4LjgtMTAtMTUuNi0xOS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJZ2xvbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMzMuOWMtMTAuNS0xLjItMjEuMi0xLjktMzItMS45LTk5LjggMC0xODcuOCA1MC44LTIzOS40IDEyOEgzMjBWMzMuOXpNOTYgMTkySDMwLjNDMTEuMSAyMzAuNiAwIDI3NCAwIDMyMGg5NlYxOTJ6TTM1MiAzOS40VjE2MGgxNzUuNEM0ODcuMiA5OS45IDQyNC44IDU1LjkgMzUyIDM5LjR6TTQ4MCAzMjBoOTZjMC00Ni0xMS4xLTg5LjQtMzAuMy0xMjhINDgwdjEyOHptLTY0IDY0djk2aDEyOGMxNy43IDAgMzItMTQuMyAzMi0zMnYtOTZINDExLjVjMi42IDEwLjMgNC41IDIwLjkgNC41IDMyem0zMi0xOTJIMTI4djEyOGg0OS44YzIyLjItMzguMSA2My02NCAxMTAuMi02NHM4OCAyNS45IDExMC4yIDY0SDQ0OFYxOTJ6TTAgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDEyOHYtOTZjMC0xMS4xIDEuOS0yMS43IDQuNS0zMkgwdjk2em0yODgtMTYwYy01MyAwLTk2IDQzLTk2IDk2djk2aDE5MnYtOTZjMC01My00My05Ni05Ni05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDQ0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxMTJjMC0yNi41MSAyMS40OS00OCA0OC00OGg0MTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYyODhjMCAyNi41MS0yMS40OSA0OC00OCA0OHpNMTEyIDEyMGMtMzAuOTI4IDAtNTYgMjUuMDcyLTU2IDU2czI1LjA3MiA1NiA1NiA1NiA1Ni0yNS4wNzIgNTYtNTYtMjUuMDcyLTU2LTU2LTU2ek02NCAzODRoMzg0VjI3MmwtODcuNTE1LTg3LjUxNWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDIwOCAzMjBsLTU1LjUxNS01NS41MTVjLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEw2NCAzMzZ2NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUltYWdlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgNDE2djE2YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWMTc2YzAtMjYuNTEgMjEuNDktNDggNDgtNDhoMTZ2MjA4YzAgNDQuMTEyIDM1Ljg4OCA4MCA4MCA4MGgzMzZ6bTk2LTgwVjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDhIMTQ0Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djI1NmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDM4NGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4ek0yNTYgMTI4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4IDIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4em0tOTYgMTQ0bDU1LjUxNS01NS41MTVjNC42ODYtNC42ODYgMTIuMjg0LTQuNjg2IDE2Ljk3MSAwTDI3MiAyNTZsMTM1LjUxNS0xMzUuNTE1YzQuNjg2LTQuNjg2IDEyLjI4NC00LjY4NiAxNi45NzEgMEw1MTIgMjA4djExMkgxNjB2LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjcuOTM4IDI0My45MDhMNDYyLjI1IDg1LjM3NEE0OC4wMDMgNDguMDAzIDAgMCAwIDQyMi4zMTEgNjRIMTUzLjY4OWE0OCA0OCAwIDAgMC0zOS45MzggMjEuMzc0TDguMDYyIDI0My45MDhBNDcuOTk0IDQ3Ljk5NCAwIDAgMCAwIDI3MC41MzNWNDAwYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDgwYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMjcwLjUzM2E0Ny45OTQgNDcuOTk0IDAgMCAwLTguMDYyLTI2LjYyNXpNMTYyLjI1MiAxMjhoMjUxLjQ5N2w4NS4zMzMgMTI4SDM3NmwtMzIgNjRIMjMybC0zMi02NEg3Ni45MThsODUuMzM0LTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW5kZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3LjMxIDM2My4zbDk2LTk2YTE2IDE2IDAgMCAwIDAtMjIuNjJsLTk2LTk2QzE3LjI3IDEzOC42NiAwIDE0NS43OCAwIDE2MHYxOTJjMCAxNC4zMSAxNy4zMyAyMS4zIDI3LjMxIDExLjN6TTQzMiA0MTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMy4xNy0xMjhIMjA0LjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE5MiAzMDAuODN2MzguMzRBMTIuODIgMTIuODIgMCAwIDAgMjA0LjgzIDM1MmgyMzAuMzRBMTIuODIgMTIuODIgMCAwIDAgNDQ4IDMzOS4xN3YtMzguMzRBMTIuODIgMTIuODIgMCAwIDAgNDM1LjE3IDI4OHptMC0xMjhIMjA0LjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE5MiAxNzIuODN2MzguMzRBMTIuODIgMTIuODIgMCAwIDAgMjA0LjgzIDIyNGgyMzAuMzRBMTIuODIgMTIuODIgMCAwIDAgNDQ4IDIxMS4xN3YtMzguMzRBMTIuODIgMTIuODIgMCAwIDAgNDM1LjE3IDE2MHpNNDMyIDMySDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmR1c3RyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzUuMTE1IDE2My43ODFMMzM2IDI1Mi4zMDl2LTY4LjI4YzAtMTguOTE2LTIwLjkzMS0zMC4zOTktMzYuODg1LTIwLjI0OEwxNjAgMjUyLjMwOVY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRDMTAuNzQ1IDMyIDAgNDIuNzQ1IDAgNTZ2NDAwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGg0NjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NC4wMjljMC0xOC45MTctMjAuOTMxLTMwLjM5OS0zNi44ODUtMjAuMjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmZpbml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzEuMSA5NkM0MDUgOTYgMzUzLjMgMTM3LjMgMzIwIDE3NC42IDI4Ni43IDEzNy4zIDIzNSA5NiAxNjguOSA5NiA3NS44IDk2IDAgMTY3LjggMCAyNTZzNzUuOCAxNjAgMTY4LjkgMTYwYzY2LjEgMCAxMTcuOC00MS4zIDE1MS4xLTc4LjYgMzMuMyAzNy4zIDg1IDc4LjYgMTUxLjEgNzguNiA5My4xIDAgMTY4LjktNzEuOCAxNjguOS0xNjBTNTY0LjIgOTYgNDcxLjEgOTZ6TTE2OC45IDMyMGMtNDAuMiAwLTcyLjktMjguNy03Mi45LTY0czMyLjctNjQgNzIuOS02NGMzOC4yIDAgNzMuNCAzNi4xIDk0IDY0LTIwLjQgMjcuNi01NS45IDY0LTk0IDY0em0zMDIuMiAwYy0zOC4yIDAtNzMuNC0zNi4xLTk0LTY0IDIwLjQtMjcuNiA1NS45LTY0IDk0LTY0IDQwLjIgMCA3Mi45IDI4LjcgNzIuOSA2NHMtMzIuNyA2NC03Mi45IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmZvQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4wNDMgOCA4IDExOS4wODMgOCAyNTZjMCAxMzYuOTk3IDExMS4wNDMgMjQ4IDI0OCAyNDhzMjQ4LTExMS4wMDMgMjQ4LTI0OEM1MDQgMTE5LjA4MyAzOTIuOTU3IDggMjU2IDh6bTAgMTEwYzIzLjE5NiAwIDQyIDE4LjgwNCA0MiA0MnMtMTguODA0IDQyLTQyIDQyLTQyLTE4LjgwNC00Mi00MiAxOC44MDQtNDIgNDItNDJ6bTU2IDI1NGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC04OGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxMnYtNjRoLTEyYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDY0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MTAwaDEyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluZm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDE5MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNDI0LjIyOWgyMFYyNzkuNzcxSDIwYy0xMS4wNDYgMC0yMC04Ljk1NC0yMC0yMFYyMTJjMC0xMS4wNDYgOC45NTQtMjAgMjAtMjBoMTEyYzExLjA0NiAwIDIwIDguOTU0IDIwIDIwdjIxMi4yMjloMjBjMTEuMDQ2IDAgMjAgOC45NTQgMjAgMjBWNDkyYzAgMTEuMDQ2LTguOTU0IDIwLTIwIDIwSDIwYy0xMS4wNDYgMC0yMC04Ljk1NC0yMC0yMHYtNDcuNzcxYzAtMTEuMDQ2IDguOTU0LTIwIDIwLTIwek05NiAwQzU2LjIzNSAwIDI0IDMyLjIzNSAyNCA3MnMzMi4yMzUgNzIgNzIgNzIgNzItMzIuMjM1IDcyLTcyUzEzNS43NjQgMCA5NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJdGFsaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDQ4djMyYTE2IDE2IDAgMCAxLTE2IDE2aC02Mi43NmwtODAgMzIwSDIwOGExNiAxNiAwIDAgMSAxNiAxNnYzMmExNiAxNiAwIDAgMS0xNiAxNkgxNmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoNjIuNzZsODAtMzIwSDExMmExNiAxNiAwIDAgMS0xNi0xNlY0OGExNiAxNiAwIDAgMSAxNi0xNmgxOTJhMTYgMTYgMCAwIDEgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUplZGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTM1Ljk1MzA4LDM1MmMtNDIuNjQwNjksOTQuMTcxODgtMTM3LjY0MDg2LDE2MC0yNDcuOTg0OCwxNjBxLTYuMzk4NDQsMC0xMi44NDM3Ny0uMjk2ODhDMTcxLjE1NTU4LDUwNi45Mzc1LDgxLjI2NDgxLDQ0Mi4yMzQzOCw0MC4wMTQ3NCwzNTJINzkuOTM2NjhMMjEuMzI3MiwyOTMuNDA2MjVhMjY0LjgyNTIyLDI2NC44MjUyMiwwLDAsMS01LjEwOTM4LTM5LjQyMTg3LDI3My42NjUzLDI3My42NjUzLDAsMCwxLC41LTI5Ljk4NDM4SDYzLjkzNjY1TDIyLjU0NiwxODIuNjI1QTI2OS43OTc4MiwyNjkuNzk3ODIsMCwwLDEsMTMwLjUxNDg5LDIwLjU0Njg4YTE2LjA2MzkzLDE2LjA2MzkzLDAsMCwxLDkuMjgxMjctMywxNi4zNjMzMiwxNi4zNjMzMiwwLDAsMSwxMy41LDcuMjUsMTYuMDI3MzksMTYuMDI3MzksMCwwLDEsMS42MjUsMTUuMDkzNzQsMTM4LjM4NywxMzguMzg3LDAsMCwwLTkuODQzNzYsNTEuMjY1NjNjMCw0NS4xMDkzNywyMS4wNDY5MSw4Ni41NzgxMyw1Ny43MTg4NCwxMTMuNzM0MzdhMTYuMjk5ODksMTYuMjk5ODksMCwwLDEsMS4yMDMxMywyNS4zOTA2M2MtMjYuNTQ2OTIsMjMuOTg0MzctNDEuMTcxOTQsNTYuNS00MS4xNzE5NCw5MS41NzgxMywwLDYwLjAzMTI0LDQyLjk1MzE5LDExMC4yODEyNCw5OS44OTA3OSwxMjEuOTIxODdsMi41LTY1LjI2NTYzTDIzOC4wNjIsMzk3YTguMzM5MTEsOC4zMzkxMSwwLDAsMS0xMC0uNzUsOC4wMjUsOC4wMjUsMCwwLDEtMS4zOTA2My05LjkzNzVsMjAuMTI1LTMzLjc2NTYyLTQyLjA2MjU3LTguNzM0MzhhNy45ODk4LDcuOTg5OCwwLDAsMSwwLTE1LjY1NjI1bDQyLjA2MjU3LTguNzE4NzUtMjAuMTA5NDEtMzMuNzM0MzhhNy45OTEyMiw3Ljk5MTIyLDAsMCwxLDExLjM1OTM5LTEwLjcxODc0TDI2OC40MzcsMjk1LjY0MDYyLDI3OS45NTI2NSw3LjY3MTg4YTcuOTcxMzgsNy45NzEzOCwwLDAsMSw4LTcuNjcxODhoLjA0Njg3YTguMDIwNjQsOC4wMjA2NCwwLDAsMSw3Ljk1MzE0LDcuNzAzMTJMMzA3LjQ4Mzk0LDI5NS42MjVsMzAuMzkwNjgtMjAuNjcxODhhOC4wODMyNyw4LjA4MzI3LDAsMCwxLDEwLC44MTI1LDcuOTk4NjYsNy45OTg2NiwwLDAsMSwxLjM5MDYyLDkuOTA2MjZMMzI5LjEyNDYxLDMxOS40Mzc1bDQyLjA3ODE5LDguNzM0MzhhNy45OTM3Myw3Ljk5MzczLDAsMCwxLDAsMTUuNjU2MjRsLTQyLjA3ODE5LDguNzE4NzYsMjAuMTA5NCwzMy43MzQzN2E3Ljk3NzkxLDcuOTc3OTEsMCwwLDEtMS4zMjgxMiw5LjkyMTg3QTguMjU3MzksOC4yNTczOSwwLDAsMSwzMzcuODc0NjIsMzk3TDMxMC43MDI3LDM3OC41MzEyNWwyLjUsNjUuMzQzNzVjNDguNDg0NDYtOS40MDYyNSw4Ny41NzgyOC00OC4xNTYyNSw5Ny4zMTI2Ny05Ni41QTEyMy41MjY1MiwxMjMuNTI2NTIsMCwwLDAsMzcxLjk1MjgsMjMwLjI5Njg4YTE2LjMwNjM0LDE2LjMwNjM0LDAsMCwxLDEuMjAzMTMtMjUuNDIxODhjMzYuNjU2MzEtMjcuMTcxODgsNTcuNjg3Ni02OC42MDkzOCw1Ny42ODc2LTExMy43MzQzOGExMzguMDE2ODksMTM4LjAxNjg5LDAsMCwwLTkuODU5MzktNTEuMzEyNSwxNS45ODEzMiwxNS45ODEzMiwwLDAsMSwxLjYwOTM3LTE1LjA5Mzc0LDE2LjM2OTE0LDE2LjM2OTE0LDAsMCwxLDEzLjUtNy4yMzQzOCwxNi4wMjQ1MywxNi4wMjQ1MywwLDAsMSw5LjI1LDIuOTg0MzhBMjcxLjI2OTQ3LDI3MS4yNjk0NywwLDAsMSw1NTMuMjUsMTgyLjc2NTYyTDUxMS45OTk5MiwyMjRoNDYuOTUzMkM1NTkuMzEyNSwyMjkuNzY1NjIsNTYwLDIzNS40NTMxMiw1NjAsMjQxLjI2NTYyYTI3MC4wOTIsMjcwLjA5MiwwLDAsMS01LjEyNSw1MS44NTkzOEw0OTUuOTg0MjcsMzUyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKb2ludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDQuMzQgMTgxLjFjMjIuMzggMTUuNjggMzUuNjYgNDEuMTYgMzUuNjYgNjguNTlWMjgwYzAgNC40MiAzLjU4IDggOCA4aDQ4YzQuNDIgMCA4LTMuNTggOC04di0zMC4zMWMwLTQzLjI0LTIxLjAxLTgzLjQxLTU2LjM0LTEwOC4wNkM0NjMuODUgMTI1LjAyIDQ0OCA5OS4zNCA0NDggNzAuMzFWOGMwLTQuNDItMy41OC04LTgtOGgtNDhjLTQuNDIgMC04IDMuNTgtOCA4djY2LjRjMCA0My42OSAyNC41NiA4MS42MyA2MC4zNCAxMDYuN3pNMTk0Ljk3IDM1OC45OEMxMjYuMDMgMzcwLjA3IDU5LjY5IDM5NC42OSAwIDQzMmM4My42NSA1Mi4yOCAxODAuMyA4MCAyNzguOTQgODBoODguNTdMMjU0Ljc5IDM4MC40OWMtMTQuNzQtMTcuMi0zNy40NS0yNS4xMS01OS44Mi0yMS41MXpNNTUzLjI4IDg3LjA5Yy01LjY3LTMuOC05LjI4LTkuOTYtOS4yOC0xNi43OFY4YzAtNC40Mi0zLjU4LTgtOC04aC00OGMtNC40MiAwLTggMy41OC04IDh2NjIuMzFjMCAyMi4wMiAxMC4xNyA0My40MSAyOC42NCA1NS4zOUM1NTAuNzkgMTUzLjA0IDU3NiAxOTkuNTQgNTc2IDI0OS42OVYyODBjMCA0LjQyIDMuNTggOCA4IDhoNDhjNC40MiAwIDgtMy41OCA4LTh2LTMwLjMxYzAtNjUuNDQtMzIuNDEtMTI2LjE5LTg2LjcyLTE2Mi42ek0zNjAuODkgMzUyLjA1Yy0zNC40LjA2LTg2LjgxLjE1LTg4LjIxLjE3bDExNy44IDEzNy40M0E2My45ODcgNjMuOTg3IDAgMCAwIDQzOS4wNyA1MTJoODguNDVMNDA5LjU3IDM3NC40YTYzLjk1NSA2My45NTUgMCAwIDAtNDguNjgtMjIuMzV6TTYxNiAzNTJINDMybDExNy45OSAxMzcuNjVBNjMuOTg3IDYzLjk4NyAwIDAgMCA1OTguNTggNTEySDYxNmMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0VjM3NmMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKb3VybmFsV2hpbGxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOC40MDYyNSwzNzcuNTkzNzVjLTMuMjAzMTMsMTIuODEyNS0zLjIwMzEzLDU3LjYwOTM3LDAsNzMuNjA5MzdRNDQ3Ljk5MjIsNDYwLjc4OTA3LDQ0OCw0NzAuNDA2MjV2MTZjMCwxNi0xMi43OTY4OCwyNS41OTM3NS0yNS41OTM3NSwyNS41OTM3NUg5NmMtNTQuNDA2MjUsMC05Ni00MS41OTM3NS05Ni05NlY5NkMwLDQxLjU5Mzc1LDQxLjU5Mzc1LDAsOTYsMEg0MjIuNDA2MjVDNDM4LjQwNjI1LDAsNDQ4LDkuNTkzNzUsNDQ4LDI1LjU5Mzc1djMzMi44MTI1UTQ0OCwzNzIuNzk2ODgsNDM4LjQwNjI1LDM3Ny41OTM3NVpNMzgwLjc5Njg4LDM4NEg5NmMtMTYsMC0zMiwxMi43OTY4OC0zMiwzMnMxMi43OTY4OCwzMiwzMiwzMkgzODAuNzk2ODhaTTEyOC4wMTU2MiwxNzYuMDE1NjJjMCwuNTE1NjMuMTQwNjMuOTg0MzguMTQwNjMsMS41bDM3LjEwOTM3LDMyLjQ2ODc2QTcuOTk5NTQsNy45OTk1NCwwLDAsMSwxNjAsMjI0aC0uMDE1NjJhOS4xNzY3OCw5LjE3Njc4LDAsMCwxLTUuMjUtMS45ODQzOEwxMzEuMTQwNjIsMjAxLjM3NUMxNDIuNjg3NSwyNTAuOTUzMTIsMTg2LjkwNjI1LDI4OCwyNDAsMjg4czk3LjMxMjUtMzcuMDQ2ODgsMTA4Ljg3NS04Ni42MjVsLTIzLjU5Mzc1LDIwLjY0MDYyYTguMDI1MTYsOC4wMjUxNiwwLDAsMS01LjI2NTYzLDEuOTY4NzZIMzIwYTkuMTQ2NDEsOS4xNDY0MSwwLDAsMS02LjAxNTYyLTIuNzE4NzZBOS4yNjUwOCw5LjI2NTA4LDAsMCwxLDMxMiwyMTZhOS4wOTcsOS4wOTcsMCwwLDEsMi43MzQzOC02LjAxNTYybDM3LjEwOTM3LTMyLjQ2ODc2Yy4wMTU2My0uNTMxMjQuMTU2MjUtMSwuMTU2MjUtMS41MTU2MiwwLTExLjA0Njg4LTIuMDkzNzUtMjEuNTE1NjItNS4wNjI1MS0zMS41OTM3NWwtMjEuMjY1NjIsMjEuMjVhOC4wMDQ2Nyw4LjAwNDY3LDAsMCwxLTExLjMyODEyLTExLjMxMjVsMjYuNDIxODctMjYuNDA2MjVhMTExLjgxNTE3LDExMS44MTUxNywwLDAsMC00Ni4zNTkzNy00OS4yNjU2Miw2My4wMjMzNiw2My4wMjMzNiwwLDAsMS0xNC4wNjI1LDgyLjY0MDYyQTU1LjgzODQ2LDU1LjgzODQ2LDAsMCwxLDI1MS42MjUsMjU0LjczNDM4bC0xLjQyMTg4LTM0LjI4MTI2LDEyLjY3MTg4LDguNjI1YTMuOTY3LDMuOTY3LDAsMCwwLDIuMjUuNjg3NSwzLjk4MDU5LDMuOTgwNTksMCwwLDAsMy40Mzc0OS02LjAzMTI0bC04LjUzMTI0LTE0LjMxMjUsMTcuOTA2MjUtMy43MTg3NmE0LjAwNjQ3LDQuMDA2NDcsMCwwLDAsMC03Ljg0Mzc0bC0xNy45MDYyNS0zLjcxODc2LDguNTMxMjQtMTQuMzEyNWEzLjk4MDU5LDMuOTgwNTksMCwwLDAtMy40Mzc0OS02LjAzMTI0LDQuNzI2LDQuNzI2LDAsMCwwLTIuMjUuNjcxODdMMjQ4LjY4NzUsMTg0LjEyNSwyNDQsNzEuODI4MTJhNC4wMDM4Niw0LjAwMzg2LDAsMCwwLTgsMGwtNC42MjUsMTEwLjgxMjUtMTItOC4xNTYyNGE0LjAwMyw0LjAwMywwLDAsMC01LjY4NzUxLDUuMzU5MzdsOC41MzEyNiwxNC4zMTI1TDIwNC4zMTI1LDE5Ny44NzVhMy45OTY4NiwzLjk5Njg2LDAsMCwwLDAsNy44MjgxMmwxNy45MDYyNSwzLjczNDM4LTguNTMxMjYsMTQuMjk2ODhhNC43MjQ2OSw0LjcyNDY5LDAsMCwwLS41NjI0OSwyLjA0Njg3LDQuNTk1NDcsNC41OTU0NywwLDAsMCwxLjI1LDIuOTA2MjUsNC4wMTA1OSw0LjAxMDU5LDAsMCwwLDIuNzUsMS4wOTM3NSw0LjA5MDE2LDQuMDkwMTYsMCwwLDAsMi4yNS0uNjg3NWwxMC4zNTkzNy03LjA0Njg3TDIyOC4zNzUsMjU0Ljc2NTYyYTU1Ljg2NDE0LDU1Ljg2NDE0LDAsMCwxLTI4LjcxODc1LTkzLjQ1MzEyLDYzLjAxMTE5LDYzLjAxMTE5LDAsMCwxLTE0LjA0Njg4LTgyLjY1NjI1LDExMS45MzE1OCwxMTEuOTMxNTgsMCwwLDAtNDYuMzc1LDQ5LjI2NTYzbDI2LjQyMTg3LDI2LjQyMTg3YTcuOTk5MTcsNy45OTkxNywwLDAsMS0xMS4zMTI1LDExLjMxMjVsLTIxLjI2NTYzLTIxLjI2NTYzQzEzMC4wOTM3NSwxNTQuNDg0MzgsMTI4LDE2NC45NTMxMiwxMjguMDE1NjIsMTc2LjAxNTYyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLYWFiYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NTQuMTIgODMuNTFMMzE4LjM2IDQuOTNhOTUuOTYyIDk1Ljk2MiAwIDAgMC02MC43MSAwTDIxLjg4IDgzLjUxQTMyLjAwNiAzMi4wMDYgMCAwIDAgMCAxMTMuODd2NDkuMDFsMjY1LjAyLTc5LjUxYzE1LjAzLTQuNSAzMC45Mi00LjUgNDUuOTggMGwyNjUgNzkuNTF2LTQ5LjAxYzAtMTMuNzctOC44MS0yNi0yMS44OC0zMC4zNnptLTI3OS45IDMwLjUyTDAgMTk2LjN2MjI4LjM4YzAgMTUgMTAuNDIgMjcuOTggMjUuMDYgMzEuMjRsMjQyLjEyIDUzLjhhOTUuOTM3IDk1LjkzNyAwIDAgMCA0MS42NSAwbDI0Mi4xMi01My44YzE0LjY0LTMuMjUgMjUuMDYtMTYuMjQgMjUuMDYtMzEuMjRWMTk2LjI5bC0yNzQuMi04Mi4yNmMtOS4wNC0yLjcyLTE4LjU5LTIuNzItMjcuNTkgMHpNMTI4IDIzMC4xMWMwIDMuNjEtMi40MSA2Ljc3LTUuODkgNy43MmwtODAgMjEuODJDMzcuMDIgMjYxLjAzIDMyIDI1Ny4yIDMyIDI1MS45M3YtMTYuNThjMC0zLjYxIDIuNDEtNi43NyA1Ljg5LTcuNzJsODAtMjEuODJjNS4wOS0xLjM5IDEwLjExIDIuNDQgMTAuMTEgNy43MnYxNi41OHptMTQ0LTM5LjI4YzAgMy42MS0yLjQxIDYuNzctNS44OSA3LjcybC05NiAyNi4xOGMtNS4wOSAxLjM5LTEwLjExLTIuNDQtMTAuMTEtNy43MnYtMTYuNThjMC0zLjYxIDIuNDEtNi43NyA1Ljg5LTcuNzJsOTYtMjYuMThjNS4wOS0xLjM5IDEwLjExIDIuNDQgMTAuMTEgNy43MnYxNi41OHptMTc2IDIyLjdjMC01LjI4IDUuMDItOS4xMSAxMC4xMS03LjcybDgwIDIxLjgyYzMuNDguOTUgNS44OSA0LjExIDUuODkgNy43MnYxNi41OGMwIDUuMjgtNS4wMiA5LjExLTEwLjExIDcuNzJsLTgwLTIxLjgyYTcuOTk3IDcuOTk3IDAgMCAxLTUuODktNy43MnYtMTYuNTh6bS0xNDQtMzkuMjdjMC01LjI4IDUuMDItOS4xMSAxMC4xMS03LjcybDk2IDI2LjE4YzMuNDguOTUgNS44OSA0LjExIDUuODkgNy43MnYxNi41OGMwIDUuMjgtNS4wMiA5LjExLTEwLjExIDcuNzJsLTk2LTI2LjE4YTcuOTk3IDcuOTk3IDAgMCAxLTUuODktNy43MnYtMTYuNTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMTc2LjAwMUM1MTIgMjczLjIwMyA0MzMuMjAyIDM1MiAzMzYgMzUyYy0xMS4yMiAwLTIyLjE5LTEuMDYyLTMyLjgyNy0zLjA2OWwtMjQuMDEyIDI3LjAxNEEyMy45OTkgMjMuOTk5IDAgMCAxIDI2MS4yMjMgMzg0SDIyNHY0MGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRoLTQwdjQwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyNGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di03OC4wNTljMC02LjM2NSAyLjUyOS0xMi40NyA3LjAyOS0xNi45NzFsMTYxLjgwMi0xNjEuODAyQzE2My4xMDggMjEzLjgxNCAxNjAgMTk1LjI3MSAxNjAgMTc2IDE2MCA3OC43OTggMjM4Ljc5Ny4wMDEgMzM1Ljk5OSAwIDQzMy40ODgtLjAwMSA1MTIgNzguNTExIDUxMiAxNzYuMDAxek0zMzYgMTI4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhzNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDgtNDggMjEuNDktNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtleWJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCA0NDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWMTEyYzAtMjYuNTEgMjEuNDktNDggNDgtNDhoNDgwYzI2LjUxIDAgNDggMjEuNDkgNDggNDh2Mjg4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDh6TTEyOCAxODB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJINzZjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bS0zMzYgOTZ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptLTMzNiA5NnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMkg3NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTI4OCAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDE3MmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDIzMmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtoYW5kYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTUuODEgNjZjLTYuMzctMy41LTE0LjM3LTIuMzMtMTkuMzYgMy4wMmExNS45NzQgMTUuOTc0IDAgMCAwLTEuOTEgMTkuNTJjMTYuNDkgMjYuMTYgMjUuMiA1Ni4zOSAyNS4yIDg3LjQxLS4xOSA1My4yNS0yNi43NyAxMDIuNjktNzEuMjcgMTMyLjQxbC03Ni42MyA1My4zNXYtMjAuMWw0NC4wNS0zNi4wOWMzLjkyLTQuMiA1LTEwLjA5IDIuODEtMTUuMjhMMzEwLjg1IDI3M2MzMy44NC0xOS4yNiA1Ni45NC01NS4yNSA1Ni45NC05Ni45OSAwLTQwLjc5LTIyLjAyLTc2LjEzLTU0LjU5LTk1LjcxbDUuMjItMTEuNDRjMi4zNC01LjUzLjkzLTExLjgzLTMuNTctMTYuMDRMMjU1Ljg2IDBsLTU4Ljk5IDUyLjgxYy00LjUgNC4yMS01LjkgMTAuNTEtMy41NyAxNi4wNGw1LjIyIDExLjQ0Yy0zMi41NyAxOS41OC01NC41OSA1NC45My01NC41OSA5NS43MiAwIDQxLjc1IDIzLjA5IDc3LjczIDU2Ljk0IDk2Ljk5bC03Ljg1IDE3LjI0Yy0yLjE5IDUuMTgtMS4xIDExLjA3IDIuODEgMTUuMjhsNDQuMDUgMzYuMDl2MTkuOWwtNzYuNTktNTMuMzNDMTE5LjAyIDI3OC42MiA5Mi40NCAyMjkuMTkgOTIuMjYgMTc2YzAtMzEuMDggOC43MS02MS4zMSAyNS4yLTg3LjQ3IDMuODctNi4xNiAyLjQtMTMuNzctMi41OS0xOS4wOC01LTUuMzQtMTMuNjgtNi4yLTIwLjAyLTIuN0MxNi4zMiAxMDkuNi0yMi4zIDIwNS4zIDEzLjM2IDI5NS45OWM3LjA3IDE3Ljk5IDE3Ljg5IDM0LjM4IDMwLjQ2IDQ5LjA2bDU1Ljk3IDY1LjM2YzQuODcgNS42OSAxMy4wNCA3LjI0IDE5LjY1IDMuNzJsNzkuMzUtNDIuMjNMMjI4IDM5Mi4yM2wtNDcuMDggMzIuNzhjLTEuNjctLjM3LTMuMjMtMS4wMS01LjAxLTEuMDEtMTMuMjUgMC0yMy45OSAxMC43NC0yMy45OSAyNCAwIDEzLjI1IDEwLjc0IDI0IDIzLjk5IDI0IDEyLjEgMCAyMS42OS05LjExIDIzLjMzLTIwLjc2bDQwLjYzLTI4LjI4djI5Ljk1Yy05LjM5IDUuNTctMTUuOTkgMTUuMzgtMTUuOTkgMjcuMSAwIDE3LjY3IDE0LjMyIDMyIDMxLjk4IDMyczMxLjk4LTE0LjMzIDMxLjk4LTMyYzAtMTEuNzEtNi42MS0yMS41Mi0xNS45OS0yNy4xdi0zMC4xNWw0MC45MSAyOC40OEMzMTQuNDEgNDYyLjg5IDMyNCA0NzIgMzM2LjA5IDQ3MmMxMy4yNSAwIDIzLjk5LTEwLjc1IDIzLjk5LTI0IDAtMTMuMjYtMTAuNzQtMjQtMjMuOTktMjQtMS43OCAwLTMuMzQuNjQtNS4wMSAxLjAxTDI4NCAzOTIuMjNsMjkuMjEtMjAuMzQgNzkuMzUgNDIuMjNjNi42MSAzLjUyIDE0Ljc4IDEuOTcgMTkuNjUtMy43MWw1Mi41MS02MS4zMWMxOC44Ny0yMi4wMiAzNC00Ny41IDQxLjI1LTc1LjU5IDIxLjYyLTgzLjY2LTE2LjQ1LTE2Ny4yNy05MC4xNi0yMDcuNTF6bS05NS45OSAxMTBjMCAyMi4zLTExLjQ5IDQxLjkyLTI4LjgzIDUzLjM4bC01LjY1LTEyLjQxYy04Ljc1LTI0LjUyLTguNzUtNTEuMDQgMC03NS41Nmw3LjgzLTE3LjE4YzE2LjA3IDExLjY1IDI2LjY1IDMwLjQ1IDI2LjY1IDUxLjc3em0tMTI3LjkzIDBjMC0yMS4zMiAxMC41OC00MC4xMiAyNi42Ni01MS43Nmw3LjgzIDE3LjE4YzguNzUgMjQuNTIgOC43NSA1MS4wMyAwIDc1LjU2bC01LjY1IDEyLjQxYy0xNy4zNC0xMS40Ni0yOC44NC0zMS4wOS0yOC44NC01My4zOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2lzc0JlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptLTM5IDIxOS45bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjIgNy40LTE1LjYgNC0xNC45LTQuNSAzLjMtNDIuMSAzMi4yLTcxLjQgNTYtNzEuNHM1Mi43IDI5LjMgNTYgNzEuNGMuNSA4LjUtMTAuOSAxMi0xNS4xIDQuNXpNMzA0IDM5NmMwIDE5LjItMjguNyA0MS41LTcxLjUgNDQtOC41LjgtMTIuMS0xMS44LTMuNi0xNS40bDE3LTcuMmMxMy01LjUgMjAuOC0xMy41IDIwLjgtMjEuNXMtNy44LTE2LTIwLjgtMjEuNWwtMTctNy4yYy02LTIuNS02LjEtMTIuMiAwLTE0LjhsMTctNy4yYzEzLTUuNSAyMC44LTEzLjUgMjAuOC0yMS41cy03LjgtMTYtMjAuOC0yMS41bC0xNy03LjJjLTguNi0zLjYtNC44LTE2LjUgMy42LTE1LjQgNDIuOCAyLjUgNzEuNSAyNC44IDcxLjUgNDQgMCAxMy0xMy40IDI3LjMtMzUuMiAzNkMyOTAuNiAzNjguNyAzMDQgMzgzIDMwNCAzOTZ6bTY1LTE2OC4xbC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjEgNy4zLTE1LjYgNC0xNC45LTQuNSAzLjMtNDIuMSAzMi4yLTcxLjQgNTYtNzEuNHM1Mi43IDI5LjMgNTYgNzEuNGMuNSA4LjUtMTAuOSAxMi0xNS4xIDQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2lzc1dpbmtIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTA0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDEuMSA0MDIuNWMtOC0yMC44LTMxLjUtMzEuNS01My4xLTI1LjlsLTguNCAyLjItMi4zLTguNGMtNS45LTIxLjQtMjctMzYuNS00OS0zMy0yNS4yIDQtNDAuNiAyOC42LTM0IDUyLjZsMjIuOSA4Mi42YzEuNSA1LjMgNyA4LjUgMTIuNCA3LjFsODMtMjEuNWMyNC4xLTYuMyAzNy43LTMxLjggMjguNS01NS43em0tMTc3LjYtNGMtNS42LTIwLjMtMi4zLTQyIDktNTkuNyAyOS43LTQ2LjMgOTguNy00NS41IDEyNy44IDQuMyA2LjQuMSAxMi42IDEuNCAxOC42IDIuOSAxMC45LTI3LjkgMTcuMS01OC4yIDE3LjEtOTBDNDk2IDExOSAzODUgOCAyNDggOFMwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDhjMzUuNCAwIDY4LjktNy41IDk5LjQtMjAuOS0uMy0uNy0yMy45LTg0LjYtMjMuOS04NC42ek0xNjggMjQwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTIwIDE1NmMwIDE5LjItMjguNyA0MS41LTcxLjUgNDQtOC41LjgtMTIuMS0xMS44LTMuNi0xNS40bDE3LTcuMmMxMy01LjUgMjAuOC0xMy41IDIwLjgtMjEuNXMtNy44LTE2LTIwLjgtMjEuNWwtMTctNy4yYy02LTIuNS01LjctMTIuMyAwLTE0LjhsMTctNy4yYzEzLTUuNSAyMC44LTEzLjUgMjAuOC0yMS41cy03LjgtMTYtMjAuOC0yMS41bC0xNy03LjJjLTguOC0zLjctNC42LTE2LjYgMy42LTE1LjQgNDIuOCAyLjUgNzEuNSAyNC44IDcxLjUgNDQgMCAxMy0xMy40IDI3LjMtMzUuMiAzNkMyNzQuNiAzNjguNyAyODggMzgzIDI4OCAzOTZ6bTE2LTE3OWMtOC4zIDcuNC0yMS42LjQtMTkuOC0xMC44IDQtMjUuMiAzNC4yLTQyLjEgNTkuOS00Mi4xUzQwMCAxODEgNDA0IDIwNi4yYzEuNyAxMS4xLTExLjMgMTguMy0xOS44IDEwLjhsLTkuNS04LjVjLTE0LjgtMTMuMi00Ni4yLTEzLjItNjEgMEwzMDQgMjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bS04MCAyMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xMzYgMTU2YzAgMTkuMi0yOC43IDQxLjUtNzEuNSA0NC04LjUuOC0xMi4xLTExLjgtMy42LTE1LjRsMTctNy4yYzEzLTUuNSAyMC44LTEzLjUgMjAuOC0yMS41cy03LjgtMTYtMjAuOC0yMS41bC0xNy03LjJjLTYtMi41LTYuMS0xMi4yIDAtMTQuOGwxNy03LjJjMTMtNS41IDIwLjgtMTMuNSAyMC44LTIxLjVzLTcuOC0xNi0yMC44LTIxLjVsLTE3LTcuMmMtOC42LTMuNi00LjgtMTYuNSAzLjYtMTUuNCA0Mi44IDIuNSA3MS41IDI0LjggNzEuNSA0NCAwIDEzLTEzLjQgMjcuMy0zNS4yIDM2QzI5MC42IDM2OC43IDMwNCAzODMgMzA0IDM5NnptMjQtMTU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2l3aUJpcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc1LjgxIDIxNy45OEM1NzIuNjQgMTU3LjQxIDUxOC4yOCAxMTIgNDU3LjYzIDExMmgtOS4zN2MtNTIuODIgMC0xMDQuMjUtMTYuMjUtMTQ3Ljc0LTQ2LjI0LTQxLjk5LTI4Ljk2LTk2LjA0LTQxLjYyLTE1My4yMS0yOC43QzEyOS4zIDQxLjEyLS4wOCA3OC4yNCAwIDIyNGMuMDQgNzAuOTUgMzguNjggMTMyLjggOTUuOTkgMTY2LjAxVjQ2NGMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNTQuMjZjMTUuMzYgMy45NiAzMS40IDYuMjYgNDggNi4yNiA1LjQ0IDAgMTAuNjgtLjczIDE2LTEuMThWNDY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di01OS40M2MxNC4yNC01LjA2IDI3Ljg4LTExLjM5IDQwLjM0LTE5LjUxQzM0Mi4wNyAzNTUuMjUgMzkzLjg2IDMzNiA0NDguNDYgMzM2YzI1LjQ4IDAgMTYuMDEtLjMxIDIzLjA1LS43OGw3NC40MSAxMzYuNDRjMi44NiA1LjIzIDguMyA4LjM0IDE0LjA1IDguMzQgMS4zMSAwIDIuNjQtLjE2IDMuOTUtLjUgNy4wOS0xLjggMTIuMDUtOC4xOSAxMi4wNS0xNS41IDAgMCAuMTQtMjQwLjI0LS4xNi0yNDYuMDJ6TTQ2My45NyAyNDhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0em04MCAxNTMuMjVsLTM5Ljg2LTczLjA4YzE1LjEyLTUuODMgMjguNzMtMTQuNiAzOS44Ni0yNS45OHY5OS4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFuZG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAxLjYyIDkyLjExTDI2Ny4yNCAyLjA0YTMxLjk1OCAzMS45NTggMCAwIDAtMjIuNDcgMEwxMC4zOCA5Mi4xMUExNi4wMDEgMTYuMDAxIDAgMCAwIDAgMTA3LjA5VjE0NGMwIDguODQgNy4xNiAxNiAxNiAxNmg0ODBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTM2LjkxYzAtNi42Ny00LjE0LTEyLjY0LTEwLjM4LTE0Ljk4ek02NCAxOTJ2MTYwSDQ4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OGg0NDh2LTQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNlYxOTJoLTY0djE2MGgtOTZWMTkyaC02NHYxNjBoLTk2VjE5Mkg2NHptNDMyIDI1NkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDgwYzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFuZ3VhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUyLjEgMjM2LjJjLTMuNS0xMi4xLTcuOC0zMy4yLTcuOC0zMy4yaC0uNXMtNC4zIDIxLjEtNy44IDMzLjJsLTExLjEgMzcuNUgxNjN6TTYxNiA5NkgzMzZ2MzIwaDI4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjR6bS0yNCAxMjBjMCA2LjYtNS40IDEyLTEyIDEyaC0xMS40Yy02LjkgMjMuNi0yMS43IDQ3LjQtNDIuNyA2OS45IDguNCA2LjQgMTcuMSAxMi41IDI2LjEgMTggNS41IDMuNCA3LjMgMTAuNSA0LjEgMTYuMmwtNy45IDEzLjljLTMuNCA1LjktMTAuOSA3LjgtMTYuNyA0LjMtMTIuNi03LjgtMjQuNS0xNi4xLTM1LjQtMjQuOS0xMC45IDguNy0yMi43IDE3LjEtMzUuNCAyNC45LTUuOCAzLjUtMTMuMyAxLjYtMTYuNy00LjNsLTcuOS0xMy45Yy0zLjItNS42LTEuNC0xMi44IDQuMi0xNi4yIDkuMy01LjcgMTgtMTEuNyAyNi4xLTE4LTcuOS04LjQtMTQuOS0xNy0yMS0yNS43LTQtNS43LTIuMi0xMy42IDMuNy0xNy4xbDYuNS0zLjkgNy4zLTQuM2M1LjQtMy4yIDEyLjQtMS43IDE2IDMuNCA1IDcgMTAuOCAxNCAxNy40IDIwLjkgMTMuNS0xNC4yIDIzLjgtMjguOSAzMC00My4ySDQxMmMtNi42IDAtMTItNS40LTEyLTEydi0xNmMwLTYuNiA1LjQtMTIgMTItMTJoNjR2LTE2YzAtNi42IDUuNC0xMiAxMi0xMmgxNmM2LjYgMCAxMiA1LjQgMTIgMTJ2MTZoNjRjNi42IDAgMTIgNS40IDEyIDEyek0wIDEyMHYyNzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMjgwVjk2SDI0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptNTguOSAyMTYuMUwxMTYuNCAxNjdjMS43LTQuOSA2LjItOC4xIDExLjQtOC4xaDMyLjVjNS4xIDAgOS43IDMuMyAxMS40IDguMWw1Ny41IDE2OS4xYzIuNiA3LjgtMy4xIDE1LjktMTEuNCAxNS45aC0yMi45YTEyIDEyIDAgMCAxLTExLjUtOC42bC05LjQtMzEuOWgtNjAuMmwtOS4xIDMxLjhjLTEuNSA1LjEtNi4yIDguNy0xMS41IDguN0g3MC4zYy04LjIgMC0xNC04LjEtMTEuNC0xNS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXB0b3BDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NS4wMyAyNjEuNjVjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwxMS4zMS0xMS4zMWM2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzTDI1My4yNSAxOTJsMzUuNzEtMzUuNzJjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtMTEuMzEtMTEuMzFjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTU4LjM0IDU4LjM0Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDU4LjM1IDU4LjM0em05Ni4wMS0xMS4zbDExLjMxIDExLjMxYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsNTguMzQtNTguMzRjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtNTguMzQtNTguMzRjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTExLjMxIDExLjMxYy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzTDM4Ni43NSAxOTJsLTM1LjcxIDM1LjcyYy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzek02MjQgNDE2SDM4MS41NGMtLjc0IDE5LjgxLTE0LjcxIDMyLTMyLjc0IDMySDI4OGMtMTguNjkgMC0zMy4wMi0xNy40Ny0zMi43Ny0zMkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgMzUuMiAyOC44IDY0IDY0IDY0aDUxMmMzNS4yIDAgNjQtMjguOCA2NC02NHYtMTZjMC04LjgtNy4yLTE2LTE2LTE2ek01NzYgNDhjMC0yNi40LTIxLjYtNDgtNDgtNDhIMTEyQzg1LjYgMCA2NCAyMS42IDY0IDQ4djMzNmg1MTJWNDh6bS02NCAyNzJIMTI4VjY0aDM4NHYyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcHRvcEhvdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiwyODhIMjA4YTE2LDE2LDAsMCwxLTE2LTE2VjIwOGExNiwxNiwwLDAsMSwxNi0xNmg2NGExNiwxNiwwLDAsMSwxNiwxNnYzNy4xMkMyOTkuMTEsMjMyLjI0LDMxNSwyMjQsMzMyLjgsMjI0SDQ2OS43NGw2LjY1LTcuNTNBMTYuNTEsMTYuNTEsMCwwLDAsNDgwLDIwN2ExNi4zMSwxNi4zMSwwLDAsMC00Ljc1LTEwLjYxTDQxNiwxNDRWNDhhMTYsMTYsMCwwLDAtMTYtMTZIMzY4YTE2LDE2LDAsMCwwLTE2LDE2Vjg3LjNMMjYzLjUsOC45MkMyNTgsNCwyNDcuNDUsMCwyNDAuMDUsMHMtMTcuOTMsNC0yMy40Nyw4LjkyTDQuNzgsMTk2LjQyQTE2LjE1LDE2LjE1LDAsMCwwLDAsMjA3YTE2LjQsMTYuNCwwLDAsMCwzLjU1LDkuMzlMMjIuMzQsMjM3LjdBMTYuMjIsMTYuMjIsMCwwLDAsMzMsMjQyLjQ4LDE2LjUxLDE2LjUxLDAsMCwwLDQyLjM0LDIzOUw2NCwyMTkuODhWMzg0YTMyLDMyLDAsMCwwLDMyLDMySDI3MlpNNjI5LjMzLDQ0OEg1OTJWMjg4YzAtMTcuNjctMTIuODktMzItMjguOC0zMkgzMzIuOGMtMTUuOTEsMC0yOC44LDE0LjMzLTI4LjgsMzJWNDQ4SDI2Ni42N0ExMC42NywxMC42NywwLDAsMCwyNTYsNDU4LjY3djEwLjY2QTQyLjgyLDQyLjgyLDAsMCwwLDI5OC42LDUxMkg1OTcuNEE0Mi44Miw0Mi44MiwwLDAsMCw2NDAsNDY5LjMzVjQ1OC42N0ExMC42NywxMC42NywwLDAsMCw2MjkuMzMsNDQ4Wk01NDQsNDQ4SDM1MlYzMDRINTQ0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXB0b3BNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMiAyMjRoNTZ2NTZhOCA4IDAgMCAwIDggOGg0OGE4IDggMCAwIDAgOC04di01Nmg1NmE4IDggMCAwIDAgOC04di00OGE4IDggMCAwIDAtOC04aC01NnYtNTZhOCA4IDAgMCAwLTgtOGgtNDhhOCA4IDAgMCAwLTggOHY1NmgtNTZhOCA4IDAgMCAwLTggOHY0OGE4IDggMCAwIDAgOCA4ek01NzYgNDhhNDguMTQgNDguMTQgMCAwIDAtNDgtNDhIMTEyYTQ4LjE0IDQ4LjE0IDAgMCAwLTQ4IDQ4djMzNmg1MTJ6bS02NCAyNzJIMTI4VjY0aDM4NHptMTEyIDk2SDM4MS41NGMtLjc0IDE5LjgxLTE0LjcxIDMyLTMyLjc0IDMySDI4OGMtMTguNjkgMC0zMy0xNy40Ny0zMi43Ny0zMkgxNmExNiAxNiAwIDAgMC0xNiAxNnYxNmE2NC4xOSA2NC4xOSAwIDAgMCA2NCA2NGg1MTJhNjQuMTkgNjQuMTkgMCAwIDAgNjQtNjR2LTE2YTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXB0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDQxNkgzODEuNTRjLS43NCAxOS44MS0xNC43MSAzMi0zMi43NCAzMkgyODhjLTE4LjY5IDAtMzMuMDItMTcuNDctMzIuNzctMzJIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMwIDM1LjIgMjguOCA2NCA2NCA2NGg1MTJjMzUuMiAwIDY0LTI4LjggNjQtNjR2LTE2YzAtOC44LTcuMi0xNi0xNi0xNnpNNTc2IDQ4YzAtMjYuNC0yMS42LTQ4LTQ4LTQ4SDExMkM4NS42IDAgNjQgMjEuNiA2NCA0OHYzMzZoNTEyVjQ4em0tNjQgMjcySDEyOFY2NGgzODR2MjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXVnaEJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMjQgMTk5LjRjMy4zLTQyLjEgMzIuMi03MS40IDU2LTcxLjRzNTIuNyAyOS4zIDU2IDcxLjRjLjcgOC42LTEwLjggMTEuOS0xNC45IDQuNWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4yIDcuNC0xNS44IDQuMS0xNS4xLTQuNXptLTE2MCAwYzMuMy00Mi4xIDMyLjItNzEuNCA1Ni03MS40czUyLjcgMjkuMyA1NiA3MS40Yy43IDguNi0xMC44IDExLjktMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMyA3LjQtMTUuOCA0LTE1LjEtNC41ek0zOTguOSAzMDZDMzkwIDM3NyAzMjkuNCA0MzIgMjU2IDQzMmgtMTZjLTczLjQgMC0xMzQtNTUtMTQyLjktMTI2LTEuMi05LjUgNi4zLTE4IDE1LjktMThoMjcwYzkuNiAwIDE3LjEgOC40IDE1LjkgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhdWdoU3F1aW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTMzLjggMTYxLjdsODAtNDhjMTEuNi02LjkgMjQgNy43IDE1LjQgMThMMzQzLjYgMTgwbDMzLjYgNDAuM2M4LjcgMTAuNC0zLjkgMjQuOC0xNS40IDE4bC04MC00OGMtNy43LTQuNy03LjctMTUuOSAwLTIwLjZ6bS0xNjMtMzBjLTguNi0xMC4zIDMuOC0yNC45IDE1LjQtMThsODAgNDhjNy44IDQuNyA3LjggMTUuOSAwIDIwLjZsLTgwIDQ4Yy0xMS41IDYuOC0yNC03LjYtMTUuNC0xOGwzMy42LTQwLjMtMzMuNi00MC4zek0zOTguOSAzMDZDMzkwIDM3NyAzMjkuNCA0MzIgMjU2IDQzMmgtMTZjLTczLjQgMC0xMzQtNTUtMTQyLjktMTI2LTEuMi05LjUgNi4zLTE4IDE1LjktMThoMjcwYzkuNiAwIDE3LjEgOC40IDE1LjkgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhdWdoV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0yMC4xIDE5OC4xYzQtMjUuMiAzNC4yLTQyLjEgNTkuOS00Mi4xczU1LjkgMTYuOSA1OS45IDQyLjFjMS43IDExLjEtMTEuNCAxOC4zLTE5LjggMTAuOGwtOS41LTguNWMtMTQuOC0xMy4yLTQ2LjItMTMuMi02MSAwTDI4OCAyMTdjLTguNCA3LjQtMjEuNi4zLTE5LjktMTAuOXpNMTY4IDE2MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bTIzMC45IDE0NkMzOTAgMzc3IDMyOS40IDQzMiAyNTYgNDMyaC0xNmMtNzMuNCAwLTEzNC01NS0xNDIuOS0xMjYtMS4yLTkuNSA2LjMtMTggMTUuOS0xOGgyNzBjOS42IDAgMTcuMSA4LjQgMTUuOSAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGF1Z2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptODAgMTUyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptLTE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptODggMjcyaC0xNmMtNzMuNCAwLTEzNC01NS0xNDIuOS0xMjYtMS4yLTkuNSA2LjMtMTggMTUuOS0xOGgyNzBjOS42IDAgMTcuMSA4LjQgMTUuOSAxOC04LjkgNzEtNjkuNSAxMjYtMTQyLjkgMTI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXllckdyb3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjQxIDE0OC4wMmwyMzIuOTQgMTA1LjY3YzYuOCAzLjA5IDE0LjQ5IDMuMDkgMjEuMjkgMGwyMzIuOTQtMTA1LjY3YzE2LjU1LTcuNTEgMTYuNTUtMzIuNTIgMC00MC4wM0wyNjYuNjUgMi4zMWEyNS42MDcgMjUuNjA3IDAgMCAwLTIxLjI5IDBMMTIuNDEgMTA3Ljk4Yy0xNi41NSA3LjUxLTE2LjU1IDMyLjUzIDAgNDAuMDR6bTQ4Ny4xOCA4OC4yOGwtNTguMDktMjYuMzMtMTYxLjY0IDczLjI3Yy03LjU2IDMuNDMtMTUuNTkgNS4xNy0yMy44NiA1LjE3cy0xNi4yOS0xLjc0LTIzLjg2LTUuMTdMNzAuNTEgMjA5Ljk3bC01OC4xIDI2LjMzYy0xNi41NSA3LjUtMTYuNTUgMzIuNSAwIDQwbDIzMi45NCAxMDUuNTljNi44IDMuMDggMTQuNDkgMy4wOCAyMS4yOSAwTDQ5OS41OSAyNzYuM2MxNi41NS03LjUgMTYuNTUtMzIuNSAwLTQwem0wIDEyNy44bC01Ny44Ny0yNi4yMy0xNjEuODYgNzMuMzdjLTcuNTYgMy40My0xNS41OSA1LjE3LTIzLjg2IDUuMTdzLTE2LjI5LTEuNzQtMjMuODYtNS4xN0w3MC4yOSAzMzcuODcgMTIuNDEgMzY0LjFjLTE2LjU1IDcuNS0xNi41NSAzMi41IDAgNDBsMjMyLjk0IDEwNS41OWM2LjggMy4wOCAxNC40OSAzLjA4IDIxLjI5IDBMNDk5LjU5IDQwNC4xYzE2LjU1LTcuNSAxNi41NS0zMi41IDAtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlYWYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ2LjIgOS43Yy01LjYtMTIuNS0yMS42LTEzLTI4LjMtMS4yQzQ4Ni45IDYyLjQgNDMxLjQgOTYgMzY4IDk2aC04MEMxODIgOTYgOTYgMTgyIDk2IDI4OGMwIDcgLjggMTMuNyAxLjUgMjAuNUMxNjEuMyAyNjIuOCAyNTMuNCAyMjQgMzg0IDIyNGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkMxMzIuNiAyNTYgMjYgNDEwLjEgMi40IDQ2OGMtNi42IDE2LjMgMS4yIDM0LjkgMTcuNSA0MS42IDE2LjQgNi44IDM1LTEuMSA0MS44LTE3LjMgMS41LTMuNiAyMC45LTQ3LjkgNzEuOS05MC42IDMyLjQgNDMuOSA5NCA4NS44IDE3NC45IDc3LjJDNDY1LjUgNDY3LjUgNTc2IDMyNi43IDU3NiAxNTQuM2MwLTUwLjItMTAuOC0xMDIuMi0yOS44LTE0NC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZW1vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODkuMDM4IDIyLjk2M0M0NjUuOTQ0LS4xMyA0MzQuNjQ4LTUuOTMgNDEzLjk0NyA2LjEyOWMtNTguOTA2IDM0LjMxMi0xODEuMjUtNTMuMDc3LTMyMS4wNzMgODYuNzQ2UzQwLjQ0MSAzNTUuMDQxIDYuMTI5IDQxMy45NDVjLTEyLjA1OSAyMC43MDItNi4yNiA1MS45OTkgMTYuODMzIDc1LjA5MyAyMy4wOTUgMjMuMDk1IDU0LjM5MiAyOC44OTEgNzUuMDk1IDE2LjgzMiA1OC45MDEtMzQuMzEgMTgxLjI0NiA1My4wNzkgMzIxLjA2OC04Ni43NDNTNDcxLjU2IDE1Ni45NiA1MDUuODcxIDk4LjA1NmMxMi4wNTktMjAuNzAyIDYuMjYxLTUxLjk5OS0xNi44MzMtNzUuMDkzek0yNDMuODgxIDk1LjUyMmMtNTguMTg5IDE0LjU0Ny0xMzMuODA4IDkwLjE1NS0xNDguMzU4IDE0OC4zNTgtMS44MTcgNy4yNy04LjM0MiAxMi4xMjQtMTUuNTExIDEyLjEyNC0xLjI4NCAwLTIuNTktLjE1Ni0zLjg5My0uNDgxLTguNTcyLTIuMTQ0LTEzLjc4NC0xMC44My0xMS42NDItMTkuNDAzQzgxLjkwMSAxNjYuNDI3IDE2Ni4zMTYgODEuOTMgMjM2LjExOSA2NC40NzhjOC41NzUtMi4xNDMgMTcuMjYxIDMuMDY5IDE5LjQwMyAxMS42NDJzLTMuMDY5IDE3LjI1OS0xMS42NDEgMTkuNDAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZXNzVGhhbkVxdWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0Ljk4IDIxNC4ybDMwMS40MSAxMTkuODdjMTguMzkgNi4wMyAzOC43MS0yLjU0IDQ1LjM4LTE5LjE1bDEyLjA5LTMwLjA4YzYuNjgtMTYuNjEtMi44Mi0zNC45Ny0yMS4yMS00MWwtMTc1LjQ0LTY4LjA1IDE3NS41Ni02OC4wOWMxOC4yOS02IDI3Ljc0LTI0LjI3IDIxLjEtNDAuNzlsLTEyLjAzLTI5LjkyYy02LjY0LTE2LjUzLTI2Ljg2LTI1LjA2LTQ1LjE1LTE5LjA2TDU0Ljk4IDEzNy44OUM0MS4yMSAxNDIuNDEgMzIgMTU0LjUgMzIgMTY4LjA3djE1Ljk2YzAgMTMuNTYgOS4yMSAyNS42NSAyMi45OCAzMC4xN3pNNDI0IDQwMEgyNGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY0OGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQwMGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di00OGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZXNzVGhhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjUuNDYgMzU3Ljc0TDE0Ny4wNCAyNTUuODlsMjE4LjQ3LTEwMS44OGMxNi4wMi03LjQ3IDIyLjk1LTI2LjUxIDE1LjQ4LTQyLjUzbC0xMy41Mi0yOUMzNjAgNjYuNDYgMzQwLjk2IDU5LjUzIDMyNC45NCA2N0wxOC40OCAyMDkuOTFhMzIuMDE0IDMyLjAxNCAwIDAgMC0xOC40OCAyOXYzNC4yNGMwIDEyLjQ0IDcuMjEgMjMuNzUgMTguNDggMjlsMzA2LjMxIDE0Mi44M2MxNi4wNiA3LjQ5IDM1LjE1LjU0IDQyLjY0LTE1LjUybDEzLjU2LTI5LjA4YzcuNDktMTYuMDYuNTQtMzUuMTUtMTUuNTMtNDIuNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxldmVsRG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuNTUzIDM5Mi4zMzFMMjA5LjU4NyA1MDQuMzM0Yy05LjQ4NSAxMC4yMTQtMjUuNjc2IDEwLjIyOS0zNS4xNzQgMEw3MC40MzggMzkyLjMzMUM1Ni4yMzIgMzc3LjAzMSA2Ny4wNjIgMzUyIDg4LjAyNSAzNTJIMTUyVjgwSDY4LjAyNGExMS45OTYgMTEuOTk2IDAgMCAxLTguNDg1LTMuNTE1bC01Ni01NkMtNC4wMjEgMTIuOTI2IDEuMzMzIDAgMTIuMDI0IDBIMjA4YzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHYzMjhoNjMuOTY2YzIwLjg3OCAwIDMxLjg1MSAyNC45NjkgMTcuNTg3IDQwLjMzMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGV2ZWxVcEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuNTUzIDExOS42NjlMMjA5LjU4NyA3LjY2NmMtOS40ODUtMTAuMjE0LTI1LjY3Ni0xMC4yMjktMzUuMTc0IDBMNzAuNDM4IDExOS42NjlDNTYuMjMyIDEzNC45NjkgNjcuMDYyIDE2MCA4OC4wMjUgMTYwSDE1MnYyNzJINjguMDI0YTExLjk5NiAxMS45OTYgMCAwIDAtOC40ODUgMy41MTVsLTU2IDU2Qy00LjAyMSA0OTkuMDc0IDEuMzMzIDUxMiAxMi4wMjQgNTEySDIwOGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTYwaDYzLjk2NmMyMC44NzggMCAzMS44NTEtMjQuOTY5IDE3LjU4Ny00MC4zMzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpZmVSaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4wMzMgOCA4IDExOS4wMzMgOCAyNTZzMTExLjAzMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzMyAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOHptMTczLjY5NiAxMTkuNTU5bC02My4zOTkgNjMuMzk5Yy0xMC45ODctMTguNTU5LTI2LjY3LTM0LjI1Mi00NS4yNTUtNDUuMjU1bDYzLjM5OS02My4zOTlhMjE4LjM5NiAyMTguMzk2IDAgMCAxIDQ1LjI1NSA0NS4yNTV6TTI1NiAzNTJjLTUzLjAxOSAwLTk2LTQyLjk4MS05Ni05NnM0Mi45ODEtOTYgOTYtOTYgOTYgNDIuOTgxIDk2IDk2LTQyLjk4MSA5Ni05NiA5NnpNMTI3LjU1OSA4Mi4zMDRsNjMuMzk5IDYzLjM5OWMtMTguNTU5IDEwLjk4Ny0zNC4yNTIgMjYuNjctNDUuMjU1IDQ1LjI1NWwtNjMuMzk5LTYzLjM5OWEyMTguMzcyIDIxOC4zNzIgMCAwIDEgNDUuMjU1LTQ1LjI1NXpNODIuMzA0IDM4NC40NDFsNjMuMzk5LTYzLjM5OWMxMC45ODcgMTguNTU5IDI2LjY3IDM0LjI1MiA0NS4yNTUgNDUuMjU1bC02My4zOTkgNjMuMzk5YTIxOC4zOTYgMjE4LjM5NiAwIDAgMS00NS4yNTUtNDUuMjU1em0zMDIuMTM3IDQ1LjI1NWwtNjMuMzk5LTYzLjM5OWMxOC41NTktMTAuOTg3IDM0LjI1Mi0yNi42NyA0NS4yNTUtNDUuMjU1bDYzLjM5OSA2My4zOTlhMjE4LjQwMyAyMTguNDAzIDAgMCAxLTQ1LjI1NSA0NS4yNTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpZ2h0YnVsYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzUyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05Ni4wNiA0NTQuMzVjLjAxIDYuMjkgMS44NyAxMi40NSA1LjM2IDE3LjY5bDE3LjA5IDI1LjY5YTMxLjk5IDMxLjk5IDAgMCAwIDI2LjY0IDE0LjI4aDYxLjcxYTMxLjk5IDMxLjk5IDAgMCAwIDI2LjY0LTE0LjI4bDE3LjA5LTI1LjY5YTMxLjk4OSAzMS45ODkgMCAwIDAgNS4zNi0xNy42OWwuMDQtMzguMzVIOTYuMDFsLjA1IDM4LjM1ek0wIDE3NmMwIDQ0LjM3IDE2LjQ1IDg0Ljg1IDQzLjU2IDExNS43OCAxNi41MiAxOC44NSA0Mi4zNiA1OC4yMyA1Mi4yMSA5MS40NS4wNC4yNi4wNy41Mi4xMS43OGgxNjAuMjRjLjA0LS4yNi4wNy0uNTEuMTEtLjc4IDkuODUtMzMuMjIgMzUuNjktNzIuNiA1Mi4yMS05MS40NUMzMzUuNTUgMjYwLjg1IDM1MiAyMjAuMzcgMzUyIDE3NiAzNTIgNzguNjEgMjcyLjkxLS4zIDE3NS40NSAwIDczLjQ0LjMxIDAgODIuOTcgMCAxNzZ6bTE3Ni04MGMtNDQuMTEgMC04MCAzNS44OS04MCA4MCAwIDguODQtNy4xNiAxNi0xNiAxNnMtMTYtNy4xNi0xNi0xNmMwLTYxLjc2IDUwLjI0LTExMiAxMTItMTEyIDguODQgMCAxNiA3LjE2IDE2IDE2cy03LjE2IDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNi42MTIgMTg1LjM5MWM1OS43NDcgNTkuODA5IDU4LjkyNyAxNTUuNjk4LjM2IDIxNC41OS0uMTEuMTItLjI0LjI1LS4zNi4zN2wtNjcuMiA2Ny4yYy01OS4yNyA1OS4yNy0xNTUuNjk5IDU5LjI2Mi0yMTQuOTYgMC01OS4yNy01OS4yNi01OS4yNy0xNTUuNyAwLTIxNC45NmwzNy4xMDYtMzcuMTA2YzkuODQtOS44NCAyNi43ODYtMy4zIDI3LjI5NCAxMC42MDYuNjQ4IDE3LjcyMiAzLjgyNiAzNS41MjcgOS42OSA1Mi43MjEgMS45ODYgNS44MjIuNTY3IDEyLjI2Mi0zLjc4MyAxNi42MTJsLTEzLjA4NyAxMy4wODdjLTI4LjAyNiAyOC4wMjYtMjguOTA1IDczLjY2LTEuMTU1IDEwMS45NiAyOC4wMjQgMjguNTc5IDc0LjA4NiAyOC43NDkgMTAyLjMyNS41MWw2Ny4yLTY3LjE5YzI4LjE5MS0yOC4xOTEgMjguMDczLTczLjc1NyAwLTEwMS44My0zLjcwMS0zLjY5NC03LjQyOS02LjU2NC0xMC4zNDEtOC41NjlhMTYuMDM3IDE2LjAzNyAwIDAgMS02Ljk0Ny0xMi42MDZjLS4zOTYtMTAuNTY3IDMuMzQ4LTIxLjQ1NiAxMS42OTgtMjkuODA2bDIxLjA1NC0yMS4wNTVjNS41MjEtNS41MjEgMTQuMTgyLTYuMTk5IDIwLjU4NC0xLjczMWExNTIuNDgyIDE1Mi40ODIgMCAwIDEgMjAuNTIyIDE3LjE5N3pNNDY3LjU0NyA0NC40NDljLTU5LjI2MS01OS4yNjItMTU1LjY5LTU5LjI3LTIxNC45NiAwbC02Ny4yIDY3LjJjLS4xMi4xMi0uMjUuMjUtLjM2LjM3LTU4LjU2NiA1OC44OTItNTkuMzg3IDE1NC43ODEuMzYgMjE0LjU5YTE1Mi40NTQgMTUyLjQ1NCAwIDAgMCAyMC41MjEgMTcuMTk2YzYuNDAyIDQuNDY4IDE1LjA2NCAzLjc4OSAyMC41ODQtMS43MzFsMjEuMDU0LTIxLjA1NWM4LjM1LTguMzUgMTIuMDk0LTE5LjIzOSAxMS42OTgtMjkuODA2YTE2LjAzNyAxNi4wMzcgMCAwIDAtNi45NDctMTIuNjA2Yy0yLjkxMi0yLjAwNS02LjY0LTQuODc1LTEwLjM0MS04LjU2OS0yOC4wNzMtMjguMDczLTI4LjE5MS03My42MzkgMC0xMDEuODNsNjcuMi02Ny4xOWMyOC4yMzktMjguMjM5IDc0LjMtMjguMDY5IDEwMi4zMjUuNTEgMjcuNzUgMjguMyAyNi44NzIgNzMuOTM0LTEuMTU1IDEwMS45NmwtMTMuMDg3IDEzLjA4N2MtNC4zNSA0LjM1LTUuNzY5IDEwLjc5LTMuNzgzIDE2LjYxMiA1Ljg2NCAxNy4xOTQgOS4wNDIgMzQuOTk5IDkuNjkgNTIuNzIxLjUwOSAxMy45MDYgMTcuNDU0IDIwLjQ0NiAyNy4yOTQgMTAuNjA2bDM3LjEwNi0zNy4xMDZjNTkuMjcxLTU5LjI1OSA1OS4yNzEtMTU1LjY5OS4wMDEtMjE0Ljk1OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlyYVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcxLjk5NCAyNTZoLTQ4LjAxOUMzMTcuNjQgMjU2IDMxMiAyNjAuOTEyIDMxMiAyNjcuMjQ2IDMxMiAzNjggMjMwLjE3OSA0MTYgMTQ0IDQxNlYyNTYuNzgxbDEzNC42MDMtMjkuOTEyQTEyIDEyIDAgMCAwIDI4OCAyMTUuMTU1di00MC45NzZjMC03LjY3Ny03LjEwOS0xMy4zOC0xNC42MDMtMTEuNzE0TDE0NCAxOTEuMjE5VjE2MC43OGwxMzQuNjAzLTI5LjkxMkExMiAxMiAwIDAgMCAyODggMTE5LjE1NFY3OC4xNzljMC03LjY3Ny03LjEwOS0xMy4zOC0xNC42MDMtMTEuNzE0TDE0NCA5NS4yMTlWNDRjMC02LjYyNy01LjM3My0xMi0xMi0xMkg3NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY2OC45OTdMOS4zOTcgMTI1LjEzMUExMiAxMiAwIDAgMCAwIDEzNi44NDV2NDAuOTc2YzAgNy42NzcgNy4xMDkgMTMuMzggMTQuNjAzIDExLjcxNEw2NCAxNzguNTU4djMwLjQzOUw5LjM5NyAyMjEuMTMxQTEyIDEyIDAgMCAwIDAgMjMyLjg0NXY0MC45NzZjMCA3LjY3NyA3LjEwOSAxMy4zOCAxNC42MDMgMTEuNzE0TDY0IDI3NC41NThWNDY4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNzkuNTgzYzEzNC4wOTEgMCAyMjMuMjU1LTc3LjgzNCAyMjguNDA4LTIxMS41OTIuMjYxLTYuNzgyLTUuMjExLTEyLjQwOC0xMS45OTctMTIuNDA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaXN0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCA0ODBINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGg0MTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OHpNMTI4IDEyMGMtMjIuMDkxIDAtNDAgMTcuOTA5LTQwIDQwczE3LjkwOSA0MCA0MCA0MCA0MC0xNy45MDkgNDAtNDAtMTcuOTA5LTQwLTQwLTQwem0wIDk2Yy0yMi4wOTEgMC00MCAxNy45MDktNDAgNDBzMTcuOTA5IDQwIDQwIDQwIDQwLTE3LjkwOSA0MC00MC0xNy45MDktNDAtNDAtNDB6bTAgOTZjLTIyLjA5MSAwLTQwIDE3LjkwOS00MCA0MHMxNy45MDkgNDAgNDAgNDAgNDAtMTcuOTA5IDQwLTQwLTE3LjkwOS00MC00MC00MHptMjg4LTEzNnYtMzJjMC02LjYyNy01LjM3My0xMi0xMi0xMkgyMDRjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MzJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyMDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMCA5NnYtMzJjMC02LjYyNy01LjM3My0xMi0xMi0xMkgyMDRjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MzJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyMDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMCA5NnYtMzJjMC02LjYyNy01LjM3My0xMi0xMi0xMkgyMDRjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MzJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyMDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlzdE9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxLjc3IDQwMWwxNy41LTIwLjE1YTE5LjkyIDE5LjkyIDAgMCAwIDUuMDctMTQuMTl2LTMuMzFDODQuMzQgMzU2IDgwLjUgMzUyIDczIDM1MkgxNmE4IDggMCAwIDAtOCA4djE2YTggOCAwIDAgMCA4IDhoMjIuODNhMTU3LjQxIDE1Ny40MSAwIDAgMC0xMSAxMi4zMWwtNS42MSA3Yy00IDUuMDctNS4yNSAxMC4xMy0yLjggMTQuODhsMS4wNSAxLjkzYzMgNS43NiA2LjI5IDcuODggMTIuMjUgNy44OGg0LjczYzEwLjMzIDAgMTUuOTQgMi40NCAxNS45NCA5LjA5IDAgNC43Mi00LjIgOC4yMi0xNC4zNiA4LjIyYTQxLjU0IDQxLjU0IDAgMCAxLTE1LjQ3LTMuMTJjLTYuNDktMy44OC0xMS43NC0zLjUtMTUuNiAzLjEybC01LjU5IDkuMzFjLTMuNzIgNi4xMy0zLjE5IDExLjcyIDIuNjMgMTUuOTQgNy43MSA0LjY5IDIwLjM4IDkuNDQgMzcgOS40NCAzNC4xNiAwIDQ4LjUtMjIuNzUgNDguNS00NC4xMi0uMDMtMTQuMzgtOS4xMi0yOS43Ni0yOC43My0zNC44OHpNNDk2IDIyNEgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xNjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNlY4MGExNiAxNiAwIDAgMC0xNi0xNnptMCAzMjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6TTE2IDE2MGg2NGE4IDggMCAwIDAgOC04di0xNmE4IDggMCAwIDAtOC04SDY0VjQwYTggOCAwIDAgMC04LThIMzJhOCA4IDAgMCAwLTcuMTQgNC40MmwtOCAxNkE4IDggMCAwIDAgMjQgNjRoOHY2NEgxNmE4IDggMCAwIDAtOCA4djE2YTggOCAwIDAgMCA4IDh6bS0zLjkxIDE2MEg4MGE4IDggMCAwIDAgOC04di0xNmE4IDggMCAwIDAtOC04SDQxLjMyYzMuMjktMTAuMjkgNDguMzQtMTguNjggNDguMzQtNTYuNDQgMC0yOS4wNi0yNS0zOS41Ni00NC40Ny0zOS41Ni0yMS4zNiAwLTMzLjggMTAtNDAuNDYgMTguNzUtNC4zNyA1LjU5LTMgMTAuODQgMi44IDE1LjM3bDguNTggNi44OGM1LjYxIDQuNTYgMTEgMi40NyAxNi4xMi0yLjQ0YTEzLjQ0IDEzLjQ0IDAgMCAxIDkuNDYtMy44NGMzLjMzIDAgOS4yOCAxLjU2IDkuMjggOC43NUM1MSAyNDguMTkgMCAyNTcuMzEgMCAzMDQuNTl2NEMwIDMxNiA1LjA4IDMyMCAxMi4wOSAzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpc3RVbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCA0OGE0OCA0OCAwIDEgMCA0OCA0OCA0OCA0OCAwIDAgMC00OC00OHptMCAxNjBhNDggNDggMCAxIDAgNDggNDggNDggNDggMCAwIDAtNDgtNDh6bTAgMTYwYTQ4IDQ4IDAgMSAwIDQ4IDQ4IDQ4IDQ4IDAgMCAwLTQ4LTQ4em00NDggMTZIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtMzIwSDE3NmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMjBhMTYgMTYgMCAwIDAgMTYtMTZWODBhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgMTYwSDE3NmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMjBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwIDM2OEgxNmExNiAxNiAwIDAgMC0xNiAxNnY2NGExNiAxNiAwIDAgMCAxNiAxNmg2NGExNiAxNiAwIDAgMCAxNi0xNnYtNjRhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtMzIwSDE2QTE2IDE2IDAgMCAwIDAgNjR2NjRhMTYgMTYgMCAwIDAgMTYgMTZoNjRhMTYgMTYgMCAwIDAgMTYtMTZWNjRhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgMTYwSDE2YTE2IDE2IDAgMCAwLTE2IDE2djY0YTE2IDE2IDAgMCAwIDE2IDE2aDY0YTE2IDE2IDAgMCAwIDE2LTE2di02NGExNiAxNiAwIDAgMC0xNi0xNnptNDE2IDE3NkgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0zMjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNlY4MGExNiAxNiAwIDAgMC0xNi0xNnptMCAxNjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvY2F0aW9uQXJyb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ0LjUyIDMuNTJMMjguNzQgMTk1LjQyYy00Ny45NyAyMi4zOS0zMS45OCA5Mi43NSAxOS4xOSA5Mi43NWgxNzUuOTF2MTc1LjkxYzAgNTEuMTcgNzAuMzYgNjcuMTcgOTIuNzUgMTkuMTlsMTkxLjktNDE1Ljc4YzE1Ljk5LTM4LjM5LTI1LjU5LTc5Ljk3LTYzLjk3LTYzLjk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMb2NrT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjMuNSAwQzMzOS41LjMgMjcyIDY5LjUgMjcyIDE1My41VjIyNEg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MTkyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYyNzJjMC0yNi41LTIxLjUtNDgtNDgtNDhoLTQ4di03MS4xYzAtMzkuNiAzMS43LTcyLjUgNzEuMy03Mi45IDQwLS40IDcyLjcgMzIuMSA3Mi43IDcydjgwYzAgMTMuMyAxMC43IDI0IDI0IDI0aDMyYzEzLjMgMCAyNC0xMC43IDI0LTI0di04MEM1NzYgNjggNTA3LjUtLjMgNDIzLjUgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMjI0aC0yNHYtNzJDMzc2IDY4LjIgMzA3LjggMCAyMjQgMFM3MiA2OC4yIDcyIDE1MnY3Mkg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MTkyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYyNzJjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0xMDQgMEgxNTJ2LTcyYzAtMzkuNyAzMi4zLTcyIDcyLTcyczcyIDMyLjMgNzIgNzJ2NzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvbmdBcnJvd0FsdERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY4IDM0NS45NDFWNDRjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNTZjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MzAxLjk0MUg0MS45NDFjLTIxLjM4MiAwLTMyLjA5IDI1Ljg1MS0xNi45NzEgNDAuOTcxbDg2LjA1OSA4Ni4wNTljOS4zNzMgOS4zNzMgMjQuNTY5IDkuMzczIDMzLjk0MSAwbDg2LjA1OS04Ni4wNTljMTUuMTE5LTE1LjExOSA0LjQxMS00MC45NzEtMTYuOTcxLTQwLjk3MUgxNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvbmdBcnJvd0FsdExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTM0LjA1OSAyOTZINDM2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTU2YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTM0LjA1OXYtNDYuMDU5YzAtMjEuMzgyLTI1Ljg1MS0zMi4wOS00MC45NzEtMTYuOTcxTDcuMDI5IDIzOS4wMjljLTkuMzczIDkuMzczLTkuMzczIDI0LjU2OSAwIDMzLjk0MWw4Ni4wNTkgODYuMDU5YzE1LjExOSAxNS4xMTkgNDAuOTcxIDQuNDExIDQwLjk3MS0xNi45NzFWMjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMb25nQXJyb3dBbHRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuOTQxIDIxNkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY1NmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDMwMS45NDF2NDYuMDU5YzAgMjEuMzgyIDI1Ljg1MSAzMi4wOSA0MC45NzEgMTYuOTcxbDg2LjA1OS04Ni4wNTljOS4zNzMtOS4zNzMgOS4zNzMtMjQuNTY5IDAtMzMuOTQxbC04Ni4wNTktODYuMDU5Yy0xNS4xMTktMTUuMTE5LTQwLjk3MS00LjQxMS00MC45NzEgMTYuOTcxVjIxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9uZ0Fycm93QWx0VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODggMTY2LjA1OVY0NjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg1NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyVjE2Ni4wNTloNDYuMDU5YzIxLjM4MiAwIDMyLjA5LTI1Ljg1MSAxNi45NzEtNDAuOTcxbC04Ni4wNTktODYuMDU5Yy05LjM3My05LjM3My0yNC41NjktOS4zNzMtMzMuOTQxIDBsLTg2LjA1OSA4Ni4wNTljLTE1LjExOSAxNS4xMTktNC40MTEgNDAuOTcxIDE2Ljk3MSA0MC45NzFIODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvd1Zpc2lvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjkuMzQ0IDIzMS42MzFDNTEyLjk2IDEzNS45NDkgNDA3LjgxIDcyIDI4OCA3MmMtMjguNDY4IDAtNTYuMTAyIDMuNjE5LTgyLjQ1MSAxMC40MDlMMTUyLjc3OCAxMC4yNGMtNy42MDEtMTAuODU4LTIyLjU2NC0xMy41LTMzLjQyMy01LjlsLTEzLjExNCA5LjE3OGMtMTAuODYgNy42MDEtMTMuNTAyIDIyLjU2Ni01LjkgMzMuNDI2bDQzLjEzMSA1OC4zOTVDODkuNDQ5IDEzMS43MyA0MC4yMjggMTc0LjY4MyA2LjY4MiAyMzEuNTgxYy0uMDEuMDE3LS4wMjMuMDMzLS4wMzQuMDUtOC43NjUgMTQuODc1LTguOTY0IDMzLjUyOCAwIDQ4LjczOSAzOC41IDY1LjMzMiA5OS43NDIgMTE1Ljg2MiAxNzIuODU5IDE0MS4zNDlMNTUuMzE2IDI0NC4zMDJBMjcyLjE5NCAyNzIuMTk0IDAgMCAxIDgzLjYxIDIwOC4zOWwxMTkuNCAxNzAuNThoLjAxbDQwLjYzIDU4LjA0YTMzMC4wNTUgMzMwLjA1NSAwIDAgMCA3OC45NCAxLjE3bC0xODkuOTgtMjcxLjRhMjc3LjYyOCAyNzcuNjI4IDAgMCAxIDM4Ljc3Ny0yMS41NjNsMjUxLjgzNiAzNTYuNTQ0YzcuNjAxIDEwLjg1OCAyMi41NjQgMTMuNDk5IDMzLjQyMyA1LjlsMTMuMTE0LTkuMTc4YzEwLjg2LTcuNjAxIDEzLjUwMi0yMi41NjcgNS45LTMzLjQyNmwtNDMuMTItNTguMzc3LS4wMDctLjAwOWM1Ny4xNjEtMjcuOTc4IDEwNC44MzUtNzIuMDQgMTM2LjgxLTEyNi4zMDFhNDcuOTM4IDQ3LjkzOCAwIDAgMCAuMDAxLTQ4LjczOXpNMzkwLjAyNiAzNDUuOTRsLTE5LjA2Ni0yNy4yM2MyNC42ODItMzIuNTY3IDI3LjcxMS03Ni4zNTMgOC44LTExMS42OHYuMDNjMCAyMy42NS0xOS4xNyA0Mi44Mi00Mi44MiA0Mi44Mi0yMy44MjggMC00Mi44Mi0xOS4zNDktNDIuODItNDIuODIgMC0yMy42NSAxOS4xNy00Mi44MiA0Mi44Mi00Mi44MmguMDNjLTI0Ljc1LTEzLjI0OS01My41MjItMTUuNjQzLTc5LjUxLTcuNjhsLTE5LjA2OC0yNy4yMzdDMjUzLjc1OCAxMjMuMzA2IDI3MC40ODggMTIwIDI4OCAxMjBjNzUuMTYyIDAgMTM2IDYwLjgyNiAxMzYgMTM2IDAgMzQuNTA0LTEyLjgzMyA2NS45NzUtMzMuOTc0IDg5Ljk0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMdWdnYWdlQ2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMzIwaDMyVjk2aC0zMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxNjBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMnptMzUyLTMyVjEyOGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC0zMnYyMjRoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnptNDggOTZIMTI4VjE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE2QzcuMTYgMCAwIDcuMTYgMCAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0OHYzNjhjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoODIuOTRjLTEuNzkgNS4wMy0yLjk0IDEwLjM2LTIuOTQgMTYgMCAyNi41MSAyMS40OSA0OCA0OCA0OHM0OC0yMS40OSA0OC00OGMwLTUuNjQtMS4xNS0xMC45Ny0yLjk0LTE2aDE5Ny44OGMtMS43OSA1LjAzLTIuOTQgMTAuMzYtMi45NCAxNiAwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4czQ4LTIxLjQ5IDQ4LTQ4YzAtNS42NC0xLjE1LTEwLjk3LTIuOTQtMTZINjI0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNNDgwIDk2VjQ4YzAtMjYuNTEtMjEuNDktNDgtNDgtNDhoLTk2Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djI3MmgxOTJWOTZ6bS00OCAwaC05NlY0OGg5NnY0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTHVuZ3NWaXJ1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDQsMTUwLjY4VjE2QTE2LDE2LDAsMCwwLDMyOCwwSDMxMmExNiwxNiwwLDAsMC0xNiwxNlYxNTAuNjhhNDYuNDUsNDYuNDUsMCwwLDEsNDgsMFpNMTk1LjU0LDQ0NC40NmE0OC4wNiw0OC4wNiwwLDAsMSwwLTY3Ljg4bDguNTgtOC41OEgxOTJhNDgsNDgsMCwwLDEsMC05NmgxMi4xMmwtOC41OC04LjU3YTQ4LDQ4LDAsMCwxLDYwLjQ2LTc0VjE2MS43NUMyNTYsMTI1LjM4LDIyNC42Miw5NiwxODYsOTZjLTQ0LDAtNTgsMjguNS04MC4xMiw2My4xM2E4MTkuNTIsODE5LjUyLDAsMCwwLTEwMiwyMzFBMTEzLjE2LDExMy4xNiwwLDAsMCwwLDQxOS43NUMwLDQ4MSw2Mi41LDUyNS4yNiwxMjUuMjUsNTA4LjM4bDU5LjUtMTUuODdhOTguNTEsOTguNTEsMCwwLDAsNTIuNS0zNC43NSw0Ni40OSw0Ni40OSwwLDAsMS00MS43MS0xMy4zWm0yMjYuMjktMjIuNjNhMTYsMTYsMCwwLDAsMC0yMi42MmwtOC41OC04LjU4QzM5My4wOSwzNzAuNDcsNDA3LjM3LDMzNiw0MzUuODgsMzM2SDQ0OGExNiwxNiwwLDAsMCwwLTMySDQzNS44OGMtMjguNTEsMC00Mi43OS0zNC40Ny0yMi42My01NC42Mmw4LjU4LTguNThhMTYsMTYsMCwwLDAtMjIuNjMtMjIuNjNsLTguNTcsOC41OEMzNzAuNDcsMjQ2LjkxLDMzNiwyMzIuNjMsMzM2LDIwNC4xMlYxOTJhMTYsMTYsMCwwLDAtMzIsMHYxMi4xMmMwLDI4LjUxLTM0LjQ3LDQyLjc5LTU0LjYzLDIyLjYzbC04LjU3LTguNThhMTYsMTYsMCwwLDAtMjIuNjMsMjIuNjNsOC41OCw4LjU4YzIwLjE2LDIwLjE1LDUuODgsNTQuNjItMjIuNjMsNTQuNjJIMTkyYTE2LDE2LDAsMCwwLDAsMzJoMTIuMTJjMjguNTEsMCw0Mi43OSwzNC40NywyMi42Myw1NC42M2wtOC41OCw4LjU4YTE2LDE2LDAsMSwwLDIyLjYzLDIyLjYybDguNTctOC41N0MyNjkuNTMsMzkzLjEsMzA0LDQwNy4zOCwzMDQsNDM1Ljg4VjQ0OGExNiwxNiwwLDAsMCwzMiwwVjQzNS44OGMwLTI4LjUsMzQuNDctNDIuNzgsNTQuNjMtMjIuNjJsOC41Nyw4LjU3YTE2LDE2LDAsMCwwLDIyLjYzLDBaTTI4OCwzMDRhMTYsMTYsMCwxLDEsMTYtMTZBMTYsMTYsMCwwLDEsMjg4LDMwNFptNjQsNjRhMTYsMTYsMCwxLDEsMTYtMTZBMTYsMTYsMCwwLDEsMzUyLDM2OFptMjg0LjEyLDIyLjEzYTgxOS41Miw4MTkuNTIsMCwwLDAtMTAyLTIzMUM1MTIsMTI0LjUsNDk4LDk2LDQ1NCw5NmMtMzguNjIsMC03MCwyOS4zOC03MCw2NS43NXYyNy43MmE0OCw0OCwwLDAsMSw2MC40Niw3NEw0MzUuODgsMjcySDQ0OGE0OCw0OCwwLDAsMSwwLDk2SDQzNS44OGw4LjU4LDguNThhNDcuNyw0Ny43LDAsMCwxLTQxLjcxLDgxLjE4LDk4LjUxLDk4LjUxLDAsMCwwLDUyLjUsMzQuNzVsNTkuNSwxNS44N0M1NzcuNSw1MjUuMjYsNjQwLDQ4MSw2NDAsNDE5Ljc1QTExMy4xNiwxMTMuMTYsMCwwLDAsNjM2LjEyLDM5MC4xM1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTHVuZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjM2LjExIDM5MC4xNUM2MTQuNDQgMzA4Ljg1IDU4MC4wNyAyMzEgNTM0LjEgMTU5LjEzIDUxMS45OCAxMjQuNTYgNDk4LjAzIDk2IDQ1NC4wNSA5NiA0MTUuMzYgOTYgMzg0IDEyNS40MiAzODQgMTYxLjcxdjYwLjExbC0zMi44OC0yMS45MmExNS45OTYgMTUuOTk2IDAgMCAxLTcuMTItMTMuMzFWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNzAuNTljMCA1LjM1LTIuNjcgMTAuMzQtNy4xMiAxMy4zMUwyNTYgMjIxLjgydi02MC4xMUMyNTYgMTI1LjQyIDIyNC42NCA5NiAxODUuOTUgOTZjLTQzLjk4IDAtNTcuOTMgMjguNTYtODAuMDUgNjMuMTNDNTkuOTMgMjMxIDI1LjU2IDMwOC44NSAzLjg5IDM5MC4xNSAxLjMgMzk5Ljg0IDAgNDA5Ljc5IDAgNDE5Ljc4YzAgNjEuMjMgNjIuNDggMTA1LjQ0IDEyNS4yNCA4OC42Mmw1OS41LTE1Ljk1YzQyLjE4LTExLjMgNzEuMjYtNDcuNDcgNzEuMjYtODguNjJ2LTg3LjQ5bC04NS44NCA1Ny4yM2E3Ljk5MiA3Ljk5MiAwIDAgMS0xMS4wOS0yLjIybC04Ljg4LTEzLjMxYTcuOTkyIDcuOTkyIDAgMCAxIDIuMjItMTEuMDlMMzIwIDIzNS4yM2wxNjcuNTkgMTExLjcyYTcuOTk0IDcuOTk0IDAgMCAxIDIuMjIgMTEuMDlsLTguODggMTMuMzFhNy45OTQgNy45OTQgMCAwIDEtMTEuMDkgMi4yMkwzODQgMzE2LjM0djg3LjQ5YzAgNDEuMTUgMjkuMDggNzcuMzEgNzEuMjYgODguNjJsNTkuNSAxNS45NUM1NzcuNTIgNTI1LjIyIDY0MCA0ODEuMDEgNjQwIDQxOS43OGMwLTkuOTktMS4zLTE5Ljk0LTMuODktMjkuNjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hZ2ljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA5NmwxNi0zMiAzMi0xNi0zMi0xNi0xNi0zMi0xNiAzMi0zMiAxNiAzMiAxNiAxNiAzMnpNODAgMTYwbDI2LjY2LTUzLjMzTDE2MCA4MGwtNTMuMzQtMjYuNjdMODAgMCA1My4zNCA1My4zMyAwIDgwbDUzLjM0IDI2LjY3TDgwIDE2MHptMzUyIDEyOGwtMjYuNjYgNTMuMzNMMzUyIDM2OGw1My4zNCAyNi42N0w0MzIgNDQ4bDI2LjY2LTUzLjMzTDUxMiAzNjhsLTUzLjM0LTI2LjY3TDQzMiAyODh6bTcwLjYyLTE5My43N0w0MTcuNzcgOS4zOEM0MTEuNTMgMy4xMiA0MDMuMzQgMCAzOTUuMTUgMGMtOC4xOSAwLTE2LjM4IDMuMTItMjIuNjMgOS4zOEw5LjM4IDM3Mi41MmMtMTIuNSAxMi41LTEyLjUgMzIuNzYgMCA0NS4yNWw4NC44NSA4NC44NWM2LjI1IDYuMjUgMTQuNDQgOS4zNyAyMi42MiA5LjM3IDguMTkgMCAxNi4zOC0zLjEyIDIyLjYzLTkuMzdsMzYzLjE0LTM2My4xNWMxMi41LTEyLjQ4IDEyLjUtMzIuNzUgMC00NS4yNHpNMzU5LjQ1IDIwMy40NmwtNTAuOTEtNTAuOTEgODYuNi04Ni42IDUwLjkxIDUwLjkxLTg2LjYgODYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFnbmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2NC4wNyAxNDguMUgxMmExMiAxMiAwIDAgMS0xMi0xMnYtODBhMzYgMzYgMCAwIDEgMzYtMzZoMTA0YTM2IDM2IDAgMCAxIDM2IDM2djgwYTExLjg5IDExLjg5IDAgMCAxLTExLjkzIDEyem0zNDcuOTMtMTJWNTZhMzYgMzYgMCAwIDAtMzYtMzZIMzcyYTM2IDM2IDAgMCAwLTM2IDM2djgwYTEyIDEyIDAgMCAwIDEyIDEyaDE1MmExMS44OSAxMS44OSAwIDAgMCAxMi0xMS45em0tMTY0IDQ0YTEyIDEyIDAgMCAwLTEyIDEydjUyYzAgMTI4LjEtMTYwIDEyNy45LTE2MCAwdi01MmExMiAxMiAwIDAgMC0xMi0xMkgxMi4xYTEyIDEyIDAgMCAwLTEyIDEyLjFjLjEgMjEuNC42IDQwLjMgMCA1My4zIDAgMTUwLjYgMTM2LjE3IDI0Ni42IDI1Ni43NSAyNDYuNnMyNTUtOTYgMjU1LTI0Ni43Yy0uNi0xMi44LS4yLTMzIDAtNTMuMmExMiAxMiAwIDAgMC0xMi0xMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWlsQnVsayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgNDQ4Yy0yNS42IDAtNTEuMi0yMi40LTY0LTMyLTY0LTQ0LjgtODMuMi02MC44LTk2LTcwLjRWNDgwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMjU2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzQ1LjZjLTEyLjggOS42LTMyIDI1LjYtOTYgNzAuNC0xMi44IDkuNi0zOC40IDMyLTY0IDMyem0xMjgtMTkySDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjE2YzI1LjYgMTkuMiAyMi40IDE5LjIgMTE1LjIgODYuNCA5LjYgNi40IDI4LjggMjUuNiA0NC44IDI1LjZzMzUuMi0xOS4yIDQ0LjgtMjIuNGM5Mi44LTY3LjIgODkuNi02Ny4yIDExNS4yLTg2LjRWMjg4YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTI1Ni05NkgyMjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJoOTZjMzMuMjEgMCA2MC41OSAyNS40MiA2My43MSA1Ny44MmwuMjktLjIyVjQxNmgxOTJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYxOTJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptLTMyIDEyOGgtNjR2LTY0aDY0djY0em0tMzUyLTk2YzAtMzUuMjkgMjguNzEtNjQgNjQtNjRoMjI0VjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIOTZDNzguMzMgMCA2NCAxNC4zMyA2NCAzMnYxOTJoOTZ2LTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAxOTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBjMzUuMzQ2IDAgNjQgMjguNjU0IDY0IDY0cy0yOC42NTQgNjQtNjQgNjQtNjQtMjguNjU0LTY0LTY0UzYwLjY1NCAwIDk2IDBtNDggMTQ0aC0xMS4zNmMtMjIuNzExIDEwLjQ0My00OS41OSAxMC44OTQtNzMuMjggMEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHYxMzZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDE2djEzNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoNjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjM1MmgxNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTkyYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcE1hcmtlZEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMGMtNjkuNTkgMC0xMjYgNTYuNDEtMTI2IDEyNiAwIDU2LjI2IDgyLjM1IDE1OC44IDExMy45IDE5Ni4wMiA2LjM5IDcuNTQgMTcuODIgNy41NCAyNC4yIDBDMzMxLjY1IDI4NC44IDQxNCAxODIuMjYgNDE0IDEyNiA0MTQgNTYuNDEgMzU3LjU5IDAgMjg4IDB6bTAgMTY4Yy0yMy4yIDAtNDItMTguOC00Mi00MnMxOC44LTQyIDQyLTQyIDQyIDE4LjggNDIgNDItMTguOCA0Mi00MiA0MnpNMjAuMTIgMjE1Ljk1QTMyLjAwNiAzMi4wMDYgMCAwIDAgMCAyNDUuNjZ2MjUwLjMyYzAgMTEuMzIgMTEuNDMgMTkuMDYgMjEuOTQgMTQuODZMMTYwIDQ0OFYyMTQuOTJjLTguODQtMTUuOTgtMTYuMDctMzEuNTQtMjEuMjUtNDYuNDJMMjAuMTIgMjE1Ljk1ek0yODggMzU5LjY3Yy0xNC4wNyAwLTI3LjM4LTYuMTgtMzYuNTEtMTYuOTYtMTkuNjYtMjMuMi00MC41Ny00OS42Mi01OS40OS03Ni43MnYxODJsMTkyIDY0VjI2NmMtMTguOTIgMjcuMDktMzkuODIgNTMuNTItNTkuNDkgNzYuNzItOS4xMyAxMC43Ny0yMi40NCAxNi45NS0zNi41MSAxNi45NXptMjY2LjA2LTE5OC41MUw0MTYgMjI0djI4OGwxMzkuODgtNTUuOTVBMzEuOTk2IDMxLjk5NiAwIDAgMCA1NzYgNDI2LjM0VjE3Ni4wMmMwLTExLjMyLTExLjQzLTE5LjA2LTIxLjk0LTE0Ljg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXBNYXJrZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBjLTY5LjU5IDAtMTI2IDU2LjQxLTEyNiAxMjYgMCA1Ni4yNiA4Mi4zNSAxNTguOCAxMTMuOSAxOTYuMDIgNi4zOSA3LjU0IDE3LjgyIDcuNTQgMjQuMiAwQzMzMS42NSAyODQuOCA0MTQgMTgyLjI2IDQxNCAxMjYgNDE0IDU2LjQxIDM1Ny41OSAwIDI4OCAwek0yMC4xMiAyMTUuOTVBMzIuMDA2IDMyLjAwNiAwIDAgMCAwIDI0NS42NnYyNTAuMzJjMCAxMS4zMiAxMS40MyAxOS4wNiAyMS45NCAxNC44NkwxNjAgNDQ4VjIxNC45MmMtOC44NC0xNS45OC0xNi4wNy0zMS41NC0yMS4yNS00Ni40MkwyMC4xMiAyMTUuOTV6TTI4OCAzNTkuNjdjLTE0LjA3IDAtMjcuMzgtNi4xOC0zNi41MS0xNi45Ni0xOS42Ni0yMy4yLTQwLjU3LTQ5LjYyLTU5LjQ5LTc2LjcydjE4MmwxOTIgNjRWMjY2Yy0xOC45MiAyNy4wOS0zOS44MiA1My41Mi01OS40OSA3Ni43Mi05LjEzIDEwLjc3LTIyLjQ0IDE2Ljk1LTM2LjUxIDE2Ljk1em0yNjYuMDYtMTk4LjUxTDQxNiAyMjR2Mjg4bDEzOS44OC01NS45NUEzMS45OTYgMzEuOTk2IDAgMCAwIDU3NiA0MjYuMzRWMTc2LjAyYzAtMTEuMzItMTEuNDMtMTkuMDYtMjEuOTQtMTQuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcE1hcmtlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzIuMjY4IDUwMS42N0MyNi45NyAyOTEuMDMxIDAgMjY5LjQxMyAwIDE5MiAwIDg1Ljk2MSA4NS45NjEgMCAxOTIgMHMxOTIgODUuOTYxIDE5MiAxOTJjMCA3Ny40MTMtMjYuOTcgOTkuMDMxLTE3Mi4yNjggMzA5LjY3LTkuNTM1IDEzLjc3NC0yOS45MyAxMy43NzMtMzkuNDY0IDB6TTE5MiAyNzJjNDQuMTgzIDAgODAtMzUuODE3IDgwLTgwcy0zNS44MTctODAtODAtODAtODAgMzUuODE3LTgwIDgwIDM1LjgxNyA4MCA4MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFwTWFya2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Mi4yNjggNTAxLjY3QzI2Ljk3IDI5MS4wMzEgMCAyNjkuNDEzIDAgMTkyIDAgODUuOTYxIDg1Ljk2MSAwIDE5MiAwczE5MiA4NS45NjEgMTkyIDE5MmMwIDc3LjQxMy0yNi45NyA5OS4wMzEtMTcyLjI2OCAzMDkuNjctOS41MzUgMTMuNzc0LTI5LjkzIDEzLjc3My0zOS40NjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFwUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyODggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAzMTYuOTR2MTU2LjY5bDIyLjAyIDMzLjAyYzQuNzUgNy4xMiAxNS4yMiA3LjEyIDE5Ljk3IDBMMTc2IDQ3My42M1YzMTYuOTRjLTEwLjM5IDEuOTItMjEuMDYgMy4wNi0zMiAzLjA2cy0yMS42MS0xLjE0LTMyLTMuMDZ6TTE0NCAwQzY0LjQ3IDAgMCA2NC40NyAwIDE0NHM2NC40NyAxNDQgMTQ0IDE0NCAxNDQtNjQuNDcgMTQ0LTE0NFMyMjMuNTMgMCAxNDQgMHptMCA3NmMtMzcuNSAwLTY4IDMwLjUtNjggNjggMCA2LjYyLTUuMzggMTItMTIgMTJzLTEyLTUuMzgtMTItMTJjMC01MC43MyA0MS4yOC05MiA5Mi05MiA2LjYyIDAgMTIgNS4zOCAxMiAxMnMtNS4zOCAxMi0xMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFwU2lnbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA3LjMxIDg0LjY5TDQ2NCA0MS4zN2MtNi02LTE0LjE0LTkuMzctMjIuNjMtOS4zN0gyODhWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNkg1NmMtMTMuMjUgMC0yNCAxMC43NS0yNCAyNHY4MGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDM4NS4zN2M4LjQ5IDAgMTYuNjItMy4zNyAyMi42My05LjM3bDQzLjMxLTQzLjMxYzYuMjUtNi4yNiA2LjI1LTE2LjM4IDAtMjIuNjN6TTIyNCA0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZWMzg0aC02NHYxMTJ6bTIzMi0yNzJIMjg4di0zMmgtNjR2MzJINzAuNjNjLTguNDkgMC0xNi42MiAzLjM3LTIyLjYzIDkuMzdMNC42OSAyNzYuNjljLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNMNDggMzQyLjYzYzYgNiAxNC4xNCA5LjM3IDIyLjYzIDkuMzdINDU2YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTgwYzAtMTMuMjUtMTAuNzUtMjQtMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDExNy42NnYzNDYuMzJjMCAxMS4zMiAxMS40MyAxOS4wNiAyMS45NCAxNC44NkwxNjAgNDE2VjMyTDIwLjEyIDg3Ljk1QTMyLjAwNiAzMi4wMDYgMCAwIDAgMCAxMTcuNjZ6TTE5MiA0MTZsMTkyIDY0Vjk2TDE5MiAzMnYzODR6TTU1NC4wNiAzMy4xNkw0MTYgOTZ2Mzg0bDEzOS44OC01NS45NUEzMS45OTYgMzEuOTk2IDAgMCAwIDU3NiAzOTQuMzRWNDguMDJjMC0xMS4zMi0xMS40My0xOS4wNi0yMS45NC0xNC44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFya2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkzLjk1IDI5MC4wM0EzMjcuMDM4IDMyNy4wMzggMCAwIDAgLjE3IDQ4NS4xMWwtLjAzLjIzYy0xLjcgMTUuMjggMTEuMjEgMjguMiAyNi40OSAyNi41MWEzMjcuMDIgMzI3LjAyIDAgMCAwIDE5NS4zNC05My44bDc1LjQtNzUuNC0xMjguMDItMTI4LjAyLTc1LjQgNzUuNHpNNDg1LjQ5IDI2LjUxYy0zNS4zNS0zNS4zNS05Mi42Ny0zNS4zNS0xMjguMDIgMGwtMjEuNzYgMjEuNzYtMzYuNTYtMzYuNTVjLTE1LjYyLTE1LjYyLTQwLjk1LTE1LjYyLTU2LjU2IDBMMTM4LjQ3IDExNS44NGMtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wyMi42MiAyMi42MmM2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDg3LjE1LTg3LjE1IDE5LjU5IDE5LjU5TDE5MS45OCAxOTIgMzIwIDMyMC4wMmwxNjUuNDktMTY1LjQ5YzM1LjM1LTM1LjM1IDM1LjM1LTkyLjY2IDAtMTI4LjAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJzRG91YmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0MCAwaC03OWMtMTAuNyAwLTE2IDEyLjktOC41IDIwLjVsMTYuOSAxNi45LTQ4LjcgNDguN0MxOTguNSA3Mi4xIDE3Mi4yIDY0IDE0NCA2NCA2NC41IDY0IDAgMTI4LjUgMCAyMDhzNjQuNSAxNDQgMTQ0IDE0NCAxNDQtNjQuNSAxNDQtMTQ0YzAtMjguMi04LjEtNTQuNS0yMi4xLTc2LjdsNDguNy00OC43IDE2LjkgMTYuOWMyLjQgMi40IDUuNSAzLjUgOC40IDMuNSA2LjIgMCAxMi4xLTQuOCAxMi4xLTEyVjEyYzAtNi42LTUuNC0xMi0xMi0xMnpNMTQ0IDI4OGMtNDQuMSAwLTgwLTM1LjktODAtODBzMzUuOS04MCA4MC04MCA4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODB6bTM1Ni0xMjguMWgtNzljLTEwLjcgMC0xNiAxMi45LTguNSAyMC41bDE2LjkgMTYuOS00OC43IDQ4LjdjLTE4LjItMTEuNC0zOS0xOC45LTYxLjUtMjEuMy0yLjEgMjEuOC04LjIgNDMuMy0xOC40IDYzLjMgMS4xIDAgMi4yLS4xIDMuMi0uMSA0NC4xIDAgODAgMzUuOSA4MCA4MHMtMzUuOSA4MC04MCA4MC04MC0zNS45LTgwLTgwYzAtMS4xIDAtMi4yLjEtMy4yLTIwIDEwLjItNDEuNSAxNi40LTYzLjMgMTguNEMxNjguNCA0NTUuNiAyMjkuNiA1MTIgMzA0IDUxMmM3OS41IDAgMTQ0LTY0LjUgMTQ0LTE0NCAwLTI4LjItOC4xLTU0LjUtMjIuMS03Ni43bDQ4LjctNDguNyAxNi45IDE2LjljMi40IDIuNCA1LjQgMy41IDguNCAzLjUgNi4yIDAgMTIuMS00LjggMTIuMS0xMnYtNzljMC02LjctNS40LTEyLjEtMTItMTIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFyc1N0cm9rZUggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDc2LjIgMjQ3LjVsLTU1LjktNTUuOWMtNy42LTcuNi0yMC41LTIuMi0yMC41IDguNVYyMjRIMzc2di0yMGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2MjBoLTI3LjZjLTUuOC0yNS42LTE4LjctNDkuOS0zOC42LTY5LjhDMTg5LjYgOTggOTguNCA5OCA0Mi4yIDE1NC4yYy01Ni4yIDU2LjItNTYuMiAxNDcuNCAwIDIwMy42IDU2LjIgNTYuMiAxNDcuNCA1Ni4yIDIwMy42IDAgMTkuOS0xOS45IDMyLjgtNDQuMiAzOC42LTY5LjhIMzEydjIwYzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTIwaDIzLjl2MjMuOWMwIDEwLjcgMTIuOSAxNiAyMC41IDguNWw1NS45LTU1LjljNC42LTQuNyA0LjYtMTIuMy0uMS0xN3ptLTI3NS42IDY1LjFjLTMxLjIgMzEuMi04MS45IDMxLjItMTEzLjEgMC0zMS4yLTMxLjItMzEuMi04MS45IDAtMTEzLjEgMzEuMi0zMS4yIDgxLjktMzEuMiAxMTMuMSAwIDMxLjIgMzEuMSAzMS4yIDgxLjkgMCAxMTMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFyc1N0cm9rZVYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI4OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ1LjggMjM0LjJjLTE5LjktMTkuOS00NC4yLTMyLjgtNjkuOC0zOC42di0yNS40aDIwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0yMFY4MS40aDIzLjljMTAuNyAwIDE2LTEyLjkgOC41LTIwLjVMMTUyLjUgNS4xYy00LjctNC43LTEyLjMtNC43LTE3IDBMNzkuNiA2MWMtNy42IDcuNi0yLjIgMjAuNSA4LjUgMjAuNUgxMTJ2MjQuN0g5MmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgyMHYyNS40Yy0yNS42IDUuOC00OS45IDE4LjctNjkuOCAzOC42LTU2LjIgNTYuMi01Ni4yIDE0Ny40IDAgMjAzLjYgNTYuMiA1Ni4yIDE0Ny40IDU2LjIgMjAzLjYgMCA1Ni4zLTU2LjIgNTYuMy0xNDcuNCAwLTIwMy42em0tNDUuMiAxNTguNGMtMzEuMiAzMS4yLTgxLjkgMzEuMi0xMTMuMSAwLTMxLjItMzEuMi0zMS4yLTgxLjkgMC0xMTMuMSAzMS4yLTMxLjIgODEuOS0zMS4yIDExMy4xIDAgMzEuMiAzMS4xIDMxLjIgODEuOSAwIDExMy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJzU3Ryb2tlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3MiA2NGgtNzljLTEwLjcgMC0xNiAxMi45LTguNSAyMC41bDE2LjkgMTYuOS0xNy41IDE3LjUtMTQuMS0xNC4xYy00LjctNC43LTEyLjMtNC43LTE3IDBMMjI0LjUgMTMzYy00LjcgNC43LTQuNyAxMi4zIDAgMTdsMTQuMSAxNC4xLTE4IDE4Yy0yMi4yLTE0LTQ4LjUtMjIuMS03Ni43LTIyLjFDNjQuNSAxNjAgMCAyMjQuNSAwIDMwNHM2NC41IDE0NCAxNDQgMTQ0IDE0NC02NC41IDE0NC0xNDRjMC0yOC4yLTguMS01NC41LTIyLjEtNzYuN2wxOC0xOCAxNC4xIDE0LjFjNC43IDQuNyAxMi4zIDQuNyAxNyAwbDI4LjMtMjguM2M0LjctNC43IDQuNy0xMi4zIDAtMTdMMzI5LjIgMTY0bDE3LjUtMTcuNSAxNi45IDE2LjljNy42IDcuNiAyMC41IDIuMiAyMC41LTguNVY3NmMtLjEtNi42LTUuNS0xMi0xMi4xLTEyek0xNDQgMzg0Yy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzIgNjRoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktODAuNyA4MC43Yy0yMi4yLTE0LTQ4LjUtMjIuMS03Ni43LTIyLjFDNjQuNSAxNjAgMCAyMjQuNSAwIDMwNHM2NC41IDE0NCAxNDQgMTQ0IDE0NC02NC41IDE0NC0xNDRjMC0yOC4yLTguMS01NC41LTIyLjEtNzYuN2w4MC43LTgwLjcgMTYuOSAxNi45YzcuNiA3LjYgMjAuNSAyLjIgMjAuNS04LjVWNzZjMC02LjYtNS40LTEyLTEyLTEyek0xNDQgMzg0Yy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAuNjcgNjRjLTQ0Mi42IDAtMzU3LjU3IDM4NC0xNTguNDYgMzg0IDM5LjkgMCA3Ny40Ny0yMC42OSAxMDEuNDItNTUuODZsMjUuNzMtMzcuNzljMTUuNjYtMjIuOTkgNDYuOTctMjIuOTkgNjIuNjMgMGwyNS43MyAzNy43OUM0MDEuNjYgNDI3LjMxIDQzOS4yMyA0NDggNDc5LjEzIDQ0OGMxODkuODYgMCAyOTAuNjMtMzg0LTE1OC40Ni0zODR6TTE4NCAzMDguMzZjLTQxLjA2IDAtNjcuNzYtMjUuNjYtODAuMDgtNDEuMDUtNS4yMy02LjUzLTUuMjMtMTYuMDkgMC0yMi42MyAxMi4zMi0xNS40IDM5LjAxLTQxLjA1IDgwLjA4LTQxLjA1czY3Ljc2IDI1LjY2IDgwLjA4IDQxLjA1YzUuMjMgNi41MyA1LjIzIDE2LjA5IDAgMjIuNjMtMTIuMzIgMTUuNC0zOS4wMiA0MS4wNS04MC4wOCA0MS4wNXptMjcyIDBjLTQxLjA2IDAtNjcuNzYtMjUuNjYtODAuMDgtNDEuMDUtNS4yMy02LjUzLTUuMjMtMTYuMDkgMC0yMi42MyAxMi4zMi0xNS40IDM5LjAxLTQxLjA1IDgwLjA4LTQxLjA1czY3Ljc2IDI1LjY2IDgwLjA4IDQxLjA1YzUuMjMgNi41MyA1LjIzIDE2LjA5IDAgMjIuNjMtMTIuMzIgMTUuNC0zOS4wMiA0MS4wNS04MC4wOCA0MS4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVkYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIzLjc1IDEzMC43NUwxNTQuNjIgMTUuNTRBMzEuOTk3IDMxLjk5NyAwIDAgMCAxMjcuMTggMEgxNi4wM0MzLjA4IDAtNC41IDE0LjU3IDIuOTIgMjUuMThsMTExLjI3IDE1OC45NmMyOS43Mi0yNy43NyA2Ny41Mi00Ni44MyAxMDkuNTYtNTMuMzl6TTQ5NS45NyAwSDM4NC44MmMtMTEuMjQgMC0yMS42NiA1LjktMjcuNDQgMTUuNTRsLTY5LjEzIDExNS4yMWM0Mi4wNCA2LjU2IDc5Ljg0IDI1LjYyIDEwOS41NiA1My4zOEw1MDkuMDggMjUuMThDNTE2LjUgMTQuNTcgNTA4LjkyIDAgNDk1Ljk3IDB6TTI1NiAxNjBjLTk3LjIgMC0xNzYgNzguOC0xNzYgMTc2czc4LjggMTc2IDE3NiAxNzYgMTc2LTc4LjggMTc2LTE3Ni03OC44LTE3Ni0xNzYtMTc2em05Mi41MiAxNTcuMjZsLTM3LjkzIDM2Ljk2IDguOTcgNTIuMjJjMS42IDkuMzYtOC4yNiAxNi41MS0xNi42NSAxMi4wOUwyNTYgMzkzLjg4bC00Ni45IDI0LjY1Yy04LjQgNC40NS0xOC4yNS0yLjc0LTE2LjY1LTEyLjA5bDguOTctNTIuMjItMzcuOTMtMzYuOTZjLTYuODItNi42NC0zLjA1LTE4LjIzIDYuMzUtMTkuNTlsNTIuNDMtNy42NCAyMy40My00Ny41MmMyLjExLTQuMjggNi4xOS02LjM5IDEwLjI4LTYuMzkgNC4xMSAwIDguMjIgMi4xNCAxMC4zMyA2LjM5bDIzLjQzIDQ3LjUyIDUyLjQzIDcuNjRjOS40IDEuMzYgMTMuMTcgMTIuOTUgNi4zNSAxOS41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVka2l0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDQ4MGgzMjBWMTI4aC0zMlY4MGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4SDE3NmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY0OEg5NnYzNTJ6bTk2LTM4NGgxMjh2MzJIMTkyVjk2em0zMjAgODB2MjU2YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhoLTE2VjEyOGgxNmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4ek02NCA0ODBINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWMTc2YzAtMjYuNTEgMjEuNDktNDggNDgtNDhoMTZ2MzUyem0yODgtMjA4djMyYzAgOC44MzctNy4xNjMgMTYtMTYgMTZoLTQ4djQ4YzAgOC44MzctNy4xNjMgMTYtMTYgMTZoLTMyYy04LjgzNyAwLTE2LTcuMTYzLTE2LTE2di00OGgtNDhjLTguODM3IDAtMTYtNy4xNjMtMTYtMTZ2LTMyYzAtOC44MzcgNy4xNjMtMTYgMTYtMTZoNDh2LTQ4YzAtOC44MzcgNy4xNjMtMTYgMTYtMTZoMzJjOC44MzcgMCAxNiA3LjE2MyAxNiAxNnY0OGg0OGM4LjgzNyAwIDE2IDcuMTYzIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWhCbGFuayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0tODAgMjMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTYwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWhSb2xsaW5nRXllcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4ek04OCAyMjRjMC0yNC4zIDEzLjctNDUuMiAzMy42LTU2LS43IDIuNi0xLjYgNS4yLTEuNiA4IDAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC0yLjgtLjktNS40LTEuNi04IDE5LjkgMTAuOCAzMy42IDMxLjcgMzMuNiA1NiAwIDM1LjMtMjguNyA2NC02NCA2NHMtNjQtMjguNy02NC02NHptMjI0IDE3NkgxODRjLTIxLjIgMC0yMS4yLTMyIDAtMzJoMTI4YzIxLjIgMCAyMS4yIDMyIDAgMzJ6bTMyLTExMmMtMzUuMyAwLTY0LTI4LjctNjQtNjQgMC0yNC4zIDEzLjctNDUuMiAzMy42LTU2LS43IDIuNi0xLjYgNS4yLTEuNiA4IDAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC0yLjgtLjktNS40LTEuNi04IDE5LjkgMTAuOCAzMy42IDMxLjcgMzMuNiA1NiAwIDM1LjMtMjguNyA2NC02NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bS04MCAxNjhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem0xNzYgMTkySDE1MmMtMjEuMiAwLTIxLjItMzIgMC0zMmgxOTJjMjEuMiAwIDIxLjIgMzIgMCAzMnptLTE2LTEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lbW9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMTMwLjk0Vjk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgNjQgMCA3OC4zMyAwIDk2djM0Ljk0YzE4LjYgNi42MSAzMiAyNC4xOSAzMiA0NS4wNnMtMTMuNCAzOC40NS0zMiA0NS4wNlYzMjBoNjQwdi05OC45NGMtMTguNi02LjYxLTMyLTI0LjE5LTMyLTQ1LjA2czEzLjQtMzguNDUgMzItNDUuMDZ6TTIyNCAyNTZoLTY0VjEyOGg2NHYxMjh6bTEyOCAwaC02NFYxMjhoNjR2MTI4em0xMjggMGgtNjRWMTI4aDY0djEyOHpNMCA0NDhoNjR2LTI2LjY3YzAtOC44NCA3LjE2LTE2IDE2LTE2czE2IDcuMTYgMTYgMTZWNDQ4aDEyOHYtMjYuNjdjMC04Ljg0IDcuMTYtMTYgMTYtMTZzMTYgNy4xNiAxNiAxNlY0NDhoMTI4di0yNi42N2MwLTguODQgNy4xNi0xNiAxNi0xNnMxNiA3LjE2IDE2IDE2VjQ0OGgxMjh2LTI2LjY3YzAtOC44NCA3LjE2LTE2IDE2LTE2czE2IDcuMTYgMTYgMTZWNDQ4aDY0di05Nkgwdjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZW5vcmFoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAxMjhoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNDRoNjRWMTQ0YzAtOC44NC03LjE2LTE2LTE2LTE2em05NiAwaC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTQ0aDY0VjE0NGMwLTguODQtNy4xNi0xNi0xNi0xNnptMTkyIDBoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNDRoNjRWMTQ0YzAtOC44NC03LjE2LTE2LTE2LTE2em05NiAwaC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTQ0aDY0VjE0NGMwLTguODQtNy4xNi0xNi0xNi0xNnptODAtMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlM2MDggMCA2MDggMHMtMzIgNDYuMzMtMzIgNjQgMTQuMzMgMzIgMzIgMzJ6bS05NiAwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJTNTEyIDAgNTEyIDBzLTMyIDQ2LjMzLTMyIDY0IDE0LjMzIDMyIDMyIDMyem0tOTYgMGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyUzQxNiAwIDQxNiAwcy0zMiA0Ni4zMy0zMiA2NCAxNC4zMyAzMiAzMiAzMnptLTk2IDBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlMzMjAgMCAzMjAgMHMtMzIgNDYuMzMtMzIgNjQgMTQuMzMgMzIgMzIgMzJ6bS05NiAwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJTMjI0IDAgMjI0IDBzLTMyIDQ2LjMzLTMyIDY0IDE0LjMzIDMyIDMyIDMyem0tOTYgMGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyUzEyOCAwIDEyOCAwIDk2IDQ2LjMzIDk2IDY0czE0LjMzIDMyIDMyIDMyem0tOTYgMGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyUzMyIDAgMzIgMCAwIDQ2LjMzIDAgNjRzMTQuMzMgMzIgMzIgMzJ6bTU0NCAxOTJjMCAxNy42Ny0xNC4zMyAzMi0zMiAzMkgzNTJWMTQ0YzAtOC44NC03LjE2LTE2LTE2LTE2aC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTc2SDk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyVjE0NGMwLTguODQtNy4xNi0xNi0xNi0xNkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTQ0YzAgNTMuMDIgNDIuOTggOTYgOTYgOTZoMTkydjY0SDExMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDE2YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNkgzNTJ2LTY0aDE5MmM1My4wMiAwIDk2LTQyLjk4IDk2LTk2VjE0NGMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVyY3VyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjg4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMjA4YzAtNDQuMi0xOS45LTgzLjctNTEuMi0xMTAuMSAyLjUtMS44IDQuOS0zLjggNy4yLTUuOCAyNC43LTIxLjIgMzkuOC00OC44IDQzLjItNzguOC45LTcuMS00LjctMTMuMy0xMS45LTEzLjNoLTQwLjVDMjI5IDAgMjI0LjEgNC4xIDIyMyA5LjhjLTIuNCAxMi41LTkuNiAyNC4zLTIwLjcgMzMuOEMxODcgNTYuOCAxNjYuMyA2NCAxNDQgNjRzLTQzLTcuMi01OC40LTIwLjRDNzQuNSAzNC4xIDY3LjQgMjIuMyA2NC45IDkuOCA2My44IDQuMSA1OC45IDAgNTMuMiAwSDEyLjdDNS41IDAtLjEgNi4yLjggMTMuMyA0LjIgNDMuNCAxOS4yIDcxIDQ0IDkyLjJjMi4zIDIgNC43IDMuOSA3LjIgNS44QzE5LjkgMTI0LjMgMCAxNjMuOCAwIDIwOGMwIDY4LjUgNDcuOSAxMjUuOSAxMTIgMTQwLjRWNDAwSDc2Yy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDM2djM2YzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTM2aDM2YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0zNnYtNTEuNmM2NC4xLTE0LjUgMTEyLTcxLjkgMTEyLTE0MC40em0tMjI0IDBjMC00NC4xIDM1LjktODAgODAtODBzODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwLTgwLTM1LjktODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1ldGVvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTEuMzI4LDIwLjgwMjdjLTExLjYwNzU5LDM4LjcwMjY0LTM0LjMwNzI0LDExMS43MDE3My02MS4zMDMxMSwxODcuNzAwNzcsNi45OTg5MywyLjA5MzcyLDEzLjQwNDIsNCwxOC42MDY1Myw1LjU5MzY4YTE2LjA2MTU4LDE2LjA2MTU4LDAsMCwxLDkuNDk4NTQsMjIuOTA2Yy0yMi4xMDYsNDIuMjk2MzUtODIuNjkwNDcsMTUyLjc5NS0xNDIuNDc4MTksMjE0LjQwMzU2LS45OTk4NCwxLjA5MzczLTEuOTk5NjksMi41LTIuOTk5NTQsMy40OTk5NUExOTQuODMwNDYsMTk0LjgzMDQ2LDAsMSwxLDU3LjA4NSwxNzkuNDEwMDljLjk5OTg1LTEsMi40MDU4OC0yLDMuNDk5NDctMyw2MS41OTk5NC01OS45MDU0OSwxNzEuOTczNjctMTIwLjQwNDczLDIxNC4zNzM0My0xNDIuNDk4MmExNi4wNTgsMTYuMDU4LDAsMCwxLDIyLjkwMjc0LDkuNDk5ODhjMS41OTM1MSw1LjA5MzY4LDMuNDk5NDcsMTEuNTkzNiw1LjU5MjksMTguNTkzNTFDMzc5LjM0ODE4LDM1LjAwNTY1LDQ1Mi40MzA3NCwxMi4zMDI4MSw0OTEuMTI3OTQuNzA5MjFBMTYuMTgzMjUsMTYuMTgzMjUsMCwwLDEsNTExLjMyOCwyMC44MDI3Wk0zMTkuOTUxLDMyMC4wMDIwN0ExMjcuOTgwNDEsMTI3Ljk4MDQxLDAsMSwwLDE5MS45NzA2MSw0NDguMDAwNDYsMTI3Ljk3NTczLDEyNy45NzU3MywwLDAsMCwzMTkuOTUxLDMyMC4wMDIwN1ptLTEyNy45ODA0MS0zMS45OTk2YTMxLjk5NTEsMzEuOTk1MSwwLDEsMS0zMS45OTUxLTMxLjk5OTZBMzEuOTU5LDMxLjk1OSwwLDAsMSwxOTEuOTcwNjEsMjg4LjAwMjQ3Wm0zMS45OTUxLDc5Ljk5OWExNS45OTc1NSwxNS45OTc1NSwwLDEsMS0xNS45OTc1NS0xNS45OTk4QTE2LjA0OTc1LDE2LjA0OTc1LDAsMCwxLDIyMy45NjU3MSwzNjguMDAxNDdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvY2hpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgNDh2NDE2YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhIMTQ0Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjQ4YzAtMjYuNTEgMjEuNDktNDggNDgtNDhoMjI0YzI2LjUxIDAgNDggMjEuNDkgNDggNDh6bTk2IDU4djEyYTYgNiAwIDAgMS02IDZoLTE4djZhNiA2IDAgMCAxLTYgNmgtNDJWODhoNDJhNiA2IDAgMCAxIDYgNnY2aDE4YTYgNiAwIDAgMSA2IDZ6bTAgOTZ2MTJhNiA2IDAgMCAxLTYgNmgtMTh2NmE2IDYgMCAwIDEtNiA2aC00MnYtNDhoNDJhNiA2IDAgMCAxIDYgNnY2aDE4YTYgNiAwIDAgMSA2IDZ6bTAgOTZ2MTJhNiA2IDAgMCAxLTYgNmgtMTh2NmE2IDYgMCAwIDEtNiA2aC00MnYtNDhoNDJhNiA2IDAgMCAxIDYgNnY2aDE4YTYgNiAwIDAgMSA2IDZ6bTAgOTZ2MTJhNiA2IDAgMCAxLTYgNmgtMTh2NmE2IDYgMCAwIDEtNiA2aC00MnYtNDhoNDJhNiA2IDAgMCAxIDYgNnY2aDE4YTYgNiAwIDAgMSA2IDZ6TTMwIDM3Nmg0MnY0OEgzMGE2IDYgMCAwIDEtNi02di02SDZhNiA2IDAgMCAxLTYtNnYtMTJhNiA2IDAgMCAxIDYtNmgxOHYtNmE2IDYgMCAwIDEgNi02em0wLTk2aDQydjQ4SDMwYTYgNiAwIDAgMS02LTZ2LTZINmE2IDYgMCAwIDEtNi02di0xMmE2IDYgMCAwIDEgNi02aDE4di02YTYgNiAwIDAgMSA2LTZ6bTAtOTZoNDJ2NDhIMzBhNiA2IDAgMCAxLTYtNnYtNkg2YTYgNiAwIDAgMS02LTZ2LTEyYTYgNiAwIDAgMSA2LTZoMTh2LTZhNiA2IDAgMCAxIDYtNnptMC05Nmg0MnY0OEgzMGE2IDYgMCAwIDEtNi02di02SDZhNiA2IDAgMCAxLTYtNnYtMTJhNiA2IDAgMCAxIDYtNmgxOHYtNmE2IDYgMCAwIDEgNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWNyb3Bob25lQWx0U2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjMzLjgyIDQ1OC4xTDQ3Ni4yNiAzMzYuMzNDNDg4Ljc0IDMxMi4yMSA0OTYgMjg0Ljk4IDQ5NiAyNTZ2LTQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhjMCAxNy45Mi0zLjk2IDM0LjgtMTAuNzIgNTAuMmwtMjYuNTUtMjAuNTJjMy4xLTkuNCA1LjI4LTE5LjIyIDUuMjgtMjkuNjdoLTQzLjY3bC00MS40LTMySDQxNnYtMzJoLTg1LjMzYy01Ljg5IDAtMTAuNjctMy41OC0xMC42Ny04di0xNmMwLTQuNDIgNC43OC04IDEwLjY3LThINDE2di0zMmgtODUuMzNjLTUuODkgMC0xMC42Ny0zLjU4LTEwLjY3LTh2LTE2YzAtNC40MiA0Ljc4LTggMTAuNjctOEg0MTZjMC01My4wMi00Mi45OC05Ni05Ni05NnMtOTYgNDIuOTgtOTYgOTZ2NDUuMzZMNDUuNDcgMy4zN0MzOC40OS0yLjA1IDI4LjQzLS44IDIzLjAxIDYuMThMMy4zNyAzMS40NUMtMi4wNSAzOC40Mi0uOCA0OC40NyA2LjE4IDUzLjlsNTg4LjM2IDQ1NC43M2M2Ljk4IDUuNDMgMTcuMDMgNC4xNyAyMi40Ni0yLjgxbDE5LjY0LTI1LjI3YzUuNDEtNi45NyA0LjE2LTE3LjAyLTIuODItMjIuNDV6TTQwMCA0NjRoLTU2di0zMy43OGMxMS43MS0xLjYyIDIzLjEtNC4yOCAzMy45Ni04LjA4bC01MC40LTM4Ljk2Yy02LjcxLjQtMTMuNDEuODctMjAuMzUuMi01NS44NS01LjQ1LTk4Ljc0LTQ4LjYzLTExMS4xOC0xMDEuODVMMTQ0IDI0MS4zMXY2Ljg1YzAgODkuNjQgNjMuOTcgMTY5LjU1IDE1MiAxODEuNjlWNDY0aC01NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTYwYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWljcm9waG9uZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzUyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgMTkyaC0xNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhjMCA3NC44LTY0LjQ5IDEzNC44Mi0xNDAuNzkgMTI3LjM4Qzk2LjcxIDM3Ni44OSA0OCAzMTcuMTEgNDggMjUwLjNWMjA4YzAtOC44NC03LjE2LTE2LTE2LTE2SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0MC4xNmMwIDg5LjY0IDYzLjk3IDE2OS41NSAxNTIgMTgxLjY5VjQ2NEg5NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTYwYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTguODQtNy4xNi0xNi0xNi0xNmgtNTZ2LTMzLjc3QzI4NS43MSA0MTguNDcgMzUyIDM0NC45IDM1MiAyNTZ2LTQ4YzAtOC44NC03LjE2LTE2LTE2LTE2ek0xNzYgMzUyYzUzLjAyIDAgOTYtNDIuOTggOTYtOTZoLTg1LjMzYy01Ljg5IDAtMTAuNjctMy41OC0xMC42Ny04di0xNmMwLTQuNDIgNC43OC04IDEwLjY3LThIMjcydi0zMmgtODUuMzNjLTUuODkgMC0xMC42Ny0zLjU4LTEwLjY3LTh2LTE2YzAtNC40MiA0Ljc4LTggMTAuNjctOEgyNzJ2LTMyaC04NS4zM2MtNS44OSAwLTEwLjY3LTMuNTgtMTAuNjctOHYtMTZjMC00LjQyIDQuNzgtOCAxMC42Ny04SDI3MmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2UzgwIDQyLjk4IDgwIDk2djE2MGMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWNyb3Bob25lU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjMzLjgyIDQ1OC4xbC0xNTcuOC0xMjEuOTZDNDg4LjYxIDMxMi4xMyA0OTYgMjg1LjAxIDQ5NiAyNTZ2LTQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhjMCAxNy45Mi0zLjk2IDM0LjgtMTAuNzIgNTAuMmwtMjYuNTUtMjAuNTJjMy4xLTkuNCA1LjI4LTE5LjIyIDUuMjgtMjkuNjdWOTZjMC01My4wMi00Mi45OC05Ni05Ni05NnMtOTYgNDIuOTgtOTYgOTZ2NDUuMzZMNDUuNDcgMy4zN0MzOC40OS0yLjA1IDI4LjQzLS44IDIzLjAxIDYuMThMMy4zNyAzMS40NUMtMi4wNSAzOC40Mi0uOCA0OC40NyA2LjE4IDUzLjlsNTg4LjM2IDQ1NC43M2M2Ljk4IDUuNDMgMTcuMDMgNC4xNyAyMi40Ni0yLjgxbDE5LjY0LTI1LjI3YzUuNDEtNi45NyA0LjE2LTE3LjAyLTIuODItMjIuNDV6TTQwMCA0NjRoLTU2di0zMy43N2MxMS42Ni0xLjYgMjIuODUtNC41NCAzMy42Ny04LjMxbC01MC4xMS0zOC43M2MtNi43MS40LTEzLjQxLjg3LTIwLjM1LjItNTUuODUtNS40NS05OC43NC00OC42My0xMTEuMTgtMTAxLjg1TDE0NCAyNDEuMzF2Ni44NWMwIDg5LjY0IDYzLjk3IDE2OS41NSAxNTIgMTgxLjY5VjQ2NGgtNTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djE2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvcGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM1MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDM1MmM1My4wMiAwIDk2LTQyLjk4IDk2LTk2Vjk2YzAtNTMuMDItNDIuOTgtOTYtOTYtOTZTODAgNDIuOTggODAgOTZ2MTYwYzAgNTMuMDIgNDIuOTggOTYgOTYgOTZ6bTE2MC0xNjBoLTE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OGMwIDc0LjgtNjQuNDkgMTM0LjgyLTE0MC43OSAxMjcuMzhDOTYuNzEgMzc2Ljg5IDQ4IDMxNy4xMSA0OCAyNTAuM1YyMDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djQwLjE2YzAgODkuNjQgNjMuOTcgMTY5LjU1IDE1MiAxODEuNjlWNDY0SDk2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2aC01NnYtMzMuNzdDMjg1LjcxIDQxOC40NyAzNTIgMzQ0LjkgMzUyIDI1NnYtNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3Jvc2NvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDMyMGgxMnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmg0MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZoMTJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyVjE2YzAtOC44NC03LjE2LTE2LTE2LTE2aC02NGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MjI0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJ6bTMwNCAxMjhoLTEuMjlDNDkzLjI0IDQxMy45OSA1MTIgMzY5LjIgNTEyIDMyMGMwLTEwNS44OC04Ni4xMi0xOTItMTkyLTE5MnY2NGM3MC41OCAwIDEyOCA1Ny40MiAxMjggMTI4cy01Ny40MiAxMjgtMTI4IDEyOEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OCAwIDguODQgNy4xNiAxNiAxNiAxNmg0ODBjOC44NCAwIDE2LTcuMTYgMTYtMTYgMC0yNi41MS0yMS40OS00OC00OC00OHptLTM2MC0zMmgyMDhjNC40MiAwIDgtMy41OCA4LTh2LTE2YzAtNC40Mi0zLjU4LTgtOC04SDEwNGMtNC40MiAwLTggMy41OC04IDh2MTZjMCA0LjQyIDMuNTggOCA4IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pbnVzQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6TTEyNCAyOTZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNTZjMC02LjYgNS40LTEyIDEyLTEyaDI2NGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTZjMCA2LjYtNS40IDEyLTEyIDEySDEyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWludXNTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNOTIgMjk2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTU2YzAtNi42IDUuNC0xMiAxMi0xMmgyNjRjNi42IDAgMTIgNS40IDEyIDEydjU2YzAgNi42LTUuNCAxMi0xMiAxMkg5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDIwOEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDM4NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaXR0ZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4IDQxNkg0OGMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMjBjOC44IDAgMTYtNy4yIDE2LTE2di02NGMwLTguOC03LjItMTYtMTYtMTZ6bTU3LTIwOS4xYy0yNy4yLTIyLjYtNjcuNS0xOS05MC4xIDguMmwtMjAuOSAyNS0yOS42LTEyOC40Yy0xOC03Ny41LTk1LjQtMTI1LjktMTcyLjgtMTA4QzM0LjIgMjEuNi0xNC4yIDk4LjkgMy43IDE3Ni40TDUxLjYgMzg0aDMwOWw3Mi41LTg3YzIyLjctMjcuMiAxOS02Ny41LTguMS05MC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb2JpbGVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDBINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyMjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE2MCA0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xMTItMTA4YzAgNi42LTUuNCAxMi0xMiAxMkg2MGMtNi42IDAtMTItNS40LTEyLTEyVjYwYzAtNi42IDUuNC0xMiAxMi0xMmgyMDBjNi42IDAgMTIgNS40IDEyIDEydjMxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9iaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjI0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xNjAgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAyODhoLTE2di04OGMwLTQuNDItMy41OC04LTgtOGgtMTMuNThjLTQuNzQgMC05LjM3IDEuNC0xMy4zMSA0LjAzbC0xNS4zMyAxMC4yMmE3Ljk5NCA3Ljk5NCAwIDAgMC0yLjIyIDExLjA5bDguODggMTMuMzFhNy45OTQgNy45OTQgMCAwIDAgMTEuMDkgMi4yMmwuNDctLjMxVjI4OGgtMTZjLTQuNDIgMC04IDMuNTgtOCA4djE2YzAgNC40MiAzLjU4IDggOCA4aDY0YzQuNDIgMCA4LTMuNTggOC04di0xNmMwLTQuNDItMy41OC04LTgtOHpNNjA4IDY0SDMyQzE0LjMzIDY0IDAgNzguMzMgMCA5NnYzMjBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NzZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY5NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek00OCA0MDB2LTY0YzM1LjM1IDAgNjQgMjguNjUgNjQgNjRINDh6bTAtMjI0di02NGg2NGMwIDM1LjM1LTI4LjY1IDY0LTY0IDY0em0yNzIgMTkyYy01My4wMiAwLTk2LTUwLjE1LTk2LTExMiAwLTYxLjg2IDQyLjk4LTExMiA5Ni0xMTJzOTYgNTAuMTQgOTYgMTEyYzAgNjEuODctNDMgMTEyLTk2IDExMnptMjcyIDMyaC02NGMwLTM1LjM1IDI4LjY1LTY0IDY0LTY0djY0em0wLTIyNGMtMzUuMzUgMC02NC0yOC42NS02NC02NGg2NHY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsV2F2ZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjEuMTYgNTQuNDZDNTgyLjM3IDM4LjE5IDU0My41NSAzMiA1MDQuNzUgMzJjLTEyMy4xNy0uMDEtMjQ2LjMzIDYyLjM0LTM2OS41IDYyLjM0LTMwLjg5IDAtNjEuNzYtMy45Mi05Mi42NS0xMy43Mi0zLjQ3LTEuMS02Ljk1LTEuNjItMTAuMzUtMS42MkMxNS4wNCA3OSAwIDkyLjMyIDAgMTEwLjgxdjMxNy4yNmMwIDEyLjYzIDcuMjMgMjQuNiAxOC44NCAyOS40NkM1Ny42MyA0NzMuODEgOTYuNDUgNDgwIDEzNS4yNSA0ODBjMTIzLjE3IDAgMjQ2LjM0LTYyLjM1IDM2OS41MS02Mi4zNSAzMC44OSAwIDYxLjc2IDMuOTIgOTIuNjUgMTMuNzIgMy40NyAxLjEgNi45NSAxLjYyIDEwLjM1IDEuNjIgMTcuMjEgMCAzMi4yNS0xMy4zMiAzMi4yNS0zMS44MVY4My45M2MtLjAxLTEyLjY0LTcuMjQtMjQuNi0xOC44NS0yOS40N3pNMzIwIDM1MmMtNDQuMTkgMC04MC00Mi45OS04MC05NiAwLTUzLjAyIDM1LjgyLTk2IDgwLTk2czgwIDQyLjk4IDgwIDk2YzAgNTMuMDMtMzUuODMgOTYtODAgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5QmlsbFdhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjIxLjE2IDU0LjQ2QzU4Mi4zNyAzOC4xOSA1NDMuNTUgMzIgNTA0Ljc1IDMyYy0xMjMuMTctLjAxLTI0Ni4zMyA2Mi4zNC0zNjkuNSA2Mi4zNC0zMC44OSAwLTYxLjc2LTMuOTItOTIuNjUtMTMuNzItMy40Ny0xLjEtNi45NS0xLjYyLTEwLjM1LTEuNjJDMTUuMDQgNzkgMCA5Mi4zMiAwIDExMC44MXYzMTcuMjZjMCAxMi42MyA3LjIzIDI0LjYgMTguODQgMjkuNDZDNTcuNjMgNDczLjgxIDk2LjQ1IDQ4MCAxMzUuMjUgNDgwYzEyMy4xNyAwIDI0Ni4zNC02Mi4zNSAzNjkuNTEtNjIuMzUgMzAuODkgMCA2MS43NiAzLjkyIDkyLjY1IDEzLjcyIDMuNDcgMS4xIDYuOTUgMS42MiAxMC4zNSAxLjYyIDE3LjIxIDAgMzIuMjUtMTMuMzIgMzIuMjUtMzEuODFWODMuOTNjLS4wMS0xMi42NC03LjI0LTI0LjYtMTguODUtMjkuNDd6TTQ4IDEzMi4yMmMyMC4xMiA1LjA0IDQxLjEyIDcuNTcgNjIuNzIgOC45M0MxMDQuODQgMTcwLjU0IDc5IDE5Mi42OSA0OCAxOTIuNjl2LTYwLjQ3em0wIDI4NXYtNDcuNzhjMzQuMzcgMCA2Mi4xOCAyNy4yNyA2My43MSA2MS40LTIyLjUzLTEuODEtNDMuNTktNi4zMS02My43MS0xMy42MnpNMzIwIDM1MmMtNDQuMTkgMC04MC00Mi45OS04MC05NiAwLTUzLjAyIDM1LjgyLTk2IDgwLTk2czgwIDQyLjk4IDgwIDk2YzAgNTMuMDMtMzUuODMgOTYtODAgOTZ6bTI3MiAyNy43OGMtMTcuNTItNC4zOS0zNS43MS02Ljg1LTU0LjMyLTguNDQgNS44Ny0yNi4wOCAyNy41LTQ1Ljg4IDU0LjMyLTQ5LjI4djU3Ljcyem0wLTIzNi4xMWMtMzAuODktMy45MS01NC44Ni0yOS43LTU1LjgxLTYxLjU1IDE5LjU0IDIuMTcgMzguMDkgNi4yMyA1NS44MSAxMi42NnY0OC44OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYwOCA2NEgzMkMxNC4zMyA2NCAwIDc4LjMzIDAgOTZ2MzIwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTc2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNNDggNDAwdi02NGMzNS4zNSAwIDY0IDI4LjY1IDY0IDY0SDQ4em0wLTIyNHYtNjRoNjRjMCAzNS4zNS0yOC42NSA2NC02NCA2NHptMjcyIDE3NmMtNDQuMTkgMC04MC00Mi45OS04MC05NiAwLTUzLjAyIDM1LjgyLTk2IDgwLTk2czgwIDQyLjk4IDgwIDk2YzAgNTMuMDMtMzUuODMgOTYtODAgOTZ6bTI3MiA0OGgtNjRjMC0zNS4zNSAyOC42NS02NCA2NC02NHY2NHptMC0yMjRjLTM1LjM1IDAtNjQtMjguNjUtNjQtNjRoNjR2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5Q2hlY2tBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjA4IDMySDMyQzE0LjMzIDMyIDAgNDYuMzMgMCA2NHYzODRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NzZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0xNzYgMzI3Ljg4VjM0NGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di0xNi4yOWMtMTEuMjktLjU4LTIyLjI3LTQuNTItMzEuMzctMTEuMzUtMy45LTIuOTMtNC4xLTguNzctLjU3LTEyLjE0bDExLjc1LTExLjIxYzIuNzctMi42NCA2Ljg5LTIuNzYgMTAuMTMtLjczIDMuODcgMi40MiA4LjI2IDMuNzIgMTIuODIgMy43MmgyOC4xMWM2LjUgMCAxMS44LTUuOTIgMTEuOC0xMy4xOSAwLTUuOTUtMy42MS0xMS4xOS04Ljc3LTEyLjczbC00NS0xMy41Yy0xOC41OS01LjU4LTMxLjU4LTIzLjQyLTMxLjU4LTQzLjM5IDAtMjQuNTIgMTkuMDUtNDQuNDQgNDIuNjctNDUuMDdWMTUyYzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djE2LjI5YzExLjI5LjU4IDIyLjI3IDQuNTEgMzEuMzcgMTEuMzUgMy45IDIuOTMgNC4xIDguNzcuNTcgMTIuMTRsLTExLjc1IDExLjIxYy0yLjc3IDIuNjQtNi44OSAyLjc2LTEwLjEzLjczLTMuODctMi40My04LjI2LTMuNzItMTIuODItMy43MmgtMjguMTFjLTYuNSAwLTExLjggNS45Mi0xMS44IDEzLjE5IDAgNS45NSAzLjYxIDExLjE5IDguNzcgMTIuNzNsNDUgMTMuNWMxOC41OSA1LjU4IDMxLjU4IDIzLjQyIDMxLjU4IDQzLjM5IDAgMjQuNTMtMTkuMDUgNDQuNDQtNDIuNjcgNDUuMDd6TTQxNiAzMTJjMCA0LjQyLTMuNTggOC04IDhIMjk2Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTEyYzQuNDIgMCA4IDMuNTggOCA4djE2em0xNjAgMGMwIDQuNDItMy41OCA4LTggOGgtODBjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGg4MGM0LjQyIDAgOCAzLjU4IDggOHYxNnptMC05NmMwIDQuNDItMy41OCA4LTggOEgyOTZjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgyNzJjNC40MiAwIDggMy41OCA4IDh2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5Q2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0NDhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NzZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYxMjhIMHYzMjB6bTQ0OC0yMDhjMC04Ljg0IDcuMTYtMTYgMTYtMTZoOTZjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MzJjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTk2Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMzJ6bTAgMTIwYzAtNC40MiAzLjU4LTggOC04aDExMmM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg0NTZjLTQuNDIgMC04LTMuNTgtOC04di0xNnpNNjQgMjY0YzAtNC40MiAzLjU4LTggOC04aDMwNGM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2em0wIDk2YzAtNC40MiAzLjU4LTggOC04aDE3NmM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2ek02MjQgMzJIMTZDNy4xNiAzMiAwIDM5LjE2IDAgNDh2NDhoNjQwVjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb251bWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjggNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgzNTJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2em0tNzguODYtMzQ3LjI2YTMxLjk3IDMxLjk3IDAgMCAwLTkuMjEtMTkuNDRMMjAzLjMxIDQuNjljLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTc2LjYgNzYuNjFhMzEuOTcgMzEuOTcgMCAwIDAtOS4yMSAxOS40NEw2NCA0MTZoMjU2bC0zMC44Ni0zMTUuMjZ6TTI0MCAzMDcuMmMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTcwLjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoNzAuNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODMuMjExIDUxMmM3OC45NjIgMCAxNTEuMDc5LTM1LjkyNSAxOTguODU3LTk0Ljc5MiA3LjA2OC04LjcwOC0uNjM5LTIxLjQzLTExLjU2Mi0xOS4zNS0xMjQuMjAzIDIzLjY1NC0yMzguMjYyLTcxLjU3Ni0yMzguMjYyLTE5Ni45NTQgMC03Mi4yMjIgMzguNjYyLTEzOC42MzUgMTAxLjQ5OC0xNzQuMzk0IDkuNjg2LTUuNTEyIDcuMjUtMjAuMTk3LTMuNzU2LTIyLjIzQTI1OC4xNTYgMjU4LjE1NiAwIDAgMCAyODMuMjExIDBjLTE0MS4zMDkgMC0yNTYgMTE0LjUxMS0yNTYgMjU2IDAgMTQxLjMwOSAxMTQuNTExIDI1NiAyNTYgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3J0YXJQZXN0bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAxLjU0IDYwLjkxYzE3LjIyLTE3LjIyIDEyLjUxLTQ2LjI1LTkuMjctNTcuMTRhMzUuNjk2IDM1LjY5NiAwIDAgMC0zNy4zNyAzLjM3TDI1MS4wOSAxNjBoMTUxLjM3bDk5LjA4LTk5LjA5ek00OTYgMTkySDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmMwIDgwLjk4IDUwLjIgMTUwLjExIDEyMS4xMyAxNzguMzItMTIuNzYgMTYuODctMjEuNzIgMzYuOC0yNC45NSA1OC42OS0xLjQ2IDkuOTIgNi4wNCAxOC45OCAxNi4wNyAxOC45OGgyMjMuNWMxMC4wMyAwIDE3LjUzLTkuMDYgMTYuMDctMTguOTgtMy4yMi0yMS44OS0xMi4xOC00MS44Mi0yNC45NS01OC42OUM0MjkuOCA0MDYuMTEgNDgwIDMzNi45OCA0ODAgMjU2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9zcXVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDgwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYxNjBIMHYzMjB6bTU3OS4xNi0xOTJjMTcuODYtMTcuMzkgMjguODQtMzcuMzQgMjguODQtNTguOTEgMC01Mi44Ni00MS43OS05My43OS04Ny45Mi0xMjIuOS00MS45NC0yNi40Ny04MC42My01Ny43Ny0xMTEuOTYtOTYuMjJMNDAwIDBsLTguMTIgOS45N2MtMzEuMzMgMzguNDUtNzAuMDEgNjkuNzYtMTExLjk2IDk2LjIyQzIzMy43OSAxMzUuMyAxOTIgMTc2LjIzIDE5MiAyMjkuMDljMCAyMS41NyAxMC45OCA0MS41MiAyOC44NCA1OC45MWgzNTguMzJ6TTYwOCAzMjBIMTkyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMydi02NGMwLTE3LjY3IDE0LjMzLTMyIDMyLTMyczMyIDE0LjMzIDMyIDMydjY0aDY0di03MmMwLTQ4IDQ4LTcyIDQ4LTcyczQ4IDI0IDQ4IDcydjcyaDY0di02NGMwLTE3LjY3IDE0LjMzLTMyIDMyLTMyczMyIDE0LjMzIDMyIDMydjY0aDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzUyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTY0IDBTMCAzMiAwIDk2djMyaDEyOFY5NmMwLTY0LTY0LTk2LTY0LTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3RvcmN5Y2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMi45IDE5MmMtMTQuOS0uMS0yOS4xIDIuMy00Mi40IDYuOUw0MzcuNiAxNDRINTIwYzEzLjMgMCAyNC0xMC43IDI0LTI0Vjg4YzAtMTMuMy0xMC43LTI0LTI0LTI0aC00NS4zYy02LjggMC0xMy4zIDIuOS0xNy44IDcuOWwtMzcuNSA0MS43LTIyLjgtMzhDMzkyLjIgNjguNCAzODQuNCA2NCAzNzYgNjRoLTgwYy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDY2LjRsMTkuMiAzMkgyMjcuOWMtMTcuNy0yMy4xLTQ0LjktNDAtOTkuOS00MEg3Mi41QzU5IDEwNCA0Ny43IDExNSA0OCAxMjguNWMuMiAxMyAxMC45IDIzLjUgMjQgMjMuNWg1NmMyNC41IDAgMzguNyAxMC45IDQ3LjggMjQuOGwtMTEuMyAyMC41Yy0xMy0zLjktMjYuOS01LjctNDEuMy01LjJDNTUuOSAxOTQuNSAxLjYgMjQ5LjYgMCAzMTdjLTEuNiA3Mi4xIDU2LjMgMTMxIDEyOCAxMzEgNTkuNiAwIDEwOS43LTQwLjggMTI0LTk2aDg0LjJjMTMuNyAwIDI0LjYtMTEuNCAyNC0yNS4xLTIuMS00Ny4xIDE3LjUtOTMuNyA1Ni4yLTEyNWwxMi41IDIwLjhjLTI3LjYgMjMuNy00NS4xIDU4LjktNDQuOCA5OC4yLjUgNjkuNiA1Ny4yIDEyNi41IDEyNi44IDEyNy4xIDcxLjYuNyAxMjkuOC01Ny41IDEyOS4yLTEyOS4xLS43LTY5LjYtNTcuNi0xMjYuNC0xMjcuMi0xMjYuOXpNMTI4IDQwMGMtNDQuMSAwLTgwLTM1LjktODAtODBzMzUuOS04MCA4MC04MGM0LjIgMCA4LjQuMyAxMi41IDFMOTkgMzE2LjRjLTguOCAxNiAyLjggMzUuNiAyMSAzNS42aDgxLjNjLTEyLjQgMjguMi00MC42IDQ4LTczLjMgNDh6bTQ2My45LTc1LjZjLTIuMiA0MC42LTM1IDczLjQtNzUuNSA3NS41LTQ2LjEgMi41LTg0LjQtMzQuMy04NC40LTc5LjkgMC0yMS40IDguNC00MC44IDIyLjEtNTUuMWw0OS40IDgyLjRjNC41IDcuNiAxNC40IDEwIDIyIDUuNWwxMy43LTguMmM3LjYtNC41IDEwLTE0LjQgNS41LTIybC00OC42LTgwLjljNS4yLTEuMSAxMC41LTEuNiAxNS45LTEuNiA0NS42LS4xIDgyLjMgMzguMiA3OS45IDg0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vdW50YWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzNC45MiA0NjIuN2wtMjg4LTQ0OEMzNDEuMDMgNS41NCAzMzAuODkgMCAzMjAgMHMtMjEuMDMgNS41NC0yNi45MiAxNC43bC0yODggNDQ4YTMyLjAwMSAzMi4wMDEgMCAwIDAtMS4xNyAzMi42NEEzMi4wMDQgMzIuMDA0IDAgMCAwIDMyIDUxMmg1NzZjMTEuNzEgMCAyMi40OC02LjM5IDI4LjA5LTE2LjY3YTMxLjk4MyAzMS45ODMgMCAwIDAtMS4xNy0zMi42M3pNMzIwIDkxLjE4TDQwNS4zOSAyMjRIMzIwbC02NCA2NC0zOC4wNi0zOC4wNkwzMjAgOTEuMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vdXNlUG9pbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDIuMTg5IDMyOS4xMjZIMTk2LjEwNWw1NS44MzEgMTM1Ljk5M2MzLjg4OSA5LjQyOC0uNTU1IDE5Ljk5OS05LjQ0NCAyMy45OTlsLTQ5LjE2NSAyMS40MjdjLTkuMTY1IDQtMTkuNDQzLS41NzEtMjMuMzMyLTkuNzE0bC01My4wNTMtMTI5LjEzNi04Ni42NjQgODkuMTM4QzE4LjcyOSA0NzIuNzEgMCA0NjMuNTU0IDAgNDQ3Ljk3N1YxOC4yOTlDMCAxLjg5OSAxOS45MjEtNi4wOTYgMzAuMjc3IDUuNDQzbDI4NC40MTIgMjkyLjU0MmMxMS40NzIgMTEuMTc5IDMuMDA3IDMxLjE0MS0xMi41IDMxLjE0MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW91c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzNTJhMTYwIDE2MCAwIDAgMCAxNjAgMTYwaDY0YTE2MCAxNjAgMCAwIDAgMTYwLTE2MFYyMjRIMHpNMTc2IDBoLTE2QTE2MCAxNjAgMCAwIDAgMCAxNjB2MzJoMTc2em00OCAwaC0xNnYxOTJoMTc2di0zMkExNjAgMTYwIDAgMCAwIDIyNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNdWdIb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI3LjEgMTQ2LjVjMS4zIDcuNyA4IDEzLjUgMTYgMTMuNWgxNi41YzkuOCAwIDE3LjYtOC41IDE2LjMtMTgtMy44LTI4LjItMTYuNC01NC4yLTM2LjYtNzQuNy0xNC40LTE0LjctMjMuNi0zMy4zLTI2LjQtNTMuNUMxMTEuOCA1LjkgMTA1IDAgOTYuOCAwSDgwLjRDNzAuNiAwIDYzIDguNSA2NC4xIDE4YzMuOSAzMS45IDE4IDYxLjMgNDAuNiA4NC40IDEyIDEyLjIgMTkuNyAyNy41IDIyLjQgNDQuMXptMTEyIDBjMS4zIDcuNyA4IDEzLjUgMTYgMTMuNWgxNi41YzkuOCAwIDE3LjYtOC41IDE2LjMtMTgtMy44LTI4LjItMTYuNC01NC4yLTM2LjYtNzQuNy0xNC40LTE0LjctMjMuNi0zMy4zLTI2LjQtNTMuNUMyMjMuOCA1LjkgMjE3IDAgMjA4LjggMGgtMTYuNGMtOS44IDAtMTcuNSA4LjUtMTYuMyAxOCAzLjkgMzEuOSAxOCA2MS4zIDQwLjYgODQuNCAxMiAxMi4yIDE5LjcgMjcuNSAyMi40IDQ0LjF6TTQwMCAxOTJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjE5MmMwIDUzIDQzIDk2IDk2IDk2aDE5MmM1MyAwIDk2LTQzIDk2LTk2aDE2YzYxLjggMCAxMTItNTAuMiAxMTItMTEycy01MC4yLTExMi0xMTItMTEyem0wIDE2MGgtMTZ2LTk2aDE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNdXNpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzAuMzggMS41MUwxNTAuNDEgOTZBMzIgMzIgMCAwIDAgMTI4IDEyNi41MXYyNjEuNDFBMTM5IDEzOSAwIDAgMCA5NiAzODRjLTUzIDAtOTYgMjguNjYtOTYgNjRzNDMgNjQgOTYgNjQgOTYtMjguNjYgOTYtNjRWMjE0LjMybDI1Ni03NXYxODQuNjFhMTM4LjQgMTM4LjQgMCAwIDAtMzItMy45M2MtNTMgMC05NiAyOC42Ni05NiA2NHM0MyA2NCA5NiA2NCA5Ni0yOC42NSA5Ni02NFYzMmEzMiAzMiAwIDAgMC00MS42Mi0zMC40OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmV0d29ya1dpcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAyNjR2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDM0NHYtNDBoNzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDIyNGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMjhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg3MnY0MEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTA0djQwSDY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDE2MGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjM1MmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC01NnYtNDBoMzA0djQwaC01NmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMjhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgxNjBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYzNTJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtNTZ2LTQwaDEwNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnpNMjU2IDEyOFY2NGgxMjh2NjRIMjU2em0tNjQgMzIwSDk2di02NGg5NnY2NHptMzUyIDBoLTk2di02NGg5NnY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmV1dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyODggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxNzZjMC03OS41LTY0LjUtMTQ0LTE0NC0xNDRTMCA5Ni41IDAgMTc2YzAgNjguNSA0Ny45IDEyNS45IDExMiAxNDAuNFY0NjhjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMlYzMTYuNGM2NC4xLTE0LjUgMTEyLTcxLjkgMTEyLTE0MC40em0tMTQ0IDgwYy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmV3c3BhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU1MiA2NEg4OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djhIMjRjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYyNzJjMCAzMC45MjggMjUuMDcyIDU2IDU2IDU2aDQ3MmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4Vjg4YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHpNNTYgNDAwYTggOCAwIDAgMS04LThWMTQ0aDE2djI0OGE4IDggMCAwIDEtOCA4em0yMzYtMTZIMTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi04YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTUyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2OGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyem0yMDggMEgzNDhjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LThjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNTJjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY4YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6bS0yMDgtOTZIMTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi04YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTUyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2OGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyem0yMDggMEgzNDhjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LThjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNTJjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY4YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6bTAtOTZIMTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi00MGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDM2MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQwYzAgNi42MjctNS4zNzMgMTItMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5vdEVxdWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAyMDhjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMjMuODhsNTEuODctNjYuODFjNS4zNy03LjAyIDQuMDQtMTcuMDYtMi45Ny0yMi40M0w0MTUuNjEgMy4zYy03LjAyLTUuMzgtMTcuMDYtNC4wNC0yMi40NCAyLjk3TDMxMS4wOSAxMTJIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgyMDQuNTZsLTc0LjUzIDk2SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTUuNDlsLTUxLjg3IDY2LjgxYy01LjM3IDcuMDEtNC4wNCAxNy4wNSAyLjk3IDIyLjQzTDY0IDUwOC43YzcuMDIgNS4zOCAxNy4wNiA0LjA0IDIyLjQzLTIuOTdMMTY4LjUyIDQwMEg0MTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgyNDMuMDVsNzQuNTMtOTZINDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOb3Rlc01lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDY0aC04MGMwLTM1LjMtMjguNy02NC02NC02NHMtNjQgMjguNy02NCA2NEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjExMmMwLTI2LjUtMjEuNS00OC00OC00OHpNMTkyIDQwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptOTYgMzA0YzAgNC40LTMuNiA4LTggOGgtNTZ2NTZjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di01NmgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDhjMC00LjQgMy42LTggOC04aDU2di01NmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djU2aDU2YzQuNCAwIDggMy42IDggOHY0OHptMC0xOTJjMCA0LjQtMy42IDgtOCA4SDEwNGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTc2YzQuNCAwIDggMy42IDggOHYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2JqZWN0R3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDEyOFY5NmgyMGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyVjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjIwSDY0VjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJDNS4zNzMgMzIgMCAzNy4zNzMgMCA0NHY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDIwdjMyMEgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTIwaDM4NHYyMGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTIwVjEyOHpNOTYgMjc2VjE0MGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE2OGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjEzNmMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDEwOGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnptMzIwIDk2YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMjM2Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi01Mmg3MmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTcyaDg0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MTM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPYmplY3RVbmdyb3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyMHYyNmE2IDYgMCAwIDEtNiA2SDZhNiA2IDAgMCAxLTYtNnYtNTJhNiA2IDAgMCAxIDYtNmgyNlY5Nkg2YTYgNiAwIDAgMS02LTZWMzhhNiA2IDAgMCAxIDYtNmg1MmE2IDYgMCAwIDEgNiA2djI2aDI4OFYzOGE2IDYgMCAwIDEgNi02aDUyYTYgNiAwIDAgMSA2IDZ2NTJhNiA2IDAgMCAxLTYgNmgtMjZ2MTkyaDI2YTYgNiAwIDAgMSA2IDZ2NTJhNiA2IDAgMCAxLTYgNmgtNTJhNiA2IDAgMCAxLTYtNnYtMjZINjR6bTQ4MC02NHYtMzJoMjZhNiA2IDAgMCAwIDYtNnYtNTJhNiA2IDAgMCAwLTYtNmgtNTJhNiA2IDAgMCAwLTYgNnYyNkg0MDh2NzJoOGMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2NjRjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0aC02NGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di04SDE5MnY3MmgtMjZhNiA2IDAgMCAwLTYgNnY1MmE2IDYgMCAwIDAgNiA2aDUyYTYgNiAwIDAgMCA2LTZ2LTI2aDI4OHYyNmE2IDYgMCAwIDAgNiA2aDUyYTYgNiAwIDAgMCA2LTZ2LTUyYTYgNiAwIDAgMC02LTZoLTI2VjI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2lsQ2FuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyOS44IDE2MC4zMUw0MTYgMjI0bC01MC40OS0yNS4yNGE2NC4wNyA2NC4wNyAwIDAgMC0yOC42Mi02Ljc2SDI4MHYtNDhoNTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE3NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNTZ2NDhoLTU2TDM3LjcyIDE2Ni44NmEzMS45IDMxLjkgMCAwIDAtNS43OS0uNTNDMTQuNjcgMTY2LjMzIDAgMTgwLjM2IDAgMTk4LjM0djk0Ljk1YzAgMTUuNDYgMTEuMDYgMjguNzIgMjYuMjggMzEuNDhMOTYgMzM3LjQ2VjM4NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDI3NC42M2M4LjU1IDAgMTYuNzUtMy40MiAyMi43Ni05LjUxbDIxMi4yNi0yMTQuNzVjMS41LTEuNSAyLjM0LTMuNTQgMi4zNC01LjY2VjE2OGMuMDEtNS4zMS01LjA4LTkuMTUtMTAuMTktNy42OXpNOTYgMjg4LjY3bC00OC04Ljczdi02Mi40M2w0OCA4LjczdjYyLjQzem00NTMuMzMgODQuNjZjMCAyMy41NiAxOS4xIDQyLjY3IDQyLjY3IDQyLjY3czQyLjY3LTE5LjEgNDIuNjctNDIuNjdTNTkyIDI4OCA1OTIgMjg4cy00Mi42NyA2MS43Ny00Mi42NyA4NS4zM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzYwLjYgNjAuOTRhMTAuNDMgMTAuNDMgMCAwIDAgMTQuNzYgMGwyMS41Ny0yMS41NmExMC40MyAxMC40MyAwIDAgMCAwLTE0Ljc2TDM3NS4zNSAzLjA2Yy00LjA4LTQuMDctMTAuNjgtNC4wNy0xNC43NiAwbC0yMS41NyAyMS41NmExMC40MyAxMC40MyAwIDAgMCAwIDE0Ljc2bDIxLjU4IDIxLjU2ek00MTIuMTEgMTkyYy0yNi42OSAwLTUxLjc3IDEwLjM5LTcwLjY0IDI5LjI1bC0yNC4yNSAyNC4yNWMtNi43OCA2Ljc3LTE1Ljc4IDEwLjUtMjUuMzggMTAuNUgyNDVjMTAuNTQtMjIuMSAxNC4xNy00OC4xMSA3LjczLTc1LjIzLTEwLjEtNDIuNTUtNDYuMzYtNzYuMTEtODkuNTItODMuMTktMzYuMTUtNS45My03MC45IDUuMDQtOTYuMDEgMjguNzgtNy4zNiA2Ljk2LTYuOTcgMTguODUgMS4xMiAyNC45M2wyNi4xNSAxOS42M2M1LjcyIDQuMyAxMy42NiA0LjMyIDE5LjItLjIxIDguNDUtNi45IDE5LjAyLTEwLjcxIDMwLjI3LTEwLjcxIDI2LjQ3IDAgNDguMDEgMjEuNTMgNDguMDEgNDhzLTIxLjU0IDQ4LTQ4LjAxIDQ4aC0zMS45Yy0xMS45NiAwLTE5Ljc0IDEyLjU4LTE0LjM5IDIzLjI4bDE2LjA5IDMyLjE3YzIuNTMgNS4wNiA3LjYgOC4xIDEzLjE3IDguNTVoMzMuMDNjMzUuMyAwIDY0LjAxIDI4LjcgNjQuMDEgNjRzLTI4LjcxIDY0LTY0LjAxIDY0Yy05Ni4wMiAwLTEyMi4zNS01NC4wMi0xNDUuMTUtOTIuMDMtNC41My03LjU1LTE0Ljc3LTMuNTgtMTQuNzkgNS4yMkMtLjA5IDQxNiA0MS4xMyA1MTIgMTU5Ljk0IDUxMmM3MC41OSAwIDEyOC4wMi01Ny40MiAxMjguMDItMTI4IDAtMjMuNDItNi43OC00NS4xLTE3LjgxLTY0aDIxLjY5YzI2LjY5IDAgNTEuNzctMTAuMzkgNzAuNjQtMjkuMjVsMjQuMjUtMjQuMjVjNi43OC02Ljc3IDE1Ljc4LTEwLjUgMjUuMzgtMTAuNSAxOS43OCAwIDM1Ljg4IDE2LjA5IDM1Ljg4IDM1Ljg4VjM5MmMwIDEzLjIzLTE4Ljc3IDI0LTMyLjAxIDI0LTM5LjQgMC02Ni42Ny0yNC4yNC04MS44Mi00Mi44OS00Ljc3LTUuODctMTQuMi0yLjU0LTE0LjIgNS4wMlY0MTZzMCA2NCA5Ni4wMiA2NGM0OC41NCAwIDk2LjAyLTM5LjQ3IDk2LjAyLTg4VjI5MS44OGMwLTU1LjA4LTQ0LjgtOTkuODgtOTkuODktOTkuODh6bTQyLjE4LTEyNC43M2MtODUuNTUgNjUuMTItMTY5LjA1IDIuNzUtMTcyLjU4LjA1LTYuMDItNC42Mi0xNC40NC00LjM4LTIwLjE0LjU1LTUuNzQgNC45Mi03LjI3IDEzLjE3LTMuNjYgMTkuOCAxLjYxIDIuOTUgNDAuMzcgNzIuMzQgMTE4LjggNzIuMzQgNzkuOTIgMCA5OC43OC0zMS4zNiAxMDEuNzUtMzcuNjYgMS4wMi0yLjEyIDEuNTMtNC40NyAxLjUzLTYuODNWODBjMC0xMy4yMi0xNS4xNC0yMC42OS0yNS43LTEyLjczelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPdHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDggMzJoLTMybC0xMy4yNS0xMy4yNUE2My45NyA2My45NyAwIDAgMCA1MTcuNDkgMEg0OTdjLTExLjE0IDAtMjIuMDggMi45MS0zMS43NSA4LjQzTDMxMiA5NmgtNTZDMTQ5Ljk2IDk2IDY0IDE4MS45NiA2NCAyODh2MS42MWMwIDMyLjc1LTE2IDYyLjE0LTM5LjU2IDg0Ljg5LTE4LjE5IDE3LjU4LTI4LjEgNDMuNjgtMjMuMTkgNzEuOCA2Ljc2IDM4LjggNDIuOSA2NS43IDgyLjI4IDY1LjdIMTkyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJzLTE0LjMzLTMyLTMyLTMySDgwYy04LjgzIDAtMTYtNy4xNy0xNi0xNnM3LjE3LTE2IDE2LTE2aDIyNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtNjRsMTQ5LjQ5LTgwLjVMNDQ4IDQxNmg4MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMjguMjJsLTU1LjExLTExMC4yMUw1MjEuMTQgMTkySDU0NGM1My4wMiAwIDk2LTQyLjk4IDk2LTk2VjY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bS05NiAxNmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnMtNy4xNiAxNi0xNiAxNi0xNi03LjE2LTE2LTE2IDcuMTYtMTYgMTYtMTZ6bTMyIDk2aC0zNC45Nkw0MDcuMiAxOTguODRsLTEzLjc3LTI3LjU1TDUxMiAxMTJoNzcuMDVjLTYuNjIgMTguNTgtMjQuMjIgMzItNDUuMDUgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU91dGRlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAwLjY5IDM2My4yOWMxMCAxMCAyNy4zMSAyLjkzIDI3LjMxLTExLjMxVjE2MGMwLTE0LjMyLTE3LjMzLTIxLjMxLTI3LjMxLTExLjMxbC05NiA5NmExNiAxNiAwIDAgMCAwIDIyLjYyek00MzIgNDE2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTMuMTctMTI4SDIwNC44M0ExMi44MiAxMi44MiAwIDAgMCAxOTIgMzAwLjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDIwNC44MyAzNTJoMjMwLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCAzMzkuMTd2LTM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQzNS4xNyAyODh6bTAtMTI4SDIwNC44M0ExMi44MiAxMi44MiAwIDAgMCAxOTIgMTcyLjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDIwNC44MyAyMjRoMjMwLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCAyMTEuMTd2LTM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQzNS4xNyAxNjB6TTQzMiAzMkgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFnZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDY0SDY0YTY0IDY0IDAgMCAwLTY0IDY0djI1NmE2NCA2NCAwIDAgMCA2NCA2NGgzODRhNjQgNjQgMCAwIDAgNjQtNjRWMTI4YTY0IDY0IDAgMCAwLTY0LTY0ek0xNjAgMzY4SDgwYTE2IDE2IDAgMCAxLTE2LTE2di0xNmExNiAxNiAwIDAgMSAxNi0xNmg4MHptMTI4LTE2YTE2IDE2IDAgMCAxLTE2IDE2aC04MHYtNDhoODBhMTYgMTYgMCAwIDEgMTYgMTZ6bTE2MC0xMjhhMzIgMzIgMCAwIDEtMzIgMzJIOTZhMzIgMzIgMCAwIDEtMzItMzJ2LTY0YTMyIDMyIDAgMCAxIDMyLTMyaDMyMGEzMiAzMiAwIDAgMSAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFpbnRCcnVzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjcuMDIgMzA5LjM0Yy00MC4xMiAyLjU4LTc2LjUzIDE3Ljg2LTk3LjE5IDcyLjMtMi4zNSA2LjIxLTggOS45OC0xNC41OSA5Ljk4LTExLjExIDAtNDUuNDYtMjcuNjctNTUuMjUtMzQuMzVDMCA0MzkuNjIgMzcuOTMgNTEyIDEyOCA1MTJjNzUuODYgMCAxMjgtNDMuNzcgMTI4LTEyMC4xOSAwLTMuMTEtLjY1LTYuMDgtLjk3LTkuMTNsLTg4LjAxLTczLjM0ek00NTcuODkgMGMtMTUuMTYgMC0yOS4zNyA2LjcxLTQwLjIxIDE2LjQ1QzIxMy4yNyAxOTkuMDUgMTkyIDIwMy4zNCAxOTIgMjU3LjA5YzAgMTMuNyAzLjI1IDI2Ljc2IDguNzMgMzguN2w2My44MiA1My4xOGM3LjIxIDEuOCAxNC42NCAzLjAzIDIyLjM5IDMuMDMgNjIuMTEgMCA5OC4xMS00NS40NyAyMTEuMTYtMjU2LjQ2IDcuMzgtMTQuMzUgMTMuOS0yOS44NSAxMy45LTQ1Ljk5QzUxMiAyMC42NCA0ODYgMCA0NTcuODkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFpbnRSb2xsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDEyOFYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDMyQzE0LjMzIDAgMCAxNC4zMyAwIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzUyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ6bTMyLTY0djEyOGMwIDE3LjY3LTE0LjMzIDMyLTMyIDMySDI1NmMtMzUuMzUgMC02NCAyOC42NS02NCA2NHYzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMjhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjM1MmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMydi0zMmgxNjBjNTMuMDIgMCA5Ni00Mi45OCA5Ni05NnYtNjRjMC0zNS4zNS0yOC42NS02NC02NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFsZXR0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDQuMyA1QzEwNC45IDI0LjQgMjQuOCAxMDQuMyA1LjIgMjAzLjRjLTM3IDE4NyAxMzEuNyAzMjYuNCAyNTguOCAzMDYuNyA0MS4yLTYuNCA2MS40LTU0LjYgNDIuNS05MS43LTIzLjEtNDUuNCA5LjktOTguNCA2MC45LTk4LjRoNzkuN2MzNS44IDAgNjQuOC0yOS42IDY0LjktNjUuM0M1MTEuNSA5Ny4xIDM2OC4xLTI2LjkgMjA0LjMgNXpNOTYgMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMzItMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTI4LTY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTI4IDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFsbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAyNTZoMzUyYzguOCAwIDE2LTcuMiAxNi0xNlYxNmMwLTguOC03LjItMTYtMTYtMTZIMzg0djEyOGwtNjQtMzItNjQgMzJWMEgxNDRjLTguOCAwLTE2IDcuMi0xNiAxNnYyMjRjMCA4LjggNy4yIDE2IDE2IDE2em00ODAgMTI4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djY0SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDYwOGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNmgtNDh2LTY0aDQ4em0tMzM2IDY0SDEyOHYtNjRoMTYwdjY0em0yMjQgMEgzNTJ2LTY0aDE2MHY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFwZXJQbGFuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzYgMy4yTDEyLjUgMjcwLjZjLTE4LjEgMTAuNC0xNS44IDM1LjYgMi4yIDQzLjJMMTIxIDM1OC40bDI4Ny4zLTI1My4yYzUuNS00LjkgMTMuMyAyLjYgOC42IDguM0wxNzYgNDA3djgwLjVjMCAyMy42IDI4LjUgMzIuOSA0Mi41IDE1LjhMMjgyIDQyNmwxMjQuNiA1Mi4yYzE0LjIgNiAzMC40LTIuOSAzMy0xOC4ybDcyLTQzMkM1MTUgNy44IDQ5My4zLTYuOCA0NzYgMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXBlcmNsaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMuMjQ2IDQ2Ni4xNDJjLTU4LjQzLTYwLjI4OS01Ny4zNDEtMTU3LjUxMSAxLjM4Ni0yMTcuNTgxTDI1NC4zOTIgMzRjNDQuMzE2LTQ1LjMzMiAxMTYuMzUxLTQ1LjMzNiAxNjAuNjcxIDAgNDMuODkgNDQuODk0IDQzLjk0MyAxMTcuMzI5IDAgMTYyLjI3NkwyMzIuMjE0IDM4My4xMjhjLTI5Ljg1NSAzMC41MzctNzguNjMzIDMwLjExMS0xMDcuOTgyLS45OTgtMjguMjc1LTI5Ljk3LTI3LjM2OC03Ny40NzMgMS40NTItMTA2Ljk1M2wxNDMuNzQzLTE0Ni44MzVjNi4xODItNi4zMTQgMTYuMzEyLTYuNDIyIDIyLjYyNi0uMjQxbDIyLjg2MSAyMi4zNzljNi4zMTUgNi4xODIgNi40MjIgMTYuMzEyLjI0MSAyMi42MjZMMTcxLjQyNyAzMTkuOTI3Yy00LjkzMiA1LjA0NS01LjIzNiAxMy40MjgtLjY0OCAxOC4yOTIgNC4zNzIgNC42MzQgMTEuMjQ1IDQuNzExIDE1LjY4OC4xNjVsMTgyLjg0OS0xODYuODUxYzE5LjYxMy0yMC4wNjIgMTkuNjEzLTUyLjcyNS0uMDExLTcyLjc5OC0xOS4xODktMTkuNjI3LTQ5Ljk1Ny0xOS42MzctNjkuMTU0IDBMOTAuMzkgMjkzLjI5NWMtMzQuNzYzIDM1LjU2LTM1LjI5OSA5My4xMi0xLjE5MSAxMjguMzEzIDM0LjAxIDM1LjA5MyA4OC45ODUgMzUuMTM3IDEyMy4wNTguMjg2bDE3Mi4wNi0xNzUuOTk5YzYuMTc3LTYuMzE5IDE2LjMwNy02LjQzMyAyMi42MjYtLjI1NmwyMi44NzcgMjIuMzY0YzYuMzE5IDYuMTc3IDYuNDM0IDE2LjMwNy4yNTYgMjIuNjI2bC0xNzIuMDYgMTc1Ljk5OGMtNTkuNTc2IDYwLjkzOC0xNTUuOTQzIDYwLjIxNi0yMTQuNzctLjQ4NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFyYWNodXRlQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMS45IDE3NWMtOS4xLTc1LjYtNzguNC0xMzIuNC0xNTguMy0xNTguN0MzOTAgNTUuNyA0MTYgMTE2LjkgNDE2IDE5MmgyOC4xTDMyNy41IDMyMS41Yy0yLjUtLjYtNC44LTEuNS03LjUtMS41aC00OFYxOTJoMTEyQzM4NCA3Ni44IDMxNS4xIDAgMjU2IDBTMTI4IDc2LjggMTI4IDE5MmgxMTJ2MTI4aC00OGMtMi43IDAtNSAuOS03LjUgMS41TDY3LjkgMTkySDk2YzAtNzUuMSAyNi0xMzYuMyA2Mi40LTE3NS43Qzc4LjUgNDIuNyA5LjIgOTkuNS4xIDE3NWMtMS4xIDkuMSA2LjggMTcgMTYgMTdoOC43bDEzNi43IDE1MS45Yy0uNyAyLjYtMS42IDUuMi0xLjYgOC4xdjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgxMjhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMi45LS45LTUuNC0xLjYtOC4xTDQ4Ny4xIDE5Mmg4LjdjOS4zIDAgMTcuMi03LjggMTYuMS0xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFyYWdyYXBoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA0OHYzMmExNiAxNiAwIDAgMS0xNiAxNmgtNDh2MzY4YTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNlY5NmgtMzJ2MzY4YTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNlYzNTJoLTMyYTE2MCAxNjAgMCAwIDEgMC0zMjBoMjQwYTE2IDE2IDAgMCAxIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXJraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTI0MCAzMjBoLTQ4djQ4YzAgOC44LTcuMiAxNi0xNiAxNmgtMzJjLTguOCAwLTE2LTcuMi0xNi0xNlYxNDRjMC04LjggNy4yLTE2IDE2LTE2aDk2YzUyLjkgMCA5NiA0My4xIDk2IDk2cy00My4xIDk2LTk2IDk2em0wLTEyOGgtNDh2NjRoNDhjMTcuNiAwIDMyLTE0LjQgMzItMzJzLTE0LjQtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhc3Nwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOS42MiAxNzZoMzkuMDljMS40OS0yNy4wMyA2LjU0LTUxLjM1IDE0LjIxLTcwLjQxLTI3LjcxIDEzLjI0LTQ4LjAyIDM5LjE5LTUzLjMgNzAuNDF6bTAgMzJjNS4yOSAzMS4yMiAyNS41OSA1Ny4xNyA1My4zIDcwLjQxLTcuNjgtMTkuMDYtMTIuNzItNDMuMzgtMTQuMjEtNzAuNDFoLTM5LjA5ek0yMjQgMjg2LjY5YzcuNjktNy40NSAyMC43Ny0zNC40MiAyMy40My03OC42OWgtNDYuODdjMi42NyA0NC4yNiAxNS43NSA3MS4yNCAyMy40NCA3OC42OXpNMjAwLjU3IDE3Nmg0Ni44N2MtMi42Ni00NC4yNi0xNS43NC03MS4yNC0yMy40My03OC42OS03LjcgNy40NS0yMC43OCAzNC40My0yMy40NCA3OC42OXptNjQuNTEgMTAyLjQxYzI3LjcxLTEzLjI0IDQ4LjAyLTM5LjE5IDUzLjMtNzAuNDFoLTM5LjA5Yy0xLjQ5IDI3LjAzLTYuNTMgNTEuMzUtMTQuMjEgNzAuNDF6TTQxNiAwSDY0QzI4LjY1IDAgMCAyOC42NSAwIDY0djM4NGMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0aDM1MmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bS04MCA0MTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDIyNGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNnptLTExMi05NmMtNzAuNjkgMC0xMjgtNTcuMzEtMTI4LTEyOFMxNTMuMzEgNjQgMjI0IDY0czEyOCA1Ny4zMSAxMjggMTI4LTU3LjMxIDEyOC0xMjggMTI4em00MS4wOC0yMTQuNDFjNy42OCAxOS4wNiAxMi43MiA0My4zOCAxNC4yMSA3MC40MWgzOS4wOWMtNS4yOC0zMS4yMi0yNS41OS01Ny4xNy01My4zLTcwLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXN0YWZhcmlhbmlzbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQuNTQgMzQ3LjY3Yy0zMi43LTEyLjUyLTU3LjM2IDQuMjUtNzUuMzcgMTYuNDUtMTcuMDYgMTEuNTMtMjMuMjUgMTQuNDItMzEuNDEgMTEuMzYtOC4xMi0zLjA5LTEwLjgzLTkuMzgtMTUuODktMjkuMzgtMy4zMy0xMy4xNS03LjQ0LTI5LjMyLTE3Ljk1LTQyLjY1IDIuMjQtMi45MSA0LjQzLTUuNzkgNi4zOC04LjU3QzUwMC40NyAzMDQuNDUgNTEzLjcxIDMxMiA1MzIgMzEyYzMzLjk1IDAgNTAuODctMjUuNzggNjIuMDYtNDIuODMgMTAuNTktMTYuMTQgMTUtMjEuMTcgMjEuOTQtMjEuMTcgMTMuMjUgMCAyNC0xMC43NSAyNC0yNHMtMTAuNzUtMjQtMjQtMjRjLTMzLjk1IDAtNTAuODcgMjUuNzgtNjIuMDYgNDIuODMtMTAuNiAxNi4xNC0xNSAyMS4xNy0yMS45NCAyMS4xNy0xNy4zMSAwLTM3LjQ4LTYxLjQzLTk3LjI2LTEwMS45MWwxNy4yNS0zNC41QzQ4NS40MyAxMjUuNSA1MTIgOTcuOTggNTEyIDY0YzAtMzUuMzUtMjguNjUtNjQtNjQtNjRzLTY0IDI4LjY1LTY0IDY0YzAgMTMuMDIgMy45NCAyNS4xIDEwLjYyIDM1LjIxbC0xOC4xNSAzNi4zYy0xNi45OC00LjYtMzUuNi03LjUxLTU2LjQ2LTcuNTFzLTM5LjQ5IDIuOTEtNTYuNDYgNy41MWwtMTguMTUtMzYuM0MyNTIuMDYgODkuMSAyNTYgNzcuMDIgMjU2IDY0YzAtMzUuMzUtMjguNjUtNjQtNjQtNjRzLTY0IDI4LjY1LTY0IDY0YzAgMzMuOTggMjYuNTYgNjEuNSA2MC4wMiA2My42bDE3LjI1IDM0LjVDMTQ1LjY4IDIwMi40NCAxMjUuMTUgMjY0IDEwOCAyNjRjLTYuOTQgMC0xMS4zNC01LjAzLTIxLjk0LTIxLjE3Qzc0Ljg4IDIyNS43OCA1Ny45NiAyMDAgMjQgMjAwYy0xMy4yNSAwLTI0IDEwLjc1LTI0IDI0czEwLjc1IDI0IDI0IDI0YzYuOTQgMCAxMS4zNCA1LjAzIDIxLjk0IDIxLjE3QzU3LjEzIDI4Ni4yMiA3NC4wNSAzMTIgMTA4IDMxMmMxOC4yOSAwIDMxLjUzLTcuNTUgNDEuNy0xNy4xMSAxLjk1IDIuNzkgNC4xNCA1LjY2IDYuMzggOC41Ny0xMC41MSAxMy4zMy0xNC42MiAyOS41LTE3Ljk1IDQyLjY1LTUuMDYgMjAtNy43NyAyNi4yOC0xNS44OSAyOS4zOC04LjExIDMuMDYtMTQuMzMuMTctMzEuNDEtMTEuMzYtMTguMDMtMTIuMi00Mi43Mi0yOC45Mi03NS4zNy0xNi40NS0xMi4zOSA0LjcyLTE4LjU5IDE4LjU4LTEzLjg3IDMwLjk3IDQuNzIgMTIuNDEgMTguNjEgMTguNjEgMzAuOTcgMTMuODggOC4xNi0zLjA5IDE0LjM0LS4xOSAzMS4zOSAxMS4zNiAxMy41NSA5LjE2IDMwLjgzIDIwLjg2IDUyLjQyIDIwLjg0IDcuMTcgMCAxNC44My0xLjI4IDIyLjk3LTQuMzkgMzIuNjYtMTIuNDQgMzkuOTgtNDEuMzMgNDUuMzMtNjIuNDQgMi4yMS04LjcyIDMuOTktMTQuNDkgNS45NS0xOC44NyAxNi42MiAxMy42MSAzNi45NSAyNS44OCA2MS42NCAzNC4xNy05Ljk2IDM3LTMyLjE4IDkwLjgtNjAuMjYgOTAuOC0xMy4yNSAwLTI0IDEwLjc1LTI0IDI0czEwLjc1IDI0IDI0IDI0YzY2Ljc0IDAgOTcuMDUtODguNjMgMTA3LjQyLTEyOS4xNCA2LjY5LjYgMTMuNDIgMS4xNCAyMC41OCAxLjE0czEzLjg5LS41NCAyMC41OC0xLjE0QzM1MC45NSA0MjMuMzcgMzgxLjI2IDUxMiA0NDggNTEyYzEzLjI1IDAgMjQtMTAuNzUgMjQtMjRzLTEwLjc1LTI0LTI0LTI0Yy0yNy45NCAwLTUwLjIxLTUzLjgxLTYwLjIyLTkwLjgxIDI0LjY5LTguMjkgNDUtMjAuNTYgNjEuNjItMzQuMTYgMS45NiA0LjM4IDMuNzQgMTAuMTUgNS45NSAxOC44NyA1LjM0IDIxLjExIDEyLjY3IDUwIDQ1LjMzIDYyLjQ0IDguMTQgMy4xMSAxNS44IDQuMzkgMjIuOTcgNC4zOSAyMS41OSAwIDM4Ljg3LTExLjY5IDUyLjQyLTIwLjg0IDE3LjA1LTExLjU1IDIzLjI4LTE0LjQ1IDMxLjM5LTExLjM2IDEyLjM5IDQuNzUgMjYuMjctMS40NyAzMC45Ny0xMy44OCA0LjcxLTEyLjQtMS40OS0yNi4yNi0xMy44OS0zMC45OHpNNDQ4IDQ4YzguODIgMCAxNiA3LjE4IDE2IDE2cy03LjE4IDE2LTE2IDE2LTE2LTcuMTgtMTYtMTYgNy4xOC0xNiAxNi0xNnptLTI1NiAwYzguODIgMCAxNiA3LjE4IDE2IDE2cy03LjE4IDE2LTE2IDE2LTE2LTcuMTgtMTYtMTYgNy4xOC0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFzdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDE4NGMwLTMwLjg3OSAyNS4xMjItNTYgNTYtNTZoMTM2VjU2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNGgtODAuNjFDMjA0LjMwNiAxMi44OSAxODMuNjM3IDAgMTYwIDBzLTQ0LjMwNiAxMi44OS01NS4zOSAzMkgyNEMxMC43NDUgMzIgMCA0Mi43NDUgMCA1NnYzMzZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwNFYxODR6bTMyLTE0NGMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjRzLTEwLjc0NSAyNC0yNCAyNC0yNC0xMC43NDUtMjQtMjQgMTAuNzQ1LTI0IDI0LTI0em0xODQgMjQ4aDEwNHYyMDBjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDE4NGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0VjE4NGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoMTM2djEwNGMwIDEzLjIgMTAuOCAyNCAyNCAyNHptMTA0LTM4LjA1OVYyNTZoLTk2di05Nmg2LjA1OWEyNCAyNCAwIDAgMSAxNi45NyA3LjAyOWw2NS45NDEgNjUuOTQxYTI0LjAwMiAyNC4wMDIgMCAwIDEgNy4wMyAxNi45NzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhdXNlQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bS0xNiAzMjhjMCA4LjgtNy4yIDE2LTE2IDE2aC00OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2djE2MHptMTEyIDBjMCA4LjgtNy4yIDE2LTE2IDE2aC00OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2djE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGF1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0IDQ3OUg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNzljMC0yNi41IDIxLjUtNDggNDgtNDhoOTZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4em0zMDQtNDhWNzljMC0yNi41LTIxLjUtNDgtNDgtNDhoLTk2Yy0yNi41IDAtNDggMjEuNS00OCA0OHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMjI0Yy03OS40MSAwLTE5MiAxMjIuNzYtMTkyIDIwMC4yNSAwIDM0LjkgMjYuODEgNTUuNzUgNzEuNzQgNTUuNzUgNDguODQgMCA4MS4wOS0yNS4wOCAxMjAuMjYtMjUuMDggMzkuNTEgMCA3MS44NSAyNS4wOCAxMjAuMjYgMjUuMDggNDQuOTMgMCA3MS43NC0yMC44NSA3MS43NC01NS43NUM0NDggMzQ2Ljc2IDMzNS40MSAyMjQgMjU2IDIyNHptLTE0Ny4yOC0xMi42MWMtMTAuNC0zNC42NS00Mi40NC01Ny4wOS03MS41Ni01MC4xMy0yOS4xMiA2Ljk2LTQ0LjI5IDQwLjY5LTMzLjg5IDc1LjM0IDEwLjQgMzQuNjUgNDIuNDQgNTcuMDkgNzEuNTYgNTAuMTMgMjkuMTItNi45NiA0NC4yOS00MC42OSAzMy44OS03NS4zNHptODQuNzItMjAuNzhjMzAuOTQtOC4xNCA0Ni40Mi00OS45NCAzNC41OC05My4zNnMtNDYuNTItNzIuMDEtNzcuNDYtNjMuODctNDYuNDIgNDkuOTQtMzQuNTggOTMuMzZjMTEuODQgNDMuNDIgNDYuNTMgNzIuMDIgNzcuNDYgNjMuODd6bTI4MS4zOS0yOS4zNGMtMjkuMTItNi45Ni02MS4xNSAxNS40OC03MS41NiA1MC4xMy0xMC40IDM0LjY1IDQuNzcgNjguMzggMzMuODkgNzUuMzQgMjkuMTIgNi45NiA2MS4xNS0xNS40OCA3MS41Ni01MC4xMyAxMC40LTM0LjY1LTQuNzctNjguMzgtMzMuODktNzUuMzR6bS0xNTYuMjcgMjkuMzRjMzAuOTQgOC4xNCA2NS42Mi0yMC40NSA3Ny40Ni02My44NyAxMS44NC00My40Mi0zLjY0LTg1LjIxLTM0LjU4LTkzLjM2cy02NS42MiAyMC40NS03Ny40NiA2My44N2MtMTEuODQgNDMuNDIgMy42NCA4NS4yMiAzNC41OCA5My4zNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMTg0IDI0OGMwIDMxLjkzLTguMiA2MS45Ny0yMi41NyA4OC4xN0wyODAgMjQwLjYzVjc0Ljk3Yzg2LjIzIDE1LjIxIDE1MiA5MC41IDE1MiAxODEuMDN6TTIxNiA0MzcuMDNjLTMzLjg2LTUuOTctNjQuNDktMjEuMi04OS4yOS00My4wMkwyMTYgMzIyLjU3djExNC40NnptNjQtMTE0LjQ2TDM2OS4yOSAzOTRjLTI0LjggMjEuODItNTUuNDMgMzcuMDUtODkuMjkgNDMuMDJWMzIyLjU3em0tNjQtMjQ3LjZ2MTY1LjY2TDg2LjU3IDM0NC4xN0M3Mi4yIDMxNy45NyA2NCAyODcuOTMgNjQgMjU2YzAtOTAuNTMgNjUuNzctMTY1LjgyIDE1Mi0xODEuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlbkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTcuOTQgNzQuMTdsLTYwLjExLTYwLjExYy0xOC43NS0xOC43NS00OS4xNi0xOC43NS02Ny45MSAwbC01Ni41NSA1Ni41NSAxMjguMDIgMTI4LjAyIDU2LjU1LTU2LjU1YzE4Ljc1LTE4Ljc1IDE4Ljc1LTQ5LjE1IDAtNjcuOTF6bS0yNDYuOC0yMC41M2MtMTUuNjItMTUuNjItNDAuOTQtMTUuNjItNTYuNTYgMEw3NS44IDE3Mi40M2MtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42MmwyMi42MyAyMi42M2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDEwMS44Mi0xMDEuODIgMjIuNjMgMjIuNjJMOTMuOTUgMjkwLjAzQTMyNy4wMzggMzI3LjAzOCAwIDAgMCAuMTcgNDg1LjExbC0uMDMuMjNjLTEuNyAxNS4yOCAxMS4yMSAyOC4yIDI2LjQ5IDI2LjUxYTMyNy4wMiAzMjcuMDIgMCAwIDAgMTk1LjM0LTkzLjhsMTk2Ljc5LTE5Ni43OS04Mi43Ny04Mi43Ny04NC44NS04NC44NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuRmFuY3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzkuMTggMjgyLjk0YTMyLjAwNSAzMi4wMDUgMCAwIDAtMjAuMjQgMjAuMjRMMCA0ODBsNC42OSA0LjY5IDkyLjg5LTkyLjg5Yy0uNjYtMi41Ni0xLjU3LTUuMDMtMS41Ny03LjggMC0xNy42NyAxNC4zMy0zMiAzMi0zMnMzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMmMtMi43NyAwLTUuMjQtLjkxLTcuOC0xLjU3bC05Mi44OSA5Mi44OUwzMiA1MTJsMTc2LjgyLTU4Ljk0YTMxLjk4MyAzMS45ODMgMCAwIDAgMjAuMjQtMjAuMjRsMzMuMDctODQuMDctOTguODgtOTguODgtODQuMDcgMzMuMDd6TTM2OS4yNSAyOC4zMkwxODYuMTQgMjI3LjgxbDk3Ljg1IDk3Ljg1IDE5OS40OS0xODMuMTFDNTY4LjQgNjcuNDggNDQzLjczLTU1Ljk0IDM2OS4yNSAyOC4zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuTmliIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzNi42IDEzOC43OWE2NC4wMDMgNjQuMDAzIDAgMCAwLTQzLjMxIDQxLjM1TDAgNDYwbDE0LjY5IDE0LjY5TDE2NC44IDMyNC41OGMtMi45OS02LjI2LTQuOC0xMy4xOC00LjgtMjAuNTggMC0yNi41MSAyMS40OS00OCA0OC00OHM0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OGMtNy40IDAtMTQuMzItMS44MS0yMC41OC00LjhMMzcuMzEgNDk3LjMxIDUyIDUxMmwyNzkuODYtOTMuMjlhNjQuMDAzIDY0LjAwMyAwIDAgMCA0MS4zNS00My4zMUw0MTYgMjI0IDI4OCA5NmwtMTUxLjQgNDIuNzl6bTM2MS4zNC02NC42MmwtNjAuMTEtNjAuMTFjLTE4Ljc1LTE4Ljc1LTQ5LjE2LTE4Ljc1LTY3LjkxIDBsLTU2LjU1IDU2LjU1IDEyOC4wMiAxMjguMDIgNTYuNTUtNTYuNTVjMTguNzUtMTguNzUgMTguNzUtNDkuMTUgMC02Ny45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCA0ODBINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDh6TTIzOC4xIDE3Ny45TDEwMi40IDMxMy42bC02LjMgNTcuMWMtLjggNy42IDUuNiAxNC4xIDEzLjMgMTMuM2w1Ny4xLTYuM0wzMDIuMiAyNDJjMi4zLTIuMyAyLjMtNi4xIDAtOC41TDI0Ni43IDE3OGMtMi41LTIuNC02LjMtMi40LTguNi0uMXpNMzQ1IDE2NS4xTDMxNC45IDEzNWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTIzLjEgMjMuMWMtMi4zIDIuMy0yLjMgNi4xIDAgOC41bDU1LjUgNTUuNWMyLjMgMi4zIDYuMSAyLjMgOC41IDBMMzQ1IDE5OWM5LjMtOS4zIDkuMy0yNC41IDAtMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5MC43NCA5My4yNGwxMjguMDIgMTI4LjAyLTI3Ny45OSAyNzcuOTktMTE0LjE0IDEyLjZDMTEuMzUgNTEzLjU0LTEuNTYgNTAwLjYyLjE0IDQ4NS4zNGwxMi43LTExNC4yMiAyNzcuOS0yNzcuODh6bTIwNy4yLTE5LjA2bC02MC4xMS02MC4xMWMtMTguNzUtMTguNzUtNDkuMTYtMTguNzUtNjcuOTEgMGwtNTYuNTUgNTYuNTUgMTI4LjAyIDEyOC4wMiA1Ni41NS01Ni41NWMxOC43NS0xOC43NiAxOC43NS00OS4xNiAwLTY3LjkxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW5jaWxBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk3LjkgMTQyLjFsLTQ2LjEgNDYuMWMtNC43IDQuNy0xMi4zIDQuNy0xNyAwbC0xMTEtMTExYy00LjctNC43LTQuNy0xMi4zIDAtMTdsNDYuMS00Ni4xYzE4LjctMTguNyA0OS4xLTE4LjcgNjcuOSAwbDYwLjEgNjAuMWMxOC44IDE4LjcgMTguOCA0OS4xIDAgNjcuOXpNMjg0LjIgOTkuOEwyMS42IDM2Mi40LjQgNDgzLjljLTIuOSAxNi40IDExLjQgMzAuNiAyNy44IDI3LjhsMTIxLjUtMjEuMyAyNjIuNi0yNjIuNmM0LjctNC43IDQuNy0xMi4zIDAtMTdsLTExMS0xMTFjLTQuOC00LjctMTIuNC00LjctMTcuMSAwek0xMjQuMSAzMzkuOWMtNS41LTUuNS01LjUtMTQuMyAwLTE5LjhsMTU0LTE1NGM1LjUtNS41IDE0LjMtNS41IDE5LjggMHM1LjUgMTQuMyAwIDE5LjhsLTE1NCAxNTRjLTUuNSA1LjUtMTQuMyA1LjUtMTkuOCAwek04OCA0MjRoNDh2MzYuM2wtNjQuNSAxMS4zLTMxLjEtMzEuMUw1MS43IDM3Nkg4OHY0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuY2lsUnVsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA5LjQ2IDI0NC4wNGwxMzQuNTgtMTM0LjU2LTQ0LjEyLTQ0LjEyLTYxLjY4IDYxLjY4YTcuOTE5IDcuOTE5IDAgMCAxLTExLjIxIDBsLTExLjIxLTExLjIxYy0zLjEtMy4xLTMuMS04LjEyIDAtMTEuMjFsNjEuNjgtNjEuNjgtMzMuNjQtMzMuNjVDMTMxLjQ3LTMuMSAxMTEuMzktMy4xIDk5IDkuMjlMOS4yOSA5OWMtMTIuMzggMTIuMzktMTIuMzkgMzIuNDcgMCA0NC44NmwxMDAuMTcgMTAwLjE4em0zODguNDctMTE2LjhjMTguNzYtMTguNzYgMTguNzUtNDkuMTcgMC02Ny45M2wtNDUuMjUtNDUuMjVjLTE4Ljc2LTE4Ljc2LTQ5LjE4LTE4Ljc2LTY3Ljk1IDBsLTQ2LjAyIDQ2LjAxIDExMy4yIDExMy4yIDQ2LjAyLTQ2LjAzek0zMTYuMDggODIuNzFsLTI5NyAyOTYuOTZMLjMyIDQ4Ny4xMWMtMi41MyAxNC40OSAxMC4wOSAyNy4xMSAyNC41OSAyNC41NmwxMDcuNDUtMTguODRMNDI5LjI4IDE5NS45IDMxNi4wOCA4Mi43MXptMTg2LjYzIDI4NS40M2wtMzMuNjQtMzMuNjQtNjEuNjggNjEuNjhjLTMuMSAzLjEtOC4xMiAzLjEtMTEuMjEgMGwtMTEuMjEtMTEuMjFjLTMuMDktMy4xLTMuMDktOC4xMiAwLTExLjIxbDYxLjY4LTYxLjY4LTQ0LjE0LTQ0LjE0TDI2Ny45MyA0MDIuNWwxMDAuMjEgMTAwLjJjMTIuMzkgMTIuMzkgMzIuNDcgMTIuMzkgNDQuODYgMGw4OS43MS04OS43YzEyLjM5LTEyLjM5IDEyLjM5LTMyLjQ3IDAtNDQuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlb3BsZUFycm93cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiwxMjhBNjQsNjQsMCwxLDAsMzIsNjQsNjQsNjQsMCwwLDAsOTYsMTI4Wm0wLDE3Ni4wOGE0NC4xMSw0NC4xMSwwLDAsMSwxMy42NC0zMkwxODEuNzcsMjA0YzEuNjUtMS41NSwzLjc3LTIuMzEsNS42MS0zLjU3QTYzLjkxLDYzLjkxLDAsMCwwLDEyOCwxNjBINjRBNjQsNjQsMCwwLDAsMCwyMjR2OTZhMzIsMzIsMCwwLDAsMzIsMzJWNDgwYTMyLDMyLDAsMCwwLDMyLDMyaDY0YTMyLDMyLDAsMCwwLDMyLTMyVjM4My42MWwtNTAuMzYtNDcuNTNBNDQuMDgsNDQuMDgsMCwwLDEsOTYsMzA0LjA4Wk00ODAsMTI4YTY0LDY0LDAsMSwwLTY0LTY0QTY0LDY0LDAsMCwwLDQ4MCwxMjhabTMyLDMySDQ0OGE2My45MSw2My45MSwwLDAsMC01OS4zOCw0MC40MmMxLjg0LDEuMjcsNCwyLDUuNjIsMy41OWw3Mi4xMiw2OC4wNmE0NC4zNyw0NC4zNywwLDAsMSwwLDY0TDQxNiwzODMuNjJWNDgwYTMyLDMyLDAsMCwwLDMyLDMyaDY0YTMyLDMyLDAsMCwwLDMyLTMyVjM1MmEzMiwzMiwwLDAsMCwzMi0zMlYyMjRBNjQsNjQsMCwwLDAsNTEyLDE2MFpNNDQ0LjQsMjk1LjM0bC03Mi4xMi02OC4wNkExMiwxMiwwLDAsMCwzNTIsMjM2djM2SDIyNFYyMzZhMTIsMTIsMCwwLDAtMjAuMjgtOC43M0wxMzEuNiwyOTUuMzRhMTIuNCwxMi40LDAsMCwwLDAsMTcuNDdsNzIuMTIsNjguMDdBMTIsMTIsMCwwLDAsMjI0LDM3Mi4xNFYzMzZIMzUydjM2LjE0YTEyLDEyLDAsMCwwLDIwLjI4LDguNzRsNzIuMTItNjguMDdBMTIuNCwxMi40LDAsMCwwLDQ0NC40LDI5NS4zNFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVvcGxlQ2FycnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzE1NC41IDAgMTI4IDAgODAgMjEuNSA4MCA0OHMyMS41IDQ4IDQ4IDQ4em0zODQgMGMyNi41IDAgNDgtMjEuNSA0OC00OFM1MzguNSAwIDUxMiAwcy00OCAyMS41LTQ4IDQ4IDIxLjUgNDggNDggNDh6bTEyNS43IDM3Mi4xbC00NC0xMTAtNDEuMSA0Ni40LTIgMTguMiAyNy43IDY5LjJjNSAxMi41IDE3IDIwLjEgMjkuNyAyMC4xIDQgMCA4LS43IDExLjktMi4zIDE2LjQtNi42IDI0LjQtMjUuMiAxNy44LTQxLjZ6bS0zNC4yLTIwOS44TDU4NSAxNzguMWMtNC42LTIwLTE4LjYtMzYuOC0zNy41LTQ0LjktMTguNS04LTM5LTYuNy01Ni4xIDMuMy0yMi43IDEzLjQtMzkuNyAzNC41LTQ4LjEgNTkuNEw0MzIgMjI5LjggNDE2IDI0MHYtOTZjMC04LjgtNy4yLTE2LTE2LTE2SDI0MGMtOC44IDAtMTYgNy4yLTE2IDE2djk2bC0xNi4xLTEwLjItMTEuMy0zMy45Yy04LjMtMjUtMjUuNC00Ni00OC4xLTU5LjQtMTcuMi0xMC0zNy42LTExLjMtNTYuMS0zLjMtMTguOSA4LjEtMzIuOSAyNC45LTM3LjUgNDQuOWwtMTguNCA4MC4yYy00LjYgMjAgLjcgNDEuMiAxNC40IDU2LjdsNjcuMiA3NS45IDEwLjEgOTIuNkMxMzAgNDk5LjggMTQzLjggNTEyIDE2MCA1MTJjMS4yIDAgMi4zLS4xIDMuNS0uMiAxNy42LTEuOSAzMC4yLTE3LjcgMjguMy0zNS4zbC0xMC4xLTkyLjhjLTEuNS0xMy02LjktMjUuMS0xNS42LTM1bC00My4zLTQ5IDE3LjYtNzAuMyA2LjggMjAuNGM0LjEgMTIuNSAxMS45IDIzLjQgMjQuNSAzMi42bDUxLjEgMzIuNWM0LjYgMi45IDEyLjEgNC42IDE3LjIgNWgxNjBjNS4xLS40IDEyLjYtMi4xIDE3LjItNWw1MS4xLTMyLjVjMTIuNi05LjIgMjAuNC0yMCAyNC41LTMyLjZsNi44LTIwLjQgMTcuNiA3MC4zLTQzLjMgNDljLTguNyA5LjktMTQuMSAyMi0xNS42IDM1bC0xMC4xIDkyLjhjLTEuOSAxNy42IDEwLjggMzMuNCAyOC4zIDM1LjMgMS4yLjEgMi4zLjIgMy41LjIgMTYuMSAwIDMwLTEyLjEgMzEuOC0yOC41bDEwLjEtOTIuNiA2Ny4yLTc1LjljMTMuNi0xNS41IDE5LTM2LjcgMTQuNC01Ni43ek00Ni4zIDM1OC4xbC00NCAxMTBjLTYuNiAxNi40IDEuNCAzNSAxNy44IDQxLjYgMTYuOCA2LjYgMzUuMS0xLjcgNDEuNi0xNy44bDI3LjctNjkuMi0yLTE4LjItNDEuMS00Ni40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXBwZXJIb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMwLjY3IDI2My4xMlYxNzMuNGwtNTIuNzUtMjQuMjJDMjE5LjQ0IDIxOC43NiAxOTcuNTggNDAwIDU2IDQwMGE1NiA1NiAwIDAgMCAwIDExMmMyMTIuNjQgMCAzNzAuNjUtMTIyLjg3IDQxOS4xOC0yMTAuMzRsLTM3LjA1LTM4LjU0em0xMzEuMDktMTI4LjM3QzQ5My45MiA3NC45MSA0NzcuMTggMjYuNDggNDU4LjYyIDNhOCA4IDAgMCAwLTExLjkzLS41OWwtMjIuOSAyM2E4LjA2IDguMDYgMCAwIDAtLjg5IDEwLjIzYzYuODYgMTAuMzYgMTcuMDUgMzUuMS0xLjQgNzIuMzJBMTQyLjg1IDE0Mi44NSAwIDAgMCAzNjQuMzQgOTZjLTI4IDAtNTQgOC41NC03Ni4zNCAyMi41OWw3NC42NyAzNC4yOXY3OC4yNGg4OS4wOUw1MDYuNDQgMjg4YzMuMjYtMTIuNjIgNS41Ni0yNS42MyA1LjU2LTM5LjMxYTE1NCAxNTQgMCAwIDAtNTAuMjQtMTEzLjk0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJjZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAyMjRjNjEuOSAwIDExMi01MC4xIDExMi0xMTJTMTczLjkgMCAxMTIgMCAwIDUwLjEgMCAxMTJzNTAuMSAxMTIgMTEyIDExMnptMC0xNjBjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDgtNDgtMjEuNS00OC00OCAyMS41LTQ4IDQ4LTQ4em0yMjQgMjI0Yy02MS45IDAtMTEyIDUwLjEtMTEyIDExMnM1MC4xIDExMiAxMTIgMTEyIDExMi01MC4xIDExMi0xMTItNTAuMS0xMTItMTEyLTExMnptMCAxNjBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4ek0zOTIuMy4ybDMxLjYtLjFjMTkuNC0uMSAzMC45IDIxLjggMTkuNyAzNy44TDc3LjQgNTAxLjZhMjMuOTUgMjMuOTUgMCAwIDEtMTkuNiAxMC4ybC0zMy40LjFjLTE5LjUgMC0zMC45LTIxLjktMTkuNy0zNy44bDM2OC00NjMuN0MzNzcuMiA0IDM4NC41LjIgMzkyLjMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyY2VudGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDkuMjUgMTczLjI1YzI0Ljk5LTI0Ljk5IDI0Ljk5LTY1LjUyIDAtOTAuNTEtMjQuOTktMjQuOTktNjUuNTItMjQuOTktOTAuNTEgMC0yNC45OSAyNC45OS0yNC45OSA2NS41MiAwIDkwLjUxIDI1IDI1IDY1LjUyIDI1IDkwLjUxIDB6bTI1NiAxNjUuNDljLTI0Ljk5LTI0Ljk5LTY1LjUyLTI0Ljk5LTkwLjUxIDAtMjQuOTkgMjQuOTktMjQuOTkgNjUuNTIgMCA5MC41MSAyNC45OSAyNC45OSA2NS41MiAyNC45OSA5MC41MSAwIDI1LTI0Ljk5IDI1LTY1LjUxIDAtOTAuNTF6bS0xLjk0LTIzMS40M2wtMjIuNjItMjIuNjJjLTEyLjUtMTIuNS0zMi43Ni0xMi41LTQ1LjI1IDBMMjAuNjkgMzU5LjQ0Yy0xMi41IDEyLjUtMTIuNSAzMi43NiAwIDQ1LjI1bDIyLjYyIDIyLjYyYzEyLjUgMTIuNSAzMi43NiAxMi41IDQ1LjI1IDBsMjc0Ljc1LTI3NC43NWMxMi41LTEyLjQ5IDEyLjUtMzIuNzUgMC00NS4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uQm9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDQ5NmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyMGgtNjR2MTc2em0zMi0yNzJoLTUwLjlsLTQ1LjItNDUuM0MxMTUuOCAxNjYuNiA5OS43IDE2MCA4Mi43IDE2MEg2NGMtMTcuMSAwLTMzLjIgNi43LTQ1LjMgMTguOEM2LjcgMTkwLjkgMCAyMDcgMCAyMjQuMUwuMiAzMjAgMCA0ODBjMCAxNy43IDE0LjMgMzIgMzEuOSAzMiAxNy42IDAgMzItMTQuMyAzMi0zMmwuMS0xMDAuN2MuOS41IDEuNiAxLjMgMi41IDEuN2wyOS4xIDQzdjU2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ2LTU2LjVjMC05LjktMi4zLTE5LjgtNi43LTI4LjZsLTQxLjItNjEuM1YyNTNsMjAuOSAyMC45YzkuMSA5LjEgMjEuMSAxNC4xIDMzLjkgMTQuMUgyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJ6TTY0IDEyOGMyNi41IDAgNDgtMjEuNSA0OC00OFM5MC41IDMyIDY0IDMyIDE2IDUzLjUgMTYgODBzMjEuNSA0OCA0OCA0OHptMjI0LTk2bDMxLjUgMjIzLjEtMzAuOSAxNTQuNmMtNC4zIDIxLjYgMTMgMzguMyAzMS40IDM4LjMgMTUuMiAwIDI4LTkuMSAzMi4zLTMwLjQuOSAxNi45IDE0LjYgMzAuNCAzMS43IDMwLjQgMTcuNyAwIDMyLTE0LjMgMzItMzIgMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYwSDI4OHYzMnptLTk2IDB2MTYwaDY0VjBoLTMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNNTQ0IDBoLTMydjQ5NmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9uZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTcuMzkgMzYxLjhsLTExMi00OGEyNCAyNCAwIDAgMC0yOCA2LjlsLTQ5LjYgNjAuNkEzNzAuNjYgMzcwLjY2IDAgMCAxIDEzMC42IDIwNC4xMWw2MC42LTQ5LjZhMjMuOTQgMjMuOTQgMCAwIDAgNi45LTI4bC00OC0xMTJBMjQuMTYgMjQuMTYgMCAwIDAgMTIyLjYuNjFsLTEwNCAyNEEyNCAyNCAwIDAgMCAwIDQ4YzAgMjU2LjUgMjA3LjkgNDY0IDQ2NCA0NjRhMjQgMjQgMCAwIDAgMjMuNC0xOC42bDI0LTEwNGEyNC4yOSAyNC4yOSAwIDAgMC0xNC4wMS0yNy42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9uZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2OC4yIDM4MS40bC00OS42LTYwLjZjLTYuOC04LjMtMTguMi0xMS4xLTI4LTYuOWwtMTEyIDQ4Yy0xMC43IDQuNi0xNi41IDE2LjEtMTMuOSAyNy41bDI0IDEwNGMyLjUgMTAuOCAxMi4xIDE4LjYgMjMuNCAxOC42IDEwMC43IDAgMTkzLjctMzIuNCAyNjkuNy04Ni45bC04MC02MS44Yy0xMC45IDYuNS0yMi4xIDEyLjctMzMuNiAxOC4xem0zNjUuNiA3Ni43TDQ3NS4xIDMzNS41QzUzNy45IDI1Ni40IDU3NiAxNTYuOSA1NzYgNDhjMC0xMS4yLTcuNy0yMC45LTE4LjYtMjMuNGwtMTA0LTI0Yy0xMS4zLTIuNi0yMi45IDMuMy0yNy41IDEzLjlsLTQ4IDExMmMtNC4yIDkuOC0xLjQgMjEuMyA2LjkgMjhsNjAuNiA0OS42Yy0xMi4yIDI2LjEtMjcuOSA1MC4zLTQ2IDcyLjhMNDUuNSAzLjRDMzguNS0yIDI4LjUtLjggMjMgNi4yTDMuNCAzMS40Yy01LjQgNy00LjIgMTcgMi44IDIyLjRsNTg4LjQgNDU0LjdjNyA1LjQgMTcgNC4yIDIyLjUtMi44bDE5LjYtMjUuM2M1LjQtNi44IDQuMS0xNi45LTIuOS0yMi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9uZVNxdWFyZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhBNDggNDggMCAwIDAgMCA4MHYzNTJhNDggNDggMCAwIDAgNDggNDhoMzUyYTQ4IDQ4IDAgMCAwIDQ4LTQ4VjgwYTQ4IDQ4IDAgMCAwLTQ4LTQ4em0tMTYuMzkgMzA3LjM3bC0xNSA2NUExNSAxNSAwIDAgMSAzNTQgNDE2QzE5NCA0MTYgNjQgMjg2LjI5IDY0IDEyNmExNS43IDE1LjcgMCAwIDEgMTEuNjMtMTQuNjFsNjUtMTVBMTguMjMgMTguMjMgMCAwIDEgMTQ0IDk2YTE2LjI3IDE2LjI3IDAgMCAxIDEzLjc5IDkuMDlsMzAgNzBBMTcuOSAxNy45IDAgMCAxIDE4OSAxODFhMTcgMTcgMCAwIDEtNS41IDExLjYxbC0zNy44OSAzMWEyMzEuOTEgMjMxLjkxIDAgMCAwIDExMC43OCAxMTAuNzhsMzEtMzcuODlBMTcgMTcgMCAwIDEgMjk5IDI5MWExNy44NSAxNy44NSAwIDAgMSA1LjkxIDEuMjFsNzAgMzBBMTYuMjUgMTYuMjUgMCAwIDEgMzg0IDMzNmExNy40MSAxNy40MSAwIDAgMS0uMzkgMy4zN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvbmVTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjQ5IDMyIDAgNTMuNDkgMCA4MHYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY4MGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4ek05NCA0MTZjLTcuMDMzIDAtMTMuMDU3LTQuODczLTE0LjYxNi0xMS42MjdsLTE0Ljk5OC02NWExNSAxNSAwIDAgMSA4LjcwNy0xNy4xNmw2OS45OTgtMjkuOTk5YTE1IDE1IDAgMCAxIDE3LjUxOCA0LjI4OWwzMC45OTcgMzcuODg1YzQ4Ljk0NC0yMi45NjMgODguMjk3LTYyLjg1OCAxMTAuNzgxLTExMC43OGwtMzcuODg2LTMwLjk5N2ExNS4wMDEgMTUuMDAxIDAgMCAxLTQuMjg5LTE3LjUxOGwzMC02OS45OThhMTUgMTUgMCAwIDEgMTcuMTYtOC43MDdsNjUgMTQuOTk4QTE0Ljk5NyAxNC45OTcgMCAwIDEgMzg0IDEyNmMwIDE2MC4yOTItMTI5Ljk0NSAyOTAtMjkwIDI5MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvbmVWb2x1bWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTcuMzMzIDUwNi45NjZjLTEyOS44NzQtMTI5Ljg3NC0xMjkuNjgxLTM0MC4yNTIgMC00NjkuOTMzIDUuNjk4LTUuNjk4IDE0LjUyNy02LjYzMiAyMS4yNjMtMi40MjJsNjQuODE3IDQwLjUxM2ExNy4xODcgMTcuMTg3IDAgMCAxIDYuODQ5IDIwLjk1OGwtMzIuNDA4IDgxLjAyMWExNy4xODggMTcuMTg4IDAgMCAxLTE3LjY2OSAxMC43MTlsLTU1LjgxLTUuNThjLTIxLjA1MSA1OC4yNjEtMjAuNjEyIDEyMi40NzEgMCAxNzkuNTE1bDU1LjgxMS01LjU4MWExNy4xODggMTcuMTg4IDAgMCAxIDE3LjY2OSAxMC43MTlsMzIuNDA4IDgxLjAyMmExNy4xODggMTcuMTg4IDAgMCAxLTYuODQ5IDIwLjk1OGwtNjQuODE3IDQwLjUxM2ExNy4xOSAxNy4xOSAwIDAgMS0yMS4yNjQtMi40MjJ6TTI0Ny4xMjYgOTUuNDczYzExLjgzMiAyMC4wNDcgMTEuODMyIDQ1LjAwOCAwIDY1LjA1NS0zLjk1IDYuNjkzLTEzLjEwOCA3Ljk1OS0xOC43MTggMi41ODFsLTUuOTc1LTUuNzI2Yy0zLjkxMS0zLjc0OC00Ljc5My05LjYyMi0yLjI2MS0xNC40MWEzMi4wNjMgMzIuMDYzIDAgMCAwIDAtMjkuOTQ1Yy0yLjUzMy00Ljc4OC0xLjY1LTEwLjY2MiAyLjI2MS0xNC40MWw1Ljk3NS01LjcyNmM1LjYxLTUuMzc4IDE0Ljc2OC00LjExMiAxOC43MTggMi41ODF6bTkxLjc4Ny05MS4xODdjNjAuMTQgNzEuNjA0IDYwLjA5MiAxNzUuODgyIDAgMjQ3LjQyOC00LjQ3NCA1LjMyNy0xMi41MyA1Ljc0Ni0xNy41NTIuOTMzbC01Ljc5OC01LjU1N2MtNC41Ni00LjM3MS00Ljk3Ny0xMS41MjktLjkzLTE2LjM3OSA0OS42ODctNTkuNTM4IDQ5LjY0Ni0xNDUuOTMzIDAtMjA1LjQyMi00LjA0Ny00Ljg1LTMuNjMxLTEyLjAwOC45My0xNi4zNzlsNS43OTgtNS41NTdjNS4wMjItNC44MTMgMTMuMDc4LTQuMzk0IDE3LjU1Mi45MzN6bS00NS45NzIgNDQuOTQxYzM2LjA1IDQ2LjMyMiAzNi4xMDggMTExLjE0OSAwIDE1Ny41NDYtNC4zOSA1LjY0MS0xMi42OTcgNi4yNTEtMTcuODU2IDEuMzA0bC01LjgxOC01LjU3OWMtNC40LTQuMjE5LTQuOTk4LTExLjA5NS0xLjI4NS0xNS45MzEgMjYuNTM2LTM0LjU2NCAyNi41MzQtODIuNTcyIDAtMTE3LjEzNC0zLjcxMy00LjgzNi0zLjExNS0xMS43MTEgMS4yODUtMTUuOTMxbDUuODE4LTUuNTc5YzUuMTU5LTQuOTQ3IDEzLjQ2Ni00LjMzNyAxNy44NTYgMS4zMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5My40IDI0LjZsLTEwNC0yNGMtMTEuMy0yLjYtMjIuOSAzLjMtMjcuNSAxMy45bC00OCAxMTJjLTQuMiA5LjgtMS40IDIxLjMgNi45IDI4bDYwLjYgNDkuNmMtMzYgNzYuNy05OC45IDE0MC41LTE3Ny4yIDE3Ny4ybC00OS42LTYwLjZjLTYuOC04LjMtMTguMi0xMS4xLTI4LTYuOWwtMTEyIDQ4QzMuOSAzNjYuNS0yIDM3OC4xLjYgMzg5LjRsMjQgMTA0QzI3LjEgNTA0LjIgMzYuNyA1MTIgNDggNTEyYzI1Ni4xIDAgNDY0LTIwNy41IDQ2NC00NjQgMC0xMS4yLTcuNy0yMC45LTE4LjYtMjMuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvdG9WaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDggMEgxNjBhMzIgMzIgMCAwIDAtMzIgMzJ2OTZoMTYwVjY0aDE5MnYzMjBoMTI4YTMyIDMyIDAgMCAwIDMyLTMyVjMyYTMyIDMyIDAgMCAwLTMyLTMyek0yMzIgMTAzYTkgOSAwIDAgMS05IDloLTMwYTkgOSAwIDAgMS05LTlWNzNhOSA5IDAgMCAxIDktOWgzMGE5IDkgMCAwIDEgOSA5em0zNTIgMjA4YTkgOSAwIDAgMS05IDloLTMwYTkgOSAwIDAgMS05LTl2LTMwYTkgOSAwIDAgMSA5LTloMzBhOSA5IDAgMCAxIDkgOXptMC0xMDRhOSA5IDAgMCAxLTkgOWgtMzBhOSA5IDAgMCAxLTktOXYtMzBhOSA5IDAgMCAxIDktOWgzMGE5IDkgMCAwIDEgOSA5em0wLTEwNGE5IDkgMCAwIDEtOSA5aC0zMGE5IDkgMCAwIDEtOS05VjczYTkgOSAwIDAgMSA5LTloMzBhOSA5IDAgMCAxIDkgOXptLTE2OCA1N0gzMmEzMiAzMiAwIDAgMC0zMiAzMnYyODhhMzIgMzIgMCAwIDAgMzIgMzJoMzg0YTMyIDMyIDAgMCAwIDMyLTMyVjE5MmEzMiAzMiAwIDAgMC0zMi0zMnpNOTYgMjI0YTMyIDMyIDAgMSAxLTMyIDMyIDMyIDMyIDAgMCAxIDMyLTMyem0yODggMjI0SDY0di0zMmw2NC02NCAzMiAzMiAxMjgtMTI4IDk2IDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaWdneUJhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTYwIDIyNGgtMjkuNWMtOC44LTIwLTIxLjYtMzcuNy0zNy40LTUyLjVMNTEyIDk2aC0zMmMtMjkuNCAwLTU1LjQgMTMuNS03MyAzNC4zLTcuNi0xLjEtMTUuMS0yLjMtMjMtMi4zSDI1NmMtNzcuNCAwLTE0MS45IDU1LTE1Ni44IDEyOEg1NmMtMTQuOCAwLTI2LjUtMTMuNS0yMy41LTI4LjhDMzQuNyAyMTUuOCA0NS40IDIwOCA1NyAyMDhoMWMzLjMgMCA2LTIuNyA2LTZ2LTIwYzAtMy4zLTIuNy02LTYtNi0yOC41IDAtNTMuOSAyMC40LTU3LjUgNDguNkMtMy45IDI1OC44IDIyLjcgMjg4IDU2IDI4OGg0MGMwIDUyLjIgMjUuNCA5OC4xIDY0IDEyNy4zVjQ5NmMwIDguOCA3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2di00OGgxMjh2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNnYtODAuN2MxMS44LTguOSAyMi4zLTE5LjQgMzEuMy0zMS4zSDU2MGM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNnptLTEyOCA2NGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2ek0yNTYgOTZoMTI4YzUuNCAwIDEwLjcuNCAxNS45LjggMC0uMy4xLS41LjEtLjggMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAyLjEuNSA0LjEuNiA2LjIgMTUuMi0zLjkgMzEtNi4yIDQ3LjQtNi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaWxscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgMzJDNTAuMSAzMiAwIDgyLjEgMCAxNDR2MjI0YzAgNjEuOSA1MC4xIDExMiAxMTIgMTEyczExMi01MC4xIDExMi0xMTJWMTQ0YzAtNjEuOS01MC4xLTExMi0xMTItMTEyem00OCAyMjRINjRWMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2MTEyem0xMzkuNy0yOS43Yy0zLjUtMy41LTkuNC0zLjEtMTIuMy44LTQ1LjMgNjIuNS00MC40IDE1MC4xIDE1LjkgMjA2LjQgNTYuMyA1Ni4zIDE0My45IDYxLjIgMjA2LjQgMTUuOSA0LTIuOSA0LjMtOC44LjgtMTIuM0wyOTkuNyAyMjYuM3ptMjI5LjgtMTljLTU2LjMtNTYuMy0xNDMuOS02MS4yLTIwNi40LTE1LjktNCAyLjktNC4zIDguOC0uOCAxMi4zbDIxMC44IDIxMC44YzMuNSAzLjUgOS40IDMuMSAxMi4zLS44IDQ1LjMtNjIuNiA0MC41LTE1MC4xLTE1LjktMjA2LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpenphU2xpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU4Ljg3LjE1Yy0xNi4xNi0xLjUyLTMxLjIgOC40Mi0zNS4zMyAyNC4xMmwtMTQuODEgNTYuMjdjMTg3LjYyIDUuNDkgMzE0LjU0IDEzMC42MSAzMjIuNDggMzE3bDU2Ljk0LTE1Ljc4YzE1LjcyLTQuMzYgMjUuNDktMTkuNjggMjMuNjItMzUuOUM0OTAuODkgMTY1LjA4IDM0MC43OCAxNy4zMiAxNTguODcuMTV6bS01OC40NyAxMTJMLjU1IDQ5MS42NGExNi4yMSAxNi4yMSAwIDAgMCAyMCAxOS43NWwzNzktMTA1LjFjLTQuMjctMTc0Ljg5LTEyMy4wOC0yOTIuMTQtMjk5LjE1LTI5NC4xek0xMjggNDE2YTMyIDMyIDAgMSAxIDMyLTMyIDMyIDMyIDAgMCAxLTMyIDMyem00OC0xNTJhMzIgMzIgMCAxIDEgMzItMzIgMzIgMzIgMCAwIDEtMzIgMzJ6bTEwNCAxMDRhMzIgMzIgMCAxIDEgMzItMzIgMzIgMzIgMCAwIDEtMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYWNlT2ZXb3JzaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyMC42MSAzNjYuNTVMNTEyIDMyMHYxOTJoMTEyYzguODQgMCAxNi03LjE2IDE2LTE2VjM5NS45NmEzMiAzMiAwIDAgMC0xOS4zOS0yOS40MXpNMCAzOTUuOTZWNDk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDExMlYzMjBMMTkuMzkgMzY2LjU1QTMyIDMyIDAgMCAwIDAgMzk1Ljk2em00NjQuNDYtMTQ5LjI4TDQxNiAyMTcuNlYxMDIuNjNjMC04LjQ5LTMuMzctMTYuNjItOS4zOC0yMi42M0wzMzEuMzEgNC42OWMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjIgMEwyMzMuMzggODBjLTYgNi05LjM4IDE0LjE0LTkuMzggMjIuNjNWMjE3LjZsLTQ4LjQ2IDI5LjA4QTMxLjk5NyAzMS45OTcgMCAwIDAgMTYwIDI3NC4xMlY1MTJoOTZ2LTk2YzAtMzUuMzUgMjguNjYtNjQgNjQtNjRzNjQgMjguNjUgNjQgNjR2OTZoOTZWMjc0LjEyYzAtMTEuMjQtNS45LTIxLjY2LTE1LjU0LTI3LjQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGFuZUFycml2YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDQ0OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjA4YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNNDQuODEgMjA1LjY2bDg4Ljc0IDgwYTYyLjYwNyA2Mi42MDcgMCAwIDAgMjUuNDcgMTMuOTNsMjg3LjYgNzguMzVjMjYuNDggNy4yMSA1NC41NiA4LjcyIDgxIDEuMzYgMjkuNjctOC4yNyA0My40NC0yMS4yMSA0Ny4yNS0zNS43MSAzLjgzLTE0LjUtMS43My0zMi43MS0yMy4zNy01NC45Ni0xOS4yOC0xOS44Mi00NC4zNS0zMi43OS03MC44My00MGwtOTcuNTEtMjYuNTZMMjgyLjggMzAuMjJjLTEuNTEtNS44MS01Ljk1LTEwLjM1LTExLjY2LTExLjkxTDIwNi4wNS41OGMtMTAuNTYtMi44OC0yMC45IDUuMzItMjAuNzEgMTYuNDRsNDcuOTIgMTY0LjIxLTEwMi4yLTI3Ljg0LTI3LjU5LTY3Ljg4Yy0xLjkzLTQuODktNi4wMS04LjU3LTExLjAyLTkuOTNMNTIuNzIgNjQuNzVjLTEwLjM0LTIuODItMjAuNTMgNS0yMC43MiAxNS44OGwuMjMgMTAxLjc4Yy4xOSA4LjkxIDYuMDMgMTcuMzQgMTIuNTggMjMuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lRGVwYXJ0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCA0NDhIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDYwOGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTgwLjU1IDM0MS4yN2M2LjI4IDYuODQgMTUuMSAxMC43MiAyNC4zMyAxMC43MWwxMzAuNTQtLjE4YTY1LjYyIDY1LjYyIDAgMCAwIDI5LjY0LTcuMTJsMjkwLjk2LTE0Ny42NWMyNi43NC0xMy41NyA1MC43MS0zMi45NCA2Ny4wMi01OC4zMSAxOC4zMS0yOC40OCAyMC4zLTQ5LjA5IDEzLjA3LTYzLjY1LTcuMjEtMTQuNTctMjQuNzQtMjUuMjctNTguMjUtMjcuNDUtMjkuODUtMS45NC01OS41NCA1LjkyLTg2LjI4IDE5LjQ4bC05OC41MSA0OS45OS0yMTguNy04Mi4wNmExNy43OTkgMTcuNzk5IDAgMCAwLTE4LTEuMTFMOTAuNjIgNjcuMjljLTEwLjY3IDUuNDEtMTMuMjUgMTkuNjUtNS4xNyAyOC41M2wxNTYuMjIgOTguMS0xMDMuMjEgNTIuMzgtNzIuMzUtMzYuNDdhMTcuODA0IDE3LjgwNCAwIDAgMC0xNi4wNy4wMkw5LjkxIDIzMC4yMmMtMTAuNDQgNS4zLTEzLjE5IDE5LjEyLTUuNTcgMjguMDhsNzYuMjEgODIuOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIuNDgsMTQ3Ljg4LDY0LDI1NiwzMi40OCwzNjQuMTNBMTYsMTYsMCwwLDAsNDgsMzg0SDg4YTE2LDE2LDAsMCwwLDEyLjgtNi40MUwxNDQsMzIwSDI0Ni44NWwtNDksMTcxLjU5QTE2LDE2LDAsMCwwLDIxMy4yLDUxMmg2NS41YTE2LDE2LDAsMCwwLDEzLjg5LTguMDZsNjYuNi0xMTYuNTRMMzQuMzUsMTM2LjM0QTE1LjQ3LDE1LjQ3LDAsMCwwLDMyLjQ4LDE0Ny44OFpNNjMzLjgyLDQ1OC4wOSw0NTUuMTQsMzIwSDUxMmMzNS4zNCwwLDk2LTI4LjY2LDk2LTY0cy02MC42Ni02NC05Ni02NEgzOTcuN0wyOTIuNjEsOC4wNkMyOTAuMDYsMy42MSwyODMuODQsMCwyNzguNzEsMEgyMTMuMmExNiwxNiwwLDAsMC0xNS4zOCwyMC4zOWwzNi45NCwxMjkuMjlMNDUuNDYsMy4zOEExNiwxNiwwLDAsMCwyMyw2LjE5TDMuMzcsMzEuNDVBMTYsMTYsMCwwLDAsNi4xOCw1My45MUw1OTQuNTQsNTA4LjYzQTE2LDE2LDAsMCwwLDYxNyw1MDUuODFsMTkuNjQtMjUuMjZBMTYsMTYsMCwwLDAsNjMzLjgyLDQ1OC4wOVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxhbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDE5MkgzNjUuNzFMMjYwLjYxIDguMDZBMTYuMDE0IDE2LjAxNCAwIDAgMCAyNDYuNzEgMGgtNjUuNWMtMTAuNjMgMC0xOC4zIDEwLjE3LTE1LjM4IDIwLjM5TDIxNC44NiAxOTJIMTEybC00My4yLTU3LjZjLTMuMDItNC4wMy03Ljc3LTYuNC0xMi44LTYuNEgxNi4wMUM1LjYgMTI4LTIuMDQgMTM3Ljc4LjQ5IDE0Ny44OEwzMiAyNTYgLjQ5IDM2NC4xMkMtMi4wNCAzNzQuMjIgNS42IDM4NCAxNi4wMSAzODRINTZjNS4wNCAwIDkuNzgtMi4zNyAxMi44LTYuNEwxMTIgMzIwaDEwMi44NmwtNDkuMDMgMTcxLjZjLTIuOTIgMTAuMjIgNC43NSAyMC40IDE1LjM4IDIwLjRoNjUuNWM1Ljc0IDAgMTEuMDQtMy4wOCAxMy44OS04LjA2TDM2NS43MSAzMjBINDgwYzM1LjM1IDAgOTYtMjguNjUgOTYtNjRzLTYwLjY1LTY0LTk2LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGF5Q2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTExNS43IDI3MmwtMTc2IDEwMWMtMTUuOCA4LjgtMzUuNy0yLjUtMzUuNy0yMVYxNTJjMC0xOC40IDE5LjgtMjkuOCAzNS43LTIxbDE3NiAxMDdjMTYuNCA5LjIgMTYuNCAzMi45IDAgNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI0LjQgMjE0LjdMNzIuNCA2LjZDNDMuOC0xMC4zIDAgNi4xIDAgNDcuOVY0NjRjMCAzNy41IDQwLjcgNjAuMSA3Mi40IDQxLjNsMzUyLTIwOGMzMS40LTE4LjUgMzEuNS02NC4xIDAtODIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1ZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAsMzJhMzIsMzIsMCwwLDAtNjQsMHY5Nmg2NFptNDgsMTI4SDE2QTE2LDE2LDAsMCwwLDAsMTc2djMyYTE2LDE2LDAsMCwwLDE2LDE2SDMydjMyQTE2MC4wNywxNjAuMDcsMCwwLDAsMTYwLDQxMi44VjUxMmg2NFY0MTIuOEExNjAuMDcsMTYwLjA3LDAsMCwwLDM1MiwyNTZWMjI0aDE2YTE2LDE2LDAsMCwwLDE2LTE2VjE3NkExNiwxNiwwLDAsMCwzNjgsMTYwWk0xMjgsMzJhMzIsMzIsMCwwLDAtNjQsMHY5Nmg2NFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1c0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0xNDQgMjc2YzAgNi42LTUuNCAxMi0xMiAxMmgtOTJ2OTJjMCA2LjYtNS40IDEyLTEyIDEyaC01NmMtNi42IDAtMTItNS40LTEyLTEydi05MmgtOTJjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNTZjMC02LjYgNS40LTEyIDEyLTEyaDkydi05MmMwLTYuNiA1LjQtMTIgMTItMTJoNTZjNi42IDAgMTIgNS40IDEyIDEydjkyaDkyYzYuNiAwIDEyIDUuNCAxMiAxMnY1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1c1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMzIgMjUyYzAgNi42LTUuNCAxMi0xMiAxMmgtOTJ2OTJjMCA2LjYtNS40IDEyLTEyIDEyaC01NmMtNi42IDAtMTItNS40LTEyLTEydi05Mkg5MmMtNi42IDAtMTItNS40LTEyLTEydi01NmMwLTYuNiA1LjQtMTIgMTItMTJoOTJ2LTkyYzAtNi42IDUuNC0xMiAxMi0xMmg1NmM2LjYgMCAxMiA1LjQgMTIgMTJ2OTJoOTJjNi42IDAgMTIgNS40IDEyIDEydjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAyMDhIMjcyVjY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjE0NEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDE0NHYxNDRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjMwNGgxNDRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUG9kY2FzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjcuNDI5IDQ4OC41NjNDMjYyLjI4NiA1MDcuNTczIDI0Mi44NTggNTEyIDIyNCA1MTJjLTE4Ljg1NyAwLTM4LjI4Ni00LjQyNy00My40MjgtMjMuNDM3QzE3Mi45MjcgNDYwLjEzNCAxNjAgMzg4Ljg5OCAxNjAgMzU1Ljc1YzAtMzUuMTU2IDMxLjE0Mi00My43NSA2NC00My43NXM2NCA4LjU5NCA2NCA0My43NWMwIDMyLjk0OS0xMi44NzEgMTA0LjE3OS0yMC41NzEgMTMyLjgxM3pNMTU2Ljg2NyAyODguNTU0Yy0xOC42OTMtMTguMzA4LTI5Ljk1OC00NC4xNzMtMjguNzg0LTcyLjU5OSAyLjA1NC00OS43MjQgNDIuMzk1LTg5Ljk1NiA5Mi4xMjQtOTEuODgxQzI3NC44NjIgMTIxLjk1OCAzMjAgMTY1LjgwNyAzMjAgMjIwYzAgMjYuODI3LTExLjA2NCA1MS4xMTYtMjguODY2IDY4LjU1Mi0yLjY3NSAyLjYyLTIuNDAxIDYuOTg2LjYyOCA5LjE4NyA5LjMxMiA2Ljc2NSAxNi40NiAxNS4zNDMgMjEuMjM0IDI1LjM2MyAxLjc0MSAzLjY1NCA2LjQ5NyA0LjY2IDkuNDQ5IDEuODkxIDI4LjgyNi0yNy4wNDMgNDYuNTUzLTY1Ljc4MyA0NS41MTEtMTA4LjU2NS0xLjg1NS03Ni4yMDYtNjMuNTk1LTEzOC4yMDgtMTM5Ljc5My0xNDAuMzY5QzE0Ni44NjkgNzMuNzUzIDgwIDEzOS4yMTUgODAgMjIwYzAgNDEuMzYxIDE3LjUzMiA3OC43IDQ1LjU1IDEwNC45ODkgMi45NTMgMi43NzEgNy43MTEgMS43NyA5LjQ1My0xLjg4NyA0Ljc3NC0xMC4wMjEgMTEuOTIzLTE4LjU5OCAyMS4yMzUtMjUuMzYzIDMuMDI5LTIuMiAzLjMwNC02LjU2Ni42MjktOS4xODV6TTIyNCAwQzEwMC4yMDQgMCAwIDEwMC4xODUgMCAyMjRjMCA4OS45OTIgNTIuNjAyIDE2NS42NDcgMTI1LjczOSAyMDEuNDA4IDQuMzMzIDIuMTE4IDkuMjY3LTEuNTQ0IDguNTM1LTYuMzEtMi4zODItMTUuNTEyLTQuMzQyLTMwLjk0Ni01LjQwNi00NC4zMzktLjE0Ni0xLjgzNi0xLjE0OS0zLjQ4Ni0yLjY3OC00LjUxMi00Ny40LTMxLjgwNi03OC41NjQtODYuMDE2LTc4LjE4Ny0xNDcuMzQ3LjU5Mi05Ni4yMzcgNzkuMjktMTc0LjY0OCAxNzUuNTI5LTE3NC44OTlDMzIwLjc5MyA0Ny43NDcgNDAwIDEyNi43OTcgNDAwIDIyNGMwIDYxLjkzMi0zMi4xNTggMTE2LjQ5LTgwLjY1IDE0Ny44NjctLjk5OSAxNC4wMzctMy4wNjkgMzAuNTg4LTUuNjI0IDQ3LjIzLS43MzIgNC43NjcgNC4yMDMgOC40MjkgOC41MzUgNi4zMUMzOTUuMjI3IDM4OS43MjcgNDQ4IDMxNC4xODcgNDQ4IDIyNCA0NDggMTAwLjIwNSAzNDcuODE1IDAgMjI0IDB6bTAgMTYwYy0zNS4zNDYgMC02NCAyOC42NTQtNjQgNjRzMjguNjU0IDY0IDY0IDY0IDY0LTI4LjY1NCA2NC02NC0yOC42NTQtNjQtNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvbGxIIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA0MzJWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4ek0xMTIgMTkyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMzJjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMTI4YzguODQgMCAxNiA3LjE2IDE2IDE2djMyYzAgOC44NC03LjE2IDE2LTE2IDE2SDExMnptMCA5NmMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTMyYzAtOC44NCA3LjE2LTE2IDE2LTE2aDIyNGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYzMmMwIDguODQtNy4xNiAxNi0xNiAxNkgxMTJ6bTAgOTZjLTguODQgMC0xNi03LjE2LTE2LTE2di0zMmMwLTguODQgNy4xNi0xNiAxNi0xNmg2NGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYzMmMwIDguODQtNy4xNiAxNi0xNiAxNmgtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTYwIDM2OGMwIDguODQtNy4xNiAxNi0xNiAxNmgtMzJjLTguODQgMC0xNi03LjE2LTE2LTE2VjI0MGMwLTguODQgNy4xNi0xNiAxNi0xNmgzMmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYxMjh6bTk2IDBjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTMyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNlYxNDRjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMzJjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MjI0em05NiAwYzAgOC44NC03LjE2IDE2LTE2IDE2aC0zMmMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTY0YzAtOC44NCA3LjE2LTE2IDE2LTE2aDMyYzguODQgMCAxNiA3LjE2IDE2IDE2djY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQb29TdG9ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDggMzM2aC01Ny43bDE3LjMtNjQuOWMyLTcuNi0zLjctMTUuMS0xMS42LTE1LjFoLTY4Yy02IDAtMTEuMSA0LjUtMTEuOSAxMC40bC0xNiAxMjBjLTEgNy4yIDQuNiAxMy42IDExLjkgMTMuNmg1OS4zbC0yMyA5Ny4yYy0xLjggNy42IDQgMTQuOCAxMS43IDE0LjggNC4yIDAgOC4yLTIuMiAxMC40LTZsODgtMTUyYzQuNi04LTEuMi0xOC0xMC40LTE4em02Ni40LTExMS4zYzUuOS05LjYgOS42LTIwLjYgOS42LTMyLjcgMC0zNS4zLTI4LjctNjQtNjQtNjRoLTUuOWMzLjYtMTAuMSA1LjktMjAuNyA1LjktMzIgMC01My00My05Ni05Ni05Ni01LjIgMC0xMC4yLjctMTUuMSAxLjVDMjE4LjMgMTQuNiAyMjQgMzAuNiAyMjQgNDhjMCA0NC4yLTM1LjggODAtODAgODBoLTE2Yy0zNS4zIDAtNjQgMjguNy02NCA2NCAwIDEyLjEgMy43IDIzLjEgOS42IDMyLjdDMzIuNiAyMjggMCAyNjIuMiAwIDMwNGMwIDQ0IDM2IDgwIDgwIDgwaDQ4LjNjLjEtLjYgMC0xLjIgMC0xLjhsMTYtMTIwYzMtMjEuOCAyMS43LTM4LjIgNDMuNy0zOC4yaDY4YzEzLjggMCAyNi41IDYuMyAzNC45IDE3LjJzMTEuMiAyNC44IDcuNiAzOC4xbC02LjYgMjQuN2gxNmMxNS43IDAgMzAuMyA4LjQgMzguMSAyMiA3LjggMTMuNiA3LjggMzAuNSAwIDQ0bC04LjEgMTRoMzBjNDQgMCA4MC0zNiA4MC04MCAuMS00MS44LTMyLjUtNzYtNzMuNS03OS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQb28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDUxLjQgMzY5LjFDNDY4LjcgMzU2IDQ4MCAzMzUuNCA0ODAgMzEyYzAtMzkuOC0zMi4yLTcyLTcyLTcyaC0xNC4xYzEzLjQtMTEuNyAyMi4xLTI4LjggMjIuMS00OCAwLTM1LjMtMjguNy02NC02NC02NGgtNS45YzMuNi0xMC4xIDUuOS0yMC43IDUuOS0zMiAwLTUzLTQzLTk2LTk2LTk2LTUuMiAwLTEwLjIuNy0xNS4xIDEuNUMyNTAuMyAxNC42IDI1NiAzMC42IDI1NiA0OGMwIDQ0LjItMzUuOCA4MC04MCA4MGgtMTZjLTM1LjMgMC02NCAyOC43LTY0IDY0IDAgMTkuMiA4LjcgMzYuMyAyMi4xIDQ4SDEwNGMtMzkuOCAwLTcyIDMyLjItNzIgNzIgMCAyMy40IDExLjMgNDQgMjguNiA1Ny4xQzI2LjMgMzc0LjYgMCA0MDQuMSAwIDQ0MGMwIDM5LjggMzIuMiA3MiA3MiA3MmgzNjhjMzkuOCAwIDcyLTMyLjIgNzItNzIgMC0zNS45LTI2LjMtNjUuNC02MC42LTcwLjl6TTE5MiAyNTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem0xNTkuNSAxMzlDMzQxIDQyMi45IDI5MyA0NDggMjU2IDQ0OHMtODUtMjUuMS05NS41LTUzYy0yLTUuMyAyLTExIDcuOC0xMWgxNzUuNGM1LjggMCA5LjggNS43IDcuOCAxMXpNMzIwIDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDUxLjM2IDM2OS4xNEM0NjguNjYgMzU1Ljk5IDQ4MCAzMzUuNDEgNDgwIDMxMmMwLTM5Ljc3LTMyLjI0LTcyLTcyLTcyaC0xNC4wN2MxMy40Mi0xMS43MyAyMi4wNy0yOC43OCAyMi4wNy00OCAwLTM1LjM1LTI4LjY1LTY0LTY0LTY0aC01Ljg4YzMuNTctMTAuMDUgNS44OC0yMC43MiA1Ljg4LTMyIDAtNTMuMDItNDIuOTgtOTYtOTYtOTYtNS4xNyAwLTEwLjE1Ljc0LTE1LjExIDEuNTJDMjUwLjMxIDE0LjY0IDI1NiAzMC42MiAyNTYgNDhjMCA0NC4xOC0zNS44MiA4MC04MCA4MGgtMTZjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjQgMCAxOS4yMiA4LjY1IDM2LjI3IDIyLjA3IDQ4SDEwNGMtMzkuNzYgMC03MiAzMi4yMy03MiA3MiAwIDIzLjQxIDExLjM0IDQzLjk5IDI4LjY0IDU3LjE0QzI2LjMxIDM3NC42MiAwIDQwNC4xMiAwIDQ0MGMwIDM5Ljc2IDMyLjI0IDcyIDcyIDcyaDM2OGMzOS43NiAwIDcyLTMyLjI0IDcyLTcyIDAtMzUuODgtMjYuMzEtNjUuMzgtNjAuNjQtNzAuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvcnRyYWl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xOTIgMTI4YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHptMTEyIDIzNi44YzAgMTAuNi0xMCAxOS4yLTIyLjQgMTkuMkgxMDIuNEM5MCAzODQgODAgMzc1LjQgODAgMzY0Ljh2LTE5LjJjMC0zMS44IDMwLjEtNTcuNiA2Ny4yLTU3LjZoNWMxMi4zIDUuMSAyNS43IDggMzkuOCA4czI3LjYtMi45IDM5LjgtOGg1YzM3LjEgMCA2Ny4yIDI1LjggNjcuMiA1Ny42djE5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvdW5kU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDggMzUyaC00NS40OTVjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NTAuODQ4SDEyOFYyODhoODRjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtODR2LTYzLjU1NmMwLTMyLjI2NiAyNC41NjItNTcuMDg2IDYxLjc5Mi01Ny4wODYgMjMuNjU4IDAgNDUuODc4IDExLjUwNSA1Ny42NTIgMTguODQ5IDUuMTUxIDMuMjEzIDExLjg4OCAyLjA1MSAxNS42ODgtMi42ODVsMjguNDkzLTM1LjUxM2M0LjIzMy01LjI3NiAzLjI3OS0xMy4wMDUtMi4xMTktMTcuMDgxQzI3My4xMjQgNTQuNTYgMjM2LjU3NiAzMiAxODcuOTMxIDMyIDEwNi4wMjYgMzIgNDggODQuNzQyIDQ4IDE1Ny45NjFWMjI0SDIwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjh2MTI4SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjk2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJWMzY0YzAtNi42MjctNS4zNzMtMTItMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvd2VyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCA1NC4xYzYzIDQ1IDEwNCAxMTguNiAxMDQgMjAxLjkgMCAxMzYuOC0xMTAuOCAyNDcuNy0yNDcuNSAyNDhDMTIwIDUwNC4zIDguMiAzOTMgOCAyNTYuNCA3LjkgMTczLjEgNDguOSA5OS4zIDExMS44IDU0LjJjMTEuNy04LjMgMjgtNC44IDM1IDcuN0wxNjIuNiA5MGM1LjkgMTAuNSAzLjEgMjMuOC02LjYgMzEtNDEuNSAzMC44LTY4IDc5LjYtNjggMTM0LjktLjEgOTIuMyA3NC41IDE2OC4xIDE2OCAxNjguMSA5MS42IDAgMTY4LjYtNzQuMiAxNjgtMTY5LjEtLjMtNTEuOC0yNC43LTEwMS44LTY4LjEtMTM0LTkuNy03LjItMTIuNC0yMC41LTYuNS0zMC45bDE1LjgtMjguMWM3LTEyLjQgMjMuMi0xNi4xIDM0LjgtNy44ek0yOTYgMjY0VjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0aC0zMmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MjQwYzAgMTMuMyAxMC43IDI0IDI0IDI0aDMyYzEzLjMgMCAyNC0xMC43IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQcmF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAxMjhjMzUuMzUgMCA2NC0yOC42NSA2NC02NFMyOTEuMzUgMCAyNTYgMHMtNjQgMjguNjUtNjQgNjQgMjguNjUgNjQgNjQgNjR6bS0zMC42MyAxNjkuNzVjMTQuMDYgMTYuNzIgMzkgMTkuMDkgNTUuOTcgNS4yMmw4OC03Mi4wMmMxNy4wOS0xMy45OCAxOS41OS0zOS4xOSA1LjYyLTU2LjI4LTEzLjk3LTE3LjExLTM5LjE5LTE5LjU5LTU2LjMxLTUuNjJsLTU3LjQ0IDQ3LTM4LjkxLTQ2LjMxYy0xNS40NC0xOC4zOS0zOS4yMi0yNy45Mi02NC0yNS4zMy0yNC4xOSAyLjQ4LTQ1LjI1IDE2LjI3LTU2LjM3IDM2LjkybC00OS4zNyA5Mi4wM2MtMjMuNCA0My42NC04LjY5IDk2LjM3IDM0LjE5IDEyMy43NUwxMzEuNTYgNDMySDQwYy0yMi4wOSAwLTQwIDE3LjkxLTQwIDQwczE3LjkxIDQwIDQwIDQwaDIwOGMzNC4wOCAwIDUzLjc3LTQyLjc5IDI4LjI4LTY4LjI4TDE2Ni40MiAzMzMuODZsMzQuOC02NC44NyAyNC4xNSAyOC43NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJheWluZ0hhbmRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiAxOTEuOTFjLTE3LjYgMC0zMiAxNC40LTMyIDMydjgwYzAgOC44NC03LjE2IDE2LTE2IDE2cy0xNi03LjE2LTE2LTE2di03Ni41NWMwLTE3LjM5IDQuNzItMzQuNDcgMTMuNjktNDkuMzlsNzcuNzUtMTI5LjU5YzkuMDktMTUuMTYgNC4xOS0zNC44MS0xMC45Ny00My45MS0xNC40NS04LjY3LTMyLjcyLTQuMy00Mi4zIDkuMjEtLjIuMjMtLjYyLjIxLS43OS40OGwtMTE3LjI2IDE3NS45QzExNy41NiAyMDUuOSAxMTIgMjI0LjMxIDExMiAyNDMuMjl2ODAuMjNsLTkwLjEyIDMwLjA0QTMxLjk3NCAzMS45NzQgMCAwIDAgMCAzODMuOTF2OTZjMCAxMC44MiA4LjUyIDMyIDMyIDMyIDIuNjkgMCA1LjQxLS4zNCA4LjA2LTEuMDNsMTc5LjE5LTQ2LjYyQzI2OS4xNiA0NDkuOTkgMzA0IDQwMy44IDMwNCAzNTEuOTF2LTEyOGMwLTE3LjYtMTQuNC0zMi0zMi0zMnptMzQ2LjEyIDE2MS43M0w1MjggMzIzLjZ2LTgwLjIzYzAtMTguOTgtNS41Ni0zNy4zOS0xNi4xMi01My4yM0wzOTQuNjIgMTQuMjVjLS4xOC0uMjctLjU5LS4yNC0uNzktLjQ4LTkuNTgtMTMuNTEtMjcuODUtMTcuODgtNDIuMy05LjIxLTE1LjE2IDkuMDktMjAuMDYgMjguNzUtMTAuOTcgNDMuOTFsNzcuNzUgMTI5LjU5YzguOTcgMTQuOTIgMTMuNjkgMzIgMTMuNjkgNDkuMzlWMzA0YzAgOC44NC03LjE2IDE2LTE2IDE2cy0xNi03LjE2LTE2LTE2di04MGMwLTE3LjYtMTQuNC0zMi0zMi0zMnMtMzIgMTQuNC0zMiAzMnYxMjhjMCA1MS44OSAzNC44NCA5OC4wOCA4NC43NSAxMTIuMzRsMTc5LjE5IDQ2LjYyYzIuNjYuNjkgNS4zOCAxLjAzIDguMDYgMS4wMyAyMy40OCAwIDMyLTIxLjE4IDMyLTMydi05NmMwLTEzLjc3LTguODEtMjUuOTktMjEuODgtMzAuMzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVByZXNjcmlwdGlvbkJvdHRsZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjAgMEgyNEMxMC44IDAgMCAxMC44IDAgMjR2NDhjMCAxMy4yIDEwLjggMjQgMjQgMjRoMzM2YzEzLjIgMCAyNC0xMC44IDI0LTI0VjI0YzAtMTMuMi0xMC44LTI0LTI0LTI0ek0zMiA0ODBjMCAxNy42IDE0LjQgMzIgMzIgMzJoMjU2YzE3LjYgMCAzMi0xNC40IDMyLTMyVjEyOEgzMnYzNTJ6bTY0LTE4NGMwLTQuNCAzLjYtOCA4LThoNTZ2LTU2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2NTZoNTZjNC40IDAgOCAzLjYgOCA4djQ4YzAgNC40LTMuNiA4LTggOGgtNTZ2NTZjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di01NmgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVByZXNjcmlwdGlvbkJvdHRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAxOTJoMTIwYzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIMzJ2NjRoMTIwYzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIMzJ2NjRoMTIwYzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIMzJ2NjRjMCAxNy42IDE0LjQgMzIgMzIgMzJoMjU2YzE3LjYgMCAzMi0xNC40IDMyLTMyVjEyOEgzMnY2NHpNMzYwIDBIMjRDMTAuOCAwIDAgMTAuOCAwIDI0djQ4YzAgMTMuMiAxMC44IDI0IDI0IDI0aDMzNmMxMy4yIDAgMjQtMTAuOCAyNC0yNFYyNGMwLTEzLjItMTAuOC0yNC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJlc2NyaXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMS4yNiAzNTJsNzguMDYtNzguMDZjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtMjIuNjMtMjIuNjNjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBMMjU2IDMwNi43NGwtODMuOTYtODMuOTZDMjE5LjMxIDIxNi44IDI1NiAxNzYuODkgMjU2IDEyOGMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2SDE2QzcuMTYgMzIgMCAzOS4xNiAwIDQ4djI1NmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtODBoMTguNzVsMTI4IDEyOC03OC4wNiA3OC4wNmMtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wyMi42MyAyMi42M2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwTDI1NiAzOTcuMjVsNzguMDYgNzguMDZjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwyMi42My0yMi42M2M2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzTDMwMS4yNiAzNTJ6TTY0IDk2aDk2YzE3LjY0IDAgMzIgMTQuMzYgMzIgMzJzLTE0LjM2IDMyLTMyIDMySDY0Vjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQcmludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMTkyVjc3LjI1YzAtOC40OS0zLjM3LTE2LjYyLTkuMzctMjIuNjNMMzkzLjM3IDkuMzdjLTYtNi0xNC4xNC05LjM3LTIyLjYzLTkuMzdIOTZDNzguMzMgMCA2NCAxNC4zMyA2NCAzMnYxNjBjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2MTEyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4djk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzIwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjI1NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0em0tNjQgMjU2SDEyOHYtOTZoMjU2djk2em0wLTIyNEgxMjhWNjRoMTkydjQ4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4djk2em00OCA3MmMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVByb2NlZHVyZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4IDIyNEgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnYxNDRINjRWMTQ0YzAtOC44LTcuMi0xNi0xNi0xNkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djM1MmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di00OGg1MTJ2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzMzZjMC02MS45LTUwLjEtMTEyLTExMi0xMTJ6TTEzNiA5NmgxMjYuMWwyNy42IDU1LjJjNS45IDExLjggMjIuNyAxMS44IDI4LjYgMEwzNjggNTEuOCAzOTAuMSA5Nkg1MTJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZINDA5LjlMMzgyLjMgOC44QzM3Ni40LTMgMzU5LjYtMyAzNTMuNyA4LjhMMzA0IDEwOC4ybC0xOS45LTM5LjhjLTEuNC0yLjctNC4xLTQuNC03LjItNC40SDEzNmMtNC40IDAtOCAzLjYtOCA4djE2YzAgNC40IDMuNiA4IDggOHptMjQgMjU2YzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0LTY0IDI4LjctNjQgNjQgMjguNyA2NCA2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJvamVjdERpYWdyYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMyMEgyNTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTI4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTI4YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzUyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTE5MiAzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDMyQzE0LjMzIDAgMCAxNC4zMyAwIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk1LjcybDczLjE2IDEyOC4wNEMyMTEuOTggMzAwLjk4IDIzMi40IDI4OCAyNTYgMjg4aC4yOEwxOTIgMTc1LjUxVjEyOGgyMjRWNjRIMTkyVjMyek02MDggMEg0ODBjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTI4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTI4YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHVtcE1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjM1LjUxLDE1OS44Mkg4NC4yNEE2NCw2NCwwLDAsMCwyMC41MSwyMThMLjE0LDQ0MmE2NCw2NCwwLDAsMCw2My43NCw2OS44aDE5MkE2NCw2NCwwLDAsMCwzMTkuNjEsNDQyTDI5OS4yNCwyMThBNjQsNjQsMCwwLDAsMjM1LjUxLDE1OS44MlptNC4zNywxNzMuMzNhMTMuMzUsMTMuMzUsMCwwLDEtMTMuMzQsMTMuMzRoLTQwdjQwYTEzLjMzLDEzLjMzLDAsMCwxLTEzLjMzLDEzLjMzSDE0Ni41NGExMy4zMywxMy4zMywwLDAsMS0xMy4zMy0xMy4zM3YtNDBoLTQwYTEzLjM0LDEzLjM0LDAsMCwxLTEzLjMzLTEzLjM0VjMwNi40OWExMy4zMywxMy4zMywwLDAsMSwxMy4zMy0xMy4zNGg0MHYtNDBhMTMuMzMsMTMuMzMsMCwwLDEsMTMuMzMtMTMuMzNoMjYuNjdhMTMuMzMsMTMuMzMsMCwwLDEsMTMuMzMsMTMuMzN2NDBoNDBhMTMuMzQsMTMuMzQsMCwwLDEsMTMuMzQsMTMuMzRaTTM3OS4xOSw5My44OCwzMzUuODcsNTAuNTZhNjQsNjQsMCwwLDAtNDUuMjQtMTguNzRIMjIzLjg4YTMyLDMyLDAsMCwwLTMyLTMyaC02NGEzMiwzMiwwLDAsMC0zMiwzMnY5NmgxMjh2LTMyaDY2Ljc1bDQzLjMxLDQzLjMxYTE2LDE2LDAsMCwwLDIyLjYzLDBsMjIuNjItMjIuNjJBMTYsMTYsMCwwLDAsMzc5LjE5LDkzLjg4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQdW1wU29hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzUuNjMsMTYwSDg0LjM3YTY0LDY0LDAsMCwwLTYzLjc0LDU4LjIxTC4yNyw0NDIuMjFBNjQsNjQsMCwwLDAsNjQsNTEySDI1NmE2NCw2NCwwLDAsMCw2My43NC02OS43OWwtMjAuMzYtMjI0QTY0LDY0LDAsMCwwLDIzNS42MywxNjBaTTE2MCw0MTZjLTMzLjEyLDAtNjAtMjYuMzMtNjAtNTguNzUsMC0yNSwzNS43LTc1LjQ3LDUyLTk3LjI3QTEwLDEwLDAsMCwxLDE2OCwyNjBjMTYuMzMsMjEuOCw1Miw3Mi4yNyw1Miw5Ny4yN0MyMjAsMzg5LjY3LDE5My4xMiw0MTYsMTYwLDQxNlpNMzc5LjMxLDk0LjA2LDMzNiw1MC43NEE2NCw2NCwwLDAsMCwyOTAuNzUsMzJIMjI0QTMyLDMyLDAsMCwwLDE5MiwwSDEyOEEzMiwzMiwwLDAsMCw5NiwzMnY5NkgyMjRWOTZoNjYuNzVsNDMuMzEsNDMuMzFhMTYsMTYsMCwwLDAsMjIuNjMsMGwyMi42Mi0yMi42MkExNiwxNiwwLDAsMCwzNzkuMzEsOTQuMDZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVB1enpsZVBpZWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxOS40NDIgMjg4LjY1MWMtNDEuNTE5IDAtNTkuNSAzMS41OTMtODIuMDU4IDMxLjU5M0MzNzcuNDA5IDMyMC4yNDQgNDMyIDE0NCA0MzIgMTQ0cy0xOTYuMjg4IDgwLTE5Ni4yODgtMy4yOTdjMC0zNS44MjcgMzYuMjg4LTQ2LjI1IDM2LjI4OC04NS45ODVDMjcyIDE5LjIxNiAyNDMuODg1IDAgMjEwLjUzOSAwYy0zNC42NTQgMC02Ni4zNjYgMTguODkxLTY2LjM2NiA1Ni4zNDYgMCA0MS4zNjQgMzEuNzExIDU5LjI3NyAzMS43MTEgODEuNzVDMTc1Ljg4NSAyMDcuNzE5IDAgMTY2Ljc1OCAwIDE2Ni43NTh2MzMzLjIzN3MxNzguNjM1IDQxLjA0NyAxNzguNjM1LTI4LjY2MmMwLTIyLjQ3My00MC00MC4xMDctNDAtODEuNDcxIDAtMzcuNDU2IDI5LjI1LTU2LjM0NiA2My41NzctNTYuMzQ2IDMzLjY3MyAwIDYxLjc4OCAxOS4yMTYgNjEuNzg4IDU0LjcxNyAwIDM5LjczNS0zNi4yODggNTAuMTU4LTM2LjI4OCA4NS45ODUgMCA2MC44MDMgMTI5LjY3NSAyNS43MyAxODEuMjMgMjUuNzMgMCAwLTM0LjcyNS0xMjAuMTAxIDI1LjgyNy0xMjAuMTAxIDM1Ljk2MiAwIDQ2LjQyMyAzNi4xNTIgODYuMzA4IDM2LjE1MkM1NTYuNzEyIDQxNiA1NzYgMzg3Ljk5IDU3NiAzNTQuNDQzYzAtMzQuMTk5LTE4Ljk2Mi02NS43OTItNTYuNTU4LTY1Ljc5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXJjb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjI0aDE5MlYzMkgwdjE5MnpNNjQgOTZoNjR2NjRINjRWOTZ6bTE5Mi02NHYxOTJoMTkyVjMySDI1NnptMTI4IDEyOGgtNjRWOTZoNjR2NjR6TTAgNDgwaDE5MlYyODhIMHYxOTJ6bTY0LTEyOGg2NHY2NEg2NHYtNjR6bTM1Mi02NGgzMnYxMjhoLTk2di0zMmgtMzJ2OTZoLTY0VjI4OGg5NnYzMmg2NHYtMzJ6bTAgMTYwaDMydjMyaC0zMnYtMzJ6bS02NCAwaDMydjMyaC0zMnYtMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVF1ZXN0aW9uQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNCAyNTZjMCAxMzYuOTk3LTExMS4wNDMgMjQ4LTI0OCAyNDhTOCAzOTIuOTk3IDggMjU2QzggMTE5LjA4MyAxMTkuMDQzIDggMjU2IDhzMjQ4IDExMS4wODMgMjQ4IDI0OHpNMjYyLjY1NSA5MGMtNTQuNDk3IDAtODkuMjU1IDIyLjk1Ny0xMTYuNTQ5IDYzLjc1OC0zLjUzNiA1LjI4Ni0yLjM1MyAxMi40MTUgMi43MTUgMTYuMjU4bDM0LjY5OSAyNi4zMWM1LjIwNSAzLjk0NyAxMi42MjEgMy4wMDggMTYuNjY1LTIuMTIyIDE3Ljg2NC0yMi42NTggMzAuMTEzLTM1Ljc5NyA1Ny4zMDMtMzUuNzk3IDIwLjQyOSAwIDQ1LjY5OCAxMy4xNDggNDUuNjk4IDMyLjk1OCAwIDE0Ljk3Ni0xMi4zNjMgMjIuNjY3LTMyLjUzNCAzMy45NzZDMjQ3LjEyOCAyMzguNTI4IDIxNiAyNTQuOTQxIDIxNiAyOTZ2NGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDU2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTEuMzMzYzAtMjguNDYyIDgzLjE4Ni0yOS42NDcgODMuMTg2LTEwNi42NjcgMC01OC4wMDItNjAuMTY1LTEwMi0xMTYuNTMxLTEwMnpNMjU2IDMzOGMtMjUuMzY1IDAtNDYgMjAuNjM1LTQ2IDQ2IDAgMjUuMzY0IDIwLjYzNSA0NiA0NiA0NnM0Ni0yMC42MzYgNDYtNDZjMC0yNS4zNjUtMjAuNjM1LTQ2LTQ2LTQ2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRdWVzdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDIuMDIxIDBDMTIyLjIwMiAwIDcwLjUwMyAzMi43MDMgMjkuOTE0IDkxLjAyNmMtNy4zNjMgMTAuNTgtNS4wOTMgMjUuMDg2IDUuMTc4IDMyLjg3NGw0My4xMzggMzIuNzA5YzEwLjM3MyA3Ljg2NSAyNS4xMzIgNi4wMjYgMzMuMjUzLTQuMTQ4IDI1LjA0OS0zMS4zODEgNDMuNjMtNDkuNDQ5IDgyLjc1Ny00OS40NDkgMzAuNzY0IDAgNjguODE2IDE5Ljc5OSA2OC44MTYgNDkuNjMxIDAgMjIuNTUyLTE4LjYxNyAzNC4xMzQtNDguOTkzIDUxLjE2NC0zNS40MjMgMTkuODYtODIuMjk5IDQ0LjU3Ni04Mi4yOTkgMTA2LjQwNVYzMjBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDcyLjQ3MWMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTUuNzczYzAtNDIuODYgMTI1LjI2OC00NC42NDUgMTI1LjI2OC0xNjAuNjI3QzM3Ny41MDQgNjYuMjU2IDI4Ni45MDIgMCAyMDIuMDIxIDB6TTE5MiAzNzMuNDU5Yy0zOC4xOTYgMC02OS4yNzEgMzEuMDc1LTY5LjI3MSA2OS4yNzEgMCAzOC4xOTUgMzEuMDc1IDY5LjI3IDY5LjI3MSA2OS4yN3M2OS4yNzEtMzEuMDc1IDY5LjI3MS02OS4yNzEtMzEuMDc1LTY5LjI3LTY5LjI3MS02OS4yN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVpZGRpdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ni41IDIxNi44TDM0My4yIDMyNnMtMTYuNiAxMDIuNC03Ni42IDE1MC4xQzIwNi43IDUyMy44IDAgNTEwLjIgMCA1MTAuMnMzLjgtMjMuMSAxMS01NS40bDk0LjYtMTEyLjJjNC00LjctLjktMTEuNi02LjYtOS41bC02MC40IDIyLjFjMTQuNC00MS43IDMyLjctODAgNTQuNi05Ny41IDU5LjktNDcuOCAxNjMuMy00MC45IDE2My4zLTQwLjl6bTIzOCAxMzVjLTQ0IDAtNzkuOCAzNS44LTc5LjggNzkuOSAwIDQ0LjEgMzUuNyA3OS45IDc5LjggNzkuOSA0NC4xIDAgNzkuOC0zNS44IDc5LjgtNzkuOSAwLTQ0LjItMzUuOC03OS45LTc5LjgtNzkuOXpNNjM2LjUgMzFMNjE2LjcgNmMtNS41LTYuOS0xNS41LTgtMjIuNC0yLjZMMzYxLjggMTgxLjNsLTM0LjEtNDNjLTUuMS02LjQtMTUuMS01LjItMTguNiAyLjJsLTI1LjMgNTQuNiA4Ni43IDEwOS4yIDU4LjgtMTIuNGM4LTEuNyAxMS40LTExLjIgNi4zLTE3LjZsLTM0LjEtNDIuOUw2MzQgNTMuNWM2LjktNS41IDgtMTUuNiAyLjUtMjIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVvdGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZoLTgwdi02NGMwLTM1LjMgMjguNy02NCA2NC02NGg4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0aC04Yy04OC40IDAtMTYwIDcxLjYtMTYwIDE2MHYyNDBjMCAyNi41IDIxLjUgNDggNDggNDhoMTI4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjMwNGMwLTI2LjUtMjEuNS00OC00OC00OHptLTI4OCAwSDk2di02NGMwLTM1LjMgMjguNy02NCA2NC02NGg4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0aC04QzcxLjYgMzIgMCAxMDMuNiAwIDE5MnYyNDBjMCAyNi41IDIxLjUgNDggNDggNDhoMTI4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjMwNGMwLTI2LjUtMjEuNS00OC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVvdGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMzJIMzM2Yy0yNi41IDAtNDggMjEuNS00OCA0OHYxMjhjMCAyNi41IDIxLjUgNDggNDggNDhoODB2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRoLThjLTEzLjMgMC0yNCAxMC43LTI0IDI0djQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDhjODguNCAwIDE2MC03MS42IDE2MC0xNjBWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0yODggMEg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjEyOGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg4MHY2NGMwIDM1LjMtMjguNyA2NC02NCA2NGgtOGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoOGM4OC40IDAgMTYwLTcxLjYgMTYwLTE2MFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVyYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDM1OC40VjI1LjZjMC0xNi05LjYtMjUuNi0yNS42LTI1LjZIOTZDNDEuNiAwIDAgNDEuNiAwIDk2djMyMGMwIDU0LjQgNDEuNiA5NiA5NiA5NmgzMjYuNGMxMi44IDAgMjUuNi05LjYgMjUuNi0yNS42di0xNmMwLTYuNC0zLjItMTIuOC05LjYtMTkuMi0zLjItMTYtMy4yLTYwLjggMC03My42IDYuNC0zLjIgOS42LTkuNiA5LjYtMTkuMnpNMzAxLjA4IDE0NS44MmMuNi0xLjIxIDEuNzYtMS44MiAyLjkyLTEuODJzMi4zMi42MSAyLjkyIDEuODJsMTEuMTggMjIuNjUgMjUgMy42M2MyLjY3LjM5IDMuNzQgMy42NyAxLjgxIDUuNTZsLTE4LjA5IDE3LjYzIDQuMjcgMjQuODljLjM2IDIuMTEtMS4zMSAzLjgyLTMuMjEgMy44Mi0uNSAwLTEuMDItLjEyLTEuNTItLjM4TDMwNCAyMTEuODdsLTIyLjM2IDExLjc1Yy0uNS4yNi0xLjAyLjM4LTEuNTIuMzgtMS45IDAtMy41Ny0xLjcxLTMuMjEtMy44Mmw0LjI3LTI0Ljg5LTE4LjA5LTE3LjYzYy0xLjk0LTEuODktLjg3LTUuMTcgMS44MS01LjU2bDI0Ljk5LTMuNjMgMTEuMTktMjIuNjV6bS01Ny44OS02OS4wMWMxMy42NyAwIDI3LjI2IDIuNDkgNDAuMzggNy40MWE2Ljc3NSA2Ljc3NSAwIDEgMS0yLjM4IDEzLjEyYy0uNjcgMC0zLjA5LS4yMS00LjEzLS4yMS01Mi4zMSAwLTk0Ljg2IDQyLjU1LTk0Ljg2IDk0Ljg2IDAgNTIuMyA0Mi41NSA5NC44NiA5NC44NiA5NC44NiAxLjAzIDAgMy40OC0uMjEgNC4xMy0uMjEgMy45MyAwIDYuOCAzLjE0IDYuOCA2Ljc4IDAgMi45OC0xLjk0IDUuNTEtNC42MiA2LjQyLTEzLjA3IDQuODctMjYuNTkgNy4zNC00MC4xOSA3LjM0QzE3OS42NyAzMDcuMTkgMTI4IDI1NS41MSAxMjggMTkyYzAtNjMuNTIgNTEuNjctMTE1LjE5IDExNS4xOS0xMTUuMTl6TTM4MC44IDQ0OEg5NmMtMTkuMiAwLTMyLTEyLjgtMzItMzJzMTYtMzIgMzItMzJoMjg0Ljh2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJhZGlhdGlvbkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTIgMjU2aDc5LjFjOS4yIDAgMTYuOS03LjcgMTYtMTYuOC00LjYtNDMuNi0yNy04MS44LTU5LjUtMTA3LjgtNy42LTYuMS0xOC44LTQuNS0yNCAzLjhMMjgxLjkgMjAyYzE4IDExLjIgMzAuMSAzMS4yIDMwLjEgNTR6bS05Ny44IDU0LjFMMTcyLjQgMzc3Yy00LjkgNy44LTIuNCAxOC40IDUuOCAyMi41IDIxLjEgMTAuNCA0NC43IDE2LjUgNjkuOCAxNi41czQ4LjctNi4xIDY5LjktMTYuNWM4LjItNC4xIDEwLjYtMTQuNyA1LjgtMjIuNWwtNDEuOC02Ni45Yy05LjggNi4yLTIxLjQgOS45LTMzLjggOS45cy0yNC4xLTMuNy0zMy45LTkuOXpNMTA0LjkgMjU2SDE4NGMwLTIyLjggMTIuMS00Mi44IDMwLjItNTQuMWwtNDEuNy02Ni44Yy01LjItOC4zLTE2LjQtOS45LTI0LTMuOC0zMi42IDI2LTU0LjkgNjQuMi01OS41IDEwNy44LTEuMSA5LjIgNi43IDE2LjkgMTUuOSAxNi45ek0yNDggNTA0YzEzNyAwIDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDh6bTAtNDMyYzEwMS41IDAgMTg0IDgyLjUgMTg0IDE4NHMtODIuNSAxODQtMTg0IDE4NFM2NCAzNTcuNSA2NCAyNTYgMTQ2LjUgNzIgMjQ4IDcyem0wIDIxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJhZGlhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjguMiAyNTUuOGgxNTEuNmM5LjEgMCAxNi44LTcuNyAxNi4yLTE2LjgtNS4xLTc1LjgtNDQuNC0xNDIuMi0xMDIuNS0xODQuMi03LjQtNS4zLTE3LjktMi45LTIyLjcgNC44TDI5MC40IDE4OGMyMi42IDE0LjMgMzcuOCAzOS4yIDM3LjggNjcuOHptLTM3LjggNjcuN2MtMTIuMyA3LjctMjYuOCAxMi40LTQyLjQgMTIuNC0xNS42IDAtMzAtNC43LTQyLjQtMTIuNEwxMjUuMiA0NTJjLTQuOCA3LjctMi40IDE4LjEgNS42IDIyLjRDMTY1LjcgNDkzLjIgMjA1LjYgNTA0IDI0OCA1MDRzODIuMy0xMC44IDExNy4yLTI5LjZjOC00LjMgMTAuNC0xNC44IDUuNi0yMi40bC04MC40LTEyOC41ek0yNDggMzAzLjhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDgtNDggMjEuNS00OCA0OCAyMS41IDQ4IDQ4IDQ4em0tMjMxLjgtNDhoMTUxLjZjMC0yOC42IDE1LjItNTMuNSAzNy44LTY3LjdMMTI1LjIgNTkuN2MtNC44LTcuNy0xNS4zLTEwLjItMjIuNy00LjhDNDQuNCA5Ni45IDUuMSAxNjMuMyAwIDIzOS4xYy0uNiA5IDcuMSAxNi43IDE2LjIgMTYuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmFpbmJvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjguMyAzMi43QzExNS40IDQyLjkgMCAxNzYuOSAwIDMzMC4yVjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyMEM2NCAxODYuOCAxODAuOSA4MC4zIDMxNy41IDk3LjkgNDMwLjQgMTEyLjQgNTEyIDIxNCA1MTIgMzI3LjhWNDY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwYzAtMTY1LjMtMTQwLTI5OC42LTMwNy43LTI4Ny4zem0tNS42IDk2LjlDMTY2IDE0MiA5NiAyMjkuMSA5NiAzMjYuN1Y0NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzMjBjMC03NC44IDY0LjUtMTM0LjggMTQwLjgtMTI3LjQgNjYuNSA2LjUgMTE1LjIgNjYuMiAxMTUuMiAxMzMuMVY0NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzMjBjMC0xMTQuMi0xMDAuMi0yMDUuNC0yMTcuMy0xOTAuNHptNi4yIDk2LjNjLTQ1LjYgOC45LTc2LjkgNTEuNS03Ni45IDk3LjlWNDY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwYzAtMTcuNiAxNC4zLTMyIDMyLTMyczMyIDE0LjQgMzIgMzJ2MTQ0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwYzAtNTkuMi01My44LTEwNi0xMTUuMS05NC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSYW5kb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0Ljk3MSAzNTkuMDI5YzkuMzczIDkuMzczIDkuMzczIDI0LjU2OSAwIDMzLjk0MWwtODAgNzkuOTg0Yy0xNS4wMSAxNS4wMS00MC45NzEgNC40OS00MC45NzEtMTYuOTcxVjQxNmgtNTguNzg1YTEyLjAwNCAxMi4wMDQgMCAwIDEtOC43NzMtMy44MTJsLTcwLjU1Ni03NS41OTYgNTMuMzMzLTU3LjE0M0wzNTIgMzM2aDMydi0zOS45ODFjMC0yMS40MzggMjUuOTQzLTMxLjk5OCA0MC45NzEtMTYuOTcxbDgwIDc5Ljk4MXpNMTIgMTc2aDg0bDUyLjc4MSA1Ni41NTEgNTMuMzMzLTU3LjE0My03MC41NTYtNzUuNTk2QTExLjk5OSAxMS45OTkgMCAwIDAgMTIyLjc4NSA5NkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY1NmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyem0zNzIgMHYzOS45ODRjMCAyMS40NiAyNS45NjEgMzEuOTggNDAuOTcxIDE2Ljk3MWw4MC03OS45ODRjOS4zNzMtOS4zNzMgOS4zNzMtMjQuNTY5IDAtMzMuOTQxbC04MC03OS45ODFDNDA5Ljk0MyAyNC4wMjEgMzg0IDM0LjU4MiAzODQgNTYuMDE5Vjk2aC01OC43ODVhMTIuMDA0IDEyLjAwNCAwIDAgMC04Ljc3MyAzLjgxMkw5NiAzMzZIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NTZjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxMTAuNzg1YzMuMzI2IDAgNi41MDMtMS4zODEgOC43NzMtMy44MTJMMzUyIDE3NmgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVjZWlwdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTguNCAzLjJMMzIwIDQ4IDI2NS42IDMuMmExNS45IDE1LjkgMCAwIDAtMTkuMiAwTDE5MiA0OCAxMzcuNiAzLjJhMTUuOSAxNS45IDAgMCAwLTE5LjIgMEw2NCA0OCAyNS42IDMuMkMxNS00LjcgMCAyLjggMCAxNnY0ODBjMCAxMy4yIDE1IDIwLjcgMjUuNiAxMi44TDY0IDQ2NGw1NC40IDQ0LjhhMTUuOSAxNS45IDAgMCAwIDE5LjIgMEwxOTIgNDY0bDU0LjQgNDQuOGExNS45IDE1LjkgMCAwIDAgMTkuMiAwTDMyMCA0NjRsMzguNCA0NC44YzEwLjUgNy45IDI1LjYuNCAyNS42LTEyLjhWMTZjMC0xMy4yLTE1LTIwLjctMjUuNi0xMi44ek0zMjAgMzYwYzAgNC40LTMuNiA4LTggOEg3MmMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMjQwYzQuNCAwIDggMy42IDggOHYxNnptMC05NmMwIDQuNC0zLjYgOC04IDhINzJjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDI0MGM0LjQgMCA4IDMuNiA4IDh2MTZ6bTAtOTZjMCA0LjQtMy42IDgtOCA4SDcyYy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgyNDBjNC40IDAgOCAzLjYgOCA4djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWNvcmRWaW55bCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMTUyYTEwNCAxMDQgMCAxIDAgMTA0IDEwNCAxMDQgMTA0IDAgMCAwLTEwNC0xMDR6bTAgMTI4YTI0IDI0IDAgMSAxIDI0LTI0IDI0IDI0IDAgMCAxLTI0IDI0em0wLTI3MkMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0wIDM3NmExMjggMTI4IDAgMSAxIDEyOC0xMjggMTI4IDEyOCAwIDAgMS0xMjggMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWN5Y2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4NC41NjEgMjYxLjkwM2MzLjIzMiAxMy45OTctMTIuMTIzIDI0LjYzNS0yNC4wNjggMTcuMTY4bC00MC43MzYtMjUuNDU1LTUwLjg2NyA4MS40MDJDNTUuNjA2IDM1Ni4yNzMgNzAuOTYgMzg0IDk2LjAxMiAzODRIMTQ4YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkg5Ni4xMTVjLTc1LjMzNCAwLTEyMS4zMDItODMuMDQ4LTgxLjQwOC0xNDYuODhsNTAuODIyLTgxLjM4OC00MC43MjUtMjUuNDQ4Yy0xMi4wODEtNy41NDctOC45NjYtMjUuOTYxIDQuODc5LTI5LjE1OGwxMTAuMjM3LTI1LjQ1YzguNjExLTEuOTg4IDE3LjIwMSAzLjM4MSAxOS4xODkgMTEuOTlsMjUuNDUyIDExMC4yMzd6bTk4LjU2MS0xODIuOTE1bDQxLjI4OSA2Ni4wNzYtNDAuNzQgMjUuNDU3Yy0xMi4wNTEgNy41MjgtOSAyNS45NTMgNC44NzkgMjkuMTU4bDExMC4yMzcgMjUuNDVjOC42NzIgMS45OTkgMTcuMjE1LTMuNDM4IDE5LjE4OS0xMS45OWwyNS40NS0xMTAuMjM3YzMuMTk3LTEzLjg0NC0xMS45OS0yNC43MTktMjQuMDY4LTE3LjE2OGwtNDAuNjg3IDI1LjQyNC00MS4yNjMtNjYuMDgyYy0zNy41MjEtNjAuMDMzLTEyNS4yMDktNjAuMTcxLTE2Mi44MTYgMGwtMTcuOTYzIDI4Ljc2NmMtMy41MSA1LjYyLTEuOCAxMy4wMjEgMy44MiAxNi41MzNsMzMuOTE5IDIxLjE5NWM1LjYyIDMuNTEyIDEzLjAyNCAxLjgwMyAxNi41MzYtMy44MTdsMTcuOTYxLTI4Ljc0M2MxMi43MTItMjAuMzQxIDQxLjk3My0xOS42NzYgNTQuMjU3LS4wMjJ6TTQ5Ny4yODggMzAxLjEybC0yNy41MTUtNDQuMDY1Yy0zLjUxMS01LjYyMy0xMC45MTYtNy4zMzQtMTYuNTM4LTMuODIxbC0zMy44NjEgMjEuMTU5Yy01LjYyIDMuNTEyLTcuMzMgMTAuOTE1LTMuODE4IDE2LjUzNmwyNy41NjQgNDQuMTEyYzEzLjI1NyAyMS4yMTEtMi4wNTcgNDguOTYtMjcuMTM2IDQ4Ljk2SDMyMFYzMzYuMDJjMC0xNC4yMTMtMTcuMjQyLTIxLjM4My0yNy4zMTMtMTEuMzEzbC04MCA3OS45ODFjLTYuMjQ5IDYuMjQ4LTYuMjQ5IDE2LjM3OSAwIDIyLjYyN2w4MCA3OS45ODlDMzAyLjY4OSA1MTcuMzA4IDMyMCA1MTAuMyAzMjAgNDk1Ljk4OVY0NDhoOTUuODhjNzUuMjc0IDAgMTIxLjMzNS04Mi45OTcgODEuNDA4LTE0Ni44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkb0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYuNDU1IDhjNjYuMjY5LjExOSAxMjYuNDM3IDI2LjIzMyAxNzAuODU5IDY4LjY4NWwzNS43MTUtMzUuNzE1QzQ3OC4xNDkgMjUuODUxIDUwNCAzNi41NTkgNTA0IDU3Ljk0MVYxOTJjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDM0NS45NDFjLTIxLjM4MiAwLTMyLjA5LTI1Ljg1MS0xNi45NzEtNDAuOTcxbDQxLjc1LTQxLjc1Yy0zMC44NjQtMjguODk5LTcwLjgwMS00NC45MDctMTEzLjIzLTQ1LjI3My05Mi4zOTgtLjc5OC0xNzAuMjgzIDczLjk3Ny0xNjkuNDg0IDE2OS40NDJDODguNzY0IDM0OC4wMDkgMTYyLjE4NCA0MjQgMjU2IDQyNGM0MS4xMjcgMCA3OS45OTctMTQuNjc4IDExMC42MjktNDEuNTU2IDQuNzQzLTQuMTYxIDExLjkwNi0zLjkwOCAxNi4zNjguNTUzbDM5LjY2MiAzOS42NjJjNC44NzIgNC44NzIgNC42MzEgMTIuODE1LS40ODIgMTcuNDMzQzM3OC4yMDIgNDc5LjgxMyAzMTkuOTI2IDUwNCAyNTYgNTA0IDExOS4wMzQgNTA0IDguMDAxIDM5Mi45NjcgOCAyNTYuMDAyIDcuOTk5IDExOS4xOTMgMTE5LjY0NiA3Ljc1NSAyNTYuNDU1IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAwLjMzIDBoLTQ3LjQxYTEyIDEyIDAgMCAwLTEyIDEyLjU3bDQgODIuNzZBMjQ3LjQyIDI0Ny40MiAwIDAgMCAyNTYgOEMxMTkuMzQgOCA3LjkgMTE5LjUzIDggMjU2LjE5IDguMSAzOTMuMDcgMTE5LjEgNTA0IDI1NiA1MDRhMjQ3LjEgMjQ3LjEgMCAwIDAgMTY2LjE4LTYzLjkxIDEyIDEyIDAgMCAwIC40OC0xNy40M2wtMzQtMzRhMTIgMTIgMCAwIDAtMTYuMzgtLjU1QTE3NiAxNzYgMCAxIDEgNDAyLjEgMTU3LjhsLTEwMS41My00Ljg3YTEyIDEyIDAgMCAwLTEyLjU3IDEydjQ3LjQxYTEyIDEyIDAgMCAwIDEyIDEyaDIwMC4zM2ExMiAxMiAwIDAgMCAxMi0xMlYxMmExMiAxMiAwIDAgMC0xMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnaXN0ZXJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODUuMzYzIDIwNy40NzVjMCAxOC42LTkuODMxIDI4LjQzMS0yOC40MzEgMjguNDMxaC0yOS44NzZ2LTU2LjE0aDIzLjM3OGMyOC42NjggMCAzNC45MjkgOC43NzMgMzQuOTI5IDI3LjcwOXpNNTA0IDI1NmMwIDEzNi45NjctMTExLjAzMyAyNDgtMjQ4IDI0OFM4IDM5Mi45NjcgOCAyNTYgMTE5LjAzMyA4IDI1NiA4czI0OCAxMTEuMDMzIDI0OCAyNDh6TTM2My40MTEgMzYwLjQxNGMtNDYuNzI5LTg0LjgyNS00My4yOTktNzguNjM2LTQ0LjcwMi04MC45OCAyMy40MzItMTUuMTcyIDM3Ljk0NS00Mi45NzkgMzcuOTQ1LTc0LjQ4NiAwLTU0LjI0NC0zMS41LTg5LjI1Mi0xMDUuNDk4LTg5LjI1MmgtNzAuNjY3Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjRWMzcyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgyMi41NjdjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di03MS42NjNoMjUuNTU2bDQ0LjEyOSA4Mi45MzdhMjQuMDAxIDI0LjAwMSAwIDAgMCAyMS4xODggMTIuNzI3aDI0LjQ2NGMxOC4yNjEtLjAwMSAyOS44MjktMTkuNTkxIDIxLjAxOC0zNS41ODd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlbW92ZUZvcm1hdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgNDE2aC0xMS4xN2w5LjI2LTI3Ljc3TDI2NyAzMzYuNCAyNDAuNDkgNDE2SDIwOGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0yOTcuODIgNDIuMUwzNzcgMjU5LjU5IDQyNi4xNyAxMTJINTQ0djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDE3NmExNiAxNiAwIDAgMC0xNiAxNnY0My45TDQ1LjQ2IDMuMzhBMTYgMTYgMCAwIDAgMjMgNi4xOUwzLjM3IDMxLjQ2YTE2IDE2IDAgMCAwIDIuODEgMjIuNDVsNTg4LjM2IDQ1NC43MmExNiAxNiAwIDAgMCAyMi40Ni0yLjgxbDE5LjY0LTI1LjI3YTE2IDE2IDAgMCAwLTIuODItMjIuNDV6TTMwOS45MSAyMDcuNzZMMjI0IDE0MS4zNlYxMTJoMTE3LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXBseUFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzYuMzA5IDE4OS44MzZMMzEyLjMxMyAzNy44NTFDMzI3LjcyIDI0LjU0NiAzNTIgMzUuMzQ4IDM1MiA1Ni4wMTV2ODIuNzYzYzEyOS4xODIgMTAuMjMxIDIyNCA1Mi4yMTIgMjI0IDE4My41NDggMCA2MS40NDEtMzkuNTgyIDEyMi4zMDktODMuMzMzIDE1NC4xMzItMTMuNjUzIDkuOTMxLTMzLjExMS0yLjUzMy0yOC4wNzctMTguNjMxIDM4LjUxMi0xMjMuMTYyLTMuOTIyLTE2OS40ODItMTEyLjU5LTE4Mi4wMTV2ODQuMTc1YzAgMjAuNzAxLTI0LjMgMzEuNDUzLTM5LjY4NyAxOC4xNjRMMTM2LjMwOSAyMjYuMTY0Yy0xMS4wNzEtOS41NjEtMTEuMDg2LTI2Ljc1MyAwLTM2LjMyOHptLTEyOCAzNi4zMjhMMTg0LjMxMyAzNzguMTVDMTk5LjcgMzkxLjQzOSAyMjQgMzgwLjY4NyAyMjQgMzU5Ljk4NnYtMTUuODE4bC0xMDguNjA2LTkzLjc4NUE1NS45NiA1NS45NiAwIDAgMSA5NiAyMDcuOTk4YTU1Ljk1MyA1NS45NTMgMCAwIDEgMTkuMzkzLTQyLjM4TDIyNCA3MS44MzJWNTYuMDE1YzAtMjAuNjY3LTI0LjI4LTMxLjQ2OS0zOS42ODctMTguMTY0TDguMzA5IDE4OS44MzZjLTExLjA4NiA5LjU3NS0xMS4wNzEgMjYuNzY3IDAgMzYuMzI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXBseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjMwOSAxODkuODM2TDE4NC4zMTMgMzcuODUxQzE5OS43MTkgMjQuNTQ2IDIyNCAzNS4zNDcgMjI0IDU2LjAxNXY4MC4wNTNjMTYwLjYyOSAxLjgzOSAyODggMzQuMDMyIDI4OCAxODYuMjU4IDAgNjEuNDQxLTM5LjU4MSAxMjIuMzA5LTgzLjMzMyAxNTQuMTMyLTEzLjY1MyA5LjkzMS0zMy4xMTEtMi41MzMtMjguMDc3LTE4LjYzMSA0NS4zNDQtMTQ1LjAxMi0yMS41MDctMTgzLjUxLTE3Ni41OS0xODUuNzQyVjM2MGMwIDIwLjctMjQuMyAzMS40NTMtMzkuNjg3IDE4LjE2NGwtMTc2LjAwNC0xNTJjLTExLjA3MS05LjU2Mi0xMS4wODYtMjYuNzUzIDAtMzYuMzI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXB1YmxpY2FuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAxOTJjMC04OC40LTcxLjYtMTYwLTE2MC0xNjBIMTYwQzcxLjYgMzIgMCAxMDMuNiAwIDE5MnY2NGg1NDR2LTY0em0tMzY3LjctMjEuNmwtMTkuOCAxOS4zIDQuNyAyNy4zYy44IDQuOS00LjMgOC42LTguNyA2LjNMMTI4IDIxMC40bC0yNC41IDEyLjljLTQuMyAyLjMtOS41LTEuNC04LjctNi4zbDQuNy0yNy4zLTE5LjgtMTkuM2MtMy42LTMuNS0xLjYtOS41IDMuMy0xMC4ybDI3LjQtNCAxMi4yLTI0LjhjMi4yLTQuNSA4LjYtNC40IDEwLjcgMGwxMi4yIDI0LjggMjcuNCA0YzUgLjcgNi45IDYuNyAzLjQgMTAuMnptMTQ0IDBsLTE5LjggMTkuMyA0LjcgMjcuM2MuOCA0LjktNC4zIDguNi04LjcgNi4zTDI3MiAyMTAuNGwtMjQuNSAxMi45Yy00LjMgMi4zLTkuNS0xLjQtOC43LTYuM2w0LjctMjcuMy0xOS44LTE5LjNjLTMuNi0zLjUtMS42LTkuNSAzLjMtMTAuMmwyNy40LTQgMTIuMi0yNC44YzIuMi00LjUgOC42LTQuNCAxMC43IDBsMTIuMiAyNC44IDI3LjQgNGM1IC43IDYuOSA2LjcgMy40IDEwLjJ6bTE0NCAwbC0xOS44IDE5LjMgNC43IDI3LjNjLjggNC45LTQuMyA4LjYtOC43IDYuM0w0MTYgMjEwLjRsLTI0LjUgMTIuOWMtNC4zIDIuMy05LjUtMS40LTguNy02LjNsNC43LTI3LjMtMTkuOC0xOS4zYy0zLjYtMy41LTEuNi05LjUgMy4zLTEwLjJsMjcuNC00IDEyLjItMjQuOGMyLjItNC41IDguNi00LjQgMTAuNyAwbDEyLjIgMjQuOCAyNy40IDRjNSAuNyA2LjkgNi43IDMuNCAxMC4yek02MjQgMzIwaC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI4OEgwdjE3NmMwIDguOCA3LjIgMTYgMTYgMTZoOTZjOC44IDAgMTYtNy4yIDE2LTE2di04MGgxOTJ2ODBjMCA4LjggNy4yIDE2IDE2IDE2aDk2YzguOCAwIDE2LTcuMiAxNi0xNlYzNTJoMzJ2NDMuM2MwIDQxLjggMzAgODAuMSA3MS42IDg0LjMgNDcuOCA0LjkgODguNC0zMi43IDg4LjQtNzkuNnYtNjRjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXN0cm9vbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMTI4YzM1LjMgMCA2NC0yOC43IDY0LTY0UzE2My4zIDAgMTI4IDAgNjQgMjguNyA2NCA2NHMyOC43IDY0IDY0IDY0em0zODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NFM1NDcuMyAwIDUxMiAwcy02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6bTEyNy4zIDIyNi41bC00NS42LTE4NS44Yy0zLjMtMTMuNS0xNS41LTIzLTI5LjgtMjQuMi0xNSA5LjctMzIuOCAxNS41LTUyIDE1LjUtMTkuMiAwLTM3LTUuOC01Mi0xNS41LTE0LjMgMS4yLTI2LjUgMTAuNy0yOS44IDI0LjJsLTQ1LjYgMTg1LjhDMzgxIDM2OS42IDM5MyAzODQgNDA5LjIgMzg0SDQ2NHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMzg0aDU0LjhjMTYuMiAwIDI4LjItMTQuNCAyNC41LTI5LjV6TTMzNiAwaC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4MGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjE2YzAtOC44LTcuMi0xNi0xNi0xNnpNMTgwLjEgMTQ0LjRjLTE1IDkuOC0zMi45IDE1LjYtNTIuMSAxNS42LTE5LjIgMC0zNy4xLTUuOC01Mi4xLTE1LjZDNTEuMyAxNDYuNSAzMiAxNjYuOSAzMiAxOTJ2MTM2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDh2MTM2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0VjM1Mmg4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE5MmMwLTI1LjEtMTkuMy00NS41LTQzLjktNDcuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmV0d2VldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjkuNjU3IDM0My41OThMNTI4Ljk3MSA0NDQuMjg0Yy05LjM3MyA5LjM3Mi0yNC41NjggOS4zNzItMzMuOTQxIDBMMzk0LjM0MyAzNDMuNTk4Yy05LjM3My05LjM3My05LjM3My0yNC41NjkgMC0zMy45NDFsMTAuODIzLTEwLjgyM2M5LjU2Mi05LjU2MiAyNS4xMzMtOS4zNCAzNC40MTkuNDkyTDQ4MCAzNDIuMTE4VjE2MEgyOTIuNDUxYTI0LjAwNSAyNC4wMDUgMCAwIDEtMTYuOTcxLTcuMDI5bC0xNi0xNkMyNDQuMzYxIDEyMS44NTEgMjU1LjA2OSA5NiAyNzYuNDUxIDk2SDUyMGMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MjIyLjExOGw0MC40MTYtNDIuNzkyYzkuMjg1LTkuODMxIDI0Ljg1Ni0xMC4wNTQgMzQuNDE5LS40OTJsMTAuODIzIDEwLjgyM2M5LjM3MiA5LjM3MiA5LjM3MiAyNC41NjktLjAwMSAzMy45NDF6bS0yNjUuMTM4IDE1LjQzMUEyMy45OTkgMjMuOTk5IDAgMCAwIDM0Ny41NDggMzUySDE2MFYxNjkuODgxbDQwLjQxNiA0Mi43OTJjOS4yODYgOS44MzEgMjQuODU2IDEwLjA1NCAzNC40MTkuNDkxbDEwLjgyMi0xMC44MjJjOS4zNzMtOS4zNzMgOS4zNzMtMjQuNTY5IDAtMzMuOTQxTDE0NC45NzEgNjcuNzE2Yy05LjM3My05LjM3My0yNC41NjktOS4zNzMtMzMuOTQxIDBMMTAuMzQzIDE2OC40MDJjLTkuMzczIDkuMzczLTkuMzczIDI0LjU2OSAwIDMzLjk0MWwxMC44MjIgMTAuODIyYzkuNTYyIDkuNTYyIDI1LjEzMyA5LjM0IDM0LjQxOS0uNDkxTDk2IDE2OS44ODFWMzkyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgyNDMuNTQ5YzIxLjM4MiAwIDMyLjA5LTI1Ljg1MSAxNi45NzEtNDAuOTcxbC0xNi4wMDEtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJpYmJvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjEgNDQ0LjNjLTkuNiAxMC44LTcuNSAyNy42IDQuNSAzNS43bDY4LjggMjcuOWM5LjkgNi43IDIzLjMgNSAzMS4zLTMuOGw5MS44LTEwMS45LTc5LjItODcuOS0xMTcuMiAxMzB6bTQzNS44IDBzLTI5Mi0zMjQuNi0yOTUuNC0zMzAuMWMxNS40LTguNCA0MC4yLTE3LjkgNzcuNS0xNy45czYyLjEgOS41IDc3LjUgMTcuOWMtMy4zIDUuNi01NiA2NC42LTU2IDY0LjZsNzkuMSA4Ny43IDM0LjItMzhjMjguNy0zMS45IDMzLjMtNzguNiAxMS40LTExNS41bC00My43LTczLjVjLTQuMy03LjItOS45LTEzLjMtMTYuOC0xOC00MC43LTI3LjYtMTI3LjQtMjkuNy0xNzEuNCAwLTYuOSA0LjctMTIuNSAxMC44LTE2LjggMThsLTQzLjYgNzMuMmMtMS41IDIuNS0zNy4xIDYyLjIgMTEuNSAxMTZMMzM3LjUgNTA0YzggOC45IDIxLjQgMTAuNSAzMS4zIDMuOGw2OC44LTI3LjljMTEuOS04IDE0LTI0LjggNC4zLTM1LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDY0QzExMC4wNiA2NCAwIDEyNS45MSAwIDIwOHY5OC4xM0MwIDM4NC40OCAxMTQuNjIgNDQ4IDI1NiA0NDhzMjU2LTYzLjUyIDI1Ni0xNDEuODdWMjA4YzAtODIuMDktMTEwLjA2LTE0NC0yNTYtMTQ0em0wIDY0YzEwNi4wNCAwIDE5MiAzNS44MiAxOTIgODAgMCA5LjI2LTMuOTcgMTguMTItMTAuOTEgMjYuMzlDMzkyLjE1IDIwOC4yMSAzMjguMjMgMTkyIDI1NiAxOTJzLTEzNi4xNSAxNi4yMS0xODEuMDkgNDIuMzlDNjcuOTcgMjI2LjEyIDY0IDIxNy4yNiA2NCAyMDhjMC00NC4xOCA4NS45Ni04MCAxOTItODB6TTEyMC40MyAyNjQuNjRDMTU1LjA0IDI0OS45MyAyMDEuNjQgMjQwIDI1NiAyNDBzMTAwLjk2IDkuOTMgMTM1LjU3IDI0LjY0QzM1Ni44NCAyNzkuMDcgMzA4LjkzIDI4OCAyNTYgMjg4cy0xMDAuODQtOC45My0xMzUuNTctMjMuMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTczLjE5IDQwMi42N2wtMTM5Ljc5LTMyMEM0MjguNDMgNzEuMjkgNDE3LjYgNjQgNDA1LjY4IDY0aC05Ny41OWwyLjQ1IDIzLjE2Yy41IDQuNzItMy4yMSA4Ljg0LTcuOTYgOC44NGgtMjkuMTZjLTQuNzUgMC04LjQ2LTQuMTItNy45Ni04Ljg0TDI2Ny45MSA2NGgtOTcuNTljLTExLjkzIDAtMjIuNzYgNy4yOS0yNy43MyAxOC42N0wyLjggNDAyLjY3Qy02LjQ1IDQyMy44NiA4LjMxIDQ0OCAzMC41NCA0NDhoMTk2Ljg0bDEwLjMxLTk3LjY4Yy44Ni04LjE0IDcuNzItMTQuMzIgMTUuOTEtMTQuMzJoNjguOGM4LjE5IDAgMTUuMDUgNi4xOCAxNS45MSAxNC4zMkwzNDguNjIgNDQ4aDE5Ni44NGMyMi4yMyAwIDM2Ljk5LTI0LjE0IDI3LjczLTQ1LjMzek0yNjAuNCAxMzUuMTZhOCA4IDAgMCAxIDcuOTYtNy4xNmgzOS4yOWM0LjA5IDAgNy41MyAzLjA5IDcuOTYgNy4xNmw0LjYgNDMuNThjLjc1IDcuMDktNC44MSAxMy4yNi0xMS45MyAxMy4yNmgtNDAuNTRjLTcuMTMgMC0xMi42OC02LjE3LTExLjkzLTEzLjI2bDQuNTktNDMuNTh6TTMxNS42NCAzMDRoLTU1LjI5Yy05LjUgMC0xNi45MS04LjIzLTE1LjkxLTE3LjY4bDUuMDctNDhjLjg2LTguMTQgNy43Mi0xNC4zMiAxNS45MS0xNC4zMmg0NS4xNWM4LjE5IDAgMTUuMDUgNi4xOCAxNS45MSAxNC4zMmw1LjA3IDQ4YzEgOS40NS02LjQxIDE3LjY4LTE1LjkxIDE3LjY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2JvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiwyMjRINjRWNDE2SDMyQTMxLjk2MTY2LDMxLjk2MTY2LDAsMCwxLDAsMzg0VjI1NkEzMS45NjE2NiwzMS45NjE2NiwwLDAsMSwzMiwyMjRabTUxMi00OFY0NDhhNjQuMDYzMjgsNjQuMDYzMjgsMCwwLDEtNjQsNjRIMTYwYTY0LjA2MzI4LDY0LjA2MzI4LDAsMCwxLTY0LTY0VjE3NmE3OS45NzQsNzkuOTc0LDAsMCwxLDgwLTgwSDI4OFYzMmEzMiwzMiwwLDAsMSw2NCwwVjk2SDQ2NEE3OS45NzQsNzkuOTc0LDAsMCwxLDU0NCwxNzZaTTI2NCwyNTZhNDAsNDAsMCwxLDAtNDAsNDBBMzkuOTk3LDM5Ljk5NywwLDAsMCwyNjQsMjU2Wm0tOCwxMjhIMTkydjMyaDY0Wm05NiwwSDI4OHYzMmg2NFpNNDU2LDI1NmE0MCw0MCwwLDEsMC00MCw0MEEzOS45OTcsMzkuOTk3LDAsMCwwLDQ1NiwyNTZabS04LDEyOEgzODR2MzJoNjRaTTY0MCwyNTZWMzg0YTMxLjk2MTY2LDMxLjk2MTY2LDAsMCwxLTMyLDMySDU3NlYyMjRoMzJBMzEuOTYxNjYsMzEuOTYxNjYsMCwwLDEsNjQwLDI1NlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9ja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNS4xMjAxOSwxOS4wOTM3NWMtMS4xODk0NS01LjUzMTI1LTYuNjU4MTktMTEtMTIuMjA3LTEyLjE4NzVDNDYwLjcxNiwwLDQzNS41MDcsMCw0MTAuNDA3NDcsMCwzMDcuMTc1MjMsMCwyNDUuMjY5MDksNTUuMjAzMTIsMTk5LjA1MjM4LDEyOEg5NC44Mzc3MmMtMTYuMzQ3NjMuMDE1NjItMzUuNTU2NTgsMTEuODc1LTQyLjg4NjY0LDI2LjQ4NDM4TDIuNTE1NjIsMjUzLjI5Njg4QTI4LjQsMjguNCwwLDAsMCwwLDI2NGEyNC4wMDg2NywyNC4wMDg2NywwLDAsMCwyNC4wMDU4MiwyNEgxMjcuODE2MThsLTIyLjQ3NDU3LDIyLjQ2ODc1Yy0xMS4zNjUyMSwxMS4zNjEzMy0xMi45OTYwNywzMi4yNTc4MSwwLDQ1LjI1TDE1Ni4yNDU4Miw0MDYuNjI1YzExLjE1NjIzLDExLjE4NzUsMzIuMTU2MTksMTMuMTU2MjUsNDUuMjc3MjYsMGwyMi40NzQ1Ny0yMi40Njg3NVY0ODhhMjQuMDA4NjcsMjQuMDA4NjcsMCwwLDAsMjQuMDA1ODEsMjQsMjguNTU5MzQsMjguNTU5MzQsMCwwLDAsMTAuNzA3LTIuNTE1NjJsOTguNzI4MzQtNDkuMzkwNjNjMTQuNjI4ODgtNy4yOTY4NywyNi41MDc3Ni0yNi41LDI2LjUwNzc2LTQyLjg1OTM3VjMxMi43OTY4OGM3Mi41OTc1My00Ni4zMTI1LDEyOC4wMzQ5My0xMDguNDA2MjYsMTI4LjAzNDkzLTIxMS4wOTM3NkM1MTIuMDc1MjYsNzYuNSw1MTIuMDc1MjYsNTEuMjk2ODgsNTA1LjEyMDE5LDE5LjA5Mzc1Wk0zODQuMDQwMzMsMTY4QTQwLDQwLDAsMSwxLDQyNC4wNSwxMjgsNDAuMDIzMjIsNDAuMDIzMjIsMCwwLDEsMzg0LjA0MDMzLDE2OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm91dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDMyMGgtOTZjLTE3LjYgMC0zMi0xNC40LTMyLTMyczE0LjQtMzIgMzItMzJoOTZzOTYtMTA3IDk2LTE2MC00My05Ni05Ni05Ni05NiA0My05NiA5NmMwIDI1LjUgMjIuMiA2My40IDQ1LjMgOTZIMzIwYy01Mi45IDAtOTYgNDMuMS05NiA5NnM0My4xIDk2IDk2IDk2aDk2YzE3LjYgMCAzMiAxNC40IDMyIDMycy0xNC40IDMyLTMyIDMySDE4NS41Yy0xNiAyNC44LTMzLjggNDcuNy00Ny4zIDY0SDQxNmM1Mi45IDAgOTYtNDMuMSA5Ni05NnMtNDMuMS05Ni05Ni05NnptMC0yNTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyek05NiAyNTZjLTUzIDAtOTYgNDMtOTYgOTZzOTYgMTYwIDk2IDE2MCA5Ni0xMDcgOTYtMTYwLTQzLTk2LTk2LTk2em0wIDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJzc1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDM1MmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6TTExMiA0MTZjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bTE1Ny41MzMgMGgtMzQuMzM1Yy02LjAxMSAwLTExLjA1MS00LjYzNi0xMS40NDItMTAuNjM0LTUuMjE0LTgwLjA1LTY5LjI0My0xNDMuOTItMTQ5LjEyMy0xNDkuMTIzLTUuOTk3LS4zOS0xMC42MzMtNS40MzEtMTAuNjMzLTExLjQ0MXYtMzQuMzM1YzAtNi41MzUgNS40NjgtMTEuNzc3IDExLjk5NC0xMS40MjUgMTEwLjU0NiA1Ljk3NCAxOTguOTk3IDk0LjUzNiAyMDQuOTY0IDIwNC45NjQuMzUyIDYuNTI2LTQuODkgMTEuOTk0LTExLjQyNSAxMS45OTR6bTEwMy4wMjcgMGgtMzQuMzM0Yy02LjE2MSAwLTExLjE3NS00Ljg4Mi0xMS40MjctMTEuMDM4LTUuNTk4LTEzNi41MzUtMTE1LjIwNC0yNDYuMTYxLTI1MS43Ni0yNTEuNzZDNjguODgyIDE1Mi45NDkgNjQgMTQ3LjkzNSA2NCAxNDEuNzc0VjEwNy40NGMwLTYuNDU0IDUuMzM4LTExLjY2NCAxMS43ODctMTEuNDMyIDE2Ny44MyA2LjAyNSAzMDIuMjEgMTQxLjE5MSAzMDguMjA1IDMwOC4yMDUuMjMyIDYuNDQ5LTQuOTc4IDExLjc4Ny0xMS40MzIgMTEuNzg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4LjA4MSA0MTUuOTU5YzAgMzUuMzY5LTI4LjY3MiA2NC4wNDEtNjQuMDQxIDY0LjA0MVMwIDQ1MS4zMjggMCA0MTUuOTU5czI4LjY3Mi02NC4wNDEgNjQuMDQxLTY0LjA0MSA2NC4wNCAyOC42NzMgNjQuMDQgNjQuMDQxem0xNzUuNjYgNDcuMjVjLTguMzU0LTE1NC42LTEzMi4xODUtMjc4LjU4Ny0yODYuOTUtMjg2Ljk1QzcuNjU2IDE3NS43NjUgMCAxODMuMTA1IDAgMTkyLjI1M3Y0OC4wNjljMCA4LjQxNSA2LjQ5IDE1LjQ3MiAxNC44ODcgMTYuMDE4IDExMS44MzIgNy4yODQgMjAxLjQ3MyA5Ni43MDIgMjA4Ljc3MiAyMDguNzcyLjU0NyA4LjM5NyA3LjYwNCAxNC44ODcgMTYuMDE4IDE0Ljg4N2g0OC4wNjljOS4xNDkuMDAxIDE2LjQ4OS03LjY1NSAxNS45OTUtMTYuNzl6bTE0NC4yNDkuMjg4QzQzOS41OTYgMjI5LjY3NyAyNTEuNDY1IDQwLjQ0NSAxNi41MDMgMzIuMDEgNy40NzMgMzEuNjg2IDAgMzguOTgxIDAgNDguMDE2djQ4LjA2OGMwIDguNjI1IDYuODM1IDE1LjY0NSAxNS40NTMgMTUuOTk5IDE5MS4xNzkgNy44MzkgMzQ0LjYyNyAxNjEuMzE2IDM1Mi40NjUgMzUyLjQ2NS4zNTMgOC42MTggNy4zNzMgMTUuNDUzIDE1Ljk5OSAxNS40NTNoNDguMDY4YzkuMDM0LS4wMDEgMTYuMzI5LTcuNDc0IDE2LjAwNS0xNi41MDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1YmxlU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzkuMzYgMzIwQzMyNC40OCAzMjAgMzg0IDI2MC41NDIgMzg0IDE3NS4wNzFTMzI0LjQ4IDMyIDIzOS4zNiAzMkg3NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyMDYuNjMySDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEyVjMwOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDUydjMySDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNTJ2NTJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg1OC41NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi01MkgzMDhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxNDYuNTZ2LTMyaDkyLjh6bS05Mi44LTIxOS4yNTJoNzguNzJjNDYuNzIgMCA3NC44OCAyOS4xMSA3NC44OCA3NC4zMjMgMCA0NS44MzItMjguMTYgNzUuNTYxLTc2LjE2IDc1LjU2MWgtNzcuNDRWMTAwLjc0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVsZXJDb21iaW5lZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMjg4aC01NmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDU2di02NGgtNTZjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGg1NlY5NmgtNTZjLTQuNDIgMC04LTMuNTgtOC04VjcyYzAtNC40MiAzLjU4LTggOC04aDU2VjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgMCAwIDE0LjMzIDAgMzJ2NDQ4YzAgMi43Ny45MSA1LjI0IDEuNTcgNy44TDE2MCAzMjkuMzhWMjg4em0zMjAgNjRoLTMydjU2YzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTU2aC02NHY1NmMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di01NmgtNjR2NTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtNTZoLTQxLjM3TDI0LjIgNTEwLjQzYzIuNTYuNjYgNS4wNCAxLjU3IDcuOCAxLjU3aDQ0OGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdWxlckhvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDEyOGgtNDh2ODhjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtODhoLTY0djg4YzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTg4aC02NHY4OGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di04OGgtNjR2ODhjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtODhoLTY0djg4YzAgNC40Mi0zLjU4IDgtOCA4SDg4Yy00LjQyIDAtOC0zLjU4LTgtOHYtODhIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTkyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTEyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMTYwYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1bGVyVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY4IDQxNmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDg4di02NGgtODhjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGg4OHYtNjRoLTg4Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoODh2LTY0aC04OGMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDg4VjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgMCAwIDE0LjMzIDAgMzJ2NDQ4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTkyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0aC04OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjM1LjcgMTY3LjJMNTU2LjEgMzEuN2MtOC44LTE1LTI4LjMtMjAuMS00My41LTExLjVsLTY5IDM5LjFMNTAzLjMgMTYxYzIuMiAzLjguOSA4LjUtMi45IDEwLjdsLTEzLjggNy44Yy0zLjggMi4yLTguNy45LTEwLjktMi45TDQxNiA3NWwtNTUuMiAzMS4zIDI3LjkgNDcuNGMyLjIgMy44LjkgOC41LTIuOSAxMC43bC0xMy44IDcuOGMtMy44IDIuMi04LjcuOS0xMC45LTIuOUwzMzMuMiAxMjIgMjc4IDE1My4zIDMzNy44IDI1NWMyLjIgMy43LjkgOC41LTIuOSAxMC43bC0xMy44IDcuOGMtMy44IDIuMi04LjcuOS0xMC45LTIuOWwtNTkuNy0xMDEuNy01NS4yIDMxLjMgMjcuOSA0Ny40YzIuMiAzLjguOSA4LjUtMi45IDEwLjdsLTEzLjggNy44Yy0zLjggMi4yLTguNy45LTEwLjktMi45bC0yNy45LTQ3LjUtNTUuMiAzMS4zIDU5LjcgMTAxLjdjMi4yIDMuNy45IDguNS0yLjkgMTAuN2wtMTMuOCA3LjhjLTMuOCAyLjItOC43LjktMTAuOS0yLjlMODQuOSAyNjIuOWwtNjkgMzkuMUMuNyAzMTAuNy00LjYgMzI5LjggNC4yIDM0NC44bDc5LjYgMTM1LjZjOC44IDE1IDI4LjMgMjAuMSA0My41IDExLjVMNjI0LjEgMjEwYzE1LjItOC42IDIwLjQtMjcuOCAxMS42LTQyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1bm5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDk2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhTMjk4LjUxIDAgMjcyIDBzLTQ4IDIxLjQ5LTQ4IDQ4IDIxLjQ5IDQ4IDQ4IDQ4ek0xMTMuNjkgMzE3LjQ3bC0xNC44IDM0LjUySDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyaDc3LjQ1YzE5LjI1IDAgMzYuNTgtMTEuNDQgNDQuMTEtMjkuMDlsOC43OS0yMC41Mi0xMC42Ny02LjNjLTE3LjMyLTEwLjIzLTMwLjA2LTI1LjM3LTM3Ljk5LTQyLjYxek0zODQgMjIzLjk5aC00NC4wM2wtMjYuMDYtNTMuMjVjLTEyLjUtMjUuNTUtMzUuNDUtNDQuMjMtNjEuNzgtNTAuOTRsLTcxLjA4LTIxLjE0Yy0yOC4zLTYuOC01Ny43Ny0uNTUtODAuODQgMTcuMTRsLTM5LjY3IDMwLjQxYy0xNC4wMyAxMC43NS0xNi42OSAzMC44My01LjkyIDQ0Ljg2czMwLjg0IDE2LjY2IDQ0Ljg2IDUuOTJsMzkuNjktMzAuNDFjNy42Ny01Ljg5IDE3LjQ0LTggMjUuMjctNi4xNGwxNC43IDQuMzctMzcuNDYgODcuMzljLTEyLjYyIDI5LjQ4LTEuMzEgNjQuMDEgMjYuMyA4MC4zMWw4NC45OCA1MC4xNy0yNy40NyA4Ny43M2MtNS4yOCAxNi44NiA0LjExIDM0LjgxIDIwLjk3IDQwLjA5IDMuMTkgMSA2LjQxIDEuNDggOS41OCAxLjQ4IDEzLjYxIDAgMjYuMjMtOC43NyAzMC41Mi0yMi40NWwzMS42NC0xMDEuMDZjNS45MS0yMC43Ny0yLjg5LTQzLjA4LTIxLjY0LTU0LjM5bC02MS4yNC0zNi4xNCAzMS4zMS03OC4yOCAyMC4yNyA0MS40M2M4IDE2LjM0IDI0LjkyIDI2Ljg5IDQzLjExIDI2Ljg5SDM4NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMycy0xNC4zMy0zMS45OS0zMi0zMS45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVwZWVTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwOCA5NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyVjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJDNS4zNzMgMzIgMCAzNy4zNzMgMCA0NHY0NC43NDhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg4NS4yOGMyNy4zMDggMCA0OC4yNjEgOS45NTggNjAuOTcgMjcuMjUySDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTU4Ljc1N2MtNi4yMTcgMzYuMDg2LTMyLjk2MSA1OC42MzItNzQuNzU3IDU4LjYzMkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY1My4wMTJjMCAzLjM0OSAxLjQgNi41NDYgMy44NjEgOC44MThsMTY1LjA1MiAxNTIuMzU2YTEyLjAwMSAxMi4wMDEgMCAwIDAgOC4xMzkgMy4xODJoODIuNTYyYzEwLjkyNCAwIDE2LjE2Ni0xMy40MDggOC4xMzktMjAuODE4TDExNi44NzEgMzE5LjkwNmM3Ni40OTktMi4zNCAxMzEuMTQ0LTUzLjM5NSAxMzguMzE4LTEyNy45MDZIMzA4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTU4LjY5Yy0zLjQ4Ni0xMS41NDEtOC4yOC0yMi4yNDYtMTQuMjUyLTMySDMwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2FkQ3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2YzAgOTAuMSA0OC4yIDE2OC43IDEyMCAyMTIuMVYyODhjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYxOTYuN2MyOS41IDEyLjQgNjIgMTkuMyA5NiAxOS4zczY2LjUtNi45IDk2LTE5LjNWMjg4YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2MTgwLjFDNDQ3LjggNDI0LjcgNDk2IDM0NiA0OTYgMjU2IDQ5NiAxMTkgMzg1IDggMjQ4IDh6bS02NS41IDIxNi41Yy0xNC44LTEzLjItNDYuMi0xMy4yLTYxIDBMMTEyIDIzM2MtMy44IDMuMy05LjMgNC0xMy43IDEuNi00LjQtMi40LTYuOS03LjQtNi4xLTEyLjQgNC0yNS4yIDM0LjItNDIuMSA1OS45LTQyLjFTMjA4IDE5NyAyMTIgMjIyLjJjLjggNS0xLjcgMTAtNi4xIDEyLjQtNS44IDMuMS0xMS4yLjctMTMuNy0xLjZsLTkuNy04LjV6TTI0OCA0MTZjLTI2LjUgMC00OC0yOC43LTQ4LTY0czIxLjUtNjQgNDgtNjQgNDggMjguNyA0OCA2NC0yMS41IDY0LTQ4IDY0em0xNDkuOC0xODEuNWMtNS44IDMuMS0xMS4yLjctMTMuNy0xLjZsLTkuNS04LjVjLTE0LjgtMTMuMi00Ni4yLTEzLjItNjEgMEwzMDQgMjMzYy0zLjggMy4zLTkuMyA0LTEzLjcgMS42LTQuNC0yLjQtNi45LTcuNC02LjEtMTIuNCA0LTI1LjIgMzQuMi00Mi4xIDU5LjktNDIuMVM0MDAgMTk3IDQwNCAyMjIuMmMuNiA0LjktMS44IDkuOS02LjIgMTIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2FkVGVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em04MCAxNjhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyek0xNTIgNDE2Yy0yNi41IDAtNDgtMjEtNDgtNDcgMC0yMCAyOC41LTYwLjQgNDEuNi03Ny44IDMuMi00LjMgOS42LTQuMyAxMi44IDBDMTcxLjUgMzA4LjYgMjAwIDM0OSAyMDAgMzY5YzAgMjYtMjEuNSA0Ny00OCA0N3ptMTYtMTc2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTcwLjIgMTU0LjJDMzE1LjggMzY3LjQgMjgyLjkgMzUyIDI0OCAzNTJjLTIxLjIgMC0yMS4yLTMyIDAtMzIgNDQuNCAwIDg2LjMgMTkuNiAxMTQuNyA1My44IDEzLjggMTYuNC0xMS4yIDM2LjUtMjQuNSAyMC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYXRlbGxpdGVEaXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNS40NDk1NCw0NjIuNTljNy4zOTE1Nyw3LjI5NzkyLDYuMTg4MjksMjAuMDk2NjEtMy4wMDAzOCwyNS4wMDM1Ni03Ny43MTMsNDEuODAyODEtMTc2LjcyNTU5LDI5LjkxMDUtMjQyLjM0MzMxLTM1LjcwODJDLTUuNDk2MjQsMzg2LjI4MjI3LTE3LjQwNCwyODcuMzYyLDI0LjQxMzgxLDIwOS41NTRjNC44OTEyNS05LjA5NSwxNy42ODk3NS0xMC4yOTgzNCwyNS4wMDMxOC0zLjAwMDQzTDE2Ni4yMjg3MiwzMjMuMzY3MDhsMjcuMzk0MTEtMjcuMzk0NTJjLS42ODc1OS0yLjYwOTc0LTEuNTk0LTUuMDAwNzEtMS41OTQtNy44MTM2MWEzMi4wMDQwNywzMi4wMDQwNywwLDEsMSwzMi4wMDQwNywzMi4wMDQ1NWMtMi43OTcyMywwLTUuMjAzNzgtLjg5MDc1LTcuNzk3ODYtMS41OTRsLTI3LjQwOTc0LDI3LjQxMDE1Wk01MTEuOTc1OCwzMDMuMDY3MzJhMTYuMTAzMzYsMTYuMTAzMzYsMCwwLDEtMTYuMDAyLDE3LjAwMjQySDQ2My44NjAzMWExNS45Njk1NiwxNS45Njk1NiwwLDAsMS0xNS44OTI2NS0xNS4wMDIxM0M0NDAuNDY2NzEsMTc1LjU0OTIsMzM2LjQ1MzQ4LDcwLjUzNDI3LDIwNy4wMzA3OCw2My41MzMyOGExNS44NDQ4NiwxNS44NDQ4NiwwLDAsMS0xNS4wMDE5MS0xNS45MDg1MlYxNi4wMjY1MkExNi4wOTM4OSwxNi4wOTM4OSwwLDAsMSwyMDkuMDMxLjAyNDI1QzM3Mi4yNTQ5MSw4LjYxOTIyLDUwMy40NzQ3MiwxMzkuODQxLDUxMS45NzU4LDMwMy4wNjczMlptLTk2LjAxMjIxLS4yOTY5MmExNi4yMTA5MywxNi4yMTA5MywwLDAsMS0xNi4xMTE0MiwxNy4yOTkzNEgzNjcuNjQ1YTE2LjA2ODYyLDE2LjA2ODYyLDAsMCwxLTE1Ljg5MjY1LTE0LjcwNTIyYy02LjkwNzEyLTc3LjAxMDk0LTY4LjExOC0xMzguOTEwMzctMTQ0LjkyNDY3LTE0NS4yMjM3NmExNS45NCwxNS45NCwwLDAsMS0xNC43OTg3Ni0xNS44OTI4OVYxMTIuMTMzOTNhMTYuMTM0LDE2LjEzNCwwLDAsMSwxNy4yOTkwOC0xNi4wOTZDMzE5LjQ1MTMyLDEwNC41MzkxLDQwNy41NTYyNywxOTIuNjQ1MzgsNDE1Ljk2MzU5LDMwMi43NzA0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYXRlbGxpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAyLjYwOTY5LDMxMC4wNDIwNmwtOTYuNzAzOTMsOTYuNzE2MjVhMzEuODgxNTEsMzEuODgxNTEsMCwwLDEtNDUuMDA3NjUsMEwyODAuNTcyLDMyNi4zNDExNWwtOS44OTIzMSw5LjkwNzU5YTE5MC41NjM0MywxOTAuNTYzNDMsMCwwLDEtNS40MDcxNiwxNjguNTIyODdjLTQuNTAwNzcsOC41MDExNS0xNi4zOTM0Miw5LjU5NTA1LTIzLjIwNzA3LDIuNzk3MjVMMTM0LjU0NzE1LDQwMC4wNTQyOGwtMTcuNzk5OSwxNy43OTkyOWMuNzAzMjQsMi42MDk3MiwxLjYwOTY1LDUuMDAwNjcsMS42MDk2NSw3Ljc5NzkzYTMyLjAwNTQ0LDMyLjAwNTQ0LDAsMSwxLTMyLjAwNTQ0LTMyLjAwNDM0YzIuNzk3MzUsMCw1LjE4ODM4LjkwNjM3LDcuNzk4MiwxLjYwOTU5bDE3Ljc5OTktMTcuNzk5MjlMNC40MzEyOSwyNjkuOTQyODdjLTYuNzk4LTYuODEzNDItNS43MDQwOS0xOC42MTE5LDIuNzk3MzUtMjMuMjA2MjdhMTkwLjU4MTYxLDE5MC41ODE2MSwwLDAsMSwxNjguNTI4NjQtNS40MDdsOS43OTg1NC05Ljc5ODIxLTgwLjMxMDUzLTgwLjQxNzE2YTMyLjAwMiwzMi4wMDIsMCwwLDEsMC00NS4wOTk4N0wyMDEuOTY0NzQsOS4yOTgxNEEzMS42MjYzOSwzMS42MjYzOSwwLDAsMSwyMjQuNDY4NjgsMGEzMS45OTk1MSwzMS45OTk1MSwwLDAsMSwyMi41OTc1OSw5LjI5ODE0bDgwLjMyNjE1LDgwLjMwNzc3LDQ3LjgwNS00Ny44OTcxM2EzMy42MDc1LDMzLjYwNzUsMCwwLDEsNDcuNTA4MDgsMGw0Ny41MDgwNyw0Ny41MDY0NWEzMy42MzMwOCwzMy42MzMwOCwwLDAsMSwwLDQ3LjUwNjQ0bC00Ny44MDUsNDcuODk3MTNMNTAyLjcxOTA4LDI2NS4wMzZBMzEuNzg5MzgsMzEuNzg5MzgsMCwwLDEsNTAyLjYwOTY5LDMxMC4wNDIwNlpNMjE5LjU2MTU5LDE5Ny40MzNsNzMuODI1MDUtNzMuODIyNTItNjguOTE4LTY4LjktNzMuODA5NDIsNzMuODA2ODlabTIzNy43NDM1Miw5MC4xMDYtNjguOTAyMzMtNjguOTE1Ni03My44MjUsNzMuODIyNTIsNjguOTE4LDY4LjlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMzLjk0MSAxMjkuOTQxbC04My44ODItODMuODgyQTQ4IDQ4IDAgMCAwIDMxNi4xMTggMzJINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDM1MmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjE2My44ODJhNDggNDggMCAwIDAtMTQuMDU5LTMzLjk0MXpNMjI0IDQxNmMtMzUuMzQ2IDAtNjQtMjguNjU0LTY0LTY0IDAtMzUuMzQ2IDI4LjY1NC02NCA2NC02NHM2NCAyOC42NTQgNjQgNjRjMCAzNS4zNDYtMjguNjU0IDY0LTY0IDY0em05Ni0zMDQuNTJWMjEyYzAgNi42MjctNS4zNzMgMTItMTIgMTJINzZjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJWMTA4YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMjI4LjUyYzMuMTgzIDAgNi4yMzUgMS4yNjQgOC40ODUgMy41MTVsMy40OCAzLjQ4QTExLjk5NiAxMS45OTYgMCAwIDEgMzIwIDExMS40OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2Nob29sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjI0djI3MmMwIDguODQgNy4xNiAxNiAxNiAxNmg4MFYxOTJIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ6bTM2MC00OGgtMjR2LTQwYzAtNC40Mi0zLjU4LTgtOC04aC0xNmMtNC40MiAwLTggMy41OC04IDh2NjRjMCA0LjQyIDMuNTggOCA4IDhoNDhjNC40MiAwIDgtMy41OCA4LTh2LTE2YzAtNC40Mi0zLjU4LTgtOC04em0xMzcuNzUtNjMuOTZsLTE2MC0xMDYuNjdhMzIuMDIgMzIuMDIgMCAwIDAtMzUuNSAwbC0xNjAgMTA2LjY3QTMyLjAwMiAzMi4wMDIgMCAwIDAgMTI4IDEzOC42NlY1MTJoMTI4VjM2OGMwLTguODQgNy4xNi0xNiAxNi0xNmg5NmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYxNDRoMTI4VjEzOC42N2MwLTEwLjctNS4zNS0yMC43LTE0LjI1LTI2LjYzek0zMjAgMjU2Yy00NC4xOCAwLTgwLTM1LjgyLTgwLTgwczM1LjgyLTgwIDgwLTgwIDgwIDM1LjgyIDgwIDgwLTM1LjgyIDgwLTgwIDgwem0yODgtNjRoLTY0djMyMGg4MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyMjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NyZXdkcml2ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDBMMzIwIDk2djYyLjA2bC04My4wMyA4My4wM2M2Ljc5IDQuMjUgMTMuMjcgOS4wNiAxOS4wNyAxNC44NyA1LjggNS44IDEwLjYyIDEyLjI4IDE0Ljg3IDE5LjA3TDM1My45NCAxOTJINDE2bDk2LTEyOC02NC02NHpNMTI4IDI3OC41OUwxMC45MiAzOTUuNjdjLTE0LjU1IDE0LjU1LTE0LjU1IDM4LjE1IDAgNTIuNzFsNTIuNyA1Mi43YzE0LjU2IDE0LjU2IDM4LjE1IDE0LjU2IDUyLjcxIDBMMjMzLjQxIDM4NGMyOS4xMS0yOS4xMSAyOS4xMS03Ni4zIDAtMTA1LjQxcy03Ni4zLTI5LjExLTEwNS40MSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY3JvbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMEMyMS41MyAwIDAgMjEuNTMgMCA0OHY2NGMwIDguODQgNy4xNiAxNiAxNiAxNmg4MFY0OEM5NiAyMS41MyA3NC40NyAwIDQ4IDB6bTIwOCA0MTIuNTdWMzUyaDI4OFY5NmMwLTUyLjk0LTQzLjA2LTk2LTk2LTk2SDExMS41OUMxMjEuNzQgMTMuNDEgMTI4IDI5LjkyIDEyOCA0OHYzNjhjMCAzOC44NyAzNC42NSA2OS42NSA3NC43NSA2My4xMkMyMzQuMjIgNDc0IDI1NiA0NDQuNDYgMjU2IDQxMi41N3pNMjg4IDM4NHYzMmMwIDUyLjkzLTQzLjA2IDk2LTk2IDk2aDMzNmM2MS44NiAwIDExMi01MC4xNCAxMTItMTEyIDAtOC44NC03LjE2LTE2LTE2LTE2SDI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2RDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAwSDEyOEwwIDEyOHYzMjBjMCAzNS4zIDI4LjcgNjQgNjQgNjRoMjU2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0ek0xNjAgMTYwaC00OFY2NGg0OHY5NnptODAgMGgtNDhWNjRoNDh2OTZ6bTgwIDBoLTQ4VjY0aDQ4djk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZWFyY2hEb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA1LjA0IDQ0Mi42NmwtOTkuNzEtOTkuNjljLTQuNS00LjUtMTAuNi03LTE3LTdoLTE2LjNjMjcuNi0zNS4zIDQ0LTc5LjY5IDQ0LTEyNy45OUM0MTYuMDMgOTMuMDkgMzIyLjkyIDAgMjA4LjAyIDBTMCA5My4wOSAwIDIwNy45OHM5My4xMSAyMDcuOTggMjA4LjAyIDIwNy45OGM0OC4zIDAgOTIuNzEtMTYuNCAxMjguMDEtNDR2MTYuM2MwIDYuNCAyLjUgMTIuNSA3IDE3bDk5LjcxIDk5LjY5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDI4LjMtMjguM2M5LjQtOS40IDkuNC0yNC41OS4xLTMzLjk5em0tMjk3LjAyLTkwLjdjLTc5LjU0IDAtMTQ0LTY0LjM0LTE0NC0xNDMuOTggMC03OS41MyA2NC4zNS0xNDMuOTggMTQ0LTE0My45OCA3OS41NCAwIDE0NCA2NC4zNCAxNDQgMTQzLjk4IDAgNzkuNTMtNjQuMzUgMTQzLjk4LTE0NCAxNDMuOTh6bTI3LjExLTE1Mi41NGwtNDUuMDEtMTMuNWMtNS4xNi0xLjU1LTguNzctNi43OC04Ljc3LTEyLjczIDAtNy4yNyA1LjMtMTMuMTkgMTEuOC0xMy4xOWgyOC4xMWM0LjU2IDAgOC45NiAxLjI5IDEyLjgyIDMuNzIgMy4yNCAyLjAzIDcuMzYgMS45MSAxMC4xMy0uNzNsMTEuNzUtMTEuMjFjMy41My0zLjM3IDMuMzMtOS4yMS0uNTctMTIuMTQtOS4xLTYuODMtMjAuMDgtMTAuNzctMzEuMzctMTEuMzVWMTEyYzAtNC40Mi0zLjU4LTgtOC04aC0xNmMtNC40MiAwLTggMy41OC04IDh2MTYuMTJjLTIzLjYzLjYzLTQyLjY4IDIwLjU1LTQyLjY4IDQ1LjA3IDAgMTkuOTcgMTIuOTkgMzcuODEgMzEuNTggNDMuMzlsNDUuMDEgMTMuNWM1LjE2IDEuNTUgOC43NyA2Ljc4IDguNzcgMTIuNzMgMCA3LjI3LTUuMyAxMy4xOS0xMS44IDEzLjE5aC0yOC4xYy00LjU2IDAtOC45Ni0xLjI5LTEyLjgyLTMuNzItMy4yNC0yLjAzLTcuMzYtMS45MS0xMC4xMy43M2wtMTEuNzUgMTEuMjFjLTMuNTMgMy4zNy0zLjMzIDkuMjEuNTcgMTIuMTQgOS4xIDYuODMgMjAuMDggMTAuNzcgMzEuMzcgMTEuMzVWMzA0YzAgNC40MiAzLjU4IDggOCA4aDE2YzQuNDIgMCA4LTMuNTggOC04di0xNi4xMmMyMy42My0uNjMgNDIuNjgtMjAuNTQgNDIuNjgtNDUuMDcgMC0xOS45Ny0xMi45OS0zNy44MS0zMS41OS00My4zOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VhcmNoTG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA1LjA0IDQ0Mi42NmwtOTkuNzEtOTkuNjljLTQuNS00LjUtMTAuNi03LTE3LTdoLTE2LjNjMjcuNi0zNS4zIDQ0LTc5LjY5IDQ0LTEyNy45OUM0MTYuMDMgOTMuMDkgMzIyLjkyIDAgMjA4LjAyIDBTMCA5My4wOSAwIDIwNy45OHM5My4xMSAyMDcuOTggMjA4LjAyIDIwNy45OGM0OC4zIDAgOTIuNzEtMTYuNCAxMjguMDEtNDR2MTYuM2MwIDYuNCAyLjUgMTIuNSA3IDE3bDk5LjcxIDk5LjY5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDI4LjMtMjguM2M5LjQtOS40IDkuNC0yNC41OS4xLTMzLjk5em0tMjk3LjAyLTkwLjdjLTc5LjU0IDAtMTQ0LTY0LjM0LTE0NC0xNDMuOTggMC03OS41MyA2NC4zNS0xNDMuOTggMTQ0LTE0My45OCA3OS41NCAwIDE0NCA2NC4zNCAxNDQgMTQzLjk4IDAgNzkuNTMtNjQuMzUgMTQzLjk4LTE0NCAxNDMuOTh6bS4wMi0yMzkuOTZjLTQwLjc4IDAtNzMuODQgMzMuMDUtNzMuODQgNzMuODMgMCAzMi45NiA0OC4yNiA5My4wNSA2Ni43NSAxMTQuODZhOS4yNCA5LjI0IDAgMCAwIDE0LjE4IDBjMTguNDktMjEuODEgNjYuNzUtODEuODkgNjYuNzUtMTE0Ljg2IDAtNDAuNzgtMzMuMDYtNzMuODMtNzMuODQtNzMuODN6bTAgOTZjLTEzLjI2IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZWFyY2hNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgMTkydjMyYzAgNi42LTUuNCAxMi0xMiAxMkgxMjRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMzJjMC02LjYgNS40LTEyIDEyLTEyaDE2OGM2LjYgMCAxMiA1LjQgMTIgMTJ6bTIwMSAyODQuN0w0NzYuNyA1MDVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDM0MyA0MDUuM2MtNC41LTQuNS03LTEwLjYtNy0xN1YzNzJjLTM1LjMgMjcuNi03OS43IDQ0LTEyOCA0NEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMHMyMDggOTMuMSAyMDggMjA4YzAgNDguMy0xNi40IDkyLjctNDQgMTI4aDE2LjNjNi40IDAgMTIuNSAyLjUgMTcgN2w5OS43IDk5LjdjOS4zIDkuNCA5LjMgMjQuNiAwIDM0ek0zNDQgMjA4YzAtNzUuMi02MC44LTEzNi0xMzYtMTM2UzcyIDEzMi44IDcyIDIwOHM2MC44IDEzNiAxMzYgMTM2IDEzNi02MC44IDEzNi0xMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlYXJjaFBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDE5MnYzMmMwIDYuNi01LjQgMTItMTIgMTJoLTU2djU2YzAgNi42LTUuNCAxMi0xMiAxMmgtMzJjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNTZoLTU2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTMyYzAtNi42IDUuNC0xMiAxMi0xMmg1NnYtNTZjMC02LjYgNS40LTEyIDEyLTEyaDMyYzYuNiAwIDEyIDUuNCAxMiAxMnY1Nmg1NmM2LjYgMCAxMiA1LjQgMTIgMTJ6bTIwMSAyODQuN0w0NzYuNyA1MDVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDM0MyA0MDUuM2MtNC41LTQuNS03LTEwLjYtNy0xN1YzNzJjLTM1LjMgMjcuNi03OS43IDQ0LTEyOCA0NEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMHMyMDggOTMuMSAyMDggMjA4YzAgNDguMy0xNi40IDkyLjctNDQgMTI4aDE2LjNjNi40IDAgMTIuNSAyLjUgMTcgN2w5OS43IDk5LjdjOS4zIDkuNCA5LjMgMjQuNiAwIDM0ek0zNDQgMjA4YzAtNzUuMi02MC44LTEzNi0xMzYtMTM2UzcyIDEzMi44IDcyIDIwOHM2MC44IDEzNiAxMzYgMTM2IDEzNi02MC44IDEzNi0xMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDUgNDQyLjdMNDA1LjMgMzQzYy00LjUtNC41LTEwLjYtNy0xNy03SDM3MmMyNy42LTM1LjMgNDQtNzkuNyA0NC0xMjhDNDE2IDkzLjEgMzIyLjkgMCAyMDggMFMwIDkzLjEgMCAyMDhzOTMuMSAyMDggMjA4IDIwOGM0OC4zIDAgOTIuNy0xNi40IDEyOC00NHYxNi4zYzAgNi40IDIuNSAxMi41IDcgMTdsOTkuNyA5OS43YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDI4LjMtMjguM2M5LjQtOS40IDkuNC0yNC42LjEtMzR6TTIwOCAzMzZjLTcwLjcgMC0xMjgtNTcuMi0xMjgtMTI4IDAtNzAuNyA1Ny4yLTEyOCAxMjgtMTI4IDcwLjcgMCAxMjggNTcuMiAxMjggMTI4IDAgNzAuNy01Ny4yIDEyOC0xMjggMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZWVkbGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA5NkgwYzAgMTIzLjcgMTAwLjMgMjI0IDIyNCAyMjR2MTQ0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwQzI4OCAxOTYuMyAxODcuNyA5NiA2NCA5NnptMzg0LTY0Yy04NC4yIDAtMTU3LjQgNDYuNS0xOTUuNyAxMTUuMiAyNy43IDMwLjIgNDguMiA2Ni45IDU5IDEwNy42QzQyNCAyNDMuMSA1MTIgMTQ3LjkgNTEyIDMyaC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VydmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAxNjBIMzJjLTE3LjY3MyAwLTMyLTE0LjMyNy0zMi0zMlY2NGMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJoNDQ4YzE3LjY3MyAwIDMyIDE0LjMyNyAzMiAzMnY2NGMwIDE3LjY3My0xNC4zMjcgMzItMzIgMzJ6bS00OC04OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0czEwLjc0NSAyNCAyNCAyNCAyNC0xMC43NDUgMjQtMjQtMTAuNzQ1LTI0LTI0LTI0em0tNjQgMGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0czEwLjc0NSAyNCAyNCAyNCAyNC0xMC43NDUgMjQtMjQtMTAuNzQ1LTI0LTI0LTI0em0xMTIgMjQ4SDMyYy0xNy42NzMgMC0zMi0xNC4zMjctMzItMzJ2LTY0YzAtMTcuNjczIDE0LjMyNy0zMiAzMi0zMmg0NDhjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMydjY0YzAgMTcuNjczLTE0LjMyNyAzMi0zMiAzMnptLTQ4LTg4Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjRzMTAuNzQ1IDI0IDI0IDI0IDI0LTEwLjc0NSAyNC0yNC0xMC43NDUtMjQtMjQtMjR6bS02NCAwYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjRzMTAuNzQ1IDI0IDI0IDI0IDI0LTEwLjc0NSAyNC0yNC0xMC43NDUtMjQtMjQtMjR6bTExMiAyNDhIMzJjLTE3LjY3MyAwLTMyLTE0LjMyNy0zMi0zMnYtNjRjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyaDQ0OGMxNy42NzMgMCAzMiAxNC4zMjcgMzIgMzJ2NjRjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMyem0tNDgtODhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHMxMC43NDUgMjQgMjQgMjQgMjQtMTAuNzQ1IDI0LTI0LTEwLjc0NS0yNC0yNC0yNHptLTY0IDBjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHMxMC43NDUgMjQgMjQgMjQgMjQtMTAuNzQ1IDI0LTI0LTEwLjc0NS0yNC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hhcGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCwyNTZBMTI4LDEyOCwwLDEsMCwyNTYsMzg0LDEyOCwxMjgsMCwwLDAsMTI4LDI1NlptMzc5LTU0Ljg2TDQwMC4wNywxOC4yOWEzNy4yNiwzNy4yNiwwLDAsMC02NC4xNCwwTDIyOSwyMDEuMTRDMjE0Ljc2LDIyNS41MiwyMzIuNTgsMjU2LDI2MS4wOSwyNTZINDc0LjkxQzUwMy40MiwyNTYsNTIxLjI0LDIyNS41Miw1MDcsMjAxLjE0Wk00ODAsMjg4SDMyMGEzMiwzMiwwLDAsMC0zMiwzMlY0ODBhMzIsMzIsMCwwLDAsMzIsMzJINDgwYTMyLDMyLDAsMCwwLDMyLTMyVjMyMEEzMiwzMiwwLDAsMCw0ODAsMjg4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGFyZUFsdFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggODB2MzUyYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHpNMzA0IDI5NmMtMTQuNTYyIDAtMjcuODIzIDUuNTYxLTM3Ljc4MyAxNC42NzFsLTY3Ljk1OC00MC43NzVhNTYuMzM5IDU2LjMzOSAwIDAgMCAwLTI3Ljc5M2w2Ny45NTgtNDAuNzc1QzI3Ni4xNzcgMjEwLjQzOSAyODkuNDM4IDIxNiAzMDQgMjE2YzMwLjkyOCAwIDU2LTI1LjA3MiA1Ni01NnMtMjUuMDcyLTU2LTU2LTU2LTU2IDI1LjA3Mi01NiA1NmMwIDQuNzk3LjYwNSA5LjQ1MyAxLjc0IDEzLjg5N2wtNjcuOTU4IDQwLjc3NUMxNzEuODIzIDIwNS41NjEgMTU4LjU2MiAyMDAgMTQ0IDIwMGMtMzAuOTI4IDAtNTYgMjUuMDcyLTU2IDU2czI1LjA3MiA1NiA1NiA1NmMxNC41NjIgMCAyNy44MjMtNS41NjEgMzcuNzgzLTE0LjY3MWw2Ny45NTggNDAuNzc1YTU2LjA4OCA1Ni4wODggMCAwIDAtMS43NCAxMy44OTdjMCAzMC45MjggMjUuMDcyIDU2IDU2IDU2czU2LTI1LjA3MiA1Ni01NkMzNjAgMzIxLjA3MiAzMzQuOTI4IDI5NiAzMDQgMjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGFyZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMzIwYy0yMi42MDggMC00My4zODcgNy44MTktNTkuNzkgMjAuODk1bC0xMDIuNDg2LTY0LjA1NGE5Ni41NTEgOTYuNTUxIDAgMCAwIDAtNDEuNjgzbDEwMi40ODYtNjQuMDU0QzMwOC42MTMgMTg0LjE4MSAzMjkuMzkyIDE5MiAzNTIgMTkyYzUzLjAxOSAwIDk2LTQyLjk4MSA5Ni05NlM0MDUuMDE5IDAgMzUyIDBzLTk2IDQyLjk4MS05NiA5NmMwIDcuMTU4Ljc5IDE0LjEzIDIuMjc2IDIwLjg0MUwxNTUuNzkgMTgwLjg5NUMxMzkuMzg3IDE2Ny44MTkgMTE4LjYwOCAxNjAgOTYgMTYwYy01My4wMTkgMC05NiA0Mi45ODEtOTYgOTZzNDIuOTgxIDk2IDk2IDk2YzIyLjYwOCAwIDQzLjM4Ny03LjgxOSA1OS43OS0yMC44OTVsMTAyLjQ4NiA2NC4wNTRBOTYuMzAxIDk2LjMwMSAwIDAgMCAyNTYgNDE2YzAgNTMuMDE5IDQyLjk4MSA5NiA5NiA5NnM5Ni00Mi45ODEgOTYtOTYtNDIuOTgxLTk2LTk2LTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGFyZVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjguNDgyIDE3Ny40NDhMNDI0LjQ3OSAzMTMuNDMzQzQwOS4zIDMyNy43NjggMzg0IDMxNy4xNCAzODQgMjk1Ljk4NXYtNzEuOTYzYy0xNDQuNTc1Ljk3LTIwNS41NjYgMzUuMTEzLTE2NC43NzUgMTcxLjM1MyA0LjQ4MyAxNC45NzMtMTIuODQ2IDI2LjU2Ny0yNS4wMDYgMTcuMzNDMTU1LjI1MiAzODMuMTA1IDEyMCAzMjYuNDg4IDEyMCAyNjkuMzM5YzAtMTQzLjkzNyAxMTcuNTk5LTE3Mi41IDI2NC0xNzMuMzEyVjI0LjAxMmMwLTIxLjE3NCAyNS4zMTctMzEuNzY4IDQwLjQ3OS0xNy40NDhsMTQ0LjAwMyAxMzUuOTg4YzEwLjAyIDkuNDYzIDEwLjAyOCAyNS40MjUgMCAzNC44OTZ6TTM4NCAzNzkuMTI4VjQ0OEg2NFYxMjhoNTAuOTE2YTExLjk5IDExLjk5IDAgMCAwIDguNjQ4LTMuNjkzYzE0Ljk1My0xNS41NjggMzIuMjM3LTI3Ljg5IDUxLjAxNC0zNy42NzZDMTg1LjcwOCA4MC44MyAxODEuNTg0IDY0IDE2OS4wMzMgNjRINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OHYtODguODA2YzAtOC4yODgtOC4xOTctMTQuMDY2LTE2LjAxMS0xMS4zMDJhNzEuODMgNzEuODMgMCAwIDEtMzQuMTg5IDMuMzc3Yy03LjI3LTEuMDQ2LTEzLjggNC41MTQtMTMuOCAxMS44NTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMy42OTEgMTg5LjgzNkwzMjcuNjg3IDM3Ljg1MUMzMTIuMjgxIDI0LjU0NiAyODggMzUuMzQ3IDI4OCA1Ni4wMTV2ODAuMDUzQzEyNy4zNzEgMTM3LjkwNyAwIDE3MC4xIDAgMzIyLjMyNmMwIDYxLjQ0MSAzOS41ODEgMTIyLjMwOSA4My4zMzMgMTU0LjEzMiAxMy42NTMgOS45MzEgMzMuMTExLTIuNTMzIDI4LjA3Ny0xOC42MzFDNjYuMDY2IDMxMi44MTQgMTMyLjkxNyAyNzQuMzE2IDI4OCAyNzIuMDg1VjM2MGMwIDIwLjcgMjQuMyAzMS40NTMgMzkuNjg3IDE4LjE2NGwxNzYuMDA0LTE1MmMxMS4wNzEtOS41NjIgMTEuMDg2LTI2Ljc1MyAwLTM2LjMyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hla2VsU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggMTY4djE2OGMwIDguODQgNy4xNiAxNiAxNiAxNmg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNjhjMC03NS4xMS02MC44OS0xMzYtMTM2LTEzNkgyNEMxMC43NSAzMiAwIDQyLjc0IDAgNTZ2NDA4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjExMmgxMTJjMzAuOTMgMCA1NiAyNS4wNyA1NiA1NnpNNDMyIDMyaC00OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2Mjk2YzAgMzAuOTMtMjUuMDcgNTYtNTYgNTZIMjAwVjE3NmMwLTguODQtNy4xNi0xNi0xNi0xNmgtNDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djI4MGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDE2OGM3NS4xMSAwIDEzNi02MC44OSAxMzYtMTM2VjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGllbGRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY2LjUgODMuN2wtMTkyLTgwYTQ4LjE1IDQ4LjE1IDAgMCAwLTM2LjkgMGwtMTkyIDgwQzI3LjcgOTEuMSAxNiAxMDguNiAxNiAxMjhjMCAxOTguNSAxMTQuNSAzMzUuNyAyMjEuNSAzODAuMyAxMS44IDQuOSAyNS4xIDQuOSAzNi45IDBDMzYwLjEgNDcyLjYgNDk2IDM0OS4zIDQ5NiAxMjhjMC0xOS40LTExLjctMzYuOS0yOS41LTQ0LjN6TTI1Ni4xIDQ0Ni4zbC0uMS0zODEgMTc1LjkgNzMuM2MtMy4zIDE1MS40LTgyLjEgMjYxLjEtMTc1LjggMzA3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaWVsZFZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCwxOTJhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMjI0LDE5MlpNNDY2LjUsODMuNjhsLTE5Mi04MEE1Ny40LDU3LjQsMCwwLDAsMjU2LjA1LDBhNTcuNCw1Ny40LDAsMCwwLTE4LjQ2LDMuNjdsLTE5Miw4MEE0Ny45Myw0Ny45MywwLDAsMCwxNiwxMjhDMTYsMzI2LjUsMTMwLjUsNDYzLjcyLDIzNy41LDUwOC4zMmE0OC4wOSw0OC4wOSwwLDAsMCwzNi45MSwwQzM2MC4wOSw0NzIuNjEsNDk2LDM0OS4zLDQ5NiwxMjhBNDgsNDgsMCwwLDAsNDY2LjUsODMuNjhaTTM4NCwyNTZIMzcxLjg4Yy0yOC41MSwwLTQyLjc5LDM0LjQ3LTIyLjYzLDU0LjYzbDguNTgsOC41N2ExNiwxNiwwLDEsMS0yMi42MywyMi42M2wtOC41Ny04LjU4QzMwNi40NywzMTMuMDksMjcyLDMyNy4zNywyNzIsMzU1Ljg4VjM2OGExNiwxNiwwLDAsMS0zMiwwVjM1NS44OGMwLTI4LjUxLTM0LjQ3LTQyLjc5LTU0LjYzLTIyLjYzbC04LjU3LDguNThhMTYsMTYsMCwwLDEtMjIuNjMtMjIuNjNsOC41OC04LjU3YzIwLjE2LTIwLjE2LDUuODgtNTQuNjMtMjIuNjMtNTQuNjNIMTI4YTE2LDE2LDAsMCwxLDAtMzJoMTIuMTJjMjguNTEsMCw0Mi43OS0zNC40NywyMi42My01NC42M2wtOC41OC04LjU3YTE2LDE2LDAsMCwxLDIyLjYzLTIyLjYzbDguNTcsOC41OGMyMC4xNiwyMC4xNiw1NC42Myw1Ljg4LDU0LjYzLTIyLjYzVjExMmExNiwxNiwwLDAsMSwzMiwwdjEyLjEyYzAsMjguNTEsMzQuNDcsNDIuNzksNTQuNjMsMjIuNjNsOC41Ny04LjU4YTE2LDE2LDAsMCwxLDIyLjYzLDIyLjYzbC04LjU4LDguNTdDMzI5LjA5LDE4OS41MywzNDMuMzcsMjI0LDM3MS44OCwyMjRIMzg0YTE2LDE2LDAsMCwxLDAsMzJabS05NiwwYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDI4OCwyNTZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2LjYxNiAzNzIuNjM5bDcwLjAxMi03MC4wMTJjMTYuODk5LTE2LjkgOS45NDItNDUuNzcxLTEyLjgzNi01My4wOTJMNTEyIDIzNi4xMDJWOTZjMC0xNy42NzMtMTQuMzI3LTMyLTMyLTMyaC02NFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjQ4Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2NDBoLTY0Yy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJ2MTQwLjEwMmwtNDEuNzkyIDEzLjQzM2MtMjIuNzUzIDcuMzEzLTI5Ljc1NCAzNi4xNzMtMTIuODM2IDUzLjA5Mmw3MC4wMTIgNzAuMDEyQzEyNS44MjggNDE2LjI4NyA4NS41ODcgNDQ4IDI0IDQ0OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNCA2MS4wMjMgMCAxMDcuNDk5LTIwLjYxIDE0My4yNTgtNTkuMzk2QzE4MS42NzcgNDg3LjQzMiAyMTYuMDIxIDUxMiAyNTYgNTEyaDEyOGMzOS45NzkgMCA3NC4zMjMtMjQuNTY4IDg4Ljc0Mi01OS4zOTZDNTA4LjQ5NSA0OTEuMzg0IDU1NC45NjggNTEyIDYxNiA1MTJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjQtNjAuODE3IDAtMTAxLjU0Mi0zMS4wMDEtMTE5LjM4NC03NS4zNjF6TTE5MiAxMjhoMjU2djg3LjUzMWwtMTE4LjIwOC0zNy45OTVhMzEuOTk1IDMxLjk5NSAwIDAgMC0xOS41ODQgMEwxOTIgMjE1LjUzMVYxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaXBwaW5nRmFzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQgMzUyaC0xNlYyNDMuOWMwLTEyLjctNS4xLTI0LjktMTQuMS0zMy45TDQ5NCAxMTAuMWMtOS05LTIxLjItMTQuMS0zMy45LTE0LjFINDE2VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDExMkM4NS41IDAgNjQgMjEuNSA2NCA0OHY0OEg4Yy00LjQgMC04IDMuNi04IDh2MTZjMCA0LjQgMy42IDggOCA4aDI3MmM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDQwYy00LjQgMC04IDMuNi04IDh2MTZjMCA0LjQgMy42IDggOCA4aDIwOGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDhjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDhoMjA4YzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhINjR2MTI4YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZoMTI4YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZoNDhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6TTE2MCA0NjRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em0zMjAgMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6bTgwLTIwOEg0MTZWMTQ0aDQ0LjFsOTkuOSA5OS45VjI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hvZVByaW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMTYwaDMyVjMyaC0zMmMtMzUuMzUgMC02NCAyOC42NS02NCA2NHMyOC42NSA2NCA2NCA2NHpNMCA0MTZjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMlYzNTJINjRjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR6bTMzNy40Ni0xMjhjLTM0LjkxIDAtNzYuMTYgMTMuMTItMTA0LjczIDMyLTI0Ljc5IDE2LjM4LTQ0LjUyIDMyLTEwNC43MyAzMnYxMjhsNTcuNTMgMTUuOTdjMjYuMjEgNy4yOCA1My4wMSAxMy4xMiA4MC4zMSAxNS4wNSAzMi42OSAyLjMxIDY1LjYuNjcgOTcuNTgtNi4yQzQ3Mi45IDQ4MS4zIDUxMiA0MjkuMjIgNTEyIDM4NGMwLTY0LTg0LjE4LTk2LTE3NC41NC05NnpNNDkxLjQyIDcuMTlDNDU5LjQ0LjMyIDQyNi41My0xLjMzIDM5My44NC45OWMtMjcuMyAxLjkzLTU0LjEgNy43Ny04MC4zMSAxNS4wNEwyNTYgMzJ2MTI4YzYwLjIgMCA3OS45NCAxNS42MiAxMDQuNzMgMzIgMjguNTcgMTguODggNjkuODIgMzIgMTA0LjczIDMyQzU1NS44MiAyMjQgNjQwIDE5MiA2NDAgMTI4YzAtNDUuMjItMzkuMS05Ny4zLTE0OC41OC0xMjAuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob3BwaW5nQmFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAxNjB2LTMyQzM1MiA1Ny40MiAyOTQuNTc5IDAgMjI0IDAgMTUzLjQyIDAgOTYgNTcuNDIgOTYgMTI4djMySDB2MjcyYzAgNDQuMTgzIDM1LjgxNyA4MCA4MCA4MGgyODhjNDQuMTgzIDAgODAtMzUuODE3IDgwLTgwVjE2MGgtOTZ6bS0xOTItMzJjMC0zNS4yOSAyOC43MS02NCA2NC02NHM2NCAyOC43MSA2NCA2NHYzMkgxNjB2LTMyem0xNjAgMTIwYy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRzMTAuNzQ1LTI0IDI0LTI0IDI0IDEwLjc0NSAyNCAyNC0xMC43NDUgMjQtMjQgMjR6bS0xOTIgMGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0czEwLjc0NS0yNCAyNC0yNCAyNCAxMC43NDUgMjQgMjQtMTAuNzQ1IDI0LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG9wcGluZ0Jhc2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzYgMjE2djE2YzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNGgtOGwtMjYuMTEzIDE4Mi43ODhDNTE0LjUwOSA0NjIuNDM1IDQ5NC4yNTcgNDgwIDQ3MC4zNyA0ODBIMTA1LjYzYy0yMy44ODcgMC00NC4xMzktMTcuNTY1LTQ3LjUxOC00MS4yMTJMMzIgMjU2aC04Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjR2LTE2YzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNGg2Ny4zNDFsMTA2Ljc4LTE0Ni44MjFjMTAuMzk1LTE0LjI5MiAzMC40MDctMTcuNDUzIDQ0LjcwMS03LjA1OCAxNC4yOTMgMTAuMzk1IDE3LjQ1MyAzMC40MDggNy4wNTggNDQuNzAxTDE3MC40NzcgMTkyaDIzNS4wNDZMMzI2LjEyIDgyLjgyMWMtMTAuMzk1LTE0LjI5Mi03LjIzNC0zNC4zMDYgNy4wNTktNDQuNzAxIDE0LjI5MS0xMC4zOTUgMzQuMzA2LTcuMjM1IDQ0LjcwMSA3LjA1OEw0ODQuNjU5IDE5Mkg1NTJjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0ek0zMTIgMzkyVjI4MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRzLTI0IDEwLjc0NS0yNCAyNHYxMTJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0czI0LTEwLjc0NSAyNC0yNHptMTEyIDBWMjgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHMtMjQgMTAuNzQ1LTI0IDI0djExMmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRzMjQtMTAuNzQ1IDI0LTI0em0tMjI0IDBWMjgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHMtMjQgMTAuNzQ1LTI0IDI0djExMmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRzMjQtMTAuNzQ1IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG9wcGluZ0NhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4LjEyIDMwMS4zMTlsNDcuMjczLTIwOEM1NzguODA2IDc4LjMwMSA1NjcuMzkxIDY0IDU1MS45OSA2NEgxNTkuMjA4bC05LjE2Ni00NC44MUMxNDcuNzU4IDguMDIxIDEzNy45MyAwIDEyNi41MjkgMEgyNEMxMC43NDUgMCAwIDEwLjc0NSAwIDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGg2OS44ODNsNzAuMjQ4IDM0My40MzVDMTQ3LjMyNSA0MTcuMSAxMzYgNDM1LjIyMiAxMzYgNDU2YzAgMzAuOTI4IDI1LjA3MiA1NiA1NiA1NnM1Ni0yNS4wNzIgNTYtNTZjMC0xNS42NzQtNi40NDctMjkuODM1LTE2LjgyNC00MGgyMDkuNjQ3QzQzMC40NDcgNDI2LjE2NSA0MjQgNDQwLjMyNiA0MjQgNDU2YzAgMzAuOTI4IDI1LjA3MiA1NiA1NiA1NnM1Ni0yNS4wNzIgNTYtNTZjMC0yMi4xNzItMTIuODg4LTQxLjMzMi0zMS41NzktNTAuNDA1bDUuNTE3LTI0LjI3NmMzLjQxMy0xNS4wMTgtOC4wMDItMjkuMzE5LTIzLjQwMy0yOS4zMTlIMjE4LjExN2wtNi41NDUtMzJoMjkzLjE0NWMxMS4yMDYgMCAyMC45Mi03Ljc1NCAyMy40MDMtMTguNjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG93ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0LDMyMGExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwzMDQsMzIwWm0zMi05NmExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwzMzYsMjI0Wm0zMiw2NGExNiwxNiwwLDEsMC0xNi0xNkExNiwxNiwwLDAsMCwzNjgsMjg4Wm0tMzIsMzJhMTYsMTYsMCwxLDAtMTYtMTZBMTYsMTYsMCwwLDAsMzM2LDMyMFptLTMyLTY0YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDMwNCwyNTZabTEyOC0zMmExNiwxNiwwLDEsMC0xNi0xNkExNiwxNiwwLDAsMCw0MzIsMjI0Wm0tNDgsMTZhMTYsMTYsMCwxLDAsMTYtMTZBMTYsMTYsMCwwLDAsMzg0LDI0MFptLTE2LTQ4YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDM2OCwxOTJabTk2LDMyYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDQ2NCwyMjRabTMyLTMyYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDQ5NiwxOTJabS02NCw2NGExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCw0MzIsMjU2Wm0tMzIsMzJhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsNDAwLDI4OFptLTY0LDY0YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDMzNiwzNTJabS0zMiwzMmExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwzMDQsMzg0Wm02NC02NGExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwzNjgsMzIwWm0yMS42NS0yMTguMzUtMTEuMy0xMS4zMWExNiwxNiwwLDAsMC0yMi42MywwTDM1MC4wNSw5NkExMTEuMTksMTExLjE5LDAsMCwwLDI3Miw2NGMtMTkuMjQsMC0zNy4wOCw1LjMtNTIuOSwxMy44NWwtMTAtMTBBMTIxLjcyLDEyMS43MiwwLDAsMCwxMjMuNDQsMzJDNTUuNDksMzEuNSwwLDkyLjkxLDAsMTYwLjg1VjQ2NGExNiwxNiwwLDAsMCwxNiwxNkg0OGExNiwxNiwwLDAsMCwxNi0xNlYxNTguNGMwLTMwLjE1LDIxLTU4LjIsNTEtNjEuOTNhNTguMzgsNTguMzgsMCwwLDEsNDguOTMsMTYuNjdsMTAsMTBDMTY1LjMsMTM4LjkyLDE2MCwxNTYuNzYsMTYwLDE3NmExMTEuMjMsMTExLjIzLDAsMCwwLDMyLDc4LjA1bC01LjY2LDUuNjdhMTYsMTYsMCwwLDAsMCwyMi42MmwxMS4zLDExLjMxYTE2LDE2LDAsMCwwLDIyLjYzLDBMMzg5LjY1LDEyNC4yOEExNiwxNiwwLDAsMCwzODkuNjUsMTAxLjY1WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaHV0dGxlVmFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyOC44OCAyMTAuNjVMNDk0LjM5IDQ5LjI3QTQ4LjAxIDQ4LjAxIDAgMCAwIDQ1Ny41MiAzMkgzMkMxNC4zMyAzMiAwIDQ2LjMzIDAgNjR2Mjg4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMCA1My4wMiA0Mi45OCA5NiA5NiA5NnM5Ni00Mi45OCA5Ni05NmgxMjhjMCA1My4wMiA0Mi45OCA5NiA5NiA5NnM5Ni00Mi45OCA5Ni05NmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjI0MS4zOGMwLTExLjIzLTMuOTQtMjIuMS0xMS4xMi0zMC43M3pNNjQgMTkyVjk2aDk2djk2SDY0em05NiAyNDBjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bTE2MC0yNDBoLTk2Vjk2aDk2djk2em0xNjAgMjQwYy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4LTIxLjQ5IDQ4LTQ4IDQ4em0tOTYtMjQwVjk2aDY2LjAybDgwIDk2SDM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2lnbkluQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiA0NDhoLTg0Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg4NGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJoLTg0Yy02LjYgMC0xMi01LjQtMTItMTJWNzZjMC02LjYgNS40LTEyIDEyLTEyaDg0YzUzIDAgOTYgNDMgOTYgOTZ2MTkyYzAgNTMtNDMgOTYtOTYgOTZ6bS00Ny0yMDFMMjAxIDc5Yy0xNS0xNS00MS00LjUtNDEgMTd2OTZIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0djk2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDEzNnY5NmMwIDIxLjUgMjYgMzIgNDEgMTdsMTY4LTE2OGM5LjMtOS40IDkuMy0yNC42IDAtMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25MYW5ndWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05MS40MzQgNDgzLjk4N2MtLjMwNy0xNi4wMTggMTMuMTA5LTI5LjEyOSAyOS4xMy0yOS4xMjloNjIuMjkzdi01LjcxNEg1Ni45OTNjLTE2LjAyMSAwLTI5LjQzNy0xMy4xMTEtMjkuMTMtMjkuMTI5QzI4LjE2IDQwNC40OTEgNDAuODM1IDM5MiA1Ni40MjggMzkyaDEyNi40Mjl2LTUuNzE0SDI5LjEzNmMtMTYuMDIxIDAtMjkuNDM3LTEzLjExMS0yOS4xMy0yOS4xMjkuMjk3LTE1LjUyMiAxMi45NzMtMjguMDEzIDI4LjU2Ni0yOC4wMTNoMTU0LjI4NnYtNS43MTRINTcuNzA3Yy0xNi4wMjEgMC0yOS40MzctMTMuMTExLTI5LjEzLTI5LjEyOS4yOTctMTUuNTIyIDEyLjk3My0yOC4wMTMgMjguNTY2LTI4LjAxM2gxNjguNTY2bC0zMS4wODUtMjIuNjA2Yy0xMi43NjItOS4yODEtMTUuNTgzLTI3LjE0OS02LjMwMi0zOS45MTIgOS4yODEtMTIuNzYxIDI3LjE1LTE1LjU4MiAzOS45MTItNi4zMDJsMTIzLjM2MSA4OS43MTVhMzQuMjg3IDM0LjI4NyAwIDAgMSAxNC4xMiAyNy43Mjh2MTQxLjEzNmMwIDE1LjkxLTEwLjk0NiAyOS43My0yNi40MzMgMzMuMzc0bC04MC40NzEgMTguOTM0YTEzNy4xNiAxMzcuMTYgMCAwIDEtMzEuNDExIDMuNjQ2SDEyMGMtMTUuNTkzLS4wMDEtMjguMjY5LTEyLjQ5Mi0yOC41NjYtMjguMDE0em03My4yNDktMjI1LjcwMWgzNi40MjNsLTExLjE4Ny04LjEzNmMtMTguNTc5LTEzLjUxMS0yMC4zMTMtNDAuODg3LTMuMTctNTYuNTM2bC0xMy4wMDQtMTYuN2MtOS44NDMtMTIuNjQxLTI4LjQzLTE1LjE3MS00MC44OC01LjA4OC0xMi4wNjUgOS43NzEtMTQuMTMzIDI3LjQ0Ny00LjU1MyAzOS43NWwzNi4zNzEgNDYuNzF6bTI4My4yOTgtMi4xMDNsLTUuMDAzLTE1Mi40NTJjLS41MTgtMTUuNzcxLTEzLjcyMi0yOC4xMzYtMjkuNDkzLTI3LjYxOS0xNS43NzMuNTE4LTI4LjEzNyAxMy43MjItMjcuNjE5IDI5LjQ5M2wxLjI2MiAzOC40MTVMMjgzLjU2NSAxMS4wMTljLTkuNTgtMTIuMzAzLTI3LjIyMy0xNC42My0zOS42NTMtNS4zMjgtMTIuODI3IDkuNTk5LTE0LjkyOSAyOC4yNC01LjA4NiA0MC44ODFsNzYuODg5IDk4Ljc0NS00LjUwOSAzLjUxMS05NC43OS0xMjEuNzM0Yy05LjU4LTEyLjMwMy0yNy4yMjMtMTQuNjMtMzkuNjUzLTUuMzI4LTEyLjgyNyA5LjU5OS0xNC45MjkgMjguMjQtNS4wODYgNDAuODgxbDk0LjQ0MyAxMjEuMjg4LTQuNTA5IDMuNTExLTc3LjY3NS05OS43NTRjLTkuNTgtMTIuMzAzLTI3LjIyMy0xNC42My0zOS42NTMtNS4zMjgtMTIuODI3IDkuNTk5LTE0LjkyOSAyOC4yNC01LjA4NiA0MC44ODFsNTIuMDUzIDY2Ljg0OWMxMi40OTctOC4yNTcgMjkuMDU1LTguMjg1IDQxLjY5LjkwNGwxMjMuMzYgODkuNzE0YzEwLjkwNCA3LjkzIDE3LjQxNSAyMC43MTUgMTcuNDE1IDM0LjE5OHYxNi45OTlsNjEuMDY0LTQ3LjU0OWEzNC4yODUgMzQuMjg1IDAgMCAwIDEzLjIwMi0yOC4xNzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25PdXRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk3IDI3M0wzMjkgNDQxYy0xNSAxNS00MSA0LjUtNDEtMTd2LTk2SDE1MmMtMTMuMyAwLTI0LTEwLjctMjQtMjR2LTk2YzAtMTMuMyAxMC43LTI0IDI0LTI0aDEzNlY4OGMwLTIxLjQgMjUuOS0zMiA0MS0xN2wxNjggMTY4YzkuMyA5LjQgOS4zIDI0LjYgMCAzNHpNMTkyIDQzNnYtNDBjMC02LjYtNS40LTEyLTEyLTEySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJoODRjNi42IDAgMTItNS40IDEyLTEyVjc2YzAtNi42LTUuNC0xMi0xMi0xMkg5NmMtNTMgMC05NiA0My05NiA5NnYxOTJjMCA1MyA0MyA5NiA5NiA5Nmg4NGM2LjYgMCAxMi01LjQgMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDY0SDEyOFYxNmMwLTguOC03LjItMTYtMTYtMTZIODBjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgxNkM3LjIgNjQgMCA3MS4yIDAgODB2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djM2OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjEyOGgzNjhjOC44IDAgMTYtNy4yIDE2LTE2VjgwYzAtOC44LTcuMi0xNi0xNi0xNnpNMTYwIDM4NGgzMjBWMTYwSDE2MHYyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYgMjg4aC00OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTkyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjMwNGMwLTguODQtNy4xNi0xNi0xNi0xNnpNODggMzg0SDQwYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY5NmMwIDguODQgNy4xNiAxNiAxNiAxNmg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtOTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bTI1Ni0xOTJoLTQ4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYyODhjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjA4YzAtOC44NC03LjE2LTE2LTE2LTE2em0xMjgtOTZoLTQ4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzODRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZWMTEyYzAtOC44NC03LjE2LTE2LTE2LTE2ek02MDAgMGgtNDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4MGMwIDguODQgNy4xNiAxNiAxNiAxNmg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2lnbmF0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyMy4yIDE5MmMtNTEuOCAzLjUtMTI1LjcgNTQuNy0xNjMuMSA3MS41LTI5LjEgMTMuMS01NC4yIDI0LjQtNzYuMSAyNC40LTIyLjYgMC0yNi0xNi4yLTIxLjMtNTEuOSAxLjEtOCAxMS43LTc5LjItNDIuNy03Ni4xLTI1LjEgMS41LTY0LjMgMjQuOC0xNjkuNSAxMjZMMTkyIDE4Mi4yYzMwLjQtNzUuOS01My4yLTE1MS41LTEyOS43LTEwMi44TDcuNCAxMTYuM0MwIDEyMS0yLjIgMTMwLjkgMi41IDEzOC40bDE3LjIgMjdjNC43IDcuNSAxNC42IDkuNyAyMi4xIDQuOWw1OC0zOC45YzE4LjQtMTEuNyA0MC43IDcuMiAzMi43IDI3LjFMMzQuMyA0MDQuMUMyNy41IDQyMSAzNyA0NDggNjQgNDQ4YzguMyAwIDE2LjUtMy4yIDIyLjYtOS40IDQyLjItNDIuMiAxNTQuNy0xNTAuNyAyMTEuMi0xOTUuOC0yLjIgMjguNS0yLjEgNTguOSAyMC42IDgzLjggMTUuMyAxNi44IDM3LjMgMjUuMyA2NS41IDI1LjMgMzUuNiAwIDY4LTE0LjYgMTAyLjMtMzAgMzMtMTQuOCA5OS02Mi42IDEzOC40LTY1LjggOC41LS43IDE1LjItNy4zIDE1LjItMTUuOHYtMzIuMWMuMi05LjEtNy41LTE2LjgtMTYuNi0xNi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaW1DYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjR2Mzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0aDI1NmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhMMjU2IDBINjRDMjguNyAwIDAgMjguNyAwIDY0em0yMjQgMTkyaC02NHYtNjRoNjR2NjR6bTk2IDBoLTY0di02NGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnYzMnptLTY0IDEyOGg2NHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMmgtMzJ2LTY0em0tOTYgMGg2NHY2NGgtNjR2LTY0em0tOTYgMGg2NHY2NEg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ2LTMyem0wLTk2aDI1NnY2NEg2NHYtNjR6bTAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJoMzJ2NjRINjR2LTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyLDQxNmE5Niw5NiwwLDAsMCw5Niw5NkgzODRhOTYsOTYsMCwwLDAsOTYtOTZWMzg0SDMyWk00OTYsMjg4SDQwMFYyNTZoNjRhMTYsMTYsMCwwLDAsMTYtMTZWMjI0YTE2LDE2LDAsMCwwLTE2LTE2SDM4NGEzMiwzMiwwLDAsMC0zMiwzMnY0OEgyODhWOTZhMzIsMzIsMCwwLDEsNjQsMHYxNmExNiwxNiwwLDAsMCwxNiwxNmgzMmExNiwxNiwwLDAsMCwxNi0xNlY5NkE5Ni4xNiw5Ni4xNiwwLDAsMCwzMDAuODcsMS44NkMyNTUuMjksMTAuNzEsMjI0LDUzLjM2LDIyNCw5OS43OVYyODhIMTYwVjI0MGEzMiwzMiwwLDAsMC0zMi0zMkg0OGExNiwxNiwwLDAsMC0xNiwxNnYxNmExNiwxNiwwLDAsMCwxNiwxNmg2NHYzMkgxNkExNiwxNiwwLDAsMCwwLDMwNHYzMmExNiwxNiwwLDAsMCwxNiwxNkg0OTZhMTYsMTYsMCwwLDAsMTYtMTZWMzA0QTE2LDE2LDAsMCwwLDQ5NiwyODhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpdGVtYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDM1MkgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bS0yNC04MGgxOTJ2NDhoNDh2LTQ4aDE5MnY0OGg0OHYtNTcuNTljMC0yMS4xNy0xNy4yMy0zOC40MS0zOC40MS0zOC40MUgzNDR2LTY0aDQwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgyNTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg0MHY2NEg5NC40MUM3My4yMyAyMjQgNTYgMjQxLjIzIDU2IDI2Mi40MVYzMjBoNDh2LTQ4em0yNjQgODBoLTk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMjQwIDBoLTk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2thdGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhzMjEuNSA0OCA0OCA0OCA0OC0yMS41IDQ4LTQ4LTIxLjUtNDgtNDgtNDh6bTAgNDQ4Yy04LjggMC0xNiA3LjItMTYgMTZzLTcuMiAxNi0xNiAxNmgtOTZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDggMC04LjgtNy4yLTE2LTE2LTE2em0tMjgyLjIgOC42Yy02LjIgNi4yLTE2LjQgNi4zLTIyLjYgMGwtNjcuOS02Ny45Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDY3LjkgNjcuOWM5LjQgOS40IDIxLjcgMTQgMzQgMTRzMjQuNi00LjcgMzMuOS0xNGM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnMtMTYuNC02LjMtMjIuNyAwem01Ni4xLTE3OS44bC05My43IDkzLjdjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4yIDYuMiA2LjIgMTQuNCA5LjQgMjIuNiA5LjRzMTYuNC0zLjEgMjIuNi05LjRsOTEuOS05MS45LTMwLjItMzAuMmMtNS01LTkuNC0xMC43LTEzLjItMTYuOHpNMTI4IDE2MGgxMDUuNWwtMjAuMSAxNy4yYy0xMy41IDExLjUtMjEuNiAyOC40LTIyLjMgNDYuMS0uNyAxNy44IDYuMSAzNS4yIDE4LjcgNDcuN2w3OC4yIDc4LjJWNDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ2LTg5LjRjMC0xMi42LTUuMS0yNS0xNC4xLTMzLjlsLTYxLTYxYy41LS40IDEuMi0uNiAxLjctMS4xbDgyLjMtODIuM2MxMS41LTExLjUgMTQuOS0yOC42IDguNy00My42LTYuMi0xNS0yMC43LTI0LjctMzctMjQuN0gxMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNraWluZ05vcmRpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhTMzYyLjUgMCAzMzYgMHMtNDggMjEuNS00OCA0OCAyMS41IDQ4IDQ4IDQ4em0yMTYgMzIwYy0xMy4yIDAtMjQgMTAuNy0yNCAyNCAwIDEzLjItMTAuOCAyNC0yNCAyNGgtNjkuNUw0NjAgMjg1LjZjMTEuNy00LjcgMjAuMS0xNi4yIDIwLjEtMjkuNiAwLTE3LjctMTQuMy0zMi0zMi0zMmgtNDRMMzc4IDE3MC44Yy0xMi41LTI1LjUtMzUuNS00NC4yLTYxLjgtNTAuOUwyNDUgOTguN2MtMjguMy02LjgtNTcuOC0uNS04MC44IDE3LjFsLTM5LjcgMzAuNGMtMTQgMTAuNy0xNi43IDMwLjgtNS45IDQ0LjkuNy45IDEuNyAxLjMgMi40IDIuMUw2Ni45IDQ2NEgyNGMtMTMuMiAwLTI0IDEwLjctMjQgMjRzMTAuOCAyNCAyNCAyNGg0ODBjMzkuNyAwIDcyLTMyLjMgNzItNzIgMC0xMy4yLTEwLjgtMjQtMjQtMjR6bS0yNjAuNSA0OGgtOTYuOWw0My4xLTkxLTIyLTEzYy0xMi4xLTcuMi0yMS45LTE2LjktMjkuNS0yNy44TDEyMy43IDQ2NEg5OS41bDUyLjMtMjYxLjRjNC4xLTEgOC4xLTIuOSAxMS43LTUuNmwzOS43LTMwLjRjNy43LTUuOSAxNy40LTggMjUuMy02LjFsMTQuNyA0LjQtMzcuNSA4Ny40Yy0xMi42IDI5LjUtMS4zIDY0IDI2LjMgODAuM2w4NSA1MC4yLTI1LjUgODEuMnptMTEwLjYgMGgtNDMuNmwyMy42LTc1LjVjNS45LTIwLjgtMi45LTQzLjEtMjEuNi01NC40TDI5OS4zIDI5OGwzMS4zLTc4LjMgMjAuMyA0MS40YzggMTYuMyAyNC45IDI2LjkgNDMuMSAyNi45aDMzLjNsLTI1LjIgMTc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTa2lpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzQ1OC41IDAgNDMyIDBzLTQ4IDIxLjUtNDggNDggMjEuNSA0OCA0OCA0OHptNzMgMzU2LjFjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwLTEyLjEgMTIuMS0zMC41IDE1LjQtNDUuMSA4LjdsLTEzNS44LTcwLjIgNDkuMi03My44YzEyLjctMTkgMTAuMi00NC41LTYtNjAuNkwyOTMgMjE1LjdsLTEwNy01My4xYy0yLjkgMTkuOSAzLjQgNDAgMTcuNyA1NC40bDc1LjEgNzUuMi00NS45IDY4LjhMMzUgMjU4LjdjLTExLjctNi0yNi4yLTEuNS0zMi4zIDEwLjMtNi4xIDExLjgtMS41IDI2LjMgMTAuMyAzMi4zbDM5MS45IDIwMi41YzExLjkgNS41IDI0LjUgOC4xIDM3LjEgOC4xIDIzLjIgMCA0Ni05IDYzLTI2IDkuMy05LjMgOS4zLTI0LjUgMC0zMy44ek0xMjAgOTEuNmwtMTEuNSAyMi41YzE0LjQgNy4zIDMxLjIgNC45IDQyLjgtNC44bDQ3LjIgMjMuNGMtLjEuMS0uMS4yLS4yLjNsMTE0LjUgNTYuOCAzMi40LTEzIDYuNCAxOS4xYzQgMTIuMSAxMi42IDIyIDI0IDI3LjdsNTguMSAyOWMxNS45IDcuOSAzNSAxLjUgNDIuOS0xNC4zIDcuOS0xNS44IDEuNS0zNS0xNC4zLTQyLjlsLTUyLjEtMjYuMS0xNy4xLTUxLjJjLTguMS0yNC4yLTQwLjktNTYuNi04NC41LTM5LjJsLTgxLjIgMzIuNS02Mi41LTMxYy4zLTE0LjUtNy4yLTI4LjYtMjAuOS0zNS42bC0xMS4xIDIxLjdoLS4ybC0zNC40LTdjLTEuOC0uNC0zLjcuMi01IDEuNy0xLjkgMi4yLTEuNyA1LjUuNSA3LjRsMjYuMiAyM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2t1bGxDcm9zc2JvbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOS4xNSA0NTMuMDZMMjk3LjE3IDM4NGwxNDEuOTktNjkuMDZjNy45LTMuOTUgMTEuMTEtMTMuNTYgNy4xNS0yMS40Nkw0MzIgMjY0Ljg1Yy0zLjk1LTcuOS0xMy41Ni0xMS4xMS0yMS40Ny03LjE2TDIyNCAzNDguNDEgMzcuNDcgMjU3LjY5Yy03LjktMy45NS0xNy41MS0uNzUtMjEuNDcgNy4xNkwxLjY5IDI5My40OGMtMy45NSA3LjktLjc1IDE3LjUxIDcuMTUgMjEuNDZMMTUwLjgzIDM4NCA4Ljg1IDQ1My4wNmMtNy45IDMuOTUtMTEuMTEgMTMuNTYtNy4xNSAyMS40N2wxNC4zMSAyOC42M2MzLjk1IDcuOSAxMy41NiAxMS4xMSAyMS40NyA3LjE1TDIyNCA0MTkuNTlsMTg2LjUzIDkwLjcyYzcuOSAzLjk1IDE3LjUxLjc1IDIxLjQ3LTcuMTVsMTQuMzEtMjguNjNjMy45NS03LjkxLjc0LTE3LjUyLTcuMTYtMjEuNDd6TTE1MCAyMzcuMjhsLTUuNDggMjUuODdjLTIuNjcgMTIuNjIgNS40MiAyNC44NSAxNi40NSAyNC44NWgxMjYuMDhjMTEuMDMgMCAxOS4xMi0xMi4yMyAxNi40NS0yNC44NWwtNS41LTI1Ljg3YzQxLjc4LTIyLjQxIDcwLTYyLjc1IDcwLTEwOS4yOEMzNjggNTcuMzEgMzAzLjUzIDAgMjI0IDBTODAgNTcuMzEgODAgMTI4YzAgNDYuNTMgMjguMjIgODYuODcgNzAgMTA5LjI4ek0yODAgMTEyYzE3LjY1IDAgMzIgMTQuMzUgMzIgMzJzLTE0LjM1IDMyLTMyIDMyLTMyLTE0LjM1LTMyLTMyIDE0LjM1LTMyIDMyLTMyem0tMTEyIDBjMTcuNjUgMCAzMiAxNC4zNSAzMiAzMnMtMTQuMzUgMzItMzIgMzItMzItMTQuMzUtMzItMzIgMTQuMzUtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNrdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwQzExNC42IDAgMCAxMDAuMyAwIDIyNGMwIDcwLjEgMzYuOSAxMzIuNiA5NC41IDE3My43IDkuNiA2LjkgMTUuMiAxOC4xIDEzLjUgMjkuOWwtOS40IDY2LjJjLTEuNCA5LjYgNiAxOC4yIDE1LjcgMTguMkgxOTJ2LTU2YzAtNC40IDMuNi04IDgtOGgxNmM0LjQgMCA4IDMuNiA4IDh2NTZoNjR2LTU2YzAtNC40IDMuNi04IDgtOGgxNmM0LjQgMCA4IDMuNiA4IDh2NTZoNzcuN2M5LjcgMCAxNy4xLTguNiAxNS43LTE4LjJsLTkuNC02Ni4yYy0xLjctMTEuNyAzLjgtMjMgMTMuNS0yOS45QzQ3NS4xIDM1Ni42IDUxMiAyOTQuMSA1MTIgMjI0IDUxMiAxMDAuMyAzOTcuNCAwIDI1NiAwem0tOTYgMzIwYy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0IDY0IDI4LjcgNjQgNjQtMjguNyA2NC02NCA2NHptMTkyIDBjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjQgNjQgMjguNyA2NCA2NC0yOC43IDY0LTY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01OTQuNTMgNTA4LjYzTDYuMTggNTMuOWMtNi45Ny01LjQyLTguMjMtMTUuNDctMi44MS0yMi40NUwyMy4wMSA2LjE4QzI4LjQzLS44IDM4LjQ5LTIuMDYgNDUuNDcgMy4zN0w2MzMuODIgNDU4LjFjNi45NyA1LjQyIDguMjMgMTUuNDcgMi44MSAyMi40NWwtMTkuNjQgMjUuMjdjLTUuNDIgNi45OC0xNS40OCA4LjIzLTIyLjQ2IDIuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNsZWlnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MTIuNyAzNTAuN2wtOS4zLTcuNGMtNi45LTUuNS0xNy00LjQtMjIuNSAyLjVsLTEwIDEyLjVjLTUuNSA2LjktNC40IDE3IDIuNSAyMi41bDkuMyA3LjRjNS45IDQuNyA5LjIgMTEuNyA5LjIgMTkuMiAwIDEzLjYtMTEgMjQuNi0yNC42IDI0LjZINDhjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZoNTE2YzM5IDAgNzMuNy0yOS4zIDc1LjktNjguMyAxLjQtMjMuOC04LjctNDYuMy0yNy4yLTYxek0zMiAyMjRjMCA1OS42IDQwLjkgMTA5LjIgOTYgMTIzLjVWNDAwaDY0di00OGgxOTJ2NDhoNjR2LTQ4YzUzIDAgOTYtNDMgOTYtOTZ2LTk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyaC05NnY2NGMwIDM1LjMtMjguNyA2NC02NCA2NGgtMjAuN2MtNjUuOCAwLTEyNS45LTM3LjItMTU1LjMtOTYtMjkuNC01OC44LTg5LjYtOTYtMTU1LjMtOTZIMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NHMxNC4zIDMyIDMyIDMydjEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2xpZGVyc0ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDM4NEgxNjB2LTE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnYxNkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg4MHYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di0xNmgzMzZjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bTAtMTYwaC04MHYtMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djE2SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMzNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di0xNmg4MGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnptMC0xNjBIMjg4VjQ4YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnYxNkgxNkM3LjIgNjQgMCA3MS4yIDAgODB2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDIwOHYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di0xNmgyMDhjOC44IDAgMTYtNy4yIDE2LTE2VjgwYzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU21pbGVCZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTExMiAyMjMuNGMzLjMtNDIuMSAzMi4yLTcxLjQgNTYtNzEuNHM1Mi43IDI5LjMgNTYgNzEuNGMuNyA4LjYtMTAuOCAxMS45LTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjMgNy40LTE1LjggNC0xNS4xLTQuNXptMjUwLjggMTIyLjhDMzM0LjMgMzgwLjQgMjkyLjUgNDAwIDI0OCA0MDBzLTg2LjMtMTkuNi0xMTQuOC01My44Yy0xMy41LTE2LjMgMTEtMzYuNyAyNC42LTIwLjUgMjIuNCAyNi45IDU1LjIgNDIuMiA5MC4yIDQyLjJzNjcuOC0xNS40IDkwLjItNDIuMmMxMy42LTE2LjIgMzguMSA0LjMgMjQuNiAyMC41em02LjItMTE4LjNsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMSA3LjMtMTUuNiA0LTE0LjktNC41IDMuMy00Mi4xIDMyLjItNzEuNCA1Ni03MS40czUyLjcgMjkuMyA1NiA3MS40Yy42IDguNi0xMSAxMS45LTE1LjEgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbWlsZVdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZjMCAxMzcgMTExIDI0OCAyNDggMjQ4czI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOCAwIDExOSAwIDI1NnptMjAwLTQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMnptMTU4LjUgMTYuNWMtMTQuOC0xMy4yLTQ2LjItMTMuMi02MSAwTDI4OCAyMzNjLTguMyA3LjQtMjEuNi40LTE5LjgtMTAuOCA0LTI1LjIgMzQuMi00Mi4xIDU5LjktNDIuMVMzODQgMTk3IDM4OCAyMjIuMmMxLjcgMTEuMS0xMS40IDE4LjMtMTkuOCAxMC44bC05LjctOC41ek0xNTcuOCAzMjUuOEMxODAuMiAzNTIuNyAyMTMgMzY4IDI0OCAzNjhzNjcuOC0xNS40IDkwLjItNDIuMmMxMy42LTE2LjIgMzguMSA0LjIgMjQuNiAyMC41QzMzNC4zIDM4MC40IDI5Mi41IDQwMCAyNDggNDAwcy04Ni4zLTE5LjYtMTE0LjgtNTMuOGMtMTMuNS0xNi4zIDExLjItMzYuNyAyNC42LTIwLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNtaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTgwIDE2OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bS0xNjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bTE5NC44IDE3MC4yQzMzNC4zIDM4MC40IDI5Mi41IDQwMCAyNDggNDAwcy04Ni4zLTE5LjYtMTE0LjgtNTMuOGMtMTMuNi0xNi4zIDExLTM2LjcgMjQuNi0yMC41IDIyLjQgMjYuOSA1NS4yIDQyLjIgOTAuMiA0Mi4yczY3LjgtMTUuNCA5MC4yLTQyLjJjMTMuNC0xNi4yIDM4LjEgNC4yIDI0LjYgMjAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU21vZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQgMzY4SDgwYy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDU0NGM4LjggMCAxNi03LjIgMTYtMTZ2LTE2YzAtOC44LTcuMi0xNi0xNi0xNnptLTQ4MCA5NkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgOC44IDcuMiAxNiAxNiAxNmgxMjhjOC44IDAgMTYtNy4yIDE2LTE2di0xNmMwLTguOC03LjItMTYtMTYtMTZ6bTQxNiAwSDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgOC44IDcuMiAxNiAxNiAxNmgzMzZjOC44IDAgMTYtNy4yIDE2LTE2di0xNmMwLTguOC03LjItMTYtMTYtMTZ6TTE0NCAyODhoMTU2LjFjMjIuNSAxOS43IDUxLjYgMzIgODMuOSAzMnM2MS4zLTEyLjMgODMuOS0zMkg1MjhjNjEuOSAwIDExMi01MC4xIDExMi0xMTJTNTg5LjkgNjQgNTI4IDY0Yy0xOCAwLTM0LjcgNC42LTQ5LjcgMTIuMUM0NTQgMzEgNDA2LjggMCAzNTIgMGMtNDEgMC03Ny44IDE3LjMtMTA0IDQ0LjhDMjIxLjggMTcuMyAxODUgMCAxNDQgMCA2NC41IDAgMCA2NC41IDAgMTQ0czY0LjUgMTQ0IDE0NCAxNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNtb2tpbmdCYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzA0YzAgOC44IDcuMiAxNiAxNiAxNmgxMTcuNWwtOTYtOTZIMTEyYy04LjggMC0xNiA3LjItMTYgMTZ2NjR6TTI1NiAwQzExNC42IDAgMCAxMTQuNiAwIDI1NnMxMTQuNiAyNTYgMjU2IDI1NiAyNTYtMTE0LjYgMjU2LTI1NlMzOTcuNCAwIDI1NiAwem0wIDQ0OGMtMTA1LjkgMC0xOTItODYuMS0xOTItMTkyIDAtNDEuNCAxMy4zLTc5LjcgMzUuNy0xMTEuMWwyNjcuNCAyNjcuNEMzMzUuNyA0MzQuNyAyOTcuNCA0NDggMjU2IDQ0OHptNDUuMi0xOTJIMzg0djMyaC01MC44bC0zMi0zMnptMTExLjEgMTExLjFMMzY1LjIgMzIwSDQwMGM4LjggMCAxNi03LjIgMTYtMTZ2LTY0YzAtOC44LTcuMi0xNi0xNi0xNkgyNjkuMkwxNDQuOSA5OS43QzE3Ni4zIDc3LjMgMjE0LjYgNjQgMjU2IDY0YzEwNS45IDAgMTkyIDg2LjEgMTkyIDE5MiAwIDQxLjQtMTMuMyA3OS43LTM1LjcgMTExLjF6TTMyMC42IDEyOGMtMTUuNiAwLTI4LjYtMTEuMi0zMS40LTI1LjktLjctMy42LTQtNi4xLTcuNy02LjFoLTE2LjJjLTUgMC04LjcgNC41LTggOS40IDQuNiAzMC45IDMxLjIgNTQuNiA2My4zIDU0LjYgMTUuNiAwIDI4LjYgMTEuMiAzMS40IDI1LjkuNyAzLjYgNCA2LjEgNy43IDYuMWgxNi4yYzUgMCA4LjctNC41IDgtOS40LTQuNi0zMC45LTMxLjItNTQuNi02My4zLTU0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNtb2tpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjMyIDM1MmgtNDhjLTQuNCAwLTggMy42LTggOHYxNDRjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOFYzNjBjMC00LjQtMy42LTgtOC04ek01NTMuMyA4Ny4xYy01LjctMy44LTkuMy0xMC05LjMtMTYuOFY4YzAtNC40LTMuNi04LTgtOGgtNDhjLTQuNCAwLTggMy42LTggOHY2Mi4zYzAgMjIgMTAuMiA0My40IDI4LjYgNTUuNCA0Mi4yIDI3LjMgNjcuNCA3My44IDY3LjQgMTI0VjI4MGMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04di0zMC4zYzAtNjUuNS0zMi40LTEyNi4yLTg2LjctMTYyLjZ6TTQzMiAzNTJINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM4NGM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNnptLTMyIDExMkgyMjR2LTY0aDE3NnY2NHptODcuNy0zMjIuNEM0NjMuOCAxMjUgNDQ4IDk5LjMgNDQ4IDcwLjNWOGMwLTQuNC0zLjYtOC04LThoLTQ4Yy00LjQgMC04IDMuNi04IDh2NjYuNGMwIDQzLjcgMjQuNiA4MS42IDYwLjMgMTA2LjcgMjIuNCAxNS43IDM1LjcgNDEuMiAzNS43IDY4LjZWMjgwYzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LTh2LTMwLjNjMC00My4zLTIxLTgzLjQtNTYuMy0xMDguMXpNNTM2IDM1MmgtNDhjLTQuNCAwLTggMy42LTggOHYxNDRjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOFYzNjBjMC00LjQtMy42LTgtOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyQzExNC42IDMyIDAgMTI1LjEgMCAyNDBjMCA0OS42IDIxLjQgOTUgNTcgMTMwLjdDNDQuNSA0MjEuMSAyLjcgNDY2IDIuMiA0NjYuNWMtMi4yIDIuMy0yLjggNS43LTEuNSA4LjcgMS4zIDMgNC4xIDQuOCA3LjMgNC44IDY2LjMgMCAxMTYtMzEuOCAxNDAuNi01MS40IDMyLjcgMTIuMyA2OSAxOS40IDEwNy40IDE5LjQgMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMnpNMTI4LjIgMzA0SDExNmMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTIuM2M2IDAgMTAuNC0zLjUgMTAuNC02LjYgMC0xLjMtLjgtMi43LTIuMS0zLjhsLTIxLjktMTguOGMtOC41LTcuMi0xMy4zLTE3LjUtMTMuMy0yOC4xIDAtMjEuMyAxOS0zOC42IDQyLjQtMzguNkgxNTZjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOGgtMTIuM2MtNiAwLTEwLjQgMy41LTEwLjQgNi42IDAgMS4zLjggMi43IDIuMSAzLjhsMjEuOSAxOC44YzguNSA3LjIgMTMuMyAxNy41IDEzLjMgMjguMS4xIDIxLjMtMTkgMzguNi00Mi40IDM4LjZ6bTE5MS44LThjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04di02OC4ybC0yNC44IDU1LjhjLTIuOSA1LjktMTEuNCA1LjktMTQuMyAwTDIyNCAyMjcuOFYyOTZjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04VjE5MmMwLTguOCA3LjItMTYgMTYtMTZoMTZjNi4xIDAgMTEuNiAzLjQgMTQuMyA4LjhsMTcuNyAzNS40IDE3LjctMzUuNGMyLjctNS40IDguMy04LjggMTQuMy04LjhoMTZjOC44IDAgMTYgNy4yIDE2IDE2djEwNHptNDguMyA4SDM1NmMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTIuM2M2IDAgMTAuNC0zLjUgMTAuNC02LjYgMC0xLjMtLjgtMi43LTIuMS0zLjhsLTIxLjktMTguOGMtOC41LTcuMi0xMy4zLTE3LjUtMTMuMy0yOC4xIDAtMjEuMyAxOS0zOC42IDQyLjQtMzguNkgzOTZjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOGgtMTIuM2MtNiAwLTEwLjQgMy41LTEwLjQgNi42IDAgMS4zLjggMi43IDIuMSAzLjhsMjEuOSAxOC44YzguNSA3LjIgMTMuMyAxNy41IDEzLjMgMjguMS4xIDIxLjMtMTguOSAzOC42LTQyLjMgMzguNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU25vd2JvYXJkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMiA5NmMyNi41IDAgNDgtMjEuNSA0OC00OFM0NTguNSAwIDQzMiAwcy00OCAyMS41LTQ4IDQ4IDIxLjUgNDggNDggNDh6bTI4LjggMTUzLjZjNS44IDQuMyAxMi41IDYuNCAxOS4yIDYuNCA5LjcgMCAxOS4zLTQuNCAyNS42LTEyLjggMTAuNi0xNC4xIDcuOC0zNC4yLTYuNC00NC44bC0xMTEuNC04My41Yy0xMy44LTEwLjMtMjkuMS0xOC40LTQ1LjQtMjMuOGwtNjMuNy0yMS4yLTI2LjEtNTIuMUMyNDQuNyAyIDIyNS41LTQuNCAyMDkuNyAzLjVjLTE1LjggNy45LTIyLjIgMjcuMS0xNC4zIDQyLjlsMjkuMSA1OC4xYzUuNyAxMS40IDE1LjYgMTkuOSAyNy43IDI0bDE2LjQgNS41LTQxLjIgMjAuNmMtMjEuOCAxMC45LTM1LjQgMzIuOC0zNS40IDU3LjJ2NTMuMWwtNzQuMSAyNC43Yy0xNi44IDUuNi0yNS44IDIzLjctMjAuMiA0MC41IDEuNyA1LjIgNC45IDkuNCA4LjcgMTIuOWwtMzguNy0xNC4xYy05LjctMy41LTE3LjQtMTAuNi0yMS44LTIwLTUuNi0xMi0xOS45LTE3LjItMzEuOS0xMS42cy0xNy4yIDE5LjktMTEuNiAzMS45YzkuOCAyMSAyNy4xIDM2LjkgNDguOSA0NC44bDM2NC44IDEzMi43YzkuNyAzLjUgMTkuNyA1LjMgMjkuNyA1LjMgMTIuNSAwIDI0LjktMi43IDM2LjUtOC4yIDEyLTUuNiAxNy4yLTE5LjkgMTEuNi0zMS45UzQ3NCA0NTQuNyA0NjIgNDYwLjNjLTkuMyA0LjQtMTkuOCA0LjgtMjkuNSAxLjNsLTkwLjgtMzMuMWM4LjctNC4xIDE1LjYtMTEuOCAxNy44LTIxLjlsMjEuOS0xMDJjMy45LTE4LjItMy4yLTM3LjItMTguMS00OC40bC01Mi0zOSA2Ni0zMC41IDgzLjUgNjIuOXptLTE0NC40IDUxLjdsLTE5LjcgOTJjLTEuNSA3LjEtLjEgMTMuOSAyLjggMjBsLTE2OS40LTYxLjZjMi43LS4yIDUuNC0uNCA4LTEuM2w4NS0yOC40YzE5LjYtNi41IDMyLjgtMjQuOCAzMi44LTQ1LjVWMjU2bDYwLjUgNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU25vd2ZsYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC4zIDM0NS4ybC0zMy44LTE5LjUgMjYtN2M4LjItMi4yIDEzLjEtMTAuNyAxMC45LTE4LjlsLTQtMTQuOWMtMi4yLTguMi0xMC43LTEzLjEtMTguOS0xMC45bC03MC44IDE5LTYzLjktMzcgNjMuOC0zNi45IDcwLjggMTljOC4yIDIuMiAxNi43LTIuNyAxOC45LTEwLjlsNC0xNC45YzIuMi04LjItMi43LTE2LjctMTAuOS0xOC45bC0yNi03IDMzLjgtMTkuNWM3LjQtNC4zIDkuOS0xMy43IDUuNy0yMS4xTDQzMC40IDExOWMtNC4zLTcuNC0xMy43LTkuOS0yMS4xLTUuN2wtMzMuOCAxOS41IDctMjZjMi4yLTguMi0yLjctMTYuNy0xMC45LTE4LjlsLTE0LjktNGMtOC4yLTIuMi0xNi43IDIuNy0xOC45IDEwLjlsLTE5IDcwLjgtNjIuOCAzNi4ydi03Ny41bDUzLjctNTMuN2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtMTEuMy0xMS4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwyNTYgNTYuNFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDAuNGwtMTkuNy0xOS43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwxMzguMyA0OGMtNi4zIDYuMi02LjMgMTYuNCAwIDIyLjZsNTMuNyA1My43djc3LjVsLTYyLjgtMzYuMi0xOS03MC44Yy0yLjItOC4yLTEwLjctMTMuMS0xOC45LTEwLjlsLTE0LjkgNGMtOC4yIDIuMi0xMy4xIDEwLjctMTAuOSAxOC45bDcgMjYtMzMuOC0xOS41Yy03LjQtNC4zLTE2LjgtMS43LTIxLjEgNS43TDIuMSAxNDUuN2MtNC4zIDcuNC0xLjcgMTYuOCA1LjcgMjEuMWwzMy44IDE5LjUtMjYgN2MtOC4zIDIuMi0xMy4yIDEwLjctMTEgMTlsNCAxNC45YzIuMiA4LjIgMTAuNyAxMy4xIDE4LjkgMTAuOWw3MC44LTE5IDYzLjggMzYuOS02My44IDM2LjktNzAuOC0xOWMtOC4yLTIuMi0xNi43IDIuNy0xOC45IDEwLjlsLTQgMTQuOWMtMi4yIDguMiAyLjcgMTYuNyAxMC45IDE4LjlsMjYgNy0zMy44IDE5LjZjLTcuNCA0LjMtOS45IDEzLjctNS43IDIxLjFsMTUuNSAyNi44YzQuMyA3LjQgMTMuNyA5LjkgMjEuMSA1LjdsMzMuOC0xOS41LTcgMjZjLTIuMiA4LjIgMi43IDE2LjcgMTAuOSAxOC45bDE0LjkgNGM4LjIgMi4yIDE2LjctMi43IDE4LjktMTAuOWwxOS03MC44IDYyLjgtMzYuMnY3Ny41bC01My43IDUzLjdjLTYuMyA2LjItNi4zIDE2LjQgMCAyMi42bDExLjMgMTEuM2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGwxOS43LTE5LjdWNDk2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ2LTQwLjRsMTkuNyAxOS43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDExLjMtMTEuM2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNkwyNTYgMzg3Ljd2LTc3LjVsNjIuOCAzNi4yIDE5IDcwLjhjMi4yIDguMiAxMC43IDEzLjEgMTguOSAxMC45bDE0LjktNGM4LjItMi4yIDEzLjEtMTAuNyAxMC45LTE4LjlsLTctMjYgMzMuOCAxOS41YzcuNCA0LjMgMTYuOCAxLjcgMjEuMS01LjdsMTUuNS0yNi44YzQuMy03LjMgMS44LTE2LjgtNS42LTIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbm93bWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMC45IDE1Mi4zbC01LjktMTQuNWMtMy4zLTgtMTIuNi0xMS45LTIwLjgtOC43TDQ1NiAxNDAuNnYtMjljMC04LjYtNy4yLTE1LjYtMTYtMTUuNmgtMTZjLTguOCAwLTE2IDctMTYgMTUuNnY0Ni45YzAgLjUuMyAxIC4zIDEuNWwtNTYuNCAyM2MtNS45LTEwLTEzLjMtMTguOS0yMi0yNi42IDEzLjYtMTYuNiAyMi0zNy40IDIyLTYwLjUgMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAyMy4xIDguNSA0My45IDIyIDYwLjUtOC43IDcuNy0xNiAxNi42LTIyIDI2LjZsLTU2LjQtMjNjLjEtLjUuMy0xIC4zLTEuNXYtNDYuOUMxMDQgMTAzIDk2LjggOTYgODggOTZINzJjLTguOCAwLTE2IDctMTYgMTUuNnYyOWwtMjguMS0xMS41Yy04LjItMy4yLTE3LjUuNy0yMC44IDguN2wtNS45IDE0LjVjLTMuMyA4IC43IDE3LjEgOC45IDIwLjNsMTM1LjIgNTUuMmMtLjQgNC0xLjIgOC0xLjIgMTIuMiAwIDEwLjEgMS43IDE5LjYgNC4yIDI4LjlDMTIwLjkgMjk2LjQgMTA0IDMzNC4yIDEwNCAzNzZjMCA1NCAyOC40IDEwMC45IDcwLjggMTI3LjggOS4zIDUuOSAyMC4zIDguMiAzMS4zIDguMmg5OS4yYzEzLjMgMCAyNi4zLTQuMSAzNy4yLTExLjcgNDYuNS0zMi4zIDc0LjQtODkuNCA2Mi45LTE1Mi42LTUuNS0zMC4yLTIwLjUtNTcuNi00MS42LTc5IDIuNS05LjIgNC4yLTE4LjcgNC4yLTI4LjcgMC00LjItLjgtOC4xLTEuMi0xMi4yTDUwMiAxNzIuNmM4LjEtMy4xIDEyLjEtMTIuMiA4LjktMjAuM3pNMjI0IDk2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6bTMyIDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0wLTY0Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6bTAtNjRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMC04OHMtMTYtMjMuMi0xNi0zMiA3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTE2IDMyLTE2IDMyem0zMi01NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbm93cGxvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjAgMzc2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHptODAgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6bTgwIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjQgMjQtMTAuNyAyNC0yNC0xMC43LTI0LTI0LTI0em04MCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHptMjM4LjYgNDkuNGMtMTQuNS0xNC41LTIyLjYtMzQuMS0yMi42LTU0LjZWMjY5LjJjMC0yMC41IDguMS00MC4xIDIyLjYtNTQuNmwzNi43LTM2LjdjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTIyLjYtMjIuNmMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBsLTM2LjcgMzYuN2MtMjYuNSAyNi41LTQxLjQgNjIuNC00MS40IDk5LjlWMjg4aC02NHYtNTAuOWMwLTguNy0xLjgtMTcuMi01LjItMjUuMkwzNjQuNSAyOS4xQzM1Ni45IDExLjQgMzM5LjYgMCAzMjAuMyAwSDE3NmMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MTEyaC0xNmMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2OTEuMkMyNi4zIDMxNy4yIDAgMzU1LjQgMCA0MDBjMCA2MS45IDUwLjEgMTEyIDExMiAxMTJoMjU2YzYxLjkgMCAxMTItNTAuMSAxMTItMTEyIDAtMTcuMy00LjItMzMuNC0xMS4yLTQ4SDUxMnYxOC43YzAgMzcuNSAxNC45IDczLjQgNDEuNCA5OS45bDM2LjcgMzYuN2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGwyMi42LTIyLjZjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTM2LjctMzYuN3pNMTkyIDY0aDExNy44bDY4LjYgMTYwSDI1NmwtNjQtNjRWNjR6bTE3NiAzODRIMTEyYy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4aDI1NmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYsMTkyYTk1LjQyLDk1LjQyLDAsMCwxLTMwLjk0LDcwLjIxQTk1LjgsOTUuOCwwLDAsMSwzNTIsNDQ4SDE2MGE5Niw5NiwwLDAsMSwwLTE5Mmg4OC45MUE5NS4zLDk1LjMsMCwwLDEsMjI0LDE5Mkg5NkE5Niw5NiwwLDAsMCwwLDI4OFY0MTZhOTYsOTYsMCwwLDAsOTYsOTZINDE2YTk2LDk2LDAsMCwwLDk2LTk2VjI4OEE5Niw5NiwwLDAsMCw0MTYsMTkyWm0tOTYsNjRhNjQsNjQsMCwxLDAtNjQtNjRBNjQsNjQsMCwwLDAsMzIwLDI1NlpNMjA4LDk2YTQ4LDQ4LDAsMSwwLTQ4LTQ4QTQ4LDQ4LDAsMCwwLDIwOCw5NlpNMzg0LDY0YTMyLDMyLDAsMSwwLTMyLTMyQTMyLDMyLDAsMCwwLDM4NCw2NFpNMTYwLDI4OGE2NCw2NCwwLDAsMCwwLDEyOEgzNTJhNjQsNjQsMCwwLDAsMC0xMjhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvY2tzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNC42NiAzMTEuMDFMMjg4IDI1NlY5NkgxMjh2MTc2bC04Ni42NSA2NC42MWMtMzkuNCAyOS41Ni01My44NiA4NC40Mi0yOS4yMSAxMjcuMDZDMzAuMzkgNDk1LjI1IDYzLjI3IDUxMiA5Ni4wOCA1MTJjMjAuMDMgMCA0MC4yNS02LjI1IDU3LjUyLTE5LjJsMjEuODYtMTYuMzljLTI5Ljg1LTU1LjM4LTEzLjU0LTEyNS44NCAzOS4yLTE2NS40ek0yODggMzJjMC0xMS4wNSAzLjA3LTIxLjMgOC4wMi0zMC4zOEMyOTMuNC45MiAyOTAuODUgMCAyODggMEgxNjBjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJoMTYwVjMyek00ODAgMEgzNTJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJoMTkyVjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTMyMCAyNzJsLTg2LjEzIDY0LjYxYy0zOS40IDI5LjU2LTUzLjg2IDg0LjQyLTI5LjIxIDEyNy4wNiAxOC4yNSAzMS41OCA1MC42MSA0OC4zMyA4My40MiA0OC4zMyAyMC4wMyAwIDQwLjI1LTYuMjUgNTcuNTItMTkuMmwxMTUuMi04Ni40QTEyNy45OTcgMTI3Ljk5NyAwIDAgMCA1MTIgMzA0Vjk2SDMyMHYxNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvbGFyUGFuZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMxLjk4IDQ0OC4wMWwtNDcuOTcuMDVWNDE2aC0xMjh2MzIuMjFsLTQ3Ljk4LjA1Yy04LjgyLjAxLTE1Ljk3IDcuMTYtMTUuOTggMTUuOTlsLS4wNSAzMS43M2MtLjAxIDguODUgNy4xNyAxNi4wMyAxNi4wMiAxNi4wMmwyMjMuOTYtLjI2YzguODItLjAxIDE1Ljk3LTcuMTYgMTUuOTgtMTUuOThsLjA0LTMxLjczYy4wMS04Ljg1LTcuMTctMTYuMDMtMTYuMDItMTYuMDJ6TTU4NS4yIDI2Ljc0QzU4Mi41OCAxMS4zMSA1NjguOTkgMCA1NTMuMDYgMEg4Ni45M0M3MSAwIDU3LjQxIDExLjMxIDU0Ljc5IDI2Ljc0LTMuMzIgMzY5LjE2LjA0IDM0OC4wOC4wMyAzNTJjLS4wMyAxNy4zMiAxNC4yOSAzMiAzMi42IDMyaDU3NC43NGMxOC4yMyAwIDMyLjUxLTE0LjU2IDMyLjU5LTMxLjc5LjAyLTQuMDggMy4zNSAxNi45NS01NC43Ni0zMjUuNDd6TTI1OS44MyA2NGgxMjAuMzNsOS43NyA5NkgyNTAuMDZsOS43Ny05NnptLTc1LjE3IDI1Nkg3MS4wOUw5MC4xIDIwOGgxMDUuOTdsLTExLjQxIDExMnptMTYuMjktMTYwSDk4LjI0bDE2LjI5LTk2aDk2LjE5bC05Ljc3IDk2em0zMi44MiAxNjBsMTEuNC0xMTJoMTQ5LjY1bDExLjQgMTEySDIzMy43N3ptMTk1LjUtMjU2aDk2LjE5bDE2LjI5IDk2SDQzOS4wNGwtOS43Ny05NnptMjYuMDYgMjU2bC0xMS40LTExMkg1NDkuOWwxOS4wMSAxMTJINDU1LjMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0QWxwaGFEb3duQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAzNTJoLTQ4VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMwNEgxNmMtMTQuMTkgMC0yMS4zNiAxNy4yNC0xMS4yOSAyNy4zMWw4MCA5NmExNiAxNiAwIDAgMCAyMi42MiAwbDgwLTk2QzE5Ny4zNSAzNjkuMjYgMTkwLjIyIDM1MiAxNzYgMzUyem0xMTItMTI4aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTU2bDYxLjI2LTcwLjQ1QTMyIDMyIDAgMCAwIDQzMiA2NS42M1Y0OGExNiAxNiAwIDAgMC0xNi0xNkgyODhhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNTZsLTYxLjI2IDcwLjQ1QTMyIDMyIDAgMCAwIDI3MiAxOTAuMzdWMjA4YTE2IDE2IDAgMCAwIDE2IDE2em0xNTkuMDYgMjM0LjYybC01OS4yNy0xNjBBMTYgMTYgMCAwIDAgMzcyLjcyIDI4OGgtNDEuNDRhMTYgMTYgMCAwIDAtMTUuMDcgMTAuNjJsLTU5LjI3IDE2MEExNiAxNiAwIDAgMCAyNzIgNDgwaDI0LjgzYTE2IDE2IDAgMCAwIDE1LjIzLTExLjA4bDQuNDItMTIuOTJoNzFsNC40MSAxMi45MkExNiAxNiAwIDAgMCA0MDcuMTYgNDgwSDQzMmExNiAxNiAwIDAgMCAxNS4wNi0yMS4zOHpNMzM1LjYxIDQwMEwzNTIgMzUybDE2LjM5IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0QWxwaGFEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAzNTJoLTQ4VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMwNEgxNmMtMTQuMTkgMC0yMS4zNiAxNy4yNC0xMS4yOSAyNy4zMWw4MCA5NmExNiAxNiAwIDAgMCAyMi42MiAwbDgwLTk2QzE5Ny4zNSAzNjkuMjYgMTkwLjIyIDM1MiAxNzYgMzUyem0yNDAtNjRIMjg4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDU2bC02MS4yNiA3MC40NUEzMiAzMiAwIDAgMCAyNzIgNDQ2LjM3VjQ2NGExNiAxNiAwIDAgMCAxNiAxNmgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2aC01Nmw2MS4yNi03MC40NUEzMiAzMiAwIDAgMCA0MzIgMzIxLjYzVjMwNGExNiAxNiAwIDAgMC0xNi0xNnptMzEuMDYtODUuMzhsLTU5LjI3LTE2MEExNiAxNiAwIDAgMCAzNzIuNzIgMzJoLTQxLjQ0YTE2IDE2IDAgMCAwLTE1LjA3IDEwLjYybC01OS4yNyAxNjBBMTYgMTYgMCAwIDAgMjcyIDIyNGgyNC44M2ExNiAxNiAwIDAgMCAxNS4yMy0xMS4wOGw0LjQyLTEyLjkyaDcxbDQuNDEgMTIuOTJBMTYgMTYgMCAwIDAgNDA3LjE2IDIyNEg0MzJhMTYgMTYgMCAwIDAgMTUuMDYtMjEuMzh6TTMzNS42MSAxNDRMMzUyIDk2bDE2LjM5IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0QWxwaGFVcEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxNjBoNDh2MzA0YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2MGg0OGMxNC4yMSAwIDIxLjM4LTE3LjI0IDExLjMxLTI3LjMxbC04MC05NmExNiAxNiAwIDAgMC0yMi42MiAwbC04MCA5NkMtNS4zNSAxNDIuNzQgMS43OCAxNjAgMTYgMTYwem0yNzIgNjRoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNmgtNTZsNjEuMjYtNzAuNDVBMzIgMzIgMCAwIDAgNDMyIDY1LjYzVjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDI4OGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg1NmwtNjEuMjYgNzAuNDVBMzIgMzIgMCAwIDAgMjcyIDE5MC4zN1YyMDhhMTYgMTYgMCAwIDAgMTYgMTZ6bTE1OS4wNiAyMzQuNjJsLTU5LjI3LTE2MEExNiAxNiAwIDAgMCAzNzIuNzIgMjg4aC00MS40NGExNiAxNiAwIDAgMC0xNS4wNyAxMC42MmwtNTkuMjcgMTYwQTE2IDE2IDAgMCAwIDI3MiA0ODBoMjQuODNhMTYgMTYgMCAwIDAgMTUuMjMtMTEuMDhsNC40Mi0xMi45Mmg3MWw0LjQxIDEyLjkyQTE2IDE2IDAgMCAwIDQwNy4xNiA0ODBINDMyYTE2IDE2IDAgMCAwIDE1LjA2LTIxLjM4ek0zMzUuNjEgNDAwTDM1MiAzNTJsMTYuMzkgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnRBbHBoYVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE2MGg0OHYzMDRhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWMTYwaDQ4YzE0LjIxIDAgMjEuMzgtMTcuMjQgMTEuMzEtMjcuMzFsLTgwLTk2YTE2IDE2IDAgMCAwLTIyLjYyIDBsLTgwIDk2Qy01LjM1IDE0Mi43NCAxLjc4IDE2MCAxNiAxNjB6bTQwMCAxMjhIMjg4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDU2bC02MS4yNiA3MC40NUEzMiAzMiAwIDAgMCAyNzIgNDQ2LjM3VjQ2NGExNiAxNiAwIDAgMCAxNiAxNmgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2aC01Nmw2MS4yNi03MC40NUEzMiAzMiAwIDAgMCA0MzIgMzIxLjYzVjMwNGExNiAxNiAwIDAgMC0xNi0xNnptMzEuMDYtODUuMzhsLTU5LjI3LTE2MEExNiAxNiAwIDAgMCAzNzIuNzIgMzJoLTQxLjQ0YTE2IDE2IDAgMCAwLTE1LjA3IDEwLjYybC01OS4yNyAxNjBBMTYgMTYgMCAwIDAgMjcyIDIyNGgyNC44M2ExNiAxNiAwIDAgMCAxNS4yMy0xMS4wOGw0LjQyLTEyLjkyaDcxbDQuNDEgMTIuOTJBMTYgMTYgMCAwIDAgNDA3LjE2IDIyNEg0MzJhMTYgMTYgMCAwIDAgMTUuMDYtMjEuMzh6TTMzNS42MSAxNDRMMzUyIDk2bDE2LjM5IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0QW1vdW50RG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDAgOTZoNjRhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZoLTY0YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2em0wIDEyOGgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2SDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNnptMjU2IDE5MkgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMjU2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptLTI1Ni02NGgxOTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2SDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNnptLTY0IDBoLTQ4VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMwNEgxNmMtMTQuMTkgMC0yMS4zNyAxNy4yNC0xMS4yOSAyNy4zMWw4MCA5NmExNiAxNiAwIDAgMCAyMi42MiAwbDgwLTk2QzE5Ny4zNSAzNjkuMjYgMTkwLjIyIDM1MiAxNzYgMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0QW1vdW50RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgNDE2aC02NGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg2NGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bS0xMjgtNjRoLTQ4VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMwNEgxNmMtMTQuMTkgMC0yMS4zNyAxNy4yNC0xMS4yOSAyNy4zMWw4MCA5NmExNiAxNiAwIDAgMCAyMi42MiAwbDgwLTk2QzE5Ny4zNSAzNjkuMjYgMTkwLjIyIDM1MiAxNzYgMzUyem0yNTYtMTkySDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgxOTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tNjQgMTI4SDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek00OTYgMzJIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI1NmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ydEFtb3VudFVwQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MCA5Nmg2NGExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNmgtNjRhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZ6bTAgMTI4aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2em0yNTYgMTkySDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyNTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tMjU2LTY0aDE5MmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2ek0xNiAxNjBoNDh2MzA0YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2MGg0OGMxNC4yMSAwIDIxLjM5LTE3LjI0IDExLjMxLTI3LjMxbC04MC05NmExNiAxNiAwIDAgMC0yMi42MiAwbC04MCA5NkMtNS4zNSAxNDIuNzQgMS43OCAxNjAgMTYgMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0QW1vdW50VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDQxNmgtNjRhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNjRhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek0xNiAxNjBoNDh2MzA0YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2MGg0OGMxNC4yMSAwIDIxLjM4LTE3LjI0IDExLjMxLTI3LjMxbC04MC05NmExNiAxNiAwIDAgMC0yMi42MiAwbC04MCA5NkMtNS4zNSAxNDIuNzQgMS43NyAxNjAgMTYgMTYwem00MTYgMEgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTkyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptLTY0IDEyOEgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNNDk2IDMySDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyNTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxIDI4OGgyMzhjMjEuNCAwIDMyLjEgMjUuOSAxNyA0MUwxNzcgNDQ4Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwyNCAzMjljLTE1LjEtMTUuMS00LjQtNDEgMTctNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnROdW1lcmljRG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgMzUyaC00OFY0OGExNiAxNiAwIDAgMC0xNi0xNkg4MGExNiAxNiAwIDAgMC0xNiAxNnYzMDRIMTZjLTE0LjE5IDAtMjEuMzYgMTcuMjQtMTEuMjkgMjcuMzFsODAgOTZhMTYgMTYgMCAwIDAgMjIuNjIgMGw4MC05NkMxOTcuMzUgMzY5LjI2IDE5MC4yMiAzNTIgMTc2IDM1MnptMjI0IDY0aC0xNlYzMDRhMTYgMTYgMCAwIDAtMTYtMTZoLTQ4YTE2IDE2IDAgMCAwLTE0LjI5IDguODNsLTE2IDMyQTE2IDE2IDAgMCAwIDMwNCAzNTJoMTZ2NjRoLTE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDk2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMzMwLjE3IDM0LjkxYTc5IDc5IDAgMCAwLTU1IDU0LjE3Yy0xNC4yNyA1MS4wNSAyMS4xOSA5Ny43NyA2OC44MyAxMDIuNTNhODQuMDcgODQuMDcgMCAwIDEtMjAuODUgMTIuOTFjLTcuNTcgMy40LTEwLjggMTIuNDctOC4xOCAyMC4zNGw5LjkgMjBjMi44NyA4LjYzIDEyLjUzIDEzLjQ5IDIwLjkgOS45MSA1OC0yNC43NyA4Ni4yNS02MS42MSA4Ni4yNS0xMzJWMTEyYy0uMDItNTEuMjEtNDguNC05MS4zNC0xMDEuODUtNzcuMDl6TTM1MiAxMzJhMjAgMjAgMCAxIDEgMjAtMjAgMjAgMjAgMCAwIDEtMjAgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnROdW1lcmljRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgOTZoMTZ2NjRoLTE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDk2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNmgtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZoLTQ4YTE2IDE2IDAgMCAwLTE0LjI5IDguODNsLTE2IDMyQTE2IDE2IDAgMCAwIDMwNCA5NnptMjYuMTUgMTYyLjkxYTc5IDc5IDAgMCAwLTU1IDU0LjE3Yy0xNC4yNSA1MS4wNSAyMS4yMSA5Ny43NyA2OC44NSAxMDIuNTNhODQuMDcgODQuMDcgMCAwIDEtMjAuODUgMTIuOTFjLTcuNTcgMy40LTEwLjggMTIuNDctOC4xOCAyMC4zNGw5LjkgMjBjMi44NyA4LjYzIDEyLjUzIDEzLjQ5IDIwLjkgOS45MSA1OC0yNC43NiA4Ni4yNS02MS42MSA4Ni4yNS0xMzJWMzM2Yy0uMDItNTEuMjEtNDguNC05MS4zNC0xMDEuODUtNzcuMDl6TTM1MiAzNTZhMjAgMjAgMCAxIDEgMjAtMjAgMjAgMjAgMCAwIDEtMjAgMjB6bS0xNzYtNGgtNDhWNDhhMTYgMTYgMCAwIDAtMTYtMTZIODBhMTYgMTYgMCAwIDAtMTYgMTZ2MzA0SDE2Yy0xNC4xOSAwLTIxLjM2IDE3LjI0LTExLjI5IDI3LjMxbDgwIDk2YTE2IDE2IDAgMCAwIDIyLjYyIDBsODAtOTZDMTk3LjM1IDM2OS4yNiAxOTAuMjIgMzUyIDE3NiAzNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnROdW1lcmljVXBBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA3LjMxIDM2LjY5YTE2IDE2IDAgMCAwLTIyLjYyIDBsLTgwIDk2Qy01LjM1IDE0Mi43NCAxLjc4IDE2MCAxNiAxNjBoNDh2MzA0YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2MGg0OGMxNC4yMSAwIDIxLjM4LTE3LjI0IDExLjMxLTI3LjMxek00MDAgNDE2aC0xNlYzMDRhMTYgMTYgMCAwIDAtMTYtMTZoLTQ4YTE2IDE2IDAgMCAwLTE0LjI5IDguODNsLTE2IDMyQTE2IDE2IDAgMCAwIDMwNCAzNTJoMTZ2NjRoLTE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDk2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMzMwLjE3IDM0LjkxYTc5IDc5IDAgMCAwLTU1IDU0LjE3Yy0xNC4yNyA1MS4wNSAyMS4xOSA5Ny43NyA2OC44MyAxMDIuNTNhODQuMDcgODQuMDcgMCAwIDEtMjAuODUgMTIuOTFjLTcuNTcgMy40LTEwLjggMTIuNDctOC4xOCAyMC4zNGw5LjkgMjBjMi44NyA4LjYzIDEyLjUzIDEzLjQ5IDIwLjkgOS45MSA1OC0yNC43NyA4Ni4yNS02MS42MSA4Ni4yNS0xMzJWMTEyYy0uMDItNTEuMjEtNDguNC05MS4zNC0xMDEuODUtNzcuMDl6TTM1MiAxMzJhMjAgMjAgMCAxIDEgMjAtMjAgMjAgMjAgMCAwIDEtMjAgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnROdW1lcmljVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMwLjE3IDI1OC45MWE3OSA3OSAwIDAgMC01NSA1NC4xN2MtMTQuMjcgNTEuMDUgMjEuMTkgOTcuNzcgNjguODMgMTAyLjUzYTg0LjA3IDg0LjA3IDAgMCAxLTIwLjg1IDEyLjkxYy03LjU3IDMuNC0xMC44IDEyLjQ3LTguMTggMjAuMzRsOS45IDIwYzIuODcgOC42MyAxMi41MyAxMy40OSAyMC45IDkuOTEgNTgtMjQuNzYgODYuMjUtNjEuNjEgODYuMjUtMTMyVjMzNmMtLjAyLTUxLjIxLTQ4LjQtOTEuMzQtMTAxLjg1LTc3LjA5ek0zNTIgMzU2YTIwIDIwIDAgMSAxIDIwLTIwIDIwIDIwIDAgMCAxLTIwIDIwek0zMDQgOTZoMTZ2NjRoLTE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDk2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNmgtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZoLTQ4YTE2IDE2IDAgMCAwLTE0LjI5IDguODNsLTE2IDMyQTE2IDE2IDAgMCAwIDMwNCA5NnpNMTA3LjMxIDM2LjY5YTE2IDE2IDAgMCAwLTIyLjYyIDBsLTgwIDk2Qy01LjM1IDE0Mi43NCAxLjc4IDE2MCAxNiAxNjBoNDh2MzA0YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2MGg0OGMxNC4yMSAwIDIxLjM4LTE3LjI0IDExLjMxLTI3LjMxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc5IDIyNEg0MWMtMjEuNCAwLTMyLjEtMjUuOS0xNy00MUwxNDMgNjRjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTE5IDExOWMxNS4yIDE1LjEgNC41IDQxLTE2LjkgNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDEgMjg4aDIzOGMyMS40IDAgMzIuMSAyNS45IDE3IDQxTDE3NyA0NDhjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDI0IDMyOWMtMTUuMS0xNS4xLTQuNC00MSAxNy00MXptMjU1LTEwNUwxNzcgNjRjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDI0IDE4M2MtMTUuMSAxNS4xLTQuNCA0MSAxNyA0MWgyMzhjMjEuNCAwIDMyLjEtMjUuOSAxNy00MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2OC4yNSAxOTJjLTI5LjA0LjEzLTEzNS4wMSA2LjE2LTIxMy44NCA4My0zMy4xMiAyOS42My01My4zNiA2My4zLTY2LjQxIDk0Ljg2LTEzLjA1LTMxLjU2LTMzLjI5LTY1LjIzLTY2LjQxLTk0Ljg2LTc4LjgzLTc2Ljg0LTE4NC44LTgyLjg3LTIxMy44NC04My00LjQxLS4wMi03Ljc5IDMuNC03Ljc1IDcuODIuMjMgMjcuOTIgNy4xNCAxMjYuMTQgODguNzcgMTk5LjNDMTcyLjc5IDQ4MC45NCAyNTYgNDgwIDI4OCA0ODBzMTE1LjE5Ljk1IDE5OS4yMy04MC44OGM4MS42NC03My4xNyA4OC41NC0xNzEuMzggODguNzctMTk5LjMuMDQtNC40Mi0zLjM0LTcuODQtNy43NS03Ljgyek0yODcuOTggMzAyLjZjMTIuODItMTguODUgMjcuNi0zNS43OCA0NC4wOS01MC41MiAxOS4wOS0xOC42MSAzOS41OC0zMy4zIDYwLjI2LTQ1LjE4LTE2LjQ0LTcwLjUtNTEuNzItMTMzLjA1LTk2LjczLTE3Mi4yMi00LjExLTMuNTgtMTEuMDItMy41OC0xNS4xNCAwLTQ0Ljk5IDM5LjE0LTgwLjI3IDEwMS42My05Ni43NCAxNzIuMDcgMjAuMzcgMTEuNyA0MC41IDI2LjE0IDU5LjIyIDQ0LjM5YTI4Mi43NjggMjgyLjc2OCAwIDAgMSA0NS4wNCA1MS40NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BhY2VTaHV0dGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU5Mi42MDQgMjA4LjI0NEM1NTkuNzM1IDE5Mi44MzYgNTE1Ljc3NyAxODQgNDcyIDE4NEgxODYuMzI3Yy00Ljk1Mi02LjU1NS0xMC41ODUtMTEuOTc4LTE2LjcyLTE2SDM3NkMyMjkuMTU3IDEzNy43NDcgMjE5LjQwMyAzMiA5Ni4wMDMgMzJIOTZ2MTI4SDgwVjMyYy0yNi41MSAwLTQ4IDI4LjY1NC00OCA2NHY2NGMtMjMuMTk3IDAtMzIgMTAuMDMyLTMyIDI0djQwYzAgMTMuOTgzIDguODE5IDI0IDMyIDI0djE2Yy0yMy4xOTcgMC0zMiAxMC4wMzItMzIgMjR2NDBjMCAxMy45ODMgOC44MTkgMjQgMzIgMjR2NjRjMCAzNS4zNDYgMjEuNDkgNjQgNDggNjRWMzUyaDE2djEyOGguMDAzYzEyMy40IDAgMTMzLjE1NC0xMDUuNzQ3IDI3OS45OTctMTM2SDE2OS42MDZjNi4xMzUtNC4wMjIgMTEuNzY4LTkuNDQ1IDE2LjcyLTE2SDQ3MmM0My43NzcgMCA4Ny43MzUtOC44MzYgMTIwLjYwNC0yNC4yNDRDNjIyLjI4MiAyODkuODQ1IDY0MCAyNzEuOTkyIDY0MCAyNTZzLTE3LjcxOC0zMy44NDUtNDcuMzk2LTQ3Ljc1NnpNNDg4IDI5NmE4IDggMCAwIDEtOC04di02NGE4IDggMCAwIDEgOC04YzMxLjkwOSAwIDMxLjk0MiA4MCAwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGVsbENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiAyNTZoOTEuMzZjNDMuMiAwIDgyLTMyLjIgODQuNTEtNzUuMzRhNzkuODIgNzkuODIgMCAwIDAtMjUuMjYtNjMuMDcgNzkuODEgNzkuODEgMCAwIDAgOS4wNi00NC45MUM0MjcuOSAzMC41NyAzODkuMyAwIDM0NyAwaC03NWExNiAxNiAwIDAgMC0xNiAxNnYyMjRhMTYgMTYgMCAwIDAgMTYgMTZ6bTQwLTIwMGg0MGEyNCAyNCAwIDAgMSAwIDQ4aC00MHptMCA5Nmg1NmEyNCAyNCAwIDAgMSAwIDQ4aC01NnpNMTU1LjEyIDIyLjI1QTMyIDMyIDAgMCAwIDEyNC42NCAwSDk5LjM2YTMyIDMyIDAgMCAwLTMwLjQ4IDIyLjI1TC41OSAyMzUuNzNBMTYgMTYgMCAwIDAgMTYgMjU2aDI0LjkzYTE2IDE2IDAgMCAwIDE1LjQyLTExLjczTDY4LjI5IDIwOGg4Ny40MmwxMS45NCAzNi4yN0ExNiAxNiAwIDAgMCAxODMuMDcgMjU2SDIwOGExNiAxNiAwIDAgMCAxNS40Mi0yMC4yN3pNODkuMzcgMTQ0TDExMiA3NS4zbDIyLjYzIDY4Ljd6bTQ4MiAxMzIuNDhsLTQ1LjIxLTQ1LjNhMTUuODggMTUuODggMCAwIDAtMjIuNTkgMGwtMTUxLjUgMTUxLjUtNTUuNDEtNTUuNWExNS44OCAxNS44OCAwIDAgMC0yMi41OSAwbC00NS4zIDQ1LjNhMTYgMTYgMCAwIDAgMCAyMi41OWwxMTIgMTEyLjIxYTE1Ljg5IDE1Ljg5IDAgMCAwIDIyLjYgMGwyMDgtMjA4LjIxYTE2IDE2IDAgMCAwLS4wMi0yMi41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BpZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MS4xNyAxNjcuMzVMMTc3LjEgMTc2aDQuNjdsNS4yMi0yNi4xMmMuNzItMy41OCAxLjgtNy41OCAzLjIxLTExLjc5bC0yMC4yOS00MC41OCAyMy44LTcxLjM5YzIuNzktOC4zOC0xLjczLTE3LjQ0LTEwLjEyLTIwLjI0TDE2OC40Mi44MmMtOC4zOC0yLjgtMTcuNDUgMS43My0yMC4yNCAxMC4xMmwtMjUuODkgNzcuNjhhMzIuMDQgMzIuMDQgMCAwIDAgMS43MyAyNC40M2wyNy4xNSA1NC4zem00MjIuMTQgMTgyLjAzbC01Mi43NS03OS4xMmEzMi4wMDIgMzIuMDAyIDAgMCAwLTI2LjYyLTE0LjI1SDQxNmw2OC45OS0yNC4zNmEzMi4wMyAzMi4wMyAwIDAgMCAxNi41MS0xMi42MWw1My42LTgwLjQxYzQuOS03LjM1IDIuOTEtMTcuMjktNC40NC0yMi4xOWwtMTMuMzEtOC44OGMtNy4zNS00LjktMTcuMjktMi45MS0yMi4xOSA0LjQ0bC01MC41NiA3NS44M0w0MDQuMSAyMDhIMzY4bC0xMC4zNy01MS44NUMzNTUuNDQgMTQ1LjE4IDM0MC4yNiA5NiAyODggOTZjLTUyLjI2IDAtNjcuNDQgNDkuMTgtNjkuNjMgNjAuMTVMMjA4IDIwOGgtMzYuMWwtNjAuNDktMjAuMTdMNjAuODQgMTEyYy00LjktNy4zNS0xNC44My05LjM0LTIyLjE5LTQuNDRsLTEzLjMxIDguODhjLTcuMzUgNC45LTkuMzQgMTQuODMtNC40NCAyMi4xOWw1My42IDgwLjQxYTMyLjAzIDMyLjAzIDAgMCAwIDE2LjUxIDEyLjYxTDE2MCAyNTZIODIuMDZhMzIuMDIgMzIuMDIgMCAwIDAtMjYuNjMgMTQuMjVMMi42OSAzNDkuMzhjLTQuOSA3LjM1LTIuOTIgMTcuMjkgNC40NCAyMi4xOWwxMy4zMSA4Ljg4YzcuMzUgNC45IDE3LjI5IDIuOTEgMjIuMTktNC40NGw0OC03Mmg0Ny4wNmwtNjAuODMgOTcuMzNBMzEuOTg4IDMxLjk4OCAwIDAgMCA3MiA0MTguM1Y0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTczLjExbDc0LjA4LTExOC41M2MtMS4wMSAxNC4wNS0yLjA4IDI4LjExLTIuMDggNDIuMjFDMTkyIDM5OS42NCAyMzIuNzYgNDQ4IDI4OCA0NDhzOTYtNDguMzYgOTYtMTAxLjQzYzAtMTQuMS0xLjA4LTI4LjE2LTIuMDgtNDIuMjFMNDU2IDQyMi44OVY0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTc3LjcxYzAtNi0xLjY5LTExLjg4LTQuODYtMTYuOTZMNDM4LjMxIDMwNGg0Ny4wNmw0OCA3MmM0LjkgNy4zNSAxNC44NCA5LjM0IDIyLjE5IDQuNDRsMTMuMzEtOC44OGM3LjM2LTQuOSA5LjM0LTE0LjgzIDQuNDQtMjIuMTh6TTQwNi4wOSA5Ny41MWwtMjAuMjkgNDAuNThjMS40MSA0LjIxIDIuNDkgOC4yMSAzLjIxIDExLjc5bDUuMjIgMjYuMTJoNC42N2wyNS45My04LjY1IDI3LjE1LTU0LjNhMzEuOTk1IDMxLjk5NSAwIDAgMCAxLjczLTI0LjQzbC0yNS44OS03Ny42OEM0MjUuMDMgMi41NiA0MTUuOTYtMS45OCA0MDcuNTguODJsLTE1LjE3IDUuMDZjLTguMzggMi44LTEyLjkxIDExLjg2LTEwLjEyIDIwLjI0bDIzLjggNzEuMzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwaW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDQ4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4IDIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4em0tNDggMzY4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4LTIxLjQ5LTQ4LTQ4LTQ4em0yMDgtMjA4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4LTIxLjQ5LTQ4LTQ4LTQ4ek05NiAyNTZjMC0yNi41MS0yMS40OS00OC00OC00OFMwIDIyOS40OSAwIDI1NnMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OHptMTIuOTIyIDk5LjA3OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OGMwLTI2LjUwOS0yMS40OTEtNDgtNDgtNDh6bTI5NC4xNTYgMGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OGMwLTI2LjUwOS0yMS40OS00OC00OC00OHpNMTA4LjkyMiA2MC45MjJjLTI2LjUxIDAtNDggMjEuNDktNDggNDhzMjEuNDkgNDggNDggNDggNDgtMjEuNDkgNDgtNDgtMjEuNDkxLTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGxvdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3Mi4yOSAxOTUuODlsLTY3LjA2LTIyLjk1Yy0xOS4yOC02LjYtMzMuNTQtMjAuOTItMzguMTQtMzguM0wzNTEuMSA3NC4xOWMtMTEuNTgtNDMuNzctNzYuNTctNTcuMTMtMTA5Ljk4LTIyLjYybC00Ni4xNCA0Ny42N2MtMTMuMjYgMTMuNzEtMzMuNTQgMjAuOTMtNTQuMiAxOS4zMWwtNzEuODgtNS42MmMtNTIuMDUtNC4wNy04Ni45MyA0NC44OC01OS4wMyA4Mi44M2wzOC41NCA1Mi40MmMxMS4wOCAxNS4wNyAxMi44MiAzMy44NiA0LjY0IDUwLjI0TDI0LjYyIDM1NS40Yy0yMC41OSA0MS4yNSAyMi44NCA4NC44NyA3My40OSA3My44MWw2OS45Ni0xNS4yOGMyMC4xMS00LjM5IDQxLjQ1IDAgNTcuMDcgMTEuNzNsNTQuMzIgNDAuODNjMzkuMzIgMjkuNTYgMTAxLjA0IDcuNTcgMTA0LjQ1LTM3LjIybDQuNy02MS44NmMxLjM1LTE3Ljc5IDEyLjgtMzMuODYgMzAuNjMtNDIuOTlsNjItMzEuNzRjNDQuODgtMjIuOTYgMzkuNTktODAuMTctOC45NS05Ni43OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3ByYXlDYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2aDEyOFYzMnptMjU2IDk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyem0tMjU2IDMySDk2Yy01My4wMiAwLTk2IDQyLjk4LTk2IDk2djIyNGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDI1NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjI1NmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2em0tNjQgMjU2Yy00NC4xOCAwLTgwLTM1LjgyLTgwLTgwczM1LjgyLTgwIDgwLTgwIDgwIDM1LjgyIDgwIDgwLTM1LjgyIDgwLTgwIDgwek00ODAgOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnMtMTQuMzMtMzItMzItMzItMzIgMTQuMzMtMzIgMzIgMTQuMzMgMzIgMzIgMzJ6bS05NiAzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnMxNC4zMyAzMiAzMiAzMiAzMi0xNC4zMyAzMi0zMi0xNC4zMy0zMi0zMi0zMnptLTk2LTk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyem05NiAwYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyem05NiAxOTJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJzMTQuMzMgMzIgMzIgMzIgMzItMTQuMzMgMzItMzItMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUZ1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDUxMkgwVjBoNTEydjUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUm9vdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzEuMzEgMjUxLjMxbC0yMi42Mi0yMi42MmMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMEw0ODAgMjc0Ljc1bC00Ni4wNi00Ni4wNmMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtMjIuNjIgMjIuNjJjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNMNDM0Ljc1IDMyMGwtNDYuMDYgNDYuMDZjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsMjIuNjIgMjIuNjJjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMEw0ODAgMzY1LjI1bDQ2LjA2IDQ2LjA2YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMjIuNjItMjIuNjJjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M0w1MjUuMjUgMzIwbDQ2LjA2LTQ2LjA2YzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjN6TTU1MiAwSDMwNy42NWMtMTQuNTQgMC0yNy4yNiA5LjgtMzAuOTUgMjMuODdsLTg0Ljc5IDMyMi44LTU4LjQxLTEwNi4xQTMyLjAwOCAzMi4wMDggMCAwIDAgMTA1LjQ3IDIyNEgyNGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY0OGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQzLjYybDg4Ljg4IDE2My43M0MxNjguOTkgNTAzLjUgMTg2LjMgNTEyIDIwNC45NCA1MTJjMTcuMjcgMCA0NC40NC05IDU0LjI4LTQxLjQ4TDM1Ny4wMyA5Nkg1NTJjMTMuMjUgMCAyNC0xMC43NSAyNC0yNFYyNGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhbXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNTEyaDQ0OHYtNjRIMzJ2NjR6bTM4NC0yNTZoLTY2LjU2Yy0xNi4yNiAwLTI5LjQ0LTEzLjE4LTI5LjQ0LTI5LjQ0di05LjQ2YzAtMjcuMzcgOC44OC01My40MSAyMS40Ni03Ny43MiA5LjExLTE3LjYxIDEyLjktMzguMzkgOS4wNS02MC40Mi02Ljc3LTM4Ljc4LTM4LjQ3LTcwLjctNzcuMjYtNzcuNDVDMjEyLjYyLTkuMDQgMTYwIDM3LjMzIDE2MCA5NmMwIDE0LjE2IDMuMTIgMjcuNTQgOC42OSAzOS41OEMxODIuMDIgMTY0LjQzIDE5MiAxOTQuNyAxOTIgMjI2LjQ5di4wN2MwIDE2LjI2LTEzLjE4IDI5LjQ0LTI5LjQ0IDI5LjQ0SDk2Yy01My4wMiAwLTk2IDQyLjk4LTk2IDk2djMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNDQ4YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyYzAtNTMuMDItNDIuOTgtOTYtOTYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YXJBbmRDcmVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDAuNDcgNDY2LjM2Yy0xLjQ1IDAtNi44OS40Ni05LjE4LjQ2LTExNi4yNSAwLTIxMC44Mi05NC41Ny0yMTAuODItMjEwLjgyUzIxNS4wNCA0NS4xOCAzMzEuMjkgNDUuMThjMi4zMiAwIDcuNy40NiA5LjE4LjQ2IDcuMTMgMCAxMy4zMy01LjAzIDE0Ljc1LTEyLjA3IDEuNDYtNy4yNS0yLjU1LTE0LjQ5LTkuNDctMTcuMDlDMzE2LjU4IDUuNTQgMjg2LjM5IDAgMjU2IDAgMTE0Ljg0IDAgMCAxMTQuODQgMCAyNTZzMTE0Ljg0IDI1NiAyNTYgMjU2YzMwLjIzIDAgNjAuMjgtNS40OSA4OS4zMi0xNi4zMiA1Ljk2LTIuMDIgMTAuMjgtNy42NCAxMC4yOC0xNC4yNiAwLTguMDktNi4zOS0xNS4wNi0xNS4xMy0xNS4wNnptMTYyLjk5LTI1Mi41bC03Ni4zOC0xMS4xLTM0LjE2LTY5LjIxYy0xLjgzLTMuNy01LjM4LTUuNTUtOC45My01LjU1cy03LjEgMS44NS04LjkzIDUuNTVsLTM0LjE2IDY5LjIxLTc2LjM4IDExLjFjLTguMTcgMS4xOC0xMS40MyAxMS4yMi01LjUyIDE2Ljk5bDU1LjI3IDUzLjg3LTEzLjA1IDc2LjA3Yy0xLjExIDYuNDQgNC4wMSAxMS42NiA5LjgxIDExLjY2IDEuNTMgMCAzLjExLS4zNiA0LjY0LTEuMTdMMzg0IDMzNS4zN2w2OC4zMSAzNS45MWMxLjUzLjggMy4xMSAxLjE3IDQuNjQgMS4xNyA1LjggMCAxMC45Mi01LjIzIDkuODEtMTEuNjZsLTEzLjA1LTc2LjA3IDU1LjI3LTUzLjg3YzUuOTEtNS43NyAyLjY1LTE1LjgxLTUuNTItMTYuOTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YXJIYWxmQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwOC41NSAxNzEuNTFMMzYyLjE4IDE1MC4yIDI5Ni43NyAxNy44MUMyOTAuODkgNS45OCAyNzkuNDIgMCAyNjcuOTUgMGMtMTEuNCAwLTIyLjc5IDUuOS0yOC42OSAxNy44MWwtNjUuNDMgMTMyLjM4LTE0Ni4zOCAyMS4yOWMtMjYuMjUgMy44LTM2Ljc3IDM2LjA5LTE3Ljc0IDU0LjU5bDEwNS44OSAxMDMtMjUuMDYgMTQ1LjQ4Qzg2Ljk4IDQ5NS4zMyAxMDMuNTcgNTEyIDEyMi4xNSA1MTJjNC45MyAwIDEwLTEuMTcgMTQuODctMy43NWwxMzAuOTUtNjguNjggMTMwLjk0IDY4LjdjNC44NiAyLjU1IDkuOTIgMy43MSAxNC44MyAzLjcxIDE4LjYgMCAzNS4yMi0xNi42MSAzMS42Ni0zNy40bC0yNS4wMy0xNDUuNDkgMTA1LjkxLTEwMi45OGMxOS4wNC0xOC41IDguNTItNTAuOC0xNy43My01NC42em0tMTIxLjc0IDEyMy4ybC0xOC4xMiAxNy42MiA0LjI4IDI0Ljg4IDE5LjUyIDExMy40NS0xMDIuMTMtNTMuNTktMjIuMzgtMTEuNzQuMDMtMzE3LjE5IDUxLjAzIDEwMy4yOSAxMS4xOCAyMi42MyAyNS4wMSAzLjY0IDExNC4yMyAxNi42My04Mi42NSA4MC4zOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhckhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBjLTExLjQgMC0yMi44IDUuOS0yOC43IDE3LjhMMTk0IDE1MC4yIDQ3LjkgMTcxLjRjLTI2LjIgMy44LTM2LjcgMzYuMS0xNy43IDU0LjZsMTA1LjcgMTAzLTI1IDE0NS41Yy00LjUgMjYuMSAyMyA0NiA0Ni40IDMzLjdMMjg4IDQzOS42VjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YXJPZkRhdmlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NjQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNS42OCAyNTZsNTMuMjEtODkuMzlDNDczLjMgMTQyLjQgNDU1LjQ4IDExMiA0MjYuODggMTEySDMxOS45NmwtNTUuOTUtOTMuOThDMjU2Ljg2IDYuMDEgMjQ0LjQzIDAgMjMyIDBzLTI0Ljg2IDYuMDEtMzIuMDEgMTguMDJMMTQ0LjA0IDExMkgzNy4xMWMtMjguNiAwLTQ2LjQyIDMwLjQtMzIuMDEgNTQuNjFMNTguMzIgMjU2IDUuMSAzNDUuMzlDLTkuMzEgMzY5LjYgOC41MSA0MDAgMzcuMTEgNDAwaDEwNi45M2w1NS45NSA5My45OEMyMDcuMTQgNTA1Ljk5IDIxOS41NyA1MTIgMjMyIDUxMnMyNC44Ni02LjAxIDMyLjAxLTE4LjAyTDMxOS45NiA0MDBoMTA2LjkzYzI4LjYgMCA0Ni40Mi0zMC40IDMyLjAxLTU0LjYxTDQwNS42OCAyNTZ6bS0xMi43OC04OGwtMTkuOCAzMy4yNkwzNTMuMyAxNjhoMzkuNnptLTUyLjM5IDg4bC01Mi4zOSA4OEgxNzUuODhsLTUyLjM5LTg4IDUyLjM4LTg4aDExMi4yNWw1Mi4zOSA4OHpNMjMyIDczLjcyTDI1NC43OSAxMTJoLTQ1LjU3TDIzMiA3My43MnpNNzEuMSAxNjhoMzkuNmwtMTkuOCAzMy4yNkw3MS4xIDE2OHptMCAxNzZsMTkuOC0zMy4yNkwxMTAuNyAzNDRINzEuMXpNMjMyIDQzOC4yOEwyMDkuMjEgNDAwaDQ1LjU3TDIzMiA0MzguMjh6TTM1My4yOSAzNDRsMTkuOC0zMy4yNkwzOTIuOSAzNDRoLTM5LjYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFyT2ZMaWZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3MS45OSAzMzQuNDNMMzM2LjA2IDI1NmwxMzUuOTMtNzguNDNjNy42Ni00LjQyIDEwLjI4LTE0LjIgNS44Ni0yMS44NmwtMzIuMDItNTUuNDNjLTQuNDItNy42NS0xNC4yMS0xMC4yOC0yMS44Ny01Ljg2bC0xMzUuOTMgNzguNDNWMTZjMC04Ljg0LTcuMTctMTYtMTYuMDEtMTZoLTY0LjA0Yy04Ljg0IDAtMTYuMDEgNy4xNi0xNi4wMSAxNnYxNTYuODZMNTYuMDQgOTQuNDNjLTcuNjYtNC40Mi0xNy40NS0xLjc5LTIxLjg3IDUuODZMMi4xNSAxNTUuNzFjLTQuNDIgNy42NS0xLjggMTcuNDQgNS44NiAyMS44NkwxNDMuOTQgMjU2IDguMDEgMzM0LjQzYy03LjY2IDQuNDItMTAuMjggMTQuMjEtNS44NiAyMS44NmwzMi4wMiA1NS40M2M0LjQyIDcuNjUgMTQuMjEgMTAuMjcgMjEuODcgNS44NmwxMzUuOTMtNzguNDNWNDk2YzAgOC44NCA3LjE3IDE2IDE2LjAxIDE2aDY0LjA0YzguODQgMCAxNi4wMS03LjE2IDE2LjAxLTE2VjMzOS4xNGwxMzUuOTMgNzguNDNjNy42NiA0LjQyIDE3LjQ1IDEuOCAyMS44Ny01Ljg2bDMyLjAyLTU1LjQzYzQuNDItNy42NSAxLjgtMTcuNDMtNS44Ni0yMS44NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTkuMyAxNy44TDE5NCAxNTAuMiA0Ny45IDE3MS41Yy0yNi4yIDMuOC0zNi43IDM2LjEtMTcuNyA1NC42bDEwNS43IDEwMy0yNSAxNDUuNWMtNC41IDI2LjMgMjMuMiA0NiA0Ni40IDMzLjdMMjg4IDQzOS42bDEzMC43IDY4LjdjMjMuMiAxMi4yIDUwLjktNy40IDQ2LjQtMzMuN2wtMjUtMTQ1LjUgMTA1LjctMTAzYzE5LTE4LjUgOC41LTUwLjgtMTcuNy01NC42TDM4MiAxNTAuMiAzMTYuNyAxNy44Yy0xMS43LTIzLjYtNDUuNi0yMy45LTU3LjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RlcEJhY2t3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ2OFY0NGMwLTYuNiA1LjQtMTIgMTItMTJoNDhjNi42IDAgMTIgNS40IDEyIDEydjE3Ni40bDE5NS41LTE4MUMzNTIuMSAyMi4zIDM4NCAzNi42IDM4NCA2NHYzODRjMCAyNy40LTMxLjkgNDEuNy01Mi41IDI0LjZMMTM2IDI5Mi43VjQ2OGMwIDYuNi01LjQgMTItMTIgMTJINzZjLTYuNiAwLTEyLTUuNC0xMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RlcEZvcndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDQ0djQyNGMwIDYuNi01LjQgMTItMTIgMTJoLTQ4Yy02LjYgMC0xMi01LjQtMTItMTJWMjkxLjZsLTE5NS41IDE4MUM5NS45IDQ4OS43IDY0IDQ3NS40IDY0IDQ0OFY2NGMwLTI3LjQgMzEuOS00MS43IDUyLjUtMjQuNkwzMTIgMjE5LjNWNDRjMC02LjYgNS40LTEyIDEyLTEyaDQ4YzYuNiAwIDEyIDUuNCAxMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RldGhvc2NvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ3LjEgMTEyYy0zNC4yLjUtNjIuMyAyOC40LTYzIDYyLjYtLjUgMjQuMyAxMi41IDQ1LjYgMzIgNTYuOFYzNDRjMCA1Ny4zLTUwLjIgMTA0LTExMiAxMDQtNjAgMC0xMDkuMi00NC4xLTExMS45LTk5LjJDMjY1IDMzMy44IDMyMCAyNjkuMiAzMjAgMTkyVjM2LjZjMC0xMS40LTguMS0yMS4zLTE5LjMtMjMuNUwyMzcuOC41Yy0xMy0yLjYtMjUuNiA1LjgtMjguMiAxOC44TDIwNi40IDM1Yy0yLjYgMTMgNS44IDI1LjYgMTguOCAyOC4ybDMwLjcgNi4xdjEyMS40YzAgNTIuOS00Mi4yIDk2LjctOTUuMSA5Ny4yLTUzLjQuNS05Ni45LTQyLjctOTYuOS05NlY2OS40bDMwLjctNi4xYzEzLTIuNiAyMS40LTE1LjIgMTguOC0yOC4ybC0zLjEtMTUuN0MxMDcuNyA2LjQgOTUuMS0yIDgyLjEuNkwxOS4zIDEzQzguMSAxNS4zIDAgMjUuMSAwIDM2LjZWMTkyYzAgNzcuMyA1NS4xIDE0MiAxMjguMSAxNTYuOEMxMzAuNyA0MzkuMiAyMDguNiA1MTIgMzA0IDUxMmM5NyAwIDE3Ni03NS40IDE3Ni0xNjhWMjMxLjRjMTkuMS0xMS4xIDMyLTMxLjcgMzItNTUuNCAwLTM1LjctMjkuMi02NC41LTY0LjktNjR6bS45IDgwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0aWNreU5vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEyIDMyMGgxMzZWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjRDMTAuNyAzMiAwIDQyLjcgMCA1NnY0MDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMjY0VjM0NGMwLTEzLjIgMTAuOC0yNCAyNC0yNHptMTI5IDU1bC05OCA5OGMtNC41IDQuNS0xMC42IDctMTcgN2gtNlYzNTJoMTI4djYuMWMwIDYuMy0yLjUgMTIuNC03IDE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3BDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptOTYgMzI4YzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3B3YXRjaDIwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5OC41LDE5MC45MWwuNTktLjYxLDI2LjU5LTI2LjU4YTE2LDE2LDAsMCwwLDAtMjIuNjNMNDAzLDExOC40MWExNiwxNiwwLDAsMC0yMi42MywwbC0yNC42OCwyNC42OEEyMDYuNjgsMjA2LjY4LDAsMCwwLDI1Niw5OC41VjY0aDMyYTE2LDE2LDAsMCwwLDE2LTE2VjE2QTE2LDE2LDAsMCwwLDI4OCwwSDE2MGExNi4wNSwxNi4wNSwwLDAsMC0xNiwxNlY0OGExNi4wNSwxNi4wNSwwLDAsMCwxNiwxNmgzMlY5OC41QTIwNy45MiwyMDcuOTIsMCwwLDAsMTYuMDksMjk3LjU3QzEyLjY0LDQxMS41LDEwNi43Niw1MTAuMjIsMjIwLjcyLDUxMiwzMzcuMTMsNTEzLjc3LDQzMiw0MjAsNDMyLDMwNEEyMDYsMjA2LDAsMCwwLDM5OC41LDE5MC45MVpNMjA0LjM3LDM3Ny41NWE4LjIsOC4yLDAsMCwxLDguMzIsOC4wN3YyMi4zMWE4LjIsOC4yLDAsMCwxLTguMzIsOC4wN0gxMjEuNTJhMTYuNDYsMTYuNDYsMCwwLDEtMTYuNjEtMTcuNjJjMi43OC0zNS4yMiwxNC42Ny01Ny40MSwzOC40NS05MS4zNywyMC40Mi0yOS4xOSwyNy4xLTM3LjMyLDI3LjEtNjIuMzQsMC0xNi45Mi0xLjc5LTI0LjI3LTEyLjIxLTI0LjI3LTkuMzksMC0xMi42OSw3LjQtMTIuNjksMjIuNjh2NS4yM2E4LjIsOC4yLDAsMCwxLTguMzMsOC4wN2gtMjQuOWE4LjIsOC4yLDAsMCwxLTguMzMtOC4wN3YtNC4wN2MwLTI3LjMsOC40OC02MC4yNCw1Ni40My02MC4yNCw0MywwLDU1LjU3LDI1Ljg1LDU1LjU3LDYxLDAsMzUuNTgtMTIuNDQsNTEuMjEtMzQuMzUsODEuMzEtMTEuNTYsMTUtMjQuNjEsMzUuNTctMjYuNDEsNTEuMlpNMzQ0LDM1Mi4zMmMwLDM1LjE2LTEyLjMsNjMuNjgtNTcuMjMsNjMuNjhDMjQzLjE5LDQxNiwyMzIsMzg2LjQ4LDIzMiwzNTIuNTVWMjQ3LjIyYzAtNDAuNzMsMTkuNTgtNjMuMjIsNTYuMi02My4yMkMzMjUsMTg0LDM0NCwyMDYuNjQsMzQ0LDI0NS4zWk0yODcuODcsMjIxLjczYy05LjQxLDAtMTMuMjMsNy41LTEzLjIzLDIwVjM1Ny42OGMwLDEzLjExLDMuNTksMjAuNTksMTMuMjMsMjAuNTlzMTMtOCwxMy0yMS4yN1YyNDEuMDZDMzAwLjg5LDIyOS43OSwyOTcuODgsMjIxLjczLDI4Ny44NywyMjEuNzNaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3B3YXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIgMzA0YzAgMTE0LjktOTMuMSAyMDgtMjA4IDIwOFMxNiA0MTguOSAxNiAzMDRjMC0xMDQgNzYuMy0xOTAuMiAxNzYtMjA1LjVWNjRoLTI4Yy02LjYgMC0xMi01LjQtMTItMTJWMTJjMC02LjYgNS40LTEyIDEyLTEyaDEyMGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC0yOHYzNC41YzM3LjUgNS44IDcxLjcgMjEuNiA5OS43IDQ0LjZsMjcuNS0yNy41YzQuNy00LjcgMTIuMy00LjcgMTcgMGwyOC4zIDI4LjNjNC43IDQuNyA0LjcgMTIuMyAwIDE3bC0yOS40IDI5LjQtLjYuNkM0MTkuNyAyMjMuMyA0MzIgMjYyLjIgNDMyIDMwNHptLTE3NiAzNlYxODguNWMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJWMzQwYzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3JlQWx0U2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuODksMTIzLjYyLDUuNTEsMTQyLjJjLTE0LjIsMjEuMywxLDQ5LjgsMjYuNTksNDkuOGg3NC4yNlpNNTc2LDQxMy40MlYyMjRINTEyVjM2NEwzODQsMjY1VjIyNEgzMzAuOTJsLTQxLjQtMzJINjA4YzI1LjUsMCw0MC43LTI4LjUsMjYuNTktNDkuOGwtODUuMjktMTI4QTMyLjE4LDMyLjE4LDAsMCwwLDUyMi42LDBIMTE3LjQyQTMxLjg3LDMxLjg3LDAsMCwwLDkwLjgxLDE0LjJsLTEwLjY2LDE2TDQ1LjQ2LDMuMzhBMTYsMTYsMCwwLDAsMjMsNi4xOUwzLjM3LDMxLjQ2QTE2LDE2LDAsMCwwLDYuMTgsNTMuOTFMNTk0LjUzLDUwOC42M0ExNiwxNiwwLDAsMCw2MTcsNTA1LjgxbDE5LjY0LTI1LjI2YTE2LDE2LDAsMCwwLTIuODEtMjIuNDVaTTMyMCwzODRIMTI4VjIyNEg2NFY0ODBhMzIsMzIsMCwwLDAsMzIsMzJIMzUyYTMyLDMyLDAsMCwwLDMyLTMyVjQwNi41OWwtNjQtNDkuNDdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3JlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAzODRIMTI4VjIyNEg2NHYyNTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoMjU2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIyNGgtNjR2MTYwem0zMTQuNi0yNDEuOGwtODUuMy0xMjhjLTYtOC45LTE2LTE0LjItMjYuNy0xNC4ySDExNy40Yy0xMC43IDAtMjAuNyA1LjMtMjYuNiAxNC4ybC04NS4zIDEyOGMtMTQuMiAyMS4zIDEgNDkuOCAyNi42IDQ5LjhINjA4YzI1LjUgMCA0MC43LTI4LjUgMjYuNi00OS44ek01MTIgNDk2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjI0aC02NHYyNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3JlU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIxLjUxLDM4NFYyODQuMmExMTkuNDMsMTE5LjQzLDAsMCwxLTI4LDMuOCwxMjMuNDYsMTIzLjQ2LDAsMCwxLTE3LjEtMS4yLDExNC44OCwxMTQuODgsMCwwLDEtMTUuNTgtMy42VjQ4MGMwLDE3LjcsMTMuNTksMzIsMzAuNCwzMkg1MDUuNzVMMzQ4LjQyLDM4NFptLTI4LTEyOC4wOWMyNS4xLDAsNDcuMjktMTAuNzIsNjQtMjcuMjRMMjQsMTIwLjA1Yy0zMC41Miw1My4zOS0yLjQ1LDEyNi41Myw1Ni40OSwxMzVBOTUuNjgsOTUuNjgsMCwwLDAsOTMuNDgsMjU1LjkxWk02MDIuMTMsNDU4LjA5LDU0Ny4yLDQxMy40MVYyODMuMmE5My41LDkzLjUsMCwwLDEtMTUuNTcsMy42LDEyNy4zMSwxMjcuMzEsMCwwLDEtMTcuMjksMS4yLDExNC44OSwxMTQuODksMCwwLDEtMjgtMy44djc5LjY4TDM0OC41MiwyNTEuNzdhODguMDYsODguMDYsMCwwLDAsMjUuNDEsNC4xNGMyOC4xMSwwLDUzLTEzLDcwLjExLTMzLjExLDE3LjE5LDIwLjExLDQyLjA4LDMzLjExLDcwLjExLDMzLjExYTk0LjMxLDk0LjMxLDAsMCwwLDEzLS45MWM1OS42Ni04LjQxLDg4LTgyLjgsNTYuMDYtMTM2LjRMNTIxLjU1LDE1QTMwLjEsMzAuMSwwLDAsMCw0OTUuODEsMEgxMTJBMzAuMTEsMzAuMTEsMCwwLDAsODYuMjcsMTVMNzYuODgsMzAuNzgsNDMuMTksMy4zOEExNC42OCwxNC42OCwwLDAsMCwyMS44Niw2LjE5TDMuMiwzMS40NUExNi41OCwxNi41OCwwLDAsMCw1Ljg3LDUzLjkxTDU2NC44MSw1MDguNjNhMTQuNjksMTQuNjksMCwwLDAsMjEuMzMtMi44MmwxOC42Ni0yNS4yNkExNi41OCwxNi41OCwwLDAsMCw2MDIuMTMsNDU4LjA5WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjE2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDIgMTE4LjZMNTM3LjEgMTVDNTMxLjMgNS43IDUyMSAwIDUxMCAwSDEwNkM5NSAwIDg0LjcgNS43IDc4LjkgMTVMMTQgMTE4LjZjLTMzLjUgNTMuNS0zLjggMTI3LjkgNTguOCAxMzYuNCA0LjUuNiA5LjEuOSAxMy43LjkgMjkuNiAwIDU1LjgtMTMgNzMuOC0zMy4xIDE4IDIwLjEgNDQuMyAzMy4xIDczLjggMzMuMSAyOS42IDAgNTUuOC0xMyA3My44LTMzLjEgMTggMjAuMSA0NC4zIDMzLjEgNzMuOCAzMy4xIDI5LjYgMCA1NS44LTEzIDczLjgtMzMuMSAxOC4xIDIwLjEgNDQuMyAzMy4xIDczLjggMzMuMSA0LjcgMCA5LjItLjMgMTMuNy0uOSA2Mi44LTguNCA5Mi42LTgyLjggNTktMTM2LjR6TTUyOS41IDI4OGMtMTAgMC0xOS45LTEuNS0yOS41LTMuOFYzODRIMTE2di05OS44Yy05LjYgMi4yLTE5LjUgMy44LTI5LjUgMy44LTYgMC0xMi4xLS40LTE4LTEuMi01LjYtLjgtMTEuMS0yLjEtMTYuNC0zLjZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMlYyODMuMmMtNS40IDEuNi0xMC44IDIuOS0xNi40IDMuNi02LjEuOC0xMi4xIDEuMi0xOC4yIDEuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RyZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDEyOGg0MTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiAzMiAwIDM5LjE2IDAgNDh2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZ6bTQ4MCA4MEg4MGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDE2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnptLTY0IDE3NkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDE2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RyZWV0VmlldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjcuOSAzMjkuNzZjLTQuNjIgNS4zLTkuNzggMTAuMS0xNS45IDEzLjY1djIyLjk0YzY2LjUyIDkuMzQgMTEyIDI4LjA1IDExMiA0OS42NSAwIDMwLjkzLTkzLjEyIDU2LTIwOCA1NlM0OCA0NDYuOTMgNDggNDE2YzAtMjEuNiA0NS40OC00MC4zIDExMi00OS42NXYtMjIuOTRjLTYuMTItMy41NS0xMS4yOC04LjM1LTE1LjktMTMuNjVDNTguODcgMzQ1LjM0IDAgMzc4LjA1IDAgNDE2YzAgNTMuMDIgMTE0LjYyIDk2IDI1NiA5NnMyNTYtNDIuOTggMjU2LTk2YzAtMzcuOTUtNTguODctNzAuNjYtMTQ0LjEtODYuMjR6TTI1NiAxMjhjMzUuMzUgMCA2NC0yOC42NSA2NC02NFMyOTEuMzUgMCAyNTYgMHMtNjQgMjguNjUtNjQgNjQgMjguNjUgNjQgNjQgNjR6bS02NCAxOTJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4aC0xMS44Yy0xMS4wNyA1LjAzLTIzLjI2IDgtMzYuMiA4cy0yNS4xMy0yLjk3LTM2LjItOEgyMDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RyaWtldGhyb3VnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMjI0SDI5My45bC04Ny4xNy0yNi44M0E0My41NSA0My41NSAwIDAgMSAyMTkuNTUgMTEyaDY2Ljc5QTQ5Ljg5IDQ5Ljg5IDAgMCAxIDMzMSAxMzkuNThhMTYgMTYgMCAwIDAgMjEuNDYgNy4xNWw0Mi45NC0yMS40N2ExNiAxNiAwIDAgMCA3LjE2LTIxLjQ2bC0uNTMtMUExMjggMTI4IDAgMCAwIDI4Ny41MSAzMmgtNjhhMTIzLjY4IDEyMy42OCAwIDAgMC0xMjMgMTM1LjY0YzIgMjAuODkgMTAuMSAzOS44MyAyMS43OCA1Ni4zNkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0ODBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tMTgwLjI0IDk2QTQzIDQzIDAgMCAxIDMzNiAzNTYuNDUgNDMuNTkgNDMuNTkgMCAwIDEgMjkyLjQ1IDQwMGgtNjYuNzlBNDkuODkgNDkuODkgMCAwIDEgMTgxIDM3Mi40MmExNiAxNiAwIDAgMC0yMS40Ni03LjE1bC00Mi45NCAyMS40N2ExNiAxNiAwIDAgMC03LjE2IDIxLjQ2bC41MyAxQTEyOCAxMjggMCAwIDAgMjI0LjQ5IDQ4MGg2OGExMjMuNjggMTIzLjY4IDAgMCAwIDEyMy0xMzUuNjQgMTE0LjI1IDExNC4yNSAwIDAgMC01LjM0LTI0LjM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHJvb3B3YWZlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODguMTIgMjEwLjc0TDE0Mi44NiAyNTZsNDUuMjUgNDUuMjVMMjMzLjM3IDI1NmwtNDUuMjUtNDUuMjZ6bTExMy4xMy0yMi42MkwyNTYgMTQyLjg2bC00NS4yNSA0NS4yNUwyNTYgMjMzLjM3bDQ1LjI1LTQ1LjI1em0tOTAuNSAxMzUuNzZMMjU2IDM2OS4xNGw0NS4yNi00NS4yNkwyNTYgMjc4LjYzbC00NS4yNSA0NS4yNXpNMjU2IDBDMTE0LjYyIDAgMCAxMTQuNjIgMCAyNTZzMTE0LjYyIDI1NiAyNTYgMjU2IDI1Ni0xMTQuNjIgMjU2LTI1NlMzOTcuMzggMCAyNTYgMHptMTg2LjY4IDI5NS42bC0xMS4zMSAxMS4zMWMtMy4xMiAzLjEyLTguMTkgMy4xMi0xMS4zMSAwbC0yOC4yOS0yOC4yOS00NS4yNSA0NS4yNSAzMy45NCAzMy45NCAxNi45Ny0xNi45N2MzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMTEuMzEgMTEuMzFjMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxbC0xNi45NyAxNi45NyAxNi45NyAxNi45N2MzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFsLTExLjMxIDExLjMxYy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTE2Ljk3LTE2Ljk3LTE2Ljk3IDE2Ljk3Yy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTExLjMxLTExLjMxYy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMTYuOTctMTYuOTctMzMuOTQtMzMuOTQtNDUuMjYgNDUuMjYgMjguMjkgMjguMjljMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxbC0xMS4zMSAxMS4zMWMtMy4xMiAzLjEyLTguMTkgMy4xMi0xMS4zMSAwTDI1NiA0MTQuMzlsLTI4LjI5IDI4LjI5Yy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTExLjMxLTExLjMxYy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMjguMjktMjguMjktNDUuMjUtNDUuMjYtMzMuOTQgMzMuOTQgMTYuOTcgMTYuOTdjMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxbC0xMS4zMSAxMS4zMWMtMy4xMiAzLjEyLTguMTkgMy4xMi0xMS4zMSAwbC0xNi45Ny0xNi45Ny0xNi45NyAxNi45N2MtMy4xMiAzLjEyLTguMTkgMy4xMi0xMS4zMSAwbC0xMS4zMS0xMS4zMWMtMy4xMi0zLjEyLTMuMTItOC4xOSAwLTExLjMxbDE2Ljk3LTE2Ljk3LTE2Ljk3LTE2Ljk3Yy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMTEuMzEtMTEuMzFjMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDE2Ljk3IDE2Ljk3IDMzLjk0LTMzLjk0LTQ1LjI1LTQ1LjI1LTI4LjI5IDI4LjI5Yy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBMNjkuMzIgMjk1LjZjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMUw5Ny42MSAyNTZsLTI4LjI5LTI4LjI5Yy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMTEuMzEtMTEuMzFjMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDI4LjI5IDI4LjI5IDQ1LjI1LTQ1LjI2LTMzLjk0LTMzLjk0LTE2Ljk3IDE2Ljk3Yy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTExLjMxLTExLjMxYy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMTYuOTctMTYuOTctMTYuOTctMTYuOTdjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxMS4zMS0xMS4zMWMzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMTYuOTcgMTYuOTcgMTYuOTctMTYuOTdjMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDExLjMxIDExLjMxYzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtMTYuOTcgMTYuOTcgMzMuOTQgMzMuOTQgNDUuMjYtNDUuMjUtMjguMjktMjguMjljLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxMS4zMS0xMS4zMWMzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBMMjU2IDk3LjYxbDI4LjI5LTI4LjI5YzMuMTItMy4xMiA4LjE5LTMuMTIgMTEuMzEgMGwxMS4zMSAxMS4zMWMzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFsLTI4LjI5IDI4LjI5IDQ1LjI2IDQ1LjI1IDMzLjk0LTMzLjk0LTE2Ljk3LTE2Ljk3Yy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMTEuMzEtMTEuMzFjMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDE2Ljk3IDE2Ljk3IDE2Ljk3LTE2Ljk3YzMuMTItMy4xMiA4LjE5LTMuMTIgMTEuMzEgMGwxMS4zMSAxMS4zMWMzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFsLTE2Ljk3IDE2Ljk3IDE2Ljk3IDE2Ljk3YzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtMTEuMzEgMTEuMzFjLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMGwtMTYuOTctMTYuOTctMzMuOTQgMzMuOTQgNDUuMjUgNDUuMjYgMjguMjktMjguMjljMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDExLjMxIDExLjMxYzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMUw0MTQuMzkgMjU2bDI4LjI5IDI4LjI4YTguMDE1IDguMDE1IDAgMCAxIDAgMTEuMzJ6TTI3OC42MyAyNTZsNDUuMjYgNDUuMjVMMzY5LjE0IDI1NmwtNDUuMjUtNDUuMjZMMjc4LjYzIDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Vic2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiA0NDhoLTE2VjMwNGExNiAxNiAwIDAgMC0xNi0xNmgtNDhhMTYgMTYgMCAwIDAtMTQuMjkgOC44M2wtMTYgMzJBMTYgMTYgMCAwIDAgNDAwIDM1MmgxNnY5NmgtMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoOTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek0zMzYgNjRoLTY3YTE2IDE2IDAgMCAwLTEzLjE0IDYuODdsLTc5LjkgMTE1LTc5LjktMTE1QTE2IDE2IDAgMCAwIDgzIDY0SDE2QTE2IDE2IDAgMCAwIDAgODB2NDhhMTYgMTYgMCAwIDAgMTYgMTZoMzMuNDhsNzcuODEgMTEyLTc3LjgxIDExMkgxNmExNiAxNiAwIDAgMC0xNiAxNnY0OGExNiAxNiAwIDAgMCAxNiAxNmg2N2ExNiAxNiAwIDAgMCAxMy4xNC02Ljg3bDc5LjktMTE1IDc5LjkgMTE1QTE2IDE2IDAgMCAwIDI2OSA0NDhoNjdhMTYgMTYgMCAwIDAgMTYtMTZ2LTQ4YTE2IDE2IDAgMCAwLTE2LTE2aC0zMy40OGwtNzcuODEtMTEyIDc3LjgxLTExMkgzMzZhMTYgMTYgMCAwIDAgMTYtMTZWODBhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1YndheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZ2MjU2YzAgNTEuODE1LTYxLjYyNCA5Ni0xMzAuMDIyIDk2bDYyLjk4IDQ5LjcyMUMzODYuOTA1IDUwMi40MTcgMzgzLjU2MiA1MTIgMzc2IDUxMkg3MmMtNy41NzggMC0xMC44OTItOS41OTQtNC45NTctMTQuMjc5TDEzMC4wMjIgNDQ4QzYxLjgyIDQ0OCAwIDQwMy45NTQgMCAzNTJWOTZDMCA0Mi45ODEgNjQgMCAxMjggMGgxOTJjNjUgMCAxMjggNDIuOTgxIDEyOCA5NnpNMjAwIDIzMlYxMjBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDcyYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTEyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0em0yMDAgMFYxMjBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI3MmMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djExMmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTA0YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHptLTQ4IDU2Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4LTIxLjQ5LTQ4LTQ4LTQ4em0tMjU2IDBjLTI2LjUxIDAtNDggMjEuNDktNDggNDhzMjEuNDkgNDggNDggNDggNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1aXRjYXNlUm9sbGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgMTYwSDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djIyNGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDE2djE2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmgxMjh2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2aDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMjA4YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS0xNiAyMTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgyNDBjNC40MiAwIDggMy41OCA4IDh2MTZ6bTAtOTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgyNDBjNC40MiAwIDggMy41OCA4IDh2MTZ6TTE0NCA0OGg5NnY4MGg0OFY0OGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4aC05NmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY4MGg0OFY0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VpdGNhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDQ4MGgyNTZWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhIMTc2Yy0yNi41IDAtNDggMjEuNS00OCA0OHY0MDB6bTY0LTM4NGgxMjh2MzJIMTkyVjk2em0zMjAgODB2MjU2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4aC00OFYxMjhoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTk2IDQ4MEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTc2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4djM1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAxNjBjLTUyLjkgMC05NiA0My4xLTk2IDk2czQzLjEgOTYgOTYgOTYgOTYtNDMuMSA5Ni05Ni00My4xLTk2LTk2LTk2em0yNDYuNCA4MC41bC05NC43LTQ3LjMgMzMuNS0xMDAuNGM0LjUtMTMuNi04LjQtMjYuNS0yMS45LTIxLjlsLTEwMC40IDMzLjUtNDcuNC05NC44Yy02LjQtMTIuOC0yNC42LTEyLjgtMzEgMGwtNDcuMyA5NC43TDkyLjcgNzAuOGMtMTMuNi00LjUtMjYuNSA4LjQtMjEuOSAyMS45bDMzLjUgMTAwLjQtOTQuNyA0Ny40Yy0xMi44IDYuNC0xMi44IDI0LjYgMCAzMWw5NC43IDQ3LjMtMzMuNSAxMDAuNWMtNC41IDEzLjYgOC40IDI2LjUgMjEuOSAyMS45bDEwMC40LTMzLjUgNDcuMyA5NC43YzYuNCAxMi44IDI0LjYgMTIuOCAzMSAwbDQ3LjMtOTQuNyAxMDAuNCAzMy41YzEzLjYgNC41IDI2LjUtOC40IDIxLjktMjEuOWwtMzMuNS0xMDAuNCA5NC43LTQ3LjNjMTMtNi41IDEzLTI0LjcuMi0zMS4xem0tMTU1LjkgMTA2Yy00OS45IDQ5LjktMTMxLjEgNDkuOS0xODEgMC00OS45LTQ5LjktNDkuOS0xMzEuMSAwLTE4MSA0OS45LTQ5LjkgMTMxLjEtNDkuOSAxODEgMCA0OS45IDQ5LjkgNDkuOSAxMzEuMSAwIDE4MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VwZXJzY3JpcHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDE2MGgtMTZWMTZhMTYgMTYgMCAwIDAtMTYtMTZoLTQ4YTE2IDE2IDAgMCAwLTE0LjI5IDguODNsLTE2IDMyQTE2IDE2IDAgMCAwIDQwMCA2NGgxNnY5NmgtMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoOTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek0zMzYgNjRoLTY3YTE2IDE2IDAgMCAwLTEzLjE0IDYuODdsLTc5LjkgMTE1LTc5LjktMTE1QTE2IDE2IDAgMCAwIDgzIDY0SDE2QTE2IDE2IDAgMCAwIDAgODB2NDhhMTYgMTYgMCAwIDAgMTYgMTZoMzMuNDhsNzcuODEgMTEyLTc3LjgxIDExMkgxNmExNiAxNiAwIDAgMC0xNiAxNnY0OGExNiAxNiAwIDAgMCAxNiAxNmg2N2ExNiAxNiAwIDAgMCAxMy4xNC02Ljg3bDc5LjktMTE1IDc5LjkgMTE1QTE2IDE2IDAgMCAwIDI2OSA0NDhoNjdhMTYgMTYgMCAwIDAgMTYtMTZ2LTQ4YTE2IDE2IDAgMCAwLTE2LTE2aC0zMy40OGwtNzcuODEtMTEyIDc3LjgxLTExMkgzMzZhMTYgMTYgMCAwIDAgMTYtMTZWODBhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1cnByaXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTEzNiAyMDhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzJ6bTExMiAyMDhjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjQgNjQgMjguNyA2NCA2NC0yOC43IDY0LTY0IDY0em04MC0xNzZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTd2F0Y2hib29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzNC42NiwxNjcuNzFoMEwzNDQuNSw3Ny4zNmEzMS44MywzMS44MywwLDAsMC00NS0uMDdoMGwtLjA3LjA3TDIyNCwxNTIuODhWNDI0TDQzNC42NiwyMTIuOUEzMiwzMiwwLDAsMCw0MzQuNjYsMTY3LjcxWk00ODAsMzIwSDM3My4wOUwxODYuNjgsNTA2LjUxYy0yLjA2LDIuMDctNC41LDMuNTgtNi42OCw1LjQ5SDQ4MGEzMiwzMiwwLDAsMCwzMi0zMlYzNTJBMzIsMzIsMCwwLDAsNDgwLDMyMFpNMTkyLDMyQTMyLDMyLDAsMCwwLDE2MCwwSDMyQTMyLDMyLDAsMCwwLDAsMzJWNDE2YTk2LDk2LDAsMCwwLDE5MiwwWk05Niw0NDBhMjQsMjQsMCwxLDEsMjQtMjRBMjQsMjQsMCwwLDEsOTYsNDQwWm0zMi0xODRINjRWMTkyaDY0Wm0wLTEyOEg2NFY2NGg2NFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3dpbW1lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODkuNjEgMzEwLjU4YzMuNTQgMy4yNiAxNS4yNyA5LjQyIDM0LjM5IDkuNDJzMzAuODYtNi4xNiAzNC4zOS05LjQyYzE2LjAyLTE0Ljc3IDM0LjUtMjIuNTggNTMuNDYtMjIuNThoMTYuM2MxOC45NiAwIDM3LjQ1IDcuODEgNTMuNDYgMjIuNTggMy41NCAzLjI2IDE1LjI3IDkuNDIgMzQuMzkgOS40MnMzMC44Ni02LjE2IDM0LjM5LTkuNDJjMTQuODYtMTMuNzEgMzEuODgtMjEuMTIgNDkuMzktMjIuMTZsLTExMi44NC04MC42IDE4LTEyLjg2YzMuNjQtMi41OCA4LjI4LTMuNTIgMTIuNjItMi42MWwxMDAuMzUgMjEuNTNjMjUuOTEgNS41MyA1MS40NC0xMC45NyA1Ny0zNi44OCA1LjU1LTI1LjkyLTEwLjk1LTUxLjQ0LTM2Ljg4LTU3TDQzNy42OCA5OC40N2MtMzAuNzMtNi41OC02My4wMi4xMi04OC41NiAxOC4zOGwtODAuMDIgNTcuMTdjLTEwLjM4IDcuMzktMTkuMzYgMTYuNDQtMjYuNzIgMjYuOTRMMTczLjc1IDI5OWM1LjQ3IDMuMjMgMTAuODIgNi45MyAxNS44NiAxMS41OHpNNjI0IDM1MmgtMTZjLTI2LjA0IDAtNDUuOC04LjQyLTU2LjA5LTE3LjktOC45LTguMjEtMTkuNjYtMTQuMS0zMS43Ny0xNC4xaC0xNi4zYy0xMi4xMSAwLTIyLjg3IDUuODktMzEuNzcgMTQuMUM0NjEuOCAzNDMuNTggNDQyLjA0IDM1MiA0MTYgMzUycy00NS44LTguNDItNTYuMDktMTcuOWMtOC45LTguMjEtMTkuNjYtMTQuMS0zMS43Ny0xNC4xaC0xNi4zYy0xMi4xMSAwLTIyLjg3IDUuODktMzEuNzcgMTQuMUMyNjkuOCAzNDMuNTggMjUwLjA0IDM1MiAyMjQgMzUycy00NS44LTguNDItNTYuMDktMTcuOWMtOC45LTguMjEtMTkuNjYtMTQuMS0zMS43Ny0xNC4xaC0xNi4zYy0xMi4xMSAwLTIyLjg3IDUuODktMzEuNzcgMTQuMUM3Ny44IDM0My41OCA1OC4wNCAzNTIgMzIgMzUySDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmMzOC42MiAwIDcyLjcyLTEyLjE5IDk2LTMxLjg0IDIzLjI4IDE5LjY2IDU3LjM4IDMxLjg0IDk2IDMxLjg0czcyLjcyLTEyLjE5IDk2LTMxLjg0YzIzLjI4IDE5LjY2IDU3LjM4IDMxLjg0IDk2IDMxLjg0czcyLjcyLTEyLjE5IDk2LTMxLjg0YzIzLjI4IDE5LjY2IDU3LjM4IDMxLjg0IDk2IDMxLjg0aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnptLTUxMi05NmM0NC4xOCAwIDgwLTM1LjgyIDgwLTgwcy0zNS44Mi04MC04MC04MC04MCAzNS44Mi04MCA4MCAzNS44MiA4MCA4MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3dpbW1pbmdQb29sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCA0MTZoLTE2Yy0yNi4wNCAwLTQ1LjgtOC40Mi01Ni4wOS0xNy45LTguOS04LjIxLTE5LjY2LTE0LjEtMzEuNzctMTQuMWgtMTYuM2MtMTIuMTEgMC0yMi44NyA1Ljg5LTMxLjc3IDE0LjFDNDYxLjggNDA3LjU4IDQ0Mi4wNCA0MTYgNDE2IDQxNnMtNDUuOC04LjQyLTU2LjA5LTE3LjljLTguOS04LjIxLTE5LjY2LTE0LjEtMzEuNzctMTQuMWgtMTYuM2MtMTIuMTEgMC0yMi44NyA1Ljg5LTMxLjc3IDE0LjFDMjY5LjggNDA3LjU4IDI1MC4wNCA0MTYgMjI0IDQxNnMtNDUuOC04LjQyLTU2LjA5LTE3LjljLTguOS04LjIxLTE5LjY2LTE0LjEtMzEuNzctMTQuMWgtMTYuM2MtMTIuMTEgMC0yMi44NyA1Ljg5LTMxLjc3IDE0LjFDNzcuOCA0MDcuNTggNTguMDQgNDE2IDMyIDQxNkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjMzguNjIgMCA3Mi43Mi0xMi4xOSA5Ni0zMS44NCAyMy4yOCAxOS42NiA1Ny4zOCAzMS44NCA5NiAzMS44NHM3Mi43Mi0xMi4xOSA5Ni0zMS44NGMyMy4yOCAxOS42NiA1Ny4zOCAzMS44NCA5NiAzMS44NHM3Mi43Mi0xMi4xOSA5Ni0zMS44NGMyMy4yOCAxOS42NiA1Ny4zOCAzMS44NCA5NiAzMS44NGgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bS00MDAtMzJ2LTk2aDE5MnY5NmMxOS4xMiAwIDMwLjg2LTYuMTYgMzQuMzktOS40MiA5LjE3LTguNDYgMTkuMi0xNC4zNCAyOS42MS0xOC4wN1YxMjhjMC0xNy42NCAxNC4zNi0zMiAzMi0zMnMzMiAxNC4zNiAzMiAzMnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC01Mi45NC00My4wNi05Ni05Ni05NnMtOTYgNDMuMDYtOTYgOTZ2OTZIMjI0di05NmMwLTE3LjY0IDE0LjM2LTMyIDMyLTMyczMyIDE0LjM2IDMyIDMydjE2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTUyLjk0LTQzLjA2LTk2LTk2LTk2cy05NiA0My4wNi05NiA5NnYyMjguNWMxMC40MSAzLjczIDIwLjQ0IDkuNjIgMjkuNjEgMTguMDcgMy41MyAzLjI3IDE1LjI3IDkuNDMgMzQuMzkgOS40M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3luYWdvZ3VlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcwIDE5Ni41MUw2LjY3IDI2OC4yOUEyNi42NDMgMjYuNjQzIDAgMCAwIDAgMjg1LjkzVjUxMmgxMjhWMjM5LjU4bC0zOC00My4wN2MtNS4zMS02LjAxLTE0LjY5LTYuMDEtMjAgMHptNTYzLjMzIDcxLjc4TDU3MCAxOTYuNTFjLTUuMzEtNi4wMi0xNC42OS02LjAyLTIwIDBsLTM4IDQzLjA3VjUxMmgxMjhWMjg1LjkzYzAtNi41LTIuMzctMTIuNzctNi42Ny0xNy42NHpNMzM5Ljk5IDcuMDFjLTExLjY5LTkuMzUtMjguMjktOS4zNS0zOS45OCAwbC0xMjggMTAyLjRBMzIuMDA1IDMyLjAwNSAwIDAgMCAxNjAgMTM0LjRWNTEyaDk2di05Mi41N2MwLTMxLjg4IDIxLjc4LTYxLjQzIDUzLjI1LTY2LjU1QzM0OS4zNCAzNDYuMzUgMzg0IDM3Ny4xMyAzODQgNDE2djk2aDk2VjEzNC40YzAtOS43Mi00LjQyLTE4LjkyLTEyLjAxLTI0Ljk5bC0xMjgtMTAyLjR6bTUyLjA3IDIxNS41NWMxLjk4IDMuMTUtLjI5IDcuMjQtNCA3LjI0aC0zOC45NEwzMjQgMjY5Ljc5Yy0xLjg1IDIuOTUtNi4xNSAyLjk1LTggMGwtMjUuMTItMzkuOThoLTM4Ljk0Yy0zLjcyIDAtNS45OC00LjA5LTQtNy4yNGwxOS4yLTMwLjU2LTE5LjItMzAuNTZjLTEuOTgtMy4xNS4yOS03LjI0IDQtNy4yNGgzOC45NGwyNS4xMi00MGMxLjg1LTIuOTUgNi4xNS0yLjk1IDggMGwyNS4xMiAzOS45OGgzOC45NWMzLjcxIDAgNS45OCA0LjA5IDQgNy4yNEwzNzIuODcgMTkybDE5LjE5IDMwLjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTeW5jQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3MC43MiAxMzMuMjhDMzM5LjQ1OCAxMDQuMDA4IDI5OC44ODggODcuOTYyIDI1NS44NDggODhjLTc3LjQ1OC4wNjgtMTQ0LjMyOCA1My4xNzgtMTYyLjc5MSAxMjYuODUtMS4zNDQgNS4zNjMtNi4xMjIgOS4xNS0xMS42NTEgOS4xNUgyNC4xMDNjLTcuNDk4IDAtMTMuMTk0LTYuODA3LTExLjgwNy0xNC4xNzZDMzMuOTMzIDk0LjkyNCAxMzQuODEzIDggMjU2IDhjNjYuNDQ4IDAgMTI2Ljc5MSAyNi4xMzYgMTcxLjMxNSA2OC42ODVMNDYzLjAzIDQwLjk3QzQ3OC4xNDkgMjUuODUxIDUwNCAzNi41NTkgNTA0IDU3Ljk0MVYxOTJjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDM0NS45NDFjLTIxLjM4MiAwLTMyLjA5LTI1Ljg1MS0xNi45NzEtNDAuOTcxbDQxLjc1LTQxLjc0OXpNMzIgMjk2aDEzNC4wNTljMjEuMzgyIDAgMzIuMDkgMjUuODUxIDE2Ljk3MSA0MC45NzFsLTQxLjc1IDQxLjc1YzMxLjI2MiAyOS4yNzMgNzEuODM1IDQ1LjMxOSAxMTQuODc2IDQ1LjI4IDc3LjQxOC0uMDcgMTQ0LjMxNS01My4xNDQgMTYyLjc4Ny0xMjYuODQ5IDEuMzQ0LTUuMzYzIDYuMTIyLTkuMTUgMTEuNjUxLTkuMTVoNTcuMzA0YzcuNDk4IDAgMTMuMTk0IDYuODA3IDExLjgwNyAxNC4xNzZDNDc4LjA2NyA0MTcuMDc2IDM3Ny4xODcgNTA0IDI1NiA1MDRjLTY2LjQ0OCAwLTEyNi43OTEtMjYuMTM2LTE3MS4zMTUtNjguNjg1TDQ4Ljk3IDQ3MS4wM0MzMy44NTEgNDg2LjE0OSA4IDQ3NS40NDEgOCA0NTQuMDU5VjMyMGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN5bmMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQwLjY1IDEyLjU3bDQgODIuNzdBMjQ3LjE2IDI0Ny4xNiAwIDAgMCAyNTUuODMgOEMxMzQuNzMgOCAzMy45MSA5NC45MiAxMi4yOSAyMDkuODJBMTIgMTIgMCAwIDAgMjQuMDkgMjI0aDQ5LjA1YTEyIDEyIDAgMCAwIDExLjY3LTkuMjYgMTc1LjkxIDE3NS45MSAwIDAgMSAzMTctNTYuOTRsLTEwMS40Ni00Ljg2YTEyIDEyIDAgMCAwLTEyLjU3IDEydjQ3LjQxYTEyIDEyIDAgMCAwIDEyIDEySDUwMGExMiAxMiAwIDAgMCAxMi0xMlYxMmExMiAxMiAwIDAgMC0xMi0xMmgtNDcuMzdhMTIgMTIgMCAwIDAtMTEuOTggMTIuNTd6TTI1NS44MyA0MzJhMTc1LjYxIDE3NS42MSAwIDAgMS0xNDYtNzcuOGwxMDEuOCA0Ljg3YTEyIDEyIDAgMCAwIDEyLjU3LTEydi00Ny40YTEyIDEyIDAgMCAwLTEyLTEySDEyYTEyIDEyIDAgMCAwLTEyIDEyVjUwMGExMiAxMiAwIDAgMCAxMiAxMmg0Ny4zNWExMiAxMiAwIDAgMCAxMi0xMi42bC00LjE1LTgyLjU3QTI0Ny4xNyAyNDcuMTcgMCAwIDAgMjU1LjgzIDUwNGMxMjEuMTEgMCAyMjEuOTMtODYuOTIgMjQzLjU1LTIwMS44MmExMiAxMiAwIDAgMC0xMS44LTE0LjE4aC00OS4wNWExMiAxMiAwIDAgMC0xMS42NyA5LjI2QTE3NS44NiAxNzUuODYgMCAwIDEgMjU1LjgzIDQzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3lyaW5nZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDEuNSAxNzQuOGw1NS43IDU1LjhjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtMTEuMyAxMS4zYy0zLjEgMy4xLTguMiAzLjEtMTEuMyAwbC01NS43LTU1LjgtNDUuMyA0NS4zIDU1LjggNTUuOGMzLjEgMy4xIDMuMSA4LjIgMCAxMS4zbC0xMS4zIDExLjNjLTMuMSAzLjEtOC4yIDMuMS0xMS4zIDBMMTExIDI2NS4ybC0yNi40IDI2LjRjLTE3LjMgMTcuMy0yNS42IDQxLjEtMjMgNjUuNGw3LjEgNjMuNkwyLjMgNDg3Yy0zLjEgMy4xLTMuMSA4LjIgMCAxMS4zbDExLjMgMTEuM2MzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDY2LjMtNjYuMyA2My42IDcuMWMyMy45IDIuNiA0Ny45LTUuNCA2NS40LTIzbDE4MS45LTE4MS45LTEzNS43LTEzNS43LTY0LjkgNjV6bTMwOC4yLTkzLjNMNDMwLjUgMi4zYy0zLjEtMy4xLTguMi0zLjEtMTEuMyAwbC0xMS4zIDExLjNjLTMuMSAzLjEtMy4xIDguMiAwIDExLjNsMjguMyAyOC4zLTQ1LjMgNDUuMy01Ni42LTU2LjYtMTctMTdjLTMuMS0zLjEtOC4yLTMuMS0xMS4zIDBsLTMzLjkgMzMuOWMtMy4xIDMuMS0zLjEgOC4yIDAgMTEuM2wxNyAxN0w0MjQuOCAyMjNsMTcgMTdjMy4xIDMuMSA4LjIgMy4xIDExLjMgMGwzMy45LTM0YzMuMS0zLjEgMy4xLTguMiAwLTExLjNsLTczLjUtNzMuNSA0NS4zLTQ1LjMgMjguMyAyOC4zYzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsMTEuMy0xMS4zYzMuMS0zLjIgMy4xLTguMiAwLTExLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxlVGVubmlzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5Ni4yIDI5Ni41QzUyNy43IDIxOC43IDUxMiAxMjYuMiA0NDkgNjMuMSAzNjUuMS0yMSAyMjktMjEgMTQ1LjEgNjMuMWwtNTYgNTYuMSAyMTEuNSAyMTEuNWM0Ni4xLTYyLjEgMTMxLjUtNzcuNCAxOTUuNi0zNC4yem0tMjE3LjkgNzkuN0w1Ny45IDE1NS45Yy0yNy4zIDQ1LjMtMjEuNyAxMDUgMTcuMyAxNDQuMWwzNC41IDM0LjZMNi43IDQyNGMtOC42IDcuNS05LjEgMjAuNy0xIDI4LjhsNTMuNCA1My41YzggOC4xIDIxLjIgNy42IDI4LjctMUwxNzcuMSA0MDJsMzUuNyAzNS43YzE5LjcgMTkuNyA0NC42IDMwLjUgNzAuMyAzMy4zLTcuMS0xNy0xMS0zNS42LTExLTU1LjEtLjEtMTMuOCAyLjUtMjcgNi4yLTM5Ljd6TTQxNiAzMjBjLTUzIDAtOTYgNDMtOTYgOTZzNDMgOTYgOTYgOTYgOTYtNDMgOTYtOTYtNDMtOTYtOTYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODBjMC0yNi41MS0yMS40OS00OC00OC00OHpNMjI0IDQxNkg2NHYtOTZoMTYwdjk2em0wLTE2MEg2NHYtOTZoMTYwdjk2em0yMjQgMTYwSDI4OHYtOTZoMTYwdjk2em0wLTE2MEgyODh2LTk2aDE2MHY5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFibGV0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yMjQgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTc2LTEwOGMwIDYuNi01LjQgMTItMTIgMTJINjBjLTYuNiAwLTEyLTUuNC0xMi0xMlY2MGMwLTYuNiA1LjQtMTIgMTItMTJoMzI4YzYuNiAwIDEyIDUuNCAxMiAxMnYzMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OHpNMjI0IDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxldHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDE5MkM3OC45IDE5MiAxMi41IDI1MC41LjEgMzI2LjdjLS44IDQuOCAzLjMgOS4zIDguMyA5LjNoMzAzLjNjNSAwIDkuMS00LjUgOC4zLTkuM0MzMDcuNSAyNTAuNSAyNDEuMSAxOTIgMTYwIDE5MnptMTUxLjYgMTc2SDguNGMtNSAwLTkuMSA0LjUtOC4zIDkuM0MxMi41IDQ1My41IDc4LjkgNTEyIDE2MCA1MTJzMTQ3LjUtNTguNSAxNTkuOS0xMzQuN2MuOC00LjgtMy4zLTkuMy04LjMtOS4zek01OTMuNCA0Ni42Yy01Ni41LTU2LjUtMTQ0LjItNjEuNC0yMDYuOS0xNi00IDIuOS00LjMgOC45LS44IDEyLjNMNTk3IDI1NC4zYzMuNSAzLjUgOS41IDMuMiAxMi4zLS44IDQ1LjUtNjIuNyA0MC42LTE1MC40LTE1LjktMjA2Ljl6TTM2MyA2NS43Yy0zLjUtMy41LTkuNS0zLjItMTIuMy44LTQ1LjQgNjIuNy00MC41IDE1MC40IDE1LjkgMjA2LjkgNTYuNSA1Ni41IDE0NC4yIDYxLjQgMjA2LjkgMTUuOSA0LTIuOSA0LjMtOC45LjgtMTIuM0wzNjMgNjUuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFjaG9tZXRlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJDMTI4Ljk0IDMyIDAgMTYwLjk0IDAgMzIwYzAgNTIuOCAxNC4yNSAxMDIuMjYgMzkuMDYgMTQ0LjggNS42MSA5LjYyIDE2LjMgMTUuMiAyNy40NCAxNS4yaDQ0M2MxMS4xNCAwIDIxLjgzLTUuNTggMjcuNDQtMTUuMkM1NjEuNzUgNDIyLjI2IDU3NiAzNzIuOCA1NzYgMzIwYzAtMTU5LjA2LTEyOC45NC0yODgtMjg4LTI4OHptMCA2NGMxNC43MSAwIDI2LjU4IDEwLjEzIDMwLjMyIDIzLjY1LTEuMTEgMi4yNi0yLjY0IDQuMjMtMy40NSA2LjY3bC05LjIyIDI3LjY3Yy01LjEzIDMuNDktMTAuOTcgNi4wMS0xNy42NCA2LjAxLTE3LjY3IDAtMzItMTQuMzMtMzItMzJTMjcwLjMzIDk2IDI4OCA5NnpNOTYgMzg0Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem00OC0xNjBjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTI0Ni43Ny03Mi40MWwtNjEuMzMgMTg0QzM0My4xMyAzNDcuMzMgMzUyIDM2NC41NCAzNTIgMzg0YzAgMTEuNzItMy4zOCAyMi41NS04Ljg4IDMySDIzMi44OGMtNS41LTkuNDUtOC44OC0yMC4yOC04Ljg4LTMyIDAtMzMuOTQgMjYuNS02MS40MyA1OS45LTYzLjU5bDYxLjM0LTE4NC4wMWM0LjE3LTEyLjU2IDE3LjczLTE5LjQ1IDMwLjM2LTE1LjE3IDEyLjU3IDQuMTkgMTkuMzUgMTcuNzkgMTUuMTcgMzAuMzZ6bTE0LjY2IDU3LjJsMTUuNTItNDYuNTVjMy40Ny0xLjI5IDcuMTMtMi4yMyAxMS4wNS0yLjIzIDE3LjY3IDAgMzIgMTQuMzMgMzIgMzJzLTE0LjMzIDMyLTMyIDMyYy0xMS4zOC0uMDEtMjAuODktNi4yOC0yNi41Ny0xNS4yMnpNNDgwIDM4NGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjUyLjExOFY0OEMwIDIxLjQ5IDIxLjQ5IDAgNDggMGgyMDQuMTE4YTQ4IDQ4IDAgMCAxIDMzLjk0MSAxNC4wNTlsMjExLjg4MiAyMTEuODgyYzE4Ljc0NSAxOC43NDUgMTguNzQ1IDQ5LjEzNyAwIDY3Ljg4MkwyOTMuODIzIDQ5Ny45NDFjLTE4Ljc0NSAxOC43NDUtNDkuMTM3IDE4Ljc0NS02Ny44ODIgMEwxNC4wNTkgMjg2LjA1OUE0OCA0OCAwIDAgMSAwIDI1Mi4xMTh6TTExMiA2NGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OC0yMS40OS00OC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTcuOTQxIDIyNS45NDFMMjg2LjA1OSAxNC4wNTlBNDggNDggMCAwIDAgMjUyLjExOCAwSDQ4QzIxLjQ5IDAgMCAyMS40OSAwIDQ4djIwNC4xMThhNDggNDggMCAwIDAgMTQuMDU5IDMzLjk0MWwyMTEuODgyIDIxMS44ODJjMTguNzQ0IDE4Ljc0NSA0OS4xMzYgMTguNzQ2IDY3Ljg4MiAwbDIwNC4xMTgtMjA0LjExOGMxOC43NDUtMTguNzQ1IDE4Ljc0NS00OS4xMzcgMC02Ny44ODJ6TTExMiAxNjBjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bTUxMy45NDEgMTMzLjgyM0w0MjEuODIzIDQ5Ny45NDFjLTE4Ljc0NSAxOC43NDUtNDkuMTM3IDE4Ljc0NS02Ny44ODIgMGwtLjM2LS4zNkw1MjcuNjQgMzIzLjUyMmMxNi45OTktMTYuOTk5IDI2LjM2LTM5LjYgMjYuMzYtNjMuNjRzLTkuMzYyLTQ2LjY0MS0yNi4zNi02My42NEwzMzEuMzk3IDBoNDguNzIxYTQ4IDQ4IDAgMCAxIDMzLjk0MSAxNC4wNTlsMjExLjg4MiAyMTEuODgyYzE4Ljc0NSAxOC43NDUgMTguNzQ1IDQ5LjEzNyAwIDY3Ljg4MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTkyYy0zNS4zIDAtNjQgMjguNy02NCA2NHMyOC43IDY0IDY0IDY0IDY0LTI4LjcgNjQtNjQtMjguNy02NC02NC02NHptNDAwIDIyNEgzODAuNmM0MS41LTQwLjcgNjcuNC05Ny4zIDY3LjQtMTYwIDAtMTIzLjctMTAwLjMtMjI0LTIyNC0yMjRTMCAxMzIuMyAwIDI1NnMxMDAuMyAyMjQgMjI0IDIyNGg0MDBjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bS00MDAtNjRjLTUzIDAtOTYtNDMtOTYtOTZzNDMtOTYgOTYtOTYgOTYgNDMgOTYgOTYtNDMgOTYtOTYgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhc2tzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzOS42MSAzNS41YTEyIDEyIDAgMCAwLTE3IDBMNTguOTMgOTguODFsLTIyLjctMjIuMTJhMTIgMTIgMCAwIDAtMTcgMEwzLjUzIDkyLjQxYTEyIDEyIDAgMCAwIDAgMTdsNDcuNTkgNDcuNGExMi43OCAxMi43OCAwIDAgMCAxNy42MSAwbDE1LjU5LTE1LjYyTDE1Ni41MiA2OWExMi4wOSAxMi4wOSAwIDAgMCAuMDktMTd6bTAgMTU5LjE5YTEyIDEyIDAgMCAwLTE3IDBsLTYzLjY4IDYzLjcyLTIyLjctMjIuMWExMiAxMiAwIDAgMC0xNyAwTDMuNTMgMjUyYTEyIDEyIDAgMCAwIDAgMTdMNTEgMzE2LjVhMTIuNzcgMTIuNzcgMCAwIDAgMTcuNiAwbDE1LjctMTUuNjkgNzIuMi03Mi4yMmExMiAxMiAwIDAgMCAuMDktMTYuOXpNNjQgMzY4Yy0yNi40OSAwLTQ4LjU5IDIxLjUtNDguNTkgNDhTMzcuNTMgNDY0IDY0IDQ2NGE0OCA0OCAwIDAgMCAwLTk2em00MzIgMTZIMjA4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI4OGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtMzIwSDIwOGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyODhhMTYgMTYgMCAwIDAgMTYtMTZWODBhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgMTYwSDIwOGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyODhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYXhpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2MiAyNDEuNjRsLTIyLTg0Ljg0Yy05LjYtMzUuMi00MS42LTYwLjgtNzYuOC02MC44SDM1MlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDE5MmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmgtMTEuMmMtMzUuMiAwLTY3LjIgMjUuNi03Ni44IDYwLjhsLTIyIDg0Ljg0QzIxLjQxIDI0OC4wNCAwIDI3My40NyAwIDMwNHY0OGMwIDIzLjYzIDEyLjk1IDQ0LjA0IDMyIDU1LjEyVjQ0OGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyaDI1NnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTQwLjg4YzE5LjA1LTExLjA5IDMyLTMxLjUgMzItNTUuMTJ2LTQ4YzAtMzAuNTMtMjEuNDEtNTUuOTYtNTAtNjIuMzZ6TTk2IDM1MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMjAuNTUtMTEybDE3LjItNjYuMzZjMi4yMy04LjE2IDkuNTktMTMuNjQgMTUuMDYtMTMuNjRoMjE0LjRjNS40NyAwIDEyLjgzIDUuNDggMTQuODUgMTIuODZMMzk1LjQ1IDI0MGgtMjc4Ljl6TTQxNiAzNTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlZXRoT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDQgMEg5NkM0Mi45OCAwIDAgNDIuOTggMCA5NnY2NGMwIDM1LjM1IDI4LjY2IDY0IDY0IDY0aDUxMmMzNS4zNCAwIDY0LTI4LjY1IDY0LTY0Vjk2YzAtNTMuMDItNDIuOTgtOTYtOTYtOTZ6TTE2MCAxNzZjMCA4Ljg0LTcuMTYgMTYtMTYgMTZIODBjLTguODQgMC0xNi03LjE2LTE2LTE2di0zMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4czQ4IDIxLjQ5IDQ4IDQ4djMyem0xNDQgMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtODBjLTguODQgMC0xNi03LjE2LTE2LTE2di01NmMwLTMwLjkzIDI1LjA3LTU2IDU2LTU2czU2IDI1LjA3IDU2IDU2djU2em0xNDQgMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtODBjLTguODQgMC0xNi03LjE2LTE2LTE2di01NmMwLTMwLjkzIDI1LjA3LTU2IDU2LTU2czU2IDI1LjA3IDU2IDU2djU2em0xMjggMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtNjRjLTguODQgMC0xNi03LjE2LTE2LTE2di0zMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4czQ4IDIxLjQ5IDQ4IDQ4djMyem0wIDE0NEg2NGMtMzUuMzQgMC02NCAyOC42NS02NCA2NHYzMmMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2aDQ0OGM1My4wMiAwIDk2LTQyLjk4IDk2LTk2di0zMmMwLTM1LjM1LTI4LjY2LTY0LTY0LTY0em0tNDE2IDgwYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4di0zMmMwLTguODQgNy4xNi0xNiAxNi0xNmg2NGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYzMnptMTQ0LThjMCAzMC45My0yNS4wNyA1Ni01NiA1NnMtNTYtMjUuMDctNTYtNTZ2LTI0YzAtOC44NCA3LjE2LTE2IDE2LTE2aDgwYzguODQgMCAxNiA3LjE2IDE2IDE2djI0em0xNDQgMGMwIDMwLjkzLTI1LjA3IDU2LTU2IDU2cy01Ni0yNS4wNy01Ni01NnYtMjRjMC04Ljg0IDcuMTYtMTYgMTYtMTZoODBjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MjR6bTEyOCA4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4di0zMmMwLTguODQgNy4xNi0xNiAxNi0xNmg2NGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVldGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDBIOTZDNDIuOTggMCAwIDQyLjk4IDAgOTZ2MzIwYzAgNTMuMDIgNDIuOTggOTYgOTYgOTZoNDQ4YzUzLjAyIDAgOTYtNDIuOTggOTYtOTZWOTZjMC01My4wMi00Mi45OC05Ni05Ni05NnpNMTYwIDM2OGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4cy00OC0yMS40OS00OC00OHYtNjRjMC04Ljg0IDcuMTYtMTYgMTYtMTZoNjRjOC44NCAwIDE2IDcuMTYgMTYgMTZ2NjR6bTAtMTI4YzAgOC44NC03LjE2IDE2LTE2IDE2SDgwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtNjRjMC0yNi41MSAyMS40OS00OCA0OC00OHM0OCAyMS40OSA0OCA0OHY2NHptMTQ0IDEyMGMwIDMwLjkzLTI1LjA3IDU2LTU2IDU2cy01Ni0yNS4wNy01Ni01NnYtNTZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoODBjOC44NCAwIDE2IDcuMTYgMTYgMTZ2NTZ6bTAtMTIwYzAgOC44NC03LjE2IDE2LTE2IDE2aC04MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTg4YzAtMzAuOTMgMjUuMDctNTYgNTYtNTZzNTYgMjUuMDcgNTYgNTZ2ODh6bTE0NCAxMjBjMCAzMC45My0yNS4wNyA1Ni01NiA1NnMtNTYtMjUuMDctNTYtNTZ2LTU2YzAtOC44NCA3LjE2LTE2IDE2LTE2aDgwYzguODQgMCAxNiA3LjE2IDE2IDE2djU2em0wLTEyMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtODBjLTguODQgMC0xNi03LjE2LTE2LTE2di04OGMwLTMwLjkzIDI1LjA3LTU2IDU2LTU2czU2IDI1LjA3IDU2IDU2djg4em0xMjggMTI4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4di02NGMwLTguODQgNy4xNi0xNiAxNi0xNmg2NGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnY2NHptMC0xMjhjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTY0Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtNjRjMC0yNi41MSAyMS40OS00OCA0OC00OHM0OCAyMS40OSA0OCA0OHY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAwYy01Mi45IDAtOTYgNDMuMS05NiA5NnM0My4xIDk2IDk2IDk2IDk2LTQzLjEgOTYtOTYtNDMuMS05Ni05Ni05NnptMCAxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0tMTYwLTE2QzI1NiA1MC4xIDIwNS45IDAgMTQ0IDBTMzIgNTAuMSAzMiAxMTJ2MTY2LjVDMTIuMyAzMDMuMiAwIDMzNCAwIDM2OGMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NHMxNDQtNjQuNSAxNDQtMTQ0YzAtMzQtMTIuMy02NC45LTMyLTg5LjVWMTEyek0xNDQgNDQ4Yy00NC4xIDAtODAtMzUuOS04MC04MCAwLTI1LjUgMTIuMi00OC45IDMyLTYzLjhWMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2MTkyLjJjMTkuOCAxNC44IDMyIDM4LjMgMzIgNjMuOCAwIDQ0LjEtMzUuOSA4MC04MCA4MHptMTYtMTI1LjFWMTEyYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djIxMC45Yy0xOC42IDYuNi0zMiAyNC4yLTMyIDQ1LjEgMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OGMwLTIwLjktMTMuNC0zOC41LTMyLTQ1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbXBlcmF0dXJlTG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAwYy01Mi45IDAtOTYgNDMuMS05NiA5NnM0My4xIDk2IDk2IDk2IDk2LTQzLjEgOTYtOTYtNDMuMS05Ni05Ni05NnptMCAxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0tMTYwLTE2QzI1NiA1MC4xIDIwNS45IDAgMTQ0IDBTMzIgNTAuMSAzMiAxMTJ2MTY2LjVDMTIuMyAzMDMuMiAwIDMzNCAwIDM2OGMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NHMxNDQtNjQuNSAxNDQtMTQ0YzAtMzQtMTIuMy02NC45LTMyLTg5LjVWMTEyek0xNDQgNDQ4Yy00NC4xIDAtODAtMzUuOS04MC04MCAwLTI1LjUgMTIuMi00OC45IDMyLTYzLjhWMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2MTkyLjJjMTkuOCAxNC44IDMyIDM4LjMgMzIgNjMuOCAwIDQ0LjEtMzUuOSA4MC04MCA4MHptMTYtMTI1LjFWMzA0YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djE4LjljLTE4LjYgNi42LTMyIDI0LjItMzIgNDUuMSAwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4YzAtMjAuOS0xMy40LTM4LjUtMzItNDUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVuZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyIDE2MEgxMmMtNi42IDAtMTIgNS40LTEyIDEydjU2YzAgNi42IDUuNCAxMiAxMiAxMmgxNDB2MjI4YzAgNi42IDUuNCAxMiAxMiAxMmg1NmM2LjYgMCAxMi01LjQgMTItMTJWMjQwaDE0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTU2YzAtNi42LTUuNC0xMi0xMi0xMnptMC0xMjhIMTJDNS40IDMyIDAgMzcuNCAwIDQ0djU2YzAgNi42IDUuNCAxMiAxMiAxMmgzNjBjNi42IDAgMTItNS40IDEyLTEyVjQ0YzAtNi42LTUuNC0xMi0xMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVybWluYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU3Ljk4MSAyNzIuOTcxTDYzLjYzOCA0NjcuMzE0Yy05LjM3MyA5LjM3My0yNC41NjkgOS4zNzMtMzMuOTQxIDBMNy4wMjkgNDQ0LjY0N2MtOS4zNTctOS4zNTctOS4zNzUtMjQuNTIyLS4wNC0zMy45MDFMMTYxLjAxMSAyNTYgNi45OSAxMDEuMjU1Yy05LjMzNS05LjM3OS05LjMxNy0yNC41NDQuMDQtMzMuOTAxbDIyLjY2Ny0yMi42NjdjOS4zNzMtOS4zNzMgMjQuNTY5LTkuMzczIDMzLjk0MSAwTDI1Ny45ODEgMjM5LjAzYzkuMzczIDkuMzcyIDkuMzczIDI0LjU2OCAwIDMzLjk0MXpNNjQwIDQ1NnYtMzJjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDMxMmMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djMyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMDRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZXh0SGVpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNCAzMkgxNkExNiAxNiAwIDAgMCAwIDQ4djk2YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmg1NnYzMDRIODBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTYwYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNmgtNDBWMTEyaDU2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2em0yNTYgMzM2aC00OFYxNDRoNDhjMTQuMzEgMCAyMS4zMy0xNy4zMSAxMS4zMS0yNy4zMWwtODAtODBhMTYgMTYgMCAwIDAtMjIuNjIgMGwtODAgODBDMzc5LjM2IDEyNiAzODQuMzYgMTQ0IDQwMCAxNDRoNDh2MjI0aC00OGMtMTQuMzEgMC0yMS4zMiAxNy4zMS0xMS4zMSAyNy4zMWw4MCA4MGExNiAxNiAwIDAgMCAyMi42MiAwbDgwLTgwQzU4MC42NCAzODYgNTc1LjY0IDM2OCA1NjAgMzY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZXh0V2lkdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDMySDE2QTE2IDE2IDAgMCAwIDAgNDh2ODBhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTE2aDEyMHYxMTJoLTI0YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTI0VjExMmgxMjB2MTZhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6bS02OC42OSAyNjAuNjlDMzU0IDI4My4zNiAzMzYgMjg4LjM2IDMzNiAzMDR2NDhIMTEydi00OGMwLTE0LjMxLTE3LjMxLTIxLjMyLTI3LjMxLTExLjMxbC04MCA4MGExNiAxNiAwIDAgMCAwIDIyLjYybDgwIDgwQzk0IDQ4NC42NCAxMTIgNDc5LjY0IDExMiA0NjR2LTQ4aDIyNHY0OGMwIDE0LjMxIDE3LjMxIDIxLjMzIDI3LjMxIDExLjMxbDgwLTgwYTE2IDE2IDAgMCAwIDAtMjIuNjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoTGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk2IDMyaDE5MmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MTYwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyOTZjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNFY1NmMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjR6bS04MCAwSDI0QzEwLjc0NSAzMiAwIDQyLjc0NSAwIDU2djE2MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTkyYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6TTAgMjk2djE2MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTkyYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyOTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR6bTI5NiAxODRoMTkyYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyOTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI5NmMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE2MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDkuMzMzIDIxNnY4MGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMjRjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHYtODBjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDEwMS4zMzNjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0ek0wIDM3NnY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTAxLjMzM2MxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0ek0xMjUuMzMzIDMySDI0QzEwLjc0NSAzMiAwIDQyLjc0NSAwIDU2djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDEuMzMzYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6bTgwIDQ0OEg0ODhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di04MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjA1LjMzM2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNHptLTI0LTQyNHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRINDg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjA1LjMzM2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0em0yNCAyNjRINDg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDIwNS4zMzNjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0OS4zMzMgNTZ2ODBjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDI0Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRWNTZjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDEwMS4zMzNjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0em0xODEuMzM0IDI0MHYtODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDIwNS4zMzNjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTAxLjMzM2MxMy4yNTYgMCAyNC4wMDEtMTAuNzQ1IDI0LjAwMS0yNHptMzItMjQwdjgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNEg0ODhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjU2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgzODYuNjY3Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR6bS0zMiA4MFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjA1LjMzM2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDEuMzMzYzEzLjI1NiAwIDI0LjAwMS0xMC43NDUgMjQuMDAxLTI0em0tMjA1LjMzNCA1NkgyNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDEuMzMzYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0ek0wIDM3NnY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTAxLjMzM2MxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0em0zODYuNjY3LTU2SDQ4OGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgzODYuNjY3Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0em0wIDE2MEg0ODhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di04MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMzg2LjY2N2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNHpNMTgxLjMzMyAzNzZ2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwMS4zMzNjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di04MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjA1LjMzM2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVhdGVyTWFza3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA2Ljg2IDI0NS4xNWMtMzUuODggMTAuNDUtNTkuOTUgNDEuMi01Ny41MyA3NC4xIDExLjQtMTIuNzIgMjguODEtMjMuNyA0OS45LTMwLjkybDcuNjMtNDMuMTh6TTk1LjgxIDI5NUw2NC4wOCAxMTUuNDljLS4yOS0xLjYyLjI4LTIuNjIuMjQtMi42NSA1Ny43Ni0zMi4wNiAxMjMuMTItNDkuMDEgMTg5LjAxLTQ5LjAxIDEuNjEgMCAzLjIzLjE3IDQuODUuMTkgMTMuOTUtMTMuNDcgMzEuNzMtMjIuODMgNTEuNTktMjYgMTguODktMy4wMiAzOC4wNS00LjU1IDU3LjE4LTUuMzItOS45OS0xMy45NS0yNC40OC0yNC4yMy00MS43Ny0yN0MzMDEuMjcgMS44OSAyNzcuMjQgMCAyNTMuMzIgMCAxNzYuNjYgMCAxMDEuMDIgMTkuNDIgMzMuMiA1Ny4wNiA5LjAzIDcwLjQ4LTMuOTIgOTguNDggMS4wNSAxMjYuNThsMzEuNzMgMTc5LjUxYzE0LjIzIDgwLjUyIDEzNi4zMyAxNDIuMDggMjA0LjQ1IDE0Mi4wOCAzLjU5IDAgNi43NS0uNDYgMTAuMDEtLjgtMTMuNTItMTcuMDgtMjguOTQtNDAuNDgtMzkuNS02Ny41OC00Ny42MS0xMi45OC0xMDYuMDYtNTEuNjItMTExLjkzLTg0Ljc5em05Ny41NS0xMzcuNDZjLS43My00LjEyLTIuMjMtNy44Ny00LjA3LTExLjQtOC4yNSA4LjkxLTIwLjY3IDE1Ljc1LTM1LjMyIDE4LjMyLTE0LjY1IDIuNTgtMjguNjcuNC0zOS40OC01LjE3LS41MiAzLjk0LS42NCA3Ljk4LjA5IDEyLjEgMy44NCAyMS43IDI0LjU4IDM2LjE5IDQ2LjM0IDMyLjM3IDIxLjc1LTMuODIgMzYuMjgtMjQuNTIgMzIuNDQtNDYuMjJ6TTYwNi44IDEyMC45Yy04OC45OC00OS4zOC0xOTEuNDMtNjcuNDEtMjkxLjk4LTUxLjM1LTI3LjMxIDQuMzYtNDkuMDggMjYuMjYtNTQuMDQgNTQuMzZsLTMxLjczIDE3OS41MWMtMTUuMzkgODcuMDUgOTUuMjggMTk2LjI3IDE1OC4zMSAyMDcuMzUgNjMuMDMgMTEuMDkgMjA0LjQ3LTUzLjc5IDIxOS44Ni0xNDAuODRsMzEuNzMtMTc5LjUxYzQuOTctMjguMTEtNy45OC01Ni4xMS0zMi4xNS02OS41MnptLTI3My4yNCA5Ni44YzMuODQtMjEuNyAyNC41OC0zNi4xOSA0Ni4zNC0zMi4zNiAyMS43NiAzLjgzIDM2LjI4IDI0LjUyIDMyLjQ1IDQ2LjIyLS43MyA0LjEyLTIuMjMgNy44Ny00LjA3IDExLjQtOC4yNS04LjkxLTIwLjY3LTE1Ljc1LTM1LjMyLTE4LjMyLTE0LjY1LTIuNTgtMjguNjctLjQtMzkuNDggNS4xNy0uNTMtMy45NS0uNjUtNy45OS4wOC0xMi4xMXptNzAuNDcgMTk4Ljc2Yy01NS42OC05Ljc5LTkzLjUyLTU5LjI3LTg5LjA0LTExMi45IDIwLjYgMjUuNTQgNTYuMjEgNDYuMTcgOTkuNDkgNTMuNzggNDMuMjggNy42MSA4My44Mi4zNyAxMTEuOTMtMTYuNi0xNC4xOCA1MS45NC02Ni43MSA4NS41MS0xMjIuMzggNzUuNzJ6bTEzMC4zLTE1MS4zNGMtOC4yNS04LjkxLTIwLjY4LTE1Ljc1LTM1LjMzLTE4LjMyLTE0LjY1LTIuNTgtMjguNjctLjQtMzkuNDggNS4xNy0uNTItMy45NC0uNjQtNy45OC4wOS0xMi4xIDMuODQtMjEuNyAyNC41OC0zNi4xOSA0Ni4zNC0zMi4zNyAyMS43NSAzLjgzIDM2LjI4IDI0LjUyIDMyLjQ1IDQ2LjIyLS43MyA0LjEzLTIuMjMgNy44OC00LjA3IDExLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZXJtb21ldGVyRW1wdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDM4NGMwIDM1LjM0Ni0yOC42NTQgNjQtNjQgNjRzLTY0LTI4LjY1NC02NC02NGMwLTM1LjM0NiAyOC42NTQtNjQgNjQtNjRzNjQgMjguNjU0IDY0IDY0em0zMi04NC42NTNjMTkuOTEyIDIyLjU2MyAzMiA1Mi4xOTQgMzIgODQuNjUzIDAgNzAuNjk2LTU3LjMwMyAxMjgtMTI4IDEyOC0uMjk5IDAtLjYwOS0uMDAxLS45MDktLjAwM0M1Ni43ODkgNTExLjUwOS0uMzU3IDQ1My42MzYuMDAyIDM4My4zMzMuMTY2IDM1MS4xMzUgMTIuMjI1IDMyMS43NTUgMzIgMjk5LjM0N1Y5NmMwLTUzLjAxOSA0Mi45ODEtOTYgOTYtOTZzOTYgNDIuOTgxIDk2IDk2djIwMy4zNDd6TTIwOCAzODRjMC0zNC4zMzktMTkuMzctNTIuMTktMzItNjYuNTAyVjk2YzAtMjYuNDY3LTIxLjUzMy00OC00OC00OFM4MCA2OS41MzMgODAgOTZ2MjIxLjQ5OGMtMTIuNzMyIDE0LjQyOC0zMS44MjUgMzIuMS0zMS45OTkgNjYuMDgtLjIyNCA0My44NzYgMzUuNTYzIDgwLjExNiA3OS40MjMgODAuNDJMMTI4IDQ2NGM0NC4xMTIgMCA4MC0zNS44ODggODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZXJtb21ldGVyRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgOTZjMC01My4wMTktNDIuOTgxLTk2LTk2LTk2UzMyIDQyLjk4MSAzMiA5NnYyMDMuMzQ3QzEyLjIyNSAzMjEuNzU2LjE2NiAzNTEuMTM2LjAwMiAzODMuMzMzYy0uMzU5IDcwLjMwMyA1Ni43ODcgMTI4LjE3NiAxMjcuMDg5IDEyOC42NjQuMjk5LjAwMi42MS4wMDMuOTA5LjAwMyA3MC42OTggMCAxMjgtNTcuMzA0IDEyOC0xMjggMC0zMi40NTktMTIuMDg4LTYyLjA5LTMyLTg0LjY1M1Y5NnptLTk2IDM2OGwtLjU3Ni0uMDAyYy00My44Ni0uMzA0LTc5LjY0Ny0zNi41NDQtNzkuNDIzLTgwLjQyLjE3My0zMy45OCAxOS4yNjYtNTEuNjUyIDMxLjk5OS02Ni4wOFY5NmMwLTI2LjQ2NyAyMS41MzMtNDggNDgtNDhzNDggMjEuNTMzIDQ4IDQ4djIyMS40OThjMTIuNjMgMTQuMzEyIDMyIDMyLjE2NCAzMiA2Ni41MDIgMCA0NC4xMTItMzUuODg4IDgwLTgwIDgwem02NC04MGMwIDM1LjM0Ni0yOC42NTQgNjQtNjQgNjRzLTY0LTI4LjY1NC02NC02NGMwLTIzLjY4NSAxMi44NzYtNDQuMzQ5IDMyLTU1LjQxN1Y5NmMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJzMzIgMTQuMzI3IDMyIDMydjIzMi41ODNjMTkuMTI0IDExLjA2OCAzMiAzMS43MzIgMzIgNTUuNDE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVybW9tZXRlckhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDM4NGMwIDM1LjM0Ni0yOC42NTQgNjQtNjQgNjRzLTY0LTI4LjY1NC02NC02NGMwLTIzLjY4NSAxMi44NzYtNDQuMzQ5IDMyLTU1LjQxN1YyMjRjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyczMyIDE0LjMyNyAzMiAzMnYxMDQuNTgzYzE5LjEyNCAxMS4wNjggMzIgMzEuNzMyIDMyIDU1LjQxN3ptMzItODQuNjUzYzE5LjkxMiAyMi41NjMgMzIgNTIuMTk0IDMyIDg0LjY1MyAwIDcwLjY5Ni01Ny4zMDMgMTI4LTEyOCAxMjgtLjI5OSAwLS42MDktLjAwMS0uOTA5LS4wMDNDNTYuNzg5IDUxMS41MDktLjM1NyA0NTMuNjM2LjAwMiAzODMuMzMzLjE2NiAzNTEuMTM1IDEyLjIyNSAzMjEuNzU1IDMyIDI5OS4zNDdWOTZjMC01My4wMTkgNDIuOTgxLTk2IDk2LTk2czk2IDQyLjk4MSA5NiA5NnYyMDMuMzQ3ek0yMDggMzg0YzAtMzQuMzM5LTE5LjM3LTUyLjE5LTMyLTY2LjUwMlY5NmMwLTI2LjQ2Ny0yMS41MzMtNDgtNDgtNDhTODAgNjkuNTMzIDgwIDk2djIyMS40OThjLTEyLjczMiAxNC40MjgtMzEuODI1IDMyLjEtMzEuOTk5IDY2LjA4LS4yMjQgNDMuODc2IDM1LjU2MyA4MC4xMTYgNzkuNDIzIDgwLjQyTDEyOCA0NjRjNDQuMTEyIDAgODAtMzUuODg4IDgwLTgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVybW9tZXRlclF1YXJ0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDM4NGMwIDM1LjM0Ni0yOC42NTQgNjQtNjQgNjRzLTY0LTI4LjY1NC02NC02NGMwLTIzLjY4NSAxMi44NzYtNDQuMzQ5IDMyLTU1LjQxN1YyODhjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyczMyIDE0LjMyNyAzMiAzMnY0MC41ODNjMTkuMTI0IDExLjA2OCAzMiAzMS43MzIgMzIgNTUuNDE3em0zMi04NC42NTNjMTkuOTEyIDIyLjU2MyAzMiA1Mi4xOTQgMzIgODQuNjUzIDAgNzAuNjk2LTU3LjMwMyAxMjgtMTI4IDEyOC0uMjk5IDAtLjYwOS0uMDAxLS45MDktLjAwM0M1Ni43ODkgNTExLjUwOS0uMzU3IDQ1My42MzYuMDAyIDM4My4zMzMuMTY2IDM1MS4xMzUgMTIuMjI1IDMyMS43NTUgMzIgMjk5LjM0N1Y5NmMwLTUzLjAxOSA0Mi45ODEtOTYgOTYtOTZzOTYgNDIuOTgxIDk2IDk2djIwMy4zNDd6TTIwOCAzODRjMC0zNC4zMzktMTkuMzctNTIuMTktMzItNjYuNTAyVjk2YzAtMjYuNDY3LTIxLjUzMy00OC00OC00OFM4MCA2OS41MzMgODAgOTZ2MjIxLjQ5OGMtMTIuNzMyIDE0LjQyOC0zMS44MjUgMzIuMS0zMS45OTkgNjYuMDgtLjIyNCA0My44NzYgMzUuNTYzIDgwLjExNiA3OS40MjMgODAuNDJMMTI4IDQ2NGM0NC4xMTIgMCA4MC0zNS44ODggODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZXJtb21ldGVyVGhyZWVRdWFydGVycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMzg0YzAgMzUuMzQ2LTI4LjY1NCA2NC02NCA2NC0zNS4zNDYgMC02NC0yOC42NTQtNjQtNjQgMC0yMy42ODUgMTIuODc2LTQ0LjM0OSAzMi01NS40MTdWMTYwYzAtMTcuNjczIDE0LjMyNy0zMiAzMi0zMnMzMiAxNC4zMjcgMzIgMzJ2MTY4LjU4M2MxOS4xMjQgMTEuMDY4IDMyIDMxLjczMiAzMiA1NS40MTd6bTMyLTg0LjY1M2MxOS45MTIgMjIuNTYzIDMyIDUyLjE5NCAzMiA4NC42NTMgMCA3MC42OTYtNTcuMzAzIDEyOC0xMjggMTI4LS4yOTkgMC0uNjA5LS4wMDEtLjkwOS0uMDAzQzU2Ljc4OSA1MTEuNTA5LS4zNTcgNDUzLjYzNi4wMDIgMzgzLjMzMy4xNjYgMzUxLjEzNSAxMi4yMjUgMzIxLjc1NSAzMiAyOTkuMzQ3Vjk2YzAtNTMuMDE5IDQyLjk4MS05NiA5Ni05NnM5NiA0Mi45ODEgOTYgOTZ2MjAzLjM0N3pNMjA4IDM4NGMwLTM0LjMzOS0xOS4zNy01Mi4xOS0zMi02Ni41MDJWOTZjMC0yNi40NjctMjEuNTMzLTQ4LTQ4LTQ4UzgwIDY5LjUzMyA4MCA5NnYyMjEuNDk4Yy0xMi43MzIgMTQuNDI4LTMxLjgyNSAzMi4xLTMxLjk5OSA2Ni4wOC0uMjI0IDQzLjg3NiAzNS41NjMgODAuMTE2IDc5LjQyMyA4MC40MkwxMjggNDY0YzQ0LjExMiAwIDgwLTM1Ljg4OCA4MC04MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhlcm1vbWV0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDc2LjggMjAuNGMtMzcuNS0zMC43LTk1LjUtMjYuMy0xMzEuOSAxMC4ybC00NS43IDQ2IDUwLjUgNTAuNWMzLjEgMy4xIDMuMSA4LjIgMCAxMS4zbC0xMS4zIDExLjNjLTMuMSAzLjEtOC4yIDMuMS0xMS4zIDBsLTUwLjQtNTAuNS00NS4xIDQ1LjQgNTAuMyA1MC40YzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMEwyMDkgMTY3LjRsLTQ1LjEgNDUuNEwyMTQgMjYzYzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMGwtNTAuMS01MC4yTDk2IDI4MS4xVjM4Mkw3IDQ3MWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjkgOS40IDkuNCAyNC42IDkuNCAzMy45IDBsODktODloOTkuOUw0ODQgMTYyLjZjMzQuOS0zNC45IDQyLjItMTAxLjUtNy4yLTE0Mi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaHVtYnNEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNTZ2MjQwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGg4MGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWNTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI0QzEwLjc0NSAzMiAwIDQyLjc0NSAwIDU2em00MCAyMDBjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0czI0IDEwLjc0NSAyNCAyNC0xMC43NDUgMjQtMjQgMjQtMjQtMTAuNzQ1LTI0LTI0em0yNzIgMjU2Yy0yMC4xODMgMC0yOS40ODUtMzkuMjkzLTMzLjkzMS01Ny43OTUtNS4yMDYtMjEuNjY2LTEwLjU4OS00NC4wNy0yNS4zOTMtNTguOTAyLTMyLjQ2OS0zMi41MjQtNDkuNTAzLTczLjk2Ny04OS4xMTctMTEzLjExMWExMS45OCAxMS45OCAwIDAgMS0zLjU1OC04LjUyMVY1OS45MDFjMC02LjU0MSA1LjI0My0xMS44NzggMTEuNzgzLTExLjk5OCAxNS44MzEtLjI5IDM2LjY5NC05LjA3OSA1Mi42NTEtMTYuMTc4QzI1Ni4xODkgMTcuNTk4IDI5NS43MDkuMDE3IDM0My45OTUgMGgyLjg0NGM0Mi43NzcgMCA5My4zNjMuNDEzIDExMy43NzQgMjkuNzM3IDguMzkyIDEyLjA1NyAxMC40NDYgMjcuMDM0IDYuMTQ4IDQ0LjYzMiAxNi4zMTIgMTcuMDUzIDI1LjA2MyA0OC44NjMgMTYuMzgyIDc0Ljc1NyAxNy41NDQgMjMuNDMyIDE5LjE0MyA1Ni4xMzIgOS4zMDggNzkuNDY5bC4xMS4xMWMxMS44OTMgMTEuOTQ5IDE5LjUyMyAzMS4yNTkgMTkuNDM5IDQ5LjE5Ny0uMTU2IDMwLjM1Mi0yNi4xNTcgNTguMDk4LTU5LjU1MyA1OC4wOThIMzUwLjcyM0MzNTguMDMgMzY0LjM0IDM4NCAzODguMTMyIDM4NCA0MzAuNTQ4IDM4NCA1MDQgMzM2IDUxMiAzMTIgNTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaHVtYnNVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDQgMjI0SDI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MjQwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGg4MGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMjQ4YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHpNNjQgNDcyYy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRzMTAuNzQ1LTI0IDI0LTI0IDI0IDEwLjc0NSAyNCAyNC0xMC43NDUgMjQtMjQgMjR6TTM4NCA4MS40NTJjMCA0Mi40MTYtMjUuOTcgNjYuMjA4LTMzLjI3NyA5NC41NDhoMTAxLjcyM2MzMy4zOTcgMCA1OS4zOTcgMjcuNzQ2IDU5LjU1MyA1OC4wOTguMDg0IDE3LjkzOC03LjU0NiAzNy4yNDktMTkuNDM5IDQ5LjE5N2wtLjExLjExYzkuODM2IDIzLjMzNyA4LjIzNyA1Ni4wMzctOS4zMDggNzkuNDY5IDguNjgxIDI1Ljg5NS0uMDY5IDU3LjcwNC0xNi4zODIgNzQuNzU3IDQuMjk4IDE3LjU5OCAyLjI0NCAzMi41NzUtNi4xNDggNDQuNjMyQzQ0MC4yMDIgNTExLjU4NyAzODkuNjE2IDUxMiAzNDYuODM5IDUxMmwtMi44NDUtLjAwMWMtNDguMjg3LS4wMTctODcuODA2LTE3LjU5OC0xMTkuNTYtMzEuNzI1LTE1Ljk1Ny03LjA5OS0zNi44MjEtMTUuODg3LTUyLjY1MS0xNi4xNzgtNi41NC0uMTItMTEuNzgzLTUuNDU3LTExLjc4My0xMS45OTh2LTIxMy43N2MwLTMuMiAxLjI4Mi02LjI3MSAzLjU1OC04LjUyMSAzOS42MTQtMzkuMTQ0IDU2LjY0OC04MC41ODcgODkuMTE3LTExMy4xMTEgMTQuODA0LTE0LjgzMiAyMC4xODgtMzcuMjM2IDI1LjM5My01OC45MDJDMjgyLjUxNSAzOS4yOTMgMjkxLjgxNyAwIDMxMiAwYzI0IDAgNzIgOCA3MiA4MS40NTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRodW1idGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTguMDI4IDIxNC4yNjdMMjg1Ljc5MyA5NkgzMjhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEg1NkM0Mi43NDUgMCAzMiAxMC43NDUgMzIgMjR2NDhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDQyLjIwN0w4NS45NzIgMjE0LjI2N0MzNy40NjUgMjM2LjgyIDAgMjc3LjI2MSAwIDMyOGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTM2djEwNC4wMDdjMCAxLjI0Mi4yODkgMi40NjcuODQ1IDMuNTc4bDI0IDQ4YzIuOTQxIDUuODgyIDExLjM2NCA1Ljg5MyAxNC4zMTEgMGwyNC00OGE4LjAwOCA4LjAwOCAwIDAgMCAuODQ1LTMuNTc4VjM1MmgxMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0LS4wMDEtNTEuMTgzLTM3Ljk4My05MS40Mi04NS45NzMtMTEzLjczM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGlja2V0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAxNjBoMzIwdjE5MkgxMjhWMTYwem00MDAgOTZjMCAyNi41MSAyMS40OSA0OCA0OCA0OHY5NmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4di05NmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4cy0yMS40OS00OC00OC00OHYtOTZjMC0yNi41MSAyMS40OS00OCA0OC00OGg0ODBjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHY5NmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHptLTQ4LTEwNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMTIwYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MjA4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGltZXNDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMTIxLjYgMzEzLjFjNC43IDQuNyA0LjcgMTIuMyAwIDE3TDMzOCAzNzcuNmMtNC43IDQuNy0xMi4zIDQuNy0xNyAwTDI1NiAzMTJsLTY1LjEgNjUuNmMtNC43IDQuNy0xMi4zIDQuNy0xNyAwTDEzNC40IDMzOGMtNC43LTQuNy00LjctMTIuMyAwLTE3bDY1LjYtNjUtNjUuNi02NS4xYy00LjctNC43LTQuNy0xMi4zIDAtMTdsMzkuNi0zOS42YzQuNy00LjcgMTIuMy00LjcgMTcgMGw2NSA2NS43IDY1LjEtNjUuNmM0LjctNC43IDEyLjMtNC43IDE3IDBsMzkuNiAzOS42YzQuNyA0LjcgNC43IDEyLjMgMCAxN0wzMTIgMjU2bDY1LjYgNjUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGltZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM1MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQyLjcyIDI1NmwxMDAuMDctMTAwLjA3YzEyLjI4LTEyLjI4IDEyLjI4LTMyLjE5IDAtNDQuNDhsLTIyLjI0LTIyLjI0Yy0xMi4yOC0xMi4yOC0zMi4xOS0xMi4yOC00NC40OCAwTDE3NiAxODkuMjggNzUuOTMgODkuMjFjLTEyLjI4LTEyLjI4LTMyLjE5LTEyLjI4LTQ0LjQ4IDBMOS4yMSAxMTEuNDVjLTEyLjI4IDEyLjI4LTEyLjI4IDMyLjE5IDAgNDQuNDhMMTA5LjI4IDI1NiA5LjIxIDM1Ni4wN2MtMTIuMjggMTIuMjgtMTIuMjggMzIuMTkgMCA0NC40OGwyMi4yNCAyMi4yNGMxMi4yOCAxMi4yOCAzMi4yIDEyLjI4IDQ0LjQ4IDBMMTc2IDMyMi43MmwxMDAuMDcgMTAwLjA3YzEyLjI4IDEyLjI4IDMyLjIgMTIuMjggNDQuNDggMGwyMi4yNC0yMi4yNGMxMi4yOC0xMi4yOCAxMi4yOC0zMi4xOSAwLTQ0LjQ4TDI0Mi43MiAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRpbnRTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzMuODIgNDU4LjFMNDk0Ljk3IDM1MC43OGMuNTItNS41NyAxLjAzLTExLjE2IDEuMDMtMTYuODcgMC0xMTEuNzYtOTkuNzktMTUzLjM0LTE0Ni43OC0zMTEuODItNy45NC0yOC43OC00OS40NC0zMC4xMi01OC40NCAwLTE1LjUyIDUyLjM0LTM2Ljg3IDkxLjk2LTU4LjQ5IDEyNS42OEw0NS40NyAzLjM3QzM4LjQ5LTIuMDUgMjguNDMtLjggMjMuMDEgNi4xOEwzLjM3IDMxLjQ1Qy0yLjA1IDM4LjQyLS44IDQ4LjQ3IDYuMTggNTMuOWw1ODguMzYgNDU0LjczYzYuOTggNS40MyAxNy4wMyA0LjE3IDIyLjQ2LTIuODFsMTkuNjQtMjUuMjdjNS40MS02Ljk3IDQuMTYtMTcuMDItMi44Mi0yMi40NXpNMTQ0IDMzMy45MUMxNDQgNDMyLjM1IDIyMi43MiA1MTIgMzIwIDUxMmM0NC43MSAwIDg1LjM3LTE2Ljk2IDExNi40LTQ0LjdMMTYyLjcyIDI1NS43OGMtMTEuNDEgMjMuNS0xOC43MiA0OC4zNS0xOC43MiA3OC4xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzUyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDUuMjIgMjIuMDljLTcuOTQtMjguNzgtNDkuNDQtMzAuMTItNTguNDQgMEMxMDAuMDEgMTc5Ljg1IDAgMjIyLjcyIDAgMzMzLjkxIDAgNDMyLjM1IDc4LjcyIDUxMiAxNzYgNTEyczE3Ni03OS42NSAxNzYtMTc4LjA5YzAtMTExLjc1LTk5Ljc5LTE1My4zNC0xNDYuNzgtMzExLjgyek0xNzYgNDQ4Yy02MS43NSAwLTExMi01MC4yNS0xMTItMTEyIDAtOC44NCA3LjE2LTE2IDE2LTE2czE2IDcuMTYgMTYgMTZjMCA0NC4xMSAzNS44OSA4MCA4MCA4MCA4Ljg0IDAgMTYgNy4xNiAxNiAxNnMtNy4xNiAxNi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGlyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMzMuOCAxODkuN2w4MC00OGMxMS42LTYuOSAyNCA3LjcgMTUuNCAxOEwzNDMuNiAyMDhsMzMuNiA0MC4zYzguNyAxMC40LTMuOSAyNC44LTE1LjQgMThsLTgwLTQ4Yy03LjctNC43LTcuNy0xNS45IDAtMjAuNnptLTE2My0zMGMtOC42LTEwLjMgMy44LTI0LjkgMTUuNC0xOGw4MCA0OGM3LjggNC43IDcuOCAxNS45IDAgMjAuNmwtODAgNDhjLTExLjUgNi44LTI0LTcuNi0xNS40LTE4bDMzLjYtNDAuMy0zMy42LTQwLjN6TTI0OCAyODhjNTEuOSAwIDExNS4zIDQzLjggMTIzLjIgMTA2LjcgMS43IDEzLjYtOCAyNC42LTE3LjcgMjAuNC0yNS45LTExLjEtNjQuNC0xNy40LTEwNS41LTE3LjRzLTc5LjYgNi4zLTEwNS41IDE3LjRjLTkuOCA0LjItMTkuNC03LTE3LjctMjAuNEMxMzIuNyAzMzEuOCAxOTYuMSAyODggMjQ4IDI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9nZ2xlT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCA2NEgxOTJDODUuOTYxIDY0IDAgMTQ5Ljk2MSAwIDI1NnM4NS45NjEgMTkyIDE5MiAxOTJoMTkyYzEwNi4wMzkgMCAxOTItODUuOTYxIDE5Mi0xOTJTNDkwLjAzOSA2NCAzODQgNjR6TTY0IDI1NmMwLTcwLjc0MSA1Ny4yNDktMTI4IDEyOC0xMjggNzAuNzQxIDAgMTI4IDU3LjI0OSAxMjggMTI4IDAgNzAuNzQxLTU3LjI0OSAxMjgtMTI4IDEyOC03MC43NDEgMC0xMjgtNTcuMjQ5LTEyOC0xMjh6bTMyMCAxMjhoLTQ4LjkwNWM2NS4yMTctNzIuODU4IDY1LjIzNi0xODMuMTIgMC0yNTZIMzg0YzcwLjc0MSAwIDEyOCA1Ny4yNDkgMTI4IDEyOCAwIDcwLjc0LTU3LjI0OSAxMjgtMTI4IDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9nZ2xlT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDY0SDE5MkM4NiA2NCAwIDE1MCAwIDI1NnM4NiAxOTIgMTkyIDE5MmgxOTJjMTA2IDAgMTkyLTg2IDE5Mi0xOTJTNDkwIDY0IDM4NCA2NHptMCAzMjBjLTcwLjggMC0xMjgtNTcuMy0xMjgtMTI4IDAtNzAuOCA1Ny4zLTEyOCAxMjgtMTI4IDcwLjggMCAxMjggNTcuMyAxMjggMTI4IDAgNzAuOC01Ny4zIDEyOC0xMjggMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2lsZXRQYXBlclNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0LDE5MlYzNjQuMTNjMCw0MS4xMi05Ljc1LDYyLjc1LTMxLjEyLDEyNi44N0ExNiwxNiwwLDAsMCw0OCw1MTJIMzI4Ljg2YTMxLjg3LDMxLjg3LDAsMCwwLDMwLjM4LTIxLjg3YzkuMzEtMjcuODMsMTgtNTMuMzUsMjIuMTgtODUuNTVsLTMxNi0yNDQuMjVDNjQuNTMsMTcwLjY2LDY0LDE4MS4xOSw2NCwxOTJaTTYzMy44Miw0NTguMDlsLTEwMi03OC44MUM1NzUuMjgsMzYwLjkxLDYwOCwyODQuMzIsNjA4LDE5Miw2MDgsODYsNTY1LDAsNTEyLDBzLTk2LDg2LTk2LDE5MmMwLDQyLDcsODAuNCwxOC40MywxMTJMMzg0LDI2NVYxOTJjMC04My42MiwyMy42My0xNTMuNSw2MC41LTE5MkgxNjBjLTIzLjMzLDAtNDQuNjMsMTYuODMtNjEuMjYsNDQuNTNMNDUuNDYsMy4zOEExNiwxNiwwLDAsMCwyMyw2LjE5TDMuMzcsMzEuNDVBMTYsMTYsMCwwLDAsNi4xOCw1My45MUw1OTQuNTQsNTA4LjYzQTE2LDE2LDAsMCwwLDYxNyw1MDUuODFsMTkuNjQtMjUuMjZBMTYsMTYsMCwwLDAsNjMzLjgyLDQ1OC4wOVpNNTEyLDI1NmMtMTcuNjMsMC0zMi0yOC42Mi0zMi02NHMxNC4zNy02NCwzMi02NCwzMiwyOC42MywzMiw2NFM1MjkuNjIsMjU2LDUxMiwyNTZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvaWxldFBhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwQzc0Ljk4IDAgMzIgODUuOTYgMzIgMTkydjE3Mi4wN2MwIDQxLjEyLTkuOCA2Mi43Ny0zMS4xNyAxMjYuODdDLTIuNjIgNTAxLjMgNS4wOSA1MTIgMTYuMDEgNTEyaDI4MC45MmMxMy43NyAwIDI2LTguODEgMzAuMzYtMjEuODggMTIuODMtMzguNDggMjQuNzEtNzIuNCAyNC43MS0xMjYuMDVWMTkyYzAtODMuNiAyMy42Ny0xNTMuNTIgNjAuNDQtMTkySDEyOHpNOTYgMjI0Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2IDE2IDcuMTYgMTYgMTYtNy4xNiAxNi0xNiAxNnptNjQgMGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNiAxNiA3LjE2IDE2IDE2LTcuMTYgMTYtMTYgMTZ6bTY0IDBjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTYgMTYgNy4xNiAxNiAxNi03LjE2IDE2LTE2IDE2em02NCAwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2IDE2IDcuMTYgMTYgMTYtNy4xNiAxNi0xNiAxNnpNNDgwIDBjLTUzLjAyIDAtOTYgODUuOTYtOTYgMTkyczQyLjk4IDE5MiA5NiAxOTIgOTYtODUuOTYgOTYtMTkyUzUzMy4wMiAwIDQ4MCAwem0wIDI1NmMtMTcuNjcgMC0zMi0yOC42NS0zMi02NHMxNC4zMy02NCAzMi02NCAzMiAyOC42NSAzMiA2NC0xNC4zMyA2NC0zMiA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9pbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCA0OGM4LjggMCAxNi03LjIgMTYtMTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2SDE2QzcuMiAwIDAgNy4yIDAgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDE2djE1Ni43QzExLjggMjE0LjggMCAyMjYuOSAwIDI0MGMwIDY3LjIgMzQuNiAxMjYuMiA4Ni44IDE2MC41bC0yMS40IDcwLjJDNTkuMSA0OTEuMiA3NC41IDUxMiA5NiA1MTJoMTkyYzIxLjUgMCAzNi45LTIwLjggMzAuNi00MS4zbC0yMS40LTcwLjJDMzQ5LjQgMzY2LjIgMzg0IDMwNy4yIDM4NCAyNDBjMC0xMy4xLTExLjgtMjUuMi0zMi0zNS4zVjQ4aDE2ek04MCA3MmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEg4OGMtNC40IDAtOC0zLjYtOC04Vjcyem0xMTIgMjAwYy03Ny4xIDAtMTM5LjYtMTQuMy0xMzkuNi0zMnM2Mi41LTMyIDEzOS42LTMyIDEzOS42IDE0LjMgMTM5LjYgMzItNjIuNSAzMi0xMzkuNiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9vbGJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuNjMgMjE0LjYzbC00NS4yNS00NS4yNWMtNi02LTE0LjE0LTkuMzctMjIuNjMtOS4zN0gzODRWODBjMC0yNi41MS0yMS40OS00OC00OC00OEgxNzZjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2ODBINzcuMjVjLTguNDkgMC0xNi42MiAzLjM3LTIyLjYzIDkuMzdMOS4zNyAyMTQuNjNjLTYgNi05LjM3IDE0LjE0LTkuMzcgMjIuNjNWMzIwaDEyOHYtMTZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMzJjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTZoMTI4di0xNmMwLTguODQgNy4xNi0xNiAxNi0xNmgzMmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYxNmgxMjh2LTgyLjc1YzAtOC40OC0zLjM3LTE2LjYyLTkuMzctMjIuNjJ6TTMyMCAxNjBIMTkyVjk2aDEyOHY2NHptNjQgMjA4YzAgOC44NC03LjE2IDE2LTE2IDE2aC0zMmMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTE2SDE5MnYxNmMwIDguODQtNy4xNiAxNi0xNiAxNmgtMzJjLTguODQgMC0xNi03LjE2LTE2LTE2di0xNkgwdjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNDQ4YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2SDM4NHYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9vbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAxLjEgMzk1LjdMMzg0IDI3OC42Yy0yMy4xLTIzLjEtNTcuNi0yNy42LTg1LjQtMTMuOUwxOTIgMTU4LjFWOTZMNjQgMCAwIDY0bDk2IDEyOGg2Mi4xbDEwNi42IDEwNi42Yy0xMy42IDI3LjgtOS4yIDYyLjMgMTMuOSA4NS40bDExNy4xIDExNy4xYzE0LjYgMTQuNiAzOC4yIDE0LjYgNTIuNyAwbDUyLjctNTIuN2MxNC41LTE0LjYgMTQuNS0zOC4yIDAtNTIuN3pNMzMxLjcgMjI1YzI4LjMgMCA1NC45IDExIDc0LjkgMzFsMTkuNCAxOS40YzE1LjgtNi45IDMwLjgtMTYuNSA0My44LTI5LjUgMzcuMS0zNy4xIDQ5LjctODkuMyAzNy45LTEzNi43LTIuMi05LTEzLjUtMTIuMS0yMC4xLTUuNWwtNzQuNCA3NC40LTY3LjktMTEuM0wzMzQgOTguOWw3NC40LTc0LjRjNi42LTYuNiAzLjQtMTcuOS01LjctMjAuMi00Ny40LTExLjctOTkuNi45LTEzNi42IDM3LjktMjguNSAyOC41LTQxLjkgNjYuMS00MS4yIDEwMy42bDgyLjEgODIuMWM4LjEtMS45IDE2LjUtMi45IDI0LjctMi45em0tMTAzLjkgODJsLTU2LjctNTYuN0wxOC43IDQwMi44Yy0yNSAyNS0yNSA2NS41IDAgOTAuNXM2NS41IDI1IDkwLjUgMGwxMjMuNi0xMjMuNmMtNy42LTE5LjktOS45LTQxLjYtNS02Mi43ek02NCA0NzJjLTEzLjIgMC0yNC0xMC44LTI0LTI0IDAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRjMCAxMy4yLTEwLjcgMjQtMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvb3RoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0My45OCA5Ni4yNWMtMTEuMDEtNDUuMjItNDcuMTEtODIuMDYtOTIuMDEtOTMuNzItMzIuMTktOC4zNi02MyA1LjEtODkuMTQgMjQuMzMtMy4yNSAyLjM5LTYuOTYgMy43My0xMC41IDUuNDhsMjguMzIgMTguMjFjNy40MiA0Ljc3IDkuNTggMTQuNjcgNC44IDIyLjExLTQuNDYgNi45NS0xNC4yNyA5Ljg2LTIyLjExIDQuOEwxNjIuODMgMTIuODRjLTIwLjctMTAuODUtNDMuMzgtMTYuNC02Ni44MS0xMC4zMS00NC45IDExLjY3LTgxIDQ4LjUtOTIuMDEgOTMuNzItMTAuMTMgNDEuNjItLjQyIDgwLjgxIDIxLjUgMTEwLjQzIDIzLjM2IDMxLjU3IDMyLjY4IDY4LjY2IDM2LjI5IDEwNy4zNSA0LjQgNDcuMTYgMTAuMzMgOTQuMTYgMjAuOTQgMTQwLjMybDcuOCAzMy45NWMzLjE5IDEzLjg3IDE1LjQ5IDIzLjcgMjkuNjcgMjMuNyAxMy45NyAwIDI2LjE1LTkuNTUgMjkuNTQtMjMuMTZsMzQuNDctMTM4LjQyYzQuNTYtMTguMzIgMjAuOTYtMzEuMTYgMzkuNzYtMzEuMTZzMzUuMiAxMi44NSAzOS43NiAzMS4xNmwzNC40NyAxMzguNDJjMy4zOSAxMy42MSAxNS41NyAyMy4xNiAyOS41NCAyMy4xNiAxNC4xOCAwIDI2LjQ4LTkuODMgMjkuNjctMjMuN2w3LjgtMzMuOTVjMTAuNjEtNDYuMTUgMTYuNTMtOTMuMTYgMjAuOTQtMTQwLjMyIDMuNjEtMzguNyAxMi45My03NS43OCAzNi4yOS0xMDcuMzUgMjEuOTUtMjkuNjEgMzEuNjYtNjguOCAyMS41My0xMTAuNDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvcmFoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMC4wNSAzNjYuNDhsMTcuNzItMjkuNjRoLTM1LjQ2em05OS4yMS0xNjZIMzgyLjRsMTguNDYgMzAuODJ6TTQ4IDBDMjEuNDkgMCAwIDE0LjMzIDAgMzJ2NDQ4YzAgMTcuNjcgMjEuNDkgMzIgNDggMzJzNDgtMTQuMzMgNDgtMzJWMzJDOTYgMTQuMzMgNzQuNTEgMCA0OCAwem0xNzIuNzQgMzExLjVoMzYuODVsLTE4LjQ2LTMwLjgyem0xNjEuNzEgMGgzNi44NmwtMTguNDUtMzAuOHpNMTI4IDQ2NGgzODRWNDhIMTI4em02Ni43Ny0yNzguMTNhMjEuMjIgMjEuMjIgMCAwIDEgMTguNDgtMTAuNzFoNTkuNDVsMjkuMTMtNDguNzFhMjEuMTMgMjEuMTMgMCAwIDEgMTguMjItMTAuMzdBMjAuNzYgMjAuNzYgMCAwIDEgMzM4IDEyNi4yOWwyOS4yNSA0OC44Nmg1OS41MmEyMS4xMiAyMS4xMiAwIDAgMSAxOC4xIDMyTDQxNS42MyAyNTYgNDQ1IDMwNWEyMC42OSAyMC42OSAwIDAgMSAuMjQgMjEuMTIgMjEuMjUgMjEuMjUgMCAwIDEtMTguNDggMTAuNzJoLTU5LjQ3bC0yOS4xMyA0OC43YTIxLjEzIDIxLjEzIDAgMCAxLTE4LjE2IDEwLjQgMjAuNzkgMjAuNzkgMCAwIDEtMTgtMTAuMjJsLTI5LjI1LTQ4Ljg4aC01OS41YTIxLjExIDIxLjExIDAgMCAxLTE4LjEtMzJMMjI0LjM2IDI1NiAxOTUgMjA3YTIwLjcgMjAuNyAwIDAgMS0uMjMtMjEuMTN6TTU5MiAwYy0yNi41MSAwLTQ4IDE0LjMzLTQ4IDMydjQ0OGMwIDE3LjY3IDIxLjQ5IDMyIDQ4IDMyczQ4LTE0LjMzIDQ4LTMyVjMyYzAtMTcuNjctMjEuNDktMzItNDgtMzJ6TTMyMCAxNDUuNTNsLTE3Ljc4IDI5LjYyaDM1LjQ2em0tNjIuNDUgNTVoLTM2LjgxbDE4LjQ0IDMwLjh6bTI5LjU4IDExMWg2NS43OUwzODYuMDkgMjU2bC0zMy4yMy01NS41MmgtNjUuNzlMMjUzLjkgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb3JpaUdhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc2LjQ1IDMyaC0yNDAuOUEzMDMuMTcgMzAzLjE3IDAgMCAxIDAgMHY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMydjY0SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0OHYyNDBjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjU2aDI1NnYyNDBjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjU2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNmgtNDh2LTY0aDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMGEzMDMuMTcgMzAzLjE3IDAgMCAxLTEzNS41NSAzMnpNMTI4IDEyOGg5NnY2NGgtOTZ2LTY0em0yNTYgNjRoLTk2di02NGg5NnY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhY3RvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjggMzM2Yy00OC42IDAtODggMzkuNC04OCA4OHMzOS40IDg4IDg4IDg4IDg4LTM5LjQgODgtODgtMzkuNC04OC04OC04OHptMCAxMTJjLTEzLjIzIDAtMjQtMTAuNzctMjQtMjRzMTAuNzctMjQgMjQtMjQgMjQgMTAuNzcgMjQgMjQtMTAuNzcgMjQtMjQgMjR6bTgwLTI4OGgtNjR2LTQwLjJjMC0xNC4xMiA0LjctMjcuNzYgMTMuMTUtMzguODQgNC40Mi01LjggMy41NS0xNC4wNi0xLjMyLTE5LjQ5TDUzNC4yIDM3LjNjLTYuNjYtNy40NS0xOC4zMi02LjkyLTI0LjcuNzhDNDkwLjU4IDYwLjkgNDgwIDg5LjgxIDQ4MCAxMTkuOFYxNjBIMzc3LjY3TDMyMS41OCAyOS4xNEE0Ny45MTQgNDcuOTE0IDAgMCAwIDI3Ny40NSAwSDE0NGMtMjYuNDcgMC00OCAyMS41My00OCA0OHYxNDYuNTJjLTguNjMtNi43My0yMC45Ni02LjQ2LTI4Ljg5IDEuNDdMMzYgMjI3LjFjLTguNTkgOC41OS04LjU5IDIyLjUyIDAgMzEuMTFsNS4wNiA1LjA2Yy00Ljk5IDkuMjYtOC45NiAxOC44Mi0xMS45MSAyOC43MkgyMmMtMTIuMTUgMC0yMiA5Ljg1LTIyIDIydjQ0YzAgMTIuMTUgOS44NSAyMiAyMiAyMmg3LjE0YzIuOTYgOS45MSA2LjkyIDE5LjQ2IDExLjkxIDI4LjczbC01LjA2IDUuMDZjLTguNTkgOC41OS04LjU5IDIyLjUyIDAgMzEuMTFMNjcuMSA0NzZjOC41OSA4LjU5IDIyLjUyIDguNTkgMzEuMTEgMGw1LjA2LTUuMDZjOS4yNiA0Ljk5IDE4LjgyIDguOTYgMjguNzIgMTEuOTFWNDkwYzAgMTIuMTUgOS44NSAyMiAyMiAyMmg0NGMxMi4xNSAwIDIyLTkuODUgMjItMjJ2LTcuMTRjOS45LTIuOTUgMTkuNDYtNi45MiAyOC43Mi0xMS45MWw1LjA2IDUuMDZjOC41OSA4LjU5IDIyLjUyIDguNTkgMzEuMTEgMGwzMS4xMS0zMS4xMWM4LjU5LTguNTkgOC41OS0yMi41MiAwLTMxLjExbC01LjA2LTUuMDZjNC45OS05LjI2IDguOTYtMTguODIgMTEuOTEtMjguNzJIMzMwYzEyLjE1IDAgMjItOS44NSAyMi0yMnYtNmg4MC41NGMyMS45MS0yOC45OSA1Ni4zMi00OCA5NS40Ni00OCAxOC42NCAwIDM2LjA3IDQuNjEgNTEuOCAxMi4ybDUwLjgyLTUwLjgyYzYtNiA5LjM3LTE0LjE0IDkuMzctMjIuNjNWMTkyYy4wMS0xNy42Ny0xNC4zMi0zMi0zMS45OS0zMnpNMTc2IDQxNmMtNDQuMTggMC04MC0zNS44Mi04MC04MHMzNS44Mi04MCA4MC04MCA4MCAzNS44MiA4MCA4MC0zNS44MiA4MC04MCA4MHptMjItMjU2aC0zOFY2NGgxMDYuODlsNDEuMTUgOTZIMTk4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFkZW1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjYwLjYgOTZIMTJjLTYuNiAwLTEyIDUuNC0xMiAxMnY0My4xYzAgNi42IDUuNCAxMiAxMiAxMmg4NS4xVjQwNGMwIDYuNiA1LjQgMTIgMTIgMTJoNTQuM2M2LjYgMCAxMi01LjQgMTItMTJWMTYzLjFoODUuMWM2LjYgMCAxMi01LjQgMTItMTJWMTA4Yy4xLTYuNi01LjMtMTItMTEuOS0xMnpNNjQwIDQwM2wtMjQtMjk2Yy0uNS02LjItNS43LTExLTEyLTExaC02NS40Yy01LjEgMC05LjcgMy4zLTExLjMgOC4xbC00My44IDEyNy4xYy03LjIgMjAuNi0xNi4xIDUyLjgtMTYuMSA1Mi44aC0uOXMtOC45LTMyLjItMTYuMS01Mi44bC00My44LTEyNy4xYy0xLjctNC44LTYuMi04LjEtMTEuMy04LjFoLTY1LjRjLTYuMiAwLTExLjQgNC44LTEyIDExbC0yNC40IDI5NmMtLjYgNyA0LjkgMTMgMTIgMTNIMzYwYzYuMyAwIDExLjUtNC45IDEyLTExLjJsOS4xLTEzMi45YzEuOC0yNC4yIDAtNTMuNyAwLTUzLjdoLjlzMTAuNyAzMy42IDE3LjkgNTMuN2wzMC43IDg0LjdjMS43IDQuNyA2LjIgNy45IDExLjMgNy45aDUwLjNjNS4xIDAgOS42LTMuMiAxMS4zLTcuOWwzMC43LTg0LjdjNy4yLTIwLjEgMTcuOS01My43IDE3LjktNTMuN2guOXMtMS44IDI5LjUgMCA1My43bDkuMSAxMzIuOWMuNCA2LjMgNS43IDExLjIgMTIgMTEuMkg2MjhjNyAwIDEyLjUtNiAxMi0xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhZmZpY0xpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxOTJoLTY0di0zNy44OGMzNy4yLTEzLjIyIDY0LTQ4LjM4IDY0LTkwLjEyaC02NFYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDk2Qzc4LjMzIDAgNjQgMTQuMzMgNjQgMzJ2MzJIMGMwIDQxLjc0IDI2LjggNzYuOSA2NCA5MC4xMlYxOTJIMGMwIDQxLjc0IDI2LjggNzYuOSA2NCA5MC4xMlYzMjBIMGMwIDQyLjg0IDI4LjI1IDc4LjY5IDY2Ljk5IDkxLjA1Qzc5LjQyIDQ2OC43MiAxMzAuNiA1MTIgMTkyIDUxMnMxMTIuNTgtNDMuMjggMTI1LjAxLTEwMC45NUMzNTUuNzUgMzk4LjY5IDM4NCAzNjIuODQgMzg0IDMyMGgtNjR2LTM3Ljg4YzM3LjItMTMuMjIgNjQtNDguMzggNjQtOTAuMTJ6TTE5MiA0MTZjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bTAtMTI4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4LTIxLjQ5IDQ4LTQ4IDQ4em0wLTEyOGMtMjYuNTEgMC00OC0yMS40OS00OC00OHMyMS40OS00OCA0OC00OCA0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhaWxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQsMzIwSDU0NFY4MGExNiwxNiwwLDAsMC0xNi0xNkgxNkExNiwxNiwwLDAsMCwwLDgwVjM2OGExNiwxNiwwLDAsMCwxNiwxNkg2NS42MWM3LjgzLTU0LjIxLDU0LTk2LDExMC4zOS05NnMxMDIuNTYsNDEuNzksMTEwLjM5LDk2SDYyNGExNiwxNiwwLDAsMCwxNi0xNlYzMzZBMTYsMTYsMCwwLDAsNjI0LDMyMFpNOTYsMjQzLjY4YTE3Ni4yOSwxNzYuMjksMCwwLDAtMzIsMjAuNzFWMTM2YTgsOCwwLDAsMSw4LThIODhhOCw4LDAsMCwxLDgsOFptOTYtMTguNTRjLTUuMzEtLjQ5LTEwLjU3LTEuMTQtMTYtMS4xNHMtMTAuNjkuNjUtMTYsMS4xNFYxMzZhOCw4LDAsMCwxLDgtOGgxNmE4LDgsMCwwLDEsOCw4Wm05NiwzOS4yNWExNzYuMjksMTc2LjI5LDAsMCwwLTMyLTIwLjcxVjEzNmE4LDgsMCwwLDEsOC04aDE2YTgsOCwwLDAsMSw4LDhaTTM4NCwzMjBIMzUyVjEzNmE4LDgsMCwwLDEsOC04aDE2YTgsOCwwLDAsMSw4LDhabTk2LDBINDQ4VjEzNmE4LDgsMCwwLDEsOC04aDE2YTgsOCwwLDAsMSw4LDhabS0zMDQsMGE4MCw4MCwwLDEsMCw4MCw4MEE4MCw4MCwwLDAsMCwxNzYsMzIwWm0wLDExMmEzMiwzMiwwLDEsMSwzMi0zMkEzMiwzMiwwLDAsMSwxNzYsNDMyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZ2MjU2YzAgNTEuODE1LTYxLjYyNCA5Ni0xMzAuMDIyIDk2bDYyLjk4IDQ5LjcyMUMzODYuOTA1IDUwMi40MTcgMzgzLjU2MiA1MTIgMzc2IDUxMkg3MmMtNy41NzggMC0xMC44OTItOS41OTQtNC45NTctMTQuMjc5TDEzMC4wMjIgNDQ4QzYxLjgyIDQ0OCAwIDQwMy45NTQgMCAzNTJWOTZDMCA0Mi45ODEgNjQgMCAxMjggMGgxOTJjNjUgMCAxMjggNDIuOTgxIDEyOCA5NnptLTQ4IDEzNlYxMjBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDcyYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTEyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMDRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0em0tMTc2IDY0Yy0zMC45MjggMC01NiAyNS4wNzItNTYgNTZzMjUuMDcyIDU2IDU2IDU2IDU2LTI1LjA3MiA1Ni01Ni0yNS4wNzItNTYtNTYtNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyUzMwNS43IDAgMjg4IDBzLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMjIzLjUtMTIuMWMtMi4zLTguNi0xMS0xMy42LTE5LjYtMTEuM2wtNDgwIDEyOGMtOC41IDIuMy0xMy42IDExLTExLjMgMTkuNkMyLjUgMTk1LjMgOC45IDIwMCAxNiAyMDBjMS40IDAgMi44LS4yIDQuMS0uNUwyNDAgMTQwLjhWMjI0SDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYyMjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzg0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1NmMwLTE3LjctMTQuMy0zMi0zMi0zMkgyNzJ2LTkxLjdsMjI4LjEtNjAuOGM4LjYtMi4zIDEzLjYtMTEuMSAxMS40LTE5LjZ6TTE3NiAzODRIODB2LTk2aDk2djk2em0xNjAtOTZoOTZ2OTZoLTk2di05NnptLTMyIDB2OTZoLTk2di05Nmg5NnpNMTkyIDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhbnNnZW5kZXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY4IDBoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktODAuNyA4MC43QzI5NC41IDEwNC4xIDI2OC4yIDk2IDI0MCA5NmMtMjguMiAwLTU0LjUgOC4xLTc2LjcgMjIuMWwtMTYuNS0xNi41IDE5LjgtMTkuOGM0LjctNC43IDQuNy0xMi4zIDAtMTdsLTI4LjMtMjguM2MtNC43LTQuNy0xMi4zLTQuNy0xNyAwbC0xOS44IDE5LjgtMTktMTkgMTYuOS0xNi45QzEwNy4xIDEyLjkgMTAxLjcgMCA5MSAwSDEyQzUuNCAwIDAgNS40IDAgMTJ2NzljMCAxMC43IDEyLjkgMTYgMjAuNSA4LjVsMTYuOS0xNi45IDE5IDE5LTE5LjggMTkuOGMtNC43IDQuNy00LjcgMTIuMyAwIDE3bDI4LjMgMjguM2M0LjcgNC43IDEyLjMgNC43IDE3IDBsMTkuOC0xOS44IDE2LjUgMTYuNUMxMDQuMSAxODUuNSA5NiAyMTEuOCA5NiAyNDBjMCA2OC41IDQ3LjkgMTI1LjkgMTEyIDE0MC40VjQwOGgtMzZjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMzZ2MjhjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMjhoMzZjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTM2di0yNy42YzY0LjEtMTQuNiAxMTItNzEuOSAxMTItMTQwLjQgMC0yOC4yLTguMS01NC41LTIyLjEtNzYuN2w4MC43LTgwLjcgMTYuOSAxNi45YzcuNiA3LjYgMjAuNSAyLjIgMjAuNS04LjVWMTJjMC02LjYtNS40LTEyLTEyLTEyek0yNDAgMzIwYy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhbnNnZW5kZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyIDBoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktODAuNyA4MC43QzE5OC41IDEwNC4xIDE3Mi4yIDk2IDE0NCA5NiA2NC41IDk2IDAgMTYwLjUgMCAyNDBjMCA2OC41IDQ3LjkgMTI1LjkgMTEyIDE0MC40VjQwOEg3NmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgzNnYyOGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEydi0yOGgzNmM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMzZ2LTI3LjZjNjQuMS0xNC42IDExMi03MS45IDExMi0xNDAuNCAwLTI4LjItOC4xLTU0LjUtMjIuMS03Ni43bDgwLjctODAuNyAxNi45IDE2LjljNy42IDcuNiAyMC41IDIuMiAyMC41LTguNVYxMmMwLTYuNi01LjQtMTItMTItMTJ6TTE0NCAzMjBjLTQ0LjEgMC04MC0zNS45LTgwLTgwczM1LjktODAgODAtODAgODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFzaEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0NjRhNDggNDggMCAwIDAgNDggNDhoMjg4YTQ4IDQ4IDAgMCAwIDQ4LTQ4VjEyOEgzMnptMjcyLTI1NmExNiAxNiAwIDAgMSAzMiAwdjIyNGExNiAxNiAwIDAgMS0zMiAwem0tOTYgMGExNiAxNiAwIDAgMSAzMiAwdjIyNGExNiAxNiAwIDAgMS0zMiAwem0tOTYgMGExNiAxNiAwIDAgMSAzMiAwdjIyNGExNiAxNiAwIDAgMS0zMiAwek00MzIgMzJIMzEybC05LjQtMTguN0EyNCAyNCAwIDAgMCAyODEuMSAwSDE2Ni44YTIzLjcyIDIzLjcyIDAgMCAwLTIxLjQgMTMuM0wxMzYgMzJIMTZBMTYgMTYgMCAwIDAgMCA0OHYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYXNoUmVzdG9yZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0NjRhNDggNDggMCAwIDAgNDggNDhoMjg4YTQ4IDQ4IDAgMCAwIDQ4LTQ4VjEyOEgzMnptOTEuMzEtMTcyLjhsODkuMzgtOTQuMjZhMTUuNDEgMTUuNDEgMCAwIDEgMjIuNjIgMGw4OS4zOCA5NC4yNmMxMC4wOCAxMC42MiAyLjk0IDI4LjgtMTEuMzIgMjguOEgyNTZ2MTEyYTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNlYzMjBoLTU3LjM3Yy0xNC4yNiAwLTIxLjQtMTguMTgtMTEuMzItMjguOHpNNDMyIDMySDMxMmwtOS40LTE4LjdBMjQgMjQgMCAwIDAgMjgxLjEgMEgxNjYuOGEyMy43MiAyMy43MiAwIDAgMC0yMS40IDEzLjNMMTM2IDMySDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFzaFJlc3RvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTMuMiA0NjdhNDggNDggMCAwIDAgNDcuOSA0NWgyNDUuOGE0OCA0OCAwIDAgMCA0Ny45LTQ1TDQxNiAxMjhIMzJ6bTcwLjExLTE3NS44bDg5LjM4LTk0LjI2YTE1LjQxIDE1LjQxIDAgMCAxIDIyLjYyIDBsODkuMzggOTQuMjZjMTAuMDggMTAuNjIgMi45NCAyOC44LTExLjMyIDI4LjhIMjU2djExMmExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZWMzIwaC01Ny4zN2MtMTQuMjYgMC0yMS40LTE4LjE4LTExLjMyLTI4Ljh6TTQzMiAzMkgzMTJsLTkuNC0xOC43QTI0IDI0IDAgMCAwIDI4MS4xIDBIMTY2LjhhMjMuNzIgMjMuNzIgMCAwIDAtMjEuNCAxMy4zTDEzNiAzMkgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDMySDMxMmwtOS40LTE4LjdBMjQgMjQgMCAwIDAgMjgxLjEgMEgxNjYuOGEyMy43MiAyMy43MiAwIDAgMC0yMS40IDEzLjNMMTM2IDMySDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2ek01My4yIDQ2N2E0OCA0OCAwIDAgMCA0Ny45IDQ1aDI0NS44YTQ4IDQ4IDAgMCAwIDQ3LjktNDVMNDE2IDEyOEgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzguMzEgMzc4LjQ5TDI5OC40MiAyODhoMzAuNjNjOS4wMSAwIDE2Ljk4LTUgMjAuNzgtMTMuMDYgMy44LTguMDQgMi41NS0xNy4yNi0zLjI4LTI0LjA1TDI2OC40MiAxNjBoMjguODljOS4xIDAgMTcuMy01LjM1IDIwLjg2LTEzLjYxIDMuNTItOC4xMyAxLjg2LTE3LjU5LTQuMjQtMjQuMDhMMjAzLjY2IDQuODNjLTYuMDMtNi40NS0xNy4yOC02LjQ1LTIzLjMyIDBMNzAuMDYgMTIyLjMxYy02LjEgNi40OS03Ljc1IDE1Ljk1LTQuMjQgMjQuMDhDNjkuMzggMTU0LjY1IDc3LjU5IDE2MCA4Ni42OSAxNjBoMjguODlsLTc4LjE0IDkwLjkxYy01LjgxIDYuNzgtNy4wNiAxNS45OS0zLjI3IDI0LjA0QzM3Ljk3IDI4MyA0NS45MyAyODggNTQuOTUgMjg4aDMwLjYzTDUuNjkgMzc4LjQ5Yy02IDYuNzktNy4zNiAxNi4wOS0zLjU2IDI0LjI2IDMuNzUgOC4wNSAxMiAxMy4yNSAyMS4wMSAxMy4yNUgxNjB2MjQuNDVsLTMwLjI5IDQ4LjRjLTUuMzIgMTAuNjQgMi40MiAyMy4xNiAxNC4zMSAyMy4xNmg5NS45NmMxMS44OSAwIDE5LjYzLTEyLjUyIDE0LjMxLTIzLjE2TDIyNCA0NDAuNDVWNDE2aDEzNi44NmM5LjAxIDAgMTcuMjYtNS4yIDIxLjAxLTEzLjI1IDMuOC04LjE3IDIuNDQtMTcuNDctMy41Ni0yNC4yNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJvcGh5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU1MiA2NEg0NDhWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRIMTUyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY0MEgyNEMxMC43IDY0IDAgNzQuNyAwIDg4djU2YzAgMzUuNyAyMi41IDcyLjQgNjEuOSAxMDAuNyAzMS41IDIyLjcgNjkuOCAzNy4xIDExMCA0MS43QzIwMy4zIDMzOC41IDI0MCAzNjAgMjQwIDM2MHY3MmgtNDhjLTM1LjMgMC02NCAyMC43LTY0IDU2djEyYzAgNi42IDUuNCAxMiAxMiAxMmgyOTZjNi42IDAgMTItNS40IDEyLTEydi0xMmMwLTM1LjMtMjguNy01Ni02NC01NmgtNDh2LTcyczM2LjctMjEuNSA2OC4xLTczLjZjNDAuMy00LjYgNzguNi0xOSAxMTAtNDEuNyAzOS4zLTI4LjMgNjEuOS02NSA2MS45LTEwMC43Vjg4YzAtMTMuMy0xMC43LTI0LTI0LTI0ek05OS4zIDE5Mi44Qzc0LjkgMTc1LjIgNjQgMTU1LjYgNjQgMTQ0di0xNmg2NC4yYzEgMzIuNiA1LjggNjEuMiAxMi44IDg2LjItMTUuMS01LjItMjkuMi0xMi40LTQxLjctMjEuNHpNNTEyIDE0NGMwIDE2LjEtMTcuNyAzNi4xLTM1LjMgNDguOC0xMi41IDktMjYuNyAxNi4yLTQxLjggMjEuNCA3LTI1IDExLjgtNTMuNiAxMi44LTg2LjJINTEydjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja0xvYWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAuMiAzNzUuNmMyLjMgOC41IDExLjEgMTMuNiAxOS42IDExLjNsMjE2LjQtNThjOC41LTIuMyAxMy42LTExLjEgMTEuMy0xOS42bC00OS43LTE4NS41Yy0yLjMtOC41LTExLjEtMTMuNi0xOS42LTExLjNMMTUxIDEzMy4zbDI0LjggOTIuNy02MS44IDE2LjUtMjQuOC05Mi43LTc3LjMgMjAuN0MzLjQgMTcyLjgtMS43IDE4MS42LjYgMTkwLjFsNDkuNiAxODUuNXpNMzg0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMyMy42TDUuOSA0NTBjLTQuMyAxLjItNi44IDUuNi01LjYgOS44bDEyLjYgNDYuM2MxLjIgNC4zIDUuNiA2LjggOS44IDUuNmwzOTMuNy0xMDcuNEM0MTguOCA0NjQuMSA0NjcuNiA1MTIgNTI4IDUxMmM2MS45IDAgMTEyLTUwLjEgMTEyLTExMlYwSDM4NHptMTQ0IDQ0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrTW9uc3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQgMjI0aC0xNnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtNzMuNkw0MTkuMjIgMjQuMDJBNjQuMDI1IDY0LjAyNSAwIDAgMCAzNjkuMjQgMEgyNTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZINDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djgwSDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNi43MmMyOS4yMS0zOC42NSA3NS4xLTY0IDEyNy4yOC02NHM5OC4wNyAyNS4zNSAxMjcuMjggNjRoNjUuNDVjMjkuMjEtMzguNjUgNzUuMS02NCAxMjcuMjgtNjRzOTguMDcgMjUuMzUgMTI3LjI4IDY0SDYyNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bS0zMzYtOTZWNjRoODEuMjRsNTEuMiA2NEgyODh6bTMwNCAyMjRoLTUuMmMtMi4yLTcuMzMtNS4wNy0xNC4yOC04LjY1LTIwLjg5bDMuNjctMy42N2M2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzbC0yMi42My0yMi42M2MtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtMy42NyAzLjY3QTExMC44NSAxMTAuODUgMCAwIDAgNTEyIDI3Ny4yVjI3MmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djUuMmMtNy4zMyAyLjItMTQuMjggNS4wNy0yMC44OSA4LjY1bC0zLjY3LTMuNjdjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTIyLjYzIDIyLjYzYy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDMuNjcgMy42N0ExMTAuODUgMTEwLjg1IDAgMCAwIDM3My4yIDM1MkgzNjhjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDUuMmMyLjIgNy4zMyA1LjA3IDE0LjI4IDguNjUgMjAuODlsLTMuNjcgMy42N2MtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wyMi42MyAyMi42M2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDMuNjctMy42N2M2LjYxIDMuNTcgMTMuNTcgNi40NSAyMC45IDguNjV2NS4yYzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di01LjJjNy4zMy0yLjIgMTQuMjgtNS4wNyAyMC45LTguNjVsMy42NyAzLjY3YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMjIuNjMtMjIuNjNjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtMy42Ny0zLjY3YTExMC44NSAxMTAuODUgMCAwIDAgOC42NS0yMC44OWg1LjJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYy0uMDItOC44NC03LjE4LTE2LTE2LjAyLTE2em0tMTEyIDgwYy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4LTIxLjQ5IDQ4LTQ4IDQ4em0tMjA4LTgwaC01LjJjLTIuMi03LjMzLTUuMDctMTQuMjgtOC42NS0yMC44OWwzLjY3LTMuNjdjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtMjIuNjMtMjIuNjNjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTMuNjcgMy42N0ExMTAuODUgMTEwLjg1IDAgMCAwIDE5MiAyNzcuMlYyNzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY1LjJjLTcuMzMgMi4yLTE0LjI4IDUuMDctMjAuODkgOC42NWwtMy42Ny0zLjY3Yy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwTDU4LjE4IDMwNC44Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDMuNjcgMy42N2ExMTAuODUgMTEwLjg1IDAgMCAwLTguNjUgMjAuODlINDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDUuMmMyLjIgNy4zMyA1LjA3IDE0LjI4IDguNjUgMjAuODlsLTMuNjcgMy42N2MtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wyMi42MyAyMi42M2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDMuNjctMy42N2M2LjYxIDMuNTcgMTMuNTcgNi40NSAyMC45IDguNjV2NS4yYzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di01LjJjNy4zMy0yLjIgMTQuMjgtNS4wNyAyMC45LTguNjVsMy42NyAzLjY3YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMjIuNjMtMjIuNjNjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtMy42Ny0zLjY3YTExMC44NSAxMTAuODUgMCAwIDAgOC42NS0yMC44OWg1LjJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyQzI4OCAzNTkuMTYgMjgwLjg0IDM1MiAyNzIgMzUyem0tMTEyIDgwYy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4LTIxLjQ5IDQ4LTQ4IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja01vdmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjEuMyAyMzcuM2wtNTguNS01OC41Yy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43SDQ4MFY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDMyIDAgNDYuMyAwIDY0djMzNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MCAyNi4zIDAgNDkuNC0xMi45IDY0LTMyLjQgMTQuNiAxOS42IDM3LjcgMzIuNCA2NCAzMi40IDQ0LjIgMCA4MC0zNS44IDgwLTgwIDAtNS41LS42LTEwLjgtMS42LTE2aDE2My4yYy0xLjEgNS4yLTEuNiAxMC41LTEuNiAxNiAwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtNS41LS42LTEwLjgtMS42LTE2SDYyNGM4LjggMCAxNi03LjIgMTYtMTZ2LTg1LjVjMC0xNy02LjctMzMuMi0xOC43LTQ1LjJ6TTgwIDQzMmMtMTcuNiAwLTMyLTE0LjQtMzItMzJzMTQuNC0zMiAzMi0zMiAzMiAxNC40IDMyIDMyLTE0LjQgMzItMzIgMzJ6bTEyOCAwYy0xNy42IDAtMzItMTQuNC0zMi0zMnMxNC40LTMyIDMyLTMyIDMyIDE0LjQgMzIgMzItMTQuNCAzMi0zMiAzMnptMjcyLTIyNGgzNy41YzQuMyAwIDguMyAxLjcgMTEuMyA0LjdsNDMuMyA0My4zSDQ4MHYtNDh6bTQ4IDIyNGMtMTcuNiAwLTMyLTE0LjQtMzItMzJzMTQuNC0zMiAzMi0zMiAzMiAxNC40IDMyIDMyLTE0LjQgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrUGlja3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCAyODhoLTE2di02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC00OEw0MTkuMjIgNTYuMDJBNjQuMDI1IDY0LjAyNSAwIDAgMCAzNjkuMjQgMzJIMjU2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOEg2NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDkuNjFjLS43NiA1LjI3LTEuNjEgMTAuNTItMS42MSAxNiAwIDYxLjg2IDUwLjE0IDExMiAxMTIgMTEyczExMi01MC4xNCAxMTItMTEyYzAtNS40OC0uODUtMTAuNzMtMS42MS0xNmg2Ny4yM2MtLjc2IDUuMjctMS42MSAxMC41Mi0xLjYxIDE2IDAgNjEuODYgNTAuMTQgMTEyIDExMiAxMTJzMTEyLTUwLjE0IDExMi0xMTJjMC01LjQ4LS44NS0xMC43My0xLjYxLTE2SDYyNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTI4OCA5Nmg4MS4yNGw3Ni44IDk2SDI4OFY5NnpNMTc2IDQxNmMtMjYuNDcgMC00OC0yMS41My00OC00OHMyMS41My00OCA0OC00OCA0OCAyMS41MyA0OCA0OC0yMS41MyA0OC00OCA0OHptMjg4IDBjLTI2LjQ3IDAtNDgtMjEuNTMtNDgtNDhzMjEuNTMtNDggNDgtNDggNDggMjEuNTMgNDggNDgtMjEuNTMgNDgtNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCAzNTJoLTE2VjI0My45YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlMNDk0IDExMC4xYy05LTktMjEuMi0xNC4xLTMzLjktMTQuMUg0MTZWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djMyMGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgxNmMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDEyOGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2ek0xNjAgNDY0Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptMzIwIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em04MC0yMDhINDE2VjE0NGg0NC4xbDk5LjkgOTkuOVYyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRzaGlydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzEuMiA5Ni41TDQzNi41IDBDNDE2LjQgMjcuOCAzNzEuOSA0Ny4yIDMyMCA0Ny4yUzIyMy42IDI3LjggMjAzLjUgMEw4LjggOTYuNWMtNy45IDQtMTEuMSAxMy42LTcuMiAyMS41bDU3LjIgMTE0LjVjNCA3LjkgMTMuNiAxMS4xIDIxLjUgNy4ybDU2LjYtMjcuN2MxMC42LTUuMiAyMyAyLjUgMjMgMTQuNFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoMjU2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIyNi4zYzAtMTEuOCAxMi40LTE5LjYgMjMtMTQuNGw1Ni42IDI3LjdjNy45IDQgMTcuNS44IDIxLjUtNy4yTDYzOC4zIDExOGM0LTcuOS44LTE3LjYtNy4xLTIxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjM3IDEwMy44MjJjMTM4LjUzMi0xMzguNTMyIDM2Mi45MzYtMTM4LjMyNiA1MDEuMjYyIDAgNi4wNzggNi4wNzggNy4wNzQgMTUuNDk2IDIuNTgzIDIyLjY4MWwtNDMuMjE0IDY5LjEzOGExOC4zMzIgMTguMzMyIDAgMCAxLTIyLjM1NiA3LjMwNWwtODYuNDIyLTM0LjU2OWExOC4zMzUgMTguMzM1IDAgMCAxLTExLjQzNC0xOC44NDZMMzUxLjc0MSA5MGMtNjIuMTQ1LTIyLjQ1NC0xMzAuNjM2LTIxLjk4Ni0xOTEuNDgzIDBsNS45NTMgNTkuNTMyYTE4LjMzMSAxOC4zMzEgMCAwIDEtMTEuNDM0IDE4Ljg0NmwtODYuNDIzIDM0LjU2OGExOC4zMzQgMTguMzM0IDAgMCAxLTIyLjM1Ni03LjMwNUwyLjc4NyAxMjYuNTAyYTE4LjMzMyAxOC4zMzMgMCAwIDEgMi41ODMtMjIuNjh6TTk2IDMwOHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMkg0NGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptLTMzNiA5NnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMkg5MmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6TTk2IDUwMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMkg0NGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTI4OCAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDE0MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDIzMmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU5MiAwSDQ4QTQ4IDQ4IDAgMCAwIDAgNDh2MzIwYTQ4IDQ4IDAgMCAwIDQ4IDQ4aDI0MHYzMkgxMTJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNkgzNTJ2LTMyaDI0MGE0OCA0OCAwIDAgMCA0OC00OFY0OGE0OCA0OCAwIDAgMC00OC00OHptLTE2IDM1Mkg2NFY2NGg1MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVtYnJlbGxhQmVhY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE1LjM4IDEzNi45bDEwMi4xMSAzNy4xOGMzNS4xOS04MS41NCA4Ni4yMS0xNDQuMjkgMTM5LTE3My43LTk1Ljg4LTQuODktMTg4Ljc4IDM2Ljk2LTI0OC41MyAxMTEuOC02LjY5IDguNC0yLjY2IDIxLjA1IDcuNDIgMjQuNzJ6bTEzMi4yNSA0OC4xNmwyMzguNDggODYuODNjMzUuNzYtMTIxLjM4IDE4LjctMjMxLjY2LTQyLjYzLTI1My45OC03LjQtMi43LTE1LjEzLTQtMjMuMDktNC01OC4wMi4wMS0xMjguMjcgNjkuMTctMTcyLjc2IDE3MS4xNXpNNTIxLjQ4IDYwLjVjNi4yMiAxNi4zIDEwLjgzIDM0LjYgMTMuMiA1NS4xOSA1Ljc0IDQ5Ljg5LTEuNDIgMTA4LjIzLTE4Ljk1IDE2Ni45OGwxMDIuNjIgMzcuMzZjMTAuMDkgMy42NyAyMS4zMS0zLjQzIDIxLjU3LTE0LjE3IDIuMzItOTUuNjktNDEuOTEtMTg3LjQ0LTExOC40NC0yNDUuMzZ6TTU2MCA0NDcuOThIMzIxLjA2TDM4NiAyNjkuNWwtNjAuMTQtMjEuOS03Mi45IDIwMC4zN0gxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTYuMDF2MzIuMDFDMCA1MDQuODMgNy4xNiA1MTIgMTYgNTEyaDU0NGM4Ljg0IDAgMTYtNy4xNyAxNi0xNi4wMXYtMzIuMDFjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVtYnJlbGxhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NS43IDI4MC44QzU0Ny4xIDE0NC41IDQzNy4zIDYyLjYgMzIwIDQ5LjlWMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2MTcuOUMxMzguMyA2Mi42IDI5LjUgMTQ0LjUuMyAyODAuOGMtMi4yIDEwLjEgOC41IDIxLjMgMTguNyAxMS40IDUyLTU1IDEwNy43LTUyLjQgMTU4LjYgMzcgNS4zIDkuNSAxNC45IDguNiAxOS43IDAgMjAuMi0zNS40IDQ0LjktNzMuMiA5MC43LTczLjIgNTguNSAwIDg4LjIgNjguOCA5MC43IDczLjIgNC44IDguNiAxNC40IDkuNSAxOS43IDAgNTEtODkuNSAxMDcuMS05MS40IDE1OC42LTM3IDEwLjMgMTAgMjAuOS0xLjMgMTguNy0xMS40ek0yNTYgMzAxLjdWNDMyYzAgOC44LTcuMiAxNi0xNiAxNi03LjggMC0xMy4yLTUuMy0xNS4xLTEwLjctNS45LTE2LjctMjQuMS0yNS40LTQwLjgtMTkuNS0xNi43IDUuOS0yNS40IDI0LjItMTkuNSA0MC44IDExLjIgMzEuOSA0MS42IDUzLjMgNzUuNCA1My4zIDQ0LjEgMCA4MC0zNS45IDgwLTgwVjMwMS42Yy05LjEtNy45LTE5LjgtMTMuNi0zMi0xMy42LTEyLjMuMS0yMi40IDQuOC0zMiAxMy43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmRlcmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNjRoMzJ2MTYwYzAgODguMjIgNzEuNzggMTYwIDE2MCAxNjBzMTYwLTcxLjc4IDE2MC0xNjBWNjRoMzJhMTYgMTYgMCAwIDAgMTYtMTZWMTZhMTYgMTYgMCAwIDAtMTYtMTZIMjcyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMydjE2MGE4MCA4MCAwIDAgMS0xNjAgMFY2NGgzMmExNiAxNiAwIDAgMCAxNi0xNlYxNmExNiAxNiAwIDAgMC0xNi0xNkgzMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNnptNDAwIDM4NEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmRvQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NS41NDUgOGMtNjYuMjY5LjExOS0xMjYuNDM4IDI2LjIzMy0xNzAuODYgNjguNjg1TDQ4Ljk3MSA0MC45NzFDMzMuODUxIDI1Ljg1MSA4IDM2LjU1OSA4IDU3Ljk0MVYxOTJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEzNC4wNTljMjEuMzgyIDAgMzIuMDktMjUuODUxIDE2Ljk3MS00MC45NzFsLTQxLjc1LTQxLjc1YzMwLjg2NC0yOC44OTkgNzAuODAxLTQ0LjkwNyAxMTMuMjMtNDUuMjczIDkyLjM5OC0uNzk4IDE3MC4yODMgNzMuOTc3IDE2OS40ODQgMTY5LjQ0MkM0MjMuMjM2IDM0OC4wMDkgMzQ5LjgxNiA0MjQgMjU2IDQyNGMtNDEuMTI3IDAtNzkuOTk3LTE0LjY3OC0xMTAuNjMtNDEuNTU2LTQuNzQzLTQuMTYxLTExLjkwNi0zLjkwOC0xNi4zNjguNTUzTDg5LjM0IDQyMi42NTljLTQuODcyIDQuODcyLTQuNjMxIDEyLjgxNS40ODIgMTcuNDMzQzEzMy43OTggNDc5LjgxMyAxOTIuMDc0IDUwNCAyNTYgNTA0YzEzNi45NjYgMCAyNDcuOTk5LTExMS4wMzMgMjQ4LTI0Ny45OThDNTA0LjAwMSAxMTkuMTkzIDM5Mi4zNTQgNy43NTUgMjU1LjU0NSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMi4zMzMgMjI0LjMzM0gxMmMtNi42MjcgMC0xMi01LjM3My0xMi0xMlYxMkMwIDUuMzczIDUuMzczIDAgMTIgMGg0OGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjc4LjExMkMxMTcuNzczIDM5LjI3OSAxODQuMjYgNy40NyAyNTguMTc1IDguMDA3YzEzNi45MDYuOTk0IDI0Ni40NDggMTExLjYyMyAyNDYuMTU3IDI0OC41MzJDNTA0LjA0MSAzOTMuMjU4IDM5My4xMiA1MDQgMjU2LjMzMyA1MDRjLTY0LjA4OSAwLTEyMi40OTYtMjQuMzEzLTE2Ni41MS02NC4yMTUtNS4wOTktNC42MjItNS4zMzQtMTIuNTU0LS40NjctMTcuNDJsMzMuOTY3LTMzLjk2N2M0LjQ3NC00LjQ3NCAxMS42NjItNC43MTcgMTYuNDAxLS41MjVDMTcwLjc2IDQxNS4zMzYgMjExLjU4IDQzMiAyNTYuMzMzIDQzMmM5Ny4yNjggMCAxNzYtNzguNzE2IDE3Ni0xNzYgMC05Ny4yNjctNzguNzE2LTE3Ni0xNzYtMTc2LTU4LjQ5NiAwLTExMC4yOCAyOC40NzYtMTQyLjI3NCA3Mi4zMzNoOTguMjc0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDhjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5pdmVyc2FsQWNjZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGMxMTQuOTUzIDAgMjA4IDkzLjAyOSAyMDggMjA4IDAgMTE0Ljk1My05My4wMjkgMjA4LTIwOCAyMDgtMTE0Ljk1MyAwLTIwOC05My4wMjktMjA4LTIwOCAwLTExNC45NTMgOTMuMDI5LTIwOCAyMDgtMjA4bTAtNDBDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0wIDU2QzE0OS45NjEgNjQgNjQgMTQ5Ljk2MSA2NCAyNTZzODUuOTYxIDE5MiAxOTIgMTkyIDE5Mi04NS45NjEgMTkyLTE5MlMzNjIuMDM5IDY0IDI1NiA2NHptMCA0NGMxOS44ODIgMCAzNiAxNi4xMTggMzYgMzZzLTE2LjExOCAzNi0zNiAzNi0zNi0xNi4xMTgtMzYtMzYgMTYuMTE4LTM2IDM2LTM2em0xMTcuNzQxIDk4LjAyM2MtMjguNzEyIDYuNzc5LTU1LjUxMSAxMi43NDgtODIuMTQgMTUuODA3Ljg1MSAxMDEuMDIzIDEyLjMwNiAxMjMuMDUyIDI1LjAzNyAxNTUuNjIxIDMuNjE3IDkuMjYtLjk1NyAxOS42OTgtMTAuMjE3IDIzLjMxNS05LjI2MSAzLjYxNy0xOS42OTktLjk1Ny0yMy4zMTYtMTAuMjE3LTguNzA1LTIyLjMwOC0xNy4wODYtNDAuNjM2LTIyLjI2MS03OC41NDloLTkuNjg2Yy01LjE2NyAzNy44NTEtMTMuNTM0IDU2LjIwOC0yMi4yNjIgNzguNTQ5LTMuNjE1IDkuMjU1LTE0LjA1IDEzLjgzNi0yMy4zMTUgMTAuMjE3LTkuMjYtMy42MTctMTMuODM0LTE0LjA1Ni0xMC4yMTctMjMuMzE1IDEyLjcxMy0zMi41NDEgMjQuMTg1LTU0LjU0MSAyNS4wMzctMTU1LjYyMS0yNi42MjktMy4wNTgtNTMuNDI4LTkuMDI3LTgyLjE0MS0xNS44MDctOC42LTIuMDMxLTEzLjkyNi0xMC42NDgtMTEuODk1LTE5LjI0OXMxMC42NDctMTMuOTI2IDE5LjI0OS0xMS44OTVjOTYuNjg2IDIyLjgyOSAxMjQuMjgzIDIyLjc4MyAyMjAuNzc1IDAgOC41OTktMi4wMyAxNy4yMTggMy4yOTQgMTkuMjQ5IDExLjg5NSAyLjAyOSA4LjYwMS0zLjI5NyAxNy4yMTktMTEuODk3IDE5LjI0OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5pdmVyc2l0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMTI4djE2YTggOCAwIDAgMS04IDhoLTI0djEyYzAgNi42MjctNS4zNzMgMTItMTIgMTJINjBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTEySDI0YTggOCAwIDAgMS04LTh2LTE2YTggOCAwIDAgMSA0Ljk0MS03LjM5MmwyMzItODhhNy45OTYgNy45OTYgMCAwIDEgNi4xMTggMGwyMzIgODhBOCA4IDAgMCAxIDQ5NiAxMjh6bS0yNCAzMDRINDBjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNmE4IDggMCAwIDAgOCA4aDQ2NGE4IDggMCAwIDAgOC04di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6TTk2IDE5MnYxOTJINjBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjBoNDE2di0yMGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0zNlYxOTJoLTY0djE5MmgtNjRWMTkyaC02NHYxOTJoLTY0VjE5Mkg5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5saW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNC4wODMgNDA1LjkwN2M0LjY4NiA0LjY4NiA0LjY4NiAxMi4yODQgMCAxNi45NzFsLTQ0LjY3NCA0NC42NzRjLTU5LjI2MyA1OS4yNjItMTU1LjY5MyA1OS4yNjYtMjE0Ljk2MSAwLTU5LjI2NC01OS4yNjUtNTkuMjY0LTE1NS42OTYgMC0yMTQuOTZsNDQuNjc1LTQ0LjY3NWM0LjY4Ni00LjY4NiAxMi4yODQtNC42ODYgMTYuOTcxIDBsMzkuNTk4IDM5LjU5OGM0LjY4NiA0LjY4NiA0LjY4NiAxMi4yODQgMCAxNi45NzFsLTQ0LjY3NSA0NC42NzRjLTI4LjA3MiAyOC4wNzMtMjguMDcyIDczLjc1IDAgMTAxLjgyMyAyOC4wNzIgMjguMDcyIDczLjc1IDI4LjA3MyAxMDEuODI0IDBsNDQuNjc0LTQ0LjY3NGM0LjY4Ni00LjY4NiAxMi4yODQtNC42ODYgMTYuOTcxIDBsMzkuNTk3IDM5LjU5OHptLTU2LjU2OC0yNjAuMjE2YzQuNjg2IDQuNjg2IDEyLjI4NCA0LjY4NiAxNi45NzEgMGw0NC42NzQtNDQuNjc0YzI4LjA3Mi0yOC4wNzUgNzMuNzUtMjguMDczIDEwMS44MjQgMCAyOC4wNzIgMjguMDczIDI4LjA3MiA3My43NSAwIDEwMS44MjNsLTQ0LjY3NSA0NC42NzRjLTQuNjg2IDQuNjg2LTQuNjg2IDEyLjI4NCAwIDE2Ljk3MWwzOS41OTggMzkuNTk4YzQuNjg2IDQuNjg2IDEyLjI4NCA0LjY4NiAxNi45NzEgMGw0NC42NzUtNDQuNjc1YzU5LjI2NS01OS4yNjUgNTkuMjY1LTE1NS42OTUgMC0yMTQuOTYtNTkuMjY2LTU5LjI2NC0xNTUuNjk1LTU5LjI2NC0yMTQuOTYxIDBsLTQ0LjY3NCA0NC42NzRjLTQuNjg2IDQuNjg2LTQuNjg2IDEyLjI4NCAwIDE2Ljk3MWwzOS41OTcgMzkuNTk4em0yMzQuODI4IDM1OS4yOGwyMi42MjctMjIuNjI3YzkuMzczLTkuMzczIDkuMzczLTI0LjU2OSAwLTMzLjk0MUw2My41OTggNy4wMjljLTkuMzczLTkuMzczLTI0LjU2OS05LjM3My0zMy45NDEgMEw3LjAyOSAyOS42NTdjLTkuMzczIDkuMzczLTkuMzczIDI0LjU2OSAwIDMzLjk0MWw0NDEuMzczIDQ0MS4zNzNjOS4zNzMgOS4zNzIgMjQuNTY5IDkuMzcyIDMzLjk0MSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmxvY2tBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDI1NkgxNTJWMTUyLjljMC0zOS42IDMxLjctNzIuNSA3MS4zLTcyLjkgNDAtLjQgNzIuNyAzMi4xIDcyLjcgNzJ2MTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTE2QzM3NiA2OCAzMDcuNS0uMyAyMjMuNSAwIDEzOS41LjMgNzIgNjkuNSA3MiAxNTMuNVYyNTZINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djE2MGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzA0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yNjQgNDA4YzAgMjIuMS0xNy45IDQwLTQwIDQwcy00MC0xNy45LTQwLTQwdi00OGMwLTIyLjEgMTcuOS00MCA0MC00MHM0MCAxNy45IDQwIDQwdjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDI1NkgxNTJWMTUyLjljMC0zOS42IDMxLjctNzIuNSA3MS4zLTcyLjkgNDAtLjQgNzIuNyAzMi4xIDcyLjcgNzJ2MTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTE2QzM3NiA2OCAzMDcuNS0uMyAyMjMuNSAwIDEzOS41LjMgNzIgNjkuNSA3MiAxNTMuNVYyNTZINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djE2MGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzA0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVcGxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk2IDM4NGgtODBjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE5MmgtODcuN2MtMTcuOCAwLTI2LjctMjEuNS0xNC4xLTM0LjFMMjQyLjMgNS43YzcuNS03LjUgMTkuOC03LjUgMjcuMyAwbDE1Mi4yIDE1Mi4yYzEyLjYgMTIuNiAzLjcgMzQuMS0xNC4xIDM0LjFIMzIwdjE2OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHptMjE2LTh2MTEyYzAgMTMuMy0xMC43IDI0LTI0IDI0SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYzNzZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTM2djhjMCAzMC45IDI1LjEgNTYgNTYgNTZoODBjMzAuOSAwIDU2LTI1LjEgNTYtNTZ2LThoMTM2YzEzLjMgMCAyNCAxMC43IDI0IDI0em0tMTI0IDg4YzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMCA5IDIwIDIwIDIwIDIwLTkgMjAtMjB6bTY0IDBjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwIDkgMjAgMjAgMjAgMjAtOSAyMC0yMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckFsdFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzMy44IDQ1OC4xTDM4OS42IDI2OS4zQzQzMy44IDI0NC43IDQ2NCAxOTguMSA0NjQgMTQ0IDQ2NCA2NC41IDM5OS41IDAgMzIwIDBjLTY3LjEgMC0xMjMgNDYuMS0xMzkgMTA4LjJMNDUuNSAzLjRDMzguNS0yIDI4LjUtLjggMjMgNi4yTDMuNCAzMS40Yy01LjQgNy00LjIgMTcgMi44IDIyLjRsNTg4LjQgNDU0LjdjNyA1LjQgMTcgNC4yIDIyLjUtMi44bDE5LjYtMjUuM2M1LjQtNi44IDQuMS0xNi45LTIuOS0yMi4zek0xOTguNCAzMjBDMTI0LjIgMzIwIDY0IDM4MC4yIDY0IDQ1NC40djkuNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzODIuMkwyNDUuOCAzMjBoLTQ3LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDI4OGM3OS41IDAgMTQ0LTY0LjUgMTQ0LTE0NFMzMzUuNSAwIDI1NiAwIDExMiA2NC41IDExMiAxNDRzNjQuNSAxNDQgMTQ0IDE0NHptMTI4IDMyaC01NS4xYy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2SDEyOEM1Ny4zIDMyMCAwIDM3Ny4zIDAgNDQ4djE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OHYtMTZjMC03MC43LTU3LjMtMTI4LTEyOC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJBc3Ryb25hdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMjI0aDEzLjVjMjQuNyA1Ni41IDgwLjkgOTYgMTQ2LjUgOTZzMTIxLjgtMzkuNSAxNDYuNS05NkgzODRjOC44IDAgMTYtNy4yIDE2LTE2di05NmMwLTguOC03LjItMTYtMTYtMTZoLTEzLjVDMzQ1LjggMzkuNSAyODkuNiAwIDIyNCAwUzEwMi4yIDM5LjUgNzcuNSA5Nkg2NGMtOC44IDAtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNnptNDAtODhjMC0yMi4xIDIxLjUtNDAgNDgtNDBoMTQ0YzI2LjUgMCA0OCAxNy45IDQ4IDQwdjI0YzAgNTMtNDMgOTYtOTYgOTZoLTQ4Yy01MyAwLTk2LTQzLTk2LTk2di0yNHptNzIgNzJsMTItMzYgMzYtMTItMzYtMTItMTItMzYtMTIgMzYtMzYgMTIgMzYgMTIgMTIgMzZ6bTE1MS42IDExMy40QzI5Ny43IDM0MC43IDI2Mi4yIDM1MiAyMjQgMzUycy03My43LTExLjMtMTAzLjYtMzAuNkM1Mi45IDMyOC41IDAgMzg1IDAgNDU0LjR2OS42YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDgwdi02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgxMjhjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRoODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTkuNmMwLTY5LjQtNTIuOS0xMjUuOS0xMjAuNC0xMzN6TTI3MiA0NDhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTYgMTYtNy4yIDE2LTE2LTcuMi0xNi0xNi0xNnptLTk2IDBjLTguOCAwLTE2IDcuMi0xNiAxNnY0OGgzMnYtNDhjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTg5LjYgMzJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQxLjZjMC03NC4yLTYwLjItMTM0LjQtMTM0LjQtMTM0LjR6bTMyMy0xMjguNGwtMjcuOC0yOC4xYy00LjYtNC43LTEyLjEtNC43LTE2LjgtLjFsLTEwNC44IDEwNC00NS41LTQ1LjhjLTQuNi00LjctMTIuMS00LjctMTYuOC0uMWwtMjguMSAyNy45Yy00LjcgNC42LTQuNyAxMi4xLS4xIDE2LjhsODEuNyA4Mi4zYzQuNiA0LjcgMTIuMSA0LjcgMTYuOC4xbDE0MS4zLTE0MC4yYzQuNi00LjcgNC43LTEyLjIuMS0xNi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgOTZjNDguNiAwIDg4IDM5LjQgODggODhzLTM5LjQgODgtODggODgtODgtMzkuNC04OC04OCAzOS40LTg4IDg4LTg4em0wIDM0NGMtNTguNyAwLTExMS4zLTI2LjYtMTQ2LjUtNjguMiAxOC44LTM1LjQgNTUuNi01OS44IDk4LjUtNTkuOCAyLjQgMCA0LjguNCA3LjEgMS4xIDEzIDQuMiAyNi42IDYuOSA0MC45IDYuOSAxNC4zIDAgMjgtMi43IDQwLjktNi45IDIuMy0uNyA0LjctMS4xIDcuMS0xLjEgNDIuOSAwIDc5LjcgMjQuNCA5OC41IDU5LjhDMzU5LjMgNDIxLjQgMzA2LjcgNDQ4IDI0OCA0NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJDbG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMjI0Yy03OS42IDAtMTQ0IDY0LjQtMTQ0IDE0NHM2NC40IDE0NCAxNDQgMTQ0IDE0NC02NC40IDE0NC0xNDQtNjQuNC0xNDQtMTQ0LTE0NHptNjQgMTUwLjNjMCA1LjMtNC40IDkuNy05LjcgOS43aC02MC42Yy01LjMgMC05LjctNC40LTkuNy05Ljd2LTc2LjZjMC01LjMgNC40LTkuNyA5LjctOS43aDEyLjZjNS4zIDAgOS43IDQuNCA5LjcgOS43VjM1MmgzOC4zYzUuMyAwIDkuNyA0LjQgOS43IDkuN3YxMi42ek0zMjAgMzY4YzAtMjcuOCA2LjctNTQuMSAxOC4yLTc3LjUtOC0xLjUtMTYuMi0yLjUtMjQuNi0yLjVoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNDcuMWMtNDUuMy0zMS45LTc1LjEtODQuNS03NS4xLTE0NHptLTk2LTExMmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJDb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjEwLjUgMzczLjNjMi42LTE0LjEgMi42LTI4LjUgMC00Mi42bDI1LjgtMTQuOWMzLTEuNyA0LjMtNS4yIDMuMy04LjUtNi43LTIxLjYtMTguMi00MS4yLTMzLjItNTcuNC0yLjMtMi41LTYtMy4xLTktMS40bC0yNS44IDE0LjljLTEwLjktOS4zLTIzLjQtMTYuNS0zNi45LTIxLjN2LTI5LjhjMC0zLjQtMi40LTYuNC01LjctNy4xLTIyLjMtNS00NS00LjgtNjYuMiAwLTMuMy43LTUuNyAzLjctNS43IDcuMXYyOS44Yy0xMy41IDQuOC0yNiAxMi0zNi45IDIxLjNsLTI1LjgtMTQuOWMtMi45LTEuNy02LjctMS4xLTkgMS40LTE1IDE2LjItMjYuNSAzNS44LTMzLjIgNTcuNC0xIDMuMy40IDYuOCAzLjMgOC41bDI1LjggMTQuOWMtMi42IDE0LjEtMi42IDI4LjUgMCA0Mi42bC0yNS44IDE0LjljLTMgMS43LTQuMyA1LjItMy4zIDguNSA2LjcgMjEuNiAxOC4yIDQxLjEgMzMuMiA1Ny40IDIuMyAyLjUgNiAzLjEgOSAxLjRsMjUuOC0xNC45YzEwLjkgOS4zIDIzLjQgMTYuNSAzNi45IDIxLjN2MjkuOGMwIDMuNCAyLjQgNi40IDUuNyA3LjEgMjIuMyA1IDQ1IDQuOCA2Ni4yIDAgMy4zLS43IDUuNy0zLjcgNS43LTcuMXYtMjkuOGMxMy41LTQuOCAyNi0xMiAzNi45LTIxLjNsMjUuOCAxNC45YzIuOSAxLjcgNi43IDEuMSA5LTEuNCAxNS0xNi4yIDI2LjUtMzUuOCAzMy4yLTU3LjQgMS0zLjMtLjQtNi44LTMuMy04LjVsLTI1LjgtMTQuOXpNNDk2IDQwMC41Yy0yNi44IDAtNDguNS0yMS44LTQ4LjUtNDguNXMyMS44LTQ4LjUgNDguNS00OC41IDQ4LjUgMjEuOCA0OC41IDQ4LjUtMjEuNyA0OC41LTQ4LjUgNDguNXpNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTIwMS4yIDIyNi41Yy0yLjMtMS4yLTQuNi0yLjYtNi44LTMuOWwtNy45IDQuNmMtNiAzLjQtMTIuOCA1LjMtMTkuNiA1LjMtMTAuOSAwLTIxLjQtNC42LTI4LjktMTIuNi0xOC4zLTE5LjgtMzIuMy00My45LTQwLjItNjkuNi01LjUtMTcuNyAxLjktMzYuNCAxNy45LTQ1LjdsNy45LTQuNmMtLjEtMi42LS4xLTUuMiAwLTcuOGwtNy45LTQuNmMtMTYtOS4yLTIzLjQtMjgtMTcuOS00NS43LjktMi45IDIuMi01LjggMy4yLTguNy0zLjgtLjMtNy41LTEuMi0xMS40LTEuMmgtMTYuN2MtMjIuMiAxMC4yLTQ2LjkgMTYtNzIuOSAxNnMtNTAuNi01LjgtNzIuOS0xNmgtMTYuN0M2MC4yIDI4OCAwIDM0OC4yIDAgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMxMC4xIDAgMTkuNS0zLjIgMjcuMi04LjUtMS4yLTMuOC0yLTcuNy0yLTExLjh2LTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckVkaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTg5LjYgMzJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyNzQuOWMtMi40LTYuOC0zLjQtMTQtMi42LTIxLjNsNi44LTYwLjkgMS4yLTExLjEgNy45LTcuOSA3Ny4zLTc3LjNjLTI0LjUtMjcuNy02MC00NS41LTk5LjktNDUuNXptNDUuMyAxNDUuM2wtNi44IDYxYy0xLjEgMTAuMiA3LjUgMTguOCAxNy42IDE3LjZsNjAuOS02LjggMTM3LjktMTM3LjktNzEuNy03MS43LTEzNy45IDEzNy44ek02MzMgMjY4LjlMNTk1LjEgMjMxYy05LjMtOS4zLTI0LjUtOS4zLTMzLjggMGwtMzcuOCAzNy44LTQuMSA0LjEgNzEuOCA3MS43IDQxLjgtNDEuOGM5LjMtOS40IDkuMy0yNC41IDAtMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckZyaWVuZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDI1NmM2MS45IDAgMTEyLTUwLjEgMTEyLTExMlMyNTMuOSAzMiAxOTIgMzIgODAgODIuMSA4MCAxNDRzNTAuMSAxMTIgMTEyIDExMnptNzYuOCAzMmgtOC4zYy0yMC44IDEwLTQzLjkgMTYtNjguNSAxNnMtNDcuNi02LTY4LjUtMTZoLTguM0M1MS42IDI4OCAwIDMzOS42IDAgNDAzLjJWNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OHYtMjguOGMwLTYzLjYtNTEuNi0xMTUuMi0xMTUuMi0xMTUuMnpNNDgwIDI1NmM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05Ni05NiA0My05NiA5NiA0MyA5NiA5NiA5NnptNDggMzJoLTMuOGMtMTMuOSA0LjgtMjguNiA4LTQ0LjIgOHMtMzAuMy0zLjItNDQuMi04SDQzMmMtMjAuNCAwLTM5LjIgNS45LTU1LjcgMTUuNCAyNC40IDI2LjMgMzkuNyA2MS4yIDM5LjcgOTkuOHYzOC40YzAgMi4yLS41IDQuMy0uNiA2LjRINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4IDAtNjEuOS01MC4xLTExMi0xMTItMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyR3JhZHVhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE5LjQgMzIwLjZMMjI0IDQxNmwtOTUuNC05NS40QzU3LjEgMzIzLjcgMCAzODIuMiAwIDQ1NC40djkuNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTkuNmMwLTcyLjItNTcuMS0xMzAuNy0xMjguNi0xMzMuOHpNMTMuNiA3OS44bDYuNCAxLjV2NTguNGMtNyA0LjItMTIgMTEuNS0xMiAyMC4zIDAgOC40IDQuNiAxNS40IDExLjEgMTkuN0wzLjUgMjQyYy0xLjcgNi45IDIuMSAxNCA3LjYgMTRoNDEuOGM1LjUgMCA5LjMtNy4xIDcuNi0xNGwtMTUuNi02Mi4zQzUxLjQgMTc1LjQgNTYgMTY4LjQgNTYgMTYwYzAtOC44LTUtMTYuMS0xMi0yMC4zVjg3LjFsNjYgMTUuOWMtOC42IDE3LjItMTQgMzYuNC0xNCA1NyAwIDcwLjcgNTcuMyAxMjggMTI4IDEyOHMxMjgtNTcuMyAxMjgtMTI4YzAtMjAuNi01LjMtMzkuOC0xNC01N2w5Ni4zLTIzLjJjMTguMi00LjQgMTguMi0yNy4xIDAtMzEuNWwtMTkwLjQtNDZjLTEzLTMuMS0yNi43LTMuMS0zOS43IDBMMTMuNiA0OC4yYy0xOC4xIDQuNC0xOC4xIDI3LjIgMCAzMS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VySW5qdXJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzcuMzcgMTEuOThDMjYxLjA4IDQuNDcgMjQzLjExIDAgMjI0IDBjLTUzLjY5IDAtOTkuNSAzMy4xMy0xMTguNTEgODBoODEuMTlsOTAuNjktNjguMDJ6TTM0Mi41MSA4MGMtNy45LTE5LjQ3LTIwLjY3LTM2LjItMzYuNDktNDkuNTJMMjM5Ljk5IDgwaDEwMi41MnpNMjI0IDI1NmM3MC42OSAwIDEyOC01Ny4zMSAxMjgtMTI4IDAtNS40OC0uOTUtMTAuNy0xLjYxLTE2SDk3LjYxYy0uNjcgNS4zLTEuNjEgMTAuNTItMS42MSAxNiAwIDcwLjY5IDU3LjMxIDEyOCAxMjggMTI4ek04MCAyOTkuN1Y1MTJoMTI4LjI2bC05OC40NS0yMjEuNTJBMTMyLjgzNSAxMzIuODM1IDAgMCAwIDgwIDI5OS43ek0wIDQ2NGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4VjMyMC4yNEMxOC44OCAzNDQuODkgMCAzODEuMjYgMCA0MjIuNFY0NjR6bTI1Ni00OGgtNTUuMzhsNDIuNjcgOTZIMjU2YzI2LjQ3IDAgNDgtMjEuNTMgNDgtNDhzLTIxLjUzLTQ4LTQ4LTQ4em01Ny42LTEyOGgtMTYuNzFjLTIyLjI0IDEwLjE4LTQ2Ljg4IDE2LTcyLjg5IDE2cy01MC42NS01LjgyLTcyLjg5LTE2aC03LjM3bDQyLjY3IDk2SDI1NmM0NC4xMSAwIDgwIDM1Ljg5IDgwIDgwIDAgMTguMDgtNi4yNiAzNC41OS0xNi40MSA0OEg0MDBjMjYuNTEgMCA0OC0yMS40OSA0OC00OHYtNDEuNmMwLTc0LjIzLTYwLjE3LTEzNC40LTEzNC40LTEzNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMjU2QTEyOCAxMjggMCAxIDAgOTYgMTI4YTEyOCAxMjggMCAwIDAgMTI4IDEyOHptOTYgNjRhNjMuMDggNjMuMDggMCAwIDEgOC4xLTMwLjVjLTQuOC0uNS05LjUtMS41LTE0LjUtMS41aC0xNi43YTE3NC4wOCAxNzQuMDggMCAwIDEtMTQ1LjggMGgtMTYuN0ExMzQuNDMgMTM0LjQzIDAgMCAwIDAgNDIyLjRWNDY0YTQ4IDQ4IDAgMCAwIDQ4IDQ4aDI4MC45YTYzLjU0IDYzLjU0IDAgMCAxLTguOS0zMnptMjg4LTMyaC0zMnYtODBhODAgODAgMCAwIDAtMTYwIDB2ODBoLTMyYTMyIDMyIDAgMCAwLTMyIDMydjE2MGEzMiAzMiAwIDAgMCAzMiAzMmgyMjRhMzIgMzIgMCAwIDAgMzItMzJWMzIwYTMyIDMyIDAgMCAwLTMyLTMyek00OTYgNDMyYTMyIDMyIDAgMSAxIDMyLTMyIDMyIDMyIDAgMCAxLTMyIDMyem0zMi0xNDRoLTY0di04MGEzMiAzMiAwIDAgMSA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyTWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6TTEwNCA0MjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNC0xMC43LTI0LTI0LTI0LTI0IDEwLjctMjQgMjR6bTIxNi0xMzUuNHY0OWMzNi41IDcuNCA2NCAzOS44IDY0IDc4LjR2NDEuN2MwIDcuNi01LjQgMTQuMi0xMi45IDE1LjdsLTMyLjIgNi40Yy00LjMuOS04LjUtMS45LTkuNC02LjNsLTMuMS0xNS43Yy0uOS00LjMgMS45LTguNiA2LjMtOS40bDE5LjMtMy45VjQxNmMwLTYyLjgtOTYtNjUuMS05NiAxLjl2MjYuN2wxOS4zIDMuOWM0LjMuOSA3LjEgNS4xIDYuMyA5LjRsLTMuMSAxNS43Yy0uOSA0LjMtNS4xIDcuMS05LjQgNi4zbC0zMS4yLTQuMmMtNy45LTEuMS0xMy44LTcuOC0xMy44LTE1LjlWNDE2YzAtMzguNiAyNy41LTcwLjkgNjQtNzguNHYtNDUuMmMtMi4yLjctNC40IDEuMS02LjYgMS45LTE4IDYuMy0zNy4zIDkuOC01Ny40IDkuOHMtMzkuNC0zLjUtNTcuNC05LjhjLTcuNC0yLjYtMTQuOS00LjItMjIuNi01LjJ2ODEuNmMyMy4xIDYuOSA0MCAyOC4xIDQwIDUzLjQgMCAzMC45LTI1LjEgNTYtNTYgNTZzLTU2LTI1LjEtNTYtNTZjMC0yNS4zIDE2LjktNDYuNSA0MC01My40di04MC40QzQ4LjUgMzAxIDAgMzU1LjggMCA0MjIuNHY0NC44QzAgNDkxLjkgMjAuMSA1MTIgNDQuOCA1MTJoMzU4LjRjMjQuNyAwIDQ0LjgtMjAuMSA0NC44LTQ0Ljh2LTQ0LjhjMC03Mi01Ni44LTEzMC4zLTEyOC0xMzMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCAyMDhINDMyYy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDE5MmM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnptLTQwMCA0OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTg5LjYgMzJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQxLjZjMC03NC4yLTYwLjItMTM0LjQtMTM0LjQtMTM0LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJOaW5qYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjUuNCAyODkuMkwyMjQgMzkwLjYgMTIyLjYgMjg5LjJDNTQgMjk1LjMgMCAzNTIuMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQxLjZjMC03MC4yLTU0LTEyNy4xLTEyMi42LTEzMy4yek0zMiAxOTJjMjcuMyAwIDUxLjgtMTEuNSA2OS4yLTI5LjcgMTUuMSA1My45IDY0IDkzLjcgMTIyLjggOTMuNyA3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwYy01MC40IDAtOTMuNiAyOS40LTExNC41IDcxLjhDOTIuMSA0Ny44IDY0IDMyIDMyIDMyYzAgMzMuNCAxNy4xIDYyLjggNDMuMSA4MC0yNiAxNy4yLTQzLjEgNDYuNi00My4xIDgwem0xNDQtOTZoOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJIMTQ0YzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyTnVyc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE5LjQxLDMyMCwyMjQsNDE1LjM5LDEyOC41OSwzMjBDNTcuMSwzMjMuMSwwLDM4MS42LDAsNDUzLjc5QTU4LjIxLDU4LjIxLDAsMCwwLDU4LjIxLDUxMkgzODkuNzlBNTguMjEsNTguMjEsMCwwLDAsNDQ4LDQ1My43OUM0NDgsMzgxLjYsMzkwLjksMzIzLjEsMzE5LjQxLDMyMFpNMjI0LDMwNEExMjgsMTI4LDAsMCwwLDM1MiwxNzZWNjUuODJhMzIsMzIsMCwwLDAtMjAuNzYtMzBMMjQ2LjQ3LDQuMDdhNjQsNjQsMCwwLDAtNDQuOTQsMEwxMTYuNzYsMzUuODZBMzIsMzIsMCwwLDAsOTYsNjUuODJWMTc2QTEyOCwxMjgsMCwwLDAsMjI0LDMwNFpNMTg0LDcxLjY3YTUsNSwwLDAsMSw1LTVoMjEuNjdWNDVhNSw1LDAsMCwxLDUtNWgxNi42NmE1LDUsMCwwLDEsNSw1VjY2LjY3SDI1OWE1LDUsMCwwLDEsNSw1Vjg4LjMzYTUsNSwwLDAsMS01LDVIMjM3LjMzVjExNWE1LDUsMCwwLDEtNSw1SDIxNS42N2E1LDUsMCwwLDEtNS01VjkzLjMzSDE4OWE1LDUsMCwwLDEtNS01Wk0xNDQsMTYwSDMwNHYxNmE4MCw4MCwwLDAsMS0xNjAsMFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDIwOGgtNjR2LTY0YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGgtNjRjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNjR2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtNjRoNjRjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bS00MDAgNDhjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4em04OS42IDMyaC0xNi43Yy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2aC0xNi43QzYwLjIgMjg4IDAgMzQ4LjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00MS42YzAtNzQuMi02MC4yLTEzNC40LTEzNC40LTEzNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyU2VjcmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4My45IDMwOC4zbDIzLjktNjIuNmM0LTEwLjUtMy43LTIxLjctMTUtMjEuN2gtNTguNWMxMS0xOC45IDE3LjgtNDAuNiAxNy44LTY0di0uM2MzOS4yLTcuOCA2NC0xOS4xIDY0LTMxLjcgMC0xMy4zLTI3LjMtMjUuMS03MC4xLTMzLTkuMi0zMi44LTI3LTY1LjgtNDAuNi04Mi44LTkuNS0xMS45LTI1LjktMTUuNi0zOS41LTguOGwtMjcuNiAxMy44Yy05IDQuNS0xOS42IDQuNS0yOC42IDBMMTgyLjEgMy40Yy0xMy42LTYuOC0zMC0zLjEtMzkuNSA4LjgtMTMuNSAxNy0zMS40IDUwLTQwLjYgODIuOC00Mi43IDcuOS03MCAxOS43LTcwIDMzIDAgMTIuNiAyNC44IDIzLjkgNjQgMzEuN3YuM2MwIDIzLjQgNi44IDQ1LjEgMTcuOCA2NEg1Ni4zYy0xMS41IDAtMTkuMiAxMS43LTE0LjcgMjIuM2wyNS44IDYwLjJDMjcuMyAzMjkuOCAwIDM3Mi43IDAgNDIyLjR2NDQuOEMwIDQ5MS45IDIwLjEgNTEyIDQ0LjggNTEyaDM1OC40YzI0LjcgMCA0NC44LTIwLjEgNDQuOC00NC44di00NC44YzAtNDguNC0yNS44LTkwLjQtNjQuMS0xMTQuMXpNMTc2IDQ4MGwtNDEuNi0xOTIgNDkuNiAzMiAyNCA0MC0zMiAxMjB6bTk2IDBsLTMyLTEyMCAyNC00MCA0OS42LTMyTDI3MiA0ODB6bTQxLjctMjk4LjVjLTMuOSAxMS45LTcgMjQuNi0xNi41IDMzLjQtMTAuMSA5LjMtNDggMjIuNC02NC0yNS0yLjgtOC40LTE1LjQtOC40LTE4LjMgMC0xNyA1MC4yLTU2IDMyLjQtNjQgMjUtOS41LTguOC0xMi43LTIxLjUtMTYuNS0zMy40LS44LTIuNS02LjMtNS43LTYuMy01Ljh2LTEwLjhjMjguMyAzLjYgNjEgNS44IDk2IDUuOHM2Ny43LTIuMSA5Ni01Ljh2MTAuOGMtLjEuMS01LjYgMy4yLTYuNCA1Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJTaGllbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjIyLjMgMjcxLjFsLTExNS4yLTQ1Yy00LjEtMS42LTEyLjYtMy43LTIyLjIgMGwtMTE1LjIgNDVjLTEwLjcgNC4yLTE3LjcgMTQtMTcuNyAyNC45IDAgMTExLjYgNjguNyAxODguOCAxMzIuOSAyMTMuOSA5LjYgMy43IDE4IDEuNiAyMi4yIDBDNTU4LjQgNDg5LjkgNjQwIDQyMC41IDY0MCAyOTZjMC0xMC45LTctMjAuNy0xNy43LTI0Ljl6TTQ5NiA0NjIuNFYyNzMuM2w5NS41IDM3LjNjLTUuNiA4Ny4xLTYwLjkgMTM1LjQtOTUuNSAxNTEuOHpNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTk2IDQwYzAtMi41LjgtNC44IDEuMS03LjItMi41LS4xLTQuOS0uOC03LjUtLjhoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjNi44IDAgMTMuMy0xLjUgMTkuMi00LTU0LTQyLjktOTkuMi0xMTYuNy05OS4yLTIxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzMy44IDQ1OC4xTDM2Mi4zIDI0OC4zQzQxMi4xIDIzMC43IDQ0OCAxODMuOCA0NDggMTI4IDQ0OCA1Ny4zIDM5MC43IDAgMzIwIDBjLTY3LjEgMC0xMjEuNSA1MS44LTEyNi45IDExNy40TDQ1LjUgMy40QzM4LjUtMiAyOC41LS44IDIzIDYuMkwzLjQgMzEuNGMtNS40IDctNC4yIDE3IDIuOCAyMi40bDU4OC40IDQ1NC43YzcgNS40IDE3IDQuMiAyMi41LTIuOGwxOS42LTI1LjNjNS40LTYuOCA0LjEtMTYuOS0yLjktMjIuM3pNOTYgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MC4yTDIwNy40IDI5MC4zQzE0NC4yIDMwMS4zIDk2IDM1NiA5NiA0MjIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclRhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzAuNiAzNjQuOWwtOTAuMy05MC4yYy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43aC03OS4zYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3OS4yYzAgMTcgNi43IDMzLjIgMTguNyA0NS4ybDkwLjMgOTAuMmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw5Mi41LTkyLjVjMTIuNi0xMi41IDEyLjYtMzIuNy4xLTQ1LjJ6bS0xODIuOC0yMWMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNCAyNCAxMC43IDI0IDI0YzAgMTMuMi0xMC43IDI0LTI0IDI0em0tMjIzLjgtODhjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhDMzUyIDU3LjMgMjk0LjcgMCAyMjQgMFM5NiA1Ny4zIDk2IDEyOGMwIDcwLjYgNTcuMyAxMjcuOSAxMjggMTI3Ljl6bTEyNy44IDExMS4yVjI5NGMtMTIuMi0zLjYtMjQuOS02LjItMzguMi02LjJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODcuOSAwIDM0OC4xIDAgNDIyLjN2NDEuNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMTUuNSAwIDI5LjEtNy41IDM3LjktMTguOWwtNTgtNThjLTE4LjEtMTguMS0yOC4xLTQyLjItMjguMS02Ny45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyVGllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4em05NS44IDMyLjZMMjcyIDQ4MGwtMzItMTM2IDMyLTU2aC05NmwzMiA1Ni0zMiAxMzYtNDcuOC0xOTEuNEM1Ni45IDI5MiAwIDM1MC4zIDAgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OHYtNDEuNmMwLTcyLjEtNTYuOS0xMzAuNC0xMjguMi0xMzMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclRpbWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU4OS42IDI0MGw0NS42LTQ1LjZjNi4zLTYuMyA2LjMtMTYuNSAwLTIyLjhsLTIyLjgtMjIuOGMtNi4zLTYuMy0xNi41LTYuMy0yMi44IDBMNTQ0IDE5NC40bC00NS42LTQ1LjZjLTYuMy02LjMtMTYuNS02LjMtMjIuOCAwbC0yMi44IDIyLjhjLTYuMyA2LjMtNi4zIDE2LjUgMCAyMi44bDQ1LjYgNDUuNi00NS42IDQ1LjZjLTYuMyA2LjMtNi4zIDE2LjUgMCAyMi44bDIyLjggMjIuOGM2LjMgNi4zIDE2LjUgNi4zIDIyLjggMGw0NS42LTQ1LjYgNDUuNiA0NS42YzYuMyA2LjMgMTYuNSA2LjMgMjIuOCAwbDIyLjgtMjIuOGM2LjMtNi4zIDYuMy0xNi41IDAtMjIuOEw1ODkuNiAyNDB6TTIyNCAyNTZjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4em04OS42IDMyaC0xNi43Yy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2aC0xNi43QzYwLjIgMjg4IDAgMzQ4LjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00MS42YzAtNzQuMi02MC4yLTEzNC40LTEzNC40LTEzNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4em04OS42IDMyaC0xNi43Yy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2aC0xNi43QzYwLjIgMjg4IDAgMzQ4LjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00MS42YzAtNzQuMi02MC4yLTEzNC40LTEzNC40LTEzNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2Vyc0NvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MTAuNSAzNDEuM2MyLjYtMTQuMSAyLjYtMjguNSAwLTQyLjZsMjUuOC0xNC45YzMtMS43IDQuMy01LjIgMy4zLTguNS02LjctMjEuNi0xOC4yLTQxLjItMzMuMi01Ny40LTIuMy0yLjUtNi0zLjEtOS0xLjRsLTI1LjggMTQuOWMtMTAuOS05LjMtMjMuNC0xNi41LTM2LjktMjEuM3YtMjkuOGMwLTMuNC0yLjQtNi40LTUuNy03LjEtMjIuMy01LTQ1LTQuOC02Ni4yIDAtMy4zLjctNS43IDMuNy01LjcgNy4xdjI5LjhjLTEzLjUgNC44LTI2IDEyLTM2LjkgMjEuM2wtMjUuOC0xNC45Yy0yLjktMS43LTYuNy0xLjEtOSAxLjQtMTUgMTYuMi0yNi41IDM1LjgtMzMuMiA1Ny40LTEgMy4zLjQgNi44IDMuMyA4LjVsMjUuOCAxNC45Yy0yLjYgMTQuMS0yLjYgMjguNSAwIDQyLjZsLTI1LjggMTQuOWMtMyAxLjctNC4zIDUuMi0zLjMgOC41IDYuNyAyMS42IDE4LjIgNDEuMSAzMy4yIDU3LjQgMi4zIDIuNSA2IDMuMSA5IDEuNGwyNS44LTE0LjljMTAuOSA5LjMgMjMuNCAxNi41IDM2LjkgMjEuM3YyOS44YzAgMy40IDIuNCA2LjQgNS43IDcuMSAyMi4zIDUgNDUgNC44IDY2LjIgMCAzLjMtLjcgNS43LTMuNyA1LjctNy4xdi0yOS44YzEzLjUtNC44IDI2LTEyIDM2LjktMjEuM2wyNS44IDE0LjljMi45IDEuNyA2LjcgMS4xIDktMS40IDE1LTE2LjIgMjYuNS0zNS44IDMzLjItNTcuNCAxLTMuMy0uNC02LjgtMy4zLTguNWwtMjUuOC0xNC45ek00OTYgMzY4LjVjLTI2LjggMC00OC41LTIxLjgtNDguNS00OC41czIxLjgtNDguNSA0OC41LTQ4LjUgNDguNSAyMS44IDQ4LjUgNDguNS0yMS43IDQ4LjUtNDguNSA0OC41ek05NiAyMjRjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjQtNjQgMjguNy02NCA2NCAyOC43IDY0IDY0IDY0em0yMjQgMzJjMS45IDAgMy43LS41IDUuNi0uNiA4LjMtMjEuNyAyMC41LTQyLjEgMzYuMy01OS4yIDcuNC04IDE3LjktMTIuNiAyOC45LTEyLjYgNi45IDAgMTMuNyAxLjggMTkuNiA1LjNsNy45IDQuNmMuOC0uNSAxLjYtLjkgMi40LTEuNCA3LTE0LjYgMTEuMi0zMC44IDExLjItNDggMC02MS45LTUwLjEtMTEyLTExMi0xMTJTMjA4IDgyLjEgMjA4IDE0NGMwIDYxLjkgNTAuMSAxMTIgMTEyIDExMnptMTA1LjIgMTk0LjVjLTIuMy0xLjItNC42LTIuNi02LjgtMy45LTguMiA0LjgtMTUuMyA5LjgtMjcuNSA5LjgtMTAuOSAwLTIxLjQtNC42LTI4LjktMTIuNi0xOC4zLTE5LjgtMzIuMy00My45LTQwLjItNjkuNi0xMC43LTM0LjUgMjQuOS00OS43IDI1LjgtNTAuMy0uMS0yLjYtLjEtNS4yIDAtNy44bC03LjktNC42Yy0zLjgtMi4yLTctNS05LjgtOC4xLTMuMy4yLTYuNS42LTkuOC42LTI0LjYgMC00Ny42LTYtNjguNS0xNmgtOC4zQzE3OS42IDI4OCAxMjggMzM5LjYgMTI4IDQwMy4yVjQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyNTUuNGMtMy43LTYtNi4yLTEyLjgtNi4yLTIwLjN2LTkuMnpNMTczLjEgMjc0LjZDMTYxLjUgMjYzLjEgMTQ1LjYgMjU2IDEyOCAyNTZINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0djMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY1LjljNi4zLTQ3LjQgMzQuOS04Ny4zIDc1LjItMTA5LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJzU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMyLjY1LDIxMi4zMiwzNi4yMSwxMzcuNzhBNjMuNCw2My40LDAsMCwwLDMyLDE2MGE2My44NCw2My44NCwwLDAsMCwxMDAuNjUsNTIuMzJabTQwLjQ0LDYyLjI4QTYzLjc5LDYzLjc5LDAsMCwwLDEyOCwyNTZINjRBNjQuMDYsNjQuMDYsMCwwLDAsMCwzMjB2MzJhMzIsMzIsMCwwLDAsMzIsMzJIOTcuOTFBMTQ2LjYyLDE0Ni42MiwwLDAsMSwxNzMuMDksMjc0LjZaTTU0NCwyMjRhNjQsNjQsMCwxLDAtNjQtNjRBNjQuMDYsNjQuMDYsMCwwLDAsNTQ0LDIyNFpNNTAwLjU2LDM1NS4xMWExMTQuMjQsMTE0LjI0LDAsMCwwLTg0LjQ3LTY1LjI4TDM2MSwyNDcuMjNjNDEuNDYtMTYuMyw3MS01NS45Miw3MS0xMDMuMjNBMTExLjkzLDExMS45MywwLDAsMCwzMjAsMzJjLTU3LjE0LDAtMTAzLjY5LDQyLjgzLTExMC42LDk4LjA4TDQ1LjQ2LDMuMzhBMTYsMTYsMCwwLDAsMjMsNi4xOUwzLjM3LDMxLjQ2QTE2LDE2LDAsMCwwLDYuMTgsNTMuOTFMNTk0LjUzLDUwOC42M0ExNiwxNiwwLDAsMCw2MTcsNTA1LjgybDE5LjY0LTI1LjI3YTE2LDE2LDAsMCwwLTIuODEtMjIuNDVaTTEyOCw0MDMuMjFWNDMyYTQ4LDQ4LDAsMCwwLDQ4LDQ4SDQ2NGE0Ny40NSw0Ny40NSwwLDAsMCwxMi41Ny0xLjg3TDIzMiwyODkuMTNDMTczLjc0LDI5NC44MywxMjgsMzQzLjQyLDEyOCw0MDMuMjFaTTU3NiwyNTZINTEyYTYzLjc5LDYzLjc5LDAsMCwwLTQ1LjA5LDE4LjZBMTQ2LjI5LDE0Ni4yOSwwLDAsMSw1NDIsMzg0aDY2YTMyLDMyLDAsMCwwLDMyLTMyVjMyMEE2NC4wNiw2NC4wNiwwLDAsMCw1NzYsMjU2WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAyMjRjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjQtNjQgMjguNy02NCA2NCAyOC43IDY0IDY0IDY0em00NDggMGMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NC02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6bTMyIDMyaC02NGMtMTcuNiAwLTMzLjUgNy4xLTQ1LjEgMTguNiA0MC4zIDIyLjEgNjguOSA2MiA3NS4xIDEwOS40aDY2YzE3LjcgMCAzMi0xNC4zIDMyLTMydi0zMmMwLTM1LjMtMjguNy02NC02NC02NHptLTI1NiAwYzYxLjkgMCAxMTItNTAuMSAxMTItMTEyUzM4MS45IDMyIDMyMCAzMiAyMDggODIuMSAyMDggMTQ0czUwLjEgMTEyIDExMiAxMTJ6bTc2LjggMzJoLTguM2MtMjAuOCAxMC00My45IDE2LTY4LjUgMTZzLTQ3LjYtNi02OC41LTE2aC04LjNDMTc5LjYgMjg4IDEyOCAzMzkuNiAxMjggNDAzLjJWNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OHYtMjguOGMwLTYzLjYtNTEuNi0xMTUuMi0xMTUuMi0xMTUuMnptLTIyMy43LTEzLjRDMTYxLjUgMjYzLjEgMTQ1LjYgMjU2IDEyOCAyNTZINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0djMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY1LjljNi4zLTQ3LjQgMzQuOS04Ny4zIDc1LjItMTA5LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVV0ZW5zaWxTcG9vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAuMSAzMS45Yy01NS01NS4xLTE2NC45LTM0LjUtMjI3LjggMjguNS00OS4zIDQ5LjMtNTUuMSAxMTAtMjguOCAxNjAuNEw5IDQxMy4yYy0xMS42IDEwLjUtMTIuMSAyOC41LTEgMzkuNUw1OS4zIDUwNGMxMSAxMSAyOS4xIDEwLjUgMzkuNS0xLjFsMTkyLjQtMjE0LjRjNTAuNCAyNi4zIDExMS4xIDIwLjUgMTYwLjQtMjguOCA2My02Mi45IDgzLjYtMTcyLjggMjguNS0yMjcuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXRlbnNpbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA3LjkgMTUuMmMuOCA0LjcgMTYuMSA5NC41IDE2LjEgMTI4LjggMCA1Mi4zLTI3LjggODkuNi02OC45IDEwNC42TDE2OCA0ODYuN2MuNyAxMy43LTEwLjIgMjUuMy0yNCAyNS4zSDgwYy0xMy43IDAtMjQuNy0xMS41LTI0LTI1LjNsMTIuOS0yMzguMUMyNy43IDIzMy42IDAgMTk2LjIgMCAxNDQgMCAxMDkuNiAxNS4zIDE5LjkgMTYuMSAxNS4yIDE5LjMtNS4xIDYxLjQtNS40IDY0IDE2LjN2MTQxLjJjMS4zIDMuNCAxNS4xIDMuMiAxNiAwIDEuNC0yNS4zIDcuOS0xMzkuMiA4LTE0MS44IDMuMy0yMC44IDQ0LjctMjAuOCA0Ny45IDAgLjIgMi43IDYuNiAxMTYuNSA4IDE0MS44LjkgMy4yIDE0LjggMy40IDE2IDBWMTYuM2MyLjYtMjEuNiA0NC44LTIxLjQgNDgtMS4xem0xMTkuMiAyODUuN2wtMTUgMTg1LjFjLTEuMiAxNCA5LjkgMjYgMjMuOSAyNmg1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYyNGMwLTEzLjItMTAuNy0yNC0yNC0yNC04Mi41IDAtMjIxLjQgMTc4LjUtNjQuOSAzMDAuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVjdG9yU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAxMjhWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtOTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJIMTYwYzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgMCAwIDE0LjMzIDAgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMnYxOTJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyaDE5MmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJWMTYwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ6bS05Ni02NGgzMnYzMmgtMzJWNjR6TTY0IDY0aDMydjMySDY0VjY0em0zMiAzODRINjR2LTMyaDMydjMyem0zNTIgMGgtMzJ2LTMyaDMydjMyem0tMzItOTZoLTMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMySDE2MHYtMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkg5NlYxNjBoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY5NmgxOTJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMnYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZlbnVzRG91YmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxNzZjMC03OS41LTY0LjUtMTQ0LTE0NC0xNDRTMCA5Ni41IDAgMTc2YzAgNjguNSA0Ny45IDEyNS45IDExMiAxNDAuNFYzNjhINzZjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMzZ2MzZjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMzZoMzZjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTM2di01MS42YzY0LjEtMTQuNSAxMTItNzEuOSAxMTItMTQwLjR6bS0yMjQgMGMwLTQ0LjEgMzUuOS04MCA4MC04MHM4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODAtODAtMzUuOS04MC04MHptMzM2IDE0MC40VjM2OGgzNmM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC0zNnYzNmMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTM2aC0zNmMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoMzZ2LTUxLjZjLTIxLjItNC44LTQwLjYtMTQuMy01Ny4yLTI3LjMgMTQtMTYuNyAyNS0zNiAzMi4xLTU3LjEgMTQuNSAxNC44IDM0LjcgMjQgNTcuMSAyNCA0NC4xIDAgODAtMzUuOSA4MC04MHMtMzUuOS04MC04MC04MGMtMjIuMyAwLTQyLjYgOS4yLTU3LjEgMjQtNy4xLTIxLjEtMTgtNDAuNC0zMi4xLTU3LjFDMzAzLjQgNDMuNiAzMzQuMyAzMiAzNjggMzJjNzkuNSAwIDE0NCA2NC41IDE0NCAxNDQgMCA2OC41LTQ3LjkgMTI1LjktMTEyIDE0MC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWZW51c01hcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTY0IDBoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktNDguNyA0OC43QzQyMi41IDcyLjEgMzk2LjIgNjQgMzY4IDY0Yy0zMy43IDAtNjQuNiAxMS42LTg5LjIgMzAuOSAxNCAxNi43IDI1IDM2IDMyLjEgNTcuMSAxNC41LTE0LjggMzQuNy0yNCA1Ny4xLTI0IDQ0LjEgMCA4MCAzNS45IDgwIDgwcy0zNS45IDgwLTgwIDgwYy0yMi4zIDAtNDIuNi05LjItNTcuMS0yNC03LjEgMjEuMS0xOCA0MC40LTMyLjEgNTcuMSAyNC41IDE5LjQgNTUuNSAzMC45IDg5LjIgMzAuOSA3OS41IDAgMTQ0LTY0LjUgMTQ0LTE0NCAwLTI4LjItOC4xLTU0LjUtMjIuMS03Ni43bDQ4LjctNDguNyAxNi45IDE2LjljMi40IDIuNCA1LjQgMy41IDguNCAzLjUgNi4yIDAgMTIuMS00LjggMTIuMS0xMlYxMmMwLTYuNi01LjQtMTItMTItMTJ6TTE0NCA2NEM2NC41IDY0IDAgMTI4LjUgMCAyMDhjMCA2OC41IDQ3LjkgMTI1LjkgMTEyIDE0MC40VjQwMEg3NmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgzNnYzNmMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEydi0zNmgzNmM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMzZ2LTUxLjZjNjQuMS0xNC42IDExMi03MS45IDExMi0xNDAuNCAwLTc5LjUtNjQuNS0xNDQtMTQ0LTE0NHptMCAyMjRjLTQ0LjEgMC04MC0zNS45LTgwLTgwczM1LjktODAgODAtODAgODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWZW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjg4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMTc2YzAtNzkuNS02NC41LTE0NC0xNDQtMTQ0UzAgOTYuNSAwIDE3NmMwIDY4LjUgNDcuOSAxMjUuOSAxMTIgMTQwLjRWMzY4SDc2Yy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDM2djM2YzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTM2aDM2YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0zNnYtNTEuNmM2NC4xLTE0LjUgMTEyLTcxLjkgMTEyLTE0MC40em0tMjI0IDBjMC00NC4xIDM1LjktODAgODAtODBzODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwLTgwLTM1LjktODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZlc3RQYXRjaGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzNy4yNTIsMjM5Ljg3NywzODQsMTYwVjMyQTMyLDMyLDAsMCwwLDM1MiwwSDMyMGEyMy45ODIsMjMuOTgyLDAsMCwwLTEzLjMxMiw0LjAzMWwtMjUsMTYuNjcyYTEwMy43OTQsMTAzLjc5NCwwLDAsMS0xMTUuMzc2LDBsLTI1LTE2LjY3MkEyMy45ODIsMjMuOTgyLDAsMCwwLDEyOCwwSDk2QTMyLDMyLDAsMCwwLDY0LDMyVjE2MEwxMC43NDgsMjM5Ljg3N0E2NCw2NCwwLDAsMCwwLDI3NS4zNzdWNDgwYTMyLDMyLDAsMCwwLDMyLDMySDE5MlYyODhhMzEuOTg3LDMxLjk4NywwLDAsMSwxLjY0My0xMC4xMTlMMjA3LjEzNSwyMzcuNCwxNTAuMTg4LDY2LjU2MUExNTEuNTc5LDE1MS41NzksMCwwLDAsMjI0LDg2LjIzNGExNTEuNTY1LDE1MS41NjUsMCwwLDAsNzMuODExLTE5LjY2OEwyMjQsMjg4VjUxMkg0MTZhMzIsMzIsMCwwLDAsMzItMzJWMjc1LjM3N0E2NCw2NCwwLDAsMCw0MzcuMjUyLDIzOS44NzdaTTYzLjUsMjcyLjQ4NGExMi4wMSwxMi4wMSwwLDAsMSwxNy0xNi45NjhsMTUuNSwxNS41LDE1LjUtMTUuNWExMi4wMSwxMi4wMSwwLDAsMSwxNywxNi45NjhMMTEyLjk4NCwyODgsMTI4LjUsMzAzLjUxNmExMi4wMSwxMi4wMSwwLDAsMS0xNywxNi45NjhMOTYsMzA0Ljk4NGwtMTUuNSwxNS41YTEyLjAxLDEyLjAxLDAsMCwxLTE3LTE2Ljk2OEw3OS4wMTYsMjg4Wk05Niw0NTZhNDAsNDAsMCwxLDEsNDAtNDBBNDAsNDAsMCwwLDEsOTYsNDU2Wk0zNTkuMjI3LDMzNS43ODUsMzEwLjcsMzM2YTYuNjcxLDYuNjcxLDAsMCwxLTYuNy02LjdsLjIxNS00OC41NzRBMjQuOTg3LDI0Ljk4NywwLDAsMSwzMzEuNDMsMjU2LjFjMTIuNzg5LDEuMTYyLDIyLjEyOSwxMi42MTksMjIuMDU2LDI1LjQxOWwtLjAzNyw1LjA1Nyw1LjA1MS0uMDM3YzEyLjgyNi0uMDM1LDI0LjIzNiw5LjI3NSwyNS40LDIyLjA3NkEyNC45NDgsMjQuOTQ4LDAsMCwxLDM1OS4yMjcsMzM1Ljc4NVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzcuMjUyLDIzOS44NzcsMzg0LDE2MFYzMkEzMiwzMiwwLDAsMCwzNTIsMEgzMjBhMjQuMDIxLDI0LjAyMSwwLDAsMC0xMy4zMTIsNC4wMzFsLTI1LDE2LjY3MmExMDMuNzk0LDEwMy43OTQsMCwwLDEtMTE1LjM3NiwwbC0yNS0xNi42NzJBMjQuMDIxLDI0LjAyMSwwLDAsMCwxMjgsMEg5NkEzMiwzMiwwLDAsMCw2NCwzMlYxNjBMMTAuNzQ4LDIzOS44NzdBNjQsNjQsMCwwLDAsMCwyNzUuMzc3VjQ4MGEzMiwzMiwwLDAsMCwzMiwzMkgxOTJWMjg4YTMxLjk4NywzMS45ODcsMCwwLDEsMS42NDMtMTAuMTE5TDIwNy4xMzUsMjM3LjQsMTUwLjE4OCw2Ni41NjRBMTUxLjUxOCwxNTEuNTE4LDAsMCwwLDIyNCw4Ni4yMzRhMTUxLjU1LDE1MS41NSwwLDAsMCw3My44MTItMTkuNjcyTDIyNCwyODhWNTEySDQxNmEzMiwzMiwwLDAsMCwzMi0zMlYyNzUuMzc3QTY0LDY0LDAsMCwwLDQzNy4yNTIsMjM5Ljg3N1pNMTMxLjMxMiwzNzEuMzEybC00OCw0OGExNiwxNiwwLDAsMS0yMi42MjQtMjIuNjI0bDQ4LTQ4YTE2LDE2LDAsMCwxLDIyLjYyNCwyMi42MjRabTI1Niw0OGExNS45OTIsMTUuOTkyLDAsMCwxLTIyLjYyNCwwbC00OC00OGExNiwxNiwwLDAsMSwyMi42MjQtMjIuNjI0bDQ4LDQ4QTE1Ljk5MywxNS45OTMsMCwwLDEsMzg3LjMxMiw0MTkuMzEyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3Ny43IDE4Ni4xTDMwOS41IDE4LjNjLTMuMS0zLjEtOC4yLTMuMS0xMS4zIDBsLTM0IDMzLjljLTMuMSAzLjEtMy4xIDguMiAwIDExLjNsMTEuMiAxMS4xTDMzIDMxNi41Yy0zOC44IDM4LjctNDUuMSAxMDItOS40IDE0My41IDIwLjYgMjQgNDkuNSAzNiA3OC40IDM1LjkgMjYuNCAwIDUyLjgtMTAgNzIuOS0zMC4xbDI0Ni4zLTI0NS43IDExLjIgMTEuMWMzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDM0LTMzLjljMy4xLTMgMy4xLTguMSAwLTExLjJ6TTMxOCAyNTZIMTYxbDE0OC0xNDcuNyA3OC41IDc4LjNMMzE4IDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlhbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzIgNjRoMjR2MjQwYzAgNDQuMSAzNS45IDgwIDgwIDgwczgwLTM1LjkgODAtODBWNjRoMjRjNC40IDAgOC0zLjYgOC04VjhjMC00LjQtMy42LTgtOC04SDcyYy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4em03MiAwaDY0djk2aC02NFY2NHptNDgwIDM4NEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg2MDhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6TTM2MCA2NGgyNHYyNDBjMCA0NC4xIDM1LjkgODAgODAgODBzODAtMzUuOSA4MC04MFY2NGgyNGM0LjQgMCA4LTMuNiA4LThWOGMwLTQuNC0zLjYtOC04LThIMzYwYy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4em03MiAwaDY0djk2aC02NFY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlkZW9TbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzMuOCA0NTguMWwtNTUtNDIuNWMxNS40LTEuNCAyOS4yLTEzLjcgMjkuMi0zMS4xdi0yNTdjMC0yNS41LTI5LjEtNDAuNC01MC40LTI1LjhMNDQ4IDE3Ny4zdjEzNy4ybC0zMi0yNC43di0xNzhjMC0yNi40LTIxLjQtNDcuOC00Ny44LTQ3LjhIMTIzLjlMNDUuNSAzLjRDMzguNS0yIDI4LjUtLjggMjMgNi4yTDMuNCAzMS40Yy01LjQgNy00LjIgMTcgMi44IDIyLjRMNDIuNyA4MiA0MTYgMzcwLjZsMTc4LjUgMTM4YzcgNS40IDE3IDQuMiAyMi41LTIuOGwxOS42LTI1LjNjNS41LTYuOSA0LjItMTctMi44LTIyLjR6TTMyIDQwMC4yYzAgMjYuNCAyMS40IDQ3LjggNDcuOCA0Ny44aDI4OC40YzExLjIgMCAyMS40LTQgMjkuNi0xMC41TDMyIDE1NC43djI0NS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYuMiA2NEg0Ny44QzIxLjQgNjQgMCA4NS40IDAgMTExLjh2Mjg4LjRDMCA0MjYuNiAyMS40IDQ0OCA0Ny44IDQ0OGgyODguNGMyNi40IDAgNDcuOC0yMS40IDQ3LjgtNDcuOFYxMTEuOGMwLTI2LjQtMjEuNC00Ny44LTQ3LjgtNDcuOHptMTg5LjQgMzcuN0w0MTYgMTc3LjN2MTU3LjRsMTA5LjYgNzUuNWMyMS4yIDE0LjYgNTAuNC0uMyA1MC40LTI1LjhWMTI3LjVjMC0yNS40LTI5LjEtNDAuNC01MC40LTI1Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpaGFyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzIuODggNDAwLjcxTDU0NCAzNTJ2LTY0bDU1LjE2LTE3LjY5YzExLjc5LTUuOSAxMS43OS0yMi43MiAwLTI4LjYyTDQ4MCAxOTJ2LTY0bDI3LjMxLTE2LjNjNy43Mi03LjcyIDUuNjEtMjAuNzQtNC4xNi0yNS42MkwzMjAgMCAxMzYuODUgODYuMDdjLTkuNzcgNC44OC0xMS44OCAxNy45LTQuMTYgMjUuNjJMMTYwIDEyOHY2NEw0MC44NCAyNDEuNjljLTExLjc5IDUuOS0xMS43OSAyMi43MiAwIDI4LjYyTDk2IDI4OHY2NEw3LjEyIDQwMC43MWMtNS40MiAzLjYyLTcuNyA5LjYzLTcgMTUuMjkuNjIgNS4wMSAzLjU3IDkuNzUgOC43MiAxMi4zM0w2NCA0NDh2NDhjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTQ4aDE2MHY0OGMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNDhoMTYwdjQ4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di00OGw1NS4xNS0xOS42N2M1LjE2LTIuNTggOC4xLTcuMzIgOC43Mi0xMi4zMy43MS01LjY3LTEuNTctMTEuNjgtNi45OS0xNS4yOXpNMjI0IDEyOGgxOTJ2NjRIMjI0di02NHptLTY0IDIyNHYtNjRoMzIwdjY0SDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlydXNTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTQsMjI3LjZIOTIuNEM3Ni43LDIyNy42LDY0LDI0MC4zLDY0LDI1NnMxMi43LDI4LjQsMjguNCwyOC40SDExNGM1MC43LDAsNzYuMSw2MS4zLDQwLjIsOTcuMUwxMzksMzk2LjggYy0xMS41LDEwLjctMTIuMiwyOC43LTEuNiw0MC4yczI4LjcsMTIuMiw0MC4yLDEuNmMwLjUtMC41LDEuMS0xLDEuNi0xLjZsMTUuMi0xNS4yYzM1LjgtMzUuOCw5Ny4xLTEwLjUsOTcuMSw0MC4ydjIxLjUgYzAsMTUuNywxMi44LDI4LjQsMjguNSwyOC40YzE1LjcsMCwyOC40LTEyLjcsMjguNC0yOC40VjQ2MmMwLTI2LjYsMTctNDUuOSwzOC4yLTUzLjRsLTI0NC41LTE4OSBDMTMzLjcsMjI0LjcsMTIzLjksMjI3LjUsMTE0LDIyNy42eiBNNjE3LDUwNS44bDE5LjYtMjUuM2M1LjQtNyw0LjItMTctMi44LTIyLjVMNDcwLjYsMzMyYzQuMi0yNS40LDI0LjktNDcuNSw1NS40LTQ3LjVoMjEuNSBjMTUuNywwLDI4LjQtMTIuNywyOC40LTI4LjRzLTEyLjctMjguNC0yOC40LTI4LjRINTI2Yy01MC43LDAtNzYuMS02MS4zLTQwLjItOTcuMWwxNS4yLTE1LjNjMTAuNy0xMS41LDEwLTI5LjUtMS42LTQwLjIgYy0xMC45LTEwLjEtMjcuNy0xMC4xLTM4LjYsMGwtMTUuMiwxNS4yYy0zNS44LDM1LjgtOTcuMSwxMC41LTk3LjEtNDAuMlYyOC41QzM0OC40LDEyLjcsMzM1LjcsMCwzMjAsMCBjLTE1LjcsMC0yOC40LDEyLjctMjguNCwyOC40VjUwYzAsNTAuNy02MS4zLDc2LjEtOTcuMSw0MC4yTDE3OS4yLDc1Yy0xMS4xLTExLjEtMjkuNC0xMC42LTQwLjUsMC41TDQ1LjUsMy40IGMtNy01LjQtMTctNC4yLTIyLjUsMi44TDMuNCwzMS41Yy01LjQsNy00LjIsMTcsMi44LDIyLjVsNTg4LjQsNDU0LjdDNjAxLjUsNTE0LjEsNjExLjYsNTEyLjgsNjE3LDUwNS44eiBNMzM1LjQsMjI3LjVsLTYyLjktNDguNiBjNC45LTEuOCwxMC4yLTIuOCwxNS40LTIuOWMyNi41LDAsNDgsMjEuNSw0OCw0OEMzMzYsMjI1LjIsMzM1LjUsMjI2LjMsMzM1LjQsMjI3LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4My41NSwyMjcuNTVINDYyYy01MC42OCwwLTc2LjA3LTYxLjI3LTQwLjIzLTk3LjExTDQzNywxMTUuMTlBMjguNDQsMjguNDQsMCwwLDAsMzk2LjgsNzVMMzgxLjU2LDkwLjIyYy0zNS44NCwzNS44My05Ny4xMSwxMC40NS05Ny4xMS00MC4yM1YyOC40NGEyOC40NSwyOC40NSwwLDAsMC01Ni45LDBWNTBjMCw1MC42OC02MS4yNyw3Ni4wNi05Ny4xMSw0MC4yM0wxMTUuMiw3NUEyOC40NCwyOC40NCwwLDAsMCw3NSwxMTUuMTlsMTUuMjUsMTUuMjVjMzUuODQsMzUuODQsMTAuNDUsOTcuMTEtNDAuMjMsOTcuMTFIMjguNDVhMjguNDUsMjguNDUsMCwxLDAsMCw1Ni44OUg1MGM1MC42OCwwLDc2LjA3LDYxLjI4LDQwLjIzLDk3LjEyTDc1LDM5Ni44QTI4LjQ1LDI4LjQ1LDAsMCwwLDExNS4yLDQzN2wxNS4yNC0xNS4yNWMzNS44NC0zNS44NCw5Ny4xMS0xMC40NSw5Ny4xMSw0MC4yM3YyMS41NGEyOC40NSwyOC40NSwwLDAsMCw1Ni45LDBWNDYyYzAtNTAuNjgsNjEuMjctNzYuMDcsOTcuMTEtNDAuMjNMMzk2LjgsNDM3QTI4LjQ1LDI4LjQ1LDAsMCwwLDQzNywzOTYuOGwtMTUuMjUtMTUuMjRjLTM1Ljg0LTM1Ljg0LTEwLjQ1LTk3LjEyLDQwLjIzLTk3LjEyaDIxLjU0YTI4LjQ1LDI4LjQ1LDAsMSwwLDAtNTYuODlaTTIyNCwyNzJhNDgsNDgsMCwxLDEsNDgtNDhBNDgsNDgsMCwwLDEsMjI0LDI3MlptODAsNTZhMjQsMjQsMCwxLDEsMjQtMjRBMjQsMjQsMCwwLDEsMzA0LDMyOFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlydXNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQsMzUySDYxMS44OGMtMjguNTEsMC00Mi43OS0zNC40Ny0yMi42My01NC42M2w4LjU4LTguNTdhMTYsMTYsMCwxLDAtMjIuNjMtMjIuNjNsLTguNTcsOC41OEM1NDYuNDcsMjk0LjkxLDUxMiwyODAuNjMsNTEyLDI1Mi4xMlYyNDBhMTYsMTYsMCwwLDAtMzIsMHYxMi4xMmMwLDI4LjUxLTM0LjQ3LDQyLjc5LTU0LjYzLDIyLjYzbC04LjU3LTguNThhMTYsMTYsMCwwLDAtMjIuNjMsMjIuNjNsOC41OCw4LjU3YzIwLjE2LDIwLjE2LDUuODgsNTQuNjMtMjIuNjMsNTQuNjNIMzY4YTE2LDE2LDAsMCwwLDAsMzJoMTIuMTJjMjguNTEsMCw0Mi43OSwzNC40NywyMi42Myw1NC42M2wtOC41OCw4LjU3YTE2LDE2LDAsMSwwLDIyLjYzLDIyLjYzbDguNTctOC41OGMyMC4xNi0yMC4xNiw1NC42My01Ljg4LDU0LjYzLDIyLjYzVjQ5NmExNiwxNiwwLDAsMCwzMiwwVjQ4My44OGMwLTI4LjUxLDM0LjQ3LTQyLjc5LDU0LjYzLTIyLjYzbDguNTcsOC41OGExNiwxNiwwLDEsMCwyMi42My0yMi42M2wtOC41OC04LjU3QzU2OS4wOSw0MTguNDcsNTgzLjM3LDM4NCw2MTEuODgsMzg0SDYyNGExNiwxNiwwLDAsMCwwLTMyWk00ODAsMzg0YTMyLDMyLDAsMSwxLDMyLTMyQTMyLDMyLDAsMCwxLDQ4MCwzODRaTTM0Ni41MSwyMTMuMzNoMTYuMTZhMjEuMzMsMjEuMzMsMCwwLDAsMC00Mi42NkgzNDYuNTFjLTM4LDAtNTcuMDUtNDYtMzAuMTctNzIuODRsMTEuNDMtMTEuNDRBMjEuMzMsMjEuMzMsMCwwLDAsMjk3LjYsNTYuMjNMMjg2LjE3LDY3LjY2Yy0yNi44OCwyNi44OC03Mi44NCw3Ljg1LTcyLjg0LTMwLjE3VjIxLjMzYTIxLjMzLDIxLjMzLDAsMCwwLTQyLjY2LDBWMzcuNDljMCwzOC00Niw1Ny4wNS03Mi44NCwzMC4xN0w4Ni40LDU2LjIzQTIxLjMzLDIxLjMzLDAsMCwwLDU2LjIzLDg2LjM5TDY3LjY2LDk3LjgzYzI2Ljg4LDI2Ljg4LDcuODUsNzIuODQtMzAuMTcsNzIuODRIMjEuMzNhMjEuMzMsMjEuMzMsMCwwLDAsMCw0Mi42NkgzNy40OWMzOCwwLDU3LjA1LDQ2LDMwLjE3LDcyLjg0TDU2LjIzLDI5Ny42QTIxLjMzLDIxLjMzLDAsMSwwLDg2LjQsMzI3Ljc3bDExLjQzLTExLjQzYzI2Ljg4LTI2Ljg4LDcyLjg0LTcuODUsNzIuODQsMzAuMTd2MTYuMTZhMjEuMzMsMjEuMzMsMCwwLDAsNDIuNjYsMFYzNDYuNTFjMC0zOCw0Ni01Ny4wNSw3Mi44NC0zMC4xN2wxMS40MywxMS40M2EyMS4zMywyMS4zMywwLDAsMCwzMC4xNy0zMC4xN2wtMTEuNDMtMTEuNDNDMjg5LjQ2LDI1OS4yOSwzMDguNDksMjEzLjMzLDM0Ni41MSwyMTMuMzNaTTE2MCwxOTJhMzIsMzIsMCwxLDEsMzItMzJBMzIsMzIsMCwwLDEsMTYwLDE5MlptODAsMzJhMTYsMTYsMCwxLDEsMTYtMTZBMTYsMTYsMCwwLDEsMjQwLDIyNFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm9pY2VtYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAxMjhhMTQ0IDE0NCAwIDAgMC0xMTkuNzQgMjI0SDI2My43NEExNDQgMTQ0IDAgMSAwIDE0NCA0MTZoMzUyYTE0NCAxNDQgMCAwIDAgMC0yODh6TTY0IDI3MmE4MCA4MCAwIDEgMSA4MCA4MCA4MCA4MCAwIDAgMS04MC04MHptNDMyIDgwYTgwIDgwIDAgMSAxIDgwLTgwIDgwIDgwIDAgMCAxLTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2xsZXliYWxsQmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzEuMzkgMjQzLjQ4YTI4NS41NiAyODUuNTYgMCAwIDAtMjIuNy0xMDUuN2MtOTAuOCA0Mi40LTE1Ny41IDEyMi40LTE4MC4zIDIxNi44YTI0OSAyNDkgMCAwIDAgNTYuOSA4MS4xIDMzMy44NyAzMzMuODcgMCAwIDEgMTQ2LjEtMTkyLjJ6bS0zNi45LTEzNC40YTI4NC4yMyAyODQuMjMgMCAwIDAtNTcuNC03MC43Yy05MSA0OS44LTE0NC44IDE1Mi45LTEyNSAyNjIuMiAzMy40LTgzLjEgOTguNC0xNTIgMTgyLjQtMTkxLjV6bTE4Ny42IDE2NS4xYzguNi05OS44LTI3LjMtMTk3LjUtOTcuNS0yNjQuNC0xNC43LTEuNy01MS42LTUuNS05OC45IDguNUEzMzMuODcgMzMzLjg3IDAgMCAxIDI3OS4xOSAyNDFhMjg1IDI4NSAwIDAgMCAxMDIuOSAzMy4xOHptLTEyNC43IDkuNWEyODYuMzMgMjg2LjMzIDAgMCAwLTgwLjIgNzIuNmM4MiA1Ny4zIDE4NC41IDc1LjEgMjc3LjUgNDcuOGEyNDcuMTUgMjQ3LjE1IDAgMCAwIDQyLjItODkuOSAzMzYuMSAzMzYuMSAwIDAgMS04MC45IDEwLjRjLTU0LjYtLjEtMTA4LjktMTQuMS0xNTguNi00MC45em0tOTguMyA5OS43Yy0xNS4yIDI2LTI1LjcgNTQuNC0zMi4xIDg0LjJhMjQ3LjA3IDI0Ny4wNyAwIDAgMCAyODktMjIuMWMtMTEyLjkgMTYuMS0yMDMuMy0yNC44LTI1Ni45LTYyLjF6bTE4MC4zLTM2MC42YzU1LjMgNzAuNCA4Mi41IDE2MS4yIDc0LjYgMjUzLjZhMjg2LjU5IDI4Ni41OSAwIDAgMCA4OS43LTE0LjJjMC0yIC4zLTQgLjMtNiAwLTEwNy44LTY4LjctMTk5LjEtMTY0LjYtMjMzLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZvbHVtZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE1LjAzIDcyLjA0TDEyNi4wNiAxNjFIMjRjLTEzLjI2IDAtMjQgMTAuNzQtMjQgMjR2MTQ0YzAgMTMuMjUgMTAuNzQgMjQgMjQgMjRoMTAyLjA2bDg4Ljk3IDg4Ljk1YzE1LjAzIDE1LjAzIDQwLjk3IDQuNDcgNDAuOTctMTYuOTdWODkuMDJjMC0yMS40Ny0yNS45Ni0zMS45OC00MC45Ny0xNi45OHptMTIzLjIgMTA4LjA4Yy0xMS41OC02LjMzLTI2LjE5LTIuMTYtMzIuNjEgOS40NS02LjM5IDExLjYxLTIuMTYgMjYuMiA5LjQ1IDMyLjYxQzMyNy45OCAyMjkuMjggMzM2IDI0Mi42MiAzMzYgMjU3YzAgMTQuMzgtOC4wMiAyNy43Mi0yMC45MiAzNC44MS0xMS42MSA2LjQxLTE1Ljg0IDIxLTkuNDUgMzIuNjEgNi40MyAxMS42NiAyMS4wNSAxNS44IDMyLjYxIDkuNDUgMjguMjMtMTUuNTUgNDUuNzctNDUgNDUuNzctNzYuODhzLTE3LjU0LTYxLjMyLTQ1Ljc4LTc2Ljg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2x1bWVNdXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNS4wMyA3MS4wNUwxMjYuMDYgMTYwSDI0Yy0xMy4yNiAwLTI0IDEwLjc0LTI0IDI0djE0NGMwIDEzLjI1IDEwLjc0IDI0IDI0IDI0aDEwMi4wNmw4OC45NyA4OC45NWMxNS4wMyAxNS4wMyA0MC45NyA0LjQ3IDQwLjk3LTE2Ljk3Vjg4LjAyYzAtMjEuNDYtMjUuOTYtMzEuOTgtNDAuOTctMTYuOTd6TTQ2MS42NCAyNTZsNDUuNjQtNDUuNjRjNi4zLTYuMyA2LjMtMTYuNTIgMC0yMi44MmwtMjIuODItMjIuODJjLTYuMy02LjMtMTYuNTItNi4zLTIyLjgyIDBMNDE2IDIxMC4zNmwtNDUuNjQtNDUuNjRjLTYuMy02LjMtMTYuNTItNi4zLTIyLjgyIDBsLTIyLjgyIDIyLjgyYy02LjMgNi4zLTYuMyAxNi41MiAwIDIyLjgyTDM3MC4zNiAyNTZsLTQ1LjYzIDQ1LjYzYy02LjMgNi4zLTYuMyAxNi41MiAwIDIyLjgybDIyLjgyIDIyLjgyYzYuMyA2LjMgMTYuNTIgNi4zIDIyLjgyIDBMNDE2IDMwMS42NGw0NS42NCA0NS42NGM2LjMgNi4zIDE2LjUyIDYuMyAyMi44MiAwbDIyLjgyLTIyLjgyYzYuMy02LjMgNi4zLTE2LjUyIDAtMjIuODJMNDYxLjY0IDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm9sdW1lT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNSA3MWwtODkgODlIMjRhMjQgMjQgMCAwIDAtMjQgMjR2MTQ0YTI0IDI0IDAgMCAwIDI0IDI0aDEwMi4wNkwyMTUgNDQxYzE1IDE1IDQxIDQuNDcgNDEtMTdWODhjMC0yMS40Ny0yNi0zMi00MS0xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm9sdW1lVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE1LjAzIDcxLjA1TDEyNi4wNiAxNjBIMjRjLTEzLjI2IDAtMjQgMTAuNzQtMjQgMjR2MTQ0YzAgMTMuMjUgMTAuNzQgMjQgMjQgMjRoMTAyLjA2bDg4Ljk3IDg4Ljk1YzE1LjAzIDE1LjAzIDQwLjk3IDQuNDcgNDAuOTctMTYuOTdWODguMDJjMC0yMS40Ni0yNS45Ni0zMS45OC00MC45Ny0xNi45N3ptMjMzLjMyLTUxLjA4Yy0xMS4xNy03LjMzLTI2LjE4LTQuMjQtMzMuNTEgNi45NS03LjM0IDExLjE3LTQuMjIgMjYuMTggNi45NSAzMy41MSA2Ni4yNyA0My40OSAxMDUuODIgMTE2LjYgMTA1LjgyIDE5NS41OCAwIDc4Ljk4LTM5LjU1IDE1Mi4wOS0xMDUuODIgMTk1LjU4LTExLjE3IDcuMzItMTQuMjkgMjIuMzQtNi45NSAzMy41IDcuMDQgMTAuNzEgMjEuOTMgMTQuNTYgMzMuNTEgNi45NUM1MjguMjcgNDM5LjU4IDU3NiAzNTEuMzMgNTc2IDI1NlM1MjguMjcgNzIuNDMgNDQ4LjM1IDE5Ljk3ek00ODAgMjU2YzAtNjMuNTMtMzIuMDYtMTIxLjk0LTg1Ljc3LTE1Ni4yNC0xMS4xOS03LjE0LTI2LjAzLTMuODItMzMuMTIgNy40NnMtMy43OCAyNi4yMSA3LjQxIDMzLjM2QzQwOC4yNyAxNjUuOTcgNDMyIDIwOS4xMSA0MzIgMjU2cy0yMy43MyA5MC4wMy02My40OCAxMTUuNDJjLTExLjE5IDcuMTQtMTQuNSAyMi4wNy03LjQxIDMzLjM2IDYuNTEgMTAuMzYgMjEuMTIgMTUuMTQgMzMuMTIgNy40NkM0NDcuOTQgMzc3Ljk0IDQ4MCAzMTkuNTQgNDgwIDI1NnptLTE0MS43Ny03Ni44N2MtMTEuNTgtNi4zMy0yNi4xOS0yLjE2LTMyLjYxIDkuNDUtNi4zOSAxMS42MS0yLjE2IDI2LjIgOS40NSAzMi42MUMzMjcuOTggMjI4LjI4IDMzNiAyNDEuNjMgMzM2IDI1NmMwIDE0LjM4LTguMDIgMjcuNzItMjAuOTIgMzQuODEtMTEuNjEgNi40MS0xNS44NCAyMS05LjQ1IDMyLjYxIDYuNDMgMTEuNjYgMjEuMDUgMTUuOCAzMi42MSA5LjQ1IDI4LjIzLTE1LjU1IDQ1Ljc3LTQ1IDQ1Ljc3LTc2Ljg4cy0xNy41NC02MS4zMi00NS43OC03Ni44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm90ZVllYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDggMzIwaC02NHY2NGgyMi40YzUuMyAwIDkuNiAzLjYgOS42IDh2MTZjMCA0LjQtNC4zIDgtOS42IDhINzMuNmMtNS4zIDAtOS42LTMuNi05LjYtOHYtMTZjMC00LjQgNC4zLTggOS42LThIOTZ2LTY0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg1NzZjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tOTYgNjRWNjQuM2MwLTE3LjktMTQuNS0zMi4zLTMyLjMtMzIuM0gxNjAuNEMxNDIuNSAzMiAxMjggNDYuNSAxMjggNjQuM1YzODRoMzg0ek0yMTEuMiAyMDJsMjUuNS0yNS4zYzQuMi00LjIgMTEtNC4yIDE1LjIuMWw0MS4zIDQxLjYgOTUuMi05NC40YzQuMi00LjIgMTEtNC4yIDE1LjIuMWwyNS4zIDI1LjVjNC4yIDQuMiA0LjIgMTEtLjEgMTUuMkwzMDAuNSAyOTJjLTQuMiA0LjItMTEgNC4yLTE1LjItLjFsLTc0LjEtNzQuN2MtNC4zLTQuMi00LjItMTEgMC0xNS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWckNhcmRib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDggNjRIMzJDMTQuMzMgNjQgMCA3OC4zMyAwIDk2djMyMGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDE2MC4yMmMyNS4xOSAwIDQ4LjAzLTE0Ljc3IDU4LjM2LTM3Ljc0bDI3Ljc0LTYxLjY0QzI4Ni4yMSAzMzEuMDggMzAyLjM1IDMyMCAzMjAgMzIwczMzLjc5IDExLjA4IDQxLjY4IDI4LjYybDI3Ljc0IDYxLjY0QzM5OS43NSA0MzMuMjMgNDIyLjYgNDQ4IDQ0Ny43OCA0NDhINjA4YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNMTYwIDMwNGMtMzUuMzUgMC02NC0yOC42NS02NC02NHMyOC42NS02NCA2NC02NCA2NCAyOC42NSA2NCA2NC0yOC42NSA2NC02NCA2NHptMzIwIDBjLTM1LjM1IDAtNjQtMjguNjUtNjQtNjRzMjguNjUtNjQgNjQtNjQgNjQgMjguNjUgNjQgNjQtMjguNjUgNjQtNjQgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhbGtpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzIzNC41IDAgMjA4IDBzLTQ4IDIxLjUtNDggNDggMjEuNSA0OCA0OCA0OHptOTQuNSAxNDkuMWwtMjMuMy0xMS44LTkuNy0yOS40Yy0xNC43LTQ0LjYtNTUuNy03NS44LTEwMi4yLTc1LjktMzYtLjEtNTUuOSAxMC4xLTkzLjMgMjUuMi0yMS42IDguNy0zOS4zIDI1LjItNDkuNyA0Ni4yTDE3LjYgMjEzYy03LjggMTUuOC0xLjUgMzUgMTQuMiA0Mi45IDE1LjYgNy45IDM0LjYgMS41IDQyLjUtMTQuM0w4MSAyMjhjMy41LTcgOS4zLTEyLjUgMTYuNS0xNS40bDI2LjgtMTAuOC0xNS4yIDYwLjdjLTUuMiAyMC44LjQgNDIuOSAxNC45IDU4LjhsNTkuOSA2NS40YzcuMiA3LjkgMTIuMyAxNy40IDE0LjkgMjcuN2wxOC4zIDczLjNjNC4zIDE3LjEgMjEuNyAyNy42IDM4LjggMjMuMyAxNy4xLTQuMyAyNy42LTIxLjcgMjMuMy0zOC44bC0yMi4yLTg5Yy0yLjYtMTAuMy03LjctMTkuOS0xNC45LTI3LjdsLTQ1LjUtNDkuNyAxNy4yLTY4LjcgNS41IDE2LjVjNS4zIDE2LjEgMTYuNyAyOS40IDMxLjcgMzdsMjMuMyAxMS44YzE1LjYgNy45IDM0LjYgMS41IDQyLjUtMTQuMyA3LjctMTUuNyAxLjQtMzUuMS0xNC4zLTQzek03My42IDM4NS44Yy0zLjIgOC4xLTggMTUuNC0xNC4yIDIxLjVsLTUwIDUwLjFjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjcgMTIuNSA0NS4yIDBsNTkuNC01OS40YzYuMS02LjEgMTAuOS0xMy40IDE0LjItMjEuNWwxMy41LTMzLjhjLTU1LjMtNjAuMy0zOC43LTQxLjgtNDcuNC01My43bC0yMC43IDUxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhbGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjEuMiAxMjhIODBjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTZoMzg0YzguODQgMCAxNi03LjE2IDE2LTE2IDAtMjYuNTEtMjEuNDktNDgtNDgtNDhINjRDMjguNjUgMzIgMCA2MC42NSAwIDk2djMyMGMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0aDM5Ny4yYzI4LjAyIDAgNTAuOC0yMS41MyA1MC44LTQ4VjE3NmMwLTI2LjQ3LTIyLjc4LTQ4LTUwLjgtNDh6TTQxNiAzMzZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhcmVob3VzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMzUySDEzNi40Yy00LjQgMC04IDMuNi04IDhsLS4xIDQ4YzAgNC40IDMuNiA4IDggOEg1MDRjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LTh6bTAgOTZIMTM2LjFjLTQuNCAwLTggMy42LTggOGwtLjEgNDhjMCA0LjQgMy42IDggOCA4aDM2OGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHptMC0xOTJIMTM2LjZjLTQuNCAwLTggMy42LTggOGwtLjEgNDhjMCA0LjQgMy42IDggOCA4SDUwNGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHptMTA2LjUtMTM5TDMzOC40IDMuN2E0OC4xNSA0OC4xNSAwIDAgMC0zNi45IDBMMjkuNSAxMTdDMTEuNyAxMjQuNSAwIDE0MS45IDAgMTYxLjNWNTA0YzAgNC40IDMuNiA4IDggOGg4MGM0LjQgMCA4LTMuNiA4LThWMjU2YzAtMTcuNiAxNC42LTMyIDMyLjYtMzJoMzgyLjhjMTggMCAzMi42IDE0LjQgMzIuNiAzMnYyNDhjMCA0LjQgMy42IDggOCA4aDgwYzQuNCAwIDgtMy42IDgtOFYxNjEuM2MwLTE5LjQtMTEuNy0zNi44LTI5LjUtNDQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2F0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTYyLjEgMzgzLjljLTIxLjUtMi40LTQyLjEtMTAuNS01Ny45LTIyLjktMTQuMS0xMS4xLTM0LjItMTEuMy00OC4yIDAtMzcuOSAzMC40LTEwNy4yIDMwLjQtMTQ1LjctMS41LTEzLjUtMTEuMi0zMy05LjEtNDYuNyAxLjgtMzggMzAuMS0xMDYuOSAzMC0xNDUuMi0xLjctMTMuNS0xMS4yLTMzLjMtOC45LTQ3LjEgMi0xNS41IDEyLjItMzYgMjAuMS01Ny43IDIyLjQtNy45LjgtMTMuNiA3LjgtMTMuNiAxNS43djMyLjJjMCA5LjEgNy42IDE2LjggMTYuNyAxNiAyOC44LTIuNSA1Ni4xLTExLjQgNzkuNC0yNS45IDU2LjUgMzQuNiAxMzcgMzQuMSAxOTIgMCA1Ni41IDM0LjYgMTM3IDM0LjEgMTkyIDAgMjMuMyAxNC4yIDUwLjkgMjMuMyA3OS4xIDI1LjggOS4xLjggMTYuNy02LjkgMTYuNy0xNnYtMzEuNmMuMS04LTUuNy0xNS40LTEzLjgtMTYuM3ptMC0xNDRjLTIxLjUtMi40LTQyLjEtMTAuNS01Ny45LTIyLjktMTQuMS0xMS4xLTM0LjItMTEuMy00OC4yIDAtMzcuOSAzMC40LTEwNy4yIDMwLjQtMTQ1LjctMS41LTEzLjUtMTEuMi0zMy05LjEtNDYuNyAxLjgtMzggMzAuMS0xMDYuOSAzMC0xNDUuMi0xLjctMTMuNS0xMS4yLTMzLjMtOC45LTQ3LjEgMi0xNS41IDEyLjItMzYgMjAuMS01Ny43IDIyLjQtNy45LjgtMTMuNiA3LjgtMTMuNiAxNS43djMyLjJjMCA5LjEgNy42IDE2LjggMTYuNyAxNiAyOC44LTIuNSA1Ni4xLTExLjQgNzkuNC0yNS45IDU2LjUgMzQuNiAxMzcgMzQuMSAxOTIgMCA1Ni41IDM0LjYgMTM3IDM0LjEgMTkyIDAgMjMuMyAxNC4yIDUwLjkgMjMuMyA3OS4xIDI1LjggOS4xLjggMTYuNy02LjkgMTYuNy0xNnYtMzEuNmMuMS04LTUuNy0xNS40LTEzLjgtMTYuM3ptMC0xNDRDNTQwLjYgOTMuNCA1MjAgODUuNCA1MDQuMiA3MyA0OTAuMSA2MS45IDQ3MCA2MS43IDQ1NiA3M2MtMzcuOSAzMC40LTEwNy4yIDMwLjQtMTQ1LjctMS41LTEzLjUtMTEuMi0zMy05LjEtNDYuNyAxLjgtMzggMzAuMS0xMDYuOSAzMC0xNDUuMi0xLjctMTMuNS0xMS4yLTMzLjMtOC45LTQ3LjEgMi0xNS41IDEyLjItMzYgMjAuMS01Ny43IDIyLjQtNy45LjgtMTMuNiA3LjgtMTMuNiAxNS43djMyLjJjMCA5LjEgNy42IDE2LjggMTYuNyAxNiAyOC44LTIuNSA1Ni4xLTExLjQgNzkuNC0yNS45IDU2LjUgMzQuNiAxMzcgMzQuMSAxOTIgMCA1Ni41IDM0LjYgMTM3IDM0LjEgMTkyIDAgMjMuMyAxNC4yIDUwLjkgMjMuMyA3OS4xIDI1LjggOS4xLjggMTYuNy02LjkgMTYuNy0xNnYtMzEuNmMuMS04LTUuNy0xNS40LTEzLjgtMTYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2F2ZVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzYgNDgwSDMyNGEzNiAzNiAwIDAgMS0zNi0zNlY5NmgtOTZ2MTU2YTM2IDM2IDAgMCAxLTM2IDM2SDE2YTE2IDE2IDAgMCAxLTE2LTE2di0zMmExNiAxNiAwIDAgMSAxNi0xNmgxMTJWNjhhMzYgMzYgMCAwIDEgMzYtMzZoMTUyYTM2IDM2IDAgMCAxIDM2IDM2djM0OGg5NlYyNjBhMzYgMzYgMCAwIDEgMzYtMzZoMTQwYTE2IDE2IDAgMCAxIDE2IDE2djMyYTE2IDE2IDAgMCAxLTE2IDE2SDUxMnYxNTZhMzYgMzYgMCAwIDEtMzYgMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdlaWdodEhhbmdpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEwLjI4IDQ0NS44NmwtNzMuMDMtMjkyLjEzYy0zLjgtMTUuMTktMTYuNDQtMjUuNzItMzAuODctMjUuNzJoLTYwLjI1YzMuNTctMTAuMDUgNS44OC0yMC43MiA1Ljg4LTMyIDAtNTMuMDItNDIuOTgtOTYtOTYtOTZzLTk2IDQyLjk4LTk2IDk2YzAgMTEuMjggMi4zIDIxLjk1IDUuODggMzJoLTYwLjI1Yy0xNC40MyAwLTI3LjA4IDEwLjU0LTMwLjg3IDI1LjcyTDEuNzIgNDQ1Ljg2Qy02LjYxIDQ3OS4xNyAxNi4zOCA1MTIgNDguMDMgNTEyaDQxNS45NWMzMS42NCAwIDU0LjYzLTMyLjgzIDQ2LjMtNjYuMTR6TTI1NiAxMjhjLTE3LjY0IDAtMzItMTQuMzYtMzItMzJzMTQuMzYtMzIgMzItMzIgMzIgMTQuMzYgMzIgMzItMTQuMzYgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdlaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNjRoLTI1Ljk4QzQzOC40NCA5Mi4yOCA0NDggMTI1LjAxIDQ0OCAxNjBjMCAxMDUuODctODYuMTMgMTkyLTE5MiAxOTJTNjQgMjY1Ljg3IDY0IDE2MGMwLTM0Ljk5IDkuNTYtNjcuNzIgMjUuOTgtOTZINjRDMjguNzEgNjQgMCA5Mi43MSAwIDEyOHYzMjBjMCAzNS4yOSAyOC43MSA2NCA2NCA2NGgzODRjMzUuMjkgMCA2NC0yOC43MSA2NC02NFYxMjhjMC0zNS4yOS0yOC43MS02NC02NC02NHpNMjU2IDMyMGM4OC4zNyAwIDE2MC03MS42MyAxNjAtMTYwUzM0NC4zNyAwIDI1NiAwIDk2IDcxLjYzIDk2IDE2MHM3MS42MyAxNjAgMTYwIDE2MHptLS4zLTE1MS45NGwzMy41OC03OC4zNmMzLjUtOC4xNyAxMi45NC0xMS45MiAyMS4wMy04LjQxIDguMTIgMy40OCAxMS44OCAxMi44OSA4LjQxIDIxbC0zMy42NyA3OC41NUMyOTEuNzMgMTg4IDI5NiAxOTcuNDUgMjk2IDIwOGMwIDIyLjA5LTE3LjkxIDQwLTQwIDQwcy00MC0xNy45MS00MC00MGMwLTIxLjk4IDE3Ljc2LTM5Ljc3IDM5LjctMzkuOTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdoZWVsY2hhaXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2LjEwMSAzODUuNjY5bDE0LjIyNyAyOC42NjNjMy45MjkgNy45MTUuNjk3IDE3LjUxNi03LjIxOCAyMS40NDVsLTY1LjQ2NSAzMi44ODZjLTE2LjA0OSA3Ljk2Ny0zNS41NTYgMS4xOTQtNDMuMTg5LTE1LjA1NUwzMzEuNjc5IDMyMEgxOTJjLTE1LjkyNSAwLTI5LjQyNi0xMS43MS0zMS42NzktMjcuNDc1QzEyNi40MzMgNTUuMzA4IDEyOC4zOCA3MC4wNDQgMTI4IDY0YzAtMzYuMzU4IDMwLjMxOC02NS42MzUgNjcuMDUyLTYzLjkyOSAzMy4yNzEgMS41NDUgNjAuMDQ4IDI4LjkwNSA2MC45MjUgNjIuMjAxLjg2OCAzMi45MzMtMjMuMTUyIDYwLjQyMy01NC42MDggNjUuMDM5bDQuNjcgMzIuNjlIMzM2YzguODM3IDAgMTYgNy4xNjMgMTYgMTZ2MzJjMCA4LjgzNy03LjE2MyAxNi0xNiAxNkgyMTUuMTgybDQuNTcyIDMySDM1MmEzMiAzMiAwIDAgMSAyOC45NjIgMTguMzkyTDQzOC40NzcgMzk2LjhsMzYuMTc4LTE4LjM0OWM3LjkxNS0zLjkyOSAxNy41MTctLjY5NyAyMS40NDYgNy4yMTh6TTMxMS4zNTggMzUyaC0yNC41MDZjLTcuNzg4IDU0LjIwNC01NC41MjggOTYtMTEwLjg1MiA5Ni02MS43NTcgMC0xMTItNTAuMjQzLTExMi0xMTIgMC00MS41MDUgMjIuNjk0LTc3LjgwOSA1Ni4zMjQtOTcuMTU2LTMuNzEyLTI1Ljk2NS02Ljg0NC00Ny44Ni05LjQ4OC02Ni4zMzNDNDUuOTU2IDE5OC40NjQgMCAyNjEuOTYzIDAgMzM2YzAgOTcuMDQ3IDc4Ljk1MyAxNzYgMTc2IDE3NiA3MS44NyAwIDEzMy44MDYtNDMuMzA4IDE2MS4xMS0xMDUuMTkyTDMxMS4zNTggMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaWZpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzNC45MSAxNTQuODhDNDU3Ljc0LTguOTkgMTgyLjE5LTguOTMgNS4wOSAxNTQuODhjLTYuNjYgNi4xNi02Ljc5IDE2LjU5LS4zNSAyMi45OGwzNC4yNCAzMy45N2M2LjE0IDYuMSAxNi4wMiA2LjIzIDIyLjQuMzggMTQ1LjkyLTEzMy42OCAzNzEuMy0xMzMuNzEgNTE3LjI1IDAgNi4zOCA1Ljg1IDE2LjI2IDUuNzEgMjIuNC0uMzhsMzQuMjQtMzMuOTdjNi40My02LjM5IDYuMy0xNi44Mi0uMzYtMjIuOTh6TTMyMCAzNTJjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjRzMjguNjUgNjQgNjQgNjQgNjQtMjguNjUgNjQtNjQtMjguNjUtNjQtNjQtNjR6bTIwMi42Ny04My41OWMtMTE1LjI2LTEwMS45My0yOTAuMjEtMTAxLjgyLTQwNS4zNCAwLTYuOSA2LjEtNy4xMiAxNi42OS0uNTcgMjMuMTVsMzQuNDQgMzMuOTljNiA1LjkyIDE1LjY2IDYuMzIgMjIuMDUuOCA4My45NS03Mi41NyAyMDkuNzQtNzIuNDEgMjkzLjQ5IDAgNi4zOSA1LjUyIDE2LjA1IDUuMTMgMjIuMDUtLjhsMzQuNDQtMzMuOTljNi41Ni02LjQ2IDYuMzMtMTcuMDYtLjU2LTIzLjE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ni43IDI1NkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgxNDIuMmMxNS45IDAgMzAuOCAxMC45IDMzLjQgMjYuNiAzLjMgMjAtMTIuMSAzNy40LTMxLjYgMzcuNC0xNC4xIDAtMjYuMS05LjItMzAuNC0yMS45LTIuMS02LjMtOC42LTEwLjEtMTUuMi0xMC4xSDgxLjZjLTkuOCAwLTE3LjcgOC44LTE1LjkgMTguNCA4LjYgNDQuMSA0Ny42IDc3LjYgOTQuMiA3Ny42IDU3LjEgMCAxMDIuNy01MC4xIDk1LjItMTA4LjZDMjQ5IDI5MSAyMDUuNCAyNTYgMTU2LjcgMjU2ek0xNiAyMjRoMzM2YzU5LjcgMCAxMDYuOC01NC44IDkzLjgtMTE2LjctNy42LTM2LjItMzYuOS02NS41LTczLjEtNzMuMS01NS40LTExLjYtMTA1LjEgMjQuOS0xMTQuOSA3NS41LTEuOSA5LjYgNi4xIDE4LjMgMTUuOCAxOC4zaDMyLjhjNi43IDAgMTMuMS0zLjggMTUuMi0xMC4xQzMyNS45IDEwNS4yIDMzNy45IDk2IDM1MiA5NmMxOS40IDAgMzQuOSAxNy40IDMxLjYgMzcuNC0yLjYgMTUuNy0xNy40IDI2LjYtMzMuNCAyNi42SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2em0zODQgMzJIMjQzLjdjMTkuMyAxNi42IDMzLjIgMzguOCAzOS44IDY0SDQwMGMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OGMtMTcuOSAwLTMzLjMtOS45LTQxLjYtMjQuNC0yLjktNS04LjctNy42LTE0LjUtNy42aC0zMy44Yy0xMC45IDAtMTkgMTAuOC0xNS4zIDIxLjEgMTcuOCA1MC42IDcwLjUgODQuOCAxMjkuNCA3Mi4zIDQxLjItOC43IDc1LjEtNDEuNiA4NC43LTgyLjdDNTI2IDMyMS41IDQ3MC41IDI1NiA0MDAgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kb3dDbG9zZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tODMuNiAyOTAuNWM0LjggNC44IDQuOCAxMi42IDAgMTcuNGwtNDAuNSA0MC41Yy00LjggNC44LTEyLjYgNC44LTE3LjQgMEwyNTYgMzEzLjNsLTY2LjUgNjcuMWMtNC44IDQuOC0xMi42IDQuOC0xNy40IDBsLTQwLjUtNDAuNWMtNC44LTQuOC00LjgtMTIuNiAwLTE3LjRsNjcuMS02Ni41LTY3LjEtNjYuNWMtNC44LTQuOC00LjgtMTIuNiAwLTE3LjRsNDAuNS00MC41YzQuOC00LjggMTIuNi00LjggMTcuNCAwbDY2LjUgNjcuMSA2Ni41LTY3LjFjNC44LTQuOCAxMi42LTQuOCAxNy40IDBsNDAuNSA0MC41YzQuOCA0LjggNC44IDEyLjYgMCAxNy40TDMxMy4zIDI1Nmw2Ny4xIDY2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmRvd01heGltaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0xNiAxNjBINjR2LTg0YzAtNi42IDUuNC0xMiAxMi0xMmgzNjBjNi42IDAgMTIgNS40IDEyIDEydjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kb3dNaW5pbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMzUySDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHYzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTMyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kb3dSZXN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiA0OHYyODhjMCAyNi41LTIxLjUgNDgtNDggNDhoLTQ4VjE3NmMwLTQ0LjEtMzUuOS04MC04MC04MEgxMjhWNDhjMC0yNi41IDIxLjUtNDggNDgtNDhoMjg4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0zODQgMTc2djI4OGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTc2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDI4OGMyNi41IDAgNDggMjEuNSA0OCA0OHptLTY4IDI4YzAtNi42LTUuNC0xMi0xMi0xMkg3NmMtNi42IDAtMTIgNS40LTEyIDEydjUyaDI1MnYtNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmVCb3R0bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA3LjMxIDcyLjU3TDQzOS40MyA0LjY5Yy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwbC0yMi42MyAyMi42M2MtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wtNzYuNjcgNzYuNjdjLTQ2LjU4LTE5LjctMTAyLjQtMTAuNzMtMTQwLjM3IDI3LjIzTDE4Ljc1IDMxMi4yM2MtMjQuOTkgMjQuOTktMjQuOTkgNjUuNTIgMCA5MC41MWw5MC41MSA5MC41MWMyNC45OSAyNC45OSA2NS41MiAyNC45OSA5MC41MSAwbDE1OC4zOS0xNTguMzljMzcuOTYtMzcuOTYgNDYuOTMtOTMuNzkgMjcuMjMtMTQwLjM3bDc2LjY3LTc2LjY3YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMjIuNjMtMjIuNjNjNi4yNC02LjI0IDYuMjQtMTYuMzctLjAxLTIyLjYyek0xNzkuMjIgNDIzLjI5bC05MC41MS05MC41MSAxMjIuMDQtMTIyLjA0IDkwLjUxIDkwLjUxLTEyMi4wNCAxMjIuMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmVHbGFzc0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjg4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYgNDY0aC00MFYzNDYuODFjNjguNDctMTUuODkgMTE4LjA1LTc5LjkxIDExMS40LTE1NC4xNmwtMTUuOTUtMTc4LjFDMjcwLjcxIDYuMzEgMjYzLjkgMCAyNTUuNzQgMEgzMi4yNmMtOC4xNSAwLTE0Ljk3IDYuMzEtMTUuNyAxNC41NUwuNiAxOTIuNjZDLTYuMDUgMjY2LjkxIDQzLjUzIDMzMC45MyAxMTIgMzQ2LjgyVjQ2NEg3MmMtMjIuMDkgMC00MCAxNy45MS00MCA0MCAwIDQuNDIgMy41OCA4IDggOGgyMDhjNC40MiAwIDgtMy41OCA4LTggMC0yMi4wOS0xNy45MS00MC00MC00MHpNNjEuNzUgNDhoMTY0LjVsNy4xNyA4MEg1NC41OGw3LjE3LTgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5lR2xhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI4OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE2IDQ2NGgtNDBWMzQ2LjgxYzY4LjQ3LTE1Ljg5IDExOC4wNS03OS45MSAxMTEuNC0xNTQuMTZsLTE1Ljk1LTE3OC4xQzI3MC43MSA2LjMxIDI2My45IDAgMjU1Ljc0IDBIMzIuMjZjLTguMTUgMC0xNC45NyA2LjMxLTE1LjcgMTQuNTVMLjYgMTkyLjY2Qy02LjA1IDI2Ni45MSA0My41MyAzMzAuOTMgMTEyIDM0Ni44MlY0NjRINzJjLTIyLjA5IDAtNDAgMTcuOTEtNDAgNDAgMCA0LjQyIDMuNTggOCA4IDhoMjA4YzQuNDIgMCA4LTMuNTggOC04IDAtMjIuMDktMTcuOTEtNDAtNDAtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvblNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTY0IDE5MmM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDhsMTguNi04MC42YzEuNy03LjUtNC0xNC43LTExLjctMTQuN2gtNDYuMWMtNS43IDAtMTAuNiA0LTExLjcgOS41TDQ1MC43IDEyOEgzNDAuOGwtMTkuNy04NmMtMS4zLTUuNS02LjEtOS4zLTExLjctOS4zaC00NGMtNS42IDAtMTAuNCAzLjgtMTEuNyA5LjNsLTIwIDg2SDEyNWwtMTcuNS04NS43Yy0xLjEtNS42LTYuMS05LjYtMTEuOC05LjZINTMuNmMtNy43IDAtMTMuNCA3LjEtMTEuNyAxNC42TDYwIDEyOEgxMmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg2Mi4zbDcuMiAzMkgxMmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg4My45bDQwLjkgMTgyLjZjMS4yIDUuNSA2LjEgOS40IDExLjcgOS40aDU2LjhjNS42IDAgMTAuNC0zLjkgMTEuNy05LjNMMjU5LjMgMjg4aDU1LjFsNDIuNCAxODIuN2MxLjMgNS40IDYuMSA5LjMgMTEuNyA5LjNoNTYuOGM1LjYgMCAxMC40LTMuOSAxMS43LTkuM0w0NzkuMSAyODhINTY0YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC03MC4xbDcuNC0zMnpNMTgzLjggMzQyYy02LjIgMjUuOC02LjggNDcuMi03LjMgNDcuMmgtMS4xcy0xLjctMjItNi44LTQ3LjJsLTExLTU0aDM4Ljh6bTI3LjUtMTE4aC02Ni44bC02LjUtMzJoODAuOHptNjIuOSAwbDItOC42YzEuOS04IDMuNS0xNiA0LjgtMjMuNGgxMS44YzEuMyA3LjQgMi45IDE1LjQgNC44IDIzLjRsMiA4LjZ6bTEzMC45IDExOGMtNS4xIDI1LjItNi44IDQ3LjItNi44IDQ3LjJoLTEuMWMtLjYgMC0xLjEtMjEuNC03LjMtNDcuMmwtMTIuNC01NGgzOS4xem0yNS4yLTExOGgtNjcuNGwtNy4zLTMyaDgxLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdyZW5jaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDcuNzMgMTA5LjFjLTIuMjQtOS4wMy0xMy41NC0xMi4wOS0yMC4xMi01LjUxbC03NC4zNiA3NC4zNi02Ny44OC0xMS4zMS0xMS4zMS02Ny44OCA3NC4zNi03NC4zNmM2LjYyLTYuNjIgMy40My0xNy45LTUuNjYtMjAuMTYtNDcuMzgtMTEuNzQtOTkuNTUuOTEtMTM2LjU4IDM3LjkzLTM5LjY0IDM5LjY0LTUwLjU1IDk3LjEtMzQuMDUgMTQ3LjJMMTguNzQgNDAyLjc2Yy0yNC45OSAyNC45OS0yNC45OSA2NS41MSAwIDkwLjUgMjQuOTkgMjQuOTkgNjUuNTEgMjQuOTkgOTAuNSAwbDIxMy4yMS0yMTMuMjFjNTAuMTIgMTYuNzEgMTA3LjQ3IDUuNjggMTQ3LjM3LTM0LjIyIDM3LjA3LTM3LjA3IDQ5LjctODkuMzIgMzcuOTEtMTM2Ljczek02NCA0NzJjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYUmF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MCAzODRjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTYgMTYtNy4yIDE2LTE2LTcuMi0xNi0xNi0xNnptMTYwIDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2LTE2IDcuMi0xNiAxNiA3LjIgMTYgMTYgMTZ6TTYyNCAwSDE2QzcuMiAwIDAgNy4yIDAgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDYwOGM4LjggMCAxNi03LjIgMTYtMTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2em0wIDQ0OGgtNDhWOTZINjR2MzUySDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDYwOGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpNNDgwIDI0OGMwIDQuNC0zLjYgOC04IDhIMzM2djMyaDEwNGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDMzNnYzMmg2NGMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OC00OC0yMS41LTQ4LTQ4di0xNmgtNjR2MTZjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDggMjEuNS00OCA0OC00OGg2NHYtMzJIMjAwYy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxMDR2LTMySDE2OGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTM2di0zMkgyMDBjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDEwNHYtMjRjMC00LjQgMy42LTggOC04aDE2YzQuNCAwIDggMy42IDggOHYyNGgxMDRjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEgzMzZ2MzJoMTM2YzQuNCAwIDggMy42IDggOHYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWVuU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTEuMiAzMmgtNjUuM2MtNC42IDAtOC44IDIuNi0xMC44IDYuN2wtNTUuNCAxMTMuMmMtMTQuNSAzNC43LTI3LjEgNzEuOS0yNy4xIDcxLjloLTEuM3MtMTIuNi0zNy4yLTI3LjEtNzEuOUwxMDguOCAzOC43Yy0yLTQuMS02LjItNi43LTEwLjgtNi43SDMyLjhjLTkuMSAwLTE0LjggOS43LTEwLjYgMTcuNkwxMDIuMyAyMDBINDRjLTYuNiAwLTEyIDUuNC0xMiAxMnYzMmMwIDYuNiA1LjQgMTIgMTIgMTJoODguMmwxOS44IDM3LjJWMzIwSDQ0Yy02LjYgMC0xMiA1LjQtMTIgMTJ2MzJjMCA2LjYgNS40IDEyIDEyIDEyaDEwOHY5MmMwIDYuNiA1LjQgMTIgMTIgMTJoNTZjNi42IDAgMTItNS40IDEyLTEydi05MmgxMDhjNi42IDAgMTItNS40IDEyLTEydi0zMmMwLTYuNi01LjQtMTItMTItMTJIMjMydi0yNi44bDE5LjgtMzcuMkgzNDBjNi42IDAgMTItNS40IDEyLTEydi0zMmMwLTYuNi01LjQtMTItMTItMTJoLTU4LjNsODAuMS0xNTAuNGM0LjMtNy45LTEuNS0xNy42LTEwLjYtMTcuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWluWWFuZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEuMDMgOCAwIDExOS4wMyAwIDI1NnMxMTEuMDMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMyAyNDgtMjQ4UzM4NC45NyA4IDI0OCA4em0wIDM3NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC0xMjhjLTUzLjAyIDAtOTYgNDIuOTgtOTYgOTZzNDIuOTggOTYgOTYgOTZjLTEwNi4wNCAwLTE5Mi04NS45Ni0xOTItMTkyUzE0MS45NiA2NCAyNDggNjRjNTMuMDIgMCA5NiA0Mi45OCA5NiA5NnMtNDIuOTggOTYtOTYgOTZ6bTAtMTI4Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdBZGRyZXNzQm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzYgMTYwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0yMFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDMyMGMyNi41IDAgNDgtMjEuNSA0OC00OHYtNDhoMjBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTIwdi02NGgyMGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMjB2LTY0aDIwem0tNjggMzA0SDQ4VjQ4aDMyMHY0MTZ6TTIwOCAyNTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjQtNjQgMjguNy02NCA2NCAyOC43IDY0IDY0IDY0em0tODkuNiAxMjhoMTc5LjJjMTIuNCAwIDIyLjQtOC42IDIyLjQtMTkuMnYtMTkuMmMwLTMxLjgtMzAuMS01Ny42LTY3LjItNTcuNi0xMC44IDAtMTguNyA4LTQ0LjggOC0yNi45IDAtMzMuNC04LTQ0LjgtOC0zNy4xIDAtNjcuMiAyNS44LTY3LjIgNTcuNnYxOS4yYzAgMTAuNiAxMCAxOS4yIDIyLjQgMTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQWRkcmVzc0NhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MGMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptMCA0MDBINDhWODBoNDgwdjM1MnpNMjA4IDI1NmMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NC02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6bS04OS42IDEyOGgxNzkuMmMxMi40IDAgMjIuNC04LjYgMjIuNC0xOS4ydi0xOS4yYzAtMzEuOC0zMC4xLTU3LjYtNjcuMi01Ny42LTEwLjggMC0xOC43IDgtNDQuOCA4LTI2LjkgMC0zMy40LTgtNDQuOC04LTM3LjEgMC02Ny4yIDI1LjgtNjcuMiA1Ny42djE5LjJjMCAxMC42IDEwIDE5LjIgMjIuNCAxOS4yek0zNjAgMzIwaDExMmM0LjQgMCA4LTMuNiA4LTh2LTE2YzAtNC40LTMuNi04LTgtOEgzNjBjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDh6bTAtNjRoMTEyYzQuNCAwIDgtMy42IDgtOHYtMTZjMC00LjQtMy42LTgtOC04SDM2MGMtNC40IDAtOCAzLjYtOCA4djE2YzAgNC40IDMuNiA4IDggOHptMC02NGgxMTJjNC40IDAgOC0zLjYgOC04di0xNmMwLTQuNC0zLjYtOC04LThIMzYwYy00LjQgMC04IDMuNi04IDh2MTZjMCA0LjQgMy42IDggOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdBbmdyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTAtMTQ0Yy0zMy42IDAtNjUuMiAxNC44LTg2LjggNDAuNi04LjUgMTAuMi03LjEgMjUuMyAzLjEgMzMuOHMyNS4zIDcuMiAzMy44LTNjMjQuOC0yOS43IDc1LTI5LjcgOTkuOCAwIDguMSA5LjcgMjMuMiAxMS45IDMzLjggMyAxMC4yLTguNSAxMS41LTIzLjYgMy4xLTMzLjgtMjEuNi0yNS44LTUzLjItNDAuNi04Ni44LTQwLjZ6bS00OC03MmMxMC4zIDAgMTkuOS02LjcgMjMtMTcuMSAzLjgtMTIuNy0zLjQtMjYuMS0xNi4xLTI5LjlsLTgwLTI0Yy0xMi44LTMuOS0yNi4xIDMuNC0yOS45IDE2LjEtMy44IDEyLjcgMy40IDI2LjEgMTYuMSAyOS45bDI4LjIgOC41Yy0zLjEgNC45LTUuMyAxMC40LTUuMyAxNi42IDAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjQgMzItMzIuMXptMTk5LTU0LjljLTMuOC0xMi43LTE3LjEtMTkuOS0yOS45LTE2LjFsLTgwIDI0Yy0xMi43IDMuOC0xOS45IDE3LjItMTYuMSAyOS45IDMuMSAxMC40IDEyLjcgMTcuMSAyMyAxNy4xIDAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC02LjItMi4yLTExLjctNS4zLTE2LjZsMjguMi04LjVjMTIuNy0zLjcgMTkuOS0xNy4xIDE2LjEtMjkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQXJyb3dBbHRDaXJjbGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTAgNDQ4Yy0xMTAuNSAwLTIwMC04OS41LTIwMC0yMDBTMTQ1LjUgNTYgMjU2IDU2czIwMCA4OS41IDIwMCAyMDAtODkuNSAyMDAtMjAwIDIwMHptLTMyLTMxNnYxMTZoLTY3Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWw5OSA5OWM0LjcgNC43IDEyLjMgNC43IDE3IDBsOTktOTljNy42LTcuNiAyLjItMjAuNS04LjUtMjAuNWgtNjdWMTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQXJyb3dBbHRDaXJjbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMjU2YzAgMTM3IDExMSAyNDggMjQ4IDI0OHMyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDggOCAxMTkgOCAyNTZ6bTQ0OCAwYzAgMTEwLjUtODkuNSAyMDAtMjAwIDIwMFM1NiAzNjYuNSA1NiAyNTYgMTQ1LjUgNTYgMjU2IDU2czIwMCA4OS41IDIwMCAyMDB6bS03Mi0yMHY0MGMwIDYuNi01LjQgMTItMTIgMTJIMjU2djY3YzAgMTAuNy0xMi45IDE2LTIwLjUgOC41bC05OS05OWMtNC43LTQuNy00LjctMTIuMyAwLTE3bDk5LTk5YzcuNi03LjYgMjAuNS0yLjIgMjAuNSA4LjV2NjdoMTE2YzYuNiAwIDEyIDUuNCAxMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQXJyb3dBbHRDaXJjbGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2QzUwNCAxMTkgMzkzIDggMjU2IDhTOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OHptLTQ0OCAwYzAtMTEwLjUgODkuNS0yMDAgMjAwLTIwMHMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDBTNTYgMzY2LjUgNTYgMjU2em03MiAyMHYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDExNnYtNjdjMC0xMC43IDEyLjktMTYgMjAuNS04LjVsOTkgOTljNC43IDQuNyA0LjcgMTIuMyAwIDE3bC05OSA5OWMtNy42IDcuNi0yMC41IDIuMi0yMC41LTguNXYtNjdIMTQwYy02LjYgMC0xMi01LjQtMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Fycm93QWx0Q2lyY2xlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUwNGMxMzcgMCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4em0wLTQ0OGMxMTAuNSAwIDIwMCA4OS41IDIwMCAyMDBzLTg5LjUgMjAwLTIwMCAyMDBTNTYgMzY2LjUgNTYgMjU2IDE0NS41IDU2IDI1NiA1NnptMjAgMzI4aC00MGMtNi42IDAtMTItNS40LTEyLTEyVjI1NmgtNjdjLTEwLjcgMC0xNi0xMi45LTguNS0yMC41bDk5LTk5YzQuNy00LjcgMTIuMy00LjcgMTcgMGw5OSA5OWM3LjYgNy42IDIuMiAyMC41LTguNSAyMC41aC02N3YxMTZjMCA2LjYtNS40IDEyLTEyIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdCZWxsU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjMzLjk5IDQ3MS4wMkwzNiAzLjUxQzI5LjEtMi4wMSAxOS4wMy0uOSAxMy41MSA2bC0xMCAxMi40OUMtMi4wMiAyNS4zOS0uOSAzNS40NiA2IDQwLjk4bDU5OCA0NjcuNTFjNi45IDUuNTIgMTYuOTYgNC40IDIyLjQ5LTIuNDlsMTAtMTIuNDljNS41Mi02LjkgNC40MS0xNi45Ny0yLjUtMjIuNDl6TTE2My41MyAzNjhjMTYuNzEtMjIuMDMgMzQuNDgtNTUuOCA0MS40LTExMC41OGwtNDUuNDctMzUuNTVjLTMuMjcgOTAuNzMtMzYuNDcgMTIwLjY4LTU0Ljg0IDE0MC40Mi02IDYuNDUtOC42NiAxNC4xNi04LjYxIDIxLjcxLjExIDE2LjQgMTIuOTggMzIgMzIuMSAzMmgyNzkuNjZsLTYxLjQtNDhIMTYzLjUzek0zMjAgOTZjNjEuODYgMCAxMTIgNTAuMTQgMTEyIDExMiAwIC4yLS4wNi4zOC0uMDYuNTguMDIgMTYuODQgMS4xNiAzMS43NyAyLjc5IDQ1LjczbDU5LjUzIDQ2LjU0Yy04LjMxLTIyLjEzLTE0LjM0LTUxLjQ5LTE0LjM0LTkyLjg1IDAtNzcuNy01NC40OC0xMzkuOS0xMjcuOTQtMTU1LjE2VjMyYzAtMTcuNjctMTQuMzItMzItMzEuOTgtMzJzLTMxLjk4IDE0LjMzLTMxLjk4IDMydjIwLjg0Yy0yNi4wMiA1LjQxLTQ5LjQ1IDE2Ljk0LTY5LjEzIDMyLjcybDM4LjE3IDI5Ljg0QzI3NSAxMDMuMTggMjk2LjY1IDk2IDMyMCA5NnptMCA0MTZjMzUuMzIgMCA2My45Ny0yOC42NSA2My45Ny02NEgyNTYuMDNjMCAzNS4zNSAyOC42NSA2NCA2My45NyA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQmVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzkuMzkgMzYyLjI5Yy0xOS4zMi0yMC43Ni01NS40Ny01MS45OS01NS40Ny0xNTQuMjkgMC03Ny43LTU0LjQ4LTEzOS45LTEyNy45NC0xNTUuMTZWMzJjMC0xNy42Ny0xNC4zMi0zMi0zMS45OC0zMnMtMzEuOTggMTQuMzMtMzEuOTggMzJ2MjAuODRDMTE4LjU2IDY4LjEgNjQuMDggMTMwLjMgNjQuMDggMjA4YzAgMTAyLjMtMzYuMTUgMTMzLjUzLTU1LjQ3IDE1NC4yOS02IDYuNDUtOC42NiAxNC4xNi04LjYxIDIxLjcxLjExIDE2LjQgMTIuOTggMzIgMzIuMSAzMmgzODMuOGMxOS4xMiAwIDMyLTE1LjYgMzIuMS0zMiAuMDUtNy41NS0yLjYxLTE1LjI3LTguNjEtMjEuNzF6TTY3LjUzIDM2OGMyMS4yMi0yNy45NyA0NC40Mi03NC4zMyA0NC41My0xNTkuNDIgMC0uMi0uMDYtLjM4LS4wNi0uNTggMC02MS44NiA1MC4xNC0xMTIgMTEyLTExMnMxMTIgNTAuMTQgMTEyIDExMmMwIC4yLS4wNi4zOC0uMDYuNTguMTEgODUuMSAyMy4zMSAxMzEuNDYgNDQuNTMgMTU5LjQySDY3LjUzek0yMjQgNTEyYzM1LjMyIDAgNjMuOTctMjguNjUgNjMuOTctNjRIMTYwLjAzYzAgMzUuMzUgMjguNjUgNjQgNjMuOTcgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Jvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAwSDQ4QzIxLjQ5IDAgMCAyMS40OSAwIDQ4djQ2NGwxOTItMTEyIDE5MiAxMTJWNDhjMC0yNi41MS0yMS40OS00OC00OC00OHptMCA0MjguNDNsLTE0NC04NC0xNDQgODRWNTRhNiA2IDAgMCAxIDYtNmgyNzZjMy4zMTQgMCA2IDIuNjgzIDYgNS45OTZWNDI4LjQzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdCdWlsZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMTQ4di00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnptMTQwIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMnptLTEyOCA5Nmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJ6bTEyOCAwaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMnptLTc2IDg0di00MGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnptNzYgMTJoNDBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyem0xODAgMTI0djM2SDB2LTM2YzAtNi42IDUuNC0xMiAxMi0xMmgxOS41VjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0aDMzN2MxMy4zIDAgMjQgMTAuNyAyNCAyNHY0NDBINDM2YzYuNiAwIDEyIDUuNCAxMiAxMnpNNzkuNSA0NjNIMTkydi02N2MwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjY3aDExMi41VjQ5TDgwIDQ4bC0uNSA0MTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0OCAyODhoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyem0xMDgtMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEyem05NiAwdi00MGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnptLTk2IDk2di00MGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnptLTk2IDB2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEyem0xOTIgMHYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ6bTk2LTI2MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2VjE2MEg0OHYyOThjMCAzLjMgMi43IDYgNiA2aDM0MGMzLjMgMCA2LTIuNyA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDY0aC00OFYxMmMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY1MkgxNjBWMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NTJINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxMTJjMC0yNi41MS0yMS40OS00OC00OC00OHptLTYgNDAwSDU0YTYgNiAwIDAgMS02LTZWMTYwaDM1MnYyOThhNiA2IDAgMCAxLTYgNnptLTUyLjg0OS0yMDAuNjVMMTk4Ljg0MiA0MDQuNTE5Yy00LjcwNSA0LjY2Ny0xMi4zMDMgNC42MzctMTYuOTcxLS4wNjhsLTc1LjA5MS03NS42OTljLTQuNjY3LTQuNzA1LTQuNjM3LTEyLjMwMy4wNjgtMTYuOTcxbDIyLjcxOS0yMi41MzZjNC43MDUtNC42NjcgMTIuMzAzLTQuNjM3IDE2Ljk3LjA2OWw0NC4xMDQgNDQuNDYxIDExMS4wNzItMTEwLjE4MWM0LjcwNS00LjY2NyAxMi4zMDMtNC42MzcgMTYuOTcxLjA2OGwyMi41MzYgMjIuNzE4YzQuNjY3IDQuNzA1IDQuNjM2IDEyLjMwMy0uMDY5IDE2Ljk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDYWxlbmRhck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyNCAzMjhjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMjRjMC02LjYgNS40LTEyIDEyLTEyaDIwMGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjRjMCA2LjYtNS40IDEyLTEyIDEySDEyNHptMzI0LTIxNnYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2VjE2MEg0OHYyOThjMCAzLjMgMi43IDYgNiA2aDM0MGMzLjMgMCA2LTIuNyA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgMjkydjI0YzAgNi42LTUuNCAxMi0xMiAxMmgtNzZ2NzZjMCA2LjYtNS40IDEyLTEyIDEyaC0yNGMtNi42IDAtMTItNS40LTEyLTEydi03NmgtNzZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMjRjMC02LjYgNS40LTEyIDEyLTEyaDc2di03NmMwLTYuNiA1LjQtMTIgMTItMTJoMjRjNi42IDAgMTIgNS40IDEyIDEydjc2aDc2YzYuNiAwIDEyIDUuNCAxMiAxMnptMTEyLTE4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2VjE2MEg0OHYyOThjMCAzLjMgMi43IDYgNiA2aDM0MGMzLjMgMCA2LTIuNyA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyVGltZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzExLjcgMzc0LjdsLTE3IDE3Yy00LjcgNC43LTEyLjMgNC43LTE3IDBMMjI0IDMzNy45bC01My43IDUzLjdjLTQuNyA0LjctMTIuMyA0LjctMTcgMGwtMTctMTdjLTQuNy00LjctNC43LTEyLjMgMC0xN2w1My43LTUzLjctNTMuNy01My43Yy00LjctNC43LTQuNy0xMi4zIDAtMTdsMTctMTdjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDUzLjcgNTMuNyA1My43LTUzLjdjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDE3IDE3YzQuNyA0LjcgNC43IDEyLjMgMCAxN0wyNTcuOSAzMDRsNTMuNyA1My43YzQuOCA0LjcgNC44IDEyLjMuMSAxN3pNNDQ4IDExMnYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2VjE2MEg0OHYyOThjMCAzLjMgMi43IDYgNiA2aDM0MGMzLjMgMCA2LTIuNyA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCA2NGgtNDhWMTJjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjUySDE2MFYxMmMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NTJINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS02IDQwMEg1NGMtMy4zIDAtNi0yLjctNi02VjE2MGgzNTJ2Mjk4YzAgMy4zLTIuNyA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FyZXRTcXVhcmVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyNS4xIDIwOGgxOTcuOGMxMC43IDAgMTYuMSAxMyA4LjUgMjAuNWwtOTguOSA5OC4zYy00LjcgNC43LTEyLjIgNC43LTE2LjkgMGwtOTguOS05OC4zYy03LjctNy41LTIuMy0yMC41IDguNC0yMC41ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWODZjMC0zLjMtMi43LTYtNi02SDU0Yy0zLjMgMC02IDIuNy02IDZ2MzQwYzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDYXJldFNxdWFyZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDE1Ny4xdjE5Ny44YzAgMTAuNy0xMyAxNi4xLTIwLjUgOC41bC05OC4zLTk4LjljLTQuNy00LjctNC43LTEyLjIgMC0xNi45bDk4LjMtOTguOWM3LjUtNy43IDIwLjUtMi4zIDIwLjUgOC40ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWODZjMC0zLjMtMi43LTYtNi02SDU0Yy0zLjMgMC02IDIuNy02IDZ2MzQwYzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDYXJldFNxdWFyZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAzNTQuOVYxNTcuMWMwLTEwLjcgMTMtMTYuMSAyMC41LTguNWw5OC4zIDk4LjljNC43IDQuNyA0LjcgMTIuMiAwIDE2LjlsLTk4LjMgOTguOWMtNy41IDcuNy0yMC41IDIuMy0yMC41LTguNHpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2Vjg2YzAtMy4zLTIuNy02LTYtNkg1NGMtMy4zIDAtNiAyLjctNiA2djM0MGMwIDMuMyAyLjcgNiA2IDZoMzQwYzMuMyAwIDYtMi43IDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FyZXRTcXVhcmVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjIuOSAzMDRIMTI1LjFjLTEwLjcgMC0xNi4xLTEzLTguNS0yMC41bDk4LjktOTguM2M0LjctNC43IDEyLjItNC43IDE2LjkgMGw5OC45IDk4LjNjNy43IDcuNSAyLjMgMjAuNS04LjQgMjAuNXpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2Vjg2YzAtMy4zLTIuNy02LTYtNkg1NGMtMy4zIDAtNiAyLjctNiA2djM0MGMwIDMuMyAyLjcgNiA2IDZoMzQwYzMuMyAwIDYtMi43IDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2hhcnRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk2LjggMzUyaDIyLjRjNi40IDAgMTIuOC02LjQgMTIuOC0xMi44VjEwOC44YzAtNi40LTYuNC0xMi44LTEyLjgtMTIuOGgtMjIuNGMtNi40IDAtMTIuOCA2LjQtMTIuOCAxMi44djIzMC40YzAgNi40IDYuNCAxMi44IDEyLjggMTIuOHptLTE5MiAwaDIyLjRjNi40IDAgMTIuOC02LjQgMTIuOC0xMi44VjE0MC44YzAtNi40LTYuNC0xMi44LTEyLjgtMTIuOGgtMjIuNGMtNi40IDAtMTIuOCA2LjQtMTIuOCAxMi44djE5OC40YzAgNi40IDYuNCAxMi44IDEyLjggMTIuOHptOTYgMGgyMi40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOFYyMDQuOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTIyLjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYxMzQuNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6TTQ5NiA0MDBINDhWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiA2NCAwIDcxLjE2IDAgODB2MzM2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNDY0YzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTguODQtNy4xNi0xNi0xNi0xNnptLTM4Ny4yLTQ4aDIyLjRjNi40IDAgMTIuOC02LjQgMTIuOC0xMi44di03MC40YzAtNi40LTYuNC0xMi44LTEyLjgtMTIuOGgtMjIuNGMtNi40IDAtMTIuOCA2LjQtMTIuOCAxMi44djcwLjRjMCA2LjQgNi40IDEyLjggMTIuOCAxMi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaGVja0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkuMDMzIDggOCAxMTkuMDMzIDggMjU2czExMS4wMzMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMzMgMjQ4LTI0OFMzOTIuOTY3IDggMjU2IDh6bTAgNDhjMTEwLjUzMiAwIDIwMCA4OS40NTEgMjAwIDIwMCAwIDExMC41MzItODkuNDUxIDIwMC0yMDAgMjAwLTExMC41MzIgMC0yMDAtODkuNDUxLTIwMC0yMDAgMC0xMTAuNTMyIDg5LjQ1MS0yMDAgMjAwLTIwMG0xNDAuMjA0IDEzMC4yNjdsLTIyLjUzNi0yMi43MThjLTQuNjY3LTQuNzA1LTEyLjI2NS00LjczNi0xNi45Ny0uMDY4TDIxNS4zNDYgMzAzLjY5N2wtNTkuNzkyLTYwLjI3N2MtNC42NjctNC43MDUtMTIuMjY1LTQuNzM2LTE2Ljk3LS4wNjlsLTIyLjcxOSAyMi41MzZjLTQuNzA1IDQuNjY3LTQuNzM2IDEyLjI2NS0uMDY4IDE2Ljk3MWw5MC43ODEgOTEuNTE2YzQuNjY3IDQuNzA1IDEyLjI2NSA0LjczNiAxNi45Ny4wNjhsMTcyLjU4OS0xNzEuMjA0YzQuNzA0LTQuNjY4IDQuNzM0LTEyLjI2Ni4wNjctMTYuOTcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaGVja1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDM1MmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bTAgNDAwSDQ4VjgwaDM1MnYzNTJ6bS0zNS44NjQtMjQxLjcyNEwxOTEuNTQ3IDM2MS40OGMtNC43MDUgNC42NjctMTIuMzAzIDQuNjM3LTE2Ljk3LS4wNjhsLTkwLjc4MS05MS41MTZjLTQuNjY3LTQuNzA1LTQuNjM3LTEyLjMwMy4wNjktMTYuOTcxbDIyLjcxOS0yMi41MzZjNC43MDUtNC42NjcgMTIuMzAzLTQuNjM3IDE2Ljk3LjA2OWw1OS43OTIgNjAuMjc3IDE0MS4zNTItMTQwLjIxNmM0LjcwNS00LjY2NyAxMi4zMDMtNC42MzcgMTYuOTcuMDY4bDIyLjUzNiAyMi43MThjNC42NjcgNC43MDYgNC42MzcgMTIuMzA0LS4wNjggMTYuOTcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMCA0NDhjLTExMC41IDAtMjAwLTg5LjUtMjAwLTIwMFMxNDUuNSA1NiAyNTYgNTZzMjAwIDg5LjUgMjAwIDIwMC04OS41IDIwMC0yMDAgMjAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDbGlwYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDY0aC04MGMwLTM1LjMtMjguNy02NC02NC02NHMtNjQgMjguNy02NCA2NEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjExMmMwLTI2LjUtMjEuNS00OC00OC00OHpNMTkyIDQwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptMTQ0IDQxOGMwIDMuMy0yLjcgNi02IDZINTRjLTMuMyAwLTYtMi43LTYtNlYxMThjMC0zLjMgMi43LTYgNi02aDQydjM2YzAgNi42IDUuNCAxMiAxMiAxMmgxNjhjNi42IDAgMTItNS40IDEyLTEydi0zNmg0MmMzLjMgMCA2IDIuNyA2IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Nsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTAgNDQ4Yy0xMTAuNSAwLTIwMC04OS41LTIwMC0yMDBTMTQ1LjUgNTYgMjU2IDU2czIwMCA4OS41IDIwMCAyMDAtODkuNSAyMDAtMjAwIDIwMHptNjEuOC0xMDQuNGwtODQuOS02MS43Yy0zLjEtMi4zLTQuOS01LjktNC45LTkuN1YxMTZjMC02LjYgNS40LTEyIDEyLTEyaDMyYzYuNiAwIDEyIDUuNCAxMiAxMnYxNDEuN2w2Ni44IDQ4LjZjNS40IDMuOSA2LjUgMTEuNCAyLjYgMTYuOEwzMzQuNiAzNDljLTMuOSA1LjMtMTEuNCA2LjUtMTYuOCAyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Nsb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAwSDE0NGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY0OEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHYzMjBjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzMjBjMjYuNTEgMCA0OC0yMS40OSA0OC00OHYtNDhoNDhjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY0OGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4ek0zNjIgNDY0SDU0YTYgNiAwIDAgMS02LTZWMTUwYTYgNiAwIDAgMSA2LTZoNDJ2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMjI0djQyYTYgNiAwIDAgMS02IDZ6bTk2LTk2SDE1MGE2IDYgMCAwIDEtNi02VjU0YTYgNiAwIDAgMSA2LTZoMzA4YTYgNiAwIDAgMSA2IDZ2MzA4YTYgNiAwIDAgMS02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Nsb3NlZENhcHRpb25pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjI4OGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tNiAzMzZINTRjLTMuMyAwLTYtMi43LTYtNlYxMThjMC0zLjMgMi43LTYgNi02aDQwNGMzLjMgMCA2IDIuNyA2IDZ2Mjc2YzAgMy4zLTIuNyA2LTYgNnptLTIxMS4xLTg1LjdjMS43IDIuNCAxLjUgNS42LS41IDcuNy01My42IDU2LjgtMTcyLjggMzIuMS0xNzIuOC02Ny45IDAtOTcuMyAxMjEuNy0xMTkuNSAxNzIuNS03MC4xIDIuMSAyIDIuNSAzLjIgMSA1LjdsLTE3LjUgMzAuNWMtMS45IDMuMS02LjIgNC05LjEgMS43LTQwLjgtMzItOTQuNi0xNC45LTk0LjYgMzEuMiAwIDQ4IDUxIDcwLjUgOTIuMiAzMi42IDIuOC0yLjUgNy4xLTIuMSA5LjIuOWwxOS42IDI3Ljd6bTE5MC40IDBjMS43IDIuNCAxLjUgNS42LS41IDcuNy01My42IDU2LjktMTcyLjggMzIuMS0xNzIuOC02Ny45IDAtOTcuMyAxMjEuNy0xMTkuNSAxNzIuNS03MC4xIDIuMSAyIDIuNSAzLjIgMSA1LjdMNDIwIDIyMC4yYy0xLjkgMy4xLTYuMiA0LTkuMSAxLjctNDAuOC0zMi05NC42LTE0LjktOTQuNiAzMS4yIDAgNDggNTEgNzAuNSA5Mi4yIDMyLjYgMi44LTIuNSA3LjEtMi4xIDkuMi45bDE5LjYgMjcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ29tbWVudEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMEg2NEMyOC43IDAgMCAyOC43IDAgNjR2Mjg4YzAgMzUuMyAyOC43IDY0IDY0IDY0aDk2djg0YzAgNy4xIDUuOCAxMiAxMiAxMiAyLjQgMCA0LjktLjcgNy4xLTIuNEwzMDQgNDE2aDE0NGMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NHptMTYgMzUyYzAgOC44LTcuMiAxNi0xNiAxNkgyODhsLTEyLjggOS42TDIwOCA0Mjh2LTYwSDY0Yy04LjggMC0xNi03LjItMTYtMTZWNjRjMC04LjggNy4yLTE2IDE2LTE2aDM4NGM4LjggMCAxNiA3LjIgMTYgMTZ2Mjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDb21tZW50RG90cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgMjA4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnptMTEyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyem0xMTIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6TTI1NiAzMkMxMTQuNiAzMiAwIDEyNS4xIDAgMjQwYzAgNDcuNiAxOS45IDkxLjIgNTIuOSAxMjYuM0MzOCA0MDUuNyA3IDQzOS4xIDYuNSA0MzkuNWMtNi42IDctOC40IDE3LjItNC42IDI2UzE0LjQgNDgwIDI0IDQ4MGM2MS41IDAgMTEwLTI1LjcgMTM5LjEtNDYuM0MxOTIgNDQyLjggMjIzLjIgNDQ4IDI1NiA0NDhjMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMnptMCAzNjhjLTI2LjcgMC01My4xLTQuMS03OC40LTEyLjFsLTIyLjctNy4yLTE5LjUgMTMuOGMtMTQuMyAxMC4xLTMzLjkgMjEuNC01Ny41IDI5IDcuMy0xMi4xIDE0LjQtMjUuNyAxOS45LTQwLjJsMTAuNi0yOC4xLTIwLjYtMjEuOEM2OS43IDMxNC4xIDQ4IDI4Mi4yIDQ4IDI0MGMwLTg4LjIgOTMuMy0xNjAgMjA4LTE2MHMyMDggNzEuOCAyMDggMTYwLTkzLjMgMTYwLTIwOCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NvbW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyQzExNC42IDMyIDAgMTI1LjEgMCAyNDBjMCA0Ny42IDE5LjkgOTEuMiA1Mi45IDEyNi4zQzM4IDQwNS43IDcgNDM5LjEgNi41IDQzOS41Yy02LjYgNy04LjQgMTcuMi00LjYgMjZTMTQuNCA0ODAgMjQgNDgwYzYxLjUgMCAxMTAtMjUuNyAxMzkuMS00Ni4zQzE5MiA0NDIuOCAyMjMuMiA0NDggMjU2IDQ0OGMxNDEuNCAwIDI1Ni05My4xIDI1Ni0yMDhTMzk3LjQgMzIgMjU2IDMyem0wIDM2OGMtMjYuNyAwLTUzLjEtNC4xLTc4LjQtMTIuMWwtMjIuNy03LjItMTkuNSAxMy44Yy0xNC4zIDEwLjEtMzMuOSAyMS40LTU3LjUgMjkgNy4zLTEyLjEgMTQuNC0yNS43IDE5LjktNDAuMmwxMC42LTI4LjEtMjAuNi0yMS44QzY5LjcgMzE0LjEgNDggMjgyLjIgNDggMjQwYzAtODguMiA5My4zLTE2MCAyMDgtMTYwczIwOCA3MS44IDIwOCAxNjAtOTMuMyAxNjAtMjA4IDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ29tbWVudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTMyIDM4Ni4yYzI3LjUtMjcuMSA0NC02MS4xIDQ0LTk4LjIgMC04MC03Ni41LTE0Ni4xLTE3Ni4yLTE1Ny45QzM2OC4zIDcyLjUgMjk0LjMgMzIgMjA4IDMyIDkzLjEgMzIgMCAxMDMuNiAwIDE5MmMwIDM3IDE2LjUgNzEgNDQgOTguMi0xNS4zIDMwLjctMzcuMyA1NC41LTM3LjcgNTQuOS02LjMgNi43LTguMSAxNi41LTQuNCAyNSAzLjYgOC41IDEyIDE0IDIxLjIgMTQgNTMuNSAwIDk2LjctMjAuMiAxMjUuMi0zOC44IDkuMiAyLjEgMTguNyAzLjcgMjguNCA0LjlDMjA4LjEgNDA3LjYgMjgxLjggNDQ4IDM2OCA0NDhjMjAuOCAwIDQwLjgtMi40IDU5LjgtNi44QzQ1Ni4zIDQ1OS43IDQ5OS40IDQ4MCA1NTMgNDgwYzkuMiAwIDE3LjUtNS41IDIxLjItMTQgMy42LTguNSAxLjktMTguMy00LjQtMjUtLjQtLjMtMjIuNS0yNC4xLTM3LjgtNTQuOHptLTM5Mi44LTkyLjNMMTIyLjEgMzA1Yy0xNC4xIDkuMS0yOC41IDE2LjMtNDMuMSAyMS40IDIuNy00LjcgNS40LTkuNyA4LTE0LjhsMTUuNS0zMS4xTDc3LjcgMjU2QzY0LjIgMjQyLjYgNDggMjIwLjcgNDggMTkyYzAtNjAuNyA3My4zLTExMiAxNjAtMTEyczE2MCA1MS4zIDE2MCAxMTItNzMuMyAxMTItMTYwIDExMmMtMTYuNSAwLTMzLTEuOS00OS01LjZsLTE5LjgtNC41ek00OTguMyAzNTJsLTI0LjcgMjQuNCAxNS41IDMxLjFjMi42IDUuMSA1LjMgMTAuMSA4IDE0LjgtMTQuNi01LjEtMjktMTIuMy00My4xLTIxLjRsLTE3LjEtMTEuMS0xOS45IDQuNmMtMTYgMy43LTMyLjUgNS42LTQ5IDUuNi01NCAwLTEwMi4yLTIwLjEtMTMxLjMtNDkuN0MzMzggMzM5LjUgNDE2IDI3Mi45IDQxNiAxOTJjMC0zLjQtLjQtNi43LS43LTEwQzQ3OS43IDE5Ni41IDUyOCAyMzguOCA1MjggMjg4YzAgMjguNy0xNi4yIDUwLjYtMjkuNyA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ29tcGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDcuOTQgMTI5Ljg2TDIwMy42IDE5NS44M2EzMS45MzggMzEuOTM4IDAgMCAwLTE1Ljc3IDE1Ljc3bC02NS45NyAxNDQuMzRjLTcuNjEgMTYuNjUgOS41NCAzMy44MSAyNi4yIDI2LjJsMTQ0LjM0LTY1Ljk3YTMxLjkzOCAzMS45MzggMCAwIDAgMTUuNzctMTUuNzdsNjUuOTctMTQ0LjM0YzcuNjEtMTYuNjYtOS41NC0zMy44MS0yNi4yLTI2LjJ6bS03Ny4zNiAxNDguNzJjLTEyLjQ3IDEyLjQ3LTMyLjY5IDEyLjQ3LTQ1LjE2IDAtMTIuNDctMTIuNDctMTIuNDctMzIuNjkgMC00NS4xNiAxMi40Ny0xMi40NyAzMi42OS0xMi40NyA0NS4xNiAwIDEyLjQ3IDEyLjQ3IDEyLjQ3IDMyLjY5IDAgNDUuMTZ6TTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMjggMC0yMDAtODkuNzItMjAwLTIwMFMxMzcuNzIgNTYgMjQ4IDU2czIwMCA4OS43MiAyMDAgMjAwLTg5LjcyIDIwMC0yMDAgMjAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDb3B5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMy45NDEgNjUuOTQxbC01MS44ODItNTEuODgyQTQ4IDQ4IDAgMCAwIDM0OC4xMTggMEgxNzZjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2NDhINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MzIwYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMjI0YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTQ4aDgwYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWOTkuODgyYTQ4IDQ4IDAgMCAwLTE0LjA1OS0zMy45NDF6TTI2NiA0NjRINTRhNiA2IDAgMCAxLTYtNlYxNTBhNiA2IDAgMCAxIDYtNmg3NHYyMjRjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg5NnY0MmE2IDYgMCAwIDEtNiA2em0xMjgtOTZIMTgyYTYgNiAwIDAgMS02LTZWNTRhNiA2IDAgMCAxIDYtNmgxMDZ2ODhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDg4djIwMmE2IDYgMCAwIDEtNiA2em02LTI1NmgtNjRWNDhoOS42MzJjMS41OTEgMCAzLjExNy42MzIgNC4yNDMgMS43NTdsNDguMzY4IDQ4LjM2OGE2IDYgMCAwIDEgMS43NTcgNC4yNDNWMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDb3B5cmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0wIDQ0OGMtMTEwLjUzMiAwLTIwMC04OS40NTEtMjAwLTIwMCAwLTExMC41MzEgODkuNDUxLTIwMCAyMDAtMjAwIDExMC41MzIgMCAyMDAgODkuNDUxIDIwMCAyMDAgMCAxMTAuNTMyLTg5LjQ1MSAyMDAtMjAwIDIwMHptMTA3LjM1MS0xMDEuMDY0Yy05LjYxNCA5LjcxMi00NS41MyA0MS4zOTYtMTA0LjA2NSA0MS4zOTYtODIuNDMgMC0xNDAuNDg0LTYxLjQyNS0xNDAuNDg0LTE0MS41NjcgMC03OS4xNTIgNjAuMjc1LTEzOS40MDEgMTM5Ljc2Mi0xMzkuNDAxIDU1LjUzMSAwIDg4LjczOCAyNi42MiA5Ny41OTMgMzQuNzc5YTExLjk2NSAxMS45NjUgMCAwIDEgMS45MzYgMTUuMzIybC0xOC4xNTUgMjguMTEzYy0zLjg0MSA1Ljk1LTExLjk2NiA3LjI4Mi0xNy40OTkgMi45MjEtOC41OTUtNi43NzYtMzEuODE0LTIyLjUzOC02MS43MDgtMjIuNTM4LTQ4LjMwMyAwLTc3LjkxNiAzNS4zMy03Ny45MTYgODAuMDgyIDAgNDEuNTg5IDI2Ljg4OCA4My42OTIgNzguMjc3IDgzLjY5MiAzMi42NTcgMCA1Ni44NDMtMTkuMDM5IDY1LjcyNi0yNy4yMjUgNS4yNy00Ljg1NyAxMy41OTYtNC4wMzkgMTcuODIgMS43MzhsMTkuODY1IDI3LjE3YTExLjk0NyAxMS45NDcgMCAwIDEtMS4xNTIgMTUuNTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDcmVkaXRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyNy45IDMySDQ4LjFDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDguMSA0OGg0NzkuOGMyNi42IDAgNDguMS0yMS41IDQ4LjEtNDhWODBjMC0yNi41LTIxLjUtNDgtNDguMS00OHpNNTQuMSA4MGg0NjcuOGMzLjMgMCA2IDIuNyA2IDZ2NDJINDguMVY4NmMwLTMuMyAyLjctNiA2LTZ6bTQ2Ny44IDM1Mkg1NC4xYy0zLjMgMC02LTIuNy02LTZWMjU2aDQ3OS44djE3MGMwIDMuMy0yLjcgNi02IDZ6TTE5MiAzMzJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC03MmMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNzJjNi42IDAgMTIgNS40IDEyIDEyem0xOTIgMHY0MGMwIDYuNi01LjQgMTItMTIgMTJIMjM2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmgxMzZjNi42IDAgMTIgNS40IDEyIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdEaXp6eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bS0zMy44LTIxNy45YzcuOC03LjggNy44LTIwLjUgMC0yOC4zTDE5Ni4zIDE5MmwxNy45LTE3LjljNy44LTcuOCA3LjgtMjAuNSAwLTI4LjMtNy44LTcuOC0yMC41LTcuOC0yOC4zIDBMMTY4IDE2My43bC0xNy44LTE3LjhjLTcuOC03LjgtMjAuNS03LjgtMjguMyAwLTcuOCA3LjgtNy44IDIwLjUgMCAyOC4zbDE3LjkgMTcuOS0xNy45IDE3LjljLTcuOCA3LjgtNy44IDIwLjUgMCAyOC4zIDcuOCA3LjggMjAuNSA3LjggMjguMyAwbDE3LjgtMTcuOCAxNy44IDE3LjhjNy45IDcuNyAyMC41IDcuNyAyOC40LS4yem0xNjAtOTIuMmMtNy44LTcuOC0yMC41LTcuOC0yOC4zIDBMMzI4IDE2My43bC0xNy44LTE3LjhjLTcuOC03LjgtMjAuNS03LjgtMjguMyAwLTcuOCA3LjgtNy44IDIwLjUgMCAyOC4zbDE3LjkgMTcuOS0xNy45IDE3LjljLTcuOCA3LjgtNy44IDIwLjUgMCAyOC4zIDcuOCA3LjggMjAuNSA3LjggMjguMyAwbDE3LjgtMTcuOCAxNy44IDE3LjhjNy44IDcuOCAyMC41IDcuOCAyOC4zIDAgNy44LTcuOCA3LjgtMjAuNSAwLTI4LjNsLTE3LjgtMTggMTcuOS0xNy45YzcuNy03LjggNy43LTIwLjQgMC0yOC4yek0yNDggMjcyYy0zNS4zIDAtNjQgMjguNy02NCA2NHMyOC43IDY0IDY0IDY0IDY0LTI4LjcgNjQtNjQtMjguNy02NC02NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRG90Q2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1NmMxMTAuNTMyIDAgMjAwIDg5LjQ1MSAyMDAgMjAwIDAgMTEwLjUzMi04OS40NTEgMjAwLTIwMCAyMDAtMTEwLjUzMiAwLTIwMC04OS40NTEtMjAwLTIwMCAwLTExMC41MzIgODkuNDUxLTIwMCAyMDAtMjAwbTAtNDhDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0wIDE2OGMtNDQuMTgzIDAtODAgMzUuODE3LTgwIDgwczM1LjgxNyA4MCA4MCA4MCA4MC0zNS44MTcgODAtODAtMzUuODE3LTgwLTgwLTgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdFZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMi4zIDM0NC45bDMyLTMyYzUtNSAxMy43LTEuNSAxMy43IDUuN1Y0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OGgyNzMuNWM3LjEgMCAxMC43IDguNiA1LjcgMTMuN2wtMzIgMzJjLTEuNSAxLjUtMy41IDIuMy01LjcgMi4zSDQ4djM1MmgzNTJWMzUwLjVjMC0yLjEuOC00LjEgMi4zLTUuNnptMTU2LjYtMjAxLjhMMjk2LjMgNDA1LjdsLTkwLjQgMTBjLTI2LjIgMi45LTQ4LjUtMTkuMi00NS42LTQ1LjZsMTAtOTAuNEw0MzIuOSAxNy4xYzIyLjktMjIuOSA1OS45LTIyLjkgODIuNyAwbDQzLjIgNDMuMmMyMi45IDIyLjkgMjIuOSA2MCAuMSA4Mi44ek00NjAuMSAxNzRMNDAyIDExNS45IDIxNi4yIDMwMS44bC03LjMgNjUuMyA2NS4zLTcuM0w0NjAuMSAxNzR6bTY0LjgtNzkuN2wtNDMuMi00My4yYy00LjEtNC4xLTEwLjgtNC4xLTE0LjggMEw0MzYgODJsNTguMSA1OC4xIDMwLjktMzAuOWM0LTQuMiA0LTEwLjgtLjEtMTQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRW52ZWxvcGVPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NC41ODYgMTY0LjUxNmMtNC42OTctMy44ODMtMTExLjcyMy04OS45NS0xMzUuMjUxLTEwOC42NTdDMzM3LjIzMSAzOC4xOTEgMjk5LjQzNyAwIDI1NiAwYy00My4yMDUgMC04MC42MzYgMzcuNzE3LTEwMy4zMzUgNTUuODU5LTI0LjQ2MyAxOS40NS0xMzEuMDcgMTA1LjE5NS0xMzUuMTUgMTA4LjU0OUE0OC4wMDQgNDguMDA0IDAgMCAwIDAgMjAxLjQ4NVY0NjRjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0MTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYyMDEuNTA5YTQ4IDQ4IDAgMCAwLTE3LjQxNC0zNi45OTN6TTQ2NCA0NThhNiA2IDAgMCAxLTYgNkg1NGE2IDYgMCAwIDEtNi02VjIwNC4zNDdjMC0xLjgxMy44MTYtMy41MjYgMi4yMjYtNC42NjUgMTUuODctMTIuODE0IDEwOC43OTMtODcuNTU0IDEzMi4zNjQtMTA2LjI5M0MyMDAuNzU1IDc4Ljg4IDIzMi4zOTggNDggMjU2IDQ4YzIzLjY5MyAwIDU1Ljg1NyAzMS4zNjkgNzMuNDEgNDUuMzg5IDIzLjU3MyAxOC43NDEgMTE2LjUwMyA5My40OTMgMTMyLjM2NiAxMDYuMzE2YTUuOTkgNS45OSAwIDAgMSAyLjIyNCA0LjY2M1Y0NTh6bS0zMS45OTEtMTg3LjcwNGM0LjI0OSA1LjE1OSAzLjQ2NSAxMi43OTUtMS43NDUgMTYuOTgxLTI4Ljk3NSAyMy4yODMtNTkuMjc0IDQ3LjU5Ny03MC45MjkgNTYuODYzQzMzNi42MzYgMzYyLjI4MyAyOTkuMjA1IDQwMCAyNTYgNDAwYy00My40NTIgMC04MS4yODctMzguMjM3LTEwMy4zMzUtNTUuODYtMTEuMjc5LTguOTY3LTQxLjc0NC0zMy40MTMtNzAuOTI3LTU2Ljg2NS01LjIxLTQuMTg3LTUuOTkzLTExLjgyMi0xLjc0NS0xNi45ODFsMTUuMjU4LTE4LjUyOGM0LjE3OC01LjA3MyAxMS42NTctNS44NDMgMTYuNzc5LTEuNzI2IDI4LjYxOCAyMy4wMDEgNTguNTY2IDQ3LjAzNSA3MC41NiA1Ni41NzFDMjAwLjE0MyAzMjAuNjMxIDIzMi4zMDcgMzUyIDI1NiAzNTJjMjMuNjAyIDAgNTUuMjQ2LTMwLjg4IDczLjQxLTQ1LjM4OSAxMS45OTQtOS41MzUgNDEuOTQ0LTMzLjU3IDcwLjU2My01Ni41NjggNS4xMjItNC4xMTYgMTIuNjAxLTMuMzQ2IDE2Ljc3OCAxLjcyN2wxNS4yNTggMTguNTI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdFbnZlbG9wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgNjRINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYyODhjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0MTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxMTJjMC0yNi41MS0yMS40OS00OC00OC00OHptMCA0OHY0MC44MDVjLTIyLjQyMiAxOC4yNTktNTguMTY4IDQ2LjY1MS0xMzQuNTg3IDEwNi40OS0xNi44NDEgMTMuMjQ3LTUwLjIwMSA0NS4wNzItNzMuNDEzIDQ0LjcwMS0yMy4yMDguMzc1LTU2LjU3OS0zMS40NTktNzMuNDEzLTQ0LjcwMUMxMDYuMTggMTk5LjQ2NSA3MC40MjUgMTcxLjA2NyA0OCAxNTIuODA1VjExMmg0MTZ6TTQ4IDQwMFYyMTQuMzk4YzIyLjkxNCAxOC4yNTEgNTUuNDA5IDQzLjg2MiAxMDQuOTM4IDgyLjY0NiAyMS44NTcgMTcuMjA1IDYwLjEzNCA1NS4xODYgMTAzLjA2MiA1NC45NTUgNDIuNzE3LjIzMSA4MC41MDktMzcuMTk5IDEwMy4wNTMtNTQuOTQ3IDQ5LjUyOC0zOC43ODMgODIuMDMyLTY0LjQwMSAxMDQuOTQ3LTgyLjY1M1Y0MDBINDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0V5ZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzNCA0NzFMMzYgMy41MUExNiAxNiAwIDAgMCAxMy41MSA2bC0xMCAxMi40OUExNiAxNiAwIDAgMCA2IDQxbDU5OCA0NjcuNDlhMTYgMTYgMCAwIDAgMjIuNDktMi40OWwxMC0xMi40OUExNiAxNiAwIDAgMCA2MzQgNDcxek0yOTYuNzkgMTQ2LjQ3bDEzNC43OSAxMDUuMzhDNDI5LjM2IDE5MS45MSAzODAuNDggMTQ0IDMyMCAxNDRhMTEyLjI2IDExMi4yNiAwIDAgMC0yMy4yMSAyLjQ3em00Ni40MiAyMTkuMDdMMjA4LjQyIDI2MC4xNkMyMTAuNjUgMzIwLjA5IDI1OS41MyAzNjggMzIwIDM2OGExMTMgMTEzIDAgMCAwIDIzLjIxLTIuNDZ6TTMyMCAxMTJjOTguNjUgMCAxODkuMDkgNTUgMjM3LjkzIDE0NGEyODUuNTMgMjg1LjUzIDAgMCAxLTQ0IDYwLjJsMzcuNzQgMjkuNWEzMzMuNyAzMzMuNyAwIDAgMCA1Mi45LTc1LjExIDMyLjM1IDMyLjM1IDAgMCAwIDAtMjkuMTlDNTUwLjI5IDEzNS41OSA0NDIuOTMgNjQgMzIwIDY0Yy0zNi43IDAtNzEuNzEgNy0xMDQuNjMgMTguODFsNDYuNDEgMzYuMjljMTguOTQtNC4zIDM4LjM0LTcuMSA1OC4yMi03LjF6bTAgMjg4Yy05OC42NSAwLTE4OS4wOC01NS0yMzcuOTMtMTQ0YTI4NS40NyAyODUuNDcgMCAwIDEgNDQuMDUtNjAuMTlsLTM3Ljc0LTI5LjVhMzMzLjYgMzMzLjYgMCAwIDAtNTIuODkgNzUuMSAzMi4zNSAzMi4zNSAwIDAgMCAwIDI5LjE5Qzg5LjcyIDM3Ni40MSAxOTcuMDggNDQ4IDMyMCA0NDhjMzYuNyAwIDcxLjcxLTcuMDUgMTA0LjYzLTE4LjgxbC00Ni40MS0zNi4yOEMzNTkuMjggMzk3LjIgMzM5Ljg5IDQwMCAzMjAgNDAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdFeWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDE0NGExMTAuOTQgMTEwLjk0IDAgMCAwLTMxLjI0IDUgNTUuNCA1NS40IDAgMCAxIDcuMjQgMjcgNTYgNTYgMCAwIDEtNTYgNTYgNTUuNCA1NS40IDAgMCAxLTI3LTcuMjRBMTExLjcxIDExMS43MSAwIDEgMCAyODggMTQ0em0yODQuNTIgOTcuNEM1MTguMjkgMTM1LjU5IDQxMC45MyA2NCAyODggNjRTNTcuNjggMTM1LjY0IDMuNDggMjQxLjQxYTMyLjM1IDMyLjM1IDAgMCAwIDAgMjkuMTlDNTcuNzEgMzc2LjQxIDE2NS4wNyA0NDggMjg4IDQ0OHMyMzAuMzItNzEuNjQgMjg0LjUyLTE3Ny40MWEzMi4zNSAzMi4zNSAwIDAgMCAwLTI5LjE5ek0yODggNDAwYy05OC42NSAwLTE4OS4wOS01NS0yMzcuOTMtMTQ0Qzk4LjkxIDE2NyAxODkuMzQgMTEyIDI4OCAxMTJzMTg5LjA5IDU1IDIzNy45MyAxNDRDNDc3LjEgMzQ1IDM4Ni42NiA0MDAgMjg4IDQwMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMjQ4djI4YzAgNi42LTUuNCAxMi0xMiAxMkgxMDhjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMjhjMC02LjYgNS40LTEyIDEyLTEyaDE2OGM2LjYgMCAxMiA1LjQgMTIgMTJ6bS0xMiA3MkgxMDhjLTYuNiAwLTEyIDUuNC0xMiAxMnYyOGMwIDYuNiA1LjQgMTIgMTIgMTJoMTY4YzYuNiAwIDEyLTUuNCAxMi0xMnYtMjhjMC02LjYtNS40LTEyLTEyLTEyem0xMDgtMTg4LjFWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY0OEMwIDIxLjUgMjEuNSAwIDQ4IDBoMjA0LjFDMjY0LjggMCAyNzcgNS4xIDI4NiAxNC4xTDM2OS45IDk4YzkgOC45IDE0LjEgMjEuMiAxNC4xIDMzLjl6bS0xMjgtODBWMTI4aDc2LjFMMjU2IDUxLjl6TTMzNiA0NjRWMTc2SDIzMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRWNDhINDh2NDE2aDI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZUFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4LjMgMTYwdjMyaDMydi0zMnptNjQtOTZoLTMydjMyaDMyem0tNjQgMzJ2MzJoMzJWOTZ6bTY0IDMyaC0zMnYzMmgzMnptMTc3LjYtMzAuMUwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0yNTYgNTEuOWw3Ni4xIDc2LjFIMjU2ek0zMzYgNDY0SDQ4VjQ4aDc5Ljd2MTZoMzJWNDhIMjA4djEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR6TTE5NC4yIDI2NS43Yy0xLjEtNS42LTYtOS43LTExLjgtOS43aC0yMi4xdi0zMmgtMzJ2MzJsLTE5LjcgOTcuMUMxMDIgMzg1LjYgMTI2LjggNDE2IDE2MCA0MTZjMzMuMSAwIDU3LjktMzAuMiA1MS41LTYyLjZ6bS0zMy45IDEyNC40Yy0xNy45IDAtMzIuNC0xMi4xLTMyLjQtMjdzMTQuNS0yNyAzMi40LTI3IDMyLjQgMTIuMSAzMi40IDI3LTE0LjUgMjctMzIuNCAyN3ptMzItMTk4LjFoLTMydjMyaDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlQXVkaW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5Ljk0MSA5Ny45NDFsLTgzLjg4Mi04My44ODJBNDggNDggMCAwIDAgMjUyLjExOCAwSDQ4QzIxLjQ5IDAgMCAyMS40OSAwIDQ4djQxNmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDI4OGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjEzMS44ODJhNDggNDggMCAwIDAtMTQuMDU5LTMzLjk0MXpNMzMyLjExOCAxMjhIMjU2VjUxLjg4MkwzMzIuMTE4IDEyOHpNNDggNDY0VjQ4aDE2MHYxMDRjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwNHYyODhINDh6bTE0NC03Ni4wMjRjMCAxMC42OTEtMTIuOTI2IDE2LjA0NS0yMC40ODUgOC40ODVMMTM2IDM2MC40ODZoLTI4Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi01NmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDI4bDM1LjUxNS0zNi45NDdjNy41Ni03LjU2IDIwLjQ4NS0yLjIwNiAyMC40ODUgOC40ODV2MTM1Ljk1MnptNDEuMjAxLTQ3LjEzYzkuMDUxLTkuMjk3IDkuMDYtMjQuMTMzLjAwMS0zMy40MzktMjIuMTQ5LTIyLjc1MiAxMi4yMzUtNTYuMjQ2IDM0LjM5NS0zMy40ODEgMjcuMTk4IDI3Ljk0IDI3LjIxMiA3Mi40NDQuMDAxIDEwMC40MDEtMjEuNzkzIDIyLjM4Ni01Ni45NDctMTAuMzE1LTM0LjM5Ny0zMy40ODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0OS45IDM0OS4xbC0uMi0uMi0zMi44LTI4LjkgMzIuOC0yOC45YzMuNi0zLjIgNC04LjguOC0xMi40bC0uMi0uMi0xNy40LTE4LjZjLTMuNC0zLjYtOS0zLjctMTIuNC0uNGwtNTcuNyA1NC4xYy0zLjcgMy41LTMuNyA5LjQgMCAxMi44bDU3LjcgNTQuMWMxLjYgMS41IDMuOCAyLjQgNiAyLjQgMi40IDAgNC44LTEgNi40LTIuOGwxNy40LTE4LjZjMy4zLTMuNSAzLjEtOS4xLS40LTEyLjR6bTIyMC0yNTEuMkwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0yNTYgNTEuOWw3Ni4xIDc2LjFIMjU2ek0zMzYgNDY0SDQ4VjQ4aDE2MHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTA0ek0yMDkuNiAyMTRjLTQuNy0xLjQtOS41IDEuMy0xMC45IDZMMTQ0IDQwOC4xYy0xLjQgNC43IDEuMyA5LjYgNiAxMC45bDI0LjQgNy4xYzQuNyAxLjQgOS42LTEuNCAxMC45LTZMMjQwIDIzMS45YzEuNC00LjctMS4zLTkuNi02LTEwLjl6bTI0LjUgNzYuOWwuMi4yIDMyLjggMjguOS0zMi44IDI4LjljLTMuNiAzLjItNCA4LjgtLjggMTIuNGwuMi4yIDE3LjQgMTguNmMzLjMgMy41IDguOSAzLjcgMTIuNC40bDU3LjctNTQuMWMzLjctMy41IDMuNy05LjQgMC0xMi44bC01Ny43LTU0LjFjLTMuNS0zLjMtOS4xLTMuMi0xMi40LjRsLTE3LjQgMTguNmMtMy4zIDMuNS0zLjEgOS4xLjQgMTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZUV4Y2VsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OS45IDk3LjlMMjg2IDE0QzI3NyA1IDI2NC44LS4xIDI1Mi4xLS4xSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjEzMS45YzAtMTIuNy01LjEtMjUtMTQuMS0zNHpNMzMyLjEgMTI4SDI1NlY1MS45bDc2LjEgNzYuMXpNNDggNDY0VjQ4aDE2MHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTA0djI4OEg0OHptMjEyLTI0MGgtMjguOGMtNC40IDAtOC40IDIuNC0xMC41IDYuMy0xOCAzMy4xLTIyLjIgNDIuNC0yOC42IDU3LjctMTMuOS0yOS4xLTYuOS0xNy4zLTI4LjYtNTcuNy0yLjEtMy45LTYuMi02LjMtMTAuNi02LjNIMTI0Yy05LjMgMC0xNSAxMC0xMC40IDE4bDQ2LjMgNzgtNDYuMyA3OGMtNC43IDggMS4xIDE4IDEwLjQgMThoMjguOWM0LjQgMCA4LjQtMi40IDEwLjUtNi4zIDIxLjctNDAgMjMtNDUgMjguNi01Ny43IDE0LjkgMzAuMiA1LjkgMTUuOSAyOC42IDU3LjcgMi4xIDMuOSA2LjIgNi4zIDEwLjYgNi4zSDI2MGM5LjMgMCAxNS0xMCAxMC40LTE4TDIyNCAzMjBjLjctMS4xIDMwLjMtNTAuNSA0Ni4zLTc4IDQuNy04LTEuMS0xOC0xMC4zLTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlSW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5LjkgOTcuOUwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0zMzIuMSAxMjhIMjU2VjUxLjlsNzYuMSA3Ni4xek00OCA0NjRWNDhoMTYwdjEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR2Mjg4SDQ4em0zMi00OGgyMjRWMjg4bC0yMy41LTIzLjVjLTQuNy00LjctMTIuMy00LjctMTcgMEwxNzYgMzUybC0zOS41LTM5LjVjLTQuNy00LjctMTIuMy00LjctMTcgMEw4MCAzNTJ2NjR6bTQ4LTI0MGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhzMjEuNSA0OCA0OCA0OCA0OC0yMS41IDQ4LTQ4LTIxLjUtNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVQZGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5LjkgOTcuOUwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0zMzIuMSAxMjhIMjU2VjUxLjlsNzYuMSA3Ni4xek00OCA0NjRWNDhoMTYwdjEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR2Mjg4SDQ4em0yNTAuMi0xNDMuN2MtMTIuMi0xMi00Ny04LjctNjQuNC02LjUtMTcuMi0xMC41LTI4LjctMjUtMzYuOC00Ni4zIDMuOS0xNi4xIDEwLjEtNDAuNiA1LjQtNTYtNC4yLTI2LjItMzcuOC0yMy42LTQyLjYtNS45LTQuNCAxNi4xLS40IDM4LjUgNyA2Ny4xLTEwIDIzLjktMjQuOSA1Ni0zNS40IDc0LjQtMjAgMTAuMy00NyAyNi4yLTUxIDQ2LjItMy4zIDE1LjggMjYgNTUuMiA3Ni4xLTMxLjIgMjIuNC03LjQgNDYuOC0xNi41IDY4LjQtMjAuMSAxOC45IDEwLjIgNDEgMTcgNTUuOCAxNyAyNS41IDAgMjgtMjguMiAxNy41LTM4Ljd6bS0xOTguMSA3Ny44YzUuMS0xMy43IDI0LjUtMjkuNSAzMC40LTM1LTE5IDMwLjMtMzAuNCAzNS43LTMwLjQgMzV6bTgxLjYtMTkwLjZjNy40IDAgNi43IDMyLjEgMS44IDQwLjgtNC40LTEzLjktNC4zLTQwLjgtMS44LTQwLjh6bS0yNC40IDEzNi42YzkuNy0xNi45IDE4LTM3IDI0LjctNTQuNyA4LjMgMTUuMSAxOC45IDI3LjIgMzAuMSAzNS41LTIwLjggNC4zLTM4LjkgMTMuMS01NC44IDE5LjJ6bTEzMS42LTVzLTUgNi0zNy4zLTcuOGMzNS4xLTIuNiA0MC45IDUuNCAzNy4zIDcuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZVBvd2VycG9pbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5LjkgOTcuOUwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0zMzIuMSAxMjhIMjU2VjUxLjlsNzYuMSA3Ni4xek00OCA0NjRWNDhoMTYwdjEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR2Mjg4SDQ4em03Mi02MFYyMzZjMC02LjYgNS40LTEyIDEyLTEyaDY5LjJjMzYuNyAwIDYyLjggMjcgNjIuOCA2Ni4zIDAgNzQuMy02OC43IDY2LjUtOTUuNSA2Ni41VjQwNGMwIDYuNi01LjQgMTItMTIgMTJIMTMyYy02LjYgMC0xMi01LjQtMTItMTJ6bTQ4LjUtODcuNGgyM2M3LjkgMCAxMy45LTIuNCAxOC4xLTcuMiA4LjUtOS44IDguNC0yOC41LjEtMzcuOC00LjEtNC42LTkuOS03LTE3LjQtN2gtMjMuOXY1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZVZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OS45NDEgOTcuOTQxbC04My44ODItODMuODgyQTQ4IDQ4IDAgMCAwIDI1Mi4xMTggMEg0OEMyMS40OSAwIDAgMjEuNDkgMCA0OHY0MTZjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgyODhjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxMzEuODgyYTQ4IDQ4IDAgMCAwLTE0LjA1OS0zMy45NDF6TTMzMi4xMTggMTI4SDI1NlY1MS44ODJMMzMyLjExOCAxMjh6TTQ4IDQ2NFY0OGgxNjB2MTA0YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDR2Mjg4SDQ4em0yMjguNjg3LTIxMS4zMDNMMjI0IDMwNS4zNzRWMjY4YzAtMTEuMDQ2LTguOTU0LTIwLTIwLTIwSDEwMGMtMTEuMDQ2IDAtMjAgOC45NTQtMjAgMjB2MTA0YzAgMTEuMDQ2IDguOTU0IDIwIDIwIDIwaDEwNGMxMS4wNDYgMCAyMC04Ljk1NCAyMC0yMHYtMzcuMzc0bDUyLjY4NyA1Mi42NzRDMjg2LjcwNCAzOTcuMzE4IDMwNCAzOTAuMjggMzA0IDM3NS45ODZWMjY0LjAxMWMwLTE0LjMxMS0xNy4zMDktMjEuMzE5LTI3LjMxMy0xMS4zMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVXb3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OS45IDk3LjlMMjg2IDE0QzI3NyA1IDI2NC44LS4xIDI1Mi4xLS4xSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjEzMS45YzAtMTIuNy01LjEtMjUtMTQuMS0zNHpNMzMyLjEgMTI4SDI1NlY1MS45bDc2LjEgNzYuMXpNNDggNDY0VjQ4aDE2MHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTA0djI4OEg0OHptMjIwLjEtMjA4Yy01LjcgMC0xMC42IDQtMTEuNyA5LjUtMjAuNiA5Ny43LTIwLjQgOTUuNC0yMSAxMDMuNS0uMi0xLjItLjQtMi42LS43LTQuMy0uOC01LjEuMy4yLTIzLjYtOTkuNS0xLjMtNS40LTYuMS05LjItMTEuNy05LjJoLTEzLjNjLTUuNSAwLTEwLjMgMy44LTExLjcgOS4xLTI0LjQgOTktMjQgOTYuMi0yNC44IDEwMy43LS4xLTEuMS0uMi0yLjUtLjUtNC4yLS43LTUuMi0xNC4xLTczLjMtMTkuMS05OS0xLjEtNS42LTYtOS43LTExLjgtOS43aC0xNi44Yy03LjggMC0xMy41IDcuMy0xMS43IDE0LjggOCAzMi42IDI2LjcgMTA5LjUgMzMuMiAxMzYgMS4zIDUuNCA2LjEgOS4xIDExLjcgOS4xaDI1LjJjNS41IDAgMTAuMy0zLjcgMTEuNi05LjFsMTcuOS03MS40YzEuNS02LjIgMi41LTEyIDMtMTcuM2wyLjkgMTcuM2MuMS40IDEyLjYgNTAuNSAxNy45IDcxLjQgMS4zIDUuMyA2LjEgOS4xIDExLjYgOS4xaDI0LjdjNS41IDAgMTAuMy0zLjcgMTEuNi05LjEgMjAuOC04MS45IDMwLjItMTE5IDM0LjUtMTM2IDEuOS03LjYtMy44LTE0LjktMTEuNi0xNC45aC0xNS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OS45IDk3LjlMMjg2IDE0QzI3NyA1IDI2NC44LS4xIDI1Mi4xLS4xSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjEzMS45YzAtMTIuNy01LjEtMjUtMTQuMS0zNHpNMzMyLjEgMTI4SDI1NlY1MS45bDc2LjEgNzYuMXpNNDggNDY0VjQ4aDE2MHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTA0djI4OEg0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmxhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYuMTc0IDgwYy00OS4xMzIgMC05My4zMDUtMzItMTYxLjkxMy0zMi0zMS4zMDEgMC01OC4zMDMgNi40ODItODAuNzIxIDE1LjE2OGE0OC4wNCA0OC4wNCAwIDAgMCAyLjE0Mi0yMC43MjdDOTMuMDY3IDE5LjU3NSA3NC4xNjcgMS41OTQgNTEuMjAxLjEwNCAyMy4yNDItMS43MSAwIDIwLjQzMSAwIDQ4YzAgMTcuNzY0IDkuNjU3IDMzLjI2MiAyNCA0MS41NjJWNDk2YzAgOC44MzcgNy4xNjMgMTYgMTYgMTZoMTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtODMuNDQzQzEwOS44NjkgMzk1LjI4IDE0My4yNTkgMzg0IDE5OS44MjYgMzg0YzQ5LjEzMiAwIDkzLjMwNSAzMiAxNjEuOTEzIDMyIDU4LjQ3OSAwIDEwMS45NzItMjIuNjE3IDEyOC41NDgtMzkuOTgxQzUwMy44NDYgMzY3LjE2MSA1MTIgMzUyLjA1MSA1MTIgMzM1Ljg1NVY5NS45MzdjMC0zNC40NTktMzUuMjY0LTU3Ljc2OC02Ni45MDQtNDQuMTE3QzQwOS4xOTMgNjcuMzA5IDM3MS42NDEgODAgMzM2LjE3NCA4MHpNNDY0IDMzNmMtMjEuNzgzIDE1LjQxMi02MC44MjQgMzItMTAyLjI2MSAzMi01OS45NDUgMC0xMDIuMDAyLTMyLTE2MS45MTMtMzItNDMuMzYxIDAtOTYuMzc5IDkuNDAzLTEyNy44MjYgMjRWMTI4YzIxLjc4NC0xNS40MTIgNjAuODI0LTMyIDEwMi4yNjEtMzIgNTkuOTQ1IDAgMTAyLjAwMiAzMiAxNjEuOTEzIDMyIDQzLjI3MSAwIDk2LjMyLTE3LjM2NiAxMjcuODI2LTMydjI0MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmx1c2hlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTk2LTMxMmMtNDQuMiAwLTgwIDM1LjgtODAgODBzMzUuOCA4MCA4MCA4MCA4MC0zNS44IDgwLTgwLTM1LjgtODAtODAtODB6bTAgMTI4Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptMC03MmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6bS0xMTIgMjRjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODAgMzUuOCA4MCA4MCA4MCA4MC0zNS44IDgwLTgwem0tODAgNDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em0wLTcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHptMTYwIDE0NEgxODRjLTEzLjIgMC0yNCAxMC44LTI0IDI0czEwLjggMjQgMjQgMjRoMTI4YzEzLjIgMCAyNC0xMC44IDI0LTI0cy0xMC44LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGb2xkZXJPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyNy45IDIyNEg0ODB2LTQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDI3MmwtNjQtNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2Mjg4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQwMGMxNi41IDAgMzEuOS04LjUgNDAuNy0yMi42bDc5LjktMTI4YzIwLTMxLjktMy03My40LTQwLjctNzMuNHpNNDggMTE4YzAtMy4zIDIuNy02IDYtNmgxMzQuMWw2NCA2NEg0MjZjMy4zIDAgNiAyLjcgNiA2djQySDE1MmMtMTYuOCAwLTMyLjQgOC44LTQxLjEgMjMuMkw0OCAzNTEuNHptNDAwIDI4Mkg3Mmw3Ny4yLTEyOEg1Mjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMTI4SDI3MmwtNTQuNjMtNTQuNjNjLTYtNi0xNC4xNC05LjM3LTIyLjYzLTkuMzdINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYyODhjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0MTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxNzZjMC0yNi41MS0yMS40OS00OC00OC00OHptMCAyNzJINDhWMTEyaDE0MC4xMmw1NC42MyA1NC42M2M2IDYgMTQuMTQgOS4zNyAyMi42MyA5LjM3SDQ2NHYyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZvbnRBd2Vzb21lTG9nb0Z1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM5OTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1NC42IDBINTcuNEMyNS45IDAgMCAyNS45IDAgNTcuNHYzOTcuM0MwIDQ4Ni4xIDI1LjkgNTEyIDU3LjQgNTEyaDM5Ny4zYzMxLjQgMCA1Ny40LTI1LjkgNTcuNC01Ny40VjU3LjRDNTEyIDI1LjkgNDg2LjEgMCA0NTQuNiAwem0tNTguOSAzMjQuOWMwIDQuOC00LjEgNi45LTguOSA4LjktMTkuMiA4LjEtMzkuNyAxNS43LTYxLjUgMTUuNy00MC41IDAtNjguNy00NC44LTE2My4yIDIuNXY1MS44YzAgMzAuMy00NS43IDMwLjItNDUuNyAwdi0yNTBjLTktNy0xNS0xNy45LTE1LTMwLjMgMC0yMSAxNy4xLTM4LjIgMzguMi0zOC4yIDIxIDAgMzguMiAxNy4xIDM4LjIgMzguMiAwIDEyLjItNS44IDIzLjItMTQuOSAzMC4ydjIxYzM3LjEtMTIgNjUuNS0zNC40IDE0Ni4xLTMuNCAyNi42IDExLjQgNjguNy0xNS43IDc2LjUtMTUuNyA1LjUgMCAxMC4zIDQuMSAxMC4zIDguOXYxNjAuNHptNDMyLjktMTc0LjJoLTEzN3Y3MC4xSDgyNWMzOS44IDAgNDAuNCA2Mi4yIDAgNjIuMkg2OTEuNnYxMDUuNmMwIDQ1LjUtNzAuNyA0Ni40LTcwLjcgMFYxMjguM2MwLTIyIDE4LTM5LjggMzkuOC0zOS44aDE2Ny44YzM5LjYgMCA0MC41IDYyLjIuMSA2Mi4yem0xOTEuMSAyMy40Yy0xNjkuMyAwLTE2OS4xIDI1Mi40IDAgMjUyLjQgMTY5LjkgMCAxNjkuOS0yNTIuNCAwLTI1Mi40em0wIDE5Ni4xYy04MS42IDAtODIuMS0xMzkuOCAwLTEzOS44IDgyLjUgMCA4Mi40IDEzOS44IDAgMTM5Ljh6bTM3Mi40IDUzLjRjLTE3LjUgMC0zMS40LTEzLjktMzEuNC0zMS40di0xMTdjMC02Mi40LTcyLjYtNTIuNS05OS4xLTE2LjR2MTMzLjRjMCA0MS41LTYzLjMgNDEuOC02My4zIDBWMjA4YzAtNDAgNjMuMS00MS42IDYzLjEgMHYzLjRjNDMuMy01MS42IDE2Mi40LTYwLjQgMTYyLjQgMzkuM3YxNDEuNWMuMyAzMC40LTMxLjUgMzEuNC0zMS43IDMxLjR6bTE3OS43IDIuOWMtNDQuMyAwLTY4LjMtMjIuOS02OC4zLTY1LjhWMjM1LjJIMTQ4OGMtMzUuNiAwLTM2LjctNTUuMyAwLTU1LjNoMTUuNXYtMzcuM2MwLTQxLjMgNjMuOC00Mi4xIDYzLjggMHYzNy41aDI0LjljMzUuNCAwIDM1LjcgNTUuMyAwIDU1LjNoLTI0Ljl2MTA4LjVjMCAyOS42IDI2LjEgMjYuMyAyNy40IDI2LjMgMzEuNCAwIDUyLjYgNTYuMy0yMi45IDU2LjN6TTE5OTIgMTIzYy0xOS41LTUwLjItOTUuNS01MC0xMTQuNSAwLTEwNy4zIDI3NS43LTk5LjUgMjUyLjctOTkuNSAyNjIuOCAwIDQyLjggNTguMyA1MS4yIDcyLjEgMTQuNGwxMy41LTM1LjlIMjAwNmwxMyAzNS45YzE0LjIgMzcuNyA3Mi4xIDI3LjIgNzIuMS0xNC40IDAtMTAuMSA1LjMgNi44LTk5LjEtMjYyLjh6bS0xMDguOSAxNzkuMWw1MS43LTE0Mi45IDUxLjggMTQyLjloLTEwMy41em01OTEuMy04NS42bC01My43IDE3Ni4zYy0xMi40IDQxLjItNzIgNDEtODQgMGwtNDIuMy0xMzUuOS00Mi4zIDEzNS45Yy0xMi40IDQwLjktNzIgNDEuMi04NC41IDBsLTU0LjItMTc2LjNjLTEyLjUtMzkuNCA0OS44LTU2LjEgNjAuMi0xNi45TDIyMTMgMzQybDQ1LjMtMTM5LjVjMTAuOS0zMi43IDU5LjYtMzQuNyA3MS4yIDBsNDUuMyAxMzkuNSAzOS4zLTE0Mi40YzEwLjMtMzguMyA3Mi42LTIzLjggNjAuMyAxNi45em0yNzUuNCA3NS4xYzAtNDIuNC0zMy45LTExNy41LTExOS41LTExNy41LTczLjIgMC0xMjQuNCA1Ni4zLTEyNC40IDEyNiAwIDc3LjIgNTUuMyAxMjYuNCAxMjguNSAxMjYuNCAzMS43IDAgOTMtMTEuNSA5My0zOS44IDAtMTguMy0yMS4xLTMxLjUtMzkuMy0yMi40LTQ5LjQgMjYuMi0xMDkgOC40LTExNS45LTQzLjhoMTQ4LjNjMTYuMyAwIDI5LjMtMTMuNCAyOS4zLTI4Ljl6TTI1NzEgMjc3LjdjOS41LTczLjQgMTEzLjktNjguNiAxMTguNiAwSDI1NzF6bTMxNi43IDE0OC44Yy0zMS40IDAtODEuNi0xMC41LTk2LjYtMzEuOS0xMi40LTE3IDIuNS0zOS44IDIxLjgtMzkuOCAxNi4zIDAgMzYuOCAyMi45IDc3LjcgMjIuOSAyNy40IDAgNDAuNC0xMSA0MC40LTI1LjggMC0zOS44LTE0Mi45LTcuNC0xNDIuOS0xMDIgMC00MC40IDM1LjMtNzUuNyA5OC42LTc1LjcgMzEuNCAwIDc0LjEgOS45IDg3LjYgMjkuNCAxMC44IDE0LjgtMS40IDM2LjItMjAuOSAzNi4yLTE1LjEgMC0yNi43LTE3LjMtNjYuMi0xNy4zLTIyLjkgMC0zNy44IDEwLjUtMzcuOCAyMy44IDAgMzUuOSAxNDIuNCA2IDE0Mi40IDEwMy4xLS4xIDQzLjctMzcuNCA3Ny4xLTEwNC4xIDc3LjF6bTI2Ni44LTI1Mi40Yy0xNjkuMyAwLTE2OS4xIDI1Mi40IDAgMjUyLjQgMTcwLjEgMCAxNjkuNi0yNTIuNCAwLTI1Mi40em0wIDE5Ni4xYy04MS44IDAtODItMTM5LjggMC0xMzkuOCA4Mi41IDAgODIuNCAxMzkuOCAwIDEzOS44em00NzYuOSAyMlYyNjguN2MwLTUzLjgtNjEuNC00NS44LTg1LjctMTAuNXYxMzRjMCA0MS4zLTYzLjggNDIuMS02My44IDBWMjY4LjdjMC01Mi4xLTU5LjUtNDcuNC04NS43LTEwLjF2MTMzLjZjMCA0MS41LTYzLjMgNDEuOC02My4zIDBWMjA4YzAtNDAgNjMuMS00MS42IDYzLjEgMHYzLjRjOS45LTE0LjQgNDEuOC0zNy4zIDc4LjYtMzcuMyAzNS4zIDAgNTcuNyAxNi40IDY2LjcgNDMuOCAxMy45LTIxLjggNDUuOC00My44IDgyLjYtNDMuOCA0NC4zIDAgNzAuNyAyMy40IDcwLjcgNzIuN3YxNDUuM2MuNSAxNy4zLTEzLjUgMzEuNC0zMS45IDMxLjQgMy41LjEtMzEuMyAxLjEtMzEuMy0zMS4zek0zOTkyIDI5MS42YzAtNDIuNC0zMi40LTExNy41LTExNy45LTExNy41LTczLjIgMC0xMjcuNSA1Ni4zLTEyNy41IDEyNiAwIDc3LjIgNTguMyAxMjYuNCAxMzEuNiAxMjYuNCAzMS43IDAgOTEuNS0xMS41IDkxLjUtMzkuOCAwLTE4LjMtMjEuMS0zMS41LTM5LjMtMjIuNC00OS40IDI2LjItMTEwLjUgOC40LTExNy41LTQzLjhoMTQ5LjhjMTYuMyAwIDI5LjEtMTMuNCAyOS4zLTI4Ljl6bS0xODAuNS0xMy45YzkuNy03NC40IDExNS45LTY4LjMgMTIwLjEgMGgtMTIwLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Zyb3duT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bS00OC0yNDhjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyem0xMjgtMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyem0tODAgMTEyYy0zNS42IDAtODguOCAyMS4zLTk1LjggNjEuMi0yIDExLjggOSAyMS41IDIwLjUgMTguMSAzMS4yLTkuNiA1OS40LTE1LjMgNzUuMy0xNS4zczQ0LjEgNS43IDc1LjMgMTUuM2MxMS40IDMuNSAyMi41LTYuMyAyMC41LTE4LjEtNy0zOS45LTYwLjItNjEuMi05NS44LTYxLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Zyb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptLTgwLTIxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE2MC02NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bS04MCAxMjhjLTQwLjIgMC03OCAxNy43LTEwMy44IDQ4LjYtOC41IDEwLjItNy4xIDI1LjMgMy4xIDMzLjggMTAuMiA4LjQgMjUuMyA3LjEgMzMuOC0zLjEgMTYuNi0xOS45IDQxLTMxLjQgNjYuOS0zMS40czUwLjMgMTEuNCA2Ni45IDMxLjRjOC4xIDkuNyAyMy4xIDExLjkgMzMuOCAzLjEgMTAuMi04LjUgMTEuNS0yMy42IDMuMS0zMy44QzMyNiAzMjEuNyAyODguMiAzMDQgMjQ4IDMwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRnV0Ym9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4My44IDE3OS40QzQ0OS44IDc0LjYgMzUyLjYgOCAyNDguMSA4Yy0yNS40IDAtNTEuMiAzLjktNzYuNyAxMi4yQzQxLjIgNjIuNS0zMC4xIDIwMi40IDEyLjIgMzMyLjYgNDYuMiA0MzcuNCAxNDMuNCA1MDQgMjQ3LjkgNTA0YzI1LjQgMCA1MS4yLTMuOSA3Ni43LTEyLjIgMTMwLjItNDIuMyAyMDEuNS0xODIuMiAxNTkuMi0zMTIuNHptLTc0LjUgMTkzLjdsLTUyLjIgNi40LTQzLjctNjAuOSAyNC40LTc1LjIgNzEuMS0yMi4xIDM4LjkgMzYuNGMtLjIgMzAuNy03LjQgNjEuMS0yMS43IDg5LjItNC43IDkuMy0xMC43IDE3LjgtMTYuOCAyNi4yem0wLTIzNS40bC0xMC40IDUzLjEtNzAuNyAyMi02NC4yLTQ2LjVWOTIuNWw0Ny40LTI2LjJjMzkuMiAxMyA3My40IDM4IDk3LjkgNzEuNHpNMTg0LjkgNjYuNEwyMzIgOTIuNXY3My44bC02NC4yIDQ2LjUtNzAuNi0yMi0xMC4xLTUyLjVjMjQuMy0zMy40IDU3LjktNTguNiA5Ny44LTcxLjl6TTEzOSAzNzkuNUw4NS45IDM3M2MtMTQuNC0yMC4xLTM3LjMtNTkuNi0zNy44LTExNS4zbDM5LTM2LjQgNzEuMSAyMi4yIDI0LjMgNzQuMy00My41IDYxLjd6bTQ4LjIgNjdsLTIyLjQtNDguMSA0My42LTYxLjdIMjg3bDQ0LjMgNjEuNy0yMi40IDQ4LjFjLTYuMiAxLjgtNTcuNiAyMC40LTEyMS43IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dlbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMEgxMTJjLTQgMC03LjggMi0xMCA1LjRMMiAxNTIuNmMtMi45IDQuNC0yLjYgMTAuMi43IDE0LjJsMjc2IDM0MC44YzQuOCA1LjkgMTMuOCA1LjkgMTguNiAwbDI3Ni0zNDAuOGMzLjMtNC4xIDMuNi05LjguNy0xNC4yTDQ3NC4xIDUuNEM0NzEuOCAyIDQ2OC4xIDAgNDY0IDB6bS0xOS4zIDQ4bDYzLjMgOTZoLTY4LjRsLTUxLjctOTZoNTYuOHptLTIwMi4xIDBoOTAuN2w1MS43IDk2SDE5MWw1MS42LTk2em0tMTExLjMgMGg1Ni44bC01MS43IDk2SDY4bDYzLjMtOTZ6bS00MyAxNDRoNTEuNEwyMDggMzUyIDg4LjMgMTkyem0xMDIuOSAwaDE5My42TDI4OCA0MzUuMyAxOTEuMiAxOTJ6TTM2OCAzNTJsNjguMi0xNjBoNTEuNEwzNjggMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmltYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptLTgwLTIxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMTYgMTZIMTUyYy0yNi41IDAtNDggMjEuNS00OCA0OHYzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgxOTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTMyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMTY4IDk2aC0yNGMtOC44IDAtMTYtNy4yLTE2LTE2di04aDQwdjI0em0wLTQwaC00MHYtOGMwLTguOCA3LjItMTYgMTYtMTZoMjR2MjR6bTY0IDQwaC00OHYtMjRoNDh2MjR6bTAtNDBoLTQ4di0yNGg0OHYyNHptNjQgNDBoLTQ4di0yNGg0OHYyNHptMC00MGgtNDh2LTI0aDQ4djI0em01NiAyNGMwIDguOC03LjIgMTYtMTYgMTZoLTI0di0yNGg0MHY4em0wLTI0aC00MHYtMjRoMjRjOC44IDAgMTYgNy4yIDE2IDE2djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAwLjMgMjQ4YzEyLjQtMTguNyAxNS4xLTM3LjMgMTUuNy01Ni0uNS0xOC43LTMuMy0zNy4zLTE1LjctNTYtOC0xMi0yNS4xLTExLjQtMzIuNyAwLTEyLjQgMTguNy0xNS4xIDM3LjMtMTUuNyA1NiAuNSAxOC43IDMuMyAzNy4zIDE1LjcgNTYgOC4xIDEyIDI1LjIgMTEuNCAzMi43IDB6bTEyOCAwYzEyLjQtMTguNyAxNS4xLTM3LjMgMTUuNy01Ni0uNS0xOC43LTMuMy0zNy4zLTE1LjctNTYtOC0xMi0yNS4xLTExLjQtMzIuNyAwLTEyLjQgMTguNy0xNS4xIDM3LjMtMTUuNyA1NiAuNSAxOC43IDMuMyAzNy4zIDE1LjcgNTYgOC4xIDEyIDI1LjIgMTEuNCAzMi43IDB6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMTA1LjYtMTUxLjRjLTI1LjkgOC4zLTY0LjQgMTMuMS0xMDUuNiAxMy4xcy03OS42LTQuOC0xMDUuNi0xMy4xYy05LjktMy4xLTE5LjQgNS4zLTE3LjcgMTUuMyA3LjkgNDcuMiA3MS4zIDgwIDEyMy4zIDgwczExNS4zLTMyLjkgMTIzLjMtODBjMS42LTkuOC03LjctMTguNC0xNy43LTE1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5CZWFtU3dlYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQwIDE2MGMyOS41IDAgNTMuMy0yNi4zIDUzLjMtNTguNyAwLTI1LTMxLjctNzUuNS00Ni4yLTk3LjMtMy42LTUuMy0xMC43LTUuMy0xNC4yIDAtMTQuNSAyMS44LTQ2LjIgNzIuMy00Ni4yIDk3LjMgMCAzMi40IDIzLjggNTguNyA1My4zIDU4Ljd6TTI0OCA0MDBjNTEuOSAwIDExNS4zLTMyLjkgMTIzLjMtODAgMS43LTkuOS03LjctMTguNS0xNy43LTE1LjMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOC0zLjEtMTkuNCA1LjMtMTcuNyAxNS4zIDggNDcuMSA3MS40IDgwIDEyMy4zIDgwem0xMzAuMy0xNjguM2MzLjYtMS4xIDYtNC41IDUuNy04LjMtMy4zLTQyLjEtMzIuMi03MS40LTU2LTcxLjRzLTUyLjcgMjkuMy01NiA3MS40Yy0uMyAzLjcgMi4xIDcuMiA1LjcgOC4zIDMuNSAxLjEgNy40LS41IDkuMy0zLjdsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy42IDYuMiA0LjYgOS4zIDMuN3ptMTA1LjMtNTIuOWMtMjQuNiAxNS43LTQ2IDEyLjktNDYuNCAxMi45IDYuOSAyMC4yIDEwLjggNDEuOCAxMC44IDY0LjMgMCAxMTAuMy04OS43IDIwMC0yMDAgMjAwUzQ4IDM2Ni4zIDQ4IDI1NiAxMzcuNyA1NiAyNDggNTZjMzkuOCAwIDc2LjggMTEuOCAxMDggMzEuOSAxLjctOS41IDYuMy0yNC4xIDE3LjItNDUuN0MzMzYuNCAyMC42IDI5My43IDggMjQ4IDggMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OGMwLTI3LTQuNC01Mi45LTEyLjQtNzcuMnpNMTY4IDE4OS40YzEyLjMgMCAyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjcgNi4yIDQuNyA5LjMgMy43IDMuNi0xLjEgNi00LjUgNS43LTguMy0zLjMtNDIuMS0zMi4yLTcxLjQtNTYtNzEuNHMtNTIuNyAyOS4zLTU2IDcxLjRjLS4zIDMuNyAyLjEgNy4yIDUuNyA4LjMgMy41IDEuMSA3LjQtLjUgOS4zLTMuN2w5LjUtMTdjNy43LTEzLjggMTkuMi0yMS42IDMxLjUtMjEuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR3JpbkJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0xMDUuNi0xNTEuNGMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOC0zLjEtMTkuNCA1LjMtMTcuNyAxNS4zIDcuOSA0Ny4xIDcxLjMgODAgMTIzLjMgODBzMTE1LjMtMzIuOSAxMjMuMy04MGMxLjYtOS44LTcuNy0xOC40LTE3LjctMTUuM3ptLTIzNS45LTcyLjljMy41IDEuMSA3LjQtLjUgOS4zLTMuN2w5LjUtMTdjNy43LTEzLjcgMTkuMi0yMS42IDMxLjUtMjEuNnMyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjcgNi4yIDQuNyA5LjMgMy43IDMuNi0xLjEgNi00LjUgNS43LTguMy0zLjMtNDIuMS0zMi4yLTcxLjQtNTYtNzEuNHMtNTIuNyAyOS4zLTU2IDcxLjRjLS4zIDMuNyAyLjEgNy4yIDUuNyA4LjN6bTE2MCAwYzMuNSAxLjEgNy40LS41IDkuMy0zLjdsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy43IDYuMiA0LjcgOS4zIDMuNyAzLjYtMS4xIDYtNC41IDUuNy04LjMtMy4zLTQyLjEtMzIuMi03MS40LTU2LTcxLjRzLTUyLjcgMjkuMy01NiA3MS40Yy0uMyAzLjcgMi4xIDcuMiA1LjcgOC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmluSGVhcnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1My42IDMwNC42Yy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS44LTMuMS0xOS40IDUuMy0xNy43IDE1LjMgNy45IDQ3LjIgNzEuMyA4MCAxMjMuMyA4MHMxMTUuMy0zMi45IDEyMy4zLTgwYzEuNi05LjgtNy43LTE4LjQtMTcuNy0xNS4zem0tMTUyLjgtNDguOWM0LjUgMS4yIDkuMi0xLjUgMTAuNS02bDE5LjQtNjkuOWM1LjYtMjAuMy03LjQtNDEuMS0yOC44LTQ0LjUtMTguNi0zLTM2LjQgOS44LTQxLjUgMjcuOWwtMiA3LjEtNy4xLTEuOWMtMTguMi00LjctMzguMiA0LjMtNDQuOSAyMi03LjcgMjAuMiAzLjggNDEuOSAyNC4yIDQ3LjJsNzAuMiAxOC4xem0xODguOC02NS4zYy02LjctMTcuNi0yNi43LTI2LjctNDQuOS0yMmwtNy4xIDEuOS0yLTcuMWMtNS0xOC4xLTIyLjgtMzAuOS00MS41LTI3LjktMjEuNCAzLjQtMzQuNCAyNC4yLTI4LjggNDQuNWwxOS40IDY5LjljMS4yIDQuNSA1LjkgNy4yIDEwLjUgNmw3MC4yLTE4LjJjMjAuNC01LjMgMzEuOS0yNi45IDI0LjItNDcuMXpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmluU3F1aW50VGVhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE3LjEgMzg0LjFjLTI1LjggMy43LTg0IDEzLjctMTAwLjkgMzAuNi0yMS45IDIxLjktMjEuNSA1Ny45LjkgODAuM3M1OC4zIDIyLjggODAuMy45QzExNC4zIDQ3OSAxMjQuMyA0MjAuOCAxMjggMzk1Yy44LTYuNC00LjYtMTEuOC0xMC45LTEwLjl6bS00MS4yLTQxLjdDNDAuMyAyNjggNTMgMTc2LjEgMTE0LjYgMTE0LjYgMTUyLjQgNzYuOCAyMDIuNiA1NiAyNTYgNTZjMzYuMiAwIDcwLjggOS44IDEwMS4yIDI3LjcgMy44LTIwLjMgOC0zNi4xIDEyLTQ4LjNDMzMzLjggMTcuMiAyOTQuOSA4IDI1NiA4IDE5Mi41IDggMTI5LjEgMzIuMiA4MC42IDgwLjZjLTc0LjEgNzQuMS05MS4zIDE4My40LTUyIDI3NCAxMi4yLTQuMSAyNy43LTguMyA0Ny4zLTEyLjJ6bTM1Mi4zLTE4Ny42YzQ1IDc2LjYgMzQuOSAxNzYuOS0zMC44IDI0Mi42LTM3LjggMzcuOC04OCA1OC42LTE0MS40IDU4LjYtMzAuNSAwLTU5LjgtNy04Ni40LTE5LjgtMy45IDE5LjUtOCAzNS0xMi4yIDQ3LjIgMzEuNCAxMy42IDY1IDIwLjYgOTguNyAyMC42IDYzLjUgMCAxMjYuOS0yNC4yIDE3NS40LTcyLjYgNzguMS03OC4xIDkzLjEtMTk1LjQgNDUuMi0yODguNi0xMi4zIDQtMjguMiA4LjEtNDguNSAxMnptLTMzLjMtMjYuOWMyNS44LTMuNyA4NC0xMy43IDEwMC45LTMwLjYgMjEuOS0yMS45IDIxLjUtNTcuOS0uOS04MC4zcy01OC4zLTIyLjgtODAuMy0uOUMzOTcuNyAzMyAzODcuNyA5MS4yIDM4NCAxMTdjLS44IDYuNCA0LjYgMTEuOCAxMC45IDEwLjl6bS0xODcgMTA4LjNjLTMtMy03LjItNC4yLTExLjQtMy4yTDEwNiAyNTUuN2MtNS43IDEuNC05LjUgNi43LTkuMSAxMi42LjUgNS44IDUuMSAxMC41IDEwLjkgMTFsNTIuMyA0LjggNC44IDUyLjNjLjUgNS44IDUuMiAxMC40IDExIDEwLjloLjljNS41IDAgMTAuMy0zLjcgMTEuNy05LjFsMjIuNi05MC41YzEtNC4yLS4yLTguNS0zLjItMTEuNXptMzkuNy0yNS4xbDkwLjUtMjIuNmM1LjctMS40IDkuNS02LjcgOS4xLTEyLjYtLjUtNS44LTUuMS0xMC41LTEwLjktMTFsLTUyLjMtNC44LTQuOC01Mi4zYy0uNS01LjgtNS4yLTEwLjQtMTEtMTAuOS01LjYtLjEtMTEuMiAzLjQtMTIuNiA5LjFMMjMzIDE5Ni41Yy0xIDQuMS4yIDguNCAzLjIgMTEuNCA1IDUgMTEuMyAzLjIgMTEuNCAzLjJ6bTUyIDg4LjVjLTI5LjEgMjkuMS01OS43IDUyLjktODMuOSA2NS40LTkuMiA0LjgtMTAgMTcuNS0xLjcgMjMuNCAzOC45IDI3LjcgMTA3IDYuMiAxNDMuNy0zMC42UzQxNiAyNTMgMzg4LjMgMjE0LjFjLTUuOC04LjItMTguNS03LjYtMjMuNCAxLjctMTIuMyAyNC4yLTM2LjIgNTQuNy02NS4zIDgzLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5TcXVpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0xMDUuNi0xNTEuNGMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOS0zLjEtMTkuNCA1LjQtMTcuNyAxNS4zIDcuOSA0Ny4xIDcxLjMgODAgMTIzLjMgODBzMTE1LjMtMzIuOSAxMjMuMy04MGMxLjYtOS44LTcuNy0xOC40LTE3LjctMTUuM3ptLTIzNC43LTQwLjhjMy42IDQuMiA5LjkgNS43IDE1LjMgMi41bDgwLTQ4YzMuNi0yLjIgNS44LTYuMSA1LjgtMTAuM3MtMi4yLTguMS01LjgtMTAuM2wtODAtNDhjLTUuMS0zLTExLjQtMS45LTE1LjMgMi41LTMuOCA0LjUtMy44IDExLS4xIDE1LjVsMzMuNiA0MC4zLTMzLjYgNDAuM2MtMy44IDQuNS0zLjcgMTEuMS4xIDE1LjV6bTI0Mi45IDIuNWM1LjQgMy4yIDExLjcgMS43IDE1LjMtMi41IDMuOC00LjUgMy44LTExIC4xLTE1LjVMMzQzLjYgMjA4bDMzLjYtNDAuM2MzLjgtNC41IDMuNy0xMS0uMS0xNS41LTMuOC00LjQtMTAuMi01LjQtMTUuMy0yLjVsLTgwIDQ4Yy0zLjYgMi4yLTUuOCA2LjEtNS44IDEwLjNzMi4yIDguMSA1LjggMTAuM2w4MCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR3JpblN0YXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMTA1LjYtMTUxLjRjLTI1LjkgOC4zLTY0LjQgMTMuMS0xMDUuNiAxMy4xcy03OS42LTQuOC0xMDUuNi0xMy4xYy05LjgtMy4xLTE5LjQgNS4zLTE3LjcgMTUuMyA3LjkgNDcuMiA3MS4zIDgwIDEyMy4zIDgwczExNS4zLTMyLjkgMTIzLjMtODBjMS42LTkuOC03LjctMTguNC0xNy43LTE1LjN6bS0yMjcuOS01Ny41Yy0xIDYuMiA1LjQgMTEgMTEgNy45bDMxLjMtMTYuMyAzMS4zIDE2LjNjNS42IDMuMSAxMi0xLjcgMTEtNy45bC02LTM0LjkgMjUuNC0yNC42YzQuNS00LjUgMS45LTEyLjItNC4zLTEzLjJsLTM0LjktNS0xNS41LTMxLjZjLTIuOS01LjgtMTEtNS44LTEzLjkgMGwtMTUuNSAzMS42LTM0LjkgNWMtNi4yLjktOC45IDguNi00LjMgMTMuMmwyNS40IDI0LjYtNi4xIDM0Ljl6bTI1OS43LTcyLjdsLTM0LjktNS0xNS41LTMxLjZjLTIuOS01LjgtMTEtNS44LTEzLjkgMGwtMTUuNSAzMS42LTM0LjkgNWMtNi4yLjktOC45IDguNi00LjMgMTMuMmwyNS40IDI0LjYtNiAzNC45Yy0xIDYuMiA1LjQgMTEgMTEgNy45bDMxLjMtMTYuMyAzMS4zIDE2LjNjNS42IDMuMSAxMi0xLjcgMTEtNy45bC02LTM0LjkgMjUuNC0yNC42YzQuNS00LjYgMS44LTEyLjItNC40LTEzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5UZWFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTcuMSAyNTYuMWMtMjUuOCAzLjctODQgMTMuNy0xMDAuOSAzMC42LTIxLjkgMjEuOS0yMS41IDU3LjkuOSA4MC4zczU4LjMgMjIuOCA4MC4zLjlDMTE0LjMgMzUxIDEyNC4zIDI5Mi44IDEyOCAyNjdjLjgtNi40LTQuNi0xMS44LTEwLjktMTAuOXptNTA2LjcgMzAuNmMtMTYuOS0xNi45LTc1LjEtMjYuOS0xMDAuOS0zMC42LTYuMy0uOS0xMS43IDQuNS0xMC44IDEwLjggMy43IDI1LjggMTMuNyA4NCAzMC42IDEwMC45IDIxLjkgMjEuOSA1Ny45IDIxLjUgODAuMy0uOSAyMi4zLTIyLjMgMjIuNy01OC4zLjgtODAuMnptLTEyNi42IDYxLjdDNDYzLjggNDEyLjMgMzk2LjkgNDU2IDMyMCA0NTZjLTc2LjkgMC0xNDMuOC00My43LTE3Ny4yLTEwNy42LTEyLjUgMzcuNC0yNS4yIDQzLjktMjguMyA0Ni41QzE1OS4xIDQ2MC43IDIzNC41IDUwNCAzMjAgNTA0czE2MC45LTQzLjMgMjA1LjUtMTA5LjFjLTMuMi0yLjctMTUuOS05LjItMjguMy00Ni41ek0xMjIuNyAyMjQuNUMxMzcuOSAxMjkuMiAyMjAuNSA1NiAzMjAgNTZjOTkuNSAwIDE4Mi4xIDczLjIgMTk3LjMgMTY4LjUgMi4xLS4yIDUuMi0yLjQgNDkuNSA3QzU1NC40IDEwNiA0NDguNyA4IDMyMCA4Uzg1LjYgMTA2IDczLjIgMjMxLjRjNDQuNS05LjQgNDcuMS03LjIgNDkuNS02Ljl6TTMyMCA0MDBjNTEuOSAwIDExNS4zLTMyLjkgMTIzLjMtODAgMS43LTkuOS03LjctMTguNS0xNy43LTE1LjMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOC0zLjEtMTkuNCA1LjMtMTcuNyAxNS4zIDggNDcuMSA3MS40IDgwIDEyMy4zIDgwem0xMzAuMy0xNjguM2MzLjYtMS4xIDYtNC41IDUuNy04LjMtMy4zLTQyLjEtMzIuMi03MS40LTU2LTcxLjRzLTUyLjcgMjkuMy01NiA3MS40Yy0uMyAzLjcgMi4xIDcuMiA1LjcgOC4zIDMuNSAxLjEgNy40LS41IDkuMy0zLjdsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy42IDYuMiA0LjYgOS4zIDMuN3pNMjQwIDE4OS40YzEyLjMgMCAyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjcgNi4yIDQuNyA5LjMgMy43IDMuNi0xLjEgNi00LjUgNS43LTguMy0zLjMtNDIuMS0zMi4yLTcxLjQtNTYtNzEuNHMtNTIuNyAyOS4zLTU2IDcxLjRjLS4zIDMuNyAyLjEgNy4yIDUuNyA4LjMgMy41IDEuMSA3LjQtLjUgOS4zLTMuN2w5LjUtMTdjNy43LTEzLjggMTkuMi0yMS42IDMxLjUtMjEuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR3JpblRvbmd1ZVNxdWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em02NCA0MDBjMCAzNS42LTI5LjEgNjQuNS02NC45IDY0LTM1LjEtLjUtNjMuMS0yOS44LTYzLjEtNjV2LTQyLjhsMTcuNy04LjhjMTUtNy41IDMxLjUgMS43IDM0LjkgMTYuNWwyLjggMTIuMWMyLjEgOS4yIDE1LjIgOS4yIDE3LjMgMGwyLjgtMTIuMWMzLjQtMTQuOCAxOS44LTI0LjEgMzQuOS0xNi41bDE3LjcgOC44VjQwOHptMjguMiAyNS4zYzIuMi04LjEgMy44LTE2LjUgMy44LTI1LjN2LTQzLjVjMTQuMi0xMi40IDI0LjQtMjcuNSAyNy4zLTQ0LjUgMS43LTkuOS03LjctMTguNS0xNy43LTE1LjMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOS0zLjEtMTkuNCA1LjMtMTcuNyAxNS4zIDIuOSAxNyAxMy4xIDMyLjEgMjcuMyA0NC41VjQwOGMwIDguOCAxLjYgMTcuMiAzLjggMjUuM0M5MS44IDM5OS45IDQ4IDMzMyA0OCAyNTZjMC0xMTAuMyA4OS43LTIwMCAyMDAtMjAwczIwMCA4OS43IDIwMCAyMDBjMCA3Ny00My44IDE0My45LTEwNy44IDE3Ny4zem0zNi45LTI4MS4xYy0zLjgtNC40LTEwLjMtNS41LTE1LjMtMi41bC04MCA0OGMtMy42IDIuMi01LjggNi4xLTUuOCAxMC4zczIuMiA4LjEgNS44IDEwLjNsODAgNDhjNS40IDMuMiAxMS43IDEuNyAxNS4zLTIuNSAzLjgtNC41IDMuOC0xMSAuMS0xNS41TDM0My42IDIwOGwzMy42LTQwLjNjMy44LTQuNSAzLjctMTEuMS0uMS0xNS41em0tMTYyLjkgNDUuNWwtODAtNDhjLTUtMy0xMS40LTItMTUuMyAyLjUtMy44IDQuNS0zLjggMTEtLjEgMTUuNWwzMy42IDQwLjMtMzMuNiA0MC4zYy0zLjggNC41LTMuNyAxMSAuMSAxNS41IDMuNiA0LjIgOS45IDUuNyAxNS4zIDIuNWw4MC00OGMzLjYtMi4yIDUuOC02LjEgNS44LTEwLjNzLTIuMi04LjEtNS44LTEwLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5Ub25ndWVXaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MiAxODBjLTI1LjcgMC01NS45IDE2LjktNTkuOCA0Mi4xLS44IDUgMS43IDEwIDYuMSAxMi40IDQuNCAyLjQgOS45IDEuOCAxMy43LTEuNmw5LjUtOC41YzE0LjgtMTMuMiA0Ni4yLTEzLjIgNjEgMGw5LjUgOC41YzIuNSAyLjIgOCA0LjcgMTMuNyAxLjYgNC40LTIuNCA2LjktNy40IDYuMS0xMi40LTMuOS0yNS4yLTM0LjEtNDIuMS01OS44LTQyLjF6bTE3Ni01MmMtNDQuMiAwLTgwIDM1LjgtODAgODBzMzUuOCA4MCA4MCA4MCA4MC0zNS44IDgwLTgwLTM1LjgtODAtODAtODB6bTAgMTI4Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptMC03MmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTY0IDQwMGMwIDM1LjYtMjkuMSA2NC41LTY0LjkgNjQtMzUuMS0uNS02My4xLTI5LjgtNjMuMS02NXYtNDIuOGwxNy43LTguOGMxNS03LjUgMzEuNSAxLjcgMzQuOSAxNi41bDIuOCAxMi4xYzIuMSA5LjIgMTUuMiA5LjIgMTcuMyAwbDIuOC0xMi4xYzMuNC0xNC44IDE5LjgtMjQuMSAzNC45LTE2LjVsMTcuNyA4LjhWNDA4em0yOC4yIDI1LjNjMi4yLTguMSAzLjgtMTYuNSAzLjgtMjUuM3YtNDMuNWMxNC4yLTEyLjQgMjQuNC0yNy41IDI3LjMtNDQuNSAxLjctOS45LTcuNy0xOC41LTE3LjctMTUuMy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS45LTMuMS0xOS40IDUuMy0xNy43IDE1LjMgMi45IDE3IDEzLjEgMzIuMSAyNy4zIDQ0LjVWNDA4YzAgOC44IDEuNiAxNy4yIDMuOCAyNS4zQzkxLjggMzk5LjkgNDggMzMzIDQ4IDI1NmMwLTExMC4zIDg5LjctMjAwIDIwMC0yMDBzMjAwIDg5LjcgMjAwIDIwMGMwIDc3LTQzLjggMTQzLjktMTA3LjggMTc3LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5Ub25ndWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptNjQgNDAwYzAgMzUuNi0yOS4xIDY0LjUtNjQuOSA2NC0zNS4xLS41LTYzLjEtMjkuOC02My4xLTY1di00Mi44bDE3LjctOC44YzE1LTcuNSAzMS41IDEuNyAzNC45IDE2LjVsMi44IDEyLjFjMi4xIDkuMiAxNS4yIDkuMiAxNy4zIDBsMi44LTEyLjFjMy40LTE0LjggMTkuOC0yNC4xIDM0LjktMTYuNWwxNy43IDguOFY0MDh6bTI4LjIgMjUuM2MyLjItOC4xIDMuOC0xNi41IDMuOC0yNS4zdi00My41YzE0LjItMTIuNCAyNC40LTI3LjUgMjcuMy00NC41IDEuNy05LjktNy43LTE4LjUtMTcuNy0xNS4zLTI1LjkgOC4zLTY0LjQgMTMuMS0xMDUuNiAxMy4xcy03OS42LTQuOC0xMDUuNi0xMy4xYy05LjktMy4xLTE5LjQgNS4zLTE3LjcgMTUuMyAyLjkgMTcgMTMuMSAzMi4xIDI3LjMgNDQuNVY0MDhjMCA4LjggMS42IDE3LjIgMy44IDI1LjNDOTEuOCAzOTkuOSA0OCAzMzMgNDggMjU2YzAtMTEwLjMgODkuNy0yMDAgMjAwLTIwMHMyMDAgODkuNyAyMDAgMjAwYzAgNzctNDMuOCAxNDMuOS0xMDcuOCAxNzcuM3pNMTY4IDE3NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bTE2MCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR3JpbldpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI4IDE4MGMtMjUuNjkgMC01NS44OCAxNi45Mi01OS44NiA0Mi4xMi0xLjc1IDExLjIyIDExLjUgMTguMjQgMTkuODMgMTAuODRsOS41NS04LjQ4YzE0LjgxLTEzLjE5IDQ2LjE2LTEzLjE5IDYwLjk3IDBsOS41NSA4LjQ4YzguNDggNy40MyAyMS41Ni4yNSAxOS44My0xMC44NEMzODMuODggMTk2LjkyIDM1My42OSAxODAgMzI4IDE4MHptLTE2MCA2MGMxNy42NyAwIDMyLTE0LjMzIDMyLTMycy0xNC4zMy0zMi0zMi0zMi0zMiAxNC4zMy0zMiAzMiAxNC4zMyAzMiAzMiAzMnptMTg1LjU1IDY0LjY0Yy0yNS45MyA4LjMtNjQuNCAxMy4wNi0xMDUuNTUgMTMuMDZzLTc5LjYyLTQuNzUtMTA1LjU1LTEzLjA2Yy05Ljk0LTMuMTMtMTkuNCA1LjM3LTE3LjcxIDE1LjM0QzEzMi42NyAzNjcuMTMgMTk2LjA2IDQwMCAyNDggNDAwczExNS4zMy0zMi44NyAxMjMuMjYtODAuMDJjMS42OC05Ljg5LTcuNjctMTguNDgtMTcuNzEtMTUuMzR6TTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMjggMC0yMDAtODkuNzItMjAwLTIwMFMxMzcuNzIgNTYgMjQ4IDU2czIwMCA4OS43MiAyMDAgMjAwLTg5LjcyIDIwMC0yMDAgMjAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMTA1LjYtMTUxLjRjLTI1LjkgOC4zLTY0LjQgMTMuMS0xMDUuNiAxMy4xcy03OS42LTQuOC0xMDUuNi0xMy4xYy05LjktMy4xLTE5LjQgNS40LTE3LjcgMTUuMyA3LjkgNDcuMSA3MS4zIDgwIDEyMy4zIDgwczExNS4zLTMyLjkgMTIzLjMtODBjMS42LTkuOC03LjctMTguNC0xNy43LTE1LjN6TTE2OCAyNDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0xNjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRMaXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTU2LjY4NiAyOTAuNTQyTDQxMC4zMjggNjQuODI5QzM5Ny4wMDEgNDQuMjcyIDM3NC40MTcgMzIgMzQ5LjkxNyAzMkg1NkMyNS4xMjEgMzIgMCA1Ny4xMjIgMCA4OHY4YzAgNDQuMTEyIDM1Ljg4OCA4MCA4MCA4MGgxOTYuMDQybC0xOC4zMzMgNDhIMTQ0Yy00OC41MjMgMC04OCAzOS40NzctODggODggMCAzMC44NzkgMjUuMTIxIDU2IDU2IDU2aDEzMS41NTJjMi45ODcgMCA1LjkxNC41NDkgOC42OTcgMS42MzFMMzUyIDQwOC40MThWNDgwaDIyNFYzNTUuODI5YzAtMjMuMjI1LTYuNjc5LTQ1LjgwMS0xOS4zMTQtNjUuMjg3ek01MjggNDMySDQwMHYtMjMuNTgyYzAtMTkuOTQ4LTEyLjAxNC0zNy41MDgtMzAuNjA0LTQ0LjczNmwtOTkuNzUxLTM4Ljc4OEE3MS43MzMgNzEuNzMzIDAgMCAwIDI0My41NTIgMzIwSDExMmMtNC40MTEgMC04LTMuNTg5LTgtOCAwLTIyLjA1NiAxNy45NDQtNDAgNDAtNDBoMTEzLjcwOWMxOS43NjcgMCAzNy43ODYtMTIuNDA3IDQ0Ljg0LTMwLjg3M2wyNC41NTItNjQuMjgxYzguOTk2LTIzLjU1My04LjQyOC00OC44NDYtMzMuNjMtNDguODQ2SDgwYy0xNy42NDUgMC0zMi0xNC4zNTUtMzItMzJ2LThjMC00LjQxMSAzLjU4OS04IDgtOGgyOTMuOTE3YzguMTY2IDAgMTUuNjkzIDQuMDkgMjAuMTM3IDEwLjk0MmwxNDYuMzU4IDIyNS43MTVBNzEuODQgNzEuODQgMCAwIDEgNTI4IDM1NS44MjlWNDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kUGFwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyLjU3IDExMi42NDF2LTEwLjgyNWMwLTQzLjYxMi00MC41Mi03Ni42OTEtODMuMDM5LTY1LjU0Ni0yNS42MjktNDkuNS05NC4wOS00Ny40NS0xMTcuOTgyLjc0N0MxMzAuMjY5IDI2LjQ1NiA4OS4xNDQgNTcuOTQ1IDg5LjE0NCAxMDJ2MTI2LjEzYy0xOS45NTMtNy40MjctNDMuMzA4LTUuMDY4LTYyLjA4MyA4Ljg3MS0yOS4zNTUgMjEuNzk2LTM1Ljc5NCA2My4zMzMtMTQuNTUgOTMuMTUzTDEzMi40OCA0OTguNTY5YTMyIDMyIDAgMCAwIDI2LjA2MiAxMy40MzJoMjIyLjg5N2MxNC45MDQgMCAyNy44MzUtMTAuMjg5IDMxLjE4Mi0yNC44MTNsMzAuMTg0LTEzMC45NThBMjAzLjYzNyAyMDMuNjM3IDAgMCAwIDQ0OCAzMTAuNTY0VjE3OWMwLTQwLjYyLTM1LjUyMy03MS45OTItNzUuNDMtNjYuMzU5em0yNy40MjcgMTk3LjkyMmMwIDExLjczMS0xLjMzNCAyMy40NjktMy45NjUgMzQuODg2TDM2OC43MDcgNDY0aC0yMDEuOTJMNTEuNTkxIDMwMi4zMDNjLTE0LjQzOS0yMC4yNyAxNS4wMjMtNDIuNzc2IDI5LjM5NC0yMi42MDVsMjcuMTI4IDM4LjA3OWM4Ljk5NSAxMi42MjYgMjkuMDMxIDYuMjg3IDI5LjAzMS05LjI4M1YxMDJjMC0yNS42NDUgMzYuNTcxLTI0LjgxIDM2LjU3MS42OTFWMjU2YzAgOC44MzcgNy4xNjMgMTYgMTYgMTZoNi44NTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNlY2N2MwLTI1LjY2MyAzNi41NzEtMjQuODEgMzYuNTcxLjY5MVYyNTZjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmg2Ljg1NmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2VjEwMS4xMjVjMC0yNS42NzIgMzYuNTctMjQuODEgMzYuNTcuNjkxVjI1NmMwIDguODM3IDcuMTYzIDE2IDE2IDE2aDYuODU3YzguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTc2LjMwOWMwLTI2LjI0MiAzNi41Ny0yNS42NCAzNi41Ny0uNjkxdjEzMS41NjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQZWFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjIuMTQ2IDE5MS45NzZjLTEzLjcxLTIxLjY0OS0zOC43NjEtMzQuMDE2LTY1LjAwNi0zMC4zNDFWNzRjMC00MC44MDQtMzIuODExLTc0LTczLjE0MS03NC00MC4zMyAwLTczLjE0IDMzLjE5Ni03My4xNCA3NEwxNjAgMTY4bC0xOC42NzktNzguODVDMTI2LjU3OCA1MC44NDMgODMuODUgMzIuMTEgNDYuMjA5IDQ3LjIwOCA4LjczNSA2Mi4yMzgtOS41NzEgMTA0Ljk2MyA1LjAwOCAxNDIuODVsNTUuNzU3IDE0NC45MjdjLTMwLjU1NyAyNC45NTYtNDMuOTk0IDU3LjgwOS0yNC43MzMgOTIuMjE4bDU0Ljg1MyA5Ny45OTlDMTAyLjYyNSA0OTguOTcgMTI0LjczIDUxMiAxNDguNTc1IDUxMmgyMDUuNzAyYzMwLjc0NCAwIDU3LjU1OC0yMS40NCA2NC41NTUtNTEuNzk3bDI3LjQyNy0xMTguOTk5YTY3LjgwMSA2Ny44MDEgMCAwIDAgMS43MjktMTUuMjAzTDQ0OCAyNTZjMC00NC45NTYtNDMuMjYzLTc3LjM0My04NS44NTQtNjQuMDI0ek0zOTkuOTg3IDMyNmMwIDEuNDg4LS4xNjkgMi45NzctLjUwMiA0LjQyM2wtMjcuNDI3IDExOS4wMDFjLTEuOTc4IDguNTgyLTkuMjkgMTQuNTc2LTE3Ljc4MiAxNC41NzZIMTQ4LjU3NWMtNi40ODYgMC0xMi41NDItMy42MjEtMTUuODA1LTkuNDQ5bC01NC44NTQtOThjLTQuNTU3LTguMTQxLTIuNjE5LTE4LjY2OCA0LjUwOC0yNC40ODhsMjYuNjQ3LTIxLjc2NGExNiAxNiAwIDAgMCA0LjgxMi0xOC4xMzlsLTY0LjA5LTE2Ni41NDlDMzcuMjI2IDkyLjk1NiA4NC4zNyA3NC44MzcgOTYuNTEgMTA2LjM4OWw1OS43ODQgMTU1LjM1N0ExNiAxNiAwIDAgMCAxNzEuMjI3IDI3MmgxMS42MzJjOC44MzcgMCAxNi03LjE2MyAxNi0xNlY3NGMwLTM0LjM3NSA1MC4yODEtMzQuNDMgNTAuMjgxIDB2MTgyYzAgOC44MzcgNy4xNjMgMTYgMTYgMTZoNi44NTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtMjhjMC0yNS4xMjIgMzYuNTY3LTI1LjE1OSAzNi41NjcgMHYyOGMwIDguODM3IDcuMTYzIDE2IDE2IDE2aDYuODU2YzguODM3IDAgMTYtNy4xNjMgMTYtMTYgMC0yNS4xMiAzNi41NjctMjUuMTYgMzYuNTY3IDB2NzB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQb2ludERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg4LjggNTEyYzQ1LjYxNiAwIDgzLjItMzcuNzY1IDgzLjItODMuMnYtMzUuNjQ3YTkzLjE0OCA5My4xNDggMCAwIDAgMjIuMDY0LTcuOTI5YzIyLjAwNiAyLjUwNyA0NC45NzgtMy41MDMgNjIuNzkxLTE1Ljk4NUM0MDkuMzQyIDM2OC4xIDQ0OCAzMzEuODQxIDQ0OCAyNjkuMjk5VjI0OGMwLTYwLjA2My00MC05OC41MTItNDAtMTI3LjJ2LTIuNjc5YzQuOTUyLTUuNzQ3IDgtMTMuNTM2IDgtMjIuMTJWMzJjMC0xNy42NzMtMTIuODk0LTMyLTI4LjgtMzJIMTU2LjhDMTQwLjg5NCAwIDEyOCAxNC4zMjcgMTI4IDMydjY0YzAgOC41ODQgMy4wNDggMTYuMzczIDggMjIuMTJ2Mi42NzljMCA2Ljk2NC02LjE5MyAxNC44NjItMjMuNjY4IDMwLjE4M2wtLjE0OC4xMjktLjE0Ni4xMzFjLTkuOTM3IDguODU2LTIwLjg0MSAxOC4xMTYtMzMuMjUzIDI1Ljg1MUM0OC41MzcgMTk1Ljc5OCAwIDIwNy40ODYgMCAyNTIuOGMwIDU2LjkyOCAzNS4yODYgOTIgODMuMiA5MiA4LjAyNiAwIDE1LjQ4OS0uODE0IDIyLjQtMi4xNzZWNDI4LjhjMCA0NS4wOTkgMzguMTAxIDgzLjIgODMuMiA4My4yem0wLTQ4Yy0xOC43IDAtMzUuMi0xNi43NzUtMzUuMi0zNS4yVjI3MC40Yy0xNy4zMjUgMC0zNS4yIDI2LjQtNzAuNCAyNi40LTI2LjQgMC0zNS4yLTIwLjYyNS0zNS4yLTQ0IDAtOC43OTQgMzIuNzEyLTIwLjQ0NSA1Ni4xLTM0LjkyNiAxNC41NzUtOS4wNzQgMjcuMjI1LTE5LjUyNCAzOS44NzUtMzAuNzk5IDE4LjM3NC0xNi4xMDkgMzYuNjMzLTMzLjgzNiAzOS41OTYtNTkuMDc1aDE3Ni43NTJDMzY0LjA4NyAxNzAuNzkgNDAwIDIwMi41MDkgNDAwIDI0OHYyMS4yOTljMCA0MC41MjQtMjIuMTk3IDU3LjEyNC02MS4zMjUgNTAuNjAxLTguMDAxIDE0LjYxMi0zMy45NzkgMjQuMTUxLTUzLjYyNSAxMi45MjUtMTguMjI1IDE5LjM2NS00Ni4zODEgMTcuNzg3LTYxLjA1IDQuOTVWNDI4LjhjMCAxOC45NzUtMTYuMjI1IDM1LjItMzUuMiAzNS4yek0zMjggNjRjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0czI0IDEwLjc0NSAyNCAyNC0xMC43NDUgMjQtMjQgMjQtMjQtMTAuNzQ1LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kUG9pbnRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjIwLjhDMCAyNjYuNDE2IDM3Ljc2NSAzMDQgODMuMiAzMDRoMzUuNjQ3YTkzLjE0OCA5My4xNDggMCAwIDAgNy45MjkgMjIuMDY0Yy0yLjUwNyAyMi4wMDYgMy41MDMgNDQuOTc4IDE1Ljk4NSA2Mi43OTFDMTQzLjkgNDQxLjM0MiAxODAuMTU5IDQ4MCAyNDIuNzAxIDQ4MEgyNjRjNjAuMDYzIDAgOTguNTEyLTQwIDEyNy4yLTQwaDIuNjc5YzUuNzQ3IDQuOTUyIDEzLjUzNiA4IDIyLjEyIDhoNjRjMTcuNjczIDAgMzItMTIuODk0IDMyLTI4LjhWMTg4LjhjMC0xNS45MDYtMTQuMzI3LTI4LjgtMzItMjguOGgtNjRjLTguNTg0IDAtMTYuMzczIDMuMDQ4LTIyLjEyIDhIMzkxLjJjLTYuOTY0IDAtMTQuODYyLTYuMTkzLTMwLjE4My0yMy42NjhsLS4xMjktLjE0OC0uMTMxLS4xNDZjLTguODU2LTkuOTM3LTE4LjExNi0yMC44NDEtMjUuODUxLTMzLjI1M0MzMTYuMjAyIDgwLjUzNyAzMDQuNTE0IDMyIDI1OS4yIDMyYy01Ni45MjggMC05MiAzNS4yODYtOTIgODMuMiAwIDguMDI2LjgxNCAxNS40ODkgMi4xNzYgMjIuNEg4My4yQzM4LjEwMSAxMzcuNiAwIDE3NS43MDEgMCAyMjAuOHptNDggMGMwLTE4LjcgMTYuNzc1LTM1LjIgMzUuMi0zNS4yaDE1OC40YzAtMTcuMzI1LTI2LjQtMzUuMi0yNi40LTcwLjQgMC0yNi40IDIwLjYyNS0zNS4yIDQ0LTM1LjIgOC43OTQgMCAyMC40NDUgMzIuNzEyIDM0LjkyNiA1Ni4xIDkuMDc0IDE0LjU3NSAxOS41MjQgMjcuMjI1IDMwLjc5OSAzOS44NzUgMTYuMTA5IDE4LjM3NCAzMy44MzYgMzYuNjMzIDU5LjA3NSAzOS41OTZ2MTc2Ljc1MkMzNDEuMjEgMzk2LjA4NyAzMDkuNDkxIDQzMiAyNjQgNDMyaC0yMS4yOTljLTQwLjUyNCAwLTU3LjEyNC0yMi4xOTctNTAuNjAxLTYxLjMyNS0xNC42MTItOC4wMDEtMjQuMTUxLTMzLjk3OS0xMi45MjUtNTMuNjI1LTE5LjM2NS0xOC4yMjUtMTcuNzg3LTQ2LjM4MS00Ljk1LTYxLjA1SDgzLjJDNjQuMjI1IDI1NiA0OCAyMzkuNzc1IDQ4IDIyMC44ek00NDggMzYwYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHMtMTAuNzQ1IDI0LTI0IDI0LTI0LTEwLjc0NS0yNC0yNCAxMC43NDUtMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQb2ludFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyOC44IDEzNy42aC04Ni4xNzdhMTE1LjUyIDExNS41MiAwIDAgMCAyLjE3Ni0yMi40YzAtNDcuOTE0LTM1LjA3Mi04My4yLTkyLTgzLjItNDUuMzE0IDAtNTcuMDAyIDQ4LjUzNy03NS43MDcgNzguNzg0LTcuNzM1IDEyLjQxMy0xNi45OTQgMjMuMzE3LTI1Ljg1MSAzMy4yNTNsLS4xMzEuMTQ2LS4xMjkuMTQ4QzEzNS42NjIgMTYxLjgwNyAxMjcuNzY0IDE2OCAxMjAuOCAxNjhoLTIuNjc5Yy01Ljc0Ny00Ljk1Mi0xMy41MzYtOC0yMi4xMi04SDMyYy0xNy42NzMgMC0zMiAxMi44OTQtMzIgMjguOHYyMzAuNEMwIDQzNS4xMDYgMTQuMzI3IDQ0OCAzMiA0NDhoNjRjOC41ODQgMCAxNi4zNzMtMy4wNDggMjIuMTItOGgyLjY3OWMyOC42ODggMCA2Ny4xMzcgNDAgMTI3LjIgNDBoMjEuMjk5YzYyLjU0MiAwIDk4LjgtMzguNjU4IDk5Ljk0LTkxLjE0NSAxMi40ODItMTcuODEzIDE4LjQ5MS00MC43ODUgMTUuOTg1LTYyLjc5MUE5My4xNDggOTMuMTQ4IDAgMCAwIDM5My4xNTIgMzA0SDQyOC44YzQ1LjQzNSAwIDgzLjItMzcuNTg0IDgzLjItODMuMiAwLTQ1LjA5OS0zOC4xMDEtODMuMi04My4yLTgzLjJ6bTAgMTE4LjRoLTkxLjAyNmMxMi44MzcgMTQuNjY5IDE0LjQxNSA0Mi44MjUtNC45NSA2MS4wNSAxMS4yMjcgMTkuNjQ2IDEuNjg3IDQ1LjYyNC0xMi45MjUgNTMuNjI1IDYuNTI0IDM5LjEyOC0xMC4wNzYgNjEuMzI1LTUwLjYgNjEuMzI1SDI0OGMtNDUuNDkxIDAtNzcuMjEtMzUuOTEzLTEyMC0zOS42NzZWMjE1LjU3MWMyNS4yMzktMi45NjQgNDIuOTY2LTIxLjIyMiA1OS4wNzUtMzkuNTk2IDExLjI3NS0xMi42NSAyMS43MjUtMjUuMyAzMC43OTktMzkuODc1QzIzMi4zNTUgMTEyLjcxMiAyNDQuMDA2IDgwIDI1Mi44IDgwYzIzLjM3NSAwIDQ0IDguOCA0NCAzNS4yIDAgMzUuMi0yNi40IDUzLjA3NS0yNi40IDcwLjRoMTU4LjRjMTguNDI1IDAgMzUuMiAxNi41IDM1LjIgMzUuMiAwIDE4Ljk3NS0xNi4yMjUgMzUuMi0zNS4yIDM1LjJ6TTg4IDM4NGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRzLTI0LTEwLjc0NS0yNC0yNCAxMC43NDUtMjQgMjQtMjQgMjQgMTAuNzQ1IDI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kUG9pbnRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDUuNiA4My4ydjg2LjE3N2ExMTUuNTIgMTE1LjUyIDAgMCAwLTIyLjQtMi4xNzZjLTQ3LjkxNCAwLTgzLjIgMzUuMDcyLTgzLjIgOTIgMCA0NS4zMTQgNDguNTM3IDU3LjAwMiA3OC43ODQgNzUuNzA3IDEyLjQxMyA3LjczNSAyMy4zMTcgMTYuOTk0IDMzLjI1MyAyNS44NTFsLjE0Ni4xMzEuMTQ4LjEyOUMxMjkuODA3IDM3Ni4zMzggMTM2IDM4NC4yMzYgMTM2IDM5MS4ydjIuNjc5Yy00Ljk1MiA1Ljc0Ny04IDEzLjUzNi04IDIyLjEydjY0YzAgMTcuNjczIDEyLjg5NCAzMiAyOC44IDMyaDIzMC40YzE1LjkwNiAwIDI4LjgtMTQuMzI3IDI4LjgtMzJ2LTY0YzAtOC41ODQtMy4wNDgtMTYuMzczLTgtMjIuMTJWMzkxLjJjMC0yOC42ODggNDAtNjcuMTM3IDQwLTEyNy4ydi0yMS4yOTljMC02Mi41NDItMzguNjU4LTk4LjgtOTEuMTQ1LTk5Ljk0LTE3LjgxMy0xMi40ODItNDAuNzg1LTE4LjQ5MS02Mi43OTEtMTUuOTg1QTkzLjE0OCA5My4xNDggMCAwIDAgMjcyIDExOC44NDdWODMuMkMyNzIgMzcuNzY1IDIzNC40MTYgMCAxODguOCAwYy00NS4wOTkgMC04My4yIDM4LjEwMS04My4yIDgzLjJ6bTExOC40IDB2OTEuMDI2YzE0LjY2OS0xMi44MzcgNDIuODI1LTE0LjQxNSA2MS4wNSA0Ljk1IDE5LjY0Ni0xMS4yMjcgNDUuNjI0LTEuNjg3IDUzLjYyNSAxMi45MjUgMzkuMTI4LTYuNTI0IDYxLjMyNSAxMC4wNzYgNjEuMzI1IDUwLjZWMjY0YzAgNDUuNDkxLTM1LjkxMyA3Ny4yMS0zOS42NzYgMTIwSDE4My41NzFjLTIuOTY0LTI1LjIzOS0yMS4yMjItNDIuOTY2LTM5LjU5Ni01OS4wNzUtMTIuNjUtMTEuMjc1LTI1LjMtMjEuNzI1LTM5Ljg3NS0zMC43OTlDODAuNzEyIDI3OS42NDUgNDggMjY3Ljk5NCA0OCAyNTkuMmMwLTIzLjM3NSA4LjgtNDQgMzUuMi00NCAzNS4yIDAgNTMuMDc1IDI2LjQgNzAuNCAyNi40VjgzLjJjMC0xOC40MjUgMTYuNS0zNS4yIDM1LjItMzUuMiAxOC45NzUgMCAzNS4yIDE2LjIyNSAzNS4yIDM1LjJ6TTM1MiA0MjRjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0cy0xMC43NDUgMjQtMjQgMjQtMjQtMTAuNzQ1LTI0LTI0IDEwLjc0NS0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFBvaW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzU4LjE4MiAxNzkuMzYxYy0xOS40OTMtMjQuNzY4LTUyLjY3OS0zMS45NDUtNzkuODcyLTE5LjA5OC0xNS4xMjctMTUuNjg3LTM2LjE4Mi0yMi40ODctNTYuNTk1LTE5LjYyOVY2N2MwLTM2Ljk0NC0yOS43MzYtNjctNjYuMjg2LTY3Uzg5LjE0MyAzMC4wNTYgODkuMTQzIDY3djE2MS4xMjljLTE5LjkwOS03LjQxLTQzLjI3Mi01LjA5NC02Mi4wODMgOC44NzItMjkuMzU1IDIxLjc5NS0zNS43OTMgNjMuMzMzLTE0LjU1IDkzLjE1MmwxMDkuNjk5IDE1NC4wMDFDMTM0LjYzMiA1MDEuNTkgMTU0Ljc0MSA1MTIgMTc2IDUxMmgxNzguMjg2YzMwLjgwMiAwIDU3LjU3NC0yMS41IDY0LjU1Ny01MS43OTdsMjcuNDI5LTExOC45OTlBNjcuODczIDY3Ljg3MyAwIDAgMCA0NDggMzI2di04NGMwLTQ2Ljg0NC00Ni42MjUtNzkuMjczLTg5LjgxOC02Mi42Mzl6TTgwLjk4NSAyNzkuNjk3bDI3LjEyNiAzOC4wNzljOC45OTUgMTIuNjI2IDI5LjAzMSA2LjI4NyAyOS4wMzEtOS4yODNWNjdjMC0yNS4xMiAzNi41NzEtMjUuMTYgMzYuNTcxIDB2MTc1YzAgOC44MzYgNy4xNjMgMTYgMTYgMTZoNi44NTdjOC44MzcgMCAxNi03LjE2NCAxNi0xNnYtMzVjMC0yNS4xMiAzNi41NzEtMjUuMTYgMzYuNTcxIDB2MzVjMCA4LjgzNiA3LjE2MyAxNiAxNiAxNkgyNzJjOC44MzcgMCAxNi03LjE2NCAxNi0xNnYtMjFjMC0yNS4xMiAzNi41NzEtMjUuMTYgMzYuNTcxIDB2MjFjMCA4LjgzNiA3LjE2MyAxNiAxNiAxNmg2Ljg1N2M4LjgzNyAwIDE2LTcuMTY0IDE2LTE2IDAtMjUuMTIxIDM2LjU3MS0yNS4xNiAzNi41NzEgMHY4NGMwIDEuNDg4LS4xNjkgMi45NzctLjUwMiA0LjQyM2wtMjcuNDMgMTE5LjAwMWMtMS45NzggOC41ODItOS4yOSAxNC41NzYtMTcuNzgyIDE0LjU3NkgxNzZjLTUuNzY5IDAtMTEuMjYzLTIuODc4LTE0LjY5Ny03LjY5N2wtMTA5LjcxMi0xNTRjLTE0LjQwNi0yMC4yMjMgMTQuOTk0LTQyLjgxOCAyOS4zOTQtMjIuNjA2ek0xNzYuMTQzIDQwMHYtOTZjMC04LjgzNyA2LjI2OC0xNiAxNC0xNmg2YzcuNzMyIDAgMTQgNy4xNjMgMTQgMTZ2OTZjMCA4LjgzNy02LjI2OCAxNi0xNCAxNmgtNmMtNy43MzMgMC0xNC03LjE2My0xNC0xNnptNzUuNDI4IDB2LTk2YzAtOC44MzcgNi4yNjgtMTYgMTQtMTZoNmM3LjczMiAwIDE0IDcuMTYzIDE0IDE2djk2YzAgOC44MzctNi4yNjggMTYtMTQgMTZoLTZjLTcuNzMyIDAtMTQtNy4xNjMtMTQtMTZ6TTMyNyA0MDB2LTk2YzAtOC44MzcgNi4yNjgtMTYgMTQtMTZoNmM3LjczMiAwIDE0IDcuMTYzIDE0IDE2djk2YzAgOC44MzctNi4yNjggMTYtMTQgMTZoLTZjLTcuNzMyIDAtMTQtNy4xNjMtMTQtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRSb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwOC44NjQgNzkuMDUyYy0yMi40MDEtMzMuODk4LTY2LjEwOC00Mi4yNzMtOTguODEzLTIzLjU4OC0yOS40NzQtMzEuNDY5LTc5LjE0NS0zMS4wOTMtMTA4LjMzNC0uMDIyLTQ3LjE2LTI3LjAyLTEwOC43MSA1LjA1NS0xMTAuNjcxIDYwLjgwNkM0NC44NDYgMTA1LjQwNyAwIDE0MC4wMDEgMCAxODcuNDI5djU2Ljk1M2MwIDMyLjc0MSAxNC4yOCA2My45NTQgMzkuMTggODUuNjM0bDk3LjcxIDg1LjA4MWM0LjI1MiAzLjcwMiAzLjExIDUuNTczIDMuMTEgMzIuOTAzIDAgMTcuNjczIDE0LjMyNyAzMiAzMiAzMmgyNTJjMTcuNjczIDAgMzItMTQuMzI3IDMyLTMyIDAtMjMuNTEzLTEuMDE1LTMwLjc0NSAzLjk4Mi00Mi4zN2w0Mi44MzUtOTkuNjU2YzYuMDk0LTE0LjE3NyA5LjE4My0yOS4xNzIgOS4xODMtNDQuNTY4VjE0Ni45NjNjMC01Mi44MzktNTQuMzE0LTg4LjY2Mi0xMDMuMTM2LTY3LjkxMXpNNDY0IDI2MS40MDZhNjQuNTA1IDY0LjUwNSAwIDAgMS01LjI4MiAyNS42MTNsLTQyLjgzNSA5OS42NTVjLTUuMjMgMTIuMTcxLTcuODgzIDI1LjA0LTcuODgzIDM4LjI1VjQzMkgxODh2LTEwLjI4NmMwLTE2LjM3LTcuMTQtMzEuOTc3LTE5LjU5LTQyLjgxN2wtOTcuNzEtODUuMDhDNTYuMjc0IDI4MS4yNTUgNDggMjYzLjIzNiA0OCAyNDQuMzgxdi01Ni45NTNjMC0zMy4yMDggNTItMzMuNTM3IDUyIC42Nzd2NDEuMjI4YTE2IDE2IDAgMCAwIDUuNDkzIDEyLjA2N2w3IDYuMDk1QTE2IDE2IDAgMCAwIDEzOSAyMzUuNDI5VjExOC44NTdjMC0zMy4wOTcgNTItMzMuNzI1IDUyIC42Nzd2MjYuNzUxYzAgOC44MzYgNy4xNjQgMTYgMTYgMTZoN2M4LjgzNiAwIDE2LTcuMTY0IDE2LTE2di00MS4xNDNjMC0zMy4xMzQgNTItMzMuNjc1IDUyIC42Nzd2NDAuNDY2YzAgOC44MzYgNy4xNjMgMTYgMTYgMTZoN2M4LjgzNyAwIDE2LTcuMTY0IDE2LTE2di0yNy40MjljMC0zMy4wMyA1Mi0zMy43OCA1MiAuNjc3djI2Ljc1MWMwIDguODM2IDcuMTYzIDE2IDE2IDE2aDdjOC44MzcgMCAxNi03LjE2NCAxNi0xNiAwLTMzLjE0NiA1Mi0zMy42MTMgNTIgLjY3N3YxMTQuNDQ1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kU2Npc3NvcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ4MGw3MC0uMDEzYzUuMTE0IDAgMTAuMjMxLS41ODMgMTUuMjAzLTEuNzI5bDExOC45OTktMjcuNDI3QzQ5MC41NiA0NDMuODM1IDUxMiA0MTcuMDIgNTEyIDM4Ni4yNzdWMTgwLjU3NWMwLTIzLjg0NS0xMy4wMy00NS45NTEtMzQuMDA1LTU3LjY5bC05Ny45OTktNTQuODUzYy0zNC40MDktMTkuMjYxLTY3LjI2My01LjgyNC05Mi4yMTggMjQuNzMzTDE0Mi44NSAzNy4wMDhjLTM3Ljg4Ny0xNC41NzktODAuNjEyIDMuNzI3LTk1LjY0MiA0MS4yMDEtMTUuMDk4IDM3LjY0MiAzLjYzNSA4MC4zNyA0MS45NDIgOTUuMTEyTDE2OCAxOTJsLTk0LTkuMTQxYy00MC44MDQgMC03NCAzMi44MTEtNzQgNzMuMTQgMCA0MC4zMyAzMy4xOTYgNzMuMTQxIDc0IDczLjE0MWg4Ny42MzVjLTMuNjc1IDI2LjI0NSA4LjY5MiA1MS4yOTcgMzAuMzQxIDY1LjAwNkMxNzguNjU3IDQzNi43MzcgMjExLjA0NCA0ODAgMjU2IDQ4MHptMC00OC4wMTNjLTI1LjE2IDAtMjUuMTItMzYuNTY3IDAtMzYuNTY3IDguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTYuODU2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZoLTI4Yy0yNS4xNTkgMC0yNS4xMjItMzYuNTY3IDAtMzYuNTY3aDI4YzguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTYuODU2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZINzRjLTM0LjQzIDAtMzQuMzc1LTUwLjI4MSAwLTUwLjI4MWgxODJjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtMTEuNjMyYTE2IDE2IDAgMCAwLTEwLjI1NC0xNC45MzNMMTA2LjM4OSAxMjguNTFjLTMxLjU1Mi0xMi4xNC0xMy40MzItNTkuMjgzIDE5LjIyMi00Ni43MTdsMTY2LjU0OSA2NC4wOTFhMTYuMDAxIDE2LjAwMSAwIDAgMCAxOC4xMzktNC44MTJsMjEuNzY0LTI2LjY0N2M1LjgyLTcuMTI3IDE2LjM0OC05LjA2NCAyNC40ODgtNC41MDhsOTggNTQuODU0YzUuODI4IDMuMjYzIDkuNDQ5IDkuMzE4IDkuNDQ5IDE1LjgwNXYyMDUuNzAxYzAgOC40OTEtNS45OTQgMTUuODA0LTE0LjU3NiAxNy43ODJsLTExOS4wMDEgMjcuNDI3YTE5Ljc0MyAxOS43NDMgMCAwIDEtNC40MjMuNTAyaC03MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFNwb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMS4wMzA1MywxMTYuMTc2MDVjLTE5LjM5MDU5LTMxLjUwNzc5LTUxLjI0NDA2LTM1LjcyODQ5LTY2LjMxMDQ0LTM1LjAxNzU2LTE0LjExMzI1LTUwLjgxMDUxLTYyLjAwMzgtNTQuMDgtNzAuNzM4MTYtNTQuMDhhNzQuMDMwOTEsNzQuMDMwOTEsMCwwLDAtNzIuMjM4MTYsNTguOTE2bC00LjY0NjQ4LDIyLjY2MDE0LTEzLjY4MzU3LTUzLjIwN2MtOS4wOTU2OS0zNS4zNzEwNy00Ni40MTItNjQuMDUwNzQtODkuNjYtNTMuMDcyMjNhNzMuODk3NDksNzMuODk3NDksMCwwLDAtNTUuMTIxLDc4Ljk0NzIyLDczLjY4MjczLDczLjY4MjczLDAsMCwwLTY0Ljg0OTUsOTQuNDIxODFsMjQuMzU5MzMsODIuMTk3MjFjLTM4LjI0MDE3LTcuNTQ0OTItNjIuNzk2NzcsMTYuMTgzNTgtNjguMTE1MTIsMjEuODQ3NjRhNzMuNjc5MSw3My42NzkxLDAsMCwwLDMuMTk5MjEsMTA0LjE5MzI5bDkxLjM2NTA5LDg1Ljk3NjVBMTU0LjE2NCwxNTQuMTY0LDAsMCwwLDIyMC42MjI3OSw1MTJoMTA3LjQ1NDlBMTI3LjMwMDc5LDEyNy4zMDA3OSwwLDAsMCw0NTIuMzM5Miw0MTMuODYxMzlsNTcuNjIzLTI0MS45NjI3MkE3My4yMDI3NCw3My4yMDI3NCwwLDAsMCw1MDEuMDMwNTMsMTE2LjE3NjA1Wm0tMzcuNzU5Nyw0NC42MDU0NEw0MDUuNjQ3ODgsNDAyLjc0ODEyYTc5LjQ2NjE2LDc5LjQ2NjE2LDAsMCwxLTc3LjU3MDE5LDYxLjI1OTcySDIyMC42MjI3OWExMDYuMzQwNTIsMTA2LjM0MDUyLDAsMCwxLTczLjEzNjYtMjguOTk4bC05MS4zNjktODUuOTgwNDFDMzEuMzQzODEsMzI1LjcyNjY5LDY2LjYxMTMzLDI4OC4xMzEsOTEuMzk2NDQsMzExLjUzOTJsNTEuMTIzLDQ4LjEwNzM5YzUuNDI1NzcsNS4xMDkzNywxMy40ODIzOS43MTY3OSwxMy40ODIzOS01LjgyNjE3YTI0Ni43OTkxNCwyNDYuNzk5MTQsMCwwLDAtMTAuMTc3NzEtNzAuMTUyM2wtMzYuMDEzNjItMTIxLjUzOWMtOS43MzI0LTMyLjg4Mjc5LDM5LjY5OTE2LTQ3LjI3MTQ1LDQ5LjM4NjY0LTE0LjYyNWwzMS4zNDM3LDEwNS43NzkyM2M1LjU5Mzc0LDE4LjkwNDI4LDMzLjc4MTE5LDEwLjcxMjg4LDI4Ljk2NDgtOC4wMDc4MUwxNzcuMDY0MjcsODAuMjM2NjJjLTguNTAzODktMzMuMTAzNSw0MS40MzE1Ny00NS42NDY0Niw0OS44NjUxNS0xMi44MzU5M2w0Ny4zMjYwOSwxODQuMDM1YzQuNDI3NzMsMTcuMjQyMTgsMjkuMTYyMDcsMTYuNTAzOSwzMi43MTA4OS0uODA0NjhsMzEuNzkxLTE1NC45NzA2YzYuODEwNTQtMzMuMTA3NCw1Ny41MTc0OC0yNC4xMDc0MSw1MC4xMTkwNiwxMS45NjI4OEwzNjAuMzI3NjQsMjQ2Ljc4OTI0Yy0zLjcyMjY1LDE4LjEwOTM2LDIzLjY2NzkzLDI0LjYzMDg0LDI4LjA1NjU5LDYuMjE2NzlMNDEzLjE4NSwxNDguODU5NjJDNDIxLjE0OTgsMTE1LjUxMiw0NzEuMTQsMTI3Ljc5NzEzLDQ2My4yNzA4MywxNjAuNzgxNDlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRzaGFrZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTkuMiAxMjcuOWwtNDcuNi00Ny42QTU2LjI1MiA1Ni4yNTIgMCAwIDAgNDMyIDY0SDIwNS4yYy0xNC44IDAtMjkuMSA1LjktMzkuNiAxNi4zTDExOCAxMjcuOUgwdjI1NS43aDY0YzE3LjYgMCAzMS44LTE0LjIgMzEuOS0zMS43aDkuMWw4NC42IDc2LjRjMzAuOSAyNS4xIDczLjggMjUuNyAxMDUuNiAzLjggMTIuNSAxMC44IDI2IDE1LjkgNDEuMSAxNS45IDE4LjIgMCAzNS4zLTcuNCA0OC44LTI0IDIyLjEgOC43IDQ4LjIgMi42IDY0LTE2LjhsMjYuMi0zMi4zYzUuNi02LjkgOS4xLTE0LjggMTAuOS0yM2g1Ny45Yy4xIDE3LjUgMTQuNCAzMS43IDMxLjkgMzEuN2g2NFYxMjcuOUg1MTkuMnpNNDggMzUxLjZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2YzAgOC45LTcuMiAxNi0xNiAxNnptMzkwLTYuOWwtMjYuMSAzMi4yYy0yLjggMy40LTcuOCA0LTExLjMgMS4ybC0yMy45LTE5LjQtMzAgMzYuNWMtNiA3LjMtMTUgNC44LTE4IDIuNGwtMzYuOC0zMS41LTE1LjYgMTkuMmMtMTMuOSAxNy4xLTM5LjIgMTkuNy01NS4zIDYuNmwtOTcuMy04OEg5NlYxNzUuOGg0MS45bDYxLjctNjEuNmMyLS44IDMuNy0xLjUgNS43LTIuM0gyNjJsLTM4LjcgMzUuNWMtMjkuNCAyNi45LTMxLjEgNzIuMy00LjQgMTAxLjMgMTQuOCAxNi4yIDYxLjIgNDEuMiAxMDEuNSA0LjRsOC4yLTcuNSAxMDguMiA4Ny44YzMuNCAyLjggMy45IDcuOSAxLjIgMTEuM3ptMTA2LTQwLjhoLTY5LjJjLTIuMy0yLjgtNC45LTUuNC03LjctNy43bC0xMDIuNy04My40IDEyLjUtMTEuNGM2LjUtNiA3LTE2LjEgMS0yMi42TDM2NyAxNjcuMWMtNi02LjUtMTYuMS02LjktMjIuNi0xbC01NS4yIDUwLjZjLTkuNSA4LjctMjUuNyA5LjQtMzQuNiAwLTkuMy05LjktOC41LTI1LjEgMS4yLTMzLjlsNjUuNi02MC4xYzcuNC02LjggMTctMTAuNSAyNy0xMC41bDgzLjctLjJjMi4xIDAgNC4xLjggNS41IDIuM2w2MS43IDYxLjZINTQ0djEyOHptNDggNDcuN2MtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTZjMCA4LjktNy4yIDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTY3LjQwMyAyMzUuNjQyTDQ2Mi4zMjMgODQuNTg5QTQ4IDQ4IDAgMCAwIDQyMi45MTkgNjRIMTUzLjA4MWE0OCA0OCAwIDAgMC0zOS40MDQgMjAuNTg5TDguNTk3IDIzNS42NDJBNDguMDAxIDQ4LjAwMSAwIDAgMCAwIDI2My4wNTRWNDAwYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDgwYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMjYzLjA1NGMwLTkuODAxLTMtMTkuMzY2LTguNTk3LTI3LjQxMnpNMTUzLjA4MSAxMTJoMjY5LjgzOGw3Ny45MTMgMTEySDc1LjE2OGw3Ny45MTMtMTEyek01MjggNDAwSDQ4VjI3Mmg0ODB2MTI4em0tMzItNjRjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMycy0zMi0xNC4zMjctMzItMzIgMTQuMzI3LTMyIDMyLTMyIDMyIDE0LjMyNyAzMiAzMnptLTk2IDBjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMycy0zMi0xNC4zMjctMzItMzIgMTQuMzI3LTMyIDMyLTMyIDMyIDE0LjMyNyAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU4LjQgNjQuM0M0MDAuNiAxNS43IDMxMS4zIDIzIDI1NiA3OS4zIDIwMC43IDIzIDExMS40IDE1LjYgNTMuNiA2NC4zLTIxLjYgMTI3LjYtMTAuNiAyMzAuOCA0MyAyODUuNWwxNzUuNCAxNzguN2MxMCAxMC4yIDIzLjQgMTUuOSAzNy42IDE1LjkgMTQuMyAwIDI3LjYtNS42IDM3LjYtMTUuOEw0NjkgMjg1LjZjNTMuNS01NC43IDY0LjctMTU3LjktMTAuNi0yMjEuM3ptLTIzLjYgMTg3LjVMMjU5LjQgNDMwLjVjLTIuNCAyLjQtNC40IDIuNC02LjggMEw3Ny4yIDI1MS44Yy0zNi41LTM3LjItNDMuOS0xMDcuNiA3LjMtMTUwLjcgMzguOS0zMi43IDk4LjktMjcuOCAxMzYuNSAxMC41bDM1IDM1LjcgMzUtMzUuN2MzNy44LTM4LjUgOTcuOC00My4yIDEzNi41LTEwLjYgNTEuMSA0My4xIDQzLjUgMTEzLjkgNy4zIDE1MC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIb3NwaXRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMjQ0di00MGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMmgtNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTE0MCAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyem0tNzYgODR2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptNzYgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMnptMTgwIDEyNHYzNkgwdi0zNmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE5LjVWODUuMDM1QzMxLjUgNzMuNDE4IDQyLjI0NSA2NCA1NS41IDY0SDE0NFYyNGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoMTEyYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHY0MGg4OC41YzEzLjI1NSAwIDI0IDkuNDE4IDI0IDIxLjAzNVY0NjRINDM2YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ6TTc5LjUgNDYzSDE5MnYtNjdjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjY3aDExMi41VjExMkgzMDR2MjRjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDE2OGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di0yNEg3OS41djM1MXpNMjY2IDY0aC0yNlYzOGE2IDYgMCAwIDAtNi02aC0yMGE2IDYgMCAwIDAtNiA2djI2aC0yNmE2IDYgMCAwIDAtNiA2djIwYTYgNiAwIDAgMCA2IDZoMjZ2MjZhNiA2IDAgMCAwIDYgNmgyMGE2IDYgMCAwIDAgNi02Vjk2aDI2YTYgNiAwIDAgMCA2LTZWNzBhNiA2IDAgMCAwLTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSG91cmdsYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCA0OGg0YzYuNjI3IDAgMTItNS4zNzMgMTItMTJWMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxMkM1LjM3MyAwIDAgNS4zNzMgMCAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDRjMCA4MC41NjQgMzIuMTg4IDE2NS44MDcgOTcuMTggMjA4QzQ3Ljg5OSAyOTguMzgxIDE2IDM4My45IDE2IDQ2NGgtNGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDM2MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi0yNGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00YzAtODAuNTY0LTMyLjE4OC0xNjUuODA3LTk3LjE4LTIwOEMzMzYuMTAyIDIxMy42MTkgMzY4IDEyOC4xIDM2OCA0OHpNNjQgNDhoMjU2YzAgMTAxLjYyLTU3LjMwNyAxODQtMTI4IDE4NFM2NCAxNDkuNjIxIDY0IDQ4em0yNTYgNDE2SDY0YzAtMTAxLjYyIDU3LjMwOC0xODQgMTI4LTE4NHMxMjggODIuMzggMTI4IDE4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSWRCYWRnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgMEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OHptMCA0NjRINDhWNDhoMjg4djQxNnpNMTQ0IDExMmg5NmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmgtOTZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZ6bTQ4IDE3NmMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NC02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6bS04OS42IDEyOGgxNzkuMmMxMi40IDAgMjIuNC04LjYgMjIuNC0xOS4ydi0xOS4yYzAtMzEuOC0zMC4xLTU3LjYtNjcuMi01Ny42LTEwLjggMC0xOC43IDgtNDQuOCA4LTI2LjkgMC0zMy40LTgtNDQuOC04LTM3LjEgMC02Ny4yIDI1LjgtNjcuMiA1Ny42djE5LjJjMCAxMC42IDEwIDE5LjIgMjIuNCAxOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdJZENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MGMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptMCA0MDBIMzAzLjJjLjktNC41LjggMy42LjgtMjIuNCAwLTMxLjgtMzAuMS01Ny42LTY3LjItNTcuNi0xMC44IDAtMTguNyA4LTQ0LjggOC0yNi45IDAtMzMuNC04LTQ0LjgtOC0zNy4xIDAtNjcuMiAyNS44LTY3LjIgNTcuNiAwIDI2LS4yIDE3LjkuOCAyMi40SDQ4VjE0NGg0ODB2Mjg4em0tMTY4LTgwaDExMmM0LjQgMCA4LTMuNiA4LTh2LTE2YzAtNC40LTMuNi04LTgtOEgzNjBjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDh6bTAtNjRoMTEyYzQuNCAwIDgtMy42IDgtOHYtMTZjMC00LjQtMy42LTgtOC04SDM2MGMtNC40IDAtOCAzLjYtOCA4djE2YzAgNC40IDMuNiA4IDggOHptMC02NGgxMTJjNC40IDAgOC0zLjYgOC04di0xNmMwLTQuNC0zLjYtOC04LThIMzYwYy00LjQgMC04IDMuNi04IDh2MTZjMCA0LjQgMy42IDggOCA4em0tMTY4IDk2YzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0LTY0IDI4LjctNjQgNjQgMjguNyA2NCA2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDY0SDQ4QzIxLjQ5IDY0IDAgODUuNDkgMCAxMTJ2Mjg4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTEyYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS02IDMzNkg1NGE2IDYgMCAwIDEtNi02VjExOGE2IDYgMCAwIDEgNi02aDQwNGE2IDYgMCAwIDEgNiA2djI3NmE2IDYgMCAwIDEtNiA2ek0xMjggMTUyYy0yMi4wOTEgMC00MCAxNy45MDktNDAgNDBzMTcuOTA5IDQwIDQwIDQwIDQwLTE3LjkwOSA0MC00MC0xNy45MDktNDAtNDAtNDB6TTk2IDM1MmgzMjB2LTgwbC04Ny41MTUtODcuNTE1Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMMTkyIDMwNGwtMzkuNTE1LTM5LjUxNWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDk2IDMwNHY0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSW1hZ2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCA0MTZ2MTZjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxNzZjMC0yNi41MSAyMS40OS00OCA0OC00OGgxNnY0OEg1NGE2IDYgMCAwIDAtNiA2djI0NGE2IDYgMCAwIDAgNiA2aDM3MmE2IDYgMCAwIDAgNi02di0xMGg0OHptNDItMzM2SDE1MGE2IDYgMCAwIDAtNiA2djI0NGE2IDYgMCAwIDAgNiA2aDM3MmE2IDYgMCAwIDAgNi02Vjg2YTYgNiAwIDAgMC02LTZ6bTYtNDhjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYyNTZjMCAyNi41MS0yMS40OSA0OC00OCA0OEgxNDRjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzODR6TTI2NCAxNDRjMCAyMi4wOTEtMTcuOTA5IDQwLTQwIDQwcy00MC0xNy45MDktNDAtNDAgMTcuOTA5LTQwIDQwLTQwIDQwIDE3LjkwOSA0MCA0MHptLTcyIDk2bDM5LjUxNS0zOS41MTVjNC42ODYtNC42ODYgMTIuMjg0LTQuNjg2IDE2Ljk3MSAwTDI4OCAyNDBsMTAzLjUxNS0xMDMuNTE1YzQuNjg2LTQuNjg2IDEyLjI4NC00LjY4NiAxNi45NzEgMEw0ODAgMjA4djgwSDE5MnYtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0tleWJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCA2NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjI4OGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQ4MGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjExMmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em04IDMzNmMwIDQuNDExLTMuNTg5IDgtOCA4SDQ4Yy00LjQxMSAwLTgtMy41ODktOC04VjExMmMwLTQuNDExIDMuNTg5LTggOC04aDQ4MGM0LjQxMSAwIDggMy41ODkgOCA4djI4OHpNMTcwIDI3MHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yOGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0tMzM2IDgydi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDgyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMzg0IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpNMTIyIDE4OHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMkg4MmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yOGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptLTk4IDE1OHYtMTZjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxODBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTZjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyMTZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnS2lzc0JlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY4IDE1MmMtMjMuOCAwLTUyLjcgMjkuMy01NiA3MS40LS4zIDMuNyAyIDcuMiA1LjYgOC4zIDMuNSAxIDcuNS0uNSA5LjMtMy43bDkuNS0xN2M3LjctMTMuNyAxOS4yLTIxLjYgMzEuNS0yMS42czIzLjggNy45IDMxLjUgMjEuNmw5LjUgMTdjMi4xIDMuNyA2LjIgNC43IDkuMyAzLjcgMy42LTEuMSA1LjktNC41IDUuNi04LjMtMy4xLTQyLjEtMzItNzEuNC01NS44LTcxLjR6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptNTYtMTQ4YzAtMTkuMi0yOC44LTQxLjUtNzEuNS00NC0zLjgtLjQtNy40IDIuNC04LjIgNi4yLS45IDMuOCAxLjEgNy43IDQuNyA5LjJsMTYuOSA3LjJjMTMgNS41IDIwLjggMTMuNSAyMC44IDIxLjVzLTcuOCAxNi0yMC43IDIxLjVsLTE3IDcuMmMtNS43IDIuNC02IDEyLjIgMCAxNC44bDE2LjkgNy4yYzEzIDUuNSAyMC44IDEzLjUgMjAuOCAyMS41cy03LjggMTYtMjAuNyAyMS41bC0xNyA3LjJjLTMuNiAxLjUtNS42IDUuNC00LjcgOS4yLjggMy42IDQuMSA2LjIgNy44IDYuMmguNWM0Mi44LTIuNSA3MS41LTI0LjggNzEuNS00NCAwLTEzLTEzLjQtMjcuMy0zNS4yLTM2QzI5MC42IDMzNS4zIDMwNCAzMjEgMzA0IDMwOHptMjQtMTU2Yy0yMy44IDAtNTIuNyAyOS4zLTU2IDcxLjQtLjMgMy43IDIgNy4yIDUuNiA4LjMgMy41IDEgNy41LS41IDkuMy0zLjdsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy43IDYuMiA0LjcgOS4zIDMuNyAzLjYtMS4xIDUuOS00LjUgNS42LTguMy0zLjEtNDIuMS0zMi03MS40LTU1LjgtNzEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnS2lzc1dpbmtIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTA0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgMzA4LjVjMC0xOS4yLTI4LjgtNDEuNS03MS41LTQ0LTMuOC0uNC03LjQgMi40LTguMiA2LjItLjkgMy44IDEuMSA3LjcgNC43IDkuMmwxNi45IDcuMmMxMyA1LjUgMjAuOCAxMy41IDIwLjggMjEuNXMtNy44IDE2LTIwLjcgMjEuNWwtMTcgNy4yYy01LjcgMi40LTYgMTIuMiAwIDE0LjhsMTYuOSA3LjJjMTMgNS41IDIwLjggMTMuNSAyMC44IDIxLjVzLTcuOCAxNi0yMC43IDIxLjVsLTE3IDcuMmMtMy42IDEuNS01LjYgNS40LTQuNyA5LjIuOCAzLjYgNC4xIDYuMiA3LjggNi4yaC41YzQyLjgtMi41IDcxLjUtMjQuOCA3MS41LTQ0IDAtMTMtMTMuNC0yNy4zLTM1LjItMzYgMjEuNy05LjEgMzUuMS0yMy40IDM1LjEtMzYuNHptNzAuNS04My41bDkuNSA4LjVjMy44IDMuMyA5LjMgNCAxMy43IDEuNiA0LjQtMi40IDYuOS03LjQgNi4xLTEyLjQtNC0yNS4yLTM0LjItNDIuMS01OS44LTQyLjFzLTU1LjkgMTYuOS01OS44IDQyLjFjLS44IDUgMS43IDEwIDYuMSAxMi40IDUuOCAzLjEgMTEuMi43IDEzLjctMS42bDkuNS04LjVjMTQuOC0xMy4yIDQ2LjItMTMuMiA2MSAwek0xMzYgMjA4LjVjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzJ6bTM2NS4xIDE5NGMtOC0yMC44LTMxLjUtMzEuNS01My4xLTI1LjlsLTguNCAyLjItMi4zLTguNGMtNS45LTIxLjQtMjctMzYuNS00OS0zMy0yNS4yIDQtNDAuNiAyOC42LTM0IDUyLjZsMjIuOSA4Mi42YzEuNSA1LjMgNyA4LjUgMTIuNCA3LjFsODMtMjEuNWMyNC4xLTYuMyAzNy43LTMxLjggMjguNS01NS43ek0zMzQgNDM2LjNjLTI2LjEgMTIuNS01NS4yIDE5LjctODYgMTkuNy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDBjMCAyMi4xLTMuNyA0My4zLTEwLjQgNjMuMiA5IDYuNCAxNyAxNC4yIDIyLjYgMjMuOSA2LjQuMSAxMi42IDEuNCAxOC42IDIuOSAxMC45LTI3LjkgMTcuMS01OC4yIDE3LjEtOTBDNDk2IDExOSAzODUgOCAyNDggOFMwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDhjMzUuNCAwIDY4LjktNy41IDk5LjQtMjAuOS0yLjUtNy4zIDQuMyAxNy4yLTEzLjQtNDYuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnS2lzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjggMTc2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnptMTM2IDEzMmMwLTE5LjItMjguOC00MS41LTcxLjUtNDQtMy44LS40LTcuNCAyLjQtOC4yIDYuMi0uOSAzLjggMS4xIDcuNyA0LjcgOS4ybDE2LjkgNy4yYzEzIDUuNSAyMC44IDEzLjUgMjAuOCAyMS41cy03LjggMTYtMjAuNyAyMS41bC0xNyA3LjJjLTUuNyAyLjQtNiAxMi4yIDAgMTQuOGwxNi45IDcuMmMxMyA1LjUgMjAuOCAxMy41IDIwLjggMjEuNXMtNy44IDE2LTIwLjcgMjEuNWwtMTcgNy4yYy0zLjYgMS41LTUuNiA1LjQtNC43IDkuMi44IDMuNiA0LjEgNi4yIDcuOCA2LjJoLjVjNDIuOC0yLjUgNzEuNS0yNC44IDcxLjUtNDQgMC0xMy0xMy40LTI3LjMtMzUuMi0zNkMyOTAuNiAzMzUuMyAzMDQgMzIxIDMwNCAzMDh6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptODAtMjgwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGF1Z2hCZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTE0MS40IDM4OS40Yy0zNy44IDM3LjgtODggNTguNi0xNDEuNCA1OC42cy0xMDMuNi0yMC44LTE0MS40LTU4LjZTNDggMzA5LjQgNDggMjU2czIwLjgtMTAzLjYgNTguNi0xNDEuNFMxOTQuNiA1NiAyNDggNTZzMTAzLjYgMjAuOCAxNDEuNCA1OC42UzQ0OCAyMDIuNiA0NDggMjU2cy0yMC44IDEwMy42LTU4LjYgMTQxLjR6TTMyOCAxNTJjLTIzLjggMC01Mi43IDI5LjMtNTYgNzEuNC0uNyA4LjYgMTAuOCAxMS45IDE0LjkgNC41bDkuNS0xN2M3LjctMTMuNyAxOS4yLTIxLjYgMzEuNS0yMS42czIzLjggNy45IDMxLjUgMjEuNmw5LjUgMTdjNC4xIDcuNCAxNS42IDQgMTQuOS00LjUtMy4xLTQyLjEtMzItNzEuNC01NS44LTcxLjR6bS0yMDEgNzUuOWw5LjUtMTdjNy43LTEzLjcgMTkuMi0yMS42IDMxLjUtMjEuNnMyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzQuMSA3LjQgMTUuNiA0IDE0LjktNC41LTMuMy00Mi4xLTMyLjItNzEuNC01Ni03MS40cy01Mi43IDI5LjMtNTYgNzEuNGMtLjYgOC41IDEwLjkgMTEuOSAxNS4xIDQuNXpNMzYyLjQgMjg4SDEzMy42Yy04LjIgMC0xNC41IDctMTMuNSAxNSA3LjUgNTkuMiA1OC45IDEwNSAxMjEuMSAxMDVoMTMuNmM2Mi4yIDAgMTEzLjYtNDUuOCAxMjEuMS0xMDUgMS04LTUuMy0xNS0xMy41LTE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdMYXVnaFNxdWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0xNDEuNCAzODkuNGMtMzcuOCAzNy44LTg4IDU4LjYtMTQxLjQgNTguNnMtMTAzLjYtMjAuOC0xNDEuNC01OC42UzQ4IDMwOS40IDQ4IDI1NnMyMC44LTEwMy42IDU4LjYtMTQxLjRTMTk0LjYgNTYgMjQ4IDU2czEwMy42IDIwLjggMTQxLjQgNTguNlM0NDggMjAyLjYgNDQ4IDI1NnMtMjAuOCAxMDMuNi01OC42IDE0MS40ek0zNDMuNiAxOTZsMzMuNi00MC4zYzguNi0xMC4zLTMuOC0yNC44LTE1LjQtMThsLTgwIDQ4Yy03LjggNC43LTcuOCAxNS45IDAgMjAuNmw4MCA0OGMxMS41IDYuOCAyNC03LjYgMTUuNC0xOEwzNDMuNiAxOTZ6bS0yMDkuNCA1OC4zbDgwLTQ4YzcuOC00LjcgNy44LTE1LjkgMC0yMC42bC04MC00OGMtMTEuNi02LjktMjQgNy43LTE1LjQgMThsMzMuNiA0MC4zLTMzLjYgNDAuM2MtOC43IDEwLjQgMy44IDI0LjggMTUuNCAxOHpNMzYyLjQgMjg4SDEzMy42Yy04LjIgMC0xNC41IDctMTMuNSAxNSA3LjUgNTkuMiA1OC45IDEwNSAxMjEuMSAxMDVoMTMuNmM2Mi4yIDAgMTEzLjYtNDUuOCAxMjEuMS0xMDUgMS04LTUuMy0xNS0xMy41LTE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdMYXVnaFdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMTQxLjQgMzg5LjRjLTM3LjggMzcuOC04OCA1OC42LTE0MS40IDU4LjZzLTEwMy42LTIwLjgtMTQxLjQtNTguNkM2OC44IDM1OS42IDQ4IDMwOS40IDQ4IDI1NnMyMC44LTEwMy42IDU4LjYtMTQxLjRDMTQ0LjQgNzYuOCAxOTQuNiA1NiAyNDggNTZzMTAzLjYgMjAuOCAxNDEuNCA1OC42YzM3LjggMzcuOCA1OC42IDg4IDU4LjYgMTQxLjRzLTIwLjggMTAzLjYtNTguNiAxNDEuNHpNMzI4IDE2NGMtMjUuNyAwLTU1LjkgMTYuOS01OS45IDQyLjEtMS43IDExLjIgMTEuNSAxOC4yIDE5LjggMTAuOGw5LjUtOC41YzE0LjgtMTMuMiA0Ni4yLTEzLjIgNjEgMGw5LjUgOC41YzguNSA3LjQgMjEuNi4zIDE5LjgtMTAuOC0zLjgtMjUuMi0zNC00Mi4xLTU5LjctNDIuMXptLTE2MCA2MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE5NC40IDY0SDEzMy42Yy04LjIgMC0xNC41IDctMTMuNSAxNSA3LjUgNTkuMiA1OC45IDEwNSAxMjEuMSAxMDVoMTMuNmM2Mi4yIDAgMTEzLjYtNDUuOCAxMjEuMS0xMDUgMS04LTUuMy0xNS0xMy41LTE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdMYXVnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0xNDEuNCAzODkuNGMtMzcuOCAzNy44LTg4IDU4LjYtMTQxLjQgNTguNnMtMTAzLjYtMjAuOC0xNDEuNC01OC42UzQ4IDMwOS40IDQ4IDI1NnMyMC44LTEwMy42IDU4LjYtMTQxLjRTMTk0LjYgNTYgMjQ4IDU2czEwMy42IDIwLjggMTQxLjQgNTguNlM0NDggMjAyLjYgNDQ4IDI1NnMtMjAuOCAxMDMuNi01OC42IDE0MS40ek0zMjggMjI0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptLTE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMTk0LjQgNjRIMTMzLjZjLTguMiAwLTE0LjUgNy0xMy41IDE1IDcuNSA1OS4yIDU4LjkgMTA1IDEyMS4xIDEwNWgxMy42YzYyLjIgMCAxMTMuNi00NS44IDEyMS4xLTEwNSAxLTgtNS4zLTE1LTEzLjUtMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0xlbW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4NC4xMTIgMjcuODg5QzQ1NS45ODktLjIzMyA0MTYuMTA4LTguMDU3IDM4Ny4wNTkgOC44NjUgMzQ3LjYwNCAzMS44NDggMjIzLjUwNC00MS4xMTEgOTEuMTk2IDkxLjE5Ny00MS4yNzcgMjIzLjY3MiAzMS45MjMgMzQ3LjQ3MiA4Ljg2NiAzODcuMDU4Yy0xNi45MjIgMjkuMDUxLTkuMSA2OC45MzIgMTkuMDIyIDk3LjA1NCAyOC4xMzUgMjguMTM1IDY4LjAxMSAzNS45MzggOTcuMDU3IDE5LjAyMSAzOS40MjMtMjIuOTcgMTYzLjU1NyA0OS45NjkgMjk1Ljg1OC04Mi4zMjkgMTMyLjQ3NC0xMzIuNDc3IDU5LjI3My0yNTYuMjc3IDgyLjMzMS0yOTUuODYxIDE2LjkyMi0yOS4wNSA5LjEtNjguOTMxLTE5LjAyMi05Ny4wNTR6bS0yMi40MDUgNzIuODk0Yy0zOC44IDY2LjYwOSA0NS42IDE2NS42MzUtNzQuODQ1IDI4Ni4wOC0xMjAuNDQgMTIwLjQ0My0yMTkuNDc1IDM2LjA0OC0yODYuMDc2IDc0Ljg0My0yMi42NzkgMTMuMjA3LTY0LjAzNS0yNy4yNDEtNTAuNDkzLTUwLjQ4OCAzOC44LTY2LjYwOS00NS42LTE2NS42MzUgNzQuODQ1LTI4Ni4wOEMyNDUuNTczIDQuNzAyIDM0NC42MTYgODkuMDg2IDQxMS4yMTkgNTAuMjkyYzIyLjczLTEzLjI0IDY0LjAwNSAyNy4yODggNTAuNDg4IDUwLjQ5MXptLTE2OS44NjEgOC43MzZjMS4zNyAxMC45Ni02LjQwNCAyMC45NTctMTcuMzY1IDIyLjMyNy01NC44NDYgNi44NTUtMTM1Ljc3OSA4Ny43ODctMTQyLjYzNSAxNDIuNjM1LTEuMzczIDEwLjk4OS0xMS4zOTkgMTguNzM0LTIyLjMyNiAxNy4zNjUtMTAuOTYxLTEuMzctMTguNzM1LTExLjM2Ni0xNy4zNjUtMjIuMzI2IDkuMTYyLTczLjI4NiAxMDQuMTY3LTE2OC4yMTUgMTc3LjM2NS0xNzcuMzY1IDEwLjk1My0xLjM2OCAyMC45NTYgNi40MDMgMjIuMzI2IDE3LjM2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGlmZVJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUwNGMxMzYuOTY3IDAgMjQ4LTExMS4wMzMgMjQ4LTI0OFMzOTIuOTY3IDggMjU2IDggOCAxMTkuMDMzIDggMjU2czExMS4wMzMgMjQ4IDI0OCAyNDh6bS0xMDMuMzk4LTc2LjcybDUzLjQxMS01My40MTFjMzEuODA2IDEzLjUwNiA2OC4xMjggMTMuNTIyIDk5Ljk3NCAwbDUzLjQxMSA1My40MTFjLTYzLjIxNyAzOC4zMTktMTQzLjU3OSAzOC4zMTktMjA2Ljc5NiAwek0zMzYgMjU2YzAgNDQuMTEyLTM1Ljg4OCA4MC04MCA4MHMtODAtMzUuODg4LTgwLTgwIDM1Ljg4OC04MCA4MC04MCA4MCAzNS44ODggODAgODB6bTkxLjI4IDEwMy4zOThsLTUzLjQxMS01My40MTFjMTMuNTA1LTMxLjgwNiAxMy41MjItNjguMTI4IDAtOTkuOTc0bDUzLjQxMS01My40MTFjMzguMzE5IDYzLjIxNyAzOC4zMTkgMTQzLjU3OSAwIDIwNi43OTZ6TTM1OS4zOTcgODQuNzJsLTUzLjQxMSA1My40MTFjLTMxLjgwNi0xMy41MDUtNjguMTI4LTEzLjUyMi05OS45NzMgMEwxNTIuNjAyIDg0LjcyYzYzLjIxNy0zOC4zMTkgMTQzLjU3OS0zOC4zMTkgMjA2Ljc5NSAwek04NC43MiAxNTIuNjAybDUzLjQxMSA1My40MTFjLTEzLjUwNiAzMS44MDYtMTMuNTIyIDY4LjEyOCAwIDk5Ljk3NEw4NC43MiAzNTkuMzk4Yy0zOC4zMTktNjMuMjE3LTM4LjMxOS0xNDMuNTc5IDAtMjA2Ljc5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGlnaHRidWxiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzNTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiA4MGMtNTIuOTQgMC05NiA0My4wNi05NiA5NiAwIDguODQgNy4xNiAxNiAxNiAxNnMxNi03LjE2IDE2LTE2YzAtMzUuMyAyOC43Mi02NCA2NC02NCA4Ljg0IDAgMTYtNy4xNiAxNi0xNnMtNy4xNi0xNi0xNi0xNnpNOTYuMDYgNDU5LjE3YzAgMy4xNS45MyA2LjIyIDIuNjggOC44NGwyNC41MSAzNi44NGMyLjk3IDQuNDYgNy45NyA3LjE0IDEzLjMyIDcuMTRoNzguODVjNS4zNiAwIDEwLjM2LTIuNjggMTMuMzItNy4xNGwyNC41MS0zNi44NGMxLjc0LTIuNjIgMi42Ny01LjcgMi42OC04Ljg0bC4wNS00My4xOEg5Ni4wMmwuMDQgNDMuMTh6TTE3NiAwQzczLjcyIDAgMCA4Mi45NyAwIDE3NmMwIDQ0LjM3IDE2LjQ1IDg0Ljg1IDQzLjU2IDExNS43OCAxNi42NCAxOC45OSA0Mi43NCA1OC44IDUyLjQyIDkyLjE2di4wNmg0OHYtLjEyYy0uMDEtNC43Ny0uNzItOS41MS0yLjE1LTE0LjA3LTUuNTktMTcuODEtMjIuODItNjQuNzctNjIuMTctMTA5LjY3LTIwLjU0LTIzLjQzLTMxLjUyLTUzLjE1LTMxLjYxLTg0LjE0LS4yLTczLjY0IDU5LjY3LTEyOCAxMjcuOTUtMTI4IDcwLjU4IDAgMTI4IDU3LjQyIDEyOCAxMjggMCAzMC45Ny0xMS4yNCA2MC44NS0zMS42NSA4NC4xNC0zOS4xMSA0NC42MS01Ni40MiA5MS40Ny02Mi4xIDEwOS40NmE0Ny41MDcgNDcuNTA3IDAgMCAwLTIuMjIgMTQuM3YuMWg0OHYtLjA1YzkuNjgtMzMuMzcgMzUuNzgtNzMuMTggNTIuNDItOTIuMTZDMzM1LjU1IDI2MC44NSAzNTIgMjIwLjM3IDM1MiAxNzYgMzUyIDc4LjggMjczLjIgMCAxNzYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGlzdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMzJINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS02IDQwMEg1NGE2IDYgMCAwIDEtNi02Vjg2YTYgNiAwIDAgMSA2LTZoNDA0YTYgNiAwIDAgMSA2IDZ2MzQwYTYgNiAwIDAgMS02IDZ6bS00Mi05MnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDIwNGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgyMDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnptMC05NnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDIwNGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgyMDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnptMC05NnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDIwNGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgyMDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnptLTI1MiAxMmMwIDE5Ljg4Mi0xNi4xMTggMzYtMzYgMzZzLTM2LTE2LjExOC0zNi0zNiAxNi4xMTgtMzYgMzYtMzYgMzYgMTYuMTE4IDM2IDM2em0wIDk2YzAgMTkuODgyLTE2LjExOCAzNi0zNiAzNnMtMzYtMTYuMTE4LTM2LTM2IDE2LjExOC0zNiAzNi0zNiAzNiAxNi4xMTggMzYgMzZ6bTAgOTZjMCAxOS44ODItMTYuMTE4IDM2LTM2IDM2cy0zNi0xNi4xMTgtMzYtMzYgMTYuMTE4LTM2IDM2LTM2IDM2IDE2LjExOCAzNiAzNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTWFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2MC4wMiAzMmMtMS45NiAwLTMuOTguMzctNS45NiAxLjE2TDM4NC4wMSA5NkgzODRMMjEyIDM1LjI4QTY0LjI1MiA2NC4yNTIgMCAwIDAgMTkxLjc2IDMyYy02LjY5IDAtMTMuMzcgMS4wNS0xOS44MSAzLjE0TDIwLjEyIDg3Ljk1QTMyLjAwNiAzMi4wMDYgMCAwIDAgMCAxMTcuNjZ2MzQ2LjMyQzAgNDczLjE3IDcuNTMgNDgwIDE1Ljk5IDQ4MGMxLjk2IDAgMy45Ny0uMzcgNS45Ni0xLjE2TDE5MiA0MTZsMTcyIDYwLjcxYTYzLjk4IDYzLjk4IDAgMCAwIDQwLjA1LjE1bDE1MS44My01Mi44MUEzMS45OTYgMzEuOTk2IDAgMCAwIDU3NiAzOTQuMzRWNDguMDJjMC05LjE5LTcuNTMtMTYuMDItMTUuOTgtMTYuMDJ6TTIyNCA5MC40MmwxMjggNDUuMTl2Mjg1Ljk3bC0xMjgtNDUuMTlWOTAuNDJ6TTQ4IDQxOC4wNVYxMjkuMDdsMTI4LTQ0LjUzdjI4Ni4ybC0uNjQuMjNMNDggNDE4LjA1em00ODAtMzUuMTNsLTEyOCA0NC41M1YxNDEuMjZsLjY0LS4yNEw1MjggOTMuOTV2Mjg4Ljk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdNZWhCbGFuayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bS04MC0yODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyem0xNjAgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ01laFJvbGxpbmdFeWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptODgtMzA0Yy0zOS44IDAtNzIgMzIuMi03MiA3MnMzMi4yIDcyIDcyIDcyIDcyLTMyLjIgNzItNzItMzIuMi03Mi03Mi03MnptMCAxMTJjLTIyLjEgMC00MC0xNy45LTQwLTQwIDAtMTMuNiA3LjMtMjUuMSAxNy43LTMyLjMtMSAyLjYtMS43IDUuMy0xLjcgOC4zIDAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0yLjktLjctNS43LTEuNy04LjMgMTAuNCA3LjIgMTcuNyAxOC43IDE3LjcgMzIuMyAwIDIyLjEtMTcuOSA0MC00MCA0MHptLTEwNC00MGMwLTM5LjgtMzIuMi03Mi03Mi03MnMtNzIgMzIuMi03MiA3MiAzMi4yIDcyIDcyIDcyIDcyLTMyLjIgNzItNzJ6bS0xMTIgMGMwLTEzLjYgNy4zLTI1LjEgMTcuNy0zMi4zLTEgMi42LTEuNyA1LjMtMS43IDguMyAwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMi45LS43LTUuNy0xLjctOC4zIDEwLjQgNy4yIDE3LjcgMTguNyAxNy43IDMyLjMgMCAyMi4xLTE3LjkgNDAtNDAgNDBzLTQwLTE3LjktNDAtNDB6bTE5MiAxMjhIMTg0Yy0xMy4yIDAtMjQgMTAuOC0yNCAyNHMxMC44IDI0IDI0IDI0aDEyOGMxMy4yIDAgMjQtMTAuOCAyNC0yNHMtMTAuOC0yNC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTWVoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptLTgwLTIxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE2MC02NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bTggMTQ0SDE2MGMtMTMuMiAwLTI0IDEwLjgtMjQgMjRzMTAuOCAyNCAyNCAyNGgxNzZjMTMuMiAwIDI0LTEwLjggMjQtMjRzLTEwLjgtMjQtMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ01pbnVzU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwOCAyODRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMzJjMC02LjYgNS40LTEyIDEyLTEyaDIzMmM2LjYgMCAxMiA1LjQgMTIgMTJ2MzJjMCA2LjYtNS40IDEyLTEyIDEySDEwOHpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2Vjg2YzAtMy4zLTIuNy02LTYtNkg1NGMtMy4zIDAtNiAyLjctNiA2djM0MGMwIDMuMyAyLjcgNiA2IDZoMzQwYzMuMyAwIDYtMi43IDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTW9uZXlCaWxsQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAxNDRjLTUzLjAyIDAtOTYgNTAuMTQtOTYgMTEyIDAgNjEuODUgNDIuOTggMTEyIDk2IDExMiA1MyAwIDk2LTUwLjEzIDk2LTExMiAwLTYxLjg2LTQyLjk4LTExMi05Ni0xMTJ6bTQwIDE2OGMwIDQuNDItMy41OCA4LTggOGgtNjRjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxNnYtNTUuNDRsLS40Ny4zMWE3Ljk5MiA3Ljk5MiAwIDAgMS0xMS4wOS0yLjIybC04Ljg4LTEzLjMxYTcuOTkyIDcuOTkyIDAgMCAxIDIuMjItMTEuMDlsMTUuMzMtMTAuMjJhMjMuOTkgMjMuOTkgMCAwIDEgMTMuMzEtNC4wM0gzMjhjNC40MiAwIDggMy41OCA4IDh2ODhoMTZjNC40MiAwIDggMy41OCA4IDh2MTZ6TTYwOCA2NEgzMkMxNC4zMyA2NCAwIDc4LjMzIDAgOTZ2MzIwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTc2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptLTE2IDI3MmMtMzUuMzUgMC02NCAyOC42NS02NCA2NEgxMTJjMC0zNS4zNS0yOC42NS02NC02NC02NFYxNzZjMzUuMzUgMCA2NC0yOC42NSA2NC02NGg0MTZjMCAzNS4zNSAyOC42NSA2NCA2NCA2NHYxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ01vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc5LjEzNSA1MTJjNzguNzU2IDAgMTUwLjk4Mi0zNS44MDQgMTk4Ljg0NC05NC43NzUgMjguMjctMzQuODMxLTIuNTU4LTg1LjcyMi00Ni4yNDktNzcuNDAxLTgyLjM0OCAxNS42ODMtMTU4LjI3Mi00Ny4yNjgtMTU4LjI3Mi0xMzAuNzkyIDAtNDguNDI0IDI2LjA2LTkyLjI5MiA2Ny40MzQtMTE1LjgzNiAzOC43NDUtMjIuMDUgMjguOTk5LTgwLjc4OC0xNS4wMjItODguOTE5QTI1Ny45MzYgMjU3LjkzNiAwIDAgMCAyNzkuMTM1IDBjLTE0MS4zNiAwLTI1NiAxMTQuNTc1LTI1NiAyNTYgMCAxNDEuMzYgMTE0LjU3NiAyNTYgMjU2IDI1NnptMC00NjRjMTIuOTg1IDAgMjUuNjg5IDEuMjAxIDM4LjAxNiAzLjQ3OC01NC43NiAzMS4xNjMtOTEuNjkzIDkwLjA0Mi05MS42OTMgMTU3LjU1NCAwIDExMy44NDggMTAzLjY0MSAxOTkuMiAyMTUuMjUyIDE3Ny45NDRDNDAyLjU3NCA0MzMuOTY0IDM0NC4zNjYgNDY0IDI3OS4xMzUgNDY0Yy0xMTQuODc1IDAtMjA4LTkzLjEyNS0yMDgtMjA4czkzLjEyNS0yMDggMjA4LTIwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTmV3c3BhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU1MiA2NEgxMTJjLTIwLjg1OCAwLTM4LjY0MyAxMy4zNzctNDUuMjQ4IDMySDI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MjcyYzAgMzAuOTI4IDI1LjA3MiA1NiA1NiA1Nmg0OTZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0Vjg4YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHpNNDggMzkyVjE0NGgxNnYyNDhjMCA0LjQxMS0zLjU4OSA4LTggOHMtOC0zLjU4OS04LTh6bTQ4MCA4SDExMS40MjJjLjM3NC0yLjYxNC41NzgtNS4yODMuNTc4LThWMTEyaDQxNnYyODh6TTE3MiAyODBoMTM2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTk2YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTcyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjk2YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJ6bTI4LTgwaDgwdjQwaC04MHYtNDB6bS00MCAxNDB2LTI0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTM2YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgxNzJjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTE5MiAwdi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDEwNGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzY0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyem0wLTE0NHYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxMDRjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDM2NGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnptMCA3MnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxMDRjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDM2NGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnT2JqZWN0R3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAwIDEyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyVjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTcyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjEySDk2VjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJDNS4zNzMgMzIgMCAzNy4zNzMgMCA0NHY3MmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDEydjI1NkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY3MmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDcyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTEyaDMyMHYxMmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDcyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTcyYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTEyVjEyOGgxMnptLTUyLTY0aDMydjMyaC0zMlY2NHpNMzIgNjRoMzJ2MzJIMzJWNjR6bTMyIDM4NEgzMnYtMzJoMzJ2MzJ6bTQxNiAwaC0zMnYtMzJoMzJ2MzJ6bS00MC02NGgtMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTJIOTZ2LTEyYzAtNi42MjctNS4zNzMtMTItMTItMTJINzJWMTI4aDEyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTEyaDMyMHYxMmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDEydjI1NnptLTM2LTE5MmgtODR2LTUyYzAtNi42MjgtNS4zNzMtMTItMTItMTJIMTA4Yy02LjYyNyAwLTEyIDUuMzcyLTEyIDEydjE2OGMwIDYuNjI4IDUuMzczIDEyIDEyIDEyaDg0djUyYzAgNi42MjggNS4zNzMgMTIgMTIgMTJoMjAwYzYuNjI3IDAgMTItNS4zNzIgMTItMTJWMjA0YzAtNi42MjgtNS4zNzMtMTItMTItMTJ6bS0yNjgtMjRoMTQ0djExMkgxMzZWMTY4em0yNDAgMTc2SDIzMnYtMjRoNzZjNi42MjcgMCAxMi01LjM3MiAxMi0xMnYtNzZoNTZ2MTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdPYmplY3RVbmdyb3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2NCAyMjRjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNzJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNzJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTJoLTg4di0yNGgxMmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyVjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTcyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjEySDk2VjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJDNS4zNzMgMzIgMCAzNy4zNzMgMCA0NHY3MmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDEydjE2MEgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY3MmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDcyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTEyaDg4djI0aC0xMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY3MmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDcyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTEyaDIyNHYxMmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDcyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTcyYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTEyVjIyNGgxMnpNMzUyIDY0aDMydjMyaC0zMlY2NHptMCAyNTZoMzJ2MzJoLTMydi0zMnpNNjQgMzUySDMydi0zMmgzMnYzMnptMC0yNTZIMzJWNjRoMzJ2MzJ6bTMyIDIxNnYtMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMkg3MlYxMjhoMTJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtMTJoMjI0djEyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTJ2MTYwaC0xMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYxMkg5NnptMTI4IDEzNmgtMzJ2LTMyaDMydjMyem0yODAtNjRoLTEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjEySDI1NnYtMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMTJ2LTI0aDg4djEyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNzJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNzJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMTJ2LTg4aDg4djEyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTJ2MTYwem00MCA2NGgtMzJ2LTMyaDMydjMyem0wLTI1NmgtMzJ2LTMyaDMydjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdQYXBlclBsYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MCA2LjVMMjQgMjQ2LjRjLTM0LjQgMTkuOS0zMS4xIDcwLjggNS43IDg1LjlMMTQ0IDM3OS42VjQ2NGMwIDQ2LjQgNTkuMiA2NS41IDg2LjYgMjguNmw0My44LTU5LjEgMTExLjkgNDYuMmM1LjkgMi40IDEyLjEgMy42IDE4LjMgMy42IDguMiAwIDE2LjMtMi4xIDIzLjYtNi4yIDEyLjgtNy4yIDIxLjYtMjAgMjMuOS0zNC41bDU5LjQtMzg3LjJjNi4xLTQwLjEtMzYuOS02OC44LTcxLjUtNDguOXpNMTkyIDQ2NHYtNjQuNmwzNi42IDE1LjFMMTkyIDQ2NHptMjEyLjYtMjguN2wtMTUzLjgtNjMuNUwzOTEgMTY5LjVjMTAuNy0xNS41LTkuNS0zMy41LTIzLjctMjEuMkwxNTUuOCAzMzIuNiA0OCAyODggNDY0IDQ4bC01OS40IDM4Ny4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdQYXVzZUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0wIDQ0OGMtMTEwLjUgMC0yMDAtODkuNS0yMDAtMjAwUzE0NS41IDU2IDI1NiA1NnMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDB6bTk2LTI4MHYxNjBjMCA4LjgtNy4yIDE2LTE2IDE2aC00OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2em0tMTEyIDB2MTYwYzAgOC44LTcuMiAxNi0xNiAxNmgtNDhjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnUGxheUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzEuNyAyMzhsLTE3Ni0xMDdjLTE1LjgtOC44LTM1LjcgMi41LTM1LjcgMjF2MjA4YzAgMTguNCAxOS44IDI5LjggMzUuNyAyMWwxNzYtMTAxYzE2LjQtOS4xIDE2LjQtMzIuOCAwLTQyek01MDQgMjU2QzUwNCAxMTkgMzkzIDggMjU2IDhTOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OHptLTQ0OCAwYzAtMTEwLjUgODkuNS0yMDAgMjAwLTIwMHMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDBTNTYgMzY2LjUgNTYgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdQbHVzU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAyNDB2MzJjMCA2LjYtNS40IDEyLTEyIDEyaC04OHY4OGMwIDYuNi01LjQgMTItMTIgMTJoLTMyYy02LjYgMC0xMi01LjQtMTItMTJ2LTg4aC04OGMtNi42IDAtMTItNS40LTEyLTEydi0zMmMwLTYuNiA1LjQtMTIgMTItMTJoODh2LTg4YzAtNi42IDUuNC0xMiAxMi0xMmgzMmM2LjYgMCAxMiA1LjQgMTIgMTJ2ODhoODhjNi42IDAgMTIgNS40IDEyIDEyem05Ni0xNjB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWODZjMC0zLjMtMi43LTYtNi02SDU0Yy0zLjMgMC02IDIuNy02IDZ2MzQwYzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdRdWVzdGlvbkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkuMDQzIDggOCAxMTkuMDgzIDggMjU2YzAgMTM2Ljk5NyAxMTEuMDQzIDI0OCAyNDggMjQ4czI0OC0xMTEuMDAzIDI0OC0yNDhDNTA0IDExOS4wODMgMzkyLjk1NyA4IDI1NiA4em0wIDQ0OGMtMTEwLjUzMiAwLTIwMC04OS40MzEtMjAwLTIwMCAwLTExMC40OTUgODkuNDcyLTIwMCAyMDAtMjAwIDExMC40OTEgMCAyMDAgODkuNDcxIDIwMCAyMDAgMCAxMTAuNTMtODkuNDMxIDIwMC0yMDAgMjAwem0xMDcuMjQ0LTI1NS4yYzAgNjcuMDUyLTcyLjQyMSA2OC4wODQtNzIuNDIxIDkyLjg2M1YzMDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMmgtNDUuNjQ3Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi04LjY1OWMwLTM1Ljc0NSAyNy4xLTUwLjAzNCA0Ny41NzktNjEuNTE2IDE3LjU2MS05Ljg0NSAyOC4zMjQtMTYuNTQxIDI4LjMyNC0yOS41NzkgMC0xNy4yNDYtMjEuOTk5LTI4LjY5My0zOS43ODQtMjguNjkzLTIzLjE4OSAwLTMzLjg5NCAxMC45NzctNDguOTQyIDI5Ljk2OS00LjA1NyA1LjEyLTExLjQ2IDYuMDcxLTE2LjY2NiAyLjEyNGwtMjcuODI0LTIxLjA5OGMtNS4xMDctMy44NzItNi4yNTEtMTEuMDY2LTIuNjQ0LTE2LjM2M0MxODQuODQ2IDEzMS40OTEgMjE0Ljk0IDExMiAyNjEuNzk0IDExMmM0OS4wNzEgMCAxMDEuNDUgMzguMzA0IDEwMS40NSA4OC44ek0yOTggMzY4YzAgMjMuMTU5LTE4Ljg0MSA0Mi00MiA0MnMtNDItMTguODQxLTQyLTQyIDE4Ljg0MS00MiA0Mi00MiA0MiAxOC44NDEgNDIgNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1JlZ2lzdGVyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0wIDQ0OGMtMTEwLjUzMiAwLTIwMC04OS40NTEtMjAwLTIwMCAwLTExMC41MzEgODkuNDUxLTIwMCAyMDAtMjAwIDExMC41MzIgMCAyMDAgODkuNDUxIDIwMCAyMDAgMCAxMTAuNTMyLTg5LjQ1MSAyMDAtMjAwIDIwMHptMTEwLjQ0Mi04MS43OTFjLTUzLjA0Ni05Ni4yODQtNTAuMjUtOTEuNDY4LTUzLjI3MS05Ni4wODUgMjQuMjY3LTEzLjg3OSAzOS40ODItNDEuNTYzIDM5LjQ4Mi03My4xNzYgMC01Mi41MDMtMzAuMjQ3LTg1LjI1Mi0xMDEuNDk4LTg1LjI1MmgtNzguNjY3Yy02LjYxNyAwLTEyIDUuMzgzLTEyIDEyVjM4MGMwIDYuNjE3IDUuMzgzIDEyIDEyIDEyaDM4LjU2OGM2LjYxNyAwIDEyLTUuMzgzIDEyLTEydi04My42NjNoMzEuOTU4bDQ3LjUxNSA4OS4zMDNhMTEuOTggMTEuOTggMCAwIDAgMTAuNTkzIDYuMzZoNDIuODFjOS4xNCAwIDE0LjkxNC05Ljc5OSAxMC41MS0xNy43OTF6TTI1Ni45MzMgMjM5LjkwNmgtMzMuODc1di02NC4xNGgyNy4zNzdjMzIuNDE3IDAgMzguOTI5IDEyLjEzMyAzOC45MjkgMzEuNzA5LS4wMDEgMjAuOTEzLTExLjUxOCAzMi40MzEtMzIuNDMxIDMyLjQzMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU2FkQ3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTE0NCAzODYuNFYyODBjMC0xMy4yLTEwLjgtMjQtMjQtMjRzLTI0IDEwLjgtMjQgMjR2MTUxLjRDMzE1LjUgNDQ3IDI4Mi44IDQ1NiAyNDggNDU2cy02Ny41LTktOTYtMjQuNlYyODBjMC0xMy4yLTEwLjgtMjQtMjQtMjRzLTI0IDEwLjgtMjQgMjR2MTE0LjRjLTM0LjYtMzYtNTYtODQuNy01Ni0xMzguNCAwLTExMC4zIDg5LjctMjAwIDIwMC0yMDBzMjAwIDg5LjcgMjAwIDIwMGMwIDUzLjctMjEuNCAxMDIuNS01NiAxMzguNHpNMjA1LjggMjM0LjVjNC40LTIuNCA2LjktNy40IDYuMS0xMi40LTQtMjUuMi0zNC4yLTQyLjEtNTkuOC00Mi4xcy01NS45IDE2LjktNTkuOCA0Mi4xYy0uOCA1IDEuNyAxMCA2LjEgMTIuNCA0LjQgMi40IDkuOSAxLjggMTMuNy0xLjZsOS41LTguNWMxNC44LTEzLjIgNDYuMi0xMy4yIDYxIDBsOS41IDguNWMyLjUgMi4zIDcuOSA0LjggMTMuNyAxLjZ6TTM0NCAxODBjLTI1LjcgMC01NS45IDE2LjktNTkuOCA0Mi4xLS44IDUgMS43IDEwIDYuMSAxMi40IDQuNSAyLjQgOS45IDEuOCAxMy43LTEuNmw5LjUtOC41YzE0LjgtMTMuMiA0Ni4yLTEzLjIgNjEgMGw5LjUgOC41YzIuNSAyLjIgOCA0LjcgMTMuNyAxLjYgNC40LTIuNCA2LjktNy40IDYuMS0xMi40LTMuOS0yNS4yLTM0LjEtNDIuMS01OS44LTQyLjF6bS05NiA5MmMtMzAuOSAwLTU2IDI4LjctNTYgNjRzMjUuMSA2NCA1NiA2NCA1Ni0yOC43IDU2LTY0LTI1LjEtNjQtNTYtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NhZFRlYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem04LTE1MmMtMTMuMiAwLTI0IDEwLjgtMjQgMjRzMTAuOCAyNCAyNCAyNGMyMy44IDAgNDYuMyAxMC41IDYxLjYgMjguOCA4LjEgOS44IDIzLjIgMTEuOSAzMy44IDMuMSAxMC4yLTguNSAxMS42LTIzLjYgMy4xLTMzLjhDMzMwIDMyMC44IDI5NC4xIDMwNCAyNTYgMzA0em0tODgtNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0xNjAtNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyem0tMTY1LjYgOTguOEMxNTEgMjkwLjEgMTI2IDMyNS40IDEyNiAzNDIuOWMwIDIyLjcgMTguOCA0MS4xIDQyIDQxLjFzNDItMTguNCA0Mi00MS4xYzAtMTcuNS0yNS01Mi44LTM2LjQtNjguMS0yLjgtMy43LTguNC0zLjctMTEuMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTYXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMy45NDEgMTI5Ljk0MWwtODMuODgyLTgzLjg4MkE0OCA0OCAwIDAgMCAzMTYuMTE4IDMySDQ4QzIxLjQ5IDMyIDAgNTMuNDkgMCA4MHYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxNjMuODgyYTQ4IDQ4IDAgMCAwLTE0LjA1OS0zMy45NDF6TTI3MiA4MHY4MEgxNDRWODBoMTI4em0xMjIgMzUySDU0YTYgNiAwIDAgMS02LTZWODZhNiA2IDAgMCAxIDYtNmg0MnYxMDRjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDE3NmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWODMuODgybDc4LjI0MyA3OC4yNDNhNiA2IDAgMCAxIDEuNzU3IDQuMjQzVjQyNmE2IDYgMCAwIDEtNiA2ek0yMjQgMjMyYy00OC41MjMgMC04OCAzOS40NzctODggODhzMzkuNDc3IDg4IDg4IDg4IDg4LTM5LjQ3NyA4OC04OC0zOS40NzctODgtODgtODh6bTAgMTI4Yy0yMi4wNTYgMC00MC0xNy45NDQtNDAtNDBzMTcuOTQ0LTQwIDQwLTQwIDQwIDE3Ljk0NCA0MCA0MC0xNy45NDQgNDAtNDAgNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NoYXJlU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2MS45MzggMTU4LjA2TDQxNy45NCAxNC4wOTJDMzg3LjkyNi0xNS45MjIgMzM2IDUuMDk3IDMzNiA0OC4wMzJ2NTcuMTk4Yy00Mi40NSAxLjg4LTg0LjAzIDYuNTUtMTIwLjc2IDE3Ljk5LTM1LjE3IDEwLjk1LTYzLjA3IDI3LjU4LTgyLjkxIDQ5LjQyQzEwOC4yMiAxOTkuMiA5NiAyMzIuNiA5NiAyNzEuOTRjMCA2MS42OTcgMzMuMTc4IDExMi40NTUgODQuODcgMTQ0Ljc2IDM3LjU0NiAyMy41MDggODUuMjQ4LTEyLjY1MSA3MS4wMi01NS43NC0xNS41MTUtNDcuMTE5LTE3LjE1Ni03MC45MjMgODQuMTEtNzguNzZWMzM2YzAgNDIuOTkzIDUxLjk2OCA2My45MTMgODEuOTQgMzMuOTRsMTQzLjk5OC0xNDRjMTguNzUtMTguNzQgMTguNzUtNDkuMTQgMC02Ny44OHpNMzg0IDMzNlYyMzIuMTZDMjU1LjMwOSAyMzQuMDgyIDE2Ni40OTIgMjU1LjM1IDIwNi4zMSAzNzYgMTc2Ljc5IDM1Ny41NSAxNDQgMzI0LjA4IDE0NCAyNzEuOTRjMC0xMDkuMzM0IDEyOS4xNC0xMTguOTQ3IDI0MC0xMTkuODVWNDhsMTQ0IDE0NC0xNDQgMTQ0em0yNC43NCA4NC40OTNhODIuNjU4IDgyLjY1OCAwIDAgMCAyMC45NzQtOS4zMDNjNy45NzYtNC45NTIgMTguMjg2LjgyNiAxOC4yODYgMTAuMjE0VjQ2NGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjExMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDEzMmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQuNDg2YzAgNC45MTctMi45ODcgOS4zNjktNy41NjkgMTEuMTUyLTEzLjcwMiA1LjMzMS0yNi4zOTYgMTEuNTM3LTM4LjA1IDE4LjU4NWExMi4xMzggMTIuMTM4IDAgMCAxLTYuMjggMS43NzdINTRhNiA2IDAgMCAwLTYgNnYzNDBhNiA2IDAgMCAwIDYgNmgzNDBhNiA2IDAgMCAwIDYtNnYtMjUuOTY2YzAtNS4zNyAzLjU3OS0xMC4wNTkgOC43NC0xMS41NDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NtaWxlQmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTg0LTE0My40Yy0yMC44IDI1LTUxLjUgMzkuNC04NCAzOS40cy02My4yLTE0LjMtODQtMzkuNGMtOC41LTEwLjItMjMuNi0xMS41LTMzLjgtMy4xLTEwLjIgOC41LTExLjUgMjMuNi0zLjEgMzMuOCAzMCAzNiA3NC4xIDU2LjYgMTIwLjkgNTYuNnM5MC45LTIwLjYgMTIwLjktNTYuNmM4LjUtMTAuMiA3LjEtMjUuMy0zLjEtMzMuOC0xMC4yLTguNC0yNS4zLTcuMS0zMy44IDMuMXpNMTM2LjUgMjExYzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy43IDYuMiA0LjcgOS4zIDMuNyAzLjYtMS4xIDYtNC41IDUuNy04LjMtMy4zLTQyLjEtMzIuMi03MS40LTU2LTcxLjRzLTUyLjcgMjkuMy01NiA3MS40Yy0uMyAzLjcgMi4xIDcuMiA1LjcgOC4zIDMuNCAxLjEgNy40LS41IDkuMy0zLjdsOS41LTE3ek0zMjggMTUyYy0yMy44IDAtNTIuNyAyOS4zLTU2IDcxLjQtLjMgMy43IDIuMSA3LjIgNS43IDguMyAzLjUgMS4xIDcuNC0uNSA5LjMtMy43bDkuNS0xN2M3LjctMTMuNyAxOS4yLTIxLjYgMzEuNS0yMS42czIzLjggNy45IDMxLjUgMjEuNmw5LjUgMTdjMi4xIDMuNyA2LjIgNC43IDkuMyAzLjcgMy42LTEuMSA2LTQuNSA1LjctOC4zLTMuMy00Mi4xLTMyLjItNzEuNC01Ni03MS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTbWlsZVdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0xMTcuOC0xNDYuNGMtMTAuMi04LjUtMjUuMy03LjEtMzMuOCAzLjEtMjAuOCAyNS01MS41IDM5LjQtODQgMzkuNHMtNjMuMi0xNC4zLTg0LTM5LjRjLTguNS0xMC4yLTIzLjctMTEuNS0zMy44LTMuMS0xMC4yIDguNS0xMS41IDIzLjYtMy4xIDMzLjggMzAgMzYgNzQuMSA1Ni42IDEyMC45IDU2LjZzOTAuOS0yMC42IDEyMC45LTU2LjZjOC41LTEwLjIgNy4xLTI1LjMtMy4xLTMzLjh6TTE2OCAyNDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0xNjAtNjBjLTI1LjcgMC01NS45IDE2LjktNTkuOSA0Mi4xLTEuNyAxMS4yIDExLjUgMTguMiAxOS44IDEwLjhsOS41LTguNWMxNC44LTEzLjIgNDYuMi0xMy4yIDYxIDBsOS41IDguNWM4LjUgNy40IDIxLjYuMyAxOS44LTEwLjgtMy44LTI1LjItMzQtNDIuMS01OS43LTQyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NtaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptLTgwLTIxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptNCA3Mi42Yy0yMC44IDI1LTUxLjUgMzkuNC04NCAzOS40cy02My4yLTE0LjMtODQtMzkuNGMtOC41LTEwLjItMjMuNy0xMS41LTMzLjgtMy4xLTEwLjIgOC41LTExLjUgMjMuNi0zLjEgMzMuOCAzMCAzNiA3NC4xIDU2LjYgMTIwLjkgNTYuNnM5MC45LTIwLjYgMTIwLjktNTYuNmM4LjUtMTAuMiA3LjEtMjUuMy0zLjEtMzMuOC0xMC4xLTguNC0yNS4zLTcuMS0zMy44IDMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU25vd2ZsYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC4xIDM1NS4ybC0zOS4yLTIzIDM0LjEtOS4zYzguNC0yLjMgMTMuNC0xMS4xIDExLjEtMTkuNmwtNC4xLTE1LjVjLTIuMi04LjUtMTAuOS0xMy42LTE5LjMtMTEuM0wzNDMgMjk4LjIgMjcxLjIgMjU2bDcxLjktNDIuMiA3OS43IDIxLjdjOC40IDIuMyAxNy0yLjggMTkuMy0xMS4zbDQuMS0xNS41YzIuMi04LjUtMi43LTE3LjMtMTEuMS0xOS42bC0zNC4xLTkuMyAzOS4yLTIzYzcuNS00LjQgMTAuMS0xNC4yIDUuOC0yMS45bC03LjktMTMuOWMtNC4zLTcuNy0xNC0xMC4zLTIxLjUtNS45bC0zOS4yIDIzIDkuMS0zNC43YzIuMi04LjUtMi43LTE3LjMtMTEuMS0xOS42bC0xNS4yLTQuMWMtOC40LTIuMy0xNyAyLjgtMTkuMyAxMS4zbC0yMS4zIDgxLTcxLjkgNDIuMnYtODQuNUwzMDYgNzAuNGM2LjEtNi4yIDYuMS0xNi40IDAtMjIuNmwtMTEuMS0xMS4zYy02LjEtNi4yLTE2LjEtNi4yLTIyLjIgMGwtMjQuOSAyNS40VjE2YzAtOC44LTctMTYtMTUuNy0xNmgtMTUuN2MtOC43IDAtMTUuNyA3LjItMTUuNyAxNnY0Ni4xbC0yNC45LTI1LjRjLTYuMS02LjItMTYuMS02LjItMjIuMiAwTDE0Mi4xIDQ4Yy02LjEgNi4yLTYuMSAxNi40IDAgMjIuNmw1OC4zIDU5LjN2ODQuNWwtNzEuOS00Mi4yLTIxLjMtODFjLTIuMi04LjUtMTAuOS0xMy42LTE5LjMtMTEuM0w3Mi43IDg0Yy04LjQgMi4zLTEzLjQgMTEuMS0xMS4xIDE5LjZsOS4xIDM0LjctMzkuMi0yM2MtNy41LTQuNC0xNy4xLTEuOC0yMS41IDUuOWwtNy45IDEzLjljLTQuMyA3LjctMS44IDE3LjQgNS44IDIxLjlsMzkuMiAyMy0zNC4xIDkuMWMtOC40IDIuMy0xMy40IDExLjEtMTEuMSAxOS42TDYgMjI0LjJjMi4yIDguNSAxMC45IDEzLjYgMTkuMyAxMS4zbDc5LjctMjEuNyA3MS45IDQyLjItNzEuOSA0Mi4yLTc5LjctMjEuN2MtOC40LTIuMy0xNyAyLjgtMTkuMyAxMS4zbC00LjEgMTUuNWMtMi4yIDguNSAyLjcgMTcuMyAxMS4xIDE5LjZsMzQuMSA5LjMtMzkuMiAyM2MtNy41IDQuNC0xMC4xIDE0LjItNS44IDIxLjlMMTAgMzkxYzQuMyA3LjcgMTQgMTAuMyAyMS41IDUuOWwzOS4yLTIzLTkuMSAzNC43Yy0yLjIgOC41IDIuNyAxNy4zIDExLjEgMTkuNmwxNS4yIDQuMWM4LjQgMi4zIDE3LTIuOCAxOS4zLTExLjNsMjEuMy04MSA3MS45LTQyLjJ2ODQuNWwtNTguMyA1OS4zYy02LjEgNi4yLTYuMSAxNi40IDAgMjIuNmwxMS4xIDExLjNjNi4xIDYuMiAxNi4xIDYuMiAyMi4yIDBsMjQuOS0yNS40VjQ5NmMwIDguOCA3IDE2IDE1LjcgMTZoMTUuN2M4LjcgMCAxNS43LTcuMiAxNS43LTE2di00Ni4xbDI0LjkgMjUuNGM2LjEgNi4yIDE2LjEgNi4yIDIyLjIgMGwxMS4xLTExLjNjNi4xLTYuMiA2LjEtMTYuNCAwLTIyLjZsLTU4LjMtNTkuM3YtODQuNWw3MS45IDQyLjIgMjEuMyA4MWMyLjIgOC41IDEwLjkgMTMuNiAxOS4zIDExLjNMMzc1IDQyOGM4LjQtMi4zIDEzLjQtMTEuMSAxMS4xLTE5LjZsLTkuMS0zNC43IDM5LjIgMjNjNy41IDQuNCAxNy4xIDEuOCAyMS41LTUuOWw3LjktMTMuOWM0LjYtNy41IDIuMS0xNy4zLTUuNS0yMS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptLTYgNDAwSDU0Yy0zLjMgMC02LTIuNy02LTZWODZjMC0zLjMgMi43LTYgNi02aDM0MGMzLjMgMCA2IDIuNyA2IDZ2MzQwYzAgMy4zLTIuNyA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3RhckhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDM4NS4zbC0xMjQuMyA2NS40IDIzLjctMTM4LjQtMTAwLjYtOTggMTM5LTIwLjIgNjIuMi0xMjZWMGMtMTEuNCAwLTIyLjggNS45LTI4LjcgMTcuOEwxOTQgMTUwLjIgNDcuOSAxNzEuNGMtMjYuMiAzLjgtMzYuNyAzNi4xLTE3LjcgNTQuNmwxMDUuNyAxMDMtMjUgMTQ1LjVjLTQuNSAyNi4xIDIzIDQ2IDQ2LjQgMzMuN0wyODggNDM5LjZ2LTU0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1N0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4LjEgMTcxLjVMMzgyIDE1MC4yIDMxNi43IDE3LjhjLTExLjctMjMuNi00NS42LTIzLjktNTcuNCAwTDE5NCAxNTAuMiA0Ny45IDE3MS41Yy0yNi4yIDMuOC0zNi43IDM2LjEtMTcuNyA1NC42bDEwNS43IDEwMy0yNSAxNDUuNWMtNC41IDI2LjMgMjMuMiA0NiA0Ni40IDMzLjdMMjg4IDQzOS42bDEzMC43IDY4LjdjMjMuMiAxMi4yIDUwLjktNy40IDQ2LjQtMzMuN2wtMjUtMTQ1LjUgMTA1LjctMTAzYzE5LTE4LjUgOC41LTUwLjgtMTcuNy01NC42ek0zODguNiAzMTIuM2wyMy43IDEzOC40TDI4OCAzODUuNGwtMTI0LjMgNjUuMyAyMy43LTEzOC40LTEwMC42LTk4IDEzOS0yMC4yIDYyLjItMTI2IDYyLjIgMTI2IDEzOSAyMC4yLTEwMC42IDk4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTdGlja3lOb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzNDguMTA2VjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDhINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MS45ODhjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgyNjguMTE4YTQ4IDQ4IDAgMCAwIDMzLjk0MS0xNC4wNTlsODMuODgyLTgzLjg4MkE0OCA0OCAwIDAgMCA0NDggMzQ4LjEwNnptLTEyOCA4MHYtNzYuMTE4aDc2LjExOEwzMjAgNDI4LjEwNnpNNDAwIDgwdjIyMy45ODhIMjk2Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTA0SDQ4VjgwaDM1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3RvcENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2QzUwNCAxMTkgMzkzIDggMjU2IDhTOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OHptLTQ0OCAwYzAtMTEwLjUgODkuNS0yMDAgMjAwLTIwMHMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDBTNTYgMzY2LjUgNTYgMjU2em0yOTYtODB2MTYwYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1N1biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTQuMiAyMjEuOWwtNTkuOC00MC41IDEzLjctNzFjMi42LTEzLjItMS42LTI2LjgtMTEuMS0zNi40LTkuNi05LjUtMjMuMi0xMy43LTM2LjItMTEuMWwtNzAuOSAxMy43LTQwLjQtNTkuOWMtMTUuMS0yMi4zLTUxLjktMjIuMy02NyAwbC00MC40IDU5LjktNzAuOC0xMy43Qzk4IDYwLjQgODQuNSA2NC41IDc1IDc0LjFjLTkuNSA5LjYtMTMuNyAyMy4xLTExLjEgMzYuM2wxMy43IDcxLTU5LjggNDAuNUM2LjYgMjI5LjUgMCAyNDIgMCAyNTUuNXM2LjcgMjYgMTcuOCAzMy41bDU5LjggNDAuNS0xMy43IDcxYy0yLjYgMTMuMiAxLjYgMjYuOCAxMS4xIDM2LjMgOS41IDkuNSAyMi45IDEzLjcgMzYuMyAxMS4xbDcwLjgtMTMuNyA0MC40IDU5LjlDMjMwIDUwNS4zIDI0Mi42IDUxMiAyNTYgNTEyczI2LTYuNyAzMy41LTE3LjhsNDAuNC01OS45IDcwLjkgMTMuN2MxMy40IDIuNyAyNi44LTEuNiAzNi4zLTExLjEgOS41LTkuNSAxMy42LTIzLjEgMTEuMS0zNi4zbC0xMy43LTcxIDU5LjgtNDAuNWMxMS4xLTcuNSAxNy44LTIwLjEgMTcuOC0zMy41LS4xLTEzLjYtNi43LTI2LjEtMTcuOS0zMy43em0tMTEyLjkgODUuNmwxNy42IDkxLjItOTEtMTcuNkwyNTYgNDU4bC01MS45LTc3LTkwLjkgMTcuNiAxNy42LTkxLjItNzYuOC01MiA3Ni44LTUyLTE3LjYtOTEuMiA5MSAxNy42TDI1NiA1M2w1MS45IDc2LjkgOTEtMTcuNi0xNy42IDkxLjEgNzYuOCA1Mi03Ni44IDUyLjF6TTI1NiAxNTJjLTU3LjMgMC0xMDQgNDYuNy0xMDQgMTA0czQ2LjcgMTA0IDEwNCAxMDQgMTA0LTQ2LjcgMTA0LTEwNC00Ni43LTEwNC0xMDQtMTA0em0wIDE2MGMtMzAuOSAwLTU2LTI1LjEtNTYtNTZzMjUuMS01NiA1Ni01NiA1NiAyNS4xIDU2IDU2LTI1LjEgNTYtNTYgNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1N1cnByaXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMC0xNzZjLTM1LjMgMC02NCAyOC43LTY0IDY0czI4LjcgNjQgNjQgNjQgNjQtMjguNyA2NC02NC0yOC43LTY0LTY0LTY0em0tNDgtNzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyem0xMjgtMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdUaHVtYnNEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2Ni4yNyAyMjUuMzFjNC42NzQtMjIuNjQ3Ljg2NC00NC41MzgtOC45OS02Mi45OSAyLjk1OC0yMy44NjgtNC4wMjEtNDguNTY1LTE3LjM0LTY2Ljk5QzQzOC45ODYgMzkuNDIzIDQwNC4xMTcgMCAzMjcgMGMtNyAwLTE1IC4wMS0yMi4yMi4wMUMyMDEuMTk1LjAxIDE2OC45OTcgNDAgMTI4IDQwaC0xMC44NDVjLTUuNjQtNC45NzUtMTMuMDQyLTgtMjEuMTU1LThIMzJDMTQuMzI3IDMyIDAgNDYuMzI3IDAgNjR2MjQwYzAgMTcuNjczIDE0LjMyNyAzMiAzMiAzMmg2NGMxMS44NDIgMCAyMi4xNzUtNi40MzggMjcuNzA4LTE2aDcuMDUyYzE5LjE0NiAxNi45NTMgNDYuMDEzIDYwLjY1MyA2OC43NiA4My40IDEzLjY2NyAxMy42NjcgMTAuMTUzIDEwOC42IDcxLjc2IDEwOC42IDU3LjU4IDAgOTUuMjctMzEuOTM2IDk1LjI3LTEwNC43MyAwLTE4LjQxLTMuOTMtMzMuNzMtOC44NS00Ni41NGgzNi40OGM0OC42MDIgMCA4NS44Mi00MS41NjUgODUuODItODUuNTggMC0xOS4xNS00Ljk2LTM0Ljk5LTEzLjczLTQ5Ljg0ek02NCAyOTZjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHMxMC43NDUtMjQgMjQtMjQgMjQgMTAuNzQ1IDI0IDI0LTEwLjc0NSAyNC0yNCAyNHptMzMwLjE4IDE2LjczSDI5MC4xOWMwIDM3LjgyIDI4LjM2IDU1LjM3IDI4LjM2IDk0LjU0IDAgMjMuNzUgMCA1Ni43My00Ny4yNyA1Ni43My0xOC45MS0xOC45MS05LjQ2LTY2LjE4LTM3LjgyLTk0LjU0QzIwNi45IDM0Mi44OSAxNjcuMjggMjcyIDEzOC45MiAyNzJIMTI4Vjg1LjgzYzUzLjYxMSAwIDEwMC4wMDEtMzcuODIgMTcxLjY0LTM3LjgyaDM3LjgyYzM1LjUxMiAwIDYwLjgyIDE3LjEyIDUzLjEyIDY1LjkgMTUuMiA4LjE2IDI2LjUgMzYuNDQgMTMuOTQgNTcuNTcgMjEuNTgxIDIwLjM4NCAxOC42OTkgNTEuMDY1IDUuMjEgNjUuNjIgOS40NSAwIDIyLjM2IDE4LjkxIDIyLjI3IDM3LjgxLS4wOSAxOC45MS0xNi43MSAzNy44Mi0zNy44MiAzNy44MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnVGh1bWJzVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY2LjI3IDI4Ni42OUM0NzUuMDQgMjcxLjg0IDQ4MCAyNTYgNDgwIDIzNi44NWMwLTQ0LjAxNS0zNy4yMTgtODUuNTgtODUuODItODUuNThIMzU3LjdjNC45Mi0xMi44MSA4Ljg1LTI4LjEzIDguODUtNDYuNTRDMzY2LjU1IDMxLjkzNiAzMjguODYgMCAyNzEuMjggMGMtNjEuNjA3IDAtNTguMDkzIDk0LjkzMy03MS43NiAxMDguNi0yMi43NDcgMjIuNzQ3LTQ5LjYxNSA2Ni40NDctNjguNzYgODMuNEgzMmMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMydjI0MGMwIDE3LjY3MyAxNC4zMjcgMzIgMzIgMzJoNjRjMTQuODkzIDAgMjcuNDA4LTEwLjE3NCAzMC45NzgtMjMuOTUgNDQuNTA5IDEuMDAxIDc1LjA2IDM5Ljk0IDE3Ny44MDIgMzkuOTQgNy4yMiAwIDE1LjIyLjAxIDIyLjIyLjAxIDc3LjExNyAwIDExMS45ODYtMzkuNDIzIDExMi45NC05NS4zMyAxMy4zMTktMTguNDI1IDIwLjI5OS00My4xMjIgMTcuMzQtNjYuOTkgOS44NTQtMTguNDUyIDEzLjY2NC00MC4zNDMgOC45OS02Mi45OXptLTYxLjc1IDUzLjgzYzEyLjU2IDIxLjEzIDEuMjYgNDkuNDEtMTMuOTQgNTcuNTcgNy43IDQ4Ljc4LTE3LjYwOCA2NS45LTUzLjEyIDY1LjloLTM3LjgyYy03MS42MzkgMC0xMTguMDI5LTM3LjgyLTE3MS42NC0zNy44MlYyNDBoMTAuOTJjMjguMzYgMCA2Ny45OC03MC44OSA5NC41NC05Ny40NiAyOC4zNi0yOC4zNiAxOC45MS03NS42MyAzNy44Mi05NC41NCA0Ny4yNyAwIDQ3LjI3IDMyLjk4IDQ3LjI3IDU2LjczIDAgMzkuMTctMjguMzYgNTYuNzItMjguMzYgOTQuNTRoMTAzLjk5YzIxLjExIDAgMzcuNzMgMTguOTEgMzcuODIgMzcuODIuMDkgMTguOS0xMi44MiAzNy44MS0yMi4yNyAzNy44MSAxMy40ODkgMTQuNTU1IDE2LjM3MSA0NS4yMzYtNS4yMSA2NS42MnpNODggNDMyYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNHMtMjQtMTAuNzQ1LTI0LTI0IDEwLjc0NS0yNCAyNC0yNCAyNCAxMC43NDUgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1RpbWVzQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTAgNDQ4Yy0xMTAuNSAwLTIwMC04OS41LTIwMC0yMDBTMTQ1LjUgNTYgMjU2IDU2czIwMCA4OS41IDIwMCAyMDAtODkuNSAyMDAtMjAwIDIwMHptMTAxLjgtMjYyLjJMMjk1LjYgMjU2bDYyLjIgNjIuMmM0LjcgNC43IDQuNyAxMi4zIDAgMTdsLTIyLjYgMjIuNmMtNC43IDQuNy0xMi4zIDQuNy0xNyAwTDI1NiAyOTUuNmwtNjIuMiA2Mi4yYy00LjcgNC43LTEyLjMgNC43LTE3IDBsLTIyLjYtMjIuNmMtNC43LTQuNy00LjctMTIuMyAwLTE3bDYyLjItNjIuMi02Mi4yLTYyLjJjLTQuNy00LjctNC43LTEyLjMgMC0xN2wyMi42LTIyLjZjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDYyLjIgNjIuMiA2Mi4yLTYyLjJjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDIyLjYgMjIuNmM0LjcgNC43IDQuNyAxMi4zIDAgMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1RpcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMTI5LjEtMzAzLjhjLTMuOC00LjQtMTAuMy01LjQtMTUuMy0yLjVsLTgwIDQ4Yy0zLjYgMi4yLTUuOCA2LjEtNS44IDEwLjNzMi4yIDguMSA1LjggMTAuM2w4MCA0OGM1LjQgMy4yIDExLjggMS42IDE1LjMtMi41IDMuOC00LjUgMy45LTExIC4xLTE1LjVMMzQzLjYgMjA4bDMzLjYtNDAuM2MzLjgtNC41IDMuNy0xMS4xLS4xLTE1LjV6TTIyMCAyMDhjMC00LjItMi4yLTguMS01LjgtMTAuM2wtODAtNDhjLTUtMy0xMS41LTEuOS0xNS4zIDIuNS0zLjggNC41LTMuOSAxMS0uMSAxNS41bDMzLjYgNDAuMy0zMy42IDQwLjNjLTMuOCA0LjUtMy43IDExIC4xIDE1LjUgMy41IDQuMSA5LjkgNS43IDE1LjMgMi41bDgwLTQ4YzMuNi0yLjIgNS44LTYuMSA1LjgtMTAuM3ptMjggNjRjLTQ1LjQgMC0xMDAuOSAzOC4zLTEwNy44IDkzLjMtMS41IDExLjggNi45IDIxLjYgMTUuNSAxNy45QzE3OC40IDM3My41IDIxMiAzNjggMjQ4IDM2OHM2OS42IDUuNSA5Mi4zIDE1LjJjOC41IDMuNyAxNy02IDE1LjUtMTcuOS02LjktNTUtNjIuNC05My4zLTEwNy44LTkzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1RyYXNoQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2OCA0MTZoMjRhMTIgMTIgMCAwIDAgMTItMTJWMTg4YTEyIDEyIDAgMCAwLTEyLTEyaC0yNGExMiAxMiAwIDAgMC0xMiAxMnYyMTZhMTIgMTIgMCAwIDAgMTIgMTJ6TTQzMiA4MGgtODIuNDFsLTM0LTU2LjdBNDggNDggMCAwIDAgMjc0LjQxIDBIMTczLjU5YTQ4IDQ4IDAgMCAwLTQxLjE2IDIzLjNMOTguNDEgODBIMTZBMTYgMTYgMCAwIDAgMCA5NnYxNmExNiAxNiAwIDAgMCAxNiAxNmgxNnYzMzZhNDggNDggMCAwIDAgNDggNDhoMjg4YTQ4IDQ4IDAgMCAwIDQ4LTQ4VjEyOGgxNmExNiAxNiAwIDAgMCAxNi0xNlY5NmExNiAxNiAwIDAgMC0xNi0xNnpNMTcxLjg0IDUwLjkxQTYgNiAwIDAgMSAxNzcgNDhoOTRhNiA2IDAgMCAxIDUuMTUgMi45MUwyOTMuNjEgODBIMTU0LjM5ek0zNjggNDY0SDgwVjEyOGgyODh6bS0yMTItNDhoMjRhMTIgMTIgMCAwIDAgMTItMTJWMTg4YTEyIDEyIDAgMCAwLTEyLTEyaC0yNGExMiAxMiAwIDAgMC0xMiAxMnYyMTZhMTIgMTIgMCAwIDAgMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1VzZXJDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDEwNGMtNTMgMC05NiA0My05NiA5NnM0MyA5NiA5NiA5NiA5Ni00MyA5Ni05Ni00My05Ni05Ni05NnptMCAxNDRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em0wLTI0MEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtNDkuNyAwLTk1LjEtMTguMy0xMzAuMS00OC40IDE0LjktMjMgNDAuNC0zOC42IDY5LjYtMzkuNSAyMC44IDYuNCA0MC42IDkuNiA2MC41IDkuNnMzOS43LTMuMSA2MC41LTkuNmMyOS4yIDEgNTQuNyAxNi41IDY5LjYgMzkuNS0zNSAzMC4xLTgwLjQgNDguNC0xMzAuMSA0OC40em0xNjIuNy04NC4xYy0yNC40LTMxLjQtNjIuMS01MS45LTEwNS4xLTUxLjktMTAuMiAwLTI2IDkuNi01Ny42IDkuNi0zMS41IDAtNDcuNC05LjYtNTcuNi05LjYtNDIuOSAwLTgwLjYgMjAuNS0xMDUuMSA1MS45QzYxLjkgMzM5LjIgNDggMjk5LjIgNDggMjU2YzAtMTEwLjMgODkuNy0yMDAgMjAwLTIwMHMyMDAgODkuNyAyMDAgMjAwYzAgNDMuMi0xMy45IDgzLjItMzcuMyAxMTUuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuNiAzMDRjLTI4LjcgMC00Mi41IDE2LTg5LjYgMTYtNDcuMSAwLTYwLjgtMTYtODkuNi0xNkM2MC4yIDMwNCAwIDM2NC4yIDAgNDM4LjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OHYtMjUuNmMwLTc0LjItNjAuMi0xMzQuNC0xMzQuNC0xMzQuNHpNNDAwIDQ2NEg0OHYtMjUuNmMwLTQ3LjYgMzguOC04Ni40IDg2LjQtODYuNCAxNC42IDAgMzguMyAxNiA4OS42IDE2IDUxLjcgMCA3NC45LTE2IDg5LjYtMTYgNDcuNiAwIDg2LjQgMzguOCA4Ni40IDg2LjRWNDY0ek0yMjQgMjg4Yzc5LjUgMCAxNDQtNjQuNSAxNDQtMTQ0UzMwMy41IDAgMjI0IDAgODAgNjQuNSA4MCAxNDRzNjQuNSAxNDQgMTQ0IDE0NHptMC0yNDBjNTIuOSAwIDk2IDQzLjEgOTYgOTZzLTQzLjEgOTYtOTYgOTYtOTYtNDMuMS05Ni05NiA0My4xLTk2IDk2LTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdXaW5kb3dDbG9zZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0wIDM5NGMwIDMuMy0yLjcgNi02IDZINTRjLTMuMyAwLTYtMi43LTYtNlY4NmMwLTMuMyAyLjctNiA2LTZoNDA0YzMuMyAwIDYgMi43IDYgNnYzNDB6TTM1Ni41IDE5NC42TDI5NS4xIDI1Nmw2MS40IDYxLjRjNC42IDQuNiA0LjYgMTIuMSAwIDE2LjhsLTIyLjMgMjIuM2MtNC42IDQuNi0xMi4xIDQuNi0xNi44IDBMMjU2IDI5NS4xbC02MS40IDYxLjRjLTQuNiA0LjYtMTIuMSA0LjYtMTYuOCAwbC0yMi4zLTIyLjNjLTQuNi00LjYtNC42LTEyLjEgMC0xNi44bDYxLjQtNjEuNC02MS40LTYxLjRjLTQuNi00LjYtNC42LTEyLjEgMC0xNi44bDIyLjMtMjIuM2M0LjYtNC42IDEyLjEtNC42IDE2LjggMGw2MS40IDYxLjQgNjEuNC02MS40YzQuNi00LjYgMTIuMS00LjYgMTYuOCAwbDIyLjMgMjIuM2M0LjcgNC42IDQuNyAxMi4xIDAgMTYuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnV2luZG93TWF4aW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptMCAzOTRjMCAzLjMtMi43IDYtNiA2SDU0Yy0zLjMgMC02LTIuNy02LTZWMTkyaDQxNnYyMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1dpbmRvd01pbmltaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCA0ODBIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoNDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdXaW5kb3dSZXN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAwSDE0NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2NDhINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djMyMGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzMjBjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQ4aDQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tOTYgNDY0SDQ4VjI1NmgzMjB2MjA4em05Ni05NmgtNDhWMTQ0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDE0NFY0OGgzMjB2MzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBGYUJhcnMgfSBmcm9tICdyZWFjdC1pY29ucy9mYSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VOYXZiYXJDb250ZXh0IH0gZnJvbSAnLi9OYXZiYXJDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IE5hdmJhclRvZ2dsZSA9ICh7XG4gIGJhckljb246IEJhckljb24gPSBGYUJhcnMsXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgaXNPcGVuLCBzZXRJc09wZW4gfSA9IHVzZU5hdmJhckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLnRvZ2dsZSwgY3VzdG9tVGhlbWUpO1xuICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICBzZXRJc09wZW4oIWlzT3Blbik7XG4gIH07XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICBcImJ1dHRvblwiLFxuICAgIHtcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1uYXZiYXItdG9nZ2xlXCIsXG4gICAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogXCJzci1vbmx5XCIsIGNoaWxkcmVuOiBcIk9wZW4gbWFpbiBtZW51XCIgfSksXG4gICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goQmFySWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuaWNvbiB9KVxuICAgICAgXVxuICAgIH1cbiAgKTtcbn07XG5cbmV4cG9ydCB7IE5hdmJhclRvZ2dsZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TmF2YmFyVG9nZ2xlLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgTmF2YmFyQnJhbmQgfSBmcm9tICcuL05hdmJhckJyYW5kLm1qcyc7XG5pbXBvcnQgeyBOYXZiYXJDb2xsYXBzZSB9IGZyb20gJy4vTmF2YmFyQ29sbGFwc2UubWpzJztcbmltcG9ydCB7IE5hdmJhckNvbnRleHQgfSBmcm9tICcuL05hdmJhckNvbnRleHQubWpzJztcbmltcG9ydCB7IE5hdmJhckxpbmsgfSBmcm9tICcuL05hdmJhckxpbmsubWpzJztcbmltcG9ydCB7IE5hdmJhclRvZ2dsZSB9IGZyb20gJy4vTmF2YmFyVG9nZ2xlLm1qcyc7XG5cbmNvbnN0IE5hdmJhckNvbXBvbmVudCA9ICh7XG4gIGJvcmRlcixcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgZmx1aWQgPSBmYWxzZSxcbiAgbWVudU9wZW4sXG4gIHJvdW5kZWQsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUobWVudU9wZW4pO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLm5hdmJhciwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChOYXZiYXJDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IHRoZW1lLCBpc09wZW4sIHNldElzT3BlbiB9LCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcIm5hdlwiLFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgdGhlbWUucm9vdC5iYXNlLFxuICAgICAgICB0aGVtZS5yb290LmJvcmRlcmVkW2JvcmRlciA/IFwib25cIiA6IFwib2ZmXCJdLFxuICAgICAgICB0aGVtZS5yb290LnJvdW5kZWRbcm91bmRlZCA/IFwib25cIiA6IFwib2ZmXCJdLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3QuaW5uZXIuYmFzZSwgdGhlbWUucm9vdC5pbm5lci5mbHVpZFtmbHVpZCA/IFwib25cIiA6IFwib2ZmXCJdKSwgY2hpbGRyZW4gfSlcbiAgICB9XG4gICkgfSk7XG59O1xuTmF2YmFyQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJOYXZiYXJcIjtcbk5hdmJhckJyYW5kLmRpc3BsYXlOYW1lID0gXCJOYXZiYXIuQnJhbmRcIjtcbk5hdmJhckNvbGxhcHNlLmRpc3BsYXlOYW1lID0gXCJOYXZiYXIuQ29sbGFwc2VcIjtcbk5hdmJhckxpbmsuZGlzcGxheU5hbWUgPSBcIk5hdmJhci5MaW5rXCI7XG5OYXZiYXJUb2dnbGUuZGlzcGxheU5hbWUgPSBcIk5hdmJhci5Ub2dnbGVcIjtcbmNvbnN0IE5hdmJhciA9IE9iamVjdC5hc3NpZ24oTmF2YmFyQ29tcG9uZW50LCB7XG4gIEJyYW5kOiBOYXZiYXJCcmFuZCxcbiAgQ29sbGFwc2U6IE5hdmJhckNvbGxhcHNlLFxuICBMaW5rOiBOYXZiYXJMaW5rLFxuICBUb2dnbGU6IE5hdmJhclRvZ2dsZVxufSk7XG5cbmV4cG9ydCB7IE5hdmJhciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TmF2YmFyLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VJZCwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBEcm9wZG93biB9IGZyb20gJy4uL0Ryb3Bkb3duL0Ryb3Bkb3duLm1qcyc7XG5pbXBvcnQgJy4uL0Ryb3Bkb3duL0Ryb3Bkb3duQ29udGV4dC5tanMnO1xuaW1wb3J0ICcuLi9Ecm9wZG93bi9Ecm9wZG93bkl0ZW0ubWpzJztcblxuY29uc3QgTWVnYU1lbnVEcm9wZG93biA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICB0b2dnbGUsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IFtsYWJlbGxlZEJ5LCBzZXRMYWJlbGxlZEJ5XSA9IHVzZVN0YXRlKHZvaWQgMCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkubWVnYU1lbnUuZHJvcGRvd24sIGN1c3RvbVRoZW1lKTtcbiAgaWYgKHRvZ2dsZSkge1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgRHJvcGRvd24sXG4gICAgICB7XG4gICAgICAgIGlubGluZTogdHJ1ZSxcbiAgICAgICAgbGFiZWw6IHRvZ2dsZSxcbiAgICAgICAgcGxhY2VtZW50OiBcImJvdHRvbVwiLFxuICAgICAgICB0aGVtZTogdGhlbWUudG9nZ2xlLFxuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSxcbiAgICAgICAgY2hpbGRyZW5cbiAgICAgIH1cbiAgICApO1xuICB9XG4gIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgY29uc3QgcmVmID0gdXNlUmVmKG51bGwpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGZpbmRUb2dnbGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIGNvbnN0IG1lZ2FNZW51ID0gcmVmLmN1cnJlbnQ/LmNsb3Nlc3QoXCJuYXZcIik7XG4gICAgICByZXR1cm4gbWVnYU1lbnU/LnF1ZXJ5U2VsZWN0b3IoJ1thcmlhLWhhc3BvcHVwPVwibWVudVwiXScpO1xuICAgIH07XG4gICAgc2V0TGFiZWxsZWRCeShmaW5kVG9nZ2xlKCk/LmlkKTtcbiAgfSwgW10pO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGxhYmVsbGVkQnksXG4gICAgICBpZCxcbiAgICAgIHJlZixcbiAgICAgIHJvbGU6IFwibWVudVwiLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApO1xufTtcbk1lZ2FNZW51RHJvcGRvd24uZGlzcGxheU5hbWUgPSBcIk1lZ2FNZW51LkRyb3Bkb3duXCI7XG5cbmV4cG9ydCB7IE1lZ2FNZW51RHJvcGRvd24gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1lZ2FNZW51RHJvcGRvd24ubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdXNlSWQsIHVzZVJlZiwgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgTWVnYU1lbnVEcm9wZG93blRvZ2dsZSA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCBpZCA9IHVzZUlkKCk7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgW2NvbnRyb2xzLCBzZXRDb250cm9sc10gPSB1c2VTdGF0ZSh2b2lkIDApO1xuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0RXhwYW5kZWRdID0gdXNlU3RhdGUodm9pZCAwKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5tZWdhTWVudS5kcm9wZG93blRvZ2dsZSwgY3VzdG9tVGhlbWUpO1xuICBjb25zdCBmaW5kRHJvcGRvd24gPSBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBtZWdhTWVudSA9IHJlZi5jdXJyZW50Py5jbG9zZXN0KFwibmF2XCIpO1xuICAgIHJldHVybiBtZWdhTWVudT8ucXVlcnlTZWxlY3RvcignW3JvbGU9XCJtZW51XCJdJyk7XG4gIH07XG4gIGNvbnN0IG9uQ2xpY2sgPSBmdW5jdGlvbigpIHtcbiAgICBmaW5kRHJvcGRvd24oKT8uY2xhc3NMaXN0LnRvZ2dsZShcImhpZGRlblwiKTtcbiAgICBzZXRFeHBhbmRlZCghaXNFeHBhbmRlZCk7XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZHJvcGRvd24gPSBmaW5kRHJvcGRvd24oKTtcbiAgICBjb25zdCBpc0Ryb3Bkb3duSGlkZGVuID0gZHJvcGRvd24/LmNsYXNzTGlzdC5jb250YWlucyhcImhpZGRlblwiKTtcbiAgICBzZXRDb250cm9scyhkcm9wZG93bj8uaWQpO1xuICAgIHNldEV4cGFuZGVkKCFpc0Ryb3Bkb3duSGlkZGVuKTtcbiAgfSwgW10pO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcImJ1dHRvblwiLFxuICAgIHtcbiAgICAgIFwiYXJpYS1jb250cm9sc1wiOiBjb250cm9scyxcbiAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBpc0V4cGFuZGVkLFxuICAgICAgXCJhcmlhLWhhc3BvcHVwXCI6IFwibWVudVwiLFxuICAgICAgaWQsXG4gICAgICBvbkNsaWNrLFxuICAgICAgcmVmLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApO1xufTtcbk1lZ2FNZW51RHJvcGRvd25Ub2dnbGUuZGlzcGxheU5hbWUgPSBcIk1lZ2FNZW51LkRyb3Bkb3duVG9nZ2xlXCI7XG5cbmV4cG9ydCB7IE1lZ2FNZW51RHJvcGRvd25Ub2dnbGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1lZ2FNZW51RHJvcGRvd25Ub2dnbGUubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBOYXZiYXIgfSBmcm9tICcuLi9OYXZiYXIvTmF2YmFyLm1qcyc7XG5pbXBvcnQgJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCAnLi4vTmF2YmFyL05hdmJhckNvbnRleHQubWpzJztcbmltcG9ydCAncmVhY3QtaWNvbnMvZmEnO1xuaW1wb3J0IHsgTWVnYU1lbnVEcm9wZG93biB9IGZyb20gJy4vTWVnYU1lbnVEcm9wZG93bi5tanMnO1xuaW1wb3J0IHsgTWVnYU1lbnVEcm9wZG93blRvZ2dsZSB9IGZyb20gJy4vTWVnYU1lbnVEcm9wZG93blRvZ2dsZS5tanMnO1xuXG5jb25zdCBNZWdhTWVudUNvbXBvbmVudCA9ICh7IGNoaWxkcmVuLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLm1lZ2FNZW51LCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KE5hdmJhciwgeyBmbHVpZDogdHJ1ZSwgdGhlbWUsIC4uLnByb3BzLCBjaGlsZHJlbiB9KTtcbn07XG5jb25zdCBNZWdhTWVudSA9IE9iamVjdC5hc3NpZ24oTWVnYU1lbnVDb21wb25lbnQsIHtcbiAgRHJvcGRvd246IE1lZ2FNZW51RHJvcGRvd24sXG4gIERyb3Bkb3duVG9nZ2xlOiBNZWdhTWVudURyb3Bkb3duVG9nZ2xlXG59KTtcbk1lZ2FNZW51Q29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJNZWdhTWVudVwiO1xuXG5leHBvcnQgeyBNZWdhTWVudSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TWVnYU1lbnUubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgTW9kYWxDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuZnVuY3Rpb24gdXNlTW9kYWxDb250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChNb2RhbENvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VNb2RhbENvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBNb2RhbENvbnRleHQgcHJvdmlkZXIhXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgeyBNb2RhbENvbnRleHQsIHVzZU1vZGFsQ29udGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TW9kYWxDb250ZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZU1vZGFsQ29udGV4dCB9IGZyb20gJy4vTW9kYWxDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IE1vZGFsQm9keSA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgcG9wdXAgfSA9IHVzZU1vZGFsQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuYm9keSwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBwb3B1cCAmJiBbdGhlbWUucG9wdXBdLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW4gfSk7XG59O1xuXG5leHBvcnQgeyBNb2RhbEJvZHkgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1vZGFsQm9keS5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VNb2RhbENvbnRleHQgfSBmcm9tICcuL01vZGFsQ29udGV4dC5tanMnO1xuXG5jb25zdCBNb2RhbEZvb3RlciA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgcG9wdXAgfSA9IHVzZU1vZGFsQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuZm9vdGVyLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsICFwb3B1cCAmJiB0aGVtZS5wb3B1cCwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcblxuZXhwb3J0IHsgTW9kYWxGb290ZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1vZGFsRm9vdGVyLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZUlkLCB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBIaU91dGxpbmVYIH0gZnJvbSAncmVhY3QtaWNvbnMvaGknO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlTW9kYWxDb250ZXh0IH0gZnJvbSAnLi9Nb2RhbENvbnRleHQubWpzJztcblxuY29uc3QgTW9kYWxIZWFkZXIgPSAoe1xuICBhczogQ29tcG9uZW50ID0gXCJoM1wiLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgaWQsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IGlubmVySGVhZGVySWQgPSB1c2VJZCgpO1xuICBjb25zdCBoZWFkZXJJZCA9IGlkIHx8IGlubmVySGVhZGVySWQ7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgcG9wdXAsIG9uQ2xvc2UsIHNldEhlYWRlcklkIH0gPSB1c2VNb2RhbENvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLmhlYWRlciwgY3VzdG9tVGhlbWUpO1xuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIHNldEhlYWRlcklkKGhlYWRlcklkKTtcbiAgICByZXR1cm4gKCkgPT4gc2V0SGVhZGVySWQodm9pZCAwKTtcbiAgfSwgW2hlYWRlcklkLCBzZXRIZWFkZXJJZF0pO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgcG9wdXAgJiYgdGhlbWUucG9wdXAsIGNsYXNzTmFtZSksIC4uLnByb3BzLCBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goQ29tcG9uZW50LCB7IGlkOiBoZWFkZXJJZCwgY2xhc3NOYW1lOiB0aGVtZS50aXRsZSwgY2hpbGRyZW4gfSksXG4gICAgLyogQF9fUFVSRV9fICovIGpzeChcImJ1dHRvblwiLCB7IFwiYXJpYS1sYWJlbFwiOiBcIkNsb3NlXCIsIGNsYXNzTmFtZTogdGhlbWUuY2xvc2UuYmFzZSwgdHlwZTogXCJidXR0b25cIiwgb25DbGljazogb25DbG9zZSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goSGlPdXRsaW5lWCwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuY2xvc2UuaWNvbiB9KSB9KVxuICBdIH0pO1xufTtcblxuZXhwb3J0IHsgTW9kYWxIZWFkZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1vZGFsSGVhZGVyLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZUZsb2F0aW5nLCB1c2VNZXJnZVJlZnMsIHVzZUNsaWNrLCB1c2VEaXNtaXNzLCB1c2VSb2xlLCB1c2VJbnRlcmFjdGlvbnMsIEZsb2F0aW5nUG9ydGFsLCBGbG9hdGluZ092ZXJsYXksIEZsb2F0aW5nRm9jdXNNYW5hZ2VyIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3JlYWN0JztcbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgTW9kYWxCb2R5IH0gZnJvbSAnLi9Nb2RhbEJvZHkubWpzJztcbmltcG9ydCB7IE1vZGFsQ29udGV4dCB9IGZyb20gJy4vTW9kYWxDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBNb2RhbEZvb3RlciB9IGZyb20gJy4vTW9kYWxGb290ZXIubWpzJztcbmltcG9ydCB7IE1vZGFsSGVhZGVyIH0gZnJvbSAnLi9Nb2RhbEhlYWRlci5tanMnO1xuXG5jb25zdCBNb2RhbENvbXBvbmVudCA9IGZvcndhcmRSZWYoXG4gICh7XG4gICAgY2hpbGRyZW4sXG4gICAgY2xhc3NOYW1lLFxuICAgIGRpc21pc3NpYmxlID0gZmFsc2UsXG4gICAgb25DbG9zZSxcbiAgICBwb3B1cCxcbiAgICBwb3NpdGlvbiA9IFwiY2VudGVyXCIsXG4gICAgcm9vdCxcbiAgICBzaG93LFxuICAgIHNpemUgPSBcIjJ4bFwiLFxuICAgIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAgIGluaXRpYWxGb2N1cyxcbiAgICAuLi5wcm9wc1xuICB9LCB0aGVpclJlZikgPT4ge1xuICAgIGNvbnN0IFtoZWFkZXJJZCwgc2V0SGVhZGVySWRdID0gdXNlU3RhdGUodm9pZCAwKTtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLm1vZGFsLCBjdXN0b21UaGVtZSk7XG4gICAgY29uc3QgeyBjb250ZXh0IH0gPSB1c2VGbG9hdGluZyh7XG4gICAgICBvcGVuOiBzaG93LFxuICAgICAgb25PcGVuQ2hhbmdlOiAoKSA9PiBvbkNsb3NlICYmIG9uQ2xvc2UoKVxuICAgIH0pO1xuICAgIGNvbnN0IHJlZiA9IHVzZU1lcmdlUmVmcyhbY29udGV4dC5yZWZzLnNldEZsb2F0aW5nLCB0aGVpclJlZl0pO1xuICAgIGNvbnN0IGNsaWNrID0gdXNlQ2xpY2soY29udGV4dCk7XG4gICAgY29uc3QgZGlzbWlzcyA9IHVzZURpc21pc3MoY29udGV4dCwgeyBvdXRzaWRlUHJlc3NFdmVudDogXCJtb3VzZWRvd25cIiwgZW5hYmxlZDogZGlzbWlzc2libGUgfSk7XG4gICAgY29uc3Qgcm9sZSA9IHVzZVJvbGUoY29udGV4dCk7XG4gICAgY29uc3QgeyBnZXRGbG9hdGluZ1Byb3BzIH0gPSB1c2VJbnRlcmFjdGlvbnMoW2NsaWNrLCBkaXNtaXNzLCByb2xlXSk7XG4gICAgaWYgKCFzaG93KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goTW9kYWxDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IHRoZW1lLCBwb3B1cCwgb25DbG9zZSwgc2V0SGVhZGVySWQgfSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goRmxvYXRpbmdQb3J0YWwsIHsgcm9vdCwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBGbG9hdGluZ092ZXJsYXksXG4gICAgICB7XG4gICAgICAgIGxvY2tTY3JvbGw6IHRydWUsXG4gICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJtb2RhbC1vdmVybGF5XCIsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICB0aGVtZS5yb290LmJhc2UsXG4gICAgICAgICAgdGhlbWUucm9vdC5wb3NpdGlvbnNbcG9zaXRpb25dLFxuICAgICAgICAgIHNob3cgPyB0aGVtZS5yb290LnNob3cub24gOiB0aGVtZS5yb290LnNob3cub2ZmLFxuICAgICAgICAgIGNsYXNzTmFtZVxuICAgICAgICApLFxuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goRmxvYXRpbmdGb2N1c01hbmFnZXIsIHsgY29udGV4dCwgaW5pdGlhbEZvY3VzLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgIC4uLmdldEZsb2F0aW5nUHJvcHMocHJvcHMpLFxuICAgICAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogaGVhZGVySWQsXG4gICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuY29udGVudC5iYXNlLCB0aGVtZS5yb290LnNpemVzW3NpemVdKSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5jb250ZW50LmlubmVyLCBjaGlsZHJlbiB9KVxuICAgICAgICAgIH1cbiAgICAgICAgKSB9KVxuICAgICAgfVxuICAgICkgfSkgfSk7XG4gIH1cbik7XG5Nb2RhbENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiTW9kYWxcIjtcbk1vZGFsSGVhZGVyLmRpc3BsYXlOYW1lID0gXCJNb2RhbC5IZWFkZXJcIjtcbk1vZGFsQm9keS5kaXNwbGF5TmFtZSA9IFwiTW9kYWwuQm9keVwiO1xuTW9kYWxGb290ZXIuZGlzcGxheU5hbWUgPSBcIk1vZGFsLkZvb3RlclwiO1xuY29uc3QgTW9kYWwgPSBPYmplY3QuYXNzaWduKE1vZGFsQ29tcG9uZW50LCB7XG4gIEhlYWRlcjogTW9kYWxIZWFkZXIsXG4gIEJvZHk6IE1vZGFsQm9keSxcbiAgRm9vdGVyOiBNb2RhbEZvb3RlclxufSk7XG5cbmV4cG9ydCB7IE1vZGFsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Nb2RhbC5tanMubWFwXG4iLCJjb25zdCByYW5nZSA9IChzdGFydCwgZW5kKSA9PiB7XG4gIGlmIChzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIFsuLi5BcnJheShlbmQgLSBzdGFydCArIDEpLmtleXMoKV0ubWFwKChrZXkpID0+IGtleSArIHN0YXJ0KTtcbn07XG5cbmV4cG9ydCB7IHJhbmdlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1oZWxwZXJzLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgUGFnaW5hdGlvbkJ1dHRvbiA9ICh7XG4gIGFjdGl2ZSxcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgb25DbGljayxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkucGFnaW5hdGlvbiwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcImJ1dHRvblwiLFxuICAgIHtcbiAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoYWN0aXZlICYmIHRoZW1lLnBhZ2VzLnNlbGVjdG9yLmFjdGl2ZSwgY2xhc3NOYW1lKSxcbiAgICAgIG9uQ2xpY2ssXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApO1xufTtcblBhZ2luYXRpb25CdXR0b24uZGlzcGxheU5hbWUgPSBcIlBhZ2luYXRpb24uQnV0dG9uXCI7XG5jb25zdCBQYWdpbmF0aW9uTmF2aWdhdGlvbiA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIG9uQ2xpY2ssXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnBhZ2luYXRpb24sIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJidXR0b25cIixcbiAgICB7XG4gICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKGRpc2FibGVkICYmIHRoZW1lLnBhZ2VzLnNlbGVjdG9yLmRpc2FibGVkLCBjbGFzc05hbWUpLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBvbkNsaWNrLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlblxuICAgIH1cbiAgKTtcbn07XG5QYWdpbmF0aW9uTmF2aWdhdGlvbi5kaXNwbGF5TmFtZSA9IFwiUGFnaW5hdGlvbi5OYXZpZ2F0aW9uXCI7XG5cbmV4cG9ydCB7IFBhZ2luYXRpb25CdXR0b24sIFBhZ2luYXRpb25OYXZpZ2F0aW9uIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1QYWdpbmF0aW9uQnV0dG9uLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IEhpQ2hldnJvbkxlZnQsIEhpQ2hldnJvblJpZ2h0IH0gZnJvbSAncmVhY3QtaWNvbnMvaGknO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgcmFuZ2UgfSBmcm9tICcuL2hlbHBlcnMubWpzJztcbmltcG9ydCB7IFBhZ2luYXRpb25CdXR0b24sIFBhZ2luYXRpb25OYXZpZ2F0aW9uIH0gZnJvbSAnLi9QYWdpbmF0aW9uQnV0dG9uLm1qcyc7XG5cbmNvbnN0IFBhZ2luYXRpb25Db21wb25lbnQgPSAoe1xuICBjbGFzc05hbWUsXG4gIGN1cnJlbnRQYWdlLFxuICBsYXlvdXQgPSBcInBhZ2luYXRpb25cIixcbiAgbmV4dExhYmVsID0gXCJOZXh0XCIsXG4gIG9uUGFnZUNoYW5nZSxcbiAgcHJldmlvdXNMYWJlbCA9IFwiUHJldmlvdXNcIixcbiAgcmVuZGVyUGFnaW5hdGlvbkJ1dHRvbiA9IChwcm9wczIpID0+IC8qIEBfX1BVUkVfXyAqLyBqc3goUGFnaW5hdGlvbkJ1dHRvbiwgeyAuLi5wcm9wczIgfSksXG4gIHNob3dJY29uczogc2hvd0ljb24gPSBmYWxzZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIHRvdGFsUGFnZXMsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkucGFnaW5hdGlvbiwgY3VzdG9tVGhlbWUpO1xuICBjb25zdCBsYXN0UGFnZSA9IE1hdGgubWluKE1hdGgubWF4KGxheW91dCA9PT0gXCJwYWdpbmF0aW9uXCIgPyBjdXJyZW50UGFnZSArIDIgOiBjdXJyZW50UGFnZSArIDQsIDUpLCB0b3RhbFBhZ2VzKTtcbiAgY29uc3QgZmlyc3RQYWdlID0gTWF0aC5tYXgoMSwgbGFzdFBhZ2UgLSA0KTtcbiAgY29uc3QgZ29Ub05leHRQYWdlID0gKCkgPT4ge1xuICAgIG9uUGFnZUNoYW5nZShNYXRoLm1pbihjdXJyZW50UGFnZSArIDEsIHRvdGFsUGFnZXMpKTtcbiAgfTtcbiAgY29uc3QgZ29Ub1ByZXZpb3VzUGFnZSA9ICgpID0+IHtcbiAgICBvblBhZ2VDaGFuZ2UoTWF0aC5tYXgoY3VycmVudFBhZ2UgLSAxLCAxKSk7XG4gIH07XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcIm5hdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW46IFtcbiAgICBsYXlvdXQgPT09IFwidGFibGVcIiAmJiAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUubGF5b3V0LnRhYmxlLmJhc2UsIGNoaWxkcmVuOiBbXG4gICAgICBcIlNob3dpbmcgXCIsXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUubGF5b3V0LnRhYmxlLnNwYW4sIGNoaWxkcmVuOiBmaXJzdFBhZ2UgfSksXG4gICAgICBcIiB0b1xceEEwXCIsXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUubGF5b3V0LnRhYmxlLnNwYW4sIGNoaWxkcmVuOiBsYXN0UGFnZSB9KSxcbiAgICAgIFwiIG9mXFx4QTBcIixcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5sYXlvdXQudGFibGUuc3BhbiwgY2hpbGRyZW46IHRvdGFsUGFnZXMgfSksXG4gICAgICBcIiBFbnRyaWVzXCJcbiAgICBdIH0pLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwidWxcIiwgeyBjbGFzc05hbWU6IHRoZW1lLnBhZ2VzLmJhc2UsIGNoaWxkcmVuOiBbXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwibGlcIiwgeyBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeHMoXG4gICAgICAgIFBhZ2luYXRpb25OYXZpZ2F0aW9uLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnBhZ2VzLnByZXZpb3VzLmJhc2UsIHNob3dJY29uICYmIHRoZW1lLnBhZ2VzLnNob3dJY29uKSxcbiAgICAgICAgICBvbkNsaWNrOiBnb1RvUHJldmlvdXNQYWdlLFxuICAgICAgICAgIGRpc2FibGVkOiBjdXJyZW50UGFnZSA9PT0gMSxcbiAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgc2hvd0ljb24gJiYgLyogQF9fUFVSRV9fICovIGpzeChIaUNoZXZyb25MZWZ0LCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgY2xhc3NOYW1lOiB0aGVtZS5wYWdlcy5wcmV2aW91cy5pY29uIH0pLFxuICAgICAgICAgICAgcHJldmlvdXNMYWJlbFxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKSB9KSxcbiAgICAgIGxheW91dCA9PT0gXCJwYWdpbmF0aW9uXCIgJiYgcmFuZ2UoZmlyc3RQYWdlLCBsYXN0UGFnZSkubWFwKChwYWdlKSA9PiAvKiBAX19QVVJFX18gKi8ganN4KFwibGlcIiwgeyBcImFyaWEtY3VycmVudFwiOiBwYWdlID09PSBjdXJyZW50UGFnZSA/IFwicGFnZVwiIDogdm9pZCAwLCBjaGlsZHJlbjogcmVuZGVyUGFnaW5hdGlvbkJ1dHRvbih7XG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5wYWdlcy5zZWxlY3Rvci5iYXNlLCBjdXJyZW50UGFnZSA9PT0gcGFnZSAmJiB0aGVtZS5wYWdlcy5zZWxlY3Rvci5hY3RpdmUpLFxuICAgICAgICBhY3RpdmU6IHBhZ2UgPT09IGN1cnJlbnRQYWdlLFxuICAgICAgICBvbkNsaWNrOiAoKSA9PiBvblBhZ2VDaGFuZ2UocGFnZSksXG4gICAgICAgIGNoaWxkcmVuOiBwYWdlXG4gICAgICB9KSB9LCBwYWdlKSksXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwibGlcIiwgeyBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeHMoXG4gICAgICAgIFBhZ2luYXRpb25OYXZpZ2F0aW9uLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnBhZ2VzLm5leHQuYmFzZSwgc2hvd0ljb24gJiYgdGhlbWUucGFnZXMuc2hvd0ljb24pLFxuICAgICAgICAgIG9uQ2xpY2s6IGdvVG9OZXh0UGFnZSxcbiAgICAgICAgICBkaXNhYmxlZDogY3VycmVudFBhZ2UgPT09IHRvdGFsUGFnZXMsXG4gICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgIG5leHRMYWJlbCxcbiAgICAgICAgICAgIHNob3dJY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goSGlDaGV2cm9uUmlnaHQsIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBjbGFzc05hbWU6IHRoZW1lLnBhZ2VzLm5leHQuaWNvbiB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKSB9KVxuICAgIF0gfSlcbiAgXSB9KTtcbn07XG5QYWdpbmF0aW9uQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJQYWdpbmF0aW9uXCI7XG5jb25zdCBQYWdpbmF0aW9uID0gT2JqZWN0LmFzc2lnbihQYWdpbmF0aW9uQ29tcG9uZW50LCB7XG4gIEJ1dHRvbjogUGFnaW5hdGlvbkJ1dHRvblxufSk7XG5cbmV4cG9ydCB7IFBhZ2luYXRpb24gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVBhZ2luYXRpb24ubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgUmFkaW8gPSBmb3J3YXJkUmVmKFxuICAoeyBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnJhZGlvLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJpbnB1dFwiLCB7IHJlZiwgdHlwZTogXCJyYWRpb1wiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcyB9KTtcbiAgfVxuKTtcblJhZGlvLmRpc3BsYXlOYW1lID0gXCJSYWRpb1wiO1xuXG5leHBvcnQgeyBSYWRpbyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmFkaW8ubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4LCBGcmFnbWVudCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IFJhbmdlU2xpZGVyID0gZm9yd2FyZFJlZihcbiAgKHsgY2xhc3NOYW1lLCBzaXppbmcgPSBcIm1kXCIsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnJhbmdlU2xpZGVyLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRnJhZ21lbnQsIHsgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtcmFuZ2Utc2xpZGVyXCIsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmJhc2UsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5maWVsZC5iYXNlLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwiaW5wdXRcIixcbiAgICAgIHtcbiAgICAgICAgcmVmLFxuICAgICAgICB0eXBlOiBcInJhbmdlXCIsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5maWVsZC5pbnB1dC5iYXNlLCB0aGVtZS5maWVsZC5pbnB1dC5zaXplc1tzaXppbmddKSxcbiAgICAgICAgLi4ucHJvcHNcbiAgICAgIH1cbiAgICApIH0pIH0pIH0pO1xuICB9XG4pO1xuUmFuZ2VTbGlkZXIuZGlzcGxheU5hbWUgPSBcIlJhbmdlU2xpZGVyXCI7XG5cbmV4cG9ydCB7IFJhbmdlU2xpZGVyIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SYW5nZVNsaWRlci5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IFJhdGluZ0FkdmFuY2VkID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgcGVyY2VudEZpbGxlZCA9IDAsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnJhdGluZ0FkdmFuY2VkLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW46IFtcbiAgICAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUubGFiZWwsIGNoaWxkcmVuIH0pLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLnByb2dyZXNzLmJhc2UsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgXCJkaXZcIixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiB0aGVtZS5wcm9ncmVzcy5maWxsLFxuICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtcmF0aW5nLWZpbGxcIixcbiAgICAgICAgc3R5bGU6IHsgd2lkdGg6IGAke3BlcmNlbnRGaWxsZWR9JWAgfVxuICAgICAgfVxuICAgICkgfSksXG4gICAgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLnByb2dyZXNzLmxhYmVsLCBjaGlsZHJlbjogYCR7cGVyY2VudEZpbGxlZH0lYCB9KVxuICBdIH0pO1xufTtcblxuZXhwb3J0IHsgUmF0aW5nQWR2YW5jZWQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJhdGluZ0FkdmFuY2VkLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IFJhdGluZ0NvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VSYXRpbmdDb250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChSYXRpbmdDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlUmF0aW5nQ29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIFJhdGluZ0NvbnRleHQgcHJvdmlkZXIhXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgeyBSYXRpbmdDb250ZXh0LCB1c2VSYXRpbmdDb250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SYXRpbmdDb250ZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IEhpU3RhciB9IGZyb20gJ3JlYWN0LWljb25zL2hpJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVJhdGluZ0NvbnRleHQgfSBmcm9tICcuL1JhdGluZ0NvbnRleHQubWpzJztcblxuY29uc3QgUmF0aW5nU3RhciA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgZmlsbGVkID0gdHJ1ZSxcbiAgc3Rhckljb246IEljb24gPSBIaVN0YXIsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUsIHNpemUgPSBcInNtXCIgfSA9IHVzZVJhdGluZ0NvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLnN0YXIsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgSWNvbixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtcmF0aW5nLXN0YXJcIixcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5zaXplc1tzaXplXSwgdGhlbWVbZmlsbGVkID8gXCJmaWxsZWRcIiA6IFwiZW1wdHlcIl0sIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wc1xuICAgIH1cbiAgKTtcbn07XG5cbmV4cG9ydCB7IFJhdGluZ1N0YXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJhdGluZ1N0YXIubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgUmF0aW5nQWR2YW5jZWQgfSBmcm9tICcuL1JhdGluZ0FkdmFuY2VkLm1qcyc7XG5pbXBvcnQgeyBSYXRpbmdDb250ZXh0IH0gZnJvbSAnLi9SYXRpbmdDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBSYXRpbmdTdGFyIH0gZnJvbSAnLi9SYXRpbmdTdGFyLm1qcyc7XG5cbmNvbnN0IFJhdGluZ0NvbXBvbmVudCA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHNpemUgPSBcInNtXCIsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkucmF0aW5nLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFJhdGluZ0NvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHsgdGhlbWUsIHNpemUgfSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW4gfSkgfSk7XG59O1xuUmF0aW5nQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJSYXRpbmdcIjtcblJhdGluZ1N0YXIuZGlzcGxheU5hbWUgPSBcIlJhdGluZy5TdGFyXCI7XG5SYXRpbmdBZHZhbmNlZC5kaXNwbGF5TmFtZSA9IFwiUmF0aW5nLkFkdmFuY2VkXCI7XG5jb25zdCBSYXRpbmcgPSBPYmplY3QuYXNzaWduKFJhdGluZ0NvbXBvbmVudCwge1xuICBTdGFyOiBSYXRpbmdTdGFyLFxuICBBZHZhbmNlZDogUmF0aW5nQWR2YW5jZWRcbn0pO1xuXG5leHBvcnQgeyBSYXRpbmcgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJhdGluZy5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgSGVscGVyVGV4dCB9IGZyb20gJy4uL0hlbHBlclRleHQvSGVscGVyVGV4dC5tanMnO1xuXG5jb25zdCBTZWxlY3QgPSBmb3J3YXJkUmVmKFxuICAoe1xuICAgIGFkZG9uLFxuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgICBjb2xvciA9IFwiZ3JheVwiLFxuICAgIGhlbHBlclRleHQsXG4gICAgaWNvbjogSWNvbixcbiAgICBzaGFkb3csXG4gICAgc2l6aW5nID0gXCJtZFwiLFxuICAgIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAgIC4uLnByb3BzXG4gIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuc2VsZWN0LCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiBbXG4gICAgICBhZGRvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUuYWRkb24sIGNoaWxkcmVuOiBhZGRvbiB9KSxcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5maWVsZC5iYXNlLCBjaGlsZHJlbjogW1xuICAgICAgICBJY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmZpZWxkLmljb24uYmFzZSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goSWNvbiwgeyBjbGFzc05hbWU6IHRoZW1lLmZpZWxkLmljb24uc3ZnIH0pIH0pLFxuICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgIFwic2VsZWN0XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgICB0aGVtZS5maWVsZC5zZWxlY3QuYmFzZSxcbiAgICAgICAgICAgICAgdGhlbWUuZmllbGQuc2VsZWN0LmNvbG9yc1tjb2xvcl0sXG4gICAgICAgICAgICAgIHRoZW1lLmZpZWxkLnNlbGVjdC5zaXplc1tzaXppbmddLFxuICAgICAgICAgICAgICB0aGVtZS5maWVsZC5zZWxlY3Qud2l0aEljb25bSWNvbiA/IFwib25cIiA6IFwib2ZmXCJdLFxuICAgICAgICAgICAgICB0aGVtZS5maWVsZC5zZWxlY3Qud2l0aEFkZG9uW2FkZG9uID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgICAgIHRoZW1lLmZpZWxkLnNlbGVjdC53aXRoU2hhZG93W3NoYWRvdyA/IFwib25cIiA6IFwib2ZmXCJdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgICAgICByZWYsXG4gICAgICAgICAgICBjaGlsZHJlblxuICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgICAgaGVscGVyVGV4dCAmJiAvKiBAX19QVVJFX18gKi8ganN4KEhlbHBlclRleHQsIHsgY29sb3IsIGNoaWxkcmVuOiBoZWxwZXJUZXh0IH0pXG4gICAgICBdIH0pXG4gICAgXSB9KTtcbiAgfVxuKTtcblNlbGVjdC5kaXNwbGF5TmFtZSA9IFwiU2VsZWN0XCI7XG5cbmV4cG9ydCB7IFNlbGVjdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2VsZWN0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IFNpZGViYXJDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuZnVuY3Rpb24gdXNlU2lkZWJhckNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFNpZGViYXJDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlU2lkZWJhckNvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBTaWRlYmFyQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IFNpZGViYXJDb250ZXh0LCB1c2VTaWRlYmFyQ29udGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2lkZWJhckNvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgU2lkZWJhckl0ZW1Db250ZXh0ID0gY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuZnVuY3Rpb24gdXNlU2lkZWJhckl0ZW1Db250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChTaWRlYmFySXRlbUNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VTaWRlYmFySXRlbUNvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBTaWRlYmFySXRlbUNvbnRleHQgcHJvdmlkZXIhXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgeyBTaWRlYmFySXRlbUNvbnRleHQsIHVzZVNpZGViYXJJdGVtQ29udGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2lkZWJhckl0ZW1Db250ZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIGpzeCwgRnJhZ21lbnQgfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VJZCwgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEhpQ2hldnJvbkRvd24gfSBmcm9tICdyZWFjdC1pY29ucy9oaSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnLi4vVG9vbHRpcC9Ub29sdGlwLm1qcyc7XG5pbXBvcnQgeyB1c2VTaWRlYmFyQ29udGV4dCB9IGZyb20gJy4vU2lkZWJhckNvbnRleHQubWpzJztcbmltcG9ydCB7IFNpZGViYXJJdGVtQ29udGV4dCB9IGZyb20gJy4vU2lkZWJhckl0ZW1Db250ZXh0Lm1qcyc7XG5cbmNvbnN0IFNpZGViYXJDb2xsYXBzZSA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGljb246IEljb24sXG4gIGxhYmVsLFxuICBjaGV2cm9uSWNvbjogQ2hldnJvbkljb24gPSBIaUNoZXZyb25Eb3duLFxuICByZW5kZXJDaGV2cm9uSWNvbixcbiAgb3BlbiA9IGZhbHNlLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgaWQgPSB1c2VJZCgpO1xuICBjb25zdCBbaXNPcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKG9wZW4pO1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUsIGlzQ29sbGFwc2VkIH0gPSB1c2VTaWRlYmFyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuY29sbGFwc2UsIGN1c3RvbVRoZW1lKTtcbiAgdXNlRWZmZWN0KCgpID0+IHNldE9wZW4ob3BlbiksIFtvcGVuXSk7XG4gIGNvbnN0IFdyYXBwZXIgPSAoeyBjaGlsZHJlbjogY2hpbGRyZW4yIH0pID0+IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJsaVwiLCB7IGNoaWxkcmVuOiBpc0NvbGxhcHNlZCAmJiAhaXNPcGVuID8gLyogQF9fUFVSRV9fICovIGpzeChUb29sdGlwLCB7IGNvbnRlbnQ6IGxhYmVsLCBwbGFjZW1lbnQ6IFwicmlnaHRcIiwgY2hpbGRyZW46IGNoaWxkcmVuMiB9KSA6IGNoaWxkcmVuMiB9KTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFdyYXBwZXIsIHsgY2hpbGRyZW46IFtcbiAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICAgIFwiYnV0dG9uXCIsXG4gICAgICB7XG4gICAgICAgIGlkOiBgZmxvd2JpdGUtc2lkZWJhci1jb2xsYXBzZS0ke2lkfWAsXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHNldE9wZW4oIWlzT3BlbiksXG4gICAgICAgIHRpdGxlOiBsYWJlbCxcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJ1dHRvbiwgY2xhc3NOYW1lKSxcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgSWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgICAgSWNvbixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgICAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtc2lkZWJhci1jb2xsYXBzZS1pY29uXCIsXG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5pY29uLmJhc2UsIHRoZW1lLmljb24ub3Blbltpc09wZW4gPyBcIm9uXCIgOiBcIm9mZlwiXSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApLFxuICAgICAgICAgIGlzQ29sbGFwc2VkID8gLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IFwic3Itb25seVwiLCBjaGlsZHJlbjogbGFiZWwgfSkgOiAvKiBAX19QVVJFX18gKi8ganN4cyhGcmFnbWVudCwgeyBjaGlsZHJlbjogW1xuICAgICAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtc2lkZWJhci1jb2xsYXBzZS1sYWJlbFwiLCBjbGFzc05hbWU6IHRoZW1lLmxhYmVsLmJhc2UsIGNoaWxkcmVuOiBsYWJlbCB9KSxcbiAgICAgICAgICAgIHJlbmRlckNoZXZyb25JY29uID8gcmVuZGVyQ2hldnJvbkljb24odGhlbWUsIGlzT3BlbikgOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgICAgICBDaGV2cm9uSWNvbixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUubGFiZWwuaWNvbi5iYXNlLCB0aGVtZS5sYWJlbC5pY29uLm9wZW5baXNPcGVuID8gXCJvblwiIDogXCJvZmZcIl0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIClcbiAgICAgICAgICBdIH0pXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICApLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJ1bFwiLCB7IFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGBmbG93Yml0ZS1zaWRlYmFyLWNvbGxhcHNlLSR7aWR9YCwgaGlkZGVuOiAhaXNPcGVuLCBjbGFzc05hbWU6IHRoZW1lLmxpc3QsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFNpZGViYXJJdGVtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyBpc0luc2lkZUNvbGxhcHNlOiB0cnVlIH0sIGNoaWxkcmVuIH0pIH0pXG4gIF0gfSk7XG59O1xuU2lkZWJhckNvbGxhcHNlLmRpc3BsYXlOYW1lID0gXCJTaWRlYmFyLkNvbGxhcHNlXCI7XG5cbmV4cG9ydCB7IFNpZGViYXJDb2xsYXBzZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2lkZWJhckNvbGxhcHNlLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVNpZGViYXJDb250ZXh0IH0gZnJvbSAnLi9TaWRlYmFyQ29udGV4dC5tanMnO1xuXG5jb25zdCBTaWRlYmFyQ1RBID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNvbG9yID0gXCJpbmZvXCIsXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgaXNDb2xsYXBzZWQgfSA9IHVzZVNpZGViYXJDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5jdGEsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwic2lkZWJhci1jdGFcIixcbiAgICAgIGhpZGRlbjogaXNDb2xsYXBzZWQsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgdGhlbWUuY29sb3JbY29sb3JdLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlblxuICAgIH1cbiAgKTtcbn07XG5TaWRlYmFyQ1RBLmRpc3BsYXlOYW1lID0gXCJTaWRlYmFyLkNUQVwiO1xuXG5leHBvcnQgeyBTaWRlYmFyQ1RBIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TaWRlYmFyQ1RBLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCwganN4cyB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZUlkIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgQmFkZ2UgfSBmcm9tICcuLi9CYWRnZS9CYWRnZS5tanMnO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJy4uL1Rvb2x0aXAvVG9vbHRpcC5tanMnO1xuaW1wb3J0IHsgdXNlU2lkZWJhckNvbnRleHQgfSBmcm9tICcuL1NpZGViYXJDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyB1c2VTaWRlYmFySXRlbUNvbnRleHQgfSBmcm9tICcuL1NpZGViYXJJdGVtQ29udGV4dC5tanMnO1xuXG5jb25zdCBMaXN0SXRlbSA9ICh7IGlkLCB0aGVtZSwgaXNDb2xsYXBzZWQsIHRvb2x0aXBDaGlsZHJlbiwgY2hpbGRyZW46IHdyYXBwZXJDaGlsZHJlbiwgLi4ucHJvcHMgfSkgPT4gLyogQF9fUFVSRV9fICovIGpzeChcImxpXCIsIHsgLi4ucHJvcHMsIGNoaWxkcmVuOiBpc0NvbGxhcHNlZCA/IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gIFRvb2x0aXAsXG4gIHtcbiAgICBjb250ZW50OiAvKiBAX19QVVJFX18gKi8ganN4KENoaWxkcmVuLCB7IGlkLCB0aGVtZSwgY2hpbGRyZW46IHRvb2x0aXBDaGlsZHJlbiB9KSxcbiAgICBwbGFjZW1lbnQ6IFwicmlnaHRcIixcbiAgICBjaGlsZHJlbjogd3JhcHBlckNoaWxkcmVuXG4gIH1cbikgOiB3cmFwcGVyQ2hpbGRyZW4gfSk7XG5jb25zdCBDaGlsZHJlbiA9ICh7IGlkLCB0aGVtZSwgY2hpbGRyZW4gfSkgPT4ge1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcInNwYW5cIixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtc2lkZWJhci1pdGVtLWNvbnRlbnRcIixcbiAgICAgIGlkOiBgZmxvd2JpdGUtc2lkZWJhci1pdGVtLSR7aWR9YCxcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5jb250ZW50LmJhc2UpLFxuICAgICAgY2hpbGRyZW5cbiAgICB9XG4gICk7XG59O1xuY29uc3QgU2lkZWJhckl0ZW0gPSBmb3J3YXJkUmVmKFxuICAoe1xuICAgIGFjdGl2ZTogaXNBY3RpdmUsXG4gICAgYXM6IENvbXBvbmVudCA9IFwiYVwiLFxuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgICBpY29uOiBJY29uLFxuICAgIGxhYmVsLFxuICAgIGxhYmVsQ29sb3IgPSBcImluZm9cIixcbiAgICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgICAuLi5wcm9wc1xuICB9LCByZWYpID0+IHtcbiAgICBjb25zdCBpZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBpc0NvbGxhcHNlZCB9ID0gdXNlU2lkZWJhckNvbnRleHQoKTtcbiAgICBjb25zdCB7IGlzSW5zaWRlQ29sbGFwc2UgfSA9IHVzZVNpZGViYXJJdGVtQ29udGV4dCgpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5pdGVtLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goTGlzdEl0ZW0sIHsgdGhlbWUsIGNsYXNzTmFtZTogdGhlbWUubGlzdEl0ZW0sIGlkLCBpc0NvbGxhcHNlZCwgdG9vbHRpcENoaWxkcmVuOiBjaGlsZHJlbiwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgICAgQ29tcG9uZW50LFxuICAgICAge1xuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBgZmxvd2JpdGUtc2lkZWJhci1pdGVtLSR7aWR9YCxcbiAgICAgICAgcmVmLFxuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgdGhlbWUuYmFzZSxcbiAgICAgICAgICBpc0FjdGl2ZSAmJiB0aGVtZS5hY3RpdmUsXG4gICAgICAgICAgIWlzQ29sbGFwc2VkICYmIGlzSW5zaWRlQ29sbGFwc2UgJiYgdGhlbWUuY29sbGFwc2VkPy5pbnNpZGVDb2xsYXBzZSxcbiAgICAgICAgICBjbGFzc05hbWVcbiAgICAgICAgKSxcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgSWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgICAgSWNvbixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgICAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtc2lkZWJhci1pdGVtLWljb25cIixcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmljb24/LmJhc2UsIGlzQWN0aXZlICYmIHRoZW1lLmljb24/LmFjdGl2ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApLFxuICAgICAgICAgIGlzQ29sbGFwc2VkICYmICFJY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5jb2xsYXBzZWQ/Lm5vSWNvbiwgY2hpbGRyZW46IGNoaWxkcmVuLmNoYXJBdCgwKS50b0xvY2FsZVVwcGVyQ2FzZSgpID8/IFwiP1wiIH0pLFxuICAgICAgICAgICFpc0NvbGxhcHNlZCAmJiAvKiBAX19QVVJFX18gKi8ganN4KENoaWxkcmVuLCB7IGlkLCB0aGVtZSwgY2hpbGRyZW4gfSksXG4gICAgICAgICAgIWlzQ29sbGFwc2VkICYmIGxhYmVsICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goQmFkZ2UsIHsgY29sb3I6IGxhYmVsQ29sb3IsIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1zaWRlYmFyLWxhYmVsXCIsIGhpZGRlbjogaXNDb2xsYXBzZWQsIGNsYXNzTmFtZTogdGhlbWUubGFiZWwsIGNoaWxkcmVuOiBsYWJlbCB9KVxuICAgICAgICBdXG4gICAgICB9XG4gICAgKSB9KTtcbiAgfVxuKTtcblNpZGViYXJJdGVtLmRpc3BsYXlOYW1lID0gXCJTaWRlYmFyLkl0ZW1cIjtcblxuZXhwb3J0IHsgU2lkZWJhckl0ZW0gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNpZGViYXJJdGVtLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVNpZGViYXJDb250ZXh0IH0gZnJvbSAnLi9TaWRlYmFyQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgU2lkZWJhckl0ZW1Db250ZXh0IH0gZnJvbSAnLi9TaWRlYmFySXRlbUNvbnRleHQubWpzJztcblxuY29uc3QgU2lkZWJhckl0ZW1Hcm91cCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUgfSA9IHVzZVNpZGViYXJDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5pdGVtR3JvdXAsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJ1bFwiLCB7IFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1zaWRlYmFyLWl0ZW0tZ3JvdXBcIiwgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIC4uLnByb3BzLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChTaWRlYmFySXRlbUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHsgaXNJbnNpZGVDb2xsYXBzZTogZmFsc2UgfSwgY2hpbGRyZW4gfSkgfSk7XG59O1xuU2lkZWJhckl0ZW1Hcm91cC5kaXNwbGF5TmFtZSA9IFwiU2lkZWJhci5JdGVtR3JvdXBcIjtcblxuZXhwb3J0IHsgU2lkZWJhckl0ZW1Hcm91cCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2lkZWJhckl0ZW1Hcm91cC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VTaWRlYmFyQ29udGV4dCB9IGZyb20gJy4vU2lkZWJhckNvbnRleHQubWpzJztcblxuY29uc3QgU2lkZWJhckl0ZW1zID0gKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lIH0gPSB1c2VTaWRlYmFyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuaXRlbXMsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLXNpZGViYXItaXRlbXNcIiwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcblNpZGViYXJJdGVtcy5kaXNwbGF5TmFtZSA9IFwiU2lkZWJhci5JdGVtc1wiO1xuXG5leHBvcnQgeyBTaWRlYmFySXRlbXMgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNpZGViYXJJdGVtcy5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VJZCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVNpZGViYXJDb250ZXh0IH0gZnJvbSAnLi9TaWRlYmFyQ29udGV4dC5tanMnO1xuXG5jb25zdCBTaWRlYmFyTG9nbyA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGhyZWYsXG4gIGltZyxcbiAgaW1nQWx0ID0gXCJcIixcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBpc0NvbGxhcHNlZCB9ID0gdXNlU2lkZWJhckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLmxvZ28sIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgIFwiYVwiLFxuICAgIHtcbiAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGBmbG93Yml0ZS1zaWRlYmFyLWxvZ28tJHtpZH1gLFxuICAgICAgaHJlZixcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwiaW1nXCIsIHsgYWx0OiBpbWdBbHQsIHNyYzogaW1nLCBjbGFzc05hbWU6IHRoZW1lLmltZyB9KSxcbiAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLmNvbGxhcHNlZFtpc0NvbGxhcHNlZCA/IFwib25cIiA6IFwib2ZmXCJdLCBpZDogYGZsb3diaXRlLXNpZGViYXItbG9nby0ke2lkfWAsIGNoaWxkcmVuIH0pXG4gICAgICBdXG4gICAgfVxuICApO1xufTtcblNpZGViYXJMb2dvLmRpc3BsYXlOYW1lID0gXCJTaWRlYmFyLkxvZ29cIjtcblxuZXhwb3J0IHsgU2lkZWJhckxvZ28gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNpZGViYXJMb2dvLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IFNpZGViYXJDb2xsYXBzZSB9IGZyb20gJy4vU2lkZWJhckNvbGxhcHNlLm1qcyc7XG5pbXBvcnQgeyBTaWRlYmFyQ29udGV4dCB9IGZyb20gJy4vU2lkZWJhckNvbnRleHQubWpzJztcbmltcG9ydCB7IFNpZGViYXJDVEEgfSBmcm9tICcuL1NpZGViYXJDVEEubWpzJztcbmltcG9ydCB7IFNpZGViYXJJdGVtIH0gZnJvbSAnLi9TaWRlYmFySXRlbS5tanMnO1xuaW1wb3J0IHsgU2lkZWJhckl0ZW1Hcm91cCB9IGZyb20gJy4vU2lkZWJhckl0ZW1Hcm91cC5tanMnO1xuaW1wb3J0IHsgU2lkZWJhckl0ZW1zIH0gZnJvbSAnLi9TaWRlYmFySXRlbXMubWpzJztcbmltcG9ydCB7IFNpZGViYXJMb2dvIH0gZnJvbSAnLi9TaWRlYmFyTG9nby5tanMnO1xuXG5jb25zdCBTaWRlYmFyQ29tcG9uZW50ID0gKHtcbiAgY2hpbGRyZW4sXG4gIGFzOiBDb21wb25lbnQgPSBcIm5hdlwiLFxuICBjb2xsYXBzZUJlaGF2aW9yID0gXCJjb2xsYXBzZVwiLFxuICBjb2xsYXBzZWQ6IGlzQ29sbGFwc2VkID0gZmFsc2UsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuc2lkZWJhciwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChTaWRlYmFyQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSwgaXNDb2xsYXBzZWQgfSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgQ29tcG9uZW50LFxuICAgIHtcbiAgICAgIFwiYXJpYS1sYWJlbFwiOiBcIlNpZGViYXJcIixcbiAgICAgIGhpZGRlbjogaXNDb2xsYXBzZWQgJiYgY29sbGFwc2VCZWhhdmlvciA9PT0gXCJoaWRlXCIsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCB0aGVtZS5yb290LmNvbGxhcHNlZFtpc0NvbGxhcHNlZCA/IFwib25cIiA6IFwib2ZmXCJdLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUucm9vdC5pbm5lciwgY2hpbGRyZW4gfSlcbiAgICB9XG4gICkgfSk7XG59O1xuU2lkZWJhckNvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiU2lkZWJhclwiO1xuY29uc3QgU2lkZWJhciA9IE9iamVjdC5hc3NpZ24oU2lkZWJhckNvbXBvbmVudCwge1xuICBDb2xsYXBzZTogU2lkZWJhckNvbGxhcHNlLFxuICBDVEE6IFNpZGViYXJDVEEsXG4gIEl0ZW06IFNpZGViYXJJdGVtLFxuICBJdGVtczogU2lkZWJhckl0ZW1zLFxuICBJdGVtR3JvdXA6IFNpZGViYXJJdGVtR3JvdXAsXG4gIExvZ286IFNpZGViYXJMb2dvXG59KTtcblxuZXhwb3J0IHsgU2lkZWJhciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2lkZWJhci5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBUYWJsZUJvZHlDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuZnVuY3Rpb24gdXNlVGFibGVCb2R5Q29udGV4dCgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoVGFibGVCb2R5Q29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZVRhYmxlQm9keUNvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBUYWJsZUJvZHlDb250ZXh0IHByb3ZpZGVyIVwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cblxuZXhwb3J0IHsgVGFibGVCb2R5Q29udGV4dCwgdXNlVGFibGVCb2R5Q29udGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGFibGVCb2R5Q29udGV4dC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBUYWJsZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VUYWJsZUNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFRhYmxlQ29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZVRhYmxlQ29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIFRhYmxlQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IFRhYmxlQ29udGV4dCwgdXNlVGFibGVDb250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UYWJsZUNvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IFRhYmxlQm9keUNvbnRleHQgfSBmcm9tICcuL1RhYmxlQm9keUNvbnRleHQubWpzJztcbmltcG9ydCB7IHVzZVRhYmxlQ29udGV4dCB9IGZyb20gJy4vVGFibGVDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRhYmxlQm9keSA9IGZvcndhcmRSZWYoXG4gICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUgfSA9IHVzZVRhYmxlQ29udGV4dCgpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5ib2R5LCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goVGFibGVCb2R5Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSB9LCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcInRib2R5XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIHJlZiwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pIH0pO1xuICB9XG4pO1xuVGFibGVCb2R5LmRpc3BsYXlOYW1lID0gXCJUYWJsZS5Cb2R5XCI7XG5cbmV4cG9ydCB7IFRhYmxlQm9keSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGFibGVCb2R5Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VUYWJsZUJvZHlDb250ZXh0IH0gZnJvbSAnLi9UYWJsZUJvZHlDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRhYmxlQ2VsbCA9IGZvcndhcmRSZWYoXG4gICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB7IHRoZW1lOiBib2R5VGhlbWUgfSA9IHVzZVRhYmxlQm9keUNvbnRleHQoKTtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChib2R5VGhlbWUuY2VsbCwgY3VzdG9tVGhlbWUpO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwidGRcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgcmVmLCAuLi5wcm9wcywgY2hpbGRyZW4gfSk7XG4gIH1cbik7XG5UYWJsZUNlbGwuZGlzcGxheU5hbWUgPSBcIlRhYmxlLkNlbGxcIjtcblxuZXhwb3J0IHsgVGFibGVDZWxsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UYWJsZUNlbGwubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgVGFibGVIZWFkQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQodm9pZCAwKTtcbmZ1bmN0aW9uIHVzZVRhYmxlSGVhZENvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFRhYmxlSGVhZENvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VUYWJsZUhlYWRDb250ZXh0IHNob3VsZCBiZSB1c2VkIHdpdGhpbiB0aGUgVGFibGVIZWFkQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IFRhYmxlSGVhZENvbnRleHQsIHVzZVRhYmxlSGVhZENvbnRleHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRhYmxlSGVhZENvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVRhYmxlQ29udGV4dCB9IGZyb20gJy4vVGFibGVDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBUYWJsZUhlYWRDb250ZXh0IH0gZnJvbSAnLi9UYWJsZUhlYWRDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRhYmxlSGVhZCA9IGZvcndhcmRSZWYoXG4gICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUgfSA9IHVzZVRhYmxlQ29udGV4dCgpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5oZWFkLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goVGFibGVIZWFkQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSB9LCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcInRoZWFkXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIHJlZiwgLi4ucHJvcHMsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwidHJcIiwgeyBjaGlsZHJlbiB9KSB9KSB9KTtcbiAgfVxuKTtcblRhYmxlSGVhZC5kaXNwbGF5TmFtZSA9IFwiVGFibGUuSGVhZFwiO1xuXG5leHBvcnQgeyBUYWJsZUhlYWQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRhYmxlSGVhZC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlVGFibGVIZWFkQ29udGV4dCB9IGZyb20gJy4vVGFibGVIZWFkQ29udGV4dC5tanMnO1xuXG5jb25zdCBUYWJsZUhlYWRDZWxsID0gZm9yd2FyZFJlZihcbiAgKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHsgdGhlbWU6IGhlYWRUaGVtZSB9ID0gdXNlVGFibGVIZWFkQ29udGV4dCgpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGhlYWRUaGVtZS5jZWxsLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJ0aFwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCByZWYsIC4uLnByb3BzLCBjaGlsZHJlbiB9KTtcbiAgfVxuKTtcblRhYmxlSGVhZENlbGwuZGlzcGxheU5hbWUgPSBcIlRhYmxlLkhlYWRDZWxsXCI7XG5cbmV4cG9ydCB7IFRhYmxlSGVhZENlbGwgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRhYmxlSGVhZENlbGwubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVRhYmxlQ29udGV4dCB9IGZyb20gJy4vVGFibGVDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRhYmxlUm93ID0gZm9yd2FyZFJlZihcbiAgKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgaG92ZXJhYmxlLCBzdHJpcGVkIH0gPSB1c2VUYWJsZUNvbnRleHQoKTtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUucm93LCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcInRyXCIsXG4gICAgICB7XG4gICAgICAgIHJlZixcbiAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcInRhYmxlLXJvdy1lbGVtZW50XCIsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBzdHJpcGVkICYmIHRoZW1lLnN0cmlwZWQsIGhvdmVyYWJsZSAmJiB0aGVtZS5ob3ZlcmVkLCBjbGFzc05hbWUpLFxuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgY2hpbGRyZW5cbiAgICAgIH1cbiAgICApO1xuICB9XG4pO1xuVGFibGVSb3cuZGlzcGxheU5hbWUgPSBcIlRhYmxlLlJvd1wiO1xuXG5leHBvcnQgeyBUYWJsZVJvdyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGFibGVSb3cubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4LCBqc3hzIH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IFRhYmxlQm9keSB9IGZyb20gJy4vVGFibGVCb2R5Lm1qcyc7XG5pbXBvcnQgeyBUYWJsZUNlbGwgfSBmcm9tICcuL1RhYmxlQ2VsbC5tanMnO1xuaW1wb3J0IHsgVGFibGVDb250ZXh0IH0gZnJvbSAnLi9UYWJsZUNvbnRleHQubWpzJztcbmltcG9ydCB7IFRhYmxlSGVhZCB9IGZyb20gJy4vVGFibGVIZWFkLm1qcyc7XG5pbXBvcnQgeyBUYWJsZUhlYWRDZWxsIH0gZnJvbSAnLi9UYWJsZUhlYWRDZWxsLm1qcyc7XG5pbXBvcnQgeyBUYWJsZVJvdyB9IGZyb20gJy4vVGFibGVSb3cubWpzJztcblxuY29uc3QgVGFibGVDb21wb25lbnQgPSBmb3J3YXJkUmVmKFxuICAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBzdHJpcGVkLCBob3ZlcmFibGUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnRhYmxlLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwidGFibGUtZWxlbWVudFwiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC53cmFwcGVyKSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFRhYmxlQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSwgc3RyaXBlZCwgaG92ZXJhYmxlIH0sIGNoaWxkcmVuOiBbXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3Quc2hhZG93LCBjbGFzc05hbWUpIH0pLFxuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcInRhYmxlXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3QuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIHJlZiwgY2hpbGRyZW4gfSlcbiAgICBdIH0pIH0pO1xuICB9XG4pO1xuVGFibGVDb21wb25lbnQuZGlzcGxheU5hbWUgPSBcIlRhYmxlXCI7XG5jb25zdCBUYWJsZSA9IE9iamVjdC5hc3NpZ24oVGFibGVDb21wb25lbnQsIHtcbiAgSGVhZDogVGFibGVIZWFkLFxuICBCb2R5OiBUYWJsZUJvZHksXG4gIFJvdzogVGFibGVSb3csXG4gIENlbGw6IFRhYmxlQ2VsbCxcbiAgSGVhZENlbGw6IFRhYmxlSGVhZENlbGxcbn0pO1xuXG5leHBvcnQgeyBUYWJsZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGFibGUubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuXG5jb25zdCBUYWJJdGVtID0gKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSB9KSA9PiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lLCBjaGlsZHJlbiB9KTtcblRhYkl0ZW0uZGlzcGxheU5hbWUgPSBcIlRhYnMuSXRlbVwiO1xuXG5leHBvcnQgeyBUYWJJdGVtIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UYWJJdGVtLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZUlkLCB1c2VNZW1vLCBDaGlsZHJlbiwgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VJbXBlcmF0aXZlSGFuZGxlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgVGFiSXRlbSB9IGZyb20gJy4vVGFiSXRlbS5tanMnO1xuXG5jb25zdCBUYWJzQ29tcG9uZW50ID0gZm9yd2FyZFJlZihcbiAgKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgb25BY3RpdmVUYWJDaGFuZ2UsIHZhcmlhbnQgPSBcImRlZmF1bHRcIiwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkudGFicywgY3VzdG9tVGhlbWUpO1xuICAgIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgICBjb25zdCB0YWJzID0gdXNlTWVtbyhcbiAgICAgICgpID0+IENoaWxkcmVuLm1hcChcbiAgICAgICAgQ2hpbGRyZW4udG9BcnJheShjaGlsZHJlbiksXG4gICAgICAgICh7IHByb3BzOiBwcm9wczIgfSkgPT4gcHJvcHMyXG4gICAgICApLFxuICAgICAgW2NoaWxkcmVuXVxuICAgICk7XG4gICAgY29uc3QgdGFiUmVmcyA9IHVzZVJlZihbXSk7XG4gICAgY29uc3QgW2FjdGl2ZVRhYiwgc2V0QWN0aXZlVGFiXSA9IHVzZVN0YXRlKFxuICAgICAgTWF0aC5tYXgoXG4gICAgICAgIDAsXG4gICAgICAgIHRhYnMuZmluZEluZGV4KCh0YWIpID0+IHRhYi5hY3RpdmUpXG4gICAgICApXG4gICAgKTtcbiAgICBjb25zdCBbZm9jdXNlZFRhYiwgc2V0Rm9jdXNlZFRhYl0gPSB1c2VTdGF0ZSgtMSk7XG4gICAgY29uc3Qgc2V0QWN0aXZlVGFiV2l0aENhbGxiYWNrID0gKGFjdGl2ZVRhYjIpID0+IHtcbiAgICAgIHNldEFjdGl2ZVRhYihhY3RpdmVUYWIyKTtcbiAgICAgIGlmIChvbkFjdGl2ZVRhYkNoYW5nZSkgb25BY3RpdmVUYWJDaGFuZ2UoYWN0aXZlVGFiMik7XG4gICAgfTtcbiAgICBjb25zdCBoYW5kbGVDbGljayA9ICh7IHRhcmdldCB9KSA9PiB7XG4gICAgICBzZXRBY3RpdmVUYWJXaXRoQ2FsbGJhY2sodGFyZ2V0KTtcbiAgICAgIHNldEZvY3VzZWRUYWIodGFyZ2V0KTtcbiAgICB9O1xuICAgIGNvbnN0IGhhbmRsZUtleWJvYXJkID0gKHsgZXZlbnQsIHRhcmdldCB9KSA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93TGVmdFwiKSB7XG4gICAgICAgIHNldEZvY3VzZWRUYWIoTWF0aC5tYXgoMCwgZm9jdXNlZFRhYiAtIDEpKTtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dSaWdodFwiKSB7XG4gICAgICAgIHNldEZvY3VzZWRUYWIoTWF0aC5taW4odGFicy5sZW5ndGggLSAxLCBmb2N1c2VkVGFiICsgMSkpO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiKSB7XG4gICAgICAgIHNldEFjdGl2ZVRhYldpdGhDYWxsYmFjayh0YXJnZXQpO1xuICAgICAgICBzZXRGb2N1c2VkVGFiKHRhcmdldCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCB0YWJJdGVtU3R5bGUgPSB0aGVtZS50YWJsaXN0LnRhYml0ZW0udmFyaWFudFt2YXJpYW50XTtcbiAgICBjb25zdCB0YWJJdGVtQ29udGFpbmVyU3R5bGUgPSB0aGVtZS50YWJpdGVtY29udGFpbmVyLnZhcmlhbnRbdmFyaWFudF07XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIHRhYlJlZnMuY3VycmVudFtmb2N1c2VkVGFiXT8uZm9jdXMoKTtcbiAgICB9LCBbZm9jdXNlZFRhYl0pO1xuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiAoe1xuICAgICAgc2V0QWN0aXZlVGFiOiBzZXRBY3RpdmVUYWJXaXRoQ2FsbGJhY2tcbiAgICB9KSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiBbXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IFwiVGFic1wiLFxuICAgICAgICAgIHJvbGU6IFwidGFibGlzdFwiLFxuICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS50YWJsaXN0LmJhc2UsIHRoZW1lLnRhYmxpc3QudmFyaWFudFt2YXJpYW50XSwgY2xhc3NOYW1lKSxcbiAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbjogdGFicy5tYXAoKHRhYiwgaW5kZXgpID0+IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IGAke2lkfS10YWJwYW5lbC0ke2luZGV4fWAsXG4gICAgICAgICAgICAgIFwiYXJpYS1zZWxlY3RlZFwiOiBpbmRleCA9PT0gYWN0aXZlVGFiLFxuICAgICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgICAgICAgdGhlbWUudGFibGlzdC50YWJpdGVtLmJhc2UsXG4gICAgICAgICAgICAgICAgdGFiSXRlbVN0eWxlLmJhc2UsXG4gICAgICAgICAgICAgICAgaW5kZXggPT09IGFjdGl2ZVRhYiAmJiB0YWJJdGVtU3R5bGUuYWN0aXZlLm9uLFxuICAgICAgICAgICAgICAgIGluZGV4ICE9PSBhY3RpdmVUYWIgJiYgIXRhYi5kaXNhYmxlZCAmJiB0YWJJdGVtU3R5bGUuYWN0aXZlLm9mZlxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogdGFiLmRpc2FibGVkLFxuICAgICAgICAgICAgICBpZDogYCR7aWR9LXRhYi0ke2luZGV4fWAsXG4gICAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IGhhbmRsZUNsaWNrKHsgdGFyZ2V0OiBpbmRleCB9KSxcbiAgICAgICAgICAgICAgb25LZXlEb3duOiAoZXZlbnQpID0+IGhhbmRsZUtleWJvYXJkKHsgZXZlbnQsIHRhcmdldDogaW5kZXggfSksXG4gICAgICAgICAgICAgIHJlZjogKGVsZW1lbnQpID0+IHRhYlJlZnMuY3VycmVudFtpbmRleF0gPSBlbGVtZW50LFxuICAgICAgICAgICAgICByb2xlOiBcInRhYlwiLFxuICAgICAgICAgICAgICB0YWJJbmRleDogaW5kZXggPT09IGZvY3VzZWRUYWIgPyAwIDogLTEsXG4gICAgICAgICAgICAgIHN0eWxlOiB7IHpJbmRleDogaW5kZXggPT09IGZvY3VzZWRUYWIgPyAyIDogMSB9LFxuICAgICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgIHRhYi5pY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3godGFiLmljb24sIHsgY2xhc3NOYW1lOiB0aGVtZS50YWJsaXN0LnRhYml0ZW0uaWNvbiB9KSxcbiAgICAgICAgICAgICAgICB0YWIudGl0bGVcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgKSlcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUudGFiaXRlbWNvbnRhaW5lci5iYXNlLCB0YWJJdGVtQ29udGFpbmVyU3R5bGUpLCBjaGlsZHJlbjogdGFicy5tYXAoKHRhYiwgaW5kZXgpID0+IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBgJHtpZH0tdGFiLSR7aW5kZXh9YCxcbiAgICAgICAgICBjbGFzc05hbWU6IHRoZW1lLnRhYnBhbmVsLFxuICAgICAgICAgIGhpZGRlbjogaW5kZXggIT09IGFjdGl2ZVRhYixcbiAgICAgICAgICBpZDogYCR7aWR9LXRhYnBhbmVsLSR7aW5kZXh9YCxcbiAgICAgICAgICByb2xlOiBcInRhYnBhbmVsXCIsXG4gICAgICAgICAgdGFiSW5kZXg6IDAsXG4gICAgICAgICAgY2hpbGRyZW46IHRhYi5jaGlsZHJlblxuICAgICAgICB9LFxuICAgICAgICBpbmRleFxuICAgICAgKSkgfSlcbiAgICBdIH0pO1xuICB9XG4pO1xuVGFic0NvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiVGFic1wiO1xuY29uc3QgVGFicyA9IE9iamVjdC5hc3NpZ24oVGFic0NvbXBvbmVudCwge1xuICBJdGVtOiBUYWJJdGVtXG59KTtcblxuZXhwb3J0IHsgVGFicyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGFicy5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBGcmFnbWVudCwganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IEhlbHBlclRleHQgfSBmcm9tICcuLi9IZWxwZXJUZXh0L0hlbHBlclRleHQubWpzJztcblxuY29uc3QgVGV4dGFyZWEgPSBmb3J3YXJkUmVmKFxuICAoeyBjbGFzc05hbWUsIGNvbG9yID0gXCJncmF5XCIsIGhlbHBlclRleHQsIHNoYWRvdywgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkudGV4dGFyZWEsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgIFwidGV4dGFyZWFcIixcbiAgICAgICAge1xuICAgICAgICAgIHJlZixcbiAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgdGhlbWUuY29sb3JzW2NvbG9yXSwgdGhlbWUud2l0aFNoYWRvd1tzaGFkb3cgPyBcIm9uXCIgOiBcIm9mZlwiXSwgY2xhc3NOYW1lKSxcbiAgICAgICAgICAuLi5wcm9wc1xuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGVscGVyVGV4dCAmJiAvKiBAX19QVVJFX18gKi8ganN4KEhlbHBlclRleHQsIHsgY29sb3IsIGNoaWxkcmVuOiBoZWxwZXJUZXh0IH0pXG4gICAgXSB9KTtcbiAgfVxuKTtcblRleHRhcmVhLmRpc3BsYXlOYW1lID0gXCJUZXh0YXJlYVwiO1xuXG5leHBvcnQgeyBUZXh0YXJlYSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGV4dGFyZWEubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgVGltZWxpbmVDb250ZW50Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQodm9pZCAwKTtcbmZ1bmN0aW9uIHVzZVRpbWVsaW5lQ29udGVudENvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFRpbWVsaW5lQ29udGVudENvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VUaW1lbGluZUNvbnRlbnRDb250ZXh0IHNob3VsZCBiZSB1c2VkIHdpdGhpbiB0aGUgVGltZWxpbmVDb250ZW50Q29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IFRpbWVsaW5lQ29udGVudENvbnRleHQsIHVzZVRpbWVsaW5lQ29udGVudENvbnRleHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRpbWVsaW5lQ29udGVudENvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlVGltZWxpbmVDb250ZW50Q29udGV4dCB9IGZyb20gJy4vVGltZWxpbmVDb250ZW50Q29udGV4dC5tanMnO1xuXG5jb25zdCBUaW1lbGluZUJvZHkgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiBjb250ZW50VGhlbWUgfSA9IHVzZVRpbWVsaW5lQ29udGVudENvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoY29udGVudFRoZW1lLmJvZHksIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcblxuZXhwb3J0IHsgVGltZWxpbmVCb2R5IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZUJvZHkubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgVGltZWxpbmVDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuZnVuY3Rpb24gdXNlVGltZWxpbmVDb250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChUaW1lbGluZUNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VUaW1lbGluZUNvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBUaW1lbGluZUNvbnRleHQgcHJvdmlkZXIhXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgeyBUaW1lbGluZUNvbnRleHQsIHVzZVRpbWVsaW5lQ29udGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGltZWxpbmVDb250ZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IFRpbWVsaW5lSXRlbUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VUaW1lbGluZUl0ZW1Db250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChUaW1lbGluZUl0ZW1Db250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlVGltZWxpbmVJdGVtQ29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIFRpbWVsaW5lSXRlbUNvbnRleHQgcHJvdmlkZXIhXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgeyBUaW1lbGluZUl0ZW1Db250ZXh0LCB1c2VUaW1lbGluZUl0ZW1Db250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZUl0ZW1Db250ZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IFRpbWVsaW5lQ29udGVudENvbnRleHQgfSBmcm9tICcuL1RpbWVsaW5lQ29udGVudENvbnRleHQubWpzJztcbmltcG9ydCB7IHVzZVRpbWVsaW5lQ29udGV4dCB9IGZyb20gJy4vVGltZWxpbmVDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyB1c2VUaW1lbGluZUl0ZW1Db250ZXh0IH0gZnJvbSAnLi9UaW1lbGluZUl0ZW1Db250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRpbWVsaW5lQ29udGVudCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB7IGhvcml6b250YWwgfSA9IHVzZVRpbWVsaW5lQ29udGV4dCgpO1xuICBjb25zdCB7IHRoZW1lOiBpdGVtVGhlbWUgfSA9IHVzZVRpbWVsaW5lSXRlbUNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoaXRlbVRoZW1lLmNvbnRlbnQsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goVGltZWxpbmVDb250ZW50Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSB9LCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJ0aW1lbGluZS1jb250ZW50XCIsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCBob3Jpem9udGFsID8gdGhlbWUucm9vdC5ob3Jpem9udGFsIDogdGhlbWUucm9vdC52ZXJ0aWNhbCwgY2xhc3NOYW1lKSxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW5cbiAgICB9XG4gICkgfSk7XG59O1xuXG5leHBvcnQgeyBUaW1lbGluZUNvbnRlbnQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRpbWVsaW5lQ29udGVudC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VUaW1lbGluZUNvbnRleHQgfSBmcm9tICcuL1RpbWVsaW5lQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgVGltZWxpbmVJdGVtQ29udGV4dCB9IGZyb20gJy4vVGltZWxpbmVJdGVtQ29udGV4dC5tanMnO1xuXG5jb25zdCBUaW1lbGluZUl0ZW0gPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUsIGhvcml6b250YWwgfSA9IHVzZVRpbWVsaW5lQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuaXRlbSwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChUaW1lbGluZUl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IHRoZW1lIH0sIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwibGlcIixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwidGltZWxpbmUtaXRlbVwiLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKGhvcml6b250YWwgJiYgdGhlbWUucm9vdC5ob3Jpem9udGFsLCAhaG9yaXpvbnRhbCAmJiB0aGVtZS5yb290LnZlcnRpY2FsLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlblxuICAgIH1cbiAgKSB9KTtcbn07XG5cbmV4cG9ydCB7IFRpbWVsaW5lSXRlbSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGltZWxpbmVJdGVtLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVRpbWVsaW5lQ29udGV4dCB9IGZyb20gJy4vVGltZWxpbmVDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyB1c2VUaW1lbGluZUl0ZW1Db250ZXh0IH0gZnJvbSAnLi9UaW1lbGluZUl0ZW1Db250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRpbWVsaW5lUG9pbnQgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBpY29uOiBJY29uLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgeyBob3Jpem9udGFsIH0gPSB1c2VUaW1lbGluZUNvbnRleHQoKTtcbiAgY29uc3QgeyB0aGVtZTogaXRlbVRoZW1lIH0gPSB1c2VUaW1lbGluZUl0ZW1Db250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGl0ZW1UaGVtZS5wb2ludCwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwidGltZWxpbmUtcG9pbnRcIixcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShob3Jpem9udGFsICYmIHRoZW1lLmhvcml6b250YWwsICFob3Jpem9udGFsICYmIHRoZW1lLnZlcnRpY2FsLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgSWNvbiA/IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLm1hcmtlci5pY29uLndyYXBwZXIpLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLm1hcmtlci5pY29uLmJhc2UpIH0pIH0pIDogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShob3Jpem9udGFsICYmIHRoZW1lLm1hcmtlci5iYXNlLmhvcml6b250YWwsICFob3Jpem9udGFsICYmIHRoZW1lLm1hcmtlci5iYXNlLnZlcnRpY2FsKVxuICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgICAgaG9yaXpvbnRhbCAmJiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmxpbmUpIH0pXG4gICAgICBdXG4gICAgfVxuICApO1xufTtcblxuZXhwb3J0IHsgVGltZWxpbmVQb2ludCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGltZWxpbmVQb2ludC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VUaW1lbGluZUNvbnRlbnRDb250ZXh0IH0gZnJvbSAnLi9UaW1lbGluZUNvbnRlbnRDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRpbWVsaW5lVGltZSA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IGNvbnRlbnRUaGVtZSB9ID0gdXNlVGltZWxpbmVDb250ZW50Q29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChjb250ZW50VGhlbWUudGltZSwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcInRpbWVcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcblxuZXhwb3J0IHsgVGltZWxpbmVUaW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZVRpbWUubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlVGltZWxpbmVDb250ZW50Q29udGV4dCB9IGZyb20gJy4vVGltZWxpbmVDb250ZW50Q29udGV4dC5tanMnO1xuXG5jb25zdCBUaW1lbGluZVRpdGxlID0gKHtcbiAgYXM6IFRhZyA9IFwiaDNcIixcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IGNvbnRlbnRUaGVtZSB9ID0gdXNlVGltZWxpbmVDb250ZW50Q29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChjb250ZW50VGhlbWUudGl0bGUsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goVGFnLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW4gfSk7XG59O1xuXG5leHBvcnQgeyBUaW1lbGluZVRpdGxlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZVRpdGxlLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IFRpbWVsaW5lQm9keSB9IGZyb20gJy4vVGltZWxpbmVCb2R5Lm1qcyc7XG5pbXBvcnQgeyBUaW1lbGluZUNvbnRlbnQgfSBmcm9tICcuL1RpbWVsaW5lQ29udGVudC5tanMnO1xuaW1wb3J0IHsgVGltZWxpbmVDb250ZXh0IH0gZnJvbSAnLi9UaW1lbGluZUNvbnRleHQubWpzJztcbmltcG9ydCB7IFRpbWVsaW5lSXRlbSB9IGZyb20gJy4vVGltZWxpbmVJdGVtLm1qcyc7XG5pbXBvcnQgeyBUaW1lbGluZVBvaW50IH0gZnJvbSAnLi9UaW1lbGluZVBvaW50Lm1qcyc7XG5pbXBvcnQgeyBUaW1lbGluZVRpbWUgfSBmcm9tICcuL1RpbWVsaW5lVGltZS5tanMnO1xuaW1wb3J0IHsgVGltZWxpbmVUaXRsZSB9IGZyb20gJy4vVGltZWxpbmVUaXRsZS5tanMnO1xuXG5jb25zdCBUaW1lbGluZUNvbXBvbmVudCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGhvcml6b250YWwsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnRpbWVsaW5lLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFRpbWVsaW5lQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSwgaG9yaXpvbnRhbCB9LCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcIm9sXCIsXG4gICAge1xuICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcInRpbWVsaW5lLWNvbXBvbmVudFwiLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICBob3Jpem9udGFsICYmIHRoZW1lLnJvb3QuZGlyZWN0aW9uLmhvcml6b250YWwsXG4gICAgICAgICFob3Jpem9udGFsICYmIHRoZW1lLnJvb3QuZGlyZWN0aW9uLnZlcnRpY2FsLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApIH0pO1xufTtcblRpbWVsaW5lQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJUaW1lbGluZVwiO1xuVGltZWxpbmVJdGVtLmRpc3BsYXlOYW1lID0gXCJUaW1lbGluZS5JdGVtXCI7XG5UaW1lbGluZVBvaW50LmRpc3BsYXlOYW1lID0gXCJUaW1lbGluZS5Qb2ludFwiO1xuVGltZWxpbmVDb250ZW50LmRpc3BsYXlOYW1lID0gXCJUaW1lbGluZS5Db250ZW50XCI7XG5UaW1lbGluZVRpbWUuZGlzcGxheU5hbWUgPSBcIlRpbWVsaW5lLlRpbWVcIjtcblRpbWVsaW5lVGl0bGUuZGlzcGxheU5hbWUgPSBcIlRpbWVsaW5lLlRpdGxlXCI7XG5UaW1lbGluZUJvZHkuZGlzcGxheU5hbWUgPSBcIlRpbWVsaW5lLkJvZHlcIjtcbmNvbnN0IFRpbWVsaW5lID0gT2JqZWN0LmFzc2lnbihUaW1lbGluZUNvbXBvbmVudCwge1xuICBJdGVtOiBUaW1lbGluZUl0ZW0sXG4gIFBvaW50OiBUaW1lbGluZVBvaW50LFxuICBDb250ZW50OiBUaW1lbGluZUNvbnRlbnQsXG4gIFRpbWU6IFRpbWVsaW5lVGltZSxcbiAgVGl0bGU6IFRpbWVsaW5lVGl0bGUsXG4gIEJvZHk6IFRpbWVsaW5lQm9keVxufSk7XG5cbmV4cG9ydCB7IFRpbWVsaW5lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZS5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBUb2FzdENvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VUb2FzdENvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFRvYXN0Q29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZVRvYXN0Q29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIFRvYXN0Q29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IFRvYXN0Q29udGV4dCwgdXNlVG9hc3RDb250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ub2FzdENvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgSGlYIH0gZnJvbSAncmVhY3QtaWNvbnMvaGknO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlVG9hc3RDb250ZXh0IH0gZnJvbSAnLi9Ub2FzdENvbnRleHQubWpzJztcblxuY29uc3QgVG9hc3RUb2dnbGUgPSAoe1xuICBjbGFzc05hbWUsXG4gIG9uQ2xpY2ssXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICB4SWNvbjogWEljb24gPSBIaVgsXG4gIG9uRGlzbWlzcyxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBkdXJhdGlvbiwgaXNDbG9zZWQsIGlzUmVtb3ZlZCwgc2V0SXNDbG9zZWQsIHNldElzUmVtb3ZlZCB9ID0gdXNlVG9hc3RDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS50b2dnbGUsIGN1c3RvbVRoZW1lKTtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZSkgPT4ge1xuICAgIGlmIChvbkNsaWNrKSBvbkNsaWNrKGUpO1xuICAgIGlmIChvbkRpc21pc3MpIHtcbiAgICAgIG9uRGlzbWlzcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZXRJc0Nsb3NlZCghaXNDbG9zZWQpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gc2V0SXNSZW1vdmVkKCFpc1JlbW92ZWQpLCBkdXJhdGlvbik7XG4gIH07XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwiYnV0dG9uXCIsXG4gICAge1xuICAgICAgXCJhcmlhLWxhYmVsXCI6IFwiQ2xvc2VcIixcbiAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChYSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuaWNvbiB9KVxuICAgIH1cbiAgKTtcbn07XG5cbmV4cG9ydCB7IFRvYXN0VG9nZ2xlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ub2FzdFRvZ2dsZS5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IFRvYXN0Q29udGV4dCB9IGZyb20gJy4vVG9hc3RDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBUb2FzdFRvZ2dsZSB9IGZyb20gJy4vVG9hc3RUb2dnbGUubWpzJztcblxuY29uc3QgZHVyYXRpb25DbGFzc2VzID0ge1xuICA3NTogXCJkdXJhdGlvbi03NVwiLFxuICAxMDA6IFwiZHVyYXRpb24tMTAwXCIsXG4gIDE1MDogXCJkdXJhdGlvbi0xNTBcIixcbiAgMjAwOiBcImR1cmF0aW9uLTIwMFwiLFxuICAzMDA6IFwiZHVyYXRpb24tMzAwXCIsXG4gIDUwMDogXCJkdXJhdGlvbi01MDBcIixcbiAgNzAwOiBcImR1cmF0aW9uLTcwMFwiLFxuICAxZTM6IFwiZHVyYXRpb24tMTAwMFwiXG59O1xuY29uc3QgVG9hc3RDb21wb25lbnQgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBkdXJhdGlvbiA9IDMwMCwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgW2lzQ2xvc2VkLCBzZXRJc0Nsb3NlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtpc1JlbW92ZWQsIHNldElzUmVtb3ZlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkudG9hc3QsIGN1c3RvbVRoZW1lKTtcbiAgaWYgKGlzUmVtb3ZlZCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFRvYXN0Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSwgZHVyYXRpb24sIGlzQ2xvc2VkLCBpc1JlbW92ZWQsIHNldElzQ2xvc2VkLCBzZXRJc1JlbW92ZWQgfSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtdG9hc3RcIixcbiAgICAgIHJvbGU6IFwiYWxlcnRcIixcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmJhc2UsIGR1cmF0aW9uQ2xhc3Nlc1tkdXJhdGlvbl0sIGlzQ2xvc2VkICYmIHRoZW1lLnJvb3QuY2xvc2VkLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlblxuICAgIH1cbiAgKSB9KTtcbn07XG5Ub2FzdENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiVG9hc3RcIjtcblRvYXN0VG9nZ2xlLmRpc3BsYXlOYW1lID0gXCJUb2FzdC5Ub2dnbGVcIjtcbmNvbnN0IFRvYXN0ID0gT2JqZWN0LmFzc2lnbihUb2FzdENvbXBvbmVudCwge1xuICBUb2dnbGU6IFRvYXN0VG9nZ2xlXG59KTtcblxuZXhwb3J0IHsgVG9hc3QgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRvYXN0Lm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeHMsIEZyYWdtZW50LCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VJZCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgVG9nZ2xlU3dpdGNoID0gZm9yd2FyZFJlZihcbiAgKHtcbiAgICBjaGVja2VkLFxuICAgIGNsYXNzTmFtZSxcbiAgICBjb2xvciA9IFwiYmx1ZVwiLFxuICAgIHNpemluZyA9IFwibWRcIixcbiAgICBkaXNhYmxlZCxcbiAgICBsYWJlbCxcbiAgICBuYW1lLFxuICAgIG9uQ2hhbmdlLFxuICAgIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAgIC4uLnByb3BzXG4gIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnRvZ2dsZVN3aXRjaCwgY3VzdG9tVGhlbWUpO1xuICAgIGNvbnN0IHRvZ2dsZSA9ICgpID0+IG9uQ2hhbmdlKCFjaGVja2VkKTtcbiAgICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICAgIHRvZ2dsZSgpO1xuICAgIH07XG4gICAgY29uc3QgaGFuZGxlT25LZXlEb3duID0gKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQuY29kZSA9PSBcIkVudGVyXCIpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhGcmFnbWVudCwgeyBjaGlsZHJlbjogW1xuICAgICAgbmFtZSAmJiBjaGVja2VkID8gLyogQF9fUFVSRV9fICovIGpzeChcImlucHV0XCIsIHsgcmVmLCBjaGVja2VkLCBoaWRkZW46IHRydWUsIG5hbWUsIHJlYWRPbmx5OiB0cnVlLCB0eXBlOiBcImNoZWNrYm94XCIsIGNsYXNzTmFtZTogXCJzci1vbmx5XCIgfSkgOiBudWxsLFxuICAgICAgLyogQF9fUFVSRV9fICovIGpzeHMoXG4gICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBcImFyaWEtY2hlY2tlZFwiOiBjaGVja2VkLFxuICAgICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGAke2lkfS1mbG93Yml0ZS10b2dnbGVzd2l0Y2gtbGFiZWxgLFxuICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgIGlkOiBgJHtpZH0tZmxvd2JpdGUtdG9nZ2xlc3dpdGNoYCxcbiAgICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICAgICAgICBvbktleURvd246IGhhbmRsZU9uS2V5RG93bixcbiAgICAgICAgICByb2xlOiBcInN3aXRjaFwiLFxuICAgICAgICAgIHRhYkluZGV4OiAwLFxuICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3QuYmFzZSwgdGhlbWUucm9vdC5hY3RpdmVbZGlzYWJsZWQgPyBcIm9mZlwiIDogXCJvblwiXSwgY2xhc3NOYW1lKSxcbiAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS10b2dnbGVzd2l0Y2gtdG9nZ2xlXCIsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgICAgICAgdGhlbWUudG9nZ2xlLmJhc2UsXG4gICAgICAgICAgICAgICAgICB0aGVtZS50b2dnbGUuY2hlY2tlZFtjaGVja2VkID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgICAgICAgICBjaGVja2VkICYmIHRoZW1lLnRvZ2dsZS5jaGVja2VkLmNvbG9yW2NvbG9yXSxcbiAgICAgICAgICAgICAgICAgIHRoZW1lLnRvZ2dsZS5zaXplc1tzaXppbmddXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbGFiZWw/Lmxlbmd0aCA/IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLXRvZ2dsZXN3aXRjaC1sYWJlbFwiLFxuICAgICAgICAgICAgICAgIGlkOiBgJHtpZH0tZmxvd2JpdGUtdG9nZ2xlc3dpdGNoLWxhYmVsYCxcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHRoZW1lLnJvb3QubGFiZWwsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IGxhYmVsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkgOiBudWxsXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICApXG4gICAgXSB9KTtcbiAgfVxuKTtcblRvZ2dsZVN3aXRjaC5kaXNwbGF5TmFtZSA9IFwiVG9nZ2xlU3dpdGNoXCI7XG5cbmV4cG9ydCB7IFRvZ2dsZVN3aXRjaCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VG9nZ2xlU3dpdGNoLm1qcy5tYXBcbiIsImltcG9ydCB7IFJpRGVsZXRlQmluMkxpbmUsIFJpU2F2ZUZpbGwgfSBmcm9tIFwiQHByZWFjdC1pY29ucy9yaVwiXG5pbXBvcnQgeyBCc1hDaXJjbGUsIEJzUGx1cywgQnNQZW5jaWwgfSBmcm9tIFwiQHByZWFjdC1pY29ucy9ic1wiXG5pbXBvcnQgeyBCdXR0b24gYXMgQmFzZUJ1dHRvbiB9IGZyb20gXCJmbG93Yml0ZS1yZWFjdFwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IEJ1dHRvbiA9ICh7IHR5cGUgLCB2YXJpYW50ICwgb25DbGljayB9KSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPEJhc2VCdXR0b24gY29sb3I9e3ZhcmlhbnR9IHBpbGwgb25DbGljaz17b25DbGlja30+XG4gICAgICAgICAgICB7IHR5cGUgPT0gMSAmJiA8QnNQbHVzLz4gfVxuICAgICAgICAgICAgeyB0eXBlID09IDIgJiYgPEJzUGVuY2lsLz4gfVxuICAgICAgICAgICAgeyB0eXBlID09IDMgJiYgPFJpU2F2ZUZpbGwvPiB9XG4gICAgICAgICAgICB7IHR5cGUgPT0gNCAmJiA8QnNYQ2lyY2xlLz4gfVxuICAgICAgICAgICAgeyB0eXBlID09IDUgJiYgPFJpRGVsZXRlQmluMkxpbmUvPiB9XG4gICAgICAgIDwvQmFzZUJ1dHRvbj5cbiAgICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQnV0dG9uO1xuIiwiLyoqIERldGVybWluZXMgd2hldGhlciBhIGB0aGluZ2AgaXMgYW4gb2JqZWN0IGZvciB0aGUgcHVycG9zZXMgb2YgUkpTRi4gSW4gdGhpcyBjYXNlLCBgdGhpbmdgIGlzIGFuIG9iamVjdCBpZiBpdCBoYXNcbiAqIHRoZSB0eXBlIGBvYmplY3RgIGJ1dCBpcyBOT1QgbnVsbCwgYW4gYXJyYXkgb3IgYSBGaWxlLlxuICpcbiAqIEBwYXJhbSB0aGluZyAtIFRoZSB0aGluZyB0byBjaGVjayB0byBzZWUgd2hldGhlciBpdCBpcyBhbiBvYmplY3RcbiAqIEByZXR1cm5zIC0gVHJ1ZSBpZiBpdCBpcyBhIG5vbi1udWxsLCBub24tYXJyYXksIG5vbi1GaWxlIG9iamVjdFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc09iamVjdCh0aGluZykge1xuICAgIGlmICh0eXBlb2YgdGhpbmcgIT09ICdvYmplY3QnIHx8IHRoaW5nID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gbGFzdE1vZGlmaWVkIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBudW1iZXIgb24gYSBGaWxlIGluc3RhbmNlXG4gICAgLy8gYXMgcGVyIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9GaWxlQVBJLyNkZm4tbGFzdE1vZGlmaWVkXG4gICAgaWYgKHR5cGVvZiB0aGluZy5sYXN0TW9kaWZpZWQgPT09ICdudW1iZXInICYmIHR5cGVvZiBGaWxlICE9PSAndW5kZWZpbmVkJyAmJiB0aGluZyBpbnN0YW5jZW9mIEZpbGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBnZXRNb250aCBpcyBndWFyYW50ZWVkIHRvIGJlIGEgbWV0aG9kIG9uIGEgRGF0ZSBpbnN0YW5jZVxuICAgIC8vIGFzIHBlciBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi9tdWx0aXBhZ2UvbnVtYmVycy1hbmQtZGF0ZXMuaHRtbCNzZWMtZGF0ZS5wcm90b3R5cGUuZ2V0bW9udGhcbiAgICBpZiAodHlwZW9mIHRoaW5nLmdldE1vbnRoID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBEYXRlICE9PSAndW5kZWZpbmVkJyAmJiB0aGluZyBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gIUFycmF5LmlzQXJyYXkodGhpbmcpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXNPYmplY3QuanMubWFwIiwiaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QnO1xuLyoqIENoZWNrcyB0aGUgc2NoZW1hIHRvIHNlZSBpZiBpdCBpcyBhbGxvd2luZyBhZGRpdGlvbmFsIGl0ZW1zLCBieSB2ZXJpZnlpbmcgdGhhdCBgc2NoZW1hLmFkZGl0aW9uYWxJdGVtc2AgaXMgYW5cbiAqIG9iamVjdC4gVGhlIHVzZXIgaXMgd2FybmVkIGluIHRoZSBjb25zb2xlIGlmIGBzY2hlbWEuYWRkaXRpb25hbEl0ZW1zYCBoYXMgdGhlIHZhbHVlIGB0cnVlYC5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBvYmplY3QgdG8gY2hlY2tcbiAqIEByZXR1cm5zIC0gVHJ1ZSBpZiBhZGRpdGlvbmFsIGl0ZW1zIGlzIGFsbG93ZWQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhbGxvd0FkZGl0aW9uYWxJdGVtcyhzY2hlbWEpIHtcbiAgICBpZiAoc2NoZW1hLmFkZGl0aW9uYWxJdGVtcyA9PT0gdHJ1ZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ2FkZGl0aW9uYWxJdGVtcz10cnVlIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuICAgIHJldHVybiBpc09iamVjdChzY2hlbWEuYWRkaXRpb25hbEl0ZW1zKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFsbG93QWRkaXRpb25hbEl0ZW1zLmpzLm1hcCIsIi8qKiBBdHRlbXB0cyB0byBjb252ZXJ0IHRoZSBzdHJpbmcgaW50byBhIG51bWJlci4gSWYgYW4gZW1wdHkgc3RyaW5nIGlzIHByb3ZpZGVkLCB0aGVuIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLiBJZiBhXG4gKiBgbnVsbGAgaXMgcHJvdmlkZWQsIGl0IGlzIHJldHVybmVkLiBJZiB0aGUgc3RyaW5nIGVuZHMgaW4gYSBgLmAgdGhlbiB0aGUgc3RyaW5nIGlzIHJldHVybmVkIGJlY2F1c2UgdGhlIHVzZXIgbWF5IGJlXG4gKiBpbiB0aGUgbWlkZGxlIG9mIHR5cGluZyBhIGZsb2F0IG51bWJlci4gSWYgYSBudW1iZXIgZW5kcyBpbiBhIHBhdHRlcm4gbGlrZSBgLjBgLCBgLjIwYCwgYC4wMzBgLCBzdHJpbmcgaXMgcmV0dXJuZWRcbiAqIGJlY2F1c2UgdGhlIHVzZXIgbWF5IGJlIHR5cGluZyBudW1iZXIgdGhhdCB3aWxsIGVuZCBpbiBhIG5vbi16ZXJvIGRpZ2l0LiBPdGhlcndpc2UsIHRoZSBzdHJpbmcgaXMgd3JhcHBlZCBieVxuICogYE51bWJlcigpYCBhbmQgaWYgdGhhdCByZXN1bHQgaXMgbm90IGBOYU5gLCB0aGF0IG51bWJlciB3aWxsIGJlIHJldHVybmVkLCBvdGhlcndpc2UgdGhlIHN0cmluZyBgdmFsdWVgIHdpbGwgYmUuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHN0cmluZyBvciBudWxsIHZhbHVlIHRvIGNvbnZlcnQgdG8gYSBudW1iZXJcbiAqIEByZXR1cm5zIC0gVGhlIGB2YWx1ZWAgY29udmVydGVkIHRvIGEgbnVtYmVyIHdoZW4gYXBwcm9wcmlhdGUsIG90aGVyd2lzZSB0aGUgYHZhbHVlYFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhc051bWJlcih2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoL1xcLiQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIC8vICczLicgY2FuJ3QgcmVhbGx5IGJlIGNvbnNpZGVyZWQgYSBudW1iZXIgZXZlbiBpZiBpdCBwYXJzZXMgaW4ganMuIFRoZVxuICAgICAgICAvLyB1c2VyIGlzIG1vc3QgbGlrZWx5IGVudGVyaW5nIGEgZmxvYXQuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKC9cXC4wJC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgLy8gd2UgbmVlZCB0byByZXR1cm4gdGhpcyBhcyBhIHN0cmluZyBoZXJlLCB0byBhbGxvdyBmb3IgaW5wdXQgbGlrZSAzLjA3XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKC9cXC5cXGQqMCQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIC8vIEl0J3MgYSBudW1iZXIsIHRoYXQncyBjb29sIC0gYnV0IHdlIG5lZWQgaXQgYXMgYSBzdHJpbmcgc28gaXQgZG9lc24ndCBzY3Jld1xuICAgICAgICAvLyB3aXRoIHRoZSB1c2VyIHdoZW4gZW50ZXJpbmcgZG9sbGFyIGFtb3VudHMgb3Igb3RoZXIgdmFsdWVzIChzdWNoIGFzIHRob3NlIHdpdGhcbiAgICAgICAgLy8gc3BlY2lmaWMgcHJlY2lzaW9uIG9yIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMpXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgY29uc3QgbiA9IE51bWJlcih2YWx1ZSk7XG4gICAgY29uc3QgdmFsaWQgPSB0eXBlb2YgbiA9PT0gJ251bWJlcicgJiYgIU51bWJlci5pc05hTihuKTtcbiAgICByZXR1cm4gdmFsaWQgPyBuIDogdmFsdWU7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hc051bWJlci5qcy5tYXAiLCIvKiogQmVsb3cgYXJlIHRoZSBsaXN0IG9mIGFsbCB0aGUga2V5cyBpbnRvIHZhcmlvdXMgZWxlbWVudHMgb2YgYSBSSlNGU2NoZW1hIG9yIFVpU2NoZW1hIHRoYXQgYXJlIHVzZWQgYnkgdGhlIHZhcmlvdXNcbiAqIHV0aWxpdHkgZnVuY3Rpb25zLiBJbiBhZGRpdGlvbiB0byB0aG9zZSBrZXlzLCB0aGVyZSBhcmUgdGhlIHNwZWNpYWwgYEFERElUSU9OQUxfUFJPUEVSVFlfRkxBR2AgYW5kXG4gKiBgUkpTRl9BRERJVElPTkFMX1BST1BFUlRJRVNfRkxBR2AgZmxhZ3MgdGhhdCBpcyBhZGRlZCB0byBhIHNjaGVtYSB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMgYnkgdGhlIGByZXRyaWV2ZVNjaGVtYSgpYFxuICogdXRpbGl0eS5cbiAqL1xuZXhwb3J0IGNvbnN0IEFERElUSU9OQUxfUFJPUEVSVFlfRkxBRyA9ICdfX2FkZGl0aW9uYWxfcHJvcGVydHknO1xuZXhwb3J0IGNvbnN0IEFERElUSU9OQUxfUFJPUEVSVElFU19LRVkgPSAnYWRkaXRpb25hbFByb3BlcnRpZXMnO1xuZXhwb3J0IGNvbnN0IEFMTF9PRl9LRVkgPSAnYWxsT2YnO1xuZXhwb3J0IGNvbnN0IEFOWV9PRl9LRVkgPSAnYW55T2YnO1xuZXhwb3J0IGNvbnN0IENPTlNUX0tFWSA9ICdjb25zdCc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9LRVkgPSAnZGVmYXVsdCc7XG5leHBvcnQgY29uc3QgREVGSU5JVElPTlNfS0VZID0gJ2RlZmluaXRpb25zJztcbmV4cG9ydCBjb25zdCBERVBFTkRFTkNJRVNfS0VZID0gJ2RlcGVuZGVuY2llcyc7XG5leHBvcnQgY29uc3QgRU5VTV9LRVkgPSAnZW51bSc7XG5leHBvcnQgY29uc3QgRVJST1JTX0tFWSA9ICdfX2Vycm9ycyc7XG5leHBvcnQgY29uc3QgSURfS0VZID0gJyRpZCc7XG5leHBvcnQgY29uc3QgSUZfS0VZID0gJ2lmJztcbmV4cG9ydCBjb25zdCBJVEVNU19LRVkgPSAnaXRlbXMnO1xuZXhwb3J0IGNvbnN0IEpVTktfT1BUSU9OX0lEID0gJ18kanVua19vcHRpb25fc2NoZW1hX2lkJF8nO1xuZXhwb3J0IGNvbnN0IE5BTUVfS0VZID0gJyRuYW1lJztcbmV4cG9ydCBjb25zdCBPTkVfT0ZfS0VZID0gJ29uZU9mJztcbmV4cG9ydCBjb25zdCBQUk9QRVJUSUVTX0tFWSA9ICdwcm9wZXJ0aWVzJztcbmV4cG9ydCBjb25zdCBSRVFVSVJFRF9LRVkgPSAncmVxdWlyZWQnO1xuZXhwb3J0IGNvbnN0IFNVQk1JVF9CVE5fT1BUSU9OU19LRVkgPSAnc3VibWl0QnV0dG9uT3B0aW9ucyc7XG5leHBvcnQgY29uc3QgUkVGX0tFWSA9ICckcmVmJztcbi8qKlxuICogQGRlcHJlY2F0ZWQgUmVwbGFjZSB3aXRoIGNvcnJlY3RseSBzcGVsbGVkIGNvbnN0YW50IGBSSlNGX0FERElUSU9OQUxfUFJPUEVSVElFU19GTEFHYFxuICovXG5leHBvcnQgY29uc3QgUkpTRl9BRERJVE9OQUxfUFJPUEVSVElFU19GTEFHID0gJ19fcmpzZl9hZGRpdGlvbmFsUHJvcGVydGllcyc7XG5leHBvcnQgY29uc3QgUkpTRl9BRERJVElPTkFMX1BST1BFUlRJRVNfRkxBRyA9ICdfX3Jqc2ZfYWRkaXRpb25hbFByb3BlcnRpZXMnO1xuZXhwb3J0IGNvbnN0IFJPT1RfU0NIRU1BX1BSRUZJWCA9ICdfX3Jqc2Zfcm9vdFNjaGVtYSc7XG5leHBvcnQgY29uc3QgVUlfRklFTERfS0VZID0gJ3VpOmZpZWxkJztcbmV4cG9ydCBjb25zdCBVSV9XSURHRVRfS0VZID0gJ3VpOndpZGdldCc7XG5leHBvcnQgY29uc3QgVUlfT1BUSU9OU19LRVkgPSAndWk6b3B0aW9ucyc7XG5leHBvcnQgY29uc3QgVUlfR0xPQkFMX09QVElPTlNfS0VZID0gJ3VpOmdsb2JhbE9wdGlvbnMnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uc3RhbnRzLmpzLm1hcCIsImltcG9ydCB7IFVJX09QVElPTlNfS0VZLCBVSV9XSURHRVRfS0VZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QnO1xuLyoqIEdldCBhbGwgcGFzc2VkIG9wdGlvbnMgZnJvbSB1aTpvcHRpb25zLCBhbmQgdWk6PG9wdGlvbk5hbWU+LCByZXR1cm5pbmcgdGhlbSBpbiBhbiBvYmplY3Qgd2l0aCB0aGUgYHVpOmBcbiAqIHN0cmlwcGVkIG9mZi4gQW55IGBnbG9iYWxPcHRpb25zYCB3aWxsIGFsd2F5cyBiZSByZXR1cm5lZCwgdW5sZXNzIHRoZXkgYXJlIG92ZXJyaWRkZW4gYnkgb3B0aW9ucyBpbiB0aGUgYHVpU2NoZW1hYC5cbiAqXG4gKiBAcGFyYW0gW3VpU2NoZW1hPXt9XSAtIFRoZSBVSSBTY2hlbWEgZnJvbSB3aGljaCB0byBnZXQgYW55IGB1aTp4eHhgIG9wdGlvbnNcbiAqIEBwYXJhbSBbZ2xvYmFsT3B0aW9ucz17fV0gLSBUaGUgb3B0aW9uYWwgR2xvYmFsIFVJIFNjaGVtYSBmcm9tIHdoaWNoIHRvIGdldCBhbnkgZmFsbGJhY2sgYHh4eGAgb3B0aW9uc1xuICogQHJldHVybnMgLSBBbiBvYmplY3QgY29udGFpbmluZyBhbGwgdGhlIGB1aTp4eHhgIG9wdGlvbnMgd2l0aCB0aGUgYHVpOmAgc3RyaXBwZWQgb2ZmIGFsb25nIHdpdGggYWxsIGBnbG9iYWxPcHRpb25zYFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRVaU9wdGlvbnModWlTY2hlbWEgPSB7fSwgZ2xvYmFsT3B0aW9ucyA9IHt9KSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHVpU2NoZW1hKVxuICAgICAgICAuZmlsdGVyKChrZXkpID0+IGtleS5pbmRleE9mKCd1aTonKSA9PT0gMClcbiAgICAgICAgLnJlZHVjZSgob3B0aW9ucywga2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdWlTY2hlbWFba2V5XTtcbiAgICAgICAgaWYgKGtleSA9PT0gVUlfV0lER0VUX0tFWSAmJiBpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NldHRpbmcgb3B0aW9ucyB2aWEgdWk6d2lkZ2V0IG9iamVjdCBpcyBubyBsb25nZXIgc3VwcG9ydGVkLCB1c2UgdWk6b3B0aW9ucyBpbnN0ZWFkJyk7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5ID09PSBVSV9PUFRJT05TX0tFWSAmJiBpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLm9wdGlvbnMsIC4uLnZhbHVlIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgLi4ub3B0aW9ucywgW2tleS5zdWJzdHJpbmcoMyldOiB2YWx1ZSB9O1xuICAgIH0sIHsgLi4uZ2xvYmFsT3B0aW9ucyB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldFVpT3B0aW9ucy5qcy5tYXAiLCJpbXBvcnQgZ2V0VWlPcHRpb25zIGZyb20gJy4vZ2V0VWlPcHRpb25zJztcbi8qKiBDaGVja3Mgd2hldGhlciB0aGUgZmllbGQgZGVzY3JpYmVkIGJ5IGBzY2hlbWFgLCBoYXZpbmcgdGhlIGB1aVNjaGVtYWAgYW5kIGBmb3JtRGF0YWAgc3VwcG9ydHMgZXhwYW5kaW5nLiBUaGUgVUkgZm9yXG4gKiB0aGUgZmllbGQgY2FuIGV4cGFuZCBpZiBpdCBoYXMgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLCBpcyBub3QgZm9yY2VkIGFzIG5vbi1leHBhbmRhYmxlIGJ5IHRoZSBgdWlTY2hlbWFgIGFuZCB0aGVcbiAqIGBmb3JtRGF0YWAgb2JqZWN0IGRvZXNuJ3QgYWxyZWFkeSBoYXZlIGBzY2hlbWEubWF4UHJvcGVydGllc2AgZWxlbWVudHMuXG4gKlxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHRoZSBmaWVsZCB0aGF0IGlzIGJlaW5nIGNoZWNrZWRcbiAqIEBwYXJhbSBbdWlTY2hlbWE9e31dIC0gVGhlIHVpU2NoZW1hIGZvciB0aGUgZmllbGRcbiAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGZvcm1EYXRhIGZvciB0aGUgZmllbGRcbiAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGUgc2NoZW1hIGVsZW1lbnQgaGFzIGFkZGl0aW9uYWxQcm9wZXJ0aWVzLCBpcyBleHBhbmRhYmxlLCBhbmQgbm90IGF0IHRoZSBtYXhQcm9wZXJ0aWVzIGxpbWl0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNhbkV4cGFuZChzY2hlbWEsIHVpU2NoZW1hID0ge30sIGZvcm1EYXRhKSB7XG4gICAgaWYgKCFzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB7IGV4cGFuZGFibGUgPSB0cnVlIH0gPSBnZXRVaU9wdGlvbnModWlTY2hlbWEpO1xuICAgIGlmIChleHBhbmRhYmxlID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gZXhwYW5kYWJsZTtcbiAgICB9XG4gICAgLy8gaWYgdWk6b3B0aW9ucy5leHBhbmRhYmxlIHdhcyBub3QgZXhwbGljaXRseSBzZXQgdG8gZmFsc2UsIHdlIGNhbiBhZGRcbiAgICAvLyBhbm90aGVyIHByb3BlcnR5IGlmIHdlIGhhdmUgbm90IGV4Y2VlZGVkIG1heFByb3BlcnRpZXMgeWV0XG4gICAgaWYgKHNjaGVtYS5tYXhQcm9wZXJ0aWVzICE9PSB1bmRlZmluZWQgJiYgZm9ybURhdGEpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGZvcm1EYXRhKS5sZW5ndGggPCBzY2hlbWEubWF4UHJvcGVydGllcztcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jYW5FeHBhbmQuanMubWFwIiwiLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxubW9kdWxlLmV4cG9ydHMgPSBmcmVlR2xvYmFsO1xuIiwidmFyIGZyZWVHbG9iYWwgPSByZXF1aXJlKCcuL19mcmVlR2xvYmFsJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG52YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG52YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHwgZnJlZVNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxubW9kdWxlLmV4cG9ydHMgPSByb290O1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFN5bWJvbCA9IHJvb3QuU3ltYm9sO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bWJvbDtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFJhd1RhZztcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG9iamVjdFRvU3RyaW5nO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGdldFJhd1RhZyA9IHJlcXVpcmUoJy4vX2dldFJhd1RhZycpLFxuICAgIG9iamVjdFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fb2JqZWN0VG9TdHJpbmcnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG51bGxUYWcgPSAnW29iamVjdCBOdWxsXScsXG4gICAgdW5kZWZpbmVkVGFnID0gJ1tvYmplY3QgVW5kZWZpbmVkXSc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldFRhZyh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcbiAgfVxuICByZXR1cm4gKHN5bVRvU3RyaW5nVGFnICYmIHN5bVRvU3RyaW5nVGFnIGluIE9iamVjdCh2YWx1ZSkpXG4gICAgPyBnZXRSYXdUYWcodmFsdWUpXG4gICAgOiBvYmplY3RUb1N0cmluZyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldFRhZztcbiIsIi8qKlxuICogQ3JlYXRlcyBhIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnQgdHJhbnNmb3JtZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIGFyZ3VtZW50IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyQXJnKGZ1bmMsIHRyYW5zZm9ybSkge1xuICByZXR1cm4gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG92ZXJBcmc7XG4iLCJ2YXIgb3ZlckFyZyA9IHJlcXVpcmUoJy4vX292ZXJBcmcnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgZ2V0UHJvdG90eXBlID0gb3ZlckFyZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YsIE9iamVjdCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0UHJvdG90eXBlO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNPYmplY3RMaWtlO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xudmFyIG9iamVjdEN0b3JTdHJpbmcgPSBmdW5jVG9TdHJpbmcuY2FsbChPYmplY3QpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcbiAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuOC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiB9XG4gKlxuICogXy5pc1BsYWluT2JqZWN0KG5ldyBGb28pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAgfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlKHZhbHVlKTtcbiAgaWYgKHByb3RvID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIEN0b3IgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCAnY29uc3RydWN0b3InKSAmJiBwcm90by5jb25zdHJ1Y3RvcjtcbiAgcmV0dXJuIHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiZcbiAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzUGxhaW5PYmplY3Q7XG4iLCJpbXBvcnQgaXNQbGFpbk9iamVjdCBmcm9tICdsb2Rhc2gvaXNQbGFpbk9iamVjdCc7XG5pbXBvcnQgeyBFUlJPUlNfS0VZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuLyoqIEdpdmVuIGEgYGZvcm1EYXRhYCBvYmplY3QsIHJlY3Vyc2l2ZWx5IGNyZWF0ZXMgYSBgRm9ybVZhbGlkYXRpb25gIGVycm9yIGhhbmRsaW5nIHN0cnVjdHVyZSBhcm91bmQgaXRcbiAqXG4gKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgZm9ybSBkYXRhIGFyb3VuZCB3aGljaCB0aGUgZXJyb3IgaGFuZGxlciBpcyBjcmVhdGVkXG4gKiBAcmV0dXJucyAtIEEgYEZvcm1WYWxpZGF0aW9uYCBvYmplY3QgYmFzZWQgb24gdGhlIGBmb3JtRGF0YWAgc3RydWN0dXJlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUVycm9ySGFuZGxlcihmb3JtRGF0YSkge1xuICAgIGNvbnN0IGhhbmRsZXIgPSB7XG4gICAgICAgIC8vIFdlIHN0b3JlIHRoZSBsaXN0IG9mIGVycm9ycyBmb3IgdGhpcyBub2RlIGluIGEgcHJvcGVydHkgbmFtZWQgX19lcnJvcnNcbiAgICAgICAgLy8gdG8gYXZvaWQgbmFtZSBjb2xsaXNpb24gd2l0aCBhIHBvc3NpYmxlIHN1YiBzY2hlbWEgZmllbGQgbmFtZWRcbiAgICAgICAgLy8gJ2Vycm9ycycgKHNlZSBgdXRpbHMudG9FcnJvclNjaGVtYWApLlxuICAgICAgICBbRVJST1JTX0tFWV06IFtdLFxuICAgICAgICBhZGRFcnJvcihtZXNzYWdlKSB7XG4gICAgICAgICAgICB0aGlzW0VSUk9SU19LRVldLnB1c2gobWVzc2FnZSk7XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShmb3JtRGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIGZvcm1EYXRhLnJlZHVjZSgoYWNjLCB2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5hY2MsIFtrZXldOiBjcmVhdGVFcnJvckhhbmRsZXIodmFsdWUpIH07XG4gICAgICAgIH0sIGhhbmRsZXIpO1xuICAgIH1cbiAgICBpZiAoaXNQbGFpbk9iamVjdChmb3JtRGF0YSkpIHtcbiAgICAgICAgY29uc3QgZm9ybU9iamVjdCA9IGZvcm1EYXRhO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZm9ybU9iamVjdCkucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCBba2V5XTogY3JlYXRlRXJyb3JIYW5kbGVyKGZvcm1PYmplY3Rba2V5XSkgfTtcbiAgICAgICAgfSwgaGFuZGxlcik7XG4gICAgfVxuICAgIHJldHVybiBoYW5kbGVyO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y3JlYXRlRXJyb3JIYW5kbGVyLmpzLm1hcCIsIi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBbXTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVDbGVhcjtcbiIsIi8qKlxuICogUGVyZm9ybXMgYVxuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAqXG4gKiBfLmVxKG9iamVjdCwgb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKCdhJywgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKCdhJywgT2JqZWN0KCdhJykpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKE5hTiwgTmFOKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gZXEodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gb3RoZXIgfHwgKHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxO1xuIiwidmFyIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKipcbiAqIEdldHMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBga2V5YCBpcyBmb3VuZCBpbiBgYXJyYXlgIG9mIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBhc3NvY0luZGV4T2YoYXJyYXksIGtleSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICBpZiAoZXEoYXJyYXlbbGVuZ3RoXVswXSwga2V5KSkge1xuICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc29jSW5kZXhPZjtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICBpZiAoaW5kZXggPT0gbGFzdEluZGV4KSB7XG4gICAgZGF0YS5wb3AoKTtcbiAgfSBlbHNlIHtcbiAgICBzcGxpY2UuY2FsbChkYXRhLCBpbmRleCwgMSk7XG4gIH1cbiAgLS10aGlzLnNpemU7XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZURlbGV0ZTtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBkYXRhW2luZGV4XVsxXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVHZXQ7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBhc3NvY0luZGV4T2YodGhpcy5fX2RhdGFfXywga2V5KSA+IC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUhhcztcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBTZXRzIHRoZSBsaXN0IGNhY2hlIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBsaXN0IGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIGlmIChpbmRleCA8IDApIHtcbiAgICArK3RoaXMuc2l6ZTtcbiAgICBkYXRhLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSBlbHNlIHtcbiAgICBkYXRhW2luZGV4XVsxXSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZVNldDtcbiIsInZhciBsaXN0Q2FjaGVDbGVhciA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUNsZWFyJyksXG4gICAgbGlzdENhY2hlRGVsZXRlID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlRGVsZXRlJyksXG4gICAgbGlzdENhY2hlR2V0ID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlR2V0JyksXG4gICAgbGlzdENhY2hlSGFzID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlSGFzJyksXG4gICAgbGlzdENhY2hlU2V0ID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBsaXN0IGNhY2hlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gTGlzdENhY2hlKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYExpc3RDYWNoZWAuXG5MaXN0Q2FjaGUucHJvdG90eXBlLmNsZWFyID0gbGlzdENhY2hlQ2xlYXI7XG5MaXN0Q2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IGxpc3RDYWNoZURlbGV0ZTtcbkxpc3RDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbGlzdENhY2hlR2V0O1xuTGlzdENhY2hlLnByb3RvdHlwZS5oYXMgPSBsaXN0Q2FjaGVIYXM7XG5MaXN0Q2FjaGUucHJvdG90eXBlLnNldCA9IGxpc3RDYWNoZVNldDtcblxubW9kdWxlLmV4cG9ydHMgPSBMaXN0Q2FjaGU7XG4iLCJ2YXIgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgc3RhY2suXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqL1xuZnVuY3Rpb24gc3RhY2tDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGU7XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tDbGVhcjtcbiIsIi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrRGVsZXRlKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICByZXN1bHQgPSBkYXRhWydkZWxldGUnXShrZXkpO1xuXG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0RlbGV0ZTtcbiIsIi8qKlxuICogR2V0cyB0aGUgc3RhY2sgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrR2V0KGtleSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0dldDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGEgc3RhY2sgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0hhcyhrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tIYXM7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZVxuICogW2xhbmd1YWdlIHR5cGVdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzKVxuICogb2YgYE9iamVjdGAuIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0KHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChfLm5vb3ApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdDtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXN5bmNUYWcgPSAnW29iamVjdCBBc3luY0Z1bmN0aW9uXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBwcm94eVRhZyA9ICdbb2JqZWN0IFByb3h5XSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBTYWZhcmkgOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheXMgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRnVuY3Rpb247XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG92ZXJyZWFjaGluZyBjb3JlLWpzIHNoaW1zLiAqL1xudmFyIGNvcmVKc0RhdGEgPSByb290WydfX2NvcmUtanNfc2hhcmVkX18nXTtcblxubW9kdWxlLmV4cG9ydHMgPSBjb3JlSnNEYXRhO1xuIiwidmFyIGNvcmVKc0RhdGEgPSByZXF1aXJlKCcuL19jb3JlSnNEYXRhJyk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBtZXRob2RzIG1hc3F1ZXJhZGluZyBhcyBuYXRpdmUuICovXG52YXIgbWFza1NyY0tleSA9IChmdW5jdGlvbigpIHtcbiAgdmFyIHVpZCA9IC9bXi5dKyQvLmV4ZWMoY29yZUpzRGF0YSAmJiBjb3JlSnNEYXRhLmtleXMgJiYgY29yZUpzRGF0YS5rZXlzLklFX1BST1RPIHx8ICcnKTtcbiAgcmV0dXJuIHVpZCA/ICgnU3ltYm9sKHNyYylfMS4nICsgdWlkKSA6ICcnO1xufSgpKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYGZ1bmNgIGhhcyBpdHMgc291cmNlIG1hc2tlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2tlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc01hc2tlZChmdW5jKSB7XG4gIHJldHVybiAhIW1hc2tTcmNLZXkgJiYgKG1hc2tTcmNLZXkgaW4gZnVuYyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNNYXNrZWQ7XG4iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGBmdW5jYCB0byBpdHMgc291cmNlIGNvZGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzb3VyY2UgY29kZS5cbiAqL1xuZnVuY3Rpb24gdG9Tb3VyY2UoZnVuYykge1xuICBpZiAoZnVuYyAhPSBudWxsKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBmdW5jVG9TdHJpbmcuY2FsbChmdW5jKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gKGZ1bmMgKyAnJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9Tb3VyY2U7XG4iLCJ2YXIgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzTWFza2VkID0gcmVxdWlyZSgnLi9faXNNYXNrZWQnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICB0b1NvdXJjZSA9IHJlcXVpcmUoJy4vX3RvU291cmNlJyk7XG5cbi8qKlxuICogVXNlZCB0byBtYXRjaCBgUmVnRXhwYFxuICogW3N5bnRheCBjaGFyYWN0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wYXR0ZXJucykuXG4gKi9cbnZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBob3N0IGNvbnN0cnVjdG9ycyAoU2FmYXJpKS4gKi9cbnZhciByZUlzSG9zdEN0b3IgPSAvXlxcW29iamVjdCAuKz9Db25zdHJ1Y3RvclxcXSQvO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGlmIGEgbWV0aG9kIGlzIG5hdGl2ZS4gKi9cbnZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gIGZ1bmNUb1N0cmluZy5jYWxsKGhhc093blByb3BlcnR5KS5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gIC5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJ1xuKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hdGl2ZWAgd2l0aG91dCBiYWQgc2hpbSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNOYXRpdmUodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgaXNNYXNrZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwYXR0ZXJuID0gaXNGdW5jdGlvbih2YWx1ZSkgPyByZUlzTmF0aXZlIDogcmVJc0hvc3RDdG9yO1xuICByZXR1cm4gcGF0dGVybi50ZXN0KHRvU291cmNlKHZhbHVlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTmF0aXZlO1xuIiwiLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gZ2V0VmFsdWUob2JqZWN0LCBrZXkpIHtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VmFsdWU7XG4iLCJ2YXIgYmFzZUlzTmF0aXZlID0gcmVxdWlyZSgnLi9fYmFzZUlzTmF0aXZlJyksXG4gICAgZ2V0VmFsdWUgPSByZXF1aXJlKCcuL19nZXRWYWx1ZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE5hdGl2ZTtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgTWFwID0gZ2V0TmF0aXZlKHJvb3QsICdNYXAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBNYXA7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBuYXRpdmVDcmVhdGUgPSBnZXROYXRpdmUoT2JqZWN0LCAnY3JlYXRlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlQ3JlYXRlO1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgSGFzaFxuICovXG5mdW5jdGlvbiBoYXNoQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuYXRpdmVDcmVhdGUgPyBuYXRpdmVDcmVhdGUobnVsbCkgOiB7fTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoQ2xlYXI7XG4iLCIvKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBoYXNoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge09iamVjdH0gaGFzaCBUaGUgaGFzaCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzaERlbGV0ZShrZXkpIHtcbiAgdmFyIHJlc3VsdCA9IHRoaXMuaGFzKGtleSkgJiYgZGVsZXRlIHRoaXMuX19kYXRhX19ba2V5XTtcbiAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hEZWxldGU7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBHZXRzIHRoZSBoYXNoIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGhhc2hHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgaWYgKG5hdGl2ZUNyZWF0ZSkge1xuICAgIHZhciByZXN1bHQgPSBkYXRhW2tleV07XG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gSEFTSF9VTkRFRklORUQgPyB1bmRlZmluZWQgOiByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KSA/IGRhdGFba2V5XSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoR2V0O1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIGhhc2ggdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hIYXMoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgcmV0dXJuIG5hdGl2ZUNyZWF0ZSA/IChkYXRhW2tleV0gIT09IHVuZGVmaW5lZCkgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaEhhcztcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKipcbiAqIFNldHMgdGhlIGhhc2ggYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBoYXNoIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBoYXNoU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICB0aGlzLnNpemUgKz0gdGhpcy5oYXMoa2V5KSA/IDAgOiAxO1xuICBkYXRhW2tleV0gPSAobmF0aXZlQ3JlYXRlICYmIHZhbHVlID09PSB1bmRlZmluZWQpID8gSEFTSF9VTkRFRklORUQgOiB2YWx1ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaFNldDtcbiIsInZhciBoYXNoQ2xlYXIgPSByZXF1aXJlKCcuL19oYXNoQ2xlYXInKSxcbiAgICBoYXNoRGVsZXRlID0gcmVxdWlyZSgnLi9faGFzaERlbGV0ZScpLFxuICAgIGhhc2hHZXQgPSByZXF1aXJlKCcuL19oYXNoR2V0JyksXG4gICAgaGFzaEhhcyA9IHJlcXVpcmUoJy4vX2hhc2hIYXMnKSxcbiAgICBoYXNoU2V0ID0gcmVxdWlyZSgnLi9faGFzaFNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBoYXNoIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gSGFzaChlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBIYXNoYC5cbkhhc2gucHJvdG90eXBlLmNsZWFyID0gaGFzaENsZWFyO1xuSGFzaC5wcm90b3R5cGVbJ2RlbGV0ZSddID0gaGFzaERlbGV0ZTtcbkhhc2gucHJvdG90eXBlLmdldCA9IGhhc2hHZXQ7XG5IYXNoLnByb3RvdHlwZS5oYXMgPSBoYXNoSGFzO1xuSGFzaC5wcm90b3R5cGUuc2V0ID0gaGFzaFNldDtcblxubW9kdWxlLmV4cG9ydHMgPSBIYXNoO1xuIiwidmFyIEhhc2ggPSByZXF1aXJlKCcuL19IYXNoJyksXG4gICAgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyksXG4gICAgTWFwID0gcmVxdWlyZSgnLi9fTWFwJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbWFwLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlQ2xlYXIoKSB7XG4gIHRoaXMuc2l6ZSA9IDA7XG4gIHRoaXMuX19kYXRhX18gPSB7XG4gICAgJ2hhc2gnOiBuZXcgSGFzaCxcbiAgICAnbWFwJzogbmV3IChNYXAgfHwgTGlzdENhY2hlKSxcbiAgICAnc3RyaW5nJzogbmV3IEhhc2hcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUNsZWFyO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3IgdXNlIGFzIHVuaXF1ZSBvYmplY3Qga2V5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzS2V5YWJsZSh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuICh0eXBlID09ICdzdHJpbmcnIHx8IHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJylcbiAgICA/ICh2YWx1ZSAhPT0gJ19fcHJvdG9fXycpXG4gICAgOiAodmFsdWUgPT09IG51bGwpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzS2V5YWJsZTtcbiIsInZhciBpc0tleWFibGUgPSByZXF1aXJlKCcuL19pc0tleWFibGUnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBkYXRhIGZvciBgbWFwYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXAgZGF0YS5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICB2YXIgZGF0YSA9IG1hcC5fX2RhdGFfXztcbiAgcmV0dXJuIGlzS2V5YWJsZShrZXkpXG4gICAgPyBkYXRhW3R5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyAnc3RyaW5nJyA6ICdoYXNoJ11cbiAgICA6IGRhdGEubWFwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE1hcERhdGE7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbWFwLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlRGVsZXRlKGtleSkge1xuICB2YXIgcmVzdWx0ID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpWydkZWxldGUnXShrZXkpO1xuICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVEZWxldGU7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBtYXAgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlR2V0KGtleSkge1xuICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmdldChrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlR2V0O1xuIiwidmFyIGdldE1hcERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXBEYXRhJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbWFwIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuaGFzKGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVIYXM7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBTZXRzIHRoZSBtYXAgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbWFwIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLFxuICAgICAgc2l6ZSA9IGRhdGEuc2l6ZTtcblxuICBkYXRhLnNldChrZXksIHZhbHVlKTtcbiAgdGhpcy5zaXplICs9IGRhdGEuc2l6ZSA9PSBzaXplID8gMCA6IDE7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlU2V0O1xuIiwidmFyIG1hcENhY2hlQ2xlYXIgPSByZXF1aXJlKCcuL19tYXBDYWNoZUNsZWFyJyksXG4gICAgbWFwQ2FjaGVEZWxldGUgPSByZXF1aXJlKCcuL19tYXBDYWNoZURlbGV0ZScpLFxuICAgIG1hcENhY2hlR2V0ID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVHZXQnKSxcbiAgICBtYXBDYWNoZUhhcyA9IHJlcXVpcmUoJy4vX21hcENhY2hlSGFzJyksXG4gICAgbWFwQ2FjaGVTZXQgPSByZXF1aXJlKCcuL19tYXBDYWNoZVNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXAgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gTWFwQ2FjaGUoZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgTWFwQ2FjaGVgLlxuTWFwQ2FjaGUucHJvdG90eXBlLmNsZWFyID0gbWFwQ2FjaGVDbGVhcjtcbk1hcENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBtYXBDYWNoZURlbGV0ZTtcbk1hcENhY2hlLnByb3RvdHlwZS5nZXQgPSBtYXBDYWNoZUdldDtcbk1hcENhY2hlLnByb3RvdHlwZS5oYXMgPSBtYXBDYWNoZUhhcztcbk1hcENhY2hlLnByb3RvdHlwZS5zZXQgPSBtYXBDYWNoZVNldDtcblxubW9kdWxlLmV4cG9ydHMgPSBNYXBDYWNoZTtcbiIsInZhciBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKSxcbiAgICBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyk7XG5cbi8qKiBVc2VkIGFzIHRoZSBzaXplIHRvIGVuYWJsZSBsYXJnZSBhcnJheSBvcHRpbWl6YXRpb25zLiAqL1xudmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbi8qKlxuICogU2V0cyB0aGUgc3RhY2sgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgc3RhY2sgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBpZiAoZGF0YSBpbnN0YW5jZW9mIExpc3RDYWNoZSkge1xuICAgIHZhciBwYWlycyA9IGRhdGEuX19kYXRhX187XG4gICAgaWYgKCFNYXAgfHwgKHBhaXJzLmxlbmd0aCA8IExBUkdFX0FSUkFZX1NJWkUgLSAxKSkge1xuICAgICAgcGFpcnMucHVzaChba2V5LCB2YWx1ZV0pO1xuICAgICAgdGhpcy5zaXplID0gKytkYXRhLnNpemU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGUocGFpcnMpO1xuICB9XG4gIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrU2V0O1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIHN0YWNrQ2xlYXIgPSByZXF1aXJlKCcuL19zdGFja0NsZWFyJyksXG4gICAgc3RhY2tEZWxldGUgPSByZXF1aXJlKCcuL19zdGFja0RlbGV0ZScpLFxuICAgIHN0YWNrR2V0ID0gcmVxdWlyZSgnLi9fc3RhY2tHZXQnKSxcbiAgICBzdGFja0hhcyA9IHJlcXVpcmUoJy4vX3N0YWNrSGFzJyksXG4gICAgc3RhY2tTZXQgPSByZXF1aXJlKCcuL19zdGFja1NldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzdGFjayBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTdGFjayhlbnRyaWVzKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGUoZW50cmllcyk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFN0YWNrYC5cblN0YWNrLnByb3RvdHlwZS5jbGVhciA9IHN0YWNrQ2xlYXI7XG5TdGFjay5wcm90b3R5cGVbJ2RlbGV0ZSddID0gc3RhY2tEZWxldGU7XG5TdGFjay5wcm90b3R5cGUuZ2V0ID0gc3RhY2tHZXQ7XG5TdGFjay5wcm90b3R5cGUuaGFzID0gc3RhY2tIYXM7XG5TdGFjay5wcm90b3R5cGUuc2V0ID0gc3RhY2tTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gU3RhY2s7XG4iLCIvKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKlxuICogQWRkcyBgdmFsdWVgIHRvIHRoZSBhcnJheSBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgYWRkXG4gKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAqIEBhbGlhcyBwdXNoXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjYWNoZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBzZXRDYWNoZUFkZCh2YWx1ZSkge1xuICB0aGlzLl9fZGF0YV9fLnNldCh2YWx1ZSwgSEFTSF9VTkRFRklORUQpO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRDYWNoZUFkZDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgaW4gdGhlIGFycmF5IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc2V0Q2FjaGVIYXModmFsdWUpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRDYWNoZUhhcztcbiIsInZhciBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyksXG4gICAgc2V0Q2FjaGVBZGQgPSByZXF1aXJlKCcuL19zZXRDYWNoZUFkZCcpLFxuICAgIHNldENhY2hlSGFzID0gcmVxdWlyZSgnLi9fc2V0Q2FjaGVIYXMnKTtcblxuLyoqXG4gKlxuICogQ3JlYXRlcyBhbiBhcnJheSBjYWNoZSBvYmplY3QgdG8gc3RvcmUgdW5pcXVlIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTZXRDYWNoZSh2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMgPT0gbnVsbCA/IDAgOiB2YWx1ZXMubGVuZ3RoO1xuXG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGU7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdGhpcy5hZGQodmFsdWVzW2luZGV4XSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFNldENhY2hlYC5cblNldENhY2hlLnByb3RvdHlwZS5hZGQgPSBTZXRDYWNoZS5wcm90b3R5cGUucHVzaCA9IHNldENhY2hlQWRkO1xuU2V0Q2FjaGUucHJvdG90eXBlLmhhcyA9IHNldENhY2hlSGFzO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNldENhY2hlO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc29tZWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gKiBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbnkgZWxlbWVudCBwYXNzZXMgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5U29tZShhcnJheSwgcHJlZGljYXRlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheVNvbWU7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBhIGBjYWNoZWAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGNhY2hlIFRoZSBjYWNoZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBjYWNoZUhhcyhjYWNoZSwga2V5KSB7XG4gIHJldHVybiBjYWNoZS5oYXMoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYWNoZUhhcztcbiIsInZhciBTZXRDYWNoZSA9IHJlcXVpcmUoJy4vX1NldENhY2hlJyksXG4gICAgYXJyYXlTb21lID0gcmVxdWlyZSgnLi9fYXJyYXlTb21lJyksXG4gICAgY2FjaGVIYXMgPSByZXF1aXJlKCcuL19jYWNoZUhhcycpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBhcnJheXMgd2l0aCBzdXBwb3J0IGZvclxuICogcGFydGlhbCBkZWVwIGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7QXJyYXl9IG90aGVyIFRoZSBvdGhlciBhcnJheSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgYXJyYXlgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFycmF5cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEFycmF5cyhhcnJheSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRyxcbiAgICAgIGFyckxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIG90aExlbmd0aCA9IG90aGVyLmxlbmd0aDtcblxuICBpZiAoYXJyTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhKGlzUGFydGlhbCAmJiBvdGhMZW5ndGggPiBhcnJMZW5ndGgpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIENoZWNrIHRoYXQgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gIHZhciBhcnJTdGFja2VkID0gc3RhY2suZ2V0KGFycmF5KTtcbiAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICBpZiAoYXJyU3RhY2tlZCAmJiBvdGhTdGFja2VkKSB7XG4gICAgcmV0dXJuIGFyclN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBhcnJheTtcbiAgfVxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IHRydWUsXG4gICAgICBzZWVuID0gKGJpdG1hc2sgJiBDT01QQVJFX1VOT1JERVJFRF9GTEFHKSA/IG5ldyBTZXRDYWNoZSA6IHVuZGVmaW5lZDtcblxuICBzdGFjay5zZXQoYXJyYXksIG90aGVyKTtcbiAgc3RhY2suc2V0KG90aGVyLCBhcnJheSk7XG5cbiAgLy8gSWdub3JlIG5vbi1pbmRleCBwcm9wZXJ0aWVzLlxuICB3aGlsZSAoKytpbmRleCA8IGFyckxlbmd0aCkge1xuICAgIHZhciBhcnJWYWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltpbmRleF07XG5cbiAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgdmFyIGNvbXBhcmVkID0gaXNQYXJ0aWFsXG4gICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgYXJyVmFsdWUsIGluZGV4LCBvdGhlciwgYXJyYXksIHN0YWNrKVxuICAgICAgICA6IGN1c3RvbWl6ZXIoYXJyVmFsdWUsIG90aFZhbHVlLCBpbmRleCwgYXJyYXksIG90aGVyLCBzdGFjayk7XG4gICAgfVxuICAgIGlmIChjb21wYXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoY29tcGFyZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGlmIChzZWVuKSB7XG4gICAgICBpZiAoIWFycmF5U29tZShvdGhlciwgZnVuY3Rpb24ob3RoVmFsdWUsIG90aEluZGV4KSB7XG4gICAgICAgICAgICBpZiAoIWNhY2hlSGFzKHNlZW4sIG90aEluZGV4KSAmJlxuICAgICAgICAgICAgICAgIChhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKSkge1xuICAgICAgICAgICAgICByZXR1cm4gc2Vlbi5wdXNoKG90aEluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSkge1xuICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghKFxuICAgICAgICAgIGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fFxuICAgICAgICAgICAgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spXG4gICAgICAgICkpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHN0YWNrWydkZWxldGUnXShhcnJheSk7XG4gIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxBcnJheXM7XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgVWludDhBcnJheSA9IHJvb3QuVWludDhBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSBVaW50OEFycmF5O1xuIiwiLyoqXG4gKiBDb252ZXJ0cyBgbWFwYCB0byBpdHMga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICovXG5mdW5jdGlvbiBtYXBUb0FycmF5KG1hcCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG1hcC5zaXplKTtcblxuICBtYXAuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gW2tleSwgdmFsdWVdO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBUb0FycmF5O1xuIiwiLyoqXG4gKiBDb252ZXJ0cyBgc2V0YCB0byBhbiBhcnJheSBvZiBpdHMgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc2V0IFRoZSBzZXQgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBzZXRUb0FycmF5KHNldCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KHNldC5zaXplKTtcblxuICBzZXQuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJlc3VsdFsrK2luZGV4XSA9IHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRUb0FycmF5O1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIFVpbnQ4QXJyYXkgPSByZXF1aXJlKCcuL19VaW50OEFycmF5JyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyksXG4gICAgZXF1YWxBcnJheXMgPSByZXF1aXJlKCcuL19lcXVhbEFycmF5cycpLFxuICAgIG1hcFRvQXJyYXkgPSByZXF1aXJlKCcuL19tYXBUb0FycmF5JyksXG4gICAgc2V0VG9BcnJheSA9IHJlcXVpcmUoJy4vX3NldFRvQXJyYXknKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xWYWx1ZU9mID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by52YWx1ZU9mIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgY29tcGFyaW5nIG9iamVjdHMgb2ZcbiAqIHRoZSBzYW1lIGB0b1N0cmluZ1RhZ2AuXG4gKlxuICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjb21wYXJpbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgb3IgYFN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdHMgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIHRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICBzd2l0Y2ggKHRhZykge1xuICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgKG9iamVjdC5ieXRlT2Zmc2V0ICE9IG90aGVyLmJ5dGVPZmZzZXQpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIG9iamVjdCA9IG9iamVjdC5idWZmZXI7XG4gICAgICBvdGhlciA9IG90aGVyLmJ1ZmZlcjtcblxuICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgIWVxdWFsRnVuYyhuZXcgVWludDhBcnJheShvYmplY3QpLCBuZXcgVWludDhBcnJheShvdGhlcikpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgY2FzZSBib29sVGFnOlxuICAgIGNhc2UgZGF0ZVRhZzpcbiAgICBjYXNlIG51bWJlclRhZzpcbiAgICAgIC8vIENvZXJjZSBib29sZWFucyB0byBgMWAgb3IgYDBgIGFuZCBkYXRlcyB0byBtaWxsaXNlY29uZHMuXG4gICAgICAvLyBJbnZhbGlkIGRhdGVzIGFyZSBjb2VyY2VkIHRvIGBOYU5gLlxuICAgICAgcmV0dXJuIGVxKCtvYmplY3QsICtvdGhlcik7XG5cbiAgICBjYXNlIGVycm9yVGFnOlxuICAgICAgcmV0dXJuIG9iamVjdC5uYW1lID09IG90aGVyLm5hbWUgJiYgb2JqZWN0Lm1lc3NhZ2UgPT0gb3RoZXIubWVzc2FnZTtcblxuICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgLy8gQ29lcmNlIHJlZ2V4ZXMgdG8gc3RyaW5ncyBhbmQgdHJlYXQgc3RyaW5ncywgcHJpbWl0aXZlcyBhbmQgb2JqZWN0cyxcbiAgICAgIC8vIGFzIGVxdWFsLiBTZWUgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudG9zdHJpbmdcbiAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICByZXR1cm4gb2JqZWN0ID09IChvdGhlciArICcnKTtcblxuICAgIGNhc2UgbWFwVGFnOlxuICAgICAgdmFyIGNvbnZlcnQgPSBtYXBUb0FycmF5O1xuXG4gICAgY2FzZSBzZXRUYWc6XG4gICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHO1xuICAgICAgY29udmVydCB8fCAoY29udmVydCA9IHNldFRvQXJyYXkpO1xuXG4gICAgICBpZiAob2JqZWN0LnNpemUgIT0gb3RoZXIuc2l6ZSAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gICAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgICAgIH1cbiAgICAgIGJpdG1hc2sgfD0gQ09NUEFSRV9VTk9SREVSRURfRkxBRztcblxuICAgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICBzdGFjay5zZXQob2JqZWN0LCBvdGhlcik7XG4gICAgICB2YXIgcmVzdWx0ID0gZXF1YWxBcnJheXMoY29udmVydChvYmplY3QpLCBjb252ZXJ0KG90aGVyKSwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gICAgICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG5cbiAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgIGlmIChzeW1ib2xWYWx1ZU9mKSB7XG4gICAgICAgIHJldHVybiBzeW1ib2xWYWx1ZU9mLmNhbGwob2JqZWN0KSA9PSBzeW1ib2xWYWx1ZU9mLmNhbGwob3RoZXIpO1xuICAgICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbEJ5VGFnO1xuIiwiLyoqXG4gKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYXBwZW5kLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5UHVzaChhcnJheSwgdmFsdWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgIG9mZnNldCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5UHVzaDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXk7XG4iLCJ2YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRBbGxLZXlzYCBhbmQgYGdldEFsbEtleXNJbmAgd2hpY2ggdXNlc1xuICogYGtleXNGdW5jYCBhbmQgYHN5bWJvbHNGdW5jYCB0byBnZXQgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3ltYm9sc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5c0Z1bmMsIHN5bWJvbHNGdW5jKSB7XG4gIHZhciByZXN1bHQgPSBrZXlzRnVuYyhvYmplY3QpO1xuICByZXR1cm4gaXNBcnJheShvYmplY3QpID8gcmVzdWx0IDogYXJyYXlQdXNoKHJlc3VsdCwgc3ltYm9sc0Z1bmMob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldEFsbEtleXM7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5maWx0ZXJgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlGaWx0ZXIoYXJyYXksIHByZWRpY2F0ZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlGaWx0ZXI7XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIGFycmF5cyA9IF8udGltZXMoMiwgXy5zdHViQXJyYXkpO1xuICpcbiAqIGNvbnNvbGUubG9nKGFycmF5cyk7XG4gKiAvLyA9PiBbW10sIFtdXVxuICpcbiAqIGNvbnNvbGUubG9nKGFycmF5c1swXSA9PT0gYXJyYXlzWzFdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIHN0dWJBcnJheSgpIHtcbiAgcmV0dXJuIFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0dWJBcnJheTtcbiIsInZhciBhcnJheUZpbHRlciA9IHJlcXVpcmUoJy4vX2FycmF5RmlsdGVyJyksXG4gICAgc3R1YkFycmF5ID0gcmVxdWlyZSgnLi9zdHViQXJyYXknKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAqL1xudmFyIGdldFN5bWJvbHMgPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gIHJldHVybiBhcnJheUZpbHRlcihuYXRpdmVHZXRTeW1ib2xzKG9iamVjdCksIGZ1bmN0aW9uKHN5bWJvbCkge1xuICAgIHJldHVybiBwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG9iamVjdCwgc3ltYm9sKTtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN5bWJvbHM7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRpbWVzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHNcbiAqIG9yIG1heCBhcnJheSBsZW5ndGggY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIGludm9rZSBgaXRlcmF0ZWVgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRpbWVzKG4sIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobik7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGluZGV4KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VUaW1lcztcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqL1xuZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFyZ3NUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzQXJndW1lbnRzO1xuIiwidmFyIGJhc2VJc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vX2Jhc2VJc0FyZ3VtZW50cycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJndW1lbnRzO1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDIsIF8uc3R1YkZhbHNlKTtcbiAqIC8vID0+IFtmYWxzZSwgZmFsc2VdXG4gKi9cbmZ1bmN0aW9uIHN0dWJGYWxzZSgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0dWJGYWxzZTtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpLFxuICAgIHN0dWJGYWxzZSA9IHJlcXVpcmUoJy4vc3R1YkZhbHNlJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlSXNCdWZmZXIgPSBCdWZmZXIgPyBCdWZmZXIuaXNCdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0J1ZmZlcjtcbiIsIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG52YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBpbmRleC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGluZGV4LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoO1xuXG4gIHJldHVybiAhIWxlbmd0aCAmJlxuICAgICh0eXBlID09ICdudW1iZXInIHx8XG4gICAgICAodHlwZSAhPSAnc3ltYm9sJyAmJiByZUlzVWludC50ZXN0KHZhbHVlKSkpICYmXG4gICAgICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0luZGV4O1xuIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGxlbmd0aCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTGVuZ3RoKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNMZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKCczJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTGVuZ3RoO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbnR5cGVkQXJyYXlUYWdzW2FyZ3NUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddID1cbnR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID1cbnR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID1cbnR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddID1cbnR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID1cbnR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID1cbnR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddID1cbnR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiZcbiAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3NbYmFzZUdldFRhZyh2YWx1ZSldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc1R5cGVkQXJyYXk7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuYXJ5O1xuIiwidmFyIGZyZWVHbG9iYWwgPSByZXF1aXJlKCcuL19mcmVlR2xvYmFsJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZVByb2Nlc3MgPSBtb2R1bGVFeHBvcnRzICYmIGZyZWVHbG9iYWwucHJvY2VzcztcblxuLyoqIFVzZWQgdG8gYWNjZXNzIGZhc3RlciBOb2RlLmpzIGhlbHBlcnMuICovXG52YXIgbm9kZVV0aWwgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgLy8gVXNlIGB1dGlsLnR5cGVzYCBmb3IgTm9kZS5qcyAxMCsuXG4gICAgdmFyIHR5cGVzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlKCd1dGlsJykudHlwZXM7XG5cbiAgICBpZiAodHlwZXMpIHtcbiAgICAgIHJldHVybiB0eXBlcztcbiAgICB9XG5cbiAgICAvLyBMZWdhY3kgYHByb2Nlc3MuYmluZGluZygndXRpbCcpYCBmb3IgTm9kZS5qcyA8IDEwLlxuICAgIHJldHVybiBmcmVlUHJvY2VzcyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKTtcbiAgfSBjYXRjaCAoZSkge31cbn0oKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gbm9kZVV0aWw7XG4iLCJ2YXIgYmFzZUlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vX2Jhc2VJc1R5cGVkQXJyYXknKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBub2RlVXRpbCA9IHJlcXVpcmUoJy4vX25vZGVVdGlsJyk7XG5cbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzVHlwZWRBcnJheSA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzVHlwZWRBcnJheTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgdHlwZWQgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShuZXcgVWludDhBcnJheSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkoW10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzVHlwZWRBcnJheSA9IG5vZGVJc1R5cGVkQXJyYXkgPyBiYXNlVW5hcnkobm9kZUlzVHlwZWRBcnJheSkgOiBiYXNlSXNUeXBlZEFycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVHlwZWRBcnJheTtcbiIsInZhciBiYXNlVGltZXMgPSByZXF1aXJlKCcuL19iYXNlVGltZXMnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGFycmF5LWxpa2UgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksXG4gICAgICBpc0FyZyA9ICFpc0FyciAmJiBpc0FyZ3VtZW50cyh2YWx1ZSksXG4gICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLFxuICAgICAgc2tpcEluZGV4ZXMgPSBpc0FyciB8fCBpc0FyZyB8fCBpc0J1ZmYgfHwgaXNUeXBlLFxuICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKFxuICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgKGlzQnVmZiAmJiAoa2V5ID09ICdvZmZzZXQnIHx8IGtleSA9PSAncGFyZW50JykpIHx8XG4gICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgIC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbiAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlMaWtlS2V5cztcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgcHJvdG90eXBlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3RvdHlwZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1Byb3RvdHlwZSh2YWx1ZSkge1xuICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yLFxuICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG5cbiAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1Byb3RvdHlwZTtcbiIsInZhciBvdmVyQXJnID0gcmVxdWlyZSgnLi9fb3ZlckFyZycpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlS2V5cyA9IG92ZXJBcmcoT2JqZWN0LmtleXMsIE9iamVjdCk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlS2V5cztcbiIsInZhciBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyksXG4gICAgbmF0aXZlS2V5cyA9IHJlcXVpcmUoJy4vX25hdGl2ZUtleXMnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VLZXlzKG9iamVjdCkge1xuICBpZiAoIWlzUHJvdG90eXBlKG9iamVjdCkpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5cyhvYmplY3QpO1xuICB9XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGtleSAhPSAnY29uc3RydWN0b3InKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VLZXlzO1xuIiwidmFyIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gKiBlcXVhbCB0byBgMGAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZSgnYWJjJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheUxpa2U7XG4iLCJ2YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSxcbiAgICBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAqIFtFUyBzcGVjXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8ua2V5cygnaGknKTtcbiAqIC8vID0+IFsnMCcsICcxJ11cbiAqL1xuZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXM7XG4iLCJ2YXIgYmFzZUdldEFsbEtleXMgPSByZXF1aXJlKCcuL19iYXNlR2V0QWxsS2V5cycpLFxuICAgIGdldFN5bWJvbHMgPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gKi9cbmZ1bmN0aW9uIGdldEFsbEtleXMob2JqZWN0KSB7XG4gIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXMsIGdldFN5bWJvbHMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEFsbEtleXM7XG4iLCJ2YXIgZ2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2dldEFsbEtleXMnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3Igb2JqZWN0cyB3aXRoIHN1cHBvcnQgZm9yXG4gKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgb2JqUHJvcHMgPSBnZXRBbGxLZXlzKG9iamVjdCksXG4gICAgICBvYmpMZW5ndGggPSBvYmpQcm9wcy5sZW5ndGgsXG4gICAgICBvdGhQcm9wcyA9IGdldEFsbEtleXMob3RoZXIpLFxuICAgICAgb3RoTGVuZ3RoID0gb3RoUHJvcHMubGVuZ3RoO1xuXG4gIGlmIChvYmpMZW5ndGggIT0gb3RoTGVuZ3RoICYmICFpc1BhcnRpYWwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGluZGV4ID0gb2JqTGVuZ3RoO1xuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIHZhciBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgaWYgKCEoaXNQYXJ0aWFsID8ga2V5IGluIG90aGVyIDogaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwga2V5KSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgdmFyIG9ialN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICBpZiAob2JqU3RhY2tlZCAmJiBvdGhTdGFja2VkKSB7XG4gICAgcmV0dXJuIG9ialN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBvYmplY3Q7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IHRydWU7XG4gIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgc3RhY2suc2V0KG90aGVyLCBvYmplY3QpO1xuXG4gIHZhciBza2lwQ3RvciA9IGlzUGFydGlhbDtcbiAgd2hpbGUgKCsraW5kZXggPCBvYmpMZW5ndGgpIHtcbiAgICBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgIG90aFZhbHVlID0gb3RoZXJba2V5XTtcblxuICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBvYmpWYWx1ZSwga2V5LCBvdGhlciwgb2JqZWN0LCBzdGFjaylcbiAgICAgICAgOiBjdXN0b21pemVyKG9ialZhbHVlLCBvdGhWYWx1ZSwga2V5LCBvYmplY3QsIG90aGVyLCBzdGFjayk7XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGlmICghKGNvbXBhcmVkID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/IChvYmpWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKG9ialZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKVxuICAgICAgICAgIDogY29tcGFyZWRcbiAgICAgICAgKSkge1xuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgc2tpcEN0b3IgfHwgKHNraXBDdG9yID0ga2V5ID09ICdjb25zdHJ1Y3RvcicpO1xuICB9XG4gIGlmIChyZXN1bHQgJiYgIXNraXBDdG9yKSB7XG4gICAgdmFyIG9iakN0b3IgPSBvYmplY3QuY29uc3RydWN0b3IsXG4gICAgICAgIG90aEN0b3IgPSBvdGhlci5jb25zdHJ1Y3RvcjtcblxuICAgIC8vIE5vbiBgT2JqZWN0YCBvYmplY3QgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGNvbnN0cnVjdG9ycyBhcmUgbm90IGVxdWFsLlxuICAgIGlmIChvYmpDdG9yICE9IG90aEN0b3IgJiZcbiAgICAgICAgKCdjb25zdHJ1Y3RvcicgaW4gb2JqZWN0ICYmICdjb25zdHJ1Y3RvcicgaW4gb3RoZXIpICYmXG4gICAgICAgICEodHlwZW9mIG9iakN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvYmpDdG9yIGluc3RhbmNlb2Ygb2JqQ3RvciAmJlxuICAgICAgICAgIHR5cGVvZiBvdGhDdG9yID09ICdmdW5jdGlvbicgJiYgb3RoQ3RvciBpbnN0YW5jZW9mIG90aEN0b3IpKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxPYmplY3RzO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBEYXRhVmlldyA9IGdldE5hdGl2ZShyb290LCAnRGF0YVZpZXcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBEYXRhVmlldztcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgUHJvbWlzZSA9IGdldE5hdGl2ZShyb290LCAnUHJvbWlzZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFByb21pc2U7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFNldCA9IGdldE5hdGl2ZShyb290LCAnU2V0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gU2V0O1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBXZWFrTWFwID0gZ2V0TmF0aXZlKHJvb3QsICdXZWFrTWFwJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gV2Vha01hcDtcbiIsInZhciBEYXRhVmlldyA9IHJlcXVpcmUoJy4vX0RhdGFWaWV3JyksXG4gICAgTWFwID0gcmVxdWlyZSgnLi9fTWFwJyksXG4gICAgUHJvbWlzZSA9IHJlcXVpcmUoJy4vX1Byb21pc2UnKSxcbiAgICBTZXQgPSByZXF1aXJlKCcuL19TZXQnKSxcbiAgICBXZWFrTWFwID0gcmVxdWlyZSgnLi9fV2Vha01hcCcpLFxuICAgIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgdG9Tb3VyY2UgPSByZXF1aXJlKCcuL190b1NvdXJjZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcHJvbWlzZVRhZyA9ICdbb2JqZWN0IFByb21pc2VdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWFwcywgc2V0cywgYW5kIHdlYWttYXBzLiAqL1xudmFyIGRhdGFWaWV3Q3RvclN0cmluZyA9IHRvU291cmNlKERhdGFWaWV3KSxcbiAgICBtYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoTWFwKSxcbiAgICBwcm9taXNlQ3RvclN0cmluZyA9IHRvU291cmNlKFByb21pc2UpLFxuICAgIHNldEN0b3JTdHJpbmcgPSB0b1NvdXJjZShTZXQpLFxuICAgIHdlYWtNYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoV2Vha01hcCk7XG5cbi8qKlxuICogR2V0cyB0aGUgYHRvU3RyaW5nVGFnYCBvZiBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbnZhciBnZXRUYWcgPSBiYXNlR2V0VGFnO1xuXG4vLyBGYWxsYmFjayBmb3IgZGF0YSB2aWV3cywgbWFwcywgc2V0cywgYW5kIHdlYWsgbWFwcyBpbiBJRSAxMSBhbmQgcHJvbWlzZXMgaW4gTm9kZS5qcyA8IDYuXG5pZiAoKERhdGFWaWV3ICYmIGdldFRhZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpKSkgIT0gZGF0YVZpZXdUYWcpIHx8XG4gICAgKE1hcCAmJiBnZXRUYWcobmV3IE1hcCkgIT0gbWFwVGFnKSB8fFxuICAgIChQcm9taXNlICYmIGdldFRhZyhQcm9taXNlLnJlc29sdmUoKSkgIT0gcHJvbWlzZVRhZykgfHxcbiAgICAoU2V0ICYmIGdldFRhZyhuZXcgU2V0KSAhPSBzZXRUYWcpIHx8XG4gICAgKFdlYWtNYXAgJiYgZ2V0VGFnKG5ldyBXZWFrTWFwKSAhPSB3ZWFrTWFwVGFnKSkge1xuICBnZXRUYWcgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHZhciByZXN1bHQgPSBiYXNlR2V0VGFnKHZhbHVlKSxcbiAgICAgICAgQ3RvciA9IHJlc3VsdCA9PSBvYmplY3RUYWcgPyB2YWx1ZS5jb25zdHJ1Y3RvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgY3RvclN0cmluZyA9IEN0b3IgPyB0b1NvdXJjZShDdG9yKSA6ICcnO1xuXG4gICAgaWYgKGN0b3JTdHJpbmcpIHtcbiAgICAgIHN3aXRjaCAoY3RvclN0cmluZykge1xuICAgICAgICBjYXNlIGRhdGFWaWV3Q3RvclN0cmluZzogcmV0dXJuIGRhdGFWaWV3VGFnO1xuICAgICAgICBjYXNlIG1hcEN0b3JTdHJpbmc6IHJldHVybiBtYXBUYWc7XG4gICAgICAgIGNhc2UgcHJvbWlzZUN0b3JTdHJpbmc6IHJldHVybiBwcm9taXNlVGFnO1xuICAgICAgICBjYXNlIHNldEN0b3JTdHJpbmc6IHJldHVybiBzZXRUYWc7XG4gICAgICAgIGNhc2Ugd2Vha01hcEN0b3JTdHJpbmc6IHJldHVybiB3ZWFrTWFwVGFnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFRhZztcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgZXF1YWxBcnJheXMgPSByZXF1aXJlKCcuL19lcXVhbEFycmF5cycpLFxuICAgIGVxdWFsQnlUYWcgPSByZXF1aXJlKCcuL19lcXVhbEJ5VGFnJyksXG4gICAgZXF1YWxPYmplY3RzID0gcmVxdWlyZSgnLi9fZXF1YWxPYmplY3RzJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbGAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICogZGVlcCBjb21wYXJpc29ucyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICogcmVmZXJlbmNlcyB0byBiZSBjb21wYXJlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzRXF1YWxEZWVwKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIG9iaklzQXJyID0gaXNBcnJheShvYmplY3QpLFxuICAgICAgb3RoSXNBcnIgPSBpc0FycmF5KG90aGVyKSxcbiAgICAgIG9ialRhZyA9IG9iaklzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob2JqZWN0KSxcbiAgICAgIG90aFRhZyA9IG90aElzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob3RoZXIpO1xuXG4gIG9ialRhZyA9IG9ialRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb2JqVGFnO1xuICBvdGhUYWcgPSBvdGhUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG90aFRhZztcblxuICB2YXIgb2JqSXNPYmogPSBvYmpUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgb3RoSXNPYmogPSBvdGhUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgaXNTYW1lVGFnID0gb2JqVGFnID09IG90aFRhZztcblxuICBpZiAoaXNTYW1lVGFnICYmIGlzQnVmZmVyKG9iamVjdCkpIHtcbiAgICBpZiAoIWlzQnVmZmVyKG90aGVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBvYmpJc0FyciA9IHRydWU7XG4gICAgb2JqSXNPYmogPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNTYW1lVGFnICYmICFvYmpJc09iaikge1xuICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgcmV0dXJuIChvYmpJc0FyciB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KSlcbiAgICAgID8gZXF1YWxBcnJheXMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaylcbiAgICAgIDogZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCBvYmpUYWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICB9XG4gIGlmICghKGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRykpIHtcbiAgICB2YXIgb2JqSXNXcmFwcGVkID0gb2JqSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsICdfX3dyYXBwZWRfXycpLFxuICAgICAgICBvdGhJc1dyYXBwZWQgPSBvdGhJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCAnX193cmFwcGVkX18nKTtcblxuICAgIGlmIChvYmpJc1dyYXBwZWQgfHwgb3RoSXNXcmFwcGVkKSB7XG4gICAgICB2YXIgb2JqVW53cmFwcGVkID0gb2JqSXNXcmFwcGVkID8gb2JqZWN0LnZhbHVlKCkgOiBvYmplY3QsXG4gICAgICAgICAgb3RoVW53cmFwcGVkID0gb3RoSXNXcmFwcGVkID8gb3RoZXIudmFsdWUoKSA6IG90aGVyO1xuXG4gICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgcmV0dXJuIGVxdWFsRnVuYyhvYmpVbndyYXBwZWQsIG90aFVud3JhcHBlZCwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spO1xuICAgIH1cbiAgfVxuICBpZiAoIWlzU2FtZVRhZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICByZXR1cm4gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0VxdWFsRGVlcDtcbiIsInZhciBiYXNlSXNFcXVhbERlZXAgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbERlZXAnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRXF1YWxgIHdoaWNoIHN1cHBvcnRzIHBhcnRpYWwgY29tcGFyaXNvbnNcbiAqIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICogIDEgLSBVbm9yZGVyZWQgY29tcGFyaXNvblxuICogIDIgLSBQYXJ0aWFsIGNvbXBhcmlzb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgdmFsdWVgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIGlmICh2YWx1ZSA9PT0gb3RoZXIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodmFsdWUgPT0gbnVsbCB8fCBvdGhlciA9PSBudWxsIHx8ICghaXNPYmplY3RMaWtlKHZhbHVlKSAmJiAhaXNPYmplY3RMaWtlKG90aGVyKSkpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcjtcbiAgfVxuICByZXR1cm4gYmFzZUlzRXF1YWxEZWVwKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgYmFzZUlzRXF1YWwsIHN0YWNrKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNFcXVhbDtcbiIsInZhciBiYXNlSXNFcXVhbCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsJyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0VxdWFsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICogaXMgaW52b2tlZCB0byBjb21wYXJlIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIGNvbXBhcmlzb25zXG4gKiBhcmUgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIHVwIHRvXG4gKiBzaXggYXJndW1lbnRzOiAob2JqVmFsdWUsIG90aFZhbHVlIFssIGluZGV4fGtleSwgb2JqZWN0LCBvdGhlciwgc3RhY2tdKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIGlzR3JlZXRpbmcodmFsdWUpIHtcbiAqICAgcmV0dXJuIC9eaCg/Oml8ZWxsbykkLy50ZXN0KHZhbHVlKTtcbiAqIH1cbiAqXG4gKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBvdGhWYWx1ZSkge1xuICogICBpZiAoaXNHcmVldGluZyhvYmpWYWx1ZSkgJiYgaXNHcmVldGluZyhvdGhWYWx1ZSkpIHtcbiAqICAgICByZXR1cm4gdHJ1ZTtcbiAqICAgfVxuICogfVxuICpcbiAqIHZhciBhcnJheSA9IFsnaGVsbG8nLCAnZ29vZGJ5ZSddO1xuICogdmFyIG90aGVyID0gWydoaScsICdnb29kYnllJ107XG4gKlxuICogXy5pc0VxdWFsV2l0aChhcnJheSwgb3RoZXIsIGN1c3RvbWl6ZXIpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc0VxdWFsV2l0aCh2YWx1ZSwgb3RoZXIsIGN1c3RvbWl6ZXIpIHtcbiAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICB2YXIgcmVzdWx0ID0gY3VzdG9taXplciA/IGN1c3RvbWl6ZXIodmFsdWUsIG90aGVyKSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIHJlc3VsdCA9PT0gdW5kZWZpbmVkID8gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyLCB1bmRlZmluZWQsIGN1c3RvbWl6ZXIpIDogISFyZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNFcXVhbFdpdGg7XG4iLCJpbXBvcnQgaXNFcXVhbFdpdGggZnJvbSAnbG9kYXNoL2lzRXF1YWxXaXRoJztcbi8qKiBJbXBsZW1lbnRzIGEgZGVlcCBlcXVhbHMgdXNpbmcgdGhlIGBsb2Rhc2guaXNFcXVhbFdpdGhgIGZ1bmN0aW9uLCB0aGF0IHByb3ZpZGVzIGEgY3VzdG9taXplZCBjb21wYXJhdG9yIHRoYXRcbiAqIGFzc3VtZXMgYWxsIGZ1bmN0aW9ucyBhcmUgZXF1aXZhbGVudC5cbiAqXG4gKiBAcGFyYW0gYSAtIFRoZSBmaXJzdCBlbGVtZW50IHRvIGNvbXBhcmVcbiAqIEBwYXJhbSBiIC0gVGhlIHNlY29uZCBlbGVtZW50IHRvIGNvbXBhcmVcbiAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGUgYGFgIGFuZCBgYmAgYXJlIGRlZXBseSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlZXBFcXVhbHMoYSwgYikge1xuICAgIHJldHVybiBpc0VxdWFsV2l0aChhLCBiLCAob2JqLCBvdGhlcikgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygb3RoZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIC8vIEFzc3VtZSBhbGwgZnVuY3Rpb25zIGFyZSBlcXVpdmFsZW50XG4gICAgICAgICAgICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3Jqc2YtdGVhbS9yZWFjdC1qc29uc2NoZW1hLWZvcm0vaXNzdWVzLzI1NVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsgLy8gZmFsbGJhY2sgdG8gZGVmYXVsdCBpc0VxdWFscyBiZWhhdmlvclxuICAgIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGVlcEVxdWFscy5qcy5tYXAiLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzeW1ib2wsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN5bWJvbFRhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTeW1ib2w7XG4iLCJ2YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVJc0RlZXBQcm9wID0gL1xcLnxcXFsoPzpbXltcXF1dKnwoW1wiJ10pKD86KD8hXFwxKVteXFxcXF18XFxcXC4pKj9cXDEpXFxdLyxcbiAgICByZUlzUGxhaW5Qcm9wID0gL15cXHcqJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lIGFuZCBub3QgYSBwcm9wZXJ0eSBwYXRoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXkodmFsdWUsIG9iamVjdCkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIGlmICh0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicgfHxcbiAgICAgIHZhbHVlID09IG51bGwgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIHJlSXNQbGFpblByb3AudGVzdCh2YWx1ZSkgfHwgIXJlSXNEZWVwUHJvcC50ZXN0KHZhbHVlKSB8fFxuICAgIChvYmplY3QgIT0gbnVsbCAmJiB2YWx1ZSBpbiBPYmplY3Qob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNLZXk7XG4iLCJ2YXIgTWFwQ2FjaGUgPSByZXF1aXJlKCcuL19NYXBDYWNoZScpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG1lbW9pemVzIHRoZSByZXN1bHQgb2YgYGZ1bmNgLiBJZiBgcmVzb2x2ZXJgIGlzXG4gKiBwcm92aWRlZCwgaXQgZGV0ZXJtaW5lcyB0aGUgY2FjaGUga2V5IGZvciBzdG9yaW5nIHRoZSByZXN1bHQgYmFzZWQgb24gdGhlXG4gKiBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uLiBCeSBkZWZhdWx0LCB0aGUgZmlyc3QgYXJndW1lbnRcbiAqIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSBtYXAgY2FjaGUga2V5LiBUaGUgYGZ1bmNgXG4gKiBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZSBtZW1vaXplZCBmdW5jdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogVGhlIGNhY2hlIGlzIGV4cG9zZWQgYXMgdGhlIGBjYWNoZWAgcHJvcGVydHkgb24gdGhlIG1lbW9pemVkXG4gKiBmdW5jdGlvbi4gSXRzIGNyZWF0aW9uIG1heSBiZSBjdXN0b21pemVkIGJ5IHJlcGxhY2luZyB0aGUgYF8ubWVtb2l6ZS5DYWNoZWBcbiAqIGNvbnN0cnVjdG9yIHdpdGggb25lIHdob3NlIGluc3RhbmNlcyBpbXBsZW1lbnQgdGhlXG4gKiBbYE1hcGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLW1hcC1wcm90b3R5cGUtb2JqZWN0KVxuICogbWV0aG9kIGludGVyZmFjZSBvZiBgY2xlYXJgLCBgZGVsZXRlYCwgYGdldGAsIGBoYXNgLCBhbmQgYHNldGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcmVzb2x2ZXJdIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIHRoZSBjYWNoZSBrZXkuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2MnOiAzLCAnZCc6IDQgfTtcbiAqXG4gKiB2YXIgdmFsdWVzID0gXy5tZW1vaXplKF8udmFsdWVzKTtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogdmFsdWVzKG90aGVyKTtcbiAqIC8vID0+IFszLCA0XVxuICpcbiAqIG9iamVjdC5hID0gMjtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogLy8gTW9kaWZ5IHRoZSByZXN1bHQgY2FjaGUuXG4gKiB2YWx1ZXMuY2FjaGUuc2V0KG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiB2YWx1ZXMob2JqZWN0KTtcbiAqIC8vID0+IFsnYScsICdiJ11cbiAqXG4gKiAvLyBSZXBsYWNlIGBfLm1lbW9pemUuQ2FjaGVgLlxuICogXy5tZW1vaXplLkNhY2hlID0gV2Vha01hcDtcbiAqL1xuZnVuY3Rpb24gbWVtb2l6ZShmdW5jLCByZXNvbHZlcikge1xuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJyB8fCAocmVzb2x2ZXIgIT0gbnVsbCAmJiB0eXBlb2YgcmVzb2x2ZXIgIT0gJ2Z1bmN0aW9uJykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gIH1cbiAgdmFyIG1lbW9pemVkID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGtleSA9IHJlc29sdmVyID8gcmVzb2x2ZXIuYXBwbHkodGhpcywgYXJncykgOiBhcmdzWzBdLFxuICAgICAgICBjYWNoZSA9IG1lbW9pemVkLmNhY2hlO1xuXG4gICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIG1lbW9pemVkLmNhY2hlID0gY2FjaGUuc2V0KGtleSwgcmVzdWx0KSB8fCBjYWNoZTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICBtZW1vaXplZC5jYWNoZSA9IG5ldyAobWVtb2l6ZS5DYWNoZSB8fCBNYXBDYWNoZSk7XG4gIHJldHVybiBtZW1vaXplZDtcbn1cblxuLy8gRXhwb3NlIGBNYXBDYWNoZWAuXG5tZW1vaXplLkNhY2hlID0gTWFwQ2FjaGU7XG5cbm1vZHVsZS5leHBvcnRzID0gbWVtb2l6ZTtcbiIsInZhciBtZW1vaXplID0gcmVxdWlyZSgnLi9tZW1vaXplJyk7XG5cbi8qKiBVc2VkIGFzIHRoZSBtYXhpbXVtIG1lbW9pemUgY2FjaGUgc2l6ZS4gKi9cbnZhciBNQVhfTUVNT0laRV9TSVpFID0gNTAwO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tZW1vaXplYCB3aGljaCBjbGVhcnMgdGhlIG1lbW9pemVkIGZ1bmN0aW9uJ3NcbiAqIGNhY2hlIHdoZW4gaXQgZXhjZWVkcyBgTUFYX01FTU9JWkVfU0laRWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGhhdmUgaXRzIG91dHB1dCBtZW1vaXplZC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtZW1vaXplQ2FwcGVkKGZ1bmMpIHtcbiAgdmFyIHJlc3VsdCA9IG1lbW9pemUoZnVuYywgZnVuY3Rpb24oa2V5KSB7XG4gICAgaWYgKGNhY2hlLnNpemUgPT09IE1BWF9NRU1PSVpFX1NJWkUpIHtcbiAgICAgIGNhY2hlLmNsZWFyKCk7XG4gICAgfVxuICAgIHJldHVybiBrZXk7XG4gIH0pO1xuXG4gIHZhciBjYWNoZSA9IHJlc3VsdC5jYWNoZTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtZW1vaXplQ2FwcGVkO1xuIiwidmFyIG1lbW9pemVDYXBwZWQgPSByZXF1aXJlKCcuL19tZW1vaXplQ2FwcGVkJyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZVByb3BOYW1lID0gL1teLltcXF1dK3xcXFsoPzooLT9cXGQrKD86XFwuXFxkKyk/KXwoW1wiJ10pKCg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCQpKS9nO1xuXG4vKiogVXNlZCB0byBtYXRjaCBiYWNrc2xhc2hlcyBpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZUVzY2FwZUNoYXIgPSAvXFxcXChcXFxcKT8vZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICovXG52YXIgc3RyaW5nVG9QYXRoID0gbWVtb2l6ZUNhcHBlZChmdW5jdGlvbihzdHJpbmcpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAoc3RyaW5nLmNoYXJDb2RlQXQoMCkgPT09IDQ2IC8qIC4gKi8pIHtcbiAgICByZXN1bHQucHVzaCgnJyk7XG4gIH1cbiAgc3RyaW5nLnJlcGxhY2UocmVQcm9wTmFtZSwgZnVuY3Rpb24obWF0Y2gsIG51bWJlciwgcXVvdGUsIHN1YlN0cmluZykge1xuICAgIHJlc3VsdC5wdXNoKHF1b3RlID8gc3ViU3RyaW5nLnJlcGxhY2UocmVFc2NhcGVDaGFyLCAnJDEnKSA6IChudW1iZXIgfHwgbWF0Y2gpKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpbmdUb1BhdGg7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tYXBgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlNYXAoYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5TWFwO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDA7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xUb1N0cmluZyA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udG9TdHJpbmcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udG9TdHJpbmdgIHdoaWNoIGRvZXNuJ3QgY29udmVydCBudWxsaXNoXG4gKiB2YWx1ZXMgdG8gZW1wdHkgc3RyaW5ncy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRvU3RyaW5nKHZhbHVlKSB7XG4gIC8vIEV4aXQgZWFybHkgZm9yIHN0cmluZ3MgdG8gYXZvaWQgYSBwZXJmb3JtYW5jZSBoaXQgaW4gc29tZSBlbnZpcm9ubWVudHMuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgLy8gUmVjdXJzaXZlbHkgY29udmVydCB2YWx1ZXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICByZXR1cm4gYXJyYXlNYXAodmFsdWUsIGJhc2VUb1N0cmluZykgKyAnJztcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHN5bWJvbFRvU3RyaW5nID8gc3ltYm9sVG9TdHJpbmcuY2FsbCh2YWx1ZSkgOiAnJztcbiAgfVxuICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRvU3RyaW5nO1xuIiwidmFyIGJhc2VUb1N0cmluZyA9IHJlcXVpcmUoJy4vX2Jhc2VUb1N0cmluZycpO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBmb3IgYG51bGxgXG4gKiBhbmQgYHVuZGVmaW5lZGAgdmFsdWVzLiBUaGUgc2lnbiBvZiBgLTBgIGlzIHByZXNlcnZlZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9TdHJpbmcobnVsbCk7XG4gKiAvLyA9PiAnJ1xuICpcbiAqIF8udG9TdHJpbmcoLTApO1xuICogLy8gPT4gJy0wJ1xuICpcbiAqIF8udG9TdHJpbmcoWzEsIDIsIDNdKTtcbiAqIC8vID0+ICcxLDIsMydcbiAqL1xuZnVuY3Rpb24gdG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9TdHJpbmc7XG4iLCJ2YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzS2V5ID0gcmVxdWlyZSgnLi9faXNLZXknKSxcbiAgICBzdHJpbmdUb1BhdGggPSByZXF1aXJlKCcuL19zdHJpbmdUb1BhdGgnKSxcbiAgICB0b1N0cmluZyA9IHJlcXVpcmUoJy4vdG9TdHJpbmcnKTtcblxuLyoqXG4gKiBDYXN0cyBgdmFsdWVgIHRvIGEgcGF0aCBhcnJheSBpZiBpdCdzIG5vdCBvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGNhc3RQYXRoKHZhbHVlLCBvYmplY3QpIHtcbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBpc0tleSh2YWx1ZSwgb2JqZWN0KSA/IFt2YWx1ZV0gOiBzdHJpbmdUb1BhdGgodG9TdHJpbmcodmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYXN0UGF0aDtcbiIsInZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIGtleSBpZiBpdCdzIG5vdCBhIHN0cmluZyBvciBzeW1ib2wuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7c3RyaW5nfHN5bWJvbH0gUmV0dXJucyB0aGUga2V5LlxuICovXG5mdW5jdGlvbiB0b0tleSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9LZXk7XG4iLCJ2YXIgY2FzdFBhdGggPSByZXF1aXJlKCcuL19jYXN0UGF0aCcpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5nZXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVmYXVsdCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXQob2JqZWN0LCBwYXRoKSB7XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IDAsXG4gICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aDtcblxuICB3aGlsZSAob2JqZWN0ICE9IG51bGwgJiYgaW5kZXggPCBsZW5ndGgpIHtcbiAgICBvYmplY3QgPSBvYmplY3RbdG9LZXkocGF0aFtpbmRleCsrXSldO1xuICB9XG4gIHJldHVybiAoaW5kZXggJiYgaW5kZXggPT0gbGVuZ3RoKSA/IG9iamVjdCA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0O1xuIiwidmFyIGJhc2VHZXQgPSByZXF1aXJlKCcuL19iYXNlR2V0Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLiBJZiB0aGUgcmVzb2x2ZWQgdmFsdWUgaXNcbiAqIGB1bmRlZmluZWRgLCB0aGUgYGRlZmF1bHRWYWx1ZWAgaXMgcmV0dXJuZWQgaW4gaXRzIHBsYWNlLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy43LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IFtkZWZhdWx0VmFsdWVdIFRoZSB2YWx1ZSByZXR1cm5lZCBmb3IgYHVuZGVmaW5lZGAgcmVzb2x2ZWQgdmFsdWVzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICpcbiAqIF8uZ2V0KG9iamVjdCwgJ2FbMF0uYi5jJyk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5nZXQob2JqZWN0LCBbJ2EnLCAnMCcsICdiJywgJ2MnXSk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5nZXQob2JqZWN0LCAnYS5iLmMnLCAnZGVmYXVsdCcpO1xuICogLy8gPT4gJ2RlZmF1bHQnXG4gKi9cbmZ1bmN0aW9uIGdldChvYmplY3QsIHBhdGgsIGRlZmF1bHRWYWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRWYWx1ZSA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXQ7XG4iLCJ2YXIgYmFzZUtleXMgPSByZXF1aXJlKCcuL19iYXNlS2V5cycpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyksXG4gICAgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGVtcHR5IG9iamVjdCwgY29sbGVjdGlvbiwgbWFwLCBvciBzZXQuXG4gKlxuICogT2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgbm8gb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkXG4gKiBwcm9wZXJ0aWVzLlxuICpcbiAqIEFycmF5LWxpa2UgdmFsdWVzIHN1Y2ggYXMgYGFyZ3VtZW50c2Agb2JqZWN0cywgYXJyYXlzLCBidWZmZXJzLCBzdHJpbmdzLCBvclxuICogalF1ZXJ5LWxpa2UgY29sbGVjdGlvbnMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYGxlbmd0aGAgb2YgYDBgLlxuICogU2ltaWxhcmx5LCBtYXBzIGFuZCBzZXRzIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBhIGBzaXplYCBvZiBgMGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZW1wdHksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0VtcHR5KG51bGwpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNFbXB0eSh0cnVlKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRW1wdHkoMSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0VtcHR5KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNFbXB0eSh7ICdhJzogMSB9KTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoaXNBcnJheUxpa2UodmFsdWUpICYmXG4gICAgICAoaXNBcnJheSh2YWx1ZSkgfHwgdHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgICBpc0J1ZmZlcih2YWx1ZSkgfHwgaXNUeXBlZEFycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkpKSB7XG4gICAgcmV0dXJuICF2YWx1ZS5sZW5ndGg7XG4gIH1cbiAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSk7XG4gIGlmICh0YWcgPT0gbWFwVGFnIHx8IHRhZyA9PSBzZXRUYWcpIHtcbiAgICByZXR1cm4gIXZhbHVlLnNpemU7XG4gIH1cbiAgaWYgKGlzUHJvdG90eXBlKHZhbHVlKSkge1xuICAgIHJldHVybiAhYmFzZUtleXModmFsdWUpLmxlbmd0aDtcbiAgfVxuICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0VtcHR5O1xuIiwidmFyIGhhc0V4Y2FwZSA9IC9+L1xudmFyIGVzY2FwZU1hdGNoZXIgPSAvflswMV0vZ1xuZnVuY3Rpb24gZXNjYXBlUmVwbGFjZXIgKG0pIHtcbiAgc3dpdGNoIChtKSB7XG4gICAgY2FzZSAnfjEnOiByZXR1cm4gJy8nXG4gICAgY2FzZSAnfjAnOiByZXR1cm4gJ34nXG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRpbGRlIGVzY2FwZTogJyArIG0pXG59XG5cbmZ1bmN0aW9uIHVudGlsZGUgKHN0cikge1xuICBpZiAoIWhhc0V4Y2FwZS50ZXN0KHN0cikpIHJldHVybiBzdHJcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKGVzY2FwZU1hdGNoZXIsIGVzY2FwZVJlcGxhY2VyKVxufVxuXG5mdW5jdGlvbiBzZXR0ZXIgKG9iaiwgcG9pbnRlciwgdmFsdWUpIHtcbiAgdmFyIHBhcnRcbiAgdmFyIGhhc05leHRQYXJ0XG5cbiAgZm9yICh2YXIgcCA9IDEsIGxlbiA9IHBvaW50ZXIubGVuZ3RoOyBwIDwgbGVuOykge1xuICAgIGlmIChwb2ludGVyW3BdID09PSAnY29uc3RydWN0b3InIHx8IHBvaW50ZXJbcF0gPT09ICdwcm90b3R5cGUnIHx8IHBvaW50ZXJbcF0gPT09ICdfX3Byb3RvX18nKSByZXR1cm4gb2JqXG5cbiAgICBwYXJ0ID0gdW50aWxkZShwb2ludGVyW3ArK10pXG4gICAgaGFzTmV4dFBhcnQgPSBsZW4gPiBwXG5cbiAgICBpZiAodHlwZW9mIG9ialtwYXJ0XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIHN1cHBvcnQgc2V0dGluZyBvZiAvLVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSAmJiBwYXJ0ID09PSAnLScpIHtcbiAgICAgICAgcGFydCA9IG9iai5sZW5ndGhcbiAgICAgIH1cblxuICAgICAgLy8gc3VwcG9ydCBuZXN0ZWQgb2JqZWN0cy9hcnJheSB3aGVuIHNldHRpbmcgdmFsdWVzXG4gICAgICBpZiAoaGFzTmV4dFBhcnQpIHtcbiAgICAgICAgaWYgKChwb2ludGVyW3BdICE9PSAnJyAmJiBwb2ludGVyW3BdIDwgSW5maW5pdHkpIHx8IHBvaW50ZXJbcF0gPT09ICctJykgb2JqW3BhcnRdID0gW11cbiAgICAgICAgZWxzZSBvYmpbcGFydF0gPSB7fVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghaGFzTmV4dFBhcnQpIGJyZWFrXG4gICAgb2JqID0gb2JqW3BhcnRdXG4gIH1cblxuICB2YXIgb2xkVmFsdWUgPSBvYmpbcGFydF1cbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIGRlbGV0ZSBvYmpbcGFydF1cbiAgZWxzZSBvYmpbcGFydF0gPSB2YWx1ZVxuICByZXR1cm4gb2xkVmFsdWVcbn1cblxuZnVuY3Rpb24gY29tcGlsZVBvaW50ZXIgKHBvaW50ZXIpIHtcbiAgaWYgKHR5cGVvZiBwb2ludGVyID09PSAnc3RyaW5nJykge1xuICAgIHBvaW50ZXIgPSBwb2ludGVyLnNwbGl0KCcvJylcbiAgICBpZiAocG9pbnRlclswXSA9PT0gJycpIHJldHVybiBwb2ludGVyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEpTT04gcG9pbnRlci4nKVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocG9pbnRlcikpIHtcbiAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcG9pbnRlcikge1xuICAgICAgaWYgKHR5cGVvZiBwYXJ0ICE9PSAnc3RyaW5nJyAmJiB0eXBlb2YgcGFydCAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEpTT04gcG9pbnRlci4gTXVzdCBiZSBvZiB0eXBlIHN0cmluZyBvciBudW1iZXIuJylcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHBvaW50ZXJcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OIHBvaW50ZXIuJylcbn1cblxuZnVuY3Rpb24gZ2V0IChvYmosIHBvaW50ZXIpIHtcbiAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaW5wdXQgb2JqZWN0LicpXG4gIHBvaW50ZXIgPSBjb21waWxlUG9pbnRlcihwb2ludGVyKVxuICB2YXIgbGVuID0gcG9pbnRlci5sZW5ndGhcbiAgaWYgKGxlbiA9PT0gMSkgcmV0dXJuIG9ialxuXG4gIGZvciAodmFyIHAgPSAxOyBwIDwgbGVuOykge1xuICAgIG9iaiA9IG9ialt1bnRpbGRlKHBvaW50ZXJbcCsrXSldXG4gICAgaWYgKGxlbiA9PT0gcCkgcmV0dXJuIG9ialxuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiB1bmRlZmluZWRcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXQgKG9iaiwgcG9pbnRlciwgdmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaW5wdXQgb2JqZWN0LicpXG4gIHBvaW50ZXIgPSBjb21waWxlUG9pbnRlcihwb2ludGVyKVxuICBpZiAocG9pbnRlci5sZW5ndGggPT09IDApIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OIHBvaW50ZXIgZm9yIHNldC4nKVxuICByZXR1cm4gc2V0dGVyKG9iaiwgcG9pbnRlciwgdmFsdWUpXG59XG5cbmZ1bmN0aW9uIGNvbXBpbGUgKHBvaW50ZXIpIHtcbiAgdmFyIGNvbXBpbGVkID0gY29tcGlsZVBvaW50ZXIocG9pbnRlcilcbiAgcmV0dXJuIHtcbiAgICBnZXQ6IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgICAgIHJldHVybiBnZXQob2JqZWN0LCBjb21waWxlZClcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gKG9iamVjdCwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBzZXQob2JqZWN0LCBjb21waWxlZCwgdmFsdWUpXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydHMuZ2V0ID0gZ2V0XG5leHBvcnRzLnNldCA9IHNldFxuZXhwb3J0cy5jb21waWxlID0gY29tcGlsZVxuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZm9yRWFjaGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5RWFjaChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkgPT09IGZhbHNlKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5RWFjaDtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKTtcblxudmFyIGRlZmluZVByb3BlcnR5ID0gKGZ1bmN0aW9uKCkge1xuICB0cnkge1xuICAgIHZhciBmdW5jID0gZ2V0TmF0aXZlKE9iamVjdCwgJ2RlZmluZVByb3BlcnR5Jyk7XG4gICAgZnVuYyh7fSwgJycsIHt9KTtcbiAgICByZXR1cm4gZnVuYztcbiAgfSBjYXRjaCAoZSkge31cbn0oKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmaW5lUHJvcGVydHk7XG4iLCJ2YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19kZWZpbmVQcm9wZXJ0eScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBhc3NpZ25WYWx1ZWAgYW5kIGBhc3NpZ25NZXJnZVZhbHVlYCB3aXRob3V0XG4gKiB2YWx1ZSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5ID09ICdfX3Byb3RvX18nICYmIGRlZmluZVByb3BlcnR5KSB7XG4gICAgZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHtcbiAgICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICAgJ2VudW1lcmFibGUnOiB0cnVlLFxuICAgICAgJ3ZhbHVlJzogdmFsdWUsXG4gICAgICAnd3JpdGFibGUnOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ25WYWx1ZTtcbiIsInZhciBiYXNlQXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19iYXNlQXNzaWduVmFsdWUnKSxcbiAgICBlcSA9IHJlcXVpcmUoJy4vZXEnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBBc3NpZ25zIGB2YWx1ZWAgdG8gYGtleWAgb2YgYG9iamVjdGAgaWYgdGhlIGV4aXN0aW5nIHZhbHVlIGlzIG5vdCBlcXVpdmFsZW50XG4gKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XTtcbiAgaWYgKCEoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYgZXEob2JqVmFsdWUsIHZhbHVlKSkgfHxcbiAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpKSB7XG4gICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc3NpZ25WYWx1ZTtcbiIsInZhciBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyk7XG5cbi8qKlxuICogQ29waWVzIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycyB0byBjb3B5LlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29waWVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlPYmplY3Qoc291cmNlLCBwcm9wcywgb2JqZWN0LCBjdXN0b21pemVyKSB7XG4gIHZhciBpc05ldyA9ICFvYmplY3Q7XG4gIG9iamVjdCB8fCAob2JqZWN0ID0ge30pO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHByb3BzW2luZGV4XTtcblxuICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgID8gY3VzdG9taXplcihvYmplY3Rba2V5XSwgc291cmNlW2tleV0sIGtleSwgb2JqZWN0LCBzb3VyY2UpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBuZXdWYWx1ZSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgICBpZiAoaXNOZXcpIHtcbiAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlPYmplY3Q7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXNzaWduYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduKG9iamVjdCwgc291cmNlKSB7XG4gIHJldHVybiBvYmplY3QgJiYgY29weU9iamVjdChzb3VyY2UsIGtleXMoc291cmNlKSwgb2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQXNzaWduO1xuIiwiLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VcbiAqIFtgT2JqZWN0LmtleXNgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGV4Y2VwdCB0aGF0IGl0IGluY2x1ZGVzIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIG5hdGl2ZUtleXNJbihvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAob2JqZWN0ICE9IG51bGwpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlS2V5c0luO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBuYXRpdmVLZXlzSW4gPSByZXF1aXJlKCcuL19uYXRpdmVLZXlzSW4nKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzSW5gIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXNJbihvYmplY3QpO1xuICB9XG4gIHZhciBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAoIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlS2V5c0luO1xuIiwidmFyIGFycmF5TGlrZUtleXMgPSByZXF1aXJlKCcuL19hcnJheUxpa2VLZXlzJyksXG4gICAgYmFzZUtleXNJbiA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzSW4nKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5c0luKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InLCAnYyddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKi9cbmZ1bmN0aW9uIGtleXNJbihvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCwgdHJ1ZSkgOiBiYXNlS2V5c0luKG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ga2V5c0luO1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25JbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnbkluKG9iamVjdCwgc291cmNlKSB7XG4gIHJldHVybiBvYmplY3QgJiYgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ25JbjtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyByb290LkJ1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICBhbGxvY1Vuc2FmZSA9IEJ1ZmZlciA/IEJ1ZmZlci5hbGxvY1Vuc2FmZSA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgIGBidWZmZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZmVyIFRoZSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge0J1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gY2xvbmVCdWZmZXIoYnVmZmVyLCBpc0RlZXApIHtcbiAgaWYgKGlzRGVlcCkge1xuICAgIHJldHVybiBidWZmZXIuc2xpY2UoKTtcbiAgfVxuICB2YXIgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IGFsbG9jVW5zYWZlID8gYWxsb2NVbnNhZmUobGVuZ3RoKSA6IG5ldyBidWZmZXIuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICBidWZmZXIuY29weShyZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lQnVmZmVyO1xuIiwiLyoqXG4gKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXk9W11dIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyB0by5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBjb3B5QXJyYXkoc291cmNlLCBhcnJheSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgYXJyYXkgfHwgKGFycmF5ID0gQXJyYXkobGVuZ3RoKSk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weUFycmF5O1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKTtcblxuLyoqXG4gKiBDb3BpZXMgb3duIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlTeW1ib2xzKHNvdXJjZSwgb2JqZWN0KSB7XG4gIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9scyhzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlTeW1ib2xzO1xuIiwidmFyIGFycmF5UHVzaCA9IHJlcXVpcmUoJy4vX2FycmF5UHVzaCcpLFxuICAgIGdldFByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2dldFByb3RvdHlwZScpLFxuICAgIGdldFN5bWJvbHMgPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzJyksXG4gICAgc3R1YkFycmF5ID0gcmVxdWlyZSgnLi9zdHViQXJyYXknKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICovXG52YXIgZ2V0U3ltYm9sc0luID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB3aGlsZSAob2JqZWN0KSB7XG4gICAgYXJyYXlQdXNoKHJlc3VsdCwgZ2V0U3ltYm9scyhvYmplY3QpKTtcbiAgICBvYmplY3QgPSBnZXRQcm90b3R5cGUob2JqZWN0KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRTeW1ib2xzSW47XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBnZXRTeW1ib2xzSW4gPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzSW4nKTtcblxuLyoqXG4gKiBDb3BpZXMgb3duIGFuZCBpbmhlcml0ZWQgc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weVN5bWJvbHNJbihzb3VyY2UsIG9iamVjdCkge1xuICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHNJbihzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlTeW1ib2xzSW47XG4iLCJ2YXIgYmFzZUdldEFsbEtleXMgPSByZXF1aXJlKCcuL19iYXNlR2V0QWxsS2V5cycpLFxuICAgIGdldFN5bWJvbHNJbiA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHNJbicpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICogc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gZ2V0QWxsS2V5c0luKG9iamVjdCkge1xuICByZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzSW4sIGdldFN5bWJvbHNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QWxsS2V5c0luO1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBhcnJheSBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNsb25lLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lQXJyYXkoYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IG5ldyBhcnJheS5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gIC8vIEFkZCBwcm9wZXJ0aWVzIGFzc2lnbmVkIGJ5IGBSZWdFeHAjZXhlY2AuXG4gIGlmIChsZW5ndGggJiYgdHlwZW9mIGFycmF5WzBdID09ICdzdHJpbmcnICYmIGhhc093blByb3BlcnR5LmNhbGwoYXJyYXksICdpbmRleCcpKSB7XG4gICAgcmVzdWx0LmluZGV4ID0gYXJyYXkuaW5kZXg7XG4gICAgcmVzdWx0LmlucHV0ID0gYXJyYXkuaW5wdXQ7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbml0Q2xvbmVBcnJheTtcbiIsInZhciBVaW50OEFycmF5ID0gcmVxdWlyZSgnLi9fVWludDhBcnJheScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgYXJyYXlCdWZmZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBhcnJheUJ1ZmZlciBUaGUgYXJyYXkgYnVmZmVyIHRvIGNsb25lLlxuICogQHJldHVybnMge0FycmF5QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYXJyYXkgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbG9uZUFycmF5QnVmZmVyKGFycmF5QnVmZmVyKSB7XG4gIHZhciByZXN1bHQgPSBuZXcgYXJyYXlCdWZmZXIuY29uc3RydWN0b3IoYXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCk7XG4gIG5ldyBVaW50OEFycmF5KHJlc3VsdCkuc2V0KG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVBcnJheUJ1ZmZlcjtcbiIsInZhciBjbG9uZUFycmF5QnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVBcnJheUJ1ZmZlcicpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgZGF0YVZpZXdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gZGF0YVZpZXcgVGhlIGRhdGEgdmlldyB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgZGF0YSB2aWV3LlxuICovXG5mdW5jdGlvbiBjbG9uZURhdGFWaWV3KGRhdGFWaWV3LCBpc0RlZXApIHtcbiAgdmFyIGJ1ZmZlciA9IGlzRGVlcCA/IGNsb25lQXJyYXlCdWZmZXIoZGF0YVZpZXcuYnVmZmVyKSA6IGRhdGFWaWV3LmJ1ZmZlcjtcbiAgcmV0dXJuIG5ldyBkYXRhVmlldy5jb25zdHJ1Y3RvcihidWZmZXIsIGRhdGFWaWV3LmJ5dGVPZmZzZXQsIGRhdGFWaWV3LmJ5dGVMZW5ndGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lRGF0YVZpZXc7XG4iLCIvKiogVXNlZCB0byBtYXRjaCBgUmVnRXhwYCBmbGFncyBmcm9tIHRoZWlyIGNvZXJjZWQgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUZsYWdzID0gL1xcdyokLztcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHJlZ2V4cGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSByZWdleHAgVGhlIHJlZ2V4cCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCByZWdleHAuXG4gKi9cbmZ1bmN0aW9uIGNsb25lUmVnRXhwKHJlZ2V4cCkge1xuICB2YXIgcmVzdWx0ID0gbmV3IHJlZ2V4cC5jb25zdHJ1Y3RvcihyZWdleHAuc291cmNlLCByZUZsYWdzLmV4ZWMocmVnZXhwKSk7XG4gIHJlc3VsdC5sYXN0SW5kZXggPSByZWdleHAubGFzdEluZGV4O1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lUmVnRXhwO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpO1xuXG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgc3ltYm9sVmFsdWVPZiA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udmFsdWVPZiA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGBzeW1ib2xgIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHN5bWJvbCBUaGUgc3ltYm9sIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBzeW1ib2wgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBjbG9uZVN5bWJvbChzeW1ib2wpIHtcbiAgcmV0dXJuIHN5bWJvbFZhbHVlT2YgPyBPYmplY3Qoc3ltYm9sVmFsdWVPZi5jYWxsKHN5bWJvbCkpIDoge307XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVTeW1ib2w7XG4iLCJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHR5cGVkQXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gdHlwZWRBcnJheSBUaGUgdHlwZWQgYXJyYXkgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHR5cGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBjbG9uZVR5cGVkQXJyYXkodHlwZWRBcnJheSwgaXNEZWVwKSB7XG4gIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKHR5cGVkQXJyYXkuYnVmZmVyKSA6IHR5cGVkQXJyYXkuYnVmZmVyO1xuICByZXR1cm4gbmV3IHR5cGVkQXJyYXkuY29uc3RydWN0b3IoYnVmZmVyLCB0eXBlZEFycmF5LmJ5dGVPZmZzZXQsIHR5cGVkQXJyYXkubGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVR5cGVkQXJyYXk7XG4iLCJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKSxcbiAgICBjbG9uZURhdGFWaWV3ID0gcmVxdWlyZSgnLi9fY2xvbmVEYXRhVmlldycpLFxuICAgIGNsb25lUmVnRXhwID0gcmVxdWlyZSgnLi9fY2xvbmVSZWdFeHAnKSxcbiAgICBjbG9uZVN5bWJvbCA9IHJlcXVpcmUoJy4vX2Nsb25lU3ltYm9sJyksXG4gICAgY2xvbmVUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fY2xvbmVUeXBlZEFycmF5Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZSBiYXNlZCBvbiBpdHMgYHRvU3RyaW5nVGFnYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNsb25pbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBNYXBgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIGBTZXRgLCBvciBgU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVCeVRhZyhvYmplY3QsIHRhZywgaXNEZWVwKSB7XG4gIHZhciBDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yO1xuICBzd2l0Y2ggKHRhZykge1xuICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICByZXR1cm4gY2xvbmVBcnJheUJ1ZmZlcihvYmplY3QpO1xuXG4gICAgY2FzZSBib29sVGFnOlxuICAgIGNhc2UgZGF0ZVRhZzpcbiAgICAgIHJldHVybiBuZXcgQ3Rvcigrb2JqZWN0KTtcblxuICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICByZXR1cm4gY2xvbmVEYXRhVmlldyhvYmplY3QsIGlzRGVlcCk7XG5cbiAgICBjYXNlIGZsb2F0MzJUYWc6IGNhc2UgZmxvYXQ2NFRhZzpcbiAgICBjYXNlIGludDhUYWc6IGNhc2UgaW50MTZUYWc6IGNhc2UgaW50MzJUYWc6XG4gICAgY2FzZSB1aW50OFRhZzogY2FzZSB1aW50OENsYW1wZWRUYWc6IGNhc2UgdWludDE2VGFnOiBjYXNlIHVpbnQzMlRhZzpcbiAgICAgIHJldHVybiBjbG9uZVR5cGVkQXJyYXkob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgY2FzZSBtYXBUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3I7XG5cbiAgICBjYXNlIG51bWJlclRhZzpcbiAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgIHJldHVybiBuZXcgQ3RvcihvYmplY3QpO1xuXG4gICAgY2FzZSByZWdleHBUYWc6XG4gICAgICByZXR1cm4gY2xvbmVSZWdFeHAob2JqZWN0KTtcblxuICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICByZXR1cm4gY2xvbmVTeW1ib2wob2JqZWN0KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRDbG9uZUJ5VGFnO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RDcmVhdGUgPSBPYmplY3QuY3JlYXRlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNyZWF0ZWAgd2l0aG91dCBzdXBwb3J0IGZvciBhc3NpZ25pbmdcbiAqIHByb3BlcnRpZXMgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvdG8gVGhlIG9iamVjdCB0byBpbmhlcml0IGZyb20uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG52YXIgYmFzZUNyZWF0ZSA9IChmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gb2JqZWN0KCkge31cbiAgcmV0dXJuIGZ1bmN0aW9uKHByb3RvKSB7XG4gICAgaWYgKCFpc09iamVjdChwcm90bykpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgaWYgKG9iamVjdENyZWF0ZSkge1xuICAgICAgcmV0dXJuIG9iamVjdENyZWF0ZShwcm90byk7XG4gICAgfVxuICAgIG9iamVjdC5wcm90b3R5cGUgPSBwcm90bztcbiAgICB2YXIgcmVzdWx0ID0gbmV3IG9iamVjdDtcbiAgICBvYmplY3QucHJvdG90eXBlID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59KCkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VDcmVhdGU7XG4iLCJ2YXIgYmFzZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX2Jhc2VDcmVhdGUnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSxcbiAgICBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyk7XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lT2JqZWN0KG9iamVjdCkge1xuICByZXR1cm4gKHR5cGVvZiBvYmplY3QuY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNQcm90b3R5cGUob2JqZWN0KSlcbiAgICA/IGJhc2VDcmVhdGUoZ2V0UHJvdG90eXBlKG9iamVjdCkpXG4gICAgOiB7fTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbml0Q2xvbmVPYmplY3Q7XG4iLCJ2YXIgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWFwYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNNYXAodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBtYXBUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTWFwO1xuIiwidmFyIGJhc2VJc01hcCA9IHJlcXVpcmUoJy4vX2Jhc2VJc01hcCcpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNNYXAgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc01hcDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYE1hcGAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNNYXAobmV3IE1hcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc01hcChuZXcgV2Vha01hcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNNYXAgPSBub2RlSXNNYXAgPyBiYXNlVW5hcnkobm9kZUlzTWFwKSA6IGJhc2VJc01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc01hcDtcbiIsInZhciBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc2V0VGFnID0gJ1tvYmplY3QgU2V0XSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNTZXRgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2V0LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc1NldCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IHNldFRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNTZXQ7XG4iLCJ2YXIgYmFzZUlzU2V0ID0gcmVxdWlyZSgnLi9fYmFzZUlzU2V0JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1NldCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzU2V0O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU2V0YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1NldChuZXcgU2V0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU2V0KG5ldyBXZWFrU2V0KTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1NldCA9IG5vZGVJc1NldCA/IGJhc2VVbmFyeShub2RlSXNTZXQpIDogYmFzZUlzU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU2V0O1xuIiwidmFyIFN0YWNrID0gcmVxdWlyZSgnLi9fU3RhY2snKSxcbiAgICBhcnJheUVhY2ggPSByZXF1aXJlKCcuL19hcnJheUVhY2gnKSxcbiAgICBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgYmFzZUFzc2lnbiA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ24nKSxcbiAgICBiYXNlQXNzaWduSW4gPSByZXF1aXJlKCcuL19iYXNlQXNzaWduSW4nKSxcbiAgICBjbG9uZUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQnVmZmVyJyksXG4gICAgY29weUFycmF5ID0gcmVxdWlyZSgnLi9fY29weUFycmF5JyksXG4gICAgY29weVN5bWJvbHMgPSByZXF1aXJlKCcuL19jb3B5U3ltYm9scycpLFxuICAgIGNvcHlTeW1ib2xzSW4gPSByZXF1aXJlKCcuL19jb3B5U3ltYm9sc0luJyksXG4gICAgZ2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2dldEFsbEtleXMnKSxcbiAgICBnZXRBbGxLZXlzSW4gPSByZXF1aXJlKCcuL19nZXRBbGxLZXlzSW4nKSxcbiAgICBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpbml0Q2xvbmVBcnJheSA9IHJlcXVpcmUoJy4vX2luaXRDbG9uZUFycmF5JyksXG4gICAgaW5pdENsb25lQnlUYWcgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVCeVRhZycpLFxuICAgIGluaXRDbG9uZU9iamVjdCA9IHJlcXVpcmUoJy4vX2luaXRDbG9uZU9iamVjdCcpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc01hcCA9IHJlcXVpcmUoJy4vaXNNYXAnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBpc1NldCA9IHJlcXVpcmUoJy4vaXNTZXQnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9ERUVQX0ZMQUcgPSAxLFxuICAgIENMT05FX0ZMQVRfRkxBRyA9IDIsXG4gICAgQ0xPTkVfU1lNQk9MU19GTEFHID0gNDtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBzdXBwb3J0ZWQgYnkgYF8uY2xvbmVgLiAqL1xudmFyIGNsb25lYWJsZVRhZ3MgPSB7fTtcbmNsb25lYWJsZVRhZ3NbYXJnc1RhZ10gPSBjbG9uZWFibGVUYWdzW2FycmF5VGFnXSA9XG5jbG9uZWFibGVUYWdzW2FycmF5QnVmZmVyVGFnXSA9IGNsb25lYWJsZVRhZ3NbZGF0YVZpZXdUYWddID1cbmNsb25lYWJsZVRhZ3NbYm9vbFRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGVUYWddID1cbmNsb25lYWJsZVRhZ3NbZmxvYXQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW2Zsb2F0NjRUYWddID1cbmNsb25lYWJsZVRhZ3NbaW50OFRhZ10gPSBjbG9uZWFibGVUYWdzW2ludDE2VGFnXSA9XG5jbG9uZWFibGVUYWdzW2ludDMyVGFnXSA9IGNsb25lYWJsZVRhZ3NbbWFwVGFnXSA9XG5jbG9uZWFibGVUYWdzW251bWJlclRhZ10gPSBjbG9uZWFibGVUYWdzW29iamVjdFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tyZWdleHBUYWddID0gY2xvbmVhYmxlVGFnc1tzZXRUYWddID1cbmNsb25lYWJsZVRhZ3Nbc3RyaW5nVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc3ltYm9sVGFnXSA9XG5jbG9uZWFibGVUYWdzW3VpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9XG5jbG9uZWFibGVUYWdzW3VpbnQxNlRhZ10gPSBjbG9uZWFibGVUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xuY2xvbmVhYmxlVGFnc1tlcnJvclRhZ10gPSBjbG9uZWFibGVUYWdzW2Z1bmNUYWddID1cbmNsb25lYWJsZVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jbG9uZWAgYW5kIGBfLmNsb25lRGVlcGAgd2hpY2ggdHJhY2tzXG4gKiB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gKiAgMSAtIERlZXAgY2xvbmVcbiAqICAyIC0gRmxhdHRlbiBpbmhlcml0ZWQgcHJvcGVydGllc1xuICogIDQgLSBDbG9uZSBzeW1ib2xzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICogQHBhcmFtIHtzdHJpbmd9IFtrZXldIFRoZSBrZXkgb2YgYHZhbHVlYC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgcGFyZW50IG9iamVjdCBvZiBgdmFsdWVgLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGFuZCB0aGVpciBjbG9uZSBjb3VudGVycGFydHMuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNlQ2xvbmUodmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgb2JqZWN0LCBzdGFjaykge1xuICB2YXIgcmVzdWx0LFxuICAgICAgaXNEZWVwID0gYml0bWFzayAmIENMT05FX0RFRVBfRkxBRyxcbiAgICAgIGlzRmxhdCA9IGJpdG1hc2sgJiBDTE9ORV9GTEFUX0ZMQUcsXG4gICAgICBpc0Z1bGwgPSBiaXRtYXNrICYgQ0xPTkVfU1lNQk9MU19GTEFHO1xuXG4gIGlmIChjdXN0b21pemVyKSB7XG4gICAgcmVzdWx0ID0gb2JqZWN0ID8gY3VzdG9taXplcih2YWx1ZSwga2V5LCBvYmplY3QsIHN0YWNrKSA6IGN1c3RvbWl6ZXIodmFsdWUpO1xuICB9XG4gIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSk7XG4gIGlmIChpc0Fycikge1xuICAgIHJlc3VsdCA9IGluaXRDbG9uZUFycmF5KHZhbHVlKTtcbiAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgcmV0dXJuIGNvcHlBcnJheSh2YWx1ZSwgcmVzdWx0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSksXG4gICAgICAgIGlzRnVuYyA9IHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWc7XG5cbiAgICBpZiAoaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICByZXR1cm4gY2xvbmVCdWZmZXIodmFsdWUsIGlzRGVlcCk7XG4gICAgfVxuICAgIGlmICh0YWcgPT0gb2JqZWN0VGFnIHx8IHRhZyA9PSBhcmdzVGFnIHx8IChpc0Z1bmMgJiYgIW9iamVjdCkpIHtcbiAgICAgIHJlc3VsdCA9IChpc0ZsYXQgfHwgaXNGdW5jKSA/IHt9IDogaW5pdENsb25lT2JqZWN0KHZhbHVlKTtcbiAgICAgIGlmICghaXNEZWVwKSB7XG4gICAgICAgIHJldHVybiBpc0ZsYXRcbiAgICAgICAgICA/IGNvcHlTeW1ib2xzSW4odmFsdWUsIGJhc2VBc3NpZ25JbihyZXN1bHQsIHZhbHVlKSlcbiAgICAgICAgICA6IGNvcHlTeW1ib2xzKHZhbHVlLCBiYXNlQXNzaWduKHJlc3VsdCwgdmFsdWUpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFjbG9uZWFibGVUYWdzW3RhZ10pIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdCA/IHZhbHVlIDoge307XG4gICAgICB9XG4gICAgICByZXN1bHQgPSBpbml0Q2xvbmVCeVRhZyh2YWx1ZSwgdGFnLCBpc0RlZXApO1xuICAgIH1cbiAgfVxuICAvLyBDaGVjayBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlcyBhbmQgcmV0dXJuIGl0cyBjb3JyZXNwb25kaW5nIGNsb25lLlxuICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldCh2YWx1ZSk7XG4gIGlmIChzdGFja2VkKSB7XG4gICAgcmV0dXJuIHN0YWNrZWQ7XG4gIH1cbiAgc3RhY2suc2V0KHZhbHVlLCByZXN1bHQpO1xuXG4gIGlmIChpc1NldCh2YWx1ZSkpIHtcbiAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1YlZhbHVlKSB7XG4gICAgICByZXN1bHQuYWRkKGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3ViVmFsdWUsIHZhbHVlLCBzdGFjaykpO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKGlzTWFwKHZhbHVlKSkge1xuICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oc3ViVmFsdWUsIGtleSkge1xuICAgICAgcmVzdWx0LnNldChrZXksIGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCB2YWx1ZSwgc3RhY2spKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBrZXlzRnVuYyA9IGlzRnVsbFxuICAgID8gKGlzRmxhdCA/IGdldEFsbEtleXNJbiA6IGdldEFsbEtleXMpXG4gICAgOiAoaXNGbGF0ID8ga2V5c0luIDoga2V5cyk7XG5cbiAgdmFyIHByb3BzID0gaXNBcnIgPyB1bmRlZmluZWQgOiBrZXlzRnVuYyh2YWx1ZSk7XG4gIGFycmF5RWFjaChwcm9wcyB8fCB2YWx1ZSwgZnVuY3Rpb24oc3ViVmFsdWUsIGtleSkge1xuICAgIGlmIChwcm9wcykge1xuICAgICAga2V5ID0gc3ViVmFsdWU7XG4gICAgICBzdWJWYWx1ZSA9IHZhbHVlW2tleV07XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IHBvcHVsYXRlIGNsb25lIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgYXNzaWduVmFsdWUocmVzdWx0LCBrZXksIGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCB2YWx1ZSwgc3RhY2spKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUNsb25lO1xuIiwiLyoqXG4gKiBHZXRzIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5sYXN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiAzXG4gKi9cbmZ1bmN0aW9uIGxhc3QoYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICByZXR1cm4gbGVuZ3RoID8gYXJyYXlbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGFzdDtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2xpY2VgIHdpdGhvdXQgYW4gaXRlcmF0ZWUgY2FsbCBndWFyZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNsaWNlLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgPSAtc3RhcnQgPiBsZW5ndGggPyAwIDogKGxlbmd0aCArIHN0YXJ0KTtcbiAgfVxuICBlbmQgPSBlbmQgPiBsZW5ndGggPyBsZW5ndGggOiBlbmQ7XG4gIGlmIChlbmQgPCAwKSB7XG4gICAgZW5kICs9IGxlbmd0aDtcbiAgfVxuICBsZW5ndGggPSBzdGFydCA+IGVuZCA/IDAgOiAoKGVuZCAtIHN0YXJ0KSA+Pj4gMCk7XG4gIHN0YXJ0ID4+Pj0gMDtcblxuICB2YXIgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRbaW5kZXhdID0gYXJyYXlbaW5kZXggKyBzdGFydF07XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlU2xpY2U7XG4iLCJ2YXIgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKSxcbiAgICBiYXNlU2xpY2UgPSByZXF1aXJlKCcuL19iYXNlU2xpY2UnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBwYXJlbnQgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fSBwYXRoIFRoZSBwYXRoIHRvIGdldCB0aGUgcGFyZW50IHZhbHVlIG9mLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHBhcmVudCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gcGFyZW50KG9iamVjdCwgcGF0aCkge1xuICByZXR1cm4gcGF0aC5sZW5ndGggPCAyID8gb2JqZWN0IDogYmFzZUdldChvYmplY3QsIGJhc2VTbGljZShwYXRoLCAwLCAtMSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsInZhciBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgbGFzdCA9IHJlcXVpcmUoJy4vbGFzdCcpLFxuICAgIHBhcmVudCA9IHJlcXVpcmUoJy4vX3BhcmVudCcpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bnNldGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcHJvcGVydHkgcGF0aCB0byB1bnNldC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvcGVydHkgaXMgZGVsZXRlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlVW5zZXQob2JqZWN0LCBwYXRoKSB7XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuICBvYmplY3QgPSBwYXJlbnQob2JqZWN0LCBwYXRoKTtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsIHx8IGRlbGV0ZSBvYmplY3RbdG9LZXkobGFzdChwYXRoKSldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VVbnNldDtcbiIsInZhciBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi9pc1BsYWluT2JqZWN0Jyk7XG5cbi8qKlxuICogVXNlZCBieSBgXy5vbWl0YCB0byBjdXN0b21pemUgaXRzIGBfLmNsb25lRGVlcGAgdXNlIHRvIG9ubHkgY2xvbmUgcGxhaW5cbiAqIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdW5jbG9uZWQgdmFsdWUgb3IgYHVuZGVmaW5lZGAgdG8gZGVmZXIgY2xvbmluZyB0byBgXy5jbG9uZURlZXBgLlxuICovXG5mdW5jdGlvbiBjdXN0b21PbWl0Q2xvbmUodmFsdWUpIHtcbiAgcmV0dXJuIGlzUGxhaW5PYmplY3QodmFsdWUpID8gdW5kZWZpbmVkIDogdmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3VzdG9tT21pdENsb25lO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ByZWFkYWJsZVN5bWJvbCA9IFN5bWJvbCA/IFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBmbGF0dGVuYWJsZSBgYXJndW1lbnRzYCBvYmplY3Qgb3IgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZmxhdHRlbmFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNGbGF0dGVuYWJsZSh2YWx1ZSkge1xuICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHModmFsdWUpIHx8XG4gICAgISEoc3ByZWFkYWJsZVN5bWJvbCAmJiB2YWx1ZSAmJiB2YWx1ZVtzcHJlYWRhYmxlU3ltYm9sXSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGbGF0dGVuYWJsZTtcbiIsInZhciBhcnJheVB1c2ggPSByZXF1aXJlKCcuL19hcnJheVB1c2gnKSxcbiAgICBpc0ZsYXR0ZW5hYmxlID0gcmVxdWlyZSgnLi9faXNGbGF0dGVuYWJsZScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZsYXR0ZW5gIHdpdGggc3VwcG9ydCBmb3IgcmVzdHJpY3RpbmcgZmxhdHRlbmluZy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gKiBAcGFyYW0ge251bWJlcn0gZGVwdGggVGhlIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoLlxuICogQHBhcmFtIHtib29sZWFufSBbcHJlZGljYXRlPWlzRmxhdHRlbmFibGVdIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1N0cmljdF0gUmVzdHJpY3QgdG8gdmFsdWVzIHRoYXQgcGFzcyBgcHJlZGljYXRlYCBjaGVja3MuXG4gKiBAcGFyYW0ge0FycmF5fSBbcmVzdWx0PVtdXSBUaGUgaW5pdGlhbCByZXN1bHQgdmFsdWUuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VGbGF0dGVuKGFycmF5LCBkZXB0aCwgcHJlZGljYXRlLCBpc1N0cmljdCwgcmVzdWx0KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIHByZWRpY2F0ZSB8fCAocHJlZGljYXRlID0gaXNGbGF0dGVuYWJsZSk7XG4gIHJlc3VsdCB8fCAocmVzdWx0ID0gW10pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgIGlmIChkZXB0aCA+IDAgJiYgcHJlZGljYXRlKHZhbHVlKSkge1xuICAgICAgaWYgKGRlcHRoID4gMSkge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBmbGF0dGVuIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBiYXNlRmxhdHRlbih2YWx1ZSwgZGVwdGggLSAxLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXJyYXlQdXNoKHJlc3VsdCwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWlzU3RyaWN0KSB7XG4gICAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRmxhdHRlbjtcbiIsInZhciBiYXNlRmxhdHRlbiA9IHJlcXVpcmUoJy4vX2Jhc2VGbGF0dGVuJyk7XG5cbi8qKlxuICogRmxhdHRlbnMgYGFycmF5YCBhIHNpbmdsZSBsZXZlbCBkZWVwLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZmxhdHRlbihbMSwgWzIsIFszLCBbNF1dLCA1XV0pO1xuICogLy8gPT4gWzEsIDIsIFszLCBbNF1dLCA1XVxuICovXG5mdW5jdGlvbiBmbGF0dGVuKGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgcmV0dXJuIGxlbmd0aCA/IGJhc2VGbGF0dGVuKGFycmF5LCAxKSA6IFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZsYXR0ZW47XG4iLCIvKipcbiAqIEEgZmFzdGVyIGFsdGVybmF0aXZlIHRvIGBGdW5jdGlvbiNhcHBseWAsIHRoaXMgZnVuY3Rpb24gaW52b2tlcyBgZnVuY2BcbiAqIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGB0aGlzQXJnYCBhbmQgdGhlIGFyZ3VtZW50cyBvZiBgYXJnc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYGZ1bmNgLlxuICovXG5mdW5jdGlvbiBhcHBseShmdW5jLCB0aGlzQXJnLCBhcmdzKSB7XG4gIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZyk7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0pO1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gIH1cbiAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXBwbHk7XG4iLCJ2YXIgYXBwbHkgPSByZXF1aXJlKCcuL19hcHBseScpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXg7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUmVzdGAgd2hpY2ggdHJhbnNmb3JtcyB0aGUgcmVzdCBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgcmVzdCBhcnJheSB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gb3ZlclJlc3QoZnVuYywgc3RhcnQsIHRyYW5zZm9ybSkge1xuICBzdGFydCA9IG5hdGl2ZU1heChzdGFydCA9PT0gdW5kZWZpbmVkID8gKGZ1bmMubGVuZ3RoIC0gMSkgOiBzdGFydCwgMCk7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWF4KGFyZ3MubGVuZ3RoIC0gc3RhcnQsIDApLFxuICAgICAgICBhcnJheSA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgYXJyYXlbaW5kZXhdID0gYXJnc1tzdGFydCArIGluZGV4XTtcbiAgICB9XG4gICAgaW5kZXggPSAtMTtcbiAgICB2YXIgb3RoZXJBcmdzID0gQXJyYXkoc3RhcnQgKyAxKTtcbiAgICB3aGlsZSAoKytpbmRleCA8IHN0YXJ0KSB7XG4gICAgICBvdGhlckFyZ3NbaW5kZXhdID0gYXJnc1tpbmRleF07XG4gICAgfVxuICAgIG90aGVyQXJnc1tzdGFydF0gPSB0cmFuc2Zvcm0oYXJyYXkpO1xuICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBvdGhlckFyZ3MpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG92ZXJSZXN0O1xuIiwiLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB2YWx1ZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJldHVybiBmcm9tIHRoZSBuZXcgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb25zdGFudCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBfLnRpbWVzKDIsIF8uY29uc3RhbnQoeyAnYSc6IDEgfSkpO1xuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHMpO1xuICogLy8gPT4gW3sgJ2EnOiAxIH0sIHsgJ2EnOiAxIH1dXG4gKlxuICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGNvbnN0YW50KHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29uc3RhbnQ7XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IGl0IHJlY2VpdmVzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIEFueSB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIGB2YWx1ZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICpcbiAqIGNvbnNvbGUubG9nKF8uaWRlbnRpdHkob2JqZWN0KSA9PT0gb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaWRlbnRpdHkodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlkZW50aXR5O1xuIiwidmFyIGNvbnN0YW50ID0gcmVxdWlyZSgnLi9jb25zdGFudCcpLFxuICAgIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fZGVmaW5lUHJvcGVydHknKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0VG9TdHJpbmdgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgYmFzZVNldFRvU3RyaW5nID0gIWRlZmluZVByb3BlcnR5ID8gaWRlbnRpdHkgOiBmdW5jdGlvbihmdW5jLCBzdHJpbmcpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmMsICd0b1N0cmluZycsIHtcbiAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAnZW51bWVyYWJsZSc6IGZhbHNlLFxuICAgICd2YWx1ZSc6IGNvbnN0YW50KHN0cmluZyksXG4gICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVNldFRvU3RyaW5nO1xuIiwiLyoqIFVzZWQgdG8gZGV0ZWN0IGhvdCBmdW5jdGlvbnMgYnkgbnVtYmVyIG9mIGNhbGxzIHdpdGhpbiBhIHNwYW4gb2YgbWlsbGlzZWNvbmRzLiAqL1xudmFyIEhPVF9DT1VOVCA9IDgwMCxcbiAgICBIT1RfU1BBTiA9IDE2O1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTm93ID0gRGF0ZS5ub3c7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQnbGwgc2hvcnQgb3V0IGFuZCBpbnZva2UgYGlkZW50aXR5YCBpbnN0ZWFkXG4gKiBvZiBgZnVuY2Agd2hlbiBpdCdzIGNhbGxlZCBgSE9UX0NPVU5UYCBvciBtb3JlIHRpbWVzIGluIGBIT1RfU1BBTmBcbiAqIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzaG9ydGFibGUgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIHNob3J0T3V0KGZ1bmMpIHtcbiAgdmFyIGNvdW50ID0gMCxcbiAgICAgIGxhc3RDYWxsZWQgPSAwO1xuXG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc3RhbXAgPSBuYXRpdmVOb3coKSxcbiAgICAgICAgcmVtYWluaW5nID0gSE9UX1NQQU4gLSAoc3RhbXAgLSBsYXN0Q2FsbGVkKTtcblxuICAgIGxhc3RDYWxsZWQgPSBzdGFtcDtcbiAgICBpZiAocmVtYWluaW5nID4gMCkge1xuICAgICAgaWYgKCsrY291bnQgPj0gSE9UX0NPVU5UKSB7XG4gICAgICAgIHJldHVybiBhcmd1bWVudHNbMF07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvdW50ID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmMuYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3J0T3V0O1xuIiwidmFyIGJhc2VTZXRUb1N0cmluZyA9IHJlcXVpcmUoJy4vX2Jhc2VTZXRUb1N0cmluZycpLFxuICAgIHNob3J0T3V0ID0gcmVxdWlyZSgnLi9fc2hvcnRPdXQnKTtcblxuLyoqXG4gKiBTZXRzIHRoZSBgdG9TdHJpbmdgIG1ldGhvZCBvZiBgZnVuY2AgdG8gcmV0dXJuIGBzdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAqL1xudmFyIHNldFRvU3RyaW5nID0gc2hvcnRPdXQoYmFzZVNldFRvU3RyaW5nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBzZXRUb1N0cmluZztcbiIsInZhciBmbGF0dGVuID0gcmVxdWlyZSgnLi9mbGF0dGVuJyksXG4gICAgb3ZlclJlc3QgPSByZXF1aXJlKCcuL19vdmVyUmVzdCcpLFxuICAgIHNldFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fc2V0VG9TdHJpbmcnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCBmbGF0dGVucyB0aGUgcmVzdCBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBmbGF0UmVzdChmdW5jKSB7XG4gIHJldHVybiBzZXRUb1N0cmluZyhvdmVyUmVzdChmdW5jLCB1bmRlZmluZWQsIGZsYXR0ZW4pLCBmdW5jICsgJycpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZsYXRSZXN0O1xuIiwidmFyIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBiYXNlQ2xvbmUgPSByZXF1aXJlKCcuL19iYXNlQ2xvbmUnKSxcbiAgICBiYXNlVW5zZXQgPSByZXF1aXJlKCcuL19iYXNlVW5zZXQnKSxcbiAgICBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBjdXN0b21PbWl0Q2xvbmUgPSByZXF1aXJlKCcuL19jdXN0b21PbWl0Q2xvbmUnKSxcbiAgICBmbGF0UmVzdCA9IHJlcXVpcmUoJy4vX2ZsYXRSZXN0JyksXG4gICAgZ2V0QWxsS2V5c0luID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5c0luJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICBDTE9ORV9GTEFUX0ZMQUcgPSAyLFxuICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKlxuICogVGhlIG9wcG9zaXRlIG9mIGBfLnBpY2tgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGVcbiAqIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgcGF0aHMgb2YgYG9iamVjdGAgdGhhdCBhcmUgbm90IG9taXR0ZWQuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGNvbnNpZGVyYWJseSBzbG93ZXIgdGhhbiBgXy5waWNrYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gb21pdC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICpcbiAqIF8ub21pdChvYmplY3QsIFsnYScsICdjJ10pO1xuICogLy8gPT4geyAnYic6ICcyJyB9XG4gKi9cbnZhciBvbWl0ID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBwYXRocykge1xuICB2YXIgcmVzdWx0ID0ge307XG4gIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgdmFyIGlzRGVlcCA9IGZhbHNlO1xuICBwYXRocyA9IGFycmF5TWFwKHBhdGhzLCBmdW5jdGlvbihwYXRoKSB7XG4gICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gICAgaXNEZWVwIHx8IChpc0RlZXAgPSBwYXRoLmxlbmd0aCA+IDEpO1xuICAgIHJldHVybiBwYXRoO1xuICB9KTtcbiAgY29weU9iamVjdChvYmplY3QsIGdldEFsbEtleXNJbihvYmplY3QpLCByZXN1bHQpO1xuICBpZiAoaXNEZWVwKSB7XG4gICAgcmVzdWx0ID0gYmFzZUNsb25lKHJlc3VsdCwgQ0xPTkVfREVFUF9GTEFHIHwgQ0xPTkVfRkxBVF9GTEFHIHwgQ0xPTkVfU1lNQk9MU19GTEFHLCBjdXN0b21PbWl0Q2xvbmUpO1xuICB9XG4gIHZhciBsZW5ndGggPSBwYXRocy5sZW5ndGg7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGJhc2VVbnNldChyZXN1bHQsIHBhdGhzW2xlbmd0aF0pO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBvbWl0O1xuIiwiaW1wb3J0IGpzb25wb2ludGVyIGZyb20gJ2pzb25wb2ludGVyJztcbmltcG9ydCBvbWl0IGZyb20gJ2xvZGFzaC9vbWl0JztcbmltcG9ydCB7IFJFRl9LRVkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKiogU3BsaXRzIG91dCB0aGUgdmFsdWUgYXQgdGhlIGBrZXlgIGluIGBvYmplY3RgIGZyb20gdGhlIGBvYmplY3RgLCByZXR1cm5pbmcgYW4gYXJyYXkgdGhhdCBjb250YWlucyBpbiB0aGUgZmlyc3RcbiAqIGxvY2F0aW9uLCB0aGUgYG9iamVjdGAgbWludXMgdGhlIGBrZXk6IHZhbHVlYCBhbmQgaW4gdGhlIHNlY29uZCBsb2NhdGlvbiB0aGUgYHZhbHVlYC5cbiAqXG4gKiBAcGFyYW0ga2V5IC0gVGhlIGtleSBmcm9tIHRoZSBvYmplY3QgdG8gZXh0cmFjdFxuICogQHBhcmFtIG9iamVjdCAtIFRoZSBvYmplY3QgZnJvbSB3aGljaCB0byBleHRyYWN0IHRoZSBlbGVtZW50XG4gKiBAcmV0dXJucyAtIEFuIGFycmF5IHdpdGggdGhlIGZpcnN0IHZhbHVlIGJlaW5nIHRoZSBvYmplY3QgbWludXMgdGhlIGBrZXlgIGVsZW1lbnQgYW5kIHRoZSBzZWNvbmQgZWxlbWVudCBiZWluZyB0aGVcbiAqICAgICAgdmFsdWUgZnJvbSBgb2JqZWN0W2tleV1gXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdEtleUVsZW1lbnRGcm9tT2JqZWN0KGtleSwgb2JqZWN0KSB7XG4gICAgY29uc3QgdmFsdWUgPSBvYmplY3Rba2V5XTtcbiAgICBjb25zdCByZW1haW5pbmcgPSBvbWl0KG9iamVjdCwgW2tleV0pO1xuICAgIHJldHVybiBbcmVtYWluaW5nLCB2YWx1ZV07XG59XG4vKiogR2l2ZW4gdGhlIG5hbWUgb2YgYSBgJHJlZmAgZnJvbSB3aXRoaW4gYSBzY2hlbWEsIHVzaW5nIHRoZSBgcm9vdFNjaGVtYWAsIHJlY3Vyc2l2ZWx5IGxvb2sgdXAgYW5kIHJldHVybiB0aGVcbiAqIHN1Yi1zY2hlbWEgdXNpbmcgdGhlIHBhdGggcHJvdmlkZWQgYnkgdGhhdCByZWZlcmVuY2UuIElmIGAjYCBpcyBub3QgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgcmVmZXJlbmNlLCB0aGUgcGF0aFxuICogZG9lcyBub3QgZXhpc3QgaW4gdGhlIHNjaGVtYSwgb3IgdGhlIHJlZmVyZW5jZSByZXNvbHZlcyBjaXJjdWxhcmx5IGJhY2sgdG8gaXRzZWxmLCB0aGVuIHRocm93IGFuIEVycm9yLlxuICogT3RoZXJ3aXNlIHJldHVybiB0aGUgc3ViLXNjaGVtYS4gQWxzbyBkZWFscyB3aXRoIG5lc3RlZCBgJHJlZmBzIGluIHRoZSBzdWItc2NoZW1hLlxuICpcbiAqIEBwYXJhbSAkcmVmIC0gVGhlIHJlZiBzdHJpbmcgZm9yIHdoaWNoIHRoZSBzY2hlbWEgZGVmaW5pdGlvbiBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gW3Jvb3RTY2hlbWE9e31dIC0gVGhlIHJvb3Qgc2NoZW1hIGluIHdoaWNoIHRvIHNlYXJjaCBmb3IgdGhlIGRlZmluaXRpb25cbiAqIEBwYXJhbSByZWN1cnNlTGlzdCAtIExpc3Qgb2YgJHJlZnMgYWxyZWFkeSByZXNvbHZlZCB0byBwcmV2ZW50IHJlY3Vyc2lvblxuICogQHJldHVybnMgLSBUaGUgc3ViLXNjaGVtYSB3aXRoaW4gdGhlIGByb290U2NoZW1hYCB3aGljaCBtYXRjaGVzIHRoZSBgJHJlZmAgaWYgaXQgZXhpc3RzXG4gKiBAdGhyb3dzIC0gRXJyb3IgaW5kaWNhdGluZyB0aGF0IG5vIHNjaGVtYSBmb3IgdGhhdCByZWZlcmVuY2UgY291bGQgYmUgcmVzb2x2ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRTY2hlbWFEZWZpbml0aW9uUmVjdXJzaXZlKCRyZWYsIHJvb3RTY2hlbWEgPSB7fSwgcmVjdXJzZUxpc3QgPSBbXSkge1xuICAgIGNvbnN0IHJlZiA9ICRyZWYgfHwgJyc7XG4gICAgbGV0IGRlY29kZWRSZWY7XG4gICAgaWYgKHJlZi5zdGFydHNXaXRoKCcjJykpIHtcbiAgICAgICAgLy8gRGVjb2RlIFVSSSBmcmFnbWVudCByZXByZXNlbnRhdGlvbi5cbiAgICAgICAgZGVjb2RlZFJlZiA9IGRlY29kZVVSSUNvbXBvbmVudChyZWYuc3Vic3RyaW5nKDEpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgYSBkZWZpbml0aW9uIGZvciAkeyRyZWZ9LmApO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50ID0ganNvbnBvaW50ZXIuZ2V0KHJvb3RTY2hlbWEsIGRlY29kZWRSZWYpO1xuICAgIGlmIChjdXJyZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBhIGRlZmluaXRpb24gZm9yICR7JHJlZn0uYCk7XG4gICAgfVxuICAgIGNvbnN0IG5leHRSZWYgPSBjdXJyZW50W1JFRl9LRVldO1xuICAgIGlmIChuZXh0UmVmKSB7XG4gICAgICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2VzLlxuICAgICAgICBpZiAocmVjdXJzZUxpc3QuaW5jbHVkZXMobmV4dFJlZikpIHtcbiAgICAgICAgICAgIGlmIChyZWN1cnNlTGlzdC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERlZmluaXRpb24gZm9yICR7JHJlZn0gaXMgYSBjaXJjdWxhciByZWZlcmVuY2VgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IFtmaXJzdFJlZiwgLi4ucmVzdFJlZnNdID0gcmVjdXJzZUxpc3Q7XG4gICAgICAgICAgICBjb25zdCBjaXJjdWxhclBhdGggPSBbLi4ucmVzdFJlZnMsIHJlZiwgZmlyc3RSZWZdLmpvaW4oJyAtPiAnKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRGVmaW5pdGlvbiBmb3IgJHtmaXJzdFJlZn0gY29udGFpbnMgYSBjaXJjdWxhciByZWZlcmVuY2UgdGhyb3VnaCAke2NpcmN1bGFyUGF0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBbcmVtYWluaW5nLCB0aGVSZWZdID0gc3BsaXRLZXlFbGVtZW50RnJvbU9iamVjdChSRUZfS0VZLCBjdXJyZW50KTtcbiAgICAgICAgY29uc3Qgc3ViU2NoZW1hID0gZmluZFNjaGVtYURlZmluaXRpb25SZWN1cnNpdmUodGhlUmVmLCByb290U2NoZW1hLCBbLi4ucmVjdXJzZUxpc3QsIHJlZl0pO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMocmVtYWluaW5nKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5yZW1haW5pbmcsIC4uLnN1YlNjaGVtYSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWJTY2hlbWE7XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50O1xufVxuLyoqIEdpdmVuIHRoZSBuYW1lIG9mIGEgYCRyZWZgIGZyb20gd2l0aGluIGEgc2NoZW1hLCB1c2luZyB0aGUgYHJvb3RTY2hlbWFgLCBsb29rIHVwIGFuZCByZXR1cm4gdGhlIHN1Yi1zY2hlbWEgdXNpbmcgdGhlXG4gKiBwYXRoIHByb3ZpZGVkIGJ5IHRoYXQgcmVmZXJlbmNlLiBJZiBgI2AgaXMgbm90IHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHJlZmVyZW5jZSwgdGhlIHBhdGggZG9lcyBub3QgZXhpc3QgaW5cbiAqIHRoZSBzY2hlbWEsIG9yIHRoZSByZWZlcmVuY2UgcmVzb2x2ZXMgY2lyY3VsYXJseSBiYWNrIHRvIGl0c2VsZiwgdGhlbiB0aHJvdyBhbiBFcnJvci4gT3RoZXJ3aXNlIHJldHVybiB0aGVcbiAqIHN1Yi1zY2hlbWEuIEFsc28gZGVhbHMgd2l0aCBuZXN0ZWQgYCRyZWZgcyBpbiB0aGUgc3ViLXNjaGVtYS5cbiAqXG4gKiBAcGFyYW0gJHJlZiAtIFRoZSByZWYgc3RyaW5nIGZvciB3aGljaCB0aGUgc2NoZW1hIGRlZmluaXRpb24gaXMgZGVzaXJlZFxuICogQHBhcmFtIFtyb290U2NoZW1hPXt9XSAtIFRoZSByb290IHNjaGVtYSBpbiB3aGljaCB0byBzZWFyY2ggZm9yIHRoZSBkZWZpbml0aW9uXG4gKiBAcmV0dXJucyAtIFRoZSBzdWItc2NoZW1hIHdpdGhpbiB0aGUgYHJvb3RTY2hlbWFgIHdoaWNoIG1hdGNoZXMgdGhlIGAkcmVmYCBpZiBpdCBleGlzdHNcbiAqIEB0aHJvd3MgLSBFcnJvciBpbmRpY2F0aW5nIHRoYXQgbm8gc2NoZW1hIGZvciB0aGF0IHJlZmVyZW5jZSBjb3VsZCBiZSByZXNvbHZlZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmaW5kU2NoZW1hRGVmaW5pdGlvbigkcmVmLCByb290U2NoZW1hID0ge30pIHtcbiAgICBjb25zdCByZWN1cnNlTGlzdCA9IFtdO1xuICAgIHJldHVybiBmaW5kU2NoZW1hRGVmaW5pdGlvblJlY3Vyc2l2ZSgkcmVmLCByb290U2NoZW1hLCByZWN1cnNlTGlzdCk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1maW5kU2NoZW1hRGVmaW5pdGlvbi5qcy5tYXAiLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc2Agd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBrZXkgVGhlIGtleSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUhhcyhvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUhhcztcbiIsInZhciBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4JyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgcGF0aGAgZXhpc3RzIG9uIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGhhc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrIHByb3BlcnRpZXMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgaGFzRnVuYykge1xuICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gZmFsc2U7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pO1xuICAgIGlmICghKHJlc3VsdCA9IG9iamVjdCAhPSBudWxsICYmIGhhc0Z1bmMob2JqZWN0LCBrZXkpKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIG9iamVjdCA9IG9iamVjdFtrZXldO1xuICB9XG4gIGlmIChyZXN1bHQgfHwgKytpbmRleCAhPSBsZW5ndGgpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGxlbmd0aCA9IG9iamVjdCA9PSBudWxsID8gMCA6IG9iamVjdC5sZW5ndGg7XG4gIHJldHVybiAhIWxlbmd0aCAmJiBpc0xlbmd0aChsZW5ndGgpICYmIGlzSW5kZXgoa2V5LCBsZW5ndGgpICYmXG4gICAgKGlzQXJyYXkob2JqZWN0KSB8fCBpc0FyZ3VtZW50cyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNQYXRoO1xuIiwidmFyIGJhc2VIYXMgPSByZXF1aXJlKCcuL19iYXNlSGFzJyksXG4gICAgaGFzUGF0aCA9IHJlcXVpcmUoJy4vX2hhc1BhdGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHBhdGhgIGlzIGEgZGlyZWN0IHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiB7ICdiJzogMiB9IH07XG4gKiB2YXIgb3RoZXIgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gKlxuICogXy5oYXMob2JqZWN0LCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzKG9iamVjdCwgJ2EuYicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzKG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXMob3RoZXIsICdhJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBoYXMob2JqZWN0LCBwYXRoKSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhcyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgTnVtYmVyYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqICoqTm90ZToqKiBUbyBleGNsdWRlIGBJbmZpbml0eWAsIGAtSW5maW5pdHlgLCBhbmQgYE5hTmAsIHdoaWNoIGFyZVxuICogY2xhc3NpZmllZCBhcyBudW1iZXJzLCB1c2UgdGhlIGBfLmlzRmluaXRlYCBtZXRob2QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBudW1iZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc051bWJlcigzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOdW1iZXIoSW5maW5pdHkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOdW1iZXIoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBudW1iZXJUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTnVtYmVyO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN0cmluZ2AgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN0cmluZywgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3RyaW5nKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3RyaW5nKDEpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fFxuICAgICghaXNBcnJheSh2YWx1ZSkgJiYgaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzdHJpbmdUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3RyaW5nO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ucmVkdWNlYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpbml0QWNjdW1dIFNwZWNpZnkgdXNpbmcgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YCBhc1xuICogIHRoZSBpbml0aWFsIHZhbHVlLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBhcnJheVJlZHVjZShhcnJheSwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0pIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICBpZiAoaW5pdEFjY3VtICYmIGxlbmd0aCkge1xuICAgIGFjY3VtdWxhdG9yID0gYXJyYXlbKytpbmRleF07XG4gIH1cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhY2N1bXVsYXRvciA9IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCBhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gIH1cbiAgcmV0dXJuIGFjY3VtdWxhdG9yO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5UmVkdWNlO1xuIiwiLyoqXG4gKiBDcmVhdGVzIGEgYmFzZSBmdW5jdGlvbiBmb3IgbWV0aG9kcyBsaWtlIGBfLmZvckluYCBhbmQgYF8uZm9yT3duYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVCYXNlRm9yKGZyb21SaWdodCkge1xuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0LCBpdGVyYXRlZSwga2V5c0Z1bmMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgaXRlcmFibGUgPSBPYmplY3Qob2JqZWN0KSxcbiAgICAgICAgcHJvcHMgPSBrZXlzRnVuYyhvYmplY3QpLFxuICAgICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIHZhciBrZXkgPSBwcm9wc1tmcm9tUmlnaHQgPyBsZW5ndGggOiArK2luZGV4XTtcbiAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Q7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQmFzZUZvcjtcbiIsInZhciBjcmVhdGVCYXNlRm9yID0gcmVxdWlyZSgnLi9fY3JlYXRlQmFzZUZvcicpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBiYXNlRm9yT3duYCB3aGljaCBpdGVyYXRlcyBvdmVyIGBvYmplY3RgXG4gKiBwcm9wZXJ0aWVzIHJldHVybmVkIGJ5IGBrZXlzRnVuY2AgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xudmFyIGJhc2VGb3IgPSBjcmVhdGVCYXNlRm9yKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZvcjtcbiIsInZhciBiYXNlRm9yID0gcmVxdWlyZSgnLi9fYmFzZUZvcicpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JPd25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlRm9yT3duKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yKG9iamVjdCwgaXRlcmF0ZWUsIGtleXMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGb3JPd247XG4iLCJ2YXIgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGBiYXNlRWFjaGAgb3IgYGJhc2VFYWNoUmlnaHRgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGEgY29sbGVjdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQmFzZUVhY2goZWFjaEZ1bmMsIGZyb21SaWdodCkge1xuICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICB9XG4gICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgcmV0dXJuIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKTtcbiAgICB9XG4gICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuICAgICAgICBpbmRleCA9IGZyb21SaWdodCA/IGxlbmd0aCA6IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcblxuICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVbaW5kZXhdLCBpbmRleCwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQmFzZUVhY2g7XG4iLCJ2YXIgYmFzZUZvck93biA9IHJlcXVpcmUoJy4vX2Jhc2VGb3JPd24nKSxcbiAgICBjcmVhdGVCYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2NyZWF0ZUJhc2VFYWNoJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yRWFjaGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gKi9cbnZhciBiYXNlRWFjaCA9IGNyZWF0ZUJhc2VFYWNoKGJhc2VGb3JPd24pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VFYWNoO1xuIiwidmFyIFN0YWNrID0gcmVxdWlyZSgnLi9fU3RhY2snKSxcbiAgICBiYXNlSXNFcXVhbCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hdGNoYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7QXJyYXl9IG1hdGNoRGF0YSBUaGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3MgdG8gbWF0Y2guXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBtYXRjaERhdGEsIGN1c3RvbWl6ZXIpIHtcbiAgdmFyIGluZGV4ID0gbWF0Y2hEYXRhLmxlbmd0aCxcbiAgICAgIGxlbmd0aCA9IGluZGV4LFxuICAgICAgbm9DdXN0b21pemVyID0gIWN1c3RvbWl6ZXI7XG5cbiAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuICFsZW5ndGg7XG4gIH1cbiAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgdmFyIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgIGlmICgobm9DdXN0b21pemVyICYmIGRhdGFbMl0pXG4gICAgICAgICAgPyBkYXRhWzFdICE9PSBvYmplY3RbZGF0YVswXV1cbiAgICAgICAgICA6ICEoZGF0YVswXSBpbiBvYmplY3QpXG4gICAgICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgIHZhciBrZXkgPSBkYXRhWzBdLFxuICAgICAgICBvYmpWYWx1ZSA9IG9iamVjdFtrZXldLFxuICAgICAgICBzcmNWYWx1ZSA9IGRhdGFbMV07XG5cbiAgICBpZiAobm9DdXN0b21pemVyICYmIGRhdGFbMl0pIHtcbiAgICAgIGlmIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc3RhY2sgPSBuZXcgU3RhY2s7XG4gICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICB2YXIgcmVzdWx0ID0gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKTtcbiAgICAgIH1cbiAgICAgIGlmICghKHJlc3VsdCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgICAgIDogcmVzdWx0XG4gICAgICAgICAgKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc01hdGNoO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGkuZS4gYD09PWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaWYgc3VpdGFibGUgZm9yIHN0cmljdFxuICogIGVxdWFsaXR5IGNvbXBhcmlzb25zLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IHZhbHVlICYmICFpc09iamVjdCh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTdHJpY3RDb21wYXJhYmxlO1xuIiwidmFyIGlzU3RyaWN0Q29tcGFyYWJsZSA9IHJlcXVpcmUoJy4vX2lzU3RyaWN0Q29tcGFyYWJsZScpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBtYXRjaCBkYXRhIG9mIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBnZXRNYXRjaERhdGEob2JqZWN0KSB7XG4gIHZhciByZXN1bHQgPSBrZXlzKG9iamVjdCksXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIHZhciBrZXkgPSByZXN1bHRbbGVuZ3RoXSxcbiAgICAgICAgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgIHJlc3VsdFtsZW5ndGhdID0gW2tleSwgdmFsdWUsIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSldO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TWF0Y2hEYXRhO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYG1hdGNoZXNQcm9wZXJ0eWAgZm9yIHNvdXJjZSB2YWx1ZXMgc3VpdGFibGVcbiAqIGZvciBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGkuZS4gYD09PWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2guXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZShrZXksIHNyY1ZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdFtrZXldID09PSBzcmNWYWx1ZSAmJlxuICAgICAgKHNyY1ZhbHVlICE9PSB1bmRlZmluZWQgfHwgKGtleSBpbiBPYmplY3Qob2JqZWN0KSkpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlO1xuIiwidmFyIGJhc2VJc01hdGNoID0gcmVxdWlyZSgnLi9fYmFzZUlzTWF0Y2gnKSxcbiAgICBnZXRNYXRjaERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXRjaERhdGEnKSxcbiAgICBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZSA9IHJlcXVpcmUoJy4vX21hdGNoZXNTdHJpY3RDb21wYXJhYmxlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWF0Y2hlc2Agd2hpY2ggZG9lc24ndCBjbG9uZSBgc291cmNlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VNYXRjaGVzKHNvdXJjZSkge1xuICB2YXIgbWF0Y2hEYXRhID0gZ2V0TWF0Y2hEYXRhKHNvdXJjZSk7XG4gIGlmIChtYXRjaERhdGEubGVuZ3RoID09IDEgJiYgbWF0Y2hEYXRhWzBdWzJdKSB7XG4gICAgcmV0dXJuIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKG1hdGNoRGF0YVswXVswXSwgbWF0Y2hEYXRhWzBdWzFdKTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdCA9PT0gc291cmNlIHx8IGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBtYXRjaERhdGEpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNYXRjaGVzO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5oYXNJbmAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBrZXkgVGhlIGtleSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUhhc0luKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBrZXkgaW4gT2JqZWN0KG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUhhc0luO1xuIiwidmFyIGJhc2VIYXNJbiA9IHJlcXVpcmUoJy4vX2Jhc2VIYXNJbicpLFxuICAgIGhhc1BhdGggPSByZXF1aXJlKCcuL19oYXNQYXRoJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBwYXRoYCBpcyBhIGRpcmVjdCBvciBpbmhlcml0ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0gXy5jcmVhdGUoeyAnYSc6IF8uY3JlYXRlKHsgJ2InOiAyIH0pIH0pO1xuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCAnYS5iJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXNJbihvYmplY3QsIFsnYScsICdiJ10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCAnYicpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaGFzSW4ob2JqZWN0LCBwYXRoKSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhc0luKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNJbjtcbiIsInZhciBiYXNlSXNFcXVhbCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsJyksXG4gICAgZ2V0ID0gcmVxdWlyZSgnLi9nZXQnKSxcbiAgICBoYXNJbiA9IHJlcXVpcmUoJy4vaGFzSW4nKSxcbiAgICBpc0tleSA9IHJlcXVpcmUoJy4vX2lzS2V5JyksXG4gICAgaXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9faXNTdHJpY3RDb21wYXJhYmxlJyksXG4gICAgbWF0Y2hlc1N0cmljdENvbXBhcmFibGUgPSByZXF1aXJlKCcuL19tYXRjaGVzU3RyaWN0Q29tcGFyYWJsZScpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hdGNoZXNQcm9wZXJ0eWAgd2hpY2ggZG9lc24ndCBjbG9uZSBgc3JjVmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2guXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlTWF0Y2hlc1Byb3BlcnR5KHBhdGgsIHNyY1ZhbHVlKSB7XG4gIGlmIChpc0tleShwYXRoKSAmJiBpc1N0cmljdENvbXBhcmFibGUoc3JjVmFsdWUpKSB7XG4gICAgcmV0dXJuIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKHRvS2V5KHBhdGgpLCBzcmNWYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHZhciBvYmpWYWx1ZSA9IGdldChvYmplY3QsIHBhdGgpO1xuICAgIHJldHVybiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBvYmpWYWx1ZSA9PT0gc3JjVmFsdWUpXG4gICAgICA/IGhhc0luKG9iamVjdCwgcGF0aClcbiAgICAgIDogYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNYXRjaGVzUHJvcGVydHk7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnByb3BlcnR5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VQcm9wZXJ0eShrZXkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQcm9wZXJ0eTtcbiIsInZhciBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVByb3BlcnR5YCB3aGljaCBzdXBwb3J0cyBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VQcm9wZXJ0eURlZXAocGF0aCkge1xuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgcmV0dXJuIGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUHJvcGVydHlEZWVwO1xuIiwidmFyIGJhc2VQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2Jhc2VQcm9wZXJ0eScpLFxuICAgIGJhc2VQcm9wZXJ0eURlZXAgPSByZXF1aXJlKCcuL19iYXNlUHJvcGVydHlEZWVwJyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYSBnaXZlbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbXG4gKiAgIHsgJ2EnOiB7ICdiJzogMiB9IH0sXG4gKiAgIHsgJ2EnOiB7ICdiJzogMSB9IH1cbiAqIF07XG4gKlxuICogXy5tYXAob2JqZWN0cywgXy5wcm9wZXJ0eSgnYS5iJykpO1xuICogLy8gPT4gWzIsIDFdXG4gKlxuICogXy5tYXAoXy5zb3J0Qnkob2JqZWN0cywgXy5wcm9wZXJ0eShbJ2EnLCAnYiddKSksICdhLmInKTtcbiAqIC8vID0+IFsxLCAyXVxuICovXG5mdW5jdGlvbiBwcm9wZXJ0eShwYXRoKSB7XG4gIHJldHVybiBpc0tleShwYXRoKSA/IGJhc2VQcm9wZXJ0eSh0b0tleShwYXRoKSkgOiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHByb3BlcnR5O1xuIiwidmFyIGJhc2VNYXRjaGVzID0gcmVxdWlyZSgnLi9fYmFzZU1hdGNoZXMnKSxcbiAgICBiYXNlTWF0Y2hlc1Byb3BlcnR5ID0gcmVxdWlyZSgnLi9fYmFzZU1hdGNoZXNQcm9wZXJ0eScpLFxuICAgIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBwcm9wZXJ0eSA9IHJlcXVpcmUoJy4vcHJvcGVydHknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pdGVyYXRlZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gW3ZhbHVlPV8uaWRlbnRpdHldIFRoZSB2YWx1ZSB0byBjb252ZXJ0IHRvIGFuIGl0ZXJhdGVlLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBpdGVyYXRlZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUl0ZXJhdGVlKHZhbHVlKSB7XG4gIC8vIERvbid0IHN0b3JlIHRoZSBgdHlwZW9mYCByZXN1bHQgaW4gYSB2YXJpYWJsZSB0byBhdm9pZCBhIEpJVCBidWcgaW4gU2FmYXJpIDkuXG4gIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDM0IGZvciBtb3JlIGRldGFpbHMuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiBpZGVudGl0eTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpXG4gICAgICA/IGJhc2VNYXRjaGVzUHJvcGVydHkodmFsdWVbMF0sIHZhbHVlWzFdKVxuICAgICAgOiBiYXNlTWF0Y2hlcyh2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHByb3BlcnR5KHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXRlcmF0ZWU7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlZHVjZWAgYW5kIGBfLnJlZHVjZVJpZ2h0YCwgd2l0aG91dCBzdXBwb3J0XG4gKiBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgY29sbGVjdGlvbmAgdXNpbmcgYGVhY2hGdW5jYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Kn0gYWNjdW11bGF0b3IgVGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaXRBY2N1bSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBvciBsYXN0IGVsZW1lbnQgb2ZcbiAqICBgY29sbGVjdGlvbmAgYXMgdGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGBjb2xsZWN0aW9uYC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZVJlZHVjZShjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSwgZWFjaEZ1bmMpIHtcbiAgZWFjaEZ1bmMoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgYWNjdW11bGF0b3IgPSBpbml0QWNjdW1cbiAgICAgID8gKGluaXRBY2N1bSA9IGZhbHNlLCB2YWx1ZSlcbiAgICAgIDogaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gIH0pO1xuICByZXR1cm4gYWNjdW11bGF0b3I7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVJlZHVjZTtcbiIsInZhciBhcnJheVJlZHVjZSA9IHJlcXVpcmUoJy4vX2FycmF5UmVkdWNlJyksXG4gICAgYmFzZUVhY2ggPSByZXF1aXJlKCcuL19iYXNlRWFjaCcpLFxuICAgIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGJhc2VSZWR1Y2UgPSByZXF1aXJlKCcuL19iYXNlUmVkdWNlJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIFJlZHVjZXMgYGNvbGxlY3Rpb25gIHRvIGEgdmFsdWUgd2hpY2ggaXMgdGhlIGFjY3VtdWxhdGVkIHJlc3VsdCBvZiBydW5uaW5nXG4gKiBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYCwgd2hlcmUgZWFjaCBzdWNjZXNzaXZlXG4gKiBpbnZvY2F0aW9uIGlzIHN1cHBsaWVkIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHByZXZpb3VzLiBJZiBgYWNjdW11bGF0b3JgXG4gKiBpcyBub3QgZ2l2ZW4sIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCBpcyB1c2VkIGFzIHRoZSBpbml0aWFsXG4gKiB2YWx1ZS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBmb3VyIGFyZ3VtZW50czpcbiAqIChhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKlxuICogTWFueSBsb2Rhc2ggbWV0aG9kcyBhcmUgZ3VhcmRlZCB0byB3b3JrIGFzIGl0ZXJhdGVlcyBmb3IgbWV0aG9kcyBsaWtlXG4gKiBgXy5yZWR1Y2VgLCBgXy5yZWR1Y2VSaWdodGAsIGFuZCBgXy50cmFuc2Zvcm1gLlxuICpcbiAqIFRoZSBndWFyZGVkIG1ldGhvZHMgYXJlOlxuICogYGFzc2lnbmAsIGBkZWZhdWx0c2AsIGBkZWZhdWx0c0RlZXBgLCBgaW5jbHVkZXNgLCBgbWVyZ2VgLCBgb3JkZXJCeWAsXG4gKiBhbmQgYHNvcnRCeWBcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gKiBAc2VlIF8ucmVkdWNlUmlnaHRcbiAqIEBleGFtcGxlXG4gKlxuICogXy5yZWR1Y2UoWzEsIDJdLCBmdW5jdGlvbihzdW0sIG4pIHtcbiAqICAgcmV0dXJuIHN1bSArIG47XG4gKiB9LCAwKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnJlZHVjZSh7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfSwgZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gKiAgIHJldHVybiByZXN1bHQ7XG4gKiB9LCB7fSk7XG4gKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKi9cbmZ1bmN0aW9uIHJlZHVjZShjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlSZWR1Y2UgOiBiYXNlUmVkdWNlLFxuICAgICAgaW5pdEFjY3VtID0gYXJndW1lbnRzLmxlbmd0aCA8IDM7XG5cbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCA0KSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSwgYmFzZUVhY2gpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJlZHVjZTtcbiIsInZhciBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBDYXN0cyBgdmFsdWVgIHRvIGBpZGVudGl0eWAgaWYgaXQncyBub3QgYSBmdW5jdGlvbi5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBjYXN0IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjYXN0RnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nID8gdmFsdWUgOiBpZGVudGl0eTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYXN0RnVuY3Rpb247XG4iLCIvKiogVXNlZCB0byBtYXRjaCBhIHNpbmdsZSB3aGl0ZXNwYWNlIGNoYXJhY3Rlci4gKi9cbnZhciByZVdoaXRlc3BhY2UgPSAvXFxzLztcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLnRyaW1gIGFuZCBgXy50cmltRW5kYCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlXG4gKiBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyLlxuICovXG5mdW5jdGlvbiB0cmltbWVkRW5kSW5kZXgoc3RyaW5nKSB7XG4gIHZhciBpbmRleCA9IHN0cmluZy5sZW5ndGg7XG5cbiAgd2hpbGUgKGluZGV4LS0gJiYgcmVXaGl0ZXNwYWNlLnRlc3Qoc3RyaW5nLmNoYXJBdChpbmRleCkpKSB7fVxuICByZXR1cm4gaW5kZXg7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdHJpbW1lZEVuZEluZGV4O1xuIiwidmFyIHRyaW1tZWRFbmRJbmRleCA9IHJlcXVpcmUoJy4vX3RyaW1tZWRFbmRJbmRleCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBsZWFkaW5nIHdoaXRlc3BhY2UuICovXG52YXIgcmVUcmltU3RhcnQgPSAvXlxccysvO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRyaW1gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVHJpbShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZ1xuICAgID8gc3RyaW5nLnNsaWNlKDAsIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpICsgMSkucmVwbGFjZShyZVRyaW1TdGFydCwgJycpXG4gICAgOiBzdHJpbmc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRyaW07XG4iLCJ2YXIgYmFzZVRyaW0gPSByZXF1aXJlKCcuL19iYXNlVHJpbScpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBOQU4gPSAwIC8gMDtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJhZCBzaWduZWQgaGV4YWRlY2ltYWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmFkSGV4ID0gL15bLStdMHhbMC05YS1mXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmluYXJ5ID0gL14wYlswMV0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzT2N0YWwgPSAvXjBvWzAtN10rJC9pO1xuXG4vKiogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgd2l0aG91dCBhIGRlcGVuZGVuY3kgb24gYHJvb3RgLiAqL1xudmFyIGZyZWVQYXJzZUludCA9IHBhcnNlSW50O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9OdW1iZXIoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAqIC8vID0+IEluZmluaXR5XG4gKlxuICogXy50b051bWJlcignMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5BTjtcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICB9XG4gIHZhbHVlID0gYmFzZVRyaW0odmFsdWUpO1xuICB2YXIgaXNCaW5hcnkgPSByZUlzQmluYXJ5LnRlc3QodmFsdWUpO1xuICByZXR1cm4gKGlzQmluYXJ5IHx8IHJlSXNPY3RhbC50ZXN0KHZhbHVlKSlcbiAgICA/IGZyZWVQYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgaXNCaW5hcnkgPyAyIDogOClcbiAgICA6IChyZUlzQmFkSGV4LnRlc3QodmFsdWUpID8gTkFOIDogK3ZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b051bWJlcjtcbiIsInZhciB0b051bWJlciA9IHJlcXVpcmUoJy4vdG9OdW1iZXInKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMCxcbiAgICBNQVhfSU5URUdFUiA9IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBmaW5pdGUgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMi4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9GaW5pdGUoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9GaW5pdGUoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvRmluaXRlKEluZmluaXR5KTtcbiAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gKlxuICogXy50b0Zpbml0ZSgnMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9GaW5pdGUodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMDtcbiAgfVxuICB2YWx1ZSA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgaWYgKHZhbHVlID09PSBJTkZJTklUWSB8fCB2YWx1ZSA9PT0gLUlORklOSVRZKSB7XG4gICAgdmFyIHNpZ24gPSAodmFsdWUgPCAwID8gLTEgOiAxKTtcbiAgICByZXR1cm4gc2lnbiAqIE1BWF9JTlRFR0VSO1xuICB9XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgPyB2YWx1ZSA6IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9GaW5pdGU7XG4iLCJ2YXIgdG9GaW5pdGUgPSByZXF1aXJlKCcuL3RvRmluaXRlJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBpbnRlZ2VyLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvSW50ZWdlcmBdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2ludGVnZXIpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9JbnRlZ2VyKDMuMik7XG4gKiAvLyA9PiAzXG4gKlxuICogXy50b0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiAwXG4gKlxuICogXy50b0ludGVnZXIoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvSW50ZWdlcignMy4yJyk7XG4gKiAvLyA9PiAzXG4gKi9cbmZ1bmN0aW9uIHRvSW50ZWdlcih2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gdG9GaW5pdGUodmFsdWUpLFxuICAgICAgcmVtYWluZGVyID0gcmVzdWx0ICUgMTtcblxuICByZXR1cm4gcmVzdWx0ID09PSByZXN1bHQgPyAocmVtYWluZGVyID8gcmVzdWx0IC0gcmVtYWluZGVyIDogcmVzdWx0KSA6IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9JbnRlZ2VyO1xuIiwidmFyIGJhc2VUaW1lcyA9IHJlcXVpcmUoJy4vX2Jhc2VUaW1lcycpLFxuICAgIGNhc3RGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2Nhc3RGdW5jdGlvbicpLFxuICAgIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vdG9JbnRlZ2VyJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB0aGUgbWF4aW11bSBsZW5ndGggYW5kIGluZGV4IG9mIGFuIGFycmF5LiAqL1xudmFyIE1BWF9BUlJBWV9MRU5HVEggPSA0Mjk0OTY3Mjk1O1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWluID0gTWF0aC5taW47XG5cbi8qKlxuICogSW52b2tlcyB0aGUgaXRlcmF0ZWUgYG5gIHRpbWVzLCByZXR1cm5pbmcgYW4gYXJyYXkgb2YgdGhlIHJlc3VsdHMgb2ZcbiAqIGVhY2ggaW52b2NhdGlvbi4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ7IChpbmRleCkuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50aW1lcygzLCBTdHJpbmcpO1xuICogLy8gPT4gWycwJywgJzEnLCAnMiddXG4gKlxuICogIF8udGltZXMoNCwgXy5jb25zdGFudCgwKSk7XG4gKiAvLyA9PiBbMCwgMCwgMCwgMF1cbiAqL1xuZnVuY3Rpb24gdGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgbiA9IHRvSW50ZWdlcihuKTtcbiAgaWYgKG4gPCAxIHx8IG4gPiBNQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHZhciBpbmRleCA9IE1BWF9BUlJBWV9MRU5HVEgsXG4gICAgICBsZW5ndGggPSBuYXRpdmVNaW4obiwgTUFYX0FSUkFZX0xFTkdUSCk7XG5cbiAgaXRlcmF0ZWUgPSBjYXN0RnVuY3Rpb24oaXRlcmF0ZWUpO1xuICBuIC09IE1BWF9BUlJBWV9MRU5HVEg7XG5cbiAgdmFyIHJlc3VsdCA9IGJhc2VUaW1lcyhsZW5ndGgsIGl0ZXJhdGVlKTtcbiAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgaXRlcmF0ZWUoaW5kZXgpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdGltZXM7XG4iLCJpbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IHsgUFJPUEVSVElFU19LRVkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKiogQ29tcGFyZXMgdGhlIHZhbHVlIG9mIGBkaXNjcmltaW5hdG9yRmllbGRgIHdpdGhpbiBgZm9ybURhdGFgIGFnYWluc3QgdGhlIHZhbHVlIG9mIGBkaXNjcmltaW5hdG9yRmllbGRgIHdpdGhpbiBzY2hlbWEgZm9yIGVhY2ggYG9wdGlvbmAuXG4gKiBSZXR1cm5zIGluZGV4IG9mIGZpcnN0IGBvcHRpb25gIHdob3NlIGRpc2NyaW1pbmF0b3IgbWF0Y2hlcyBmb3JtRGF0YS4gUmV0dXJucyBgdW5kZWZpbmVkYCBpZiB0aGVyZSBpcyBubyBtYXRjaC5cbiAqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3Qgd29yayB3aXRoIGRpc2NyaW1pbmF0b3JzIG9mIGBcInR5cGVcIjogXCJvYmplY3RcImAgYW5kIGBcInR5cGVcIjogXCJhcnJheVwiYFxuICpcbiAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIHVzZWQgdG8gZmlndXJlIG91dCBhIG1hdGNoXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBsaXN0IG9mIG9wdGlvbnMgdG8gZmluZCBhIG1hdGNoaW5nIG9wdGlvbnMgZnJvbVxuICogQHBhcmFtIFtkaXNjcmltaW5hdG9yRmllbGRdIC0gVGhlIG9wdGlvbmFsIG5hbWUgb2YgdGhlIGZpZWxkIHdpdGhpbiB0aGUgb3B0aW9ucyBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdXNlZCB0b1xuICogICAgICAgICAgZGV0ZXJtaW5lIHdoaWNoIG9wdGlvbiBpcyBzZWxlY3RlZFxuICogQHJldHVybnMgLSBUaGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgb3B0aW9uIG9yIHVuZGVmaW5lZCBpZiB0aGVyZSBpcyBubyBtYXRjaFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPcHRpb25NYXRjaGluZ1NpbXBsZURpc2NyaW1pbmF0b3IoZm9ybURhdGEsIG9wdGlvbnMsIGRpc2NyaW1pbmF0b3JGaWVsZCkge1xuICAgIHZhciBfYTtcbiAgICBpZiAoZm9ybURhdGEgJiYgZGlzY3JpbWluYXRvckZpZWxkKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0KGZvcm1EYXRhLCBkaXNjcmltaW5hdG9yRmllbGQpO1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gb3B0aW9uc1tpXTtcbiAgICAgICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3IgPSBnZXQob3B0aW9uLCBbUFJPUEVSVElFU19LRVksIGRpc2NyaW1pbmF0b3JGaWVsZF0sIHt9KTtcbiAgICAgICAgICAgIGlmIChkaXNjcmltaW5hdG9yLnR5cGUgPT09ICdvYmplY3QnIHx8IGRpc2NyaW1pbmF0b3IudHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRpc2NyaW1pbmF0b3IuY29uc3QgPT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKF9hID0gZGlzY3JpbWluYXRvci5lbnVtKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0T3B0aW9uTWF0Y2hpbmdTaW1wbGVEaXNjcmltaW5hdG9yLmpzLm1hcCIsImltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgaGFzIGZyb20gJ2xvZGFzaC9oYXMnO1xuaW1wb3J0IGlzTnVtYmVyIGZyb20gJ2xvZGFzaC9pc051bWJlcic7XG5pbXBvcnQgeyBQUk9QRVJUSUVTX0tFWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgZ2V0T3B0aW9uTWF0Y2hpbmdTaW1wbGVEaXNjcmltaW5hdG9yIGZyb20gJy4uL2dldE9wdGlvbk1hdGNoaW5nU2ltcGxlRGlzY3JpbWluYXRvcic7XG4vKiogR2l2ZW4gdGhlIGBmb3JtRGF0YWAgYW5kIGxpc3Qgb2YgYG9wdGlvbnNgLCBhdHRlbXB0cyB0byBmaW5kIHRoZSBpbmRleCBvZiB0aGUgb3B0aW9uIHRoYXQgYmVzdCBtYXRjaGVzIHRoZSBkYXRhLlxuICogRGVwcmVjYXRlZCwgdXNlIGBnZXRGaXJzdE1hdGNoaW5nT3B0aW9uKClgIGluc3RlYWQuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB1c2VkIHRvIGZpZ3VyZSBvdXQgYSBtYXRjaFxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgbGlzdCBvZiBvcHRpb25zIHRvIGZpbmQgYSBtYXRjaGluZyBvcHRpb25zIGZyb21cbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hLCB1c2VkIHRvIHByaW1hcmlseSB0byBsb29rIHVwIGAkcmVmYHNcbiAqIEBwYXJhbSBbZGlzY3JpbWluYXRvckZpZWxkXSAtIFRoZSBvcHRpb25hbCBuYW1lIG9mIHRoZSBmaWVsZCB3aXRoaW4gdGhlIG9wdGlvbnMgb2JqZWN0IHdob3NlIHZhbHVlIGlzIHVzZWQgdG9cbiAqICAgICAgICAgIGRldGVybWluZSB3aGljaCBvcHRpb24gaXMgc2VsZWN0ZWRcbiAqIEByZXR1cm5zIC0gVGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIG9wdGlvbiBvciAwIGlmIG5vbmUgaXMgYXZhaWxhYmxlXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRNYXRjaGluZ09wdGlvbih2YWxpZGF0b3IsIGZvcm1EYXRhLCBvcHRpb25zLCByb290U2NoZW1hLCBkaXNjcmltaW5hdG9yRmllbGQpIHtcbiAgICAvLyBGb3IgcGVyZm9ybWFuY2UsIHNraXAgdmFsaWRhdGluZyBzdWJzY2hlbWFzIGlmIGZvcm1EYXRhIGlzIHVuZGVmaW5lZC4gV2UganVzdFxuICAgIC8vIHdhbnQgdG8gZ2V0IHRoZSBmaXJzdCBvcHRpb24gaW4gdGhhdCBjYXNlLlxuICAgIGlmIChmb3JtRGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBjb25zdCBzaW1wbGVEaXNjcmltaW5hdG9yTWF0Y2ggPSBnZXRPcHRpb25NYXRjaGluZ1NpbXBsZURpc2NyaW1pbmF0b3IoZm9ybURhdGEsIG9wdGlvbnMsIGRpc2NyaW1pbmF0b3JGaWVsZCk7XG4gICAgaWYgKGlzTnVtYmVyKHNpbXBsZURpc2NyaW1pbmF0b3JNYXRjaCkpIHtcbiAgICAgICAgcmV0dXJuIHNpbXBsZURpc2NyaW1pbmF0b3JNYXRjaDtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnNbaV07XG4gICAgICAgIC8vIElmIHdlIGhhdmUgYSBkaXNjcmltaW5hdG9yIGZpZWxkLCB0aGVuIHdlIHdpbGwgdXNlIHRoaXMgdG8gbWFrZSB0aGUgZGV0ZXJtaW5hdGlvblxuICAgICAgICBpZiAoZGlzY3JpbWluYXRvckZpZWxkICYmIGhhcyhvcHRpb24sIFtQUk9QRVJUSUVTX0tFWSwgZGlzY3JpbWluYXRvckZpZWxkXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0KGZvcm1EYXRhLCBkaXNjcmltaW5hdG9yRmllbGQpO1xuICAgICAgICAgICAgY29uc3QgZGlzY3JpbWluYXRvciA9IGdldChvcHRpb24sIFtQUk9QRVJUSUVTX0tFWSwgZGlzY3JpbWluYXRvckZpZWxkXSwge30pO1xuICAgICAgICAgICAgaWYgKHZhbGlkYXRvci5pc1ZhbGlkKGRpc2NyaW1pbmF0b3IsIHZhbHVlLCByb290U2NoZW1hKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG9wdGlvbltQUk9QRVJUSUVTX0tFWV0pIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBzY2hlbWEgZGVzY3JpYmVzIGFuIG9iamVjdCB0aGVuIHdlIG5lZWQgdG8gYWRkIHNsaWdodGx5IG1vcmVcbiAgICAgICAgICAgIC8vIHN0cmljdCBtYXRjaGluZyB0byB0aGUgc2NoZW1hLCBiZWNhdXNlIHVubGVzcyB0aGUgc2NoZW1hIHVzZXMgdGhlXG4gICAgICAgICAgICAvLyBcInJlcXVpcmVzXCIga2V5d29yZCwgYW4gb2JqZWN0IHdpbGwgbWF0Y2ggdGhlIHNjaGVtYSBhcyBsb25nIGFzIGl0XG4gICAgICAgICAgICAvLyBkb2Vzbid0IGhhdmUgbWF0Y2hpbmcga2V5cyB3aXRoIGEgY29uZmxpY3RpbmcgdHlwZS4gVG8gZG8gdGhpcyB3ZSB1c2UgYW5cbiAgICAgICAgICAgIC8vIFwiYW55T2ZcIiB3aXRoIGFuIGFycmF5IG9mIHJlcXVpcmVzLiBUaGlzIGF1Z21lbnRhdGlvbiBleHByZXNzZXMgdGhhdCB0aGVcbiAgICAgICAgICAgIC8vIHNjaGVtYSBzaG91bGQgbWF0Y2ggaWYgYW55IG9mIHRoZSBrZXlzIGluIHRoZSBzY2hlbWEgYXJlIHByZXNlbnQgb24gdGhlXG4gICAgICAgICAgICAvLyBvYmplY3QgYW5kIHBhc3MgdmFsaWRhdGlvbi5cbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyBDcmVhdGUgYW4gXCJhbnlPZlwiIHNjaGVtYSB0aGF0IHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBvZiB0aGUga2V5cyBpbiB0aGVcbiAgICAgICAgICAgIC8vIFwicHJvcGVydGllc1wiIG9iamVjdFxuICAgICAgICAgICAgY29uc3QgcmVxdWlyZXNBbnlPZiA9IHtcbiAgICAgICAgICAgICAgICBhbnlPZjogT2JqZWN0LmtleXMob3B0aW9uW1BST1BFUlRJRVNfS0VZXSkubWFwKChrZXkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBba2V5XSxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbGV0IGF1Z21lbnRlZFNjaGVtYTtcbiAgICAgICAgICAgIC8vIElmIHRoZSBcImFueU9mXCIga2V5d29yZCBhbHJlYWR5IGV4aXN0cywgd3JhcCB0aGUgYXVnbWVudGF0aW9uIGluIGFuIFwiYWxsT2ZcIlxuICAgICAgICAgICAgaWYgKG9wdGlvbi5hbnlPZikge1xuICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIHNoYWxsb3cgY2xvbmUgb2YgdGhlIG9wdGlvblxuICAgICAgICAgICAgICAgIGNvbnN0IHsgLi4uc2hhbGxvd0Nsb25lIH0gPSBvcHRpb247XG4gICAgICAgICAgICAgICAgaWYgKCFzaGFsbG93Q2xvbmUuYWxsT2YpIHtcbiAgICAgICAgICAgICAgICAgICAgc2hhbGxvd0Nsb25lLmFsbE9mID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiBcImFsbE9mXCIgYWxyZWFkeSBleGlzdHMsIHNoYWxsb3cgY2xvbmUgdGhlIGFycmF5XG4gICAgICAgICAgICAgICAgICAgIHNoYWxsb3dDbG9uZS5hbGxPZiA9IHNoYWxsb3dDbG9uZS5hbGxPZi5zbGljZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzaGFsbG93Q2xvbmUuYWxsT2YucHVzaChyZXF1aXJlc0FueU9mKTtcbiAgICAgICAgICAgICAgICBhdWdtZW50ZWRTY2hlbWEgPSBzaGFsbG93Q2xvbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhdWdtZW50ZWRTY2hlbWEgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb24sIHJlcXVpcmVzQW55T2YpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBcInJlcXVpcmVkXCIgZmllbGQgYXMgaXQncyBsaWtlbHkgdGhhdCBub3QgYWxsIGZpZWxkcyBoYXZlXG4gICAgICAgICAgICAvLyBiZWVuIGZpbGxlZCBpbiB5ZXQsIHdoaWNoIHdpbGwgbWVhbiB0aGF0IHRoZSBzY2hlbWEgaXMgbm90IHZhbGlkXG4gICAgICAgICAgICBkZWxldGUgYXVnbWVudGVkU2NoZW1hLnJlcXVpcmVkO1xuICAgICAgICAgICAgaWYgKHZhbGlkYXRvci5pc1ZhbGlkKGF1Z21lbnRlZFNjaGVtYSwgZm9ybURhdGEsIHJvb3RTY2hlbWEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsaWRhdG9yLmlzVmFsaWQob3B0aW9uLCBmb3JtRGF0YSwgcm9vdFNjaGVtYSkpIHtcbiAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0TWF0Y2hpbmdPcHRpb24uanMubWFwIiwiaW1wb3J0IGdldE1hdGNoaW5nT3B0aW9uIGZyb20gJy4vZ2V0TWF0Y2hpbmdPcHRpb24nO1xuLyoqIEdpdmVuIHRoZSBgZm9ybURhdGFgIGFuZCBsaXN0IG9mIGBvcHRpb25zYCwgYXR0ZW1wdHMgdG8gZmluZCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9wdGlvbiB0aGF0IG1hdGNoZXMgdGhlIGRhdGEuXG4gKiBBbHdheXMgcmV0dXJucyB0aGUgZmlyc3Qgb3B0aW9uIGlmIHRoZXJlIGlzIG5vdGhpbmcgdGhhdCBtYXRjaGVzLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIGZvcm1EYXRhIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdXNlZCB0byBmaWd1cmUgb3V0IGEgbWF0Y2hcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGxpc3Qgb2Ygb3B0aW9ucyB0byBmaW5kIGEgbWF0Y2hpbmcgb3B0aW9ucyBmcm9tXG4gKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IHNjaGVtYSwgdXNlZCB0byBwcmltYXJpbHkgdG8gbG9vayB1cCBgJHJlZmBzXG4gKiBAcGFyYW0gW2Rpc2NyaW1pbmF0b3JGaWVsZF0gLSBUaGUgb3B0aW9uYWwgbmFtZSBvZiB0aGUgZmllbGQgd2l0aGluIHRoZSBvcHRpb25zIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyB1c2VkIHRvXG4gKiAgICAgICAgICBkZXRlcm1pbmUgd2hpY2ggb3B0aW9uIGlzIHNlbGVjdGVkXG4gKiBAcmV0dXJucyAtIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgbWF0Y2hlZCBvcHRpb24gb3IgMCBpZiBub25lIGlzIGF2YWlsYWJsZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRGaXJzdE1hdGNoaW5nT3B0aW9uKHZhbGlkYXRvciwgZm9ybURhdGEsIG9wdGlvbnMsIHJvb3RTY2hlbWEsIGRpc2NyaW1pbmF0b3JGaWVsZCkge1xuICAgIHJldHVybiBnZXRNYXRjaGluZ09wdGlvbih2YWxpZGF0b3IsIGZvcm1EYXRhLCBvcHRpb25zLCByb290U2NoZW1hLCBkaXNjcmltaW5hdG9yRmllbGQpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0Rmlyc3RNYXRjaGluZ09wdGlvbi5qcy5tYXAiLCJ2YXIgYmFzZUlzRXF1YWwgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbCcpO1xuXG4vKipcbiAqIFBlcmZvcm1zIGEgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmVcbiAqIGVxdWl2YWxlbnQuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIHN1cHBvcnRzIGNvbXBhcmluZyBhcnJheXMsIGFycmF5IGJ1ZmZlcnMsIGJvb2xlYW5zLFxuICogZGF0ZSBvYmplY3RzLCBlcnJvciBvYmplY3RzLCBtYXBzLCBudW1iZXJzLCBgT2JqZWN0YCBvYmplY3RzLCByZWdleGVzLFxuICogc2V0cywgc3RyaW5ncywgc3ltYm9scywgYW5kIHR5cGVkIGFycmF5cy4gYE9iamVjdGAgb2JqZWN0cyBhcmUgY29tcGFyZWRcbiAqIGJ5IHRoZWlyIG93biwgbm90IGluaGVyaXRlZCwgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLiBGdW5jdGlvbnMgYW5kIERPTVxuICogbm9kZXMgYXJlIGNvbXBhcmVkIGJ5IHN0cmljdCBlcXVhbGl0eSwgaS5lLiBgPT09YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2EnOiAxIH07XG4gKlxuICogXy5pc0VxdWFsKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIG9iamVjdCA9PT0gb3RoZXI7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0VxdWFsKHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0VxdWFsO1xuIiwidmFyIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSxcbiAgICBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2V0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBwYXRoIGNyZWF0aW9uLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZVNldChvYmplY3QsIHBhdGgsIHZhbHVlLCBjdXN0b21pemVyKSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBvYmplY3Q7XG4gIH1cbiAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aCxcbiAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDEsXG4gICAgICBuZXN0ZWQgPSBvYmplY3Q7XG5cbiAgd2hpbGUgKG5lc3RlZCAhPSBudWxsICYmICsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pLFxuICAgICAgICBuZXdWYWx1ZSA9IHZhbHVlO1xuXG4gICAgaWYgKGtleSA9PT0gJ19fcHJvdG9fXycgfHwga2V5ID09PSAnY29uc3RydWN0b3InIHx8IGtleSA9PT0gJ3Byb3RvdHlwZScpIHtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgaWYgKGluZGV4ICE9IGxhc3RJbmRleCkge1xuICAgICAgdmFyIG9ialZhbHVlID0gbmVzdGVkW2tleV07XG4gICAgICBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXIgPyBjdXN0b21pemVyKG9ialZhbHVlLCBrZXksIG5lc3RlZCkgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXdWYWx1ZSA9IGlzT2JqZWN0KG9ialZhbHVlKVxuICAgICAgICAgID8gb2JqVmFsdWVcbiAgICAgICAgICA6IChpc0luZGV4KHBhdGhbaW5kZXggKyAxXSkgPyBbXSA6IHt9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgYXNzaWduVmFsdWUobmVzdGVkLCBrZXksIG5ld1ZhbHVlKTtcbiAgICBuZXN0ZWQgPSBuZXN0ZWRba2V5XTtcbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTZXQ7XG4iLCJ2YXIgYmFzZVNldCA9IHJlcXVpcmUoJy4vX2Jhc2VTZXQnKTtcblxuLyoqXG4gKiBTZXRzIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuIElmIGEgcG9ydGlvbiBvZiBgcGF0aGAgZG9lc24ndCBleGlzdCxcbiAqIGl0J3MgY3JlYXRlZC4gQXJyYXlzIGFyZSBjcmVhdGVkIGZvciBtaXNzaW5nIGluZGV4IHByb3BlcnRpZXMgd2hpbGUgb2JqZWN0c1xuICogYXJlIGNyZWF0ZWQgZm9yIGFsbCBvdGhlciBtaXNzaW5nIHByb3BlcnRpZXMuIFVzZSBgXy5zZXRXaXRoYCB0byBjdXN0b21pemVcbiAqIGBwYXRoYCBjcmVhdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuNy4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gKlxuICogXy5zZXQob2JqZWN0LCAnYVswXS5iLmMnLCA0KTtcbiAqIGNvbnNvbGUubG9nKG9iamVjdC5hWzBdLmIuYyk7XG4gKiAvLyA9PiA0XG4gKlxuICogXy5zZXQob2JqZWN0LCBbJ3gnLCAnMCcsICd5JywgJ3onXSwgNSk7XG4gKiBjb25zb2xlLmxvZyhvYmplY3QueFswXS55LnopO1xuICogLy8gPT4gNVxuICovXG5mdW5jdGlvbiBzZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldDtcbiIsInZhciBhcnJheUVhY2ggPSByZXF1aXJlKCcuL19hcnJheUVhY2gnKSxcbiAgICBiYXNlQ3JlYXRlID0gcmVxdWlyZSgnLi9fYmFzZUNyZWF0ZScpLFxuICAgIGJhc2VGb3JPd24gPSByZXF1aXJlKCcuL19iYXNlRm9yT3duJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKipcbiAqIEFuIGFsdGVybmF0aXZlIHRvIGBfLnJlZHVjZWA7IHRoaXMgbWV0aG9kIHRyYW5zZm9ybXMgYG9iamVjdGAgdG8gYSBuZXdcbiAqIGBhY2N1bXVsYXRvcmAgb2JqZWN0IHdoaWNoIGlzIHRoZSByZXN1bHQgb2YgcnVubmluZyBlYWNoIG9mIGl0cyBvd25cbiAqIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgdGhydSBgaXRlcmF0ZWVgLCB3aXRoIGVhY2ggaW52b2NhdGlvblxuICogcG90ZW50aWFsbHkgbXV0YXRpbmcgdGhlIGBhY2N1bXVsYXRvcmAgb2JqZWN0LiBJZiBgYWNjdW11bGF0b3JgIGlzIG5vdFxuICogcHJvdmlkZWQsIGEgbmV3IG9iamVjdCB3aXRoIHRoZSBzYW1lIGBbW1Byb3RvdHlwZV1dYCB3aWxsIGJlIHVzZWQuIFRoZVxuICogaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIGZvdXIgYXJndW1lbnRzOiAoYWNjdW11bGF0b3IsIHZhbHVlLCBrZXksIG9iamVjdCkuXG4gKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAxLjMuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBjdXN0b20gYWNjdW11bGF0b3IgdmFsdWUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udHJhbnNmb3JtKFsyLCAzLCA0XSwgZnVuY3Rpb24ocmVzdWx0LCBuKSB7XG4gKiAgIHJlc3VsdC5wdXNoKG4gKj0gbik7XG4gKiAgIHJldHVybiBuICUgMiA9PSAwO1xuICogfSwgW10pO1xuICogLy8gPT4gWzQsIDldXG4gKlxuICogXy50cmFuc2Zvcm0oeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAxIH0sIGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICogICAocmVzdWx0W3ZhbHVlXSB8fCAocmVzdWx0W3ZhbHVlXSA9IFtdKSkucHVzaChrZXkpO1xuICogfSwge30pO1xuICogLy8gPT4geyAnMSc6IFsnYScsICdjJ10sICcyJzogWydiJ10gfVxuICovXG5mdW5jdGlvbiB0cmFuc2Zvcm0ob2JqZWN0LCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheShvYmplY3QpLFxuICAgICAgaXNBcnJMaWtlID0gaXNBcnIgfHwgaXNCdWZmZXIob2JqZWN0KSB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KTtcblxuICBpdGVyYXRlZSA9IGJhc2VJdGVyYXRlZShpdGVyYXRlZSwgNCk7XG4gIGlmIChhY2N1bXVsYXRvciA9PSBudWxsKSB7XG4gICAgdmFyIEN0b3IgPSBvYmplY3QgJiYgb2JqZWN0LmNvbnN0cnVjdG9yO1xuICAgIGlmIChpc0Fyckxpa2UpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaXNBcnIgPyBuZXcgQ3RvciA6IFtdO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc09iamVjdChvYmplY3QpKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGlzRnVuY3Rpb24oQ3RvcikgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKSA6IHt9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGFjY3VtdWxhdG9yID0ge307XG4gICAgfVxuICB9XG4gIChpc0Fyckxpa2UgPyBhcnJheUVhY2ggOiBiYXNlRm9yT3duKShvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gICAgcmV0dXJuIGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXgsIG9iamVjdCk7XG4gIH0pO1xuICByZXR1cm4gYWNjdW11bGF0b3I7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdHJhbnNmb3JtO1xuIiwidmFyIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXNzaWduVmFsdWVgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgYXNzaWduXG4gKiBgdW5kZWZpbmVkYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgaWYgKCh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmICFlcShvYmplY3Rba2V5XSwgdmFsdWUpKSB8fFxuICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc2lnbk1lcmdlVmFsdWU7XG4iLCJ2YXIgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzQXJyYXlMaWtlYCBleGNlcHQgdGhhdCBpdCBhbHNvIGNoZWNrcyBpZiBgdmFsdWVgXG4gKiBpcyBhbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXktbGlrZSBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaXNBcnJheUxpa2UodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXlMaWtlT2JqZWN0O1xuIiwiLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCwgdW5sZXNzIGBrZXlgIGlzIFwiX19wcm90b19fXCIgb3IgXCJjb25zdHJ1Y3RvclwiLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gc2FmZUdldChvYmplY3QsIGtleSkge1xuICBpZiAoa2V5ID09PSAnY29uc3RydWN0b3InICYmIHR5cGVvZiBvYmplY3Rba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChrZXkgPT0gJ19fcHJvdG9fXycpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICByZXR1cm4gb2JqZWN0W2tleV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2FmZUdldDtcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHBsYWluIG9iamVjdCBmbGF0dGVuaW5nIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZ1xuICoga2V5ZWQgcHJvcGVydGllcyBvZiBgdmFsdWVgIHRvIG93biBwcm9wZXJ0aWVzIG9mIHRoZSBwbGFpbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgcGxhaW4gb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmFzc2lnbih7ICdhJzogMSB9LCBuZXcgRm9vKTtcbiAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICpcbiAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIF8udG9QbGFpbk9iamVjdChuZXcgRm9vKSk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfVxuICovXG5mdW5jdGlvbiB0b1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBjb3B5T2JqZWN0KHZhbHVlLCBrZXlzSW4odmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1BsYWluT2JqZWN0O1xuIiwidmFyIGFzc2lnbk1lcmdlVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25NZXJnZVZhbHVlJyksXG4gICAgY2xvbmVCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUJ1ZmZlcicpLFxuICAgIGNsb25lVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vX2Nsb25lVHlwZWRBcnJheScpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGluaXRDbG9uZU9iamVjdCA9IHJlcXVpcmUoJy4vX2luaXRDbG9uZU9iamVjdCcpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0FycmF5TGlrZU9iamVjdCA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2VPYmplY3QnKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNQbGFpbk9iamVjdCA9IHJlcXVpcmUoJy4vaXNQbGFpbk9iamVjdCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5JyksXG4gICAgc2FmZUdldCA9IHJlcXVpcmUoJy4vX3NhZmVHZXQnKSxcbiAgICB0b1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi90b1BsYWluT2JqZWN0Jyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlTWVyZ2VgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAqIGRlZXAgbWVyZ2VzIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gKiByZWZlcmVuY2VzIHRvIGJlIG1lcmdlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gbWVyZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gbWVyZ2VGdW5jIFRoZSBmdW5jdGlvbiB0byBtZXJnZSB2YWx1ZXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICogIGNvdW50ZXJwYXJ0cy5cbiAqL1xuZnVuY3Rpb24gYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgbWVyZ2VGdW5jLCBjdXN0b21pemVyLCBzdGFjaykge1xuICB2YXIgb2JqVmFsdWUgPSBzYWZlR2V0KG9iamVjdCwga2V5KSxcbiAgICAgIHNyY1ZhbHVlID0gc2FmZUdldChzb3VyY2UsIGtleSksXG4gICAgICBzdGFja2VkID0gc3RhY2suZ2V0KHNyY1ZhbHVlKTtcblxuICBpZiAoc3RhY2tlZCkge1xuICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIHN0YWNrZWQpO1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgPyBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgIDogdW5kZWZpbmVkO1xuXG4gIHZhciBpc0NvbW1vbiA9IG5ld1ZhbHVlID09PSB1bmRlZmluZWQ7XG5cbiAgaWYgKGlzQ29tbW9uKSB7XG4gICAgdmFyIGlzQXJyID0gaXNBcnJheShzcmNWYWx1ZSksXG4gICAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiBpc0J1ZmZlcihzcmNWYWx1ZSksXG4gICAgICAgIGlzVHlwZWQgPSAhaXNBcnIgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkoc3JjVmFsdWUpO1xuXG4gICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICBpZiAoaXNBcnIgfHwgaXNCdWZmIHx8IGlzVHlwZWQpIHtcbiAgICAgIGlmIChpc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNBcnJheUxpa2VPYmplY3Qob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gY29weUFycmF5KG9ialZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGlzQnVmZikge1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBuZXdWYWx1ZSA9IGNsb25lQnVmZmVyKHNyY1ZhbHVlLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGlzVHlwZWQpIHtcbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgbmV3VmFsdWUgPSBjbG9uZVR5cGVkQXJyYXkoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIG5ld1ZhbHVlID0gW107XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzUGxhaW5PYmplY3Qoc3JjVmFsdWUpIHx8IGlzQXJndW1lbnRzKHNyY1ZhbHVlKSkge1xuICAgICAgbmV3VmFsdWUgPSBvYmpWYWx1ZTtcbiAgICAgIGlmIChpc0FyZ3VtZW50cyhvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSB0b1BsYWluT2JqZWN0KG9ialZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKCFpc09iamVjdChvYmpWYWx1ZSkgfHwgaXNGdW5jdGlvbihvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBpbml0Q2xvbmVPYmplY3Qoc3JjVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIGlmIChpc0NvbW1vbikge1xuICAgIC8vIFJlY3Vyc2l2ZWx5IG1lcmdlIG9iamVjdHMgYW5kIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHN0YWNrLnNldChzcmNWYWx1ZSwgbmV3VmFsdWUpO1xuICAgIG1lcmdlRnVuYyhuZXdWYWx1ZSwgc3JjVmFsdWUsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgc3RhY2tbJ2RlbGV0ZSddKHNyY1ZhbHVlKTtcbiAgfVxuICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1lcmdlRGVlcDtcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgYXNzaWduTWVyZ2VWYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnbk1lcmdlVmFsdWUnKSxcbiAgICBiYXNlRm9yID0gcmVxdWlyZSgnLi9fYmFzZUZvcicpLFxuICAgIGJhc2VNZXJnZURlZXAgPSByZXF1aXJlKCcuL19iYXNlTWVyZ2VEZWVwJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKSxcbiAgICBzYWZlR2V0ID0gcmVxdWlyZSgnLi9fc2FmZUdldCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1lcmdlYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgbWVyZ2VkIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gKiAgY291bnRlcnBhcnRzLlxuICovXG5mdW5jdGlvbiBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjaykge1xuICBpZiAob2JqZWN0ID09PSBzb3VyY2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYmFzZUZvcihzb3VyY2UsIGZ1bmN0aW9uKHNyY1ZhbHVlLCBrZXkpIHtcbiAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgIGlmIChpc09iamVjdChzcmNWYWx1ZSkpIHtcbiAgICAgIGJhc2VNZXJnZURlZXAob2JqZWN0LCBzb3VyY2UsIGtleSwgc3JjSW5kZXgsIGJhc2VNZXJnZSwgY3VzdG9taXplciwgc3RhY2spO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgICAgPyBjdXN0b21pemVyKHNhZmVHZXQob2JqZWN0LCBrZXkpLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9XG4gIH0sIGtleXNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1lcmdlO1xuIiwidmFyIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpLFxuICAgIG92ZXJSZXN0ID0gcmVxdWlyZSgnLi9fb3ZlclJlc3QnKSxcbiAgICBzZXRUb1N0cmluZyA9IHJlcXVpcmUoJy4vX3NldFRvU3RyaW5nJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVzdGAgd2hpY2ggZG9lc24ndCB2YWxpZGF0ZSBvciBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VSZXN0KGZ1bmMsIHN0YXJ0KSB7XG4gIHJldHVybiBzZXRUb1N0cmluZyhvdmVyUmVzdChmdW5jLCBzdGFydCwgaWRlbnRpdHkpLCBmdW5jICsgJycpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VSZXN0O1xuIiwidmFyIGVxID0gcmVxdWlyZSgnLi9lcScpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4JyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIHZhbHVlIGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBpbmRleCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIGluZGV4IG9yIGtleSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgb2JqZWN0IGFyZ3VtZW50LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSXRlcmF0ZWVDYWxsKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdHlwZSA9IHR5cGVvZiBpbmRleDtcbiAgaWYgKHR5cGUgPT0gJ251bWJlcidcbiAgICAgICAgPyAoaXNBcnJheUxpa2Uob2JqZWN0KSAmJiBpc0luZGV4KGluZGV4LCBvYmplY3QubGVuZ3RoKSlcbiAgICAgICAgOiAodHlwZSA9PSAnc3RyaW5nJyAmJiBpbmRleCBpbiBvYmplY3QpXG4gICAgICApIHtcbiAgICByZXR1cm4gZXEob2JqZWN0W2luZGV4XSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0l0ZXJhdGVlQ2FsbDtcbiIsInZhciBiYXNlUmVzdCA9IHJlcXVpcmUoJy4vX2Jhc2VSZXN0JyksXG4gICAgaXNJdGVyYXRlZUNhbGwgPSByZXF1aXJlKCcuL19pc0l0ZXJhdGVlQ2FsbCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmFzc2lnbmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbmVyIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYXNzaWduZXIgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUFzc2lnbmVyKGFzc2lnbmVyKSB7XG4gIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gc291cmNlcy5sZW5ndGgsXG4gICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPiAxID8gc291cmNlc1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICAgIGN1c3RvbWl6ZXIgPSAoYXNzaWduZXIubGVuZ3RoID4gMyAmJiB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nKVxuICAgICAgPyAobGVuZ3RoLS0sIGN1c3RvbWl6ZXIpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPCAzID8gdW5kZWZpbmVkIDogY3VzdG9taXplcjtcbiAgICAgIGxlbmd0aCA9IDE7XG4gICAgfVxuICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgIGFzc2lnbmVyKG9iamVjdCwgc291cmNlLCBpbmRleCwgY3VzdG9taXplcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Q7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUFzc2lnbmVyO1xuIiwidmFyIGJhc2VNZXJnZSA9IHJlcXVpcmUoJy4vX2Jhc2VNZXJnZScpLFxuICAgIGNyZWF0ZUFzc2lnbmVyID0gcmVxdWlyZSgnLi9fY3JlYXRlQXNzaWduZXInKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbmAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgbWVyZ2VzIG93biBhbmRcbiAqIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIHNvdXJjZSBvYmplY3RzIGludG8gdGhlXG4gKiBkZXN0aW5hdGlvbiBvYmplY3QuIFNvdXJjZSBwcm9wZXJ0aWVzIHRoYXQgcmVzb2x2ZSB0byBgdW5kZWZpbmVkYCBhcmVcbiAqIHNraXBwZWQgaWYgYSBkZXN0aW5hdGlvbiB2YWx1ZSBleGlzdHMuIEFycmF5IGFuZCBwbGFpbiBvYmplY3QgcHJvcGVydGllc1xuICogYXJlIG1lcmdlZCByZWN1cnNpdmVseS4gT3RoZXIgb2JqZWN0cyBhbmQgdmFsdWUgdHlwZXMgYXJlIG92ZXJyaWRkZW4gYnlcbiAqIGFzc2lnbm1lbnQuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC4gU3Vic2VxdWVudFxuICogc291cmNlcyBvdmVyd3JpdGUgcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgc291cmNlcy5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuNS4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7XG4gKiAgICdhJzogW3sgJ2InOiAyIH0sIHsgJ2QnOiA0IH1dXG4gKiB9O1xuICpcbiAqIHZhciBvdGhlciA9IHtcbiAqICAgJ2EnOiBbeyAnYyc6IDMgfSwgeyAnZSc6IDUgfV1cbiAqIH07XG4gKlxuICogXy5tZXJnZShvYmplY3QsIG90aGVyKTtcbiAqIC8vID0+IHsgJ2EnOiBbeyAnYic6IDIsICdjJzogMyB9LCB7ICdkJzogNCwgJ2UnOiA1IH1dIH1cbiAqL1xudmFyIG1lcmdlID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KSB7XG4gIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gbWVyZ2U7XG4iLCJ2YXIgYmFzZUZsYXR0ZW4gPSByZXF1aXJlKCcuL19iYXNlRmxhdHRlbicpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwO1xuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IGZsYXR0ZW5zIGBhcnJheWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5mbGF0dGVuRGVlcChbMSwgWzIsIFszLCBbNF1dLCA1XV0pO1xuICogLy8gPT4gWzEsIDIsIDMsIDQsIDVdXG4gKi9cbmZ1bmN0aW9uIGZsYXR0ZW5EZWVwKGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgcmV0dXJuIGxlbmd0aCA/IGJhc2VGbGF0dGVuKGFycmF5LCBJTkZJTklUWSkgOiBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmbGF0dGVuRGVlcDtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmluZEluZGV4YCBhbmQgYF8uZmluZExhc3RJbmRleGAgd2l0aG91dFxuICogc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBiYXNlRmluZEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCwgZnJvbVJpZ2h0KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICBpbmRleCA9IGZyb21JbmRleCArIChmcm9tUmlnaHQgPyAxIDogLTEpO1xuXG4gIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGaW5kSW5kZXg7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmFOYCB3aXRob3V0IHN1cHBvcnQgZm9yIG51bWJlciBvYmplY3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hTih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT09IHZhbHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc05hTjtcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmluZGV4T2ZgIHdoaWNoIHBlcmZvcm1zIHN0cmljdCBlcXVhbGl0eVxuICogY29tcGFyaXNvbnMgb2YgdmFsdWVzLCBpLmUuIGA9PT1gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIHN0cmljdEluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGluZGV4ID0gZnJvbUluZGV4IC0gMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChhcnJheVtpbmRleF0gPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpY3RJbmRleE9mO1xuIiwidmFyIGJhc2VGaW5kSW5kZXggPSByZXF1aXJlKCcuL19iYXNlRmluZEluZGV4JyksXG4gICAgYmFzZUlzTmFOID0gcmVxdWlyZSgnLi9fYmFzZUlzTmFOJyksXG4gICAgc3RyaWN0SW5kZXhPZiA9IHJlcXVpcmUoJy4vX3N0cmljdEluZGV4T2YnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbmRleE9mYCB3aXRob3V0IGBmcm9tSW5kZXhgIGJvdW5kcyBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZVxuICAgID8gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleClcbiAgICA6IGJhc2VGaW5kSW5kZXgoYXJyYXksIGJhc2VJc05hTiwgZnJvbUluZGV4KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSW5kZXhPZjtcbiIsInZhciBiYXNlSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Jhc2VJbmRleE9mJyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmluY2x1ZGVzYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIHNwZWNpZnlpbmcgYW4gaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHRhcmdldCBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdGFyZ2V0YCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBhcnJheUluY2x1ZGVzKGFycmF5LCB2YWx1ZSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIHJldHVybiAhIWxlbmd0aCAmJiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIDApID4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlJbmNsdWRlcztcbiIsIi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhcnJheUluY2x1ZGVzYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGEgY29tcGFyYXRvci5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyYXRvciBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB0YXJnZXRgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5SW5jbHVkZXNXaXRoKGFycmF5LCB2YWx1ZSwgY29tcGFyYXRvcikge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGNvbXBhcmF0b3IodmFsdWUsIGFycmF5W2luZGV4XSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlJbmNsdWRlc1dpdGg7XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYHVuZGVmaW5lZGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBleGFtcGxlXG4gKlxuICogXy50aW1lcygyLCBfLm5vb3ApO1xuICogLy8gPT4gW3VuZGVmaW5lZCwgdW5kZWZpbmVkXVxuICovXG5mdW5jdGlvbiBub29wKCkge1xuICAvLyBObyBvcGVyYXRpb24gcGVyZm9ybWVkLlxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5vb3A7XG4iLCJ2YXIgU2V0ID0gcmVxdWlyZSgnLi9fU2V0JyksXG4gICAgbm9vcCA9IHJlcXVpcmUoJy4vbm9vcCcpLFxuICAgIHNldFRvQXJyYXkgPSByZXF1aXJlKCcuL19zZXRUb0FycmF5Jyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDA7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNldCBvYmplY3Qgb2YgYHZhbHVlc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFkZCB0byB0aGUgc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IHNldC5cbiAqL1xudmFyIGNyZWF0ZVNldCA9ICEoU2V0ICYmICgxIC8gc2V0VG9BcnJheShuZXcgU2V0KFssLTBdKSlbMV0pID09IElORklOSVRZKSA/IG5vb3AgOiBmdW5jdGlvbih2YWx1ZXMpIHtcbiAgcmV0dXJuIG5ldyBTZXQodmFsdWVzKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlU2V0O1xuIiwidmFyIFNldENhY2hlID0gcmVxdWlyZSgnLi9fU2V0Q2FjaGUnKSxcbiAgICBhcnJheUluY2x1ZGVzID0gcmVxdWlyZSgnLi9fYXJyYXlJbmNsdWRlcycpLFxuICAgIGFycmF5SW5jbHVkZXNXaXRoID0gcmVxdWlyZSgnLi9fYXJyYXlJbmNsdWRlc1dpdGgnKSxcbiAgICBjYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2NhY2hlSGFzJyksXG4gICAgY3JlYXRlU2V0ID0gcmVxdWlyZSgnLi9fY3JlYXRlU2V0JyksXG4gICAgc2V0VG9BcnJheSA9IHJlcXVpcmUoJy4vX3NldFRvQXJyYXknKTtcblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmlxQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZVVuaXEoYXJyYXksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgaXNDb21tb24gPSB0cnVlLFxuICAgICAgcmVzdWx0ID0gW10sXG4gICAgICBzZWVuID0gcmVzdWx0O1xuXG4gIGlmIChjb21wYXJhdG9yKSB7XG4gICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXNXaXRoO1xuICB9XG4gIGVsc2UgaWYgKGxlbmd0aCA+PSBMQVJHRV9BUlJBWV9TSVpFKSB7XG4gICAgdmFyIHNldCA9IGl0ZXJhdGVlID8gbnVsbCA6IGNyZWF0ZVNldChhcnJheSk7XG4gICAgaWYgKHNldCkge1xuICAgICAgcmV0dXJuIHNldFRvQXJyYXkoc2V0KTtcbiAgICB9XG4gICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICBpbmNsdWRlcyA9IGNhY2hlSGFzO1xuICAgIHNlZW4gPSBuZXcgU2V0Q2FjaGU7XG4gIH1cbiAgZWxzZSB7XG4gICAgc2VlbiA9IGl0ZXJhdGVlID8gW10gOiByZXN1bHQ7XG4gIH1cbiAgb3V0ZXI6XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICBpZiAoaXNDb21tb24gJiYgY29tcHV0ZWQgPT09IGNvbXB1dGVkKSB7XG4gICAgICB2YXIgc2VlbkluZGV4ID0gc2Vlbi5sZW5ndGg7XG4gICAgICB3aGlsZSAoc2VlbkluZGV4LS0pIHtcbiAgICAgICAgaWYgKHNlZW5bc2VlbkluZGV4XSA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGl0ZXJhdGVlKSB7XG4gICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKCFpbmNsdWRlcyhzZWVuLCBjb21wdXRlZCwgY29tcGFyYXRvcikpIHtcbiAgICAgIGlmIChzZWVuICE9PSByZXN1bHQpIHtcbiAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVW5pcTtcbiIsInZhciBiYXNlVW5pcSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmlxJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGR1cGxpY2F0ZS1mcmVlIHZlcnNpb24gb2YgYW4gYXJyYXksIHVzaW5nXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLCBpbiB3aGljaCBvbmx5IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGVhY2ggZWxlbWVudFxuICogaXMga2VwdC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1clxuICogaW4gdGhlIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy51bmlxKFsyLCAxLCAyXSk7XG4gKiAvLyA9PiBbMiwgMV1cbiAqL1xuZnVuY3Rpb24gdW5pcShhcnJheSkge1xuICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlVW5pcShhcnJheSkgOiBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB1bmlxO1xuIiwidmFyIGJhc2VDbG9uZSA9IHJlcXVpcmUoJy4vX2Jhc2VDbG9uZScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBjbG9uaW5nLiAqL1xudmFyIENMT05FX0RFRVBfRkxBRyA9IDEsXG4gICAgQ0xPTkVfU1lNQk9MU19GTEFHID0gNDtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmNsb25lYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBjbG9uZXMgYHZhbHVlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVjdXJzaXZlbHkgY2xvbmUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZGVlcCBjbG9uZWQgdmFsdWUuXG4gKiBAc2VlIF8uY2xvbmVcbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbeyAnYSc6IDEgfSwgeyAnYic6IDIgfV07XG4gKlxuICogdmFyIGRlZXAgPSBfLmNsb25lRGVlcChvYmplY3RzKTtcbiAqIGNvbnNvbGUubG9nKGRlZXBbMF0gPT09IG9iamVjdHNbMF0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gY2xvbmVEZWVwKHZhbHVlKSB7XG4gIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVEZWVwO1xuIiwidmFyIGJhc2VFYWNoID0gcmVxdWlyZSgnLi9fYmFzZUVhY2gnKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXBgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZU1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pID8gQXJyYXkoY29sbGVjdGlvbi5sZW5ndGgpIDogW107XG5cbiAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgIHJlc3VsdFsrK2luZGV4XSA9IGl0ZXJhdGVlKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWFwO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zb3J0QnlgIHdoaWNoIHVzZXMgYGNvbXBhcmVyYCB0byBkZWZpbmUgdGhlXG4gKiBzb3J0IG9yZGVyIG9mIGBhcnJheWAgYW5kIHJlcGxhY2VzIGNyaXRlcmlhIG9iamVjdHMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nXG4gKiB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyZXIgVGhlIGZ1bmN0aW9uIHRvIGRlZmluZSBzb3J0IG9yZGVyLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VTb3J0QnkoYXJyYXksIGNvbXBhcmVyKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgYXJyYXkuc29ydChjb21wYXJlcik7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGFycmF5W2xlbmd0aF0gPSBhcnJheVtsZW5ndGhdLnZhbHVlO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlU29ydEJ5O1xuIiwidmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKipcbiAqIENvbXBhcmVzIHZhbHVlcyB0byBzb3J0IHRoZW0gaW4gYXNjZW5kaW5nIG9yZGVyLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHNvcnQgb3JkZXIgaW5kaWNhdG9yIGZvciBgdmFsdWVgLlxuICovXG5mdW5jdGlvbiBjb21wYXJlQXNjZW5kaW5nKHZhbHVlLCBvdGhlcikge1xuICBpZiAodmFsdWUgIT09IG90aGVyKSB7XG4gICAgdmFyIHZhbElzRGVmaW5lZCA9IHZhbHVlICE9PSB1bmRlZmluZWQsXG4gICAgICAgIHZhbElzTnVsbCA9IHZhbHVlID09PSBudWxsLFxuICAgICAgICB2YWxJc1JlZmxleGl2ZSA9IHZhbHVlID09PSB2YWx1ZSxcbiAgICAgICAgdmFsSXNTeW1ib2wgPSBpc1N5bWJvbCh2YWx1ZSk7XG5cbiAgICB2YXIgb3RoSXNEZWZpbmVkID0gb3RoZXIgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgb3RoSXNOdWxsID0gb3RoZXIgPT09IG51bGwsXG4gICAgICAgIG90aElzUmVmbGV4aXZlID0gb3RoZXIgPT09IG90aGVyLFxuICAgICAgICBvdGhJc1N5bWJvbCA9IGlzU3ltYm9sKG90aGVyKTtcblxuICAgIGlmICgoIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wgJiYgIXZhbElzU3ltYm9sICYmIHZhbHVlID4gb3RoZXIpIHx8XG4gICAgICAgICh2YWxJc1N5bWJvbCAmJiBvdGhJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUgJiYgIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wpIHx8XG4gICAgICAgICh2YWxJc051bGwgJiYgb3RoSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAoIXZhbElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgIXZhbElzUmVmbGV4aXZlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgaWYgKCghdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCAmJiAhb3RoSXNTeW1ib2wgJiYgdmFsdWUgPCBvdGhlcikgfHxcbiAgICAgICAgKG90aElzU3ltYm9sICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSAmJiAhdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCkgfHxcbiAgICAgICAgKG90aElzTnVsbCAmJiB2YWxJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICghb3RoSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAhb3RoSXNSZWZsZXhpdmUpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcGFyZUFzY2VuZGluZztcbiIsInZhciBjb21wYXJlQXNjZW5kaW5nID0gcmVxdWlyZSgnLi9fY29tcGFyZUFzY2VuZGluZycpO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8ub3JkZXJCeWAgdG8gY29tcGFyZSBtdWx0aXBsZSBwcm9wZXJ0aWVzIG9mIGEgdmFsdWUgdG8gYW5vdGhlclxuICogYW5kIHN0YWJsZSBzb3J0IHRoZW0uXG4gKlxuICogSWYgYG9yZGVyc2AgaXMgdW5zcGVjaWZpZWQsIGFsbCB2YWx1ZXMgYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIuIE90aGVyd2lzZSxcbiAqIHNwZWNpZnkgYW4gb3JkZXIgb2YgXCJkZXNjXCIgZm9yIGRlc2NlbmRpbmcgb3IgXCJhc2NcIiBmb3IgYXNjZW5kaW5nIHNvcnQgb3JkZXJcbiAqIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW5bXXxzdHJpbmdbXX0gb3JkZXJzIFRoZSBvcmRlciB0byBzb3J0IGJ5IGZvciBlYWNoIHByb3BlcnR5LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc29ydCBvcmRlciBpbmRpY2F0b3IgZm9yIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgb2JqQ3JpdGVyaWEgPSBvYmplY3QuY3JpdGVyaWEsXG4gICAgICBvdGhDcml0ZXJpYSA9IG90aGVyLmNyaXRlcmlhLFxuICAgICAgbGVuZ3RoID0gb2JqQ3JpdGVyaWEubGVuZ3RoLFxuICAgICAgb3JkZXJzTGVuZ3RoID0gb3JkZXJzLmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciByZXN1bHQgPSBjb21wYXJlQXNjZW5kaW5nKG9iakNyaXRlcmlhW2luZGV4XSwgb3RoQ3JpdGVyaWFbaW5kZXhdKTtcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICBpZiAoaW5kZXggPj0gb3JkZXJzTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICB2YXIgb3JkZXIgPSBvcmRlcnNbaW5kZXhdO1xuICAgICAgcmV0dXJuIHJlc3VsdCAqIChvcmRlciA9PSAnZGVzYycgPyAtMSA6IDEpO1xuICAgIH1cbiAgfVxuICAvLyBGaXhlcyBhbiBgQXJyYXkjc29ydGAgYnVnIGluIHRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgYXBwbGljYXRpb25zXG4gIC8vIHRoYXQgY2F1c2VzIGl0LCB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMsIHRvIHByb3ZpZGUgdGhlIHNhbWUgdmFsdWUgZm9yXG4gIC8vIGBvYmplY3RgIGFuZCBgb3RoZXJgLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2phc2hrZW5hcy91bmRlcnNjb3JlL3B1bGwvMTI0N1xuICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAvL1xuICAvLyBUaGlzIGFsc28gZW5zdXJlcyBhIHN0YWJsZSBzb3J0IGluIFY4IGFuZCBvdGhlciBlbmdpbmVzLlxuICAvLyBTZWUgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9OTAgZm9yIG1vcmUgZGV0YWlscy5cbiAgcmV0dXJuIG9iamVjdC5pbmRleCAtIG90aGVyLmluZGV4O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBhcmVNdWx0aXBsZTtcbiIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBiYXNlTWFwID0gcmVxdWlyZSgnLi9fYmFzZU1hcCcpLFxuICAgIGJhc2VTb3J0QnkgPSByZXF1aXJlKCcuL19iYXNlU29ydEJ5JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgY29tcGFyZU11bHRpcGxlID0gcmVxdWlyZSgnLi9fY29tcGFyZU11bHRpcGxlJyksXG4gICAgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5JyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm9yZGVyQnlgIHdpdGhvdXQgcGFyYW0gZ3VhcmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9uW118T2JqZWN0W118c3RyaW5nW119IGl0ZXJhdGVlcyBUaGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBvcmRlcnMgVGhlIHNvcnQgb3JkZXJzIG9mIGBpdGVyYXRlZXNgLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc29ydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBpdGVyYXRlZXMsIG9yZGVycykge1xuICBpZiAoaXRlcmF0ZWVzLmxlbmd0aCkge1xuICAgIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgIGlmIChpc0FycmF5KGl0ZXJhdGVlKSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gYmFzZUdldCh2YWx1ZSwgaXRlcmF0ZWUubGVuZ3RoID09PSAxID8gaXRlcmF0ZWVbMF0gOiBpdGVyYXRlZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVyYXRlZTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBpdGVyYXRlZXMgPSBbaWRlbnRpdHldO1xuICB9XG5cbiAgdmFyIGluZGV4ID0gLTE7XG4gIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcywgYmFzZVVuYXJ5KGJhc2VJdGVyYXRlZSkpO1xuXG4gIHZhciByZXN1bHQgPSBiYXNlTWFwKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICB2YXIgY3JpdGVyaWEgPSBhcnJheU1hcChpdGVyYXRlZXMsIGZ1bmN0aW9uKGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gaXRlcmF0ZWUodmFsdWUpO1xuICAgIH0pO1xuICAgIHJldHVybiB7ICdjcml0ZXJpYSc6IGNyaXRlcmlhLCAnaW5kZXgnOiArK2luZGV4LCAndmFsdWUnOiB2YWx1ZSB9O1xuICB9KTtcblxuICByZXR1cm4gYmFzZVNvcnRCeShyZXN1bHQsIGZ1bmN0aW9uKG9iamVjdCwgb3RoZXIpIHtcbiAgICByZXR1cm4gY29tcGFyZU11bHRpcGxlKG9iamVjdCwgb3RoZXIsIG9yZGVycyk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VPcmRlckJ5O1xuIiwidmFyIGJhc2VGbGF0dGVuID0gcmVxdWlyZSgnLi9fYmFzZUZsYXR0ZW4nKSxcbiAgICBiYXNlT3JkZXJCeSA9IHJlcXVpcmUoJy4vX2Jhc2VPcmRlckJ5JyksXG4gICAgYmFzZVJlc3QgPSByZXF1aXJlKCcuL19iYXNlUmVzdCcpLFxuICAgIGlzSXRlcmF0ZWVDYWxsID0gcmVxdWlyZSgnLi9faXNJdGVyYXRlZUNhbGwnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzLCBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IHRoZSByZXN1bHRzIG9mXG4gKiBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBhIGNvbGxlY3Rpb24gdGhydSBlYWNoIGl0ZXJhdGVlLiBUaGlzIG1ldGhvZFxuICogcGVyZm9ybXMgYSBzdGFibGUgc29ydCwgdGhhdCBpcywgaXQgcHJlc2VydmVzIHRoZSBvcmlnaW5hbCBzb3J0IG9yZGVyIG9mXG4gKiBlcXVhbCBlbGVtZW50cy4gVGhlIGl0ZXJhdGVlcyBhcmUgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtpdGVyYXRlZXM9W18uaWRlbnRpdHldXVxuICogIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0OCB9LFxuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9LFxuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiAzMCB9LFxuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNCB9XG4gKiBdO1xuICpcbiAqIF8uc29ydEJ5KHVzZXJzLCBbZnVuY3Rpb24obykgeyByZXR1cm4gby51c2VyOyB9XSk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAzNl0sIFsnYmFybmV5JywgMzRdLCBbJ2ZyZWQnLCA0OF0sIFsnZnJlZCcsIDMwXV1cbiAqXG4gKiBfLnNvcnRCeSh1c2VycywgWyd1c2VyJywgJ2FnZSddKTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM0XSwgWydiYXJuZXknLCAzNl0sIFsnZnJlZCcsIDMwXSwgWydmcmVkJywgNDhdXVxuICovXG52YXIgc29ydEJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWVzKSB7XG4gIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgdmFyIGxlbmd0aCA9IGl0ZXJhdGVlcy5sZW5ndGg7XG4gIGlmIChsZW5ndGggPiAxICYmIGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIGl0ZXJhdGVlc1swXSwgaXRlcmF0ZWVzWzFdKSkge1xuICAgIGl0ZXJhdGVlcyA9IFtdO1xuICB9IGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaXNJdGVyYXRlZUNhbGwoaXRlcmF0ZWVzWzBdLCBpdGVyYXRlZXNbMV0sIGl0ZXJhdGVlc1syXSkpIHtcbiAgICBpdGVyYXRlZXMgPSBbaXRlcmF0ZWVzWzBdXTtcbiAgfVxuICByZXR1cm4gYmFzZU9yZGVyQnkoY29sbGVjdGlvbiwgYmFzZUZsYXR0ZW4oaXRlcmF0ZWVzLCAxKSwgW10pO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gc29ydEJ5O1xuIiwidmFyIGJhc2VVbmlxID0gcmVxdWlyZSgnLi9fYmFzZVVuaXEnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGNvbXBhcmF0b3JgIHdoaWNoXG4gKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5YC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXNcbiAqIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5LlRoZSBjb21wYXJhdG9yIGlzIGludm9rZWRcbiAqIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gKlxuICogXy51bmlxV2l0aChvYmplY3RzLCBfLmlzRXF1YWwpO1xuICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XVxuICovXG5mdW5jdGlvbiB1bmlxV2l0aChhcnJheSwgY29tcGFyYXRvcikge1xuICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VVbmlxKGFycmF5LCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpIDogW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdW5pcVdpdGg7XG4iLCJ2YXIgYmFzZVJlc3QgPSByZXF1aXJlKCcuL19iYXNlUmVzdCcpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpLFxuICAgIGlzSXRlcmF0ZWVDYWxsID0gcmVxdWlyZSgnLi9faXNJdGVyYXRlZUNhbGwnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEFzc2lnbnMgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2VcbiAqIG9iamVjdHMgdG8gdGhlIGRlc3RpbmF0aW9uIG9iamVjdCBmb3IgYWxsIGRlc3RpbmF0aW9uIHByb3BlcnRpZXMgdGhhdFxuICogcmVzb2x2ZSB0byBgdW5kZWZpbmVkYC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICogT25jZSBhIHByb3BlcnR5IGlzIHNldCwgYWRkaXRpb25hbCB2YWx1ZXMgb2YgdGhlIHNhbWUgcHJvcGVydHkgYXJlIGlnbm9yZWQuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQHNlZSBfLmRlZmF1bHRzRGVlcFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKi9cbnZhciBkZWZhdWx0cyA9IGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcblxuICB2YXIgaW5kZXggPSAtMTtcbiAgdmFyIGxlbmd0aCA9IHNvdXJjZXMubGVuZ3RoO1xuICB2YXIgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc291cmNlc1swXSwgc291cmNlc1sxXSwgZ3VhcmQpKSB7XG4gICAgbGVuZ3RoID0gMTtcbiAgfVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHNvdXJjZSA9IHNvdXJjZXNbaW5kZXhdO1xuICAgIHZhciBwcm9wcyA9IGtleXNJbihzb3VyY2UpO1xuICAgIHZhciBwcm9wc0luZGV4ID0gLTE7XG4gICAgdmFyIHByb3BzTGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsrcHJvcHNJbmRleCA8IHByb3BzTGVuZ3RoKSB7XG4gICAgICB2YXIga2V5ID0gcHJvcHNbcHJvcHNJbmRleF07XG4gICAgICB2YXIgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAoZXEodmFsdWUsIG9iamVjdFByb3RvW2tleV0pICYmICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpIHtcbiAgICAgICAgb2JqZWN0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqZWN0O1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdHM7XG4iLCJ2YXIgU2V0Q2FjaGUgPSByZXF1aXJlKCcuL19TZXRDYWNoZScpLFxuICAgIGFycmF5SW5jbHVkZXMgPSByZXF1aXJlKCcuL19hcnJheUluY2x1ZGVzJyksXG4gICAgYXJyYXlJbmNsdWRlc1dpdGggPSByZXF1aXJlKCcuL19hcnJheUluY2x1ZGVzV2l0aCcpLFxuICAgIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBjYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2NhY2hlSGFzJyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNaW4gPSBNYXRoLm1pbjtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8uaW50ZXJzZWN0aW9uYCwgd2l0aG91dCBzdXBwb3J0XG4gKiBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgdGhhdCBhY2NlcHRzIGFuIGFycmF5IG9mIGFycmF5cyB0byBpbnNwZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheXMgVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2Ygc2hhcmVkIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUludGVyc2VjdGlvbihhcnJheXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gIHZhciBpbmNsdWRlcyA9IGNvbXBhcmF0b3IgPyBhcnJheUluY2x1ZGVzV2l0aCA6IGFycmF5SW5jbHVkZXMsXG4gICAgICBsZW5ndGggPSBhcnJheXNbMF0ubGVuZ3RoLFxuICAgICAgb3RoTGVuZ3RoID0gYXJyYXlzLmxlbmd0aCxcbiAgICAgIG90aEluZGV4ID0gb3RoTGVuZ3RoLFxuICAgICAgY2FjaGVzID0gQXJyYXkob3RoTGVuZ3RoKSxcbiAgICAgIG1heExlbmd0aCA9IEluZmluaXR5LFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgd2hpbGUgKG90aEluZGV4LS0pIHtcbiAgICB2YXIgYXJyYXkgPSBhcnJheXNbb3RoSW5kZXhdO1xuICAgIGlmIChvdGhJbmRleCAmJiBpdGVyYXRlZSkge1xuICAgICAgYXJyYXkgPSBhcnJheU1hcChhcnJheSwgYmFzZVVuYXJ5KGl0ZXJhdGVlKSk7XG4gICAgfVxuICAgIG1heExlbmd0aCA9IG5hdGl2ZU1pbihhcnJheS5sZW5ndGgsIG1heExlbmd0aCk7XG4gICAgY2FjaGVzW290aEluZGV4XSA9ICFjb21wYXJhdG9yICYmIChpdGVyYXRlZSB8fCAobGVuZ3RoID49IDEyMCAmJiBhcnJheS5sZW5ndGggPj0gMTIwKSlcbiAgICAgID8gbmV3IFNldENhY2hlKG90aEluZGV4ICYmIGFycmF5KVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cbiAgYXJyYXkgPSBhcnJheXNbMF07XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBzZWVuID0gY2FjaGVzWzBdO1xuXG4gIG91dGVyOlxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCAmJiByZXN1bHQubGVuZ3RoIDwgbWF4TGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICBpZiAoIShzZWVuXG4gICAgICAgICAgPyBjYWNoZUhhcyhzZWVuLCBjb21wdXRlZClcbiAgICAgICAgICA6IGluY2x1ZGVzKHJlc3VsdCwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgICkpIHtcbiAgICAgIG90aEluZGV4ID0gb3RoTGVuZ3RoO1xuICAgICAgd2hpbGUgKC0tb3RoSW5kZXgpIHtcbiAgICAgICAgdmFyIGNhY2hlID0gY2FjaGVzW290aEluZGV4XTtcbiAgICAgICAgaWYgKCEoY2FjaGVcbiAgICAgICAgICAgICAgPyBjYWNoZUhhcyhjYWNoZSwgY29tcHV0ZWQpXG4gICAgICAgICAgICAgIDogaW5jbHVkZXMoYXJyYXlzW290aEluZGV4XSwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzZWVuKSB7XG4gICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUludGVyc2VjdGlvbjtcbiIsInZhciBpc0FycmF5TGlrZU9iamVjdCA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2VPYmplY3QnKTtcblxuLyoqXG4gKiBDYXN0cyBgdmFsdWVgIHRvIGFuIGVtcHR5IGFycmF5IGlmIGl0J3Mgbm90IGFuIGFycmF5IGxpa2Ugb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyB0aGUgY2FzdCBhcnJheS1saWtlIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gY2FzdEFycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpID8gdmFsdWUgOiBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYXN0QXJyYXlMaWtlT2JqZWN0O1xuIiwidmFyIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBiYXNlSW50ZXJzZWN0aW9uID0gcmVxdWlyZSgnLi9fYmFzZUludGVyc2VjdGlvbicpLFxuICAgIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBjYXN0QXJyYXlMaWtlT2JqZWN0ID0gcmVxdWlyZSgnLi9fY2FzdEFycmF5TGlrZU9iamVjdCcpLFxuICAgIGxhc3QgPSByZXF1aXJlKCcuL2xhc3QnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmludGVyc2VjdGlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmBcbiAqIHdoaWNoIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlzYC4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzXG4gKiBvZiByZXN1bHQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGNvbXBhcmF0b3IgaXNcbiAqIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gKiB2YXIgb3RoZXJzID0gW3sgJ3gnOiAxLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMiB9XTtcbiAqXG4gKiBfLmludGVyc2VjdGlvbldpdGgob2JqZWN0cywgb3RoZXJzLCBfLmlzRXF1YWwpO1xuICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfV1cbiAqL1xudmFyIGludGVyc2VjdGlvbldpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KGFycmF5cyksXG4gICAgICBtYXBwZWQgPSBhcnJheU1hcChhcnJheXMsIGNhc3RBcnJheUxpa2VPYmplY3QpO1xuXG4gIGNvbXBhcmF0b3IgPSB0eXBlb2YgY29tcGFyYXRvciA9PSAnZnVuY3Rpb24nID8gY29tcGFyYXRvciA6IHVuZGVmaW5lZDtcbiAgaWYgKGNvbXBhcmF0b3IpIHtcbiAgICBtYXBwZWQucG9wKCk7XG4gIH1cbiAgcmV0dXJuIChtYXBwZWQubGVuZ3RoICYmIG1hcHBlZFswXSA9PT0gYXJyYXlzWzBdKVxuICAgID8gYmFzZUludGVyc2VjdGlvbihtYXBwZWQsIHVuZGVmaW5lZCwgY29tcGFyYXRvcilcbiAgICA6IFtdO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gaW50ZXJzZWN0aW9uV2l0aDtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBib29sZWFuIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBib29sZWFuLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNCb29sZWFuKGZhbHNlKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQm9vbGVhbihudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYm9vbFRhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNCb29sZWFuO1xuIiwidmFyIGlzRXF1YWwgPSByZXF1aXJlKCdsb2Rhc2gvaXNFcXVhbCcpXG52YXIgc29ydEJ5ID0gcmVxdWlyZSgnbG9kYXNoL3NvcnRCeScpXG52YXIgdW5pcSA9IHJlcXVpcmUoJ2xvZGFzaC91bmlxJylcbnZhciB1bmlxV2l0aCA9IHJlcXVpcmUoJ2xvZGFzaC91bmlxV2l0aCcpXG52YXIgZGVmYXVsdHMgPSByZXF1aXJlKCdsb2Rhc2gvZGVmYXVsdHMnKVxudmFyIGludGVyc2VjdGlvbldpdGggPSByZXF1aXJlKCdsb2Rhc2gvaW50ZXJzZWN0aW9uV2l0aCcpXG52YXIgaXNQbGFpbk9iamVjdCA9IHJlcXVpcmUoJ2xvZGFzaC9pc1BsYWluT2JqZWN0JylcbnZhciBpc0Jvb2xlYW4gPSByZXF1aXJlKCdsb2Rhc2gvaXNCb29sZWFuJylcblxudmFyIG5vcm1hbGl6ZUFycmF5ID0gdmFsID0+IEFycmF5LmlzQXJyYXkodmFsKVxuICA/IHZhbCA6IFt2YWxdXG52YXIgdW5kZWYgPSB2YWwgPT4gdmFsID09PSB1bmRlZmluZWRcbnZhciBrZXlzID0gb2JqID0+IGlzUGxhaW5PYmplY3Qob2JqKSB8fCBBcnJheS5pc0FycmF5KG9iaikgPyBPYmplY3Qua2V5cyhvYmopIDogW11cbnZhciBoYXMgPSAob2JqLCBrZXkpID0+IG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpXG52YXIgc3RyaW5nQXJyYXkgPSBhcnIgPT4gc29ydEJ5KHVuaXEoYXJyKSlcbnZhciB1bmRlZkVtcHR5ID0gdmFsID0+IHVuZGVmKHZhbCkgfHwgKEFycmF5LmlzQXJyYXkodmFsKSAmJiB2YWwubGVuZ3RoID09PSAwKVxudmFyIGtleVZhbEVxdWFsID0gKGEsIGIsIGtleSwgY29tcGFyZSkgPT4gYiAmJiBoYXMoYiwga2V5KSAmJiBhICYmIGhhcyhhLCBrZXkpICYmIGNvbXBhcmUoYVtrZXldLCBiW2tleV0pXG52YXIgdW5kZWZBbmRaZXJvID0gKGEsIGIpID0+ICh1bmRlZihhKSAmJiBiID09PSAwKSB8fCAodW5kZWYoYikgJiYgYSA9PT0gMCkgfHwgaXNFcXVhbChhLCBiKVxudmFyIGZhbHNlVW5kZWZpbmVkID0gKGEsIGIpID0+ICh1bmRlZihhKSAmJiBiID09PSBmYWxzZSkgfHwgKHVuZGVmKGIpICYmIGEgPT09IGZhbHNlKSB8fCBpc0VxdWFsKGEsIGIpXG52YXIgZW1wdHlTY2hlbWEgPSBzY2hlbWEgPT4gdW5kZWYoc2NoZW1hKSB8fCBpc0VxdWFsKHNjaGVtYSwge30pIHx8IHNjaGVtYSA9PT0gdHJ1ZVxudmFyIGVtcHR5T2JqVW5kZWYgPSBzY2hlbWEgPT4gdW5kZWYoc2NoZW1hKSB8fCBpc0VxdWFsKHNjaGVtYSwge30pXG52YXIgaXNTY2hlbWEgPSB2YWwgPT4gdW5kZWYodmFsKSB8fCBpc1BsYWluT2JqZWN0KHZhbCkgfHwgdmFsID09PSB0cnVlIHx8IHZhbCA9PT0gZmFsc2VcblxuZnVuY3Rpb24gdW5kZWZBcnJheUVxdWFsKGEsIGIpIHtcbiAgaWYgKHVuZGVmRW1wdHkoYSkgJiYgdW5kZWZFbXB0eShiKSkge1xuICAgIHJldHVybiB0cnVlXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGlzRXF1YWwoc3RyaW5nQXJyYXkoYSksIHN0cmluZ0FycmF5KGIpKVxuICB9XG59XG5cbmZ1bmN0aW9uIHVuc29ydGVkTm9ybWFsaXplZEFycmF5KGEsIGIpIHtcbiAgYSA9IG5vcm1hbGl6ZUFycmF5KGEpXG4gIGIgPSBub3JtYWxpemVBcnJheShiKVxuICByZXR1cm4gaXNFcXVhbChzdHJpbmdBcnJheShhKSwgc3RyaW5nQXJyYXkoYikpXG59XG5cbmZ1bmN0aW9uIHNjaGVtYUdyb3VwKGEsIGIsIGtleSwgY29tcGFyZSkge1xuICB2YXIgYWxsUHJvcHMgPSB1bmlxKGtleXMoYSkuY29uY2F0KGtleXMoYikpKVxuICBpZiAoZW1wdHlPYmpVbmRlZihhKSAmJiBlbXB0eU9ialVuZGVmKGIpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfSBlbHNlIGlmIChlbXB0eU9ialVuZGVmKGEpICYmIGtleXMoYikubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH0gZWxzZSBpZiAoZW1wdHlPYmpVbmRlZihiKSAmJiBrZXlzKGEpLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIGFsbFByb3BzLmV2ZXJ5KGZ1bmN0aW9uKGtleSkge1xuICAgIHZhciBhVmFsID0gYVtrZXldXG4gICAgdmFyIGJWYWwgPSBiW2tleV1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShhVmFsKSAmJiBBcnJheS5pc0FycmF5KGJWYWwpKSB7XG4gICAgICByZXR1cm4gaXNFcXVhbChzdHJpbmdBcnJheShhKSwgc3RyaW5nQXJyYXkoYikpXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFWYWwpICYmICFBcnJheS5pc0FycmF5KGJWYWwpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYlZhbCkgJiYgIUFycmF5LmlzQXJyYXkoYVZhbCkpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICByZXR1cm4ga2V5VmFsRXF1YWwoYSwgYiwga2V5LCBjb21wYXJlKVxuICB9KVxufVxuXG5mdW5jdGlvbiBpdGVtcyhhLCBiLCBrZXksIGNvbXBhcmUpIHtcbiAgaWYgKGlzUGxhaW5PYmplY3QoYSkgJiYgaXNQbGFpbk9iamVjdChiKSkge1xuICAgIHJldHVybiBjb21wYXJlKGEsIGIpXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhKSAmJiBBcnJheS5pc0FycmF5KGIpKSB7XG4gICAgcmV0dXJuIHNjaGVtYUdyb3VwKGEsIGIsIGtleSwgY29tcGFyZSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaXNFcXVhbChhLCBiKVxuICB9XG59XG5cbmZ1bmN0aW9uIHVuc29ydGVkQXJyYXkoYSwgYiwga2V5LCBjb21wYXJlKSB7XG4gIHZhciB1bmlxdWVBID0gdW5pcVdpdGgoYSwgY29tcGFyZSlcbiAgdmFyIHVuaXF1ZUIgPSB1bmlxV2l0aChiLCBjb21wYXJlKVxuICB2YXIgaW50ZXIgPSBpbnRlcnNlY3Rpb25XaXRoKHVuaXF1ZUEsIHVuaXF1ZUIsIGNvbXBhcmUpXG4gIHJldHVybiBpbnRlci5sZW5ndGggPT09IE1hdGgubWF4KHVuaXF1ZUEubGVuZ3RoLCB1bmlxdWVCLmxlbmd0aClcbn1cblxudmFyIGNvbXBhcmVycyA9IHtcbiAgdGl0bGU6IGlzRXF1YWwsXG4gIHVuaXF1ZUl0ZW1zOiBmYWxzZVVuZGVmaW5lZCxcbiAgbWluTGVuZ3RoOiB1bmRlZkFuZFplcm8sXG4gIG1pbkl0ZW1zOiB1bmRlZkFuZFplcm8sXG4gIG1pblByb3BlcnRpZXM6IHVuZGVmQW5kWmVybyxcbiAgcmVxdWlyZWQ6IHVuZGVmQXJyYXlFcXVhbCxcbiAgZW51bTogdW5kZWZBcnJheUVxdWFsLFxuICB0eXBlOiB1bnNvcnRlZE5vcm1hbGl6ZWRBcnJheSxcbiAgaXRlbXM6IGl0ZW1zLFxuICBhbnlPZjogdW5zb3J0ZWRBcnJheSxcbiAgYWxsT2Y6IHVuc29ydGVkQXJyYXksXG4gIG9uZU9mOiB1bnNvcnRlZEFycmF5LFxuICBwcm9wZXJ0aWVzOiBzY2hlbWFHcm91cCxcbiAgcGF0dGVyblByb3BlcnRpZXM6IHNjaGVtYUdyb3VwLFxuICBkZXBlbmRlbmNpZXM6IHNjaGVtYUdyb3VwXG59XG5cbnZhciBhY2NlcHRzVW5kZWZpbmVkID0gW1xuICAncHJvcGVydGllcycsXG4gICdwYXR0ZXJuUHJvcGVydGllcycsXG4gICdkZXBlbmRlbmNpZXMnLFxuICAndW5pcXVlSXRlbXMnLFxuICAnbWluTGVuZ3RoJyxcbiAgJ21pbkl0ZW1zJyxcbiAgJ21pblByb3BlcnRpZXMnLFxuICAncmVxdWlyZWQnXG5dXG5cbnZhciBzY2hlbWFQcm9wcyA9IFsnYWRkaXRpb25hbFByb3BlcnRpZXMnLCAnYWRkaXRpb25hbEl0ZW1zJywgJ2NvbnRhaW5zJywgJ3Byb3BlcnR5TmFtZXMnLCAnbm90J11cblxuZnVuY3Rpb24gY29tcGFyZShhLCBiLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBkZWZhdWx0cyhvcHRpb25zLCB7XG4gICAgaWdub3JlOiBbXVxuICB9KVxuXG4gIGlmIChlbXB0eVNjaGVtYShhKSAmJiBlbXB0eVNjaGVtYShiKSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpZiAoIWlzU2NoZW1hKGEpIHx8ICFpc1NjaGVtYShiKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRWl0aGVyIG9mIHRoZSB2YWx1ZXMgYXJlIG5vdCBhIEpTT04gc2NoZW1hLicpXG4gIH1cbiAgaWYgKGEgPT09IGIpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaWYgKGlzQm9vbGVhbihhKSAmJiBpc0Jvb2xlYW4oYikpIHtcbiAgICByZXR1cm4gYSA9PT0gYlxuICB9XG5cbiAgaWYgKChhID09PSB1bmRlZmluZWQgJiYgYiA9PT0gZmFsc2UpIHx8IChiID09PSB1bmRlZmluZWQgJiYgYSA9PT0gZmFsc2UpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBpZiAoKHVuZGVmKGEpICYmICF1bmRlZihiKSkgfHwgKCF1bmRlZihhKSAmJiB1bmRlZihiKSkpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHZhciBhbGxLZXlzID0gdW5pcShPYmplY3Qua2V5cyhhKS5jb25jYXQoT2JqZWN0LmtleXMoYikpKVxuXG4gIGlmIChvcHRpb25zLmlnbm9yZS5sZW5ndGgpIHtcbiAgICBhbGxLZXlzID0gYWxsS2V5cy5maWx0ZXIoayA9PiBvcHRpb25zLmlnbm9yZS5pbmRleE9mKGspID09PSAtMSlcbiAgfVxuXG4gIGlmICghYWxsS2V5cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgZnVuY3Rpb24gaW5uZXJDb21wYXJlKGEsIGIpIHtcbiAgICByZXR1cm4gY29tcGFyZShhLCBiLCBvcHRpb25zKVxuICB9XG5cbiAgcmV0dXJuIGFsbEtleXMuZXZlcnkoZnVuY3Rpb24oa2V5KSB7XG4gICAgdmFyIGFWYWx1ZSA9IGFba2V5XVxuICAgIHZhciBiVmFsdWUgPSBiW2tleV1cblxuICAgIGlmIChzY2hlbWFQcm9wcy5pbmRleE9mKGtleSkgIT09IC0xKSB7XG4gICAgICByZXR1cm4gY29tcGFyZShhVmFsdWUsIGJWYWx1ZSwgb3B0aW9ucylcbiAgICB9XG5cbiAgICB2YXIgY29tcGFyZXIgPSBjb21wYXJlcnNba2V5XVxuICAgIGlmICghY29tcGFyZXIpIHtcbiAgICAgIGNvbXBhcmVyID0gaXNFcXVhbFxuICAgIH1cblxuICAgIC8vIGRvIHNpbXBsZSBsb2Rhc2ggY2hlY2sgZmlyc3RcbiAgICBpZiAoaXNFcXVhbChhVmFsdWUsIGJWYWx1ZSkpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgaWYgKGFjY2VwdHNVbmRlZmluZWQuaW5kZXhPZihrZXkpID09PSAtMSkge1xuICAgICAgaWYgKCghaGFzKGEsIGtleSkgJiYgaGFzKGIsIGtleSkpIHx8IChoYXMoYSwga2V5KSAmJiAhaGFzKGIsIGtleSkpKSB7XG4gICAgICAgIHJldHVybiBhVmFsdWUgPT09IGJWYWx1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXN1bHQgPSBjb21wYXJlcihhVmFsdWUsIGJWYWx1ZSwga2V5LCBpbm5lckNvbXBhcmUpXG4gICAgaWYgKCFpc0Jvb2xlYW4ocmVzdWx0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21wYXJlciBtdXN0IHJldHVybiB0cnVlIG9yIGZhbHNlJylcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBhcmVcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4qIEZVTkNUSU9OOiBpc0FycmF5KCB2YWx1ZSApXG4qXHRWYWxpZGF0ZXMgaWYgYSB2YWx1ZSBpcyBhbiBhcnJheS5cbipcbiogQHBhcmFtIHsqfSB2YWx1ZSAtIHZhbHVlIHRvIGJlIHZhbGlkYXRlZFxuKiBAcmV0dXJucyB7Qm9vbGVhbn0gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdmFsdWUgaXMgYW4gYXJyYXlcbiovXG5mdW5jdGlvbiBpc0FycmF5KCB2YWx1ZSApIHtcblx0cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCggdmFsdWUgKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbn0gLy8gZW5kIEZVTkNUSU9OIGlzQXJyYXkoKVxuXG4vLyBFWFBPUlRTIC8vXG5cbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBpc0FycmF5O1xuIiwiLyoqXG4qXG4qXHRWQUxJREFURTogbnVtYmVyXG4qXG4qXG4qXHRERVNDUklQVElPTjpcbipcdFx0LSBWYWxpZGF0ZXMgaWYgYSB2YWx1ZSBpcyBhIG51bWJlci5cbipcbipcbipcdE5PVEVTOlxuKlx0XHRbMV1cbipcbipcbipcdFRPRE86XG4qXHRcdFsxXVxuKlxuKlxuKlx0TElDRU5TRTpcbipcdFx0TUlUXG4qXG4qXHRDb3B5cmlnaHQgKGMpIDIwMTQuIEF0aGFuIFJlaW5lcy5cbipcbipcbipcdEFVVEhPUjpcbipcdFx0QXRoYW4gUmVpbmVzLiBrZ3J5dGVAZ21haWwuY29tLiAyMDE0LlxuKlxuKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiogRlVOQ1RJT046IGlzTnVtYmVyKCB2YWx1ZSApXG4qXHRWYWxpZGF0ZXMgaWYgYSB2YWx1ZSBpcyBhIG51bWJlci5cbipcbiogQHBhcmFtIHsqfSB2YWx1ZSAtIHZhbHVlIHRvIGJlIHZhbGlkYXRlZFxuKiBAcmV0dXJucyB7Qm9vbGVhbn0gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdmFsdWUgaXMgYSBudW1iZXJcbiovXG5mdW5jdGlvbiBpc051bWJlciggdmFsdWUgKSB7XG5cdHJldHVybiAoIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKCB2YWx1ZSApID09PSAnW29iamVjdCBOdW1iZXJdJyApICYmIHZhbHVlLnZhbHVlT2YoKSA9PT0gdmFsdWUudmFsdWVPZigpO1xufSAvLyBlbmQgRlVOQ1RJT04gaXNOdW1iZXIoKVxuXG5cbi8vIEVYUE9SVFMgLy9cblxubW9kdWxlLmV4cG9ydHMgPSBpc051bWJlcjtcbiIsIi8qKlxuKlxuKlx0VkFMSURBVEU6IGludGVnZXJcbipcbipcbipcdERFU0NSSVBUSU9OOlxuKlx0XHQtIFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGFuIGludGVnZXIuXG4qXG4qXG4qXHROT1RFUzpcbipcdFx0WzFdXG4qXG4qXG4qXHRUT0RPOlxuKlx0XHRbMV1cbipcbipcbipcdExJQ0VOU0U6XG4qXHRcdE1JVFxuKlxuKlx0Q29weXJpZ2h0IChjKSAyMDE0LiBBdGhhbiBSZWluZXMuXG4qXG4qXG4qXHRBVVRIT1I6XG4qXHRcdEF0aGFuIFJlaW5lcy4ga2dyeXRlQGdtYWlsLmNvbS4gMjAxNC5cbipcbiovXG5cbid1c2Ugc3RyaWN0JztcblxuLy8gTU9EVUxFUyAvL1xuXG52YXIgaXNOdW1iZXIgPSByZXF1aXJlKCAndmFsaWRhdGUuaW8tbnVtYmVyJyApO1xuXG5cbi8vIElTSU5URUdFUiAvL1xuXG4vKipcbiogRlVOQ1RJT046IGlzSW50ZWdlciggdmFsdWUgKVxuKlx0VmFsaWRhdGVzIGlmIGEgdmFsdWUgaXMgYW4gaW50ZWdlci5cbipcbiogQHBhcmFtIHtOdW1iZXJ9IHZhbHVlIC0gdmFsdWUgdG8gYmUgdmFsaWRhdGVkXG4qIEByZXR1cm5zIHtCb29sZWFufSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB2YWx1ZSBpcyBhbiBpbnRlZ2VyXG4qL1xuZnVuY3Rpb24gaXNJbnRlZ2VyKCB2YWx1ZSApIHtcblx0cmV0dXJuIGlzTnVtYmVyKCB2YWx1ZSApICYmIHZhbHVlJTEgPT09IDA7XG59IC8vIGVuZCBGVU5DVElPTiBpc0ludGVnZXIoKVxuXG5cbi8vIEVYUE9SVFMgLy9cblxubW9kdWxlLmV4cG9ydHMgPSBpc0ludGVnZXI7XG4iLCIvKipcbipcbipcdFZBTElEQVRFOiBpbnRlZ2VyLWFycmF5XG4qXG4qXG4qXHRERVNDUklQVElPTjpcbipcdFx0LSBWYWxpZGF0ZXMgaWYgYSB2YWx1ZSBpcyBhbiBpbnRlZ2VyIGFycmF5LlxuKlxuKlxuKlx0Tk9URVM6XG4qXHRcdFsxXVxuKlxuKlxuKlx0VE9ETzpcbipcdFx0WzFdXG4qXG4qXG4qXHRMSUNFTlNFOlxuKlx0XHRNSVRcbipcbipcdENvcHlyaWdodCAoYykgMjAxNS4gQXRoYW4gUmVpbmVzLlxuKlxuKlxuKlx0QVVUSE9SOlxuKlx0XHRBdGhhbiBSZWluZXMuIGtncnl0ZUBnbWFpbC5jb20uIDIwMTUuXG4qXG4qL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8vIE1PRFVMRVMgLy9cblxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCAndmFsaWRhdGUuaW8tYXJyYXknICksXG5cdGlzSW50ZWdlciA9IHJlcXVpcmUoICd2YWxpZGF0ZS5pby1pbnRlZ2VyJyApO1xuXG5cbi8vIElTIElOVEVHRVIgQVJSQVkgLy9cblxuLyoqXG4qIEZVTkNUSU9OOiBpc0ludGVnZXJBcnJheSggdmFsdWUgKVxuKlx0VmFsaWRhdGVzIGlmIGEgdmFsdWUgaXMgYW4gaW50ZWdlciBhcnJheS5cbipcbiogQHBhcmFtIHsqfSB2YWx1ZSAtIHZhbHVlIHRvIGJlIHZhbGlkYXRlZFxuKiBAcmV0dXJucyB7Qm9vbGVhbn0gYm9vbGVhbiBpbmRpY2F0aW5nIGlmIGEgdmFsdWUgaXMgYW4gaW50ZWdlciBhcnJheVxuKi9cbmZ1bmN0aW9uIGlzSW50ZWdlckFycmF5KCB2YWx1ZSApIHtcblx0dmFyIGxlbjtcblx0aWYgKCAhaXNBcnJheSggdmFsdWUgKSApIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0bGVuID0gdmFsdWUubGVuZ3RoO1xuXHRpZiAoICFsZW4gKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdGZvciAoIHZhciBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGlmICggIWlzSW50ZWdlciggdmFsdWVbaV0gKSApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHRydWU7XG59IC8vIGVuZCBGVU5DVElPTiBpc0ludGVnZXJBcnJheSgpXG5cblxuLy8gRVhQT1JUUyAvL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSW50ZWdlckFycmF5O1xuIiwiLyoqXG4qXG4qXHRWQUxJREFURTogZnVuY3Rpb25cbipcbipcbipcdERFU0NSSVBUSU9OOlxuKlx0XHQtIFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGEgZnVuY3Rpb24uXG4qXG4qXG4qXHROT1RFUzpcbipcdFx0WzFdXG4qXG4qXG4qXHRUT0RPOlxuKlx0XHRbMV1cbipcbipcbipcdExJQ0VOU0U6XG4qXHRcdE1JVFxuKlxuKlx0Q29weXJpZ2h0IChjKSAyMDE0LiBBdGhhbiBSZWluZXMuXG4qXG4qXG4qXHRBVVRIT1I6XG4qXHRcdEF0aGFuIFJlaW5lcy4ga2dyeXRlQGdtYWlsLmNvbS4gMjAxNC5cbipcbiovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4qIEZVTkNUSU9OOiBpc0Z1bmN0aW9uKCB2YWx1ZSApXG4qXHRWYWxpZGF0ZXMgaWYgYSB2YWx1ZSBpcyBhIGZ1bmN0aW9uLlxuKlxuKiBAcGFyYW0geyp9IHZhbHVlIC0gdmFsdWUgdG8gYmUgdmFsaWRhdGVkXG4qIEByZXR1cm5zIHtCb29sZWFufSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB2YWx1ZSBpcyBhIGZ1bmN0aW9uXG4qL1xuZnVuY3Rpb24gaXNGdW5jdGlvbiggdmFsdWUgKSB7XG5cdHJldHVybiAoIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyApO1xufSAvLyBlbmQgRlVOQ1RJT04gaXNGdW5jdGlvbigpXG5cblxuLy8gRVhQT1JUUyAvL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRnVuY3Rpb247XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIE1PRFVMRVMgLy9cblxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCAndmFsaWRhdGUuaW8tYXJyYXknICksXG5cdGlzSW50ZWdlckFycmF5ID0gcmVxdWlyZSggJ3ZhbGlkYXRlLmlvLWludGVnZXItYXJyYXknICksXG5cdGlzRnVuY3Rpb24gPSByZXF1aXJlKCAndmFsaWRhdGUuaW8tZnVuY3Rpb24nICk7XG5cblxuLy8gVkFSSUFCTEVTIC8vXG5cbnZhciBNQVhJTlQgPSBNYXRoLnBvdyggMiwgMzEgKSAtIDE7XG5cblxuLy8gRlVOQ1RJT05TIC8vXG5cbi8qKlxuKiBGVU5DVElPTjogZ2NkKCBhLCBiIClcbipcdENvbXB1dGVzIHRoZSBncmVhdGVzdCBjb21tb24gZGl2aXNvciBvZiB0d28gaW50ZWdlcnMgYGFgIGFuZCBgYmAsIHVzaW5nIHRoZSBiaW5hcnkgR0NEIGFsZ29yaXRobS5cbipcbiogQHBhcmFtIHtOdW1iZXJ9IGEgLSBpbnRlZ2VyXG4qIEBwYXJhbSB7TnVtYmVyfSBiIC0gaW50ZWdlclxuKiBAcmV0dXJucyB7TnVtYmVyfSBncmVhdGVzdCBjb21tb24gZGl2aXNvclxuKi9cbmZ1bmN0aW9uIGdjZCggYSwgYiApIHtcblx0dmFyIGsgPSAxLFxuXHRcdHQ7XG5cdC8vIFNpbXBsZSBjYXNlczpcblx0aWYgKCBhID09PSAwICkge1xuXHRcdHJldHVybiBiO1xuXHR9XG5cdGlmICggYiA9PT0gMCApIHtcblx0XHRyZXR1cm4gYTtcblx0fVxuXHQvLyBSZWR1Y2UgYGFgIGFuZC9vciBgYmAgdG8gb2RkIG51bWJlcnMgYW5kIGtlZXAgdHJhY2sgb2YgdGhlIGdyZWF0ZXN0IHBvd2VyIG9mIDIgZGl2aWRpbmcgYm90aCBgYWAgYW5kIGBiYC4uLlxuXHR3aGlsZSAoIGElMiA9PT0gMCAmJiBiJTIgPT09IDAgKSB7XG5cdFx0YSA9IGEgLyAyOyAvLyByaWdodCBzaGlmdFxuXHRcdGIgPSBiIC8gMjsgLy8gcmlnaHQgc2hpZnRcblx0XHRrID0gayAqIDI7IC8vIGxlZnQgc2hpZnRcblx0fVxuXHQvLyBSZWR1Y2UgYGFgIHRvIGFuIG9kZCBudW1iZXIuLi5cblx0d2hpbGUgKCBhJTIgPT09IDAgKSB7XG5cdFx0YSA9IGEgLyAyOyAvLyByaWdodCBzaGlmdFxuXHR9XG5cdC8vIEhlbmNlZm9ydGgsIGBhYCBpcyBhbHdheXMgb2RkLi4uXG5cdHdoaWxlICggYiApIHtcblx0XHQvLyBSZW1vdmUgYWxsIGZhY3RvcnMgb2YgMiBpbiBgYmAsIGFzIHRoZXkgYXJlIG5vdCBjb21tb24uLi5cblx0XHR3aGlsZSAoIGIlMiA9PT0gMCApIHtcblx0XHRcdGIgPSBiIC8gMjsgLy8gcmlnaHQgc2hpZnRcblx0XHR9XG5cdFx0Ly8gYGFgIGFuZCBgYmAgYXJlIGJvdGggb2RkLiBTd2FwIHZhbHVlcyBzdWNoIHRoYXQgYGJgIGlzIHRoZSBsYXJnZXIgb2YgdGhlIHR3byB2YWx1ZXMsIGFuZCB0aGVuIHNldCBgYmAgdG8gdGhlIGRpZmZlcmVuY2UgKHdoaWNoIGlzIGV2ZW4pLi4uXG5cdFx0aWYgKCBhID4gYiApIHtcblx0XHRcdHQgPSBiO1xuXHRcdFx0YiA9IGE7XG5cdFx0XHRhID0gdDtcblx0XHR9XG5cdFx0YiA9IGIgLSBhOyAvLyBiPTAgaWZmIGI9YVxuXHR9XG5cdC8vIFJlc3RvcmUgY29tbW9uIGZhY3RvcnMgb2YgMi4uLlxuXHRyZXR1cm4gayAqIGE7XG59IC8vIGVuZCBGVU5DVElPTiBnY2QoKVxuXG4vKipcbiogRlVOQ1RJT046IGJpdHdpc2UoIGEsIGIgKVxuKlx0Q29tcHV0ZXMgdGhlIGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yIG9mIHR3byBpbnRlZ2VycyBgYWAgYW5kIGBiYCwgdXNpbmcgdGhlIGJpbmFyeSBHQ0QgYWxnb3JpdGhtIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnMuXG4qXG4qIEBwYXJhbSB7TnVtYmVyfSBhIC0gc2FmZSBpbnRlZ2VyXG4qIEBwYXJhbSB7TnVtYmVyfSBiIC0gc2FmZSBpbnRlZ2VyXG4qIEByZXR1cm5zIHtOdW1iZXJ9IGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yXG4qL1xuZnVuY3Rpb24gYml0d2lzZSggYSwgYiApIHtcblx0dmFyIGsgPSAwLFxuXHRcdHQ7XG5cdC8vIFNpbXBsZSBjYXNlczpcblx0aWYgKCBhID09PSAwICkge1xuXHRcdHJldHVybiBiO1xuXHR9XG5cdGlmICggYiA9PT0gMCApIHtcblx0XHRyZXR1cm4gYTtcblx0fVxuXHQvLyBSZWR1Y2UgYGFgIGFuZC9vciBgYmAgdG8gb2RkIG51bWJlcnMgYW5kIGtlZXAgdHJhY2sgb2YgdGhlIGdyZWF0ZXN0IHBvd2VyIG9mIDIgZGl2aWRpbmcgYm90aCBgYWAgYW5kIGBiYC4uLlxuXHR3aGlsZSAoIChhICYgMSkgPT09IDAgJiYgKGIgJiAxKSA9PT0gMCApIHtcblx0XHRhID4+Pj0gMTsgLy8gcmlnaHQgc2hpZnRcblx0XHRiID4+Pj0gMTsgLy8gcmlnaHQgc2hpZnRcblx0XHRrKys7XG5cdH1cblx0Ly8gUmVkdWNlIGBhYCB0byBhbiBvZGQgbnVtYmVyLi4uXG5cdHdoaWxlICggKGEgJiAxKSA9PT0gMCApIHtcblx0XHRhID4+Pj0gMTsgLy8gcmlnaHQgc2hpZnRcblx0fVxuXHQvLyBIZW5jZWZvcnRoLCBgYWAgaXMgYWx3YXlzIG9kZC4uLlxuXHR3aGlsZSAoIGIgKSB7XG5cdFx0Ly8gUmVtb3ZlIGFsbCBmYWN0b3JzIG9mIDIgaW4gYGJgLCBhcyB0aGV5IGFyZSBub3QgY29tbW9uLi4uXG5cdFx0d2hpbGUgKCAoYiAmIDEpID09PSAwICkge1xuXHRcdFx0YiA+Pj49IDE7IC8vIHJpZ2h0IHNoaWZ0XG5cdFx0fVxuXHRcdC8vIGBhYCBhbmQgYGJgIGFyZSBib3RoIG9kZC4gU3dhcCB2YWx1ZXMgc3VjaCB0aGF0IGBiYCBpcyB0aGUgbGFyZ2VyIG9mIHRoZSB0d28gdmFsdWVzLCBhbmQgdGhlbiBzZXQgYGJgIHRvIHRoZSBkaWZmZXJlbmNlICh3aGljaCBpcyBldmVuKS4uLlxuXHRcdGlmICggYSA+IGIgKSB7XG5cdFx0XHR0ID0gYjtcblx0XHRcdGIgPSBhO1xuXHRcdFx0YSA9IHQ7XG5cdFx0fVxuXHRcdGIgPSBiIC0gYTsgLy8gYj0wIGlmZiBiPWFcblx0fVxuXHQvLyBSZXN0b3JlIGNvbW1vbiBmYWN0b3JzIG9mIDIuLi5cblx0cmV0dXJuIGEgPDwgaztcbn0gLy8gZW5kIEZVTkNUSU9OIGJpdHdpc2UoKVxuXG5cbi8vIEdSRUFURVNUIENPTU1PTiBESVZJU09SIC8vXG5cbi8qKlxuKiBGVU5DVElPTjogY29tcHV0ZSggYXJyWywgY2xia10gKVxuKlx0Q29tcHV0ZXMgdGhlIGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yLlxuKlxuKiBAcGFyYW0ge051bWJlcltdfE51bWJlcn0gYXJyIC0gaW5wdXQgYXJyYXkgb2YgaW50ZWdlcnNcbiogQHBhcmFtIHtGdW5jdGlvbnxOdW1iZXJ9IFtjbGJrXSAtIGFjY2Vzc29yIGZ1bmN0aW9uIGZvciBhY2Nlc3NpbmcgYXJyYXkgdmFsdWVzXG4qIEByZXR1cm5zIHtOdW1iZXJ8TnVsbH0gZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3Igb3IgbnVsbFxuKi9cbmZ1bmN0aW9uIGNvbXB1dGUoKSB7XG5cdHZhciBuYXJncyA9IGFyZ3VtZW50cy5sZW5ndGgsXG5cdFx0YXJncyxcblx0XHRjbGJrLFxuXHRcdGFycixcblx0XHRsZW4sXG5cdFx0YSwgYixcblx0XHRpO1xuXG5cdC8vIENvcHkgdGhlIGlucHV0IGFyZ3VtZW50cyB0byBhbiBhcnJheS4uLlxuXHRhcmdzID0gbmV3IEFycmF5KCBuYXJncyApO1xuXHRmb3IgKCBpID0gMDsgaSA8IG5hcmdzOyBpKysgKSB7XG5cdFx0YXJnc1sgaSBdID0gYXJndW1lbnRzWyBpIF07XG5cdH1cblx0Ly8gSGF2ZSB3ZSBiZWVuIHByb3ZpZGVkIHdpdGggaW50ZWdlciBhcmd1bWVudHM/XG5cdGlmICggaXNJbnRlZ2VyQXJyYXkoIGFyZ3MgKSApIHtcblx0XHRpZiAoIG5hcmdzID09PSAyICkge1xuXHRcdFx0YSA9IGFyZ3NbIDAgXTtcblx0XHRcdGIgPSBhcmdzWyAxIF07XG5cdFx0XHRpZiAoIGEgPCAwICkge1xuXHRcdFx0XHRhID0gLWE7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGIgPCAwICkge1xuXHRcdFx0XHRiID0gLWI7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGEgPD0gTUFYSU5UICYmIGIgPD0gTUFYSU5UICkge1xuXHRcdFx0XHRyZXR1cm4gYml0d2lzZSggYSwgYiApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGdjZCggYSwgYiApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRhcnIgPSBhcmdzO1xuXHR9XG5cdC8vIElmIG5vdCBpbnRlZ2VycywgZW5zdXJlIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhbiBhcnJheS4uLlxuXHRlbHNlIGlmICggIWlzQXJyYXkoIGFyZ3NbIDAgXSApICkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoICdnY2QoKTo6aW52YWxpZCBpbnB1dCBhcmd1bWVudC4gTXVzdCBwcm92aWRlIGFuIGFycmF5IG9mIGludGVnZXJzLiBWYWx1ZTogYCcgKyBhcmdzWyAwIF0gKyAnYC4nICk7XG5cdH1cblx0Ly8gSGF2ZSB3ZSBiZWVuIHByb3ZpZGVkIHdpdGggbW9yZSB0aGFuIG9uZSBhcmd1bWVudD8gSWYgc28sIGVuc3VyZSB0aGF0IHRoZSBhY2Nlc3NvciBhcmd1bWVudCBpcyBhIGZ1bmN0aW9uLi4uXG5cdGVsc2UgaWYgKCBuYXJncyA+IDEgKSB7XG5cdFx0YXJyID0gYXJnc1sgMCBdO1xuXHRcdGNsYmsgPSBhcmdzWyAxIF07XG5cdFx0aWYgKCAhaXNGdW5jdGlvbiggY2xiayApICkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvciggJ2djZCgpOjppbnZhbGlkIGlucHV0IGFyZ3VtZW50LiBBY2Nlc3NvciBtdXN0IGJlIGEgZnVuY3Rpb24uIFZhbHVlOiBgJyArIGNsYmsgKyAnYC4nICk7XG5cdFx0fVxuXHR9XG5cdC8vIFdlIGhhdmUgYmVlbiBwcm92aWRlZCBhbiBhcnJheS4uLlxuXHRlbHNlIHtcblx0XHRhcnIgPSBhcmdzWyAwIF07XG5cdH1cblx0bGVuID0gYXJyLmxlbmd0aDtcblxuXHQvLyBDaGVjayBpZiBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIHZhbHVlcyBoYXZlIGJlZW4gcHJvdmlkZWQuLi5cblx0aWYgKCBsZW4gPCAyICkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cdC8vIElmIGFuIGFjY2Vzc29yIGlzIHByb3ZpZGVkLCBleHRyYWN0IHRoZSBhcnJheSB2YWx1ZXMuLi5cblx0aWYgKCBjbGJrICkge1xuXHRcdGEgPSBuZXcgQXJyYXkoIGxlbiApO1xuXHRcdGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRhWyBpIF0gPSBjbGJrKCBhcnJbIGkgXSwgaSApO1xuXHRcdH1cblx0XHRhcnIgPSBhO1xuXHR9XG5cdC8vIEdpdmVuIGFuIGlucHV0IGFycmF5LCBlbnN1cmUgYWxsIGFycmF5IHZhbHVlcyBhcmUgaW50ZWdlcnMuLi5cblx0aWYgKCBuYXJncyA8IDMgKSB7XG5cdFx0aWYgKCAhaXNJbnRlZ2VyQXJyYXkoIGFyciApICkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvciggJ2djZCgpOjppbnZhbGlkIGlucHV0IGFyZ3VtZW50LiBBY2Nlc3NlZCBhcnJheSB2YWx1ZXMgbXVzdCBiZSBpbnRlZ2Vycy4gVmFsdWU6IGAnICsgYXJyICsgJ2AuJyApO1xuXHRcdH1cblx0fVxuXHQvLyBDb252ZXJ0IGFueSBuZWdhdGl2ZSBpbnRlZ2VycyB0byBwb3NpdGl2ZSBpbnRlZ2Vycy4uLlxuXHRmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGEgPSBhcnJbIGkgXTtcblx0XHRpZiAoIGEgPCAwICkge1xuXHRcdFx0YXJyWyBpIF0gPSAtYTtcblx0XHR9XG5cdH1cblx0Ly8gRXhwbG9pdCB0aGUgZmFjdCB0aGF0IHRoZSBnY2QgaXMgYW4gYXNzb2NpYXRpdmUgZnVuY3Rpb24uLi5cblx0YSA9IGFyclsgMCBdO1xuXHRmb3IgKCBpID0gMTsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGIgPSBhcnJbIGkgXTtcblx0XHRpZiAoIGIgPD0gTUFYSU5UICYmIGEgPD0gTUFYSU5UICkge1xuXHRcdFx0YSA9IGJpdHdpc2UoIGEsIGIgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YSA9IGdjZCggYSwgYiApO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gYTtcbn0gLy8gZW5kIEZVTkNUSU9OIGNvbXB1dGUoKVxuXG5cbi8vIEVYUE9SVFMgLy9cblxubW9kdWxlLmV4cG9ydHMgPSBjb21wdXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyBNT0RVTEVTIC8vXG5cbnZhciBnY2QgPSByZXF1aXJlKCAnY29tcHV0ZS1nY2QnICksXG5cdGlzQXJyYXkgPSByZXF1aXJlKCAndmFsaWRhdGUuaW8tYXJyYXknICksXG5cdGlzSW50ZWdlckFycmF5ID0gcmVxdWlyZSggJ3ZhbGlkYXRlLmlvLWludGVnZXItYXJyYXknICksXG5cdGlzRnVuY3Rpb24gPSByZXF1aXJlKCAndmFsaWRhdGUuaW8tZnVuY3Rpb24nICk7XG5cblxuLy8gTEVBU1QgQ09NTU9OIE1VTFRJUExFIC8vXG5cbi8qKlxuKiBGVU5DVElPTjogbGNtKCBhcnJbLCBjbGJrXSApXG4qXHRDb21wdXRlcyB0aGUgbGVhc3QgY29tbW9uIG11bHRpcGxlIChsY20pLlxuKlxuKiBAcGFyYW0ge051bWJlcltdfE51bWJlcn0gYXJyIC0gaW5wdXQgYXJyYXkgb2YgaW50ZWdlcnNcbiogQHBhcmFtIHtGdW5jdGlvbnxOdW1iZXJ9IFthY2Nlc3Nvcl0gLSBhY2Nlc3NvciBmdW5jdGlvbiBmb3IgYWNjZXNzaW5nIGFycmF5IHZhbHVlc1xuKiBAcmV0dXJucyB7TnVtYmVyfE51bGx9IGxlYXN0IGNvbW1vbiBtdWx0aXBsZSBvciBudWxsXG4qL1xuZnVuY3Rpb24gbGNtKCkge1xuXHR2YXIgbmFyZ3MgPSBhcmd1bWVudHMubGVuZ3RoLFxuXHRcdGFyZ3MsXG5cdFx0Y2xiayxcblx0XHRhcnIsXG5cdFx0bGVuLFxuXHRcdGEsIGIsXG5cdFx0aTtcblxuXHQvLyBDb3B5IHRoZSBpbnB1dCBhcmd1bWVudHMgdG8gYW4gYXJyYXkuLi5cblx0YXJncyA9IG5ldyBBcnJheSggbmFyZ3MgKTtcblx0Zm9yICggaSA9IDA7IGkgPCBuYXJnczsgaSsrICkge1xuXHRcdGFyZ3NbIGkgXSA9IGFyZ3VtZW50c1sgaSBdO1xuXHR9XG5cdC8vIEhhdmUgd2UgYmVlbiBwcm92aWRlZCB3aXRoIGludGVnZXIgYXJndW1lbnRzP1xuXHRpZiAoIGlzSW50ZWdlckFycmF5KCBhcmdzICkgKSB7XG5cdFx0aWYgKCBuYXJncyA9PT0gMiApIHtcblx0XHRcdGEgPSBhcmdzWyAwIF07XG5cdFx0XHRiID0gYXJnc1sgMSBdO1xuXHRcdFx0aWYgKCBhIDwgMCApIHtcblx0XHRcdFx0YSA9IC1hO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBiIDwgMCApIHtcblx0XHRcdFx0YiA9IC1iO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBhID09PSAwIHx8IGIgPT09IDAgKSB7XG5cdFx0XHRcdHJldHVybiAwO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuICggYS9nY2QoYSxiKSApICogYjtcblx0XHR9XG5cdFx0YXJyID0gYXJncztcblx0fVxuXHQvLyBJZiBub3QgaW50ZWdlcnMsIGVuc3VyZSB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhbiBhcnJheS4uLlxuXHRlbHNlIGlmICggIWlzQXJyYXkoIGFyZ3NbIDAgXSApICkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoICdsY20oKTo6aW52YWxpZCBpbnB1dCBhcmd1bWVudC4gTXVzdCBwcm92aWRlIGFuIGFycmF5IG9mIGludGVnZXJzLiBWYWx1ZTogYCcgKyBhcmdzWyAwIF0gKyAnYC4nICk7XG5cdH1cblx0Ly8gSGF2ZSB3ZSBiZWVuIHByb3ZpZGVkIHdpdGggbW9yZSB0aGFuIG9uZSBhcmd1bWVudD8gSWYgc28sIGVuc3VyZSB0aGF0IHRoZSBhY2Nlc3NvciBhcmd1bWVudCBpcyBhIGZ1bmN0aW9uLi4uXG5cdGVsc2UgaWYgKCBuYXJncyA+IDEgKSB7XG5cdFx0YXJyID0gYXJnc1sgMCBdO1xuXHRcdGNsYmsgPSBhcmdzWyAxIF07XG5cdFx0aWYgKCAhaXNGdW5jdGlvbiggY2xiayApICkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvciggJ2xjbSgpOjppbnZhbGlkIGlucHV0IGFyZ3VtZW50LiBBY2Nlc3NvciBtdXN0IGJlIGEgZnVuY3Rpb24uIFZhbHVlOiBgJyArIGNsYmsgKyAnYC4nICk7XG5cdFx0fVxuXHR9XG5cdC8vIFdlIGhhdmUgYmVlbiBwcm92aWRlZCBhbiBhcnJheS4uLlxuXHRlbHNlIHtcblx0XHRhcnIgPSBhcmdzWyAwIF07XG5cdH1cblx0bGVuID0gYXJyLmxlbmd0aDtcblxuXHQvLyBDaGVjayBpZiBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIHZhbHVlcyBoYXZlIGJlZW4gcHJvdmlkZWQuLi5cblx0aWYgKCBsZW4gPCAyICkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cdC8vIElmIGFuIGFjY2Vzc29yIGlzIHByb3ZpZGVkLCBleHRyYWN0IHRoZSBhcnJheSB2YWx1ZXMuLi5cblx0aWYgKCBjbGJrICkge1xuXHRcdGEgPSBuZXcgQXJyYXkoIGxlbiApO1xuXHRcdGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRhWyBpIF0gPSBjbGJrKCBhcnJbIGkgXSwgaSApO1xuXHRcdH1cblx0XHRhcnIgPSBhO1xuXHR9XG5cdC8vIEdpdmVuIGFuIGlucHV0IGFycmF5LCBlbnN1cmUgYWxsIGFycmF5IHZhbHVlcyBhcmUgaW50ZWdlcnMuLi5cblx0aWYgKCBuYXJncyA8IDMgKSB7XG5cdFx0aWYgKCAhaXNJbnRlZ2VyQXJyYXkoIGFyciApICkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvciggJ2xjbSgpOjppbnZhbGlkIGlucHV0IGFyZ3VtZW50LiBBY2Nlc3NlZCBhcnJheSB2YWx1ZXMgbXVzdCBiZSBpbnRlZ2Vycy4gVmFsdWU6IGAnICsgYXJyICsgJ2AuJyApO1xuXHRcdH1cblx0fVxuXHQvLyBDb252ZXJ0IGFueSBuZWdhdGl2ZSBpbnRlZ2VycyB0byBwb3NpdGl2ZSBpbnRlZ2Vycy4uLlxuXHRmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGEgPSBhcnJbIGkgXTtcblx0XHRpZiAoIGEgPCAwICkge1xuXHRcdFx0YXJyWyBpIF0gPSAtYTtcblx0XHR9XG5cdH1cblx0Ly8gRXhwbG9pdCB0aGUgZmFjdCB0aGF0IHRoZSBsY20gaXMgYW4gYXNzb2NpYXRpdmUgZnVuY3Rpb24uLi5cblx0YSA9IGFyclsgMCBdO1xuXHRmb3IgKCBpID0gMTsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGIgPSBhcnJbIGkgXTtcblx0XHRpZiAoIGEgPT09IDAgfHwgYiA9PT0gMCApIHtcblx0XHRcdHJldHVybiAwO1xuXHRcdH1cblx0XHRhID0gKCBhL2djZChhLGIpICkgKiBiO1xuXHR9XG5cdHJldHVybiBhO1xufSAvLyBlbmQgRlVOQ1RJT04gbGNtKClcblxuXG4vLyBFWFBPUlRTIC8vXG5cbm1vZHVsZS5leHBvcnRzID0gbGNtO1xuIiwidmFyIGJhc2VNZXJnZSA9IHJlcXVpcmUoJy4vX2Jhc2VNZXJnZScpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8uZGVmYXVsdHNEZWVwYCB0byBjdXN0b21pemUgaXRzIGBfLm1lcmdlYCB1c2UgdG8gbWVyZ2Ugc291cmNlXG4gKiBvYmplY3RzIGludG8gZGVzdGluYXRpb24gb2JqZWN0cyB0aGF0IGFyZSBwYXNzZWQgdGhydS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSBvYmpWYWx1ZSBUaGUgZGVzdGluYXRpb24gdmFsdWUuXG4gKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSBzb3VyY2UgdmFsdWUuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIG1lcmdlLlxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgcGFyZW50IG9iamVjdCBvZiBgb2JqVmFsdWVgLlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgcGFyZW50IG9iamVjdCBvZiBgc3JjVmFsdWVgLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAqICBjb3VudGVycGFydHMuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBjdXN0b21EZWZhdWx0c01lcmdlKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spIHtcbiAgaWYgKGlzT2JqZWN0KG9ialZhbHVlKSAmJiBpc09iamVjdChzcmNWYWx1ZSkpIHtcbiAgICAvLyBSZWN1cnNpdmVseSBtZXJnZSBvYmplY3RzIGFuZCBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICBzdGFjay5zZXQoc3JjVmFsdWUsIG9ialZhbHVlKTtcbiAgICBiYXNlTWVyZ2Uob2JqVmFsdWUsIHNyY1ZhbHVlLCB1bmRlZmluZWQsIGN1c3RvbURlZmF1bHRzTWVyZ2UsIHN0YWNrKTtcbiAgICBzdGFja1snZGVsZXRlJ10oc3JjVmFsdWUpO1xuICB9XG4gIHJldHVybiBvYmpWYWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjdXN0b21EZWZhdWx0c01lcmdlO1xuIiwidmFyIGJhc2VNZXJnZSA9IHJlcXVpcmUoJy4vX2Jhc2VNZXJnZScpLFxuICAgIGNyZWF0ZUFzc2lnbmVyID0gcmVxdWlyZSgnLi9fY3JlYXRlQXNzaWduZXInKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1lcmdlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICogaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBtZXJnZWQgdmFsdWVzIG9mIHRoZSBkZXN0aW5hdGlvbiBhbmQgc291cmNlXG4gKiBwcm9wZXJ0aWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCwgbWVyZ2luZyBpcyBoYW5kbGVkIGJ5IHRoZVxuICogbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIHNpeCBhcmd1bWVudHM6XG4gKiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlLCBzdGFjaykuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHsuLi5PYmplY3R9IHNvdXJjZXMgVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gKiAgIGlmIChfLmlzQXJyYXkob2JqVmFsdWUpKSB7XG4gKiAgICAgcmV0dXJuIG9ialZhbHVlLmNvbmNhdChzcmNWYWx1ZSk7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IFsxXSwgJ2InOiBbMl0gfTtcbiAqIHZhciBvdGhlciA9IHsgJ2EnOiBbM10sICdiJzogWzRdIH07XG4gKlxuICogXy5tZXJnZVdpdGgob2JqZWN0LCBvdGhlciwgY3VzdG9taXplcik7XG4gKiAvLyA9PiB7ICdhJzogWzEsIDNdLCAnYic6IFsyLCA0XSB9XG4gKi9cbnZhciBtZXJnZVdpdGggPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpIHtcbiAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcik7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBtZXJnZVdpdGg7XG4iLCJ2YXIgYXBwbHkgPSByZXF1aXJlKCcuL19hcHBseScpLFxuICAgIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBjdXN0b21EZWZhdWx0c01lcmdlID0gcmVxdWlyZSgnLi9fY3VzdG9tRGVmYXVsdHNNZXJnZScpLFxuICAgIG1lcmdlV2l0aCA9IHJlcXVpcmUoJy4vbWVyZ2VXaXRoJyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5kZWZhdWx0c2AgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgYXNzaWduc1xuICogZGVmYXVsdCBwcm9wZXJ0aWVzLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4xMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAc2VlIF8uZGVmYXVsdHNcbiAqIEBleGFtcGxlXG4gKlxuICogXy5kZWZhdWx0c0RlZXAoeyAnYSc6IHsgJ2InOiAyIH0gfSwgeyAnYSc6IHsgJ2InOiAxLCAnYyc6IDMgfSB9KTtcbiAqIC8vID0+IHsgJ2EnOiB7ICdiJzogMiwgJ2MnOiAzIH0gfVxuICovXG52YXIgZGVmYXVsdHNEZWVwID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICBhcmdzLnB1c2godW5kZWZpbmVkLCBjdXN0b21EZWZhdWx0c01lcmdlKTtcbiAgcmV0dXJuIGFwcGx5KG1lcmdlV2l0aCwgdW5kZWZpbmVkLCBhcmdzKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmF1bHRzRGVlcDtcbiIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgYmFzZUludGVyc2VjdGlvbiA9IHJlcXVpcmUoJy4vX2Jhc2VJbnRlcnNlY3Rpb24nKSxcbiAgICBiYXNlUmVzdCA9IHJlcXVpcmUoJy4vX2Jhc2VSZXN0JyksXG4gICAgY2FzdEFycmF5TGlrZU9iamVjdCA9IHJlcXVpcmUoJy4vX2Nhc3RBcnJheUxpa2VPYmplY3QnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gYWxsIGdpdmVuIGFycmF5c1xuICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gKiBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGludGVyc2VjdGluZyB2YWx1ZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaW50ZXJzZWN0aW9uKFsyLCAxXSwgWzIsIDNdKTtcbiAqIC8vID0+IFsyXVxuICovXG52YXIgaW50ZXJzZWN0aW9uID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gIHZhciBtYXBwZWQgPSBhcnJheU1hcChhcnJheXMsIGNhc3RBcnJheUxpa2VPYmplY3QpO1xuICByZXR1cm4gKG1hcHBlZC5sZW5ndGggJiYgbWFwcGVkWzBdID09PSBhcnJheXNbMF0pXG4gICAgPyBiYXNlSW50ZXJzZWN0aW9uKG1hcHBlZClcbiAgICA6IFtdO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gaW50ZXJzZWN0aW9uO1xuIiwiLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGJhc2VJbmRleE9mYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGEgY29tcGFyYXRvci5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJhdG9yIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBiYXNlSW5kZXhPZldpdGgoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgsIGNvbXBhcmF0b3IpIHtcbiAgdmFyIGluZGV4ID0gZnJvbUluZGV4IC0gMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChjb21wYXJhdG9yKGFycmF5W2luZGV4XSwgdmFsdWUpKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSW5kZXhPZldpdGg7XG4iLCJ2YXIgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGJhc2VJbmRleE9mID0gcmVxdWlyZSgnLi9fYmFzZUluZGV4T2YnKSxcbiAgICBiYXNlSW5kZXhPZldpdGggPSByZXF1aXJlKCcuL19iYXNlSW5kZXhPZldpdGgnKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBjb3B5QXJyYXkgPSByZXF1aXJlKCcuL19jb3B5QXJyYXknKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnB1bGxBbGxCeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICB2YXIgaW5kZXhPZiA9IGNvbXBhcmF0b3IgPyBiYXNlSW5kZXhPZldpdGggOiBiYXNlSW5kZXhPZixcbiAgICAgIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgc2VlbiA9IGFycmF5O1xuXG4gIGlmIChhcnJheSA9PT0gdmFsdWVzKSB7XG4gICAgdmFsdWVzID0gY29weUFycmF5KHZhbHVlcyk7XG4gIH1cbiAgaWYgKGl0ZXJhdGVlKSB7XG4gICAgc2VlbiA9IGFycmF5TWFwKGFycmF5LCBiYXNlVW5hcnkoaXRlcmF0ZWUpKTtcbiAgfVxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBmcm9tSW5kZXggPSAwLFxuICAgICAgICB2YWx1ZSA9IHZhbHVlc1tpbmRleF0sXG4gICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgIHdoaWxlICgoZnJvbUluZGV4ID0gaW5kZXhPZihzZWVuLCBjb21wdXRlZCwgZnJvbUluZGV4LCBjb21wYXJhdG9yKSkgPiAtMSkge1xuICAgICAgaWYgKHNlZW4gIT09IGFycmF5KSB7XG4gICAgICAgIHNwbGljZS5jYWxsKHNlZW4sIGZyb21JbmRleCwgMSk7XG4gICAgICB9XG4gICAgICBzcGxpY2UuY2FsbChhcnJheSwgZnJvbUluZGV4LCAxKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQdWxsQWxsO1xuIiwidmFyIGJhc2VQdWxsQWxsID0gcmVxdWlyZSgnLi9fYmFzZVB1bGxBbGwnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnB1bGxgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYW4gYXJyYXkgb2YgdmFsdWVzIHRvIHJlbW92ZS5cbiAqXG4gKiAqKk5vdGU6KiogVW5saWtlIGBfLmRpZmZlcmVuY2VgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnYScsICdiJywgJ2MnXTtcbiAqXG4gKiBfLnB1bGxBbGwoYXJyYXksIFsnYScsICdjJ10pO1xuICogY29uc29sZS5sb2coYXJyYXkpO1xuICogLy8gPT4gWydiJywgJ2InXVxuICovXG5mdW5jdGlvbiBwdWxsQWxsKGFycmF5LCB2YWx1ZXMpIHtcbiAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGggJiYgdmFsdWVzICYmIHZhbHVlcy5sZW5ndGgpXG4gICAgPyBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzKVxuICAgIDogYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcHVsbEFsbDtcbiIsInZhciBhcnJheUVhY2ggPSByZXF1aXJlKCcuL19hcnJheUVhY2gnKSxcbiAgICBiYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2Jhc2VFYWNoJyksXG4gICAgY2FzdEZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fY2FzdEZ1bmN0aW9uJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gIGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggZWxlbWVudC5cbiAqIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gKlxuICogKipOb3RlOioqIEFzIHdpdGggb3RoZXIgXCJDb2xsZWN0aW9uc1wiIG1ldGhvZHMsIG9iamVjdHMgd2l0aCBhIFwibGVuZ3RoXCJcbiAqIHByb3BlcnR5IGFyZSBpdGVyYXRlZCBsaWtlIGFycmF5cy4gVG8gYXZvaWQgdGhpcyBiZWhhdmlvciB1c2UgYF8uZm9ySW5gXG4gKiBvciBgXy5mb3JPd25gIGZvciBvYmplY3QgaXRlcmF0aW9uLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBhbGlhcyBlYWNoXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAqIEBzZWUgXy5mb3JFYWNoUmlnaHRcbiAqIEBleGFtcGxlXG4gKlxuICogXy5mb3JFYWNoKFsxLCAyXSwgZnVuY3Rpb24odmFsdWUpIHtcbiAqICAgY29uc29sZS5sb2codmFsdWUpO1xuICogfSk7XG4gKiAvLyA9PiBMb2dzIGAxYCB0aGVuIGAyYC5cbiAqXG4gKiBfLmZvckVhY2goeyAnYSc6IDEsICdiJzogMiB9LCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gKiB9KTtcbiAqIC8vID0+IExvZ3MgJ2EnIHRoZW4gJ2InIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICovXG5mdW5jdGlvbiBmb3JFYWNoKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RWFjaCA6IGJhc2VFYWNoO1xuICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBjYXN0RnVuY3Rpb24oaXRlcmF0ZWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmb3JFYWNoO1xuIiwidmFyIFNldENhY2hlID0gcmVxdWlyZSgnLi9fU2V0Q2FjaGUnKSxcbiAgICBhcnJheUluY2x1ZGVzID0gcmVxdWlyZSgnLi9fYXJyYXlJbmNsdWRlcycpLFxuICAgIGFycmF5SW5jbHVkZXNXaXRoID0gcmVxdWlyZSgnLi9fYXJyYXlJbmNsdWRlc1dpdGgnKSxcbiAgICBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgY2FjaGVIYXMgPSByZXF1aXJlKCcuL19jYWNoZUhhcycpO1xuXG4vKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbnZhciBMQVJHRV9BUlJBWV9TSVpFID0gMjAwO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5kaWZmZXJlbmNlYCB3aXRob3V0IHN1cHBvcnRcbiAqIGZvciBleGNsdWRpbmcgbXVsdGlwbGUgYXJyYXlzIG9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gYmFzZURpZmZlcmVuY2UoYXJyYXksIHZhbHVlcywgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXMsXG4gICAgICBpc0NvbW1vbiA9IHRydWUsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBbXSxcbiAgICAgIHZhbHVlc0xlbmd0aCA9IHZhbHVlcy5sZW5ndGg7XG5cbiAgaWYgKCFsZW5ndGgpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGlmIChpdGVyYXRlZSkge1xuICAgIHZhbHVlcyA9IGFycmF5TWFwKHZhbHVlcywgYmFzZVVuYXJ5KGl0ZXJhdGVlKSk7XG4gIH1cbiAgaWYgKGNvbXBhcmF0b3IpIHtcbiAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXNXaXRoO1xuICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gIH1cbiAgZWxzZSBpZiAodmFsdWVzLmxlbmd0aCA+PSBMQVJHRV9BUlJBWV9TSVpFKSB7XG4gICAgaW5jbHVkZXMgPSBjYWNoZUhhcztcbiAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgIHZhbHVlcyA9IG5ldyBTZXRDYWNoZSh2YWx1ZXMpO1xuICB9XG4gIG91dGVyOlxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA9PSBudWxsID8gdmFsdWUgOiBpdGVyYXRlZSh2YWx1ZSk7XG5cbiAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICBpZiAoaXNDb21tb24gJiYgY29tcHV0ZWQgPT09IGNvbXB1dGVkKSB7XG4gICAgICB2YXIgdmFsdWVzSW5kZXggPSB2YWx1ZXNMZW5ndGg7XG4gICAgICB3aGlsZSAodmFsdWVzSW5kZXgtLSkge1xuICAgICAgICBpZiAodmFsdWVzW3ZhbHVlc0luZGV4XSA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGlmICghaW5jbHVkZXModmFsdWVzLCBjb21wdXRlZCwgY29tcGFyYXRvcikpIHtcbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRGlmZmVyZW5jZTtcbiIsInZhciBiYXNlRGlmZmVyZW5jZSA9IHJlcXVpcmUoJy4vX2Jhc2VEaWZmZXJlbmNlJyksXG4gICAgYmFzZVJlc3QgPSByZXF1aXJlKCcuL19iYXNlUmVzdCcpLFxuICAgIGlzQXJyYXlMaWtlT2JqZWN0ID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZU9iamVjdCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgZXhjbHVkaW5nIGFsbCBnaXZlbiB2YWx1ZXMgdXNpbmdcbiAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gKlxuICogKipOb3RlOioqIFVubGlrZSBgXy5wdWxsYCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsuLi4qfSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gKiBAc2VlIF8uZGlmZmVyZW5jZSwgXy54b3JcbiAqIEBleGFtcGxlXG4gKlxuICogXy53aXRob3V0KFsyLCAxLCAyLCAzXSwgMSwgMik7XG4gKiAvLyA9PiBbM11cbiAqL1xudmFyIHdpdGhvdXQgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheSwgdmFsdWVzKSB7XG4gIHJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSlcbiAgICA/IGJhc2VEaWZmZXJlbmNlKGFycmF5LCB2YWx1ZXMpXG4gICAgOiBbXTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHdpdGhvdXQ7XG4iLCJjb25zdCBmbGF0dGVuID0gcmVxdWlyZSgnbG9kYXNoL2ZsYXR0ZW4nKVxuY29uc3QgZmxhdHRlbkRlZXAgPSByZXF1aXJlKCdsb2Rhc2gvZmxhdHRlbkRlZXAnKVxuY29uc3QgaXNQbGFpbk9iamVjdCA9IHJlcXVpcmUoJ2xvZGFzaC9pc1BsYWluT2JqZWN0JylcbmNvbnN0IHVuaXEgPSByZXF1aXJlKCdsb2Rhc2gvdW5pcScpXG5jb25zdCB1bmlxV2l0aCA9IHJlcXVpcmUoJ2xvZGFzaC91bmlxV2l0aCcpXG5jb25zdCB3aXRob3V0ID0gcmVxdWlyZSgnbG9kYXNoL3dpdGhvdXQnKVxuXG5mdW5jdGlvbiBkZWxldGVVbmRlZmluZWRQcm9wcyhyZXR1cm5PYmplY3QpIHtcbiAgLy8gY2xlYW51cCBlbXB0eVxuICBmb3IgKGNvbnN0IHByb3AgaW4gcmV0dXJuT2JqZWN0KSB7XG4gICAgaWYgKGhhcyhyZXR1cm5PYmplY3QsIHByb3ApICYmIGlzRW1wdHlTY2hlbWEocmV0dXJuT2JqZWN0W3Byb3BdKSkge1xuICAgICAgZGVsZXRlIHJldHVybk9iamVjdFtwcm9wXVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmV0dXJuT2JqZWN0XG59XG5cbmNvbnN0IGFsbFVuaXF1ZUtleXMgPSAoYXJyKSA9PiB1bmlxKGZsYXR0ZW5EZWVwKGFyci5tYXAoa2V5cykpKVxuY29uc3QgZ2V0VmFsdWVzID0gKHNjaGVtYXMsIGtleSkgPT4gc2NoZW1hcy5tYXAoc2NoZW1hID0+IHNjaGVtYSAmJiBzY2hlbWFba2V5XSlcbmNvbnN0IGhhcyA9IChvYmosIHByb3BOYW1lKSA9PiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wTmFtZSlcbmNvbnN0IGtleXMgPSBvYmogPT4ge1xuICBpZiAoaXNQbGFpbk9iamVjdChvYmopIHx8IEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbn1cblxuY29uc3Qgbm90VW5kZWZpbmVkID0gKHZhbCkgPT4gdmFsICE9PSB1bmRlZmluZWRcbmNvbnN0IGlzU2NoZW1hID0gKHZhbCkgPT4gaXNQbGFpbk9iamVjdCh2YWwpIHx8IHZhbCA9PT0gdHJ1ZSB8fCB2YWwgPT09IGZhbHNlXG5jb25zdCBpc0VtcHR5U2NoZW1hID0gKG9iaikgPT4gKCFrZXlzKG9iaikubGVuZ3RoKSAmJiBvYmogIT09IGZhbHNlICYmIG9iaiAhPT0gdHJ1ZVxuY29uc3Qgd2l0aG91dEFyciA9IChhcnIsIC4uLnJlc3QpID0+IHdpdGhvdXQuYXBwbHkobnVsbCwgW2Fycl0uY29uY2F0KGZsYXR0ZW4ocmVzdCkpKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYWxsVW5pcXVlS2V5cyxcbiAgZGVsZXRlVW5kZWZpbmVkUHJvcHMsXG4gIGdldFZhbHVlcyxcbiAgaGFzLFxuICBpc0VtcHR5U2NoZW1hLFxuICBpc1NjaGVtYSxcbiAga2V5cyxcbiAgbm90VW5kZWZpbmVkLFxuICB1bmlxV2l0aCxcbiAgd2l0aG91dEFyclxufVxuIiwiXG5jb25zdCBjb21wYXJlID0gcmVxdWlyZSgnanNvbi1zY2hlbWEtY29tcGFyZScpXG5jb25zdCBmb3JFYWNoID0gcmVxdWlyZSgnbG9kYXNoL2ZvckVhY2gnKVxuY29uc3Qge1xuICBhbGxVbmlxdWVLZXlzLFxuICBkZWxldGVVbmRlZmluZWRQcm9wcyxcbiAgZ2V0VmFsdWVzLFxuICBrZXlzLFxuICBub3RVbmRlZmluZWQsXG4gIHVuaXFXaXRoLFxuICB3aXRob3V0QXJyXG59ID0gcmVxdWlyZSgnLi4vY29tbW9uJylcblxuZnVuY3Rpb24gcmVtb3ZlRmFsc2VTY2hlbWFzKHRhcmdldCkge1xuICBmb3JFYWNoKHRhcmdldCwgZnVuY3Rpb24oc2NoZW1hLCBwcm9wKSB7XG4gICAgaWYgKHNjaGVtYSA9PT0gZmFsc2UpIHtcbiAgICAgIGRlbGV0ZSB0YXJnZXRbcHJvcF1cbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIG1lcmdlU2NoZW1hR3JvdXAoZ3JvdXAsIG1lcmdlU2NoZW1hcykge1xuICBjb25zdCBhbGxLZXlzID0gYWxsVW5pcXVlS2V5cyhncm91cClcbiAgcmV0dXJuIGFsbEtleXMucmVkdWNlKGZ1bmN0aW9uKGFsbCwga2V5KSB7XG4gICAgY29uc3Qgc2NoZW1hcyA9IGdldFZhbHVlcyhncm91cCwga2V5KVxuICAgIGNvbnN0IGNvbXBhY3RlZCA9IHVuaXFXaXRoKHNjaGVtYXMuZmlsdGVyKG5vdFVuZGVmaW5lZCksIGNvbXBhcmUpXG4gICAgYWxsW2tleV0gPSBtZXJnZVNjaGVtYXMoY29tcGFjdGVkLCBrZXkpXG4gICAgcmV0dXJuIGFsbFxuICB9LCB7fSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGtleXdvcmRzOiBbJ3Byb3BlcnRpZXMnLCAncGF0dGVyblByb3BlcnRpZXMnLCAnYWRkaXRpb25hbFByb3BlcnRpZXMnXSxcbiAgcmVzb2x2ZXIodmFsdWVzLCBwYXJlbnRzLCBtZXJnZXJzLCBvcHRpb25zKSB7XG4gICAgLy8gZmlyc3QgZ2V0IHJpZCBvZiBhbGwgbm9uIHBlcm1pdHRlZCBwcm9wZXJ0aWVzXG4gICAgaWYgKCFvcHRpb25zLmlnbm9yZUFkZGl0aW9uYWxQcm9wZXJ0aWVzKSB7XG4gICAgICB2YWx1ZXMuZm9yRWFjaChmdW5jdGlvbihzdWJTY2hlbWEpIHtcbiAgICAgICAgY29uc3Qgb3RoZXJTdWJTY2hlbWFzID0gdmFsdWVzLmZpbHRlcihzID0+IHMgIT09IHN1YlNjaGVtYSlcbiAgICAgICAgY29uc3Qgb3duS2V5cyA9IGtleXMoc3ViU2NoZW1hLnByb3BlcnRpZXMpXG4gICAgICAgIGNvbnN0IG93blBhdHRlcm5LZXlzID0ga2V5cyhzdWJTY2hlbWEucGF0dGVyblByb3BlcnRpZXMpXG4gICAgICAgIGNvbnN0IG93blBhdHRlcm5zID0gb3duUGF0dGVybktleXMubWFwKGsgPT4gbmV3IFJlZ0V4cChrKSlcbiAgICAgICAgb3RoZXJTdWJTY2hlbWFzLmZvckVhY2goZnVuY3Rpb24ob3RoZXIpIHtcbiAgICAgICAgICBjb25zdCBhbGxPdGhlcktleXMgPSBrZXlzKG90aGVyLnByb3BlcnRpZXMpXG4gICAgICAgICAgY29uc3Qga2V5c01hdGNoaW5nUGF0dGVybiA9IGFsbE90aGVyS2V5cy5maWx0ZXIoayA9PiBvd25QYXR0ZXJucy5zb21lKHBrID0+IHBrLnRlc3QoaykpKVxuICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxLZXlzID0gd2l0aG91dEFycihhbGxPdGhlcktleXMsIG93bktleXMsIGtleXNNYXRjaGluZ1BhdHRlcm4pXG4gICAgICAgICAgYWRkaXRpb25hbEtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgICAgIG90aGVyLnByb3BlcnRpZXNba2V5XSA9IG1lcmdlcnMucHJvcGVydGllcyhbXG4gICAgICAgICAgICAgIG90aGVyLnByb3BlcnRpZXNba2V5XSwgc3ViU2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzXG4gICAgICAgICAgICBdLCBrZXkpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIH0pXG5cbiAgICAgIC8vIHJlbW92ZSBkaXNhbGxvd2VkIHBhdHRlcm5Qcm9wZXJ0aWVzXG4gICAgICB2YWx1ZXMuZm9yRWFjaChmdW5jdGlvbihzdWJTY2hlbWEpIHtcbiAgICAgICAgY29uc3Qgb3RoZXJTdWJTY2hlbWFzID0gdmFsdWVzLmZpbHRlcihzID0+IHMgIT09IHN1YlNjaGVtYSlcbiAgICAgICAgY29uc3Qgb3duUGF0dGVybktleXMgPSBrZXlzKHN1YlNjaGVtYS5wYXR0ZXJuUHJvcGVydGllcylcbiAgICAgICAgaWYgKHN1YlNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBvdGhlclN1YlNjaGVtYXMuZm9yRWFjaChmdW5jdGlvbihvdGhlcikge1xuICAgICAgICAgICAgY29uc3QgYWxsT3RoZXJQYXR0ZXJucyA9IGtleXMob3RoZXIucGF0dGVyblByb3BlcnRpZXMpXG4gICAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsUGF0dGVybktleXMgPSB3aXRob3V0QXJyKGFsbE90aGVyUGF0dGVybnMsIG93blBhdHRlcm5LZXlzKVxuICAgICAgICAgICAgYWRkaXRpb25hbFBhdHRlcm5LZXlzLmZvckVhY2goa2V5ID0+IGRlbGV0ZSBvdGhlci5wYXR0ZXJuUHJvcGVydGllc1trZXldKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc3QgcmV0dXJuT2JqZWN0ID0ge1xuICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IG1lcmdlcnMuYWRkaXRpb25hbFByb3BlcnRpZXModmFsdWVzLm1hcChzID0+IHMuYWRkaXRpb25hbFByb3BlcnRpZXMpKSxcbiAgICAgIHBhdHRlcm5Qcm9wZXJ0aWVzOiBtZXJnZVNjaGVtYUdyb3VwKHZhbHVlcy5tYXAocyA9PiBzLnBhdHRlcm5Qcm9wZXJ0aWVzKSwgbWVyZ2Vycy5wYXR0ZXJuUHJvcGVydGllcyksXG4gICAgICBwcm9wZXJ0aWVzOiBtZXJnZVNjaGVtYUdyb3VwKHZhbHVlcy5tYXAocyA9PiBzLnByb3BlcnRpZXMpLCBtZXJnZXJzLnByb3BlcnRpZXMpXG4gICAgfVxuXG4gICAgaWYgKHJldHVybk9iamVjdC5hZGRpdGlvbmFsUHJvcGVydGllcyA9PT0gZmFsc2UpIHtcbiAgICAgIHJlbW92ZUZhbHNlU2NoZW1hcyhyZXR1cm5PYmplY3QucHJvcGVydGllcylcbiAgICB9XG5cbiAgICByZXR1cm4gZGVsZXRlVW5kZWZpbmVkUHJvcHMocmV0dXJuT2JqZWN0KVxuICB9XG59XG4iLCJcbmNvbnN0IGNvbXBhcmUgPSByZXF1aXJlKCdqc29uLXNjaGVtYS1jb21wYXJlJylcbmNvbnN0IGZvckVhY2ggPSByZXF1aXJlKCdsb2Rhc2gvZm9yRWFjaCcpXG5jb25zdCB7XG4gIGFsbFVuaXF1ZUtleXMsXG4gIGRlbGV0ZVVuZGVmaW5lZFByb3BzLFxuICBoYXMsXG4gIGlzU2NoZW1hLFxuICBub3RVbmRlZmluZWQsXG4gIHVuaXFXaXRoXG59ID0gcmVxdWlyZSgnLi4vY29tbW9uJylcblxuZnVuY3Rpb24gcmVtb3ZlRmFsc2VTY2hlbWFzRnJvbUFycmF5KHRhcmdldCkge1xuICBmb3JFYWNoKHRhcmdldCwgZnVuY3Rpb24oc2NoZW1hLCBpbmRleCkge1xuICAgIGlmIChzY2hlbWEgPT09IGZhbHNlKSB7XG4gICAgICB0YXJnZXQuc3BsaWNlKGluZGV4LCAxKVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gZ2V0SXRlbVNjaGVtYXMoc3ViU2NoZW1hcywga2V5KSB7XG4gIHJldHVybiBzdWJTY2hlbWFzLm1hcChmdW5jdGlvbihzdWIpIHtcbiAgICBpZiAoIXN1Yikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHN1Yi5pdGVtcykpIHtcbiAgICAgIGNvbnN0IHNjaGVtYUF0UG9zID0gc3ViLml0ZW1zW2tleV1cbiAgICAgIGlmIChpc1NjaGVtYShzY2hlbWFBdFBvcykpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYUF0UG9zXG4gICAgICB9IGVsc2UgaWYgKGhhcyhzdWIsICdhZGRpdGlvbmFsSXRlbXMnKSkge1xuICAgICAgICByZXR1cm4gc3ViLmFkZGl0aW9uYWxJdGVtc1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gc3ViLml0ZW1zXG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9KVxufVxuXG5mdW5jdGlvbiBnZXRBZGRpdGlvbmFsU2NoZW1hcyhzdWJTY2hlbWFzKSB7XG4gIHJldHVybiBzdWJTY2hlbWFzLm1hcChmdW5jdGlvbihzdWIpIHtcbiAgICBpZiAoIXN1Yikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShzdWIuaXRlbXMpKSB7XG4gICAgICByZXR1cm4gc3ViLmFkZGl0aW9uYWxJdGVtc1xuICAgIH1cbiAgICByZXR1cm4gc3ViLml0ZW1zXG4gIH0pXG59XG5cbi8vIFByb3ZpZGUgc291cmNlIHdoZW4gYXJyYXlcbmZ1bmN0aW9uIG1lcmdlSXRlbXMoZ3JvdXAsIG1lcmdlU2NoZW1hcywgaXRlbXMpIHtcbiAgY29uc3QgYWxsS2V5cyA9IGFsbFVuaXF1ZUtleXMoaXRlbXMpXG4gIHJldHVybiBhbGxLZXlzLnJlZHVjZShmdW5jdGlvbihhbGwsIGtleSkge1xuICAgIGNvbnN0IHNjaGVtYXMgPSBnZXRJdGVtU2NoZW1hcyhncm91cCwga2V5KVxuICAgIGNvbnN0IGNvbXBhY3RlZCA9IHVuaXFXaXRoKHNjaGVtYXMuZmlsdGVyKG5vdFVuZGVmaW5lZCksIGNvbXBhcmUpXG4gICAgYWxsW2tleV0gPSBtZXJnZVNjaGVtYXMoY29tcGFjdGVkLCBrZXkpXG4gICAgcmV0dXJuIGFsbFxuICB9LCBbXSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGtleXdvcmRzOiBbJ2l0ZW1zJywgJ2FkZGl0aW9uYWxJdGVtcyddLFxuICByZXNvbHZlcih2YWx1ZXMsIHBhcmVudHMsIG1lcmdlcnMpIHtcbiAgICAvLyBjb25zdCBjcmVhdGVTdWJNZXJnZXIgPSBncm91cEtleSA9PiAoc2NoZW1hcywga2V5KSA9PiBtZXJnZVNjaGVtYXMoc2NoZW1hcywgcGFyZW50cy5jb25jYXQoZ3JvdXBLZXksIGtleSkpXG4gICAgY29uc3QgaXRlbXMgPSB2YWx1ZXMubWFwKHMgPT4gcy5pdGVtcylcbiAgICBjb25zdCBpdGVtc0NvbXBhY3RlZCA9IGl0ZW1zLmZpbHRlcihub3RVbmRlZmluZWQpXG4gICAgY29uc3QgcmV0dXJuT2JqZWN0ID0ge31cblxuICAgIC8vIGlmIGFsbCBpdGVtcyBrZXl3b3JkIHZhbHVlcyBhcmUgc2NoZW1hcywgd2UgY2FuIG1lcmdlIHRoZW0gYXMgc2ltcGxlIHNjaGVtYXNcbiAgICAvLyBpZiBub3Qgd2UgbmVlZCB0byBtZXJnZSB0aGVtIGFzIG1peGVkXG4gICAgaWYgKGl0ZW1zQ29tcGFjdGVkLmV2ZXJ5KGlzU2NoZW1hKSkge1xuICAgICAgcmV0dXJuT2JqZWN0Lml0ZW1zID0gbWVyZ2Vycy5pdGVtcyhpdGVtcylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuT2JqZWN0Lml0ZW1zID0gbWVyZ2VJdGVtcyh2YWx1ZXMsIG1lcmdlcnMuaXRlbXMsIGl0ZW1zKVxuICAgIH1cblxuICAgIGxldCBzY2hlbWFzQXRMYXN0UG9zXG4gICAgaWYgKGl0ZW1zQ29tcGFjdGVkLmV2ZXJ5KEFycmF5LmlzQXJyYXkpKSB7XG4gICAgICBzY2hlbWFzQXRMYXN0UG9zID0gdmFsdWVzLm1hcChzID0+IHMuYWRkaXRpb25hbEl0ZW1zKVxuICAgIH0gZWxzZSBpZiAoaXRlbXNDb21wYWN0ZWQuc29tZShBcnJheS5pc0FycmF5KSkge1xuICAgICAgc2NoZW1hc0F0TGFzdFBvcyA9IGdldEFkZGl0aW9uYWxTY2hlbWFzKHZhbHVlcylcbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hc0F0TGFzdFBvcykge1xuICAgICAgcmV0dXJuT2JqZWN0LmFkZGl0aW9uYWxJdGVtcyA9IG1lcmdlcnMuYWRkaXRpb25hbEl0ZW1zKHNjaGVtYXNBdExhc3RQb3MpXG4gICAgfVxuXG4gICAgaWYgKHJldHVybk9iamVjdC5hZGRpdGlvbmFsSXRlbXMgPT09IGZhbHNlICYmIEFycmF5LmlzQXJyYXkocmV0dXJuT2JqZWN0Lml0ZW1zKSkge1xuICAgICAgcmVtb3ZlRmFsc2VTY2hlbWFzRnJvbUFycmF5KHJldHVybk9iamVjdC5pdGVtcylcbiAgICB9XG5cbiAgICByZXR1cm4gZGVsZXRlVW5kZWZpbmVkUHJvcHMocmV0dXJuT2JqZWN0KVxuICB9XG59XG4iLCJjb25zdCBjbG9uZURlZXAgPSByZXF1aXJlKCdsb2Rhc2gvY2xvbmVEZWVwJylcbmNvbnN0IGNvbXBhcmUgPSByZXF1aXJlKCdqc29uLXNjaGVtYS1jb21wYXJlJylcbmNvbnN0IGNvbXB1dGVMY20gPSByZXF1aXJlKCdjb21wdXRlLWxjbScpXG5jb25zdCBkZWZhdWx0c0RlZXAgPSByZXF1aXJlKCdsb2Rhc2gvZGVmYXVsdHNEZWVwJylcbmNvbnN0IGZsYXR0ZW4gPSByZXF1aXJlKCdsb2Rhc2gvZmxhdHRlbicpXG5jb25zdCBmbGF0dGVuRGVlcCA9IHJlcXVpcmUoJ2xvZGFzaC9mbGF0dGVuRGVlcCcpXG5jb25zdCBpbnRlcnNlY3Rpb24gPSByZXF1aXJlKCdsb2Rhc2gvaW50ZXJzZWN0aW9uJylcbmNvbnN0IGludGVyc2VjdGlvbldpdGggPSByZXF1aXJlKCdsb2Rhc2gvaW50ZXJzZWN0aW9uV2l0aCcpXG5jb25zdCBpc0VxdWFsID0gcmVxdWlyZSgnbG9kYXNoL2lzRXF1YWwnKVxuY29uc3QgaXNQbGFpbk9iamVjdCA9IHJlcXVpcmUoJ2xvZGFzaC9pc1BsYWluT2JqZWN0JylcbmNvbnN0IHB1bGxBbGwgPSByZXF1aXJlKCdsb2Rhc2gvcHVsbEFsbCcpXG5jb25zdCBzb3J0QnkgPSByZXF1aXJlKCdsb2Rhc2gvc29ydEJ5JylcbmNvbnN0IHVuaXEgPSByZXF1aXJlKCdsb2Rhc2gvdW5pcScpXG5jb25zdCB1bmlxV2l0aCA9IHJlcXVpcmUoJ2xvZGFzaC91bmlxV2l0aCcpXG5cbmNvbnN0IHByb3BlcnRpZXNSZXNvbHZlciA9IHJlcXVpcmUoJy4vY29tcGxleC1yZXNvbHZlcnMvcHJvcGVydGllcycpXG5jb25zdCBpdGVtc1Jlc29sdmVyID0gcmVxdWlyZSgnLi9jb21wbGV4LXJlc29sdmVycy9pdGVtcycpXG5cbmNvbnN0IGNvbnRhaW5zID0gKGFyciwgdmFsKSA9PiBhcnIuaW5kZXhPZih2YWwpICE9PSAtMVxuY29uc3QgaXNTY2hlbWEgPSAodmFsKSA9PiBpc1BsYWluT2JqZWN0KHZhbCkgfHwgdmFsID09PSB0cnVlIHx8IHZhbCA9PT0gZmFsc2VcbmNvbnN0IGlzRmFsc2UgPSAodmFsKSA9PiB2YWwgPT09IGZhbHNlXG5jb25zdCBpc1RydWUgPSAodmFsKSA9PiB2YWwgPT09IHRydWVcbmNvbnN0IHNjaGVtYVJlc29sdmVyID0gKGNvbXBhY3RlZCwga2V5LCBtZXJnZVNjaGVtYXMpID0+IG1lcmdlU2NoZW1hcyhjb21wYWN0ZWQpXG5jb25zdCBzdHJpbmdBcnJheSA9ICh2YWx1ZXMpID0+IHNvcnRCeSh1bmlxKGZsYXR0ZW5EZWVwKHZhbHVlcykpKVxuY29uc3Qgbm90VW5kZWZpbmVkID0gKHZhbCkgPT4gdmFsICE9PSB1bmRlZmluZWRcbmNvbnN0IGFsbFVuaXF1ZUtleXMgPSAoYXJyKSA9PiB1bmlxKGZsYXR0ZW5EZWVwKGFyci5tYXAoa2V5cykpKVxuXG4vLyByZXNvbHZlcnNcbmNvbnN0IGZpcnN0ID0gY29tcGFjdGVkID0+IGNvbXBhY3RlZFswXVxuY29uc3QgcmVxdWlyZWQgPSBjb21wYWN0ZWQgPT4gc3RyaW5nQXJyYXkoY29tcGFjdGVkKVxuY29uc3QgbWF4aW11bVZhbHVlID0gY29tcGFjdGVkID0+IE1hdGgubWF4LmFwcGx5KE1hdGgsIGNvbXBhY3RlZClcbmNvbnN0IG1pbmltdW1WYWx1ZSA9IGNvbXBhY3RlZCA9PiBNYXRoLm1pbi5hcHBseShNYXRoLCBjb21wYWN0ZWQpXG5jb25zdCB1bmlxdWVJdGVtcyA9IGNvbXBhY3RlZCA9PiBjb21wYWN0ZWQuc29tZShpc1RydWUpXG5jb25zdCBleGFtcGxlcyA9IGNvbXBhY3RlZCA9PiB1bmlxV2l0aChmbGF0dGVuKGNvbXBhY3RlZCksIGlzRXF1YWwpXG5cbmZ1bmN0aW9uIGNvbXBhcmVQcm9wKGtleSkge1xuICByZXR1cm4gZnVuY3Rpb24oYSwgYikge1xuICAgIHJldHVybiBjb21wYXJlKHtcbiAgICAgIFtrZXldOiBhXG4gICAgfSwgeyBba2V5XTogYiB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEFsbE9mKHNjaGVtYSkge1xuICBsZXQgeyBhbGxPZiA9IFtdLCAuLi5jb3B5IH0gPSBzY2hlbWFcbiAgY29weSA9IGlzUGxhaW5PYmplY3Qoc2NoZW1hKSA/IGNvcHkgOiBzY2hlbWEgLy8gaWYgc2NoZW1hIGlzIGJvb2xlYW5cbiAgcmV0dXJuIFtjb3B5LCAuLi5hbGxPZi5tYXAoZ2V0QWxsT2YpXVxufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZXMoc2NoZW1hcywga2V5KSB7XG4gIHJldHVybiBzY2hlbWFzLm1hcChzY2hlbWEgPT4gc2NoZW1hICYmIHNjaGVtYVtrZXldKVxufVxuXG5mdW5jdGlvbiB0cnlNZXJnZVNjaGVtYUdyb3VwcyhzY2hlbWFHcm91cHMsIG1lcmdlU2NoZW1hcykge1xuICByZXR1cm4gc2NoZW1hR3JvdXBzLm1hcChmdW5jdGlvbihzY2hlbWFzLCBpbmRleCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbWVyZ2VTY2hlbWFzKHNjaGVtYXMsIGluZGV4KVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gIH0pLmZpbHRlcihub3RVbmRlZmluZWQpXG59XG5cbmZ1bmN0aW9uIGtleXMob2JqKSB7XG4gIGlmIChpc1BsYWluT2JqZWN0KG9iaikgfHwgQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iailcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gW11cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRBbnlPZkNvbWJpbmF0aW9ucyhhcnJPZkFycmF5cywgY29tYmluYXRpb25zKSB7XG4gIGNvbWJpbmF0aW9ucyA9IGNvbWJpbmF0aW9ucyB8fCBbXVxuICBpZiAoIWFyck9mQXJyYXlzLmxlbmd0aCkge1xuICAgIHJldHVybiBjb21iaW5hdGlvbnNcbiAgfVxuXG4gIGNvbnN0IHZhbHVlcyA9IGFyck9mQXJyYXlzLnNsaWNlKDApLnNoaWZ0KClcbiAgY29uc3QgcmVzdCA9IGFyck9mQXJyYXlzLnNsaWNlKDEpXG4gIGlmIChjb21iaW5hdGlvbnMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGdldEFueU9mQ29tYmluYXRpb25zKHJlc3QsIGZsYXR0ZW4oY29tYmluYXRpb25zLm1hcChjb21iaW5hdGlvbiA9PiB2YWx1ZXMubWFwKGl0ZW0gPT4gKFtpdGVtXS5jb25jYXQoY29tYmluYXRpb24pKSkpKSlcbiAgfVxuICByZXR1cm4gZ2V0QW55T2ZDb21iaW5hdGlvbnMocmVzdCwgdmFsdWVzLm1hcChpdGVtID0+IChpdGVtKSkpXG59XG5cbmZ1bmN0aW9uIHRocm93SW5jb21wYXRpYmxlKHZhbHVlcywgcGF0aHMpIHtcbiAgbGV0IGFzSlNPTlxuICB0cnkge1xuICAgIGFzSlNPTiA9IHZhbHVlcy5tYXAoZnVuY3Rpb24odmFsKSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsLCBudWxsLCAyKVxuICAgIH0pLmpvaW4oJ1xcbicpXG4gIH0gY2F0Y2ggKHZhcmlhYmxlKSB7XG4gICAgYXNKU09OID0gdmFsdWVzLmpvaW4oJywgJylcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCByZXNvbHZlIHZhbHVlcyBmb3IgcGF0aDpcIicgKyBwYXRocy5qb2luKCcuJykgKyAnXCIuIFRoZXkgYXJlIHByb2JhYmx5IGluY29tcGF0aWJsZS4gVmFsdWVzOiBcXG4nICsgYXNKU09OKVxufVxuXG5mdW5jdGlvbiBjYWxsR3JvdXBSZXNvbHZlcihjb21wbGV4S2V5d29yZHMsIHJlc29sdmVyTmFtZSwgc2NoZW1hcywgbWVyZ2VTY2hlbWFzLCBvcHRpb25zLCBwYXJlbnRzKSB7XG4gIGlmIChjb21wbGV4S2V5d29yZHMubGVuZ3RoKSB7XG4gICAgY29uc3QgcmVzb2x2ZXJDb25maWcgPSBvcHRpb25zLmNvbXBsZXhSZXNvbHZlcnNbcmVzb2x2ZXJOYW1lXVxuICAgIGlmICghcmVzb2x2ZXJDb25maWcgfHwgIXJlc29sdmVyQ29uZmlnLnJlc29sdmVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlc29sdmVyIGZvdW5kIGZvciAnICsgcmVzb2x2ZXJOYW1lKVxuICAgIH1cblxuICAgIC8vIGV4dHJhY3QgYWxsIGtleXdvcmRzIGZyb20gYWxsIHRoZSBzY2hlbWFzIHRoYXQgaGF2ZSBvbmUgb3IgbW9yZVxuICAgIC8vIHRoZW4gcmVtb3ZlIGFsbCB1bmRlZmluZWQgb25lcyBhbmQgbm90IHVuaXF1ZVxuICAgIGNvbnN0IGV4dHJhY3RlZEtleXdvcmRzT25seSA9IHNjaGVtYXMubWFwKHNjaGVtYSA9PiBjb21wbGV4S2V5d29yZHMucmVkdWNlKChhbGwsIGtleSkgPT4ge1xuICAgICAgaWYgKHNjaGVtYVtrZXldICE9PSB1bmRlZmluZWQpIGFsbFtrZXldID0gc2NoZW1hW2tleV1cbiAgICAgIHJldHVybiBhbGxcbiAgICB9LCB7fSkpXG4gICAgY29uc3QgdW5pcXVlID0gdW5pcVdpdGgoZXh0cmFjdGVkS2V5d29yZHNPbmx5LCBjb21wYXJlKVxuXG4gICAgLy8gY3JlYXRlIG1lcmdlcnMgdGhhdCBhdXRvbWF0aWNhbGx5IGFkZCB0aGUgcGF0aCBvZiB0aGUga2V5d29yZCBmb3IgdXNlIGluIHRoZSBjb21wbGV4IHJlc29sdmVyXG4gICAgY29uc3QgbWVyZ2VycyA9IHJlc29sdmVyQ29uZmlnLmtleXdvcmRzLnJlZHVjZSgoYWxsLCBrZXkpID0+ICh7XG4gICAgICAuLi5hbGwsXG4gICAgICBba2V5XTogKHNjaGVtYXMsIGV4dHJhS2V5ID0gW10pID0+IG1lcmdlU2NoZW1hcyhzY2hlbWFzLCBudWxsLCBwYXJlbnRzLmNvbmNhdChrZXksIGV4dHJhS2V5KSlcbiAgICB9KSwge30pXG5cbiAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlckNvbmZpZy5yZXNvbHZlcih1bmlxdWUsIHBhcmVudHMuY29uY2F0KHJlc29sdmVyTmFtZSksIG1lcmdlcnMsIG9wdGlvbnMpXG5cbiAgICBpZiAoIWlzUGxhaW5PYmplY3QocmVzdWx0KSkge1xuICAgICAgdGhyb3dJbmNvbXBhdGlibGUodW5pcXVlLCBwYXJlbnRzLmNvbmNhdChyZXNvbHZlck5hbWUpKVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVSZXF1aXJlZE1ldGFBcnJheShhcnIpIHtcbiAgcmV0dXJuIHsgcmVxdWlyZWQ6IGFyciB9XG59XG5cbmNvbnN0IHNjaGVtYUdyb3VwUHJvcHMgPSBbJ3Byb3BlcnRpZXMnLCAncGF0dGVyblByb3BlcnRpZXMnLCAnZGVmaW5pdGlvbnMnLCAnZGVwZW5kZW5jaWVzJ11cbmNvbnN0IHNjaGVtYUFycmF5cyA9IFsnYW55T2YnLCAnb25lT2YnXVxuY29uc3Qgc2NoZW1hUHJvcHMgPSBbXG4gICdhZGRpdGlvbmFsUHJvcGVydGllcycsXG4gICdhZGRpdGlvbmFsSXRlbXMnLFxuICAnY29udGFpbnMnLFxuICAncHJvcGVydHlOYW1lcycsXG4gICdub3QnLFxuICAnaXRlbXMnXG5dXG5cbmNvbnN0IGRlZmF1bHRSZXNvbHZlcnMgPSB7XG4gIHR5cGUoY29tcGFjdGVkKSB7XG4gICAgaWYgKGNvbXBhY3RlZC5zb21lKEFycmF5LmlzQXJyYXkpKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gY29tcGFjdGVkLm1hcChmdW5jdGlvbih2YWwpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsKVxuICAgICAgICAgID8gdmFsXG4gICAgICAgICAgOiBbdmFsXVxuICAgICAgfSlcbiAgICAgIGNvbnN0IGNvbW1vbiA9IGludGVyc2VjdGlvbi5hcHBseShudWxsLCBub3JtYWxpemVkKVxuXG4gICAgICBpZiAoY29tbW9uLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gY29tbW9uWzBdXG4gICAgICB9IGVsc2UgaWYgKGNvbW1vbi5sZW5ndGggPiAxKSB7XG4gICAgICAgIHJldHVybiB1bmlxKGNvbW1vbilcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGRlcGVuZGVuY2llcyhjb21wYWN0ZWQsIHBhdGhzLCBtZXJnZVNjaGVtYXMpIHtcbiAgICBjb25zdCBhbGxDaGlsZHJlbiA9IGFsbFVuaXF1ZUtleXMoY29tcGFjdGVkKVxuXG4gICAgcmV0dXJuIGFsbENoaWxkcmVuLnJlZHVjZShmdW5jdGlvbihhbGwsIGNoaWxkS2V5KSB7XG4gICAgICBjb25zdCBjaGlsZFNjaGVtYXMgPSBnZXRWYWx1ZXMoY29tcGFjdGVkLCBjaGlsZEtleSlcbiAgICAgIGxldCBpbm5lckNvbXBhY3RlZCA9IHVuaXFXaXRoKGNoaWxkU2NoZW1hcy5maWx0ZXIobm90VW5kZWZpbmVkKSwgaXNFcXVhbClcblxuICAgICAgLy8gdG8gc3VwcG9ydCBkZXBlbmRlbmNpZXNcbiAgICAgIGNvbnN0IGlubmVyQXJyYXlzID0gaW5uZXJDb21wYWN0ZWQuZmlsdGVyKEFycmF5LmlzQXJyYXkpXG5cbiAgICAgIGlmIChpbm5lckFycmF5cy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGlubmVyQXJyYXlzLmxlbmd0aCA9PT0gaW5uZXJDb21wYWN0ZWQubGVuZ3RoKSB7XG4gICAgICAgICAgYWxsW2NoaWxkS2V5XSA9IHN0cmluZ0FycmF5KGlubmVyQ29tcGFjdGVkKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGlubmVyU2NoZW1hcyA9IGlubmVyQ29tcGFjdGVkLmZpbHRlcihpc1NjaGVtYSlcbiAgICAgICAgICBjb25zdCBhcnJheU1ldGFTY2hlYW1zID0gaW5uZXJBcnJheXMubWFwKGNyZWF0ZVJlcXVpcmVkTWV0YUFycmF5KVxuICAgICAgICAgIGFsbFtjaGlsZEtleV0gPSBtZXJnZVNjaGVtYXMoaW5uZXJTY2hlbWFzLmNvbmNhdChhcnJheU1ldGFTY2hlYW1zKSwgY2hpbGRLZXkpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFsbFxuICAgICAgfVxuXG4gICAgICBpbm5lckNvbXBhY3RlZCA9IHVuaXFXaXRoKGlubmVyQ29tcGFjdGVkLCBjb21wYXJlKVxuXG4gICAgICBhbGxbY2hpbGRLZXldID0gbWVyZ2VTY2hlbWFzKGlubmVyQ29tcGFjdGVkLCBjaGlsZEtleSlcbiAgICAgIHJldHVybiBhbGxcbiAgICB9LCB7fSlcbiAgfSxcbiAgb25lT2YoY29tcGFjdGVkLCBwYXRocywgbWVyZ2VTY2hlbWFzKSB7XG4gICAgY29uc3QgY29tYmluYXRpb25zID0gZ2V0QW55T2ZDb21iaW5hdGlvbnMoY2xvbmVEZWVwKGNvbXBhY3RlZCkpXG4gICAgY29uc3QgcmVzdWx0ID0gdHJ5TWVyZ2VTY2hlbWFHcm91cHMoY29tYmluYXRpb25zLCBtZXJnZVNjaGVtYXMpXG4gICAgY29uc3QgdW5pcXVlID0gdW5pcVdpdGgocmVzdWx0LCBjb21wYXJlKVxuXG4gICAgaWYgKHVuaXF1ZS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB1bmlxdWVcbiAgICB9XG4gIH0sXG4gIG5vdChjb21wYWN0ZWQpIHtcbiAgICByZXR1cm4geyBhbnlPZjogY29tcGFjdGVkIH1cbiAgfSxcbiAgcGF0dGVybihjb21wYWN0ZWQpIHtcbiAgICByZXR1cm4gY29tcGFjdGVkLm1hcChyID0+ICcoPz0nICsgciArICcpJykuam9pbignJylcbiAgfSxcbiAgbXVsdGlwbGVPZihjb21wYWN0ZWQpIHtcbiAgICBsZXQgaW50ZWdlcnMgPSBjb21wYWN0ZWQuc2xpY2UoMClcbiAgICBsZXQgZmFjdG9yID0gMVxuICAgIHdoaWxlIChpbnRlZ2Vycy5zb21lKG4gPT4gIU51bWJlci5pc0ludGVnZXIobikpKSB7XG4gICAgICBpbnRlZ2VycyA9IGludGVnZXJzLm1hcChuID0+IG4gKiAxMClcbiAgICAgIGZhY3RvciA9IGZhY3RvciAqIDEwXG4gICAgfVxuICAgIHJldHVybiBjb21wdXRlTGNtKGludGVnZXJzKSAvIGZhY3RvclxuICB9LFxuICBlbnVtKGNvbXBhY3RlZCkge1xuICAgIGNvbnN0IGVudW1zID0gaW50ZXJzZWN0aW9uV2l0aC5hcHBseShudWxsLCBjb21wYWN0ZWQuY29uY2F0KGlzRXF1YWwpKVxuICAgIGlmIChlbnVtcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBzb3J0QnkoZW51bXMpXG4gICAgfVxuICB9XG59XG5cbmRlZmF1bHRSZXNvbHZlcnMuJGlkID0gZmlyc3RcbmRlZmF1bHRSZXNvbHZlcnMuJHJlZiA9IGZpcnN0XG5kZWZhdWx0UmVzb2x2ZXJzLiRzY2hlbWEgPSBmaXJzdFxuZGVmYXVsdFJlc29sdmVycy5hZGRpdGlvbmFsSXRlbXMgPSBzY2hlbWFSZXNvbHZlclxuZGVmYXVsdFJlc29sdmVycy5hZGRpdGlvbmFsUHJvcGVydGllcyA9IHNjaGVtYVJlc29sdmVyXG5kZWZhdWx0UmVzb2x2ZXJzLmFueU9mID0gZGVmYXVsdFJlc29sdmVycy5vbmVPZlxuZGVmYXVsdFJlc29sdmVycy5jb250YWlucyA9IHNjaGVtYVJlc29sdmVyXG5kZWZhdWx0UmVzb2x2ZXJzLmRlZmF1bHQgPSBmaXJzdFxuZGVmYXVsdFJlc29sdmVycy5kZWZpbml0aW9ucyA9IGRlZmF1bHRSZXNvbHZlcnMuZGVwZW5kZW5jaWVzXG5kZWZhdWx0UmVzb2x2ZXJzLmRlc2NyaXB0aW9uID0gZmlyc3RcbmRlZmF1bHRSZXNvbHZlcnMuZXhhbXBsZXMgPSBleGFtcGxlc1xuZGVmYXVsdFJlc29sdmVycy5leGNsdXNpdmVNYXhpbXVtID0gbWluaW11bVZhbHVlXG5kZWZhdWx0UmVzb2x2ZXJzLmV4Y2x1c2l2ZU1pbmltdW0gPSBtYXhpbXVtVmFsdWVcbmRlZmF1bHRSZXNvbHZlcnMuaXRlbXMgPSBpdGVtc1Jlc29sdmVyXG5kZWZhdWx0UmVzb2x2ZXJzLm1heGltdW0gPSBtaW5pbXVtVmFsdWVcbmRlZmF1bHRSZXNvbHZlcnMubWF4SXRlbXMgPSBtaW5pbXVtVmFsdWVcbmRlZmF1bHRSZXNvbHZlcnMubWF4TGVuZ3RoID0gbWluaW11bVZhbHVlXG5kZWZhdWx0UmVzb2x2ZXJzLm1heFByb3BlcnRpZXMgPSBtaW5pbXVtVmFsdWVcbmRlZmF1bHRSZXNvbHZlcnMubWluaW11bSA9IG1heGltdW1WYWx1ZVxuZGVmYXVsdFJlc29sdmVycy5taW5JdGVtcyA9IG1heGltdW1WYWx1ZVxuZGVmYXVsdFJlc29sdmVycy5taW5MZW5ndGggPSBtYXhpbXVtVmFsdWVcbmRlZmF1bHRSZXNvbHZlcnMubWluUHJvcGVydGllcyA9IG1heGltdW1WYWx1ZVxuZGVmYXVsdFJlc29sdmVycy5wcm9wZXJ0aWVzID0gcHJvcGVydGllc1Jlc29sdmVyXG5kZWZhdWx0UmVzb2x2ZXJzLnByb3BlcnR5TmFtZXMgPSBzY2hlbWFSZXNvbHZlclxuZGVmYXVsdFJlc29sdmVycy5yZXF1aXJlZCA9IHJlcXVpcmVkXG5kZWZhdWx0UmVzb2x2ZXJzLnRpdGxlID0gZmlyc3RcbmRlZmF1bHRSZXNvbHZlcnMudW5pcXVlSXRlbXMgPSB1bmlxdWVJdGVtc1xuXG5jb25zdCBkZWZhdWx0Q29tcGxleFJlc29sdmVycyA9IHtcbiAgcHJvcGVydGllczogcHJvcGVydGllc1Jlc29sdmVyLFxuICBpdGVtczogaXRlbXNSZXNvbHZlclxufVxuXG5mdW5jdGlvbiBtZXJnZXIocm9vdFNjaGVtYSwgb3B0aW9ucywgdG90YWxTY2hlbWFzKSB7XG4gIHRvdGFsU2NoZW1hcyA9IHRvdGFsU2NoZW1hcyB8fCBbXVxuICBvcHRpb25zID0gZGVmYXVsdHNEZWVwKG9wdGlvbnMsIHtcbiAgICBpZ25vcmVBZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgcmVzb2x2ZXJzOiBkZWZhdWx0UmVzb2x2ZXJzLFxuICAgIGNvbXBsZXhSZXNvbHZlcnM6IGRlZmF1bHRDb21wbGV4UmVzb2x2ZXJzLFxuICAgIGRlZXA6IHRydWVcbiAgfSlcblxuICBjb25zdCBjb21wbGV4UmVzb2x2ZXJzID0gT2JqZWN0LmVudHJpZXMob3B0aW9ucy5jb21wbGV4UmVzb2x2ZXJzKVxuXG4gIGZ1bmN0aW9uIG1lcmdlU2NoZW1hcyhzY2hlbWFzLCBiYXNlLCBwYXJlbnRzKSB7XG4gICAgc2NoZW1hcyA9IGNsb25lRGVlcChzY2hlbWFzLmZpbHRlcihub3RVbmRlZmluZWQpKVxuICAgIHBhcmVudHMgPSBwYXJlbnRzIHx8IFtdXG4gICAgY29uc3QgbWVyZ2VkID0gaXNQbGFpbk9iamVjdChiYXNlKVxuICAgICAgPyBiYXNlXG4gICAgICA6IHt9XG5cbiAgICAvLyByZXR1cm4gdW5kZWZpbmVkLCBhbiBlbXB0eSBzY2hlbWFcbiAgICBpZiAoIXNjaGVtYXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hcy5zb21lKGlzRmFsc2UpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hcy5ldmVyeShpc1RydWUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8vIHRoZXJlIGFyZSBubyBmYWxzZSBhbmQgd2UgZG9uJ3QgbmVlZCB0aGUgdHJ1ZSBvbmVzIGFzIHRoZXkgYWNjZXB0IGV2ZXJ5dGhpbmdcbiAgICBzY2hlbWFzID0gc2NoZW1hcy5maWx0ZXIoaXNQbGFpbk9iamVjdClcblxuICAgIGNvbnN0IGFsbEtleXMgPSBhbGxVbmlxdWVLZXlzKHNjaGVtYXMpXG4gICAgaWYgKG9wdGlvbnMuZGVlcCAmJiBjb250YWlucyhhbGxLZXlzLCAnYWxsT2YnKSkge1xuICAgICAgcmV0dXJuIG1lcmdlcih7XG4gICAgICAgIGFsbE9mOiBzY2hlbWFzXG4gICAgICB9LCBvcHRpb25zLCB0b3RhbFNjaGVtYXMpXG4gICAgfVxuXG4gICAgY29uc3QgY29tcGxleEtleXNBcnIgPSBjb21wbGV4UmVzb2x2ZXJzLm1hcCgoW21haW5LZXlXb3JkLCByZXNvbHZlckNvbmZdKSA9PlxuICAgICAgYWxsS2V5cy5maWx0ZXIoayA9PiByZXNvbHZlckNvbmYua2V5d29yZHMuaW5jbHVkZXMoaykpKVxuXG4gICAgLy8gcmVtb3ZlIGFsbCBjb21wbGV4IGtleXMgYmVmb3JlIHNpbXBsZSByZXNvbHZlcnNcbiAgICBjb21wbGV4S2V5c0Fyci5mb3JFYWNoKGtleXMgPT4gcHVsbEFsbChhbGxLZXlzLCBrZXlzKSlcblxuICAgIC8vIGNhbGwgYWxsIHNpbXBsZSByZXNvbHZlcnMgZm9yIHJlbGV2YW50IGtleXdvcmRzXG4gICAgYWxsS2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgY29uc3QgdmFsdWVzID0gZ2V0VmFsdWVzKHNjaGVtYXMsIGtleSlcbiAgICAgIGNvbnN0IGNvbXBhY3RlZCA9IHVuaXFXaXRoKHZhbHVlcy5maWx0ZXIobm90VW5kZWZpbmVkKSwgY29tcGFyZVByb3Aoa2V5KSlcblxuICAgICAgLy8gYXJyYXlwcm9wcyBsaWtlIGFueU9mIGFuZCBvbmVPZiBtdXN0IGJlIG1lcmdlZCBmaXJzdCwgYXMgdGhleSBjb250YWlucyBzY2hlbWFzXG4gICAgICAvLyBhbGxPZiBpcyB0cmVhdGVkIGRpZmZlcmVudGx5IGFsbHRvZ2V0aGVyXG4gICAgICBpZiAoY29tcGFjdGVkLmxlbmd0aCA9PT0gMSAmJiBjb250YWlucyhzY2hlbWFBcnJheXMsIGtleSkpIHtcbiAgICAgICAgbWVyZ2VkW2tleV0gPSBjb21wYWN0ZWRbMF0ubWFwKHNjaGVtYSA9PiBtZXJnZVNjaGVtYXMoW3NjaGVtYV0sIHNjaGVtYSkpXG4gICAgICAgIC8vIHByb3AgZ3JvdXBzIG11c3QgYWx3YXlzIGJlIHJlc29sdmVkXG4gICAgICB9IGVsc2UgaWYgKGNvbXBhY3RlZC5sZW5ndGggPT09IDEgJiYgIWNvbnRhaW5zKHNjaGVtYUdyb3VwUHJvcHMsIGtleSkgJiYgIWNvbnRhaW5zKHNjaGVtYVByb3BzLCBrZXkpKSB7XG4gICAgICAgIG1lcmdlZFtrZXldID0gY29tcGFjdGVkWzBdXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZXNvbHZlciA9IG9wdGlvbnMucmVzb2x2ZXJzW2tleV0gfHwgb3B0aW9ucy5yZXNvbHZlcnMuZGVmYXVsdFJlc29sdmVyXG4gICAgICAgIGlmICghcmVzb2x2ZXIpIHRocm93IG5ldyBFcnJvcignTm8gcmVzb2x2ZXIgZm91bmQgZm9yIGtleSAnICsga2V5ICsgJy4gWW91IGNhbiBwcm92aWRlIGEgcmVzb2x2ZXIgZm9yIHRoaXMga2V5d29yZCBpbiB0aGUgb3B0aW9ucywgb3IgcHJvdmlkZSBhIGRlZmF1bHQgcmVzb2x2ZXIuJylcblxuICAgICAgICBjb25zdCBtZXJnZXIgPSAoc2NoZW1hcywgZXh0cmFLZXkgPSBbXSkgPT4gbWVyZ2VTY2hlbWFzKHNjaGVtYXMsIG51bGwsIHBhcmVudHMuY29uY2F0KGtleSwgZXh0cmFLZXkpKVxuICAgICAgICBtZXJnZWRba2V5XSA9IHJlc29sdmVyKGNvbXBhY3RlZCwgcGFyZW50cy5jb25jYXQoa2V5KSwgbWVyZ2VyLCBvcHRpb25zKVxuXG4gICAgICAgIGlmIChtZXJnZWRba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhyb3dJbmNvbXBhdGlibGUoY29tcGFjdGVkLCBwYXJlbnRzLmNvbmNhdChrZXkpKVxuICAgICAgICB9IGVsc2UgaWYgKG1lcmdlZFtrZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkZWxldGUgbWVyZ2VkW2tleV1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gY29tcGxleFJlc29sdmVycy5yZWR1Y2UoKGFsbCwgW3Jlc29sdmVyS2V5d29yZCwgY29uZmlnXSwgaW5kZXgpID0+ICh7XG4gICAgICAuLi5hbGwsXG4gICAgICAuLi5jYWxsR3JvdXBSZXNvbHZlcihjb21wbGV4S2V5c0FycltpbmRleF0sIHJlc29sdmVyS2V5d29yZCwgc2NoZW1hcywgbWVyZ2VTY2hlbWFzLCBvcHRpb25zLCBwYXJlbnRzKVxuICAgIH0pLCBtZXJnZWQpXG4gIH1cblxuICBjb25zdCBhbGxTY2hlbWFzID0gZmxhdHRlbkRlZXAoZ2V0QWxsT2Yocm9vdFNjaGVtYSkpXG4gIGNvbnN0IG1lcmdlZCA9IG1lcmdlU2NoZW1hcyhhbGxTY2hlbWFzKVxuXG4gIHJldHVybiBtZXJnZWRcbn1cblxubWVyZ2VyLm9wdGlvbnMgPSB7XG4gIHJlc29sdmVyczogZGVmYXVsdFJlc29sdmVyc1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1lcmdlclxuIiwiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBpc1N0cmluZyBmcm9tICdsb2Rhc2gvaXNTdHJpbmcnO1xuLyoqIFJldHVybnMgdGhlIGBkaXNjcmltaW5hdG9yLnByb3BlcnR5TmFtZWAgd2hlbiBkZWZpbmVkIGluIHRoZSBgc2NoZW1hYCBpZiBpdCBpcyBhIHN0cmluZy4gQSB3YXJuaW5nIGlzIGdlbmVyYXRlZCB3aGVuXG4gKiBpdCBpcyBub3QgYSBzdHJpbmcuIFJldHVybnMgYHVuZGVmaW5lZGAgd2hlbiBhIHZhbGlkIGRpc2NyaW1pbmF0b3IgaXMgbm90IHByZXNlbnQuXG4gKlxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZnJvbSB3aGljaCB0aGUgZGlzY3JpbWluYXRvciBpcyBwb3RlbnRpYWxseSBvYnRhaW5lZFxuICogQHJldHVybnMgLSBUaGUgYGRpc2NyaW1pbmF0b3IucHJvcGVydHlOYW1lYCBpZiBpdCBleGlzdHMgaW4gdGhlIHNjaGVtYSwgb3RoZXJ3aXNlIGB1bmRlZmluZWRgXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEoc2NoZW1hKSB7XG4gICAgbGV0IGRpc2NyaW1pbmF0b3I7XG4gICAgY29uc3QgbWF5YmVTdHJpbmcgPSBnZXQoc2NoZW1hLCAnZGlzY3JpbWluYXRvci5wcm9wZXJ0eU5hbWUnLCB1bmRlZmluZWQpO1xuICAgIGlmIChpc1N0cmluZyhtYXliZVN0cmluZykpIHtcbiAgICAgICAgZGlzY3JpbWluYXRvciA9IG1heWJlU3RyaW5nO1xuICAgIH1cbiAgICBlbHNlIGlmIChtYXliZVN0cmluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgRXhwZWN0aW5nIGRpc2NyaW1pbmF0b3IgdG8gYmUgYSBzdHJpbmcsIGdvdCBcIiR7dHlwZW9mIG1heWJlU3RyaW5nfVwiIGluc3RlYWRgKTtcbiAgICB9XG4gICAgcmV0dXJuIGRpc2NyaW1pbmF0b3I7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hLmpzLm1hcCIsIi8qKiBHaXZlbiBhIHNwZWNpZmljIGB2YWx1ZWAgYXR0ZW1wdHMgdG8gZ3Vlc3MgdGhlIHR5cGUgb2YgYSBzY2hlbWEgZWxlbWVudC4gSW4gdGhlIGNhc2Ugd2hlcmUgd2UgaGF2ZSB0byBpbXBsaWNpdGx5XG4gKiAgY3JlYXRlIGEgc2NoZW1hLCBpdCBpcyB1c2VmdWwgdG8ga25vdyB3aGF0IHR5cGUgdG8gdXNlIGJhc2VkIG9uIHRoZSBkYXRhIHdlIGFyZSBkZWZpbmluZy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgZnJvbSB3aGljaCB0byBndWVzcyB0aGUgdHlwZVxuICogQHJldHVybnMgLSBUaGUgYmVzdCBndWVzcyBmb3IgdGhlIG9iamVjdCB0eXBlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGd1ZXNzVHlwZSh2YWx1ZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gJ2FycmF5JztcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuICdzdHJpbmcnO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gJ251bGwnO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgcmV0dXJuICdib29sZWFuJztcbiAgICB9XG4gICAgaWYgKCFpc05hTih2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICdudW1iZXInO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gJ29iamVjdCc7XG4gICAgfVxuICAgIC8vIERlZmF1bHQgdG8gc3RyaW5nIGlmIHdlIGNhbid0IGZpZ3VyZSBpdCBvdXRcbiAgICByZXR1cm4gJ3N0cmluZyc7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ndWVzc1R5cGUuanMubWFwIiwidmFyIGJhc2VGbGF0dGVuID0gcmVxdWlyZSgnLi9fYmFzZUZsYXR0ZW4nKSxcbiAgICBiYXNlUmVzdCA9IHJlcXVpcmUoJy4vX2Jhc2VSZXN0JyksXG4gICAgYmFzZVVuaXEgPSByZXF1aXJlKCcuL19iYXNlVW5pcScpLFxuICAgIGlzQXJyYXlMaWtlT2JqZWN0ID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZU9iamVjdCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdW5pcXVlIHZhbHVlcywgaW4gb3JkZXIsIGZyb20gYWxsIGdpdmVuIGFycmF5cyB1c2luZ1xuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbWJpbmVkIHZhbHVlcy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy51bmlvbihbMl0sIFsxLCAyXSk7XG4gKiAvLyA9PiBbMiwgMV1cbiAqL1xudmFyIHVuaW9uID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihhcnJheXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSB1bmlvbjtcbiIsImltcG9ydCBndWVzc1R5cGUgZnJvbSAnLi9ndWVzc1R5cGUnO1xuLyoqIEdldHMgdGhlIHR5cGUgb2YgYSBnaXZlbiBgc2NoZW1hYC4gSWYgdGhlIHR5cGUgaXMgbm90IGV4cGxpY2l0bHkgZGVmaW5lZCwgdGhlbiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gaW5mZXIgaXQgZnJvbVxuICogb3RoZXIgZWxlbWVudHMgb2YgdGhlIHNjaGVtYSBhcyBmb2xsb3dzOlxuICogLSBzY2hlbWEuY29uc3Q6IFJldHVybnMgdGhlIGBndWVzc1R5cGUoKWAgb2YgdGhhdCB2YWx1ZVxuICogLSBzY2hlbWEuZW51bTogUmV0dXJucyBgc3RyaW5nYFxuICogLSBzY2hlbWEucHJvcGVydGllczogUmV0dXJucyBgb2JqZWN0YFxuICogLSBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXM6IFJldHVybnMgYG9iamVjdGBcbiAqIC0gdHlwZSBpcyBhbiBhcnJheSB3aXRoIGEgbGVuZ3RoIG9mIDIgYW5kIG9uZSB0eXBlIGlzICdudWxsJzogUmV0dXJucyB0aGUgb3RoZXIgdHlwZVxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCB0byBnZXQgdGhlIHR5cGVcbiAqIEByZXR1cm5zIC0gVGhlIHR5cGUgb2YgdGhlIHNjaGVtYVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRTY2hlbWFUeXBlKHNjaGVtYSkge1xuICAgIGxldCB7IHR5cGUgfSA9IHNjaGVtYTtcbiAgICBpZiAoIXR5cGUgJiYgc2NoZW1hLmNvbnN0KSB7XG4gICAgICAgIHJldHVybiBndWVzc1R5cGUoc2NoZW1hLmNvbnN0KTtcbiAgICB9XG4gICAgaWYgKCF0eXBlICYmIHNjaGVtYS5lbnVtKSB7XG4gICAgICAgIHJldHVybiAnc3RyaW5nJztcbiAgICB9XG4gICAgaWYgKCF0eXBlICYmIChzY2hlbWEucHJvcGVydGllcyB8fCBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpKSB7XG4gICAgICAgIHJldHVybiAnb2JqZWN0JztcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodHlwZSkpIHtcbiAgICAgICAgaWYgKHR5cGUubGVuZ3RoID09PSAyICYmIHR5cGUuaW5jbHVkZXMoJ251bGwnKSkge1xuICAgICAgICAgICAgdHlwZSA9IHR5cGUuZmluZCgodHlwZSkgPT4gdHlwZSAhPT0gJ251bGwnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlWzBdO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0eXBlO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0U2NoZW1hVHlwZS5qcy5tYXAiLCJpbXBvcnQgdW5pb24gZnJvbSAnbG9kYXNoL3VuaW9uJztcbmltcG9ydCB7IFJFUVVJUkVEX0tFWSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCBnZXRTY2hlbWFUeXBlIGZyb20gJy4vZ2V0U2NoZW1hVHlwZSc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pc09iamVjdCc7XG4vKiogUmVjdXJzaXZlbHkgbWVyZ2UgZGVlcGx5IG5lc3RlZCBzY2hlbWFzLiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGBtZXJnZVNjaGVtYXNgIGFuZCBgbWVyZ2VPYmplY3RzYCBpcyB0aGF0XG4gKiBgbWVyZ2VTY2hlbWFzYCBvbmx5IGNvbmNhdHMgYXJyYXlzIGZvciB2YWx1ZXMgdW5kZXIgdGhlICdyZXF1aXJlZCcga2V5d29yZCwgYW5kIHdoZW4gaXQgZG9lcywgaXQgZG9lc24ndCBpbmNsdWRlXG4gKiBkdXBsaWNhdGUgdmFsdWVzLlxuICpcbiAqIEBwYXJhbSBvYmoxIC0gVGhlIGZpcnN0IHNjaGVtYSBvYmplY3QgdG8gbWVyZ2VcbiAqIEBwYXJhbSBvYmoyIC0gVGhlIHNlY29uZCBzY2hlbWEgb2JqZWN0IHRvIG1lcmdlXG4gKiBAcmV0dXJucyAtIFRoZSBtZXJnZWQgc2NoZW1hIG9iamVjdFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZVNjaGVtYXMob2JqMSwgb2JqMikge1xuICAgIGNvbnN0IGFjYyA9IE9iamVjdC5hc3NpZ24oe30sIG9iajEpOyAvLyBQcmV2ZW50IG11dGF0aW9uIG9mIHNvdXJjZSBvYmplY3QuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iajIpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgY29uc3QgbGVmdCA9IG9iajEgPyBvYmoxW2tleV0gOiB7fSwgcmlnaHQgPSBvYmoyW2tleV07XG4gICAgICAgIGlmIChvYmoxICYmIGtleSBpbiBvYmoxICYmIGlzT2JqZWN0KHJpZ2h0KSkge1xuICAgICAgICAgICAgYWNjW2tleV0gPSBtZXJnZVNjaGVtYXMobGVmdCwgcmlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG9iajEgJiZcbiAgICAgICAgICAgIG9iajIgJiZcbiAgICAgICAgICAgIChnZXRTY2hlbWFUeXBlKG9iajEpID09PSAnb2JqZWN0JyB8fCBnZXRTY2hlbWFUeXBlKG9iajIpID09PSAnb2JqZWN0JykgJiZcbiAgICAgICAgICAgIGtleSA9PT0gUkVRVUlSRURfS0VZICYmXG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KGxlZnQpICYmXG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KHJpZ2h0KSkge1xuICAgICAgICAgICAgLy8gRG9uJ3QgaW5jbHVkZSBkdXBsaWNhdGUgdmFsdWVzIHdoZW4gbWVyZ2luZyAncmVxdWlyZWQnIGZpZWxkcy5cbiAgICAgICAgICAgIGFjY1trZXldID0gdW5pb24obGVmdCwgcmlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYWNjW2tleV0gPSByaWdodDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIGFjYyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tZXJnZVNjaGVtYXMuanMubWFwIiwiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJztcbmltcG9ydCBzZXQgZnJvbSAnbG9kYXNoL3NldCc7XG5pbXBvcnQgdGltZXMgZnJvbSAnbG9kYXNoL3RpbWVzJztcbmltcG9ydCB0cmFuc2Zvcm0gZnJvbSAnbG9kYXNoL3RyYW5zZm9ybSc7XG5pbXBvcnQgbWVyZ2UgZnJvbSAnbG9kYXNoL21lcmdlJztcbmltcG9ydCBmbGF0dGVuRGVlcCBmcm9tICdsb2Rhc2gvZmxhdHRlbkRlZXAnO1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoL3VuaXEnO1xuaW1wb3J0IG1lcmdlQWxsT2YgZnJvbSAnanNvbi1zY2hlbWEtbWVyZ2UtYWxsb2YnO1xuaW1wb3J0IHsgQURESVRJT05BTF9QUk9QRVJUSUVTX0tFWSwgQURESVRJT05BTF9QUk9QRVJUWV9GTEFHLCBBTExfT0ZfS0VZLCBBTllfT0ZfS0VZLCBERVBFTkRFTkNJRVNfS0VZLCBJRl9LRVksIE9ORV9PRl9LRVksIFJFRl9LRVksIFBST1BFUlRJRVNfS0VZLCBJVEVNU19LRVksIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBmaW5kU2NoZW1hRGVmaW5pdGlvbiwgeyBzcGxpdEtleUVsZW1lbnRGcm9tT2JqZWN0IH0gZnJvbSAnLi4vZmluZFNjaGVtYURlZmluaXRpb24nO1xuaW1wb3J0IGdldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEgZnJvbSAnLi4vZ2V0RGlzY3JpbWluYXRvckZpZWxkRnJvbVNjaGVtYSc7XG5pbXBvcnQgZ3Vlc3NUeXBlIGZyb20gJy4uL2d1ZXNzVHlwZSc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnLi4vaXNPYmplY3QnO1xuaW1wb3J0IG1lcmdlU2NoZW1hcyBmcm9tICcuLi9tZXJnZVNjaGVtYXMnO1xuaW1wb3J0IGdldEZpcnN0TWF0Y2hpbmdPcHRpb24gZnJvbSAnLi9nZXRGaXJzdE1hdGNoaW5nT3B0aW9uJztcbi8qKiBSZXRyaWV2ZXMgYW4gZXhwYW5kZWQgc2NoZW1hIHRoYXQgaGFzIGhhZCBhbGwgb2YgaXRzIGNvbmRpdGlvbnMsIGFkZGl0aW9uYWwgcHJvcGVydGllcywgcmVmZXJlbmNlcyBhbmQgZGVwZW5kZW5jaWVzXG4gKiByZXNvbHZlZCBhbmQgbWVyZ2VkIGludG8gdGhlIGBzY2hlbWFgIGdpdmVuIGEgYHZhbGlkYXRvcmAsIGByb290U2NoZW1hYCBhbmQgYHJhd0Zvcm1EYXRhYCB0aGF0IGlzIHVzZWQgdG8gZG8gdGhlXG4gKiBwb3RlbnRpYWxseSByZWN1cnNpdmUgcmVzb2x1dGlvbi5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCByZXRyaWV2aW5nIGEgc2NoZW1hIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSBbcm9vdFNjaGVtYT17fV0gLSBUaGUgcm9vdCBzY2hlbWEgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBbcmF3Rm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgc2NoZW1hIGhhdmluZyBpdHMgY29uZGl0aW9ucywgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLCByZWZlcmVuY2VzIGFuZCBkZXBlbmRlbmNpZXMgcmVzb2x2ZWRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEgPSB7fSwgcmF3Rm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgcmV0dXJuIHJldHJpZXZlU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIHJhd0Zvcm1EYXRhLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpWzBdO1xufVxuLyoqIFJlc29sdmVzIGEgY29uZGl0aW9uYWwgYmxvY2sgKGlmL2Vsc2UvdGhlbikgYnkgcmVtb3ZpbmcgdGhlIGNvbmRpdGlvbiBhbmQgbWVyZ2luZyB0aGUgYXBwcm9wcmlhdGUgY29uZGl0aW9uYWwgYnJhbmNoXG4gKiB3aXRoIHRoZSByZXN0IG9mIHRoZSBzY2hlbWEuIElmIGBleHBhbmRBbGxCcmFuY2hlc2AgaXMgdHJ1ZSwgdGhlbiB0aGUgYHJldHJpZXZlU2NoZW1hSW50ZXJhbCgpYCByZXN1bHRzIGZvciBib3RoXG4gKiBjb25kaXRpb25zIHdpbGwgYmUgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgaXMgdXNlZCB0byBkZXRlY3QgdmFsaWQgc2NoZW1hIGNvbmRpdGlvbnNcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCByZXNvbHZpbmcgYSBjb25kaXRpb24gaXMgZGVzaXJlZFxuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBleHBhbmRBbGxCcmFuY2hlcyAtIEZsYWcsIGlmIHRydWUsIHdpbGwgcmV0dXJuIGFsbCBwb3NzaWJsZSBicmFuY2hlcyBvZiBjb25kaXRpb25zLCBhbnkvb25lT2YgYW5kXG4gKiAgICAgICAgICBkZXBlbmRlbmNpZXMgYXMgYSBsaXN0IG9mIHNjaGVtYXNcbiAqIEBwYXJhbSByZWN1cnNlTGlzdCAtIFRoZSBsaXN0IG9mIHJlY3Vyc2l2ZSByZWZlcmVuY2VzIGFscmVhZHkgcHJvY2Vzc2VkXG4gKiBAcGFyYW0gW2Zvcm1EYXRhXSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhIHRvIGFzc2lzdCByZXRyaWV2aW5nIGEgc2NoZW1hXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gQSBsaXN0IG9mIHNjaGVtYXMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgY29uZGl0aW9ucyByZXNvbHZlZCwgcG9zc2libHkgd2l0aCBhbGwgYnJhbmNoZXMgZXhwYW5kZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDb25kaXRpb24odmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgY29uc3QgeyBpZjogZXhwcmVzc2lvbiwgdGhlbiwgZWxzZTogb3RoZXJ3aXNlLCAuLi5yZXNvbHZlZFNjaGVtYUxlc3NDb25kaXRpb25hbCB9ID0gc2NoZW1hO1xuICAgIGNvbnN0IGNvbmRpdGlvblZhbHVlID0gdmFsaWRhdG9yLmlzVmFsaWQoZXhwcmVzc2lvbiwgZm9ybURhdGEgfHwge30sIHJvb3RTY2hlbWEpO1xuICAgIGxldCByZXNvbHZlZFNjaGVtYXMgPSBbcmVzb2x2ZWRTY2hlbWFMZXNzQ29uZGl0aW9uYWxdO1xuICAgIGxldCBzY2hlbWFzID0gW107XG4gICAgaWYgKGV4cGFuZEFsbEJyYW5jaGVzKSB7XG4gICAgICAgIGlmICh0aGVuICYmIHR5cGVvZiB0aGVuICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHNjaGVtYXMgPSBzY2hlbWFzLmNvbmNhdChyZXRyaWV2ZVNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgdGhlbiwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3RoZXJ3aXNlICYmIHR5cGVvZiBvdGhlcndpc2UgIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgc2NoZW1hcyA9IHNjaGVtYXMuY29uY2F0KHJldHJpZXZlU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBvdGhlcndpc2UsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IGNvbmRpdGlvbmFsU2NoZW1hID0gY29uZGl0aW9uVmFsdWUgPyB0aGVuIDogb3RoZXJ3aXNlO1xuICAgICAgICBpZiAoY29uZGl0aW9uYWxTY2hlbWEgJiYgdHlwZW9mIGNvbmRpdGlvbmFsU2NoZW1hICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHNjaGVtYXMgPSBzY2hlbWFzLmNvbmNhdChyZXRyaWV2ZVNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgY29uZGl0aW9uYWxTY2hlbWEsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNjaGVtYXMubGVuZ3RoKSB7XG4gICAgICAgIHJlc29sdmVkU2NoZW1hcyA9IHNjaGVtYXMubWFwKChzKSA9PiBtZXJnZVNjaGVtYXMocmVzb2x2ZWRTY2hlbWFMZXNzQ29uZGl0aW9uYWwsIHMpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVkU2NoZW1hcy5mbGF0TWFwKChzKSA9PiByZXRyaWV2ZVNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgcywgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpKTtcbn1cbi8qKiBHaXZlbiBhIGxpc3Qgb2YgbGlzdHMgb2YgYWxsT2YsIGFueU9mIG9yIG9uZU9mIHZhbHVlcywgY3JlYXRlIGEgbGlzdCBvZiBsaXN0cyBvZiBhbGwgcGVybXV0YXRpb25zIG9mIHRoZSB2YWx1ZXMuIFRoZVxuICogYGxpc3RPZkxpc3RzYCBpcyBleHBlY3RlZCB0byBiZSBhbGwgcmVzb2x2ZWQgdmFsdWVzIG9mIHRoZSAxc3QuLi5udGggc2NoZW1hcyB3aXRoaW4gYW4gYGFsbE9mYCwgYGFueU9mYCBvciBgb25lT2ZgLlxuICogRnJvbSB0aG9zZSBsaXN0cywgYnVpbGQgYSBtYXRyaXggZm9yIGVhY2ggYHh4eE9mYCB3aGVyZSB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIHNjaGVtYSBmb3IgYSByb3cgaW4gdGhlIGxpc3Qgb2YgbGlzdHMuXG4gKlxuICogRm9yIGV4YW1wbGU6XG4gKiAtIElmIHRoZXJlIGFyZSB0aHJlZSB4eHhPZiByb3dzIChBLCBCLCBDKSBhbmQgdGhleSBoYXZlIGJlZW4gcmVzb2x2ZWQgc3VjaCB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIEEsIHR3byBCIGFuZCB0aHJlZVxuICogICBDIHNjaGVtYXMgdGhlbjpcbiAqICAgLSBUaGUgcGVybXV0YXRpb24gZm9yIHRoZSBmaXJzdCByb3cgaXMgYFtbQV1dYFxuICogICAtIFRoZSBwZXJtdXRhdGlvbnMgZm9yIHRoZSBzZWNvbmQgcm93IGFyZSBgW1tBLEIxXSwgW0EsQjJdXWBcbiAqICAgLSBUaGUgcGVybXV0YXRpb25zIGZvciB0aGUgdGhpcmQgcm93IGFyZSBgW1tBLEIxLEMxXSwgW0EsQjEsQzJdLCBbQSxCMSxDM10sIFtBLEIyLEMxXSwgW0EsQjIsQzJdLCBbQSxCMixDM11dYFxuICpcbiAqIEBwYXJhbSBsaXN0T2ZMaXN0cyAtIFRoZSBsaXN0IG9mIGxpc3RzIG9mIGVsZW1lbnRzIHRoYXQgcmVwcmVzZW50IHRoZSBhbGxPZiwgYW55T2Ygb3Igb25lT2YgcmVzb2x2ZWQgdmFsdWVzIGluIG9yZGVyXG4gKiBAcmV0dXJucyAtIFRoZSBsaXN0IG9mIGFsbCBwZXJtdXRhdGlvbnMgb2Ygc2NoZW1hcyBmb3IgYSBzZXQgb2YgYHh4eE9mYHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbFBlcm11dGF0aW9uc09mWHh4T2YobGlzdE9mTGlzdHMpIHtcbiAgICBjb25zdCBhbGxQZXJtdXRhdGlvbnMgPSBsaXN0T2ZMaXN0cy5yZWR1Y2UoKHBlcm11dGF0aW9ucywgbGlzdCkgPT4ge1xuICAgICAgICAvLyBXaGVuIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIHNldCBvZiBzY2hlbWFzIGZvciBhIHJvdywgZHVwbGljYXRlIHRoZSBzZXQgb2YgcGVybXV0YXRpb25zIGFuZCBhZGQgaW4gdGhlIHZhbHVlc1xuICAgICAgICBpZiAobGlzdC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICByZXR1cm4gbGlzdC5mbGF0TWFwKChlbGVtZW50KSA9PiB0aW1lcyhwZXJtdXRhdGlvbnMubGVuZ3RoLCAoaSkgPT4gWy4uLnBlcm11dGF0aW9uc1tpXV0uY29uY2F0KGVsZW1lbnQpKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gT3RoZXJ3aXNlIGp1c3QgcHVzaCBpbiB0aGUgc2luZ2xlIHZhbHVlIGludG8gdGhlIGN1cnJlbnQgc2V0IG9mIHBlcm11dGF0aW9uc1xuICAgICAgICBwZXJtdXRhdGlvbnMuZm9yRWFjaCgocGVybXV0YXRpb24pID0+IHBlcm11dGF0aW9uLnB1c2gobGlzdFswXSkpO1xuICAgICAgICByZXR1cm4gcGVybXV0YXRpb25zO1xuICAgIH0sIFtbXV0gLy8gU3RhcnQgd2l0aCBhbiBlbXB0eSBsaXN0XG4gICAgKTtcbiAgICByZXR1cm4gYWxsUGVybXV0YXRpb25zO1xufVxuLyoqIFJlc29sdmVzIHJlZmVyZW5jZXMgYW5kIGRlcGVuZGVuY2llcyB3aXRoaW4gYSBzY2hlbWEgYW5kIGl0cyAnYWxsT2YnIGNoaWxkcmVuLiBQYXNzZXMgdGhlIGBleHBhbmRBbGxCcmFuY2hlc2AgZmxhZ1xuICogZG93biB0byB0aGUgYHJldHJpZXZlU2NoZW1hSW50ZXJuYWwoKWAsIGByZXNvbHZlUmVmZXJlbmNlKClgIGFuZCBgcmVzb2x2ZURlcGVuZGVuY2llcygpYCBoZWxwZXIgY2FsbHMuIElmXG4gKiBgZXhwYW5kQWxsQnJhbmNoZXNgIGlzIHRydWUsIHRoZW4gYWxsIHBvc3NpYmxlIGRlcGVuZGVuY2llcyBhbmQvb3IgYWxsT2YgYnJhbmNoZXMgYXJlIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHJlc29sdmluZyBhIHNjaGVtYSBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IHNjaGVtYSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIGV4cGFuZEFsbEJyYW5jaGVzIC0gRmxhZywgaWYgdHJ1ZSwgd2lsbCByZXR1cm4gYWxsIHBvc3NpYmxlIGJyYW5jaGVzIG9mIGNvbmRpdGlvbnMsIGFueS9vbmVPZiBhbmQgZGVwZW5kZW5jaWVzXG4gKiAgICAgICAgICBhcyBhIGxpc3Qgb2Ygc2NoZW1hc1xuICogQHBhcmFtIHJlY3Vyc2VMaXN0IC0gVGhlIGxpc3Qgb2YgcmVjdXJzaXZlIHJlZmVyZW5jZXMgYWxyZWFkeSBwcm9jZXNzZWRcbiAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgbGlzdCBvZiBzY2hlbWFzIGhhdmluZyBpdHMgcmVmZXJlbmNlcywgZGVwZW5kZW5jaWVzIGFuZCBhbGxPZiBzY2hlbWFzIHJlc29sdmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlU2NoZW1hKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIGNvbnN0IHVwZGF0ZWRTY2hlbWFzID0gcmVzb2x2ZVJlZmVyZW5jZSh2YWxpZGF0b3IsIHNjaGVtYSwgcm9vdFNjaGVtYSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBmb3JtRGF0YSk7XG4gICAgaWYgKHVwZGF0ZWRTY2hlbWFzLmxlbmd0aCA+IDEgfHwgdXBkYXRlZFNjaGVtYXNbMF0gIT09IHNjaGVtYSkge1xuICAgICAgICAvLyByZXR1cm4gdGhlIHVwZGF0ZWRTY2hlbWFzIGFycmF5IGlmIGl0IGhhcyBlaXRoZXIgbXVsdGlwbGUgc2NoZW1hcyB3aXRoaW4gaXRcbiAgICAgICAgLy8gT1IgdGhlIGZpcnN0IHNjaGVtYSBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIG9yaWdpbmFsIHNjaGVtYVxuICAgICAgICByZXR1cm4gdXBkYXRlZFNjaGVtYXM7XG4gICAgfVxuICAgIGlmIChERVBFTkRFTkNJRVNfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICBjb25zdCByZXNvbHZlZFNjaGVtYXMgPSByZXNvbHZlRGVwZW5kZW5jaWVzKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGZvcm1EYXRhKTtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVkU2NoZW1hcy5mbGF0TWFwKChzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmV0cmlldmVTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIHMsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChBTExfT0ZfS0VZIGluIHNjaGVtYSAmJiBBcnJheS5pc0FycmF5KHNjaGVtYS5hbGxPZikpIHtcbiAgICAgICAgY29uc3QgYWxsT2ZTY2hlbWFFbGVtZW50cyA9IHNjaGVtYS5hbGxPZi5tYXAoKGFsbE9mU3Vic2NoZW1hKSA9PiByZXRyaWV2ZVNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgYWxsT2ZTdWJzY2hlbWEsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSk7XG4gICAgICAgIGNvbnN0IGFsbFBlcm11dGF0aW9ucyA9IGdldEFsbFBlcm11dGF0aW9uc09mWHh4T2YoYWxsT2ZTY2hlbWFFbGVtZW50cyk7XG4gICAgICAgIHJldHVybiBhbGxQZXJtdXRhdGlvbnMubWFwKChwZXJtdXRhdGlvbikgPT4gKHsgLi4uc2NoZW1hLCBhbGxPZjogcGVybXV0YXRpb24gfSkpO1xuICAgIH1cbiAgICAvLyBObyAkcmVmIG9yIGRlcGVuZGVuY2llcyBvciBhbGxPZiBhdHRyaWJ1dGUgd2FzIGZvdW5kLCByZXR1cm5pbmcgdGhlIG9yaWdpbmFsIHNjaGVtYS5cbiAgICByZXR1cm4gW3NjaGVtYV07XG59XG4vKiogUmVzb2x2ZXMgYWxsIHJlZmVyZW5jZXMgd2l0aGluIGEgc2NoZW1hIGFuZCB0aGVuIHJldHVybnMgdGhlIGByZXRyaWV2ZVNjaGVtYUludGVybmFsKClgIGlmIHRoZSByZXNvbHZlZCBzY2hlbWEgaXNcbiAqIGFjdHVhbGx5IGRpZmZlcmVudCB0aGFuIHRoZSBvcmlnaW5hbC4gUGFzc2VzIHRoZSBgZXhwYW5kQWxsQnJhbmNoZXNgIGZsYWcgZG93biB0byB0aGUgYHJldHJpZXZlU2NoZW1hSW50ZXJuYWwoKWBcbiAqIGhlbHBlciBjYWxsLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHJlc29sdmluZyBhIHJlZmVyZW5jZSBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IHNjaGVtYSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIGV4cGFuZEFsbEJyYW5jaGVzIC0gRmxhZywgaWYgdHJ1ZSwgd2lsbCByZXR1cm4gYWxsIHBvc3NpYmxlIGJyYW5jaGVzIG9mIGNvbmRpdGlvbnMsIGFueS9vbmVPZiBhbmQgZGVwZW5kZW5jaWVzXG4gKiAgICAgICAgICBhcyBhIGxpc3Qgb2Ygc2NoZW1hc1xuICogQHBhcmFtIHJlY3Vyc2VMaXN0IC0gVGhlIGxpc3Qgb2YgcmVjdXJzaXZlIHJlZmVyZW5jZXMgYWxyZWFkeSBwcm9jZXNzZWRcbiAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgbGlzdCBzY2hlbWFzIHJldHJpZXZlZCBhZnRlciBoYXZpbmcgYWxsIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSZWZlcmVuY2UodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgY29uc3QgdXBkYXRlZFNjaGVtYSA9IHJlc29sdmVBbGxSZWZlcmVuY2VzKHNjaGVtYSwgcm9vdFNjaGVtYSwgcmVjdXJzZUxpc3QpO1xuICAgIGlmICh1cGRhdGVkU2NoZW1hICE9PSBzY2hlbWEpIHtcbiAgICAgICAgLy8gT25seSBjYWxsIHRoaXMgaWYgdGhlIHNjaGVtYSB3YXMgYWN0dWFsbHkgY2hhbmdlZCBieSB0aGUgYHJlc29sdmVBbGxSZWZlcmVuY2VzKClgIGZ1bmN0aW9uXG4gICAgICAgIHJldHVybiByZXRyaWV2ZVNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgdXBkYXRlZFNjaGVtYSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgIH1cbiAgICByZXR1cm4gW3NjaGVtYV07XG59XG4vKiogUmVzb2x2ZXMgYWxsIHJlZmVyZW5jZXMgd2l0aGluIHRoZSBzY2hlbWEgaXRzZWxmIGFzIHdlbGwgYXMgYW55IG9mIGl0cyBwcm9wZXJ0aWVzIGFuZCBhcnJheSBpdGVtcy5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggcmVzb2x2aW5nIGFsbCByZWZlcmVuY2VzIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gcmVjdXJzZUxpc3QgLSBMaXN0IG9mICRyZWZzIGFscmVhZHkgcmVzb2x2ZWQgdG8gcHJldmVudCByZWN1cnNpb25cbiAqIEByZXR1cm5zIC0gZ2l2ZW4gc2NoZW1hIHdpbGwgYWxsIHJlZmVyZW5jZXMgcmVzb2x2ZWQgb3IgdGhlIG9yaWdpbmFsIHNjaGVtYSBpZiBubyBpbnRlcm5hbCBgJHJlZnNgIHdlcmUgcmVzb2x2ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVBbGxSZWZlcmVuY2VzKHNjaGVtYSwgcm9vdFNjaGVtYSwgcmVjdXJzZUxpc3QpIHtcbiAgICBpZiAoIWlzT2JqZWN0KHNjaGVtYSkpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYTtcbiAgICB9XG4gICAgbGV0IHJlc29sdmVkU2NoZW1hID0gc2NoZW1hO1xuICAgIC8vIHJlc29sdmUgdG9wIGxldmVsIHJlZlxuICAgIGlmIChSRUZfS0VZIGluIHJlc29sdmVkU2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IHsgJHJlZiwgLi4ubG9jYWxTY2hlbWEgfSA9IHJlc29sdmVkU2NoZW1hO1xuICAgICAgICAvLyBDaGVjayBmb3IgYSByZWN1cnNpdmUgcmVmZXJlbmNlIGFuZCBzdG9wIHRoZSBsb29wXG4gICAgICAgIGlmIChyZWN1cnNlTGlzdC5pbmNsdWRlcygkcmVmKSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVkU2NoZW1hO1xuICAgICAgICB9XG4gICAgICAgIHJlY3Vyc2VMaXN0LnB1c2goJHJlZik7XG4gICAgICAgIC8vIFJldHJpZXZlIHRoZSByZWZlcmVuY2VkIHNjaGVtYSBkZWZpbml0aW9uLlxuICAgICAgICBjb25zdCByZWZTY2hlbWEgPSBmaW5kU2NoZW1hRGVmaW5pdGlvbigkcmVmLCByb290U2NoZW1hKTtcbiAgICAgICAgcmVzb2x2ZWRTY2hlbWEgPSB7IC4uLnJlZlNjaGVtYSwgLi4ubG9jYWxTY2hlbWEgfTtcbiAgICB9XG4gICAgaWYgKFBST1BFUlRJRVNfS0VZIGluIHJlc29sdmVkU2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuTGlzdHMgPSBbXTtcbiAgICAgICAgY29uc3QgdXBkYXRlZFByb3BzID0gdHJhbnNmb3JtKHJlc29sdmVkU2NoZW1hW1BST1BFUlRJRVNfS0VZXSwgKHJlc3VsdCwgdmFsdWUsIGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRMaXN0ID0gWy4uLnJlY3Vyc2VMaXN0XTtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gcmVzb2x2ZUFsbFJlZmVyZW5jZXModmFsdWUsIHJvb3RTY2hlbWEsIGNoaWxkTGlzdCk7XG4gICAgICAgICAgICBjaGlsZHJlbkxpc3RzLnB1c2goY2hpbGRMaXN0KTtcbiAgICAgICAgfSwge30pO1xuICAgICAgICBtZXJnZShyZWN1cnNlTGlzdCwgdW5pcShmbGF0dGVuRGVlcChjaGlsZHJlbkxpc3RzKSkpO1xuICAgICAgICByZXNvbHZlZFNjaGVtYSA9IHsgLi4ucmVzb2x2ZWRTY2hlbWEsIFtQUk9QRVJUSUVTX0tFWV06IHVwZGF0ZWRQcm9wcyB9O1xuICAgIH1cbiAgICBpZiAoSVRFTVNfS0VZIGluIHJlc29sdmVkU2NoZW1hICYmXG4gICAgICAgICFBcnJheS5pc0FycmF5KHJlc29sdmVkU2NoZW1hLml0ZW1zKSAmJlxuICAgICAgICB0eXBlb2YgcmVzb2x2ZWRTY2hlbWEuaXRlbXMgIT09ICdib29sZWFuJykge1xuICAgICAgICByZXNvbHZlZFNjaGVtYSA9IHtcbiAgICAgICAgICAgIC4uLnJlc29sdmVkU2NoZW1hLFxuICAgICAgICAgICAgaXRlbXM6IHJlc29sdmVBbGxSZWZlcmVuY2VzKHJlc29sdmVkU2NoZW1hLml0ZW1zLCByb290U2NoZW1hLCByZWN1cnNlTGlzdCksXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBpc0VxdWFsKHNjaGVtYSwgcmVzb2x2ZWRTY2hlbWEpID8gc2NoZW1hIDogcmVzb2x2ZWRTY2hlbWE7XG59XG4vKiogQ3JlYXRlcyBuZXcgJ3Byb3BlcnRpZXMnIGl0ZW1zIGZvciBlYWNoIGtleSBpbiB0aGUgYGZvcm1EYXRhYFxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHRoZVNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBleGlzdGluZyBhZGRpdGlvbmFsIHByb3BlcnRpZXMgaXMgZGVzaXJlZFxuICogQHBhcmFtIFtyb290U2NoZW1hXSAtIFRoZSByb290IHNjaGVtYSwgdXNlZCB0byBwcmltYXJpbHkgdG8gbG9vayB1cCBgJHJlZmBzICogQHBhcmFtIHZhbGlkYXRvclxuICogQHBhcmFtIFthRm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgdXBkYXRlZCBzY2hlbWEgd2l0aCBhZGRpdGlvbmFsIHByb3BlcnRpZXMgc3R1YmJlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3R1YkV4aXN0aW5nQWRkaXRpb25hbFByb3BlcnRpZXModmFsaWRhdG9yLCB0aGVTY2hlbWEsIHJvb3RTY2hlbWEsIGFGb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICAvLyBDbG9uZSB0aGUgc2NoZW1hIHNvIHRoYXQgd2UgZG9uJ3QgcnVpbiB0aGUgY29uc3VtZXIncyBvcmlnaW5hbFxuICAgIGNvbnN0IHNjaGVtYSA9IHtcbiAgICAgICAgLi4udGhlU2NoZW1hLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7IC4uLnRoZVNjaGVtYS5wcm9wZXJ0aWVzIH0sXG4gICAgfTtcbiAgICAvLyBtYWtlIHN1cmUgZm9ybURhdGEgaXMgYW4gb2JqZWN0XG4gICAgY29uc3QgZm9ybURhdGEgPSBhRm9ybURhdGEgJiYgaXNPYmplY3QoYUZvcm1EYXRhKSA/IGFGb3JtRGF0YSA6IHt9O1xuICAgIE9iamVjdC5rZXlzKGZvcm1EYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaWYgKGtleSBpbiBzY2hlbWEucHJvcGVydGllcykge1xuICAgICAgICAgICAgLy8gTm8gbmVlZCB0byBzdHViLCBvdXIgc2NoZW1hIGFscmVhZHkgaGFzIHRoZSBwcm9wZXJ0eVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBhZGRpdGlvbmFsUHJvcGVydGllcyA9IHt9O1xuICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICBpZiAoUkVGX0tFWSBpbiBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllcyA9IHJldHJpZXZlU2NoZW1hKHZhbGlkYXRvciwgeyAkcmVmOiBnZXQoc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLCBbUkVGX0tFWV0pIH0sIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICgndHlwZScgaW4gc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXMgPSB7IC4uLnNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoQU5ZX09GX0tFWSBpbiBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMgfHwgT05FX09GX0tFWSBpbiBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgICAgIC4uLnNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXMgPSB7IHR5cGU6IGd1ZXNzVHlwZShnZXQoZm9ybURhdGEsIFtrZXldKSkgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzID0geyB0eXBlOiBndWVzc1R5cGUoZ2V0KGZvcm1EYXRhLCBba2V5XSkpIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlIHR5cGUgb2Ygb3VyIG5ldyBrZXkgc2hvdWxkIG1hdGNoIHRoZSBhZGRpdGlvbmFsUHJvcGVydGllcyB2YWx1ZTtcbiAgICAgICAgc2NoZW1hLnByb3BlcnRpZXNba2V5XSA9IGFkZGl0aW9uYWxQcm9wZXJ0aWVzO1xuICAgICAgICAvLyBTZXQgb3VyIGFkZGl0aW9uYWwgcHJvcGVydHkgZmxhZyBzbyB3ZSBrbm93IGl0IHdhcyBkeW5hbWljYWxseSBhZGRlZFxuICAgICAgICBzZXQoc2NoZW1hLnByb3BlcnRpZXMsIFtrZXksIEFERElUSU9OQUxfUFJPUEVSVFlfRkxBR10sIHRydWUpO1xuICAgIH0pO1xuICAgIHJldHVybiBzY2hlbWE7XG59XG4vKiogSW50ZXJuYWwgaGFuZGxlciB0aGF0IHJldHJpZXZlcyBhbiBleHBhbmRlZCBzY2hlbWEgdGhhdCBoYXMgaGFkIGFsbCBvZiBpdHMgY29uZGl0aW9ucywgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLFxuICogcmVmZXJlbmNlcyBhbmQgZGVwZW5kZW5jaWVzIHJlc29sdmVkIGFuZCBtZXJnZWQgaW50byB0aGUgYHNjaGVtYWAgZ2l2ZW4gYSBgdmFsaWRhdG9yYCwgYHJvb3RTY2hlbWFgIGFuZCBgcmF3Rm9ybURhdGFgXG4gKiB0aGF0IGlzIHVzZWQgdG8gZG8gdGhlIHBvdGVudGlhbGx5IHJlY3Vyc2l2ZSByZXNvbHV0aW9uLiBJZiBgZXhwYW5kQWxsQnJhbmNoZXNgIGlzIHRydWUsIHRoZW4gYWxsIHBvc3NpYmxlIGJyYW5jaGVzXG4gKiBvZiB0aGUgc2NoZW1hIGFuZCBpdHMgcmVmZXJlbmNlcywgY29uZGl0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGFyZSByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCByZXRyaWV2aW5nIGEgc2NoZW1hIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gW3Jhd0Zvcm1EYXRhXSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIHRvIGFzc2lzdCByZXRyaWV2aW5nIGEgc2NoZW1hXG4gKiBAcGFyYW0gW2V4cGFuZEFsbEJyYW5jaGVzPWZhbHNlXSAtIEZsYWcsIGlmIHRydWUsIHdpbGwgcmV0dXJuIGFsbCBwb3NzaWJsZSBicmFuY2hlcyBvZiBjb25kaXRpb25zLCBhbnkvb25lT2YgYW5kXG4gKiAgICAgICAgICBkZXBlbmRlbmNpZXMgYXMgYSBsaXN0IG9mIHNjaGVtYXNcbiAqIEBwYXJhbSBbcmVjdXJzZUxpc3Q9W11dIC0gVGhlIG9wdGlvbmFsLCBsaXN0IG9mIHJlY3Vyc2l2ZSByZWZlcmVuY2VzIGFscmVhZHkgcHJvY2Vzc2VkXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gVGhlIHNjaGVtYShzKSByZXN1bHRpbmcgZnJvbSBoYXZpbmcgaXRzIGNvbmRpdGlvbnMsIGFkZGl0aW9uYWwgcHJvcGVydGllcywgcmVmZXJlbmNlcyBhbmQgZGVwZW5kZW5jaWVzXG4gKiAgICAgICAgICByZXNvbHZlZC4gTXVsdGlwbGUgc2NoZW1hcyBtYXkgYmUgcmV0dXJuZWQgaWYgYGV4cGFuZEFsbEJyYW5jaGVzYCBpcyB0cnVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmV0cmlldmVTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIHNjaGVtYSwgcm9vdFNjaGVtYSwgcmF3Rm9ybURhdGEsIGV4cGFuZEFsbEJyYW5jaGVzID0gZmFsc2UsIHJlY3Vyc2VMaXN0ID0gW10sIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgaWYgKCFpc09iamVjdChzY2hlbWEpKSB7XG4gICAgICAgIHJldHVybiBbe31dO1xuICAgIH1cbiAgICBjb25zdCByZXNvbHZlZFNjaGVtYXMgPSByZXNvbHZlU2NoZW1hKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIHJhd0Zvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgcmV0dXJuIHJlc29sdmVkU2NoZW1hcy5mbGF0TWFwKChzKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgbGV0IHJlc29sdmVkU2NoZW1hID0gcztcbiAgICAgICAgaWYgKElGX0tFWSBpbiByZXNvbHZlZFNjaGVtYSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVDb25kaXRpb24odmFsaWRhdG9yLCByZXNvbHZlZFNjaGVtYSwgcm9vdFNjaGVtYSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCByYXdGb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChBTExfT0ZfS0VZIGluIHJlc29sdmVkU2NoZW1hKSB7XG4gICAgICAgICAgICAvLyByZXNvbHZlIGFsbE9mIHNjaGVtYXNcbiAgICAgICAgICAgIGlmIChleHBhbmRBbGxCcmFuY2hlcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgYWxsT2YsIC4uLnJlc3RPZlNjaGVtYSB9ID0gcmVzb2x2ZWRTY2hlbWE7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbGxPZiwgcmVzdE9mU2NoZW1hXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2l0aENvbnRhaW5zU2NoZW1hcyA9IFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHdpdGhvdXRDb250YWluc1NjaGVtYXMgPSBbXTtcbiAgICAgICAgICAgICAgICAoX2EgPSByZXNvbHZlZFNjaGVtYS5hbGxPZikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvckVhY2goKHMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzID09PSAnb2JqZWN0JyAmJiBzLmNvbnRhaW5zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoQ29udGFpbnNTY2hlbWFzLnB1c2gocyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0Q29udGFpbnNTY2hlbWFzLnB1c2gocyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAod2l0aENvbnRhaW5zU2NoZW1hcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRTY2hlbWEgPSB7IC4uLnJlc29sdmVkU2NoZW1hLCBhbGxPZjogd2l0aG91dENvbnRhaW5zU2NoZW1hcyB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXNvbHZlZFNjaGVtYSA9IGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXG4gICAgICAgICAgICAgICAgICAgID8gZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YocmVzb2x2ZWRTY2hlbWEpXG4gICAgICAgICAgICAgICAgICAgIDogbWVyZ2VBbGxPZihyZXNvbHZlZFNjaGVtYSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVlcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICh3aXRoQ29udGFpbnNTY2hlbWFzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFNjaGVtYS5hbGxPZiA9IHdpdGhDb250YWluc1NjaGVtYXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ2NvdWxkIG5vdCBtZXJnZSBzdWJzY2hlbWFzIGluIGFsbE9mOlxcbicsIGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgYWxsT2YsIC4uLnJlc29sdmVkU2NoZW1hV2l0aG91dEFsbE9mIH0gPSByZXNvbHZlZFNjaGVtYTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRTY2hlbWFXaXRob3V0QWxsT2Y7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGFzQWRkaXRpb25hbFByb3BlcnRpZXMgPSBBRERJVElPTkFMX1BST1BFUlRJRVNfS0VZIGluIHJlc29sdmVkU2NoZW1hICYmIHJlc29sdmVkU2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzICE9PSBmYWxzZTtcbiAgICAgICAgaWYgKGhhc0FkZGl0aW9uYWxQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICByZXR1cm4gc3R1YkV4aXN0aW5nQWRkaXRpb25hbFByb3BlcnRpZXModmFsaWRhdG9yLCByZXNvbHZlZFNjaGVtYSwgcm9vdFNjaGVtYSwgcmF3Rm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzb2x2ZWRTY2hlbWE7XG4gICAgfSk7XG59XG4vKiogUmVzb2x2ZXMgYW4gYGFueU9mYCBvciBgb25lT2ZgIHdpdGhpbiBhIHNjaGVtYSAoaWYgcHJlc2VudCkgdG8gdGhlIGxpc3Qgb2Ygc2NoZW1hcyByZXR1cm5lZCBmcm9tXG4gKiBgcmV0cmlldmVTY2hlbWFJbnRlcm5hbCgpYCBmb3IgdGhlIGJlc3QgbWF0Y2hpbmcgb3B0aW9uLiBJZiBgZXhwYW5kQWxsQnJhbmNoZXNgIGlzIHRydWUsIHRoZW4gYSBsaXN0IG9mIHNjaGVtYXMgZm9yIEFMTFxuICogb3B0aW9ucyBhcmUgcmV0cmlldmVkIGFuZCByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCByZXRyaWV2aW5nIGEgc2NoZW1hIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gZXhwYW5kQWxsQnJhbmNoZXMgLSBGbGFnLCBpZiB0cnVlLCB3aWxsIHJldHVybiBhbGwgcG9zc2libGUgYnJhbmNoZXMgb2YgY29uZGl0aW9ucywgYW55L29uZU9mIGFuZCBkZXBlbmRlbmNpZXNcbiAqICAgICAgICAgIGFzIGEgbGlzdCBvZiBzY2hlbWFzXG4gKiBAcGFyYW0gW3Jhd0Zvcm1EYXRhXSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIHRvIGFzc2lzdCByZXRyaWV2aW5nIGEgc2NoZW1hLCBkZWZhdWx0cyB0byBhbiBlbXB0eSBvYmplY3RcbiAqIEByZXR1cm5zIC0gRWl0aGVyIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGJlc3QgbWF0Y2hpbmcgb3B0aW9uIG9yIGFsbCBvcHRpb25zIGlmIGBleHBhbmRBbGxCcmFuY2hlc2AgaXMgdHJ1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFueU9yT25lT2ZTY2hlbWFzKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBleHBhbmRBbGxCcmFuY2hlcywgcmF3Rm9ybURhdGEpIHtcbiAgICBsZXQgYW55T3JPbmVPZjtcbiAgICBjb25zdCB7IG9uZU9mLCBhbnlPZiwgLi4ucmVtYWluaW5nIH0gPSBzY2hlbWE7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob25lT2YpKSB7XG4gICAgICAgIGFueU9yT25lT2YgPSBvbmVPZjtcbiAgICB9XG4gICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhbnlPZikpIHtcbiAgICAgICAgYW55T3JPbmVPZiA9IGFueU9mO1xuICAgIH1cbiAgICBpZiAoYW55T3JPbmVPZikge1xuICAgICAgICAvLyBFbnN1cmUgdGhhdCBkdXJpbmcgZXhwYW5kIGFsbCBicmFuY2hlcyB3ZSBwYXNzIGFuIG9iamVjdCByYXRoZXIgdGhhbiB1bmRlZmluZWQgc28gdGhhdCBhbGwgb3B0aW9ucyBhcmUgaW50ZXJyb2dhdGVkXG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gcmF3Rm9ybURhdGEgPT09IHVuZGVmaW5lZCAmJiBleHBhbmRBbGxCcmFuY2hlcyA/IHt9IDogcmF3Rm9ybURhdGE7XG4gICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3IgPSBnZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hKHNjaGVtYSk7XG4gICAgICAgIGFueU9yT25lT2YgPSBhbnlPck9uZU9mLm1hcCgocykgPT4ge1xuICAgICAgICAgICAgLy8gRHVlIHRvIGFueU9mL29uZU9mIHBvc3NpYmx5IHVzaW5nIHRoZSBzYW1lICRyZWYgd2UgYWx3YXlzIHBhc3MgYSBmcmVzaCByZWN1cnNlIGxpc3QgYXJyYXkgc28gdGhhdCBlYWNoIG9wdGlvblxuICAgICAgICAgICAgLy8gY2FuIHJlc29sdmUgcmVjdXJzaXZlIHJlZmVyZW5jZXMgaW5kZXBlbmRlbnRseVxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVBbGxSZWZlcmVuY2VzKHMsIHJvb3RTY2hlbWEsIFtdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIENhbGwgdGhpcyB0byB0cmlnZ2VyIHRoZSBzZXQgb2YgaXNWYWxpZCgpIGNhbGxzIHRoYXQgdGhlIHNjaGVtYSBwYXJzZXIgd2lsbCBuZWVkXG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IGdldEZpcnN0TWF0Y2hpbmdPcHRpb24odmFsaWRhdG9yLCBmb3JtRGF0YSwgYW55T3JPbmVPZiwgcm9vdFNjaGVtYSwgZGlzY3JpbWluYXRvcik7XG4gICAgICAgIGlmIChleHBhbmRBbGxCcmFuY2hlcykge1xuICAgICAgICAgICAgcmV0dXJuIGFueU9yT25lT2YubWFwKChpdGVtKSA9PiBtZXJnZVNjaGVtYXMocmVtYWluaW5nLCBpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgICAgc2NoZW1hID0gbWVyZ2VTY2hlbWFzKHJlbWFpbmluZywgYW55T3JPbmVPZltvcHRpb25dKTtcbiAgICB9XG4gICAgcmV0dXJuIFtzY2hlbWFdO1xufVxuLyoqIFJlc29sdmVzIGRlcGVuZGVuY2llcyB3aXRoaW4gYSBzY2hlbWEgYW5kIGl0cyAnYW55T2Yvb25lT2YnIGNoaWxkcmVuLiBQYXNzZXMgdGhlIGBleHBhbmRBbGxCcmFuY2hlc2AgZmxhZyBkb3duIHRvXG4gKiB0aGUgYHJlc29sdmVBbnlPck9uZU9mU2NoZW1hKClgIGFuZCBgcHJvY2Vzc0RlcGVuZGVuY2llcygpYCBoZWxwZXIgY2FsbHMuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggcmVzb2x2aW5nIGEgZGVwZW5kZW5jeSBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IHNjaGVtYSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIGV4cGFuZEFsbEJyYW5jaGVzIC0gRmxhZywgaWYgdHJ1ZSwgd2lsbCByZXR1cm4gYWxsIHBvc3NpYmxlIGJyYW5jaGVzIG9mIGNvbmRpdGlvbnMsIGFueS9vbmVPZiBhbmQgZGVwZW5kZW5jaWVzXG4gKiAgICAgICAgICBhcyBhIGxpc3Qgb2Ygc2NoZW1hc1xuICogQHBhcmFtIHJlY3Vyc2VMaXN0IC0gVGhlIGxpc3Qgb2YgcmVjdXJzaXZlIHJlZmVyZW5jZXMgYWxyZWFkeSBwcm9jZXNzZWRcbiAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgbGlzdCBvZiBzY2hlbWFzIHdpdGggdGhlaXIgZGVwZW5kZW5jaWVzIHJlc29sdmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRGVwZW5kZW5jaWVzKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIC8vIERyb3AgdGhlIGRlcGVuZGVuY2llcyBmcm9tIHRoZSBzb3VyY2Ugc2NoZW1hLlxuICAgIGNvbnN0IHsgZGVwZW5kZW5jaWVzLCAuLi5yZW1haW5pbmdTY2hlbWEgfSA9IHNjaGVtYTtcbiAgICBjb25zdCByZXNvbHZlZFNjaGVtYXMgPSByZXNvbHZlQW55T3JPbmVPZlNjaGVtYXModmFsaWRhdG9yLCByZW1haW5pbmdTY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCBmb3JtRGF0YSk7XG4gICAgcmV0dXJuIHJlc29sdmVkU2NoZW1hcy5mbGF0TWFwKChyZXNvbHZlZFNjaGVtYSkgPT4gcHJvY2Vzc0RlcGVuZGVuY2llcyh2YWxpZGF0b3IsIGRlcGVuZGVuY2llcywgcmVzb2x2ZWRTY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSk7XG59XG4vKiogUHJvY2Vzc2VzIGFsbCB0aGUgYGRlcGVuZGVuY2llc2AgcmVjdXJzaXZlbHkgaW50byB0aGUgbGlzdCBvZiBgcmVzb2x2ZWRTY2hlbWFgcyBhcyBuZWVkZWQuIFBhc3NlcyB0aGVcbiAqIGBleHBhbmRBbGxCcmFuY2hlc2AgZmxhZyBkb3duIHRvIHRoZSBgd2l0aERlcGVuZGVudFNjaGVtYSgpYCBhbmQgdGhlIHJlY3Vyc2l2ZSBgcHJvY2Vzc0RlcGVuZGVuY2llcygpYCBoZWxwZXIgY2FsbHMuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gZGVwZW5kZW5jaWVzIC0gVGhlIHNldCBvZiBkZXBlbmRlbmNpZXMgdGhhdCBuZWVkcyB0byBiZSBwcm9jZXNzZWRcbiAqIEBwYXJhbSByZXNvbHZlZFNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHByb2Nlc3NpbmcgZGVwZW5kZW5jaWVzIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gZXhwYW5kQWxsQnJhbmNoZXMgLSBGbGFnLCBpZiB0cnVlLCB3aWxsIHJldHVybiBhbGwgcG9zc2libGUgYnJhbmNoZXMgb2YgY29uZGl0aW9ucywgYW55L29uZU9mIGFuZCBkZXBlbmRlbmNpZXNcbiAqICAgICAgICAgIGFzIGEgbGlzdCBvZiBzY2hlbWFzXG4gKiBAcGFyYW0gcmVjdXJzZUxpc3QgLSBUaGUgbGlzdCBvZiByZWN1cnNpdmUgcmVmZXJlbmNlcyBhbHJlYWR5IHByb2Nlc3NlZFxuICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBzY2hlbWEgd2l0aCB0aGUgYGRlcGVuZGVuY2llc2AgcmVzb2x2ZWQgaW50byBpdFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc0RlcGVuZGVuY2llcyh2YWxpZGF0b3IsIGRlcGVuZGVuY2llcywgcmVzb2x2ZWRTY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgbGV0IHNjaGVtYXMgPSBbcmVzb2x2ZWRTY2hlbWFdO1xuICAgIC8vIFByb2Nlc3MgZGVwZW5kZW5jaWVzIHVwZGF0aW5nIHRoZSBsb2NhbCBzY2hlbWEgcHJvcGVydGllcyBhcyBhcHByb3ByaWF0ZS5cbiAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY3lLZXkgaW4gZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIC8vIFNraXAgdGhpcyBkZXBlbmRlbmN5IGlmIGl0cyB0cmlnZ2VyIHByb3BlcnR5IGlzIG5vdCBwcmVzZW50LlxuICAgICAgICBpZiAoIWV4cGFuZEFsbEJyYW5jaGVzICYmIGdldChmb3JtRGF0YSwgW2RlcGVuZGVuY3lLZXldKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTa2lwIHRoaXMgZGVwZW5kZW5jeSBpZiBpdCBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIHNjaGVtYSAoc3VjaCBhcyB3aGVuIGRlcGVuZGVuY3lLZXkgaXMgaXRzZWxmIGEgaGlkZGVuIGRlcGVuZGVuY3kuKVxuICAgICAgICBpZiAocmVzb2x2ZWRTY2hlbWEucHJvcGVydGllcyAmJiAhKGRlcGVuZGVuY3lLZXkgaW4gcmVzb2x2ZWRTY2hlbWEucHJvcGVydGllcykpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFtyZW1haW5pbmdEZXBlbmRlbmNpZXMsIGRlcGVuZGVuY3lWYWx1ZV0gPSBzcGxpdEtleUVsZW1lbnRGcm9tT2JqZWN0KGRlcGVuZGVuY3lLZXksIGRlcGVuZGVuY2llcyk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRlcGVuZGVuY3lWYWx1ZSkpIHtcbiAgICAgICAgICAgIHNjaGVtYXNbMF0gPSB3aXRoRGVwZW5kZW50UHJvcGVydGllcyhyZXNvbHZlZFNjaGVtYSwgZGVwZW5kZW5jeVZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc09iamVjdChkZXBlbmRlbmN5VmFsdWUpKSB7XG4gICAgICAgICAgICBzY2hlbWFzID0gd2l0aERlcGVuZGVudFNjaGVtYSh2YWxpZGF0b3IsIHJlc29sdmVkU2NoZW1hLCByb290U2NoZW1hLCBkZXBlbmRlbmN5S2V5LCBkZXBlbmRlbmN5VmFsdWUsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2NoZW1hcy5mbGF0TWFwKChzY2hlbWEpID0+IHByb2Nlc3NEZXBlbmRlbmNpZXModmFsaWRhdG9yLCByZW1haW5pbmdEZXBlbmRlbmNpZXMsIHNjaGVtYSwgcm9vdFNjaGVtYSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBmb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjaGVtYXM7XG59XG4vKiogVXBkYXRlcyBhIHNjaGVtYSB3aXRoIGFkZGl0aW9uYWxseSByZXF1aXJlZCBwcm9wZXJ0aWVzIGFkZGVkXG4gKlxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHJlc29sdmluZyBhIGRlcGVuZGVudCBwcm9wZXJ0aWVzIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSBbYWRkaXRpb25hbGx5UmVxdWlyZWRdIC0gQW4gb3B0aW9uYWwgYXJyYXkgb2YgYWRkaXRpb25hbGx5IHJlcXVpcmVkIG5hbWVzXG4gKiBAcmV0dXJucyAtIFRoZSBzY2hlbWEgd2l0aCB0aGUgYWRkaXRpb25hbCByZXF1aXJlZCB2YWx1ZXMgbWVyZ2VkIGluXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoRGVwZW5kZW50UHJvcGVydGllcyhzY2hlbWEsIGFkZGl0aW9uYWxseVJlcXVpcmVkKSB7XG4gICAgaWYgKCFhZGRpdGlvbmFsbHlSZXF1aXJlZCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cbiAgICBjb25zdCByZXF1aXJlZCA9IEFycmF5LmlzQXJyYXkoc2NoZW1hLnJlcXVpcmVkKVxuICAgICAgICA/IEFycmF5LmZyb20obmV3IFNldChbLi4uc2NoZW1hLnJlcXVpcmVkLCAuLi5hZGRpdGlvbmFsbHlSZXF1aXJlZF0pKVxuICAgICAgICA6IGFkZGl0aW9uYWxseVJlcXVpcmVkO1xuICAgIHJldHVybiB7IC4uLnNjaGVtYSwgcmVxdWlyZWQ6IHJlcXVpcmVkIH07XG59XG4vKiogTWVyZ2VzIGEgZGVwZW5kZW50IHNjaGVtYSBpbnRvIHRoZSBgc2NoZW1hYCBkZWFsaW5nIHdpdGggb25lT2ZzIGFuZCByZWZlcmVuY2VzLiBQYXNzZXMgdGhlIGBleHBhbmRBbGxCcmFuY2hlc2AgZmxhZ1xuICogZG93biB0byB0aGUgYHJldHJpZXZlU2NoZW1hSW50ZXJuYWwoKWAsIGByZXNvbHZlUmVmZXJlbmNlKClgIGFuZCBgd2l0aEV4YWN0bHlPbmVTdWJzY2hlbWEoKWAgaGVscGVyIGNhbGxzLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHJlc29sdmluZyBhIGRlcGVuZGVudCBzY2hlbWEgaXMgZGVzaXJlZFxuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBkZXBlbmRlbmN5S2V5IC0gVGhlIGtleSBuYW1lIG9mIHRoZSBkZXBlbmRlbmN5XG4gKiBAcGFyYW0gZGVwZW5kZW5jeVZhbHVlIC0gVGhlIHBvdGVudGlhbGx5IGRlcGVuZGVudCBzY2hlbWFcbiAqIEBwYXJhbSBleHBhbmRBbGxCcmFuY2hlcyAtIEZsYWcsIGlmIHRydWUsIHdpbGwgcmV0dXJuIGFsbCBwb3NzaWJsZSBicmFuY2hlcyBvZiBjb25kaXRpb25zLCBhbnkvb25lT2YgYW5kIGRlcGVuZGVuY2llc1xuICogICAgICAgICAgYXMgYSBsaXN0IG9mIHNjaGVtYXNcbiAqIEBwYXJhbSByZWN1cnNlTGlzdCAtIFRoZSBsaXN0IG9mIHJlY3Vyc2l2ZSByZWZlcmVuY2VzIGFscmVhZHkgcHJvY2Vzc2VkXG4gKiBAcGFyYW0gW2Zvcm1EYXRhXS0gVGhlIGN1cnJlbnQgZm9ybURhdGEgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgbGlzdCBvZiBzY2hlbWFzIHdpdGggdGhlIGRlcGVuZGVudCBzY2hlbWEgcmVzb2x2ZWQgaW50byB0aGVtXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoRGVwZW5kZW50U2NoZW1hKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBkZXBlbmRlbmN5S2V5LCBkZXBlbmRlbmN5VmFsdWUsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgY29uc3QgZGVwZW5kZW50U2NoZW1hcyA9IHJldHJpZXZlU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBkZXBlbmRlbmN5VmFsdWUsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICByZXR1cm4gZGVwZW5kZW50U2NoZW1hcy5mbGF0TWFwKChkZXBlbmRlbnQpID0+IHtcbiAgICAgICAgY29uc3QgeyBvbmVPZiwgLi4uZGVwZW5kZW50U2NoZW1hIH0gPSBkZXBlbmRlbnQ7XG4gICAgICAgIHNjaGVtYSA9IG1lcmdlU2NoZW1hcyhzY2hlbWEsIGRlcGVuZGVudFNjaGVtYSk7XG4gICAgICAgIC8vIFNpbmNlIGl0IGRvZXMgbm90IGNvbnRhaW4gb25lT2YsIHdlIHJldHVybiB0aGUgb3JpZ2luYWwgc2NoZW1hLlxuICAgICAgICBpZiAob25lT2YgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHNjaGVtYTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZXNvbHZlICRyZWZzIGluc2lkZSBvbmVPZi5cbiAgICAgICAgY29uc3QgcmVzb2x2ZWRPbmVPZnMgPSBvbmVPZi5tYXAoKHN1YnNjaGVtYSkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzdWJzY2hlbWEgPT09ICdib29sZWFuJyB8fCAhKFJFRl9LRVkgaW4gc3Vic2NoZW1hKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbc3Vic2NoZW1hXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlUmVmZXJlbmNlKHZhbGlkYXRvciwgc3Vic2NoZW1hLCByb290U2NoZW1hLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGZvcm1EYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGFsbFBlcm11dGF0aW9ucyA9IGdldEFsbFBlcm11dGF0aW9uc09mWHh4T2YocmVzb2x2ZWRPbmVPZnMpO1xuICAgICAgICByZXR1cm4gYWxsUGVybXV0YXRpb25zLmZsYXRNYXAoKHJlc29sdmVkT25lT2YpID0+IHdpdGhFeGFjdGx5T25lU3Vic2NoZW1hKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBkZXBlbmRlbmN5S2V5LCByZXNvbHZlZE9uZU9mLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikpO1xuICAgIH0pO1xufVxuLyoqIFJldHVybnMgYSBsaXN0IG9mIGBzY2hlbWFgcyB3aXRoIHRoZSBiZXN0IGNob2ljZSBmcm9tIHRoZSBgb25lT2ZgIG9wdGlvbnMgbWVyZ2VkIGludG8gaXQuIElmIGBleHBhbmRBbGxCcmFuY2hlc2AgaXNcbiAqIHRydWUsIHRoZW4gYSBsaXN0IG9mIHNjaGVtYXMgZm9yIEFMTCBvcHRpb25zIGFyZSByZXRyaWV2ZWQgYW5kIHJldHVybmVkLiBQYXNzZXMgdGhlIGBleHBhbmRBbGxCcmFuY2hlc2AgZmxhZyBkb3duIHRvXG4gKiB0aGUgYHJldHJpZXZlU2NoZW1hSW50ZXJuYWwoKWAgaGVscGVyIGNhbGwuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHZhbGlkYXRlIG9uZU9mIG9wdGlvbnNcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCByZXNvbHZpbmcgYSBvbmVPZiBzdWJzY2hlbWEgaXMgZGVzaXJlZFxuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBkZXBlbmRlbmN5S2V5IC0gVGhlIGtleSBuYW1lIG9mIHRoZSBvbmVPZiBkZXBlbmRlbmN5XG4gKiBAcGFyYW0gb25lT2YgLSBUaGUgbGlzdCBvZiBzY2hlbWFzIHJlcHJlc2VudGluZyB0aGUgb25lT2Ygb3B0aW9uc1xuICogQHBhcmFtIGV4cGFuZEFsbEJyYW5jaGVzIC0gRmxhZywgaWYgdHJ1ZSwgd2lsbCByZXR1cm4gYWxsIHBvc3NpYmxlIGJyYW5jaGVzIG9mIGNvbmRpdGlvbnMsIGFueS9vbmVPZiBhbmQgZGVwZW5kZW5jaWVzXG4gKiAgICAgICAgICBhcyBhIGxpc3Qgb2Ygc2NoZW1hc1xuICogQHBhcmFtIHJlY3Vyc2VMaXN0IC0gVGhlIGxpc3Qgb2YgcmVjdXJzaXZlIHJlZmVyZW5jZXMgYWxyZWFkeSBwcm9jZXNzZWRcbiAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBFaXRoZXIgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgYmVzdCBtYXRjaGluZyBvcHRpb24gb3IgYWxsIG9wdGlvbnMgaWYgYGV4cGFuZEFsbEJyYW5jaGVzYCBpcyB0cnVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoRXhhY3RseU9uZVN1YnNjaGVtYSh2YWxpZGF0b3IsIHNjaGVtYSwgcm9vdFNjaGVtYSwgZGVwZW5kZW5jeUtleSwgb25lT2YsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgY29uc3QgdmFsaWRTdWJzY2hlbWFzID0gb25lT2YuZmlsdGVyKChzdWJzY2hlbWEpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzdWJzY2hlbWEgPT09ICdib29sZWFuJyB8fCAhc3Vic2NoZW1hIHx8ICFzdWJzY2hlbWEucHJvcGVydGllcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgW2RlcGVuZGVuY3lLZXldOiBjb25kaXRpb25Qcm9wZXJ0eVNjaGVtYSB9ID0gc3Vic2NoZW1hLnByb3BlcnRpZXM7XG4gICAgICAgIGlmIChjb25kaXRpb25Qcm9wZXJ0eVNjaGVtYSkge1xuICAgICAgICAgICAgY29uc3QgY29uZGl0aW9uU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgW2RlcGVuZGVuY3lLZXldOiBjb25kaXRpb25Qcm9wZXJ0eVNjaGVtYSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiB2YWxpZGF0b3IuaXNWYWxpZChjb25kaXRpb25TY2hlbWEsIGZvcm1EYXRhLCByb290U2NoZW1hKSB8fCBleHBhbmRBbGxCcmFuY2hlcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gICAgaWYgKCFleHBhbmRBbGxCcmFuY2hlcyAmJiB2YWxpZFN1YnNjaGVtYXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcImlnbm9yaW5nIG9uZU9mIGluIGRlcGVuZGVuY2llcyBiZWNhdXNlIHRoZXJlIGlzbid0IGV4YWN0bHkgb25lIHN1YnNjaGVtYSB0aGF0IGlzIHZhbGlkXCIpO1xuICAgICAgICByZXR1cm4gW3NjaGVtYV07XG4gICAgfVxuICAgIHJldHVybiB2YWxpZFN1YnNjaGVtYXMuZmxhdE1hcCgocykgPT4ge1xuICAgICAgICBjb25zdCBzdWJzY2hlbWEgPSBzO1xuICAgICAgICBjb25zdCBbZGVwZW5kZW50U3Vic2NoZW1hXSA9IHNwbGl0S2V5RWxlbWVudEZyb21PYmplY3QoZGVwZW5kZW5jeUtleSwgc3Vic2NoZW1hLnByb3BlcnRpZXMpO1xuICAgICAgICBjb25zdCBkZXBlbmRlbnRTY2hlbWEgPSB7IC4uLnN1YnNjaGVtYSwgcHJvcGVydGllczogZGVwZW5kZW50U3Vic2NoZW1hIH07XG4gICAgICAgIGNvbnN0IHNjaGVtYXMgPSByZXRyaWV2ZVNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgZGVwZW5kZW50U2NoZW1hLCByb290U2NoZW1hLCBmb3JtRGF0YSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgIHJldHVybiBzY2hlbWFzLm1hcCgocykgPT4gbWVyZ2VTY2hlbWFzKHNjaGVtYSwgcykpO1xuICAgIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmV0cmlldmVTY2hlbWEuanMubWFwIiwiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBoYXMgZnJvbSAnbG9kYXNoL2hhcyc7XG5pbXBvcnQgaXNOdW1iZXIgZnJvbSAnbG9kYXNoL2lzTnVtYmVyJztcbmltcG9ydCBpc09iamVjdCBmcm9tICdsb2Rhc2gvaXNPYmplY3QnO1xuaW1wb3J0IGlzU3RyaW5nIGZyb20gJ2xvZGFzaC9pc1N0cmluZyc7XG5pbXBvcnQgcmVkdWNlIGZyb20gJ2xvZGFzaC9yZWR1Y2UnO1xuaW1wb3J0IHRpbWVzIGZyb20gJ2xvZGFzaC90aW1lcyc7XG5pbXBvcnQgZ2V0Rmlyc3RNYXRjaGluZ09wdGlvbiBmcm9tICcuL2dldEZpcnN0TWF0Y2hpbmdPcHRpb24nO1xuaW1wb3J0IHJldHJpZXZlU2NoZW1hLCB7IHJlc29sdmVBbGxSZWZlcmVuY2VzIH0gZnJvbSAnLi9yZXRyaWV2ZVNjaGVtYSc7XG5pbXBvcnQgeyBPTkVfT0ZfS0VZLCBSRUZfS0VZLCBKVU5LX09QVElPTl9JRCwgQU5ZX09GX0tFWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgZ3Vlc3NUeXBlIGZyb20gJy4uL2d1ZXNzVHlwZSc7XG5pbXBvcnQgZ2V0RGlzY3JpbWluYXRvckZpZWxkRnJvbVNjaGVtYSBmcm9tICcuLi9nZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hJztcbmltcG9ydCBnZXRPcHRpb25NYXRjaGluZ1NpbXBsZURpc2NyaW1pbmF0b3IgZnJvbSAnLi4vZ2V0T3B0aW9uTWF0Y2hpbmdTaW1wbGVEaXNjcmltaW5hdG9yJztcbi8qKiBBIGp1bmsgb3B0aW9uIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZW4gdGhlIGdldEZpcnN0TWF0Y2hpbmdPcHRpb24gY2FsbCByZWFsbHkgbWF0Y2hlcyBhbiBvcHRpb24gcmF0aGVyIHRoYW4gcmV0dXJuaW5nXG4gKiB0aGUgZmlyc3QgaXRlbVxuICovXG5leHBvcnQgY29uc3QgSlVOS19PUFRJT04gPSB7XG4gICAgdHlwZTogJ29iamVjdCcsXG4gICAgJGlkOiBKVU5LX09QVElPTl9JRCxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIF9fbm90X3JlYWxseV90aGVyZV9fOiB7XG4gICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgfSxcbiAgICB9LFxufTtcbi8qKiBSZWN1cnNpdmUgZnVuY3Rpb24gdGhhdCBjYWxjdWxhdGVzIHRoZSBzY29yZSBvZiBhIGBmb3JtRGF0YWAgYWdhaW5zdCB0aGUgZ2l2ZW4gYHNjaGVtYWAuIFRoZSBjb21wdXRhdGlvbiBpcyBmYWlybHlcbiAqIHNpbXBsZS4gSW5pdGlhbGx5IHRoZSB0b3RhbCBzY29yZSBpcyAwLiBXaGVuIGBzY2hlbWEucHJvcGVydGllc2Agb2JqZWN0IGV4aXN0cywgdGhlbiBhbGwgdGhlIGBrZXkvdmFsdWVgIHBhaXJzIHdpdGhpblxuICogdGhlIG9iamVjdCBhcmUgcHJvY2Vzc2VkIGFzIGZvbGxvd3MgYWZ0ZXIgb2J0YWluaW5nIHRoZSBmb3JtVmFsdWUgZnJvbSBgZm9ybURhdGFgIHVzaW5nIHRoZSBga2V5YDpcbiAqIC0gSWYgdGhlIGB2YWx1ZWAgY29udGFpbnMgYSBgJHJlZmAsIGBjYWxjdWxhdGVJbmRleFNjb3JlKClgIGlzIGNhbGxlZCByZWN1cnNpdmVseSB3aXRoIHRoZSBmb3JtVmFsdWUgYW5kIHRoZSBuZXdcbiAqICAgc2NoZW1hIHRoYXQgaXMgdGhlIHJlc3VsdCBvZiB0aGUgcmVmIGluIHRoZSBzY2hlbWEgYmVpbmcgcmVzb2x2ZWQgYW5kIHRoYXQgc3ViLXNjaGVtYSdzIHJlc3VsdGluZyBzY29yZSBpcyBhZGRlZCB0b1xuICogICB0aGUgdG90YWwuXG4gKiAtIElmIHRoZSBgdmFsdWVgIGNvbnRhaW5zIGEgYG9uZU9mYCBhbmQgdGhlcmUgaXMgYSBmb3JtVmFsdWUsIHRoZW4gc2NvcmUgYmFzZWQgb24gdGhlIGluZGV4IHJldHVybmVkIGZyb20gY2FsbGluZ1xuICogICBgZ2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uKClgIG9mIHRoYXQgb25lT2YuXG4gKiAtIElmIHRoZSB0eXBlIG9mIHRoZSBgdmFsdWVgIGlzICdvYmplY3QnLCBgY2FsY3VsYXRlSW5kZXhTY29yZSgpYCBpcyBjYWxsZWQgcmVjdXJzaXZlbHkgd2l0aCB0aGUgZm9ybVZhbHVlIGFuZCB0aGVcbiAqICAgYHZhbHVlYCBpdHNlbGYgYXMgdGhlIHN1Yi1zY2hlbWEsIGFuZCB0aGUgc2NvcmUgaXMgYWRkZWQgdG8gdGhlIHRvdGFsLlxuICogLSBJZiB0aGUgdHlwZSBvZiB0aGUgYHZhbHVlYCBtYXRjaGVzIHRoZSBndWVzc2VkLXR5cGUgb2YgdGhlIGBmb3JtVmFsdWVgLCB0aGUgc2NvcmUgaXMgaW5jcmVtZW50ZWQgYnkgMSwgVU5MRVNTIHRoZVxuICogICB2YWx1ZSBoYXMgYSBgZGVmYXVsdGAgb3IgYGNvbnN0YC4gSW4gdGhvc2UgY2FzZSwgaWYgdGhlIGBkZWZhdWx0YCBvciBgY29uc3RgIGFuZCB0aGUgYGZvcm1WYWx1ZWAgbWF0Y2gsIHRoZSBzY29yZVxuICogICBpcyBpbmNyZW1lbnRlZCBieSBhbm90aGVyIDEgb3RoZXJ3aXNlIGl0IGlzIGRlY3JlbWVudGVkIGJ5IDEuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IEpTT04gc2NoZW1hIG9mIHRoZSBlbnRpcmUgZm9ybVxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBzY29yZSBpcyBiZWluZyBjYWxjdWxhdGVkXG4gKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgZm9ybSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2NoZW1hLCB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgc2NvcmVcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgc2NvcmUgYSBzY2hlbWEgYWdhaW5zdCB0aGUgZm9ybURhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUluZGV4U2NvcmUodmFsaWRhdG9yLCByb290U2NoZW1hLCBzY2hlbWEsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIGxldCB0b3RhbFNjb3JlID0gMDtcbiAgICBpZiAoc2NoZW1hKSB7XG4gICAgICAgIGlmIChpc09iamVjdChzY2hlbWEucHJvcGVydGllcykpIHtcbiAgICAgICAgICAgIHRvdGFsU2NvcmUgKz0gcmVkdWNlKHNjaGVtYS5wcm9wZXJ0aWVzLCAoc2NvcmUsIHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSBnZXQoZm9ybURhdGEsIGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzY29yZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGhhcyh2YWx1ZSwgUkVGX0tFWSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3U2NoZW1hID0gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCB2YWx1ZSwgcm9vdFNjaGVtYSwgZm9ybVZhbHVlLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoc2NvcmUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlSW5kZXhTY29yZSh2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIG5ld1NjaGVtYSwgZm9ybVZhbHVlIHx8IHt9LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoKGhhcyh2YWx1ZSwgT05FX09GX0tFWSkgfHwgaGFzKHZhbHVlLCBBTllfT0ZfS0VZKSkgJiYgZm9ybVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGhhcyh2YWx1ZSwgT05FX09GX0tFWSkgPyBPTkVfT0ZfS0VZIDogQU5ZX09GX0tFWTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzY3JpbWluYXRvciA9IGdldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHNjb3JlICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldENsb3Nlc3RNYXRjaGluZ09wdGlvbih2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIGZvcm1WYWx1ZSwgZ2V0KHZhbHVlLCBrZXkpLCAtMSwgZGlzY3JpbWluYXRvciwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlLnR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09iamVjdChmb3JtVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgc3RydWN0dXJlIGlzIG1hdGNoaW5nIHRoZW4gZ2l2ZSBpdCBhIGxpdHRsZSBib29zdCBpbiBzY29yZVxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmUgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHNjb3JlICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0ZUluZGV4U2NvcmUodmFsaWRhdG9yLCByb290U2NoZW1hLCB2YWx1ZSwgZm9ybVZhbHVlLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUudHlwZSA9PT0gZ3Vlc3NUeXBlKGZvcm1WYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHR5cGVzIG1hdGNoLCB0aGVuIHdlIGJ1bXAgdGhlIHNjb3JlIGJ5IG9uZVxuICAgICAgICAgICAgICAgICAgICBsZXQgbmV3U2NvcmUgPSBzY29yZSArIDE7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5kZWZhdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgc2NoZW1hIGNvbnRhaW5zIGEgcmVhZG9ubHkgZGVmYXVsdCB2YWx1ZSBzY29yZSB0aGUgdmFsdWUgdGhhdCBtYXRjaGVzIHRoZSBkZWZhdWx0IGhpZ2hlciBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBub24tbWF0Y2hpbmcgdmFsdWUgbG93ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Njb3JlICs9IGZvcm1WYWx1ZSA9PT0gdmFsdWUuZGVmYXVsdCA/IDEgOiAtMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS5jb25zdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHNjaGVtYSBjb250YWlucyBhIGNvbnN0IHZhbHVlIHNjb3JlIHRoZSB2YWx1ZSB0aGF0IG1hdGNoZXMgdGhlIGRlZmF1bHQgaGlnaGVyIGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG5vbi1tYXRjaGluZyB2YWx1ZSBsb3dlclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2NvcmUgKz0gZm9ybVZhbHVlID09PSB2YWx1ZS5jb25zdCA/IDEgOiAtMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIGV2ZW50dWFsbHksIGRlYWwgd2l0aCBlbnVtcy9hcnJheXNcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld1Njb3JlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc2NvcmU7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc1N0cmluZyhzY2hlbWEudHlwZSkgJiYgc2NoZW1hLnR5cGUgPT09IGd1ZXNzVHlwZShmb3JtRGF0YSkpIHtcbiAgICAgICAgICAgIHRvdGFsU2NvcmUgKz0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG90YWxTY29yZTtcbn1cbi8qKiBEZXRlcm1pbmVzIHdoaWNoIG9mIHRoZSBnaXZlbiBgb3B0aW9uc2AgcHJvdmlkZWQgbW9zdCBjbG9zZWx5IG1hdGNoZXMgdGhlIGBmb3JtRGF0YWAuIFVzaW5nXG4gKiBgZ2V0Rmlyc3RNYXRjaGluZ09wdGlvbigpYCB0byBtYXRjaCB0d28gc2NoZW1hcyB0aGF0IGRpZmZlciBvbmx5IGJ5IHRoZSByZWFkT25seSwgZGVmYXVsdCBvciBjb25zdCB2YWx1ZSBvZiBhIGZpZWxkXG4gKiBiYXNlZCBvbiB0aGUgYGZvcm1EYXRhYCBhbmQgcmV0dXJucyAwIHdoZW4gdGhlcmUgaXMgbm8gbWF0Y2guIFJhdGhlciB0aGFuIHBhc3NpbmcgaW4gYWxsIHRoZSBgb3B0aW9uc2AgYXQgb25jZSB0b1xuICogdGhpcyB1dGlsaXR5LCBpbnN0ZWFkIGFuIGFycmF5IG9mIHZhbGlkIG9wdGlvbiBpbmRleGVzIGlzIGNyZWF0ZWQgYnkgaXRlcmF0aW5nIG92ZXIgdGhlIGxpc3Qgb2Ygb3B0aW9ucywgY2FsbFxuICogYGdldEZpcnN0TWF0Y2hpbmdPcHRpb25zYCB3aXRoIGEgbGlzdCBvZiBvbmUganVuayBvcHRpb24gYW5kIG9uZSBnb29kIG9wdGlvbiwgc2VlaW5nIGlmIHRoZSBnb29kIG9wdGlvbiBpcyBjb25zaWRlcmVkXG4gKiBtYXRjaGVkLlxuICpcbiAqIE9uY2UgdGhlIGxpc3Qgb2YgdmFsaWQgaW5kZXhlcyBpcyBjcmVhdGVkLCBpZiB0aGVyZSBpcyBvbmx5IG9uZSB2YWxpZCBpbmRleCwganVzdCByZXR1cm4gaXQuIE90aGVyd2lzZSwgaWYgdGhlcmUgYXJlXG4gKiBubyB2YWxpZCBpbmRleGVzLCB0aGVuIGZpbGwgdGhlIHZhbGlkIGluZGV4ZXMgYXJyYXkgd2l0aCB0aGUgaW5kZXhlcyBvZiBhbGwgdGhlIG9wdGlvbnMuIE5leHQsIHRoZSBpbmRleCBvZiB0aGVcbiAqIG9wdGlvbiB3aXRoIHRoZSBoaWdoZXN0IHNjb3JlIGlzIGRldGVybWluZWQgYnkgaXRlcmF0aW5nIG92ZXIgdGhlIGxpc3Qgb2YgdmFsaWQgb3B0aW9ucywgY2FsbGluZ1xuICogYGNhbGN1bGF0ZUluZGV4U2NvcmUoKWAgb24gZWFjaCwgY29tcGFyaW5nIGl0IGFnYWluc3QgdGhlIGN1cnJlbnQgYmVzdCBzY29yZSwgYW5kIHJldHVybmluZyB0aGUgaW5kZXggb2YgdGhlIG9uZSB0aGF0XG4gKiBldmVudHVhbGx5IGhhcyB0aGUgYmVzdCBzY29yZS5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3QgSlNPTiBzY2hlbWEgb2YgdGhlIGVudGlyZSBmb3JtXG4gKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgZm9ybSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2NoZW1hXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBsaXN0IG9mIG9wdGlvbnMgdGhhdCBjYW4gYmUgc2VsZWN0ZWQgZnJvbVxuICogQHBhcmFtIFtzZWxlY3RlZE9wdGlvbj0tMV0gLSBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBvcHRpb24sIGRlZmF1bHRlZCB0byAtMSBpZiBub3Qgc3BlY2lmaWVkXG4gKiBAcGFyYW0gW2Rpc2NyaW1pbmF0b3JGaWVsZF0gLSBUaGUgb3B0aW9uYWwgbmFtZSBvZiB0aGUgZmllbGQgd2l0aGluIHRoZSBvcHRpb25zIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyB1c2VkIHRvXG4gKiAgICAgICAgICBkZXRlcm1pbmUgd2hpY2ggb3B0aW9uIGlzIHNlbGVjdGVkXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gVGhlIGluZGV4IG9mIHRoZSBvcHRpb24gdGhhdCBpcyB0aGUgY2xvc2VzdCBtYXRjaCB0byB0aGUgYGZvcm1EYXRhYCBvciB0aGUgYHNlbGVjdGVkT3B0aW9uYCBpZiBubyBtYXRjaFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDbG9zZXN0TWF0Y2hpbmdPcHRpb24odmFsaWRhdG9yLCByb290U2NoZW1hLCBmb3JtRGF0YSwgb3B0aW9ucywgc2VsZWN0ZWRPcHRpb24gPSAtMSwgZGlzY3JpbWluYXRvckZpZWxkLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIC8vIEZpcnN0IHJlc29sdmUgYW55IHJlZnMgaW4gdGhlIG9wdGlvbnNcbiAgICBjb25zdCByZXNvbHZlZE9wdGlvbnMgPSBvcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgIHJldHVybiByZXNvbHZlQWxsUmVmZXJlbmNlcyhvcHRpb24sIHJvb3RTY2hlbWEsIFtdKTtcbiAgICB9KTtcbiAgICBjb25zdCBzaW1wbGVEaXNjcmltaW5hdG9yTWF0Y2ggPSBnZXRPcHRpb25NYXRjaGluZ1NpbXBsZURpc2NyaW1pbmF0b3IoZm9ybURhdGEsIG9wdGlvbnMsIGRpc2NyaW1pbmF0b3JGaWVsZCk7XG4gICAgaWYgKGlzTnVtYmVyKHNpbXBsZURpc2NyaW1pbmF0b3JNYXRjaCkpIHtcbiAgICAgICAgcmV0dXJuIHNpbXBsZURpc2NyaW1pbmF0b3JNYXRjaDtcbiAgICB9XG4gICAgLy8gUmVkdWNlIHRoZSBhcnJheSBvZiBvcHRpb25zIGRvd24gdG8gYSBsaXN0IG9mIHRoZSBpbmRleGVzIHRoYXQgYXJlIGNvbnNpZGVyZWQgbWF0Y2hpbmcgb3B0aW9uc1xuICAgIGNvbnN0IGFsbFZhbGlkSW5kZXhlcyA9IHJlc29sdmVkT3B0aW9ucy5yZWR1Y2UoKHZhbGlkTGlzdCwgb3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCB0ZXN0T3B0aW9ucyA9IFtKVU5LX09QVElPTiwgb3B0aW9uXTtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBnZXRGaXJzdE1hdGNoaW5nT3B0aW9uKHZhbGlkYXRvciwgZm9ybURhdGEsIHRlc3RPcHRpb25zLCByb290U2NoZW1hLCBkaXNjcmltaW5hdG9yRmllbGQpO1xuICAgICAgICAvLyBUaGUgbWF0Y2ggaXMgdGhlIHJlYWwgb3B0aW9uLCBzbyBhZGQgaXRzIGluZGV4IHRvIGxpc3Qgb2YgdmFsaWQgaW5kZXhlc1xuICAgICAgICBpZiAobWF0Y2ggPT09IDEpIHtcbiAgICAgICAgICAgIHZhbGlkTGlzdC5wdXNoKGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsaWRMaXN0O1xuICAgIH0sIFtdKTtcbiAgICAvLyBUaGVyZSBpcyBvbmx5IG9uZSB2YWxpZCBpbmRleCwgc28gcmV0dXJuIGl0IVxuICAgIGlmIChhbGxWYWxpZEluZGV4ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiBhbGxWYWxpZEluZGV4ZXNbMF07XG4gICAgfVxuICAgIGlmICghYWxsVmFsaWRJbmRleGVzLmxlbmd0aCkge1xuICAgICAgICAvLyBObyBpbmRleGVzIHdlcmUgdmFsaWQsIHNvIHdlJ2xsIHNjb3JlIGFsbCB0aGUgb3B0aW9ucywgYWRkIGFsbCB0aGUgaW5kZXhlc1xuICAgICAgICB0aW1lcyhyZXNvbHZlZE9wdGlvbnMubGVuZ3RoLCAoaSkgPT4gYWxsVmFsaWRJbmRleGVzLnB1c2goaSkpO1xuICAgIH1cbiAgICBjb25zdCBzY29yZUNvdW50ID0gbmV3IFNldCgpO1xuICAgIC8vIFNjb3JlIGFsbCB0aGUgb3B0aW9ucyBpbiB0aGUgbGlzdCBvZiB2YWxpZCBpbmRleGVzIGFuZCByZXR1cm4gdGhlIGluZGV4IHdpdGggdGhlIGJlc3Qgc2NvcmVcbiAgICBjb25zdCB7IGJlc3RJbmRleCB9ID0gYWxsVmFsaWRJbmRleGVzLnJlZHVjZSgoc2NvcmVEYXRhLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCB7IGJlc3RTY29yZSB9ID0gc2NvcmVEYXRhO1xuICAgICAgICBjb25zdCBvcHRpb24gPSByZXNvbHZlZE9wdGlvbnNbaW5kZXhdO1xuICAgICAgICBjb25zdCBzY29yZSA9IGNhbGN1bGF0ZUluZGV4U2NvcmUodmFsaWRhdG9yLCByb290U2NoZW1hLCBvcHRpb24sIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgIHNjb3JlQ291bnQuYWRkKHNjb3JlKTtcbiAgICAgICAgaWYgKHNjb3JlID4gYmVzdFNjb3JlKSB7XG4gICAgICAgICAgICByZXR1cm4geyBiZXN0SW5kZXg6IGluZGV4LCBiZXN0U2NvcmU6IHNjb3JlIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNjb3JlRGF0YTtcbiAgICB9LCB7IGJlc3RJbmRleDogc2VsZWN0ZWRPcHRpb24sIGJlc3RTY29yZTogMCB9KTtcbiAgICAvLyBpZiBhbGwgc2NvcmVzIGFyZSB0aGUgc2FtZSBnbyB3aXRoIHNlbGVjdGVkT3B0aW9uXG4gICAgaWYgKHNjb3JlQ291bnQuc2l6ZSA9PT0gMSAmJiBzZWxlY3RlZE9wdGlvbiA+PSAwKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZE9wdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIGJlc3RJbmRleDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldENsb3Nlc3RNYXRjaGluZ09wdGlvbi5qcy5tYXAiLCJpbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pc09iamVjdCc7XG4vKiogRGV0ZWN0cyB3aGV0aGVyIHRoZSBnaXZlbiBgc2NoZW1hYCBjb250YWlucyBmaXhlZCBpdGVtcy4gVGhpcyBpcyB0aGUgY2FzZSB3aGVuIGBzY2hlbWEuaXRlbXNgIGlzIGEgbm9uLWVtcHR5IGFycmF5XG4gKiB0aGF0IG9ubHkgY29udGFpbnMgb2JqZWN0cy5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBpbiB3aGljaCB0byBjaGVjayBmb3IgZml4ZWQgaXRlbXNcbiAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGVyZSBhcmUgZml4ZWQgaXRlbXMgaW4gdGhlIHNjaGVtYSwgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzRml4ZWRJdGVtcyhzY2hlbWEpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShzY2hlbWEuaXRlbXMpICYmIHNjaGVtYS5pdGVtcy5sZW5ndGggPiAwICYmIHNjaGVtYS5pdGVtcy5ldmVyeSgoaXRlbSkgPT4gaXNPYmplY3QoaXRlbSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXNGaXhlZEl0ZW1zLmpzLm1hcCIsImltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pc09iamVjdCc7XG4vKiogTWVyZ2VzIHRoZSBgZGVmYXVsdHNgIG9iamVjdCBvZiB0eXBlIGBUYCBpbnRvIHRoZSBgZm9ybURhdGFgIG9mIHR5cGUgYFRgXG4gKlxuICogV2hlbiBtZXJnaW5nIGRlZmF1bHRzIGFuZCBmb3JtIGRhdGEsIHdlIHdhbnQgdG8gbWVyZ2UgaW4gdGhpcyBzcGVjaWZpYyB3YXk6XG4gKiAtIG9iamVjdHMgYXJlIGRlZXBseSBtZXJnZWRcbiAqIC0gYXJyYXlzIGFyZSBtZXJnZWQgaW4gc3VjaCBhIHdheSB0aGF0OlxuICogICAtIHdoZW4gdGhlIGFycmF5IGlzIHNldCBpbiBmb3JtIGRhdGEsIG9ubHkgYXJyYXkgZW50cmllcyBzZXQgaW4gZm9ybSBkYXRhXG4gKiAgICAgYXJlIGRlZXBseSBtZXJnZWQ7IGFkZGl0aW9uYWwgZW50cmllcyBmcm9tIHRoZSBkZWZhdWx0cyBhcmUgaWdub3JlZCB1bmxlc3MgYG1lcmdlRXh0cmFBcnJheURlZmF1bHRzYCBpcyB0cnVlLCBpblxuICogICAgIHdoaWNoIGNhc2UgdGhlIGV4dHJhcyBhcmUgYXBwZW5kZWQgb250byB0aGUgZW5kIG9mIHRoZSBmb3JtIGRhdGFcbiAqICAgLSB3aGVuIHRoZSBhcnJheSBpcyBub3Qgc2V0IGluIGZvcm0gZGF0YSwgdGhlIGRlZmF1bHQgaXMgY29waWVkIG92ZXJcbiAqIC0gc2NhbGFycyBhcmUgb3ZlcndyaXR0ZW4vc2V0IGJ5IGZvcm0gZGF0YSB1bmxlc3MgdW5kZWZpbmVkIGFuZCB0aGVyZSBpcyBhIGRlZmF1bHQgQU5EIGBkZWZhdWx0U3VwZXJjZWRlc1VuZGVmaW5lZGBcbiAqICAgaXMgdHJ1ZVxuICpcbiAqIEBwYXJhbSBbZGVmYXVsdHNdIC0gVGhlIGRlZmF1bHRzIHRvIG1lcmdlXG4gKiBAcGFyYW0gW2Zvcm1EYXRhXSAtIFRoZSBmb3JtIGRhdGEgaW50byB3aGljaCB0aGUgZGVmYXVsdHMgd2lsbCBiZSBtZXJnZWRcbiAqIEBwYXJhbSBbbWVyZ2VFeHRyYUFycmF5RGVmYXVsdHM9ZmFsc2VdIC0gSWYgdHJ1ZSwgYW55IGFkZGl0aW9uYWwgZGVmYXVsdCBhcnJheSBlbnRyaWVzIGFyZSBhcHBlbmRlZCBvbnRvIHRoZSBmb3JtRGF0YVxuICogQHBhcmFtIFtkZWZhdWx0U3VwZXJjZWRlc1VuZGVmaW5lZD1mYWxzZV0gLSBJZiB0cnVlLCBhbiBleHBsaWNpdCB1bmRlZmluZWQgdmFsdWUgd2lsbCBiZSBvdmVyd3JpdHRlbiBieSB0aGUgZGVmYXVsdCB2YWx1ZVxuICogQHJldHVybnMgLSBUaGUgcmVzdWx0aW5nIG1lcmdlZCBmb3JtIGRhdGEgd2l0aCBkZWZhdWx0c1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZURlZmF1bHRzV2l0aEZvcm1EYXRhKGRlZmF1bHRzLCBmb3JtRGF0YSwgbWVyZ2VFeHRyYUFycmF5RGVmYXVsdHMgPSBmYWxzZSwgZGVmYXVsdFN1cGVyY2VkZXNVbmRlZmluZWQgPSBmYWxzZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGZvcm1EYXRhKSkge1xuICAgICAgICBjb25zdCBkZWZhdWx0c0FycmF5ID0gQXJyYXkuaXNBcnJheShkZWZhdWx0cykgPyBkZWZhdWx0cyA6IFtdO1xuICAgICAgICBjb25zdCBtYXBwZWQgPSBmb3JtRGF0YS5tYXAoKHZhbHVlLCBpZHgpID0+IHtcbiAgICAgICAgICAgIGlmIChkZWZhdWx0c0FycmF5W2lkeF0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VEZWZhdWx0c1dpdGhGb3JtRGF0YShkZWZhdWx0c0FycmF5W2lkeF0sIHZhbHVlLCBtZXJnZUV4dHJhQXJyYXlEZWZhdWx0cywgZGVmYXVsdFN1cGVyY2VkZXNVbmRlZmluZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gTWVyZ2UgYW55IGV4dHJhIGRlZmF1bHRzIHdoZW4gbWVyZ2VFeHRyYUFycmF5RGVmYXVsdHMgaXMgdHJ1ZVxuICAgICAgICBpZiAobWVyZ2VFeHRyYUFycmF5RGVmYXVsdHMgJiYgbWFwcGVkLmxlbmd0aCA8IGRlZmF1bHRzQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgICBtYXBwZWQucHVzaCguLi5kZWZhdWx0c0FycmF5LnNsaWNlKG1hcHBlZC5sZW5ndGgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWFwcGVkO1xuICAgIH1cbiAgICBpZiAoaXNPYmplY3QoZm9ybURhdGEpKSB7XG4gICAgICAgIGNvbnN0IGFjYyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRzKTsgLy8gUHJldmVudCBtdXRhdGlvbiBvZiBzb3VyY2Ugb2JqZWN0LlxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZm9ybURhdGEpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGFjY1trZXldID0gbWVyZ2VEZWZhdWx0c1dpdGhGb3JtRGF0YShkZWZhdWx0cyA/IGdldChkZWZhdWx0cywga2V5KSA6IHt9LCBnZXQoZm9ybURhdGEsIGtleSksIG1lcmdlRXh0cmFBcnJheURlZmF1bHRzLCBkZWZhdWx0U3VwZXJjZWRlc1VuZGVmaW5lZCk7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCBhY2MpO1xuICAgIH1cbiAgICBpZiAoZGVmYXVsdFN1cGVyY2VkZXNVbmRlZmluZWQgJiYgZm9ybURhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gZGVmYXVsdHM7XG4gICAgfVxuICAgIHJldHVybiBmb3JtRGF0YTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1lcmdlRGVmYXVsdHNXaXRoRm9ybURhdGEuanMubWFwIiwiaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QnO1xuLyoqIFJlY3Vyc2l2ZWx5IG1lcmdlIGRlZXBseSBuZXN0ZWQgb2JqZWN0cy5cbiAqXG4gKiBAcGFyYW0gb2JqMSAtIFRoZSBmaXJzdCBvYmplY3QgdG8gbWVyZ2VcbiAqIEBwYXJhbSBvYmoyIC0gVGhlIHNlY29uZCBvYmplY3QgdG8gbWVyZ2VcbiAqIEBwYXJhbSBbY29uY2F0QXJyYXlzPWZhbHNlXSAtIE9wdGlvbmFsIGZsYWcgdGhhdCwgd2hlbiB0cnVlLCB3aWxsIGNhdXNlIGFycmF5cyB0byBiZSBjb25jYXRlbmF0ZWQuIFVzZVxuICogICAgICAgICAgXCJwcmV2ZW50RHVwbGljYXRlc1wiIHRvIG1lcmdlIGFycmF5cyBpbiBhIG1hbm5lciB0aGF0IHByZXZlbnRzIGFueSBkdXBsaWNhdGUgZW50cmllcyBmcm9tIGJlaW5nIG1lcmdlZC5cbiAqICAgICAgICAgIE5PVEU6IFVzZXMgc2hhbGxvdyBjb21wYXJpc29uIGZvciB0aGUgZHVwbGljYXRlIGNoZWNraW5nLlxuICogQHJldHVybnMgLSBBIG5ldyBvYmplY3QgdGhhdCBpcyB0aGUgbWVyZ2Ugb2YgdGhlIHR3byBnaXZlbiBvYmplY3RzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlT2JqZWN0cyhvYmoxLCBvYmoyLCBjb25jYXRBcnJheXMgPSBmYWxzZSkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmoyKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IGxlZnQgPSBvYmoxID8gb2JqMVtrZXldIDoge30sIHJpZ2h0ID0gb2JqMltrZXldO1xuICAgICAgICBpZiAob2JqMSAmJiBrZXkgaW4gb2JqMSAmJiBpc09iamVjdChyaWdodCkpIHtcbiAgICAgICAgICAgIGFjY1trZXldID0gbWVyZ2VPYmplY3RzKGxlZnQsIHJpZ2h0LCBjb25jYXRBcnJheXMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvbmNhdEFycmF5cyAmJiBBcnJheS5pc0FycmF5KGxlZnQpICYmIEFycmF5LmlzQXJyYXkocmlnaHQpKSB7XG4gICAgICAgICAgICBsZXQgdG9NZXJnZSA9IHJpZ2h0O1xuICAgICAgICAgICAgaWYgKGNvbmNhdEFycmF5cyA9PT0gJ3ByZXZlbnREdXBsaWNhdGVzJykge1xuICAgICAgICAgICAgICAgIHRvTWVyZ2UgPSByaWdodC5yZWR1Y2UoKHJlc3VsdCwgdmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFsZWZ0LmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWNjW2tleV0gPSBsZWZ0LmNvbmNhdCh0b01lcmdlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGFjY1trZXldID0gcmlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBPYmplY3QuYXNzaWduKHt9LCBvYmoxKSk7IC8vIFByZXZlbnQgbXV0YXRpb24gb2Ygc291cmNlIG9iamVjdC5cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1lcmdlT2JqZWN0cy5qcy5tYXAiLCJpbXBvcnQgeyBDT05TVF9LRVkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKiogVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIGdpdmVuIGBzY2hlbWFgIG1hdGNoZXMgYSBzaW5nbGUgY29uc3RhbnQgdmFsdWUuIFRoaXMgaGFwcGVucyB3aGVuIGVpdGhlciB0aGUgc2NoZW1hIGhhc1xuICogYW4gYGVudW1gIGFycmF5IHdpdGggYSBzaW5nbGUgdmFsdWUgb3IgdGhlcmUgaXMgYSBgY29uc3RgIGRlZmluZWQuXG4gKlxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIGEgZmllbGRcbiAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGUgYHNjaGVtYWAgaGFzIGEgc2luZ2xlIGNvbnN0YW50IHZhbHVlLCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNDb25zdGFudChzY2hlbWEpIHtcbiAgICByZXR1cm4gKEFycmF5LmlzQXJyYXkoc2NoZW1hLmVudW0pICYmIHNjaGVtYS5lbnVtLmxlbmd0aCA9PT0gMSkgfHwgQ09OU1RfS0VZIGluIHNjaGVtYTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzQ29uc3RhbnQuanMubWFwIiwiaW1wb3J0IGlzQ29uc3RhbnQgZnJvbSAnLi4vaXNDb25zdGFudCc7XG5pbXBvcnQgcmV0cmlldmVTY2hlbWEgZnJvbSAnLi9yZXRyaWV2ZVNjaGVtYSc7XG4vKiogQ2hlY2tzIHRvIHNlZSBpZiB0aGUgYHNjaGVtYWAgY29tYmluYXRpb24gcmVwcmVzZW50cyBhIHNlbGVjdFxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHRoZVNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIGNoZWNrIGZvciBhIHNlbGVjdCBmbGFnIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSBbcm9vdFNjaGVtYV0gLSBUaGUgcm9vdCBzY2hlbWEsIHVzZWQgdG8gcHJpbWFyaWx5IHRvIGxvb2sgdXAgYCRyZWZgc1xuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRydWUgaWYgc2NoZW1hIGNvbnRhaW5zIGEgc2VsZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNTZWxlY3QodmFsaWRhdG9yLCB0aGVTY2hlbWEsIHJvb3RTY2hlbWEgPSB7fSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICBjb25zdCBzY2hlbWEgPSByZXRyaWV2ZVNjaGVtYSh2YWxpZGF0b3IsIHRoZVNjaGVtYSwgcm9vdFNjaGVtYSwgdW5kZWZpbmVkLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgY29uc3QgYWx0U2NoZW1hcyA9IHNjaGVtYS5vbmVPZiB8fCBzY2hlbWEuYW55T2Y7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hLmVudW0pKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShhbHRTY2hlbWFzKSkge1xuICAgICAgICByZXR1cm4gYWx0U2NoZW1hcy5ldmVyeSgoYWx0U2NoZW1hcykgPT4gdHlwZW9mIGFsdFNjaGVtYXMgIT09ICdib29sZWFuJyAmJiBpc0NvbnN0YW50KGFsdFNjaGVtYXMpKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXNTZWxlY3QuanMubWFwIiwiaW1wb3J0IGlzU2VsZWN0IGZyb20gJy4vaXNTZWxlY3QnO1xuLyoqIENoZWNrcyB0byBzZWUgaWYgdGhlIGBzY2hlbWFgIGNvbWJpbmF0aW9uIHJlcHJlc2VudHMgYSBtdWx0aS1zZWxlY3RcbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCBjaGVjayBmb3IgYSBtdWx0aS1zZWxlY3QgZmxhZyBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gW3Jvb3RTY2hlbWFdIC0gVGhlIHJvb3Qgc2NoZW1hLCB1c2VkIHRvIHByaW1hcmlseSB0byBsb29rIHVwIGAkcmVmYHNcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUcnVlIGlmIHNjaGVtYSBjb250YWlucyBhIG11bHRpLXNlbGVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzTXVsdGlTZWxlY3QodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgaWYgKCFzY2hlbWEudW5pcXVlSXRlbXMgfHwgIXNjaGVtYS5pdGVtcyB8fCB0eXBlb2Ygc2NoZW1hLml0ZW1zID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gaXNTZWxlY3QodmFsaWRhdG9yLCBzY2hlbWEuaXRlbXMsIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzTXVsdGlTZWxlY3QuanMubWFwIiwiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCB7IEFOWV9PRl9LRVksIENPTlNUX0tFWSwgREVGQVVMVF9LRVksIERFUEVOREVOQ0lFU19LRVksIFBST1BFUlRJRVNfS0VZLCBPTkVfT0ZfS0VZLCBSRUZfS0VZLCBBTExfT0ZfS0VZLCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgZmluZFNjaGVtYURlZmluaXRpb24gZnJvbSAnLi4vZmluZFNjaGVtYURlZmluaXRpb24nO1xuaW1wb3J0IGdldENsb3Nlc3RNYXRjaGluZ09wdGlvbiBmcm9tICcuL2dldENsb3Nlc3RNYXRjaGluZ09wdGlvbic7XG5pbXBvcnQgZ2V0RGlzY3JpbWluYXRvckZpZWxkRnJvbVNjaGVtYSBmcm9tICcuLi9nZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hJztcbmltcG9ydCBnZXRTY2hlbWFUeXBlIGZyb20gJy4uL2dldFNjaGVtYVR5cGUnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4uL2lzT2JqZWN0JztcbmltcG9ydCBpc0ZpeGVkSXRlbXMgZnJvbSAnLi4vaXNGaXhlZEl0ZW1zJztcbmltcG9ydCBtZXJnZURlZmF1bHRzV2l0aEZvcm1EYXRhIGZyb20gJy4uL21lcmdlRGVmYXVsdHNXaXRoRm9ybURhdGEnO1xuaW1wb3J0IG1lcmdlT2JqZWN0cyBmcm9tICcuLi9tZXJnZU9iamVjdHMnO1xuaW1wb3J0IG1lcmdlU2NoZW1hcyBmcm9tICcuLi9tZXJnZVNjaGVtYXMnO1xuaW1wb3J0IGlzTXVsdGlTZWxlY3QgZnJvbSAnLi9pc011bHRpU2VsZWN0JztcbmltcG9ydCByZXRyaWV2ZVNjaGVtYSwgeyByZXNvbHZlRGVwZW5kZW5jaWVzIH0gZnJvbSAnLi9yZXRyaWV2ZVNjaGVtYSc7XG5jb25zdCBQUklNSVRJVkVfVFlQRVMgPSBbJ3N0cmluZycsICdudW1iZXInLCAnaW50ZWdlcicsICdib29sZWFuJywgJ251bGwnXTtcbi8qKiBFbnVtIHRoYXQgaW5kaWNhdGVzIGhvdyBgc2NoZW1hLmFkZGl0aW9uYWxJdGVtc2Agc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGBnZXRJbm5lclNjaGVtYUZvckFycmF5SXRlbSgpYCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IHZhciBBZGRpdGlvbmFsSXRlbXNIYW5kbGluZztcbihmdW5jdGlvbiAoQWRkaXRpb25hbEl0ZW1zSGFuZGxpbmcpIHtcbiAgICBBZGRpdGlvbmFsSXRlbXNIYW5kbGluZ1tBZGRpdGlvbmFsSXRlbXNIYW5kbGluZ1tcIklnbm9yZVwiXSA9IDBdID0gXCJJZ25vcmVcIjtcbiAgICBBZGRpdGlvbmFsSXRlbXNIYW5kbGluZ1tBZGRpdGlvbmFsSXRlbXNIYW5kbGluZ1tcIkludmVydFwiXSA9IDFdID0gXCJJbnZlcnRcIjtcbiAgICBBZGRpdGlvbmFsSXRlbXNIYW5kbGluZ1tBZGRpdGlvbmFsSXRlbXNIYW5kbGluZ1tcIkZhbGxiYWNrXCJdID0gMl0gPSBcIkZhbGxiYWNrXCI7XG59KShBZGRpdGlvbmFsSXRlbXNIYW5kbGluZyB8fCAoQWRkaXRpb25hbEl0ZW1zSGFuZGxpbmcgPSB7fSkpO1xuLyoqIEdpdmVuIGEgYHNjaGVtYWAgd2lsbCByZXR1cm4gYW4gaW5uZXIgc2NoZW1hIHRoYXQgZm9yIGFuIGFycmF5IGl0ZW0uIFRoaXMgaXMgY29tcHV0ZWQgZGlmZmVyZW50bHkgYmFzZWQgb24gdGhlXG4gKiBgYWRkaXRpb25hbEl0ZW1zYCBlbnVtIGFuZCB0aGUgdmFsdWUgb2YgYGlkeGAuIFRoZXJlIGFyZSBmb3VyIHBvc3NpYmxlIHJldHVybnM6XG4gKiAxLiBJZiBgaWR4YCBpcyA+PSAwLCB0aGVuIGlmIGBzY2hlbWEuaXRlbXNgIGlzIGFuIGFycmF5IHRoZSBgaWR4YHRoIGVsZW1lbnQgb2YgdGhlIGFycmF5IGlzIHJldHVybmVkIGlmIGl0IGlzIGEgdmFsaWRcbiAqICAgIGluZGV4IGFuZCBub3QgYSBib29sZWFuLCBvdGhlcndpc2UgaXQgZmFsbHMgdGhyb3VnaCB0byAzLlxuICogMi4gSWYgYHNjaGVtYS5pdGVtc2AgaXMgbm90IGFuIGFycmF5IEFORCB0cnV0aHkgYW5kIG5vdCBhIGJvb2xlYW4sIHRoZW4gYHNjaGVtYS5pdGVtc2AgaXMgcmV0dXJuZWQgc2luY2UgaXQgYWN0dWFsbHlcbiAqICAgIGlzIGEgc2NoZW1hLCBvdGhlcndpc2UgaXQgZmFsbHMgdGhyb3VnaCB0byAzLlxuICogMy4gSWYgYGFkZGl0aW9uYWxJdGVtc2AgaXMgbm90IGBBZGRpdGlvbmFsSXRlbXNIYW5kbGluZy5JZ25vcmVgIGFuZCBgc2NoZW1hLmFkZGl0aW9uYWxJdGVtc2AgaXMgYW4gb2JqZWN0LCB0aGVuXG4gKiAgICBgc2NoZW1hLmFkZGl0aW9uYWxJdGVtc2AgaXMgcmV0dXJuZWQgc2luY2UgaXQgYWN0dWFsbHkgaXMgYSBzY2hlbWEsIG90aGVyd2lzZSBpdCBmYWxscyB0aHJvdWdoIHRvIDQuXG4gKiA0LiB7fSBpcyByZXR1cm5lZCByZXByZXNlbnRpbmcgYW4gZW1wdHkgc2NoZW1hXG4gKlxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZnJvbSB3aGljaCB0byBnZXQgdGhlIHBhcnRpY3VsYXIgaXRlbVxuICogQHBhcmFtIFthZGRpdGlvbmFsSXRlbXM9QWRkaXRpb25hbEl0ZW1zSGFuZGxpbmcuSWdub3JlXSAtIEhvdyBkbyB3ZSB3YW50IHRvIGhhbmRsZSBhZGRpdGlvbmFsIGl0ZW1zP1xuICogQHBhcmFtIFtpZHg9LTFdIC0gSW5kZXgsIGlmIG5vbi1uZWdhdGl2ZSwgd2lsbCBiZSB1c2VkIHRvIHJldHVybiB0aGUgaWR4LXRoIGVsZW1lbnQgaW4gYSBgc2NoZW1hLml0ZW1zYCBhcnJheVxuICogQHJldHVybnMgLSBUaGUgYmVzdCBmaXQgc2NoZW1hIG9iamVjdCBmcm9tIHRoZSBgc2NoZW1hYCBnaXZlbiB0aGUgYGFkZGl0aW9uYWxJdGVtc2AgYW5kIGBpZHhgIG1vZGlmaWVyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5uZXJTY2hlbWFGb3JBcnJheUl0ZW0oc2NoZW1hLCBhZGRpdGlvbmFsSXRlbXMgPSBBZGRpdGlvbmFsSXRlbXNIYW5kbGluZy5JZ25vcmUsIGlkeCA9IC0xKSB7XG4gICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYS5pdGVtcykgJiYgaWR4IDwgc2NoZW1hLml0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHNjaGVtYS5pdGVtc1tpZHhdO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpdGVtICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChzY2hlbWEuaXRlbXMgJiYgIUFycmF5LmlzQXJyYXkoc2NoZW1hLml0ZW1zKSAmJiB0eXBlb2Ygc2NoZW1hLml0ZW1zICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYS5pdGVtcztcbiAgICB9XG4gICAgaWYgKGFkZGl0aW9uYWxJdGVtcyAhPT0gQWRkaXRpb25hbEl0ZW1zSGFuZGxpbmcuSWdub3JlICYmIGlzT2JqZWN0KHNjaGVtYS5hZGRpdGlvbmFsSXRlbXMpKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWEuYWRkaXRpb25hbEl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4ge307XG59XG4vKiogRWl0aGVyIGFkZCBgY29tcHV0ZWREZWZhdWx0YCBhdCBga2V5YCBpbnRvIGBvYmpgIG9yIG5vdCBhZGQgaXQgYmFzZWQgb24gaXRzIHZhbHVlLCB0aGUgdmFsdWUgb2ZcbiAqIGBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzYCwgdGhlIHZhbHVlIG9mIGBlbXB0eU9iamVjdEZpZWxkc2AgYW5kIGlmIGl0cyBwYXJlbnQgZmllbGQgaXMgcmVxdWlyZWQuIEdlbmVyYWxseSB1bmRlZmluZWRcbiAqIGBjb21wdXRlZERlZmF1bHRgIHZhbHVlcyBhcmUgYWRkZWQgb25seSB3aGVuIGBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzYCBpcyBlaXRoZXIgdHJ1ZS9cImV4Y2x1ZGVPYmplY3RDaGlsZHJlblwiLiBJZiBgXG4gKiBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzYCBpcyBmYWxzZSBhbmQgYGVtcHR5T2JqZWN0RmllbGRzYCBpcyBub3QgXCJza2lwRGVmYXVsdHNcIiwgdGhlbiBub24tdW5kZWZpbmVkIGFuZCBub24tZW1wdHktb2JqZWN0XG4gKiB2YWx1ZXMgd2lsbCBiZSBhZGRlZCBiYXNlZCBvbiBjZXJ0YWluIGNvbmRpdGlvbnMuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgaW50byB3aGljaCB0aGUgY29tcHV0ZWQgZGVmYXVsdCBtYXkgYmUgYWRkZWRcbiAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IGludG8gdGhlIG9iamVjdCBhdCB3aGljaCB0aGUgY29tcHV0ZWQgZGVmYXVsdCBtYXkgYmUgYWRkZWRcbiAqIEBwYXJhbSBjb21wdXRlZERlZmF1bHQgLSBUaGUgY29tcHV0ZWQgZGVmYXVsdCB2YWx1ZSB0aGF0IG1heWJlIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgb2JqXG4gKiBAcGFyYW0gaW5jbHVkZVVuZGVmaW5lZFZhbHVlcyAtIE9wdGlvbmFsIGZsYWcsIGlmIHRydWUsIGNhdXNlIHVuZGVmaW5lZCB2YWx1ZXMgdG8gYmUgYWRkZWQgYXMgZGVmYXVsdHMuXG4gKiAgICAgICAgICBJZiBcImV4Y2x1ZGVPYmplY3RDaGlsZHJlblwiLCBjYXVzZSB1bmRlZmluZWQgdmFsdWVzIGZvciB0aGlzIG9iamVjdCBhbmQgcGFzcyBgaW5jbHVkZVVuZGVmaW5lZFZhbHVlc2AgYXNcbiAqICAgICAgICAgIGZhbHNlIHdoZW4gY29tcHV0aW5nIGRlZmF1bHRzIGZvciBhbnkgbmVzdGVkIG9iamVjdCBwcm9wZXJ0aWVzLiBJZiBcImFsbG93RW1wdHlPYmplY3RcIiwgcHJldmVudHMgdW5kZWZpbmVkXG4gKiAgICAgICAgICB2YWx1ZXMgaW4gdGhpcyBvYmplY3Qgd2hpbGUgYWxsb3cgdGhlIG9iamVjdCBpdHNlbGYgdG8gYmUgZW1wdHkgYW5kIHBhc3NpbmcgYGluY2x1ZGVVbmRlZmluZWRWYWx1ZXNgIGFzXG4gKiAgICAgICAgICBmYWxzZSB3aGVuIGNvbXB1dGluZyBkZWZhdWx0cyBmb3IgYW55IG5lc3RlZCBvYmplY3QgcHJvcGVydGllcy5cbiAqIEBwYXJhbSBpc1BhcmVudFJlcXVpcmVkIC0gVGhlIG9wdGlvbmFsIGJvb2xlYW4gdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgcGFyZW50IGZpZWxkIGlzIHJlcXVpcmVkXG4gKiBAcGFyYW0gcmVxdWlyZWRGaWVsZHMgLSBUaGUgbGlzdCBvZiBmaWVsZHMgdGhhdCBhcmUgcmVxdWlyZWRcbiAqIEBwYXJhbSBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmplY3QsIGlmIHByb3ZpZGVkLCBhbGxvd3MgdXNlcnMgdG8gb3ZlcnJpZGVcbiAqICAgICAgICBkZWZhdWx0IGZvcm0gc3RhdGUgYmVoYXZpb3JcbiAqIEBwYXJhbSBpc0NvbnN0IC0gT3B0aW9uYWwgZmxhZywgaWYgdHJ1ZSwgaW5kaWNhdGVzIHRoYXQgdGhlIHNjaGVtYSBoYXMgYSBjb25zdCBwcm9wZXJ0eSBkZWZpbmVkLCB0aHVzIHdlIHNob3VsZCBhbHdheXMgcmV0dXJuIHRoZSBjb21wdXRlZERlZmF1bHQgc2luY2UgaXQncyBjb21pbmcgZnJvbSB0aGUgY29uc3QuXG4gKi9cbmZ1bmN0aW9uIG1heWJlQWRkRGVmYXVsdFRvT2JqZWN0KG9iaiwga2V5LCBjb21wdXRlZERlZmF1bHQsIGluY2x1ZGVVbmRlZmluZWRWYWx1ZXMsIGlzUGFyZW50UmVxdWlyZWQsIHJlcXVpcmVkRmllbGRzID0gW10sIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPSB7fSwgaXNDb25zdCA9IGZhbHNlKSB7XG4gICAgY29uc3QgeyBlbXB0eU9iamVjdEZpZWxkcyA9ICdwb3B1bGF0ZUFsbERlZmF1bHRzJyB9ID0gZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcjtcbiAgICBpZiAoaW5jbHVkZVVuZGVmaW5lZFZhbHVlcyB8fCBpc0NvbnN0KSB7XG4gICAgICAgIC8vIElmIGluY2x1ZGVVbmRlZmluZWRWYWx1ZXNcbiAgICAgICAgLy8gT3IgaWYgdGhlIHNjaGVtYSBoYXMgYSBjb25zdCBwcm9wZXJ0eSBkZWZpbmVkLCB0aGVuIHdlIHNob3VsZCBhbHdheXMgcmV0dXJuIHRoZSBjb21wdXRlZERlZmF1bHQgc2luY2UgaXQncyBjb21pbmcgZnJvbSB0aGUgY29uc3QuXG4gICAgICAgIG9ialtrZXldID0gY29tcHV0ZWREZWZhdWx0O1xuICAgIH1cbiAgICBlbHNlIGlmIChlbXB0eU9iamVjdEZpZWxkcyAhPT0gJ3NraXBEZWZhdWx0cycpIHtcbiAgICAgICAgaWYgKGlzT2JqZWN0KGNvbXB1dGVkRGVmYXVsdCkpIHtcbiAgICAgICAgICAgIC8vIElmIGlzUGFyZW50UmVxdWlyZWQgaXMgdW5kZWZpbmVkLCB0aGVuIHdlIGFyZSBhdCB0aGUgcm9vdCBsZXZlbCBvZiB0aGUgc2NoZW1hIHNvIGRlZmVyIHRvIHRoZSByZXF1aXJlZG5lc3Mgb2ZcbiAgICAgICAgICAgIC8vIHRoZSBmaWVsZCBrZXkgaXRzZWxmIGluIHRoZSBgcmVxdWlyZWRGaWVsZGAgbGlzdFxuICAgICAgICAgICAgY29uc3QgaXNTZWxmT3JQYXJlbnRSZXF1aXJlZCA9IGlzUGFyZW50UmVxdWlyZWQgPT09IHVuZGVmaW5lZCA/IHJlcXVpcmVkRmllbGRzLmluY2x1ZGVzKGtleSkgOiBpc1BhcmVudFJlcXVpcmVkO1xuICAgICAgICAgICAgLy8gSWYgZW1wdHlPYmplY3RGaWVsZHMgJ3NraXBFbXB0eURlZmF1bHRzJyBzdG9yZSBjb21wdXRlZERlZmF1bHQgaWYgaXQncyBhIG5vbi1lbXB0eSBvYmplY3QoZS5nLiBub3Qge30pXG4gICAgICAgICAgICBpZiAoZW1wdHlPYmplY3RGaWVsZHMgPT09ICdza2lwRW1wdHlEZWZhdWx0cycpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzRW1wdHkoY29tcHV0ZWREZWZhdWx0KSkge1xuICAgICAgICAgICAgICAgICAgICBvYmpba2V5XSA9IGNvbXB1dGVkRGVmYXVsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBFbHNlIHN0b3JlIGNvbXB1dGVkRGVmYXVsdCBpZiBpdCdzIGEgbm9uLWVtcHR5IG9iamVjdChlLmcuIG5vdCB7fSkgYW5kIHNhdGlzZmllcyBjZXJ0YWluIGNvbmRpdGlvbnNcbiAgICAgICAgICAgIC8vIENvbmRpdGlvbiAxOiBJZiBjb21wdXRlZERlZmF1bHQgaXMgbm90IGVtcHR5IG9yIGlmIHRoZSBrZXkgaXMgYSByZXF1aXJlZCBmaWVsZFxuICAgICAgICAgICAgLy8gQ29uZGl0aW9uIDI6IElmIHRoZSBwYXJlbnQgb2JqZWN0IGlzIHJlcXVpcmVkIG9yIGVtcHR5T2JqZWN0RmllbGRzIGlzIG5vdCAncG9wdWxhdGVSZXF1aXJlZERlZmF1bHRzJ1xuICAgICAgICAgICAgZWxzZSBpZiAoKCFpc0VtcHR5KGNvbXB1dGVkRGVmYXVsdCkgfHwgcmVxdWlyZWRGaWVsZHMuaW5jbHVkZXMoa2V5KSkgJiZcbiAgICAgICAgICAgICAgICAoaXNTZWxmT3JQYXJlbnRSZXF1aXJlZCB8fCBlbXB0eU9iamVjdEZpZWxkcyAhPT0gJ3BvcHVsYXRlUmVxdWlyZWREZWZhdWx0cycpKSB7XG4gICAgICAgICAgICAgICAgb2JqW2tleV0gPSBjb21wdXRlZERlZmF1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoXG4gICAgICAgIC8vIFN0b3JlIGNvbXB1dGVkRGVmYXVsdCBpZiBpdCdzIGEgZGVmaW5lZCBwcmltaXRpdmUgKGUuZy4sIHRydWUpIGFuZCBzYXRpc2ZpZXMgY2VydGFpbiBjb25kaXRpb25zXG4gICAgICAgIC8vIENvbmRpdGlvbiAxOiBjb21wdXRlZERlZmF1bHQgaXMgbm90IHVuZGVmaW5lZFxuICAgICAgICAvLyBDb25kaXRpb24gMjogSWYgZW1wdHlPYmplY3RGaWVsZHMgaXMgJ3BvcHVsYXRlQWxsRGVmYXVsdHMnIG9yICdza2lwRW1wdHlEZWZhdWx0cykgb3IgaWYgdGhlIGtleSBpcyBhIHJlcXVpcmVkIGZpZWxkXG4gICAgICAgIGNvbXB1dGVkRGVmYXVsdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAoZW1wdHlPYmplY3RGaWVsZHMgPT09ICdwb3B1bGF0ZUFsbERlZmF1bHRzJyB8fFxuICAgICAgICAgICAgICAgIGVtcHR5T2JqZWN0RmllbGRzID09PSAnc2tpcEVtcHR5RGVmYXVsdHMnIHx8XG4gICAgICAgICAgICAgICAgcmVxdWlyZWRGaWVsZHMuaW5jbHVkZXMoa2V5KSkpIHtcbiAgICAgICAgICAgIG9ialtrZXldID0gY29tcHV0ZWREZWZhdWx0O1xuICAgICAgICB9XG4gICAgfVxufVxuLyoqIENvbXB1dGVzIHRoZSBkZWZhdWx0cyBmb3IgdGhlIGN1cnJlbnQgYHNjaGVtYWAgZ2l2ZW4gdGhlIGByYXdGb3JtRGF0YWAgYW5kIGBwYXJlbnREZWZhdWx0c2AgaWYgYW55LiBUaGlzIGRyaWxscyBpbnRvXG4gKiBlYWNoIGxldmVsIG9mIHRoZSBzY2hlbWEsIHJlY3Vyc2l2ZWx5LCB0byBmaWxsIG91dCBldmVyeSBsZXZlbCBvZiBkZWZhdWx0cyBwcm92aWRlZCBieSB0aGUgc2NoZW1hLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHJhd1NjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBkZWZhdWx0IHN0YXRlIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSB7Q29tcHV0ZURlZmF1bHRzUHJvcHN9IGNvbXB1dGVEZWZhdWx0c1Byb3BzIC0gT3B0aW9uYWwgcHJvcHMgZm9yIHRoaXMgZnVuY3Rpb25cbiAqIEByZXR1cm5zIC0gVGhlIHJlc3VsdGluZyBgZm9ybURhdGFgIHdpdGggYWxsIHRoZSBkZWZhdWx0cyBwcm92aWRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZURlZmF1bHRzKHZhbGlkYXRvciwgcmF3U2NoZW1hLCBjb21wdXRlRGVmYXVsdHNQcm9wcyA9IHt9KSB7XG4gICAgY29uc3QgeyBwYXJlbnREZWZhdWx0cywgcmF3Rm9ybURhdGEsIHJvb3RTY2hlbWEgPSB7fSwgaW5jbHVkZVVuZGVmaW5lZFZhbHVlcyA9IGZhbHNlLCBfcmVjdXJzZUxpc3QgPSBbXSwgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9IHVuZGVmaW5lZCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YgPSB1bmRlZmluZWQsIHJlcXVpcmVkLCB9ID0gY29tcHV0ZURlZmF1bHRzUHJvcHM7XG4gICAgY29uc3QgZm9ybURhdGEgPSAoaXNPYmplY3QocmF3Rm9ybURhdGEpID8gcmF3Rm9ybURhdGEgOiB7fSk7XG4gICAgY29uc3Qgc2NoZW1hID0gaXNPYmplY3QocmF3U2NoZW1hKSA/IHJhd1NjaGVtYSA6IHt9O1xuICAgIC8vIENvbXB1dGUgdGhlIGRlZmF1bHRzIHJlY3Vyc2l2ZWx5OiBnaXZlIGhpZ2hlc3QgcHJpb3JpdHkgdG8gZGVlcGVzdCBub2Rlcy5cbiAgICBsZXQgZGVmYXVsdHMgPSBwYXJlbnREZWZhdWx0cztcbiAgICAvLyBJZiB3ZSBnZXQgYSBuZXcgc2NoZW1hLCB0aGVuIHdlIG5lZWQgdG8gcmVjb21wdXRlIGRlZmF1bHRzIGFnYWluIGZvciB0aGUgbmV3IHNjaGVtYSBmb3VuZC5cbiAgICBsZXQgc2NoZW1hVG9Db21wdXRlID0gbnVsbDtcbiAgICBsZXQgZXhwZXJpbWVudGFsX2Rmc2JfdG9fY29tcHV0ZSA9IGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3I7XG4gICAgbGV0IHVwZGF0ZWRSZWN1cnNlTGlzdCA9IF9yZWN1cnNlTGlzdDtcbiAgICBpZiAoc2NoZW1hW0NPTlNUX0tFWV0gJiYgKGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPT09IG51bGwgfHwgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvci5jb25zdEFzRGVmYXVsdHMpICE9PSAnbmV2ZXInKSB7XG4gICAgICAgIGRlZmF1bHRzID0gc2NoZW1hLmNvbnN0O1xuICAgIH1cbiAgICBlbHNlIGlmIChpc09iamVjdChkZWZhdWx0cykgJiYgaXNPYmplY3Qoc2NoZW1hLmRlZmF1bHQpKSB7XG4gICAgICAgIC8vIEZvciBvYmplY3QgZGVmYXVsdHMsIG9ubHkgb3ZlcnJpZGUgcGFyZW50IGRlZmF1bHRzIHRoYXQgYXJlIGRlZmluZWQgaW5cbiAgICAgICAgLy8gc2NoZW1hLmRlZmF1bHQuXG4gICAgICAgIGRlZmF1bHRzID0gbWVyZ2VPYmplY3RzKGRlZmF1bHRzLCBzY2hlbWEuZGVmYXVsdCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKERFRkFVTFRfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICBkZWZhdWx0cyA9IHNjaGVtYS5kZWZhdWx0O1xuICAgIH1cbiAgICBlbHNlIGlmIChSRUZfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICBjb25zdCByZWZOYW1lID0gc2NoZW1hW1JFRl9LRVldO1xuICAgICAgICAvLyBVc2UgcmVmZXJlbmNlZCBzY2hlbWEgZGVmYXVsdHMgZm9yIHRoaXMgbm9kZS5cbiAgICAgICAgaWYgKCFfcmVjdXJzZUxpc3QuaW5jbHVkZXMocmVmTmFtZSkpIHtcbiAgICAgICAgICAgIHVwZGF0ZWRSZWN1cnNlTGlzdCA9IF9yZWN1cnNlTGlzdC5jb25jYXQocmVmTmFtZSk7XG4gICAgICAgICAgICBzY2hlbWFUb0NvbXB1dGUgPSBmaW5kU2NoZW1hRGVmaW5pdGlvbihyZWZOYW1lLCByb290U2NoZW1hKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChERVBFTkRFTkNJRVNfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICAvLyBHZXQgdGhlIGRlZmF1bHQgaWYgc2V0IGZyb20gcHJvcGVydGllcyB0byBlbnN1cmUgdGhlIGRlcGVuZGVuY2llcyBjb25kaXRpb25zIGFyZSByZXNvbHZlZCBiYXNlZCBvbiBpdFxuICAgICAgICBjb25zdCBkZWZhdWx0Rm9ybURhdGEgPSB7XG4gICAgICAgICAgICAuLi5nZXREZWZhdWx0QmFzZWRPblNjaGVtYVR5cGUodmFsaWRhdG9yLCBzY2hlbWEsIGNvbXB1dGVEZWZhdWx0c1Byb3BzLCBkZWZhdWx0cyksXG4gICAgICAgICAgICAuLi5mb3JtRGF0YSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRTY2hlbWEgPSByZXNvbHZlRGVwZW5kZW5jaWVzKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBmYWxzZSwgW10sIGRlZmF1bHRGb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICBzY2hlbWFUb0NvbXB1dGUgPSByZXNvbHZlZFNjaGVtYVswXTsgLy8gcGljayB0aGUgZmlyc3QgZWxlbWVudCBmcm9tIHJlc29sdmUgZGVwZW5kZW5jaWVzXG4gICAgfVxuICAgIGVsc2UgaWYgKGlzRml4ZWRJdGVtcyhzY2hlbWEpKSB7XG4gICAgICAgIGRlZmF1bHRzID0gc2NoZW1hLml0ZW1zLm1hcCgoaXRlbVNjaGVtYSwgaWR4KSA9PiBjb21wdXRlRGVmYXVsdHModmFsaWRhdG9yLCBpdGVtU2NoZW1hLCB7XG4gICAgICAgICAgICByb290U2NoZW1hLFxuICAgICAgICAgICAgaW5jbHVkZVVuZGVmaW5lZFZhbHVlcyxcbiAgICAgICAgICAgIF9yZWN1cnNlTGlzdCxcbiAgICAgICAgICAgIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsXG4gICAgICAgICAgICBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZixcbiAgICAgICAgICAgIHBhcmVudERlZmF1bHRzOiBBcnJheS5pc0FycmF5KHBhcmVudERlZmF1bHRzKSA/IHBhcmVudERlZmF1bHRzW2lkeF0gOiB1bmRlZmluZWQsXG4gICAgICAgICAgICByYXdGb3JtRGF0YTogZm9ybURhdGEsXG4gICAgICAgICAgICByZXF1aXJlZCxcbiAgICAgICAgfSkpO1xuICAgIH1cbiAgICBlbHNlIGlmIChPTkVfT0ZfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICBjb25zdCB7IG9uZU9mLCAuLi5yZW1haW5pbmcgfSA9IHNjaGVtYTtcbiAgICAgICAgaWYgKG9uZU9mLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaXNjcmltaW5hdG9yID0gZ2V0RGlzY3JpbWluYXRvckZpZWxkRnJvbVNjaGVtYShzY2hlbWEpO1xuICAgICAgICBjb25zdCB7IHR5cGUgPSAnbnVsbCcgfSA9IHJlbWFpbmluZztcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHR5cGUpICYmXG4gICAgICAgICAgICBQUklNSVRJVkVfVFlQRVMuaW5jbHVkZXModHlwZSkgJiZcbiAgICAgICAgICAgIChleHBlcmltZW50YWxfZGZzYl90b19jb21wdXRlID09PSBudWxsIHx8IGV4cGVyaW1lbnRhbF9kZnNiX3RvX2NvbXB1dGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGVyaW1lbnRhbF9kZnNiX3RvX2NvbXB1dGUuY29uc3RBc0RlZmF1bHRzKSA9PT0gJ3NraXBPbmVPZicpIHtcbiAgICAgICAgICAgIC8vIElmIHdlIGFyZSBpbiBhIG9uZU9mIG9mIGEgcHJpbWl0aXZlIHR5cGUsIHRoZW4gd2Ugd2FudCB0byBwYXNzIGNvbnN0QXNEZWZhdWx0cyBhcyAnbmV2ZXInIGZvciB0aGUgcmVjdXJzaW9uXG4gICAgICAgICAgICBleHBlcmltZW50YWxfZGZzYl90b19jb21wdXRlID0geyAuLi5leHBlcmltZW50YWxfZGZzYl90b19jb21wdXRlLCBjb25zdEFzRGVmYXVsdHM6ICduZXZlcicgfTtcbiAgICAgICAgfVxuICAgICAgICBzY2hlbWFUb0NvbXB1dGUgPSBvbmVPZltnZXRDbG9zZXN0TWF0Y2hpbmdPcHRpb24odmFsaWRhdG9yLCByb290U2NoZW1hLCBpc0VtcHR5KGZvcm1EYXRhKSA/IHVuZGVmaW5lZCA6IGZvcm1EYXRhLCBvbmVPZiwgMCwgZGlzY3JpbWluYXRvciwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpXTtcbiAgICAgICAgc2NoZW1hVG9Db21wdXRlID0gbWVyZ2VTY2hlbWFzKHJlbWFpbmluZywgc2NoZW1hVG9Db21wdXRlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoQU5ZX09GX0tFWSBpbiBzY2hlbWEpIHtcbiAgICAgICAgY29uc3QgeyBhbnlPZiwgLi4ucmVtYWluaW5nIH0gPSBzY2hlbWE7XG4gICAgICAgIGlmIChhbnlPZi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlzY3JpbWluYXRvciA9IGdldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEoc2NoZW1hKTtcbiAgICAgICAgc2NoZW1hVG9Db21wdXRlID0gYW55T2ZbZ2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uKHZhbGlkYXRvciwgcm9vdFNjaGVtYSwgaXNFbXB0eShmb3JtRGF0YSkgPyB1bmRlZmluZWQgOiBmb3JtRGF0YSwgYW55T2YsIDAsIGRpc2NyaW1pbmF0b3IsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKV07XG4gICAgICAgIHNjaGVtYVRvQ29tcHV0ZSA9IG1lcmdlU2NoZW1hcyhyZW1haW5pbmcsIHNjaGVtYVRvQ29tcHV0ZSk7XG4gICAgfVxuICAgIGlmIChzY2hlbWFUb0NvbXB1dGUpIHtcbiAgICAgICAgcmV0dXJuIGNvbXB1dGVEZWZhdWx0cyh2YWxpZGF0b3IsIHNjaGVtYVRvQ29tcHV0ZSwge1xuICAgICAgICAgICAgcm9vdFNjaGVtYSxcbiAgICAgICAgICAgIGluY2x1ZGVVbmRlZmluZWRWYWx1ZXMsXG4gICAgICAgICAgICBfcmVjdXJzZUxpc3Q6IHVwZGF0ZWRSZWN1cnNlTGlzdCxcbiAgICAgICAgICAgIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3I6IGV4cGVyaW1lbnRhbF9kZnNiX3RvX2NvbXB1dGUsXG4gICAgICAgICAgICBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZixcbiAgICAgICAgICAgIHBhcmVudERlZmF1bHRzOiBkZWZhdWx0cyxcbiAgICAgICAgICAgIHJhd0Zvcm1EYXRhOiBmb3JtRGF0YSxcbiAgICAgICAgICAgIHJlcXVpcmVkLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gTm8gZGVmYXVsdHMgZGVmaW5lZCBmb3IgdGhpcyBub2RlLCBmYWxsYmFjayB0byBnZW5lcmljIHR5cGVkIG9uZXMuXG4gICAgaWYgKGRlZmF1bHRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGVmYXVsdHMgPSBzY2hlbWEuZGVmYXVsdDtcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdEJhc2VkT25TY2hlbWFUeXBlID0gZ2V0RGVmYXVsdEJhc2VkT25TY2hlbWFUeXBlKHZhbGlkYXRvciwgc2NoZW1hLCBjb21wdXRlRGVmYXVsdHNQcm9wcywgZGVmYXVsdHMpO1xuICAgIHJldHVybiBkZWZhdWx0QmFzZWRPblNjaGVtYVR5cGUgIT09IG51bGwgJiYgZGVmYXVsdEJhc2VkT25TY2hlbWFUeXBlICE9PSB2b2lkIDAgPyBkZWZhdWx0QmFzZWRPblNjaGVtYVR5cGUgOiBkZWZhdWx0cztcbn1cbi8qKiBDb21wdXRlcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3Igb2JqZWN0cy5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSByYXdTY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCB0aGUgZGVmYXVsdCBzdGF0ZSBpcyBkZXNpcmVkXG4gKiBAcGFyYW0ge0NvbXB1dGVEZWZhdWx0c1Byb3BzfSBjb21wdXRlRGVmYXVsdHNQcm9wcyAtIE9wdGlvbmFsIHByb3BzIGZvciB0aGlzIGZ1bmN0aW9uXG4gKiBAcGFyYW0gZGVmYXVsdHMgLSBPcHRpb25hbCBwcm9wcyBmb3IgdGhpcyBmdW5jdGlvblxuICogQHJldHVybnMgLSBUaGUgZGVmYXVsdCB2YWx1ZSBiYXNlZCBvbiB0aGUgc2NoZW1hIHR5cGUgaWYgdGhleSBhcmUgZGVmaW5lZCBmb3Igb2JqZWN0IG9yIGFycmF5IHNjaGVtYXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3REZWZhdWx0cyh2YWxpZGF0b3IsIHJhd1NjaGVtYSwgeyByYXdGb3JtRGF0YSwgcm9vdFNjaGVtYSA9IHt9LCBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzID0gZmFsc2UsIF9yZWN1cnNlTGlzdCA9IFtdLCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID0gdW5kZWZpbmVkLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZiA9IHVuZGVmaW5lZCwgcmVxdWlyZWQsIH0gPSB7fSwgZGVmYXVsdHMpIHtcbiAgICB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gKGlzT2JqZWN0KHJhd0Zvcm1EYXRhKSA/IHJhd0Zvcm1EYXRhIDoge30pO1xuICAgICAgICBjb25zdCBzY2hlbWEgPSByYXdTY2hlbWE7XG4gICAgICAgIC8vIFRoaXMgaXMgYSBjdXN0b20gYWRkaXRpb24gdGhhdCBmaXhlcyB0aGlzIGlzc3VlOlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcmpzZi10ZWFtL3JlYWN0LWpzb25zY2hlbWEtZm9ybS9pc3N1ZXMvMzgzMlxuICAgICAgICBjb25zdCByZXRyaWV2ZWRTY2hlbWEgPSAoZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9PT0gbnVsbCB8fCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLmFsbE9mKSA9PT0gJ3BvcHVsYXRlRGVmYXVsdHMnICYmIEFMTF9PRl9LRVkgaW4gc2NoZW1hXG4gICAgICAgICAgICA/IHJldHJpZXZlU2NoZW1hKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBmb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpXG4gICAgICAgICAgICA6IHNjaGVtYTtcbiAgICAgICAgY29uc3QgcGFyZW50Q29uc3QgPSByZXRyaWV2ZWRTY2hlbWFbQ09OU1RfS0VZXTtcbiAgICAgICAgY29uc3Qgb2JqZWN0RGVmYXVsdHMgPSBPYmplY3Qua2V5cyhyZXRyaWV2ZWRTY2hlbWEucHJvcGVydGllcyB8fCB7fSkucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgY29uc3QgcHJvcGVydHlTY2hlbWEgPSBnZXQocmV0cmlldmVkU2NoZW1hLCBbUFJPUEVSVElFU19LRVksIGtleV0pO1xuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHBhcmVudCBzY2hlbWEgaGFzIGEgY29uc3QgcHJvcGVydHkgZGVmaW5lZCBBTkQgd2UgYXJlIHN1cHBvcnRpbmcgY29uc3QgYXMgZGVmYXVsdHMsIHRoZW4gd2VcbiAgICAgICAgICAgIC8vIHNob3VsZCBhbHdheXMgcmV0dXJuIHRoZSBjb21wdXRlZERlZmF1bHQgc2luY2UgaXQncyBjb21pbmcgZnJvbSB0aGUgY29uc3QuXG4gICAgICAgICAgICBjb25zdCBoYXNQYXJlbnRDb25zdCA9IGlzT2JqZWN0KHBhcmVudENvbnN0KSAmJiBwYXJlbnRDb25zdFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb25zdCBoYXNDb25zdCA9ICgoaXNPYmplY3QocHJvcGVydHlTY2hlbWEpICYmIENPTlNUX0tFWSBpbiBwcm9wZXJ0eVNjaGVtYSkgfHwgaGFzUGFyZW50Q29uc3QpICYmXG4gICAgICAgICAgICAgICAgKGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPT09IG51bGwgfHwgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvci5jb25zdEFzRGVmYXVsdHMpICE9PSAnbmV2ZXInO1xuICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgZGVmYXVsdHMgZm9yIHRoaXMgbm9kZSwgd2l0aCB0aGUgcGFyZW50IGRlZmF1bHRzIHdlIG1pZ2h0XG4gICAgICAgICAgICAvLyBoYXZlIGZyb20gYSBwcmV2aW91cyBydW46IGRlZmF1bHRzW2tleV0uXG4gICAgICAgICAgICBjb25zdCBjb21wdXRlZERlZmF1bHQgPSBjb21wdXRlRGVmYXVsdHModmFsaWRhdG9yLCBwcm9wZXJ0eVNjaGVtYSwge1xuICAgICAgICAgICAgICAgIHJvb3RTY2hlbWEsXG4gICAgICAgICAgICAgICAgX3JlY3Vyc2VMaXN0LFxuICAgICAgICAgICAgICAgIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsXG4gICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YsXG4gICAgICAgICAgICAgICAgaW5jbHVkZVVuZGVmaW5lZFZhbHVlczogaW5jbHVkZVVuZGVmaW5lZFZhbHVlcyA9PT0gdHJ1ZSxcbiAgICAgICAgICAgICAgICBwYXJlbnREZWZhdWx0czogZ2V0KGRlZmF1bHRzLCBba2V5XSksXG4gICAgICAgICAgICAgICAgcmF3Rm9ybURhdGE6IGdldChmb3JtRGF0YSwgW2tleV0pLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoX2EgPSByZXRyaWV2ZWRTY2hlbWEucmVxdWlyZWQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5pbmNsdWRlcyhrZXkpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBtYXliZUFkZERlZmF1bHRUb09iamVjdChhY2MsIGtleSwgY29tcHV0ZWREZWZhdWx0LCBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzLCByZXF1aXJlZCwgcmV0cmlldmVkU2NoZW1hLnJlcXVpcmVkLCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLCBoYXNDb25zdCk7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSk7XG4gICAgICAgIGlmIChyZXRyaWV2ZWRTY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIC8vIGFzIHBlciBzcGVjIGFkZGl0aW9uYWxQcm9wZXJ0aWVzIG1heSBiZSBlaXRoZXIgc2NoZW1hIG9yIGJvb2xlYW5cbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxQcm9wZXJ0aWVzU2NoZW1hID0gaXNPYmplY3QocmV0cmlldmVkU2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzKVxuICAgICAgICAgICAgICAgID8gcmV0cmlldmVkU2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzXG4gICAgICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBuZXcgU2V0KCk7XG4gICAgICAgICAgICBpZiAoaXNPYmplY3QoZGVmYXVsdHMpKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZGVmYXVsdHMpXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGtleSkgPT4gIXJldHJpZXZlZFNjaGVtYS5wcm9wZXJ0aWVzIHx8ICFyZXRyaWV2ZWRTY2hlbWEucHJvcGVydGllc1trZXldKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoa2V5KSA9PiBrZXlzLmFkZChrZXkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhUmVxdWlyZWQgPSBbXTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGZvcm1EYXRhKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGtleSkgPT4gIXJldHJpZXZlZFNjaGVtYS5wcm9wZXJ0aWVzIHx8ICFyZXRyaWV2ZWRTY2hlbWEucHJvcGVydGllc1trZXldKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBrZXlzLmFkZChrZXkpO1xuICAgICAgICAgICAgICAgIGZvcm1EYXRhUmVxdWlyZWQucHVzaChrZXkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBrZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wdXRlZERlZmF1bHQgPSBjb21wdXRlRGVmYXVsdHModmFsaWRhdG9yLCBhZGRpdGlvbmFsUHJvcGVydGllc1NjaGVtYSwge1xuICAgICAgICAgICAgICAgICAgICByb290U2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBfcmVjdXJzZUxpc3QsXG4gICAgICAgICAgICAgICAgICAgIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsXG4gICAgICAgICAgICAgICAgICAgIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mLFxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzOiBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzID09PSB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnREZWZhdWx0czogZ2V0KGRlZmF1bHRzLCBba2V5XSksXG4gICAgICAgICAgICAgICAgICAgIHJhd0Zvcm1EYXRhOiBnZXQoZm9ybURhdGEsIFtrZXldKSxcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IChfYSA9IHJldHJpZXZlZFNjaGVtYS5yZXF1aXJlZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmluY2x1ZGVzKGtleSksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gU2luY2UgdGhlc2UgYXJlIGFkZGl0aW9uYWwgcHJvcGVydGllcyB3ZSBkb24ndCBuZWVkIHRvIGFkZCB0aGUgYGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3JgIHByb3BcbiAgICAgICAgICAgICAgICBtYXliZUFkZERlZmF1bHRUb09iamVjdChvYmplY3REZWZhdWx0cywga2V5LCBjb21wdXRlZERlZmF1bHQsIGluY2x1ZGVVbmRlZmluZWRWYWx1ZXMsIHJlcXVpcmVkLCBmb3JtRGF0YVJlcXVpcmVkKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmplY3REZWZhdWx0cztcbiAgICB9XG59XG4vKiogQ29tcHV0ZXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIGFycmF5cy5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSByYXdTY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCB0aGUgZGVmYXVsdCBzdGF0ZSBpcyBkZXNpcmVkXG4gKiBAcGFyYW0ge0NvbXB1dGVEZWZhdWx0c1Byb3BzfSBjb21wdXRlRGVmYXVsdHNQcm9wcyAtIE9wdGlvbmFsIHByb3BzIGZvciB0aGlzIGZ1bmN0aW9uXG4gKiBAcGFyYW0gZGVmYXVsdHMgLSBPcHRpb25hbCBwcm9wcyBmb3IgdGhpcyBmdW5jdGlvblxuICogQHJldHVybnMgLSBUaGUgZGVmYXVsdCB2YWx1ZSBiYXNlZCBvbiB0aGUgc2NoZW1hIHR5cGUgaWYgdGhleSBhcmUgZGVmaW5lZCBmb3Igb2JqZWN0IG9yIGFycmF5IHNjaGVtYXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBcnJheURlZmF1bHRzKHZhbGlkYXRvciwgcmF3U2NoZW1hLCB7IHJhd0Zvcm1EYXRhLCByb290U2NoZW1hID0ge30sIF9yZWN1cnNlTGlzdCA9IFtdLCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID0gdW5kZWZpbmVkLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZiA9IHVuZGVmaW5lZCwgcmVxdWlyZWQsIH0gPSB7fSwgZGVmYXVsdHMpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IHNjaGVtYSA9IHJhd1NjaGVtYTtcbiAgICBjb25zdCBhcnJheU1pbkl0ZW1zU3RhdGVCZWhhdmlvciA9IChfYSA9IGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPT09IG51bGwgfHwgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvci5hcnJheU1pbkl0ZW1zKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB7fTtcbiAgICBjb25zdCB7IHBvcHVsYXRlOiBhcnJheU1pbkl0ZW1zUG9wdWxhdGUsIG1lcmdlRXh0cmFEZWZhdWx0czogYXJyYXlNZXJnZUV4dHJhRGVmYXVsdHMgfSA9IGFycmF5TWluSXRlbXNTdGF0ZUJlaGF2aW9yO1xuICAgIGNvbnN0IG5ldmVyUG9wdWxhdGUgPSBhcnJheU1pbkl0ZW1zUG9wdWxhdGUgPT09ICduZXZlcic7XG4gICAgY29uc3QgaWdub3JlTWluSXRlbXNGbGFnU2V0ID0gYXJyYXlNaW5JdGVtc1BvcHVsYXRlID09PSAncmVxdWlyZWRPbmx5JztcbiAgICBjb25zdCBpc1BvcHVsYXRlQWxsID0gYXJyYXlNaW5JdGVtc1BvcHVsYXRlID09PSAnYWxsJyB8fCAoIW5ldmVyUG9wdWxhdGUgJiYgIWlnbm9yZU1pbkl0ZW1zRmxhZ1NldCk7XG4gICAgY29uc3QgY29tcHV0ZVNraXBQb3B1bGF0ZSA9IChfYiA9IGFycmF5TWluSXRlbXNTdGF0ZUJlaGF2aW9yID09PSBudWxsIHx8IGFycmF5TWluSXRlbXNTdGF0ZUJlaGF2aW9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhcnJheU1pbkl0ZW1zU3RhdGVCZWhhdmlvci5jb21wdXRlU2tpcFBvcHVsYXRlKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAoKCkgPT4gZmFsc2UpO1xuICAgIGNvbnN0IGlzU2tpcEVtcHR5RGVmYXVsdHMgPSAoZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9PT0gbnVsbCB8fCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLmVtcHR5T2JqZWN0RmllbGRzKSA9PT0gJ3NraXBFbXB0eURlZmF1bHRzJztcbiAgICBjb25zdCBlbXB0eURlZmF1bHQgPSBpc1NraXBFbXB0eURlZmF1bHRzID8gdW5kZWZpbmVkIDogW107XG4gICAgLy8gSW5qZWN0IGRlZmF1bHRzIGludG8gZXhpc3RpbmcgYXJyYXkgZGVmYXVsdHNcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkZWZhdWx0cykpIHtcbiAgICAgICAgZGVmYXVsdHMgPSBkZWZhdWx0cy5tYXAoKGl0ZW0sIGlkeCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2NoZW1hSXRlbSA9IGdldElubmVyU2NoZW1hRm9yQXJyYXlJdGVtKHNjaGVtYSwgQWRkaXRpb25hbEl0ZW1zSGFuZGxpbmcuRmFsbGJhY2ssIGlkeCk7XG4gICAgICAgICAgICByZXR1cm4gY29tcHV0ZURlZmF1bHRzKHZhbGlkYXRvciwgc2NoZW1hSXRlbSwge1xuICAgICAgICAgICAgICAgIHJvb3RTY2hlbWEsXG4gICAgICAgICAgICAgICAgX3JlY3Vyc2VMaXN0LFxuICAgICAgICAgICAgICAgIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsXG4gICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YsXG4gICAgICAgICAgICAgICAgcGFyZW50RGVmYXVsdHM6IGl0ZW0sXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIERlZXBseSBpbmplY3QgZGVmYXVsdHMgaW50byBhbHJlYWR5IGV4aXN0aW5nIGZvcm0gZGF0YVxuICAgIGlmIChBcnJheS5pc0FycmF5KHJhd0Zvcm1EYXRhKSkge1xuICAgICAgICBjb25zdCBzY2hlbWFJdGVtID0gZ2V0SW5uZXJTY2hlbWFGb3JBcnJheUl0ZW0oc2NoZW1hKTtcbiAgICAgICAgaWYgKG5ldmVyUG9wdWxhdGUpIHtcbiAgICAgICAgICAgIGRlZmF1bHRzID0gcmF3Rm9ybURhdGE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtRGVmYXVsdHMgPSByYXdGb3JtRGF0YS5tYXAoKGl0ZW0sIGlkeCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb21wdXRlRGVmYXVsdHModmFsaWRhdG9yLCBzY2hlbWFJdGVtLCB7XG4gICAgICAgICAgICAgICAgICAgIHJvb3RTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIF9yZWN1cnNlTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcixcbiAgICAgICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YsXG4gICAgICAgICAgICAgICAgICAgIHJhd0Zvcm1EYXRhOiBpdGVtLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnREZWZhdWx0czogZ2V0KGRlZmF1bHRzLCBbaWR4XSksXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBJZiB0aGUgcG9wdWxhdGUgJ3JlcXVpcmVkT25seScgZmxhZyBpcyBzZXQgdGhlbiB3ZSBvbmx5IG1lcmdlIGFuZCBpbmNsdWRlIGV4dHJhIGRlZmF1bHRzIGlmIHRoZXkgYXJlIHJlcXVpcmVkLlxuICAgICAgICAgICAgLy8gT3IgaWYgcG9wdWxhdGUgJ2FsbCcgaXMgc2V0IHdlIG1lcmdlIGFuZCBpbmNsdWRlIGV4dHJhIGRlZmF1bHRzLlxuICAgICAgICAgICAgY29uc3QgbWVyZ2VFeHRyYURlZmF1bHRzID0gKChpZ25vcmVNaW5JdGVtc0ZsYWdTZXQgJiYgcmVxdWlyZWQpIHx8IGlzUG9wdWxhdGVBbGwpICYmIGFycmF5TWVyZ2VFeHRyYURlZmF1bHRzO1xuICAgICAgICAgICAgZGVmYXVsdHMgPSBtZXJnZURlZmF1bHRzV2l0aEZvcm1EYXRhKGRlZmF1bHRzLCBpdGVtRGVmYXVsdHMsIG1lcmdlRXh0cmFEZWZhdWx0cyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQ2hlY2sgaWYgdGhlIHNjaGVtYSBoYXMgYSBjb25zdCBwcm9wZXJ0eSBkZWZpbmVkIEFORCB3ZSBhcmUgc3VwcG9ydGluZyBjb25zdCBhcyBkZWZhdWx0cywgdGhlbiB3ZSBzaG91bGQgYWx3YXlzXG4gICAgLy8gcmV0dXJuIHRoZSBjb21wdXRlZERlZmF1bHQgc2luY2UgaXQncyBjb21pbmcgZnJvbSB0aGUgY29uc3QuXG4gICAgY29uc3QgaGFzQ29uc3QgPSBpc09iamVjdChzY2hlbWEpICYmIENPTlNUX0tFWSBpbiBzY2hlbWEgJiYgKGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPT09IG51bGwgfHwgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvci5jb25zdEFzRGVmYXVsdHMpICE9PSAnbmV2ZXInO1xuICAgIGlmIChoYXNDb25zdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKG5ldmVyUG9wdWxhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0cyAhPT0gbnVsbCAmJiBkZWZhdWx0cyAhPT0gdm9pZCAwID8gZGVmYXVsdHMgOiBlbXB0eURlZmF1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlnbm9yZU1pbkl0ZW1zRmxhZ1NldCAmJiAhcmVxdWlyZWQpIHtcbiAgICAgICAgICAgIC8vIElmIG5vIGZvcm0gZGF0YSBleGlzdHMgb3IgZGVmYXVsdHMgYXJlIHNldCBsZWF2ZSB0aGUgZmllbGQgZW1wdHkvbm9uLWV4aXN0ZW50LCBvdGhlcndpc2VcbiAgICAgICAgICAgIC8vIHJldHVybiBmb3JtIGRhdGEvZGVmYXVsdHNcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0cyA/IGRlZmF1bHRzIDogdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGRlZmF1bHRzTGVuZ3RoID0gQXJyYXkuaXNBcnJheShkZWZhdWx0cykgPyBkZWZhdWx0cy5sZW5ndGggOiAwO1xuICAgIGlmICghc2NoZW1hLm1pbkl0ZW1zIHx8XG4gICAgICAgIGlzTXVsdGlTZWxlY3QodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB8fFxuICAgICAgICBjb21wdXRlU2tpcFBvcHVsYXRlKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hKSB8fFxuICAgICAgICBzY2hlbWEubWluSXRlbXMgPD0gZGVmYXVsdHNMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRzID8gZGVmYXVsdHMgOiBlbXB0eURlZmF1bHQ7XG4gICAgfVxuICAgIGNvbnN0IGRlZmF1bHRFbnRyaWVzID0gKGRlZmF1bHRzIHx8IFtdKTtcbiAgICBjb25zdCBmaWxsZXJTY2hlbWEgPSBnZXRJbm5lclNjaGVtYUZvckFycmF5SXRlbShzY2hlbWEsIEFkZGl0aW9uYWxJdGVtc0hhbmRsaW5nLkludmVydCk7XG4gICAgY29uc3QgZmlsbGVyRGVmYXVsdCA9IGZpbGxlclNjaGVtYS5kZWZhdWx0O1xuICAgIC8vIENhbGN1bGF0ZSBmaWxsZXIgZW50cmllcyBmb3IgcmVtYWluaW5nIGl0ZW1zIChtaW5JdGVtcyAtIGV4aXN0aW5nIHJhdyBkYXRhL2RlZmF1bHRzKVxuICAgIGNvbnN0IGZpbGxlckVudHJpZXMgPSBuZXcgQXJyYXkoc2NoZW1hLm1pbkl0ZW1zIC0gZGVmYXVsdHNMZW5ndGgpLmZpbGwoY29tcHV0ZURlZmF1bHRzKHZhbGlkYXRvciwgZmlsbGVyU2NoZW1hLCB7XG4gICAgICAgIHBhcmVudERlZmF1bHRzOiBmaWxsZXJEZWZhdWx0LFxuICAgICAgICByb290U2NoZW1hLFxuICAgICAgICBfcmVjdXJzZUxpc3QsXG4gICAgICAgIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsXG4gICAgICAgIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mLFxuICAgICAgICByZXF1aXJlZCxcbiAgICB9KSk7XG4gICAgLy8gdGhlbiBmaWxsIHVwIHRoZSByZXN0IHdpdGggZWl0aGVyIHRoZSBpdGVtIGRlZmF1bHQgb3IgZW1wdHksIHVwIHRvIG1pbkl0ZW1zXG4gICAgcmV0dXJuIGRlZmF1bHRFbnRyaWVzLmNvbmNhdChmaWxsZXJFbnRyaWVzKTtcbn1cbi8qKiBDb21wdXRlcyB0aGUgZGVmYXVsdCB2YWx1ZSBiYXNlZCBvbiB0aGUgc2NoZW1hIHR5cGUuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gcmF3U2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIGRlZmF1bHQgc3RhdGUgaXMgZGVzaXJlZFxuICogQHBhcmFtIHtDb21wdXRlRGVmYXVsdHNQcm9wc30gY29tcHV0ZURlZmF1bHRzUHJvcHMgLSBPcHRpb25hbCBwcm9wcyBmb3IgdGhpcyBmdW5jdGlvblxuICogQHBhcmFtIGRlZmF1bHRzIC0gT3B0aW9uYWwgcHJvcHMgZm9yIHRoaXMgZnVuY3Rpb25cbiAqIEByZXR1cm5zIC0gVGhlIGRlZmF1bHQgdmFsdWUgYmFzZWQgb24gdGhlIHNjaGVtYSB0eXBlIGlmIHRoZXkgYXJlIGRlZmluZWQgZm9yIG9iamVjdCBvciBhcnJheSBzY2hlbWFzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdEJhc2VkT25TY2hlbWFUeXBlKHZhbGlkYXRvciwgcmF3U2NoZW1hLCBjb21wdXRlRGVmYXVsdHNQcm9wcyA9IHt9LCBkZWZhdWx0cykge1xuICAgIHN3aXRjaCAoZ2V0U2NoZW1hVHlwZShyYXdTY2hlbWEpKSB7XG4gICAgICAgIC8vIFdlIG5lZWQgdG8gcmVjdXJzZSBmb3Igb2JqZWN0IHNjaGVtYSBpbm5lciBkZWZhdWx0IHZhbHVlcy5cbiAgICAgICAgY2FzZSAnb2JqZWN0Jzoge1xuICAgICAgICAgICAgcmV0dXJuIGdldE9iamVjdERlZmF1bHRzKHZhbGlkYXRvciwgcmF3U2NoZW1hLCBjb21wdXRlRGVmYXVsdHNQcm9wcywgZGVmYXVsdHMpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2FycmF5Jzoge1xuICAgICAgICAgICAgcmV0dXJuIGdldEFycmF5RGVmYXVsdHModmFsaWRhdG9yLCByYXdTY2hlbWEsIGNvbXB1dGVEZWZhdWx0c1Byb3BzLCBkZWZhdWx0cyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vKiogUmV0dXJucyB0aGUgc3VwZXJzZXQgb2YgYGZvcm1EYXRhYCB0aGF0IGluY2x1ZGVzIHRoZSBnaXZlbiBzZXQgdXBkYXRlZCB0byBpbmNsdWRlIGFueSBtaXNzaW5nIGZpZWxkcyB0aGF0IGhhdmVcbiAqIGNvbXB1dGVkIHRvIGhhdmUgZGVmYXVsdHMgcHJvdmlkZWQgaW4gdGhlIGBzY2hlbWFgLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHRoZVNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBkZWZhdWx0IHN0YXRlIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgb250byB3aGljaCB0byBwcm92aWRlIGFueSBtaXNzaW5nIGRlZmF1bHRzXG4gKiBAcGFyYW0gW3Jvb3RTY2hlbWFdIC0gVGhlIHJvb3Qgc2NoZW1hLCB1c2VkIHRvIHByaW1hcmlseSB0byBsb29rIHVwIGAkcmVmYHNcbiAqIEBwYXJhbSBbaW5jbHVkZVVuZGVmaW5lZFZhbHVlcz1mYWxzZV0gLSBPcHRpb25hbCBmbGFnLCBpZiB0cnVlLCBjYXVzZSB1bmRlZmluZWQgdmFsdWVzIHRvIGJlIGFkZGVkIGFzIGRlZmF1bHRzLlxuICogICAgICAgICAgSWYgXCJleGNsdWRlT2JqZWN0Q2hpbGRyZW5cIiwgY2F1c2UgdW5kZWZpbmVkIHZhbHVlcyBmb3IgdGhpcyBvYmplY3QgYW5kIHBhc3MgYGluY2x1ZGVVbmRlZmluZWRWYWx1ZXNgIGFzXG4gKiAgICAgICAgICBmYWxzZSB3aGVuIGNvbXB1dGluZyBkZWZhdWx0cyBmb3IgYW55IG5lc3RlZCBvYmplY3QgcHJvcGVydGllcy5cbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcl0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmplY3QsIGlmIHByb3ZpZGVkLCBhbGxvd3MgdXNlcnMgdG8gb3ZlcnJpZGUgZGVmYXVsdCBmb3JtIHN0YXRlIGJlaGF2aW9yXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gVGhlIHJlc3VsdGluZyBgZm9ybURhdGFgIHdpdGggYWxsIHRoZSBkZWZhdWx0cyBwcm92aWRlZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREZWZhdWx0Rm9ybVN0YXRlKHZhbGlkYXRvciwgdGhlU2NoZW1hLCBmb3JtRGF0YSwgcm9vdFNjaGVtYSwgaW5jbHVkZVVuZGVmaW5lZFZhbHVlcyA9IGZhbHNlLCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIGlmICghaXNPYmplY3QodGhlU2NoZW1hKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc2NoZW1hOiAnICsgdGhlU2NoZW1hKTtcbiAgICB9XG4gICAgY29uc3Qgc2NoZW1hID0gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCB0aGVTY2hlbWEsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgY29uc3QgZGVmYXVsdHMgPSBjb21wdXRlRGVmYXVsdHModmFsaWRhdG9yLCBzY2hlbWEsIHtcbiAgICAgICAgcm9vdFNjaGVtYSxcbiAgICAgICAgaW5jbHVkZVVuZGVmaW5lZFZhbHVlcyxcbiAgICAgICAgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcixcbiAgICAgICAgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YsXG4gICAgICAgIHJhd0Zvcm1EYXRhOiBmb3JtRGF0YSxcbiAgICB9KTtcbiAgICBpZiAoZm9ybURhdGEgPT09IHVuZGVmaW5lZCB8fCBmb3JtRGF0YSA9PT0gbnVsbCB8fCAodHlwZW9mIGZvcm1EYXRhID09PSAnbnVtYmVyJyAmJiBpc05hTihmb3JtRGF0YSkpKSB7XG4gICAgICAgIC8vIE5vIGZvcm0gZGF0YT8gVXNlIHNjaGVtYSBkZWZhdWx0cy5cbiAgICAgICAgcmV0dXJuIGRlZmF1bHRzO1xuICAgIH1cbiAgICBjb25zdCB7IG1lcmdlRGVmYXVsdHNJbnRvRm9ybURhdGEsIGFycmF5TWluSXRlbXMgPSB7fSB9ID0gZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciB8fCB7fTtcbiAgICBjb25zdCB7IG1lcmdlRXh0cmFEZWZhdWx0cyB9ID0gYXJyYXlNaW5JdGVtcztcbiAgICBjb25zdCBkZWZhdWx0U3VwZXJjZWRlc1VuZGVmaW5lZCA9IG1lcmdlRGVmYXVsdHNJbnRvRm9ybURhdGEgPT09ICd1c2VEZWZhdWx0SWZGb3JtRGF0YVVuZGVmaW5lZCc7XG4gICAgaWYgKGlzT2JqZWN0KGZvcm1EYXRhKSkge1xuICAgICAgICByZXR1cm4gbWVyZ2VEZWZhdWx0c1dpdGhGb3JtRGF0YShkZWZhdWx0cywgZm9ybURhdGEsIG1lcmdlRXh0cmFEZWZhdWx0cywgZGVmYXVsdFN1cGVyY2VkZXNVbmRlZmluZWQpO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShmb3JtRGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIG1lcmdlRGVmYXVsdHNXaXRoRm9ybURhdGEoZGVmYXVsdHMsIGZvcm1EYXRhLCBtZXJnZUV4dHJhRGVmYXVsdHMsIGRlZmF1bHRTdXBlcmNlZGVzVW5kZWZpbmVkKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcm1EYXRhO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0RGVmYXVsdEZvcm1TdGF0ZS5qcy5tYXAiLCJpbXBvcnQgZ2V0VWlPcHRpb25zIGZyb20gJy4vZ2V0VWlPcHRpb25zJztcbi8qKiBDaGVja3MgdG8gc2VlIGlmIHRoZSBgdWlTY2hlbWFgIGNvbnRhaW5zIHRoZSBgd2lkZ2V0YCBmaWVsZCBhbmQgdGhhdCB0aGUgd2lkZ2V0IGlzIG5vdCBgaGlkZGVuYFxuICpcbiAqIEBwYXJhbSB1aVNjaGVtYSAtIFRoZSBVSSBTY2hlbWEgZnJvbSB3aGljaCB0byBkZXRlY3QgaWYgaXQgaXMgY3VzdG9taXplZFxuICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBgdWlTY2hlbWFgIGRlc2NyaWJlcyBhIGN1c3RvbSB3aWRnZXQsIGZhbHNlIG90aGVyd2lzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0N1c3RvbVdpZGdldCh1aVNjaGVtYSA9IHt9KSB7XG4gICAgcmV0dXJuIChcbiAgICAvLyBUT0RPOiBSZW1vdmUgdGhlIGAmJiB1aVNjaGVtYVsndWk6d2lkZ2V0J10gIT09ICdoaWRkZW4nYCBvbmNlIHdlIHN1cHBvcnQgaGlkZGVuIHdpZGdldHMgZm9yIGFycmF5cy5cbiAgICAvLyBodHRwczovL3Jqc2YtdGVhbS5naXRodWIuaW8vcmVhY3QtanNvbnNjaGVtYS1mb3JtL2RvY3MvdXNhZ2Uvd2lkZ2V0cy8jaGlkZGVuLXdpZGdldHNcbiAgICAnd2lkZ2V0JyBpbiBnZXRVaU9wdGlvbnModWlTY2hlbWEpICYmIGdldFVpT3B0aW9ucyh1aVNjaGVtYSlbJ3dpZGdldCddICE9PSAnaGlkZGVuJyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pc0N1c3RvbVdpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBVSV9XSURHRVRfS0VZIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCByZXRyaWV2ZVNjaGVtYSBmcm9tICcuL3JldHJpZXZlU2NoZW1hJztcbi8qKiBDaGVja3MgdG8gc2VlIGlmIHRoZSBgc2NoZW1hYCBhbmQgYHVpU2NoZW1hYCBjb21iaW5hdGlvbiByZXByZXNlbnRzIGFuIGFycmF5IG9mIGZpbGVzXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggY2hlY2sgZm9yIGFycmF5IG9mIGZpbGVzIGZsYWcgaXMgZGVzaXJlZFxuICogQHBhcmFtIFt1aVNjaGVtYT17fV0gLSBUaGUgVUkgc2NoZW1hIGZyb20gd2hpY2ggdG8gY2hlY2sgdGhlIHdpZGdldFxuICogQHBhcmFtIFtyb290U2NoZW1hXSAtIFRoZSByb290IHNjaGVtYSwgdXNlZCB0byBwcmltYXJpbHkgdG8gbG9vayB1cCBgJHJlZmBzXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gVHJ1ZSBpZiBzY2hlbWEvdWlTY2hlbWEgY29udGFpbnMgYW4gYXJyYXkgb2YgZmlsZXMsIG90aGVyd2lzZSBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0ZpbGVzQXJyYXkodmFsaWRhdG9yLCBzY2hlbWEsIHVpU2NoZW1hID0ge30sIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgaWYgKHVpU2NoZW1hW1VJX1dJREdFVF9LRVldID09PSAnZmlsZXMnKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoc2NoZW1hLml0ZW1zKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zU2NoZW1hID0gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEuaXRlbXMsIHJvb3RTY2hlbWEsIHVuZGVmaW5lZCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICByZXR1cm4gaXRlbXNTY2hlbWEudHlwZSA9PT0gJ3N0cmluZycgJiYgaXRlbXNTY2hlbWEuZm9ybWF0ID09PSAnZGF0YS11cmwnO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pc0ZpbGVzQXJyYXkuanMubWFwIiwiaW1wb3J0IHsgVUlfRklFTERfS0VZLCBVSV9XSURHRVRfS0VZIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBnZXRTY2hlbWFUeXBlIGZyb20gJy4uL2dldFNjaGVtYVR5cGUnO1xuaW1wb3J0IGdldFVpT3B0aW9ucyBmcm9tICcuLi9nZXRVaU9wdGlvbnMnO1xuaW1wb3J0IGlzQ3VzdG9tV2lkZ2V0IGZyb20gJy4uL2lzQ3VzdG9tV2lkZ2V0JztcbmltcG9ydCBpc0ZpbGVzQXJyYXkgZnJvbSAnLi9pc0ZpbGVzQXJyYXknO1xuaW1wb3J0IGlzTXVsdGlTZWxlY3QgZnJvbSAnLi9pc011bHRpU2VsZWN0Jztcbi8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGNvbWJpbmF0aW9uIG9mIGBzY2hlbWFgIGFuZCBgdWlTY2hlbWFgIHByb3BlcnRpZXMgaW5kaWNhdGVzIHRoYXQgdGhlIGxhYmVsIGZvciB0aGUgYHNjaGVtYWBcbiAqIHNob3VsZCBiZSBkaXNwbGF5ZWQgaW4gYSBVSS5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCB0aGUgZGlzcGxheSBsYWJlbCBmbGFnIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSBbdWlTY2hlbWE9e31dIC0gVGhlIFVJIHNjaGVtYSBmcm9tIHdoaWNoIHRvIGRlcml2ZSBwb3RlbnRpYWxseSBkaXNwbGF5YWJsZSBpbmZvcm1hdGlvblxuICogQHBhcmFtIFtyb290U2NoZW1hXSAtIFRoZSByb290IHNjaGVtYSwgdXNlZCB0byBwcmltYXJpbHkgdG8gbG9vayB1cCBgJHJlZmBzXG4gKiBAcGFyYW0gW2dsb2JhbE9wdGlvbnM9e31dIC0gVGhlIG9wdGlvbmFsIEdsb2JhbCBVSSBTY2hlbWEgZnJvbSB3aGljaCB0byBnZXQgYW55IGZhbGxiYWNrIGB4eHhgIG9wdGlvbnNcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBsYWJlbCBzaG91bGQgYmUgZGlzcGxheWVkIG9yIGZhbHNlIGlmIGl0IHNob3VsZCBub3RcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RGlzcGxheUxhYmVsKHZhbGlkYXRvciwgc2NoZW1hLCB1aVNjaGVtYSA9IHt9LCByb290U2NoZW1hLCBnbG9iYWxPcHRpb25zLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIGNvbnN0IHVpT3B0aW9ucyA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSwgZ2xvYmFsT3B0aW9ucyk7XG4gICAgY29uc3QgeyBsYWJlbCA9IHRydWUgfSA9IHVpT3B0aW9ucztcbiAgICBsZXQgZGlzcGxheUxhYmVsID0gISFsYWJlbDtcbiAgICBjb25zdCBzY2hlbWFUeXBlID0gZ2V0U2NoZW1hVHlwZShzY2hlbWEpO1xuICAgIGlmIChzY2hlbWFUeXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgIGRpc3BsYXlMYWJlbCA9XG4gICAgICAgICAgICBpc011bHRpU2VsZWN0KHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikgfHxcbiAgICAgICAgICAgICAgICBpc0ZpbGVzQXJyYXkodmFsaWRhdG9yLCBzY2hlbWEsIHVpU2NoZW1hLCByb290U2NoZW1hLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikgfHxcbiAgICAgICAgICAgICAgICBpc0N1c3RvbVdpZGdldCh1aVNjaGVtYSk7XG4gICAgfVxuICAgIGlmIChzY2hlbWFUeXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBkaXNwbGF5TGFiZWwgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHNjaGVtYVR5cGUgPT09ICdib29sZWFuJyAmJiAhdWlTY2hlbWFbVUlfV0lER0VUX0tFWV0pIHtcbiAgICAgICAgZGlzcGxheUxhYmVsID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh1aVNjaGVtYVtVSV9GSUVMRF9LRVldKSB7XG4gICAgICAgIGRpc3BsYXlMYWJlbCA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gZGlzcGxheUxhYmVsO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0RGlzcGxheUxhYmVsLmpzLm1hcCIsImltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCBtZXJnZU9iamVjdHMgZnJvbSAnLi4vbWVyZ2VPYmplY3RzJztcbi8qKiBNZXJnZXMgdGhlIGVycm9ycyBpbiBgYWRkaXRpb25hbEVycm9yU2NoZW1hYCBpbnRvIHRoZSBleGlzdGluZyBgdmFsaWRhdGlvbkRhdGFgIGJ5IGNvbWJpbmluZyB0aGUgaGllcmFyY2hpZXMgaW4gdGhlXG4gKiB0d28gYEVycm9yU2NoZW1hYHMgYW5kIHRoZW4gYXBwZW5kaW5nIHRoZSBlcnJvciBsaXN0IGZyb20gdGhlIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIG9idGFpbmVkIGJ5IGNhbGxpbmdcbiAqIGB2YWxpZGF0b3IudG9FcnJvckxpc3QoKWAgb250byB0aGUgYGVycm9yc2AgaW4gdGhlIGB2YWxpZGF0aW9uRGF0YWAuIElmIG5vIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIGlzIHBhc3NlZCwgdGhlblxuICogYHZhbGlkYXRpb25EYXRhYCBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gVGhlIHZhbGlkYXRvciB1c2VkIHRvIGNvbnZlcnQgYW4gRXJyb3JTY2hlbWEgdG8gYSBsaXN0IG9mIGVycm9yc1xuICogQHBhcmFtIHZhbGlkYXRpb25EYXRhIC0gVGhlIGN1cnJlbnQgYFZhbGlkYXRpb25EYXRhYCBpbnRvIHdoaWNoIHRvIG1lcmdlIHRoZSBhZGRpdGlvbmFsIGVycm9yc1xuICogQHBhcmFtIFthZGRpdGlvbmFsRXJyb3JTY2hlbWFdIC0gVGhlIGFkZGl0aW9uYWwgc2V0IG9mIGVycm9ycyBpbiBhbiBgRXJyb3JTY2hlbWFgXG4gKiBAcmV0dXJucyAtIFRoZSBgdmFsaWRhdGlvbkRhdGFgIHdpdGggdGhlIGFkZGl0aW9uYWwgZXJyb3JzIGZyb20gYGFkZGl0aW9uYWxFcnJvclNjaGVtYWAgbWVyZ2VkIGludG8gaXQsIGlmIHByb3ZpZGVkLlxuICogQGRlcHJlY2F0ZWQgLSBVc2UgdGhlIGB2YWxpZGF0aW9uRGF0YU1lcmdlKClgIGZ1bmN0aW9uIGV4cG9ydGVkIGZyb20gYEByanNmL3V0aWxzYCBpbnN0ZWFkLiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmVcbiAqICAgICAgICByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlVmFsaWRhdGlvbkRhdGEodmFsaWRhdG9yLCB2YWxpZGF0aW9uRGF0YSwgYWRkaXRpb25hbEVycm9yU2NoZW1hKSB7XG4gICAgaWYgKCFhZGRpdGlvbmFsRXJyb3JTY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25EYXRhO1xuICAgIH1cbiAgICBjb25zdCB7IGVycm9yczogb2xkRXJyb3JzLCBlcnJvclNjaGVtYTogb2xkRXJyb3JTY2hlbWEgfSA9IHZhbGlkYXRpb25EYXRhO1xuICAgIGxldCBlcnJvcnMgPSB2YWxpZGF0b3IudG9FcnJvckxpc3QoYWRkaXRpb25hbEVycm9yU2NoZW1hKTtcbiAgICBsZXQgZXJyb3JTY2hlbWEgPSBhZGRpdGlvbmFsRXJyb3JTY2hlbWE7XG4gICAgaWYgKCFpc0VtcHR5KG9sZEVycm9yU2NoZW1hKSkge1xuICAgICAgICBlcnJvclNjaGVtYSA9IG1lcmdlT2JqZWN0cyhvbGRFcnJvclNjaGVtYSwgYWRkaXRpb25hbEVycm9yU2NoZW1hLCB0cnVlKTtcbiAgICAgICAgZXJyb3JzID0gWy4uLm9sZEVycm9yc10uY29uY2F0KGVycm9ycyk7XG4gICAgfVxuICAgIHJldHVybiB7IGVycm9yU2NoZW1hLCBlcnJvcnMgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1lcmdlVmFsaWRhdGlvbkRhdGEuanMubWFwIiwiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBoYXMgZnJvbSAnbG9kYXNoL2hhcyc7XG5pbXBvcnQgeyBQUk9QRVJUSUVTX0tFWSwgUkVGX0tFWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgcmV0cmlldmVTY2hlbWEgZnJvbSAnLi9yZXRyaWV2ZVNjaGVtYSc7XG5jb25zdCBOT19WQUxVRSA9IFN5bWJvbCgnbm8gVmFsdWUnKTtcbi8qKiBTYW5pdGl6ZSB0aGUgYGRhdGFgIGFzc29jaWF0ZWQgd2l0aCB0aGUgYG9sZFNjaGVtYWAgc28gaXQgaXMgY29uc2lkZXJlZCBhcHByb3ByaWF0ZSBmb3IgdGhlIGBuZXdTY2hlbWFgLiBJZiB0aGUgbmV3XG4gKiBzY2hlbWEgZG9lcyBub3QgY29udGFpbiBhbnkgcHJvcGVydGllcywgdGhlbiBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZCB0byBjbGVhciBhbGwgdGhlIGZvcm0gZGF0YS4gRHVlIHRvIHRoZSBuYXR1cmVcbiAqIG9mIHNjaGVtYXMsIHRoaXMgc2FuaXRpemF0aW9uIGhhcHBlbnMgcmVjdXJzaXZlbHkgZm9yIG5lc3RlZCBvYmplY3RzIG9mIGRhdGEuIEFsc28sIGFueSBwcm9wZXJ0aWVzIGluIHRoZSBvbGQgc2NoZW1hXG4gKiB0aGF0IGFyZSBub24tZXhpc3RlbnQgaW4gdGhlIG5ldyBzY2hlbWEgYXJlIHNldCB0byBgdW5kZWZpbmVkYC4gVGhlIGRhdGEgc2FuaXRpemF0aW9uIHByb2Nlc3MgaGFzIHRoZSBmb2xsb3dpbmcgZmxvdzpcbiAqXG4gKiAtIElmIHRoZSBuZXcgc2NoZW1hIGlzIGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgYHByb3BlcnRpZXNgIG9iamVjdCB0aGVuOlxuICogICAtIENyZWF0ZSBhIGByZW1vdmVPbGRTY2hlbWFEYXRhYCBvYmplY3QsIHNldHRpbmcgZWFjaCBrZXkgaW4gdGhlIGBvbGRTY2hlbWEucHJvcGVydGllc2AgaGF2aW5nIGBkYXRhYCB0byB1bmRlZmluZWRcbiAqICAgLSBDcmVhdGUgYW4gZW1wdHkgYG5lc3RlZERhdGFgIG9iamVjdCBmb3IgdXNlIGluIHRoZSBrZXkgZmlsdGVyaW5nIGJlbG93OlxuICogICAtIEl0ZXJhdGUgb3ZlciBlYWNoIGtleSBpbiB0aGUgYG5ld1NjaGVtYS5wcm9wZXJ0aWVzYCBhcyBmb2xsb3dzOlxuICogICAgIC0gR2V0IHRoZSBgZm9ybVZhbHVlYCBvZiB0aGUga2V5IGZyb20gdGhlIGBkYXRhYFxuICogICAgIC0gR2V0IHRoZSBgb2xkS2V5U2NoZW1hYCBhbmQgYG5ld0tleWVkU2NoZW1hYCBmb3IgdGhlIGtleSwgZGVmYXVsdGluZyB0byBge31gIHdoZW4gaXQgZG9lc24ndCBleGlzdFxuICogICAgIC0gUmV0cmlldmUgdGhlIHNjaGVtYSBmb3IgYW55IHJlZnMgd2l0aGluIGVhY2ggYG9sZEtleVNjaGVtYWAgYW5kL29yIGBuZXdLZXlTY2hlbWFgXG4gKiAgICAgLSBHZXQgdGhlIHR5cGVzIG9mIHRoZSBvbGQgYW5kIG5ldyBrZXllZCBzY2hlbWFzIGFuZCBpZiB0aGUgb2xkIGRvZXNuJ3QgZXhpc3Qgb3IgdGhlIG9sZCAmIG5ldyBhcmUgdGhlIHNhbWUgdGhlbjpcbiAqICAgICAgIC0gSWYgYHJlbW92ZU9sZFNjaGVtYURhdGFgIGhhcyBhbiBlbnRyeSBmb3IgdGhlIGtleSwgZGVsZXRlIGl0IHNpbmNlIHRoZSBuZXcgc2NoZW1hIGhhcyB0aGUgc2FtZSBwcm9wZXJ0eVxuICogICAgICAgLSBJZiB0eXBlIG9mIHRoZSBrZXkgaW4gdGhlIG5ldyBzY2hlbWEgaXMgYG9iamVjdGA6XG4gKiAgICAgICAgIC0gU3RvcmUgdGhlIHZhbHVlIGZyb20gdGhlIHJlY3Vyc2l2ZSBgc2FuaXRpemVEYXRhRm9yTmV3U2NoZW1hYCBjYWxsIGluIGBuZXN0ZWREYXRhW2tleV1gXG4gKiAgICAgICAtIE90aGVyd2lzZSwgY2hlY2sgZm9yIGRlZmF1bHQgb3IgY29uc3QgdmFsdWVzOlxuICogICAgICAgICAtIEdldCB0aGUgb2xkIGFuZCBuZXcgYGRlZmF1bHRgIHZhbHVlcyBmcm9tIHRoZSBzY2hlbWEgYW5kIGNoZWNrOlxuICogICAgICAgICAgIC0gSWYgdGhlIG5ldyBgZGVmYXVsdGAgdmFsdWUgZG9lcyBub3QgbWF0Y2ggdGhlIGZvcm0gdmFsdWU6XG4gKiAgICAgICAgICAgICAtIElmIHRoZSBvbGQgYGRlZmF1bHRgIHZhbHVlIERPRVMgbWF0Y2ggdGhlIGZvcm0gdmFsdWUsIHRoZW46XG4gKiAgICAgICAgICAgICAgIC0gUmVwbGFjZSBgcmVtb3ZlT2xkU2NoZW1hRGF0YVtrZXldYCB3aXRoIHRoZSBuZXcgYGRlZmF1bHRgXG4gKiAgICAgICAgICAgICAgIC0gT3RoZXJ3aXNlLCBpZiB0aGUgbmV3IHNjaGVtYSBpcyBgcmVhZE9ubHlgIHRoZW4gcmVwbGFjZSBgcmVtb3ZlT2xkU2NoZW1hRGF0YVtrZXldYCB3aXRoIHVuZGVmaW5lZFxuICogICAgICAgICAtIEdldCB0aGUgb2xkIGFuZCBuZXcgYGNvbnN0YCB2YWx1ZXMgZnJvbSB0aGUgc2NoZW1hIGFuZCBjaGVjazpcbiAqICAgICAgICAgICAtIElmIHRoZSBuZXcgYGNvbnN0YCB2YWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUgZm9ybSB2YWx1ZTpcbiAqICAgICAgICAgICAtIElmIHRoZSBvbGQgYGNvbnN0YCB2YWx1ZSBET0VTIG1hdGNoIHRoZSBmb3JtIHZhbHVlLCB0aGVuOlxuICogICAgICAgICAgICAgLSBSZXBsYWNlIGByZW1vdmVPbGRTY2hlbWFEYXRhW2tleV1gIHdpdGggdGhlIG5ldyBgY29uc3RgXG4gKiAgICAgICAgICAgICAtIE90aGVyd2lzZSwgcmVwbGFjZSBgcmVtb3ZlT2xkU2NoZW1hRGF0YVtrZXldYCB3aXRoIHVuZGVmaW5lZFxuICogICAtIE9uY2UgYWxsIGtleXMgaGF2ZSBiZWVuIHByb2Nlc3NlZCwgcmV0dXJuIGFuIG9iamVjdCBidWlsdCBhcyBmb2xsb3dzOlxuICogICAgIC0gYHsgLi4ucmVtb3ZlT2xkU2NoZW1hRGF0YSwgLi4ubmVzdGVkRGF0YSwgLi4ucGljayhkYXRhLCBrZXlzVG9LZWVwKSB9YFxuICogLSBJZiB0aGUgbmV3IGFuZCBvbGQgc2NoZW1hIHR5cGVzIGFyZSBhcnJheSBhbmQgdGhlIGBkYXRhYCBpcyBhbiBhcnJheSB0aGVuOlxuICogICAtIElmIHRoZSB0eXBlIG9mIHRoZSBvbGQgYW5kIG5ldyBzY2hlbWEgYGl0ZW1zYCBhcmUgYSBub24tYXJyYXkgb2JqZWN0czpcbiAqICAgICAtIFJldHJpZXZlIHRoZSBzY2hlbWEgZm9yIGFueSByZWZzIHdpdGhpbiBlYWNoIGBvbGRLZXlTY2hlbWEuaXRlbXNgIGFuZC9vciBgbmV3S2V5U2NoZW1hLml0ZW1zYFxuICogICAgIC0gSWYgdGhlIGB0eXBlYHMgb2YgYm90aCBpdGVtcyBhcmUgdGhlIHNhbWUgKG9yIHRoZSBvbGQgZG9lcyBub3QgaGF2ZSBhIHR5cGUpOlxuICogICAgICAgLSBJZiB0aGUgdHlwZSBpcyBcIm9iamVjdFwiLCB0aGVuOlxuICogICAgICAgICAtIEZvciBlYWNoIGVsZW1lbnQgaW4gdGhlIGBkYXRhYCByZWN1cnNpdmVseSBzYW5pdGl6ZSB0aGUgZGF0YSwgc3RvcHBpbmcgYXQgYG1heEl0ZW1zYCBpZiBzcGVjaWZpZWRcbiAqICAgICAgIC0gT3RoZXJ3aXNlLCBqdXN0IHJldHVybiB0aGUgYGRhdGFgIHJlbW92aW5nIGFueSB2YWx1ZXMgYWZ0ZXIgYG1heEl0ZW1zYCBpZiBpdCBpcyBzZXRcbiAqICAgLSBJZiB0aGUgdHlwZSBvZiB0aGUgb2xkIGFuZCBuZXcgc2NoZW1hIGBpdGVtc2AgYXJlIGJvb2xlYW5zIG9mIHRoZSBzYW1lIHZhbHVlLCByZXR1cm4gYGRhdGFgIGFzIGlzXG4gKiAtIE90aGVyd2lzZSByZXR1cm4gYHVuZGVmaW5lZGBcbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3QgSlNPTiBzY2hlbWEgb2YgdGhlIGVudGlyZSBmb3JtXG4gKiBAcGFyYW0gW25ld1NjaGVtYV0gLSBUaGUgbmV3IHNjaGVtYSBmb3Igd2hpY2ggdGhlIGRhdGEgaXMgYmVpbmcgc2FuaXRpemVkXG4gKiBAcGFyYW0gW29sZFNjaGVtYV0gLSBUaGUgb2xkIHNjaGVtYSBmcm9tIHdoaWNoIHRoZSBkYXRhIG9yaWdpbmF0ZWRcbiAqIEBwYXJhbSBbZGF0YT17fV0gLSBUaGUgZm9ybSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2NoZW1hLCBkZWZhdWx0aW5nIHRvIGFuIGVtcHR5IG9iamVjdCB3aGVuIHVuZGVmaW5lZFxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBuZXcgZm9ybSBkYXRhLCB3aXRoIGFsbCB0aGUgZmllbGRzIHVuaXF1ZWx5IGFzc29jaWF0ZWQgd2l0aCB0aGUgb2xkIHNjaGVtYSBzZXRcbiAqICAgICAgdG8gYHVuZGVmaW5lZGAuIFdpbGwgcmV0dXJuIGB1bmRlZmluZWRgIGlmIHRoZSBuZXcgc2NoZW1hIGlzIG5vdCBhbiBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzYW5pdGl6ZURhdGFGb3JOZXdTY2hlbWEodmFsaWRhdG9yLCByb290U2NoZW1hLCBuZXdTY2hlbWEsIG9sZFNjaGVtYSwgZGF0YSA9IHt9LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIC8vIEJ5IGRlZmF1bHQsIHdlIHdpbGwgY2xlYXIgdGhlIGZvcm0gZGF0YVxuICAgIGxldCBuZXdGb3JtRGF0YTtcbiAgICAvLyBJZiB0aGUgbmV3IHNjaGVtYSBpcyBvZiB0eXBlIG9iamVjdCBhbmQgdGhhdCBvYmplY3QgY29udGFpbnMgYSBsaXN0IG9mIHByb3BlcnRpZXNcbiAgICBpZiAoaGFzKG5ld1NjaGVtYSwgUFJPUEVSVElFU19LRVkpKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhbiBvYmplY3QgY29udGFpbmluZyByb290LWxldmVsIGtleXMgaW4gdGhlIG9sZCBzY2hlbWEsIHNldHRpbmcgZWFjaCBrZXkgdG8gdW5kZWZpbmVkIHRvIHJlbW92ZSB0aGUgZGF0YVxuICAgICAgICBjb25zdCByZW1vdmVPbGRTY2hlbWFEYXRhID0ge307XG4gICAgICAgIGlmIChoYXMob2xkU2NoZW1hLCBQUk9QRVJUSUVTX0tFWSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBnZXQob2xkU2NoZW1hLCBQUk9QRVJUSUVTX0tFWSwge30pO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMocHJvcGVydGllcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGhhcyhkYXRhLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZU9sZFNjaGVtYURhdGFba2V5XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZ2V0KG5ld1NjaGVtYSwgUFJPUEVSVElFU19LRVksIHt9KSk7XG4gICAgICAgIC8vIENyZWF0ZSBhIHBsYWNlIHRvIHN0b3JlIG5lc3RlZCBkYXRhIHRoYXQgd2lsbCBiZSBhIHNpZGUtZWZmZWN0IG9mIHRoZSBmaWx0ZXJcbiAgICAgICAgY29uc3QgbmVzdGVkRGF0YSA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybVZhbHVlID0gZ2V0KGRhdGEsIGtleSk7XG4gICAgICAgICAgICBsZXQgb2xkS2V5ZWRTY2hlbWEgPSBnZXQob2xkU2NoZW1hLCBbUFJPUEVSVElFU19LRVksIGtleV0sIHt9KTtcbiAgICAgICAgICAgIGxldCBuZXdLZXllZFNjaGVtYSA9IGdldChuZXdTY2hlbWEsIFtQUk9QRVJUSUVTX0tFWSwga2V5XSwge30pO1xuICAgICAgICAgICAgLy8gUmVzb2x2ZSB0aGUgcmVmcyBpZiB0aGV5IGV4aXN0XG4gICAgICAgICAgICBpZiAoaGFzKG9sZEtleWVkU2NoZW1hLCBSRUZfS0VZKSkge1xuICAgICAgICAgICAgICAgIG9sZEtleWVkU2NoZW1hID0gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCBvbGRLZXllZFNjaGVtYSwgcm9vdFNjaGVtYSwgZm9ybVZhbHVlLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaGFzKG5ld0tleWVkU2NoZW1hLCBSRUZfS0VZKSkge1xuICAgICAgICAgICAgICAgIG5ld0tleWVkU2NoZW1hID0gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCBuZXdLZXllZFNjaGVtYSwgcm9vdFNjaGVtYSwgZm9ybVZhbHVlLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBOb3cgZ2V0IHR5cGVzIGFuZCBzZWUgaWYgdGhleSBhcmUgdGhlIHNhbWVcbiAgICAgICAgICAgIGNvbnN0IG9sZFNjaGVtYVR5cGVGb3JLZXkgPSBnZXQob2xkS2V5ZWRTY2hlbWEsICd0eXBlJyk7XG4gICAgICAgICAgICBjb25zdCBuZXdTY2hlbWFUeXBlRm9yS2V5ID0gZ2V0KG5ld0tleWVkU2NoZW1hLCAndHlwZScpO1xuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIG9sZCBvcHRpb24gaGFzIHRoZSBzYW1lIGtleSB3aXRoIHRoZSBzYW1lIHR5cGVcbiAgICAgICAgICAgIGlmICghb2xkU2NoZW1hVHlwZUZvcktleSB8fCBvbGRTY2hlbWFUeXBlRm9yS2V5ID09PSBuZXdTY2hlbWFUeXBlRm9yS2V5KSB7XG4gICAgICAgICAgICAgICAgaWYgKGhhcyhyZW1vdmVPbGRTY2hlbWFEYXRhLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNJREUtRUZGRUNUOiByZW1vdmUgdGhlIHVuZGVmaW5lZCB2YWx1ZSBmb3IgYSBrZXkgdGhhdCBoYXMgdGhlIHNhbWUgdHlwZSBiZXR3ZWVuIHRoZSBvbGQgYW5kIG5ldyBzY2hlbWFzXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZW1vdmVPbGRTY2hlbWFEYXRhW2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIElmIGl0IGlzIGFuIG9iamVjdCwgd2UnbGwgcmVjdXJzZSBhbmQgc3RvcmUgdGhlIHJlc3VsdGluZyBzYW5pdGl6ZWQgZGF0YSBmb3IgdGhlIGtleVxuICAgICAgICAgICAgICAgIGlmIChuZXdTY2hlbWFUeXBlRm9yS2V5ID09PSAnb2JqZWN0JyB8fCAobmV3U2NoZW1hVHlwZUZvcktleSA9PT0gJ2FycmF5JyAmJiBBcnJheS5pc0FycmF5KGZvcm1WYWx1ZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNJREUtRUZGRUNUOiBwcm9jZXNzIHRoZSBuZXcgc2NoZW1hIHR5cGUgb2Ygb2JqZWN0IHJlY3Vyc2l2ZWx5IHRvIHNhdmUgaXRlcmF0aW9uc1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtRGF0YSA9IHNhbml0aXplRGF0YUZvck5ld1NjaGVtYSh2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIG5ld0tleWVkU2NoZW1hLCBvbGRLZXllZFNjaGVtYSwgZm9ybVZhbHVlLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtRGF0YSAhPT0gdW5kZWZpbmVkIHx8IG5ld1NjaGVtYVR5cGVGb3JLZXkgPT09ICdhcnJheScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgcHV0IHVuZGVmaW5lZCB2YWx1ZXMgZm9yIHRoZSBhcnJheSB0eXBlIGFuZCBub3QgdGhlIG9iamVjdCB0eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWREYXRhW2tleV0gPSBpdGVtRGF0YTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gT2ssIHRoZSBub24tb2JqZWN0IHR5cGVzIG1hdGNoLCBsZXQncyBtYWtlIHN1cmUgdGhhdCBhIGRlZmF1bHQgb3IgYSBjb25zdCBvZiBhIGRpZmZlcmVudCB2YWx1ZSBpcyByZXBsYWNlZFxuICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIHRoZSBuZXcgZGVmYXVsdCBvciBjb25zdC4gVGhpcyBhbGxvd3MgdGhlIGNhc2Ugd2hlcmUgdHdvIHNjaGVtYXMgZGlmZmVyIHRoYXQgb25seSBieSB0aGUgZGVmYXVsdC9jb25zdFxuICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZSB0byBiZSBwcm9wZXJseSBzZWxlY3RlZFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdPcHRpb25EZWZhdWx0ID0gZ2V0KG5ld0tleWVkU2NoZW1hLCAnZGVmYXVsdCcsIE5PX1ZBTFVFKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2xkT3B0aW9uRGVmYXVsdCA9IGdldChvbGRLZXllZFNjaGVtYSwgJ2RlZmF1bHQnLCBOT19WQUxVRSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdPcHRpb25EZWZhdWx0ICE9PSBOT19WQUxVRSAmJiBuZXdPcHRpb25EZWZhdWx0ICE9PSBmb3JtVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvbGRPcHRpb25EZWZhdWx0ID09PSBmb3JtVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgb2xkIGRlZmF1bHQgbWF0Y2hlcyB0aGUgZm9ybVZhbHVlLCB3ZSdsbCB1cGRhdGUgdGhlIG5ldyB2YWx1ZSB0byBtYXRjaCB0aGUgbmV3IGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVPbGRTY2hlbWFEYXRhW2tleV0gPSBuZXdPcHRpb25EZWZhdWx0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZ2V0KG5ld0tleWVkU2NoZW1hLCAncmVhZE9ubHknKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBuZXcgc2NoZW1hIGhhcyB0aGUgZGVmYXVsdCBzZXQgdG8gcmVhZC1vbmx5LCB0cmVhdCBpdCBsaWtlIGEgY29uc3QgYW5kIHJlbW92ZSB0aGUgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVPbGRTY2hlbWFEYXRhW2tleV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3T3B0aW9uQ29uc3QgPSBnZXQobmV3S2V5ZWRTY2hlbWEsICdjb25zdCcsIE5PX1ZBTFVFKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2xkT3B0aW9uQ29uc3QgPSBnZXQob2xkS2V5ZWRTY2hlbWEsICdjb25zdCcsIE5PX1ZBTFVFKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld09wdGlvbkNvbnN0ICE9PSBOT19WQUxVRSAmJiBuZXdPcHRpb25Db25zdCAhPT0gZm9ybVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSB0aGlzIGlzIGEgY29uc3QsIGlmIHRoZSBvbGQgdmFsdWUgbWF0Y2hlcywgcmVwbGFjZSB0aGUgdmFsdWUgd2l0aCB0aGUgbmV3IGNvbnN0IG90aGVyd2lzZSBjbGVhciBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlT2xkU2NoZW1hRGF0YVtrZXldID0gb2xkT3B0aW9uQ29uc3QgPT09IGZvcm1WYWx1ZSA/IG5ld09wdGlvbkNvbnN0IDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgbmV3Rm9ybURhdGEgPSB7XG4gICAgICAgICAgICAuLi4odHlwZW9mIGRhdGEgPT0gJ3N0cmluZycgfHwgQXJyYXkuaXNBcnJheShkYXRhKSA/IHVuZGVmaW5lZCA6IGRhdGEpLFxuICAgICAgICAgICAgLi4ucmVtb3ZlT2xkU2NoZW1hRGF0YSxcbiAgICAgICAgICAgIC4uLm5lc3RlZERhdGEsXG4gICAgICAgIH07XG4gICAgICAgIC8vIEZpcnN0IGFwcGx5IHJlbW92aW5nIHRoZSBvbGQgc2NoZW1hIGRhdGEsIHRoZW4gYXBwbHkgdGhlIG5lc3RlZCBkYXRhLCB0aGVuIGFwcGx5IHRoZSBvbGQgZGF0YSBrZXlzIHRvIGtlZXBcbiAgICB9XG4gICAgZWxzZSBpZiAoZ2V0KG9sZFNjaGVtYSwgJ3R5cGUnKSA9PT0gJ2FycmF5JyAmJiBnZXQobmV3U2NoZW1hLCAndHlwZScpID09PSAnYXJyYXknICYmIEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgbGV0IG9sZFNjaGVtYUl0ZW1zID0gZ2V0KG9sZFNjaGVtYSwgJ2l0ZW1zJyk7XG4gICAgICAgIGxldCBuZXdTY2hlbWFJdGVtcyA9IGdldChuZXdTY2hlbWEsICdpdGVtcycpO1xuICAgICAgICAvLyBJZiBhbnkgb2YgdGhlIGFycmF5IHR5cGVzIGBpdGVtc2AgYXJlIGFycmF5cyAocmVtZW1iZXIgYXJyYXlzIGFyZSBvYmplY3RzKSB0aGVuIHdlJ2xsIGp1c3QgZHJvcCB0aGUgZGF0YVxuICAgICAgICAvLyBFdmVudHVhbGx5LCB3ZSBtYXkgd2FudCB0byBkZWFsIHdpdGggd2hlbiBlaXRoZXIgb2YgdGhlIGBpdGVtc2AgYXJlIGFycmF5cyBzaW5jZSB0aG9zZSB0dXBsZSB2YWxpZGF0aW9uc1xuICAgICAgICBpZiAodHlwZW9mIG9sZFNjaGVtYUl0ZW1zID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgdHlwZW9mIG5ld1NjaGVtYUl0ZW1zID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkob2xkU2NoZW1hSXRlbXMpICYmXG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheShuZXdTY2hlbWFJdGVtcykpIHtcbiAgICAgICAgICAgIGlmIChoYXMob2xkU2NoZW1hSXRlbXMsIFJFRl9LRVkpKSB7XG4gICAgICAgICAgICAgICAgb2xkU2NoZW1hSXRlbXMgPSByZXRyaWV2ZVNjaGVtYSh2YWxpZGF0b3IsIG9sZFNjaGVtYUl0ZW1zLCByb290U2NoZW1hLCBkYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaGFzKG5ld1NjaGVtYUl0ZW1zLCBSRUZfS0VZKSkge1xuICAgICAgICAgICAgICAgIG5ld1NjaGVtYUl0ZW1zID0gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCBuZXdTY2hlbWFJdGVtcywgcm9vdFNjaGVtYSwgZGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gTm93IGdldCB0eXBlcyBhbmQgc2VlIGlmIHRoZXkgYXJlIHRoZSBzYW1lXG4gICAgICAgICAgICBjb25zdCBvbGRTY2hlbWFUeXBlID0gZ2V0KG9sZFNjaGVtYUl0ZW1zLCAndHlwZScpO1xuICAgICAgICAgICAgY29uc3QgbmV3U2NoZW1hVHlwZSA9IGdldChuZXdTY2hlbWFJdGVtcywgJ3R5cGUnKTtcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBvbGQgb3B0aW9uIGhhcyB0aGUgc2FtZSBrZXkgd2l0aCB0aGUgc2FtZSB0eXBlXG4gICAgICAgICAgICBpZiAoIW9sZFNjaGVtYVR5cGUgfHwgb2xkU2NoZW1hVHlwZSA9PT0gbmV3U2NoZW1hVHlwZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1heEl0ZW1zID0gZ2V0KG5ld1NjaGVtYSwgJ21heEl0ZW1zJywgLTEpO1xuICAgICAgICAgICAgICAgIGlmIChuZXdTY2hlbWFUeXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICBuZXdGb3JtRGF0YSA9IGRhdGEucmVkdWNlKChuZXdWYWx1ZSwgYVZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtVmFsdWUgPSBzYW5pdGl6ZURhdGFGb3JOZXdTY2hlbWEodmFsaWRhdG9yLCByb290U2NoZW1hLCBuZXdTY2hlbWFJdGVtcywgb2xkU2NoZW1hSXRlbXMsIGFWYWx1ZSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1WYWx1ZSAhPT0gdW5kZWZpbmVkICYmIChtYXhJdGVtcyA8IDAgfHwgbmV3VmFsdWUubGVuZ3RoIDwgbWF4SXRlbXMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUucHVzaChpdGVtVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld1ZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBuZXdGb3JtRGF0YSA9IG1heEl0ZW1zID4gMCAmJiBkYXRhLmxlbmd0aCA+IG1heEl0ZW1zID8gZGF0YS5zbGljZSgwLCBtYXhJdGVtcykgOiBkYXRhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2Ygb2xkU2NoZW1hSXRlbXMgPT09ICdib29sZWFuJyAmJlxuICAgICAgICAgICAgdHlwZW9mIG5ld1NjaGVtYUl0ZW1zID09PSAnYm9vbGVhbicgJiZcbiAgICAgICAgICAgIG9sZFNjaGVtYUl0ZW1zID09PSBuZXdTY2hlbWFJdGVtcykge1xuICAgICAgICAgICAgLy8gSWYgdGhleSBhcmUgYm90aCBib29sZWFucyBhbmQgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBqdXN0IHJldHVybiB0aGUgZGF0YSBhcyBpcyBvdGhlcndpc2UgZmFsbC10aHJ1IHRvIHVuZGVmaW5lZFxuICAgICAgICAgICAgbmV3Rm9ybURhdGEgPSBkYXRhO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFsc28gcHJvYmFibHkgd2FudCB0byBkZWFsIHdpdGggYHByZWZpeEl0ZW1zYCBhcyB0dXBsZXMgd2l0aCB0aGUgbGF0ZXN0IDIwMjAgZHJhZnRcbiAgICB9XG4gICAgcmV0dXJuIG5ld0Zvcm1EYXRhO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2FuaXRpemVEYXRhRm9yTmV3U2NoZW1hLmpzLm1hcCIsImltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5pbXBvcnQgeyBBTExfT0ZfS0VZLCBERVBFTkRFTkNJRVNfS0VZLCBJRF9LRVksIElURU1TX0tFWSwgUFJPUEVSVElFU19LRVksIFJFRl9LRVkgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4uL2lzT2JqZWN0JztcbmltcG9ydCByZXRyaWV2ZVNjaGVtYSBmcm9tICcuL3JldHJpZXZlU2NoZW1hJztcbmltcG9ydCBnZXRTY2hlbWFUeXBlIGZyb20gJy4uL2dldFNjaGVtYVR5cGUnO1xuLyoqIEFuIGludGVybmFsIGhlbHBlciB0aGF0IGdlbmVyYXRlcyBhbiBgSWRTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGBzY2hlbWFgLCByZWN1cnNpdmVseSB3aXRoIHByb3RlY3Rpb24gYWdhaW5zdFxuICogaW5maW5pdGUgcmVjdXJzaW9uXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIGBJZFNjaGVtYWAgaXMgZGVzaXJlZFxuICogQHBhcmFtIGlkUHJlZml4IC0gVGhlIHByZWZpeCB0byB1c2UgZm9yIHRoZSBpZFxuICogQHBhcmFtIGlkU2VwYXJhdG9yIC0gVGhlIHNlcGFyYXRvciB0byB1c2UgZm9yIHRoZSBwYXRoIHNlZ21lbnRzIGluIHRoZSBpZFxuICogQHBhcmFtIFtpZF0gLSBUaGUgYmFzZSBpZCBmb3IgdGhlIHNjaGVtYVxuICogQHBhcmFtIFtyb290U2NoZW1hXSAtIFRoZSByb290IHNjaGVtYSwgdXNlZCB0byBwcmltYXJpbHkgdG8gbG9vayB1cCBgJHJlZmBzXG4gKiBAcGFyYW0gW2Zvcm1EYXRhXSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIHRvIGFzc2lzdCByZXRyaWV2aW5nIGEgc2NoZW1hXG4gKiBAcGFyYW0gW19yZWN1cnNlTGlzdD1bXV0gLSBUaGUgbGlzdCBvZiByZXRyaWV2ZWQgc2NoZW1hcyBjdXJyZW50bHkgYmVpbmcgcmVjdXJzZWQsIHVzZWQgdG8gcHJldmVudCBpbmZpbml0ZSByZWN1cnNpb25cbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgYElkU2NoZW1hYCBvYmplY3QgZm9yIHRoZSBgc2NoZW1hYFxuICovXG5mdW5jdGlvbiB0b0lkU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBzY2hlbWEsIGlkUHJlZml4LCBpZFNlcGFyYXRvciwgaWQsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBfcmVjdXJzZUxpc3QgPSBbXSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICBpZiAoUkVGX0tFWSBpbiBzY2hlbWEgfHwgREVQRU5ERU5DSUVTX0tFWSBpbiBzY2hlbWEgfHwgQUxMX09GX0tFWSBpbiBzY2hlbWEpIHtcbiAgICAgICAgY29uc3QgX3NjaGVtYSA9IHJldHJpZXZlU2NoZW1hKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBmb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICBjb25zdCBzYW1lU2NoZW1hSW5kZXggPSBfcmVjdXJzZUxpc3QuZmluZEluZGV4KChpdGVtKSA9PiBpc0VxdWFsKGl0ZW0sIF9zY2hlbWEpKTtcbiAgICAgICAgaWYgKHNhbWVTY2hlbWFJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiB0b0lkU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBfc2NoZW1hLCBpZFByZWZpeCwgaWRTZXBhcmF0b3IsIGlkLCByb290U2NoZW1hLCBmb3JtRGF0YSwgX3JlY3Vyc2VMaXN0LmNvbmNhdChfc2NoZW1hKSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChJVEVNU19LRVkgaW4gc2NoZW1hICYmICFnZXQoc2NoZW1hLCBbSVRFTVNfS0VZLCBSRUZfS0VZXSkpIHtcbiAgICAgICAgcmV0dXJuIHRvSWRTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIGdldChzY2hlbWEsIElURU1TX0tFWSksIGlkUHJlZml4LCBpZFNlcGFyYXRvciwgaWQsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBfcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG4gICAgY29uc3QgJGlkID0gaWQgfHwgaWRQcmVmaXg7XG4gICAgY29uc3QgaWRTY2hlbWEgPSB7ICRpZCB9O1xuICAgIGlmIChnZXRTY2hlbWFUeXBlKHNjaGVtYSkgPT09ICdvYmplY3QnICYmIFBST1BFUlRJRVNfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgaW4gc2NoZW1hLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZ2V0KHNjaGVtYSwgW1BST1BFUlRJRVNfS0VZLCBuYW1lXSk7XG4gICAgICAgICAgICBjb25zdCBmaWVsZElkID0gaWRTY2hlbWFbSURfS0VZXSArIGlkU2VwYXJhdG9yICsgbmFtZTtcbiAgICAgICAgICAgIGlkU2NoZW1hW25hbWVdID0gdG9JZFNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgaXNPYmplY3QoZmllbGQpID8gZmllbGQgOiB7fSwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yLCBmaWVsZElkLCByb290U2NoZW1hLCBcbiAgICAgICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBmb3JtRGF0YSBpcyBub3QgYW4gb2JqZWN0IC0tIHRoaXMgY2FuIGhhcHBlbiBpZiBhblxuICAgICAgICAgICAgLy8gYXJyYXkgaXRlbSBoYXMganVzdCBiZWVuIGFkZGVkLCBidXQgbm90IHBvcHVsYXRlZCB3aXRoIGRhdGEgeWV0XG4gICAgICAgICAgICBnZXQoZm9ybURhdGEsIFtuYW1lXSksIF9yZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpZFNjaGVtYTtcbn1cbi8qKiBHZW5lcmF0ZXMgYW4gYElkU2NoZW1hYCBvYmplY3QgZm9yIHRoZSBgc2NoZW1hYCwgcmVjdXJzaXZlbHlcbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCB0aGUgYElkU2NoZW1hYCBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gW2lkXSAtIFRoZSBiYXNlIGlkIGZvciB0aGUgc2NoZW1hXG4gKiBAcGFyYW0gW3Jvb3RTY2hlbWFdIC0gVGhlIHJvb3Qgc2NoZW1hLCB1c2VkIHRvIHByaW1hcmlseSB0byBsb29rIHVwIGAkcmVmYHNcbiAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbaWRQcmVmaXg9J3Jvb3QnXSAtIFRoZSBwcmVmaXggdG8gdXNlIGZvciB0aGUgaWRcbiAqIEBwYXJhbSBbaWRTZXBhcmF0b3I9J18nXSAtIFRoZSBzZXBhcmF0b3IgdG8gdXNlIGZvciB0aGUgcGF0aCBzZWdtZW50cyBpbiB0aGUgaWRcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgYElkU2NoZW1hYCBvYmplY3QgZm9yIHRoZSBgc2NoZW1hYFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b0lkU2NoZW1hKHZhbGlkYXRvciwgc2NoZW1hLCBpZCwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGlkUHJlZml4ID0gJ3Jvb3QnLCBpZFNlcGFyYXRvciA9ICdfJywgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICByZXR1cm4gdG9JZFNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgc2NoZW1hLCBpZFByZWZpeCwgaWRTZXBhcmF0b3IsIGlkLCByb290U2NoZW1hLCBmb3JtRGF0YSwgdW5kZWZpbmVkLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD10b0lkU2NoZW1hLmpzLm1hcCIsImltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5pbXBvcnQgc2V0IGZyb20gJ2xvZGFzaC9zZXQnO1xuaW1wb3J0IHsgQUxMX09GX0tFWSwgQU5ZX09GX0tFWSwgQURESVRJT05BTF9QUk9QRVJUSUVTX0tFWSwgREVQRU5ERU5DSUVTX0tFWSwgSVRFTVNfS0VZLCBOQU1FX0tFWSwgT05FX09GX0tFWSwgUFJPUEVSVElFU19LRVksIFJFRl9LRVksIFJKU0ZfQURESVRJT05BTF9QUk9QRVJUSUVTX0ZMQUcsIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBnZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hIGZyb20gJy4uL2dldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEnO1xuaW1wb3J0IGdldENsb3Nlc3RNYXRjaGluZ09wdGlvbiBmcm9tICcuL2dldENsb3Nlc3RNYXRjaGluZ09wdGlvbic7XG5pbXBvcnQgcmV0cmlldmVTY2hlbWEgZnJvbSAnLi9yZXRyaWV2ZVNjaGVtYSc7XG4vKiogQW4gaW50ZXJuYWwgaGVscGVyIHRoYXQgZ2VuZXJhdGVzIGFuIGBQYXRoU2NoZW1hYCBvYmplY3QgZm9yIHRoZSBgc2NoZW1hYCwgcmVjdXJzaXZlbHkgd2l0aCBwcm90ZWN0aW9uIGFnYWluc3RcbiAqIGluZmluaXRlIHJlY3Vyc2lvblxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBgUGF0aFNjaGVtYWAgaXMgZGVzaXJlZFxuICogQHBhcmFtIFtuYW1lPScnXSAtIFRoZSBiYXNlIG5hbWUgZm9yIHRoZSBzY2hlbWFcbiAqIEBwYXJhbSBbcm9vdFNjaGVtYV0gLSBUaGUgcm9vdCBzY2hlbWEsIHVzZWQgdG8gcHJpbWFyaWx5IHRvIGxvb2sgdXAgYCRyZWZgc1xuICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtfcmVjdXJzZUxpc3Q9W11dIC0gVGhlIGxpc3Qgb2YgcmV0cmlldmVkIHNjaGVtYXMgY3VycmVudGx5IGJlaW5nIHJlY3Vyc2VkLCB1c2VkIHRvIHByZXZlbnQgaW5maW5pdGUgcmVjdXJzaW9uXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gVGhlIGBQYXRoU2NoZW1hYCBvYmplY3QgZm9yIHRoZSBgc2NoZW1hYFxuICovXG5mdW5jdGlvbiB0b1BhdGhTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIHNjaGVtYSwgbmFtZSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIF9yZWN1cnNlTGlzdCA9IFtdLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIGlmIChSRUZfS0VZIGluIHNjaGVtYSB8fCBERVBFTkRFTkNJRVNfS0VZIGluIHNjaGVtYSB8fCBBTExfT0ZfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICBjb25zdCBfc2NoZW1hID0gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgIGNvbnN0IHNhbWVTY2hlbWFJbmRleCA9IF9yZWN1cnNlTGlzdC5maW5kSW5kZXgoKGl0ZW0pID0+IGlzRXF1YWwoaXRlbSwgX3NjaGVtYSkpO1xuICAgICAgICBpZiAoc2FtZVNjaGVtYUluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRvUGF0aFNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgX3NjaGVtYSwgbmFtZSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIF9yZWN1cnNlTGlzdC5jb25jYXQoX3NjaGVtYSksIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXQgcGF0aFNjaGVtYSA9IHtcbiAgICAgICAgW05BTUVfS0VZXTogbmFtZS5yZXBsYWNlKC9eXFwuLywgJycpLFxuICAgIH07XG4gICAgaWYgKE9ORV9PRl9LRVkgaW4gc2NoZW1hIHx8IEFOWV9PRl9LRVkgaW4gc2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IHh4eE9mID0gT05FX09GX0tFWSBpbiBzY2hlbWEgPyBzY2hlbWEub25lT2YgOiBzY2hlbWEuYW55T2Y7XG4gICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3IgPSBnZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hKHNjaGVtYSk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gZ2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uKHZhbGlkYXRvciwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIHh4eE9mLCAwLCBkaXNjcmltaW5hdG9yLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgIGNvbnN0IF9zY2hlbWEgPSB4eHhPZltpbmRleF07XG4gICAgICAgIHBhdGhTY2hlbWEgPSB7XG4gICAgICAgICAgICAuLi5wYXRoU2NoZW1hLFxuICAgICAgICAgICAgLi4udG9QYXRoU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBfc2NoZW1hLCBuYW1lLCByb290U2NoZW1hLCBmb3JtRGF0YSwgX3JlY3Vyc2VMaXN0LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZiksXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChBRERJVElPTkFMX1BST1BFUlRJRVNfS0VZIGluIHNjaGVtYSAmJiBzY2hlbWFbQURESVRJT05BTF9QUk9QRVJUSUVTX0tFWV0gIT09IGZhbHNlKSB7XG4gICAgICAgIHNldChwYXRoU2NoZW1hLCBSSlNGX0FERElUSU9OQUxfUFJPUEVSVElFU19GTEFHLCB0cnVlKTtcbiAgICB9XG4gICAgaWYgKElURU1TX0tFWSBpbiBzY2hlbWEgJiYgQXJyYXkuaXNBcnJheShmb3JtRGF0YSkpIHtcbiAgICAgICAgY29uc3QgeyBpdGVtczogc2NoZW1hSXRlbXMsIGFkZGl0aW9uYWxJdGVtczogc2NoZW1hQWRkaXRpb25hbEl0ZW1zIH0gPSBzY2hlbWE7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYUl0ZW1zKSkge1xuICAgICAgICAgICAgZm9ybURhdGEuZm9yRWFjaCgoZWxlbWVudCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzY2hlbWFJdGVtc1tpXSkge1xuICAgICAgICAgICAgICAgICAgICBwYXRoU2NoZW1hW2ldID0gdG9QYXRoU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBzY2hlbWFJdGVtc1tpXSwgYCR7bmFtZX0uJHtpfWAsIHJvb3RTY2hlbWEsIGVsZW1lbnQsIF9yZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzY2hlbWFBZGRpdGlvbmFsSXRlbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aFNjaGVtYVtpXSA9IHRvUGF0aFNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgc2NoZW1hQWRkaXRpb25hbEl0ZW1zLCBgJHtuYW1lfS4ke2l9YCwgcm9vdFNjaGVtYSwgZWxlbWVudCwgX3JlY3Vyc2VMaXN0LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFVuYWJsZSB0byBnZW5lcmF0ZSBwYXRoIHNjaGVtYSBmb3IgXCIke25hbWV9LiR7aX1cIi4gTm8gc2NoZW1hIGRlZmluZWQgZm9yIGl0YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmb3JtRGF0YS5mb3JFYWNoKChlbGVtZW50LCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgcGF0aFNjaGVtYVtpXSA9IHRvUGF0aFNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgc2NoZW1hSXRlbXMsIGAke25hbWV9LiR7aX1gLCByb290U2NoZW1hLCBlbGVtZW50LCBfcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKFBST1BFUlRJRVNfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIHNjaGVtYS5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZCA9IGdldChzY2hlbWEsIFtQUk9QRVJUSUVTX0tFWSwgcHJvcGVydHldKTtcbiAgICAgICAgICAgIHBhdGhTY2hlbWFbcHJvcGVydHldID0gdG9QYXRoU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBmaWVsZCwgYCR7bmFtZX0uJHtwcm9wZXJ0eX1gLCByb290U2NoZW1hLCBcbiAgICAgICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBmb3JtRGF0YSBpcyBub3QgYW4gb2JqZWN0IC0tIHRoaXMgY2FuIGhhcHBlbiBpZiBhblxuICAgICAgICAgICAgLy8gYXJyYXkgaXRlbSBoYXMganVzdCBiZWVuIGFkZGVkLCBidXQgbm90IHBvcHVsYXRlZCB3aXRoIGRhdGEgeWV0XG4gICAgICAgICAgICBnZXQoZm9ybURhdGEsIFtwcm9wZXJ0eV0pLCBfcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcGF0aFNjaGVtYTtcbn1cbi8qKiBHZW5lcmF0ZXMgYW4gYFBhdGhTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGBzY2hlbWFgLCByZWN1cnNpdmVseVxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBgUGF0aFNjaGVtYWAgaXMgZGVzaXJlZFxuICogQHBhcmFtIFtuYW1lPScnXSAtIFRoZSBiYXNlIG5hbWUgZm9yIHRoZSBzY2hlbWFcbiAqIEBwYXJhbSBbcm9vdFNjaGVtYV0gLSBUaGUgcm9vdCBzY2hlbWEsIHVzZWQgdG8gcHJpbWFyaWx5IHRvIGxvb2sgdXAgYCRyZWZgc1xuICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBgUGF0aFNjaGVtYWAgb2JqZWN0IGZvciB0aGUgYHNjaGVtYWBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdG9QYXRoU2NoZW1hKHZhbGlkYXRvciwgc2NoZW1hLCBuYW1lID0gJycsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIHJldHVybiB0b1BhdGhTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIHNjaGVtYSwgbmFtZSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIHVuZGVmaW5lZCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dG9QYXRoU2NoZW1hLmpzLm1hcCIsImltcG9ydCBkZWVwRXF1YWxzIGZyb20gJy4vZGVlcEVxdWFscyc7XG5pbXBvcnQgeyBnZXREZWZhdWx0Rm9ybVN0YXRlLCBnZXREaXNwbGF5TGFiZWwsIGdldENsb3Nlc3RNYXRjaGluZ09wdGlvbiwgZ2V0Rmlyc3RNYXRjaGluZ09wdGlvbiwgZ2V0TWF0Y2hpbmdPcHRpb24sIGlzRmlsZXNBcnJheSwgaXNNdWx0aVNlbGVjdCwgaXNTZWxlY3QsIG1lcmdlVmFsaWRhdGlvbkRhdGEsIHJldHJpZXZlU2NoZW1hLCBzYW5pdGl6ZURhdGFGb3JOZXdTY2hlbWEsIHRvSWRTY2hlbWEsIHRvUGF0aFNjaGVtYSwgfSBmcm9tICcuL3NjaGVtYSc7XG4vKiogVGhlIGBTY2hlbWFVdGlsc2AgY2xhc3MgcHJvdmlkZXMgYSB3cmFwcGVyIGFyb3VuZCB0aGUgcHVibGljbHkgZXhwb3J0ZWQgQVBJcyBpbiB0aGUgYHV0aWxzL3NjaGVtYWAgZGlyZWN0b3J5IHN1Y2hcbiAqIHRoYXQgb25lIGRvZXMgbm90IGhhdmUgdG8gZXhwbGljaXRseSBwYXNzIHRoZSBgdmFsaWRhdG9yYCwgYHJvb3RTY2hlbWFgLCBgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcmAgb3JcbiAqIGBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZmAgdG8gZWFjaCBtZXRob2QuIFNpbmNlIHRoZXNlIGdlbmVyYWxseSBkbyBub3QgY2hhbmdlIGFjcm9zcyBhIGBGb3JtYCwgdGhpcyBhbGxvd3MgZm9yXG4gKiBwcm92aWRpbmcgYSBzaW1wbGlmaWVkIHNldCBvZiBBUElzIHRvIHRoZSBgQHJqc2YvY29yZWAgY29tcG9uZW50cyBhbmQgdGhlIHZhcmlvdXMgdGhlbWVzIGFzIHdlbGwuIFRoaXMgY2xhc3NcbiAqIGltcGxlbWVudHMgdGhlIGBTY2hlbWFVdGlsc1R5cGVgIGludGVyZmFjZS5cbiAqL1xuY2xhc3MgU2NoZW1hVXRpbHMge1xuICAgIC8qKiBDb25zdHJ1Y3RzIHRoZSBgU2NoZW1hVXRpbHNgIGluc3RhbmNlIHdpdGggdGhlIGdpdmVuIGB2YWxpZGF0b3JgIGFuZCBgcm9vdFNjaGVtYWAgc3RvcmVkIGFzIGluc3RhbmNlIHZhcmlhYmxlc1xuICAgICAqXG4gICAgICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gICAgICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAgICAgKiBAcGFyYW0gZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciAtIENvbmZpZ3VyYXRpb24gZmxhZ3MgdG8gYWxsb3cgdXNlcnMgdG8gb3ZlcnJpZGUgZGVmYXVsdCBmb3JtIHN0YXRlIGJlaGF2aW9yXG4gICAgICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gICAgICovXG4gICAgY29uc3RydWN0b3IodmFsaWRhdG9yLCByb290U2NoZW1hLCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgICAgICB0aGlzLnJvb3RTY2hlbWEgPSByb290U2NoZW1hO1xuICAgICAgICB0aGlzLnZhbGlkYXRvciA9IHZhbGlkYXRvcjtcbiAgICAgICAgdGhpcy5leHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID0gZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcjtcbiAgICAgICAgdGhpcy5leHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZiA9IGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyB0aGUgYFZhbGlkYXRvclR5cGVgIGluIHRoZSBgU2NoZW1hVXRpbHNUeXBlYFxuICAgICAqXG4gICAgICogQHJldHVybnMgLSBUaGUgYFZhbGlkYXRvclR5cGVgXG4gICAgICovXG4gICAgZ2V0VmFsaWRhdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0b3I7XG4gICAgfVxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgZWl0aGVyIHRoZSBgdmFsaWRhdG9yYCBhbmQgYHJvb3RTY2hlbWFgIGRpZmZlciBmcm9tIHRoZSBvbmVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGluc3RhbmNlIG9mXG4gICAgICogdGhlIGBTY2hlbWFVdGlsc1R5cGVgLiBJZiBlaXRoZXIgYHZhbGlkYXRvcmAgb3IgYHJvb3RTY2hlbWFgIGFyZSBmYWxzeSwgdGhlbiByZXR1cm4gZmFsc2UgdG8gcHJldmVudCB0aGUgY3JlYXRpb25cbiAgICAgKiBvZiBhIG5ldyBgU2NoZW1hVXRpbHNUeXBlYCB3aXRoIGluY29tcGxldGUgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgY29tcGFyZWQgYWdhaW5zdCB0aGUgY3VycmVudCBvbmVcbiAgICAgKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IHNjaGVtYSB0aGF0IHdpbGwgYmUgY29tcGFyZWQgYWdhaW5zdCB0aGUgY3VycmVudCBvbmVcbiAgICAgKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3JdIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0LCBpZiBwcm92aWRlZCwgYWxsb3dzIHVzZXJzIHRvIG92ZXJyaWRlIGRlZmF1bHQgZm9ybSBzdGF0ZSBiZWhhdmlvclxuICAgICAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICAgICAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGUgYFNjaGVtYVV0aWxzVHlwZWAgZGlmZmVycyBmcm9tIHRoZSBnaXZlbiBgdmFsaWRhdG9yYCBvciBgcm9vdFNjaGVtYWBcbiAgICAgKi9cbiAgICBkb2VzU2NoZW1hVXRpbHNEaWZmZXIodmFsaWRhdG9yLCByb290U2NoZW1hLCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID0ge30sIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgICAgIGlmICghdmFsaWRhdG9yIHx8ICFyb290U2NoZW1hKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbGlkYXRvciAhPT0gdmFsaWRhdG9yIHx8XG4gICAgICAgICAgICAhZGVlcEVxdWFscyh0aGlzLnJvb3RTY2hlbWEsIHJvb3RTY2hlbWEpIHx8XG4gICAgICAgICAgICAhZGVlcEVxdWFscyh0aGlzLmV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IpIHx8XG4gICAgICAgICAgICB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mICE9PSBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgfVxuICAgIC8qKiBSZXR1cm5zIHRoZSBzdXBlcnNldCBvZiBgZm9ybURhdGFgIHRoYXQgaW5jbHVkZXMgdGhlIGdpdmVuIHNldCB1cGRhdGVkIHRvIGluY2x1ZGUgYW55IG1pc3NpbmcgZmllbGRzIHRoYXQgaGF2ZVxuICAgICAqIGNvbXB1dGVkIHRvIGhhdmUgZGVmYXVsdHMgcHJvdmlkZWQgaW4gdGhlIGBzY2hlbWFgLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBkZWZhdWx0IHN0YXRlIGlzIGRlc2lyZWRcbiAgICAgKiBAcGFyYW0gW2Zvcm1EYXRhXSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIG9udG8gd2hpY2ggdG8gcHJvdmlkZSBhbnkgbWlzc2luZyBkZWZhdWx0c1xuICAgICAqIEBwYXJhbSBbaW5jbHVkZVVuZGVmaW5lZFZhbHVlcz1mYWxzZV0gLSBPcHRpb25hbCBmbGFnLCBpZiB0cnVlLCBjYXVzZSB1bmRlZmluZWQgdmFsdWVzIHRvIGJlIGFkZGVkIGFzIGRlZmF1bHRzLlxuICAgICAqICAgICAgICAgIElmIFwiZXhjbHVkZU9iamVjdENoaWxkcmVuXCIsIHBhc3MgYGluY2x1ZGVVbmRlZmluZWRWYWx1ZXNgIGFzIGZhbHNlIHdoZW4gY29tcHV0aW5nIGRlZmF1bHRzIGZvciBhbnkgbmVzdGVkXG4gICAgICogICAgICAgICAgb2JqZWN0IHByb3BlcnRpZXMuXG4gICAgICogQHJldHVybnMgLSBUaGUgcmVzdWx0aW5nIGBmb3JtRGF0YWAgd2l0aCBhbGwgdGhlIGRlZmF1bHRzIHByb3ZpZGVkXG4gICAgICovXG4gICAgZ2V0RGVmYXVsdEZvcm1TdGF0ZShzY2hlbWEsIGZvcm1EYXRhLCBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGdldERlZmF1bHRGb3JtU3RhdGUodGhpcy52YWxpZGF0b3IsIHNjaGVtYSwgZm9ybURhdGEsIHRoaXMucm9vdFNjaGVtYSwgaW5jbHVkZVVuZGVmaW5lZFZhbHVlcywgdGhpcy5leHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLCB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0aGUgY29tYmluYXRpb24gb2YgYHNjaGVtYWAgYW5kIGB1aVNjaGVtYWAgcHJvcGVydGllcyBpbmRpY2F0ZXMgdGhhdCB0aGUgbGFiZWwgZm9yIHRoZSBgc2NoZW1hYFxuICAgICAqIHNob3VsZCBiZSBkaXNwbGF5ZWQgaW4gYSBVSS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCB0aGUgZGlzcGxheSBsYWJlbCBmbGFnIGlzIGRlc2lyZWRcbiAgICAgKiBAcGFyYW0gW3VpU2NoZW1hXSAtIFRoZSBVSSBzY2hlbWEgZnJvbSB3aGljaCB0byBkZXJpdmUgcG90ZW50aWFsbHkgZGlzcGxheWFibGUgaW5mb3JtYXRpb25cbiAgICAgKiBAcGFyYW0gW2dsb2JhbE9wdGlvbnM9e31dIC0gVGhlIG9wdGlvbmFsIEdsb2JhbCBVSSBTY2hlbWEgZnJvbSB3aGljaCB0byBnZXQgYW55IGZhbGxiYWNrIGB4eHhgIG9wdGlvbnNcbiAgICAgKiBAcmV0dXJucyAtIFRydWUgaWYgdGhlIGxhYmVsIHNob3VsZCBiZSBkaXNwbGF5ZWQgb3IgZmFsc2UgaWYgaXQgc2hvdWxkIG5vdFxuICAgICAqL1xuICAgIGdldERpc3BsYXlMYWJlbChzY2hlbWEsIHVpU2NoZW1hLCBnbG9iYWxPcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBnZXREaXNwbGF5TGFiZWwodGhpcy52YWxpZGF0b3IsIHNjaGVtYSwgdWlTY2hlbWEsIHRoaXMucm9vdFNjaGVtYSwgZ2xvYmFsT3B0aW9ucywgdGhpcy5leHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgfVxuICAgIC8qKiBEZXRlcm1pbmVzIHdoaWNoIG9mIHRoZSBnaXZlbiBgb3B0aW9uc2AgcHJvdmlkZWQgbW9zdCBjbG9zZWx5IG1hdGNoZXMgdGhlIGBmb3JtRGF0YWAuXG4gICAgICogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG9wdGlvbiB0aGF0IGlzIHZhbGlkIGFuZCBpcyB0aGUgY2xvc2VzdCBtYXRjaCwgb3IgMCBpZiB0aGVyZSBpcyBubyBtYXRjaC5cbiAgICAgKlxuICAgICAqIFRoZSBjbG9zZXN0IG1hdGNoIGlzIGRldGVybWluZWQgdXNpbmcgdGhlIG51bWJlciBvZiBtYXRjaGluZyBwcm9wZXJ0aWVzLCBhbmQgbW9yZSBoZWF2aWx5IGZhdm9ycyBvcHRpb25zIHdpdGhcbiAgICAgKiBtYXRjaGluZyByZWFkT25seSwgZGVmYXVsdCwgb3IgY29uc3QgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZvcm1EYXRhIC0gVGhlIGZvcm0gZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIHNjaGVtYVxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGxpc3Qgb2Ygb3B0aW9ucyB0aGF0IGNhbiBiZSBzZWxlY3RlZCBmcm9tXG4gICAgICogQHBhcmFtIFtzZWxlY3RlZE9wdGlvbl0gLSBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBvcHRpb24sIGRlZmF1bHRlZCB0byAtMSBpZiBub3Qgc3BlY2lmaWVkXG4gICAgICogQHBhcmFtIFtkaXNjcmltaW5hdG9yRmllbGRdIC0gVGhlIG9wdGlvbmFsIG5hbWUgb2YgdGhlIGZpZWxkIHdpdGhpbiB0aGUgb3B0aW9ucyBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdXNlZCB0b1xuICAgICAqICAgICAgICAgIGRldGVybWluZSB3aGljaCBvcHRpb24gaXMgc2VsZWN0ZWRcbiAgICAgKiBAcmV0dXJucyAtIFRoZSBpbmRleCBvZiB0aGUgb3B0aW9uIHRoYXQgaXMgdGhlIGNsb3Nlc3QgbWF0Y2ggdG8gdGhlIGBmb3JtRGF0YWAgb3IgdGhlIGBzZWxlY3RlZE9wdGlvbmAgaWYgbm8gbWF0Y2hcbiAgICAgKi9cbiAgICBnZXRDbG9zZXN0TWF0Y2hpbmdPcHRpb24oZm9ybURhdGEsIG9wdGlvbnMsIHNlbGVjdGVkT3B0aW9uLCBkaXNjcmltaW5hdG9yRmllbGQpIHtcbiAgICAgICAgcmV0dXJuIGdldENsb3Nlc3RNYXRjaGluZ09wdGlvbih0aGlzLnZhbGlkYXRvciwgdGhpcy5yb290U2NoZW1hLCBmb3JtRGF0YSwgb3B0aW9ucywgc2VsZWN0ZWRPcHRpb24sIGRpc2NyaW1pbmF0b3JGaWVsZCwgdGhpcy5leHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgfVxuICAgIC8qKiBHaXZlbiB0aGUgYGZvcm1EYXRhYCBhbmQgbGlzdCBvZiBgb3B0aW9uc2AsIGF0dGVtcHRzIHRvIGZpbmQgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvcHRpb24gdGhhdCBtYXRjaGVzIHRoZSBkYXRhLlxuICAgICAqIEFsd2F5cyByZXR1cm5zIHRoZSBmaXJzdCBvcHRpb24gaWYgdGhlcmUgaXMgbm90aGluZyB0aGF0IG1hdGNoZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB1c2VkIHRvIGZpZ3VyZSBvdXQgYSBtYXRjaFxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGxpc3Qgb2Ygb3B0aW9ucyB0byBmaW5kIGEgbWF0Y2hpbmcgb3B0aW9ucyBmcm9tXG4gICAgICogQHBhcmFtIFtkaXNjcmltaW5hdG9yRmllbGRdIC0gVGhlIG9wdGlvbmFsIG5hbWUgb2YgdGhlIGZpZWxkIHdpdGhpbiB0aGUgb3B0aW9ucyBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdXNlZCB0b1xuICAgICAqICAgICAgICAgIGRldGVybWluZSB3aGljaCBvcHRpb24gaXMgc2VsZWN0ZWRcbiAgICAgKiBAcmV0dXJucyAtIFRoZSBmaXJzdGluZGV4IG9mIHRoZSBtYXRjaGVkIG9wdGlvbiBvciAwIGlmIG5vbmUgaXMgYXZhaWxhYmxlXG4gICAgICovXG4gICAgZ2V0Rmlyc3RNYXRjaGluZ09wdGlvbihmb3JtRGF0YSwgb3B0aW9ucywgZGlzY3JpbWluYXRvckZpZWxkKSB7XG4gICAgICAgIHJldHVybiBnZXRGaXJzdE1hdGNoaW5nT3B0aW9uKHRoaXMudmFsaWRhdG9yLCBmb3JtRGF0YSwgb3B0aW9ucywgdGhpcy5yb290U2NoZW1hLCBkaXNjcmltaW5hdG9yRmllbGQpO1xuICAgIH1cbiAgICAvKiogR2l2ZW4gdGhlIGBmb3JtRGF0YWAgYW5kIGxpc3Qgb2YgYG9wdGlvbnNgLCBhdHRlbXB0cyB0byBmaW5kIHRoZSBpbmRleCBvZiB0aGUgb3B0aW9uIHRoYXQgYmVzdCBtYXRjaGVzIHRoZSBkYXRhLlxuICAgICAqIERlcHJlY2F0ZWQsIHVzZSBgZ2V0Rmlyc3RNYXRjaGluZ09wdGlvbigpYCBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZvcm1EYXRhIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgb250byB3aGljaCB0byBwcm92aWRlIGFueSBtaXNzaW5nIGRlZmF1bHRzXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgbGlzdCBvZiBvcHRpb25zIHRvIGZpbmQgYSBtYXRjaGluZyBvcHRpb25zIGZyb21cbiAgICAgKiBAcGFyYW0gW2Rpc2NyaW1pbmF0b3JGaWVsZF0gLSBUaGUgb3B0aW9uYWwgbmFtZSBvZiB0aGUgZmllbGQgd2l0aGluIHRoZSBvcHRpb25zIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyB1c2VkIHRvXG4gICAgICogICAgICAgICAgZGV0ZXJtaW5lIHdoaWNoIG9wdGlvbiBpcyBzZWxlY3RlZFxuICAgICAqIEByZXR1cm5zIC0gVGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIG9wdGlvbiBvciAwIGlmIG5vbmUgaXMgYXZhaWxhYmxlXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBnZXRNYXRjaGluZ09wdGlvbihmb3JtRGF0YSwgb3B0aW9ucywgZGlzY3JpbWluYXRvckZpZWxkKSB7XG4gICAgICAgIHJldHVybiBnZXRNYXRjaGluZ09wdGlvbih0aGlzLnZhbGlkYXRvciwgZm9ybURhdGEsIG9wdGlvbnMsIHRoaXMucm9vdFNjaGVtYSwgZGlzY3JpbWluYXRvckZpZWxkKTtcbiAgICB9XG4gICAgLyoqIENoZWNrcyB0byBzZWUgaWYgdGhlIGBzY2hlbWFgIGFuZCBgdWlTY2hlbWFgIGNvbWJpbmF0aW9uIHJlcHJlc2VudHMgYW4gYXJyYXkgb2YgZmlsZXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCBjaGVjayBmb3IgYXJyYXkgb2YgZmlsZXMgZmxhZyBpcyBkZXNpcmVkXG4gICAgICogQHBhcmFtIFt1aVNjaGVtYV0gLSBUaGUgVUkgc2NoZW1hIGZyb20gd2hpY2ggdG8gY2hlY2sgdGhlIHdpZGdldFxuICAgICAqIEByZXR1cm5zIC0gVHJ1ZSBpZiBzY2hlbWEvdWlTY2hlbWEgY29udGFpbnMgYW4gYXJyYXkgb2YgZmlsZXMsIG90aGVyd2lzZSBmYWxzZVxuICAgICAqL1xuICAgIGlzRmlsZXNBcnJheShzY2hlbWEsIHVpU2NoZW1hKSB7XG4gICAgICAgIHJldHVybiBpc0ZpbGVzQXJyYXkodGhpcy52YWxpZGF0b3IsIHNjaGVtYSwgdWlTY2hlbWEsIHRoaXMucm9vdFNjaGVtYSwgdGhpcy5leHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgfVxuICAgIC8qKiBDaGVja3MgdG8gc2VlIGlmIHRoZSBgc2NoZW1hYCBjb21iaW5hdGlvbiByZXByZXNlbnRzIGEgbXVsdGktc2VsZWN0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggY2hlY2sgZm9yIGEgbXVsdGktc2VsZWN0IGZsYWcgaXMgZGVzaXJlZFxuICAgICAqIEByZXR1cm5zIC0gVHJ1ZSBpZiBzY2hlbWEgY29udGFpbnMgYSBtdWx0aS1zZWxlY3QsIG90aGVyd2lzZSBmYWxzZVxuICAgICAqL1xuICAgIGlzTXVsdGlTZWxlY3Qoc2NoZW1hKSB7XG4gICAgICAgIHJldHVybiBpc011bHRpU2VsZWN0KHRoaXMudmFsaWRhdG9yLCBzY2hlbWEsIHRoaXMucm9vdFNjaGVtYSwgdGhpcy5leHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgfVxuICAgIC8qKiBDaGVja3MgdG8gc2VlIGlmIHRoZSBgc2NoZW1hYCBjb21iaW5hdGlvbiByZXByZXNlbnRzIGEgc2VsZWN0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggY2hlY2sgZm9yIGEgc2VsZWN0IGZsYWcgaXMgZGVzaXJlZFxuICAgICAqIEByZXR1cm5zIC0gVHJ1ZSBpZiBzY2hlbWEgY29udGFpbnMgYSBzZWxlY3QsIG90aGVyd2lzZSBmYWxzZVxuICAgICAqL1xuICAgIGlzU2VsZWN0KHNjaGVtYSkge1xuICAgICAgICByZXR1cm4gaXNTZWxlY3QodGhpcy52YWxpZGF0b3IsIHNjaGVtYSwgdGhpcy5yb290U2NoZW1hLCB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG4gICAgLyoqIE1lcmdlcyB0aGUgZXJyb3JzIGluIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIGludG8gdGhlIGV4aXN0aW5nIGB2YWxpZGF0aW9uRGF0YWAgYnkgY29tYmluaW5nIHRoZSBoaWVyYXJjaGllcyBpblxuICAgICAqIHRoZSB0d28gYEVycm9yU2NoZW1hYHMgYW5kIHRoZW4gYXBwZW5kaW5nIHRoZSBlcnJvciBsaXN0IGZyb20gdGhlIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIG9idGFpbmVkIGJ5IGNhbGxpbmdcbiAgICAgKiBgZ2V0VmFsaWRhdG9yKCkudG9FcnJvckxpc3QoKWAgb250byB0aGUgYGVycm9yc2AgaW4gdGhlIGB2YWxpZGF0aW9uRGF0YWAuIElmIG5vIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIGlzIHBhc3NlZCxcbiAgICAgKiB0aGVuIGB2YWxpZGF0aW9uRGF0YWAgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbkRhdGEgLSBUaGUgY3VycmVudCBgVmFsaWRhdGlvbkRhdGFgIGludG8gd2hpY2ggdG8gbWVyZ2UgdGhlIGFkZGl0aW9uYWwgZXJyb3JzXG4gICAgICogQHBhcmFtIFthZGRpdGlvbmFsRXJyb3JTY2hlbWFdIC0gVGhlIGFkZGl0aW9uYWwgc2V0IG9mIGVycm9yc1xuICAgICAqIEByZXR1cm5zIC0gVGhlIGB2YWxpZGF0aW9uRGF0YWAgd2l0aCB0aGUgYWRkaXRpb25hbCBlcnJvcnMgZnJvbSBgYWRkaXRpb25hbEVycm9yU2NoZW1hYCBtZXJnZWQgaW50byBpdCwgaWYgcHJvdmlkZWQuXG4gICAgICogQGRlcHJlY2F0ZWQgLSBVc2UgdGhlIGB2YWxpZGF0aW9uRGF0YU1lcmdlKClgIGZ1bmN0aW9uIGV4cG9ydGVkIGZyb20gYEByanNmL3V0aWxzYCBpbnN0ZWFkLiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmVcbiAgICAgKiAgICAgICAgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLlxuICAgICAqL1xuICAgIG1lcmdlVmFsaWRhdGlvbkRhdGEodmFsaWRhdGlvbkRhdGEsIGFkZGl0aW9uYWxFcnJvclNjaGVtYSkge1xuICAgICAgICByZXR1cm4gbWVyZ2VWYWxpZGF0aW9uRGF0YSh0aGlzLnZhbGlkYXRvciwgdmFsaWRhdGlvbkRhdGEsIGFkZGl0aW9uYWxFcnJvclNjaGVtYSk7XG4gICAgfVxuICAgIC8qKiBSZXRyaWV2ZXMgYW4gZXhwYW5kZWQgc2NoZW1hIHRoYXQgaGFzIGhhZCBhbGwgb2YgaXRzIGNvbmRpdGlvbnMsIGFkZGl0aW9uYWwgcHJvcGVydGllcywgcmVmZXJlbmNlcyBhbmRcbiAgICAgKiBkZXBlbmRlbmNpZXMgcmVzb2x2ZWQgYW5kIG1lcmdlZCBpbnRvIHRoZSBgc2NoZW1hYCBnaXZlbiBhIGByYXdGb3JtRGF0YWAgdGhhdCBpcyB1c2VkIHRvIGRvIHRoZSBwb3RlbnRpYWxseVxuICAgICAqIHJlY3Vyc2l2ZSByZXNvbHV0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHJldHJpZXZpbmcgYSBzY2hlbWEgaXMgZGVzaXJlZFxuICAgICAqIEBwYXJhbSBbcmF3Rm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAgICAgKiBAcmV0dXJucyAtIFRoZSBzY2hlbWEgaGF2aW5nIGl0cyBjb25kaXRpb25zLCBhZGRpdGlvbmFsIHByb3BlcnRpZXMsIHJlZmVyZW5jZXMgYW5kIGRlcGVuZGVuY2llcyByZXNvbHZlZFxuICAgICAqL1xuICAgIHJldHJpZXZlU2NoZW1hKHNjaGVtYSwgcmF3Rm9ybURhdGEpIHtcbiAgICAgICAgcmV0dXJuIHJldHJpZXZlU2NoZW1hKHRoaXMudmFsaWRhdG9yLCBzY2hlbWEsIHRoaXMucm9vdFNjaGVtYSwgcmF3Rm9ybURhdGEsIHRoaXMuZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgIH1cbiAgICAvKiogU2FuaXRpemUgdGhlIGBkYXRhYCBhc3NvY2lhdGVkIHdpdGggdGhlIGBvbGRTY2hlbWFgIHNvIGl0IGlzIGNvbnNpZGVyZWQgYXBwcm9wcmlhdGUgZm9yIHRoZSBgbmV3U2NoZW1hYC4gSWYgdGhlXG4gICAgICogbmV3IHNjaGVtYSBkb2VzIG5vdCBjb250YWluIGFueSBwcm9wZXJ0aWVzLCB0aGVuIGB1bmRlZmluZWRgIGlzIHJldHVybmVkIHRvIGNsZWFyIGFsbCB0aGUgZm9ybSBkYXRhLiBEdWUgdG8gdGhlXG4gICAgICogbmF0dXJlIG9mIHNjaGVtYXMsIHRoaXMgc2FuaXRpemF0aW9uIGhhcHBlbnMgcmVjdXJzaXZlbHkgZm9yIG5lc3RlZCBvYmplY3RzIG9mIGRhdGEuIEFsc28sIGFueSBwcm9wZXJ0aWVzIGluIHRoZVxuICAgICAqIG9sZCBzY2hlbWFzIHRoYXQgYXJlIG5vbi1leGlzdGVudCBpbiB0aGUgbmV3IHNjaGVtYSBhcmUgc2V0IHRvIGB1bmRlZmluZWRgLlxuICAgICAqXG4gICAgICogQHBhcmFtIFtuZXdTY2hlbWFdIC0gVGhlIG5ldyBzY2hlbWEgZm9yIHdoaWNoIHRoZSBkYXRhIGlzIGJlaW5nIHNhbml0aXplZFxuICAgICAqIEBwYXJhbSBbb2xkU2NoZW1hXSAtIFRoZSBvbGQgc2NoZW1hIGZyb20gd2hpY2ggdGhlIGRhdGEgb3JpZ2luYXRlZFxuICAgICAqIEBwYXJhbSBbZGF0YT17fV0gLSBUaGUgZm9ybSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2NoZW1hLCBkZWZhdWx0aW5nIHRvIGFuIGVtcHR5IG9iamVjdCB3aGVuIHVuZGVmaW5lZFxuICAgICAqIEByZXR1cm5zIC0gVGhlIG5ldyBmb3JtIGRhdGEsIHdpdGggYWxsIHRoZSBmaWVsZHMgdW5pcXVlbHkgYXNzb2NpYXRlZCB3aXRoIHRoZSBvbGQgc2NoZW1hIHNldFxuICAgICAqICAgICAgdG8gYHVuZGVmaW5lZGAuIFdpbGwgcmV0dXJuIGB1bmRlZmluZWRgIGlmIHRoZSBuZXcgc2NoZW1hIGlzIG5vdCBhbiBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzLlxuICAgICAqL1xuICAgIHNhbml0aXplRGF0YUZvck5ld1NjaGVtYShuZXdTY2hlbWEsIG9sZFNjaGVtYSwgZGF0YSkge1xuICAgICAgICByZXR1cm4gc2FuaXRpemVEYXRhRm9yTmV3U2NoZW1hKHRoaXMudmFsaWRhdG9yLCB0aGlzLnJvb3RTY2hlbWEsIG5ld1NjaGVtYSwgb2xkU2NoZW1hLCBkYXRhLCB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG4gICAgLyoqIEdlbmVyYXRlcyBhbiBgSWRTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGBzY2hlbWFgLCByZWN1cnNpdmVseVxuICAgICAqXG4gICAgICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBkaXNwbGF5IGxhYmVsIGZsYWcgaXMgZGVzaXJlZFxuICAgICAqIEBwYXJhbSBbaWRdIC0gVGhlIGJhc2UgaWQgZm9yIHRoZSBzY2hlbWFcbiAgICAgKiBAcGFyYW0gW2Zvcm1EYXRhXSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIG9udG8gd2hpY2ggdG8gcHJvdmlkZSBhbnkgbWlzc2luZyBkZWZhdWx0c1xuICAgICAqIEBwYXJhbSBbaWRQcmVmaXg9J3Jvb3QnXSAtIFRoZSBwcmVmaXggdG8gdXNlIGZvciB0aGUgaWRcbiAgICAgKiBAcGFyYW0gW2lkU2VwYXJhdG9yPSdfJ10gLSBUaGUgc2VwYXJhdG9yIHRvIHVzZSBmb3IgdGhlIHBhdGggc2VnbWVudHMgaW4gdGhlIGlkXG4gICAgICogQHJldHVybnMgLSBUaGUgYElkU2NoZW1hYCBvYmplY3QgZm9yIHRoZSBgc2NoZW1hYFxuICAgICAqL1xuICAgIHRvSWRTY2hlbWEoc2NoZW1hLCBpZCwgZm9ybURhdGEsIGlkUHJlZml4ID0gJ3Jvb3QnLCBpZFNlcGFyYXRvciA9ICdfJykge1xuICAgICAgICByZXR1cm4gdG9JZFNjaGVtYSh0aGlzLnZhbGlkYXRvciwgc2NoZW1hLCBpZCwgdGhpcy5yb290U2NoZW1hLCBmb3JtRGF0YSwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yLCB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG4gICAgLyoqIEdlbmVyYXRlcyBhbiBgUGF0aFNjaGVtYWAgb2JqZWN0IGZvciB0aGUgYHNjaGVtYWAsIHJlY3Vyc2l2ZWx5XG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIGRpc3BsYXkgbGFiZWwgZmxhZyBpcyBkZXNpcmVkXG4gICAgICogQHBhcmFtIFtuYW1lXSAtIFRoZSBiYXNlIG5hbWUgZm9yIHRoZSBzY2hlbWFcbiAgICAgKiBAcGFyYW0gW2Zvcm1EYXRhXSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIG9udG8gd2hpY2ggdG8gcHJvdmlkZSBhbnkgbWlzc2luZyBkZWZhdWx0c1xuICAgICAqIEByZXR1cm5zIC0gVGhlIGBQYXRoU2NoZW1hYCBvYmplY3QgZm9yIHRoZSBgc2NoZW1hYFxuICAgICAqL1xuICAgIHRvUGF0aFNjaGVtYShzY2hlbWEsIG5hbWUsIGZvcm1EYXRhKSB7XG4gICAgICAgIHJldHVybiB0b1BhdGhTY2hlbWEodGhpcy52YWxpZGF0b3IsIHNjaGVtYSwgbmFtZSwgdGhpcy5yb290U2NoZW1hLCBmb3JtRGF0YSwgdGhpcy5leHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgfVxufVxuLyoqIENyZWF0ZXMgYSBgU2NoZW1hVXRpbHNUeXBlYCBpbnRlcmZhY2UgdGhhdCBpcyBiYXNlZCBhcm91bmQgdGhlIGdpdmVuIGB2YWxpZGF0b3JgIGFuZCBgcm9vdFNjaGVtYWAgcGFyYW1ldGVycy4gVGhlXG4gKiByZXN1bHRpbmcgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uIHdpbGwgZm9yd2FyZCB0aGUgYHZhbGlkYXRvcmAgYW5kIGByb290U2NoZW1hYCB0byBhbGwgdGhlIHdyYXBwZWQgQVBJcy5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3JdIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0LCBpZiBwcm92aWRlZCwgYWxsb3dzIHVzZXJzIHRvIG92ZXJyaWRlIGRlZmF1bHQgZm9ybSBzdGF0ZSBiZWhhdmlvclxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIEFuIGltcGxlbWVudGF0aW9uIG9mIGEgYFNjaGVtYVV0aWxzVHlwZWAgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVNjaGVtYVV0aWxzKHZhbGlkYXRvciwgcm9vdFNjaGVtYSwgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9IHt9LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIHJldHVybiBuZXcgU2NoZW1hVXRpbHModmFsaWRhdG9yLCByb290U2NoZW1hLCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcmVhdGVTY2hlbWFVdGlscy5qcy5tYXAiLCIvKiogR2l2ZW4gdGhlIGBGaWxlUmVhZGVyLnJlYWRBc0RhdGFVUkwoKWAgYmFzZWQgYGRhdGFVUklgIGV4dHJhY3RzIHRoYXQgZGF0YSBpbnRvIGFuIGFjdHVhbCBCbG9iIGFsb25nIHdpdGggdGhlIG5hbWVcbiAqIG9mIHRoYXQgQmxvYiBpZiBwcm92aWRlZCBpbiB0aGUgVVJMLiBJZiBubyBuYW1lIGlzIHByb3ZpZGVkLCB0aGVuIHRoZSBuYW1lIGZhbGxzIGJhY2sgdG8gYHVua25vd25gLlxuICpcbiAqIEBwYXJhbSBkYXRhVVJJIC0gVGhlIGBEYXRhVXJsYCBwb3RlbnRpYWxseSBjb250YWluaW5nIG5hbWUgYW5kIHJhdyBkYXRhIHRvIGJlIGNvbnZlcnRlZCB0byBhIEJsb2JcbiAqIEByZXR1cm5zIC0gYW4gb2JqZWN0IGNvbnRhaW5pbmcgYSBCbG9iIGFuZCBpdHMgbmFtZSwgZXh0cmFjdGVkIGZyb20gdGhlIFVSSVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkYXRhVVJJdG9CbG9iKGRhdGFVUklMaWtlKSB7XG4gICAgdmFyIF9hO1xuICAgIC8vIGNoZWNrIGlmIGlzIGRhdGFVUklcbiAgICBpZiAoZGF0YVVSSUxpa2UuaW5kZXhPZignZGF0YTonKSA9PT0gLTEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaWxlIGlzIGludmFsaWQ6IFVSSSBtdXN0IGJlIGEgZGF0YVVSSScpO1xuICAgIH1cbiAgICBjb25zdCBkYXRhVVJJID0gZGF0YVVSSUxpa2Uuc2xpY2UoNSk7XG4gICAgLy8gc3BsaXQgdGhlIGRhdGFVUkkgaW50byBtZWRpYSBhbmQgYmFzZTY0LCB3aXRoIHRoZSBiYXNlNjQgc2lnbmF0dXJlXG4gICAgY29uc3Qgc3BsaXR0ZWQgPSBkYXRhVVJJLnNwbGl0KCc7YmFzZTY0LCcpO1xuICAgIC8vIGlmIHRoZSBiYXNlNjQgc2lnbmF0dXJlIGlzIG5vdCBwcmVzZW50LCB0aGUgbGF0dGVyIHBhcnQgd2lsbCBiZWNvbWUgZW1wdHlcbiAgICBpZiAoc3BsaXR0ZWQubGVuZ3RoICE9PSAyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmlsZSBpcyBpbnZhbGlkOiBkYXRhVVJJIG11c3QgYmUgYmFzZTY0Jyk7XG4gICAgfVxuICAgIC8vIGV4dHJhY3QgdGhlIG1pbWUgdHlwZSwgbWVkaWEgcGFyYW1ldGVycyBpbmNsdWRpbmcgdGhlIG5hbWUsIGFuZCB0aGUgYmFzZTY0IHN0cmluZ1xuICAgIGNvbnN0IFttZWRpYSwgYmFzZTY0XSA9IHNwbGl0dGVkO1xuICAgIGNvbnN0IFttaW1lLCAuLi5tZWRpYXBhcmFtc10gPSBtZWRpYS5zcGxpdCgnOycpO1xuICAgIGNvbnN0IHR5cGUgPSBtaW1lIHx8ICcnO1xuICAgIC8vIGV4dHJhY3QgdGhlIG5hbWUgZnJvbSB0aGUgcGFyYW1ldGVyc1xuICAgIGNvbnN0IG5hbWUgPSBkZWNvZGVVUkkoXG4gICAgLy8gcGFyc2UgdGhlIHBhcmFtZXRlcnMgaW50byBrZXktdmFsdWUgcGFpcnMsIGZpbmQgYSBrZXksIGFuZCBleHRyYWN0IGEgdmFsdWVcbiAgICAvLyBpZiBubyBrZXkgaXMgZm91bmQsIHRoZW4gdGhlIG5hbWUgaXMgdW5rbm93blxuICAgICgoX2EgPSBtZWRpYXBhcmFtcy5tYXAoKHBhcmFtKSA9PiBwYXJhbS5zcGxpdCgnPScpKS5maW5kKChba2V5XSkgPT4ga2V5ID09PSAnbmFtZScpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMV0pIHx8ICd1bmtub3duJyk7XG4gICAgLy8gQnVpbHQgdGhlIFVpbnQ4QXJyYXkgQmxvYiBwYXJhbWV0ZXIgZnJvbSB0aGUgYmFzZTY0IHN0cmluZy5cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBiaW5hcnkgPSBhdG9iKGJhc2U2NCk7XG4gICAgICAgIGNvbnN0IGFycmF5ID0gbmV3IEFycmF5KGJpbmFyeS5sZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJpbmFyeS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYXJyYXlbaV0gPSBiaW5hcnkuY2hhckNvZGVBdChpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDcmVhdGUgdGhlIGJsb2Igb2JqZWN0XG4gICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgd2luZG93LkJsb2IoW25ldyBVaW50OEFycmF5KGFycmF5KV0sIHsgdHlwZSB9KTtcbiAgICAgICAgcmV0dXJuIHsgYmxvYiwgbmFtZSB9O1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaWxlIGlzIGludmFsaWQ6ICcgKyBlcnJvci5tZXNzYWdlKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhVVJJdG9CbG9iLmpzLm1hcCIsIi8qKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBgbnVtYCB0aGF0IGlzIHBhZGRlZCB3aXRoIGxlYWRpbmcgXCIwXCJzIGlmIG5lY2Vzc2FyeVxuICpcbiAqIEBwYXJhbSBudW0gLSBUaGUgbnVtYmVyIHRvIHBhZFxuICogQHBhcmFtIHdpZHRoIC0gVGhlIHdpZHRoIG9mIHRoZSBzdHJpbmcgYXQgd2hpY2ggbm8gbGVhZCBwYWRkaW5nIGlzIG5lY2Vzc2FyeVxuICogQHJldHVybnMgLSBUaGUgbnVtYmVyIGNvbnZlcnRlZCB0byBhIHN0cmluZyB3aXRoIGxlYWRpbmcgemVybyBwYWRkaW5nIGlmIHRoZSBudW1iZXIgb2YgZGlnaXRzIGlzIGxlc3MgdGhhbiBgd2lkdGhgXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhZChudW0sIHdpZHRoKSB7XG4gICAgbGV0IHMgPSBTdHJpbmcobnVtKTtcbiAgICB3aGlsZSAocy5sZW5ndGggPCB3aWR0aCkge1xuICAgICAgICBzID0gJzAnICsgcztcbiAgICB9XG4gICAgcmV0dXJuIHM7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYWQuanMubWFwIiwiaW1wb3J0IHBhZCBmcm9tICcuL3BhZCc7XG4vKiogUmV0dXJucyBhIGxpc3Qgb2Ygb3B0aW9ucyBmb3IgYSBkYXRlIHJhbmdlIGJldHdlZW4gYHN0YXJ0YCBhbmQgYHN0b3BgLiBJZiB0aGUgc3RhcnQgZGF0ZSBpcyBncmVhdGVyIHRoYW4gdGhlIGVuZFxuICogZGF0ZSwgdGhlbiB0aGUgZGF0ZSByYW5nZSBpcyByZXZlcnNlZC4gSWYgYHN0YXJ0YCBhbmQgYHN0b3BgIGFyZSBuZWdhdGl2ZSBudW1iZXJzIChvciB6ZXJvKSwgdGhlbiB0aGV5IHdpbGwgYmVcbiAqIHRyZWF0ZWQgYXMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgeWVhci5cbiAqXG4gKiBAcGFyYW0gc3RhcnQgLSBUaGUgc3RhcnRpbmcgcG9pbnQgb2YgdGhlIGRhdGUgcmFuZ2VcbiAqIEBwYXJhbSBzdG9wIC0gVGhlIGVuZGluZyBwb2ludCBvZiB0aGUgZGF0ZSByYW5nZVxuICogQHJldHVybnMgLSBUaGUgbGlzdCBvZiBFbnVtT3B0aW9uc1R5cGUgZm9yIHRoZSBkYXRlIHJhbmdlIGJldHdlZW4gYHN0YXJ0YCBhbmQgYHN0b3BgXG4gKiBAdGhyb3dzIC0gRXJyb3Igd2hlbiBgc3RhcnRgIGFuZCBgc3RvcGAgYXJlbid0IGJvdGggPD0gMCBvciA+IDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGF0ZVJhbmdlT3B0aW9ucyhzdGFydCwgc3RvcCkge1xuICAgIGlmIChzdGFydCA8PSAwICYmIHN0b3AgPD0gMCkge1xuICAgICAgICBzdGFydCA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSArIHN0YXJ0O1xuICAgICAgICBzdG9wID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpICsgc3RvcDtcbiAgICB9XG4gICAgZWxzZSBpZiAoc3RhcnQgPCAwIHx8IHN0b3AgPCAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQm90aCBzdGFydCAoJHtzdGFydH0pIGFuZCBzdG9wICgke3N0b3B9KSBtdXN0IGJvdGggYmUgPD0gMCBvciA+IDAsIGdvdCBvbmUgb2YgZWFjaGApO1xuICAgIH1cbiAgICBpZiAoc3RhcnQgPiBzdG9wKSB7XG4gICAgICAgIHJldHVybiBkYXRlUmFuZ2VPcHRpb25zKHN0b3AsIHN0YXJ0KS5yZXZlcnNlKCk7XG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbnMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gc3RvcDsgaSsrKSB7XG4gICAgICAgIG9wdGlvbnMucHVzaCh7IHZhbHVlOiBpLCBsYWJlbDogcGFkKGksIDIpIH0pO1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9ucztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGVSYW5nZU9wdGlvbnMuanMubWFwIiwiLyoqIFBvdGVudGlhbGx5IHN1YnN0aXR1dGVzIGFsbCByZXBsYWNlYWJsZSBwYXJhbWV0ZXJzIHdpdGggdGhlIGFzc29jaWF0ZWQgdmFsdWUocykgZnJvbSB0aGUgYHBhcmFtc2AgaWYgYXZhaWxhYmxlLiBXaGVuXG4gKiBhIGBwYXJhbXNgIGFycmF5IGlzIHByb3ZpZGVkLCBlYWNoIHZhbHVlIGluIHRoZSBhcnJheSBpcyB1c2VkIHRvIHJlcGxhY2UgYW55IG9mIHRoZSByZXBsYWNlYWJsZSBwYXJhbWV0ZXJzIGluIHRoZVxuICogYGlucHV0U3RyaW5nYCB1c2luZyB0aGUgYCUxYCwgYCUyYCwgZXRjLiByZXBsYWNlbWVudCBzcGVjaWZpZXJzLlxuICpcbiAqIEBwYXJhbSBpbnB1dFN0cmluZyAtIFRoZSBzdHJpbmcgd2hpY2ggd2lsbCBiZSBwb3RlbnRpYWxseSB1cGRhdGVkIHdpdGggcmVwbGFjZW1lbnQgcGFyYW1ldGVyc1xuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBvcHRpb25hbCBsaXN0IG9mIHJlcGxhY2VhYmxlIHBhcmFtZXRlciB2YWx1ZXMgdG8gc3Vic3RpdHV0ZSBpbnRvIHRoZSBlbmdsaXNoIHN0cmluZ1xuICogQHJldHVybnMgLSBUaGUgdXBkYXRlZCBzdHJpbmcgd2l0aCBhbnkgcmVwbGFjZW1lbnQgc3BlY2lmaWVycyByZXBsYWNlZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZXBsYWNlU3RyaW5nUGFyYW1ldGVycyhpbnB1dFN0cmluZywgcGFyYW1zKSB7XG4gICAgbGV0IG91dHB1dCA9IGlucHV0U3RyaW5nO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHBhcmFtcykpIHtcbiAgICAgICAgY29uc3QgcGFydHMgPSBvdXRwdXQuc3BsaXQoLyglXFxkKS8pO1xuICAgICAgICBwYXJhbXMuZm9yRWFjaCgocGFyYW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJ0SW5kZXggPSBwYXJ0cy5maW5kSW5kZXgoKHBhcnQpID0+IHBhcnQgPT09IGAlJHtpbmRleCArIDF9YCk7XG4gICAgICAgICAgICBpZiAocGFydEluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICBwYXJ0c1twYXJ0SW5kZXhdID0gcGFyYW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBvdXRwdXQgPSBwYXJ0cy5qb2luKCcnKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlcGxhY2VTdHJpbmdQYXJhbWV0ZXJzLmpzLm1hcCIsImltcG9ydCByZXBsYWNlU3RyaW5nUGFyYW1ldGVycyBmcm9tICcuL3JlcGxhY2VTdHJpbmdQYXJhbWV0ZXJzJztcbi8qKiBUcmFuc2xhdGVzIGEgYFRyYW5zbGF0YWJsZVN0cmluZ2AgdmFsdWUgYHN0cmluZ1RvVHJhbnNsYXRlYCBpbnRvIGVuZ2xpc2guIFdoZW4gYSBgcGFyYW1zYCBhcnJheSBpcyBwcm92aWRlZCwgZWFjaFxuICogdmFsdWUgaW4gdGhlIGFycmF5IGlzIHVzZWQgdG8gcmVwbGFjZSBhbnkgb2YgdGhlIHJlcGxhY2VhYmxlIHBhcmFtZXRlcnMgaW4gdGhlIGBzdHJpbmdUb1RyYW5zbGF0ZWAgdXNpbmcgdGhlIGAlMWAsXG4gKiBgJTJgLCBldGMuIHJlcGxhY2VtZW50IHNwZWNpZmllcnMuXG4gKlxuICogQHBhcmFtIHN0cmluZ1RvVHJhbnNsYXRlIC0gVGhlIGBUcmFuc2xhdGFibGVTdHJpbmdgIHZhbHVlIHRvIGNvbnZlcnQgdG8gZW5nbGlzaFxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBvcHRpb25hbCBsaXN0IG9mIHJlcGxhY2VhYmxlIHBhcmFtZXRlciB2YWx1ZXMgdG8gc3Vic3RpdHV0ZSBpbnRvIHRoZSBlbmdsaXNoIHN0cmluZ1xuICogQHJldHVybnMgLSBUaGUgYHN0cmluZ1RvVHJhbnNsYXRlYCBpdHNlbGYgd2l0aCBhbnkgcmVwbGFjZWFibGUgcGFyYW1ldGVyIHZhbHVlcyBzdWJzdGl0dXRlZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbmdsaXNoU3RyaW5nVHJhbnNsYXRvcihzdHJpbmdUb1RyYW5zbGF0ZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIHJlcGxhY2VTdHJpbmdQYXJhbWV0ZXJzKHN0cmluZ1RvVHJhbnNsYXRlLCBwYXJhbXMpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZW5nbGlzaFN0cmluZ1RyYW5zbGF0b3IuanMubWFwIiwiLyoqIFJldHVybnMgdGhlIHZhbHVlKHMpIGZyb20gYGFsbEVudW1PcHRpb25zYCBhdCB0aGUgaW5kZXgoZXMpIHByb3ZpZGVkIGJ5IGB2YWx1ZUluZGV4YC4gSWYgYHZhbHVlSW5kZXhgIGlzIG5vdCBhblxuICogYXJyYXkgQU5EIHRoZSBpbmRleCBpcyBub3QgdmFsaWQgZm9yIGBhbGxFbnVtT3B0aW9uc2AsIGBlbXB0eVZhbHVlYCBpcyByZXR1cm5lZC4gSWYgYHZhbHVlSW5kZXhgIGlzIGFuIGFycmF5LCBBTkQgaXRcbiAqIGNvbnRhaW5zIGFuIGludmFsaWQgaW5kZXgsIHRoZSByZXR1cm5lZCBhcnJheSB3aWxsIGhhdmUgdGhlIHJlc3VsdGluZyB1bmRlZmluZWQgdmFsdWVzIGZpbHRlcmVkIG91dCwgbGVhdmluZyBvbmx5XG4gKiB2YWxpZCB2YWx1ZXMgb3IgaW4gdGhlIHdvcnN0IGNhc2UsIGFuIGVtcHR5IGFycmF5LlxuICpcbiAqIEBwYXJhbSB2YWx1ZUluZGV4IC0gVGhlIGluZGV4KGVzKSBvZiB0aGUgdmFsdWUocykgdGhhdCBzaG91bGQgYmUgcmV0dXJuZWRcbiAqIEBwYXJhbSBbYWxsRW51bU9wdGlvbnM9W11dIC0gVGhlIGxpc3Qgb2YgYWxsIHRoZSBrbm93biBlbnVtT3B0aW9uc1xuICogQHBhcmFtIFtlbXB0eVZhbHVlXSAtIFRoZSB2YWx1ZSB0byByZXR1cm4gd2hlbiB0aGUgbm9uLWFycmF5IGB2YWx1ZUluZGV4YCBkb2VzIG5vdCByZWZlciB0byBhIHJlYWwgb3B0aW9uXG4gKiBAcmV0dXJucyAtIFRoZSBzaW5nbGUgb3IgbGlzdCBvZiB2YWx1ZXMgc3BlY2lmaWVkIGJ5IHRoZSBzaW5nbGUgb3IgbGlzdCBvZiBpbmRleGVzIGlmIHRoZXkgYXJlIHZhbGlkLiBPdGhlcndpc2UsXG4gKiAgICAgICAgYGVtcHR5VmFsdWVgIG9yIGFuIGVtcHR5IGxpc3QuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCh2YWx1ZUluZGV4LCBhbGxFbnVtT3B0aW9ucyA9IFtdLCBlbXB0eVZhbHVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWVJbmRleCkpIHtcbiAgICAgICAgcmV0dXJuICh2YWx1ZUluZGV4XG4gICAgICAgICAgICAubWFwKChpbmRleCkgPT4gZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4KGluZGV4LCBhbGxFbnVtT3B0aW9ucykpXG4gICAgICAgICAgICAvLyBTaW5jZSB0aGUgcmVjdXJzaXZlIGNhbGwgcmV0dXJucyBgZW1wdHlWYWx1ZWAgd2hlbiB3ZSBnZXQgYSBiYWQgb3B0aW9uLCBvbmx5IGZpbHRlciB0aG9zZSBvdXRcbiAgICAgICAgICAgIC5maWx0ZXIoKHZhbCkgPT4gdmFsICE9PSBlbXB0eVZhbHVlKSk7XG4gICAgfVxuICAgIC8vIFNvIE51bWJlcihudWxsKSBhbmQgTnVtYmVyKCcnKSBib3RoIHJldHVybiAwLCBzbyB1c2UgZW1wdHlWYWx1ZSBmb3IgdGhvc2UgdHdvIHZhbHVlc1xuICAgIGNvbnN0IGluZGV4ID0gdmFsdWVJbmRleCA9PT0gJycgfHwgdmFsdWVJbmRleCA9PT0gbnVsbCA/IC0xIDogTnVtYmVyKHZhbHVlSW5kZXgpO1xuICAgIGNvbnN0IG9wdGlvbiA9IGFsbEVudW1PcHRpb25zW2luZGV4XTtcbiAgICByZXR1cm4gb3B0aW9uID8gb3B0aW9uLnZhbHVlIDogZW1wdHlWYWx1ZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVudW1PcHRpb25zVmFsdWVGb3JJbmRleC5qcy5tYXAiLCJpbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5pbXBvcnQgZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4IGZyb20gJy4vZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4Jztcbi8qKiBSZW1vdmVzIHRoZSBlbnVtIG9wdGlvbiB2YWx1ZSBhdCB0aGUgYHZhbHVlSW5kZXhgIGZyb20gdGhlIGN1cnJlbnRseSBgc2VsZWN0ZWRgIChsaXN0IG9mKSB2YWx1ZShzKS4gSWYgYHNlbGVjdGVkYCBpc1xuICogYSBsaXN0LCB0aGVuIHRoYXQgbGlzdCBpcyB1cGRhdGVkIHRvIHJlbW92ZSB0aGUgZW51bSBvcHRpb24gdmFsdWUgd2l0aCB0aGUgYHZhbHVlSW5kZXhgIGluIGBhbGxFbnVtT3B0aW9uc2AuIElmIGl0IGlzXG4gKiBhIHNpbmdsZSB2YWx1ZSwgdGhlbiBpZiB0aGUgZW51bSBvcHRpb24gdmFsdWUgd2l0aCB0aGUgYHZhbHVlSW5kZXhgIGluIGBhbGxFbnVtT3B0aW9uc2AgbWF0Y2hlcyBgc2VsZWN0ZWRgLCB1bmRlZmluZWRcbiAqIGlzIHJldHVybmVkLCBvdGhlcndpc2UgdGhlIGBzZWxlY3RlZGAgdmFsdWUgaXMgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHZhbHVlSW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIHZhbHVlIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VsZWN0ZWQgbGlzdCBvciBzaW5nbGUgdmFsdWVcbiAqIEBwYXJhbSBzZWxlY3RlZCAtIFRoZSBjdXJyZW50IChsaXN0IG9mKSBzZWxlY3RlZCB2YWx1ZShzKVxuICogQHBhcmFtIFthbGxFbnVtT3B0aW9ucz1bXV0gLSBUaGUgbGlzdCBvZiBhbGwgdGhlIGtub3duIGVudW1PcHRpb25zXG4gKiBAcmV0dXJucyAtIFRoZSB1cGRhdGVkIGBzZWxlY3RlZGAgd2l0aCB0aGUgZW51bSBvcHRpb24gdmFsdWUgYXQgYHZhbHVlSW5kZXhgIGluIGBhbGxFbnVtT3B0aW9uc2AgcmVtb3ZlZCBmcm9tIGl0LFxuICogICAgICAgIHVubGVzcyBgc2VsZWN0ZWRgIGlzIGEgc2luZ2xlIHZhbHVlLiBJbiB0aGF0IGNhc2UsIGlmIHRoZSBgdmFsdWVJbmRleGAgdmFsdWUgbWF0Y2hlcyBgc2VsZWN0ZWRgLCByZXR1cm5zXG4gKiAgICAgICAgdW5kZWZpbmVkLCBvdGhlcndpc2UgYHNlbGVjdGVkYC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW51bU9wdGlvbnNEZXNlbGVjdFZhbHVlKHZhbHVlSW5kZXgsIHNlbGVjdGVkLCBhbGxFbnVtT3B0aW9ucyA9IFtdKSB7XG4gICAgY29uc3QgdmFsdWUgPSBlbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXgodmFsdWVJbmRleCwgYWxsRW51bU9wdGlvbnMpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdGVkKSkge1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWQuZmlsdGVyKCh2KSA9PiAhaXNFcXVhbCh2LCB2YWx1ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gaXNFcXVhbCh2YWx1ZSwgc2VsZWN0ZWQpID8gdW5kZWZpbmVkIDogc2VsZWN0ZWQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbnVtT3B0aW9uc0Rlc2VsZWN0VmFsdWUuanMubWFwIiwiaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuLyoqIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gYHZhbHVlYCBpcyAob25lIG9mKSB0aGUgYHNlbGVjdGVkYCB2YWx1ZShzKS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgYmVpbmcgY2hlY2tlZCB0byBzZWUgaWYgaXQgaXMgc2VsZWN0ZWRcbiAqIEBwYXJhbSBzZWxlY3RlZCAtIFRoZSBjdXJyZW50IHNlbGVjdGVkIHZhbHVlIG9yIGxpc3Qgb2YgdmFsdWVzXG4gKiBAcmV0dXJucyAtIHRydWUgaWYgdGhlIGB2YWx1ZWAgaXMgb25lIG9mIHRoZSBgc2VsZWN0ZWRgIG9uZXMsIGZhbHNlIG90aGVyd2lzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbnVtT3B0aW9uc0lzU2VsZWN0ZWQodmFsdWUsIHNlbGVjdGVkKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWQpKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZC5zb21lKChzZWwpID0+IGlzRXF1YWwoc2VsLCB2YWx1ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gaXNFcXVhbChzZWxlY3RlZCwgdmFsdWUpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZW51bU9wdGlvbnNJc1NlbGVjdGVkLmpzLm1hcCIsImltcG9ydCBlbnVtT3B0aW9uc0lzU2VsZWN0ZWQgZnJvbSAnLi9lbnVtT3B0aW9uc0lzU2VsZWN0ZWQnO1xuLyoqIFJldHVybnMgdGhlIGluZGV4KGVzKSBvZiB0aGUgb3B0aW9ucyBpbiBgYWxsRW51bU9wdGlvbnNgIHdob3NlIHZhbHVlKHMpIG1hdGNoIHRoZSBvbmVzIGluIGB2YWx1ZWAuIEFsbCB0aGVcbiAqIGBlbnVtT3B0aW9uc2AgYXJlIGZpbHRlcmVkIGJhc2VkIG9uIHdoZXRoZXIgdGhleSBhcmUgYSBcInNlbGVjdGVkXCIgYHZhbHVlYCBhbmQgdGhlIGluZGV4IG9mIGVhY2ggc2VsZWN0ZWQgb25lIGlzIHRoZW5cbiAqIHN0b3JlZCBpbiBhbiBhcnJheS4gSWYgYG11bHRpcGxlYCBpcyB0cnVlLCB0aGF0IGFycmF5IGlzIHJldHVybmVkLCBvdGhlcndpc2UgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIGFycmF5IGlzXG4gKiByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgc2luZ2xlIHZhbHVlIG9yIGxpc3Qgb2YgdmFsdWVzIGZvciB3aGljaCBpbmRleGVzIGFyZSBkZXNpcmVkXG4gKiBAcGFyYW0gW2FsbEVudW1PcHRpb25zPVtdXSAtIFRoZSBsaXN0IG9mIGFsbCB0aGUga25vd24gZW51bU9wdGlvbnNcbiAqIEBwYXJhbSBbbXVsdGlwbGU9ZmFsc2VdIC0gT3B0aW9uYWwgZmxhZywgaWYgdHJ1ZSB3aWxsIHJldHVybiBhIGxpc3Qgb2YgaW5kZXgsIG90aGVyd2lzZSBhIHNpbmdsZSBvbmVcbiAqIEByZXR1cm5zIC0gQSBzaW5nbGUgc3RyaW5nIGluZGV4IGZvciB0aGUgZmlyc3QgYHZhbHVlYCBpbiBgYWxsRW51bU9wdGlvbnNgLCBpZiBub3QgYG11bHRpcGxlYC4gT3RoZXJ3aXNlLCB0aGUgbGlzdFxuICogICAgICAgIG9mIGluZGV4ZXMgZm9yIChlYWNoIG9mKSB0aGUgdmFsdWUocykgaW4gYHZhbHVlYC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW51bU9wdGlvbnNJbmRleEZvclZhbHVlKHZhbHVlLCBhbGxFbnVtT3B0aW9ucyA9IFtdLCBtdWx0aXBsZSA9IGZhbHNlKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleGVzID0gYWxsRW51bU9wdGlvbnNcbiAgICAgICAgLm1hcCgob3B0LCBpbmRleCkgPT4gKGVudW1PcHRpb25zSXNTZWxlY3RlZChvcHQudmFsdWUsIHZhbHVlKSA/IFN0cmluZyhpbmRleCkgOiB1bmRlZmluZWQpKVxuICAgICAgICAuZmlsdGVyKChvcHQpID0+IHR5cGVvZiBvcHQgIT09ICd1bmRlZmluZWQnKTtcbiAgICBpZiAoIW11bHRpcGxlKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZEluZGV4ZXNbMF07XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RlZEluZGV4ZXM7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbnVtT3B0aW9uc0luZGV4Rm9yVmFsdWUuanMubWFwIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbnVsbGlzaCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTmlsKG51bGwpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOaWwodm9pZCAwKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTmlsKE5hTik7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc05pbCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc05pbDtcbiIsImltcG9ydCBlbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXggZnJvbSAnLi9lbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXgnO1xuaW1wb3J0IGlzTmlsIGZyb20gJ2xvZGFzaC9pc05pbCc7XG4vKiogQWRkIHRoZSBlbnVtIG9wdGlvbiB2YWx1ZSBhdCB0aGUgYHZhbHVlSW5kZXhgIHRvIHRoZSBsaXN0IG9mIGBzZWxlY3RlZGAgdmFsdWVzIGluIHRoZSBwcm9wZXIgb3JkZXIgYXMgZGVmaW5lZCBieVxuICogYGFsbEVudW1PcHRpb25zYFxuICpcbiAqIEBwYXJhbSB2YWx1ZUluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSB2YWx1ZSB0aGF0IHNob3VsZCBiZSBzZWxlY3RlZFxuICogQHBhcmFtIHNlbGVjdGVkIC0gVGhlIGN1cnJlbnQgbGlzdCBvZiBzZWxlY3RlZCB2YWx1ZXNcbiAqIEBwYXJhbSBbYWxsRW51bU9wdGlvbnM9W11dIC0gVGhlIGxpc3Qgb2YgYWxsIHRoZSBrbm93biBlbnVtT3B0aW9uc1xuICogQHJldHVybnMgLSBUaGUgdXBkYXRlZCBsaXN0IG9mIHNlbGVjdGVkIGVudW0gdmFsdWVzIHdpdGggZW51bSB2YWx1ZSBhdCB0aGUgYHZhbHVlSW5kZXhgIGFkZGVkIHRvIGl0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVudW1PcHRpb25zU2VsZWN0VmFsdWUodmFsdWVJbmRleCwgc2VsZWN0ZWQsIGFsbEVudW1PcHRpb25zID0gW10pIHtcbiAgICBjb25zdCB2YWx1ZSA9IGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCh2YWx1ZUluZGV4LCBhbGxFbnVtT3B0aW9ucyk7XG4gICAgaWYgKCFpc05pbCh2YWx1ZSkpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBhbGxFbnVtT3B0aW9ucy5maW5kSW5kZXgoKG9wdCkgPT4gdmFsdWUgPT09IG9wdC52YWx1ZSk7XG4gICAgICAgIGNvbnN0IGFsbCA9IGFsbEVudW1PcHRpb25zLm1hcCgoeyB2YWx1ZTogdmFsIH0pID0+IHZhbCk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBzZWxlY3RlZC5zbGljZSgwLCBpbmRleCkuY29uY2F0KHZhbHVlLCBzZWxlY3RlZC5zbGljZShpbmRleCkpO1xuICAgICAgICAvLyBBcyBpbnNlcnRpbmcgdmFsdWVzIGF0IHByZWRlZmluZWQgaW5kZXggcG9zaXRpb25zIGRvZXNuJ3Qgd29yayB3aXRoIGVtcHR5XG4gICAgICAgIC8vIGFycmF5cywgd2UgbmVlZCB0byByZW9yZGVyIHRoZSB1cGRhdGVkIHNlbGVjdGlvbiB0byBtYXRjaCB0aGUgaW5pdGlhbCBvcmRlclxuICAgICAgICByZXR1cm4gdXBkYXRlZC5zb3J0KChhLCBiKSA9PiBOdW1iZXIoYWxsLmluZGV4T2YoYSkgPiBhbGwuaW5kZXhPZihiKSkpO1xuICAgIH1cbiAgICByZXR1cm4gc2VsZWN0ZWQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbnVtT3B0aW9uc1NlbGVjdFZhbHVlLmpzLm1hcCIsInZhciBiYXNlU2V0ID0gcmVxdWlyZSgnLi9fYmFzZVNldCcpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc2V0YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaCBpc1xuICogaW52b2tlZCB0byBwcm9kdWNlIHRoZSBvYmplY3RzIG9mIGBwYXRoYC4gIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgXG4gKiBwYXRoIGNyZWF0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWRcbiAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAobnNWYWx1ZSwga2V5LCBuc09iamVjdCkuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0ge307XG4gKlxuICogXy5zZXRXaXRoKG9iamVjdCwgJ1swXVsxXScsICdhJywgT2JqZWN0KTtcbiAqIC8vID0+IHsgJzAnOiB7ICcxJzogJ2EnIH0gfVxuICovXG5mdW5jdGlvbiBzZXRXaXRoKG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldFdpdGg7XG4iLCJpbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBzZXQgZnJvbSAnbG9kYXNoL3NldCc7XG5pbXBvcnQgc2V0V2l0aCBmcm9tICdsb2Rhc2gvc2V0V2l0aCc7XG5pbXBvcnQgeyBFUlJPUlNfS0VZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuLyoqIFRoZSBgRXJyb3JTY2hlbWFCdWlsZGVyPFQ+YCBpcyB1c2VkIHRvIGJ1aWxkIGFuIGBFcnJvclNjaGVtYTxUPmAgc2luY2UgdGhlIGRlZmluaXRpb24gb2YgdGhlIGBFcnJvclNjaGVtYWAgdHlwZSBpc1xuICogZGVzaWduZWQgZm9yIHJlYWRpbmcgaW5mb3JtYXRpb24gcmF0aGVyIHRoYW4gd3JpdGluZyBpdC4gVXNlIHRoaXMgY2xhc3MgdG8gYWRkLCByZXBsYWNlIG9yIGNsZWFyIGVycm9ycyBpbiBhbiBlcnJvclxuICogc2NoZW1hIGJ5IHVzaW5nIGVpdGhlciBkb3R0ZWQgcGF0aCBvciBhbiBhcnJheSBvZiBwYXRoIG5hbWVzLiBPbmNlIHlvdSBhcmUgZG9uZSBidWlsZGluZyB0aGUgYEVycm9yU2NoZW1hYCwgeW91IGNhblxuICogZ2V0IHRoZSByZXN1bHQgYW5kL29yIHJlc2V0IGFsbCB0aGUgZXJyb3JzIGJhY2sgdG8gYW4gaW5pdGlhbCBzZXQgYW5kIHN0YXJ0IGFnYWluLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFcnJvclNjaGVtYUJ1aWxkZXIge1xuICAgIC8qKiBDb25zdHJ1Y3QgYW4gYEVycm9yU2NoZW1hQnVpbGRlcmAgd2l0aCBhbiBvcHRpb25hbCBpbml0aWFsIHNldCBvZiBlcnJvcnMgaW4gYW4gYEVycm9yU2NoZW1hYC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBbaW5pdGlhbFNjaGVtYV0gLSBUaGUgb3B0aW9uYWwgc2V0IG9mIGluaXRpYWwgZXJyb3JzLCB0aGF0IHdpbGwgYmUgY2xvbmVkIGludG8gdGhlIGNsYXNzXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoaW5pdGlhbFNjaGVtYSkge1xuICAgICAgICAvKiogVGhlIGVycm9yIHNjaGVtYSBiZWluZyBidWlsdFxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5lcnJvclNjaGVtYSA9IHt9O1xuICAgICAgICB0aGlzLnJlc2V0QWxsRXJyb3JzKGluaXRpYWxTY2hlbWEpO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyB0aGUgYEVycm9yU2NoZW1hYCB0aGF0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIG1ldGhvZHMgb2YgdGhlIGBFcnJvclNjaGVtYUJ1aWxkZXJgXG4gICAgICovXG4gICAgZ2V0IEVycm9yU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lcnJvclNjaGVtYTtcbiAgICB9XG4gICAgLyoqIFdpbGwgZ2V0IGFuIGV4aXN0aW5nIGBFcnJvclNjaGVtYWAgYXQgdGhlIHNwZWNpZmllZCBgcGF0aE9mRXJyb3JgIG9yIGNyZWF0ZSBhbmQgcmV0dXJuIG9uZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBbcGF0aE9mRXJyb3JdIC0gVGhlIG9wdGlvbmFsIHBhdGggaW50byB0aGUgYEVycm9yU2NoZW1hYCBhdCB3aGljaCB0byBhZGQgdGhlIGVycm9yKHMpXG4gICAgICogQHJldHVybnMgLSBUaGUgZXJyb3IgYmxvY2sgZm9yIHRoZSBnaXZlbiBgcGF0aE9mRXJyb3JgIG9yIHRoZSByb290IGlmIG5vdCBwcm92aWRlZFxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgZ2V0T3JDcmVhdGVFcnJvckJsb2NrKHBhdGhPZkVycm9yKSB7XG4gICAgICAgIGNvbnN0IGhhc1BhdGggPSAoQXJyYXkuaXNBcnJheShwYXRoT2ZFcnJvcikgJiYgcGF0aE9mRXJyb3IubGVuZ3RoID4gMCkgfHwgdHlwZW9mIHBhdGhPZkVycm9yID09PSAnc3RyaW5nJztcbiAgICAgICAgbGV0IGVycm9yQmxvY2sgPSBoYXNQYXRoID8gZ2V0KHRoaXMuZXJyb3JTY2hlbWEsIHBhdGhPZkVycm9yKSA6IHRoaXMuZXJyb3JTY2hlbWE7XG4gICAgICAgIGlmICghZXJyb3JCbG9jayAmJiBwYXRoT2ZFcnJvcikge1xuICAgICAgICAgICAgZXJyb3JCbG9jayA9IHt9O1xuICAgICAgICAgICAgc2V0V2l0aCh0aGlzLmVycm9yU2NoZW1hLCBwYXRoT2ZFcnJvciwgZXJyb3JCbG9jaywgT2JqZWN0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZXJyb3JCbG9jaztcbiAgICB9XG4gICAgLyoqIFJlc2V0cyBhbGwgZXJyb3JzIGluIHRoZSBgRXJyb3JTY2hlbWFCdWlsZGVyYCBiYWNrIHRvIHRoZSBgaW5pdGlhbFNjaGVtYWAgaWYgcHJvdmlkZWQsIG90aGVyd2lzZSBhbiBlbXB0eSBzZXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gW2luaXRpYWxTY2hlbWFdIC0gVGhlIG9wdGlvbmFsIHNldCBvZiBpbml0aWFsIGVycm9ycywgdGhhdCB3aWxsIGJlIGNsb25lZCBpbnRvIHRoZSBjbGFzc1xuICAgICAqIEByZXR1cm5zIC0gVGhlIGBFcnJvclNjaGVtYUJ1aWxkZXJgIG9iamVjdCBmb3IgY2hhaW5pbmcgcHVycG9zZXNcbiAgICAgKi9cbiAgICByZXNldEFsbEVycm9ycyhpbml0aWFsU2NoZW1hKSB7XG4gICAgICAgIHRoaXMuZXJyb3JTY2hlbWEgPSBpbml0aWFsU2NoZW1hID8gY2xvbmVEZWVwKGluaXRpYWxTY2hlbWEpIDoge307XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKiogQWRkcyB0aGUgYGVycm9yT3JMaXN0YCB0byB0aGUgbGlzdCBvZiBlcnJvcnMgaW4gdGhlIGBFcnJvclNjaGVtYWAgYXQgZWl0aGVyIHRoZSByb290IGxldmVsIG9yIHRoZSBsb2NhdGlvbiB3aXRoaW5cbiAgICAgKiB0aGUgc2NoZW1hIGRlc2NyaWJlZCBieSB0aGUgYHBhdGhPZkVycm9yYC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRvIHNwZWNpZnkgdGhlIHBhdGggc2VlIHRoZVxuICAgICAqIFtlc2xpbnQgbG9kYXNoIHBsdWdpbiBkb2NzXShodHRwczovL2dpdGh1Yi5jb20vd2l4L2VzbGludC1wbHVnaW4tbG9kYXNoL2Jsb2IvbWFzdGVyL2RvY3MvcnVsZXMvcGF0aC1zdHlsZS5tZCkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXJyb3JPckxpc3QgLSBUaGUgZXJyb3Igb3IgbGlzdCBvZiBlcnJvcnMgdG8gYWRkIGludG8gdGhlIGBFcnJvclNjaGVtYWBcbiAgICAgKiBAcGFyYW0gW3BhdGhPZkVycm9yXSAtIFRoZSBvcHRpb25hbCBwYXRoIGludG8gdGhlIGBFcnJvclNjaGVtYWAgYXQgd2hpY2ggdG8gYWRkIHRoZSBlcnJvcihzKVxuICAgICAqIEByZXR1cm5zIC0gVGhlIGBFcnJvclNjaGVtYUJ1aWxkZXJgIG9iamVjdCBmb3IgY2hhaW5pbmcgcHVycG9zZXNcbiAgICAgKi9cbiAgICBhZGRFcnJvcnMoZXJyb3JPckxpc3QsIHBhdGhPZkVycm9yKSB7XG4gICAgICAgIGNvbnN0IGVycm9yQmxvY2sgPSB0aGlzLmdldE9yQ3JlYXRlRXJyb3JCbG9jayhwYXRoT2ZFcnJvcik7XG4gICAgICAgIGxldCBlcnJvcnNMaXN0ID0gZ2V0KGVycm9yQmxvY2ssIEVSUk9SU19LRVkpO1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXJyb3JzTGlzdCkpIHtcbiAgICAgICAgICAgIGVycm9yc0xpc3QgPSBbXTtcbiAgICAgICAgICAgIGVycm9yQmxvY2tbRVJST1JTX0tFWV0gPSBlcnJvcnNMaXN0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVycm9yT3JMaXN0KSkge1xuICAgICAgICAgICAgc2V0KGVycm9yQmxvY2ssIEVSUk9SU19LRVksIFsuLi5uZXcgU2V0KFsuLi5lcnJvcnNMaXN0LCAuLi5lcnJvck9yTGlzdF0pXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzZXQoZXJyb3JCbG9jaywgRVJST1JTX0tFWSwgWy4uLm5ldyBTZXQoWy4uLmVycm9yc0xpc3QsIGVycm9yT3JMaXN0XSldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqIFNldHMvcmVwbGFjZXMgdGhlIGBlcnJvck9yTGlzdGAgYXMgdGhlIGVycm9yKHMpIGluIHRoZSBgRXJyb3JTY2hlbWFgIGF0IGVpdGhlciB0aGUgcm9vdCBsZXZlbCBvciB0aGUgbG9jYXRpb25cbiAgICAgKiB3aXRoaW4gdGhlIHNjaGVtYSBkZXNjcmliZWQgYnkgdGhlIGBwYXRoT2ZFcnJvcmAuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBzcGVjaWZ5IHRoZSBwYXRoIHNlZSB0aGVcbiAgICAgKiBbZXNsaW50IGxvZGFzaCBwbHVnaW4gZG9jc10oaHR0cHM6Ly9naXRodWIuY29tL3dpeC9lc2xpbnQtcGx1Z2luLWxvZGFzaC9ibG9iL21hc3Rlci9kb2NzL3J1bGVzL3BhdGgtc3R5bGUubWQpLlxuICAgICAqXG4gICAgICogQHBhcmFtIGVycm9yT3JMaXN0IC0gVGhlIGVycm9yIG9yIGxpc3Qgb2YgZXJyb3JzIHRvIHNldCBpbnRvIHRoZSBgRXJyb3JTY2hlbWFgXG4gICAgICogQHBhcmFtIFtwYXRoT2ZFcnJvcl0gLSBUaGUgb3B0aW9uYWwgcGF0aCBpbnRvIHRoZSBgRXJyb3JTY2hlbWFgIGF0IHdoaWNoIHRvIHNldCB0aGUgZXJyb3IocylcbiAgICAgKiBAcmV0dXJucyAtIFRoZSBgRXJyb3JTY2hlbWFCdWlsZGVyYCBvYmplY3QgZm9yIGNoYWluaW5nIHB1cnBvc2VzXG4gICAgICovXG4gICAgc2V0RXJyb3JzKGVycm9yT3JMaXN0LCBwYXRoT2ZFcnJvcikge1xuICAgICAgICBjb25zdCBlcnJvckJsb2NrID0gdGhpcy5nZXRPckNyZWF0ZUVycm9yQmxvY2socGF0aE9mRXJyb3IpO1xuICAgICAgICAvLyBFZmZlY3RpdmVseSBjbG9uZSB0aGUgYXJyYXkgYmVpbmcgZ2l2ZW4gdG8gcHJldmVudCBhY2NpZGVudGFsIG91dHNpZGUgbWFuaXB1bGF0aW9uIG9mIHRoZSBnaXZlbiBsaXN0XG4gICAgICAgIGNvbnN0IGxpc3RUb0FkZCA9IEFycmF5LmlzQXJyYXkoZXJyb3JPckxpc3QpID8gWy4uLm5ldyBTZXQoWy4uLmVycm9yT3JMaXN0XSldIDogW2Vycm9yT3JMaXN0XTtcbiAgICAgICAgc2V0KGVycm9yQmxvY2ssIEVSUk9SU19LRVksIGxpc3RUb0FkZCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKiogQ2xlYXJzIHRoZSBlcnJvcihzKSBpbiB0aGUgYEVycm9yU2NoZW1hYCBhdCBlaXRoZXIgdGhlIHJvb3QgbGV2ZWwgb3IgdGhlIGxvY2F0aW9uIHdpdGhpbiB0aGUgc2NoZW1hIGRlc2NyaWJlZCBieVxuICAgICAqIHRoZSBgcGF0aE9mRXJyb3JgLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gc3BlY2lmeSB0aGUgcGF0aCBzZWUgdGhlXG4gICAgICogW2VzbGludCBsb2Rhc2ggcGx1Z2luIGRvY3NdKGh0dHBzOi8vZ2l0aHViLmNvbS93aXgvZXNsaW50LXBsdWdpbi1sb2Rhc2gvYmxvYi9tYXN0ZXIvZG9jcy9ydWxlcy9wYXRoLXN0eWxlLm1kKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBbcGF0aE9mRXJyb3JdIC0gVGhlIG9wdGlvbmFsIHBhdGggaW50byB0aGUgYEVycm9yU2NoZW1hYCBhdCB3aGljaCB0byBjbGVhciB0aGUgZXJyb3IocylcbiAgICAgKiBAcmV0dXJucyAtIFRoZSBgRXJyb3JTY2hlbWFCdWlsZGVyYCBvYmplY3QgZm9yIGNoYWluaW5nIHB1cnBvc2VzXG4gICAgICovXG4gICAgY2xlYXJFcnJvcnMocGF0aE9mRXJyb3IpIHtcbiAgICAgICAgY29uc3QgZXJyb3JCbG9jayA9IHRoaXMuZ2V0T3JDcmVhdGVFcnJvckJsb2NrKHBhdGhPZkVycm9yKTtcbiAgICAgICAgc2V0KGVycm9yQmxvY2ssIEVSUk9SU19LRVksIFtdKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXJyb3JTY2hlbWFCdWlsZGVyLmpzLm1hcCIsIi8qKiBHaXZlbiBkYXRlICYgdGltZSBpbmZvcm1hdGlvbiB3aXRoIG9wdGlvbmFsIHllYXJSYW5nZSAmIGZvcm1hdCwgcmV0dXJucyBwcm9wcyBmb3IgRGF0ZUVsZW1lbnRcbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIE9iamVjdCBjb250YWluaW5nIGRhdGUgd2l0aCBvcHRpb25hbCB0aW1lIGluZm9ybWF0aW9uXG4gKiBAcGFyYW0gdGltZSAtIERldGVybWluZXMgd2hldGhlciB0byBpbmNsdWRlIHRpbWUgb3Igbm90XG4gKiBAcGFyYW0gW3llYXJSYW5nZT1bMTkwMCwgbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpICsgMl1dIC0gQ29udHJvbHMgdGhlIGxpc3Qgb2YgeWVhcnMgdG8gYmUgZGlzcGxheWVkXG4gKiBAcGFyYW0gW2Zvcm1hdD0nWU1EJ10gLSBDb250cm9scyB0aGUgb3JkZXIgaW4gd2hpY2ggZGF5LCBtb250aCBhbmQgeWVhciBpbnB1dCBlbGVtZW50IHdpbGwgYmUgZGlzcGxheWVkXG4gKiBAcmV0dXJucyBBcnJheSBvZiBwcm9wcyBmb3IgRGF0ZUVsZW1lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RGF0ZUVsZW1lbnRQcm9wcyhkYXRlLCB0aW1lLCB5ZWFyUmFuZ2UgPSBbMTkwMCwgbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpICsgMl0sIGZvcm1hdCA9ICdZTUQnKSB7XG4gICAgY29uc3QgeyBkYXksIG1vbnRoLCB5ZWFyLCBob3VyLCBtaW51dGUsIHNlY29uZCB9ID0gZGF0ZTtcbiAgICBjb25zdCBkYXlPYmogPSB7IHR5cGU6ICdkYXknLCByYW5nZTogWzEsIDMxXSwgdmFsdWU6IGRheSB9O1xuICAgIGNvbnN0IG1vbnRoT2JqID0geyB0eXBlOiAnbW9udGgnLCByYW5nZTogWzEsIDEyXSwgdmFsdWU6IG1vbnRoIH07XG4gICAgY29uc3QgeWVhck9iaiA9IHsgdHlwZTogJ3llYXInLCByYW5nZTogeWVhclJhbmdlLCB2YWx1ZTogeWVhciB9O1xuICAgIGNvbnN0IGRhdGVFbGVtZW50UHJvcCA9IFtdO1xuICAgIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgICAgIGNhc2UgJ01EWSc6XG4gICAgICAgICAgICBkYXRlRWxlbWVudFByb3AucHVzaChtb250aE9iaiwgZGF5T2JqLCB5ZWFyT2JqKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdETVknOlxuICAgICAgICAgICAgZGF0ZUVsZW1lbnRQcm9wLnB1c2goZGF5T2JqLCBtb250aE9iaiwgeWVhck9iaik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnWU1EJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGRhdGVFbGVtZW50UHJvcC5wdXNoKHllYXJPYmosIG1vbnRoT2JqLCBkYXlPYmopO1xuICAgIH1cbiAgICBpZiAodGltZSkge1xuICAgICAgICBkYXRlRWxlbWVudFByb3AucHVzaCh7IHR5cGU6ICdob3VyJywgcmFuZ2U6IFswLCAyM10sIHZhbHVlOiBob3VyIH0sIHsgdHlwZTogJ21pbnV0ZScsIHJhbmdlOiBbMCwgNTldLCB2YWx1ZTogbWludXRlIH0sIHsgdHlwZTogJ3NlY29uZCcsIHJhbmdlOiBbMCwgNTldLCB2YWx1ZTogc2Vjb25kIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZGF0ZUVsZW1lbnRQcm9wO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0RGF0ZUVsZW1lbnRQcm9wcy5qcy5tYXAiLCIvKiogRXh0cmFjdHMgdGhlIHJhbmdlIHNwZWMgaW5mb3JtYXRpb24gYHsgc3RlcD86IG51bWJlciwgbWluPzogbnVtYmVyLCBtYXg/OiBudW1iZXIgfWAgdGhhdCBjYW4gYmUgc3ByZWFkIG9udG8gYW4gSFRNTFxuICogaW5wdXQgZnJvbSB0aGUgcmFuZ2UgYW5hbG9nIGluIHRoZSBzY2hlbWEgYHsgbXVsdGlwbGVPZj86IG51bWJlciwgbWluaW11bT86IG51bWJlciwgbWF4aW11bT86IG51bWJlciB9YC5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgdGhlIHJhbmdlIHNwZWNcbiAqIEByZXR1cm5zIC0gQSByYW5nZSBzcGVjaWZpY2F0aW9uIGZyb20gdGhlIHNjaGVtYVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByYW5nZVNwZWMoc2NoZW1hKSB7XG4gICAgY29uc3Qgc3BlYyA9IHt9O1xuICAgIGlmIChzY2hlbWEubXVsdGlwbGVPZikge1xuICAgICAgICBzcGVjLnN0ZXAgPSBzY2hlbWEubXVsdGlwbGVPZjtcbiAgICB9XG4gICAgaWYgKHNjaGVtYS5taW5pbXVtIHx8IHNjaGVtYS5taW5pbXVtID09PSAwKSB7XG4gICAgICAgIHNwZWMubWluID0gc2NoZW1hLm1pbmltdW07XG4gICAgfVxuICAgIGlmIChzY2hlbWEubWF4aW11bSB8fCBzY2hlbWEubWF4aW11bSA9PT0gMCkge1xuICAgICAgICBzcGVjLm1heCA9IHNjaGVtYS5tYXhpbXVtO1xuICAgIH1cbiAgICByZXR1cm4gc3BlYztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJhbmdlU3BlYy5qcy5tYXAiLCJpbXBvcnQgcmFuZ2VTcGVjIGZyb20gJy4vcmFuZ2VTcGVjJztcbi8qKiBVc2luZyB0aGUgYHNjaGVtYWAsIGBkZWZhdWx0VHlwZWAgYW5kIGBvcHRpb25zYCwgZXh0cmFjdCBvdXQgdGhlIHByb3BzIGZvciB0aGUgPGlucHV0PiBlbGVtZW50IHRoYXQgbWFrZSBzZW5zZS5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3IgdGhlIGZpZWxkIHByb3ZpZGVkIGJ5IHRoZSB3aWRnZXRcbiAqIEBwYXJhbSBbZGVmYXVsdFR5cGVdIC0gVGhlIGRlZmF1bHQgdHlwZSwgaWYgYW55LCBmb3IgdGhlIGZpZWxkIHByb3ZpZGVkIGJ5IHRoZSB3aWRnZXRcbiAqIEBwYXJhbSBbb3B0aW9ucz17fV0gLSBUaGUgVUkgT3B0aW9ucyBmb3IgdGhlIGZpZWxkIHByb3ZpZGVkIGJ5IHRoZSB3aWRnZXRcbiAqIEBwYXJhbSBbYXV0b0RlZmF1bHRTdGVwQW55PXRydWVdIC0gRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGF1dG8tZGVmYXVsdCBzdGVwPWFueSB3aGVuIHRoZSB0eXBlIGlzIG51bWJlciBhbmQgbm8gc3RlcFxuICogQHJldHVybnMgLSBUaGUgZXh0cmFjdGVkIGBJbnB1dFByb3BzVHlwZWAgb2JqZWN0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldElucHV0UHJvcHMoc2NoZW1hLCBkZWZhdWx0VHlwZSwgb3B0aW9ucyA9IHt9LCBhdXRvRGVmYXVsdFN0ZXBBbnkgPSB0cnVlKSB7XG4gICAgY29uc3QgaW5wdXRQcm9wcyA9IHtcbiAgICAgICAgdHlwZTogZGVmYXVsdFR5cGUgfHwgJ3RleHQnLFxuICAgICAgICAuLi5yYW5nZVNwZWMoc2NoZW1hKSxcbiAgICB9O1xuICAgIC8vIElmIG9wdGlvbnMuaW5wdXRUeXBlIGlzIHNldCB1c2UgdGhhdCBhcyB0aGUgaW5wdXQgdHlwZVxuICAgIGlmIChvcHRpb25zLmlucHV0VHlwZSkge1xuICAgICAgICBpbnB1dFByb3BzLnR5cGUgPSBvcHRpb25zLmlucHV0VHlwZTtcbiAgICB9XG4gICAgZWxzZSBpZiAoIWRlZmF1bHRUeXBlKSB7XG4gICAgICAgIC8vIElmIHRoZSBzY2hlbWEgaXMgb2YgdHlwZSBudW1iZXIgb3IgaW50ZWdlciwgc2V0IHRoZSBpbnB1dCB0eXBlIHRvIG51bWJlclxuICAgICAgICBpZiAoc2NoZW1hLnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBpbnB1dFByb3BzLnR5cGUgPSAnbnVtYmVyJztcbiAgICAgICAgICAgIC8vIE9ubHkgYWRkIHN0ZXAgaWYgb25lIGlzbid0IGFscmVhZHkgZGVmaW5lZCBhbmQgd2UgYXJlIGF1dG8tZGVmYXVsdGluZyB0aGUgXCJhbnlcIiBzdGVwXG4gICAgICAgICAgICBpZiAoYXV0b0RlZmF1bHRTdGVwQW55ICYmIGlucHV0UHJvcHMuc3RlcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgLy8gU2V0dGluZyBzdGVwIHRvICdhbnknIGZpeGVzIGEgYnVnIGluIFNhZmFyaSB3aGVyZSBkZWNpbWFscyBhcmUgbm90XG4gICAgICAgICAgICAgICAgLy8gYWxsb3dlZCBpbiBudW1iZXIgaW5wdXRzXG4gICAgICAgICAgICAgICAgaW5wdXRQcm9wcy5zdGVwID0gJ2FueSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc2NoZW1hLnR5cGUgPT09ICdpbnRlZ2VyJykge1xuICAgICAgICAgICAgaW5wdXRQcm9wcy50eXBlID0gJ251bWJlcic7XG4gICAgICAgICAgICAvLyBPbmx5IGFkZCBzdGVwIGlmIG9uZSBpc24ndCBhbHJlYWR5IGRlZmluZWRcbiAgICAgICAgICAgIGlmIChpbnB1dFByb3BzLnN0ZXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMgaXMgaW50ZWdlciwgeW91IGFsd2F5cyB3YW50IHRvIHN0ZXAgdXAgb3IgZG93biBpbiBtdWx0aXBsZXMgb2YgMVxuICAgICAgICAgICAgICAgIGlucHV0UHJvcHMuc3RlcCA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuYXV0b2NvbXBsZXRlKSB7XG4gICAgICAgIGlucHV0UHJvcHMuYXV0b0NvbXBsZXRlID0gb3B0aW9ucy5hdXRvY29tcGxldGU7XG4gICAgfVxuICAgIHJldHVybiBpbnB1dFByb3BzO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0SW5wdXRQcm9wcy5qcy5tYXAiLCJpbXBvcnQgeyBTVUJNSVRfQlROX09QVElPTlNfS0VZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IGdldFVpT3B0aW9ucyBmcm9tICcuL2dldFVpT3B0aW9ucyc7XG4vKiogVGhlIGRlZmF1bHQgc3VibWl0IGJ1dHRvbiBvcHRpb25zLCBleHBvcnRlZCBmb3IgdGVzdGluZyBwdXJwb3Nlc1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9PUFRJT05TID0ge1xuICAgIHByb3BzOiB7XG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICB9LFxuICAgIHN1Ym1pdFRleHQ6ICdTdWJtaXQnLFxuICAgIG5vcmVuZGVyOiBmYWxzZSxcbn07XG4vKiogRXh0cmFjdHMgYW55IGB1aTpzdWJtaXRCdXR0b25PcHRpb25zYCBmcm9tIHRoZSBgdWlTY2hlbWFgIGFuZCBtZXJnZXMgdGhlbSBvbnRvIHRoZSBgREVGQVVMVF9PUFRJT05TYFxuICpcbiAqIEBwYXJhbSBbdWlTY2hlbWE9e31dIC0gdGhlIFVJIFNjaGVtYSBmcm9tIHdoaWNoIHRvIGV4dHJhY3Qgc3VibWl0IGJ1dHRvbiBwcm9wc1xuICogQHJldHVybnMgLSBUaGUgbWVyZ2luZyBvZiB0aGUgYERFRkFVTFRfT1BUSU9OU2Agd2l0aCBhbnkgY3VzdG9tIG9uZXNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0U3VibWl0QnV0dG9uT3B0aW9ucyh1aVNjaGVtYSA9IHt9KSB7XG4gICAgY29uc3QgdWlPcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hKTtcbiAgICBpZiAodWlPcHRpb25zICYmIHVpT3B0aW9uc1tTVUJNSVRfQlROX09QVElPTlNfS0VZXSkge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gdWlPcHRpb25zW1NVQk1JVF9CVE5fT1BUSU9OU19LRVldO1xuICAgICAgICByZXR1cm4geyAuLi5ERUZBVUxUX09QVElPTlMsIC4uLm9wdGlvbnMgfTtcbiAgICB9XG4gICAgcmV0dXJuIERFRkFVTFRfT1BUSU9OUztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldFN1Ym1pdEJ1dHRvbk9wdGlvbnMuanMubWFwIiwiLyoqIFJldHVybnMgdGhlIHRlbXBsYXRlIHdpdGggdGhlIGdpdmVuIGBuYW1lYCBmcm9tIGVpdGhlciB0aGUgYHVpU2NoZW1hYCBpZiBpdCBpcyBkZWZpbmVkIG9yIGZyb20gdGhlIGByZWdpc3RyeWBcbiAqIG90aGVyd2lzZS4gTk9URSwgc2luY2UgYEJ1dHRvblRlbXBsYXRlc2AgYXJlIG5vdCBvdmVycmlkZGVuIGluIGB1aVNjaGVtYWAgb25seSB0aG9zZSBpbiB0aGUgYHJlZ2lzdHJ5YCBhcmUgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGVtcGxhdGUgdG8gZmV0Y2gsIHJlc3RyaWN0ZWQgdG8gdGhlIGtleXMgb2YgYFRlbXBsYXRlc1R5cGVgXG4gKiBAcGFyYW0gcmVnaXN0cnkgLSBUaGUgYFJlZ2lzdHJ5YCBmcm9tIHdoaWNoIHRvIHJlYWQgdGhlIHRlbXBsYXRlXG4gKiBAcGFyYW0gW3VpT3B0aW9ucz17fV0gLSBUaGUgYFVJT3B0aW9uc1R5cGVgIGZyb20gd2hpY2ggdG8gcmVhZCBhbiBhbHRlcm5hdGUgdGVtcGxhdGVcbiAqIEByZXR1cm5zIC0gVGhlIHRlbXBsYXRlIGZyb20gZWl0aGVyIHRoZSBgdWlTY2hlbWFgIG9yIGByZWdpc3RyeWAgZm9yIHRoZSBgbmFtZWBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VGVtcGxhdGUobmFtZSwgcmVnaXN0cnksIHVpT3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgeyB0ZW1wbGF0ZXMgfSA9IHJlZ2lzdHJ5O1xuICAgIGlmIChuYW1lID09PSAnQnV0dG9uVGVtcGxhdGVzJykge1xuICAgICAgICByZXR1cm4gdGVtcGxhdGVzW25hbWVdO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgIC8vIEV2YWx1YXRpbmcgdWlPcHRpb25zW25hbWVdIHJlc3VsdHMgaW4gVFMyNTkwOiBFeHByZXNzaW9uIHByb2R1Y2VzIGEgdW5pb24gdHlwZSB0aGF0IGlzIHRvbyBjb21wbGV4IHRvIHJlcHJlc2VudFxuICAgIC8vIFRvIGF2b2lkIHRoYXQsIHdlIGNhc3QgdWlPcHRpb25zIHRvIGBhbnlgIGJlZm9yZSBhY2Nlc3NpbmcgdGhlIG5hbWUgZmllbGRcbiAgICB1aU9wdGlvbnNbbmFtZV0gfHwgdGVtcGxhdGVzW25hbWVdKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldFRlbXBsYXRlLmpzLm1hcCIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgYj1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxjPVN5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIiksZD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksZT1TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIiksZj1TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIiksZz1TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIiksaD1TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5zZXJ2ZXJfY29udGV4dFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSxtPVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKSxuPVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpLHA9U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIikscT1TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKSx0PVN5bWJvbC5mb3IoXCJyZWFjdC5vZmZzY3JlZW5cIiksdTt1PVN5bWJvbC5mb3IoXCJyZWFjdC5tb2R1bGUucmVmZXJlbmNlXCIpO1xuZnVuY3Rpb24gdihhKXtpZihcIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hKXt2YXIgcj1hLiQkdHlwZW9mO3N3aXRjaChyKXtjYXNlIGI6c3dpdGNoKGE9YS50eXBlLGEpe2Nhc2UgZDpjYXNlIGY6Y2FzZSBlOmNhc2UgbTpjYXNlIG46cmV0dXJuIGE7ZGVmYXVsdDpzd2l0Y2goYT1hJiZhLiQkdHlwZW9mLGEpe2Nhc2UgazpjYXNlIGg6Y2FzZSBsOmNhc2UgcTpjYXNlIHA6Y2FzZSBnOnJldHVybiBhO2RlZmF1bHQ6cmV0dXJuIHJ9fWNhc2UgYzpyZXR1cm4gcn19fWV4cG9ydHMuQ29udGV4dENvbnN1bWVyPWg7ZXhwb3J0cy5Db250ZXh0UHJvdmlkZXI9ZztleHBvcnRzLkVsZW1lbnQ9YjtleHBvcnRzLkZvcndhcmRSZWY9bDtleHBvcnRzLkZyYWdtZW50PWQ7ZXhwb3J0cy5MYXp5PXE7ZXhwb3J0cy5NZW1vPXA7ZXhwb3J0cy5Qb3J0YWw9YztleHBvcnRzLlByb2ZpbGVyPWY7ZXhwb3J0cy5TdHJpY3RNb2RlPWU7ZXhwb3J0cy5TdXNwZW5zZT1tO1xuZXhwb3J0cy5TdXNwZW5zZUxpc3Q9bjtleHBvcnRzLmlzQXN5bmNNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2V4cG9ydHMuaXNDb25jdXJyZW50TW9kZT1mdW5jdGlvbigpe3JldHVybiExfTtleHBvcnRzLmlzQ29udGV4dENvbnN1bWVyPWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09aH07ZXhwb3J0cy5pc0NvbnRleHRQcm92aWRlcj1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWd9O2V4cG9ydHMuaXNFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJmEuJCR0eXBlb2Y9PT1ifTtleHBvcnRzLmlzRm9yd2FyZFJlZj1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWx9O2V4cG9ydHMuaXNGcmFnbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWR9O2V4cG9ydHMuaXNMYXp5PWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09cX07ZXhwb3J0cy5pc01lbW89ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1wfTtcbmV4cG9ydHMuaXNQb3J0YWw9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1jfTtleHBvcnRzLmlzUHJvZmlsZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1mfTtleHBvcnRzLmlzU3RyaWN0TW9kZT1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWV9O2V4cG9ydHMuaXNTdXNwZW5zZT1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PW19O2V4cG9ydHMuaXNTdXNwZW5zZUxpc3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1ufTtcbmV4cG9ydHMuaXNWYWxpZEVsZW1lbnRUeXBlPWZ1bmN0aW9uKGEpe3JldHVyblwic3RyaW5nXCI9PT10eXBlb2YgYXx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGF8fGE9PT1kfHxhPT09Znx8YT09PWV8fGE9PT1tfHxhPT09bnx8YT09PXR8fFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJihhLiQkdHlwZW9mPT09cXx8YS4kJHR5cGVvZj09PXB8fGEuJCR0eXBlb2Y9PT1nfHxhLiQkdHlwZW9mPT09aHx8YS4kJHR5cGVvZj09PWx8fGEuJCR0eXBlb2Y9PT11fHx2b2lkIDAhPT1hLmdldE1vZHVsZUlkKT8hMDohMX07ZXhwb3J0cy50eXBlT2Y9djtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RJcyBmcm9tICdyZWFjdC1pcyc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IHNldCBmcm9tICdsb2Rhc2gvc2V0JztcbmltcG9ydCBnZXRTY2hlbWFUeXBlIGZyb20gJy4vZ2V0U2NoZW1hVHlwZSc7XG4vKiogVGhlIG1hcCBvZiBzY2hlbWEgdHlwZXMgdG8gd2lkZ2V0IHR5cGUgdG8gd2lkZ2V0IG5hbWVcbiAqL1xuY29uc3Qgd2lkZ2V0TWFwID0ge1xuICAgIGJvb2xlYW46IHtcbiAgICAgICAgY2hlY2tib3g6ICdDaGVja2JveFdpZGdldCcsXG4gICAgICAgIHJhZGlvOiAnUmFkaW9XaWRnZXQnLFxuICAgICAgICBzZWxlY3Q6ICdTZWxlY3RXaWRnZXQnLFxuICAgICAgICBoaWRkZW46ICdIaWRkZW5XaWRnZXQnLFxuICAgIH0sXG4gICAgc3RyaW5nOiB7XG4gICAgICAgIHRleHQ6ICdUZXh0V2lkZ2V0JyxcbiAgICAgICAgcGFzc3dvcmQ6ICdQYXNzd29yZFdpZGdldCcsXG4gICAgICAgIGVtYWlsOiAnRW1haWxXaWRnZXQnLFxuICAgICAgICBob3N0bmFtZTogJ1RleHRXaWRnZXQnLFxuICAgICAgICBpcHY0OiAnVGV4dFdpZGdldCcsXG4gICAgICAgIGlwdjY6ICdUZXh0V2lkZ2V0JyxcbiAgICAgICAgdXJpOiAnVVJMV2lkZ2V0JyxcbiAgICAgICAgJ2RhdGEtdXJsJzogJ0ZpbGVXaWRnZXQnLFxuICAgICAgICByYWRpbzogJ1JhZGlvV2lkZ2V0JyxcbiAgICAgICAgc2VsZWN0OiAnU2VsZWN0V2lkZ2V0JyxcbiAgICAgICAgdGV4dGFyZWE6ICdUZXh0YXJlYVdpZGdldCcsXG4gICAgICAgIGhpZGRlbjogJ0hpZGRlbldpZGdldCcsXG4gICAgICAgIGRhdGU6ICdEYXRlV2lkZ2V0JyxcbiAgICAgICAgZGF0ZXRpbWU6ICdEYXRlVGltZVdpZGdldCcsXG4gICAgICAgICdkYXRlLXRpbWUnOiAnRGF0ZVRpbWVXaWRnZXQnLFxuICAgICAgICAnYWx0LWRhdGUnOiAnQWx0RGF0ZVdpZGdldCcsXG4gICAgICAgICdhbHQtZGF0ZXRpbWUnOiAnQWx0RGF0ZVRpbWVXaWRnZXQnLFxuICAgICAgICB0aW1lOiAnVGltZVdpZGdldCcsXG4gICAgICAgIGNvbG9yOiAnQ29sb3JXaWRnZXQnLFxuICAgICAgICBmaWxlOiAnRmlsZVdpZGdldCcsXG4gICAgfSxcbiAgICBudW1iZXI6IHtcbiAgICAgICAgdGV4dDogJ1RleHRXaWRnZXQnLFxuICAgICAgICBzZWxlY3Q6ICdTZWxlY3RXaWRnZXQnLFxuICAgICAgICB1cGRvd246ICdVcERvd25XaWRnZXQnLFxuICAgICAgICByYW5nZTogJ1JhbmdlV2lkZ2V0JyxcbiAgICAgICAgcmFkaW86ICdSYWRpb1dpZGdldCcsXG4gICAgICAgIGhpZGRlbjogJ0hpZGRlbldpZGdldCcsXG4gICAgfSxcbiAgICBpbnRlZ2VyOiB7XG4gICAgICAgIHRleHQ6ICdUZXh0V2lkZ2V0JyxcbiAgICAgICAgc2VsZWN0OiAnU2VsZWN0V2lkZ2V0JyxcbiAgICAgICAgdXBkb3duOiAnVXBEb3duV2lkZ2V0JyxcbiAgICAgICAgcmFuZ2U6ICdSYW5nZVdpZGdldCcsXG4gICAgICAgIHJhZGlvOiAnUmFkaW9XaWRnZXQnLFxuICAgICAgICBoaWRkZW46ICdIaWRkZW5XaWRnZXQnLFxuICAgIH0sXG4gICAgYXJyYXk6IHtcbiAgICAgICAgc2VsZWN0OiAnU2VsZWN0V2lkZ2V0JyxcbiAgICAgICAgY2hlY2tib3hlczogJ0NoZWNrYm94ZXNXaWRnZXQnLFxuICAgICAgICBmaWxlczogJ0ZpbGVXaWRnZXQnLFxuICAgICAgICBoaWRkZW46ICdIaWRkZW5XaWRnZXQnLFxuICAgIH0sXG59O1xuLyoqIFdyYXBzIHRoZSBnaXZlbiB3aWRnZXQgd2l0aCBzdGF0ZWxlc3MgZnVuY3Rpb25hbCBjb21wb25lbnQgdGhhdCB3aWxsIG1lcmdlIGFueSBgZGVmYXVsdFByb3BzLm9wdGlvbnNgIHdpdGggdGhlXG4gKiBgb3B0aW9uc2AgdGhhdCBhcmUgcHJvdmlkZWQgaW4gdGhlIHByb3BzLiBJdCB3aWxsIGFkZCB0aGUgd3JhcHBlciBjb21wb25lbnQgYXMgYSBgTWVyZ2VkV2lkZ2V0YCBwcm9wZXJ0eSBvbnRvIHRoZVxuICogYFdpZGdldGAgc28gdGhhdCBmdXR1cmUgYXR0ZW1wdHMgdG8gd3JhcCBgQVdpZGdldGAgd2lsbCByZXR1cm4gdGhlIGFscmVhZHkgZXhpc3Rpbmcgd3JhcHBlci5cbiAqXG4gKiBAcGFyYW0gQVdpZGdldCAtIEEgd2lkZ2V0IHRoYXQgd2lsbCBiZSB3cmFwcGVkIG9yIG9uZSB0aGF0IGlzIGFscmVhZHkgd3JhcHBlZFxuICogQHJldHVybnMgLSBUaGUgd3JhcHBlciB3aWRnZXRcbiAqL1xuZnVuY3Rpb24gbWVyZ2VXaWRnZXRPcHRpb25zKEFXaWRnZXQpIHtcbiAgICBsZXQgTWVyZ2VkV2lkZ2V0ID0gZ2V0KEFXaWRnZXQsICdNZXJnZWRXaWRnZXQnKTtcbiAgICAvLyBjYWNoZSByZXR1cm4gdmFsdWUgYXMgcHJvcGVydHkgb2Ygd2lkZ2V0IGZvciBwcm9wZXIgcmVhY3QgcmVjb25jaWxpYXRpb25cbiAgICBpZiAoIU1lcmdlZFdpZGdldCkge1xuICAgICAgICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IChBV2lkZ2V0LmRlZmF1bHRQcm9wcyAmJiBBV2lkZ2V0LmRlZmF1bHRQcm9wcy5vcHRpb25zKSB8fCB7fTtcbiAgICAgICAgTWVyZ2VkV2lkZ2V0ID0gKHsgb3B0aW9ucywgLi4ucHJvcHMgfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIF9qc3goQVdpZGdldCwgeyBvcHRpb25zOiB7IC4uLmRlZmF1bHRPcHRpb25zLCAuLi5vcHRpb25zIH0sIC4uLnByb3BzIH0pO1xuICAgICAgICB9O1xuICAgICAgICBzZXQoQVdpZGdldCwgJ01lcmdlZFdpZGdldCcsIE1lcmdlZFdpZGdldCk7XG4gICAgfVxuICAgIHJldHVybiBNZXJnZWRXaWRnZXQ7XG59XG4vKiogR2l2ZW4gYSBzY2hlbWEgcmVwcmVzZW50aW5nIGEgZmllbGQgdG8gcmVuZGVyIGFuZCBlaXRoZXIgdGhlIG5hbWUgb3IgYWN0dWFsIGBXaWRnZXRgIGltcGxlbWVudGF0aW9uLCByZXR1cm5zIHRoZVxuICogUmVhY3QgY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byByZW5kZXIgdGhlIHdpZGdldC4gSWYgdGhlIGB3aWRnZXRgIGlzIGFscmVhZHkgYSBSZWFjdCBjb21wb25lbnQsIHRoZW4gaXQgaXMgd3JhcHBlZFxuICogd2l0aCBhIGBNZXJnZWRXaWRnZXRgLiBPdGhlcndpc2UgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGxvb2sgdXAgdGhlIHdpZGdldCBpbnNpZGUgb2YgdGhlIGByZWdpc3RlcmVkV2lkZ2V0c2AgbWFwIGJhc2VkXG4gKiBvbiB0aGUgc2NoZW1hIHR5cGUgYW5kIGB3aWRnZXRgIG5hbWUuIElmIG5vIHdpZGdldCBjb21wb25lbnQgY2FuIGJlIGZvdW5kIGFuIGBFcnJvcmAgaXMgdGhyb3duLlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB0aGUgZmllbGRcbiAqIEBwYXJhbSBbd2lkZ2V0XSAtIEVpdGhlciB0aGUgbmFtZSBvZiB0aGUgd2lkZ2V0IE9SIGEgYFdpZGdldGAgaW1wbGVtZW50YXRpb24gdG8gdXNlXG4gKiBAcGFyYW0gW3JlZ2lzdGVyZWRXaWRnZXRzPXt9XSAtIEEgcmVnaXN0cnkgb2Ygd2lkZ2V0IG5hbWUgdG8gYFdpZGdldGAgaW1wbGVtZW50YXRpb25cbiAqIEByZXR1cm5zIC0gVGhlIGBXaWRnZXRgIGNvbXBvbmVudCB0byB1c2VcbiAqIEB0aHJvd3MgLSBBbiBlcnJvciBpZiB0aGVyZSBpcyBubyBgV2lkZ2V0YCBjb21wb25lbnQgdGhhdCBjYW4gYmUgcmV0dXJuZWRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2lkZ2V0KHNjaGVtYSwgd2lkZ2V0LCByZWdpc3RlcmVkV2lkZ2V0cyA9IHt9KSB7XG4gICAgY29uc3QgdHlwZSA9IGdldFNjaGVtYVR5cGUoc2NoZW1hKTtcbiAgICBpZiAodHlwZW9mIHdpZGdldCA9PT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgICAod2lkZ2V0ICYmIFJlYWN0SXMuaXNGb3J3YXJkUmVmKGNyZWF0ZUVsZW1lbnQod2lkZ2V0KSkpIHx8XG4gICAgICAgIFJlYWN0SXMuaXNNZW1vKHdpZGdldCkpIHtcbiAgICAgICAgcmV0dXJuIG1lcmdlV2lkZ2V0T3B0aW9ucyh3aWRnZXQpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHdpZGdldCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCB3aWRnZXQgZGVmaW5pdGlvbjogJHt0eXBlb2Ygd2lkZ2V0fWApO1xuICAgIH1cbiAgICBpZiAod2lkZ2V0IGluIHJlZ2lzdGVyZWRXaWRnZXRzKSB7XG4gICAgICAgIGNvbnN0IHJlZ2lzdGVyZWRXaWRnZXQgPSByZWdpc3RlcmVkV2lkZ2V0c1t3aWRnZXRdO1xuICAgICAgICByZXR1cm4gZ2V0V2lkZ2V0KHNjaGVtYSwgcmVnaXN0ZXJlZFdpZGdldCwgcmVnaXN0ZXJlZFdpZGdldHMpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmICghKHR5cGUgaW4gd2lkZ2V0TWFwKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyB3aWRnZXQgZm9yIHR5cGUgJyR7dHlwZX0nYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdpZGdldCBpbiB3aWRnZXRNYXBbdHlwZV0pIHtcbiAgICAgICAgICAgIGNvbnN0IHJlZ2lzdGVyZWRXaWRnZXQgPSByZWdpc3RlcmVkV2lkZ2V0c1t3aWRnZXRNYXBbdHlwZV1bd2lkZ2V0XV07XG4gICAgICAgICAgICByZXR1cm4gZ2V0V2lkZ2V0KHNjaGVtYSwgcmVnaXN0ZXJlZFdpZGdldCwgcmVnaXN0ZXJlZFdpZGdldHMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgTm8gd2lkZ2V0ICcke3dpZGdldH0nIGZvciB0eXBlICcke3R5cGV9J2ApO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0V2lkZ2V0LmpzLm1hcCIsImltcG9ydCBnZXRXaWRnZXQgZnJvbSAnLi9nZXRXaWRnZXQnO1xuLyoqIERldGVjdHMgd2hldGhlciB0aGUgYHdpZGdldGAgZXhpc3RzIGZvciB0aGUgYHNjaGVtYWAgd2l0aCB0aGUgYXNzb2NpYXRlZCBgcmVnaXN0cnlXaWRnZXRzYCBhbmQgcmV0dXJucyB0cnVlIGlmIGl0XG4gKiBkb2VzLCBvciBmYWxzZSBpZiBpdCBkb2Vzbid0LlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB0aGUgZmllbGRcbiAqIEBwYXJhbSB3aWRnZXQgLSBFaXRoZXIgdGhlIG5hbWUgb2YgdGhlIHdpZGdldCBPUiBhIGBXaWRnZXRgIGltcGxlbWVudGF0aW9uIHRvIHVzZVxuICogQHBhcmFtIFtyZWdpc3RlcmVkV2lkZ2V0cz17fV0gLSBBIHJlZ2lzdHJ5IG9mIHdpZGdldCBuYW1lIHRvIGBXaWRnZXRgIGltcGxlbWVudGF0aW9uXG4gKiBAcmV0dXJucyAtIFRydWUgaWYgdGhlIHdpZGdldCBleGlzdHMsIGZhbHNlIG90aGVyd2lzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoYXNXaWRnZXQoc2NoZW1hLCB3aWRnZXQsIHJlZ2lzdGVyZWRXaWRnZXRzID0ge30pIHtcbiAgICB0cnkge1xuICAgICAgICBnZXRXaWRnZXQoc2NoZW1hLCB3aWRnZXQsIHJlZ2lzdGVyZWRXaWRnZXRzKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnN0IGVyciA9IGU7XG4gICAgICAgIGlmIChlcnIubWVzc2FnZSAmJiAoZXJyLm1lc3NhZ2Uuc3RhcnRzV2l0aCgnTm8gd2lkZ2V0JykgfHwgZXJyLm1lc3NhZ2Uuc3RhcnRzV2l0aCgnVW5zdXBwb3J0ZWQgd2lkZ2V0JykpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1oYXNXaWRnZXQuanMubWFwIiwiaW1wb3J0IGlzU3RyaW5nIGZyb20gJ2xvZGFzaC9pc1N0cmluZyc7XG5pbXBvcnQgeyBJRF9LRVkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKiogR2VuZXJhdGVzIGEgY29uc2lzdGVudCBgaWRgIHBhdHRlcm4gZm9yIGEgZ2l2ZW4gYGlkYCBhbmQgYSBgc3VmZml4YFxuICpcbiAqIEBwYXJhbSBpZCAtIEVpdGhlciBzaW1wbGUgc3RyaW5nIGlkIG9yIGFuIElkU2NoZW1hIGZyb20gd2hpY2ggdG8gZXh0cmFjdCBpdFxuICogQHBhcmFtIHN1ZmZpeCAtIFRoZSBzdWZmaXggdG8gYXBwZW5kIHRvIHRoZSBpZFxuICovXG5mdW5jdGlvbiBpZEdlbmVyYXRvcihpZCwgc3VmZml4KSB7XG4gICAgY29uc3QgdGhlSWQgPSBpc1N0cmluZyhpZCkgPyBpZCA6IGlkW0lEX0tFWV07XG4gICAgcmV0dXJuIGAke3RoZUlkfV9fJHtzdWZmaXh9YDtcbn1cbi8qKiBSZXR1cm4gYSBjb25zaXN0ZW50IGBpZGAgZm9yIHRoZSBmaWVsZCBkZXNjcmlwdGlvbiBlbGVtZW50XG4gKlxuICogQHBhcmFtIGlkIC0gRWl0aGVyIHNpbXBsZSBzdHJpbmcgaWQgb3IgYW4gSWRTY2hlbWEgZnJvbSB3aGljaCB0byBleHRyYWN0IGl0XG4gKiBAcmV0dXJucyAtIFRoZSBjb25zaXN0ZW50IGlkIGZvciB0aGUgZmllbGQgZGVzY3JpcHRpb24gZWxlbWVudCBmcm9tIHRoZSBnaXZlbiBgaWRgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXNjcmlwdGlvbklkKGlkKSB7XG4gICAgcmV0dXJuIGlkR2VuZXJhdG9yKGlkLCAnZGVzY3JpcHRpb24nKTtcbn1cbi8qKiBSZXR1cm4gYSBjb25zaXN0ZW50IGBpZGAgZm9yIHRoZSBmaWVsZCBlcnJvciBlbGVtZW50XG4gKlxuICogQHBhcmFtIGlkIC0gRWl0aGVyIHNpbXBsZSBzdHJpbmcgaWQgb3IgYW4gSWRTY2hlbWEgZnJvbSB3aGljaCB0byBleHRyYWN0IGl0XG4gKiBAcmV0dXJucyAtIFRoZSBjb25zaXN0ZW50IGlkIGZvciB0aGUgZmllbGQgZXJyb3IgZWxlbWVudCBmcm9tIHRoZSBnaXZlbiBgaWRgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlcnJvcklkKGlkKSB7XG4gICAgcmV0dXJuIGlkR2VuZXJhdG9yKGlkLCAnZXJyb3InKTtcbn1cbi8qKiBSZXR1cm4gYSBjb25zaXN0ZW50IGBpZGAgZm9yIHRoZSBmaWVsZCBleGFtcGxlcyBlbGVtZW50XG4gKlxuICogQHBhcmFtIGlkIC0gRWl0aGVyIHNpbXBsZSBzdHJpbmcgaWQgb3IgYW4gSWRTY2hlbWEgZnJvbSB3aGljaCB0byBleHRyYWN0IGl0XG4gKiBAcmV0dXJucyAtIFRoZSBjb25zaXN0ZW50IGlkIGZvciB0aGUgZmllbGQgZXhhbXBsZXMgZWxlbWVudCBmcm9tIHRoZSBnaXZlbiBgaWRgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGFtcGxlc0lkKGlkKSB7XG4gICAgcmV0dXJuIGlkR2VuZXJhdG9yKGlkLCAnZXhhbXBsZXMnKTtcbn1cbi8qKiBSZXR1cm4gYSBjb25zaXN0ZW50IGBpZGAgZm9yIHRoZSBmaWVsZCBoZWxwIGVsZW1lbnRcbiAqXG4gKiBAcGFyYW0gaWQgLSBFaXRoZXIgc2ltcGxlIHN0cmluZyBpZCBvciBhbiBJZFNjaGVtYSBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgaXRcbiAqIEByZXR1cm5zIC0gVGhlIGNvbnNpc3RlbnQgaWQgZm9yIHRoZSBmaWVsZCBoZWxwIGVsZW1lbnQgZnJvbSB0aGUgZ2l2ZW4gYGlkYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaGVscElkKGlkKSB7XG4gICAgcmV0dXJuIGlkR2VuZXJhdG9yKGlkLCAnaGVscCcpO1xufVxuLyoqIFJldHVybiBhIGNvbnNpc3RlbnQgYGlkYCBmb3IgdGhlIGZpZWxkIHRpdGxlIGVsZW1lbnRcbiAqXG4gKiBAcGFyYW0gaWQgLSBFaXRoZXIgc2ltcGxlIHN0cmluZyBpZCBvciBhbiBJZFNjaGVtYSBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgaXRcbiAqIEByZXR1cm5zIC0gVGhlIGNvbnNpc3RlbnQgaWQgZm9yIHRoZSBmaWVsZCB0aXRsZSBlbGVtZW50IGZyb20gdGhlIGdpdmVuIGBpZGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRpdGxlSWQoaWQpIHtcbiAgICByZXR1cm4gaWRHZW5lcmF0b3IoaWQsICd0aXRsZScpO1xufVxuLyoqIFJldHVybiBhIGxpc3Qgb2YgZWxlbWVudCBpZHMgdGhhdCBjb250YWluIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZpZWxkIHRoYXQgY2FuIGJlIHVzZWQgdG8gYXMgdGhlIGFyaWFcbiAqIGRlc2NyaXB0aW9uIG9mIHRoZSBmaWVsZC4gVGhpcyBpcyBjb3JyZWN0bHkgb21pdHRpbmcgYHRpdGxlSWRgIHdoaWNoIHdvdWxkIGJlIFwibGFiZWxpbmdcIiByYXRoZXIgdGhhbiBcImRlc2NyaWJpbmdcIiB0aGVcbiAqIGVsZW1lbnQuXG4gKlxuICogQHBhcmFtIGlkIC0gRWl0aGVyIHNpbXBsZSBzdHJpbmcgaWQgb3IgYW4gSWRTY2hlbWEgZnJvbSB3aGljaCB0byBleHRyYWN0IGl0XG4gKiBAcGFyYW0gW2luY2x1ZGVFeGFtcGxlcz1mYWxzZV0gLSBPcHRpb25hbCBmbGFnLCBpZiB0cnVlLCB3aWxsIGFkZCB0aGUgYGV4YW1wbGVzSWRgIGludG8gdGhlIGxpc3RcbiAqIEByZXR1cm5zIC0gVGhlIHN0cmluZyBjb250YWluaW5nIHRoZSBsaXN0IG9mIGlkcyBmb3IgdXNlIGluIGFuIGBhcmlhLWRlc2NyaWJlZEJ5YCBhdHRyaWJ1dGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFyaWFEZXNjcmliZWRCeUlkcyhpZCwgaW5jbHVkZUV4YW1wbGVzID0gZmFsc2UpIHtcbiAgICBjb25zdCBleGFtcGxlcyA9IGluY2x1ZGVFeGFtcGxlcyA/IGAgJHtleGFtcGxlc0lkKGlkKX1gIDogJyc7XG4gICAgcmV0dXJuIGAke2Vycm9ySWQoaWQpfSAke2Rlc2NyaXB0aW9uSWQoaWQpfSAke2hlbHBJZChpZCl9JHtleGFtcGxlc31gO1xufVxuLyoqIFJldHVybiBhIGNvbnNpc3RlbnQgYGlkYCBmb3IgdGhlIGBvcHRpb25JbmRleGBzIG9mIGEgYFJhZGlvYCBvciBgQ2hlY2tib3hlc2Agd2lkZ2V0XG4gKlxuICogQHBhcmFtIGlkIC0gVGhlIGlkIG9mIHRoZSBwYXJlbnQgY29tcG9uZW50IGZvciB0aGUgb3B0aW9uXG4gKiBAcGFyYW0gb3B0aW9uSW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIG9wdGlvbiBmb3Igd2hpY2ggdGhlIGlkIGlzIGRlc2lyZWRcbiAqIEByZXR1cm5zIC0gQW4gaWQgZm9yIHRoZSBvcHRpb24gaW5kZXggYmFzZWQgb24gdGhlIHBhcmVudCBgaWRgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvcHRpb25JZChpZCwgb3B0aW9uSW5kZXgpIHtcbiAgICByZXR1cm4gYCR7aWR9LSR7b3B0aW9uSW5kZXh9YDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlkR2VuZXJhdG9ycy5qcy5tYXAiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsYWJlbFZhbHVlKGxhYmVsLCBoaWRlTGFiZWwsIGZhbGxiYWNrKSB7XG4gICAgcmV0dXJuIGhpZGVMYWJlbCA/IGZhbGxiYWNrIDogbGFiZWw7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1sYWJlbFZhbHVlLmpzLm1hcCIsIi8qKiBDb252ZXJ0cyBhIGxvY2FsIERhdGUgc3RyaW5nIGludG8gYSBVVEMgZGF0ZSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0gZGF0ZVN0cmluZyAtIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBkYXRlIGFzIGFjY2VwdGVkIGJ5IHRoZSBgRGF0ZSgpYCBjb25zdHJ1Y3RvclxuICogQHJldHVybnMgLSBBIFVUQyBkYXRlIHN0cmluZyBpZiBgZGF0ZVN0cmluZ2AgaXMgdHJ1dGh5LCBvdGhlcndpc2UgdW5kZWZpbmVkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxvY2FsVG9VVEMoZGF0ZVN0cmluZykge1xuICAgIHJldHVybiBkYXRlU3RyaW5nID8gbmV3IERhdGUoZGF0ZVN0cmluZykudG9KU09OKCkgOiB1bmRlZmluZWQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1sb2NhbFRvVVRDLmpzLm1hcCIsImltcG9ydCB7IENPTlNUX0tFWSwgRU5VTV9LRVkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKiogUmV0dXJucyB0aGUgY29uc3RhbnQgdmFsdWUgZnJvbSB0aGUgc2NoZW1hIHdoZW4gaXQgaXMgZWl0aGVyIGEgc2luZ2xlIHZhbHVlIGVudW0gb3IgaGFzIGEgY29uc3Qga2V5LiBPdGhlcndpc2VcbiAqIHRocm93cyBhbiBlcnJvci5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmcm9tIHdoaWNoIHRvIG9idGFpbiB0aGUgY29uc3RhbnQgdmFsdWVcbiAqIEByZXR1cm5zIC0gVGhlIGNvbnN0YW50IHZhbHVlIGZvciB0aGUgc2NoZW1hXG4gKiBAdGhyb3dzIC0gRXJyb3Igd2hlbiB0aGUgc2NoZW1hIGRvZXMgbm90IGhhdmUgYSBjb25zdGFudCB2YWx1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b0NvbnN0YW50KHNjaGVtYSkge1xuICAgIGlmIChFTlVNX0tFWSBpbiBzY2hlbWEgJiYgQXJyYXkuaXNBcnJheShzY2hlbWEuZW51bSkgJiYgc2NoZW1hLmVudW0ubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWEuZW51bVswXTtcbiAgICB9XG4gICAgaWYgKENPTlNUX0tFWSBpbiBzY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYS5jb25zdDtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzY2hlbWEgY2Fubm90IGJlIGluZmVycmVkIGFzIGEgY29uc3RhbnQnKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRvQ29uc3RhbnQuanMubWFwIiwiaW1wb3J0IHRvQ29uc3RhbnQgZnJvbSAnLi90b0NvbnN0YW50JztcbmltcG9ydCBnZXRVaU9wdGlvbnMgZnJvbSAnLi9nZXRVaU9wdGlvbnMnO1xuLyoqIEdldHMgdGhlIGxpc3Qgb2Ygb3B0aW9ucyBmcm9tIHRoZSBgc2NoZW1hYC4gSWYgdGhlIHNjaGVtYSBoYXMgYW4gZW51bSBsaXN0LCB0aGVuIHRob3NlIGVudW0gdmFsdWVzIGFyZSByZXR1cm5lZC4gVGhlXG4gKiBsYWJlbHMgZm9yIHRoZSBvcHRpb25zIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIG5vbi1zdGFuZGFyZCwgUkpTRi1kZXByZWNhdGVkIGBlbnVtTmFtZXNgIGlmIGl0IGV4aXN0cywgb3RoZXJ3aXNlXG4gKiB0aGUgbGFiZWwgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgYHZhbHVlYC4gSWYgdGhlIHNjaGVtYSBoYXMgYSBgb25lT2ZgIG9yIGBhbnlPZmAsIHRoZW4gdGhlIHZhbHVlIGlzIHRoZSBsaXN0IG9mXG4gKiBgY29uc3RgIHZhbHVlcyBmcm9tIHRoZSBzY2hlbWEgYW5kIHRoZSBsYWJlbCBpcyBlaXRoZXIgdGhlIGBzY2hlbWEudGl0bGVgIG9yIHRoZSB2YWx1ZS4gSWYgYSBgdWlTY2hlbWFgIGlzIHByb3ZpZGVkXG4gKiBhbmQgaXQgaGFzIHRoZSBgdWk6ZW51bU5hbWVzYCBtYXRjaGVkIHdpdGggYGVudW1gIG9yIGl0IGhhcyBhbiBhc3NvY2lhdGVkIGBvbmVPZmAgb3IgYGFueU9mYCB3aXRoIGEgbGlzdCBvZiBvYmplY3RzXG4gKiBjb250YWluaW5nIGB1aTp0aXRsZWAgdGhlbiB0aGUgVUkgc2NoZW1hIHZhbHVlcyB3aWxsIHJlcGxhY2UgdGhlIHZhbHVlcyBmcm9tIHRoZSBzY2hlbWEuXG4gKlxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZnJvbSB3aGljaCB0byBleHRyYWN0IHRoZSBvcHRpb25zIGxpc3RcbiAqIEBwYXJhbSBbdWlTY2hlbWFdIC0gVGhlIG9wdGlvbmFsIHVpU2NoZW1hIGZyb20gd2hpY2ggdG8gZ2V0IGFsdGVybmF0ZSBsYWJlbHMgZm9yIHRoZSBvcHRpb25zXG4gKiBAcmV0dXJucyAtIFRoZSBsaXN0IG9mIG9wdGlvbnMgZnJvbSB0aGUgc2NoZW1hXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9wdGlvbnNMaXN0KHNjaGVtYSwgdWlTY2hlbWEpIHtcbiAgICAvLyBUT0RPIGZsaXAgZ2VuZXJpY3MgdG8gbW92ZSBUIGZpcnN0IGluIHY2XG4gICAgY29uc3Qgc2NoZW1hV2l0aEVudW1OYW1lcyA9IHNjaGVtYTtcbiAgICBpZiAoc2NoZW1hLmVudW0pIHtcbiAgICAgICAgbGV0IGVudW1OYW1lcztcbiAgICAgICAgaWYgKHVpU2NoZW1hKSB7XG4gICAgICAgICAgICBjb25zdCB7IGVudW1OYW1lczogdWlFbnVtTmFtZXMgfSA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSk7XG4gICAgICAgICAgICBlbnVtTmFtZXMgPSB1aUVudW1OYW1lcztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWVudW1OYW1lcyAmJiBzY2hlbWFXaXRoRW51bU5hbWVzLmVudW1OYW1lcykge1xuICAgICAgICAgICAgLy8gZW51bU5hbWVzIHdhcyBkZXByZWNhdGVkIGluIHY1IGFuZCBpcyBpbnRlbnRpb25hbGx5IG9taXR0ZWQgZnJvbSB0aGUgUkpTRlNjaGVtYSB0eXBlLlxuICAgICAgICAgICAgLy8gQ2FzdCB0aGUgdHlwZSB0byBpbmNsdWRlIGVudW1OYW1lcyBzbyB0aGUgZmVhdHVyZSBzdGlsbCB3b3Jrcy5cbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdUaGUgXCJlbnVtTmFtZXNcIiBwcm9wZXJ0eSBpbiB0aGUgc2NoZW1hIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSBtYWpvciByZWxlYXNlLiBVc2UgdGhlIFwidWk6ZW51bU5hbWVzXCIgcHJvcGVydHkgaW4gdGhlIHVpU2NoZW1hIGluc3RlYWQuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbnVtTmFtZXMgPSBzY2hlbWFXaXRoRW51bU5hbWVzLmVudW1OYW1lcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2NoZW1hLmVudW0ubWFwKCh2YWx1ZSwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGFiZWwgPSAoZW51bU5hbWVzID09PSBudWxsIHx8IGVudW1OYW1lcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW51bU5hbWVzW2ldKSB8fCBTdHJpbmcodmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIHsgbGFiZWwsIHZhbHVlIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBsZXQgYWx0U2NoZW1hcyA9IHVuZGVmaW5lZDtcbiAgICBsZXQgYWx0VWlTY2hlbWFzID0gdW5kZWZpbmVkO1xuICAgIGlmIChzY2hlbWEuYW55T2YpIHtcbiAgICAgICAgYWx0U2NoZW1hcyA9IHNjaGVtYS5hbnlPZjtcbiAgICAgICAgYWx0VWlTY2hlbWFzID0gdWlTY2hlbWEgPT09IG51bGwgfHwgdWlTY2hlbWEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVpU2NoZW1hLmFueU9mO1xuICAgIH1cbiAgICBlbHNlIGlmIChzY2hlbWEub25lT2YpIHtcbiAgICAgICAgYWx0U2NoZW1hcyA9IHNjaGVtYS5vbmVPZjtcbiAgICAgICAgYWx0VWlTY2hlbWFzID0gdWlTY2hlbWEgPT09IG51bGwgfHwgdWlTY2hlbWEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVpU2NoZW1hLm9uZU9mO1xuICAgIH1cbiAgICByZXR1cm4gKGFsdFNjaGVtYXMgJiZcbiAgICAgICAgYWx0U2NoZW1hcy5tYXAoKGFTY2hlbWFEZWYsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHRpdGxlIH0gPSBnZXRVaU9wdGlvbnMoYWx0VWlTY2hlbWFzID09PSBudWxsIHx8IGFsdFVpU2NoZW1hcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYWx0VWlTY2hlbWFzW2luZGV4XSk7XG4gICAgICAgICAgICBjb25zdCBhU2NoZW1hID0gYVNjaGVtYURlZjtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdG9Db25zdGFudChhU2NoZW1hKTtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGl0bGUgfHwgYVNjaGVtYS50aXRsZSB8fCBTdHJpbmcodmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IGFTY2hlbWEsXG4gICAgICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1vcHRpb25zTGlzdC5qcy5tYXAiLCIvKiogR2l2ZW4gYSBsaXN0IG9mIGBwcm9wZXJ0aWVzYCBhbmQgYW4gYG9yZGVyYCBsaXN0LCByZXR1cm5zIGEgbGlzdCB0aGF0IGNvbnRhaW5zIHRoZSBgcHJvcGVydGllc2Agb3JkZXJlZCBjb3JyZWN0bHkuXG4gKiBJZiBgb3JkZXJgIGlzIG5vdCBhbiBhcnJheSwgdGhlbiB0aGUgdW50b3VjaGVkIGBwcm9wZXJ0aWVzYCBsaXN0IGlzIHJldHVybmVkLiBPdGhlcndpc2UgYHByb3BlcnRpZXNgIGlzIG9yZGVyZWQgcGVyXG4gKiB0aGUgYG9yZGVyYCBsaXN0LiBJZiBgb3JkZXJgIGNvbnRhaW5zIGEgJyonIHRoZW4gYW55IGBwcm9wZXJ0aWVzYCB0aGF0IGFyZSBub3QgbWVudGlvbmVkIGV4cGxpY2l0eSBpbiBgb3JkZXJgIHdpbGwgYmVcbiAqIHBsYWNlcyBpbiB0aGUgbG9jYXRpb24gb2YgdGhlIGAqYC5cbiAqXG4gKiBAcGFyYW0gcHJvcGVydGllcyAtIFRoZSBsaXN0IG9mIHByb3BlcnR5IGtleXMgdG8gYmUgb3JkZXJlZFxuICogQHBhcmFtIG9yZGVyIC0gQW4gYXJyYXkgb2YgcHJvcGVydHkga2V5cyB0byBiZSBvcmRlcmVkIGZpcnN0LCB3aXRoIGFuIG9wdGlvbmFsICcqJyBwcm9wZXJ0eVxuICogQHJldHVybnMgLSBBIGxpc3Qgd2l0aCB0aGUgYHByb3BlcnRpZXNgIG9yZGVyZWRcbiAqIEB0aHJvd3MgLSBFcnJvciB3aGVuIHRoZSBwcm9wZXJ0aWVzIGNhbm5vdCBiZSBvcmRlcmVkIGNvcnJlY3RseVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvcmRlclByb3BlcnRpZXMocHJvcGVydGllcywgb3JkZXIpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkob3JkZXIpKSB7XG4gICAgICAgIHJldHVybiBwcm9wZXJ0aWVzO1xuICAgIH1cbiAgICBjb25zdCBhcnJheVRvSGFzaCA9IChhcnIpID0+IGFyci5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgICAgcHJldltjdXJyXSA9IHRydWU7XG4gICAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIHt9KTtcbiAgICBjb25zdCBlcnJvclByb3BMaXN0ID0gKGFycikgPT4gYXJyLmxlbmd0aCA+IDEgPyBgcHJvcGVydGllcyAnJHthcnIuam9pbihcIicsICdcIil9J2AgOiBgcHJvcGVydHkgJyR7YXJyWzBdfSdgO1xuICAgIGNvbnN0IHByb3BlcnR5SGFzaCA9IGFycmF5VG9IYXNoKHByb3BlcnRpZXMpO1xuICAgIGNvbnN0IG9yZGVyRmlsdGVyZWQgPSBvcmRlci5maWx0ZXIoKHByb3ApID0+IHByb3AgPT09ICcqJyB8fCBwcm9wZXJ0eUhhc2hbcHJvcF0pO1xuICAgIGNvbnN0IG9yZGVySGFzaCA9IGFycmF5VG9IYXNoKG9yZGVyRmlsdGVyZWQpO1xuICAgIGNvbnN0IHJlc3QgPSBwcm9wZXJ0aWVzLmZpbHRlcigocHJvcCkgPT4gIW9yZGVySGFzaFtwcm9wXSk7XG4gICAgY29uc3QgcmVzdEluZGV4ID0gb3JkZXJGaWx0ZXJlZC5pbmRleE9mKCcqJyk7XG4gICAgaWYgKHJlc3RJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgaWYgKHJlc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVpU2NoZW1hIG9yZGVyIGxpc3QgZG9lcyBub3QgY29udGFpbiAke2Vycm9yUHJvcExpc3QocmVzdCl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9yZGVyRmlsdGVyZWQ7XG4gICAgfVxuICAgIGlmIChyZXN0SW5kZXggIT09IG9yZGVyRmlsdGVyZWQubGFzdEluZGV4T2YoJyonKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VpU2NoZW1hIG9yZGVyIGxpc3QgY29udGFpbnMgbW9yZSB0aGFuIG9uZSB3aWxkY2FyZCBpdGVtJyk7XG4gICAgfVxuICAgIGNvbnN0IGNvbXBsZXRlID0gWy4uLm9yZGVyRmlsdGVyZWRdO1xuICAgIGNvbXBsZXRlLnNwbGljZShyZXN0SW5kZXgsIDEsIC4uLnJlc3QpO1xuICAgIHJldHVybiBjb21wbGV0ZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW9yZGVyUHJvcGVydGllcy5qcy5tYXAiLCIvKiogUGFyc2VzIHRoZSBgZGF0ZVN0cmluZ2AgaW50byBhIGBEYXRlT2JqZWN0YCwgaW5jbHVkaW5nIHRoZSB0aW1lIGluZm9ybWF0aW9uIHdoZW4gYGluY2x1ZGVUaW1lYCBpcyB0cnVlXG4gKlxuICogQHBhcmFtIGRhdGVTdHJpbmcgLSBUaGUgZGF0ZSBzdHJpbmcgdG8gcGFyc2UgaW50byBhIERhdGVPYmplY3RcbiAqIEBwYXJhbSBbaW5jbHVkZVRpbWU9dHJ1ZV0gLSBPcHRpb25hbCBmbGFnLCBpZiBmYWxzZSwgd2lsbCBub3QgaW5jbHVkZSB0aGUgdGltZSBkYXRhIGludG8gdGhlIG9iamVjdFxuICogQHJldHVybnMgLSBUaGUgZGF0ZSBzdHJpbmcgY29udmVydGVkIHRvIGEgYERhdGVPYmplY3RgXG4gKiBAdGhyb3dzIC0gRXJyb3Igd2hlbiB0aGUgZGF0ZSBjYW5ub3QgYmUgcGFyc2VkIGZyb20gdGhlIHN0cmluZ1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwYXJzZURhdGVTdHJpbmcoZGF0ZVN0cmluZywgaW5jbHVkZVRpbWUgPSB0cnVlKSB7XG4gICAgaWYgKCFkYXRlU3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB5ZWFyOiAtMSxcbiAgICAgICAgICAgIG1vbnRoOiAtMSxcbiAgICAgICAgICAgIGRheTogLTEsXG4gICAgICAgICAgICBob3VyOiBpbmNsdWRlVGltZSA/IC0xIDogMCxcbiAgICAgICAgICAgIG1pbnV0ZTogaW5jbHVkZVRpbWUgPyAtMSA6IDAsXG4gICAgICAgICAgICBzZWNvbmQ6IGluY2x1ZGVUaW1lID8gLTEgOiAwLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVN0cmluZyk7XG4gICAgaWYgKE51bWJlci5pc05hTihkYXRlLmdldFRpbWUoKSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gcGFyc2UgZGF0ZSAnICsgZGF0ZVN0cmluZyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHllYXI6IGRhdGUuZ2V0VVRDRnVsbFllYXIoKSxcbiAgICAgICAgbW9udGg6IGRhdGUuZ2V0VVRDTW9udGgoKSArIDEsXG4gICAgICAgIGRheTogZGF0ZS5nZXRVVENEYXRlKCksXG4gICAgICAgIGhvdXI6IGluY2x1ZGVUaW1lID8gZGF0ZS5nZXRVVENIb3VycygpIDogMCxcbiAgICAgICAgbWludXRlOiBpbmNsdWRlVGltZSA/IGRhdGUuZ2V0VVRDTWludXRlcygpIDogMCxcbiAgICAgICAgc2Vjb25kOiBpbmNsdWRlVGltZSA/IGRhdGUuZ2V0VVRDU2Vjb25kcygpIDogMCxcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGFyc2VEYXRlU3RyaW5nLmpzLm1hcCIsIi8qKiBDaGVjayB0byBzZWUgaWYgYSBgc2NoZW1hYCBzcGVjaWZpZXMgdGhhdCBhIHZhbHVlIG11c3QgYmUgdHJ1ZS4gVGhpcyBoYXBwZW5zIHdoZW46XG4gKiAtIGBzY2hlbWEuY29uc3RgIGlzIHRydXRoeVxuICogLSBgc2NoZW1hLmVudW1gID09IGBbdHJ1ZV1gXG4gKiAtIGBzY2hlbWEuYW55T2ZgIG9yIGBzY2hlbWEub25lT2ZgIGhhcyBhIHNpbmdsZSB2YWx1ZSB3aGljaCByZWN1cnNpdmVseSByZXR1cm5zIHRydWVcbiAqIC0gYHNjaGVtYS5hbGxPZmAgaGFzIGF0IGxlYXN0IG9uZSB2YWx1ZSB3aGljaCByZWN1cnNpdmVseSByZXR1cm5zIHRydWVcbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSB0byBjaGVja1xuICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBzY2hlbWEgc3BlY2lmaWVzIGEgdmFsdWUgdGhhdCBtdXN0IGJlIHRydWUsIGZhbHNlIG90aGVyd2lzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzY2hlbWFSZXF1aXJlc1RydWVWYWx1ZShzY2hlbWEpIHtcbiAgICAvLyBDaGVjayBpZiBjb25zdCBpcyBhIHRydXRoeSB2YWx1ZVxuICAgIGlmIChzY2hlbWEuY29uc3QpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vIENoZWNrIGlmIGFuIGVudW0gaGFzIGEgc2luZ2xlIHZhbHVlIG9mIHRydWVcbiAgICBpZiAoc2NoZW1hLmVudW0gJiYgc2NoZW1hLmVudW0ubGVuZ3RoID09PSAxICYmIHNjaGVtYS5lbnVtWzBdID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvLyBJZiBhbnlPZiBoYXMgYSBzaW5nbGUgdmFsdWUsIGV2YWx1YXRlIHRoZSBzdWJzY2hlbWFcbiAgICBpZiAoc2NoZW1hLmFueU9mICYmIHNjaGVtYS5hbnlPZi5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYVJlcXVpcmVzVHJ1ZVZhbHVlKHNjaGVtYS5hbnlPZlswXSk7XG4gICAgfVxuICAgIC8vIElmIG9uZU9mIGhhcyBhIHNpbmdsZSB2YWx1ZSwgZXZhbHVhdGUgdGhlIHN1YnNjaGVtYVxuICAgIGlmIChzY2hlbWEub25lT2YgJiYgc2NoZW1hLm9uZU9mLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gc2NoZW1hUmVxdWlyZXNUcnVlVmFsdWUoc2NoZW1hLm9uZU9mWzBdKTtcbiAgICB9XG4gICAgLy8gRXZhbHVhdGUgZWFjaCBzdWJzY2hlbWEgaW4gYWxsT2YsIHRvIHNlZSBpZiBvbmUgb2YgdGhlbSByZXF1aXJlcyBhIHRydWUgdmFsdWVcbiAgICBpZiAoc2NoZW1hLmFsbE9mKSB7XG4gICAgICAgIGNvbnN0IHNjaGVtYVNvbWUgPSAoc3ViU2NoZW1hKSA9PiBzY2hlbWFSZXF1aXJlc1RydWVWYWx1ZShzdWJTY2hlbWEpO1xuICAgICAgICByZXR1cm4gc2NoZW1hLmFsbE9mLnNvbWUoc2NoZW1hU29tZSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNjaGVtYVJlcXVpcmVzVHJ1ZVZhbHVlLmpzLm1hcCIsImltcG9ydCBkZWVwRXF1YWxzIGZyb20gJy4vZGVlcEVxdWFscyc7XG4vKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiBgY29tcG9uZW50YCBzaG91bGQgYmUgcmVyZW5kZXJlZCBieSBjb21wYXJpbmcgaXRzIGN1cnJlbnQgc2V0IG9mIHByb3BzIGFuZCBzdGF0ZVxuICogYWdhaW5zdCB0aGUgbmV4dCBzZXQuIElmIGVpdGhlciBvZiB0aG9zZSB0d28gc2V0cyBhcmUgbm90IHRoZSBzYW1lLCB0aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIHJlcmVuZGVyZWQuXG4gKlxuICogQHBhcmFtIGNvbXBvbmVudCAtIEEgUmVhY3QgY29tcG9uZW50IGJlaW5nIGNoZWNrZWRcbiAqIEBwYXJhbSBuZXh0UHJvcHMgLSBUaGUgbmV4dCBzZXQgb2YgcHJvcHMgYWdhaW5zdCB3aGljaCB0byBjaGVja1xuICogQHBhcmFtIG5leHRTdGF0ZSAtIFRoZSBuZXh0IHNldCBvZiBzdGF0ZSBhZ2FpbnN0IHdoaWNoIHRvIGNoZWNrXG4gKiBAcmV0dXJucyAtIFRydWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgcmUtcmVuZGVyZWQsIGZhbHNlIG90aGVyd2lzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzaG91bGRSZW5kZXIoY29tcG9uZW50LCBuZXh0UHJvcHMsIG5leHRTdGF0ZSkge1xuICAgIGNvbnN0IHsgcHJvcHMsIHN0YXRlIH0gPSBjb21wb25lbnQ7XG4gICAgcmV0dXJuICFkZWVwRXF1YWxzKHByb3BzLCBuZXh0UHJvcHMpIHx8ICFkZWVwRXF1YWxzKHN0YXRlLCBuZXh0U3RhdGUpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2hvdWxkUmVuZGVyLmpzLm1hcCIsIi8qKiBSZXR1cm5zIGEgVVRDIGRhdGUgc3RyaW5nIGZvciB0aGUgZ2l2ZW4gYGRhdGVPYmplY3RgLiBJZiBgdGltZWAgaXMgZmFsc2UsIHRoZW4gdGhlIHRpbWUgcG9ydGlvbiBvZiB0aGUgc3RyaW5nIGlzXG4gKiByZW1vdmVkLlxuICpcbiAqIEBwYXJhbSBkYXRlT2JqZWN0IC0gVGhlIGBEYXRlT2JqZWN0YCB0byBjb252ZXJ0IHRvIGEgZGF0ZSBzdHJpbmdcbiAqIEBwYXJhbSBbdGltZT10cnVlXSAtIE9wdGlvbmFsIGZsYWcgdXNlZCB0byByZW1vdmUgdGhlIHRpbWUgcG9ydGlvbiBvZiB0aGUgZGF0ZSBzdHJpbmcgaWYgZmFsc2VcbiAqIEByZXR1cm5zIC0gVGhlIFVUQyBkYXRlIHN0cmluZ1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b0RhdGVTdHJpbmcoZGF0ZU9iamVjdCwgdGltZSA9IHRydWUpIHtcbiAgICBjb25zdCB7IHllYXIsIG1vbnRoLCBkYXksIGhvdXIgPSAwLCBtaW51dGUgPSAwLCBzZWNvbmQgPSAwIH0gPSBkYXRlT2JqZWN0O1xuICAgIGNvbnN0IHV0Y1RpbWUgPSBEYXRlLlVUQyh5ZWFyLCBtb250aCAtIDEsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQpO1xuICAgIGNvbnN0IGRhdGV0aW1lID0gbmV3IERhdGUodXRjVGltZSkudG9KU09OKCk7XG4gICAgcmV0dXJuIHRpbWUgPyBkYXRldGltZSA6IGRhdGV0aW1lLnNsaWNlKDAsIDEwKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRvRGF0ZVN0cmluZy5qcy5tYXAiLCJpbXBvcnQgaXNQbGFpbk9iamVjdCBmcm9tICdsb2Rhc2gvaXNQbGFpbk9iamVjdCc7XG5pbXBvcnQgeyBFUlJPUlNfS0VZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuLyoqIENvbnZlcnRzIGFuIGBlcnJvclNjaGVtYWAgaW50byBhIGxpc3Qgb2YgYFJKU0ZWYWxpZGF0aW9uRXJyb3JzYFxuICpcbiAqIEBwYXJhbSBlcnJvclNjaGVtYSAtIFRoZSBgRXJyb3JTY2hlbWFgIGluc3RhbmNlIHRvIGNvbnZlcnRcbiAqIEBwYXJhbSBbZmllbGRQYXRoPVtdXSAtIFRoZSBjdXJyZW50IGZpZWxkIHBhdGgsIGRlZmF1bHRzIHRvIFtdIGlmIG5vdCBzcGVjaWZpZWRcbiAqIEByZXR1cm5zIC0gVGhlIGxpc3Qgb2YgYFJKU0ZWYWxpZGF0aW9uRXJyb3JzYCBleHRyYWN0ZWQgZnJvbSB0aGUgYGVycm9yU2NoZW1hYFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b0Vycm9yTGlzdChlcnJvclNjaGVtYSwgZmllbGRQYXRoID0gW10pIHtcbiAgICBpZiAoIWVycm9yU2NoZW1hKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgbGV0IGVycm9yTGlzdCA9IFtdO1xuICAgIGlmIChFUlJPUlNfS0VZIGluIGVycm9yU2NoZW1hKSB7XG4gICAgICAgIGVycm9yTGlzdCA9IGVycm9yTGlzdC5jb25jYXQoZXJyb3JTY2hlbWFbRVJST1JTX0tFWV0ubWFwKChtZXNzYWdlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGAuJHtmaWVsZFBhdGguam9pbignLicpfWA7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHByb3BlcnR5LFxuICAgICAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgc3RhY2s6IGAke3Byb3BlcnR5fSAke21lc3NhZ2V9YCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGVycm9yU2NoZW1hKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgIGlmIChrZXkgIT09IEVSUk9SU19LRVkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkU2NoZW1hID0gZXJyb3JTY2hlbWFba2V5XTtcbiAgICAgICAgICAgIGlmIChpc1BsYWluT2JqZWN0KGNoaWxkU2NoZW1hKSkge1xuICAgICAgICAgICAgICAgIGFjYyA9IGFjYy5jb25jYXQodG9FcnJvckxpc3QoY2hpbGRTY2hlbWEsIFsuLi5maWVsZFBhdGgsIGtleV0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIGVycm9yTGlzdCk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD10b0Vycm9yTGlzdC5qcy5tYXAiLCJ2YXIgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKSxcbiAgICBzdHJpbmdUb1BhdGggPSByZXF1aXJlKCcuL19zdHJpbmdUb1BhdGgnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5JyksXG4gICAgdG9TdHJpbmcgPSByZXF1aXJlKCcuL3RvU3RyaW5nJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvUGF0aCgnYS5iLmMnKTtcbiAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICpcbiAqIF8udG9QYXRoKCdhWzBdLmIuYycpO1xuICogLy8gPT4gWydhJywgJzAnLCAnYicsICdjJ11cbiAqL1xuZnVuY3Rpb24gdG9QYXRoKHZhbHVlKSB7XG4gIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgdG9LZXkpO1xuICB9XG4gIHJldHVybiBpc1N5bWJvbCh2YWx1ZSkgPyBbdmFsdWVdIDogY29weUFycmF5KHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1BhdGg7XG4iLCJpbXBvcnQgdG9QYXRoIGZyb20gJ2xvZGFzaC90b1BhdGgnO1xuaW1wb3J0IEVycm9yU2NoZW1hQnVpbGRlciBmcm9tICcuL0Vycm9yU2NoZW1hQnVpbGRlcic7XG4vKiogVHJhbnNmb3JtcyBhIHJqc2YgdmFsaWRhdGlvbiBlcnJvcnMgbGlzdDpcbiAqIFtcbiAqICAge3Byb3BlcnR5OiAnLmxldmVsMS5sZXZlbDJbMl0ubGV2ZWwzJywgbWVzc2FnZTogJ2VyciBhJ30sXG4gKiAgIHtwcm9wZXJ0eTogJy5sZXZlbDEubGV2ZWwyWzJdLmxldmVsMycsIG1lc3NhZ2U6ICdlcnIgYid9LFxuICogICB7cHJvcGVydHk6ICcubGV2ZWwxLmxldmVsMls0XS5sZXZlbDMnLCBtZXNzYWdlOiAnZXJyIGInfSxcbiAqIF1cbiAqIEludG8gYW4gZXJyb3IgdHJlZTpcbiAqIHtcbiAqICAgbGV2ZWwxOiB7XG4gKiAgICAgbGV2ZWwyOiB7XG4gKiAgICAgICAyOiB7bGV2ZWwzOiB7ZXJyb3JzOiBbJ2VyciBhJywgJ2VyciBiJ119fSxcbiAqICAgICAgIDQ6IHtsZXZlbDM6IHtlcnJvcnM6IFsnZXJyIGInXX19LFxuICogICAgIH1cbiAqICAgfVxuICogfTtcbiAqXG4gKiBAcGFyYW0gZXJyb3JzIC0gVGhlIGxpc3Qgb2YgUkpTRlZhbGlkYXRpb25FcnJvciBvYmplY3RzXG4gKiBAcmV0dXJucyAtIFRoZSBgRXJyb3JTY2hlbWFgIGJ1aWx0IGZyb20gdGhlIGxpc3Qgb2YgYFJKU0ZWYWxpZGF0aW9uRXJyb3JzYFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b0Vycm9yU2NoZW1hKGVycm9ycykge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgRXJyb3JTY2hlbWFCdWlsZGVyKCk7XG4gICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgZXJyb3JzLmZvckVhY2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHByb3BlcnR5LCBtZXNzYWdlIH0gPSBlcnJvcjtcbiAgICAgICAgICAgIC8vIFdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSByb290IGVsZW1lbnQsIGp1c3QgdXNlIGFuIGVtcHR5IGFycmF5IGZvciB0aGUgcGF0aFxuICAgICAgICAgICAgY29uc3QgcGF0aCA9IHByb3BlcnR5ID09PSAnLicgPyBbXSA6IHRvUGF0aChwcm9wZXJ0eSk7XG4gICAgICAgICAgICAvLyBJZiB0aGUgcHJvcGVydHkgaXMgYXQgdGhlIHJvb3QgKC5sZXZlbDEpIHRoZW4gdG9QYXRoIGNyZWF0ZXNcbiAgICAgICAgICAgIC8vIGFuIGVtcHR5IGFycmF5IGVsZW1lbnQgYXQgdGhlIGZpcnN0IGluZGV4LiBSZW1vdmUgaXQuXG4gICAgICAgICAgICBpZiAocGF0aC5sZW5ndGggPiAwICYmIHBhdGhbMF0gPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgcGF0aC5zcGxpY2UoMCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIGJ1aWxkZXIuYWRkRXJyb3JzKG1lc3NhZ2UsIHBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1aWxkZXIuRXJyb3JTY2hlbWE7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD10b0Vycm9yU2NoZW1hLmpzLm1hcCIsImltcG9ydCBpc1BsYWluT2JqZWN0IGZyb20gJ2xvZGFzaC9pc1BsYWluT2JqZWN0Jztcbi8qKiBVbndyYXBzIHRoZSBgZXJyb3JIYW5kbGVyYCBzdHJ1Y3R1cmUgaW50byB0aGUgYXNzb2NpYXRlZCBgRXJyb3JTY2hlbWFgLCBzdHJpcHBpbmcgdGhlIGBhZGRFcnJvcigpYCBmdW5jdGlvbnMgZnJvbSBpdFxuICpcbiAqIEBwYXJhbSBlcnJvckhhbmRsZXIgLSBUaGUgYEZvcm1WYWxpZGF0aW9uYCBlcnJvciBoYW5kbGluZyBzdHJ1Y3R1cmVcbiAqIEByZXR1cm5zIC0gVGhlIGBFcnJvclNjaGVtYWAgcmVzdWx0aW5nIGZyb20gdGhlIHN0cmlwcGluZyBvZiB0aGUgYGFkZEVycm9yKClgIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVud3JhcEVycm9ySGFuZGxlcihlcnJvckhhbmRsZXIpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZXJyb3JIYW5kbGVyKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgIGlmIChrZXkgPT09ICdhZGRFcnJvcicpIHtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZFNjaGVtYSA9IGVycm9ySGFuZGxlcltrZXldO1xuICAgICAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QoY2hpbGRTY2hlbWEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgICAgICBba2V5XTogdW53cmFwRXJyb3JIYW5kbGVyKGNoaWxkU2NoZW1hKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCBba2V5XTogY2hpbGRTY2hlbWEgfTtcbiAgICAgICAgfVxuICAgIH0sIHt9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVud3JhcEVycm9ySGFuZGxlci5qcy5tYXAiLCJpbXBvcnQgcGFkIGZyb20gJy4vcGFkJztcbi8qKiBDb252ZXJ0cyBhIFVUQyBkYXRlIHN0cmluZyBpbnRvIGEgbG9jYWwgRGF0ZSBmb3JtYXRcbiAqXG4gKiBAcGFyYW0ganNvbkRhdGUgLSBBIFVUQyBkYXRlIHN0cmluZ1xuICogQHJldHVybnMgLSBBbiBlbXB0eSBzdHJpbmcgd2hlbiBganNvbkRhdGVgIGlzIGZhbHNleSwgb3RoZXJ3aXNlIGEgZGF0ZSBzdHJpbmcgaW4gbG9jYWwgZm9ybWF0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHV0Y1RvTG9jYWwoanNvbkRhdGUpIHtcbiAgICBpZiAoIWpzb25EYXRlKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgLy8gcmVxdWlyZWQgZm9ybWF0IG9mIGAneXl5eS1NTS1kZFRoaDptbScgZm9sbG93ZWQgYnkgb3B0aW9uYWwgJzpzcycgb3IgJzpzcy5TU1MnXG4gICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5wdXQuaHRtbCNsb2NhbC1kYXRlLWFuZC10aW1lLXN0YXRlLSh0eXBlJTNEZGF0ZXRpbWUtbG9jYWwpXG4gICAgLy8gPiBzaG91bGQgYmUgYSBfdmFsaWQgbG9jYWwgZGF0ZSBhbmQgdGltZSBzdHJpbmdfIChub3QgR01UKVxuICAgIC8vIE5vdGUgLSBkYXRlIGNvbnN0cnVjdG9yIHBhc3NlZCBsb2NhbCBJU08tODYwMSBkb2VzIG5vdCBjb3JyZWN0bHlcbiAgICAvLyBjaGFuZ2UgdGltZSB0byBVVEMgaW4gbm9kZSBwcmUtOFxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShqc29uRGF0ZSk7XG4gICAgY29uc3QgeXl5eSA9IHBhZChkYXRlLmdldEZ1bGxZZWFyKCksIDQpO1xuICAgIGNvbnN0IE1NID0gcGFkKGRhdGUuZ2V0TW9udGgoKSArIDEsIDIpO1xuICAgIGNvbnN0IGRkID0gcGFkKGRhdGUuZ2V0RGF0ZSgpLCAyKTtcbiAgICBjb25zdCBoaCA9IHBhZChkYXRlLmdldEhvdXJzKCksIDIpO1xuICAgIGNvbnN0IG1tID0gcGFkKGRhdGUuZ2V0TWludXRlcygpLCAyKTtcbiAgICBjb25zdCBzcyA9IHBhZChkYXRlLmdldFNlY29uZHMoKSwgMik7XG4gICAgY29uc3QgU1NTID0gcGFkKGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCksIDMpO1xuICAgIHJldHVybiBgJHt5eXl5fS0ke01NfS0ke2RkfVQke2hofToke21tfToke3NzfS4ke1NTU31gO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRjVG9Mb2NhbC5qcy5tYXAiLCJpbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5pbXBvcnQgbWVyZ2VPYmplY3RzIGZyb20gJy4vbWVyZ2VPYmplY3RzJztcbmltcG9ydCB0b0Vycm9yTGlzdCBmcm9tICcuL3RvRXJyb3JMaXN0Jztcbi8qKiBNZXJnZXMgdGhlIGVycm9ycyBpbiBgYWRkaXRpb25hbEVycm9yU2NoZW1hYCBpbnRvIHRoZSBleGlzdGluZyBgdmFsaWRhdGlvbkRhdGFgIGJ5IGNvbWJpbmluZyB0aGUgaGllcmFyY2hpZXMgaW4gdGhlXG4gKiB0d28gYEVycm9yU2NoZW1hYHMgYW5kIHRoZW4gYXBwZW5kaW5nIHRoZSBlcnJvciBsaXN0IGZyb20gdGhlIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIG9idGFpbmVkIGJ5IGNhbGxpbmdcbiAqIGB0b0Vycm9yTGlzdCgpYCBvbiB0aGUgYGVycm9yc2AgaW4gdGhlIGB2YWxpZGF0aW9uRGF0YWAuIElmIG5vIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIGlzIHBhc3NlZCwgdGhlblxuICogYHZhbGlkYXRpb25EYXRhYCBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdGlvbkRhdGEgLSBUaGUgY3VycmVudCBgVmFsaWRhdGlvbkRhdGFgIGludG8gd2hpY2ggdG8gbWVyZ2UgdGhlIGFkZGl0aW9uYWwgZXJyb3JzXG4gKiBAcGFyYW0gW2FkZGl0aW9uYWxFcnJvclNjaGVtYV0gLSBUaGUgb3B0aW9uYWwgYWRkaXRpb25hbCBzZXQgb2YgZXJyb3JzIGluIGFuIGBFcnJvclNjaGVtYWBcbiAqIEByZXR1cm5zIC0gVGhlIGB2YWxpZGF0aW9uRGF0YWAgd2l0aCB0aGUgYWRkaXRpb25hbCBlcnJvcnMgZnJvbSBgYWRkaXRpb25hbEVycm9yU2NoZW1hYCBtZXJnZWQgaW50byBpdCwgaWYgcHJvdmlkZWQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZhbGlkYXRpb25EYXRhTWVyZ2UodmFsaWRhdGlvbkRhdGEsIGFkZGl0aW9uYWxFcnJvclNjaGVtYSkge1xuICAgIGlmICghYWRkaXRpb25hbEVycm9yU2NoZW1hKSB7XG4gICAgICAgIHJldHVybiB2YWxpZGF0aW9uRGF0YTtcbiAgICB9XG4gICAgY29uc3QgeyBlcnJvcnM6IG9sZEVycm9ycywgZXJyb3JTY2hlbWE6IG9sZEVycm9yU2NoZW1hIH0gPSB2YWxpZGF0aW9uRGF0YTtcbiAgICBsZXQgZXJyb3JzID0gdG9FcnJvckxpc3QoYWRkaXRpb25hbEVycm9yU2NoZW1hKTtcbiAgICBsZXQgZXJyb3JTY2hlbWEgPSBhZGRpdGlvbmFsRXJyb3JTY2hlbWE7XG4gICAgaWYgKCFpc0VtcHR5KG9sZEVycm9yU2NoZW1hKSkge1xuICAgICAgICBlcnJvclNjaGVtYSA9IG1lcmdlT2JqZWN0cyhvbGRFcnJvclNjaGVtYSwgYWRkaXRpb25hbEVycm9yU2NoZW1hLCB0cnVlKTtcbiAgICAgICAgZXJyb3JzID0gWy4uLm9sZEVycm9yc10uY29uY2F0KGVycm9ycyk7XG4gICAgfVxuICAgIHJldHVybiB7IGVycm9yU2NoZW1hLCBlcnJvcnMgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXZhbGlkYXRpb25EYXRhTWVyZ2UuanMubWFwIiwiaW1wb3J0IHsgUkVGX0tFWSwgUk9PVF9TQ0hFTUFfUFJFRklYIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJ2xvZGFzaC9pc09iamVjdCc7XG4vKiogVGFrZXMgYSBgbm9kZWAgb2JqZWN0IGFuZCB0cmFuc2Zvcm1zIGFueSBjb250YWluZWQgYCRyZWZgIG5vZGUgdmFyaWFibGVzIHdpdGggYSBwcmVmaXgsIHJlY3Vyc2l2ZWx5IGNhbGxpbmdcbiAqIGB3aXRoSWRSZWZQcmVmaXhgIGZvciBhbnkgb3RoZXIgZWxlbWVudHMuXG4gKlxuICogQHBhcmFtIG5vZGUgLSBUaGUgb2JqZWN0IG5vZGUgdG8gd2hpY2ggYSBST09UX1NDSEVNQV9QUkVGSVggaXMgYWRkZWQgd2hlbiBhIFJFRl9LRVkgaXMgcGFydCBvZiBpdFxuICovXG5mdW5jdGlvbiB3aXRoSWRSZWZQcmVmaXhPYmplY3Qobm9kZSkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIG5vZGUpIHtcbiAgICAgICAgY29uc3QgcmVhbE9iaiA9IG5vZGU7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcmVhbE9ialtrZXldO1xuICAgICAgICBpZiAoa2V5ID09PSBSRUZfS0VZICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUuc3RhcnRzV2l0aCgnIycpKSB7XG4gICAgICAgICAgICByZWFsT2JqW2tleV0gPSBST09UX1NDSEVNQV9QUkVGSVggKyB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlYWxPYmpba2V5XSA9IHdpdGhJZFJlZlByZWZpeCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG59XG4vKiogVGFrZXMgYSBgbm9kZWAgb2JqZWN0IGxpc3QgYW5kIHRyYW5zZm9ybXMgYW55IGNvbnRhaW5lZCBgJHJlZmAgbm9kZSB2YXJpYWJsZXMgd2l0aCBhIHByZWZpeCwgcmVjdXJzaXZlbHkgY2FsbGluZ1xuICogYHdpdGhJZFJlZlByZWZpeGAgZm9yIGFueSBvdGhlciBlbGVtZW50cy5cbiAqXG4gKiBAcGFyYW0gbm9kZSAtIFRoZSBsaXN0IG9mIG9iamVjdCBub2RlcyB0byB3aGljaCBhIFJPT1RfU0NIRU1BX1BSRUZJWCBpcyBhZGRlZCB3aGVuIGEgUkVGX0tFWSBpcyBwYXJ0IG9mIGl0XG4gKi9cbmZ1bmN0aW9uIHdpdGhJZFJlZlByZWZpeEFycmF5KG5vZGUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbm9kZVtpXSA9IHdpdGhJZFJlZlByZWZpeChub2RlW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG59XG4vKiogUmVjdXJzaXZlbHkgcHJlZml4ZXMgYWxsIGAkcmVmYHMgaW4gYSBzY2hlbWEgd2l0aCB0aGUgdmFsdWUgb2YgdGhlIGBST09UX1NDSEVNQV9QUkVGSVhgIGNvbnN0YW50LlxuICogVGhpcyBpcyB1c2VkIGluIGlzVmFsaWQgdG8gbWFrZSByZWZlcmVuY2VzIHRvIHRoZSByb290U2NoZW1hXG4gKlxuICogQHBhcmFtIHNjaGVtYU5vZGUgLSBUaGUgb2JqZWN0IG5vZGUgdG8gd2hpY2ggYSBST09UX1NDSEVNQV9QUkVGSVggaXMgYWRkZWQgd2hlbiBhIFJFRl9LRVkgaXMgcGFydCBvZiBpdFxuICogQHJldHVybnMgLSBBIGNvcHkgb2YgdGhlIGBzY2hlbWFOb2RlYCB3aXRoIHVwZGF0ZWQgYCRyZWZgc1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB3aXRoSWRSZWZQcmVmaXgoc2NoZW1hTm9kZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYU5vZGUpKSB7XG4gICAgICAgIHJldHVybiB3aXRoSWRSZWZQcmVmaXhBcnJheShbLi4uc2NoZW1hTm9kZV0pO1xuICAgIH1cbiAgICBpZiAoaXNPYmplY3Qoc2NoZW1hTm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIHdpdGhJZFJlZlByZWZpeE9iamVjdCh7IC4uLnNjaGVtYU5vZGUgfSk7XG4gICAgfVxuICAgIHJldHVybiBzY2hlbWFOb2RlO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9d2l0aElkUmVmUHJlZml4LmpzLm1hcCIsIi8qKiBBbiBlbnVtZXJhdGlvbiBvZiBhbGwgdGhlIHRyYW5zbGF0YWJsZSBzdHJpbmdzIHVzZWQgYnkgYEByanNmL2NvcmVgIGFuZCBpdHMgdGhlbWVzLiBUaGUgdmFsdWUgb2YgZWFjaCBvZiB0aGVcbiAqIGVudW1lcmF0aW9uIGtleXMgaXMgZXhwZWN0ZWQgdG8gYmUgdGhlIGFjdHVhbCBlbmdsaXNoIHN0cmluZy4gU29tZSBzdHJpbmdzIGNvbnRhaW4gcmVwbGFjZWFibGUgcGFyYW1ldGVyIHZhbHVlc1xuICogYXMgaW5kaWNhdGVkIGJ5IGAlMWAsIGAlMmAsIGV0Yy4gVGhlIG51bWJlciBhZnRlciB0aGUgYCVgIGluZGljYXRlcyB0aGUgb3JkZXIgb2YgdGhlIHBhcmFtZXRlci4gVGhlIG9yZGVyaW5nIG9mXG4gKiBwYXJhbWV0ZXJzIGlzIGltcG9ydGFudCBiZWNhdXNlIHNvbWUgbGFuZ3VhZ2VzIG1heSBjaG9vc2UgdG8gcHV0IHRoZSBzZWNvbmQgcGFyYW1ldGVyIGJlZm9yZSB0aGUgZmlyc3QgaW4gaXRzXG4gKiB0cmFuc2xhdGlvbi4gQWxzbywgc29tZSBzdHJpbmdzIGFyZSByZW5kZXJlZCB1c2luZyBgbWFya2Rvd24tdG8tanN4YCBhbmQgdGh1cyBzdXBwb3J0IG1hcmtkb3duIGFuZCBpbmxpbmUgaHRtbC5cbiAqL1xuZXhwb3J0IHZhciBUcmFuc2xhdGFibGVTdHJpbmc7XG4oZnVuY3Rpb24gKFRyYW5zbGF0YWJsZVN0cmluZykge1xuICAgIC8qKiBGYWxsYmFjayB0aXRsZSBvZiBhbiBhcnJheSBpdGVtLCB1c2VkIGJ5IEFycmF5RmllbGQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJBcnJheUl0ZW1UaXRsZVwiXSA9IFwiSXRlbVwiO1xuICAgIC8qKiBNaXNzaW5nIGl0ZW1zIHJlYXNvbiwgdXNlZCBieSBBcnJheUZpZWxkICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiTWlzc2luZ0l0ZW1zXCJdID0gXCJNaXNzaW5nIGl0ZW1zIGRlZmluaXRpb25cIjtcbiAgICAvKiogWWVzIGxhYmVsLCB1c2VkIGJ5IEJvb2xlYW5GaWVsZCAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIlllc0xhYmVsXCJdID0gXCJZZXNcIjtcbiAgICAvKiogTm8gbGFiZWwsIHVzZWQgYnkgQm9vbGVhbkZpZWxkICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiTm9MYWJlbFwiXSA9IFwiTm9cIjtcbiAgICAvKiogQ2xvc2UgbGFiZWwsIHVzZWQgYnkgRXJyb3JMaXN0ICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiQ2xvc2VMYWJlbFwiXSA9IFwiQ2xvc2VcIjtcbiAgICAvKiogRXJyb3JzIGxhYmVsLCB1c2VkIGJ5IEVycm9yTGlzdCAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIkVycm9yc0xhYmVsXCJdID0gXCJFcnJvcnNcIjtcbiAgICAvKiogTmV3IGFkZGl0aW9uYWxQcm9wZXJ0aWVzIHN0cmluZyBkZWZhdWx0IHZhbHVlLCB1c2VkIGJ5IE9iamVjdEZpZWxkICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiTmV3U3RyaW5nRGVmYXVsdFwiXSA9IFwiTmV3IFZhbHVlXCI7XG4gICAgLyoqIEFkZCBidXR0b24gdGl0bGUsIHVzZWQgYnkgQWRkQnV0dG9uICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiQWRkQnV0dG9uXCJdID0gXCJBZGRcIjtcbiAgICAvKiogQWRkIGJ1dHRvbiB0aXRsZSwgdXNlZCBieSBBZGRCdXR0b24gKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJBZGRJdGVtQnV0dG9uXCJdID0gXCJBZGQgSXRlbVwiO1xuICAgIC8qKiBDb3B5IGJ1dHRvbiB0aXRsZSwgdXNlZCBieSBJY29uQnV0dG9uICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiQ29weUJ1dHRvblwiXSA9IFwiQ29weVwiO1xuICAgIC8qKiBNb3ZlIGRvd24gYnV0dG9uIHRpdGxlLCB1c2VkIGJ5IEljb25CdXR0b24gKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJNb3ZlRG93bkJ1dHRvblwiXSA9IFwiTW92ZSBkb3duXCI7XG4gICAgLyoqIE1vdmUgdXAgYnV0dG9uIHRpdGxlLCB1c2VkIGJ5IEljb25CdXR0b24gKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJNb3ZlVXBCdXR0b25cIl0gPSBcIk1vdmUgdXBcIjtcbiAgICAvKiogUmVtb3ZlIGJ1dHRvbiB0aXRsZSwgdXNlZCBieSBJY29uQnV0dG9uICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiUmVtb3ZlQnV0dG9uXCJdID0gXCJSZW1vdmVcIjtcbiAgICAvKiogTm93IGxhYmVsLCB1c2VkIGJ5IEFsdERhdGVXaWRnZXQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJOb3dMYWJlbFwiXSA9IFwiTm93XCI7XG4gICAgLyoqIENsZWFyIGxhYmVsLCB1c2VkIGJ5IEFsdERhdGVXaWRnZXQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJDbGVhckxhYmVsXCJdID0gXCJDbGVhclwiO1xuICAgIC8qKiBBcmlhIGRhdGUgbGFiZWwsIHVzZWQgYnkgRGF0ZVdpZGdldCAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIkFyaWFEYXRlTGFiZWxcIl0gPSBcIlNlbGVjdCBhIGRhdGVcIjtcbiAgICAvKiogRmlsZSBwcmV2aWV3IGxhYmVsLCB1c2VkIGJ5IEZpbGVXaWRnZXQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJQcmV2aWV3TGFiZWxcIl0gPSBcIlByZXZpZXdcIjtcbiAgICAvKiogRGVjcmVtZW50IGJ1dHRvbiBhcmlhIGxhYmVsLCB1c2VkIGJ5IFVwRG93bldpZGdldCAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIkRlY3JlbWVudEFyaWFMYWJlbFwiXSA9IFwiRGVjcmVhc2UgdmFsdWUgYnkgMVwiO1xuICAgIC8qKiBJbmNyZW1lbnQgYnV0dG9uIGFyaWEgbGFiZWwsIHVzZWQgYnkgVXBEb3duV2lkZ2V0ICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiSW5jcmVtZW50QXJpYUxhYmVsXCJdID0gXCJJbmNyZWFzZSB2YWx1ZSBieSAxXCI7XG4gICAgLy8gU3RyaW5ncyB3aXRoIHJlcGxhY2VhYmxlIHBhcmFtZXRlcnNcbiAgICAvKiogVW5rbm93biBmaWVsZCB0eXBlIHJlYXNvbiwgd2hlcmUgJTEgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSB0eXBlIGFzIHByb3ZpZGVkIGJ5IFNjaGVtYUZpZWxkICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiVW5rbm93bkZpZWxkVHlwZVwiXSA9IFwiVW5rbm93biBmaWVsZCB0eXBlICUxXCI7XG4gICAgLyoqIE9wdGlvbiBwcmVmaXgsIHdoZXJlICUxIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgb3B0aW9uIGluZGV4IGFzIHByb3ZpZGVkIGJ5IE11bHRpU2NoZW1hRmllbGQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJPcHRpb25QcmVmaXhcIl0gPSBcIk9wdGlvbiAlMVwiO1xuICAgIC8qKiBPcHRpb24gcHJlZml4LCB3aGVyZSAlMSBhbmQgJTIgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgc2NoZW1hIHRpdGxlIGFuZCBvcHRpb24gaW5kZXgsIHJlc3BlY3RpdmVseSBhcyBwcm92aWRlZCBieVxuICAgICAqIE11bHRpU2NoZW1hRmllbGRcbiAgICAgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJUaXRsZU9wdGlvblByZWZpeFwiXSA9IFwiJTEgb3B0aW9uICUyXCI7XG4gICAgLyoqIEtleSBsYWJlbCwgd2hlcmUgJTEgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgbGFiZWwgYXMgcHJvdmlkZWQgYnkgV3JhcElmQWRkaXRpb25hbFRlbXBsYXRlICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiS2V5TGFiZWxcIl0gPSBcIiUxIEtleVwiO1xuICAgIC8vIFN0cmluZ3Mgd2l0aCByZXBsYWNlYWJsZSBwYXJhbWV0ZXJzIEFORC9PUiB0aGF0IHN1cHBvcnQgbWFya2Rvd24gYW5kIGh0bWxcbiAgICAvKiogSW52YWxpZCBvYmplY3QgZmllbGQgY29uZmlndXJhdGlvbiBhcyBwcm92aWRlZCBieSB0aGUgT2JqZWN0RmllbGQuXG4gICAgICogTk9URTogVXNlIG1hcmtkb3duIG5vdGF0aW9uIHJhdGhlciB0aGFuIGh0bWwgdGFncy5cbiAgICAgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJJbnZhbGlkT2JqZWN0RmllbGRcIl0gPSBcIkludmFsaWQgXFxcIiUxXFxcIiBvYmplY3QgZmllbGQgY29uZmlndXJhdGlvbjogXyUyXy5cIjtcbiAgICAvKiogVW5zdXBwb3J0ZWQgZmllbGQgc2NoZW1hLCB1c2VkIGJ5IFVuc3VwcG9ydGVkRmllbGQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJVbnN1cHBvcnRlZEZpZWxkXCJdID0gXCJVbnN1cHBvcnRlZCBmaWVsZCBzY2hlbWEuXCI7XG4gICAgLyoqIFVuc3VwcG9ydGVkIGZpZWxkIHNjaGVtYSwgd2hlcmUgJTEgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgaWRTY2hlbWEuJGlkIGFzIHByb3ZpZGVkIGJ5IFVuc3VwcG9ydGVkRmllbGQuXG4gICAgICogTk9URTogVXNlIG1hcmtkb3duIG5vdGF0aW9uIHJhdGhlciB0aGFuIGh0bWwgdGFncy5cbiAgICAgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJVbnN1cHBvcnRlZEZpZWxkV2l0aElkXCJdID0gXCJVbnN1cHBvcnRlZCBmaWVsZCBzY2hlbWEgZm9yIGZpZWxkIGAlMWAuXCI7XG4gICAgLyoqIFVuc3VwcG9ydGVkIGZpZWxkIHNjaGVtYSwgd2hlcmUgJTEgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgcmVhc29uIHN0cmluZyBhcyBwcm92aWRlZCBieSBVbnN1cHBvcnRlZEZpZWxkLlxuICAgICAqIE5PVEU6IFVzZSBtYXJrZG93biBub3RhdGlvbiByYXRoZXIgdGhhbiBodG1sIHRhZ3MuXG4gICAgICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiVW5zdXBwb3J0ZWRGaWVsZFdpdGhSZWFzb25cIl0gPSBcIlVuc3VwcG9ydGVkIGZpZWxkIHNjaGVtYTogXyUxXy5cIjtcbiAgICAvKiogVW5zdXBwb3J0ZWQgZmllbGQgc2NoZW1hLCB3aGVyZSAlMSBhbmQgJTIgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgaWRTY2hlbWEuJGlkIGFuZCByZWFzb24gc3RyaW5ncywgcmVzcGVjdGl2ZWx5LFxuICAgICAqIGFzIHByb3ZpZGVkIGJ5IFVuc3VwcG9ydGVkRmllbGQuXG4gICAgICogTk9URTogVXNlIG1hcmtkb3duIG5vdGF0aW9uIHJhdGhlciB0aGFuIGh0bWwgdGFncy5cbiAgICAgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJVbnN1cHBvcnRlZEZpZWxkV2l0aElkQW5kUmVhc29uXCJdID0gXCJVbnN1cHBvcnRlZCBmaWVsZCBzY2hlbWEgZm9yIGZpZWxkIGAlMWA6IF8lMl8uXCI7XG4gICAgLyoqIEZpbGUgbmFtZSwgdHlwZSBhbmQgc2l6ZSBpbmZvLCB3aGVyZSAlMSwgJTIgYW5kICUzIHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlIGZpbGUgbmFtZSwgZmlsZSB0eXBlIGFuZCBmaWxlIHNpemUgYXNcbiAgICAgKiBwcm92aWRlZCBieSBGaWxlV2lkZ2V0XG4gICAgICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiRmlsZXNJbmZvXCJdID0gXCIqKiUxKiogKCUyLCAlMyBieXRlcylcIjtcbn0pKFRyYW5zbGF0YWJsZVN0cmluZyB8fCAoVHJhbnNsYXRhYmxlU3RyaW5nID0ge30pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVudW1zLmpzLm1hcCIsIi8qKiBAbGljZW5zZSBVUkkuanMgdjQuNC4xIChjKSAyMDExIEdhcnkgQ291cnQuIExpY2Vuc2U6IGh0dHA6Ly9naXRodWIuY29tL2dhcnljb3VydC91cmktanMgKi9cbihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG5cdHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IGZhY3RvcnkoZXhwb3J0cykgOlxuXHR0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWydleHBvcnRzJ10sIGZhY3RvcnkpIDpcblx0KGZhY3RvcnkoKGdsb2JhbC5VUkkgPSBnbG9iYWwuVVJJIHx8IHt9KSkpO1xufSh0aGlzLCAoZnVuY3Rpb24gKGV4cG9ydHMpIHsgJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBtZXJnZSgpIHtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgc2V0cyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICBzZXRzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIGlmIChzZXRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgc2V0c1swXSA9IHNldHNbMF0uc2xpY2UoMCwgLTEpO1xuICAgICAgICB2YXIgeGwgPSBzZXRzLmxlbmd0aCAtIDE7XG4gICAgICAgIGZvciAodmFyIHggPSAxOyB4IDwgeGw7ICsreCkge1xuICAgICAgICAgICAgc2V0c1t4XSA9IHNldHNbeF0uc2xpY2UoMSwgLTEpO1xuICAgICAgICB9XG4gICAgICAgIHNldHNbeGxdID0gc2V0c1t4bF0uc2xpY2UoMSk7XG4gICAgICAgIHJldHVybiBzZXRzLmpvaW4oJycpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBzZXRzWzBdO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHN1YmV4cChzdHIpIHtcbiAgICByZXR1cm4gXCIoPzpcIiArIHN0ciArIFwiKVwiO1xufVxuZnVuY3Rpb24gdHlwZU9mKG8pIHtcbiAgICByZXR1cm4gbyA9PT0gdW5kZWZpbmVkID8gXCJ1bmRlZmluZWRcIiA6IG8gPT09IG51bGwgPyBcIm51bGxcIiA6IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zcGxpdChcIiBcIikucG9wKCkuc3BsaXQoXCJdXCIpLnNoaWZ0KCkudG9Mb3dlckNhc2UoKTtcbn1cbmZ1bmN0aW9uIHRvVXBwZXJDYXNlKHN0cikge1xuICAgIHJldHVybiBzdHIudG9VcHBlckNhc2UoKTtcbn1cbmZ1bmN0aW9uIHRvQXJyYXkob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAhPT0gdW5kZWZpbmVkICYmIG9iaiAhPT0gbnVsbCA/IG9iaiBpbnN0YW5jZW9mIEFycmF5ID8gb2JqIDogdHlwZW9mIG9iai5sZW5ndGggIT09IFwibnVtYmVyXCIgfHwgb2JqLnNwbGl0IHx8IG9iai5zZXRJbnRlcnZhbCB8fCBvYmouY2FsbCA/IFtvYmpdIDogQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwob2JqKSA6IFtdO1xufVxuZnVuY3Rpb24gYXNzaWduKHRhcmdldCwgc291cmNlKSB7XG4gICAgdmFyIG9iaiA9IHRhcmdldDtcbiAgICBpZiAoc291cmNlKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgICAgIG9ialtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbn1cblxuZnVuY3Rpb24gYnVpbGRFeHBzKGlzSVJJKSB7XG4gICAgdmFyIEFMUEhBJCQgPSBcIltBLVphLXpdXCIsXG4gICAgICAgIENSJCA9IFwiW1xcXFx4MERdXCIsXG4gICAgICAgIERJR0lUJCQgPSBcIlswLTldXCIsXG4gICAgICAgIERRVU9URSQkID0gXCJbXFxcXHgyMl1cIixcbiAgICAgICAgSEVYRElHJCQgPSBtZXJnZShESUdJVCQkLCBcIltBLUZhLWZdXCIpLFxuICAgICAgICAvL2Nhc2UtaW5zZW5zaXRpdmVcbiAgICBMRiQkID0gXCJbXFxcXHgwQV1cIixcbiAgICAgICAgU1AkJCA9IFwiW1xcXFx4MjBdXCIsXG4gICAgICAgIFBDVF9FTkNPREVEJCA9IHN1YmV4cChzdWJleHAoXCIlW0VGZWZdXCIgKyBIRVhESUckJCArIFwiJVwiICsgSEVYRElHJCQgKyBIRVhESUckJCArIFwiJVwiICsgSEVYRElHJCQgKyBIRVhESUckJCkgKyBcInxcIiArIHN1YmV4cChcIiVbODlBLUZhLWZdXCIgKyBIRVhESUckJCArIFwiJVwiICsgSEVYRElHJCQgKyBIRVhESUckJCkgKyBcInxcIiArIHN1YmV4cChcIiVcIiArIEhFWERJRyQkICsgSEVYRElHJCQpKSxcbiAgICAgICAgLy9leHBhbmRlZFxuICAgIEdFTl9ERUxJTVMkJCA9IFwiW1xcXFw6XFxcXC9cXFxcP1xcXFwjXFxcXFtcXFxcXVxcXFxAXVwiLFxuICAgICAgICBTVUJfREVMSU1TJCQgPSBcIltcXFxcIVxcXFwkXFxcXCZcXFxcJ1xcXFwoXFxcXClcXFxcKlxcXFwrXFxcXCxcXFxcO1xcXFw9XVwiLFxuICAgICAgICBSRVNFUlZFRCQkID0gbWVyZ2UoR0VOX0RFTElNUyQkLCBTVUJfREVMSU1TJCQpLFxuICAgICAgICBVQ1NDSEFSJCQgPSBpc0lSSSA/IFwiW1xcXFx4QTAtXFxcXHUyMDBEXFxcXHUyMDEwLVxcXFx1MjAyOVxcXFx1MjAyRi1cXFxcdUQ3RkZcXFxcdUY5MDAtXFxcXHVGRENGXFxcXHVGREYwLVxcXFx1RkZFRl1cIiA6IFwiW11cIixcbiAgICAgICAgLy9zdWJzZXQsIGV4Y2x1ZGVzIGJpZGkgY29udHJvbCBjaGFyYWN0ZXJzXG4gICAgSVBSSVZBVEUkJCA9IGlzSVJJID8gXCJbXFxcXHVFMDAwLVxcXFx1RjhGRl1cIiA6IFwiW11cIixcbiAgICAgICAgLy9zdWJzZXRcbiAgICBVTlJFU0VSVkVEJCQgPSBtZXJnZShBTFBIQSQkLCBESUdJVCQkLCBcIltcXFxcLVxcXFwuXFxcXF9cXFxcfl1cIiwgVUNTQ0hBUiQkKSxcbiAgICAgICAgU0NIRU1FJCA9IHN1YmV4cChBTFBIQSQkICsgbWVyZ2UoQUxQSEEkJCwgRElHSVQkJCwgXCJbXFxcXCtcXFxcLVxcXFwuXVwiKSArIFwiKlwiKSxcbiAgICAgICAgVVNFUklORk8kID0gc3ViZXhwKHN1YmV4cChQQ1RfRU5DT0RFRCQgKyBcInxcIiArIG1lcmdlKFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkLCBcIltcXFxcOl1cIikpICsgXCIqXCIpLFxuICAgICAgICBERUNfT0NURVQkID0gc3ViZXhwKHN1YmV4cChcIjI1WzAtNV1cIikgKyBcInxcIiArIHN1YmV4cChcIjJbMC00XVwiICsgRElHSVQkJCkgKyBcInxcIiArIHN1YmV4cChcIjFcIiArIERJR0lUJCQgKyBESUdJVCQkKSArIFwifFwiICsgc3ViZXhwKFwiWzEtOV1cIiArIERJR0lUJCQpICsgXCJ8XCIgKyBESUdJVCQkKSxcbiAgICAgICAgREVDX09DVEVUX1JFTEFYRUQkID0gc3ViZXhwKHN1YmV4cChcIjI1WzAtNV1cIikgKyBcInxcIiArIHN1YmV4cChcIjJbMC00XVwiICsgRElHSVQkJCkgKyBcInxcIiArIHN1YmV4cChcIjFcIiArIERJR0lUJCQgKyBESUdJVCQkKSArIFwifFwiICsgc3ViZXhwKFwiMD9bMS05XVwiICsgRElHSVQkJCkgKyBcInwwPzA/XCIgKyBESUdJVCQkKSxcbiAgICAgICAgLy9yZWxheGVkIHBhcnNpbmcgcnVsZXNcbiAgICBJUFY0QUREUkVTUyQgPSBzdWJleHAoREVDX09DVEVUX1JFTEFYRUQkICsgXCJcXFxcLlwiICsgREVDX09DVEVUX1JFTEFYRUQkICsgXCJcXFxcLlwiICsgREVDX09DVEVUX1JFTEFYRUQkICsgXCJcXFxcLlwiICsgREVDX09DVEVUX1JFTEFYRUQkKSxcbiAgICAgICAgSDE2JCA9IHN1YmV4cChIRVhESUckJCArIFwiezEsNH1cIiksXG4gICAgICAgIExTMzIkID0gc3ViZXhwKHN1YmV4cChIMTYkICsgXCJcXFxcOlwiICsgSDE2JCkgKyBcInxcIiArIElQVjRBRERSRVNTJCksXG4gICAgICAgIElQVjZBRERSRVNTMSQgPSBzdWJleHAoc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7Nn1cIiArIExTMzIkKSxcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICA2KCBoMTYgXCI6XCIgKSBsczMyXG4gICAgSVBWNkFERFJFU1MyJCA9IHN1YmV4cChcIlxcXFw6XFxcXDpcIiArIHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezV9XCIgKyBMUzMyJCksXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgIFwiOjpcIiA1KCBoMTYgXCI6XCIgKSBsczMyXG4gICAgSVBWNkFERFJFU1MzJCA9IHN1YmV4cChzdWJleHAoSDE2JCkgKyBcIj9cXFxcOlxcXFw6XCIgKyBzdWJleHAoSDE2JCArIFwiXFxcXDpcIikgKyBcIns0fVwiICsgTFMzMiQpLFxuICAgICAgICAvL1sgICAgICAgICAgICAgICBoMTYgXSBcIjo6XCIgNCggaDE2IFwiOlwiICkgbHMzMlxuICAgIElQVjZBRERSRVNTNCQgPSBzdWJleHAoc3ViZXhwKHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezAsMX1cIiArIEgxNiQpICsgXCI/XFxcXDpcXFxcOlwiICsgc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7M31cIiArIExTMzIkKSxcbiAgICAgICAgLy9bICoxKCBoMTYgXCI6XCIgKSBoMTYgXSBcIjo6XCIgMyggaDE2IFwiOlwiICkgbHMzMlxuICAgIElQVjZBRERSRVNTNSQgPSBzdWJleHAoc3ViZXhwKHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezAsMn1cIiArIEgxNiQpICsgXCI/XFxcXDpcXFxcOlwiICsgc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7Mn1cIiArIExTMzIkKSxcbiAgICAgICAgLy9bICoyKCBoMTYgXCI6XCIgKSBoMTYgXSBcIjo6XCIgMiggaDE2IFwiOlwiICkgbHMzMlxuICAgIElQVjZBRERSRVNTNiQgPSBzdWJleHAoc3ViZXhwKHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezAsM31cIiArIEgxNiQpICsgXCI/XFxcXDpcXFxcOlwiICsgSDE2JCArIFwiXFxcXDpcIiArIExTMzIkKSxcbiAgICAgICAgLy9bICozKCBoMTYgXCI6XCIgKSBoMTYgXSBcIjo6XCIgICAgaDE2IFwiOlwiICAgbHMzMlxuICAgIElQVjZBRERSRVNTNyQgPSBzdWJleHAoc3ViZXhwKHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezAsNH1cIiArIEgxNiQpICsgXCI/XFxcXDpcXFxcOlwiICsgTFMzMiQpLFxuICAgICAgICAvL1sgKjQoIGgxNiBcIjpcIiApIGgxNiBdIFwiOjpcIiAgICAgICAgICAgICAgbHMzMlxuICAgIElQVjZBRERSRVNTOCQgPSBzdWJleHAoc3ViZXhwKHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezAsNX1cIiArIEgxNiQpICsgXCI/XFxcXDpcXFxcOlwiICsgSDE2JCksXG4gICAgICAgIC8vWyAqNSggaDE2IFwiOlwiICkgaDE2IF0gXCI6OlwiICAgICAgICAgICAgICBoMTZcbiAgICBJUFY2QUREUkVTUzkkID0gc3ViZXhwKHN1YmV4cChzdWJleHAoSDE2JCArIFwiXFxcXDpcIikgKyBcInswLDZ9XCIgKyBIMTYkKSArIFwiP1xcXFw6XFxcXDpcIiksXG4gICAgICAgIC8vWyAqNiggaDE2IFwiOlwiICkgaDE2IF0gXCI6OlwiXG4gICAgSVBWNkFERFJFU1MkID0gc3ViZXhwKFtJUFY2QUREUkVTUzEkLCBJUFY2QUREUkVTUzIkLCBJUFY2QUREUkVTUzMkLCBJUFY2QUREUkVTUzQkLCBJUFY2QUREUkVTUzUkLCBJUFY2QUREUkVTUzYkLCBJUFY2QUREUkVTUzckLCBJUFY2QUREUkVTUzgkLCBJUFY2QUREUkVTUzkkXS5qb2luKFwifFwiKSksXG4gICAgICAgIFpPTkVJRCQgPSBzdWJleHAoc3ViZXhwKFVOUkVTRVJWRUQkJCArIFwifFwiICsgUENUX0VOQ09ERUQkKSArIFwiK1wiKSxcbiAgICAgICAgLy9SRkMgNjg3NFxuICAgIElQVjZBRERSWiQgPSBzdWJleHAoSVBWNkFERFJFU1MkICsgXCJcXFxcJTI1XCIgKyBaT05FSUQkKSxcbiAgICAgICAgLy9SRkMgNjg3NFxuICAgIElQVjZBRERSWl9SRUxBWEVEJCA9IHN1YmV4cChJUFY2QUREUkVTUyQgKyBzdWJleHAoXCJcXFxcJTI1fFxcXFwlKD8hXCIgKyBIRVhESUckJCArIFwiezJ9KVwiKSArIFpPTkVJRCQpLFxuICAgICAgICAvL1JGQyA2ODc0LCB3aXRoIHJlbGF4ZWQgcGFyc2luZyBydWxlc1xuICAgIElQVkZVVFVSRSQgPSBzdWJleHAoXCJbdlZdXCIgKyBIRVhESUckJCArIFwiK1xcXFwuXCIgKyBtZXJnZShVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCwgXCJbXFxcXDpdXCIpICsgXCIrXCIpLFxuICAgICAgICBJUF9MSVRFUkFMJCA9IHN1YmV4cChcIlxcXFxbXCIgKyBzdWJleHAoSVBWNkFERFJaX1JFTEFYRUQkICsgXCJ8XCIgKyBJUFY2QUREUkVTUyQgKyBcInxcIiArIElQVkZVVFVSRSQpICsgXCJcXFxcXVwiKSxcbiAgICAgICAgLy9SRkMgNjg3NFxuICAgIFJFR19OQU1FJCA9IHN1YmV4cChzdWJleHAoUENUX0VOQ09ERUQkICsgXCJ8XCIgKyBtZXJnZShVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCkpICsgXCIqXCIpLFxuICAgICAgICBIT1NUJCA9IHN1YmV4cChJUF9MSVRFUkFMJCArIFwifFwiICsgSVBWNEFERFJFU1MkICsgXCIoPyFcIiArIFJFR19OQU1FJCArIFwiKVwiICsgXCJ8XCIgKyBSRUdfTkFNRSQpLFxuICAgICAgICBQT1JUJCA9IHN1YmV4cChESUdJVCQkICsgXCIqXCIpLFxuICAgICAgICBBVVRIT1JJVFkkID0gc3ViZXhwKHN1YmV4cChVU0VSSU5GTyQgKyBcIkBcIikgKyBcIj9cIiArIEhPU1QkICsgc3ViZXhwKFwiXFxcXDpcIiArIFBPUlQkKSArIFwiP1wiKSxcbiAgICAgICAgUENIQVIkID0gc3ViZXhwKFBDVF9FTkNPREVEJCArIFwifFwiICsgbWVyZ2UoVU5SRVNFUlZFRCQkLCBTVUJfREVMSU1TJCQsIFwiW1xcXFw6XFxcXEBdXCIpKSxcbiAgICAgICAgU0VHTUVOVCQgPSBzdWJleHAoUENIQVIkICsgXCIqXCIpLFxuICAgICAgICBTRUdNRU5UX05aJCA9IHN1YmV4cChQQ0hBUiQgKyBcIitcIiksXG4gICAgICAgIFNFR01FTlRfTlpfTkMkID0gc3ViZXhwKHN1YmV4cChQQ1RfRU5DT0RFRCQgKyBcInxcIiArIG1lcmdlKFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkLCBcIltcXFxcQF1cIikpICsgXCIrXCIpLFxuICAgICAgICBQQVRIX0FCRU1QVFkkID0gc3ViZXhwKHN1YmV4cChcIlxcXFwvXCIgKyBTRUdNRU5UJCkgKyBcIipcIiksXG4gICAgICAgIFBBVEhfQUJTT0xVVEUkID0gc3ViZXhwKFwiXFxcXC9cIiArIHN1YmV4cChTRUdNRU5UX05aJCArIFBBVEhfQUJFTVBUWSQpICsgXCI/XCIpLFxuICAgICAgICAvL3NpbXBsaWZpZWRcbiAgICBQQVRIX05PU0NIRU1FJCA9IHN1YmV4cChTRUdNRU5UX05aX05DJCArIFBBVEhfQUJFTVBUWSQpLFxuICAgICAgICAvL3NpbXBsaWZpZWRcbiAgICBQQVRIX1JPT1RMRVNTJCA9IHN1YmV4cChTRUdNRU5UX05aJCArIFBBVEhfQUJFTVBUWSQpLFxuICAgICAgICAvL3NpbXBsaWZpZWRcbiAgICBQQVRIX0VNUFRZJCA9IFwiKD8hXCIgKyBQQ0hBUiQgKyBcIilcIixcbiAgICAgICAgUEFUSCQgPSBzdWJleHAoUEFUSF9BQkVNUFRZJCArIFwifFwiICsgUEFUSF9BQlNPTFVURSQgKyBcInxcIiArIFBBVEhfTk9TQ0hFTUUkICsgXCJ8XCIgKyBQQVRIX1JPT1RMRVNTJCArIFwifFwiICsgUEFUSF9FTVBUWSQpLFxuICAgICAgICBRVUVSWSQgPSBzdWJleHAoc3ViZXhwKFBDSEFSJCArIFwifFwiICsgbWVyZ2UoXCJbXFxcXC9cXFxcP11cIiwgSVBSSVZBVEUkJCkpICsgXCIqXCIpLFxuICAgICAgICBGUkFHTUVOVCQgPSBzdWJleHAoc3ViZXhwKFBDSEFSJCArIFwifFtcXFxcL1xcXFw/XVwiKSArIFwiKlwiKSxcbiAgICAgICAgSElFUl9QQVJUJCA9IHN1YmV4cChzdWJleHAoXCJcXFxcL1xcXFwvXCIgKyBBVVRIT1JJVFkkICsgUEFUSF9BQkVNUFRZJCkgKyBcInxcIiArIFBBVEhfQUJTT0xVVEUkICsgXCJ8XCIgKyBQQVRIX1JPT1RMRVNTJCArIFwifFwiICsgUEFUSF9FTVBUWSQpLFxuICAgICAgICBVUkkkID0gc3ViZXhwKFNDSEVNRSQgKyBcIlxcXFw6XCIgKyBISUVSX1BBUlQkICsgc3ViZXhwKFwiXFxcXD9cIiArIFFVRVJZJCkgKyBcIj9cIiArIHN1YmV4cChcIlxcXFwjXCIgKyBGUkFHTUVOVCQpICsgXCI/XCIpLFxuICAgICAgICBSRUxBVElWRV9QQVJUJCA9IHN1YmV4cChzdWJleHAoXCJcXFxcL1xcXFwvXCIgKyBBVVRIT1JJVFkkICsgUEFUSF9BQkVNUFRZJCkgKyBcInxcIiArIFBBVEhfQUJTT0xVVEUkICsgXCJ8XCIgKyBQQVRIX05PU0NIRU1FJCArIFwifFwiICsgUEFUSF9FTVBUWSQpLFxuICAgICAgICBSRUxBVElWRSQgPSBzdWJleHAoUkVMQVRJVkVfUEFSVCQgKyBzdWJleHAoXCJcXFxcP1wiICsgUVVFUlkkKSArIFwiP1wiICsgc3ViZXhwKFwiXFxcXCNcIiArIEZSQUdNRU5UJCkgKyBcIj9cIiksXG4gICAgICAgIFVSSV9SRUZFUkVOQ0UkID0gc3ViZXhwKFVSSSQgKyBcInxcIiArIFJFTEFUSVZFJCksXG4gICAgICAgIEFCU09MVVRFX1VSSSQgPSBzdWJleHAoU0NIRU1FJCArIFwiXFxcXDpcIiArIEhJRVJfUEFSVCQgKyBzdWJleHAoXCJcXFxcP1wiICsgUVVFUlkkKSArIFwiP1wiKSxcbiAgICAgICAgR0VORVJJQ19SRUYkID0gXCJeKFwiICsgU0NIRU1FJCArIFwiKVxcXFw6XCIgKyBzdWJleHAoc3ViZXhwKFwiXFxcXC9cXFxcLyhcIiArIHN1YmV4cChcIihcIiArIFVTRVJJTkZPJCArIFwiKUBcIikgKyBcIj8oXCIgKyBIT1NUJCArIFwiKVwiICsgc3ViZXhwKFwiXFxcXDooXCIgKyBQT1JUJCArIFwiKVwiKSArIFwiPylcIikgKyBcIj8oXCIgKyBQQVRIX0FCRU1QVFkkICsgXCJ8XCIgKyBQQVRIX0FCU09MVVRFJCArIFwifFwiICsgUEFUSF9ST09UTEVTUyQgKyBcInxcIiArIFBBVEhfRU1QVFkkICsgXCIpXCIpICsgc3ViZXhwKFwiXFxcXD8oXCIgKyBRVUVSWSQgKyBcIilcIikgKyBcIj9cIiArIHN1YmV4cChcIlxcXFwjKFwiICsgRlJBR01FTlQkICsgXCIpXCIpICsgXCI/JFwiLFxuICAgICAgICBSRUxBVElWRV9SRUYkID0gXCJeKCl7MH1cIiArIHN1YmV4cChzdWJleHAoXCJcXFxcL1xcXFwvKFwiICsgc3ViZXhwKFwiKFwiICsgVVNFUklORk8kICsgXCIpQFwiKSArIFwiPyhcIiArIEhPU1QkICsgXCIpXCIgKyBzdWJleHAoXCJcXFxcOihcIiArIFBPUlQkICsgXCIpXCIpICsgXCI/KVwiKSArIFwiPyhcIiArIFBBVEhfQUJFTVBUWSQgKyBcInxcIiArIFBBVEhfQUJTT0xVVEUkICsgXCJ8XCIgKyBQQVRIX05PU0NIRU1FJCArIFwifFwiICsgUEFUSF9FTVBUWSQgKyBcIilcIikgKyBzdWJleHAoXCJcXFxcPyhcIiArIFFVRVJZJCArIFwiKVwiKSArIFwiP1wiICsgc3ViZXhwKFwiXFxcXCMoXCIgKyBGUkFHTUVOVCQgKyBcIilcIikgKyBcIj8kXCIsXG4gICAgICAgIEFCU09MVVRFX1JFRiQgPSBcIl4oXCIgKyBTQ0hFTUUkICsgXCIpXFxcXDpcIiArIHN1YmV4cChzdWJleHAoXCJcXFxcL1xcXFwvKFwiICsgc3ViZXhwKFwiKFwiICsgVVNFUklORk8kICsgXCIpQFwiKSArIFwiPyhcIiArIEhPU1QkICsgXCIpXCIgKyBzdWJleHAoXCJcXFxcOihcIiArIFBPUlQkICsgXCIpXCIpICsgXCI/KVwiKSArIFwiPyhcIiArIFBBVEhfQUJFTVBUWSQgKyBcInxcIiArIFBBVEhfQUJTT0xVVEUkICsgXCJ8XCIgKyBQQVRIX1JPT1RMRVNTJCArIFwifFwiICsgUEFUSF9FTVBUWSQgKyBcIilcIikgKyBzdWJleHAoXCJcXFxcPyhcIiArIFFVRVJZJCArIFwiKVwiKSArIFwiPyRcIixcbiAgICAgICAgU0FNRURPQ19SRUYkID0gXCJeXCIgKyBzdWJleHAoXCJcXFxcIyhcIiArIEZSQUdNRU5UJCArIFwiKVwiKSArIFwiPyRcIixcbiAgICAgICAgQVVUSE9SSVRZX1JFRiQgPSBcIl5cIiArIHN1YmV4cChcIihcIiArIFVTRVJJTkZPJCArIFwiKUBcIikgKyBcIj8oXCIgKyBIT1NUJCArIFwiKVwiICsgc3ViZXhwKFwiXFxcXDooXCIgKyBQT1JUJCArIFwiKVwiKSArIFwiPyRcIjtcbiAgICByZXR1cm4ge1xuICAgICAgICBOT1RfU0NIRU1FOiBuZXcgUmVnRXhwKG1lcmdlKFwiW15dXCIsIEFMUEhBJCQsIERJR0lUJCQsIFwiW1xcXFwrXFxcXC1cXFxcLl1cIiksIFwiZ1wiKSxcbiAgICAgICAgTk9UX1VTRVJJTkZPOiBuZXcgUmVnRXhwKG1lcmdlKFwiW15cXFxcJVxcXFw6XVwiLCBVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCksIFwiZ1wiKSxcbiAgICAgICAgTk9UX0hPU1Q6IG5ldyBSZWdFeHAobWVyZ2UoXCJbXlxcXFwlXFxcXFtcXFxcXVxcXFw6XVwiLCBVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCksIFwiZ1wiKSxcbiAgICAgICAgTk9UX1BBVEg6IG5ldyBSZWdFeHAobWVyZ2UoXCJbXlxcXFwlXFxcXC9cXFxcOlxcXFxAXVwiLCBVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCksIFwiZ1wiKSxcbiAgICAgICAgTk9UX1BBVEhfTk9TQ0hFTUU6IG5ldyBSZWdFeHAobWVyZ2UoXCJbXlxcXFwlXFxcXC9cXFxcQF1cIiwgVU5SRVNFUlZFRCQkLCBTVUJfREVMSU1TJCQpLCBcImdcIiksXG4gICAgICAgIE5PVF9RVUVSWTogbmV3IFJlZ0V4cChtZXJnZShcIlteXFxcXCVdXCIsIFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkLCBcIltcXFxcOlxcXFxAXFxcXC9cXFxcP11cIiwgSVBSSVZBVEUkJCksIFwiZ1wiKSxcbiAgICAgICAgTk9UX0ZSQUdNRU5UOiBuZXcgUmVnRXhwKG1lcmdlKFwiW15cXFxcJV1cIiwgVU5SRVNFUlZFRCQkLCBTVUJfREVMSU1TJCQsIFwiW1xcXFw6XFxcXEBcXFxcL1xcXFw/XVwiKSwgXCJnXCIpLFxuICAgICAgICBFU0NBUEU6IG5ldyBSZWdFeHAobWVyZ2UoXCJbXl1cIiwgVU5SRVNFUlZFRCQkLCBTVUJfREVMSU1TJCQpLCBcImdcIiksXG4gICAgICAgIFVOUkVTRVJWRUQ6IG5ldyBSZWdFeHAoVU5SRVNFUlZFRCQkLCBcImdcIiksXG4gICAgICAgIE9USEVSX0NIQVJTOiBuZXcgUmVnRXhwKG1lcmdlKFwiW15cXFxcJV1cIiwgVU5SRVNFUlZFRCQkLCBSRVNFUlZFRCQkKSwgXCJnXCIpLFxuICAgICAgICBQQ1RfRU5DT0RFRDogbmV3IFJlZ0V4cChQQ1RfRU5DT0RFRCQsIFwiZ1wiKSxcbiAgICAgICAgSVBWNEFERFJFU1M6IG5ldyBSZWdFeHAoXCJeKFwiICsgSVBWNEFERFJFU1MkICsgXCIpJFwiKSxcbiAgICAgICAgSVBWNkFERFJFU1M6IG5ldyBSZWdFeHAoXCJeXFxcXFs/KFwiICsgSVBWNkFERFJFU1MkICsgXCIpXCIgKyBzdWJleHAoc3ViZXhwKFwiXFxcXCUyNXxcXFxcJSg/IVwiICsgSEVYRElHJCQgKyBcInsyfSlcIikgKyBcIihcIiArIFpPTkVJRCQgKyBcIilcIikgKyBcIj9cXFxcXT8kXCIpIC8vUkZDIDY4NzQsIHdpdGggcmVsYXhlZCBwYXJzaW5nIHJ1bGVzXG4gICAgfTtcbn1cbnZhciBVUklfUFJPVE9DT0wgPSBidWlsZEV4cHMoZmFsc2UpO1xuXG52YXIgSVJJX1BST1RPQ09MID0gYnVpbGRFeHBzKHRydWUpO1xuXG52YXIgc2xpY2VkVG9BcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gc2xpY2VJdGVyYXRvcihhcnIsIGkpIHtcbiAgICB2YXIgX2FyciA9IFtdO1xuICAgIHZhciBfbiA9IHRydWU7XG4gICAgdmFyIF9kID0gZmFsc2U7XG4gICAgdmFyIF9lID0gdW5kZWZpbmVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIGZvciAodmFyIF9pID0gYXJyW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcbiAgICAgICAgX2Fyci5wdXNoKF9zLnZhbHVlKTtcblxuICAgICAgICBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBfZCA9IHRydWU7XG4gICAgICBfZSA9IGVycjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSkgX2lbXCJyZXR1cm5cIl0oKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChfZCkgdGhyb3cgX2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIF9hcnI7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGFyciwgaSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfSBlbHNlIGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGFycikpIHtcbiAgICAgIHJldHVybiBzbGljZUl0ZXJhdG9yKGFyciwgaSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpO1xuICAgIH1cbiAgfTtcbn0oKTtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxudmFyIHRvQ29uc3VtYWJsZUFycmF5ID0gZnVuY3Rpb24gKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBBcnJheShhcnIubGVuZ3RoKTsgaSA8IGFyci5sZW5ndGg7IGkrKykgYXJyMltpXSA9IGFycltpXTtcblxuICAgIHJldHVybiBhcnIyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBBcnJheS5mcm9tKGFycik7XG4gIH1cbn07XG5cbi8qKiBIaWdoZXN0IHBvc2l0aXZlIHNpZ25lZCAzMi1iaXQgZmxvYXQgdmFsdWUgKi9cblxudmFyIG1heEludCA9IDIxNDc0ODM2NDc7IC8vIGFrYS4gMHg3RkZGRkZGRiBvciAyXjMxLTFcblxuLyoqIEJvb3RzdHJpbmcgcGFyYW1ldGVycyAqL1xudmFyIGJhc2UgPSAzNjtcbnZhciB0TWluID0gMTtcbnZhciB0TWF4ID0gMjY7XG52YXIgc2tldyA9IDM4O1xudmFyIGRhbXAgPSA3MDA7XG52YXIgaW5pdGlhbEJpYXMgPSA3MjtcbnZhciBpbml0aWFsTiA9IDEyODsgLy8gMHg4MFxudmFyIGRlbGltaXRlciA9ICctJzsgLy8gJ1xceDJEJ1xuXG4vKiogUmVndWxhciBleHByZXNzaW9ucyAqL1xudmFyIHJlZ2V4UHVueWNvZGUgPSAvXnhuLS0vO1xudmFyIHJlZ2V4Tm9uQVNDSUkgPSAvW15cXDAtXFx4N0VdLzsgLy8gbm9uLUFTQ0lJIGNoYXJzXG52YXIgcmVnZXhTZXBhcmF0b3JzID0gL1tcXHgyRVxcdTMwMDJcXHVGRjBFXFx1RkY2MV0vZzsgLy8gUkZDIDM0OTAgc2VwYXJhdG9yc1xuXG4vKiogRXJyb3IgbWVzc2FnZXMgKi9cbnZhciBlcnJvcnMgPSB7XG5cdCdvdmVyZmxvdyc6ICdPdmVyZmxvdzogaW5wdXQgbmVlZHMgd2lkZXIgaW50ZWdlcnMgdG8gcHJvY2VzcycsXG5cdCdub3QtYmFzaWMnOiAnSWxsZWdhbCBpbnB1dCA+PSAweDgwIChub3QgYSBiYXNpYyBjb2RlIHBvaW50KScsXG5cdCdpbnZhbGlkLWlucHV0JzogJ0ludmFsaWQgaW5wdXQnXG59O1xuXG4vKiogQ29udmVuaWVuY2Ugc2hvcnRjdXRzICovXG52YXIgYmFzZU1pbnVzVE1pbiA9IGJhc2UgLSB0TWluO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciBzdHJpbmdGcm9tQ2hhckNvZGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyoqXG4gKiBBIGdlbmVyaWMgZXJyb3IgdXRpbGl0eSBmdW5jdGlvbi5cbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZSBUaGUgZXJyb3IgdHlwZS5cbiAqIEByZXR1cm5zIHtFcnJvcn0gVGhyb3dzIGEgYFJhbmdlRXJyb3JgIHdpdGggdGhlIGFwcGxpY2FibGUgZXJyb3IgbWVzc2FnZS5cbiAqL1xuZnVuY3Rpb24gZXJyb3IkMSh0eXBlKSB7XG5cdHRocm93IG5ldyBSYW5nZUVycm9yKGVycm9yc1t0eXBlXSk7XG59XG5cbi8qKlxuICogQSBnZW5lcmljIGBBcnJheSNtYXBgIHV0aWxpdHkgZnVuY3Rpb24uXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBldmVyeSBhcnJheVxuICogaXRlbS5cbiAqIEByZXR1cm5zIHtBcnJheX0gQSBuZXcgYXJyYXkgb2YgdmFsdWVzIHJldHVybmVkIGJ5IHRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gbWFwKGFycmF5LCBmbikge1xuXHR2YXIgcmVzdWx0ID0gW107XG5cdHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cdHdoaWxlIChsZW5ndGgtLSkge1xuXHRcdHJlc3VsdFtsZW5ndGhdID0gZm4oYXJyYXlbbGVuZ3RoXSk7XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBBIHNpbXBsZSBgQXJyYXkjbWFwYC1saWtlIHdyYXBwZXIgdG8gd29yayB3aXRoIGRvbWFpbiBuYW1lIHN0cmluZ3Mgb3IgZW1haWxcbiAqIGFkZHJlc3Nlcy5cbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gZG9tYWluIFRoZSBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5XG4gKiBjaGFyYWN0ZXIuXG4gKiBAcmV0dXJucyB7QXJyYXl9IEEgbmV3IHN0cmluZyBvZiBjaGFyYWN0ZXJzIHJldHVybmVkIGJ5IHRoZSBjYWxsYmFja1xuICogZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1hcERvbWFpbihzdHJpbmcsIGZuKSB7XG5cdHZhciBwYXJ0cyA9IHN0cmluZy5zcGxpdCgnQCcpO1xuXHR2YXIgcmVzdWx0ID0gJyc7XG5cdGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7XG5cdFx0Ly8gSW4gZW1haWwgYWRkcmVzc2VzLCBvbmx5IHRoZSBkb21haW4gbmFtZSBzaG91bGQgYmUgcHVueWNvZGVkLiBMZWF2ZVxuXHRcdC8vIHRoZSBsb2NhbCBwYXJ0IChpLmUuIGV2ZXJ5dGhpbmcgdXAgdG8gYEBgKSBpbnRhY3QuXG5cdFx0cmVzdWx0ID0gcGFydHNbMF0gKyAnQCc7XG5cdFx0c3RyaW5nID0gcGFydHNbMV07XG5cdH1cblx0Ly8gQXZvaWQgYHNwbGl0KHJlZ2V4KWAgZm9yIElFOCBjb21wYXRpYmlsaXR5LiBTZWUgIzE3LlxuXHRzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShyZWdleFNlcGFyYXRvcnMsICdcXHgyRScpO1xuXHR2YXIgbGFiZWxzID0gc3RyaW5nLnNwbGl0KCcuJyk7XG5cdHZhciBlbmNvZGVkID0gbWFwKGxhYmVscywgZm4pLmpvaW4oJy4nKTtcblx0cmV0dXJuIHJlc3VsdCArIGVuY29kZWQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBudW1lcmljIGNvZGUgcG9pbnRzIG9mIGVhY2ggVW5pY29kZVxuICogY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcuIFdoaWxlIEphdmFTY3JpcHQgdXNlcyBVQ1MtMiBpbnRlcm5hbGx5LFxuICogdGhpcyBmdW5jdGlvbiB3aWxsIGNvbnZlcnQgYSBwYWlyIG9mIHN1cnJvZ2F0ZSBoYWx2ZXMgKGVhY2ggb2Ygd2hpY2hcbiAqIFVDUy0yIGV4cG9zZXMgYXMgc2VwYXJhdGUgY2hhcmFjdGVycykgaW50byBhIHNpbmdsZSBjb2RlIHBvaW50LFxuICogbWF0Y2hpbmcgVVRGLTE2LlxuICogQHNlZSBgcHVueWNvZGUudWNzMi5lbmNvZGVgXG4gKiBAc2VlIDxodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC1lbmNvZGluZz5cbiAqIEBtZW1iZXJPZiBwdW55Y29kZS51Y3MyXG4gKiBAbmFtZSBkZWNvZGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJpbmcgVGhlIFVuaWNvZGUgaW5wdXQgc3RyaW5nIChVQ1MtMikuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFRoZSBuZXcgYXJyYXkgb2YgY29kZSBwb2ludHMuXG4gKi9cbmZ1bmN0aW9uIHVjczJkZWNvZGUoc3RyaW5nKSB7XG5cdHZhciBvdXRwdXQgPSBbXTtcblx0dmFyIGNvdW50ZXIgPSAwO1xuXHR2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcblx0d2hpbGUgKGNvdW50ZXIgPCBsZW5ndGgpIHtcblx0XHR2YXIgdmFsdWUgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuXHRcdGlmICh2YWx1ZSA+PSAweEQ4MDAgJiYgdmFsdWUgPD0gMHhEQkZGICYmIGNvdW50ZXIgPCBsZW5ndGgpIHtcblx0XHRcdC8vIEl0J3MgYSBoaWdoIHN1cnJvZ2F0ZSwgYW5kIHRoZXJlIGlzIGEgbmV4dCBjaGFyYWN0ZXIuXG5cdFx0XHR2YXIgZXh0cmEgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuXHRcdFx0aWYgKChleHRyYSAmIDB4RkMwMCkgPT0gMHhEQzAwKSB7XG5cdFx0XHRcdC8vIExvdyBzdXJyb2dhdGUuXG5cdFx0XHRcdG91dHB1dC5wdXNoKCgodmFsdWUgJiAweDNGRikgPDwgMTApICsgKGV4dHJhICYgMHgzRkYpICsgMHgxMDAwMCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBJdCdzIGFuIHVubWF0Y2hlZCBzdXJyb2dhdGU7IG9ubHkgYXBwZW5kIHRoaXMgY29kZSB1bml0LCBpbiBjYXNlIHRoZVxuXHRcdFx0XHQvLyBuZXh0IGNvZGUgdW5pdCBpcyB0aGUgaGlnaCBzdXJyb2dhdGUgb2YgYSBzdXJyb2dhdGUgcGFpci5cblx0XHRcdFx0b3V0cHV0LnB1c2godmFsdWUpO1xuXHRcdFx0XHRjb3VudGVyLS07XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdG91dHB1dC5wdXNoKHZhbHVlKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG91dHB1dDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgc3RyaW5nIGJhc2VkIG9uIGFuIGFycmF5IG9mIG51bWVyaWMgY29kZSBwb2ludHMuXG4gKiBAc2VlIGBwdW55Y29kZS51Y3MyLmRlY29kZWBcbiAqIEBtZW1iZXJPZiBwdW55Y29kZS51Y3MyXG4gKiBAbmFtZSBlbmNvZGVcbiAqIEBwYXJhbSB7QXJyYXl9IGNvZGVQb2ludHMgVGhlIGFycmF5IG9mIG51bWVyaWMgY29kZSBwb2ludHMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgbmV3IFVuaWNvZGUgc3RyaW5nIChVQ1MtMikuXG4gKi9cbnZhciB1Y3MyZW5jb2RlID0gZnVuY3Rpb24gdWNzMmVuY29kZShhcnJheSkge1xuXHRyZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQuYXBwbHkoU3RyaW5nLCB0b0NvbnN1bWFibGVBcnJheShhcnJheSkpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGJhc2ljIGNvZGUgcG9pbnQgaW50byBhIGRpZ2l0L2ludGVnZXIuXG4gKiBAc2VlIGBkaWdpdFRvQmFzaWMoKWBcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge051bWJlcn0gY29kZVBvaW50IFRoZSBiYXNpYyBudW1lcmljIGNvZGUgcG9pbnQgdmFsdWUuXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgbnVtZXJpYyB2YWx1ZSBvZiBhIGJhc2ljIGNvZGUgcG9pbnQgKGZvciB1c2UgaW5cbiAqIHJlcHJlc2VudGluZyBpbnRlZ2VycykgaW4gdGhlIHJhbmdlIGAwYCB0byBgYmFzZSAtIDFgLCBvciBgYmFzZWAgaWZcbiAqIHRoZSBjb2RlIHBvaW50IGRvZXMgbm90IHJlcHJlc2VudCBhIHZhbHVlLlxuICovXG52YXIgYmFzaWNUb0RpZ2l0ID0gZnVuY3Rpb24gYmFzaWNUb0RpZ2l0KGNvZGVQb2ludCkge1xuXHRpZiAoY29kZVBvaW50IC0gMHgzMCA8IDB4MEEpIHtcblx0XHRyZXR1cm4gY29kZVBvaW50IC0gMHgxNjtcblx0fVxuXHRpZiAoY29kZVBvaW50IC0gMHg0MSA8IDB4MUEpIHtcblx0XHRyZXR1cm4gY29kZVBvaW50IC0gMHg0MTtcblx0fVxuXHRpZiAoY29kZVBvaW50IC0gMHg2MSA8IDB4MUEpIHtcblx0XHRyZXR1cm4gY29kZVBvaW50IC0gMHg2MTtcblx0fVxuXHRyZXR1cm4gYmFzZTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBkaWdpdC9pbnRlZ2VyIGludG8gYSBiYXNpYyBjb2RlIHBvaW50LlxuICogQHNlZSBgYmFzaWNUb0RpZ2l0KClgXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtOdW1iZXJ9IGRpZ2l0IFRoZSBudW1lcmljIHZhbHVlIG9mIGEgYmFzaWMgY29kZSBwb2ludC5cbiAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBiYXNpYyBjb2RlIHBvaW50IHdob3NlIHZhbHVlICh3aGVuIHVzZWQgZm9yXG4gKiByZXByZXNlbnRpbmcgaW50ZWdlcnMpIGlzIGBkaWdpdGAsIHdoaWNoIG5lZWRzIHRvIGJlIGluIHRoZSByYW5nZVxuICogYDBgIHRvIGBiYXNlIC0gMWAuIElmIGBmbGFnYCBpcyBub24temVybywgdGhlIHVwcGVyY2FzZSBmb3JtIGlzXG4gKiB1c2VkOyBlbHNlLCB0aGUgbG93ZXJjYXNlIGZvcm0gaXMgdXNlZC4gVGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5lZFxuICogaWYgYGZsYWdgIGlzIG5vbi16ZXJvIGFuZCBgZGlnaXRgIGhhcyBubyB1cHBlcmNhc2UgZm9ybS5cbiAqL1xudmFyIGRpZ2l0VG9CYXNpYyA9IGZ1bmN0aW9uIGRpZ2l0VG9CYXNpYyhkaWdpdCwgZmxhZykge1xuXHQvLyAgMC4uMjUgbWFwIHRvIEFTQ0lJIGEuLnogb3IgQS4uWlxuXHQvLyAyNi4uMzUgbWFwIHRvIEFTQ0lJIDAuLjlcblx0cmV0dXJuIGRpZ2l0ICsgMjIgKyA3NSAqIChkaWdpdCA8IDI2KSAtICgoZmxhZyAhPSAwKSA8PCA1KTtcbn07XG5cbi8qKlxuICogQmlhcyBhZGFwdGF0aW9uIGZ1bmN0aW9uIGFzIHBlciBzZWN0aW9uIDMuNCBvZiBSRkMgMzQ5Mi5cbiAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNDkyI3NlY3Rpb24tMy40XG4gKiBAcHJpdmF0ZVxuICovXG52YXIgYWRhcHQgPSBmdW5jdGlvbiBhZGFwdChkZWx0YSwgbnVtUG9pbnRzLCBmaXJzdFRpbWUpIHtcblx0dmFyIGsgPSAwO1xuXHRkZWx0YSA9IGZpcnN0VGltZSA/IGZsb29yKGRlbHRhIC8gZGFtcCkgOiBkZWx0YSA+PiAxO1xuXHRkZWx0YSArPSBmbG9vcihkZWx0YSAvIG51bVBvaW50cyk7XG5cdGZvciAoOyAvKiBubyBpbml0aWFsaXphdGlvbiAqL2RlbHRhID4gYmFzZU1pbnVzVE1pbiAqIHRNYXggPj4gMTsgayArPSBiYXNlKSB7XG5cdFx0ZGVsdGEgPSBmbG9vcihkZWx0YSAvIGJhc2VNaW51c1RNaW4pO1xuXHR9XG5cdHJldHVybiBmbG9vcihrICsgKGJhc2VNaW51c1RNaW4gKyAxKSAqIGRlbHRhIC8gKGRlbHRhICsgc2tldykpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMgdG8gYSBzdHJpbmcgb2YgVW5pY29kZVxuICogc3ltYm9scy5cbiAqIEBtZW1iZXJPZiBwdW55Y29kZVxuICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIHJlc3VsdGluZyBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzLlxuICovXG52YXIgZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKGlucHV0KSB7XG5cdC8vIERvbid0IHVzZSBVQ1MtMi5cblx0dmFyIG91dHB1dCA9IFtdO1xuXHR2YXIgaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGg7XG5cdHZhciBpID0gMDtcblx0dmFyIG4gPSBpbml0aWFsTjtcblx0dmFyIGJpYXMgPSBpbml0aWFsQmlhcztcblxuXHQvLyBIYW5kbGUgdGhlIGJhc2ljIGNvZGUgcG9pbnRzOiBsZXQgYGJhc2ljYCBiZSB0aGUgbnVtYmVyIG9mIGlucHV0IGNvZGVcblx0Ly8gcG9pbnRzIGJlZm9yZSB0aGUgbGFzdCBkZWxpbWl0ZXIsIG9yIGAwYCBpZiB0aGVyZSBpcyBub25lLCB0aGVuIGNvcHlcblx0Ly8gdGhlIGZpcnN0IGJhc2ljIGNvZGUgcG9pbnRzIHRvIHRoZSBvdXRwdXQuXG5cblx0dmFyIGJhc2ljID0gaW5wdXQubGFzdEluZGV4T2YoZGVsaW1pdGVyKTtcblx0aWYgKGJhc2ljIDwgMCkge1xuXHRcdGJhc2ljID0gMDtcblx0fVxuXG5cdGZvciAodmFyIGogPSAwOyBqIDwgYmFzaWM7ICsraikge1xuXHRcdC8vIGlmIGl0J3Mgbm90IGEgYmFzaWMgY29kZSBwb2ludFxuXHRcdGlmIChpbnB1dC5jaGFyQ29kZUF0KGopID49IDB4ODApIHtcblx0XHRcdGVycm9yJDEoJ25vdC1iYXNpYycpO1xuXHRcdH1cblx0XHRvdXRwdXQucHVzaChpbnB1dC5jaGFyQ29kZUF0KGopKTtcblx0fVxuXG5cdC8vIE1haW4gZGVjb2RpbmcgbG9vcDogc3RhcnQganVzdCBhZnRlciB0aGUgbGFzdCBkZWxpbWl0ZXIgaWYgYW55IGJhc2ljIGNvZGVcblx0Ly8gcG9pbnRzIHdlcmUgY29waWVkOyBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG90aGVyd2lzZS5cblxuXHRmb3IgKHZhciBpbmRleCA9IGJhc2ljID4gMCA/IGJhc2ljICsgMSA6IDA7IGluZGV4IDwgaW5wdXRMZW5ndGg7KSAvKiBubyBmaW5hbCBleHByZXNzaW9uICove1xuXG5cdFx0Ly8gYGluZGV4YCBpcyB0aGUgaW5kZXggb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIGNvbnN1bWVkLlxuXHRcdC8vIERlY29kZSBhIGdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyIGludG8gYGRlbHRhYCxcblx0XHQvLyB3aGljaCBnZXRzIGFkZGVkIHRvIGBpYC4gVGhlIG92ZXJmbG93IGNoZWNraW5nIGlzIGVhc2llclxuXHRcdC8vIGlmIHdlIGluY3JlYXNlIGBpYCBhcyB3ZSBnbywgdGhlbiBzdWJ0cmFjdCBvZmYgaXRzIHN0YXJ0aW5nXG5cdFx0Ly8gdmFsdWUgYXQgdGhlIGVuZCB0byBvYnRhaW4gYGRlbHRhYC5cblx0XHR2YXIgb2xkaSA9IGk7XG5cdFx0Zm9yICh2YXIgdyA9IDEsIGsgPSBiYXNlOzsgLyogbm8gY29uZGl0aW9uICovayArPSBiYXNlKSB7XG5cblx0XHRcdGlmIChpbmRleCA+PSBpbnB1dExlbmd0aCkge1xuXHRcdFx0XHRlcnJvciQxKCdpbnZhbGlkLWlucHV0Jyk7XG5cdFx0XHR9XG5cblx0XHRcdHZhciBkaWdpdCA9IGJhc2ljVG9EaWdpdChpbnB1dC5jaGFyQ29kZUF0KGluZGV4KyspKTtcblxuXHRcdFx0aWYgKGRpZ2l0ID49IGJhc2UgfHwgZGlnaXQgPiBmbG9vcigobWF4SW50IC0gaSkgLyB3KSkge1xuXHRcdFx0XHRlcnJvciQxKCdvdmVyZmxvdycpO1xuXHRcdFx0fVxuXG5cdFx0XHRpICs9IGRpZ2l0ICogdztcblx0XHRcdHZhciB0ID0gayA8PSBiaWFzID8gdE1pbiA6IGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXM7XG5cblx0XHRcdGlmIChkaWdpdCA8IHQpIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cblx0XHRcdHZhciBiYXNlTWludXNUID0gYmFzZSAtIHQ7XG5cdFx0XHRpZiAodyA+IGZsb29yKG1heEludCAvIGJhc2VNaW51c1QpKSB7XG5cdFx0XHRcdGVycm9yJDEoJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cblx0XHRcdHcgKj0gYmFzZU1pbnVzVDtcblx0XHR9XG5cblx0XHR2YXIgb3V0ID0gb3V0cHV0Lmxlbmd0aCArIDE7XG5cdFx0YmlhcyA9IGFkYXB0KGkgLSBvbGRpLCBvdXQsIG9sZGkgPT0gMCk7XG5cblx0XHQvLyBgaWAgd2FzIHN1cHBvc2VkIHRvIHdyYXAgYXJvdW5kIGZyb20gYG91dGAgdG8gYDBgLFxuXHRcdC8vIGluY3JlbWVudGluZyBgbmAgZWFjaCB0aW1lLCBzbyB3ZSdsbCBmaXggdGhhdCBub3c6XG5cdFx0aWYgKGZsb29yKGkgLyBvdXQpID4gbWF4SW50IC0gbikge1xuXHRcdFx0ZXJyb3IkMSgnb3ZlcmZsb3cnKTtcblx0XHR9XG5cblx0XHRuICs9IGZsb29yKGkgLyBvdXQpO1xuXHRcdGkgJT0gb3V0O1xuXG5cdFx0Ly8gSW5zZXJ0IGBuYCBhdCBwb3NpdGlvbiBgaWAgb2YgdGhlIG91dHB1dC5cblx0XHRvdXRwdXQuc3BsaWNlKGkrKywgMCwgbik7XG5cdH1cblxuXHRyZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQuYXBwbHkoU3RyaW5nLCBvdXRwdXQpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMgKGUuZy4gYSBkb21haW4gbmFtZSBsYWJlbCkgdG8gYVxuICogUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cbiAqIEBtZW1iZXJPZiBwdW55Y29kZVxuICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzLlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIHJlc3VsdGluZyBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuICovXG52YXIgZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGlucHV0KSB7XG5cdHZhciBvdXRwdXQgPSBbXTtcblxuXHQvLyBDb252ZXJ0IHRoZSBpbnB1dCBpbiBVQ1MtMiB0byBhbiBhcnJheSBvZiBVbmljb2RlIGNvZGUgcG9pbnRzLlxuXHRpbnB1dCA9IHVjczJkZWNvZGUoaW5wdXQpO1xuXG5cdC8vIENhY2hlIHRoZSBsZW5ndGguXG5cdHZhciBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aDtcblxuXHQvLyBJbml0aWFsaXplIHRoZSBzdGF0ZS5cblx0dmFyIG4gPSBpbml0aWFsTjtcblx0dmFyIGRlbHRhID0gMDtcblx0dmFyIGJpYXMgPSBpbml0aWFsQmlhcztcblxuXHQvLyBIYW5kbGUgdGhlIGJhc2ljIGNvZGUgcG9pbnRzLlxuXHR2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IHRydWU7XG5cdHZhciBfZGlkSXRlcmF0b3JFcnJvciA9IGZhbHNlO1xuXHR2YXIgX2l0ZXJhdG9yRXJyb3IgPSB1bmRlZmluZWQ7XG5cblx0dHJ5IHtcblx0XHRmb3IgKHZhciBfaXRlcmF0b3IgPSBpbnB1dFtTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwOyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gPSAoX3N0ZXAgPSBfaXRlcmF0b3IubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IHRydWUpIHtcblx0XHRcdHZhciBfY3VycmVudFZhbHVlMiA9IF9zdGVwLnZhbHVlO1xuXG5cdFx0XHRpZiAoX2N1cnJlbnRWYWx1ZTIgPCAweDgwKSB7XG5cdFx0XHRcdG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShfY3VycmVudFZhbHVlMikpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0X2RpZEl0ZXJhdG9yRXJyb3IgPSB0cnVlO1xuXHRcdF9pdGVyYXRvckVycm9yID0gZXJyO1xuXHR9IGZpbmFsbHkge1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gJiYgX2l0ZXJhdG9yLnJldHVybikge1xuXHRcdFx0XHRfaXRlcmF0b3IucmV0dXJuKCk7XG5cdFx0XHR9XG5cdFx0fSBmaW5hbGx5IHtcblx0XHRcdGlmIChfZGlkSXRlcmF0b3JFcnJvcikge1xuXHRcdFx0XHR0aHJvdyBfaXRlcmF0b3JFcnJvcjtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHR2YXIgYmFzaWNMZW5ndGggPSBvdXRwdXQubGVuZ3RoO1xuXHR2YXIgaGFuZGxlZENQQ291bnQgPSBiYXNpY0xlbmd0aDtcblxuXHQvLyBgaGFuZGxlZENQQ291bnRgIGlzIHRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgdGhhdCBoYXZlIGJlZW4gaGFuZGxlZDtcblx0Ly8gYGJhc2ljTGVuZ3RoYCBpcyB0aGUgbnVtYmVyIG9mIGJhc2ljIGNvZGUgcG9pbnRzLlxuXG5cdC8vIEZpbmlzaCB0aGUgYmFzaWMgc3RyaW5nIHdpdGggYSBkZWxpbWl0ZXIgdW5sZXNzIGl0J3MgZW1wdHkuXG5cdGlmIChiYXNpY0xlbmd0aCkge1xuXHRcdG91dHB1dC5wdXNoKGRlbGltaXRlcik7XG5cdH1cblxuXHQvLyBNYWluIGVuY29kaW5nIGxvb3A6XG5cdHdoaWxlIChoYW5kbGVkQ1BDb3VudCA8IGlucHV0TGVuZ3RoKSB7XG5cblx0XHQvLyBBbGwgbm9uLWJhc2ljIGNvZGUgcG9pbnRzIDwgbiBoYXZlIGJlZW4gaGFuZGxlZCBhbHJlYWR5LiBGaW5kIHRoZSBuZXh0XG5cdFx0Ly8gbGFyZ2VyIG9uZTpcblx0XHR2YXIgbSA9IG1heEludDtcblx0XHR2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIgPSB0cnVlO1xuXHRcdHZhciBfZGlkSXRlcmF0b3JFcnJvcjIgPSBmYWxzZTtcblx0XHR2YXIgX2l0ZXJhdG9yRXJyb3IyID0gdW5kZWZpbmVkO1xuXG5cdFx0dHJ5IHtcblx0XHRcdGZvciAodmFyIF9pdGVyYXRvcjIgPSBpbnB1dFtTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwMjsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IChfc3RlcDIgPSBfaXRlcmF0b3IyLm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gdHJ1ZSkge1xuXHRcdFx0XHR2YXIgY3VycmVudFZhbHVlID0gX3N0ZXAyLnZhbHVlO1xuXG5cdFx0XHRcdGlmIChjdXJyZW50VmFsdWUgPj0gbiAmJiBjdXJyZW50VmFsdWUgPCBtKSB7XG5cdFx0XHRcdFx0bSA9IGN1cnJlbnRWYWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBJbmNyZWFzZSBgZGVsdGFgIGVub3VnaCB0byBhZHZhbmNlIHRoZSBkZWNvZGVyJ3MgPG4saT4gc3RhdGUgdG8gPG0sMD4sXG5cdFx0XHQvLyBidXQgZ3VhcmQgYWdhaW5zdCBvdmVyZmxvdy5cblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdF9kaWRJdGVyYXRvckVycm9yMiA9IHRydWU7XG5cdFx0XHRfaXRlcmF0b3JFcnJvcjIgPSBlcnI7XG5cdFx0fSBmaW5hbGx5IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIgJiYgX2l0ZXJhdG9yMi5yZXR1cm4pIHtcblx0XHRcdFx0XHRfaXRlcmF0b3IyLnJldHVybigpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGZpbmFsbHkge1xuXHRcdFx0XHRpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyKSB7XG5cdFx0XHRcdFx0dGhyb3cgX2l0ZXJhdG9yRXJyb3IyO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dmFyIGhhbmRsZWRDUENvdW50UGx1c09uZSA9IGhhbmRsZWRDUENvdW50ICsgMTtcblx0XHRpZiAobSAtIG4gPiBmbG9vcigobWF4SW50IC0gZGVsdGEpIC8gaGFuZGxlZENQQ291bnRQbHVzT25lKSkge1xuXHRcdFx0ZXJyb3IkMSgnb3ZlcmZsb3cnKTtcblx0XHR9XG5cblx0XHRkZWx0YSArPSAobSAtIG4pICogaGFuZGxlZENQQ291bnRQbHVzT25lO1xuXHRcdG4gPSBtO1xuXG5cdFx0dmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zID0gdHJ1ZTtcblx0XHR2YXIgX2RpZEl0ZXJhdG9yRXJyb3IzID0gZmFsc2U7XG5cdFx0dmFyIF9pdGVyYXRvckVycm9yMyA9IHVuZGVmaW5lZDtcblxuXHRcdHRyeSB7XG5cdFx0XHRmb3IgKHZhciBfaXRlcmF0b3IzID0gaW5wdXRbU3ltYm9sLml0ZXJhdG9yXSgpLCBfc3RlcDM7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMgPSAoX3N0ZXAzID0gX2l0ZXJhdG9yMy5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyA9IHRydWUpIHtcblx0XHRcdFx0dmFyIF9jdXJyZW50VmFsdWUgPSBfc3RlcDMudmFsdWU7XG5cblx0XHRcdFx0aWYgKF9jdXJyZW50VmFsdWUgPCBuICYmICsrZGVsdGEgPiBtYXhJbnQpIHtcblx0XHRcdFx0XHRlcnJvciQxKCdvdmVyZmxvdycpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChfY3VycmVudFZhbHVlID09IG4pIHtcblx0XHRcdFx0XHQvLyBSZXByZXNlbnQgZGVsdGEgYXMgYSBnZW5lcmFsaXplZCB2YXJpYWJsZS1sZW5ndGggaW50ZWdlci5cblx0XHRcdFx0XHR2YXIgcSA9IGRlbHRhO1xuXHRcdFx0XHRcdGZvciAodmFyIGsgPSBiYXNlOzsgLyogbm8gY29uZGl0aW9uICovayArPSBiYXNlKSB7XG5cdFx0XHRcdFx0XHR2YXIgdCA9IGsgPD0gYmlhcyA/IHRNaW4gOiBrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzO1xuXHRcdFx0XHRcdFx0aWYgKHEgPCB0KSB7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dmFyIHFNaW51c1QgPSBxIC0gdDtcblx0XHRcdFx0XHRcdHZhciBiYXNlTWludXNUID0gYmFzZSAtIHQ7XG5cdFx0XHRcdFx0XHRvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHQgKyBxTWludXNUICUgYmFzZU1pbnVzVCwgMCkpKTtcblx0XHRcdFx0XHRcdHEgPSBmbG9vcihxTWludXNUIC8gYmFzZU1pbnVzVCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0b3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKGRpZ2l0VG9CYXNpYyhxLCAwKSkpO1xuXHRcdFx0XHRcdGJpYXMgPSBhZGFwdChkZWx0YSwgaGFuZGxlZENQQ291bnRQbHVzT25lLCBoYW5kbGVkQ1BDb3VudCA9PSBiYXNpY0xlbmd0aCk7XG5cdFx0XHRcdFx0ZGVsdGEgPSAwO1xuXHRcdFx0XHRcdCsraGFuZGxlZENQQ291bnQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdF9kaWRJdGVyYXRvckVycm9yMyA9IHRydWU7XG5cdFx0XHRfaXRlcmF0b3JFcnJvcjMgPSBlcnI7XG5cdFx0fSBmaW5hbGx5IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMgJiYgX2l0ZXJhdG9yMy5yZXR1cm4pIHtcblx0XHRcdFx0XHRfaXRlcmF0b3IzLnJldHVybigpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGZpbmFsbHkge1xuXHRcdFx0XHRpZiAoX2RpZEl0ZXJhdG9yRXJyb3IzKSB7XG5cdFx0XHRcdFx0dGhyb3cgX2l0ZXJhdG9yRXJyb3IzO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0KytkZWx0YTtcblx0XHQrK247XG5cdH1cblx0cmV0dXJuIG91dHB1dC5qb2luKCcnKTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBQdW55Y29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZG9tYWluIG5hbWUgb3IgYW4gZW1haWwgYWRkcmVzc1xuICogdG8gVW5pY29kZS4gT25seSB0aGUgUHVueWNvZGVkIHBhcnRzIG9mIHRoZSBpbnB1dCB3aWxsIGJlIGNvbnZlcnRlZCwgaS5lLlxuICogaXQgZG9lc24ndCBtYXR0ZXIgaWYgeW91IGNhbGwgaXQgb24gYSBzdHJpbmcgdGhhdCBoYXMgYWxyZWFkeSBiZWVuXG4gKiBjb252ZXJ0ZWQgdG8gVW5pY29kZS5cbiAqIEBtZW1iZXJPZiBwdW55Y29kZVxuICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBQdW55Y29kZWQgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcyB0b1xuICogY29udmVydCB0byBVbmljb2RlLlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIFVuaWNvZGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIFB1bnljb2RlXG4gKiBzdHJpbmcuXG4gKi9cbnZhciB0b1VuaWNvZGUgPSBmdW5jdGlvbiB0b1VuaWNvZGUoaW5wdXQpIHtcblx0cmV0dXJuIG1hcERvbWFpbihpbnB1dCwgZnVuY3Rpb24gKHN0cmluZykge1xuXHRcdHJldHVybiByZWdleFB1bnljb2RlLnRlc3Qoc3RyaW5nKSA/IGRlY29kZShzdHJpbmcuc2xpY2UoNCkudG9Mb3dlckNhc2UoKSkgOiBzdHJpbmc7XG5cdH0pO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIFVuaWNvZGUgc3RyaW5nIHJlcHJlc2VudGluZyBhIGRvbWFpbiBuYW1lIG9yIGFuIGVtYWlsIGFkZHJlc3MgdG9cbiAqIFB1bnljb2RlLiBPbmx5IHRoZSBub24tQVNDSUkgcGFydHMgb2YgdGhlIGRvbWFpbiBuYW1lIHdpbGwgYmUgY29udmVydGVkLFxuICogaS5lLiBpdCBkb2Vzbid0IG1hdHRlciBpZiB5b3UgY2FsbCBpdCB3aXRoIGEgZG9tYWluIHRoYXQncyBhbHJlYWR5IGluXG4gKiBBU0NJSS5cbiAqIEBtZW1iZXJPZiBwdW55Y29kZVxuICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzIHRvIGNvbnZlcnQsIGFzIGFcbiAqIFVuaWNvZGUgc3RyaW5nLlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIFB1bnljb2RlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBkb21haW4gbmFtZSBvclxuICogZW1haWwgYWRkcmVzcy5cbiAqL1xudmFyIHRvQVNDSUkgPSBmdW5jdGlvbiB0b0FTQ0lJKGlucHV0KSB7XG5cdHJldHVybiBtYXBEb21haW4oaW5wdXQsIGZ1bmN0aW9uIChzdHJpbmcpIHtcblx0XHRyZXR1cm4gcmVnZXhOb25BU0NJSS50ZXN0KHN0cmluZykgPyAneG4tLScgKyBlbmNvZGUoc3RyaW5nKSA6IHN0cmluZztcblx0fSk7XG59O1xuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyoqIERlZmluZSB0aGUgcHVibGljIEFQSSAqL1xudmFyIHB1bnljb2RlID0ge1xuXHQvKipcbiAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgUHVueWNvZGUuanMgdmVyc2lvbiBudW1iZXIuXG4gICogQG1lbWJlck9mIHB1bnljb2RlXG4gICogQHR5cGUgU3RyaW5nXG4gICovXG5cdCd2ZXJzaW9uJzogJzIuMS4wJyxcblx0LyoqXG4gICogQW4gb2JqZWN0IG9mIG1ldGhvZHMgdG8gY29udmVydCBmcm9tIEphdmFTY3JpcHQncyBpbnRlcm5hbCBjaGFyYWN0ZXJcbiAgKiByZXByZXNlbnRhdGlvbiAoVUNTLTIpIHRvIFVuaWNvZGUgY29kZSBwb2ludHMsIGFuZCBiYWNrLlxuICAqIEBzZWUgPGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LWVuY29kaW5nPlxuICAqIEBtZW1iZXJPZiBwdW55Y29kZVxuICAqIEB0eXBlIE9iamVjdFxuICAqL1xuXHQndWNzMic6IHtcblx0XHQnZGVjb2RlJzogdWNzMmRlY29kZSxcblx0XHQnZW5jb2RlJzogdWNzMmVuY29kZVxuXHR9LFxuXHQnZGVjb2RlJzogZGVjb2RlLFxuXHQnZW5jb2RlJzogZW5jb2RlLFxuXHQndG9BU0NJSSc6IHRvQVNDSUksXG5cdCd0b1VuaWNvZGUnOiB0b1VuaWNvZGVcbn07XG5cbi8qKlxuICogVVJJLmpzXG4gKlxuICogQGZpbGVvdmVydmlldyBBbiBSRkMgMzk4NiBjb21wbGlhbnQsIHNjaGVtZSBleHRlbmRhYmxlIFVSSSBwYXJzaW5nL3ZhbGlkYXRpbmcvcmVzb2x2aW5nIGxpYnJhcnkgZm9yIEphdmFTY3JpcHQuXG4gKiBAYXV0aG9yIDxhIGhyZWY9XCJtYWlsdG86Z2FyeS5jb3VydEBnbWFpbC5jb21cIj5HYXJ5IENvdXJ0PC9hPlxuICogQHNlZSBodHRwOi8vZ2l0aHViLmNvbS9nYXJ5Y291cnQvdXJpLWpzXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTEgR2FyeSBDb3VydC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmVcbiAqIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuICpcbiAqICAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mXG4gKiAgICAgICBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKlxuICogICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3RcbiAqICAgICAgIG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzXG4gKiAgICAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHQVJZIENPVVJUIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRFxuICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEdBUlkgQ09VUlQgT1JcbiAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SXG4gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SXG4gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OXG4gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HXG4gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUZcbiAqIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICpcbiAqIFRoZSB2aWV3cyBhbmQgY29uY2x1c2lvbnMgY29udGFpbmVkIGluIHRoZSBzb2Z0d2FyZSBhbmQgZG9jdW1lbnRhdGlvbiBhcmUgdGhvc2Ugb2YgdGhlXG4gKiBhdXRob3JzIGFuZCBzaG91bGQgbm90IGJlIGludGVycHJldGVkIGFzIHJlcHJlc2VudGluZyBvZmZpY2lhbCBwb2xpY2llcywgZWl0aGVyIGV4cHJlc3NlZFxuICogb3IgaW1wbGllZCwgb2YgR2FyeSBDb3VydC5cbiAqL1xudmFyIFNDSEVNRVMgPSB7fTtcbmZ1bmN0aW9uIHBjdEVuY0NoYXIoY2hyKSB7XG4gICAgdmFyIGMgPSBjaHIuY2hhckNvZGVBdCgwKTtcbiAgICB2YXIgZSA9IHZvaWQgMDtcbiAgICBpZiAoYyA8IDE2KSBlID0gXCIlMFwiICsgYy50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtlbHNlIGlmIChjIDwgMTI4KSBlID0gXCIlXCIgKyBjLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO2Vsc2UgaWYgKGMgPCAyMDQ4KSBlID0gXCIlXCIgKyAoYyA+PiA2IHwgMTkyKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSArIFwiJVwiICsgKGMgJiA2MyB8IDEyOCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7ZWxzZSBlID0gXCIlXCIgKyAoYyA+PiAxMiB8IDIyNCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkgKyBcIiVcIiArIChjID4+IDYgJiA2MyB8IDEyOCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkgKyBcIiVcIiArIChjICYgNjMgfCAxMjgpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuICAgIHJldHVybiBlO1xufVxuZnVuY3Rpb24gcGN0RGVjQ2hhcnMoc3RyKSB7XG4gICAgdmFyIG5ld1N0ciA9IFwiXCI7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBpbCA9IHN0ci5sZW5ndGg7XG4gICAgd2hpbGUgKGkgPCBpbCkge1xuICAgICAgICB2YXIgYyA9IHBhcnNlSW50KHN0ci5zdWJzdHIoaSArIDEsIDIpLCAxNik7XG4gICAgICAgIGlmIChjIDwgMTI4KSB7XG4gICAgICAgICAgICBuZXdTdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcbiAgICAgICAgICAgIGkgKz0gMztcbiAgICAgICAgfSBlbHNlIGlmIChjID49IDE5NCAmJiBjIDwgMjI0KSB7XG4gICAgICAgICAgICBpZiAoaWwgLSBpID49IDYpIHtcbiAgICAgICAgICAgICAgICB2YXIgYzIgPSBwYXJzZUludChzdHIuc3Vic3RyKGkgKyA0LCAyKSwgMTYpO1xuICAgICAgICAgICAgICAgIG5ld1N0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChjICYgMzEpIDw8IDYgfCBjMiAmIDYzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3U3RyICs9IHN0ci5zdWJzdHIoaSwgNik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpICs9IDY7XG4gICAgICAgIH0gZWxzZSBpZiAoYyA+PSAyMjQpIHtcbiAgICAgICAgICAgIGlmIChpbCAtIGkgPj0gOSkge1xuICAgICAgICAgICAgICAgIHZhciBfYyA9IHBhcnNlSW50KHN0ci5zdWJzdHIoaSArIDQsIDIpLCAxNik7XG4gICAgICAgICAgICAgICAgdmFyIGMzID0gcGFyc2VJbnQoc3RyLnN1YnN0cihpICsgNywgMiksIDE2KTtcbiAgICAgICAgICAgICAgICBuZXdTdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoYyAmIDE1KSA8PCAxMiB8IChfYyAmIDYzKSA8PCA2IHwgYzMgJiA2Myk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld1N0ciArPSBzdHIuc3Vic3RyKGksIDkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaSArPSA5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3U3RyICs9IHN0ci5zdWJzdHIoaSwgMyk7XG4gICAgICAgICAgICBpICs9IDM7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld1N0cjtcbn1cbmZ1bmN0aW9uIF9ub3JtYWxpemVDb21wb25lbnRFbmNvZGluZyhjb21wb25lbnRzLCBwcm90b2NvbCkge1xuICAgIGZ1bmN0aW9uIGRlY29kZVVucmVzZXJ2ZWQoc3RyKSB7XG4gICAgICAgIHZhciBkZWNTdHIgPSBwY3REZWNDaGFycyhzdHIpO1xuICAgICAgICByZXR1cm4gIWRlY1N0ci5tYXRjaChwcm90b2NvbC5VTlJFU0VSVkVEKSA/IHN0ciA6IGRlY1N0cjtcbiAgICB9XG4gICAgaWYgKGNvbXBvbmVudHMuc2NoZW1lKSBjb21wb25lbnRzLnNjaGVtZSA9IFN0cmluZyhjb21wb25lbnRzLnNjaGVtZSkucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKHByb3RvY29sLk5PVF9TQ0hFTUUsIFwiXCIpO1xuICAgIGlmIChjb21wb25lbnRzLnVzZXJpbmZvICE9PSB1bmRlZmluZWQpIGNvbXBvbmVudHMudXNlcmluZm8gPSBTdHJpbmcoY29tcG9uZW50cy51c2VyaW5mbykucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkucmVwbGFjZShwcm90b2NvbC5OT1RfVVNFUklORk8sIHBjdEVuY0NoYXIpLnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIHRvVXBwZXJDYXNlKTtcbiAgICBpZiAoY29tcG9uZW50cy5ob3N0ICE9PSB1bmRlZmluZWQpIGNvbXBvbmVudHMuaG9zdCA9IFN0cmluZyhjb21wb25lbnRzLmhvc3QpLnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIGRlY29kZVVucmVzZXJ2ZWQpLnRvTG93ZXJDYXNlKCkucmVwbGFjZShwcm90b2NvbC5OT1RfSE9TVCwgcGN0RW5jQ2hhcikucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgdG9VcHBlckNhc2UpO1xuICAgIGlmIChjb21wb25lbnRzLnBhdGggIT09IHVuZGVmaW5lZCkgY29tcG9uZW50cy5wYXRoID0gU3RyaW5nKGNvbXBvbmVudHMucGF0aCkucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkucmVwbGFjZShjb21wb25lbnRzLnNjaGVtZSA/IHByb3RvY29sLk5PVF9QQVRIIDogcHJvdG9jb2wuTk9UX1BBVEhfTk9TQ0hFTUUsIHBjdEVuY0NoYXIpLnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIHRvVXBwZXJDYXNlKTtcbiAgICBpZiAoY29tcG9uZW50cy5xdWVyeSAhPT0gdW5kZWZpbmVkKSBjb21wb25lbnRzLnF1ZXJ5ID0gU3RyaW5nKGNvbXBvbmVudHMucXVlcnkpLnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIGRlY29kZVVucmVzZXJ2ZWQpLnJlcGxhY2UocHJvdG9jb2wuTk9UX1FVRVJZLCBwY3RFbmNDaGFyKS5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCB0b1VwcGVyQ2FzZSk7XG4gICAgaWYgKGNvbXBvbmVudHMuZnJhZ21lbnQgIT09IHVuZGVmaW5lZCkgY29tcG9uZW50cy5mcmFnbWVudCA9IFN0cmluZyhjb21wb25lbnRzLmZyYWdtZW50KS5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCBkZWNvZGVVbnJlc2VydmVkKS5yZXBsYWNlKHByb3RvY29sLk5PVF9GUkFHTUVOVCwgcGN0RW5jQ2hhcikucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgdG9VcHBlckNhc2UpO1xuICAgIHJldHVybiBjb21wb25lbnRzO1xufVxuXG5mdW5jdGlvbiBfc3RyaXBMZWFkaW5nWmVyb3Moc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eMCooLiopLywgXCIkMVwiKSB8fCBcIjBcIjtcbn1cbmZ1bmN0aW9uIF9ub3JtYWxpemVJUHY0KGhvc3QsIHByb3RvY29sKSB7XG4gICAgdmFyIG1hdGNoZXMgPSBob3N0Lm1hdGNoKHByb3RvY29sLklQVjRBRERSRVNTKSB8fCBbXTtcblxuICAgIHZhciBfbWF0Y2hlcyA9IHNsaWNlZFRvQXJyYXkobWF0Y2hlcywgMiksXG4gICAgICAgIGFkZHJlc3MgPSBfbWF0Y2hlc1sxXTtcblxuICAgIGlmIChhZGRyZXNzKSB7XG4gICAgICAgIHJldHVybiBhZGRyZXNzLnNwbGl0KFwiLlwiKS5tYXAoX3N0cmlwTGVhZGluZ1plcm9zKS5qb2luKFwiLlwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gaG9zdDtcbiAgICB9XG59XG5mdW5jdGlvbiBfbm9ybWFsaXplSVB2Nihob3N0LCBwcm90b2NvbCkge1xuICAgIHZhciBtYXRjaGVzID0gaG9zdC5tYXRjaChwcm90b2NvbC5JUFY2QUREUkVTUykgfHwgW107XG5cbiAgICB2YXIgX21hdGNoZXMyID0gc2xpY2VkVG9BcnJheShtYXRjaGVzLCAzKSxcbiAgICAgICAgYWRkcmVzcyA9IF9tYXRjaGVzMlsxXSxcbiAgICAgICAgem9uZSA9IF9tYXRjaGVzMlsyXTtcblxuICAgIGlmIChhZGRyZXNzKSB7XG4gICAgICAgIHZhciBfYWRkcmVzcyR0b0xvd2VyQ2FzZSQgPSBhZGRyZXNzLnRvTG93ZXJDYXNlKCkuc3BsaXQoJzo6JykucmV2ZXJzZSgpLFxuICAgICAgICAgICAgX2FkZHJlc3MkdG9Mb3dlckNhc2UkMiA9IHNsaWNlZFRvQXJyYXkoX2FkZHJlc3MkdG9Mb3dlckNhc2UkLCAyKSxcbiAgICAgICAgICAgIGxhc3QgPSBfYWRkcmVzcyR0b0xvd2VyQ2FzZSQyWzBdLFxuICAgICAgICAgICAgZmlyc3QgPSBfYWRkcmVzcyR0b0xvd2VyQ2FzZSQyWzFdO1xuXG4gICAgICAgIHZhciBmaXJzdEZpZWxkcyA9IGZpcnN0ID8gZmlyc3Quc3BsaXQoXCI6XCIpLm1hcChfc3RyaXBMZWFkaW5nWmVyb3MpIDogW107XG4gICAgICAgIHZhciBsYXN0RmllbGRzID0gbGFzdC5zcGxpdChcIjpcIikubWFwKF9zdHJpcExlYWRpbmdaZXJvcyk7XG4gICAgICAgIHZhciBpc0xhc3RGaWVsZElQdjRBZGRyZXNzID0gcHJvdG9jb2wuSVBWNEFERFJFU1MudGVzdChsYXN0RmllbGRzW2xhc3RGaWVsZHMubGVuZ3RoIC0gMV0pO1xuICAgICAgICB2YXIgZmllbGRDb3VudCA9IGlzTGFzdEZpZWxkSVB2NEFkZHJlc3MgPyA3IDogODtcbiAgICAgICAgdmFyIGxhc3RGaWVsZHNTdGFydCA9IGxhc3RGaWVsZHMubGVuZ3RoIC0gZmllbGRDb3VudDtcbiAgICAgICAgdmFyIGZpZWxkcyA9IEFycmF5KGZpZWxkQ291bnQpO1xuICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGZpZWxkQ291bnQ7ICsreCkge1xuICAgICAgICAgICAgZmllbGRzW3hdID0gZmlyc3RGaWVsZHNbeF0gfHwgbGFzdEZpZWxkc1tsYXN0RmllbGRzU3RhcnQgKyB4XSB8fCAnJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNMYXN0RmllbGRJUHY0QWRkcmVzcykge1xuICAgICAgICAgICAgZmllbGRzW2ZpZWxkQ291bnQgLSAxXSA9IF9ub3JtYWxpemVJUHY0KGZpZWxkc1tmaWVsZENvdW50IC0gMV0sIHByb3RvY29sKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYWxsWmVyb0ZpZWxkcyA9IGZpZWxkcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgZmllbGQsIGluZGV4KSB7XG4gICAgICAgICAgICBpZiAoIWZpZWxkIHx8IGZpZWxkID09PSBcIjBcIikge1xuICAgICAgICAgICAgICAgIHZhciBsYXN0TG9uZ2VzdCA9IGFjY1thY2MubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgaWYgKGxhc3RMb25nZXN0ICYmIGxhc3RMb25nZXN0LmluZGV4ICsgbGFzdExvbmdlc3QubGVuZ3RoID09PSBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBsYXN0TG9uZ2VzdC5sZW5ndGgrKztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhY2MucHVzaCh7IGluZGV4OiBpbmRleCwgbGVuZ3RoOiAxIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIFtdKTtcbiAgICAgICAgdmFyIGxvbmdlc3RaZXJvRmllbGRzID0gYWxsWmVyb0ZpZWxkcy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYi5sZW5ndGggLSBhLmxlbmd0aDtcbiAgICAgICAgfSlbMF07XG4gICAgICAgIHZhciBuZXdIb3N0ID0gdm9pZCAwO1xuICAgICAgICBpZiAobG9uZ2VzdFplcm9GaWVsZHMgJiYgbG9uZ2VzdFplcm9GaWVsZHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdmFyIG5ld0ZpcnN0ID0gZmllbGRzLnNsaWNlKDAsIGxvbmdlc3RaZXJvRmllbGRzLmluZGV4KTtcbiAgICAgICAgICAgIHZhciBuZXdMYXN0ID0gZmllbGRzLnNsaWNlKGxvbmdlc3RaZXJvRmllbGRzLmluZGV4ICsgbG9uZ2VzdFplcm9GaWVsZHMubGVuZ3RoKTtcbiAgICAgICAgICAgIG5ld0hvc3QgPSBuZXdGaXJzdC5qb2luKFwiOlwiKSArIFwiOjpcIiArIG5ld0xhc3Quam9pbihcIjpcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdIb3N0ID0gZmllbGRzLmpvaW4oXCI6XCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh6b25lKSB7XG4gICAgICAgICAgICBuZXdIb3N0ICs9IFwiJVwiICsgem9uZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3SG9zdDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gaG9zdDtcbiAgICB9XG59XG52YXIgVVJJX1BBUlNFID0gL14oPzooW146XFwvPyNdKyk6KT8oPzpcXC9cXC8oKD86KFteXFwvPyNAXSopQCk/KFxcW1teXFwvPyNcXF1dK1xcXXxbXlxcLz8jOl0qKSg/OlxcOihcXGQqKSk/KSk/KFtePyNdKikoPzpcXD8oW14jXSopKT8oPzojKCg/Oi58XFxufFxccikqKSk/L2k7XG52YXIgTk9fTUFUQ0hfSVNfVU5ERUZJTkVEID0gXCJcIi5tYXRjaCgvKCl7MH0vKVsxXSA9PT0gdW5kZWZpbmVkO1xuZnVuY3Rpb24gcGFyc2UodXJpU3RyaW5nKSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gICAgdmFyIGNvbXBvbmVudHMgPSB7fTtcbiAgICB2YXIgcHJvdG9jb2wgPSBvcHRpb25zLmlyaSAhPT0gZmFsc2UgPyBJUklfUFJPVE9DT0wgOiBVUklfUFJPVE9DT0w7XG4gICAgaWYgKG9wdGlvbnMucmVmZXJlbmNlID09PSBcInN1ZmZpeFwiKSB1cmlTdHJpbmcgPSAob3B0aW9ucy5zY2hlbWUgPyBvcHRpb25zLnNjaGVtZSArIFwiOlwiIDogXCJcIikgKyBcIi8vXCIgKyB1cmlTdHJpbmc7XG4gICAgdmFyIG1hdGNoZXMgPSB1cmlTdHJpbmcubWF0Y2goVVJJX1BBUlNFKTtcbiAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICBpZiAoTk9fTUFUQ0hfSVNfVU5ERUZJTkVEKSB7XG4gICAgICAgICAgICAvL3N0b3JlIGVhY2ggY29tcG9uZW50XG4gICAgICAgICAgICBjb21wb25lbnRzLnNjaGVtZSA9IG1hdGNoZXNbMV07XG4gICAgICAgICAgICBjb21wb25lbnRzLnVzZXJpbmZvID0gbWF0Y2hlc1szXTtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuaG9zdCA9IG1hdGNoZXNbNF07XG4gICAgICAgICAgICBjb21wb25lbnRzLnBvcnQgPSBwYXJzZUludChtYXRjaGVzWzVdLCAxMCk7XG4gICAgICAgICAgICBjb21wb25lbnRzLnBhdGggPSBtYXRjaGVzWzZdIHx8IFwiXCI7XG4gICAgICAgICAgICBjb21wb25lbnRzLnF1ZXJ5ID0gbWF0Y2hlc1s3XTtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuZnJhZ21lbnQgPSBtYXRjaGVzWzhdO1xuICAgICAgICAgICAgLy9maXggcG9ydCBudW1iZXJcbiAgICAgICAgICAgIGlmIChpc05hTihjb21wb25lbnRzLnBvcnQpKSB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50cy5wb3J0ID0gbWF0Y2hlc1s1XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vSUUgRklYIGZvciBpbXByb3BlciBSZWdFeHAgbWF0Y2hpbmdcbiAgICAgICAgICAgIC8vc3RvcmUgZWFjaCBjb21wb25lbnRcbiAgICAgICAgICAgIGNvbXBvbmVudHMuc2NoZW1lID0gbWF0Y2hlc1sxXSB8fCB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb21wb25lbnRzLnVzZXJpbmZvID0gdXJpU3RyaW5nLmluZGV4T2YoXCJAXCIpICE9PSAtMSA/IG1hdGNoZXNbM10gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb21wb25lbnRzLmhvc3QgPSB1cmlTdHJpbmcuaW5kZXhPZihcIi8vXCIpICE9PSAtMSA/IG1hdGNoZXNbNF0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb21wb25lbnRzLnBvcnQgPSBwYXJzZUludChtYXRjaGVzWzVdLCAxMCk7XG4gICAgICAgICAgICBjb21wb25lbnRzLnBhdGggPSBtYXRjaGVzWzZdIHx8IFwiXCI7XG4gICAgICAgICAgICBjb21wb25lbnRzLnF1ZXJ5ID0gdXJpU3RyaW5nLmluZGV4T2YoXCI/XCIpICE9PSAtMSA/IG1hdGNoZXNbN10gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb21wb25lbnRzLmZyYWdtZW50ID0gdXJpU3RyaW5nLmluZGV4T2YoXCIjXCIpICE9PSAtMSA/IG1hdGNoZXNbOF0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAvL2ZpeCBwb3J0IG51bWJlclxuICAgICAgICAgICAgaWYgKGlzTmFOKGNvbXBvbmVudHMucG9ydCkpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRzLnBvcnQgPSB1cmlTdHJpbmcubWF0Y2goL1xcL1xcLyg/Oi58XFxuKSpcXDooPzpcXC98XFw/fFxcI3wkKS8pID8gbWF0Y2hlc1s0XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tcG9uZW50cy5ob3N0KSB7XG4gICAgICAgICAgICAvL25vcm1hbGl6ZSBJUCBob3N0c1xuICAgICAgICAgICAgY29tcG9uZW50cy5ob3N0ID0gX25vcm1hbGl6ZUlQdjYoX25vcm1hbGl6ZUlQdjQoY29tcG9uZW50cy5ob3N0LCBwcm90b2NvbCksIHByb3RvY29sKTtcbiAgICAgICAgfVxuICAgICAgICAvL2RldGVybWluZSByZWZlcmVuY2UgdHlwZVxuICAgICAgICBpZiAoY29tcG9uZW50cy5zY2hlbWUgPT09IHVuZGVmaW5lZCAmJiBjb21wb25lbnRzLnVzZXJpbmZvID09PSB1bmRlZmluZWQgJiYgY29tcG9uZW50cy5ob3N0ID09PSB1bmRlZmluZWQgJiYgY29tcG9uZW50cy5wb3J0ID09PSB1bmRlZmluZWQgJiYgIWNvbXBvbmVudHMucGF0aCAmJiBjb21wb25lbnRzLnF1ZXJ5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucmVmZXJlbmNlID0gXCJzYW1lLWRvY3VtZW50XCI7XG4gICAgICAgIH0gZWxzZSBpZiAoY29tcG9uZW50cy5zY2hlbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29tcG9uZW50cy5yZWZlcmVuY2UgPSBcInJlbGF0aXZlXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoY29tcG9uZW50cy5mcmFnbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb21wb25lbnRzLnJlZmVyZW5jZSA9IFwiYWJzb2x1dGVcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucmVmZXJlbmNlID0gXCJ1cmlcIjtcbiAgICAgICAgfVxuICAgICAgICAvL2NoZWNrIGZvciByZWZlcmVuY2UgZXJyb3JzXG4gICAgICAgIGlmIChvcHRpb25zLnJlZmVyZW5jZSAmJiBvcHRpb25zLnJlZmVyZW5jZSAhPT0gXCJzdWZmaXhcIiAmJiBvcHRpb25zLnJlZmVyZW5jZSAhPT0gY29tcG9uZW50cy5yZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuZXJyb3IgPSBjb21wb25lbnRzLmVycm9yIHx8IFwiVVJJIGlzIG5vdCBhIFwiICsgb3B0aW9ucy5yZWZlcmVuY2UgKyBcIiByZWZlcmVuY2UuXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy9maW5kIHNjaGVtZSBoYW5kbGVyXG4gICAgICAgIHZhciBzY2hlbWVIYW5kbGVyID0gU0NIRU1FU1sob3B0aW9ucy5zY2hlbWUgfHwgY29tcG9uZW50cy5zY2hlbWUgfHwgXCJcIikudG9Mb3dlckNhc2UoKV07XG4gICAgICAgIC8vY2hlY2sgaWYgc2NoZW1lIGNhbid0IGhhbmRsZSBJUklzXG4gICAgICAgIGlmICghb3B0aW9ucy51bmljb2RlU3VwcG9ydCAmJiAoIXNjaGVtZUhhbmRsZXIgfHwgIXNjaGVtZUhhbmRsZXIudW5pY29kZVN1cHBvcnQpKSB7XG4gICAgICAgICAgICAvL2lmIGhvc3QgY29tcG9uZW50IGlzIGEgZG9tYWluIG5hbWVcbiAgICAgICAgICAgIGlmIChjb21wb25lbnRzLmhvc3QgJiYgKG9wdGlvbnMuZG9tYWluSG9zdCB8fCBzY2hlbWVIYW5kbGVyICYmIHNjaGVtZUhhbmRsZXIuZG9tYWluSG9zdCkpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnZlcnQgVW5pY29kZSBJRE4gLT4gQVNDSUkgSUROXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5ob3N0ID0gcHVueWNvZGUudG9BU0NJSShjb21wb25lbnRzLmhvc3QucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgcGN0RGVjQ2hhcnMpLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5lcnJvciA9IGNvbXBvbmVudHMuZXJyb3IgfHwgXCJIb3N0J3MgZG9tYWluIG5hbWUgY2FuIG5vdCBiZSBjb252ZXJ0ZWQgdG8gQVNDSUkgdmlhIHB1bnljb2RlOiBcIiArIGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9jb252ZXJ0IElSSSAtPiBVUklcbiAgICAgICAgICAgIF9ub3JtYWxpemVDb21wb25lbnRFbmNvZGluZyhjb21wb25lbnRzLCBVUklfUFJPVE9DT0wpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy9ub3JtYWxpemUgZW5jb2RpbmdzXG4gICAgICAgICAgICBfbm9ybWFsaXplQ29tcG9uZW50RW5jb2RpbmcoY29tcG9uZW50cywgcHJvdG9jb2wpO1xuICAgICAgICB9XG4gICAgICAgIC8vcGVyZm9ybSBzY2hlbWUgc3BlY2lmaWMgcGFyc2luZ1xuICAgICAgICBpZiAoc2NoZW1lSGFuZGxlciAmJiBzY2hlbWVIYW5kbGVyLnBhcnNlKSB7XG4gICAgICAgICAgICBzY2hlbWVIYW5kbGVyLnBhcnNlKGNvbXBvbmVudHMsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29tcG9uZW50cy5lcnJvciA9IGNvbXBvbmVudHMuZXJyb3IgfHwgXCJVUkkgY2FuIG5vdCBiZSBwYXJzZWQuXCI7XG4gICAgfVxuICAgIHJldHVybiBjb21wb25lbnRzO1xufVxuXG5mdW5jdGlvbiBfcmVjb21wb3NlQXV0aG9yaXR5KGNvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICB2YXIgcHJvdG9jb2wgPSBvcHRpb25zLmlyaSAhPT0gZmFsc2UgPyBJUklfUFJPVE9DT0wgOiBVUklfUFJPVE9DT0w7XG4gICAgdmFyIHVyaVRva2VucyA9IFtdO1xuICAgIGlmIChjb21wb25lbnRzLnVzZXJpbmZvICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goY29tcG9uZW50cy51c2VyaW5mbyk7XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKFwiQFwiKTtcbiAgICB9XG4gICAgaWYgKGNvbXBvbmVudHMuaG9zdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vbm9ybWFsaXplIElQIGhvc3RzLCBhZGQgYnJhY2tldHMgYW5kIGVzY2FwZSB6b25lIHNlcGFyYXRvciBmb3IgSVB2NlxuICAgICAgICB1cmlUb2tlbnMucHVzaChfbm9ybWFsaXplSVB2Nihfbm9ybWFsaXplSVB2NChTdHJpbmcoY29tcG9uZW50cy5ob3N0KSwgcHJvdG9jb2wpLCBwcm90b2NvbCkucmVwbGFjZShwcm90b2NvbC5JUFY2QUREUkVTUywgZnVuY3Rpb24gKF8sICQxLCAkMikge1xuICAgICAgICAgICAgcmV0dXJuIFwiW1wiICsgJDEgKyAoJDIgPyBcIiUyNVwiICsgJDIgOiBcIlwiKSArIFwiXVwiO1xuICAgICAgICB9KSk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgY29tcG9uZW50cy5wb3J0ID09PSBcIm51bWJlclwiIHx8IHR5cGVvZiBjb21wb25lbnRzLnBvcnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goXCI6XCIpO1xuICAgICAgICB1cmlUb2tlbnMucHVzaChTdHJpbmcoY29tcG9uZW50cy5wb3J0KSk7XG4gICAgfVxuICAgIHJldHVybiB1cmlUb2tlbnMubGVuZ3RoID8gdXJpVG9rZW5zLmpvaW4oXCJcIikgOiB1bmRlZmluZWQ7XG59XG5cbnZhciBSRFMxID0gL15cXC5cXC4/XFwvLztcbnZhciBSRFMyID0gL15cXC9cXC4oXFwvfCQpLztcbnZhciBSRFMzID0gL15cXC9cXC5cXC4oXFwvfCQpLztcbnZhciBSRFM1ID0gL15cXC8/KD86LnxcXG4pKj8oPz1cXC98JCkvO1xuZnVuY3Rpb24gcmVtb3ZlRG90U2VnbWVudHMoaW5wdXQpIHtcbiAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgd2hpbGUgKGlucHV0Lmxlbmd0aCkge1xuICAgICAgICBpZiAoaW5wdXQubWF0Y2goUkRTMSkpIHtcbiAgICAgICAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZShSRFMxLCBcIlwiKTtcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5tYXRjaChSRFMyKSkge1xuICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKFJEUzIsIFwiL1wiKTtcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5tYXRjaChSRFMzKSkge1xuICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKFJEUzMsIFwiL1wiKTtcbiAgICAgICAgICAgIG91dHB1dC5wb3AoKTtcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PT0gXCIuXCIgfHwgaW5wdXQgPT09IFwiLi5cIikge1xuICAgICAgICAgICAgaW5wdXQgPSBcIlwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIGltID0gaW5wdXQubWF0Y2goUkRTNSk7XG4gICAgICAgICAgICBpZiAoaW0pIHtcbiAgICAgICAgICAgICAgICB2YXIgcyA9IGltWzBdO1xuICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQuc2xpY2Uocy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIG91dHB1dC5wdXNoKHMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIGRvdCBzZWdtZW50IGNvbmRpdGlvblwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0LmpvaW4oXCJcIik7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZShjb21wb25lbnRzKSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gICAgdmFyIHByb3RvY29sID0gb3B0aW9ucy5pcmkgPyBJUklfUFJPVE9DT0wgOiBVUklfUFJPVE9DT0w7XG4gICAgdmFyIHVyaVRva2VucyA9IFtdO1xuICAgIC8vZmluZCBzY2hlbWUgaGFuZGxlclxuICAgIHZhciBzY2hlbWVIYW5kbGVyID0gU0NIRU1FU1sob3B0aW9ucy5zY2hlbWUgfHwgY29tcG9uZW50cy5zY2hlbWUgfHwgXCJcIikudG9Mb3dlckNhc2UoKV07XG4gICAgLy9wZXJmb3JtIHNjaGVtZSBzcGVjaWZpYyBzZXJpYWxpemF0aW9uXG4gICAgaWYgKHNjaGVtZUhhbmRsZXIgJiYgc2NoZW1lSGFuZGxlci5zZXJpYWxpemUpIHNjaGVtZUhhbmRsZXIuc2VyaWFsaXplKGNvbXBvbmVudHMsIG9wdGlvbnMpO1xuICAgIGlmIChjb21wb25lbnRzLmhvc3QpIHtcbiAgICAgICAgLy9pZiBob3N0IGNvbXBvbmVudCBpcyBhbiBJUHY2IGFkZHJlc3NcbiAgICAgICAgaWYgKHByb3RvY29sLklQVjZBRERSRVNTLnRlc3QoY29tcG9uZW50cy5ob3N0KSkge31cbiAgICAgICAgLy9UT0RPOiBub3JtYWxpemUgSVB2NiBhZGRyZXNzIGFzIHBlciBSRkMgNTk1MlxuXG4gICAgICAgIC8vaWYgaG9zdCBjb21wb25lbnQgaXMgYSBkb21haW4gbmFtZVxuICAgICAgICBlbHNlIGlmIChvcHRpb25zLmRvbWFpbkhvc3QgfHwgc2NoZW1lSGFuZGxlciAmJiBzY2hlbWVIYW5kbGVyLmRvbWFpbkhvc3QpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnZlcnQgSUROIHZpYSBwdW55Y29kZVxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMuaG9zdCA9ICFvcHRpb25zLmlyaSA/IHB1bnljb2RlLnRvQVNDSUkoY29tcG9uZW50cy5ob3N0LnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIHBjdERlY0NoYXJzKS50b0xvd2VyQ2FzZSgpKSA6IHB1bnljb2RlLnRvVW5pY29kZShjb21wb25lbnRzLmhvc3QpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5lcnJvciA9IGNvbXBvbmVudHMuZXJyb3IgfHwgXCJIb3N0J3MgZG9tYWluIG5hbWUgY2FuIG5vdCBiZSBjb252ZXJ0ZWQgdG8gXCIgKyAoIW9wdGlvbnMuaXJpID8gXCJBU0NJSVwiIDogXCJVbmljb2RlXCIpICsgXCIgdmlhIHB1bnljb2RlOiBcIiArIGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIH1cbiAgICAvL25vcm1hbGl6ZSBlbmNvZGluZ1xuICAgIF9ub3JtYWxpemVDb21wb25lbnRFbmNvZGluZyhjb21wb25lbnRzLCBwcm90b2NvbCk7XG4gICAgaWYgKG9wdGlvbnMucmVmZXJlbmNlICE9PSBcInN1ZmZpeFwiICYmIGNvbXBvbmVudHMuc2NoZW1lKSB7XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKGNvbXBvbmVudHMuc2NoZW1lKTtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goXCI6XCIpO1xuICAgIH1cbiAgICB2YXIgYXV0aG9yaXR5ID0gX3JlY29tcG9zZUF1dGhvcml0eShjb21wb25lbnRzLCBvcHRpb25zKTtcbiAgICBpZiAoYXV0aG9yaXR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMucmVmZXJlbmNlICE9PSBcInN1ZmZpeFwiKSB7XG4gICAgICAgICAgICB1cmlUb2tlbnMucHVzaChcIi8vXCIpO1xuICAgICAgICB9XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKGF1dGhvcml0eSk7XG4gICAgICAgIGlmIChjb21wb25lbnRzLnBhdGggJiYgY29tcG9uZW50cy5wYXRoLmNoYXJBdCgwKSAhPT0gXCIvXCIpIHtcbiAgICAgICAgICAgIHVyaVRva2Vucy5wdXNoKFwiL1wiKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoY29tcG9uZW50cy5wYXRoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFyIHMgPSBjb21wb25lbnRzLnBhdGg7XG4gICAgICAgIGlmICghb3B0aW9ucy5hYnNvbHV0ZVBhdGggJiYgKCFzY2hlbWVIYW5kbGVyIHx8ICFzY2hlbWVIYW5kbGVyLmFic29sdXRlUGF0aCkpIHtcbiAgICAgICAgICAgIHMgPSByZW1vdmVEb3RTZWdtZW50cyhzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXV0aG9yaXR5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoL15cXC9cXC8vLCBcIi8lMkZcIik7IC8vZG9uJ3QgYWxsb3cgdGhlIHBhdGggdG8gc3RhcnQgd2l0aCBcIi8vXCJcbiAgICAgICAgfVxuICAgICAgICB1cmlUb2tlbnMucHVzaChzKTtcbiAgICB9XG4gICAgaWYgKGNvbXBvbmVudHMucXVlcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cmlUb2tlbnMucHVzaChcIj9cIik7XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKGNvbXBvbmVudHMucXVlcnkpO1xuICAgIH1cbiAgICBpZiAoY29tcG9uZW50cy5mcmFnbWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKFwiI1wiKTtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goY29tcG9uZW50cy5mcmFnbWVudCk7XG4gICAgfVxuICAgIHJldHVybiB1cmlUb2tlbnMuam9pbihcIlwiKTsgLy9tZXJnZSB0b2tlbnMgaW50byBhIHN0cmluZ1xufVxuXG5mdW5jdGlvbiByZXNvbHZlQ29tcG9uZW50cyhiYXNlLCByZWxhdGl2ZSkge1xuICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7fTtcbiAgICB2YXIgc2tpcE5vcm1hbGl6YXRpb24gPSBhcmd1bWVudHNbM107XG5cbiAgICB2YXIgdGFyZ2V0ID0ge307XG4gICAgaWYgKCFza2lwTm9ybWFsaXphdGlvbikge1xuICAgICAgICBiYXNlID0gcGFyc2Uoc2VyaWFsaXplKGJhc2UsIG9wdGlvbnMpLCBvcHRpb25zKTsgLy9ub3JtYWxpemUgYmFzZSBjb21wb25lbnRzXG4gICAgICAgIHJlbGF0aXZlID0gcGFyc2Uoc2VyaWFsaXplKHJlbGF0aXZlLCBvcHRpb25zKSwgb3B0aW9ucyk7IC8vbm9ybWFsaXplIHJlbGF0aXZlIGNvbXBvbmVudHNcbiAgICB9XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgaWYgKCFvcHRpb25zLnRvbGVyYW50ICYmIHJlbGF0aXZlLnNjaGVtZSkge1xuICAgICAgICB0YXJnZXQuc2NoZW1lID0gcmVsYXRpdmUuc2NoZW1lO1xuICAgICAgICAvL3RhcmdldC5hdXRob3JpdHkgPSByZWxhdGl2ZS5hdXRob3JpdHk7XG4gICAgICAgIHRhcmdldC51c2VyaW5mbyA9IHJlbGF0aXZlLnVzZXJpbmZvO1xuICAgICAgICB0YXJnZXQuaG9zdCA9IHJlbGF0aXZlLmhvc3Q7XG4gICAgICAgIHRhcmdldC5wb3J0ID0gcmVsYXRpdmUucG9ydDtcbiAgICAgICAgdGFyZ2V0LnBhdGggPSByZW1vdmVEb3RTZWdtZW50cyhyZWxhdGl2ZS5wYXRoIHx8IFwiXCIpO1xuICAgICAgICB0YXJnZXQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocmVsYXRpdmUudXNlcmluZm8gIT09IHVuZGVmaW5lZCB8fCByZWxhdGl2ZS5ob3N0ICE9PSB1bmRlZmluZWQgfHwgcmVsYXRpdmUucG9ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvL3RhcmdldC5hdXRob3JpdHkgPSByZWxhdGl2ZS5hdXRob3JpdHk7XG4gICAgICAgICAgICB0YXJnZXQudXNlcmluZm8gPSByZWxhdGl2ZS51c2VyaW5mbztcbiAgICAgICAgICAgIHRhcmdldC5ob3N0ID0gcmVsYXRpdmUuaG9zdDtcbiAgICAgICAgICAgIHRhcmdldC5wb3J0ID0gcmVsYXRpdmUucG9ydDtcbiAgICAgICAgICAgIHRhcmdldC5wYXRoID0gcmVtb3ZlRG90U2VnbWVudHMocmVsYXRpdmUucGF0aCB8fCBcIlwiKTtcbiAgICAgICAgICAgIHRhcmdldC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFyZWxhdGl2ZS5wYXRoKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnBhdGggPSBiYXNlLnBhdGg7XG4gICAgICAgICAgICAgICAgaWYgKHJlbGF0aXZlLnF1ZXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnF1ZXJ5ID0gYmFzZS5xdWVyeTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChyZWxhdGl2ZS5wYXRoLmNoYXJBdCgwKSA9PT0gXCIvXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnBhdGggPSByZW1vdmVEb3RTZWdtZW50cyhyZWxhdGl2ZS5wYXRoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoKGJhc2UudXNlcmluZm8gIT09IHVuZGVmaW5lZCB8fCBiYXNlLmhvc3QgIT09IHVuZGVmaW5lZCB8fCBiYXNlLnBvcnQgIT09IHVuZGVmaW5lZCkgJiYgIWJhc2UucGF0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnBhdGggPSBcIi9cIiArIHJlbGF0aXZlLnBhdGg7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWJhc2UucGF0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnBhdGggPSByZWxhdGl2ZS5wYXRoO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnBhdGggPSBiYXNlLnBhdGguc2xpY2UoMCwgYmFzZS5wYXRoLmxhc3RJbmRleE9mKFwiL1wiKSArIDEpICsgcmVsYXRpdmUucGF0aDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQucGF0aCA9IHJlbW92ZURvdFNlZ21lbnRzKHRhcmdldC5wYXRoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL3RhcmdldC5hdXRob3JpdHkgPSBiYXNlLmF1dGhvcml0eTtcbiAgICAgICAgICAgIHRhcmdldC51c2VyaW5mbyA9IGJhc2UudXNlcmluZm87XG4gICAgICAgICAgICB0YXJnZXQuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICAgIHRhcmdldC5wb3J0ID0gYmFzZS5wb3J0O1xuICAgICAgICB9XG4gICAgICAgIHRhcmdldC5zY2hlbWUgPSBiYXNlLnNjaGVtZTtcbiAgICB9XG4gICAgdGFyZ2V0LmZyYWdtZW50ID0gcmVsYXRpdmUuZnJhZ21lbnQ7XG4gICAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZShiYXNlVVJJLCByZWxhdGl2ZVVSSSwgb3B0aW9ucykge1xuICAgIHZhciBzY2hlbWVsZXNzT3B0aW9ucyA9IGFzc2lnbih7IHNjaGVtZTogJ251bGwnIH0sIG9wdGlvbnMpO1xuICAgIHJldHVybiBzZXJpYWxpemUocmVzb2x2ZUNvbXBvbmVudHMocGFyc2UoYmFzZVVSSSwgc2NoZW1lbGVzc09wdGlvbnMpLCBwYXJzZShyZWxhdGl2ZVVSSSwgc2NoZW1lbGVzc09wdGlvbnMpLCBzY2hlbWVsZXNzT3B0aW9ucywgdHJ1ZSksIHNjaGVtZWxlc3NPcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplKHVyaSwgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2YgdXJpID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHVyaSA9IHNlcmlhbGl6ZShwYXJzZSh1cmksIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVPZih1cmkpID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIHVyaSA9IHBhcnNlKHNlcmlhbGl6ZSh1cmksIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHVyaTtcbn1cblxuZnVuY3Rpb24gZXF1YWwodXJpQSwgdXJpQiwgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2YgdXJpQSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICB1cmlBID0gc2VyaWFsaXplKHBhcnNlKHVyaUEsIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVPZih1cmlBKSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICB1cmlBID0gc2VyaWFsaXplKHVyaUEsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHVyaUIgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdXJpQiA9IHNlcmlhbGl6ZShwYXJzZSh1cmlCLCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIGlmICh0eXBlT2YodXJpQikgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgdXJpQiA9IHNlcmlhbGl6ZSh1cmlCLCBvcHRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHVyaUEgPT09IHVyaUI7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUNvbXBvbmVudChzdHIsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gc3RyICYmIHN0ci50b1N0cmluZygpLnJlcGxhY2UoIW9wdGlvbnMgfHwgIW9wdGlvbnMuaXJpID8gVVJJX1BST1RPQ09MLkVTQ0FQRSA6IElSSV9QUk9UT0NPTC5FU0NBUEUsIHBjdEVuY0NoYXIpO1xufVxuXG5mdW5jdGlvbiB1bmVzY2FwZUNvbXBvbmVudChzdHIsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gc3RyICYmIHN0ci50b1N0cmluZygpLnJlcGxhY2UoIW9wdGlvbnMgfHwgIW9wdGlvbnMuaXJpID8gVVJJX1BST1RPQ09MLlBDVF9FTkNPREVEIDogSVJJX1BST1RPQ09MLlBDVF9FTkNPREVELCBwY3REZWNDaGFycyk7XG59XG5cbnZhciBoYW5kbGVyID0ge1xuICAgIHNjaGVtZTogXCJodHRwXCIsXG4gICAgZG9tYWluSG9zdDogdHJ1ZSxcbiAgICBwYXJzZTogZnVuY3Rpb24gcGFyc2UoY29tcG9uZW50cywgb3B0aW9ucykge1xuICAgICAgICAvL3JlcG9ydCBtaXNzaW5nIGhvc3RcbiAgICAgICAgaWYgKCFjb21wb25lbnRzLmhvc3QpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuZXJyb3IgPSBjb21wb25lbnRzLmVycm9yIHx8IFwiSFRUUCBVUklzIG11c3QgaGF2ZSBhIGhvc3QuXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudHM7XG4gICAgfSxcbiAgICBzZXJpYWxpemU6IGZ1bmN0aW9uIHNlcmlhbGl6ZShjb21wb25lbnRzLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBzZWN1cmUgPSBTdHJpbmcoY29tcG9uZW50cy5zY2hlbWUpLnRvTG93ZXJDYXNlKCkgPT09IFwiaHR0cHNcIjtcbiAgICAgICAgLy9ub3JtYWxpemUgdGhlIGRlZmF1bHQgcG9ydFxuICAgICAgICBpZiAoY29tcG9uZW50cy5wb3J0ID09PSAoc2VjdXJlID8gNDQzIDogODApIHx8IGNvbXBvbmVudHMucG9ydCA9PT0gXCJcIikge1xuICAgICAgICAgICAgY29tcG9uZW50cy5wb3J0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vbm9ybWFsaXplIHRoZSBlbXB0eSBwYXRoXG4gICAgICAgIGlmICghY29tcG9uZW50cy5wYXRoKSB7XG4gICAgICAgICAgICBjb21wb25lbnRzLnBhdGggPSBcIi9cIjtcbiAgICAgICAgfVxuICAgICAgICAvL05PVEU6IFdlIGRvIG5vdCBwYXJzZSBxdWVyeSBzdHJpbmdzIGZvciBIVFRQIFVSSXNcbiAgICAgICAgLy9hcyBXV1cgRm9ybSBVcmwgRW5jb2RlZCBxdWVyeSBzdHJpbmdzIGFyZSBwYXJ0IG9mIHRoZSBIVE1MNCsgc3BlYyxcbiAgICAgICAgLy9hbmQgbm90IHRoZSBIVFRQIHNwZWMuXG4gICAgICAgIHJldHVybiBjb21wb25lbnRzO1xuICAgIH1cbn07XG5cbnZhciBoYW5kbGVyJDEgPSB7XG4gICAgc2NoZW1lOiBcImh0dHBzXCIsXG4gICAgZG9tYWluSG9zdDogaGFuZGxlci5kb21haW5Ib3N0LFxuICAgIHBhcnNlOiBoYW5kbGVyLnBhcnNlLFxuICAgIHNlcmlhbGl6ZTogaGFuZGxlci5zZXJpYWxpemVcbn07XG5cbmZ1bmN0aW9uIGlzU2VjdXJlKHdzQ29tcG9uZW50cykge1xuICAgIHJldHVybiB0eXBlb2Ygd3NDb21wb25lbnRzLnNlY3VyZSA9PT0gJ2Jvb2xlYW4nID8gd3NDb21wb25lbnRzLnNlY3VyZSA6IFN0cmluZyh3c0NvbXBvbmVudHMuc2NoZW1lKS50b0xvd2VyQ2FzZSgpID09PSBcIndzc1wiO1xufVxuLy9SRkMgNjQ1NVxudmFyIGhhbmRsZXIkMiA9IHtcbiAgICBzY2hlbWU6IFwid3NcIixcbiAgICBkb21haW5Ib3N0OiB0cnVlLFxuICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZShjb21wb25lbnRzLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciB3c0NvbXBvbmVudHMgPSBjb21wb25lbnRzO1xuICAgICAgICAvL2luZGljYXRlIGlmIHRoZSBzZWN1cmUgZmxhZyBpcyBzZXRcbiAgICAgICAgd3NDb21wb25lbnRzLnNlY3VyZSA9IGlzU2VjdXJlKHdzQ29tcG9uZW50cyk7XG4gICAgICAgIC8vY29uc3RydWN0IHJlc291Y2UgbmFtZVxuICAgICAgICB3c0NvbXBvbmVudHMucmVzb3VyY2VOYW1lID0gKHdzQ29tcG9uZW50cy5wYXRoIHx8ICcvJykgKyAod3NDb21wb25lbnRzLnF1ZXJ5ID8gJz8nICsgd3NDb21wb25lbnRzLnF1ZXJ5IDogJycpO1xuICAgICAgICB3c0NvbXBvbmVudHMucGF0aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgd3NDb21wb25lbnRzLnF1ZXJ5ID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gd3NDb21wb25lbnRzO1xuICAgIH0sXG4gICAgc2VyaWFsaXplOiBmdW5jdGlvbiBzZXJpYWxpemUod3NDb21wb25lbnRzLCBvcHRpb25zKSB7XG4gICAgICAgIC8vbm9ybWFsaXplIHRoZSBkZWZhdWx0IHBvcnRcbiAgICAgICAgaWYgKHdzQ29tcG9uZW50cy5wb3J0ID09PSAoaXNTZWN1cmUod3NDb21wb25lbnRzKSA/IDQ0MyA6IDgwKSB8fCB3c0NvbXBvbmVudHMucG9ydCA9PT0gXCJcIikge1xuICAgICAgICAgICAgd3NDb21wb25lbnRzLnBvcnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy9lbnN1cmUgc2NoZW1lIG1hdGNoZXMgc2VjdXJlIGZsYWdcbiAgICAgICAgaWYgKHR5cGVvZiB3c0NvbXBvbmVudHMuc2VjdXJlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHdzQ29tcG9uZW50cy5zY2hlbWUgPSB3c0NvbXBvbmVudHMuc2VjdXJlID8gJ3dzcycgOiAnd3MnO1xuICAgICAgICAgICAgd3NDb21wb25lbnRzLnNlY3VyZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvL3JlY29uc3RydWN0IHBhdGggZnJvbSByZXNvdXJjZSBuYW1lXG4gICAgICAgIGlmICh3c0NvbXBvbmVudHMucmVzb3VyY2VOYW1lKSB7XG4gICAgICAgICAgICB2YXIgX3dzQ29tcG9uZW50cyRyZXNvdXJjID0gd3NDb21wb25lbnRzLnJlc291cmNlTmFtZS5zcGxpdCgnPycpLFxuICAgICAgICAgICAgICAgIF93c0NvbXBvbmVudHMkcmVzb3VyYzIgPSBzbGljZWRUb0FycmF5KF93c0NvbXBvbmVudHMkcmVzb3VyYywgMiksXG4gICAgICAgICAgICAgICAgcGF0aCA9IF93c0NvbXBvbmVudHMkcmVzb3VyYzJbMF0sXG4gICAgICAgICAgICAgICAgcXVlcnkgPSBfd3NDb21wb25lbnRzJHJlc291cmMyWzFdO1xuXG4gICAgICAgICAgICB3c0NvbXBvbmVudHMucGF0aCA9IHBhdGggJiYgcGF0aCAhPT0gJy8nID8gcGF0aCA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHdzQ29tcG9uZW50cy5xdWVyeSA9IHF1ZXJ5O1xuICAgICAgICAgICAgd3NDb21wb25lbnRzLnJlc291cmNlTmFtZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvL2ZvcmJpZCBmcmFnbWVudCBjb21wb25lbnRcbiAgICAgICAgd3NDb21wb25lbnRzLmZyYWdtZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gd3NDb21wb25lbnRzO1xuICAgIH1cbn07XG5cbnZhciBoYW5kbGVyJDMgPSB7XG4gICAgc2NoZW1lOiBcIndzc1wiLFxuICAgIGRvbWFpbkhvc3Q6IGhhbmRsZXIkMi5kb21haW5Ib3N0LFxuICAgIHBhcnNlOiBoYW5kbGVyJDIucGFyc2UsXG4gICAgc2VyaWFsaXplOiBoYW5kbGVyJDIuc2VyaWFsaXplXG59O1xuXG52YXIgTyA9IHt9O1xudmFyIGlzSVJJID0gdHJ1ZTtcbi8vUkZDIDM5ODZcbnZhciBVTlJFU0VSVkVEJCQgPSBcIltBLVphLXowLTlcXFxcLVxcXFwuXFxcXF9cXFxcflwiICsgKGlzSVJJID8gXCJcXFxceEEwLVxcXFx1MjAwRFxcXFx1MjAxMC1cXFxcdTIwMjlcXFxcdTIwMkYtXFxcXHVEN0ZGXFxcXHVGOTAwLVxcXFx1RkRDRlxcXFx1RkRGMC1cXFxcdUZGRUZcIiA6IFwiXCIpICsgXCJdXCI7XG52YXIgSEVYRElHJCQgPSBcIlswLTlBLUZhLWZdXCI7IC8vY2FzZS1pbnNlbnNpdGl2ZVxudmFyIFBDVF9FTkNPREVEJCA9IHN1YmV4cChzdWJleHAoXCIlW0VGZWZdXCIgKyBIRVhESUckJCArIFwiJVwiICsgSEVYRElHJCQgKyBIRVhESUckJCArIFwiJVwiICsgSEVYRElHJCQgKyBIRVhESUckJCkgKyBcInxcIiArIHN1YmV4cChcIiVbODlBLUZhLWZdXCIgKyBIRVhESUckJCArIFwiJVwiICsgSEVYRElHJCQgKyBIRVhESUckJCkgKyBcInxcIiArIHN1YmV4cChcIiVcIiArIEhFWERJRyQkICsgSEVYRElHJCQpKTsgLy9leHBhbmRlZFxuLy9SRkMgNTMyMiwgZXhjZXB0IHRoZXNlIHN5bWJvbHMgYXMgcGVyIFJGQyA2MDY4OiBAIDogLyA/ICMgWyBdICYgOyA9XG4vL2NvbnN0IEFURVhUJCQgPSBcIltBLVphLXowLTlcXFxcIVxcXFwjXFxcXCRcXFxcJVxcXFwmXFxcXCdcXFxcKlxcXFwrXFxcXC1cXFxcL1xcXFw9XFxcXD9cXFxcXlxcXFxfXFxcXGBcXFxce1xcXFx8XFxcXH1cXFxcfl1cIjtcbi8vY29uc3QgV1NQJCQgPSBcIltcXFxceDIwXFxcXHgwOV1cIjtcbi8vY29uc3QgT0JTX1FURVhUJCQgPSBcIltcXFxceDAxLVxcXFx4MDhcXFxceDBCXFxcXHgwQ1xcXFx4MEUtXFxcXHgxRlxcXFx4N0ZdXCI7ICAvLyglZDEtOCAvICVkMTEtMTIgLyAlZDE0LTMxIC8gJWQxMjcpXG4vL2NvbnN0IFFURVhUJCQgPSBtZXJnZShcIltcXFxceDIxXFxcXHgyMy1cXFxceDVCXFxcXHg1RC1cXFxceDdFXVwiLCBPQlNfUVRFWFQkJCk7ICAvLyVkMzMgLyAlZDM1LTkxIC8gJWQ5My0xMjYgLyBvYnMtcXRleHRcbi8vY29uc3QgVkNIQVIkJCA9IFwiW1xcXFx4MjEtXFxcXHg3RV1cIjtcbi8vY29uc3QgV1NQJCQgPSBcIltcXFxceDIwXFxcXHgwOV1cIjtcbi8vY29uc3QgT0JTX1FQJCA9IHN1YmV4cChcIlxcXFxcXFxcXCIgKyBtZXJnZShcIltcXFxceDAwXFxcXHgwRFxcXFx4MEFdXCIsIE9CU19RVEVYVCQkKSk7ICAvLyVkMCAvIENSIC8gTEYgLyBvYnMtcXRleHRcbi8vY29uc3QgRldTJCA9IHN1YmV4cChzdWJleHAoV1NQJCQgKyBcIipcIiArIFwiXFxcXHgwRFxcXFx4MEFcIikgKyBcIj9cIiArIFdTUCQkICsgXCIrXCIpO1xuLy9jb25zdCBRVU9URURfUEFJUiQgPSBzdWJleHAoc3ViZXhwKFwiXFxcXFxcXFxcIiArIHN1YmV4cChWQ0hBUiQkICsgXCJ8XCIgKyBXU1AkJCkpICsgXCJ8XCIgKyBPQlNfUVAkKTtcbi8vY29uc3QgUVVPVEVEX1NUUklORyQgPSBzdWJleHAoJ1xcXFxcIicgKyBzdWJleHAoRldTJCArIFwiP1wiICsgUUNPTlRFTlQkKSArIFwiKlwiICsgRldTJCArIFwiP1wiICsgJ1xcXFxcIicpO1xudmFyIEFURVhUJCQgPSBcIltBLVphLXowLTlcXFxcIVxcXFwkXFxcXCVcXFxcJ1xcXFwqXFxcXCtcXFxcLVxcXFxeXFxcXF9cXFxcYFxcXFx7XFxcXHxcXFxcfVxcXFx+XVwiO1xudmFyIFFURVhUJCQgPSBcIltcXFxcIVxcXFwkXFxcXCVcXFxcJ1xcXFwoXFxcXClcXFxcKlxcXFwrXFxcXCxcXFxcLVxcXFwuMC05XFxcXDxcXFxcPkEtWlxcXFx4NUUtXFxcXHg3RV1cIjtcbnZhciBWQ0hBUiQkID0gbWVyZ2UoUVRFWFQkJCwgXCJbXFxcXFxcXCJcXFxcXFxcXF1cIik7XG52YXIgU09NRV9ERUxJTVMkJCA9IFwiW1xcXFwhXFxcXCRcXFxcJ1xcXFwoXFxcXClcXFxcKlxcXFwrXFxcXCxcXFxcO1xcXFw6XFxcXEBdXCI7XG52YXIgVU5SRVNFUlZFRCA9IG5ldyBSZWdFeHAoVU5SRVNFUlZFRCQkLCBcImdcIik7XG52YXIgUENUX0VOQ09ERUQgPSBuZXcgUmVnRXhwKFBDVF9FTkNPREVEJCwgXCJnXCIpO1xudmFyIE5PVF9MT0NBTF9QQVJUID0gbmV3IFJlZ0V4cChtZXJnZShcIlteXVwiLCBBVEVYVCQkLCBcIltcXFxcLl1cIiwgJ1tcXFxcXCJdJywgVkNIQVIkJCksIFwiZ1wiKTtcbnZhciBOT1RfSEZOQU1FID0gbmV3IFJlZ0V4cChtZXJnZShcIlteXVwiLCBVTlJFU0VSVkVEJCQsIFNPTUVfREVMSU1TJCQpLCBcImdcIik7XG52YXIgTk9UX0hGVkFMVUUgPSBOT1RfSEZOQU1FO1xuZnVuY3Rpb24gZGVjb2RlVW5yZXNlcnZlZChzdHIpIHtcbiAgICB2YXIgZGVjU3RyID0gcGN0RGVjQ2hhcnMoc3RyKTtcbiAgICByZXR1cm4gIWRlY1N0ci5tYXRjaChVTlJFU0VSVkVEKSA/IHN0ciA6IGRlY1N0cjtcbn1cbnZhciBoYW5kbGVyJDQgPSB7XG4gICAgc2NoZW1lOiBcIm1haWx0b1wiLFxuICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZSQkMShjb21wb25lbnRzLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBtYWlsdG9Db21wb25lbnRzID0gY29tcG9uZW50cztcbiAgICAgICAgdmFyIHRvID0gbWFpbHRvQ29tcG9uZW50cy50byA9IG1haWx0b0NvbXBvbmVudHMucGF0aCA/IG1haWx0b0NvbXBvbmVudHMucGF0aC5zcGxpdChcIixcIikgOiBbXTtcbiAgICAgICAgbWFpbHRvQ29tcG9uZW50cy5wYXRoID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAobWFpbHRvQ29tcG9uZW50cy5xdWVyeSkge1xuICAgICAgICAgICAgdmFyIHVua25vd25IZWFkZXJzID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgaGVhZGVycyA9IHt9O1xuICAgICAgICAgICAgdmFyIGhmaWVsZHMgPSBtYWlsdG9Db21wb25lbnRzLnF1ZXJ5LnNwbGl0KFwiJlwiKTtcbiAgICAgICAgICAgIGZvciAodmFyIHggPSAwLCB4bCA9IGhmaWVsZHMubGVuZ3RoOyB4IDwgeGw7ICsreCkge1xuICAgICAgICAgICAgICAgIHZhciBoZmllbGQgPSBoZmllbGRzW3hdLnNwbGl0KFwiPVwiKTtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGhmaWVsZFswXSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwidG9cIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0b0FkZHJzID0gaGZpZWxkWzFdLnNwbGl0KFwiLFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF94ID0gMCwgX3hsID0gdG9BZGRycy5sZW5ndGg7IF94IDwgX3hsOyArK194KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8ucHVzaCh0b0FkZHJzW194XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInN1YmplY3RcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIG1haWx0b0NvbXBvbmVudHMuc3ViamVjdCA9IHVuZXNjYXBlQ29tcG9uZW50KGhmaWVsZFsxXSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImJvZHlcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIG1haWx0b0NvbXBvbmVudHMuYm9keSA9IHVuZXNjYXBlQ29tcG9uZW50KGhmaWVsZFsxXSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHVua25vd25IZWFkZXJzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbdW5lc2NhcGVDb21wb25lbnQoaGZpZWxkWzBdLCBvcHRpb25zKV0gPSB1bmVzY2FwZUNvbXBvbmVudChoZmllbGRbMV0sIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHVua25vd25IZWFkZXJzKSBtYWlsdG9Db21wb25lbnRzLmhlYWRlcnMgPSBoZWFkZXJzO1xuICAgICAgICB9XG4gICAgICAgIG1haWx0b0NvbXBvbmVudHMucXVlcnkgPSB1bmRlZmluZWQ7XG4gICAgICAgIGZvciAodmFyIF94MiA9IDAsIF94bDIgPSB0by5sZW5ndGg7IF94MiA8IF94bDI7ICsrX3gyKSB7XG4gICAgICAgICAgICB2YXIgYWRkciA9IHRvW194Ml0uc3BsaXQoXCJAXCIpO1xuICAgICAgICAgICAgYWRkclswXSA9IHVuZXNjYXBlQ29tcG9uZW50KGFkZHJbMF0pO1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnVuaWNvZGVTdXBwb3J0KSB7XG4gICAgICAgICAgICAgICAgLy9jb252ZXJ0IFVuaWNvZGUgSUROIC0+IEFTQ0lJIElETlxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZHJbMV0gPSBwdW55Y29kZS50b0FTQ0lJKHVuZXNjYXBlQ29tcG9uZW50KGFkZHJbMV0sIG9wdGlvbnMpLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFpbHRvQ29tcG9uZW50cy5lcnJvciA9IG1haWx0b0NvbXBvbmVudHMuZXJyb3IgfHwgXCJFbWFpbCBhZGRyZXNzJ3MgZG9tYWluIG5hbWUgY2FuIG5vdCBiZSBjb252ZXJ0ZWQgdG8gQVNDSUkgdmlhIHB1bnljb2RlOiBcIiArIGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhZGRyWzFdID0gdW5lc2NhcGVDb21wb25lbnQoYWRkclsxXSwgb3B0aW9ucykudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRvW194Ml0gPSBhZGRyLmpvaW4oXCJAXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYWlsdG9Db21wb25lbnRzO1xuICAgIH0sXG4gICAgc2VyaWFsaXplOiBmdW5jdGlvbiBzZXJpYWxpemUkJDEobWFpbHRvQ29tcG9uZW50cywgb3B0aW9ucykge1xuICAgICAgICB2YXIgY29tcG9uZW50cyA9IG1haWx0b0NvbXBvbmVudHM7XG4gICAgICAgIHZhciB0byA9IHRvQXJyYXkobWFpbHRvQ29tcG9uZW50cy50byk7XG4gICAgICAgIGlmICh0bykge1xuICAgICAgICAgICAgZm9yICh2YXIgeCA9IDAsIHhsID0gdG8ubGVuZ3RoOyB4IDwgeGw7ICsreCkge1xuICAgICAgICAgICAgICAgIHZhciB0b0FkZHIgPSBTdHJpbmcodG9beF0pO1xuICAgICAgICAgICAgICAgIHZhciBhdElkeCA9IHRvQWRkci5sYXN0SW5kZXhPZihcIkBcIik7XG4gICAgICAgICAgICAgICAgdmFyIGxvY2FsUGFydCA9IHRvQWRkci5zbGljZSgwLCBhdElkeCkucmVwbGFjZShQQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkucmVwbGFjZShQQ1RfRU5DT0RFRCwgdG9VcHBlckNhc2UpLnJlcGxhY2UoTk9UX0xPQ0FMX1BBUlQsIHBjdEVuY0NoYXIpO1xuICAgICAgICAgICAgICAgIHZhciBkb21haW4gPSB0b0FkZHIuc2xpY2UoYXRJZHggKyAxKTtcbiAgICAgICAgICAgICAgICAvL2NvbnZlcnQgSUROIHZpYSBwdW55Y29kZVxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGRvbWFpbiA9ICFvcHRpb25zLmlyaSA/IHB1bnljb2RlLnRvQVNDSUkodW5lc2NhcGVDb21wb25lbnQoZG9tYWluLCBvcHRpb25zKS50b0xvd2VyQ2FzZSgpKSA6IHB1bnljb2RlLnRvVW5pY29kZShkb21haW4pO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5lcnJvciA9IGNvbXBvbmVudHMuZXJyb3IgfHwgXCJFbWFpbCBhZGRyZXNzJ3MgZG9tYWluIG5hbWUgY2FuIG5vdCBiZSBjb252ZXJ0ZWQgdG8gXCIgKyAoIW9wdGlvbnMuaXJpID8gXCJBU0NJSVwiIDogXCJVbmljb2RlXCIpICsgXCIgdmlhIHB1bnljb2RlOiBcIiArIGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRvW3hdID0gbG9jYWxQYXJ0ICsgXCJAXCIgKyBkb21haW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb21wb25lbnRzLnBhdGggPSB0by5qb2luKFwiLFwiKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaGVhZGVycyA9IG1haWx0b0NvbXBvbmVudHMuaGVhZGVycyA9IG1haWx0b0NvbXBvbmVudHMuaGVhZGVycyB8fCB7fTtcbiAgICAgICAgaWYgKG1haWx0b0NvbXBvbmVudHMuc3ViamVjdCkgaGVhZGVyc1tcInN1YmplY3RcIl0gPSBtYWlsdG9Db21wb25lbnRzLnN1YmplY3Q7XG4gICAgICAgIGlmIChtYWlsdG9Db21wb25lbnRzLmJvZHkpIGhlYWRlcnNbXCJib2R5XCJdID0gbWFpbHRvQ29tcG9uZW50cy5ib2R5O1xuICAgICAgICB2YXIgZmllbGRzID0gW107XG4gICAgICAgIGZvciAodmFyIG5hbWUgaW4gaGVhZGVycykge1xuICAgICAgICAgICAgaWYgKGhlYWRlcnNbbmFtZV0gIT09IE9bbmFtZV0pIHtcbiAgICAgICAgICAgICAgICBmaWVsZHMucHVzaChuYW1lLnJlcGxhY2UoUENUX0VOQ09ERUQsIGRlY29kZVVucmVzZXJ2ZWQpLnJlcGxhY2UoUENUX0VOQ09ERUQsIHRvVXBwZXJDYXNlKS5yZXBsYWNlKE5PVF9IRk5BTUUsIHBjdEVuY0NoYXIpICsgXCI9XCIgKyBoZWFkZXJzW25hbWVdLnJlcGxhY2UoUENUX0VOQ09ERUQsIGRlY29kZVVucmVzZXJ2ZWQpLnJlcGxhY2UoUENUX0VOQ09ERUQsIHRvVXBwZXJDYXNlKS5yZXBsYWNlKE5PVF9IRlZBTFVFLCBwY3RFbmNDaGFyKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucXVlcnkgPSBmaWVsZHMuam9pbihcIiZcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudHM7XG4gICAgfVxufTtcblxudmFyIFVSTl9QQVJTRSA9IC9eKFteXFw6XSspXFw6KC4qKS87XG4vL1JGQyAyMTQxXG52YXIgaGFuZGxlciQ1ID0ge1xuICAgIHNjaGVtZTogXCJ1cm5cIixcbiAgICBwYXJzZTogZnVuY3Rpb24gcGFyc2UkJDEoY29tcG9uZW50cywgb3B0aW9ucykge1xuICAgICAgICB2YXIgbWF0Y2hlcyA9IGNvbXBvbmVudHMucGF0aCAmJiBjb21wb25lbnRzLnBhdGgubWF0Y2goVVJOX1BBUlNFKTtcbiAgICAgICAgdmFyIHVybkNvbXBvbmVudHMgPSBjb21wb25lbnRzO1xuICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgdmFyIHNjaGVtZSA9IG9wdGlvbnMuc2NoZW1lIHx8IHVybkNvbXBvbmVudHMuc2NoZW1lIHx8IFwidXJuXCI7XG4gICAgICAgICAgICB2YXIgbmlkID0gbWF0Y2hlc1sxXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgdmFyIG5zcyA9IG1hdGNoZXNbMl07XG4gICAgICAgICAgICB2YXIgdXJuU2NoZW1lID0gc2NoZW1lICsgXCI6XCIgKyAob3B0aW9ucy5uaWQgfHwgbmlkKTtcbiAgICAgICAgICAgIHZhciBzY2hlbWVIYW5kbGVyID0gU0NIRU1FU1t1cm5TY2hlbWVdO1xuICAgICAgICAgICAgdXJuQ29tcG9uZW50cy5uaWQgPSBuaWQ7XG4gICAgICAgICAgICB1cm5Db21wb25lbnRzLm5zcyA9IG5zcztcbiAgICAgICAgICAgIHVybkNvbXBvbmVudHMucGF0aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChzY2hlbWVIYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgdXJuQ29tcG9uZW50cyA9IHNjaGVtZUhhbmRsZXIucGFyc2UodXJuQ29tcG9uZW50cywgb3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1cm5Db21wb25lbnRzLmVycm9yID0gdXJuQ29tcG9uZW50cy5lcnJvciB8fCBcIlVSTiBjYW4gbm90IGJlIHBhcnNlZC5cIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXJuQ29tcG9uZW50cztcbiAgICB9LFxuICAgIHNlcmlhbGl6ZTogZnVuY3Rpb24gc2VyaWFsaXplJCQxKHVybkNvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHNjaGVtZSA9IG9wdGlvbnMuc2NoZW1lIHx8IHVybkNvbXBvbmVudHMuc2NoZW1lIHx8IFwidXJuXCI7XG4gICAgICAgIHZhciBuaWQgPSB1cm5Db21wb25lbnRzLm5pZDtcbiAgICAgICAgdmFyIHVyblNjaGVtZSA9IHNjaGVtZSArIFwiOlwiICsgKG9wdGlvbnMubmlkIHx8IG5pZCk7XG4gICAgICAgIHZhciBzY2hlbWVIYW5kbGVyID0gU0NIRU1FU1t1cm5TY2hlbWVdO1xuICAgICAgICBpZiAoc2NoZW1lSGFuZGxlcikge1xuICAgICAgICAgICAgdXJuQ29tcG9uZW50cyA9IHNjaGVtZUhhbmRsZXIuc2VyaWFsaXplKHVybkNvbXBvbmVudHMsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB1cmlDb21wb25lbnRzID0gdXJuQ29tcG9uZW50cztcbiAgICAgICAgdmFyIG5zcyA9IHVybkNvbXBvbmVudHMubnNzO1xuICAgICAgICB1cmlDb21wb25lbnRzLnBhdGggPSAobmlkIHx8IG9wdGlvbnMubmlkKSArIFwiOlwiICsgbnNzO1xuICAgICAgICByZXR1cm4gdXJpQ29tcG9uZW50cztcbiAgICB9XG59O1xuXG52YXIgVVVJRCA9IC9eWzAtOUEtRmEtZl17OH0oPzpcXC1bMC05QS1GYS1mXXs0fSl7M31cXC1bMC05QS1GYS1mXXsxMn0kLztcbi8vUkZDIDQxMjJcbnZhciBoYW5kbGVyJDYgPSB7XG4gICAgc2NoZW1lOiBcInVybjp1dWlkXCIsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlKHVybkNvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHV1aWRDb21wb25lbnRzID0gdXJuQ29tcG9uZW50cztcbiAgICAgICAgdXVpZENvbXBvbmVudHMudXVpZCA9IHV1aWRDb21wb25lbnRzLm5zcztcbiAgICAgICAgdXVpZENvbXBvbmVudHMubnNzID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoIW9wdGlvbnMudG9sZXJhbnQgJiYgKCF1dWlkQ29tcG9uZW50cy51dWlkIHx8ICF1dWlkQ29tcG9uZW50cy51dWlkLm1hdGNoKFVVSUQpKSkge1xuICAgICAgICAgICAgdXVpZENvbXBvbmVudHMuZXJyb3IgPSB1dWlkQ29tcG9uZW50cy5lcnJvciB8fCBcIlVVSUQgaXMgbm90IHZhbGlkLlwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1dWlkQ29tcG9uZW50cztcbiAgICB9LFxuICAgIHNlcmlhbGl6ZTogZnVuY3Rpb24gc2VyaWFsaXplKHV1aWRDb21wb25lbnRzLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciB1cm5Db21wb25lbnRzID0gdXVpZENvbXBvbmVudHM7XG4gICAgICAgIC8vbm9ybWFsaXplIFVVSURcbiAgICAgICAgdXJuQ29tcG9uZW50cy5uc3MgPSAodXVpZENvbXBvbmVudHMudXVpZCB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXR1cm4gdXJuQ29tcG9uZW50cztcbiAgICB9XG59O1xuXG5TQ0hFTUVTW2hhbmRsZXIuc2NoZW1lXSA9IGhhbmRsZXI7XG5TQ0hFTUVTW2hhbmRsZXIkMS5zY2hlbWVdID0gaGFuZGxlciQxO1xuU0NIRU1FU1toYW5kbGVyJDIuc2NoZW1lXSA9IGhhbmRsZXIkMjtcblNDSEVNRVNbaGFuZGxlciQzLnNjaGVtZV0gPSBoYW5kbGVyJDM7XG5TQ0hFTUVTW2hhbmRsZXIkNC5zY2hlbWVdID0gaGFuZGxlciQ0O1xuU0NIRU1FU1toYW5kbGVyJDUuc2NoZW1lXSA9IGhhbmRsZXIkNTtcblNDSEVNRVNbaGFuZGxlciQ2LnNjaGVtZV0gPSBoYW5kbGVyJDY7XG5cbmV4cG9ydHMuU0NIRU1FUyA9IFNDSEVNRVM7XG5leHBvcnRzLnBjdEVuY0NoYXIgPSBwY3RFbmNDaGFyO1xuZXhwb3J0cy5wY3REZWNDaGFycyA9IHBjdERlY0NoYXJzO1xuZXhwb3J0cy5wYXJzZSA9IHBhcnNlO1xuZXhwb3J0cy5yZW1vdmVEb3RTZWdtZW50cyA9IHJlbW92ZURvdFNlZ21lbnRzO1xuZXhwb3J0cy5zZXJpYWxpemUgPSBzZXJpYWxpemU7XG5leHBvcnRzLnJlc29sdmVDb21wb25lbnRzID0gcmVzb2x2ZUNvbXBvbmVudHM7XG5leHBvcnRzLnJlc29sdmUgPSByZXNvbHZlO1xuZXhwb3J0cy5ub3JtYWxpemUgPSBub3JtYWxpemU7XG5leHBvcnRzLmVxdWFsID0gZXF1YWw7XG5leHBvcnRzLmVzY2FwZUNvbXBvbmVudCA9IGVzY2FwZUNvbXBvbmVudDtcbmV4cG9ydHMudW5lc2NhcGVDb21wb25lbnQgPSB1bmVzY2FwZUNvbXBvbmVudDtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxufSkpKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVyaS5hbGwuanMubWFwXG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIGRvIG5vdCBlZGl0IC5qcyBmaWxlcyBkaXJlY3RseSAtIGVkaXQgc3JjL2luZGV4LmpzdFxuXG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBlcXVhbChhLCBiKSB7XG4gIGlmIChhID09PSBiKSByZXR1cm4gdHJ1ZTtcblxuICBpZiAoYSAmJiBiICYmIHR5cGVvZiBhID09ICdvYmplY3QnICYmIHR5cGVvZiBiID09ICdvYmplY3QnKSB7XG4gICAgaWYgKGEuY29uc3RydWN0b3IgIT09IGIuY29uc3RydWN0b3IpIHJldHVybiBmYWxzZTtcblxuICAgIHZhciBsZW5ndGgsIGksIGtleXM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgIGxlbmd0aCA9IGEubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KVxuICAgICAgICBpZiAoIWVxdWFsKGFbaV0sIGJbaV0pKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cblxuXG4gICAgaWYgKGEuY29uc3RydWN0b3IgPT09IFJlZ0V4cCkgcmV0dXJuIGEuc291cmNlID09PSBiLnNvdXJjZSAmJiBhLmZsYWdzID09PSBiLmZsYWdzO1xuICAgIGlmIChhLnZhbHVlT2YgIT09IE9iamVjdC5wcm90b3R5cGUudmFsdWVPZikgcmV0dXJuIGEudmFsdWVPZigpID09PSBiLnZhbHVlT2YoKTtcbiAgICBpZiAoYS50b1N0cmluZyAhPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZykgcmV0dXJuIGEudG9TdHJpbmcoKSA9PT0gYi50b1N0cmluZygpO1xuXG4gICAga2V5cyA9IE9iamVjdC5rZXlzKGEpO1xuICAgIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIGlmIChsZW5ndGggIT09IE9iamVjdC5rZXlzKGIpLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KVxuICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwga2V5c1tpXSkpIHJldHVybiBmYWxzZTtcblxuICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOykge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICAgIGlmICghZXF1YWwoYVtrZXldLCBiW2tleV0pKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyB0cnVlIGlmIGJvdGggTmFOLCBmYWxzZSBvdGhlcndpc2VcbiAgcmV0dXJuIGEhPT1hICYmIGIhPT1iO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmdcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iZXN0aWVqcy9wdW55Y29kZS5qcyAtIHB1bnljb2RlLnVjczIuZGVjb2RlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHVjczJsZW5ndGgoc3RyKSB7XG4gIHZhciBsZW5ndGggPSAwXG4gICAgLCBsZW4gPSBzdHIubGVuZ3RoXG4gICAgLCBwb3MgPSAwXG4gICAgLCB2YWx1ZTtcbiAgd2hpbGUgKHBvcyA8IGxlbikge1xuICAgIGxlbmd0aCsrO1xuICAgIHZhbHVlID0gc3RyLmNoYXJDb2RlQXQocG9zKyspO1xuICAgIGlmICh2YWx1ZSA+PSAweEQ4MDAgJiYgdmFsdWUgPD0gMHhEQkZGICYmIHBvcyA8IGxlbikge1xuICAgICAgLy8gaGlnaCBzdXJyb2dhdGUsIGFuZCB0aGVyZSBpcyBhIG5leHQgY2hhcmFjdGVyXG4gICAgICB2YWx1ZSA9IHN0ci5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICBpZiAoKHZhbHVlICYgMHhGQzAwKSA9PSAweERDMDApIHBvcysrOyAvLyBsb3cgc3Vycm9nYXRlXG4gICAgfVxuICB9XG4gIHJldHVybiBsZW5ndGg7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjb3B5OiBjb3B5LFxuICBjaGVja0RhdGFUeXBlOiBjaGVja0RhdGFUeXBlLFxuICBjaGVja0RhdGFUeXBlczogY2hlY2tEYXRhVHlwZXMsXG4gIGNvZXJjZVRvVHlwZXM6IGNvZXJjZVRvVHlwZXMsXG4gIHRvSGFzaDogdG9IYXNoLFxuICBnZXRQcm9wZXJ0eTogZ2V0UHJvcGVydHksXG4gIGVzY2FwZVF1b3RlczogZXNjYXBlUXVvdGVzLFxuICBlcXVhbDogcmVxdWlyZSgnZmFzdC1kZWVwLWVxdWFsJyksXG4gIHVjczJsZW5ndGg6IHJlcXVpcmUoJy4vdWNzMmxlbmd0aCcpLFxuICB2YXJPY2N1cmVuY2VzOiB2YXJPY2N1cmVuY2VzLFxuICB2YXJSZXBsYWNlOiB2YXJSZXBsYWNlLFxuICBzY2hlbWFIYXNSdWxlczogc2NoZW1hSGFzUnVsZXMsXG4gIHNjaGVtYUhhc1J1bGVzRXhjZXB0OiBzY2hlbWFIYXNSdWxlc0V4Y2VwdCxcbiAgc2NoZW1hVW5rbm93blJ1bGVzOiBzY2hlbWFVbmtub3duUnVsZXMsXG4gIHRvUXVvdGVkU3RyaW5nOiB0b1F1b3RlZFN0cmluZyxcbiAgZ2V0UGF0aEV4cHI6IGdldFBhdGhFeHByLFxuICBnZXRQYXRoOiBnZXRQYXRoLFxuICBnZXREYXRhOiBnZXREYXRhLFxuICB1bmVzY2FwZUZyYWdtZW50OiB1bmVzY2FwZUZyYWdtZW50LFxuICB1bmVzY2FwZUpzb25Qb2ludGVyOiB1bmVzY2FwZUpzb25Qb2ludGVyLFxuICBlc2NhcGVGcmFnbWVudDogZXNjYXBlRnJhZ21lbnQsXG4gIGVzY2FwZUpzb25Qb2ludGVyOiBlc2NhcGVKc29uUG9pbnRlclxufTtcblxuXG5mdW5jdGlvbiBjb3B5KG8sIHRvKSB7XG4gIHRvID0gdG8gfHwge307XG4gIGZvciAodmFyIGtleSBpbiBvKSB0b1trZXldID0gb1trZXldO1xuICByZXR1cm4gdG87XG59XG5cblxuZnVuY3Rpb24gY2hlY2tEYXRhVHlwZShkYXRhVHlwZSwgZGF0YSwgc3RyaWN0TnVtYmVycywgbmVnYXRlKSB7XG4gIHZhciBFUVVBTCA9IG5lZ2F0ZSA/ICcgIT09ICcgOiAnID09PSAnXG4gICAgLCBBTkQgPSBuZWdhdGUgPyAnIHx8ICcgOiAnICYmICdcbiAgICAsIE9LID0gbmVnYXRlID8gJyEnIDogJydcbiAgICAsIE5PVCA9IG5lZ2F0ZSA/ICcnIDogJyEnO1xuICBzd2l0Y2ggKGRhdGFUeXBlKSB7XG4gICAgY2FzZSAnbnVsbCc6IHJldHVybiBkYXRhICsgRVFVQUwgKyAnbnVsbCc7XG4gICAgY2FzZSAnYXJyYXknOiByZXR1cm4gT0sgKyAnQXJyYXkuaXNBcnJheSgnICsgZGF0YSArICcpJztcbiAgICBjYXNlICdvYmplY3QnOiByZXR1cm4gJygnICsgT0sgKyBkYXRhICsgQU5EICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGVvZiAnICsgZGF0YSArIEVRVUFMICsgJ1wib2JqZWN0XCInICsgQU5EICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTk9UICsgJ0FycmF5LmlzQXJyYXkoJyArIGRhdGEgKyAnKSknO1xuICAgIGNhc2UgJ2ludGVnZXInOiByZXR1cm4gJyh0eXBlb2YgJyArIGRhdGEgKyBFUVVBTCArICdcIm51bWJlclwiJyArIEFORCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBOT1QgKyAnKCcgKyBkYXRhICsgJyAlIDEpJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBBTkQgKyBkYXRhICsgRVFVQUwgKyBkYXRhICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpY3ROdW1iZXJzID8gKEFORCArIE9LICsgJ2lzRmluaXRlKCcgKyBkYXRhICsgJyknKSA6ICcnKSArICcpJztcbiAgICBjYXNlICdudW1iZXInOiByZXR1cm4gJyh0eXBlb2YgJyArIGRhdGEgKyBFUVVBTCArICdcIicgKyBkYXRhVHlwZSArICdcIicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaWN0TnVtYmVycyA/IChBTkQgKyBPSyArICdpc0Zpbml0ZSgnICsgZGF0YSArICcpJykgOiAnJykgKyAnKSc7XG4gICAgZGVmYXVsdDogcmV0dXJuICd0eXBlb2YgJyArIGRhdGEgKyBFUVVBTCArICdcIicgKyBkYXRhVHlwZSArICdcIic7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBjaGVja0RhdGFUeXBlcyhkYXRhVHlwZXMsIGRhdGEsIHN0cmljdE51bWJlcnMpIHtcbiAgc3dpdGNoIChkYXRhVHlwZXMubGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gY2hlY2tEYXRhVHlwZShkYXRhVHlwZXNbMF0sIGRhdGEsIHN0cmljdE51bWJlcnMsIHRydWUpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB2YXIgY29kZSA9ICcnO1xuICAgICAgdmFyIHR5cGVzID0gdG9IYXNoKGRhdGFUeXBlcyk7XG4gICAgICBpZiAodHlwZXMuYXJyYXkgJiYgdHlwZXMub2JqZWN0KSB7XG4gICAgICAgIGNvZGUgPSB0eXBlcy5udWxsID8gJygnOiAnKCEnICsgZGF0YSArICcgfHwgJztcbiAgICAgICAgY29kZSArPSAndHlwZW9mICcgKyBkYXRhICsgJyAhPT0gXCJvYmplY3RcIiknO1xuICAgICAgICBkZWxldGUgdHlwZXMubnVsbDtcbiAgICAgICAgZGVsZXRlIHR5cGVzLmFycmF5O1xuICAgICAgICBkZWxldGUgdHlwZXMub2JqZWN0O1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVzLm51bWJlcikgZGVsZXRlIHR5cGVzLmludGVnZXI7XG4gICAgICBmb3IgKHZhciB0IGluIHR5cGVzKVxuICAgICAgICBjb2RlICs9IChjb2RlID8gJyAmJiAnIDogJycgKSArIGNoZWNrRGF0YVR5cGUodCwgZGF0YSwgc3RyaWN0TnVtYmVycywgdHJ1ZSk7XG5cbiAgICAgIHJldHVybiBjb2RlO1xuICB9XG59XG5cblxudmFyIENPRVJDRV9UT19UWVBFUyA9IHRvSGFzaChbICdzdHJpbmcnLCAnbnVtYmVyJywgJ2ludGVnZXInLCAnYm9vbGVhbicsICdudWxsJyBdKTtcbmZ1bmN0aW9uIGNvZXJjZVRvVHlwZXMob3B0aW9uQ29lcmNlVHlwZXMsIGRhdGFUeXBlcykge1xuICBpZiAoQXJyYXkuaXNBcnJheShkYXRhVHlwZXMpKSB7XG4gICAgdmFyIHR5cGVzID0gW107XG4gICAgZm9yICh2YXIgaT0wOyBpPGRhdGFUeXBlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHQgPSBkYXRhVHlwZXNbaV07XG4gICAgICBpZiAoQ09FUkNFX1RPX1RZUEVTW3RdKSB0eXBlc1t0eXBlcy5sZW5ndGhdID0gdDtcbiAgICAgIGVsc2UgaWYgKG9wdGlvbkNvZXJjZVR5cGVzID09PSAnYXJyYXknICYmIHQgPT09ICdhcnJheScpIHR5cGVzW3R5cGVzLmxlbmd0aF0gPSB0O1xuICAgIH1cbiAgICBpZiAodHlwZXMubGVuZ3RoKSByZXR1cm4gdHlwZXM7XG4gIH0gZWxzZSBpZiAoQ09FUkNFX1RPX1RZUEVTW2RhdGFUeXBlc10pIHtcbiAgICByZXR1cm4gW2RhdGFUeXBlc107XG4gIH0gZWxzZSBpZiAob3B0aW9uQ29lcmNlVHlwZXMgPT09ICdhcnJheScgJiYgZGF0YVR5cGVzID09PSAnYXJyYXknKSB7XG4gICAgcmV0dXJuIFsnYXJyYXknXTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIHRvSGFzaChhcnIpIHtcbiAgdmFyIGhhc2ggPSB7fTtcbiAgZm9yICh2YXIgaT0wOyBpPGFyci5sZW5ndGg7IGkrKykgaGFzaFthcnJbaV1dID0gdHJ1ZTtcbiAgcmV0dXJuIGhhc2g7XG59XG5cblxudmFyIElERU5USUZJRVIgPSAvXlthLXokX11bYS16JF8wLTldKiQvaTtcbnZhciBTSU5HTEVfUVVPVEUgPSAvJ3xcXFxcL2c7XG5mdW5jdGlvbiBnZXRQcm9wZXJ0eShrZXkpIHtcbiAgcmV0dXJuIHR5cGVvZiBrZXkgPT0gJ251bWJlcidcbiAgICAgICAgICA/ICdbJyArIGtleSArICddJ1xuICAgICAgICAgIDogSURFTlRJRklFUi50ZXN0KGtleSlcbiAgICAgICAgICAgID8gJy4nICsga2V5XG4gICAgICAgICAgICA6IFwiWydcIiArIGVzY2FwZVF1b3RlcyhrZXkpICsgXCInXVwiO1xufVxuXG5cbmZ1bmN0aW9uIGVzY2FwZVF1b3RlcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKFNJTkdMRV9RVU9URSwgJ1xcXFwkJicpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxuL2csICdcXFxcbicpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxyL2csICdcXFxccicpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxmL2csICdcXFxcZicpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFx0L2csICdcXFxcdCcpO1xufVxuXG5cbmZ1bmN0aW9uIHZhck9jY3VyZW5jZXMoc3RyLCBkYXRhVmFyKSB7XG4gIGRhdGFWYXIgKz0gJ1teMC05XSc7XG4gIHZhciBtYXRjaGVzID0gc3RyLm1hdGNoKG5ldyBSZWdFeHAoZGF0YVZhciwgJ2cnKSk7XG4gIHJldHVybiBtYXRjaGVzID8gbWF0Y2hlcy5sZW5ndGggOiAwO1xufVxuXG5cbmZ1bmN0aW9uIHZhclJlcGxhY2Uoc3RyLCBkYXRhVmFyLCBleHByKSB7XG4gIGRhdGFWYXIgKz0gJyhbXjAtOV0pJztcbiAgZXhwciA9IGV4cHIucmVwbGFjZSgvXFwkL2csICckJCQkJyk7XG4gIHJldHVybiBzdHIucmVwbGFjZShuZXcgUmVnRXhwKGRhdGFWYXIsICdnJyksIGV4cHIgKyAnJDEnKTtcbn1cblxuXG5mdW5jdGlvbiBzY2hlbWFIYXNSdWxlcyhzY2hlbWEsIHJ1bGVzKSB7XG4gIGlmICh0eXBlb2Ygc2NoZW1hID09ICdib29sZWFuJykgcmV0dXJuICFzY2hlbWE7XG4gIGZvciAodmFyIGtleSBpbiBzY2hlbWEpIGlmIChydWxlc1trZXldKSByZXR1cm4gdHJ1ZTtcbn1cblxuXG5mdW5jdGlvbiBzY2hlbWFIYXNSdWxlc0V4Y2VwdChzY2hlbWEsIHJ1bGVzLCBleGNlcHRLZXl3b3JkKSB7XG4gIGlmICh0eXBlb2Ygc2NoZW1hID09ICdib29sZWFuJykgcmV0dXJuICFzY2hlbWEgJiYgZXhjZXB0S2V5d29yZCAhPSAnbm90JztcbiAgZm9yICh2YXIga2V5IGluIHNjaGVtYSkgaWYgKGtleSAhPSBleGNlcHRLZXl3b3JkICYmIHJ1bGVzW2tleV0pIHJldHVybiB0cnVlO1xufVxuXG5cbmZ1bmN0aW9uIHNjaGVtYVVua25vd25SdWxlcyhzY2hlbWEsIHJ1bGVzKSB7XG4gIGlmICh0eXBlb2Ygc2NoZW1hID09ICdib29sZWFuJykgcmV0dXJuO1xuICBmb3IgKHZhciBrZXkgaW4gc2NoZW1hKSBpZiAoIXJ1bGVzW2tleV0pIHJldHVybiBrZXk7XG59XG5cblxuZnVuY3Rpb24gdG9RdW90ZWRTdHJpbmcoc3RyKSB7XG4gIHJldHVybiAnXFwnJyArIGVzY2FwZVF1b3RlcyhzdHIpICsgJ1xcJyc7XG59XG5cblxuZnVuY3Rpb24gZ2V0UGF0aEV4cHIoY3VycmVudFBhdGgsIGV4cHIsIGpzb25Qb2ludGVycywgaXNOdW1iZXIpIHtcbiAgdmFyIHBhdGggPSBqc29uUG9pbnRlcnMgLy8gZmFsc2UgYnkgZGVmYXVsdFxuICAgICAgICAgICAgICA/ICdcXCcvXFwnICsgJyArIGV4cHIgKyAoaXNOdW1iZXIgPyAnJyA6ICcucmVwbGFjZSgvfi9nLCBcXCd+MFxcJykucmVwbGFjZSgvXFxcXC8vZywgXFwnfjFcXCcpJylcbiAgICAgICAgICAgICAgOiAoaXNOdW1iZXIgPyAnXFwnW1xcJyArICcgKyBleHByICsgJyArIFxcJ11cXCcnIDogJ1xcJ1tcXFxcXFwnXFwnICsgJyArIGV4cHIgKyAnICsgXFwnXFxcXFxcJ11cXCcnKTtcbiAgcmV0dXJuIGpvaW5QYXRocyhjdXJyZW50UGF0aCwgcGF0aCk7XG59XG5cblxuZnVuY3Rpb24gZ2V0UGF0aChjdXJyZW50UGF0aCwgcHJvcCwganNvblBvaW50ZXJzKSB7XG4gIHZhciBwYXRoID0ganNvblBvaW50ZXJzIC8vIGZhbHNlIGJ5IGRlZmF1bHRcbiAgICAgICAgICAgICAgPyB0b1F1b3RlZFN0cmluZygnLycgKyBlc2NhcGVKc29uUG9pbnRlcihwcm9wKSlcbiAgICAgICAgICAgICAgOiB0b1F1b3RlZFN0cmluZyhnZXRQcm9wZXJ0eShwcm9wKSk7XG4gIHJldHVybiBqb2luUGF0aHMoY3VycmVudFBhdGgsIHBhdGgpO1xufVxuXG5cbnZhciBKU09OX1BPSU5URVIgPSAvXlxcLyg/Oltefl18fjB8fjEpKiQvO1xudmFyIFJFTEFUSVZFX0pTT05fUE9JTlRFUiA9IC9eKFswLTldKykoI3xcXC8oPzpbXn5dfH4wfH4xKSopPyQvO1xuZnVuY3Rpb24gZ2V0RGF0YSgkZGF0YSwgbHZsLCBwYXRocykge1xuICB2YXIgdXAsIGpzb25Qb2ludGVyLCBkYXRhLCBtYXRjaGVzO1xuICBpZiAoJGRhdGEgPT09ICcnKSByZXR1cm4gJ3Jvb3REYXRhJztcbiAgaWYgKCRkYXRhWzBdID09ICcvJykge1xuICAgIGlmICghSlNPTl9QT0lOVEVSLnRlc3QoJGRhdGEpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSlNPTi1wb2ludGVyOiAnICsgJGRhdGEpO1xuICAgIGpzb25Qb2ludGVyID0gJGRhdGE7XG4gICAgZGF0YSA9ICdyb290RGF0YSc7XG4gIH0gZWxzZSB7XG4gICAgbWF0Y2hlcyA9ICRkYXRhLm1hdGNoKFJFTEFUSVZFX0pTT05fUE9JTlRFUik7XG4gICAgaWYgKCFtYXRjaGVzKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSlNPTi1wb2ludGVyOiAnICsgJGRhdGEpO1xuICAgIHVwID0gK21hdGNoZXNbMV07XG4gICAganNvblBvaW50ZXIgPSBtYXRjaGVzWzJdO1xuICAgIGlmIChqc29uUG9pbnRlciA9PSAnIycpIHtcbiAgICAgIGlmICh1cCA+PSBsdmwpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGFjY2VzcyBwcm9wZXJ0eS9pbmRleCAnICsgdXAgKyAnIGxldmVscyB1cCwgY3VycmVudCBsZXZlbCBpcyAnICsgbHZsKTtcbiAgICAgIHJldHVybiBwYXRoc1tsdmwgLSB1cF07XG4gICAgfVxuXG4gICAgaWYgKHVwID4gbHZsKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBhY2Nlc3MgZGF0YSAnICsgdXAgKyAnIGxldmVscyB1cCwgY3VycmVudCBsZXZlbCBpcyAnICsgbHZsKTtcbiAgICBkYXRhID0gJ2RhdGEnICsgKChsdmwgLSB1cCkgfHwgJycpO1xuICAgIGlmICghanNvblBvaW50ZXIpIHJldHVybiBkYXRhO1xuICB9XG5cbiAgdmFyIGV4cHIgPSBkYXRhO1xuICB2YXIgc2VnbWVudHMgPSBqc29uUG9pbnRlci5zcGxpdCgnLycpO1xuICBmb3IgKHZhciBpPTA7IGk8c2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc2VnbWVudCA9IHNlZ21lbnRzW2ldO1xuICAgIGlmIChzZWdtZW50KSB7XG4gICAgICBkYXRhICs9IGdldFByb3BlcnR5KHVuZXNjYXBlSnNvblBvaW50ZXIoc2VnbWVudCkpO1xuICAgICAgZXhwciArPSAnICYmICcgKyBkYXRhO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZXhwcjtcbn1cblxuXG5mdW5jdGlvbiBqb2luUGF0aHMgKGEsIGIpIHtcbiAgaWYgKGEgPT0gJ1wiXCInKSByZXR1cm4gYjtcbiAgcmV0dXJuIChhICsgJyArICcgKyBiKS5yZXBsYWNlKC8oW15cXFxcXSknIFxcKyAnL2csICckMScpO1xufVxuXG5cbmZ1bmN0aW9uIHVuZXNjYXBlRnJhZ21lbnQoc3RyKSB7XG4gIHJldHVybiB1bmVzY2FwZUpzb25Qb2ludGVyKGRlY29kZVVSSUNvbXBvbmVudChzdHIpKTtcbn1cblxuXG5mdW5jdGlvbiBlc2NhcGVGcmFnbWVudChzdHIpIHtcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlc2NhcGVKc29uUG9pbnRlcihzdHIpKTtcbn1cblxuXG5mdW5jdGlvbiBlc2NhcGVKc29uUG9pbnRlcihzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9+L2csICd+MCcpLnJlcGxhY2UoL1xcLy9nLCAnfjEnKTtcbn1cblxuXG5mdW5jdGlvbiB1bmVzY2FwZUpzb25Qb2ludGVyKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL34xL2csICcvJykucmVwbGFjZSgvfjAvZywgJ34nKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTY2hlbWFPYmplY3Q7XG5cbmZ1bmN0aW9uIFNjaGVtYU9iamVjdChvYmopIHtcbiAgdXRpbC5jb3B5KG9iaiwgdGhpcyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB0cmF2ZXJzZSA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHNjaGVtYSwgb3B0cywgY2IpIHtcbiAgLy8gTGVnYWN5IHN1cHBvcnQgZm9yIHYwLjMuMSBhbmQgZWFybGllci5cbiAgaWYgKHR5cGVvZiBvcHRzID09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IG9wdHM7XG4gICAgb3B0cyA9IHt9O1xuICB9XG5cbiAgY2IgPSBvcHRzLmNiIHx8IGNiO1xuICB2YXIgcHJlID0gKHR5cGVvZiBjYiA9PSAnZnVuY3Rpb24nKSA/IGNiIDogY2IucHJlIHx8IGZ1bmN0aW9uKCkge307XG4gIHZhciBwb3N0ID0gY2IucG9zdCB8fCBmdW5jdGlvbigpIHt9O1xuXG4gIF90cmF2ZXJzZShvcHRzLCBwcmUsIHBvc3QsIHNjaGVtYSwgJycsIHNjaGVtYSk7XG59O1xuXG5cbnRyYXZlcnNlLmtleXdvcmRzID0ge1xuICBhZGRpdGlvbmFsSXRlbXM6IHRydWUsXG4gIGl0ZW1zOiB0cnVlLFxuICBjb250YWluczogdHJ1ZSxcbiAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHRydWUsXG4gIHByb3BlcnR5TmFtZXM6IHRydWUsXG4gIG5vdDogdHJ1ZVxufTtcblxudHJhdmVyc2UuYXJyYXlLZXl3b3JkcyA9IHtcbiAgaXRlbXM6IHRydWUsXG4gIGFsbE9mOiB0cnVlLFxuICBhbnlPZjogdHJ1ZSxcbiAgb25lT2Y6IHRydWVcbn07XG5cbnRyYXZlcnNlLnByb3BzS2V5d29yZHMgPSB7XG4gIGRlZmluaXRpb25zOiB0cnVlLFxuICBwcm9wZXJ0aWVzOiB0cnVlLFxuICBwYXR0ZXJuUHJvcGVydGllczogdHJ1ZSxcbiAgZGVwZW5kZW5jaWVzOiB0cnVlXG59O1xuXG50cmF2ZXJzZS5za2lwS2V5d29yZHMgPSB7XG4gIGRlZmF1bHQ6IHRydWUsXG4gIGVudW06IHRydWUsXG4gIGNvbnN0OiB0cnVlLFxuICByZXF1aXJlZDogdHJ1ZSxcbiAgbWF4aW11bTogdHJ1ZSxcbiAgbWluaW11bTogdHJ1ZSxcbiAgZXhjbHVzaXZlTWF4aW11bTogdHJ1ZSxcbiAgZXhjbHVzaXZlTWluaW11bTogdHJ1ZSxcbiAgbXVsdGlwbGVPZjogdHJ1ZSxcbiAgbWF4TGVuZ3RoOiB0cnVlLFxuICBtaW5MZW5ndGg6IHRydWUsXG4gIHBhdHRlcm46IHRydWUsXG4gIGZvcm1hdDogdHJ1ZSxcbiAgbWF4SXRlbXM6IHRydWUsXG4gIG1pbkl0ZW1zOiB0cnVlLFxuICB1bmlxdWVJdGVtczogdHJ1ZSxcbiAgbWF4UHJvcGVydGllczogdHJ1ZSxcbiAgbWluUHJvcGVydGllczogdHJ1ZVxufTtcblxuXG5mdW5jdGlvbiBfdHJhdmVyc2Uob3B0cywgcHJlLCBwb3N0LCBzY2hlbWEsIGpzb25QdHIsIHJvb3RTY2hlbWEsIHBhcmVudEpzb25QdHIsIHBhcmVudEtleXdvcmQsIHBhcmVudFNjaGVtYSwga2V5SW5kZXgpIHtcbiAgaWYgKHNjaGVtYSAmJiB0eXBlb2Ygc2NoZW1hID09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHNjaGVtYSkpIHtcbiAgICBwcmUoc2NoZW1hLCBqc29uUHRyLCByb290U2NoZW1hLCBwYXJlbnRKc29uUHRyLCBwYXJlbnRLZXl3b3JkLCBwYXJlbnRTY2hlbWEsIGtleUluZGV4KTtcbiAgICBmb3IgKHZhciBrZXkgaW4gc2NoZW1hKSB7XG4gICAgICB2YXIgc2NoID0gc2NoZW1hW2tleV07XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShzY2gpKSB7XG4gICAgICAgIGlmIChrZXkgaW4gdHJhdmVyc2UuYXJyYXlLZXl3b3Jkcykge1xuICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxzY2gubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBfdHJhdmVyc2Uob3B0cywgcHJlLCBwb3N0LCBzY2hbaV0sIGpzb25QdHIgKyAnLycgKyBrZXkgKyAnLycgKyBpLCByb290U2NoZW1hLCBqc29uUHRyLCBrZXksIHNjaGVtYSwgaSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoa2V5IGluIHRyYXZlcnNlLnByb3BzS2V5d29yZHMpIHtcbiAgICAgICAgaWYgKHNjaCAmJiB0eXBlb2Ygc2NoID09ICdvYmplY3QnKSB7XG4gICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBzY2gpXG4gICAgICAgICAgICBfdHJhdmVyc2Uob3B0cywgcHJlLCBwb3N0LCBzY2hbcHJvcF0sIGpzb25QdHIgKyAnLycgKyBrZXkgKyAnLycgKyBlc2NhcGVKc29uUHRyKHByb3ApLCByb290U2NoZW1hLCBqc29uUHRyLCBrZXksIHNjaGVtYSwgcHJvcCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoa2V5IGluIHRyYXZlcnNlLmtleXdvcmRzIHx8IChvcHRzLmFsbEtleXMgJiYgIShrZXkgaW4gdHJhdmVyc2Uuc2tpcEtleXdvcmRzKSkpIHtcbiAgICAgICAgX3RyYXZlcnNlKG9wdHMsIHByZSwgcG9zdCwgc2NoLCBqc29uUHRyICsgJy8nICsga2V5LCByb290U2NoZW1hLCBqc29uUHRyLCBrZXksIHNjaGVtYSk7XG4gICAgICB9XG4gICAgfVxuICAgIHBvc3Qoc2NoZW1hLCBqc29uUHRyLCByb290U2NoZW1hLCBwYXJlbnRKc29uUHRyLCBwYXJlbnRLZXl3b3JkLCBwYXJlbnRTY2hlbWEsIGtleUluZGV4KTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGVzY2FwZUpzb25QdHIoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvfi9nLCAnfjAnKS5yZXBsYWNlKC9cXC8vZywgJ34xJyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBVUkkgPSByZXF1aXJlKCd1cmktanMnKVxuICAsIGVxdWFsID0gcmVxdWlyZSgnZmFzdC1kZWVwLWVxdWFsJylcbiAgLCB1dGlsID0gcmVxdWlyZSgnLi91dGlsJylcbiAgLCBTY2hlbWFPYmplY3QgPSByZXF1aXJlKCcuL3NjaGVtYV9vYmonKVxuICAsIHRyYXZlcnNlID0gcmVxdWlyZSgnanNvbi1zY2hlbWEtdHJhdmVyc2UnKTtcblxubW9kdWxlLmV4cG9ydHMgPSByZXNvbHZlO1xuXG5yZXNvbHZlLm5vcm1hbGl6ZUlkID0gbm9ybWFsaXplSWQ7XG5yZXNvbHZlLmZ1bGxQYXRoID0gZ2V0RnVsbFBhdGg7XG5yZXNvbHZlLnVybCA9IHJlc29sdmVVcmw7XG5yZXNvbHZlLmlkcyA9IHJlc29sdmVJZHM7XG5yZXNvbHZlLmlubGluZVJlZiA9IGlubGluZVJlZjtcbnJlc29sdmUuc2NoZW1hID0gcmVzb2x2ZVNjaGVtYTtcblxuLyoqXG4gKiBbcmVzb2x2ZSBhbmQgY29tcGlsZSB0aGUgcmVmZXJlbmNlcyAoJHJlZildXG4gKiBAdGhpcyAgIEFqdlxuICogQHBhcmFtICB7RnVuY3Rpb259IGNvbXBpbGUgcmVmZXJlbmNlIHRvIHNjaGVtYSBjb21waWxhdGlvbiBmdW5jaXRvbiAobG9jYWxDb21waWxlKVxuICogQHBhcmFtICB7T2JqZWN0fSByb290IG9iamVjdCB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSByb290IHNjaGVtYSBmb3IgdGhlIGN1cnJlbnQgc2NoZW1hXG4gKiBAcGFyYW0gIHtTdHJpbmd9IHJlZiByZWZlcmVuY2UgdG8gcmVzb2x2ZVxuICogQHJldHVybiB7T2JqZWN0fEZ1bmN0aW9ufSBzY2hlbWEgb2JqZWN0IChpZiB0aGUgc2NoZW1hIGNhbiBiZSBpbmxpbmVkKSBvciB2YWxpZGF0aW9uIGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmUoY29tcGlsZSwgcm9vdCwgcmVmKSB7XG4gIC8qIGpzaGludCB2YWxpZHRoaXM6IHRydWUgKi9cbiAgdmFyIHJlZlZhbCA9IHRoaXMuX3JlZnNbcmVmXTtcbiAgaWYgKHR5cGVvZiByZWZWYWwgPT0gJ3N0cmluZycpIHtcbiAgICBpZiAodGhpcy5fcmVmc1tyZWZWYWxdKSByZWZWYWwgPSB0aGlzLl9yZWZzW3JlZlZhbF07XG4gICAgZWxzZSByZXR1cm4gcmVzb2x2ZS5jYWxsKHRoaXMsIGNvbXBpbGUsIHJvb3QsIHJlZlZhbCk7XG4gIH1cblxuICByZWZWYWwgPSByZWZWYWwgfHwgdGhpcy5fc2NoZW1hc1tyZWZdO1xuICBpZiAocmVmVmFsIGluc3RhbmNlb2YgU2NoZW1hT2JqZWN0KSB7XG4gICAgcmV0dXJuIGlubGluZVJlZihyZWZWYWwuc2NoZW1hLCB0aGlzLl9vcHRzLmlubGluZVJlZnMpXG4gICAgICAgICAgICA/IHJlZlZhbC5zY2hlbWFcbiAgICAgICAgICAgIDogcmVmVmFsLnZhbGlkYXRlIHx8IHRoaXMuX2NvbXBpbGUocmVmVmFsKTtcbiAgfVxuXG4gIHZhciByZXMgPSByZXNvbHZlU2NoZW1hLmNhbGwodGhpcywgcm9vdCwgcmVmKTtcbiAgdmFyIHNjaGVtYSwgdiwgYmFzZUlkO1xuICBpZiAocmVzKSB7XG4gICAgc2NoZW1hID0gcmVzLnNjaGVtYTtcbiAgICByb290ID0gcmVzLnJvb3Q7XG4gICAgYmFzZUlkID0gcmVzLmJhc2VJZDtcbiAgfVxuXG4gIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBTY2hlbWFPYmplY3QpIHtcbiAgICB2ID0gc2NoZW1hLnZhbGlkYXRlIHx8IGNvbXBpbGUuY2FsbCh0aGlzLCBzY2hlbWEuc2NoZW1hLCByb290LCB1bmRlZmluZWQsIGJhc2VJZCk7XG4gIH0gZWxzZSBpZiAoc2NoZW1hICE9PSB1bmRlZmluZWQpIHtcbiAgICB2ID0gaW5saW5lUmVmKHNjaGVtYSwgdGhpcy5fb3B0cy5pbmxpbmVSZWZzKVxuICAgICAgICA/IHNjaGVtYVxuICAgICAgICA6IGNvbXBpbGUuY2FsbCh0aGlzLCBzY2hlbWEsIHJvb3QsIHVuZGVmaW5lZCwgYmFzZUlkKTtcbiAgfVxuXG4gIHJldHVybiB2O1xufVxuXG5cbi8qKlxuICogUmVzb2x2ZSBzY2hlbWEsIGl0cyByb290IGFuZCBiYXNlSWRcbiAqIEB0aGlzIEFqdlxuICogQHBhcmFtICB7T2JqZWN0fSByb290IHJvb3Qgb2JqZWN0IHdpdGggcHJvcGVydGllcyBzY2hlbWEsIHJlZlZhbCwgcmVmc1xuICogQHBhcmFtICB7U3RyaW5nfSByZWYgIHJlZmVyZW5jZSB0byByZXNvbHZlXG4gKiBAcmV0dXJuIHtPYmplY3R9IG9iamVjdCB3aXRoIHByb3BlcnRpZXMgc2NoZW1hLCByb290LCBiYXNlSWRcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVNjaGVtYShyb290LCByZWYpIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICB2YXIgcCA9IFVSSS5wYXJzZShyZWYpXG4gICAgLCByZWZQYXRoID0gX2dldEZ1bGxQYXRoKHApXG4gICAgLCBiYXNlSWQgPSBnZXRGdWxsUGF0aCh0aGlzLl9nZXRJZChyb290LnNjaGVtYSkpO1xuICBpZiAoT2JqZWN0LmtleXMocm9vdC5zY2hlbWEpLmxlbmd0aCA9PT0gMCB8fCByZWZQYXRoICE9PSBiYXNlSWQpIHtcbiAgICB2YXIgaWQgPSBub3JtYWxpemVJZChyZWZQYXRoKTtcbiAgICB2YXIgcmVmVmFsID0gdGhpcy5fcmVmc1tpZF07XG4gICAgaWYgKHR5cGVvZiByZWZWYWwgPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiByZXNvbHZlUmVjdXJzaXZlLmNhbGwodGhpcywgcm9vdCwgcmVmVmFsLCBwKTtcbiAgICB9IGVsc2UgaWYgKHJlZlZhbCBpbnN0YW5jZW9mIFNjaGVtYU9iamVjdCkge1xuICAgICAgaWYgKCFyZWZWYWwudmFsaWRhdGUpIHRoaXMuX2NvbXBpbGUocmVmVmFsKTtcbiAgICAgIHJvb3QgPSByZWZWYWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZlZhbCA9IHRoaXMuX3NjaGVtYXNbaWRdO1xuICAgICAgaWYgKHJlZlZhbCBpbnN0YW5jZW9mIFNjaGVtYU9iamVjdCkge1xuICAgICAgICBpZiAoIXJlZlZhbC52YWxpZGF0ZSkgdGhpcy5fY29tcGlsZShyZWZWYWwpO1xuICAgICAgICBpZiAoaWQgPT0gbm9ybWFsaXplSWQocmVmKSlcbiAgICAgICAgICByZXR1cm4geyBzY2hlbWE6IHJlZlZhbCwgcm9vdDogcm9vdCwgYmFzZUlkOiBiYXNlSWQgfTtcbiAgICAgICAgcm9vdCA9IHJlZlZhbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFyb290LnNjaGVtYSkgcmV0dXJuO1xuICAgIGJhc2VJZCA9IGdldEZ1bGxQYXRoKHRoaXMuX2dldElkKHJvb3Quc2NoZW1hKSk7XG4gIH1cbiAgcmV0dXJuIGdldEpzb25Qb2ludGVyLmNhbGwodGhpcywgcCwgYmFzZUlkLCByb290LnNjaGVtYSwgcm9vdCk7XG59XG5cblxuLyogQHRoaXMgQWp2ICovXG5mdW5jdGlvbiByZXNvbHZlUmVjdXJzaXZlKHJvb3QsIHJlZiwgcGFyc2VkUmVmKSB7XG4gIC8qIGpzaGludCB2YWxpZHRoaXM6IHRydWUgKi9cbiAgdmFyIHJlcyA9IHJlc29sdmVTY2hlbWEuY2FsbCh0aGlzLCByb290LCByZWYpO1xuICBpZiAocmVzKSB7XG4gICAgdmFyIHNjaGVtYSA9IHJlcy5zY2hlbWE7XG4gICAgdmFyIGJhc2VJZCA9IHJlcy5iYXNlSWQ7XG4gICAgcm9vdCA9IHJlcy5yb290O1xuICAgIHZhciBpZCA9IHRoaXMuX2dldElkKHNjaGVtYSk7XG4gICAgaWYgKGlkKSBiYXNlSWQgPSByZXNvbHZlVXJsKGJhc2VJZCwgaWQpO1xuICAgIHJldHVybiBnZXRKc29uUG9pbnRlci5jYWxsKHRoaXMsIHBhcnNlZFJlZiwgYmFzZUlkLCBzY2hlbWEsIHJvb3QpO1xuICB9XG59XG5cblxudmFyIFBSRVZFTlRfU0NPUEVfQ0hBTkdFID0gdXRpbC50b0hhc2goWydwcm9wZXJ0aWVzJywgJ3BhdHRlcm5Qcm9wZXJ0aWVzJywgJ2VudW0nLCAnZGVwZW5kZW5jaWVzJywgJ2RlZmluaXRpb25zJ10pO1xuLyogQHRoaXMgQWp2ICovXG5mdW5jdGlvbiBnZXRKc29uUG9pbnRlcihwYXJzZWRSZWYsIGJhc2VJZCwgc2NoZW1hLCByb290KSB7XG4gIC8qIGpzaGludCB2YWxpZHRoaXM6IHRydWUgKi9cbiAgcGFyc2VkUmVmLmZyYWdtZW50ID0gcGFyc2VkUmVmLmZyYWdtZW50IHx8ICcnO1xuICBpZiAocGFyc2VkUmVmLmZyYWdtZW50LnNsaWNlKDAsMSkgIT0gJy8nKSByZXR1cm47XG4gIHZhciBwYXJ0cyA9IHBhcnNlZFJlZi5mcmFnbWVudC5zcGxpdCgnLycpO1xuXG4gIGZvciAodmFyIGkgPSAxOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcGFydCA9IHBhcnRzW2ldO1xuICAgIGlmIChwYXJ0KSB7XG4gICAgICBwYXJ0ID0gdXRpbC51bmVzY2FwZUZyYWdtZW50KHBhcnQpO1xuICAgICAgc2NoZW1hID0gc2NoZW1hW3BhcnRdO1xuICAgICAgaWYgKHNjaGVtYSA9PT0gdW5kZWZpbmVkKSBicmVhaztcbiAgICAgIHZhciBpZDtcbiAgICAgIGlmICghUFJFVkVOVF9TQ09QRV9DSEFOR0VbcGFydF0pIHtcbiAgICAgICAgaWQgPSB0aGlzLl9nZXRJZChzY2hlbWEpO1xuICAgICAgICBpZiAoaWQpIGJhc2VJZCA9IHJlc29sdmVVcmwoYmFzZUlkLCBpZCk7XG4gICAgICAgIGlmIChzY2hlbWEuJHJlZikge1xuICAgICAgICAgIHZhciAkcmVmID0gcmVzb2x2ZVVybChiYXNlSWQsIHNjaGVtYS4kcmVmKTtcbiAgICAgICAgICB2YXIgcmVzID0gcmVzb2x2ZVNjaGVtYS5jYWxsKHRoaXMsIHJvb3QsICRyZWYpO1xuICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgIHNjaGVtYSA9IHJlcy5zY2hlbWE7XG4gICAgICAgICAgICByb290ID0gcmVzLnJvb3Q7XG4gICAgICAgICAgICBiYXNlSWQgPSByZXMuYmFzZUlkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoc2NoZW1hICE9PSB1bmRlZmluZWQgJiYgc2NoZW1hICE9PSByb290LnNjaGVtYSlcbiAgICByZXR1cm4geyBzY2hlbWE6IHNjaGVtYSwgcm9vdDogcm9vdCwgYmFzZUlkOiBiYXNlSWQgfTtcbn1cblxuXG52YXIgU0lNUExFX0lOTElORUQgPSB1dGlsLnRvSGFzaChbXG4gICd0eXBlJywgJ2Zvcm1hdCcsICdwYXR0ZXJuJyxcbiAgJ21heExlbmd0aCcsICdtaW5MZW5ndGgnLFxuICAnbWF4UHJvcGVydGllcycsICdtaW5Qcm9wZXJ0aWVzJyxcbiAgJ21heEl0ZW1zJywgJ21pbkl0ZW1zJyxcbiAgJ21heGltdW0nLCAnbWluaW11bScsXG4gICd1bmlxdWVJdGVtcycsICdtdWx0aXBsZU9mJyxcbiAgJ3JlcXVpcmVkJywgJ2VudW0nXG5dKTtcbmZ1bmN0aW9uIGlubGluZVJlZihzY2hlbWEsIGxpbWl0KSB7XG4gIGlmIChsaW1pdCA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgaWYgKGxpbWl0ID09PSB1bmRlZmluZWQgfHwgbGltaXQgPT09IHRydWUpIHJldHVybiBjaGVja05vUmVmKHNjaGVtYSk7XG4gIGVsc2UgaWYgKGxpbWl0KSByZXR1cm4gY291bnRLZXlzKHNjaGVtYSkgPD0gbGltaXQ7XG59XG5cblxuZnVuY3Rpb24gY2hlY2tOb1JlZihzY2hlbWEpIHtcbiAgdmFyIGl0ZW07XG4gIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYSkpIHtcbiAgICBmb3IgKHZhciBpPTA7IGk8c2NoZW1hLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpdGVtID0gc2NoZW1hW2ldO1xuICAgICAgaWYgKHR5cGVvZiBpdGVtID09ICdvYmplY3QnICYmICFjaGVja05vUmVmKGl0ZW0pKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGtleSBpbiBzY2hlbWEpIHtcbiAgICAgIGlmIChrZXkgPT0gJyRyZWYnKSByZXR1cm4gZmFsc2U7XG4gICAgICBpdGVtID0gc2NoZW1hW2tleV07XG4gICAgICBpZiAodHlwZW9mIGl0ZW0gPT0gJ29iamVjdCcgJiYgIWNoZWNrTm9SZWYoaXRlbSkpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cblxuZnVuY3Rpb24gY291bnRLZXlzKHNjaGVtYSkge1xuICB2YXIgY291bnQgPSAwLCBpdGVtO1xuICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEpKSB7XG4gICAgZm9yICh2YXIgaT0wOyBpPHNjaGVtYS5sZW5ndGg7IGkrKykge1xuICAgICAgaXRlbSA9IHNjaGVtYVtpXTtcbiAgICAgIGlmICh0eXBlb2YgaXRlbSA9PSAnb2JqZWN0JykgY291bnQgKz0gY291bnRLZXlzKGl0ZW0pO1xuICAgICAgaWYgKGNvdW50ID09IEluZmluaXR5KSByZXR1cm4gSW5maW5pdHk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGtleSBpbiBzY2hlbWEpIHtcbiAgICAgIGlmIChrZXkgPT0gJyRyZWYnKSByZXR1cm4gSW5maW5pdHk7XG4gICAgICBpZiAoU0lNUExFX0lOTElORURba2V5XSkge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXRlbSA9IHNjaGVtYVtrZXldO1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT0gJ29iamVjdCcpIGNvdW50ICs9IGNvdW50S2V5cyhpdGVtKSArIDE7XG4gICAgICAgIGlmIChjb3VudCA9PSBJbmZpbml0eSkgcmV0dXJuIEluZmluaXR5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY291bnQ7XG59XG5cblxuZnVuY3Rpb24gZ2V0RnVsbFBhdGgoaWQsIG5vcm1hbGl6ZSkge1xuICBpZiAobm9ybWFsaXplICE9PSBmYWxzZSkgaWQgPSBub3JtYWxpemVJZChpZCk7XG4gIHZhciBwID0gVVJJLnBhcnNlKGlkKTtcbiAgcmV0dXJuIF9nZXRGdWxsUGF0aChwKTtcbn1cblxuXG5mdW5jdGlvbiBfZ2V0RnVsbFBhdGgocCkge1xuICByZXR1cm4gVVJJLnNlcmlhbGl6ZShwKS5zcGxpdCgnIycpWzBdICsgJyMnO1xufVxuXG5cbnZhciBUUkFJTElOR19TTEFTSF9IQVNIID0gLyNcXC8/JC87XG5mdW5jdGlvbiBub3JtYWxpemVJZChpZCkge1xuICByZXR1cm4gaWQgPyBpZC5yZXBsYWNlKFRSQUlMSU5HX1NMQVNIX0hBU0gsICcnKSA6ICcnO1xufVxuXG5cbmZ1bmN0aW9uIHJlc29sdmVVcmwoYmFzZUlkLCBpZCkge1xuICBpZCA9IG5vcm1hbGl6ZUlkKGlkKTtcbiAgcmV0dXJuIFVSSS5yZXNvbHZlKGJhc2VJZCwgaWQpO1xufVxuXG5cbi8qIEB0aGlzIEFqdiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUlkcyhzY2hlbWEpIHtcbiAgdmFyIHNjaGVtYUlkID0gbm9ybWFsaXplSWQodGhpcy5fZ2V0SWQoc2NoZW1hKSk7XG4gIHZhciBiYXNlSWRzID0geycnOiBzY2hlbWFJZH07XG4gIHZhciBmdWxsUGF0aHMgPSB7Jyc6IGdldEZ1bGxQYXRoKHNjaGVtYUlkLCBmYWxzZSl9O1xuICB2YXIgbG9jYWxSZWZzID0ge307XG4gIHZhciBzZWxmID0gdGhpcztcblxuICB0cmF2ZXJzZShzY2hlbWEsIHthbGxLZXlzOiB0cnVlfSwgZnVuY3Rpb24oc2NoLCBqc29uUHRyLCByb290U2NoZW1hLCBwYXJlbnRKc29uUHRyLCBwYXJlbnRLZXl3b3JkLCBwYXJlbnRTY2hlbWEsIGtleUluZGV4KSB7XG4gICAgaWYgKGpzb25QdHIgPT09ICcnKSByZXR1cm47XG4gICAgdmFyIGlkID0gc2VsZi5fZ2V0SWQoc2NoKTtcbiAgICB2YXIgYmFzZUlkID0gYmFzZUlkc1twYXJlbnRKc29uUHRyXTtcbiAgICB2YXIgZnVsbFBhdGggPSBmdWxsUGF0aHNbcGFyZW50SnNvblB0cl0gKyAnLycgKyBwYXJlbnRLZXl3b3JkO1xuICAgIGlmIChrZXlJbmRleCAhPT0gdW5kZWZpbmVkKVxuICAgICAgZnVsbFBhdGggKz0gJy8nICsgKHR5cGVvZiBrZXlJbmRleCA9PSAnbnVtYmVyJyA/IGtleUluZGV4IDogdXRpbC5lc2NhcGVGcmFnbWVudChrZXlJbmRleCkpO1xuXG4gICAgaWYgKHR5cGVvZiBpZCA9PSAnc3RyaW5nJykge1xuICAgICAgaWQgPSBiYXNlSWQgPSBub3JtYWxpemVJZChiYXNlSWQgPyBVUkkucmVzb2x2ZShiYXNlSWQsIGlkKSA6IGlkKTtcblxuICAgICAgdmFyIHJlZlZhbCA9IHNlbGYuX3JlZnNbaWRdO1xuICAgICAgaWYgKHR5cGVvZiByZWZWYWwgPT0gJ3N0cmluZycpIHJlZlZhbCA9IHNlbGYuX3JlZnNbcmVmVmFsXTtcbiAgICAgIGlmIChyZWZWYWwgJiYgcmVmVmFsLnNjaGVtYSkge1xuICAgICAgICBpZiAoIWVxdWFsKHNjaCwgcmVmVmFsLnNjaGVtYSkpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpZCBcIicgKyBpZCArICdcIiByZXNvbHZlcyB0byBtb3JlIHRoYW4gb25lIHNjaGVtYScpO1xuICAgICAgfSBlbHNlIGlmIChpZCAhPSBub3JtYWxpemVJZChmdWxsUGF0aCkpIHtcbiAgICAgICAgaWYgKGlkWzBdID09ICcjJykge1xuICAgICAgICAgIGlmIChsb2NhbFJlZnNbaWRdICYmICFlcXVhbChzY2gsIGxvY2FsUmVmc1tpZF0pKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpZCBcIicgKyBpZCArICdcIiByZXNvbHZlcyB0byBtb3JlIHRoYW4gb25lIHNjaGVtYScpO1xuICAgICAgICAgIGxvY2FsUmVmc1tpZF0gPSBzY2g7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VsZi5fcmVmc1tpZF0gPSBmdWxsUGF0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBiYXNlSWRzW2pzb25QdHJdID0gYmFzZUlkO1xuICAgIGZ1bGxQYXRoc1tqc29uUHRyXSA9IGZ1bGxQYXRoO1xuICB9KTtcblxuICByZXR1cm4gbG9jYWxSZWZzO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVzb2x2ZSA9IHJlcXVpcmUoJy4vcmVzb2x2ZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgVmFsaWRhdGlvbjogZXJyb3JTdWJjbGFzcyhWYWxpZGF0aW9uRXJyb3IpLFxuICBNaXNzaW5nUmVmOiBlcnJvclN1YmNsYXNzKE1pc3NpbmdSZWZFcnJvcilcbn07XG5cblxuZnVuY3Rpb24gVmFsaWRhdGlvbkVycm9yKGVycm9ycykge1xuICB0aGlzLm1lc3NhZ2UgPSAndmFsaWRhdGlvbiBmYWlsZWQnO1xuICB0aGlzLmVycm9ycyA9IGVycm9ycztcbiAgdGhpcy5hanYgPSB0aGlzLnZhbGlkYXRpb24gPSB0cnVlO1xufVxuXG5cbk1pc3NpbmdSZWZFcnJvci5tZXNzYWdlID0gZnVuY3Rpb24gKGJhc2VJZCwgcmVmKSB7XG4gIHJldHVybiAnY2FuXFwndCByZXNvbHZlIHJlZmVyZW5jZSAnICsgcmVmICsgJyBmcm9tIGlkICcgKyBiYXNlSWQ7XG59O1xuXG5cbmZ1bmN0aW9uIE1pc3NpbmdSZWZFcnJvcihiYXNlSWQsIHJlZiwgbWVzc2FnZSkge1xuICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8IE1pc3NpbmdSZWZFcnJvci5tZXNzYWdlKGJhc2VJZCwgcmVmKTtcbiAgdGhpcy5taXNzaW5nUmVmID0gcmVzb2x2ZS51cmwoYmFzZUlkLCByZWYpO1xuICB0aGlzLm1pc3NpbmdTY2hlbWEgPSByZXNvbHZlLm5vcm1hbGl6ZUlkKHJlc29sdmUuZnVsbFBhdGgodGhpcy5taXNzaW5nUmVmKSk7XG59XG5cblxuZnVuY3Rpb24gZXJyb3JTdWJjbGFzcyhTdWJjbGFzcykge1xuICBTdWJjbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7XG4gIFN1YmNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFN1YmNsYXNzO1xuICByZXR1cm4gU3ViY2xhc3M7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGRhdGEsIG9wdHMpIHtcbiAgICBpZiAoIW9wdHMpIG9wdHMgPSB7fTtcbiAgICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIG9wdHMgPSB7IGNtcDogb3B0cyB9O1xuICAgIHZhciBjeWNsZXMgPSAodHlwZW9mIG9wdHMuY3ljbGVzID09PSAnYm9vbGVhbicpID8gb3B0cy5jeWNsZXMgOiBmYWxzZTtcblxuICAgIHZhciBjbXAgPSBvcHRzLmNtcCAmJiAoZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICB2YXIgYW9iaiA9IHsga2V5OiBhLCB2YWx1ZTogbm9kZVthXSB9O1xuICAgICAgICAgICAgICAgIHZhciBib2JqID0geyBrZXk6IGIsIHZhbHVlOiBub2RlW2JdIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGYoYW9iaiwgYm9iaik7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgIH0pKG9wdHMuY21wKTtcblxuICAgIHZhciBzZWVuID0gW107XG4gICAgcmV0dXJuIChmdW5jdGlvbiBzdHJpbmdpZnkgKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS50b0pTT04gJiYgdHlwZW9mIG5vZGUudG9KU09OID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBub2RlID0gbm9kZS50b0pTT04oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgICAgICAgaWYgKHR5cGVvZiBub2RlID09ICdudW1iZXInKSByZXR1cm4gaXNGaW5pdGUobm9kZSkgPyAnJyArIG5vZGUgOiAnbnVsbCc7XG4gICAgICAgIGlmICh0eXBlb2Ygbm9kZSAhPT0gJ29iamVjdCcpIHJldHVybiBKU09OLnN0cmluZ2lmeShub2RlKTtcblxuICAgICAgICB2YXIgaSwgb3V0O1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShub2RlKSkge1xuICAgICAgICAgICAgb3V0ID0gJ1snO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5vZGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaSkgb3V0ICs9ICcsJztcbiAgICAgICAgICAgICAgICBvdXQgKz0gc3RyaW5naWZ5KG5vZGVbaV0pIHx8ICdudWxsJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvdXQgKyAnXSc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZSA9PT0gbnVsbCkgcmV0dXJuICdudWxsJztcblxuICAgICAgICBpZiAoc2Vlbi5pbmRleE9mKG5vZGUpICE9PSAtMSkge1xuICAgICAgICAgICAgaWYgKGN5Y2xlcykgcmV0dXJuIEpTT04uc3RyaW5naWZ5KCdfX2N5Y2xlX18nKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0NvbnZlcnRpbmcgY2lyY3VsYXIgc3RydWN0dXJlIHRvIEpTT04nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzZWVuSW5kZXggPSBzZWVuLnB1c2gobm9kZSkgLSAxO1xuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG5vZGUpLnNvcnQoY21wICYmIGNtcChub2RlKSk7XG4gICAgICAgIG91dCA9ICcnO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSBzdHJpbmdpZnkobm9kZVtrZXldKTtcblxuICAgICAgICAgICAgaWYgKCF2YWx1ZSkgY29udGludWU7XG4gICAgICAgICAgICBpZiAob3V0KSBvdXQgKz0gJywnO1xuICAgICAgICAgICAgb3V0ICs9IEpTT04uc3RyaW5naWZ5KGtleSkgKyAnOicgKyB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBzZWVuLnNwbGljZShzZWVuSW5kZXgsIDEpO1xuICAgICAgICByZXR1cm4gJ3snICsgb3V0ICsgJ30nO1xuICAgIH0pKGRhdGEpO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfdmFsaWRhdGUoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcnO1xuICB2YXIgJGFzeW5jID0gaXQuc2NoZW1hLiRhc3luYyA9PT0gdHJ1ZSxcbiAgICAkcmVmS2V5d29yZHMgPSBpdC51dGlsLnNjaGVtYUhhc1J1bGVzRXhjZXB0KGl0LnNjaGVtYSwgaXQuUlVMRVMuYWxsLCAnJHJlZicpLFxuICAgICRpZCA9IGl0LnNlbGYuX2dldElkKGl0LnNjaGVtYSk7XG4gIGlmIChpdC5vcHRzLnN0cmljdEtleXdvcmRzKSB7XG4gICAgdmFyICR1bmtub3duS3dkID0gaXQudXRpbC5zY2hlbWFVbmtub3duUnVsZXMoaXQuc2NoZW1hLCBpdC5SVUxFUy5rZXl3b3Jkcyk7XG4gICAgaWYgKCR1bmtub3duS3dkKSB7XG4gICAgICB2YXIgJGtleXdvcmRzTXNnID0gJ3Vua25vd24ga2V5d29yZDogJyArICR1bmtub3duS3dkO1xuICAgICAgaWYgKGl0Lm9wdHMuc3RyaWN0S2V5d29yZHMgPT09ICdsb2cnKSBpdC5sb2dnZXIud2Fybigka2V5d29yZHNNc2cpO1xuICAgICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IoJGtleXdvcmRzTXNnKTtcbiAgICB9XG4gIH1cbiAgaWYgKGl0LmlzVG9wKSB7XG4gICAgb3V0ICs9ICcgdmFyIHZhbGlkYXRlID0gJztcbiAgICBpZiAoJGFzeW5jKSB7XG4gICAgICBpdC5hc3luYyA9IHRydWU7XG4gICAgICBvdXQgKz0gJ2FzeW5jICc7XG4gICAgfVxuICAgIG91dCArPSAnZnVuY3Rpb24oZGF0YSwgZGF0YVBhdGgsIHBhcmVudERhdGEsIHBhcmVudERhdGFQcm9wZXJ0eSwgcm9vdERhdGEpIHsgXFwndXNlIHN0cmljdFxcJzsgJztcbiAgICBpZiAoJGlkICYmIChpdC5vcHRzLnNvdXJjZUNvZGUgfHwgaXQub3B0cy5wcm9jZXNzQ29kZSkpIHtcbiAgICAgIG91dCArPSAnICcgKyAoJy9cXCojIHNvdXJjZVVSTD0nICsgJGlkICsgJyAqLycpICsgJyAnO1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIGl0LnNjaGVtYSA9PSAnYm9vbGVhbicgfHwgISgkcmVmS2V5d29yZHMgfHwgaXQuc2NoZW1hLiRyZWYpKSB7XG4gICAgdmFyICRrZXl3b3JkID0gJ2ZhbHNlIHNjaGVtYSc7XG4gICAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gICAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICAgIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gICAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gICAgdmFyICRlcnJvcktleXdvcmQ7XG4gICAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgICB2YXIgJHZhbGlkID0gJ3ZhbGlkJyArICRsdmw7XG4gICAgaWYgKGl0LnNjaGVtYSA9PT0gZmFsc2UpIHtcbiAgICAgIGlmIChpdC5pc1RvcCkge1xuICAgICAgICAkYnJlYWtPbkVycm9yID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHZhciAnICsgKCR2YWxpZCkgKyAnID0gZmFsc2U7ICc7XG4gICAgICB9XG4gICAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICAgIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCRlcnJvcktleXdvcmQgfHwgJ2ZhbHNlIHNjaGVtYScpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHt9ICc7XG4gICAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnYm9vbGVhbiBzY2hlbWEgaXMgZmFsc2VcXCcgJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IGZhbHNlICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICB9XG4gICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgICB9XG4gICAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgICAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGl0LmlzVG9wKSB7XG4gICAgICAgIGlmICgkYXN5bmMpIHtcbiAgICAgICAgICBvdXQgKz0gJyByZXR1cm4gZGF0YTsgJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBudWxsOyByZXR1cm4gdHJ1ZTsgJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJHZhbGlkKSArICcgPSB0cnVlOyAnO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXQuaXNUb3ApIHtcbiAgICAgIG91dCArPSAnIH07IHJldHVybiB2YWxpZGF0ZTsgJztcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuICBpZiAoaXQuaXNUb3ApIHtcbiAgICB2YXIgJHRvcCA9IGl0LmlzVG9wLFxuICAgICAgJGx2bCA9IGl0LmxldmVsID0gMCxcbiAgICAgICRkYXRhTHZsID0gaXQuZGF0YUxldmVsID0gMCxcbiAgICAgICRkYXRhID0gJ2RhdGEnO1xuICAgIGl0LnJvb3RJZCA9IGl0LnJlc29sdmUuZnVsbFBhdGgoaXQuc2VsZi5fZ2V0SWQoaXQucm9vdC5zY2hlbWEpKTtcbiAgICBpdC5iYXNlSWQgPSBpdC5iYXNlSWQgfHwgaXQucm9vdElkO1xuICAgIGRlbGV0ZSBpdC5pc1RvcDtcbiAgICBpdC5kYXRhUGF0aEFyciA9IFtcIlwiXTtcbiAgICBpZiAoaXQuc2NoZW1hLmRlZmF1bHQgIT09IHVuZGVmaW5lZCAmJiBpdC5vcHRzLnVzZURlZmF1bHRzICYmIGl0Lm9wdHMuc3RyaWN0RGVmYXVsdHMpIHtcbiAgICAgIHZhciAkZGVmYXVsdE1zZyA9ICdkZWZhdWx0IGlzIGlnbm9yZWQgaW4gdGhlIHNjaGVtYSByb290JztcbiAgICAgIGlmIChpdC5vcHRzLnN0cmljdERlZmF1bHRzID09PSAnbG9nJykgaXQubG9nZ2VyLndhcm4oJGRlZmF1bHRNc2cpO1xuICAgICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IoJGRlZmF1bHRNc2cpO1xuICAgIH1cbiAgICBvdXQgKz0gJyB2YXIgdkVycm9ycyA9IG51bGw7ICc7XG4gICAgb3V0ICs9ICcgdmFyIGVycm9ycyA9IDA7ICAgICAnO1xuICAgIG91dCArPSAnIGlmIChyb290RGF0YSA9PT0gdW5kZWZpbmVkKSByb290RGF0YSA9IGRhdGE7ICc7XG4gIH0gZWxzZSB7XG4gICAgdmFyICRsdmwgPSBpdC5sZXZlbCxcbiAgICAgICRkYXRhTHZsID0gaXQuZGF0YUxldmVsLFxuICAgICAgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICAgIGlmICgkaWQpIGl0LmJhc2VJZCA9IGl0LnJlc29sdmUudXJsKGl0LmJhc2VJZCwgJGlkKTtcbiAgICBpZiAoJGFzeW5jICYmICFpdC5hc3luYykgdGhyb3cgbmV3IEVycm9yKCdhc3luYyBzY2hlbWEgaW4gc3luYyBzY2hlbWEnKTtcbiAgICBvdXQgKz0gJyB2YXIgZXJyc18nICsgKCRsdmwpICsgJyA9IGVycm9yczsnO1xuICB9XG4gIHZhciAkdmFsaWQgPSAndmFsaWQnICsgJGx2bCxcbiAgICAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzLFxuICAgICRjbG9zaW5nQnJhY2VzMSA9ICcnLFxuICAgICRjbG9zaW5nQnJhY2VzMiA9ICcnO1xuICB2YXIgJGVycm9yS2V5d29yZDtcbiAgdmFyICR0eXBlU2NoZW1hID0gaXQuc2NoZW1hLnR5cGUsXG4gICAgJHR5cGVJc0FycmF5ID0gQXJyYXkuaXNBcnJheSgkdHlwZVNjaGVtYSk7XG4gIGlmICgkdHlwZVNjaGVtYSAmJiBpdC5vcHRzLm51bGxhYmxlICYmIGl0LnNjaGVtYS5udWxsYWJsZSA9PT0gdHJ1ZSkge1xuICAgIGlmICgkdHlwZUlzQXJyYXkpIHtcbiAgICAgIGlmICgkdHlwZVNjaGVtYS5pbmRleE9mKCdudWxsJykgPT0gLTEpICR0eXBlU2NoZW1hID0gJHR5cGVTY2hlbWEuY29uY2F0KCdudWxsJyk7XG4gICAgfSBlbHNlIGlmICgkdHlwZVNjaGVtYSAhPSAnbnVsbCcpIHtcbiAgICAgICR0eXBlU2NoZW1hID0gWyR0eXBlU2NoZW1hLCAnbnVsbCddO1xuICAgICAgJHR5cGVJc0FycmF5ID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgaWYgKCR0eXBlSXNBcnJheSAmJiAkdHlwZVNjaGVtYS5sZW5ndGggPT0gMSkge1xuICAgICR0eXBlU2NoZW1hID0gJHR5cGVTY2hlbWFbMF07XG4gICAgJHR5cGVJc0FycmF5ID0gZmFsc2U7XG4gIH1cbiAgaWYgKGl0LnNjaGVtYS4kcmVmICYmICRyZWZLZXl3b3Jkcykge1xuICAgIGlmIChpdC5vcHRzLmV4dGVuZFJlZnMgPT0gJ2ZhaWwnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJyRyZWY6IHZhbGlkYXRpb24ga2V5d29yZHMgdXNlZCBpbiBzY2hlbWEgYXQgcGF0aCBcIicgKyBpdC5lcnJTY2hlbWFQYXRoICsgJ1wiIChzZWUgb3B0aW9uIGV4dGVuZFJlZnMpJyk7XG4gICAgfSBlbHNlIGlmIChpdC5vcHRzLmV4dGVuZFJlZnMgIT09IHRydWUpIHtcbiAgICAgICRyZWZLZXl3b3JkcyA9IGZhbHNlO1xuICAgICAgaXQubG9nZ2VyLndhcm4oJyRyZWY6IGtleXdvcmRzIGlnbm9yZWQgaW4gc2NoZW1hIGF0IHBhdGggXCInICsgaXQuZXJyU2NoZW1hUGF0aCArICdcIicpO1xuICAgIH1cbiAgfVxuICBpZiAoaXQuc2NoZW1hLiRjb21tZW50ICYmIGl0Lm9wdHMuJGNvbW1lbnQpIHtcbiAgICBvdXQgKz0gJyAnICsgKGl0LlJVTEVTLmFsbC4kY29tbWVudC5jb2RlKGl0LCAnJGNvbW1lbnQnKSk7XG4gIH1cbiAgaWYgKCR0eXBlU2NoZW1hKSB7XG4gICAgaWYgKGl0Lm9wdHMuY29lcmNlVHlwZXMpIHtcbiAgICAgIHZhciAkY29lcmNlVG9UeXBlcyA9IGl0LnV0aWwuY29lcmNlVG9UeXBlcyhpdC5vcHRzLmNvZXJjZVR5cGVzLCAkdHlwZVNjaGVtYSk7XG4gICAgfVxuICAgIHZhciAkcnVsZXNHcm91cCA9IGl0LlJVTEVTLnR5cGVzWyR0eXBlU2NoZW1hXTtcbiAgICBpZiAoJGNvZXJjZVRvVHlwZXMgfHwgJHR5cGVJc0FycmF5IHx8ICRydWxlc0dyb3VwID09PSB0cnVlIHx8ICgkcnVsZXNHcm91cCAmJiAhJHNob3VsZFVzZUdyb3VwKCRydWxlc0dyb3VwKSkpIHtcbiAgICAgIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyAnLnR5cGUnLFxuICAgICAgICAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnL3R5cGUnO1xuICAgICAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArICcudHlwZScsXG4gICAgICAgICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvdHlwZScsXG4gICAgICAgICRtZXRob2QgPSAkdHlwZUlzQXJyYXkgPyAnY2hlY2tEYXRhVHlwZXMnIDogJ2NoZWNrRGF0YVR5cGUnO1xuICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoaXQudXRpbFskbWV0aG9kXSgkdHlwZVNjaGVtYSwgJGRhdGEsIGl0Lm9wdHMuc3RyaWN0TnVtYmVycywgdHJ1ZSkpICsgJykgeyAnO1xuICAgICAgaWYgKCRjb2VyY2VUb1R5cGVzKSB7XG4gICAgICAgIHZhciAkZGF0YVR5cGUgPSAnZGF0YVR5cGUnICsgJGx2bCxcbiAgICAgICAgICAkY29lcmNlZCA9ICdjb2VyY2VkJyArICRsdmw7XG4gICAgICAgIG91dCArPSAnIHZhciAnICsgKCRkYXRhVHlwZSkgKyAnID0gdHlwZW9mICcgKyAoJGRhdGEpICsgJzsgdmFyICcgKyAoJGNvZXJjZWQpICsgJyA9IHVuZGVmaW5lZDsgJztcbiAgICAgICAgaWYgKGl0Lm9wdHMuY29lcmNlVHlwZXMgPT0gJ2FycmF5Jykge1xuICAgICAgICAgIG91dCArPSAnIGlmICgnICsgKCRkYXRhVHlwZSkgKyAnID09IFxcJ29iamVjdFxcJyAmJiBBcnJheS5pc0FycmF5KCcgKyAoJGRhdGEpICsgJykgJiYgJyArICgkZGF0YSkgKyAnLmxlbmd0aCA9PSAxKSB7ICcgKyAoJGRhdGEpICsgJyA9ICcgKyAoJGRhdGEpICsgJ1swXTsgJyArICgkZGF0YVR5cGUpICsgJyA9IHR5cGVvZiAnICsgKCRkYXRhKSArICc7IGlmICgnICsgKGl0LnV0aWwuY2hlY2tEYXRhVHlwZShpdC5zY2hlbWEudHlwZSwgJGRhdGEsIGl0Lm9wdHMuc3RyaWN0TnVtYmVycykpICsgJykgJyArICgkY29lcmNlZCkgKyAnID0gJyArICgkZGF0YSkgKyAnOyB9ICc7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJGNvZXJjZWQpICsgJyAhPT0gdW5kZWZpbmVkKSA7ICc7XG4gICAgICAgIHZhciBhcnIxID0gJGNvZXJjZVRvVHlwZXM7XG4gICAgICAgIGlmIChhcnIxKSB7XG4gICAgICAgICAgdmFyICR0eXBlLCAkaSA9IC0xLFxuICAgICAgICAgICAgbDEgPSBhcnIxLmxlbmd0aCAtIDE7XG4gICAgICAgICAgd2hpbGUgKCRpIDwgbDEpIHtcbiAgICAgICAgICAgICR0eXBlID0gYXJyMVskaSArPSAxXTtcbiAgICAgICAgICAgIGlmICgkdHlwZSA9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICBvdXQgKz0gJyBlbHNlIGlmICgnICsgKCRkYXRhVHlwZSkgKyAnID09IFxcJ251bWJlclxcJyB8fCAnICsgKCRkYXRhVHlwZSkgKyAnID09IFxcJ2Jvb2xlYW5cXCcpICcgKyAoJGNvZXJjZWQpICsgJyA9IFxcJ1xcJyArICcgKyAoJGRhdGEpICsgJzsgZWxzZSBpZiAoJyArICgkZGF0YSkgKyAnID09PSBudWxsKSAnICsgKCRjb2VyY2VkKSArICcgPSBcXCdcXCc7ICc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCR0eXBlID09ICdudW1iZXInIHx8ICR0eXBlID09ICdpbnRlZ2VyJykge1xuICAgICAgICAgICAgICBvdXQgKz0gJyBlbHNlIGlmICgnICsgKCRkYXRhVHlwZSkgKyAnID09IFxcJ2Jvb2xlYW5cXCcgfHwgJyArICgkZGF0YSkgKyAnID09PSBudWxsIHx8ICgnICsgKCRkYXRhVHlwZSkgKyAnID09IFxcJ3N0cmluZ1xcJyAmJiAnICsgKCRkYXRhKSArICcgJiYgJyArICgkZGF0YSkgKyAnID09ICsnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICAgICAgaWYgKCR0eXBlID09ICdpbnRlZ2VyJykge1xuICAgICAgICAgICAgICAgIG91dCArPSAnICYmICEoJyArICgkZGF0YSkgKyAnICUgMSknO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG91dCArPSAnKSkgJyArICgkY29lcmNlZCkgKyAnID0gKycgKyAoJGRhdGEpICsgJzsgJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoJHR5cGUgPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnIGVsc2UgaWYgKCcgKyAoJGRhdGEpICsgJyA9PT0gXFwnZmFsc2VcXCcgfHwgJyArICgkZGF0YSkgKyAnID09PSAwIHx8ICcgKyAoJGRhdGEpICsgJyA9PT0gbnVsbCkgJyArICgkY29lcmNlZCkgKyAnID0gZmFsc2U7IGVsc2UgaWYgKCcgKyAoJGRhdGEpICsgJyA9PT0gXFwndHJ1ZVxcJyB8fCAnICsgKCRkYXRhKSArICcgPT09IDEpICcgKyAoJGNvZXJjZWQpICsgJyA9IHRydWU7ICc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCR0eXBlID09ICdudWxsJykge1xuICAgICAgICAgICAgICBvdXQgKz0gJyBlbHNlIGlmICgnICsgKCRkYXRhKSArICcgPT09IFxcJ1xcJyB8fCAnICsgKCRkYXRhKSArICcgPT09IDAgfHwgJyArICgkZGF0YSkgKyAnID09PSBmYWxzZSkgJyArICgkY29lcmNlZCkgKyAnID0gbnVsbDsgJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQub3B0cy5jb2VyY2VUeXBlcyA9PSAnYXJyYXknICYmICR0eXBlID09ICdhcnJheScpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgZWxzZSBpZiAoJyArICgkZGF0YVR5cGUpICsgJyA9PSBcXCdzdHJpbmdcXCcgfHwgJyArICgkZGF0YVR5cGUpICsgJyA9PSBcXCdudW1iZXJcXCcgfHwgJyArICgkZGF0YVR5cGUpICsgJyA9PSBcXCdib29sZWFuXFwnIHx8ICcgKyAoJGRhdGEpICsgJyA9PSBudWxsKSAnICsgKCRjb2VyY2VkKSArICcgPSBbJyArICgkZGF0YSkgKyAnXTsgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcgZWxzZSB7ICAgJztcbiAgICAgICAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAgICAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICAgICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCRlcnJvcktleXdvcmQgfHwgJ3R5cGUnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IHR5cGU6IFxcJyc7XG4gICAgICAgICAgaWYgKCR0eXBlSXNBcnJheSkge1xuICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hLmpvaW4oXCIsXCIpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICdcXCcgfSAnO1xuICAgICAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgYmUgJztcbiAgICAgICAgICAgIGlmICgkdHlwZUlzQXJyYXkpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hLmpvaW4oXCIsXCIpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG91dCArPSAnJyArICgkdHlwZVNjaGVtYSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQgKz0gJ1xcJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgICAgICB9XG4gICAgICAgIG91dCArPSAnIH0gaWYgKCcgKyAoJGNvZXJjZWQpICsgJyAhPT0gdW5kZWZpbmVkKSB7ICAnO1xuICAgICAgICB2YXIgJHBhcmVudERhdGEgPSAkZGF0YUx2bCA/ICdkYXRhJyArICgoJGRhdGFMdmwgLSAxKSB8fCAnJykgOiAncGFyZW50RGF0YScsXG4gICAgICAgICAgJHBhcmVudERhdGFQcm9wZXJ0eSA9ICRkYXRhTHZsID8gaXQuZGF0YVBhdGhBcnJbJGRhdGFMdmxdIDogJ3BhcmVudERhdGFQcm9wZXJ0eSc7XG4gICAgICAgIG91dCArPSAnICcgKyAoJGRhdGEpICsgJyA9ICcgKyAoJGNvZXJjZWQpICsgJzsgJztcbiAgICAgICAgaWYgKCEkZGF0YUx2bCkge1xuICAgICAgICAgIG91dCArPSAnaWYgKCcgKyAoJHBhcmVudERhdGEpICsgJyAhPT0gdW5kZWZpbmVkKSc7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcgJyArICgkcGFyZW50RGF0YSkgKyAnWycgKyAoJHBhcmVudERhdGFQcm9wZXJ0eSkgKyAnXSA9ICcgKyAoJGNvZXJjZWQpICsgJzsgfSAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAgICAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICAgICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCRlcnJvcktleXdvcmQgfHwgJ3R5cGUnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IHR5cGU6IFxcJyc7XG4gICAgICAgICAgaWYgKCR0eXBlSXNBcnJheSkge1xuICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hLmpvaW4oXCIsXCIpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICdcXCcgfSAnO1xuICAgICAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgYmUgJztcbiAgICAgICAgICAgIGlmICgkdHlwZUlzQXJyYXkpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hLmpvaW4oXCIsXCIpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG91dCArPSAnJyArICgkdHlwZVNjaGVtYSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQgKz0gJ1xcJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgfVxuICB9XG4gIGlmIChpdC5zY2hlbWEuJHJlZiAmJiAhJHJlZktleXdvcmRzKSB7XG4gICAgb3V0ICs9ICcgJyArIChpdC5SVUxFUy5hbGwuJHJlZi5jb2RlKGl0LCAnJHJlZicpKSArICcgJztcbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgfSBpZiAoZXJyb3JzID09PSAnO1xuICAgICAgaWYgKCR0b3ApIHtcbiAgICAgICAgb3V0ICs9ICcwJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnZXJyc18nICsgKCRsdmwpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcpIHsgJztcbiAgICAgICRjbG9zaW5nQnJhY2VzMiArPSAnfSc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBhcnIyID0gaXQuUlVMRVM7XG4gICAgaWYgKGFycjIpIHtcbiAgICAgIHZhciAkcnVsZXNHcm91cCwgaTIgPSAtMSxcbiAgICAgICAgbDIgPSBhcnIyLmxlbmd0aCAtIDE7XG4gICAgICB3aGlsZSAoaTIgPCBsMikge1xuICAgICAgICAkcnVsZXNHcm91cCA9IGFycjJbaTIgKz0gMV07XG4gICAgICAgIGlmICgkc2hvdWxkVXNlR3JvdXAoJHJ1bGVzR3JvdXApKSB7XG4gICAgICAgICAgaWYgKCRydWxlc0dyb3VwLnR5cGUpIHtcbiAgICAgICAgICAgIG91dCArPSAnIGlmICgnICsgKGl0LnV0aWwuY2hlY2tEYXRhVHlwZSgkcnVsZXNHcm91cC50eXBlLCAkZGF0YSwgaXQub3B0cy5zdHJpY3ROdW1iZXJzKSkgKyAnKSB7ICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdC5vcHRzLnVzZURlZmF1bHRzKSB7XG4gICAgICAgICAgICBpZiAoJHJ1bGVzR3JvdXAudHlwZSA9PSAnb2JqZWN0JyAmJiBpdC5zY2hlbWEucHJvcGVydGllcykge1xuICAgICAgICAgICAgICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYS5wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAgICRzY2hlbWFLZXlzID0gT2JqZWN0LmtleXMoJHNjaGVtYSk7XG4gICAgICAgICAgICAgIHZhciBhcnIzID0gJHNjaGVtYUtleXM7XG4gICAgICAgICAgICAgIGlmIChhcnIzKSB7XG4gICAgICAgICAgICAgICAgdmFyICRwcm9wZXJ0eUtleSwgaTMgPSAtMSxcbiAgICAgICAgICAgICAgICAgIGwzID0gYXJyMy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIHdoaWxlIChpMyA8IGwzKSB7XG4gICAgICAgICAgICAgICAgICAkcHJvcGVydHlLZXkgPSBhcnIzW2kzICs9IDFdO1xuICAgICAgICAgICAgICAgICAgdmFyICRzY2ggPSAkc2NoZW1hWyRwcm9wZXJ0eUtleV07XG4gICAgICAgICAgICAgICAgICBpZiAoJHNjaC5kZWZhdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICRwYXNzRGF0YSA9ICRkYXRhICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgkcHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXQuY29tcG9zaXRlUnVsZSkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLnN0cmljdERlZmF1bHRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgJGRlZmF1bHRNc2cgPSAnZGVmYXVsdCBpcyBpZ25vcmVkIGZvcjogJyArICRwYXNzRGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLnN0cmljdERlZmF1bHRzID09PSAnbG9nJykgaXQubG9nZ2VyLndhcm4oJGRlZmF1bHRNc2cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IoJGRlZmF1bHRNc2cpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkcGFzc0RhdGEpICsgJyA9PT0gdW5kZWZpbmVkICc7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMudXNlRGVmYXVsdHMgPT0gJ2VtcHR5Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgfHwgJyArICgkcGFzc0RhdGEpICsgJyA9PT0gbnVsbCB8fCAnICsgKCRwYXNzRGF0YSkgKyAnID09PSBcXCdcXCcgJztcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgKSAnICsgKCRwYXNzRGF0YSkgKyAnID0gJztcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaXQub3B0cy51c2VEZWZhdWx0cyA9PSAnc2hhcmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgJyArIChpdC51c2VEZWZhdWx0KCRzY2guZGVmYXVsdCkpICsgJyAnO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJyAnICsgKEpTT04uc3RyaW5naWZ5KCRzY2guZGVmYXVsdCkpICsgJyAnO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJzsgJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICgkcnVsZXNHcm91cC50eXBlID09ICdhcnJheScgJiYgQXJyYXkuaXNBcnJheShpdC5zY2hlbWEuaXRlbXMpKSB7XG4gICAgICAgICAgICAgIHZhciBhcnI0ID0gaXQuc2NoZW1hLml0ZW1zO1xuICAgICAgICAgICAgICBpZiAoYXJyNCkge1xuICAgICAgICAgICAgICAgIHZhciAkc2NoLCAkaSA9IC0xLFxuICAgICAgICAgICAgICAgICAgbDQgPSBhcnI0Lmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgd2hpbGUgKCRpIDwgbDQpIHtcbiAgICAgICAgICAgICAgICAgICRzY2ggPSBhcnI0WyRpICs9IDFdO1xuICAgICAgICAgICAgICAgICAgaWYgKCRzY2guZGVmYXVsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkcGFzc0RhdGEgPSAkZGF0YSArICdbJyArICRpICsgJ10nO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXQuY29tcG9zaXRlUnVsZSkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLnN0cmljdERlZmF1bHRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgJGRlZmF1bHRNc2cgPSAnZGVmYXVsdCBpcyBpZ25vcmVkIGZvcjogJyArICRwYXNzRGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLnN0cmljdERlZmF1bHRzID09PSAnbG9nJykgaXQubG9nZ2VyLndhcm4oJGRlZmF1bHRNc2cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IoJGRlZmF1bHRNc2cpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkcGFzc0RhdGEpICsgJyA9PT0gdW5kZWZpbmVkICc7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMudXNlRGVmYXVsdHMgPT0gJ2VtcHR5Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgfHwgJyArICgkcGFzc0RhdGEpICsgJyA9PT0gbnVsbCB8fCAnICsgKCRwYXNzRGF0YSkgKyAnID09PSBcXCdcXCcgJztcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgKSAnICsgKCRwYXNzRGF0YSkgKyAnID0gJztcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaXQub3B0cy51c2VEZWZhdWx0cyA9PSAnc2hhcmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgJyArIChpdC51c2VEZWZhdWx0KCRzY2guZGVmYXVsdCkpICsgJyAnO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJyAnICsgKEpTT04uc3RyaW5naWZ5KCRzY2guZGVmYXVsdCkpICsgJyAnO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJzsgJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgYXJyNSA9ICRydWxlc0dyb3VwLnJ1bGVzO1xuICAgICAgICAgIGlmIChhcnI1KSB7XG4gICAgICAgICAgICB2YXIgJHJ1bGUsIGk1ID0gLTEsXG4gICAgICAgICAgICAgIGw1ID0gYXJyNS5sZW5ndGggLSAxO1xuICAgICAgICAgICAgd2hpbGUgKGk1IDwgbDUpIHtcbiAgICAgICAgICAgICAgJHJ1bGUgPSBhcnI1W2k1ICs9IDFdO1xuICAgICAgICAgICAgICBpZiAoJHNob3VsZFVzZVJ1bGUoJHJ1bGUpKSB7XG4gICAgICAgICAgICAgICAgdmFyICRjb2RlID0gJHJ1bGUuY29kZShpdCwgJHJ1bGUua2V5d29yZCwgJHJ1bGVzR3JvdXAudHlwZSk7XG4gICAgICAgICAgICAgICAgaWYgKCRjb2RlKSB7XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJyAnICsgKCRjb2RlKSArICcgJztcbiAgICAgICAgICAgICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICRjbG9zaW5nQnJhY2VzMSArPSAnfSc7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAnICsgKCRjbG9zaW5nQnJhY2VzMSkgKyAnICc7XG4gICAgICAgICAgICAkY2xvc2luZ0JyYWNlczEgPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCRydWxlc0dyb3VwLnR5cGUpIHtcbiAgICAgICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgICAgICAgIGlmICgkdHlwZVNjaGVtYSAmJiAkdHlwZVNjaGVtYSA9PT0gJHJ1bGVzR3JvdXAudHlwZSAmJiAhJGNvZXJjZVRvVHlwZXMpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gICAgICAgICAgICAgIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyAnLnR5cGUnLFxuICAgICAgICAgICAgICAgICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvdHlwZSc7XG4gICAgICAgICAgICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAgICAgICAgICAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gICAgICAgICAgICAgIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgICAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgkZXJyb3JLZXl3b3JkIHx8ICd0eXBlJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyB0eXBlOiBcXCcnO1xuICAgICAgICAgICAgICAgIGlmICgkdHlwZUlzQXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAnJyArICgkdHlwZVNjaGVtYS5qb2luKFwiLFwiKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAnJyArICgkdHlwZVNjaGVtYSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91dCArPSAnXFwnIH0gJztcbiAgICAgICAgICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIGJlICc7XG4gICAgICAgICAgICAgICAgICBpZiAoJHR5cGVJc0FycmF5KSB7XG4gICAgICAgICAgICAgICAgICAgIG91dCArPSAnJyArICgkdHlwZVNjaGVtYS5qb2luKFwiLFwiKSk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJycgKyAoJHR5cGVTY2hlbWEpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgb3V0ICs9ICdcXCcgJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdmFyIF9fZXJyID0gb3V0O1xuICAgICAgICAgICAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgICAgICAgICAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgICAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyBpZiAoZXJyb3JzID09PSAnO1xuICAgICAgICAgICAgaWYgKCR0b3ApIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcwJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG91dCArPSAnZXJyc18nICsgKCRsdmwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICcpIHsgJztcbiAgICAgICAgICAgICRjbG9zaW5nQnJhY2VzMiArPSAnfSc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgJyArICgkY2xvc2luZ0JyYWNlczIpICsgJyAnO1xuICB9XG4gIGlmICgkdG9wKSB7XG4gICAgaWYgKCRhc3luYykge1xuICAgICAgb3V0ICs9ICcgaWYgKGVycm9ycyA9PT0gMCkgcmV0dXJuIGRhdGE7ICAgICAgICAgICAnO1xuICAgICAgb3V0ICs9ICcgZWxzZSB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKHZFcnJvcnMpOyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSB2RXJyb3JzOyAnO1xuICAgICAgb3V0ICs9ICcgcmV0dXJuIGVycm9ycyA9PT0gMDsgICAgICAgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfTsgcmV0dXJuIHZhbGlkYXRlOyc7XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcgdmFyICcgKyAoJHZhbGlkKSArICcgPSBlcnJvcnMgPT09IGVycnNfJyArICgkbHZsKSArICc7JztcbiAgfVxuXG4gIGZ1bmN0aW9uICRzaG91bGRVc2VHcm91cCgkcnVsZXNHcm91cCkge1xuICAgIHZhciBydWxlcyA9ICRydWxlc0dyb3VwLnJ1bGVzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspXG4gICAgICBpZiAoJHNob3VsZFVzZVJ1bGUocnVsZXNbaV0pKSByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGZ1bmN0aW9uICRzaG91bGRVc2VSdWxlKCRydWxlKSB7XG4gICAgcmV0dXJuIGl0LnNjaGVtYVskcnVsZS5rZXl3b3JkXSAhPT0gdW5kZWZpbmVkIHx8ICgkcnVsZS5pbXBsZW1lbnRzICYmICRydWxlSW1wbGVtZW50c1NvbWVLZXl3b3JkKCRydWxlKSk7XG4gIH1cblxuICBmdW5jdGlvbiAkcnVsZUltcGxlbWVudHNTb21lS2V5d29yZCgkcnVsZSkge1xuICAgIHZhciBpbXBsID0gJHJ1bGUuaW1wbGVtZW50cztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGltcGwubGVuZ3RoOyBpKyspXG4gICAgICBpZiAoaXQuc2NoZW1hW2ltcGxbaV1dICE9PSB1bmRlZmluZWQpIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciByZXNvbHZlID0gcmVxdWlyZSgnLi9yZXNvbHZlJylcbiAgLCB1dGlsID0gcmVxdWlyZSgnLi91dGlsJylcbiAgLCBlcnJvckNsYXNzZXMgPSByZXF1aXJlKCcuL2Vycm9yX2NsYXNzZXMnKVxuICAsIHN0YWJsZVN0cmluZ2lmeSA9IHJlcXVpcmUoJ2Zhc3QtanNvbi1zdGFibGUtc3RyaW5naWZ5Jyk7XG5cbnZhciB2YWxpZGF0ZUdlbmVyYXRvciA9IHJlcXVpcmUoJy4uL2RvdGpzL3ZhbGlkYXRlJyk7XG5cbi8qKlxuICogRnVuY3Rpb25zIGJlbG93IGFyZSB1c2VkIGluc2lkZSBjb21waWxlZCB2YWxpZGF0aW9ucyBmdW5jdGlvblxuICovXG5cbnZhciB1Y3MybGVuZ3RoID0gdXRpbC51Y3MybGVuZ3RoO1xudmFyIGVxdWFsID0gcmVxdWlyZSgnZmFzdC1kZWVwLWVxdWFsJyk7XG5cbi8vIHRoaXMgZXJyb3IgaXMgdGhyb3duIGJ5IGFzeW5jIHNjaGVtYXMgdG8gcmV0dXJuIHZhbGlkYXRpb24gZXJyb3JzIHZpYSBleGNlcHRpb25cbnZhciBWYWxpZGF0aW9uRXJyb3IgPSBlcnJvckNsYXNzZXMuVmFsaWRhdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBjb21waWxlO1xuXG5cbi8qKlxuICogQ29tcGlsZXMgc2NoZW1hIHRvIHZhbGlkYXRpb24gZnVuY3Rpb25cbiAqIEB0aGlzICAgQWp2XG4gKiBAcGFyYW0gIHtPYmplY3R9IHNjaGVtYSBzY2hlbWEgb2JqZWN0XG4gKiBAcGFyYW0gIHtPYmplY3R9IHJvb3Qgb2JqZWN0IHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJvb3Qgc2NoZW1hIGZvciB0aGlzIHNjaGVtYVxuICogQHBhcmFtICB7T2JqZWN0fSBsb2NhbFJlZnMgdGhlIGhhc2ggb2YgbG9jYWwgcmVmZXJlbmNlcyBpbnNpZGUgdGhlIHNjaGVtYSAoY3JlYXRlZCBieSByZXNvbHZlLmlkKSwgdXNlZCBmb3IgaW5saW5lIHJlc29sdXRpb25cbiAqIEBwYXJhbSAge1N0cmluZ30gYmFzZUlkIGJhc2UgSUQgZm9yIElEcyBpbiB0aGUgc2NoZW1hXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gdmFsaWRhdGlvbiBmdW5jdGlvblxuICovXG5mdW5jdGlvbiBjb21waWxlKHNjaGVtYSwgcm9vdCwgbG9jYWxSZWZzLCBiYXNlSWQpIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSwgZXZpbDogdHJ1ZSAqL1xuICAvKiBlc2xpbnQgbm8tc2hhZG93OiAwICovXG4gIHZhciBzZWxmID0gdGhpc1xuICAgICwgb3B0cyA9IHRoaXMuX29wdHNcbiAgICAsIHJlZlZhbCA9IFsgdW5kZWZpbmVkIF1cbiAgICAsIHJlZnMgPSB7fVxuICAgICwgcGF0dGVybnMgPSBbXVxuICAgICwgcGF0dGVybnNIYXNoID0ge31cbiAgICAsIGRlZmF1bHRzID0gW11cbiAgICAsIGRlZmF1bHRzSGFzaCA9IHt9XG4gICAgLCBjdXN0b21SdWxlcyA9IFtdO1xuXG4gIHJvb3QgPSByb290IHx8IHsgc2NoZW1hOiBzY2hlbWEsIHJlZlZhbDogcmVmVmFsLCByZWZzOiByZWZzIH07XG5cbiAgdmFyIGMgPSBjaGVja0NvbXBpbGluZy5jYWxsKHRoaXMsIHNjaGVtYSwgcm9vdCwgYmFzZUlkKTtcbiAgdmFyIGNvbXBpbGF0aW9uID0gdGhpcy5fY29tcGlsYXRpb25zW2MuaW5kZXhdO1xuICBpZiAoYy5jb21waWxpbmcpIHJldHVybiAoY29tcGlsYXRpb24uY2FsbFZhbGlkYXRlID0gY2FsbFZhbGlkYXRlKTtcblxuICB2YXIgZm9ybWF0cyA9IHRoaXMuX2Zvcm1hdHM7XG4gIHZhciBSVUxFUyA9IHRoaXMuUlVMRVM7XG5cbiAgdHJ5IHtcbiAgICB2YXIgdiA9IGxvY2FsQ29tcGlsZShzY2hlbWEsIHJvb3QsIGxvY2FsUmVmcywgYmFzZUlkKTtcbiAgICBjb21waWxhdGlvbi52YWxpZGF0ZSA9IHY7XG4gICAgdmFyIGN2ID0gY29tcGlsYXRpb24uY2FsbFZhbGlkYXRlO1xuICAgIGlmIChjdikge1xuICAgICAgY3Yuc2NoZW1hID0gdi5zY2hlbWE7XG4gICAgICBjdi5lcnJvcnMgPSBudWxsO1xuICAgICAgY3YucmVmcyA9IHYucmVmcztcbiAgICAgIGN2LnJlZlZhbCA9IHYucmVmVmFsO1xuICAgICAgY3Yucm9vdCA9IHYucm9vdDtcbiAgICAgIGN2LiRhc3luYyA9IHYuJGFzeW5jO1xuICAgICAgaWYgKG9wdHMuc291cmNlQ29kZSkgY3Yuc291cmNlID0gdi5zb3VyY2U7XG4gICAgfVxuICAgIHJldHVybiB2O1xuICB9IGZpbmFsbHkge1xuICAgIGVuZENvbXBpbGluZy5jYWxsKHRoaXMsIHNjaGVtYSwgcm9vdCwgYmFzZUlkKTtcbiAgfVxuXG4gIC8qIEB0aGlzICAgeyp9IC0gY3VzdG9tIGNvbnRleHQsIHNlZSBwYXNzQ29udGV4dCBvcHRpb24gKi9cbiAgZnVuY3Rpb24gY2FsbFZhbGlkYXRlKCkge1xuICAgIC8qIGpzaGludCB2YWxpZHRoaXM6IHRydWUgKi9cbiAgICB2YXIgdmFsaWRhdGUgPSBjb21waWxhdGlvbi52YWxpZGF0ZTtcbiAgICB2YXIgcmVzdWx0ID0gdmFsaWRhdGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICBjYWxsVmFsaWRhdGUuZXJyb3JzID0gdmFsaWRhdGUuZXJyb3JzO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBsb2NhbENvbXBpbGUoX3NjaGVtYSwgX3Jvb3QsIGxvY2FsUmVmcywgYmFzZUlkKSB7XG4gICAgdmFyIGlzUm9vdCA9ICFfcm9vdCB8fCAoX3Jvb3QgJiYgX3Jvb3Quc2NoZW1hID09IF9zY2hlbWEpO1xuICAgIGlmIChfcm9vdC5zY2hlbWEgIT0gcm9vdC5zY2hlbWEpXG4gICAgICByZXR1cm4gY29tcGlsZS5jYWxsKHNlbGYsIF9zY2hlbWEsIF9yb290LCBsb2NhbFJlZnMsIGJhc2VJZCk7XG5cbiAgICB2YXIgJGFzeW5jID0gX3NjaGVtYS4kYXN5bmMgPT09IHRydWU7XG5cbiAgICB2YXIgc291cmNlQ29kZSA9IHZhbGlkYXRlR2VuZXJhdG9yKHtcbiAgICAgIGlzVG9wOiB0cnVlLFxuICAgICAgc2NoZW1hOiBfc2NoZW1hLFxuICAgICAgaXNSb290OiBpc1Jvb3QsXG4gICAgICBiYXNlSWQ6IGJhc2VJZCxcbiAgICAgIHJvb3Q6IF9yb290LFxuICAgICAgc2NoZW1hUGF0aDogJycsXG4gICAgICBlcnJTY2hlbWFQYXRoOiAnIycsXG4gICAgICBlcnJvclBhdGg6ICdcIlwiJyxcbiAgICAgIE1pc3NpbmdSZWZFcnJvcjogZXJyb3JDbGFzc2VzLk1pc3NpbmdSZWYsXG4gICAgICBSVUxFUzogUlVMRVMsXG4gICAgICB2YWxpZGF0ZTogdmFsaWRhdGVHZW5lcmF0b3IsXG4gICAgICB1dGlsOiB1dGlsLFxuICAgICAgcmVzb2x2ZTogcmVzb2x2ZSxcbiAgICAgIHJlc29sdmVSZWY6IHJlc29sdmVSZWYsXG4gICAgICB1c2VQYXR0ZXJuOiB1c2VQYXR0ZXJuLFxuICAgICAgdXNlRGVmYXVsdDogdXNlRGVmYXVsdCxcbiAgICAgIHVzZUN1c3RvbVJ1bGU6IHVzZUN1c3RvbVJ1bGUsXG4gICAgICBvcHRzOiBvcHRzLFxuICAgICAgZm9ybWF0czogZm9ybWF0cyxcbiAgICAgIGxvZ2dlcjogc2VsZi5sb2dnZXIsXG4gICAgICBzZWxmOiBzZWxmXG4gICAgfSk7XG5cbiAgICBzb3VyY2VDb2RlID0gdmFycyhyZWZWYWwsIHJlZlZhbENvZGUpICsgdmFycyhwYXR0ZXJucywgcGF0dGVybkNvZGUpXG4gICAgICAgICAgICAgICAgICAgKyB2YXJzKGRlZmF1bHRzLCBkZWZhdWx0Q29kZSkgKyB2YXJzKGN1c3RvbVJ1bGVzLCBjdXN0b21SdWxlQ29kZSlcbiAgICAgICAgICAgICAgICAgICArIHNvdXJjZUNvZGU7XG5cbiAgICBpZiAob3B0cy5wcm9jZXNzQ29kZSkgc291cmNlQ29kZSA9IG9wdHMucHJvY2Vzc0NvZGUoc291cmNlQ29kZSwgX3NjaGVtYSk7XG4gICAgLy8gY29uc29sZS5sb2coJ1xcblxcblxcbiAqKiogXFxuJywgSlNPTi5zdHJpbmdpZnkoc291cmNlQ29kZSkpO1xuICAgIHZhciB2YWxpZGF0ZTtcbiAgICB0cnkge1xuICAgICAgdmFyIG1ha2VWYWxpZGF0ZSA9IG5ldyBGdW5jdGlvbihcbiAgICAgICAgJ3NlbGYnLFxuICAgICAgICAnUlVMRVMnLFxuICAgICAgICAnZm9ybWF0cycsXG4gICAgICAgICdyb290JyxcbiAgICAgICAgJ3JlZlZhbCcsXG4gICAgICAgICdkZWZhdWx0cycsXG4gICAgICAgICdjdXN0b21SdWxlcycsXG4gICAgICAgICdlcXVhbCcsXG4gICAgICAgICd1Y3MybGVuZ3RoJyxcbiAgICAgICAgJ1ZhbGlkYXRpb25FcnJvcicsXG4gICAgICAgIHNvdXJjZUNvZGVcbiAgICAgICk7XG5cbiAgICAgIHZhbGlkYXRlID0gbWFrZVZhbGlkYXRlKFxuICAgICAgICBzZWxmLFxuICAgICAgICBSVUxFUyxcbiAgICAgICAgZm9ybWF0cyxcbiAgICAgICAgcm9vdCxcbiAgICAgICAgcmVmVmFsLFxuICAgICAgICBkZWZhdWx0cyxcbiAgICAgICAgY3VzdG9tUnVsZXMsXG4gICAgICAgIGVxdWFsLFxuICAgICAgICB1Y3MybGVuZ3RoLFxuICAgICAgICBWYWxpZGF0aW9uRXJyb3JcbiAgICAgICk7XG5cbiAgICAgIHJlZlZhbFswXSA9IHZhbGlkYXRlO1xuICAgIH0gY2F0Y2goZSkge1xuICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoJ0Vycm9yIGNvbXBpbGluZyBzY2hlbWEsIGZ1bmN0aW9uIGNvZGU6Jywgc291cmNlQ29kZSk7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cblxuICAgIHZhbGlkYXRlLnNjaGVtYSA9IF9zY2hlbWE7XG4gICAgdmFsaWRhdGUuZXJyb3JzID0gbnVsbDtcbiAgICB2YWxpZGF0ZS5yZWZzID0gcmVmcztcbiAgICB2YWxpZGF0ZS5yZWZWYWwgPSByZWZWYWw7XG4gICAgdmFsaWRhdGUucm9vdCA9IGlzUm9vdCA/IHZhbGlkYXRlIDogX3Jvb3Q7XG4gICAgaWYgKCRhc3luYykgdmFsaWRhdGUuJGFzeW5jID0gdHJ1ZTtcbiAgICBpZiAob3B0cy5zb3VyY2VDb2RlID09PSB0cnVlKSB7XG4gICAgICB2YWxpZGF0ZS5zb3VyY2UgPSB7XG4gICAgICAgIGNvZGU6IHNvdXJjZUNvZGUsXG4gICAgICAgIHBhdHRlcm5zOiBwYXR0ZXJucyxcbiAgICAgICAgZGVmYXVsdHM6IGRlZmF1bHRzXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc29sdmVSZWYoYmFzZUlkLCByZWYsIGlzUm9vdCkge1xuICAgIHJlZiA9IHJlc29sdmUudXJsKGJhc2VJZCwgcmVmKTtcbiAgICB2YXIgcmVmSW5kZXggPSByZWZzW3JlZl07XG4gICAgdmFyIF9yZWZWYWwsIHJlZkNvZGU7XG4gICAgaWYgKHJlZkluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIF9yZWZWYWwgPSByZWZWYWxbcmVmSW5kZXhdO1xuICAgICAgcmVmQ29kZSA9ICdyZWZWYWxbJyArIHJlZkluZGV4ICsgJ10nO1xuICAgICAgcmV0dXJuIHJlc29sdmVkUmVmKF9yZWZWYWwsIHJlZkNvZGUpO1xuICAgIH1cbiAgICBpZiAoIWlzUm9vdCAmJiByb290LnJlZnMpIHtcbiAgICAgIHZhciByb290UmVmSWQgPSByb290LnJlZnNbcmVmXTtcbiAgICAgIGlmIChyb290UmVmSWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBfcmVmVmFsID0gcm9vdC5yZWZWYWxbcm9vdFJlZklkXTtcbiAgICAgICAgcmVmQ29kZSA9IGFkZExvY2FsUmVmKHJlZiwgX3JlZlZhbCk7XG4gICAgICAgIHJldHVybiByZXNvbHZlZFJlZihfcmVmVmFsLCByZWZDb2RlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZWZDb2RlID0gYWRkTG9jYWxSZWYocmVmKTtcbiAgICB2YXIgdiA9IHJlc29sdmUuY2FsbChzZWxmLCBsb2NhbENvbXBpbGUsIHJvb3QsIHJlZik7XG4gICAgaWYgKHYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIGxvY2FsU2NoZW1hID0gbG9jYWxSZWZzICYmIGxvY2FsUmVmc1tyZWZdO1xuICAgICAgaWYgKGxvY2FsU2NoZW1hKSB7XG4gICAgICAgIHYgPSByZXNvbHZlLmlubGluZVJlZihsb2NhbFNjaGVtYSwgb3B0cy5pbmxpbmVSZWZzKVxuICAgICAgICAgICAgPyBsb2NhbFNjaGVtYVxuICAgICAgICAgICAgOiBjb21waWxlLmNhbGwoc2VsZiwgbG9jYWxTY2hlbWEsIHJvb3QsIGxvY2FsUmVmcywgYmFzZUlkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZW1vdmVMb2NhbFJlZihyZWYpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXBsYWNlTG9jYWxSZWYocmVmLCB2KTtcbiAgICAgIHJldHVybiByZXNvbHZlZFJlZih2LCByZWZDb2RlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBhZGRMb2NhbFJlZihyZWYsIHYpIHtcbiAgICB2YXIgcmVmSWQgPSByZWZWYWwubGVuZ3RoO1xuICAgIHJlZlZhbFtyZWZJZF0gPSB2O1xuICAgIHJlZnNbcmVmXSA9IHJlZklkO1xuICAgIHJldHVybiAncmVmVmFsJyArIHJlZklkO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlTG9jYWxSZWYocmVmKSB7XG4gICAgZGVsZXRlIHJlZnNbcmVmXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlcGxhY2VMb2NhbFJlZihyZWYsIHYpIHtcbiAgICB2YXIgcmVmSWQgPSByZWZzW3JlZl07XG4gICAgcmVmVmFsW3JlZklkXSA9IHY7XG4gIH1cblxuICBmdW5jdGlvbiByZXNvbHZlZFJlZihyZWZWYWwsIGNvZGUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHJlZlZhbCA9PSAnb2JqZWN0JyB8fCB0eXBlb2YgcmVmVmFsID09ICdib29sZWFuJ1xuICAgICAgICAgICAgPyB7IGNvZGU6IGNvZGUsIHNjaGVtYTogcmVmVmFsLCBpbmxpbmU6IHRydWUgfVxuICAgICAgICAgICAgOiB7IGNvZGU6IGNvZGUsICRhc3luYzogcmVmVmFsICYmICEhcmVmVmFsLiRhc3luYyB9O1xuICB9XG5cbiAgZnVuY3Rpb24gdXNlUGF0dGVybihyZWdleFN0cikge1xuICAgIHZhciBpbmRleCA9IHBhdHRlcm5zSGFzaFtyZWdleFN0cl07XG4gICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGluZGV4ID0gcGF0dGVybnNIYXNoW3JlZ2V4U3RyXSA9IHBhdHRlcm5zLmxlbmd0aDtcbiAgICAgIHBhdHRlcm5zW2luZGV4XSA9IHJlZ2V4U3RyO1xuICAgIH1cbiAgICByZXR1cm4gJ3BhdHRlcm4nICsgaW5kZXg7XG4gIH1cblxuICBmdW5jdGlvbiB1c2VEZWZhdWx0KHZhbHVlKSB7XG4gICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgcmV0dXJuICcnICsgdmFsdWU7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICByZXR1cm4gdXRpbC50b1F1b3RlZFN0cmluZyh2YWx1ZSk7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiAnbnVsbCc7XG4gICAgICAgIHZhciB2YWx1ZVN0ciA9IHN0YWJsZVN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgICAgIHZhciBpbmRleCA9IGRlZmF1bHRzSGFzaFt2YWx1ZVN0cl07XG4gICAgICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaW5kZXggPSBkZWZhdWx0c0hhc2hbdmFsdWVTdHJdID0gZGVmYXVsdHMubGVuZ3RoO1xuICAgICAgICAgIGRlZmF1bHRzW2luZGV4XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnZGVmYXVsdCcgKyBpbmRleDtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB1c2VDdXN0b21SdWxlKHJ1bGUsIHNjaGVtYSwgcGFyZW50U2NoZW1hLCBpdCkge1xuICAgIGlmIChzZWxmLl9vcHRzLnZhbGlkYXRlU2NoZW1hICE9PSBmYWxzZSkge1xuICAgICAgdmFyIGRlcHMgPSBydWxlLmRlZmluaXRpb24uZGVwZW5kZW5jaWVzO1xuICAgICAgaWYgKGRlcHMgJiYgIWRlcHMuZXZlcnkoZnVuY3Rpb24oa2V5d29yZCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcmVudFNjaGVtYSwga2V5d29yZCk7XG4gICAgICB9KSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdwYXJlbnQgc2NoZW1hIG11c3QgaGF2ZSBhbGwgcmVxdWlyZWQga2V5d29yZHM6ICcgKyBkZXBzLmpvaW4oJywnKSk7XG5cbiAgICAgIHZhciB2YWxpZGF0ZVNjaGVtYSA9IHJ1bGUuZGVmaW5pdGlvbi52YWxpZGF0ZVNjaGVtYTtcbiAgICAgIGlmICh2YWxpZGF0ZVNjaGVtYSkge1xuICAgICAgICB2YXIgdmFsaWQgPSB2YWxpZGF0ZVNjaGVtYShzY2hlbWEpO1xuICAgICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgICAgdmFyIG1lc3NhZ2UgPSAna2V5d29yZCBzY2hlbWEgaXMgaW52YWxpZDogJyArIHNlbGYuZXJyb3JzVGV4dCh2YWxpZGF0ZVNjaGVtYS5lcnJvcnMpO1xuICAgICAgICAgIGlmIChzZWxmLl9vcHRzLnZhbGlkYXRlU2NoZW1hID09ICdsb2cnKSBzZWxmLmxvZ2dlci5lcnJvcihtZXNzYWdlKTtcbiAgICAgICAgICBlbHNlIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBjb21waWxlID0gcnVsZS5kZWZpbml0aW9uLmNvbXBpbGVcbiAgICAgICwgaW5saW5lID0gcnVsZS5kZWZpbml0aW9uLmlubGluZVxuICAgICAgLCBtYWNybyA9IHJ1bGUuZGVmaW5pdGlvbi5tYWNybztcblxuICAgIHZhciB2YWxpZGF0ZTtcbiAgICBpZiAoY29tcGlsZSkge1xuICAgICAgdmFsaWRhdGUgPSBjb21waWxlLmNhbGwoc2VsZiwgc2NoZW1hLCBwYXJlbnRTY2hlbWEsIGl0KTtcbiAgICB9IGVsc2UgaWYgKG1hY3JvKSB7XG4gICAgICB2YWxpZGF0ZSA9IG1hY3JvLmNhbGwoc2VsZiwgc2NoZW1hLCBwYXJlbnRTY2hlbWEsIGl0KTtcbiAgICAgIGlmIChvcHRzLnZhbGlkYXRlU2NoZW1hICE9PSBmYWxzZSkgc2VsZi52YWxpZGF0ZVNjaGVtYSh2YWxpZGF0ZSwgdHJ1ZSk7XG4gICAgfSBlbHNlIGlmIChpbmxpbmUpIHtcbiAgICAgIHZhbGlkYXRlID0gaW5saW5lLmNhbGwoc2VsZiwgaXQsIHJ1bGUua2V5d29yZCwgc2NoZW1hLCBwYXJlbnRTY2hlbWEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWxpZGF0ZSA9IHJ1bGUuZGVmaW5pdGlvbi52YWxpZGF0ZTtcbiAgICAgIGlmICghdmFsaWRhdGUpIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGUgPT09IHVuZGVmaW5lZClcbiAgICAgIHRocm93IG5ldyBFcnJvcignY3VzdG9tIGtleXdvcmQgXCInICsgcnVsZS5rZXl3b3JkICsgJ1wiZmFpbGVkIHRvIGNvbXBpbGUnKTtcblxuICAgIHZhciBpbmRleCA9IGN1c3RvbVJ1bGVzLmxlbmd0aDtcbiAgICBjdXN0b21SdWxlc1tpbmRleF0gPSB2YWxpZGF0ZTtcblxuICAgIHJldHVybiB7XG4gICAgICBjb2RlOiAnY3VzdG9tUnVsZScgKyBpbmRleCxcbiAgICAgIHZhbGlkYXRlOiB2YWxpZGF0ZVxuICAgIH07XG4gIH1cbn1cblxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgc2NoZW1hIGlzIGN1cnJlbnRseSBjb21waWxlZFxuICogQHRoaXMgICBBanZcbiAqIEBwYXJhbSAge09iamVjdH0gc2NoZW1hIHNjaGVtYSB0byBjb21waWxlXG4gKiBAcGFyYW0gIHtPYmplY3R9IHJvb3Qgcm9vdCBvYmplY3RcbiAqIEBwYXJhbSAge1N0cmluZ30gYmFzZUlkIGJhc2Ugc2NoZW1hIElEXG4gKiBAcmV0dXJuIHtPYmplY3R9IG9iamVjdCB3aXRoIHByb3BlcnRpZXMgXCJpbmRleFwiIChjb21waWxhdGlvbiBpbmRleCkgYW5kIFwiY29tcGlsaW5nXCIgKGJvb2xlYW4pXG4gKi9cbmZ1bmN0aW9uIGNoZWNrQ29tcGlsaW5nKHNjaGVtYSwgcm9vdCwgYmFzZUlkKSB7XG4gIC8qIGpzaGludCB2YWxpZHRoaXM6IHRydWUgKi9cbiAgdmFyIGluZGV4ID0gY29tcEluZGV4LmNhbGwodGhpcywgc2NoZW1hLCByb290LCBiYXNlSWQpO1xuICBpZiAoaW5kZXggPj0gMCkgcmV0dXJuIHsgaW5kZXg6IGluZGV4LCBjb21waWxpbmc6IHRydWUgfTtcbiAgaW5kZXggPSB0aGlzLl9jb21waWxhdGlvbnMubGVuZ3RoO1xuICB0aGlzLl9jb21waWxhdGlvbnNbaW5kZXhdID0ge1xuICAgIHNjaGVtYTogc2NoZW1hLFxuICAgIHJvb3Q6IHJvb3QsXG4gICAgYmFzZUlkOiBiYXNlSWRcbiAgfTtcbiAgcmV0dXJuIHsgaW5kZXg6IGluZGV4LCBjb21waWxpbmc6IGZhbHNlIH07XG59XG5cblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBzY2hlbWEgZnJvbSB0aGUgY3VycmVudGx5IGNvbXBpbGVkIGxpc3RcbiAqIEB0aGlzICAgQWp2XG4gKiBAcGFyYW0gIHtPYmplY3R9IHNjaGVtYSBzY2hlbWEgdG8gY29tcGlsZVxuICogQHBhcmFtICB7T2JqZWN0fSByb290IHJvb3Qgb2JqZWN0XG4gKiBAcGFyYW0gIHtTdHJpbmd9IGJhc2VJZCBiYXNlIHNjaGVtYSBJRFxuICovXG5mdW5jdGlvbiBlbmRDb21waWxpbmcoc2NoZW1hLCByb290LCBiYXNlSWQpIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICB2YXIgaSA9IGNvbXBJbmRleC5jYWxsKHRoaXMsIHNjaGVtYSwgcm9vdCwgYmFzZUlkKTtcbiAgaWYgKGkgPj0gMCkgdGhpcy5fY29tcGlsYXRpb25zLnNwbGljZShpLCAxKTtcbn1cblxuXG4vKipcbiAqIEluZGV4IG9mIHNjaGVtYSBjb21waWxhdGlvbiBpbiB0aGUgY3VycmVudGx5IGNvbXBpbGVkIGxpc3RcbiAqIEB0aGlzICAgQWp2XG4gKiBAcGFyYW0gIHtPYmplY3R9IHNjaGVtYSBzY2hlbWEgdG8gY29tcGlsZVxuICogQHBhcmFtICB7T2JqZWN0fSByb290IHJvb3Qgb2JqZWN0XG4gKiBAcGFyYW0gIHtTdHJpbmd9IGJhc2VJZCBiYXNlIHNjaGVtYSBJRFxuICogQHJldHVybiB7SW50ZWdlcn0gY29tcGlsYXRpb24gaW5kZXhcbiAqL1xuZnVuY3Rpb24gY29tcEluZGV4KHNjaGVtYSwgcm9vdCwgYmFzZUlkKSB7XG4gIC8qIGpzaGludCB2YWxpZHRoaXM6IHRydWUgKi9cbiAgZm9yICh2YXIgaT0wOyBpPHRoaXMuX2NvbXBpbGF0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjID0gdGhpcy5fY29tcGlsYXRpb25zW2ldO1xuICAgIGlmIChjLnNjaGVtYSA9PSBzY2hlbWEgJiYgYy5yb290ID09IHJvb3QgJiYgYy5iYXNlSWQgPT0gYmFzZUlkKSByZXR1cm4gaTtcbiAgfVxuICByZXR1cm4gLTE7XG59XG5cblxuZnVuY3Rpb24gcGF0dGVybkNvZGUoaSwgcGF0dGVybnMpIHtcbiAgcmV0dXJuICd2YXIgcGF0dGVybicgKyBpICsgJyA9IG5ldyBSZWdFeHAoJyArIHV0aWwudG9RdW90ZWRTdHJpbmcocGF0dGVybnNbaV0pICsgJyk7Jztcbn1cblxuXG5mdW5jdGlvbiBkZWZhdWx0Q29kZShpKSB7XG4gIHJldHVybiAndmFyIGRlZmF1bHQnICsgaSArICcgPSBkZWZhdWx0c1snICsgaSArICddOyc7XG59XG5cblxuZnVuY3Rpb24gcmVmVmFsQ29kZShpLCByZWZWYWwpIHtcbiAgcmV0dXJuIHJlZlZhbFtpXSA9PT0gdW5kZWZpbmVkID8gJycgOiAndmFyIHJlZlZhbCcgKyBpICsgJyA9IHJlZlZhbFsnICsgaSArICddOyc7XG59XG5cblxuZnVuY3Rpb24gY3VzdG9tUnVsZUNvZGUoaSkge1xuICByZXR1cm4gJ3ZhciBjdXN0b21SdWxlJyArIGkgKyAnID0gY3VzdG9tUnVsZXNbJyArIGkgKyAnXTsnO1xufVxuXG5cbmZ1bmN0aW9uIHZhcnMoYXJyLCBzdGF0ZW1lbnQpIHtcbiAgaWYgKCFhcnIubGVuZ3RoKSByZXR1cm4gJyc7XG4gIHZhciBjb2RlID0gJyc7XG4gIGZvciAodmFyIGk9MDsgaTxhcnIubGVuZ3RoOyBpKyspXG4gICAgY29kZSArPSBzdGF0ZW1lbnQoaSwgYXJyKTtcbiAgcmV0dXJuIGNvZGU7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cblxudmFyIENhY2hlID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBDYWNoZSgpIHtcbiAgdGhpcy5fY2FjaGUgPSB7fTtcbn07XG5cblxuQ2FjaGUucHJvdG90eXBlLnB1dCA9IGZ1bmN0aW9uIENhY2hlX3B1dChrZXksIHZhbHVlKSB7XG4gIHRoaXMuX2NhY2hlW2tleV0gPSB2YWx1ZTtcbn07XG5cblxuQ2FjaGUucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIENhY2hlX2dldChrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX2NhY2hlW2tleV07XG59O1xuXG5cbkNhY2hlLnByb3RvdHlwZS5kZWwgPSBmdW5jdGlvbiBDYWNoZV9kZWwoa2V5KSB7XG4gIGRlbGV0ZSB0aGlzLl9jYWNoZVtrZXldO1xufTtcblxuXG5DYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiBDYWNoZV9jbGVhcigpIHtcbiAgdGhpcy5fY2FjaGUgPSB7fTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbnZhciBEQVRFID0gL14oXFxkXFxkXFxkXFxkKS0oXFxkXFxkKS0oXFxkXFxkKSQvO1xudmFyIERBWVMgPSBbMCwzMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV07XG52YXIgVElNRSA9IC9eKFxcZFxcZCk6KFxcZFxcZCk6KFxcZFxcZCkoXFwuXFxkKyk/KHp8WystXVxcZFxcZCg/Ojo/XFxkXFxkKT8pPyQvaTtcbnZhciBIT1NUTkFNRSA9IC9eKD89LnsxLDI1M31cXC4/JClbYS16MC05XSg/OlthLXowLTktXXswLDYxfVthLXowLTldKT8oPzpcXC5bYS16MC05XSg/OlstMC05YS16XXswLDYxfVswLTlhLXpdKT8pKlxcLj8kL2k7XG52YXIgVVJJID0gL14oPzpbYS16XVthLXowLTkrXFwtLl0qOikoPzpcXC8/XFwvKD86KD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9Ol18JVswLTlhLWZdezJ9KSpAKT8oPzpcXFsoPzooPzooPzooPzpbMC05YS1mXXsxLDR9Oil7Nn18OjooPzpbMC05YS1mXXsxLDR9Oil7NX18KD86WzAtOWEtZl17MSw0fSk/OjooPzpbMC05YS1mXXsxLDR9Oil7NH18KD86KD86WzAtOWEtZl17MSw0fTopezAsMX1bMC05YS1mXXsxLDR9KT86Oig/OlswLTlhLWZdezEsNH06KXszfXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCwyfVswLTlhLWZdezEsNH0pPzo6KD86WzAtOWEtZl17MSw0fTopezJ9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDN9WzAtOWEtZl17MSw0fSk/OjpbMC05YS1mXXsxLDR9OnwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCw0fVswLTlhLWZdezEsNH0pPzo6KSg/OlswLTlhLWZdezEsNH06WzAtOWEtZl17MSw0fXwoPzooPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPykpfCg/Oig/OlswLTlhLWZdezEsNH06KXswLDV9WzAtOWEtZl17MSw0fSk/OjpbMC05YS1mXXsxLDR9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDZ9WzAtOWEtZl17MSw0fSk/OjopfFtWdl1bMC05YS1mXStcXC5bYS16MC05XFwtLl9+ISQmJygpKissOz06XSspXFxdfCg/Oig/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPylcXC4pezN9KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KXwoPzpbYS16MC05XFwtLl9+ISQmJygpKissOz1dfCVbMC05YS1mXXsyfSkqKSg/OjpcXGQqKT8oPzpcXC8oPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06QF18JVswLTlhLWZdezJ9KSopKnxcXC8oPzooPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06QF18JVswLTlhLWZdezJ9KSsoPzpcXC8oPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06QF18JVswLTlhLWZdezJ9KSopKik/fCg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKyg/OlxcLyg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKikqKSg/OlxcPyg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpALz9dfCVbMC05YS1mXXsyfSkqKT8oPzojKD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9OkAvP118JVswLTlhLWZdezJ9KSopPyQvaTtcbnZhciBVUklSRUYgPSAvXig/OlthLXpdW2EtejAtOStcXC0uXSo6KT8oPzpcXC8/XFwvKD86KD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9Ol18JVswLTlhLWZdezJ9KSpAKT8oPzpcXFsoPzooPzooPzooPzpbMC05YS1mXXsxLDR9Oil7Nn18OjooPzpbMC05YS1mXXsxLDR9Oil7NX18KD86WzAtOWEtZl17MSw0fSk/OjooPzpbMC05YS1mXXsxLDR9Oil7NH18KD86KD86WzAtOWEtZl17MSw0fTopezAsMX1bMC05YS1mXXsxLDR9KT86Oig/OlswLTlhLWZdezEsNH06KXszfXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCwyfVswLTlhLWZdezEsNH0pPzo6KD86WzAtOWEtZl17MSw0fTopezJ9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDN9WzAtOWEtZl17MSw0fSk/OjpbMC05YS1mXXsxLDR9OnwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCw0fVswLTlhLWZdezEsNH0pPzo6KSg/OlswLTlhLWZdezEsNH06WzAtOWEtZl17MSw0fXwoPzooPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPykpfCg/Oig/OlswLTlhLWZdezEsNH06KXswLDV9WzAtOWEtZl17MSw0fSk/OjpbMC05YS1mXXsxLDR9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDZ9WzAtOWEtZl17MSw0fSk/OjopfFtWdl1bMC05YS1mXStcXC5bYS16MC05XFwtLl9+ISQmJygpKissOz06XSspXFxdfCg/Oig/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPylcXC4pezN9KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KXwoPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PV18JVswLTlhLWZdezJ9KSopKD86OlxcZCopPyg/OlxcLyg/OlthLXowLTlcXC0uX34hJCYnXCIoKSorLDs9OkBdfCVbMC05YS1mXXsyfSkqKSp8XFwvKD86KD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz06QF18JVswLTlhLWZdezJ9KSsoPzpcXC8oPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKikqKT98KD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz06QF18JVswLTlhLWZdezJ9KSsoPzpcXC8oPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKikqKT8oPzpcXD8oPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PTpALz9dfCVbMC05YS1mXXsyfSkqKT8oPzojKD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz06QC8/XXwlWzAtOWEtZl17Mn0pKik/JC9pO1xuLy8gdXJpLXRlbXBsYXRlOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjU3MFxudmFyIFVSSVRFTVBMQVRFID0gL14oPzooPzpbXlxceDAwLVxceDIwXCInPD4lXFxcXF5ge3x9XXwlWzAtOWEtZl17Mn0pfFxce1srIy4vOz8mPSwhQHxdPyg/OlthLXowLTlfXXwlWzAtOWEtZl17Mn0pKyg/OjpbMS05XVswLTldezAsM318XFwqKT8oPzosKD86W2EtejAtOV9dfCVbMC05YS1mXXsyfSkrKD86OlsxLTldWzAtOV17MCwzfXxcXCopPykqXFx9KSokL2k7XG4vLyBGb3IgdGhlIHNvdXJjZTogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vZHBlcmluaS83MjkyOTRcbi8vIEZvciB0ZXN0IGNhc2VzOiBodHRwczovL21hdGhpYXNieW5lbnMuYmUvZGVtby91cmwtcmVnZXhcbi8vIEB0b2RvIERlbGV0ZSBjdXJyZW50IFVSTCBpbiBmYXZvdXIgb2YgdGhlIGNvbW1lbnRlZCBvdXQgVVJMIHJ1bGUgd2hlbiB0aGlzIGlzc3VlIGlzIGZpeGVkIGh0dHBzOi8vZ2l0aHViLmNvbS9lc2xpbnQvZXNsaW50L2lzc3Vlcy83OTgzLlxuLy8gdmFyIFVSTCA9IC9eKD86KD86aHR0cHM/fGZ0cCk6XFwvXFwvKSg/OlxcUysoPzo6XFxTKik/QCk/KD86KD8hMTAoPzpcXC5cXGR7MSwzfSl7M30pKD8hMTI3KD86XFwuXFxkezEsM30pezN9KSg/ITE2OVxcLjI1NCg/OlxcLlxcZHsxLDN9KXsyfSkoPyExOTJcXC4xNjgoPzpcXC5cXGR7MSwzfSl7Mn0pKD8hMTcyXFwuKD86MVs2LTldfDJcXGR8M1swLTFdKSg/OlxcLlxcZHsxLDN9KXsyfSkoPzpbMS05XVxcZD98MVxcZFxcZHwyWzAxXVxcZHwyMlswLTNdKSg/OlxcLig/OjE/XFxkezEsMn18MlswLTRdXFxkfDI1WzAtNV0pKXsyfSg/OlxcLig/OlsxLTldXFxkP3wxXFxkXFxkfDJbMC00XVxcZHwyNVswLTRdKSl8KD86KD86W2EtelxcdXswMGExfS1cXHV7ZmZmZn0wLTldKy0pKlthLXpcXHV7MDBhMX0tXFx1e2ZmZmZ9MC05XSspKD86XFwuKD86W2EtelxcdXswMGExfS1cXHV7ZmZmZn0wLTldKy0pKlthLXpcXHV7MDBhMX0tXFx1e2ZmZmZ9MC05XSspKig/OlxcLig/OlthLXpcXHV7MDBhMX0tXFx1e2ZmZmZ9XXsyLH0pKSkoPzo6XFxkezIsNX0pPyg/OlxcL1teXFxzXSopPyQvaXU7XG52YXIgVVJMID0gL14oPzooPzpodHRwW3NcXHUwMTdGXT98ZnRwKTpcXC9cXC8pKD86KD86W1xcMC1cXHgwOFxceDBFLVxceDFGIS1cXHg5RlxceEExLVxcdTE2N0ZcXHUxNjgxLVxcdTFGRkZcXHUyMDBCLVxcdTIwMjdcXHUyMDJBLVxcdTIwMkVcXHUyMDMwLVxcdTIwNUVcXHUyMDYwLVxcdTJGRkZcXHUzMDAxLVxcdUQ3RkZcXHVFMDAwLVxcdUZFRkVcXHVGRjAwLVxcdUZGRkZdfFtcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl18W1xcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSl8KD86W15cXHVEODAwLVxcdURCRkZdfF4pW1xcdURDMDAtXFx1REZGRl0pKyg/OjooPzpbXFwwLVxceDA4XFx4MEUtXFx4MUYhLVxceDlGXFx4QTEtXFx1MTY3RlxcdTE2ODEtXFx1MUZGRlxcdTIwMEItXFx1MjAyN1xcdTIwMkEtXFx1MjAyRVxcdTIwMzAtXFx1MjA1RVxcdTIwNjAtXFx1MkZGRlxcdTMwMDEtXFx1RDdGRlxcdUUwMDAtXFx1RkVGRVxcdUZGMDAtXFx1RkZGRl18W1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXXxbXFx1RDgwMC1cXHVEQkZGXSg/IVtcXHVEQzAwLVxcdURGRkZdKXwoPzpbXlxcdUQ4MDAtXFx1REJGRl18XilbXFx1REMwMC1cXHVERkZGXSkqKT9AKT8oPzooPyExMCg/OlxcLlswLTldezEsM30pezN9KSg/ITEyNyg/OlxcLlswLTldezEsM30pezN9KSg/ITE2OVxcLjI1NCg/OlxcLlswLTldezEsM30pezJ9KSg/ITE5MlxcLjE2OCg/OlxcLlswLTldezEsM30pezJ9KSg/ITE3MlxcLig/OjFbNi05XXwyWzAtOV18M1swMV0pKD86XFwuWzAtOV17MSwzfSl7Mn0pKD86WzEtOV1bMC05XT98MVswLTldWzAtOV18MlswMV1bMC05XXwyMlswLTNdKSg/OlxcLig/OjE/WzAtOV17MSwyfXwyWzAtNF1bMC05XXwyNVswLTVdKSl7Mn0oPzpcXC4oPzpbMS05XVswLTldP3wxWzAtOV1bMC05XXwyWzAtNF1bMC05XXwyNVswLTRdKSl8KD86KD86KD86WzAtOWEtelxceEExLVxcdUQ3RkZcXHVFMDAwLVxcdUZGRkZdfFtcXHVEODAwLVxcdURCRkZdKD8hW1xcdURDMDAtXFx1REZGRl0pfCg/OlteXFx1RDgwMC1cXHVEQkZGXXxeKVtcXHVEQzAwLVxcdURGRkZdKSstKSooPzpbMC05YS16XFx4QTEtXFx1RDdGRlxcdUUwMDAtXFx1RkZGRl18W1xcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSl8KD86W15cXHVEODAwLVxcdURCRkZdfF4pW1xcdURDMDAtXFx1REZGRl0pKykoPzpcXC4oPzooPzpbMC05YS16XFx4QTEtXFx1RDdGRlxcdUUwMDAtXFx1RkZGRl18W1xcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSl8KD86W15cXHVEODAwLVxcdURCRkZdfF4pW1xcdURDMDAtXFx1REZGRl0pKy0pKig/OlswLTlhLXpcXHhBMS1cXHVEN0ZGXFx1RTAwMC1cXHVGRkZGXXxbXFx1RDgwMC1cXHVEQkZGXSg/IVtcXHVEQzAwLVxcdURGRkZdKXwoPzpbXlxcdUQ4MDAtXFx1REJGRl18XilbXFx1REMwMC1cXHVERkZGXSkrKSooPzpcXC4oPzooPzpbYS16XFx4QTEtXFx1RDdGRlxcdUUwMDAtXFx1RkZGRl18W1xcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSl8KD86W15cXHVEODAwLVxcdURCRkZdfF4pW1xcdURDMDAtXFx1REZGRl0pezIsfSkpKSg/OjpbMC05XXsyLDV9KT8oPzpcXC8oPzpbXFwwLVxceDA4XFx4MEUtXFx4MUYhLVxceDlGXFx4QTEtXFx1MTY3RlxcdTE2ODEtXFx1MUZGRlxcdTIwMEItXFx1MjAyN1xcdTIwMkEtXFx1MjAyRVxcdTIwMzAtXFx1MjA1RVxcdTIwNjAtXFx1MkZGRlxcdTMwMDEtXFx1RDdGRlxcdUUwMDAtXFx1RkVGRVxcdUZGMDAtXFx1RkZGRl18W1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXXxbXFx1RDgwMC1cXHVEQkZGXSg/IVtcXHVEQzAwLVxcdURGRkZdKXwoPzpbXlxcdUQ4MDAtXFx1REJGRl18XilbXFx1REMwMC1cXHVERkZGXSkqKT8kL2k7XG52YXIgVVVJRCA9IC9eKD86dXJuOnV1aWQ6KT9bMC05YS1mXXs4fS0oPzpbMC05YS1mXXs0fS0pezN9WzAtOWEtZl17MTJ9JC9pO1xudmFyIEpTT05fUE9JTlRFUiA9IC9eKD86XFwvKD86W15+L118fjB8fjEpKikqJC87XG52YXIgSlNPTl9QT0lOVEVSX1VSSV9GUkFHTUVOVCA9IC9eIyg/OlxcLyg/OlthLXowLTlfXFwtLiEkJicoKSorLDs6PUBdfCVbMC05YS1mXXsyfXx+MHx+MSkqKSokL2k7XG52YXIgUkVMQVRJVkVfSlNPTl9QT0lOVEVSID0gL14oPzowfFsxLTldWzAtOV0qKSg/OiN8KD86XFwvKD86W15+L118fjB8fjEpKikqKSQvO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZm9ybWF0cztcblxuZnVuY3Rpb24gZm9ybWF0cyhtb2RlKSB7XG4gIG1vZGUgPSBtb2RlID09ICdmdWxsJyA/ICdmdWxsJyA6ICdmYXN0JztcbiAgcmV0dXJuIHV0aWwuY29weShmb3JtYXRzW21vZGVdKTtcbn1cblxuXG5mb3JtYXRzLmZhc3QgPSB7XG4gIC8vIGRhdGU6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkjc2VjdGlvbi01LjZcbiAgZGF0ZTogL15cXGRcXGRcXGRcXGQtWzAtMV1cXGQtWzAtM11cXGQkLyxcbiAgLy8gZGF0ZS10aW1lOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzMzM5I3NlY3Rpb24tNS42XG4gIHRpbWU6IC9eKD86WzAtMl1cXGQ6WzAtNV1cXGQ6WzAtNV1cXGR8MjM6NTk6NjApKD86XFwuXFxkKyk/KD86enxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPyk/JC9pLFxuICAnZGF0ZS10aW1lJzogL15cXGRcXGRcXGRcXGQtWzAtMV1cXGQtWzAtM11cXGRbdFxcc10oPzpbMC0yXVxcZDpbMC01XVxcZDpbMC01XVxcZHwyMzo1OTo2MCkoPzpcXC5cXGQrKT8oPzp6fFsrLV1cXGRcXGQoPzo6P1xcZFxcZCk/KSQvaSxcbiAgLy8gdXJpOiBodHRwczovL2dpdGh1Yi5jb20vbWFmaW50b3NoL2lzLW15LWpzb24tdmFsaWQvYmxvYi9tYXN0ZXIvZm9ybWF0cy5qc1xuICB1cmk6IC9eKD86W2Etel1bYS16MC05K1xcLS5dKjopKD86XFwvP1xcLyk/W15cXHNdKiQvaSxcbiAgJ3VyaS1yZWZlcmVuY2UnOiAvXig/Oig/OlthLXpdW2EtejAtOStcXC0uXSo6KT9cXC8/XFwvKT8oPzpbXlxcXFxcXHMjXVteXFxzI10qKT8oPzojW15cXFxcXFxzXSopPyQvaSxcbiAgJ3VyaS10ZW1wbGF0ZSc6IFVSSVRFTVBMQVRFLFxuICB1cmw6IFVSTCxcbiAgLy8gZW1haWwgKHNvdXJjZXMgZnJvbSBqc2VuIHZhbGlkYXRvcik6XG4gIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjAxMzIzL3VzaW5nLWEtcmVndWxhci1leHByZXNzaW9uLXRvLXZhbGlkYXRlLWFuLWVtYWlsLWFkZHJlc3MjYW5zd2VyLTg4MjkzNjNcbiAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvZm9ybXMuaHRtbCN2YWxpZC1lLW1haWwtYWRkcmVzcyAoc2VhcmNoIGZvciAnd2lsbGZ1bCB2aW9sYXRpb24nKVxuICBlbWFpbDogL15bYS16MC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dK0BbYS16MC05XSg/OlthLXowLTktXXswLDYxfVthLXowLTldKT8oPzpcXC5bYS16MC05XSg/OlthLXowLTktXXswLDYxfVthLXowLTldKT8pKiQvaSxcbiAgaG9zdG5hbWU6IEhPU1ROQU1FLFxuICAvLyBvcHRpbWl6ZWQgaHR0cHM6Ly93d3cuc2FmYXJpYm9va3NvbmxpbmUuY29tL2xpYnJhcnkvdmlldy9yZWd1bGFyLWV4cHJlc3Npb25zLWNvb2tib29rLzk3ODA1OTY4MDI4MzcvY2gwN3MxNi5odG1sXG4gIGlwdjQ6IC9eKD86KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KVxcLil7M30oPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pJC8sXG4gIC8vIG9wdGltaXplZCBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzUzNDk3L3JlZ3VsYXItZXhwcmVzc2lvbi10aGF0LW1hdGNoZXMtdmFsaWQtaXB2Ni1hZGRyZXNzZXNcbiAgaXB2NjogL15cXHMqKD86KD86KD86WzAtOWEtZl17MSw0fTopezd9KD86WzAtOWEtZl17MSw0fXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezZ9KD86OlswLTlhLWZdezEsNH18KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSl8OikpfCg/Oig/OlswLTlhLWZdezEsNH06KXs1fSg/Oig/Oig/OjpbMC05YS1mXXsxLDR9KXsxLDJ9KXw6KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSl8OikpfCg/Oig/OlswLTlhLWZdezEsNH06KXs0fSg/Oig/Oig/OjpbMC05YS1mXXsxLDR9KXsxLDN9KXwoPzooPzo6WzAtOWEtZl17MSw0fSk/Oig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezN9KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsNH0pfCg/Oig/OjpbMC05YS1mXXsxLDR9KXswLDJ9Oig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezJ9KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsNX0pfCg/Oig/OjpbMC05YS1mXXsxLDR9KXswLDN9Oig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezF9KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsNn0pfCg/Oig/OjpbMC05YS1mXXsxLDR9KXswLDR9Oig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KD86Oig/Oig/Oig/OjpbMC05YS1mXXsxLDR9KXsxLDd9KXwoPzooPzo6WzAtOWEtZl17MSw0fSl7MCw1fTooPzooPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoPzpcXC4oPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KSl8OikpKSg/OiUuKyk/XFxzKiQvaSxcbiAgcmVnZXg6IHJlZ2V4LFxuICAvLyB1dWlkOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM0MTIyXG4gIHV1aWQ6IFVVSUQsXG4gIC8vIEpTT04tcG9pbnRlcjogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY5MDFcbiAgLy8gdXJpIGZyYWdtZW50OiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNhcHBlbmRpeC1BXG4gICdqc29uLXBvaW50ZXInOiBKU09OX1BPSU5URVIsXG4gICdqc29uLXBvaW50ZXItdXJpLWZyYWdtZW50JzogSlNPTl9QT0lOVEVSX1VSSV9GUkFHTUVOVCxcbiAgLy8gcmVsYXRpdmUgSlNPTi1wb2ludGVyOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1sdWZmLXJlbGF0aXZlLWpzb24tcG9pbnRlci0wMFxuICAncmVsYXRpdmUtanNvbi1wb2ludGVyJzogUkVMQVRJVkVfSlNPTl9QT0lOVEVSXG59O1xuXG5cbmZvcm1hdHMuZnVsbCA9IHtcbiAgZGF0ZTogZGF0ZSxcbiAgdGltZTogdGltZSxcbiAgJ2RhdGUtdGltZSc6IGRhdGVfdGltZSxcbiAgdXJpOiB1cmksXG4gICd1cmktcmVmZXJlbmNlJzogVVJJUkVGLFxuICAndXJpLXRlbXBsYXRlJzogVVJJVEVNUExBVEUsXG4gIHVybDogVVJMLFxuICBlbWFpbDogL15bYS16MC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKD86XFwuW2EtejAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKykqQCg/OlthLXowLTldKD86W2EtejAtOS1dKlthLXowLTldKT9cXC4pK1thLXowLTldKD86W2EtejAtOS1dKlthLXowLTldKT8kL2ksXG4gIGhvc3RuYW1lOiBIT1NUTkFNRSxcbiAgaXB2NDogL14oPzooPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPykkLyxcbiAgaXB2NjogL15cXHMqKD86KD86KD86WzAtOWEtZl17MSw0fTopezd9KD86WzAtOWEtZl17MSw0fXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezZ9KD86OlswLTlhLWZdezEsNH18KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSl8OikpfCg/Oig/OlswLTlhLWZdezEsNH06KXs1fSg/Oig/Oig/OjpbMC05YS1mXXsxLDR9KXsxLDJ9KXw6KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSl8OikpfCg/Oig/OlswLTlhLWZdezEsNH06KXs0fSg/Oig/Oig/OjpbMC05YS1mXXsxLDR9KXsxLDN9KXwoPzooPzo6WzAtOWEtZl17MSw0fSk/Oig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezN9KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsNH0pfCg/Oig/OjpbMC05YS1mXXsxLDR9KXswLDJ9Oig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezJ9KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsNX0pfCg/Oig/OjpbMC05YS1mXXsxLDR9KXswLDN9Oig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezF9KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsNn0pfCg/Oig/OjpbMC05YS1mXXsxLDR9KXswLDR9Oig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KD86Oig/Oig/Oig/OjpbMC05YS1mXXsxLDR9KXsxLDd9KXwoPzooPzo6WzAtOWEtZl17MSw0fSl7MCw1fTooPzooPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoPzpcXC4oPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KSl8OikpKSg/OiUuKyk/XFxzKiQvaSxcbiAgcmVnZXg6IHJlZ2V4LFxuICB1dWlkOiBVVUlELFxuICAnanNvbi1wb2ludGVyJzogSlNPTl9QT0lOVEVSLFxuICAnanNvbi1wb2ludGVyLXVyaS1mcmFnbWVudCc6IEpTT05fUE9JTlRFUl9VUklfRlJBR01FTlQsXG4gICdyZWxhdGl2ZS1qc29uLXBvaW50ZXInOiBSRUxBVElWRV9KU09OX1BPSU5URVJcbn07XG5cblxuZnVuY3Rpb24gaXNMZWFwWWVhcih5ZWFyKSB7XG4gIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzMzM5I2FwcGVuZGl4LUNcbiAgcmV0dXJuIHllYXIgJSA0ID09PSAwICYmICh5ZWFyICUgMTAwICE9PSAwIHx8IHllYXIgJSA0MDAgPT09IDApO1xufVxuXG5cbmZ1bmN0aW9uIGRhdGUoc3RyKSB7XG4gIC8vIGZ1bGwtZGF0ZSBmcm9tIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkjc2VjdGlvbi01LjZcbiAgdmFyIG1hdGNoZXMgPSBzdHIubWF0Y2goREFURSk7XG4gIGlmICghbWF0Y2hlcykgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciB5ZWFyID0gK21hdGNoZXNbMV07XG4gIHZhciBtb250aCA9ICttYXRjaGVzWzJdO1xuICB2YXIgZGF5ID0gK21hdGNoZXNbM107XG5cbiAgcmV0dXJuIG1vbnRoID49IDEgJiYgbW9udGggPD0gMTIgJiYgZGF5ID49IDEgJiZcbiAgICAgICAgICBkYXkgPD0gKG1vbnRoID09IDIgJiYgaXNMZWFwWWVhcih5ZWFyKSA/IDI5IDogREFZU1ttb250aF0pO1xufVxuXG5cbmZ1bmN0aW9uIHRpbWUoc3RyLCBmdWxsKSB7XG4gIHZhciBtYXRjaGVzID0gc3RyLm1hdGNoKFRJTUUpO1xuICBpZiAoIW1hdGNoZXMpIHJldHVybiBmYWxzZTtcblxuICB2YXIgaG91ciA9IG1hdGNoZXNbMV07XG4gIHZhciBtaW51dGUgPSBtYXRjaGVzWzJdO1xuICB2YXIgc2Vjb25kID0gbWF0Y2hlc1szXTtcbiAgdmFyIHRpbWVab25lID0gbWF0Y2hlc1s1XTtcbiAgcmV0dXJuICgoaG91ciA8PSAyMyAmJiBtaW51dGUgPD0gNTkgJiYgc2Vjb25kIDw9IDU5KSB8fFxuICAgICAgICAgIChob3VyID09IDIzICYmIG1pbnV0ZSA9PSA1OSAmJiBzZWNvbmQgPT0gNjApKSAmJlxuICAgICAgICAgKCFmdWxsIHx8IHRpbWVab25lKTtcbn1cblxuXG52YXIgREFURV9USU1FX1NFUEFSQVRPUiA9IC90fFxccy9pO1xuZnVuY3Rpb24gZGF0ZV90aW1lKHN0cikge1xuICAvLyBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzMzM5I3NlY3Rpb24tNS42XG4gIHZhciBkYXRlVGltZSA9IHN0ci5zcGxpdChEQVRFX1RJTUVfU0VQQVJBVE9SKTtcbiAgcmV0dXJuIGRhdGVUaW1lLmxlbmd0aCA9PSAyICYmIGRhdGUoZGF0ZVRpbWVbMF0pICYmIHRpbWUoZGF0ZVRpbWVbMV0sIHRydWUpO1xufVxuXG5cbnZhciBOT1RfVVJJX0ZSQUdNRU5UID0gL1xcL3w6LztcbmZ1bmN0aW9uIHVyaShzdHIpIHtcbiAgLy8gaHR0cDovL2ptcndhcmUuY29tL2FydGljbGVzLzIwMDkvdXJpX3JlZ2V4cC9VUklfcmVnZXguaHRtbCArIG9wdGlvbmFsIHByb3RvY29sICsgcmVxdWlyZWQgXCIuXCJcbiAgcmV0dXJuIE5PVF9VUklfRlJBR01FTlQudGVzdChzdHIpICYmIFVSSS50ZXN0KHN0cik7XG59XG5cblxudmFyIFpfQU5DSE9SID0gL1teXFxcXF1cXFxcWi87XG5mdW5jdGlvbiByZWdleChzdHIpIHtcbiAgaWYgKFpfQU5DSE9SLnRlc3Qoc3RyKSkgcmV0dXJuIGZhbHNlO1xuICB0cnkge1xuICAgIG5ldyBSZWdFeHAoc3RyKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX3JlZihpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICR2YWxpZCA9ICd2YWxpZCcgKyAkbHZsO1xuICB2YXIgJGFzeW5jLCAkcmVmQ29kZTtcbiAgaWYgKCRzY2hlbWEgPT0gJyMnIHx8ICRzY2hlbWEgPT0gJyMvJykge1xuICAgIGlmIChpdC5pc1Jvb3QpIHtcbiAgICAgICRhc3luYyA9IGl0LmFzeW5jO1xuICAgICAgJHJlZkNvZGUgPSAndmFsaWRhdGUnO1xuICAgIH0gZWxzZSB7XG4gICAgICAkYXN5bmMgPSBpdC5yb290LnNjaGVtYS4kYXN5bmMgPT09IHRydWU7XG4gICAgICAkcmVmQ29kZSA9ICdyb290LnJlZlZhbFswXSc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciAkcmVmVmFsID0gaXQucmVzb2x2ZVJlZihpdC5iYXNlSWQsICRzY2hlbWEsIGl0LmlzUm9vdCk7XG4gICAgaWYgKCRyZWZWYWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyICRtZXNzYWdlID0gaXQuTWlzc2luZ1JlZkVycm9yLm1lc3NhZ2UoaXQuYmFzZUlkLCAkc2NoZW1hKTtcbiAgICAgIGlmIChpdC5vcHRzLm1pc3NpbmdSZWZzID09ICdmYWlsJykge1xuICAgICAgICBpdC5sb2dnZXIuZXJyb3IoJG1lc3NhZ2UpO1xuICAgICAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgICAgICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJyRyZWYnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IHJlZjogXFwnJyArIChpdC51dGlsLmVzY2FwZVF1b3Rlcygkc2NoZW1hKSkgKyAnXFwnIH0gJztcbiAgICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnY2FuXFxcXFxcJ3QgcmVzb2x2ZSByZWZlcmVuY2UgJyArIChpdC51dGlsLmVzY2FwZVF1b3Rlcygkc2NoZW1hKSkgKyAnXFwnICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJHNjaGVtYSkpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fZXJyID0gb3V0O1xuICAgICAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgICAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgIG91dCArPSAnIGlmIChmYWxzZSkgeyAnO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGl0Lm9wdHMubWlzc2luZ1JlZnMgPT0gJ2lnbm9yZScpIHtcbiAgICAgICAgaXQubG9nZ2VyLndhcm4oJG1lc3NhZ2UpO1xuICAgICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgIG91dCArPSAnIGlmICh0cnVlKSB7ICc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBpdC5NaXNzaW5nUmVmRXJyb3IoaXQuYmFzZUlkLCAkc2NoZW1hLCAkbWVzc2FnZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICgkcmVmVmFsLmlubGluZSkge1xuICAgICAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gICAgICAkaXQubGV2ZWwrKztcbiAgICAgIHZhciAkbmV4dFZhbGlkID0gJ3ZhbGlkJyArICRpdC5sZXZlbDtcbiAgICAgICRpdC5zY2hlbWEgPSAkcmVmVmFsLnNjaGVtYTtcbiAgICAgICRpdC5zY2hlbWFQYXRoID0gJyc7XG4gICAgICAkaXQuZXJyU2NoZW1hUGF0aCA9ICRzY2hlbWE7XG4gICAgICB2YXIgJGNvZGUgPSBpdC52YWxpZGF0ZSgkaXQpLnJlcGxhY2UoL3ZhbGlkYXRlXFwuc2NoZW1hL2csICRyZWZWYWwuY29kZSk7XG4gICAgICBvdXQgKz0gJyAnICsgKCRjb2RlKSArICcgJztcbiAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgIG91dCArPSAnIGlmICgnICsgKCRuZXh0VmFsaWQpICsgJykgeyAnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAkYXN5bmMgPSAkcmVmVmFsLiRhc3luYyA9PT0gdHJ1ZSB8fCAoaXQuYXN5bmMgJiYgJHJlZlZhbC4kYXN5bmMgIT09IGZhbHNlKTtcbiAgICAgICRyZWZDb2RlID0gJHJlZlZhbC5jb2RlO1xuICAgIH1cbiAgfVxuICBpZiAoJHJlZkNvZGUpIHtcbiAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gICAgb3V0ID0gJyc7XG4gICAgaWYgKGl0Lm9wdHMucGFzc0NvbnRleHQpIHtcbiAgICAgIG91dCArPSAnICcgKyAoJHJlZkNvZGUpICsgJy5jYWxsKHRoaXMsICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnICcgKyAoJHJlZkNvZGUpICsgJyggJztcbiAgICB9XG4gICAgb3V0ICs9ICcgJyArICgkZGF0YSkgKyAnLCAoZGF0YVBhdGggfHwgXFwnXFwnKSc7XG4gICAgaWYgKGl0LmVycm9yUGF0aCAhPSAnXCJcIicpIHtcbiAgICAgIG91dCArPSAnICsgJyArIChpdC5lcnJvclBhdGgpO1xuICAgIH1cbiAgICB2YXIgJHBhcmVudERhdGEgPSAkZGF0YUx2bCA/ICdkYXRhJyArICgoJGRhdGFMdmwgLSAxKSB8fCAnJykgOiAncGFyZW50RGF0YScsXG4gICAgICAkcGFyZW50RGF0YVByb3BlcnR5ID0gJGRhdGFMdmwgPyBpdC5kYXRhUGF0aEFyclskZGF0YUx2bF0gOiAncGFyZW50RGF0YVByb3BlcnR5JztcbiAgICBvdXQgKz0gJyAsICcgKyAoJHBhcmVudERhdGEpICsgJyAsICcgKyAoJHBhcmVudERhdGFQcm9wZXJ0eSkgKyAnLCByb290RGF0YSkgICc7XG4gICAgdmFyIF9fY2FsbFZhbGlkYXRlID0gb3V0O1xuICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgaWYgKCRhc3luYykge1xuICAgICAgaWYgKCFpdC5hc3luYykgdGhyb3cgbmV3IEVycm9yKCdhc3luYyBzY2hlbWEgcmVmZXJlbmNlZCBieSBzeW5jIHNjaGVtYScpO1xuICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJHZhbGlkKSArICc7ICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB0cnkgeyBhd2FpdCAnICsgKF9fY2FsbFZhbGlkYXRlKSArICc7ICc7XG4gICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICBvdXQgKz0gJyAnICsgKCR2YWxpZCkgKyAnID0gdHJ1ZTsgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIH0gY2F0Y2ggKGUpIHsgaWYgKCEoZSBpbnN0YW5jZW9mIFZhbGlkYXRpb25FcnJvcikpIHRocm93IGU7IGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gZS5lcnJvcnM7IGVsc2UgdkVycm9ycyA9IHZFcnJvcnMuY29uY2F0KGUuZXJyb3JzKTsgZXJyb3JzID0gdkVycm9ycy5sZW5ndGg7ICc7XG4gICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICBvdXQgKz0gJyAnICsgKCR2YWxpZCkgKyAnID0gZmFsc2U7ICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkdmFsaWQpICsgJykgeyAnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyBpZiAoIScgKyAoX19jYWxsVmFsaWRhdGUpICsgJykgeyBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9ICcgKyAoJHJlZkNvZGUpICsgJy5lcnJvcnM7IGVsc2UgdkVycm9ycyA9IHZFcnJvcnMuY29uY2F0KCcgKyAoJHJlZkNvZGUpICsgJy5lcnJvcnMpOyBlcnJvcnMgPSB2RXJyb3JzLmxlbmd0aDsgfSAnO1xuICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX2FsbE9mKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGl0ID0gaXQudXRpbC5jb3B5KGl0KTtcbiAgdmFyICRjbG9zaW5nQnJhY2VzID0gJyc7XG4gICRpdC5sZXZlbCsrO1xuICB2YXIgJG5leHRWYWxpZCA9ICd2YWxpZCcgKyAkaXQubGV2ZWw7XG4gIHZhciAkY3VycmVudEJhc2VJZCA9ICRpdC5iYXNlSWQsXG4gICAgJGFsbFNjaGVtYXNFbXB0eSA9IHRydWU7XG4gIHZhciBhcnIxID0gJHNjaGVtYTtcbiAgaWYgKGFycjEpIHtcbiAgICB2YXIgJHNjaCwgJGkgPSAtMSxcbiAgICAgIGwxID0gYXJyMS5sZW5ndGggLSAxO1xuICAgIHdoaWxlICgkaSA8IGwxKSB7XG4gICAgICAkc2NoID0gYXJyMVskaSArPSAxXTtcbiAgICAgIGlmICgoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHNjaCA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkc2NoKS5sZW5ndGggPiAwKSB8fCAkc2NoID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHNjaCwgaXQuUlVMRVMuYWxsKSkpIHtcbiAgICAgICAgJGFsbFNjaGVtYXNFbXB0eSA9IGZhbHNlO1xuICAgICAgICAkaXQuc2NoZW1hID0gJHNjaDtcbiAgICAgICAgJGl0LnNjaGVtYVBhdGggPSAkc2NoZW1hUGF0aCArICdbJyArICRpICsgJ10nO1xuICAgICAgICAkaXQuZXJyU2NoZW1hUGF0aCA9ICRlcnJTY2hlbWFQYXRoICsgJy8nICsgJGk7XG4gICAgICAgIG91dCArPSAnICAnICsgKGl0LnZhbGlkYXRlKCRpdCkpICsgJyAnO1xuICAgICAgICAkaXQuYmFzZUlkID0gJGN1cnJlbnRCYXNlSWQ7XG4gICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJG5leHRWYWxpZCkgKyAnKSB7ICc7XG4gICAgICAgICAgJGNsb3NpbmdCcmFjZXMgKz0gJ30nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgaWYgKCRhbGxTY2hlbWFzRW1wdHkpIHtcbiAgICAgIG91dCArPSAnIGlmICh0cnVlKSB7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnICcgKyAoJGNsb3NpbmdCcmFjZXMuc2xpY2UoMCwgLTEpKSArICcgJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfYW55T2YoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICR2YWxpZCA9ICd2YWxpZCcgKyAkbHZsO1xuICB2YXIgJGVycnMgPSAnZXJyc19fJyArICRsdmw7XG4gIHZhciAkaXQgPSBpdC51dGlsLmNvcHkoaXQpO1xuICB2YXIgJGNsb3NpbmdCcmFjZXMgPSAnJztcbiAgJGl0LmxldmVsKys7XG4gIHZhciAkbmV4dFZhbGlkID0gJ3ZhbGlkJyArICRpdC5sZXZlbDtcbiAgdmFyICRub0VtcHR5U2NoZW1hID0gJHNjaGVtYS5ldmVyeShmdW5jdGlvbigkc2NoKSB7XG4gICAgcmV0dXJuIChpdC5vcHRzLnN0cmljdEtleXdvcmRzID8gKHR5cGVvZiAkc2NoID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRzY2gpLmxlbmd0aCA+IDApIHx8ICRzY2ggPT09IGZhbHNlIDogaXQudXRpbC5zY2hlbWFIYXNSdWxlcygkc2NoLCBpdC5SVUxFUy5hbGwpKTtcbiAgfSk7XG4gIGlmICgkbm9FbXB0eVNjaGVtYSkge1xuICAgIHZhciAkY3VycmVudEJhc2VJZCA9ICRpdC5iYXNlSWQ7XG4gICAgb3V0ICs9ICcgdmFyICcgKyAoJGVycnMpICsgJyA9IGVycm9yczsgdmFyICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZTsgICc7XG4gICAgdmFyICR3YXNDb21wb3NpdGUgPSBpdC5jb21wb3NpdGVSdWxlO1xuICAgIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9IHRydWU7XG4gICAgdmFyIGFycjEgPSAkc2NoZW1hO1xuICAgIGlmIChhcnIxKSB7XG4gICAgICB2YXIgJHNjaCwgJGkgPSAtMSxcbiAgICAgICAgbDEgPSBhcnIxLmxlbmd0aCAtIDE7XG4gICAgICB3aGlsZSAoJGkgPCBsMSkge1xuICAgICAgICAkc2NoID0gYXJyMVskaSArPSAxXTtcbiAgICAgICAgJGl0LnNjaGVtYSA9ICRzY2g7XG4gICAgICAgICRpdC5zY2hlbWFQYXRoID0gJHNjaGVtYVBhdGggKyAnWycgKyAkaSArICddJztcbiAgICAgICAgJGl0LmVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aCArICcvJyArICRpO1xuICAgICAgICBvdXQgKz0gJyAgJyArIChpdC52YWxpZGF0ZSgkaXQpKSArICcgJztcbiAgICAgICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgICAgICBvdXQgKz0gJyAnICsgKCR2YWxpZCkgKyAnID0gJyArICgkdmFsaWQpICsgJyB8fCAnICsgKCRuZXh0VmFsaWQpICsgJzsgaWYgKCEnICsgKCR2YWxpZCkgKyAnKSB7ICc7XG4gICAgICAgICRjbG9zaW5nQnJhY2VzICs9ICd9JztcbiAgICAgIH1cbiAgICB9XG4gICAgaXQuY29tcG9zaXRlUnVsZSA9ICRpdC5jb21wb3NpdGVSdWxlID0gJHdhc0NvbXBvc2l0ZTtcbiAgICBvdXQgKz0gJyAnICsgKCRjbG9zaW5nQnJhY2VzKSArICcgaWYgKCEnICsgKCR2YWxpZCkgKyAnKSB7ICAgdmFyIGVyciA9ICAgJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdhbnlPZicpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHt9ICc7XG4gICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgbWF0Y2ggc29tZSBzY2hlbWEgaW4gYW55T2ZcXCcgJztcbiAgICAgIH1cbiAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIH0gJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcge30gJztcbiAgICB9XG4gICAgb3V0ICs9ICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcih2RXJyb3JzKTsgJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IHZFcnJvcnM7IHJldHVybiBmYWxzZTsgJztcbiAgICAgIH1cbiAgICB9XG4gICAgb3V0ICs9ICcgfSBlbHNlIHsgIGVycm9ycyA9ICcgKyAoJGVycnMpICsgJzsgaWYgKHZFcnJvcnMgIT09IG51bGwpIHsgaWYgKCcgKyAoJGVycnMpICsgJykgdkVycm9ycy5sZW5ndGggPSAnICsgKCRlcnJzKSArICc7IGVsc2UgdkVycm9ycyA9IG51bGw7IH0gJztcbiAgICBpZiAoaXQub3B0cy5hbGxFcnJvcnMpIHtcbiAgICAgIG91dCArPSAnIH0gJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgIG91dCArPSAnIGlmICh0cnVlKSB7ICc7XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX2NvbW1lbnQoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGNvbW1lbnQgPSBpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRzY2hlbWEpO1xuICBpZiAoaXQub3B0cy4kY29tbWVudCA9PT0gdHJ1ZSkge1xuICAgIG91dCArPSAnIGNvbnNvbGUubG9nKCcgKyAoJGNvbW1lbnQpICsgJyk7JztcbiAgfSBlbHNlIGlmICh0eXBlb2YgaXQub3B0cy4kY29tbWVudCA9PSAnZnVuY3Rpb24nKSB7XG4gICAgb3V0ICs9ICcgc2VsZi5fb3B0cy4kY29tbWVudCgnICsgKCRjb21tZW50KSArICcsICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJywgdmFsaWRhdGUucm9vdC5zY2hlbWEpOyc7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfY29uc3QoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICR2YWxpZCA9ICd2YWxpZCcgKyAkbHZsO1xuICB2YXIgJGlzRGF0YSA9IGl0Lm9wdHMuJGRhdGEgJiYgJHNjaGVtYSAmJiAkc2NoZW1hLiRkYXRhLFxuICAgICRzY2hlbWFWYWx1ZTtcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyB2YXIgc2NoZW1hJyArICgkbHZsKSArICcgPSAnICsgKGl0LnV0aWwuZ2V0RGF0YSgkc2NoZW1hLiRkYXRhLCAkZGF0YUx2bCwgaXQuZGF0YVBhdGhBcnIpKSArICc7ICc7XG4gICAgJHNjaGVtYVZhbHVlID0gJ3NjaGVtYScgKyAkbHZsO1xuICB9IGVsc2Uge1xuICAgICRzY2hlbWFWYWx1ZSA9ICRzY2hlbWE7XG4gIH1cbiAgaWYgKCEkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyIHNjaGVtYScgKyAoJGx2bCkgKyAnID0gdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnOyc7XG4gIH1cbiAgb3V0ICs9ICd2YXIgJyArICgkdmFsaWQpICsgJyA9IGVxdWFsKCcgKyAoJGRhdGEpICsgJywgc2NoZW1hJyArICgkbHZsKSArICcpOyBpZiAoIScgKyAoJHZhbGlkKSArICcpIHsgICAnO1xuICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ2NvbnN0JykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBhbGxvd2VkVmFsdWU6IHNjaGVtYScgKyAoJGx2bCkgKyAnIH0gJztcbiAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIGJlIGVxdWFsIHRvIGNvbnN0YW50XFwnICc7XG4gICAgfVxuICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gJztcbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB7fSAnO1xuICB9XG4gIHZhciBfX2VyciA9IG91dDtcbiAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gIH1cbiAgb3V0ICs9ICcgfSc7XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfY29udGFpbnMoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICR2YWxpZCA9ICd2YWxpZCcgKyAkbHZsO1xuICB2YXIgJGVycnMgPSAnZXJyc19fJyArICRsdmw7XG4gIHZhciAkaXQgPSBpdC51dGlsLmNvcHkoaXQpO1xuICB2YXIgJGNsb3NpbmdCcmFjZXMgPSAnJztcbiAgJGl0LmxldmVsKys7XG4gIHZhciAkbmV4dFZhbGlkID0gJ3ZhbGlkJyArICRpdC5sZXZlbDtcbiAgdmFyICRpZHggPSAnaScgKyAkbHZsLFxuICAgICRkYXRhTnh0ID0gJGl0LmRhdGFMZXZlbCA9IGl0LmRhdGFMZXZlbCArIDEsXG4gICAgJG5leHREYXRhID0gJ2RhdGEnICsgJGRhdGFOeHQsXG4gICAgJGN1cnJlbnRCYXNlSWQgPSBpdC5iYXNlSWQsXG4gICAgJG5vbkVtcHR5U2NoZW1hID0gKGl0Lm9wdHMuc3RyaWN0S2V5d29yZHMgPyAodHlwZW9mICRzY2hlbWEgPT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoJHNjaGVtYSkubGVuZ3RoID4gMCkgfHwgJHNjaGVtYSA9PT0gZmFsc2UgOiBpdC51dGlsLnNjaGVtYUhhc1J1bGVzKCRzY2hlbWEsIGl0LlJVTEVTLmFsbCkpO1xuICBvdXQgKz0gJ3ZhciAnICsgKCRlcnJzKSArICcgPSBlcnJvcnM7dmFyICcgKyAoJHZhbGlkKSArICc7JztcbiAgaWYgKCRub25FbXB0eVNjaGVtYSkge1xuICAgIHZhciAkd2FzQ29tcG9zaXRlID0gaXQuY29tcG9zaXRlUnVsZTtcbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSB0cnVlO1xuICAgICRpdC5zY2hlbWEgPSAkc2NoZW1hO1xuICAgICRpdC5zY2hlbWFQYXRoID0gJHNjaGVtYVBhdGg7XG4gICAgJGl0LmVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aDtcbiAgICBvdXQgKz0gJyB2YXIgJyArICgkbmV4dFZhbGlkKSArICcgPSBmYWxzZTsgZm9yICh2YXIgJyArICgkaWR4KSArICcgPSAwOyAnICsgKCRpZHgpICsgJyA8ICcgKyAoJGRhdGEpICsgJy5sZW5ndGg7ICcgKyAoJGlkeCkgKyAnKyspIHsgJztcbiAgICAkaXQuZXJyb3JQYXRoID0gaXQudXRpbC5nZXRQYXRoRXhwcihpdC5lcnJvclBhdGgsICRpZHgsIGl0Lm9wdHMuanNvblBvaW50ZXJzLCB0cnVlKTtcbiAgICB2YXIgJHBhc3NEYXRhID0gJGRhdGEgKyAnWycgKyAkaWR4ICsgJ10nO1xuICAgICRpdC5kYXRhUGF0aEFyclskZGF0YU54dF0gPSAkaWR4O1xuICAgIHZhciAkY29kZSA9IGl0LnZhbGlkYXRlKCRpdCk7XG4gICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgIGlmIChpdC51dGlsLnZhck9jY3VyZW5jZXMoJGNvZGUsICRuZXh0RGF0YSkgPCAyKSB7XG4gICAgICBvdXQgKz0gJyAnICsgKGl0LnV0aWwudmFyUmVwbGFjZSgkY29kZSwgJG5leHREYXRhLCAkcGFzc0RhdGEpKSArICcgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJG5leHREYXRhKSArICcgPSAnICsgKCRwYXNzRGF0YSkgKyAnOyAnICsgKCRjb2RlKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgaWYgKCcgKyAoJG5leHRWYWxpZCkgKyAnKSBicmVhazsgfSAgJztcbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSAkd2FzQ29tcG9zaXRlO1xuICAgIG91dCArPSAnICcgKyAoJGNsb3NpbmdCcmFjZXMpICsgJyBpZiAoIScgKyAoJG5leHRWYWxpZCkgKyAnKSB7JztcbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyBpZiAoJyArICgkZGF0YSkgKyAnLmxlbmd0aCA9PSAwKSB7JztcbiAgfVxuICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ2NvbnRhaW5zJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczoge30gJztcbiAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIGNvbnRhaW4gYSB2YWxpZCBpdGVtXFwnICc7XG4gICAgfVxuICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gJztcbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB7fSAnO1xuICB9XG4gIHZhciBfX2VyciA9IG91dDtcbiAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gIH1cbiAgb3V0ICs9ICcgfSBlbHNlIHsgJztcbiAgaWYgKCRub25FbXB0eVNjaGVtYSkge1xuICAgIG91dCArPSAnICBlcnJvcnMgPSAnICsgKCRlcnJzKSArICc7IGlmICh2RXJyb3JzICE9PSBudWxsKSB7IGlmICgnICsgKCRlcnJzKSArICcpIHZFcnJvcnMubGVuZ3RoID0gJyArICgkZXJycykgKyAnOyBlbHNlIHZFcnJvcnMgPSBudWxsOyB9ICc7XG4gIH1cbiAgaWYgKGl0Lm9wdHMuYWxsRXJyb3JzKSB7XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX2RlcGVuZGVuY2llcyhpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJGVycnMgPSAnZXJyc19fJyArICRsdmw7XG4gIHZhciAkaXQgPSBpdC51dGlsLmNvcHkoaXQpO1xuICB2YXIgJGNsb3NpbmdCcmFjZXMgPSAnJztcbiAgJGl0LmxldmVsKys7XG4gIHZhciAkbmV4dFZhbGlkID0gJ3ZhbGlkJyArICRpdC5sZXZlbDtcbiAgdmFyICRzY2hlbWFEZXBzID0ge30sXG4gICAgJHByb3BlcnR5RGVwcyA9IHt9LFxuICAgICRvd25Qcm9wZXJ0aWVzID0gaXQub3B0cy5vd25Qcm9wZXJ0aWVzO1xuICBmb3IgKCRwcm9wZXJ0eSBpbiAkc2NoZW1hKSB7XG4gICAgaWYgKCRwcm9wZXJ0eSA9PSAnX19wcm90b19fJykgY29udGludWU7XG4gICAgdmFyICRzY2ggPSAkc2NoZW1hWyRwcm9wZXJ0eV07XG4gICAgdmFyICRkZXBzID0gQXJyYXkuaXNBcnJheSgkc2NoKSA/ICRwcm9wZXJ0eURlcHMgOiAkc2NoZW1hRGVwcztcbiAgICAkZGVwc1skcHJvcGVydHldID0gJHNjaDtcbiAgfVxuICBvdXQgKz0gJ3ZhciAnICsgKCRlcnJzKSArICcgPSBlcnJvcnM7JztcbiAgdmFyICRjdXJyZW50RXJyb3JQYXRoID0gaXQuZXJyb3JQYXRoO1xuICBvdXQgKz0gJ3ZhciBtaXNzaW5nJyArICgkbHZsKSArICc7JztcbiAgZm9yICh2YXIgJHByb3BlcnR5IGluICRwcm9wZXJ0eURlcHMpIHtcbiAgICAkZGVwcyA9ICRwcm9wZXJ0eURlcHNbJHByb3BlcnR5XTtcbiAgICBpZiAoJGRlcHMubGVuZ3RoKSB7XG4gICAgICBvdXQgKz0gJyBpZiAoICcgKyAoJGRhdGEpICsgKGl0LnV0aWwuZ2V0UHJvcGVydHkoJHByb3BlcnR5KSkgKyAnICE9PSB1bmRlZmluZWQgJztcbiAgICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgICBvdXQgKz0gJyAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoJyArICgkZGF0YSkgKyAnLCBcXCcnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eSkpICsgJ1xcJykgJztcbiAgICAgIH1cbiAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgIG91dCArPSAnICYmICggJztcbiAgICAgICAgdmFyIGFycjEgPSAkZGVwcztcbiAgICAgICAgaWYgKGFycjEpIHtcbiAgICAgICAgICB2YXIgJHByb3BlcnR5S2V5LCAkaSA9IC0xLFxuICAgICAgICAgICAgbDEgPSBhcnIxLmxlbmd0aCAtIDE7XG4gICAgICAgICAgd2hpbGUgKCRpIDwgbDEpIHtcbiAgICAgICAgICAgICRwcm9wZXJ0eUtleSA9IGFycjFbJGkgKz0gMV07XG4gICAgICAgICAgICBpZiAoJGkpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgfHwgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciAkcHJvcCA9IGl0LnV0aWwuZ2V0UHJvcGVydHkoJHByb3BlcnR5S2V5KSxcbiAgICAgICAgICAgICAgJHVzZURhdGEgPSAkZGF0YSArICRwcm9wO1xuICAgICAgICAgICAgb3V0ICs9ICcgKCAoICcgKyAoJHVzZURhdGEpICsgJyA9PT0gdW5kZWZpbmVkICc7XG4gICAgICAgICAgICBpZiAoJG93blByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgfHwgISBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoJyArICgkZGF0YSkgKyAnLCBcXCcnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eUtleSkpICsgJ1xcJykgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnKSAmJiAobWlzc2luZycgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKGl0Lm9wdHMuanNvblBvaW50ZXJzID8gJHByb3BlcnR5S2V5IDogJHByb3ApKSArICcpICkgJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcpKSB7ICAnO1xuICAgICAgICB2YXIgJHByb3BlcnR5UGF0aCA9ICdtaXNzaW5nJyArICRsdmwsXG4gICAgICAgICAgJG1pc3NpbmdQcm9wZXJ0eSA9ICdcXCcgKyAnICsgJHByb3BlcnR5UGF0aCArICcgKyBcXCcnO1xuICAgICAgICBpZiAoaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5KSB7XG4gICAgICAgICAgaXQuZXJyb3JQYXRoID0gaXQub3B0cy5qc29uUG9pbnRlcnMgPyBpdC51dGlsLmdldFBhdGhFeHByKCRjdXJyZW50RXJyb3JQYXRoLCAkcHJvcGVydHlQYXRoLCB0cnVlKSA6ICRjdXJyZW50RXJyb3JQYXRoICsgJyArICcgKyAkcHJvcGVydHlQYXRoO1xuICAgICAgICB9XG4gICAgICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAgICAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gICAgICAgIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgnZGVwZW5kZW5jaWVzJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBwcm9wZXJ0eTogXFwnJyArIChpdC51dGlsLmVzY2FwZVF1b3RlcygkcHJvcGVydHkpKSArICdcXCcsIG1pc3NpbmdQcm9wZXJ0eTogXFwnJyArICgkbWlzc2luZ1Byb3BlcnR5KSArICdcXCcsIGRlcHNDb3VudDogJyArICgkZGVwcy5sZW5ndGgpICsgJywgZGVwczogXFwnJyArIChpdC51dGlsLmVzY2FwZVF1b3RlcygkZGVwcy5sZW5ndGggPT0gMSA/ICRkZXBzWzBdIDogJGRlcHMuam9pbihcIiwgXCIpKSkgKyAnXFwnIH0gJztcbiAgICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIGhhdmUgJztcbiAgICAgICAgICAgIGlmICgkZGVwcy5sZW5ndGggPT0gMSkge1xuICAgICAgICAgICAgICBvdXQgKz0gJ3Byb3BlcnR5ICcgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJGRlcHNbMF0pKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG91dCArPSAncHJvcGVydGllcyAnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRkZXBzLmpvaW4oXCIsIFwiKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICcgd2hlbiBwcm9wZXJ0eSAnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eSkpICsgJyBpcyBwcmVzZW50XFwnICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJyB7fSAnO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX2VyciA9IG91dDtcbiAgICAgICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICAgICAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnICkgeyAnO1xuICAgICAgICB2YXIgYXJyMiA9ICRkZXBzO1xuICAgICAgICBpZiAoYXJyMikge1xuICAgICAgICAgIHZhciAkcHJvcGVydHlLZXksIGkyID0gLTEsXG4gICAgICAgICAgICBsMiA9IGFycjIubGVuZ3RoIC0gMTtcbiAgICAgICAgICB3aGlsZSAoaTIgPCBsMikge1xuICAgICAgICAgICAgJHByb3BlcnR5S2V5ID0gYXJyMltpMiArPSAxXTtcbiAgICAgICAgICAgIHZhciAkcHJvcCA9IGl0LnV0aWwuZ2V0UHJvcGVydHkoJHByb3BlcnR5S2V5KSxcbiAgICAgICAgICAgICAgJG1pc3NpbmdQcm9wZXJ0eSA9IGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eUtleSksXG4gICAgICAgICAgICAgICR1c2VEYXRhID0gJGRhdGEgKyAkcHJvcDtcbiAgICAgICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgaXQuZXJyb3JQYXRoID0gaXQudXRpbC5nZXRQYXRoKCRjdXJyZW50RXJyb3JQYXRoLCAkcHJvcGVydHlLZXksIGl0Lm9wdHMuanNvblBvaW50ZXJzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnIGlmICggJyArICgkdXNlRGF0YSkgKyAnID09PSB1bmRlZmluZWQgJztcbiAgICAgICAgICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAhIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgnICsgKCRkYXRhKSArICcsIFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5S2V5KSkgKyAnXFwnKSAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICcpIHsgIHZhciBlcnIgPSAgICc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ2RlcGVuZGVuY2llcycpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgcHJvcGVydHk6IFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5KSkgKyAnXFwnLCBtaXNzaW5nUHJvcGVydHk6IFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFwnLCBkZXBzQ291bnQ6ICcgKyAoJGRlcHMubGVuZ3RoKSArICcsIGRlcHM6IFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJGRlcHMubGVuZ3RoID09IDEgPyAkZGVwc1swXSA6ICRkZXBzLmpvaW4oXCIsIFwiKSkpICsgJ1xcJyB9ICc7XG4gICAgICAgICAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIGhhdmUgJztcbiAgICAgICAgICAgICAgICBpZiAoJGRlcHMubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAncHJvcGVydHkgJyArIChpdC51dGlsLmVzY2FwZVF1b3RlcygkZGVwc1swXSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJ3Byb3BlcnRpZXMgJyArIChpdC51dGlsLmVzY2FwZVF1b3RlcygkZGVwcy5qb2luKFwiLCBcIikpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgd2hlbiBwcm9wZXJ0eSAnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eSkpICsgJyBpcyBwcmVzZW50XFwnICc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7IH0gJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG91dCArPSAnIH0gICAnO1xuICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgJGNsb3NpbmdCcmFjZXMgKz0gJ30nO1xuICAgICAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaXQuZXJyb3JQYXRoID0gJGN1cnJlbnRFcnJvclBhdGg7XG4gIHZhciAkY3VycmVudEJhc2VJZCA9ICRpdC5iYXNlSWQ7XG4gIGZvciAodmFyICRwcm9wZXJ0eSBpbiAkc2NoZW1hRGVwcykge1xuICAgIHZhciAkc2NoID0gJHNjaGVtYURlcHNbJHByb3BlcnR5XTtcbiAgICBpZiAoKGl0Lm9wdHMuc3RyaWN0S2V5d29yZHMgPyAodHlwZW9mICRzY2ggPT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoJHNjaCkubGVuZ3RoID4gMCkgfHwgJHNjaCA9PT0gZmFsc2UgOiBpdC51dGlsLnNjaGVtYUhhc1J1bGVzKCRzY2gsIGl0LlJVTEVTLmFsbCkpKSB7XG4gICAgICBvdXQgKz0gJyAnICsgKCRuZXh0VmFsaWQpICsgJyA9IHRydWU7IGlmICggJyArICgkZGF0YSkgKyAoaXQudXRpbC5nZXRQcm9wZXJ0eSgkcHJvcGVydHkpKSArICcgIT09IHVuZGVmaW5lZCAnO1xuICAgICAgaWYgKCRvd25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgIG91dCArPSAnICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgnICsgKCRkYXRhKSArICcsIFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5KSkgKyAnXFwnKSAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcpIHsgJztcbiAgICAgICRpdC5zY2hlbWEgPSAkc2NoO1xuICAgICAgJGl0LnNjaGVtYVBhdGggPSAkc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJHByb3BlcnR5KTtcbiAgICAgICRpdC5lcnJTY2hlbWFQYXRoID0gJGVyclNjaGVtYVBhdGggKyAnLycgKyBpdC51dGlsLmVzY2FwZUZyYWdtZW50KCRwcm9wZXJ0eSk7XG4gICAgICBvdXQgKz0gJyAgJyArIChpdC52YWxpZGF0ZSgkaXQpKSArICcgJztcbiAgICAgICRpdC5iYXNlSWQgPSAkY3VycmVudEJhc2VJZDtcbiAgICAgIG91dCArPSAnIH0gICc7XG4gICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkbmV4dFZhbGlkKSArICcpIHsgJztcbiAgICAgICAgJGNsb3NpbmdCcmFjZXMgKz0gJ30nO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgIG91dCArPSAnICAgJyArICgkY2xvc2luZ0JyYWNlcykgKyAnIGlmICgnICsgKCRlcnJzKSArICcgPT0gZXJyb3JzKSB7JztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9lbnVtKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkdmFsaWQgPSAndmFsaWQnICsgJGx2bDtcbiAgdmFyICRpc0RhdGEgPSBpdC5vcHRzLiRkYXRhICYmICRzY2hlbWEgJiYgJHNjaGVtYS4kZGF0YSxcbiAgICAkc2NoZW1hVmFsdWU7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyIHNjaGVtYScgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLmdldERhdGEoJHNjaGVtYS4kZGF0YSwgJGRhdGFMdmwsIGl0LmRhdGFQYXRoQXJyKSkgKyAnOyAnO1xuICAgICRzY2hlbWFWYWx1ZSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgfSBlbHNlIHtcbiAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hO1xuICB9XG4gIHZhciAkaSA9ICdpJyArICRsdmwsXG4gICAgJHZTY2hlbWEgPSAnc2NoZW1hJyArICRsdmw7XG4gIGlmICghJGlzRGF0YSkge1xuICAgIG91dCArPSAnIHZhciAnICsgKCR2U2NoZW1hKSArICcgPSB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICc7JztcbiAgfVxuICBvdXQgKz0gJ3ZhciAnICsgKCR2YWxpZCkgKyAnOyc7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgaWYgKHNjaGVtYScgKyAoJGx2bCkgKyAnID09PSB1bmRlZmluZWQpICcgKyAoJHZhbGlkKSArICcgPSB0cnVlOyBlbHNlIGlmICghQXJyYXkuaXNBcnJheShzY2hlbWEnICsgKCRsdmwpICsgJykpICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZTsgZWxzZSB7JztcbiAgfVxuICBvdXQgKz0gJycgKyAoJHZhbGlkKSArICcgPSBmYWxzZTtmb3IgKHZhciAnICsgKCRpKSArICc9MDsgJyArICgkaSkgKyAnPCcgKyAoJHZTY2hlbWEpICsgJy5sZW5ndGg7ICcgKyAoJGkpICsgJysrKSBpZiAoZXF1YWwoJyArICgkZGF0YSkgKyAnLCAnICsgKCR2U2NoZW1hKSArICdbJyArICgkaSkgKyAnXSkpIHsgJyArICgkdmFsaWQpICsgJyA9IHRydWU7IGJyZWFrOyB9JztcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyAgfSAgJztcbiAgfVxuICBvdXQgKz0gJyBpZiAoIScgKyAoJHZhbGlkKSArICcpIHsgICAnO1xuICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ2VudW0nKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IGFsbG93ZWRWYWx1ZXM6IHNjaGVtYScgKyAoJGx2bCkgKyAnIH0gJztcbiAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIGJlIGVxdWFsIHRvIG9uZSBvZiB0aGUgYWxsb3dlZCB2YWx1ZXNcXCcgJztcbiAgICB9XG4gICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHt9ICc7XG4gIH1cbiAgdmFyIF9fZXJyID0gb3V0O1xuICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgfVxuICBvdXQgKz0gJyB9JztcbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9mb3JtYXQoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgaWYgKGl0Lm9wdHMuZm9ybWF0ID09PSBmYWxzZSkge1xuICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICBvdXQgKz0gJyBpZiAodHJ1ZSkgeyAnO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG4gIHZhciAkaXNEYXRhID0gaXQub3B0cy4kZGF0YSAmJiAkc2NoZW1hICYmICRzY2hlbWEuJGRhdGEsXG4gICAgJHNjaGVtYVZhbHVlO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnIHZhciBzY2hlbWEnICsgKCRsdmwpICsgJyA9ICcgKyAoaXQudXRpbC5nZXREYXRhKCRzY2hlbWEuJGRhdGEsICRkYXRhTHZsLCBpdC5kYXRhUGF0aEFycikpICsgJzsgJztcbiAgICAkc2NoZW1hVmFsdWUgPSAnc2NoZW1hJyArICRsdmw7XG4gIH0gZWxzZSB7XG4gICAgJHNjaGVtYVZhbHVlID0gJHNjaGVtYTtcbiAgfVxuICB2YXIgJHVua25vd25Gb3JtYXRzID0gaXQub3B0cy51bmtub3duRm9ybWF0cyxcbiAgICAkYWxsb3dVbmtub3duID0gQXJyYXkuaXNBcnJheSgkdW5rbm93bkZvcm1hdHMpO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIHZhciAkZm9ybWF0ID0gJ2Zvcm1hdCcgKyAkbHZsLFxuICAgICAgJGlzT2JqZWN0ID0gJ2lzT2JqZWN0JyArICRsdmwsXG4gICAgICAkZm9ybWF0VHlwZSA9ICdmb3JtYXRUeXBlJyArICRsdmw7XG4gICAgb3V0ICs9ICcgdmFyICcgKyAoJGZvcm1hdCkgKyAnID0gZm9ybWF0c1snICsgKCRzY2hlbWFWYWx1ZSkgKyAnXTsgdmFyICcgKyAoJGlzT2JqZWN0KSArICcgPSB0eXBlb2YgJyArICgkZm9ybWF0KSArICcgPT0gXFwnb2JqZWN0XFwnICYmICEoJyArICgkZm9ybWF0KSArICcgaW5zdGFuY2VvZiBSZWdFeHApICYmICcgKyAoJGZvcm1hdCkgKyAnLnZhbGlkYXRlOyB2YXIgJyArICgkZm9ybWF0VHlwZSkgKyAnID0gJyArICgkaXNPYmplY3QpICsgJyAmJiAnICsgKCRmb3JtYXQpICsgJy50eXBlIHx8IFxcJ3N0cmluZ1xcJzsgaWYgKCcgKyAoJGlzT2JqZWN0KSArICcpIHsgJztcbiAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgIG91dCArPSAnIHZhciBhc3luYycgKyAoJGx2bCkgKyAnID0gJyArICgkZm9ybWF0KSArICcuYXN5bmM7ICc7XG4gICAgfVxuICAgIG91dCArPSAnICcgKyAoJGZvcm1hdCkgKyAnID0gJyArICgkZm9ybWF0KSArICcudmFsaWRhdGU7IH0gaWYgKCAgJztcbiAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgb3V0ICs9ICcgKCcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPSBcXCdzdHJpbmdcXCcpIHx8ICc7XG4gICAgfVxuICAgIG91dCArPSAnICgnO1xuICAgIGlmICgkdW5rbm93bkZvcm1hdHMgIT0gJ2lnbm9yZScpIHtcbiAgICAgIG91dCArPSAnICgnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICYmICEnICsgKCRmb3JtYXQpICsgJyAnO1xuICAgICAgaWYgKCRhbGxvd1Vua25vd24pIHtcbiAgICAgICAgb3V0ICs9ICcgJiYgc2VsZi5fb3B0cy51bmtub3duRm9ybWF0cy5pbmRleE9mKCcgKyAoJHNjaGVtYVZhbHVlKSArICcpID09IC0xICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJykgfHwgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgKCcgKyAoJGZvcm1hdCkgKyAnICYmICcgKyAoJGZvcm1hdFR5cGUpICsgJyA9PSBcXCcnICsgKCRydWxlVHlwZSkgKyAnXFwnICYmICEodHlwZW9mICcgKyAoJGZvcm1hdCkgKyAnID09IFxcJ2Z1bmN0aW9uXFwnID8gJztcbiAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgIG91dCArPSAnIChhc3luYycgKyAoJGx2bCkgKyAnID8gYXdhaXQgJyArICgkZm9ybWF0KSArICcoJyArICgkZGF0YSkgKyAnKSA6ICcgKyAoJGZvcm1hdCkgKyAnKCcgKyAoJGRhdGEpICsgJykpICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnICcgKyAoJGZvcm1hdCkgKyAnKCcgKyAoJGRhdGEpICsgJykgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgOiAnICsgKCRmb3JtYXQpICsgJy50ZXN0KCcgKyAoJGRhdGEpICsgJykpKSkpIHsnO1xuICB9IGVsc2Uge1xuICAgIHZhciAkZm9ybWF0ID0gaXQuZm9ybWF0c1skc2NoZW1hXTtcbiAgICBpZiAoISRmb3JtYXQpIHtcbiAgICAgIGlmICgkdW5rbm93bkZvcm1hdHMgPT0gJ2lnbm9yZScpIHtcbiAgICAgICAgaXQubG9nZ2VyLndhcm4oJ3Vua25vd24gZm9ybWF0IFwiJyArICRzY2hlbWEgKyAnXCIgaWdub3JlZCBpbiBzY2hlbWEgYXQgcGF0aCBcIicgKyBpdC5lcnJTY2hlbWFQYXRoICsgJ1wiJyk7XG4gICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKHRydWUpIHsgJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgfSBlbHNlIGlmICgkYWxsb3dVbmtub3duICYmICR1bmtub3duRm9ybWF0cy5pbmRleE9mKCRzY2hlbWEpID49IDApIHtcbiAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICBvdXQgKz0gJyBpZiAodHJ1ZSkgeyAnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gZm9ybWF0IFwiJyArICRzY2hlbWEgKyAnXCIgaXMgdXNlZCBpbiBzY2hlbWEgYXQgcGF0aCBcIicgKyBpdC5lcnJTY2hlbWFQYXRoICsgJ1wiJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciAkaXNPYmplY3QgPSB0eXBlb2YgJGZvcm1hdCA9PSAnb2JqZWN0JyAmJiAhKCRmb3JtYXQgaW5zdGFuY2VvZiBSZWdFeHApICYmICRmb3JtYXQudmFsaWRhdGU7XG4gICAgdmFyICRmb3JtYXRUeXBlID0gJGlzT2JqZWN0ICYmICRmb3JtYXQudHlwZSB8fCAnc3RyaW5nJztcbiAgICBpZiAoJGlzT2JqZWN0KSB7XG4gICAgICB2YXIgJGFzeW5jID0gJGZvcm1hdC5hc3luYyA9PT0gdHJ1ZTtcbiAgICAgICRmb3JtYXQgPSAkZm9ybWF0LnZhbGlkYXRlO1xuICAgIH1cbiAgICBpZiAoJGZvcm1hdFR5cGUgIT0gJHJ1bGVUeXBlKSB7XG4gICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICBvdXQgKz0gJyBpZiAodHJ1ZSkgeyAnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG4gICAgaWYgKCRhc3luYykge1xuICAgICAgaWYgKCFpdC5hc3luYykgdGhyb3cgbmV3IEVycm9yKCdhc3luYyBmb3JtYXQgaW4gc3luYyBzY2hlbWEnKTtcbiAgICAgIHZhciAkZm9ybWF0UmVmID0gJ2Zvcm1hdHMnICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgkc2NoZW1hKSArICcudmFsaWRhdGUnO1xuICAgICAgb3V0ICs9ICcgaWYgKCEoYXdhaXQgJyArICgkZm9ybWF0UmVmKSArICcoJyArICgkZGF0YSkgKyAnKSkpIHsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgaWYgKCEgJztcbiAgICAgIHZhciAkZm9ybWF0UmVmID0gJ2Zvcm1hdHMnICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgkc2NoZW1hKTtcbiAgICAgIGlmICgkaXNPYmplY3QpICRmb3JtYXRSZWYgKz0gJy52YWxpZGF0ZSc7XG4gICAgICBpZiAodHlwZW9mICRmb3JtYXQgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvdXQgKz0gJyAnICsgKCRmb3JtYXRSZWYpICsgJygnICsgKCRkYXRhKSArICcpICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyAnICsgKCRmb3JtYXRSZWYpICsgJy50ZXN0KCcgKyAoJGRhdGEpICsgJykgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnKSB7ICc7XG4gICAgfVxuICB9XG4gIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgnZm9ybWF0JykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBmb3JtYXQ6ICAnO1xuICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICBvdXQgKz0gJycgKyAoJHNjaGVtYVZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJHNjaGVtYSkpO1xuICAgIH1cbiAgICBvdXQgKz0gJyAgfSAnO1xuICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgbWF0Y2ggZm9ybWF0IFwiJztcbiAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgIG91dCArPSAnXFwnICsgJyArICgkc2NoZW1hVmFsdWUpICsgJyArIFxcJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHNjaGVtYSkpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICdcIlxcJyAnO1xuICAgIH1cbiAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICBvdXQgKz0gJyAsIHNjaGVtYTogICc7XG4gICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICBvdXQgKz0gJ3ZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJHNjaGVtYSkpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgICAgICAgICAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHt9ICc7XG4gIH1cbiAgdmFyIF9fZXJyID0gb3V0O1xuICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgfVxuICBvdXQgKz0gJyB9ICc7XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfaWYoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICR2YWxpZCA9ICd2YWxpZCcgKyAkbHZsO1xuICB2YXIgJGVycnMgPSAnZXJyc19fJyArICRsdmw7XG4gIHZhciAkaXQgPSBpdC51dGlsLmNvcHkoaXQpO1xuICAkaXQubGV2ZWwrKztcbiAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICB2YXIgJHRoZW5TY2ggPSBpdC5zY2hlbWFbJ3RoZW4nXSxcbiAgICAkZWxzZVNjaCA9IGl0LnNjaGVtYVsnZWxzZSddLFxuICAgICR0aGVuUHJlc2VudCA9ICR0aGVuU2NoICE9PSB1bmRlZmluZWQgJiYgKGl0Lm9wdHMuc3RyaWN0S2V5d29yZHMgPyAodHlwZW9mICR0aGVuU2NoID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCR0aGVuU2NoKS5sZW5ndGggPiAwKSB8fCAkdGhlblNjaCA9PT0gZmFsc2UgOiBpdC51dGlsLnNjaGVtYUhhc1J1bGVzKCR0aGVuU2NoLCBpdC5SVUxFUy5hbGwpKSxcbiAgICAkZWxzZVByZXNlbnQgPSAkZWxzZVNjaCAhPT0gdW5kZWZpbmVkICYmIChpdC5vcHRzLnN0cmljdEtleXdvcmRzID8gKHR5cGVvZiAkZWxzZVNjaCA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkZWxzZVNjaCkubGVuZ3RoID4gMCkgfHwgJGVsc2VTY2ggPT09IGZhbHNlIDogaXQudXRpbC5zY2hlbWFIYXNSdWxlcygkZWxzZVNjaCwgaXQuUlVMRVMuYWxsKSksXG4gICAgJGN1cnJlbnRCYXNlSWQgPSAkaXQuYmFzZUlkO1xuICBpZiAoJHRoZW5QcmVzZW50IHx8ICRlbHNlUHJlc2VudCkge1xuICAgIHZhciAkaWZDbGF1c2U7XG4gICAgJGl0LmNyZWF0ZUVycm9ycyA9IGZhbHNlO1xuICAgICRpdC5zY2hlbWEgPSAkc2NoZW1hO1xuICAgICRpdC5zY2hlbWFQYXRoID0gJHNjaGVtYVBhdGg7XG4gICAgJGl0LmVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aDtcbiAgICBvdXQgKz0gJyB2YXIgJyArICgkZXJycykgKyAnID0gZXJyb3JzOyB2YXIgJyArICgkdmFsaWQpICsgJyA9IHRydWU7ICAnO1xuICAgIHZhciAkd2FzQ29tcG9zaXRlID0gaXQuY29tcG9zaXRlUnVsZTtcbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSB0cnVlO1xuICAgIG91dCArPSAnICAnICsgKGl0LnZhbGlkYXRlKCRpdCkpICsgJyAnO1xuICAgICRpdC5iYXNlSWQgPSAkY3VycmVudEJhc2VJZDtcbiAgICAkaXQuY3JlYXRlRXJyb3JzID0gdHJ1ZTtcbiAgICBvdXQgKz0gJyAgZXJyb3JzID0gJyArICgkZXJycykgKyAnOyBpZiAodkVycm9ycyAhPT0gbnVsbCkgeyBpZiAoJyArICgkZXJycykgKyAnKSB2RXJyb3JzLmxlbmd0aCA9ICcgKyAoJGVycnMpICsgJzsgZWxzZSB2RXJyb3JzID0gbnVsbDsgfSAgJztcbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSAkd2FzQ29tcG9zaXRlO1xuICAgIGlmICgkdGhlblByZXNlbnQpIHtcbiAgICAgIG91dCArPSAnIGlmICgnICsgKCRuZXh0VmFsaWQpICsgJykgeyAgJztcbiAgICAgICRpdC5zY2hlbWEgPSBpdC5zY2hlbWFbJ3RoZW4nXTtcbiAgICAgICRpdC5zY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArICcudGhlbic7XG4gICAgICAkaXQuZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnL3RoZW4nO1xuICAgICAgb3V0ICs9ICcgICcgKyAoaXQudmFsaWRhdGUoJGl0KSkgKyAnICc7XG4gICAgICAkaXQuYmFzZUlkID0gJGN1cnJlbnRCYXNlSWQ7XG4gICAgICBvdXQgKz0gJyAnICsgKCR2YWxpZCkgKyAnID0gJyArICgkbmV4dFZhbGlkKSArICc7ICc7XG4gICAgICBpZiAoJHRoZW5QcmVzZW50ICYmICRlbHNlUHJlc2VudCkge1xuICAgICAgICAkaWZDbGF1c2UgPSAnaWZDbGF1c2UnICsgJGx2bDtcbiAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJGlmQ2xhdXNlKSArICcgPSBcXCd0aGVuXFwnOyAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJGlmQ2xhdXNlID0gJ1xcJ3RoZW5cXCcnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgaWYgKCRlbHNlUHJlc2VudCkge1xuICAgICAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgaWYgKCEnICsgKCRuZXh0VmFsaWQpICsgJykgeyAnO1xuICAgIH1cbiAgICBpZiAoJGVsc2VQcmVzZW50KSB7XG4gICAgICAkaXQuc2NoZW1hID0gaXQuc2NoZW1hWydlbHNlJ107XG4gICAgICAkaXQuc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyAnLmVsc2UnO1xuICAgICAgJGl0LmVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy9lbHNlJztcbiAgICAgIG91dCArPSAnICAnICsgKGl0LnZhbGlkYXRlKCRpdCkpICsgJyAnO1xuICAgICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgICAgb3V0ICs9ICcgJyArICgkdmFsaWQpICsgJyA9ICcgKyAoJG5leHRWYWxpZCkgKyAnOyAnO1xuICAgICAgaWYgKCR0aGVuUHJlc2VudCAmJiAkZWxzZVByZXNlbnQpIHtcbiAgICAgICAgJGlmQ2xhdXNlID0gJ2lmQ2xhdXNlJyArICRsdmw7XG4gICAgICAgIG91dCArPSAnIHZhciAnICsgKCRpZkNsYXVzZSkgKyAnID0gXFwnZWxzZVxcJzsgJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICRpZkNsYXVzZSA9ICdcXCdlbHNlXFwnJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIH0gJztcbiAgICB9XG4gICAgb3V0ICs9ICcgaWYgKCEnICsgKCR2YWxpZCkgKyAnKSB7ICAgdmFyIGVyciA9ICAgJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdpZicpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgZmFpbGluZ0tleXdvcmQ6ICcgKyAoJGlmQ2xhdXNlKSArICcgfSAnO1xuICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIG1hdGNoIFwiXFwnICsgJyArICgkaWZDbGF1c2UpICsgJyArIFxcJ1wiIHNjaGVtYVxcJyAnO1xuICAgICAgfVxuICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB7fSAnO1xuICAgIH1cbiAgICBvdXQgKz0gJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKHZFcnJvcnMpOyAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gdkVycm9yczsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgfVxuICAgIH1cbiAgICBvdXQgKz0gJyB9ICAgJztcbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICBvdXQgKz0gJyBpZiAodHJ1ZSkgeyAnO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9pdGVtcyhpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJHZhbGlkID0gJ3ZhbGlkJyArICRsdmw7XG4gIHZhciAkZXJycyA9ICdlcnJzX18nICsgJGx2bDtcbiAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gIHZhciAkY2xvc2luZ0JyYWNlcyA9ICcnO1xuICAkaXQubGV2ZWwrKztcbiAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICB2YXIgJGlkeCA9ICdpJyArICRsdmwsXG4gICAgJGRhdGFOeHQgPSAkaXQuZGF0YUxldmVsID0gaXQuZGF0YUxldmVsICsgMSxcbiAgICAkbmV4dERhdGEgPSAnZGF0YScgKyAkZGF0YU54dCxcbiAgICAkY3VycmVudEJhc2VJZCA9IGl0LmJhc2VJZDtcbiAgb3V0ICs9ICd2YXIgJyArICgkZXJycykgKyAnID0gZXJyb3JzO3ZhciAnICsgKCR2YWxpZCkgKyAnOyc7XG4gIGlmIChBcnJheS5pc0FycmF5KCRzY2hlbWEpKSB7XG4gICAgdmFyICRhZGRpdGlvbmFsSXRlbXMgPSBpdC5zY2hlbWEuYWRkaXRpb25hbEl0ZW1zO1xuICAgIGlmICgkYWRkaXRpb25hbEl0ZW1zID09PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgJyArICgkdmFsaWQpICsgJyA9ICcgKyAoJGRhdGEpICsgJy5sZW5ndGggPD0gJyArICgkc2NoZW1hLmxlbmd0aCkgKyAnOyAnO1xuICAgICAgdmFyICRjdXJyRXJyU2NoZW1hUGF0aCA9ICRlcnJTY2hlbWFQYXRoO1xuICAgICAgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy9hZGRpdGlvbmFsSXRlbXMnO1xuICAgICAgb3V0ICs9ICcgIGlmICghJyArICgkdmFsaWQpICsgJykgeyAgICc7XG4gICAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICAgIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdhZGRpdGlvbmFsSXRlbXMnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IGxpbWl0OiAnICsgKCRzY2hlbWEubGVuZ3RoKSArICcgfSAnO1xuICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBOT1QgaGF2ZSBtb3JlIHRoYW4gJyArICgkc2NoZW1hLmxlbmd0aCkgKyAnIGl0ZW1zXFwnICc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiBmYWxzZSAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB7fSAnO1xuICAgICAgfVxuICAgICAgdmFyIF9fZXJyID0gb3V0O1xuICAgICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAkZXJyU2NoZW1hUGF0aCA9ICRjdXJyRXJyU2NoZW1hUGF0aDtcbiAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICRjbG9zaW5nQnJhY2VzICs9ICd9JztcbiAgICAgICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBhcnIxID0gJHNjaGVtYTtcbiAgICBpZiAoYXJyMSkge1xuICAgICAgdmFyICRzY2gsICRpID0gLTEsXG4gICAgICAgIGwxID0gYXJyMS5sZW5ndGggLSAxO1xuICAgICAgd2hpbGUgKCRpIDwgbDEpIHtcbiAgICAgICAgJHNjaCA9IGFycjFbJGkgKz0gMV07XG4gICAgICAgIGlmICgoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHNjaCA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkc2NoKS5sZW5ndGggPiAwKSB8fCAkc2NoID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHNjaCwgaXQuUlVMRVMuYWxsKSkpIHtcbiAgICAgICAgICBvdXQgKz0gJyAnICsgKCRuZXh0VmFsaWQpICsgJyA9IHRydWU7IGlmICgnICsgKCRkYXRhKSArICcubGVuZ3RoID4gJyArICgkaSkgKyAnKSB7ICc7XG4gICAgICAgICAgdmFyICRwYXNzRGF0YSA9ICRkYXRhICsgJ1snICsgJGkgKyAnXSc7XG4gICAgICAgICAgJGl0LnNjaGVtYSA9ICRzY2g7XG4gICAgICAgICAgJGl0LnNjaGVtYVBhdGggPSAkc2NoZW1hUGF0aCArICdbJyArICRpICsgJ10nO1xuICAgICAgICAgICRpdC5lcnJTY2hlbWFQYXRoID0gJGVyclNjaGVtYVBhdGggKyAnLycgKyAkaTtcbiAgICAgICAgICAkaXQuZXJyb3JQYXRoID0gaXQudXRpbC5nZXRQYXRoRXhwcihpdC5lcnJvclBhdGgsICRpLCBpdC5vcHRzLmpzb25Qb2ludGVycywgdHJ1ZSk7XG4gICAgICAgICAgJGl0LmRhdGFQYXRoQXJyWyRkYXRhTnh0XSA9ICRpO1xuICAgICAgICAgIHZhciAkY29kZSA9IGl0LnZhbGlkYXRlKCRpdCk7XG4gICAgICAgICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgICAgICAgIGlmIChpdC51dGlsLnZhck9jY3VyZW5jZXMoJGNvZGUsICRuZXh0RGF0YSkgPCAyKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAnICsgKGl0LnV0aWwudmFyUmVwbGFjZSgkY29kZSwgJG5leHREYXRhLCAkcGFzc0RhdGEpKSArICcgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJG5leHREYXRhKSArICcgPSAnICsgKCRwYXNzRGF0YSkgKyAnOyAnICsgKCRjb2RlKSArICcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgfSAgJztcbiAgICAgICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJG5leHRWYWxpZCkgKyAnKSB7ICc7XG4gICAgICAgICAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgJGFkZGl0aW9uYWxJdGVtcyA9PSAnb2JqZWN0JyAmJiAoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJGFkZGl0aW9uYWxJdGVtcyA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkYWRkaXRpb25hbEl0ZW1zKS5sZW5ndGggPiAwKSB8fCAkYWRkaXRpb25hbEl0ZW1zID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJGFkZGl0aW9uYWxJdGVtcywgaXQuUlVMRVMuYWxsKSkpIHtcbiAgICAgICRpdC5zY2hlbWEgPSAkYWRkaXRpb25hbEl0ZW1zO1xuICAgICAgJGl0LnNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgJy5hZGRpdGlvbmFsSXRlbXMnO1xuICAgICAgJGl0LmVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy9hZGRpdGlvbmFsSXRlbXMnO1xuICAgICAgb3V0ICs9ICcgJyArICgkbmV4dFZhbGlkKSArICcgPSB0cnVlOyBpZiAoJyArICgkZGF0YSkgKyAnLmxlbmd0aCA+ICcgKyAoJHNjaGVtYS5sZW5ndGgpICsgJykgeyAgZm9yICh2YXIgJyArICgkaWR4KSArICcgPSAnICsgKCRzY2hlbWEubGVuZ3RoKSArICc7ICcgKyAoJGlkeCkgKyAnIDwgJyArICgkZGF0YSkgKyAnLmxlbmd0aDsgJyArICgkaWR4KSArICcrKykgeyAnO1xuICAgICAgJGl0LmVycm9yUGF0aCA9IGl0LnV0aWwuZ2V0UGF0aEV4cHIoaXQuZXJyb3JQYXRoLCAkaWR4LCBpdC5vcHRzLmpzb25Qb2ludGVycywgdHJ1ZSk7XG4gICAgICB2YXIgJHBhc3NEYXRhID0gJGRhdGEgKyAnWycgKyAkaWR4ICsgJ10nO1xuICAgICAgJGl0LmRhdGFQYXRoQXJyWyRkYXRhTnh0XSA9ICRpZHg7XG4gICAgICB2YXIgJGNvZGUgPSBpdC52YWxpZGF0ZSgkaXQpO1xuICAgICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgICAgaWYgKGl0LnV0aWwudmFyT2NjdXJlbmNlcygkY29kZSwgJG5leHREYXRhKSA8IDIpIHtcbiAgICAgICAgb3V0ICs9ICcgJyArIChpdC51dGlsLnZhclJlcGxhY2UoJGNvZGUsICRuZXh0RGF0YSwgJHBhc3NEYXRhKSkgKyAnICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB2YXIgJyArICgkbmV4dERhdGEpICsgJyA9ICcgKyAoJHBhc3NEYXRhKSArICc7ICcgKyAoJGNvZGUpICsgJyAnO1xuICAgICAgfVxuICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgb3V0ICs9ICcgaWYgKCEnICsgKCRuZXh0VmFsaWQpICsgJykgYnJlYWs7ICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9IH0gICc7XG4gICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkbmV4dFZhbGlkKSArICcpIHsgJztcbiAgICAgICAgJGNsb3NpbmdCcmFjZXMgKz0gJ30nO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmICgoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHNjaGVtYSA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkc2NoZW1hKS5sZW5ndGggPiAwKSB8fCAkc2NoZW1hID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHNjaGVtYSwgaXQuUlVMRVMuYWxsKSkpIHtcbiAgICAkaXQuc2NoZW1hID0gJHNjaGVtYTtcbiAgICAkaXQuc2NoZW1hUGF0aCA9ICRzY2hlbWFQYXRoO1xuICAgICRpdC5lcnJTY2hlbWFQYXRoID0gJGVyclNjaGVtYVBhdGg7XG4gICAgb3V0ICs9ICcgIGZvciAodmFyICcgKyAoJGlkeCkgKyAnID0gJyArICgwKSArICc7ICcgKyAoJGlkeCkgKyAnIDwgJyArICgkZGF0YSkgKyAnLmxlbmd0aDsgJyArICgkaWR4KSArICcrKykgeyAnO1xuICAgICRpdC5lcnJvclBhdGggPSBpdC51dGlsLmdldFBhdGhFeHByKGl0LmVycm9yUGF0aCwgJGlkeCwgaXQub3B0cy5qc29uUG9pbnRlcnMsIHRydWUpO1xuICAgIHZhciAkcGFzc0RhdGEgPSAkZGF0YSArICdbJyArICRpZHggKyAnXSc7XG4gICAgJGl0LmRhdGFQYXRoQXJyWyRkYXRhTnh0XSA9ICRpZHg7XG4gICAgdmFyICRjb2RlID0gaXQudmFsaWRhdGUoJGl0KTtcbiAgICAkaXQuYmFzZUlkID0gJGN1cnJlbnRCYXNlSWQ7XG4gICAgaWYgKGl0LnV0aWwudmFyT2NjdXJlbmNlcygkY29kZSwgJG5leHREYXRhKSA8IDIpIHtcbiAgICAgIG91dCArPSAnICcgKyAoaXQudXRpbC52YXJSZXBsYWNlKCRjb2RlLCAkbmV4dERhdGEsICRwYXNzRGF0YSkpICsgJyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YXIgJyArICgkbmV4dERhdGEpICsgJyA9ICcgKyAoJHBhc3NEYXRhKSArICc7ICcgKyAoJGNvZGUpICsgJyAnO1xuICAgIH1cbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgaWYgKCEnICsgKCRuZXh0VmFsaWQpICsgJykgYnJlYWs7ICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0nO1xuICB9XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgJyArICgkY2xvc2luZ0JyYWNlcykgKyAnIGlmICgnICsgKCRlcnJzKSArICcgPT0gZXJyb3JzKSB7JztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9fbGltaXQoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRlcnJvcktleXdvcmQ7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkaXNEYXRhID0gaXQub3B0cy4kZGF0YSAmJiAkc2NoZW1hICYmICRzY2hlbWEuJGRhdGEsXG4gICAgJHNjaGVtYVZhbHVlO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnIHZhciBzY2hlbWEnICsgKCRsdmwpICsgJyA9ICcgKyAoaXQudXRpbC5nZXREYXRhKCRzY2hlbWEuJGRhdGEsICRkYXRhTHZsLCBpdC5kYXRhUGF0aEFycikpICsgJzsgJztcbiAgICAkc2NoZW1hVmFsdWUgPSAnc2NoZW1hJyArICRsdmw7XG4gIH0gZWxzZSB7XG4gICAgJHNjaGVtYVZhbHVlID0gJHNjaGVtYTtcbiAgfVxuICB2YXIgJGlzTWF4ID0gJGtleXdvcmQgPT0gJ21heGltdW0nLFxuICAgICRleGNsdXNpdmVLZXl3b3JkID0gJGlzTWF4ID8gJ2V4Y2x1c2l2ZU1heGltdW0nIDogJ2V4Y2x1c2l2ZU1pbmltdW0nLFxuICAgICRzY2hlbWFFeGNsID0gaXQuc2NoZW1hWyRleGNsdXNpdmVLZXl3b3JkXSxcbiAgICAkaXNEYXRhRXhjbCA9IGl0Lm9wdHMuJGRhdGEgJiYgJHNjaGVtYUV4Y2wgJiYgJHNjaGVtYUV4Y2wuJGRhdGEsXG4gICAgJG9wID0gJGlzTWF4ID8gJzwnIDogJz4nLFxuICAgICRub3RPcCA9ICRpc01heCA/ICc+JyA6ICc8JyxcbiAgICAkZXJyb3JLZXl3b3JkID0gdW5kZWZpbmVkO1xuICBpZiAoISgkaXNEYXRhIHx8IHR5cGVvZiAkc2NoZW1hID09ICdudW1iZXInIHx8ICRzY2hlbWEgPT09IHVuZGVmaW5lZCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJGtleXdvcmQgKyAnIG11c3QgYmUgbnVtYmVyJyk7XG4gIH1cbiAgaWYgKCEoJGlzRGF0YUV4Y2wgfHwgJHNjaGVtYUV4Y2wgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgJHNjaGVtYUV4Y2wgPT0gJ251bWJlcicgfHwgdHlwZW9mICRzY2hlbWFFeGNsID09ICdib29sZWFuJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJGV4Y2x1c2l2ZUtleXdvcmQgKyAnIG11c3QgYmUgbnVtYmVyIG9yIGJvb2xlYW4nKTtcbiAgfVxuICBpZiAoJGlzRGF0YUV4Y2wpIHtcbiAgICB2YXIgJHNjaGVtYVZhbHVlRXhjbCA9IGl0LnV0aWwuZ2V0RGF0YSgkc2NoZW1hRXhjbC4kZGF0YSwgJGRhdGFMdmwsIGl0LmRhdGFQYXRoQXJyKSxcbiAgICAgICRleGNsdXNpdmUgPSAnZXhjbHVzaXZlJyArICRsdmwsXG4gICAgICAkZXhjbFR5cGUgPSAnZXhjbFR5cGUnICsgJGx2bCxcbiAgICAgICRleGNsSXNOdW1iZXIgPSAnZXhjbElzTnVtYmVyJyArICRsdmwsXG4gICAgICAkb3BFeHByID0gJ29wJyArICRsdmwsXG4gICAgICAkb3BTdHIgPSAnXFwnICsgJyArICRvcEV4cHIgKyAnICsgXFwnJztcbiAgICBvdXQgKz0gJyB2YXIgc2NoZW1hRXhjbCcgKyAoJGx2bCkgKyAnID0gJyArICgkc2NoZW1hVmFsdWVFeGNsKSArICc7ICc7XG4gICAgJHNjaGVtYVZhbHVlRXhjbCA9ICdzY2hlbWFFeGNsJyArICRsdmw7XG4gICAgb3V0ICs9ICcgdmFyICcgKyAoJGV4Y2x1c2l2ZSkgKyAnOyB2YXIgJyArICgkZXhjbFR5cGUpICsgJyA9IHR5cGVvZiAnICsgKCRzY2hlbWFWYWx1ZUV4Y2wpICsgJzsgaWYgKCcgKyAoJGV4Y2xUeXBlKSArICcgIT0gXFwnYm9vbGVhblxcJyAmJiAnICsgKCRleGNsVHlwZSkgKyAnICE9IFxcJ3VuZGVmaW5lZFxcJyAmJiAnICsgKCRleGNsVHlwZSkgKyAnICE9IFxcJ251bWJlclxcJykgeyAnO1xuICAgIHZhciAkZXJyb3JLZXl3b3JkID0gJGV4Y2x1c2l2ZUtleXdvcmQ7XG4gICAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJGVycm9yS2V5d29yZCB8fCAnX2V4Y2x1c2l2ZUxpbWl0JykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczoge30gJztcbiAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJycgKyAoJGV4Y2x1c2l2ZUtleXdvcmQpICsgJyBzaG91bGQgYmUgYm9vbGVhblxcJyAnO1xuICAgICAgfVxuICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB7fSAnO1xuICAgIH1cbiAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gZWxzZSBpZiAoICc7XG4gICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgIG91dCArPSAnICgnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mICcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT0gXFwnbnVtYmVyXFwnKSB8fCAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyAnICsgKCRleGNsVHlwZSkgKyAnID09IFxcJ251bWJlclxcJyA/ICggKCcgKyAoJGV4Y2x1c2l2ZSkgKyAnID0gJyArICgkc2NoZW1hVmFsdWUpICsgJyA9PT0gdW5kZWZpbmVkIHx8ICcgKyAoJHNjaGVtYVZhbHVlRXhjbCkgKyAnICcgKyAoJG9wKSArICc9ICcgKyAoJHNjaGVtYVZhbHVlKSArICcpID8gJyArICgkZGF0YSkgKyAnICcgKyAoJG5vdE9wKSArICc9ICcgKyAoJHNjaGVtYVZhbHVlRXhjbCkgKyAnIDogJyArICgkZGF0YSkgKyAnICcgKyAoJG5vdE9wKSArICcgJyArICgkc2NoZW1hVmFsdWUpICsgJyApIDogKCAoJyArICgkZXhjbHVzaXZlKSArICcgPSAnICsgKCRzY2hlbWFWYWx1ZUV4Y2wpICsgJyA9PT0gdHJ1ZSkgPyAnICsgKCRkYXRhKSArICcgJyArICgkbm90T3ApICsgJz0gJyArICgkc2NoZW1hVmFsdWUpICsgJyA6ICcgKyAoJGRhdGEpICsgJyAnICsgKCRub3RPcCkgKyAnICcgKyAoJHNjaGVtYVZhbHVlKSArICcgKSB8fCAnICsgKCRkYXRhKSArICcgIT09ICcgKyAoJGRhdGEpICsgJykgeyB2YXIgb3AnICsgKCRsdmwpICsgJyA9ICcgKyAoJGV4Y2x1c2l2ZSkgKyAnID8gXFwnJyArICgkb3ApICsgJ1xcJyA6IFxcJycgKyAoJG9wKSArICc9XFwnOyAnO1xuICAgIGlmICgkc2NoZW1hID09PSB1bmRlZmluZWQpIHtcbiAgICAgICRlcnJvcktleXdvcmQgPSAkZXhjbHVzaXZlS2V5d29yZDtcbiAgICAgICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRleGNsdXNpdmVLZXl3b3JkO1xuICAgICAgJHNjaGVtYVZhbHVlID0gJHNjaGVtYVZhbHVlRXhjbDtcbiAgICAgICRpc0RhdGEgPSAkaXNEYXRhRXhjbDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyICRleGNsSXNOdW1iZXIgPSB0eXBlb2YgJHNjaGVtYUV4Y2wgPT0gJ251bWJlcicsXG4gICAgICAkb3BTdHIgPSAkb3A7XG4gICAgaWYgKCRleGNsSXNOdW1iZXIgJiYgJGlzRGF0YSkge1xuICAgICAgdmFyICRvcEV4cHIgPSAnXFwnJyArICRvcFN0ciArICdcXCcnO1xuICAgICAgb3V0ICs9ICcgaWYgKCAnO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICcgKCcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPSBcXCdudW1iZXJcXCcpIHx8ICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyAoICcgKyAoJHNjaGVtYVZhbHVlKSArICcgPT09IHVuZGVmaW5lZCB8fCAnICsgKCRzY2hlbWFFeGNsKSArICcgJyArICgkb3ApICsgJz0gJyArICgkc2NoZW1hVmFsdWUpICsgJyA/ICcgKyAoJGRhdGEpICsgJyAnICsgKCRub3RPcCkgKyAnPSAnICsgKCRzY2hlbWFFeGNsKSArICcgOiAnICsgKCRkYXRhKSArICcgJyArICgkbm90T3ApICsgJyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICkgfHwgJyArICgkZGF0YSkgKyAnICE9PSAnICsgKCRkYXRhKSArICcpIHsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCRleGNsSXNOdW1iZXIgJiYgJHNjaGVtYSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICRleGNsdXNpdmUgPSB0cnVlO1xuICAgICAgICAkZXJyb3JLZXl3b3JkID0gJGV4Y2x1c2l2ZUtleXdvcmQ7XG4gICAgICAgICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRleGNsdXNpdmVLZXl3b3JkO1xuICAgICAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hRXhjbDtcbiAgICAgICAgJG5vdE9wICs9ICc9JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICgkZXhjbElzTnVtYmVyKSAkc2NoZW1hVmFsdWUgPSBNYXRoWyRpc01heCA/ICdtaW4nIDogJ21heCddKCRzY2hlbWFFeGNsLCAkc2NoZW1hKTtcbiAgICAgICAgaWYgKCRzY2hlbWFFeGNsID09PSAoJGV4Y2xJc051bWJlciA/ICRzY2hlbWFWYWx1ZSA6IHRydWUpKSB7XG4gICAgICAgICAgJGV4Y2x1c2l2ZSA9IHRydWU7XG4gICAgICAgICAgJGVycm9yS2V5d29yZCA9ICRleGNsdXNpdmVLZXl3b3JkO1xuICAgICAgICAgICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRleGNsdXNpdmVLZXl3b3JkO1xuICAgICAgICAgICRub3RPcCArPSAnPSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgJGV4Y2x1c2l2ZSA9IGZhbHNlO1xuICAgICAgICAgICRvcFN0ciArPSAnPSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciAkb3BFeHByID0gJ1xcJycgKyAkb3BTdHIgKyAnXFwnJztcbiAgICAgIG91dCArPSAnIGlmICggJztcbiAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgIG91dCArPSAnICgnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mICcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT0gXFwnbnVtYmVyXFwnKSB8fCAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgJyArICgkZGF0YSkgKyAnICcgKyAoJG5vdE9wKSArICcgJyArICgkc2NoZW1hVmFsdWUpICsgJyB8fCAnICsgKCRkYXRhKSArICcgIT09ICcgKyAoJGRhdGEpICsgJykgeyAnO1xuICAgIH1cbiAgfVxuICAkZXJyb3JLZXl3b3JkID0gJGVycm9yS2V5d29yZCB8fCAka2V5d29yZDtcbiAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCRlcnJvcktleXdvcmQgfHwgJ19saW1pdCcpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgY29tcGFyaXNvbjogJyArICgkb3BFeHByKSArICcsIGxpbWl0OiAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnLCBleGNsdXNpdmU6ICcgKyAoJGV4Y2x1c2l2ZSkgKyAnIH0gJztcbiAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIGJlICcgKyAoJG9wU3RyKSArICcgJztcbiAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgIG91dCArPSAnXFwnICsgJyArICgkc2NoZW1hVmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKCRzY2hlbWFWYWx1ZSkgKyAnXFwnJztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6ICAnO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICd2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArICgkc2NoZW1hKTtcbiAgICAgIH1cbiAgICAgIG91dCArPSAnICAgICAgICAgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gJztcbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB7fSAnO1xuICB9XG4gIHZhciBfX2VyciA9IG91dDtcbiAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gIH1cbiAgb3V0ICs9ICcgfSAnO1xuICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgIG91dCArPSAnIGVsc2UgeyAnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX19saW1pdEl0ZW1zKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZXJyb3JLZXl3b3JkO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJGlzRGF0YSA9IGl0Lm9wdHMuJGRhdGEgJiYgJHNjaGVtYSAmJiAkc2NoZW1hLiRkYXRhLFxuICAgICRzY2hlbWFWYWx1ZTtcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyB2YXIgc2NoZW1hJyArICgkbHZsKSArICcgPSAnICsgKGl0LnV0aWwuZ2V0RGF0YSgkc2NoZW1hLiRkYXRhLCAkZGF0YUx2bCwgaXQuZGF0YVBhdGhBcnIpKSArICc7ICc7XG4gICAgJHNjaGVtYVZhbHVlID0gJ3NjaGVtYScgKyAkbHZsO1xuICB9IGVsc2Uge1xuICAgICRzY2hlbWFWYWx1ZSA9ICRzY2hlbWE7XG4gIH1cbiAgaWYgKCEoJGlzRGF0YSB8fCB0eXBlb2YgJHNjaGVtYSA9PSAnbnVtYmVyJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJGtleXdvcmQgKyAnIG11c3QgYmUgbnVtYmVyJyk7XG4gIH1cbiAgdmFyICRvcCA9ICRrZXl3b3JkID09ICdtYXhJdGVtcycgPyAnPicgOiAnPCc7XG4gIG91dCArPSAnaWYgKCAnO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnICgnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mICcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT0gXFwnbnVtYmVyXFwnKSB8fCAnO1xuICB9XG4gIG91dCArPSAnICcgKyAoJGRhdGEpICsgJy5sZW5ndGggJyArICgkb3ApICsgJyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnKSB7ICc7XG4gIHZhciAkZXJyb3JLZXl3b3JkID0gJGtleXdvcmQ7XG4gIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgkZXJyb3JLZXl3b3JkIHx8ICdfbGltaXRJdGVtcycpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgbGltaXQ6ICcgKyAoJHNjaGVtYVZhbHVlKSArICcgfSAnO1xuICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgTk9UIGhhdmUgJztcbiAgICAgIGlmICgka2V5d29yZCA9PSAnbWF4SXRlbXMnKSB7XG4gICAgICAgIG91dCArPSAnbW9yZSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJ2Zld2VyJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIHRoYW4gJztcbiAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgIG91dCArPSAnXFwnICsgJyArICgkc2NoZW1hVmFsdWUpICsgJyArIFxcJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJycgKyAoJHNjaGVtYSk7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyBpdGVtc1xcJyAnO1xuICAgIH1cbiAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICBvdXQgKz0gJyAsIHNjaGVtYTogICc7XG4gICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICBvdXQgKz0gJ3ZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKCRzY2hlbWEpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgICAgICAgICAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHt9ICc7XG4gIH1cbiAgdmFyIF9fZXJyID0gb3V0O1xuICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgfVxuICBvdXQgKz0gJ30gJztcbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9fbGltaXRMZW5ndGgoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRlcnJvcktleXdvcmQ7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkaXNEYXRhID0gaXQub3B0cy4kZGF0YSAmJiAkc2NoZW1hICYmICRzY2hlbWEuJGRhdGEsXG4gICAgJHNjaGVtYVZhbHVlO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnIHZhciBzY2hlbWEnICsgKCRsdmwpICsgJyA9ICcgKyAoaXQudXRpbC5nZXREYXRhKCRzY2hlbWEuJGRhdGEsICRkYXRhTHZsLCBpdC5kYXRhUGF0aEFycikpICsgJzsgJztcbiAgICAkc2NoZW1hVmFsdWUgPSAnc2NoZW1hJyArICRsdmw7XG4gIH0gZWxzZSB7XG4gICAgJHNjaGVtYVZhbHVlID0gJHNjaGVtYTtcbiAgfVxuICBpZiAoISgkaXNEYXRhIHx8IHR5cGVvZiAkc2NoZW1hID09ICdudW1iZXInKSkge1xuICAgIHRocm93IG5ldyBFcnJvcigka2V5d29yZCArICcgbXVzdCBiZSBudW1iZXInKTtcbiAgfVxuICB2YXIgJG9wID0gJGtleXdvcmQgPT0gJ21heExlbmd0aCcgPyAnPicgOiAnPCc7XG4gIG91dCArPSAnaWYgKCAnO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnICgnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mICcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT0gXFwnbnVtYmVyXFwnKSB8fCAnO1xuICB9XG4gIGlmIChpdC5vcHRzLnVuaWNvZGUgPT09IGZhbHNlKSB7XG4gICAgb3V0ICs9ICcgJyArICgkZGF0YSkgKyAnLmxlbmd0aCAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHVjczJsZW5ndGgoJyArICgkZGF0YSkgKyAnKSAnO1xuICB9XG4gIG91dCArPSAnICcgKyAoJG9wKSArICcgJyArICgkc2NoZW1hVmFsdWUpICsgJykgeyAnO1xuICB2YXIgJGVycm9yS2V5d29yZCA9ICRrZXl3b3JkO1xuICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJGVycm9yS2V5d29yZCB8fCAnX2xpbWl0TGVuZ3RoJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBsaW1pdDogJyArICgkc2NoZW1hVmFsdWUpICsgJyB9ICc7XG4gICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBOT1QgYmUgJztcbiAgICAgIGlmICgka2V5d29yZCA9PSAnbWF4TGVuZ3RoJykge1xuICAgICAgICBvdXQgKz0gJ2xvbmdlcic7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJ3Nob3J0ZXInO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgdGhhbiAnO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICdcXCcgKyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICsgXFwnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArICgkc2NoZW1hKTtcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIGNoYXJhY3RlcnNcXCcgJztcbiAgICB9XG4gICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6ICAnO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICd2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArICgkc2NoZW1hKTtcbiAgICAgIH1cbiAgICAgIG91dCArPSAnICAgICAgICAgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gJztcbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB7fSAnO1xuICB9XG4gIHZhciBfX2VyciA9IG91dDtcbiAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gIH1cbiAgb3V0ICs9ICd9ICc7XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfX2xpbWl0UHJvcGVydGllcyhpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGVycm9yS2V5d29yZDtcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICRpc0RhdGEgPSBpdC5vcHRzLiRkYXRhICYmICRzY2hlbWEgJiYgJHNjaGVtYS4kZGF0YSxcbiAgICAkc2NoZW1hVmFsdWU7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyIHNjaGVtYScgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLmdldERhdGEoJHNjaGVtYS4kZGF0YSwgJGRhdGFMdmwsIGl0LmRhdGFQYXRoQXJyKSkgKyAnOyAnO1xuICAgICRzY2hlbWFWYWx1ZSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgfSBlbHNlIHtcbiAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hO1xuICB9XG4gIGlmICghKCRpc0RhdGEgfHwgdHlwZW9mICRzY2hlbWEgPT0gJ251bWJlcicpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCRrZXl3b3JkICsgJyBtdXN0IGJlIG51bWJlcicpO1xuICB9XG4gIHZhciAkb3AgPSAka2V5d29yZCA9PSAnbWF4UHJvcGVydGllcycgPyAnPicgOiAnPCc7XG4gIG91dCArPSAnaWYgKCAnO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnICgnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mICcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT0gXFwnbnVtYmVyXFwnKSB8fCAnO1xuICB9XG4gIG91dCArPSAnIE9iamVjdC5rZXlzKCcgKyAoJGRhdGEpICsgJykubGVuZ3RoICcgKyAoJG9wKSArICcgJyArICgkc2NoZW1hVmFsdWUpICsgJykgeyAnO1xuICB2YXIgJGVycm9yS2V5d29yZCA9ICRrZXl3b3JkO1xuICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJGVycm9yS2V5d29yZCB8fCAnX2xpbWl0UHJvcGVydGllcycpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgbGltaXQ6ICcgKyAoJHNjaGVtYVZhbHVlKSArICcgfSAnO1xuICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgTk9UIGhhdmUgJztcbiAgICAgIGlmICgka2V5d29yZCA9PSAnbWF4UHJvcGVydGllcycpIHtcbiAgICAgICAgb3V0ICs9ICdtb3JlJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnZmV3ZXInO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgdGhhbiAnO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICdcXCcgKyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICsgXFwnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArICgkc2NoZW1hKTtcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIHByb3BlcnRpZXNcXCcgJztcbiAgICB9XG4gICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6ICAnO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICd2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArICgkc2NoZW1hKTtcbiAgICAgIH1cbiAgICAgIG91dCArPSAnICAgICAgICAgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gJztcbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB7fSAnO1xuICB9XG4gIHZhciBfX2VyciA9IG91dDtcbiAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gIH1cbiAgb3V0ICs9ICd9ICc7XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfbXVsdGlwbGVPZihpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJGlzRGF0YSA9IGl0Lm9wdHMuJGRhdGEgJiYgJHNjaGVtYSAmJiAkc2NoZW1hLiRkYXRhLFxuICAgICRzY2hlbWFWYWx1ZTtcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyB2YXIgc2NoZW1hJyArICgkbHZsKSArICcgPSAnICsgKGl0LnV0aWwuZ2V0RGF0YSgkc2NoZW1hLiRkYXRhLCAkZGF0YUx2bCwgaXQuZGF0YVBhdGhBcnIpKSArICc7ICc7XG4gICAgJHNjaGVtYVZhbHVlID0gJ3NjaGVtYScgKyAkbHZsO1xuICB9IGVsc2Uge1xuICAgICRzY2hlbWFWYWx1ZSA9ICRzY2hlbWE7XG4gIH1cbiAgaWYgKCEoJGlzRGF0YSB8fCB0eXBlb2YgJHNjaGVtYSA9PSAnbnVtYmVyJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJGtleXdvcmQgKyAnIG11c3QgYmUgbnVtYmVyJyk7XG4gIH1cbiAgb3V0ICs9ICd2YXIgZGl2aXNpb24nICsgKCRsdmwpICsgJztpZiAoJztcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9PSB1bmRlZmluZWQgJiYgKCB0eXBlb2YgJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPSBcXCdudW1iZXJcXCcgfHwgJztcbiAgfVxuICBvdXQgKz0gJyAoZGl2aXNpb24nICsgKCRsdmwpICsgJyA9ICcgKyAoJGRhdGEpICsgJyAvICcgKyAoJHNjaGVtYVZhbHVlKSArICcsICc7XG4gIGlmIChpdC5vcHRzLm11bHRpcGxlT2ZQcmVjaXNpb24pIHtcbiAgICBvdXQgKz0gJyBNYXRoLmFicyhNYXRoLnJvdW5kKGRpdmlzaW9uJyArICgkbHZsKSArICcpIC0gZGl2aXNpb24nICsgKCRsdmwpICsgJykgPiAxZS0nICsgKGl0Lm9wdHMubXVsdGlwbGVPZlByZWNpc2lvbikgKyAnICc7XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcgZGl2aXNpb24nICsgKCRsdmwpICsgJyAhPT0gcGFyc2VJbnQoZGl2aXNpb24nICsgKCRsdmwpICsgJykgJztcbiAgfVxuICBvdXQgKz0gJyApICc7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgICkgICc7XG4gIH1cbiAgb3V0ICs9ICcgKSB7ICAgJztcbiAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdtdWx0aXBsZU9mJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBtdWx0aXBsZU9mOiAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnIH0gJztcbiAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIGJlIG11bHRpcGxlIG9mICc7XG4gICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICBvdXQgKz0gJ1xcJyArICcgKyAoJHNjaGVtYVZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArICgkc2NoZW1hVmFsdWUpICsgJ1xcJyc7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgIG91dCArPSAnICwgc2NoZW1hOiAgJztcbiAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgIG91dCArPSAndmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJycgKyAoJHNjaGVtYSk7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyAgICAgICAgICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB9ICc7XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcge30gJztcbiAgfVxuICB2YXIgX19lcnIgPSBvdXQ7XG4gIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICB9XG4gIG91dCArPSAnfSAnO1xuICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgIG91dCArPSAnIGVsc2UgeyAnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX25vdChpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJGVycnMgPSAnZXJyc19fJyArICRsdmw7XG4gIHZhciAkaXQgPSBpdC51dGlsLmNvcHkoaXQpO1xuICAkaXQubGV2ZWwrKztcbiAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICBpZiAoKGl0Lm9wdHMuc3RyaWN0S2V5d29yZHMgPyAodHlwZW9mICRzY2hlbWEgPT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoJHNjaGVtYSkubGVuZ3RoID4gMCkgfHwgJHNjaGVtYSA9PT0gZmFsc2UgOiBpdC51dGlsLnNjaGVtYUhhc1J1bGVzKCRzY2hlbWEsIGl0LlJVTEVTLmFsbCkpKSB7XG4gICAgJGl0LnNjaGVtYSA9ICRzY2hlbWE7XG4gICAgJGl0LnNjaGVtYVBhdGggPSAkc2NoZW1hUGF0aDtcbiAgICAkaXQuZXJyU2NoZW1hUGF0aCA9ICRlcnJTY2hlbWFQYXRoO1xuICAgIG91dCArPSAnIHZhciAnICsgKCRlcnJzKSArICcgPSBlcnJvcnM7ICAnO1xuICAgIHZhciAkd2FzQ29tcG9zaXRlID0gaXQuY29tcG9zaXRlUnVsZTtcbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSB0cnVlO1xuICAgICRpdC5jcmVhdGVFcnJvcnMgPSBmYWxzZTtcbiAgICB2YXIgJGFsbEVycm9yc09wdGlvbjtcbiAgICBpZiAoJGl0Lm9wdHMuYWxsRXJyb3JzKSB7XG4gICAgICAkYWxsRXJyb3JzT3B0aW9uID0gJGl0Lm9wdHMuYWxsRXJyb3JzO1xuICAgICAgJGl0Lm9wdHMuYWxsRXJyb3JzID0gZmFsc2U7XG4gICAgfVxuICAgIG91dCArPSAnICcgKyAoaXQudmFsaWRhdGUoJGl0KSkgKyAnICc7XG4gICAgJGl0LmNyZWF0ZUVycm9ycyA9IHRydWU7XG4gICAgaWYgKCRhbGxFcnJvcnNPcHRpb24pICRpdC5vcHRzLmFsbEVycm9ycyA9ICRhbGxFcnJvcnNPcHRpb247XG4gICAgaXQuY29tcG9zaXRlUnVsZSA9ICRpdC5jb21wb3NpdGVSdWxlID0gJHdhc0NvbXBvc2l0ZTtcbiAgICBvdXQgKz0gJyBpZiAoJyArICgkbmV4dFZhbGlkKSArICcpIHsgICAnO1xuICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdub3QnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7fSAnO1xuICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIE5PVCBiZSB2YWxpZFxcJyAnO1xuICAgICAgfVxuICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB7fSAnO1xuICAgIH1cbiAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gZWxzZSB7ICBlcnJvcnMgPSAnICsgKCRlcnJzKSArICc7IGlmICh2RXJyb3JzICE9PSBudWxsKSB7IGlmICgnICsgKCRlcnJzKSArICcpIHZFcnJvcnMubGVuZ3RoID0gJyArICgkZXJycykgKyAnOyBlbHNlIHZFcnJvcnMgPSBudWxsOyB9ICc7XG4gICAgaWYgKGl0Lm9wdHMuYWxsRXJyb3JzKSB7XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnICB2YXIgZXJyID0gICAnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ25vdCcpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHt9ICc7XG4gICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgTk9UIGJlIHZhbGlkXFwnICc7XG4gICAgICB9XG4gICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgfVxuICAgIG91dCArPSAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgIG91dCArPSAnIGlmIChmYWxzZSkgeyAnO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9vbmVPZihpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJHZhbGlkID0gJ3ZhbGlkJyArICRsdmw7XG4gIHZhciAkZXJycyA9ICdlcnJzX18nICsgJGx2bDtcbiAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gIHZhciAkY2xvc2luZ0JyYWNlcyA9ICcnO1xuICAkaXQubGV2ZWwrKztcbiAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICB2YXIgJGN1cnJlbnRCYXNlSWQgPSAkaXQuYmFzZUlkLFxuICAgICRwcmV2VmFsaWQgPSAncHJldlZhbGlkJyArICRsdmwsXG4gICAgJHBhc3NpbmdTY2hlbWFzID0gJ3Bhc3NpbmdTY2hlbWFzJyArICRsdmw7XG4gIG91dCArPSAndmFyICcgKyAoJGVycnMpICsgJyA9IGVycm9ycyAsICcgKyAoJHByZXZWYWxpZCkgKyAnID0gZmFsc2UgLCAnICsgKCR2YWxpZCkgKyAnID0gZmFsc2UgLCAnICsgKCRwYXNzaW5nU2NoZW1hcykgKyAnID0gbnVsbDsgJztcbiAgdmFyICR3YXNDb21wb3NpdGUgPSBpdC5jb21wb3NpdGVSdWxlO1xuICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSB0cnVlO1xuICB2YXIgYXJyMSA9ICRzY2hlbWE7XG4gIGlmIChhcnIxKSB7XG4gICAgdmFyICRzY2gsICRpID0gLTEsXG4gICAgICBsMSA9IGFycjEubGVuZ3RoIC0gMTtcbiAgICB3aGlsZSAoJGkgPCBsMSkge1xuICAgICAgJHNjaCA9IGFycjFbJGkgKz0gMV07XG4gICAgICBpZiAoKGl0Lm9wdHMuc3RyaWN0S2V5d29yZHMgPyAodHlwZW9mICRzY2ggPT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoJHNjaCkubGVuZ3RoID4gMCkgfHwgJHNjaCA9PT0gZmFsc2UgOiBpdC51dGlsLnNjaGVtYUhhc1J1bGVzKCRzY2gsIGl0LlJVTEVTLmFsbCkpKSB7XG4gICAgICAgICRpdC5zY2hlbWEgPSAkc2NoO1xuICAgICAgICAkaXQuc2NoZW1hUGF0aCA9ICRzY2hlbWFQYXRoICsgJ1snICsgJGkgKyAnXSc7XG4gICAgICAgICRpdC5lcnJTY2hlbWFQYXRoID0gJGVyclNjaGVtYVBhdGggKyAnLycgKyAkaTtcbiAgICAgICAgb3V0ICs9ICcgICcgKyAoaXQudmFsaWRhdGUoJGl0KSkgKyAnICc7XG4gICAgICAgICRpdC5iYXNlSWQgPSAkY3VycmVudEJhc2VJZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHZhciAnICsgKCRuZXh0VmFsaWQpICsgJyA9IHRydWU7ICc7XG4gICAgICB9XG4gICAgICBpZiAoJGkpIHtcbiAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJG5leHRWYWxpZCkgKyAnICYmICcgKyAoJHByZXZWYWxpZCkgKyAnKSB7ICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZTsgJyArICgkcGFzc2luZ1NjaGVtYXMpICsgJyA9IFsnICsgKCRwYXNzaW5nU2NoZW1hcykgKyAnLCAnICsgKCRpKSArICddOyB9IGVsc2UgeyAnO1xuICAgICAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyBpZiAoJyArICgkbmV4dFZhbGlkKSArICcpIHsgJyArICgkdmFsaWQpICsgJyA9ICcgKyAoJHByZXZWYWxpZCkgKyAnID0gdHJ1ZTsgJyArICgkcGFzc2luZ1NjaGVtYXMpICsgJyA9ICcgKyAoJGkpICsgJzsgfSc7XG4gICAgfVxuICB9XG4gIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9ICR3YXNDb21wb3NpdGU7XG4gIG91dCArPSAnJyArICgkY2xvc2luZ0JyYWNlcykgKyAnaWYgKCEnICsgKCR2YWxpZCkgKyAnKSB7ICAgdmFyIGVyciA9ICAgJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ29uZU9mJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBwYXNzaW5nU2NoZW1hczogJyArICgkcGFzc2luZ1NjaGVtYXMpICsgJyB9ICc7XG4gICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBtYXRjaCBleGFjdGx5IG9uZSBzY2hlbWEgaW4gb25lT2ZcXCcgJztcbiAgICB9XG4gICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHt9ICc7XG4gIH1cbiAgb3V0ICs9ICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IodkVycm9ycyk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IHZFcnJvcnM7IHJldHVybiBmYWxzZTsgJztcbiAgICB9XG4gIH1cbiAgb3V0ICs9ICd9IGVsc2UgeyAgZXJyb3JzID0gJyArICgkZXJycykgKyAnOyBpZiAodkVycm9ycyAhPT0gbnVsbCkgeyBpZiAoJyArICgkZXJycykgKyAnKSB2RXJyb3JzLmxlbmd0aCA9ICcgKyAoJGVycnMpICsgJzsgZWxzZSB2RXJyb3JzID0gbnVsbDsgfSc7XG4gIGlmIChpdC5vcHRzLmFsbEVycm9ycykge1xuICAgIG91dCArPSAnIH0gJztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9wYXR0ZXJuKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkaXNEYXRhID0gaXQub3B0cy4kZGF0YSAmJiAkc2NoZW1hICYmICRzY2hlbWEuJGRhdGEsXG4gICAgJHNjaGVtYVZhbHVlO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnIHZhciBzY2hlbWEnICsgKCRsdmwpICsgJyA9ICcgKyAoaXQudXRpbC5nZXREYXRhKCRzY2hlbWEuJGRhdGEsICRkYXRhTHZsLCBpdC5kYXRhUGF0aEFycikpICsgJzsgJztcbiAgICAkc2NoZW1hVmFsdWUgPSAnc2NoZW1hJyArICRsdmw7XG4gIH0gZWxzZSB7XG4gICAgJHNjaGVtYVZhbHVlID0gJHNjaGVtYTtcbiAgfVxuICB2YXIgJHJlZ2V4cCA9ICRpc0RhdGEgPyAnKG5ldyBSZWdFeHAoJyArICRzY2hlbWFWYWx1ZSArICcpKScgOiBpdC51c2VQYXR0ZXJuKCRzY2hlbWEpO1xuICBvdXQgKz0gJ2lmICggJztcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyAoJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9IFxcJ3N0cmluZ1xcJykgfHwgJztcbiAgfVxuICBvdXQgKz0gJyAhJyArICgkcmVnZXhwKSArICcudGVzdCgnICsgKCRkYXRhKSArICcpICkgeyAgICc7XG4gIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgncGF0dGVybicpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgcGF0dGVybjogICc7XG4gICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgIG91dCArPSAnJyArICgkc2NoZW1hVmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJycgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkc2NoZW1hKSk7XG4gICAgfVxuICAgIG91dCArPSAnICB9ICc7XG4gICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBtYXRjaCBwYXR0ZXJuIFwiJztcbiAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgIG91dCArPSAnXFwnICsgJyArICgkc2NoZW1hVmFsdWUpICsgJyArIFxcJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHNjaGVtYSkpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICdcIlxcJyAnO1xuICAgIH1cbiAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICBvdXQgKz0gJyAsIHNjaGVtYTogICc7XG4gICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICBvdXQgKz0gJ3ZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJHNjaGVtYSkpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgICAgICAgICAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHt9ICc7XG4gIH1cbiAgdmFyIF9fZXJyID0gb3V0O1xuICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgfVxuICBvdXQgKz0gJ30gJztcbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9wcm9wZXJ0aWVzKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkZXJycyA9ICdlcnJzX18nICsgJGx2bDtcbiAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gIHZhciAkY2xvc2luZ0JyYWNlcyA9ICcnO1xuICAkaXQubGV2ZWwrKztcbiAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICB2YXIgJGtleSA9ICdrZXknICsgJGx2bCxcbiAgICAkaWR4ID0gJ2lkeCcgKyAkbHZsLFxuICAgICRkYXRhTnh0ID0gJGl0LmRhdGFMZXZlbCA9IGl0LmRhdGFMZXZlbCArIDEsXG4gICAgJG5leHREYXRhID0gJ2RhdGEnICsgJGRhdGFOeHQsXG4gICAgJGRhdGFQcm9wZXJ0aWVzID0gJ2RhdGFQcm9wZXJ0aWVzJyArICRsdmw7XG4gIHZhciAkc2NoZW1hS2V5cyA9IE9iamVjdC5rZXlzKCRzY2hlbWEgfHwge30pLmZpbHRlcihub3RQcm90byksXG4gICAgJHBQcm9wZXJ0aWVzID0gaXQuc2NoZW1hLnBhdHRlcm5Qcm9wZXJ0aWVzIHx8IHt9LFxuICAgICRwUHJvcGVydHlLZXlzID0gT2JqZWN0LmtleXMoJHBQcm9wZXJ0aWVzKS5maWx0ZXIobm90UHJvdG8pLFxuICAgICRhUHJvcGVydGllcyA9IGl0LnNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyxcbiAgICAkc29tZVByb3BlcnRpZXMgPSAkc2NoZW1hS2V5cy5sZW5ndGggfHwgJHBQcm9wZXJ0eUtleXMubGVuZ3RoLFxuICAgICRub0FkZGl0aW9uYWwgPSAkYVByb3BlcnRpZXMgPT09IGZhbHNlLFxuICAgICRhZGRpdGlvbmFsSXNTY2hlbWEgPSB0eXBlb2YgJGFQcm9wZXJ0aWVzID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRhUHJvcGVydGllcykubGVuZ3RoLFxuICAgICRyZW1vdmVBZGRpdGlvbmFsID0gaXQub3B0cy5yZW1vdmVBZGRpdGlvbmFsLFxuICAgICRjaGVja0FkZGl0aW9uYWwgPSAkbm9BZGRpdGlvbmFsIHx8ICRhZGRpdGlvbmFsSXNTY2hlbWEgfHwgJHJlbW92ZUFkZGl0aW9uYWwsXG4gICAgJG93blByb3BlcnRpZXMgPSBpdC5vcHRzLm93blByb3BlcnRpZXMsXG4gICAgJGN1cnJlbnRCYXNlSWQgPSBpdC5iYXNlSWQ7XG4gIHZhciAkcmVxdWlyZWQgPSBpdC5zY2hlbWEucmVxdWlyZWQ7XG4gIGlmICgkcmVxdWlyZWQgJiYgIShpdC5vcHRzLiRkYXRhICYmICRyZXF1aXJlZC4kZGF0YSkgJiYgJHJlcXVpcmVkLmxlbmd0aCA8IGl0Lm9wdHMubG9vcFJlcXVpcmVkKSB7XG4gICAgdmFyICRyZXF1aXJlZEhhc2ggPSBpdC51dGlsLnRvSGFzaCgkcmVxdWlyZWQpO1xuICB9XG5cbiAgZnVuY3Rpb24gbm90UHJvdG8ocCkge1xuICAgIHJldHVybiBwICE9PSAnX19wcm90b19fJztcbiAgfVxuICBvdXQgKz0gJ3ZhciAnICsgKCRlcnJzKSArICcgPSBlcnJvcnM7dmFyICcgKyAoJG5leHRWYWxpZCkgKyAnID0gdHJ1ZTsnO1xuICBpZiAoJG93blByb3BlcnRpZXMpIHtcbiAgICBvdXQgKz0gJyB2YXIgJyArICgkZGF0YVByb3BlcnRpZXMpICsgJyA9IHVuZGVmaW5lZDsnO1xuICB9XG4gIGlmICgkY2hlY2tBZGRpdGlvbmFsKSB7XG4gICAgaWYgKCRvd25Qcm9wZXJ0aWVzKSB7XG4gICAgICBvdXQgKz0gJyAnICsgKCRkYXRhUHJvcGVydGllcykgKyAnID0gJyArICgkZGF0YVByb3BlcnRpZXMpICsgJyB8fCBPYmplY3Qua2V5cygnICsgKCRkYXRhKSArICcpOyBmb3IgKHZhciAnICsgKCRpZHgpICsgJz0wOyAnICsgKCRpZHgpICsgJzwnICsgKCRkYXRhUHJvcGVydGllcykgKyAnLmxlbmd0aDsgJyArICgkaWR4KSArICcrKykgeyB2YXIgJyArICgka2V5KSArICcgPSAnICsgKCRkYXRhUHJvcGVydGllcykgKyAnWycgKyAoJGlkeCkgKyAnXTsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgZm9yICh2YXIgJyArICgka2V5KSArICcgaW4gJyArICgkZGF0YSkgKyAnKSB7ICc7XG4gICAgfVxuICAgIGlmICgkc29tZVByb3BlcnRpZXMpIHtcbiAgICAgIG91dCArPSAnIHZhciBpc0FkZGl0aW9uYWwnICsgKCRsdmwpICsgJyA9ICEoZmFsc2UgJztcbiAgICAgIGlmICgkc2NoZW1hS2V5cy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKCRzY2hlbWFLZXlzLmxlbmd0aCA+IDgpIHtcbiAgICAgICAgICBvdXQgKz0gJyB8fCB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcuaGFzT3duUHJvcGVydHkoJyArICgka2V5KSArICcpICc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGFycjEgPSAkc2NoZW1hS2V5cztcbiAgICAgICAgICBpZiAoYXJyMSkge1xuICAgICAgICAgICAgdmFyICRwcm9wZXJ0eUtleSwgaTEgPSAtMSxcbiAgICAgICAgICAgICAgbDEgPSBhcnIxLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICB3aGlsZSAoaTEgPCBsMSkge1xuICAgICAgICAgICAgICAkcHJvcGVydHlLZXkgPSBhcnIxW2kxICs9IDFdO1xuICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAnICsgKCRrZXkpICsgJyA9PSAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJHByb3BlcnR5S2V5KSkgKyAnICc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoJHBQcm9wZXJ0eUtleXMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBhcnIyID0gJHBQcm9wZXJ0eUtleXM7XG4gICAgICAgIGlmIChhcnIyKSB7XG4gICAgICAgICAgdmFyICRwUHJvcGVydHksICRpID0gLTEsXG4gICAgICAgICAgICBsMiA9IGFycjIubGVuZ3RoIC0gMTtcbiAgICAgICAgICB3aGlsZSAoJGkgPCBsMikge1xuICAgICAgICAgICAgJHBQcm9wZXJ0eSA9IGFycjJbJGkgKz0gMV07XG4gICAgICAgICAgICBvdXQgKz0gJyB8fCAnICsgKGl0LnVzZVBhdHRlcm4oJHBQcm9wZXJ0eSkpICsgJy50ZXN0KCcgKyAoJGtleSkgKyAnKSAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgb3V0ICs9ICcgKTsgaWYgKGlzQWRkaXRpb25hbCcgKyAoJGx2bCkgKyAnKSB7ICc7XG4gICAgfVxuICAgIGlmICgkcmVtb3ZlQWRkaXRpb25hbCA9PSAnYWxsJykge1xuICAgICAgb3V0ICs9ICcgZGVsZXRlICcgKyAoJGRhdGEpICsgJ1snICsgKCRrZXkpICsgJ107ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciAkY3VycmVudEVycm9yUGF0aCA9IGl0LmVycm9yUGF0aDtcbiAgICAgIHZhciAkYWRkaXRpb25hbFByb3BlcnR5ID0gJ1xcJyArICcgKyAka2V5ICsgJyArIFxcJyc7XG4gICAgICBpZiAoaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5KSB7XG4gICAgICAgIGl0LmVycm9yUGF0aCA9IGl0LnV0aWwuZ2V0UGF0aEV4cHIoaXQuZXJyb3JQYXRoLCAka2V5LCBpdC5vcHRzLmpzb25Qb2ludGVycyk7XG4gICAgICB9XG4gICAgICBpZiAoJG5vQWRkaXRpb25hbCkge1xuICAgICAgICBpZiAoJHJlbW92ZUFkZGl0aW9uYWwpIHtcbiAgICAgICAgICBvdXQgKz0gJyBkZWxldGUgJyArICgkZGF0YSkgKyAnWycgKyAoJGtleSkgKyAnXTsgJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJyAnICsgKCRuZXh0VmFsaWQpICsgJyA9IGZhbHNlOyAnO1xuICAgICAgICAgIHZhciAkY3VyckVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aDtcbiAgICAgICAgICAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnL2FkZGl0aW9uYWxQcm9wZXJ0aWVzJztcbiAgICAgICAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgICAgICAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gICAgICAgICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgnYWRkaXRpb25hbFByb3BlcnRpZXMnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IGFkZGl0aW9uYWxQcm9wZXJ0eTogXFwnJyArICgkYWRkaXRpb25hbFByb3BlcnR5KSArICdcXCcgfSAnO1xuICAgICAgICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnJztcbiAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIG91dCArPSAnaXMgYW4gaW52YWxpZCBhZGRpdGlvbmFsIHByb3BlcnR5JztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvdXQgKz0gJ3Nob3VsZCBOT1QgaGF2ZSBhZGRpdGlvbmFsIHByb3BlcnRpZXMnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG91dCArPSAnXFwnICc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiBmYWxzZSAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIF9fZXJyID0gb3V0O1xuICAgICAgICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgICAgICAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICAkZXJyU2NoZW1hUGF0aCA9ICRjdXJyRXJyU2NoZW1hUGF0aDtcbiAgICAgICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgICAgb3V0ICs9ICcgYnJlYWs7ICc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCRhZGRpdGlvbmFsSXNTY2hlbWEpIHtcbiAgICAgICAgaWYgKCRyZW1vdmVBZGRpdGlvbmFsID09ICdmYWlsaW5nJykge1xuICAgICAgICAgIG91dCArPSAnIHZhciAnICsgKCRlcnJzKSArICcgPSBlcnJvcnM7ICAnO1xuICAgICAgICAgIHZhciAkd2FzQ29tcG9zaXRlID0gaXQuY29tcG9zaXRlUnVsZTtcbiAgICAgICAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSB0cnVlO1xuICAgICAgICAgICRpdC5zY2hlbWEgPSAkYVByb3BlcnRpZXM7XG4gICAgICAgICAgJGl0LnNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgJy5hZGRpdGlvbmFsUHJvcGVydGllcyc7XG4gICAgICAgICAgJGl0LmVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy9hZGRpdGlvbmFsUHJvcGVydGllcyc7XG4gICAgICAgICAgJGl0LmVycm9yUGF0aCA9IGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSA/IGl0LmVycm9yUGF0aCA6IGl0LnV0aWwuZ2V0UGF0aEV4cHIoaXQuZXJyb3JQYXRoLCAka2V5LCBpdC5vcHRzLmpzb25Qb2ludGVycyk7XG4gICAgICAgICAgdmFyICRwYXNzRGF0YSA9ICRkYXRhICsgJ1snICsgJGtleSArICddJztcbiAgICAgICAgICAkaXQuZGF0YVBhdGhBcnJbJGRhdGFOeHRdID0gJGtleTtcbiAgICAgICAgICB2YXIgJGNvZGUgPSBpdC52YWxpZGF0ZSgkaXQpO1xuICAgICAgICAgICRpdC5iYXNlSWQgPSAkY3VycmVudEJhc2VJZDtcbiAgICAgICAgICBpZiAoaXQudXRpbC52YXJPY2N1cmVuY2VzKCRjb2RlLCAkbmV4dERhdGEpIDwgMikge1xuICAgICAgICAgICAgb3V0ICs9ICcgJyArIChpdC51dGlsLnZhclJlcGxhY2UoJGNvZGUsICRuZXh0RGF0YSwgJHBhc3NEYXRhKSkgKyAnICc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dCArPSAnIHZhciAnICsgKCRuZXh0RGF0YSkgKyAnID0gJyArICgkcGFzc0RhdGEpICsgJzsgJyArICgkY29kZSkgKyAnICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIG91dCArPSAnIGlmICghJyArICgkbmV4dFZhbGlkKSArICcpIHsgZXJyb3JzID0gJyArICgkZXJycykgKyAnOyBpZiAodmFsaWRhdGUuZXJyb3JzICE9PSBudWxsKSB7IGlmIChlcnJvcnMpIHZhbGlkYXRlLmVycm9ycy5sZW5ndGggPSBlcnJvcnM7IGVsc2UgdmFsaWRhdGUuZXJyb3JzID0gbnVsbDsgfSBkZWxldGUgJyArICgkZGF0YSkgKyAnWycgKyAoJGtleSkgKyAnXTsgfSAgJztcbiAgICAgICAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSAkd2FzQ29tcG9zaXRlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICRpdC5zY2hlbWEgPSAkYVByb3BlcnRpZXM7XG4gICAgICAgICAgJGl0LnNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgJy5hZGRpdGlvbmFsUHJvcGVydGllcyc7XG4gICAgICAgICAgJGl0LmVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy9hZGRpdGlvbmFsUHJvcGVydGllcyc7XG4gICAgICAgICAgJGl0LmVycm9yUGF0aCA9IGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSA/IGl0LmVycm9yUGF0aCA6IGl0LnV0aWwuZ2V0UGF0aEV4cHIoaXQuZXJyb3JQYXRoLCAka2V5LCBpdC5vcHRzLmpzb25Qb2ludGVycyk7XG4gICAgICAgICAgdmFyICRwYXNzRGF0YSA9ICRkYXRhICsgJ1snICsgJGtleSArICddJztcbiAgICAgICAgICAkaXQuZGF0YVBhdGhBcnJbJGRhdGFOeHRdID0gJGtleTtcbiAgICAgICAgICB2YXIgJGNvZGUgPSBpdC52YWxpZGF0ZSgkaXQpO1xuICAgICAgICAgICRpdC5iYXNlSWQgPSAkY3VycmVudEJhc2VJZDtcbiAgICAgICAgICBpZiAoaXQudXRpbC52YXJPY2N1cmVuY2VzKCRjb2RlLCAkbmV4dERhdGEpIDwgMikge1xuICAgICAgICAgICAgb3V0ICs9ICcgJyArIChpdC51dGlsLnZhclJlcGxhY2UoJGNvZGUsICRuZXh0RGF0YSwgJHBhc3NEYXRhKSkgKyAnICc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dCArPSAnIHZhciAnICsgKCRuZXh0RGF0YSkgKyAnID0gJyArICgkcGFzc0RhdGEpICsgJzsgJyArICgkY29kZSkgKyAnICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyBpZiAoIScgKyAoJG5leHRWYWxpZCkgKyAnKSBicmVhazsgJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGl0LmVycm9yUGF0aCA9ICRjdXJyZW50RXJyb3JQYXRoO1xuICAgIH1cbiAgICBpZiAoJHNvbWVQcm9wZXJ0aWVzKSB7XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gICc7XG4gICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgIG91dCArPSAnIGlmICgnICsgKCRuZXh0VmFsaWQpICsgJykgeyAnO1xuICAgICAgJGNsb3NpbmdCcmFjZXMgKz0gJ30nO1xuICAgIH1cbiAgfVxuICB2YXIgJHVzZURlZmF1bHRzID0gaXQub3B0cy51c2VEZWZhdWx0cyAmJiAhaXQuY29tcG9zaXRlUnVsZTtcbiAgaWYgKCRzY2hlbWFLZXlzLmxlbmd0aCkge1xuICAgIHZhciBhcnIzID0gJHNjaGVtYUtleXM7XG4gICAgaWYgKGFycjMpIHtcbiAgICAgIHZhciAkcHJvcGVydHlLZXksIGkzID0gLTEsXG4gICAgICAgIGwzID0gYXJyMy5sZW5ndGggLSAxO1xuICAgICAgd2hpbGUgKGkzIDwgbDMpIHtcbiAgICAgICAgJHByb3BlcnR5S2V5ID0gYXJyM1tpMyArPSAxXTtcbiAgICAgICAgdmFyICRzY2ggPSAkc2NoZW1hWyRwcm9wZXJ0eUtleV07XG4gICAgICAgIGlmICgoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHNjaCA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkc2NoKS5sZW5ndGggPiAwKSB8fCAkc2NoID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHNjaCwgaXQuUlVMRVMuYWxsKSkpIHtcbiAgICAgICAgICB2YXIgJHByb3AgPSBpdC51dGlsLmdldFByb3BlcnR5KCRwcm9wZXJ0eUtleSksXG4gICAgICAgICAgICAkcGFzc0RhdGEgPSAkZGF0YSArICRwcm9wLFxuICAgICAgICAgICAgJGhhc0RlZmF1bHQgPSAkdXNlRGVmYXVsdHMgJiYgJHNjaC5kZWZhdWx0ICE9PSB1bmRlZmluZWQ7XG4gICAgICAgICAgJGl0LnNjaGVtYSA9ICRzY2g7XG4gICAgICAgICAgJGl0LnNjaGVtYVBhdGggPSAkc2NoZW1hUGF0aCArICRwcm9wO1xuICAgICAgICAgICRpdC5lcnJTY2hlbWFQYXRoID0gJGVyclNjaGVtYVBhdGggKyAnLycgKyBpdC51dGlsLmVzY2FwZUZyYWdtZW50KCRwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgJGl0LmVycm9yUGF0aCA9IGl0LnV0aWwuZ2V0UGF0aChpdC5lcnJvclBhdGgsICRwcm9wZXJ0eUtleSwgaXQub3B0cy5qc29uUG9pbnRlcnMpO1xuICAgICAgICAgICRpdC5kYXRhUGF0aEFyclskZGF0YU54dF0gPSBpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgdmFyICRjb2RlID0gaXQudmFsaWRhdGUoJGl0KTtcbiAgICAgICAgICAkaXQuYmFzZUlkID0gJGN1cnJlbnRCYXNlSWQ7XG4gICAgICAgICAgaWYgKGl0LnV0aWwudmFyT2NjdXJlbmNlcygkY29kZSwgJG5leHREYXRhKSA8IDIpIHtcbiAgICAgICAgICAgICRjb2RlID0gaXQudXRpbC52YXJSZXBsYWNlKCRjb2RlLCAkbmV4dERhdGEsICRwYXNzRGF0YSk7XG4gICAgICAgICAgICB2YXIgJHVzZURhdGEgPSAkcGFzc0RhdGE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciAkdXNlRGF0YSA9ICRuZXh0RGF0YTtcbiAgICAgICAgICAgIG91dCArPSAnIHZhciAnICsgKCRuZXh0RGF0YSkgKyAnID0gJyArICgkcGFzc0RhdGEpICsgJzsgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCRoYXNEZWZhdWx0KSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAnICsgKCRjb2RlKSArICcgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCRyZXF1aXJlZEhhc2ggJiYgJHJlcXVpcmVkSGFzaFskcHJvcGVydHlLZXldKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnIGlmICggJyArICgkdXNlRGF0YSkgKyAnID09PSB1bmRlZmluZWQgJztcbiAgICAgICAgICAgICAgaWYgKCRvd25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgfHwgISBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoJyArICgkZGF0YSkgKyAnLCBcXCcnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eUtleSkpICsgJ1xcJykgJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBvdXQgKz0gJykgeyAnICsgKCRuZXh0VmFsaWQpICsgJyA9IGZhbHNlOyAnO1xuICAgICAgICAgICAgICB2YXIgJGN1cnJlbnRFcnJvclBhdGggPSBpdC5lcnJvclBhdGgsXG4gICAgICAgICAgICAgICAgJGN1cnJFcnJTY2hlbWFQYXRoID0gJGVyclNjaGVtYVBhdGgsXG4gICAgICAgICAgICAgICAgJG1pc3NpbmdQcm9wZXJ0eSA9IGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICBpdC5lcnJvclBhdGggPSBpdC51dGlsLmdldFBhdGgoJGN1cnJlbnRFcnJvclBhdGgsICRwcm9wZXJ0eUtleSwgaXQub3B0cy5qc29uUG9pbnRlcnMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvcmVxdWlyZWQnO1xuICAgICAgICAgICAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgICAgICAgICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgICAgICAgICAgICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ3JlcXVpcmVkJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBtaXNzaW5nUHJvcGVydHk6IFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFwnIH0gJztcbiAgICAgICAgICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnJztcbiAgICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICdpcyBhIHJlcXVpcmVkIHByb3BlcnR5JztcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG91dCArPSAnc2hvdWxkIGhhdmUgcmVxdWlyZWQgcHJvcGVydHkgXFxcXFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFxcXFxcJyc7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJ1xcJyAnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgICAgICAgICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICRlcnJTY2hlbWFQYXRoID0gJGN1cnJFcnJTY2hlbWFQYXRoO1xuICAgICAgICAgICAgICBpdC5lcnJvclBhdGggPSAkY3VycmVudEVycm9yUGF0aDtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgfSBlbHNlIHsgJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgaWYgKCAnICsgKCR1c2VEYXRhKSArICcgPT09IHVuZGVmaW5lZCAnO1xuICAgICAgICAgICAgICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgfHwgISBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoJyArICgkZGF0YSkgKyAnLCBcXCcnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eUtleSkpICsgJ1xcJykgJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcpIHsgJyArICgkbmV4dFZhbGlkKSArICcgPSB0cnVlOyB9IGVsc2UgeyAnO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG91dCArPSAnIGlmICgnICsgKCR1c2VEYXRhKSArICcgIT09IHVuZGVmaW5lZCAnO1xuICAgICAgICAgICAgICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgJiYgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoJyArICgkZGF0YSkgKyAnLCBcXCcnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eUtleSkpICsgJ1xcJykgJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgKSB7ICc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnICcgKyAoJGNvZGUpICsgJyB9ICc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJG5leHRWYWxpZCkgKyAnKSB7ICc7XG4gICAgICAgICAgJGNsb3NpbmdCcmFjZXMgKz0gJ30nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICgkcFByb3BlcnR5S2V5cy5sZW5ndGgpIHtcbiAgICB2YXIgYXJyNCA9ICRwUHJvcGVydHlLZXlzO1xuICAgIGlmIChhcnI0KSB7XG4gICAgICB2YXIgJHBQcm9wZXJ0eSwgaTQgPSAtMSxcbiAgICAgICAgbDQgPSBhcnI0Lmxlbmd0aCAtIDE7XG4gICAgICB3aGlsZSAoaTQgPCBsNCkge1xuICAgICAgICAkcFByb3BlcnR5ID0gYXJyNFtpNCArPSAxXTtcbiAgICAgICAgdmFyICRzY2ggPSAkcFByb3BlcnRpZXNbJHBQcm9wZXJ0eV07XG4gICAgICAgIGlmICgoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHNjaCA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkc2NoKS5sZW5ndGggPiAwKSB8fCAkc2NoID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHNjaCwgaXQuUlVMRVMuYWxsKSkpIHtcbiAgICAgICAgICAkaXQuc2NoZW1hID0gJHNjaDtcbiAgICAgICAgICAkaXQuc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyAnLnBhdHRlcm5Qcm9wZXJ0aWVzJyArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJHBQcm9wZXJ0eSk7XG4gICAgICAgICAgJGl0LmVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy9wYXR0ZXJuUHJvcGVydGllcy8nICsgaXQudXRpbC5lc2NhcGVGcmFnbWVudCgkcFByb3BlcnR5KTtcbiAgICAgICAgICBpZiAoJG93blByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIG91dCArPSAnICcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICcgPSAnICsgKCRkYXRhUHJvcGVydGllcykgKyAnIHx8IE9iamVjdC5rZXlzKCcgKyAoJGRhdGEpICsgJyk7IGZvciAodmFyICcgKyAoJGlkeCkgKyAnPTA7ICcgKyAoJGlkeCkgKyAnPCcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICcubGVuZ3RoOyAnICsgKCRpZHgpICsgJysrKSB7IHZhciAnICsgKCRrZXkpICsgJyA9ICcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICdbJyArICgkaWR4KSArICddOyAnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXQgKz0gJyBmb3IgKHZhciAnICsgKCRrZXkpICsgJyBpbiAnICsgKCRkYXRhKSArICcpIHsgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoaXQudXNlUGF0dGVybigkcFByb3BlcnR5KSkgKyAnLnRlc3QoJyArICgka2V5KSArICcpKSB7ICc7XG4gICAgICAgICAgJGl0LmVycm9yUGF0aCA9IGl0LnV0aWwuZ2V0UGF0aEV4cHIoaXQuZXJyb3JQYXRoLCAka2V5LCBpdC5vcHRzLmpzb25Qb2ludGVycyk7XG4gICAgICAgICAgdmFyICRwYXNzRGF0YSA9ICRkYXRhICsgJ1snICsgJGtleSArICddJztcbiAgICAgICAgICAkaXQuZGF0YVBhdGhBcnJbJGRhdGFOeHRdID0gJGtleTtcbiAgICAgICAgICB2YXIgJGNvZGUgPSBpdC52YWxpZGF0ZSgkaXQpO1xuICAgICAgICAgICRpdC5iYXNlSWQgPSAkY3VycmVudEJhc2VJZDtcbiAgICAgICAgICBpZiAoaXQudXRpbC52YXJPY2N1cmVuY2VzKCRjb2RlLCAkbmV4dERhdGEpIDwgMikge1xuICAgICAgICAgICAgb3V0ICs9ICcgJyArIChpdC51dGlsLnZhclJlcGxhY2UoJGNvZGUsICRuZXh0RGF0YSwgJHBhc3NEYXRhKSkgKyAnICc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dCArPSAnIHZhciAnICsgKCRuZXh0RGF0YSkgKyAnID0gJyArICgkcGFzc0RhdGEpICsgJzsgJyArICgkY29kZSkgKyAnICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyBpZiAoIScgKyAoJG5leHRWYWxpZCkgKyAnKSBicmVhazsgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyBlbHNlICcgKyAoJG5leHRWYWxpZCkgKyAnID0gdHJ1ZTsgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgfSAgJztcbiAgICAgICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJG5leHRWYWxpZCkgKyAnKSB7ICc7XG4gICAgICAgICAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgJyArICgkY2xvc2luZ0JyYWNlcykgKyAnIGlmICgnICsgKCRlcnJzKSArICcgPT0gZXJyb3JzKSB7JztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9wcm9wZXJ0eU5hbWVzKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkZXJycyA9ICdlcnJzX18nICsgJGx2bDtcbiAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gIHZhciAkY2xvc2luZ0JyYWNlcyA9ICcnO1xuICAkaXQubGV2ZWwrKztcbiAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICBvdXQgKz0gJ3ZhciAnICsgKCRlcnJzKSArICcgPSBlcnJvcnM7JztcbiAgaWYgKChpdC5vcHRzLnN0cmljdEtleXdvcmRzID8gKHR5cGVvZiAkc2NoZW1hID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRzY2hlbWEpLmxlbmd0aCA+IDApIHx8ICRzY2hlbWEgPT09IGZhbHNlIDogaXQudXRpbC5zY2hlbWFIYXNSdWxlcygkc2NoZW1hLCBpdC5SVUxFUy5hbGwpKSkge1xuICAgICRpdC5zY2hlbWEgPSAkc2NoZW1hO1xuICAgICRpdC5zY2hlbWFQYXRoID0gJHNjaGVtYVBhdGg7XG4gICAgJGl0LmVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aDtcbiAgICB2YXIgJGtleSA9ICdrZXknICsgJGx2bCxcbiAgICAgICRpZHggPSAnaWR4JyArICRsdmwsXG4gICAgICAkaSA9ICdpJyArICRsdmwsXG4gICAgICAkaW52YWxpZE5hbWUgPSAnXFwnICsgJyArICRrZXkgKyAnICsgXFwnJyxcbiAgICAgICRkYXRhTnh0ID0gJGl0LmRhdGFMZXZlbCA9IGl0LmRhdGFMZXZlbCArIDEsXG4gICAgICAkbmV4dERhdGEgPSAnZGF0YScgKyAkZGF0YU54dCxcbiAgICAgICRkYXRhUHJvcGVydGllcyA9ICdkYXRhUHJvcGVydGllcycgKyAkbHZsLFxuICAgICAgJG93blByb3BlcnRpZXMgPSBpdC5vcHRzLm93blByb3BlcnRpZXMsXG4gICAgICAkY3VycmVudEJhc2VJZCA9IGl0LmJhc2VJZDtcbiAgICBpZiAoJG93blByb3BlcnRpZXMpIHtcbiAgICAgIG91dCArPSAnIHZhciAnICsgKCRkYXRhUHJvcGVydGllcykgKyAnID0gdW5kZWZpbmVkOyAnO1xuICAgIH1cbiAgICBpZiAoJG93blByb3BlcnRpZXMpIHtcbiAgICAgIG91dCArPSAnICcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICcgPSAnICsgKCRkYXRhUHJvcGVydGllcykgKyAnIHx8IE9iamVjdC5rZXlzKCcgKyAoJGRhdGEpICsgJyk7IGZvciAodmFyICcgKyAoJGlkeCkgKyAnPTA7ICcgKyAoJGlkeCkgKyAnPCcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICcubGVuZ3RoOyAnICsgKCRpZHgpICsgJysrKSB7IHZhciAnICsgKCRrZXkpICsgJyA9ICcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICdbJyArICgkaWR4KSArICddOyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyBmb3IgKHZhciAnICsgKCRrZXkpICsgJyBpbiAnICsgKCRkYXRhKSArICcpIHsgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgdmFyIHN0YXJ0RXJycycgKyAoJGx2bCkgKyAnID0gZXJyb3JzOyAnO1xuICAgIHZhciAkcGFzc0RhdGEgPSAka2V5O1xuICAgIHZhciAkd2FzQ29tcG9zaXRlID0gaXQuY29tcG9zaXRlUnVsZTtcbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSB0cnVlO1xuICAgIHZhciAkY29kZSA9IGl0LnZhbGlkYXRlKCRpdCk7XG4gICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgIGlmIChpdC51dGlsLnZhck9jY3VyZW5jZXMoJGNvZGUsICRuZXh0RGF0YSkgPCAyKSB7XG4gICAgICBvdXQgKz0gJyAnICsgKGl0LnV0aWwudmFyUmVwbGFjZSgkY29kZSwgJG5leHREYXRhLCAkcGFzc0RhdGEpKSArICcgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJG5leHREYXRhKSArICcgPSAnICsgKCRwYXNzRGF0YSkgKyAnOyAnICsgKCRjb2RlKSArICcgJztcbiAgICB9XG4gICAgaXQuY29tcG9zaXRlUnVsZSA9ICRpdC5jb21wb3NpdGVSdWxlID0gJHdhc0NvbXBvc2l0ZTtcbiAgICBvdXQgKz0gJyBpZiAoIScgKyAoJG5leHRWYWxpZCkgKyAnKSB7IGZvciAodmFyICcgKyAoJGkpICsgJz1zdGFydEVycnMnICsgKCRsdmwpICsgJzsgJyArICgkaSkgKyAnPGVycm9yczsgJyArICgkaSkgKyAnKyspIHsgdkVycm9yc1snICsgKCRpKSArICddLnByb3BlcnR5TmFtZSA9ICcgKyAoJGtleSkgKyAnOyB9ICAgdmFyIGVyciA9ICAgJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdwcm9wZXJ0eU5hbWVzJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBwcm9wZXJ0eU5hbWU6IFxcJycgKyAoJGludmFsaWROYW1lKSArICdcXCcgfSAnO1xuICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwncHJvcGVydHkgbmFtZSBcXFxcXFwnJyArICgkaW52YWxpZE5hbWUpICsgJ1xcXFxcXCcgaXMgaW52YWxpZFxcJyAnO1xuICAgICAgfVxuICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB7fSAnO1xuICAgIH1cbiAgICBvdXQgKz0gJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKHZFcnJvcnMpOyAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gdkVycm9yczsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgYnJlYWs7ICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gfSc7XG4gIH1cbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyAnICsgKCRjbG9zaW5nQnJhY2VzKSArICcgaWYgKCcgKyAoJGVycnMpICsgJyA9PSBlcnJvcnMpIHsnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX3JlcXVpcmVkKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkdmFsaWQgPSAndmFsaWQnICsgJGx2bDtcbiAgdmFyICRpc0RhdGEgPSBpdC5vcHRzLiRkYXRhICYmICRzY2hlbWEgJiYgJHNjaGVtYS4kZGF0YSxcbiAgICAkc2NoZW1hVmFsdWU7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyIHNjaGVtYScgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLmdldERhdGEoJHNjaGVtYS4kZGF0YSwgJGRhdGFMdmwsIGl0LmRhdGFQYXRoQXJyKSkgKyAnOyAnO1xuICAgICRzY2hlbWFWYWx1ZSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgfSBlbHNlIHtcbiAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hO1xuICB9XG4gIHZhciAkdlNjaGVtYSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgaWYgKCEkaXNEYXRhKSB7XG4gICAgaWYgKCRzY2hlbWEubGVuZ3RoIDwgaXQub3B0cy5sb29wUmVxdWlyZWQgJiYgaXQuc2NoZW1hLnByb3BlcnRpZXMgJiYgT2JqZWN0LmtleXMoaXQuc2NoZW1hLnByb3BlcnRpZXMpLmxlbmd0aCkge1xuICAgICAgdmFyICRyZXF1aXJlZCA9IFtdO1xuICAgICAgdmFyIGFycjEgPSAkc2NoZW1hO1xuICAgICAgaWYgKGFycjEpIHtcbiAgICAgICAgdmFyICRwcm9wZXJ0eSwgaTEgPSAtMSxcbiAgICAgICAgICBsMSA9IGFycjEubGVuZ3RoIC0gMTtcbiAgICAgICAgd2hpbGUgKGkxIDwgbDEpIHtcbiAgICAgICAgICAkcHJvcGVydHkgPSBhcnIxW2kxICs9IDFdO1xuICAgICAgICAgIHZhciAkcHJvcGVydHlTY2ggPSBpdC5zY2hlbWEucHJvcGVydGllc1skcHJvcGVydHldO1xuICAgICAgICAgIGlmICghKCRwcm9wZXJ0eVNjaCAmJiAoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHByb3BlcnR5U2NoID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRwcm9wZXJ0eVNjaCkubGVuZ3RoID4gMCkgfHwgJHByb3BlcnR5U2NoID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHByb3BlcnR5U2NoLCBpdC5SVUxFUy5hbGwpKSkpIHtcbiAgICAgICAgICAgICRyZXF1aXJlZFskcmVxdWlyZWQubGVuZ3RoXSA9ICRwcm9wZXJ0eTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyICRyZXF1aXJlZCA9ICRzY2hlbWE7XG4gICAgfVxuICB9XG4gIGlmICgkaXNEYXRhIHx8ICRyZXF1aXJlZC5sZW5ndGgpIHtcbiAgICB2YXIgJGN1cnJlbnRFcnJvclBhdGggPSBpdC5lcnJvclBhdGgsXG4gICAgICAkbG9vcFJlcXVpcmVkID0gJGlzRGF0YSB8fCAkcmVxdWlyZWQubGVuZ3RoID49IGl0Lm9wdHMubG9vcFJlcXVpcmVkLFxuICAgICAgJG93blByb3BlcnRpZXMgPSBpdC5vcHRzLm93blByb3BlcnRpZXM7XG4gICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgIG91dCArPSAnIHZhciBtaXNzaW5nJyArICgkbHZsKSArICc7ICc7XG4gICAgICBpZiAoJGxvb3BSZXF1aXJlZCkge1xuICAgICAgICBpZiAoISRpc0RhdGEpIHtcbiAgICAgICAgICBvdXQgKz0gJyB2YXIgJyArICgkdlNjaGVtYSkgKyAnID0gdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnOyAnO1xuICAgICAgICB9XG4gICAgICAgIHZhciAkaSA9ICdpJyArICRsdmwsXG4gICAgICAgICAgJHByb3BlcnR5UGF0aCA9ICdzY2hlbWEnICsgJGx2bCArICdbJyArICRpICsgJ10nLFxuICAgICAgICAgICRtaXNzaW5nUHJvcGVydHkgPSAnXFwnICsgJyArICRwcm9wZXJ0eVBhdGggKyAnICsgXFwnJztcbiAgICAgICAgaWYgKGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSkge1xuICAgICAgICAgIGl0LmVycm9yUGF0aCA9IGl0LnV0aWwuZ2V0UGF0aEV4cHIoJGN1cnJlbnRFcnJvclBhdGgsICRwcm9wZXJ0eVBhdGgsIGl0Lm9wdHMuanNvblBvaW50ZXJzKTtcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyB2YXIgJyArICgkdmFsaWQpICsgJyA9IHRydWU7ICc7XG4gICAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKHNjaGVtYScgKyAoJGx2bCkgKyAnID09PSB1bmRlZmluZWQpICcgKyAoJHZhbGlkKSArICcgPSB0cnVlOyBlbHNlIGlmICghQXJyYXkuaXNBcnJheShzY2hlbWEnICsgKCRsdmwpICsgJykpICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZTsgZWxzZSB7JztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyBmb3IgKHZhciAnICsgKCRpKSArICcgPSAwOyAnICsgKCRpKSArICcgPCAnICsgKCR2U2NoZW1hKSArICcubGVuZ3RoOyAnICsgKCRpKSArICcrKykgeyAnICsgKCR2YWxpZCkgKyAnID0gJyArICgkZGF0YSkgKyAnWycgKyAoJHZTY2hlbWEpICsgJ1snICsgKCRpKSArICddXSAhPT0gdW5kZWZpbmVkICc7XG4gICAgICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgICAgIG91dCArPSAnICYmICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKCcgKyAoJGRhdGEpICsgJywgJyArICgkdlNjaGVtYSkgKyAnWycgKyAoJGkpICsgJ10pICc7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICc7IGlmICghJyArICgkdmFsaWQpICsgJykgYnJlYWs7IH0gJztcbiAgICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgICBvdXQgKz0gJyAgfSAgJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyAgaWYgKCEnICsgKCR2YWxpZCkgKyAnKSB7ICAgJztcbiAgICAgICAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAgICAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICAgICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdyZXF1aXJlZCcpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgbWlzc2luZ1Byb3BlcnR5OiBcXCcnICsgKCRtaXNzaW5nUHJvcGVydHkpICsgJ1xcJyB9ICc7XG4gICAgICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJyc7XG4gICAgICAgICAgICBpZiAoaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5KSB7XG4gICAgICAgICAgICAgIG91dCArPSAnaXMgYSByZXF1aXJlZCBwcm9wZXJ0eSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvdXQgKz0gJ3Nob3VsZCBoYXZlIHJlcXVpcmVkIHByb3BlcnR5IFxcXFxcXCcnICsgKCRtaXNzaW5nUHJvcGVydHkpICsgJ1xcXFxcXCcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICdcXCcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fZXJyID0gb3V0O1xuICAgICAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgICAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyB9IGVsc2UgeyAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgaWYgKCAnO1xuICAgICAgICB2YXIgYXJyMiA9ICRyZXF1aXJlZDtcbiAgICAgICAgaWYgKGFycjIpIHtcbiAgICAgICAgICB2YXIgJHByb3BlcnR5S2V5LCAkaSA9IC0xLFxuICAgICAgICAgICAgbDIgPSBhcnIyLmxlbmd0aCAtIDE7XG4gICAgICAgICAgd2hpbGUgKCRpIDwgbDIpIHtcbiAgICAgICAgICAgICRwcm9wZXJ0eUtleSA9IGFycjJbJGkgKz0gMV07XG4gICAgICAgICAgICBpZiAoJGkpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgfHwgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciAkcHJvcCA9IGl0LnV0aWwuZ2V0UHJvcGVydHkoJHByb3BlcnR5S2V5KSxcbiAgICAgICAgICAgICAgJHVzZURhdGEgPSAkZGF0YSArICRwcm9wO1xuICAgICAgICAgICAgb3V0ICs9ICcgKCAoICcgKyAoJHVzZURhdGEpICsgJyA9PT0gdW5kZWZpbmVkICc7XG4gICAgICAgICAgICBpZiAoJG93blByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgfHwgISBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoJyArICgkZGF0YSkgKyAnLCBcXCcnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eUtleSkpICsgJ1xcJykgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnKSAmJiAobWlzc2luZycgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKGl0Lm9wdHMuanNvblBvaW50ZXJzID8gJHByb3BlcnR5S2V5IDogJHByb3ApKSArICcpICkgJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcpIHsgICc7XG4gICAgICAgIHZhciAkcHJvcGVydHlQYXRoID0gJ21pc3NpbmcnICsgJGx2bCxcbiAgICAgICAgICAkbWlzc2luZ1Byb3BlcnR5ID0gJ1xcJyArICcgKyAkcHJvcGVydHlQYXRoICsgJyArIFxcJyc7XG4gICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICBpdC5lcnJvclBhdGggPSBpdC5vcHRzLmpzb25Qb2ludGVycyA/IGl0LnV0aWwuZ2V0UGF0aEV4cHIoJGN1cnJlbnRFcnJvclBhdGgsICRwcm9wZXJ0eVBhdGgsIHRydWUpIDogJGN1cnJlbnRFcnJvclBhdGggKyAnICsgJyArICRwcm9wZXJ0eVBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAgICAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICAgICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdyZXF1aXJlZCcpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgbWlzc2luZ1Byb3BlcnR5OiBcXCcnICsgKCRtaXNzaW5nUHJvcGVydHkpICsgJ1xcJyB9ICc7XG4gICAgICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJyc7XG4gICAgICAgICAgICBpZiAoaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5KSB7XG4gICAgICAgICAgICAgIG91dCArPSAnaXMgYSByZXF1aXJlZCBwcm9wZXJ0eSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvdXQgKz0gJ3Nob3VsZCBoYXZlIHJlcXVpcmVkIHByb3BlcnR5IFxcXFxcXCcnICsgKCRtaXNzaW5nUHJvcGVydHkpICsgJ1xcXFxcXCcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICdcXCcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fZXJyID0gb3V0O1xuICAgICAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgICAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyB9IGVsc2UgeyAnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoJGxvb3BSZXF1aXJlZCkge1xuICAgICAgICBpZiAoISRpc0RhdGEpIHtcbiAgICAgICAgICBvdXQgKz0gJyB2YXIgJyArICgkdlNjaGVtYSkgKyAnID0gdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnOyAnO1xuICAgICAgICB9XG4gICAgICAgIHZhciAkaSA9ICdpJyArICRsdmwsXG4gICAgICAgICAgJHByb3BlcnR5UGF0aCA9ICdzY2hlbWEnICsgJGx2bCArICdbJyArICRpICsgJ10nLFxuICAgICAgICAgICRtaXNzaW5nUHJvcGVydHkgPSAnXFwnICsgJyArICRwcm9wZXJ0eVBhdGggKyAnICsgXFwnJztcbiAgICAgICAgaWYgKGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSkge1xuICAgICAgICAgIGl0LmVycm9yUGF0aCA9IGl0LnV0aWwuZ2V0UGF0aEV4cHIoJGN1cnJlbnRFcnJvclBhdGgsICRwcm9wZXJ0eVBhdGgsIGl0Lm9wdHMuanNvblBvaW50ZXJzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICAgIG91dCArPSAnIGlmICgnICsgKCR2U2NoZW1hKSArICcgJiYgIUFycmF5LmlzQXJyYXkoJyArICgkdlNjaGVtYSkgKyAnKSkgeyAgdmFyIGVyciA9ICAgJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdyZXF1aXJlZCcpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgbWlzc2luZ1Byb3BlcnR5OiBcXCcnICsgKCRtaXNzaW5nUHJvcGVydHkpICsgJ1xcJyB9ICc7XG4gICAgICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCcnO1xuICAgICAgICAgICAgICBpZiAoaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICdpcyBhIHJlcXVpcmVkIHByb3BlcnR5JztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvdXQgKz0gJ3Nob3VsZCBoYXZlIHJlcXVpcmVkIHByb3BlcnR5IFxcXFxcXCcnICsgKCRtaXNzaW5nUHJvcGVydHkpICsgJ1xcXFxcXCcnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG91dCArPSAnXFwnICc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIG91dCArPSAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7IH0gZWxzZSBpZiAoJyArICgkdlNjaGVtYSkgKyAnICE9PSB1bmRlZmluZWQpIHsgJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyBmb3IgKHZhciAnICsgKCRpKSArICcgPSAwOyAnICsgKCRpKSArICcgPCAnICsgKCR2U2NoZW1hKSArICcubGVuZ3RoOyAnICsgKCRpKSArICcrKykgeyBpZiAoJyArICgkZGF0YSkgKyAnWycgKyAoJHZTY2hlbWEpICsgJ1snICsgKCRpKSArICddXSA9PT0gdW5kZWZpbmVkICc7XG4gICAgICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgICAgIG91dCArPSAnIHx8ICEgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKCcgKyAoJGRhdGEpICsgJywgJyArICgkdlNjaGVtYSkgKyAnWycgKyAoJGkpICsgJ10pICc7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcpIHsgIHZhciBlcnIgPSAgICc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdyZXF1aXJlZCcpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgbWlzc2luZ1Byb3BlcnR5OiBcXCcnICsgKCRtaXNzaW5nUHJvcGVydHkpICsgJ1xcJyB9ICc7XG4gICAgICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJyc7XG4gICAgICAgICAgICBpZiAoaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5KSB7XG4gICAgICAgICAgICAgIG91dCArPSAnaXMgYSByZXF1aXJlZCBwcm9wZXJ0eSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvdXQgKz0gJ3Nob3VsZCBoYXZlIHJlcXVpcmVkIHByb3BlcnR5IFxcXFxcXCcnICsgKCRtaXNzaW5nUHJvcGVydHkpICsgJ1xcXFxcXCcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICdcXCcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgfSB9ICc7XG4gICAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgICAgb3V0ICs9ICcgIH0gICc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBhcnIzID0gJHJlcXVpcmVkO1xuICAgICAgICBpZiAoYXJyMykge1xuICAgICAgICAgIHZhciAkcHJvcGVydHlLZXksIGkzID0gLTEsXG4gICAgICAgICAgICBsMyA9IGFycjMubGVuZ3RoIC0gMTtcbiAgICAgICAgICB3aGlsZSAoaTMgPCBsMykge1xuICAgICAgICAgICAgJHByb3BlcnR5S2V5ID0gYXJyM1tpMyArPSAxXTtcbiAgICAgICAgICAgIHZhciAkcHJvcCA9IGl0LnV0aWwuZ2V0UHJvcGVydHkoJHByb3BlcnR5S2V5KSxcbiAgICAgICAgICAgICAgJG1pc3NpbmdQcm9wZXJ0eSA9IGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eUtleSksXG4gICAgICAgICAgICAgICR1c2VEYXRhID0gJGRhdGEgKyAkcHJvcDtcbiAgICAgICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgaXQuZXJyb3JQYXRoID0gaXQudXRpbC5nZXRQYXRoKCRjdXJyZW50RXJyb3JQYXRoLCAkcHJvcGVydHlLZXksIGl0Lm9wdHMuanNvblBvaW50ZXJzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnIGlmICggJyArICgkdXNlRGF0YSkgKyAnID09PSB1bmRlZmluZWQgJztcbiAgICAgICAgICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAhIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgnICsgKCRkYXRhKSArICcsIFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5S2V5KSkgKyAnXFwnKSAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICcpIHsgIHZhciBlcnIgPSAgICc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ3JlcXVpcmVkJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBtaXNzaW5nUHJvcGVydHk6IFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFwnIH0gJztcbiAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCcnO1xuICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAnaXMgYSByZXF1aXJlZCBwcm9wZXJ0eSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAnc2hvdWxkIGhhdmUgcmVxdWlyZWQgcHJvcGVydHkgXFxcXFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFxcXFxcJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91dCArPSAnXFwnICc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7IH0gJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaXQuZXJyb3JQYXRoID0gJGN1cnJlbnRFcnJvclBhdGg7XG4gIH0gZWxzZSBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgIG91dCArPSAnIGlmICh0cnVlKSB7JztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV91bmlxdWVJdGVtcyhpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJHZhbGlkID0gJ3ZhbGlkJyArICRsdmw7XG4gIHZhciAkaXNEYXRhID0gaXQub3B0cy4kZGF0YSAmJiAkc2NoZW1hICYmICRzY2hlbWEuJGRhdGEsXG4gICAgJHNjaGVtYVZhbHVlO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnIHZhciBzY2hlbWEnICsgKCRsdmwpICsgJyA9ICcgKyAoaXQudXRpbC5nZXREYXRhKCRzY2hlbWEuJGRhdGEsICRkYXRhTHZsLCBpdC5kYXRhUGF0aEFycikpICsgJzsgJztcbiAgICAkc2NoZW1hVmFsdWUgPSAnc2NoZW1hJyArICRsdmw7XG4gIH0gZWxzZSB7XG4gICAgJHNjaGVtYVZhbHVlID0gJHNjaGVtYTtcbiAgfVxuICBpZiAoKCRzY2hlbWEgfHwgJGlzRGF0YSkgJiYgaXQub3B0cy51bmlxdWVJdGVtcyAhPT0gZmFsc2UpIHtcbiAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJHZhbGlkKSArICc7IGlmICgnICsgKCRzY2hlbWFWYWx1ZSkgKyAnID09PSBmYWxzZSB8fCAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnID09PSB1bmRlZmluZWQpICcgKyAoJHZhbGlkKSArICcgPSB0cnVlOyBlbHNlIGlmICh0eXBlb2YgJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPSBcXCdib29sZWFuXFwnKSAnICsgKCR2YWxpZCkgKyAnID0gZmFsc2U7IGVsc2UgeyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB2YXIgaSA9ICcgKyAoJGRhdGEpICsgJy5sZW5ndGggLCAnICsgKCR2YWxpZCkgKyAnID0gdHJ1ZSAsIGo7IGlmIChpID4gMSkgeyAnO1xuICAgIHZhciAkaXRlbVR5cGUgPSBpdC5zY2hlbWEuaXRlbXMgJiYgaXQuc2NoZW1hLml0ZW1zLnR5cGUsXG4gICAgICAkdHlwZUlzQXJyYXkgPSBBcnJheS5pc0FycmF5KCRpdGVtVHlwZSk7XG4gICAgaWYgKCEkaXRlbVR5cGUgfHwgJGl0ZW1UeXBlID09ICdvYmplY3QnIHx8ICRpdGVtVHlwZSA9PSAnYXJyYXknIHx8ICgkdHlwZUlzQXJyYXkgJiYgKCRpdGVtVHlwZS5pbmRleE9mKCdvYmplY3QnKSA+PSAwIHx8ICRpdGVtVHlwZS5pbmRleE9mKCdhcnJheScpID49IDApKSkge1xuICAgICAgb3V0ICs9ICcgb3V0ZXI6IGZvciAoO2ktLTspIHsgZm9yIChqID0gaTsgai0tOykgeyBpZiAoZXF1YWwoJyArICgkZGF0YSkgKyAnW2ldLCAnICsgKCRkYXRhKSArICdbal0pKSB7ICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZTsgYnJlYWsgb3V0ZXI7IH0gfSB9ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhciBpdGVtSW5kaWNlcyA9IHt9LCBpdGVtOyBmb3IgKDtpLS07KSB7IHZhciBpdGVtID0gJyArICgkZGF0YSkgKyAnW2ldOyAnO1xuICAgICAgdmFyICRtZXRob2QgPSAnY2hlY2tEYXRhVHlwZScgKyAoJHR5cGVJc0FycmF5ID8gJ3MnIDogJycpO1xuICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoaXQudXRpbFskbWV0aG9kXSgkaXRlbVR5cGUsICdpdGVtJywgaXQub3B0cy5zdHJpY3ROdW1iZXJzLCB0cnVlKSkgKyAnKSBjb250aW51ZTsgJztcbiAgICAgIGlmICgkdHlwZUlzQXJyYXkpIHtcbiAgICAgICAgb3V0ICs9ICcgaWYgKHR5cGVvZiBpdGVtID09IFxcJ3N0cmluZ1xcJykgaXRlbSA9IFxcJ1wiXFwnICsgaXRlbTsgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIGlmICh0eXBlb2YgaXRlbUluZGljZXNbaXRlbV0gPT0gXFwnbnVtYmVyXFwnKSB7ICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZTsgaiA9IGl0ZW1JbmRpY2VzW2l0ZW1dOyBicmVhazsgfSBpdGVtSW5kaWNlc1tpdGVtXSA9IGk7IH0gJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICBvdXQgKz0gJyAgfSAgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgaWYgKCEnICsgKCR2YWxpZCkgKyAnKSB7ICAgJztcbiAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgndW5pcXVlSXRlbXMnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IGk6IGksIGo6IGogfSAnO1xuICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIE5PVCBoYXZlIGR1cGxpY2F0ZSBpdGVtcyAoaXRlbXMgIyMgXFwnICsgaiArIFxcJyBhbmQgXFwnICsgaSArIFxcJyBhcmUgaWRlbnRpY2FsKVxcJyAnO1xuICAgICAgfVxuICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogICc7XG4gICAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgICAgb3V0ICs9ICd2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJycgKyAoJHNjaGVtYSk7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcgICAgICAgICAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIH0gJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcge30gJztcbiAgICB9XG4gICAgdmFyIF9fZXJyID0gb3V0O1xuICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB9ICc7XG4gICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgIG91dCArPSAnIGVsc2UgeyAnO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgaWYgKHRydWUpIHsgJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuLy9hbGwgcmVxdWlyZXMgbXVzdCBiZSBleHBsaWNpdCBiZWNhdXNlIGJyb3dzZXJpZnkgd29uJ3Qgd29yayB3aXRoIGR5bmFtaWMgcmVxdWlyZXNcbm1vZHVsZS5leHBvcnRzID0ge1xuICAnJHJlZic6IHJlcXVpcmUoJy4vcmVmJyksXG4gIGFsbE9mOiByZXF1aXJlKCcuL2FsbE9mJyksXG4gIGFueU9mOiByZXF1aXJlKCcuL2FueU9mJyksXG4gICckY29tbWVudCc6IHJlcXVpcmUoJy4vY29tbWVudCcpLFxuICBjb25zdDogcmVxdWlyZSgnLi9jb25zdCcpLFxuICBjb250YWluczogcmVxdWlyZSgnLi9jb250YWlucycpLFxuICBkZXBlbmRlbmNpZXM6IHJlcXVpcmUoJy4vZGVwZW5kZW5jaWVzJyksXG4gICdlbnVtJzogcmVxdWlyZSgnLi9lbnVtJyksXG4gIGZvcm1hdDogcmVxdWlyZSgnLi9mb3JtYXQnKSxcbiAgJ2lmJzogcmVxdWlyZSgnLi9pZicpLFxuICBpdGVtczogcmVxdWlyZSgnLi9pdGVtcycpLFxuICBtYXhpbXVtOiByZXF1aXJlKCcuL19saW1pdCcpLFxuICBtaW5pbXVtOiByZXF1aXJlKCcuL19saW1pdCcpLFxuICBtYXhJdGVtczogcmVxdWlyZSgnLi9fbGltaXRJdGVtcycpLFxuICBtaW5JdGVtczogcmVxdWlyZSgnLi9fbGltaXRJdGVtcycpLFxuICBtYXhMZW5ndGg6IHJlcXVpcmUoJy4vX2xpbWl0TGVuZ3RoJyksXG4gIG1pbkxlbmd0aDogcmVxdWlyZSgnLi9fbGltaXRMZW5ndGgnKSxcbiAgbWF4UHJvcGVydGllczogcmVxdWlyZSgnLi9fbGltaXRQcm9wZXJ0aWVzJyksXG4gIG1pblByb3BlcnRpZXM6IHJlcXVpcmUoJy4vX2xpbWl0UHJvcGVydGllcycpLFxuICBtdWx0aXBsZU9mOiByZXF1aXJlKCcuL211bHRpcGxlT2YnKSxcbiAgbm90OiByZXF1aXJlKCcuL25vdCcpLFxuICBvbmVPZjogcmVxdWlyZSgnLi9vbmVPZicpLFxuICBwYXR0ZXJuOiByZXF1aXJlKCcuL3BhdHRlcm4nKSxcbiAgcHJvcGVydGllczogcmVxdWlyZSgnLi9wcm9wZXJ0aWVzJyksXG4gIHByb3BlcnR5TmFtZXM6IHJlcXVpcmUoJy4vcHJvcGVydHlOYW1lcycpLFxuICByZXF1aXJlZDogcmVxdWlyZSgnLi9yZXF1aXJlZCcpLFxuICB1bmlxdWVJdGVtczogcmVxdWlyZSgnLi91bmlxdWVJdGVtcycpLFxuICB2YWxpZGF0ZTogcmVxdWlyZSgnLi92YWxpZGF0ZScpXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcnVsZU1vZHVsZXMgPSByZXF1aXJlKCcuLi9kb3RqcycpXG4gICwgdG9IYXNoID0gcmVxdWlyZSgnLi91dGlsJykudG9IYXNoO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHJ1bGVzKCkge1xuICB2YXIgUlVMRVMgPSBbXG4gICAgeyB0eXBlOiAnbnVtYmVyJyxcbiAgICAgIHJ1bGVzOiBbIHsgJ21heGltdW0nOiBbJ2V4Y2x1c2l2ZU1heGltdW0nXSB9LFxuICAgICAgICAgICAgICAgeyAnbWluaW11bSc6IFsnZXhjbHVzaXZlTWluaW11bSddIH0sICdtdWx0aXBsZU9mJywgJ2Zvcm1hdCddIH0sXG4gICAgeyB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIHJ1bGVzOiBbICdtYXhMZW5ndGgnLCAnbWluTGVuZ3RoJywgJ3BhdHRlcm4nLCAnZm9ybWF0JyBdIH0sXG4gICAgeyB0eXBlOiAnYXJyYXknLFxuICAgICAgcnVsZXM6IFsgJ21heEl0ZW1zJywgJ21pbkl0ZW1zJywgJ2l0ZW1zJywgJ2NvbnRhaW5zJywgJ3VuaXF1ZUl0ZW1zJyBdIH0sXG4gICAgeyB0eXBlOiAnb2JqZWN0JyxcbiAgICAgIHJ1bGVzOiBbICdtYXhQcm9wZXJ0aWVzJywgJ21pblByb3BlcnRpZXMnLCAncmVxdWlyZWQnLCAnZGVwZW5kZW5jaWVzJywgJ3Byb3BlcnR5TmFtZXMnLFxuICAgICAgICAgICAgICAgeyAncHJvcGVydGllcyc6IFsnYWRkaXRpb25hbFByb3BlcnRpZXMnLCAncGF0dGVyblByb3BlcnRpZXMnXSB9IF0gfSxcbiAgICB7IHJ1bGVzOiBbICckcmVmJywgJ2NvbnN0JywgJ2VudW0nLCAnbm90JywgJ2FueU9mJywgJ29uZU9mJywgJ2FsbE9mJywgJ2lmJyBdIH1cbiAgXTtcblxuICB2YXIgQUxMID0gWyAndHlwZScsICckY29tbWVudCcgXTtcbiAgdmFyIEtFWVdPUkRTID0gW1xuICAgICckc2NoZW1hJywgJyRpZCcsICdpZCcsICckZGF0YScsICckYXN5bmMnLCAndGl0bGUnLFxuICAgICdkZXNjcmlwdGlvbicsICdkZWZhdWx0JywgJ2RlZmluaXRpb25zJyxcbiAgICAnZXhhbXBsZXMnLCAncmVhZE9ubHknLCAnd3JpdGVPbmx5JyxcbiAgICAnY29udGVudE1lZGlhVHlwZScsICdjb250ZW50RW5jb2RpbmcnLFxuICAgICdhZGRpdGlvbmFsSXRlbXMnLCAndGhlbicsICdlbHNlJ1xuICBdO1xuICB2YXIgVFlQRVMgPSBbICdudW1iZXInLCAnaW50ZWdlcicsICdzdHJpbmcnLCAnYXJyYXknLCAnb2JqZWN0JywgJ2Jvb2xlYW4nLCAnbnVsbCcgXTtcbiAgUlVMRVMuYWxsID0gdG9IYXNoKEFMTCk7XG4gIFJVTEVTLnR5cGVzID0gdG9IYXNoKFRZUEVTKTtcblxuICBSVUxFUy5mb3JFYWNoKGZ1bmN0aW9uIChncm91cCkge1xuICAgIGdyb3VwLnJ1bGVzID0gZ3JvdXAucnVsZXMubWFwKGZ1bmN0aW9uIChrZXl3b3JkKSB7XG4gICAgICB2YXIgaW1wbEtleXdvcmRzO1xuICAgICAgaWYgKHR5cGVvZiBrZXl3b3JkID09ICdvYmplY3QnKSB7XG4gICAgICAgIHZhciBrZXkgPSBPYmplY3Qua2V5cyhrZXl3b3JkKVswXTtcbiAgICAgICAgaW1wbEtleXdvcmRzID0ga2V5d29yZFtrZXldO1xuICAgICAgICBrZXl3b3JkID0ga2V5O1xuICAgICAgICBpbXBsS2V5d29yZHMuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgICAgIEFMTC5wdXNoKGspO1xuICAgICAgICAgIFJVTEVTLmFsbFtrXSA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgQUxMLnB1c2goa2V5d29yZCk7XG4gICAgICB2YXIgcnVsZSA9IFJVTEVTLmFsbFtrZXl3b3JkXSA9IHtcbiAgICAgICAga2V5d29yZDoga2V5d29yZCxcbiAgICAgICAgY29kZTogcnVsZU1vZHVsZXNba2V5d29yZF0sXG4gICAgICAgIGltcGxlbWVudHM6IGltcGxLZXl3b3Jkc1xuICAgICAgfTtcbiAgICAgIHJldHVybiBydWxlO1xuICAgIH0pO1xuXG4gICAgUlVMRVMuYWxsLiRjb21tZW50ID0ge1xuICAgICAga2V5d29yZDogJyRjb21tZW50JyxcbiAgICAgIGNvZGU6IHJ1bGVNb2R1bGVzLiRjb21tZW50XG4gICAgfTtcblxuICAgIGlmIChncm91cC50eXBlKSBSVUxFUy50eXBlc1tncm91cC50eXBlXSA9IGdyb3VwO1xuICB9KTtcblxuICBSVUxFUy5rZXl3b3JkcyA9IHRvSGFzaChBTEwuY29uY2F0KEtFWVdPUkRTKSk7XG4gIFJVTEVTLmN1c3RvbSA9IHt9O1xuXG4gIHJldHVybiBSVUxFUztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBLRVlXT1JEUyA9IFtcbiAgJ211bHRpcGxlT2YnLFxuICAnbWF4aW11bScsXG4gICdleGNsdXNpdmVNYXhpbXVtJyxcbiAgJ21pbmltdW0nLFxuICAnZXhjbHVzaXZlTWluaW11bScsXG4gICdtYXhMZW5ndGgnLFxuICAnbWluTGVuZ3RoJyxcbiAgJ3BhdHRlcm4nLFxuICAnYWRkaXRpb25hbEl0ZW1zJyxcbiAgJ21heEl0ZW1zJyxcbiAgJ21pbkl0ZW1zJyxcbiAgJ3VuaXF1ZUl0ZW1zJyxcbiAgJ21heFByb3BlcnRpZXMnLFxuICAnbWluUHJvcGVydGllcycsXG4gICdyZXF1aXJlZCcsXG4gICdhZGRpdGlvbmFsUHJvcGVydGllcycsXG4gICdlbnVtJyxcbiAgJ2Zvcm1hdCcsXG4gICdjb25zdCdcbl07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG1ldGFTY2hlbWEsIGtleXdvcmRzSnNvblBvaW50ZXJzKSB7XG4gIGZvciAodmFyIGk9MDsgaTxrZXl3b3Jkc0pzb25Qb2ludGVycy5sZW5ndGg7IGkrKykge1xuICAgIG1ldGFTY2hlbWEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG1ldGFTY2hlbWEpKTtcbiAgICB2YXIgc2VnbWVudHMgPSBrZXl3b3Jkc0pzb25Qb2ludGVyc1tpXS5zcGxpdCgnLycpO1xuICAgIHZhciBrZXl3b3JkcyA9IG1ldGFTY2hlbWE7XG4gICAgdmFyIGo7XG4gICAgZm9yIChqPTE7IGo8c2VnbWVudHMubGVuZ3RoOyBqKyspXG4gICAgICBrZXl3b3JkcyA9IGtleXdvcmRzW3NlZ21lbnRzW2pdXTtcblxuICAgIGZvciAoaj0wOyBqPEtFWVdPUkRTLmxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIga2V5ID0gS0VZV09SRFNbal07XG4gICAgICB2YXIgc2NoZW1hID0ga2V5d29yZHNba2V5XTtcbiAgICAgIGlmIChzY2hlbWEpIHtcbiAgICAgICAga2V5d29yZHNba2V5XSA9IHtcbiAgICAgICAgICBhbnlPZjogW1xuICAgICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgICAgeyAkcmVmOiAnaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Fqdi12YWxpZGF0b3IvYWp2L21hc3Rlci9saWIvcmVmcy9kYXRhLmpzb24jJyB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXRhU2NoZW1hO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIE1pc3NpbmdSZWZFcnJvciA9IHJlcXVpcmUoJy4vZXJyb3JfY2xhc3NlcycpLk1pc3NpbmdSZWY7XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcGlsZUFzeW5jO1xuXG5cbi8qKlxuICogQ3JlYXRlcyB2YWxpZGF0aW5nIGZ1bmN0aW9uIGZvciBwYXNzZWQgc2NoZW1hIHdpdGggYXN5bmNocm9ub3VzIGxvYWRpbmcgb2YgbWlzc2luZyBzY2hlbWFzLlxuICogYGxvYWRTY2hlbWFgIG9wdGlvbiBzaG91bGQgYmUgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgc2NoZW1hIHVyaSBhbmQgcmV0dXJucyBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgc2NoZW1hLlxuICogQHRoaXMgIEFqdlxuICogQHBhcmFtIHtPYmplY3R9ICAgc2NoZW1hIHNjaGVtYSBvYmplY3RcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gIG1ldGEgb3B0aW9uYWwgdHJ1ZSB0byBjb21waWxlIG1ldGEtc2NoZW1hOyB0aGlzIHBhcmFtZXRlciBjYW4gYmUgc2tpcHBlZFxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgYW4gb3B0aW9uYWwgbm9kZS1zdHlsZSBjYWxsYmFjaywgaXQgaXMgY2FsbGVkIHdpdGggMiBwYXJhbWV0ZXJzOiBlcnJvciAob3IgbnVsbCkgYW5kIHZhbGlkYXRpbmcgZnVuY3Rpb24uXG4gKiBAcmV0dXJuIHtQcm9taXNlfSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhIHZhbGlkYXRpbmcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNvbXBpbGVBc3luYyhzY2hlbWEsIG1ldGEsIGNhbGxiYWNrKSB7XG4gIC8qIGVzbGludCBuby1zaGFkb3c6IDAgKi9cbiAgLyogZ2xvYmFsIFByb21pc2UgKi9cbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIGlmICh0eXBlb2YgdGhpcy5fb3B0cy5sb2FkU2NoZW1hICE9ICdmdW5jdGlvbicpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zLmxvYWRTY2hlbWEgc2hvdWxkIGJlIGEgZnVuY3Rpb24nKTtcblxuICBpZiAodHlwZW9mIG1ldGEgPT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gbWV0YTtcbiAgICBtZXRhID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgdmFyIHAgPSBsb2FkTWV0YVNjaGVtYU9mKHNjaGVtYSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNjaGVtYU9iaiA9IHNlbGYuX2FkZFNjaGVtYShzY2hlbWEsIHVuZGVmaW5lZCwgbWV0YSk7XG4gICAgcmV0dXJuIHNjaGVtYU9iai52YWxpZGF0ZSB8fCBfY29tcGlsZUFzeW5jKHNjaGVtYU9iaik7XG4gIH0pO1xuXG4gIGlmIChjYWxsYmFjaykge1xuICAgIHAudGhlbihcbiAgICAgIGZ1bmN0aW9uKHYpIHsgY2FsbGJhY2sobnVsbCwgdik7IH0sXG4gICAgICBjYWxsYmFja1xuICAgICk7XG4gIH1cblxuICByZXR1cm4gcDtcblxuXG4gIGZ1bmN0aW9uIGxvYWRNZXRhU2NoZW1hT2Yoc2NoKSB7XG4gICAgdmFyICRzY2hlbWEgPSBzY2guJHNjaGVtYTtcbiAgICByZXR1cm4gJHNjaGVtYSAmJiAhc2VsZi5nZXRTY2hlbWEoJHNjaGVtYSlcbiAgICAgICAgICAgID8gY29tcGlsZUFzeW5jLmNhbGwoc2VsZiwgeyAkcmVmOiAkc2NoZW1hIH0sIHRydWUpXG4gICAgICAgICAgICA6IFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cblxuICBmdW5jdGlvbiBfY29tcGlsZUFzeW5jKHNjaGVtYU9iaikge1xuICAgIHRyeSB7IHJldHVybiBzZWxmLl9jb21waWxlKHNjaGVtYU9iaik7IH1cbiAgICBjYXRjaChlKSB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIE1pc3NpbmdSZWZFcnJvcikgcmV0dXJuIGxvYWRNaXNzaW5nU2NoZW1hKGUpO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGxvYWRNaXNzaW5nU2NoZW1hKGUpIHtcbiAgICAgIHZhciByZWYgPSBlLm1pc3NpbmdTY2hlbWE7XG4gICAgICBpZiAoYWRkZWQocmVmKSkgdGhyb3cgbmV3IEVycm9yKCdTY2hlbWEgJyArIHJlZiArICcgaXMgbG9hZGVkIGJ1dCAnICsgZS5taXNzaW5nUmVmICsgJyBjYW5ub3QgYmUgcmVzb2x2ZWQnKTtcblxuICAgICAgdmFyIHNjaGVtYVByb21pc2UgPSBzZWxmLl9sb2FkaW5nU2NoZW1hc1tyZWZdO1xuICAgICAgaWYgKCFzY2hlbWFQcm9taXNlKSB7XG4gICAgICAgIHNjaGVtYVByb21pc2UgPSBzZWxmLl9sb2FkaW5nU2NoZW1hc1tyZWZdID0gc2VsZi5fb3B0cy5sb2FkU2NoZW1hKHJlZik7XG4gICAgICAgIHNjaGVtYVByb21pc2UudGhlbihyZW1vdmVQcm9taXNlLCByZW1vdmVQcm9taXNlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNjaGVtYVByb21pc2UudGhlbihmdW5jdGlvbiAoc2NoKSB7XG4gICAgICAgIGlmICghYWRkZWQocmVmKSkge1xuICAgICAgICAgIHJldHVybiBsb2FkTWV0YVNjaGVtYU9mKHNjaCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIWFkZGVkKHJlZikpIHNlbGYuYWRkU2NoZW1hKHNjaCwgcmVmLCB1bmRlZmluZWQsIG1ldGEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2NvbXBpbGVBc3luYyhzY2hlbWFPYmopO1xuICAgICAgfSk7XG5cbiAgICAgIGZ1bmN0aW9uIHJlbW92ZVByb21pc2UoKSB7XG4gICAgICAgIGRlbGV0ZSBzZWxmLl9sb2FkaW5nU2NoZW1hc1tyZWZdO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBhZGRlZChyZWYpIHtcbiAgICAgICAgcmV0dXJuIHNlbGYuX3JlZnNbcmVmXSB8fCBzZWxmLl9zY2hlbWFzW3JlZl07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX2N1c3RvbShpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGVycm9yS2V5d29yZDtcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICR2YWxpZCA9ICd2YWxpZCcgKyAkbHZsO1xuICB2YXIgJGVycnMgPSAnZXJyc19fJyArICRsdmw7XG4gIHZhciAkaXNEYXRhID0gaXQub3B0cy4kZGF0YSAmJiAkc2NoZW1hICYmICRzY2hlbWEuJGRhdGEsXG4gICAgJHNjaGVtYVZhbHVlO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnIHZhciBzY2hlbWEnICsgKCRsdmwpICsgJyA9ICcgKyAoaXQudXRpbC5nZXREYXRhKCRzY2hlbWEuJGRhdGEsICRkYXRhTHZsLCBpdC5kYXRhUGF0aEFycikpICsgJzsgJztcbiAgICAkc2NoZW1hVmFsdWUgPSAnc2NoZW1hJyArICRsdmw7XG4gIH0gZWxzZSB7XG4gICAgJHNjaGVtYVZhbHVlID0gJHNjaGVtYTtcbiAgfVxuICB2YXIgJHJ1bGUgPSB0aGlzLFxuICAgICRkZWZpbml0aW9uID0gJ2RlZmluaXRpb24nICsgJGx2bCxcbiAgICAkckRlZiA9ICRydWxlLmRlZmluaXRpb24sXG4gICAgJGNsb3NpbmdCcmFjZXMgPSAnJztcbiAgdmFyICRjb21waWxlLCAkaW5saW5lLCAkbWFjcm8sICRydWxlVmFsaWRhdGUsICR2YWxpZGF0ZUNvZGU7XG4gIGlmICgkaXNEYXRhICYmICRyRGVmLiRkYXRhKSB7XG4gICAgJHZhbGlkYXRlQ29kZSA9ICdrZXl3b3JkVmFsaWRhdGUnICsgJGx2bDtcbiAgICB2YXIgJHZhbGlkYXRlU2NoZW1hID0gJHJEZWYudmFsaWRhdGVTY2hlbWE7XG4gICAgb3V0ICs9ICcgdmFyICcgKyAoJGRlZmluaXRpb24pICsgJyA9IFJVTEVTLmN1c3RvbVtcXCcnICsgKCRrZXl3b3JkKSArICdcXCddLmRlZmluaXRpb247IHZhciAnICsgKCR2YWxpZGF0ZUNvZGUpICsgJyA9ICcgKyAoJGRlZmluaXRpb24pICsgJy52YWxpZGF0ZTsnO1xuICB9IGVsc2Uge1xuICAgICRydWxlVmFsaWRhdGUgPSBpdC51c2VDdXN0b21SdWxlKCRydWxlLCAkc2NoZW1hLCBpdC5zY2hlbWEsIGl0KTtcbiAgICBpZiAoISRydWxlVmFsaWRhdGUpIHJldHVybjtcbiAgICAkc2NoZW1hVmFsdWUgPSAndmFsaWRhdGUuc2NoZW1hJyArICRzY2hlbWFQYXRoO1xuICAgICR2YWxpZGF0ZUNvZGUgPSAkcnVsZVZhbGlkYXRlLmNvZGU7XG4gICAgJGNvbXBpbGUgPSAkckRlZi5jb21waWxlO1xuICAgICRpbmxpbmUgPSAkckRlZi5pbmxpbmU7XG4gICAgJG1hY3JvID0gJHJEZWYubWFjcm87XG4gIH1cbiAgdmFyICRydWxlRXJycyA9ICR2YWxpZGF0ZUNvZGUgKyAnLmVycm9ycycsXG4gICAgJGkgPSAnaScgKyAkbHZsLFxuICAgICRydWxlRXJyID0gJ3J1bGVFcnInICsgJGx2bCxcbiAgICAkYXN5bmNLZXl3b3JkID0gJHJEZWYuYXN5bmM7XG4gIGlmICgkYXN5bmNLZXl3b3JkICYmICFpdC5hc3luYykgdGhyb3cgbmV3IEVycm9yKCdhc3luYyBrZXl3b3JkIGluIHN5bmMgc2NoZW1hJyk7XG4gIGlmICghKCRpbmxpbmUgfHwgJG1hY3JvKSkge1xuICAgIG91dCArPSAnJyArICgkcnVsZUVycnMpICsgJyA9IG51bGw7JztcbiAgfVxuICBvdXQgKz0gJ3ZhciAnICsgKCRlcnJzKSArICcgPSBlcnJvcnM7dmFyICcgKyAoJHZhbGlkKSArICc7JztcbiAgaWYgKCRpc0RhdGEgJiYgJHJEZWYuJGRhdGEpIHtcbiAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgb3V0ICs9ICcgaWYgKCcgKyAoJHNjaGVtYVZhbHVlKSArICcgPT09IHVuZGVmaW5lZCkgeyAnICsgKCR2YWxpZCkgKyAnID0gdHJ1ZTsgfSBlbHNlIHsgJztcbiAgICBpZiAoJHZhbGlkYXRlU2NoZW1hKSB7XG4gICAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgICBvdXQgKz0gJyAnICsgKCR2YWxpZCkgKyAnID0gJyArICgkZGVmaW5pdGlvbikgKyAnLnZhbGlkYXRlU2NoZW1hKCcgKyAoJHNjaGVtYVZhbHVlKSArICcpOyBpZiAoJyArICgkdmFsaWQpICsgJykgeyAnO1xuICAgIH1cbiAgfVxuICBpZiAoJGlubGluZSkge1xuICAgIGlmICgkckRlZi5zdGF0ZW1lbnRzKSB7XG4gICAgICBvdXQgKz0gJyAnICsgKCRydWxlVmFsaWRhdGUudmFsaWRhdGUpICsgJyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyAnICsgKCR2YWxpZCkgKyAnID0gJyArICgkcnVsZVZhbGlkYXRlLnZhbGlkYXRlKSArICc7ICc7XG4gICAgfVxuICB9IGVsc2UgaWYgKCRtYWNybykge1xuICAgIHZhciAkaXQgPSBpdC51dGlsLmNvcHkoaXQpO1xuICAgIHZhciAkY2xvc2luZ0JyYWNlcyA9ICcnO1xuICAgICRpdC5sZXZlbCsrO1xuICAgIHZhciAkbmV4dFZhbGlkID0gJ3ZhbGlkJyArICRpdC5sZXZlbDtcbiAgICAkaXQuc2NoZW1hID0gJHJ1bGVWYWxpZGF0ZS52YWxpZGF0ZTtcbiAgICAkaXQuc2NoZW1hUGF0aCA9ICcnO1xuICAgIHZhciAkd2FzQ29tcG9zaXRlID0gaXQuY29tcG9zaXRlUnVsZTtcbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSB0cnVlO1xuICAgIHZhciAkY29kZSA9IGl0LnZhbGlkYXRlKCRpdCkucmVwbGFjZSgvdmFsaWRhdGVcXC5zY2hlbWEvZywgJHZhbGlkYXRlQ29kZSk7XG4gICAgaXQuY29tcG9zaXRlUnVsZSA9ICRpdC5jb21wb3NpdGVSdWxlID0gJHdhc0NvbXBvc2l0ZTtcbiAgICBvdXQgKz0gJyAnICsgKCRjb2RlKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gICAgb3V0ID0gJyc7XG4gICAgb3V0ICs9ICcgICcgKyAoJHZhbGlkYXRlQ29kZSkgKyAnLmNhbGwoICc7XG4gICAgaWYgKGl0Lm9wdHMucGFzc0NvbnRleHQpIHtcbiAgICAgIG91dCArPSAndGhpcyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnc2VsZic7XG4gICAgfVxuICAgIGlmICgkY29tcGlsZSB8fCAkckRlZi5zY2hlbWEgPT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyAsICcgKyAoJGRhdGEpICsgJyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyAsICcgKyAoJHNjaGVtYVZhbHVlKSArICcgLCAnICsgKCRkYXRhKSArICcgLCB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyAsIChkYXRhUGF0aCB8fCBcXCdcXCcpJztcbiAgICBpZiAoaXQuZXJyb3JQYXRoICE9ICdcIlwiJykge1xuICAgICAgb3V0ICs9ICcgKyAnICsgKGl0LmVycm9yUGF0aCk7XG4gICAgfVxuICAgIHZhciAkcGFyZW50RGF0YSA9ICRkYXRhTHZsID8gJ2RhdGEnICsgKCgkZGF0YUx2bCAtIDEpIHx8ICcnKSA6ICdwYXJlbnREYXRhJyxcbiAgICAgICRwYXJlbnREYXRhUHJvcGVydHkgPSAkZGF0YUx2bCA/IGl0LmRhdGFQYXRoQXJyWyRkYXRhTHZsXSA6ICdwYXJlbnREYXRhUHJvcGVydHknO1xuICAgIG91dCArPSAnICwgJyArICgkcGFyZW50RGF0YSkgKyAnICwgJyArICgkcGFyZW50RGF0YVByb3BlcnR5KSArICcgLCByb290RGF0YSApICAnO1xuICAgIHZhciBkZWZfY2FsbFJ1bGVWYWxpZGF0ZSA9IG91dDtcbiAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgIGlmICgkckRlZi5lcnJvcnMgPT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyAnICsgKCR2YWxpZCkgKyAnID0gJztcbiAgICAgIGlmICgkYXN5bmNLZXl3b3JkKSB7XG4gICAgICAgIG91dCArPSAnYXdhaXQgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnJyArIChkZWZfY2FsbFJ1bGVWYWxpZGF0ZSkgKyAnOyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoJGFzeW5jS2V5d29yZCkge1xuICAgICAgICAkcnVsZUVycnMgPSAnY3VzdG9tRXJyb3JzJyArICRsdmw7XG4gICAgICAgIG91dCArPSAnIHZhciAnICsgKCRydWxlRXJycykgKyAnID0gbnVsbDsgdHJ5IHsgJyArICgkdmFsaWQpICsgJyA9IGF3YWl0ICcgKyAoZGVmX2NhbGxSdWxlVmFsaWRhdGUpICsgJzsgfSBjYXRjaCAoZSkgeyAnICsgKCR2YWxpZCkgKyAnID0gZmFsc2U7IGlmIChlIGluc3RhbmNlb2YgVmFsaWRhdGlvbkVycm9yKSAnICsgKCRydWxlRXJycykgKyAnID0gZS5lcnJvcnM7IGVsc2UgdGhyb3cgZTsgfSAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgJyArICgkcnVsZUVycnMpICsgJyA9IG51bGw7ICcgKyAoJHZhbGlkKSArICcgPSAnICsgKGRlZl9jYWxsUnVsZVZhbGlkYXRlKSArICc7ICc7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICgkckRlZi5tb2RpZnlpbmcpIHtcbiAgICBvdXQgKz0gJyBpZiAoJyArICgkcGFyZW50RGF0YSkgKyAnKSAnICsgKCRkYXRhKSArICcgPSAnICsgKCRwYXJlbnREYXRhKSArICdbJyArICgkcGFyZW50RGF0YVByb3BlcnR5KSArICddOyc7XG4gIH1cbiAgb3V0ICs9ICcnICsgKCRjbG9zaW5nQnJhY2VzKTtcbiAgaWYgKCRyRGVmLnZhbGlkKSB7XG4gICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgIG91dCArPSAnIGlmICh0cnVlKSB7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIGlmICggJztcbiAgICBpZiAoJHJEZWYudmFsaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgb3V0ICs9ICcgISc7XG4gICAgICBpZiAoJG1hY3JvKSB7XG4gICAgICAgIG91dCArPSAnJyArICgkbmV4dFZhbGlkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArICgkdmFsaWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyAnICsgKCEkckRlZi52YWxpZCkgKyAnICc7XG4gICAgfVxuICAgIG91dCArPSAnKSB7ICc7XG4gICAgJGVycm9yS2V5d29yZCA9ICRydWxlLmtleXdvcmQ7XG4gICAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgIG91dCA9ICcnO1xuICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCRlcnJvcktleXdvcmQgfHwgJ2N1c3RvbScpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsga2V5d29yZDogXFwnJyArICgkcnVsZS5rZXl3b3JkKSArICdcXCcgfSAnO1xuICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIHBhc3MgXCInICsgKCRydWxlLmtleXdvcmQpICsgJ1wiIGtleXdvcmQgdmFsaWRhdGlvblxcJyAnO1xuICAgICAgfVxuICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB7fSAnO1xuICAgIH1cbiAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgfVxuICAgIHZhciBkZWZfY3VzdG9tRXJyb3IgPSBvdXQ7XG4gICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICBpZiAoJGlubGluZSkge1xuICAgICAgaWYgKCRyRGVmLmVycm9ycykge1xuICAgICAgICBpZiAoJHJEZWYuZXJyb3JzICE9ICdmdWxsJykge1xuICAgICAgICAgIG91dCArPSAnICBmb3IgKHZhciAnICsgKCRpKSArICc9JyArICgkZXJycykgKyAnOyAnICsgKCRpKSArICc8ZXJyb3JzOyAnICsgKCRpKSArICcrKykgeyB2YXIgJyArICgkcnVsZUVycikgKyAnID0gdkVycm9yc1snICsgKCRpKSArICddOyBpZiAoJyArICgkcnVsZUVycikgKyAnLmRhdGFQYXRoID09PSB1bmRlZmluZWQpICcgKyAoJHJ1bGVFcnIpICsgJy5kYXRhUGF0aCA9IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJzsgaWYgKCcgKyAoJHJ1bGVFcnIpICsgJy5zY2hlbWFQYXRoID09PSB1bmRlZmluZWQpIHsgJyArICgkcnVsZUVycikgKyAnLnNjaGVtYVBhdGggPSBcIicgKyAoJGVyclNjaGVtYVBhdGgpICsgJ1wiOyB9ICc7XG4gICAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgJyArICgkcnVsZUVycikgKyAnLnNjaGVtYSA9ICcgKyAoJHNjaGVtYVZhbHVlKSArICc7ICcgKyAoJHJ1bGVFcnIpICsgJy5kYXRhID0gJyArICgkZGF0YSkgKyAnOyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICgkckRlZi5lcnJvcnMgPT09IGZhbHNlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgJyArIChkZWZfY3VzdG9tRXJyb3IpICsgJyAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIGlmICgnICsgKCRlcnJzKSArICcgPT0gZXJyb3JzKSB7ICcgKyAoZGVmX2N1c3RvbUVycm9yKSArICcgfSBlbHNlIHsgIGZvciAodmFyICcgKyAoJGkpICsgJz0nICsgKCRlcnJzKSArICc7ICcgKyAoJGkpICsgJzxlcnJvcnM7ICcgKyAoJGkpICsgJysrKSB7IHZhciAnICsgKCRydWxlRXJyKSArICcgPSB2RXJyb3JzWycgKyAoJGkpICsgJ107IGlmICgnICsgKCRydWxlRXJyKSArICcuZGF0YVBhdGggPT09IHVuZGVmaW5lZCkgJyArICgkcnVsZUVycikgKyAnLmRhdGFQYXRoID0gKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnOyBpZiAoJyArICgkcnVsZUVycikgKyAnLnNjaGVtYVBhdGggPT09IHVuZGVmaW5lZCkgeyAnICsgKCRydWxlRXJyKSArICcuc2NoZW1hUGF0aCA9IFwiJyArICgkZXJyU2NoZW1hUGF0aCkgKyAnXCI7IH0gJztcbiAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAnICsgKCRydWxlRXJyKSArICcuc2NoZW1hID0gJyArICgkc2NoZW1hVmFsdWUpICsgJzsgJyArICgkcnVsZUVycikgKyAnLmRhdGEgPSAnICsgKCRkYXRhKSArICc7ICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIG91dCArPSAnIH0gfSAnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICgkbWFjcm8pIHtcbiAgICAgIG91dCArPSAnICAgdmFyIGVyciA9ICAgJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgkZXJyb3JLZXl3b3JkIHx8ICdjdXN0b20nKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IGtleXdvcmQ6IFxcJycgKyAoJHJ1bGUua2V5d29yZCkgKyAnXFwnIH0gJztcbiAgICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgcGFzcyBcIicgKyAoJHJ1bGUua2V5d29yZCkgKyAnXCIga2V5d29yZCB2YWxpZGF0aW9uXFwnICc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcih2RXJyb3JzKTsgJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSB2RXJyb3JzOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCRyRGVmLmVycm9ycyA9PT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgJyArIChkZWZfY3VzdG9tRXJyb3IpICsgJyAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgaWYgKEFycmF5LmlzQXJyYXkoJyArICgkcnVsZUVycnMpICsgJykpIHsgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSAnICsgKCRydWxlRXJycykgKyAnOyBlbHNlIHZFcnJvcnMgPSB2RXJyb3JzLmNvbmNhdCgnICsgKCRydWxlRXJycykgKyAnKTsgZXJyb3JzID0gdkVycm9ycy5sZW5ndGg7ICBmb3IgKHZhciAnICsgKCRpKSArICc9JyArICgkZXJycykgKyAnOyAnICsgKCRpKSArICc8ZXJyb3JzOyAnICsgKCRpKSArICcrKykgeyB2YXIgJyArICgkcnVsZUVycikgKyAnID0gdkVycm9yc1snICsgKCRpKSArICddOyBpZiAoJyArICgkcnVsZUVycikgKyAnLmRhdGFQYXRoID09PSB1bmRlZmluZWQpICcgKyAoJHJ1bGVFcnIpICsgJy5kYXRhUGF0aCA9IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJzsgICcgKyAoJHJ1bGVFcnIpICsgJy5zY2hlbWFQYXRoID0gXCInICsgKCRlcnJTY2hlbWFQYXRoKSArICdcIjsgICc7XG4gICAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyAnICsgKCRydWxlRXJyKSArICcuc2NoZW1hID0gJyArICgkc2NoZW1hVmFsdWUpICsgJzsgJyArICgkcnVsZUVycikgKyAnLmRhdGEgPSAnICsgKCRkYXRhKSArICc7ICc7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcgfSB9IGVsc2UgeyAnICsgKGRlZl9jdXN0b21FcnJvcikgKyAnIH0gJztcbiAgICAgIH1cbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIG1ldGFTY2hlbWEgPSByZXF1aXJlKCcuL3JlZnMvanNvbi1zY2hlbWEtZHJhZnQtMDcuanNvbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgJGlkOiAnaHR0cHM6Ly9naXRodWIuY29tL2Fqdi12YWxpZGF0b3IvYWp2L2Jsb2IvbWFzdGVyL2xpYi9kZWZpbml0aW9uX3NjaGVtYS5qcycsXG4gIGRlZmluaXRpb25zOiB7XG4gICAgc2ltcGxlVHlwZXM6IG1ldGFTY2hlbWEuZGVmaW5pdGlvbnMuc2ltcGxlVHlwZXNcbiAgfSxcbiAgdHlwZTogJ29iamVjdCcsXG4gIGRlcGVuZGVuY2llczoge1xuICAgIHNjaGVtYTogWyd2YWxpZGF0ZSddLFxuICAgICRkYXRhOiBbJ3ZhbGlkYXRlJ10sXG4gICAgc3RhdGVtZW50czogWydpbmxpbmUnXSxcbiAgICB2YWxpZDoge25vdDoge3JlcXVpcmVkOiBbJ21hY3JvJ119fVxuICB9LFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgdHlwZTogbWV0YVNjaGVtYS5wcm9wZXJ0aWVzLnR5cGUsXG4gICAgc2NoZW1hOiB7dHlwZTogJ2Jvb2xlYW4nfSxcbiAgICBzdGF0ZW1lbnRzOiB7dHlwZTogJ2Jvb2xlYW4nfSxcbiAgICBkZXBlbmRlbmNpZXM6IHtcbiAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICBpdGVtczoge3R5cGU6ICdzdHJpbmcnfVxuICAgIH0sXG4gICAgbWV0YVNjaGVtYToge3R5cGU6ICdvYmplY3QnfSxcbiAgICBtb2RpZnlpbmc6IHt0eXBlOiAnYm9vbGVhbid9LFxuICAgIHZhbGlkOiB7dHlwZTogJ2Jvb2xlYW4nfSxcbiAgICAkZGF0YToge3R5cGU6ICdib29sZWFuJ30sXG4gICAgYXN5bmM6IHt0eXBlOiAnYm9vbGVhbid9LFxuICAgIGVycm9yczoge1xuICAgICAgYW55T2Y6IFtcbiAgICAgICAge3R5cGU6ICdib29sZWFuJ30sXG4gICAgICAgIHtjb25zdDogJ2Z1bGwnfVxuICAgICAgXVxuICAgIH1cbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIElERU5USUZJRVIgPSAvXlthLXpfJF1bYS16MC05XyQtXSokL2k7XG52YXIgY3VzdG9tUnVsZUNvZGUgPSByZXF1aXJlKCcuL2RvdGpzL2N1c3RvbScpO1xudmFyIGRlZmluaXRpb25TY2hlbWEgPSByZXF1aXJlKCcuL2RlZmluaXRpb25fc2NoZW1hJyk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBhZGQ6IGFkZEtleXdvcmQsXG4gIGdldDogZ2V0S2V5d29yZCxcbiAgcmVtb3ZlOiByZW1vdmVLZXl3b3JkLFxuICB2YWxpZGF0ZTogdmFsaWRhdGVLZXl3b3JkXG59O1xuXG5cbi8qKlxuICogRGVmaW5lIGN1c3RvbSBrZXl3b3JkXG4gKiBAdGhpcyAgQWp2XG4gKiBAcGFyYW0ge1N0cmluZ30ga2V5d29yZCBjdXN0b20ga2V5d29yZCwgc2hvdWxkIGJlIHVuaXF1ZSAoaW5jbHVkaW5nIGRpZmZlcmVudCBmcm9tIGFsbCBzdGFuZGFyZCwgY3VzdG9tIGFuZCBtYWNybyBrZXl3b3JkcykuXG4gKiBAcGFyYW0ge09iamVjdH0gZGVmaW5pdGlvbiBrZXl3b3JkIGRlZmluaXRpb24gb2JqZWN0IHdpdGggcHJvcGVydGllcyBgdHlwZWAgKHR5cGUocykgd2hpY2ggdGhlIGtleXdvcmQgYXBwbGllcyB0byksIGB2YWxpZGF0ZWAgb3IgYGNvbXBpbGVgLlxuICogQHJldHVybiB7QWp2fSB0aGlzIGZvciBtZXRob2QgY2hhaW5pbmdcbiAqL1xuZnVuY3Rpb24gYWRkS2V5d29yZChrZXl3b3JkLCBkZWZpbml0aW9uKSB7XG4gIC8qIGpzaGludCB2YWxpZHRoaXM6IHRydWUgKi9cbiAgLyogZXNsaW50IG5vLXNoYWRvdzogMCAqL1xuICB2YXIgUlVMRVMgPSB0aGlzLlJVTEVTO1xuICBpZiAoUlVMRVMua2V5d29yZHNba2V5d29yZF0pXG4gICAgdGhyb3cgbmV3IEVycm9yKCdLZXl3b3JkICcgKyBrZXl3b3JkICsgJyBpcyBhbHJlYWR5IGRlZmluZWQnKTtcblxuICBpZiAoIUlERU5USUZJRVIudGVzdChrZXl3b3JkKSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0tleXdvcmQgJyArIGtleXdvcmQgKyAnIGlzIG5vdCBhIHZhbGlkIGlkZW50aWZpZXInKTtcblxuICBpZiAoZGVmaW5pdGlvbikge1xuICAgIHRoaXMudmFsaWRhdGVLZXl3b3JkKGRlZmluaXRpb24sIHRydWUpO1xuXG4gICAgdmFyIGRhdGFUeXBlID0gZGVmaW5pdGlvbi50eXBlO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFUeXBlKSkge1xuICAgICAgZm9yICh2YXIgaT0wOyBpPGRhdGFUeXBlLmxlbmd0aDsgaSsrKVxuICAgICAgICBfYWRkUnVsZShrZXl3b3JkLCBkYXRhVHlwZVtpXSwgZGVmaW5pdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIF9hZGRSdWxlKGtleXdvcmQsIGRhdGFUeXBlLCBkZWZpbml0aW9uKTtcbiAgICB9XG5cbiAgICB2YXIgbWV0YVNjaGVtYSA9IGRlZmluaXRpb24ubWV0YVNjaGVtYTtcbiAgICBpZiAobWV0YVNjaGVtYSkge1xuICAgICAgaWYgKGRlZmluaXRpb24uJGRhdGEgJiYgdGhpcy5fb3B0cy4kZGF0YSkge1xuICAgICAgICBtZXRhU2NoZW1hID0ge1xuICAgICAgICAgIGFueU9mOiBbXG4gICAgICAgICAgICBtZXRhU2NoZW1hLFxuICAgICAgICAgICAgeyAnJHJlZic6ICdodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYWp2LXZhbGlkYXRvci9hanYvbWFzdGVyL2xpYi9yZWZzL2RhdGEuanNvbiMnIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBkZWZpbml0aW9uLnZhbGlkYXRlU2NoZW1hID0gdGhpcy5jb21waWxlKG1ldGFTY2hlbWEsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIFJVTEVTLmtleXdvcmRzW2tleXdvcmRdID0gUlVMRVMuYWxsW2tleXdvcmRdID0gdHJ1ZTtcblxuXG4gIGZ1bmN0aW9uIF9hZGRSdWxlKGtleXdvcmQsIGRhdGFUeXBlLCBkZWZpbml0aW9uKSB7XG4gICAgdmFyIHJ1bGVHcm91cDtcbiAgICBmb3IgKHZhciBpPTA7IGk8UlVMRVMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciByZyA9IFJVTEVTW2ldO1xuICAgICAgaWYgKHJnLnR5cGUgPT0gZGF0YVR5cGUpIHtcbiAgICAgICAgcnVsZUdyb3VwID0gcmc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcnVsZUdyb3VwKSB7XG4gICAgICBydWxlR3JvdXAgPSB7IHR5cGU6IGRhdGFUeXBlLCBydWxlczogW10gfTtcbiAgICAgIFJVTEVTLnB1c2gocnVsZUdyb3VwKTtcbiAgICB9XG5cbiAgICB2YXIgcnVsZSA9IHtcbiAgICAgIGtleXdvcmQ6IGtleXdvcmQsXG4gICAgICBkZWZpbml0aW9uOiBkZWZpbml0aW9uLFxuICAgICAgY3VzdG9tOiB0cnVlLFxuICAgICAgY29kZTogY3VzdG9tUnVsZUNvZGUsXG4gICAgICBpbXBsZW1lbnRzOiBkZWZpbml0aW9uLmltcGxlbWVudHNcbiAgICB9O1xuICAgIHJ1bGVHcm91cC5ydWxlcy5wdXNoKHJ1bGUpO1xuICAgIFJVTEVTLmN1c3RvbVtrZXl3b3JkXSA9IHJ1bGU7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cblxuXG4vKipcbiAqIEdldCBrZXl3b3JkXG4gKiBAdGhpcyAgQWp2XG4gKiBAcGFyYW0ge1N0cmluZ30ga2V5d29yZCBwcmUtZGVmaW5lZCBvciBjdXN0b20ga2V5d29yZC5cbiAqIEByZXR1cm4ge09iamVjdHxCb29sZWFufSBjdXN0b20ga2V5d29yZCBkZWZpbml0aW9uLCBgdHJ1ZWAgaWYgaXQgaXMgYSBwcmVkZWZpbmVkIGtleXdvcmQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBnZXRLZXl3b3JkKGtleXdvcmQpIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICB2YXIgcnVsZSA9IHRoaXMuUlVMRVMuY3VzdG9tW2tleXdvcmRdO1xuICByZXR1cm4gcnVsZSA/IHJ1bGUuZGVmaW5pdGlvbiA6IHRoaXMuUlVMRVMua2V5d29yZHNba2V5d29yZF0gfHwgZmFsc2U7XG59XG5cblxuLyoqXG4gKiBSZW1vdmUga2V5d29yZFxuICogQHRoaXMgIEFqdlxuICogQHBhcmFtIHtTdHJpbmd9IGtleXdvcmQgcHJlLWRlZmluZWQgb3IgY3VzdG9tIGtleXdvcmQuXG4gKiBAcmV0dXJuIHtBanZ9IHRoaXMgZm9yIG1ldGhvZCBjaGFpbmluZ1xuICovXG5mdW5jdGlvbiByZW1vdmVLZXl3b3JkKGtleXdvcmQpIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICB2YXIgUlVMRVMgPSB0aGlzLlJVTEVTO1xuICBkZWxldGUgUlVMRVMua2V5d29yZHNba2V5d29yZF07XG4gIGRlbGV0ZSBSVUxFUy5hbGxba2V5d29yZF07XG4gIGRlbGV0ZSBSVUxFUy5jdXN0b21ba2V5d29yZF07XG4gIGZvciAodmFyIGk9MDsgaTxSVUxFUy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBydWxlcyA9IFJVTEVTW2ldLnJ1bGVzO1xuICAgIGZvciAodmFyIGo9MDsgajxydWxlcy5sZW5ndGg7IGorKykge1xuICAgICAgaWYgKHJ1bGVzW2pdLmtleXdvcmQgPT0ga2V5d29yZCkge1xuICAgICAgICBydWxlcy5zcGxpY2UoaiwgMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpcztcbn1cblxuXG4vKipcbiAqIFZhbGlkYXRlIGtleXdvcmQgZGVmaW5pdGlvblxuICogQHRoaXMgIEFqdlxuICogQHBhcmFtIHtPYmplY3R9IGRlZmluaXRpb24ga2V5d29yZCBkZWZpbml0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gdGhyb3dFcnJvciB0cnVlIHRvIHRocm93IGV4Y2VwdGlvbiBpZiBkZWZpbml0aW9uIGlzIGludmFsaWRcbiAqIEByZXR1cm4ge2Jvb2xlYW59IHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlS2V5d29yZChkZWZpbml0aW9uLCB0aHJvd0Vycm9yKSB7XG4gIHZhbGlkYXRlS2V5d29yZC5lcnJvcnMgPSBudWxsO1xuICB2YXIgdiA9IHRoaXMuX3ZhbGlkYXRlS2V5d29yZCA9IHRoaXMuX3ZhbGlkYXRlS2V5d29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRoaXMuY29tcGlsZShkZWZpbml0aW9uU2NoZW1hLCB0cnVlKTtcblxuICBpZiAodihkZWZpbml0aW9uKSkgcmV0dXJuIHRydWU7XG4gIHZhbGlkYXRlS2V5d29yZC5lcnJvcnMgPSB2LmVycm9ycztcbiAgaWYgKHRocm93RXJyb3IpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdjdXN0b20ga2V5d29yZCBkZWZpbml0aW9uIGlzIGludmFsaWQ6ICcgICsgdGhpcy5lcnJvcnNUZXh0KHYuZXJyb3JzKSk7XG4gIGVsc2VcbiAgICByZXR1cm4gZmFsc2U7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjb21waWxlU2NoZW1hID0gcmVxdWlyZSgnLi9jb21waWxlJylcbiAgLCByZXNvbHZlID0gcmVxdWlyZSgnLi9jb21waWxlL3Jlc29sdmUnKVxuICAsIENhY2hlID0gcmVxdWlyZSgnLi9jYWNoZScpXG4gICwgU2NoZW1hT2JqZWN0ID0gcmVxdWlyZSgnLi9jb21waWxlL3NjaGVtYV9vYmonKVxuICAsIHN0YWJsZVN0cmluZ2lmeSA9IHJlcXVpcmUoJ2Zhc3QtanNvbi1zdGFibGUtc3RyaW5naWZ5JylcbiAgLCBmb3JtYXRzID0gcmVxdWlyZSgnLi9jb21waWxlL2Zvcm1hdHMnKVxuICAsIHJ1bGVzID0gcmVxdWlyZSgnLi9jb21waWxlL3J1bGVzJylcbiAgLCAkZGF0YU1ldGFTY2hlbWEgPSByZXF1aXJlKCcuL2RhdGEnKVxuICAsIHV0aWwgPSByZXF1aXJlKCcuL2NvbXBpbGUvdXRpbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFqdjtcblxuQWp2LnByb3RvdHlwZS52YWxpZGF0ZSA9IHZhbGlkYXRlO1xuQWp2LnByb3RvdHlwZS5jb21waWxlID0gY29tcGlsZTtcbkFqdi5wcm90b3R5cGUuYWRkU2NoZW1hID0gYWRkU2NoZW1hO1xuQWp2LnByb3RvdHlwZS5hZGRNZXRhU2NoZW1hID0gYWRkTWV0YVNjaGVtYTtcbkFqdi5wcm90b3R5cGUudmFsaWRhdGVTY2hlbWEgPSB2YWxpZGF0ZVNjaGVtYTtcbkFqdi5wcm90b3R5cGUuZ2V0U2NoZW1hID0gZ2V0U2NoZW1hO1xuQWp2LnByb3RvdHlwZS5yZW1vdmVTY2hlbWEgPSByZW1vdmVTY2hlbWE7XG5BanYucHJvdG90eXBlLmFkZEZvcm1hdCA9IGFkZEZvcm1hdDtcbkFqdi5wcm90b3R5cGUuZXJyb3JzVGV4dCA9IGVycm9yc1RleHQ7XG5cbkFqdi5wcm90b3R5cGUuX2FkZFNjaGVtYSA9IF9hZGRTY2hlbWE7XG5BanYucHJvdG90eXBlLl9jb21waWxlID0gX2NvbXBpbGU7XG5cbkFqdi5wcm90b3R5cGUuY29tcGlsZUFzeW5jID0gcmVxdWlyZSgnLi9jb21waWxlL2FzeW5jJyk7XG52YXIgY3VzdG9tS2V5d29yZCA9IHJlcXVpcmUoJy4va2V5d29yZCcpO1xuQWp2LnByb3RvdHlwZS5hZGRLZXl3b3JkID0gY3VzdG9tS2V5d29yZC5hZGQ7XG5BanYucHJvdG90eXBlLmdldEtleXdvcmQgPSBjdXN0b21LZXl3b3JkLmdldDtcbkFqdi5wcm90b3R5cGUucmVtb3ZlS2V5d29yZCA9IGN1c3RvbUtleXdvcmQucmVtb3ZlO1xuQWp2LnByb3RvdHlwZS52YWxpZGF0ZUtleXdvcmQgPSBjdXN0b21LZXl3b3JkLnZhbGlkYXRlO1xuXG52YXIgZXJyb3JDbGFzc2VzID0gcmVxdWlyZSgnLi9jb21waWxlL2Vycm9yX2NsYXNzZXMnKTtcbkFqdi5WYWxpZGF0aW9uRXJyb3IgPSBlcnJvckNsYXNzZXMuVmFsaWRhdGlvbjtcbkFqdi5NaXNzaW5nUmVmRXJyb3IgPSBlcnJvckNsYXNzZXMuTWlzc2luZ1JlZjtcbkFqdi4kZGF0YU1ldGFTY2hlbWEgPSAkZGF0YU1ldGFTY2hlbWE7XG5cbnZhciBNRVRBX1NDSEVNQV9JRCA9ICdodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA3L3NjaGVtYSc7XG5cbnZhciBNRVRBX0lHTk9SRV9PUFRJT05TID0gWyAncmVtb3ZlQWRkaXRpb25hbCcsICd1c2VEZWZhdWx0cycsICdjb2VyY2VUeXBlcycsICdzdHJpY3REZWZhdWx0cycgXTtcbnZhciBNRVRBX1NVUFBPUlRfREFUQSA9IFsnL3Byb3BlcnRpZXMnXTtcblxuLyoqXG4gKiBDcmVhdGVzIHZhbGlkYXRvciBpbnN0YW5jZS5cbiAqIFVzYWdlOiBgQWp2KG9wdHMpYFxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgb3B0aW9uYWwgb3B0aW9uc1xuICogQHJldHVybiB7T2JqZWN0fSBhanYgaW5zdGFuY2VcbiAqL1xuZnVuY3Rpb24gQWp2KG9wdHMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEFqdikpIHJldHVybiBuZXcgQWp2KG9wdHMpO1xuICBvcHRzID0gdGhpcy5fb3B0cyA9IHV0aWwuY29weShvcHRzKSB8fCB7fTtcbiAgc2V0TG9nZ2VyKHRoaXMpO1xuICB0aGlzLl9zY2hlbWFzID0ge307XG4gIHRoaXMuX3JlZnMgPSB7fTtcbiAgdGhpcy5fZnJhZ21lbnRzID0ge307XG4gIHRoaXMuX2Zvcm1hdHMgPSBmb3JtYXRzKG9wdHMuZm9ybWF0KTtcblxuICB0aGlzLl9jYWNoZSA9IG9wdHMuY2FjaGUgfHwgbmV3IENhY2hlO1xuICB0aGlzLl9sb2FkaW5nU2NoZW1hcyA9IHt9O1xuICB0aGlzLl9jb21waWxhdGlvbnMgPSBbXTtcbiAgdGhpcy5SVUxFUyA9IHJ1bGVzKCk7XG4gIHRoaXMuX2dldElkID0gY2hvb3NlR2V0SWQob3B0cyk7XG5cbiAgb3B0cy5sb29wUmVxdWlyZWQgPSBvcHRzLmxvb3BSZXF1aXJlZCB8fCBJbmZpbml0eTtcbiAgaWYgKG9wdHMuZXJyb3JEYXRhUGF0aCA9PSAncHJvcGVydHknKSBvcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkgPSB0cnVlO1xuICBpZiAob3B0cy5zZXJpYWxpemUgPT09IHVuZGVmaW5lZCkgb3B0cy5zZXJpYWxpemUgPSBzdGFibGVTdHJpbmdpZnk7XG4gIHRoaXMuX21ldGFPcHRzID0gZ2V0TWV0YVNjaGVtYU9wdGlvbnModGhpcyk7XG5cbiAgaWYgKG9wdHMuZm9ybWF0cykgYWRkSW5pdGlhbEZvcm1hdHModGhpcyk7XG4gIGlmIChvcHRzLmtleXdvcmRzKSBhZGRJbml0aWFsS2V5d29yZHModGhpcyk7XG4gIGFkZERlZmF1bHRNZXRhU2NoZW1hKHRoaXMpO1xuICBpZiAodHlwZW9mIG9wdHMubWV0YSA9PSAnb2JqZWN0JykgdGhpcy5hZGRNZXRhU2NoZW1hKG9wdHMubWV0YSk7XG4gIGlmIChvcHRzLm51bGxhYmxlKSB0aGlzLmFkZEtleXdvcmQoJ251bGxhYmxlJywge21ldGFTY2hlbWE6IHt0eXBlOiAnYm9vbGVhbid9fSk7XG4gIGFkZEluaXRpYWxTY2hlbWFzKHRoaXMpO1xufVxuXG5cblxuLyoqXG4gKiBWYWxpZGF0ZSBkYXRhIHVzaW5nIHNjaGVtYVxuICogU2NoZW1hIHdpbGwgYmUgY29tcGlsZWQgYW5kIGNhY2hlZCAodXNpbmcgc2VyaWFsaXplZCBKU09OIGFzIGtleS4gW2Zhc3QtanNvbi1zdGFibGUtc3RyaW5naWZ5XShodHRwczovL2dpdGh1Yi5jb20vZXBvYmVyZXpraW4vZmFzdC1qc29uLXN0YWJsZS1zdHJpbmdpZnkpIGlzIHVzZWQgdG8gc2VyaWFsaXplLlxuICogQHRoaXMgICBBanZcbiAqIEBwYXJhbSAge1N0cmluZ3xPYmplY3R9IHNjaGVtYUtleVJlZiBrZXksIHJlZiBvciBzY2hlbWEgb2JqZWN0XG4gKiBAcGFyYW0gIHtBbnl9IGRhdGEgdG8gYmUgdmFsaWRhdGVkXG4gKiBAcmV0dXJuIHtCb29sZWFufSB2YWxpZGF0aW9uIHJlc3VsdC4gRXJyb3JzIGZyb20gdGhlIGxhc3QgdmFsaWRhdGlvbiB3aWxsIGJlIGF2YWlsYWJsZSBpbiBgYWp2LmVycm9yc2AgKGFuZCBhbHNvIGluIGNvbXBpbGVkIHNjaGVtYTogYHNjaGVtYS5lcnJvcnNgKS5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGUoc2NoZW1hS2V5UmVmLCBkYXRhKSB7XG4gIHZhciB2O1xuICBpZiAodHlwZW9mIHNjaGVtYUtleVJlZiA9PSAnc3RyaW5nJykge1xuICAgIHYgPSB0aGlzLmdldFNjaGVtYShzY2hlbWFLZXlSZWYpO1xuICAgIGlmICghdikgdGhyb3cgbmV3IEVycm9yKCdubyBzY2hlbWEgd2l0aCBrZXkgb3IgcmVmIFwiJyArIHNjaGVtYUtleVJlZiArICdcIicpO1xuICB9IGVsc2Uge1xuICAgIHZhciBzY2hlbWFPYmogPSB0aGlzLl9hZGRTY2hlbWEoc2NoZW1hS2V5UmVmKTtcbiAgICB2ID0gc2NoZW1hT2JqLnZhbGlkYXRlIHx8IHRoaXMuX2NvbXBpbGUoc2NoZW1hT2JqKTtcbiAgfVxuXG4gIHZhciB2YWxpZCA9IHYoZGF0YSk7XG4gIGlmICh2LiRhc3luYyAhPT0gdHJ1ZSkgdGhpcy5lcnJvcnMgPSB2LmVycm9ycztcbiAgcmV0dXJuIHZhbGlkO1xufVxuXG5cbi8qKlxuICogQ3JlYXRlIHZhbGlkYXRpbmcgZnVuY3Rpb24gZm9yIHBhc3NlZCBzY2hlbWEuXG4gKiBAdGhpcyAgIEFqdlxuICogQHBhcmFtICB7T2JqZWN0fSBzY2hlbWEgc2NoZW1hIG9iamVjdFxuICogQHBhcmFtICB7Qm9vbGVhbn0gX21ldGEgdHJ1ZSBpZiBzY2hlbWEgaXMgYSBtZXRhLXNjaGVtYS4gVXNlZCBpbnRlcm5hbGx5IHRvIGNvbXBpbGUgbWV0YSBzY2hlbWFzIG9mIGN1c3RvbSBrZXl3b3Jkcy5cbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSB2YWxpZGF0aW5nIGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIGNvbXBpbGUoc2NoZW1hLCBfbWV0YSkge1xuICB2YXIgc2NoZW1hT2JqID0gdGhpcy5fYWRkU2NoZW1hKHNjaGVtYSwgdW5kZWZpbmVkLCBfbWV0YSk7XG4gIHJldHVybiBzY2hlbWFPYmoudmFsaWRhdGUgfHwgdGhpcy5fY29tcGlsZShzY2hlbWFPYmopO1xufVxuXG5cbi8qKlxuICogQWRkcyBzY2hlbWEgdG8gdGhlIGluc3RhbmNlLlxuICogQHRoaXMgICBBanZcbiAqIEBwYXJhbSB7T2JqZWN0fEFycmF5fSBzY2hlbWEgc2NoZW1hIG9yIGFycmF5IG9mIHNjaGVtYXMuIElmIGFycmF5IGlzIHBhc3NlZCwgYGtleWAgYW5kIG90aGVyIHBhcmFtZXRlcnMgd2lsbCBiZSBpZ25vcmVkLlxuICogQHBhcmFtIHtTdHJpbmd9IGtleSBPcHRpb25hbCBzY2hlbWEga2V5LiBDYW4gYmUgcGFzc2VkIHRvIGB2YWxpZGF0ZWAgbWV0aG9kIGluc3RlYWQgb2Ygc2NoZW1hIG9iamVjdCBvciBpZC9yZWYuIE9uZSBzY2hlbWEgcGVyIGluc3RhbmNlIGNhbiBoYXZlIGVtcHR5IGBpZGAgYW5kIGBrZXlgLlxuICogQHBhcmFtIHtCb29sZWFufSBfc2tpcFZhbGlkYXRpb24gdHJ1ZSB0byBza2lwIHNjaGVtYSB2YWxpZGF0aW9uLiBVc2VkIGludGVybmFsbHksIG9wdGlvbiB2YWxpZGF0ZVNjaGVtYSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLlxuICogQHBhcmFtIHtCb29sZWFufSBfbWV0YSB0cnVlIGlmIHNjaGVtYSBpcyBhIG1ldGEtc2NoZW1hLiBVc2VkIGludGVybmFsbHksIGFkZE1ldGFTY2hlbWEgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC5cbiAqIEByZXR1cm4ge0Fqdn0gdGhpcyBmb3IgbWV0aG9kIGNoYWluaW5nXG4gKi9cbmZ1bmN0aW9uIGFkZFNjaGVtYShzY2hlbWEsIGtleSwgX3NraXBWYWxpZGF0aW9uLCBfbWV0YSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEpKXtcbiAgICBmb3IgKHZhciBpPTA7IGk8c2NoZW1hLmxlbmd0aDsgaSsrKSB0aGlzLmFkZFNjaGVtYShzY2hlbWFbaV0sIHVuZGVmaW5lZCwgX3NraXBWYWxpZGF0aW9uLCBfbWV0YSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgdmFyIGlkID0gdGhpcy5fZ2V0SWQoc2NoZW1hKTtcbiAgaWYgKGlkICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGlkICE9ICdzdHJpbmcnKVxuICAgIHRocm93IG5ldyBFcnJvcignc2NoZW1hIGlkIG11c3QgYmUgc3RyaW5nJyk7XG4gIGtleSA9IHJlc29sdmUubm9ybWFsaXplSWQoa2V5IHx8IGlkKTtcbiAgY2hlY2tVbmlxdWUodGhpcywga2V5KTtcbiAgdGhpcy5fc2NoZW1hc1trZXldID0gdGhpcy5fYWRkU2NoZW1hKHNjaGVtYSwgX3NraXBWYWxpZGF0aW9uLCBfbWV0YSwgdHJ1ZSk7XG4gIHJldHVybiB0aGlzO1xufVxuXG5cbi8qKlxuICogQWRkIHNjaGVtYSB0aGF0IHdpbGwgYmUgdXNlZCB0byB2YWxpZGF0ZSBvdGhlciBzY2hlbWFzXG4gKiBvcHRpb25zIGluIE1FVEFfSUdOT1JFX09QVElPTlMgYXJlIGFsd2F5IHNldCB0byBmYWxzZVxuICogQHRoaXMgICBBanZcbiAqIEBwYXJhbSB7T2JqZWN0fSBzY2hlbWEgc2NoZW1hIG9iamVjdFxuICogQHBhcmFtIHtTdHJpbmd9IGtleSBvcHRpb25hbCBzY2hlbWEga2V5XG4gKiBAcGFyYW0ge0Jvb2xlYW59IHNraXBWYWxpZGF0aW9uIHRydWUgdG8gc2tpcCBzY2hlbWEgdmFsaWRhdGlvbiwgY2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgdmFsaWRhdGVTY2hlbWEgb3B0aW9uIGZvciBtZXRhLXNjaGVtYVxuICogQHJldHVybiB7QWp2fSB0aGlzIGZvciBtZXRob2QgY2hhaW5pbmdcbiAqL1xuZnVuY3Rpb24gYWRkTWV0YVNjaGVtYShzY2hlbWEsIGtleSwgc2tpcFZhbGlkYXRpb24pIHtcbiAgdGhpcy5hZGRTY2hlbWEoc2NoZW1hLCBrZXksIHNraXBWYWxpZGF0aW9uLCB0cnVlKTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cblxuLyoqXG4gKiBWYWxpZGF0ZSBzY2hlbWFcbiAqIEB0aGlzICAgQWp2XG4gKiBAcGFyYW0ge09iamVjdH0gc2NoZW1hIHNjaGVtYSB0byB2YWxpZGF0ZVxuICogQHBhcmFtIHtCb29sZWFufSB0aHJvd09yTG9nRXJyb3IgcGFzcyB0cnVlIHRvIHRocm93IChvciBsb2cpIGFuIGVycm9yIGlmIGludmFsaWRcbiAqIEByZXR1cm4ge0Jvb2xlYW59IHRydWUgaWYgc2NoZW1hIGlzIHZhbGlkXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlU2NoZW1hKHNjaGVtYSwgdGhyb3dPckxvZ0Vycm9yKSB7XG4gIHZhciAkc2NoZW1hID0gc2NoZW1hLiRzY2hlbWE7XG4gIGlmICgkc2NoZW1hICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mICRzY2hlbWEgIT0gJ3N0cmluZycpXG4gICAgdGhyb3cgbmV3IEVycm9yKCckc2NoZW1hIG11c3QgYmUgYSBzdHJpbmcnKTtcbiAgJHNjaGVtYSA9ICRzY2hlbWEgfHwgdGhpcy5fb3B0cy5kZWZhdWx0TWV0YSB8fCBkZWZhdWx0TWV0YSh0aGlzKTtcbiAgaWYgKCEkc2NoZW1hKSB7XG4gICAgdGhpcy5sb2dnZXIud2FybignbWV0YS1zY2hlbWEgbm90IGF2YWlsYWJsZScpO1xuICAgIHRoaXMuZXJyb3JzID0gbnVsbDtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgdmFsaWQgPSB0aGlzLnZhbGlkYXRlKCRzY2hlbWEsIHNjaGVtYSk7XG4gIGlmICghdmFsaWQgJiYgdGhyb3dPckxvZ0Vycm9yKSB7XG4gICAgdmFyIG1lc3NhZ2UgPSAnc2NoZW1hIGlzIGludmFsaWQ6ICcgKyB0aGlzLmVycm9yc1RleHQoKTtcbiAgICBpZiAodGhpcy5fb3B0cy52YWxpZGF0ZVNjaGVtYSA9PSAnbG9nJykgdGhpcy5sb2dnZXIuZXJyb3IobWVzc2FnZSk7XG4gICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIH1cbiAgcmV0dXJuIHZhbGlkO1xufVxuXG5cbmZ1bmN0aW9uIGRlZmF1bHRNZXRhKHNlbGYpIHtcbiAgdmFyIG1ldGEgPSBzZWxmLl9vcHRzLm1ldGE7XG4gIHNlbGYuX29wdHMuZGVmYXVsdE1ldGEgPSB0eXBlb2YgbWV0YSA9PSAnb2JqZWN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc2VsZi5fZ2V0SWQobWV0YSkgfHwgbWV0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc2VsZi5nZXRTY2hlbWEoTUVUQV9TQ0hFTUFfSUQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE1FVEFfU0NIRU1BX0lEXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIHNlbGYuX29wdHMuZGVmYXVsdE1ldGE7XG59XG5cblxuLyoqXG4gKiBHZXQgY29tcGlsZWQgc2NoZW1hIGZyb20gdGhlIGluc3RhbmNlIGJ5IGBrZXlgIG9yIGByZWZgLlxuICogQHRoaXMgICBBanZcbiAqIEBwYXJhbSAge1N0cmluZ30ga2V5UmVmIGBrZXlgIHRoYXQgd2FzIHBhc3NlZCB0byBgYWRkU2NoZW1hYCBvciBmdWxsIHNjaGVtYSByZWZlcmVuY2UgKGBzY2hlbWEuaWRgIG9yIHJlc29sdmVkIGlkKS5cbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSBzY2hlbWEgdmFsaWRhdGluZyBmdW5jdGlvbiAod2l0aCBwcm9wZXJ0eSBgc2NoZW1hYCkuXG4gKi9cbmZ1bmN0aW9uIGdldFNjaGVtYShrZXlSZWYpIHtcbiAgdmFyIHNjaGVtYU9iaiA9IF9nZXRTY2hlbWFPYmoodGhpcywga2V5UmVmKTtcbiAgc3dpdGNoICh0eXBlb2Ygc2NoZW1hT2JqKSB7XG4gICAgY2FzZSAnb2JqZWN0JzogcmV0dXJuIHNjaGVtYU9iai52YWxpZGF0ZSB8fCB0aGlzLl9jb21waWxlKHNjaGVtYU9iaik7XG4gICAgY2FzZSAnc3RyaW5nJzogcmV0dXJuIHRoaXMuZ2V0U2NoZW1hKHNjaGVtYU9iaik7XG4gICAgY2FzZSAndW5kZWZpbmVkJzogcmV0dXJuIF9nZXRTY2hlbWFGcmFnbWVudCh0aGlzLCBrZXlSZWYpO1xuICB9XG59XG5cblxuZnVuY3Rpb24gX2dldFNjaGVtYUZyYWdtZW50KHNlbGYsIHJlZikge1xuICB2YXIgcmVzID0gcmVzb2x2ZS5zY2hlbWEuY2FsbChzZWxmLCB7IHNjaGVtYToge30gfSwgcmVmKTtcbiAgaWYgKHJlcykge1xuICAgIHZhciBzY2hlbWEgPSByZXMuc2NoZW1hXG4gICAgICAsIHJvb3QgPSByZXMucm9vdFxuICAgICAgLCBiYXNlSWQgPSByZXMuYmFzZUlkO1xuICAgIHZhciB2ID0gY29tcGlsZVNjaGVtYS5jYWxsKHNlbGYsIHNjaGVtYSwgcm9vdCwgdW5kZWZpbmVkLCBiYXNlSWQpO1xuICAgIHNlbGYuX2ZyYWdtZW50c1tyZWZdID0gbmV3IFNjaGVtYU9iamVjdCh7XG4gICAgICByZWY6IHJlZixcbiAgICAgIGZyYWdtZW50OiB0cnVlLFxuICAgICAgc2NoZW1hOiBzY2hlbWEsXG4gICAgICByb290OiByb290LFxuICAgICAgYmFzZUlkOiBiYXNlSWQsXG4gICAgICB2YWxpZGF0ZTogdlxuICAgIH0pO1xuICAgIHJldHVybiB2O1xuICB9XG59XG5cblxuZnVuY3Rpb24gX2dldFNjaGVtYU9iaihzZWxmLCBrZXlSZWYpIHtcbiAga2V5UmVmID0gcmVzb2x2ZS5ub3JtYWxpemVJZChrZXlSZWYpO1xuICByZXR1cm4gc2VsZi5fc2NoZW1hc1trZXlSZWZdIHx8IHNlbGYuX3JlZnNba2V5UmVmXSB8fCBzZWxmLl9mcmFnbWVudHNba2V5UmVmXTtcbn1cblxuXG4vKipcbiAqIFJlbW92ZSBjYWNoZWQgc2NoZW1hKHMpLlxuICogSWYgbm8gcGFyYW1ldGVyIGlzIHBhc3NlZCBhbGwgc2NoZW1hcyBidXQgbWV0YS1zY2hlbWFzIGFyZSByZW1vdmVkLlxuICogSWYgUmVnRXhwIGlzIHBhc3NlZCBhbGwgc2NoZW1hcyB3aXRoIGtleS9pZCBtYXRjaGluZyBwYXR0ZXJuIGJ1dCBtZXRhLXNjaGVtYXMgYXJlIHJlbW92ZWQuXG4gKiBFdmVuIGlmIHNjaGVtYSBpcyByZWZlcmVuY2VkIGJ5IG90aGVyIHNjaGVtYXMgaXQgc3RpbGwgY2FuIGJlIHJlbW92ZWQgYXMgb3RoZXIgc2NoZW1hcyBoYXZlIGxvY2FsIHJlZmVyZW5jZXMuXG4gKiBAdGhpcyAgIEFqdlxuICogQHBhcmFtICB7U3RyaW5nfE9iamVjdHxSZWdFeHB9IHNjaGVtYUtleVJlZiBrZXksIHJlZiwgcGF0dGVybiB0byBtYXRjaCBrZXkvcmVmIG9yIHNjaGVtYSBvYmplY3RcbiAqIEByZXR1cm4ge0Fqdn0gdGhpcyBmb3IgbWV0aG9kIGNoYWluaW5nXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZVNjaGVtYShzY2hlbWFLZXlSZWYpIHtcbiAgaWYgKHNjaGVtYUtleVJlZiBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgIF9yZW1vdmVBbGxTY2hlbWFzKHRoaXMsIHRoaXMuX3NjaGVtYXMsIHNjaGVtYUtleVJlZik7XG4gICAgX3JlbW92ZUFsbFNjaGVtYXModGhpcywgdGhpcy5fcmVmcywgc2NoZW1hS2V5UmVmKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBzd2l0Y2ggKHR5cGVvZiBzY2hlbWFLZXlSZWYpIHtcbiAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgICAgX3JlbW92ZUFsbFNjaGVtYXModGhpcywgdGhpcy5fc2NoZW1hcyk7XG4gICAgICBfcmVtb3ZlQWxsU2NoZW1hcyh0aGlzLCB0aGlzLl9yZWZzKTtcbiAgICAgIHRoaXMuX2NhY2hlLmNsZWFyKCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgdmFyIHNjaGVtYU9iaiA9IF9nZXRTY2hlbWFPYmoodGhpcywgc2NoZW1hS2V5UmVmKTtcbiAgICAgIGlmIChzY2hlbWFPYmopIHRoaXMuX2NhY2hlLmRlbChzY2hlbWFPYmouY2FjaGVLZXkpO1xuICAgICAgZGVsZXRlIHRoaXMuX3NjaGVtYXNbc2NoZW1hS2V5UmVmXTtcbiAgICAgIGRlbGV0ZSB0aGlzLl9yZWZzW3NjaGVtYUtleVJlZl07XG4gICAgICByZXR1cm4gdGhpcztcbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAgdmFyIHNlcmlhbGl6ZSA9IHRoaXMuX29wdHMuc2VyaWFsaXplO1xuICAgICAgdmFyIGNhY2hlS2V5ID0gc2VyaWFsaXplID8gc2VyaWFsaXplKHNjaGVtYUtleVJlZikgOiBzY2hlbWFLZXlSZWY7XG4gICAgICB0aGlzLl9jYWNoZS5kZWwoY2FjaGVLZXkpO1xuICAgICAgdmFyIGlkID0gdGhpcy5fZ2V0SWQoc2NoZW1hS2V5UmVmKTtcbiAgICAgIGlmIChpZCkge1xuICAgICAgICBpZCA9IHJlc29sdmUubm9ybWFsaXplSWQoaWQpO1xuICAgICAgICBkZWxldGUgdGhpcy5fc2NoZW1hc1tpZF07XG4gICAgICAgIGRlbGV0ZSB0aGlzLl9yZWZzW2lkXTtcbiAgICAgIH1cbiAgfVxuICByZXR1cm4gdGhpcztcbn1cblxuXG5mdW5jdGlvbiBfcmVtb3ZlQWxsU2NoZW1hcyhzZWxmLCBzY2hlbWFzLCByZWdleCkge1xuICBmb3IgKHZhciBrZXlSZWYgaW4gc2NoZW1hcykge1xuICAgIHZhciBzY2hlbWFPYmogPSBzY2hlbWFzW2tleVJlZl07XG4gICAgaWYgKCFzY2hlbWFPYmoubWV0YSAmJiAoIXJlZ2V4IHx8IHJlZ2V4LnRlc3Qoa2V5UmVmKSkpIHtcbiAgICAgIHNlbGYuX2NhY2hlLmRlbChzY2hlbWFPYmouY2FjaGVLZXkpO1xuICAgICAgZGVsZXRlIHNjaGVtYXNba2V5UmVmXTtcbiAgICB9XG4gIH1cbn1cblxuXG4vKiBAdGhpcyAgIEFqdiAqL1xuZnVuY3Rpb24gX2FkZFNjaGVtYShzY2hlbWEsIHNraXBWYWxpZGF0aW9uLCBtZXRhLCBzaG91bGRBZGRTY2hlbWEpIHtcbiAgaWYgKHR5cGVvZiBzY2hlbWEgIT0gJ29iamVjdCcgJiYgdHlwZW9mIHNjaGVtYSAhPSAnYm9vbGVhbicpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdzY2hlbWEgc2hvdWxkIGJlIG9iamVjdCBvciBib29sZWFuJyk7XG4gIHZhciBzZXJpYWxpemUgPSB0aGlzLl9vcHRzLnNlcmlhbGl6ZTtcbiAgdmFyIGNhY2hlS2V5ID0gc2VyaWFsaXplID8gc2VyaWFsaXplKHNjaGVtYSkgOiBzY2hlbWE7XG4gIHZhciBjYWNoZWQgPSB0aGlzLl9jYWNoZS5nZXQoY2FjaGVLZXkpO1xuICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gIHNob3VsZEFkZFNjaGVtYSA9IHNob3VsZEFkZFNjaGVtYSB8fCB0aGlzLl9vcHRzLmFkZFVzZWRTY2hlbWEgIT09IGZhbHNlO1xuXG4gIHZhciBpZCA9IHJlc29sdmUubm9ybWFsaXplSWQodGhpcy5fZ2V0SWQoc2NoZW1hKSk7XG4gIGlmIChpZCAmJiBzaG91bGRBZGRTY2hlbWEpIGNoZWNrVW5pcXVlKHRoaXMsIGlkKTtcblxuICB2YXIgd2lsbFZhbGlkYXRlID0gdGhpcy5fb3B0cy52YWxpZGF0ZVNjaGVtYSAhPT0gZmFsc2UgJiYgIXNraXBWYWxpZGF0aW9uO1xuICB2YXIgcmVjdXJzaXZlTWV0YTtcbiAgaWYgKHdpbGxWYWxpZGF0ZSAmJiAhKHJlY3Vyc2l2ZU1ldGEgPSBpZCAmJiBpZCA9PSByZXNvbHZlLm5vcm1hbGl6ZUlkKHNjaGVtYS4kc2NoZW1hKSkpXG4gICAgdGhpcy52YWxpZGF0ZVNjaGVtYShzY2hlbWEsIHRydWUpO1xuXG4gIHZhciBsb2NhbFJlZnMgPSByZXNvbHZlLmlkcy5jYWxsKHRoaXMsIHNjaGVtYSk7XG5cbiAgdmFyIHNjaGVtYU9iaiA9IG5ldyBTY2hlbWFPYmplY3Qoe1xuICAgIGlkOiBpZCxcbiAgICBzY2hlbWE6IHNjaGVtYSxcbiAgICBsb2NhbFJlZnM6IGxvY2FsUmVmcyxcbiAgICBjYWNoZUtleTogY2FjaGVLZXksXG4gICAgbWV0YTogbWV0YVxuICB9KTtcblxuICBpZiAoaWRbMF0gIT0gJyMnICYmIHNob3VsZEFkZFNjaGVtYSkgdGhpcy5fcmVmc1tpZF0gPSBzY2hlbWFPYmo7XG4gIHRoaXMuX2NhY2hlLnB1dChjYWNoZUtleSwgc2NoZW1hT2JqKTtcblxuICBpZiAod2lsbFZhbGlkYXRlICYmIHJlY3Vyc2l2ZU1ldGEpIHRoaXMudmFsaWRhdGVTY2hlbWEoc2NoZW1hLCB0cnVlKTtcblxuICByZXR1cm4gc2NoZW1hT2JqO1xufVxuXG5cbi8qIEB0aGlzICAgQWp2ICovXG5mdW5jdGlvbiBfY29tcGlsZShzY2hlbWFPYmosIHJvb3QpIHtcbiAgaWYgKHNjaGVtYU9iai5jb21waWxpbmcpIHtcbiAgICBzY2hlbWFPYmoudmFsaWRhdGUgPSBjYWxsVmFsaWRhdGU7XG4gICAgY2FsbFZhbGlkYXRlLnNjaGVtYSA9IHNjaGVtYU9iai5zY2hlbWE7XG4gICAgY2FsbFZhbGlkYXRlLmVycm9ycyA9IG51bGw7XG4gICAgY2FsbFZhbGlkYXRlLnJvb3QgPSByb290ID8gcm9vdCA6IGNhbGxWYWxpZGF0ZTtcbiAgICBpZiAoc2NoZW1hT2JqLnNjaGVtYS4kYXN5bmMgPT09IHRydWUpXG4gICAgICBjYWxsVmFsaWRhdGUuJGFzeW5jID0gdHJ1ZTtcbiAgICByZXR1cm4gY2FsbFZhbGlkYXRlO1xuICB9XG4gIHNjaGVtYU9iai5jb21waWxpbmcgPSB0cnVlO1xuXG4gIHZhciBjdXJyZW50T3B0cztcbiAgaWYgKHNjaGVtYU9iai5tZXRhKSB7XG4gICAgY3VycmVudE9wdHMgPSB0aGlzLl9vcHRzO1xuICAgIHRoaXMuX29wdHMgPSB0aGlzLl9tZXRhT3B0cztcbiAgfVxuXG4gIHZhciB2O1xuICB0cnkgeyB2ID0gY29tcGlsZVNjaGVtYS5jYWxsKHRoaXMsIHNjaGVtYU9iai5zY2hlbWEsIHJvb3QsIHNjaGVtYU9iai5sb2NhbFJlZnMpOyB9XG4gIGNhdGNoKGUpIHtcbiAgICBkZWxldGUgc2NoZW1hT2JqLnZhbGlkYXRlO1xuICAgIHRocm93IGU7XG4gIH1cbiAgZmluYWxseSB7XG4gICAgc2NoZW1hT2JqLmNvbXBpbGluZyA9IGZhbHNlO1xuICAgIGlmIChzY2hlbWFPYmoubWV0YSkgdGhpcy5fb3B0cyA9IGN1cnJlbnRPcHRzO1xuICB9XG5cbiAgc2NoZW1hT2JqLnZhbGlkYXRlID0gdjtcbiAgc2NoZW1hT2JqLnJlZnMgPSB2LnJlZnM7XG4gIHNjaGVtYU9iai5yZWZWYWwgPSB2LnJlZlZhbDtcbiAgc2NoZW1hT2JqLnJvb3QgPSB2LnJvb3Q7XG4gIHJldHVybiB2O1xuXG5cbiAgLyogQHRoaXMgICB7Kn0gLSBjdXN0b20gY29udGV4dCwgc2VlIHBhc3NDb250ZXh0IG9wdGlvbiAqL1xuICBmdW5jdGlvbiBjYWxsVmFsaWRhdGUoKSB7XG4gICAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICAgIHZhciBfdmFsaWRhdGUgPSBzY2hlbWFPYmoudmFsaWRhdGU7XG4gICAgdmFyIHJlc3VsdCA9IF92YWxpZGF0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGNhbGxWYWxpZGF0ZS5lcnJvcnMgPSBfdmFsaWRhdGUuZXJyb3JzO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBjaG9vc2VHZXRJZChvcHRzKSB7XG4gIHN3aXRjaCAob3B0cy5zY2hlbWFJZCkge1xuICAgIGNhc2UgJ2F1dG8nOiByZXR1cm4gX2dldCRJZE9ySWQ7XG4gICAgY2FzZSAnaWQnOiByZXR1cm4gX2dldElkO1xuICAgIGRlZmF1bHQ6IHJldHVybiBfZ2V0JElkO1xuICB9XG59XG5cbi8qIEB0aGlzICAgQWp2ICovXG5mdW5jdGlvbiBfZ2V0SWQoc2NoZW1hKSB7XG4gIGlmIChzY2hlbWEuJGlkKSB0aGlzLmxvZ2dlci53YXJuKCdzY2hlbWEgJGlkIGlnbm9yZWQnLCBzY2hlbWEuJGlkKTtcbiAgcmV0dXJuIHNjaGVtYS5pZDtcbn1cblxuLyogQHRoaXMgICBBanYgKi9cbmZ1bmN0aW9uIF9nZXQkSWQoc2NoZW1hKSB7XG4gIGlmIChzY2hlbWEuaWQpIHRoaXMubG9nZ2VyLndhcm4oJ3NjaGVtYSBpZCBpZ25vcmVkJywgc2NoZW1hLmlkKTtcbiAgcmV0dXJuIHNjaGVtYS4kaWQ7XG59XG5cblxuZnVuY3Rpb24gX2dldCRJZE9ySWQoc2NoZW1hKSB7XG4gIGlmIChzY2hlbWEuJGlkICYmIHNjaGVtYS5pZCAmJiBzY2hlbWEuJGlkICE9IHNjaGVtYS5pZClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NjaGVtYSAkaWQgaXMgZGlmZmVyZW50IGZyb20gaWQnKTtcbiAgcmV0dXJuIHNjaGVtYS4kaWQgfHwgc2NoZW1hLmlkO1xufVxuXG5cbi8qKlxuICogQ29udmVydCBhcnJheSBvZiBlcnJvciBtZXNzYWdlIG9iamVjdHMgdG8gc3RyaW5nXG4gKiBAdGhpcyAgIEFqdlxuICogQHBhcmFtICB7QXJyYXk8T2JqZWN0Pn0gZXJyb3JzIG9wdGlvbmFsIGFycmF5IG9mIHZhbGlkYXRpb24gZXJyb3JzLCBpZiBub3QgcGFzc2VkIGVycm9ycyBmcm9tIHRoZSBpbnN0YW5jZSBhcmUgdXNlZC5cbiAqIEBwYXJhbSAge09iamVjdH0gb3B0aW9ucyBvcHRpb25hbCBvcHRpb25zIHdpdGggcHJvcGVydGllcyBgc2VwYXJhdG9yYCBhbmQgYGRhdGFWYXJgLlxuICogQHJldHVybiB7U3RyaW5nfSBodW1hbiByZWFkYWJsZSBzdHJpbmcgd2l0aCBhbGwgZXJyb3JzIGRlc2NyaXB0aW9uc1xuICovXG5mdW5jdGlvbiBlcnJvcnNUZXh0KGVycm9ycywgb3B0aW9ucykge1xuICBlcnJvcnMgPSBlcnJvcnMgfHwgdGhpcy5lcnJvcnM7XG4gIGlmICghZXJyb3JzKSByZXR1cm4gJ05vIGVycm9ycyc7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB2YXIgc2VwYXJhdG9yID0gb3B0aW9ucy5zZXBhcmF0b3IgPT09IHVuZGVmaW5lZCA/ICcsICcgOiBvcHRpb25zLnNlcGFyYXRvcjtcbiAgdmFyIGRhdGFWYXIgPSBvcHRpb25zLmRhdGFWYXIgPT09IHVuZGVmaW5lZCA/ICdkYXRhJyA6IG9wdGlvbnMuZGF0YVZhcjtcblxuICB2YXIgdGV4dCA9ICcnO1xuICBmb3IgKHZhciBpPTA7IGk8ZXJyb3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGUgPSBlcnJvcnNbaV07XG4gICAgaWYgKGUpIHRleHQgKz0gZGF0YVZhciArIGUuZGF0YVBhdGggKyAnICcgKyBlLm1lc3NhZ2UgKyBzZXBhcmF0b3I7XG4gIH1cbiAgcmV0dXJuIHRleHQuc2xpY2UoMCwgLXNlcGFyYXRvci5sZW5ndGgpO1xufVxuXG5cbi8qKlxuICogQWRkIGN1c3RvbSBmb3JtYXRcbiAqIEB0aGlzICAgQWp2XG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBmb3JtYXQgbmFtZVxuICogQHBhcmFtIHtTdHJpbmd8UmVnRXhwfEZ1bmN0aW9ufSBmb3JtYXQgc3RyaW5nIGlzIGNvbnZlcnRlZCB0byBSZWdFeHA7IGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gYm9vbGVhbiAodHJ1ZSB3aGVuIHZhbGlkKVxuICogQHJldHVybiB7QWp2fSB0aGlzIGZvciBtZXRob2QgY2hhaW5pbmdcbiAqL1xuZnVuY3Rpb24gYWRkRm9ybWF0KG5hbWUsIGZvcm1hdCkge1xuICBpZiAodHlwZW9mIGZvcm1hdCA9PSAnc3RyaW5nJykgZm9ybWF0ID0gbmV3IFJlZ0V4cChmb3JtYXQpO1xuICB0aGlzLl9mb3JtYXRzW25hbWVdID0gZm9ybWF0O1xuICByZXR1cm4gdGhpcztcbn1cblxuXG5mdW5jdGlvbiBhZGREZWZhdWx0TWV0YVNjaGVtYShzZWxmKSB7XG4gIHZhciAkZGF0YVNjaGVtYTtcbiAgaWYgKHNlbGYuX29wdHMuJGRhdGEpIHtcbiAgICAkZGF0YVNjaGVtYSA9IHJlcXVpcmUoJy4vcmVmcy9kYXRhLmpzb24nKTtcbiAgICBzZWxmLmFkZE1ldGFTY2hlbWEoJGRhdGFTY2hlbWEsICRkYXRhU2NoZW1hLiRpZCwgdHJ1ZSk7XG4gIH1cbiAgaWYgKHNlbGYuX29wdHMubWV0YSA9PT0gZmFsc2UpIHJldHVybjtcbiAgdmFyIG1ldGFTY2hlbWEgPSByZXF1aXJlKCcuL3JlZnMvanNvbi1zY2hlbWEtZHJhZnQtMDcuanNvbicpO1xuICBpZiAoc2VsZi5fb3B0cy4kZGF0YSkgbWV0YVNjaGVtYSA9ICRkYXRhTWV0YVNjaGVtYShtZXRhU2NoZW1hLCBNRVRBX1NVUFBPUlRfREFUQSk7XG4gIHNlbGYuYWRkTWV0YVNjaGVtYShtZXRhU2NoZW1hLCBNRVRBX1NDSEVNQV9JRCwgdHJ1ZSk7XG4gIHNlbGYuX3JlZnNbJ2h0dHA6Ly9qc29uLXNjaGVtYS5vcmcvc2NoZW1hJ10gPSBNRVRBX1NDSEVNQV9JRDtcbn1cblxuXG5mdW5jdGlvbiBhZGRJbml0aWFsU2NoZW1hcyhzZWxmKSB7XG4gIHZhciBvcHRzU2NoZW1hcyA9IHNlbGYuX29wdHMuc2NoZW1hcztcbiAgaWYgKCFvcHRzU2NoZW1hcykgcmV0dXJuO1xuICBpZiAoQXJyYXkuaXNBcnJheShvcHRzU2NoZW1hcykpIHNlbGYuYWRkU2NoZW1hKG9wdHNTY2hlbWFzKTtcbiAgZWxzZSBmb3IgKHZhciBrZXkgaW4gb3B0c1NjaGVtYXMpIHNlbGYuYWRkU2NoZW1hKG9wdHNTY2hlbWFzW2tleV0sIGtleSk7XG59XG5cblxuZnVuY3Rpb24gYWRkSW5pdGlhbEZvcm1hdHMoc2VsZikge1xuICBmb3IgKHZhciBuYW1lIGluIHNlbGYuX29wdHMuZm9ybWF0cykge1xuICAgIHZhciBmb3JtYXQgPSBzZWxmLl9vcHRzLmZvcm1hdHNbbmFtZV07XG4gICAgc2VsZi5hZGRGb3JtYXQobmFtZSwgZm9ybWF0KTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGFkZEluaXRpYWxLZXl3b3JkcyhzZWxmKSB7XG4gIGZvciAodmFyIG5hbWUgaW4gc2VsZi5fb3B0cy5rZXl3b3Jkcykge1xuICAgIHZhciBrZXl3b3JkID0gc2VsZi5fb3B0cy5rZXl3b3Jkc1tuYW1lXTtcbiAgICBzZWxmLmFkZEtleXdvcmQobmFtZSwga2V5d29yZCk7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBjaGVja1VuaXF1ZShzZWxmLCBpZCkge1xuICBpZiAoc2VsZi5fc2NoZW1hc1tpZF0gfHwgc2VsZi5fcmVmc1tpZF0pXG4gICAgdGhyb3cgbmV3IEVycm9yKCdzY2hlbWEgd2l0aCBrZXkgb3IgaWQgXCInICsgaWQgKyAnXCIgYWxyZWFkeSBleGlzdHMnKTtcbn1cblxuXG5mdW5jdGlvbiBnZXRNZXRhU2NoZW1hT3B0aW9ucyhzZWxmKSB7XG4gIHZhciBtZXRhT3B0cyA9IHV0aWwuY29weShzZWxmLl9vcHRzKTtcbiAgZm9yICh2YXIgaT0wOyBpPE1FVEFfSUdOT1JFX09QVElPTlMubGVuZ3RoOyBpKyspXG4gICAgZGVsZXRlIG1ldGFPcHRzW01FVEFfSUdOT1JFX09QVElPTlNbaV1dO1xuICByZXR1cm4gbWV0YU9wdHM7XG59XG5cblxuZnVuY3Rpb24gc2V0TG9nZ2VyKHNlbGYpIHtcbiAgdmFyIGxvZ2dlciA9IHNlbGYuX29wdHMubG9nZ2VyO1xuICBpZiAobG9nZ2VyID09PSBmYWxzZSkge1xuICAgIHNlbGYubG9nZ2VyID0ge2xvZzogbm9vcCwgd2Fybjogbm9vcCwgZXJyb3I6IG5vb3B9O1xuICB9IGVsc2Uge1xuICAgIGlmIChsb2dnZXIgPT09IHVuZGVmaW5lZCkgbG9nZ2VyID0gY29uc29sZTtcbiAgICBpZiAoISh0eXBlb2YgbG9nZ2VyID09ICdvYmplY3QnICYmIGxvZ2dlci5sb2cgJiYgbG9nZ2VyLndhcm4gJiYgbG9nZ2VyLmVycm9yKSlcbiAgICAgIHRocm93IG5ldyBFcnJvcignbG9nZ2VyIG11c3QgaW1wbGVtZW50IGxvZywgd2FybiBhbmQgZXJyb3IgbWV0aG9kcycpO1xuICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyO1xuICB9XG59XG5cblxuZnVuY3Rpb24gbm9vcCgpIHt9XG4iLCJpbXBvcnQgQWp2IGZyb20gJ2Fqdic7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnbG9kYXNoL2lzT2JqZWN0JztcbmV4cG9ydCBjb25zdCBBSlZfQ09ORklHID0ge1xuICAgIGVycm9yRGF0YVBhdGg6ICdwcm9wZXJ0eScsXG4gICAgYWxsRXJyb3JzOiB0cnVlLFxuICAgIG11bHRpcGxlT2ZQcmVjaXNpb246IDgsXG4gICAgc2NoZW1hSWQ6ICdhdXRvJyxcbiAgICB1bmtub3duRm9ybWF0czogJ2lnbm9yZScsXG59O1xuZXhwb3J0IGNvbnN0IENPTE9SX0ZPUk1BVF9SRUdFWCA9IC9eKCM/KFswLTlBLUZhLWZdezN9KXsxLDJ9XFxifGFxdWF8YmxhY2t8Ymx1ZXxmdWNoc2lhfGdyYXl8Z3JlZW58bGltZXxtYXJvb258bmF2eXxvbGl2ZXxvcmFuZ2V8cHVycGxlfHJlZHxzaWx2ZXJ8dGVhbHx3aGl0ZXx5ZWxsb3d8KHJnYlxcKFxccypcXGIoWzAtOV18WzEtOV1bMC05XXwxWzAtOV1bMC05XXwyWzAtNF1bMC05XXwyNVswLTVdKVxcYlxccyosXFxzKlxcYihbMC05XXxbMS05XVswLTldfDFbMC05XVswLTldfDJbMC00XVswLTldfDI1WzAtNV0pXFxiXFxzKixcXHMqXFxiKFswLTldfFsxLTldWzAtOV18MVswLTldWzAtOV18MlswLTRdWzAtOV18MjVbMC01XSlcXGJcXHMqXFwpKXwocmdiXFwoXFxzKihcXGQ/XFxkJXwxMDAlKStcXHMqLFxccyooXFxkP1xcZCV8MTAwJSkrXFxzKixcXHMqKFxcZD9cXGQlfDEwMCUpK1xccypcXCkpKSQvO1xuZXhwb3J0IGNvbnN0IERBVEFfVVJMX0ZPUk1BVF9SRUdFWCA9IC9eZGF0YTooW2Etel0rXFwvW2EtejAtOS0rLl0rKT87KD86bmFtZT0oLiopOyk/YmFzZTY0LCguKikkLztcbi8qKiBDcmVhdGVzIGFuIEFqdiB2ZXJzaW9uIDYgaW1wbGVtZW50YXRpb24gb2JqZWN0IHdpdGggc3RhbmRhcmQgc3VwcG9ydCBmb3IgdGhlICdjb2xvcmAgYW5kIGBkYXRhLXVybGAgY3VzdG9tIGZvcm1hdHMuXG4gKiBJZiBgYWRkaXRpb25hbE1ldGFTY2hlbWFzYCBhcmUgcHJvdmlkZWQgdGhlbiB0aGUgQWp2IGluc3RhbmNlIGlzIG1vZGlmaWVkIHRvIGFkZCBlYWNoIG9mIHRoZSBtZXRhIHNjaGVtYXMgaW4gdGhlXG4gKiBsaXN0LiBJZiBgY3VzdG9tRm9ybWF0c2AgYXJlIHByb3ZpZGVkIHRoZW4gdGhvc2UgYWRkaXRpb25hbCBmb3JtYXRzIGFyZSBhZGRlZCB0byB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgZm9ybWF0cy4gSWZcbiAqIGBhanZPcHRpb25zT3ZlcnJpZGVzYCBhcmUgcHJvdmlkZWQgdGhlbiB0aGV5IGFyZSBzcHJlYWQgb24gdG9wIG9mIHRoZSBkZWZhdWx0IGBBSlZfQ09ORklHYCBvcHRpb25zIHdoZW4gY29uc3RydWN0aW5nXG4gKiB0aGUgYEFqdmAgaW5zdGFuY2UuXG4gKlxuICogQHBhcmFtIFthZGRpdGlvbmFsTWV0YVNjaGVtYXNdIC0gVGhlIGxpc3Qgb2YgYWRkaXRpb25hbCBtZXRhIHNjaGVtYXMgdGhhdCB0aGUgdmFsaWRhdG9yIGNhbiBhY2Nlc3NcbiAqIEBwYXJhbSBbY3VzdG9tRm9ybWF0c10gLSBUaGUgc2V0IG9mIGFkZGl0aW9uYWwgY3VzdG9tIGZvcm1hdHMgdGhhdCB0aGUgdmFsaWRhdG9yIHdpbGwgc3VwcG9ydFxuICogQHBhcmFtIFthanZPcHRpb25zT3ZlcnJpZGVzPXt9XSAtIFRoZSBzZXQgb2YgdmFsaWRhdG9yIGNvbmZpZyBvdmVycmlkZSBvcHRpb25zXG4gKiBAZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB0aGUgYEByanNmL3ZhbGlkYXRvci1hanY4XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUFqdkluc3RhbmNlKGFkZGl0aW9uYWxNZXRhU2NoZW1hcywgY3VzdG9tRm9ybWF0cywgYWp2T3B0aW9uc092ZXJyaWRlcyA9IHt9KSB7XG4gICAgY29uc3QgYWp2ID0gbmV3IEFqdih7IC4uLkFKVl9DT05GSUcsIC4uLmFqdk9wdGlvbnNPdmVycmlkZXMgfSk7XG4gICAgLy8gYWRkIGN1c3RvbSBmb3JtYXRzXG4gICAgYWp2LmFkZEZvcm1hdCgnZGF0YS11cmwnLCBEQVRBX1VSTF9GT1JNQVRfUkVHRVgpO1xuICAgIGFqdi5hZGRGb3JtYXQoJ2NvbG9yJywgQ09MT1JfRk9STUFUX1JFR0VYKTtcbiAgICAvLyBhZGQgbW9yZSBzY2hlbWFzIHRvIHZhbGlkYXRlIGFnYWluc3RcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhZGRpdGlvbmFsTWV0YVNjaGVtYXMpKSB7XG4gICAgICAgIGFqdi5hZGRNZXRhU2NoZW1hKGFkZGl0aW9uYWxNZXRhU2NoZW1hcyk7XG4gICAgfVxuICAgIC8vIGFkZCBtb3JlIGN1c3RvbSBmb3JtYXRzIHRvIHZhbGlkYXRlIGFnYWluc3RcbiAgICBpZiAoaXNPYmplY3QoY3VzdG9tRm9ybWF0cykpIHtcbiAgICAgICAgT2JqZWN0LmtleXMoY3VzdG9tRm9ybWF0cykuZm9yRWFjaCgoZm9ybWF0TmFtZSkgPT4ge1xuICAgICAgICAgICAgYWp2LmFkZEZvcm1hdChmb3JtYXROYW1lLCBjdXN0b21Gb3JtYXRzW2Zvcm1hdE5hbWVdKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBhanY7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcmVhdGVBanZJbnN0YW5jZS5qcy5tYXAiLCJpbXBvcnQgeyBjcmVhdGVFcnJvckhhbmRsZXIsIGRlZXBFcXVhbHMsIGdldERlZmF1bHRGb3JtU3RhdGUsIFJPT1RfU0NIRU1BX1BSRUZJWCwgdG9FcnJvckxpc3QsIHRvRXJyb3JTY2hlbWEsIHVud3JhcEVycm9ySGFuZGxlciwgdmFsaWRhdGlvbkRhdGFNZXJnZSwgd2l0aElkUmVmUHJlZml4LCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbmltcG9ydCBjcmVhdGVBanZJbnN0YW5jZSBmcm9tICcuL2NyZWF0ZUFqdkluc3RhbmNlJztcbi8qKiBgVmFsaWRhdG9yVHlwZWAgaW1wbGVtZW50YXRpb24gdGhhdCB1c2VzIHRoZSBBSlYgNiB2YWxpZGF0aW9uIG1lY2hhbmlzbS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB0aGUgYEByanNmL3ZhbGlkYXRvci1hanY4XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFKVjZWYWxpZGF0b3Ige1xuICAgIC8qKiBDb25zdHJ1Y3RzIGFuIGBBSlY2VmFsaWRhdG9yYCBpbnN0YW5jZSB1c2luZyB0aGUgYG9wdGlvbnNgXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBgQ3VzdG9tVmFsaWRhdG9yT3B0aW9uc1R5cGVgIG9wdGlvbnMgdGhhdCBhcmUgdXNlZCB0byBjcmVhdGUgdGhlIEFKViBpbnN0YW5jZVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgeyBhZGRpdGlvbmFsTWV0YVNjaGVtYXMsIGN1c3RvbUZvcm1hdHMsIGFqdk9wdGlvbnNPdmVycmlkZXMgfSA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMuYWp2ID0gY3JlYXRlQWp2SW5zdGFuY2UoYWRkaXRpb25hbE1ldGFTY2hlbWFzLCBjdXN0b21Gb3JtYXRzLCBhanZPcHRpb25zT3ZlcnJpZGVzKTtcbiAgICB9XG4gICAgLyoqIENvbnZlcnRzIGFuIGBlcnJvclNjaGVtYWAgaW50byBhIGxpc3Qgb2YgYFJKU0ZWYWxpZGF0aW9uRXJyb3JzYFxuICAgICAqXG4gICAgICogQHBhcmFtIGVycm9yU2NoZW1hIC0gVGhlIGBFcnJvclNjaGVtYWAgaW5zdGFuY2UgdG8gY29udmVydFxuICAgICAqIEBwYXJhbSBbZmllbGRQYXRoPVtdXSAtIFRoZSBjdXJyZW50IGZpZWxkIHBhdGgsIGRlZmF1bHRzIHRvIFtdIGlmIG5vdCBzcGVjaWZpZWRcbiAgICAgKiBAZGVwcmVjYXRlZCAtIFVzZSB0aGUgYHRvRXJyb3JMaXN0KClgIGZ1bmN0aW9uIHByb3ZpZGVkIGJ5IGBAcmpzZi91dGlsc2AgaW5zdGVhZC4gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQgaW5cbiAgICAgKiAgICAgICAgdGhlIG5leHQgbWFqb3IgcmVsZWFzZS5cbiAgICAgKi9cbiAgICB0b0Vycm9yTGlzdChlcnJvclNjaGVtYSwgZmllbGRQYXRoID0gW10pIHtcbiAgICAgICAgcmV0dXJuIHRvRXJyb3JMaXN0KGVycm9yU2NoZW1hLCBmaWVsZFBhdGgpO1xuICAgIH1cbiAgICAvKiogVHJhbnNmb3JtaW5nIHRoZSBlcnJvciBvdXRwdXQgZnJvbSBhanYgdG8gZm9ybWF0IHVzZWQgYnkgQHJqc2YvdXRpbHMuXG4gICAgICogQXQgc29tZSBwb2ludCwgY29tcG9uZW50cyBzaG91bGQgYmUgdXBkYXRlZCB0byBzdXBwb3J0IGFqdi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlcnJvcnMgLSBUaGUgbGlzdCBvZiBBSlYgZXJyb3JzIHRvIGNvbnZlcnQgdG8gYFJKU0ZWYWxpZGF0aW9uRXJyb3JzYFxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgdHJhbnNmb3JtUkpTRlZhbGlkYXRpb25FcnJvcnMoZXJyb3JzID0gW10pIHtcbiAgICAgICAgcmV0dXJuIGVycm9ycy5tYXAoKGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZGF0YVBhdGgsIGtleXdvcmQsIG1lc3NhZ2UsIHBhcmFtcywgc2NoZW1hUGF0aCB9ID0gZTtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5ID0gYCR7ZGF0YVBhdGh9YDtcbiAgICAgICAgICAgIC8vIHB1dCBkYXRhIGluIGV4cGVjdGVkIGZvcm1hdFxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBrZXl3b3JkLFxuICAgICAgICAgICAgICAgIHByb3BlcnR5LFxuICAgICAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgIHN0YWNrOiBgJHtwcm9wZXJ0eX0gJHttZXNzYWdlfWAudHJpbSgpLFxuICAgICAgICAgICAgICAgIHNjaGVtYVBhdGgsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqIFJ1bnMgdGhlIHB1cmUgdmFsaWRhdGlvbiBvZiB0aGUgYHNjaGVtYWAgYW5kIGBmb3JtRGF0YWAgd2l0aG91dCBhbnkgb2YgdGhlIFJKU0YgZnVuY3Rpb25hbGl0eS4gUHJvdmlkZWQgZm9yIHVzZVxuICAgICAqIGJ5IHRoZSBwbGF5Z3JvdW5kLiBSZXR1cm5zIHRoZSBgZXJyb3JzYCBmcm9tIHRoZSB2YWxpZGF0aW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBhZ2FpbnN0IHdoaWNoIHRvIHZhbGlkYXRlIHRoZSBmb3JtIGRhdGEgICAqIEBwYXJhbSBzY2hlbWFcbiAgICAgKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgZm9ybSBkYXRhIHRvIHZhbGlkYXRlXG4gICAgICovXG4gICAgcmF3VmFsaWRhdGlvbihzY2hlbWEsIGZvcm1EYXRhKSB7XG4gICAgICAgIGxldCB2YWxpZGF0aW9uRXJyb3IgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmFqdi52YWxpZGF0ZShzY2hlbWEsIGZvcm1EYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB2YWxpZGF0aW9uRXJyb3IgPSBlcnI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXJyb3JzID0gdGhpcy5hanYuZXJyb3JzIHx8IHVuZGVmaW5lZDtcbiAgICAgICAgLy8gQ2xlYXIgZXJyb3JzIHRvIHByZXZlbnQgcGVyc2lzdGVudCBlcnJvcnMsIHNlZSAjMTEwNFxuICAgICAgICB0aGlzLmFqdi5lcnJvcnMgPSBudWxsO1xuICAgICAgICByZXR1cm4geyBlcnJvcnM6IGVycm9ycywgdmFsaWRhdGlvbkVycm9yIH07XG4gICAgfVxuICAgIC8qKiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyB0aGUgYGZvcm1EYXRhYCB3aXRoIGFuIG9wdGlvbmFsIHVzZXIgY29udHJpYnV0ZWQgYGN1c3RvbVZhbGlkYXRlYCBmdW5jdGlvbiwgd2hpY2ggcmVjZWl2ZXNcbiAgICAgKiB0aGUgZm9ybSBkYXRhIGFuZCBhIGBlcnJvckhhbmRsZXJgIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGFkZCBjdXN0b20gdmFsaWRhdGlvbiBlcnJvcnMgZm9yIGVhY2ggZmllbGQuIEFsc29cbiAgICAgKiBzdXBwb3J0cyBhIGB0cmFuc2Zvcm1FcnJvcnNgIGZ1bmN0aW9uIHRoYXQgd2lsbCB0YWtlIHRoZSByYXcgQUpWIHZhbGlkYXRpb24gZXJyb3JzLCBwcmlvciB0byBjdXN0b20gdmFsaWRhdGlvbiBhbmRcbiAgICAgKiB0cmFuc2Zvcm0gdGhlbSBpbiB3aGF0IGV2ZXIgd2F5IGl0IGNob29zZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgZm9ybSBkYXRhIHRvIHZhbGlkYXRlXG4gICAgICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgYWdhaW5zdCB3aGljaCB0byB2YWxpZGF0ZSB0aGUgZm9ybSBkYXRhXG4gICAgICogQHBhcmFtIFtjdXN0b21WYWxpZGF0ZV0gLSBBbiBvcHRpb25hbCBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgdG8gcGVyZm9ybSBjdXN0b20gdmFsaWRhdGlvblxuICAgICAqIEBwYXJhbSBbdHJhbnNmb3JtRXJyb3JzXSAtIEFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB0byB0cmFuc2Zvcm0gZXJyb3JzIGFmdGVyIEFKViB2YWxpZGF0aW9uXG4gICAgICogQHBhcmFtIFt1aVNjaGVtYV0gLSBBbiBvcHRpb25hbCB1aVNjaGVtYSB0aGF0IGlzIHBhc3NlZCB0byBgdHJhbnNmb3JtRXJyb3JzYCBhbmQgYGN1c3RvbVZhbGlkYXRlYFxuICAgICAqL1xuICAgIHZhbGlkYXRlRm9ybURhdGEoZm9ybURhdGEsIHNjaGVtYSwgY3VzdG9tVmFsaWRhdGUsIHRyYW5zZm9ybUVycm9ycywgdWlTY2hlbWEpIHtcbiAgICAgICAgY29uc3Qgcm9vdFNjaGVtYSA9IHNjaGVtYTtcbiAgICAgICAgY29uc3QgcmF3RXJyb3JzID0gdGhpcy5yYXdWYWxpZGF0aW9uKHNjaGVtYSwgZm9ybURhdGEpO1xuICAgICAgICBjb25zdCB7IHZhbGlkYXRpb25FcnJvciB9ID0gcmF3RXJyb3JzO1xuICAgICAgICBsZXQgZXJyb3JzID0gdGhpcy50cmFuc2Zvcm1SSlNGVmFsaWRhdGlvbkVycm9ycyhyYXdFcnJvcnMuZXJyb3JzKTtcbiAgICAgICAgY29uc3Qgbm9Qcm9wZXJNZXRhU2NoZW1hID0gdmFsaWRhdGlvbkVycm9yICYmIHZhbGlkYXRpb25FcnJvci5tZXNzYWdlICYmIHZhbGlkYXRpb25FcnJvci5tZXNzYWdlLmluY2x1ZGVzKCdubyBzY2hlbWEgd2l0aCBrZXkgb3IgcmVmICcpO1xuICAgICAgICBpZiAobm9Qcm9wZXJNZXRhU2NoZW1hKSB7XG4gICAgICAgICAgICBlcnJvcnMgPSBbLi4uZXJyb3JzLCB7IHN0YWNrOiB2YWxpZGF0aW9uRXJyb3IubWVzc2FnZSB9XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHRyYW5zZm9ybUVycm9ycyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgZXJyb3JzID0gdHJhbnNmb3JtRXJyb3JzKGVycm9ycywgdWlTY2hlbWEpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBlcnJvclNjaGVtYSA9IHRvRXJyb3JTY2hlbWEoZXJyb3JzKTtcbiAgICAgICAgaWYgKG5vUHJvcGVyTWV0YVNjaGVtYSkge1xuICAgICAgICAgICAgZXJyb3JTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgLi4uZXJyb3JTY2hlbWEsXG4gICAgICAgICAgICAgICAgLi4ue1xuICAgICAgICAgICAgICAgICAgICAkc2NoZW1hOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfX2Vycm9yczogW3ZhbGlkYXRpb25FcnJvci5tZXNzYWdlXSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGN1c3RvbVZhbGlkYXRlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4geyBlcnJvcnMsIGVycm9yU2NoZW1hIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gSW5jbHVkZSBmb3JtIGRhdGEgd2l0aCB1bmRlZmluZWQgdmFsdWVzLCB3aGljaCBpcyByZXF1aXJlZCBmb3IgY3VzdG9tIHZhbGlkYXRpb24uXG4gICAgICAgIGNvbnN0IG5ld0Zvcm1EYXRhID0gZ2V0RGVmYXVsdEZvcm1TdGF0ZSh0aGlzLCBzY2hlbWEsIGZvcm1EYXRhLCByb290U2NoZW1hLCB0cnVlKTtcbiAgICAgICAgY29uc3QgZXJyb3JIYW5kbGVyID0gY3VzdG9tVmFsaWRhdGUobmV3Rm9ybURhdGEsIGNyZWF0ZUVycm9ySGFuZGxlcihuZXdGb3JtRGF0YSksIHVpU2NoZW1hKTtcbiAgICAgICAgY29uc3QgdXNlckVycm9yU2NoZW1hID0gdW53cmFwRXJyb3JIYW5kbGVyKGVycm9ySGFuZGxlcik7XG4gICAgICAgIHJldHVybiB2YWxpZGF0aW9uRGF0YU1lcmdlKHsgZXJyb3JzLCBlcnJvclNjaGVtYSB9LCB1c2VyRXJyb3JTY2hlbWEpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiBhIHNjaGVtYSBuZWVkcyB0byBiZSBhZGRlZCBhbmQgaWYgdGhlIHJvb3Qgc2NoZW1hcyBkb24ndCBtYXRjaCBpdCByZW1vdmVzIHRoZSBvbGQgcm9vdCBzY2hlbWEgZnJvbSB0aGUgYWp2IGluc3RhbmNlIGFuZCBhZGRzIHRoZSBuZXcgb25lLlxuICAgICAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hIHVzZWQgdG8gcHJvdmlkZSAkcmVmIHJlc29sdXRpb25zXG4gICAgICovXG4gICAgaGFuZGxlU2NoZW1hVXBkYXRlKHJvb3RTY2hlbWEpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCByb290U2NoZW1hSWQgPSBST09UX1NDSEVNQV9QUkVGSVg7XG4gICAgICAgIC8vIGFkZCB0aGUgcm9vdFNjaGVtYSBST09UX1NDSEVNQV9QUkVGSVggYXMgaWQuXG4gICAgICAgIC8vIGlmIHNjaGVtYSB2YWxpZGF0b3IgaW5zdGFuY2UgZG9lc24ndCBleGlzdCwgYWRkIGl0LlxuICAgICAgICAvLyBlbHNlICdoYW5kbGVSb290U2NoZW1hQ2hhbmdlJyBzaG91bGQgYmUgY2FsbGVkIGlmIHRoZSByb290IHNjaGVtYSBjaGFuZ2VzIHNvIHdlIGRvbid0IGhhdmUgdG8gcmVtb3ZlIGFuZCByZWNvbXBpbGUgdGhlIHNjaGVtYSBldmVyeSBydW4uXG4gICAgICAgIGlmICh0aGlzLmFqdi5nZXRTY2hlbWEoUk9PVF9TQ0hFTUFfUFJFRklYKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmFqdi5hZGRTY2hlbWEocm9vdFNjaGVtYSwgUk9PVF9TQ0hFTUFfUFJFRklYKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghZGVlcEVxdWFscyhyb290U2NoZW1hLCAoX2EgPSB0aGlzLmFqdi5nZXRTY2hlbWEoUk9PVF9TQ0hFTUFfUFJFRklYKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNjaGVtYSkpIHtcbiAgICAgICAgICAgIHRoaXMuYWp2LnJlbW92ZVNjaGVtYShyb290U2NoZW1hSWQpO1xuICAgICAgICAgICAgdGhpcy5hanYuYWRkU2NoZW1hKHJvb3RTY2hlbWEsIHJvb3RTY2hlbWFJZCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqIFZhbGlkYXRlcyBkYXRhIGFnYWluc3QgYSBzY2hlbWEsIHJldHVybmluZyB0cnVlIGlmIHRoZSBkYXRhIGlzIHZhbGlkLCBvclxuICAgICAqIGZhbHNlIG90aGVyd2lzZS4gSWYgdGhlIHNjaGVtYSBpcyBpbnZhbGlkLCB0aGVuIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm5cbiAgICAgKiBmYWxzZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGFnYWluc3Qgd2hpY2ggdG8gdmFsaWRhdGUgdGhlIGZvcm0gZGF0YSAgICogQHBhcmFtIHNjaGVtYVxuICAgICAqIEBwYXJhbSBmb3JtRGF0YS0gLSBUaGUgZm9ybSBkYXRhIHRvIHZhbGlkYXRlXG4gICAgICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdXNlZCB0byBwcm92aWRlICRyZWYgcmVzb2x1dGlvbnNcbiAgICAgKi9cbiAgICBpc1ZhbGlkKHNjaGVtYSwgZm9ybURhdGEsIHJvb3RTY2hlbWEpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlU2NoZW1hVXBkYXRlKHJvb3RTY2hlbWEpO1xuICAgICAgICAgICAgLy8gdGhlbiByZXdyaXRlIHRoZSBzY2hlbWEgcmVmJ3MgdG8gcG9pbnQgdG8gdGhlIHJvb3RTY2hlbWFcbiAgICAgICAgICAgIC8vIHRoaXMgYWNjb3VudHMgZm9yIHRoZSBjYXNlIHdoZXJlIHNjaGVtYSBoYXZlIHJlZmVyZW5jZXMgdG8gbW9kZWxzXG4gICAgICAgICAgICAvLyB0aGF0IGxpdmVzIGluIHRoZSByb290U2NoZW1hIGJ1dCBub3QgaW4gdGhlIHNjaGVtYSBpbiBxdWVzdGlvbi5cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuYWp2LnZhbGlkYXRlKHdpdGhJZFJlZlByZWZpeChzY2hlbWEpLCBmb3JtRGF0YSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD12YWxpZGF0b3IuanMubWFwIiwiaW1wb3J0IEFKVjZWYWxpZGF0b3IgZnJvbSAnLi92YWxpZGF0b3InO1xuLyoqIENyZWF0ZXMgYW5kIHJldHVybnMgYSBjdXN0b21pemVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgd2l0aCB0aGUgZ2l2ZW4gY3VzdG9taXphdGlvbiBgb3B0aW9uc2AgaWZcbiAqIHByb3ZpZGVkLlxuICpcbiAqIEBwYXJhbSBbb3B0aW9ucz17fV0gLSBUaGUgYEN1c3RvbVZhbGlkYXRvck9wdGlvbnNUeXBlYCBvcHRpb25zIHRoYXQgYXJlIHVzZWQgdG8gY3JlYXRlIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW5zdGFuY2VcbiAqIEBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHRoZSBgQHJqc2YvdmFsaWRhdG9yLWFqdjhcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3VzdG9taXplVmFsaWRhdG9yKG9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiBuZXcgQUpWNlZhbGlkYXRvcihvcHRpb25zKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWN1c3RvbWl6ZVZhbGlkYXRvci5qcy5tYXAiLCJpbXBvcnQgY3VzdG9taXplVmFsaWRhdG9yIGZyb20gJy4vY3VzdG9taXplVmFsaWRhdG9yJztcbmV4cG9ydCB7IGN1c3RvbWl6ZVZhbGlkYXRvciB9O1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG4vKiogQGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhlIGBAcmpzZi92YWxpZGF0b3ItYWp2OFxuICovXG5leHBvcnQgZGVmYXVsdCBjdXN0b21pemVWYWxpZGF0b3IoKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsInZhciBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpLFxuICAgIGJhc2VTZXQgPSByZXF1aXJlKCcuL19iYXNlU2V0JyksXG4gICAgY2FzdFBhdGggPSByZXF1aXJlKCcuL19jYXN0UGF0aCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mICBgXy5waWNrQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgcHJlZGljYXRlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcGF0aHMubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0ge307XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgcGF0aCA9IHBhdGhzW2luZGV4XSxcbiAgICAgICAgdmFsdWUgPSBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG5cbiAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBwYXRoKSkge1xuICAgICAgYmFzZVNldChyZXN1bHQsIGNhc3RQYXRoKHBhdGgsIG9iamVjdCksIHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUGlja0J5O1xuIiwidmFyIGJhc2VQaWNrQnkgPSByZXF1aXJlKCcuL19iYXNlUGlja0J5JyksXG4gICAgaGFzSW4gPSByZXF1aXJlKCcuL2hhc0luJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucGlja2Agd2l0aG91dCBzdXBwb3J0IGZvciBpbmRpdmlkdWFsXG4gKiBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gYmFzZVBpY2sob2JqZWN0LCBwYXRocykge1xuICByZXR1cm4gYmFzZVBpY2tCeShvYmplY3QsIHBhdGhzLCBmdW5jdGlvbih2YWx1ZSwgcGF0aCkge1xuICAgIHJldHVybiBoYXNJbihvYmplY3QsIHBhdGgpO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUGljaztcbiIsInZhciBiYXNlUGljayA9IHJlcXVpcmUoJy4vX2Jhc2VQaWNrJyksXG4gICAgZmxhdFJlc3QgPSByZXF1aXJlKCcuL19mbGF0UmVzdCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBwaWNrZWQgYG9iamVjdGAgcHJvcGVydGllcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICpcbiAqIF8ucGljayhvYmplY3QsIFsnYScsICdjJ10pO1xuICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gKi9cbnZhciBwaWNrID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBwYXRocykge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB7fSA6IGJhc2VQaWNrKG9iamVjdCwgcGF0aHMpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGljaztcbiIsIi8vIFRoaXMgZmlsZSByZXBsYWNlcyBgaW5kZXguanNgIGluIGJ1bmRsZXJzIGxpa2Ugd2VicGFjayBvciBSb2xsdXAsXG4vLyBhY2NvcmRpbmcgdG8gYGJyb3dzZXJgIGNvbmZpZyBpbiBgcGFja2FnZS5qc29uYC5cblxuaW1wb3J0IHsgdXJsQWxwaGFiZXQgfSBmcm9tICcuL3VybC1hbHBoYWJldC9pbmRleC5qcydcblxubGV0IHJhbmRvbSA9IGJ5dGVzID0+IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoYnl0ZXMpKVxuXG5sZXQgY3VzdG9tUmFuZG9tID0gKGFscGhhYmV0LCBkZWZhdWx0U2l6ZSwgZ2V0UmFuZG9tKSA9PiB7XG4gIC8vIEZpcnN0LCBhIGJpdG1hc2sgaXMgbmVjZXNzYXJ5IHRvIGdlbmVyYXRlIHRoZSBJRC4gVGhlIGJpdG1hc2sgbWFrZXMgYnl0ZXNcbiAgLy8gdmFsdWVzIGNsb3NlciB0byB0aGUgYWxwaGFiZXQgc2l6ZS4gVGhlIGJpdG1hc2sgY2FsY3VsYXRlcyB0aGUgY2xvc2VzdFxuICAvLyBgMl4zMSAtIDFgIG51bWJlciwgd2hpY2ggZXhjZWVkcyB0aGUgYWxwaGFiZXQgc2l6ZS5cbiAgLy8gRm9yIGV4YW1wbGUsIHRoZSBiaXRtYXNrIGZvciB0aGUgYWxwaGFiZXQgc2l6ZSAzMCBpcyAzMSAoMDAwMTExMTEpLlxuICAvLyBgTWF0aC5jbHozMmAgaXMgbm90IHVzZWQsIGJlY2F1c2UgaXQgaXMgbm90IGF2YWlsYWJsZSBpbiBicm93c2Vycy5cbiAgbGV0IG1hc2sgPSAoMiA8PCAoTWF0aC5sb2coYWxwaGFiZXQubGVuZ3RoIC0gMSkgLyBNYXRoLkxOMikpIC0gMVxuICAvLyBUaG91Z2gsIHRoZSBiaXRtYXNrIHNvbHV0aW9uIGlzIG5vdCBwZXJmZWN0IHNpbmNlIHRoZSBieXRlcyBleGNlZWRpbmdcbiAgLy8gdGhlIGFscGhhYmV0IHNpemUgYXJlIHJlZnVzZWQuIFRoZXJlZm9yZSwgdG8gcmVsaWFibHkgZ2VuZXJhdGUgdGhlIElELFxuICAvLyB0aGUgcmFuZG9tIGJ5dGVzIHJlZHVuZGFuY3kgaGFzIHRvIGJlIHNhdGlzZmllZC5cblxuICAvLyBOb3RlOiBldmVyeSBoYXJkd2FyZSByYW5kb20gZ2VuZXJhdG9yIGNhbGwgaXMgcGVyZm9ybWFuY2UgZXhwZW5zaXZlLFxuICAvLyBiZWNhdXNlIHRoZSBzeXN0ZW0gY2FsbCBmb3IgZW50cm9weSBjb2xsZWN0aW9uIHRha2VzIGEgbG90IG9mIHRpbWUuXG4gIC8vIFNvLCB0byBhdm9pZCBhZGRpdGlvbmFsIHN5c3RlbSBjYWxscywgZXh0cmEgYnl0ZXMgYXJlIHJlcXVlc3RlZCBpbiBhZHZhbmNlLlxuXG4gIC8vIE5leHQsIGEgc3RlcCBkZXRlcm1pbmVzIGhvdyBtYW55IHJhbmRvbSBieXRlcyB0byBnZW5lcmF0ZS5cbiAgLy8gVGhlIG51bWJlciBvZiByYW5kb20gYnl0ZXMgZ2V0cyBkZWNpZGVkIHVwb24gdGhlIElEIHNpemUsIG1hc2ssXG4gIC8vIGFscGhhYmV0IHNpemUsIGFuZCBtYWdpYyBudW1iZXIgMS42ICh1c2luZyAxLjYgcGVha3MgYXQgcGVyZm9ybWFuY2VcbiAgLy8gYWNjb3JkaW5nIHRvIGJlbmNobWFya3MpLlxuXG4gIC8vIGAtfmYgPT4gTWF0aC5jZWlsKGYpYCBpZiBmIGlzIGEgZmxvYXRcbiAgLy8gYC1+aSA9PiBpICsgMWAgaWYgaSBpcyBhbiBpbnRlZ2VyXG4gIGxldCBzdGVwID0gLX4oKDEuNiAqIG1hc2sgKiBkZWZhdWx0U2l6ZSkgLyBhbHBoYWJldC5sZW5ndGgpXG5cbiAgcmV0dXJuIChzaXplID0gZGVmYXVsdFNpemUpID0+IHtcbiAgICBsZXQgaWQgPSAnJ1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBsZXQgYnl0ZXMgPSBnZXRSYW5kb20oc3RlcClcbiAgICAgIC8vIEEgY29tcGFjdCBhbHRlcm5hdGl2ZSBmb3IgYGZvciAodmFyIGkgPSAwOyBpIDwgc3RlcDsgaSsrKWAuXG4gICAgICBsZXQgaiA9IHN0ZXAgfCAwXG4gICAgICB3aGlsZSAoai0tKSB7XG4gICAgICAgIC8vIEFkZGluZyBgfHwgJydgIHJlZnVzZXMgYSByYW5kb20gYnl0ZSB0aGF0IGV4Y2VlZHMgdGhlIGFscGhhYmV0IHNpemUuXG4gICAgICAgIGlkICs9IGFscGhhYmV0W2J5dGVzW2pdICYgbWFza10gfHwgJydcbiAgICAgICAgaWYgKGlkLmxlbmd0aCA9PT0gc2l6ZSkgcmV0dXJuIGlkXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmxldCBjdXN0b21BbHBoYWJldCA9IChhbHBoYWJldCwgc2l6ZSA9IDIxKSA9PlxuICBjdXN0b21SYW5kb20oYWxwaGFiZXQsIHNpemUsIHJhbmRvbSlcblxubGV0IG5hbm9pZCA9IChzaXplID0gMjEpID0+XG4gIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoc2l6ZSkpLnJlZHVjZSgoaWQsIGJ5dGUpID0+IHtcbiAgICAvLyBJdCBpcyBpbmNvcnJlY3QgdG8gdXNlIGJ5dGVzIGV4Y2VlZGluZyB0aGUgYWxwaGFiZXQgc2l6ZS5cbiAgICAvLyBUaGUgZm9sbG93aW5nIG1hc2sgcmVkdWNlcyB0aGUgcmFuZG9tIGJ5dGUgaW4gdGhlIDAtMjU1IHZhbHVlXG4gICAgLy8gcmFuZ2UgdG8gdGhlIDAtNjMgdmFsdWUgcmFuZ2UuIFRoZXJlZm9yZSwgYWRkaW5nIGhhY2tzLCBzdWNoXG4gICAgLy8gYXMgZW1wdHkgc3RyaW5nIGZhbGxiYWNrIG9yIG1hZ2ljIG51bWJlcnMsIGlzIHVubmVjY2Vzc2FyeSBiZWNhdXNlXG4gICAgLy8gdGhlIGJpdG1hc2sgdHJpbXMgYnl0ZXMgZG93biB0byB0aGUgYWxwaGFiZXQgc2l6ZS5cbiAgICBieXRlICY9IDYzXG4gICAgaWYgKGJ5dGUgPCAzNikge1xuICAgICAgLy8gYDAtOWEtemBcbiAgICAgIGlkICs9IGJ5dGUudG9TdHJpbmcoMzYpXG4gICAgfSBlbHNlIGlmIChieXRlIDwgNjIpIHtcbiAgICAgIC8vIGBBLVpgXG4gICAgICBpZCArPSAoYnl0ZSAtIDI2KS50b1N0cmluZygzNikudG9VcHBlckNhc2UoKVxuICAgIH0gZWxzZSBpZiAoYnl0ZSA+IDYyKSB7XG4gICAgICBpZCArPSAnLSdcbiAgICB9IGVsc2Uge1xuICAgICAgaWQgKz0gJ18nXG4gICAgfVxuICAgIHJldHVybiBpZFxuICB9LCAnJylcblxuZXhwb3J0IHsgbmFub2lkLCBjdXN0b21BbHBoYWJldCwgY3VzdG9tUmFuZG9tLCB1cmxBbHBoYWJldCwgcmFuZG9tIH1cbiIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSwgZ2V0V2lkZ2V0LCBnZXRVaU9wdGlvbnMsIGlzRml4ZWRJdGVtcywgYWxsb3dBZGRpdGlvbmFsSXRlbXMsIGlzQ3VzdG9tV2lkZ2V0LCBvcHRpb25zTGlzdCwgVHJhbnNsYXRhYmxlU3RyaW5nLCBJVEVNU19LRVksIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVEZWVwJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnbG9kYXNoL2lzT2JqZWN0JztcbmltcG9ydCBzZXQgZnJvbSAnbG9kYXNoL3NldCc7XG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tICduYW5vaWQnO1xuLyoqIFVzZWQgdG8gZ2VuZXJhdGUgYSB1bmlxdWUgSUQgZm9yIGFuIGVsZW1lbnQgaW4gYSByb3cgKi9cbmZ1bmN0aW9uIGdlbmVyYXRlUm93SWQoKSB7XG4gICAgcmV0dXJuIG5hbm9pZCgpO1xufVxuLyoqIENvbnZlcnRzIHRoZSBgZm9ybURhdGFgIGludG8gYEtleWVkRm9ybURhdGFUeXBlYCBkYXRhLCB1c2luZyB0aGUgYGdlbmVyYXRlUm93SWQoKWAgZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBrZXlcbiAqXG4gKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgZGF0YSBmb3IgdGhlIGZvcm1cbiAqIEByZXR1cm5zIC0gVGhlIGBmb3JtRGF0YWAgY29udmVydGVkIGludG8gYSBgS2V5ZWRGb3JtRGF0YVR5cGVgIGVsZW1lbnRcbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVLZXllZEZvcm1EYXRhKGZvcm1EYXRhKSB7XG4gICAgcmV0dXJuICFBcnJheS5pc0FycmF5KGZvcm1EYXRhKVxuICAgICAgICA/IFtdXG4gICAgICAgIDogZm9ybURhdGEubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGtleTogZ2VuZXJhdGVSb3dJZCgpLFxuICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbn1cbi8qKiBDb252ZXJ0cyBgS2V5ZWRGb3JtRGF0YVR5cGVgIGRhdGEgaW50byB0aGUgaW5uZXIgYGZvcm1EYXRhYFxuICpcbiAqIEBwYXJhbSBrZXllZEZvcm1EYXRhIC0gVGhlIGBLZXllZEZvcm1EYXRhVHlwZWAgdG8gYmUgY29udmVydGVkXG4gKiBAcmV0dXJucyAtIFRoZSBpbm5lciBgZm9ybURhdGFgIGl0ZW0ocykgaW4gdGhlIGBrZXllZEZvcm1EYXRhYFxuICovXG5mdW5jdGlvbiBrZXllZFRvUGxhaW5Gb3JtRGF0YShrZXllZEZvcm1EYXRhKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5ZWRGb3JtRGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIGtleWVkRm9ybURhdGEubWFwKChrZXllZEl0ZW0pID0+IGtleWVkSXRlbS5pdGVtKTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xufVxuLyoqIFRoZSBgQXJyYXlGaWVsZGAgY29tcG9uZW50IGlzIHVzZWQgdG8gcmVuZGVyIGEgZmllbGQgaW4gdGhlIHNjaGVtYSB0aGF0IGlzIG9mIHR5cGUgYGFycmF5YC4gSXQgc3VwcG9ydHMgYm90aCBub3JtYWxcbiAqIGFuZCBmaXhlZCBhcnJheSwgYWxsb3dpbmcgdXNlciB0byBhZGQgYW5kIHJlbW92ZSBlbGVtZW50cyBmcm9tIHRoZSBhcnJheSBkYXRhLlxuICovXG5jbGFzcyBBcnJheUZpZWxkIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICAvKiogQ29uc3RydWN0cyBhbiBgQXJyYXlGaWVsZGAgZnJvbSB0aGUgYHByb3BzYCwgZ2VuZXJhdGluZyB0aGUgaW5pdGlhbCBrZXllZCBkYXRhIGZyb20gdGhlIGBmb3JtRGF0YWBcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgRmllbGRQcm9wc2AgZm9yIHRoaXMgdGVtcGxhdGVcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG4gICAgICAgIC8qKiBSZXR1cm5zIHRoZSBkZWZhdWx0IGZvcm0gaW5mb3JtYXRpb24gZm9yIGFuIGl0ZW0gYmFzZWQgb24gdGhlIHNjaGVtYSBmb3IgdGhhdCBpdGVtLiBEZWFscyB3aXRoIHRoZSBwb3NzaWJpbGl0eVxuICAgICAgICAgKiB0aGF0IHRoZSBzY2hlbWEgaXMgZml4ZWQgYW5kIGFsbG93cyBhZGRpdGlvbmFsIGl0ZW1zLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fZ2V0TmV3Rm9ybURhdGFSb3cgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHNjaGVtYSwgcmVnaXN0cnkgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICBjb25zdCB7IHNjaGVtYVV0aWxzIH0gPSByZWdpc3RyeTtcbiAgICAgICAgICAgIGxldCBpdGVtU2NoZW1hID0gc2NoZW1hLml0ZW1zO1xuICAgICAgICAgICAgaWYgKGlzRml4ZWRJdGVtcyhzY2hlbWEpICYmIGFsbG93QWRkaXRpb25hbEl0ZW1zKHNjaGVtYSkpIHtcbiAgICAgICAgICAgICAgICBpdGVtU2NoZW1hID0gc2NoZW1hLmFkZGl0aW9uYWxJdGVtcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIENhc3QgdGhpcyBhcyBhIFQgdG8gd29yayBhcm91bmQgc2NoZW1hIHV0aWxzIGJlaW5nIGZvciBUW10gY2F1c2VkIGJ5IHRoZSBGaWVsZFByb3BzPFRbXSwgUywgRj4gY2FsbCBvbiB0aGUgY2xhc3NcbiAgICAgICAgICAgIHJldHVybiBzY2hlbWFVdGlscy5nZXREZWZhdWx0Rm9ybVN0YXRlKGl0ZW1TY2hlbWEpO1xuICAgICAgICB9O1xuICAgICAgICAvKiogQ2FsbGJhY2sgaGFuZGxlciBmb3Igd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIGFkZCBidXR0b24uIENyZWF0ZXMgYSBuZXcgcm93IG9mIGtleWVkIGZvcm0gZGF0YSBhdCB0aGUgZW5kIG9mXG4gICAgICAgICAqIHRoZSBsaXN0LCBhZGRpbmcgaXQgaW50byB0aGUgc3RhdGUsIGFuZCB0aGVuIHJldHVybmluZyBgb25DaGFuZ2UoKWAgd2l0aCB0aGUgcGxhaW4gZm9ybSBkYXRhIGNvbnZlcnRlZCBmcm9tIHRoZVxuICAgICAgICAgKiBrZXllZCBkYXRhXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBldmVudCBmb3IgdGhlIGNsaWNrXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uQWRkQ2xpY2sgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZUFkZENsaWNrKGV2ZW50KTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIENhbGxiYWNrIGhhbmRsZXIgZm9yIHdoZW4gdGhlIHVzZXIgY2xpY2tzIG9uIHRoZSBhZGQgYnV0dG9uIG9uIGFuIGV4aXN0aW5nIGFycmF5IGVsZW1lbnQuIENyZWF0ZXMgYSBuZXcgcm93IG9mXG4gICAgICAgICAqIGtleWVkIGZvcm0gZGF0YSBpbnNlcnRlZCBhdCB0aGUgYGluZGV4YCwgYWRkaW5nIGl0IGludG8gdGhlIHN0YXRlLCBhbmQgdGhlbiByZXR1cm5pbmcgYG9uQ2hhbmdlKClgIHdpdGggdGhlIHBsYWluXG4gICAgICAgICAqIGZvcm0gZGF0YSBjb252ZXJ0ZWQgZnJvbSB0aGUga2V5ZWQgZGF0YVxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gaW5kZXggLSBUaGUgaW5kZXggYXQgd2hpY2ggdGhlIGFkZCBidXR0b24gaXMgY2xpY2tlZFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vbkFkZEluZGV4Q2xpY2sgPSAoaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVBZGRDbGljayhldmVudCwgaW5kZXgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIENhbGxiYWNrIGhhbmRsZXIgZm9yIHdoZW4gdGhlIHVzZXIgY2xpY2tzIG9uIHRoZSBjb3B5IGJ1dHRvbiBvbiBhbiBleGlzdGluZyBhcnJheSBlbGVtZW50LiBDbG9uZXMgdGhlIHJvdyBvZlxuICAgICAgICAgKiBrZXllZCBmb3JtIGRhdGEgYXQgdGhlIGBpbmRleGAgaW50byB0aGUgbmV4dCBwb3NpdGlvbiBpbiB0aGUgc3RhdGUsIGFuZCB0aGVuIHJldHVybmluZyBgb25DaGFuZ2UoKWAgd2l0aCB0aGUgcGxhaW5cbiAgICAgICAgICogZm9ybSBkYXRhIGNvbnZlcnRlZCBmcm9tIHRoZSBrZXllZCBkYXRhXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbmRleCBhdCB3aGljaCB0aGUgY29weSBidXR0b24gaXMgY2xpY2tlZFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vbkNvcHlJbmRleENsaWNrID0gKGluZGV4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHsgb25DaGFuZ2UsIGVycm9yU2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsga2V5ZWRGb3JtRGF0YSB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgICAgICAgICAvLyByZWZzICMxOTU6IHJldmFsaWRhdGUgdG8gZW5zdXJlIHByb3Blcmx5IHJlaW5kZXhpbmcgZXJyb3JzXG4gICAgICAgICAgICAgICAgbGV0IG5ld0Vycm9yU2NoZW1hO1xuICAgICAgICAgICAgICAgIGlmIChlcnJvclNjaGVtYSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdFcnJvclNjaGVtYSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGlkeCBpbiBlcnJvclNjaGVtYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHBhcnNlSW50KGlkeCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA8PSBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChuZXdFcnJvclNjaGVtYSwgW2ldLCBlcnJvclNjaGVtYVtpZHhdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGkgPiBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChuZXdFcnJvclNjaGVtYSwgW2kgKyAxXSwgZXJyb3JTY2hlbWFbaWR4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3S2V5ZWRGb3JtRGF0YVJvdyA9IHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBnZW5lcmF0ZVJvd0lkKCksXG4gICAgICAgICAgICAgICAgICAgIGl0ZW06IGNsb25lRGVlcChrZXllZEZvcm1EYXRhW2luZGV4XS5pdGVtKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0tleWVkRm9ybURhdGEgPSBbLi4ua2V5ZWRGb3JtRGF0YV07XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3S2V5ZWRGb3JtRGF0YS5zcGxpY2UoaW5kZXggKyAxLCAwLCBuZXdLZXllZEZvcm1EYXRhUm93KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0tleWVkRm9ybURhdGEucHVzaChuZXdLZXllZEZvcm1EYXRhUm93KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIGtleWVkRm9ybURhdGE6IG5ld0tleWVkRm9ybURhdGEsXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRLZXllZEZvcm1EYXRhOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sICgpID0+IG9uQ2hhbmdlKGtleWVkVG9QbGFpbkZvcm1EYXRhKG5ld0tleWVkRm9ybURhdGEpLCBuZXdFcnJvclNjaGVtYSkpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIENhbGxiYWNrIGhhbmRsZXIgZm9yIHdoZW4gdGhlIHVzZXIgY2xpY2tzIG9uIHRoZSByZW1vdmUgYnV0dG9uIG9uIGFuIGV4aXN0aW5nIGFycmF5IGVsZW1lbnQuIFJlbW92ZXMgdGhlIHJvdyBvZlxuICAgICAgICAgKiBrZXllZCBmb3JtIGRhdGEgYXQgdGhlIGBpbmRleGAgaW4gdGhlIHN0YXRlLCBhbmQgdGhlbiByZXR1cm5pbmcgYG9uQ2hhbmdlKClgIHdpdGggdGhlIHBsYWluIGZvcm0gZGF0YSBjb252ZXJ0ZWRcbiAgICAgICAgICogZnJvbSB0aGUga2V5ZWQgZGF0YVxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gaW5kZXggLSBUaGUgaW5kZXggYXQgd2hpY2ggdGhlIHJlbW92ZSBidXR0b24gaXMgY2xpY2tlZFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vbkRyb3BJbmRleENsaWNrID0gKGluZGV4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHsgb25DaGFuZ2UsIGVycm9yU2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsga2V5ZWRGb3JtRGF0YSB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgICAgICAgICAvLyByZWZzICMxOTU6IHJldmFsaWRhdGUgdG8gZW5zdXJlIHByb3Blcmx5IHJlaW5kZXhpbmcgZXJyb3JzXG4gICAgICAgICAgICAgICAgbGV0IG5ld0Vycm9yU2NoZW1hO1xuICAgICAgICAgICAgICAgIGlmIChlcnJvclNjaGVtYSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdFcnJvclNjaGVtYSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGlkeCBpbiBlcnJvclNjaGVtYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHBhcnNlSW50KGlkeCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA8IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG5ld0Vycm9yU2NoZW1hLCBbaV0sIGVycm9yU2NoZW1hW2lkeF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaSA+IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG5ld0Vycm9yU2NoZW1hLCBbaSAtIDFdLCBlcnJvclNjaGVtYVtpZHhdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdLZXllZEZvcm1EYXRhID0ga2V5ZWRGb3JtRGF0YS5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAga2V5ZWRGb3JtRGF0YTogbmV3S2V5ZWRGb3JtRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlZEtleWVkRm9ybURhdGE6IHRydWUsXG4gICAgICAgICAgICAgICAgfSwgKCkgPT4gb25DaGFuZ2Uoa2V5ZWRUb1BsYWluRm9ybURhdGEobmV3S2V5ZWRGb3JtRGF0YSksIG5ld0Vycm9yU2NoZW1hKSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICAvKiogQ2FsbGJhY2sgaGFuZGxlciBmb3Igd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gb25lIG9mIHRoZSBtb3ZlIGl0ZW0gYnV0dG9ucyBvbiBhbiBleGlzdGluZyBhcnJheSBlbGVtZW50LiBNb3ZlcyB0aGVcbiAgICAgICAgICogcm93IG9mIGtleWVkIGZvcm0gZGF0YSBhdCB0aGUgYGluZGV4YCB0byB0aGUgYG5ld0luZGV4YCBpbiB0aGUgc3RhdGUsIGFuZCB0aGVuIHJldHVybmluZyBgb25DaGFuZ2UoKWAgd2l0aCB0aGVcbiAgICAgICAgICogcGxhaW4gZm9ybSBkYXRhIGNvbnZlcnRlZCBmcm9tIHRoZSBrZXllZCBkYXRhXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgaXRlbSB0byBtb3ZlXG4gICAgICAgICAqIEBwYXJhbSBuZXdJbmRleCAtIFRoZSBpbmRleCB0byB3aGVyZSB0aGUgaXRlbSBpcyB0byBiZSBtb3ZlZFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vblJlb3JkZXJDbGljayA9IChpbmRleCwgbmV3SW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5ibHVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHsgb25DaGFuZ2UsIGVycm9yU2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgICAgIGxldCBuZXdFcnJvclNjaGVtYTtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3RXJyb3JTY2hlbWEgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBpZHggaW4gZXJyb3JTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBwYXJzZUludChpZHgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQobmV3RXJyb3JTY2hlbWEsIFtuZXdJbmRleF0sIGVycm9yU2NoZW1hW2luZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpID09IG5ld0luZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG5ld0Vycm9yU2NoZW1hLCBbaW5kZXhdLCBlcnJvclNjaGVtYVtuZXdJbmRleF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG5ld0Vycm9yU2NoZW1hLCBbaWR4XSwgZXJyb3JTY2hlbWFbaV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHsga2V5ZWRGb3JtRGF0YSB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiByZU9yZGVyQXJyYXkoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENvcHkgaXRlbVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBfbmV3S2V5ZWRGb3JtRGF0YSA9IGtleWVkRm9ybURhdGEuc2xpY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gTW92ZXMgaXRlbSBmcm9tIGluZGV4IHRvIG5ld0luZGV4XG4gICAgICAgICAgICAgICAgICAgIF9uZXdLZXllZEZvcm1EYXRhLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgICAgIF9uZXdLZXllZEZvcm1EYXRhLnNwbGljZShuZXdJbmRleCwgMCwga2V5ZWRGb3JtRGF0YVtpbmRleF0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX25ld0tleWVkRm9ybURhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0tleWVkRm9ybURhdGEgPSByZU9yZGVyQXJyYXkoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAga2V5ZWRGb3JtRGF0YTogbmV3S2V5ZWRGb3JtRGF0YSxcbiAgICAgICAgICAgICAgICB9LCAoKSA9PiBvbkNoYW5nZShrZXllZFRvUGxhaW5Gb3JtRGF0YShuZXdLZXllZEZvcm1EYXRhKSwgbmV3RXJyb3JTY2hlbWEpKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBDYWxsYmFjayBoYW5kbGVyIHVzZWQgdG8gZGVhbCB3aXRoIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiB0aGUgZGF0YSBpbiB0aGUgYXJyYXkgYXQgdGhlIGBpbmRleGAuIENhbGxzIHRoZVxuICAgICAgICAgKiBgb25DaGFuZ2VgIGNhbGxiYWNrIHdpdGggdGhlIHVwZGF0ZWQgZm9ybSBkYXRhXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgaXRlbSBiZWluZyBjaGFuZ2VkXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uQ2hhbmdlRm9ySW5kZXggPSAoaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAodmFsdWUsIG5ld0Vycm9yU2NoZW1hLCBpZCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZm9ybURhdGEsIG9uQ2hhbmdlLCBlcnJvclNjaGVtYSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgICAgICBjb25zdCBhcnJheURhdGEgPSBBcnJheS5pc0FycmF5KGZvcm1EYXRhKSA/IGZvcm1EYXRhIDogW107XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3Rm9ybURhdGEgPSBhcnJheURhdGEubWFwKChpdGVtLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gdHJlYXQgdW5kZWZpbmVkIGl0ZW1zIGFzIG51bGxzIHRvIGhhdmUgdmFsaWRhdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90ZGVncnVudC9qc29uc2NoZW1hL2lzc3Vlcy8yMDZcbiAgICAgICAgICAgICAgICAgICAgY29uc3QganNvblZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4ID09PSBpID8ganNvblZhbHVlIDogaXRlbTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBvbkNoYW5nZShuZXdGb3JtRGF0YSwgZXJyb3JTY2hlbWEgJiZcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JTY2hlbWEgJiYge1xuICAgICAgICAgICAgICAgICAgICAuLi5lcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgW2luZGV4XTogbmV3RXJyb3JTY2hlbWEsXG4gICAgICAgICAgICAgICAgfSwgaWQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIENhbGxiYWNrIGhhbmRsZXIgdXNlZCB0byBjaGFuZ2UgdGhlIHZhbHVlIGZvciBhIGNoZWNrYm94ICovXG4gICAgICAgIHRoaXMub25TZWxlY3RDaGFuZ2UgPSAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgb25DaGFuZ2UsIGlkU2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUsIHVuZGVmaW5lZCwgaWRTY2hlbWEgJiYgaWRTY2hlbWEuJGlkKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgeyBmb3JtRGF0YSA9IFtdIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3Qga2V5ZWRGb3JtRGF0YSA9IGdlbmVyYXRlS2V5ZWRGb3JtRGF0YShmb3JtRGF0YSk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBrZXllZEZvcm1EYXRhLFxuICAgICAgICAgICAgdXBkYXRlZEtleWVkRm9ybURhdGE6IGZhbHNlLFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKiogUmVhY3QgbGlmZWN5Y2xlIG1ldGhvZCB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBwcm9wcyBhcmUgYWJvdXQgdG8gY2hhbmdlIGFsbG93aW5nIHRoZSBzdGF0ZSB0byBiZSB1cGRhdGVkLiBJdFxuICAgICAqIHJlZ2VuZXJhdGVzIHRoZSBrZXllZCBmb3JtIGRhdGEgYW5kIHJldHVybnMgaXRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZXh0UHJvcHMgLSBUaGUgbmV4dCBzZXQgb2YgcHJvcHMgZGF0YVxuICAgICAqIEBwYXJhbSBwcmV2U3RhdGUgLSBUaGUgcHJldmlvdXMgc2V0IG9mIHN0YXRlIGRhdGFcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKG5leHRQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgICAgIC8vIERvbid0IGNhbGwgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIGlmIGtleWVkIGZvcm1kYXRhIHdhcyBqdXN0IHVwZGF0ZWQuXG4gICAgICAgIGlmIChwcmV2U3RhdGUudXBkYXRlZEtleWVkRm9ybURhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdXBkYXRlZEtleWVkRm9ybURhdGE6IGZhbHNlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXh0Rm9ybURhdGEgPSBBcnJheS5pc0FycmF5KG5leHRQcm9wcy5mb3JtRGF0YSkgPyBuZXh0UHJvcHMuZm9ybURhdGEgOiBbXTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNLZXllZEZvcm1EYXRhID0gcHJldlN0YXRlLmtleWVkRm9ybURhdGEgfHwgW107XG4gICAgICAgIGNvbnN0IG5ld0tleWVkRm9ybURhdGEgPSBuZXh0Rm9ybURhdGEubGVuZ3RoID09PSBwcmV2aW91c0tleWVkRm9ybURhdGEubGVuZ3RoXG4gICAgICAgICAgICA/IHByZXZpb3VzS2V5ZWRGb3JtRGF0YS5tYXAoKHByZXZpb3VzS2V5ZWRGb3JtRGF0dW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBwcmV2aW91c0tleWVkRm9ybURhdHVtLmtleSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbTogbmV4dEZvcm1EYXRhW2luZGV4XSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogZ2VuZXJhdGVLZXllZEZvcm1EYXRhKG5leHRGb3JtRGF0YSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBrZXllZEZvcm1EYXRhOiBuZXdLZXllZEZvcm1EYXRhLFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKiogUmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgdGl0bGUgZm9yIGFuIGl0ZW0gYnkgZ2V0dGluZyBmaXJzdCB0aGUgdGl0bGUgZnJvbSB0aGUgc2NoZW1hLml0ZW1zLCB0aGVuIGZhbGxpbmcgYmFjayB0b1xuICAgICAqIHRoZSBkZXNjcmlwdGlvbiBmcm9tIHRoZSBzY2hlbWEuaXRlbXMsIGFuZCBmaW5hbGx5IHRoZSBzdHJpbmcgXCJJdGVtXCJcbiAgICAgKi9cbiAgICBnZXQgaXRlbVRpdGxlKCkge1xuICAgICAgICBjb25zdCB7IHNjaGVtYSwgcmVnaXN0cnkgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHsgdHJhbnNsYXRlU3RyaW5nIH0gPSByZWdpc3RyeTtcbiAgICAgICAgcmV0dXJuIGdldChzY2hlbWEsIFtJVEVNU19LRVksICd0aXRsZSddLCBnZXQoc2NoZW1hLCBbSVRFTVNfS0VZLCAnZGVzY3JpcHRpb24nXSwgdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5BcnJheUl0ZW1UaXRsZSkpKTtcbiAgICB9XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0aGUgaXRlbSBkZXNjcmliZWQgaW4gdGhlIHNjaGVtYSBpcyBhbHdheXMgcmVxdWlyZWQsIHdoaWNoIGlzIGRldGVybWluZWQgYnkgd2hldGhlciBhbnkgaXRlbVxuICAgICAqIG1heSBiZSBudWxsLlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW1TY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB0aGUgaXRlbVxuICAgICAqIEByZXR1cm4gLSBUcnVlIGlmIHRoZSBpdGVtIHNjaGVtYSB0eXBlIGRvZXMgbm90IGNvbnRhaW4gdGhlIFwibnVsbFwiIHR5cGVcbiAgICAgKi9cbiAgICBpc0l0ZW1SZXF1aXJlZChpdGVtU2NoZW1hKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1TY2hlbWEudHlwZSkpIHtcbiAgICAgICAgICAgIC8vIFdoaWxlIHdlIGRvbid0IHlldCBzdXBwb3J0IGNvbXBvc2l0ZS9udWxsYWJsZSBqc29uc2NoZW1hIHR5cGVzLCBpdCdzXG4gICAgICAgICAgICAvLyBmdXR1cmUtcHJvb2YgdG8gY2hlY2sgZm9yIHJlcXVpcmVtZW50IGFnYWluc3QgdGhlc2UuXG4gICAgICAgICAgICByZXR1cm4gIWl0ZW1TY2hlbWEudHlwZS5pbmNsdWRlcygnbnVsbCcpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFsbCBub24tbnVsbCBhcnJheSBpdGVtIHR5cGVzIGFyZSBpbmhlcmVudGx5IHJlcXVpcmVkIGJ5IGRlc2lnblxuICAgICAgICByZXR1cm4gaXRlbVNjaGVtYS50eXBlICE9PSAnbnVsbCc7XG4gICAgfVxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgbW9yZSBpdGVtcyBjYW4gYmUgYWRkZWQgdG8gdGhlIGFycmF5LiBJZiB0aGUgdWlTY2hlbWEgaW5kaWNhdGVzIHRoZSBhcnJheSBkb2Vzbid0IGFsbG93IGFkZGluZ1xuICAgICAqIHRoZW4gZmFsc2UgaXMgcmV0dXJuZWQuIE90aGVyd2lzZSwgaWYgdGhlIHNjaGVtYSBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBhcmUgYSBtYXhpbXVtIG51bWJlciBvZiBpdGVtcyBhbmQgdGhlXG4gICAgICogYGZvcm1EYXRhYCBtYXRjaGVzIHRoYXQgdmFsdWUsIHRoZW4gZmFsc2UgaXMgcmV0dXJuZWQsIG90aGVyd2lzZSB0cnVlIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZvcm1JdGVtcyAtIFRoZSBsaXN0IG9mIGl0ZW1zIGluIHRoZSBmb3JtXG4gICAgICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBpdGVtIGlzIGFkZGFibGUgb3RoZXJ3aXNlIGZhbHNlXG4gICAgICovXG4gICAgY2FuQWRkSXRlbShmb3JtSXRlbXMpIHtcbiAgICAgICAgY29uc3QgeyBzY2hlbWEsIHVpU2NoZW1hLCByZWdpc3RyeSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgbGV0IHsgYWRkYWJsZSB9ID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCByZWdpc3RyeS5nbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICBpZiAoYWRkYWJsZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIC8vIGlmIHVpOm9wdGlvbnMuYWRkYWJsZSB3YXMgbm90IGV4cGxpY2l0bHkgc2V0IHRvIGZhbHNlLCB3ZSBjYW4gYWRkXG4gICAgICAgICAgICAvLyBhbm90aGVyIGl0ZW0gaWYgd2UgaGF2ZSBub3QgZXhjZWVkZWQgbWF4SXRlbXMgeWV0XG4gICAgICAgICAgICBpZiAoc2NoZW1hLm1heEl0ZW1zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBhZGRhYmxlID0gZm9ybUl0ZW1zLmxlbmd0aCA8IHNjaGVtYS5tYXhJdGVtcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGFkZGFibGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhZGRhYmxlO1xuICAgIH1cbiAgICAvKiogQ2FsbGJhY2sgaGFuZGxlciBmb3Igd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIGFkZCBvciBhZGQgYXQgaW5kZXggYnV0dG9ucy4gQ3JlYXRlcyBhIG5ldyByb3cgb2Yga2V5ZWQgZm9ybSBkYXRhXG4gICAgICogZWl0aGVyIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QgKHdoZW4gaW5kZXggaXMgbm90IHNwZWNpZmllZCkgb3IgaW5zZXJ0ZWQgYXQgdGhlIGBpbmRleGAgd2hlbiBpdCBpcywgYWRkaW5nIGl0IGludG9cbiAgICAgKiB0aGUgc3RhdGUsIGFuZCB0aGVuIHJldHVybmluZyBgb25DaGFuZ2UoKWAgd2l0aCB0aGUgcGxhaW4gZm9ybSBkYXRhIGNvbnZlcnRlZCBmcm9tIHRoZSBrZXllZCBkYXRhXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgZXZlbnQgZm9yIHRoZSBjbGlja1xuICAgICAqIEBwYXJhbSBbaW5kZXhdIC0gVGhlIG9wdGlvbmFsIGluZGV4IGF0IHdoaWNoIHRvIGFkZCB0aGUgbmV3IGRhdGFcbiAgICAgKi9cbiAgICBfaGFuZGxlQWRkQ2xpY2soZXZlbnQsIGluZGV4KSB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IG9uQ2hhbmdlLCBlcnJvclNjaGVtYSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyBrZXllZEZvcm1EYXRhIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICAvLyByZWZzICMxOTU6IHJldmFsaWRhdGUgdG8gZW5zdXJlIHByb3Blcmx5IHJlaW5kZXhpbmcgZXJyb3JzXG4gICAgICAgIGxldCBuZXdFcnJvclNjaGVtYTtcbiAgICAgICAgaWYgKGVycm9yU2NoZW1hKSB7XG4gICAgICAgICAgICBuZXdFcnJvclNjaGVtYSA9IHt9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBpZHggaW4gZXJyb3JTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpID0gcGFyc2VJbnQoaWR4KTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCB8fCBpIDwgaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0KG5ld0Vycm9yU2NoZW1hLCBbaV0sIGVycm9yU2NoZW1hW2lkeF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpID49IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHNldChuZXdFcnJvclNjaGVtYSwgW2kgKyAxXSwgZXJyb3JTY2hlbWFbaWR4XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0tleWVkRm9ybURhdGFSb3cgPSB7XG4gICAgICAgICAgICBrZXk6IGdlbmVyYXRlUm93SWQoKSxcbiAgICAgICAgICAgIGl0ZW06IHRoaXMuX2dldE5ld0Zvcm1EYXRhUm93KCksXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG5ld0tleWVkRm9ybURhdGEgPSBbLi4ua2V5ZWRGb3JtRGF0YV07XG4gICAgICAgIGlmIChpbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBuZXdLZXllZEZvcm1EYXRhLnNwbGljZShpbmRleCwgMCwgbmV3S2V5ZWRGb3JtRGF0YVJvdyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBuZXdLZXllZEZvcm1EYXRhLnB1c2gobmV3S2V5ZWRGb3JtRGF0YVJvdyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBrZXllZEZvcm1EYXRhOiBuZXdLZXllZEZvcm1EYXRhLFxuICAgICAgICAgICAgdXBkYXRlZEtleWVkRm9ybURhdGE6IHRydWUsXG4gICAgICAgIH0sICgpID0+IG9uQ2hhbmdlKGtleWVkVG9QbGFpbkZvcm1EYXRhKG5ld0tleWVkRm9ybURhdGEpLCBuZXdFcnJvclNjaGVtYSkpO1xuICAgIH1cbiAgICAvKiogUmVuZGVycyB0aGUgYEFycmF5RmllbGRgIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWMgbmVlZHMgb2YgdGhlIHNjaGVtYSBhbmQgdWlzY2hlbWEgZWxlbWVudHNcbiAgICAgKi9cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hLCB1aVNjaGVtYSwgaWRTY2hlbWEsIHJlZ2lzdHJ5IH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IHNjaGVtYVV0aWxzLCB0cmFuc2xhdGVTdHJpbmcgfSA9IHJlZ2lzdHJ5O1xuICAgICAgICBpZiAoIShJVEVNU19LRVkgaW4gc2NoZW1hKSkge1xuICAgICAgICAgICAgY29uc3QgdWlPcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hKTtcbiAgICAgICAgICAgIGNvbnN0IFVuc3VwcG9ydGVkRmllbGRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdVbnN1cHBvcnRlZEZpZWxkVGVtcGxhdGUnLCByZWdpc3RyeSwgdWlPcHRpb25zKTtcbiAgICAgICAgICAgIHJldHVybiAoX2pzeChVbnN1cHBvcnRlZEZpZWxkVGVtcGxhdGUsIHsgc2NoZW1hOiBzY2hlbWEsIGlkU2NoZW1hOiBpZFNjaGVtYSwgcmVhc29uOiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLk1pc3NpbmdJdGVtcyksIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNjaGVtYVV0aWxzLmlzTXVsdGlTZWxlY3Qoc2NoZW1hKSkge1xuICAgICAgICAgICAgLy8gSWYgYXJyYXkgaGFzIGVudW0gb3IgdW5pcXVlSXRlbXMgc2V0IHRvIHRydWUsIGNhbGwgcmVuZGVyTXVsdGlTZWxlY3QoKSB0byByZW5kZXIgdGhlIGRlZmF1bHQgbXVsdGlzZWxlY3Qgd2lkZ2V0IG9yIGEgY3VzdG9tIHdpZGdldCwgaWYgc3BlY2lmaWVkLlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyTXVsdGlTZWxlY3QoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNDdXN0b21XaWRnZXQodWlTY2hlbWEpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJDdXN0b21XaWRnZXQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNGaXhlZEl0ZW1zKHNjaGVtYSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlckZpeGVkQXJyYXkoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2NoZW1hVXRpbHMuaXNGaWxlc0FycmF5KHNjaGVtYSwgdWlTY2hlbWEpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJGaWxlcygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlbmRlck5vcm1hbEFycmF5KCk7XG4gICAgfVxuICAgIC8qKiBSZW5kZXJzIGEgbm9ybWFsIGFycmF5IHdpdGhvdXQgYW55IGxpbWl0YXRpb25zIG9mIGxlbmd0aFxuICAgICAqL1xuICAgIHJlbmRlck5vcm1hbEFycmF5KCkge1xuICAgICAgICBjb25zdCB7IHNjaGVtYSwgdWlTY2hlbWEgPSB7fSwgZXJyb3JTY2hlbWEsIGlkU2NoZW1hLCBuYW1lLCB0aXRsZSwgZGlzYWJsZWQgPSBmYWxzZSwgcmVhZG9ubHkgPSBmYWxzZSwgYXV0b2ZvY3VzID0gZmFsc2UsIHJlcXVpcmVkID0gZmFsc2UsIHJlZ2lzdHJ5LCBvbkJsdXIsIG9uRm9jdXMsIGlkUHJlZml4LCBpZFNlcGFyYXRvciA9ICdfJywgcmF3RXJyb3JzLCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyBrZXllZEZvcm1EYXRhIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBjb25zdCBmaWVsZFRpdGxlID0gc2NoZW1hLnRpdGxlIHx8IHRpdGxlIHx8IG5hbWU7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hVXRpbHMsIGZvcm1Db250ZXh0IH0gPSByZWdpc3RyeTtcbiAgICAgICAgY29uc3QgdWlPcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hKTtcbiAgICAgICAgY29uc3QgX3NjaGVtYUl0ZW1zID0gaXNPYmplY3Qoc2NoZW1hLml0ZW1zKSA/IHNjaGVtYS5pdGVtcyA6IHt9O1xuICAgICAgICBjb25zdCBpdGVtc1NjaGVtYSA9IHNjaGVtYVV0aWxzLnJldHJpZXZlU2NoZW1hKF9zY2hlbWFJdGVtcyk7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0ga2V5ZWRUb1BsYWluRm9ybURhdGEodGhpcy5zdGF0ZS5rZXllZEZvcm1EYXRhKTtcbiAgICAgICAgY29uc3QgY2FuQWRkID0gdGhpcy5jYW5BZGRJdGVtKGZvcm1EYXRhKTtcbiAgICAgICAgY29uc3QgYXJyYXlQcm9wcyA9IHtcbiAgICAgICAgICAgIGNhbkFkZCxcbiAgICAgICAgICAgIGl0ZW1zOiBrZXllZEZvcm1EYXRhLm1hcCgoa2V5ZWRJdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsga2V5LCBpdGVtIH0gPSBrZXllZEl0ZW07XG4gICAgICAgICAgICAgICAgLy8gV2hpbGUgd2UgYXJlIGFjdHVhbGx5IGRlYWxpbmcgd2l0aCBhIHNpbmdsZSBpdGVtIG9mIHR5cGUgVCwgdGhlIHR5cGVzIHJlcXVpcmUgYSBUW10sIHNvIGNhc3RcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtQ2FzdCA9IGl0ZW07XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbVNjaGVtYSA9IHNjaGVtYVV0aWxzLnJldHJpZXZlU2NoZW1hKF9zY2hlbWFJdGVtcywgaXRlbUNhc3QpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1FcnJvclNjaGVtYSA9IGVycm9yU2NoZW1hID8gZXJyb3JTY2hlbWFbaW5kZXhdIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1JZFByZWZpeCA9IGlkU2NoZW1hLiRpZCArIGlkU2VwYXJhdG9yICsgaW5kZXg7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUlkU2NoZW1hID0gc2NoZW1hVXRpbHMudG9JZFNjaGVtYShpdGVtU2NoZW1hLCBpdGVtSWRQcmVmaXgsIGl0ZW1DYXN0LCBpZFByZWZpeCwgaWRTZXBhcmF0b3IpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlckFycmF5RmllbGRJdGVtKHtcbiAgICAgICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZSAmJiBgJHtuYW1lfS0ke2luZGV4fWAsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBmaWVsZFRpdGxlID8gYCR7ZmllbGRUaXRsZX0tJHtpbmRleCArIDF9YCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgY2FuQWRkLFxuICAgICAgICAgICAgICAgICAgICBjYW5Nb3ZlVXA6IGluZGV4ID4gMCxcbiAgICAgICAgICAgICAgICAgICAgY2FuTW92ZURvd246IGluZGV4IDwgZm9ybURhdGEubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbVNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbUlkU2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBpdGVtRXJyb3JTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1EYXRhOiBpdGVtQ2FzdCxcbiAgICAgICAgICAgICAgICAgICAgaXRlbVVpU2NoZW1hOiB1aVNjaGVtYS5pdGVtcyxcbiAgICAgICAgICAgICAgICAgICAgYXV0b2ZvY3VzOiBhdXRvZm9jdXMgJiYgaW5kZXggPT09IDAsXG4gICAgICAgICAgICAgICAgICAgIG9uQmx1cixcbiAgICAgICAgICAgICAgICAgICAgb25Gb2N1cyxcbiAgICAgICAgICAgICAgICAgICAgcmF3RXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICB0b3RhbEl0ZW1zOiBrZXllZEZvcm1EYXRhLmxlbmd0aCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiBgZmllbGQgZmllbGQtYXJyYXkgZmllbGQtYXJyYXktb2YtJHtpdGVtc1NjaGVtYS50eXBlfWAsXG4gICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgIGlkU2NoZW1hLFxuICAgICAgICAgICAgdWlTY2hlbWEsXG4gICAgICAgICAgICBvbkFkZENsaWNrOiB0aGlzLm9uQWRkQ2xpY2ssXG4gICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgIHJlcXVpcmVkLFxuICAgICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgICAgdGl0bGU6IGZpZWxkVGl0bGUsXG4gICAgICAgICAgICBmb3JtQ29udGV4dCxcbiAgICAgICAgICAgIGZvcm1EYXRhLFxuICAgICAgICAgICAgcmF3RXJyb3JzLFxuICAgICAgICAgICAgcmVnaXN0cnksXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0FycmF5RmllbGRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCB1aU9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gX2pzeChUZW1wbGF0ZSwgeyAuLi5hcnJheVByb3BzIH0pO1xuICAgIH1cbiAgICAvKiogUmVuZGVycyBhbiBhcnJheSB1c2luZyB0aGUgY3VzdG9tIHdpZGdldCBwcm92aWRlZCBieSB0aGUgdXNlciBpbiB0aGUgYHVpU2NoZW1hYFxuICAgICAqL1xuICAgIHJlbmRlckN1c3RvbVdpZGdldCgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCB7IHNjaGVtYSwgaWRTY2hlbWEsIHVpU2NoZW1hLCBkaXNhYmxlZCA9IGZhbHNlLCByZWFkb25seSA9IGZhbHNlLCBhdXRvZm9jdXMgPSBmYWxzZSwgcmVxdWlyZWQgPSBmYWxzZSwgaGlkZUVycm9yLCBwbGFjZWhvbGRlciwgb25CbHVyLCBvbkZvY3VzLCBmb3JtRGF0YTogaXRlbXMgPSBbXSwgcmVnaXN0cnksIHJhd0Vycm9ycywgbmFtZSwgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHsgd2lkZ2V0cywgZm9ybUNvbnRleHQsIGdsb2JhbFVpT3B0aW9ucywgc2NoZW1hVXRpbHMgfSA9IHJlZ2lzdHJ5O1xuICAgICAgICBjb25zdCB7IHdpZGdldCwgdGl0bGU6IHVpVGl0bGUsIC4uLm9wdGlvbnMgfSA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSwgZ2xvYmFsVWlPcHRpb25zKTtcbiAgICAgICAgY29uc3QgV2lkZ2V0ID0gZ2V0V2lkZ2V0KHNjaGVtYSwgd2lkZ2V0LCB3aWRnZXRzKTtcbiAgICAgICAgY29uc3QgbGFiZWwgPSAoX2EgPSB1aVRpdGxlICE9PSBudWxsICYmIHVpVGl0bGUgIT09IHZvaWQgMCA/IHVpVGl0bGUgOiBzY2hlbWEudGl0bGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG5hbWU7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlMYWJlbCA9IHNjaGVtYVV0aWxzLmdldERpc3BsYXlMYWJlbChzY2hlbWEsIHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gKF9qc3goV2lkZ2V0LCB7IGlkOiBpZFNjaGVtYS4kaWQsIG5hbWU6IG5hbWUsIG11bHRpcGxlOiB0cnVlLCBvbkNoYW5nZTogdGhpcy5vblNlbGVjdENoYW5nZSwgb25CbHVyOiBvbkJsdXIsIG9uRm9jdXM6IG9uRm9jdXMsIG9wdGlvbnM6IG9wdGlvbnMsIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSwgdmFsdWU6IGl0ZW1zLCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlYWRvbmx5OiByZWFkb25seSwgaGlkZUVycm9yOiBoaWRlRXJyb3IsIHJlcXVpcmVkOiByZXF1aXJlZCwgbGFiZWw6IGxhYmVsLCBoaWRlTGFiZWw6ICFkaXNwbGF5TGFiZWwsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgZm9ybUNvbnRleHQ6IGZvcm1Db250ZXh0LCBhdXRvZm9jdXM6IGF1dG9mb2N1cywgcmF3RXJyb3JzOiByYXdFcnJvcnMgfSkpO1xuICAgIH1cbiAgICAvKiogUmVuZGVycyBhbiBhcnJheSBhcyBhIHNldCBvZiBjaGVja2JveGVzXG4gICAgICovXG4gICAgcmVuZGVyTXVsdGlTZWxlY3QoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgeyBzY2hlbWEsIGlkU2NoZW1hLCB1aVNjaGVtYSwgZm9ybURhdGE6IGl0ZW1zID0gW10sIGRpc2FibGVkID0gZmFsc2UsIHJlYWRvbmx5ID0gZmFsc2UsIGF1dG9mb2N1cyA9IGZhbHNlLCByZXF1aXJlZCA9IGZhbHNlLCBwbGFjZWhvbGRlciwgb25CbHVyLCBvbkZvY3VzLCByZWdpc3RyeSwgcmF3RXJyb3JzLCBuYW1lLCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyB3aWRnZXRzLCBzY2hlbWFVdGlscywgZm9ybUNvbnRleHQsIGdsb2JhbFVpT3B0aW9ucyB9ID0gcmVnaXN0cnk7XG4gICAgICAgIGNvbnN0IGl0ZW1zU2NoZW1hID0gc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEoc2NoZW1hLml0ZW1zLCBpdGVtcyk7XG4gICAgICAgIGNvbnN0IGVudW1PcHRpb25zID0gb3B0aW9uc0xpc3QoaXRlbXNTY2hlbWEsIHVpU2NoZW1hKTtcbiAgICAgICAgY29uc3QgeyB3aWRnZXQgPSAnc2VsZWN0JywgdGl0bGU6IHVpVGl0bGUsIC4uLm9wdGlvbnMgfSA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSwgZ2xvYmFsVWlPcHRpb25zKTtcbiAgICAgICAgY29uc3QgV2lkZ2V0ID0gZ2V0V2lkZ2V0KHNjaGVtYSwgd2lkZ2V0LCB3aWRnZXRzKTtcbiAgICAgICAgY29uc3QgbGFiZWwgPSAoX2EgPSB1aVRpdGxlICE9PSBudWxsICYmIHVpVGl0bGUgIT09IHZvaWQgMCA/IHVpVGl0bGUgOiBzY2hlbWEudGl0bGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG5hbWU7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlMYWJlbCA9IHNjaGVtYVV0aWxzLmdldERpc3BsYXlMYWJlbChzY2hlbWEsIHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gKF9qc3goV2lkZ2V0LCB7IGlkOiBpZFNjaGVtYS4kaWQsIG5hbWU6IG5hbWUsIG11bHRpcGxlOiB0cnVlLCBvbkNoYW5nZTogdGhpcy5vblNlbGVjdENoYW5nZSwgb25CbHVyOiBvbkJsdXIsIG9uRm9jdXM6IG9uRm9jdXMsIG9wdGlvbnM6IHsgLi4ub3B0aW9ucywgZW51bU9wdGlvbnMgfSwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5LCB2YWx1ZTogaXRlbXMsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZG9ubHk6IHJlYWRvbmx5LCByZXF1aXJlZDogcmVxdWlyZWQsIGxhYmVsOiBsYWJlbCwgaGlkZUxhYmVsOiAhZGlzcGxheUxhYmVsLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgYXV0b2ZvY3VzOiBhdXRvZm9jdXMsIHJhd0Vycm9yczogcmF3RXJyb3JzIH0pKTtcbiAgICB9XG4gICAgLyoqIFJlbmRlcnMgYW4gYXJyYXkgb2YgZmlsZXMgdXNpbmcgdGhlIGBGaWxlV2lkZ2V0YFxuICAgICAqL1xuICAgIHJlbmRlckZpbGVzKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hLCB1aVNjaGVtYSwgaWRTY2hlbWEsIG5hbWUsIGRpc2FibGVkID0gZmFsc2UsIHJlYWRvbmx5ID0gZmFsc2UsIGF1dG9mb2N1cyA9IGZhbHNlLCByZXF1aXJlZCA9IGZhbHNlLCBvbkJsdXIsIG9uRm9jdXMsIHJlZ2lzdHJ5LCBmb3JtRGF0YTogaXRlbXMgPSBbXSwgcmF3RXJyb3JzLCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyB3aWRnZXRzLCBmb3JtQ29udGV4dCwgZ2xvYmFsVWlPcHRpb25zLCBzY2hlbWFVdGlscyB9ID0gcmVnaXN0cnk7XG4gICAgICAgIGNvbnN0IHsgd2lkZ2V0ID0gJ2ZpbGVzJywgdGl0bGU6IHVpVGl0bGUsIC4uLm9wdGlvbnMgfSA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSwgZ2xvYmFsVWlPcHRpb25zKTtcbiAgICAgICAgY29uc3QgV2lkZ2V0ID0gZ2V0V2lkZ2V0KHNjaGVtYSwgd2lkZ2V0LCB3aWRnZXRzKTtcbiAgICAgICAgY29uc3QgbGFiZWwgPSAoX2EgPSB1aVRpdGxlICE9PSBudWxsICYmIHVpVGl0bGUgIT09IHZvaWQgMCA/IHVpVGl0bGUgOiBzY2hlbWEudGl0bGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG5hbWU7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlMYWJlbCA9IHNjaGVtYVV0aWxzLmdldERpc3BsYXlMYWJlbChzY2hlbWEsIHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gKF9qc3goV2lkZ2V0LCB7IG9wdGlvbnM6IG9wdGlvbnMsIGlkOiBpZFNjaGVtYS4kaWQsIG5hbWU6IG5hbWUsIG11bHRpcGxlOiB0cnVlLCBvbkNoYW5nZTogdGhpcy5vblNlbGVjdENoYW5nZSwgb25CbHVyOiBvbkJsdXIsIG9uRm9jdXM6IG9uRm9jdXMsIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIHZhbHVlOiBpdGVtcywgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkb25seTogcmVhZG9ubHksIHJlcXVpcmVkOiByZXF1aXJlZCwgcmVnaXN0cnk6IHJlZ2lzdHJ5LCBmb3JtQ29udGV4dDogZm9ybUNvbnRleHQsIGF1dG9mb2N1czogYXV0b2ZvY3VzLCByYXdFcnJvcnM6IHJhd0Vycm9ycywgbGFiZWw6IGxhYmVsLCBoaWRlTGFiZWw6ICFkaXNwbGF5TGFiZWwgfSkpO1xuICAgIH1cbiAgICAvKiogUmVuZGVycyBhbiBhcnJheSB0aGF0IGhhcyBhIG1heGltdW0gbGltaXQgb2YgaXRlbXNcbiAgICAgKi9cbiAgICByZW5kZXJGaXhlZEFycmF5KCkge1xuICAgICAgICBjb25zdCB7IHNjaGVtYSwgdWlTY2hlbWEgPSB7fSwgZm9ybURhdGEgPSBbXSwgZXJyb3JTY2hlbWEsIGlkUHJlZml4LCBpZFNlcGFyYXRvciA9ICdfJywgaWRTY2hlbWEsIG5hbWUsIHRpdGxlLCBkaXNhYmxlZCA9IGZhbHNlLCByZWFkb25seSA9IGZhbHNlLCBhdXRvZm9jdXMgPSBmYWxzZSwgcmVxdWlyZWQgPSBmYWxzZSwgcmVnaXN0cnksIG9uQmx1ciwgb25Gb2N1cywgcmF3RXJyb3JzLCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyBrZXllZEZvcm1EYXRhIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBsZXQgeyBmb3JtRGF0YTogaXRlbXMgPSBbXSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgZmllbGRUaXRsZSA9IHNjaGVtYS50aXRsZSB8fCB0aXRsZSB8fCBuYW1lO1xuICAgICAgICBjb25zdCB1aU9wdGlvbnMgPSBnZXRVaU9wdGlvbnModWlTY2hlbWEpO1xuICAgICAgICBjb25zdCB7IHNjaGVtYVV0aWxzLCBmb3JtQ29udGV4dCB9ID0gcmVnaXN0cnk7XG4gICAgICAgIGNvbnN0IF9zY2hlbWFJdGVtcyA9IGlzT2JqZWN0KHNjaGVtYS5pdGVtcykgPyBzY2hlbWEuaXRlbXMgOiBbXTtcbiAgICAgICAgY29uc3QgaXRlbVNjaGVtYXMgPSBfc2NoZW1hSXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4gc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEoaXRlbSwgZm9ybURhdGFbaW5kZXhdKSk7XG4gICAgICAgIGNvbnN0IGFkZGl0aW9uYWxTY2hlbWEgPSBpc09iamVjdChzY2hlbWEuYWRkaXRpb25hbEl0ZW1zKVxuICAgICAgICAgICAgPyBzY2hlbWFVdGlscy5yZXRyaWV2ZVNjaGVtYShzY2hlbWEuYWRkaXRpb25hbEl0ZW1zLCBmb3JtRGF0YSlcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgaWYgKCFpdGVtcyB8fCBpdGVtcy5sZW5ndGggPCBpdGVtU2NoZW1hcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIHRvIG1ha2Ugc3VyZSBhdCBsZWFzdCBhbGwgZml4ZWQgaXRlbXMgYXJlIGdlbmVyYXRlZFxuICAgICAgICAgICAgaXRlbXMgPSBpdGVtcyB8fCBbXTtcbiAgICAgICAgICAgIGl0ZW1zID0gaXRlbXMuY29uY2F0KG5ldyBBcnJheShpdGVtU2NoZW1hcy5sZW5ndGggLSBpdGVtcy5sZW5ndGgpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGVzZSBhcmUgdGhlIHByb3BzIHBhc3NlZCBpbnRvIHRoZSByZW5kZXIgZnVuY3Rpb25cbiAgICAgICAgY29uc3QgY2FuQWRkID0gdGhpcy5jYW5BZGRJdGVtKGl0ZW1zKSAmJiAhIWFkZGl0aW9uYWxTY2hlbWE7XG4gICAgICAgIGNvbnN0IGFycmF5UHJvcHMgPSB7XG4gICAgICAgICAgICBjYW5BZGQsXG4gICAgICAgICAgICBjbGFzc05hbWU6ICdmaWVsZCBmaWVsZC1hcnJheSBmaWVsZC1hcnJheS1maXhlZC1pdGVtcycsXG4gICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgIGlkU2NoZW1hLFxuICAgICAgICAgICAgZm9ybURhdGEsXG4gICAgICAgICAgICBpdGVtczoga2V5ZWRGb3JtRGF0YS5tYXAoKGtleWVkSXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGtleSwgaXRlbSB9ID0ga2V5ZWRJdGVtO1xuICAgICAgICAgICAgICAgIC8vIFdoaWxlIHdlIGFyZSBhY3R1YWxseSBkZWFsaW5nIHdpdGggYSBzaW5nbGUgaXRlbSBvZiB0eXBlIFQsIHRoZSB0eXBlcyByZXF1aXJlIGEgVFtdLCBzbyBjYXN0XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUNhc3QgPSBpdGVtO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWwgPSBpbmRleCA+PSBpdGVtU2NoZW1hcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbVNjaGVtYSA9IChhZGRpdGlvbmFsICYmIGlzT2JqZWN0KHNjaGVtYS5hZGRpdGlvbmFsSXRlbXMpXG4gICAgICAgICAgICAgICAgICAgID8gc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEoc2NoZW1hLmFkZGl0aW9uYWxJdGVtcywgaXRlbUNhc3QpXG4gICAgICAgICAgICAgICAgICAgIDogaXRlbVNjaGVtYXNbaW5kZXhdKSB8fCB7fTtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtSWRQcmVmaXggPSBpZFNjaGVtYS4kaWQgKyBpZFNlcGFyYXRvciArIGluZGV4O1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1JZFNjaGVtYSA9IHNjaGVtYVV0aWxzLnRvSWRTY2hlbWEoaXRlbVNjaGVtYSwgaXRlbUlkUHJlZml4LCBpdGVtQ2FzdCwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtVWlTY2hlbWEgPSBhZGRpdGlvbmFsXG4gICAgICAgICAgICAgICAgICAgID8gdWlTY2hlbWEuYWRkaXRpb25hbEl0ZW1zIHx8IHt9XG4gICAgICAgICAgICAgICAgICAgIDogQXJyYXkuaXNBcnJheSh1aVNjaGVtYS5pdGVtcylcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdWlTY2hlbWEuaXRlbXNbaW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHVpU2NoZW1hLml0ZW1zIHx8IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1FcnJvclNjaGVtYSA9IGVycm9yU2NoZW1hID8gZXJyb3JTY2hlbWFbaW5kZXhdIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlckFycmF5RmllbGRJdGVtKHtcbiAgICAgICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZSAmJiBgJHtuYW1lfS0ke2luZGV4fWAsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBmaWVsZFRpdGxlID8gYCR7ZmllbGRUaXRsZX0tJHtpbmRleCArIDF9YCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgY2FuQWRkLFxuICAgICAgICAgICAgICAgICAgICBjYW5SZW1vdmU6IGFkZGl0aW9uYWwsXG4gICAgICAgICAgICAgICAgICAgIGNhbk1vdmVVcDogaW5kZXggPj0gaXRlbVNjaGVtYXMubGVuZ3RoICsgMSxcbiAgICAgICAgICAgICAgICAgICAgY2FuTW92ZURvd246IGFkZGl0aW9uYWwgJiYgaW5kZXggPCBpdGVtcy5sZW5ndGggLSAxLFxuICAgICAgICAgICAgICAgICAgICBpdGVtU2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBpdGVtRGF0YTogaXRlbUNhc3QsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1VaVNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbUlkU2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBpdGVtRXJyb3JTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIGF1dG9mb2N1czogYXV0b2ZvY3VzICYmIGluZGV4ID09PSAwLFxuICAgICAgICAgICAgICAgICAgICBvbkJsdXIsXG4gICAgICAgICAgICAgICAgICAgIG9uRm9jdXMsXG4gICAgICAgICAgICAgICAgICAgIHJhd0Vycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgdG90YWxJdGVtczoga2V5ZWRGb3JtRGF0YS5sZW5ndGgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG9uQWRkQ2xpY2s6IHRoaXMub25BZGRDbGljayxcbiAgICAgICAgICAgIHJlYWRvbmx5LFxuICAgICAgICAgICAgcmVxdWlyZWQsXG4gICAgICAgICAgICByZWdpc3RyeSxcbiAgICAgICAgICAgIHNjaGVtYSxcbiAgICAgICAgICAgIHVpU2NoZW1hLFxuICAgICAgICAgICAgdGl0bGU6IGZpZWxkVGl0bGUsXG4gICAgICAgICAgICBmb3JtQ29udGV4dCxcbiAgICAgICAgICAgIGVycm9yU2NoZW1hLFxuICAgICAgICAgICAgcmF3RXJyb3JzLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdBcnJheUZpZWxkVGVtcGxhdGUnLCByZWdpc3RyeSwgdWlPcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIF9qc3goVGVtcGxhdGUsIHsgLi4uYXJyYXlQcm9wcyB9KTtcbiAgICB9XG4gICAgLyoqIFJlbmRlcnMgdGhlIGluZGl2aWR1YWwgYXJyYXkgaXRlbSB1c2luZyBhIGBTY2hlbWFGaWVsZGAgYWxvbmcgd2l0aCB0aGUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIHJlcXVpcmVkIHRvIGJlIHNlbmRcbiAgICAgKiBiYWNrIHRvIHRoZSBgQXJyYXlGaWVsZEl0ZW1UZW1wbGF0ZWAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvcHMgLSBUaGUgcHJvcHMgZm9yIHRoZSBpbmRpdmlkdWFsIGFycmF5IGl0ZW0gdG8gYmUgcmVuZGVyZWRcbiAgICAgKi9cbiAgICByZW5kZXJBcnJheUZpZWxkSXRlbShwcm9wcykge1xuICAgICAgICBjb25zdCB7IGtleSwgaW5kZXgsIG5hbWUsIGNhbkFkZCwgY2FuUmVtb3ZlID0gdHJ1ZSwgY2FuTW92ZVVwLCBjYW5Nb3ZlRG93biwgaXRlbVNjaGVtYSwgaXRlbURhdGEsIGl0ZW1VaVNjaGVtYSwgaXRlbUlkU2NoZW1hLCBpdGVtRXJyb3JTY2hlbWEsIGF1dG9mb2N1cywgb25CbHVyLCBvbkZvY3VzLCByYXdFcnJvcnMsIHRvdGFsSXRlbXMsIHRpdGxlLCB9ID0gcHJvcHM7XG4gICAgICAgIGNvbnN0IHsgZGlzYWJsZWQsIGhpZGVFcnJvciwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yLCByZWFkb25seSwgdWlTY2hlbWEsIHJlZ2lzdHJ5LCBmb3JtQ29udGV4dCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyBmaWVsZHM6IHsgQXJyYXlTY2hlbWFGaWVsZCwgU2NoZW1hRmllbGQgfSwgZ2xvYmFsVWlPcHRpb25zLCB9ID0gcmVnaXN0cnk7XG4gICAgICAgIGNvbnN0IEl0ZW1TY2hlbWFGaWVsZCA9IEFycmF5U2NoZW1hRmllbGQgfHwgU2NoZW1hRmllbGQ7XG4gICAgICAgIGNvbnN0IHsgb3JkZXJhYmxlID0gdHJ1ZSwgcmVtb3ZhYmxlID0gdHJ1ZSwgY29weWFibGUgPSBmYWxzZSB9ID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICBjb25zdCBoYXMgPSB7XG4gICAgICAgICAgICBtb3ZlVXA6IG9yZGVyYWJsZSAmJiBjYW5Nb3ZlVXAsXG4gICAgICAgICAgICBtb3ZlRG93bjogb3JkZXJhYmxlICYmIGNhbk1vdmVEb3duLFxuICAgICAgICAgICAgY29weTogY29weWFibGUgJiYgY2FuQWRkLFxuICAgICAgICAgICAgcmVtb3ZlOiByZW1vdmFibGUgJiYgY2FuUmVtb3ZlLFxuICAgICAgICAgICAgdG9vbGJhcjogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIGhhcy50b29sYmFyID0gT2JqZWN0LmtleXMoaGFzKS5zb21lKChrZXkpID0+IGhhc1trZXldKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiAoX2pzeChJdGVtU2NoZW1hRmllbGQsIHsgbmFtZTogbmFtZSwgdGl0bGU6IHRpdGxlLCBpbmRleDogaW5kZXgsIHNjaGVtYTogaXRlbVNjaGVtYSwgdWlTY2hlbWE6IGl0ZW1VaVNjaGVtYSwgZm9ybURhdGE6IGl0ZW1EYXRhLCBmb3JtQ29udGV4dDogZm9ybUNvbnRleHQsIGVycm9yU2NoZW1hOiBpdGVtRXJyb3JTY2hlbWEsIGlkUHJlZml4OiBpZFByZWZpeCwgaWRTZXBhcmF0b3I6IGlkU2VwYXJhdG9yLCBpZFNjaGVtYTogaXRlbUlkU2NoZW1hLCByZXF1aXJlZDogdGhpcy5pc0l0ZW1SZXF1aXJlZChpdGVtU2NoZW1hKSwgb25DaGFuZ2U6IHRoaXMub25DaGFuZ2VGb3JJbmRleChpbmRleCksIG9uQmx1cjogb25CbHVyLCBvbkZvY3VzOiBvbkZvY3VzLCByZWdpc3RyeTogcmVnaXN0cnksIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZG9ubHk6IHJlYWRvbmx5LCBoaWRlRXJyb3I6IGhpZGVFcnJvciwgYXV0b2ZvY3VzOiBhdXRvZm9jdXMsIHJhd0Vycm9yczogcmF3RXJyb3JzIH0pKSxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2FycmF5LWl0ZW0nLFxuICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICBjYW5BZGQsXG4gICAgICAgICAgICBoYXNDb3B5OiBoYXMuY29weSxcbiAgICAgICAgICAgIGhhc1Rvb2xiYXI6IGhhcy50b29sYmFyLFxuICAgICAgICAgICAgaGFzTW92ZVVwOiBoYXMubW92ZVVwLFxuICAgICAgICAgICAgaGFzTW92ZURvd246IGhhcy5tb3ZlRG93bixcbiAgICAgICAgICAgIGhhc1JlbW92ZTogaGFzLnJlbW92ZSxcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgdG90YWxJdGVtcyxcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIG9uQWRkSW5kZXhDbGljazogdGhpcy5vbkFkZEluZGV4Q2xpY2ssXG4gICAgICAgICAgICBvbkNvcHlJbmRleENsaWNrOiB0aGlzLm9uQ29weUluZGV4Q2xpY2ssXG4gICAgICAgICAgICBvbkRyb3BJbmRleENsaWNrOiB0aGlzLm9uRHJvcEluZGV4Q2xpY2ssXG4gICAgICAgICAgICBvblJlb3JkZXJDbGljazogdGhpcy5vblJlb3JkZXJDbGljayxcbiAgICAgICAgICAgIHJlYWRvbmx5LFxuICAgICAgICAgICAgcmVnaXN0cnksXG4gICAgICAgICAgICBzY2hlbWE6IGl0ZW1TY2hlbWEsXG4gICAgICAgICAgICB1aVNjaGVtYTogaXRlbVVpU2NoZW1hLFxuICAgICAgICB9O1xuICAgIH1cbn1cbi8qKiBgQXJyYXlGaWVsZGAgaXMgYFJlYWN0LkNvbXBvbmVudFR5cGU8RmllbGRQcm9wczxUW10sIFMsIEY+PmAgKG5lY2Vzc2FyaWx5KSBidXQgdGhlIGByZWdpc3RyeWAgcmVxdWlyZXMgdGhpbmdzIHRvIGJlIGFcbiAqIGBGaWVsZGAgd2hpY2ggaXMgZGVmaW5lZCBhcyBgUmVhY3QuQ29tcG9uZW50VHlwZTxGaWVsZFByb3BzPFQsIFMsIEY+PmAsIHNvIGNhc3QgaXQgdG8gbWFrZSBgcmVnaXN0cnlgIGhhcHB5LlxuICovXG5leHBvcnQgZGVmYXVsdCBBcnJheUZpZWxkO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QXJyYXlGaWVsZC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgZ2V0V2lkZ2V0LCBnZXRVaU9wdGlvbnMsIG9wdGlvbnNMaXN0LCBUcmFuc2xhdGFibGVTdHJpbmcsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJ2xvZGFzaC9pc09iamVjdCc7XG4vKiogVGhlIGBCb29sZWFuRmllbGRgIGNvbXBvbmVudCBpcyB1c2VkIHRvIHJlbmRlciBhIGZpZWxkIGluIHRoZSBzY2hlbWEgaXMgYm9vbGVhbi4gSXQgY29uc3RydWN0cyBgZW51bU9wdGlvbnNgIGZvciB0aGVcbiAqIHR3byBib29sZWFuIHZhbHVlcyBiYXNlZCBvbiB0aGUgdmFyaW91cyBhbHRlcm5hdGl2ZXMgaW4gdGhlIHNjaGVtYS5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYEZpZWxkUHJvcHNgIGZvciB0aGlzIHRlbXBsYXRlXG4gKi9cbmZ1bmN0aW9uIEJvb2xlYW5GaWVsZChwcm9wcykge1xuICAgIHZhciBfYSwgX2IsIF9jO1xuICAgIGNvbnN0IHsgc2NoZW1hLCBuYW1lLCB1aVNjaGVtYSwgaWRTY2hlbWEsIGZvcm1EYXRhLCByZWdpc3RyeSwgcmVxdWlyZWQsIGRpc2FibGVkLCByZWFkb25seSwgaGlkZUVycm9yLCBhdXRvZm9jdXMsIHRpdGxlLCBvbkNoYW5nZSwgb25Gb2N1cywgb25CbHVyLCByYXdFcnJvcnMsIH0gPSBwcm9wcztcbiAgICBjb25zdCB7IHRpdGxlOiBzY2hlbWFUaXRsZSB9ID0gc2NoZW1hO1xuICAgIGNvbnN0IHsgd2lkZ2V0cywgZm9ybUNvbnRleHQsIHRyYW5zbGF0ZVN0cmluZywgZ2xvYmFsVWlPcHRpb25zIH0gPSByZWdpc3RyeTtcbiAgICBjb25zdCB7IHdpZGdldCA9ICdjaGVja2JveCcsIHRpdGxlOiB1aVRpdGxlLCBcbiAgICAvLyBVbmxpa2UgdGhlIG90aGVyIGZpZWxkcywgZG9uJ3QgdXNlIGBnZXREaXNwbGF5TGFiZWwoKWAgc2luY2UgaXQgYWx3YXlzIHJldHVybnMgZmFsc2UgZm9yIHRoZSBib29sZWFuIHR5cGVcbiAgICBsYWJlbDogZGlzcGxheUxhYmVsID0gdHJ1ZSwgLi4ub3B0aW9ucyB9ID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgIGNvbnN0IFdpZGdldCA9IGdldFdpZGdldChzY2hlbWEsIHdpZGdldCwgd2lkZ2V0cyk7XG4gICAgY29uc3QgeWVzID0gdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5ZZXNMYWJlbCk7XG4gICAgY29uc3Qgbm8gPSB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLk5vTGFiZWwpO1xuICAgIGxldCBlbnVtT3B0aW9ucztcbiAgICBjb25zdCBsYWJlbCA9IChfYiA9IChfYSA9IHVpVGl0bGUgIT09IG51bGwgJiYgdWlUaXRsZSAhPT0gdm9pZCAwID8gdWlUaXRsZSA6IHNjaGVtYVRpdGxlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aXRsZSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogbmFtZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEub25lT2YpKSB7XG4gICAgICAgIGVudW1PcHRpb25zID0gb3B0aW9uc0xpc3Qoe1xuICAgICAgICAgICAgb25lT2Y6IHNjaGVtYS5vbmVPZlxuICAgICAgICAgICAgICAgIC5tYXAoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpc09iamVjdChvcHRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5vcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogb3B0aW9uLnRpdGxlIHx8IChvcHRpb24uY29uc3QgPT09IHRydWUgPyB5ZXMgOiBubyksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKG8pID0+IG8pLCAvLyBjYXN0IGF3YXkgdGhlIGVycm9yIHRoYXQgdHlwZXNjcmlwdCBjYW4ndCBncm9rIGlzIGZpeGVkXG4gICAgICAgIH0sIHVpU2NoZW1hKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIFdlIGRlcHJlY2F0ZWQgZW51bU5hbWVzIGluIHY1LiBJdCdzIGludGVudGlvbmFsbHkgb21pdHRlZCBmcm9tIFJTSkZTY2hlbWEgdHlwZSwgc28gd2UgbmVlZCB0byBjYXN0IGhlcmUuXG4gICAgICAgIGNvbnN0IHNjaGVtYVdpdGhFbnVtTmFtZXMgPSBzY2hlbWE7XG4gICAgICAgIGNvbnN0IGVudW1zID0gKF9jID0gc2NoZW1hLmVudW0pICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IFt0cnVlLCBmYWxzZV07XG4gICAgICAgIGlmICghc2NoZW1hV2l0aEVudW1OYW1lcy5lbnVtTmFtZXMgJiYgZW51bXMubGVuZ3RoID09PSAyICYmIGVudW1zLmV2ZXJ5KCh2KSA9PiB0eXBlb2YgdiA9PT0gJ2Jvb2xlYW4nKSkge1xuICAgICAgICAgICAgZW51bU9wdGlvbnMgPSBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bXNbMF0sXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBlbnVtc1swXSA/IHllcyA6IG5vLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bXNbMV0sXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBlbnVtc1sxXSA/IHllcyA6IG5vLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZW51bU9wdGlvbnMgPSBvcHRpb25zTGlzdCh7XG4gICAgICAgICAgICAgICAgZW51bTogZW51bXMsXG4gICAgICAgICAgICAgICAgLy8gTk9URTogZW51bU5hbWVzIGlzIGRlcHJlY2F0ZWQsIGJ1dCBzdGlsbCBzdXBwb3J0ZWQgZm9yIG5vdy5cbiAgICAgICAgICAgICAgICBlbnVtTmFtZXM6IHNjaGVtYVdpdGhFbnVtTmFtZXMuZW51bU5hbWVzLFxuICAgICAgICAgICAgfSwgdWlTY2hlbWEpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAoX2pzeChXaWRnZXQsIHsgb3B0aW9uczogeyAuLi5vcHRpb25zLCBlbnVtT3B0aW9ucyB9LCBzY2hlbWE6IHNjaGVtYSwgdWlTY2hlbWE6IHVpU2NoZW1hLCBpZDogaWRTY2hlbWEuJGlkLCBuYW1lOiBuYW1lLCBvbkNoYW5nZTogb25DaGFuZ2UsIG9uRm9jdXM6IG9uRm9jdXMsIG9uQmx1cjogb25CbHVyLCBsYWJlbDogbGFiZWwsIGhpZGVMYWJlbDogIWRpc3BsYXlMYWJlbCwgdmFsdWU6IGZvcm1EYXRhLCByZXF1aXJlZDogcmVxdWlyZWQsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZG9ubHk6IHJlYWRvbmx5LCBoaWRlRXJyb3I6IGhpZGVFcnJvciwgcmVnaXN0cnk6IHJlZ2lzdHJ5LCBmb3JtQ29udGV4dDogZm9ybUNvbnRleHQsIGF1dG9mb2N1czogYXV0b2ZvY3VzLCByYXdFcnJvcnM6IHJhd0Vycm9ycyB9KSk7XG59XG5leHBvcnQgZGVmYXVsdCBCb29sZWFuRmllbGQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Cb29sZWFuRmllbGQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5pbXBvcnQgb21pdCBmcm9tICdsb2Rhc2gvb21pdCc7XG5pbXBvcnQgeyBBTllfT0ZfS0VZLCBkZWVwRXF1YWxzLCBFUlJPUlNfS0VZLCBnZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hLCBnZXRVaU9wdGlvbnMsIGdldFdpZGdldCwgbWVyZ2VTY2hlbWFzLCBPTkVfT0ZfS0VZLCBUcmFuc2xhdGFibGVTdHJpbmcsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgQW55T2ZGaWVsZGAgY29tcG9uZW50IGlzIHVzZWQgdG8gcmVuZGVyIGEgZmllbGQgaW4gdGhlIHNjaGVtYSB0aGF0IGlzIGFuIGBhbnlPZmAsIGBhbGxPZmAgb3IgYG9uZU9mYC4gSXQgdHJhY2tzXG4gKiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG9wdGlvbiBhbmQgY2xlYW5zIHVwIGFueSBpcnJlbGV2YW50IGRhdGEgaW4gYGZvcm1EYXRhYC5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYEZpZWxkUHJvcHNgIGZvciB0aGlzIHRlbXBsYXRlXG4gKi9cbmNsYXNzIEFueU9mRmllbGQgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIC8qKiBDb25zdHJ1Y3RzIGFuIGBBbnlPZkZpZWxkYCB3aXRoIHRoZSBnaXZlbiBgcHJvcHNgIHRvIGluaXRpYWxpemUgdGhlIGluaXRpYWxseSBzZWxlY3RlZCBvcHRpb24gaW4gc3RhdGVcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgRmllbGRQcm9wc2AgZm9yIHRoaXMgdGVtcGxhdGVcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG4gICAgICAgIC8qKiBDYWxsYmFjayBoYW5kbGVyIHRvIHJlbWVtYmVyIHdoYXQgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBvcHRpb24gaXMuIEluIGFkZGl0aW9uIHRvIHRoYXQgdGhlIGBmb3JtRGF0YWAgaXMgdXBkYXRlZFxuICAgICAgICAgKiB0byByZW1vdmUgcHJvcGVydGllcyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgbmV3bHkgc2VsZWN0ZWQgb3B0aW9uIHNjaGVtYSwgYW5kIHRoZW4gdGhlIHVwZGF0ZWQgZGF0YSBpcyBwYXNzZWQgdG9cbiAgICAgICAgICogdGhlIGBvbkNoYW5nZWAgaGFuZGxlci5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIG9wdGlvbiAtIFRoZSBuZXcgb3B0aW9uIHZhbHVlIGJlaW5nIHNlbGVjdGVkXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uT3B0aW9uQ2hhbmdlID0gKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBzZWxlY3RlZE9wdGlvbiwgcmV0cmlldmVkT3B0aW9ucyB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgICAgIGNvbnN0IHsgZm9ybURhdGEsIG9uQ2hhbmdlLCByZWdpc3RyeSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIGNvbnN0IHsgc2NoZW1hVXRpbHMgfSA9IHJlZ2lzdHJ5O1xuICAgICAgICAgICAgY29uc3QgaW50T3B0aW9uID0gb3B0aW9uICE9PSB1bmRlZmluZWQgPyBwYXJzZUludChvcHRpb24sIDEwKSA6IC0xO1xuICAgICAgICAgICAgaWYgKGludE9wdGlvbiA9PT0gc2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBuZXdPcHRpb24gPSBpbnRPcHRpb24gPj0gMCA/IHJldHJpZXZlZE9wdGlvbnNbaW50T3B0aW9uXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IG9sZE9wdGlvbiA9IHNlbGVjdGVkT3B0aW9uID49IDAgPyByZXRyaWV2ZWRPcHRpb25zW3NlbGVjdGVkT3B0aW9uXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGxldCBuZXdGb3JtRGF0YSA9IHNjaGVtYVV0aWxzLnNhbml0aXplRGF0YUZvck5ld1NjaGVtYShuZXdPcHRpb24sIG9sZE9wdGlvbiwgZm9ybURhdGEpO1xuICAgICAgICAgICAgaWYgKG5ld09wdGlvbikge1xuICAgICAgICAgICAgICAgIC8vIENhbGwgZ2V0RGVmYXVsdEZvcm1TdGF0ZSB0byBtYWtlIHN1cmUgZGVmYXVsdHMgYXJlIHBvcHVsYXRlZCBvbiBjaGFuZ2UuIFBhc3MgXCJleGNsdWRlT2JqZWN0Q2hpbGRyZW5cIlxuICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgb25seSB0aGUgcm9vdCBvYmplY3RzIHRoZW1zZWx2ZXMgYXJlIGNyZWF0ZWQgd2l0aG91dCBhZGRpbmcgdW5kZWZpbmVkIGNoaWxkcmVuIHByb3BlcnRpZXNcbiAgICAgICAgICAgICAgICBuZXdGb3JtRGF0YSA9IHNjaGVtYVV0aWxzLmdldERlZmF1bHRGb3JtU3RhdGUobmV3T3B0aW9uLCBuZXdGb3JtRGF0YSwgJ2V4Y2x1ZGVPYmplY3RDaGlsZHJlbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNlbGVjdGVkT3B0aW9uOiBpbnRPcHRpb24gfSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlKG5ld0Zvcm1EYXRhLCB1bmRlZmluZWQsIHRoaXMuZ2V0RmllbGRJZCgpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCB7IGZvcm1EYXRhLCBvcHRpb25zLCByZWdpc3RyeTogeyBzY2hlbWFVdGlscyB9LCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgLy8gY2FjaGUgdGhlIHJldHJpZXZlZCBvcHRpb25zIGluIHN0YXRlIGluIGNhc2UgdGhleSBoYXZlICRyZWZzIHRvIHNhdmUgZG9pbmcgaXQgbGF0ZXJcbiAgICAgICAgY29uc3QgcmV0cmlldmVkT3B0aW9ucyA9IG9wdGlvbnMubWFwKChvcHQpID0+IHNjaGVtYVV0aWxzLnJldHJpZXZlU2NoZW1hKG9wdCwgZm9ybURhdGEpKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIHJldHJpZXZlZE9wdGlvbnMsXG4gICAgICAgICAgICBzZWxlY3RlZE9wdGlvbjogdGhpcy5nZXRNYXRjaGluZ09wdGlvbigwLCBmb3JtRGF0YSwgcmV0cmlldmVkT3B0aW9ucyksXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKiBSZWFjdCBsaWZlY3ljbGUgbWV0aG9kIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIHByb3BzIGFuZC9vciBzdGF0ZSBmb3IgdGhpcyBjb21wb25lbnQgaXMgdXBkYXRlZC4gSXQgcmVjb21wdXRlcyB0aGVcbiAgICAgKiBjdXJyZW50bHkgc2VsZWN0ZWQgb3B0aW9uIGJhc2VkIG9uIHRoZSBvdmVyYWxsIGBmb3JtRGF0YWBcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcmV2UHJvcHMgLSBUaGUgcHJldmlvdXMgYEZpZWxkUHJvcHNgIGZvciB0aGlzIHRlbXBsYXRlXG4gICAgICogQHBhcmFtIHByZXZTdGF0ZSAtIFRoZSBwcmV2aW91cyBgQW55T2ZGaWVsZFN0YXRlYCBmb3IgdGhpcyB0ZW1wbGF0ZVxuICAgICAqL1xuICAgIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZXZTdGF0ZSkge1xuICAgICAgICBjb25zdCB7IGZvcm1EYXRhLCBvcHRpb25zLCBpZFNjaGVtYSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyBzZWxlY3RlZE9wdGlvbiB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgbGV0IG5ld1N0YXRlID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgaWYgKCFkZWVwRXF1YWxzKHByZXZQcm9wcy5vcHRpb25zLCBvcHRpb25zKSkge1xuICAgICAgICAgICAgY29uc3QgeyByZWdpc3RyeTogeyBzY2hlbWFVdGlscyB9LCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIC8vIHJlLWNhY2hlIHRoZSByZXRyaWV2ZWQgb3B0aW9ucyBpbiBzdGF0ZSBpbiBjYXNlIHRoZXkgaGF2ZSAkcmVmcyB0byBzYXZlIGRvaW5nIGl0IGxhdGVyXG4gICAgICAgICAgICBjb25zdCByZXRyaWV2ZWRPcHRpb25zID0gb3B0aW9ucy5tYXAoKG9wdCkgPT4gc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEob3B0LCBmb3JtRGF0YSkpO1xuICAgICAgICAgICAgbmV3U3RhdGUgPSB7IHNlbGVjdGVkT3B0aW9uLCByZXRyaWV2ZWRPcHRpb25zIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkZWVwRXF1YWxzKGZvcm1EYXRhLCBwcmV2UHJvcHMuZm9ybURhdGEpICYmIGlkU2NoZW1hLiRpZCA9PT0gcHJldlByb3BzLmlkU2NoZW1hLiRpZCkge1xuICAgICAgICAgICAgY29uc3QgeyByZXRyaWV2ZWRPcHRpb25zIH0gPSBuZXdTdGF0ZTtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nT3B0aW9uID0gdGhpcy5nZXRNYXRjaGluZ09wdGlvbihzZWxlY3RlZE9wdGlvbiwgZm9ybURhdGEsIHJldHJpZXZlZE9wdGlvbnMpO1xuICAgICAgICAgICAgaWYgKHByZXZTdGF0ZSAmJiBtYXRjaGluZ09wdGlvbiAhPT0gc2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgICAgICAgICAgICBuZXdTdGF0ZSA9IHsgc2VsZWN0ZWRPcHRpb246IG1hdGNoaW5nT3B0aW9uLCByZXRyaWV2ZWRPcHRpb25zIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5ld1N0YXRlICE9PSB0aGlzLnN0YXRlKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgYmVzdCBtYXRjaGluZyBvcHRpb24gZm9yIHRoZSBnaXZlbiBgZm9ybURhdGFgIGFuZCBgb3B0aW9uc2AuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgbmV3IGZvcm1EYXRhXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgbGlzdCBvZiBvcHRpb25zIHRvIGNob29zZSBmcm9tXG4gICAgICogQHJldHVybiAtIFRoZSBpbmRleCBvZiB0aGUgYG9wdGlvbmAgdGhhdCBiZXN0IG1hdGNoZXMgdGhlIGBmb3JtRGF0YWBcbiAgICAgKi9cbiAgICBnZXRNYXRjaGluZ09wdGlvbihzZWxlY3RlZE9wdGlvbiwgZm9ybURhdGEsIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgeyBzY2hlbWEsIHJlZ2lzdHJ5OiB7IHNjaGVtYVV0aWxzIH0sIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBkaXNjcmltaW5hdG9yID0gZ2V0RGlzY3JpbWluYXRvckZpZWxkRnJvbVNjaGVtYShzY2hlbWEpO1xuICAgICAgICBjb25zdCBvcHRpb24gPSBzY2hlbWFVdGlscy5nZXRDbG9zZXN0TWF0Y2hpbmdPcHRpb24oZm9ybURhdGEsIG9wdGlvbnMsIHNlbGVjdGVkT3B0aW9uLCBkaXNjcmltaW5hdG9yKTtcbiAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICB9XG4gICAgZ2V0RmllbGRJZCgpIHtcbiAgICAgICAgY29uc3QgeyBpZFNjaGVtYSwgc2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICByZXR1cm4gYCR7aWRTY2hlbWEuJGlkfSR7c2NoZW1hLm9uZU9mID8gJ19fb25lb2Zfc2VsZWN0JyA6ICdfX2FueW9mX3NlbGVjdCd9YDtcbiAgICB9XG4gICAgLyoqIFJlbmRlcnMgdGhlIGBBbnlPZkZpZWxkYCBzZWxlY3RvciBhbG9uZyB3aXRoIGEgYFNjaGVtYUZpZWxkYCBmb3IgdGhlIHZhbHVlIG9mIHRoZSBgZm9ybURhdGFgXG4gICAgICovXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IG5hbWUsIGRpc2FibGVkID0gZmFsc2UsIGVycm9yU2NoZW1hID0ge30sIGZvcm1Db250ZXh0LCBvbkJsdXIsIG9uRm9jdXMsIHJlZ2lzdHJ5LCBzY2hlbWEsIHVpU2NoZW1hLCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyB3aWRnZXRzLCBmaWVsZHMsIHRyYW5zbGF0ZVN0cmluZywgZ2xvYmFsVWlPcHRpb25zLCBzY2hlbWFVdGlscyB9ID0gcmVnaXN0cnk7XG4gICAgICAgIGNvbnN0IHsgU2NoZW1hRmllbGQ6IF9TY2hlbWFGaWVsZCB9ID0gZmllbGRzO1xuICAgICAgICBjb25zdCB7IHNlbGVjdGVkT3B0aW9uLCByZXRyaWV2ZWRPcHRpb25zIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBjb25zdCB7IHdpZGdldCA9ICdzZWxlY3QnLCBwbGFjZWhvbGRlciwgYXV0b2ZvY3VzLCBhdXRvY29tcGxldGUsIHRpdGxlID0gc2NoZW1hLnRpdGxlLCAuLi51aU9wdGlvbnMgfSA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSwgZ2xvYmFsVWlPcHRpb25zKTtcbiAgICAgICAgY29uc3QgV2lkZ2V0ID0gZ2V0V2lkZ2V0KHsgdHlwZTogJ251bWJlcicgfSwgd2lkZ2V0LCB3aWRnZXRzKTtcbiAgICAgICAgY29uc3QgcmF3RXJyb3JzID0gZ2V0KGVycm9yU2NoZW1hLCBFUlJPUlNfS0VZLCBbXSk7XG4gICAgICAgIGNvbnN0IGZpZWxkRXJyb3JTY2hlbWEgPSBvbWl0KGVycm9yU2NoZW1hLCBbRVJST1JTX0tFWV0pO1xuICAgICAgICBjb25zdCBkaXNwbGF5TGFiZWwgPSBzY2hlbWFVdGlscy5nZXREaXNwbGF5TGFiZWwoc2NoZW1hLCB1aVNjaGVtYSwgZ2xvYmFsVWlPcHRpb25zKTtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gc2VsZWN0ZWRPcHRpb24gPj0gMCA/IHJldHJpZXZlZE9wdGlvbnNbc2VsZWN0ZWRPcHRpb25dIHx8IG51bGwgOiBudWxsO1xuICAgICAgICBsZXQgb3B0aW9uU2NoZW1hO1xuICAgICAgICBpZiAob3B0aW9uKSB7XG4gICAgICAgICAgICAvLyBtZXJnZSB0b3AgbGV2ZWwgcmVxdWlyZWQgZmllbGRcbiAgICAgICAgICAgIGNvbnN0IHsgcmVxdWlyZWQgfSA9IHNjaGVtYTtcbiAgICAgICAgICAgIC8vIE1lcmdlIGluIGFsbCB0aGUgbm9uLW9uZU9mL2FueU9mIHByb3BlcnRpZXMgYW5kIGFsc28gc2tpcCB0aGUgc3BlY2lhbCBBRERJVElPTkFMX1BST1BFUlRZX0ZMQUcgcHJvcGVydHlcbiAgICAgICAgICAgIG9wdGlvblNjaGVtYSA9IHJlcXVpcmVkID8gbWVyZ2VTY2hlbWFzKHsgcmVxdWlyZWQgfSwgb3B0aW9uKSA6IG9wdGlvbjtcbiAgICAgICAgfVxuICAgICAgICAvLyBGaXJzdCB3ZSB3aWxsIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBpcyBhbiBhbnlPZi9vbmVPZiBvdmVycmlkZSBmb3IgdGhlIFVJIHNjaGVtYVxuICAgICAgICBsZXQgb3B0aW9uc1VpU2NoZW1hID0gW107XG4gICAgICAgIGlmIChPTkVfT0ZfS0VZIGluIHNjaGVtYSAmJiB1aVNjaGVtYSAmJiBPTkVfT0ZfS0VZIGluIHVpU2NoZW1hKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh1aVNjaGVtYVtPTkVfT0ZfS0VZXSkpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zVWlTY2hlbWEgPSB1aVNjaGVtYVtPTkVfT0ZfS0VZXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgdWlTY2hlbWEub25lT2YgaXMgbm90IGFuIGFycmF5IGZvciBcIiR7dGl0bGUgfHwgbmFtZX1cImApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKEFOWV9PRl9LRVkgaW4gc2NoZW1hICYmIHVpU2NoZW1hICYmIEFOWV9PRl9LRVkgaW4gdWlTY2hlbWEpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHVpU2NoZW1hW0FOWV9PRl9LRVldKSkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnNVaVNjaGVtYSA9IHVpU2NoZW1hW0FOWV9PRl9LRVldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGB1aVNjaGVtYS5hbnlPZiBpcyBub3QgYW4gYXJyYXkgZm9yIFwiJHt0aXRsZSB8fCBuYW1lfVwiYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlbiB3ZSBwaWNrIHRoZSBvbmUgdGhhdCBtYXRjaGVzIHRoZSBzZWxlY3RlZCBvcHRpb24gaW5kZXgsIGlmIG9uZSBleGlzdHMgb3RoZXJ3aXNlIGRlZmF1bHQgdG8gdGhlIG1haW4gdWlTY2hlbWFcbiAgICAgICAgbGV0IG9wdGlvblVpU2NoZW1hID0gdWlTY2hlbWE7XG4gICAgICAgIGlmIChzZWxlY3RlZE9wdGlvbiA+PSAwICYmIG9wdGlvbnNVaVNjaGVtYS5sZW5ndGggPiBzZWxlY3RlZE9wdGlvbikge1xuICAgICAgICAgICAgb3B0aW9uVWlTY2hlbWEgPSBvcHRpb25zVWlTY2hlbWFbc2VsZWN0ZWRPcHRpb25dO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZUVudW0gPSB0aXRsZVxuICAgICAgICAgICAgPyBUcmFuc2xhdGFibGVTdHJpbmcuVGl0bGVPcHRpb25QcmVmaXhcbiAgICAgICAgICAgIDogVHJhbnNsYXRhYmxlU3RyaW5nLk9wdGlvblByZWZpeDtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRlUGFyYW1zID0gdGl0bGUgPyBbdGl0bGVdIDogW107XG4gICAgICAgIGNvbnN0IGVudW1PcHRpb25zID0gcmV0cmlldmVkT3B0aW9ucy5tYXAoKG9wdCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIC8vIEFsc28gc2VlIGlmIHRoZXJlIGlzIGFuIG92ZXJyaWRlIHRpdGxlIGluIHRoZSB1aVNjaGVtYSBmb3IgZWFjaCBvcHRpb24sIG90aGVyd2lzZSB1c2UgdGhlIHRpdGxlIGZyb20gdGhlIG9wdGlvblxuICAgICAgICAgICAgY29uc3QgeyB0aXRsZTogdWlUaXRsZSA9IG9wdC50aXRsZSB9ID0gZ2V0VWlPcHRpb25zKG9wdGlvbnNVaVNjaGVtYVtpbmRleF0pO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdWlUaXRsZSB8fCB0cmFuc2xhdGVTdHJpbmcodHJhbnNsYXRlRW51bSwgdHJhbnNsYXRlUGFyYW1zLmNvbmNhdChTdHJpbmcoaW5kZXggKyAxKSkpLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBpbmRleCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAncGFuZWwgcGFuZWwtZGVmYXVsdCBwYW5lbC1ib2R5JywgY2hpbGRyZW46IFtfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAnZm9ybS1ncm91cCcsIGNoaWxkcmVuOiBfanN4KFdpZGdldCwgeyBpZDogdGhpcy5nZXRGaWVsZElkKCksIG5hbWU6IGAke25hbWV9JHtzY2hlbWEub25lT2YgPyAnX19vbmVvZl9zZWxlY3QnIDogJ19fYW55b2Zfc2VsZWN0J31gLCBzY2hlbWE6IHsgdHlwZTogJ251bWJlcicsIGRlZmF1bHQ6IDAgfSwgb25DaGFuZ2U6IHRoaXMub25PcHRpb25DaGFuZ2UsIG9uQmx1cjogb25CbHVyLCBvbkZvY3VzOiBvbkZvY3VzLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgaXNFbXB0eShlbnVtT3B0aW9ucyksIG11bHRpcGxlOiBmYWxzZSwgcmF3RXJyb3JzOiByYXdFcnJvcnMsIGVycm9yU2NoZW1hOiBmaWVsZEVycm9yU2NoZW1hLCB2YWx1ZTogc2VsZWN0ZWRPcHRpb24gPj0gMCA/IHNlbGVjdGVkT3B0aW9uIDogdW5kZWZpbmVkLCBvcHRpb25zOiB7IGVudW1PcHRpb25zLCAuLi51aU9wdGlvbnMgfSwgcmVnaXN0cnk6IHJlZ2lzdHJ5LCBmb3JtQ29udGV4dDogZm9ybUNvbnRleHQsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgYXV0b2NvbXBsZXRlOiBhdXRvY29tcGxldGUsIGF1dG9mb2N1czogYXV0b2ZvY3VzLCBsYWJlbDogdGl0bGUgIT09IG51bGwgJiYgdGl0bGUgIT09IHZvaWQgMCA/IHRpdGxlIDogbmFtZSwgaGlkZUxhYmVsOiAhZGlzcGxheUxhYmVsIH0pIH0pLCBvcHRpb25TY2hlbWEgJiYgX2pzeChfU2NoZW1hRmllbGQsIHsgLi4udGhpcy5wcm9wcywgc2NoZW1hOiBvcHRpb25TY2hlbWEsIHVpU2NoZW1hOiBvcHRpb25VaVNjaGVtYSB9KV0gfSkpO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IEFueU9mRmllbGQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1NdWx0aVNjaGVtYUZpZWxkLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBhc051bWJlciB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8vIE1hdGNoZXMgYSBzdHJpbmcgdGhhdCBlbmRzIGluIGEgLiBjaGFyYWN0ZXIsIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSBzZXF1ZW5jZSBvZlxuLy8gZGlnaXRzIGZvbGxvd2VkIGJ5IGFueSBudW1iZXIgb2YgMCBjaGFyYWN0ZXJzIHVwIHVudGlsIHRoZSBlbmQgb2YgdGhlIGxpbmUuXG4vLyBFbnN1cmluZyB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwcmVmaXhlZCBjaGFyYWN0ZXIgaXMgaW1wb3J0YW50IHNvIHRoYXRcbi8vIHlvdSBkb24ndCBpbmNvcnJlY3RseSBtYXRjaCBhZ2FpbnN0IFwiMFwiLlxuY29uc3QgdHJhaWxpbmdDaGFyTWF0Y2hlcldpdGhQcmVmaXggPSAvXFwuKFswLTldKjApKiQvO1xuLy8gVGhpcyBpcyB1c2VkIGZvciB0cmltbWluZyB0aGUgdHJhaWxpbmcgMCBhbmQgLiBjaGFyYWN0ZXJzIHdpdGhvdXQgYWZmZWN0aW5nXG4vLyB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nLiBJdHMgcG9zc2libGUgdG8gdXNlIG9uZSBSZWdFeCB3aXRoIGdyb3VwcyBmb3IgdGhpc1xuLy8gZnVuY3Rpb25hbGl0eSwgYnV0IGl0IGlzIGZhaXJseSBjb21wbGV4IGNvbXBhcmVkIHRvIHNpbXBseSBkZWZpbmluZyB0d29cbi8vIGRpZmZlcmVudCBtYXRjaGVycy5cbmNvbnN0IHRyYWlsaW5nQ2hhck1hdGNoZXIgPSAvWzAuXTAqJC87XG4vKipcbiAqIFRoZSBOdW1iZXJGaWVsZCBjbGFzcyBoYXMgc29tZSBzcGVjaWFsIGhhbmRsaW5nIGZvciBkZWFsaW5nIHdpdGggdHJhaWxpbmdcbiAqIGRlY2ltYWwgcG9pbnRzIGFuZC9vciB6ZXJvZXMuIFRoaXMgbG9naWMgaXMgZGVzaWduZWQgdG8gYWxsb3cgdHJhaWxpbmcgdmFsdWVzXG4gKiB0byBiZSB2aXNpYmxlIGluIHRoZSBpbnB1dCBlbGVtZW50LCBidXQgbm90IGJlIHJlcHJlc2VudGVkIGluIHRoZVxuICogY29ycmVzcG9uZGluZyBmb3JtIGRhdGEuXG4gKlxuICogVGhlIGFsZ29yaXRobSBpcyBhcyBmb2xsb3dzOlxuICpcbiAqIDEuIFdoZW4gdGhlIGlucHV0IHZhbHVlIGNoYW5nZXMgdGhlIHZhbHVlIGlzIGNhY2hlZCBpbiB0aGUgY29tcG9uZW50IHN0YXRlXG4gKlxuICogMi4gVGhlIHZhbHVlIGlzIHRoZW4gbm9ybWFsaXplZCwgcmVtb3ZpbmcgdHJhaWxpbmcgZGVjaW1hbCBwb2ludHMgYW5kIHplcm9zLFxuICogICAgdGhlbiBwYXNzZWQgdG8gdGhlIFwib25DaGFuZ2VcIiBjYWxsYmFja1xuICpcbiAqIDMuIFdoZW4gdGhlIGNvbXBvbmVudCBpcyByZW5kZXJlZCwgdGhlIGZvcm1EYXRhIHZhbHVlIGlzIGNoZWNrZWQgYWdhaW5zdCB0aGVcbiAqICAgIHZhbHVlIGNhY2hlZCBpbiB0aGUgc3RhdGUuIElmIGl0IG1hdGNoZXMgdGhlIGNhY2hlZCB2YWx1ZSwgdGhlIGNhY2hlZFxuICogICAgdmFsdWUgaXMgcGFzc2VkIHRvIHRoZSBpbnB1dCBpbnN0ZWFkIG9mIHRoZSBmb3JtRGF0YSB2YWx1ZVxuICovXG5mdW5jdGlvbiBOdW1iZXJGaWVsZChwcm9wcykge1xuICAgIGNvbnN0IHsgcmVnaXN0cnksIG9uQ2hhbmdlLCBmb3JtRGF0YSwgdmFsdWU6IGluaXRpYWxWYWx1ZSB9ID0gcHJvcHM7XG4gICAgY29uc3QgW2xhc3RWYWx1ZSwgc2V0TGFzdFZhbHVlXSA9IHVzZVN0YXRlKGluaXRpYWxWYWx1ZSk7XG4gICAgY29uc3QgeyBTdHJpbmdGaWVsZCB9ID0gcmVnaXN0cnkuZmllbGRzO1xuICAgIGxldCB2YWx1ZSA9IGZvcm1EYXRhO1xuICAgIC8qKiBIYW5kbGUgdGhlIGNoYW5nZSBmcm9tIHRoZSBgU3RyaW5nRmllbGRgIHRvIHByb3Blcmx5IGNvbnZlcnQgdG8gYSBudW1iZXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBjdXJyZW50IHZhbHVlIGZvciB0aGUgY2hhbmdlIG9jY3VycmluZ1xuICAgICAqL1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKCh2YWx1ZSwgZXJyb3JTY2hlbWEsIGlkKSA9PiB7XG4gICAgICAgIC8vIENhY2hlIHRoZSBvcmlnaW5hbCB2YWx1ZSBpbiBjb21wb25lbnQgc3RhdGVcbiAgICAgICAgc2V0TGFzdFZhbHVlKHZhbHVlKTtcbiAgICAgICAgLy8gTm9ybWFsaXplIGRlY2ltYWxzIHRoYXQgZG9uJ3Qgc3RhcnQgd2l0aCBhIHplcm8gY2hhcmFjdGVyIGluIGFkdmFuY2Ugc29cbiAgICAgICAgLy8gdGhhdCB0aGUgcmVzdCBvZiB0aGUgbm9ybWFsaXphdGlvbiBsb2dpYyBpcyBzaW1wbGVyXG4gICAgICAgIGlmIChgJHt2YWx1ZX1gLmNoYXJBdCgwKSA9PT0gJy4nKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGAwJHt2YWx1ZX1gO1xuICAgICAgICB9XG4gICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIHZhbHVlIGlzIGEgc3RyaW5nICh0aGlzIGNhbiBoYXBwZW4gaWYgdGhlIHdpZGdldCB1c2VkIGlzIGFcbiAgICAgICAgLy8gPHNlbGVjdD4sIGR1ZSB0byBhbiBlbnVtIGRlY2xhcmF0aW9uIGV0YykgdGhlbiwgaWYgdGhlIHZhbHVlIGVuZHMgaW4gYVxuICAgICAgICAvLyB0cmFpbGluZyBkZWNpbWFsIHBvaW50IG9yIG11bHRpcGxlIHplcm9lcywgc3RyaXAgdGhlIHRyYWlsaW5nIHZhbHVlc1xuICAgICAgICBjb25zdCBwcm9jZXNzZWQgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLm1hdGNoKHRyYWlsaW5nQ2hhck1hdGNoZXJXaXRoUHJlZml4KVxuICAgICAgICAgICAgPyBhc051bWJlcih2YWx1ZS5yZXBsYWNlKHRyYWlsaW5nQ2hhck1hdGNoZXIsICcnKSlcbiAgICAgICAgICAgIDogYXNOdW1iZXIodmFsdWUpO1xuICAgICAgICBvbkNoYW5nZShwcm9jZXNzZWQsIGVycm9yU2NoZW1hLCBpZCk7XG4gICAgfSwgW29uQ2hhbmdlXSk7XG4gICAgaWYgKHR5cGVvZiBsYXN0VmFsdWUgPT09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgLy8gQ29uc3RydWN0IGEgcmVndWxhciBleHByZXNzaW9uIHRoYXQgY2hlY2tzIGZvciBhIHN0cmluZyB0aGF0IGNvbnNpc3RzXG4gICAgICAgIC8vIG9mIHRoZSBmb3JtRGF0YSB2YWx1ZSBzdWZmaXhlZCB3aXRoIHplcm8gb3Igb25lICcuJyBjaGFyYWN0ZXJzIGFuZCB6ZXJvXG4gICAgICAgIC8vIG9yIG1vcmUgJzAnIGNoYXJhY3RlcnNcbiAgICAgICAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKGBeKCR7U3RyaW5nKHZhbHVlKS5yZXBsYWNlKCcuJywgJ1xcXFwuJyl9KT9cXFxcLj8wKiRgKTtcbiAgICAgICAgLy8gSWYgdGhlIGNhY2hlZCBcImxhc3RWYWx1ZVwiIGlzIGEgbWF0Y2gsIHVzZSB0aGF0IGluc3RlYWQgb2YgdGhlIGZvcm1EYXRhXG4gICAgICAgIC8vIHZhbHVlIHRvIHByZXZlbnQgdGhlIGlucHV0IHZhbHVlIGZyb20gY2hhbmdpbmcgaW4gdGhlIFVJXG4gICAgICAgIGlmIChsYXN0VmFsdWUubWF0Y2gocmUpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGxhc3RWYWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gX2pzeChTdHJpbmdGaWVsZCwgeyAuLi5wcm9wcywgZm9ybURhdGE6IHZhbHVlLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlIH0pO1xufVxuZXhwb3J0IGRlZmF1bHQgTnVtYmVyRmllbGQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1OdW1iZXJGaWVsZC5qcy5tYXAiLCJpbXBvcnQqYXMgZSBmcm9tXCJyZWFjdFwiO2Z1bmN0aW9uIHQoKXtyZXR1cm4gdD1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfWNvbnN0IG49W1wiY2hpbGRyZW5cIixcIm9wdGlvbnNcIl0scj17YmxvY2tRdW90ZTpcIjBcIixicmVha0xpbmU6XCIxXCIsYnJlYWtUaGVtYXRpYzpcIjJcIixjb2RlQmxvY2s6XCIzXCIsY29kZUZlbmNlZDpcIjRcIixjb2RlSW5saW5lOlwiNVwiLGZvb3Rub3RlOlwiNlwiLGZvb3Rub3RlUmVmZXJlbmNlOlwiN1wiLGdmbVRhc2s6XCI4XCIsaGVhZGluZzpcIjlcIixoZWFkaW5nU2V0ZXh0OlwiMTBcIixodG1sQmxvY2s6XCIxMVwiLGh0bWxDb21tZW50OlwiMTJcIixodG1sU2VsZkNsb3Npbmc6XCIxM1wiLGltYWdlOlwiMTRcIixsaW5rOlwiMTVcIixsaW5rQW5nbGVCcmFjZVN0eWxlRGV0ZWN0b3I6XCIxNlwiLGxpbmtCYXJlVXJsRGV0ZWN0b3I6XCIxN1wiLGxpbmtNYWlsdG9EZXRlY3RvcjpcIjE4XCIsbmV3bGluZUNvYWxlc2NlcjpcIjE5XCIsb3JkZXJlZExpc3Q6XCIyMFwiLHBhcmFncmFwaDpcIjIxXCIscmVmOlwiMjJcIixyZWZJbWFnZTpcIjIzXCIscmVmTGluazpcIjI0XCIsdGFibGU6XCIyNVwiLHRhYmxlU2VwYXJhdG9yOlwiMjZcIix0ZXh0OlwiMjdcIix0ZXh0Qm9sZGVkOlwiMjhcIix0ZXh0RW1waGFzaXplZDpcIjI5XCIsdGV4dEVzY2FwZWQ6XCIzMFwiLHRleHRNYXJrZWQ6XCIzMVwiLHRleHRTdHJpa2V0aHJvdWdoZWQ6XCIzMlwiLHVub3JkZXJlZExpc3Q6XCIzM1wifTt2YXIgaTshZnVuY3Rpb24oZSl7ZVtlLk1BWD0wXT1cIk1BWFwiLGVbZS5ISUdIPTFdPVwiSElHSFwiLGVbZS5NRUQ9Ml09XCJNRURcIixlW2UuTE9XPTNdPVwiTE9XXCIsZVtlLk1JTj00XT1cIk1JTlwifShpfHwoaT17fSkpO2NvbnN0IGw9W1wiYWxsb3dGdWxsU2NyZWVuXCIsXCJhbGxvd1RyYW5zcGFyZW5jeVwiLFwiYXV0b0NvbXBsZXRlXCIsXCJhdXRvRm9jdXNcIixcImF1dG9QbGF5XCIsXCJjZWxsUGFkZGluZ1wiLFwiY2VsbFNwYWNpbmdcIixcImNoYXJTZXRcIixcImNsYXNzSWRcIixcImNvbFNwYW5cIixcImNvbnRlbnRFZGl0YWJsZVwiLFwiY29udGV4dE1lbnVcIixcImNyb3NzT3JpZ2luXCIsXCJlbmNUeXBlXCIsXCJmb3JtQWN0aW9uXCIsXCJmb3JtRW5jVHlwZVwiLFwiZm9ybU1ldGhvZFwiLFwiZm9ybU5vVmFsaWRhdGVcIixcImZvcm1UYXJnZXRcIixcImZyYW1lQm9yZGVyXCIsXCJocmVmTGFuZ1wiLFwiaW5wdXRNb2RlXCIsXCJrZXlQYXJhbXNcIixcImtleVR5cGVcIixcIm1hcmdpbkhlaWdodFwiLFwibWFyZ2luV2lkdGhcIixcIm1heExlbmd0aFwiLFwibWVkaWFHcm91cFwiLFwibWluTGVuZ3RoXCIsXCJub1ZhbGlkYXRlXCIsXCJyYWRpb0dyb3VwXCIsXCJyZWFkT25seVwiLFwicm93U3BhblwiLFwic3BlbGxDaGVja1wiLFwic3JjRG9jXCIsXCJzcmNMYW5nXCIsXCJzcmNTZXRcIixcInRhYkluZGV4XCIsXCJ1c2VNYXBcIl0ucmVkdWNlKChlLHQpPT4oZVt0LnRvTG93ZXJDYXNlKCldPXQsZSkse2NsYXNzOlwiY2xhc3NOYW1lXCIsZm9yOlwiaHRtbEZvclwifSksYT17YW1wOlwiJlwiLGFwb3M6XCInXCIsZ3Q6XCI+XCIsbHQ6XCI8XCIsbmJzcDpcIsKgXCIscXVvdDpcIuKAnFwifSxvPVtcInN0eWxlXCIsXCJzY3JpcHRcIl0sYz0vKFstQS1aMC05XzpdKykoPzpcXHMqPVxccyooPzooPzpcIigoPzpcXFxcLnxbXlwiXSkqKVwiKXwoPzonKCg/OlxcXFwufFteJ10pKiknKXwoPzpcXHsoKD86XFxcXC58e1tefV0qP318W159XSkqKVxcfSkpKT8vZ2kscz0vbWFpbHRvOi9pLGQ9L1xcbnsyLH0kLyxwPS9eKFxccyo+W1xcc1xcU10qPykoPz1cXG5cXG58JCkvLHU9L14gKj4gPy9nbSxmPS9eKD86XFxbIShbXlxcXV0qKVxcXVxcbik/KFtcXHNcXFNdKikvLGg9L14gezIsfVxcbi8sbT0vXig/OiggKlstKl9dKSl7Myx9ICooPzpcXG4gKikrXFxuLyxnPS9eKD86IHsxLDN9KT8oYHszLH18fnszLH0pICooXFxTKyk/ICooW15cXG5dKj8pP1xcbihbXFxzXFxTXSo/KSg/OlxcMVxcbj98JCkvLHk9L14oPzogezR9W15cXG5dK1xcbiopKyg/OlxcbiAqKStcXG4/LyxrPS9eKGArKVxccyooW1xcc1xcU10qP1teYF0pXFxzKlxcMSg/IWApLyx4PS9eKD86XFxuICopKlxcbi8sYj0vXFxyXFxuPy9nLHY9L15cXFtcXF4oW15cXF1dKyldKDooLiopKChcXG4rIHs0LH0uKil8KFxcbig/IVxcW1xcXikuKykpKikvLFM9L15cXFtcXF4oW15cXF1dKyldLyxDPS9cXGYvZywkPS9eLS0tWyBcXHRdKlxcbigufFxcbikqXFxuLS0tWyBcXHRdKlxcbi8sRT0vXlxccyo/XFxbKHh8XFxzKVxcXS8sdz0vXiAqKCN7MSw2fSkgKihbXlxcbl0rPykoPzogKyMqKT8oPzpcXG4gKikqKD86XFxufCQpLyx6PS9eICooI3sxLDZ9KSArKFteXFxuXSs/KSg/OiArIyopPyg/OlxcbiAqKSooPzpcXG58JCkvLEw9L14oW15cXG5dKylcXG4gKig9fC0pezMsfSAqKD86XFxuICopK1xcbi8sQT0vXiAqKD8hPFthLXpdW14gPi9dKiA/XFwvPik8KFthLXpdW14gPi9dKikgPygoPzpbXj5dKlteL10pPyk+XFxuPyhcXHMqKD86PFxcMVtePl0qPz5bXFxzXFxTXSo/PFxcL1xcMT58KD8hPFxcMVxcYilbXFxzXFxTXSkqPyk8XFwvXFwxPig/ITxcXC9cXDE+KVxcbiovaSxUPS8mKFthLXowLTldK3wjWzAtOV17MSw2fXwjeFswLTlhLWZBLUZdezEsNn0pOy9naSxPPS9ePCEtLVtcXHNcXFNdKj8oPzotLT4pLyxCPS9eKGRhdGF8YXJpYXx4KS1bYS16X11bYS16XFxkXy4tXSokLyxNPS9eICo8KFthLXpdW2EtejAtOTpdKikoPzpcXHMrKCg/OjwuKj8+fFtePl0pKikpP1xcLz8+KD8hPFxcL1xcMT4pKFxccypcXG4pPy9pLFI9L15cXHsuKlxcfSQvLEk9L14oaHR0cHM/OlxcL1xcL1teXFxzPF0rW148Liw6O1wiJylcXF1cXHNdKS8sVT0vXjwoW14gPl0rQFteID5dKyk+LyxEPS9ePChbXiA+XSs6XFwvW14gPl0rKT4vLE49Ly0oW2Etel0pPy9naSxqPS9eKFxcfC4qKVxcbig/OiAqKFxcfD8gKlstOl0rICpcXHxbLXwgOl0qKVxcbigoPzouKlxcfC4qXFxuKSopKT9cXG4/LyxIPS9eXFxbKFteXFxdXSopXFxdOlxccys8PyhbXlxccz5dKyk+P1xccyooXCIoW15cIl0qKVwiKT8vLFA9L14hXFxbKFteXFxdXSopXFxdID9cXFsoW15cXF1dKilcXF0vLEY9L15cXFsoW15cXF1dKilcXF0gP1xcWyhbXlxcXV0qKVxcXS8sXz0vKFxcbnxeWy0qXVxcc3xeI3xeIHsyLH18Xi17Mix9fF4+XFxzKS8sRz0vXFx0L2csVz0vKF4gKlxcfHxcXHwgKiQpL2csWj0vXiAqOi0rOiAqJC8scT0vXiAqOi0rICokLyxRPS9eICotKzogKiQvLFY9XCIoKD86XFxcXFsuKj9cXFxcXVsoW10uKj9bKVxcXFxdXXw8Lio/Pig/Oi4qPzwuKj8+KT98YC4qP2B8fn4uKj9+fnw9PS4qPz09fC58XFxcXG4pKj8pXCIsWD1uZXcgUmVnRXhwKGBeKFsqX10pXFxcXDEke1Z9XFxcXDFcXFxcMSg/IVxcXFwxKWApLEo9bmV3IFJlZ0V4cChgXihbKl9dKSR7Vn1cXFxcMSg/IVxcXFwxfFxcXFx3KWApLEs9bmV3IFJlZ0V4cChgXj09JHtWfT09YCksWT1uZXcgUmVnRXhwKGBefn4ke1Z9fn5gKSxlZT0vXlxcXFwoW14wLTlBLVphLXpcXHNdKS8sdGU9L15bXFxzXFxTXSs/KD89W14wLTlBLVpcXHNcXHUwMGMwLVxcdWZmZmYmIzsuKCknXCJdfFxcZCtcXC58XFxuXFxufCB7Mix9XFxufFxcdys6XFxTfCQpL2ksbmU9L15cXG4rLyxyZT0vXihbIFxcdF0qKS8saWU9L1xcXFwoW15cXFxcXSkvZyxsZT0vICpcXG4rJC8sYWU9Lyg/Ol58XFxuKSggKikkLyxvZT1cIig/OlxcXFxkK1xcXFwuKVwiLGNlPVwiKD86WyorLV0pXCI7ZnVuY3Rpb24gc2UoZSl7cmV0dXJuXCIoICopKFwiKygxPT09ZT9vZTpjZSkrXCIpICtcIn1jb25zdCBkZT1zZSgxKSxwZT1zZSgyKTtmdW5jdGlvbiB1ZShlKXtyZXR1cm4gbmV3IFJlZ0V4cChcIl5cIisoMT09PWU/ZGU6cGUpKX1jb25zdCBmZT11ZSgxKSxoZT11ZSgyKTtmdW5jdGlvbiBtZShlKXtyZXR1cm4gbmV3IFJlZ0V4cChcIl5cIisoMT09PWU/ZGU6cGUpK1wiW15cXFxcbl0qKD86XFxcXG4oPyFcXFxcMVwiKygxPT09ZT9vZTpjZSkrXCIgKVteXFxcXG5dKikqKFxcXFxufCQpXCIsXCJnbVwiKX1jb25zdCBnZT1tZSgxKSx5ZT1tZSgyKTtmdW5jdGlvbiBrZShlKXtjb25zdCB0PTE9PT1lP29lOmNlO3JldHVybiBuZXcgUmVnRXhwKFwiXiggKikoXCIrdCtcIikgW1xcXFxzXFxcXFNdKz8oPzpcXFxcbnsyLH0oPyEgKSg/IVxcXFwxXCIrdCtcIiAoPyFcIit0K1wiICkpXFxcXG4qfFxcXFxzKlxcXFxuKiQpXCIpfWNvbnN0IHhlPWtlKDEpLGJlPWtlKDIpO2Z1bmN0aW9uIHZlKGUsdCl7Y29uc3Qgbj0xPT09dCxpPW4/eGU6YmUsbD1uP2dlOnllLGE9bj9mZTpoZTtyZXR1cm57bWF0Y2goZSx0KXtjb25zdCBuPWFlLmV4ZWModC5wcmV2Q2FwdHVyZSk7cmV0dXJuIG4mJih0Lmxpc3R8fCF0LmlubGluZSYmIXQuc2ltcGxlKT9pLmV4ZWMoZT1uWzFdK2UpOm51bGx9LG9yZGVyOjEscGFyc2UoZSx0LHIpe2NvbnN0IGk9bj8rZVsyXTp2b2lkIDAsbz1lWzBdLnJlcGxhY2UoZCxcIlxcblwiKS5tYXRjaChsKTtsZXQgYz0hMTtyZXR1cm57aXRlbXM6by5tYXAoZnVuY3Rpb24oZSxuKXtjb25zdCBpPWEuZXhlYyhlKVswXS5sZW5ndGgsbD1uZXcgUmVnRXhwKFwiXiB7MSxcIitpK1wifVwiLFwiZ21cIikscz1lLnJlcGxhY2UobCxcIlwiKS5yZXBsYWNlKGEsXCJcIiksZD1uPT09by5sZW5ndGgtMSxwPS0xIT09cy5pbmRleE9mKFwiXFxuXFxuXCIpfHxkJiZjO2M9cDtjb25zdCB1PXIuaW5saW5lLGY9ci5saXN0O2xldCBoO3IubGlzdD0hMCxwPyhyLmlubGluZT0hMSxoPXMucmVwbGFjZShsZSxcIlxcblxcblwiKSk6KHIuaW5saW5lPSEwLGg9cy5yZXBsYWNlKGxlLFwiXCIpKTtjb25zdCBtPXQoaCxyKTtyZXR1cm4gci5pbmxpbmU9dSxyLmxpc3Q9ZixtfSksb3JkZXJlZDpuLHN0YXJ0Oml9fSxyZW5kZXI6KHQsbixpKT0+ZSh0Lm9yZGVyZWQ/XCJvbFwiOlwidWxcIix7a2V5Omkua2V5LHN0YXJ0OnQudHlwZT09PXIub3JkZXJlZExpc3Q/dC5zdGFydDp2b2lkIDB9LHQuaXRlbXMubWFwKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUoXCJsaVwiLHtrZXk6cn0sbih0LGkpKX0pKX19Y29uc3QgU2U9bmV3IFJlZ0V4cChcIl5cXFxcWygoPzpcXFxcW1teXFxcXF1dKlxcXFxdfFteXFxcXFtcXFxcXV18XFxcXF0oPz1bXlxcXFxbXSpcXFxcXSkpKilcXFxcXVxcXFwoXFxcXHMqPD8oKD86XFxcXChbXildKlxcXFwpfFteXFxcXHNcXFxcXFxcXF18XFxcXFxcXFwuKSo/KT4/KD86XFxcXHMrWydcXFwiXShbXFxcXHNcXFxcU10qPylbJ1xcXCJdKT9cXFxccypcXFxcKVwiKSxDZT0vXiFcXFsoLio/KVxcXVxcKCAqKCg/OlxcKFteKV0qXFwpfFteKCkgXSkqKSAqXCI/KFteKVwiXSopP1wiP1xcKS8sJGU9W3AsZyx5LHcsTCx6LE8saixnZSx4ZSx5ZSxiZV0sRWU9Wy4uLiRlLC9eW15cXG5dKyg/OiAgXFxufFxcbnsyLH0pLyxBLE1dO2Z1bmN0aW9uIHdlKGUpe3JldHVybiBlLnJlcGxhY2UoL1vDgMOBw4LDg8OEw4XDoMOhw6LDo8Okw6XDpsOGXS9nLFwiYVwiKS5yZXBsYWNlKC9bw6fDh10vZyxcImNcIikucmVwbGFjZSgvW8Oww5BdL2csXCJkXCIpLnJlcGxhY2UoL1vDiMOJw4rDi8Opw6jDqsOrXS9nLFwiZVwiKS5yZXBsYWNlKC9bw4/Dr8OOw67DjcOtw4zDrF0vZyxcImlcIikucmVwbGFjZSgvW8ORw7FdL2csXCJuXCIpLnJlcGxhY2UoL1vDuMOYxZPFksOVw7XDlMO0w5PDs8OSw7JdL2csXCJvXCIpLnJlcGxhY2UoL1vDnMO8w5vDu8Oaw7rDmcO5XS9nLFwidVwiKS5yZXBsYWNlKC9bxbjDv8Odw71dL2csXCJ5XCIpLnJlcGxhY2UoL1teYS16MC05LSBdL2dpLFwiXCIpLnJlcGxhY2UoLyAvZ2ksXCItXCIpLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gemUoZSl7cmV0dXJuIFEudGVzdChlKT9cInJpZ2h0XCI6Wi50ZXN0KGUpP1wiY2VudGVyXCI6cS50ZXN0KGUpP1wibGVmdFwiOm51bGx9ZnVuY3Rpb24gTGUoZSx0LG4saSl7Y29uc3QgbD1uLmluVGFibGU7bi5pblRhYmxlPSEwO2xldCBhPWUudHJpbSgpLnNwbGl0KC8oICooPzpgW15gXSpgfFxcXFxcXHx8XFx8KSAqKS8pLnJlZHVjZSgoZSxsKT0+KFwifFwiPT09bC50cmltKCk/ZS5wdXNoKGk/e3R5cGU6ci50YWJsZVNlcGFyYXRvcn06e3R5cGU6ci50ZXh0LHRleHQ6bH0pOlwiXCIhPT1sJiZlLnB1c2guYXBwbHkoZSx0KGwsbikpLGUpLFtdKTtuLmluVGFibGU9bDtsZXQgbz1bW11dO3JldHVybiBhLmZvckVhY2goZnVuY3Rpb24oZSx0KXtlLnR5cGU9PT1yLnRhYmxlU2VwYXJhdG9yPzAhPT10JiZ0IT09YS5sZW5ndGgtMSYmby5wdXNoKFtdKTooZS50eXBlIT09ci50ZXh0fHxudWxsIT1hW3QrMV0mJmFbdCsxXS50eXBlIT09ci50YWJsZVNlcGFyYXRvcnx8KGUudGV4dD1lLnRleHQudHJpbUVuZCgpKSxvW28ubGVuZ3RoLTFdLnB1c2goZSkpfSksb31mdW5jdGlvbiBBZShlLHQsbil7bi5pbmxpbmU9ITA7Y29uc3QgaT1lWzJdP2VbMl0ucmVwbGFjZShXLFwiXCIpLnNwbGl0KFwifFwiKS5tYXAoemUpOltdLGw9ZVszXT9mdW5jdGlvbihlLHQsbil7cmV0dXJuIGUudHJpbSgpLnNwbGl0KFwiXFxuXCIpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gTGUoZSx0LG4sITApfSl9KGVbM10sdCxuKTpbXSxhPUxlKGVbMV0sdCxuLCEhbC5sZW5ndGgpO3JldHVybiBuLmlubGluZT0hMSxsLmxlbmd0aD97YWxpZ246aSxjZWxsczpsLGhlYWRlcjphLHR5cGU6ci50YWJsZX06e2NoaWxkcmVuOmEsdHlwZTpyLnBhcmFncmFwaH19ZnVuY3Rpb24gVGUoZSx0KXtyZXR1cm4gbnVsbD09ZS5hbGlnblt0XT97fTp7dGV4dEFsaWduOmUuYWxpZ25bdF19fWZ1bmN0aW9uIE9lKGUpe3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiBuLmlubGluZT9lLmV4ZWModCk6bnVsbH19ZnVuY3Rpb24gQmUoZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIG4uaW5saW5lfHxuLnNpbXBsZT9lLmV4ZWModCk6bnVsbH19ZnVuY3Rpb24gTWUoZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIG4uaW5saW5lfHxuLnNpbXBsZT9udWxsOmUuZXhlYyh0KX19ZnVuY3Rpb24gUmUoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmV4ZWModCl9fWZ1bmN0aW9uIEllKGUsdCl7aWYodC5pbmxpbmV8fHQuc2ltcGxlKXJldHVybiBudWxsO2xldCBuPVwiXCI7ZS5zcGxpdChcIlxcblwiKS5ldmVyeShlPT4hJGUuc29tZSh0PT50LnRlc3QoZSkpJiYobis9ZStcIlxcblwiLGUudHJpbSgpKSk7Y29uc3Qgcj1uLnRyaW1FbmQoKTtyZXR1cm5cIlwiPT1yP251bGw6W24scl19ZnVuY3Rpb24gVWUoZSl7dHJ5e2lmKGRlY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKC9bXkEtWmEtejAtOS86XS9nLFwiXCIpLm1hdGNoKC9eXFxzKihqYXZhc2NyaXB0fHZic2NyaXB0fGRhdGEoPyE6aW1hZ2UpKTovaSkpcmV0dXJuIG51bGx9Y2F0Y2goZSl7cmV0dXJuIG51bGx9cmV0dXJuIGV9ZnVuY3Rpb24gRGUoZSl7cmV0dXJuIGUucmVwbGFjZShpZSxcIiQxXCIpfWZ1bmN0aW9uIE5lKGUsdCxuKXtjb25zdCByPW4uaW5saW5lfHwhMSxpPW4uc2ltcGxlfHwhMTtuLmlubGluZT0hMCxuLnNpbXBsZT0hMDtjb25zdCBsPWUodCxuKTtyZXR1cm4gbi5pbmxpbmU9cixuLnNpbXBsZT1pLGx9ZnVuY3Rpb24gamUoZSx0LG4pe2NvbnN0IHI9bi5pbmxpbmV8fCExLGk9bi5zaW1wbGV8fCExO24uaW5saW5lPSExLG4uc2ltcGxlPSEwO2NvbnN0IGw9ZSh0LG4pO3JldHVybiBuLmlubGluZT1yLG4uc2ltcGxlPWksbH1mdW5jdGlvbiBIZShlLHQsbil7Y29uc3Qgcj1uLmlubGluZXx8ITE7bi5pbmxpbmU9ITE7Y29uc3QgaT1lKHQsbik7cmV0dXJuIG4uaW5saW5lPXIsaX1jb25zdCBQZT0oZSx0LG4pPT4oe2NoaWxkcmVuOk5lKHQsZVsxXSxuKX0pO2Z1bmN0aW9uIEZlKCl7cmV0dXJue319ZnVuY3Rpb24gX2UoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBHZSguLi5lKXtyZXR1cm4gZS5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIil9ZnVuY3Rpb24gV2UoZSx0LG4pe2xldCByPWU7Y29uc3QgaT10LnNwbGl0KFwiLlwiKTtmb3IoO2kubGVuZ3RoJiYocj1yW2lbMF1dLHZvaWQgMCE9PXIpOylpLnNoaWZ0KCk7cmV0dXJuIHJ8fG59ZnVuY3Rpb24gWmUobj1cIlwiLGk9e30pe2Z1bmN0aW9uIGQoZSxuLC4uLnIpe2NvbnN0IGw9V2UoaS5vdmVycmlkZXMsYCR7ZX0ucHJvcHNgLHt9KTtyZXR1cm4gaS5jcmVhdGVFbGVtZW50KGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1XZSh0LGUpO3JldHVybiBuP1wiZnVuY3Rpb25cIj09dHlwZW9mIG58fFwib2JqZWN0XCI9PXR5cGVvZiBuJiZcInJlbmRlclwiaW4gbj9uOldlKHQsYCR7ZX0uY29tcG9uZW50YCxlKTplfShlLGkub3ZlcnJpZGVzKSx0KHt9LG4sbCx7Y2xhc3NOYW1lOkdlKG51bGw9PW4/dm9pZCAwOm4uY2xhc3NOYW1lLGwuY2xhc3NOYW1lKXx8dm9pZCAwfSksLi4ucil9ZnVuY3Rpb24gVyhlKXtlPWUucmVwbGFjZSgkLFwiXCIpO2xldCB0PSExO2kuZm9yY2VJbmxpbmU/dD0hMDppLmZvcmNlQmxvY2t8fCh0PSExPT09Xy50ZXN0KGUpKTtjb25zdCBuPWxlKGllKHQ/ZTpgJHtlLnRyaW1FbmQoKS5yZXBsYWNlKG5lLFwiXCIpfVxcblxcbmAse2lubGluZTp0fSkpO2Zvcig7XCJzdHJpbmdcIj09dHlwZW9mIG5bbi5sZW5ndGgtMV0mJiFuW24ubGVuZ3RoLTFdLnRyaW0oKTspbi5wb3AoKTtpZihudWxsPT09aS53cmFwcGVyKXJldHVybiBuO2NvbnN0IHI9aS53cmFwcGVyfHwodD9cInNwYW5cIjpcImRpdlwiKTtsZXQgbDtpZihuLmxlbmd0aD4xfHxpLmZvcmNlV3JhcHBlcilsPW47ZWxzZXtpZigxPT09bi5sZW5ndGgpcmV0dXJuIGw9blswXSxcInN0cmluZ1wiPT10eXBlb2YgbD9kKFwic3BhblwiLHtrZXk6XCJvdXRlclwifSxsKTpsO2w9bnVsbH1yZXR1cm4gaS5jcmVhdGVFbGVtZW50KHIse2tleTpcIm91dGVyXCJ9LGwpfWZ1bmN0aW9uIFooZSx0KXtjb25zdCBuPXQubWF0Y2goYyk7cmV0dXJuIG4/bi5yZWR1Y2UoZnVuY3Rpb24odCxuKXtjb25zdCByPW4uaW5kZXhPZihcIj1cIik7aWYoLTEhPT1yKXtjb25zdCBhPWZ1bmN0aW9uKGUpe3JldHVybi0xIT09ZS5pbmRleE9mKFwiLVwiKSYmbnVsbD09PWUubWF0Y2goQikmJihlPWUucmVwbGFjZShOLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX0pKSxlfShuLnNsaWNlKDAscikpLnRyaW0oKSxvPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZVswXTtyZXR1cm4oJ1wiJz09PXR8fFwiJ1wiPT09dCkmJmUubGVuZ3RoPj0yJiZlW2UubGVuZ3RoLTFdPT09dD9lLnNsaWNlKDEsLTEpOmV9KG4uc2xpY2UocisxKS50cmltKCkpLGM9bFthXXx8YTtpZihcInJlZlwiPT09YylyZXR1cm4gdDtjb25zdCBzPXRbY109ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuXCJzdHlsZVwiPT09dD9uLnNwbGl0KC87XFxzPy8pLnJlZHVjZShmdW5jdGlvbihlLHQpe2NvbnN0IG49dC5zbGljZSgwLHQuaW5kZXhPZihcIjpcIikpO3JldHVybiBlW24udHJpbSgpLnJlcGxhY2UoLygtW2Etel0pL2csZT0+ZVsxXS50b1VwcGVyQ2FzZSgpKV09dC5zbGljZShuLmxlbmd0aCsxKS50cmltKCksZX0se30pOlwiaHJlZlwiPT09dHx8XCJzcmNcIj09PXQ/cihuLGUsdCk6KG4ubWF0Y2goUikmJihuPW4uc2xpY2UoMSxuLmxlbmd0aC0xKSksXCJ0cnVlXCI9PT1ufHxcImZhbHNlXCIhPT1uJiZuKX0oZSxhLG8saS5zYW5pdGl6ZXIpO1wic3RyaW5nXCI9PXR5cGVvZiBzJiYoQS50ZXN0KHMpfHxNLnRlc3QocykpJiYodFtjXT1XKHMudHJpbSgpKSl9ZWxzZVwic3R5bGVcIiE9PW4mJih0W2xbbl18fG5dPSEwKTtyZXR1cm4gdH0se30pOm51bGx9aS5vdmVycmlkZXM9aS5vdmVycmlkZXN8fHt9LGkuc2FuaXRpemVyPWkuc2FuaXRpemVyfHxVZSxpLnNsdWdpZnk9aS5zbHVnaWZ5fHx3ZSxpLm5hbWVkQ29kZXNUb1VuaWNvZGU9aS5uYW1lZENvZGVzVG9Vbmljb2RlP3Qoe30sYSxpLm5hbWVkQ29kZXNUb1VuaWNvZGUpOmEsaS5jcmVhdGVFbGVtZW50PWkuY3JlYXRlRWxlbWVudHx8ZS5jcmVhdGVFbGVtZW50O2NvbnN0IHE9W10sUT17fSxWPXtbci5ibG9ja1F1b3RlXTp7bWF0Y2g6TWUocCksb3JkZXI6MSxwYXJzZShlLHQsbil7Y29uc3RbLHIsaV09ZVswXS5yZXBsYWNlKHUsXCJcIikubWF0Y2goZik7cmV0dXJue2FsZXJ0OnIsY2hpbGRyZW46dChpLG4pfX0scmVuZGVyKGUsdCxuKXtjb25zdCBsPXtrZXk6bi5rZXl9O3JldHVybiBlLmFsZXJ0JiYobC5jbGFzc05hbWU9XCJtYXJrZG93bi1hbGVydC1cIitpLnNsdWdpZnkoZS5hbGVydC50b0xvd2VyQ2FzZSgpLHdlKSxlLmNoaWxkcmVuLnVuc2hpZnQoe2F0dHJzOnt9LGNoaWxkcmVuOlt7dHlwZTpyLnRleHQsdGV4dDplLmFsZXJ0fV0sbm9Jbm5lclBhcnNlOiEwLHR5cGU6ci5odG1sQmxvY2ssdGFnOlwiaGVhZGVyXCJ9KSksZChcImJsb2NrcXVvdGVcIixsLHQoZS5jaGlsZHJlbixuKSl9fSxbci5icmVha0xpbmVdOnttYXRjaDpSZShoKSxvcmRlcjoxLHBhcnNlOkZlLHJlbmRlcjooZSx0LG4pPT5kKFwiYnJcIix7a2V5Om4ua2V5fSl9LFtyLmJyZWFrVGhlbWF0aWNdOnttYXRjaDpNZShtKSxvcmRlcjoxLHBhcnNlOkZlLHJlbmRlcjooZSx0LG4pPT5kKFwiaHJcIix7a2V5Om4ua2V5fSl9LFtyLmNvZGVCbG9ja106e21hdGNoOk1lKHkpLG9yZGVyOjAscGFyc2U6ZT0+KHtsYW5nOnZvaWQgMCx0ZXh0OmVbMF0ucmVwbGFjZSgvXiB7NH0vZ20sXCJcIikucmVwbGFjZSgvXFxuKyQvLFwiXCIpfSkscmVuZGVyOihlLG4scik9PmQoXCJwcmVcIix7a2V5OnIua2V5fSxkKFwiY29kZVwiLHQoe30sZS5hdHRycyx7Y2xhc3NOYW1lOmUubGFuZz9gbGFuZy0ke2UubGFuZ31gOlwiXCJ9KSxlLnRleHQpKX0sW3IuY29kZUZlbmNlZF06e21hdGNoOk1lKGcpLG9yZGVyOjAscGFyc2U6ZT0+KHthdHRyczpaKFwiY29kZVwiLGVbM118fFwiXCIpLGxhbmc6ZVsyXXx8dm9pZCAwLHRleHQ6ZVs0XSx0eXBlOnIuY29kZUJsb2NrfSl9LFtyLmNvZGVJbmxpbmVdOnttYXRjaDpCZShrKSxvcmRlcjozLHBhcnNlOmU9Pih7dGV4dDplWzJdfSkscmVuZGVyOihlLHQsbik9PmQoXCJjb2RlXCIse2tleTpuLmtleX0sZS50ZXh0KX0sW3IuZm9vdG5vdGVdOnttYXRjaDpNZSh2KSxvcmRlcjowLHBhcnNlOmU9PihxLnB1c2goe2Zvb3Rub3RlOmVbMl0saWRlbnRpZmllcjplWzFdfSkse30pLHJlbmRlcjpfZX0sW3IuZm9vdG5vdGVSZWZlcmVuY2VdOnttYXRjaDpPZShTKSxvcmRlcjoxLHBhcnNlOmU9Pih7dGFyZ2V0OmAjJHtpLnNsdWdpZnkoZVsxXSx3ZSl9YCx0ZXh0OmVbMV19KSxyZW5kZXI6KGUsdCxuKT0+ZChcImFcIix7a2V5Om4ua2V5LGhyZWY6aS5zYW5pdGl6ZXIoZS50YXJnZXQsXCJhXCIsXCJocmVmXCIpfSxkKFwic3VwXCIse2tleTpuLmtleX0sZS50ZXh0KSl9LFtyLmdmbVRhc2tdOnttYXRjaDpPZShFKSxvcmRlcjoxLHBhcnNlOmU9Pih7Y29tcGxldGVkOlwieFwiPT09ZVsxXS50b0xvd2VyQ2FzZSgpfSkscmVuZGVyOihlLHQsbik9PmQoXCJpbnB1dFwiLHtjaGVja2VkOmUuY29tcGxldGVkLGtleTpuLmtleSxyZWFkT25seTohMCx0eXBlOlwiY2hlY2tib3hcIn0pfSxbci5oZWFkaW5nXTp7bWF0Y2g6TWUoaS5lbmZvcmNlQXR4SGVhZGluZ3M/ejp3KSxvcmRlcjoxLHBhcnNlOihlLHQsbik9Pih7Y2hpbGRyZW46TmUodCxlWzJdLG4pLGlkOmkuc2x1Z2lmeShlWzJdLHdlKSxsZXZlbDplWzFdLmxlbmd0aH0pLHJlbmRlcjooZSx0LG4pPT5kKGBoJHtlLmxldmVsfWAse2lkOmUuaWQsa2V5Om4ua2V5fSx0KGUuY2hpbGRyZW4sbikpfSxbci5oZWFkaW5nU2V0ZXh0XTp7bWF0Y2g6TWUoTCksb3JkZXI6MCxwYXJzZTooZSx0LG4pPT4oe2NoaWxkcmVuOk5lKHQsZVsxXSxuKSxsZXZlbDpcIj1cIj09PWVbMl0/MToyLHR5cGU6ci5oZWFkaW5nfSl9LFtyLmh0bWxCbG9ja106e21hdGNoOlJlKEEpLG9yZGVyOjEscGFyc2UoZSx0LG4pe2NvbnN0WyxyXT1lWzNdLm1hdGNoKHJlKSxpPW5ldyBSZWdFeHAoYF4ke3J9YCxcImdtXCIpLGw9ZVszXS5yZXBsYWNlKGksXCJcIiksYT0oYz1sLEVlLnNvbWUoZT0+ZS50ZXN0KGMpKT9IZTpOZSk7dmFyIGM7Y29uc3Qgcz1lWzFdLnRvTG93ZXJDYXNlKCksZD0tMSE9PW8uaW5kZXhPZihzKSxwPShkP3M6ZVsxXSkudHJpbSgpLHU9e2F0dHJzOloocCxlWzJdKSxub0lubmVyUGFyc2U6ZCx0YWc6cH07cmV0dXJuIG4uaW5BbmNob3I9bi5pbkFuY2hvcnx8XCJhXCI9PT1zLGQ/dS50ZXh0PWVbM106dS5jaGlsZHJlbj1hKHQsbCxuKSxuLmluQW5jaG9yPSExLHV9LHJlbmRlcjooZSxuLHIpPT5kKGUudGFnLHQoe2tleTpyLmtleX0sZS5hdHRycyksZS50ZXh0fHwoZS5jaGlsZHJlbj9uKGUuY2hpbGRyZW4scik6XCJcIikpfSxbci5odG1sU2VsZkNsb3NpbmddOnttYXRjaDpSZShNKSxvcmRlcjoxLHBhcnNlKGUpe2NvbnN0IHQ9ZVsxXS50cmltKCk7cmV0dXJue2F0dHJzOloodCxlWzJdfHxcIlwiKSx0YWc6dH19LHJlbmRlcjooZSxuLHIpPT5kKGUudGFnLHQoe30sZS5hdHRycyx7a2V5OnIua2V5fSkpfSxbci5odG1sQ29tbWVudF06e21hdGNoOlJlKE8pLG9yZGVyOjEscGFyc2U6KCk9Pih7fSkscmVuZGVyOl9lfSxbci5pbWFnZV06e21hdGNoOkJlKENlKSxvcmRlcjoxLHBhcnNlOmU9Pih7YWx0OmVbMV0sdGFyZ2V0OkRlKGVbMl0pLHRpdGxlOmVbM119KSxyZW5kZXI6KGUsdCxuKT0+ZChcImltZ1wiLHtrZXk6bi5rZXksYWx0OmUuYWx0fHx2b2lkIDAsdGl0bGU6ZS50aXRsZXx8dm9pZCAwLHNyYzppLnNhbml0aXplcihlLnRhcmdldCxcImltZ1wiLFwic3JjXCIpfSl9LFtyLmxpbmtdOnttYXRjaDpPZShTZSksb3JkZXI6MyxwYXJzZTooZSx0LG4pPT4oe2NoaWxkcmVuOmplKHQsZVsxXSxuKSx0YXJnZXQ6RGUoZVsyXSksdGl0bGU6ZVszXX0pLHJlbmRlcjooZSx0LG4pPT5kKFwiYVwiLHtrZXk6bi5rZXksaHJlZjppLnNhbml0aXplcihlLnRhcmdldCxcImFcIixcImhyZWZcIiksdGl0bGU6ZS50aXRsZX0sdChlLmNoaWxkcmVuLG4pKX0sW3IubGlua0FuZ2xlQnJhY2VTdHlsZURldGVjdG9yXTp7bWF0Y2g6T2UoRCksb3JkZXI6MCxwYXJzZTplPT4oe2NoaWxkcmVuOlt7dGV4dDplWzFdLHR5cGU6ci50ZXh0fV0sdGFyZ2V0OmVbMV0sdHlwZTpyLmxpbmt9KX0sW3IubGlua0JhcmVVcmxEZXRlY3Rvcl06e21hdGNoOihlLHQpPT50LmluQW5jaG9yfHxpLmRpc2FibGVBdXRvTGluaz9udWxsOk9lKEkpKGUsdCksb3JkZXI6MCxwYXJzZTplPT4oe2NoaWxkcmVuOlt7dGV4dDplWzFdLHR5cGU6ci50ZXh0fV0sdGFyZ2V0OmVbMV0sdGl0bGU6dm9pZCAwLHR5cGU6ci5saW5rfSl9LFtyLmxpbmtNYWlsdG9EZXRlY3Rvcl06e21hdGNoOk9lKFUpLG9yZGVyOjAscGFyc2UoZSl7bGV0IHQ9ZVsxXSxuPWVbMV07cmV0dXJuIHMudGVzdChuKXx8KG49XCJtYWlsdG86XCIrbikse2NoaWxkcmVuOlt7dGV4dDp0LnJlcGxhY2UoXCJtYWlsdG86XCIsXCJcIiksdHlwZTpyLnRleHR9XSx0YXJnZXQ6bix0eXBlOnIubGlua319fSxbci5vcmRlcmVkTGlzdF06dmUoZCwxKSxbci51bm9yZGVyZWRMaXN0XTp2ZShkLDIpLFtyLm5ld2xpbmVDb2FsZXNjZXJdOnttYXRjaDpNZSh4KSxvcmRlcjozLHBhcnNlOkZlLHJlbmRlcjooKT0+XCJcXG5cIn0sW3IucGFyYWdyYXBoXTp7bWF0Y2g6SWUsb3JkZXI6MyxwYXJzZTpQZSxyZW5kZXI6KGUsdCxuKT0+ZChcInBcIix7a2V5Om4ua2V5fSx0KGUuY2hpbGRyZW4sbikpfSxbci5yZWZdOnttYXRjaDpPZShIKSxvcmRlcjowLHBhcnNlOmU9PihRW2VbMV1dPXt0YXJnZXQ6ZVsyXSx0aXRsZTplWzRdfSx7fSkscmVuZGVyOl9lfSxbci5yZWZJbWFnZV06e21hdGNoOkJlKFApLG9yZGVyOjAscGFyc2U6ZT0+KHthbHQ6ZVsxXXx8dm9pZCAwLHJlZjplWzJdfSkscmVuZGVyOihlLHQsbik9PlFbZS5yZWZdP2QoXCJpbWdcIix7a2V5Om4ua2V5LGFsdDplLmFsdCxzcmM6aS5zYW5pdGl6ZXIoUVtlLnJlZl0udGFyZ2V0LFwiaW1nXCIsXCJzcmNcIiksdGl0bGU6UVtlLnJlZl0udGl0bGV9KTpudWxsfSxbci5yZWZMaW5rXTp7bWF0Y2g6T2UoRiksb3JkZXI6MCxwYXJzZTooZSx0LG4pPT4oe2NoaWxkcmVuOnQoZVsxXSxuKSxmYWxsYmFja0NoaWxkcmVuOmVbMF0scmVmOmVbMl19KSxyZW5kZXI6KGUsdCxuKT0+UVtlLnJlZl0/ZChcImFcIix7a2V5Om4ua2V5LGhyZWY6aS5zYW5pdGl6ZXIoUVtlLnJlZl0udGFyZ2V0LFwiYVwiLFwiaHJlZlwiKSx0aXRsZTpRW2UucmVmXS50aXRsZX0sdChlLmNoaWxkcmVuLG4pKTpkKFwic3BhblwiLHtrZXk6bi5rZXl9LGUuZmFsbGJhY2tDaGlsZHJlbil9LFtyLnRhYmxlXTp7bWF0Y2g6TWUoaiksb3JkZXI6MSxwYXJzZTpBZSxyZW5kZXIoZSx0LG4pe2NvbnN0IHI9ZTtyZXR1cm4gZChcInRhYmxlXCIse2tleTpuLmtleX0sZChcInRoZWFkXCIsbnVsbCxkKFwidHJcIixudWxsLHIuaGVhZGVyLm1hcChmdW5jdGlvbihlLGkpe3JldHVybiBkKFwidGhcIix7a2V5Omksc3R5bGU6VGUocixpKX0sdChlLG4pKX0pKSksZChcInRib2R5XCIsbnVsbCxyLmNlbGxzLm1hcChmdW5jdGlvbihlLGkpe3JldHVybiBkKFwidHJcIix7a2V5Oml9LGUubWFwKGZ1bmN0aW9uKGUsaSl7cmV0dXJuIGQoXCJ0ZFwiLHtrZXk6aSxzdHlsZTpUZShyLGkpfSx0KGUsbikpfSkpfSkpKX19LFtyLnRleHRdOnttYXRjaDpSZSh0ZSksb3JkZXI6NCxwYXJzZTplPT4oe3RleHQ6ZVswXS5yZXBsYWNlKFQsKGUsdCk9PmkubmFtZWRDb2Rlc1RvVW5pY29kZVt0XT9pLm5hbWVkQ29kZXNUb1VuaWNvZGVbdF06ZSl9KSxyZW5kZXI6ZT0+ZS50ZXh0fSxbci50ZXh0Qm9sZGVkXTp7bWF0Y2g6QmUoWCksb3JkZXI6MixwYXJzZTooZSx0LG4pPT4oe2NoaWxkcmVuOnQoZVsyXSxuKX0pLHJlbmRlcjooZSx0LG4pPT5kKFwic3Ryb25nXCIse2tleTpuLmtleX0sdChlLmNoaWxkcmVuLG4pKX0sW3IudGV4dEVtcGhhc2l6ZWRdOnttYXRjaDpCZShKKSxvcmRlcjozLHBhcnNlOihlLHQsbik9Pih7Y2hpbGRyZW46dChlWzJdLG4pfSkscmVuZGVyOihlLHQsbik9PmQoXCJlbVwiLHtrZXk6bi5rZXl9LHQoZS5jaGlsZHJlbixuKSl9LFtyLnRleHRFc2NhcGVkXTp7bWF0Y2g6QmUoZWUpLG9yZGVyOjEscGFyc2U6ZT0+KHt0ZXh0OmVbMV0sdHlwZTpyLnRleHR9KX0sW3IudGV4dE1hcmtlZF06e21hdGNoOkJlKEspLG9yZGVyOjMscGFyc2U6UGUscmVuZGVyOihlLHQsbik9PmQoXCJtYXJrXCIse2tleTpuLmtleX0sdChlLmNoaWxkcmVuLG4pKX0sW3IudGV4dFN0cmlrZXRocm91Z2hlZF06e21hdGNoOkJlKFkpLG9yZGVyOjMscGFyc2U6UGUscmVuZGVyOihlLHQsbik9PmQoXCJkZWxcIix7a2V5Om4ua2V5fSx0KGUuY2hpbGRyZW4sbikpfX07ITA9PT1pLmRpc2FibGVQYXJzaW5nUmF3SFRNTCYmKGRlbGV0ZSBWW3IuaHRtbEJsb2NrXSxkZWxldGUgVltyLmh0bWxTZWxmQ2xvc2luZ10pO2NvbnN0IGllPWZ1bmN0aW9uKGUpe2xldCB0PU9iamVjdC5rZXlzKGUpO2Z1bmN0aW9uIG4ocixpKXtsZXQgbD1bXTtmb3IoaS5wcmV2Q2FwdHVyZT1pLnByZXZDYXB0dXJlfHxcIlwiO3I7KXtsZXQgYT0wO2Zvcig7YTx0Lmxlbmd0aDspe2NvbnN0IG89dFthXSxjPWVbb10scz1jLm1hdGNoKHIsaSk7aWYocyl7Y29uc3QgZT1zWzBdO2kucHJldkNhcHR1cmUrPWUscj1yLnN1YnN0cmluZyhlLmxlbmd0aCk7Y29uc3QgdD1jLnBhcnNlKHMsbixpKTtudWxsPT10LnR5cGUmJih0LnR5cGU9byksbC5wdXNoKHQpO2JyZWFrfWErK319cmV0dXJuIGkucHJldkNhcHR1cmU9XCJcIixsfXJldHVybiB0LnNvcnQoZnVuY3Rpb24odCxuKXtsZXQgcj1lW3RdLm9yZGVyLGk9ZVtuXS5vcmRlcjtyZXR1cm4gciE9PWk/ci1pOnQ8bj8tMToxfSksZnVuY3Rpb24oZSx0KXtyZXR1cm4gbihmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKGIsXCJcXG5cIikucmVwbGFjZShDLFwiXCIpLnJlcGxhY2UoRyxcIiAgICBcIil9KGUpLHQpfX0oViksbGU9KGFlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scixpKXtjb25zdCBsPWVbbi50eXBlXS5yZW5kZXI7cmV0dXJuIHQ/dCgoKT0+bChuLHIsaSksbixyLGkpOmwobixyLGkpfX0oVixpLnJlbmRlclJ1bGUpLGZ1bmN0aW9uIGUodCxuPXt9KXtpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCByPW4ua2V5LGk9W107bGV0IGw9ITE7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspe24ua2V5PXI7Y29uc3QgYT1lKHRbcl0sbiksbz1cInN0cmluZ1wiPT10eXBlb2YgYTtvJiZsP2lbaS5sZW5ndGgtMV0rPWE6bnVsbCE9PWEmJmkucHVzaChhKSxsPW99cmV0dXJuIG4ua2V5PXIsaX1yZXR1cm4gYWUodCxlLG4pfSk7dmFyIGFlO2NvbnN0IG9lPVcobik7cmV0dXJuIHEubGVuZ3RoP2QoXCJkaXZcIixudWxsLG9lLGQoXCJmb290ZXJcIix7a2V5OlwiZm9vdGVyXCJ9LHEubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBkKFwiZGl2XCIse2lkOmkuc2x1Z2lmeShlLmlkZW50aWZpZXIsd2UpLGtleTplLmlkZW50aWZpZXJ9LGUuaWRlbnRpZmllcixsZShpZShlLmZvb3Rub3RlLHtpbmxpbmU6ITB9KSkpfSkpKTpvZX1leHBvcnQgZGVmYXVsdCB0PT57bGV0e2NoaWxkcmVuOnI9XCJcIixvcHRpb25zOml9PXQsbD1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixpPXt9LGw9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGwubGVuZ3RoO3IrKyl0LmluZGV4T2Yobj1sW3JdKT49MHx8KGlbbl09ZVtuXSk7cmV0dXJuIGl9KHQsbik7cmV0dXJuIGUuY2xvbmVFbGVtZW50KFplKHIsaSksbCl9O2V4cG9ydHtyIGFzIFJ1bGVUeXBlLFplIGFzIGNvbXBpbGVyLFVlIGFzIHNhbml0aXplcix3ZSBhcyBzbHVnaWZ5fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1vZGVybi5qcy5tYXBcbiIsInZhciBiYXNlVW5zZXQgPSByZXF1aXJlKCcuL19iYXNlVW5zZXQnKTtcblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBwcm9wZXJ0eSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byB1bnNldC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvcGVydHkgaXMgZGVsZXRlZCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDcgfSB9XSB9O1xuICogXy51bnNldChvYmplY3QsICdhWzBdLmIuYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdCk7XG4gKiAvLyA9PiB7ICdhJzogW3sgJ2InOiB7fSB9XSB9O1xuICpcbiAqIF8udW5zZXQob2JqZWN0LCBbJ2EnLCAnMCcsICdiJywgJ2MnXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogY29uc29sZS5sb2cob2JqZWN0KTtcbiAqIC8vID0+IHsgJ2EnOiBbeyAnYic6IHt9IH1dIH07XG4gKi9cbmZ1bmN0aW9uIHVuc2V0KG9iamVjdCwgcGF0aCkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB0cnVlIDogYmFzZVVuc2V0KG9iamVjdCwgcGF0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdW5zZXQ7XG4iLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZ2V0VGVtcGxhdGUsIGdldFVpT3B0aW9ucywgb3JkZXJQcm9wZXJ0aWVzLCBUcmFuc2xhdGFibGVTdHJpbmcsIEFERElUSU9OQUxfUFJPUEVSVFlfRkxBRywgUFJPUEVSVElFU19LRVksIFJFRl9LRVksIEFOWV9PRl9LRVksIE9ORV9PRl9LRVksIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuaW1wb3J0IE1hcmtkb3duIGZyb20gJ21hcmtkb3duLXRvLWpzeCc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IGhhcyBmcm9tICdsb2Rhc2gvaGFzJztcbmltcG9ydCBpc09iamVjdCBmcm9tICdsb2Rhc2gvaXNPYmplY3QnO1xuaW1wb3J0IHNldCBmcm9tICdsb2Rhc2gvc2V0JztcbmltcG9ydCB1bnNldCBmcm9tICdsb2Rhc2gvdW5zZXQnO1xuLyoqIFRoZSBgT2JqZWN0RmllbGRgIGNvbXBvbmVudCBpcyB1c2VkIHRvIHJlbmRlciBhIGZpZWxkIGluIHRoZSBzY2hlbWEgdGhhdCBpcyBvZiB0eXBlIGBvYmplY3RgLiBJdCB0cmFja3Mgd2hldGhlciBhblxuICogYWRkaXRpb25hbCBwcm9wZXJ0eSBrZXkgd2FzIG1vZGlmaWVkIGFuZCB3aGF0IGl0IHdhcyBtb2RpZmllZCB0b1xuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgRmllbGRQcm9wc2AgZm9yIHRoaXMgdGVtcGxhdGVcbiAqL1xuY2xhc3MgT2JqZWN0RmllbGQgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICAvKiogU2V0IHVwIHRoZSBpbml0aWFsIHN0YXRlICovXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICB3YXNQcm9wZXJ0eUtleU1vZGlmaWVkOiBmYWxzZSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7fSxcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIFJldHVybnMgdGhlIGBvblByb3BlcnR5Q2hhbmdlYCBoYW5kbGVyIGZvciB0aGUgYG5hbWVgIGZpZWxkLiBIYW5kbGVzIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgYSB1c2VyIGlzIGF0dGVtcHRpbmdcbiAgICAgICAgICogdG8gY2xlYXIgdGhlIGRhdGEgZm9yIGEgZmllbGQgYWRkZWQgYXMgYW4gYWRkaXRpb25hbCBwcm9wZXJ0eS4gQ2FsbHMgdGhlIGBvbkNoYW5nZSgpYCBoYW5kbGVyIHdpdGggdGhlIHVwZGF0ZWRcbiAgICAgICAgICogZm9ybURhdGEuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5XG4gICAgICAgICAqIEBwYXJhbSBhZGRlZEJ5QWRkaXRpb25hbFByb3BlcnRpZXMgLSBGbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGlzIHByb3BlcnR5IGlzIGFuIGFkZGl0aW9uYWwgcHJvcGVydHlcbiAgICAgICAgICogQHJldHVybnMgLSBUaGUgb25Qcm9wZXJ0eUNoYW5nZSBjYWxsYmFjayBmb3IgdGhlIGBuYW1lYCBwcm9wZXJ0eVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vblByb3BlcnR5Q2hhbmdlID0gKG5hbWUsIGFkZGVkQnlBZGRpdGlvbmFsUHJvcGVydGllcyA9IGZhbHNlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKHZhbHVlLCBuZXdFcnJvclNjaGVtYSwgaWQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGZvcm1EYXRhLCBvbkNoYW5nZSwgZXJyb3JTY2hlbWEgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgYWRkZWRCeUFkZGl0aW9uYWxQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIERvbid0IHNldCB2YWx1ZSA9IHVuZGVmaW5lZCBmb3IgZmllbGRzIGFkZGVkIGJ5XG4gICAgICAgICAgICAgICAgICAgIC8vIGFkZGl0aW9uYWxQcm9wZXJ0aWVzLiBEb2luZyBzbyByZW1vdmVzIHRoZW0gZnJvbSB0aGVcbiAgICAgICAgICAgICAgICAgICAgLy8gZm9ybURhdGEsIHdoaWNoIGNhdXNlcyB0aGVtIHRvIGNvbXBsZXRlbHkgZGlzYXBwZWFyXG4gICAgICAgICAgICAgICAgICAgIC8vIChpbmNsdWRpbmcgdGhlIGlucHV0IGZpZWxkIGZvciB0aGUgcHJvcGVydHkgbmFtZSkuIFVubGlrZVxuICAgICAgICAgICAgICAgICAgICAvLyBmaWVsZHMgd2hpY2ggYXJlIFwibWFuZGF0ZWRcIiBieSB0aGUgc2NoZW1hLCB0aGVzZSBmaWVsZHMgY2FuXG4gICAgICAgICAgICAgICAgICAgIC8vIGJlIHNldCB0byB1bmRlZmluZWQgYnkgY2xpY2tpbmcgYSBcImRlbGV0ZSBmaWVsZFwiIGJ1dHRvbiwgc29cbiAgICAgICAgICAgICAgICAgICAgLy8gc2V0IGVtcHR5IHZhbHVlcyB0byB0aGUgZW1wdHkgc3RyaW5nLlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdGb3JtRGF0YSA9IHsgLi4uZm9ybURhdGEsIFtuYW1lXTogdmFsdWUgfTtcbiAgICAgICAgICAgICAgICBvbkNoYW5nZShuZXdGb3JtRGF0YSwgZXJyb3JTY2hlbWEgJiZcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JTY2hlbWEgJiYge1xuICAgICAgICAgICAgICAgICAgICAuLi5lcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdOiBuZXdFcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICB9LCBpZCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICAvKiogUmV0dXJucyBhIGNhbGxiYWNrIHRvIGhhbmRsZSB0aGUgb25Ecm9wUHJvcGVydHlDbGljayBldmVudCBmb3IgdGhlIGdpdmVuIGBrZXlgIHdoaWNoIHJlbW92ZXMgdGhlIG9sZCBga2V5YCBkYXRhXG4gICAgICAgICAqIGFuZCBjYWxscyB0aGUgYG9uQ2hhbmdlYCBjYWxsYmFjayB3aXRoIGl0XG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IGZvciB3aGljaCB0aGUgZHJvcCBjYWxsYmFjayBpcyBkZXNpcmVkXG4gICAgICAgICAqIEByZXR1cm5zIC0gVGhlIGRyb3AgcHJvcGVydHkgY2xpY2sgY2FsbGJhY2tcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub25Ecm9wUHJvcGVydHlDbGljayA9IChrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgb25DaGFuZ2UsIGZvcm1EYXRhIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvcGllZEZvcm1EYXRhID0geyAuLi5mb3JtRGF0YSB9O1xuICAgICAgICAgICAgICAgIHVuc2V0KGNvcGllZEZvcm1EYXRhLCBrZXkpO1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlKGNvcGllZEZvcm1EYXRhKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBDb21wdXRlcyB0aGUgbmV4dCBhdmFpbGFibGUga2V5IG5hbWUgZnJvbSB0aGUgYHByZWZlcnJlZEtleWAsIGluZGV4aW5nIHRocm91Z2ggdGhlIGFscmVhZHkgZXhpc3Rpbmcga2V5cyB1bnRpbCBvbmVcbiAgICAgICAgICogdGhhdCBpcyBhbHJlYWR5IG5vdCBhc3NpZ25lZCBpcyBmb3VuZC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHByZWZlcnJlZEtleSAtIFRoZSBwcmVmZXJyZWQgbmFtZSBvZiBhIG5ldyBrZXlcbiAgICAgICAgICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgZm9ybSBkYXRhIGluIHdoaWNoIHRvIGNoZWNrIGlmIHRoZSBkZXNpcmVkIGtleSBhbHJlYWR5IGV4aXN0c1xuICAgICAgICAgKiBAcmV0dXJucyAtIFRoZSBuYW1lIG9mIHRoZSBuZXh0IGF2YWlsYWJsZSBrZXkgZnJvbSBgcHJlZmVycmVkS2V5YFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5nZXRBdmFpbGFibGVLZXkgPSAocHJlZmVycmVkS2V5LCBmb3JtRGF0YSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyB1aVNjaGVtYSwgcmVnaXN0cnkgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICBjb25zdCB7IGR1cGxpY2F0ZUtleVN1ZmZpeFNlcGFyYXRvciA9ICctJyB9ID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCByZWdpc3RyeS5nbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgICAgIGxldCBuZXdLZXkgPSBwcmVmZXJyZWRLZXk7XG4gICAgICAgICAgICB3aGlsZSAoaGFzKGZvcm1EYXRhLCBuZXdLZXkpKSB7XG4gICAgICAgICAgICAgICAgbmV3S2V5ID0gYCR7cHJlZmVycmVkS2V5fSR7ZHVwbGljYXRlS2V5U3VmZml4U2VwYXJhdG9yfSR7KytpbmRleH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ld0tleTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIFJldHVybnMgYSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGRlYWxzIHdpdGggdGhlIHJlbmFtZSBvZiBhIGtleSBmb3IgYW4gYWRkaXRpb25hbCBwcm9wZXJ0eSBmb3IgYSBzY2hlbWEuIFRoYXRcbiAgICAgICAgICogY2FsbGJhY2sgd2lsbCBhdHRlbXB0IHRvIHJlbmFtZSB0aGUga2V5IGFuZCBtb3ZlIHRoZSBleGlzdGluZyBkYXRhIHRvIHRoYXQga2V5LCBjYWxsaW5nIGBvbkNoYW5nZWAgd2hlbiBpdCBkb2VzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gb2xkVmFsdWUgLSBUaGUgb2xkIHZhbHVlIG9mIGEgZmllbGRcbiAgICAgICAgICogQHJldHVybnMgLSBUaGUga2V5IGNoYW5nZSBjYWxsYmFjayBmdW5jdGlvblxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vbktleUNoYW5nZSA9IChvbGRWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICh2YWx1ZSwgbmV3RXJyb3JTY2hlbWEpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAob2xkVmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyBmb3JtRGF0YSwgb25DaGFuZ2UsIGVycm9yU2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5nZXRBdmFpbGFibGVLZXkodmFsdWUsIGZvcm1EYXRhKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdGb3JtRGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybURhdGEsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdLZXlzID0geyBbb2xkVmFsdWVdOiB2YWx1ZSB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGtleVZhbHVlcyA9IE9iamVjdC5rZXlzKG5ld0Zvcm1EYXRhKS5tYXAoKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdLZXkgPSBuZXdLZXlzW2tleV0gfHwga2V5O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBbbmV3S2V5XTogbmV3Rm9ybURhdGFba2V5XSB9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbmFtZWRPYmogPSBPYmplY3QuYXNzaWduKHt9LCAuLi5rZXlWYWx1ZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyB3YXNQcm9wZXJ0eUtleU1vZGlmaWVkOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlKHJlbmFtZWRPYmosIGVycm9yU2NoZW1hICYmXG4gICAgICAgICAgICAgICAgICAgIGVycm9yU2NoZW1hICYmIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZXJyb3JTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV06IG5ld0Vycm9yU2NoZW1hLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIEhhbmRsZXMgdGhlIGFkZGluZyBvZiBhIG5ldyBhZGRpdGlvbmFsIHByb3BlcnR5IG9uIHRoZSBnaXZlbiBgc2NoZW1hYC4gQ2FsbHMgdGhlIGBvbkNoYW5nZWAgY2FsbGJhY2sgb25jZSB0aGUgbmV3XG4gICAgICAgICAqIGRlZmF1bHQgZGF0YSBmb3IgdGhhdCBmaWVsZCBoYXMgYmVlbiBhZGRlZCB0byB0aGUgZm9ybURhdGEuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGVsZW1lbnQgdG8gd2hpY2ggdGhlIG5ldyBwcm9wZXJ0eSBpcyBiZWluZyBhZGRlZFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5oYW5kbGVBZGRDbGljayA9IChzY2hlbWEpID0+ICgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGlmICghc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgeyBmb3JtRGF0YSwgb25DaGFuZ2UsIHJlZ2lzdHJ5IH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgY29uc3QgbmV3Rm9ybURhdGEgPSB7IC4uLmZvcm1EYXRhIH07XG4gICAgICAgICAgICBsZXQgdHlwZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGxldCBjb25zdFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgbGV0IGRlZmF1bHRWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChpc09iamVjdChzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpKSB7XG4gICAgICAgICAgICAgICAgdHlwZSA9IHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcy50eXBlO1xuICAgICAgICAgICAgICAgIGNvbnN0VmFsdWUgPSBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMuY29uc3Q7XG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlID0gc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLmRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgbGV0IGFwU2NoZW1hID0gc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzO1xuICAgICAgICAgICAgICAgIGlmIChSRUZfS0VZIGluIGFwU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgc2NoZW1hVXRpbHMgfSA9IHJlZ2lzdHJ5O1xuICAgICAgICAgICAgICAgICAgICBhcFNjaGVtYSA9IHNjaGVtYVV0aWxzLnJldHJpZXZlU2NoZW1hKHsgJHJlZjogYXBTY2hlbWFbUkVGX0tFWV0gfSwgZm9ybURhdGEpO1xuICAgICAgICAgICAgICAgICAgICB0eXBlID0gYXBTY2hlbWEudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3RWYWx1ZSA9IGFwU2NoZW1hLmNvbnN0O1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWUgPSBhcFNjaGVtYS5kZWZhdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXR5cGUgJiYgKEFOWV9PRl9LRVkgaW4gYXBTY2hlbWEgfHwgT05FX09GX0tFWSBpbiBhcFNjaGVtYSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICdvYmplY3QnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5ld0tleSA9IHRoaXMuZ2V0QXZhaWxhYmxlS2V5KCduZXdLZXknLCBuZXdGb3JtRGF0YSk7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IChfYSA9IGNvbnN0VmFsdWUgIT09IG51bGwgJiYgY29uc3RWYWx1ZSAhPT0gdm9pZCAwID8gY29uc3RWYWx1ZSA6IGRlZmF1bHRWYWx1ZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdGhpcy5nZXREZWZhdWx0VmFsdWUodHlwZSk7XG4gICAgICAgICAgICAvLyBDYXN0IHRoaXMgdG8gbWFrZSB0aGUgYHNldGAgd29yayBwcm9wZXJseVxuICAgICAgICAgICAgc2V0KG5ld0Zvcm1EYXRhLCBuZXdLZXksIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIG9uQ2hhbmdlKG5ld0Zvcm1EYXRhKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqIFJldHVybnMgYSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgYG5hbWVgIGZpZWxkIGlzIHJlcXVpcmVkIGluIHRoZSBvYmplY3Qgc2NoZW1hXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBmaWVsZCB0byBjaGVjayBmb3IgcmVxdWlyZWQtbmVzc1xuICAgICAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGUgZmllbGQgYG5hbWVgIGlzIHJlcXVpcmVkLCBmYWxzZSBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBpc1JlcXVpcmVkKG5hbWUpIHtcbiAgICAgICAgY29uc3QgeyBzY2hlbWEgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHNjaGVtYS5yZXF1aXJlZCkgJiYgc2NoZW1hLnJlcXVpcmVkLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyBhIGRlZmF1bHQgdmFsdWUgdG8gYmUgdXNlZCBmb3IgYSBuZXcgYWRkaXRpb25hbCBzY2hlbWEgcHJvcGVydHkgb2YgdGhlIGdpdmVuIGB0eXBlYFxuICAgICAqXG4gICAgICogQHBhcmFtIHR5cGUgLSBUaGUgdHlwZSBvZiB0aGUgbmV3IGFkZGl0aW9uYWwgc2NoZW1hIHByb3BlcnR5XG4gICAgICovXG4gICAgZ2V0RGVmYXVsdFZhbHVlKHR5cGUpIHtcbiAgICAgICAgY29uc3QgeyByZWdpc3RyeTogeyB0cmFuc2xhdGVTdHJpbmcgfSwgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhIGRhdGF0eXBlIGZvciBzb21lIHJlYXNvbiAocGVyaGFwcyBhZGRpdGlvbmFsUHJvcGVydGllcyB3YXMgdHJ1ZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5OZXdTdHJpbmdEZWZhdWx0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogUmVuZGVycyB0aGUgYE9iamVjdEZpZWxkYCBmcm9tIHRoZSBnaXZlbiBwcm9wc1xuICAgICAqL1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICBjb25zdCB7IHNjaGVtYTogcmF3U2NoZW1hLCB1aVNjaGVtYSA9IHt9LCBmb3JtRGF0YSwgZXJyb3JTY2hlbWEsIGlkU2NoZW1hLCBuYW1lLCByZXF1aXJlZCA9IGZhbHNlLCBkaXNhYmxlZCwgcmVhZG9ubHksIGhpZGVFcnJvciwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yLCBvbkJsdXIsIG9uRm9jdXMsIHJlZ2lzdHJ5LCB0aXRsZSwgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHsgZmllbGRzLCBmb3JtQ29udGV4dCwgc2NoZW1hVXRpbHMsIHRyYW5zbGF0ZVN0cmluZywgZ2xvYmFsVWlPcHRpb25zIH0gPSByZWdpc3RyeTtcbiAgICAgICAgY29uc3QgeyBTY2hlbWFGaWVsZCB9ID0gZmllbGRzO1xuICAgICAgICBjb25zdCBzY2hlbWEgPSBzY2hlbWFVdGlscy5yZXRyaWV2ZVNjaGVtYShyYXdTY2hlbWEsIGZvcm1EYXRhKTtcbiAgICAgICAgY29uc3QgdWlPcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICBjb25zdCB7IHByb3BlcnRpZXM6IHNjaGVtYVByb3BlcnRpZXMgPSB7fSB9ID0gc2NoZW1hO1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZVRpdGxlID0gKF9jID0gKF9iID0gKF9hID0gdWlPcHRpb25zLnRpdGxlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBzY2hlbWEudGl0bGUpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHRpdGxlKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBuYW1lO1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IChfZCA9IHVpT3B0aW9ucy5kZXNjcmlwdGlvbikgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogc2NoZW1hLmRlc2NyaXB0aW9uO1xuICAgICAgICBsZXQgb3JkZXJlZFByb3BlcnRpZXM7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMoc2NoZW1hUHJvcGVydGllcyk7XG4gICAgICAgICAgICBvcmRlcmVkUHJvcGVydGllcyA9IG9yZGVyUHJvcGVydGllcyhwcm9wZXJ0aWVzLCB1aU9wdGlvbnMub3JkZXIpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiAoX2pzeHMoXCJkaXZcIiwgeyBjaGlsZHJlbjogW19qc3goXCJwXCIsIHsgY2xhc3NOYW1lOiAnY29uZmlnLWVycm9yJywgc3R5bGU6IHsgY29sb3I6ICdyZWQnIH0sIGNoaWxkcmVuOiBfanN4KE1hcmtkb3duLCB7IG9wdGlvbnM6IHsgZGlzYWJsZVBhcnNpbmdSYXdIVE1MOiB0cnVlIH0sIGNoaWxkcmVuOiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLkludmFsaWRPYmplY3RGaWVsZCwgW25hbWUgfHwgJ3Jvb3QnLCBlcnIubWVzc2FnZV0pIH0pIH0pLCBfanN4KFwicHJlXCIsIHsgY2hpbGRyZW46IEpTT04uc3RyaW5naWZ5KHNjaGVtYSkgfSldIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdPYmplY3RGaWVsZFRlbXBsYXRlJywgcmVnaXN0cnksIHVpT3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlUHJvcHMgPSB7XG4gICAgICAgICAgICAvLyBnZXREaXNwbGF5TGFiZWwoKSBhbHdheXMgcmV0dXJucyBmYWxzZSBmb3Igb2JqZWN0IHR5cGVzLCBzbyBqdXN0IGNoZWNrIHRoZSBgdWlPcHRpb25zLmxhYmVsYFxuICAgICAgICAgICAgdGl0bGU6IHVpT3B0aW9ucy5sYWJlbCA9PT0gZmFsc2UgPyAnJyA6IHRlbXBsYXRlVGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdWlPcHRpb25zLmxhYmVsID09PSBmYWxzZSA/IHVuZGVmaW5lZCA6IGRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJvcGVydGllczogb3JkZXJlZFByb3BlcnRpZXMubWFwKChuYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRkZWRCeUFkZGl0aW9uYWxQcm9wZXJ0aWVzID0gaGFzKHNjaGVtYSwgW1BST1BFUlRJRVNfS0VZLCBuYW1lLCBBRERJVElPTkFMX1BST1BFUlRZX0ZMQUddKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZFVpU2NoZW1hID0gYWRkZWRCeUFkZGl0aW9uYWxQcm9wZXJ0aWVzID8gdWlTY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMgOiB1aVNjaGVtYVtuYW1lXTtcbiAgICAgICAgICAgICAgICBjb25zdCBoaWRkZW4gPSBnZXRVaU9wdGlvbnMoZmllbGRVaVNjaGVtYSkud2lkZ2V0ID09PSAnaGlkZGVuJztcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZElkU2NoZW1hID0gZ2V0KGlkU2NoZW1hLCBbbmFtZV0sIHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAoX2pzeChTY2hlbWFGaWVsZCwgeyBuYW1lOiBuYW1lLCByZXF1aXJlZDogdGhpcy5pc1JlcXVpcmVkKG5hbWUpLCBzY2hlbWE6IGdldChzY2hlbWEsIFtQUk9QRVJUSUVTX0tFWSwgbmFtZV0sIHt9KSwgdWlTY2hlbWE6IGZpZWxkVWlTY2hlbWEsIGVycm9yU2NoZW1hOiBnZXQoZXJyb3JTY2hlbWEsIG5hbWUpLCBpZFNjaGVtYTogZmllbGRJZFNjaGVtYSwgaWRQcmVmaXg6IGlkUHJlZml4LCBpZFNlcGFyYXRvcjogaWRTZXBhcmF0b3IsIGZvcm1EYXRhOiBnZXQoZm9ybURhdGEsIG5hbWUpLCBmb3JtQ29udGV4dDogZm9ybUNvbnRleHQsIHdhc1Byb3BlcnR5S2V5TW9kaWZpZWQ6IHRoaXMuc3RhdGUud2FzUHJvcGVydHlLZXlNb2RpZmllZCwgb25LZXlDaGFuZ2U6IHRoaXMub25LZXlDaGFuZ2UobmFtZSksIG9uQ2hhbmdlOiB0aGlzLm9uUHJvcGVydHlDaGFuZ2UobmFtZSwgYWRkZWRCeUFkZGl0aW9uYWxQcm9wZXJ0aWVzKSwgb25CbHVyOiBvbkJsdXIsIG9uRm9jdXM6IG9uRm9jdXMsIHJlZ2lzdHJ5OiByZWdpc3RyeSwgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkb25seTogcmVhZG9ubHksIGhpZGVFcnJvcjogaGlkZUVycm9yLCBvbkRyb3BQcm9wZXJ0eUNsaWNrOiB0aGlzLm9uRHJvcFByb3BlcnR5Q2xpY2sgfSwgbmFtZSkpLFxuICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICBoaWRkZW4sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgcmVhZG9ubHksXG4gICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgIHJlcXVpcmVkLFxuICAgICAgICAgICAgaWRTY2hlbWEsXG4gICAgICAgICAgICB1aVNjaGVtYSxcbiAgICAgICAgICAgIGVycm9yU2NoZW1hLFxuICAgICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgICAgZm9ybURhdGEsXG4gICAgICAgICAgICBmb3JtQ29udGV4dCxcbiAgICAgICAgICAgIHJlZ2lzdHJ5LFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gX2pzeChUZW1wbGF0ZSwgeyAuLi50ZW1wbGF0ZVByb3BzLCBvbkFkZENsaWNrOiB0aGlzLmhhbmRsZUFkZENsaWNrIH0pO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IE9iamVjdEZpZWxkO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9T2JqZWN0RmllbGQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIEZyYWdtZW50IGFzIF9GcmFnbWVudCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEFERElUSU9OQUxfUFJPUEVSVFlfRkxBRywgZGVlcEVxdWFscywgZGVzY3JpcHRpb25JZCwgZ2V0U2NoZW1hVHlwZSwgZ2V0VGVtcGxhdGUsIGdldFVpT3B0aW9ucywgSURfS0VZLCBtZXJnZU9iamVjdHMsIFRyYW5zbGF0YWJsZVN0cmluZywgVUlfT1BUSU9OU19LRVksIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJ2xvZGFzaC9pc09iamVjdCc7XG5pbXBvcnQgb21pdCBmcm9tICdsb2Rhc2gvb21pdCc7XG5pbXBvcnQgTWFya2Rvd24gZnJvbSAnbWFya2Rvd24tdG8tanN4Jztcbi8qKiBUaGUgbWFwIG9mIGNvbXBvbmVudCB0eXBlIHRvIEZpZWxkTmFtZSAqL1xuY29uc3QgQ09NUE9ORU5UX1RZUEVTID0ge1xuICAgIGFycmF5OiAnQXJyYXlGaWVsZCcsXG4gICAgYm9vbGVhbjogJ0Jvb2xlYW5GaWVsZCcsXG4gICAgaW50ZWdlcjogJ051bWJlckZpZWxkJyxcbiAgICBudW1iZXI6ICdOdW1iZXJGaWVsZCcsXG4gICAgb2JqZWN0OiAnT2JqZWN0RmllbGQnLFxuICAgIHN0cmluZzogJ1N0cmluZ0ZpZWxkJyxcbiAgICBudWxsOiAnTnVsbEZpZWxkJyxcbn07XG4vKiogQ29tcHV0ZXMgYW5kIHJldHVybnMgd2hpY2ggYEZpZWxkYCBpbXBsZW1lbnRhdGlvbiB0byByZXR1cm4gaW4gb3JkZXIgdG8gcmVuZGVyIHRoZSBmaWVsZCByZXByZXNlbnRlZCBieSB0aGVcbiAqIGBzY2hlbWFgLiBUaGUgYHVpT3B0aW9uc2AgYXJlIHVzZWQgdG8gYWx0ZXIgd2hhdCBwb3RlbnRpYWwgYEZpZWxkYCBpbXBsZW1lbnRhdGlvbiBpcyBhY3R1YWxseSByZXR1cm5lZC4gSWYgbm9cbiAqIGFwcHJvcHJpYXRlIGBGaWVsZGAgaW1wbGVtZW50YXRpb24gY2FuIGJlIGZvdW5kIHRoZW4gYSB3cmFwcGVyIGFyb3VuZCBgVW5zdXBwb3J0ZWRGaWVsZFRlbXBsYXRlYCBpcyB1c2VkLlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZyb20gd2hpY2ggdG8gb2J0YWluIHRoZSB0eXBlXG4gKiBAcGFyYW0gdWlPcHRpb25zIC0gVGhlIFVJIE9wdGlvbnMgdGhhdCBtYXkgYWZmZWN0IHRoZSBjb21wb25lbnQgZGVjaXNpb25cbiAqIEBwYXJhbSBpZFNjaGVtYSAtIFRoZSBpZCB0aGF0IGlzIHBhc3NlZCB0byB0aGUgYFVuc3VwcG9ydGVkRmllbGRUZW1wbGF0ZWBcbiAqIEBwYXJhbSByZWdpc3RyeSAtIFRoZSByZWdpc3RyeSBmcm9tIHdoaWNoIGZpZWxkcyBhbmQgdGVtcGxhdGVzIGFyZSBvYnRhaW5lZFxuICogQHJldHVybnMgLSBUaGUgYEZpZWxkYCBjb21wb25lbnQgdGhhdCBpcyB1c2VkIHRvIHJlbmRlciB0aGUgYWN0dWFsIGZpZWxkIGRhdGFcbiAqL1xuZnVuY3Rpb24gZ2V0RmllbGRDb21wb25lbnQoc2NoZW1hLCB1aU9wdGlvbnMsIGlkU2NoZW1hLCByZWdpc3RyeSkge1xuICAgIGNvbnN0IGZpZWxkID0gdWlPcHRpb25zLmZpZWxkO1xuICAgIGNvbnN0IHsgZmllbGRzLCB0cmFuc2xhdGVTdHJpbmcgfSA9IHJlZ2lzdHJ5O1xuICAgIGlmICh0eXBlb2YgZmllbGQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGZpZWxkID09PSAnc3RyaW5nJyAmJiBmaWVsZCBpbiBmaWVsZHMpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkc1tmaWVsZF07XG4gICAgfVxuICAgIGNvbnN0IHNjaGVtYVR5cGUgPSBnZXRTY2hlbWFUeXBlKHNjaGVtYSk7XG4gICAgY29uc3QgdHlwZSA9IEFycmF5LmlzQXJyYXkoc2NoZW1hVHlwZSkgPyBzY2hlbWFUeXBlWzBdIDogc2NoZW1hVHlwZSB8fCAnJztcbiAgICBjb25zdCBzY2hlbWFJZCA9IHNjaGVtYS4kaWQ7XG4gICAgbGV0IGNvbXBvbmVudE5hbWUgPSBDT01QT05FTlRfVFlQRVNbdHlwZV07XG4gICAgaWYgKHNjaGVtYUlkICYmIHNjaGVtYUlkIGluIGZpZWxkcykge1xuICAgICAgICBjb21wb25lbnROYW1lID0gc2NoZW1hSWQ7XG4gICAgfVxuICAgIC8vIElmIHRoZSB0eXBlIGlzIG5vdCBkZWZpbmVkIGFuZCB0aGUgc2NoZW1hIHVzZXMgJ2FueU9mJyBvciAnb25lT2YnLCBkb24ndFxuICAgIC8vIHJlbmRlciBhIGZpZWxkIGFuZCBsZXQgdGhlIE11bHRpU2NoZW1hRmllbGQgY29tcG9uZW50IGhhbmRsZSB0aGUgZm9ybSBkaXNwbGF5XG4gICAgaWYgKCFjb21wb25lbnROYW1lICYmIChzY2hlbWEuYW55T2YgfHwgc2NoZW1hLm9uZU9mKSkge1xuICAgICAgICByZXR1cm4gKCkgPT4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBvbmVudE5hbWUgaW4gZmllbGRzXG4gICAgICAgID8gZmllbGRzW2NvbXBvbmVudE5hbWVdXG4gICAgICAgIDogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgVW5zdXBwb3J0ZWRGaWVsZFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ1Vuc3VwcG9ydGVkRmllbGRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCB1aU9wdGlvbnMpO1xuICAgICAgICAgICAgcmV0dXJuIChfanN4KFVuc3VwcG9ydGVkRmllbGRUZW1wbGF0ZSwgeyBzY2hlbWE6IHNjaGVtYSwgaWRTY2hlbWE6IGlkU2NoZW1hLCByZWFzb246IHRyYW5zbGF0ZVN0cmluZyhUcmFuc2xhdGFibGVTdHJpbmcuVW5rbm93bkZpZWxkVHlwZSwgW1N0cmluZyhzY2hlbWEudHlwZSldKSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKTtcbiAgICAgICAgfTtcbn1cbi8qKiBUaGUgYFNjaGVtYUZpZWxkUmVuZGVyYCBjb21wb25lbnQgaXMgdGhlIHdvcmstaG9yc2Ugb2YgcmVhY3QtanNvbnNjaGVtYS1mb3JtLCBkZXRlcm1pbmluZyB3aGF0IGtpbmQgb2YgcmVhbCBmaWVsZCB0b1xuICogcmVuZGVyIGJhc2VkIG9uIHRoZSBgc2NoZW1hYCwgYHVpU2NoZW1hYCBhbmQgYWxsIHRoZSBvdGhlciBwcm9wcy4gSXQgYWxzbyBkZWFscyB3aXRoIHJlbmRlcmluZyB0aGUgYGFueU9mYCBhbmRcbiAqIGBvbmVPZmAgZmllbGRzLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgRmllbGRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIFNjaGVtYUZpZWxkUmVuZGVyKHByb3BzKSB7XG4gICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgY29uc3QgeyBzY2hlbWE6IF9zY2hlbWEsIGlkU2NoZW1hOiBfaWRTY2hlbWEsIHVpU2NoZW1hLCBmb3JtRGF0YSwgZXJyb3JTY2hlbWEsIGlkUHJlZml4LCBpZFNlcGFyYXRvciwgbmFtZSwgb25DaGFuZ2UsIG9uS2V5Q2hhbmdlLCBvbkRyb3BQcm9wZXJ0eUNsaWNrLCByZXF1aXJlZCwgcmVnaXN0cnksIHdhc1Byb3BlcnR5S2V5TW9kaWZpZWQgPSBmYWxzZSwgfSA9IHByb3BzO1xuICAgIGNvbnN0IHsgZm9ybUNvbnRleHQsIHNjaGVtYVV0aWxzLCBnbG9iYWxVaU9wdGlvbnMgfSA9IHJlZ2lzdHJ5O1xuICAgIGNvbnN0IHVpT3B0aW9ucyA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSwgZ2xvYmFsVWlPcHRpb25zKTtcbiAgICBjb25zdCBGaWVsZFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0ZpZWxkVGVtcGxhdGUnLCByZWdpc3RyeSwgdWlPcHRpb25zKTtcbiAgICBjb25zdCBEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnRGVzY3JpcHRpb25GaWVsZFRlbXBsYXRlJywgcmVnaXN0cnksIHVpT3B0aW9ucyk7XG4gICAgY29uc3QgRmllbGRIZWxwVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnRmllbGRIZWxwVGVtcGxhdGUnLCByZWdpc3RyeSwgdWlPcHRpb25zKTtcbiAgICBjb25zdCBGaWVsZEVycm9yVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnRmllbGRFcnJvclRlbXBsYXRlJywgcmVnaXN0cnksIHVpT3B0aW9ucyk7XG4gICAgY29uc3Qgc2NoZW1hID0gc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEoX3NjaGVtYSwgZm9ybURhdGEpO1xuICAgIGNvbnN0IGZpZWxkSWQgPSBfaWRTY2hlbWFbSURfS0VZXTtcbiAgICBjb25zdCBpZFNjaGVtYSA9IG1lcmdlT2JqZWN0cyhzY2hlbWFVdGlscy50b0lkU2NoZW1hKHNjaGVtYSwgZmllbGRJZCwgZm9ybURhdGEsIGlkUHJlZml4LCBpZFNlcGFyYXRvciksIF9pZFNjaGVtYSk7XG4gICAgLyoqIEludGVybWVkaWFyeSBgb25DaGFuZ2VgIGhhbmRsZXIgZm9yIGZpZWxkIGNvbXBvbmVudHMgdGhhdCB3aWxsIGluamVjdCB0aGUgYGlkYCBvZiB0aGUgY3VycmVudCBmaWVsZCBpbnRvIHRoZVxuICAgICAqIGBvbkNoYW5nZWAgY2hhaW4gaWYgaXQgaXMgbm90IGFscmVhZHkgYmVpbmcgcHJvdmlkZWQgZnJvbSBhIGRlZXBlciBsZXZlbCBpbiB0aGUgaGllcmFyY2h5XG4gICAgICovXG4gICAgY29uc3QgaGFuZGxlRmllbGRDb21wb25lbnRDaGFuZ2UgPSB1c2VDYWxsYmFjaygoZm9ybURhdGEsIG5ld0Vycm9yU2NoZW1hLCBpZCkgPT4ge1xuICAgICAgICBjb25zdCB0aGVJZCA9IGlkIHx8IGZpZWxkSWQ7XG4gICAgICAgIHJldHVybiBvbkNoYW5nZShmb3JtRGF0YSwgbmV3RXJyb3JTY2hlbWEsIHRoZUlkKTtcbiAgICB9LCBbZmllbGRJZCwgb25DaGFuZ2VdKTtcbiAgICBjb25zdCBGaWVsZENvbXBvbmVudCA9IGdldEZpZWxkQ29tcG9uZW50KHNjaGVtYSwgdWlPcHRpb25zLCBpZFNjaGVtYSwgcmVnaXN0cnkpO1xuICAgIGNvbnN0IGRpc2FibGVkID0gQm9vbGVhbigoX2EgPSB1aU9wdGlvbnMuZGlzYWJsZWQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHByb3BzLmRpc2FibGVkKTtcbiAgICBjb25zdCByZWFkb25seSA9IEJvb2xlYW4oKF9iID0gdWlPcHRpb25zLnJlYWRvbmx5KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAocHJvcHMucmVhZG9ubHkgfHwgcHJvcHMuc2NoZW1hLnJlYWRPbmx5IHx8IHNjaGVtYS5yZWFkT25seSkpO1xuICAgIGNvbnN0IHVpU2NoZW1hSGlkZUVycm9yID0gdWlPcHRpb25zLmhpZGVFcnJvcjtcbiAgICAvLyBTZXQgaGlkZUVycm9yIHRvIHRoZSB2YWx1ZSBwcm92aWRlZCBpbiB0aGUgdWlTY2hlbWEsIG90aGVyd2lzZSBzdGljayB3aXRoIHRoZSBwcm9wIHRvIHByb3BhZ2F0ZSB0byBjaGlsZHJlblxuICAgIGNvbnN0IGhpZGVFcnJvciA9IHVpU2NoZW1hSGlkZUVycm9yID09PSB1bmRlZmluZWQgPyBwcm9wcy5oaWRlRXJyb3IgOiBCb29sZWFuKHVpU2NoZW1hSGlkZUVycm9yKTtcbiAgICBjb25zdCBhdXRvZm9jdXMgPSBCb29sZWFuKChfYyA9IHVpT3B0aW9ucy5hdXRvZm9jdXMpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IHByb3BzLmF1dG9mb2N1cyk7XG4gICAgaWYgKE9iamVjdC5rZXlzKHNjaGVtYSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBkaXNwbGF5TGFiZWwgPSBzY2hlbWFVdGlscy5nZXREaXNwbGF5TGFiZWwoc2NoZW1hLCB1aVNjaGVtYSwgZ2xvYmFsVWlPcHRpb25zKTtcbiAgICBjb25zdCB7IF9fZXJyb3JzLCAuLi5maWVsZEVycm9yU2NoZW1hIH0gPSBlcnJvclNjaGVtYSB8fCB7fTtcbiAgICAvLyBTZWUgIzQzOTogdWlTY2hlbWE6IERvbid0IHBhc3MgY29uc3VtZWQgY2xhc3MgbmFtZXMgb3Igc3R5bGUgdG8gY2hpbGQgY29tcG9uZW50c1xuICAgIGNvbnN0IGZpZWxkVWlTY2hlbWEgPSBvbWl0KHVpU2NoZW1hLCBbJ3VpOmNsYXNzTmFtZXMnLCAnY2xhc3NOYW1lcycsICd1aTpzdHlsZSddKTtcbiAgICBpZiAoVUlfT1BUSU9OU19LRVkgaW4gZmllbGRVaVNjaGVtYSkge1xuICAgICAgICBmaWVsZFVpU2NoZW1hW1VJX09QVElPTlNfS0VZXSA9IG9taXQoZmllbGRVaVNjaGVtYVtVSV9PUFRJT05TX0tFWV0sIFsnY2xhc3NOYW1lcycsICdzdHlsZSddKTtcbiAgICB9XG4gICAgY29uc3QgZmllbGQgPSAoX2pzeChGaWVsZENvbXBvbmVudCwgeyAuLi5wcm9wcywgb25DaGFuZ2U6IGhhbmRsZUZpZWxkQ29tcG9uZW50Q2hhbmdlLCBpZFNjaGVtYTogaWRTY2hlbWEsIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogZmllbGRVaVNjaGVtYSwgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkb25seTogcmVhZG9ubHksIGhpZGVFcnJvcjogaGlkZUVycm9yLCBhdXRvZm9jdXM6IGF1dG9mb2N1cywgZXJyb3JTY2hlbWE6IGZpZWxkRXJyb3JTY2hlbWEsIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgcmF3RXJyb3JzOiBfX2Vycm9ycyB9KSk7XG4gICAgY29uc3QgaWQgPSBpZFNjaGVtYVtJRF9LRVldO1xuICAgIC8vIElmIHRoaXMgc2NoZW1hIGhhcyBhIHRpdGxlIGRlZmluZWQsIGJ1dCB0aGUgdXNlciBoYXMgc2V0IGEgbmV3IGtleS9sYWJlbCwgcmV0YWluIHRoZWlyIGlucHV0LlxuICAgIGxldCBsYWJlbDtcbiAgICBpZiAod2FzUHJvcGVydHlLZXlNb2RpZmllZCkge1xuICAgICAgICBsYWJlbCA9IG5hbWU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBsYWJlbCA9XG4gICAgICAgICAgICBBRERJVElPTkFMX1BST1BFUlRZX0ZMQUcgaW4gc2NoZW1hXG4gICAgICAgICAgICAgICAgPyBuYW1lXG4gICAgICAgICAgICAgICAgOiB1aU9wdGlvbnMudGl0bGUgfHwgcHJvcHMuc2NoZW1hLnRpdGxlIHx8IHNjaGVtYS50aXRsZSB8fCBwcm9wcy50aXRsZSB8fCBuYW1lO1xuICAgIH1cbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHVpT3B0aW9ucy5kZXNjcmlwdGlvbiB8fCBwcm9wcy5zY2hlbWEuZGVzY3JpcHRpb24gfHwgc2NoZW1hLmRlc2NyaXB0aW9uIHx8ICcnO1xuICAgIGNvbnN0IHJpY2hEZXNjcmlwdGlvbiA9IHVpT3B0aW9ucy5lbmFibGVNYXJrZG93bkluRGVzY3JpcHRpb24gPyAoX2pzeChNYXJrZG93biwgeyBvcHRpb25zOiB7IGRpc2FibGVQYXJzaW5nUmF3SFRNTDogdHJ1ZSB9LCBjaGlsZHJlbjogZGVzY3JpcHRpb24gfSkpIDogKGRlc2NyaXB0aW9uKTtcbiAgICBjb25zdCBoZWxwID0gdWlPcHRpb25zLmhlbHA7XG4gICAgY29uc3QgaGlkZGVuID0gdWlPcHRpb25zLndpZGdldCA9PT0gJ2hpZGRlbic7XG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IFsnZm9ybS1ncm91cCcsICdmaWVsZCcsIGBmaWVsZC0ke2dldFNjaGVtYVR5cGUoc2NoZW1hKX1gXTtcbiAgICBpZiAoIWhpZGVFcnJvciAmJiBfX2Vycm9ycyAmJiBfX2Vycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNsYXNzTmFtZXMucHVzaCgnZmllbGQtZXJyb3IgaGFzLWVycm9yIGhhcy1kYW5nZXInKTtcbiAgICB9XG4gICAgaWYgKHVpU2NoZW1hID09PSBudWxsIHx8IHVpU2NoZW1hID09PSB2b2lkIDAgPyB2b2lkIDAgOiB1aVNjaGVtYS5jbGFzc05hbWVzKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCIndWlTY2hlbWEuY2xhc3NOYW1lcycgaXMgZGVwcmVjYXRlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gYSBtYWpvciByZWxlYXNlOyBVc2UgJ3VpOmNsYXNzTmFtZXMnIGluc3RlYWQuXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNsYXNzTmFtZXMucHVzaCh1aVNjaGVtYS5jbGFzc05hbWVzKTtcbiAgICB9XG4gICAgaWYgKHVpT3B0aW9ucy5jbGFzc05hbWVzKSB7XG4gICAgICAgIGNsYXNzTmFtZXMucHVzaCh1aU9wdGlvbnMuY2xhc3NOYW1lcyk7XG4gICAgfVxuICAgIGNvbnN0IGhlbHBDb21wb25lbnQgPSAoX2pzeChGaWVsZEhlbHBUZW1wbGF0ZSwgeyBoZWxwOiBoZWxwLCBpZFNjaGVtYTogaWRTY2hlbWEsIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIGhhc0Vycm9yczogIWhpZGVFcnJvciAmJiBfX2Vycm9ycyAmJiBfX2Vycm9ycy5sZW5ndGggPiAwLCByZWdpc3RyeTogcmVnaXN0cnkgfSkpO1xuICAgIC8qXG4gICAgICogQW55T2YvT25lT2YgZXJyb3JzIGhhbmRsZWQgYnkgY2hpbGQgc2NoZW1hXG4gICAgICogdW5sZXNzIGl0IGNhbiBiZSByZW5kZXJlZCBhcyBzZWxlY3QgY29udHJvbFxuICAgICAqL1xuICAgIGNvbnN0IGVycm9yc0NvbXBvbmVudCA9IGhpZGVFcnJvciB8fCAoKHNjaGVtYS5hbnlPZiB8fCBzY2hlbWEub25lT2YpICYmICFzY2hlbWFVdGlscy5pc1NlbGVjdChzY2hlbWEpKSA/IHVuZGVmaW5lZCA6IChfanN4KEZpZWxkRXJyb3JUZW1wbGF0ZSwgeyBlcnJvcnM6IF9fZXJyb3JzLCBlcnJvclNjaGVtYTogZXJyb3JTY2hlbWEsIGlkU2NoZW1hOiBpZFNjaGVtYSwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKTtcbiAgICBjb25zdCBmaWVsZFByb3BzID0ge1xuICAgICAgICBkZXNjcmlwdGlvbjogKF9qc3goRGVzY3JpcHRpb25GaWVsZFRlbXBsYXRlLCB7IGlkOiBkZXNjcmlwdGlvbklkKGlkKSwgZGVzY3JpcHRpb246IHJpY2hEZXNjcmlwdGlvbiwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKSxcbiAgICAgICAgcmF3RGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLFxuICAgICAgICBoZWxwOiBoZWxwQ29tcG9uZW50LFxuICAgICAgICByYXdIZWxwOiB0eXBlb2YgaGVscCA9PT0gJ3N0cmluZycgPyBoZWxwIDogdW5kZWZpbmVkLFxuICAgICAgICBlcnJvcnM6IGVycm9yc0NvbXBvbmVudCxcbiAgICAgICAgcmF3RXJyb3JzOiBoaWRlRXJyb3IgPyB1bmRlZmluZWQgOiBfX2Vycm9ycyxcbiAgICAgICAgaWQsXG4gICAgICAgIGxhYmVsLFxuICAgICAgICBoaWRkZW4sXG4gICAgICAgIG9uQ2hhbmdlLFxuICAgICAgICBvbktleUNoYW5nZSxcbiAgICAgICAgb25Ecm9wUHJvcGVydHlDbGljayxcbiAgICAgICAgcmVxdWlyZWQsXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICByZWFkb25seSxcbiAgICAgICAgaGlkZUVycm9yLFxuICAgICAgICBkaXNwbGF5TGFiZWwsXG4gICAgICAgIGNsYXNzTmFtZXM6IGNsYXNzTmFtZXMuam9pbignICcpLnRyaW0oKSxcbiAgICAgICAgc3R5bGU6IHVpT3B0aW9ucy5zdHlsZSxcbiAgICAgICAgZm9ybUNvbnRleHQsXG4gICAgICAgIGZvcm1EYXRhLFxuICAgICAgICBzY2hlbWEsXG4gICAgICAgIHVpU2NoZW1hLFxuICAgICAgICByZWdpc3RyeSxcbiAgICB9O1xuICAgIGNvbnN0IF9BbnlPZkZpZWxkID0gcmVnaXN0cnkuZmllbGRzLkFueU9mRmllbGQ7XG4gICAgY29uc3QgX09uZU9mRmllbGQgPSByZWdpc3RyeS5maWVsZHMuT25lT2ZGaWVsZDtcbiAgICBjb25zdCBpc1JlcGxhY2luZ0FueU9yT25lT2YgPSAodWlTY2hlbWEgPT09IG51bGwgfHwgdWlTY2hlbWEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVpU2NoZW1hWyd1aTpmaWVsZCddKSAmJiAodWlTY2hlbWEgPT09IG51bGwgfHwgdWlTY2hlbWEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVpU2NoZW1hWyd1aTpmaWVsZFJlcGxhY2VzQW55T3JPbmVPZiddKSA9PT0gdHJ1ZTtcbiAgICByZXR1cm4gKF9qc3goRmllbGRUZW1wbGF0ZSwgeyAuLi5maWVsZFByb3BzLCBjaGlsZHJlbjogX2pzeHMoX0ZyYWdtZW50LCB7IGNoaWxkcmVuOiBbZmllbGQsIHNjaGVtYS5hbnlPZiAmJiAhaXNSZXBsYWNpbmdBbnlPck9uZU9mICYmICFzY2hlbWFVdGlscy5pc1NlbGVjdChzY2hlbWEpICYmIChfanN4KF9BbnlPZkZpZWxkLCB7IG5hbWU6IG5hbWUsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZG9ubHk6IHJlYWRvbmx5LCBoaWRlRXJyb3I6IGhpZGVFcnJvciwgZXJyb3JTY2hlbWE6IGVycm9yU2NoZW1hLCBmb3JtRGF0YTogZm9ybURhdGEsIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgaWRQcmVmaXg6IGlkUHJlZml4LCBpZFNjaGVtYTogaWRTY2hlbWEsIGlkU2VwYXJhdG9yOiBpZFNlcGFyYXRvciwgb25CbHVyOiBwcm9wcy5vbkJsdXIsIG9uQ2hhbmdlOiBwcm9wcy5vbkNoYW5nZSwgb25Gb2N1czogcHJvcHMub25Gb2N1cywgb3B0aW9uczogc2NoZW1hLmFueU9mLm1hcCgoX3NjaGVtYSkgPT4gc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEoaXNPYmplY3QoX3NjaGVtYSkgPyBfc2NoZW1hIDoge30sIGZvcm1EYXRhKSksIHJlZ2lzdHJ5OiByZWdpc3RyeSwgcmVxdWlyZWQ6IHJlcXVpcmVkLCBzY2hlbWE6IHNjaGVtYSwgdWlTY2hlbWE6IHVpU2NoZW1hIH0pKSwgc2NoZW1hLm9uZU9mICYmICFpc1JlcGxhY2luZ0FueU9yT25lT2YgJiYgIXNjaGVtYVV0aWxzLmlzU2VsZWN0KHNjaGVtYSkgJiYgKF9qc3goX09uZU9mRmllbGQsIHsgbmFtZTogbmFtZSwgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkb25seTogcmVhZG9ubHksIGhpZGVFcnJvcjogaGlkZUVycm9yLCBlcnJvclNjaGVtYTogZXJyb3JTY2hlbWEsIGZvcm1EYXRhOiBmb3JtRGF0YSwgZm9ybUNvbnRleHQ6IGZvcm1Db250ZXh0LCBpZFByZWZpeDogaWRQcmVmaXgsIGlkU2NoZW1hOiBpZFNjaGVtYSwgaWRTZXBhcmF0b3I6IGlkU2VwYXJhdG9yLCBvbkJsdXI6IHByb3BzLm9uQmx1ciwgb25DaGFuZ2U6IHByb3BzLm9uQ2hhbmdlLCBvbkZvY3VzOiBwcm9wcy5vbkZvY3VzLCBvcHRpb25zOiBzY2hlbWEub25lT2YubWFwKChfc2NoZW1hKSA9PiBzY2hlbWFVdGlscy5yZXRyaWV2ZVNjaGVtYShpc09iamVjdChfc2NoZW1hKSA/IF9zY2hlbWEgOiB7fSwgZm9ybURhdGEpKSwgcmVnaXN0cnk6IHJlZ2lzdHJ5LCByZXF1aXJlZDogcmVxdWlyZWQsIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEgfSkpXSB9KSB9KSk7XG59XG4vKiogVGhlIGBTY2hlbWFGaWVsZGAgY29tcG9uZW50IGRldGVybWluZXMgd2hldGhlciBpdCBpcyBuZWNlc3NhcnkgdG8gcmVyZW5kZXIgdGhlIGNvbXBvbmVudCBiYXNlZCBvbiBhbnkgcHJvcHMgY2hhbmdlc1xuICogYW5kIGlmIHNvLCBjYWxscyB0aGUgYFNjaGVtYUZpZWxkUmVuZGVyYCBjb21wb25lbnQgd2l0aCB0aGUgcHJvcHMuXG4gKi9cbmNsYXNzIFNjaGVtYUZpZWxkIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzaG91bGRDb21wb25lbnRVcGRhdGUobmV4dFByb3BzKSB7XG4gICAgICAgIHJldHVybiAhZGVlcEVxdWFscyh0aGlzLnByb3BzLCBuZXh0UHJvcHMpO1xuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIHJldHVybiBfanN4KFNjaGVtYUZpZWxkUmVuZGVyLCB7IC4uLnRoaXMucHJvcHMgfSk7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgU2NoZW1hRmllbGQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TY2hlbWFGaWVsZC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgZ2V0V2lkZ2V0LCBnZXRVaU9wdGlvbnMsIG9wdGlvbnNMaXN0LCBoYXNXaWRnZXQsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgU3RyaW5nRmllbGRgIGNvbXBvbmVudCBpcyB1c2VkIHRvIHJlbmRlciBhIHNjaGVtYSBmaWVsZCB0aGF0IHJlcHJlc2VudHMgYSBzdHJpbmcgdHlwZVxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgRmllbGRQcm9wc2AgZm9yIHRoaXMgdGVtcGxhdGVcbiAqL1xuZnVuY3Rpb24gU3RyaW5nRmllbGQocHJvcHMpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgeyBzY2hlbWEsIG5hbWUsIHVpU2NoZW1hLCBpZFNjaGVtYSwgZm9ybURhdGEsIHJlcXVpcmVkLCBkaXNhYmxlZCA9IGZhbHNlLCByZWFkb25seSA9IGZhbHNlLCBhdXRvZm9jdXMgPSBmYWxzZSwgb25DaGFuZ2UsIG9uQmx1ciwgb25Gb2N1cywgcmVnaXN0cnksIHJhd0Vycm9ycywgaGlkZUVycm9yLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyB0aXRsZSwgZm9ybWF0IH0gPSBzY2hlbWE7XG4gICAgY29uc3QgeyB3aWRnZXRzLCBmb3JtQ29udGV4dCwgc2NoZW1hVXRpbHMsIGdsb2JhbFVpT3B0aW9ucyB9ID0gcmVnaXN0cnk7XG4gICAgY29uc3QgZW51bU9wdGlvbnMgPSBzY2hlbWFVdGlscy5pc1NlbGVjdChzY2hlbWEpID8gb3B0aW9uc0xpc3Qoc2NoZW1hLCB1aVNjaGVtYSkgOiB1bmRlZmluZWQ7XG4gICAgbGV0IGRlZmF1bHRXaWRnZXQgPSBlbnVtT3B0aW9ucyA/ICdzZWxlY3QnIDogJ3RleHQnO1xuICAgIGlmIChmb3JtYXQgJiYgaGFzV2lkZ2V0KHNjaGVtYSwgZm9ybWF0LCB3aWRnZXRzKSkge1xuICAgICAgICBkZWZhdWx0V2lkZ2V0ID0gZm9ybWF0O1xuICAgIH1cbiAgICBjb25zdCB7IHdpZGdldCA9IGRlZmF1bHRXaWRnZXQsIHBsYWNlaG9sZGVyID0gJycsIHRpdGxlOiB1aVRpdGxlLCAuLi5vcHRpb25zIH0gPSBnZXRVaU9wdGlvbnModWlTY2hlbWEpO1xuICAgIGNvbnN0IGRpc3BsYXlMYWJlbCA9IHNjaGVtYVV0aWxzLmdldERpc3BsYXlMYWJlbChzY2hlbWEsIHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgIGNvbnN0IGxhYmVsID0gKF9hID0gdWlUaXRsZSAhPT0gbnVsbCAmJiB1aVRpdGxlICE9PSB2b2lkIDAgPyB1aVRpdGxlIDogdGl0bGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG5hbWU7XG4gICAgY29uc3QgV2lkZ2V0ID0gZ2V0V2lkZ2V0KHNjaGVtYSwgd2lkZ2V0LCB3aWRnZXRzKTtcbiAgICByZXR1cm4gKF9qc3goV2lkZ2V0LCB7IG9wdGlvbnM6IHsgLi4ub3B0aW9ucywgZW51bU9wdGlvbnMgfSwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgaWQ6IGlkU2NoZW1hLiRpZCwgbmFtZTogbmFtZSwgbGFiZWw6IGxhYmVsLCBoaWRlTGFiZWw6ICFkaXNwbGF5TGFiZWwsIGhpZGVFcnJvcjogaGlkZUVycm9yLCB2YWx1ZTogZm9ybURhdGEsIG9uQ2hhbmdlOiBvbkNoYW5nZSwgb25CbHVyOiBvbkJsdXIsIG9uRm9jdXM6IG9uRm9jdXMsIHJlcXVpcmVkOiByZXF1aXJlZCwgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkb25seTogcmVhZG9ubHksIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgYXV0b2ZvY3VzOiBhdXRvZm9jdXMsIHJlZ2lzdHJ5OiByZWdpc3RyeSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCByYXdFcnJvcnM6IHJhd0Vycm9ycyB9KSk7XG59XG5leHBvcnQgZGVmYXVsdCBTdHJpbmdGaWVsZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVN0cmluZ0ZpZWxkLmpzLm1hcCIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0Jztcbi8qKiBUaGUgYE51bGxGaWVsZGAgY29tcG9uZW50IGlzIHVzZWQgdG8gcmVuZGVyIGEgZmllbGQgaW4gdGhlIHNjaGVtYSBpcyBudWxsLiBJdCBhbHNvIGVuc3VyZXMgdGhhdCB0aGUgYGZvcm1EYXRhYCBpc1xuICogYWxzbyBzZXQgdG8gbnVsbCBpZiBpdCBoYXMgbm8gdmFsdWUuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBGaWVsZFByb3BzYCBmb3IgdGhpcyB0ZW1wbGF0ZVxuICovXG5mdW5jdGlvbiBOdWxsRmllbGQocHJvcHMpIHtcbiAgICBjb25zdCB7IGZvcm1EYXRhLCBvbkNoYW5nZSB9ID0gcHJvcHM7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGZvcm1EYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlKG51bGwpO1xuICAgICAgICB9XG4gICAgfSwgW2Zvcm1EYXRhLCBvbkNoYW5nZV0pO1xuICAgIHJldHVybiBudWxsO1xufVxuZXhwb3J0IGRlZmF1bHQgTnVsbEZpZWxkO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TnVsbEZpZWxkLmpzLm1hcCIsImltcG9ydCBBcnJheUZpZWxkIGZyb20gJy4vQXJyYXlGaWVsZCc7XG5pbXBvcnQgQm9vbGVhbkZpZWxkIGZyb20gJy4vQm9vbGVhbkZpZWxkJztcbmltcG9ydCBNdWx0aVNjaGVtYUZpZWxkIGZyb20gJy4vTXVsdGlTY2hlbWFGaWVsZCc7XG5pbXBvcnQgTnVtYmVyRmllbGQgZnJvbSAnLi9OdW1iZXJGaWVsZCc7XG5pbXBvcnQgT2JqZWN0RmllbGQgZnJvbSAnLi9PYmplY3RGaWVsZCc7XG5pbXBvcnQgU2NoZW1hRmllbGQgZnJvbSAnLi9TY2hlbWFGaWVsZCc7XG5pbXBvcnQgU3RyaW5nRmllbGQgZnJvbSAnLi9TdHJpbmdGaWVsZCc7XG5pbXBvcnQgTnVsbEZpZWxkIGZyb20gJy4vTnVsbEZpZWxkJztcbmZ1bmN0aW9uIGZpZWxkcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBBbnlPZkZpZWxkOiBNdWx0aVNjaGVtYUZpZWxkLFxuICAgICAgICBBcnJheUZpZWxkOiBBcnJheUZpZWxkLFxuICAgICAgICAvLyBBcnJheUZpZWxkIGZhbGxzIGJhY2sgdG8gU2NoZW1hRmllbGQgaWYgQXJyYXlTY2hlbWFGaWVsZCBpcyBub3QgZGVmaW5lZCwgd2hpY2ggaXQgaXNuJ3QgYnkgZGVmYXVsdFxuICAgICAgICBCb29sZWFuRmllbGQsXG4gICAgICAgIE51bWJlckZpZWxkLFxuICAgICAgICBPYmplY3RGaWVsZCxcbiAgICAgICAgT25lT2ZGaWVsZDogTXVsdGlTY2hlbWFGaWVsZCxcbiAgICAgICAgU2NoZW1hRmllbGQsXG4gICAgICAgIFN0cmluZ0ZpZWxkLFxuICAgICAgICBOdWxsRmllbGQsXG4gICAgfTtcbn1cbmV4cG9ydCBkZWZhdWx0IGZpZWxkcztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBkZXNjcmlwdGlvbklkLCBnZXRUZW1wbGF0ZSwgZ2V0VWlPcHRpb25zLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYEFycmF5RmllbGREZXNjcmlwdGlvblRlbXBsYXRlYCBjb21wb25lbnQgcmVuZGVycyBhIGBEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGVgIHdpdGggYW4gYGlkYCBkZXJpdmVkIGZyb21cbiAqIHRoZSBgaWRTY2hlbWFgLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgQXJyYXlGaWVsZERlc2NyaXB0aW9uUHJvcHNgIGZvciB0aGUgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFycmF5RmllbGREZXNjcmlwdGlvblRlbXBsYXRlKHByb3BzKSB7XG4gICAgY29uc3QgeyBpZFNjaGVtYSwgZGVzY3JpcHRpb24sIHJlZ2lzdHJ5LCBzY2hlbWEsIHVpU2NoZW1hIH0gPSBwcm9wcztcbiAgICBjb25zdCBvcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCByZWdpc3RyeS5nbG9iYWxVaU9wdGlvbnMpO1xuICAgIGNvbnN0IHsgbGFiZWw6IGRpc3BsYXlMYWJlbCA9IHRydWUgfSA9IG9wdGlvbnM7XG4gICAgaWYgKCFkZXNjcmlwdGlvbiB8fCAhZGlzcGxheUxhYmVsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnRGVzY3JpcHRpb25GaWVsZFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIHJldHVybiAoX2pzeChEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUsIHsgaWQ6IGRlc2NyaXB0aW9uSWQoaWRTY2hlbWEpLCBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BcnJheUZpZWxkRGVzY3JpcHRpb25UZW1wbGF0ZS5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuLyoqIFRoZSBgQXJyYXlGaWVsZEl0ZW1UZW1wbGF0ZWAgY29tcG9uZW50IGlzIHRoZSB0ZW1wbGF0ZSB1c2VkIHRvIHJlbmRlciBhbiBpdGVtcyBvZiBhbiBhcnJheS5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYEFycmF5RmllbGRUZW1wbGF0ZUl0ZW1UeXBlYCBwcm9wcyBmb3IgdGhlIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBBcnJheUZpZWxkSXRlbVRlbXBsYXRlKHByb3BzKSB7XG4gICAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBkaXNhYmxlZCwgaGFzVG9vbGJhciwgaGFzTW92ZURvd24sIGhhc01vdmVVcCwgaGFzUmVtb3ZlLCBoYXNDb3B5LCBpbmRleCwgb25Db3B5SW5kZXhDbGljaywgb25Ecm9wSW5kZXhDbGljaywgb25SZW9yZGVyQ2xpY2ssIHJlYWRvbmx5LCByZWdpc3RyeSwgdWlTY2hlbWEsIH0gPSBwcm9wcztcbiAgICBjb25zdCB7IENvcHlCdXR0b24sIE1vdmVEb3duQnV0dG9uLCBNb3ZlVXBCdXR0b24sIFJlbW92ZUJ1dHRvbiB9ID0gcmVnaXN0cnkudGVtcGxhdGVzLkJ1dHRvblRlbXBsYXRlcztcbiAgICBjb25zdCBidG5TdHlsZSA9IHtcbiAgICAgICAgZmxleDogMSxcbiAgICAgICAgcGFkZGluZ0xlZnQ6IDYsXG4gICAgICAgIHBhZGRpbmdSaWdodDogNixcbiAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxuICAgIH07XG4gICAgcmV0dXJuIChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lLCBjaGlsZHJlbjogW19qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGhhc1Rvb2xiYXIgPyAnY29sLXhzLTknIDogJ2NvbC14cy0xMicsIGNoaWxkcmVuOiBjaGlsZHJlbiB9KSwgaGFzVG9vbGJhciAmJiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogJ2NvbC14cy0zIGFycmF5LWl0ZW0tdG9vbGJveCcsIGNoaWxkcmVuOiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogJ2J0bi1ncm91cCcsIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWFyb3VuZCcsXG4gICAgICAgICAgICAgICAgICAgIH0sIGNoaWxkcmVuOiBbKGhhc01vdmVVcCB8fCBoYXNNb3ZlRG93bikgJiYgKF9qc3goTW92ZVVwQnV0dG9uLCB7IHN0eWxlOiBidG5TdHlsZSwgZGlzYWJsZWQ6IGRpc2FibGVkIHx8IHJlYWRvbmx5IHx8ICFoYXNNb3ZlVXAsIG9uQ2xpY2s6IG9uUmVvcmRlckNsaWNrKGluZGV4LCBpbmRleCAtIDEpLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSksIChoYXNNb3ZlVXAgfHwgaGFzTW92ZURvd24pICYmIChfanN4KE1vdmVEb3duQnV0dG9uLCB7IHN0eWxlOiBidG5TdHlsZSwgZGlzYWJsZWQ6IGRpc2FibGVkIHx8IHJlYWRvbmx5IHx8ICFoYXNNb3ZlRG93biwgb25DbGljazogb25SZW9yZGVyQ2xpY2soaW5kZXgsIGluZGV4ICsgMSksIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKSwgaGFzQ29weSAmJiAoX2pzeChDb3B5QnV0dG9uLCB7IHN0eWxlOiBidG5TdHlsZSwgZGlzYWJsZWQ6IGRpc2FibGVkIHx8IHJlYWRvbmx5LCBvbkNsaWNrOiBvbkNvcHlJbmRleENsaWNrKGluZGV4KSwgdWlTY2hlbWE6IHVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnkgfSkpLCBoYXNSZW1vdmUgJiYgKF9qc3goUmVtb3ZlQnV0dG9uLCB7IHN0eWxlOiBidG5TdHlsZSwgZGlzYWJsZWQ6IGRpc2FibGVkIHx8IHJlYWRvbmx5LCBvbkNsaWNrOiBvbkRyb3BJbmRleENsaWNrKGluZGV4KSwgdWlTY2hlbWE6IHVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnkgfSkpXSB9KSB9KSldIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFycmF5RmllbGRJdGVtVGVtcGxhdGUuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGdldFRlbXBsYXRlLCBnZXRVaU9wdGlvbnMsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgQXJyYXlGaWVsZFRlbXBsYXRlYCBjb21wb25lbnQgaXMgdGhlIHRlbXBsYXRlIHVzZWQgdG8gcmVuZGVyIGFsbCBpdGVtcyBpbiBhbiBhcnJheS5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYEFycmF5RmllbGRUZW1wbGF0ZUl0ZW1UeXBlYCBwcm9wcyBmb3IgdGhlIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBBcnJheUZpZWxkVGVtcGxhdGUocHJvcHMpIHtcbiAgICBjb25zdCB7IGNhbkFkZCwgY2xhc3NOYW1lLCBkaXNhYmxlZCwgaWRTY2hlbWEsIHVpU2NoZW1hLCBpdGVtcywgb25BZGRDbGljaywgcmVhZG9ubHksIHJlZ2lzdHJ5LCByZXF1aXJlZCwgc2NoZW1hLCB0aXRsZSwgfSA9IHByb3BzO1xuICAgIGNvbnN0IHVpT3B0aW9ucyA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSk7XG4gICAgY29uc3QgQXJyYXlGaWVsZERlc2NyaXB0aW9uVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnQXJyYXlGaWVsZERlc2NyaXB0aW9uVGVtcGxhdGUnLCByZWdpc3RyeSwgdWlPcHRpb25zKTtcbiAgICBjb25zdCBBcnJheUZpZWxkSXRlbVRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0FycmF5RmllbGRJdGVtVGVtcGxhdGUnLCByZWdpc3RyeSwgdWlPcHRpb25zKTtcbiAgICBjb25zdCBBcnJheUZpZWxkVGl0bGVUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdBcnJheUZpZWxkVGl0bGVUZW1wbGF0ZScsIHJlZ2lzdHJ5LCB1aU9wdGlvbnMpO1xuICAgIC8vIEJ1dHRvbiB0ZW1wbGF0ZXMgYXJlIG5vdCBvdmVycmlkZGVuIGluIHRoZSB1aVNjaGVtYVxuICAgIGNvbnN0IHsgQnV0dG9uVGVtcGxhdGVzOiB7IEFkZEJ1dHRvbiB9LCB9ID0gcmVnaXN0cnkudGVtcGxhdGVzO1xuICAgIHJldHVybiAoX2pzeHMoXCJmaWVsZHNldFwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lLCBpZDogaWRTY2hlbWEuJGlkLCBjaGlsZHJlbjogW19qc3goQXJyYXlGaWVsZFRpdGxlVGVtcGxhdGUsIHsgaWRTY2hlbWE6IGlkU2NoZW1hLCB0aXRsZTogdWlPcHRpb25zLnRpdGxlIHx8IHRpdGxlLCByZXF1aXJlZDogcmVxdWlyZWQsIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSwgX2pzeChBcnJheUZpZWxkRGVzY3JpcHRpb25UZW1wbGF0ZSwgeyBpZFNjaGVtYTogaWRTY2hlbWEsIGRlc2NyaXB0aW9uOiB1aU9wdGlvbnMuZGVzY3JpcHRpb24gfHwgc2NoZW1hLmRlc2NyaXB0aW9uLCBzY2hlbWE6IHNjaGVtYSwgdWlTY2hlbWE6IHVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnkgfSksIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdyb3cgYXJyYXktaXRlbS1saXN0JywgY2hpbGRyZW46IGl0ZW1zICYmXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLm1hcCgoeyBrZXksIC4uLml0ZW1Qcm9wcyB9KSA9PiAoX2pzeChBcnJheUZpZWxkSXRlbVRlbXBsYXRlLCB7IC4uLml0ZW1Qcm9wcyB9LCBrZXkpKSkgfSksIGNhbkFkZCAmJiAoX2pzeChBZGRCdXR0b24sIHsgY2xhc3NOYW1lOiAnYXJyYXktaXRlbS1hZGQnLCBvbkNsaWNrOiBvbkFkZENsaWNrLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgcmVhZG9ubHksIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKV0gfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QXJyYXlGaWVsZFRlbXBsYXRlLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSwgZ2V0VWlPcHRpb25zLCB0aXRsZUlkLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYEFycmF5RmllbGRUaXRsZVRlbXBsYXRlYCBjb21wb25lbnQgcmVuZGVycyBhIGBUaXRsZUZpZWxkVGVtcGxhdGVgIHdpdGggYW4gYGlkYCBkZXJpdmVkIGZyb21cbiAqIHRoZSBgaWRTY2hlbWFgLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgQXJyYXlGaWVsZFRpdGxlUHJvcHNgIGZvciB0aGUgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFycmF5RmllbGRUaXRsZVRlbXBsYXRlKHByb3BzKSB7XG4gICAgY29uc3QgeyBpZFNjaGVtYSwgdGl0bGUsIHNjaGVtYSwgdWlTY2hlbWEsIHJlcXVpcmVkLCByZWdpc3RyeSB9ID0gcHJvcHM7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSwgcmVnaXN0cnkuZ2xvYmFsVWlPcHRpb25zKTtcbiAgICBjb25zdCB7IGxhYmVsOiBkaXNwbGF5TGFiZWwgPSB0cnVlIH0gPSBvcHRpb25zO1xuICAgIGlmICghdGl0bGUgfHwgIWRpc3BsYXlMYWJlbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgVGl0bGVGaWVsZFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ1RpdGxlRmllbGRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICByZXR1cm4gKF9qc3goVGl0bGVGaWVsZFRlbXBsYXRlLCB7IGlkOiB0aXRsZUlkKGlkU2NoZW1hKSwgdGl0bGU6IHRpdGxlLCByZXF1aXJlZDogcmVxdWlyZWQsIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BcnJheUZpZWxkVGl0bGVUZW1wbGF0ZS5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwgRnJhZ21lbnQgYXMgX0ZyYWdtZW50LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGFyaWFEZXNjcmliZWRCeUlkcywgZXhhbXBsZXNJZCwgZ2V0SW5wdXRQcm9wcywgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBCYXNlSW5wdXRUZW1wbGF0ZWAgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGJhc2ljIGA8aW5wdXQ+YCBjb21wb25lbnQgZm9yIHRoZSBgY29yZWAgdGhlbWUuXG4gKiBJdCBpcyB1c2VkIGFzIHRoZSB0ZW1wbGF0ZSBmb3IgcmVuZGVyaW5nIG1hbnkgb2YgdGhlIDxpbnB1dD4gYmFzZWQgd2lkZ2V0cyB0aGF0IGRpZmZlciBieSBgdHlwZWAgYW5kIGNhbGxiYWNrcyBvbmx5LlxuICogSXQgY2FuIGJlIGN1c3RvbWl6ZWQvb3ZlcnJpZGRlbiBmb3Igb3RoZXIgdGhlbWVzIG9yIGluZGl2aWR1YWwgaW1wbGVtZW50YXRpb25zIGFzIG5lZWRlZC5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyB0ZW1wbGF0ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCYXNlSW5wdXRUZW1wbGF0ZShwcm9wcykge1xuICAgIGNvbnN0IHsgaWQsIG5hbWUsIC8vIHJlbW92ZSB0aGlzIGZyb20gLi4ucmVzdFxuICAgIHZhbHVlLCByZWFkb25seSwgZGlzYWJsZWQsIGF1dG9mb2N1cywgb25CbHVyLCBvbkZvY3VzLCBvbkNoYW5nZSwgb25DaGFuZ2VPdmVycmlkZSwgb3B0aW9ucywgc2NoZW1hLCB1aVNjaGVtYSwgZm9ybUNvbnRleHQsIHJlZ2lzdHJ5LCByYXdFcnJvcnMsIHR5cGUsIGhpZGVMYWJlbCwgLy8gcmVtb3ZlIHRoaXMgZnJvbSAuLi5yZXN0XG4gICAgaGlkZUVycm9yLCAvLyByZW1vdmUgdGhpcyBmcm9tIC4uLnJlc3RcbiAgICAuLi5yZXN0IH0gPSBwcm9wcztcbiAgICAvLyBOb3RlOiBzaW5jZSBSZWFjdCAxNS4yLjAgd2UgY2FuJ3QgZm9yd2FyZCB1bmtub3duIGVsZW1lbnQgYXR0cmlidXRlcywgc28gd2VcbiAgICAvLyBleGNsdWRlIHRoZSBcIm9wdGlvbnNcIiBhbmQgXCJzY2hlbWFcIiBvbmVzIGhlcmUuXG4gICAgaWYgKCFpZCkge1xuICAgICAgICBjb25zb2xlLmxvZygnTm8gaWQgZm9yJywgcHJvcHMpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYG5vIGlkIGZvciBwcm9wcyAke0pTT04uc3RyaW5naWZ5KHByb3BzKX1gKTtcbiAgICB9XG4gICAgY29uc3QgaW5wdXRQcm9wcyA9IHtcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgICAgLi4uZ2V0SW5wdXRQcm9wcyhzY2hlbWEsIHR5cGUsIG9wdGlvbnMpLFxuICAgIH07XG4gICAgbGV0IGlucHV0VmFsdWU7XG4gICAgaWYgKGlucHV0UHJvcHMudHlwZSA9PT0gJ251bWJlcicgfHwgaW5wdXRQcm9wcy50eXBlID09PSAnaW50ZWdlcicpIHtcbiAgICAgICAgaW5wdXRWYWx1ZSA9IHZhbHVlIHx8IHZhbHVlID09PSAwID8gdmFsdWUgOiAnJztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGlucHV0VmFsdWUgPSB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZTtcbiAgICB9XG4gICAgY29uc3QgX29uQ2hhbmdlID0gdXNlQ2FsbGJhY2soKHsgdGFyZ2V0OiB7IHZhbHVlIH0gfSkgPT4gb25DaGFuZ2UodmFsdWUgPT09ICcnID8gb3B0aW9ucy5lbXB0eVZhbHVlIDogdmFsdWUpLCBbb25DaGFuZ2UsIG9wdGlvbnNdKTtcbiAgICBjb25zdCBfb25CbHVyID0gdXNlQ2FsbGJhY2soKHsgdGFyZ2V0IH0pID0+IG9uQmx1cihpZCwgdGFyZ2V0ICYmIHRhcmdldC52YWx1ZSksIFtvbkJsdXIsIGlkXSk7XG4gICAgY29uc3QgX29uRm9jdXMgPSB1c2VDYWxsYmFjaygoeyB0YXJnZXQgfSkgPT4gb25Gb2N1cyhpZCwgdGFyZ2V0ICYmIHRhcmdldC52YWx1ZSksIFtvbkZvY3VzLCBpZF0pO1xuICAgIHJldHVybiAoX2pzeHMoX0ZyYWdtZW50LCB7IGNoaWxkcmVuOiBbX2pzeChcImlucHV0XCIsIHsgaWQ6IGlkLCBuYW1lOiBpZCwgY2xhc3NOYW1lOiAnZm9ybS1jb250cm9sJywgcmVhZE9ubHk6IHJlYWRvbmx5LCBkaXNhYmxlZDogZGlzYWJsZWQsIGF1dG9Gb2N1czogYXV0b2ZvY3VzLCB2YWx1ZTogaW5wdXRWYWx1ZSwgLi4uaW5wdXRQcm9wcywgbGlzdDogc2NoZW1hLmV4YW1wbGVzID8gZXhhbXBsZXNJZChpZCkgOiB1bmRlZmluZWQsIG9uQ2hhbmdlOiBvbkNoYW5nZU92ZXJyaWRlIHx8IF9vbkNoYW5nZSwgb25CbHVyOiBfb25CbHVyLCBvbkZvY3VzOiBfb25Gb2N1cywgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGFyaWFEZXNjcmliZWRCeUlkcyhpZCwgISFzY2hlbWEuZXhhbXBsZXMpIH0pLCBBcnJheS5pc0FycmF5KHNjaGVtYS5leGFtcGxlcykgJiYgKF9qc3goXCJkYXRhbGlzdFwiLCB7IGlkOiBleGFtcGxlc0lkKGlkKSwgY2hpbGRyZW46IHNjaGVtYS5leGFtcGxlc1xuICAgICAgICAgICAgICAgICAgICAuY29uY2F0KHNjaGVtYS5kZWZhdWx0ICYmICFzY2hlbWEuZXhhbXBsZXMuaW5jbHVkZXMoc2NoZW1hLmRlZmF1bHQpID8gW3NjaGVtYS5kZWZhdWx0XSA6IFtdKVxuICAgICAgICAgICAgICAgICAgICAubWFwKChleGFtcGxlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfanN4KFwib3B0aW9uXCIsIHsgdmFsdWU6IGV4YW1wbGUgfSwgZXhhbXBsZSk7XG4gICAgICAgICAgICAgICAgfSkgfSwgYGRhdGFsaXN0XyR7aWR9YCkpXSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1CYXNlSW5wdXRUZW1wbGF0ZS5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgZ2V0U3VibWl0QnV0dG9uT3B0aW9ucyB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYFN1Ym1pdEJ1dHRvbmAgcmVuZGVycyBhIGJ1dHRvbiB0aGF0IHJlcHJlc2VudCB0aGUgYFN1Ym1pdGAgYWN0aW9uIG9uIGEgZm9ybVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTdWJtaXRCdXR0b24oeyB1aVNjaGVtYSB9KSB7XG4gICAgY29uc3QgeyBzdWJtaXRUZXh0LCBub3JlbmRlciwgcHJvcHM6IHN1Ym1pdEJ1dHRvblByb3BzID0ge30gfSA9IGdldFN1Ym1pdEJ1dHRvbk9wdGlvbnModWlTY2hlbWEpO1xuICAgIGlmIChub3JlbmRlcikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgY2hpbGRyZW46IF9qc3goXCJidXR0b25cIiwgeyB0eXBlOiAnc3VibWl0JywgLi4uc3VibWl0QnV0dG9uUHJvcHMsIGNsYXNzTmFtZTogYGJ0biBidG4taW5mbyAke3N1Ym1pdEJ1dHRvblByb3BzLmNsYXNzTmFtZSB8fCAnJ31gLCBjaGlsZHJlbjogc3VibWl0VGV4dCB9KSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TdWJtaXRCdXR0b24uanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IFRyYW5zbGF0YWJsZVN0cmluZyB9IGZyb20gJ0ByanNmL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEljb25CdXR0b24ocHJvcHMpIHtcbiAgICBjb25zdCB7IGljb25UeXBlID0gJ2RlZmF1bHQnLCBpY29uLCBjbGFzc05hbWUsIHVpU2NoZW1hLCByZWdpc3RyeSwgLi4ub3RoZXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIChfanN4KFwiYnV0dG9uXCIsIHsgdHlwZTogJ2J1dHRvbicsIGNsYXNzTmFtZTogYGJ0biBidG4tJHtpY29uVHlwZX0gJHtjbGFzc05hbWV9YCwgLi4ub3RoZXJQcm9wcywgY2hpbGRyZW46IF9qc3goXCJpXCIsIHsgY2xhc3NOYW1lOiBgZ2x5cGhpY29uIGdseXBoaWNvbi0ke2ljb259YCB9KSB9KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gQ29weUJ1dHRvbihwcm9wcykge1xuICAgIGNvbnN0IHsgcmVnaXN0cnk6IHsgdHJhbnNsYXRlU3RyaW5nIH0sIH0gPSBwcm9wcztcbiAgICByZXR1cm4gKF9qc3goSWNvbkJ1dHRvbiwgeyB0aXRsZTogdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5Db3B5QnV0dG9uKSwgY2xhc3NOYW1lOiAnYXJyYXktaXRlbS1jb3B5JywgLi4ucHJvcHMsIGljb246ICdjb3B5JyB9KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gTW92ZURvd25CdXR0b24ocHJvcHMpIHtcbiAgICBjb25zdCB7IHJlZ2lzdHJ5OiB7IHRyYW5zbGF0ZVN0cmluZyB9LCB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIChfanN4KEljb25CdXR0b24sIHsgdGl0bGU6IHRyYW5zbGF0ZVN0cmluZyhUcmFuc2xhdGFibGVTdHJpbmcuTW92ZURvd25CdXR0b24pLCBjbGFzc05hbWU6ICdhcnJheS1pdGVtLW1vdmUtZG93bicsIC4uLnByb3BzLCBpY29uOiAnYXJyb3ctZG93bicgfSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIE1vdmVVcEJ1dHRvbihwcm9wcykge1xuICAgIGNvbnN0IHsgcmVnaXN0cnk6IHsgdHJhbnNsYXRlU3RyaW5nIH0sIH0gPSBwcm9wcztcbiAgICByZXR1cm4gKF9qc3goSWNvbkJ1dHRvbiwgeyB0aXRsZTogdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5Nb3ZlVXBCdXR0b24pLCBjbGFzc05hbWU6ICdhcnJheS1pdGVtLW1vdmUtdXAnLCAuLi5wcm9wcywgaWNvbjogJ2Fycm93LXVwJyB9KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gUmVtb3ZlQnV0dG9uKHByb3BzKSB7XG4gICAgY29uc3QgeyByZWdpc3RyeTogeyB0cmFuc2xhdGVTdHJpbmcgfSwgfSA9IHByb3BzO1xuICAgIHJldHVybiAoX2pzeChJY29uQnV0dG9uLCB7IHRpdGxlOiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLlJlbW92ZUJ1dHRvbiksIGNsYXNzTmFtZTogJ2FycmF5LWl0ZW0tcmVtb3ZlJywgLi4ucHJvcHMsIGljb25UeXBlOiAnZGFuZ2VyJywgaWNvbjogJ3JlbW92ZScgfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SWNvbkJ1dHRvbi5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgVHJhbnNsYXRhYmxlU3RyaW5nIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuaW1wb3J0IEljb25CdXR0b24gZnJvbSAnLi9JY29uQnV0dG9uJztcbi8qKiBUaGUgYEFkZEJ1dHRvbmAgcmVuZGVycyBhIGJ1dHRvbiB0aGF0IHJlcHJlc2VudCB0aGUgYEFkZGAgYWN0aW9uIG9uIGEgZm9ybVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBBZGRCdXR0b24oeyBjbGFzc05hbWUsIG9uQ2xpY2ssIGRpc2FibGVkLCByZWdpc3RyeSwgfSkge1xuICAgIGNvbnN0IHsgdHJhbnNsYXRlU3RyaW5nIH0gPSByZWdpc3RyeTtcbiAgICByZXR1cm4gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdyb3cnLCBjaGlsZHJlbjogX2pzeChcInBcIiwgeyBjbGFzc05hbWU6IGBjb2wteHMtMyBjb2wteHMtb2Zmc2V0LTkgdGV4dC1yaWdodCAke2NsYXNzTmFtZX1gLCBjaGlsZHJlbjogX2pzeChJY29uQnV0dG9uLCB7IGljb25UeXBlOiAnaW5mbycsIGljb246ICdwbHVzJywgY2xhc3NOYW1lOiAnYnRuLWFkZCBjb2wteHMtMTInLCB0aXRsZTogdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5BZGRCdXR0b24pLCBvbkNsaWNrOiBvbkNsaWNrLCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSB9KSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BZGRCdXR0b24uanMubWFwIiwiaW1wb3J0IFN1Ym1pdEJ1dHRvbiBmcm9tICcuL1N1Ym1pdEJ1dHRvbic7XG5pbXBvcnQgQWRkQnV0dG9uIGZyb20gJy4vQWRkQnV0dG9uJztcbmltcG9ydCB7IENvcHlCdXR0b24sIE1vdmVEb3duQnV0dG9uLCBNb3ZlVXBCdXR0b24sIFJlbW92ZUJ1dHRvbiB9IGZyb20gJy4vSWNvbkJ1dHRvbic7XG5mdW5jdGlvbiBidXR0b25UZW1wbGF0ZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgU3VibWl0QnV0dG9uLFxuICAgICAgICBBZGRCdXR0b24sXG4gICAgICAgIENvcHlCdXR0b24sXG4gICAgICAgIE1vdmVEb3duQnV0dG9uLFxuICAgICAgICBNb3ZlVXBCdXR0b24sXG4gICAgICAgIFJlbW92ZUJ1dHRvbixcbiAgICB9O1xufVxuZXhwb3J0IGRlZmF1bHQgYnV0dG9uVGVtcGxhdGVzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbi8qKiBUaGUgYERlc2NyaXB0aW9uRmllbGRgIGlzIHRoZSB0ZW1wbGF0ZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBkZXNjcmlwdGlvbiBvZiBhIGZpZWxkXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBEZXNjcmlwdGlvbkZpZWxkUHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEZXNjcmlwdGlvbkZpZWxkKHByb3BzKSB7XG4gICAgY29uc3QgeyBpZCwgZGVzY3JpcHRpb24gfSA9IHByb3BzO1xuICAgIGlmICghZGVzY3JpcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiAoX2pzeChcInBcIiwgeyBpZDogaWQsIGNsYXNzTmFtZTogJ2ZpZWxkLWRlc2NyaXB0aW9uJywgY2hpbGRyZW46IGRlc2NyaXB0aW9uIH0pKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiAoX2pzeChcImRpdlwiLCB7IGlkOiBpZCwgY2xhc3NOYW1lOiAnZmllbGQtZGVzY3JpcHRpb24nLCBjaGlsZHJlbjogZGVzY3JpcHRpb24gfSkpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURlc2NyaXB0aW9uRmllbGQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IFRyYW5zbGF0YWJsZVN0cmluZywgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBFcnJvckxpc3RgIGNvbXBvbmVudCBpcyB0aGUgdGVtcGxhdGUgdGhhdCByZW5kZXJzIHRoZSBhbGwgdGhlIGVycm9ycyBhc3NvY2lhdGVkIHdpdGggdGhlIGZpZWxkcyBpbiB0aGUgYEZvcm1gXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBFcnJvckxpc3RQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEVycm9yTGlzdCh7IGVycm9ycywgcmVnaXN0cnksIH0pIHtcbiAgICBjb25zdCB7IHRyYW5zbGF0ZVN0cmluZyB9ID0gcmVnaXN0cnk7XG4gICAgcmV0dXJuIChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogJ3BhbmVsIHBhbmVsLWRhbmdlciBlcnJvcnMnLCBjaGlsZHJlbjogW19qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdwYW5lbC1oZWFkaW5nJywgY2hpbGRyZW46IF9qc3goXCJoM1wiLCB7IGNsYXNzTmFtZTogJ3BhbmVsLXRpdGxlJywgY2hpbGRyZW46IHRyYW5zbGF0ZVN0cmluZyhUcmFuc2xhdGFibGVTdHJpbmcuRXJyb3JzTGFiZWwpIH0pIH0pLCBfanN4KFwidWxcIiwgeyBjbGFzc05hbWU6ICdsaXN0LWdyb3VwJywgY2hpbGRyZW46IGVycm9ycy5tYXAoKGVycm9yLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoX2pzeChcImxpXCIsIHsgY2xhc3NOYW1lOiAnbGlzdC1ncm91cC1pdGVtIHRleHQtZGFuZ2VyJywgY2hpbGRyZW46IGVycm9yLnN0YWNrIH0sIGkpKTtcbiAgICAgICAgICAgICAgICB9KSB9KV0gfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXJyb3JMaXN0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBSRVFVSVJFRF9GSUVMRF9TWU1CT0wgPSAnKic7XG4vKiogUmVuZGVycyBhIGxhYmVsIGZvciBhIGZpZWxkXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBMYWJlbFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTGFiZWwocHJvcHMpIHtcbiAgICBjb25zdCB7IGxhYmVsLCByZXF1aXJlZCwgaWQgfSA9IHByb3BzO1xuICAgIGlmICghbGFiZWwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiAoX2pzeHMoXCJsYWJlbFwiLCB7IGNsYXNzTmFtZTogJ2NvbnRyb2wtbGFiZWwnLCBodG1sRm9yOiBpZCwgY2hpbGRyZW46IFtsYWJlbCwgcmVxdWlyZWQgJiYgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6ICdyZXF1aXJlZCcsIGNoaWxkcmVuOiBSRVFVSVJFRF9GSUVMRF9TWU1CT0wgfSldIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUxhYmVsLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSwgZ2V0VWlPcHRpb25zLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbmltcG9ydCBMYWJlbCBmcm9tICcuL0xhYmVsJztcbi8qKiBUaGUgYEZpZWxkVGVtcGxhdGVgIGNvbXBvbmVudCBpcyB0aGUgdGVtcGxhdGUgdXNlZCBieSBgU2NoZW1hRmllbGRgIHRvIHJlbmRlciBhbnkgZmllbGQuIEl0IHJlbmRlcnMgdGhlIGZpZWxkXG4gKiBjb250ZW50LCAobGFiZWwsIGRlc2NyaXB0aW9uLCBjaGlsZHJlbiwgZXJyb3JzIGFuZCBoZWxwKSBpbnNpZGUgb2YgYSBgV3JhcElmQWRkaXRpb25hbGAgY29tcG9uZW50LlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgRmllbGRUZW1wbGF0ZVByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRmllbGRUZW1wbGF0ZShwcm9wcykge1xuICAgIGNvbnN0IHsgaWQsIGxhYmVsLCBjaGlsZHJlbiwgZXJyb3JzLCBoZWxwLCBkZXNjcmlwdGlvbiwgaGlkZGVuLCByZXF1aXJlZCwgZGlzcGxheUxhYmVsLCByZWdpc3RyeSwgdWlTY2hlbWEgfSA9IHByb3BzO1xuICAgIGNvbnN0IHVpT3B0aW9ucyA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSk7XG4gICAgY29uc3QgV3JhcElmQWRkaXRpb25hbFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ1dyYXBJZkFkZGl0aW9uYWxUZW1wbGF0ZScsIHJlZ2lzdHJ5LCB1aU9wdGlvbnMpO1xuICAgIGlmIChoaWRkZW4pIHtcbiAgICAgICAgcmV0dXJuIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdoaWRkZW4nLCBjaGlsZHJlbjogY2hpbGRyZW4gfSk7XG4gICAgfVxuICAgIHJldHVybiAoX2pzeHMoV3JhcElmQWRkaXRpb25hbFRlbXBsYXRlLCB7IC4uLnByb3BzLCBjaGlsZHJlbjogW2Rpc3BsYXlMYWJlbCAmJiBfanN4KExhYmVsLCB7IGxhYmVsOiBsYWJlbCwgcmVxdWlyZWQ6IHJlcXVpcmVkLCBpZDogaWQgfSksIGRpc3BsYXlMYWJlbCAmJiBkZXNjcmlwdGlvbiA/IGRlc2NyaXB0aW9uIDogbnVsbCwgY2hpbGRyZW4sIGVycm9ycywgaGVscF0gfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RmllbGRUZW1wbGF0ZS5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgZXJyb3JJZCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYEZpZWxkRXJyb3JUZW1wbGF0ZWAgY29tcG9uZW50IHJlbmRlcnMgdGhlIGVycm9ycyBsb2NhbCB0byB0aGUgcGFydGljdWxhciBmaWVsZFxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgRmllbGRFcnJvclByb3BzYCBmb3IgdGhlIGVycm9ycyBiZWluZyByZW5kZXJlZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBGaWVsZEVycm9yVGVtcGxhdGUocHJvcHMpIHtcbiAgICBjb25zdCB7IGVycm9ycyA9IFtdLCBpZFNjaGVtYSB9ID0gcHJvcHM7XG4gICAgaWYgKGVycm9ycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGlkID0gZXJyb3JJZChpZFNjaGVtYSk7XG4gICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgY2hpbGRyZW46IF9qc3goXCJ1bFwiLCB7IGlkOiBpZCwgY2xhc3NOYW1lOiAnZXJyb3ItZGV0YWlsIGJzLWNhbGxvdXQgYnMtY2FsbG91dC1pbmZvJywgY2hpbGRyZW46IGVycm9yc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGVsZW0pID0+ICEhZWxlbSlcbiAgICAgICAgICAgICAgICAubWFwKChlcnJvciwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKF9qc3goXCJsaVwiLCB7IGNsYXNzTmFtZTogJ3RleHQtZGFuZ2VyJywgY2hpbGRyZW46IGVycm9yIH0sIGluZGV4KSk7XG4gICAgICAgICAgICB9KSB9KSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GaWVsZEVycm9yVGVtcGxhdGUuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGhlbHBJZCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYEZpZWxkSGVscFRlbXBsYXRlYCBjb21wb25lbnQgcmVuZGVycyBhbnkgaGVscCBkZXNpcmVkIGZvciBhIGZpZWxkXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBGaWVsZEhlbHBQcm9wc2AgdG8gYmUgcmVuZGVyZWRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRmllbGRIZWxwVGVtcGxhdGUocHJvcHMpIHtcbiAgICBjb25zdCB7IGlkU2NoZW1hLCBoZWxwIH0gPSBwcm9wcztcbiAgICBpZiAoIWhlbHApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGlkID0gaGVscElkKGlkU2NoZW1hKTtcbiAgICBpZiAodHlwZW9mIGhlbHAgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiAoX2pzeChcInBcIiwgeyBpZDogaWQsIGNsYXNzTmFtZTogJ2hlbHAtYmxvY2snLCBjaGlsZHJlbjogaGVscCB9KSk7XG4gICAgfVxuICAgIHJldHVybiAoX2pzeChcImRpdlwiLCB7IGlkOiBpZCwgY2xhc3NOYW1lOiAnaGVscC1ibG9jaycsIGNoaWxkcmVuOiBoZWxwIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZpZWxkSGVscFRlbXBsYXRlLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBjYW5FeHBhbmQsIGRlc2NyaXB0aW9uSWQsIGdldFRlbXBsYXRlLCBnZXRVaU9wdGlvbnMsIHRpdGxlSWQsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgT2JqZWN0RmllbGRUZW1wbGF0ZWAgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgYWxsIHRoZSBpbm5lciBwcm9wZXJ0aWVzIG9mIGFuIG9iamVjdCBhbG9uZyB3aXRoIHRoZVxuICogdGl0bGUgYW5kIGRlc2NyaXB0aW9uIGlmIGF2YWlsYWJsZS4gSWYgdGhlIG9iamVjdCBpcyBleHBhbmRhYmxlLCB0aGVuIGFuIGBBZGRCdXR0b25gIGlzIGFsc28gcmVuZGVyZWQgYWZ0ZXIgYWxsXG4gKiB0aGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYE9iamVjdEZpZWxkVGVtcGxhdGVQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE9iamVjdEZpZWxkVGVtcGxhdGUocHJvcHMpIHtcbiAgICBjb25zdCB7IGRlc2NyaXB0aW9uLCBkaXNhYmxlZCwgZm9ybURhdGEsIGlkU2NoZW1hLCBvbkFkZENsaWNrLCBwcm9wZXJ0aWVzLCByZWFkb25seSwgcmVnaXN0cnksIHJlcXVpcmVkLCBzY2hlbWEsIHRpdGxlLCB1aVNjaGVtYSwgfSA9IHByb3BzO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRVaU9wdGlvbnModWlTY2hlbWEpO1xuICAgIGNvbnN0IFRpdGxlRmllbGRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdUaXRsZUZpZWxkVGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgY29uc3QgRGVzY3JpcHRpb25GaWVsZFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0Rlc2NyaXB0aW9uRmllbGRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICAvLyBCdXR0b24gdGVtcGxhdGVzIGFyZSBub3Qgb3ZlcnJpZGRlbiBpbiB0aGUgdWlTY2hlbWFcbiAgICBjb25zdCB7IEJ1dHRvblRlbXBsYXRlczogeyBBZGRCdXR0b24gfSwgfSA9IHJlZ2lzdHJ5LnRlbXBsYXRlcztcbiAgICByZXR1cm4gKF9qc3hzKFwiZmllbGRzZXRcIiwgeyBpZDogaWRTY2hlbWEuJGlkLCBjaGlsZHJlbjogW3RpdGxlICYmIChfanN4KFRpdGxlRmllbGRUZW1wbGF0ZSwgeyBpZDogdGl0bGVJZChpZFNjaGVtYSksIHRpdGxlOiB0aXRsZSwgcmVxdWlyZWQ6IHJlcXVpcmVkLCBzY2hlbWE6IHNjaGVtYSwgdWlTY2hlbWE6IHVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnkgfSkpLCBkZXNjcmlwdGlvbiAmJiAoX2pzeChEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUsIHsgaWQ6IGRlc2NyaXB0aW9uSWQoaWRTY2hlbWEpLCBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSksIHByb3BlcnRpZXMubWFwKChwcm9wKSA9PiBwcm9wLmNvbnRlbnQpLCBjYW5FeHBhbmQoc2NoZW1hLCB1aVNjaGVtYSwgZm9ybURhdGEpICYmIChfanN4KEFkZEJ1dHRvbiwgeyBjbGFzc05hbWU6ICdvYmplY3QtcHJvcGVydHktZXhwYW5kJywgb25DbGljazogb25BZGRDbGljayhzY2hlbWEpLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgcmVhZG9ubHksIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKV0gfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9T2JqZWN0RmllbGRUZW1wbGF0ZS5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgUkVRVUlSRURfRklFTERfU1lNQk9MID0gJyonO1xuLyoqIFRoZSBgVGl0bGVGaWVsZGAgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIHRpdGxlIG9mIGEgZmllbGRcbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFRpdGxlRmllbGRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFRpdGxlRmllbGQocHJvcHMpIHtcbiAgICBjb25zdCB7IGlkLCB0aXRsZSwgcmVxdWlyZWQgfSA9IHByb3BzO1xuICAgIHJldHVybiAoX2pzeHMoXCJsZWdlbmRcIiwgeyBpZDogaWQsIGNoaWxkcmVuOiBbdGl0bGUsIHJlcXVpcmVkICYmIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiAncmVxdWlyZWQnLCBjaGlsZHJlbjogUkVRVUlSRURfRklFTERfU1lNQk9MIH0pXSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaXRsZUZpZWxkLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGFibGVTdHJpbmcgfSBmcm9tICdAcmpzZi91dGlscyc7XG5pbXBvcnQgTWFya2Rvd24gZnJvbSAnbWFya2Rvd24tdG8tanN4Jztcbi8qKiBUaGUgYFVuc3VwcG9ydGVkRmllbGRgIGNvbXBvbmVudCBpcyB1c2VkIHRvIHJlbmRlciBhIGZpZWxkIGluIHRoZSBzY2hlbWEgaXMgb25lIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieVxuICogcmVhY3QtanNvbnNjaGVtYS1mb3JtLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgRmllbGRQcm9wc2AgZm9yIHRoaXMgdGVtcGxhdGVcbiAqL1xuZnVuY3Rpb24gVW5zdXBwb3J0ZWRGaWVsZChwcm9wcykge1xuICAgIGNvbnN0IHsgc2NoZW1hLCBpZFNjaGVtYSwgcmVhc29uLCByZWdpc3RyeSB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyB0cmFuc2xhdGVTdHJpbmcgfSA9IHJlZ2lzdHJ5O1xuICAgIGxldCB0cmFuc2xhdGVFbnVtID0gVHJhbnNsYXRhYmxlU3RyaW5nLlVuc3VwcG9ydGVkRmllbGQ7XG4gICAgY29uc3QgdHJhbnNsYXRlUGFyYW1zID0gW107XG4gICAgaWYgKGlkU2NoZW1hICYmIGlkU2NoZW1hLiRpZCkge1xuICAgICAgICB0cmFuc2xhdGVFbnVtID0gVHJhbnNsYXRhYmxlU3RyaW5nLlVuc3VwcG9ydGVkRmllbGRXaXRoSWQ7XG4gICAgICAgIHRyYW5zbGF0ZVBhcmFtcy5wdXNoKGlkU2NoZW1hLiRpZCk7XG4gICAgfVxuICAgIGlmIChyZWFzb24pIHtcbiAgICAgICAgdHJhbnNsYXRlRW51bSA9XG4gICAgICAgICAgICB0cmFuc2xhdGVFbnVtID09PSBUcmFuc2xhdGFibGVTdHJpbmcuVW5zdXBwb3J0ZWRGaWVsZFxuICAgICAgICAgICAgICAgID8gVHJhbnNsYXRhYmxlU3RyaW5nLlVuc3VwcG9ydGVkRmllbGRXaXRoUmVhc29uXG4gICAgICAgICAgICAgICAgOiBUcmFuc2xhdGFibGVTdHJpbmcuVW5zdXBwb3J0ZWRGaWVsZFdpdGhJZEFuZFJlYXNvbjtcbiAgICAgICAgdHJhbnNsYXRlUGFyYW1zLnB1c2gocmVhc29uKTtcbiAgICB9XG4gICAgcmV0dXJuIChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogJ3Vuc3VwcG9ydGVkLWZpZWxkJywgY2hpbGRyZW46IFtfanN4KFwicFwiLCB7IGNoaWxkcmVuOiBfanN4KE1hcmtkb3duLCB7IG9wdGlvbnM6IHsgZGlzYWJsZVBhcnNpbmdSYXdIVE1MOiB0cnVlIH0sIGNoaWxkcmVuOiB0cmFuc2xhdGVTdHJpbmcodHJhbnNsYXRlRW51bSwgdHJhbnNsYXRlUGFyYW1zKSB9KSB9KSwgc2NoZW1hICYmIF9qc3goXCJwcmVcIiwgeyBjaGlsZHJlbjogSlNPTi5zdHJpbmdpZnkoc2NoZW1hLCBudWxsLCAyKSB9KV0gfSkpO1xufVxuZXhwb3J0IGRlZmF1bHQgVW5zdXBwb3J0ZWRGaWVsZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVVuc3VwcG9ydGVkRmllbGQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IEFERElUSU9OQUxfUFJPUEVSVFlfRkxBRywgVHJhbnNsYXRhYmxlU3RyaW5nLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbmltcG9ydCBMYWJlbCBmcm9tICcuL0ZpZWxkVGVtcGxhdGUvTGFiZWwnO1xuLyoqIFRoZSBgV3JhcElmQWRkaXRpb25hbGAgY29tcG9uZW50IGlzIHVzZWQgYnkgdGhlIGBGaWVsZFRlbXBsYXRlYCB0byByZW5hbWUsIG9yIHJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQgYXJlXG4gKiBwYXJ0IG9mIGFuIGBhZGRpdGlvbmFsUHJvcGVydGllc2AgcGFydCBvZiBhIHNjaGVtYS5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdyYXBJZkFkZGl0aW9uYWxQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFdyYXBJZkFkZGl0aW9uYWxUZW1wbGF0ZShwcm9wcykge1xuICAgIGNvbnN0IHsgaWQsIGNsYXNzTmFtZXMsIHN0eWxlLCBkaXNhYmxlZCwgbGFiZWwsIG9uS2V5Q2hhbmdlLCBvbkRyb3BQcm9wZXJ0eUNsaWNrLCByZWFkb25seSwgcmVxdWlyZWQsIHNjaGVtYSwgY2hpbGRyZW4sIHVpU2NoZW1hLCByZWdpc3RyeSwgfSA9IHByb3BzO1xuICAgIGNvbnN0IHsgdGVtcGxhdGVzLCB0cmFuc2xhdGVTdHJpbmcgfSA9IHJlZ2lzdHJ5O1xuICAgIC8vIEJ1dHRvbiB0ZW1wbGF0ZXMgYXJlIG5vdCBvdmVycmlkZGVuIGluIHRoZSB1aVNjaGVtYVxuICAgIGNvbnN0IHsgUmVtb3ZlQnV0dG9uIH0gPSB0ZW1wbGF0ZXMuQnV0dG9uVGVtcGxhdGVzO1xuICAgIGNvbnN0IGtleUxhYmVsID0gdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5LZXlMYWJlbCwgW2xhYmVsXSk7XG4gICAgY29uc3QgYWRkaXRpb25hbCA9IEFERElUSU9OQUxfUFJPUEVSVFlfRkxBRyBpbiBzY2hlbWE7XG4gICAgaWYgKCFhZGRpdGlvbmFsKSB7XG4gICAgICAgIHJldHVybiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcywgc3R5bGU6IHN0eWxlLCBjaGlsZHJlbjogY2hpbGRyZW4gfSkpO1xuICAgIH1cbiAgICByZXR1cm4gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZXMsIHN0eWxlOiBzdHlsZSwgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAncm93JywgY2hpbGRyZW46IFtfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAnY29sLXhzLTUgZm9ybS1hZGRpdGlvbmFsJywgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAnZm9ybS1ncm91cCcsIGNoaWxkcmVuOiBbX2pzeChMYWJlbCwgeyBsYWJlbDoga2V5TGFiZWwsIHJlcXVpcmVkOiByZXF1aXJlZCwgaWQ6IGAke2lkfS1rZXlgIH0pLCBfanN4KFwiaW5wdXRcIiwgeyBjbGFzc05hbWU6ICdmb3JtLWNvbnRyb2wnLCB0eXBlOiAndGV4dCcsIGlkOiBgJHtpZH0ta2V5YCwgb25CbHVyOiAoeyB0YXJnZXQgfSkgPT4gb25LZXlDaGFuZ2UodGFyZ2V0ICYmIHRhcmdldC52YWx1ZSksIGRlZmF1bHRWYWx1ZTogbGFiZWwgfSldIH0pIH0pLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAnZm9ybS1hZGRpdGlvbmFsIGZvcm0tZ3JvdXAgY29sLXhzLTUnLCBjaGlsZHJlbjogY2hpbGRyZW4gfSksIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdjb2wteHMtMicsIGNoaWxkcmVuOiBfanN4KFJlbW92ZUJ1dHRvbiwgeyBjbGFzc05hbWU6ICdhcnJheS1pdGVtLXJlbW92ZSBidG4tYmxvY2snLCBzdHlsZTogeyBib3JkZXI6ICcwJyB9LCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgcmVhZG9ubHksIG9uQ2xpY2s6IG9uRHJvcFByb3BlcnR5Q2xpY2sobGFiZWwpLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSB9KV0gfSkgfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9V3JhcElmQWRkaXRpb25hbFRlbXBsYXRlLmpzLm1hcCIsImltcG9ydCBBcnJheUZpZWxkRGVzY3JpcHRpb25UZW1wbGF0ZSBmcm9tICcuL0FycmF5RmllbGREZXNjcmlwdGlvblRlbXBsYXRlJztcbmltcG9ydCBBcnJheUZpZWxkSXRlbVRlbXBsYXRlIGZyb20gJy4vQXJyYXlGaWVsZEl0ZW1UZW1wbGF0ZSc7XG5pbXBvcnQgQXJyYXlGaWVsZFRlbXBsYXRlIGZyb20gJy4vQXJyYXlGaWVsZFRlbXBsYXRlJztcbmltcG9ydCBBcnJheUZpZWxkVGl0bGVUZW1wbGF0ZSBmcm9tICcuL0FycmF5RmllbGRUaXRsZVRlbXBsYXRlJztcbmltcG9ydCBCYXNlSW5wdXRUZW1wbGF0ZSBmcm9tICcuL0Jhc2VJbnB1dFRlbXBsYXRlJztcbmltcG9ydCBCdXR0b25UZW1wbGF0ZXMgZnJvbSAnLi9CdXR0b25UZW1wbGF0ZXMnO1xuaW1wb3J0IERlc2NyaXB0aW9uRmllbGQgZnJvbSAnLi9EZXNjcmlwdGlvbkZpZWxkJztcbmltcG9ydCBFcnJvckxpc3QgZnJvbSAnLi9FcnJvckxpc3QnO1xuaW1wb3J0IEZpZWxkVGVtcGxhdGUgZnJvbSAnLi9GaWVsZFRlbXBsYXRlJztcbmltcG9ydCBGaWVsZEVycm9yVGVtcGxhdGUgZnJvbSAnLi9GaWVsZEVycm9yVGVtcGxhdGUnO1xuaW1wb3J0IEZpZWxkSGVscFRlbXBsYXRlIGZyb20gJy4vRmllbGRIZWxwVGVtcGxhdGUnO1xuaW1wb3J0IE9iamVjdEZpZWxkVGVtcGxhdGUgZnJvbSAnLi9PYmplY3RGaWVsZFRlbXBsYXRlJztcbmltcG9ydCBUaXRsZUZpZWxkIGZyb20gJy4vVGl0bGVGaWVsZCc7XG5pbXBvcnQgVW5zdXBwb3J0ZWRGaWVsZCBmcm9tICcuL1Vuc3VwcG9ydGVkRmllbGQnO1xuaW1wb3J0IFdyYXBJZkFkZGl0aW9uYWxUZW1wbGF0ZSBmcm9tICcuL1dyYXBJZkFkZGl0aW9uYWxUZW1wbGF0ZSc7XG5mdW5jdGlvbiB0ZW1wbGF0ZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgQXJyYXlGaWVsZERlc2NyaXB0aW9uVGVtcGxhdGUsXG4gICAgICAgIEFycmF5RmllbGRJdGVtVGVtcGxhdGUsXG4gICAgICAgIEFycmF5RmllbGRUZW1wbGF0ZSxcbiAgICAgICAgQXJyYXlGaWVsZFRpdGxlVGVtcGxhdGUsXG4gICAgICAgIEJ1dHRvblRlbXBsYXRlczogQnV0dG9uVGVtcGxhdGVzKCksXG4gICAgICAgIEJhc2VJbnB1dFRlbXBsYXRlLFxuICAgICAgICBEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGU6IERlc2NyaXB0aW9uRmllbGQsXG4gICAgICAgIEVycm9yTGlzdFRlbXBsYXRlOiBFcnJvckxpc3QsXG4gICAgICAgIEZpZWxkVGVtcGxhdGUsXG4gICAgICAgIEZpZWxkRXJyb3JUZW1wbGF0ZSxcbiAgICAgICAgRmllbGRIZWxwVGVtcGxhdGUsXG4gICAgICAgIE9iamVjdEZpZWxkVGVtcGxhdGUsXG4gICAgICAgIFRpdGxlRmllbGRUZW1wbGF0ZTogVGl0bGVGaWVsZCxcbiAgICAgICAgVW5zdXBwb3J0ZWRGaWVsZFRlbXBsYXRlOiBVbnN1cHBvcnRlZEZpZWxkLFxuICAgICAgICBXcmFwSWZBZGRpdGlvbmFsVGVtcGxhdGUsXG4gICAgfTtcbn1cbmV4cG9ydCBkZWZhdWx0IHRlbXBsYXRlcztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWR1Y2VyLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGFyaWFEZXNjcmliZWRCeUlkcywgZGF0ZVJhbmdlT3B0aW9ucywgcGFyc2VEYXRlU3RyaW5nLCB0b0RhdGVTdHJpbmcsIFRyYW5zbGF0YWJsZVN0cmluZywgZ2V0RGF0ZUVsZW1lbnRQcm9wcywgfSBmcm9tICdAcmpzZi91dGlscyc7XG5mdW5jdGlvbiByZWFkeUZvckNoYW5nZShzdGF0ZSkge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHN0YXRlKS5ldmVyeSgodmFsdWUpID0+IHZhbHVlICE9PSAtMSk7XG59XG5mdW5jdGlvbiBEYXRlRWxlbWVudCh7IHR5cGUsIHJhbmdlLCB2YWx1ZSwgc2VsZWN0LCByb290SWQsIG5hbWUsIGRpc2FibGVkLCByZWFkb25seSwgYXV0b2ZvY3VzLCByZWdpc3RyeSwgb25CbHVyLCBvbkZvY3VzLCB9KSB7XG4gICAgY29uc3QgaWQgPSByb290SWQgKyAnXycgKyB0eXBlO1xuICAgIGNvbnN0IHsgU2VsZWN0V2lkZ2V0IH0gPSByZWdpc3RyeS53aWRnZXRzO1xuICAgIHJldHVybiAoX2pzeChTZWxlY3RXaWRnZXQsIHsgc2NoZW1hOiB7IHR5cGU6ICdpbnRlZ2VyJyB9LCBpZDogaWQsIG5hbWU6IG5hbWUsIGNsYXNzTmFtZTogJ2Zvcm0tY29udHJvbCcsIG9wdGlvbnM6IHsgZW51bU9wdGlvbnM6IGRhdGVSYW5nZU9wdGlvbnMocmFuZ2VbMF0sIHJhbmdlWzFdKSB9LCBwbGFjZWhvbGRlcjogdHlwZSwgdmFsdWU6IHZhbHVlLCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlYWRvbmx5OiByZWFkb25seSwgYXV0b2ZvY3VzOiBhdXRvZm9jdXMsIG9uQ2hhbmdlOiAodmFsdWUpID0+IHNlbGVjdCh0eXBlLCB2YWx1ZSksIG9uQmx1cjogb25CbHVyLCBvbkZvY3VzOiBvbkZvY3VzLCByZWdpc3RyeTogcmVnaXN0cnksIGxhYmVsOiAnJywgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGFyaWFEZXNjcmliZWRCeUlkcyhyb290SWQpIH0pKTtcbn1cbi8qKiBUaGUgYEFsdERhdGVXaWRnZXRgIGlzIGFuIGFsdGVybmF0aXZlIHdpZGdldCBmb3IgcmVuZGVyaW5nIGRhdGUgcHJvcGVydGllcy5cbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5mdW5jdGlvbiBBbHREYXRlV2lkZ2V0KHsgdGltZSA9IGZhbHNlLCBkaXNhYmxlZCA9IGZhbHNlLCByZWFkb25seSA9IGZhbHNlLCBhdXRvZm9jdXMgPSBmYWxzZSwgb3B0aW9ucywgaWQsIG5hbWUsIHJlZ2lzdHJ5LCBvbkJsdXIsIG9uRm9jdXMsIG9uQ2hhbmdlLCB2YWx1ZSwgfSkge1xuICAgIGNvbnN0IHsgdHJhbnNsYXRlU3RyaW5nIH0gPSByZWdpc3RyeTtcbiAgICBjb25zdCBbbGFzdFZhbHVlLCBzZXRMYXN0VmFsdWVdID0gdXNlU3RhdGUodmFsdWUpO1xuICAgIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVdID0gdXNlUmVkdWNlcigoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgLi4uYWN0aW9uIH07XG4gICAgfSwgcGFyc2VEYXRlU3RyaW5nKHZhbHVlLCB0aW1lKSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGVWYWx1ZSA9IHRvRGF0ZVN0cmluZyhzdGF0ZSwgdGltZSk7XG4gICAgICAgIGlmIChyZWFkeUZvckNoYW5nZShzdGF0ZSkgJiYgc3RhdGVWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIC8vIFRoZSB1c2VyIGNoYW5nZWQgdGhlIGRhdGUgdG8gYSBuZXcgdmFsaWQgZGF0YSB2aWEgdGhlIGNvbWJvYm94ZXMsIHNvIGNhbGwgb25DaGFuZ2VcbiAgICAgICAgICAgIG9uQ2hhbmdlKHN0YXRlVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGxhc3RWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIC8vIFdlIGdvdCBhIG5ldyB2YWx1ZSBpbiB0aGUgcHJvcHNcbiAgICAgICAgICAgIHNldExhc3RWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICBzZXRTdGF0ZShwYXJzZURhdGVTdHJpbmcodmFsdWUsIHRpbWUpKTtcbiAgICAgICAgfVxuICAgIH0sIFt0aW1lLCB2YWx1ZSwgb25DaGFuZ2UsIHN0YXRlLCBsYXN0VmFsdWVdKTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjaygocHJvcGVydHksIHZhbHVlKSA9PiB7XG4gICAgICAgIHNldFN0YXRlKHsgW3Byb3BlcnR5XTogdmFsdWUgfSk7XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IGhhbmRsZVNldE5vdyA9IHVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoZGlzYWJsZWQgfHwgcmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXh0U3RhdGUgPSBwYXJzZURhdGVTdHJpbmcobmV3IERhdGUoKS50b0pTT04oKSwgdGltZSk7XG4gICAgICAgIG9uQ2hhbmdlKHRvRGF0ZVN0cmluZyhuZXh0U3RhdGUsIHRpbWUpKTtcbiAgICB9LCBbZGlzYWJsZWQsIHJlYWRvbmx5LCB0aW1lXSk7XG4gICAgY29uc3QgaGFuZGxlQ2xlYXIgPSB1c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKGRpc2FibGVkIHx8IHJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2UodW5kZWZpbmVkKTtcbiAgICB9LCBbZGlzYWJsZWQsIHJlYWRvbmx5LCBvbkNoYW5nZV0pO1xuICAgIHJldHVybiAoX2pzeHMoXCJ1bFwiLCB7IGNsYXNzTmFtZTogJ2xpc3QtaW5saW5lJywgY2hpbGRyZW46IFtnZXREYXRlRWxlbWVudFByb3BzKHN0YXRlLCB0aW1lLCBvcHRpb25zLnllYXJzUmFuZ2UsIG9wdGlvbnMuZm9ybWF0KS5tYXAoKGVsZW1Qcm9wcywgaSkgPT4gKF9qc3goXCJsaVwiLCB7IGNsYXNzTmFtZTogJ2xpc3QtaW5saW5lLWl0ZW0nLCBjaGlsZHJlbjogX2pzeChEYXRlRWxlbWVudCwgeyByb290SWQ6IGlkLCBuYW1lOiBuYW1lLCBzZWxlY3Q6IGhhbmRsZUNoYW5nZSwgLi4uZWxlbVByb3BzLCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlYWRvbmx5OiByZWFkb25seSwgcmVnaXN0cnk6IHJlZ2lzdHJ5LCBvbkJsdXI6IG9uQmx1ciwgb25Gb2N1czogb25Gb2N1cywgYXV0b2ZvY3VzOiBhdXRvZm9jdXMgJiYgaSA9PT0gMCB9KSB9LCBpKSkpLCAob3B0aW9ucy5oaWRlTm93QnV0dG9uICE9PSAndW5kZWZpbmVkJyA/ICFvcHRpb25zLmhpZGVOb3dCdXR0b24gOiB0cnVlKSAmJiAoX2pzeChcImxpXCIsIHsgY2xhc3NOYW1lOiAnbGlzdC1pbmxpbmUtaXRlbScsIGNoaWxkcmVuOiBfanN4KFwiYVwiLCB7IGhyZWY6ICcjJywgY2xhc3NOYW1lOiAnYnRuIGJ0bi1pbmZvIGJ0bi1ub3cnLCBvbkNsaWNrOiBoYW5kbGVTZXROb3csIGNoaWxkcmVuOiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLk5vd0xhYmVsKSB9KSB9KSksIChvcHRpb25zLmhpZGVDbGVhckJ1dHRvbiAhPT0gJ3VuZGVmaW5lZCcgPyAhb3B0aW9ucy5oaWRlQ2xlYXJCdXR0b24gOiB0cnVlKSAmJiAoX2pzeChcImxpXCIsIHsgY2xhc3NOYW1lOiAnbGlzdC1pbmxpbmUtaXRlbScsIGNoaWxkcmVuOiBfanN4KFwiYVwiLCB7IGhyZWY6ICcjJywgY2xhc3NOYW1lOiAnYnRuIGJ0bi13YXJuaW5nIGJ0bi1jbGVhcicsIG9uQ2xpY2s6IGhhbmRsZUNsZWFyLCBjaGlsZHJlbjogdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5DbGVhckxhYmVsKSB9KSB9KSldIH0pKTtcbn1cbmV4cG9ydCBkZWZhdWx0IEFsdERhdGVXaWRnZXQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BbHREYXRlV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG4vKiogVGhlIGBBbHREYXRlVGltZVdpZGdldGAgaXMgYW4gYWx0ZXJuYXRpdmUgd2lkZ2V0IGZvciByZW5kZXJpbmcgZGF0ZXRpbWUgcHJvcGVydGllcy5cbiAqICBJdCB1c2VzIHRoZSBBbHREYXRlV2lkZ2V0IGZvciByZW5kZXJpbmcsIHdpdGggdGhlIGB0aW1lYCBwcm9wIHNldCB0byB0cnVlIGJ5IGRlZmF1bHQuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIEFsdERhdGVUaW1lV2lkZ2V0KHsgdGltZSA9IHRydWUsIC4uLnByb3BzIH0pIHtcbiAgICBjb25zdCB7IEFsdERhdGVXaWRnZXQgfSA9IHByb3BzLnJlZ2lzdHJ5LndpZGdldHM7XG4gICAgcmV0dXJuIF9qc3goQWx0RGF0ZVdpZGdldCwgeyB0aW1lOiB0aW1lLCAuLi5wcm9wcyB9KTtcbn1cbmV4cG9ydCBkZWZhdWx0IEFsdERhdGVUaW1lV2lkZ2V0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QWx0RGF0ZVRpbWVXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgYXJpYURlc2NyaWJlZEJ5SWRzLCBkZXNjcmlwdGlvbklkLCBnZXRUZW1wbGF0ZSwgbGFiZWxWYWx1ZSwgc2NoZW1hUmVxdWlyZXNUcnVlVmFsdWUsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgQ2hlY2tCb3hXaWRnZXRgIGlzIGEgd2lkZ2V0IGZvciByZW5kZXJpbmcgYm9vbGVhbiBwcm9wZXJ0aWVzLlxuICogIEl0IGlzIHR5cGljYWxseSB1c2VkIHRvIHJlcHJlc2VudCBhIGJvb2xlYW4uXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIENoZWNrYm94V2lkZ2V0KHsgc2NoZW1hLCB1aVNjaGVtYSwgb3B0aW9ucywgaWQsIHZhbHVlLCBkaXNhYmxlZCwgcmVhZG9ubHksIGxhYmVsLCBoaWRlTGFiZWwsIGF1dG9mb2N1cyA9IGZhbHNlLCBvbkJsdXIsIG9uRm9jdXMsIG9uQ2hhbmdlLCByZWdpc3RyeSwgfSkge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnRGVzY3JpcHRpb25GaWVsZFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIC8vIEJlY2F1c2UgYW4gdW5jaGVja2VkIGNoZWNrYm94IHdpbGwgY2F1c2UgaHRtbDUgdmFsaWRhdGlvbiB0byBmYWlsLCBvbmx5IGFkZFxuICAgIC8vIHRoZSBcInJlcXVpcmVkXCIgYXR0cmlidXRlIGlmIHRoZSBmaWVsZCB2YWx1ZSBtdXN0IGJlIFwidHJ1ZVwiLCBkdWUgdG8gdGhlXG4gICAgLy8gXCJjb25zdFwiIG9yIFwiZW51bVwiIGtleXdvcmRzXG4gICAgY29uc3QgcmVxdWlyZWQgPSBzY2hlbWFSZXF1aXJlc1RydWVWYWx1ZShzY2hlbWEpO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChldmVudCkgPT4gb25DaGFuZ2UoZXZlbnQudGFyZ2V0LmNoZWNrZWQpLCBbb25DaGFuZ2VdKTtcbiAgICBjb25zdCBoYW5kbGVCbHVyID0gdXNlQ2FsbGJhY2soKGV2ZW50KSA9PiBvbkJsdXIoaWQsIGV2ZW50LnRhcmdldC5jaGVja2VkKSwgW29uQmx1ciwgaWRdKTtcbiAgICBjb25zdCBoYW5kbGVGb2N1cyA9IHVzZUNhbGxiYWNrKChldmVudCkgPT4gb25Gb2N1cyhpZCwgZXZlbnQudGFyZ2V0LmNoZWNrZWQpLCBbb25Gb2N1cywgaWRdKTtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IChfYSA9IG9wdGlvbnMuZGVzY3JpcHRpb24pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHNjaGVtYS5kZXNjcmlwdGlvbjtcbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBgY2hlY2tib3ggJHtkaXNhYmxlZCB8fCByZWFkb25seSA/ICdkaXNhYmxlZCcgOiAnJ31gLCBjaGlsZHJlbjogWyFoaWRlTGFiZWwgJiYgISFkZXNjcmlwdGlvbiAmJiAoX2pzeChEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUsIHsgaWQ6IGRlc2NyaXB0aW9uSWQoaWQpLCBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSksIF9qc3hzKFwibGFiZWxcIiwgeyBjaGlsZHJlbjogW19qc3goXCJpbnB1dFwiLCB7IHR5cGU6ICdjaGVja2JveCcsIGlkOiBpZCwgbmFtZTogaWQsIGNoZWNrZWQ6IHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgPyBmYWxzZSA6IHZhbHVlLCByZXF1aXJlZDogcmVxdWlyZWQsIGRpc2FibGVkOiBkaXNhYmxlZCB8fCByZWFkb25seSwgYXV0b0ZvY3VzOiBhdXRvZm9jdXMsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIG9uQmx1cjogaGFuZGxlQmx1ciwgb25Gb2N1czogaGFuZGxlRm9jdXMsIFwiYXJpYS1kZXNjcmliZWRieVwiOiBhcmlhRGVzY3JpYmVkQnlJZHMoaWQpIH0pLCBsYWJlbFZhbHVlKF9qc3goXCJzcGFuXCIsIHsgY2hpbGRyZW46IGxhYmVsIH0pLCBoaWRlTGFiZWwpXSB9KV0gfSkpO1xufVxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hXaWRnZXQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DaGVja2JveFdpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBhcmlhRGVzY3JpYmVkQnlJZHMsIGVudW1PcHRpb25zRGVzZWxlY3RWYWx1ZSwgZW51bU9wdGlvbnNJc1NlbGVjdGVkLCBlbnVtT3B0aW9uc1NlbGVjdFZhbHVlLCBlbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXgsIG9wdGlvbklkLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYENoZWNrYm94ZXNXaWRnZXRgIGlzIGEgd2lkZ2V0IGZvciByZW5kZXJpbmcgY2hlY2tib3ggZ3JvdXBzLlxuICogIEl0IGlzIHR5cGljYWxseSB1c2VkIHRvIHJlcHJlc2VudCBhbiBhcnJheSBvZiBlbnVtcy5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZnVuY3Rpb24gQ2hlY2tib3hlc1dpZGdldCh7IGlkLCBkaXNhYmxlZCwgb3B0aW9uczogeyBpbmxpbmUgPSBmYWxzZSwgZW51bU9wdGlvbnMsIGVudW1EaXNhYmxlZCwgZW1wdHlWYWx1ZSB9LCB2YWx1ZSwgYXV0b2ZvY3VzID0gZmFsc2UsIHJlYWRvbmx5LCBvbkNoYW5nZSwgb25CbHVyLCBvbkZvY3VzLCB9KSB7XG4gICAgY29uc3QgY2hlY2tib3hlc1ZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgIGNvbnN0IGhhbmRsZUJsdXIgPSB1c2VDYWxsYmFjaygoeyB0YXJnZXQgfSkgPT4gb25CbHVyKGlkLCBlbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXgodGFyZ2V0ICYmIHRhcmdldC52YWx1ZSwgZW51bU9wdGlvbnMsIGVtcHR5VmFsdWUpKSwgW29uQmx1ciwgaWRdKTtcbiAgICBjb25zdCBoYW5kbGVGb2N1cyA9IHVzZUNhbGxiYWNrKCh7IHRhcmdldCB9KSA9PiBvbkZvY3VzKGlkLCBlbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXgodGFyZ2V0ICYmIHRhcmdldC52YWx1ZSwgZW51bU9wdGlvbnMsIGVtcHR5VmFsdWUpKSwgW29uRm9jdXMsIGlkXSk7XG4gICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAnY2hlY2tib3hlcycsIGlkOiBpZCwgY2hpbGRyZW46IEFycmF5LmlzQXJyYXkoZW51bU9wdGlvbnMpICYmXG4gICAgICAgICAgICBlbnVtT3B0aW9ucy5tYXAoKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGVja2VkID0gZW51bU9wdGlvbnNJc1NlbGVjdGVkKG9wdGlvbi52YWx1ZSwgY2hlY2tib3hlc1ZhbHVlcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbURpc2FibGVkID0gQXJyYXkuaXNBcnJheShlbnVtRGlzYWJsZWQpICYmIGVudW1EaXNhYmxlZC5pbmRleE9mKG9wdGlvbi52YWx1ZSkgIT09IC0xO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkQ2xzID0gZGlzYWJsZWQgfHwgaXRlbURpc2FibGVkIHx8IHJlYWRvbmx5ID8gJ2Rpc2FibGVkJyA6ICcnO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlKGVudW1PcHRpb25zU2VsZWN0VmFsdWUoaW5kZXgsIGNoZWNrYm94ZXNWYWx1ZXMsIGVudW1PcHRpb25zKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZShlbnVtT3B0aW9uc0Rlc2VsZWN0VmFsdWUoaW5kZXgsIGNoZWNrYm94ZXNWYWx1ZXMsIGVudW1PcHRpb25zKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrYm94ID0gKF9qc3hzKFwic3BhblwiLCB7IGNoaWxkcmVuOiBbX2pzeChcImlucHV0XCIsIHsgdHlwZTogJ2NoZWNrYm94JywgaWQ6IG9wdGlvbklkKGlkLCBpbmRleCksIG5hbWU6IGlkLCBjaGVja2VkOiBjaGVja2VkLCB2YWx1ZTogU3RyaW5nKGluZGV4KSwgZGlzYWJsZWQ6IGRpc2FibGVkIHx8IGl0ZW1EaXNhYmxlZCB8fCByZWFkb25seSwgYXV0b0ZvY3VzOiBhdXRvZm9jdXMgJiYgaW5kZXggPT09IDAsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIG9uQmx1cjogaGFuZGxlQmx1ciwgb25Gb2N1czogaGFuZGxlRm9jdXMsIFwiYXJpYS1kZXNjcmliZWRieVwiOiBhcmlhRGVzY3JpYmVkQnlJZHMoaWQpIH0pLCBfanN4KFwic3BhblwiLCB7IGNoaWxkcmVuOiBvcHRpb24ubGFiZWwgfSldIH0pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lID8gKF9qc3goXCJsYWJlbFwiLCB7IGNsYXNzTmFtZTogYGNoZWNrYm94LWlubGluZSAke2Rpc2FibGVkQ2xzfWAsIGNoaWxkcmVuOiBjaGVja2JveCB9LCBpbmRleCkpIDogKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGBjaGVja2JveCAke2Rpc2FibGVkQ2xzfWAsIGNoaWxkcmVuOiBfanN4KFwibGFiZWxcIiwgeyBjaGlsZHJlbjogY2hlY2tib3ggfSkgfSwgaW5kZXgpKTtcbiAgICAgICAgICAgIH0pIH0pKTtcbn1cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94ZXNXaWRnZXQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DaGVja2JveGVzV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYENvbG9yV2lkZ2V0YCBjb21wb25lbnQgdXNlcyB0aGUgYEJhc2VJbnB1dFRlbXBsYXRlYCBjaGFuZ2luZyB0aGUgdHlwZSB0byBgY29sb3JgIGFuZCBkaXNhYmxlcyBpdCB3aGVuIGl0IGlzXG4gKiBlaXRoZXIgZGlzYWJsZWQgb3IgcmVhZG9ubHkuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENvbG9yV2lkZ2V0KHByb3BzKSB7XG4gICAgY29uc3QgeyBkaXNhYmxlZCwgcmVhZG9ubHksIG9wdGlvbnMsIHJlZ2lzdHJ5IH0gPSBwcm9wcztcbiAgICBjb25zdCBCYXNlSW5wdXRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdCYXNlSW5wdXRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICByZXR1cm4gX2pzeChCYXNlSW5wdXRUZW1wbGF0ZSwgeyB0eXBlOiAnY29sb3InLCAuLi5wcm9wcywgZGlzYWJsZWQ6IGRpc2FibGVkIHx8IHJlYWRvbmx5IH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q29sb3JXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZ2V0VGVtcGxhdGUgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBEYXRlV2lkZ2V0YCBjb21wb25lbnQgdXNlcyB0aGUgYEJhc2VJbnB1dFRlbXBsYXRlYCBjaGFuZ2luZyB0aGUgdHlwZSB0byBgZGF0ZWAgYW5kIHRyYW5zZm9ybXNcbiAqIHRoZSB2YWx1ZSB0byB1bmRlZmluZWQgd2hlbiBpdCBpcyBmYWxzeSBkdXJpbmcgdGhlIGBvbkNoYW5nZWAgaGFuZGxpbmcuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhdGVXaWRnZXQocHJvcHMpIHtcbiAgICBjb25zdCB7IG9uQ2hhbmdlLCBvcHRpb25zLCByZWdpc3RyeSB9ID0gcHJvcHM7XG4gICAgY29uc3QgQmFzZUlucHV0VGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnQmFzZUlucHV0VGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKHZhbHVlKSA9PiBvbkNoYW5nZSh2YWx1ZSB8fCB1bmRlZmluZWQpLCBbb25DaGFuZ2VdKTtcbiAgICByZXR1cm4gX2pzeChCYXNlSW5wdXRUZW1wbGF0ZSwgeyB0eXBlOiAnZGF0ZScsIC4uLnByb3BzLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGF0ZVdpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgZ2V0VGVtcGxhdGUsIGxvY2FsVG9VVEMsIHV0Y1RvTG9jYWwsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgRGF0ZVRpbWVXaWRnZXRgIGNvbXBvbmVudCB1c2VzIHRoZSBgQmFzZUlucHV0VGVtcGxhdGVgIGNoYW5naW5nIHRoZSB0eXBlIHRvIGBkYXRldGltZS1sb2NhbGAgYW5kIHRyYW5zZm9ybXNcbiAqIHRoZSB2YWx1ZSB0by9mcm9tIHV0YyB1c2luZyB0aGUgYXBwcm9wcmlhdGUgdXRpbGl0eSBmdW5jdGlvbnMuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhdGVUaW1lV2lkZ2V0KHByb3BzKSB7XG4gICAgY29uc3QgeyBvbkNoYW5nZSwgdmFsdWUsIG9wdGlvbnMsIHJlZ2lzdHJ5IH0gPSBwcm9wcztcbiAgICBjb25zdCBCYXNlSW5wdXRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdCYXNlSW5wdXRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICByZXR1cm4gKF9qc3goQmFzZUlucHV0VGVtcGxhdGUsIHsgdHlwZTogJ2RhdGV0aW1lLWxvY2FsJywgLi4ucHJvcHMsIHZhbHVlOiB1dGNUb0xvY2FsKHZhbHVlKSwgb25DaGFuZ2U6ICh2YWx1ZSkgPT4gb25DaGFuZ2UobG9jYWxUb1VUQyh2YWx1ZSkpIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURhdGVUaW1lV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYEVtYWlsV2lkZ2V0YCBjb21wb25lbnQgdXNlcyB0aGUgYEJhc2VJbnB1dFRlbXBsYXRlYCBjaGFuZ2luZyB0aGUgdHlwZSB0byBgZW1haWxgLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBFbWFpbFdpZGdldChwcm9wcykge1xuICAgIGNvbnN0IHsgb3B0aW9ucywgcmVnaXN0cnkgfSA9IHByb3BzO1xuICAgIGNvbnN0IEJhc2VJbnB1dFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0Jhc2VJbnB1dFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIHJldHVybiBfanN4KEJhc2VJbnB1dFRlbXBsYXRlLCB7IHR5cGU6ICdlbWFpbCcsIC4uLnByb3BzIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RW1haWxXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIEZyYWdtZW50IGFzIF9GcmFnbWVudCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBkYXRhVVJJdG9CbG9iLCBnZXRUZW1wbGF0ZSwgVHJhbnNsYXRhYmxlU3RyaW5nLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbmltcG9ydCBNYXJrZG93biBmcm9tICdtYXJrZG93bi10by1qc3gnO1xuZnVuY3Rpb24gYWRkTmFtZVRvRGF0YVVSTChkYXRhVVJMLCBuYW1lKSB7XG4gICAgaWYgKGRhdGFVUkwgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBkYXRhVVJMLnJlcGxhY2UoJztiYXNlNjQnLCBgO25hbWU9JHtlbmNvZGVVUklDb21wb25lbnQobmFtZSl9O2Jhc2U2NGApO1xufVxuZnVuY3Rpb24gcHJvY2Vzc0ZpbGUoZmlsZSkge1xuICAgIGNvbnN0IHsgbmFtZSwgc2l6ZSwgdHlwZSB9ID0gZmlsZTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgd2luZG93LkZpbGVSZWFkZXIoKTtcbiAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSByZWplY3Q7XG4gICAgICAgIHJlYWRlci5vbmxvYWQgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgKChfYSA9IGV2ZW50LnRhcmdldCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnJlc3VsdCkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFVUkw6IGFkZE5hbWVUb0RhdGFVUkwoZXZlbnQudGFyZ2V0LnJlc3VsdCwgbmFtZSksXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHNpemUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVVSTDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBwcm9jZXNzRmlsZXMoZmlsZXMpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoQXJyYXkuZnJvbShmaWxlcykubWFwKHByb2Nlc3NGaWxlKSk7XG59XG5mdW5jdGlvbiBGaWxlSW5mb1ByZXZpZXcoeyBmaWxlSW5mbywgcmVnaXN0cnksIH0pIHtcbiAgICBjb25zdCB7IHRyYW5zbGF0ZVN0cmluZyB9ID0gcmVnaXN0cnk7XG4gICAgY29uc3QgeyBkYXRhVVJMLCB0eXBlLCBuYW1lIH0gPSBmaWxlSW5mbztcbiAgICBpZiAoIWRhdGFVUkwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIC8vIElmIHR5cGUgaXMgSlBFRyBvciBQTkcgdGhlbiBzaG93IGltYWdlIHByZXZpZXcuXG4gICAgLy8gT3JpZ2luYWxseSwgYW55IHR5cGUgb2YgaW1hZ2Ugd2FzIHN1cHBvcnRlZCwgYnV0IHRoaXMgd2FzIGNoYW5nZWQgaW50byBhIHdoaXRlbGlzdFxuICAgIC8vIHNpbmNlIFNWR3MgYW5kIGFuaW1hdGVkIEdJRnMgYXJlIGFsc28gaW1hZ2VzLCB3aGljaCBhcmUgZ2VuZXJhbGx5IGNvbnNpZGVyZWQgYSBzZWN1cml0eSByaXNrLlxuICAgIGlmIChbJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvcG5nJ10uaW5jbHVkZXModHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIF9qc3goXCJpbWdcIiwgeyBzcmM6IGRhdGFVUkwsIHN0eWxlOiB7IG1heFdpZHRoOiAnMTAwJScgfSwgY2xhc3NOYW1lOiAnZmlsZS1wcmV2aWV3JyB9KTtcbiAgICB9XG4gICAgLy8gb3RoZXJ3aXNlLCBsZXQgdXNlcnMgZG93bmxvYWQgZmlsZVxuICAgIHJldHVybiAoX2pzeHMoX0ZyYWdtZW50LCB7IGNoaWxkcmVuOiBbJyAnLCBfanN4KFwiYVwiLCB7IGRvd25sb2FkOiBgcHJldmlldy0ke25hbWV9YCwgaHJlZjogZGF0YVVSTCwgY2xhc3NOYW1lOiAnZmlsZS1kb3dubG9hZCcsIGNoaWxkcmVuOiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLlByZXZpZXdMYWJlbCkgfSldIH0pKTtcbn1cbmZ1bmN0aW9uIEZpbGVzSW5mbyh7IGZpbGVzSW5mbywgcmVnaXN0cnksIHByZXZpZXcsIG9uUmVtb3ZlLCBvcHRpb25zLCB9KSB7XG4gICAgaWYgKGZpbGVzSW5mby5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHsgdHJhbnNsYXRlU3RyaW5nIH0gPSByZWdpc3RyeTtcbiAgICBjb25zdCB7IFJlbW92ZUJ1dHRvbiB9ID0gZ2V0VGVtcGxhdGUoJ0J1dHRvblRlbXBsYXRlcycsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICByZXR1cm4gKF9qc3goXCJ1bFwiLCB7IGNsYXNzTmFtZTogJ2ZpbGUtaW5mbycsIGNoaWxkcmVuOiBmaWxlc0luZm8ubWFwKChmaWxlSW5mbywga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IG5hbWUsIHNpemUsIHR5cGUgfSA9IGZpbGVJbmZvO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlUmVtb3ZlID0gKCkgPT4gb25SZW1vdmUoa2V5KTtcbiAgICAgICAgICAgIHJldHVybiAoX2pzeHMoXCJsaVwiLCB7IGNoaWxkcmVuOiBbX2pzeChNYXJrZG93biwgeyBjaGlsZHJlbjogdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5GaWxlc0luZm8sIFtuYW1lLCB0eXBlLCBTdHJpbmcoc2l6ZSldKSB9KSwgcHJldmlldyAmJiBfanN4KEZpbGVJbmZvUHJldmlldywgeyBmaWxlSW5mbzogZmlsZUluZm8sIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSwgX2pzeChSZW1vdmVCdXR0b24sIHsgb25DbGljazogaGFuZGxlUmVtb3ZlLCByZWdpc3RyeTogcmVnaXN0cnkgfSldIH0sIGtleSkpO1xuICAgICAgICB9KSB9KSk7XG59XG5mdW5jdGlvbiBleHRyYWN0RmlsZUluZm8oZGF0YVVSTHMpIHtcbiAgICByZXR1cm4gZGF0YVVSTHMucmVkdWNlKChhY2MsIGRhdGFVUkwpID0+IHtcbiAgICAgICAgaWYgKCFkYXRhVVJMKSB7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB7IGJsb2IsIG5hbWUgfSA9IGRhdGFVUkl0b0Jsb2IoZGF0YVVSTCk7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFVUkwsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHNpemU6IGJsb2Iuc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogYmxvYi50eXBlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBJbnZhbGlkIGRhdGFVUkksIHNvIGp1c3QgaWdub3JlIGl0LlxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfVxuICAgIH0sIFtdKTtcbn1cbi8qKlxuICogIFRoZSBgRmlsZVdpZGdldGAgaXMgYSB3aWRnZXQgZm9yIHJlbmRlcmluZyBmaWxlIHVwbG9hZCBmaWVsZHMuXG4gKiAgSXQgaXMgdHlwaWNhbGx5IHVzZWQgd2l0aCBhIHN0cmluZyBwcm9wZXJ0eSB3aXRoIGRhdGEtdXJsIGZvcm1hdC5cbiAqL1xuZnVuY3Rpb24gRmlsZVdpZGdldChwcm9wcykge1xuICAgIGNvbnN0IHsgZGlzYWJsZWQsIHJlYWRvbmx5LCByZXF1aXJlZCwgbXVsdGlwbGUsIG9uQ2hhbmdlLCB2YWx1ZSwgb3B0aW9ucywgcmVnaXN0cnkgfSA9IHByb3BzO1xuICAgIGNvbnN0IEJhc2VJbnB1dFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0Jhc2VJbnB1dFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoIWV2ZW50LnRhcmdldC5maWxlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIER1ZSB0byB2YXJpYW5jZXMgaW4gdGhlbWVzLCBkZWFsaW5nIHdpdGggbXVsdGlwbGUgZmlsZXMgZm9yIHRoZSBhcnJheSBjYXNlIG5vdyBoYXBwZW5zIG9uZSBmaWxlIGF0IGEgdGltZS5cbiAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIHdlIGRvbid0IHBhc3MgYG11bHRpcGxlYCBpbnRvIHRoZSBgQmFzZUlucHV0VGVtcGxhdGVgIGFueW1vcmUuIEluc3RlYWQsIHdlIGRlYWwgd2l0aCB0aGUgc2luZ2xlXG4gICAgICAgIC8vIGZpbGUgaW4gZWFjaCBldmVudCBhbmQgY29uY2F0ZW5hdGUgdGhlbSB0b2dldGhlciBvdXJzZWx2ZXNcbiAgICAgICAgcHJvY2Vzc0ZpbGVzKGV2ZW50LnRhcmdldC5maWxlcykudGhlbigoZmlsZXNJbmZvRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZmlsZXNJbmZvRXZlbnQubWFwKChmaWxlSW5mbykgPT4gZmlsZUluZm8uZGF0YVVSTCk7XG4gICAgICAgICAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZS5jb25jYXQobmV3VmFsdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlKG5ld1ZhbHVlWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSwgW211bHRpcGxlLCB2YWx1ZSwgb25DaGFuZ2VdKTtcbiAgICBjb25zdCBmaWxlc0luZm8gPSB1c2VNZW1vKCgpID0+IGV4dHJhY3RGaWxlSW5mbyhBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXSksIFt2YWx1ZV0pO1xuICAgIGNvbnN0IHJtRmlsZSA9IHVzZUNhbGxiYWNrKChpbmRleCkgPT4ge1xuICAgICAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdmFsdWUuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBpbmRleCk7XG4gICAgICAgICAgICBvbkNoYW5nZShuZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBvbkNoYW5nZSh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgfSwgW211bHRpcGxlLCB2YWx1ZSwgb25DaGFuZ2VdKTtcbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2hpbGRyZW46IFtfanN4KEJhc2VJbnB1dFRlbXBsYXRlLCB7IC4uLnByb3BzLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgcmVhZG9ubHksIHR5cGU6ICdmaWxlJywgcmVxdWlyZWQ6IHZhbHVlID8gZmFsc2UgOiByZXF1aXJlZCwgb25DaGFuZ2VPdmVycmlkZTogaGFuZGxlQ2hhbmdlLCB2YWx1ZTogJycsIGFjY2VwdDogb3B0aW9ucy5hY2NlcHQgPyBTdHJpbmcob3B0aW9ucy5hY2NlcHQpIDogdW5kZWZpbmVkIH0pLCBfanN4KEZpbGVzSW5mbywgeyBmaWxlc0luZm86IGZpbGVzSW5mbywgb25SZW1vdmU6IHJtRmlsZSwgcmVnaXN0cnk6IHJlZ2lzdHJ5LCBwcmV2aWV3OiBvcHRpb25zLmZpbGVQcmV2aWV3LCBvcHRpb25zOiBvcHRpb25zIH0pXSB9KSk7XG59XG5leHBvcnQgZGVmYXVsdCBGaWxlV2lkZ2V0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RmlsZVdpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuLyoqIFRoZSBgSGlkZGVuV2lkZ2V0YCBpcyBhIHdpZGdldCBmb3IgcmVuZGVyaW5nIGEgaGlkZGVuIGlucHV0IGZpZWxkLlxuICogIEl0IGlzIHR5cGljYWxseSB1c2VkIGJ5IHNldHRpbmcgdHlwZSB0byBcImhpZGRlblwiLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5mdW5jdGlvbiBIaWRkZW5XaWRnZXQoeyBpZCwgdmFsdWUsIH0pIHtcbiAgICByZXR1cm4gX2pzeChcImlucHV0XCIsIHsgdHlwZTogJ2hpZGRlbicsIGlkOiBpZCwgbmFtZTogaWQsIHZhbHVlOiB0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnID8gJycgOiB2YWx1ZSB9KTtcbn1cbmV4cG9ydCBkZWZhdWx0IEhpZGRlbldpZGdldDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUhpZGRlbldpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgZ2V0VGVtcGxhdGUgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBQYXNzd29yZFdpZGdldGAgY29tcG9uZW50IHVzZXMgdGhlIGBCYXNlSW5wdXRUZW1wbGF0ZWAgY2hhbmdpbmcgdGhlIHR5cGUgdG8gYHBhc3N3b3JkYC5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFzc3dvcmRXaWRnZXQocHJvcHMpIHtcbiAgICBjb25zdCB7IG9wdGlvbnMsIHJlZ2lzdHJ5IH0gPSBwcm9wcztcbiAgICBjb25zdCBCYXNlSW5wdXRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdCYXNlSW5wdXRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICByZXR1cm4gX2pzeChCYXNlSW5wdXRUZW1wbGF0ZSwgeyB0eXBlOiAncGFzc3dvcmQnLCAuLi5wcm9wcyB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVBhc3N3b3JkV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGFyaWFEZXNjcmliZWRCeUlkcywgZW51bU9wdGlvbnNJc1NlbGVjdGVkLCBlbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXgsIG9wdGlvbklkLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYFJhZGlvV2lkZ2V0YCBpcyBhIHdpZGdldCBmb3IgcmVuZGVyaW5nIGEgcmFkaW8gZ3JvdXAuXG4gKiAgSXQgaXMgdHlwaWNhbGx5IHVzZWQgd2l0aCBhIHN0cmluZyBwcm9wZXJ0eSBjb25zdHJhaW5lZCB3aXRoIGVudW0gb3B0aW9ucy5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZnVuY3Rpb24gUmFkaW9XaWRnZXQoeyBvcHRpb25zLCB2YWx1ZSwgcmVxdWlyZWQsIGRpc2FibGVkLCByZWFkb25seSwgYXV0b2ZvY3VzID0gZmFsc2UsIG9uQmx1ciwgb25Gb2N1cywgb25DaGFuZ2UsIGlkLCB9KSB7XG4gICAgY29uc3QgeyBlbnVtT3B0aW9ucywgZW51bURpc2FibGVkLCBpbmxpbmUsIGVtcHR5VmFsdWUgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgaGFuZGxlQmx1ciA9IHVzZUNhbGxiYWNrKCh7IHRhcmdldCB9KSA9PiBvbkJsdXIoaWQsIGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCh0YXJnZXQgJiYgdGFyZ2V0LnZhbHVlLCBlbnVtT3B0aW9ucywgZW1wdHlWYWx1ZSkpLCBbb25CbHVyLCBpZF0pO1xuICAgIGNvbnN0IGhhbmRsZUZvY3VzID0gdXNlQ2FsbGJhY2soKHsgdGFyZ2V0IH0pID0+IG9uRm9jdXMoaWQsIGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCh0YXJnZXQgJiYgdGFyZ2V0LnZhbHVlLCBlbnVtT3B0aW9ucywgZW1wdHlWYWx1ZSkpLCBbb25Gb2N1cywgaWRdKTtcbiAgICByZXR1cm4gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdmaWVsZC1yYWRpby1ncm91cCcsIGlkOiBpZCwgY2hpbGRyZW46IEFycmF5LmlzQXJyYXkoZW51bU9wdGlvbnMpICYmXG4gICAgICAgICAgICBlbnVtT3B0aW9ucy5tYXAoKG9wdGlvbiwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrZWQgPSBlbnVtT3B0aW9uc0lzU2VsZWN0ZWQob3B0aW9uLnZhbHVlLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbURpc2FibGVkID0gQXJyYXkuaXNBcnJheShlbnVtRGlzYWJsZWQpICYmIGVudW1EaXNhYmxlZC5pbmRleE9mKG9wdGlvbi52YWx1ZSkgIT09IC0xO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkQ2xzID0gZGlzYWJsZWQgfHwgaXRlbURpc2FibGVkIHx8IHJlYWRvbmx5ID8gJ2Rpc2FibGVkJyA6ICcnO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9ICgpID0+IG9uQ2hhbmdlKG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmFkaW8gPSAoX2pzeHMoXCJzcGFuXCIsIHsgY2hpbGRyZW46IFtfanN4KFwiaW5wdXRcIiwgeyB0eXBlOiAncmFkaW8nLCBpZDogb3B0aW9uSWQoaWQsIGkpLCBjaGVja2VkOiBjaGVja2VkLCBuYW1lOiBpZCwgcmVxdWlyZWQ6IHJlcXVpcmVkLCB2YWx1ZTogU3RyaW5nKGkpLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgaXRlbURpc2FibGVkIHx8IHJlYWRvbmx5LCBhdXRvRm9jdXM6IGF1dG9mb2N1cyAmJiBpID09PSAwLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBvbkJsdXI6IGhhbmRsZUJsdXIsIG9uRm9jdXM6IGhhbmRsZUZvY3VzLCBcImFyaWEtZGVzY3JpYmVkYnlcIjogYXJpYURlc2NyaWJlZEJ5SWRzKGlkKSB9KSwgX2pzeChcInNwYW5cIiwgeyBjaGlsZHJlbjogb3B0aW9uLmxhYmVsIH0pXSB9KSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlubGluZSA/IChfanN4KFwibGFiZWxcIiwgeyBjbGFzc05hbWU6IGByYWRpby1pbmxpbmUgJHtkaXNhYmxlZENsc31gLCBjaGlsZHJlbjogcmFkaW8gfSwgaSkpIDogKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGByYWRpbyAke2Rpc2FibGVkQ2xzfWAsIGNoaWxkcmVuOiBfanN4KFwibGFiZWxcIiwgeyBjaGlsZHJlbjogcmFkaW8gfSkgfSwgaSkpO1xuICAgICAgICAgICAgfSkgfSkpO1xufVxuZXhwb3J0IGRlZmF1bHQgUmFkaW9XaWRnZXQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SYWRpb1dpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuLyoqIFRoZSBgUmFuZ2VXaWRnZXRgIGNvbXBvbmVudCB1c2VzIHRoZSBgQmFzZUlucHV0VGVtcGxhdGVgIGNoYW5naW5nIHRoZSB0eXBlIHRvIGByYW5nZWAgYW5kIHdyYXBwaW5nIHRoZSByZXN1bHRcbiAqIGluIGEgZGl2LCB3aXRoIHRoZSB2YWx1ZSBhbG9uZyBzaWRlIGl0LlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBSYW5nZVdpZGdldChwcm9wcykge1xuICAgIGNvbnN0IHsgdmFsdWUsIHJlZ2lzdHJ5OiB7IHRlbXBsYXRlczogeyBCYXNlSW5wdXRUZW1wbGF0ZSB9LCB9LCB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogJ2ZpZWxkLXJhbmdlLXdyYXBwZXInLCBjaGlsZHJlbjogW19qc3goQmFzZUlucHV0VGVtcGxhdGUsIHsgdHlwZTogJ3JhbmdlJywgLi4ucHJvcHMgfSksIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiAncmFuZ2UtdmlldycsIGNoaWxkcmVuOiB2YWx1ZSB9KV0gfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmFuZ2VXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgYXJpYURlc2NyaWJlZEJ5SWRzLCBlbnVtT3B0aW9uc0luZGV4Rm9yVmFsdWUsIGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCwgfSBmcm9tICdAcmpzZi91dGlscyc7XG5mdW5jdGlvbiBnZXRWYWx1ZShldmVudCwgbXVsdGlwbGUpIHtcbiAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oZXZlbnQudGFyZ2V0Lm9wdGlvbnMpXG4gICAgICAgICAgICAuc2xpY2UoKVxuICAgICAgICAgICAgLmZpbHRlcigobykgPT4gby5zZWxlY3RlZClcbiAgICAgICAgICAgIC5tYXAoKG8pID0+IG8udmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gZXZlbnQudGFyZ2V0LnZhbHVlO1xufVxuLyoqIFRoZSBgU2VsZWN0V2lkZ2V0YCBpcyBhIHdpZGdldCBmb3IgcmVuZGVyaW5nIGRyb3Bkb3ducy5cbiAqICBJdCBpcyB0eXBpY2FsbHkgdXNlZCB3aXRoIHN0cmluZyBwcm9wZXJ0aWVzIGNvbnN0cmFpbmVkIHdpdGggZW51bSBvcHRpb25zLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5mdW5jdGlvbiBTZWxlY3RXaWRnZXQoeyBzY2hlbWEsIGlkLCBvcHRpb25zLCB2YWx1ZSwgcmVxdWlyZWQsIGRpc2FibGVkLCByZWFkb25seSwgbXVsdGlwbGUgPSBmYWxzZSwgYXV0b2ZvY3VzID0gZmFsc2UsIG9uQ2hhbmdlLCBvbkJsdXIsIG9uRm9jdXMsIHBsYWNlaG9sZGVyLCB9KSB7XG4gICAgY29uc3QgeyBlbnVtT3B0aW9ucywgZW51bURpc2FibGVkLCBlbXB0eVZhbHVlOiBvcHRFbXB0eVZhbCB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBlbXB0eVZhbHVlID0gbXVsdGlwbGUgPyBbXSA6ICcnO1xuICAgIGNvbnN0IGhhbmRsZUZvY3VzID0gdXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZ2V0VmFsdWUoZXZlbnQsIG11bHRpcGxlKTtcbiAgICAgICAgcmV0dXJuIG9uRm9jdXMoaWQsIGVudW1PcHRpb25zVmFsdWVGb3JJbmRleChuZXdWYWx1ZSwgZW51bU9wdGlvbnMsIG9wdEVtcHR5VmFsKSk7XG4gICAgfSwgW29uRm9jdXMsIGlkLCBzY2hlbWEsIG11bHRpcGxlLCBlbnVtT3B0aW9ucywgb3B0RW1wdHlWYWxdKTtcbiAgICBjb25zdCBoYW5kbGVCbHVyID0gdXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZ2V0VmFsdWUoZXZlbnQsIG11bHRpcGxlKTtcbiAgICAgICAgcmV0dXJuIG9uQmx1cihpZCwgZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4KG5ld1ZhbHVlLCBlbnVtT3B0aW9ucywgb3B0RW1wdHlWYWwpKTtcbiAgICB9LCBbb25CbHVyLCBpZCwgc2NoZW1hLCBtdWx0aXBsZSwgZW51bU9wdGlvbnMsIG9wdEVtcHR5VmFsXSk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZ2V0VmFsdWUoZXZlbnQsIG11bHRpcGxlKTtcbiAgICAgICAgcmV0dXJuIG9uQ2hhbmdlKGVudW1PcHRpb25zVmFsdWVGb3JJbmRleChuZXdWYWx1ZSwgZW51bU9wdGlvbnMsIG9wdEVtcHR5VmFsKSk7XG4gICAgfSwgW29uQ2hhbmdlLCBzY2hlbWEsIG11bHRpcGxlLCBlbnVtT3B0aW9ucywgb3B0RW1wdHlWYWxdKTtcbiAgICBjb25zdCBzZWxlY3RlZEluZGV4ZXMgPSBlbnVtT3B0aW9uc0luZGV4Rm9yVmFsdWUodmFsdWUsIGVudW1PcHRpb25zLCBtdWx0aXBsZSk7XG4gICAgY29uc3Qgc2hvd1BsYWNlaG9sZGVyT3B0aW9uID0gIW11bHRpcGxlICYmIHNjaGVtYS5kZWZhdWx0ID09PSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChfanN4cyhcInNlbGVjdFwiLCB7IGlkOiBpZCwgbmFtZTogaWQsIG11bHRpcGxlOiBtdWx0aXBsZSwgY2xhc3NOYW1lOiAnZm9ybS1jb250cm9sJywgdmFsdWU6IHR5cGVvZiBzZWxlY3RlZEluZGV4ZXMgPT09ICd1bmRlZmluZWQnID8gZW1wdHlWYWx1ZSA6IHNlbGVjdGVkSW5kZXhlcywgcmVxdWlyZWQ6IHJlcXVpcmVkLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgcmVhZG9ubHksIGF1dG9Gb2N1czogYXV0b2ZvY3VzLCBvbkJsdXI6IGhhbmRsZUJsdXIsIG9uRm9jdXM6IGhhbmRsZUZvY3VzLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBcImFyaWEtZGVzY3JpYmVkYnlcIjogYXJpYURlc2NyaWJlZEJ5SWRzKGlkKSwgY2hpbGRyZW46IFtzaG93UGxhY2Vob2xkZXJPcHRpb24gJiYgX2pzeChcIm9wdGlvblwiLCB7IHZhbHVlOiAnJywgY2hpbGRyZW46IHBsYWNlaG9sZGVyIH0pLCBBcnJheS5pc0FycmF5KGVudW1PcHRpb25zKSAmJlxuICAgICAgICAgICAgICAgIGVudW1PcHRpb25zLm1hcCgoeyB2YWx1ZSwgbGFiZWwgfSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IGVudW1EaXNhYmxlZCAmJiBlbnVtRGlzYWJsZWQuaW5kZXhPZih2YWx1ZSkgIT09IC0xO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKF9qc3goXCJvcHRpb25cIiwgeyB2YWx1ZTogU3RyaW5nKGkpLCBkaXNhYmxlZDogZGlzYWJsZWQsIGNoaWxkcmVuOiBsYWJlbCB9LCBpKSk7XG4gICAgICAgICAgICAgICAgfSldIH0pKTtcbn1cbmV4cG9ydCBkZWZhdWx0IFNlbGVjdFdpZGdldDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNlbGVjdFdpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBhcmlhRGVzY3JpYmVkQnlJZHMgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBUZXh0YXJlYVdpZGdldGAgaXMgYSB3aWRnZXQgZm9yIHJlbmRlcmluZyBpbnB1dCBmaWVsZHMgYXMgdGV4dGFyZWEuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIFRleHRhcmVhV2lkZ2V0KHsgaWQsIG9wdGlvbnMgPSB7fSwgcGxhY2Vob2xkZXIsIHZhbHVlLCByZXF1aXJlZCwgZGlzYWJsZWQsIHJlYWRvbmx5LCBhdXRvZm9jdXMgPSBmYWxzZSwgb25DaGFuZ2UsIG9uQmx1ciwgb25Gb2N1cywgfSkge1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKCh7IHRhcmdldDogeyB2YWx1ZSB9IH0pID0+IG9uQ2hhbmdlKHZhbHVlID09PSAnJyA/IG9wdGlvbnMuZW1wdHlWYWx1ZSA6IHZhbHVlKSwgW29uQ2hhbmdlLCBvcHRpb25zLmVtcHR5VmFsdWVdKTtcbiAgICBjb25zdCBoYW5kbGVCbHVyID0gdXNlQ2FsbGJhY2soKHsgdGFyZ2V0IH0pID0+IG9uQmx1cihpZCwgdGFyZ2V0ICYmIHRhcmdldC52YWx1ZSksIFtvbkJsdXIsIGlkXSk7XG4gICAgY29uc3QgaGFuZGxlRm9jdXMgPSB1c2VDYWxsYmFjaygoeyB0YXJnZXQgfSkgPT4gb25Gb2N1cyhpZCwgdGFyZ2V0ICYmIHRhcmdldC52YWx1ZSksIFtpZCwgb25Gb2N1c10pO1xuICAgIHJldHVybiAoX2pzeChcInRleHRhcmVhXCIsIHsgaWQ6IGlkLCBuYW1lOiBpZCwgY2xhc3NOYW1lOiAnZm9ybS1jb250cm9sJywgdmFsdWU6IHZhbHVlID8gdmFsdWUgOiAnJywgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCByZXF1aXJlZDogcmVxdWlyZWQsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZE9ubHk6IHJlYWRvbmx5LCBhdXRvRm9jdXM6IGF1dG9mb2N1cywgcm93czogb3B0aW9ucy5yb3dzLCBvbkJsdXI6IGhhbmRsZUJsdXIsIG9uRm9jdXM6IGhhbmRsZUZvY3VzLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBcImFyaWEtZGVzY3JpYmVkYnlcIjogYXJpYURlc2NyaWJlZEJ5SWRzKGlkKSB9KSk7XG59XG5UZXh0YXJlYVdpZGdldC5kZWZhdWx0UHJvcHMgPSB7XG4gICAgYXV0b2ZvY3VzOiBmYWxzZSxcbiAgICBvcHRpb25zOiB7fSxcbn07XG5leHBvcnQgZGVmYXVsdCBUZXh0YXJlYVdpZGdldDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRleHRhcmVhV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYFRleHRXaWRnZXRgIGNvbXBvbmVudCB1c2VzIHRoZSBgQmFzZUlucHV0VGVtcGxhdGVgLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUZXh0V2lkZ2V0KHByb3BzKSB7XG4gICAgY29uc3QgeyBvcHRpb25zLCByZWdpc3RyeSB9ID0gcHJvcHM7XG4gICAgY29uc3QgQmFzZUlucHV0VGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnQmFzZUlucHV0VGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIF9qc3goQmFzZUlucHV0VGVtcGxhdGUsIHsgLi4ucHJvcHMgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UZXh0V2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGdldFRlbXBsYXRlIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgVGltZVdpZGdldGAgY29tcG9uZW50IHVzZXMgdGhlIGBCYXNlSW5wdXRUZW1wbGF0ZWAgY2hhbmdpbmcgdGhlIHR5cGUgdG8gYHRpbWVgIGFuZCB0cmFuc2Zvcm1zXG4gKiB0aGUgdmFsdWUgdG8gdW5kZWZpbmVkIHdoZW4gaXQgaXMgZmFsc3kgZHVyaW5nIHRoZSBgb25DaGFuZ2VgIGhhbmRsaW5nLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUaW1lV2lkZ2V0KHByb3BzKSB7XG4gICAgY29uc3QgeyBvbkNoYW5nZSwgb3B0aW9ucywgcmVnaXN0cnkgfSA9IHByb3BzO1xuICAgIGNvbnN0IEJhc2VJbnB1dFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0Jhc2VJbnB1dFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKCh2YWx1ZSkgPT4gb25DaGFuZ2UodmFsdWUgPyBgJHt2YWx1ZX06MDBgIDogdW5kZWZpbmVkKSwgW29uQ2hhbmdlXSk7XG4gICAgcmV0dXJuIF9qc3goQmFzZUlucHV0VGVtcGxhdGUsIHsgdHlwZTogJ3RpbWUnLCAuLi5wcm9wcywgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRpbWVXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGdldFRlbXBsYXRlIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgVVJMV2lkZ2V0YCBjb21wb25lbnQgdXNlcyB0aGUgYEJhc2VJbnB1dFRlbXBsYXRlYCBjaGFuZ2luZyB0aGUgdHlwZSB0byBgdXJsYC5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVVJMV2lkZ2V0KHByb3BzKSB7XG4gICAgY29uc3QgeyBvcHRpb25zLCByZWdpc3RyeSB9ID0gcHJvcHM7XG4gICAgY29uc3QgQmFzZUlucHV0VGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnQmFzZUlucHV0VGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIF9qc3goQmFzZUlucHV0VGVtcGxhdGUsIHsgdHlwZTogJ3VybCcsIC4uLnByb3BzIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VVJMV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYFVwRG93bldpZGdldGAgY29tcG9uZW50IHVzZXMgdGhlIGBCYXNlSW5wdXRUZW1wbGF0ZWAgY2hhbmdpbmcgdGhlIHR5cGUgdG8gYG51bWJlcmAuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFVwRG93bldpZGdldChwcm9wcykge1xuICAgIGNvbnN0IHsgb3B0aW9ucywgcmVnaXN0cnkgfSA9IHByb3BzO1xuICAgIGNvbnN0IEJhc2VJbnB1dFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0Jhc2VJbnB1dFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIHJldHVybiBfanN4KEJhc2VJbnB1dFRlbXBsYXRlLCB7IHR5cGU6ICdudW1iZXInLCAuLi5wcm9wcyB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVVwRG93bldpZGdldC5qcy5tYXAiLCJpbXBvcnQgQWx0RGF0ZVdpZGdldCBmcm9tICcuL0FsdERhdGVXaWRnZXQnO1xuaW1wb3J0IEFsdERhdGVUaW1lV2lkZ2V0IGZyb20gJy4vQWx0RGF0ZVRpbWVXaWRnZXQnO1xuaW1wb3J0IENoZWNrYm94V2lkZ2V0IGZyb20gJy4vQ2hlY2tib3hXaWRnZXQnO1xuaW1wb3J0IENoZWNrYm94ZXNXaWRnZXQgZnJvbSAnLi9DaGVja2JveGVzV2lkZ2V0JztcbmltcG9ydCBDb2xvcldpZGdldCBmcm9tICcuL0NvbG9yV2lkZ2V0JztcbmltcG9ydCBEYXRlV2lkZ2V0IGZyb20gJy4vRGF0ZVdpZGdldCc7XG5pbXBvcnQgRGF0ZVRpbWVXaWRnZXQgZnJvbSAnLi9EYXRlVGltZVdpZGdldCc7XG5pbXBvcnQgRW1haWxXaWRnZXQgZnJvbSAnLi9FbWFpbFdpZGdldCc7XG5pbXBvcnQgRmlsZVdpZGdldCBmcm9tICcuL0ZpbGVXaWRnZXQnO1xuaW1wb3J0IEhpZGRlbldpZGdldCBmcm9tICcuL0hpZGRlbldpZGdldCc7XG5pbXBvcnQgUGFzc3dvcmRXaWRnZXQgZnJvbSAnLi9QYXNzd29yZFdpZGdldCc7XG5pbXBvcnQgUmFkaW9XaWRnZXQgZnJvbSAnLi9SYWRpb1dpZGdldCc7XG5pbXBvcnQgUmFuZ2VXaWRnZXQgZnJvbSAnLi9SYW5nZVdpZGdldCc7XG5pbXBvcnQgU2VsZWN0V2lkZ2V0IGZyb20gJy4vU2VsZWN0V2lkZ2V0JztcbmltcG9ydCBUZXh0YXJlYVdpZGdldCBmcm9tICcuL1RleHRhcmVhV2lkZ2V0JztcbmltcG9ydCBUZXh0V2lkZ2V0IGZyb20gJy4vVGV4dFdpZGdldCc7XG5pbXBvcnQgVGltZVdpZGdldCBmcm9tICcuL1RpbWVXaWRnZXQnO1xuaW1wb3J0IFVSTFdpZGdldCBmcm9tICcuL1VSTFdpZGdldCc7XG5pbXBvcnQgVXBEb3duV2lkZ2V0IGZyb20gJy4vVXBEb3duV2lkZ2V0JztcbmZ1bmN0aW9uIHdpZGdldHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgQWx0RGF0ZVdpZGdldCxcbiAgICAgICAgQWx0RGF0ZVRpbWVXaWRnZXQsXG4gICAgICAgIENoZWNrYm94V2lkZ2V0LFxuICAgICAgICBDaGVja2JveGVzV2lkZ2V0LFxuICAgICAgICBDb2xvcldpZGdldCxcbiAgICAgICAgRGF0ZVdpZGdldCxcbiAgICAgICAgRGF0ZVRpbWVXaWRnZXQsXG4gICAgICAgIEVtYWlsV2lkZ2V0LFxuICAgICAgICBGaWxlV2lkZ2V0LFxuICAgICAgICBIaWRkZW5XaWRnZXQsXG4gICAgICAgIFBhc3N3b3JkV2lkZ2V0LFxuICAgICAgICBSYWRpb1dpZGdldCxcbiAgICAgICAgUmFuZ2VXaWRnZXQsXG4gICAgICAgIFNlbGVjdFdpZGdldCxcbiAgICAgICAgVGV4dFdpZGdldCxcbiAgICAgICAgVGV4dGFyZWFXaWRnZXQsXG4gICAgICAgIFRpbWVXaWRnZXQsXG4gICAgICAgIFVwRG93bldpZGdldCxcbiAgICAgICAgVVJMV2lkZ2V0LFxuICAgIH07XG59XG5leHBvcnQgZGVmYXVsdCB3aWRnZXRzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiaW1wb3J0IHsgZW5nbGlzaFN0cmluZ1RyYW5zbGF0b3IgfSBmcm9tICdAcmpzZi91dGlscyc7XG5pbXBvcnQgZmllbGRzIGZyb20gJy4vY29tcG9uZW50cy9maWVsZHMnO1xuaW1wb3J0IHRlbXBsYXRlcyBmcm9tICcuL2NvbXBvbmVudHMvdGVtcGxhdGVzJztcbmltcG9ydCB3aWRnZXRzIGZyb20gJy4vY29tcG9uZW50cy93aWRnZXRzJztcbi8qKiBUaGUgZGVmYXVsdCByZWdpc3RyeSBjb25zaXN0cyBvZiBhbGwgdGhlIGZpZWxkcywgdGVtcGxhdGVzIGFuZCB3aWRnZXRzIHByb3ZpZGVkIGluIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uLFxuICogcGx1cyBhbiBlbXB0eSBgcm9vdFNjaGVtYWAgYW5kIGBmb3JtQ29udGV4dC4gV2Ugb21pdCBzY2hlbWFVdGlscyBoZXJlIGJlY2F1c2UgaXQgY2Fubm90IGJlIGRlZmF1bHRlZCB3aXRob3V0IGFcbiAqIHJvb3RTY2hlbWEgYW5kIHZhbGlkYXRvci4gSXQgd2lsbCBiZSBhZGRlZCBpbnRvIHRoZSBjb21wdXRlZCByZWdpc3RyeSBsYXRlciBpbiB0aGUgRm9ybS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RGVmYXVsdFJlZ2lzdHJ5KCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGZpZWxkczogZmllbGRzKCksXG4gICAgICAgIHRlbXBsYXRlczogdGVtcGxhdGVzKCksXG4gICAgICAgIHdpZGdldHM6IHdpZGdldHMoKSxcbiAgICAgICAgcm9vdFNjaGVtYToge30sXG4gICAgICAgIGZvcm1Db250ZXh0OiB7fSxcbiAgICAgICAgdHJhbnNsYXRlU3RyaW5nOiBlbmdsaXNoU3RyaW5nVHJhbnNsYXRvcixcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0RGVmYXVsdFJlZ2lzdHJ5LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNyZWF0ZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNyZWF0ZVNjaGVtYVV0aWxzLCBkZWVwRXF1YWxzLCBnZXRUZW1wbGF0ZSwgZ2V0VWlPcHRpb25zLCBpc09iamVjdCwgbWVyZ2VPYmplY3RzLCBOQU1FX0tFWSwgUkpTRl9BRERJVElPTkFMX1BST1BFUlRJRVNfRkxBRywgc2hvdWxkUmVuZGVyLCBTVUJNSVRfQlROX09QVElPTlNfS0VZLCB0b0Vycm9yTGlzdCwgVUlfR0xPQkFMX09QVElPTlNfS0VZLCBVSV9PUFRJT05TX0tFWSwgdmFsaWRhdGlvbkRhdGFNZXJnZSwgfSBmcm9tICdAcmpzZi91dGlscyc7XG5pbXBvcnQgX2ZvckVhY2ggZnJvbSAnbG9kYXNoL2ZvckVhY2gnO1xuaW1wb3J0IF9nZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgX2lzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuaW1wb3J0IF9pc05pbCBmcm9tICdsb2Rhc2gvaXNOaWwnO1xuaW1wb3J0IF9waWNrIGZyb20gJ2xvZGFzaC9waWNrJztcbmltcG9ydCBfdG9QYXRoIGZyb20gJ2xvZGFzaC90b1BhdGgnO1xuaW1wb3J0IGdldERlZmF1bHRSZWdpc3RyeSBmcm9tICcuLi9nZXREZWZhdWx0UmVnaXN0cnknO1xuLyoqIFRoZSBgRm9ybWAgY29tcG9uZW50IHJlbmRlcnMgdGhlIG91dGVyIGZvcm0gYW5kIGFsbCB0aGUgZmllbGRzIGRlZmluZWQgaW4gdGhlIGBzY2hlbWFgICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGb3JtIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICAvKiogQ29uc3RydWN0cyB0aGUgYEZvcm1gIGZyb20gdGhlIGBwcm9wc2AuIFdpbGwgc2V0dXAgdGhlIGluaXRpYWwgc3RhdGUgZnJvbSB0aGUgcHJvcHMuIEl0IHdpbGwgYWxzbyBjYWxsIHRoZVxuICAgICAqIGBvbkNoYW5nZWAgaGFuZGxlciBpZiB0aGUgaW5pdGlhbGx5IHByb3ZpZGVkIGBmb3JtRGF0YWAgaXMgbW9kaWZpZWQgdG8gYWRkIG1pc3NpbmcgZGVmYXVsdCB2YWx1ZXMgYXMgcGFydCBvZiB0aGVcbiAgICAgKiBzdGF0ZSBjb25zdHJ1Y3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvcHMgLSBUaGUgaW5pdGlhbCBwcm9wcyBmb3IgdGhlIGBGb3JtYFxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgICAgLyoqIFJldHVybnMgdGhlIGBmb3JtRGF0YWAgd2l0aCBvbmx5IHRoZSBlbGVtZW50cyBzcGVjaWZpZWQgaW4gdGhlIGBmaWVsZHNgIGxpc3RcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGZvcm1EYXRhIC0gVGhlIGRhdGEgZm9yIHRoZSBgRm9ybWBcbiAgICAgICAgICogQHBhcmFtIGZpZWxkcyAtIFRoZSBmaWVsZHMgdG8ga2VlcCB3aGlsZSBmaWx0ZXJpbmdcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZ2V0VXNlZEZvcm1EYXRhID0gKGZvcm1EYXRhLCBmaWVsZHMpID0+IHtcbiAgICAgICAgICAgIC8vIEZvciB0aGUgY2FzZSBvZiBhIHNpbmdsZSBpbnB1dCBmb3JtXG4gICAgICAgICAgICBpZiAoZmllbGRzLmxlbmd0aCA9PT0gMCAmJiB0eXBlb2YgZm9ybURhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1EYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gX3BpY2sgaGFzIGluY29ycmVjdCB0eXBlIGRlZmluaXRpb24sIGl0IHdvcmtzIHdpdGggc3RyaW5nW11bXSwgYmVjYXVzZSBsb2Rhc2gvaGFzSW4gc3VwcG9ydHMgaXRcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBfcGljayhmb3JtRGF0YSwgZmllbGRzKTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZvcm1EYXRhKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhkYXRhKS5tYXAoKGtleSkgPT4gZGF0YVtrZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9O1xuICAgICAgICAvKiogUmV0dXJucyB0aGUgbGlzdCBvZiBmaWVsZCBuYW1lcyBmcm9tIGluc3BlY3RpbmcgdGhlIGBwYXRoU2NoZW1hYCBhcyB3ZWxsIGFzIHVzaW5nIHRoZSBgZm9ybURhdGFgXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBwYXRoU2NoZW1hIC0gVGhlIGBQYXRoU2NoZW1hYCBvYmplY3QgZm9yIHRoZSBmb3JtXG4gICAgICAgICAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGZvcm0gZGF0YSB0byB1c2Ugd2hpbGUgY2hlY2tpbmcgZm9yIGVtcHR5IG9iamVjdHMvYXJyYXlzXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmdldEZpZWxkTmFtZXMgPSAocGF0aFNjaGVtYSwgZm9ybURhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdldEFsbFBhdGhzID0gKF9vYmosIGFjYyA9IFtdLCBwYXRocyA9IFtbXV0pID0+IHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhfb2JqKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBfb2JqW2tleV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdQYXRocyA9IHBhdGhzLm1hcCgocGF0aCkgPT4gWy4uLnBhdGgsIGtleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgYW4gb2JqZWN0IGlzIG1hcmtlZCB3aXRoIGFkZGl0aW9uYWxQcm9wZXJ0aWVzLCBhbGwgaXRzIGtleXMgYXJlIHZhbGlkXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX29ialtrZXldW1JKU0ZfQURESVRJT05BTF9QUk9QRVJUSUVTX0ZMQUddICYmIF9vYmpba2V5XVtOQU1FX0tFWV0gIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjLnB1c2goX29ialtrZXldW05BTUVfS0VZXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRBbGxQYXRocyhfb2JqW2tleV0sIGFjYywgbmV3UGF0aHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtleSA9PT0gTkFNRV9LRVkgJiYgX29ialtrZXldICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHMuZm9yRWFjaCgocGF0aCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IF9nZXQoZm9ybURhdGEsIHBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZHMgcGF0aCB0byBmaWVsZE5hbWVzIGlmIGl0IHBvaW50cyB0byBhIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3IgYW4gZW1wdHkgb2JqZWN0L2FycmF5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmb3JtVmFsdWUgIT09ICdvYmplY3QnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pc0VtcHR5KGZvcm1WYWx1ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFycmF5LmlzQXJyYXkoZm9ybVZhbHVlKSAmJiBmb3JtVmFsdWUuZXZlcnkoKHZhbCkgPT4gdHlwZW9mIHZhbCAhPT0gJ29iamVjdCcpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MucHVzaChwYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIGdldEFsbFBhdGhzKHBhdGhTY2hlbWEpO1xuICAgICAgICB9O1xuICAgICAgICAvKiogUmV0dXJucyB0aGUgYGZvcm1EYXRhYCBhZnRlciBmaWx0ZXJpbmcgdG8gcmVtb3ZlIGFueSBleHRyYSBkYXRhIG5vdCBpbiBhIGZvcm0gZmllbGRcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGZvcm1EYXRhIC0gVGhlIGRhdGEgZm9yIHRoZSBgRm9ybWBcbiAgICAgICAgICogQHJldHVybnMgVGhlIGBmb3JtRGF0YWAgYWZ0ZXIgb21pdHRpbmcgZXh0cmEgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vbWl0RXh0cmFEYXRhID0gKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHNjaGVtYSwgc2NoZW1hVXRpbHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgICAgICBjb25zdCByZXRyaWV2ZWRTY2hlbWEgPSBzY2hlbWFVdGlscy5yZXRyaWV2ZVNjaGVtYShzY2hlbWEsIGZvcm1EYXRhKTtcbiAgICAgICAgICAgIGNvbnN0IHBhdGhTY2hlbWEgPSBzY2hlbWFVdGlscy50b1BhdGhTY2hlbWEocmV0cmlldmVkU2NoZW1hLCAnJywgZm9ybURhdGEpO1xuICAgICAgICAgICAgY29uc3QgZmllbGROYW1lcyA9IHRoaXMuZ2V0RmllbGROYW1lcyhwYXRoU2NoZW1hLCBmb3JtRGF0YSk7XG4gICAgICAgICAgICBjb25zdCBuZXdGb3JtRGF0YSA9IHRoaXMuZ2V0VXNlZEZvcm1EYXRhKGZvcm1EYXRhLCBmaWVsZE5hbWVzKTtcbiAgICAgICAgICAgIHJldHVybiBuZXdGb3JtRGF0YTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIEZ1bmN0aW9uIHRvIGhhbmRsZSBjaGFuZ2VzIG1hZGUgdG8gYSBmaWVsZCBpbiB0aGUgYEZvcm1gLiBUaGlzIGhhbmRsZXIgcmVjZWl2ZXMgYW4gZW50aXJlbHkgbmV3IGNvcHkgb2YgdGhlXG4gICAgICAgICAqIGBmb3JtRGF0YWAgYWxvbmcgd2l0aCBhIG5ldyBgRXJyb3JTY2hlbWFgLiBJdCB3aWxsIGZpcnN0IHVwZGF0ZSB0aGUgYGZvcm1EYXRhYCB3aXRoIGFueSBtaXNzaW5nIGRlZmF1bHQgZmllbGRzIGFuZFxuICAgICAgICAgKiB0aGVuLCBpZiBgb21pdEV4dHJhRGF0YWAgYW5kIGBsaXZlT21pdGAgYXJlIHR1cm5lZCBvbiwgdGhlIGBmb3JtRGF0YWAgd2lsbCBiZSBmaWx0ZXJlZCB0byByZW1vdmUgYW55IGV4dHJhIGRhdGEgbm90XG4gICAgICAgICAqIGluIGEgZm9ybSBmaWVsZC4gVGhlbiwgdGhlIHJlc3VsdGluZyBmb3JtRGF0YSB3aWxsIGJlIHZhbGlkYXRlZCBpZiByZXF1aXJlZC4gVGhlIHN0YXRlIHdpbGwgYmUgdXBkYXRlZCB3aXRoIHRoZSBuZXdcbiAgICAgICAgICogdXBkYXRlZCAocG90ZW50aWFsbHkgZmlsdGVyZWQpIGBmb3JtRGF0YWAsIGFueSBlcnJvcnMgdGhhdCByZXN1bHRlZCBmcm9tIHZhbGlkYXRpb24uIEZpbmFsbHkgdGhlIGBvbkNoYW5nZWBcbiAgICAgICAgICogY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgaWYgc3BlY2lmaWVkIHdpdGggdGhlIHVwZGF0ZWQgc3RhdGUuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBuZXcgZm9ybSBkYXRhIGZyb20gYSBjaGFuZ2UgdG8gYSBmaWVsZFxuICAgICAgICAgKiBAcGFyYW0gbmV3RXJyb3JTY2hlbWEgLSBUaGUgbmV3IGBFcnJvclNjaGVtYWAgYmFzZWQgb24gdGhlIGZpZWxkIGNoYW5nZVxuICAgICAgICAgKiBAcGFyYW0gaWQgLSBUaGUgaWQgb2YgdGhlIGZpZWxkIHRoYXQgY2F1c2VkIHRoZSBjaGFuZ2VcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSAoZm9ybURhdGEsIG5ld0Vycm9yU2NoZW1hLCBpZCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBleHRyYUVycm9ycywgb21pdEV4dHJhRGF0YSwgbGl2ZU9taXQsIG5vVmFsaWRhdGUsIGxpdmVWYWxpZGF0ZSwgb25DaGFuZ2UgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICBjb25zdCB7IHNjaGVtYVV0aWxzLCBzY2hlbWEsIHJldHJpZXZlZFNjaGVtYSB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgICAgIGlmIChpc09iamVjdChmb3JtRGF0YSkgfHwgQXJyYXkuaXNBcnJheShmb3JtRGF0YSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHRoaXMuZ2V0U3RhdGVGcm9tUHJvcHModGhpcy5wcm9wcywgZm9ybURhdGEsIHJldHJpZXZlZFNjaGVtYSk7XG4gICAgICAgICAgICAgICAgZm9ybURhdGEgPSBuZXdTdGF0ZS5mb3JtRGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG11c3RWYWxpZGF0ZSA9ICFub1ZhbGlkYXRlICYmIGxpdmVWYWxpZGF0ZTtcbiAgICAgICAgICAgIGxldCBzdGF0ZSA9IHsgZm9ybURhdGEsIHNjaGVtYSB9O1xuICAgICAgICAgICAgbGV0IG5ld0Zvcm1EYXRhID0gZm9ybURhdGE7XG4gICAgICAgICAgICBpZiAob21pdEV4dHJhRGF0YSA9PT0gdHJ1ZSAmJiBsaXZlT21pdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIG5ld0Zvcm1EYXRhID0gdGhpcy5vbWl0RXh0cmFEYXRhKGZvcm1EYXRhKTtcbiAgICAgICAgICAgICAgICBzdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybURhdGE6IG5ld0Zvcm1EYXRhLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobXVzdFZhbGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2NoZW1hVmFsaWRhdGlvbiA9IHRoaXMudmFsaWRhdGUobmV3Rm9ybURhdGEsIHNjaGVtYSwgc2NoZW1hVXRpbHMsIHJldHJpZXZlZFNjaGVtYSk7XG4gICAgICAgICAgICAgICAgbGV0IGVycm9ycyA9IHNjaGVtYVZhbGlkYXRpb24uZXJyb3JzO1xuICAgICAgICAgICAgICAgIGxldCBlcnJvclNjaGVtYSA9IHNjaGVtYVZhbGlkYXRpb24uZXJyb3JTY2hlbWE7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2NoZW1hVmFsaWRhdGlvbkVycm9ycyA9IGVycm9ycztcbiAgICAgICAgICAgICAgICBjb25zdCBzY2hlbWFWYWxpZGF0aW9uRXJyb3JTY2hlbWEgPSBlcnJvclNjaGVtYTtcbiAgICAgICAgICAgICAgICBpZiAoZXh0cmFFcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVyZ2VkID0gdmFsaWRhdGlvbkRhdGFNZXJnZShzY2hlbWFWYWxpZGF0aW9uLCBleHRyYUVycm9ycyk7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yU2NoZW1hID0gbWVyZ2VkLmVycm9yU2NoZW1hO1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBtZXJnZWQuZXJyb3JzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBNZXJnaW5nICduZXdFcnJvclNjaGVtYScgaW50byAnZXJyb3JTY2hlbWEnIHRvIGRpc3BsYXkgdGhlIGN1c3RvbSByYWlzZWQgZXJyb3JzLlxuICAgICAgICAgICAgICAgIGlmIChuZXdFcnJvclNjaGVtYSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEVycm9ycyA9IHRoaXMuZmlsdGVyRXJyb3JzQmFzZWRPblNjaGVtYShuZXdFcnJvclNjaGVtYSwgcmV0cmlldmVkU2NoZW1hLCBuZXdGb3JtRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yU2NoZW1hID0gbWVyZ2VPYmplY3RzKGVycm9yU2NoZW1hLCBmaWx0ZXJlZEVycm9ycywgJ3ByZXZlbnREdXBsaWNhdGVzJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0YXRlID0ge1xuICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YTogbmV3Rm9ybURhdGEsXG4gICAgICAgICAgICAgICAgICAgIGVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIHNjaGVtYVZhbGlkYXRpb25FcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgIHNjaGVtYVZhbGlkYXRpb25FcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIW5vVmFsaWRhdGUgJiYgbmV3RXJyb3JTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvclNjaGVtYSA9IGV4dHJhRXJyb3JzXG4gICAgICAgICAgICAgICAgICAgID8gbWVyZ2VPYmplY3RzKG5ld0Vycm9yU2NoZW1hLCBleHRyYUVycm9ycywgJ3ByZXZlbnREdXBsaWNhdGVzJylcbiAgICAgICAgICAgICAgICAgICAgOiBuZXdFcnJvclNjaGVtYTtcbiAgICAgICAgICAgICAgICBzdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybURhdGE6IG5ld0Zvcm1EYXRhLFxuICAgICAgICAgICAgICAgICAgICBlcnJvclNjaGVtYTogZXJyb3JTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yczogdG9FcnJvckxpc3QoZXJyb3JTY2hlbWEpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHN0YXRlLCAoKSA9PiBvbkNoYW5nZSAmJiBvbkNoYW5nZSh7IC4uLnRoaXMuc3RhdGUsIC4uLnN0YXRlIH0sIGlkKSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDYWxsYmFjayBmdW5jdGlvbiB0byBoYW5kbGUgcmVzZXQgZm9ybSBkYXRhLlxuICAgICAgICAgKiAtIFJlc2V0IGFsbCBmaWVsZHMgd2l0aCBkZWZhdWx0IHZhbHVlcy5cbiAgICAgICAgICogLSBSZXNldCB2YWxpZGF0aW9ucyBhbmQgZXJyb3JzXG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnJlc2V0ID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIGNvbnN0IG5ld1N0YXRlID0gdGhpcy5nZXRTdGF0ZUZyb21Qcm9wcyh0aGlzLnByb3BzLCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgY29uc3QgbmV3Rm9ybURhdGEgPSBuZXdTdGF0ZS5mb3JtRGF0YTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0ge1xuICAgICAgICAgICAgICAgIGZvcm1EYXRhOiBuZXdGb3JtRGF0YSxcbiAgICAgICAgICAgICAgICBlcnJvclNjaGVtYToge30sXG4gICAgICAgICAgICAgICAgZXJyb3JzOiBbXSxcbiAgICAgICAgICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzOiBbXSxcbiAgICAgICAgICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JTY2hlbWE6IHt9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoc3RhdGUsICgpID0+IG9uQ2hhbmdlICYmIG9uQ2hhbmdlKHsgLi4udGhpcy5zdGF0ZSwgLi4uc3RhdGUgfSkpO1xuICAgICAgICB9O1xuICAgICAgICAvKiogQ2FsbGJhY2sgZnVuY3Rpb24gdG8gaGFuZGxlIHdoZW4gYSBmaWVsZCBvbiB0aGUgZm9ybSBpcyBibHVycmVkLiBDYWxscyB0aGUgYG9uQmx1cmAgY2FsbGJhY2sgZm9yIHRoZSBgRm9ybWAgaWYgaXRcbiAgICAgICAgICogd2FzIHByb3ZpZGVkLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gaWQgLSBUaGUgdW5pcXVlIGBpZGAgb2YgdGhlIGZpZWxkIHRoYXQgd2FzIGJsdXJyZWRcbiAgICAgICAgICogQHBhcmFtIGRhdGEgLSBUaGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIGZpZWxkIHRoYXQgd2FzIGJsdXJyZWRcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub25CbHVyID0gKGlkLCBkYXRhKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IG9uQmx1ciB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIGlmIChvbkJsdXIpIHtcbiAgICAgICAgICAgICAgICBvbkJsdXIoaWQsIGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAvKiogQ2FsbGJhY2sgZnVuY3Rpb24gdG8gaGFuZGxlIHdoZW4gYSBmaWVsZCBvbiB0aGUgZm9ybSBpcyBmb2N1c2VkLiBDYWxscyB0aGUgYG9uRm9jdXNgIGNhbGxiYWNrIGZvciB0aGUgYEZvcm1gIGlmIGl0XG4gICAgICAgICAqIHdhcyBwcm92aWRlZC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGlkIC0gVGhlIHVuaXF1ZSBgaWRgIG9mIHRoZSBmaWVsZCB0aGF0IHdhcyBmb2N1c2VkXG4gICAgICAgICAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWVsZCB0aGF0IHdhcyBmb2N1c2VkXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uRm9jdXMgPSAoaWQsIGRhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgb25Gb2N1cyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIGlmIChvbkZvY3VzKSB7XG4gICAgICAgICAgICAgICAgb25Gb2N1cyhpZCwgZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBDYWxsYmFjayBmdW5jdGlvbiB0byBoYW5kbGUgd2hlbiB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQuIEZpcnN0LCBpdCBwcmV2ZW50cyB0aGUgZGVmYXVsdCBldmVudCBiZWhhdmlvci4gTm90aGluZ1xuICAgICAgICAgKiBoYXBwZW5zIGlmIHRoZSB0YXJnZXQgYW5kIGN1cnJlbnRUYXJnZXQgb2YgdGhlIGV2ZW50IGFyZSBub3QgdGhlIHNhbWUuIEl0IHdpbGwgb21pdCBhbnkgZXh0cmEgZGF0YSBpbiB0aGVcbiAgICAgICAgICogYGZvcm1EYXRhYCBpbiB0aGUgc3RhdGUgaWYgYG9taXRFeHRyYURhdGFgIGlzIHRydWUuIEl0IHdpbGwgdmFsaWRhdGUgdGhlIHJlc3VsdGluZyBgZm9ybURhdGFgLCByZXBvcnRpbmcgZXJyb3JzXG4gICAgICAgICAqIHZpYSB0aGUgYG9uRXJyb3IoKWAgY2FsbGJhY2sgdW5sZXNzIHZhbGlkYXRpb24gaXMgZGlzYWJsZWQuIEZpbmFsbHksIGl0IHdpbGwgYWRkIGluIGFueSBgZXh0cmFFcnJvcnNgIGFuZCB0aGVuIGNhbGxcbiAgICAgICAgICogYmFjayB0aGUgYG9uU3VibWl0YCBjYWxsYmFjayBpZiBpdCB3YXMgcHJvdmlkZWQuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBzdWJtaXQgSFRNTCBmb3JtIGV2ZW50XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uU3VibWl0ID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gZXZlbnQuY3VycmVudFRhcmdldCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV2ZW50LnBlcnNpc3QoKTtcbiAgICAgICAgICAgIGNvbnN0IHsgb21pdEV4dHJhRGF0YSwgZXh0cmFFcnJvcnMsIG5vVmFsaWRhdGUsIG9uU3VibWl0IH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgbGV0IHsgZm9ybURhdGE6IG5ld0Zvcm1EYXRhIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICAgICAgaWYgKG9taXRFeHRyYURhdGEgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBuZXdGb3JtRGF0YSA9IHRoaXMub21pdEV4dHJhRGF0YShuZXdGb3JtRGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm9WYWxpZGF0ZSB8fCB0aGlzLnZhbGlkYXRlRm9ybVdpdGhGb3JtRGF0YShuZXdGb3JtRGF0YSkpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGVyZSBhcmUgbm8gZXJyb3JzIGdlbmVyYXRlZCB0aHJvdWdoIHNjaGVtYSB2YWxpZGF0aW9uLlxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciB1c2VyIHByb3ZpZGVkIGVycm9ycyBhbmQgdXBkYXRlIHN0YXRlIGFjY29yZGluZ2x5LlxuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yU2NoZW1hID0gZXh0cmFFcnJvcnMgfHwge307XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3JzID0gZXh0cmFFcnJvcnMgPyB0b0Vycm9yTGlzdChleHRyYUVycm9ycykgOiBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybURhdGE6IG5ld0Zvcm1EYXRhLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yU2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hOiB7fSxcbiAgICAgICAgICAgICAgICB9LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvblN1Ym1pdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25TdWJtaXQoeyAuLi50aGlzLnN0YXRlLCBmb3JtRGF0YTogbmV3Rm9ybURhdGEsIHN0YXR1czogJ3N1Ym1pdHRlZCcgfSwgZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBQcm92aWRlcyBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gcHJvZ3JhbW1hdGljYWxseSBzdWJtaXQgdGhlIGBGb3JtYCAqL1xuICAgICAgICB0aGlzLnN1Ym1pdCA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1FbGVtZW50LmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJtaXRDdXN0b21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgnc3VibWl0Jywge1xuICAgICAgICAgICAgICAgICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHN1Ym1pdEN1c3RvbUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtRWxlbWVudC5jdXJyZW50LmRpc3BhdGNoRXZlbnQoc3VibWl0Q3VzdG9tRXZlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnQuY3VycmVudC5yZXF1ZXN0U3VibWl0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBWYWxpZGF0ZXMgdGhlIGZvcm0gdXNpbmcgdGhlIGdpdmVuIGBmb3JtRGF0YWAuIEZvciB1c2Ugb24gZm9ybSBzdWJtaXNzaW9uIG9yIG9uIHByb2dyYW1tYXRpYyB2YWxpZGF0aW9uLlxuICAgICAgICAgKiBJZiBgb25FcnJvcmAgaXMgcHJvdmlkZWQsIHRoZW4gaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgbGlzdCBvZiBlcnJvcnMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBmb3JtIGRhdGEgdG8gdmFsaWRhdGVcbiAgICAgICAgICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBmb3JtIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnZhbGlkYXRlRm9ybVdpdGhGb3JtRGF0YSA9IChmb3JtRGF0YSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBleHRyYUVycm9ycywgZXh0cmFFcnJvcnNCbG9ja1N1Ym1pdCwgZm9jdXNPbkZpcnN0RXJyb3IsIG9uRXJyb3IgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICBjb25zdCB7IGVycm9yczogcHJldkVycm9ycyB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgICAgIGNvbnN0IHNjaGVtYVZhbGlkYXRpb24gPSB0aGlzLnZhbGlkYXRlKGZvcm1EYXRhKTtcbiAgICAgICAgICAgIGxldCBlcnJvcnMgPSBzY2hlbWFWYWxpZGF0aW9uLmVycm9ycztcbiAgICAgICAgICAgIGxldCBlcnJvclNjaGVtYSA9IHNjaGVtYVZhbGlkYXRpb24uZXJyb3JTY2hlbWE7XG4gICAgICAgICAgICBjb25zdCBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzID0gZXJyb3JzO1xuICAgICAgICAgICAgY29uc3Qgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hID0gZXJyb3JTY2hlbWE7XG4gICAgICAgICAgICBjb25zdCBoYXNFcnJvciA9IGVycm9ycy5sZW5ndGggPiAwIHx8IChleHRyYUVycm9ycyAmJiBleHRyYUVycm9yc0Jsb2NrU3VibWl0KTtcbiAgICAgICAgICAgIGlmIChoYXNFcnJvcikge1xuICAgICAgICAgICAgICAgIGlmIChleHRyYUVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXJnZWQgPSB2YWxpZGF0aW9uRGF0YU1lcmdlKHNjaGVtYVZhbGlkYXRpb24sIGV4dHJhRXJyb3JzKTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JTY2hlbWEgPSBtZXJnZWQuZXJyb3JTY2hlbWE7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IG1lcmdlZC5lcnJvcnM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChmb2N1c09uRmlyc3RFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZvY3VzT25GaXJzdEVycm9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb2N1c09uRmlyc3RFcnJvcihlcnJvcnNbMF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c09uRXJyb3IoZXJyb3JzWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICBlcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hLFxuICAgICAgICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Zvcm0gdmFsaWRhdGlvbiBmYWlsZWQnLCBlcnJvcnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChwcmV2RXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JTY2hlbWE6IHt9LFxuICAgICAgICAgICAgICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hOiB7fSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAhaGFzRXJyb3I7XG4gICAgICAgIH07XG4gICAgICAgIGlmICghcHJvcHMudmFsaWRhdG9yKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0EgdmFsaWRhdG9yIGlzIHJlcXVpcmVkIGZvciBGb3JtIGZ1bmN0aW9uYWxpdHkgdG8gd29yaycpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLmdldFN0YXRlRnJvbVByb3BzKHByb3BzLCBwcm9wcy5mb3JtRGF0YSk7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9uQ2hhbmdlICYmICFkZWVwRXF1YWxzKHRoaXMuc3RhdGUuZm9ybURhdGEsIHRoaXMucHJvcHMuZm9ybURhdGEpKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKHRoaXMuc3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybUVsZW1lbnQgPSBjcmVhdGVSZWYoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogYGdldFNuYXBzaG90QmVmb3JlVXBkYXRlYCBpcyBhIFJlYWN0IGxpZmVjeWNsZSBtZXRob2QgdGhhdCBpcyBpbnZva2VkIHJpZ2h0IGJlZm9yZSB0aGUgbW9zdCByZWNlbnRseSByZW5kZXJlZFxuICAgICAqIG91dHB1dCBpcyBjb21taXR0ZWQgdG8gdGhlIERPTS4gSXQgZW5hYmxlcyB5b3VyIGNvbXBvbmVudCB0byBjYXB0dXJlIGN1cnJlbnQgdmFsdWVzIChlLmcuLCBzY3JvbGwgcG9zaXRpb24pIGJlZm9yZVxuICAgICAqIHRoZXkgYXJlIHBvdGVudGlhbGx5IGNoYW5nZWQuXG4gICAgICpcbiAgICAgKiBJbiB0aGlzIGNhc2UsIGl0IGNoZWNrcyBpZiB0aGUgcHJvcHMgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IHJlbmRlci4gSWYgdGhleSBoYXZlLCBpdCBjb21wdXRlcyB0aGUgbmV4dCBzdGF0ZVxuICAgICAqIG9mIHRoZSBjb21wb25lbnQgdXNpbmcgYGdldFN0YXRlRnJvbVByb3BzYCBtZXRob2QgYW5kIHJldHVybnMgaXQgYWxvbmcgd2l0aCBhIGBzaG91bGRVcGRhdGVgIGZsYWcgc2V0IHRvIGB0cnVlYCBJRlxuICAgICAqIHRoZSBgbmV4dFN0YXRlYCBhbmQgYHByZXZTdGF0ZWAgYXJlIGRpZmZlcmVudCwgb3RoZXJ3aXNlIGBmYWxzZWAuIFRoaXMgZW5zdXJlcyB0aGF0IHdlIGhhdmUgdGhlIG1vc3QgdXAtdG8tZGF0ZVxuICAgICAqIHN0YXRlIHJlYWR5IHRvIGJlIGFwcGxpZWQgaW4gYGNvbXBvbmVudERpZFVwZGF0ZWAuXG4gICAgICpcbiAgICAgKiBJZiBgZm9ybURhdGFgIGhhc24ndCBjaGFuZ2VkLCBpdCBzaW1wbHkgcmV0dXJucyBhbiBvYmplY3Qgd2l0aCBgc2hvdWxkVXBkYXRlYCBzZXQgdG8gYGZhbHNlYCwgaW5kaWNhdGluZyB0aGF0IGFcbiAgICAgKiBzdGF0ZSB1cGRhdGUgaXMgbm90IG5lY2Vzc2FyeS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcmV2UHJvcHMgLSBUaGUgcHJldmlvdXMgc2V0IG9mIHByb3BzIGJlZm9yZSB0aGUgdXBkYXRlLlxuICAgICAqIEBwYXJhbSBwcmV2U3RhdGUgLSBUaGUgcHJldmlvdXMgc3RhdGUgYmVmb3JlIHRoZSB1cGRhdGUuXG4gICAgICogQHJldHVybnMgRWl0aGVyIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBuZXh0IHN0YXRlIGFuZCBhIGZsYWcgaW5kaWNhdGluZyB0aGF0IGFuIHVwZGF0ZSBzaG91bGQgb2NjdXIsIG9yIGFuIG9iamVjdFxuICAgICAqICAgICAgICB3aXRoIGEgZmxhZyBpbmRpY2F0aW5nIHRoYXQgYW4gdXBkYXRlIGlzIG5vdCBuZWNlc3NhcnkuXG4gICAgICovXG4gICAgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUocHJldlByb3BzLCBwcmV2U3RhdGUpIHtcbiAgICAgICAgaWYgKCFkZWVwRXF1YWxzKHRoaXMucHJvcHMsIHByZXZQcm9wcykpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzU2NoZW1hQ2hhbmdlZCA9ICFkZWVwRXF1YWxzKHByZXZQcm9wcy5zY2hlbWEsIHRoaXMucHJvcHMuc2NoZW1hKTtcbiAgICAgICAgICAgIGNvbnN0IGlzRm9ybURhdGFDaGFuZ2VkID0gIWRlZXBFcXVhbHMocHJldlByb3BzLmZvcm1EYXRhLCB0aGlzLnByb3BzLmZvcm1EYXRhKTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRTdGF0ZSA9IHRoaXMuZ2V0U3RhdGVGcm9tUHJvcHModGhpcy5wcm9wcywgdGhpcy5wcm9wcy5mb3JtRGF0YSwgXG4gICAgICAgICAgICAvLyBJZiB0aGUgYHNjaGVtYWAgaGFzIGNoYW5nZWQsIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSByZXRyaWV2ZWQgc2NoZW1hLlxuICAgICAgICAgICAgLy8gT3IgaWYgdGhlIGBmb3JtRGF0YWAgY2hhbmdlcywgZm9yIGV4YW1wbGUgaW4gdGhlIGNhc2Ugb2YgYSBzY2hlbWEgd2l0aCBkZXBlbmRlbmNpZXMgdGhhdCBuZWVkIHRvXG4gICAgICAgICAgICAvLyAgbWF0Y2ggb25lIG9mIHRoZSBzdWJTY2hlbWFzLCB0aGUgcmV0cmlldmVkIHNjaGVtYSBtdXN0IGJlIHVwZGF0ZWQuXG4gICAgICAgICAgICBpc1NjaGVtYUNoYW5nZWQgfHwgaXNGb3JtRGF0YUNoYW5nZWQgPyB1bmRlZmluZWQgOiB0aGlzLnN0YXRlLnJldHJpZXZlZFNjaGVtYSwgaXNTY2hlbWFDaGFuZ2VkKTtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZFVwZGF0ZSA9ICFkZWVwRXF1YWxzKG5leHRTdGF0ZSwgcHJldlN0YXRlKTtcbiAgICAgICAgICAgIHJldHVybiB7IG5leHRTdGF0ZSwgc2hvdWxkVXBkYXRlIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgc2hvdWxkVXBkYXRlOiBmYWxzZSB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBgY29tcG9uZW50RGlkVXBkYXRlYCBpcyBhIFJlYWN0IGxpZmVjeWNsZSBtZXRob2QgdGhhdCBpcyBpbnZva2VkIGltbWVkaWF0ZWx5IGFmdGVyIHVwZGF0aW5nIG9jY3Vycy4gVGhpcyBtZXRob2QgaXNcbiAgICAgKiBub3QgY2FsbGVkIGZvciB0aGUgaW5pdGlhbCByZW5kZXIuXG4gICAgICpcbiAgICAgKiBIZXJlLCBpdCBjaGVja3MgaWYgYW4gdXBkYXRlIGlzIG5lY2Vzc2FyeSBiYXNlZCBvbiB0aGUgYHNob3VsZFVwZGF0ZWAgZmxhZyByZWNlaXZlZCBmcm9tIGBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZWAuXG4gICAgICogSWYgYW4gdXBkYXRlIGlzIHJlcXVpcmVkLCBpdCBhcHBsaWVzIHRoZSBuZXh0IHN0YXRlIGFuZCwgaWYgbmVlZGVkLCB0cmlnZ2VycyB0aGUgYG9uQ2hhbmdlYCBoYW5kbGVyIHRvIGluZm9ybSBhYm91dFxuICAgICAqIGNoYW5nZXMuXG4gICAgICpcbiAgICAgKiBUaGlzIG1ldGhvZCBlZmZlY3RpdmVseSByZXBsYWNlcyB0aGUgZGVwcmVjYXRlZCBgVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHNgLCBwcm92aWRpbmcgYSBzYWZlciBhbHRlcm5hdGl2ZVxuICAgICAqIHRvIGhhbmRsZSBwcm9wIGNoYW5nZXMgYW5kIHN0YXRlIHVwZGF0ZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gXyAtIFRoZSBwcmV2aW91cyBzZXQgb2YgcHJvcHMuXG4gICAgICogQHBhcmFtIHByZXZTdGF0ZSAtIFRoZSBwcmV2aW91cyBzdGF0ZSBvZiB0aGUgY29tcG9uZW50IGJlZm9yZSB0aGUgdXBkYXRlLlxuICAgICAqIEBwYXJhbSBzbmFwc2hvdCAtIFRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZWAuXG4gICAgICovXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKF8sIHByZXZTdGF0ZSwgc25hcHNob3QpIHtcbiAgICAgICAgaWYgKHNuYXBzaG90LnNob3VsZFVwZGF0ZSkge1xuICAgICAgICAgICAgY29uc3QgeyBuZXh0U3RhdGUgfSA9IHNuYXBzaG90O1xuICAgICAgICAgICAgaWYgKCFkZWVwRXF1YWxzKG5leHRTdGF0ZS5mb3JtRGF0YSwgdGhpcy5wcm9wcy5mb3JtRGF0YSkgJiZcbiAgICAgICAgICAgICAgICAhZGVlcEVxdWFscyhuZXh0U3RhdGUuZm9ybURhdGEsIHByZXZTdGF0ZS5mb3JtRGF0YSkgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZShuZXh0U3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZShuZXh0U3RhdGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKiBFeHRyYWN0cyB0aGUgdXBkYXRlZCBzdGF0ZSBmcm9tIHRoZSBnaXZlbiBgcHJvcHNgIGFuZCBgaW5wdXRGb3JtRGF0YWAuIEFzIHBhcnQgb2YgdGhpcyBwcm9jZXNzLCB0aGVcbiAgICAgKiBgaW5wdXRGb3JtRGF0YWAgaXMgZmlyc3QgcHJvY2Vzc2VkIHRvIGFkZCBhbnkgbWlzc2luZyByZXF1aXJlZCBkZWZhdWx0cy4gQWZ0ZXIgdGhhdCwgdGhlIGRhdGEgaXMgcnVuIHRocm91Z2ggdGhlXG4gICAgICogdmFsaWRhdGlvbiBwcm9jZXNzIElGIHJlcXVpcmVkIGJ5IHRoZSBgcHJvcHNgLlxuICAgICAqXG4gICAgICogQHBhcmFtIHByb3BzIC0gVGhlIHByb3BzIHBhc3NlZCB0byB0aGUgYEZvcm1gXG4gICAgICogQHBhcmFtIGlucHV0Rm9ybURhdGEgLSBUaGUgbmV3IG9yIGN1cnJlbnQgZGF0YSBmb3IgdGhlIGBGb3JtYFxuICAgICAqIEBwYXJhbSByZXRyaWV2ZWRTY2hlbWEgLSBBbiBleHBhbmRlZCBzY2hlbWEsIGlmIG5vdCBwcm92aWRlZCwgaXQgd2lsbCBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgYHNjaGVtYWAgYW5kIGBmb3JtRGF0YWAuXG4gICAgICogQHBhcmFtIGlzU2NoZW1hQ2hhbmdlZCAtIEEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHNjaGVtYSBoYXMgY2hhbmdlZC5cbiAgICAgKiBAcmV0dXJucyAtIFRoZSBuZXcgc3RhdGUgZm9yIHRoZSBgRm9ybWBcbiAgICAgKi9cbiAgICBnZXRTdGF0ZUZyb21Qcm9wcyhwcm9wcywgaW5wdXRGb3JtRGF0YSwgcmV0cmlldmVkU2NoZW1hLCBpc1NjaGVtYUNoYW5nZWQgPSBmYWxzZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZSB8fCB7fTtcbiAgICAgICAgY29uc3Qgc2NoZW1hID0gJ3NjaGVtYScgaW4gcHJvcHMgPyBwcm9wcy5zY2hlbWEgOiB0aGlzLnByb3BzLnNjaGVtYTtcbiAgICAgICAgY29uc3QgdWlTY2hlbWEgPSAoJ3VpU2NoZW1hJyBpbiBwcm9wcyA/IHByb3BzLnVpU2NoZW1hIDogdGhpcy5wcm9wcy51aVNjaGVtYSkgfHwge307XG4gICAgICAgIGNvbnN0IGVkaXQgPSB0eXBlb2YgaW5wdXRGb3JtRGF0YSAhPT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgIGNvbnN0IGxpdmVWYWxpZGF0ZSA9ICdsaXZlVmFsaWRhdGUnIGluIHByb3BzID8gcHJvcHMubGl2ZVZhbGlkYXRlIDogdGhpcy5wcm9wcy5saXZlVmFsaWRhdGU7XG4gICAgICAgIGNvbnN0IG11c3RWYWxpZGF0ZSA9IGVkaXQgJiYgIXByb3BzLm5vVmFsaWRhdGUgJiYgbGl2ZVZhbGlkYXRlO1xuICAgICAgICBjb25zdCByb290U2NoZW1hID0gc2NoZW1hO1xuICAgICAgICBjb25zdCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID0gJ2V4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3InIGluIHByb3BzXG4gICAgICAgICAgICA/IHByb3BzLmV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3JcbiAgICAgICAgICAgIDogdGhpcy5wcm9wcy5leHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yO1xuICAgICAgICBjb25zdCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZiA9ICdleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZicgaW4gcHJvcHNcbiAgICAgICAgICAgID8gcHJvcHMuZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZcbiAgICAgICAgICAgIDogdGhpcy5wcm9wcy5leHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZjtcbiAgICAgICAgbGV0IHNjaGVtYVV0aWxzID0gc3RhdGUuc2NoZW1hVXRpbHM7XG4gICAgICAgIGlmICghc2NoZW1hVXRpbHMgfHxcbiAgICAgICAgICAgIHNjaGVtYVV0aWxzLmRvZXNTY2hlbWFVdGlsc0RpZmZlcihwcm9wcy52YWxpZGF0b3IsIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSkge1xuICAgICAgICAgICAgc2NoZW1hVXRpbHMgPSBjcmVhdGVTY2hlbWFVdGlscyhwcm9wcy52YWxpZGF0b3IsIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IHNjaGVtYVV0aWxzLmdldERlZmF1bHRGb3JtU3RhdGUoc2NoZW1hLCBpbnB1dEZvcm1EYXRhKTtcbiAgICAgICAgY29uc3QgX3JldHJpZXZlZFNjaGVtYSA9IHJldHJpZXZlZFNjaGVtYSAhPT0gbnVsbCAmJiByZXRyaWV2ZWRTY2hlbWEgIT09IHZvaWQgMCA/IHJldHJpZXZlZFNjaGVtYSA6IHNjaGVtYVV0aWxzLnJldHJpZXZlU2NoZW1hKHNjaGVtYSwgZm9ybURhdGEpO1xuICAgICAgICBjb25zdCBnZXRDdXJyZW50RXJyb3JzID0gKCkgPT4ge1xuICAgICAgICAgICAgLy8gSWYgdGhlIGBwcm9wcy5ub1ZhbGlkYXRlYCBvcHRpb24gaXMgc2V0IG9yIHRoZSBzY2hlbWEgaGFzIGNoYW5nZWQsIHdlIHJlc2V0IHRoZSBlcnJvciBzdGF0ZS5cbiAgICAgICAgICAgIGlmIChwcm9wcy5ub1ZhbGlkYXRlIHx8IGlzU2NoZW1hQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGVycm9yczogW10sIGVycm9yU2NoZW1hOiB7fSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIXByb3BzLmxpdmVWYWxpZGF0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yczogc3RhdGUuc2NoZW1hVmFsaWRhdGlvbkVycm9ycyB8fCBbXSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JTY2hlbWE6IHN0YXRlLnNjaGVtYVZhbGlkYXRpb25FcnJvclNjaGVtYSB8fCB7fSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBlcnJvcnM6IHN0YXRlLmVycm9ycyB8fCBbXSxcbiAgICAgICAgICAgICAgICBlcnJvclNjaGVtYTogc3RhdGUuZXJyb3JTY2hlbWEgfHwge30sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICBsZXQgZXJyb3JzO1xuICAgICAgICBsZXQgZXJyb3JTY2hlbWE7XG4gICAgICAgIGxldCBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzID0gc3RhdGUuc2NoZW1hVmFsaWRhdGlvbkVycm9ycztcbiAgICAgICAgbGV0IHNjaGVtYVZhbGlkYXRpb25FcnJvclNjaGVtYSA9IHN0YXRlLnNjaGVtYVZhbGlkYXRpb25FcnJvclNjaGVtYTtcbiAgICAgICAgaWYgKG11c3RWYWxpZGF0ZSkge1xuICAgICAgICAgICAgY29uc3Qgc2NoZW1hVmFsaWRhdGlvbiA9IHRoaXMudmFsaWRhdGUoZm9ybURhdGEsIHNjaGVtYSwgc2NoZW1hVXRpbHMsIF9yZXRyaWV2ZWRTY2hlbWEpO1xuICAgICAgICAgICAgZXJyb3JzID0gc2NoZW1hVmFsaWRhdGlvbi5lcnJvcnM7XG4gICAgICAgICAgICAvLyBJZiByZXRyaWV2ZWRTY2hlbWEgaXMgdW5kZWZpbmVkIHdoaWNoIG1lYW5zIHRoZSBzY2hlbWEgb3IgZm9ybURhdGEgaGFzIGNoYW5nZWQsIHdlIGRvIG5vdCBtZXJnZSBzdGF0ZS5cbiAgICAgICAgICAgIC8vIEVsc2UgaW4gdGhlIGNhc2Ugd2hlcmUgaXQgaGFzbid0IGNoYW5nZWQsIHdlIG1lcmdlICdzdGF0ZS5lcnJvclNjaGVtYScgd2l0aCAnc2NoZW1hVmFsaWRhdGlvbi5lcnJvclNjaGVtYS4nIFRoaXMgZG9uZSB0byBkaXNwbGF5IHRoZSByYWlzZWQgZmllbGQgZXJyb3IuXG4gICAgICAgICAgICBpZiAocmV0cmlldmVkU2NoZW1hID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBlcnJvclNjaGVtYSA9IHNjaGVtYVZhbGlkYXRpb24uZXJyb3JTY2hlbWE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBlcnJvclNjaGVtYSA9IG1lcmdlT2JqZWN0cygoX2EgPSB0aGlzLnN0YXRlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZXJyb3JTY2hlbWEsIHNjaGVtYVZhbGlkYXRpb24uZXJyb3JTY2hlbWEsICdwcmV2ZW50RHVwbGljYXRlcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9ycyA9IGVycm9ycztcbiAgICAgICAgICAgIHNjaGVtYVZhbGlkYXRpb25FcnJvclNjaGVtYSA9IGVycm9yU2NoZW1hO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEVycm9ycyA9IGdldEN1cnJlbnRFcnJvcnMoKTtcbiAgICAgICAgICAgIGVycm9ycyA9IGN1cnJlbnRFcnJvcnMuZXJyb3JzO1xuICAgICAgICAgICAgZXJyb3JTY2hlbWEgPSBjdXJyZW50RXJyb3JzLmVycm9yU2NoZW1hO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9wcy5leHRyYUVycm9ycykge1xuICAgICAgICAgICAgY29uc3QgbWVyZ2VkID0gdmFsaWRhdGlvbkRhdGFNZXJnZSh7IGVycm9yU2NoZW1hLCBlcnJvcnMgfSwgcHJvcHMuZXh0cmFFcnJvcnMpO1xuICAgICAgICAgICAgZXJyb3JTY2hlbWEgPSBtZXJnZWQuZXJyb3JTY2hlbWE7XG4gICAgICAgICAgICBlcnJvcnMgPSBtZXJnZWQuZXJyb3JzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlkU2NoZW1hID0gc2NoZW1hVXRpbHMudG9JZFNjaGVtYShfcmV0cmlldmVkU2NoZW1hLCB1aVNjaGVtYVsndWk6cm9vdEZpZWxkSWQnXSwgZm9ybURhdGEsIHByb3BzLmlkUHJlZml4LCBwcm9wcy5pZFNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IG5leHRTdGF0ZSA9IHtcbiAgICAgICAgICAgIHNjaGVtYVV0aWxzLFxuICAgICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgICAgdWlTY2hlbWEsXG4gICAgICAgICAgICBpZFNjaGVtYSxcbiAgICAgICAgICAgIGZvcm1EYXRhLFxuICAgICAgICAgICAgZWRpdCxcbiAgICAgICAgICAgIGVycm9ycyxcbiAgICAgICAgICAgIGVycm9yU2NoZW1hLFxuICAgICAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9ycyxcbiAgICAgICAgICAgIHNjaGVtYVZhbGlkYXRpb25FcnJvclNjaGVtYSxcbiAgICAgICAgICAgIHJldHJpZXZlZFNjaGVtYTogX3JldHJpZXZlZFNjaGVtYSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG5leHRTdGF0ZTtcbiAgICB9XG4gICAgLyoqIFJlYWN0IGxpZmVjeWNsZSBtZXRob2QgdGhhdCBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIGNvbXBvbmVudCBzaG91bGQgYmUgdXBkYXRlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZXh0UHJvcHMgLSBUaGUgbmV4dCB2ZXJzaW9uIG9mIHRoZSBwcm9wc1xuICAgICAqIEBwYXJhbSBuZXh0U3RhdGUgLSBUaGUgbmV4dCB2ZXJzaW9uIG9mIHRoZSBzdGF0ZVxuICAgICAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCBiZSB1cGRhdGVkLCBmYWxzZSBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBzaG91bGRDb21wb25lbnRVcGRhdGUobmV4dFByb3BzLCBuZXh0U3RhdGUpIHtcbiAgICAgICAgcmV0dXJuIHNob3VsZFJlbmRlcih0aGlzLCBuZXh0UHJvcHMsIG5leHRTdGF0ZSk7XG4gICAgfVxuICAgIC8qKiBWYWxpZGF0ZXMgdGhlIGBmb3JtRGF0YWAgYWdhaW5zdCB0aGUgYHNjaGVtYWAgdXNpbmcgdGhlIGBhbHRTY2hlbWFVdGlsc2AgKGlmIHByb3ZpZGVkIG90aGVyd2lzZSBpdCB1c2VzIHRoZVxuICAgICAqIGBzY2hlbWFVdGlsc2AgaW4gdGhlIHN0YXRlKSwgcmV0dXJuaW5nIHRoZSByZXN1bHRzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZvcm1EYXRhIC0gVGhlIG5ldyBmb3JtIGRhdGEgdG8gdmFsaWRhdGVcbiAgICAgKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSB1c2VkIHRvIHZhbGlkYXRlIGFnYWluc3RcbiAgICAgKiBAcGFyYW0gYWx0U2NoZW1hVXRpbHMgLSBUaGUgYWx0ZXJuYXRlIHNjaGVtYVV0aWxzIHRvIHVzZSBmb3IgdmFsaWRhdGlvblxuICAgICAqL1xuICAgIHZhbGlkYXRlKGZvcm1EYXRhLCBzY2hlbWEgPSB0aGlzLnByb3BzLnNjaGVtYSwgYWx0U2NoZW1hVXRpbHMsIHJldHJpZXZlZFNjaGVtYSkge1xuICAgICAgICBjb25zdCBzY2hlbWFVdGlscyA9IGFsdFNjaGVtYVV0aWxzID8gYWx0U2NoZW1hVXRpbHMgOiB0aGlzLnN0YXRlLnNjaGVtYVV0aWxzO1xuICAgICAgICBjb25zdCB7IGN1c3RvbVZhbGlkYXRlLCB0cmFuc2Zvcm1FcnJvcnMsIHVpU2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCByZXNvbHZlZFNjaGVtYSA9IHJldHJpZXZlZFNjaGVtYSAhPT0gbnVsbCAmJiByZXRyaWV2ZWRTY2hlbWEgIT09IHZvaWQgMCA/IHJldHJpZXZlZFNjaGVtYSA6IHNjaGVtYVV0aWxzLnJldHJpZXZlU2NoZW1hKHNjaGVtYSwgZm9ybURhdGEpO1xuICAgICAgICByZXR1cm4gc2NoZW1hVXRpbHNcbiAgICAgICAgICAgIC5nZXRWYWxpZGF0b3IoKVxuICAgICAgICAgICAgLnZhbGlkYXRlRm9ybURhdGEoZm9ybURhdGEsIHJlc29sdmVkU2NoZW1hLCBjdXN0b21WYWxpZGF0ZSwgdHJhbnNmb3JtRXJyb3JzLCB1aVNjaGVtYSk7XG4gICAgfVxuICAgIC8qKiBSZW5kZXJzIGFueSBlcnJvcnMgY29udGFpbmVkIGluIHRoZSBgc3RhdGVgIGluIHVzaW5nIHRoZSBgRXJyb3JMaXN0YCwgaWYgbm90IGRpc2FibGVkIGJ5IGBzaG93RXJyb3JMaXN0YC4gKi9cbiAgICByZW5kZXJFcnJvcnMocmVnaXN0cnkpIHtcbiAgICAgICAgY29uc3QgeyBlcnJvcnMsIGVycm9yU2NoZW1hLCBzY2hlbWEsIHVpU2NoZW1hIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBjb25zdCB7IGZvcm1Db250ZXh0IH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBvcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hKTtcbiAgICAgICAgY29uc3QgRXJyb3JMaXN0VGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnRXJyb3JMaXN0VGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgICAgIGlmIChlcnJvcnMgJiYgZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIChfanN4KEVycm9yTGlzdFRlbXBsYXRlLCB7IGVycm9yczogZXJyb3JzLCBlcnJvclNjaGVtYTogZXJyb3JTY2hlbWEgfHwge30sIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLy8gRmlsdGVyaW5nIGVycm9ycyBiYXNlZCBvbiB5b3VyIHJldHJpZXZlZCBzY2hlbWEgdG8gb25seSBzaG93IGVycm9ycyBmb3IgcHJvcGVydGllcyBpbiB0aGUgc2VsZWN0ZWQgYnJhbmNoLlxuICAgIGZpbHRlckVycm9yc0Jhc2VkT25TY2hlbWEoc2NoZW1hRXJyb3JzLCByZXNvbHZlZFNjaGVtYSwgZm9ybURhdGEpIHtcbiAgICAgICAgY29uc3QgeyByZXRyaWV2ZWRTY2hlbWEsIHNjaGVtYVV0aWxzIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBjb25zdCBfcmV0cmlldmVkU2NoZW1hID0gcmVzb2x2ZWRTY2hlbWEgIT09IG51bGwgJiYgcmVzb2x2ZWRTY2hlbWEgIT09IHZvaWQgMCA/IHJlc29sdmVkU2NoZW1hIDogcmV0cmlldmVkU2NoZW1hO1xuICAgICAgICBjb25zdCBwYXRoU2NoZW1hID0gc2NoZW1hVXRpbHMudG9QYXRoU2NoZW1hKF9yZXRyaWV2ZWRTY2hlbWEsICcnLCBmb3JtRGF0YSk7XG4gICAgICAgIGNvbnN0IGZpZWxkTmFtZXMgPSB0aGlzLmdldEZpZWxkTmFtZXMocGF0aFNjaGVtYSwgZm9ybURhdGEpO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZEVycm9ycyA9IF9waWNrKHNjaGVtYUVycm9ycywgZmllbGROYW1lcyk7XG4gICAgICAgIC8vIElmIHRoZSByb290IHNjaGVtYSBpcyBvZiBhIHByaW1pdGl2ZSB0eXBlLCBkbyBub3QgZmlsdGVyIG91dCB0aGUgX19lcnJvcnNcbiAgICAgICAgaWYgKChyZXNvbHZlZFNjaGVtYSA9PT0gbnVsbCB8fCByZXNvbHZlZFNjaGVtYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzb2x2ZWRTY2hlbWEudHlwZSkgIT09ICdvYmplY3QnICYmIChyZXNvbHZlZFNjaGVtYSA9PT0gbnVsbCB8fCByZXNvbHZlZFNjaGVtYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzb2x2ZWRTY2hlbWEudHlwZSkgIT09ICdhcnJheScpIHtcbiAgICAgICAgICAgIGZpbHRlcmVkRXJyb3JzLl9fZXJyb3JzID0gc2NoZW1hRXJyb3JzLl9fZXJyb3JzO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlbW92aW5nIHVuZGVmaW5lZCwgbnVsbCBhbmQgZW1wdHkgZXJyb3JzLlxuICAgICAgICBjb25zdCBmaWx0ZXJOaWxPckVtcHR5RXJyb3JzID0gKGVycm9ycykgPT4ge1xuICAgICAgICAgICAgX2ZvckVhY2goZXJyb3JzLCAoZXJyb3JBdEtleSwgZXJyb3JLZXkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoX2lzTmlsKGVycm9yQXRLZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBlcnJvcnNbZXJyb3JLZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgZXJyb3JBdEtleSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoZXJyb3JBdEtleS5fX2Vycm9ycykpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyTmlsT3JFbXB0eUVycm9ycyhlcnJvckF0S2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBmaWx0ZXJOaWxPckVtcHR5RXJyb3JzKGZpbHRlcmVkRXJyb3JzKTtcbiAgICB9XG4gICAgLyoqIFJldHVybnMgdGhlIHJlZ2lzdHJ5IGZvciB0aGUgZm9ybSAqL1xuICAgIGdldFJlZ2lzdHJ5KCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IHsgdHJhbnNsYXRlU3RyaW5nOiBjdXN0b21UcmFuc2xhdGVTdHJpbmcsIHVpU2NoZW1hID0ge30gfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hVXRpbHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGNvbnN0IHsgZmllbGRzLCB0ZW1wbGF0ZXMsIHdpZGdldHMsIGZvcm1Db250ZXh0LCB0cmFuc2xhdGVTdHJpbmcgfSA9IGdldERlZmF1bHRSZWdpc3RyeSgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmllbGRzOiB7IC4uLmZpZWxkcywgLi4udGhpcy5wcm9wcy5maWVsZHMgfSxcbiAgICAgICAgICAgIHRlbXBsYXRlczoge1xuICAgICAgICAgICAgICAgIC4uLnRlbXBsYXRlcyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLnByb3BzLnRlbXBsYXRlcyxcbiAgICAgICAgICAgICAgICBCdXR0b25UZW1wbGF0ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGVtcGxhdGVzLkJ1dHRvblRlbXBsYXRlcyxcbiAgICAgICAgICAgICAgICAgICAgLi4uKF9hID0gdGhpcy5wcm9wcy50ZW1wbGF0ZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5CdXR0b25UZW1wbGF0ZXMsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB3aWRnZXRzOiB7IC4uLndpZGdldHMsIC4uLnRoaXMucHJvcHMud2lkZ2V0cyB9LFxuICAgICAgICAgICAgcm9vdFNjaGVtYTogdGhpcy5wcm9wcy5zY2hlbWEsXG4gICAgICAgICAgICBmb3JtQ29udGV4dDogdGhpcy5wcm9wcy5mb3JtQ29udGV4dCB8fCBmb3JtQ29udGV4dCxcbiAgICAgICAgICAgIHNjaGVtYVV0aWxzLFxuICAgICAgICAgICAgdHJhbnNsYXRlU3RyaW5nOiBjdXN0b21UcmFuc2xhdGVTdHJpbmcgfHwgdHJhbnNsYXRlU3RyaW5nLFxuICAgICAgICAgICAgZ2xvYmFsVWlPcHRpb25zOiB1aVNjaGVtYVtVSV9HTE9CQUxfT1BUSU9OU19LRVldLFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKiogQXR0ZW1wdHMgdG8gZm9jdXMgb24gdGhlIGZpZWxkIGFzc29jaWF0ZWQgd2l0aCB0aGUgYGVycm9yYC4gVXNlcyB0aGUgYHByb3BlcnR5YCBmaWVsZCB0byBjb21wdXRlIHBhdGggb2YgdGhlIGVycm9yXG4gICAgICogZmllbGQsIHRoZW4sIHVzaW5nIHRoZSBgaWRQcmVmaXhgIGFuZCBgaWRTZXBhcmF0b3JgIGNvbnZlcnRzIHRoYXQgcGF0aCBpbnRvIGFuIGlkLiBUaGVuIHRoZSBpbnB1dCBlbGVtZW50IHdpdGggdGhhdFxuICAgICAqIGlkIGlzIGF0dGVtcHRlZCB0byBiZSBmb3VuZCB1c2luZyB0aGUgYGZvcm1FbGVtZW50YCByZWYuIElmIGl0IGlzIGxvY2F0ZWQsIHRoZW4gaXQgaXMgZm9jdXNlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlcnJvciAtIFRoZSBlcnJvciBvbiB3aGljaCB0byBmb2N1c1xuICAgICAqL1xuICAgIGZvY3VzT25FcnJvcihlcnJvcikge1xuICAgICAgICBjb25zdCB7IGlkUHJlZml4ID0gJ3Jvb3QnLCBpZFNlcGFyYXRvciA9ICdfJyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyBwcm9wZXJ0eSB9ID0gZXJyb3I7XG4gICAgICAgIGNvbnN0IHBhdGggPSBfdG9QYXRoKHByb3BlcnR5KTtcbiAgICAgICAgaWYgKHBhdGhbMF0gPT09ICcnKSB7XG4gICAgICAgICAgICAvLyBNb3N0IG9mIHRoZSB0aW1lIHRoZSBgLmZvb2AgcHJvcGVydHkgcmVzdWx0cyBpbiB0aGUgZmlyc3QgZWxlbWVudCBiZWluZyBlbXB0eSwgc28gcmVwbGFjZSBpdCB3aXRoIHRoZSBpZFByZWZpeFxuICAgICAgICAgICAgcGF0aFswXSA9IGlkUHJlZml4O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGluc2VydCB0aGUgaWRQcmVmaXggaW50byB0aGUgZmlyc3QgbG9jYXRpb24gdXNpbmcgdW5zaGlmdFxuICAgICAgICAgICAgcGF0aC51bnNoaWZ0KGlkUHJlZml4KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbGVtZW50SWQgPSBwYXRoLmpvaW4oaWRTZXBhcmF0b3IpO1xuICAgICAgICBsZXQgZmllbGQgPSB0aGlzLmZvcm1FbGVtZW50LmN1cnJlbnQuZWxlbWVudHNbZWxlbWVudElkXTtcbiAgICAgICAgaWYgKCFmaWVsZCkge1xuICAgICAgICAgICAgLy8gaWYgbm90IGFuIGV4YWN0IG1hdGNoLCB0cnkgZmluZGluZyBhbiBpbnB1dCBzdGFydGluZyB3aXRoIHRoZSBlbGVtZW50IGlkIChsaWtlIHJhZGlvIGJ1dHRvbnMgb3IgY2hlY2tib3hlcylcbiAgICAgICAgICAgIGZpZWxkID0gdGhpcy5mb3JtRWxlbWVudC5jdXJyZW50LnF1ZXJ5U2VsZWN0b3IoYGlucHV0W2lkXj1cIiR7ZWxlbWVudElkfVwiYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkICYmIGZpZWxkLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gSWYgd2UgZ290IGEgbGlzdCB3aXRoIGxlbmd0aCA+IDBcbiAgICAgICAgICAgIGZpZWxkID0gZmllbGRbMF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICBmaWVsZC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKiBQcm9ncmFtbWF0aWNhbGx5IHZhbGlkYXRlIHRoZSBmb3JtLiAgSWYgYG9taXRFeHRyYURhdGFgIGlzIHRydWUsIHRoZSBgZm9ybURhdGFgIHdpbGwgZmlyc3QgYmUgZmlsdGVyZWQgdG8gcmVtb3ZlXG4gICAgICogYW55IGV4dHJhIGRhdGEgbm90IGluIGEgZm9ybSBmaWVsZC4gSWYgYG9uRXJyb3JgIGlzIHByb3ZpZGVkLCB0aGVuIGl0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIGxpc3Qgb2YgZXJyb3JzIHRoZVxuICAgICAqIHNhbWUgd2F5IGFzIHdvdWxkIGhhcHBlbiBvbiBmb3JtIHN1Ym1pc3Npb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyAtIFRydWUgaWYgdGhlIGZvcm0gaXMgdmFsaWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICB2YWxpZGF0ZUZvcm0oKSB7XG4gICAgICAgIGNvbnN0IHsgb21pdEV4dHJhRGF0YSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgbGV0IHsgZm9ybURhdGE6IG5ld0Zvcm1EYXRhIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBpZiAob21pdEV4dHJhRGF0YSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgbmV3Rm9ybURhdGEgPSB0aGlzLm9taXRFeHRyYURhdGEobmV3Rm9ybURhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlRm9ybVdpdGhGb3JtRGF0YShuZXdGb3JtRGF0YSk7XG4gICAgfVxuICAgIC8qKiBSZW5kZXJzIHRoZSBgRm9ybWAgZmllbGRzIGluc2lkZSB0aGUgPGZvcm0+IHwgYHRhZ05hbWVgIG9yIGBfaW50ZXJuYWxGb3JtV3JhcHBlcmAsIHJlbmRlcmluZyBhbnkgZXJyb3JzIGlmXG4gICAgICogbmVlZGVkIGFsb25nIHdpdGggdGhlIHN1Ym1pdCBidXR0b24gb3IgYW55IGNoaWxkcmVuIG9mIHRoZSBmb3JtLlxuICAgICAqL1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyBjaGlsZHJlbiwgaWQsIGlkUHJlZml4LCBpZFNlcGFyYXRvciwgY2xhc3NOYW1lID0gJycsIHRhZ05hbWUsIG5hbWUsIG1ldGhvZCwgdGFyZ2V0LCBhY3Rpb24sIGF1dG9Db21wbGV0ZSwgZW5jdHlwZSwgYWNjZXB0Y2hhcnNldCwgYWNjZXB0Q2hhcnNldCwgbm9IdG1sNVZhbGlkYXRlID0gZmFsc2UsIGRpc2FibGVkLCByZWFkb25seSwgZm9ybUNvbnRleHQsIHNob3dFcnJvckxpc3QgPSAndG9wJywgX2ludGVybmFsRm9ybVdyYXBwZXIsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IHNjaGVtYSwgdWlTY2hlbWEsIGZvcm1EYXRhLCBlcnJvclNjaGVtYSwgaWRTY2hlbWEgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gdGhpcy5nZXRSZWdpc3RyeSgpO1xuICAgICAgICBjb25zdCB7IFNjaGVtYUZpZWxkOiBfU2NoZW1hRmllbGQgfSA9IHJlZ2lzdHJ5LmZpZWxkcztcbiAgICAgICAgY29uc3QgeyBTdWJtaXRCdXR0b24gfSA9IHJlZ2lzdHJ5LnRlbXBsYXRlcy5CdXR0b25UZW1wbGF0ZXM7XG4gICAgICAgIC8vIFRoZSBgc2VtYW50aWMtdWlgIGFuZCBgbWF0ZXJpYWwtdWlgIHRoZW1lcyBoYXZlIGBfaW50ZXJuYWxGb3JtV3JhcHBlcmBzIHRoYXQgdGFrZSBhbiBgYXNgIHByb3AgdGhhdCBpcyB0aGVcbiAgICAgICAgLy8gUHJvcFR5cGVzLmVsZW1lbnRUeXBlIHRvIHVzZSBmb3IgdGhlIGlubmVyIHRhZywgc28gd2UnbGwgbmVlZCB0byBwYXNzIGB0YWdOYW1lYCBhbG9uZyBpZiBpdCBpcyBwcm92aWRlZC5cbiAgICAgICAgLy8gTk9URSwgdGhlIGBhc2AgcHJvcCBpcyBuYXRpdmUgdG8gYHNlbWFudGljLXVpYCBhbmQgaXMgZW11bGF0ZWQgaW4gdGhlIGBtYXRlcmlhbC11aWAgdGhlbWVcbiAgICAgICAgY29uc3QgYXMgPSBfaW50ZXJuYWxGb3JtV3JhcHBlciA/IHRhZ05hbWUgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IEZvcm1UYWcgPSBfaW50ZXJuYWxGb3JtV3JhcHBlciB8fCB0YWdOYW1lIHx8ICdmb3JtJztcbiAgICAgICAgbGV0IHsgW1NVQk1JVF9CVE5fT1BUSU9OU19LRVldOiBzdWJtaXRPcHRpb25zID0ge30gfSA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSk7XG4gICAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICAgICAgc3VibWl0T3B0aW9ucyA9IHsgLi4uc3VibWl0T3B0aW9ucywgcHJvcHM6IHsgLi4uc3VibWl0T3B0aW9ucy5wcm9wcywgZGlzYWJsZWQ6IHRydWUgfSB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN1Ym1pdFVpU2NoZW1hID0geyBbVUlfT1BUSU9OU19LRVldOiB7IFtTVUJNSVRfQlROX09QVElPTlNfS0VZXTogc3VibWl0T3B0aW9ucyB9IH07XG4gICAgICAgIHJldHVybiAoX2pzeHMoRm9ybVRhZywgeyBjbGFzc05hbWU6IGNsYXNzTmFtZSA/IGNsYXNzTmFtZSA6ICdyanNmJywgaWQ6IGlkLCBuYW1lOiBuYW1lLCBtZXRob2Q6IG1ldGhvZCwgdGFyZ2V0OiB0YXJnZXQsIGFjdGlvbjogYWN0aW9uLCBhdXRvQ29tcGxldGU6IGF1dG9Db21wbGV0ZSwgZW5jVHlwZTogZW5jdHlwZSwgYWNjZXB0Q2hhcnNldDogYWNjZXB0Q2hhcnNldCB8fCBhY2NlcHRjaGFyc2V0LCBub1ZhbGlkYXRlOiBub0h0bWw1VmFsaWRhdGUsIG9uU3VibWl0OiB0aGlzLm9uU3VibWl0LCBhczogYXMsIHJlZjogdGhpcy5mb3JtRWxlbWVudCwgY2hpbGRyZW46IFtzaG93RXJyb3JMaXN0ID09PSAndG9wJyAmJiB0aGlzLnJlbmRlckVycm9ycyhyZWdpc3RyeSksIF9qc3goX1NjaGVtYUZpZWxkLCB7IG5hbWU6ICcnLCBzY2hlbWE6IHNjaGVtYSwgdWlTY2hlbWE6IHVpU2NoZW1hLCBlcnJvclNjaGVtYTogZXJyb3JTY2hlbWEsIGlkU2NoZW1hOiBpZFNjaGVtYSwgaWRQcmVmaXg6IGlkUHJlZml4LCBpZFNlcGFyYXRvcjogaWRTZXBhcmF0b3IsIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgZm9ybURhdGE6IGZvcm1EYXRhLCBvbkNoYW5nZTogdGhpcy5vbkNoYW5nZSwgb25CbHVyOiB0aGlzLm9uQmx1ciwgb25Gb2N1czogdGhpcy5vbkZvY3VzLCByZWdpc3RyeTogcmVnaXN0cnksIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZG9ubHk6IHJlYWRvbmx5IH0pLCBjaGlsZHJlbiA/IGNoaWxkcmVuIDogX2pzeChTdWJtaXRCdXR0b24sIHsgdWlTY2hlbWE6IHN1Ym1pdFVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnkgfSksIHNob3dFcnJvckxpc3QgPT09ICdib3R0b20nICYmIHRoaXMucmVuZGVyRXJyb3JzKHJlZ2lzdHJ5KV0gfSkpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZvcm0uanMubWFwIiwiZXhwb3J0IGNsYXNzIENvdW50cnkge1xuICAgIHV1aWQ6IFN0cmluZyA9IFwiXCJcbiAgICB0aXRsZTogU3RyaW5nID0gXCJcIlxuICAgIGNvZGU6IFN0cmluZyA9IFwiXCJcbiAgICB1c2VWYXRXaXRoVXN0SWQ6IGJvb2xlYW4gPSB0cnVlXG4gICAgdXNlVmF0V2l0aG91dFVzdElkOiBib29sZWFuID0gdHJ1ZVxuXG4gICAgcGFyc2VGcm9tSnNvbihpdGVtOiBhbnkpIHtcbiAgICAgICAgdGhpcy51dWlkID0gaXRlbS51dWlkXG4gICAgICAgIHRoaXMudGl0bGUgPSBpdGVtLnRpdGxlXG4gICAgICAgIHRoaXMuY29kZSA9IGl0ZW0uY29kZVxuICAgICAgICB0aGlzLnVzZVZhdFdpdGhVc3RJZCA9IGl0ZW0udXNlVmF0V2l0aFVzdElkXG4gICAgICAgIHRoaXMudXNlVmF0V2l0aG91dFVzdElkID0gaXRlbS51c2VWYXRXaXRob3V0VXN0SWRcbiAgICB9XG59IiwiaW1wb3J0IHthdXRvSW5qZWN0YWJsZSwgc2luZ2xldG9ufSBmcm9tIFwidHN5cmluZ2UtbmVvXCJcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcydcbmltcG9ydCB7IFNob3AgfSBmcm9tIFwiLi4vbW9kZWwvc2hvcFwiXG5pbXBvcnQgeyBDb3VudHJ5IH0gZnJvbSBcIi4uL21vZGVsL2NvdW50cnlcIlxuXG5Ac2luZ2xldG9uKClcbkBhdXRvSW5qZWN0YWJsZSgpXG5jbGFzcyBDb3VudHJ5U2VydmljZSB7XG5cbiAgYXN5bmMgZ2V0Q291bnRyeShzaG9wOiBTaG9wKTogUHJvbWlzZTxDb3VudHJ5W10+IHtcblxuICAgIHJldHVybiBhd2FpdCBheGlvcy5nZXQoJy9hcHBzL2FwaS9jb3VudHJ5L2J5L3Nob3AvJyArICBzaG9wLnV1aWQpLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgIGxldCBjb3VudHJ5ID0gbmV3IENvdW50cnkoKVxuICAgICAgICAgIGNvdW50cnkucGFyc2VGcm9tSnNvbihpdGVtKVxuICAgICAgICAgIHJldHVybiBjb3VudHJ5XG4gICAgICAgIH0pXG4gICAgXG4gICAgfSlcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDb3VudHJ5U2VydmljZVxuIiwiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBOaWNlTW9kYWwsIHsgdXNlTW9kYWwsIGJvb3RzdHJhcERpYWxvZyB9IGZyb20gXCJAZWJheS9uaWNlLW1vZGFsLXJlYWN0XCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uL2Jhc2UvQnV0dG9uJ1xuaW1wb3J0IHtSSlNGU2NoZW1hfSBmcm9tIFwiQHJqc2YvdXRpbHNcIjtcbmltcG9ydCB7Q29udGFjdH0gZnJvbSBcIi4uLy4uL21vZGVsL2NvbnRhY3RcIjtcbmltcG9ydCB2YWxpZGF0b3IgZnJvbSBcIkByanNmL3ZhbGlkYXRvci1hanY2XCI7XG5pbXBvcnQgRm9ybSBmcm9tIFwiQHJqc2YvY29yZVwiO1xuaW1wb3J0IENvdW50cnlTZXJ2aWNlIGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9jb3VudHJ5XCI7XG5pbXBvcnQgeyBNb2RhbCB9IGZyb20gXCJmbG93Yml0ZS1yZWFjdFwiO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBDb250YWN0TW9kYWwgPSBOaWNlTW9kYWwuY3JlYXRlKFxuICAgICh7IHRpdGxlLCBhY3Rpb24sIGNvbnRhY3QsIHNob3AgfSkgPT4ge1xuICAgICAgICBcbiAgICAgICAgY29uc3QgY291bnRyeV9hcGkgPSBuZXcgQ291bnRyeVNlcnZpY2UoKVxuXG4gICAgICAgIGNvbnN0IG1vZGFsID0gdXNlTW9kYWwoKTtcbiAgICAgICAgY29uc3QgW2Zvcm1EYXRhLCBzZXRGb3JtRGF0YV0gPSB1c2VTdGF0ZSh7fSk7XG5cbiAgICAgICAgY29uc3QgW3NjaGVtYSwgc2V0U2NoZW1hXSA9IHVzZVN0YXRlPFJKU0ZTY2hlbWE+KHt9KVxuICAgICAgICBcbiAgICAgICAgXG4gICAgICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBpZihjb250YWN0LnVpZCAhPSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgc2V0Rm9ybURhdGEoe1xuICAgICAgICAgICAgICAgICAgICBlbWFpbDogY29udGFjdC51c2VybmFtZSxcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RuYW1lOiBjb250YWN0LmxheW91dGVyX2RhdGEuZmlyc3RuYW1lLFxuICAgICAgICAgICAgICAgICAgICBsYXN0bmFtZTogY29udGFjdC5sYXlvdXRlcl9kYXRhLmxhc3RuYW1lLFxuICAgICAgICAgICAgICAgICAgICBjb21wYW55OiBjb250YWN0LmxheW91dGVyX2RhdGEuY29tcGFueSxcbiAgICAgICAgICAgICAgICAgICAgc3RyZWV0OiBjb250YWN0LmxheW91dGVyX2RhdGEuc3RyZWV0LFxuICAgICAgICAgICAgICAgICAgICBob3VzZU51bWJlcjogY29udGFjdC5sYXlvdXRlcl9kYXRhLmhvdXNlTnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICB6aXA6IGNvbnRhY3QubGF5b3V0ZXJfZGF0YS56aXAsXG4gICAgICAgICAgICAgICAgICAgIGNpdHk6IGNvbnRhY3QubGF5b3V0ZXJfZGF0YS5jaXR5LFxuICAgICAgICAgICAgICAgICAgICBwaG9uZTogY29udGFjdC5sYXlvdXRlcl9kYXRhLnBob25lLFxuICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiBjb250YWN0LmxheW91dGVyX2RhdGEuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgdXN0aWQ6IGNvbnRhY3QubGF5b3V0ZXJfZGF0YS51c3RpZFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIFtjb250YWN0XSk7XG5cbiAgICAgICAgY29uc3QgdWlTY2hlbWE6IFJKU0ZTY2hlbWEgPSB7XG4gICAgICAgICAgICBcInVpOnN1Ym1pdEJ1dHRvbk9wdGlvbnNcIjoge1xuICAgICAgICAgICAgICAgIFwic3VibWl0VGV4dFwiOiBcIlNhdmVcIixcbiAgICAgICAgICAgICAgICBcIm5vcmVuZGVyXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgXCJwcm9wc1wiOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiZGlzYWJsZWRcIjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIFwiY2xhc3NOYW1lXCI6IFwiYnRuIGJ0bi1pbmZvXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb3VudHJ5X2FwaS5nZXRDb3VudHJ5KHNob3ApLnRoZW4oKCBkYXRhICkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBjb3VudHJ5cyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50cnlzLnB1c2goeyd0aXRsZSc6IGl0ZW0uY29kZSwgJ2NvbnN0JzogaXRlbS5jb2RlfSlcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgdmFyIHNjaGVtYTogUkpTRlNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdDb250YWN0JyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBbJ2VtYWlsJ10sXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOiB7IHR5cGU6ICdzdHJpbmcnLCBmb3JtYXQ6ICdlbWFpbCcsIHRpdGxlOiAnRS1NYWlsJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFueTogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdDb21wYW55J30sXG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdG5hbWU6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnRmlyc3RuYW1lJ30sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0bmFtZTogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdMYXN0bmFtZSd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWV0OiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ1N0cmVldCd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaG91c2VOdW1iZXI6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnSG91c2VudW1iZXInfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHppcDogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdaaXAnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnQ2l0eSd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmU6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnUGhvbmUnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzdGlkOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ1VzdElkJ30sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ0NvdW50cnknLCBvbmVPZjogY291bnRyeXN9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgc2V0U2NoZW1hKHNjaGVtYSlcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxNb2RhbCBzaG93PXttb2RhbC52aXNpYmxlfSBvbkNsb3NlPXsoKSA9PiBtb2RhbC5yZW1vdmUoKX0+XG4gICAgICAgICAgICAgICAgPE1vZGFsLkhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAge3RpdGxlfVxuICAgICAgICAgICAgICAgIDwvTW9kYWwuSGVhZGVyPlxuICAgICAgICAgICAgICAgIDxNb2RhbC5Cb2R5PlxuICAgICAgICAgICAgICAgICAgICB7YWN0aW9uID09PSBcIlNhdmVcIiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtYT17c2NoZW1hfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhPXtmb3JtRGF0YX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aVNjaGVtYT17dWlTY2hlbWF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yPXt2YWxpZGF0b3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRGb3JtRGF0YShlLmZvcm1EYXRhKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L01vZGFsLkJvZHk+XG4gICAgICAgICAgICAgICAgPE1vZGFsLkZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT17M31cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJzdWNjZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aW9uID09PSBcIlNhdmVcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3JtRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwucmVzb2x2ZShmb3JtRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsLnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT17NH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ3YXJuaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Nb2RhbC5Gb290ZXI+XG4gICAgICAgICAgICA8L01vZGFsPlxuICAgICAgICApO1xuICAgIH1cbik7XG5cbmV4cG9ydCBkZWZhdWx0IENvbnRhY3RNb2RhbDtcbiIsImltcG9ydCB7YXV0b0luamVjdGFibGUsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiXG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gXCIuL3Rva2VuXCJcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcydcbmltcG9ydCB7IEFkZHJlc3MgfSBmcm9tIFwiLi4vbW9kZWwvYWRkcmVzc1wiXG5cbkBzaW5nbGV0b24oKVxuQGF1dG9JbmplY3RhYmxlKClcbmNsYXNzIEFkZHJlc3NTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0b2tlbj86IFRva2VuKSB7fVxuXG4gIGFzeW5jIGNyZWF0ZShhZGRyZXNzOiBBZGRyZXNzKTogUHJvbWlzZTxBZGRyZXNzPiB7XG5cbiAgICByZXR1cm4gYXdhaXQgYXhpb3MucG9zdCgnL2FwcHMvYXBpL2NvbnRhY3QvYWRkcmVzcy9jcmVhdGUnLCB7J2FkZHJlc3MnOiBhZGRyZXNzfSAse1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMudG9rZW4/LmN1cnJlbnRUb2tlblxuICAgICAgfVxuICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhXG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZShhZGRyZXNzOiBBZGRyZXNzKTogUHJvbWlzZTxBZGRyZXNzPiB7XG5cbiAgICByZXR1cm4gYXdhaXQgYXhpb3MucHV0KCcvYXBwcy9hcGkvY29udGFjdC9hZGRyZXNzL3VwZGF0ZS8nICsgYWRkcmVzcy51dWlkLCB7J2FkZHJlc3MnOiBhZGRyZXNzfSAse1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMudG9rZW4/LmN1cnJlbnRUb2tlblxuICAgICAgfVxuICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhXG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIGdldENvbnRhY3RBZGRyZXNzKGNvbnRhY3Q6IFN0cmluZywgdHlwZTogTnVtYmVyKTogUHJvbWlzZTxBZGRyZXNzW10+IHtcbiAgICByZXR1cm4gYXdhaXQgYXhpb3MuZ2V0KCcvYXBwcy9hcGkvY29udGFjdC9hZGRyZXNzL2dldGFsbGZvcnR5cGUvJyArIGNvbnRhY3QgKyAnLycgKyB0eXBlLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLnRva2VuPy5jdXJyZW50VG9rZW5cbiAgICAgIH1cbiAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgIGxldCBhZGRyZXNzID0gbmV3IEFkZHJlc3NcbiAgICAgICAgYWRkcmVzcy51aWQgPSBpdGVtLnVpZFxuICAgICAgICBhZGRyZXNzLmZpcnN0bmFtZSA9IGl0ZW0uZmlyc3RuYW1lXG4gICAgICAgIGFkZHJlc3MubGFzdG5hbWUgPSBpdGVtLmxhc3RuYW1lXG4gICAgICAgIGFkZHJlc3Muc3RyZWV0ID0gaXRlbS5zdHJlZXRcbiAgICAgICAgYWRkcmVzcy5jb3VudHJ5ID0gaXRlbS5jb3VudHJ5XG4gICAgICAgIGFkZHJlc3MudXN0aWQgPSBpdGVtLnVzdGlkXG4gICAgICAgIGFkZHJlc3MuaG91c2VOdW1iZXIgPSBpdGVtLmhvdXNlTnVtYmVyXG4gICAgICAgIGFkZHJlc3MuemlwID0gaXRlbS56aXBcbiAgICAgICAgYWRkcmVzcy5jaXR5ID0gaXRlbS5jaXR5XG4gICAgICAgIGFkZHJlc3MuY29tcGFueSA9IGl0ZW0uY29tcGFueVxuICAgICAgICBhZGRyZXNzLmNvbXBhbnkyID0gaXRlbS5jb21wYW55MlxuICAgICAgICBhZGRyZXNzLnV1aWQgPSBpdGVtLnV1aWRcbiAgICAgICAgcmV0dXJuIGFkZHJlc3NcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBBZGRyZXNzU2VydmljZVxuIiwiaW1wb3J0IHtDb250YWN0fSBmcm9tIFwiLi4vLi4vbW9kZWwvY29udGFjdFwiXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHtTaG9wfSBmcm9tIFwiLi4vLi4vbW9kZWwvc2hvcFwiXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi9iYXNlL0J1dHRvblwiXG5pbXBvcnQgQ29udGFjdE1vZGFsIGZyb20gXCIuL0NvbnRhY3RNb2RhbFwiXG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlTW9kYWwgfSBmcm9tICdAZWJheS9uaWNlLW1vZGFsLXJlYWN0J1xuaW1wb3J0IENvbnRhY3RTZXJ2aWNlIGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9jb250YWN0XCJcbmltcG9ydCB7IEFkZHJlc3MgfSBmcm9tIFwiLi4vLi4vbW9kZWwvYWRkcmVzc1wiXG5pbXBvcnQgQWRkcmVzc1NlcnZpY2UgZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2FkZHJlc3NcIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBDb250YWN0TW9kYWxDb21wb25lbnQgPSAoe3Nob3AsIGhhbmRsZUFkZCwgaGFuZGxlRWRpdCwgY29udGFjdH0pID0+IHtcblxuICAgIFxuICAgIGNvbnN0IGNvbnRhY3RNb2RhbCA9IHVzZU1vZGFsKENvbnRhY3RNb2RhbClcblxuICAgIGNvbnN0IHNob3dBZGRNb2RhbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgY29udGFjdE1vZGFsLnNob3coe3RpdGxlOiAnQWRkIENvbnRhY3QnLCBhY3Rpb246ICdTYXZlJywgc2hvcDogc2hvcCwgY29udGFjdDogbmV3IENvbnRhY3QoKX0pLnRoZW4oKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgICAgICBhZGRDb250YWN0KGZvcm1EYXRhKVxuICAgICAgICB9KVxuICAgIH0sW2NvbnRhY3RNb2RhbF0pXG5cbiAgICBjb25zdCBzaG93RWRpdE1vZGFsID0gdXNlQ2FsbGJhY2soKGNvbnRhY3QpID0+IHtcbiAgICAgICAgY29udGFjdCA9IGNvbnRhY3RcbiAgICAgICAgY29udGFjdE1vZGFsLnNob3coeyB0aXRsZTogJ0VkaXQgQ29udGFjdCcsIGFjdGlvbjogJ1NhdmUnLCBjb250YWN0OiBjb250YWN0LCBzaG9wOiBzaG9wIH0pLnRoZW4oKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgICAgICBjb250YWN0LnBhcnNlRnJvbUZvcm1EYXRhKGZvcm1EYXRhKVxuICAgICAgICAgICAgdXBkYXRlQ29udGFjdChjb250YWN0KVxuICAgICAgICB9KVxuICAgIH0sW2NvbnRhY3RNb2RhbF0pXG5cbiAgICBjb25zdCB1cGRhdGVDb250YWN0ID0gKGNvbnRhY3QpID0+IHtcbiAgICAgICAgY29uc3QgY29udGFjdF9hcGkgPSBuZXcgQ29udGFjdFNlcnZpY2UoKVxuICAgICAgICBjb250YWN0X2FwaS51cGRhdGVDb250YWN0KGNvbnRhY3QpLnRoZW4oKGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgaGFuZGxlRWRpdChjb250YWN0KVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IGFkZENvbnRhY3QgPSAoZm9ybURhdGEpID0+IHtcbiAgICAgICAgdmFyIGNvbnRhY3QgPSBuZXcgQ29udGFjdCgpXG4gICAgICAgIGNvbnRhY3QucGFyc2VGcm9tRm9ybURhdGEoZm9ybURhdGEsIHNob3ApXG4gICAgICAgIGNvbnN0IGNvbnRhY3RfYXBpID0gbmV3IENvbnRhY3RTZXJ2aWNlKClcbiAgICAgICAgY29udGFjdF9hcGkuY3JlYXRlQ29udGFjdChjb250YWN0KS50aGVuKChlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnRhY3QucGFyc2VGcm9tSnNvbihlKVxuICAgICAgICAgICAgdmFyIGFkZHJlc3MgPSBuZXcgQWRkcmVzcygpXG4gICAgICAgICAgICBhZGRyZXNzLnBhcnNlRnJvbUZvcm1EYXRhKGZvcm1EYXRhKVxuICAgICAgICAgICAgYWRkcmVzcy5jb250YWN0LnV1aWQgPSBjb250YWN0LnV1aWRcbiAgICAgICAgICAgIGFkZHJlc3MudHlwZSA9IDFcbiAgICAgICAgICAgIGNvbnN0IGFkZHJlc3NfYXBpID0gbmV3IEFkZHJlc3NTZXJ2aWNlKClcbiAgICAgICAgICAgIGFkZHJlc3NfYXBpLmNyZWF0ZShhZGRyZXNzKVxuICAgICAgICAgICAgYWRkcmVzcy50eXBlID0gMlxuICAgICAgICAgICAgYWRkcmVzc19hcGkuY3JlYXRlKGFkZHJlc3MpXG5cbiAgICAgICAgICAgIGhhbmRsZUFkZChjb250YWN0KVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleCBnYXAtMSd9PlxuICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPXsxfSB2YXJpYW50PVwic3VjY2Vzc1wiIG9uQ2xpY2s9e3Nob3dBZGRNb2RhbH0gLz5cbiAgICAgICAgICAgIDxCdXR0b24gdHlwZT17Mn0gdmFyaWFudD1cImluZm9cIiBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2hvd0VkaXRNb2RhbChjb250YWN0KVxuICAgICAgICAgICAgfX0gLz5cbiAgICAgICAgPC9kaXY+XG4gICAgKVxufVxuXG5Db250YWN0TW9kYWxDb21wb25lbnQucHJvcFR5cGVzID0ge1xuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxuICAgIGhhbmRsZUFkZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgaGFuZGxlRWRpdDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgY29udGFjdDogUHJvcFR5cGVzLmluc3RhbmNlT2YoQ29udGFjdClcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29udGFjdE1vZGFsQ29tcG9uZW50XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cblxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXG5cblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wgKi9cblxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XG4gIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XG4gIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG59XG5cbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcbiAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcbiAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0O1xuICB9XG4gIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcbiAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICB0W3BdID0gc1twXTtcbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICB9XG4gIHJldHVybiB0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xuICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xuICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xuICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2VzRGVjb3JhdGUoY3RvciwgZGVzY3JpcHRvckluLCBkZWNvcmF0b3JzLCBjb250ZXh0SW4sIGluaXRpYWxpemVycywgZXh0cmFJbml0aWFsaXplcnMpIHtcbiAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XG4gIHZhciBraW5kID0gY29udGV4dEluLmtpbmQsIGtleSA9IGtpbmQgPT09IFwiZ2V0dGVyXCIgPyBcImdldFwiIDoga2luZCA9PT0gXCJzZXR0ZXJcIiA/IFwic2V0XCIgOiBcInZhbHVlXCI7XG4gIHZhciB0YXJnZXQgPSAhZGVzY3JpcHRvckluICYmIGN0b3IgPyBjb250ZXh0SW5bXCJzdGF0aWNcIl0gPyBjdG9yIDogY3Rvci5wcm90b3R5cGUgOiBudWxsO1xuICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcbiAgdmFyIF8sIGRvbmUgPSBmYWxzZTtcbiAgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBjb250ZXh0ID0ge307XG4gICAgICBmb3IgKHZhciBwIGluIGNvbnRleHRJbikgY29udGV4dFtwXSA9IHAgPT09IFwiYWNjZXNzXCIgPyB7fSA6IGNvbnRleHRJbltwXTtcbiAgICAgIGZvciAodmFyIHAgaW4gY29udGV4dEluLmFjY2VzcykgY29udGV4dC5hY2Nlc3NbcF0gPSBjb250ZXh0SW4uYWNjZXNzW3BdO1xuICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcbiAgICAgIHZhciByZXN1bHQgPSAoMCwgZGVjb3JhdG9yc1tpXSkoa2luZCA9PT0gXCJhY2Nlc3NvclwiID8geyBnZXQ6IGRlc2NyaXB0b3IuZ2V0LCBzZXQ6IGRlc2NyaXB0b3Iuc2V0IH0gOiBkZXNjcmlwdG9yW2tleV0sIGNvbnRleHQpO1xuICAgICAgaWYgKGtpbmQgPT09IFwiYWNjZXNzb3JcIikge1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCB8fCB0eXBlb2YgcmVzdWx0ICE9PSBcIm9iamVjdFwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IGV4cGVjdGVkXCIpO1xuICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5nZXQpKSBkZXNjcmlwdG9yLmdldCA9IF87XG4gICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcbiAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuaW5pdCkpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XG4gICAgICAgICAgaWYgKGtpbmQgPT09IFwiZmllbGRcIikgaW5pdGlhbGl6ZXJzLnVuc2hpZnQoXyk7XG4gICAgICAgICAgZWxzZSBkZXNjcmlwdG9yW2tleV0gPSBfO1xuICAgICAgfVxuICB9XG4gIGlmICh0YXJnZXQpIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGNvbnRleHRJbi5uYW1lLCBkZXNjcmlwdG9yKTtcbiAgZG9uZSA9IHRydWU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xuICB2YXIgdXNlVmFsdWUgPSBhcmd1bWVudHMubGVuZ3RoID4gMjtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbml0aWFsaXplcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcbiAgfVxuICByZXR1cm4gdXNlVmFsdWUgPyB2YWx1ZSA6IHZvaWQgMDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3Byb3BLZXkoeCkge1xuICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XG4gIGlmICh0eXBlb2YgbmFtZSA9PT0gXCJzeW1ib2xcIikgbmFtZSA9IG5hbWUuZGVzY3JpcHRpb24gPyBcIltcIi5jb25jYXQobmFtZS5kZXNjcmlwdGlvbiwgXCJdXCIpIDogXCJcIjtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLCBcIm5hbWVcIiwgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiBwcmVmaXggPyBcIlwiLmNvbmNhdChwcmVmaXgsIFwiIFwiLCBuYW1lKSA6IG5hbWUgfSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xuICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xuICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgfVxufVxuXG5leHBvcnQgdmFyIF9fY3JlYXRlQmluZGluZyA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICBpZiAoIWRlc2MgfHwgKFwiZ2V0XCIgaW4gZGVzYyA/ICFtLl9fZXNNb2R1bGUgOiBkZXNjLndyaXRhYmxlIHx8IGRlc2MuY29uZmlndXJhYmxlKSkge1xuICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgb1trMl0gPSBtW2tdO1xufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xuICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XG4gIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XG4gIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFtKSByZXR1cm4gbztcbiAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gIHRyeSB7XG4gICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgfVxuICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgfVxuICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gIH1cbiAgcmV0dXJuIGFyO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgKi9cbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcbiAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXG4gICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XG4gIHJldHVybiBhcjtcbn1cblxuLyoqIEBkZXByZWNhdGVkICovXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XG4gIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xuICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXG4gICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcbiAgICAgICAgICByW2tdID0gYVtqXTtcbiAgcmV0dXJuIHI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XG4gIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XG4gICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICB9XG4gIH1cbiAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcbiAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xuICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xuICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XG4gIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxuICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XG4gIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxuICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XG4gIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cbiAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XG4gIHZhciBpLCBwO1xuICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xuICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBmYWxzZSB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XG4gIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcbiAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxuICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xuICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICByZXR1cm4gY29va2VkO1xufTtcblxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgXCJkZWZhdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHYgfSk7XG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcbiAgb1tcImRlZmF1bHRcIl0gPSB2O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcbiAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIF9fY3JlYXRlQmluZGluZyhyZXN1bHQsIG1vZCwgayk7XG4gIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XG4gIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBzdGF0ZSwga2luZCwgZikge1xuICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7XG4gIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xuICByZXR1cm4ga2luZCA9PT0gXCJtXCIgPyBmIDoga2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIpIDogZiA/IGYudmFsdWUgOiBzdGF0ZS5nZXQocmVjZWl2ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZFNldChyZWNlaXZlciwgc3RhdGUsIHZhbHVlLCBraW5kLCBmKSB7XG4gIGlmIChraW5kID09PSBcIm1cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtcbiAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xuICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xuICByZXR1cm4gKGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyLCB2YWx1ZSkgOiBmID8gZi52YWx1ZSA9IHZhbHVlIDogc3RhdGUuc2V0KHJlY2VpdmVyLCB2YWx1ZSkpLCB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRJbihzdGF0ZSwgcmVjZWl2ZXIpIHtcbiAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XG4gIHJldHVybiB0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyID09PSBzdGF0ZSA6IHN0YXRlLmhhcyhyZWNlaXZlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZShlbnYsIHZhbHVlLCBhc3luYykge1xuICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHZvaWQgMCkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWQuXCIpO1xuICAgIHZhciBkaXNwb3NlO1xuICAgIGlmIChhc3luYykge1xuICAgICAgICBpZiAoIVN5bWJvbC5hc3luY0Rpc3Bvc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNEaXNwb3NlIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5hc3luY0Rpc3Bvc2VdO1xuICAgIH1cbiAgICBpZiAoZGlzcG9zZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgIGlmICghU3ltYm9sLmRpc3Bvc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuZGlzcG9zZSBpcyBub3QgZGVmaW5lZC5cIik7XG4gICAgICAgIGRpc3Bvc2UgPSB2YWx1ZVtTeW1ib2wuZGlzcG9zZV07XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZGlzcG9zZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IG5vdCBkaXNwb3NhYmxlLlwiKTtcbiAgICBlbnYuc3RhY2sucHVzaCh7IHZhbHVlOiB2YWx1ZSwgZGlzcG9zZTogZGlzcG9zZSwgYXN5bmM6IGFzeW5jIH0pO1xuICB9XG4gIGVsc2UgaWYgKGFzeW5jKSB7XG4gICAgZW52LnN0YWNrLnB1c2goeyBhc3luYzogdHJ1ZSB9KTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbnZhciBfU3VwcHJlc3NlZEVycm9yID0gdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XG4gIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICByZXR1cm4gZS5uYW1lID0gXCJTdXBwcmVzc2VkRXJyb3JcIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fZGlzcG9zZVJlc291cmNlcyhlbnYpIHtcbiAgZnVuY3Rpb24gZmFpbChlKSB7XG4gICAgZW52LmVycm9yID0gZW52Lmhhc0Vycm9yID8gbmV3IF9TdXBwcmVzc2VkRXJyb3IoZSwgZW52LmVycm9yLCBcIkFuIGVycm9yIHdhcyBzdXBwcmVzc2VkIGR1cmluZyBkaXNwb3NhbC5cIikgOiBlO1xuICAgIGVudi5oYXNFcnJvciA9IHRydWU7XG4gIH1cbiAgZnVuY3Rpb24gbmV4dCgpIHtcbiAgICB3aGlsZSAoZW52LnN0YWNrLmxlbmd0aCkge1xuICAgICAgdmFyIHJlYyA9IGVudi5zdGFjay5wb3AoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWMuZGlzcG9zZSAmJiByZWMuZGlzcG9zZS5jYWxsKHJlYy52YWx1ZSk7XG4gICAgICAgIGlmIChyZWMuYXN5bmMpIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KS50aGVuKG5leHQsIGZ1bmN0aW9uKGUpIHsgZmFpbChlKTsgcmV0dXJuIG5leHQoKTsgfSk7XG4gICAgICB9XG4gICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgIGZhaWwoZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChlbnYuaGFzRXJyb3IpIHRocm93IGVudi5lcnJvcjtcbiAgfVxuICByZXR1cm4gbmV4dCgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIF9fZXh0ZW5kcyxcbiAgX19hc3NpZ24sXG4gIF9fcmVzdCxcbiAgX19kZWNvcmF0ZSxcbiAgX19wYXJhbSxcbiAgX19tZXRhZGF0YSxcbiAgX19hd2FpdGVyLFxuICBfX2dlbmVyYXRvcixcbiAgX19jcmVhdGVCaW5kaW5nLFxuICBfX2V4cG9ydFN0YXIsXG4gIF9fdmFsdWVzLFxuICBfX3JlYWQsXG4gIF9fc3ByZWFkLFxuICBfX3NwcmVhZEFycmF5cyxcbiAgX19zcHJlYWRBcnJheSxcbiAgX19hd2FpdCxcbiAgX19hc3luY0dlbmVyYXRvcixcbiAgX19hc3luY0RlbGVnYXRvcixcbiAgX19hc3luY1ZhbHVlcyxcbiAgX19tYWtlVGVtcGxhdGVPYmplY3QsXG4gIF9faW1wb3J0U3RhcixcbiAgX19pbXBvcnREZWZhdWx0LFxuICBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0LFxuICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0LFxuICBfX2NsYXNzUHJpdmF0ZUZpZWxkSW4sXG4gIF9fYWRkRGlzcG9zYWJsZVJlc291cmNlLFxuICBfX2Rpc3Bvc2VSZXNvdXJjZXMsXG59O1xuIiwiZXhwb3J0IHZhciBNUyA9ICctbXMtJ1xuZXhwb3J0IHZhciBNT1ogPSAnLW1vei0nXG5leHBvcnQgdmFyIFdFQktJVCA9ICctd2Via2l0LSdcblxuZXhwb3J0IHZhciBDT01NRU5UID0gJ2NvbW0nXG5leHBvcnQgdmFyIFJVTEVTRVQgPSAncnVsZSdcbmV4cG9ydCB2YXIgREVDTEFSQVRJT04gPSAnZGVjbCdcblxuZXhwb3J0IHZhciBQQUdFID0gJ0BwYWdlJ1xuZXhwb3J0IHZhciBNRURJQSA9ICdAbWVkaWEnXG5leHBvcnQgdmFyIElNUE9SVCA9ICdAaW1wb3J0J1xuZXhwb3J0IHZhciBDSEFSU0VUID0gJ0BjaGFyc2V0J1xuZXhwb3J0IHZhciBWSUVXUE9SVCA9ICdAdmlld3BvcnQnXG5leHBvcnQgdmFyIFNVUFBPUlRTID0gJ0BzdXBwb3J0cydcbmV4cG9ydCB2YXIgRE9DVU1FTlQgPSAnQGRvY3VtZW50J1xuZXhwb3J0IHZhciBOQU1FU1BBQ0UgPSAnQG5hbWVzcGFjZSdcbmV4cG9ydCB2YXIgS0VZRlJBTUVTID0gJ0BrZXlmcmFtZXMnXG5leHBvcnQgdmFyIEZPTlRfRkFDRSA9ICdAZm9udC1mYWNlJ1xuZXhwb3J0IHZhciBDT1VOVEVSX1NUWUxFID0gJ0Bjb3VudGVyLXN0eWxlJ1xuZXhwb3J0IHZhciBGT05UX0ZFQVRVUkVfVkFMVUVTID0gJ0Bmb250LWZlYXR1cmUtdmFsdWVzJ1xuZXhwb3J0IHZhciBMQVlFUiA9ICdAbGF5ZXInXG5leHBvcnQgdmFyIFNDT1BFID0gJ0BzY29wZSdcbiIsIi8qKlxuICogQHBhcmFtIHtudW1iZXJ9XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCB2YXIgYWJzID0gTWF0aC5hYnNcblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn1cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IHZhciBmcm9tID0gU3RyaW5nLmZyb21DaGFyQ29kZVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fVxuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgdmFyIGFzc2lnbiA9IE9iamVjdC5hc3NpZ25cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc2ggKHZhbHVlLCBsZW5ndGgpIHtcblx0cmV0dXJuIGNoYXJhdCh2YWx1ZSwgMCkgXiA0NSA/ICgoKCgoKChsZW5ndGggPDwgMikgXiBjaGFyYXQodmFsdWUsIDApKSA8PCAyKSBeIGNoYXJhdCh2YWx1ZSwgMSkpIDw8IDIpIF4gY2hhcmF0KHZhbHVlLCAyKSkgPDwgMikgXiBjaGFyYXQodmFsdWUsIDMpIDogMFxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbSAodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlLnRyaW0oKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtSZWdFeHB9IHBhdHRlcm5cbiAqIEByZXR1cm4ge3N0cmluZz99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaCAodmFsdWUsIHBhdHRlcm4pIHtcblx0cmV0dXJuICh2YWx1ZSA9IHBhdHRlcm4uZXhlYyh2YWx1ZSkpID8gdmFsdWVbMF0gOiB2YWx1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHsoc3RyaW5nfFJlZ0V4cCl9IHBhdHRlcm5cbiAqIEBwYXJhbSB7c3RyaW5nfSByZXBsYWNlbWVudFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZSAodmFsdWUsIHBhdHRlcm4sIHJlcGxhY2VtZW50KSB7XG5cdHJldHVybiB2YWx1ZS5yZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50KVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IHNlYXJjaFxuICogQHBhcmFtIHtudW1iZXJ9IHBvc2l0aW9uXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRleG9mICh2YWx1ZSwgc2VhcmNoLCBwb3NpdGlvbikge1xuXHRyZXR1cm4gdmFsdWUuaW5kZXhPZihzZWFyY2gsIHBvc2l0aW9uKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGFyYXQgKHZhbHVlLCBpbmRleCkge1xuXHRyZXR1cm4gdmFsdWUuY2hhckNvZGVBdChpbmRleCkgfCAwXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gYmVnaW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0ciAodmFsdWUsIGJlZ2luLCBlbmQpIHtcblx0cmV0dXJuIHZhbHVlLnNsaWNlKGJlZ2luLCBlbmQpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJsZW4gKHZhbHVlKSB7XG5cdHJldHVybiB2YWx1ZS5sZW5ndGhcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueVtdfSB2YWx1ZVxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2l6ZW9mICh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUubGVuZ3RoXG59XG5cbi8qKlxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcGFyYW0ge2FueVtdfSBhcnJheVxuICogQHJldHVybiB7YW55fVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kICh2YWx1ZSwgYXJyYXkpIHtcblx0cmV0dXJuIGFycmF5LnB1c2godmFsdWUpLCB2YWx1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nW119IGFycmF5XG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZSAoYXJyYXksIGNhbGxiYWNrKSB7XG5cdHJldHVybiBhcnJheS5tYXAoY2FsbGJhY2spLmpvaW4oJycpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gYXJyYXlcbiAqIEBwYXJhbSB7UmVnRXhwfSBwYXR0ZXJuXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlciAoYXJyYXksIHBhdHRlcm4pIHtcblx0cmV0dXJuIGFycmF5LmZpbHRlcihmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuICFtYXRjaCh2YWx1ZSwgcGF0dGVybikgfSlcbn1cbiIsImltcG9ydCB7ZnJvbSwgdHJpbSwgY2hhcmF0LCBzdHJsZW4sIHN1YnN0ciwgYXBwZW5kLCBhc3NpZ259IGZyb20gJy4vVXRpbGl0eS5qcydcblxuZXhwb3J0IHZhciBsaW5lID0gMVxuZXhwb3J0IHZhciBjb2x1bW4gPSAxXG5leHBvcnQgdmFyIGxlbmd0aCA9IDBcbmV4cG9ydCB2YXIgcG9zaXRpb24gPSAwXG5leHBvcnQgdmFyIGNoYXJhY3RlciA9IDBcbmV4cG9ydCB2YXIgY2hhcmFjdGVycyA9ICcnXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdCB8IG51bGx9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0IHwgbnVsbH0gcGFyZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHBhcmFtIHtzdHJpbmdbXSB8IHN0cmluZ30gcHJvcHNcbiAqIEBwYXJhbSB7b2JqZWN0W10gfCBzdHJpbmd9IGNoaWxkcmVuXG4gKiBAcGFyYW0ge29iamVjdFtdfSBzaWJsaW5nc1xuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZSAodmFsdWUsIHJvb3QsIHBhcmVudCwgdHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBsZW5ndGgsIHNpYmxpbmdzKSB7XG5cdHJldHVybiB7dmFsdWU6IHZhbHVlLCByb290OiByb290LCBwYXJlbnQ6IHBhcmVudCwgdHlwZTogdHlwZSwgcHJvcHM6IHByb3BzLCBjaGlsZHJlbjogY2hpbGRyZW4sIGxpbmU6IGxpbmUsIGNvbHVtbjogY29sdW1uLCBsZW5ndGg6IGxlbmd0aCwgcmV0dXJuOiAnJywgc2libGluZ3M6IHNpYmxpbmdzfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHkgKHJvb3QsIHByb3BzKSB7XG5cdHJldHVybiBhc3NpZ24obm9kZSgnJywgbnVsbCwgbnVsbCwgJycsIG51bGwsIG51bGwsIDAsIHJvb3Quc2libGluZ3MpLCByb290LCB7bGVuZ3RoOiAtcm9vdC5sZW5ndGh9LCBwcm9wcylcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlmdCAocm9vdCkge1xuXHR3aGlsZSAocm9vdC5yb290KVxuXHRcdHJvb3QgPSBjb3B5KHJvb3Qucm9vdCwge2NoaWxkcmVuOiBbcm9vdF19KVxuXG5cdGFwcGVuZChyb290LCByb290LnNpYmxpbmdzKVxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYXIgKCkge1xuXHRyZXR1cm4gY2hhcmFjdGVyXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJldiAoKSB7XG5cdGNoYXJhY3RlciA9IHBvc2l0aW9uID4gMCA/IGNoYXJhdChjaGFyYWN0ZXJzLCAtLXBvc2l0aW9uKSA6IDBcblxuXHRpZiAoY29sdW1uLS0sIGNoYXJhY3RlciA9PT0gMTApXG5cdFx0Y29sdW1uID0gMSwgbGluZS0tXG5cblx0cmV0dXJuIGNoYXJhY3RlclxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5leHQgKCkge1xuXHRjaGFyYWN0ZXIgPSBwb3NpdGlvbiA8IGxlbmd0aCA/IGNoYXJhdChjaGFyYWN0ZXJzLCBwb3NpdGlvbisrKSA6IDBcblxuXHRpZiAoY29sdW1uKyssIGNoYXJhY3RlciA9PT0gMTApXG5cdFx0Y29sdW1uID0gMSwgbGluZSsrXG5cblx0cmV0dXJuIGNoYXJhY3RlclxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBlZWsgKCkge1xuXHRyZXR1cm4gY2hhcmF0KGNoYXJhY3RlcnMsIHBvc2l0aW9uKVxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhcmV0ICgpIHtcblx0cmV0dXJuIHBvc2l0aW9uXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGJlZ2luXG4gKiBAcGFyYW0ge251bWJlcn0gZW5kXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzbGljZSAoYmVnaW4sIGVuZCkge1xuXHRyZXR1cm4gc3Vic3RyKGNoYXJhY3RlcnMsIGJlZ2luLCBlbmQpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuICh0eXBlKSB7XG5cdHN3aXRjaCAodHlwZSkge1xuXHRcdC8vIFxcMCBcXHQgXFxuIFxcciBcXHMgd2hpdGVzcGFjZSB0b2tlblxuXHRcdGNhc2UgMDogY2FzZSA5OiBjYXNlIDEwOiBjYXNlIDEzOiBjYXNlIDMyOlxuXHRcdFx0cmV0dXJuIDVcblx0XHQvLyAhICsgLCAvID4gQCB+IGlzb2xhdGUgdG9rZW5cblx0XHRjYXNlIDMzOiBjYXNlIDQzOiBjYXNlIDQ0OiBjYXNlIDQ3OiBjYXNlIDYyOiBjYXNlIDY0OiBjYXNlIDEyNjpcblx0XHQvLyA7IHsgfSBicmVha3BvaW50IHRva2VuXG5cdFx0Y2FzZSA1OTogY2FzZSAxMjM6IGNhc2UgMTI1OlxuXHRcdFx0cmV0dXJuIDRcblx0XHQvLyA6IGFjY29tcGFuaWVkIHRva2VuXG5cdFx0Y2FzZSA1ODpcblx0XHRcdHJldHVybiAzXG5cdFx0Ly8gXCIgJyAoIFsgb3BlbmluZyBkZWxpbWl0IHRva2VuXG5cdFx0Y2FzZSAzNDogY2FzZSAzOTogY2FzZSA0MDogY2FzZSA5MTpcblx0XHRcdHJldHVybiAyXG5cdFx0Ly8gKSBdIGNsb3NpbmcgZGVsaW1pdCB0b2tlblxuXHRcdGNhc2UgNDE6IGNhc2UgOTM6XG5cdFx0XHRyZXR1cm4gMVxuXHR9XG5cblx0cmV0dXJuIDBcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge2FueVtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWxsb2MgKHZhbHVlKSB7XG5cdHJldHVybiBsaW5lID0gY29sdW1uID0gMSwgbGVuZ3RoID0gc3RybGVuKGNoYXJhY3RlcnMgPSB2YWx1ZSksIHBvc2l0aW9uID0gMCwgW11cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAqIEByZXR1cm4ge2FueX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlYWxsb2MgKHZhbHVlKSB7XG5cdHJldHVybiBjaGFyYWN0ZXJzID0gJycsIHZhbHVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGltaXQgKHR5cGUpIHtcblx0cmV0dXJuIHRyaW0oc2xpY2UocG9zaXRpb24gLSAxLCBkZWxpbWl0ZXIodHlwZSA9PT0gOTEgPyB0eXBlICsgMiA6IHR5cGUgPT09IDQwID8gdHlwZSArIDEgOiB0eXBlKSkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuaXplICh2YWx1ZSkge1xuXHRyZXR1cm4gZGVhbGxvYyh0b2tlbml6ZXIoYWxsb2ModmFsdWUpKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gd2hpdGVzcGFjZSAodHlwZSkge1xuXHR3aGlsZSAoY2hhcmFjdGVyID0gcGVlaygpKVxuXHRcdGlmIChjaGFyYWN0ZXIgPCAzMylcblx0XHRcdG5leHQoKVxuXHRcdGVsc2Vcblx0XHRcdGJyZWFrXG5cblx0cmV0dXJuIHRva2VuKHR5cGUpID4gMiB8fCB0b2tlbihjaGFyYWN0ZXIpID4gMyA/ICcnIDogJyAnXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gY2hpbGRyZW5cbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW5pemVyIChjaGlsZHJlbikge1xuXHR3aGlsZSAobmV4dCgpKVxuXHRcdHN3aXRjaCAodG9rZW4oY2hhcmFjdGVyKSkge1xuXHRcdFx0Y2FzZSAwOiBhcHBlbmQoaWRlbnRpZmllcihwb3NpdGlvbiAtIDEpLCBjaGlsZHJlbilcblx0XHRcdFx0YnJlYWtcblx0XHRcdGNhc2UgMjogYXBwZW5kKGRlbGltaXQoY2hhcmFjdGVyKSwgY2hpbGRyZW4pXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRkZWZhdWx0OiBhcHBlbmQoZnJvbShjaGFyYWN0ZXIpLCBjaGlsZHJlbilcblx0XHR9XG5cblx0cmV0dXJuIGNoaWxkcmVuXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge251bWJlcn0gY291bnRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwaW5nIChpbmRleCwgY291bnQpIHtcblx0d2hpbGUgKC0tY291bnQgJiYgbmV4dCgpKVxuXHRcdC8vIG5vdCAwLTkgQS1GIGEtZlxuXHRcdGlmIChjaGFyYWN0ZXIgPCA0OCB8fCBjaGFyYWN0ZXIgPiAxMDIgfHwgKGNoYXJhY3RlciA+IDU3ICYmIGNoYXJhY3RlciA8IDY1KSB8fCAoY2hhcmFjdGVyID4gNzAgJiYgY2hhcmFjdGVyIDwgOTcpKVxuXHRcdFx0YnJlYWtcblxuXHRyZXR1cm4gc2xpY2UoaW5kZXgsIGNhcmV0KCkgKyAoY291bnQgPCA2ICYmIHBlZWsoKSA9PSAzMiAmJiBuZXh0KCkgPT0gMzIpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxpbWl0ZXIgKHR5cGUpIHtcblx0d2hpbGUgKG5leHQoKSlcblx0XHRzd2l0Y2ggKGNoYXJhY3Rlcikge1xuXHRcdFx0Ly8gXSApIFwiICdcblx0XHRcdGNhc2UgdHlwZTpcblx0XHRcdFx0cmV0dXJuIHBvc2l0aW9uXG5cdFx0XHQvLyBcIiAnXG5cdFx0XHRjYXNlIDM0OiBjYXNlIDM5OlxuXHRcdFx0XHRpZiAodHlwZSAhPT0gMzQgJiYgdHlwZSAhPT0gMzkpXG5cdFx0XHRcdFx0ZGVsaW1pdGVyKGNoYXJhY3Rlcilcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIChcblx0XHRcdGNhc2UgNDA6XG5cdFx0XHRcdGlmICh0eXBlID09PSA0MSlcblx0XHRcdFx0XHRkZWxpbWl0ZXIodHlwZSlcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIFxcXG5cdFx0XHRjYXNlIDkyOlxuXHRcdFx0XHRuZXh0KClcblx0XHRcdFx0YnJlYWtcblx0XHR9XG5cblx0cmV0dXJuIHBvc2l0aW9uXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbWVudGVyICh0eXBlLCBpbmRleCkge1xuXHR3aGlsZSAobmV4dCgpKVxuXHRcdC8vIC8vXG5cdFx0aWYgKHR5cGUgKyBjaGFyYWN0ZXIgPT09IDQ3ICsgMTApXG5cdFx0XHRicmVha1xuXHRcdC8vIC8qXG5cdFx0ZWxzZSBpZiAodHlwZSArIGNoYXJhY3RlciA9PT0gNDIgKyA0MiAmJiBwZWVrKCkgPT09IDQ3KVxuXHRcdFx0YnJlYWtcblxuXHRyZXR1cm4gJy8qJyArIHNsaWNlKGluZGV4LCBwb3NpdGlvbiAtIDEpICsgJyonICsgZnJvbSh0eXBlID09PSA0NyA/IHR5cGUgOiBuZXh0KCkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyIChpbmRleCkge1xuXHR3aGlsZSAoIXRva2VuKHBlZWsoKSkpXG5cdFx0bmV4dCgpXG5cblx0cmV0dXJuIHNsaWNlKGluZGV4LCBwb3NpdGlvbilcbn1cbiIsImltcG9ydCB7Q09NTUVOVCwgUlVMRVNFVCwgREVDTEFSQVRJT059IGZyb20gJy4vRW51bS5qcydcbmltcG9ydCB7YWJzLCBjaGFyYXQsIHRyaW0sIGZyb20sIHNpemVvZiwgc3RybGVuLCBzdWJzdHIsIGFwcGVuZCwgcmVwbGFjZSwgaW5kZXhvZn0gZnJvbSAnLi9VdGlsaXR5LmpzJ1xuaW1wb3J0IHtub2RlLCBjaGFyLCBwcmV2LCBuZXh0LCBwZWVrLCBjYXJldCwgYWxsb2MsIGRlYWxsb2MsIGRlbGltaXQsIHdoaXRlc3BhY2UsIGVzY2FwaW5nLCBpZGVudGlmaWVyLCBjb21tZW50ZXJ9IGZyb20gJy4vVG9rZW5pemVyLmpzJ1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7b2JqZWN0W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlICh2YWx1ZSkge1xuXHRyZXR1cm4gZGVhbGxvYyhwYXJzZSgnJywgbnVsbCwgbnVsbCwgbnVsbCwgWycnXSwgdmFsdWUgPSBhbGxvYyh2YWx1ZSksIDAsIFswXSwgdmFsdWUpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlc1xuICogQHBhcmFtIHtzdHJpbmdbXX0gcnVsZXNldHNcbiAqIEBwYXJhbSB7bnVtYmVyW119IHBzZXVkb1xuICogQHBhcmFtIHtudW1iZXJbXX0gcG9pbnRzXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBkZWNsYXJhdGlvbnNcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlICh2YWx1ZSwgcm9vdCwgcGFyZW50LCBydWxlLCBydWxlcywgcnVsZXNldHMsIHBzZXVkbywgcG9pbnRzLCBkZWNsYXJhdGlvbnMpIHtcblx0dmFyIGluZGV4ID0gMFxuXHR2YXIgb2Zmc2V0ID0gMFxuXHR2YXIgbGVuZ3RoID0gcHNldWRvXG5cdHZhciBhdHJ1bGUgPSAwXG5cdHZhciBwcm9wZXJ0eSA9IDBcblx0dmFyIHByZXZpb3VzID0gMFxuXHR2YXIgdmFyaWFibGUgPSAxXG5cdHZhciBzY2FubmluZyA9IDFcblx0dmFyIGFtcGVyc2FuZCA9IDFcblx0dmFyIGNoYXJhY3RlciA9IDBcblx0dmFyIHR5cGUgPSAnJ1xuXHR2YXIgcHJvcHMgPSBydWxlc1xuXHR2YXIgY2hpbGRyZW4gPSBydWxlc2V0c1xuXHR2YXIgcmVmZXJlbmNlID0gcnVsZVxuXHR2YXIgY2hhcmFjdGVycyA9IHR5cGVcblxuXHR3aGlsZSAoc2Nhbm5pbmcpXG5cdFx0c3dpdGNoIChwcmV2aW91cyA9IGNoYXJhY3RlciwgY2hhcmFjdGVyID0gbmV4dCgpKSB7XG5cdFx0XHQvLyAoXG5cdFx0XHRjYXNlIDQwOlxuXHRcdFx0XHRpZiAocHJldmlvdXMgIT0gMTA4ICYmIGNoYXJhdChjaGFyYWN0ZXJzLCBsZW5ndGggLSAxKSA9PSA1OCkge1xuXHRcdFx0XHRcdGlmIChpbmRleG9mKGNoYXJhY3RlcnMgKz0gcmVwbGFjZShkZWxpbWl0KGNoYXJhY3RlciksICcmJywgJyZcXGYnKSwgJyZcXGYnLCBhYnMoaW5kZXggPyBwb2ludHNbaW5kZXggLSAxXSA6IDApKSAhPSAtMSlcblx0XHRcdFx0XHRcdGFtcGVyc2FuZCA9IC0xXG5cdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0fVxuXHRcdFx0Ly8gXCIgJyBbXG5cdFx0XHRjYXNlIDM0OiBjYXNlIDM5OiBjYXNlIDkxOlxuXHRcdFx0XHRjaGFyYWN0ZXJzICs9IGRlbGltaXQoY2hhcmFjdGVyKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gXFx0IFxcbiBcXHIgXFxzXG5cdFx0XHRjYXNlIDk6IGNhc2UgMTA6IGNhc2UgMTM6IGNhc2UgMzI6XG5cdFx0XHRcdGNoYXJhY3RlcnMgKz0gd2hpdGVzcGFjZShwcmV2aW91cylcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIFxcXG5cdFx0XHRjYXNlIDkyOlxuXHRcdFx0XHRjaGFyYWN0ZXJzICs9IGVzY2FwaW5nKGNhcmV0KCkgLSAxLCA3KVxuXHRcdFx0XHRjb250aW51ZVxuXHRcdFx0Ly8gL1xuXHRcdFx0Y2FzZSA0Nzpcblx0XHRcdFx0c3dpdGNoIChwZWVrKCkpIHtcblx0XHRcdFx0XHRjYXNlIDQyOiBjYXNlIDQ3OlxuXHRcdFx0XHRcdFx0YXBwZW5kKGNvbW1lbnQoY29tbWVudGVyKG5leHQoKSwgY2FyZXQoKSksIHJvb3QsIHBhcmVudCwgZGVjbGFyYXRpb25zKSwgZGVjbGFyYXRpb25zKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0Y2hhcmFjdGVycyArPSAnLydcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8ge1xuXHRcdFx0Y2FzZSAxMjMgKiB2YXJpYWJsZTpcblx0XHRcdFx0cG9pbnRzW2luZGV4KytdID0gc3RybGVuKGNoYXJhY3RlcnMpICogYW1wZXJzYW5kXG5cdFx0XHQvLyB9IDsgXFwwXG5cdFx0XHRjYXNlIDEyNSAqIHZhcmlhYmxlOiBjYXNlIDU5OiBjYXNlIDA6XG5cdFx0XHRcdHN3aXRjaCAoY2hhcmFjdGVyKSB7XG5cdFx0XHRcdFx0Ly8gXFwwIH1cblx0XHRcdFx0XHRjYXNlIDA6IGNhc2UgMTI1OiBzY2FubmluZyA9IDBcblx0XHRcdFx0XHQvLyA7XG5cdFx0XHRcdFx0Y2FzZSA1OSArIG9mZnNldDogaWYgKGFtcGVyc2FuZCA9PSAtMSkgY2hhcmFjdGVycyA9IHJlcGxhY2UoY2hhcmFjdGVycywgL1xcZi9nLCAnJylcblx0XHRcdFx0XHRcdGlmIChwcm9wZXJ0eSA+IDAgJiYgKHN0cmxlbihjaGFyYWN0ZXJzKSAtIGxlbmd0aCkpXG5cdFx0XHRcdFx0XHRcdGFwcGVuZChwcm9wZXJ0eSA+IDMyID8gZGVjbGFyYXRpb24oY2hhcmFjdGVycyArICc7JywgcnVsZSwgcGFyZW50LCBsZW5ndGggLSAxLCBkZWNsYXJhdGlvbnMpIDogZGVjbGFyYXRpb24ocmVwbGFjZShjaGFyYWN0ZXJzLCAnICcsICcnKSArICc7JywgcnVsZSwgcGFyZW50LCBsZW5ndGggLSAyLCBkZWNsYXJhdGlvbnMpLCBkZWNsYXJhdGlvbnMpXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vIEAgO1xuXHRcdFx0XHRcdGNhc2UgNTk6IGNoYXJhY3RlcnMgKz0gJzsnXG5cdFx0XHRcdFx0Ly8geyBydWxlL2F0LXJ1bGVcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0YXBwZW5kKHJlZmVyZW5jZSA9IHJ1bGVzZXQoY2hhcmFjdGVycywgcm9vdCwgcGFyZW50LCBpbmRleCwgb2Zmc2V0LCBydWxlcywgcG9pbnRzLCB0eXBlLCBwcm9wcyA9IFtdLCBjaGlsZHJlbiA9IFtdLCBsZW5ndGgsIHJ1bGVzZXRzKSwgcnVsZXNldHMpXG5cblx0XHRcdFx0XHRcdGlmIChjaGFyYWN0ZXIgPT09IDEyMylcblx0XHRcdFx0XHRcdFx0aWYgKG9mZnNldCA9PT0gMClcblx0XHRcdFx0XHRcdFx0XHRwYXJzZShjaGFyYWN0ZXJzLCByb290LCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgcHJvcHMsIHJ1bGVzZXRzLCBsZW5ndGgsIHBvaW50cywgY2hpbGRyZW4pXG5cdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKGF0cnVsZSA9PT0gOTkgJiYgY2hhcmF0KGNoYXJhY3RlcnMsIDMpID09PSAxMTAgPyAxMDAgOiBhdHJ1bGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGQgbCBtIHNcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTAwOiBjYXNlIDEwODogY2FzZSAxMDk6IGNhc2UgMTE1OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJzZSh2YWx1ZSwgcmVmZXJlbmNlLCByZWZlcmVuY2UsIHJ1bGUgJiYgYXBwZW5kKHJ1bGVzZXQodmFsdWUsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCAwLCAwLCBydWxlcywgcG9pbnRzLCB0eXBlLCBydWxlcywgcHJvcHMgPSBbXSwgbGVuZ3RoLCBjaGlsZHJlbiksIGNoaWxkcmVuKSwgcnVsZXMsIGNoaWxkcmVuLCBsZW5ndGgsIHBvaW50cywgcnVsZSA/IHByb3BzIDogY2hpbGRyZW4pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJzZShjaGFyYWN0ZXJzLCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCBbJyddLCBjaGlsZHJlbiwgMCwgcG9pbnRzLCBjaGlsZHJlbilcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpbmRleCA9IG9mZnNldCA9IHByb3BlcnR5ID0gMCwgdmFyaWFibGUgPSBhbXBlcnNhbmQgPSAxLCB0eXBlID0gY2hhcmFjdGVycyA9ICcnLCBsZW5ndGggPSBwc2V1ZG9cblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIDpcblx0XHRcdGNhc2UgNTg6XG5cdFx0XHRcdGxlbmd0aCA9IDEgKyBzdHJsZW4oY2hhcmFjdGVycyksIHByb3BlcnR5ID0gcHJldmlvdXNcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmICh2YXJpYWJsZSA8IDEpXG5cdFx0XHRcdFx0aWYgKGNoYXJhY3RlciA9PSAxMjMpXG5cdFx0XHRcdFx0XHQtLXZhcmlhYmxlXG5cdFx0XHRcdFx0ZWxzZSBpZiAoY2hhcmFjdGVyID09IDEyNSAmJiB2YXJpYWJsZSsrID09IDAgJiYgcHJldigpID09IDEyNSlcblx0XHRcdFx0XHRcdGNvbnRpbnVlXG5cblx0XHRcdFx0c3dpdGNoIChjaGFyYWN0ZXJzICs9IGZyb20oY2hhcmFjdGVyKSwgY2hhcmFjdGVyICogdmFyaWFibGUpIHtcblx0XHRcdFx0XHQvLyAmXG5cdFx0XHRcdFx0Y2FzZSAzODpcblx0XHRcdFx0XHRcdGFtcGVyc2FuZCA9IG9mZnNldCA+IDAgPyAxIDogKGNoYXJhY3RlcnMgKz0gJ1xcZicsIC0xKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyAsXG5cdFx0XHRcdFx0Y2FzZSA0NDpcblx0XHRcdFx0XHRcdHBvaW50c1tpbmRleCsrXSA9IChzdHJsZW4oY2hhcmFjdGVycykgLSAxKSAqIGFtcGVyc2FuZCwgYW1wZXJzYW5kID0gMVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyBAXG5cdFx0XHRcdFx0Y2FzZSA2NDpcblx0XHRcdFx0XHRcdC8vIC1cblx0XHRcdFx0XHRcdGlmIChwZWVrKCkgPT09IDQ1KVxuXHRcdFx0XHRcdFx0XHRjaGFyYWN0ZXJzICs9IGRlbGltaXQobmV4dCgpKVxuXG5cdFx0XHRcdFx0XHRhdHJ1bGUgPSBwZWVrKCksIG9mZnNldCA9IGxlbmd0aCA9IHN0cmxlbih0eXBlID0gY2hhcmFjdGVycyArPSBpZGVudGlmaWVyKGNhcmV0KCkpKSwgY2hhcmFjdGVyKytcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Ly8gLVxuXHRcdFx0XHRcdGNhc2UgNDU6XG5cdFx0XHRcdFx0XHRpZiAocHJldmlvdXMgPT09IDQ1ICYmIHN0cmxlbihjaGFyYWN0ZXJzKSA9PSAyKVxuXHRcdFx0XHRcdFx0XHR2YXJpYWJsZSA9IDBcblx0XHRcdFx0fVxuXHRcdH1cblxuXHRyZXR1cm4gcnVsZXNldHNcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0XG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlc1xuICogQHBhcmFtIHtudW1iZXJbXX0gcG9pbnRzXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHBhcmFtIHtzdHJpbmdbXX0gcHJvcHNcbiAqIEBwYXJhbSB7c3RyaW5nW119IGNoaWxkcmVuXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcGFyYW0ge29iamVjdFtdfSBzaWJsaW5nc1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNldCAodmFsdWUsIHJvb3QsIHBhcmVudCwgaW5kZXgsIG9mZnNldCwgcnVsZXMsIHBvaW50cywgdHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBsZW5ndGgsIHNpYmxpbmdzKSB7XG5cdHZhciBwb3N0ID0gb2Zmc2V0IC0gMVxuXHR2YXIgcnVsZSA9IG9mZnNldCA9PT0gMCA/IHJ1bGVzIDogWycnXVxuXHR2YXIgc2l6ZSA9IHNpemVvZihydWxlKVxuXG5cdGZvciAodmFyIGkgPSAwLCBqID0gMCwgayA9IDA7IGkgPCBpbmRleDsgKytpKVxuXHRcdGZvciAodmFyIHggPSAwLCB5ID0gc3Vic3RyKHZhbHVlLCBwb3N0ICsgMSwgcG9zdCA9IGFicyhqID0gcG9pbnRzW2ldKSksIHogPSB2YWx1ZTsgeCA8IHNpemU7ICsreClcblx0XHRcdGlmICh6ID0gdHJpbShqID4gMCA/IHJ1bGVbeF0gKyAnICcgKyB5IDogcmVwbGFjZSh5LCAvJlxcZi9nLCBydWxlW3hdKSkpXG5cdFx0XHRcdHByb3BzW2srK10gPSB6XG5cblx0cmV0dXJuIG5vZGUodmFsdWUsIHJvb3QsIHBhcmVudCwgb2Zmc2V0ID09PSAwID8gUlVMRVNFVCA6IHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgbGVuZ3RoLCBzaWJsaW5ncylcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHBhcmFtIHtvYmplY3RbXX0gc2libGluZ3NcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbW1lbnQgKHZhbHVlLCByb290LCBwYXJlbnQsIHNpYmxpbmdzKSB7XG5cdHJldHVybiBub2RlKHZhbHVlLCByb290LCBwYXJlbnQsIENPTU1FTlQsIGZyb20oY2hhcigpKSwgc3Vic3RyKHZhbHVlLCAyLCAtMiksIDAsIHNpYmxpbmdzKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcGFyYW0ge29iamVjdFtdfSBzaWJsaW5nc1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyYXRpb24gKHZhbHVlLCByb290LCBwYXJlbnQsIGxlbmd0aCwgc2libGluZ3MpIHtcblx0cmV0dXJuIG5vZGUodmFsdWUsIHJvb3QsIHBhcmVudCwgREVDTEFSQVRJT04sIHN1YnN0cih2YWx1ZSwgMCwgbGVuZ3RoKSwgc3Vic3RyKHZhbHVlLCBsZW5ndGggKyAxLCAtMSksIGxlbmd0aCwgc2libGluZ3MpXG59XG4iLCJpbXBvcnQge01TLCBNT1osIFdFQktJVH0gZnJvbSAnLi9FbnVtLmpzJ1xuaW1wb3J0IHtoYXNoLCBjaGFyYXQsIHN0cmxlbiwgaW5kZXhvZiwgcmVwbGFjZSwgc3Vic3RyLCBtYXRjaH0gZnJvbSAnLi9VdGlsaXR5LmpzJ1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWZpeCAodmFsdWUsIGxlbmd0aCwgY2hpbGRyZW4pIHtcblx0c3dpdGNoIChoYXNoKHZhbHVlLCBsZW5ndGgpKSB7XG5cdFx0Ly8gY29sb3ItYWRqdXN0XG5cdFx0Y2FzZSA1MTAzOlxuXHRcdFx0cmV0dXJuIFdFQktJVCArICdwcmludC0nICsgdmFsdWUgKyB2YWx1ZVxuXHRcdC8vIGFuaW1hdGlvbiwgYW5pbWF0aW9uLShkZWxheXxkaXJlY3Rpb258ZHVyYXRpb258ZmlsbC1tb2RlfGl0ZXJhdGlvbi1jb3VudHxuYW1lfHBsYXktc3RhdGV8dGltaW5nLWZ1bmN0aW9uKVxuXHRcdGNhc2UgNTczNzogY2FzZSA0MjAxOiBjYXNlIDMxNzc6IGNhc2UgMzQzMzogY2FzZSAxNjQxOiBjYXNlIDQ0NTc6IGNhc2UgMjkyMTpcblx0XHQvLyB0ZXh0LWRlY29yYXRpb24sIGZpbHRlciwgY2xpcC1wYXRoLCBiYWNrZmFjZS12aXNpYmlsaXR5LCBjb2x1bW4sIGJveC1kZWNvcmF0aW9uLWJyZWFrXG5cdFx0Y2FzZSA1NTcyOiBjYXNlIDYzNTY6IGNhc2UgNTg0NDogY2FzZSAzMTkxOiBjYXNlIDY2NDU6IGNhc2UgMzAwNTpcblx0XHQvLyBtYXNrLCBtYXNrLWltYWdlLCBtYXNrLShtb2RlfGNsaXB8c2l6ZSksIG1hc2stKHJlcGVhdHxvcmlnaW4pLCBtYXNrLXBvc2l0aW9uLCBtYXNrLWNvbXBvc2l0ZSxcblx0XHRjYXNlIDYzOTE6IGNhc2UgNTg3OTogY2FzZSA1NjIzOiBjYXNlIDYxMzU6IGNhc2UgNDU5OTogY2FzZSA0ODU1OlxuXHRcdC8vIGJhY2tncm91bmQtY2xpcCwgY29sdW1ucywgY29sdW1uLShjb3VudHxmaWxsfGdhcHxydWxlfHJ1bGUtY29sb3J8cnVsZS1zdHlsZXxydWxlLXdpZHRofHNwYW58d2lkdGgpXG5cdFx0Y2FzZSA0MjE1OiBjYXNlIDYzODk6IGNhc2UgNTEwOTogY2FzZSA1MzY1OiBjYXNlIDU2MjE6IGNhc2UgMzgyOTpcblx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIHZhbHVlXG5cdFx0Ly8gdGFiLXNpemVcblx0XHRjYXNlIDQ3ODk6XG5cdFx0XHRyZXR1cm4gTU9aICsgdmFsdWUgKyB2YWx1ZVxuXHRcdC8vIGFwcGVhcmFuY2UsIHVzZXItc2VsZWN0LCB0cmFuc2Zvcm0sIGh5cGhlbnMsIHRleHQtc2l6ZS1hZGp1c3Rcblx0XHRjYXNlIDUzNDk6IGNhc2UgNDI0NjogY2FzZSA0ODEwOiBjYXNlIDY5Njg6IGNhc2UgMjc1Njpcblx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1PWiArIHZhbHVlICsgTVMgKyB2YWx1ZSArIHZhbHVlXG5cdFx0Ly8gd3JpdGluZy1tb2RlXG5cdFx0Y2FzZSA1OTM2OlxuXHRcdFx0c3dpdGNoIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDExKSkge1xuXHRcdFx0XHQvLyB2ZXJ0aWNhbC1sKHIpXG5cdFx0XHRcdGNhc2UgMTE0OlxuXHRcdFx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgL1tzdmhdXFx3Ky1bdGJscl17Mn0vLCAndGInKSArIHZhbHVlXG5cdFx0XHRcdC8vIHZlcnRpY2FsLXIobClcblx0XHRcdFx0Y2FzZSAxMDg6XG5cdFx0XHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAvW3N2aF1cXHcrLVt0YmxyXXsyfS8sICd0Yi1ybCcpICsgdmFsdWVcblx0XHRcdFx0Ly8gaG9yaXpvbnRhbCgtKXRiXG5cdFx0XHRcdGNhc2UgNDU6XG5cdFx0XHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAvW3N2aF1cXHcrLVt0YmxyXXsyfS8sICdscicpICsgdmFsdWVcblx0XHRcdFx0Ly8gZGVmYXVsdDogZmFsbHRocm91Z2ggdG8gYmVsb3dcblx0XHRcdH1cblx0XHQvLyBmbGV4LCBmbGV4LWRpcmVjdGlvbiwgc2Nyb2xsLXNuYXAtdHlwZSwgd3JpdGluZy1tb2RlXG5cdFx0Y2FzZSA2ODI4OiBjYXNlIDQyNjg6IGNhc2UgMjkwMzpcblx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgdmFsdWUgKyB2YWx1ZVxuXHRcdC8vIG9yZGVyXG5cdFx0Y2FzZSA2MTY1OlxuXHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyAnZmxleC0nICsgdmFsdWUgKyB2YWx1ZVxuXHRcdC8vIGFsaWduLWl0ZW1zXG5cdFx0Y2FzZSA1MTg3OlxuXHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgcmVwbGFjZSh2YWx1ZSwgLyhcXHcrKS4rKDpbXl0rKS8sIFdFQktJVCArICdib3gtJDEkMicgKyBNUyArICdmbGV4LSQxJDInKSArIHZhbHVlXG5cdFx0Ly8gYWxpZ24tc2VsZlxuXHRcdGNhc2UgNTQ0Mzpcblx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgJ2ZsZXgtaXRlbS0nICsgcmVwbGFjZSh2YWx1ZSwgL2ZsZXgtfC1zZWxmL2csICcnKSArICghbWF0Y2godmFsdWUsIC9mbGV4LXxiYXNlbGluZS8pID8gTVMgKyAnZ3JpZC1yb3ctJyArIHJlcGxhY2UodmFsdWUsIC9mbGV4LXwtc2VsZi9nLCAnJykgOiAnJykgKyB2YWx1ZVxuXHRcdC8vIGFsaWduLWNvbnRlbnRcblx0XHRjYXNlIDQ2NzU6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArICdmbGV4LWxpbmUtcGFjaycgKyByZXBsYWNlKHZhbHVlLCAvYWxpZ24tY29udGVudHxmbGV4LXwtc2VsZi9nLCAnJykgKyB2YWx1ZVxuXHRcdC8vIGZsZXgtc2hyaW5rXG5cdFx0Y2FzZSA1NTQ4OlxuXHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAnc2hyaW5rJywgJ25lZ2F0aXZlJykgKyB2YWx1ZVxuXHRcdC8vIGZsZXgtYmFzaXNcblx0XHRjYXNlIDUyOTI6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsICdiYXNpcycsICdwcmVmZXJyZWQtc2l6ZScpICsgdmFsdWVcblx0XHQvLyBmbGV4LWdyb3dcblx0XHRjYXNlIDYwNjA6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgJ2JveC0nICsgcmVwbGFjZSh2YWx1ZSwgJy1ncm93JywgJycpICsgV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsICdncm93JywgJ3Bvc2l0aXZlJykgKyB2YWx1ZVxuXHRcdC8vIHRyYW5zaXRpb25cblx0XHRjYXNlIDQ1NTQ6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgcmVwbGFjZSh2YWx1ZSwgLyhbXi1dKSh0cmFuc2Zvcm0pL2csICckMScgKyBXRUJLSVQgKyAnJDInKSArIHZhbHVlXG5cdFx0Ly8gY3Vyc29yXG5cdFx0Y2FzZSA2MTg3OlxuXHRcdFx0cmV0dXJuIHJlcGxhY2UocmVwbGFjZShyZXBsYWNlKHZhbHVlLCAvKHpvb20tfGdyYWIpLywgV0VCS0lUICsgJyQxJyksIC8oaW1hZ2Utc2V0KS8sIFdFQktJVCArICckMScpLCB2YWx1ZSwgJycpICsgdmFsdWVcblx0XHQvLyBiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kLWltYWdlXG5cdFx0Y2FzZSA1NDk1OiBjYXNlIDM5NTk6XG5cdFx0XHRyZXR1cm4gcmVwbGFjZSh2YWx1ZSwgLyhpbWFnZS1zZXRcXChbXl0qKS8sIFdFQktJVCArICckMScgKyAnJGAkMScpXG5cdFx0Ly8ganVzdGlmeS1jb250ZW50XG5cdFx0Y2FzZSA0OTY4OlxuXHRcdFx0cmV0dXJuIHJlcGxhY2UocmVwbGFjZSh2YWx1ZSwgLyguKzopKGZsZXgtKT8oLiopLywgV0VCS0lUICsgJ2JveC1wYWNrOiQzJyArIE1TICsgJ2ZsZXgtcGFjazokMycpLCAvcy4rLWJbXjtdKy8sICdqdXN0aWZ5JykgKyBXRUJLSVQgKyB2YWx1ZSArIHZhbHVlXG5cdFx0Ly8ganVzdGlmeS1zZWxmXG5cdFx0Y2FzZSA0MjAwOlxuXHRcdFx0aWYgKCFtYXRjaCh2YWx1ZSwgL2ZsZXgtfGJhc2VsaW5lLykpIHJldHVybiBNUyArICdncmlkLWNvbHVtbi1hbGlnbicgKyBzdWJzdHIodmFsdWUsIGxlbmd0aCkgKyB2YWx1ZVxuXHRcdFx0YnJlYWtcblx0XHQvLyBncmlkLXRlbXBsYXRlLShjb2x1bW5zfHJvd3MpXG5cdFx0Y2FzZSAyNTkyOiBjYXNlIDMzNjA6XG5cdFx0XHRyZXR1cm4gTVMgKyByZXBsYWNlKHZhbHVlLCAndGVtcGxhdGUtJywgJycpICsgdmFsdWVcblx0XHQvLyBncmlkLShyb3d8Y29sdW1uKS1zdGFydFxuXHRcdGNhc2UgNDM4NDogY2FzZSAzNjE2OlxuXHRcdFx0aWYgKGNoaWxkcmVuICYmIGNoaWxkcmVuLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQsIGluZGV4KSB7IHJldHVybiBsZW5ndGggPSBpbmRleCwgbWF0Y2goZWxlbWVudC5wcm9wcywgL2dyaWQtXFx3Ky1lbmQvKSB9KSkge1xuXHRcdFx0XHRyZXR1cm4gfmluZGV4b2YodmFsdWUgKyAoY2hpbGRyZW4gPSBjaGlsZHJlbltsZW5ndGhdLnZhbHVlKSwgJ3NwYW4nLCAwKSA/IHZhbHVlIDogKE1TICsgcmVwbGFjZSh2YWx1ZSwgJy1zdGFydCcsICcnKSArIHZhbHVlICsgTVMgKyAnZ3JpZC1yb3ctc3BhbjonICsgKH5pbmRleG9mKGNoaWxkcmVuLCAnc3BhbicsIDApID8gbWF0Y2goY2hpbGRyZW4sIC9cXGQrLykgOiArbWF0Y2goY2hpbGRyZW4sIC9cXGQrLykgLSArbWF0Y2godmFsdWUsIC9cXGQrLykpICsgJzsnKVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIE1TICsgcmVwbGFjZSh2YWx1ZSwgJy1zdGFydCcsICcnKSArIHZhbHVlXG5cdFx0Ly8gZ3JpZC0ocm93fGNvbHVtbiktZW5kXG5cdFx0Y2FzZSA0ODk2OiBjYXNlIDQxMjg6XG5cdFx0XHRyZXR1cm4gKGNoaWxkcmVuICYmIGNoaWxkcmVuLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIG1hdGNoKGVsZW1lbnQucHJvcHMsIC9ncmlkLVxcdystc3RhcnQvKSB9KSkgPyB2YWx1ZSA6IE1TICsgcmVwbGFjZShyZXBsYWNlKHZhbHVlLCAnLWVuZCcsICctc3BhbicpLCAnc3BhbiAnLCAnJykgKyB2YWx1ZVxuXHRcdC8vIChtYXJnaW58cGFkZGluZyktaW5saW5lLShzdGFydHxlbmQpXG5cdFx0Y2FzZSA0MDk1OiBjYXNlIDM1ODM6IGNhc2UgNDA2ODogY2FzZSAyNTMyOlxuXHRcdFx0cmV0dXJuIHJlcGxhY2UodmFsdWUsIC8oLispLWlubGluZSguKykvLCBXRUJLSVQgKyAnJDEkMicpICsgdmFsdWVcblx0XHQvLyAobWlufG1heCk/KHdpZHRofGhlaWdodHxpbmxpbmUtc2l6ZXxibG9jay1zaXplKVxuXHRcdGNhc2UgODExNjogY2FzZSA3MDU5OiBjYXNlIDU3NTM6IGNhc2UgNTUzNTpcblx0XHRjYXNlIDU0NDU6IGNhc2UgNTcwMTogY2FzZSA0OTMzOiBjYXNlIDQ2Nzc6XG5cdFx0Y2FzZSA1NTMzOiBjYXNlIDU3ODk6IGNhc2UgNTAyMTogY2FzZSA0NzY1OlxuXHRcdFx0Ly8gc3RyZXRjaCwgbWF4LWNvbnRlbnQsIG1pbi1jb250ZW50LCBmaWxsLWF2YWlsYWJsZVxuXHRcdFx0aWYgKHN0cmxlbih2YWx1ZSkgLSAxIC0gbGVuZ3RoID4gNilcblx0XHRcdFx0c3dpdGNoIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDEpKSB7XG5cdFx0XHRcdFx0Ly8gKG0pYXgtY29udGVudCwgKG0paW4tY29udGVudFxuXHRcdFx0XHRcdGNhc2UgMTA5OlxuXHRcdFx0XHRcdFx0Ly8gLVxuXHRcdFx0XHRcdFx0aWYgKGNoYXJhdCh2YWx1ZSwgbGVuZ3RoICsgNCkgIT09IDQ1KVxuXHRcdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vIChmKWlsbC1hdmFpbGFibGUsIChmKWl0LWNvbnRlbnRcblx0XHRcdFx0XHRjYXNlIDEwMjpcblx0XHRcdFx0XHRcdHJldHVybiByZXBsYWNlKHZhbHVlLCAvKC4rOikoLispLShbXl0rKS8sICckMScgKyBXRUJLSVQgKyAnJDItJDMnICsgJyQxJyArIE1PWiArIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDMpID09IDEwOCA/ICckMycgOiAnJDItJDMnKSkgKyB2YWx1ZVxuXHRcdFx0XHRcdC8vIChzKXRyZXRjaFxuXHRcdFx0XHRcdGNhc2UgMTE1OlxuXHRcdFx0XHRcdFx0cmV0dXJuIH5pbmRleG9mKHZhbHVlLCAnc3RyZXRjaCcsIDApID8gcHJlZml4KHJlcGxhY2UodmFsdWUsICdzdHJldGNoJywgJ2ZpbGwtYXZhaWxhYmxlJyksIGxlbmd0aCwgY2hpbGRyZW4pICsgdmFsdWUgOiB2YWx1ZVxuXHRcdFx0XHR9XG5cdFx0XHRicmVha1xuXHRcdC8vIGdyaWQtKGNvbHVtbnxyb3cpXG5cdFx0Y2FzZSA1MTUyOiBjYXNlIDU5MjA6XG5cdFx0XHRyZXR1cm4gcmVwbGFjZSh2YWx1ZSwgLyguKz8pOihcXGQrKShcXHMqXFwvXFxzKihzcGFuKT9cXHMqKFxcZCspKT8oLiopLywgZnVuY3Rpb24gKF8sIGEsIGIsIGMsIGQsIGUsIGYpIHsgcmV0dXJuIChNUyArIGEgKyAnOicgKyBiICsgZikgKyAoYyA/IChNUyArIGEgKyAnLXNwYW46JyArIChkID8gZSA6ICtlIC0gK2IpKSArIGYgOiAnJykgKyB2YWx1ZSB9KVxuXHRcdC8vIHBvc2l0aW9uOiBzdGlja3lcblx0XHRjYXNlIDQ5NDk6XG5cdFx0XHQvLyBzdGljayh5KT9cblx0XHRcdGlmIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDYpID09PSAxMjEpXG5cdFx0XHRcdHJldHVybiByZXBsYWNlKHZhbHVlLCAnOicsICc6JyArIFdFQktJVCkgKyB2YWx1ZVxuXHRcdFx0YnJlYWtcblx0XHQvLyBkaXNwbGF5OiAoZmxleHxpbmxpbmUtZmxleHxncmlkfGlubGluZS1ncmlkKVxuXHRcdGNhc2UgNjQ0NDpcblx0XHRcdHN3aXRjaCAoY2hhcmF0KHZhbHVlLCBjaGFyYXQodmFsdWUsIDE0KSA9PT0gNDUgPyAxOCA6IDExKSkge1xuXHRcdFx0XHQvLyAoaW5saW5lLSk/ZmxlKHgpXG5cdFx0XHRcdGNhc2UgMTIwOlxuXHRcdFx0XHRcdHJldHVybiByZXBsYWNlKHZhbHVlLCAvKC4rOikoW147XFxzIV0rKSg7fChcXHMrKT8hLispPy8sICckMScgKyBXRUJLSVQgKyAoY2hhcmF0KHZhbHVlLCAxNCkgPT09IDQ1ID8gJ2lubGluZS0nIDogJycpICsgJ2JveCQzJyArICckMScgKyBXRUJLSVQgKyAnJDIkMycgKyAnJDEnICsgTVMgKyAnJDJib3gkMycpICsgdmFsdWVcblx0XHRcdFx0Ly8gKGlubGluZS0pP2dyaShkKVxuXHRcdFx0XHRjYXNlIDEwMDpcblx0XHRcdFx0XHRyZXR1cm4gcmVwbGFjZSh2YWx1ZSwgJzonLCAnOicgKyBNUykgKyB2YWx1ZVxuXHRcdFx0fVxuXHRcdFx0YnJlYWtcblx0XHQvLyBzY3JvbGwtbWFyZ2luLCBzY3JvbGwtbWFyZ2luLSh0b3B8cmlnaHR8Ym90dG9tfGxlZnQpXG5cdFx0Y2FzZSA1NzE5OiBjYXNlIDI2NDc6IGNhc2UgMjEzNTogY2FzZSAzOTI3OiBjYXNlIDIzOTE6XG5cdFx0XHRyZXR1cm4gcmVwbGFjZSh2YWx1ZSwgJ3Njcm9sbC0nLCAnc2Nyb2xsLXNuYXAtJykgKyB2YWx1ZVxuXHR9XG5cblx0cmV0dXJuIHZhbHVlXG59XG4iLCJpbXBvcnQge0lNUE9SVCwgTEFZRVIsIENPTU1FTlQsIFJVTEVTRVQsIERFQ0xBUkFUSU9OLCBLRVlGUkFNRVN9IGZyb20gJy4vRW51bS5qcydcbmltcG9ydCB7c3RybGVufSBmcm9tICcuL1V0aWxpdHkuanMnXG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemUgKGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHR2YXIgb3V0cHV0ID0gJydcblxuXHRmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKVxuXHRcdG91dHB1dCArPSBjYWxsYmFjayhjaGlsZHJlbltpXSwgaSwgY2hpbGRyZW4sIGNhbGxiYWNrKSB8fCAnJ1xuXG5cdHJldHVybiBvdXRwdXRcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeSAoZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHRzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuXHRcdGNhc2UgTEFZRVI6IGlmIChlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCkgYnJlYWtcblx0XHRjYXNlIElNUE9SVDogY2FzZSBERUNMQVJBVElPTjogcmV0dXJuIGVsZW1lbnQucmV0dXJuID0gZWxlbWVudC5yZXR1cm4gfHwgZWxlbWVudC52YWx1ZVxuXHRcdGNhc2UgQ09NTUVOVDogcmV0dXJuICcnXG5cdFx0Y2FzZSBLRVlGUkFNRVM6IHJldHVybiBlbGVtZW50LnJldHVybiA9IGVsZW1lbnQudmFsdWUgKyAneycgKyBzZXJpYWxpemUoZWxlbWVudC5jaGlsZHJlbiwgY2FsbGJhY2spICsgJ30nXG5cdFx0Y2FzZSBSVUxFU0VUOiBpZiAoIXN0cmxlbihlbGVtZW50LnZhbHVlID0gZWxlbWVudC5wcm9wcy5qb2luKCcsJykpKSByZXR1cm4gJydcblx0fVxuXG5cdHJldHVybiBzdHJsZW4oY2hpbGRyZW4gPSBzZXJpYWxpemUoZWxlbWVudC5jaGlsZHJlbiwgY2FsbGJhY2spKSA/IGVsZW1lbnQucmV0dXJuID0gZWxlbWVudC52YWx1ZSArICd7JyArIGNoaWxkcmVuICsgJ30nIDogJydcbn1cbiIsImltcG9ydCB7TVMsIE1PWiwgV0VCS0lULCBSVUxFU0VULCBLRVlGUkFNRVMsIERFQ0xBUkFUSU9OfSBmcm9tICcuL0VudW0uanMnXG5pbXBvcnQge21hdGNoLCBjaGFyYXQsIHN1YnN0ciwgc3RybGVuLCBzaXplb2YsIHJlcGxhY2UsIGNvbWJpbmUsIGZpbHRlciwgYXNzaWdufSBmcm9tICcuL1V0aWxpdHkuanMnXG5pbXBvcnQge2NvcHksIGxpZnQsIHRva2VuaXplfSBmcm9tICcuL1Rva2VuaXplci5qcydcbmltcG9ydCB7c2VyaWFsaXplfSBmcm9tICcuL1NlcmlhbGl6ZXIuanMnXG5pbXBvcnQge3ByZWZpeH0gZnJvbSAnLi9QcmVmaXhlci5qcydcblxuLyoqXG4gKiBAcGFyYW0ge2Z1bmN0aW9uW119IGNvbGxlY3Rpb25cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWlkZGxld2FyZSAoY29sbGVjdGlvbikge1xuXHR2YXIgbGVuZ3RoID0gc2l6ZW9mKGNvbGxlY3Rpb24pXG5cblx0cmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdFx0dmFyIG91dHB1dCA9ICcnXG5cblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKVxuXHRcdFx0b3V0cHV0ICs9IGNvbGxlY3Rpb25baV0oZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykgfHwgJydcblxuXHRcdHJldHVybiBvdXRwdXRcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzaGVldCAoY2FsbGJhY2spIHtcblx0cmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50KSB7XG5cdFx0aWYgKCFlbGVtZW50LnJvb3QpXG5cdFx0XHRpZiAoZWxlbWVudCA9IGVsZW1lbnQucmV0dXJuKVxuXHRcdFx0XHRjYWxsYmFjayhlbGVtZW50KVxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVmaXhlciAoZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHRpZiAoZWxlbWVudC5sZW5ndGggPiAtMSlcblx0XHRpZiAoIWVsZW1lbnQucmV0dXJuKVxuXHRcdFx0c3dpdGNoIChlbGVtZW50LnR5cGUpIHtcblx0XHRcdFx0Y2FzZSBERUNMQVJBVElPTjogZWxlbWVudC5yZXR1cm4gPSBwcmVmaXgoZWxlbWVudC52YWx1ZSwgZWxlbWVudC5sZW5ndGgsIGNoaWxkcmVuKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHRjYXNlIEtFWUZSQU1FUzpcblx0XHRcdFx0XHRyZXR1cm4gc2VyaWFsaXplKFtjb3B5KGVsZW1lbnQsIHt2YWx1ZTogcmVwbGFjZShlbGVtZW50LnZhbHVlLCAnQCcsICdAJyArIFdFQktJVCl9KV0sIGNhbGxiYWNrKVxuXHRcdFx0XHRjYXNlIFJVTEVTRVQ6XG5cdFx0XHRcdFx0aWYgKGVsZW1lbnQubGVuZ3RoKVxuXHRcdFx0XHRcdFx0cmV0dXJuIGNvbWJpbmUoY2hpbGRyZW4gPSBlbGVtZW50LnByb3BzLCBmdW5jdGlvbiAodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0c3dpdGNoIChtYXRjaCh2YWx1ZSwgY2FsbGJhY2sgPSAvKDo6cGxhY1xcdyt8OnJlYWQtXFx3KykvKSkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIDpyZWFkLShvbmx5fHdyaXRlKVxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgJzpyZWFkLW9ubHknOiBjYXNlICc6cmVhZC13cml0ZSc6XG5cdFx0XHRcdFx0XHRcdFx0XHRsaWZ0KGNvcHkoZWxlbWVudCwge3Byb3BzOiBbcmVwbGFjZSh2YWx1ZSwgLzoocmVhZC1cXHcrKS8sICc6JyArIE1PWiArICckMScpXX0pKVxuXHRcdFx0XHRcdFx0XHRcdFx0bGlmdChjb3B5KGVsZW1lbnQsIHtwcm9wczogW3ZhbHVlXX0pKVxuXHRcdFx0XHRcdFx0XHRcdFx0YXNzaWduKGVsZW1lbnQsIHtwcm9wczogZmlsdGVyKGNoaWxkcmVuLCBjYWxsYmFjayl9KVxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRcdFx0XHQvLyA6cGxhY2Vob2xkZXJcblx0XHRcdFx0XHRcdFx0XHRjYXNlICc6OnBsYWNlaG9sZGVyJzpcblx0XHRcdFx0XHRcdFx0XHRcdGxpZnQoY29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCAnOicgKyBXRUJLSVQgKyAnaW5wdXQtJDEnKV19KSlcblx0XHRcdFx0XHRcdFx0XHRcdGxpZnQoY29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCAnOicgKyBNT1ogKyAnJDEnKV19KSlcblx0XHRcdFx0XHRcdFx0XHRcdGxpZnQoY29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCBNUyArICdpbnB1dC0kMScpXX0pKVxuXHRcdFx0XHRcdFx0XHRcdFx0bGlmdChjb3B5KGVsZW1lbnQsIHtwcm9wczogW3ZhbHVlXX0pKVxuXHRcdFx0XHRcdFx0XHRcdFx0YXNzaWduKGVsZW1lbnQsIHtwcm9wczogZmlsdGVyKGNoaWxkcmVuLCBjYWxsYmFjayl9KVxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdHJldHVybiAnJ1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICovXG5leHBvcnQgZnVuY3Rpb24gbmFtZXNwYWNlIChlbGVtZW50KSB7XG5cdHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG5cdFx0Y2FzZSBSVUxFU0VUOlxuXHRcdFx0ZWxlbWVudC5wcm9wcyA9IGVsZW1lbnQucHJvcHMubWFwKGZ1bmN0aW9uICh2YWx1ZSkge1xuXHRcdFx0XHRyZXR1cm4gY29tYmluZSh0b2tlbml6ZSh2YWx1ZSksIGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgsIGNoaWxkcmVuKSB7XG5cdFx0XHRcdFx0c3dpdGNoIChjaGFyYXQodmFsdWUsIDApKSB7XG5cdFx0XHRcdFx0XHQvLyBcXGZcblx0XHRcdFx0XHRcdGNhc2UgMTI6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzdWJzdHIodmFsdWUsIDEsIHN0cmxlbih2YWx1ZSkpXG5cdFx0XHRcdFx0XHQvLyBcXDAgKCArID4gflxuXHRcdFx0XHRcdFx0Y2FzZSAwOiBjYXNlIDQwOiBjYXNlIDQzOiBjYXNlIDYyOiBjYXNlIDEyNjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhbHVlXG5cdFx0XHRcdFx0XHQvLyA6XG5cdFx0XHRcdFx0XHRjYXNlIDU4OlxuXHRcdFx0XHRcdFx0XHRpZiAoY2hpbGRyZW5bKytpbmRleF0gPT09ICdnbG9iYWwnKVxuXHRcdFx0XHRcdFx0XHRcdGNoaWxkcmVuW2luZGV4XSA9ICcnLCBjaGlsZHJlblsrK2luZGV4XSA9ICdcXGYnICsgc3Vic3RyKGNoaWxkcmVuW2luZGV4XSwgaW5kZXggPSAxLCAtMSlcblx0XHRcdFx0XHRcdC8vIFxcc1xuXHRcdFx0XHRcdFx0Y2FzZSAzMjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGluZGV4ID09PSAxID8gJycgOiB2YWx1ZVxuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0c3dpdGNoIChpbmRleCkge1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgMDogZWxlbWVudCA9IHZhbHVlXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gc2l6ZW9mKGNoaWxkcmVuKSA+IDEgPyAnJyA6IHZhbHVlXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBpbmRleCA9IHNpemVvZihjaGlsZHJlbikgLSAxOiBjYXNlIDI6XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaW5kZXggPT09IDIgPyB2YWx1ZSArIGVsZW1lbnQgKyBlbGVtZW50IDogdmFsdWUgKyBlbGVtZW50XG5cdFx0XHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblx0fVxufVxuIiwidmFyIHVuaXRsZXNzS2V5cyA9IHtcbiAgYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6IDEsXG4gIGFzcGVjdFJhdGlvOiAxLFxuICBib3JkZXJJbWFnZU91dHNldDogMSxcbiAgYm9yZGVySW1hZ2VTbGljZTogMSxcbiAgYm9yZGVySW1hZ2VXaWR0aDogMSxcbiAgYm94RmxleDogMSxcbiAgYm94RmxleEdyb3VwOiAxLFxuICBib3hPcmRpbmFsR3JvdXA6IDEsXG4gIGNvbHVtbkNvdW50OiAxLFxuICBjb2x1bW5zOiAxLFxuICBmbGV4OiAxLFxuICBmbGV4R3JvdzogMSxcbiAgZmxleFBvc2l0aXZlOiAxLFxuICBmbGV4U2hyaW5rOiAxLFxuICBmbGV4TmVnYXRpdmU6IDEsXG4gIGZsZXhPcmRlcjogMSxcbiAgZ3JpZFJvdzogMSxcbiAgZ3JpZFJvd0VuZDogMSxcbiAgZ3JpZFJvd1NwYW46IDEsXG4gIGdyaWRSb3dTdGFydDogMSxcbiAgZ3JpZENvbHVtbjogMSxcbiAgZ3JpZENvbHVtbkVuZDogMSxcbiAgZ3JpZENvbHVtblNwYW46IDEsXG4gIGdyaWRDb2x1bW5TdGFydDogMSxcbiAgbXNHcmlkUm93OiAxLFxuICBtc0dyaWRSb3dTcGFuOiAxLFxuICBtc0dyaWRDb2x1bW46IDEsXG4gIG1zR3JpZENvbHVtblNwYW46IDEsXG4gIGZvbnRXZWlnaHQ6IDEsXG4gIGxpbmVIZWlnaHQ6IDEsXG4gIG9wYWNpdHk6IDEsXG4gIG9yZGVyOiAxLFxuICBvcnBoYW5zOiAxLFxuICB0YWJTaXplOiAxLFxuICB3aWRvd3M6IDEsXG4gIHpJbmRleDogMSxcbiAgem9vbTogMSxcbiAgV2Via2l0TGluZUNsYW1wOiAxLFxuICAvLyBTVkctcmVsYXRlZCBwcm9wZXJ0aWVzXG4gIGZpbGxPcGFjaXR5OiAxLFxuICBmbG9vZE9wYWNpdHk6IDEsXG4gIHN0b3BPcGFjaXR5OiAxLFxuICBzdHJva2VEYXNoYXJyYXk6IDEsXG4gIHN0cm9rZURhc2hvZmZzZXQ6IDEsXG4gIHN0cm9rZU1pdGVybGltaXQ6IDEsXG4gIHN0cm9rZU9wYWNpdHk6IDEsXG4gIHN0cm9rZVdpZHRoOiAxXG59O1xuXG5leHBvcnQgeyB1bml0bGVzc0tleXMgYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0e19fc3ByZWFkQXJyYXkgYXMgZSxfX2Fzc2lnbiBhcyB0fWZyb21cInRzbGliXCI7aW1wb3J0IG4gZnJvbVwiQGVtb3Rpb24vaXMtcHJvcC12YWxpZFwiO2ltcG9ydCBvLHt1c2VSZWYgYXMgcix1c2VTdGF0ZSBhcyBzLHVzZU1lbW8gYXMgaSx1c2VFZmZlY3QgYXMgYSx1c2VDb250ZXh0IGFzIGMsdXNlRGVidWdWYWx1ZSBhcyBsLGNyZWF0ZUVsZW1lbnQgYXMgdX1mcm9tXCJyZWFjdFwiO2ltcG9ydCBwIGZyb21cInNoYWxsb3dlcXVhbFwiO2ltcG9ydCphcyBkIGZyb21cInN0eWxpc1wiO2ltcG9ydCBoIGZyb21cIkBlbW90aW9uL3VuaXRsZXNzXCI7dmFyIGY9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHByb2Nlc3MmJnZvaWQgMCE9PXByb2Nlc3MuZW52JiYocHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX1NDX0FUVFJ8fHByb2Nlc3MuZW52LlNDX0FUVFIpfHxcImRhdGEtc3R5bGVkXCIsbT1cImFjdGl2ZVwiLHk9XCJkYXRhLXN0eWxlZC12ZXJzaW9uXCIsdj1cIjYuMS4xM1wiLGc9XCIvKiFzYyovXFxuXCIsUz1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZcIkhUTUxFbGVtZW50XCJpbiB3aW5kb3csdz1Cb29sZWFuKFwiYm9vbGVhblwiPT10eXBlb2YgU0NfRElTQUJMRV9TUEVFRFk/U0NfRElTQUJMRV9TUEVFRFk6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHByb2Nlc3MmJnZvaWQgMCE9PXByb2Nlc3MuZW52JiZ2b2lkIDAhPT1wcm9jZXNzLmVudi5SRUFDVF9BUFBfU0NfRElTQUJMRV9TUEVFRFkmJlwiXCIhPT1wcm9jZXNzLmVudi5SRUFDVF9BUFBfU0NfRElTQUJMRV9TUEVFRFk/XCJmYWxzZVwiIT09cHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX1NDX0RJU0FCTEVfU1BFRURZJiZwcm9jZXNzLmVudi5SRUFDVF9BUFBfU0NfRElTQUJMRV9TUEVFRFk6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHByb2Nlc3MmJnZvaWQgMCE9PXByb2Nlc3MuZW52JiZ2b2lkIDAhPT1wcm9jZXNzLmVudi5TQ19ESVNBQkxFX1NQRUVEWSYmXCJcIiE9PXByb2Nlc3MuZW52LlNDX0RJU0FCTEVfU1BFRURZP1wiZmFsc2VcIiE9PXByb2Nlc3MuZW52LlNDX0RJU0FCTEVfU1BFRURZJiZwcm9jZXNzLmVudi5TQ19ESVNBQkxFX1NQRUVEWTpcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WKSxiPXt9LEU9L2ludmFsaWQgaG9vayBjYWxsL2ksTj1uZXcgU2V0LFA9ZnVuY3Rpb24odCxuKXtpZihcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WKXt2YXIgbz1uPycgd2l0aCB0aGUgaWQgb2YgXCInLmNvbmNhdChuLCdcIicpOlwiXCIscz1cIlRoZSBjb21wb25lbnQgXCIuY29uY2F0KHQpLmNvbmNhdChvLFwiIGhhcyBiZWVuIGNyZWF0ZWQgZHluYW1pY2FsbHkuXFxuXCIpK1wiWW91IG1heSBzZWUgdGhpcyB3YXJuaW5nIGJlY2F1c2UgeW91J3ZlIGNhbGxlZCBzdHlsZWQgaW5zaWRlIGFub3RoZXIgY29tcG9uZW50LlxcblRvIHJlc29sdmUgdGhpcyBvbmx5IGNyZWF0ZSBuZXcgU3R5bGVkQ29tcG9uZW50cyBvdXRzaWRlIG9mIGFueSByZW5kZXIgbWV0aG9kIGFuZCBmdW5jdGlvbiBjb21wb25lbnQuXCIsaT1jb25zb2xlLmVycm9yO3RyeXt2YXIgYT0hMDtjb25zb2xlLmVycm9yPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbj1bXSxvPTE7bzxhcmd1bWVudHMubGVuZ3RoO28rKyluW28tMV09YXJndW1lbnRzW29dO0UudGVzdCh0KT8oYT0hMSxOLmRlbGV0ZShzKSk6aS5hcHBseSh2b2lkIDAsZShbdF0sbiwhMSkpfSxyKCksYSYmIU4uaGFzKHMpJiYoY29uc29sZS53YXJuKHMpLE4uYWRkKHMpKX1jYXRjaChlKXtFLnRlc3QoZS5tZXNzYWdlKSYmTi5kZWxldGUocyl9ZmluYWxseXtjb25zb2xlLmVycm9yPWl9fX0sXz1PYmplY3QuZnJlZXplKFtdKSxDPU9iamVjdC5mcmVlemUoe30pO2Z1bmN0aW9uIEkoZSx0LG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj1DKSxlLnRoZW1lIT09bi50aGVtZSYmZS50aGVtZXx8dHx8bi50aGVtZX12YXIgQT1uZXcgU2V0KFtcImFcIixcImFiYnJcIixcImFkZHJlc3NcIixcImFyZWFcIixcImFydGljbGVcIixcImFzaWRlXCIsXCJhdWRpb1wiLFwiYlwiLFwiYmFzZVwiLFwiYmRpXCIsXCJiZG9cIixcImJpZ1wiLFwiYmxvY2txdW90ZVwiLFwiYm9keVwiLFwiYnJcIixcImJ1dHRvblwiLFwiY2FudmFzXCIsXCJjYXB0aW9uXCIsXCJjaXRlXCIsXCJjb2RlXCIsXCJjb2xcIixcImNvbGdyb3VwXCIsXCJkYXRhXCIsXCJkYXRhbGlzdFwiLFwiZGRcIixcImRlbFwiLFwiZGV0YWlsc1wiLFwiZGZuXCIsXCJkaWFsb2dcIixcImRpdlwiLFwiZGxcIixcImR0XCIsXCJlbVwiLFwiZW1iZWRcIixcImZpZWxkc2V0XCIsXCJmaWdjYXB0aW9uXCIsXCJmaWd1cmVcIixcImZvb3RlclwiLFwiZm9ybVwiLFwiaDFcIixcImgyXCIsXCJoM1wiLFwiaDRcIixcImg1XCIsXCJoNlwiLFwiaGVhZGVyXCIsXCJoZ3JvdXBcIixcImhyXCIsXCJodG1sXCIsXCJpXCIsXCJpZnJhbWVcIixcImltZ1wiLFwiaW5wdXRcIixcImluc1wiLFwia2JkXCIsXCJrZXlnZW5cIixcImxhYmVsXCIsXCJsZWdlbmRcIixcImxpXCIsXCJsaW5rXCIsXCJtYWluXCIsXCJtYXBcIixcIm1hcmtcIixcIm1lbnVcIixcIm1lbnVpdGVtXCIsXCJtZXRhXCIsXCJtZXRlclwiLFwibmF2XCIsXCJub3NjcmlwdFwiLFwib2JqZWN0XCIsXCJvbFwiLFwib3B0Z3JvdXBcIixcIm9wdGlvblwiLFwib3V0cHV0XCIsXCJwXCIsXCJwYXJhbVwiLFwicGljdHVyZVwiLFwicHJlXCIsXCJwcm9ncmVzc1wiLFwicVwiLFwicnBcIixcInJ0XCIsXCJydWJ5XCIsXCJzXCIsXCJzYW1wXCIsXCJzY3JpcHRcIixcInNlY3Rpb25cIixcInNlbGVjdFwiLFwic21hbGxcIixcInNvdXJjZVwiLFwic3BhblwiLFwic3Ryb25nXCIsXCJzdHlsZVwiLFwic3ViXCIsXCJzdW1tYXJ5XCIsXCJzdXBcIixcInRhYmxlXCIsXCJ0Ym9keVwiLFwidGRcIixcInRleHRhcmVhXCIsXCJ0Zm9vdFwiLFwidGhcIixcInRoZWFkXCIsXCJ0aW1lXCIsXCJ0clwiLFwidHJhY2tcIixcInVcIixcInVsXCIsXCJ1c2VcIixcInZhclwiLFwidmlkZW9cIixcIndiclwiLFwiY2lyY2xlXCIsXCJjbGlwUGF0aFwiLFwiZGVmc1wiLFwiZWxsaXBzZVwiLFwiZm9yZWlnbk9iamVjdFwiLFwiZ1wiLFwiaW1hZ2VcIixcImxpbmVcIixcImxpbmVhckdyYWRpZW50XCIsXCJtYXJrZXJcIixcIm1hc2tcIixcInBhdGhcIixcInBhdHRlcm5cIixcInBvbHlnb25cIixcInBvbHlsaW5lXCIsXCJyYWRpYWxHcmFkaWVudFwiLFwicmVjdFwiLFwic3RvcFwiLFwic3ZnXCIsXCJ0ZXh0XCIsXCJ0c3BhblwiXSksTz0vWyFcIiMkJSYnKCkqKywuLzo7PD0+P0BbXFxcXFxcXV5ge3x9fi1dKy9nLEQ9LyheLXwtJCkvZztmdW5jdGlvbiBSKGUpe3JldHVybiBlLnJlcGxhY2UoTyxcIi1cIikucmVwbGFjZShELFwiXCIpfXZhciBUPS8oYSkoZCkvZ2ksaz01MixqPWZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGUrKGU+MjU/Mzk6OTcpKX07ZnVuY3Rpb24geChlKXt2YXIgdCxuPVwiXCI7Zm9yKHQ9TWF0aC5hYnMoZSk7dD5rO3Q9dC9rfDApbj1qKHQlaykrbjtyZXR1cm4oaih0JWspK24pLnJlcGxhY2UoVCxcIiQxLSQyXCIpfXZhciBWLEY9NTM4MSxNPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXQubGVuZ3RoO247KWU9MzMqZV50LmNoYXJDb2RlQXQoLS1uKTtyZXR1cm4gZX0sej1mdW5jdGlvbihlKXtyZXR1cm4gTShGLGUpfTtmdW5jdGlvbiAkKGUpe3JldHVybiB4KHooZSk+Pj4wKX1mdW5jdGlvbiBCKGUpe3JldHVyblwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJlwic3RyaW5nXCI9PXR5cGVvZiBlJiZlfHxlLmRpc3BsYXlOYW1lfHxlLm5hbWV8fFwiQ29tcG9uZW50XCJ9ZnVuY3Rpb24gTChlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmKFwicHJvZHVjdGlvblwiPT09cHJvY2Vzcy5lbnYuTk9ERV9FTlZ8fGUuY2hhckF0KDApPT09ZS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSl9dmFyIEc9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLFk9Rz9TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKTo2MDExNSxXPUc/U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpOjYwMTEyLHE9e2NoaWxkQ29udGV4dFR5cGVzOiEwLGNvbnRleHRUeXBlOiEwLGNvbnRleHRUeXBlczohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6ITAsZ2V0RGVmYXVsdFByb3BzOiEwLGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjohMCxnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM6ITAsbWl4aW5zOiEwLHByb3BUeXBlczohMCx0eXBlOiEwfSxIPXtuYW1lOiEwLGxlbmd0aDohMCxwcm90b3R5cGU6ITAsY2FsbGVyOiEwLGNhbGxlZTohMCxhcmd1bWVudHM6ITAsYXJpdHk6ITB9LFU9eyQkdHlwZW9mOiEwLGNvbXBhcmU6ITAsZGVmYXVsdFByb3BzOiEwLGRpc3BsYXlOYW1lOiEwLHByb3BUeXBlczohMCx0eXBlOiEwfSxKPSgoVj17fSlbV109eyQkdHlwZW9mOiEwLHJlbmRlcjohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6ITAscHJvcFR5cGVzOiEwfSxWW1ldPVUsVik7ZnVuY3Rpb24gWChlKXtyZXR1cm4oXCJ0eXBlXCJpbih0PWUpJiZ0LnR5cGUuJCR0eXBlb2YpPT09WT9VOlwiJCR0eXBlb2ZcImluIGU/SltlLiQkdHlwZW9mXTpxO3ZhciB0fXZhciBaPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxLPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLFE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxlZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLHRlPU9iamVjdC5nZXRQcm90b3R5cGVPZixuZT1PYmplY3QucHJvdG90eXBlO2Z1bmN0aW9uIG9lKGUsdCxuKXtpZihcInN0cmluZ1wiIT10eXBlb2YgdCl7aWYobmUpe3ZhciBvPXRlKHQpO28mJm8hPT1uZSYmb2UoZSxvLG4pfXZhciByPUsodCk7USYmKHI9ci5jb25jYXQoUSh0KSkpO2Zvcih2YXIgcz1YKGUpLGk9WCh0KSxhPTA7YTxyLmxlbmd0aDsrK2Epe3ZhciBjPXJbYV07aWYoIShjIGluIEh8fG4mJm5bY118fGkmJmMgaW4gaXx8cyYmYyBpbiBzKSl7dmFyIGw9ZWUodCxjKTt0cnl7WihlLGMsbCl9Y2F0Y2goZSl7fX19fXJldHVybiBlfWZ1bmN0aW9uIHJlKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGV9ZnVuY3Rpb24gc2UoZSl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUmJlwic3R5bGVkQ29tcG9uZW50SWRcImluIGV9ZnVuY3Rpb24gaWUoZSx0KXtyZXR1cm4gZSYmdD9cIlwiLmNvbmNhdChlLFwiIFwiKS5jb25jYXQodCk6ZXx8dHx8XCJcIn1mdW5jdGlvbiBhZShlLHQpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm5cIlwiO2Zvcih2YXIgbj1lWzBdLG89MTtvPGUubGVuZ3RoO28rKyluKz10P3QrZVtvXTplW29dO3JldHVybiBufWZ1bmN0aW9uIGNlKGUpe3JldHVybiBudWxsIT09ZSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJmUuY29uc3RydWN0b3IubmFtZT09PU9iamVjdC5uYW1lJiYhKFwicHJvcHNcImluIGUmJmUuJCR0eXBlb2YpfWZ1bmN0aW9uIGxlKGUsdCxuKXtpZih2b2lkIDA9PT1uJiYobj0hMSksIW4mJiFjZShlKSYmIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHQ7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyllW29dPWxlKGVbb10sdFtvXSk7ZWxzZSBpZihjZSh0KSlmb3IodmFyIG8gaW4gdCllW29dPWxlKGVbb10sdFtvXSk7cmV0dXJuIGV9ZnVuY3Rpb24gdWUoZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcInRvU3RyaW5nXCIse3ZhbHVlOnR9KX12YXIgcGU9XCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOVj97MTpcIkNhbm5vdCBjcmVhdGUgc3R5bGVkLWNvbXBvbmVudCBmb3IgY29tcG9uZW50OiAlcy5cXG5cXG5cIiwyOlwiQ2FuJ3QgY29sbGVjdCBzdHlsZXMgb25jZSB5b3UndmUgY29uc3VtZWQgYSBgU2VydmVyU3R5bGVTaGVldGAncyBzdHlsZXMhIGBTZXJ2ZXJTdHlsZVNoZWV0YCBpcyBhIG9uZSBvZmYgaW5zdGFuY2UgZm9yIGVhY2ggc2VydmVyLXNpZGUgcmVuZGVyIGN5Y2xlLlxcblxcbi0gQXJlIHlvdSB0cnlpbmcgdG8gcmV1c2UgaXQgYWNyb3NzIHJlbmRlcnM/XFxuLSBBcmUgeW91IGFjY2lkZW50YWxseSBjYWxsaW5nIGNvbGxlY3RTdHlsZXMgdHdpY2U/XFxuXFxuXCIsMzpcIlN0cmVhbWluZyBTU1IgaXMgb25seSBzdXBwb3J0ZWQgaW4gYSBOb2RlLmpzIGVudmlyb25tZW50OyBQbGVhc2UgZG8gbm90IHRyeSB0byBjYWxsIHRoaXMgbWV0aG9kIGluIHRoZSBicm93c2VyLlxcblxcblwiLDQ6XCJUaGUgYFN0eWxlU2hlZXRNYW5hZ2VyYCBleHBlY3RzIGEgdmFsaWQgdGFyZ2V0IG9yIHNoZWV0IHByb3AhXFxuXFxuLSBEb2VzIHRoaXMgZXJyb3Igb2NjdXIgb24gdGhlIGNsaWVudCBhbmQgaXMgeW91ciB0YXJnZXQgZmFsc3k/XFxuLSBEb2VzIHRoaXMgZXJyb3Igb2NjdXIgb24gdGhlIHNlcnZlciBhbmQgaXMgdGhlIHNoZWV0IGZhbHN5P1xcblxcblwiLDU6XCJUaGUgY2xvbmUgbWV0aG9kIGNhbm5vdCBiZSB1c2VkIG9uIHRoZSBjbGllbnQhXFxuXFxuLSBBcmUgeW91IHJ1bm5pbmcgaW4gYSBjbGllbnQtbGlrZSBlbnZpcm9ubWVudCBvbiB0aGUgc2VydmVyP1xcbi0gQXJlIHlvdSB0cnlpbmcgdG8gcnVuIFNTUiBvbiB0aGUgY2xpZW50P1xcblxcblwiLDY6XCJUcnlpbmcgdG8gaW5zZXJ0IGEgbmV3IHN0eWxlIHRhZywgYnV0IHRoZSBnaXZlbiBOb2RlIGlzIHVubW91bnRlZCFcXG5cXG4tIEFyZSB5b3UgdXNpbmcgYSBjdXN0b20gdGFyZ2V0IHRoYXQgaXNuJ3QgbW91bnRlZD9cXG4tIERvZXMgeW91ciBkb2N1bWVudCBub3QgaGF2ZSBhIHZhbGlkIGhlYWQgZWxlbWVudD9cXG4tIEhhdmUgeW91IGFjY2lkZW50YWxseSByZW1vdmVkIGEgc3R5bGUgdGFnIG1hbnVhbGx5P1xcblxcblwiLDc6J1RoZW1lUHJvdmlkZXI6IFBsZWFzZSByZXR1cm4gYW4gb2JqZWN0IGZyb20geW91ciBcInRoZW1lXCIgcHJvcCBmdW5jdGlvbiwgZS5nLlxcblxcbmBgYGpzXFxudGhlbWU9eygpID0+ICh7fSl9XFxuYGBgXFxuXFxuJyw4OidUaGVtZVByb3ZpZGVyOiBQbGVhc2UgbWFrZSB5b3VyIFwidGhlbWVcIiBwcm9wIGFuIG9iamVjdC5cXG5cXG4nLDk6XCJNaXNzaW5nIGRvY3VtZW50IGA8aGVhZD5gXFxuXFxuXCIsMTA6XCJDYW5ub3QgZmluZCBhIFN0eWxlU2hlZXQgaW5zdGFuY2UuIFVzdWFsbHkgdGhpcyBoYXBwZW5zIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBjb3BpZXMgb2Ygc3R5bGVkLWNvbXBvbmVudHMgbG9hZGVkIGF0IG9uY2UuIENoZWNrIG91dCB0aGlzIGlzc3VlIGZvciBob3cgdG8gdHJvdWJsZXNob290IGFuZCBmaXggdGhlIGNvbW1vbiBjYXNlcyB3aGVyZSB0aGlzIHNpdHVhdGlvbiBjYW4gaGFwcGVuOiBodHRwczovL2dpdGh1Yi5jb20vc3R5bGVkLWNvbXBvbmVudHMvc3R5bGVkLWNvbXBvbmVudHMvaXNzdWVzLzE5NDEjaXNzdWVjb21tZW50LTQxNzg2MjAyMVxcblxcblwiLDExOlwiX1RoaXMgZXJyb3Igd2FzIHJlcGxhY2VkIHdpdGggYSBkZXYtdGltZSB3YXJuaW5nLCBpdCB3aWxsIGJlIGRlbGV0ZWQgZm9yIHY0IGZpbmFsLl8gW2NyZWF0ZUdsb2JhbFN0eWxlXSByZWNlaXZlZCBjaGlsZHJlbiB3aGljaCB3aWxsIG5vdCBiZSByZW5kZXJlZC4gUGxlYXNlIHVzZSB0aGUgY29tcG9uZW50IHdpdGhvdXQgcGFzc2luZyBjaGlsZHJlbiBlbGVtZW50cy5cXG5cXG5cIiwxMjpcIkl0IHNlZW1zIHlvdSBhcmUgaW50ZXJwb2xhdGluZyBhIGtleWZyYW1lIGRlY2xhcmF0aW9uICglcykgaW50byBhbiB1bnRhZ2dlZCBzdHJpbmcuIFRoaXMgd2FzIHN1cHBvcnRlZCBpbiBzdHlsZWQtY29tcG9uZW50cyB2MywgYnV0IGlzIG5vdCBsb25nZXIgc3VwcG9ydGVkIGluIHY0IGFzIGtleWZyYW1lcyBhcmUgbm93IGluamVjdGVkIG9uLWRlbWFuZC4gUGxlYXNlIHdyYXAgeW91ciBzdHJpbmcgaW4gdGhlIGNzc1xcXFxgXFxcXGAgaGVscGVyIHdoaWNoIGVuc3VyZXMgdGhlIHN0eWxlcyBhcmUgaW5qZWN0ZWQgY29ycmVjdGx5LiBTZWUgaHR0cHM6Ly93d3cuc3R5bGVkLWNvbXBvbmVudHMuY29tL2RvY3MvYXBpI2Nzc1xcblxcblwiLDEzOlwiJXMgaXMgbm90IGEgc3R5bGVkIGNvbXBvbmVudCBhbmQgY2Fubm90IGJlIHJlZmVycmVkIHRvIHZpYSBjb21wb25lbnQgc2VsZWN0b3IuIFNlZSBodHRwczovL3d3dy5zdHlsZWQtY29tcG9uZW50cy5jb20vZG9jcy9hZHZhbmNlZCNyZWZlcnJpbmctdG8tb3RoZXItY29tcG9uZW50cyBmb3IgbW9yZSBkZXRhaWxzLlxcblxcblwiLDE0OidUaGVtZVByb3ZpZGVyOiBcInRoZW1lXCIgcHJvcCBpcyByZXF1aXJlZC5cXG5cXG4nLDE1OlwiQSBzdHlsaXMgcGx1Z2luIGhhcyBiZWVuIHN1cHBsaWVkIHRoYXQgaXMgbm90IG5hbWVkLiBXZSBuZWVkIGEgbmFtZSBmb3IgZWFjaCBwbHVnaW4gdG8gYmUgYWJsZSB0byBwcmV2ZW50IHN0eWxpbmcgY29sbGlzaW9ucyBiZXR3ZWVuIGRpZmZlcmVudCBzdHlsaXMgY29uZmlndXJhdGlvbnMgd2l0aGluIHRoZSBzYW1lIGFwcC4gQmVmb3JlIHlvdSBwYXNzIHlvdXIgcGx1Z2luIHRvIGA8U3R5bGVTaGVldE1hbmFnZXIgc3R5bGlzUGx1Z2lucz17W119PmAsIHBsZWFzZSBtYWtlIHN1cmUgZWFjaCBwbHVnaW4gaXMgdW5pcXVlbHktbmFtZWQsIGUuZy5cXG5cXG5gYGBqc1xcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbXBvcnRlZFBsdWdpbiwgJ25hbWUnLCB7IHZhbHVlOiAnc29tZS11bmlxdWUtbmFtZScgfSk7XFxuYGBgXFxuXFxuXCIsMTY6XCJSZWFjaGVkIHRoZSBsaW1pdCBvZiBob3cgbWFueSBzdHlsZWQgY29tcG9uZW50cyBtYXkgYmUgY3JlYXRlZCBhdCBncm91cCAlcy5cXG5Zb3UgbWF5IG9ubHkgY3JlYXRlIHVwIHRvIDEsMDczLDc0MSw4MjQgY29tcG9uZW50cy4gSWYgeW91J3JlIGNyZWF0aW5nIGNvbXBvbmVudHMgZHluYW1pY2FsbHksXFxuYXMgZm9yIGluc3RhbmNlIGluIHlvdXIgcmVuZGVyIG1ldGhvZCB0aGVuIHlvdSBtYXkgYmUgcnVubmluZyBpbnRvIHRoaXMgbGltaXRhdGlvbi5cXG5cXG5cIiwxNzpcIkNTU1N0eWxlU2hlZXQgY291bGQgbm90IGJlIGZvdW5kIG9uIEhUTUxTdHlsZUVsZW1lbnQuXFxuSGFzIHN0eWxlZC1jb21wb25lbnRzJyBzdHlsZSB0YWcgYmVlbiB1bm1vdW50ZWQgb3IgYWx0ZXJlZCBieSBhbm90aGVyIHNjcmlwdD9cXG5cIiwxODpcIlRoZW1lUHJvdmlkZXI6IFBsZWFzZSBtYWtlIHN1cmUgeW91ciB1c2VUaGVtZSBob29rIGlzIHdpdGhpbiBhIGA8VGhlbWVQcm92aWRlcj5gXCJ9Ont9O2Z1bmN0aW9uIGRlKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO2Zvcih2YXIgbj1lWzBdLG89W10scj0xLHM9ZS5sZW5ndGg7cjxzO3IrPTEpby5wdXNoKGVbcl0pO3JldHVybiBvLmZvckVhY2goZnVuY3Rpb24oZSl7bj1uLnJlcGxhY2UoLyVbYS16XS8sZSl9KSxufWZ1bmN0aW9uIGhlKHQpe2Zvcih2YXIgbj1bXSxvPTE7bzxhcmd1bWVudHMubGVuZ3RoO28rKyluW28tMV09YXJndW1lbnRzW29dO3JldHVyblwicHJvZHVjdGlvblwiPT09cHJvY2Vzcy5lbnYuTk9ERV9FTlY/bmV3IEVycm9yKFwiQW4gZXJyb3Igb2NjdXJyZWQuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc3R5bGVkLWNvbXBvbmVudHMvc3R5bGVkLWNvbXBvbmVudHMvYmxvYi9tYWluL3BhY2thZ2VzL3N0eWxlZC1jb21wb25lbnRzL3NyYy91dGlscy9lcnJvcnMubWQjXCIuY29uY2F0KHQsXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXCIpLmNvbmNhdChuLmxlbmd0aD4wP1wiIEFyZ3M6IFwiLmNvbmNhdChuLmpvaW4oXCIsIFwiKSk6XCJcIikpOm5ldyBFcnJvcihkZS5hcHBseSh2b2lkIDAsZShbcGVbdF1dLG4sITEpKS50cmltKCkpfXZhciBmZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5ncm91cFNpemVzPW5ldyBVaW50MzJBcnJheSg1MTIpLHRoaXMubGVuZ3RoPTUxMix0aGlzLnRhZz1lfXJldHVybiBlLnByb3RvdHlwZS5pbmRleE9mR3JvdXA9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj0wO248ZTtuKyspdCs9dGhpcy5ncm91cFNpemVzW25dO3JldHVybiB0fSxlLnByb3RvdHlwZS5pbnNlcnRSdWxlcz1mdW5jdGlvbihlLHQpe2lmKGU+PXRoaXMuZ3JvdXBTaXplcy5sZW5ndGgpe2Zvcih2YXIgbj10aGlzLmdyb3VwU2l6ZXMsbz1uLmxlbmd0aCxyPW87ZT49cjspaWYoKHI8PD0xKTwwKXRocm93IGhlKDE2LFwiXCIuY29uY2F0KGUpKTt0aGlzLmdyb3VwU2l6ZXM9bmV3IFVpbnQzMkFycmF5KHIpLHRoaXMuZ3JvdXBTaXplcy5zZXQobiksdGhpcy5sZW5ndGg9cjtmb3IodmFyIHM9bztzPHI7cysrKXRoaXMuZ3JvdXBTaXplc1tzXT0wfWZvcih2YXIgaT10aGlzLmluZGV4T2ZHcm91cChlKzEpLGE9KHM9MCx0Lmxlbmd0aCk7czxhO3MrKyl0aGlzLnRhZy5pbnNlcnRSdWxlKGksdFtzXSkmJih0aGlzLmdyb3VwU2l6ZXNbZV0rKyxpKyspfSxlLnByb3RvdHlwZS5jbGVhckdyb3VwPWZ1bmN0aW9uKGUpe2lmKGU8dGhpcy5sZW5ndGgpe3ZhciB0PXRoaXMuZ3JvdXBTaXplc1tlXSxuPXRoaXMuaW5kZXhPZkdyb3VwKGUpLG89bit0O3RoaXMuZ3JvdXBTaXplc1tlXT0wO2Zvcih2YXIgcj1uO3I8bztyKyspdGhpcy50YWcuZGVsZXRlUnVsZShuKX19LGUucHJvdG90eXBlLmdldEdyb3VwPWZ1bmN0aW9uKGUpe3ZhciB0PVwiXCI7aWYoZT49dGhpcy5sZW5ndGh8fDA9PT10aGlzLmdyb3VwU2l6ZXNbZV0pcmV0dXJuIHQ7Zm9yKHZhciBuPXRoaXMuZ3JvdXBTaXplc1tlXSxvPXRoaXMuaW5kZXhPZkdyb3VwKGUpLHI9bytuLHM9bztzPHI7cysrKXQrPVwiXCIuY29uY2F0KHRoaXMudGFnLmdldFJ1bGUocykpLmNvbmNhdChnKTtyZXR1cm4gdH0sZX0oKSxtZT0xPDwzMCx5ZT1uZXcgTWFwLHZlPW5ldyBNYXAsZ2U9MSxTZT1mdW5jdGlvbihlKXtpZih5ZS5oYXMoZSkpcmV0dXJuIHllLmdldChlKTtmb3IoO3ZlLmhhcyhnZSk7KWdlKys7dmFyIHQ9Z2UrKztpZihcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiYoKDB8dCk8MHx8dD5tZSkpdGhyb3cgaGUoMTYsXCJcIi5jb25jYXQodCkpO3JldHVybiB5ZS5zZXQoZSx0KSx2ZS5zZXQodCxlKSx0fSx3ZT1mdW5jdGlvbihlLHQpe2dlPXQrMSx5ZS5zZXQoZSx0KSx2ZS5zZXQodCxlKX0sYmU9XCJzdHlsZVtcIi5jb25jYXQoZixcIl1bXCIpLmNvbmNhdCh5LCc9XCInKS5jb25jYXQodiwnXCJdJyksRWU9bmV3IFJlZ0V4cChcIl5cIi5jb25jYXQoZiwnXFxcXC5nKFxcXFxkKylcXFxcW2lkPVwiKFtcXFxcd1xcXFxkLV0rKVwiXFxcXF0uKj9cIihbXlwiXSopJykpLE5lPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIG8scj1uLnNwbGl0KFwiLFwiKSxzPTAsaT1yLmxlbmd0aDtzPGk7cysrKShvPXJbc10pJiZlLnJlZ2lzdGVyTmFtZSh0LG8pfSxQZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbixvPShudWxsIT09KG49dC50ZXh0Q29udGVudCkmJnZvaWQgMCE9PW4/bjpcIlwiKS5zcGxpdChnKSxyPVtdLHM9MCxpPW8ubGVuZ3RoO3M8aTtzKyspe3ZhciBhPW9bc10udHJpbSgpO2lmKGEpe3ZhciBjPWEubWF0Y2goRWUpO2lmKGMpe3ZhciBsPTB8cGFyc2VJbnQoY1sxXSwxMCksdT1jWzJdOzAhPT1sJiYod2UodSxsKSxOZShlLHUsY1szXSksZS5nZXRUYWcoKS5pbnNlcnRSdWxlcyhsLHIpKSxyLmxlbmd0aD0wfWVsc2Ugci5wdXNoKGEpfX19LF9lPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGJlKSxuPTAsbz10Lmxlbmd0aDtuPG87bisrKXt2YXIgcj10W25dO3ImJnIuZ2V0QXR0cmlidXRlKGYpIT09bSYmKFBlKGUsciksci5wYXJlbnROb2RlJiZyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocikpfX07ZnVuY3Rpb24gQ2UoKXtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2YgX193ZWJwYWNrX25vbmNlX18/X193ZWJwYWNrX25vbmNlX186bnVsbH12YXIgSWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuaGVhZCxuPWV8fHQsbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIikscj1mdW5jdGlvbihlKXt2YXIgdD1BcnJheS5mcm9tKGUucXVlcnlTZWxlY3RvckFsbChcInN0eWxlW1wiLmNvbmNhdChmLFwiXVwiKSkpO3JldHVybiB0W3QubGVuZ3RoLTFdfShuKSxzPXZvaWQgMCE9PXI/ci5uZXh0U2libGluZzpudWxsO28uc2V0QXR0cmlidXRlKGYsbSksby5zZXRBdHRyaWJ1dGUoeSx2KTt2YXIgaT1DZSgpO3JldHVybiBpJiZvLnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsaSksbi5pbnNlcnRCZWZvcmUobyxzKSxvfSxBZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5lbGVtZW50PUllKGUpLHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIlwiKSksdGhpcy5zaGVldD1mdW5jdGlvbihlKXtpZihlLnNoZWV0KXJldHVybiBlLnNoZWV0O2Zvcih2YXIgdD1kb2N1bWVudC5zdHlsZVNoZWV0cyxuPTAsbz10Lmxlbmd0aDtuPG87bisrKXt2YXIgcj10W25dO2lmKHIub3duZXJOb2RlPT09ZSlyZXR1cm4gcn10aHJvdyBoZSgxNyl9KHRoaXMuZWxlbWVudCksdGhpcy5sZW5ndGg9MH1yZXR1cm4gZS5wcm90b3R5cGUuaW5zZXJ0UnVsZT1mdW5jdGlvbihlLHQpe3RyeXtyZXR1cm4gdGhpcy5zaGVldC5pbnNlcnRSdWxlKHQsZSksdGhpcy5sZW5ndGgrKywhMH1jYXRjaChlKXtyZXR1cm4hMX19LGUucHJvdG90eXBlLmRlbGV0ZVJ1bGU9ZnVuY3Rpb24oZSl7dGhpcy5zaGVldC5kZWxldGVSdWxlKGUpLHRoaXMubGVuZ3RoLS19LGUucHJvdG90eXBlLmdldFJ1bGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zaGVldC5jc3NSdWxlc1tlXTtyZXR1cm4gdCYmdC5jc3NUZXh0P3QuY3NzVGV4dDpcIlwifSxlfSgpLE9lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLmVsZW1lbnQ9SWUoZSksdGhpcy5ub2Rlcz10aGlzLmVsZW1lbnQuY2hpbGROb2Rlcyx0aGlzLmxlbmd0aD0wfXJldHVybiBlLnByb3RvdHlwZS5pbnNlcnRSdWxlPWZ1bmN0aW9uKGUsdCl7aWYoZTw9dGhpcy5sZW5ndGgmJmU+PTApe3ZhciBuPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpO3JldHVybiB0aGlzLmVsZW1lbnQuaW5zZXJ0QmVmb3JlKG4sdGhpcy5ub2Rlc1tlXXx8bnVsbCksdGhpcy5sZW5ndGgrKywhMH1yZXR1cm4hMX0sZS5wcm90b3R5cGUuZGVsZXRlUnVsZT1mdW5jdGlvbihlKXt0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5ub2Rlc1tlXSksdGhpcy5sZW5ndGgtLX0sZS5wcm90b3R5cGUuZ2V0UnVsZT1mdW5jdGlvbihlKXtyZXR1cm4gZTx0aGlzLmxlbmd0aD90aGlzLm5vZGVzW2VdLnRleHRDb250ZW50OlwiXCJ9LGV9KCksRGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMucnVsZXM9W10sdGhpcy5sZW5ndGg9MH1yZXR1cm4gZS5wcm90b3R5cGUuaW5zZXJ0UnVsZT1mdW5jdGlvbihlLHQpe3JldHVybiBlPD10aGlzLmxlbmd0aCYmKHRoaXMucnVsZXMuc3BsaWNlKGUsMCx0KSx0aGlzLmxlbmd0aCsrLCEwKX0sZS5wcm90b3R5cGUuZGVsZXRlUnVsZT1mdW5jdGlvbihlKXt0aGlzLnJ1bGVzLnNwbGljZShlLDEpLHRoaXMubGVuZ3RoLS19LGUucHJvdG90eXBlLmdldFJ1bGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGU8dGhpcy5sZW5ndGg/dGhpcy5ydWxlc1tlXTpcIlwifSxlfSgpLFJlPVMsVGU9e2lzU2VydmVyOiFTLHVzZUNTU09NSW5qZWN0aW9uOiF3fSxrZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSxuLG8pe3ZvaWQgMD09PWUmJihlPUMpLHZvaWQgMD09PW4mJihuPXt9KTt2YXIgcj10aGlzO3RoaXMub3B0aW9ucz10KHQoe30sVGUpLGUpLHRoaXMuZ3M9bix0aGlzLm5hbWVzPW5ldyBNYXAobyksdGhpcy5zZXJ2ZXI9ISFlLmlzU2VydmVyLCF0aGlzLnNlcnZlciYmUyYmUmUmJihSZT0hMSxfZSh0aGlzKSksdWUodGhpcyxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5nZXRUYWcoKSxuPXQubGVuZ3RoLG89XCJcIixyPWZ1bmN0aW9uKG4pe3ZhciByPWZ1bmN0aW9uKGUpe3JldHVybiB2ZS5nZXQoZSl9KG4pO2lmKHZvaWQgMD09PXIpcmV0dXJuXCJjb250aW51ZVwiO3ZhciBzPWUubmFtZXMuZ2V0KHIpLGk9dC5nZXRHcm91cChuKTtpZih2b2lkIDA9PT1zfHwhcy5zaXplfHwwPT09aS5sZW5ndGgpcmV0dXJuXCJjb250aW51ZVwiO3ZhciBhPVwiXCIuY29uY2F0KGYsXCIuZ1wiKS5jb25jYXQobiwnW2lkPVwiJykuY29uY2F0KHIsJ1wiXScpLGM9XCJcIjt2b2lkIDAhPT1zJiZzLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5sZW5ndGg+MCYmKGMrPVwiXCIuY29uY2F0KGUsXCIsXCIpKX0pLG8rPVwiXCIuY29uY2F0KGkpLmNvbmNhdChhLCd7Y29udGVudDpcIicpLmNvbmNhdChjLCdcIn0nKS5jb25jYXQoZyl9LHM9MDtzPG47cysrKXIocyk7cmV0dXJuIG99KHIpfSl9cmV0dXJuIGUucmVnaXN0ZXJJZD1mdW5jdGlvbihlKXtyZXR1cm4gU2UoZSl9LGUucHJvdG90eXBlLnJlaHlkcmF0ZT1mdW5jdGlvbigpeyF0aGlzLnNlcnZlciYmUyYmX2UodGhpcyl9LGUucHJvdG90eXBlLnJlY29uc3RydWN0V2l0aE9wdGlvbnM9ZnVuY3Rpb24obixvKXtyZXR1cm4gdm9pZCAwPT09byYmKG89ITApLG5ldyBlKHQodCh7fSx0aGlzLm9wdGlvbnMpLG4pLHRoaXMuZ3MsbyYmdGhpcy5uYW1lc3x8dm9pZCAwKX0sZS5wcm90b3R5cGUuYWxsb2NhdGVHU0luc3RhbmNlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmdzW2VdPSh0aGlzLmdzW2VdfHwwKSsxfSxlLnByb3RvdHlwZS5nZXRUYWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50YWd8fCh0aGlzLnRhZz0oZT1mdW5jdGlvbihlKXt2YXIgdD1lLnVzZUNTU09NSW5qZWN0aW9uLG49ZS50YXJnZXQ7cmV0dXJuIGUuaXNTZXJ2ZXI/bmV3IERlKG4pOnQ/bmV3IEFlKG4pOm5ldyBPZShuKX0odGhpcy5vcHRpb25zKSxuZXcgZmUoZSkpKTt2YXIgZX0sZS5wcm90b3R5cGUuaGFzTmFtZUZvcklkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubmFtZXMuaGFzKGUpJiZ0aGlzLm5hbWVzLmdldChlKS5oYXModCl9LGUucHJvdG90eXBlLnJlZ2lzdGVyTmFtZT1mdW5jdGlvbihlLHQpe2lmKFNlKGUpLHRoaXMubmFtZXMuaGFzKGUpKXRoaXMubmFtZXMuZ2V0KGUpLmFkZCh0KTtlbHNle3ZhciBuPW5ldyBTZXQ7bi5hZGQodCksdGhpcy5uYW1lcy5zZXQoZSxuKX19LGUucHJvdG90eXBlLmluc2VydFJ1bGVzPWZ1bmN0aW9uKGUsdCxuKXt0aGlzLnJlZ2lzdGVyTmFtZShlLHQpLHRoaXMuZ2V0VGFnKCkuaW5zZXJ0UnVsZXMoU2UoZSksbil9LGUucHJvdG90eXBlLmNsZWFyTmFtZXM9ZnVuY3Rpb24oZSl7dGhpcy5uYW1lcy5oYXMoZSkmJnRoaXMubmFtZXMuZ2V0KGUpLmNsZWFyKCl9LGUucHJvdG90eXBlLmNsZWFyUnVsZXM9ZnVuY3Rpb24oZSl7dGhpcy5nZXRUYWcoKS5jbGVhckdyb3VwKFNlKGUpKSx0aGlzLmNsZWFyTmFtZXMoZSl9LGUucHJvdG90eXBlLmNsZWFyVGFnPWZ1bmN0aW9uKCl7dGhpcy50YWc9dm9pZCAwfSxlfSgpLGplPS8mL2cseGU9L15cXHMqXFwvXFwvLiokL2dtO2Z1bmN0aW9uIFZlKGUsdCl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUpe3JldHVyblwicnVsZVwiPT09ZS50eXBlJiYoZS52YWx1ZT1cIlwiLmNvbmNhdCh0LFwiIFwiKS5jb25jYXQoZS52YWx1ZSksZS52YWx1ZT1lLnZhbHVlLnJlcGxhY2VBbGwoXCIsXCIsXCIsXCIuY29uY2F0KHQsXCIgXCIpKSxlLnByb3BzPWUucHJvcHMubWFwKGZ1bmN0aW9uKGUpe3JldHVyblwiXCIuY29uY2F0KHQsXCIgXCIpLmNvbmNhdChlKX0pKSxBcnJheS5pc0FycmF5KGUuY2hpbGRyZW4pJiZcIkBrZXlmcmFtZXNcIiE9PWUudHlwZSYmKGUuY2hpbGRyZW49VmUoZS5jaGlsZHJlbix0KSksZX0pfWZ1bmN0aW9uIEZlKGUpe3ZhciB0LG4sbyxyPXZvaWQgMD09PWU/QzplLHM9ci5vcHRpb25zLGk9dm9pZCAwPT09cz9DOnMsYT1yLnBsdWdpbnMsYz12b2lkIDA9PT1hP186YSxsPWZ1bmN0aW9uKGUsbyxyKXtyZXR1cm4gci5zdGFydHNXaXRoKG4pJiZyLmVuZHNXaXRoKG4pJiZyLnJlcGxhY2VBbGwobixcIlwiKS5sZW5ndGg+MD9cIi5cIi5jb25jYXQodCk6ZX0sdT1jLnNsaWNlKCk7dS5wdXNoKGZ1bmN0aW9uKGUpe2UudHlwZT09PWQuUlVMRVNFVCYmZS52YWx1ZS5pbmNsdWRlcyhcIiZcIikmJihlLnByb3BzWzBdPWUucHJvcHNbMF0ucmVwbGFjZShqZSxuKS5yZXBsYWNlKG8sbCkpfSksaS5wcmVmaXgmJnUucHVzaChkLnByZWZpeGVyKSx1LnB1c2goZC5zdHJpbmdpZnkpO3ZhciBwPWZ1bmN0aW9uKGUscixzLGEpe3ZvaWQgMD09PXImJihyPVwiXCIpLHZvaWQgMD09PXMmJihzPVwiXCIpLHZvaWQgMD09PWEmJihhPVwiJlwiKSx0PWEsbj1yLG89bmV3IFJlZ0V4cChcIlxcXFxcIi5jb25jYXQobixcIlxcXFxiXCIpLFwiZ1wiKTt2YXIgYz1lLnJlcGxhY2UoeGUsXCJcIiksbD1kLmNvbXBpbGUoc3x8cj9cIlwiLmNvbmNhdChzLFwiIFwiKS5jb25jYXQocixcIiB7IFwiKS5jb25jYXQoYyxcIiB9XCIpOmMpO2kubmFtZXNwYWNlJiYobD1WZShsLGkubmFtZXNwYWNlKSk7dmFyIHA9W107cmV0dXJuIGQuc2VyaWFsaXplKGwsZC5taWRkbGV3YXJlKHUuY29uY2F0KGQucnVsZXNoZWV0KGZ1bmN0aW9uKGUpe3JldHVybiBwLnB1c2goZSl9KSkpKSxwfTtyZXR1cm4gcC5oYXNoPWMubGVuZ3RoP2MucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQubmFtZXx8aGUoMTUpLE0oZSx0Lm5hbWUpfSxGKS50b1N0cmluZygpOlwiXCIscH12YXIgTWU9bmV3IGtlLHplPUZlKCksJGU9by5jcmVhdGVDb250ZXh0KHtzaG91bGRGb3J3YXJkUHJvcDp2b2lkIDAsc3R5bGVTaGVldDpNZSxzdHlsaXM6emV9KSxCZT0kZS5Db25zdW1lcixMZT1vLmNyZWF0ZUNvbnRleHQodm9pZCAwKTtmdW5jdGlvbiBHZSgpe3JldHVybiBjKCRlKX1mdW5jdGlvbiBZZShlKXt2YXIgdD1zKGUuc3R5bGlzUGx1Z2lucyksbj10WzBdLHI9dFsxXSxjPUdlKCkuc3R5bGVTaGVldCxsPWkoZnVuY3Rpb24oKXt2YXIgdD1jO3JldHVybiBlLnNoZWV0P3Q9ZS5zaGVldDplLnRhcmdldCYmKHQ9dC5yZWNvbnN0cnVjdFdpdGhPcHRpb25zKHt0YXJnZXQ6ZS50YXJnZXR9LCExKSksZS5kaXNhYmxlQ1NTT01JbmplY3Rpb24mJih0PXQucmVjb25zdHJ1Y3RXaXRoT3B0aW9ucyh7dXNlQ1NTT01JbmplY3Rpb246ITF9KSksdH0sW2UuZGlzYWJsZUNTU09NSW5qZWN0aW9uLGUuc2hlZXQsZS50YXJnZXQsY10pLHU9aShmdW5jdGlvbigpe3JldHVybiBGZSh7b3B0aW9uczp7bmFtZXNwYWNlOmUubmFtZXNwYWNlLHByZWZpeDplLmVuYWJsZVZlbmRvclByZWZpeGVzfSxwbHVnaW5zOm59KX0sW2UuZW5hYmxlVmVuZG9yUHJlZml4ZXMsZS5uYW1lc3BhY2Usbl0pO2EoZnVuY3Rpb24oKXtwKG4sZS5zdHlsaXNQbHVnaW5zKXx8cihlLnN0eWxpc1BsdWdpbnMpfSxbZS5zdHlsaXNQbHVnaW5zXSk7dmFyIGQ9aShmdW5jdGlvbigpe3JldHVybntzaG91bGRGb3J3YXJkUHJvcDplLnNob3VsZEZvcndhcmRQcm9wLHN0eWxlU2hlZXQ6bCxzdHlsaXM6dX19LFtlLnNob3VsZEZvcndhcmRQcm9wLGwsdV0pO3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoJGUuUHJvdmlkZXIse3ZhbHVlOmR9LG8uY3JlYXRlRWxlbWVudChMZS5Qcm92aWRlcix7dmFsdWU6dX0sZS5jaGlsZHJlbikpfXZhciBXZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt2YXIgbj10aGlzO3RoaXMuaW5qZWN0PWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9emUpO3ZhciBvPW4ubmFtZSt0Lmhhc2g7ZS5oYXNOYW1lRm9ySWQobi5pZCxvKXx8ZS5pbnNlcnRSdWxlcyhuLmlkLG8sdChuLnJ1bGVzLG8sXCJAa2V5ZnJhbWVzXCIpKX0sdGhpcy5uYW1lPWUsdGhpcy5pZD1cInNjLWtleWZyYW1lcy1cIi5jb25jYXQoZSksdGhpcy5ydWxlcz10LHVlKHRoaXMsZnVuY3Rpb24oKXt0aHJvdyBoZSgxMixTdHJpbmcobi5uYW1lKSl9KX1yZXR1cm4gZS5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9emUpLHRoaXMubmFtZStlLmhhc2h9LGV9KCkscWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PVwiQVwiJiZlPD1cIlpcIn07ZnVuY3Rpb24gSGUoZSl7Zm9yKHZhciB0PVwiXCIsbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgbz1lW25dO2lmKDE9PT1uJiZcIi1cIj09PW8mJlwiLVwiPT09ZVswXSlyZXR1cm4gZTtxZShvKT90Kz1cIi1cIitvLnRvTG93ZXJDYXNlKCk6dCs9b31yZXR1cm4gdC5zdGFydHNXaXRoKFwibXMtXCIpP1wiLVwiK3Q6dH12YXIgVWU9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV8fCExPT09ZXx8XCJcIj09PWV9LEplPWZ1bmN0aW9uKHQpe3ZhciBuLG8scj1bXTtmb3IodmFyIHMgaW4gdCl7dmFyIGk9dFtzXTt0Lmhhc093blByb3BlcnR5KHMpJiYhVWUoaSkmJihBcnJheS5pc0FycmF5KGkpJiZpLmlzQ3NzfHxyZShpKT9yLnB1c2goXCJcIi5jb25jYXQoSGUocyksXCI6XCIpLGksXCI7XCIpOmNlKGkpP3IucHVzaC5hcHBseShyLGUoZShbXCJcIi5jb25jYXQocyxcIiB7XCIpXSxKZShpKSwhMSksW1wifVwiXSwhMSkpOnIucHVzaChcIlwiLmNvbmNhdChIZShzKSxcIjogXCIpLmNvbmNhdCgobj1zLG51bGw9PShvPWkpfHxcImJvb2xlYW5cIj09dHlwZW9mIG98fFwiXCI9PT1vP1wiXCI6XCJudW1iZXJcIiE9dHlwZW9mIG98fDA9PT1vfHxuIGluIGh8fG4uc3RhcnRzV2l0aChcIi0tXCIpP1N0cmluZyhvKS50cmltKCk6XCJcIi5jb25jYXQobyxcInB4XCIpKSxcIjtcIikpKX1yZXR1cm4gcn07ZnVuY3Rpb24gWGUoZSx0LG4sbyl7aWYoVWUoZSkpcmV0dXJuW107aWYoc2UoZSkpcmV0dXJuW1wiLlwiLmNvbmNhdChlLnN0eWxlZENvbXBvbmVudElkKV07aWYocmUoZSkpe2lmKCFyZShzPWUpfHxzLnByb3RvdHlwZSYmcy5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudHx8IXQpcmV0dXJuW2VdO3ZhciByPWUodCk7cmV0dXJuXCJwcm9kdWN0aW9uXCI9PT1wcm9jZXNzLmVudi5OT0RFX0VOVnx8XCJvYmplY3RcIiE9dHlwZW9mIHJ8fEFycmF5LmlzQXJyYXkocil8fHIgaW5zdGFuY2VvZiBXZXx8Y2Uocil8fG51bGw9PT1yfHxjb25zb2xlLmVycm9yKFwiXCIuY29uY2F0KEIoZSksXCIgaXMgbm90IGEgc3R5bGVkIGNvbXBvbmVudCBhbmQgY2Fubm90IGJlIHJlZmVycmVkIHRvIHZpYSBjb21wb25lbnQgc2VsZWN0b3IuIFNlZSBodHRwczovL3d3dy5zdHlsZWQtY29tcG9uZW50cy5jb20vZG9jcy9hZHZhbmNlZCNyZWZlcnJpbmctdG8tb3RoZXItY29tcG9uZW50cyBmb3IgbW9yZSBkZXRhaWxzLlwiKSksWGUocix0LG4sbyl9dmFyIHM7cmV0dXJuIGUgaW5zdGFuY2VvZiBXZT9uPyhlLmluamVjdChuLG8pLFtlLmdldE5hbWUobyldKTpbZV06Y2UoZSk/SmUoZSk6QXJyYXkuaXNBcnJheShlKT9BcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KF8sZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIFhlKGUsdCxuLG8pfSkpOltlLnRvU3RyaW5nKCldfWZ1bmN0aW9uIFplKGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCs9MSl7dmFyIG49ZVt0XTtpZihyZShuKSYmIXNlKG4pKXJldHVybiExfXJldHVybiEwfXZhciBLZT16KHYpLFFlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbil7dGhpcy5ydWxlcz1lLHRoaXMuc3RhdGljUnVsZXNJZD1cIlwiLHRoaXMuaXNTdGF0aWM9XCJwcm9kdWN0aW9uXCI9PT1wcm9jZXNzLmVudi5OT0RFX0VOViYmKHZvaWQgMD09PW58fG4uaXNTdGF0aWMpJiZaZShlKSx0aGlzLmNvbXBvbmVudElkPXQsdGhpcy5iYXNlSGFzaD1NKEtlLHQpLHRoaXMuYmFzZVN0eWxlPW4sa2UucmVnaXN0ZXJJZCh0KX1yZXR1cm4gZS5wcm90b3R5cGUuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXM9ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPXRoaXMuYmFzZVN0eWxlP3RoaXMuYmFzZVN0eWxlLmdlbmVyYXRlQW5kSW5qZWN0U3R5bGVzKGUsdCxuKTpcIlwiO2lmKHRoaXMuaXNTdGF0aWMmJiFuLmhhc2gpaWYodGhpcy5zdGF0aWNSdWxlc0lkJiZ0Lmhhc05hbWVGb3JJZCh0aGlzLmNvbXBvbmVudElkLHRoaXMuc3RhdGljUnVsZXNJZCkpbz1pZShvLHRoaXMuc3RhdGljUnVsZXNJZCk7ZWxzZXt2YXIgcj1hZShYZSh0aGlzLnJ1bGVzLGUsdCxuKSkscz14KE0odGhpcy5iYXNlSGFzaCxyKT4+PjApO2lmKCF0Lmhhc05hbWVGb3JJZCh0aGlzLmNvbXBvbmVudElkLHMpKXt2YXIgaT1uKHIsXCIuXCIuY29uY2F0KHMpLHZvaWQgMCx0aGlzLmNvbXBvbmVudElkKTt0Lmluc2VydFJ1bGVzKHRoaXMuY29tcG9uZW50SWQscyxpKX1vPWllKG8scyksdGhpcy5zdGF0aWNSdWxlc0lkPXN9ZWxzZXtmb3IodmFyIGE9TSh0aGlzLmJhc2VIYXNoLG4uaGFzaCksYz1cIlwiLGw9MDtsPHRoaXMucnVsZXMubGVuZ3RoO2wrKyl7dmFyIHU9dGhpcy5ydWxlc1tsXTtpZihcInN0cmluZ1wiPT10eXBlb2YgdSljKz11LFwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJihhPU0oYSx1KSk7ZWxzZSBpZih1KXt2YXIgcD1hZShYZSh1LGUsdCxuKSk7YT1NKGEscCtsKSxjKz1wfX1pZihjKXt2YXIgZD14KGE+Pj4wKTt0Lmhhc05hbWVGb3JJZCh0aGlzLmNvbXBvbmVudElkLGQpfHx0Lmluc2VydFJ1bGVzKHRoaXMuY29tcG9uZW50SWQsZCxuKGMsXCIuXCIuY29uY2F0KGQpLHZvaWQgMCx0aGlzLmNvbXBvbmVudElkKSksbz1pZShvLGQpfX1yZXR1cm4gb30sZX0oKSxldD1vLmNyZWF0ZUNvbnRleHQodm9pZCAwKSx0dD1ldC5Db25zdW1lcjtmdW5jdGlvbiBudCgpe3ZhciBlPWMoZXQpO2lmKCFlKXRocm93IGhlKDE4KTtyZXR1cm4gZX1mdW5jdGlvbiBvdChlKXt2YXIgbj1vLnVzZUNvbnRleHQoZXQpLHI9aShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlLG4pe2lmKCFlKXRocm93IGhlKDE0KTtpZihyZShlKSl7dmFyIG89ZShuKTtpZihcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiYobnVsbD09PW98fEFycmF5LmlzQXJyYXkobyl8fFwib2JqZWN0XCIhPXR5cGVvZiBvKSl0aHJvdyBoZSg3KTtyZXR1cm4gb31pZihBcnJheS5pc0FycmF5KGUpfHxcIm9iamVjdFwiIT10eXBlb2YgZSl0aHJvdyBoZSg4KTtyZXR1cm4gbj90KHQoe30sbiksZSk6ZX0oZS50aGVtZSxuKX0sW2UudGhlbWUsbl0pO3JldHVybiBlLmNoaWxkcmVuP28uY3JlYXRlRWxlbWVudChldC5Qcm92aWRlcix7dmFsdWU6cn0sZS5jaGlsZHJlbik6bnVsbH12YXIgcnQ9e30sc3Q9bmV3IFNldDtmdW5jdGlvbiBpdChlLHIscyl7dmFyIGk9c2UoZSksYT1lLGM9IUwoZSkscD1yLmF0dHJzLGQ9dm9pZCAwPT09cD9fOnAsaD1yLmNvbXBvbmVudElkLGY9dm9pZCAwPT09aD9mdW5jdGlvbihlLHQpe3ZhciBuPVwic3RyaW5nXCIhPXR5cGVvZiBlP1wic2NcIjpSKGUpO3J0W25dPShydFtuXXx8MCkrMTt2YXIgbz1cIlwiLmNvbmNhdChuLFwiLVwiKS5jb25jYXQoJCh2K24rcnRbbl0pKTtyZXR1cm4gdD9cIlwiLmNvbmNhdCh0LFwiLVwiKS5jb25jYXQobyk6b30oci5kaXNwbGF5TmFtZSxyLnBhcmVudENvbXBvbmVudElkKTpoLG09ci5kaXNwbGF5TmFtZSx5PXZvaWQgMD09PW0/ZnVuY3Rpb24oZSl7cmV0dXJuIEwoZSk/XCJzdHlsZWQuXCIuY29uY2F0KGUpOlwiU3R5bGVkKFwiLmNvbmNhdChCKGUpLFwiKVwiKX0oZSk6bSxnPXIuZGlzcGxheU5hbWUmJnIuY29tcG9uZW50SWQ/XCJcIi5jb25jYXQoUihyLmRpc3BsYXlOYW1lKSxcIi1cIikuY29uY2F0KHIuY29tcG9uZW50SWQpOnIuY29tcG9uZW50SWR8fGYsUz1pJiZhLmF0dHJzP2EuYXR0cnMuY29uY2F0KGQpLmZpbHRlcihCb29sZWFuKTpkLHc9ci5zaG91bGRGb3J3YXJkUHJvcDtpZihpJiZhLnNob3VsZEZvcndhcmRQcm9wKXt2YXIgYj1hLnNob3VsZEZvcndhcmRQcm9wO2lmKHIuc2hvdWxkRm9yd2FyZFByb3Ape3ZhciBFPXIuc2hvdWxkRm9yd2FyZFByb3A7dz1mdW5jdGlvbihlLHQpe3JldHVybiBiKGUsdCkmJkUoZSx0KX19ZWxzZSB3PWJ9dmFyIE49bmV3IFFlKHMsZyxpP2EuY29tcG9uZW50U3R5bGU6dm9pZCAwKTtmdW5jdGlvbiBPKGUscil7cmV0dXJuIGZ1bmN0aW9uKGUscixzKXt2YXIgaT1lLmF0dHJzLGE9ZS5jb21wb25lbnRTdHlsZSxjPWUuZGVmYXVsdFByb3BzLHA9ZS5mb2xkZWRDb21wb25lbnRJZHMsZD1lLnN0eWxlZENvbXBvbmVudElkLGg9ZS50YXJnZXQsZj1vLnVzZUNvbnRleHQoZXQpLG09R2UoKSx5PWUuc2hvdWxkRm9yd2FyZFByb3B8fG0uc2hvdWxkRm9yd2FyZFByb3A7XCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmbChkKTt2YXIgdj1JKHIsZixjKXx8QyxnPWZ1bmN0aW9uKGUsbixvKXtmb3IodmFyIHIscz10KHQoe30sbikse2NsYXNzTmFtZTp2b2lkIDAsdGhlbWU6b30pLGk9MDtpPGUubGVuZ3RoO2krPTEpe3ZhciBhPXJlKHI9ZVtpXSk/cihzKTpyO2Zvcih2YXIgYyBpbiBhKXNbY109XCJjbGFzc05hbWVcIj09PWM/aWUoc1tjXSxhW2NdKTpcInN0eWxlXCI9PT1jP3QodCh7fSxzW2NdKSxhW2NdKTphW2NdfXJldHVybiBuLmNsYXNzTmFtZSYmKHMuY2xhc3NOYW1lPWllKHMuY2xhc3NOYW1lLG4uY2xhc3NOYW1lKSksc30oaSxyLHYpLFM9Zy5hc3x8aCx3PXt9O2Zvcih2YXIgYiBpbiBnKXZvaWQgMD09PWdbYl18fFwiJFwiPT09YlswXXx8XCJhc1wiPT09Ynx8XCJ0aGVtZVwiPT09YiYmZy50aGVtZT09PXZ8fChcImZvcndhcmRlZEFzXCI9PT1iP3cuYXM9Zy5mb3J3YXJkZWRBczp5JiYheShiLFMpfHwod1tiXT1nW2JdLHl8fFwiZGV2ZWxvcG1lbnRcIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WfHxuKGIpfHxzdC5oYXMoYil8fCFBLmhhcyhTKXx8KHN0LmFkZChiKSxjb25zb2xlLndhcm4oJ3N0eWxlZC1jb21wb25lbnRzOiBpdCBsb29rcyBsaWtlIGFuIHVua25vd24gcHJvcCBcIicuY29uY2F0KGIsJ1wiIGlzIGJlaW5nIHNlbnQgdGhyb3VnaCB0byB0aGUgRE9NLCB3aGljaCB3aWxsIGxpa2VseSB0cmlnZ2VyIGEgUmVhY3QgY29uc29sZSBlcnJvci4gSWYgeW91IHdvdWxkIGxpa2UgYXV0b21hdGljIGZpbHRlcmluZyBvZiB1bmtub3duIHByb3BzLCB5b3UgY2FuIG9wdC1pbnRvIHRoYXQgYmVoYXZpb3IgdmlhIGA8U3R5bGVTaGVldE1hbmFnZXIgc2hvdWxkRm9yd2FyZFByb3A9ey4uLn0+YCAoY29ubmVjdCBhbiBBUEkgbGlrZSBgQGVtb3Rpb24vaXMtcHJvcC12YWxpZGApIG9yIGNvbnNpZGVyIHVzaW5nIHRyYW5zaWVudCBwcm9wcyAoYCRgIHByZWZpeCBmb3IgYXV0b21hdGljIGZpbHRlcmluZy4pJykpKSkpO3ZhciBFPWZ1bmN0aW9uKGUsdCl7dmFyIG49R2UoKSxvPWUuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXModCxuLnN0eWxlU2hlZXQsbi5zdHlsaXMpO3JldHVyblwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJmwobyksb30oYSxnKTtcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZlLndhcm5Ub29NYW55Q2xhc3NlcyYmZS53YXJuVG9vTWFueUNsYXNzZXMoRSk7dmFyIE49aWUocCxkKTtyZXR1cm4gRSYmKE4rPVwiIFwiK0UpLGcuY2xhc3NOYW1lJiYoTis9XCIgXCIrZy5jbGFzc05hbWUpLHdbTChTKSYmIUEuaGFzKFMpP1wiY2xhc3NcIjpcImNsYXNzTmFtZVwiXT1OLHcucmVmPXMsdShTLHcpfShELGUscil9Ty5kaXNwbGF5TmFtZT15O3ZhciBEPW8uZm9yd2FyZFJlZihPKTtyZXR1cm4gRC5hdHRycz1TLEQuY29tcG9uZW50U3R5bGU9TixELmRpc3BsYXlOYW1lPXksRC5zaG91bGRGb3J3YXJkUHJvcD13LEQuZm9sZGVkQ29tcG9uZW50SWRzPWk/aWUoYS5mb2xkZWRDb21wb25lbnRJZHMsYS5zdHlsZWRDb21wb25lbnRJZCk6XCJcIixELnN0eWxlZENvbXBvbmVudElkPWcsRC50YXJnZXQ9aT9hLnRhcmdldDplLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShELFwiZGVmYXVsdFByb3BzXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mb2xkZWREZWZhdWx0UHJvcHN9LHNldDpmdW5jdGlvbihlKXt0aGlzLl9mb2xkZWREZWZhdWx0UHJvcHM9aT9mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTtmb3IodmFyIG89MCxyPXQ7bzxyLmxlbmd0aDtvKyspbGUoZSxyW29dLCEwKTtyZXR1cm4gZX0oe30sYS5kZWZhdWx0UHJvcHMsZSk6ZX19KSxcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiYoUCh5LGcpLEQud2FyblRvb01hbnlDbGFzc2VzPWZ1bmN0aW9uKGUsdCl7dmFyIG49e30sbz0hMTtyZXR1cm4gZnVuY3Rpb24ocil7aWYoIW8mJihuW3JdPSEwLE9iamVjdC5rZXlzKG4pLmxlbmd0aD49MjAwKSl7dmFyIHM9dD8nIHdpdGggdGhlIGlkIG9mIFwiJy5jb25jYXQodCwnXCInKTpcIlwiO2NvbnNvbGUud2FybihcIk92ZXIgXCIuY29uY2F0KDIwMCxcIiBjbGFzc2VzIHdlcmUgZ2VuZXJhdGVkIGZvciBjb21wb25lbnQgXCIpLmNvbmNhdChlKS5jb25jYXQocyxcIi5cXG5cIikrXCJDb25zaWRlciB1c2luZyB0aGUgYXR0cnMgbWV0aG9kLCB0b2dldGhlciB3aXRoIGEgc3R5bGUgb2JqZWN0IGZvciBmcmVxdWVudGx5IGNoYW5nZWQgc3R5bGVzLlxcbkV4YW1wbGU6XFxuICBjb25zdCBDb21wb25lbnQgPSBzdHlsZWQuZGl2LmF0dHJzKHByb3BzID0+ICh7XFxuICAgIHN0eWxlOiB7XFxuICAgICAgYmFja2dyb3VuZDogcHJvcHMuYmFja2dyb3VuZCxcXG4gICAgfSxcXG4gIH0pKWB3aWR0aDogMTAwJTtgXFxuXFxuICA8Q29tcG9uZW50IC8+XCIpLG89ITAsbj17fX19fSh5LGcpKSx1ZShELGZ1bmN0aW9uKCl7cmV0dXJuXCIuXCIuY29uY2F0KEQuc3R5bGVkQ29tcG9uZW50SWQpfSksYyYmb2UoRCxlLHthdHRyczohMCxjb21wb25lbnRTdHlsZTohMCxkaXNwbGF5TmFtZTohMCxmb2xkZWRDb21wb25lbnRJZHM6ITAsc2hvdWxkRm9yd2FyZFByb3A6ITAsc3R5bGVkQ29tcG9uZW50SWQ6ITAsdGFyZ2V0OiEwfSksRH1mdW5jdGlvbiBhdChlLHQpe2Zvcih2YXIgbj1bZVswXV0sbz0wLHI9dC5sZW5ndGg7bzxyO28rPTEpbi5wdXNoKHRbb10sZVtvKzFdKTtyZXR1cm4gbn12YXIgY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oZSx7aXNDc3M6ITB9KX07ZnVuY3Rpb24gbHQodCl7Zm9yKHZhciBuPVtdLG89MTtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKW5bby0xXT1hcmd1bWVudHNbb107aWYocmUodCl8fGNlKHQpKXJldHVybiBjdChYZShhdChfLGUoW3RdLG4sITApKSkpO3ZhciByPXQ7cmV0dXJuIDA9PT1uLmxlbmd0aCYmMT09PXIubGVuZ3RoJiZcInN0cmluZ1wiPT10eXBlb2YgclswXT9YZShyKTpjdChYZShhdChyLG4pKSl9ZnVuY3Rpb24gdXQobixvLHIpe2lmKHZvaWQgMD09PXImJihyPUMpLCFvKXRocm93IGhlKDEsbyk7dmFyIHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBzPVtdLGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKXNbaS0xXT1hcmd1bWVudHNbaV07cmV0dXJuIG4obyxyLGx0LmFwcGx5KHZvaWQgMCxlKFt0XSxzLCExKSkpfTtyZXR1cm4gcy5hdHRycz1mdW5jdGlvbihlKXtyZXR1cm4gdXQobixvLHQodCh7fSxyKSx7YXR0cnM6QXJyYXkucHJvdG90eXBlLmNvbmNhdChyLmF0dHJzLGUpLmZpbHRlcihCb29sZWFuKX0pKX0scy53aXRoQ29uZmlnPWZ1bmN0aW9uKGUpe3JldHVybiB1dChuLG8sdCh0KHt9LHIpLGUpKX0sc312YXIgcHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHV0KGl0LGUpfSxkdD1wdDtBLmZvckVhY2goZnVuY3Rpb24oZSl7ZHRbZV09cHQoZSl9KTt2YXIgaHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy5ydWxlcz1lLHRoaXMuY29tcG9uZW50SWQ9dCx0aGlzLmlzU3RhdGljPVplKGUpLGtlLnJlZ2lzdGVySWQodGhpcy5jb21wb25lbnRJZCsxKX1yZXR1cm4gZS5wcm90b3R5cGUuY3JlYXRlU3R5bGVzPWZ1bmN0aW9uKGUsdCxuLG8pe3ZhciByPW8oYWUoWGUodGhpcy5ydWxlcyx0LG4sbykpLFwiXCIpLHM9dGhpcy5jb21wb25lbnRJZCtlO24uaW5zZXJ0UnVsZXMocyxzLHIpfSxlLnByb3RvdHlwZS5yZW1vdmVTdHlsZXM9ZnVuY3Rpb24oZSx0KXt0LmNsZWFyUnVsZXModGhpcy5jb21wb25lbnRJZCtlKX0sZS5wcm90b3R5cGUucmVuZGVyU3R5bGVzPWZ1bmN0aW9uKGUsdCxuLG8pe2U+MiYma2UucmVnaXN0ZXJJZCh0aGlzLmNvbXBvbmVudElkK2UpLHRoaXMucmVtb3ZlU3R5bGVzKGUsbiksdGhpcy5jcmVhdGVTdHlsZXMoZSx0LG4sbyl9LGV9KCk7ZnVuY3Rpb24gZnQobil7Zm9yKHZhciByPVtdLHM9MTtzPGFyZ3VtZW50cy5sZW5ndGg7cysrKXJbcy0xXT1hcmd1bWVudHNbc107dmFyIGk9bHQuYXBwbHkodm9pZCAwLGUoW25dLHIsITEpKSxhPVwic2MtZ2xvYmFsLVwiLmNvbmNhdCgkKEpTT04uc3RyaW5naWZ5KGkpKSksYz1uZXcgaHQoaSxhKTtcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZQKGEpO3ZhciBsPWZ1bmN0aW9uKGUpe3ZhciB0PUdlKCksbj1vLnVzZUNvbnRleHQoZXQpLHI9by51c2VSZWYodC5zdHlsZVNoZWV0LmFsbG9jYXRlR1NJbnN0YW5jZShhKSkuY3VycmVudDtyZXR1cm5cInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZvLkNoaWxkcmVuLmNvdW50KGUuY2hpbGRyZW4pJiZjb25zb2xlLndhcm4oXCJUaGUgZ2xvYmFsIHN0eWxlIGNvbXBvbmVudCBcIi5jb25jYXQoYSxcIiB3YXMgZ2l2ZW4gY2hpbGQgSlNYLiBjcmVhdGVHbG9iYWxTdHlsZSBkb2VzIG5vdCByZW5kZXIgY2hpbGRyZW4uXCIpKSxcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZpLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGUmJi0xIT09ZS5pbmRleE9mKFwiQGltcG9ydFwiKX0pJiZjb25zb2xlLndhcm4oXCJQbGVhc2UgZG8gbm90IHVzZSBAaW1wb3J0IENTUyBzeW50YXggaW4gY3JlYXRlR2xvYmFsU3R5bGUgYXQgdGhpcyB0aW1lLCBhcyB0aGUgQ1NTT00gQVBJcyB3ZSB1c2UgaW4gcHJvZHVjdGlvbiBkbyBub3QgaGFuZGxlIGl0IHdlbGwuIEluc3RlYWQsIHdlIHJlY29tbWVuZCB1c2luZyBhIGxpYnJhcnkgc3VjaCBhcyByZWFjdC1oZWxtZXQgdG8gaW5qZWN0IGEgdHlwaWNhbCA8bGluaz4gbWV0YSB0YWcgdG8gdGhlIHN0eWxlc2hlZXQsIG9yIHNpbXBseSBlbWJlZGRpbmcgaXQgbWFudWFsbHkgaW4geW91ciBpbmRleC5odG1sIDxoZWFkPiBzZWN0aW9uIGZvciBhIHNpbXBsZXIgYXBwLlwiKSx0LnN0eWxlU2hlZXQuc2VydmVyJiZ1KHIsZSx0LnN0eWxlU2hlZXQsbix0LnN0eWxpcyksby51c2VMYXlvdXRFZmZlY3QoZnVuY3Rpb24oKXtpZighdC5zdHlsZVNoZWV0LnNlcnZlcilyZXR1cm4gdShyLGUsdC5zdHlsZVNoZWV0LG4sdC5zdHlsaXMpLGZ1bmN0aW9uKCl7cmV0dXJuIGMucmVtb3ZlU3R5bGVzKHIsdC5zdHlsZVNoZWV0KX19LFtyLGUsdC5zdHlsZVNoZWV0LG4sdC5zdHlsaXNdKSxudWxsfTtmdW5jdGlvbiB1KGUsbixvLHIscyl7aWYoYy5pc1N0YXRpYyljLnJlbmRlclN0eWxlcyhlLGIsbyxzKTtlbHNle3ZhciBpPXQodCh7fSxuKSx7dGhlbWU6SShuLHIsbC5kZWZhdWx0UHJvcHMpfSk7Yy5yZW5kZXJTdHlsZXMoZSxpLG8scyl9fXJldHVybiBvLm1lbW8obCl9ZnVuY3Rpb24gbXQodCl7Zm9yKHZhciBuPVtdLG89MTtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKW5bby0xXT1hcmd1bWVudHNbb107XCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG5hdmlnYXRvciYmXCJSZWFjdE5hdGl2ZVwiPT09bmF2aWdhdG9yLnByb2R1Y3QmJmNvbnNvbGUud2FybihcImBrZXlmcmFtZXNgIGNhbm5vdCBiZSB1c2VkIG9uIFJlYWN0TmF0aXZlLCBvbmx5IG9uIHRoZSB3ZWIuIFRvIGRvIGFuaW1hdGlvbiBpbiBSZWFjdE5hdGl2ZSBwbGVhc2UgdXNlIEFuaW1hdGVkLlwiKTt2YXIgcj1hZShsdC5hcHBseSh2b2lkIDAsZShbdF0sbiwhMSkpKSxzPSQocik7cmV0dXJuIG5ldyBXZShzLHIpfWZ1bmN0aW9uIHl0KGUpe3ZhciBuPW8uZm9yd2FyZFJlZihmdW5jdGlvbihuLHIpe3ZhciBzPUkobixvLnVzZUNvbnRleHQoZXQpLGUuZGVmYXVsdFByb3BzKTtyZXR1cm5cInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZ2b2lkIDA9PT1zJiZjb25zb2xlLndhcm4oJ1t3aXRoVGhlbWVdIFlvdSBhcmUgbm90IHVzaW5nIGEgVGhlbWVQcm92aWRlciBub3IgcGFzc2luZyBhIHRoZW1lIHByb3Agb3IgYSB0aGVtZSBpbiBkZWZhdWx0UHJvcHMgaW4gY29tcG9uZW50IGNsYXNzIFwiJy5jb25jYXQoQihlKSwnXCInKSksby5jcmVhdGVFbGVtZW50KGUsdCh7fSxuLHt0aGVtZTpzLHJlZjpyfSkpfSk7cmV0dXJuIG4uZGlzcGxheU5hbWU9XCJXaXRoVGhlbWUoXCIuY29uY2F0KEIoZSksXCIpXCIpLG9lKG4sZSl9dmFyIHZ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXRoaXM7dGhpcy5fZW1pdFNoZWV0Q1NTPWZ1bmN0aW9uKCl7dmFyIHQ9ZS5pbnN0YW5jZS50b1N0cmluZygpO2lmKCF0KXJldHVyblwiXCI7dmFyIG49Q2UoKSxvPWFlKFtuJiYnbm9uY2U9XCInLmNvbmNhdChuLCdcIicpLFwiXCIuY29uY2F0KGYsJz1cInRydWVcIicpLFwiXCIuY29uY2F0KHksJz1cIicpLmNvbmNhdCh2LCdcIicpXS5maWx0ZXIoQm9vbGVhbiksXCIgXCIpO3JldHVyblwiPHN0eWxlIFwiLmNvbmNhdChvLFwiPlwiKS5jb25jYXQodCxcIjwvc3R5bGU+XCIpfSx0aGlzLmdldFN0eWxlVGFncz1mdW5jdGlvbigpe2lmKGUuc2VhbGVkKXRocm93IGhlKDIpO3JldHVybiBlLl9lbWl0U2hlZXRDU1MoKX0sdGhpcy5nZXRTdHlsZUVsZW1lbnQ9ZnVuY3Rpb24oKXt2YXIgbjtpZihlLnNlYWxlZCl0aHJvdyBoZSgyKTt2YXIgcj1lLmluc3RhbmNlLnRvU3RyaW5nKCk7aWYoIXIpcmV0dXJuW107dmFyIHM9KChuPXt9KVtmXT1cIlwiLG5beV09dixuLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXtfX2h0bWw6cn0sbiksaT1DZSgpO3JldHVybiBpJiYocy5ub25jZT1pKSxbby5jcmVhdGVFbGVtZW50KFwic3R5bGVcIix0KHt9LHMse2tleTpcInNjLTAtMFwifSkpXX0sdGhpcy5zZWFsPWZ1bmN0aW9uKCl7ZS5zZWFsZWQ9ITB9LHRoaXMuaW5zdGFuY2U9bmV3IGtlKHtpc1NlcnZlcjohMH0pLHRoaXMuc2VhbGVkPSExfXJldHVybiBlLnByb3RvdHlwZS5jb2xsZWN0U3R5bGVzPWZ1bmN0aW9uKGUpe2lmKHRoaXMuc2VhbGVkKXRocm93IGhlKDIpO3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoWWUse3NoZWV0OnRoaXMuaW5zdGFuY2V9LGUpfSxlLnByb3RvdHlwZS5pbnRlcmxlYXZlV2l0aE5vZGVTdHJlYW09ZnVuY3Rpb24oZSl7dGhyb3cgaGUoMyl9LGV9KCksZ3Q9e1N0eWxlU2hlZXQ6a2UsbWFpblNoZWV0Ok1lfTtcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbmF2aWdhdG9yJiZcIlJlYWN0TmF0aXZlXCI9PT1uYXZpZ2F0b3IucHJvZHVjdCYmY29uc29sZS53YXJuKFwiSXQgbG9va3MgbGlrZSB5b3UndmUgaW1wb3J0ZWQgJ3N0eWxlZC1jb21wb25lbnRzJyBvbiBSZWFjdCBOYXRpdmUuXFxuUGVyaGFwcyB5b3UncmUgbG9va2luZyB0byBpbXBvcnQgJ3N0eWxlZC1jb21wb25lbnRzL25hdGl2ZSc/XFxuUmVhZCBtb3JlIGFib3V0IHRoaXMgYXQgaHR0cHM6Ly93d3cuc3R5bGVkLWNvbXBvbmVudHMuY29tL2RvY3MvYmFzaWNzI3JlYWN0LW5hdGl2ZVwiKTt2YXIgU3Q9XCJfX3NjLVwiLmNvbmNhdChmLFwiX19cIik7XCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmXCJ0ZXN0XCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmKHdpbmRvd1tTdF18fCh3aW5kb3dbU3RdPTApLDE9PT13aW5kb3dbU3RdJiZjb25zb2xlLndhcm4oXCJJdCBsb29rcyBsaWtlIHRoZXJlIGFyZSBzZXZlcmFsIGluc3RhbmNlcyBvZiAnc3R5bGVkLWNvbXBvbmVudHMnIGluaXRpYWxpemVkIGluIHRoaXMgYXBwbGljYXRpb24uIFRoaXMgbWF5IGNhdXNlIGR5bmFtaWMgc3R5bGVzIHRvIG5vdCByZW5kZXIgcHJvcGVybHksIGVycm9ycyBkdXJpbmcgdGhlIHJlaHlkcmF0aW9uIHByb2Nlc3MsIGEgbWlzc2luZyB0aGVtZSBwcm9wLCBhbmQgbWFrZXMgeW91ciBhcHBsaWNhdGlvbiBiaWdnZXIgd2l0aG91dCBnb29kIHJlYXNvbi5cXG5cXG5TZWUgaHR0cHM6Ly9zLWMuc2gvMkJBWHplZCBmb3IgbW9yZSBpbmZvLlwiKSx3aW5kb3dbU3RdKz0xKTtleHBvcnR7dnQgYXMgU2VydmVyU3R5bGVTaGVldCxCZSBhcyBTdHlsZVNoZWV0Q29uc3VtZXIsJGUgYXMgU3R5bGVTaGVldENvbnRleHQsWWUgYXMgU3R5bGVTaGVldE1hbmFnZXIsdHQgYXMgVGhlbWVDb25zdW1lcixldCBhcyBUaGVtZUNvbnRleHQsb3QgYXMgVGhlbWVQcm92aWRlcixndCBhcyBfX1BSSVZBVEVfXyxmdCBhcyBjcmVhdGVHbG9iYWxTdHlsZSxsdCBhcyBjc3MsZHQgYXMgZGVmYXVsdCxzZSBhcyBpc1N0eWxlZENvbXBvbmVudCxtdCBhcyBrZXlmcmFtZXMsZHQgYXMgc3R5bGVkLG50IGFzIHVzZVRoZW1lLHYgYXMgdmVyc2lvbix5dCBhcyB3aXRoVGhlbWV9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3R5bGVkLWNvbXBvbmVudHMuYnJvd3Nlci5lc20uanMubWFwXG4iLCJmdW5jdGlvbiBfdHlwZW9mKG8pIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIHJldHVybiBtb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiB0eXBlb2YgbztcbiAgfSA6IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgX3R5cGVvZihvKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbmZ1bmN0aW9uIHRvUHJpbWl0aXZlKHQsIHIpIHtcbiAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7XG4gIHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xuICBpZiAodm9pZCAwICE9PSBlKSB7XG4gICAgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7XG4gICAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpO1xuICB9XG4gIHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJpbWl0aXZlLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZShcIi4vdG9QcmltaXRpdmUuanNcIik7XG5mdW5jdGlvbiB0b1Byb3BlcnR5S2V5KHQpIHtcbiAgdmFyIGkgPSB0b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTtcbiAgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjtcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9Qcm9wZXJ0eUtleSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZShcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiKTtcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0KSB7XG4gIHJldHVybiAociA9IHRvUHJvcGVydHlLZXkocikpIGluIGUgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwge1xuICAgIHZhbHVlOiB0LFxuICAgIGVudW1lcmFibGU6ICEwLFxuICAgIGNvbmZpZ3VyYWJsZTogITAsXG4gICAgd3JpdGFibGU6ICEwXG4gIH0pIDogZVtyXSA9IHQsIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9kZWZpbmVQcm9wZXJ0eSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoXCIuL2RlZmluZVByb3BlcnR5LmpzXCIpO1xuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7XG4gIHZhciB0ID0gT2JqZWN0LmtleXMoZSk7XG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO1xuICAgIHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikge1xuICAgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTtcbiAgICB9KSksIHQucHVzaC5hcHBseSh0LCBvKTtcbiAgfVxuICByZXR1cm4gdDtcbn1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQyKGUpIHtcbiAgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHtcbiAgICB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307XG4gICAgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHtcbiAgICAgIGRlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pO1xuICAgIH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfb2JqZWN0U3ByZWFkMiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gcjtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5V2l0aEhvbGVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHtcbiAgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTtcbiAgaWYgKG51bGwgIT0gdCkge1xuICAgIHZhciBlLFxuICAgICAgbixcbiAgICAgIGksXG4gICAgICB1LFxuICAgICAgYSA9IFtdLFxuICAgICAgZiA9ICEwLFxuICAgICAgbyA9ICExO1xuICAgIHRyeSB7XG4gICAgICBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7XG4gICAgICAgIGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjtcbiAgICAgICAgZiA9ICExO1xuICAgICAgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApO1xuICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgIG8gPSAhMCwgbiA9IHI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChvKSB0aHJvdyBuO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfaXRlcmFibGVUb0FycmF5TGltaXQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShyLCBhKSB7XG4gIChudWxsID09IGEgfHwgYSA+IHIubGVuZ3RoKSAmJiAoYSA9IHIubGVuZ3RoKTtcbiAgZm9yICh2YXIgZSA9IDAsIG4gPSBBcnJheShhKTsgZSA8IGE7IGUrKykgbltlXSA9IHJbZV07XG4gIHJldHVybiBuO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlMaWtlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheUxpa2VUb0FycmF5ID0gcmVxdWlyZShcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiKTtcbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBhKSB7XG4gIGlmIChyKSB7XG4gICAgaWYgKFwic3RyaW5nXCIgPT0gdHlwZW9mIHIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIsIGEpO1xuICAgIHZhciB0ID0ge30udG9TdHJpbmcuY2FsbChyKS5zbGljZSg4LCAtMSk7XG4gICAgcmV0dXJuIFwiT2JqZWN0XCIgPT09IHQgJiYgci5jb25zdHJ1Y3RvciAmJiAodCA9IHIuY29uc3RydWN0b3IubmFtZSksIFwiTWFwXCIgPT09IHQgfHwgXCJTZXRcIiA9PT0gdCA/IEFycmF5LmZyb20ocikgOiBcIkFyZ3VtZW50c1wiID09PSB0IHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpID8gYXJyYXlMaWtlVG9BcnJheShyLCBhKSA6IHZvaWQgMDtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVSZXN0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5V2l0aEhvbGVzID0gcmVxdWlyZShcIi4vYXJyYXlXaXRoSG9sZXMuanNcIik7XG52YXIgaXRlcmFibGVUb0FycmF5TGltaXQgPSByZXF1aXJlKFwiLi9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qc1wiKTtcbnZhciB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIG5vbkl0ZXJhYmxlUmVzdCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlUmVzdC5qc1wiKTtcbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KHIsIGUpIHtcbiAgcmV0dXJuIGFycmF5V2l0aEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGUpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGUpIHx8IG5vbkl0ZXJhYmxlUmVzdCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfc2xpY2VkVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHIsIGUpIHtcbiAgaWYgKG51bGwgPT0gcikgcmV0dXJuIHt9O1xuICB2YXIgdCA9IHt9O1xuICBmb3IgKHZhciBuIGluIHIpIGlmICh7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsIG4pKSB7XG4gICAgaWYgKGUuaW5jbHVkZXMobikpIGNvbnRpbnVlO1xuICAgIHRbbl0gPSByW25dO1xuICB9XG4gIHJldHVybiB0O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlID0gcmVxdWlyZShcIi4vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qc1wiKTtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhlLCB0KSB7XG4gIGlmIChudWxsID09IGUpIHJldHVybiB7fTtcbiAgdmFyIG8sXG4gICAgcixcbiAgICBpID0gb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShlLCB0KTtcbiAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICB2YXIgcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7XG4gICAgZm9yIChyID0gMDsgciA8IHMubGVuZ3RoOyByKyspIG8gPSBzW3JdLCB0LmluY2x1ZGVzKG8pIHx8IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSwgbykgJiYgKGlbb10gPSBlW29dKTtcbiAgfVxuICByZXR1cm4gaTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgX29iamVjdFNwcmVhZCA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0U3ByZWFkMicpO1xudmFyIF9zbGljZWRUb0FycmF5ID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5Jyk7XG52YXIgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllcycpO1xudmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIF9leGNsdWRlZCA9IFtcImRlZmF1bHRJbnB1dFZhbHVlXCIsIFwiZGVmYXVsdE1lbnVJc09wZW5cIiwgXCJkZWZhdWx0VmFsdWVcIiwgXCJpbnB1dFZhbHVlXCIsIFwibWVudUlzT3BlblwiLCBcIm9uQ2hhbmdlXCIsIFwib25JbnB1dENoYW5nZVwiLCBcIm9uTWVudUNsb3NlXCIsIFwib25NZW51T3BlblwiLCBcInZhbHVlXCJdO1xuZnVuY3Rpb24gdXNlU3RhdGVNYW5hZ2VyKF9yZWYpIHtcbiAgdmFyIF9yZWYkZGVmYXVsdElucHV0VmFsdSA9IF9yZWYuZGVmYXVsdElucHV0VmFsdWUsXG4gICAgZGVmYXVsdElucHV0VmFsdWUgPSBfcmVmJGRlZmF1bHRJbnB1dFZhbHUgPT09IHZvaWQgMCA/ICcnIDogX3JlZiRkZWZhdWx0SW5wdXRWYWx1LFxuICAgIF9yZWYkZGVmYXVsdE1lbnVJc09wZSA9IF9yZWYuZGVmYXVsdE1lbnVJc09wZW4sXG4gICAgZGVmYXVsdE1lbnVJc09wZW4gPSBfcmVmJGRlZmF1bHRNZW51SXNPcGUgPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZiRkZWZhdWx0TWVudUlzT3BlLFxuICAgIF9yZWYkZGVmYXVsdFZhbHVlID0gX3JlZi5kZWZhdWx0VmFsdWUsXG4gICAgZGVmYXVsdFZhbHVlID0gX3JlZiRkZWZhdWx0VmFsdWUgPT09IHZvaWQgMCA/IG51bGwgOiBfcmVmJGRlZmF1bHRWYWx1ZSxcbiAgICBwcm9wc0lucHV0VmFsdWUgPSBfcmVmLmlucHV0VmFsdWUsXG4gICAgcHJvcHNNZW51SXNPcGVuID0gX3JlZi5tZW51SXNPcGVuLFxuICAgIHByb3BzT25DaGFuZ2UgPSBfcmVmLm9uQ2hhbmdlLFxuICAgIHByb3BzT25JbnB1dENoYW5nZSA9IF9yZWYub25JbnB1dENoYW5nZSxcbiAgICBwcm9wc09uTWVudUNsb3NlID0gX3JlZi5vbk1lbnVDbG9zZSxcbiAgICBwcm9wc09uTWVudU9wZW4gPSBfcmVmLm9uTWVudU9wZW4sXG4gICAgcHJvcHNWYWx1ZSA9IF9yZWYudmFsdWUsXG4gICAgcmVzdFNlbGVjdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIF9leGNsdWRlZCk7XG4gIHZhciBfdXNlU3RhdGUgPSBSZWFjdC51c2VTdGF0ZShwcm9wc0lucHV0VmFsdWUgIT09IHVuZGVmaW5lZCA/IHByb3BzSW5wdXRWYWx1ZSA6IGRlZmF1bHRJbnB1dFZhbHVlKSxcbiAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICBzdGF0ZUlucHV0VmFsdWUgPSBfdXNlU3RhdGUyWzBdLFxuICAgIHNldFN0YXRlSW5wdXRWYWx1ZSA9IF91c2VTdGF0ZTJbMV07XG4gIHZhciBfdXNlU3RhdGUzID0gUmVhY3QudXNlU3RhdGUocHJvcHNNZW51SXNPcGVuICE9PSB1bmRlZmluZWQgPyBwcm9wc01lbnVJc09wZW4gOiBkZWZhdWx0TWVudUlzT3BlbiksXG4gICAgX3VzZVN0YXRlNCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTMsIDIpLFxuICAgIHN0YXRlTWVudUlzT3BlbiA9IF91c2VTdGF0ZTRbMF0sXG4gICAgc2V0U3RhdGVNZW51SXNPcGVuID0gX3VzZVN0YXRlNFsxXTtcbiAgdmFyIF91c2VTdGF0ZTUgPSBSZWFjdC51c2VTdGF0ZShwcm9wc1ZhbHVlICE9PSB1bmRlZmluZWQgPyBwcm9wc1ZhbHVlIDogZGVmYXVsdFZhbHVlKSxcbiAgICBfdXNlU3RhdGU2ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlNSwgMiksXG4gICAgc3RhdGVWYWx1ZSA9IF91c2VTdGF0ZTZbMF0sXG4gICAgc2V0U3RhdGVWYWx1ZSA9IF91c2VTdGF0ZTZbMV07XG4gIHZhciBvbkNoYW5nZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICh2YWx1ZSwgYWN0aW9uTWV0YSkge1xuICAgIGlmICh0eXBlb2YgcHJvcHNPbkNoYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvcHNPbkNoYW5nZSh2YWx1ZSwgYWN0aW9uTWV0YSk7XG4gICAgfVxuICAgIHNldFN0YXRlVmFsdWUodmFsdWUpO1xuICB9LCBbcHJvcHNPbkNoYW5nZV0pO1xuICB2YXIgb25JbnB1dENoYW5nZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICh2YWx1ZSwgYWN0aW9uTWV0YSkge1xuICAgIHZhciBuZXdWYWx1ZTtcbiAgICBpZiAodHlwZW9mIHByb3BzT25JbnB1dENoYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbmV3VmFsdWUgPSBwcm9wc09uSW5wdXRDaGFuZ2UodmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgIH1cbiAgICBzZXRTdGF0ZUlucHV0VmFsdWUobmV3VmFsdWUgIT09IHVuZGVmaW5lZCA/IG5ld1ZhbHVlIDogdmFsdWUpO1xuICB9LCBbcHJvcHNPbklucHV0Q2hhbmdlXSk7XG4gIHZhciBvbk1lbnVPcGVuID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgcHJvcHNPbk1lbnVPcGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9wc09uTWVudU9wZW4oKTtcbiAgICB9XG4gICAgc2V0U3RhdGVNZW51SXNPcGVuKHRydWUpO1xuICB9LCBbcHJvcHNPbk1lbnVPcGVuXSk7XG4gIHZhciBvbk1lbnVDbG9zZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIHByb3BzT25NZW51Q2xvc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHByb3BzT25NZW51Q2xvc2UoKTtcbiAgICB9XG4gICAgc2V0U3RhdGVNZW51SXNPcGVuKGZhbHNlKTtcbiAgfSwgW3Byb3BzT25NZW51Q2xvc2VdKTtcbiAgdmFyIGlucHV0VmFsdWUgPSBwcm9wc0lucHV0VmFsdWUgIT09IHVuZGVmaW5lZCA/IHByb3BzSW5wdXRWYWx1ZSA6IHN0YXRlSW5wdXRWYWx1ZTtcbiAgdmFyIG1lbnVJc09wZW4gPSBwcm9wc01lbnVJc09wZW4gIT09IHVuZGVmaW5lZCA/IHByb3BzTWVudUlzT3BlbiA6IHN0YXRlTWVudUlzT3BlbjtcbiAgdmFyIHZhbHVlID0gcHJvcHNWYWx1ZSAhPT0gdW5kZWZpbmVkID8gcHJvcHNWYWx1ZSA6IHN0YXRlVmFsdWU7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RTZWxlY3RQcm9wcyksIHt9LCB7XG4gICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZSxcbiAgICBtZW51SXNPcGVuOiBtZW51SXNPcGVuLFxuICAgIG9uQ2hhbmdlOiBvbkNoYW5nZSxcbiAgICBvbklucHV0Q2hhbmdlOiBvbklucHV0Q2hhbmdlLFxuICAgIG9uTWVudUNsb3NlOiBvbk1lbnVDbG9zZSxcbiAgICBvbk1lbnVPcGVuOiBvbk1lbnVPcGVuLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9KTtcbn1cblxuZXhwb3J0cy51c2VTdGF0ZU1hbmFnZXIgPSB1c2VTdGF0ZU1hbmFnZXI7XG4iLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgcmV0dXJuIG1vZHVsZS5leHBvcnRzID0gX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAobikge1xuICAgIGZvciAodmFyIGUgPSAxOyBlIDwgYXJndW1lbnRzLmxlbmd0aDsgZSsrKSB7XG4gICAgICB2YXIgdCA9IGFyZ3VtZW50c1tlXTtcbiAgICAgIGZvciAodmFyIHIgaW4gdCkgKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsIHIpICYmIChuW3JdID0gdFtyXSk7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIF9leHRlbmRzLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9leHRlbmRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGEsIG4pIHtcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIG4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY2xhc3NDYWxsQ2hlY2ssIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoXCIuL3RvUHJvcGVydHlLZXkuanNcIik7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XG4gIGZvciAodmFyIHQgPSAwOyB0IDwgci5sZW5ndGg7IHQrKykge1xuICAgIHZhciBvID0gclt0XTtcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFwidmFsdWVcIiBpbiBvICYmIChvLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdG9Qcm9wZXJ0eUtleShvLmtleSksIG8pO1xuICB9XG59XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoZSwgciwgdCkge1xuICByZXR1cm4gciAmJiBfZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSwgciksIHQgJiYgX2RlZmluZVByb3BlcnRpZXMoZSwgdCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY3JlYXRlQ2xhc3MsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YodCwgZSkge1xuICByZXR1cm4gbW9kdWxlLmV4cG9ydHMgPSBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gPSBlLCB0O1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIF9zZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4vc2V0UHJvdG90eXBlT2YuanNcIik7XG5mdW5jdGlvbiBfaW5oZXJpdHModCwgZSkge1xuICBpZiAoXCJmdW5jdGlvblwiICE9IHR5cGVvZiBlICYmIG51bGwgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGUgJiYgZS5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHQsXG4gICAgICB3cml0YWJsZTogITAsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfVxuICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogITFcbiAgfSksIGUgJiYgc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pbmhlcml0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZih0KSB7XG4gIHJldHVybiBtb2R1bGUuZXhwb3J0cyA9IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgX2dldFByb3RvdHlwZU9mKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZ2V0UHJvdG90eXBlT2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICB0cnkge1xuICAgIHZhciB0ID0gIUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTtcbiAgfSBjYXRjaCAodCkge31cbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICAgIHJldHVybiAhIXQ7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cykoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoZSkge1xuICBpZiAodm9pZCAwID09PSBlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIHJldHVybiBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xudmFyIGFzc2VydFRoaXNJbml0aWFsaXplZCA9IHJlcXVpcmUoXCIuL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qc1wiKTtcbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIGUpIHtcbiAgaWYgKGUgJiYgKFwib2JqZWN0XCIgPT0gX3R5cGVvZihlKSB8fCBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGUpKSByZXR1cm4gZTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICByZXR1cm4gYXNzZXJ0VGhpc0luaXRpYWxpemVkKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuL2dldFByb3RvdHlwZU9mLmpzXCIpO1xudmFyIGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IHJlcXVpcmUoXCIuL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qc1wiKTtcbnZhciBwb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuID0gcmVxdWlyZShcIi4vcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qc1wiKTtcbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcih0KSB7XG4gIHZhciByID0gaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGUsXG4gICAgICBvID0gZ2V0UHJvdG90eXBlT2YodCk7XG4gICAgaWYgKHIpIHtcbiAgICAgIHZhciBzID0gZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7XG4gICAgICBlID0gUmVmbGVjdC5jb25zdHJ1Y3QobywgYXJndW1lbnRzLCBzKTtcbiAgICB9IGVsc2UgZSA9IG8uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICByZXR1cm4gcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBlKTtcbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NyZWF0ZVN1cGVyLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRob3V0SG9sZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KHIpIHtcbiAgaWYgKFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiBudWxsICE9IHJbU3ltYm9sLml0ZXJhdG9yXSB8fCBudWxsICE9IHJbXCJAQGl0ZXJhdG9yXCJdKSByZXR1cm4gQXJyYXkuZnJvbShyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2l0ZXJhYmxlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9ub25JdGVyYWJsZVNwcmVhZCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheVdpdGhvdXRIb2xlcyA9IHJlcXVpcmUoXCIuL2FycmF5V2l0aG91dEhvbGVzLmpzXCIpO1xudmFyIGl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2l0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIG5vbkl0ZXJhYmxlU3ByZWFkID0gcmVxdWlyZShcIi4vbm9uSXRlcmFibGVTcHJlYWQuanNcIik7XG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkocikge1xuICByZXR1cm4gYXJyYXlXaXRob3V0SG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5KHIpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIpIHx8IG5vbkl0ZXJhYmxlU3ByZWFkKCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF90b0NvbnN1bWFibGVBcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF90YWdnZWRUZW1wbGF0ZUxpdGVyYWwoZSwgdCkge1xuICByZXR1cm4gdCB8fCAodCA9IGUuc2xpY2UoMCkpLCBPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIHtcbiAgICByYXc6IHtcbiAgICAgIHZhbHVlOiBPYmplY3QuZnJlZXplKHQpXG4gICAgfVxuICB9KSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF90YWdnZWRUZW1wbGF0ZUxpdGVyYWwsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJpbXBvcnQgeyByZWN0VG9DbGllbnRSZWN0LCBkZXRlY3RPdmVyZmxvdyBhcyBkZXRlY3RPdmVyZmxvdyQxLCBvZmZzZXQgYXMgb2Zmc2V0JDEsIGF1dG9QbGFjZW1lbnQgYXMgYXV0b1BsYWNlbWVudCQxLCBzaGlmdCBhcyBzaGlmdCQxLCBmbGlwIGFzIGZsaXAkMSwgc2l6ZSBhcyBzaXplJDEsIGhpZGUgYXMgaGlkZSQxLCBhcnJvdyBhcyBhcnJvdyQxLCBpbmxpbmUgYXMgaW5saW5lJDEsIGxpbWl0U2hpZnQgYXMgbGltaXRTaGlmdCQxLCBjb21wdXRlUG9zaXRpb24gYXMgY29tcHV0ZVBvc2l0aW9uJDEgfSBmcm9tICdAZmxvYXRpbmctdWkvY29yZSc7XG5pbXBvcnQgeyByb3VuZCwgY3JlYXRlQ29vcmRzLCBtYXgsIG1pbiwgZmxvb3IgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgaXNIVE1MRWxlbWVudCwgaXNFbGVtZW50LCBnZXRXaW5kb3csIGlzV2ViS2l0LCBnZXRGcmFtZUVsZW1lbnQsIGdldE5vZGVTY3JvbGwsIGdldERvY3VtZW50RWxlbWVudCwgaXNUb3BMYXllciwgZ2V0Tm9kZU5hbWUsIGlzT3ZlcmZsb3dFbGVtZW50LCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgaXNMYXN0VHJhdmVyc2FibGVOb2RlLCBpc0NvbnRhaW5pbmdCbG9jaywgaXNUYWJsZUVsZW1lbnQsIGdldENvbnRhaW5pbmdCbG9jayB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuZXhwb3J0IHsgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcblxuZnVuY3Rpb24gZ2V0Q3NzRGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIC8vIEluIHRlc3RpbmcgZW52aXJvbm1lbnRzLCB0aGUgYHdpZHRoYCBhbmQgYGhlaWdodGAgcHJvcGVydGllcyBhcmUgZW1wdHlcbiAgLy8gc3RyaW5ncyBmb3IgU1ZHIGVsZW1lbnRzLCByZXR1cm5pbmcgTmFOLiBGYWxsYmFjayB0byBgMGAgaW4gdGhpcyBjYXNlLlxuICBsZXQgd2lkdGggPSBwYXJzZUZsb2F0KGNzcy53aWR0aCkgfHwgMDtcbiAgbGV0IGhlaWdodCA9IHBhcnNlRmxvYXQoY3NzLmhlaWdodCkgfHwgMDtcbiAgY29uc3QgaGFzT2Zmc2V0ID0gaXNIVE1MRWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgb2Zmc2V0V2lkdGggPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldFdpZHRoIDogd2lkdGg7XG4gIGNvbnN0IG9mZnNldEhlaWdodCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogaGVpZ2h0O1xuICBjb25zdCBzaG91bGRGYWxsYmFjayA9IHJvdW5kKHdpZHRoKSAhPT0gb2Zmc2V0V2lkdGggfHwgcm91bmQoaGVpZ2h0KSAhPT0gb2Zmc2V0SGVpZ2h0O1xuICBpZiAoc2hvdWxkRmFsbGJhY2spIHtcbiAgICB3aWR0aCA9IG9mZnNldFdpZHRoO1xuICAgIGhlaWdodCA9IG9mZnNldEhlaWdodDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkOiBzaG91bGRGYWxsYmFja1xuICB9O1xufVxuXG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuICFpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50LmNvbnRleHRFbGVtZW50IDogZWxlbWVudDtcbn1cblxuZnVuY3Rpb24gZ2V0U2NhbGUoZWxlbWVudCkge1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGRvbUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNvb3JkcygxKTtcbiAgfVxuICBjb25zdCByZWN0ID0gZG9tRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkXG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGRvbUVsZW1lbnQpO1xuICBsZXQgeCA9ICgkID8gcm91bmQocmVjdC53aWR0aCkgOiByZWN0LndpZHRoKSAvIHdpZHRoO1xuICBsZXQgeSA9ICgkID8gcm91bmQocmVjdC5oZWlnaHQpIDogcmVjdC5oZWlnaHQpIC8gaGVpZ2h0O1xuXG4gIC8vIDAsIE5hTiwgb3IgSW5maW5pdHkgc2hvdWxkIGFsd2F5cyBmYWxsYmFjayB0byAxLlxuXG4gIGlmICgheCB8fCAhTnVtYmVyLmlzRmluaXRlKHgpKSB7XG4gICAgeCA9IDE7XG4gIH1cbiAgaWYgKCF5IHx8ICFOdW1iZXIuaXNGaW5pdGUoeSkpIHtcbiAgICB5ID0gMTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5jb25zdCBub09mZnNldHMgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29vcmRzKDApO1xuZnVuY3Rpb24gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKCFpc1dlYktpdCgpIHx8ICF3aW4udmlzdWFsVmlld3BvcnQpIHtcbiAgICByZXR1cm4gbm9PZmZzZXRzO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQsXG4gICAgeTogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcFxuICB9O1xufVxuZnVuY3Rpb24gc2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyhlbGVtZW50LCBpc0ZpeGVkLCBmbG9hdGluZ09mZnNldFBhcmVudCkge1xuICBpZiAoaXNGaXhlZCA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZCA9IGZhbHNlO1xuICB9XG4gIGlmICghZmxvYXRpbmdPZmZzZXRQYXJlbnQgfHwgaXNGaXhlZCAmJiBmbG9hdGluZ09mZnNldFBhcmVudCAhPT0gZ2V0V2luZG93KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBpc0ZpeGVkO1xufVxuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGxldCBzY2FsZSA9IGNyZWF0ZUNvb3JkcygxKTtcbiAgaWYgKGluY2x1ZGVTY2FsZSkge1xuICAgIGlmIChvZmZzZXRQYXJlbnQpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUoZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSA/IGdldFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGxldCB4ID0gKGNsaWVudFJlY3QubGVmdCArIHZpc3VhbE9mZnNldHMueCkgLyBzY2FsZS54O1xuICBsZXQgeSA9IChjbGllbnRSZWN0LnRvcCArIHZpc3VhbE9mZnNldHMueSkgLyBzY2FsZS55O1xuICBsZXQgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGUueDtcbiAgbGV0IGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGUueTtcbiAgaWYgKGRvbUVsZW1lbnQpIHtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZG9tRWxlbWVudCk7XG4gICAgY29uc3Qgb2Zmc2V0V2luID0gb2Zmc2V0UGFyZW50ICYmIGlzRWxlbWVudChvZmZzZXRQYXJlbnQpID8gZ2V0V2luZG93KG9mZnNldFBhcmVudCkgOiBvZmZzZXRQYXJlbnQ7XG4gICAgbGV0IGN1cnJlbnRXaW4gPSB3aW47XG4gICAgbGV0IGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgd2hpbGUgKGN1cnJlbnRJRnJhbWUgJiYgb2Zmc2V0UGFyZW50ICYmIG9mZnNldFdpbiAhPT0gY3VycmVudFdpbikge1xuICAgICAgY29uc3QgaWZyYW1lU2NhbGUgPSBnZXRTY2FsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGlmcmFtZVJlY3QgPSBjdXJyZW50SUZyYW1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGxlZnQgPSBpZnJhbWVSZWN0LmxlZnQgKyAoY3VycmVudElGcmFtZS5jbGllbnRMZWZ0ICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ0xlZnQpKSAqIGlmcmFtZVNjYWxlLng7XG4gICAgICBjb25zdCB0b3AgPSBpZnJhbWVSZWN0LnRvcCArIChjdXJyZW50SUZyYW1lLmNsaWVudFRvcCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdUb3ApKSAqIGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICB5ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB3aWR0aCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgaGVpZ2h0ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICs9IGxlZnQ7XG4gICAgICB5ICs9IHRvcDtcbiAgICAgIGN1cnJlbnRXaW4gPSBnZXRXaW5kb3coY3VycmVudElGcmFtZSk7XG4gICAgICBjdXJyZW50SUZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGN1cnJlbnRXaW4pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdCh7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9KTtcbn1cblxuLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuLy8gaW5jb3JyZWN0IGZvciBSVEwuXG5mdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQsIHJlY3QpIHtcbiAgY29uc3QgbGVmdFNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbiAgaWYgKCFyZWN0KSB7XG4gICAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBsZWZ0U2Nyb2xsO1xuICB9XG4gIHJldHVybiByZWN0LmxlZnQgKyBsZWZ0U2Nyb2xsO1xufVxuXG5mdW5jdGlvbiBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCBpZ25vcmVTY3JvbGxiYXJYKSB7XG4gIGlmIChpZ25vcmVTY3JvbGxiYXJYID09PSB2b2lkIDApIHtcbiAgICBpZ25vcmVTY3JvbGxiYXJYID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgaHRtbFJlY3QgPSBkb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHggPSBodG1sUmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSAoaWdub3JlU2Nyb2xsYmFyWCA/IDAgOlxuICAvLyBSVEwgPGJvZHk+IHNjcm9sbGJhci5cbiAgZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQsIGh0bWxSZWN0KSk7XG4gIGNvbnN0IHkgPSBodG1sUmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wO1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudHMsXG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IHRvcExheWVyID0gZWxlbWVudHMgPyBpc1RvcExheWVyKGVsZW1lbnRzLmZsb2F0aW5nKSA6IGZhbHNlO1xuICBpZiAob2Zmc2V0UGFyZW50ID09PSBkb2N1bWVudEVsZW1lbnQgfHwgdG9wTGF5ZXIgJiYgaXNGaXhlZCkge1xuICAgIHJldHVybiByZWN0O1xuICB9XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCk7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCwgdHJ1ZSkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggKiBzY2FsZS54LFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHQgKiBzY2FsZS55LFxuICAgIHg6IHJlY3QueCAqIHNjYWxlLnggLSBzY3JvbGwuc2Nyb2xsTGVmdCAqIHNjYWxlLnggKyBvZmZzZXRzLnggKyBodG1sT2Zmc2V0LngsXG4gICAgeTogcmVjdC55ICogc2NhbGUueSAtIHNjcm9sbC5zY3JvbGxUb3AgKiBzY2FsZS55ICsgb2Zmc2V0cy55ICsgaHRtbE9mZnNldC55XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RzKGVsZW1lbnQpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5nZXRDbGllbnRSZWN0cygpKTtcbn1cblxuLy8gR2V0cyB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHNjcm9sbGFibGUgZG9jdW1lbnQgYXJlYSwgZXZlbiBleHRlbmRpbmcgb3V0c2lkZVxuLy8gb2YgdGhlIGA8aHRtbD5gIGFuZCBgPGJvZHk+YCByZWN0IGJvdW5kcyBpZiBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZS5cbmZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCk7XG4gIGNvbnN0IGJvZHkgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgY29uc3Qgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keS5zY3JvbGxXaWR0aCwgYm9keS5jbGllbnRXaWR0aCk7XG4gIGNvbnN0IGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkuc2Nyb2xsSGVpZ2h0LCBib2R5LmNsaWVudEhlaWdodCk7XG4gIGxldCB4ID0gLXNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgY29uc3QgeSA9IC1zY3JvbGwuc2Nyb2xsVG9wO1xuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5KS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keS5jbGllbnRXaWR0aCkgLSB3aWR0aDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3QgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIGxldCB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIGxldCBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgbGV0IHggPSAwO1xuICBsZXQgeSA9IDA7XG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIGNvbnN0IHZpc3VhbFZpZXdwb3J0QmFzZWQgPSBpc1dlYktpdCgpO1xuICAgIGlmICghdmlzdWFsVmlld3BvcnRCYXNlZCB8fCB2aXN1YWxWaWV3cG9ydEJhc2VkICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG4vLyBSZXR1cm5zIHRoZSBpbm5lciBjbGllbnQgcmVjdCwgc3VidHJhY3Rpbmcgc2Nyb2xsYmFycyBpZiBwcmVzZW50LlxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIGNvbnN0IHRvcCA9IGNsaWVudFJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIGNvbnN0IGxlZnQgPSBjbGllbnRSZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIGNvbnN0IHNjYWxlID0gaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldFNjYWxlKGVsZW1lbnQpIDogY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGggKiBzY2FsZS54O1xuICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodCAqIHNjYWxlLnk7XG4gIGNvbnN0IHggPSBsZWZ0ICogc2NhbGUueDtcbiAgY29uc3QgeSA9IHRvcCAqIHNjYWxlLnk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSB7XG4gIGxldCByZWN0O1xuICBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ3ZpZXdwb3J0Jykge1xuICAgIHJlY3QgPSBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpO1xuICB9IGVsc2UgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICdkb2N1bWVudCcpIHtcbiAgICByZWN0ID0gZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSk7XG4gIH0gZWxzZSBpZiAoaXNFbGVtZW50KGNsaXBwaW5nQW5jZXN0b3IpKSB7XG4gICAgcmVjdCA9IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2aXN1YWxPZmZzZXRzID0gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KTtcbiAgICByZWN0ID0ge1xuICAgICAgeDogY2xpcHBpbmdBbmNlc3Rvci54IC0gdmlzdWFsT2Zmc2V0cy54LFxuICAgICAgeTogY2xpcHBpbmdBbmNlc3Rvci55IC0gdmlzdWFsT2Zmc2V0cy55LFxuICAgICAgd2lkdGg6IGNsaXBwaW5nQW5jZXN0b3Iud2lkdGgsXG4gICAgICBoZWlnaHQ6IGNsaXBwaW5nQW5jZXN0b3IuaGVpZ2h0XG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdChyZWN0KTtcbn1cbmZ1bmN0aW9uIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBzdG9wTm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgaWYgKHBhcmVudE5vZGUgPT09IHN0b3BOb2RlIHx8ICFpc0VsZW1lbnQocGFyZW50Tm9kZSkgfHwgaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKHBhcmVudE5vZGUpLnBvc2l0aW9uID09PSAnZml4ZWQnIHx8IGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihwYXJlbnROb2RlLCBzdG9wTm9kZSk7XG59XG5cbi8vIEEgXCJjbGlwcGluZyBhbmNlc3RvclwiIGlzIGFuIGBvdmVyZmxvd2AgZWxlbWVudCB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgY2hpbGQgZWxlbWVudHMuIFRoaXMgcmV0dXJucyBhbGwgY2xpcHBpbmcgYW5jZXN0b3JzXG4vLyBvZiB0aGUgZ2l2ZW4gZWxlbWVudCB1cCB0aGUgdHJlZS5cbmZ1bmN0aW9uIGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCBjYWNoZSkge1xuICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZS5nZXQoZWxlbWVudCk7XG4gIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICB9XG4gIGxldCByZXN1bHQgPSBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50LCBbXSwgZmFsc2UpLmZpbHRlcihlbCA9PiBpc0VsZW1lbnQoZWwpICYmIGdldE5vZGVOYW1lKGVsKSAhPT0gJ2JvZHknKTtcbiAgbGV0IGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgY29uc3QgZWxlbWVudElzRml4ZWQgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnO1xuICBsZXQgY3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/IGdldFBhcmVudE5vZGUoZWxlbWVudCkgOiBlbGVtZW50O1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHdoaWxlIChpc0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpO1xuICAgIGNvbnN0IGN1cnJlbnROb2RlSXNDb250YWluaW5nID0gaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpO1xuICAgIGlmICghY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICAgIH1cbiAgICBjb25zdCBzaG91bGREcm9wQ3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiAhY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgOiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycgJiYgISFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSAmJiBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5jbHVkZXMoY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUucG9zaXRpb24pIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIGN1cnJlbnROb2RlKTtcbiAgICBpZiAoc2hvdWxkRHJvcEN1cnJlbnROb2RlKSB7XG4gICAgICAvLyBEcm9wIG5vbi1jb250YWluaW5nIGJsb2Nrcy5cbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoYW5jZXN0b3IgPT4gYW5jZXN0b3IgIT09IGN1cnJlbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVjb3JkIGxhc3QgY29udGFpbmluZyBibG9jayBmb3IgbmV4dCBpdGVyYXRpb24uXG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IGNvbXB1dGVkU3R5bGU7XG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gIH1cbiAgY2FjaGUuc2V0KGVsZW1lbnQsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEdldHMgdGhlIG1heGltdW0gYXJlYSB0aGF0IHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZHVlIHRvIGFueSBudW1iZXIgb2Zcbi8vIGNsaXBwaW5nIGFuY2VzdG9ycy5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudCxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGVsZW1lbnRDbGlwcGluZ0FuY2VzdG9ycyA9IGJvdW5kYXJ5ID09PSAnY2xpcHBpbmdBbmNlc3RvcnMnID8gaXNUb3BMYXllcihlbGVtZW50KSA/IFtdIDogZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIHRoaXMuX2MpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgY29uc3QgY2xpcHBpbmdBbmNlc3RvcnMgPSBbLi4uZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzLCByb290Qm91bmRhcnldO1xuICBjb25zdCBmaXJzdENsaXBwaW5nQW5jZXN0b3IgPSBjbGlwcGluZ0FuY2VzdG9yc1swXTtcbiAgY29uc3QgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdBbmNlc3RvcnMucmVkdWNlKChhY2NSZWN0LCBjbGlwcGluZ0FuY2VzdG9yKSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgaGVpZ2h0OiBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcCxcbiAgICB4OiBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICB5OiBjbGlwcGluZ1JlY3QudG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChlbGVtZW50LCBvZmZzZXRQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgY29uc3Qgb2Zmc2V0cyA9IGNyZWF0ZUNvb3JkcygwKTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICAvLyBJZiB0aGUgPGJvZHk+IHNjcm9sbGJhciBhcHBlYXJzIG9uIHRoZSBsZWZ0IChlLmcuIFJUTCBzeXN0ZW1zKS4gVXNlXG4gICAgICAvLyBGaXJlZm94IHdpdGggbGF5b3V0LnNjcm9sbGJhci5zaWRlID0gMyBpbiBhYm91dDpjb25maWcgdG8gdGVzdCB0aGlzLlxuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCBodG1sT2Zmc2V0ID0gZG9jdW1lbnRFbGVtZW50ICYmICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCA/IGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwpIDogY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCB4ID0gcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLnggLSBodG1sT2Zmc2V0Lng7XG4gIGNvbnN0IHkgPSByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnkgLSBodG1sT2Zmc2V0Lnk7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNTdGF0aWNQb3NpdGlvbmVkKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnO1xufVxuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHBvbHlmaWxsKSB7XG4gICAgcmV0dXJuIHBvbHlmaWxsKGVsZW1lbnQpO1xuICB9XG4gIGxldCByYXdPZmZzZXRQYXJlbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDtcblxuICAvLyBGaXJlZm94IHJldHVybnMgdGhlIDxodG1sPiBlbGVtZW50IGFzIHRoZSBvZmZzZXRQYXJlbnQgaWYgaXQncyBub24tc3RhdGljLFxuICAvLyB3aGlsZSBDaHJvbWUgYW5kIFNhZmFyaSByZXR1cm4gdGhlIDxib2R5PiBlbGVtZW50LiBUaGUgPGJvZHk+IGVsZW1lbnQgbXVzdFxuICAvLyBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlIGNvcnJlY3QgY2FsY3VsYXRpb25zIGV2ZW4gaWYgdGhlIDxodG1sPiBlbGVtZW50IGlzXG4gIC8vIG5vbi1zdGF0aWMuXG4gIGlmIChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgPT09IHJhd09mZnNldFBhcmVudCkge1xuICAgIHJhd09mZnNldFBhcmVudCA9IHJhd09mZnNldFBhcmVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cbiAgcmV0dXJuIHJhd09mZnNldFBhcmVudDtcbn1cblxuLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cbmZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmIChpc1RvcExheWVyKGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBsZXQgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICB3aGlsZSAoc3ZnT2Zmc2V0UGFyZW50ICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgaWYgKGlzRWxlbWVudChzdmdPZmZzZXRQYXJlbnQpICYmICFpc1N0YXRpY1Bvc2l0aW9uZWQoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgICByZXR1cm4gc3ZnT2Zmc2V0UGFyZW50O1xuICAgICAgfVxuICAgICAgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShzdmdPZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGxldCBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKTtcbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQsIHBvbHlmaWxsKTtcbiAgfVxuICBpZiAob2Zmc2V0UGFyZW50ICYmIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpICYmICFpc0NvbnRhaW5pbmdCbG9jayhvZmZzZXRQYXJlbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW47XG59XG5cbmNvbnN0IGdldEVsZW1lbnRSZWN0cyA9IGFzeW5jIGZ1bmN0aW9uIChkYXRhKSB7XG4gIGNvbnN0IGdldE9mZnNldFBhcmVudEZuID0gdGhpcy5nZXRPZmZzZXRQYXJlbnQgfHwgZ2V0T2Zmc2V0UGFyZW50O1xuICBjb25zdCBnZXREaW1lbnNpb25zRm4gPSB0aGlzLmdldERpbWVuc2lvbnM7XG4gIGNvbnN0IGZsb2F0aW5nRGltZW5zaW9ucyA9IGF3YWl0IGdldERpbWVuc2lvbnNGbihkYXRhLmZsb2F0aW5nKTtcbiAgcmV0dXJuIHtcbiAgICByZWZlcmVuY2U6IGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGRhdGEucmVmZXJlbmNlLCBhd2FpdCBnZXRPZmZzZXRQYXJlbnRGbihkYXRhLmZsb2F0aW5nKSwgZGF0YS5zdHJhdGVneSksXG4gICAgZmxvYXRpbmc6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IGZsb2F0aW5nRGltZW5zaW9ucy53aWR0aCxcbiAgICAgIGhlaWdodDogZmxvYXRpbmdEaW1lbnNpb25zLmhlaWdodFxuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGlzUlRMKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZGlyZWN0aW9uID09PSAncnRsJztcbn1cblxuY29uc3QgcGxhdGZvcm0gPSB7XG4gIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0LFxuICBnZXREb2N1bWVudEVsZW1lbnQsXG4gIGdldENsaXBwaW5nUmVjdCxcbiAgZ2V0T2Zmc2V0UGFyZW50LFxuICBnZXRFbGVtZW50UmVjdHMsXG4gIGdldENsaWVudFJlY3RzLFxuICBnZXREaW1lbnNpb25zLFxuICBnZXRTY2FsZSxcbiAgaXNFbGVtZW50LFxuICBpc1JUTFxufTtcblxuLy8gaHR0cHM6Ly9zYW10aG9yLmF1LzIwMjEvb2JzZXJ2aW5nLWRvbS9cbmZ1bmN0aW9uIG9ic2VydmVNb3ZlKGVsZW1lbnQsIG9uTW92ZSkge1xuICBsZXQgaW8gPSBudWxsO1xuICBsZXQgdGltZW91dElkO1xuICBjb25zdCByb290ID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIHZhciBfaW87XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgKF9pbyA9IGlvKSA9PSBudWxsIHx8IF9pby5kaXNjb25uZWN0KCk7XG4gICAgaW8gPSBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIHJlZnJlc2goc2tpcCwgdGhyZXNob2xkKSB7XG4gICAgaWYgKHNraXAgPT09IHZvaWQgMCkge1xuICAgICAgc2tpcCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICAgIHRocmVzaG9sZCA9IDE7XG4gICAgfVxuICAgIGNsZWFudXAoKTtcbiAgICBjb25zdCB7XG4gICAgICBsZWZ0LFxuICAgICAgdG9wLFxuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHRcbiAgICB9ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBpZiAoIXNraXApIHtcbiAgICAgIG9uTW92ZSgpO1xuICAgIH1cbiAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5zZXRUb3AgPSBmbG9vcih0b3ApO1xuICAgIGNvbnN0IGluc2V0UmlnaHQgPSBmbG9vcihyb290LmNsaWVudFdpZHRoIC0gKGxlZnQgKyB3aWR0aCkpO1xuICAgIGNvbnN0IGluc2V0Qm90dG9tID0gZmxvb3Iocm9vdC5jbGllbnRIZWlnaHQgLSAodG9wICsgaGVpZ2h0KSk7XG4gICAgY29uc3QgaW5zZXRMZWZ0ID0gZmxvb3IobGVmdCk7XG4gICAgY29uc3Qgcm9vdE1hcmdpbiA9IC1pbnNldFRvcCArIFwicHggXCIgKyAtaW5zZXRSaWdodCArIFwicHggXCIgKyAtaW5zZXRCb3R0b20gKyBcInB4IFwiICsgLWluc2V0TGVmdCArIFwicHhcIjtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdE1hcmdpbixcbiAgICAgIHRocmVzaG9sZDogbWF4KDAsIG1pbigxLCB0aHJlc2hvbGQpKSB8fCAxXG4gICAgfTtcbiAgICBsZXQgaXNGaXJzdFVwZGF0ZSA9IHRydWU7XG4gICAgZnVuY3Rpb24gaGFuZGxlT2JzZXJ2ZShlbnRyaWVzKSB7XG4gICAgICBjb25zdCByYXRpbyA9IGVudHJpZXNbMF0uaW50ZXJzZWN0aW9uUmF0aW87XG4gICAgICBpZiAocmF0aW8gIT09IHRocmVzaG9sZCkge1xuICAgICAgICBpZiAoIWlzRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgICByZXR1cm4gcmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmF0aW8pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIGNsaXBwZWQsIHRoZSByYXRpbyBpcyAwLiBUaHJvdHRsZSB0aGUgcmVmcmVzaFxuICAgICAgICAgIC8vIHRvIHByZXZlbnQgYW4gaW5maW5pdGUgbG9vcCBvZiB1cGRhdGVzLlxuICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgcmVmcmVzaChmYWxzZSwgMWUtNyk7XG4gICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVmcmVzaChmYWxzZSwgcmF0aW8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpc0ZpcnN0VXBkYXRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gT2xkZXIgYnJvd3NlcnMgZG9uJ3Qgc3VwcG9ydCBhIGBkb2N1bWVudGAgYXMgdGhlIHJvb3QgYW5kIHdpbGwgdGhyb3cgYW5cbiAgICAvLyBlcnJvci5cbiAgICB0cnkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAvLyBIYW5kbGUgPGlmcmFtZT5zXG4gICAgICAgIHJvb3Q6IHJvb3Qub3duZXJEb2N1bWVudFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlvLm9ic2VydmUoZWxlbWVudCk7XG4gIH1cbiAgcmVmcmVzaCh0cnVlKTtcbiAgcmV0dXJuIGNsZWFudXA7XG59XG5cbi8qKlxuICogQXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aGVuIG5lY2Vzc2FyeS5cbiAqIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIG1vdW50ZWQgb24gdGhlIERPTSBvclxuICogdmlzaWJsZSBvbiB0aGUgc2NyZWVuLlxuICogQHJldHVybnMgY2xlYW51cCBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXNcbiAqIHJlbW92ZWQgZnJvbSB0aGUgRE9NIG9yIGhpZGRlbiBmcm9tIHRoZSBzY3JlZW4uXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1VwZGF0ZVxuICovXG5mdW5jdGlvbiBhdXRvVXBkYXRlKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHVwZGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBhbmNlc3RvclNjcm9sbCA9IHRydWUsXG4gICAgYW5jZXN0b3JSZXNpemUgPSB0cnVlLFxuICAgIGVsZW1lbnRSZXNpemUgPSB0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgbGF5b3V0U2hpZnQgPSB0eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgYW5pbWF0aW9uRnJhbWUgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcmVmZXJlbmNlRWwgPSB1bndyYXBFbGVtZW50KHJlZmVyZW5jZSk7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGFuY2VzdG9yU2Nyb2xsIHx8IGFuY2VzdG9yUmVzaXplID8gWy4uLihyZWZlcmVuY2VFbCA/IGdldE92ZXJmbG93QW5jZXN0b3JzKHJlZmVyZW5jZUVsKSA6IFtdKSwgLi4uZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZmxvYXRpbmcpXSA6IFtdO1xuICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlXG4gICAgfSk7XG4gICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgfSk7XG4gIGNvbnN0IGNsZWFudXBJbyA9IHJlZmVyZW5jZUVsICYmIGxheW91dFNoaWZ0ID8gb2JzZXJ2ZU1vdmUocmVmZXJlbmNlRWwsIHVwZGF0ZSkgOiBudWxsO1xuICBsZXQgcmVvYnNlcnZlRnJhbWUgPSAtMTtcbiAgbGV0IHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgaWYgKGVsZW1lbnRSZXNpemUpIHtcbiAgICByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihfcmVmID0+IHtcbiAgICAgIGxldCBbZmlyc3RFbnRyeV0gPSBfcmVmO1xuICAgICAgaWYgKGZpcnN0RW50cnkgJiYgZmlyc3RFbnRyeS50YXJnZXQgPT09IHJlZmVyZW5jZUVsICYmIHJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgIC8vIFByZXZlbnQgdXBkYXRlIGxvb3BzIHdoZW4gdXNpbmcgdGhlIGBzaXplYCBtaWRkbGV3YXJlLlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzE3NDBcbiAgICAgICAgcmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmVvYnNlcnZlRnJhbWUpO1xuICAgICAgICByZW9ic2VydmVGcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgdmFyIF9yZXNpemVPYnNlcnZlcjtcbiAgICAgICAgICAoX3Jlc2l6ZU9ic2VydmVyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyLm9ic2VydmUoZmxvYXRpbmcpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHVwZGF0ZSgpO1xuICAgIH0pO1xuICAgIGlmIChyZWZlcmVuY2VFbCAmJiAhYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUocmVmZXJlbmNlRWwpO1xuICAgIH1cbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgfVxuICBsZXQgZnJhbWVJZDtcbiAgbGV0IHByZXZSZWZSZWN0ID0gYW5pbWF0aW9uRnJhbWUgPyBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKSA6IG51bGw7XG4gIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgIGZyYW1lTG9vcCgpO1xuICB9XG4gIGZ1bmN0aW9uIGZyYW1lTG9vcCgpIHtcbiAgICBjb25zdCBuZXh0UmVmUmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpO1xuICAgIGlmIChwcmV2UmVmUmVjdCAmJiAobmV4dFJlZlJlY3QueCAhPT0gcHJldlJlZlJlY3QueCB8fCBuZXh0UmVmUmVjdC55ICE9PSBwcmV2UmVmUmVjdC55IHx8IG5leHRSZWZSZWN0LndpZHRoICE9PSBwcmV2UmVmUmVjdC53aWR0aCB8fCBuZXh0UmVmUmVjdC5oZWlnaHQgIT09IHByZXZSZWZSZWN0LmhlaWdodCkpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgICBwcmV2UmVmUmVjdCA9IG5leHRSZWZSZWN0O1xuICAgIGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnJhbWVMb29wKTtcbiAgfVxuICB1cGRhdGUoKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICB2YXIgX3Jlc2l6ZU9ic2VydmVyMjtcbiAgICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgICBhbmNlc3RvclNjcm9sbCAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpO1xuICAgICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgICB9KTtcbiAgICBjbGVhbnVwSW8gPT0gbnVsbCB8fCBjbGVhbnVwSW8oKTtcbiAgICAoX3Jlc2l6ZU9ic2VydmVyMiA9IHJlc2l6ZU9ic2VydmVyKSA9PSBudWxsIHx8IF9yZXNpemVPYnNlcnZlcjIuZGlzY29ubmVjdCgpO1xuICAgIHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lSWQpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBvZiBvdmVyZmxvdyBzaWRlIG9mZnNldHMgdGhhdCBkZXRlcm1pbmUgaG93IG11Y2ggdGhlXG4gKiBlbGVtZW50IGlzIG92ZXJmbG93aW5nIGEgZ2l2ZW4gY2xpcHBpbmcgYm91bmRhcnkgb24gZWFjaCBzaWRlLlxuICogLSBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBib3VuZGFyeSBieSB0aGF0IG51bWJlciBvZiBwaXhlbHNcbiAqIC0gbmVnYXRpdmUgPSBob3cgbWFueSBwaXhlbHMgbGVmdCBiZWZvcmUgaXQgd2lsbCBvdmVyZmxvd1xuICogLSAwID0gbGllcyBmbHVzaCB3aXRoIHRoZSBib3VuZGFyeVxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2RldGVjdE92ZXJmbG93XG4gKi9cbmNvbnN0IGRldGVjdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3ckMTtcblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcGxhY2VtZW50IGJ5IHRyYW5zbGF0aW5nIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZVxuICogc3BlY2lmaWVkIGF4ZXMuXG4gKiBBIG51bWJlciAoc2hvcnRoYW5kIGZvciBgbWFpbkF4aXNgIG9yIGRpc3RhbmNlKSwgb3IgYW4gYXhlcyBjb25maWd1cmF0aW9uXG4gKiBvYmplY3QgbWF5IGJlIHBhc3NlZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXRcbiAqL1xuY29uc3Qgb2Zmc2V0ID0gb2Zmc2V0JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGNob29zaW5nIHRoZSBwbGFjZW1lbnRcbiAqIHRoYXQgaGFzIHRoZSBtb3N0IHNwYWNlIGF2YWlsYWJsZSBhdXRvbWF0aWNhbGx5LCB3aXRob3V0IG5lZWRpbmcgdG8gc3BlY2lmeSBhXG4gKiBwcmVmZXJyZWQgcGxhY2VtZW50LiBBbHRlcm5hdGl2ZSB0byBgZmxpcGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1BsYWNlbWVudFxuICovXG5jb25zdCBhdXRvUGxhY2VtZW50ID0gYXV0b1BsYWNlbWVudCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBzaGlmdGluZyBpdCBpbiBvcmRlciB0b1xuICoga2VlcCBpdCBpbiB2aWV3IHdoZW4gaXQgd2lsbCBvdmVyZmxvdyB0aGUgY2xpcHBpbmcgYm91bmRhcnkuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2hpZnRcbiAqL1xuY29uc3Qgc2hpZnQgPSBzaGlmdCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBmbGlwcGluZyB0aGUgYHBsYWNlbWVudGBcbiAqIGluIG9yZGVyIHRvIGtlZXAgaXQgaW4gdmlldyB3aGVuIHRoZSBwcmVmZXJyZWQgcGxhY2VtZW50KHMpIHdpbGwgb3ZlcmZsb3cgdGhlXG4gKiBjbGlwcGluZyBib3VuZGFyeS4gQWx0ZXJuYXRpdmUgdG8gYGF1dG9QbGFjZW1lbnRgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2ZsaXBcbiAqL1xuY29uc3QgZmxpcCA9IGZsaXAkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gc2l6ZSQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gaGlkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBpbiBhcHBsaWNhYmxlIHNpdHVhdGlvbnMsIHN1Y2ggYXNcbiAqIHdoZW4gaXQgaXMgbm90IGluIHRoZSBzYW1lIGNsaXBwaW5nIGNvbnRleHQgYXMgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2hpZGVcbiAqL1xuY29uc3QgaGlkZSA9IGhpZGUkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc28gdGhhdCBpdFxuICogYXBwZWFycyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSBhcnJvdyQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBpbmxpbmUkMTtcblxuLyoqXG4gKiBCdWlsdC1pbiBgbGltaXRlcmAgdGhhdCB3aWxsIHN0b3AgYHNoaWZ0KClgIGF0IGEgY2VydGFpbiBwb2ludC5cbiAqL1xuY29uc3QgbGltaXRTaGlmdCA9IGxpbWl0U2hpZnQkMTtcblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgdGhhdCB3aWxsIHBsYWNlIHRoZSBmbG9hdGluZyBlbGVtZW50XG4gKiBuZXh0IHRvIGEgZ2l2ZW4gcmVmZXJlbmNlIGVsZW1lbnQuXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IChyZWZlcmVuY2UsIGZsb2F0aW5nLCBvcHRpb25zKSA9PiB7XG4gIC8vIFRoaXMgY2FjaGVzIHRoZSBleHBlbnNpdmUgYGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9yc2AgZnVuY3Rpb24gc28gdGhhdFxuICAvLyBtdWx0aXBsZSBsaWZlY3ljbGUgcmVzZXRzIHJlLXVzZSB0aGUgc2FtZSByZXN1bHQuIEl0IG9ubHkgbGl2ZXMgZm9yIGFcbiAgLy8gc2luZ2xlIGNhbGwuIElmIG90aGVyIGZ1bmN0aW9ucyBiZWNvbWUgZXhwZW5zaXZlLCB3ZSBjYW4gYWRkIHRoZW0gYXMgd2VsbC5cbiAgY29uc3QgY2FjaGUgPSBuZXcgTWFwKCk7XG4gIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB7XG4gICAgcGxhdGZvcm0sXG4gICAgLi4ub3B0aW9uc1xuICB9O1xuICBjb25zdCBwbGF0Zm9ybVdpdGhDYWNoZSA9IHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLnBsYXRmb3JtLFxuICAgIF9jOiBjYWNoZVxuICB9O1xuICByZXR1cm4gY29tcHV0ZVBvc2l0aW9uJDEocmVmZXJlbmNlLCBmbG9hdGluZywge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMsXG4gICAgcGxhdGZvcm06IHBsYXRmb3JtV2l0aENhY2hlXG4gIH0pO1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBwbGF0Zm9ybSwgc2hpZnQsIHNpemUgfTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIF9vYmplY3RTcHJlYWQgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFNwcmVhZDInKTtcbnZhciBfZXh0ZW5kcyA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcycpO1xudmFyIHJlYWN0ID0gcmVxdWlyZSgnQGVtb3Rpb24vcmVhY3QnKTtcbnZhciBfc2xpY2VkVG9BcnJheSA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheScpO1xudmFyIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXMnKTtcbnZhciBfdHlwZW9mID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YnKTtcbnZhciBfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy90YWdnZWRUZW1wbGF0ZUxpdGVyYWwnKTtcbnZhciBfZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5Jyk7XG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xudmFyIHJlYWN0RG9tID0gcmVxdWlyZSgncmVhY3QtZG9tJyk7XG52YXIgZG9tID0gcmVxdWlyZSgnQGZsb2F0aW5nLXVpL2RvbScpO1xudmFyIHVzZUxheW91dEVmZmVjdCA9IHJlcXVpcmUoJ3VzZS1pc29tb3JwaGljLWxheW91dC1lZmZlY3QnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BEZWZhdWx0IChlKSB7IHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7ICdkZWZhdWx0JzogZSB9OyB9XG5cbnZhciB1c2VMYXlvdXRFZmZlY3RfX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX2ludGVyb3BEZWZhdWx0KHVzZUxheW91dEVmZmVjdCk7XG5cbnZhciBfZXhjbHVkZWQkNCA9IFtcImNsYXNzTmFtZVwiLCBcImNsZWFyVmFsdWVcIiwgXCJjeFwiLCBcImdldFN0eWxlc1wiLCBcImdldENsYXNzTmFtZXNcIiwgXCJnZXRWYWx1ZVwiLCBcImhhc1ZhbHVlXCIsIFwiaXNNdWx0aVwiLCBcImlzUnRsXCIsIFwib3B0aW9uc1wiLCBcInNlbGVjdE9wdGlvblwiLCBcInNlbGVjdFByb3BzXCIsIFwic2V0VmFsdWVcIiwgXCJ0aGVtZVwiXTtcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTk8gT1Bcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgbm9vcCA9IGZ1bmN0aW9uIG5vb3AoKSB7fTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDbGFzcyBOYW1lIFByZWZpeGVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGNvbXBvbmVudCBzdGF0ZSBmb3Igc3R5bGluZyB3aXRoIGNsYXNzIG5hbWVzLlxuXG4gRXhwZWN0cyBhbiBhcnJheSBvZiBzdHJpbmdzIE9SIGEgc3RyaW5nL29iamVjdCBwYWlyOlxuIC0gY2xhc3NOYW1lKFsnY29tcCcsICdjb21wLWFyZycsICdjb21wLWFyZy0yJ10pXG4gICBAcmV0dXJucyAncmVhY3Qtc2VsZWN0X19jb21wIHJlYWN0LXNlbGVjdF9fY29tcC1hcmcgcmVhY3Qtc2VsZWN0X19jb21wLWFyZy0yJ1xuIC0gY2xhc3NOYW1lKCdjb21wJywgeyBzb21lOiB0cnVlLCBzdGF0ZTogZmFsc2UgfSlcbiAgIEByZXR1cm5zICdyZWFjdC1zZWxlY3RfX2NvbXAgcmVhY3Qtc2VsZWN0X19jb21wLS1zb21lJ1xuKi9cbmZ1bmN0aW9uIGFwcGx5UHJlZml4VG9OYW1lKHByZWZpeCwgbmFtZSkge1xuICBpZiAoIW5hbWUpIHtcbiAgICByZXR1cm4gcHJlZml4O1xuICB9IGVsc2UgaWYgKG5hbWVbMF0gPT09ICctJykge1xuICAgIHJldHVybiBwcmVmaXggKyBuYW1lO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBwcmVmaXggKyAnX18nICsgbmFtZTtcbiAgfVxufVxuZnVuY3Rpb24gY2xhc3NOYW1lcyhwcmVmaXgsIHN0YXRlKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBjbGFzc05hbWVMaXN0ID0gbmV3IEFycmF5KF9sZW4gPiAyID8gX2xlbiAtIDIgOiAwKSwgX2tleSA9IDI7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBjbGFzc05hbWVMaXN0W19rZXkgLSAyXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuICB2YXIgYXJyID0gW10uY29uY2F0KGNsYXNzTmFtZUxpc3QpO1xuICBpZiAoc3RhdGUgJiYgcHJlZml4KSB7XG4gICAgZm9yICh2YXIga2V5IGluIHN0YXRlKSB7XG4gICAgICBpZiAoc3RhdGUuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBzdGF0ZVtrZXldKSB7XG4gICAgICAgIGFyci5wdXNoKFwiXCIuY29uY2F0KGFwcGx5UHJlZml4VG9OYW1lKHByZWZpeCwga2V5KSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gYXJyLmZpbHRlcihmdW5jdGlvbiAoaSkge1xuICAgIHJldHVybiBpO1xuICB9KS5tYXAoZnVuY3Rpb24gKGkpIHtcbiAgICByZXR1cm4gU3RyaW5nKGkpLnRyaW0oKTtcbiAgfSkuam9pbignICcpO1xufVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDbGVhbiBWYWx1ZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBjbGVhblZhbHVlID0gZnVuY3Rpb24gY2xlYW5WYWx1ZSh2YWx1ZSkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZS5maWx0ZXIoQm9vbGVhbik7XG4gIGlmIChfdHlwZW9mKHZhbHVlKSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHJldHVybiBbdmFsdWVdO1xuICByZXR1cm4gW107XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENsZWFuIENvbW1vbiBQcm9wc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBjbGVhbkNvbW1vblByb3BzID0gZnVuY3Rpb24gY2xlYW5Db21tb25Qcm9wcyhwcm9wcykge1xuICAvL2NsYXNzTmFtZVxuICBwcm9wcy5jbGFzc05hbWU7XG4gICAgcHJvcHMuY2xlYXJWYWx1ZTtcbiAgICBwcm9wcy5jeDtcbiAgICBwcm9wcy5nZXRTdHlsZXM7XG4gICAgcHJvcHMuZ2V0Q2xhc3NOYW1lcztcbiAgICBwcm9wcy5nZXRWYWx1ZTtcbiAgICBwcm9wcy5oYXNWYWx1ZTtcbiAgICBwcm9wcy5pc011bHRpO1xuICAgIHByb3BzLmlzUnRsO1xuICAgIHByb3BzLm9wdGlvbnM7XG4gICAgcHJvcHMuc2VsZWN0T3B0aW9uO1xuICAgIHByb3BzLnNlbGVjdFByb3BzO1xuICAgIHByb3BzLnNldFZhbHVlO1xuICAgIHByb3BzLnRoZW1lO1xuICAgIHZhciBpbm5lclByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHByb3BzLCBfZXhjbHVkZWQkNCk7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHt9LCBpbm5lclByb3BzKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2V0IFN0eWxlIFByb3BzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGdldFN0eWxlUHJvcHMgPSBmdW5jdGlvbiBnZXRTdHlsZVByb3BzKHByb3BzLCBuYW1lLCBjbGFzc05hbWVzU3RhdGUpIHtcbiAgdmFyIGN4ID0gcHJvcHMuY3gsXG4gICAgZ2V0U3R5bGVzID0gcHJvcHMuZ2V0U3R5bGVzLFxuICAgIGdldENsYXNzTmFtZXMgPSBwcm9wcy5nZXRDbGFzc05hbWVzLFxuICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgcmV0dXJuIHtcbiAgICBjc3M6IGdldFN0eWxlcyhuYW1lLCBwcm9wcyksXG4gICAgY2xhc3NOYW1lOiBjeChjbGFzc05hbWVzU3RhdGUgIT09IG51bGwgJiYgY2xhc3NOYW1lc1N0YXRlICE9PSB2b2lkIDAgPyBjbGFzc05hbWVzU3RhdGUgOiB7fSwgZ2V0Q2xhc3NOYW1lcyhuYW1lLCBwcm9wcyksIGNsYXNzTmFtZSlcbiAgfTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSGFuZGxlIElucHV0IENoYW5nZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmZ1bmN0aW9uIGhhbmRsZUlucHV0Q2hhbmdlKGlucHV0VmFsdWUsIGFjdGlvbk1ldGEsIG9uSW5wdXRDaGFuZ2UpIHtcbiAgaWYgKG9uSW5wdXRDaGFuZ2UpIHtcbiAgICB2YXIgX25ld1ZhbHVlID0gb25JbnB1dENoYW5nZShpbnB1dFZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICBpZiAodHlwZW9mIF9uZXdWYWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiBfbmV3VmFsdWU7XG4gIH1cbiAgcmV0dXJuIGlucHV0VmFsdWU7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2Nyb2xsIEhlbHBlcnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBpc0RvY3VtZW50RWxlbWVudChlbCkge1xuICByZXR1cm4gW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgZG9jdW1lbnQuYm9keSwgd2luZG93XS5pbmRleE9mKGVsKSA+IC0xO1xufVxuXG4vLyBOb3JtYWxpemVkIFNjcm9sbCBUb3Bcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBub3JtYWxpemVkSGVpZ2h0KGVsKSB7XG4gIGlmIChpc0RvY3VtZW50RWxlbWVudChlbCkpIHtcbiAgICByZXR1cm4gd2luZG93LmlubmVySGVpZ2h0O1xuICB9XG4gIHJldHVybiBlbC5jbGllbnRIZWlnaHQ7XG59XG5cbi8vIE5vcm1hbGl6ZWQgc2Nyb2xsVG8gJiBzY3JvbGxUb3Bcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBnZXRTY3JvbGxUb3AoZWwpIHtcbiAgaWYgKGlzRG9jdW1lbnRFbGVtZW50KGVsKSkge1xuICAgIHJldHVybiB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gIH1cbiAgcmV0dXJuIGVsLnNjcm9sbFRvcDtcbn1cbmZ1bmN0aW9uIHNjcm9sbFRvKGVsLCB0b3ApIHtcbiAgLy8gd2l0aCBhIHNjcm9sbCBkaXN0YW5jZSwgd2UgcGVyZm9ybSBzY3JvbGwgb24gdGhlIGVsZW1lbnRcbiAgaWYgKGlzRG9jdW1lbnRFbGVtZW50KGVsKSkge1xuICAgIHdpbmRvdy5zY3JvbGxUbygwLCB0b3ApO1xuICAgIHJldHVybjtcbiAgfVxuICBlbC5zY3JvbGxUb3AgPSB0b3A7XG59XG5cbi8vIEdldCBTY3JvbGwgUGFyZW50XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZnVuY3Rpb24gZ2V0U2Nyb2xsUGFyZW50KGVsZW1lbnQpIHtcbiAgdmFyIHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgdmFyIGV4Y2x1ZGVTdGF0aWNQYXJlbnQgPSBzdHlsZS5wb3NpdGlvbiA9PT0gJ2Fic29sdXRlJztcbiAgdmFyIG92ZXJmbG93UnggPSAvKGF1dG98c2Nyb2xsKS87XG4gIGlmIChzdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgZm9yICh2YXIgcGFyZW50ID0gZWxlbWVudDsgcGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQ7KSB7XG4gICAgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHBhcmVudCk7XG4gICAgaWYgKGV4Y2x1ZGVTdGF0aWNQYXJlbnQgJiYgc3R5bGUucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKG92ZXJmbG93UngudGVzdChzdHlsZS5vdmVyZmxvdyArIHN0eWxlLm92ZXJmbG93WSArIHN0eWxlLm92ZXJmbG93WCkpIHtcbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG59XG5cbi8vIEFuaW1hdGVkIFNjcm9sbCBUb1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICBAcGFyYW0gdDogdGltZSAoZWxhcHNlZClcbiAgQHBhcmFtIGI6IGluaXRpYWwgdmFsdWVcbiAgQHBhcmFtIGM6IGFtb3VudCBvZiBjaGFuZ2VcbiAgQHBhcmFtIGQ6IGR1cmF0aW9uXG4qL1xuZnVuY3Rpb24gZWFzZU91dEN1YmljKHQsIGIsIGMsIGQpIHtcbiAgcmV0dXJuIGMgKiAoKHQgPSB0IC8gZCAtIDEpICogdCAqIHQgKyAxKSArIGI7XG59XG5mdW5jdGlvbiBhbmltYXRlZFNjcm9sbFRvKGVsZW1lbnQsIHRvKSB7XG4gIHZhciBkdXJhdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogMjAwO1xuICB2YXIgY2FsbGJhY2sgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IG5vb3A7XG4gIHZhciBzdGFydCA9IGdldFNjcm9sbFRvcChlbGVtZW50KTtcbiAgdmFyIGNoYW5nZSA9IHRvIC0gc3RhcnQ7XG4gIHZhciBpbmNyZW1lbnQgPSAxMDtcbiAgdmFyIGN1cnJlbnRUaW1lID0gMDtcbiAgZnVuY3Rpb24gYW5pbWF0ZVNjcm9sbCgpIHtcbiAgICBjdXJyZW50VGltZSArPSBpbmNyZW1lbnQ7XG4gICAgdmFyIHZhbCA9IGVhc2VPdXRDdWJpYyhjdXJyZW50VGltZSwgc3RhcnQsIGNoYW5nZSwgZHVyYXRpb24pO1xuICAgIHNjcm9sbFRvKGVsZW1lbnQsIHZhbCk7XG4gICAgaWYgKGN1cnJlbnRUaW1lIDwgZHVyYXRpb24pIHtcbiAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZVNjcm9sbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxiYWNrKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBhbmltYXRlU2Nyb2xsKCk7XG59XG5cbi8vIFNjcm9sbCBJbnRvIFZpZXdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBzY3JvbGxJbnRvVmlldyhtZW51RWwsIGZvY3VzZWRFbCkge1xuICB2YXIgbWVudVJlY3QgPSBtZW51RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBmb2N1c2VkUmVjdCA9IGZvY3VzZWRFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIG92ZXJTY3JvbGwgPSBmb2N1c2VkRWwub2Zmc2V0SGVpZ2h0IC8gMztcbiAgaWYgKGZvY3VzZWRSZWN0LmJvdHRvbSArIG92ZXJTY3JvbGwgPiBtZW51UmVjdC5ib3R0b20pIHtcbiAgICBzY3JvbGxUbyhtZW51RWwsIE1hdGgubWluKGZvY3VzZWRFbC5vZmZzZXRUb3AgKyBmb2N1c2VkRWwuY2xpZW50SGVpZ2h0IC0gbWVudUVsLm9mZnNldEhlaWdodCArIG92ZXJTY3JvbGwsIG1lbnVFbC5zY3JvbGxIZWlnaHQpKTtcbiAgfSBlbHNlIGlmIChmb2N1c2VkUmVjdC50b3AgLSBvdmVyU2Nyb2xsIDwgbWVudVJlY3QudG9wKSB7XG4gICAgc2Nyb2xsVG8obWVudUVsLCBNYXRoLm1heChmb2N1c2VkRWwub2Zmc2V0VG9wIC0gb3ZlclNjcm9sbCwgMCkpO1xuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2V0IGJvdW5kaW5nIGNsaWVudCBvYmplY3Rcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBjYW5ub3QgZ2V0IGtleXMgdXNpbmcgYXJyYXkgbm90YXRpb24gd2l0aCBET01SZWN0XG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudE9iaihlbGVtZW50KSB7XG4gIHZhciByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgcmV0dXJuIHtcbiAgICBib3R0b206IHJlY3QuYm90dG9tLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHQsXG4gICAgbGVmdDogcmVjdC5sZWZ0LFxuICAgIHJpZ2h0OiByZWN0LnJpZ2h0LFxuICAgIHRvcDogcmVjdC50b3AsXG4gICAgd2lkdGg6IHJlY3Qud2lkdGhcbiAgfTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUb3VjaCBDYXBhYmlsaXR5IERldGVjdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZnVuY3Rpb24gaXNUb3VjaENhcGFibGUoKSB7XG4gIHRyeSB7XG4gICAgZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ1RvdWNoRXZlbnQnKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1vYmlsZSBEZXZpY2UgRGV0ZWN0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBpc01vYmlsZURldmljZSgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUGFzc2l2ZSBFdmVudCBEZXRlY3RvclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yYWZncmFwaC9kZXRlY3QtaXQvYmxvYi9tYWluL3NyYy9pbmRleC50cyNMMTktTDM2XG52YXIgcGFzc2l2ZU9wdGlvbkFjY2Vzc2VkID0gZmFsc2U7XG52YXIgb3B0aW9ucyA9IHtcbiAgZ2V0IHBhc3NpdmUoKSB7XG4gICAgcmV0dXJuIHBhc3NpdmVPcHRpb25BY2Nlc3NlZCA9IHRydWU7XG4gIH1cbn07XG4vLyBjaGVjayBmb3IgU1NSXG52YXIgdyA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDoge307XG5pZiAody5hZGRFdmVudExpc3RlbmVyICYmIHcucmVtb3ZlRXZlbnRMaXN0ZW5lcikge1xuICB3LmFkZEV2ZW50TGlzdGVuZXIoJ3AnLCBub29wLCBvcHRpb25zKTtcbiAgdy5yZW1vdmVFdmVudExpc3RlbmVyKCdwJywgbm9vcCwgZmFsc2UpO1xufVxudmFyIHN1cHBvcnRzUGFzc2l2ZUV2ZW50cyA9IHBhc3NpdmVPcHRpb25BY2Nlc3NlZDtcbmZ1bmN0aW9uIG5vdE51bGxpc2goaXRlbSkge1xuICByZXR1cm4gaXRlbSAhPSBudWxsO1xufVxuZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXJnKTtcbn1cbmZ1bmN0aW9uIHZhbHVlVGVybmFyeShpc011bHRpLCBtdWx0aVZhbHVlLCBzaW5nbGVWYWx1ZSkge1xuICByZXR1cm4gaXNNdWx0aSA/IG11bHRpVmFsdWUgOiBzaW5nbGVWYWx1ZTtcbn1cbmZ1bmN0aW9uIHNpbmdsZVZhbHVlQXNWYWx1ZShzaW5nbGVWYWx1ZSkge1xuICByZXR1cm4gc2luZ2xlVmFsdWU7XG59XG5mdW5jdGlvbiBtdWx0aVZhbHVlQXNWYWx1ZShtdWx0aVZhbHVlKSB7XG4gIHJldHVybiBtdWx0aVZhbHVlO1xufVxudmFyIHJlbW92ZVByb3BzID0gZnVuY3Rpb24gcmVtb3ZlUHJvcHMocHJvcHNPYmopIHtcbiAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBwcm9wZXJ0aWVzID0gbmV3IEFycmF5KF9sZW4yID4gMSA/IF9sZW4yIC0gMSA6IDApLCBfa2V5MiA9IDE7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICBwcm9wZXJ0aWVzW19rZXkyIC0gMV0gPSBhcmd1bWVudHNbX2tleTJdO1xuICB9XG4gIHZhciBwcm9wc01hcCA9IE9iamVjdC5lbnRyaWVzKHByb3BzT2JqKS5maWx0ZXIoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICB2YXIgX3JlZjIgPSBfc2xpY2VkVG9BcnJheShfcmVmLCAxKSxcbiAgICAgIGtleSA9IF9yZWYyWzBdO1xuICAgIHJldHVybiAhcHJvcGVydGllcy5pbmNsdWRlcyhrZXkpO1xuICB9KTtcbiAgcmV0dXJuIHByb3BzTWFwLnJlZHVjZShmdW5jdGlvbiAobmV3UHJvcHMsIF9yZWYzKSB7XG4gICAgdmFyIF9yZWY0ID0gX3NsaWNlZFRvQXJyYXkoX3JlZjMsIDIpLFxuICAgICAga2V5ID0gX3JlZjRbMF0sXG4gICAgICB2YWwgPSBfcmVmNFsxXTtcbiAgICBuZXdQcm9wc1trZXldID0gdmFsO1xuICAgIHJldHVybiBuZXdQcm9wcztcbiAgfSwge30pO1xufTtcblxudmFyIF9leGNsdWRlZCQzID0gW1wiY2hpbGRyZW5cIiwgXCJpbm5lclByb3BzXCJdLFxuICBfZXhjbHVkZWQyJDEgPSBbXCJjaGlsZHJlblwiLCBcImlubmVyUHJvcHNcIl07XG5mdW5jdGlvbiBnZXRNZW51UGxhY2VtZW50KF9yZWYpIHtcbiAgdmFyIHByZWZlcnJlZE1heEhlaWdodCA9IF9yZWYubWF4SGVpZ2h0LFxuICAgIG1lbnVFbCA9IF9yZWYubWVudUVsLFxuICAgIG1pbkhlaWdodCA9IF9yZWYubWluSGVpZ2h0LFxuICAgIHByZWZlcnJlZFBsYWNlbWVudCA9IF9yZWYucGxhY2VtZW50LFxuICAgIHNob3VsZFNjcm9sbCA9IF9yZWYuc2hvdWxkU2Nyb2xsLFxuICAgIGlzRml4ZWRQb3NpdGlvbiA9IF9yZWYuaXNGaXhlZFBvc2l0aW9uLFxuICAgIGNvbnRyb2xIZWlnaHQgPSBfcmVmLmNvbnRyb2xIZWlnaHQ7XG4gIHZhciBzY3JvbGxQYXJlbnQgPSBnZXRTY3JvbGxQYXJlbnQobWVudUVsKTtcbiAgdmFyIGRlZmF1bHRTdGF0ZSA9IHtcbiAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgIG1heEhlaWdodDogcHJlZmVycmVkTWF4SGVpZ2h0XG4gIH07XG5cbiAgLy8gc29tZXRoaW5nIHdlbnQgd3JvbmcsIHJldHVybiBkZWZhdWx0IHN0YXRlXG4gIGlmICghbWVudUVsIHx8ICFtZW51RWwub2Zmc2V0UGFyZW50KSByZXR1cm4gZGVmYXVsdFN0YXRlO1xuXG4gIC8vIHdlIGNhbid0IHRydXN0IGBzY3JvbGxQYXJlbnQuc2Nyb2xsSGVpZ2h0YCAtLT4gaXQgbWF5IGluY3JlYXNlIHdoZW5cbiAgLy8gdGhlIG1lbnUgaXMgcmVuZGVyZWRcbiAgdmFyIF9zY3JvbGxQYXJlbnQkZ2V0Qm91biA9IHNjcm9sbFBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICBzY3JvbGxIZWlnaHQgPSBfc2Nyb2xsUGFyZW50JGdldEJvdW4uaGVpZ2h0O1xuICB2YXIgX21lbnVFbCRnZXRCb3VuZGluZ0NsID0gbWVudUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgIG1lbnVCb3R0b20gPSBfbWVudUVsJGdldEJvdW5kaW5nQ2wuYm90dG9tLFxuICAgIG1lbnVIZWlnaHQgPSBfbWVudUVsJGdldEJvdW5kaW5nQ2wuaGVpZ2h0LFxuICAgIG1lbnVUb3AgPSBfbWVudUVsJGdldEJvdW5kaW5nQ2wudG9wO1xuICB2YXIgX21lbnVFbCRvZmZzZXRQYXJlbnQkID0gbWVudUVsLm9mZnNldFBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICBjb250YWluZXJUb3AgPSBfbWVudUVsJG9mZnNldFBhcmVudCQudG9wO1xuICB2YXIgdmlld0hlaWdodCA9IGlzRml4ZWRQb3NpdGlvbiA/IHdpbmRvdy5pbm5lckhlaWdodCA6IG5vcm1hbGl6ZWRIZWlnaHQoc2Nyb2xsUGFyZW50KTtcbiAgdmFyIHNjcm9sbFRvcCA9IGdldFNjcm9sbFRvcChzY3JvbGxQYXJlbnQpO1xuICB2YXIgbWFyZ2luQm90dG9tID0gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShtZW51RWwpLm1hcmdpbkJvdHRvbSwgMTApO1xuICB2YXIgbWFyZ2luVG9wID0gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShtZW51RWwpLm1hcmdpblRvcCwgMTApO1xuICB2YXIgdmlld1NwYWNlQWJvdmUgPSBjb250YWluZXJUb3AgLSBtYXJnaW5Ub3A7XG4gIHZhciB2aWV3U3BhY2VCZWxvdyA9IHZpZXdIZWlnaHQgLSBtZW51VG9wO1xuICB2YXIgc2Nyb2xsU3BhY2VBYm92ZSA9IHZpZXdTcGFjZUFib3ZlICsgc2Nyb2xsVG9wO1xuICB2YXIgc2Nyb2xsU3BhY2VCZWxvdyA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIG1lbnVUb3A7XG4gIHZhciBzY3JvbGxEb3duID0gbWVudUJvdHRvbSAtIHZpZXdIZWlnaHQgKyBzY3JvbGxUb3AgKyBtYXJnaW5Cb3R0b207XG4gIHZhciBzY3JvbGxVcCA9IHNjcm9sbFRvcCArIG1lbnVUb3AgLSBtYXJnaW5Ub3A7XG4gIHZhciBzY3JvbGxEdXJhdGlvbiA9IDE2MDtcbiAgc3dpdGNoIChwcmVmZXJyZWRQbGFjZW1lbnQpIHtcbiAgICBjYXNlICdhdXRvJzpcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgLy8gMTogdGhlIG1lbnUgd2lsbCBmaXQsIGRvIG5vdGhpbmdcbiAgICAgIGlmICh2aWV3U3BhY2VCZWxvdyA+PSBtZW51SGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyAyOiB0aGUgbWVudSB3aWxsIGZpdCwgaWYgc2Nyb2xsZWRcbiAgICAgIGlmIChzY3JvbGxTcGFjZUJlbG93ID49IG1lbnVIZWlnaHQgJiYgIWlzRml4ZWRQb3NpdGlvbikge1xuICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsKSB7XG4gICAgICAgICAgYW5pbWF0ZWRTY3JvbGxUbyhzY3JvbGxQYXJlbnQsIHNjcm9sbERvd24sIHNjcm9sbER1cmF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBwcmVmZXJyZWRNYXhIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gMzogdGhlIG1lbnUgd2lsbCBmaXQsIGlmIGNvbnN0cmFpbmVkXG4gICAgICBpZiAoIWlzRml4ZWRQb3NpdGlvbiAmJiBzY3JvbGxTcGFjZUJlbG93ID49IG1pbkhlaWdodCB8fCBpc0ZpeGVkUG9zaXRpb24gJiYgdmlld1NwYWNlQmVsb3cgPj0gbWluSGVpZ2h0KSB7XG4gICAgICAgIGlmIChzaG91bGRTY3JvbGwpIHtcbiAgICAgICAgICBhbmltYXRlZFNjcm9sbFRvKHNjcm9sbFBhcmVudCwgc2Nyb2xsRG93biwgc2Nyb2xsRHVyYXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gd2Ugd2FudCB0byBwcm92aWRlIGFzIG11Y2ggb2YgdGhlIG1lbnUgYXMgcG9zc2libGUgdG8gdGhlIHVzZXIsXG4gICAgICAgIC8vIHNvIGdpdmUgdGhlbSB3aGF0ZXZlciBpcyBhdmFpbGFibGUgYmVsb3cgcmF0aGVyIHRoYW4gdGhlIG1pbkhlaWdodC5cbiAgICAgICAgdmFyIGNvbnN0cmFpbmVkSGVpZ2h0ID0gaXNGaXhlZFBvc2l0aW9uID8gdmlld1NwYWNlQmVsb3cgLSBtYXJnaW5Cb3R0b20gOiBzY3JvbGxTcGFjZUJlbG93IC0gbWFyZ2luQm90dG9tO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBjb25zdHJhaW5lZEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyA0LiBGb3JrZWQgYmV2aW91ciB3aGVuIHRoZXJlIGlzbid0IGVub3VnaCBzcGFjZSBiZWxvd1xuXG4gICAgICAvLyBBVVRPOiBmbGlwIHRoZSBtZW51LCByZW5kZXIgYWJvdmVcbiAgICAgIGlmIChwcmVmZXJyZWRQbGFjZW1lbnQgPT09ICdhdXRvJyB8fCBpc0ZpeGVkUG9zaXRpb24pIHtcbiAgICAgICAgLy8gbWF5IG5lZWQgdG8gYmUgY29uc3RyYWluZWQgYWZ0ZXIgZmxpcHBpbmdcbiAgICAgICAgdmFyIF9jb25zdHJhaW5lZEhlaWdodCA9IHByZWZlcnJlZE1heEhlaWdodDtcbiAgICAgICAgdmFyIHNwYWNlQWJvdmUgPSBpc0ZpeGVkUG9zaXRpb24gPyB2aWV3U3BhY2VBYm92ZSA6IHNjcm9sbFNwYWNlQWJvdmU7XG4gICAgICAgIGlmIChzcGFjZUFib3ZlID49IG1pbkhlaWdodCkge1xuICAgICAgICAgIF9jb25zdHJhaW5lZEhlaWdodCA9IE1hdGgubWluKHNwYWNlQWJvdmUgLSBtYXJnaW5Cb3R0b20gLSBjb250cm9sSGVpZ2h0LCBwcmVmZXJyZWRNYXhIZWlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IF9jb25zdHJhaW5lZEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyBCT1RUT006IGFsbG93IGJyb3dzZXIgdG8gaW5jcmVhc2Ugc2Nyb2xsYWJsZSBhcmVhIGFuZCBpbW1lZGlhdGVseSBzZXQgc2Nyb2xsXG4gICAgICBpZiAocHJlZmVycmVkUGxhY2VtZW50ID09PSAnYm90dG9tJykge1xuICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsKSB7XG4gICAgICAgICAgc2Nyb2xsVG8oc2Nyb2xsUGFyZW50LCBzY3JvbGxEb3duKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBwcmVmZXJyZWRNYXhIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICAvLyAxOiB0aGUgbWVudSB3aWxsIGZpdCwgZG8gbm90aGluZ1xuICAgICAgaWYgKHZpZXdTcGFjZUFib3ZlID49IG1lbnVIZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICd0b3AnLFxuICAgICAgICAgIG1heEhlaWdodDogcHJlZmVycmVkTWF4SGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIDI6IHRoZSBtZW51IHdpbGwgZml0LCBpZiBzY3JvbGxlZFxuICAgICAgaWYgKHNjcm9sbFNwYWNlQWJvdmUgPj0gbWVudUhlaWdodCAmJiAhaXNGaXhlZFBvc2l0aW9uKSB7XG4gICAgICAgIGlmIChzaG91bGRTY3JvbGwpIHtcbiAgICAgICAgICBhbmltYXRlZFNjcm9sbFRvKHNjcm9sbFBhcmVudCwgc2Nyb2xsVXAsIHNjcm9sbER1cmF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBwcmVmZXJyZWRNYXhIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gMzogdGhlIG1lbnUgd2lsbCBmaXQsIGlmIGNvbnN0cmFpbmVkXG4gICAgICBpZiAoIWlzRml4ZWRQb3NpdGlvbiAmJiBzY3JvbGxTcGFjZUFib3ZlID49IG1pbkhlaWdodCB8fCBpc0ZpeGVkUG9zaXRpb24gJiYgdmlld1NwYWNlQWJvdmUgPj0gbWluSGVpZ2h0KSB7XG4gICAgICAgIHZhciBfY29uc3RyYWluZWRIZWlnaHQyID0gcHJlZmVycmVkTWF4SGVpZ2h0O1xuXG4gICAgICAgIC8vIHdlIHdhbnQgdG8gcHJvdmlkZSBhcyBtdWNoIG9mIHRoZSBtZW51IGFzIHBvc3NpYmxlIHRvIHRoZSB1c2VyLFxuICAgICAgICAvLyBzbyBnaXZlIHRoZW0gd2hhdGV2ZXIgaXMgYXZhaWxhYmxlIGJlbG93IHJhdGhlciB0aGFuIHRoZSBtaW5IZWlnaHQuXG4gICAgICAgIGlmICghaXNGaXhlZFBvc2l0aW9uICYmIHNjcm9sbFNwYWNlQWJvdmUgPj0gbWluSGVpZ2h0IHx8IGlzRml4ZWRQb3NpdGlvbiAmJiB2aWV3U3BhY2VBYm92ZSA+PSBtaW5IZWlnaHQpIHtcbiAgICAgICAgICBfY29uc3RyYWluZWRIZWlnaHQyID0gaXNGaXhlZFBvc2l0aW9uID8gdmlld1NwYWNlQWJvdmUgLSBtYXJnaW5Ub3AgOiBzY3JvbGxTcGFjZUFib3ZlIC0gbWFyZ2luVG9wO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzaG91bGRTY3JvbGwpIHtcbiAgICAgICAgICBhbmltYXRlZFNjcm9sbFRvKHNjcm9sbFBhcmVudCwgc2Nyb2xsVXAsIHNjcm9sbER1cmF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBfY29uc3RyYWluZWRIZWlnaHQyXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIG5vdCBlbm91Z2ggc3BhY2UsIHRoZSBicm93c2VyIFdJTEwgTk9UIGluY3JlYXNlIHNjcm9sbGFibGUgYXJlYSB3aGVuXG4gICAgICAvLyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgZWxlbWVudCByZW5kZXJlZCBhYm92ZSB0aGUgdmlld3BvcnQgKG9ubHkgYmVsb3cpLlxuICAgICAgLy8gRmxpcCB0aGUgbWVudSwgcmVuZGVyIGJlbG93XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICAgICAgfTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBwbGFjZW1lbnQgcHJvdmlkZWQgXFxcIlwiLmNvbmNhdChwcmVmZXJyZWRQbGFjZW1lbnQsIFwiXFxcIi5cIikpO1xuICB9XG4gIHJldHVybiBkZWZhdWx0U3RhdGU7XG59XG5cbi8vIE1lbnUgQ29tcG9uZW50XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZnVuY3Rpb24gYWxpZ25Ub0NvbnRyb2wocGxhY2VtZW50KSB7XG4gIHZhciBwbGFjZW1lbnRUb0NTU1Byb3AgPSB7XG4gICAgYm90dG9tOiAndG9wJyxcbiAgICB0b3A6ICdib3R0b20nXG4gIH07XG4gIHJldHVybiBwbGFjZW1lbnQgPyBwbGFjZW1lbnRUb0NTU1Byb3BbcGxhY2VtZW50XSA6ICdib3R0b20nO1xufVxudmFyIGNvZXJjZVBsYWNlbWVudCA9IGZ1bmN0aW9uIGNvZXJjZVBsYWNlbWVudChwKSB7XG4gIHJldHVybiBwID09PSAnYXV0bycgPyAnYm90dG9tJyA6IHA7XG59O1xudmFyIG1lbnVDU1MgPSBmdW5jdGlvbiBtZW51Q1NTKF9yZWYyLCB1bnN0eWxlZCkge1xuICB2YXIgX29iamVjdFNwcmVhZDI7XG4gIHZhciBwbGFjZW1lbnQgPSBfcmVmMi5wbGFjZW1lbnQsXG4gICAgX3JlZjIkdGhlbWUgPSBfcmVmMi50aGVtZSxcbiAgICBib3JkZXJSYWRpdXMgPSBfcmVmMiR0aGVtZS5ib3JkZXJSYWRpdXMsXG4gICAgc3BhY2luZyA9IF9yZWYyJHRoZW1lLnNwYWNpbmcsXG4gICAgY29sb3JzID0gX3JlZjIkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCgoX29iamVjdFNwcmVhZDIgPSB7XG4gICAgbGFiZWw6ICdtZW51J1xuICB9LCBfZGVmaW5lUHJvcGVydHkoX29iamVjdFNwcmVhZDIsIGFsaWduVG9Db250cm9sKHBsYWNlbWVudCksICcxMDAlJyksIF9kZWZpbmVQcm9wZXJ0eShfb2JqZWN0U3ByZWFkMiwgXCJwb3NpdGlvblwiLCAnYWJzb2x1dGUnKSwgX2RlZmluZVByb3BlcnR5KF9vYmplY3RTcHJlYWQyLCBcIndpZHRoXCIsICcxMDAlJyksIF9kZWZpbmVQcm9wZXJ0eShfb2JqZWN0U3ByZWFkMiwgXCJ6SW5kZXhcIiwgMSksIF9vYmplY3RTcHJlYWQyKSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9ycy5uZXV0cmFsMCxcbiAgICBib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyxcbiAgICBib3hTaGFkb3c6ICcwIDAgMCAxcHggaHNsYSgwLCAwJSwgMCUsIDAuMSksIDAgNHB4IDExcHggaHNsYSgwLCAwJSwgMCUsIDAuMSknLFxuICAgIG1hcmdpbkJvdHRvbTogc3BhY2luZy5tZW51R3V0dGVyLFxuICAgIG1hcmdpblRvcDogc3BhY2luZy5tZW51R3V0dGVyXG4gIH0pO1xufTtcbnZhciBQb3J0YWxQbGFjZW1lbnRDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5cbi8vIE5PVEU6IGludGVybmFsIG9ubHlcbnZhciBNZW51UGxhY2VyID0gZnVuY3Rpb24gTWVudVBsYWNlcihwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBtaW5NZW51SGVpZ2h0ID0gcHJvcHMubWluTWVudUhlaWdodCxcbiAgICBtYXhNZW51SGVpZ2h0ID0gcHJvcHMubWF4TWVudUhlaWdodCxcbiAgICBtZW51UGxhY2VtZW50ID0gcHJvcHMubWVudVBsYWNlbWVudCxcbiAgICBtZW51UG9zaXRpb24gPSBwcm9wcy5tZW51UG9zaXRpb24sXG4gICAgbWVudVNob3VsZFNjcm9sbEludG9WaWV3ID0gcHJvcHMubWVudVNob3VsZFNjcm9sbEludG9WaWV3LFxuICAgIHRoZW1lID0gcHJvcHMudGhlbWU7XG4gIHZhciBfcmVmMyA9IFJlYWN0LnVzZUNvbnRleHQoUG9ydGFsUGxhY2VtZW50Q29udGV4dCkgfHwge30sXG4gICAgc2V0UG9ydGFsUGxhY2VtZW50ID0gX3JlZjMuc2V0UG9ydGFsUGxhY2VtZW50O1xuICB2YXIgcmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICB2YXIgX3VzZVN0YXRlID0gUmVhY3QudXNlU3RhdGUobWF4TWVudUhlaWdodCksXG4gICAgX3VzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZSwgMiksXG4gICAgbWF4SGVpZ2h0ID0gX3VzZVN0YXRlMlswXSxcbiAgICBzZXRNYXhIZWlnaHQgPSBfdXNlU3RhdGUyWzFdO1xuICB2YXIgX3VzZVN0YXRlMyA9IFJlYWN0LnVzZVN0YXRlKG51bGwpLFxuICAgIF91c2VTdGF0ZTQgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUzLCAyKSxcbiAgICBwbGFjZW1lbnQgPSBfdXNlU3RhdGU0WzBdLFxuICAgIHNldFBsYWNlbWVudCA9IF91c2VTdGF0ZTRbMV07XG4gIHZhciBjb250cm9sSGVpZ2h0ID0gdGhlbWUuc3BhY2luZy5jb250cm9sSGVpZ2h0O1xuICB1c2VMYXlvdXRFZmZlY3RfX2RlZmF1bHRbXCJkZWZhdWx0XCJdKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbWVudUVsID0gcmVmLmN1cnJlbnQ7XG4gICAgaWYgKCFtZW51RWwpIHJldHVybjtcblxuICAgIC8vIERPIE5PVCBzY3JvbGwgaWYgcG9zaXRpb24gaXMgZml4ZWRcbiAgICB2YXIgaXNGaXhlZFBvc2l0aW9uID0gbWVudVBvc2l0aW9uID09PSAnZml4ZWQnO1xuICAgIHZhciBzaG91bGRTY3JvbGwgPSBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXcgJiYgIWlzRml4ZWRQb3NpdGlvbjtcbiAgICB2YXIgc3RhdGUgPSBnZXRNZW51UGxhY2VtZW50KHtcbiAgICAgIG1heEhlaWdodDogbWF4TWVudUhlaWdodCxcbiAgICAgIG1lbnVFbDogbWVudUVsLFxuICAgICAgbWluSGVpZ2h0OiBtaW5NZW51SGVpZ2h0LFxuICAgICAgcGxhY2VtZW50OiBtZW51UGxhY2VtZW50LFxuICAgICAgc2hvdWxkU2Nyb2xsOiBzaG91bGRTY3JvbGwsXG4gICAgICBpc0ZpeGVkUG9zaXRpb246IGlzRml4ZWRQb3NpdGlvbixcbiAgICAgIGNvbnRyb2xIZWlnaHQ6IGNvbnRyb2xIZWlnaHRcbiAgICB9KTtcbiAgICBzZXRNYXhIZWlnaHQoc3RhdGUubWF4SGVpZ2h0KTtcbiAgICBzZXRQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgICBzZXRQb3J0YWxQbGFjZW1lbnQgPT09IG51bGwgfHwgc2V0UG9ydGFsUGxhY2VtZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZXRQb3J0YWxQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgfSwgW21heE1lbnVIZWlnaHQsIG1lbnVQbGFjZW1lbnQsIG1lbnVQb3NpdGlvbiwgbWVudVNob3VsZFNjcm9sbEludG9WaWV3LCBtaW5NZW51SGVpZ2h0LCBzZXRQb3J0YWxQbGFjZW1lbnQsIGNvbnRyb2xIZWlnaHRdKTtcbiAgcmV0dXJuIGNoaWxkcmVuKHtcbiAgICByZWY6IHJlZixcbiAgICBwbGFjZXJQcm9wczogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBwcm9wcyksIHt9LCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCB8fCBjb2VyY2VQbGFjZW1lbnQobWVudVBsYWNlbWVudCksXG4gICAgICBtYXhIZWlnaHQ6IG1heEhlaWdodFxuICAgIH0pXG4gIH0pO1xufTtcbnZhciBNZW51ID0gZnVuY3Rpb24gTWVudShwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbWVudScsIHtcbiAgICBtZW51OiB0cnVlXG4gIH0pLCB7XG4gICAgcmVmOiBpbm5lclJlZlxuICB9LCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcbnZhciBNZW51JDEgPSBNZW51O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1lbnUgTGlzdFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBtZW51TGlzdENTUyA9IGZ1bmN0aW9uIG1lbnVMaXN0Q1NTKF9yZWY0LCB1bnN0eWxlZCkge1xuICB2YXIgbWF4SGVpZ2h0ID0gX3JlZjQubWF4SGVpZ2h0LFxuICAgIGJhc2VVbml0ID0gX3JlZjQudGhlbWUuc3BhY2luZy5iYXNlVW5pdDtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIG1heEhlaWdodDogbWF4SGVpZ2h0LFxuICAgIG92ZXJmbG93WTogJ2F1dG8nLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIC8vIHJlcXVpcmVkIGZvciBvZmZzZXRbSGVpZ2h0LCBUb3BdID4ga2V5Ym9hcmQgc2Nyb2xsXG4gICAgV2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6ICd0b3VjaCdcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBwYWRkaW5nQm90dG9tOiBiYXNlVW5pdCxcbiAgICBwYWRkaW5nVG9wOiBiYXNlVW5pdFxuICB9KTtcbn07XG52YXIgTWVudUxpc3QgPSBmdW5jdGlvbiBNZW51TGlzdChwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlzTXVsdGkgPSBwcm9wcy5pc011bHRpO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbWVudUxpc3QnLCB7XG4gICAgJ21lbnUtbGlzdCc6IHRydWUsXG4gICAgJ21lbnUtbGlzdC0taXMtbXVsdGknOiBpc011bHRpXG4gIH0pLCB7XG4gICAgcmVmOiBpbm5lclJlZlxuICB9LCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZW51IE5vdGljZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgbm90aWNlQ1NTID0gZnVuY3Rpb24gbm90aWNlQ1NTKF9yZWY1LCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZjUkdGhlbWUgPSBfcmVmNS50aGVtZSxcbiAgICBiYXNlVW5pdCA9IF9yZWY1JHRoZW1lLnNwYWNpbmcuYmFzZVVuaXQsXG4gICAgY29sb3JzID0gX3JlZjUkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBjb2xvcnMubmV1dHJhbDQwLFxuICAgIHBhZGRpbmc6IFwiXCIuY29uY2F0KGJhc2VVbml0ICogMiwgXCJweCBcIikuY29uY2F0KGJhc2VVbml0ICogMywgXCJweFwiKVxuICB9KTtcbn07XG52YXIgbm9PcHRpb25zTWVzc2FnZUNTUyA9IG5vdGljZUNTUztcbnZhciBsb2FkaW5nTWVzc2FnZUNTUyA9IG5vdGljZUNTUztcbnZhciBOb09wdGlvbnNNZXNzYWdlID0gZnVuY3Rpb24gTm9PcHRpb25zTWVzc2FnZShfcmVmNikge1xuICB2YXIgX3JlZjYkY2hpbGRyZW4gPSBfcmVmNi5jaGlsZHJlbixcbiAgICBjaGlsZHJlbiA9IF9yZWY2JGNoaWxkcmVuID09PSB2b2lkIDAgPyAnTm8gb3B0aW9ucycgOiBfcmVmNiRjaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gX3JlZjYuaW5uZXJQcm9wcyxcbiAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjYsIF9leGNsdWRlZCQzKTtcbiAgcmV0dXJuIHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RQcm9wcyksIHt9LCB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHM6IGlubmVyUHJvcHNcbiAgfSksICdub09wdGlvbnNNZXNzYWdlJywge1xuICAgICdtZW51LW5vdGljZSc6IHRydWUsXG4gICAgJ21lbnUtbm90aWNlLS1uby1vcHRpb25zJzogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG52YXIgTG9hZGluZ01lc3NhZ2UgPSBmdW5jdGlvbiBMb2FkaW5nTWVzc2FnZShfcmVmNykge1xuICB2YXIgX3JlZjckY2hpbGRyZW4gPSBfcmVmNy5jaGlsZHJlbixcbiAgICBjaGlsZHJlbiA9IF9yZWY3JGNoaWxkcmVuID09PSB2b2lkIDAgPyAnTG9hZGluZy4uLicgOiBfcmVmNyRjaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gX3JlZjcuaW5uZXJQcm9wcyxcbiAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjcsIF9leGNsdWRlZDIkMSk7XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN0UHJvcHMpLCB7fSwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICBpbm5lclByb3BzOiBpbm5lclByb3BzXG4gIH0pLCAnbG9hZGluZ01lc3NhZ2UnLCB7XG4gICAgJ21lbnUtbm90aWNlJzogdHJ1ZSxcbiAgICAnbWVudS1ub3RpY2UtLWxvYWRpbmcnOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZW51IFBvcnRhbFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBtZW51UG9ydGFsQ1NTID0gZnVuY3Rpb24gbWVudVBvcnRhbENTUyhfcmVmOCkge1xuICB2YXIgcmVjdCA9IF9yZWY4LnJlY3QsXG4gICAgb2Zmc2V0ID0gX3JlZjgub2Zmc2V0LFxuICAgIHBvc2l0aW9uID0gX3JlZjgucG9zaXRpb247XG4gIHJldHVybiB7XG4gICAgbGVmdDogcmVjdC5sZWZ0LFxuICAgIHBvc2l0aW9uOiBwb3NpdGlvbixcbiAgICB0b3A6IG9mZnNldCxcbiAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICB6SW5kZXg6IDFcbiAgfTtcbn07XG52YXIgTWVudVBvcnRhbCA9IGZ1bmN0aW9uIE1lbnVQb3J0YWwocHJvcHMpIHtcbiAgdmFyIGFwcGVuZFRvID0gcHJvcHMuYXBwZW5kVG8sXG4gICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBjb250cm9sRWxlbWVudCA9IHByb3BzLmNvbnRyb2xFbGVtZW50LFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIG1lbnVQbGFjZW1lbnQgPSBwcm9wcy5tZW51UGxhY2VtZW50LFxuICAgIG1lbnVQb3NpdGlvbiA9IHByb3BzLm1lbnVQb3NpdGlvbjtcbiAgdmFyIG1lbnVQb3J0YWxSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIHZhciBjbGVhbnVwUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICB2YXIgX3VzZVN0YXRlNSA9IFJlYWN0LnVzZVN0YXRlKGNvZXJjZVBsYWNlbWVudChtZW51UGxhY2VtZW50KSksXG4gICAgX3VzZVN0YXRlNiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTUsIDIpLFxuICAgIHBsYWNlbWVudCA9IF91c2VTdGF0ZTZbMF0sXG4gICAgc2V0UG9ydGFsUGxhY2VtZW50ID0gX3VzZVN0YXRlNlsxXTtcbiAgdmFyIHBvcnRhbFBsYWNlbWVudENvbnRleHQgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2V0UG9ydGFsUGxhY2VtZW50OiBzZXRQb3J0YWxQbGFjZW1lbnRcbiAgICB9O1xuICB9LCBbXSk7XG4gIHZhciBfdXNlU3RhdGU3ID0gUmVhY3QudXNlU3RhdGUobnVsbCksXG4gICAgX3VzZVN0YXRlOCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTcsIDIpLFxuICAgIGNvbXB1dGVkUG9zaXRpb24gPSBfdXNlU3RhdGU4WzBdLFxuICAgIHNldENvbXB1dGVkUG9zaXRpb24gPSBfdXNlU3RhdGU4WzFdO1xuICB2YXIgdXBkYXRlQ29tcHV0ZWRQb3NpdGlvbiA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWNvbnRyb2xFbGVtZW50KSByZXR1cm47XG4gICAgdmFyIHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudE9iaihjb250cm9sRWxlbWVudCk7XG4gICAgdmFyIHNjcm9sbERpc3RhbmNlID0gbWVudVBvc2l0aW9uID09PSAnZml4ZWQnID8gMCA6IHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgICB2YXIgb2Zmc2V0ID0gcmVjdFtwbGFjZW1lbnRdICsgc2Nyb2xsRGlzdGFuY2U7XG4gICAgaWYgKG9mZnNldCAhPT0gKGNvbXB1dGVkUG9zaXRpb24gPT09IG51bGwgfHwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29tcHV0ZWRQb3NpdGlvbi5vZmZzZXQpIHx8IHJlY3QubGVmdCAhPT0gKGNvbXB1dGVkUG9zaXRpb24gPT09IG51bGwgfHwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29tcHV0ZWRQb3NpdGlvbi5yZWN0LmxlZnQpIHx8IHJlY3Qud2lkdGggIT09IChjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ucmVjdC53aWR0aCkpIHtcbiAgICAgIHNldENvbXB1dGVkUG9zaXRpb24oe1xuICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgcmVjdDogcmVjdFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbY29udHJvbEVsZW1lbnQsIG1lbnVQb3NpdGlvbiwgcGxhY2VtZW50LCBjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ub2Zmc2V0LCBjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ucmVjdC5sZWZ0LCBjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ucmVjdC53aWR0aF0pO1xuICB1c2VMYXlvdXRFZmZlY3RfX2RlZmF1bHRbXCJkZWZhdWx0XCJdKGZ1bmN0aW9uICgpIHtcbiAgICB1cGRhdGVDb21wdXRlZFBvc2l0aW9uKCk7XG4gIH0sIFt1cGRhdGVDb21wdXRlZFBvc2l0aW9uXSk7XG4gIHZhciBydW5BdXRvVXBkYXRlID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgY2xlYW51cFJlZi5jdXJyZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjbGVhbnVwUmVmLmN1cnJlbnQoKTtcbiAgICAgIGNsZWFudXBSZWYuY3VycmVudCA9IG51bGw7XG4gICAgfVxuICAgIGlmIChjb250cm9sRWxlbWVudCAmJiBtZW51UG9ydGFsUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFudXBSZWYuY3VycmVudCA9IGRvbS5hdXRvVXBkYXRlKGNvbnRyb2xFbGVtZW50LCBtZW51UG9ydGFsUmVmLmN1cnJlbnQsIHVwZGF0ZUNvbXB1dGVkUG9zaXRpb24sIHtcbiAgICAgICAgZWxlbWVudFJlc2l6ZTogJ1Jlc2l6ZU9ic2VydmVyJyBpbiB3aW5kb3dcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2NvbnRyb2xFbGVtZW50LCB1cGRhdGVDb21wdXRlZFBvc2l0aW9uXSk7XG4gIHVzZUxheW91dEVmZmVjdF9fZGVmYXVsdFtcImRlZmF1bHRcIl0oZnVuY3Rpb24gKCkge1xuICAgIHJ1bkF1dG9VcGRhdGUoKTtcbiAgfSwgW3J1bkF1dG9VcGRhdGVdKTtcbiAgdmFyIHNldE1lbnVQb3J0YWxFbGVtZW50ID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKG1lbnVQb3J0YWxFbGVtZW50KSB7XG4gICAgbWVudVBvcnRhbFJlZi5jdXJyZW50ID0gbWVudVBvcnRhbEVsZW1lbnQ7XG4gICAgcnVuQXV0b1VwZGF0ZSgpO1xuICB9LCBbcnVuQXV0b1VwZGF0ZV0pO1xuXG4gIC8vIGJhaWwgZWFybHkgaWYgcmVxdWlyZWQgZWxlbWVudHMgYXJlbid0IHByZXNlbnRcbiAgaWYgKCFhcHBlbmRUbyAmJiBtZW51UG9zaXRpb24gIT09ICdmaXhlZCcgfHwgIWNvbXB1dGVkUG9zaXRpb24pIHJldHVybiBudWxsO1xuXG4gIC8vIHNhbWUgd3JhcHBlciBlbGVtZW50IHdoZXRoZXIgZml4ZWQgb3IgcG9ydGFsbGVkXG4gIHZhciBtZW51V3JhcHBlciA9IHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgcmVmOiBzZXRNZW51UG9ydGFsRWxlbWVudFxuICB9LCBnZXRTdHlsZVByb3BzKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJvcHMpLCB7fSwge1xuICAgIG9mZnNldDogY29tcHV0ZWRQb3NpdGlvbi5vZmZzZXQsXG4gICAgcG9zaXRpb246IG1lbnVQb3NpdGlvbixcbiAgICByZWN0OiBjb21wdXRlZFBvc2l0aW9uLnJlY3RcbiAgfSksICdtZW51UG9ydGFsJywge1xuICAgICdtZW51LXBvcnRhbCc6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG4gIHJldHVybiByZWFjdC5qc3goUG9ydGFsUGxhY2VtZW50Q29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBwb3J0YWxQbGFjZW1lbnRDb250ZXh0XG4gIH0sIGFwcGVuZFRvID8gLyojX19QVVJFX18qL3JlYWN0RG9tLmNyZWF0ZVBvcnRhbChtZW51V3JhcHBlciwgYXBwZW5kVG8pIDogbWVudVdyYXBwZXIpO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSb290IENvbnRhaW5lclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBjb250YWluZXJDU1MgPSBmdW5jdGlvbiBjb250YWluZXJDU1MoX3JlZikge1xuICB2YXIgaXNEaXNhYmxlZCA9IF9yZWYuaXNEaXNhYmxlZCxcbiAgICBpc1J0bCA9IF9yZWYuaXNSdGw7XG4gIHJldHVybiB7XG4gICAgbGFiZWw6ICdjb250YWluZXInLFxuICAgIGRpcmVjdGlvbjogaXNSdGwgPyAncnRsJyA6IHVuZGVmaW5lZCxcbiAgICBwb2ludGVyRXZlbnRzOiBpc0Rpc2FibGVkID8gJ25vbmUnIDogdW5kZWZpbmVkLFxuICAgIC8vIGNhbmNlbCBtb3VzZSBldmVudHMgd2hlbiBkaXNhYmxlZFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnXG4gIH07XG59O1xudmFyIFNlbGVjdENvbnRhaW5lciA9IGZ1bmN0aW9uIFNlbGVjdENvbnRhaW5lcihwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZCxcbiAgICBpc1J0bCA9IHByb3BzLmlzUnRsO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnY29udGFpbmVyJywge1xuICAgICctLWlzLWRpc2FibGVkJzogaXNEaXNhYmxlZCxcbiAgICAnLS1pcy1ydGwnOiBpc1J0bFxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVmFsdWUgQ29udGFpbmVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIHZhbHVlQ29udGFpbmVyQ1NTID0gZnVuY3Rpb24gdmFsdWVDb250YWluZXJDU1MoX3JlZjIsIHVuc3R5bGVkKSB7XG4gIHZhciBzcGFjaW5nID0gX3JlZjIudGhlbWUuc3BhY2luZyxcbiAgICBpc011bHRpID0gX3JlZjIuaXNNdWx0aSxcbiAgICBoYXNWYWx1ZSA9IF9yZWYyLmhhc1ZhbHVlLFxuICAgIGNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZSA9IF9yZWYyLnNlbGVjdFByb3BzLmNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZTtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6IGlzTXVsdGkgJiYgaGFzVmFsdWUgJiYgY29udHJvbFNob3VsZFJlbmRlclZhbHVlID8gJ2ZsZXgnIDogJ2dyaWQnLFxuICAgIGZsZXg6IDEsXG4gICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICBXZWJraXRPdmVyZmxvd1Njcm9sbGluZzogJ3RvdWNoJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbidcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBwYWRkaW5nOiBcIlwiLmNvbmNhdChzcGFjaW5nLmJhc2VVbml0IC8gMiwgXCJweCBcIikuY29uY2F0KHNwYWNpbmcuYmFzZVVuaXQgKiAyLCBcInB4XCIpXG4gIH0pO1xufTtcbnZhciBWYWx1ZUNvbnRhaW5lciA9IGZ1bmN0aW9uIFZhbHVlQ29udGFpbmVyKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIGlzTXVsdGkgPSBwcm9wcy5pc011bHRpLFxuICAgIGhhc1ZhbHVlID0gcHJvcHMuaGFzVmFsdWU7XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICd2YWx1ZUNvbnRhaW5lcicsIHtcbiAgICAndmFsdWUtY29udGFpbmVyJzogdHJ1ZSxcbiAgICAndmFsdWUtY29udGFpbmVyLS1pcy1tdWx0aSc6IGlzTXVsdGksXG4gICAgJ3ZhbHVlLWNvbnRhaW5lci0taGFzLXZhbHVlJzogaGFzVmFsdWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEluZGljYXRvciBDb250YWluZXJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgaW5kaWNhdG9yc0NvbnRhaW5lckNTUyA9IGZ1bmN0aW9uIGluZGljYXRvcnNDb250YWluZXJDU1MoKSB7XG4gIHJldHVybiB7XG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgYWxpZ25TZWxmOiAnc3RyZXRjaCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhTaHJpbms6IDBcbiAgfTtcbn07XG52YXIgSW5kaWNhdG9yc0NvbnRhaW5lciA9IGZ1bmN0aW9uIEluZGljYXRvcnNDb250YWluZXIocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdpbmRpY2F0b3JzQ29udGFpbmVyJywge1xuICAgIGluZGljYXRvcnM6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xuXG52YXIgX3RlbXBsYXRlT2JqZWN0O1xudmFyIF9leGNsdWRlZCQyID0gW1wic2l6ZVwiXSxcbiAgX2V4Y2x1ZGVkMiA9IFtcImlubmVyUHJvcHNcIiwgXCJpc1J0bFwiLCBcInNpemVcIl07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBJY29uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG52YXIgX3JlZjIgPSB7XG4gIG5hbWU6IFwiOG1ta2NnXCIsXG4gIHN0eWxlczogXCJkaXNwbGF5OmlubGluZS1ibG9jaztmaWxsOmN1cnJlbnRDb2xvcjtsaW5lLWhlaWdodDoxO3N0cm9rZTpjdXJyZW50Q29sb3I7c3Ryb2tlLXdpZHRoOjBcIlxufSA7XG52YXIgU3ZnID0gZnVuY3Rpb24gU3ZnKF9yZWYpIHtcbiAgdmFyIHNpemUgPSBfcmVmLnNpemUsXG4gICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkJDIpO1xuICByZXR1cm4gcmVhY3QuanN4KFwic3ZnXCIsIF9leHRlbmRzKHtcbiAgICBoZWlnaHQ6IHNpemUsXG4gICAgd2lkdGg6IHNpemUsXG4gICAgdmlld0JveDogXCIwIDAgMjAgMjBcIixcbiAgICBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiLFxuICAgIGZvY3VzYWJsZTogXCJmYWxzZVwiLFxuICAgIGNzczogX3JlZjJcbiAgfSwgcHJvcHMpKTtcbn07XG52YXIgQ3Jvc3NJY29uID0gZnVuY3Rpb24gQ3Jvc3NJY29uKHByb3BzKSB7XG4gIHJldHVybiByZWFjdC5qc3goU3ZnLCBfZXh0ZW5kcyh7XG4gICAgc2l6ZTogMjBcbiAgfSwgcHJvcHMpLCByZWFjdC5qc3goXCJwYXRoXCIsIHtcbiAgICBkOiBcIk0xNC4zNDggMTQuODQ5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwbC0yLjY1MS0zLjAzMC0yLjY1MSAzLjAyOWMtMC40NjkgMC40NjktMS4yMjkgMC40NjktMS42OTcgMC0wLjQ2OS0wLjQ2OS0wLjQ2OS0xLjIyOSAwLTEuNjk3bDIuNzU4LTMuMTUtMi43NTktMy4xNTJjLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI4IDAtMS42OTdzMS4yMjgtMC40NjkgMS42OTcgMGwyLjY1MiAzLjAzMSAyLjY1MS0zLjAzMWMwLjQ2OS0wLjQ2OSAxLjIyOC0wLjQ2OSAxLjY5NyAwczAuNDY5IDEuMjI5IDAgMS42OTdsLTIuNzU4IDMuMTUyIDIuNzU4IDMuMTVjMC40NjkgMC40NjkgMC40NjkgMS4yMjkgMCAxLjY5OHpcIlxuICB9KSk7XG59O1xudmFyIERvd25DaGV2cm9uID0gZnVuY3Rpb24gRG93bkNoZXZyb24ocHJvcHMpIHtcbiAgcmV0dXJuIHJlYWN0LmpzeChTdmcsIF9leHRlbmRzKHtcbiAgICBzaXplOiAyMFxuICB9LCBwcm9wcyksIHJlYWN0LmpzeChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTQuNTE2IDcuNTQ4YzAuNDM2LTAuNDQ2IDEuMDQzLTAuNDgxIDEuNTc2IDBsMy45MDggMy43NDcgMy45MDgtMy43NDdjMC41MzMtMC40ODEgMS4xNDEtMC40NDYgMS41NzQgMCAwLjQzNiAwLjQ0NSAwLjQwOCAxLjE5NyAwIDEuNjE1LTAuNDA2IDAuNDE4LTQuNjk1IDQuNTAyLTQuNjk1IDQuNTAyLTAuMjE3IDAuMjIzLTAuNTAyIDAuMzM1LTAuNzg3IDAuMzM1cy0wLjU3LTAuMTEyLTAuNzg5LTAuMzM1YzAgMC00LjI4Ny00LjA4NC00LjY5NS00LjUwMnMtMC40MzYtMS4xNyAwLTEuNjE1elwiXG4gIH0pKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBCdXR0b25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGJhc2VDU1MgPSBmdW5jdGlvbiBiYXNlQ1NTKF9yZWYzLCB1bnN0eWxlZCkge1xuICB2YXIgaXNGb2N1c2VkID0gX3JlZjMuaXNGb2N1c2VkLFxuICAgIF9yZWYzJHRoZW1lID0gX3JlZjMudGhlbWUsXG4gICAgYmFzZVVuaXQgPSBfcmVmMyR0aGVtZS5zcGFjaW5nLmJhc2VVbml0LFxuICAgIGNvbG9ycyA9IF9yZWYzJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnaW5kaWNhdG9yQ29udGFpbmVyJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gICAgJzpob3Zlcic6IHtcbiAgICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDgwIDogY29sb3JzLm5ldXRyYWw0MFxuICAgIH1cbiAgfSk7XG59O1xudmFyIGRyb3Bkb3duSW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbnZhciBEcm9wZG93bkluZGljYXRvciA9IGZ1bmN0aW9uIERyb3Bkb3duSW5kaWNhdG9yKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnZHJvcGRvd25JbmRpY2F0b3InLCB7XG4gICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICdkcm9wZG93bi1pbmRpY2F0b3InOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4gfHwgcmVhY3QuanN4KERvd25DaGV2cm9uLCBudWxsKSk7XG59O1xudmFyIGNsZWFySW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbnZhciBDbGVhckluZGljYXRvciA9IGZ1bmN0aW9uIENsZWFySW5kaWNhdG9yKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnY2xlYXJJbmRpY2F0b3InLCB7XG4gICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICdjbGVhci1pbmRpY2F0b3InOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4gfHwgcmVhY3QuanN4KENyb3NzSWNvbiwgbnVsbCkpO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgaW5kaWNhdG9yU2VwYXJhdG9yQ1NTID0gZnVuY3Rpb24gaW5kaWNhdG9yU2VwYXJhdG9yQ1NTKF9yZWY0LCB1bnN0eWxlZCkge1xuICB2YXIgaXNEaXNhYmxlZCA9IF9yZWY0LmlzRGlzYWJsZWQsXG4gICAgX3JlZjQkdGhlbWUgPSBfcmVmNC50aGVtZSxcbiAgICBiYXNlVW5pdCA9IF9yZWY0JHRoZW1lLnNwYWNpbmcuYmFzZVVuaXQsXG4gICAgY29sb3JzID0gX3JlZjQkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdpbmRpY2F0b3JTZXBhcmF0b3InLFxuICAgIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICAgIHdpZHRoOiAxXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWwxMCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgbWFyZ2luQm90dG9tOiBiYXNlVW5pdCAqIDIsXG4gICAgbWFyZ2luVG9wOiBiYXNlVW5pdCAqIDJcbiAgfSk7XG59O1xudmFyIEluZGljYXRvclNlcGFyYXRvciA9IGZ1bmN0aW9uIEluZGljYXRvclNlcGFyYXRvcihwcm9wcykge1xuICB2YXIgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiByZWFjdC5qc3goXCJzcGFuXCIsIF9leHRlbmRzKHt9LCBpbm5lclByb3BzLCBnZXRTdHlsZVByb3BzKHByb3BzLCAnaW5kaWNhdG9yU2VwYXJhdG9yJywge1xuICAgICdpbmRpY2F0b3Itc2VwYXJhdG9yJzogdHJ1ZVxuICB9KSkpO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGxvYWRpbmdEb3RBbmltYXRpb25zID0gcmVhY3Qua2V5ZnJhbWVzKF90ZW1wbGF0ZU9iamVjdCB8fCAoX3RlbXBsYXRlT2JqZWN0ID0gX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbChbXCJcXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XFxuICA0MCUgeyBvcGFjaXR5OiAxOyB9XFxuXCJdKSkpO1xudmFyIGxvYWRpbmdJbmRpY2F0b3JDU1MgPSBmdW5jdGlvbiBsb2FkaW5nSW5kaWNhdG9yQ1NTKF9yZWY1LCB1bnN0eWxlZCkge1xuICB2YXIgaXNGb2N1c2VkID0gX3JlZjUuaXNGb2N1c2VkLFxuICAgIHNpemUgPSBfcmVmNS5zaXplLFxuICAgIF9yZWY1JHRoZW1lID0gX3JlZjUudGhlbWUsXG4gICAgY29sb3JzID0gX3JlZjUkdGhlbWUuY29sb3JzLFxuICAgIGJhc2VVbml0ID0gX3JlZjUkdGhlbWUuc3BhY2luZy5iYXNlVW5pdDtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnbG9hZGluZ0luZGljYXRvcicsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG4gICAgYWxpZ25TZWxmOiAnY2VudGVyJyxcbiAgICBmb250U2l6ZTogc2l6ZSxcbiAgICBsaW5lSGVpZ2h0OiAxLFxuICAgIG1hcmdpblJpZ2h0OiBzaXplLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgdmVydGljYWxBbGlnbjogJ21pZGRsZSdcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgcGFkZGluZzogYmFzZVVuaXQgKiAyXG4gIH0pO1xufTtcbnZhciBMb2FkaW5nRG90ID0gZnVuY3Rpb24gTG9hZGluZ0RvdChfcmVmNikge1xuICB2YXIgZGVsYXkgPSBfcmVmNi5kZWxheSxcbiAgICBvZmZzZXQgPSBfcmVmNi5vZmZzZXQ7XG4gIHJldHVybiByZWFjdC5qc3goXCJzcGFuXCIsIHtcbiAgICBjc3M6IC8qI19fUFVSRV9fKi9yZWFjdC5jc3Moe1xuICAgICAgYW5pbWF0aW9uOiBcIlwiLmNvbmNhdChsb2FkaW5nRG90QW5pbWF0aW9ucywgXCIgMXMgZWFzZS1pbi1vdXQgXCIpLmNvbmNhdChkZWxheSwgXCJtcyBpbmZpbml0ZTtcIiksXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdjdXJyZW50Q29sb3InLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtJyxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luTGVmdDogb2Zmc2V0ID8gJzFlbScgOiB1bmRlZmluZWQsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbSdcbiAgICB9LCBcIlwiICwgXCJcIiApXG4gIH0pO1xufTtcbnZhciBMb2FkaW5nSW5kaWNhdG9yID0gZnVuY3Rpb24gTG9hZGluZ0luZGljYXRvcihfcmVmNykge1xuICB2YXIgaW5uZXJQcm9wcyA9IF9yZWY3LmlubmVyUHJvcHMsXG4gICAgaXNSdGwgPSBfcmVmNy5pc1J0bCxcbiAgICBfcmVmNyRzaXplID0gX3JlZjcuc2l6ZSxcbiAgICBzaXplID0gX3JlZjckc2l6ZSA9PT0gdm9pZCAwID8gNCA6IF9yZWY3JHNpemUsXG4gICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWY3LCBfZXhjbHVkZWQyKTtcbiAgcmV0dXJuIHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RQcm9wcyksIHt9LCB7XG4gICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICBpc1J0bDogaXNSdGwsXG4gICAgc2l6ZTogc2l6ZVxuICB9KSwgJ2xvYWRpbmdJbmRpY2F0b3InLCB7XG4gICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICdsb2FkaW5nLWluZGljYXRvcic6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCByZWFjdC5qc3goTG9hZGluZ0RvdCwge1xuICAgIGRlbGF5OiAwLFxuICAgIG9mZnNldDogaXNSdGxcbiAgfSksIHJlYWN0LmpzeChMb2FkaW5nRG90LCB7XG4gICAgZGVsYXk6IDE2MCxcbiAgICBvZmZzZXQ6IHRydWVcbiAgfSksIHJlYWN0LmpzeChMb2FkaW5nRG90LCB7XG4gICAgZGVsYXk6IDMyMCxcbiAgICBvZmZzZXQ6ICFpc1J0bFxuICB9KSk7XG59O1xuXG52YXIgY3NzJDEgPSBmdW5jdGlvbiBjc3MoX3JlZiwgdW5zdHlsZWQpIHtcbiAgdmFyIGlzRGlzYWJsZWQgPSBfcmVmLmlzRGlzYWJsZWQsXG4gICAgaXNGb2N1c2VkID0gX3JlZi5pc0ZvY3VzZWQsXG4gICAgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgY29sb3JzID0gX3JlZiR0aGVtZS5jb2xvcnMsXG4gICAgYm9yZGVyUmFkaXVzID0gX3JlZiR0aGVtZS5ib3JkZXJSYWRpdXMsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnY29udHJvbCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgY3Vyc29yOiAnZGVmYXVsdCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICBtaW5IZWlnaHQ6IHNwYWNpbmcuY29udHJvbEhlaWdodCxcbiAgICBvdXRsaW5lOiAnMCAhaW1wb3J0YW50JyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB0cmFuc2l0aW9uOiAnYWxsIDEwMG1zJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJhY2tncm91bmRDb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsNSA6IGNvbG9ycy5uZXV0cmFsMCxcbiAgICBib3JkZXJDb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsMTAgOiBpc0ZvY3VzZWQgPyBjb2xvcnMucHJpbWFyeSA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMsXG4gICAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gICAgYm9yZGVyV2lkdGg6IDEsXG4gICAgYm94U2hhZG93OiBpc0ZvY3VzZWQgPyBcIjAgMCAwIDFweCBcIi5jb25jYXQoY29sb3JzLnByaW1hcnkpIDogdW5kZWZpbmVkLFxuICAgICcmOmhvdmVyJzoge1xuICAgICAgYm9yZGVyQ29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5wcmltYXJ5IDogY29sb3JzLm5ldXRyYWwzMFxuICAgIH1cbiAgfSk7XG59O1xudmFyIENvbnRyb2wgPSBmdW5jdGlvbiBDb250cm9sKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgIGlzRm9jdXNlZCA9IHByb3BzLmlzRm9jdXNlZCxcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIG1lbnVJc09wZW4gPSBwcm9wcy5tZW51SXNPcGVuO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHtcbiAgICByZWY6IGlubmVyUmVmXG4gIH0sIGdldFN0eWxlUHJvcHMocHJvcHMsICdjb250cm9sJywge1xuICAgIGNvbnRyb2w6IHRydWUsXG4gICAgJ2NvbnRyb2wtLWlzLWRpc2FibGVkJzogaXNEaXNhYmxlZCxcbiAgICAnY29udHJvbC0taXMtZm9jdXNlZCc6IGlzRm9jdXNlZCxcbiAgICAnY29udHJvbC0tbWVudS1pcy1vcGVuJzogbWVudUlzT3BlblxuICB9KSwgaW5uZXJQcm9wcywge1xuICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBpc0Rpc2FibGVkIHx8IHVuZGVmaW5lZFxuICB9KSwgY2hpbGRyZW4pO1xufTtcbnZhciBDb250cm9sJDEgPSBDb250cm9sO1xuXG52YXIgX2V4Y2x1ZGVkJDEgPSBbXCJkYXRhXCJdO1xudmFyIGdyb3VwQ1NTID0gZnVuY3Rpb24gZ3JvdXBDU1MoX3JlZiwgdW5zdHlsZWQpIHtcbiAgdmFyIHNwYWNpbmcgPSBfcmVmLnRoZW1lLnNwYWNpbmc7XG4gIHJldHVybiB1bnN0eWxlZCA/IHt9IDoge1xuICAgIHBhZGRpbmdCb3R0b206IHNwYWNpbmcuYmFzZVVuaXQgKiAyLFxuICAgIHBhZGRpbmdUb3A6IHNwYWNpbmcuYmFzZVVuaXQgKiAyXG4gIH07XG59O1xudmFyIEdyb3VwID0gZnVuY3Rpb24gR3JvdXAocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgY3ggPSBwcm9wcy5jeCxcbiAgICBnZXRTdHlsZXMgPSBwcm9wcy5nZXRTdHlsZXMsXG4gICAgZ2V0Q2xhc3NOYW1lcyA9IHByb3BzLmdldENsYXNzTmFtZXMsXG4gICAgSGVhZGluZyA9IHByb3BzLkhlYWRpbmcsXG4gICAgaGVhZGluZ1Byb3BzID0gcHJvcHMuaGVhZGluZ1Byb3BzLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIGxhYmVsID0gcHJvcHMubGFiZWwsXG4gICAgdGhlbWUgPSBwcm9wcy50aGVtZSxcbiAgICBzZWxlY3RQcm9wcyA9IHByb3BzLnNlbGVjdFByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnZ3JvdXAnLCB7XG4gICAgZ3JvdXA6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCByZWFjdC5qc3goSGVhZGluZywgX2V4dGVuZHMoe30sIGhlYWRpbmdQcm9wcywge1xuICAgIHNlbGVjdFByb3BzOiBzZWxlY3RQcm9wcyxcbiAgICB0aGVtZTogdGhlbWUsXG4gICAgZ2V0U3R5bGVzOiBnZXRTdHlsZXMsXG4gICAgZ2V0Q2xhc3NOYW1lczogZ2V0Q2xhc3NOYW1lcyxcbiAgICBjeDogY3hcbiAgfSksIGxhYmVsKSwgcmVhY3QuanN4KFwiZGl2XCIsIG51bGwsIGNoaWxkcmVuKSk7XG59O1xudmFyIGdyb3VwSGVhZGluZ0NTUyA9IGZ1bmN0aW9uIGdyb3VwSGVhZGluZ0NTUyhfcmVmMiwgdW5zdHlsZWQpIHtcbiAgdmFyIF9yZWYyJHRoZW1lID0gX3JlZjIudGhlbWUsXG4gICAgY29sb3JzID0gX3JlZjIkdGhlbWUuY29sb3JzLFxuICAgIHNwYWNpbmcgPSBfcmVmMiR0aGVtZS5zcGFjaW5nO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdncm91cCcsXG4gICAgY3Vyc29yOiAnZGVmYXVsdCcsXG4gICAgZGlzcGxheTogJ2Jsb2NrJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBjb2xvcnMubmV1dHJhbDQwLFxuICAgIGZvbnRTaXplOiAnNzUlJyxcbiAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgbWFyZ2luQm90dG9tOiAnMC4yNWVtJyxcbiAgICBwYWRkaW5nTGVmdDogc3BhY2luZy5iYXNlVW5pdCAqIDMsXG4gICAgcGFkZGluZ1JpZ2h0OiBzcGFjaW5nLmJhc2VVbml0ICogMyxcbiAgICB0ZXh0VHJhbnNmb3JtOiAndXBwZXJjYXNlJ1xuICB9KTtcbn07XG52YXIgR3JvdXBIZWFkaW5nID0gZnVuY3Rpb24gR3JvdXBIZWFkaW5nKHByb3BzKSB7XG4gIHZhciBfY2xlYW5Db21tb25Qcm9wcyA9IGNsZWFuQ29tbW9uUHJvcHMocHJvcHMpO1xuICAgIF9jbGVhbkNvbW1vblByb3BzLmRhdGE7XG4gICAgdmFyIGlubmVyUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX2NsZWFuQ29tbW9uUHJvcHMsIF9leGNsdWRlZCQxKTtcbiAgcmV0dXJuIHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2dyb3VwSGVhZGluZycsIHtcbiAgICAnZ3JvdXAtaGVhZGluZyc6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpKTtcbn07XG52YXIgR3JvdXAkMSA9IEdyb3VwO1xuXG52YXIgX2V4Y2x1ZGVkID0gW1wiaW5uZXJSZWZcIiwgXCJpc0Rpc2FibGVkXCIsIFwiaXNIaWRkZW5cIiwgXCJpbnB1dENsYXNzTmFtZVwiXTtcbnZhciBpbnB1dENTUyA9IGZ1bmN0aW9uIGlucHV0Q1NTKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZi5pc0Rpc2FibGVkLFxuICAgIHZhbHVlID0gX3JlZi52YWx1ZSxcbiAgICBfcmVmJHRoZW1lID0gX3JlZi50aGVtZSxcbiAgICBzcGFjaW5nID0gX3JlZiR0aGVtZS5zcGFjaW5nLFxuICAgIGNvbG9ycyA9IF9yZWYkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICB2aXNpYmlsaXR5OiBpc0Rpc2FibGVkID8gJ2hpZGRlbicgOiAndmlzaWJsZScsXG4gICAgLy8gZm9yY2UgY3NzIHRvIHJlY29tcHV0ZSB3aGVuIHZhbHVlIGNoYW5nZSBkdWUgdG8gQGVtb3Rpb24gYnVnLlxuICAgIC8vIFdlIGNhbiByZW1vdmUgaXQgd2hlbmV2ZXIgdGhlIGJ1ZyBpcyBmaXhlZC5cbiAgICB0cmFuc2Zvcm06IHZhbHVlID8gJ3RyYW5zbGF0ZVooMCknIDogJydcbiAgfSwgY29udGFpbmVyU3R5bGUpLCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIG1hcmdpbjogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgcGFkZGluZ0JvdHRvbTogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgcGFkZGluZ1RvcDogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgY29sb3I6IGNvbG9ycy5uZXV0cmFsODBcbiAgfSk7XG59O1xudmFyIHNwYWNpbmdTdHlsZSA9IHtcbiAgZ3JpZEFyZWE6ICcxIC8gMicsXG4gIGZvbnQ6ICdpbmhlcml0JyxcbiAgbWluV2lkdGg6ICcycHgnLFxuICBib3JkZXI6IDAsXG4gIG1hcmdpbjogMCxcbiAgb3V0bGluZTogMCxcbiAgcGFkZGluZzogMFxufTtcbnZhciBjb250YWluZXJTdHlsZSA9IHtcbiAgZmxleDogJzEgMSBhdXRvJyxcbiAgZGlzcGxheTogJ2lubGluZS1ncmlkJyxcbiAgZ3JpZEFyZWE6ICcxIC8gMSAvIDIgLyAzJyxcbiAgZ3JpZFRlbXBsYXRlQ29sdW1uczogJzAgbWluLWNvbnRlbnQnLFxuICAnJjphZnRlcic6IF9vYmplY3RTcHJlYWQoe1xuICAgIGNvbnRlbnQ6ICdhdHRyKGRhdGEtdmFsdWUpIFwiIFwiJyxcbiAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcbiAgICB3aGl0ZVNwYWNlOiAncHJlJ1xuICB9LCBzcGFjaW5nU3R5bGUpXG59O1xudmFyIGlucHV0U3R5bGUgPSBmdW5jdGlvbiBpbnB1dFN0eWxlKGlzSGlkZGVuKSB7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ2lucHV0JyxcbiAgICBjb2xvcjogJ2luaGVyaXQnLFxuICAgIGJhY2tncm91bmQ6IDAsXG4gICAgb3BhY2l0eTogaXNIaWRkZW4gPyAwIDogMSxcbiAgICB3aWR0aDogJzEwMCUnXG4gIH0sIHNwYWNpbmdTdHlsZSk7XG59O1xudmFyIElucHV0ID0gZnVuY3Rpb24gSW5wdXQocHJvcHMpIHtcbiAgdmFyIGN4ID0gcHJvcHMuY3gsXG4gICAgdmFsdWUgPSBwcm9wcy52YWx1ZTtcbiAgdmFyIF9jbGVhbkNvbW1vblByb3BzID0gY2xlYW5Db21tb25Qcm9wcyhwcm9wcyksXG4gICAgaW5uZXJSZWYgPSBfY2xlYW5Db21tb25Qcm9wcy5pbm5lclJlZixcbiAgICBpc0Rpc2FibGVkID0gX2NsZWFuQ29tbW9uUHJvcHMuaXNEaXNhYmxlZCxcbiAgICBpc0hpZGRlbiA9IF9jbGVhbkNvbW1vblByb3BzLmlzSGlkZGVuLFxuICAgIGlucHV0Q2xhc3NOYW1lID0gX2NsZWFuQ29tbW9uUHJvcHMuaW5wdXRDbGFzc05hbWUsXG4gICAgaW5uZXJQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfY2xlYW5Db21tb25Qcm9wcywgX2V4Y2x1ZGVkKTtcbiAgcmV0dXJuIHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2lucHV0Jywge1xuICAgICdpbnB1dC1jb250YWluZXInOiB0cnVlXG4gIH0pLCB7XG4gICAgXCJkYXRhLXZhbHVlXCI6IHZhbHVlIHx8ICcnXG4gIH0pLCByZWFjdC5qc3goXCJpbnB1dFwiLCBfZXh0ZW5kcyh7XG4gICAgY2xhc3NOYW1lOiBjeCh7XG4gICAgICBpbnB1dDogdHJ1ZVxuICAgIH0sIGlucHV0Q2xhc3NOYW1lKSxcbiAgICByZWY6IGlubmVyUmVmLFxuICAgIHN0eWxlOiBpbnB1dFN0eWxlKGlzSGlkZGVuKSxcbiAgICBkaXNhYmxlZDogaXNEaXNhYmxlZFxuICB9LCBpbm5lclByb3BzKSkpO1xufTtcbnZhciBJbnB1dCQxID0gSW5wdXQ7XG5cbnZhciBtdWx0aVZhbHVlQ1NTID0gZnVuY3Rpb24gbXVsdGlWYWx1ZUNTUyhfcmVmLCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZyxcbiAgICBib3JkZXJSYWRpdXMgPSBfcmVmJHRoZW1lLmJvcmRlclJhZGl1cyxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnbXVsdGlWYWx1ZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIG1pbldpZHRoOiAwXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBjb2xvcnMubmV1dHJhbDEwLFxuICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzIC8gMixcbiAgICBtYXJnaW46IHNwYWNpbmcuYmFzZVVuaXQgLyAyXG4gIH0pO1xufTtcbnZhciBtdWx0aVZhbHVlTGFiZWxDU1MgPSBmdW5jdGlvbiBtdWx0aVZhbHVlTGFiZWxDU1MoX3JlZjIsIHVuc3R5bGVkKSB7XG4gIHZhciBfcmVmMiR0aGVtZSA9IF9yZWYyLnRoZW1lLFxuICAgIGJvcmRlclJhZGl1cyA9IF9yZWYyJHRoZW1lLmJvcmRlclJhZGl1cyxcbiAgICBjb2xvcnMgPSBfcmVmMiR0aGVtZS5jb2xvcnMsXG4gICAgY3JvcFdpdGhFbGxpcHNpcyA9IF9yZWYyLmNyb3BXaXRoRWxsaXBzaXM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgdGV4dE92ZXJmbG93OiBjcm9wV2l0aEVsbGlwc2lzIHx8IGNyb3BXaXRoRWxsaXBzaXMgPT09IHVuZGVmaW5lZCA/ICdlbGxpcHNpcycgOiB1bmRlZmluZWQsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCdcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyAvIDIsXG4gICAgY29sb3I6IGNvbG9ycy5uZXV0cmFsODAsXG4gICAgZm9udFNpemU6ICc4NSUnLFxuICAgIHBhZGRpbmc6IDMsXG4gICAgcGFkZGluZ0xlZnQ6IDZcbiAgfSk7XG59O1xudmFyIG11bHRpVmFsdWVSZW1vdmVDU1MgPSBmdW5jdGlvbiBtdWx0aVZhbHVlUmVtb3ZlQ1NTKF9yZWYzLCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZjMkdGhlbWUgPSBfcmVmMy50aGVtZSxcbiAgICBzcGFjaW5nID0gX3JlZjMkdGhlbWUuc3BhY2luZyxcbiAgICBib3JkZXJSYWRpdXMgPSBfcmVmMyR0aGVtZS5ib3JkZXJSYWRpdXMsXG4gICAgY29sb3JzID0gX3JlZjMkdGhlbWUuY29sb3JzLFxuICAgIGlzRm9jdXNlZCA9IF9yZWYzLmlzRm9jdXNlZDtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6ICdmbGV4J1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzIC8gMixcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5kYW5nZXJMaWdodCA6IHVuZGVmaW5lZCxcbiAgICBwYWRkaW5nTGVmdDogc3BhY2luZy5iYXNlVW5pdCxcbiAgICBwYWRkaW5nUmlnaHQ6IHNwYWNpbmcuYmFzZVVuaXQsXG4gICAgJzpob3Zlcic6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogY29sb3JzLmRhbmdlckxpZ2h0LFxuICAgICAgY29sb3I6IGNvbG9ycy5kYW5nZXJcbiAgICB9XG4gIH0pO1xufTtcbnZhciBNdWx0aVZhbHVlR2VuZXJpYyA9IGZ1bmN0aW9uIE11bHRpVmFsdWVHZW5lcmljKF9yZWY0KSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWY0LmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBfcmVmNC5pbm5lclByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIGlubmVyUHJvcHMsIGNoaWxkcmVuKTtcbn07XG52YXIgTXVsdGlWYWx1ZUNvbnRhaW5lciA9IE11bHRpVmFsdWVHZW5lcmljO1xudmFyIE11bHRpVmFsdWVMYWJlbCA9IE11bHRpVmFsdWVHZW5lcmljO1xuZnVuY3Rpb24gTXVsdGlWYWx1ZVJlbW92ZShfcmVmNSkge1xuICB2YXIgY2hpbGRyZW4gPSBfcmVmNS5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gX3JlZjUuaW5uZXJQcm9wcztcbiAgcmV0dXJuIHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgcm9sZTogXCJidXR0b25cIlxuICB9LCBpbm5lclByb3BzKSwgY2hpbGRyZW4gfHwgcmVhY3QuanN4KENyb3NzSWNvbiwge1xuICAgIHNpemU6IDE0XG4gIH0pKTtcbn1cbnZhciBNdWx0aVZhbHVlID0gZnVuY3Rpb24gTXVsdGlWYWx1ZShwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBjb21wb25lbnRzID0gcHJvcHMuY29tcG9uZW50cyxcbiAgICBkYXRhID0gcHJvcHMuZGF0YSxcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZCxcbiAgICByZW1vdmVQcm9wcyA9IHByb3BzLnJlbW92ZVByb3BzLFxuICAgIHNlbGVjdFByb3BzID0gcHJvcHMuc2VsZWN0UHJvcHM7XG4gIHZhciBDb250YWluZXIgPSBjb21wb25lbnRzLkNvbnRhaW5lcixcbiAgICBMYWJlbCA9IGNvbXBvbmVudHMuTGFiZWwsXG4gICAgUmVtb3ZlID0gY29tcG9uZW50cy5SZW1vdmU7XG4gIHJldHVybiByZWFjdC5qc3goQ29udGFpbmVyLCB7XG4gICAgZGF0YTogZGF0YSxcbiAgICBpbm5lclByb3BzOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdtdWx0aVZhbHVlJywge1xuICAgICAgJ211bHRpLXZhbHVlJzogdHJ1ZSxcbiAgICAgICdtdWx0aS12YWx1ZS0taXMtZGlzYWJsZWQnOiBpc0Rpc2FibGVkXG4gICAgfSkpLCBpbm5lclByb3BzKSxcbiAgICBzZWxlY3RQcm9wczogc2VsZWN0UHJvcHNcbiAgfSwgcmVhY3QuanN4KExhYmVsLCB7XG4gICAgZGF0YTogZGF0YSxcbiAgICBpbm5lclByb3BzOiBfb2JqZWN0U3ByZWFkKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbXVsdGlWYWx1ZUxhYmVsJywge1xuICAgICAgJ211bHRpLXZhbHVlX19sYWJlbCc6IHRydWVcbiAgICB9KSksXG4gICAgc2VsZWN0UHJvcHM6IHNlbGVjdFByb3BzXG4gIH0sIGNoaWxkcmVuKSwgcmVhY3QuanN4KFJlbW92ZSwge1xuICAgIGRhdGE6IGRhdGEsXG4gICAgaW5uZXJQcm9wczogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbXVsdGlWYWx1ZVJlbW92ZScsIHtcbiAgICAgICdtdWx0aS12YWx1ZV9fcmVtb3ZlJzogdHJ1ZVxuICAgIH0pKSwge30sIHtcbiAgICAgICdhcmlhLWxhYmVsJzogXCJSZW1vdmUgXCIuY29uY2F0KGNoaWxkcmVuIHx8ICdvcHRpb24nKVxuICAgIH0sIHJlbW92ZVByb3BzKSxcbiAgICBzZWxlY3RQcm9wczogc2VsZWN0UHJvcHNcbiAgfSkpO1xufTtcbnZhciBNdWx0aVZhbHVlJDEgPSBNdWx0aVZhbHVlO1xuXG52YXIgb3B0aW9uQ1NTID0gZnVuY3Rpb24gb3B0aW9uQ1NTKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZi5pc0Rpc2FibGVkLFxuICAgIGlzRm9jdXNlZCA9IF9yZWYuaXNGb2N1c2VkLFxuICAgIGlzU2VsZWN0ZWQgPSBfcmVmLmlzU2VsZWN0ZWQsXG4gICAgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZyxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnb3B0aW9uJyxcbiAgICBjdXJzb3I6ICdkZWZhdWx0JyxcbiAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgIGZvbnRTaXplOiAnaW5oZXJpdCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gICAgV2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6ICdyZ2JhKDAsIDAsIDAsIDApJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJhY2tncm91bmRDb2xvcjogaXNTZWxlY3RlZCA/IGNvbG9ycy5wcmltYXJ5IDogaXNGb2N1c2VkID8gY29sb3JzLnByaW1hcnkyNSA6ICd0cmFuc3BhcmVudCcsXG4gICAgY29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDIwIDogaXNTZWxlY3RlZCA/IGNvbG9ycy5uZXV0cmFsMCA6ICdpbmhlcml0JyxcbiAgICBwYWRkaW5nOiBcIlwiLmNvbmNhdChzcGFjaW5nLmJhc2VVbml0ICogMiwgXCJweCBcIikuY29uY2F0KHNwYWNpbmcuYmFzZVVuaXQgKiAzLCBcInB4XCIpLFxuICAgIC8vIHByb3ZpZGUgc29tZSBhZmZvcmRhbmNlIG9uIHRvdWNoIGRldmljZXNcbiAgICAnOmFjdGl2ZSc6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogIWlzRGlzYWJsZWQgPyBpc1NlbGVjdGVkID8gY29sb3JzLnByaW1hcnkgOiBjb2xvcnMucHJpbWFyeTUwIDogdW5kZWZpbmVkXG4gICAgfVxuICB9KTtcbn07XG52YXIgT3B0aW9uID0gZnVuY3Rpb24gT3B0aW9uKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgIGlzRm9jdXNlZCA9IHByb3BzLmlzRm9jdXNlZCxcbiAgICBpc1NlbGVjdGVkID0gcHJvcHMuaXNTZWxlY3RlZCxcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnb3B0aW9uJywge1xuICAgIG9wdGlvbjogdHJ1ZSxcbiAgICAnb3B0aW9uLS1pcy1kaXNhYmxlZCc6IGlzRGlzYWJsZWQsXG4gICAgJ29wdGlvbi0taXMtZm9jdXNlZCc6IGlzRm9jdXNlZCxcbiAgICAnb3B0aW9uLS1pcy1zZWxlY3RlZCc6IGlzU2VsZWN0ZWRcbiAgfSksIHtcbiAgICByZWY6IGlubmVyUmVmLFxuICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBpc0Rpc2FibGVkXG4gIH0sIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xudmFyIE9wdGlvbiQxID0gT3B0aW9uO1xuXG52YXIgcGxhY2Vob2xkZXJDU1MgPSBmdW5jdGlvbiBwbGFjZWhvbGRlckNTUyhfcmVmLCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZyxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAncGxhY2Vob2xkZXInLFxuICAgIGdyaWRBcmVhOiAnMSAvIDEgLyAyIC8gMydcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBjb2xvcjogY29sb3JzLm5ldXRyYWw1MCxcbiAgICBtYXJnaW5MZWZ0OiBzcGFjaW5nLmJhc2VVbml0IC8gMixcbiAgICBtYXJnaW5SaWdodDogc3BhY2luZy5iYXNlVW5pdCAvIDJcbiAgfSk7XG59O1xudmFyIFBsYWNlaG9sZGVyID0gZnVuY3Rpb24gUGxhY2Vob2xkZXIocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdwbGFjZWhvbGRlcicsIHtcbiAgICBwbGFjZWhvbGRlcjogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG52YXIgUGxhY2Vob2xkZXIkMSA9IFBsYWNlaG9sZGVyO1xuXG52YXIgY3NzID0gZnVuY3Rpb24gY3NzKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZi5pc0Rpc2FibGVkLFxuICAgIF9yZWYkdGhlbWUgPSBfcmVmLnRoZW1lLFxuICAgIHNwYWNpbmcgPSBfcmVmJHRoZW1lLnNwYWNpbmcsXG4gICAgY29sb3JzID0gX3JlZiR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ3NpbmdsZVZhbHVlJyxcbiAgICBncmlkQXJlYTogJzEgLyAxIC8gMiAvIDMnLFxuICAgIG1heFdpZHRoOiAnMTAwJScsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWw0MCA6IGNvbG9ycy5uZXV0cmFsODAsXG4gICAgbWFyZ2luTGVmdDogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgbWFyZ2luUmlnaHQ6IHNwYWNpbmcuYmFzZVVuaXQgLyAyXG4gIH0pO1xufTtcbnZhciBTaW5nbGVWYWx1ZSA9IGZ1bmN0aW9uIFNpbmdsZVZhbHVlKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnc2luZ2xlVmFsdWUnLCB7XG4gICAgJ3NpbmdsZS12YWx1ZSc6IHRydWUsXG4gICAgJ3NpbmdsZS12YWx1ZS0taXMtZGlzYWJsZWQnOiBpc0Rpc2FibGVkXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcbnZhciBTaW5nbGVWYWx1ZSQxID0gU2luZ2xlVmFsdWU7XG5cbnZhciBjb21wb25lbnRzID0ge1xuICBDbGVhckluZGljYXRvcjogQ2xlYXJJbmRpY2F0b3IsXG4gIENvbnRyb2w6IENvbnRyb2wkMSxcbiAgRHJvcGRvd25JbmRpY2F0b3I6IERyb3Bkb3duSW5kaWNhdG9yLFxuICBEb3duQ2hldnJvbjogRG93bkNoZXZyb24sXG4gIENyb3NzSWNvbjogQ3Jvc3NJY29uLFxuICBHcm91cDogR3JvdXAkMSxcbiAgR3JvdXBIZWFkaW5nOiBHcm91cEhlYWRpbmcsXG4gIEluZGljYXRvcnNDb250YWluZXI6IEluZGljYXRvcnNDb250YWluZXIsXG4gIEluZGljYXRvclNlcGFyYXRvcjogSW5kaWNhdG9yU2VwYXJhdG9yLFxuICBJbnB1dDogSW5wdXQkMSxcbiAgTG9hZGluZ0luZGljYXRvcjogTG9hZGluZ0luZGljYXRvcixcbiAgTWVudTogTWVudSQxLFxuICBNZW51TGlzdDogTWVudUxpc3QsXG4gIE1lbnVQb3J0YWw6IE1lbnVQb3J0YWwsXG4gIExvYWRpbmdNZXNzYWdlOiBMb2FkaW5nTWVzc2FnZSxcbiAgTm9PcHRpb25zTWVzc2FnZTogTm9PcHRpb25zTWVzc2FnZSxcbiAgTXVsdGlWYWx1ZTogTXVsdGlWYWx1ZSQxLFxuICBNdWx0aVZhbHVlQ29udGFpbmVyOiBNdWx0aVZhbHVlQ29udGFpbmVyLFxuICBNdWx0aVZhbHVlTGFiZWw6IE11bHRpVmFsdWVMYWJlbCxcbiAgTXVsdGlWYWx1ZVJlbW92ZTogTXVsdGlWYWx1ZVJlbW92ZSxcbiAgT3B0aW9uOiBPcHRpb24kMSxcbiAgUGxhY2Vob2xkZXI6IFBsYWNlaG9sZGVyJDEsXG4gIFNlbGVjdENvbnRhaW5lcjogU2VsZWN0Q29udGFpbmVyLFxuICBTaW5nbGVWYWx1ZTogU2luZ2xlVmFsdWUkMSxcbiAgVmFsdWVDb250YWluZXI6IFZhbHVlQ29udGFpbmVyXG59O1xudmFyIGRlZmF1bHRDb21wb25lbnRzID0gZnVuY3Rpb24gZGVmYXVsdENvbXBvbmVudHMocHJvcHMpIHtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgY29tcG9uZW50cyksIHByb3BzLmNvbXBvbmVudHMpO1xufTtcblxuZXhwb3J0cy5NZW51UGxhY2VyID0gTWVudVBsYWNlcjtcbmV4cG9ydHMuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG5leHBvcnRzLmNsZWFuVmFsdWUgPSBjbGVhblZhbHVlO1xuZXhwb3J0cy5jbGVhckluZGljYXRvckNTUyA9IGNsZWFySW5kaWNhdG9yQ1NTO1xuZXhwb3J0cy5jb21wb25lbnRzID0gY29tcG9uZW50cztcbmV4cG9ydHMuY29udGFpbmVyQ1NTID0gY29udGFpbmVyQ1NTO1xuZXhwb3J0cy5jc3MgPSBjc3MkMTtcbmV4cG9ydHMuY3NzJDEgPSBjc3M7XG5leHBvcnRzLmRlZmF1bHRDb21wb25lbnRzID0gZGVmYXVsdENvbXBvbmVudHM7XG5leHBvcnRzLmRyb3Bkb3duSW5kaWNhdG9yQ1NTID0gZHJvcGRvd25JbmRpY2F0b3JDU1M7XG5leHBvcnRzLmdyb3VwQ1NTID0gZ3JvdXBDU1M7XG5leHBvcnRzLmdyb3VwSGVhZGluZ0NTUyA9IGdyb3VwSGVhZGluZ0NTUztcbmV4cG9ydHMuaGFuZGxlSW5wdXRDaGFuZ2UgPSBoYW5kbGVJbnB1dENoYW5nZTtcbmV4cG9ydHMuaW5kaWNhdG9yU2VwYXJhdG9yQ1NTID0gaW5kaWNhdG9yU2VwYXJhdG9yQ1NTO1xuZXhwb3J0cy5pbmRpY2F0b3JzQ29udGFpbmVyQ1NTID0gaW5kaWNhdG9yc0NvbnRhaW5lckNTUztcbmV4cG9ydHMuaW5wdXRDU1MgPSBpbnB1dENTUztcbmV4cG9ydHMuaXNEb2N1bWVudEVsZW1lbnQgPSBpc0RvY3VtZW50RWxlbWVudDtcbmV4cG9ydHMuaXNNb2JpbGVEZXZpY2UgPSBpc01vYmlsZURldmljZTtcbmV4cG9ydHMuaXNUb3VjaENhcGFibGUgPSBpc1RvdWNoQ2FwYWJsZTtcbmV4cG9ydHMubG9hZGluZ0luZGljYXRvckNTUyA9IGxvYWRpbmdJbmRpY2F0b3JDU1M7XG5leHBvcnRzLmxvYWRpbmdNZXNzYWdlQ1NTID0gbG9hZGluZ01lc3NhZ2VDU1M7XG5leHBvcnRzLm1lbnVDU1MgPSBtZW51Q1NTO1xuZXhwb3J0cy5tZW51TGlzdENTUyA9IG1lbnVMaXN0Q1NTO1xuZXhwb3J0cy5tZW51UG9ydGFsQ1NTID0gbWVudVBvcnRhbENTUztcbmV4cG9ydHMubXVsdGlWYWx1ZUFzVmFsdWUgPSBtdWx0aVZhbHVlQXNWYWx1ZTtcbmV4cG9ydHMubXVsdGlWYWx1ZUNTUyA9IG11bHRpVmFsdWVDU1M7XG5leHBvcnRzLm11bHRpVmFsdWVMYWJlbENTUyA9IG11bHRpVmFsdWVMYWJlbENTUztcbmV4cG9ydHMubXVsdGlWYWx1ZVJlbW92ZUNTUyA9IG11bHRpVmFsdWVSZW1vdmVDU1M7XG5leHBvcnRzLm5vT3B0aW9uc01lc3NhZ2VDU1MgPSBub09wdGlvbnNNZXNzYWdlQ1NTO1xuZXhwb3J0cy5ub29wID0gbm9vcDtcbmV4cG9ydHMubm90TnVsbGlzaCA9IG5vdE51bGxpc2g7XG5leHBvcnRzLm9wdGlvbkNTUyA9IG9wdGlvbkNTUztcbmV4cG9ydHMucGxhY2Vob2xkZXJDU1MgPSBwbGFjZWhvbGRlckNTUztcbmV4cG9ydHMucmVtb3ZlUHJvcHMgPSByZW1vdmVQcm9wcztcbmV4cG9ydHMuc2Nyb2xsSW50b1ZpZXcgPSBzY3JvbGxJbnRvVmlldztcbmV4cG9ydHMuc2luZ2xlVmFsdWVBc1ZhbHVlID0gc2luZ2xlVmFsdWVBc1ZhbHVlO1xuZXhwb3J0cy5zdXBwb3J0c1Bhc3NpdmVFdmVudHMgPSBzdXBwb3J0c1Bhc3NpdmVFdmVudHM7XG5leHBvcnRzLnZhbHVlQ29udGFpbmVyQ1NTID0gdmFsdWVDb250YWluZXJDU1M7XG5leHBvcnRzLnZhbHVlVGVybmFyeSA9IHZhbHVlVGVybmFyeTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIF9leHRlbmRzID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzJyk7XG52YXIgX29iamVjdFNwcmVhZCA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0U3ByZWFkMicpO1xudmFyIF9jbGFzc0NhbGxDaGVjayA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snKTtcbnZhciBfY3JlYXRlQ2xhc3MgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJyk7XG52YXIgX2luaGVyaXRzID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0cycpO1xudmFyIF9jcmVhdGVTdXBlciA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlU3VwZXInKTtcbnZhciBfdG9Db25zdW1hYmxlQXJyYXkgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5Jyk7XG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xudmFyIGluZGV4ID0gcmVxdWlyZSgnLi9pbmRleC02NjVjNGVkOC5janMucHJvZC5qcycpO1xudmFyIHJlYWN0ID0gcmVxdWlyZSgnQGVtb3Rpb24vcmVhY3QnKTtcbnZhciBtZW1vaXplT25lID0gcmVxdWlyZSgnbWVtb2l6ZS1vbmUnKTtcbnZhciBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wRGVmYXVsdCAoZSkgeyByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogeyAnZGVmYXVsdCc6IGUgfTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcE5hbWVzcGFjZShlKSB7XG4gIGlmIChlICYmIGUuX19lc01vZHVsZSkgcmV0dXJuIGU7XG4gIHZhciBuID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgaWYgKGUpIHtcbiAgICBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICBpZiAoayAhPT0gJ2RlZmF1bHQnKSB7XG4gICAgICAgIHZhciBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCBrKTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIGssIGQuZ2V0ID8gZCA6IHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZVtrXTsgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBuW1wiZGVmYXVsdFwiXSA9IGU7XG4gIHJldHVybiBPYmplY3QuZnJlZXplKG4pO1xufVxuXG52YXIgUmVhY3RfX25hbWVzcGFjZSA9IC8qI19fUFVSRV9fKi9faW50ZXJvcE5hbWVzcGFjZShSZWFjdCk7XG52YXIgbWVtb2l6ZU9uZV9fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9faW50ZXJvcERlZmF1bHQobWVtb2l6ZU9uZSk7XG5cbi8vIEFzc2lzdGl2ZSB0ZXh0IHRvIGRlc2NyaWJlIHZpc3VhbCBlbGVtZW50cy4gSGlkZGVuIGZvciBzaWdodGVkIHVzZXJzLlxudmFyIF9yZWYgPSB7XG4gIG5hbWU6IFwiN3BnMGNqLWExMXlUZXh0XCIsXG4gIHN0eWxlczogXCJsYWJlbDphMTF5VGV4dDt6LWluZGV4Ojk5OTk7Ym9yZGVyOjA7Y2xpcDpyZWN0KDFweCwgMXB4LCAxcHgsIDFweCk7aGVpZ2h0OjFweDt3aWR0aDoxcHg7cG9zaXRpb246YWJzb2x1dGU7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDt3aGl0ZS1zcGFjZTpub3dyYXBcIlxufSA7XG52YXIgQTExeVRleHQgPSBmdW5jdGlvbiBBMTF5VGV4dChwcm9wcykge1xuICByZXR1cm4gcmVhY3QuanN4KFwic3BhblwiLCBfZXh0ZW5kcyh7XG4gICAgY3NzOiBfcmVmXG4gIH0sIHByb3BzKSk7XG59O1xudmFyIEExMXlUZXh0JDEgPSBBMTF5VGV4dDtcblxudmFyIGRlZmF1bHRBcmlhTGl2ZU1lc3NhZ2VzID0ge1xuICBndWlkYW5jZTogZnVuY3Rpb24gZ3VpZGFuY2UocHJvcHMpIHtcbiAgICB2YXIgaXNTZWFyY2hhYmxlID0gcHJvcHMuaXNTZWFyY2hhYmxlLFxuICAgICAgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGksXG4gICAgICB0YWJTZWxlY3RzVmFsdWUgPSBwcm9wcy50YWJTZWxlY3RzVmFsdWUsXG4gICAgICBjb250ZXh0ID0gcHJvcHMuY29udGV4dCxcbiAgICAgIGlzSW5pdGlhbEZvY3VzID0gcHJvcHMuaXNJbml0aWFsRm9jdXM7XG4gICAgc3dpdGNoIChjb250ZXh0KSB7XG4gICAgICBjYXNlICdtZW51JzpcbiAgICAgICAgcmV0dXJuIFwiVXNlIFVwIGFuZCBEb3duIHRvIGNob29zZSBvcHRpb25zLCBwcmVzcyBFbnRlciB0byBzZWxlY3QgdGhlIGN1cnJlbnRseSBmb2N1c2VkIG9wdGlvbiwgcHJlc3MgRXNjYXBlIHRvIGV4aXQgdGhlIG1lbnVcIi5jb25jYXQodGFiU2VsZWN0c1ZhbHVlID8gJywgcHJlc3MgVGFiIHRvIHNlbGVjdCB0aGUgb3B0aW9uIGFuZCBleGl0IHRoZSBtZW51JyA6ICcnLCBcIi5cIik7XG4gICAgICBjYXNlICdpbnB1dCc6XG4gICAgICAgIHJldHVybiBpc0luaXRpYWxGb2N1cyA/IFwiXCIuY29uY2F0KHByb3BzWydhcmlhLWxhYmVsJ10gfHwgJ1NlbGVjdCcsIFwiIGlzIGZvY3VzZWQgXCIpLmNvbmNhdChpc1NlYXJjaGFibGUgPyAnLHR5cGUgdG8gcmVmaW5lIGxpc3QnIDogJycsIFwiLCBwcmVzcyBEb3duIHRvIG9wZW4gdGhlIG1lbnUsIFwiKS5jb25jYXQoaXNNdWx0aSA/ICcgcHJlc3MgbGVmdCB0byBmb2N1cyBzZWxlY3RlZCB2YWx1ZXMnIDogJycpIDogJyc7XG4gICAgICBjYXNlICd2YWx1ZSc6XG4gICAgICAgIHJldHVybiAnVXNlIGxlZnQgYW5kIHJpZ2h0IHRvIHRvZ2dsZSBiZXR3ZWVuIGZvY3VzZWQgdmFsdWVzLCBwcmVzcyBCYWNrc3BhY2UgdG8gcmVtb3ZlIHRoZSBjdXJyZW50bHkgZm9jdXNlZCB2YWx1ZSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9LFxuICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocHJvcHMpIHtcbiAgICB2YXIgYWN0aW9uID0gcHJvcHMuYWN0aW9uLFxuICAgICAgX3Byb3BzJGxhYmVsID0gcHJvcHMubGFiZWwsXG4gICAgICBsYWJlbCA9IF9wcm9wcyRsYWJlbCA9PT0gdm9pZCAwID8gJycgOiBfcHJvcHMkbGFiZWwsXG4gICAgICBsYWJlbHMgPSBwcm9wcy5sYWJlbHMsXG4gICAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZDtcbiAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgY2FzZSAnZGVzZWxlY3Qtb3B0aW9uJzpcbiAgICAgIGNhc2UgJ3BvcC12YWx1ZSc6XG4gICAgICBjYXNlICdyZW1vdmUtdmFsdWUnOlxuICAgICAgICByZXR1cm4gXCJvcHRpb24gXCIuY29uY2F0KGxhYmVsLCBcIiwgZGVzZWxlY3RlZC5cIik7XG4gICAgICBjYXNlICdjbGVhcic6XG4gICAgICAgIHJldHVybiAnQWxsIHNlbGVjdGVkIG9wdGlvbnMgaGF2ZSBiZWVuIGNsZWFyZWQuJztcbiAgICAgIGNhc2UgJ2luaXRpYWwtaW5wdXQtZm9jdXMnOlxuICAgICAgICByZXR1cm4gXCJvcHRpb25cIi5jb25jYXQobGFiZWxzLmxlbmd0aCA+IDEgPyAncycgOiAnJywgXCIgXCIpLmNvbmNhdChsYWJlbHMuam9pbignLCcpLCBcIiwgc2VsZWN0ZWQuXCIpO1xuICAgICAgY2FzZSAnc2VsZWN0LW9wdGlvbic6XG4gICAgICAgIHJldHVybiBpc0Rpc2FibGVkID8gXCJvcHRpb24gXCIuY29uY2F0KGxhYmVsLCBcIiBpcyBkaXNhYmxlZC4gU2VsZWN0IGFub3RoZXIgb3B0aW9uLlwiKSA6IFwib3B0aW9uIFwiLmNvbmNhdChsYWJlbCwgXCIsIHNlbGVjdGVkLlwiKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH0sXG4gIG9uRm9jdXM6IGZ1bmN0aW9uIG9uRm9jdXMocHJvcHMpIHtcbiAgICB2YXIgY29udGV4dCA9IHByb3BzLmNvbnRleHQsXG4gICAgICBmb2N1c2VkID0gcHJvcHMuZm9jdXNlZCxcbiAgICAgIG9wdGlvbnMgPSBwcm9wcy5vcHRpb25zLFxuICAgICAgX3Byb3BzJGxhYmVsMiA9IHByb3BzLmxhYmVsLFxuICAgICAgbGFiZWwgPSBfcHJvcHMkbGFiZWwyID09PSB2b2lkIDAgPyAnJyA6IF9wcm9wcyRsYWJlbDIsXG4gICAgICBzZWxlY3RWYWx1ZSA9IHByb3BzLnNlbGVjdFZhbHVlLFxuICAgICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgICBpc1NlbGVjdGVkID0gcHJvcHMuaXNTZWxlY3RlZCxcbiAgICAgIGlzQXBwbGVEZXZpY2UgPSBwcm9wcy5pc0FwcGxlRGV2aWNlO1xuICAgIHZhciBnZXRBcnJheUluZGV4ID0gZnVuY3Rpb24gZ2V0QXJyYXlJbmRleChhcnIsIGl0ZW0pIHtcbiAgICAgIHJldHVybiBhcnIgJiYgYXJyLmxlbmd0aCA/IFwiXCIuY29uY2F0KGFyci5pbmRleE9mKGl0ZW0pICsgMSwgXCIgb2YgXCIpLmNvbmNhdChhcnIubGVuZ3RoKSA6ICcnO1xuICAgIH07XG4gICAgaWYgKGNvbnRleHQgPT09ICd2YWx1ZScgJiYgc2VsZWN0VmFsdWUpIHtcbiAgICAgIHJldHVybiBcInZhbHVlIFwiLmNvbmNhdChsYWJlbCwgXCIgZm9jdXNlZCwgXCIpLmNvbmNhdChnZXRBcnJheUluZGV4KHNlbGVjdFZhbHVlLCBmb2N1c2VkKSwgXCIuXCIpO1xuICAgIH1cbiAgICBpZiAoY29udGV4dCA9PT0gJ21lbnUnICYmIGlzQXBwbGVEZXZpY2UpIHtcbiAgICAgIHZhciBkaXNhYmxlZCA9IGlzRGlzYWJsZWQgPyAnIGRpc2FibGVkJyA6ICcnO1xuICAgICAgdmFyIHN0YXR1cyA9IFwiXCIuY29uY2F0KGlzU2VsZWN0ZWQgPyAnIHNlbGVjdGVkJyA6ICcnKS5jb25jYXQoZGlzYWJsZWQpO1xuICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KGxhYmVsKS5jb25jYXQoc3RhdHVzLCBcIiwgXCIpLmNvbmNhdChnZXRBcnJheUluZGV4KG9wdGlvbnMsIGZvY3VzZWQpLCBcIi5cIik7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfSxcbiAgb25GaWx0ZXI6IGZ1bmN0aW9uIG9uRmlsdGVyKHByb3BzKSB7XG4gICAgdmFyIGlucHV0VmFsdWUgPSBwcm9wcy5pbnB1dFZhbHVlLFxuICAgICAgcmVzdWx0c01lc3NhZ2UgPSBwcm9wcy5yZXN1bHRzTWVzc2FnZTtcbiAgICByZXR1cm4gXCJcIi5jb25jYXQocmVzdWx0c01lc3NhZ2UpLmNvbmNhdChpbnB1dFZhbHVlID8gJyBmb3Igc2VhcmNoIHRlcm0gJyArIGlucHV0VmFsdWUgOiAnJywgXCIuXCIpO1xuICB9XG59O1xuXG52YXIgTGl2ZVJlZ2lvbiA9IGZ1bmN0aW9uIExpdmVSZWdpb24ocHJvcHMpIHtcbiAgdmFyIGFyaWFTZWxlY3Rpb24gPSBwcm9wcy5hcmlhU2VsZWN0aW9uLFxuICAgIGZvY3VzZWRPcHRpb24gPSBwcm9wcy5mb2N1c2VkT3B0aW9uLFxuICAgIGZvY3VzZWRWYWx1ZSA9IHByb3BzLmZvY3VzZWRWYWx1ZSxcbiAgICBmb2N1c2FibGVPcHRpb25zID0gcHJvcHMuZm9jdXNhYmxlT3B0aW9ucyxcbiAgICBpc0ZvY3VzZWQgPSBwcm9wcy5pc0ZvY3VzZWQsXG4gICAgc2VsZWN0VmFsdWUgPSBwcm9wcy5zZWxlY3RWYWx1ZSxcbiAgICBzZWxlY3RQcm9wcyA9IHByb3BzLnNlbGVjdFByb3BzLFxuICAgIGlkID0gcHJvcHMuaWQsXG4gICAgaXNBcHBsZURldmljZSA9IHByb3BzLmlzQXBwbGVEZXZpY2U7XG4gIHZhciBhcmlhTGl2ZU1lc3NhZ2VzID0gc2VsZWN0UHJvcHMuYXJpYUxpdmVNZXNzYWdlcyxcbiAgICBnZXRPcHRpb25MYWJlbCA9IHNlbGVjdFByb3BzLmdldE9wdGlvbkxhYmVsLFxuICAgIGlucHV0VmFsdWUgPSBzZWxlY3RQcm9wcy5pbnB1dFZhbHVlLFxuICAgIGlzTXVsdGkgPSBzZWxlY3RQcm9wcy5pc011bHRpLFxuICAgIGlzT3B0aW9uRGlzYWJsZWQgPSBzZWxlY3RQcm9wcy5pc09wdGlvbkRpc2FibGVkLFxuICAgIGlzU2VhcmNoYWJsZSA9IHNlbGVjdFByb3BzLmlzU2VhcmNoYWJsZSxcbiAgICBtZW51SXNPcGVuID0gc2VsZWN0UHJvcHMubWVudUlzT3BlbixcbiAgICBvcHRpb25zID0gc2VsZWN0UHJvcHMub3B0aW9ucyxcbiAgICBzY3JlZW5SZWFkZXJTdGF0dXMgPSBzZWxlY3RQcm9wcy5zY3JlZW5SZWFkZXJTdGF0dXMsXG4gICAgdGFiU2VsZWN0c1ZhbHVlID0gc2VsZWN0UHJvcHMudGFiU2VsZWN0c1ZhbHVlLFxuICAgIGlzTG9hZGluZyA9IHNlbGVjdFByb3BzLmlzTG9hZGluZztcbiAgdmFyIGFyaWFMYWJlbCA9IHNlbGVjdFByb3BzWydhcmlhLWxhYmVsJ107XG4gIHZhciBhcmlhTGl2ZSA9IHNlbGVjdFByb3BzWydhcmlhLWxpdmUnXTtcblxuICAvLyBVcGRhdGUgYXJpYSBsaXZlIG1lc3NhZ2UgY29uZmlndXJhdGlvbiB3aGVuIHByb3AgY2hhbmdlc1xuICB2YXIgbWVzc2FnZXMgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBkZWZhdWx0QXJpYUxpdmVNZXNzYWdlcyksIGFyaWFMaXZlTWVzc2FnZXMgfHwge30pO1xuICB9LCBbYXJpYUxpdmVNZXNzYWdlc10pO1xuXG4gIC8vIFVwZGF0ZSBhcmlhIGxpdmUgc2VsZWN0ZWQgb3B0aW9uIHdoZW4gcHJvcCBjaGFuZ2VzXG4gIHZhciBhcmlhU2VsZWN0ZWQgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbWVzc2FnZSA9ICcnO1xuICAgIGlmIChhcmlhU2VsZWN0aW9uICYmIG1lc3NhZ2VzLm9uQ2hhbmdlKSB7XG4gICAgICB2YXIgb3B0aW9uID0gYXJpYVNlbGVjdGlvbi5vcHRpb24sXG4gICAgICAgIHNlbGVjdGVkT3B0aW9ucyA9IGFyaWFTZWxlY3Rpb24ub3B0aW9ucyxcbiAgICAgICAgcmVtb3ZlZFZhbHVlID0gYXJpYVNlbGVjdGlvbi5yZW1vdmVkVmFsdWUsXG4gICAgICAgIHJlbW92ZWRWYWx1ZXMgPSBhcmlhU2VsZWN0aW9uLnJlbW92ZWRWYWx1ZXMsXG4gICAgICAgIHZhbHVlID0gYXJpYVNlbGVjdGlvbi52YWx1ZTtcbiAgICAgIC8vIHNlbGVjdC1vcHRpb24gd2hlbiAhaXNNdWx0aSBkb2VzIG5vdCByZXR1cm4gb3B0aW9uIHNvIHdlIGFzc3VtZSBzZWxlY3RlZCBvcHRpb24gaXMgdmFsdWVcbiAgICAgIHZhciBhc09wdGlvbiA9IGZ1bmN0aW9uIGFzT3B0aW9uKHZhbCkge1xuICAgICAgICByZXR1cm4gIUFycmF5LmlzQXJyYXkodmFsKSA/IHZhbCA6IG51bGw7XG4gICAgICB9O1xuXG4gICAgICAvLyBJZiB0aGVyZSBpcyBqdXN0IG9uZSBpdGVtIGZyb20gdGhlIGFjdGlvbiB0aGVuIGdldCBpdHMgbGFiZWxcbiAgICAgIHZhciBzZWxlY3RlZCA9IHJlbW92ZWRWYWx1ZSB8fCBvcHRpb24gfHwgYXNPcHRpb24odmFsdWUpO1xuICAgICAgdmFyIGxhYmVsID0gc2VsZWN0ZWQgPyBnZXRPcHRpb25MYWJlbChzZWxlY3RlZCkgOiAnJztcblxuICAgICAgLy8gSWYgdGhlcmUgYXJlIG11bHRpcGxlIGl0ZW1zIGZyb20gdGhlIGFjdGlvbiB0aGVuIHJldHVybiBhbiBhcnJheSBvZiBsYWJlbHNcbiAgICAgIHZhciBtdWx0aVNlbGVjdGVkID0gc2VsZWN0ZWRPcHRpb25zIHx8IHJlbW92ZWRWYWx1ZXMgfHwgdW5kZWZpbmVkO1xuICAgICAgdmFyIGxhYmVscyA9IG11bHRpU2VsZWN0ZWQgPyBtdWx0aVNlbGVjdGVkLm1hcChnZXRPcHRpb25MYWJlbCkgOiBbXTtcbiAgICAgIHZhciBvbkNoYW5nZVByb3BzID0gX29iamVjdFNwcmVhZCh7XG4gICAgICAgIC8vIG11bHRpU2VsZWN0ZWQgaXRlbXMgYXJlIHVzdWFsbHkgaXRlbXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBzZWxlY3RlZFxuICAgICAgICAvLyBvciBzZXQgYnkgdGhlIHVzZXIgYXMgYSBkZWZhdWx0IHZhbHVlIHNvIHdlIGFzc3VtZSB0aGV5IGFyZSBub3QgZGlzYWJsZWRcbiAgICAgICAgaXNEaXNhYmxlZDogc2VsZWN0ZWQgJiYgaXNPcHRpb25EaXNhYmxlZChzZWxlY3RlZCwgc2VsZWN0VmFsdWUpLFxuICAgICAgICBsYWJlbDogbGFiZWwsXG4gICAgICAgIGxhYmVsczogbGFiZWxzXG4gICAgICB9LCBhcmlhU2VsZWN0aW9uKTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlcy5vbkNoYW5nZShvbkNoYW5nZVByb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sIFthcmlhU2VsZWN0aW9uLCBtZXNzYWdlcywgaXNPcHRpb25EaXNhYmxlZCwgc2VsZWN0VmFsdWUsIGdldE9wdGlvbkxhYmVsXSk7XG4gIHZhciBhcmlhRm9jdXNlZCA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBmb2N1c01zZyA9ICcnO1xuICAgIHZhciBmb2N1c2VkID0gZm9jdXNlZE9wdGlvbiB8fCBmb2N1c2VkVmFsdWU7XG4gICAgdmFyIGlzU2VsZWN0ZWQgPSAhIShmb2N1c2VkT3B0aW9uICYmIHNlbGVjdFZhbHVlICYmIHNlbGVjdFZhbHVlLmluY2x1ZGVzKGZvY3VzZWRPcHRpb24pKTtcbiAgICBpZiAoZm9jdXNlZCAmJiBtZXNzYWdlcy5vbkZvY3VzKSB7XG4gICAgICB2YXIgb25Gb2N1c1Byb3BzID0ge1xuICAgICAgICBmb2N1c2VkOiBmb2N1c2VkLFxuICAgICAgICBsYWJlbDogZ2V0T3B0aW9uTGFiZWwoZm9jdXNlZCksXG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzT3B0aW9uRGlzYWJsZWQoZm9jdXNlZCwgc2VsZWN0VmFsdWUpLFxuICAgICAgICBpc1NlbGVjdGVkOiBpc1NlbGVjdGVkLFxuICAgICAgICBvcHRpb25zOiBmb2N1c2FibGVPcHRpb25zLFxuICAgICAgICBjb250ZXh0OiBmb2N1c2VkID09PSBmb2N1c2VkT3B0aW9uID8gJ21lbnUnIDogJ3ZhbHVlJyxcbiAgICAgICAgc2VsZWN0VmFsdWU6IHNlbGVjdFZhbHVlLFxuICAgICAgICBpc0FwcGxlRGV2aWNlOiBpc0FwcGxlRGV2aWNlXG4gICAgICB9O1xuICAgICAgZm9jdXNNc2cgPSBtZXNzYWdlcy5vbkZvY3VzKG9uRm9jdXNQcm9wcyk7XG4gICAgfVxuICAgIHJldHVybiBmb2N1c01zZztcbiAgfSwgW2ZvY3VzZWRPcHRpb24sIGZvY3VzZWRWYWx1ZSwgZ2V0T3B0aW9uTGFiZWwsIGlzT3B0aW9uRGlzYWJsZWQsIG1lc3NhZ2VzLCBmb2N1c2FibGVPcHRpb25zLCBzZWxlY3RWYWx1ZSwgaXNBcHBsZURldmljZV0pO1xuICB2YXIgYXJpYVJlc3VsdHMgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVzdWx0c01zZyA9ICcnO1xuICAgIGlmIChtZW51SXNPcGVuICYmIG9wdGlvbnMubGVuZ3RoICYmICFpc0xvYWRpbmcgJiYgbWVzc2FnZXMub25GaWx0ZXIpIHtcbiAgICAgIHZhciByZXN1bHRzTWVzc2FnZSA9IHNjcmVlblJlYWRlclN0YXR1cyh7XG4gICAgICAgIGNvdW50OiBmb2N1c2FibGVPcHRpb25zLmxlbmd0aFxuICAgICAgfSk7XG4gICAgICByZXN1bHRzTXNnID0gbWVzc2FnZXMub25GaWx0ZXIoe1xuICAgICAgICBpbnB1dFZhbHVlOiBpbnB1dFZhbHVlLFxuICAgICAgICByZXN1bHRzTWVzc2FnZTogcmVzdWx0c01lc3NhZ2VcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0c01zZztcbiAgfSwgW2ZvY3VzYWJsZU9wdGlvbnMsIGlucHV0VmFsdWUsIG1lbnVJc09wZW4sIG1lc3NhZ2VzLCBvcHRpb25zLCBzY3JlZW5SZWFkZXJTdGF0dXMsIGlzTG9hZGluZ10pO1xuICB2YXIgaXNJbml0aWFsRm9jdXMgPSAoYXJpYVNlbGVjdGlvbiA9PT0gbnVsbCB8fCBhcmlhU2VsZWN0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhcmlhU2VsZWN0aW9uLmFjdGlvbikgPT09ICdpbml0aWFsLWlucHV0LWZvY3VzJztcbiAgdmFyIGFyaWFHdWlkYW5jZSA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBndWlkYW5jZU1zZyA9ICcnO1xuICAgIGlmIChtZXNzYWdlcy5ndWlkYW5jZSkge1xuICAgICAgdmFyIGNvbnRleHQgPSBmb2N1c2VkVmFsdWUgPyAndmFsdWUnIDogbWVudUlzT3BlbiA/ICdtZW51JyA6ICdpbnB1dCc7XG4gICAgICBndWlkYW5jZU1zZyA9IG1lc3NhZ2VzLmd1aWRhbmNlKHtcbiAgICAgICAgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwsXG4gICAgICAgIGNvbnRleHQ6IGNvbnRleHQsXG4gICAgICAgIGlzRGlzYWJsZWQ6IGZvY3VzZWRPcHRpb24gJiYgaXNPcHRpb25EaXNhYmxlZChmb2N1c2VkT3B0aW9uLCBzZWxlY3RWYWx1ZSksXG4gICAgICAgIGlzTXVsdGk6IGlzTXVsdGksXG4gICAgICAgIGlzU2VhcmNoYWJsZTogaXNTZWFyY2hhYmxlLFxuICAgICAgICB0YWJTZWxlY3RzVmFsdWU6IHRhYlNlbGVjdHNWYWx1ZSxcbiAgICAgICAgaXNJbml0aWFsRm9jdXM6IGlzSW5pdGlhbEZvY3VzXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGd1aWRhbmNlTXNnO1xuICB9LCBbYXJpYUxhYmVsLCBmb2N1c2VkT3B0aW9uLCBmb2N1c2VkVmFsdWUsIGlzTXVsdGksIGlzT3B0aW9uRGlzYWJsZWQsIGlzU2VhcmNoYWJsZSwgbWVudUlzT3BlbiwgbWVzc2FnZXMsIHNlbGVjdFZhbHVlLCB0YWJTZWxlY3RzVmFsdWUsIGlzSW5pdGlhbEZvY3VzXSk7XG4gIHZhciBTY3JlZW5SZWFkZXJUZXh0ID0gcmVhY3QuanN4KFJlYWN0LkZyYWdtZW50LCBudWxsLCByZWFjdC5qc3goXCJzcGFuXCIsIHtcbiAgICBpZDogXCJhcmlhLXNlbGVjdGlvblwiXG4gIH0sIGFyaWFTZWxlY3RlZCksIHJlYWN0LmpzeChcInNwYW5cIiwge1xuICAgIGlkOiBcImFyaWEtZm9jdXNlZFwiXG4gIH0sIGFyaWFGb2N1c2VkKSwgcmVhY3QuanN4KFwic3BhblwiLCB7XG4gICAgaWQ6IFwiYXJpYS1yZXN1bHRzXCJcbiAgfSwgYXJpYVJlc3VsdHMpLCByZWFjdC5qc3goXCJzcGFuXCIsIHtcbiAgICBpZDogXCJhcmlhLWd1aWRhbmNlXCJcbiAgfSwgYXJpYUd1aWRhbmNlKSk7XG4gIHJldHVybiByZWFjdC5qc3goUmVhY3QuRnJhZ21lbnQsIG51bGwsIHJlYWN0LmpzeChBMTF5VGV4dCQxLCB7XG4gICAgaWQ6IGlkXG4gIH0sIGlzSW5pdGlhbEZvY3VzICYmIFNjcmVlblJlYWRlclRleHQpLCByZWFjdC5qc3goQTExeVRleHQkMSwge1xuICAgIFwiYXJpYS1saXZlXCI6IGFyaWFMaXZlLFxuICAgIFwiYXJpYS1hdG9taWNcIjogXCJmYWxzZVwiLFxuICAgIFwiYXJpYS1yZWxldmFudFwiOiBcImFkZGl0aW9ucyB0ZXh0XCIsXG4gICAgcm9sZTogXCJsb2dcIlxuICB9LCBpc0ZvY3VzZWQgJiYgIWlzSW5pdGlhbEZvY3VzICYmIFNjcmVlblJlYWRlclRleHQpKTtcbn07XG52YXIgTGl2ZVJlZ2lvbiQxID0gTGl2ZVJlZ2lvbjtcblxudmFyIGRpYWNyaXRpY3MgPSBbe1xuICBiYXNlOiAnQScsXG4gIGxldHRlcnM6IFwiQVxcdTI0QjZcXHVGRjIxXFx4QzBcXHhDMVxceEMyXFx1MUVBNlxcdTFFQTRcXHUxRUFBXFx1MUVBOFxceEMzXFx1MDEwMFxcdTAxMDJcXHUxRUIwXFx1MUVBRVxcdTFFQjRcXHUxRUIyXFx1MDIyNlxcdTAxRTBcXHhDNFxcdTAxREVcXHUxRUEyXFx4QzVcXHUwMUZBXFx1MDFDRFxcdTAyMDBcXHUwMjAyXFx1MUVBMFxcdTFFQUNcXHUxRUI2XFx1MUUwMFxcdTAxMDRcXHUwMjNBXFx1MkM2RlwiXG59LCB7XG4gIGJhc2U6ICdBQScsXG4gIGxldHRlcnM6IFwiXFx1QTczMlwiXG59LCB7XG4gIGJhc2U6ICdBRScsXG4gIGxldHRlcnM6IFwiXFx4QzZcXHUwMUZDXFx1MDFFMlwiXG59LCB7XG4gIGJhc2U6ICdBTycsXG4gIGxldHRlcnM6IFwiXFx1QTczNFwiXG59LCB7XG4gIGJhc2U6ICdBVScsXG4gIGxldHRlcnM6IFwiXFx1QTczNlwiXG59LCB7XG4gIGJhc2U6ICdBVicsXG4gIGxldHRlcnM6IFwiXFx1QTczOFxcdUE3M0FcIlxufSwge1xuICBiYXNlOiAnQVknLFxuICBsZXR0ZXJzOiBcIlxcdUE3M0NcIlxufSwge1xuICBiYXNlOiAnQicsXG4gIGxldHRlcnM6IFwiQlxcdTI0QjdcXHVGRjIyXFx1MUUwMlxcdTFFMDRcXHUxRTA2XFx1MDI0M1xcdTAxODJcXHUwMTgxXCJcbn0sIHtcbiAgYmFzZTogJ0MnLFxuICBsZXR0ZXJzOiBcIkNcXHUyNEI4XFx1RkYyM1xcdTAxMDZcXHUwMTA4XFx1MDEwQVxcdTAxMENcXHhDN1xcdTFFMDhcXHUwMTg3XFx1MDIzQlxcdUE3M0VcIlxufSwge1xuICBiYXNlOiAnRCcsXG4gIGxldHRlcnM6IFwiRFxcdTI0QjlcXHVGRjI0XFx1MUUwQVxcdTAxMEVcXHUxRTBDXFx1MUUxMFxcdTFFMTJcXHUxRTBFXFx1MDExMFxcdTAxOEJcXHUwMThBXFx1MDE4OVxcdUE3NzlcIlxufSwge1xuICBiYXNlOiAnRFonLFxuICBsZXR0ZXJzOiBcIlxcdTAxRjFcXHUwMUM0XCJcbn0sIHtcbiAgYmFzZTogJ0R6JyxcbiAgbGV0dGVyczogXCJcXHUwMUYyXFx1MDFDNVwiXG59LCB7XG4gIGJhc2U6ICdFJyxcbiAgbGV0dGVyczogXCJFXFx1MjRCQVxcdUZGMjVcXHhDOFxceEM5XFx4Q0FcXHUxRUMwXFx1MUVCRVxcdTFFQzRcXHUxRUMyXFx1MUVCQ1xcdTAxMTJcXHUxRTE0XFx1MUUxNlxcdTAxMTRcXHUwMTE2XFx4Q0JcXHUxRUJBXFx1MDExQVxcdTAyMDRcXHUwMjA2XFx1MUVCOFxcdTFFQzZcXHUwMjI4XFx1MUUxQ1xcdTAxMThcXHUxRTE4XFx1MUUxQVxcdTAxOTBcXHUwMThFXCJcbn0sIHtcbiAgYmFzZTogJ0YnLFxuICBsZXR0ZXJzOiBcIkZcXHUyNEJCXFx1RkYyNlxcdTFFMUVcXHUwMTkxXFx1QTc3QlwiXG59LCB7XG4gIGJhc2U6ICdHJyxcbiAgbGV0dGVyczogXCJHXFx1MjRCQ1xcdUZGMjdcXHUwMUY0XFx1MDExQ1xcdTFFMjBcXHUwMTFFXFx1MDEyMFxcdTAxRTZcXHUwMTIyXFx1MDFFNFxcdTAxOTNcXHVBN0EwXFx1QTc3RFxcdUE3N0VcIlxufSwge1xuICBiYXNlOiAnSCcsXG4gIGxldHRlcnM6IFwiSFxcdTI0QkRcXHVGRjI4XFx1MDEyNFxcdTFFMjJcXHUxRTI2XFx1MDIxRVxcdTFFMjRcXHUxRTI4XFx1MUUyQVxcdTAxMjZcXHUyQzY3XFx1MkM3NVxcdUE3OERcIlxufSwge1xuICBiYXNlOiAnSScsXG4gIGxldHRlcnM6IFwiSVxcdTI0QkVcXHVGRjI5XFx4Q0NcXHhDRFxceENFXFx1MDEyOFxcdTAxMkFcXHUwMTJDXFx1MDEzMFxceENGXFx1MUUyRVxcdTFFQzhcXHUwMUNGXFx1MDIwOFxcdTAyMEFcXHUxRUNBXFx1MDEyRVxcdTFFMkNcXHUwMTk3XCJcbn0sIHtcbiAgYmFzZTogJ0onLFxuICBsZXR0ZXJzOiBcIkpcXHUyNEJGXFx1RkYyQVxcdTAxMzRcXHUwMjQ4XCJcbn0sIHtcbiAgYmFzZTogJ0snLFxuICBsZXR0ZXJzOiBcIktcXHUyNEMwXFx1RkYyQlxcdTFFMzBcXHUwMUU4XFx1MUUzMlxcdTAxMzZcXHUxRTM0XFx1MDE5OFxcdTJDNjlcXHVBNzQwXFx1QTc0MlxcdUE3NDRcXHVBN0EyXCJcbn0sIHtcbiAgYmFzZTogJ0wnLFxuICBsZXR0ZXJzOiBcIkxcXHUyNEMxXFx1RkYyQ1xcdTAxM0ZcXHUwMTM5XFx1MDEzRFxcdTFFMzZcXHUxRTM4XFx1MDEzQlxcdTFFM0NcXHUxRTNBXFx1MDE0MVxcdTAyM0RcXHUyQzYyXFx1MkM2MFxcdUE3NDhcXHVBNzQ2XFx1QTc4MFwiXG59LCB7XG4gIGJhc2U6ICdMSicsXG4gIGxldHRlcnM6IFwiXFx1MDFDN1wiXG59LCB7XG4gIGJhc2U6ICdMaicsXG4gIGxldHRlcnM6IFwiXFx1MDFDOFwiXG59LCB7XG4gIGJhc2U6ICdNJyxcbiAgbGV0dGVyczogXCJNXFx1MjRDMlxcdUZGMkRcXHUxRTNFXFx1MUU0MFxcdTFFNDJcXHUyQzZFXFx1MDE5Q1wiXG59LCB7XG4gIGJhc2U6ICdOJyxcbiAgbGV0dGVyczogXCJOXFx1MjRDM1xcdUZGMkVcXHUwMUY4XFx1MDE0M1xceEQxXFx1MUU0NFxcdTAxNDdcXHUxRTQ2XFx1MDE0NVxcdTFFNEFcXHUxRTQ4XFx1MDIyMFxcdTAxOURcXHVBNzkwXFx1QTdBNFwiXG59LCB7XG4gIGJhc2U6ICdOSicsXG4gIGxldHRlcnM6IFwiXFx1MDFDQVwiXG59LCB7XG4gIGJhc2U6ICdOaicsXG4gIGxldHRlcnM6IFwiXFx1MDFDQlwiXG59LCB7XG4gIGJhc2U6ICdPJyxcbiAgbGV0dGVyczogXCJPXFx1MjRDNFxcdUZGMkZcXHhEMlxceEQzXFx4RDRcXHUxRUQyXFx1MUVEMFxcdTFFRDZcXHUxRUQ0XFx4RDVcXHUxRTRDXFx1MDIyQ1xcdTFFNEVcXHUwMTRDXFx1MUU1MFxcdTFFNTJcXHUwMTRFXFx1MDIyRVxcdTAyMzBcXHhENlxcdTAyMkFcXHUxRUNFXFx1MDE1MFxcdTAxRDFcXHUwMjBDXFx1MDIwRVxcdTAxQTBcXHUxRURDXFx1MUVEQVxcdTFFRTBcXHUxRURFXFx1MUVFMlxcdTFFQ0NcXHUxRUQ4XFx1MDFFQVxcdTAxRUNcXHhEOFxcdTAxRkVcXHUwMTg2XFx1MDE5RlxcdUE3NEFcXHVBNzRDXCJcbn0sIHtcbiAgYmFzZTogJ09JJyxcbiAgbGV0dGVyczogXCJcXHUwMUEyXCJcbn0sIHtcbiAgYmFzZTogJ09PJyxcbiAgbGV0dGVyczogXCJcXHVBNzRFXCJcbn0sIHtcbiAgYmFzZTogJ09VJyxcbiAgbGV0dGVyczogXCJcXHUwMjIyXCJcbn0sIHtcbiAgYmFzZTogJ1AnLFxuICBsZXR0ZXJzOiBcIlBcXHUyNEM1XFx1RkYzMFxcdTFFNTRcXHUxRTU2XFx1MDFBNFxcdTJDNjNcXHVBNzUwXFx1QTc1MlxcdUE3NTRcIlxufSwge1xuICBiYXNlOiAnUScsXG4gIGxldHRlcnM6IFwiUVxcdTI0QzZcXHVGRjMxXFx1QTc1NlxcdUE3NThcXHUwMjRBXCJcbn0sIHtcbiAgYmFzZTogJ1InLFxuICBsZXR0ZXJzOiBcIlJcXHUyNEM3XFx1RkYzMlxcdTAxNTRcXHUxRTU4XFx1MDE1OFxcdTAyMTBcXHUwMjEyXFx1MUU1QVxcdTFFNUNcXHUwMTU2XFx1MUU1RVxcdTAyNENcXHUyQzY0XFx1QTc1QVxcdUE3QTZcXHVBNzgyXCJcbn0sIHtcbiAgYmFzZTogJ1MnLFxuICBsZXR0ZXJzOiBcIlNcXHUyNEM4XFx1RkYzM1xcdTFFOUVcXHUwMTVBXFx1MUU2NFxcdTAxNUNcXHUxRTYwXFx1MDE2MFxcdTFFNjZcXHUxRTYyXFx1MUU2OFxcdTAyMThcXHUwMTVFXFx1MkM3RVxcdUE3QThcXHVBNzg0XCJcbn0sIHtcbiAgYmFzZTogJ1QnLFxuICBsZXR0ZXJzOiBcIlRcXHUyNEM5XFx1RkYzNFxcdTFFNkFcXHUwMTY0XFx1MUU2Q1xcdTAyMUFcXHUwMTYyXFx1MUU3MFxcdTFFNkVcXHUwMTY2XFx1MDFBQ1xcdTAxQUVcXHUwMjNFXFx1QTc4NlwiXG59LCB7XG4gIGJhc2U6ICdUWicsXG4gIGxldHRlcnM6IFwiXFx1QTcyOFwiXG59LCB7XG4gIGJhc2U6ICdVJyxcbiAgbGV0dGVyczogXCJVXFx1MjRDQVxcdUZGMzVcXHhEOVxceERBXFx4REJcXHUwMTY4XFx1MUU3OFxcdTAxNkFcXHUxRTdBXFx1MDE2Q1xceERDXFx1MDFEQlxcdTAxRDdcXHUwMUQ1XFx1MDFEOVxcdTFFRTZcXHUwMTZFXFx1MDE3MFxcdTAxRDNcXHUwMjE0XFx1MDIxNlxcdTAxQUZcXHUxRUVBXFx1MUVFOFxcdTFFRUVcXHUxRUVDXFx1MUVGMFxcdTFFRTRcXHUxRTcyXFx1MDE3MlxcdTFFNzZcXHUxRTc0XFx1MDI0NFwiXG59LCB7XG4gIGJhc2U6ICdWJyxcbiAgbGV0dGVyczogXCJWXFx1MjRDQlxcdUZGMzZcXHUxRTdDXFx1MUU3RVxcdTAxQjJcXHVBNzVFXFx1MDI0NVwiXG59LCB7XG4gIGJhc2U6ICdWWScsXG4gIGxldHRlcnM6IFwiXFx1QTc2MFwiXG59LCB7XG4gIGJhc2U6ICdXJyxcbiAgbGV0dGVyczogXCJXXFx1MjRDQ1xcdUZGMzdcXHUxRTgwXFx1MUU4MlxcdTAxNzRcXHUxRTg2XFx1MUU4NFxcdTFFODhcXHUyQzcyXCJcbn0sIHtcbiAgYmFzZTogJ1gnLFxuICBsZXR0ZXJzOiBcIlhcXHUyNENEXFx1RkYzOFxcdTFFOEFcXHUxRThDXCJcbn0sIHtcbiAgYmFzZTogJ1knLFxuICBsZXR0ZXJzOiBcIllcXHUyNENFXFx1RkYzOVxcdTFFRjJcXHhERFxcdTAxNzZcXHUxRUY4XFx1MDIzMlxcdTFFOEVcXHUwMTc4XFx1MUVGNlxcdTFFRjRcXHUwMUIzXFx1MDI0RVxcdTFFRkVcIlxufSwge1xuICBiYXNlOiAnWicsXG4gIGxldHRlcnM6IFwiWlxcdTI0Q0ZcXHVGRjNBXFx1MDE3OVxcdTFFOTBcXHUwMTdCXFx1MDE3RFxcdTFFOTJcXHUxRTk0XFx1MDFCNVxcdTAyMjRcXHUyQzdGXFx1MkM2QlxcdUE3NjJcIlxufSwge1xuICBiYXNlOiAnYScsXG4gIGxldHRlcnM6IFwiYVxcdTI0RDBcXHVGRjQxXFx1MUU5QVxceEUwXFx4RTFcXHhFMlxcdTFFQTdcXHUxRUE1XFx1MUVBQlxcdTFFQTlcXHhFM1xcdTAxMDFcXHUwMTAzXFx1MUVCMVxcdTFFQUZcXHUxRUI1XFx1MUVCM1xcdTAyMjdcXHUwMUUxXFx4RTRcXHUwMURGXFx1MUVBM1xceEU1XFx1MDFGQlxcdTAxQ0VcXHUwMjAxXFx1MDIwM1xcdTFFQTFcXHUxRUFEXFx1MUVCN1xcdTFFMDFcXHUwMTA1XFx1MkM2NVxcdTAyNTBcIlxufSwge1xuICBiYXNlOiAnYWEnLFxuICBsZXR0ZXJzOiBcIlxcdUE3MzNcIlxufSwge1xuICBiYXNlOiAnYWUnLFxuICBsZXR0ZXJzOiBcIlxceEU2XFx1MDFGRFxcdTAxRTNcIlxufSwge1xuICBiYXNlOiAnYW8nLFxuICBsZXR0ZXJzOiBcIlxcdUE3MzVcIlxufSwge1xuICBiYXNlOiAnYXUnLFxuICBsZXR0ZXJzOiBcIlxcdUE3MzdcIlxufSwge1xuICBiYXNlOiAnYXYnLFxuICBsZXR0ZXJzOiBcIlxcdUE3MzlcXHVBNzNCXCJcbn0sIHtcbiAgYmFzZTogJ2F5JyxcbiAgbGV0dGVyczogXCJcXHVBNzNEXCJcbn0sIHtcbiAgYmFzZTogJ2InLFxuICBsZXR0ZXJzOiBcImJcXHUyNEQxXFx1RkY0MlxcdTFFMDNcXHUxRTA1XFx1MUUwN1xcdTAxODBcXHUwMTgzXFx1MDI1M1wiXG59LCB7XG4gIGJhc2U6ICdjJyxcbiAgbGV0dGVyczogXCJjXFx1MjREMlxcdUZGNDNcXHUwMTA3XFx1MDEwOVxcdTAxMEJcXHUwMTBEXFx4RTdcXHUxRTA5XFx1MDE4OFxcdTAyM0NcXHVBNzNGXFx1MjE4NFwiXG59LCB7XG4gIGJhc2U6ICdkJyxcbiAgbGV0dGVyczogXCJkXFx1MjREM1xcdUZGNDRcXHUxRTBCXFx1MDEwRlxcdTFFMERcXHUxRTExXFx1MUUxM1xcdTFFMEZcXHUwMTExXFx1MDE4Q1xcdTAyNTZcXHUwMjU3XFx1QTc3QVwiXG59LCB7XG4gIGJhc2U6ICdkeicsXG4gIGxldHRlcnM6IFwiXFx1MDFGM1xcdTAxQzZcIlxufSwge1xuICBiYXNlOiAnZScsXG4gIGxldHRlcnM6IFwiZVxcdTI0RDRcXHVGRjQ1XFx4RThcXHhFOVxceEVBXFx1MUVDMVxcdTFFQkZcXHUxRUM1XFx1MUVDM1xcdTFFQkRcXHUwMTEzXFx1MUUxNVxcdTFFMTdcXHUwMTE1XFx1MDExN1xceEVCXFx1MUVCQlxcdTAxMUJcXHUwMjA1XFx1MDIwN1xcdTFFQjlcXHUxRUM3XFx1MDIyOVxcdTFFMURcXHUwMTE5XFx1MUUxOVxcdTFFMUJcXHUwMjQ3XFx1MDI1QlxcdTAxRERcIlxufSwge1xuICBiYXNlOiAnZicsXG4gIGxldHRlcnM6IFwiZlxcdTI0RDVcXHVGRjQ2XFx1MUUxRlxcdTAxOTJcXHVBNzdDXCJcbn0sIHtcbiAgYmFzZTogJ2cnLFxuICBsZXR0ZXJzOiBcImdcXHUyNEQ2XFx1RkY0N1xcdTAxRjVcXHUwMTFEXFx1MUUyMVxcdTAxMUZcXHUwMTIxXFx1MDFFN1xcdTAxMjNcXHUwMUU1XFx1MDI2MFxcdUE3QTFcXHUxRDc5XFx1QTc3RlwiXG59LCB7XG4gIGJhc2U6ICdoJyxcbiAgbGV0dGVyczogXCJoXFx1MjREN1xcdUZGNDhcXHUwMTI1XFx1MUUyM1xcdTFFMjdcXHUwMjFGXFx1MUUyNVxcdTFFMjlcXHUxRTJCXFx1MUU5NlxcdTAxMjdcXHUyQzY4XFx1MkM3NlxcdTAyNjVcIlxufSwge1xuICBiYXNlOiAnaHYnLFxuICBsZXR0ZXJzOiBcIlxcdTAxOTVcIlxufSwge1xuICBiYXNlOiAnaScsXG4gIGxldHRlcnM6IFwiaVxcdTI0RDhcXHVGRjQ5XFx4RUNcXHhFRFxceEVFXFx1MDEyOVxcdTAxMkJcXHUwMTJEXFx4RUZcXHUxRTJGXFx1MUVDOVxcdTAxRDBcXHUwMjA5XFx1MDIwQlxcdTFFQ0JcXHUwMTJGXFx1MUUyRFxcdTAyNjhcXHUwMTMxXCJcbn0sIHtcbiAgYmFzZTogJ2onLFxuICBsZXR0ZXJzOiBcImpcXHUyNEQ5XFx1RkY0QVxcdTAxMzVcXHUwMUYwXFx1MDI0OVwiXG59LCB7XG4gIGJhc2U6ICdrJyxcbiAgbGV0dGVyczogXCJrXFx1MjREQVxcdUZGNEJcXHUxRTMxXFx1MDFFOVxcdTFFMzNcXHUwMTM3XFx1MUUzNVxcdTAxOTlcXHUyQzZBXFx1QTc0MVxcdUE3NDNcXHVBNzQ1XFx1QTdBM1wiXG59LCB7XG4gIGJhc2U6ICdsJyxcbiAgbGV0dGVyczogXCJsXFx1MjREQlxcdUZGNENcXHUwMTQwXFx1MDEzQVxcdTAxM0VcXHUxRTM3XFx1MUUzOVxcdTAxM0NcXHUxRTNEXFx1MUUzQlxcdTAxN0ZcXHUwMTQyXFx1MDE5QVxcdTAyNkJcXHUyQzYxXFx1QTc0OVxcdUE3ODFcXHVBNzQ3XCJcbn0sIHtcbiAgYmFzZTogJ2xqJyxcbiAgbGV0dGVyczogXCJcXHUwMUM5XCJcbn0sIHtcbiAgYmFzZTogJ20nLFxuICBsZXR0ZXJzOiBcIm1cXHUyNERDXFx1RkY0RFxcdTFFM0ZcXHUxRTQxXFx1MUU0M1xcdTAyNzFcXHUwMjZGXCJcbn0sIHtcbiAgYmFzZTogJ24nLFxuICBsZXR0ZXJzOiBcIm5cXHUyNEREXFx1RkY0RVxcdTAxRjlcXHUwMTQ0XFx4RjFcXHUxRTQ1XFx1MDE0OFxcdTFFNDdcXHUwMTQ2XFx1MUU0QlxcdTFFNDlcXHUwMTlFXFx1MDI3MlxcdTAxNDlcXHVBNzkxXFx1QTdBNVwiXG59LCB7XG4gIGJhc2U6ICduaicsXG4gIGxldHRlcnM6IFwiXFx1MDFDQ1wiXG59LCB7XG4gIGJhc2U6ICdvJyxcbiAgbGV0dGVyczogXCJvXFx1MjRERVxcdUZGNEZcXHhGMlxceEYzXFx4RjRcXHUxRUQzXFx1MUVEMVxcdTFFRDdcXHUxRUQ1XFx4RjVcXHUxRTREXFx1MDIyRFxcdTFFNEZcXHUwMTREXFx1MUU1MVxcdTFFNTNcXHUwMTRGXFx1MDIyRlxcdTAyMzFcXHhGNlxcdTAyMkJcXHUxRUNGXFx1MDE1MVxcdTAxRDJcXHUwMjBEXFx1MDIwRlxcdTAxQTFcXHUxRUREXFx1MUVEQlxcdTFFRTFcXHUxRURGXFx1MUVFM1xcdTFFQ0RcXHUxRUQ5XFx1MDFFQlxcdTAxRURcXHhGOFxcdTAxRkZcXHUwMjU0XFx1QTc0QlxcdUE3NERcXHUwMjc1XCJcbn0sIHtcbiAgYmFzZTogJ29pJyxcbiAgbGV0dGVyczogXCJcXHUwMUEzXCJcbn0sIHtcbiAgYmFzZTogJ291JyxcbiAgbGV0dGVyczogXCJcXHUwMjIzXCJcbn0sIHtcbiAgYmFzZTogJ29vJyxcbiAgbGV0dGVyczogXCJcXHVBNzRGXCJcbn0sIHtcbiAgYmFzZTogJ3AnLFxuICBsZXR0ZXJzOiBcInBcXHUyNERGXFx1RkY1MFxcdTFFNTVcXHUxRTU3XFx1MDFBNVxcdTFEN0RcXHVBNzUxXFx1QTc1M1xcdUE3NTVcIlxufSwge1xuICBiYXNlOiAncScsXG4gIGxldHRlcnM6IFwicVxcdTI0RTBcXHVGRjUxXFx1MDI0QlxcdUE3NTdcXHVBNzU5XCJcbn0sIHtcbiAgYmFzZTogJ3InLFxuICBsZXR0ZXJzOiBcInJcXHUyNEUxXFx1RkY1MlxcdTAxNTVcXHUxRTU5XFx1MDE1OVxcdTAyMTFcXHUwMjEzXFx1MUU1QlxcdTFFNURcXHUwMTU3XFx1MUU1RlxcdTAyNERcXHUwMjdEXFx1QTc1QlxcdUE3QTdcXHVBNzgzXCJcbn0sIHtcbiAgYmFzZTogJ3MnLFxuICBsZXR0ZXJzOiBcInNcXHUyNEUyXFx1RkY1M1xceERGXFx1MDE1QlxcdTFFNjVcXHUwMTVEXFx1MUU2MVxcdTAxNjFcXHUxRTY3XFx1MUU2M1xcdTFFNjlcXHUwMjE5XFx1MDE1RlxcdTAyM0ZcXHVBN0E5XFx1QTc4NVxcdTFFOUJcIlxufSwge1xuICBiYXNlOiAndCcsXG4gIGxldHRlcnM6IFwidFxcdTI0RTNcXHVGRjU0XFx1MUU2QlxcdTFFOTdcXHUwMTY1XFx1MUU2RFxcdTAyMUJcXHUwMTYzXFx1MUU3MVxcdTFFNkZcXHUwMTY3XFx1MDFBRFxcdTAyODhcXHUyQzY2XFx1QTc4N1wiXG59LCB7XG4gIGJhc2U6ICd0eicsXG4gIGxldHRlcnM6IFwiXFx1QTcyOVwiXG59LCB7XG4gIGJhc2U6ICd1JyxcbiAgbGV0dGVyczogXCJ1XFx1MjRFNFxcdUZGNTVcXHhGOVxceEZBXFx4RkJcXHUwMTY5XFx1MUU3OVxcdTAxNkJcXHUxRTdCXFx1MDE2RFxceEZDXFx1MDFEQ1xcdTAxRDhcXHUwMUQ2XFx1MDFEQVxcdTFFRTdcXHUwMTZGXFx1MDE3MVxcdTAxRDRcXHUwMjE1XFx1MDIxN1xcdTAxQjBcXHUxRUVCXFx1MUVFOVxcdTFFRUZcXHUxRUVEXFx1MUVGMVxcdTFFRTVcXHUxRTczXFx1MDE3M1xcdTFFNzdcXHUxRTc1XFx1MDI4OVwiXG59LCB7XG4gIGJhc2U6ICd2JyxcbiAgbGV0dGVyczogXCJ2XFx1MjRFNVxcdUZGNTZcXHUxRTdEXFx1MUU3RlxcdTAyOEJcXHVBNzVGXFx1MDI4Q1wiXG59LCB7XG4gIGJhc2U6ICd2eScsXG4gIGxldHRlcnM6IFwiXFx1QTc2MVwiXG59LCB7XG4gIGJhc2U6ICd3JyxcbiAgbGV0dGVyczogXCJ3XFx1MjRFNlxcdUZGNTdcXHUxRTgxXFx1MUU4M1xcdTAxNzVcXHUxRTg3XFx1MUU4NVxcdTFFOThcXHUxRTg5XFx1MkM3M1wiXG59LCB7XG4gIGJhc2U6ICd4JyxcbiAgbGV0dGVyczogXCJ4XFx1MjRFN1xcdUZGNThcXHUxRThCXFx1MUU4RFwiXG59LCB7XG4gIGJhc2U6ICd5JyxcbiAgbGV0dGVyczogXCJ5XFx1MjRFOFxcdUZGNTlcXHUxRUYzXFx4RkRcXHUwMTc3XFx1MUVGOVxcdTAyMzNcXHUxRThGXFx4RkZcXHUxRUY3XFx1MUU5OVxcdTFFRjVcXHUwMUI0XFx1MDI0RlxcdTFFRkZcIlxufSwge1xuICBiYXNlOiAneicsXG4gIGxldHRlcnM6IFwielxcdTI0RTlcXHVGRjVBXFx1MDE3QVxcdTFFOTFcXHUwMTdDXFx1MDE3RVxcdTFFOTNcXHUxRTk1XFx1MDFCNlxcdTAyMjVcXHUwMjQwXFx1MkM2Q1xcdUE3NjNcIlxufV07XG52YXIgYW55RGlhY3JpdGljID0gbmV3IFJlZ0V4cCgnWycgKyBkaWFjcml0aWNzLm1hcChmdW5jdGlvbiAoZCkge1xuICByZXR1cm4gZC5sZXR0ZXJzO1xufSkuam9pbignJykgKyAnXScsICdnJyk7XG52YXIgZGlhY3JpdGljVG9CYXNlID0ge307XG5mb3IgKHZhciBpID0gMDsgaSA8IGRpYWNyaXRpY3MubGVuZ3RoOyBpKyspIHtcbiAgdmFyIGRpYWNyaXRpYyA9IGRpYWNyaXRpY3NbaV07XG4gIGZvciAodmFyIGogPSAwOyBqIDwgZGlhY3JpdGljLmxldHRlcnMubGVuZ3RoOyBqKyspIHtcbiAgICBkaWFjcml0aWNUb0Jhc2VbZGlhY3JpdGljLmxldHRlcnNbal1dID0gZGlhY3JpdGljLmJhc2U7XG4gIH1cbn1cbnZhciBzdHJpcERpYWNyaXRpY3MgPSBmdW5jdGlvbiBzdHJpcERpYWNyaXRpY3Moc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShhbnlEaWFjcml0aWMsIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgIHJldHVybiBkaWFjcml0aWNUb0Jhc2VbbWF0Y2hdO1xuICB9KTtcbn07XG5cbnZhciBtZW1vaXplZFN0cmlwRGlhY3JpdGljc0ZvcklucHV0ID0gbWVtb2l6ZU9uZV9fZGVmYXVsdFtcImRlZmF1bHRcIl0oc3RyaXBEaWFjcml0aWNzKTtcbnZhciB0cmltU3RyaW5nID0gZnVuY3Rpb24gdHJpbVN0cmluZyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJyk7XG59O1xudmFyIGRlZmF1bHRTdHJpbmdpZnkgPSBmdW5jdGlvbiBkZWZhdWx0U3RyaW5naWZ5KG9wdGlvbikge1xuICByZXR1cm4gXCJcIi5jb25jYXQob3B0aW9uLmxhYmVsLCBcIiBcIikuY29uY2F0KG9wdGlvbi52YWx1ZSk7XG59O1xudmFyIGNyZWF0ZUZpbHRlciA9IGZ1bmN0aW9uIGNyZWF0ZUZpbHRlcihjb25maWcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChvcHRpb24sIHJhd0lucHV0KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG4gICAgaWYgKG9wdGlvbi5kYXRhLl9faXNOZXdfXykgcmV0dXJuIHRydWU7XG4gICAgdmFyIF9pZ25vcmVDYXNlJGlnbm9yZUFjYyA9IF9vYmplY3RTcHJlYWQoe1xuICAgICAgICBpZ25vcmVDYXNlOiB0cnVlLFxuICAgICAgICBpZ25vcmVBY2NlbnRzOiB0cnVlLFxuICAgICAgICBzdHJpbmdpZnk6IGRlZmF1bHRTdHJpbmdpZnksXG4gICAgICAgIHRyaW06IHRydWUsXG4gICAgICAgIG1hdGNoRnJvbTogJ2FueSdcbiAgICAgIH0sIGNvbmZpZyksXG4gICAgICBpZ25vcmVDYXNlID0gX2lnbm9yZUNhc2UkaWdub3JlQWNjLmlnbm9yZUNhc2UsXG4gICAgICBpZ25vcmVBY2NlbnRzID0gX2lnbm9yZUNhc2UkaWdub3JlQWNjLmlnbm9yZUFjY2VudHMsXG4gICAgICBzdHJpbmdpZnkgPSBfaWdub3JlQ2FzZSRpZ25vcmVBY2Muc3RyaW5naWZ5LFxuICAgICAgdHJpbSA9IF9pZ25vcmVDYXNlJGlnbm9yZUFjYy50cmltLFxuICAgICAgbWF0Y2hGcm9tID0gX2lnbm9yZUNhc2UkaWdub3JlQWNjLm1hdGNoRnJvbTtcbiAgICB2YXIgaW5wdXQgPSB0cmltID8gdHJpbVN0cmluZyhyYXdJbnB1dCkgOiByYXdJbnB1dDtcbiAgICB2YXIgY2FuZGlkYXRlID0gdHJpbSA/IHRyaW1TdHJpbmcoc3RyaW5naWZ5KG9wdGlvbikpIDogc3RyaW5naWZ5KG9wdGlvbik7XG4gICAgaWYgKGlnbm9yZUNhc2UpIHtcbiAgICAgIGlucHV0ID0gaW5wdXQudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBpZiAoaWdub3JlQWNjZW50cykge1xuICAgICAgaW5wdXQgPSBtZW1vaXplZFN0cmlwRGlhY3JpdGljc0ZvcklucHV0KGlucHV0KTtcbiAgICAgIGNhbmRpZGF0ZSA9IHN0cmlwRGlhY3JpdGljcyhjYW5kaWRhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0Y2hGcm9tID09PSAnc3RhcnQnID8gY2FuZGlkYXRlLnN1YnN0cigwLCBpbnB1dC5sZW5ndGgpID09PSBpbnB1dCA6IGNhbmRpZGF0ZS5pbmRleE9mKGlucHV0KSA+IC0xO1xuICB9O1xufTtcblxudmFyIF9leGNsdWRlZCA9IFtcImlubmVyUmVmXCJdO1xuZnVuY3Rpb24gRHVtbXlJbnB1dChfcmVmKSB7XG4gIHZhciBpbm5lclJlZiA9IF9yZWYuaW5uZXJSZWYsXG4gICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgLy8gUmVtb3ZlIGFuaW1hdGlvbiBwcm9wcyBub3QgbWVhbnQgZm9yIEhUTUwgZWxlbWVudHNcbiAgdmFyIGZpbHRlcmVkUHJvcHMgPSBpbmRleC5yZW1vdmVQcm9wcyhwcm9wcywgJ29uRXhpdGVkJywgJ2luJywgJ2VudGVyJywgJ2V4aXQnLCAnYXBwZWFyJyk7XG4gIHJldHVybiByZWFjdC5qc3goXCJpbnB1dFwiLCBfZXh0ZW5kcyh7XG4gICAgcmVmOiBpbm5lclJlZlxuICB9LCBmaWx0ZXJlZFByb3BzLCB7XG4gICAgY3NzOiAvKiNfX1BVUkVfXyovcmVhY3QuY3NzKHtcbiAgICAgIGxhYmVsOiAnZHVtbXlJbnB1dCcsXG4gICAgICAvLyBnZXQgcmlkIG9mIGFueSBkZWZhdWx0IHN0eWxlc1xuICAgICAgYmFja2dyb3VuZDogMCxcbiAgICAgIGJvcmRlcjogMCxcbiAgICAgIC8vIGltcG9ydGFudCEgdGhpcyBoaWRlcyB0aGUgZmxhc2hpbmcgY3Vyc29yXG4gICAgICBjYXJldENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgZm9udFNpemU6ICdpbmhlcml0JyxcbiAgICAgIGdyaWRBcmVhOiAnMSAvIDEgLyAyIC8gMycsXG4gICAgICBvdXRsaW5lOiAwLFxuICAgICAgcGFkZGluZzogMCxcbiAgICAgIC8vIGltcG9ydGFudCEgd2l0aG91dCBgd2lkdGhgIGJyb3dzZXJzIHdvbid0IGFsbG93IGZvY3VzXG4gICAgICB3aWR0aDogMSxcbiAgICAgIC8vIHJlbW92ZSBjdXJzb3Igb24gZGVza3RvcFxuICAgICAgY29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIG1vYmlsZSB3aGlsc3QgbWFpbnRhaW5pbmcgXCJzY3JvbGwgaW50byB2aWV3XCIgYmVoYXZpb3VyXG4gICAgICBsZWZ0OiAtMTAwLFxuICAgICAgb3BhY2l0eTogMCxcbiAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgdHJhbnNmb3JtOiAnc2NhbGUoLjAxKSdcbiAgICB9LCBcIlwiICwgXCJcIiApXG4gIH0pKTtcbn1cblxudmFyIGNhbmNlbFNjcm9sbCA9IGZ1bmN0aW9uIGNhbmNlbFNjcm9sbChldmVudCkge1xuICBpZiAoZXZlbnQuY2FuY2VsYWJsZSkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG59O1xuZnVuY3Rpb24gdXNlU2Nyb2xsQ2FwdHVyZShfcmVmKSB7XG4gIHZhciBpc0VuYWJsZWQgPSBfcmVmLmlzRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZSA9IF9yZWYub25Cb3R0b21BcnJpdmUsXG4gICAgb25Cb3R0b21MZWF2ZSA9IF9yZWYub25Cb3R0b21MZWF2ZSxcbiAgICBvblRvcEFycml2ZSA9IF9yZWYub25Ub3BBcnJpdmUsXG4gICAgb25Ub3BMZWF2ZSA9IF9yZWYub25Ub3BMZWF2ZTtcbiAgdmFyIGlzQm90dG9tID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgdmFyIGlzVG9wID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgdmFyIHRvdWNoU3RhcnQgPSBSZWFjdC51c2VSZWYoMCk7XG4gIHZhciBzY3JvbGxUYXJnZXQgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIHZhciBoYW5kbGVFdmVudERlbHRhID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50LCBkZWx0YSkge1xuICAgIGlmIChzY3JvbGxUYXJnZXQuY3VycmVudCA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIHZhciBfc2Nyb2xsVGFyZ2V0JGN1cnJlbnQgPSBzY3JvbGxUYXJnZXQuY3VycmVudCxcbiAgICAgIHNjcm9sbFRvcCA9IF9zY3JvbGxUYXJnZXQkY3VycmVudC5zY3JvbGxUb3AsXG4gICAgICBzY3JvbGxIZWlnaHQgPSBfc2Nyb2xsVGFyZ2V0JGN1cnJlbnQuc2Nyb2xsSGVpZ2h0LFxuICAgICAgY2xpZW50SGVpZ2h0ID0gX3Njcm9sbFRhcmdldCRjdXJyZW50LmNsaWVudEhlaWdodDtcbiAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xsVGFyZ2V0LmN1cnJlbnQ7XG4gICAgdmFyIGlzRGVsdGFQb3NpdGl2ZSA9IGRlbHRhID4gMDtcbiAgICB2YXIgYXZhaWxhYmxlU2Nyb2xsID0gc2Nyb2xsSGVpZ2h0IC0gY2xpZW50SGVpZ2h0IC0gc2Nyb2xsVG9wO1xuICAgIHZhciBzaG91bGRDYW5jZWxTY3JvbGwgPSBmYWxzZTtcblxuICAgIC8vIHJlc2V0IGJvdHRvbS90b3AgZmxhZ3NcbiAgICBpZiAoYXZhaWxhYmxlU2Nyb2xsID4gZGVsdGEgJiYgaXNCb3R0b20uY3VycmVudCkge1xuICAgICAgaWYgKG9uQm90dG9tTGVhdmUpIG9uQm90dG9tTGVhdmUoZXZlbnQpO1xuICAgICAgaXNCb3R0b20uY3VycmVudCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaXNEZWx0YVBvc2l0aXZlICYmIGlzVG9wLmN1cnJlbnQpIHtcbiAgICAgIGlmIChvblRvcExlYXZlKSBvblRvcExlYXZlKGV2ZW50KTtcbiAgICAgIGlzVG9wLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBib3R0b20gbGltaXRcbiAgICBpZiAoaXNEZWx0YVBvc2l0aXZlICYmIGRlbHRhID4gYXZhaWxhYmxlU2Nyb2xsKSB7XG4gICAgICBpZiAob25Cb3R0b21BcnJpdmUgJiYgIWlzQm90dG9tLmN1cnJlbnQpIHtcbiAgICAgICAgb25Cb3R0b21BcnJpdmUoZXZlbnQpO1xuICAgICAgfVxuICAgICAgdGFyZ2V0LnNjcm9sbFRvcCA9IHNjcm9sbEhlaWdodDtcbiAgICAgIHNob3VsZENhbmNlbFNjcm9sbCA9IHRydWU7XG4gICAgICBpc0JvdHRvbS5jdXJyZW50ID0gdHJ1ZTtcblxuICAgICAgLy8gdG9wIGxpbWl0XG4gICAgfSBlbHNlIGlmICghaXNEZWx0YVBvc2l0aXZlICYmIC1kZWx0YSA+IHNjcm9sbFRvcCkge1xuICAgICAgaWYgKG9uVG9wQXJyaXZlICYmICFpc1RvcC5jdXJyZW50KSB7XG4gICAgICAgIG9uVG9wQXJyaXZlKGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIHRhcmdldC5zY3JvbGxUb3AgPSAwO1xuICAgICAgc2hvdWxkQ2FuY2VsU2Nyb2xsID0gdHJ1ZTtcbiAgICAgIGlzVG9wLmN1cnJlbnQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIGNhbmNlbCBzY3JvbGxcbiAgICBpZiAoc2hvdWxkQ2FuY2VsU2Nyb2xsKSB7XG4gICAgICBjYW5jZWxTY3JvbGwoZXZlbnQpO1xuICAgIH1cbiAgfSwgW29uQm90dG9tQXJyaXZlLCBvbkJvdHRvbUxlYXZlLCBvblRvcEFycml2ZSwgb25Ub3BMZWF2ZV0pO1xuICB2YXIgb25XaGVlbCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldmVudCkge1xuICAgIGhhbmRsZUV2ZW50RGVsdGEoZXZlbnQsIGV2ZW50LmRlbHRhWSk7XG4gIH0sIFtoYW5kbGVFdmVudERlbHRhXSk7XG4gIHZhciBvblRvdWNoU3RhcnQgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAvLyBzZXQgdG91Y2ggc3RhcnQgc28gd2UgY2FuIGNhbGN1bGF0ZSB0b3VjaG1vdmUgZGVsdGFcbiAgICB0b3VjaFN0YXJ0LmN1cnJlbnQgPSBldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZO1xuICB9LCBbXSk7XG4gIHZhciBvblRvdWNoTW92ZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldmVudCkge1xuICAgIHZhciBkZWx0YVkgPSB0b3VjaFN0YXJ0LmN1cnJlbnQgLSBldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZO1xuICAgIGhhbmRsZUV2ZW50RGVsdGEoZXZlbnQsIGRlbHRhWSk7XG4gIH0sIFtoYW5kbGVFdmVudERlbHRhXSk7XG4gIHZhciBzdGFydExpc3RlbmluZyA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChlbCkge1xuICAgIC8vIGJhaWwgZWFybHkgaWYgbm8gZWxlbWVudCBpcyBhdmFpbGFibGUgdG8gYXR0YWNoIHRvXG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgIHZhciBub3RQYXNzaXZlID0gaW5kZXguc3VwcG9ydHNQYXNzaXZlRXZlbnRzID8ge1xuICAgICAgcGFzc2l2ZTogZmFsc2VcbiAgICB9IDogZmFsc2U7XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBvbldoZWVsLCBub3RQYXNzaXZlKTtcbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgb25Ub3VjaFN0YXJ0LCBub3RQYXNzaXZlKTtcbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBvblRvdWNoTW92ZSwgbm90UGFzc2l2ZSk7XG4gIH0sIFtvblRvdWNoTW92ZSwgb25Ub3VjaFN0YXJ0LCBvbldoZWVsXSk7XG4gIHZhciBzdG9wTGlzdGVuaW5nID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGVsKSB7XG4gICAgLy8gYmFpbCBlYXJseSBpZiBubyBlbGVtZW50IGlzIGF2YWlsYWJsZSB0byBkZXRhY2ggZnJvbVxuICAgIGlmICghZWwpIHJldHVybjtcbiAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd3aGVlbCcsIG9uV2hlZWwsIGZhbHNlKTtcbiAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgb25Ub3VjaFN0YXJ0LCBmYWxzZSk7XG4gICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgb25Ub3VjaE1vdmUsIGZhbHNlKTtcbiAgfSwgW29uVG91Y2hNb3ZlLCBvblRvdWNoU3RhcnQsIG9uV2hlZWxdKTtcbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWlzRW5hYmxlZCkgcmV0dXJuO1xuICAgIHZhciBlbGVtZW50ID0gc2Nyb2xsVGFyZ2V0LmN1cnJlbnQ7XG4gICAgc3RhcnRMaXN0ZW5pbmcoZWxlbWVudCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHN0b3BMaXN0ZW5pbmcoZWxlbWVudCk7XG4gICAgfTtcbiAgfSwgW2lzRW5hYmxlZCwgc3RhcnRMaXN0ZW5pbmcsIHN0b3BMaXN0ZW5pbmddKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgc2Nyb2xsVGFyZ2V0LmN1cnJlbnQgPSBlbGVtZW50O1xuICB9O1xufVxuXG52YXIgU1RZTEVfS0VZUyA9IFsnYm94U2l6aW5nJywgJ2hlaWdodCcsICdvdmVyZmxvdycsICdwYWRkaW5nUmlnaHQnLCAncG9zaXRpb24nXTtcbnZhciBMT0NLX1NUWUxFUyA9IHtcbiAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gIC8vIGFjY291bnQgZm9yIHBvc3NpYmxlIGRlY2xhcmF0aW9uIGB3aWR0aDogMTAwJTtgIG9uIGJvZHlcbiAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgaGVpZ2h0OiAnMTAwJSdcbn07XG5mdW5jdGlvbiBwcmV2ZW50VG91Y2hNb3ZlKGUpIHtcbiAgaWYgKGUuY2FuY2VsYWJsZSkgZS5wcmV2ZW50RGVmYXVsdCgpO1xufVxuZnVuY3Rpb24gYWxsb3dUb3VjaE1vdmUoZSkge1xuICBlLnN0b3BQcm9wYWdhdGlvbigpO1xufVxuZnVuY3Rpb24gcHJldmVudEluZXJ0aWFTY3JvbGwoKSB7XG4gIHZhciB0b3AgPSB0aGlzLnNjcm9sbFRvcDtcbiAgdmFyIHRvdGFsU2Nyb2xsID0gdGhpcy5zY3JvbGxIZWlnaHQ7XG4gIHZhciBjdXJyZW50U2Nyb2xsID0gdG9wICsgdGhpcy5vZmZzZXRIZWlnaHQ7XG4gIGlmICh0b3AgPT09IDApIHtcbiAgICB0aGlzLnNjcm9sbFRvcCA9IDE7XG4gIH0gZWxzZSBpZiAoY3VycmVudFNjcm9sbCA9PT0gdG90YWxTY3JvbGwpIHtcbiAgICB0aGlzLnNjcm9sbFRvcCA9IHRvcCAtIDE7XG4gIH1cbn1cblxuLy8gYG9udG91Y2hzdGFydGAgY2hlY2sgd29ya3Mgb24gbW9zdCBicm93c2Vyc1xuLy8gYG1heFRvdWNoUG9pbnRzYCB3b3JrcyBvbiBJRTEwLzExIGFuZCBTdXJmYWNlXG5mdW5jdGlvbiBpc1RvdWNoRGV2aWNlKCkge1xuICByZXR1cm4gJ29udG91Y2hzdGFydCcgaW4gd2luZG93IHx8IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cztcbn1cbnZhciBjYW5Vc2VET00gPSAhISh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZG9jdW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xudmFyIGFjdGl2ZVNjcm9sbExvY2tzID0gMDtcbnZhciBsaXN0ZW5lck9wdGlvbnMgPSB7XG4gIGNhcHR1cmU6IGZhbHNlLFxuICBwYXNzaXZlOiBmYWxzZVxufTtcbmZ1bmN0aW9uIHVzZVNjcm9sbExvY2soX3JlZikge1xuICB2YXIgaXNFbmFibGVkID0gX3JlZi5pc0VuYWJsZWQsXG4gICAgX3JlZiRhY2NvdW50Rm9yU2Nyb2xsID0gX3JlZi5hY2NvdW50Rm9yU2Nyb2xsYmFycyxcbiAgICBhY2NvdW50Rm9yU2Nyb2xsYmFycyA9IF9yZWYkYWNjb3VudEZvclNjcm9sbCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9yZWYkYWNjb3VudEZvclNjcm9sbDtcbiAgdmFyIG9yaWdpbmFsU3R5bGVzID0gUmVhY3QudXNlUmVmKHt9KTtcbiAgdmFyIHNjcm9sbFRhcmdldCA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgdmFyIGFkZFNjcm9sbExvY2sgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAodG91Y2hTY3JvbGxUYXJnZXQpIHtcbiAgICBpZiAoIWNhblVzZURPTSkgcmV0dXJuO1xuICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5ib2R5O1xuICAgIHZhciB0YXJnZXRTdHlsZSA9IHRhcmdldCAmJiB0YXJnZXQuc3R5bGU7XG4gICAgaWYgKGFjY291bnRGb3JTY3JvbGxiYXJzKSB7XG4gICAgICAvLyBzdG9yZSBhbnkgc3R5bGVzIGFscmVhZHkgYXBwbGllZCB0byB0aGUgYm9keVxuICAgICAgU1RZTEVfS0VZUy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbCA9IHRhcmdldFN0eWxlICYmIHRhcmdldFN0eWxlW2tleV07XG4gICAgICAgIG9yaWdpbmFsU3R5bGVzLmN1cnJlbnRba2V5XSA9IHZhbDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIGFwcGx5IHRoZSBsb2NrIHN0eWxlcyBhbmQgcGFkZGluZyBpZiB0aGlzIGlzIHRoZSBmaXJzdCBzY3JvbGwgbG9ja1xuICAgIGlmIChhY2NvdW50Rm9yU2Nyb2xsYmFycyAmJiBhY3RpdmVTY3JvbGxMb2NrcyA8IDEpIHtcbiAgICAgIHZhciBjdXJyZW50UGFkZGluZyA9IHBhcnNlSW50KG9yaWdpbmFsU3R5bGVzLmN1cnJlbnQucGFkZGluZ1JpZ2h0LCAxMCkgfHwgMDtcbiAgICAgIHZhciBjbGllbnRXaWR0aCA9IGRvY3VtZW50LmJvZHkgPyBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIDogMDtcbiAgICAgIHZhciBhZGp1c3RlZFBhZGRpbmcgPSB3aW5kb3cuaW5uZXJXaWR0aCAtIGNsaWVudFdpZHRoICsgY3VycmVudFBhZGRpbmcgfHwgMDtcbiAgICAgIE9iamVjdC5rZXlzKExPQ0tfU1RZTEVTKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbCA9IExPQ0tfU1RZTEVTW2tleV07XG4gICAgICAgIGlmICh0YXJnZXRTdHlsZSkge1xuICAgICAgICAgIHRhcmdldFN0eWxlW2tleV0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKHRhcmdldFN0eWxlKSB7XG4gICAgICAgIHRhcmdldFN0eWxlLnBhZGRpbmdSaWdodCA9IFwiXCIuY29uY2F0KGFkanVzdGVkUGFkZGluZywgXCJweFwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBhY2NvdW50IGZvciB0b3VjaCBkZXZpY2VzXG4gICAgaWYgKHRhcmdldCAmJiBpc1RvdWNoRGV2aWNlKCkpIHtcbiAgICAgIC8vIE1vYmlsZSBTYWZhcmkgaWdub3JlcyB7IG92ZXJmbG93OiBoaWRkZW4gfSBkZWNsYXJhdGlvbiBvbiB0aGUgYm9keS5cbiAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBwcmV2ZW50VG91Y2hNb3ZlLCBsaXN0ZW5lck9wdGlvbnMpO1xuXG4gICAgICAvLyBBbGxvdyBzY3JvbGwgb24gcHJvdmlkZWQgdGFyZ2V0XG4gICAgICBpZiAodG91Y2hTY3JvbGxUYXJnZXQpIHtcbiAgICAgICAgdG91Y2hTY3JvbGxUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHByZXZlbnRJbmVydGlhU2Nyb2xsLCBsaXN0ZW5lck9wdGlvbnMpO1xuICAgICAgICB0b3VjaFNjcm9sbFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBhbGxvd1RvdWNoTW92ZSwgbGlzdGVuZXJPcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpbmNyZW1lbnQgYWN0aXZlIHNjcm9sbCBsb2Nrc1xuICAgIGFjdGl2ZVNjcm9sbExvY2tzICs9IDE7XG4gIH0sIFthY2NvdW50Rm9yU2Nyb2xsYmFyc10pO1xuICB2YXIgcmVtb3ZlU2Nyb2xsTG9jayA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICh0b3VjaFNjcm9sbFRhcmdldCkge1xuICAgIGlmICghY2FuVXNlRE9NKSByZXR1cm47XG4gICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmJvZHk7XG4gICAgdmFyIHRhcmdldFN0eWxlID0gdGFyZ2V0ICYmIHRhcmdldC5zdHlsZTtcblxuICAgIC8vIHNhZmVseSBkZWNyZW1lbnQgYWN0aXZlIHNjcm9sbCBsb2Nrc1xuICAgIGFjdGl2ZVNjcm9sbExvY2tzID0gTWF0aC5tYXgoYWN0aXZlU2Nyb2xsTG9ja3MgLSAxLCAwKTtcblxuICAgIC8vIHJlYXBwbHkgb3JpZ2luYWwgYm9keSBzdHlsZXMsIGlmIGFueVxuICAgIGlmIChhY2NvdW50Rm9yU2Nyb2xsYmFycyAmJiBhY3RpdmVTY3JvbGxMb2NrcyA8IDEpIHtcbiAgICAgIFNUWUxFX0tFWVMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciB2YWwgPSBvcmlnaW5hbFN0eWxlcy5jdXJyZW50W2tleV07XG4gICAgICAgIGlmICh0YXJnZXRTdHlsZSkge1xuICAgICAgICAgIHRhcmdldFN0eWxlW2tleV0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHJlbW92ZSB0b3VjaCBsaXN0ZW5lcnNcbiAgICBpZiAodGFyZ2V0ICYmIGlzVG91Y2hEZXZpY2UoKSkge1xuICAgICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHByZXZlbnRUb3VjaE1vdmUsIGxpc3RlbmVyT3B0aW9ucyk7XG4gICAgICBpZiAodG91Y2hTY3JvbGxUYXJnZXQpIHtcbiAgICAgICAgdG91Y2hTY3JvbGxUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHByZXZlbnRJbmVydGlhU2Nyb2xsLCBsaXN0ZW5lck9wdGlvbnMpO1xuICAgICAgICB0b3VjaFNjcm9sbFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBhbGxvd1RvdWNoTW92ZSwgbGlzdGVuZXJPcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFthY2NvdW50Rm9yU2Nyb2xsYmFyc10pO1xuICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmICghaXNFbmFibGVkKSByZXR1cm47XG4gICAgdmFyIGVsZW1lbnQgPSBzY3JvbGxUYXJnZXQuY3VycmVudDtcbiAgICBhZGRTY3JvbGxMb2NrKGVsZW1lbnQpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZW1vdmVTY3JvbGxMb2NrKGVsZW1lbnQpO1xuICAgIH07XG4gIH0sIFtpc0VuYWJsZWQsIGFkZFNjcm9sbExvY2ssIHJlbW92ZVNjcm9sbExvY2tdKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgc2Nyb2xsVGFyZ2V0LmN1cnJlbnQgPSBlbGVtZW50O1xuICB9O1xufVxuXG52YXIgYmx1clNlbGVjdElucHV0ID0gZnVuY3Rpb24gYmx1clNlbGVjdElucHV0KGV2ZW50KSB7XG4gIHZhciBlbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xuICByZXR1cm4gZWxlbWVudC5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgZWxlbWVudC5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpO1xufTtcbnZhciBfcmVmMiQxID0ge1xuICBuYW1lOiBcIjFrZmRiMGVcIixcbiAgc3R5bGVzOiBcInBvc2l0aW9uOmZpeGVkO2xlZnQ6MDtib3R0b206MDtyaWdodDowO3RvcDowXCJcbn0gO1xuZnVuY3Rpb24gU2Nyb2xsTWFuYWdlcihfcmVmKSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgbG9ja0VuYWJsZWQgPSBfcmVmLmxvY2tFbmFibGVkLFxuICAgIF9yZWYkY2FwdHVyZUVuYWJsZWQgPSBfcmVmLmNhcHR1cmVFbmFibGVkLFxuICAgIGNhcHR1cmVFbmFibGVkID0gX3JlZiRjYXB0dXJlRW5hYmxlZCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9yZWYkY2FwdHVyZUVuYWJsZWQsXG4gICAgb25Cb3R0b21BcnJpdmUgPSBfcmVmLm9uQm90dG9tQXJyaXZlLFxuICAgIG9uQm90dG9tTGVhdmUgPSBfcmVmLm9uQm90dG9tTGVhdmUsXG4gICAgb25Ub3BBcnJpdmUgPSBfcmVmLm9uVG9wQXJyaXZlLFxuICAgIG9uVG9wTGVhdmUgPSBfcmVmLm9uVG9wTGVhdmU7XG4gIHZhciBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0ID0gdXNlU2Nyb2xsQ2FwdHVyZSh7XG4gICAgaXNFbmFibGVkOiBjYXB0dXJlRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZTogb25Cb3R0b21BcnJpdmUsXG4gICAgb25Cb3R0b21MZWF2ZTogb25Cb3R0b21MZWF2ZSxcbiAgICBvblRvcEFycml2ZTogb25Ub3BBcnJpdmUsXG4gICAgb25Ub3BMZWF2ZTogb25Ub3BMZWF2ZVxuICB9KTtcbiAgdmFyIHNldFNjcm9sbExvY2tUYXJnZXQgPSB1c2VTY3JvbGxMb2NrKHtcbiAgICBpc0VuYWJsZWQ6IGxvY2tFbmFibGVkXG4gIH0pO1xuICB2YXIgdGFyZ2V0UmVmID0gZnVuY3Rpb24gdGFyZ2V0UmVmKGVsZW1lbnQpIHtcbiAgICBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0KGVsZW1lbnQpO1xuICAgIHNldFNjcm9sbExvY2tUYXJnZXQoZWxlbWVudCk7XG4gIH07XG4gIHJldHVybiByZWFjdC5qc3goUmVhY3QuRnJhZ21lbnQsIG51bGwsIGxvY2tFbmFibGVkICYmIHJlYWN0LmpzeChcImRpdlwiLCB7XG4gICAgb25DbGljazogYmx1clNlbGVjdElucHV0LFxuICAgIGNzczogX3JlZjIkMVxuICB9KSwgY2hpbGRyZW4odGFyZ2V0UmVmKSk7XG59XG5cbnZhciBfcmVmMiA9IHtcbiAgbmFtZTogXCIxYTBybzRuLXJlcXVpcmVkSW5wdXRcIixcbiAgc3R5bGVzOiBcImxhYmVsOnJlcXVpcmVkSW5wdXQ7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7d2lkdGg6MTAwJVwiXG59IDtcbnZhciBSZXF1aXJlZElucHV0ID0gZnVuY3Rpb24gUmVxdWlyZWRJbnB1dChfcmVmKSB7XG4gIHZhciBuYW1lID0gX3JlZi5uYW1lLFxuICAgIG9uRm9jdXMgPSBfcmVmLm9uRm9jdXM7XG4gIHJldHVybiByZWFjdC5qc3goXCJpbnB1dFwiLCB7XG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgbmFtZTogbmFtZSxcbiAgICB0YWJJbmRleDogLTEsXG4gICAgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIixcbiAgICBvbkZvY3VzOiBvbkZvY3VzLFxuICAgIGNzczogX3JlZjJcbiAgICAvLyBQcmV2ZW50IGBTd2l0Y2hpbmcgZnJvbSB1bmNvbnRyb2xsZWQgdG8gY29udHJvbGxlZGAgZXJyb3JcbiAgICAsXG4gICAgdmFsdWU6IFwiXCIsXG4gICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKCkge31cbiAgfSk7XG59O1xudmFyIFJlcXVpcmVkSW5wdXQkMSA9IFJlcXVpcmVkSW5wdXQ7XG5cbi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidXNlci1hZ2VudC1kYXRhLXR5cGVzXCIgLz5cblxuZnVuY3Rpb24gdGVzdFBsYXRmb3JtKHJlKSB7XG4gIHZhciBfd2luZG93JG5hdmlnYXRvciR1c2U7XG4gIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cubmF2aWdhdG9yICE9IG51bGwgPyByZS50ZXN0KCgoX3dpbmRvdyRuYXZpZ2F0b3IkdXNlID0gd2luZG93Lm5hdmlnYXRvclsndXNlckFnZW50RGF0YSddKSA9PT0gbnVsbCB8fCBfd2luZG93JG5hdmlnYXRvciR1c2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF93aW5kb3ckbmF2aWdhdG9yJHVzZS5wbGF0Zm9ybSkgfHwgd2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybSkgOiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGlzSVBob25lKCkge1xuICByZXR1cm4gdGVzdFBsYXRmb3JtKC9eaVBob25lL2kpO1xufVxuZnVuY3Rpb24gaXNNYWMoKSB7XG4gIHJldHVybiB0ZXN0UGxhdGZvcm0oL15NYWMvaSk7XG59XG5mdW5jdGlvbiBpc0lQYWQoKSB7XG4gIHJldHVybiB0ZXN0UGxhdGZvcm0oL15pUGFkL2kpIHx8XG4gIC8vIGlQYWRPUyAxMyBsaWVzIGFuZCBzYXlzIGl0J3MgYSBNYWMsIGJ1dCB3ZSBjYW4gZGlzdGluZ3Vpc2ggYnkgZGV0ZWN0aW5nIHRvdWNoIHN1cHBvcnQuXG4gIGlzTWFjKCkgJiYgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzID4gMTtcbn1cbmZ1bmN0aW9uIGlzSU9TKCkge1xuICByZXR1cm4gaXNJUGhvbmUoKSB8fCBpc0lQYWQoKTtcbn1cbmZ1bmN0aW9uIGlzQXBwbGVEZXZpY2UoKSB7XG4gIHJldHVybiBpc01hYygpIHx8IGlzSU9TKCk7XG59XG5cbnZhciBmb3JtYXRHcm91cExhYmVsID0gZnVuY3Rpb24gZm9ybWF0R3JvdXBMYWJlbChncm91cCkge1xuICByZXR1cm4gZ3JvdXAubGFiZWw7XG59O1xudmFyIGdldE9wdGlvbkxhYmVsJDEgPSBmdW5jdGlvbiBnZXRPcHRpb25MYWJlbChvcHRpb24pIHtcbiAgcmV0dXJuIG9wdGlvbi5sYWJlbDtcbn07XG52YXIgZ2V0T3B0aW9uVmFsdWUkMSA9IGZ1bmN0aW9uIGdldE9wdGlvblZhbHVlKG9wdGlvbikge1xuICByZXR1cm4gb3B0aW9uLnZhbHVlO1xufTtcbnZhciBpc09wdGlvbkRpc2FibGVkID0gZnVuY3Rpb24gaXNPcHRpb25EaXNhYmxlZChvcHRpb24pIHtcbiAgcmV0dXJuICEhb3B0aW9uLmlzRGlzYWJsZWQ7XG59O1xuXG52YXIgZGVmYXVsdFN0eWxlcyA9IHtcbiAgY2xlYXJJbmRpY2F0b3I6IGluZGV4LmNsZWFySW5kaWNhdG9yQ1NTLFxuICBjb250YWluZXI6IGluZGV4LmNvbnRhaW5lckNTUyxcbiAgY29udHJvbDogaW5kZXguY3NzLFxuICBkcm9wZG93bkluZGljYXRvcjogaW5kZXguZHJvcGRvd25JbmRpY2F0b3JDU1MsXG4gIGdyb3VwOiBpbmRleC5ncm91cENTUyxcbiAgZ3JvdXBIZWFkaW5nOiBpbmRleC5ncm91cEhlYWRpbmdDU1MsXG4gIGluZGljYXRvcnNDb250YWluZXI6IGluZGV4LmluZGljYXRvcnNDb250YWluZXJDU1MsXG4gIGluZGljYXRvclNlcGFyYXRvcjogaW5kZXguaW5kaWNhdG9yU2VwYXJhdG9yQ1NTLFxuICBpbnB1dDogaW5kZXguaW5wdXRDU1MsXG4gIGxvYWRpbmdJbmRpY2F0b3I6IGluZGV4LmxvYWRpbmdJbmRpY2F0b3JDU1MsXG4gIGxvYWRpbmdNZXNzYWdlOiBpbmRleC5sb2FkaW5nTWVzc2FnZUNTUyxcbiAgbWVudTogaW5kZXgubWVudUNTUyxcbiAgbWVudUxpc3Q6IGluZGV4Lm1lbnVMaXN0Q1NTLFxuICBtZW51UG9ydGFsOiBpbmRleC5tZW51UG9ydGFsQ1NTLFxuICBtdWx0aVZhbHVlOiBpbmRleC5tdWx0aVZhbHVlQ1NTLFxuICBtdWx0aVZhbHVlTGFiZWw6IGluZGV4Lm11bHRpVmFsdWVMYWJlbENTUyxcbiAgbXVsdGlWYWx1ZVJlbW92ZTogaW5kZXgubXVsdGlWYWx1ZVJlbW92ZUNTUyxcbiAgbm9PcHRpb25zTWVzc2FnZTogaW5kZXgubm9PcHRpb25zTWVzc2FnZUNTUyxcbiAgb3B0aW9uOiBpbmRleC5vcHRpb25DU1MsXG4gIHBsYWNlaG9sZGVyOiBpbmRleC5wbGFjZWhvbGRlckNTUyxcbiAgc2luZ2xlVmFsdWU6IGluZGV4LmNzcyQxLFxuICB2YWx1ZUNvbnRhaW5lcjogaW5kZXgudmFsdWVDb250YWluZXJDU1Ncbn07XG4vLyBNZXJnZSBVdGlsaXR5XG4vLyBBbGxvd3MgY29uc3VtZXJzIHRvIGV4dGVuZCBhIGJhc2UgU2VsZWN0IHdpdGggYWRkaXRpb25hbCBzdHlsZXNcblxuZnVuY3Rpb24gbWVyZ2VTdHlsZXMoc291cmNlKSB7XG4gIHZhciB0YXJnZXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAvLyBpbml0aWFsaXplIHdpdGggc291cmNlIHN0eWxlc1xuICB2YXIgc3R5bGVzID0gX29iamVjdFNwcmVhZCh7fSwgc291cmNlKTtcblxuICAvLyBtYXNzYWdlIGluIHRhcmdldCBzdHlsZXNcbiAgT2JqZWN0LmtleXModGFyZ2V0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXlBc1N0cmluZykge1xuICAgIHZhciBrZXkgPSBrZXlBc1N0cmluZztcbiAgICBpZiAoc291cmNlW2tleV0pIHtcbiAgICAgIHN0eWxlc1trZXldID0gZnVuY3Rpb24gKHJzQ3NzLCBwcm9wcykge1xuICAgICAgICByZXR1cm4gdGFyZ2V0W2tleV0oc291cmNlW2tleV0ocnNDc3MsIHByb3BzKSwgcHJvcHMpO1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVzW2tleV0gPSB0YXJnZXRba2V5XTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gc3R5bGVzO1xufVxuXG52YXIgY29sb3JzID0ge1xuICBwcmltYXJ5OiAnIzI2ODRGRicsXG4gIHByaW1hcnk3NTogJyM0QzlBRkYnLFxuICBwcmltYXJ5NTA6ICcjQjJENEZGJyxcbiAgcHJpbWFyeTI1OiAnI0RFRUJGRicsXG4gIGRhbmdlcjogJyNERTM1MEInLFxuICBkYW5nZXJMaWdodDogJyNGRkJEQUQnLFxuICBuZXV0cmFsMDogJ2hzbCgwLCAwJSwgMTAwJSknLFxuICBuZXV0cmFsNTogJ2hzbCgwLCAwJSwgOTUlKScsXG4gIG5ldXRyYWwxMDogJ2hzbCgwLCAwJSwgOTAlKScsXG4gIG5ldXRyYWwyMDogJ2hzbCgwLCAwJSwgODAlKScsXG4gIG5ldXRyYWwzMDogJ2hzbCgwLCAwJSwgNzAlKScsXG4gIG5ldXRyYWw0MDogJ2hzbCgwLCAwJSwgNjAlKScsXG4gIG5ldXRyYWw1MDogJ2hzbCgwLCAwJSwgNTAlKScsXG4gIG5ldXRyYWw2MDogJ2hzbCgwLCAwJSwgNDAlKScsXG4gIG5ldXRyYWw3MDogJ2hzbCgwLCAwJSwgMzAlKScsXG4gIG5ldXRyYWw4MDogJ2hzbCgwLCAwJSwgMjAlKScsXG4gIG5ldXRyYWw5MDogJ2hzbCgwLCAwJSwgMTAlKSdcbn07XG52YXIgYm9yZGVyUmFkaXVzID0gNDtcbi8vIFVzZWQgdG8gY2FsY3VsYXRlIGNvbnNpc3RlbnQgbWFyZ2luL3BhZGRpbmcgb24gZWxlbWVudHNcbnZhciBiYXNlVW5pdCA9IDQ7XG4vLyBUaGUgbWluaW11bSBoZWlnaHQgb2YgdGhlIGNvbnRyb2xcbnZhciBjb250cm9sSGVpZ2h0ID0gMzg7XG4vLyBUaGUgYW1vdW50IG9mIHNwYWNlIGJldHdlZW4gdGhlIGNvbnRyb2wgYW5kIG1lbnUgKi9cbnZhciBtZW51R3V0dGVyID0gYmFzZVVuaXQgKiAyO1xudmFyIHNwYWNpbmcgPSB7XG4gIGJhc2VVbml0OiBiYXNlVW5pdCxcbiAgY29udHJvbEhlaWdodDogY29udHJvbEhlaWdodCxcbiAgbWVudUd1dHRlcjogbWVudUd1dHRlclxufTtcbnZhciBkZWZhdWx0VGhlbWUgPSB7XG4gIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzLFxuICBjb2xvcnM6IGNvbG9ycyxcbiAgc3BhY2luZzogc3BhY2luZ1xufTtcblxudmFyIGRlZmF1bHRQcm9wcyA9IHtcbiAgJ2FyaWEtbGl2ZSc6ICdwb2xpdGUnLFxuICBiYWNrc3BhY2VSZW1vdmVzVmFsdWU6IHRydWUsXG4gIGJsdXJJbnB1dE9uU2VsZWN0OiBpbmRleC5pc1RvdWNoQ2FwYWJsZSgpLFxuICBjYXB0dXJlTWVudVNjcm9sbDogIWluZGV4LmlzVG91Y2hDYXBhYmxlKCksXG4gIGNsYXNzTmFtZXM6IHt9LFxuICBjbG9zZU1lbnVPblNlbGVjdDogdHJ1ZSxcbiAgY2xvc2VNZW51T25TY3JvbGw6IGZhbHNlLFxuICBjb21wb25lbnRzOiB7fSxcbiAgY29udHJvbFNob3VsZFJlbmRlclZhbHVlOiB0cnVlLFxuICBlc2NhcGVDbGVhcnNWYWx1ZTogZmFsc2UsXG4gIGZpbHRlck9wdGlvbjogY3JlYXRlRmlsdGVyKCksXG4gIGZvcm1hdEdyb3VwTGFiZWw6IGZvcm1hdEdyb3VwTGFiZWwsXG4gIGdldE9wdGlvbkxhYmVsOiBnZXRPcHRpb25MYWJlbCQxLFxuICBnZXRPcHRpb25WYWx1ZTogZ2V0T3B0aW9uVmFsdWUkMSxcbiAgaXNEaXNhYmxlZDogZmFsc2UsXG4gIGlzTG9hZGluZzogZmFsc2UsXG4gIGlzTXVsdGk6IGZhbHNlLFxuICBpc1J0bDogZmFsc2UsXG4gIGlzU2VhcmNoYWJsZTogdHJ1ZSxcbiAgaXNPcHRpb25EaXNhYmxlZDogaXNPcHRpb25EaXNhYmxlZCxcbiAgbG9hZGluZ01lc3NhZ2U6IGZ1bmN0aW9uIGxvYWRpbmdNZXNzYWdlKCkge1xuICAgIHJldHVybiAnTG9hZGluZy4uLic7XG4gIH0sXG4gIG1heE1lbnVIZWlnaHQ6IDMwMCxcbiAgbWluTWVudUhlaWdodDogMTQwLFxuICBtZW51SXNPcGVuOiBmYWxzZSxcbiAgbWVudVBsYWNlbWVudDogJ2JvdHRvbScsXG4gIG1lbnVQb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgbWVudVNob3VsZEJsb2NrU2Nyb2xsOiBmYWxzZSxcbiAgbWVudVNob3VsZFNjcm9sbEludG9WaWV3OiAhaW5kZXguaXNNb2JpbGVEZXZpY2UoKSxcbiAgbm9PcHRpb25zTWVzc2FnZTogZnVuY3Rpb24gbm9PcHRpb25zTWVzc2FnZSgpIHtcbiAgICByZXR1cm4gJ05vIG9wdGlvbnMnO1xuICB9LFxuICBvcGVuTWVudU9uRm9jdXM6IGZhbHNlLFxuICBvcGVuTWVudU9uQ2xpY2s6IHRydWUsXG4gIG9wdGlvbnM6IFtdLFxuICBwYWdlU2l6ZTogNSxcbiAgcGxhY2Vob2xkZXI6ICdTZWxlY3QuLi4nLFxuICBzY3JlZW5SZWFkZXJTdGF0dXM6IGZ1bmN0aW9uIHNjcmVlblJlYWRlclN0YXR1cyhfcmVmKSB7XG4gICAgdmFyIGNvdW50ID0gX3JlZi5jb3VudDtcbiAgICByZXR1cm4gXCJcIi5jb25jYXQoY291bnQsIFwiIHJlc3VsdFwiKS5jb25jYXQoY291bnQgIT09IDEgPyAncycgOiAnJywgXCIgYXZhaWxhYmxlXCIpO1xuICB9LFxuICBzdHlsZXM6IHt9LFxuICB0YWJJbmRleDogMCxcbiAgdGFiU2VsZWN0c1ZhbHVlOiB0cnVlLFxuICB1bnN0eWxlZDogZmFsc2Vcbn07XG5mdW5jdGlvbiB0b0NhdGVnb3JpemVkT3B0aW9uKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlLCBpbmRleCkge1xuICB2YXIgaXNEaXNhYmxlZCA9IF9pc09wdGlvbkRpc2FibGVkKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlKTtcbiAgdmFyIGlzU2VsZWN0ZWQgPSBfaXNPcHRpb25TZWxlY3RlZChwcm9wcywgb3B0aW9uLCBzZWxlY3RWYWx1ZSk7XG4gIHZhciBsYWJlbCA9IGdldE9wdGlvbkxhYmVsKHByb3BzLCBvcHRpb24pO1xuICB2YXIgdmFsdWUgPSBnZXRPcHRpb25WYWx1ZShwcm9wcywgb3B0aW9uKTtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnb3B0aW9uJyxcbiAgICBkYXRhOiBvcHRpb24sXG4gICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICBpc1NlbGVjdGVkOiBpc1NlbGVjdGVkLFxuICAgIGxhYmVsOiBsYWJlbCxcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgaW5kZXg6IGluZGV4XG4gIH07XG59XG5mdW5jdGlvbiBidWlsZENhdGVnb3JpemVkT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpIHtcbiAgcmV0dXJuIHByb3BzLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChncm91cE9yT3B0aW9uLCBncm91cE9yT3B0aW9uSW5kZXgpIHtcbiAgICBpZiAoJ29wdGlvbnMnIGluIGdyb3VwT3JPcHRpb24pIHtcbiAgICAgIHZhciBjYXRlZ29yaXplZE9wdGlvbnMgPSBncm91cE9yT3B0aW9uLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24sIG9wdGlvbkluZGV4KSB7XG4gICAgICAgIHJldHVybiB0b0NhdGVnb3JpemVkT3B0aW9uKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlLCBvcHRpb25JbmRleCk7XG4gICAgICB9KS5maWx0ZXIoZnVuY3Rpb24gKGNhdGVnb3JpemVkT3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBpc0ZvY3VzYWJsZShwcm9wcywgY2F0ZWdvcml6ZWRPcHRpb24pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gY2F0ZWdvcml6ZWRPcHRpb25zLmxlbmd0aCA+IDAgPyB7XG4gICAgICAgIHR5cGU6ICdncm91cCcsXG4gICAgICAgIGRhdGE6IGdyb3VwT3JPcHRpb24sXG4gICAgICAgIG9wdGlvbnM6IGNhdGVnb3JpemVkT3B0aW9ucyxcbiAgICAgICAgaW5kZXg6IGdyb3VwT3JPcHRpb25JbmRleFxuICAgICAgfSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdmFyIGNhdGVnb3JpemVkT3B0aW9uID0gdG9DYXRlZ29yaXplZE9wdGlvbihwcm9wcywgZ3JvdXBPck9wdGlvbiwgc2VsZWN0VmFsdWUsIGdyb3VwT3JPcHRpb25JbmRleCk7XG4gICAgcmV0dXJuIGlzRm9jdXNhYmxlKHByb3BzLCBjYXRlZ29yaXplZE9wdGlvbikgPyBjYXRlZ29yaXplZE9wdGlvbiA6IHVuZGVmaW5lZDtcbiAgfSkuZmlsdGVyKGluZGV4Lm5vdE51bGxpc2gpO1xufVxuZnVuY3Rpb24gYnVpbGRGb2N1c2FibGVPcHRpb25zRnJvbUNhdGVnb3JpemVkT3B0aW9ucyhjYXRlZ29yaXplZE9wdGlvbnMpIHtcbiAgcmV0dXJuIGNhdGVnb3JpemVkT3B0aW9ucy5yZWR1Y2UoZnVuY3Rpb24gKG9wdGlvbnNBY2N1bXVsYXRvciwgY2F0ZWdvcml6ZWRPcHRpb24pIHtcbiAgICBpZiAoY2F0ZWdvcml6ZWRPcHRpb24udHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgb3B0aW9uc0FjY3VtdWxhdG9yLnB1c2guYXBwbHkob3B0aW9uc0FjY3VtdWxhdG9yLCBfdG9Db25zdW1hYmxlQXJyYXkoY2F0ZWdvcml6ZWRPcHRpb24ub3B0aW9ucy5tYXAoZnVuY3Rpb24gKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uLmRhdGE7XG4gICAgICB9KSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zQWNjdW11bGF0b3IucHVzaChjYXRlZ29yaXplZE9wdGlvbi5kYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnNBY2N1bXVsYXRvcjtcbiAgfSwgW10pO1xufVxuZnVuY3Rpb24gYnVpbGRGb2N1c2FibGVPcHRpb25zV2l0aElkcyhjYXRlZ29yaXplZE9wdGlvbnMsIG9wdGlvbklkKSB7XG4gIHJldHVybiBjYXRlZ29yaXplZE9wdGlvbnMucmVkdWNlKGZ1bmN0aW9uIChvcHRpb25zQWNjdW11bGF0b3IsIGNhdGVnb3JpemVkT3B0aW9uKSB7XG4gICAgaWYgKGNhdGVnb3JpemVkT3B0aW9uLnR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgIG9wdGlvbnNBY2N1bXVsYXRvci5wdXNoLmFwcGx5KG9wdGlvbnNBY2N1bXVsYXRvciwgX3RvQ29uc3VtYWJsZUFycmF5KGNhdGVnb3JpemVkT3B0aW9uLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiBvcHRpb24uZGF0YSxcbiAgICAgICAgICBpZDogXCJcIi5jb25jYXQob3B0aW9uSWQsIFwiLVwiKS5jb25jYXQoY2F0ZWdvcml6ZWRPcHRpb24uaW5kZXgsIFwiLVwiKS5jb25jYXQob3B0aW9uLmluZGV4KVxuICAgICAgICB9O1xuICAgICAgfSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9uc0FjY3VtdWxhdG9yLnB1c2goe1xuICAgICAgICBkYXRhOiBjYXRlZ29yaXplZE9wdGlvbi5kYXRhLFxuICAgICAgICBpZDogXCJcIi5jb25jYXQob3B0aW9uSWQsIFwiLVwiKS5jb25jYXQoY2F0ZWdvcml6ZWRPcHRpb24uaW5kZXgpXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnNBY2N1bXVsYXRvcjtcbiAgfSwgW10pO1xufVxuZnVuY3Rpb24gYnVpbGRGb2N1c2FibGVPcHRpb25zKHByb3BzLCBzZWxlY3RWYWx1ZSkge1xuICByZXR1cm4gYnVpbGRGb2N1c2FibGVPcHRpb25zRnJvbUNhdGVnb3JpemVkT3B0aW9ucyhidWlsZENhdGVnb3JpemVkT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGlzRm9jdXNhYmxlKHByb3BzLCBjYXRlZ29yaXplZE9wdGlvbikge1xuICB2YXIgX3Byb3BzJGlucHV0VmFsdWUgPSBwcm9wcy5pbnB1dFZhbHVlLFxuICAgIGlucHV0VmFsdWUgPSBfcHJvcHMkaW5wdXRWYWx1ZSA9PT0gdm9pZCAwID8gJycgOiBfcHJvcHMkaW5wdXRWYWx1ZTtcbiAgdmFyIGRhdGEgPSBjYXRlZ29yaXplZE9wdGlvbi5kYXRhLFxuICAgIGlzU2VsZWN0ZWQgPSBjYXRlZ29yaXplZE9wdGlvbi5pc1NlbGVjdGVkLFxuICAgIGxhYmVsID0gY2F0ZWdvcml6ZWRPcHRpb24ubGFiZWwsXG4gICAgdmFsdWUgPSBjYXRlZ29yaXplZE9wdGlvbi52YWx1ZTtcbiAgcmV0dXJuICghc2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyhwcm9wcykgfHwgIWlzU2VsZWN0ZWQpICYmIF9maWx0ZXJPcHRpb24ocHJvcHMsIHtcbiAgICBsYWJlbDogbGFiZWwsXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIGRhdGE6IGRhdGFcbiAgfSwgaW5wdXRWYWx1ZSk7XG59XG5mdW5jdGlvbiBnZXROZXh0Rm9jdXNlZFZhbHVlKHN0YXRlLCBuZXh0U2VsZWN0VmFsdWUpIHtcbiAgdmFyIGZvY3VzZWRWYWx1ZSA9IHN0YXRlLmZvY3VzZWRWYWx1ZSxcbiAgICBsYXN0U2VsZWN0VmFsdWUgPSBzdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgdmFyIGxhc3RGb2N1c2VkSW5kZXggPSBsYXN0U2VsZWN0VmFsdWUuaW5kZXhPZihmb2N1c2VkVmFsdWUpO1xuICBpZiAobGFzdEZvY3VzZWRJbmRleCA+IC0xKSB7XG4gICAgdmFyIG5leHRGb2N1c2VkSW5kZXggPSBuZXh0U2VsZWN0VmFsdWUuaW5kZXhPZihmb2N1c2VkVmFsdWUpO1xuICAgIGlmIChuZXh0Rm9jdXNlZEluZGV4ID4gLTEpIHtcbiAgICAgIC8vIHRoZSBmb2N1c2VkIHZhbHVlIGlzIHN0aWxsIGluIHRoZSBzZWxlY3RWYWx1ZSwgcmV0dXJuIGl0XG4gICAgICByZXR1cm4gZm9jdXNlZFZhbHVlO1xuICAgIH0gZWxzZSBpZiAobGFzdEZvY3VzZWRJbmRleCA8IG5leHRTZWxlY3RWYWx1ZS5sZW5ndGgpIHtcbiAgICAgIC8vIHRoZSBmb2N1c2VkVmFsdWUgaXMgbm90IHByZXNlbnQgaW4gdGhlIG5leHQgc2VsZWN0VmFsdWUgYXJyYXkgYnlcbiAgICAgIC8vIHJlZmVyZW5jZSwgc28gcmV0dXJuIHRoZSBuZXcgdmFsdWUgYXQgdGhlIHNhbWUgaW5kZXhcbiAgICAgIHJldHVybiBuZXh0U2VsZWN0VmFsdWVbbGFzdEZvY3VzZWRJbmRleF07XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gZ2V0TmV4dEZvY3VzZWRPcHRpb24oc3RhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIGxhc3RGb2N1c2VkT3B0aW9uID0gc3RhdGUuZm9jdXNlZE9wdGlvbjtcbiAgcmV0dXJuIGxhc3RGb2N1c2VkT3B0aW9uICYmIG9wdGlvbnMuaW5kZXhPZihsYXN0Rm9jdXNlZE9wdGlvbikgPiAtMSA/IGxhc3RGb2N1c2VkT3B0aW9uIDogb3B0aW9uc1swXTtcbn1cbnZhciBnZXRGb2N1c2VkT3B0aW9uSWQgPSBmdW5jdGlvbiBnZXRGb2N1c2VkT3B0aW9uSWQoZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMsIGZvY3VzZWRPcHRpb24pIHtcbiAgdmFyIF9mb2N1c2FibGVPcHRpb25zV2l0aDtcbiAgdmFyIGZvY3VzZWRPcHRpb25JZCA9IChfZm9jdXNhYmxlT3B0aW9uc1dpdGggPSBmb2N1c2FibGVPcHRpb25zV2l0aElkcy5maW5kKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICByZXR1cm4gb3B0aW9uLmRhdGEgPT09IGZvY3VzZWRPcHRpb247XG4gIH0pKSA9PT0gbnVsbCB8fCBfZm9jdXNhYmxlT3B0aW9uc1dpdGggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9mb2N1c2FibGVPcHRpb25zV2l0aC5pZDtcbiAgcmV0dXJuIGZvY3VzZWRPcHRpb25JZCB8fCBudWxsO1xufTtcbnZhciBnZXRPcHRpb25MYWJlbCA9IGZ1bmN0aW9uIGdldE9wdGlvbkxhYmVsKHByb3BzLCBkYXRhKSB7XG4gIHJldHVybiBwcm9wcy5nZXRPcHRpb25MYWJlbChkYXRhKTtcbn07XG52YXIgZ2V0T3B0aW9uVmFsdWUgPSBmdW5jdGlvbiBnZXRPcHRpb25WYWx1ZShwcm9wcywgZGF0YSkge1xuICByZXR1cm4gcHJvcHMuZ2V0T3B0aW9uVmFsdWUoZGF0YSk7XG59O1xuZnVuY3Rpb24gX2lzT3B0aW9uRGlzYWJsZWQocHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiBwcm9wcy5pc09wdGlvbkRpc2FibGVkID09PSAnZnVuY3Rpb24nID8gcHJvcHMuaXNPcHRpb25EaXNhYmxlZChvcHRpb24sIHNlbGVjdFZhbHVlKSA6IGZhbHNlO1xufVxuZnVuY3Rpb24gX2lzT3B0aW9uU2VsZWN0ZWQocHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpIHtcbiAgaWYgKHNlbGVjdFZhbHVlLmluZGV4T2Yob3B0aW9uKSA+IC0xKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKHR5cGVvZiBwcm9wcy5pc09wdGlvblNlbGVjdGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHByb3BzLmlzT3B0aW9uU2VsZWN0ZWQob3B0aW9uLCBzZWxlY3RWYWx1ZSk7XG4gIH1cbiAgdmFyIGNhbmRpZGF0ZSA9IGdldE9wdGlvblZhbHVlKHByb3BzLCBvcHRpb24pO1xuICByZXR1cm4gc2VsZWN0VmFsdWUuc29tZShmdW5jdGlvbiAoaSkge1xuICAgIHJldHVybiBnZXRPcHRpb25WYWx1ZShwcm9wcywgaSkgPT09IGNhbmRpZGF0ZTtcbiAgfSk7XG59XG5mdW5jdGlvbiBfZmlsdGVyT3B0aW9uKHByb3BzLCBvcHRpb24sIGlucHV0VmFsdWUpIHtcbiAgcmV0dXJuIHByb3BzLmZpbHRlck9wdGlvbiA/IHByb3BzLmZpbHRlck9wdGlvbihvcHRpb24sIGlucHV0VmFsdWUpIDogdHJ1ZTtcbn1cbnZhciBzaG91bGRIaWRlU2VsZWN0ZWRPcHRpb25zID0gZnVuY3Rpb24gc2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyhwcm9wcykge1xuICB2YXIgaGlkZVNlbGVjdGVkT3B0aW9ucyA9IHByb3BzLmhpZGVTZWxlY3RlZE9wdGlvbnMsXG4gICAgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGk7XG4gIGlmIChoaWRlU2VsZWN0ZWRPcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiBpc011bHRpO1xuICByZXR1cm4gaGlkZVNlbGVjdGVkT3B0aW9ucztcbn07XG52YXIgaW5zdGFuY2VJZCA9IDE7XG52YXIgU2VsZWN0ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhTZWxlY3QsIF9Db21wb25lbnQpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFNlbGVjdCk7XG4gIC8vIE1pc2MuIEluc3RhbmNlIFByb3BlcnRpZXNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gVE9ET1xuXG4gIC8vIFJlZnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gTGlmZWN5Y2xlXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGZ1bmN0aW9uIFNlbGVjdChfcHJvcHMpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNlbGVjdCk7XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBfcHJvcHMpO1xuICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgYXJpYVNlbGVjdGlvbjogbnVsbCxcbiAgICAgIGZvY3VzZWRPcHRpb246IG51bGwsXG4gICAgICBmb2N1c2VkT3B0aW9uSWQ6IG51bGwsXG4gICAgICBmb2N1c2FibGVPcHRpb25zV2l0aElkczogW10sXG4gICAgICBmb2N1c2VkVmFsdWU6IG51bGwsXG4gICAgICBpbnB1dElzSGlkZGVuOiBmYWxzZSxcbiAgICAgIGlzRm9jdXNlZDogZmFsc2UsXG4gICAgICBzZWxlY3RWYWx1ZTogW10sXG4gICAgICBjbGVhckZvY3VzVmFsdWVPblVwZGF0ZTogZmFsc2UsXG4gICAgICBwcmV2V2FzRm9jdXNlZDogZmFsc2UsXG4gICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgIHByZXZQcm9wczogdW5kZWZpbmVkLFxuICAgICAgaW5zdGFuY2VQcmVmaXg6ICcnXG4gICAgfTtcbiAgICBfdGhpcy5ibG9ja09wdGlvbkhvdmVyID0gZmFsc2U7XG4gICAgX3RoaXMuaXNDb21wb3NpbmcgPSBmYWxzZTtcbiAgICBfdGhpcy5jb21tb25Qcm9wcyA9IHZvaWQgMDtcbiAgICBfdGhpcy5pbml0aWFsVG91Y2hYID0gMDtcbiAgICBfdGhpcy5pbml0aWFsVG91Y2hZID0gMDtcbiAgICBfdGhpcy5vcGVuQWZ0ZXJGb2N1cyA9IGZhbHNlO1xuICAgIF90aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gZmFsc2U7XG4gICAgX3RoaXMudXNlcklzRHJhZ2dpbmcgPSB2b2lkIDA7XG4gICAgX3RoaXMuaXNBcHBsZURldmljZSA9IGlzQXBwbGVEZXZpY2UoKTtcbiAgICBfdGhpcy5jb250cm9sUmVmID0gbnVsbDtcbiAgICBfdGhpcy5nZXRDb250cm9sUmVmID0gZnVuY3Rpb24gKHJlZikge1xuICAgICAgX3RoaXMuY29udHJvbFJlZiA9IHJlZjtcbiAgICB9O1xuICAgIF90aGlzLmZvY3VzZWRPcHRpb25SZWYgPSBudWxsO1xuICAgIF90aGlzLmdldEZvY3VzZWRPcHRpb25SZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICBfdGhpcy5mb2N1c2VkT3B0aW9uUmVmID0gcmVmO1xuICAgIH07XG4gICAgX3RoaXMubWVudUxpc3RSZWYgPSBudWxsO1xuICAgIF90aGlzLmdldE1lbnVMaXN0UmVmID0gZnVuY3Rpb24gKHJlZikge1xuICAgICAgX3RoaXMubWVudUxpc3RSZWYgPSByZWY7XG4gICAgfTtcbiAgICBfdGhpcy5pbnB1dFJlZiA9IG51bGw7XG4gICAgX3RoaXMuZ2V0SW5wdXRSZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICBfdGhpcy5pbnB1dFJlZiA9IHJlZjtcbiAgICB9O1xuICAgIF90aGlzLmZvY3VzID0gX3RoaXMuZm9jdXNJbnB1dDtcbiAgICBfdGhpcy5ibHVyID0gX3RoaXMuYmx1cklucHV0O1xuICAgIF90aGlzLm9uQ2hhbmdlID0gZnVuY3Rpb24gKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgb25DaGFuZ2UgPSBfdGhpcyRwcm9wcy5vbkNoYW5nZSxcbiAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzLm5hbWU7XG4gICAgICBhY3Rpb25NZXRhLm5hbWUgPSBuYW1lO1xuICAgICAgX3RoaXMuYXJpYU9uQ2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICAgIG9uQ2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICB9O1xuICAgIF90aGlzLnNldFZhbHVlID0gZnVuY3Rpb24gKG5ld1ZhbHVlLCBhY3Rpb24sIG9wdGlvbikge1xuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IF90aGlzLnByb3BzLFxuICAgICAgICBjbG9zZU1lbnVPblNlbGVjdCA9IF90aGlzJHByb3BzMi5jbG9zZU1lbnVPblNlbGVjdCxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzMi5pc011bHRpLFxuICAgICAgICBpbnB1dFZhbHVlID0gX3RoaXMkcHJvcHMyLmlucHV0VmFsdWU7XG4gICAgICBfdGhpcy5vbklucHV0Q2hhbmdlKCcnLCB7XG4gICAgICAgIGFjdGlvbjogJ3NldC12YWx1ZScsXG4gICAgICAgIHByZXZJbnB1dFZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICB9KTtcbiAgICAgIGlmIChjbG9zZU1lbnVPblNlbGVjdCkge1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlOiAhaXNNdWx0aVxuICAgICAgICB9KTtcbiAgICAgICAgX3RoaXMub25NZW51Q2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIC8vIHdoZW4gdGhlIHNlbGVjdCB2YWx1ZSBzaG91bGQgY2hhbmdlLCB3ZSBzaG91bGQgcmVzZXQgZm9jdXNlZFZhbHVlXG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGNsZWFyRm9jdXNWYWx1ZU9uVXBkYXRlOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIF90aGlzLm9uQ2hhbmdlKG5ld1ZhbHVlLCB7XG4gICAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgICBvcHRpb246IG9wdGlvblxuICAgICAgfSk7XG4gICAgfTtcbiAgICBfdGhpcy5zZWxlY3RPcHRpb24gPSBmdW5jdGlvbiAobmV3VmFsdWUpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgYmx1cklucHV0T25TZWxlY3QgPSBfdGhpcyRwcm9wczMuYmx1cklucHV0T25TZWxlY3QsXG4gICAgICAgIGlzTXVsdGkgPSBfdGhpcyRwcm9wczMuaXNNdWx0aSxcbiAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzMy5uYW1lO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICB2YXIgZGVzZWxlY3RlZCA9IGlzTXVsdGkgJiYgX3RoaXMuaXNPcHRpb25TZWxlY3RlZChuZXdWYWx1ZSwgc2VsZWN0VmFsdWUpO1xuICAgICAgdmFyIGlzRGlzYWJsZWQgPSBfdGhpcy5pc09wdGlvbkRpc2FibGVkKG5ld1ZhbHVlLCBzZWxlY3RWYWx1ZSk7XG4gICAgICBpZiAoZGVzZWxlY3RlZCkge1xuICAgICAgICB2YXIgY2FuZGlkYXRlID0gX3RoaXMuZ2V0T3B0aW9uVmFsdWUobmV3VmFsdWUpO1xuICAgICAgICBfdGhpcy5zZXRWYWx1ZShpbmRleC5tdWx0aVZhbHVlQXNWYWx1ZShzZWxlY3RWYWx1ZS5maWx0ZXIoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuZ2V0T3B0aW9uVmFsdWUoaSkgIT09IGNhbmRpZGF0ZTtcbiAgICAgICAgfSkpLCAnZGVzZWxlY3Qtb3B0aW9uJywgbmV3VmFsdWUpO1xuICAgICAgfSBlbHNlIGlmICghaXNEaXNhYmxlZCkge1xuICAgICAgICAvLyBTZWxlY3Qgb3B0aW9uIGlmIG9wdGlvbiBpcyBub3QgZGlzYWJsZWRcbiAgICAgICAgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgICBfdGhpcy5zZXRWYWx1ZShpbmRleC5tdWx0aVZhbHVlQXNWYWx1ZShbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHNlbGVjdFZhbHVlKSwgW25ld1ZhbHVlXSkpLCAnc2VsZWN0LW9wdGlvbicsIG5ld1ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpcy5zZXRWYWx1ZShpbmRleC5zaW5nbGVWYWx1ZUFzVmFsdWUobmV3VmFsdWUpLCAnc2VsZWN0LW9wdGlvbicpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfdGhpcy5hcmlhT25DaGFuZ2UoaW5kZXguc2luZ2xlVmFsdWVBc1ZhbHVlKG5ld1ZhbHVlKSwge1xuICAgICAgICAgIGFjdGlvbjogJ3NlbGVjdC1vcHRpb24nLFxuICAgICAgICAgIG9wdGlvbjogbmV3VmFsdWUsXG4gICAgICAgICAgbmFtZTogbmFtZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGJsdXJJbnB1dE9uU2VsZWN0KSB7XG4gICAgICAgIF90aGlzLmJsdXJJbnB1dCgpO1xuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMucmVtb3ZlVmFsdWUgPSBmdW5jdGlvbiAocmVtb3ZlZFZhbHVlKSB7XG4gICAgICB2YXIgaXNNdWx0aSA9IF90aGlzLnByb3BzLmlzTXVsdGk7XG4gICAgICB2YXIgc2VsZWN0VmFsdWUgPSBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIHZhciBjYW5kaWRhdGUgPSBfdGhpcy5nZXRPcHRpb25WYWx1ZShyZW1vdmVkVmFsdWUpO1xuICAgICAgdmFyIG5ld1ZhbHVlQXJyYXkgPSBzZWxlY3RWYWx1ZS5maWx0ZXIoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLmdldE9wdGlvblZhbHVlKGkpICE9PSBjYW5kaWRhdGU7XG4gICAgICB9KTtcbiAgICAgIHZhciBuZXdWYWx1ZSA9IGluZGV4LnZhbHVlVGVybmFyeShpc011bHRpLCBuZXdWYWx1ZUFycmF5LCBuZXdWYWx1ZUFycmF5WzBdIHx8IG51bGwpO1xuICAgICAgX3RoaXMub25DaGFuZ2UobmV3VmFsdWUsIHtcbiAgICAgICAgYWN0aW9uOiAncmVtb3ZlLXZhbHVlJyxcbiAgICAgICAgcmVtb3ZlZFZhbHVlOiByZW1vdmVkVmFsdWVcbiAgICAgIH0pO1xuICAgICAgX3RoaXMuZm9jdXNJbnB1dCgpO1xuICAgIH07XG4gICAgX3RoaXMuY2xlYXJWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBzZWxlY3RWYWx1ZSA9IF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlO1xuICAgICAgX3RoaXMub25DaGFuZ2UoaW5kZXgudmFsdWVUZXJuYXJ5KF90aGlzLnByb3BzLmlzTXVsdGksIFtdLCBudWxsKSwge1xuICAgICAgICBhY3Rpb246ICdjbGVhcicsXG4gICAgICAgIHJlbW92ZWRWYWx1ZXM6IHNlbGVjdFZhbHVlXG4gICAgICB9KTtcbiAgICB9O1xuICAgIF90aGlzLnBvcFZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGlzTXVsdGkgPSBfdGhpcy5wcm9wcy5pc011bHRpO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICB2YXIgbGFzdFNlbGVjdGVkVmFsdWUgPSBzZWxlY3RWYWx1ZVtzZWxlY3RWYWx1ZS5sZW5ndGggLSAxXTtcbiAgICAgIHZhciBuZXdWYWx1ZUFycmF5ID0gc2VsZWN0VmFsdWUuc2xpY2UoMCwgc2VsZWN0VmFsdWUubGVuZ3RoIC0gMSk7XG4gICAgICB2YXIgbmV3VmFsdWUgPSBpbmRleC52YWx1ZVRlcm5hcnkoaXNNdWx0aSwgbmV3VmFsdWVBcnJheSwgbmV3VmFsdWVBcnJheVswXSB8fCBudWxsKTtcbiAgICAgIGlmIChsYXN0U2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICBfdGhpcy5vbkNoYW5nZShuZXdWYWx1ZSwge1xuICAgICAgICAgIGFjdGlvbjogJ3BvcC12YWx1ZScsXG4gICAgICAgICAgcmVtb3ZlZFZhbHVlOiBsYXN0U2VsZWN0ZWRWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLmdldEZvY3VzZWRPcHRpb25JZCA9IGZ1bmN0aW9uIChmb2N1c2VkT3B0aW9uKSB7XG4gICAgICByZXR1cm4gZ2V0Rm9jdXNlZE9wdGlvbklkKF90aGlzLnN0YXRlLmZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLCBmb2N1c2VkT3B0aW9uKTtcbiAgICB9O1xuICAgIF90aGlzLmdldEZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGJ1aWxkRm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMoYnVpbGRDYXRlZ29yaXplZE9wdGlvbnMoX3RoaXMucHJvcHMsIF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlKSwgX3RoaXMuZ2V0RWxlbWVudElkKCdvcHRpb24nKSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICB9O1xuICAgIF90aGlzLmN4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG4gICAgICByZXR1cm4gaW5kZXguY2xhc3NOYW1lcy5hcHBseSh2b2lkIDAsIFtfdGhpcy5wcm9wcy5jbGFzc05hbWVQcmVmaXhdLmNvbmNhdChhcmdzKSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRPcHRpb25MYWJlbCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICByZXR1cm4gZ2V0T3B0aW9uTGFiZWwoX3RoaXMucHJvcHMsIGRhdGEpO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0T3B0aW9uVmFsdWUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgcmV0dXJuIGdldE9wdGlvblZhbHVlKF90aGlzLnByb3BzLCBkYXRhKTtcbiAgICB9O1xuICAgIF90aGlzLmdldFN0eWxlcyA9IGZ1bmN0aW9uIChrZXksIHByb3BzKSB7XG4gICAgICB2YXIgdW5zdHlsZWQgPSBfdGhpcy5wcm9wcy51bnN0eWxlZDtcbiAgICAgIHZhciBiYXNlID0gZGVmYXVsdFN0eWxlc1trZXldKHByb3BzLCB1bnN0eWxlZCk7XG4gICAgICBiYXNlLmJveFNpemluZyA9ICdib3JkZXItYm94JztcbiAgICAgIHZhciBjdXN0b20gPSBfdGhpcy5wcm9wcy5zdHlsZXNba2V5XTtcbiAgICAgIHJldHVybiBjdXN0b20gPyBjdXN0b20oYmFzZSwgcHJvcHMpIDogYmFzZTtcbiAgICB9O1xuICAgIF90aGlzLmdldENsYXNzTmFtZXMgPSBmdW5jdGlvbiAoa2V5LCBwcm9wcykge1xuICAgICAgdmFyIF90aGlzJHByb3BzJGNsYXNzTmFtZSwgX3RoaXMkcHJvcHMkY2xhc3NOYW1lMjtcbiAgICAgIHJldHVybiAoX3RoaXMkcHJvcHMkY2xhc3NOYW1lID0gKF90aGlzJHByb3BzJGNsYXNzTmFtZTIgPSBfdGhpcy5wcm9wcy5jbGFzc05hbWVzKVtrZXldKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRjbGFzc05hbWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGNsYXNzTmFtZS5jYWxsKF90aGlzJHByb3BzJGNsYXNzTmFtZTIsIHByb3BzKTtcbiAgICB9O1xuICAgIF90aGlzLmdldEVsZW1lbnRJZCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gXCJcIi5jb25jYXQoX3RoaXMuc3RhdGUuaW5zdGFuY2VQcmVmaXgsIFwiLVwiKS5jb25jYXQoZWxlbWVudCk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRDb21wb25lbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGluZGV4LmRlZmF1bHRDb21wb25lbnRzKF90aGlzLnByb3BzKTtcbiAgICB9O1xuICAgIF90aGlzLmJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKF90aGlzLnByb3BzLCBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRDYXRlZ29yaXplZE9wdGlvbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMucHJvcHMubWVudUlzT3BlbiA/IF90aGlzLmJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKCkgOiBbXTtcbiAgICB9O1xuICAgIF90aGlzLmJ1aWxkRm9jdXNhYmxlT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBidWlsZEZvY3VzYWJsZU9wdGlvbnNGcm9tQ2F0ZWdvcml6ZWRPcHRpb25zKF90aGlzLmJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKCkpO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5wcm9wcy5tZW51SXNPcGVuID8gX3RoaXMuYnVpbGRGb2N1c2FibGVPcHRpb25zKCkgOiBbXTtcbiAgICB9O1xuICAgIF90aGlzLmFyaWFPbkNoYW5nZSA9IGZ1bmN0aW9uICh2YWx1ZSwgYWN0aW9uTWV0YSkge1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBhcmlhU2VsZWN0aW9uOiBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgfSwgYWN0aW9uTWV0YSlcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMub25NZW51TW91c2VEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIF90aGlzLmZvY3VzSW5wdXQoKTtcbiAgICB9O1xuICAgIF90aGlzLm9uTWVudU1vdXNlTW92ZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgX3RoaXMuYmxvY2tPcHRpb25Ib3ZlciA9IGZhbHNlO1xuICAgIH07XG4gICAgX3RoaXMub25Db250cm9sTW91c2VEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAvLyBFdmVudCBjYXB0dXJlZCBieSBkcm9wZG93biBpbmRpY2F0b3JcbiAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBvcGVuTWVudU9uQ2xpY2sgPSBfdGhpcy5wcm9wcy5vcGVuTWVudU9uQ2xpY2s7XG4gICAgICBpZiAoIV90aGlzLnN0YXRlLmlzRm9jdXNlZCkge1xuICAgICAgICBpZiAob3Blbk1lbnVPbkNsaWNrKSB7XG4gICAgICAgICAgX3RoaXMub3BlbkFmdGVyRm9jdXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIF90aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgIH0gZWxzZSBpZiAoIV90aGlzLnByb3BzLm1lbnVJc09wZW4pIHtcbiAgICAgICAgaWYgKG9wZW5NZW51T25DbGljaykge1xuICAgICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdURVhUQVJFQScpIHtcbiAgICAgICAgICBfdGhpcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdURVhUQVJFQScpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JNb3VzZURvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIC8vIGlnbm9yZSBtb3VzZSBldmVudHMgdGhhdCB3ZXJlbid0IHRyaWdnZXJlZCBieSB0aGUgcHJpbWFyeSBidXR0b25cbiAgICAgIGlmIChldmVudCAmJiBldmVudC50eXBlID09PSAnbW91c2Vkb3duJyAmJiBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKF90aGlzLnByb3BzLmlzRGlzYWJsZWQpIHJldHVybjtcbiAgICAgIHZhciBfdGhpcyRwcm9wczQgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzNC5pc011bHRpLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHM0Lm1lbnVJc09wZW47XG4gICAgICBfdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlOiAhaXNNdWx0aVxuICAgICAgICB9KTtcbiAgICAgICAgX3RoaXMub25NZW51Q2xvc2UoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgfVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuICAgIF90aGlzLm9uQ2xlYXJJbmRpY2F0b3JNb3VzZURvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIC8vIGlnbm9yZSBtb3VzZSBldmVudHMgdGhhdCB3ZXJlbid0IHRyaWdnZXJlZCBieSB0aGUgcHJpbWFyeSBidXR0b25cbiAgICAgIGlmIChldmVudCAmJiBldmVudC50eXBlID09PSAnbW91c2Vkb3duJyAmJiBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgX3RoaXMuY2xlYXJWYWx1ZSgpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIF90aGlzLm9wZW5BZnRlckZvY3VzID0gZmFsc2U7XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3RvdWNoZW5kJykge1xuICAgICAgICBfdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uU2Nyb2xsID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAodHlwZW9mIF90aGlzLnByb3BzLmNsb3NlTWVudU9uU2Nyb2xsID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIGluZGV4LmlzRG9jdW1lbnRFbGVtZW50KGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICBfdGhpcy5wcm9wcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBfdGhpcy5wcm9wcy5jbG9zZU1lbnVPblNjcm9sbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBpZiAoX3RoaXMucHJvcHMuY2xvc2VNZW51T25TY3JvbGwoZXZlbnQpKSB7XG4gICAgICAgICAgX3RoaXMucHJvcHMub25NZW51Q2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMub25Db21wb3NpdGlvblN0YXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuaXNDb21wb3NpbmcgPSB0cnVlO1xuICAgIH07XG4gICAgX3RoaXMub25Db21wb3NpdGlvbkVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLmlzQ29tcG9zaW5nID0gZmFsc2U7XG4gICAgfTtcbiAgICBfdGhpcy5vblRvdWNoU3RhcnQgPSBmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgIHZhciB0b3VjaGVzID0gX3JlZjIudG91Y2hlcztcbiAgICAgIHZhciB0b3VjaCA9IHRvdWNoZXMgJiYgdG91Y2hlcy5pdGVtKDApO1xuICAgICAgaWYgKCF0b3VjaCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBfdGhpcy5pbml0aWFsVG91Y2hYID0gdG91Y2guY2xpZW50WDtcbiAgICAgIF90aGlzLmluaXRpYWxUb3VjaFkgPSB0b3VjaC5jbGllbnRZO1xuICAgICAgX3RoaXMudXNlcklzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB9O1xuICAgIF90aGlzLm9uVG91Y2hNb3ZlID0gZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICB2YXIgdG91Y2hlcyA9IF9yZWYzLnRvdWNoZXM7XG4gICAgICB2YXIgdG91Y2ggPSB0b3VjaGVzICYmIHRvdWNoZXMuaXRlbSgwKTtcbiAgICAgIGlmICghdG91Y2gpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIGRlbHRhWCA9IE1hdGguYWJzKHRvdWNoLmNsaWVudFggLSBfdGhpcy5pbml0aWFsVG91Y2hYKTtcbiAgICAgIHZhciBkZWx0YVkgPSBNYXRoLmFicyh0b3VjaC5jbGllbnRZIC0gX3RoaXMuaW5pdGlhbFRvdWNoWSk7XG4gICAgICB2YXIgbW92ZVRocmVzaG9sZCA9IDU7XG4gICAgICBfdGhpcy51c2VySXNEcmFnZ2luZyA9IGRlbHRhWCA+IG1vdmVUaHJlc2hvbGQgfHwgZGVsdGFZID4gbW92ZVRocmVzaG9sZDtcbiAgICB9O1xuICAgIF90aGlzLm9uVG91Y2hFbmQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChfdGhpcy51c2VySXNEcmFnZ2luZykgcmV0dXJuO1xuXG4gICAgICAvLyBjbG9zZSB0aGUgbWVudSBpZiB0aGUgdXNlciB0YXBzIG91dHNpZGVcbiAgICAgIC8vIHdlJ3JlIGNoZWNraW5nIG9uIGV2ZW50LnRhcmdldCBoZXJlIGluc3RlYWQgb2YgZXZlbnQuY3VycmVudFRhcmdldCwgYmVjYXVzZSB3ZSB3YW50IHRvIGFzc2VydCBpbmZvcm1hdGlvblxuICAgICAgLy8gb24gZXZlbnRzIG9uIGNoaWxkIGVsZW1lbnRzLCBub3QgdGhlIGRvY3VtZW50ICh3aGljaCB3ZSd2ZSBhdHRhY2hlZCB0aGlzIGhhbmRsZXIgdG8pLlxuICAgICAgaWYgKF90aGlzLmNvbnRyb2xSZWYgJiYgIV90aGlzLmNvbnRyb2xSZWYuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJiBfdGhpcy5tZW51TGlzdFJlZiAmJiAhX3RoaXMubWVudUxpc3RSZWYuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICBfdGhpcy5ibHVySW5wdXQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gcmVzZXQgbW92ZSB2YXJzXG4gICAgICBfdGhpcy5pbml0aWFsVG91Y2hYID0gMDtcbiAgICAgIF90aGlzLmluaXRpYWxUb3VjaFkgPSAwO1xuICAgIH07XG4gICAgX3RoaXMub25Db250cm9sVG91Y2hFbmQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChfdGhpcy51c2VySXNEcmFnZ2luZykgcmV0dXJuO1xuICAgICAgX3RoaXMub25Db250cm9sTW91c2VEb3duKGV2ZW50KTtcbiAgICB9O1xuICAgIF90aGlzLm9uQ2xlYXJJbmRpY2F0b3JUb3VjaEVuZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnVzZXJJc0RyYWdnaW5nKSByZXR1cm47XG4gICAgICBfdGhpcy5vbkNsZWFySW5kaWNhdG9yTW91c2VEb3duKGV2ZW50KTtcbiAgICB9O1xuICAgIF90aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JUb3VjaEVuZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnVzZXJJc0RyYWdnaW5nKSByZXR1cm47XG4gICAgICBfdGhpcy5vbkRyb3Bkb3duSW5kaWNhdG9yTW91c2VEb3duKGV2ZW50KTtcbiAgICB9O1xuICAgIF90aGlzLmhhbmRsZUlucHV0Q2hhbmdlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgcHJldklucHV0VmFsdWUgPSBfdGhpcy5wcm9wcy5pbnB1dFZhbHVlO1xuICAgICAgdmFyIGlucHV0VmFsdWUgPSBldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlO1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoaW5wdXRWYWx1ZSwge1xuICAgICAgICBhY3Rpb246ICdpbnB1dC1jaGFuZ2UnLFxuICAgICAgICBwcmV2SW5wdXRWYWx1ZTogcHJldklucHV0VmFsdWVcbiAgICAgIH0pO1xuICAgICAgaWYgKCFfdGhpcy5wcm9wcy5tZW51SXNPcGVuKSB7XG4gICAgICAgIF90aGlzLm9uTWVudU9wZW4oKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uSW5wdXRGb2N1cyA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnByb3BzLm9uRm9jdXMpIHtcbiAgICAgICAgX3RoaXMucHJvcHMub25Gb2N1cyhldmVudCk7XG4gICAgICB9XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogZmFsc2UsXG4gICAgICAgIGlzRm9jdXNlZDogdHJ1ZVxuICAgICAgfSk7XG4gICAgICBpZiAoX3RoaXMub3BlbkFmdGVyRm9jdXMgfHwgX3RoaXMucHJvcHMub3Blbk1lbnVPbkZvY3VzKSB7XG4gICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgfVxuICAgICAgX3RoaXMub3BlbkFmdGVyRm9jdXMgPSBmYWxzZTtcbiAgICB9O1xuICAgIF90aGlzLm9uSW5wdXRCbHVyID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgcHJldklucHV0VmFsdWUgPSBfdGhpcy5wcm9wcy5pbnB1dFZhbHVlO1xuICAgICAgaWYgKF90aGlzLm1lbnVMaXN0UmVmICYmIF90aGlzLm1lbnVMaXN0UmVmLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgIF90aGlzLmlucHV0UmVmLmZvY3VzKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChfdGhpcy5wcm9wcy5vbkJsdXIpIHtcbiAgICAgICAgX3RoaXMucHJvcHMub25CbHVyKGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoJycsIHtcbiAgICAgICAgYWN0aW9uOiAnaW5wdXQtYmx1cicsXG4gICAgICAgIHByZXZJbnB1dFZhbHVlOiBwcmV2SW5wdXRWYWx1ZVxuICAgICAgfSk7XG4gICAgICBfdGhpcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkVmFsdWU6IG51bGwsXG4gICAgICAgIGlzRm9jdXNlZDogZmFsc2VcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMub25PcHRpb25Ib3ZlciA9IGZ1bmN0aW9uIChmb2N1c2VkT3B0aW9uKSB7XG4gICAgICBpZiAoX3RoaXMuYmxvY2tPcHRpb25Ib3ZlciB8fCBfdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uID09PSBmb2N1c2VkT3B0aW9uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBvcHRpb25zID0gX3RoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgdmFyIGZvY3VzZWRPcHRpb25JbmRleCA9IG9wdGlvbnMuaW5kZXhPZihmb2N1c2VkT3B0aW9uKTtcbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNlZE9wdGlvbixcbiAgICAgICAgZm9jdXNlZE9wdGlvbklkOiBmb2N1c2VkT3B0aW9uSW5kZXggPiAtMSA/IF90aGlzLmdldEZvY3VzZWRPcHRpb25JZChmb2N1c2VkT3B0aW9uKSA6IG51bGxcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMuc2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBzaG91bGRIaWRlU2VsZWN0ZWRPcHRpb25zKF90aGlzLnByb3BzKTtcbiAgICB9O1xuICAgIF90aGlzLm9uVmFsdWVJbnB1dEZvY3VzID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBfdGhpcy5mb2N1cygpO1xuICAgIH07XG4gICAgX3RoaXMub25LZXlEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM1ID0gX3RoaXMucHJvcHMsXG4gICAgICAgIGlzTXVsdGkgPSBfdGhpcyRwcm9wczUuaXNNdWx0aSxcbiAgICAgICAgYmFja3NwYWNlUmVtb3Zlc1ZhbHVlID0gX3RoaXMkcHJvcHM1LmJhY2tzcGFjZVJlbW92ZXNWYWx1ZSxcbiAgICAgICAgZXNjYXBlQ2xlYXJzVmFsdWUgPSBfdGhpcyRwcm9wczUuZXNjYXBlQ2xlYXJzVmFsdWUsXG4gICAgICAgIGlucHV0VmFsdWUgPSBfdGhpcyRwcm9wczUuaW5wdXRWYWx1ZSxcbiAgICAgICAgaXNDbGVhcmFibGUgPSBfdGhpcyRwcm9wczUuaXNDbGVhcmFibGUsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczUuaXNEaXNhYmxlZCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzNS5tZW51SXNPcGVuLFxuICAgICAgICBvbktleURvd24gPSBfdGhpcyRwcm9wczUub25LZXlEb3duLFxuICAgICAgICB0YWJTZWxlY3RzVmFsdWUgPSBfdGhpcyRwcm9wczUudGFiU2VsZWN0c1ZhbHVlLFxuICAgICAgICBvcGVuTWVudU9uRm9jdXMgPSBfdGhpcyRwcm9wczUub3Blbk1lbnVPbkZvY3VzO1xuICAgICAgdmFyIF90aGlzJHN0YXRlID0gX3RoaXMuc3RhdGUsXG4gICAgICAgIGZvY3VzZWRPcHRpb24gPSBfdGhpcyRzdGF0ZS5mb2N1c2VkT3B0aW9uLFxuICAgICAgICBmb2N1c2VkVmFsdWUgPSBfdGhpcyRzdGF0ZS5mb2N1c2VkVmFsdWUsXG4gICAgICAgIHNlbGVjdFZhbHVlID0gX3RoaXMkc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICBpZiAoaXNEaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgaWYgKHR5cGVvZiBvbktleURvd24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb25LZXlEb3duKGV2ZW50KTtcbiAgICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQmxvY2sgb3B0aW9uIGhvdmVyIGV2ZW50cyB3aGVuIHRoZSB1c2VyIGhhcyBqdXN0IHByZXNzZWQgYSBrZXlcbiAgICAgIF90aGlzLmJsb2NrT3B0aW9uSG92ZXIgPSB0cnVlO1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICBpZiAoIWlzTXVsdGkgfHwgaW5wdXRWYWx1ZSkgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzVmFsdWUoJ3ByZXZpb3VzJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgIGlmICghaXNNdWx0aSB8fCBpbnB1dFZhbHVlKSByZXR1cm47XG4gICAgICAgICAgX3RoaXMuZm9jdXNWYWx1ZSgnbmV4dCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgICAgIGlmIChpbnB1dFZhbHVlKSByZXR1cm47XG4gICAgICAgICAgaWYgKGZvY3VzZWRWYWx1ZSkge1xuICAgICAgICAgICAgX3RoaXMucmVtb3ZlVmFsdWUoZm9jdXNlZFZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFiYWNrc3BhY2VSZW1vdmVzVmFsdWUpIHJldHVybjtcbiAgICAgICAgICAgIGlmIChpc011bHRpKSB7XG4gICAgICAgICAgICAgIF90aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzQ2xlYXJhYmxlKSB7XG4gICAgICAgICAgICAgIF90aGlzLmNsZWFyVmFsdWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgICAgaWYgKF90aGlzLmlzQ29tcG9zaW5nKSByZXR1cm47XG4gICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5IHx8ICFtZW51SXNPcGVuIHx8ICF0YWJTZWxlY3RzVmFsdWUgfHwgIWZvY3VzZWRPcHRpb24gfHxcbiAgICAgICAgICAvLyBkb24ndCBjYXB0dXJlIHRoZSBldmVudCBpZiB0aGUgbWVudSBvcGVucyBvbiBmb2N1cyBhbmQgdGhlIGZvY3VzZWRcbiAgICAgICAgICAvLyBvcHRpb24gaXMgYWxyZWFkeSBzZWxlY3RlZDsgaXQgYnJlYWtzIHRoZSBmbG93IG9mIG5hdmlnYXRpb25cbiAgICAgICAgICBvcGVuTWVudU9uRm9jdXMgJiYgX3RoaXMuaXNPcHRpb25TZWxlY3RlZChmb2N1c2VkT3B0aW9uLCBzZWxlY3RWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgX3RoaXMuc2VsZWN0T3B0aW9uKGZvY3VzZWRPcHRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDIyOSkge1xuICAgICAgICAgICAgLy8gaWdub3JlIHRoZSBrZXlkb3duIGV2ZW50IGZyb20gYW4gSW5wdXQgTWV0aG9kIEVkaXRvcihJTUUpXG4gICAgICAgICAgICAvLyByZWYuIGh0dHBzOi8vd3d3LnczLm9yZy9UUi91aWV2ZW50cy8jZGV0ZXJtaW5lLWtleWRvd24ta2V5dXAta2V5Q29kZVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtZW51SXNPcGVuKSB7XG4gICAgICAgICAgICBpZiAoIWZvY3VzZWRPcHRpb24pIHJldHVybjtcbiAgICAgICAgICAgIGlmIChfdGhpcy5pc0NvbXBvc2luZykgcmV0dXJuO1xuICAgICAgICAgICAgX3RoaXMuc2VsZWN0T3B0aW9uKGZvY3VzZWRPcHRpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoJycsIHtcbiAgICAgICAgICAgICAgYWN0aW9uOiAnbWVudS1jbG9zZScsXG4gICAgICAgICAgICAgIHByZXZJbnB1dFZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIF90aGlzLm9uTWVudUNsb3NlKCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0NsZWFyYWJsZSAmJiBlc2NhcGVDbGVhcnNWYWx1ZSkge1xuICAgICAgICAgICAgX3RoaXMuY2xlYXJWYWx1ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnICc6XG4gICAgICAgICAgLy8gc3BhY2VcbiAgICAgICAgICBpZiAoaW5wdXRWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIW1lbnVJc09wZW4pIHtcbiAgICAgICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZm9jdXNlZE9wdGlvbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLnNlbGVjdE9wdGlvbihmb2N1c2VkT3B0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgaWYgKG1lbnVJc09wZW4pIHtcbiAgICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCd1cCcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfdGhpcy5vcGVuTWVudSgnbGFzdCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICAgICAgX3RoaXMuZm9jdXNPcHRpb24oJ2Rvd24nKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgX3RoaXMub3Blbk1lbnUoJ2ZpcnN0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdQYWdlVXAnOlxuICAgICAgICAgIGlmICghbWVudUlzT3BlbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCdwYWdldXAnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUGFnZURvd24nOlxuICAgICAgICAgIGlmICghbWVudUlzT3BlbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCdwYWdlZG93bicpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgICBpZiAoIW1lbnVJc09wZW4pIHJldHVybjtcbiAgICAgICAgICBfdGhpcy5mb2N1c09wdGlvbignZmlyc3QnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRW5kJzpcbiAgICAgICAgICBpZiAoIW1lbnVJc09wZW4pIHJldHVybjtcbiAgICAgICAgICBfdGhpcy5mb2N1c09wdGlvbignbGFzdCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfTtcbiAgICBfdGhpcy5zdGF0ZS5pbnN0YW5jZVByZWZpeCA9ICdyZWFjdC1zZWxlY3QtJyArIChfdGhpcy5wcm9wcy5pbnN0YW5jZUlkIHx8ICsraW5zdGFuY2VJZCk7XG4gICAgX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWUgPSBpbmRleC5jbGVhblZhbHVlKF9wcm9wcy52YWx1ZSk7XG4gICAgLy8gU2V0IGZvY3VzZWRPcHRpb24gaWYgbWVudUlzT3BlbiBpcyBzZXQgb24gaW5pdCAoZS5nLiBkZWZhdWx0TWVudUlzT3BlbilcbiAgICBpZiAoX3Byb3BzLm1lbnVJc09wZW4gJiYgX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWUubGVuZ3RoKSB7XG4gICAgICB2YXIgZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMgPSBfdGhpcy5nZXRGb2N1c2FibGVPcHRpb25zV2l0aElkcygpO1xuICAgICAgdmFyIGZvY3VzYWJsZU9wdGlvbnMgPSBfdGhpcy5idWlsZEZvY3VzYWJsZU9wdGlvbnMoKTtcbiAgICAgIHZhciBvcHRpb25JbmRleCA9IGZvY3VzYWJsZU9wdGlvbnMuaW5kZXhPZihfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZVswXSk7XG4gICAgICBfdGhpcy5zdGF0ZS5mb2N1c2FibGVPcHRpb25zV2l0aElkcyA9IGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzO1xuICAgICAgX3RoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbiA9IGZvY3VzYWJsZU9wdGlvbnNbb3B0aW9uSW5kZXhdO1xuICAgICAgX3RoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbklkID0gZ2V0Rm9jdXNlZE9wdGlvbklkKGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLCBmb2N1c2FibGVPcHRpb25zW29wdGlvbkluZGV4XSk7XG4gICAgfVxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoU2VsZWN0LCBbe1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIHRoaXMuc3RhcnRMaXN0ZW5pbmdDb21wb3NpdGlvbigpO1xuICAgICAgdGhpcy5zdGFydExpc3RlbmluZ1RvVG91Y2goKTtcbiAgICAgIGlmICh0aGlzLnByb3BzLmNsb3NlTWVudU9uU2Nyb2xsICYmIGRvY3VtZW50ICYmIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgLy8gTGlzdGVuIHRvIGFsbCBzY3JvbGwgZXZlbnRzLCBhbmQgZmlsdGVyIHRoZW0gb3V0IGluc2lkZSBvZiAnb25TY3JvbGwnXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucHJvcHMuYXV0b0ZvY3VzKSB7XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBTY3JvbGwgZm9jdXNlZE9wdGlvbiBpbnRvIHZpZXcgaWYgbWVudUlzT3BlbiBpcyBzZXQgb24gbW91bnQgKGUuZy4gZGVmYXVsdE1lbnVJc09wZW4pXG4gICAgICBpZiAodGhpcy5wcm9wcy5tZW51SXNPcGVuICYmIHRoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbiAmJiB0aGlzLm1lbnVMaXN0UmVmICYmIHRoaXMuZm9jdXNlZE9wdGlvblJlZikge1xuICAgICAgICBpbmRleC5zY3JvbGxJbnRvVmlldyh0aGlzLm1lbnVMaXN0UmVmLCB0aGlzLmZvY3VzZWRPcHRpb25SZWYpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnREaWRVcGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgICAgdmFyIF90aGlzJHByb3BzNiA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczYuaXNEaXNhYmxlZCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzNi5tZW51SXNPcGVuO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgaWYgKFxuICAgICAgLy8gZW5zdXJlIGZvY3VzIGlzIHJlc3RvcmVkIGNvcnJlY3RseSB3aGVuIHRoZSBjb250cm9sIGJlY29tZXMgZW5hYmxlZFxuICAgICAgaXNGb2N1c2VkICYmICFpc0Rpc2FibGVkICYmIHByZXZQcm9wcy5pc0Rpc2FibGVkIHx8XG4gICAgICAvLyBlbnN1cmUgZm9jdXMgaXMgb24gdGhlIElucHV0IHdoZW4gdGhlIG1lbnUgb3BlbnNcbiAgICAgIGlzRm9jdXNlZCAmJiBtZW51SXNPcGVuICYmICFwcmV2UHJvcHMubWVudUlzT3Blbikge1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0ZvY3VzZWQgJiYgaXNEaXNhYmxlZCAmJiAhcHJldlByb3BzLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgLy8gZW5zdXJlIHNlbGVjdCBzdGF0ZSBnZXRzIGJsdXJyZWQgaW4gY2FzZSBTZWxlY3QgaXMgcHJvZ3JhbW1hdGljYWxseSBkaXNhYmxlZCB3aGlsZSBmb2N1c2VkXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1kaWQtdXBkYXRlLXNldC1zdGF0ZVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBpc0ZvY3VzZWQ6IGZhbHNlXG4gICAgICAgIH0sIHRoaXMub25NZW51Q2xvc2UpO1xuICAgICAgfSBlbHNlIGlmICghaXNGb2N1c2VkICYmICFpc0Rpc2FibGVkICYmIHByZXZQcm9wcy5pc0Rpc2FibGVkICYmIHRoaXMuaW5wdXRSZWYgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgLy8gZW5zdXJlIHNlbGVjdCBzdGF0ZSBnZXRzIGZvY3VzZWQgaW4gY2FzZSBTZWxlY3QgaXMgcHJvZ3JhbWF0aWNhbGx5IHJlLWVuYWJsZWQgd2hpbGUgZm9jdXNlZCAoRmlyZWZveClcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWRpZC11cGRhdGUtc2V0LXN0YXRlXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGlzRm9jdXNlZDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gc2Nyb2xsIHRoZSBmb2N1c2VkIG9wdGlvbiBpbnRvIHZpZXcgaWYgbmVjZXNzYXJ5XG4gICAgICBpZiAodGhpcy5tZW51TGlzdFJlZiAmJiB0aGlzLmZvY3VzZWRPcHRpb25SZWYgJiYgdGhpcy5zY3JvbGxUb0ZvY3VzZWRPcHRpb25PblVwZGF0ZSkge1xuICAgICAgICBpbmRleC5zY3JvbGxJbnRvVmlldyh0aGlzLm1lbnVMaXN0UmVmLCB0aGlzLmZvY3VzZWRPcHRpb25SZWYpO1xuICAgICAgICB0aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nQ29tcG9zaXRpb24oKTtcbiAgICAgIHRoaXMuc3RvcExpc3RlbmluZ1RvVG91Y2goKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIENvbnN1bWVyIEhhbmRsZXJzXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIH0sIHtcbiAgICBrZXk6IFwib25NZW51T3BlblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbk1lbnVPcGVuKCkge1xuICAgICAgdGhpcy5wcm9wcy5vbk1lbnVPcGVuKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uTWVudUNsb3NlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uTWVudUNsb3NlKCkge1xuICAgICAgdGhpcy5vbklucHV0Q2hhbmdlKCcnLCB7XG4gICAgICAgIGFjdGlvbjogJ21lbnUtY2xvc2UnLFxuICAgICAgICBwcmV2SW5wdXRWYWx1ZTogdGhpcy5wcm9wcy5pbnB1dFZhbHVlXG4gICAgICB9KTtcbiAgICAgIHRoaXMucHJvcHMub25NZW51Q2xvc2UoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25JbnB1dENoYW5nZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbklucHV0Q2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgICB0aGlzLnByb3BzLm9uSW5wdXRDaGFuZ2UobmV3VmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIE1ldGhvZHNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgfSwge1xuICAgIGtleTogXCJmb2N1c0lucHV0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZvY3VzSW5wdXQoKSB7XG4gICAgICBpZiAoIXRoaXMuaW5wdXRSZWYpIHJldHVybjtcbiAgICAgIHRoaXMuaW5wdXRSZWYuZm9jdXMoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYmx1cklucHV0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJsdXJJbnB1dCgpIHtcbiAgICAgIGlmICghdGhpcy5pbnB1dFJlZikgcmV0dXJuO1xuICAgICAgdGhpcy5pbnB1dFJlZi5ibHVyKCk7XG4gICAgfVxuXG4gICAgLy8gYWxpYXNlZCBmb3IgY29uc3VtZXJzXG4gIH0sIHtcbiAgICBrZXk6IFwib3Blbk1lbnVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb3Blbk1lbnUoZm9jdXNPcHRpb24pIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHN0YXRlMiA9IHRoaXMuc3RhdGUsXG4gICAgICAgIHNlbGVjdFZhbHVlID0gX3RoaXMkc3RhdGUyLnNlbGVjdFZhbHVlLFxuICAgICAgICBpc0ZvY3VzZWQgPSBfdGhpcyRzdGF0ZTIuaXNGb2N1c2VkO1xuICAgICAgdmFyIGZvY3VzYWJsZU9wdGlvbnMgPSB0aGlzLmJ1aWxkRm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgdmFyIG9wZW5BdEluZGV4ID0gZm9jdXNPcHRpb24gPT09ICdmaXJzdCcgPyAwIDogZm9jdXNhYmxlT3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgaWYgKCF0aGlzLnByb3BzLmlzTXVsdGkpIHtcbiAgICAgICAgdmFyIHNlbGVjdGVkSW5kZXggPSBmb2N1c2FibGVPcHRpb25zLmluZGV4T2Yoc2VsZWN0VmFsdWVbMF0pO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgb3BlbkF0SW5kZXggPSBzZWxlY3RlZEluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIG9ubHkgc2Nyb2xsIGlmIHRoZSBtZW51IGlzbid0IGFscmVhZHkgb3BlblxuICAgICAgdGhpcy5zY3JvbGxUb0ZvY3VzZWRPcHRpb25PblVwZGF0ZSA9ICEoaXNGb2N1c2VkICYmIHRoaXMubWVudUxpc3RSZWYpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogZmFsc2UsXG4gICAgICAgIGZvY3VzZWRWYWx1ZTogbnVsbCxcbiAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNhYmxlT3B0aW9uc1tvcGVuQXRJbmRleF0sXG4gICAgICAgIGZvY3VzZWRPcHRpb25JZDogdGhpcy5nZXRGb2N1c2VkT3B0aW9uSWQoZm9jdXNhYmxlT3B0aW9uc1tvcGVuQXRJbmRleF0pXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfdGhpczIub25NZW51T3BlbigpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImZvY3VzVmFsdWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9jdXNWYWx1ZShkaXJlY3Rpb24pIHtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTMgPSB0aGlzLnN0YXRlLFxuICAgICAgICBzZWxlY3RWYWx1ZSA9IF90aGlzJHN0YXRlMy5zZWxlY3RWYWx1ZSxcbiAgICAgICAgZm9jdXNlZFZhbHVlID0gX3RoaXMkc3RhdGUzLmZvY3VzZWRWYWx1ZTtcblxuICAgICAgLy8gT25seSBtdWx0aXNlbGVjdHMgc3VwcG9ydCB2YWx1ZSBmb2N1c2luZ1xuICAgICAgaWYgKCF0aGlzLnByb3BzLmlzTXVsdGkpIHJldHVybjtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkT3B0aW9uOiBudWxsXG4gICAgICB9KTtcbiAgICAgIHZhciBmb2N1c2VkSW5kZXggPSBzZWxlY3RWYWx1ZS5pbmRleE9mKGZvY3VzZWRWYWx1ZSk7XG4gICAgICBpZiAoIWZvY3VzZWRWYWx1ZSkge1xuICAgICAgICBmb2N1c2VkSW5kZXggPSAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBsYXN0SW5kZXggPSBzZWxlY3RWYWx1ZS5sZW5ndGggLSAxO1xuICAgICAgdmFyIG5leHRGb2N1cyA9IC0xO1xuICAgICAgaWYgKCFzZWxlY3RWYWx1ZS5sZW5ndGgpIHJldHVybjtcbiAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ3ByZXZpb3VzJzpcbiAgICAgICAgICBpZiAoZm9jdXNlZEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAvLyBkb24ndCBjeWNsZSBmcm9tIHRoZSBzdGFydCB0byB0aGUgZW5kXG4gICAgICAgICAgICBuZXh0Rm9jdXMgPSAwO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZm9jdXNlZEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgLy8gaWYgbm90aGluZyBpcyBmb2N1c2VkLCBmb2N1cyB0aGUgbGFzdCB2YWx1ZSBmaXJzdFxuICAgICAgICAgICAgbmV4dEZvY3VzID0gbGFzdEluZGV4O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggLSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbmV4dCc6XG4gICAgICAgICAgaWYgKGZvY3VzZWRJbmRleCA+IC0xICYmIGZvY3VzZWRJbmRleCA8IGxhc3RJbmRleCkge1xuICAgICAgICAgICAgbmV4dEZvY3VzID0gZm9jdXNlZEluZGV4ICsgMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaW5wdXRJc0hpZGRlbjogbmV4dEZvY3VzICE9PSAtMSxcbiAgICAgICAgZm9jdXNlZFZhbHVlOiBzZWxlY3RWYWx1ZVtuZXh0Rm9jdXNdXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9jdXNPcHRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9jdXNPcHRpb24oKSB7XG4gICAgICB2YXIgZGlyZWN0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAnZmlyc3QnO1xuICAgICAgdmFyIHBhZ2VTaXplID0gdGhpcy5wcm9wcy5wYWdlU2l6ZTtcbiAgICAgIHZhciBmb2N1c2VkT3B0aW9uID0gdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uO1xuICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLmdldEZvY3VzYWJsZU9wdGlvbnMoKTtcbiAgICAgIGlmICghb3B0aW9ucy5sZW5ndGgpIHJldHVybjtcbiAgICAgIHZhciBuZXh0Rm9jdXMgPSAwOyAvLyBoYW5kbGVzICdmaXJzdCdcbiAgICAgIHZhciBmb2N1c2VkSW5kZXggPSBvcHRpb25zLmluZGV4T2YoZm9jdXNlZE9wdGlvbik7XG4gICAgICBpZiAoIWZvY3VzZWRPcHRpb24pIHtcbiAgICAgICAgZm9jdXNlZEluZGV4ID0gLTE7XG4gICAgICB9XG4gICAgICBpZiAoZGlyZWN0aW9uID09PSAndXAnKSB7XG4gICAgICAgIG5leHRGb2N1cyA9IGZvY3VzZWRJbmRleCA+IDAgPyBmb2N1c2VkSW5kZXggLSAxIDogb3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdkb3duJykge1xuICAgICAgICBuZXh0Rm9jdXMgPSAoZm9jdXNlZEluZGV4ICsgMSkgJSBvcHRpb25zLmxlbmd0aDtcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAncGFnZXVwJykge1xuICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggLSBwYWdlU2l6ZTtcbiAgICAgICAgaWYgKG5leHRGb2N1cyA8IDApIG5leHRGb2N1cyA9IDA7XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3BhZ2Vkb3duJykge1xuICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggKyBwYWdlU2l6ZTtcbiAgICAgICAgaWYgKG5leHRGb2N1cyA+IG9wdGlvbnMubGVuZ3RoIC0gMSkgbmV4dEZvY3VzID0gb3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdsYXN0Jykge1xuICAgICAgICBuZXh0Rm9jdXMgPSBvcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICB9XG4gICAgICB0aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkT3B0aW9uOiBvcHRpb25zW25leHRGb2N1c10sXG4gICAgICAgIGZvY3VzZWRWYWx1ZTogbnVsbCxcbiAgICAgICAgZm9jdXNlZE9wdGlvbklkOiB0aGlzLmdldEZvY3VzZWRPcHRpb25JZChvcHRpb25zW25leHRGb2N1c10pXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VGhlbWVcIixcbiAgICB2YWx1ZTpcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBHZXR0ZXJzXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICBmdW5jdGlvbiBnZXRUaGVtZSgpIHtcbiAgICAgIC8vIFVzZSB0aGUgZGVmYXVsdCB0aGVtZSBpZiB0aGVyZSBhcmUgbm8gY3VzdG9taXNhdGlvbnMuXG4gICAgICBpZiAoIXRoaXMucHJvcHMudGhlbWUpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRUaGVtZTtcbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSB0aGVtZSBwcm9wIGlzIGEgZnVuY3Rpb24sIGFzc3VtZSB0aGUgZnVuY3Rpb25cbiAgICAgIC8vIGtub3dzIGhvdyB0byBtZXJnZSB0aGUgcGFzc2VkLWluIGRlZmF1bHQgdGhlbWUgd2l0aFxuICAgICAgLy8gaXRzIG93biBtb2RpZmljYXRpb25zLlxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLnRoZW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLnRoZW1lKGRlZmF1bHRUaGVtZSk7XG4gICAgICB9XG4gICAgICAvLyBPdGhlcndpc2UsIGlmIGEgcGxhaW4gdGhlbWUgb2JqZWN0IHdhcyBwYXNzZWQgaW4sXG4gICAgICAvLyBvdmVybGF5IGl0IHdpdGggdGhlIGRlZmF1bHQgdGhlbWUuXG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBkZWZhdWx0VGhlbWUpLCB0aGlzLnByb3BzLnRoZW1lKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q29tbW9uUHJvcHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29tbW9uUHJvcHMoKSB7XG4gICAgICB2YXIgY2xlYXJWYWx1ZSA9IHRoaXMuY2xlYXJWYWx1ZSxcbiAgICAgICAgY3ggPSB0aGlzLmN4LFxuICAgICAgICBnZXRTdHlsZXMgPSB0aGlzLmdldFN0eWxlcyxcbiAgICAgICAgZ2V0Q2xhc3NOYW1lcyA9IHRoaXMuZ2V0Q2xhc3NOYW1lcyxcbiAgICAgICAgZ2V0VmFsdWUgPSB0aGlzLmdldFZhbHVlLFxuICAgICAgICBzZWxlY3RPcHRpb24gPSB0aGlzLnNlbGVjdE9wdGlvbixcbiAgICAgICAgc2V0VmFsdWUgPSB0aGlzLnNldFZhbHVlLFxuICAgICAgICBwcm9wcyA9IHRoaXMucHJvcHM7XG4gICAgICB2YXIgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGksXG4gICAgICAgIGlzUnRsID0gcHJvcHMuaXNSdGwsXG4gICAgICAgIG9wdGlvbnMgPSBwcm9wcy5vcHRpb25zO1xuICAgICAgdmFyIGhhc1ZhbHVlID0gdGhpcy5oYXNWYWx1ZSgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2xlYXJWYWx1ZTogY2xlYXJWYWx1ZSxcbiAgICAgICAgY3g6IGN4LFxuICAgICAgICBnZXRTdHlsZXM6IGdldFN0eWxlcyxcbiAgICAgICAgZ2V0Q2xhc3NOYW1lczogZ2V0Q2xhc3NOYW1lcyxcbiAgICAgICAgZ2V0VmFsdWU6IGdldFZhbHVlLFxuICAgICAgICBoYXNWYWx1ZTogaGFzVmFsdWUsXG4gICAgICAgIGlzTXVsdGk6IGlzTXVsdGksXG4gICAgICAgIGlzUnRsOiBpc1J0bCxcbiAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgc2VsZWN0T3B0aW9uOiBzZWxlY3RPcHRpb24sXG4gICAgICAgIHNlbGVjdFByb3BzOiBwcm9wcyxcbiAgICAgICAgc2V0VmFsdWU6IHNldFZhbHVlLFxuICAgICAgICB0aGVtZTogdGhpcy5nZXRUaGVtZSgpXG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYXNWYWx1ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNWYWx1ZSgpIHtcbiAgICAgIHZhciBzZWxlY3RWYWx1ZSA9IHRoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICByZXR1cm4gc2VsZWN0VmFsdWUubGVuZ3RoID4gMDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGFzT3B0aW9uc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNPcHRpb25zKCkge1xuICAgICAgcmV0dXJuICEhdGhpcy5nZXRGb2N1c2FibGVPcHRpb25zKCkubGVuZ3RoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc0NsZWFyYWJsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0NsZWFyYWJsZSgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczcgPSB0aGlzLnByb3BzLFxuICAgICAgICBpc0NsZWFyYWJsZSA9IF90aGlzJHByb3BzNy5pc0NsZWFyYWJsZSxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzNy5pc011bHRpO1xuXG4gICAgICAvLyBzaW5nbGUgc2VsZWN0LCBieSBkZWZhdWx0LCBJUyBOT1QgY2xlYXJhYmxlXG4gICAgICAvLyBtdWx0aSBzZWxlY3QsIGJ5IGRlZmF1bHQsIElTIGNsZWFyYWJsZVxuICAgICAgaWYgKGlzQ2xlYXJhYmxlID09PSB1bmRlZmluZWQpIHJldHVybiBpc011bHRpO1xuICAgICAgcmV0dXJuIGlzQ2xlYXJhYmxlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc09wdGlvbkRpc2FibGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzT3B0aW9uRGlzYWJsZWQob3B0aW9uLCBzZWxlY3RWYWx1ZSkge1xuICAgICAgcmV0dXJuIF9pc09wdGlvbkRpc2FibGVkKHRoaXMucHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc09wdGlvblNlbGVjdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzT3B0aW9uU2VsZWN0ZWQob3B0aW9uLCBzZWxlY3RWYWx1ZSkge1xuICAgICAgcmV0dXJuIF9pc09wdGlvblNlbGVjdGVkKHRoaXMucHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmaWx0ZXJPcHRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZmlsdGVyT3B0aW9uKG9wdGlvbiwgaW5wdXRWYWx1ZSkge1xuICAgICAgcmV0dXJuIF9maWx0ZXJPcHRpb24odGhpcy5wcm9wcywgb3B0aW9uLCBpbnB1dFZhbHVlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9ybWF0T3B0aW9uTGFiZWxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9ybWF0T3B0aW9uTGFiZWwoZGF0YSwgY29udGV4dCkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLmZvcm1hdE9wdGlvbkxhYmVsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhciBfaW5wdXRWYWx1ZSA9IHRoaXMucHJvcHMuaW5wdXRWYWx1ZTtcbiAgICAgICAgdmFyIF9zZWxlY3RWYWx1ZSA9IHRoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmZvcm1hdE9wdGlvbkxhYmVsKGRhdGEsIHtcbiAgICAgICAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgICAgICAgIGlucHV0VmFsdWU6IF9pbnB1dFZhbHVlLFxuICAgICAgICAgIHNlbGVjdFZhbHVlOiBfc2VsZWN0VmFsdWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25MYWJlbChkYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9ybWF0R3JvdXBMYWJlbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JtYXRHcm91cExhYmVsKGRhdGEpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmZvcm1hdEdyb3VwTGFiZWwoZGF0YSk7XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gTW91c2UgSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgfSwge1xuICAgIGtleTogXCJzdGFydExpc3RlbmluZ0NvbXBvc2l0aW9uXCIsXG4gICAgdmFsdWU6XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gQ29tcG9zaXRpb24gSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIGZ1bmN0aW9uIHN0YXJ0TGlzdGVuaW5nQ29tcG9zaXRpb24oKSB7XG4gICAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3NpdGlvbnN0YXJ0JywgdGhpcy5vbkNvbXBvc2l0aW9uU3RhcnQsIGZhbHNlKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY29tcG9zaXRpb25lbmQnLCB0aGlzLm9uQ29tcG9zaXRpb25FbmQsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RvcExpc3RlbmluZ0NvbXBvc2l0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3BMaXN0ZW5pbmdDb21wb3NpdGlvbigpIHtcbiAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uc3RhcnQnLCB0aGlzLm9uQ29tcG9zaXRpb25TdGFydCk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uZW5kJywgdGhpcy5vbkNvbXBvc2l0aW9uRW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RhcnRMaXN0ZW5pbmdUb1RvdWNoXCIsXG4gICAgdmFsdWU6XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gVG91Y2ggSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIGZ1bmN0aW9uIHN0YXJ0TGlzdGVuaW5nVG9Ub3VjaCgpIHtcbiAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLm9uVG91Y2hTdGFydCwgZmFsc2UpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLm9uVG91Y2hNb3ZlLCBmYWxzZSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5vblRvdWNoRW5kLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInN0b3BMaXN0ZW5pbmdUb1RvdWNoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3BMaXN0ZW5pbmdUb1RvdWNoKCkge1xuICAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMub25Ub3VjaFN0YXJ0KTtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5vblRvdWNoTW92ZSk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5vblRvdWNoRW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVySW5wdXRcIixcbiAgICB2YWx1ZTpcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBSZW5kZXJlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBmdW5jdGlvbiByZW5kZXJJbnB1dCgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczggPSB0aGlzLnByb3BzLFxuICAgICAgICBpc0Rpc2FibGVkID0gX3RoaXMkcHJvcHM4LmlzRGlzYWJsZWQsXG4gICAgICAgIGlzU2VhcmNoYWJsZSA9IF90aGlzJHByb3BzOC5pc1NlYXJjaGFibGUsXG4gICAgICAgIGlucHV0SWQgPSBfdGhpcyRwcm9wczguaW5wdXRJZCxcbiAgICAgICAgaW5wdXRWYWx1ZSA9IF90aGlzJHByb3BzOC5pbnB1dFZhbHVlLFxuICAgICAgICB0YWJJbmRleCA9IF90aGlzJHByb3BzOC50YWJJbmRleCxcbiAgICAgICAgZm9ybSA9IF90aGlzJHByb3BzOC5mb3JtLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHM4Lm1lbnVJc09wZW4sXG4gICAgICAgIHJlcXVpcmVkID0gX3RoaXMkcHJvcHM4LnJlcXVpcmVkO1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHMgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgSW5wdXQgPSBfdGhpcyRnZXRDb21wb25lbnRzLklucHV0O1xuICAgICAgdmFyIF90aGlzJHN0YXRlNCA9IHRoaXMuc3RhdGUsXG4gICAgICAgIGlucHV0SXNIaWRkZW4gPSBfdGhpcyRzdGF0ZTQuaW5wdXRJc0hpZGRlbixcbiAgICAgICAgYXJpYVNlbGVjdGlvbiA9IF90aGlzJHN0YXRlNC5hcmlhU2VsZWN0aW9uO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBpZCA9IGlucHV0SWQgfHwgdGhpcy5nZXRFbGVtZW50SWQoJ2lucHV0Jyk7XG5cbiAgICAgIC8vIGFyaWEgYXR0cmlidXRlcyBtYWtlcyB0aGUgSlNYIFwibm9pc3lcIiwgc2VwYXJhdGVkIGZvciBjbGFyaXR5XG4gICAgICB2YXIgYXJpYUF0dHJpYnV0ZXMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdsaXN0JyxcbiAgICAgICAgJ2FyaWEtZXhwYW5kZWQnOiBtZW51SXNPcGVuLFxuICAgICAgICAnYXJpYS1oYXNwb3B1cCc6IHRydWUsXG4gICAgICAgICdhcmlhLWVycm9ybWVzc2FnZSc6IHRoaXMucHJvcHNbJ2FyaWEtZXJyb3JtZXNzYWdlJ10sXG4gICAgICAgICdhcmlhLWludmFsaWQnOiB0aGlzLnByb3BzWydhcmlhLWludmFsaWQnXSxcbiAgICAgICAgJ2FyaWEtbGFiZWwnOiB0aGlzLnByb3BzWydhcmlhLWxhYmVsJ10sXG4gICAgICAgICdhcmlhLWxhYmVsbGVkYnknOiB0aGlzLnByb3BzWydhcmlhLWxhYmVsbGVkYnknXSxcbiAgICAgICAgJ2FyaWEtcmVxdWlyZWQnOiByZXF1aXJlZCxcbiAgICAgICAgcm9sZTogJ2NvbWJvYm94JyxcbiAgICAgICAgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCc6IHRoaXMuaXNBcHBsZURldmljZSA/IHVuZGVmaW5lZCA6IHRoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbklkIHx8ICcnXG4gICAgICB9LCBtZW51SXNPcGVuICYmIHtcbiAgICAgICAgJ2FyaWEtY29udHJvbHMnOiB0aGlzLmdldEVsZW1lbnRJZCgnbGlzdGJveCcpXG4gICAgICB9KSwgIWlzU2VhcmNoYWJsZSAmJiB7XG4gICAgICAgICdhcmlhLXJlYWRvbmx5JzogdHJ1ZVxuICAgICAgfSksIHRoaXMuaGFzVmFsdWUoKSA/IChhcmlhU2VsZWN0aW9uID09PSBudWxsIHx8IGFyaWFTZWxlY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFyaWFTZWxlY3Rpb24uYWN0aW9uKSA9PT0gJ2luaXRpYWwtaW5wdXQtZm9jdXMnICYmIHtcbiAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiB0aGlzLmdldEVsZW1lbnRJZCgnbGl2ZS1yZWdpb24nKVxuICAgICAgfSA6IHtcbiAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiB0aGlzLmdldEVsZW1lbnRJZCgncGxhY2Vob2xkZXInKVxuICAgICAgfSk7XG4gICAgICBpZiAoIWlzU2VhcmNoYWJsZSkge1xuICAgICAgICAvLyB1c2UgYSBkdW1teSBpbnB1dCB0byBtYWludGFpbiBmb2N1cy9ibHVyIGZ1bmN0aW9uYWxpdHlcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoRHVtbXlJbnB1dCwgX2V4dGVuZHMoe1xuICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICBpbm5lclJlZjogdGhpcy5nZXRJbnB1dFJlZixcbiAgICAgICAgICBvbkJsdXI6IHRoaXMub25JbnB1dEJsdXIsXG4gICAgICAgICAgb25DaGFuZ2U6IGluZGV4Lm5vb3AsXG4gICAgICAgICAgb25Gb2N1czogdGhpcy5vbklucHV0Rm9jdXMsXG4gICAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgdGFiSW5kZXg6IHRhYkluZGV4LFxuICAgICAgICAgIGlucHV0TW9kZTogXCJub25lXCIsXG4gICAgICAgICAgZm9ybTogZm9ybSxcbiAgICAgICAgICB2YWx1ZTogXCJcIlxuICAgICAgICB9LCBhcmlhQXR0cmlidXRlcykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoSW5wdXQsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBhdXRvQ2FwaXRhbGl6ZTogXCJub25lXCIsXG4gICAgICAgIGF1dG9Db21wbGV0ZTogXCJvZmZcIixcbiAgICAgICAgYXV0b0NvcnJlY3Q6IFwib2ZmXCIsXG4gICAgICAgIGlkOiBpZCxcbiAgICAgICAgaW5uZXJSZWY6IHRoaXMuZ2V0SW5wdXRSZWYsXG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgIGlzSGlkZGVuOiBpbnB1dElzSGlkZGVuLFxuICAgICAgICBvbkJsdXI6IHRoaXMub25JbnB1dEJsdXIsXG4gICAgICAgIG9uQ2hhbmdlOiB0aGlzLmhhbmRsZUlucHV0Q2hhbmdlLFxuICAgICAgICBvbkZvY3VzOiB0aGlzLm9uSW5wdXRGb2N1cyxcbiAgICAgICAgc3BlbGxDaGVjazogXCJmYWxzZVwiLFxuICAgICAgICB0YWJJbmRleDogdGFiSW5kZXgsXG4gICAgICAgIGZvcm06IGZvcm0sXG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB2YWx1ZTogaW5wdXRWYWx1ZVxuICAgICAgfSwgYXJpYUF0dHJpYnV0ZXMpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyUGxhY2Vob2xkZXJPclZhbHVlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlclBsYWNlaG9sZGVyT3JWYWx1ZSgpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHMyID0gdGhpcy5nZXRDb21wb25lbnRzKCksXG4gICAgICAgIE11bHRpVmFsdWUgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5NdWx0aVZhbHVlLFxuICAgICAgICBNdWx0aVZhbHVlQ29udGFpbmVyID0gX3RoaXMkZ2V0Q29tcG9uZW50czIuTXVsdGlWYWx1ZUNvbnRhaW5lcixcbiAgICAgICAgTXVsdGlWYWx1ZUxhYmVsID0gX3RoaXMkZ2V0Q29tcG9uZW50czIuTXVsdGlWYWx1ZUxhYmVsLFxuICAgICAgICBNdWx0aVZhbHVlUmVtb3ZlID0gX3RoaXMkZ2V0Q29tcG9uZW50czIuTXVsdGlWYWx1ZVJlbW92ZSxcbiAgICAgICAgU2luZ2xlVmFsdWUgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5TaW5nbGVWYWx1ZSxcbiAgICAgICAgUGxhY2Vob2xkZXIgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5QbGFjZWhvbGRlcjtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM5ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgY29udHJvbFNob3VsZFJlbmRlclZhbHVlID0gX3RoaXMkcHJvcHM5LmNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZSxcbiAgICAgICAgaXNEaXNhYmxlZCA9IF90aGlzJHByb3BzOS5pc0Rpc2FibGVkLFxuICAgICAgICBpc011bHRpID0gX3RoaXMkcHJvcHM5LmlzTXVsdGksXG4gICAgICAgIGlucHV0VmFsdWUgPSBfdGhpcyRwcm9wczkuaW5wdXRWYWx1ZSxcbiAgICAgICAgcGxhY2Vob2xkZXIgPSBfdGhpcyRwcm9wczkucGxhY2Vob2xkZXI7XG4gICAgICB2YXIgX3RoaXMkc3RhdGU1ID0gdGhpcy5zdGF0ZSxcbiAgICAgICAgc2VsZWN0VmFsdWUgPSBfdGhpcyRzdGF0ZTUuc2VsZWN0VmFsdWUsXG4gICAgICAgIGZvY3VzZWRWYWx1ZSA9IF90aGlzJHN0YXRlNS5mb2N1c2VkVmFsdWUsXG4gICAgICAgIGlzRm9jdXNlZCA9IF90aGlzJHN0YXRlNS5pc0ZvY3VzZWQ7XG4gICAgICBpZiAoIXRoaXMuaGFzVmFsdWUoKSB8fCAhY29udHJvbFNob3VsZFJlbmRlclZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpbnB1dFZhbHVlID8gbnVsbCA6IC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoUGxhY2Vob2xkZXIsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICAgIGtleTogXCJwbGFjZWhvbGRlclwiLFxuICAgICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgICAgaW5uZXJQcm9wczoge1xuICAgICAgICAgICAgaWQ6IHRoaXMuZ2V0RWxlbWVudElkKCdwbGFjZWhvbGRlcicpXG4gICAgICAgICAgfVxuICAgICAgICB9KSwgcGxhY2Vob2xkZXIpO1xuICAgICAgfVxuICAgICAgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdFZhbHVlLm1hcChmdW5jdGlvbiAob3B0LCBpbmRleCkge1xuICAgICAgICAgIHZhciBpc09wdGlvbkZvY3VzZWQgPSBvcHQgPT09IGZvY3VzZWRWYWx1ZTtcbiAgICAgICAgICB2YXIga2V5ID0gXCJcIi5jb25jYXQoX3RoaXMzLmdldE9wdGlvbkxhYmVsKG9wdCksIFwiLVwiKS5jb25jYXQoX3RoaXMzLmdldE9wdGlvblZhbHVlKG9wdCkpO1xuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KE11bHRpVmFsdWUsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgICBDb250YWluZXI6IE11bHRpVmFsdWVDb250YWluZXIsXG4gICAgICAgICAgICAgIExhYmVsOiBNdWx0aVZhbHVlTGFiZWwsXG4gICAgICAgICAgICAgIFJlbW92ZTogTXVsdGlWYWx1ZVJlbW92ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzRm9jdXNlZDogaXNPcHRpb25Gb2N1c2VkLFxuICAgICAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgcmVtb3ZlUHJvcHM6IHtcbiAgICAgICAgICAgICAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMzLnJlbW92ZVZhbHVlKG9wdCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9uVG91Y2hFbmQ6IGZ1bmN0aW9uIG9uVG91Y2hFbmQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMy5yZW1vdmVWYWx1ZShvcHQpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbk1vdXNlRG93bjogZnVuY3Rpb24gb25Nb3VzZURvd24oZSkge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRhdGE6IG9wdFxuICAgICAgICAgIH0pLCBfdGhpczMuZm9ybWF0T3B0aW9uTGFiZWwob3B0LCAndmFsdWUnKSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGlucHV0VmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgc2luZ2xlVmFsdWUgPSBzZWxlY3RWYWx1ZVswXTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KFNpbmdsZVZhbHVlLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgZGF0YTogc2luZ2xlVmFsdWUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWRcbiAgICAgIH0pLCB0aGlzLmZvcm1hdE9wdGlvbkxhYmVsKHNpbmdsZVZhbHVlLCAndmFsdWUnKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckNsZWFySW5kaWNhdG9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckNsZWFySW5kaWNhdG9yKCkge1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHMzID0gdGhpcy5nZXRDb21wb25lbnRzKCksXG4gICAgICAgIENsZWFySW5kaWNhdG9yID0gX3RoaXMkZ2V0Q29tcG9uZW50czMuQ2xlYXJJbmRpY2F0b3I7XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIF90aGlzJHByb3BzMTAgPSB0aGlzLnByb3BzLFxuICAgICAgICBpc0Rpc2FibGVkID0gX3RoaXMkcHJvcHMxMC5pc0Rpc2FibGVkLFxuICAgICAgICBpc0xvYWRpbmcgPSBfdGhpcyRwcm9wczEwLmlzTG9hZGluZztcbiAgICAgIHZhciBpc0ZvY3VzZWQgPSB0aGlzLnN0YXRlLmlzRm9jdXNlZDtcbiAgICAgIGlmICghdGhpcy5pc0NsZWFyYWJsZSgpIHx8ICFDbGVhckluZGljYXRvciB8fCBpc0Rpc2FibGVkIHx8ICF0aGlzLmhhc1ZhbHVlKCkgfHwgaXNMb2FkaW5nKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIGlubmVyUHJvcHMgPSB7XG4gICAgICAgIG9uTW91c2VEb3duOiB0aGlzLm9uQ2xlYXJJbmRpY2F0b3JNb3VzZURvd24sXG4gICAgICAgIG9uVG91Y2hFbmQ6IHRoaXMub25DbGVhckluZGljYXRvclRvdWNoRW5kLFxuICAgICAgICAnYXJpYS1oaWRkZW4nOiAndHJ1ZSdcbiAgICAgIH07XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChDbGVhckluZGljYXRvciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlubmVyUHJvcHM6IGlubmVyUHJvcHMsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckxvYWRpbmdJbmRpY2F0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyTG9hZGluZ0luZGljYXRvcigpIHtcbiAgICAgIHZhciBfdGhpcyRnZXRDb21wb25lbnRzNCA9IHRoaXMuZ2V0Q29tcG9uZW50cygpLFxuICAgICAgICBMb2FkaW5nSW5kaWNhdG9yID0gX3RoaXMkZ2V0Q29tcG9uZW50czQuTG9hZGluZ0luZGljYXRvcjtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMSA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczExLmlzRGlzYWJsZWQsXG4gICAgICAgIGlzTG9hZGluZyA9IF90aGlzJHByb3BzMTEuaXNMb2FkaW5nO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgaWYgKCFMb2FkaW5nSW5kaWNhdG9yIHx8ICFpc0xvYWRpbmcpIHJldHVybiBudWxsO1xuICAgICAgdmFyIGlubmVyUHJvcHMgPSB7XG4gICAgICAgICdhcmlhLWhpZGRlbic6ICd0cnVlJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KExvYWRpbmdJbmRpY2F0b3IsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBpbm5lclByb3BzOiBpbm5lclByb3BzLFxuICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZFxuICAgICAgfSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJJbmRpY2F0b3JTZXBhcmF0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVySW5kaWNhdG9yU2VwYXJhdG9yKCkge1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHM1ID0gdGhpcy5nZXRDb21wb25lbnRzKCksXG4gICAgICAgIERyb3Bkb3duSW5kaWNhdG9yID0gX3RoaXMkZ2V0Q29tcG9uZW50czUuRHJvcGRvd25JbmRpY2F0b3IsXG4gICAgICAgIEluZGljYXRvclNlcGFyYXRvciA9IF90aGlzJGdldENvbXBvbmVudHM1LkluZGljYXRvclNlcGFyYXRvcjtcblxuICAgICAgLy8gc2VwYXJhdG9yIGRvZXNuJ3QgbWFrZSBzZW5zZSB3aXRob3V0IHRoZSBkcm9wZG93biBpbmRpY2F0b3JcbiAgICAgIGlmICghRHJvcGRvd25JbmRpY2F0b3IgfHwgIUluZGljYXRvclNlcGFyYXRvcikgcmV0dXJuIG51bGw7XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIGlzRGlzYWJsZWQgPSB0aGlzLnByb3BzLmlzRGlzYWJsZWQ7XG4gICAgICB2YXIgaXNGb2N1c2VkID0gdGhpcy5zdGF0ZS5pc0ZvY3VzZWQ7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChJbmRpY2F0b3JTZXBhcmF0b3IsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZFxuICAgICAgfSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJEcm9wZG93bkluZGljYXRvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJEcm9wZG93bkluZGljYXRvcigpIHtcbiAgICAgIHZhciBfdGhpcyRnZXRDb21wb25lbnRzNiA9IHRoaXMuZ2V0Q29tcG9uZW50cygpLFxuICAgICAgICBEcm9wZG93bkluZGljYXRvciA9IF90aGlzJGdldENvbXBvbmVudHM2LkRyb3Bkb3duSW5kaWNhdG9yO1xuICAgICAgaWYgKCFEcm9wZG93bkluZGljYXRvcikgcmV0dXJuIG51bGw7XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIGlzRGlzYWJsZWQgPSB0aGlzLnByb3BzLmlzRGlzYWJsZWQ7XG4gICAgICB2YXIgaXNGb2N1c2VkID0gdGhpcy5zdGF0ZS5pc0ZvY3VzZWQ7XG4gICAgICB2YXIgaW5uZXJQcm9wcyA9IHtcbiAgICAgICAgb25Nb3VzZURvd246IHRoaXMub25Ecm9wZG93bkluZGljYXRvck1vdXNlRG93bixcbiAgICAgICAgb25Ub3VjaEVuZDogdGhpcy5vbkRyb3Bkb3duSW5kaWNhdG9yVG91Y2hFbmQsXG4gICAgICAgICdhcmlhLWhpZGRlbic6ICd0cnVlJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KERyb3Bkb3duSW5kaWNhdG9yLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWRcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyTWVudVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJNZW51KCkge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czcgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgR3JvdXAgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5Hcm91cCxcbiAgICAgICAgR3JvdXBIZWFkaW5nID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuR3JvdXBIZWFkaW5nLFxuICAgICAgICBNZW51ID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuTWVudSxcbiAgICAgICAgTWVudUxpc3QgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5NZW51TGlzdCxcbiAgICAgICAgTWVudVBvcnRhbCA9IF90aGlzJGdldENvbXBvbmVudHM3Lk1lbnVQb3J0YWwsXG4gICAgICAgIExvYWRpbmdNZXNzYWdlID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuTG9hZGluZ01lc3NhZ2UsXG4gICAgICAgIE5vT3B0aW9uc01lc3NhZ2UgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5Ob09wdGlvbnNNZXNzYWdlLFxuICAgICAgICBPcHRpb24gPSBfdGhpcyRnZXRDb21wb25lbnRzNy5PcHRpb247XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIGZvY3VzZWRPcHRpb24gPSB0aGlzLnN0YXRlLmZvY3VzZWRPcHRpb247XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMiA9IHRoaXMucHJvcHMsXG4gICAgICAgIGNhcHR1cmVNZW51U2Nyb2xsID0gX3RoaXMkcHJvcHMxMi5jYXB0dXJlTWVudVNjcm9sbCxcbiAgICAgICAgaW5wdXRWYWx1ZSA9IF90aGlzJHByb3BzMTIuaW5wdXRWYWx1ZSxcbiAgICAgICAgaXNMb2FkaW5nID0gX3RoaXMkcHJvcHMxMi5pc0xvYWRpbmcsXG4gICAgICAgIGxvYWRpbmdNZXNzYWdlID0gX3RoaXMkcHJvcHMxMi5sb2FkaW5nTWVzc2FnZSxcbiAgICAgICAgbWluTWVudUhlaWdodCA9IF90aGlzJHByb3BzMTIubWluTWVudUhlaWdodCxcbiAgICAgICAgbWF4TWVudUhlaWdodCA9IF90aGlzJHByb3BzMTIubWF4TWVudUhlaWdodCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzMTIubWVudUlzT3BlbixcbiAgICAgICAgbWVudVBsYWNlbWVudCA9IF90aGlzJHByb3BzMTIubWVudVBsYWNlbWVudCxcbiAgICAgICAgbWVudVBvc2l0aW9uID0gX3RoaXMkcHJvcHMxMi5tZW51UG9zaXRpb24sXG4gICAgICAgIG1lbnVQb3J0YWxUYXJnZXQgPSBfdGhpcyRwcm9wczEyLm1lbnVQb3J0YWxUYXJnZXQsXG4gICAgICAgIG1lbnVTaG91bGRCbG9ja1Njcm9sbCA9IF90aGlzJHByb3BzMTIubWVudVNob3VsZEJsb2NrU2Nyb2xsLFxuICAgICAgICBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXcgPSBfdGhpcyRwcm9wczEyLm1lbnVTaG91bGRTY3JvbGxJbnRvVmlldyxcbiAgICAgICAgbm9PcHRpb25zTWVzc2FnZSA9IF90aGlzJHByb3BzMTIubm9PcHRpb25zTWVzc2FnZSxcbiAgICAgICAgb25NZW51U2Nyb2xsVG9Ub3AgPSBfdGhpcyRwcm9wczEyLm9uTWVudVNjcm9sbFRvVG9wLFxuICAgICAgICBvbk1lbnVTY3JvbGxUb0JvdHRvbSA9IF90aGlzJHByb3BzMTIub25NZW51U2Nyb2xsVG9Cb3R0b207XG4gICAgICBpZiAoIW1lbnVJc09wZW4pIHJldHVybiBudWxsO1xuXG4gICAgICAvLyBUT0RPOiBJbnRlcm5hbCBPcHRpb24gVHlwZSBoZXJlXG4gICAgICB2YXIgcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKHByb3BzLCBpZCkge1xuICAgICAgICB2YXIgdHlwZSA9IHByb3BzLnR5cGUsXG4gICAgICAgICAgZGF0YSA9IHByb3BzLmRhdGEsXG4gICAgICAgICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgICAgICAgaXNTZWxlY3RlZCA9IHByb3BzLmlzU2VsZWN0ZWQsXG4gICAgICAgICAgbGFiZWwgPSBwcm9wcy5sYWJlbCxcbiAgICAgICAgICB2YWx1ZSA9IHByb3BzLnZhbHVlO1xuICAgICAgICB2YXIgaXNGb2N1c2VkID0gZm9jdXNlZE9wdGlvbiA9PT0gZGF0YTtcbiAgICAgICAgdmFyIG9uSG92ZXIgPSBpc0Rpc2FibGVkID8gdW5kZWZpbmVkIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpczQub25PcHRpb25Ib3ZlcihkYXRhKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG9uU2VsZWN0ID0gaXNEaXNhYmxlZCA/IHVuZGVmaW5lZCA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXM0LnNlbGVjdE9wdGlvbihkYXRhKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG9wdGlvbklkID0gXCJcIi5jb25jYXQoX3RoaXM0LmdldEVsZW1lbnRJZCgnb3B0aW9uJyksIFwiLVwiKS5jb25jYXQoaWQpO1xuICAgICAgICB2YXIgaW5uZXJQcm9wcyA9IHtcbiAgICAgICAgICBpZDogb3B0aW9uSWQsXG4gICAgICAgICAgb25DbGljazogb25TZWxlY3QsXG4gICAgICAgICAgb25Nb3VzZU1vdmU6IG9uSG92ZXIsXG4gICAgICAgICAgb25Nb3VzZU92ZXI6IG9uSG92ZXIsXG4gICAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAgIHJvbGU6ICdvcHRpb24nLFxuICAgICAgICAgICdhcmlhLXNlbGVjdGVkJzogX3RoaXM0LmlzQXBwbGVEZXZpY2UgPyB1bmRlZmluZWQgOiBpc1NlbGVjdGVkIC8vIGlzIG5vdCBzdXBwb3J0ZWQgb24gQXBwbGUgZGV2aWNlc1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KE9wdGlvbiwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgaXNTZWxlY3RlZDogaXNTZWxlY3RlZCxcbiAgICAgICAgICBrZXk6IG9wdGlvbklkLFxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcbiAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZCxcbiAgICAgICAgICBpbm5lclJlZjogaXNGb2N1c2VkID8gX3RoaXM0LmdldEZvY3VzZWRPcHRpb25SZWYgOiB1bmRlZmluZWRcbiAgICAgICAgfSksIF90aGlzNC5mb3JtYXRPcHRpb25MYWJlbChwcm9wcy5kYXRhLCAnbWVudScpKTtcbiAgICAgIH07XG4gICAgICB2YXIgbWVudVVJO1xuICAgICAgaWYgKHRoaXMuaGFzT3B0aW9ucygpKSB7XG4gICAgICAgIG1lbnVVSSA9IHRoaXMuZ2V0Q2F0ZWdvcml6ZWRPcHRpb25zKCkubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgICAgICAgdmFyIF9kYXRhID0gaXRlbS5kYXRhLFxuICAgICAgICAgICAgICBvcHRpb25zID0gaXRlbS5vcHRpb25zLFxuICAgICAgICAgICAgICBncm91cEluZGV4ID0gaXRlbS5pbmRleDtcbiAgICAgICAgICAgIHZhciBncm91cElkID0gXCJcIi5jb25jYXQoX3RoaXM0LmdldEVsZW1lbnRJZCgnZ3JvdXAnKSwgXCItXCIpLmNvbmNhdChncm91cEluZGV4KTtcbiAgICAgICAgICAgIHZhciBoZWFkaW5nSWQgPSBcIlwiLmNvbmNhdChncm91cElkLCBcIi1oZWFkaW5nXCIpO1xuICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoR3JvdXAsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICAgICAgICBrZXk6IGdyb3VwSWQsXG4gICAgICAgICAgICAgIGRhdGE6IF9kYXRhLFxuICAgICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICAgICAgICBIZWFkaW5nOiBHcm91cEhlYWRpbmcsXG4gICAgICAgICAgICAgIGhlYWRpbmdQcm9wczoge1xuICAgICAgICAgICAgICAgIGlkOiBoZWFkaW5nSWQsXG4gICAgICAgICAgICAgICAgZGF0YTogaXRlbS5kYXRhXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGxhYmVsOiBfdGhpczQuZm9ybWF0R3JvdXBMYWJlbChpdGVtLmRhdGEpXG4gICAgICAgICAgICB9KSwgaXRlbS5vcHRpb25zLm1hcChmdW5jdGlvbiAob3B0aW9uKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZW5kZXIob3B0aW9uLCBcIlwiLmNvbmNhdChncm91cEluZGV4LCBcIi1cIikuY29uY2F0KG9wdGlvbi5pbmRleCkpO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSAnb3B0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIHJlbmRlcihpdGVtLCBcIlwiLmNvbmNhdChpdGVtLmluZGV4KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoaXNMb2FkaW5nKSB7XG4gICAgICAgIHZhciBtZXNzYWdlID0gbG9hZGluZ01lc3NhZ2Uoe1xuICAgICAgICAgIGlucHV0VmFsdWU6IGlucHV0VmFsdWVcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChtZXNzYWdlID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgbWVudVVJID0gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChMb2FkaW5nTWVzc2FnZSwgY29tbW9uUHJvcHMsIG1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIF9tZXNzYWdlID0gbm9PcHRpb25zTWVzc2FnZSh7XG4gICAgICAgICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKF9tZXNzYWdlID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgbWVudVVJID0gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChOb09wdGlvbnNNZXNzYWdlLCBjb21tb25Qcm9wcywgX21lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgdmFyIG1lbnVQbGFjZW1lbnRQcm9wcyA9IHtcbiAgICAgICAgbWluTWVudUhlaWdodDogbWluTWVudUhlaWdodCxcbiAgICAgICAgbWF4TWVudUhlaWdodDogbWF4TWVudUhlaWdodCxcbiAgICAgICAgbWVudVBsYWNlbWVudDogbWVudVBsYWNlbWVudCxcbiAgICAgICAgbWVudVBvc2l0aW9uOiBtZW51UG9zaXRpb24sXG4gICAgICAgIG1lbnVTaG91bGRTY3JvbGxJbnRvVmlldzogbWVudVNob3VsZFNjcm9sbEludG9WaWV3XG4gICAgICB9O1xuICAgICAgdmFyIG1lbnVFbGVtZW50ID0gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChpbmRleC5NZW51UGxhY2VyLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIG1lbnVQbGFjZW1lbnRQcm9wcyksIGZ1bmN0aW9uIChfcmVmNCkge1xuICAgICAgICB2YXIgcmVmID0gX3JlZjQucmVmLFxuICAgICAgICAgIF9yZWY0JHBsYWNlclByb3BzID0gX3JlZjQucGxhY2VyUHJvcHMsXG4gICAgICAgICAgcGxhY2VtZW50ID0gX3JlZjQkcGxhY2VyUHJvcHMucGxhY2VtZW50LFxuICAgICAgICAgIG1heEhlaWdodCA9IF9yZWY0JHBsYWNlclByb3BzLm1heEhlaWdodDtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoTWVudSwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCBtZW51UGxhY2VtZW50UHJvcHMsIHtcbiAgICAgICAgICBpbm5lclJlZjogcmVmLFxuICAgICAgICAgIGlubmVyUHJvcHM6IHtcbiAgICAgICAgICAgIG9uTW91c2VEb3duOiBfdGhpczQub25NZW51TW91c2VEb3duLFxuICAgICAgICAgICAgb25Nb3VzZU1vdmU6IF90aGlzNC5vbk1lbnVNb3VzZU1vdmVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlzTG9hZGluZzogaXNMb2FkaW5nLFxuICAgICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50XG4gICAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KFNjcm9sbE1hbmFnZXIsIHtcbiAgICAgICAgICBjYXB0dXJlRW5hYmxlZDogY2FwdHVyZU1lbnVTY3JvbGwsXG4gICAgICAgICAgb25Ub3BBcnJpdmU6IG9uTWVudVNjcm9sbFRvVG9wLFxuICAgICAgICAgIG9uQm90dG9tQXJyaXZlOiBvbk1lbnVTY3JvbGxUb0JvdHRvbSxcbiAgICAgICAgICBsb2NrRW5hYmxlZDogbWVudVNob3VsZEJsb2NrU2Nyb2xsXG4gICAgICAgIH0sIGZ1bmN0aW9uIChzY3JvbGxUYXJnZXRSZWYpIHtcbiAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChNZW51TGlzdCwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgICAgICBpbm5lclJlZjogZnVuY3Rpb24gaW5uZXJSZWYoaW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgX3RoaXM0LmdldE1lbnVMaXN0UmVmKGluc3RhbmNlKTtcbiAgICAgICAgICAgICAgc2Nyb2xsVGFyZ2V0UmVmKGluc3RhbmNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbm5lclByb3BzOiB7XG4gICAgICAgICAgICAgIHJvbGU6ICdsaXN0Ym94JyxcbiAgICAgICAgICAgICAgJ2FyaWEtbXVsdGlzZWxlY3RhYmxlJzogY29tbW9uUHJvcHMuaXNNdWx0aSxcbiAgICAgICAgICAgICAgaWQ6IF90aGlzNC5nZXRFbGVtZW50SWQoJ2xpc3Rib3gnKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzTG9hZGluZzogaXNMb2FkaW5nLFxuICAgICAgICAgICAgbWF4SGVpZ2h0OiBtYXhIZWlnaHQsXG4gICAgICAgICAgICBmb2N1c2VkT3B0aW9uOiBmb2N1c2VkT3B0aW9uXG4gICAgICAgICAgfSksIG1lbnVVSSk7XG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBwb3NpdGlvbmluZyBiZWhhdmlvdXIgaXMgYWxtb3N0IGlkZW50aWNhbCBmb3IgcG9ydGFsbGVkIGFuZCBmaXhlZCxcbiAgICAgIC8vIHNvIHdlIHVzZSB0aGUgc2FtZSBjb21wb25lbnQuIHRoZSBhY3R1YWwgcG9ydGFsbGluZyBsb2dpYyBpcyBmb3JrZWRcbiAgICAgIC8vIHdpdGhpbiB0aGUgY29tcG9uZW50IGJhc2VkIG9uIGBtZW51UG9zaXRpb25gXG4gICAgICByZXR1cm4gbWVudVBvcnRhbFRhcmdldCB8fCBtZW51UG9zaXRpb24gPT09ICdmaXhlZCcgPyAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KE1lbnVQb3J0YWwsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBhcHBlbmRUbzogbWVudVBvcnRhbFRhcmdldCxcbiAgICAgICAgY29udHJvbEVsZW1lbnQ6IHRoaXMuY29udHJvbFJlZixcbiAgICAgICAgbWVudVBsYWNlbWVudDogbWVudVBsYWNlbWVudCxcbiAgICAgICAgbWVudVBvc2l0aW9uOiBtZW51UG9zaXRpb25cbiAgICAgIH0pLCBtZW51RWxlbWVudCkgOiBtZW51RWxlbWVudDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyRm9ybUZpZWxkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckZvcm1GaWVsZCgpIHtcbiAgICAgIHZhciBfdGhpczUgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzMTMgPSB0aGlzLnByb3BzLFxuICAgICAgICBkZWxpbWl0ZXIgPSBfdGhpcyRwcm9wczEzLmRlbGltaXRlcixcbiAgICAgICAgaXNEaXNhYmxlZCA9IF90aGlzJHByb3BzMTMuaXNEaXNhYmxlZCxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzMTMuaXNNdWx0aSxcbiAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzMTMubmFtZSxcbiAgICAgICAgcmVxdWlyZWQgPSBfdGhpcyRwcm9wczEzLnJlcXVpcmVkO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIGlmIChyZXF1aXJlZCAmJiAhdGhpcy5oYXNWYWx1ZSgpICYmICFpc0Rpc2FibGVkKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KFJlcXVpcmVkSW5wdXQkMSwge1xuICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgb25Gb2N1czogdGhpcy5vblZhbHVlSW5wdXRGb2N1c1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICghbmFtZSB8fCBpc0Rpc2FibGVkKSByZXR1cm47XG4gICAgICBpZiAoaXNNdWx0aSkge1xuICAgICAgICBpZiAoZGVsaW1pdGVyKSB7XG4gICAgICAgICAgdmFyIHZhbHVlID0gc2VsZWN0VmFsdWUubWFwKGZ1bmN0aW9uIChvcHQpIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpczUuZ2V0T3B0aW9uVmFsdWUob3B0KTtcbiAgICAgICAgICB9KS5qb2luKGRlbGltaXRlcik7XG4gICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBpbnB1dCA9IHNlbGVjdFZhbHVlLmxlbmd0aCA+IDAgPyBzZWxlY3RWYWx1ZS5tYXAoZnVuY3Rpb24gKG9wdCwgaSkge1xuICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgIGtleTogXCJpLVwiLmNvbmNhdChpKSxcbiAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICAgICAgdmFsdWU6IF90aGlzNS5nZXRPcHRpb25WYWx1ZShvcHQpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KSA6IC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICAgIHZhbHVlOiBcIlwiXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgbnVsbCwgaW5wdXQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgX3ZhbHVlID0gc2VsZWN0VmFsdWVbMF0gPyB0aGlzLmdldE9wdGlvblZhbHVlKHNlbGVjdFZhbHVlWzBdKSA6ICcnO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtcbiAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgIHR5cGU6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgdmFsdWU6IF92YWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyTGl2ZVJlZ2lvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJMaXZlUmVnaW9uKCkge1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTYgPSB0aGlzLnN0YXRlLFxuICAgICAgICBhcmlhU2VsZWN0aW9uID0gX3RoaXMkc3RhdGU2LmFyaWFTZWxlY3Rpb24sXG4gICAgICAgIGZvY3VzZWRPcHRpb24gPSBfdGhpcyRzdGF0ZTYuZm9jdXNlZE9wdGlvbixcbiAgICAgICAgZm9jdXNlZFZhbHVlID0gX3RoaXMkc3RhdGU2LmZvY3VzZWRWYWx1ZSxcbiAgICAgICAgaXNGb2N1c2VkID0gX3RoaXMkc3RhdGU2LmlzRm9jdXNlZCxcbiAgICAgICAgc2VsZWN0VmFsdWUgPSBfdGhpcyRzdGF0ZTYuc2VsZWN0VmFsdWU7XG4gICAgICB2YXIgZm9jdXNhYmxlT3B0aW9ucyA9IHRoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoTGl2ZVJlZ2lvbiQxLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaWQ6IHRoaXMuZ2V0RWxlbWVudElkKCdsaXZlLXJlZ2lvbicpLFxuICAgICAgICBhcmlhU2VsZWN0aW9uOiBhcmlhU2VsZWN0aW9uLFxuICAgICAgICBmb2N1c2VkT3B0aW9uOiBmb2N1c2VkT3B0aW9uLFxuICAgICAgICBmb2N1c2VkVmFsdWU6IGZvY3VzZWRWYWx1ZSxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgIHNlbGVjdFZhbHVlOiBzZWxlY3RWYWx1ZSxcbiAgICAgICAgZm9jdXNhYmxlT3B0aW9uczogZm9jdXNhYmxlT3B0aW9ucyxcbiAgICAgICAgaXNBcHBsZURldmljZTogdGhpcy5pc0FwcGxlRGV2aWNlXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czggPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgQ29udHJvbCA9IF90aGlzJGdldENvbXBvbmVudHM4LkNvbnRyb2wsXG4gICAgICAgIEluZGljYXRvcnNDb250YWluZXIgPSBfdGhpcyRnZXRDb21wb25lbnRzOC5JbmRpY2F0b3JzQ29udGFpbmVyLFxuICAgICAgICBTZWxlY3RDb250YWluZXIgPSBfdGhpcyRnZXRDb21wb25lbnRzOC5TZWxlY3RDb250YWluZXIsXG4gICAgICAgIFZhbHVlQ29udGFpbmVyID0gX3RoaXMkZ2V0Q29tcG9uZW50czguVmFsdWVDb250YWluZXI7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxNCA9IHRoaXMucHJvcHMsXG4gICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzMTQuY2xhc3NOYW1lLFxuICAgICAgICBpZCA9IF90aGlzJHByb3BzMTQuaWQsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczE0LmlzRGlzYWJsZWQsXG4gICAgICAgIG1lbnVJc09wZW4gPSBfdGhpcyRwcm9wczE0Lm1lbnVJc09wZW47XG4gICAgICB2YXIgaXNGb2N1c2VkID0gdGhpcy5zdGF0ZS5pc0ZvY3VzZWQ7XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzID0gdGhpcy5nZXRDb21tb25Qcm9wcygpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoU2VsZWN0Q29udGFpbmVyLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgICAgIGlubmVyUHJvcHM6IHtcbiAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgb25LZXlEb3duOiB0aGlzLm9uS2V5RG93blxuICAgICAgICB9LFxuICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZFxuICAgICAgfSksIHRoaXMucmVuZGVyTGl2ZVJlZ2lvbigpLCAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KENvbnRyb2wsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBpbm5lclJlZjogdGhpcy5nZXRDb250cm9sUmVmLFxuICAgICAgICBpbm5lclByb3BzOiB7XG4gICAgICAgICAgb25Nb3VzZURvd246IHRoaXMub25Db250cm9sTW91c2VEb3duLFxuICAgICAgICAgIG9uVG91Y2hFbmQ6IHRoaXMub25Db250cm9sVG91Y2hFbmRcbiAgICAgICAgfSxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgIG1lbnVJc09wZW46IG1lbnVJc09wZW5cbiAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KFZhbHVlQ29udGFpbmVyLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZFxuICAgICAgfSksIHRoaXMucmVuZGVyUGxhY2Vob2xkZXJPclZhbHVlKCksIHRoaXMucmVuZGVySW5wdXQoKSksIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoSW5kaWNhdG9yc0NvbnRhaW5lciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWRcbiAgICAgIH0pLCB0aGlzLnJlbmRlckNsZWFySW5kaWNhdG9yKCksIHRoaXMucmVuZGVyTG9hZGluZ0luZGljYXRvcigpLCB0aGlzLnJlbmRlckluZGljYXRvclNlcGFyYXRvcigpLCB0aGlzLnJlbmRlckRyb3Bkb3duSW5kaWNhdG9yKCkpKSwgdGhpcy5yZW5kZXJNZW51KCksIHRoaXMucmVuZGVyRm9ybUZpZWxkKCkpO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMocHJvcHMsIHN0YXRlKSB7XG4gICAgICB2YXIgcHJldlByb3BzID0gc3RhdGUucHJldlByb3BzLFxuICAgICAgICBjbGVhckZvY3VzVmFsdWVPblVwZGF0ZSA9IHN0YXRlLmNsZWFyRm9jdXNWYWx1ZU9uVXBkYXRlLFxuICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGUgPSBzdGF0ZS5pbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGUsXG4gICAgICAgIGFyaWFTZWxlY3Rpb24gPSBzdGF0ZS5hcmlhU2VsZWN0aW9uLFxuICAgICAgICBpc0ZvY3VzZWQgPSBzdGF0ZS5pc0ZvY3VzZWQsXG4gICAgICAgIHByZXZXYXNGb2N1c2VkID0gc3RhdGUucHJldldhc0ZvY3VzZWQsXG4gICAgICAgIGluc3RhbmNlUHJlZml4ID0gc3RhdGUuaW5zdGFuY2VQcmVmaXg7XG4gICAgICB2YXIgb3B0aW9ucyA9IHByb3BzLm9wdGlvbnMsXG4gICAgICAgIHZhbHVlID0gcHJvcHMudmFsdWUsXG4gICAgICAgIG1lbnVJc09wZW4gPSBwcm9wcy5tZW51SXNPcGVuLFxuICAgICAgICBpbnB1dFZhbHVlID0gcHJvcHMuaW5wdXRWYWx1ZSxcbiAgICAgICAgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGk7XG4gICAgICB2YXIgc2VsZWN0VmFsdWUgPSBpbmRleC5jbGVhblZhbHVlKHZhbHVlKTtcbiAgICAgIHZhciBuZXdNZW51T3B0aW9uc1N0YXRlID0ge307XG4gICAgICBpZiAocHJldlByb3BzICYmICh2YWx1ZSAhPT0gcHJldlByb3BzLnZhbHVlIHx8IG9wdGlvbnMgIT09IHByZXZQcm9wcy5vcHRpb25zIHx8IG1lbnVJc09wZW4gIT09IHByZXZQcm9wcy5tZW51SXNPcGVuIHx8IGlucHV0VmFsdWUgIT09IHByZXZQcm9wcy5pbnB1dFZhbHVlKSkge1xuICAgICAgICB2YXIgZm9jdXNhYmxlT3B0aW9ucyA9IG1lbnVJc09wZW4gPyBidWlsZEZvY3VzYWJsZU9wdGlvbnMocHJvcHMsIHNlbGVjdFZhbHVlKSA6IFtdO1xuICAgICAgICB2YXIgZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMgPSBtZW51SXNPcGVuID8gYnVpbGRGb2N1c2FibGVPcHRpb25zV2l0aElkcyhidWlsZENhdGVnb3JpemVkT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpLCBcIlwiLmNvbmNhdChpbnN0YW5jZVByZWZpeCwgXCItb3B0aW9uXCIpKSA6IFtdO1xuICAgICAgICB2YXIgZm9jdXNlZFZhbHVlID0gY2xlYXJGb2N1c1ZhbHVlT25VcGRhdGUgPyBnZXROZXh0Rm9jdXNlZFZhbHVlKHN0YXRlLCBzZWxlY3RWYWx1ZSkgOiBudWxsO1xuICAgICAgICB2YXIgZm9jdXNlZE9wdGlvbiA9IGdldE5leHRGb2N1c2VkT3B0aW9uKHN0YXRlLCBmb2N1c2FibGVPcHRpb25zKTtcbiAgICAgICAgdmFyIGZvY3VzZWRPcHRpb25JZCA9IGdldEZvY3VzZWRPcHRpb25JZChmb2N1c2FibGVPcHRpb25zV2l0aElkcywgZm9jdXNlZE9wdGlvbik7XG4gICAgICAgIG5ld01lbnVPcHRpb25zU3RhdGUgPSB7XG4gICAgICAgICAgc2VsZWN0VmFsdWU6IHNlbGVjdFZhbHVlLFxuICAgICAgICAgIGZvY3VzZWRPcHRpb246IGZvY3VzZWRPcHRpb24sXG4gICAgICAgICAgZm9jdXNlZE9wdGlvbklkOiBmb2N1c2VkT3B0aW9uSWQsXG4gICAgICAgICAgZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHM6IGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLFxuICAgICAgICAgIGZvY3VzZWRWYWx1ZTogZm9jdXNlZFZhbHVlLFxuICAgICAgICAgIGNsZWFyRm9jdXNWYWx1ZU9uVXBkYXRlOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgLy8gc29tZSB1cGRhdGVzIHNob3VsZCB0b2dnbGUgdGhlIHN0YXRlIG9mIHRoZSBpbnB1dCB2aXNpYmlsaXR5XG4gICAgICB2YXIgbmV3SW5wdXRJc0hpZGRlblN0YXRlID0gaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlICE9IG51bGwgJiYgcHJvcHMgIT09IHByZXZQcm9wcyA/IHtcbiAgICAgICAgaW5wdXRJc0hpZGRlbjogaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlLFxuICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IHVuZGVmaW5lZFxuICAgICAgfSA6IHt9O1xuICAgICAgdmFyIG5ld0FyaWFTZWxlY3Rpb24gPSBhcmlhU2VsZWN0aW9uO1xuICAgICAgdmFyIGhhc0tlcHRGb2N1cyA9IGlzRm9jdXNlZCAmJiBwcmV2V2FzRm9jdXNlZDtcbiAgICAgIGlmIChpc0ZvY3VzZWQgJiYgIWhhc0tlcHRGb2N1cykge1xuICAgICAgICAvLyBJZiBgdmFsdWVgIG9yIGBkZWZhdWx0VmFsdWVgIHByb3BzIGFyZSBub3QgZW1wdHkgdGhlbiBhbm5vdW5jZSB0aGVtXG4gICAgICAgIC8vIHdoZW4gdGhlIFNlbGVjdCBpcyBpbml0aWFsbHkgZm9jdXNlZFxuICAgICAgICBuZXdBcmlhU2VsZWN0aW9uID0ge1xuICAgICAgICAgIHZhbHVlOiBpbmRleC52YWx1ZVRlcm5hcnkoaXNNdWx0aSwgc2VsZWN0VmFsdWUsIHNlbGVjdFZhbHVlWzBdIHx8IG51bGwpLFxuICAgICAgICAgIG9wdGlvbnM6IHNlbGVjdFZhbHVlLFxuICAgICAgICAgIGFjdGlvbjogJ2luaXRpYWwtaW5wdXQtZm9jdXMnXG4gICAgICAgIH07XG4gICAgICAgIGhhc0tlcHRGb2N1cyA9ICFwcmV2V2FzRm9jdXNlZDtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlICdpbml0aWFsLWlucHV0LWZvY3VzJyBhY3Rpb24gaGFzIGJlZW4gc2V0IGFscmVhZHlcbiAgICAgIC8vIHRoZW4gcmVzZXQgdGhlIGFyaWFTZWxlY3Rpb24gdG8gbnVsbFxuICAgICAgaWYgKChhcmlhU2VsZWN0aW9uID09PSBudWxsIHx8IGFyaWFTZWxlY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFyaWFTZWxlY3Rpb24uYWN0aW9uKSA9PT0gJ2luaXRpYWwtaW5wdXQtZm9jdXMnKSB7XG4gICAgICAgIG5ld0FyaWFTZWxlY3Rpb24gPSBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBuZXdNZW51T3B0aW9uc1N0YXRlKSwgbmV3SW5wdXRJc0hpZGRlblN0YXRlKSwge30sIHtcbiAgICAgICAgcHJldlByb3BzOiBwcm9wcyxcbiAgICAgICAgYXJpYVNlbGVjdGlvbjogbmV3QXJpYVNlbGVjdGlvbixcbiAgICAgICAgcHJldldhc0ZvY3VzZWQ6IGhhc0tlcHRGb2N1c1xuICAgICAgfSk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBTZWxlY3Q7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5TZWxlY3QuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuXG5leHBvcnRzLlNlbGVjdCA9IFNlbGVjdDtcbmV4cG9ydHMuY3JlYXRlRmlsdGVyID0gY3JlYXRlRmlsdGVyO1xuZXhwb3J0cy5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnRzLmRlZmF1bHRUaGVtZSA9IGRlZmF1bHRUaGVtZTtcbmV4cG9ydHMuZ2V0T3B0aW9uTGFiZWwgPSBnZXRPcHRpb25MYWJlbCQxO1xuZXhwb3J0cy5nZXRPcHRpb25WYWx1ZSA9IGdldE9wdGlvblZhbHVlJDE7XG5leHBvcnRzLm1lcmdlU3R5bGVzID0gbWVyZ2VTdHlsZXM7XG4iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbnZhciB1c2VTdGF0ZU1hbmFnZXIgPSByZXF1aXJlKCcuL3VzZVN0YXRlTWFuYWdlci1jZTIzMDYxYy5janMucHJvZC5qcycpO1xudmFyIF9leHRlbmRzID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzJyk7XG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xudmFyIFNlbGVjdCA9IHJlcXVpcmUoJy4vU2VsZWN0LTM2ZDE1ZjkzLmNqcy5wcm9kLmpzJyk7XG52YXIgcmVhY3QgPSByZXF1aXJlKCdAZW1vdGlvbi9yZWFjdCcpO1xudmFyIGNyZWF0ZUNhY2hlID0gcmVxdWlyZSgnQGVtb3Rpb24vY2FjaGUnKTtcbnZhciBpbmRleCA9IHJlcXVpcmUoJy4vaW5kZXgtNjY1YzRlZDguY2pzLnByb2QuanMnKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0U3ByZWFkMicpO1xucmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5Jyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZVN1cGVyJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5Jyk7XG5yZXF1aXJlKCdtZW1vaXplLW9uZScpO1xucmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YnKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdGFnZ2VkVGVtcGxhdGVMaXRlcmFsJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5Jyk7XG5yZXF1aXJlKCdyZWFjdC1kb20nKTtcbnJlcXVpcmUoJ0BmbG9hdGluZy11aS9kb20nKTtcbnJlcXVpcmUoJ3VzZS1pc29tb3JwaGljLWxheW91dC1lZmZlY3QnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BEZWZhdWx0IChlKSB7IHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7ICdkZWZhdWx0JzogZSB9OyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wTmFtZXNwYWNlKGUpIHtcbiAgaWYgKGUgJiYgZS5fX2VzTW9kdWxlKSByZXR1cm4gZTtcbiAgdmFyIG4gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBpZiAoZSkge1xuICAgIE9iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgIGlmIChrICE9PSAnZGVmYXVsdCcpIHtcbiAgICAgICAgdmFyIGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIGspO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobiwgaywgZC5nZXQgPyBkIDoge1xuICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBlW2tdOyB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIG5bXCJkZWZhdWx0XCJdID0gZTtcbiAgcmV0dXJuIE9iamVjdC5mcmVlemUobik7XG59XG5cbnZhciBSZWFjdF9fbmFtZXNwYWNlID0gLyojX19QVVJFX18qL19pbnRlcm9wTmFtZXNwYWNlKFJlYWN0KTtcbnZhciBjcmVhdGVDYWNoZV9fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9faW50ZXJvcERlZmF1bHQoY3JlYXRlQ2FjaGUpO1xuXG52YXIgU3RhdGVNYW5hZ2VkU2VsZWN0ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHtcbiAgdmFyIGJhc2VTZWxlY3RQcm9wcyA9IHVzZVN0YXRlTWFuYWdlci51c2VTdGF0ZU1hbmFnZXIocHJvcHMpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChTZWxlY3QuU2VsZWN0LCBfZXh0ZW5kcyh7XG4gICAgcmVmOiByZWZcbiAgfSwgYmFzZVNlbGVjdFByb3BzKSk7XG59KTtcbnZhciBTdGF0ZU1hbmFnZWRTZWxlY3QkMSA9IFN0YXRlTWFuYWdlZFNlbGVjdDtcblxudmFyIE5vbmNlUHJvdmlkZXIgPSAoZnVuY3Rpb24gKF9yZWYpIHtcbiAgdmFyIG5vbmNlID0gX3JlZi5ub25jZSxcbiAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgY2FjaGVLZXkgPSBfcmVmLmNhY2hlS2V5O1xuICB2YXIgZW1vdGlvbkNhY2hlID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNhY2hlX19kZWZhdWx0W1wiZGVmYXVsdFwiXSh7XG4gICAgICBrZXk6IGNhY2hlS2V5LFxuICAgICAgbm9uY2U6IG5vbmNlXG4gICAgfSk7XG4gIH0sIFtjYWNoZUtleSwgbm9uY2VdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQocmVhY3QuQ2FjaGVQcm92aWRlciwge1xuICAgIHZhbHVlOiBlbW90aW9uQ2FjaGVcbiAgfSwgY2hpbGRyZW4pO1xufSk7XG5cbmV4cG9ydHMudXNlU3RhdGVNYW5hZ2VyID0gdXNlU3RhdGVNYW5hZ2VyLnVzZVN0YXRlTWFuYWdlcjtcbmV4cG9ydHMuY3JlYXRlRmlsdGVyID0gU2VsZWN0LmNyZWF0ZUZpbHRlcjtcbmV4cG9ydHMuZGVmYXVsdFRoZW1lID0gU2VsZWN0LmRlZmF1bHRUaGVtZTtcbmV4cG9ydHMubWVyZ2VTdHlsZXMgPSBTZWxlY3QubWVyZ2VTdHlsZXM7XG5leHBvcnRzLmNvbXBvbmVudHMgPSBpbmRleC5jb21wb25lbnRzO1xuZXhwb3J0cy5Ob25jZVByb3ZpZGVyID0gTm9uY2VQcm92aWRlcjtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gU3RhdGVNYW5hZ2VkU2VsZWN0JDE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi9yZWFjdC1zZWxlY3QuY2pzLnByb2QuanNcIik7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuL3JlYWN0LXNlbGVjdC5janMuZGV2LmpzXCIpO1xufVxuIiwiZXhwb3J0cy5fZGVmYXVsdCA9IHJlcXVpcmUoXCIuL3JlYWN0LXNlbGVjdC5janMuanNcIikuZGVmYXVsdDtcbiIsImltcG9ydCBzdHlsZWQgZnJvbSBcInN0eWxlZC1jb21wb25lbnRzXCJcbmltcG9ydCB7IGNvbXBvbmVudHMgfSBmcm9tIFwicmVhY3Qtc2VsZWN0XCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGNvbnN0IFNlbGVjdExhYmVsID0gKHByb3BzOiBhbnkpID0+IHtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Y29tcG9uZW50cy5Db250cm9sIHsuLi5wcm9wc30gLz5cbiAgICAgIDxMYWJlbCAkaXNGbG9hdGluZz17cHJvcHMuZ2V0VmFsdWUoKS5sZW5ndGggPT0gMCB8fCBwcm9wcy5nZXRWYWx1ZSgpWzBdLnV1aWQgPT0gXCJcIn0+e3Byb3BzLnNlbGVjdFByb3BzLm5hbWV9PC9MYWJlbD5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmNvbnN0IExhYmVsID0gc3R5bGVkLmxhYmVsPHsgJGlzRmxvYXRpbmc/OiBib29sZWFuIH0+YFxuICBsZWZ0OiAxMHB4O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0cmFuc2l0aW9uOiAwLjJzIGVhc2UgYWxsO1xuICAtbW96LXRyYW5zaXRpb246IDAuMnMgZWFzZSBhbGw7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogMC4ycyBlYXNlIGFsbDtcbiAgdG9wOiAkeyhwcm9wcykgPT4gKHByb3BzLiRpc0Zsb2F0aW5nID8gYDIwJWAgOiBgMHB4YCl9O1xuICBmb250LXNpemU6ICR7KHByb3BzKSA9PiAocHJvcHMuJGlzRmxvYXRpbmcgPyBgMXJlbWAgOiBgMC42cmVtYCl9O1xuYDtcbiIsImltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgQXN5bmNQYWdpbmF0ZSB9IGZyb20gXCJyZWFjdC1zZWxlY3QtYXN5bmMtcGFnaW5hdGVcIlxuaW1wb3J0IHsgQ29udGFjdCB9IGZyb20gJy4uLy4uL21vZGVsL2NvbnRhY3QnXG5pbXBvcnQgQ29udGFjdFNlcnZpY2UgZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGFjdCdcbmltcG9ydCB7IFNob3AgfSBmcm9tICcuLi8uLi9tb2RlbC9zaG9wJ1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNvbnRhaW5lciB9IGZyb20gJ3RzeXJpbmdlLW5lbydcbmltcG9ydCBPcmRlclN0YXRlIGZyb20gJy4uLy4uL3N0YXRlL29yZGVyJ1xuaW1wb3J0IENvbnRhY3RNb2RhbENvbXBvbmVudCBmcm9tIFwiLi9Db250YWN0TW9kYWxDb21wb25lbnRcIlxuaW1wb3J0IE9yZGVyIGZyb20gJy4uLy4uL21vZGVsL29yZGVyJ1xuaW1wb3J0IHsgU2VsZWN0TGFiZWwgfSBmcm9tICcuLi9iYXNlL1NlbGVjdExhYmVsJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBDb250YWN0U2VsZWN0ID0gKHtvcmRlciwgc2hvcCwgb25DaGFuZ2V9KSA9PiB7XG5cbiAgY29uc3QgW3Nob3BVdWlkLCBzZXRTaG9wVXVpZF0gPSB1c2VTdGF0ZShudWxsKTtcblxuICBjb25zdCBvcmRlclN0YXRlOiBPcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSk7XG4gIGNvbnN0IGNvbnRhY3RfYXBpID0gbmV3IENvbnRhY3RTZXJ2aWNlKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRTaG9wVXVpZChzaG9wLnV1aWQpO1xuICB9LCBbc2hvcF0pO1xuXG4gIGNvbnN0IGxvYWRPcHRpb25zID0gYXN5bmMgKHNlYXJjaFF1ZXJ5LCBsb2FkZWRPcHRpb25zLCB7IHBhZ2UgfSkgPT4ge1xuXG4gICAgbGV0IGNvbnRhY3RzID0gYXdhaXQgY29udGFjdF9hcGkuZ2V0Q29udGFjdHMoc2VhcmNoUXVlcnksIHBhZ2UsIHNob3ApO1xuICAgIFxuICAgIHJldHVybiB7XG4gICAgICBvcHRpb25zOiBjb250YWN0cyxcbiAgICAgIGhhc01vcmU6IGZhbHNlLFxuICAgICAgYWRkaXRpb25hbDoge1xuICAgICAgICBwYWdlOiBwYWdlICsgMSxcbiAgICAgIH0sXG4gICAgfTsgXG4gIH07XG5cbiAgY29uc3Qgc2V0Q29udGFjdEluT3JkZXIgPSAob3B0aW9uKSA9PiB7XG4gICAgb3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS52YWx1ZS5jb250YWN0ID0gb3B0aW9uO1xuICAgIG9yZGVyLmNvbnRhY3QgPSBvcHRpb247XG4gICAgb25DaGFuZ2Uob3B0aW9uKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBZGQgPSAoY29udGFjdDogQ29udGFjdCkgPT4ge1xuICAgIHNldFNob3BVdWlkKE1hdGgucmFuZG9tKCkpO1xuICAgIHNldENvbnRhY3RJbk9yZGVyKGNvbnRhY3QpO1xuICB9XG5cbiAgY29uc3QgaGFuZGxlRWRpdCA9IChjb250YWN0OiBDb250YWN0KSA9PiB7XG4gICAgc2V0U2hvcFV1aWQoTWF0aC5yYW5kb20oKSk7XG4gICAgc2V0Q29udGFjdEluT3JkZXIoY29udGFjdCk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtMVwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgPEFzeW5jUGFnaW5hdGVcbiAgICAgICAgICAgIGRlZmF1bHRPcHRpb25zXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake29yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkudmFsdWUuY29udGFjdC51c2VybmFtZSA9PSBcIlwiID8gXCJib3JkZXIgYm9yZGVyLWRhbmdlclwiIDogXCJcIn1gfVxuICAgICAgICAgICAga2V5PXtKU09OLnN0cmluZ2lmeShzaG9wVXVpZCl9XG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU9e29yZGVyLmNvbnRhY3R9XG4gICAgICAgICAgICBjb21wb25lbnRzPXt7Q29udHJvbDogU2VsZWN0TGFiZWx9fVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9JydcbiAgICAgICAgICAgIG5hbWU9J0t1bmRlJ1xuICAgICAgICAgICAgdmFsdWU9e29yZGVyLmNvbnRhY3R9XG4gICAgICAgICAgICBsb2FkT3B0aW9ucz17bG9hZE9wdGlvbnN9XG4gICAgICAgICAgICBnZXRPcHRpb25WYWx1ZT17KG9wdGlvbikgPT4gb3B0aW9uLnV1aWR9XG4gICAgICAgICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4gb3B0aW9uLnVzZXJuYW1lfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3NldENvbnRhY3RJbk9yZGVyfVxuICAgICAgICAgICAgaXNTZWFyY2hhYmxlPXt0cnVlfVxuICAgICAgICAgICAgYWRkaXRpb25hbD17e1xuICAgICAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdj5cbiAgICAgICAgPENvbnRhY3RNb2RhbENvbXBvbmVudCBzaG9wPXtzaG9wfSBjb250YWN0PXtvcmRlci5jb250YWN0fSBoYW5kbGVBZGQ9e2hhbmRsZUFkZH0gaGFuZGxlRWRpdD17aGFuZGxlRWRpdH0vPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Db250YWN0U2VsZWN0LnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5pbnN0YW5jZU9mKE9yZGVyKSxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbnRhY3RTZWxlY3Q7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgTmljZU1vZGFsLCB7IHVzZU1vZGFsLCBib290c3RyYXBEaWFsb2cgfSBmcm9tIFwiQGViYXkvbmljZS1tb2RhbC1yZWFjdFwiXG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uL2Jhc2UvQnV0dG9uJ1xuaW1wb3J0IHtSSlNGU2NoZW1hfSBmcm9tIFwiQHJqc2YvdXRpbHNcIlxuaW1wb3J0IHZhbGlkYXRvciBmcm9tIFwiQHJqc2YvdmFsaWRhdG9yLWFqdjZcIlxuaW1wb3J0IEZvcm0gZnJvbSBcIkByanNmL2NvcmVcIlxuaW1wb3J0IENvdW50cnlTZXJ2aWNlIGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvdW50cnknXG5pbXBvcnQgeyBNb2RhbCB9IGZyb20gXCJmbG93Yml0ZS1yZWFjdFwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IEFkZHJlc3NkaXYgPSBOaWNlTW9kYWwuY3JlYXRlKFxuICAgICh7IHRpdGxlLCBhY3Rpb24sIGFkZHJlc3MsIHNob3AgfSkgPT4ge1xuXG4gICAgICAgIGNvbnN0IGNvdW50cnlfYXBpID0gbmV3IENvdW50cnlTZXJ2aWNlKClcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IG1vZGFsID0gdXNlTW9kYWwoKVxuICAgICAgICBjb25zdCBbZm9ybURhdGEsIHNldEZvcm1EYXRhXSA9IHVzZVN0YXRlKHt9KVxuICAgICAgICBcbiAgICAgICAgY29uc3QgW3NjaGVtYSwgc2V0U2NoZW1hXSA9IHVzZVN0YXRlPFJKU0ZTY2hlbWE+KHt9KVxuXG4gICAgICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBpZihhZGRyZXNzKSB7XG4gICAgICAgICAgICAgICAgc2V0Rm9ybURhdGEoe1xuICAgICAgICAgICAgICAgICAgICBlbWFpbDogYWRkcmVzcy5lbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RuYW1lOiBhZGRyZXNzLmZpcnN0bmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbGFzdG5hbWU6IGFkZHJlc3MubGFzdG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBhbnk6IGFkZHJlc3MuY29tcGFueSxcbiAgICAgICAgICAgICAgICAgICAgc3RyZWV0OiBhZGRyZXNzLnN0cmVldCxcbiAgICAgICAgICAgICAgICAgICAgaG91c2VOdW1iZXI6IGFkZHJlc3MuaG91c2VOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIHppcDogYWRkcmVzcy56aXAsXG4gICAgICAgICAgICAgICAgICAgIGNpdHk6IGFkZHJlc3MuY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgcGhvbmU6IGFkZHJlc3MucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGFkZHJlc3MuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgdXN0aWQ6IGFkZHJlc3MudXN0aWRcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIFthZGRyZXNzXSlcblxuICAgICAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY291bnRyeV9hcGkuZ2V0Q291bnRyeShzaG9wKS50aGVuKCggZGF0YSApID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgY291bnRyeXM6IGFycmF5ID0gW107XG5cbiAgICAgICAgICAgICAgICBkYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY291bnRyeXMucHVzaCh7J3RpdGxlJzogaXRlbS5jb2RlLCAnY29uc3QnOiBpdGVtLmNvZGV9KVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICB2YXIgc2NoZW1hOiBSSlNGU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ0FkZHJlc3MnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsnZW1haWwnXSxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IHsgdHlwZTogJ3N0cmluZycsIGZvcm1hdDogJ2VtYWlsJywgdGl0bGU6ICdFLU1haWwnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wYW55OiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ0NvbXBhbnknfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0bmFtZTogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdGaXJzdG5hbWUnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RuYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ0xhc3RuYW1lJ30sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJlZXQ6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnU3RyZWV0J30sXG4gICAgICAgICAgICAgICAgICAgICAgICBob3VzZU51bWJlcjogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdIb3VzZW51bWJlcid9LFxuICAgICAgICAgICAgICAgICAgICAgICAgemlwOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ1ppcCd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdDaXR5J30sXG4gICAgICAgICAgICAgICAgICAgICAgICBwaG9uZTogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdQaG9uZSd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdXN0aWQ6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnVXN0SWQnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnQ291bnRyeScsIG9uZU9mOiBjb3VudHJ5c31cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBzZXRTY2hlbWEoc2NoZW1hKVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIFtdKTtcblxuICAgICAgICBjb25zdCB1aVNjaGVtYTogUkpTRlNjaGVtYSA9IHtcbiAgICAgICAgICAgIFwidWk6c3VibWl0QnV0dG9uT3B0aW9uc1wiOiB7XG4gICAgICAgICAgICAgICAgXCJzdWJtaXRUZXh0XCI6IFwiU2F2ZVwiLFxuICAgICAgICAgICAgICAgIFwibm9yZW5kZXJcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBcInByb3BzXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJkaXNhYmxlZFwiOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgXCJjbGFzc05hbWVcIjogXCJidG4gYnRuLWluZm9cIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8TW9kYWwgc2hvdz17bW9kYWwudmlzaWJsZX0gb25DbG9zZT17KCkgPT4gbW9kYWwucmVtb3ZlKCl9PlxuICAgICAgICAgICAgICAgIDxNb2RhbC5IZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e3RpdGxlfTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvTW9kYWwuSGVhZGVyPlxuICAgICAgICAgICAgICAgIDxNb2RhbC5Cb2R5PlxuICAgICAgICAgICAgICAgICAgICB7YWN0aW9uID09PSBcIlNhdmVcIiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtYT17c2NoZW1hfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhPXtmb3JtRGF0YX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aVNjaGVtYT17dWlTY2hlbWF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yPXt2YWxpZGF0b3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRGb3JtRGF0YShlLmZvcm1EYXRhKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L01vZGFsLkJvZHk+XG4gICAgICAgICAgICAgICAgPE1vZGFsLkZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT17M31cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJzdWNjZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aW9uID09PSBcIlNhdmVcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybURhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsLnJlc29sdmUoZm9ybURhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC5yZW1vdmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwucmVzb2x2ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsLnJlbW92ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT17NH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ3YXJuaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC5yZW1vdmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L01vZGFsLkZvb3Rlcj5cbiAgICAgICAgICAgIDwvTW9kYWw+XG4gICAgICAgIClcbiAgICB9XG4pXG5cbmV4cG9ydCBkZWZhdWx0IEFkZHJlc3NkaXZcbiIsImltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi9iYXNlL0J1dHRvblwiXG5pbXBvcnQgQWRkcmVzc01vZGFsIGZyb20gXCIuL0FkZHJlc3NNb2RhbFwiXG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlTW9kYWwgfSBmcm9tICdAZWJheS9uaWNlLW1vZGFsLXJlYWN0J1xuaW1wb3J0IHsgQWRkcmVzcyB9IGZyb20gXCIuLi8uLi9tb2RlbC9hZGRyZXNzXCJcbmltcG9ydCB7IFNob3AgfSBmcm9tIFwiLi4vLi4vbW9kZWwvc2hvcFwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IEFkZHJlc3NNb2RhbENvbXBvbmVudCA9ICh7aGFuZGxlQWRkLCBoYW5kbGVFZGl0LCBhZGRyZXNzLCBzaG9wfSkgPT4ge1xuICAgIGNvbnN0IGFkZHJlc3NNb2RhbCA9IHVzZU1vZGFsKEFkZHJlc3NNb2RhbClcblxuICAgIGNvbnN0IHNob3dBZGRNb2RhbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgYWRkcmVzc01vZGFsLnNob3coe3RpdGxlOiAnQWRkIEFkZHJlc3MnLCBhY3Rpb246ICdTYXZlJywgc2hvcH0pLnRoZW4oKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgICAgICBhZGRBZGRyZXNzKGZvcm1EYXRhKVxuICAgICAgICB9KVxuICAgIH0sW2FkZHJlc3NNb2RhbF0pXG5cbiAgICBjb25zdCBzaG93RWRpdE1vZGFsID0gdXNlQ2FsbGJhY2soKGFkZHJlc3MpID0+IHtcbiAgICAgICAgYWRkcmVzc01vZGFsLnNob3coeyB0aXRsZTogJ0VkaXQgQWRkcmVzcycsIGFjdGlvbjogJ1NhdmUnLCBhZGRyZXNzOiBhZGRyZXNzLCBzaG9wIH0pLnRoZW4oKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgICAgICB1cGRhdGVBZGRyZXNzKGZvcm1EYXRhKVxuICAgICAgICB9KVxuICAgIH0sW2FkZHJlc3NNb2RhbF0pXG5cbiAgICBjb25zdCB1cGRhdGVBZGRyZXNzID0gKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgIGFkZHJlc3MucGFyc2VGcm9tRm9ybURhdGEoZm9ybURhdGEpXG4gICAgICAgIGhhbmRsZUVkaXQoYWRkcmVzcylcbiAgICB9XG5cbiAgICBjb25zdCBhZGRBZGRyZXNzID0gKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgIGFkZHJlc3MgPSBuZXcgQWRkcmVzcygpXG4gICAgICAgIGFkZHJlc3MucGFyc2VGcm9tRm9ybURhdGEoZm9ybURhdGEpXG4gICAgICAgIGhhbmRsZUFkZChhZGRyZXNzKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleCBnYXAtMSd9PlxuICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPXsxfSB2YXJpYW50PVwic3VjY2Vzc1wiIG9uQ2xpY2s9e3Nob3dBZGRNb2RhbH0gLz5cbiAgICAgICAgICAgIDxCdXR0b24gdHlwZT17Mn0gdmFyaWFudD1cImluZm9cIiBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2hvd0VkaXRNb2RhbChhZGRyZXNzKVxuICAgICAgICAgICAgfX0gLz5cbiAgICAgICAgPC9kaXY+XG4gICAgKVxufVxuXG5BZGRyZXNzTW9kYWxDb21wb25lbnQucHJvcFR5cGVzID0ge1xuICAgIGhhbmRsZUFkZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgaGFuZGxlRWRpdDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgYWRkcmVzczogUHJvcFR5cGVzLmluc3RhbmNlT2YoQWRkcmVzcyksXG4gICAgc2hvcDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2hvcClcbn1cblxuZXhwb3J0IGRlZmF1bHQgQWRkcmVzc01vZGFsQ29tcG9uZW50XG4iLCJpbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCB7IEFkZHJlc3MgfSBmcm9tICcuLi8uLi9tb2RlbC9hZGRyZXNzJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuY29uc3QgQWRkcmVzc0RldGFpbCA9ICh7YWRkcmVzc30pID0+IHtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxzbWFsbD57YWRkcmVzcy5jb21wYW55fSB7YWRkcmVzcy5maXJzdG5hbWV9IHthZGRyZXNzLmxhc3RuYW1lfSB7YWRkcmVzcy5zdHJlZXR9IHthZGRyZXNzLmhvdXNlTnVtYmVyfSB7YWRkcmVzcy5jb3VudHJ5fSB7YWRkcmVzcy56aXB9IHthZGRyZXNzLmNpdHl9PC9zbWFsbD5cbiAgICApXG59XG5cblxuQWRkcmVzc0RldGFpbC5wcm9wVHlwZXMgPSB7XG4gICAgYWRkcmVzczogUHJvcFR5cGVzLmluc3RhbmNlT2YoQWRkcmVzcylcbn1cbiAgICBcbmV4cG9ydCBkZWZhdWx0IEFkZHJlc3NEZXRhaWxcbiIsImltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgQXN5bmNQYWdpbmF0ZSB9IGZyb20gXCJyZWFjdC1zZWxlY3QtYXN5bmMtcGFnaW5hdGVcIlxuaW1wb3J0IHsgQ29udGFjdCB9IGZyb20gJy4uLy4uL21vZGVsL2NvbnRhY3QnXG5pbXBvcnQgeyBBZGRyZXNzIH0gZnJvbSAnLi4vLi4vbW9kZWwvYWRkcmVzcydcbmltcG9ydCB7Y29udGFpbmVyfSBmcm9tIFwidHN5cmluZ2UtbmVvXCJcbmltcG9ydCB7dXNlRWZmZWN0LHVzZVN0YXRlfSBmcm9tICdyZWFjdCdcbmltcG9ydCBPcmRlclN0YXRlIGZyb20gXCIuLi8uLi9zdGF0ZS9vcmRlclwiXG5pbXBvcnQgQWRkcmVzc1NlcnZpY2UgZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2FkZHJlc3NcIlxuaW1wb3J0IEFkZHJlc3NNb2RhbENvbXBvbmVudCBmcm9tIFwiLi9BZGRyZXNzTW9kYWxDb21wb25lbnRcIlxuaW1wb3J0IHsgU2VsZWN0TGFiZWwgfSBmcm9tICcuLi9iYXNlL1NlbGVjdExhYmVsJ1xuaW1wb3J0IEFkZHJlc3NEZXRhaWwgZnJvbSAnLi9BZGRyZXNzRGV0YWlsJ1xuaW1wb3J0IHsgU2hvcCB9IGZyb20gJy4uLy4uL21vZGVsL3Nob3AnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IEFkZHJlc3NTZWxlY3QgPSAoe2FkZHJlc3MsIGNvbnRhY3QsIHR5cGUsIGNoYW5nZUFkZHJlc3MsIG5hbWUsIHNob3B9KSA9PiB7XG5cbiAgY29uc3QgW2NvbnRhY3RVdWlkLCBzZXRDb250YWN0VXVpZF0gPSB1c2VTdGF0ZShudWxsKVxuXG4gIGNvbnN0IFtsb2NhbEFkZHJlc3MsIHNldExvY2FsQWRkcmVzc10gPSB1c2VTdGF0ZShudWxsKVxuXG4gIGNvbnN0IGFkZHJlc3Nfc2VydmljZSA9IG5ldyBBZGRyZXNzU2VydmljZSgpXG5cbiAgbGV0IG9yZGVyU3RhdGUgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclN0YXRlKVxuICBcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZihjb250YWN0LnV1aWQgIT0gXCJcIikge1xuICAgICAgc2V0Q29udGFjdFV1aWQoY29udGFjdC51dWlkKVxuICAgIH1cbiAgfSwgW2NvbnRhY3QudXVpZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRMb2NhbEFkZHJlc3MoYWRkcmVzcylcbiAgfSwgW2FkZHJlc3NdKVxuXG4gIGNvbnN0IG9yZGVyOiBPcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSlcblxuICBjb25zdCBsb2FkT3B0aW9ucyA9IGFzeW5jIChzZWFyY2hRdWVyeSwgbG9hZGVkT3B0aW9ucykgPT4ge1xuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGFkZHJlc3Nfc2VydmljZS5nZXRDb250YWN0QWRkcmVzcyhjb250YWN0LnV1aWQsIHR5cGUpXG5cbiAgICByZXR1cm4ge1xuICAgICAgb3B0aW9uczogZGF0YSxcbiAgICAgIGhhc01vcmU6IGZhbHNlLFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUFkZCA9IChhZGRyZXNzOiBBZGRyZXNzKSA9PiB7XG4gICAgYWRkcmVzcy50eXBlID0gdHlwZVxuICAgIGFkZHJlc3MuY29udGFjdC51dWlkID0gY29udGFjdC51dWlkXG4gICAgYWRkcmVzc19zZXJ2aWNlLmNyZWF0ZShhZGRyZXNzKS50aGVuKCgpID0+IHtcbiAgICAgIHNldExvY2FsQWRkcmVzcyhhZGRyZXNzKVxuICAgICAgY2hhbmdlQWRkcmVzcyhhZGRyZXNzLCB0eXBlKVxuICAgICAgc2V0Q29udGFjdFV1aWQoTWF0aC5yYW5kb20oKSlcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRWRpdCA9IChhZGRyZXNzOiBBZGRyZXNzKSA9PiB7XG4gICAgYWRkcmVzcy50eXBlID0gdHlwZVxuICAgIGFkZHJlc3MuY29udGFjdC51dWlkID0gY29udGFjdC51dWlkXG4gICAgYWRkcmVzc19zZXJ2aWNlLnVwZGF0ZShhZGRyZXNzKS50aGVuKCgpID0+IHtcbiAgICAgIHNldExvY2FsQWRkcmVzcyhhZGRyZXNzKVxuICAgICAgY2hhbmdlQWRkcmVzcyhhZGRyZXNzLCB0eXBlKVxuICAgICAgc2V0Q29udGFjdFV1aWQoTWF0aC5yYW5kb20oKSlcbiAgICB9KVxuICB9XG5cbiAgY29uc3Qgc2V0QWRkcmVzc0luT3JkZXIgPSAob3B0aW9uKSA9PiB7XG4gICAgc2V0TG9jYWxBZGRyZXNzKG9wdGlvbilcbiAgICBjaGFuZ2VBZGRyZXNzKG9wdGlvbiwgdHlwZSlcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9J2ZsZXggZ2FwLTEnPlxuICAgICAgPGRpdiBjbGFzc05hbWU9J2ZsZXgtMSc+XG4gICAgICAgICAgPEFzeW5jUGFnaW5hdGVcbiAgICAgICAgICAgIGRlZmF1bHRPcHRpb25zXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2FkZHJlc3N9XG4gICAgICAgICAgICBrZXk9e0pTT04uc3RyaW5naWZ5KGNvbnRhY3RVdWlkKX1cbiAgICAgICAgICAgIGxvYWRPcHRpb25zPXtsb2FkT3B0aW9uc31cbiAgICAgICAgICAgIGdldE9wdGlvblZhbHVlPXsob3B0aW9uKSA9PiBvcHRpb24udXVpZH1cbiAgICAgICAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiBvcHRpb24uZmlyc3RuYW1lICsgJyAnICsgb3B0aW9uLmxhc3RuYW1lfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3NldEFkZHJlc3NJbk9yZGVyfVxuICAgICAgICAgICAgaXNTZWFyY2hhYmxlPXtmYWxzZX1cbiAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj0nJ1xuICAgICAgICAgICAgY29tcG9uZW50cz17eyBDb250cm9sOiBTZWxlY3RMYWJlbCB9fVxuICAgICAgICAvPlxuICAgICAgICBcbiAgICAgICAgeyBsb2NhbEFkZHJlc3MgJiYgPEFkZHJlc3NEZXRhaWwgYWRkcmVzcz17bG9jYWxBZGRyZXNzfSAvPn1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiA+XG4gICAgICAgIDxBZGRyZXNzTW9kYWxDb21wb25lbnQgYWRkcmVzcz17bG9jYWxBZGRyZXNzfSBoYW5kbGVBZGQ9e2hhbmRsZUFkZH0gaGFuZGxlRWRpdD17aGFuZGxlRWRpdH0gc2hvcD17c2hvcH0vPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgXG4gIClcbn1cblxuQWRkcmVzc1NlbGVjdC5wcm9wVHlwZXMgPSB7XG4gIGFkZHJlc3M6IFByb3BUeXBlcy5pbnN0YW5jZU9mKEFkZHJlc3MpLFxuICBjb250YWN0OiBQcm9wVHlwZXMuaW5zdGFuY2VPZihDb250YWN0KSxcbiAgc2hvcDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2hvcCksXG4gIHR5cGU6IFByb3BUeXBlcy5udW1iZXIsXG4gIGNoYW5nZUFkZHJlc3M6IFByb3BUeXBlcy5mdW5jLFxuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG59XG5cbmV4cG9ydCBkZWZhdWx0IEFkZHJlc3NTZWxlY3RcbiIsImltcG9ydCB7YXV0b0luamVjdGFibGUsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiLi90b2tlblwiO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IEFjY291bnQgfSBmcm9tIFwiLi4vbW9kZWwvYWNjb3VudFwiO1xuaW1wb3J0IHsgU2hvcCB9IGZyb20gXCIuLi9tb2RlbC9zaG9wXCI7XG5cbkBzaW5nbGV0b24oKVxuQGF1dG9JbmplY3RhYmxlKClcbmNsYXNzIEFjY291bnRTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0b2tlbj86IFRva2VuKSB7fVxuXG4gIGFzeW5jIGdldEFjY291bnRzKHNob3A6IFNob3ApOiBQcm9taXNlPEFjY291bnRbXT4ge1xuXG4gICAgcmV0dXJuIGF3YWl0IGF4aW9zLmdldCgnL2FwcHMvYXBpL2FjY291bnQvYWxsYnlzaG9wLycgKyBzaG9wLnV1aWQsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLnRva2VuPy5jdXJyZW50VG9rZW5cbiAgICAgICAgfVxuICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgIGxldCBhY2NvdW50ID0gbmV3IEFjY291bnQoKTtcbiAgICAgICAgICBhY2NvdW50LnVpZCA9IGl0ZW0udWlkO1xuICAgICAgICAgIGFjY291bnQudGl0bGUgPSBpdGVtLnRpdGxlO1xuICAgICAgICAgIGFjY291bnQuYXBwZW5kaXggPSBpdGVtLmFwcGVuZGl4O1xuICAgICAgICAgIGFjY291bnQudXVpZCA9IGl0ZW0udXVpZDtcbiAgICAgICAgICByZXR1cm4gYWNjb3VudDtcbiAgICAgICAgfSlcbiAgICBcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBBY2NvdW50U2VydmljZVxuIiwiaW1wb3J0IHsgQXN5bmNQYWdpbmF0ZSB9IGZyb20gXCJyZWFjdC1zZWxlY3QtYXN5bmMtcGFnaW5hdGVcIlxuaW1wb3J0IEFjY291bnRTZXJ2aWNlIGZyb20gJy4uLy4uL3NlcnZpY2VzL2FjY291bnQnXG5pbXBvcnQgeyBjb250YWluZXIgfSBmcm9tICd0c3lyaW5nZS1uZW8nXG5pbXBvcnQgT3JkZXJTdGF0ZSBmcm9tICcuLi8uLi9zdGF0ZS9vcmRlcidcbmltcG9ydCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCB7IFNob3AgfSBmcm9tICcuLi8uLi9tb2RlbC9zaG9wJ1xuaW1wb3J0IE9yZGVyIGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiXG5pbXBvcnQgeyBTZWxlY3RMYWJlbCB9IGZyb20gXCIuLi9iYXNlL1NlbGVjdExhYmVsXCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmNvbnN0IEFjY291bnRTZWxlY3RDb21wb25lbnQgPSAoe3Nob3AsIG9yZGVyfSkgPT4ge1xuICAgICAgXG4gICAgY29uc3QgW3Nob3BVdWlkLCBzZXRTaG9wVXVpZF0gPSB1c2VTdGF0ZShudWxsKVxuXG4gICAgY29uc3QgW2FjY291bnQsIHNldEFjY291bnRdID0gdXNlU3RhdGUoMClcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgc2V0U2hvcFV1aWQoc2hvcC51dWlkKVxuICAgIH0sIFtzaG9wLnV1aWRdKVxuXG4gICAgY29uc3Qgb3JkZXJTdGF0ZTogT3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpXG5cbiAgICBjb25zdCBsb2FkT3B0aW9ucyA9IGFzeW5jIChzZWFyY2hRdWVyeSwgbG9hZGVkT3B0aW9ucykgPT4ge1xuXG4gICAgICAgIGNvbnN0IGFjY291bnRfc2VydmljZSA9IG5ldyBBY2NvdW50U2VydmljZSgpXG4gICAgXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBhY2NvdW50X3NlcnZpY2UuZ2V0QWNjb3VudHMoc2hvcClcbiAgICBcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvcHRpb25zOiBkYXRhLFxuICAgICAgICAgIGhhc01vcmU6IGZhbHNlLFxuICAgICAgICB9IFxuICAgICAgfVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgc2V0QWNjb3VudChvcmRlci5hY2NvdW50LnV1aWQpXG4gICAgfSwgW29yZGVyLmFjY291bnRdKVxuXG4gICAgY29uc3Qgb25DaGFuZ2UgPSAob3B0aW9uKSA9PiB7XG4gICAgICAgIG9yZGVyLmFjY291bnQgPSBvcHRpb25cbiAgICAgICAgbGV0IG9yZGVyT2JqID0gb3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS5nZXRWYWx1ZSgpXG4gICAgICAgIG9yZGVyT2JqLmFjY291bnQgPSBvcHRpb25cbiAgICAgICAgb3JkZXJTdGF0ZS5zZXRDdXJyZW50T3JkZXIob3JkZXJPYmopXG4gICAgICAgIHNldEFjY291bnQob3B0aW9uLnVpZClcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuXG4gICAgICAgICAgICAgPEFzeW5jUGFnaW5hdGVcbiAgICAgICAgICAgICAgICBkZWZhdWx0T3B0aW9uc1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YWNjb3VudCA9PSAwID8gXCJib3JkZXIgYm9yZGVyLWRhbmdlclwiIDogXCJcIn1gfVxuICAgICAgICAgICAgICAgIGtleT17SlNPTi5zdHJpbmdpZnkoc2hvcFV1aWQpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17b3JkZXIuYWNjb3VudH1cbiAgICAgICAgICAgICAgICBjb21wb25lbnRzPXt7Q29udHJvbDogU2VsZWN0TGFiZWx9fVxuICAgICAgICAgICAgICAgIG5hbWU9eydGaXJtYSd9XG4gICAgICAgICAgICAgICAgbG9hZE9wdGlvbnM9e2xvYWRPcHRpb25zfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPScnXG4gICAgICAgICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9eyhvcHRpb24pID0+IG9wdGlvbi51dWlkfVxuICAgICAgICAgICAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiBvcHRpb24udGl0bGV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgICAgIGlzU2VhcmNoYWJsZT17dHJ1ZX1cbiAgICAgICAgICAgIC8+XG4gICAgKSAgXG59IFxuXG5BY2NvdW50U2VsZWN0Q29tcG9uZW50LnByb3BUeXBlcyA9IHtcbiAgc2hvcDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2hvcCksXG4gIG9yZGVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihPcmRlciksXG59XG5cbmV4cG9ydCBkZWZhdWx0IEFjY291bnRTZWxlY3RDb21wb25lbnRcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgQ29udGFjdFNlbGVjdCBmcm9tICcuL0NvbnRhY3RTZWxlY3QnXG5pbXBvcnQgQWRkcmVzc1NlbGVjdCBmcm9tICcuL0FkZHJlc3NTZWxlY3QnXG5pbXBvcnQge0NvbnRhY3R9IGZyb20gJy4uLy4uL21vZGVsL2NvbnRhY3QnXG5pbXBvcnQge0FkZHJlc3N9IGZyb20gJy4uLy4uL21vZGVsL2FkZHJlc3MnXG5pbXBvcnQge3VzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IE9yZGVyU3RhdGUgZnJvbSAnLi4vLi4vc3RhdGUvb3JkZXInXG5pbXBvcnQge2NvbnRhaW5lcn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiXG5pbXBvcnQgQWNjb3VudFNlbGVjdENvbXBvbmVudCBmcm9tICcuLi9hY2NvdW50L0FjY291bnRTZWxlY3RDb21wb25lbnQnXG5pbXBvcnQgT3JkZXIgZnJvbSAnLi4vLi4vbW9kZWwvb3JkZXInXG5pbXBvcnQgeyBTaG9wIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2hvcCdcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgQ29udGFjdENvbXBvbmVudCA9ICh7b3JkZXIsIHNob3B9KSA9PiB7XG5cbiAgICBsZXQgb3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpXG5cbiAgICBjb25zdCBbY29udGFjdCwgc2V0Q29udGFjdF0gPSB1c2VTdGF0ZTxDb250YWN0PihuZXcgQ29udGFjdCgpKVxuXG4gICAgY29uc3QgY2hhbmdlQWRkcmVzcyA9IChhZGRyZXNzOiBBZGRyZXNzLCB0eXBlOiBOdW1iZXIpID0+IHtcbiAgICAgICAgaWYodHlwZSA9PSAxKSB7XG4gICAgICAgICAgICBvcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLnZhbHVlLmludm9pY2VBZGRyZXNzID0gYWRkcmVzc1xuICAgICAgICAgICAgb3JkZXIuaW52b2ljZUFkZHJlc3MgPSBhZGRyZXNzXG4gICAgICAgIH1cbiAgICAgICAgaWYodHlwZSA9PSAyKSB7XG4gICAgICAgICAgICBvcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLnZhbHVlLmRlbGl2ZXJ5QWRkcmVzcyA9IGFkZHJlc3NcbiAgICAgICAgICAgIG9yZGVyLmRlbGl2ZXJ5QWRkcmVzcyA9IGFkZHJlc3NcbiAgICAgICAgfVxuICAgICAgICBpZih0eXBlID09IDMpIHtcbiAgICAgICAgICAgIG9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkudmFsdWUuc2VuZGVyQWRkcmVzcyA9IGFkZHJlc3NcbiAgICAgICAgICAgIG9yZGVyLnNlbmRlckFkZHJlc3MgPSBhZGRyZXNzXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q29udGFjdFNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9wPXtzaG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtzZXRDb250YWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QWNjb3VudFNlbGVjdENvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3A9e3Nob3B9IG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICB7IG9yZGVyLmNvbnRhY3QudXVpZCAhPSBcIlwiICYmIDxBZGRyZXNzU2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzPXtvcmRlci5pbnZvaWNlQWRkcmVzc31cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhY3Q9e29yZGVyLmNvbnRhY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VBZGRyZXNzPXtjaGFuZ2VBZGRyZXNzfVxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0nUmVjaG51bmdzYWRyZXNzZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG9wPXtzaG9wfVxuICAgICAgICAgICAgICAgICAgICAvPiB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgeyBvcmRlci5jb250YWN0LnV1aWQgIT0gXCJcIiAmJiA8QWRkcmVzc1NlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcz17b3JkZXIuZGVsaXZlcnlBZGRyZXNzfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFjdD17b3JkZXIuY29udGFjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZUFkZHJlc3M9e2NoYW5nZUFkZHJlc3N9XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSdMaWVmZXJhZHJlc3NlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT17Mn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3A9e3Nob3B9XG4gICAgICAgICAgICAgICAgICAgIC8+IH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICB7IG9yZGVyLmNvbnRhY3QudXVpZCAhPSBcIlwiICYmIDxBZGRyZXNzU2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzPXtvcmRlci5zZW5kZXJBZGRyZXNzfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlQWRkcmVzcz17Y2hhbmdlQWRkcmVzc31cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhY3Q9e29yZGVyLmNvbnRhY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSdBYnNlbmRlcmFkcmVzc2UnXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXszfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvcD17c2hvcH1cbiAgICAgICAgICAgICAgICAgICAgLz4gfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvPlxuICAgICkgIFxufVxuXG5Db250YWN0Q29tcG9uZW50LnByb3BUeXBlcyA9IHtcbiAgICBvcmRlcjogUHJvcFR5cGVzLmluc3RhbmNlT2YoT3JkZXIpLFxuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IENvbnRhY3RDb21wb25lbnRcbiIsImltcG9ydCBTZWxlY3QgZnJvbSAncmVhY3Qtc2VsZWN0J1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNvbnRhaW5lciB9IGZyb20gJ3RzeXJpbmdlLW5lbydcbmltcG9ydCBPcmRlclN0YXRlIGZyb20gJy4uLy4uL3N0YXRlL29yZGVyJ1xuaW1wb3J0IHsgU2VsZWN0TGFiZWwgfSBmcm9tICcuLi9iYXNlL1NlbGVjdExhYmVsJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBUeXBlU2VsZWN0Q29tcG9uZW50ID0gKHtvcmRlcn0pID0+IHtcbiAgICBcbiAgICBjb25zdCBbdHlwZSwgc2V0VHlwZV0gPSB1c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBvcmRlclN0YXRlOiBPcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSk7XG5cbiAgICBjb25zdCBvcHRpb25zID0gW1xuICAgICAgICB7IHZhbHVlOiAxLCBsYWJlbDogJ0F1ZnRyYWcnIH0sXG4gICAgICAgIHsgdmFsdWU6IDIsIGxhYmVsOiAnQW5nZWJvdCcgfSxcbiAgICAgICAgeyB2YWx1ZTogMywgbGFiZWw6ICdTdG9ybm8nIH0sXG4gICAgICAgIHsgdmFsdWU6IDQsIGxhYmVsOiAnR3V0c2NocmlmdCcgfSxcbiAgICAgICAgeyB2YWx1ZTogNSwgbGFiZWw6ICdSZWNobnVuZycgfSxcbiAgICAgICAgeyB2YWx1ZTogNiwgbGFiZWw6ICdUZWlscmVjaG51bmcnIH0sXG4gICAgICAgIHsgdmFsdWU6IDcsIGxhYmVsOiAnVGVpbHN0b3JubycgfSxcbiAgICBdO1xuXG4gICAgY29uc3Qgb25DaGFuZ2UgPSAob3B0aW9uKSA9PiB7XG4gICAgICAgIGxldCBvcmRlciA9IG9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkudmFsdWU7XG4gICAgICAgIG9yZGVyLnR5cGUgPSBvcHRpb24udmFsdWU7XG4gICAgICAgIG9yZGVyU3RhdGUuc2V0Q3VycmVudE9yZGVyKG9yZGVyKTtcbiAgICAgICAgc2V0VHlwZShvcHRpb24pO1xuICAgIH07XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzZXRUeXBlKG9yZGVyLnR5cGUpO1xuICAgIH0sIFtvcmRlci50eXBlXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7dHlwZSA9PSAwID8gXCJib3JkZXIgYm9yZGVyLWRhbmdlclwiIDogXCJcIn1gfVxuICAgICAgICAgICAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtvcHRpb25zLmZpbHRlcigoZSkgPT4gZS52YWx1ZSA9PSB0eXBlKS5wb3AoKX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9ucy5maWx0ZXIoKGUpID0+IGUudmFsdWUgPT0gdHlwZSkucG9wKCl9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgICAgIGNvbXBvbmVudHM9e3sgQ29udHJvbDogU2VsZWN0TGFiZWwgfX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlwiXG4gICAgICAgICAgICAgICAgbmFtZT1cIlR5cFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICApOyAgXG59IFxuXG5leHBvcnQgZGVmYXVsdCBUeXBlU2VsZWN0Q29tcG9uZW50O1xuIiwiaW1wb3J0IHthdXRvSW5qZWN0YWJsZSwgc2luZ2xldG9ufSBmcm9tIFwidHN5cmluZ2UtbmVvXCJcbmltcG9ydCB7IFRva2VuIH0gZnJvbSBcIi4vdG9rZW5cIlxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJ1xuaW1wb3J0IHsgU2hvcCB9IGZyb20gXCIuLi9tb2RlbC9zaG9wXCJcblxuQHNpbmdsZXRvbigpXG5AYXV0b0luamVjdGFibGUoKVxuY2xhc3MgU2hvcFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcih0b2tlbj86IFRva2VuKSB7XG4gICAgY29uc29sZS5sb2codG9rZW4pXG4gIH1cblxuICBhc3luYyBnZXRTaG9wcygpOiBQcm9taXNlPFNob3BbXT4ge1xuXG4gICAgcmV0dXJuIGF3YWl0IGF4aW9zLmdldCgnL2FwcHMvYXBpL3Nob3BzJywge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMudG9rZW4uY3VycmVudFRva2VuXG4gICAgICAgIH1cbiAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICBsZXQgc2hvcCA9IG5ldyBTaG9wKClcbiAgICAgICAgICBzaG9wLnBhcnNlRnJvbUpzb24oe3Nob3A6IGl0ZW19KVxuICAgICAgICAgIHJldHVybiBzaG9wXG4gICAgICAgIH0pXG4gICAgXG4gICAgfSlcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTaG9wU2VydmljZVxuIiwiaW1wb3J0IHsgQXN5bmNQYWdpbmF0ZSB9IGZyb20gXCJyZWFjdC1zZWxlY3QtYXN5bmMtcGFnaW5hdGVcIlxuaW1wb3J0IFNob3BTZXJ2aWNlIGZyb20gJy4uLy4uL3NlcnZpY2VzL3Nob3AnXG5pbXBvcnQgeyBjb250YWluZXIgfSBmcm9tICd0c3lyaW5nZS1uZW8nXG5pbXBvcnQgT3JkZXJTdGF0ZSBmcm9tICcuLi8uLi9zdGF0ZS9vcmRlcidcbmltcG9ydCB7IFNlbGVjdExhYmVsIH0gZnJvbSAnLi4vYmFzZS9TZWxlY3RMYWJlbCdcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgU2hvcFNlbGVjdENvbXBvbmVudCA9IChwcm9wcykgPT4ge1xuICAgIFxuICAgIGNvbnN0IG9yZGVyU3RhdGUgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclN0YXRlKVxuXG4gICAgY29uc3Qgc2hvcF9zZXJ2aWNlID0gY29udGFpbmVyLnJlc29sdmUoU2hvcFNlcnZpY2UpXG4gICAgY29uc3QgdG9rZW5fc2VydmljZSA9IGNvbnRhaW5lci5yZXNvbHZlKFRva2VuKVxuXG4gICAgY29uc3QgbG9hZE9wdGlvbnMgPSBhc3luYyAoc2VhcmNoUXVlcnksIGxvYWRlZE9wdGlvbnMpID0+IHtcblxuICAgICAgICBjb25zb2xlLmxvZyh0b2tlbl9zZXJ2aWNlKVxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgc2hvcF9zZXJ2aWNlLmdldFNob3BzKClcbiAgICBcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvcHRpb25zOiBkYXRhLFxuICAgICAgICAgIGhhc01vcmU6IGZhbHNlLFxuICAgICAgICB9IFxuICAgICAgfVxuICAgIFxuXG4gICAgY29uc3Qgb25DaGFuZ2UgPSAob3B0aW9uKSA9PiB7XG4gICAgICAgIG9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkudmFsdWUuc2hvcCA9IG9wdGlvblxuICAgICAgICBwcm9wcy5jaGFuZ2Uob3B0aW9uKVxuICAgICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICA8QXN5bmNQYWdpbmF0ZVxuICAgICAgICAgICAgICAgIGRlZmF1bHRPcHRpb25zXG4gICAgICAgICAgICAgICAgdmFsdWU9e3Byb3BzLnNob3B9XG4gICAgICAgICAgICAgICAgY29tcG9uZW50cz17eyBDb250cm9sOiBTZWxlY3RMYWJlbCB9fVxuICAgICAgICAgICAgICAgIGxvYWRPcHRpb25zPXtsb2FkT3B0aW9uc31cbiAgICAgICAgICAgICAgICBnZXRPcHRpb25WYWx1ZT17KG9wdGlvbikgPT4gb3B0aW9uLmlkfVxuICAgICAgICAgICAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiBvcHRpb24ubmFtZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgICAgICAgaXNTZWFyY2hhYmxlPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3Byb3BzLnNob3AudXVpZCA9PSBcIlwiID8gXCJib3JkZXIgYm9yZGVyLWRhbmdlclwiIDogXCJib3JkZXIgYm9yZGVyLXNsYXRlLTIwMFwifWB9XG4gICAgICAgICAgICAgICAgbmFtZT0nU2hvcCdcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgKSAgXG59IFxuXG5leHBvcnQgZGVmYXVsdCBTaG9wU2VsZWN0Q29tcG9uZW50XG4iLCJpbXBvcnQge3VzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY29udGFpbmVyIH0gZnJvbSAndHN5cmluZ2UtbmVvJ1xuaW1wb3J0IE9yZGVyU3RhdGUgZnJvbScuLi8uLi9zdGF0ZS9vcmRlcidcbmltcG9ydCB7IFNlbGVjdExhYmVsIH0gZnJvbSAnLi4vYmFzZS9TZWxlY3RMYWJlbCdcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgRHJhZnRDb21wb25lbnQgPSAoe29yZGVyfSkgPT4ge1xuICAgIFxuICAgIGNvbnN0IFtkcmFmdCwgc2V0RHJhZnRdID0gdXNlU3RhdGUodHJ1ZSlcbiAgICBjb25zdCBvcmRlclN0YXRlOiBPcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSlcblxuICAgIGNvbnN0IG9uQ2hhbmdlID0gKG9wdGlvbikgPT4ge1xuICAgICAgICBsZXQgb3JkZXJPYmogPSBvcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLnZhbHVlXG4gICAgICAgIG9yZGVyT2JqLmRyYWZ0ID0gIWRyYWZ0XG4gICAgICAgIG9yZGVyU3RhdGUuc2V0Q3VycmVudE9yZGVyKG9yZGVyT2JqKVxuICAgICAgICBzZXREcmFmdCghZHJhZnQpXG4gICAgfVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgc2V0RHJhZnQob3JkZXIuZHJhZnQpXG4gICAgfSwgW29yZGVyLmRyYWZ0XSlcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ2FwLTJcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIHZhbHVlPVwiMVwiIGNsYXNzTmFtZT1cInNyLW9ubHkgcGVlclwiIGRlZmF1bHRDaGVja2VkPXtkcmFmdH0gb25DaGFuZ2U9eyhlKSA9PiBvbkNoYW5nZShlKX0vPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHctMTEgaC02IGJnLWdyYXktMjAwIHJvdW5kZWQtZnVsbCBwZWVyIHBlZXItZm9jdXM6cmluZy00IHBlZXItZm9jdXM6cmluZy1ibHVlLTMwMCBkYXJrOnBlZXItZm9jdXM6cmluZy1ibHVlLTgwMCBkYXJrOmJnLWdyYXktNzAwIHBlZXItY2hlY2tlZDphZnRlcjp0cmFuc2xhdGUteC1mdWxsIHJ0bDpwZWVyLWNoZWNrZWQ6YWZ0ZXI6LXRyYW5zbGF0ZS14LWZ1bGwgcGVlci1jaGVja2VkOmFmdGVyOmJvcmRlci13aGl0ZSBhZnRlcjpjb250ZW50LVsnJ10gYWZ0ZXI6YWJzb2x1dGUgYWZ0ZXI6dG9wLTAuNSBhZnRlcjpzdGFydC1bMnB4XSBhZnRlcjpiZy13aGl0ZSBhZnRlcjpib3JkZXItZ3JheS0zMDAgYWZ0ZXI6Ym9yZGVyIGFmdGVyOnJvdW5kZWQtZnVsbCBhZnRlcjpoLTUgYWZ0ZXI6dy01IGFmdGVyOnRyYW5zaXRpb24tYWxsIGRhcms6Ym9yZGVyLWdyYXktNjAwIHBlZXItY2hlY2tlZDpiZy1ibHVlLTYwMFwiPjwvZGl2PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtcy0zIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtZ3JheS0zMDBcIj5FbnR3dXJmPC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgKSAgXG59IFxuXG5leHBvcnQgZGVmYXVsdCBEcmFmdENvbXBvbmVudFxuIiwiaW1wb3J0IHthdXRvSW5qZWN0YWJsZSwgc2luZ2xldG9ufSBmcm9tIFwidHN5cmluZ2UtbmVvXCI7XG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gXCIuL3Rva2VuXCI7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IE9yZGVyIGZyb20gXCIuLi9tb2RlbC9vcmRlclwiO1xuXG5Ac2luZ2xldG9uKClcbkBhdXRvSW5qZWN0YWJsZSgpXG5jbGFzcyBPcmRlclNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdG9rZW4/OiBUb2tlbikge31cblxuICAgIGFzeW5jIGdldE9yZGVyKHV1aWQ6IFN0cmluZyk6IFByb21pc2U8T3JkZXI+IHtcblxuICAgICAgICByZXR1cm4gYXdhaXQgYXhpb3MucG9zdCgnL2FwcHMvYXBpL29yZGVyL2dldG9uZWJ5dXVpZCcsIHt1dWlkOiB1dWlkfSAse1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcblxuICAgICAgICAgICAgbGV0IG9yZGVyID0gbmV3IE9yZGVyKCk7XG4gICAgICAgICAgICBvcmRlci5wYXJzZUZyb21Kc29uKHJlc3BvbnNlLmRhdGEpO1xuXG4gICAgICAgICAgICByZXR1cm4gb3JkZXI7XG4gICAgICAgIH0pO1xuICAgIH07XG5cblxuICAgIGFzeW5jIHNhdmVPcmRlcihvcmRlcjogT3JkZXIpOiBQcm9taXNlPE9yZGVyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCBheGlvcy5wb3N0KCcvYXBwcy9hcGkvb3JkZXIvY3JlYXRlJywgb3JkZXIgLHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMudG9rZW4/LmN1cnJlbnRUb2tlblxuICAgICAgICAgICAgfVxuICAgICAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNhbGNPcmRlcihvcmRlcjogT3JkZXIpOiBQcm9taXNlPE9yZGVyPiB7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IGF4aW9zLnBvc3QoJy9hcHBzL2FwaS9vcmRlci9jYWxjJywgb3JkZXIgLHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMudG9rZW4/LmN1cnJlbnRUb2tlblxuICAgICAgICAgICAgfVxuICAgICAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU2VydmljZVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbnRlcmZhY2UgSVByb3BzIHtcbiAgcHJpY2U6IG51bWJlcjtcbn1cblxuY29uc3QgQ3VycmVuY3k6IFJlYWN0LkZDPElQcm9wcz4gPSAoeyBwcmljZSB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICB7SW50bC5OdW1iZXJGb3JtYXQoJ2RlLURFJywge1xuICAgICAgc3R5bGU6ICdjdXJyZW5jeScsIFxuICAgICAgY3VycmVuY3k6ICdFVVInXG4gICAgICB9KS5mb3JtYXQocHJpY2UvMTAwKX1cbiAgICA8Lz5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ3VycmVuY3k7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IE9yZGVyIGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiXG5pbXBvcnQge2NvbnRhaW5lcn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiXG5pbXBvcnQgT3JkZXJTdGF0ZSBmcm9tIFwiLi4vLi4vc3RhdGUvb3JkZXJcIlxuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcydcbmltcG9ydCBPcmRlclNlcnZpY2UgZnJvbSBcIi4uLy4uL3NlcnZpY2VzL29yZGVyXCJcbmltcG9ydCBDdXJyZW5jeSBmcm9tIFwiLi4vYmFzZS9DdXJyZW5jeVwiXG5cbnR5cGUgTXlTdGF0ZSA9IHtcbiAgICBvcmRlcjogT3JkZXIgLy8gbGlrZSB0aGlzXG59XG5cbmNsYXNzIENhbGNDb21wb25lbnQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8eyAgfSxNeVN0YXRlPiB7XG4gICAgb3JkZXJTdGF0ZTogT3JkZXJTdGF0ZVxuICAgIG9yZGVyU2VydmljZTogT3JkZXJTZXJ2aWNlXG5cbiAgICBzdGF0ZTogTXlTdGF0ZSA9IHtcbiAgICAgICAgb3JkZXI6IG5ldyBPcmRlcigpXG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpXG4gICAgICAgIHRoaXMub3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpXG4gICAgICAgIHRoaXMub3JkZXJTZXJ2aWNlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTZXJ2aWNlKVxuICAgIH1cblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICB0aGlzLm9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkucGlwZShkZWJvdW5jZVRpbWUoMjAwMCkpLnN1YnNjcmliZSgoZSkgPT4gdGhpcy5jYWxjKGUpKVxuICAgIH1cblxuICAgIGFzeW5jIGNhbGMoZTogT3JkZXIpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMub3JkZXJTZXJ2aWNlLmNhbGNPcmRlcihlKVxuICAgICAgICB0aGlzLnNldFN0YXRlKCgpID0+ICh7XG4gICAgICAgICAgICBvcmRlcjogcmVzdWx0LFxuICAgICAgICB9KSlcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8aDM+XG4gICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzTmFtZT1cInRleHQtYm9keS1zZWNvbmRhcnlcIj4gTmV0dG86IDxDdXJyZW5jeSBwcmljZT17dGhpcy5zdGF0ZS5vcmRlci5uZXR9IC8+ICsgTXdTdC46IDxDdXJyZW5jeSBwcmljZT17dGhpcy5zdGF0ZS5vcmRlci52YXR9IC8+ID08L3NtYWxsPiBCcnV0dG86IDxDdXJyZW5jeSBwcmljZT17dGhpcy5zdGF0ZS5vcmRlci5ncm9zc30gLz5cbiAgICAgICAgICAgIDwvaDM+XG4gICAgICAgIClcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENhbGNDb21wb25lbnRcbiIsImltcG9ydCBUeXBlU2VsZWN0Q29tcG9uZW50IGZyb20gJy4uL3R5cGUvVHlwZVNlbGVjdENvbXBvbmVudCdcbmltcG9ydCBTaG9wU2VsZWN0Q29tcG9uZW50IGZyb20gJy4uL3Nob3AvU2hvcFNlbGVjdENvbXBvbmVudCdcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQge1Nob3B9IGZyb20gXCIuLi8uLi9tb2RlbC9zaG9wXCJcbmltcG9ydCBEcmFmdENvbXBvbmVudCBmcm9tIFwiLi4vZHJhZnQvRHJhZnRDb21wb25lbnRcIlxuaW1wb3J0IE9yZGVyIGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiXG5pbXBvcnQgQ2FsY0NvbXBvbmVudCBmcm9tICcuLi9jYWxjL0NhbGNDb21wb25lbnQnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IFRvcEJhckNvbXBvbmVudCA9ICh7c2hvcCwgb3JkZXIsIGNoYW5nZX0pID0+IHtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtM1wiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgPERyYWZ0Q29tcG9uZW50IG9yZGVyPXtvcmRlcn0gLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgIDxUeXBlU2VsZWN0Q29tcG9uZW50IG9yZGVyPXtvcmRlcn0gLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICA8U2hvcFNlbGVjdENvbXBvbmVudCBzaG9wPXtzaG9wfSBjaGFuZ2U9e2NoYW5nZX0gLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8Q2FsY0NvbXBvbmVudCAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICApICBcbn1cblxuVG9wQmFyQ29tcG9uZW50LnByb3BUeXBlcyA9IHtcbiAgICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcbiAgICBvcmRlcjogUHJvcFR5cGVzLmluc3RhbmNlT2YoT3JkZXIpLFxuICAgIGNoYW5nZTogUHJvcFR5cGVzLmZ1bmNcbn1cblxuZXhwb3J0IGRlZmF1bHQgVG9wQmFyQ29tcG9uZW50XG4iLCJleHBvcnQgY2xhc3MgUHJvZHVjdEdyb3VwIHtcbiAgICBpZDogTnVtYmVyID0gMFxuICAgIGxhYmVsOiBTdHJpbmcgPSBcIlwiXG4gICAgdXVpZDogU3RyaW5nID0gXCJcIlxuICAgIC8vb3B0aW9uczogUHJvZHVjdEdyb3VwW10gPSBbXVxufSIsImltcG9ydCB7YXV0b0luamVjdGFibGUsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiLi90b2tlblwiO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IFNob3AgfSBmcm9tIFwiLi4vbW9kZWwvc2hvcFwiO1xuaW1wb3J0IHtQcm9kdWN0R3JvdXB9IGZyb20gXCIuLi9tb2RlbC9wcm9kdWN0R3JvdXBcIjtcblxuQHNpbmdsZXRvbigpXG5AYXV0b0luamVjdGFibGUoKVxuY2xhc3MgUHJvZHVjdEdyb3VwU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdG9rZW4/OiBUb2tlbikge31cblxuICBhc3luYyBnZXRQcm9kdWN0R3JvdXBzKHNlYXJjaFF1ZXJ5OiBTdHJpbmcsIHNob3A6IFNob3ApOiBQcm9taXNlPFByb2R1Y3RHcm91cFtdPiB7XG5cbiAgICByZXR1cm4gYXdhaXQgYXhpb3MuZ2V0KCcvYXBwcy9hcGkvcHJvZHVjdGdyb3VwL2dldHRyZWUvJyArIHNob3AudXVpZCArICc/dGVybT0nICsgc2VhcmNoUXVlcnksIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLnRva2VuLmN1cnJlbnRUb2tlblxuICAgICAgICB9XG4gICAgfSkudGhlbigoIHJlc3BvbnNlICkgPT4ge1xuXG4gICAgICAgIGxldCB0ZW1wOiBQcm9kdWN0R3JvdXBbXSA9IFtdO1xuXG4gICAgICAgIHJlc3BvbnNlLmRhdGEuZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgIGxldCBwZyA9IG5ldyBQcm9kdWN0R3JvdXA7XG4gICAgICAgICAgcGcuaWQgPSBpdGVtLmlkO1xuICAgICAgICAgIHBnLmxhYmVsID0gaXRlbS50aXRsZTtcbiAgICAgICAgICBwZy51dWlkID0gaXRlbS51dWlkO1xuICAgICAgICAgIFxuICAgICAgICAgIHRlbXAucHVzaChwZyk7XG5cbiAgICAgICAgICBpdGVtLmNoaWxkcmVuLm1hcCgoc3ViOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgbGV0IHNwZyA9IG5ldyBQcm9kdWN0R3JvdXA7XG4gICAgICAgICAgICAgIHNwZy5pZCA9IHN1Yi5pZDtcbiAgICAgICAgICAgICAgc3BnLmxhYmVsID0gXCItLSBcIiArIHN1Yi50aXRsZTtcbiAgICAgICAgICAgICAgc3BnLnV1aWQgPSBzdWIudXVpZDtcbiAgICAgICAgICAgICAgdGVtcC5wdXNoKHNwZyk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4gcGc7XG4gICAgICAgIH0pXG4gICAgXG4gICAgICAgIHJldHVybiB0ZW1wO1xuICAgIH0pXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHJvZHVjdEdyb3VwU2VydmljZVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2RlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eScpO1xudmFyIF9vYmplY3RTcHJlYWQgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFNwcmVhZDInKTtcbnZhciBfc2xpY2VkVG9BcnJheSA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheScpO1xudmFyIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXMnKTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG52YXIgaW5kZXggPSByZXF1aXJlKCcuL2luZGV4LTY2NWM0ZWQ4LmNqcy5wcm9kLmpzJyk7XG5cbnZhciBfZXhjbHVkZWQgPSBbXCJkZWZhdWx0T3B0aW9uc1wiLCBcImNhY2hlT3B0aW9uc1wiLCBcImxvYWRPcHRpb25zXCIsIFwib3B0aW9uc1wiLCBcImlzTG9hZGluZ1wiLCBcIm9uSW5wdXRDaGFuZ2VcIiwgXCJmaWx0ZXJPcHRpb25cIl07XG5mdW5jdGlvbiB1c2VBc3luYyhfcmVmKSB7XG4gIHZhciBfcmVmJGRlZmF1bHRPcHRpb25zID0gX3JlZi5kZWZhdWx0T3B0aW9ucyxcbiAgICBwcm9wc0RlZmF1bHRPcHRpb25zID0gX3JlZiRkZWZhdWx0T3B0aW9ucyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcmVmJGRlZmF1bHRPcHRpb25zLFxuICAgIF9yZWYkY2FjaGVPcHRpb25zID0gX3JlZi5jYWNoZU9wdGlvbnMsXG4gICAgY2FjaGVPcHRpb25zID0gX3JlZiRjYWNoZU9wdGlvbnMgPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZiRjYWNoZU9wdGlvbnMsXG4gICAgcHJvcHNMb2FkT3B0aW9ucyA9IF9yZWYubG9hZE9wdGlvbnM7XG4gICAgX3JlZi5vcHRpb25zO1xuICAgIHZhciBfcmVmJGlzTG9hZGluZyA9IF9yZWYuaXNMb2FkaW5nLFxuICAgIHByb3BzSXNMb2FkaW5nID0gX3JlZiRpc0xvYWRpbmcgPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZiRpc0xvYWRpbmcsXG4gICAgcHJvcHNPbklucHV0Q2hhbmdlID0gX3JlZi5vbklucHV0Q2hhbmdlLFxuICAgIF9yZWYkZmlsdGVyT3B0aW9uID0gX3JlZi5maWx0ZXJPcHRpb24sXG4gICAgZmlsdGVyT3B0aW9uID0gX3JlZiRmaWx0ZXJPcHRpb24gPT09IHZvaWQgMCA/IG51bGwgOiBfcmVmJGZpbHRlck9wdGlvbixcbiAgICByZXN0U2VsZWN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgdmFyIHByb3BzSW5wdXRWYWx1ZSA9IHJlc3RTZWxlY3RQcm9wcy5pbnB1dFZhbHVlO1xuICB2YXIgbGFzdFJlcXVlc3QgPSBSZWFjdC51c2VSZWYodW5kZWZpbmVkKTtcbiAgdmFyIG1vdW50ZWQgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICB2YXIgX3VzZVN0YXRlID0gUmVhY3QudXNlU3RhdGUoQXJyYXkuaXNBcnJheShwcm9wc0RlZmF1bHRPcHRpb25zKSA/IHByb3BzRGVmYXVsdE9wdGlvbnMgOiB1bmRlZmluZWQpLFxuICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgIGRlZmF1bHRPcHRpb25zID0gX3VzZVN0YXRlMlswXSxcbiAgICBzZXREZWZhdWx0T3B0aW9ucyA9IF91c2VTdGF0ZTJbMV07XG4gIHZhciBfdXNlU3RhdGUzID0gUmVhY3QudXNlU3RhdGUodHlwZW9mIHByb3BzSW5wdXRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcgPyBwcm9wc0lucHV0VmFsdWUgOiAnJyksXG4gICAgX3VzZVN0YXRlNCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTMsIDIpLFxuICAgIHN0YXRlSW5wdXRWYWx1ZSA9IF91c2VTdGF0ZTRbMF0sXG4gICAgc2V0U3RhdGVJbnB1dFZhbHVlID0gX3VzZVN0YXRlNFsxXTtcbiAgdmFyIF91c2VTdGF0ZTUgPSBSZWFjdC51c2VTdGF0ZShwcm9wc0RlZmF1bHRPcHRpb25zID09PSB0cnVlKSxcbiAgICBfdXNlU3RhdGU2ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlNSwgMiksXG4gICAgaXNMb2FkaW5nID0gX3VzZVN0YXRlNlswXSxcbiAgICBzZXRJc0xvYWRpbmcgPSBfdXNlU3RhdGU2WzFdO1xuICB2YXIgX3VzZVN0YXRlNyA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksXG4gICAgX3VzZVN0YXRlOCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTcsIDIpLFxuICAgIGxvYWRlZElucHV0VmFsdWUgPSBfdXNlU3RhdGU4WzBdLFxuICAgIHNldExvYWRlZElucHV0VmFsdWUgPSBfdXNlU3RhdGU4WzFdO1xuICB2YXIgX3VzZVN0YXRlOSA9IFJlYWN0LnVzZVN0YXRlKFtdKSxcbiAgICBfdXNlU3RhdGUxMCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTksIDIpLFxuICAgIGxvYWRlZE9wdGlvbnMgPSBfdXNlU3RhdGUxMFswXSxcbiAgICBzZXRMb2FkZWRPcHRpb25zID0gX3VzZVN0YXRlMTBbMV07XG4gIHZhciBfdXNlU3RhdGUxMSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSxcbiAgICBfdXNlU3RhdGUxMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTExLCAyKSxcbiAgICBwYXNzRW1wdHlPcHRpb25zID0gX3VzZVN0YXRlMTJbMF0sXG4gICAgc2V0UGFzc0VtcHR5T3B0aW9ucyA9IF91c2VTdGF0ZTEyWzFdO1xuICB2YXIgX3VzZVN0YXRlMTMgPSBSZWFjdC51c2VTdGF0ZSh7fSksXG4gICAgX3VzZVN0YXRlMTQgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUxMywgMiksXG4gICAgb3B0aW9uc0NhY2hlID0gX3VzZVN0YXRlMTRbMF0sXG4gICAgc2V0T3B0aW9uc0NhY2hlID0gX3VzZVN0YXRlMTRbMV07XG4gIHZhciBfdXNlU3RhdGUxNSA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksXG4gICAgX3VzZVN0YXRlMTYgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUxNSwgMiksXG4gICAgcHJldkRlZmF1bHRPcHRpb25zID0gX3VzZVN0YXRlMTZbMF0sXG4gICAgc2V0UHJldkRlZmF1bHRPcHRpb25zID0gX3VzZVN0YXRlMTZbMV07XG4gIHZhciBfdXNlU3RhdGUxNyA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksXG4gICAgX3VzZVN0YXRlMTggPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUxNywgMiksXG4gICAgcHJldkNhY2hlT3B0aW9ucyA9IF91c2VTdGF0ZTE4WzBdLFxuICAgIHNldFByZXZDYWNoZU9wdGlvbnMgPSBfdXNlU3RhdGUxOFsxXTtcbiAgaWYgKGNhY2hlT3B0aW9ucyAhPT0gcHJldkNhY2hlT3B0aW9ucykge1xuICAgIHNldE9wdGlvbnNDYWNoZSh7fSk7XG4gICAgc2V0UHJldkNhY2hlT3B0aW9ucyhjYWNoZU9wdGlvbnMpO1xuICB9XG4gIGlmIChwcm9wc0RlZmF1bHRPcHRpb25zICE9PSBwcmV2RGVmYXVsdE9wdGlvbnMpIHtcbiAgICBzZXREZWZhdWx0T3B0aW9ucyhBcnJheS5pc0FycmF5KHByb3BzRGVmYXVsdE9wdGlvbnMpID8gcHJvcHNEZWZhdWx0T3B0aW9ucyA6IHVuZGVmaW5lZCk7XG4gICAgc2V0UHJldkRlZmF1bHRPcHRpb25zKHByb3BzRGVmYXVsdE9wdGlvbnMpO1xuICB9XG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgbW91bnRlZC5jdXJyZW50ID0gdHJ1ZTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgbW91bnRlZC5jdXJyZW50ID0gZmFsc2U7XG4gICAgfTtcbiAgfSwgW10pO1xuICB2YXIgbG9hZE9wdGlvbnMgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoaW5wdXRWYWx1ZSwgY2FsbGJhY2spIHtcbiAgICBpZiAoIXByb3BzTG9hZE9wdGlvbnMpIHJldHVybiBjYWxsYmFjaygpO1xuICAgIHZhciBsb2FkZXIgPSBwcm9wc0xvYWRPcHRpb25zKGlucHV0VmFsdWUsIGNhbGxiYWNrKTtcbiAgICBpZiAobG9hZGVyICYmIHR5cGVvZiBsb2FkZXIudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbG9hZGVyLnRoZW4oY2FsbGJhY2ssIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtwcm9wc0xvYWRPcHRpb25zXSk7XG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHByb3BzRGVmYXVsdE9wdGlvbnMgPT09IHRydWUpIHtcbiAgICAgIGxvYWRPcHRpb25zKHN0YXRlSW5wdXRWYWx1ZSwgZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFtb3VudGVkLmN1cnJlbnQpIHJldHVybjtcbiAgICAgICAgc2V0RGVmYXVsdE9wdGlvbnMob3B0aW9ucyB8fCBbXSk7XG4gICAgICAgIHNldElzTG9hZGluZyghIWxhc3RSZXF1ZXN0LmN1cnJlbnQpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIE5PVEU6IHRoaXMgZWZmZWN0IGlzIGRlc2lnbmVkIHRvIG9ubHkgcnVuIHdoZW4gdGhlIGNvbXBvbmVudCBtb3VudHMsXG4gICAgLy8gc28gd2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIGFueSBob29rIGRlcGVuZGVuY2llc1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW10pO1xuICB2YXIgb25JbnB1dENoYW5nZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChuZXdWYWx1ZSwgYWN0aW9uTWV0YSkge1xuICAgIHZhciBpbnB1dFZhbHVlID0gaW5kZXguaGFuZGxlSW5wdXRDaGFuZ2UobmV3VmFsdWUsIGFjdGlvbk1ldGEsIHByb3BzT25JbnB1dENoYW5nZSk7XG4gICAgaWYgKCFpbnB1dFZhbHVlKSB7XG4gICAgICBsYXN0UmVxdWVzdC5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgc2V0U3RhdGVJbnB1dFZhbHVlKCcnKTtcbiAgICAgIHNldExvYWRlZElucHV0VmFsdWUoJycpO1xuICAgICAgc2V0TG9hZGVkT3B0aW9ucyhbXSk7XG4gICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgc2V0UGFzc0VtcHR5T3B0aW9ucyhmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChjYWNoZU9wdGlvbnMgJiYgb3B0aW9uc0NhY2hlW2lucHV0VmFsdWVdKSB7XG4gICAgICBzZXRTdGF0ZUlucHV0VmFsdWUoaW5wdXRWYWx1ZSk7XG4gICAgICBzZXRMb2FkZWRJbnB1dFZhbHVlKGlucHV0VmFsdWUpO1xuICAgICAgc2V0TG9hZGVkT3B0aW9ucyhvcHRpb25zQ2FjaGVbaW5wdXRWYWx1ZV0pO1xuICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgIHNldFBhc3NFbXB0eU9wdGlvbnMoZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcmVxdWVzdCA9IGxhc3RSZXF1ZXN0LmN1cnJlbnQgPSB7fTtcbiAgICAgIHNldFN0YXRlSW5wdXRWYWx1ZShpbnB1dFZhbHVlKTtcbiAgICAgIHNldElzTG9hZGluZyh0cnVlKTtcbiAgICAgIHNldFBhc3NFbXB0eU9wdGlvbnMoIWxvYWRlZElucHV0VmFsdWUpO1xuICAgICAgbG9hZE9wdGlvbnMoaW5wdXRWYWx1ZSwgZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFtb3VudGVkKSByZXR1cm47XG4gICAgICAgIGlmIChyZXF1ZXN0ICE9PSBsYXN0UmVxdWVzdC5jdXJyZW50KSByZXR1cm47XG4gICAgICAgIGxhc3RSZXF1ZXN0LmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHNldElzTG9hZGluZyhmYWxzZSk7XG4gICAgICAgIHNldExvYWRlZElucHV0VmFsdWUoaW5wdXRWYWx1ZSk7XG4gICAgICAgIHNldExvYWRlZE9wdGlvbnMob3B0aW9ucyB8fCBbXSk7XG4gICAgICAgIHNldFBhc3NFbXB0eU9wdGlvbnMoZmFsc2UpO1xuICAgICAgICBzZXRPcHRpb25zQ2FjaGUob3B0aW9ucyA/IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgb3B0aW9uc0NhY2hlKSwge30sIF9kZWZpbmVQcm9wZXJ0eSh7fSwgaW5wdXRWYWx1ZSwgb3B0aW9ucykpIDogb3B0aW9uc0NhY2hlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2NhY2hlT3B0aW9ucywgbG9hZE9wdGlvbnMsIGxvYWRlZElucHV0VmFsdWUsIG9wdGlvbnNDYWNoZSwgcHJvcHNPbklucHV0Q2hhbmdlXSk7XG4gIHZhciBvcHRpb25zID0gcGFzc0VtcHR5T3B0aW9ucyA/IFtdIDogc3RhdGVJbnB1dFZhbHVlICYmIGxvYWRlZElucHV0VmFsdWUgPyBsb2FkZWRPcHRpb25zIDogZGVmYXVsdE9wdGlvbnMgfHwgW107XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RTZWxlY3RQcm9wcyksIHt9LCB7XG4gICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICBpc0xvYWRpbmc6IGlzTG9hZGluZyB8fCBwcm9wc0lzTG9hZGluZyxcbiAgICBvbklucHV0Q2hhbmdlOiBvbklucHV0Q2hhbmdlLFxuICAgIGZpbHRlck9wdGlvbjogZmlsdGVyT3B0aW9uXG4gIH0pO1xufVxuXG5leHBvcnRzLnVzZUFzeW5jID0gdXNlQXN5bmM7XG4iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbnZhciBfZXh0ZW5kcyA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcycpO1xudmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcbnZhciBTZWxlY3QgPSByZXF1aXJlKCcuLi8uLi9kaXN0L1NlbGVjdC0zNmQxNWY5My5janMucHJvZC5qcycpO1xudmFyIHVzZVN0YXRlTWFuYWdlciA9IHJlcXVpcmUoJy4uLy4uL2Rpc3QvdXNlU3RhdGVNYW5hZ2VyLWNlMjMwNjFjLmNqcy5wcm9kLmpzJyk7XG52YXIgdXNlQXN5bmMgPSByZXF1aXJlKCcuLi8uLi9kaXN0L3VzZUFzeW5jLWJlNjU5YTU3LmNqcy5wcm9kLmpzJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFNwcmVhZDInKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MnKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMnKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlU3VwZXInKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXknKTtcbnJlcXVpcmUoJy4uLy4uL2Rpc3QvaW5kZXgtNjY1YzRlZDguY2pzLnByb2QuanMnKTtcbnJlcXVpcmUoJ0BlbW90aW9uL3JlYWN0Jyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXknKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXMnKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbCcpO1xucmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eScpO1xucmVxdWlyZSgncmVhY3QtZG9tJyk7XG5yZXF1aXJlKCdAZmxvYXRpbmctdWkvZG9tJyk7XG5yZXF1aXJlKCd1c2UtaXNvbW9ycGhpYy1sYXlvdXQtZWZmZWN0Jyk7XG5yZXF1aXJlKCdtZW1vaXplLW9uZScpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcE5hbWVzcGFjZShlKSB7XG4gIGlmIChlICYmIGUuX19lc01vZHVsZSkgcmV0dXJuIGU7XG4gIHZhciBuID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgaWYgKGUpIHtcbiAgICBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICBpZiAoayAhPT0gJ2RlZmF1bHQnKSB7XG4gICAgICAgIHZhciBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCBrKTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIGssIGQuZ2V0ID8gZCA6IHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZVtrXTsgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBuW1wiZGVmYXVsdFwiXSA9IGU7XG4gIHJldHVybiBPYmplY3QuZnJlZXplKG4pO1xufVxuXG52YXIgUmVhY3RfX25hbWVzcGFjZSA9IC8qI19fUFVSRV9fKi9faW50ZXJvcE5hbWVzcGFjZShSZWFjdCk7XG5cbnZhciBBc3luY1NlbGVjdCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7XG4gIHZhciBzdGF0ZU1hbmFnZWRQcm9wcyA9IHVzZUFzeW5jLnVzZUFzeW5jKHByb3BzKTtcbiAgdmFyIHNlbGVjdFByb3BzID0gdXNlU3RhdGVNYW5hZ2VyLnVzZVN0YXRlTWFuYWdlcihzdGF0ZU1hbmFnZWRQcm9wcyk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KFNlbGVjdC5TZWxlY3QsIF9leHRlbmRzKHtcbiAgICByZWY6IHJlZlxuICB9LCBzZWxlY3RQcm9wcykpO1xufSk7XG52YXIgQXN5bmNTZWxlY3QkMSA9IEFzeW5jU2VsZWN0O1xuXG5leHBvcnRzLnVzZUFzeW5jID0gdXNlQXN5bmMudXNlQXN5bmM7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IEFzeW5jU2VsZWN0JDE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi9yZWFjdC1zZWxlY3QtYXN5bmMuY2pzLnByb2QuanNcIik7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuL3JlYWN0LXNlbGVjdC1hc3luYy5janMuZGV2LmpzXCIpO1xufVxuIiwiZXhwb3J0cy5fZGVmYXVsdCA9IHJlcXVpcmUoXCIuL3JlYWN0LXNlbGVjdC1hc3luYy5janMuanNcIikuZGVmYXVsdDtcbiIsImltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IFNob3AgfSBmcm9tICcuLi8uLi9tb2RlbC9zaG9wJztcbmltcG9ydCB7IGNvbnRhaW5lciB9IGZyb20gJ3RzeXJpbmdlLW5lbyc7XG5pbXBvcnQgT3JkZXJTdGF0ZSBmcm9tICcuLi8uLi9zdGF0ZS9vcmRlcic7XG5pbXBvcnQge1Byb2R1Y3RHcm91cH0gZnJvbSBcIi4uLy4uL21vZGVsL3Byb2R1Y3RHcm91cFwiO1xuaW1wb3J0IFByb2R1Y3RHcm91cFNlcnZpY2UgZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Byb2R1Y3Rncm91cFwiO1xuaW1wb3J0IEFzeW5jU2VsZWN0ICwgeyB1c2VBc3luYyB9IGZyb20gJ3JlYWN0LXNlbGVjdC9hc3luYyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IFByb2R1Y3RHcm91cFNlbGVjdCA9IChwcm9wcykgPT4ge1xuICBjb25zdCBvcmRlclN0YXRlOiBPcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSk7XG5cbiAgY29uc3QgbG9hZE9wdGlvbnMgPSBhc3luYyAoc2VhcmNoUXVlcnkpID0+IHtcbiAgICBjb25zdCBwcm9kdWN0Z3JvdXBfYXBpID0gbmV3IFByb2R1Y3RHcm91cFNlcnZpY2UoKTtcblxuICAgIHJldHVybiBhd2FpdCBwcm9kdWN0Z3JvdXBfYXBpLmdldFByb2R1Y3RHcm91cHMoc2VhcmNoUXVlcnksIHByb3BzLnNob3ApO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2hhbmdlID0gKG9wdGlvbikgPT4ge1xuICAgIGlmICh0eXBlb2YgcHJvcHMub25DaGFuZ2UgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcHJvcHMub25DaGFuZ2Uob3B0aW9uKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICAgIDxBc3luY1NlbGVjdFxuICAgICAgICAgIGRlZmF1bHRPcHRpb25zXG4gICAgICAgICAga2V5PXtKU09OLnN0cmluZ2lmeShwcm9wcy5zaG9wLnV1aWQpfVxuICAgICAgICAgIHZhbHVlPXtwcm9wcy52YWx1ZX1cbiAgICAgICAgICBsb2FkT3B0aW9ucz17bG9hZE9wdGlvbnN9XG4gICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9eyhvcHRpb24pID0+IG9wdGlvbi51dWlkfVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICBpc1NlYXJjaGFibGU9e3RydWV9XG4gICAgICAvPlxuICApO1xufTtcblxuUHJvZHVjdEdyb3VwU2VsZWN0LnByb3BUeXBlcyA9IHtcbiAgc2hvcDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2hvcCksXG4gIHZhbHVlOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihQcm9kdWN0R3JvdXApLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBQcm9kdWN0R3JvdXBTZWxlY3Q7XG4iLCJpbXBvcnQge2F1dG9JbmplY3RhYmxlLCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZS1uZW9cIjtcbmltcG9ydCB7IFRva2VuIH0gZnJvbSBcIi4vdG9rZW5cIjtcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBTaG9wIH0gZnJvbSBcIi4uL21vZGVsL3Nob3BcIjtcbmltcG9ydCB7UHJvZHVjdEdyb3VwfSBmcm9tIFwiLi4vbW9kZWwvcHJvZHVjdEdyb3VwXCI7XG5pbXBvcnQge1Byb2R1Y3R9IGZyb20gXCIuLi9tb2RlbC9wcm9kdWN0XCI7XG5pbXBvcnQge0pTT05TY2hlbWE3fSBmcm9tIFwianNvbi1zY2hlbWFcIjtcblxuQHNpbmdsZXRvbigpXG5AYXV0b0luamVjdGFibGUoKVxuY2xhc3MgUHJvZHVjdFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRva2VuPzogVG9rZW4pIHt9XG5cbiAgICBhc3luYyBnZXRQcm9kdWN0c0J5VGVybSh0ZXJtOiBzdHJpbmcsIHNob3A6IFNob3ApOiBQcm9taXNlPFByb2R1Y3RbXT4ge1xuXG4gICAgICAgIHJldHVybiBhd2FpdCBheGlvcy5nZXQoJy9hcHBzL2FwaS9wcm9kdWN0L2dldGFsbGJ5dGVybS8nICsgc2hvcC51dWlkICsgJy8nICsgdGVybSwge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcCA9IG5ldyBQcm9kdWN0KCk7XG4gICAgICAgICAgICAgICAgcC5pZCA9IGl0ZW0uaWQ7XG4gICAgICAgICAgICAgICAgcC50aXRsZSA9IGl0ZW0udGl0bGU7XG4gICAgICAgICAgICAgICAgcC51dWlkID0gaXRlbS51dWlkO1xuICAgICAgICAgICAgICAgIHAuc3BlY2lhbFByb2R1Y3RUeXBlT2JqZWN0LnR5cCA9IGl0ZW0udHlwO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgICAgICB9KVxuXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0UHJvZHVjdHMocHJvZHVjdEdyb3VwOiBQcm9kdWN0R3JvdXApOiBQcm9taXNlPFByb2R1Y3RbXT4ge1xuXG4gICAgICAgIHJldHVybiBhd2FpdCBheGlvcy5nZXQoJy9hcHBzL2FwaS9wcm9kdWN0L2dldGFsbGJ5cHJvZHVjdGdyb3VwLycgKyBwcm9kdWN0R3JvdXAudXVpZCwge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgbGV0IHAgPSBuZXcgUHJvZHVjdCgpO1xuICAgICAgICAgICAgICBwLmlkID0gaXRlbS5pZDtcbiAgICAgICAgICAgICAgcC50aXRsZSA9IGl0ZW0udGl0bGU7XG4gICAgICAgICAgICAgIHAudXVpZCA9IGl0ZW0udXVpZDtcbiAgICAgICAgICAgICAgcC5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QudHlwID0gaXRlbS50eXA7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgICAgICB9KVxuXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0QWRkUHJvZHVjdFNjaGVtYShwcm9kdWN0OiBQcm9kdWN0LCBmb3JtRGF0YTogYW55KTogUHJvbWlzZTxKU09OU2NoZW1hNz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgYXhpb3MucG9zdCgnL2FwcHMvYXBpL3Byb2R1Y3QvZ2V0L2Zvcm0vanNvbi8nICsgcHJvZHVjdC51dWlkLCBmb3JtRGF0YSwge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIGFzeW5jIGNhbGNQcm9kdWN0KHByb2R1Y3Q6IFByb2R1Y3QsIGZvcm1EYXRhKTogUHJvbWlzZTxKU09OU2NoZW1hNz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgYXhpb3MucG9zdCgnL2FwcHMvYXBpL3Byb2R1Y3QvZ2V0L2Zvcm0vanNvbi8nICsgcHJvZHVjdC51dWlkLCBmb3JtRGF0YSwge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgICAgICB9KVxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHJvZHVjdFNlcnZpY2VcbiIsImltcG9ydHt1c2VSZWYgYXMgcix1c2VFZmZlY3QgYXMgbix1c2VNZW1vIGFzIHQsdXNlU3RhdGUgYXMgZSx1c2VDYWxsYmFjayBhcyB1fWZyb21cInJlYWN0XCI7ZnVuY3Rpb24gYyhlLHUsYyl7dmFyIGk9dGhpcyxhPXIobnVsbCksbz1yKDApLGY9cihudWxsKSxsPXIoW10pLHY9cigpLG09cigpLGQ9cihlKSxnPXIoITApO2QuY3VycmVudD1lO3ZhciBwPVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3csdz0hdSYmMCE9PXUmJnA7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgYSBmdW5jdGlvblwiKTt1PSt1fHwwO3ZhciBzPSEhKGM9Y3x8e30pLmxlYWRpbmcseD0hKFwidHJhaWxpbmdcImluIGMpfHwhIWMudHJhaWxpbmcsaD1cIm1heFdhaXRcImluIGMseT1cImRlYm91bmNlT25TZXJ2ZXJcImluIGMmJiEhYy5kZWJvdW5jZU9uU2VydmVyLEY9aD9NYXRoLm1heCgrYy5tYXhXYWl0fHwwLHUpOm51bGw7bihmdW5jdGlvbigpe3JldHVybiBnLmN1cnJlbnQ9ITAsZnVuY3Rpb24oKXtnLmN1cnJlbnQ9ITF9fSxbXSk7dmFyIEE9dChmdW5jdGlvbigpe3ZhciByPWZ1bmN0aW9uKHIpe3ZhciBuPWwuY3VycmVudCx0PXYuY3VycmVudDtyZXR1cm4gbC5jdXJyZW50PXYuY3VycmVudD1udWxsLG8uY3VycmVudD1yLG0uY3VycmVudD1kLmN1cnJlbnQuYXBwbHkodCxuKX0sbj1mdW5jdGlvbihyLG4pe3cmJmNhbmNlbEFuaW1hdGlvbkZyYW1lKGYuY3VycmVudCksZi5jdXJyZW50PXc/cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHIpOnNldFRpbWVvdXQocixuKX0sdD1mdW5jdGlvbihyKXtpZighZy5jdXJyZW50KXJldHVybiExO3ZhciBuPXItYS5jdXJyZW50O3JldHVybiFhLmN1cnJlbnR8fG4+PXV8fG48MHx8aCYmci1vLmN1cnJlbnQ+PUZ9LGU9ZnVuY3Rpb24obil7cmV0dXJuIGYuY3VycmVudD1udWxsLHgmJmwuY3VycmVudD9yKG4pOihsLmN1cnJlbnQ9di5jdXJyZW50PW51bGwsbS5jdXJyZW50KX0sYz1mdW5jdGlvbiByKCl7dmFyIGM9RGF0ZS5ub3coKTtpZih0KGMpKXJldHVybiBlKGMpO2lmKGcuY3VycmVudCl7dmFyIGk9dS0oYy1hLmN1cnJlbnQpLGY9aD9NYXRoLm1pbihpLEYtKGMtby5jdXJyZW50KSk6aTtuKHIsZil9fSxBPWZ1bmN0aW9uKCl7aWYocHx8eSl7dmFyIGU9RGF0ZS5ub3coKSxkPXQoZSk7aWYobC5jdXJyZW50PVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx2LmN1cnJlbnQ9aSxhLmN1cnJlbnQ9ZSxkKXtpZighZi5jdXJyZW50JiZnLmN1cnJlbnQpcmV0dXJuIG8uY3VycmVudD1hLmN1cnJlbnQsbihjLHUpLHM/cihhLmN1cnJlbnQpOm0uY3VycmVudDtpZihoKXJldHVybiBuKGMsdSkscihhLmN1cnJlbnQpfXJldHVybiBmLmN1cnJlbnR8fG4oYyx1KSxtLmN1cnJlbnR9fTtyZXR1cm4gQS5jYW5jZWw9ZnVuY3Rpb24oKXtmLmN1cnJlbnQmJih3P2NhbmNlbEFuaW1hdGlvbkZyYW1lKGYuY3VycmVudCk6Y2xlYXJUaW1lb3V0KGYuY3VycmVudCkpLG8uY3VycmVudD0wLGwuY3VycmVudD1hLmN1cnJlbnQ9di5jdXJyZW50PWYuY3VycmVudD1udWxsfSxBLmlzUGVuZGluZz1mdW5jdGlvbigpe3JldHVybiEhZi5jdXJyZW50fSxBLmZsdXNoPWZ1bmN0aW9uKCl7cmV0dXJuIGYuY3VycmVudD9lKERhdGUubm93KCkpOm0uY3VycmVudH0sQX0sW3MsaCx1LEYseCx3LHAseV0pO3JldHVybiBBfWZ1bmN0aW9uIGkocixuKXtyZXR1cm4gcj09PW59ZnVuY3Rpb24gYShuLHQsYSl7dmFyIG89YSYmYS5lcXVhbGl0eUZufHxpLGY9cihuKSxsPWUoe30pWzFdLHY9Yyh1KGZ1bmN0aW9uKHIpe2YuY3VycmVudD1yLGwoe30pfSxbbF0pLHQsYSksbT1yKG4pO3JldHVybiBvKG0uY3VycmVudCxuKXx8KHYobiksbS5jdXJyZW50PW4pLFtmLmN1cnJlbnQsdl19ZnVuY3Rpb24gbyhyLG4sdCl7dmFyIGU9dm9pZCAwPT09dD97fTp0LHU9ZS5sZWFkaW5nLGk9ZS50cmFpbGluZztyZXR1cm4gYyhyLG4se21heFdhaXQ6bixsZWFkaW5nOnZvaWQgMD09PXV8fHUsdHJhaWxpbmc6dm9pZCAwPT09aXx8aX0pfWV4cG9ydHthIGFzIHVzZURlYm91bmNlLGMgYXMgdXNlRGVib3VuY2VkQ2FsbGJhY2ssbyBhcyB1c2VUaHJvdHRsZWRDYWxsYmFja307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tb2R1bGUuanMubWFwXG4iLCJpbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBTaG9wIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2hvcCc7XG5pbXBvcnQgeyBjb250YWluZXIgfSBmcm9tICd0c3lyaW5nZS1uZW8nO1xuaW1wb3J0IE9yZGVyU3RhdGUgZnJvbSAnLi4vLi4vc3RhdGUvb3JkZXInO1xuaW1wb3J0IHtQcm9kdWN0fSBmcm9tIFwiLi4vLi4vbW9kZWwvcHJvZHVjdFwiO1xuaW1wb3J0IHtQcm9kdWN0R3JvdXB9IGZyb20gXCIuLi8uLi9tb2RlbC9wcm9kdWN0R3JvdXBcIjtcbmltcG9ydCBBc3luY1NlbGVjdCBmcm9tIFwicmVhY3Qtc2VsZWN0L2FzeW5jXCI7XG5pbXBvcnQgUHJvZHVjdFNlcnZpY2UgZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Byb2R1Y3RcIjtcbmltcG9ydCB7dXNlRGVib3VuY2V9IGZyb20gXCJ1c2UtZGVib3VuY2VcIjtcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgUHJvZHVjdFNlbGVjdCA9IChwcm9wcykgPT4ge1xuXG4gIGNvbnN0IG9yZGVyU3RhdGU6IE9yZGVyU3RhdGUgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclN0YXRlKTtcblxuICBjb25zdCBsb2FkT3B0aW9ucyA9IGFzeW5jIChzZWFyY2hRdWVyeSkgPT4ge1xuICAgIGlmKHNlYXJjaFF1ZXJ5ID09IFwiXCIgJiYgcHJvcHMucHJvZHVjdEdyb3VwLnV1aWQgPT0gXCJcIikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBwcm9kdWN0X2FwaSA9IG5ldyBQcm9kdWN0U2VydmljZSgpO1xuICAgIGlmKHNlYXJjaFF1ZXJ5ICE9IFwiXCIpIHtcbiAgICAgIHJldHVybiBhd2FpdCBwcm9kdWN0X2FwaS5nZXRQcm9kdWN0c0J5VGVybShzZWFyY2hRdWVyeSwgcHJvcHMuc2hvcCk7XG4gICAgfWVsc2V7XG4gICAgICByZXR1cm4gYXdhaXQgcHJvZHVjdF9hcGkuZ2V0UHJvZHVjdHMocHJvcHMucHJvZHVjdEdyb3VwKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZGVib3VuY2VkU2VhcmNoVGVybSA9IHVzZURlYm91bmNlKGxvYWRPcHRpb25zLCA1MDApO1xuXG4gIGNvbnN0IG9uQ2hhbmdlID0gKG9wdGlvbikgPT4ge1xuICAgIGlmICh0eXBlb2YgcHJvcHMub25DaGFuZ2UgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcHJvcHMub25DaGFuZ2Uob3B0aW9uKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICAgIDxBc3luY1NlbGVjdFxuICAgICAgICAgIGRlZmF1bHRPcHRpb25zXG4gICAgICAgICAga2V5PXtKU09OLnN0cmluZ2lmeShwcm9wcy5wcm9kdWN0R3JvdXAudXVpZCl9XG4gICAgICAgICAgdmFsdWU9e3Byb3BzLnZhbHVlfVxuICAgICAgICAgIGxvYWRPcHRpb25zPXtsb2FkT3B0aW9uc31cbiAgICAgICAgICBnZXRPcHRpb25WYWx1ZT17KG9wdGlvbikgPT4gb3B0aW9uLnV1aWR9XG4gICAgICAgICAgZ2V0T3B0aW9uTGFiZWw9eyhvcHRpb24pID0+IG9wdGlvbi50aXRsZX1cbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgaXNTZWFyY2hhYmxlPXt0cnVlfVxuICAgICAgLz5cbiAgKTtcbn07XG5cblByb2R1Y3RTZWxlY3QucHJvcFR5cGVzID0ge1xuICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcbiAgdmFsdWU6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFByb2R1Y3QpLFxuICBwcm9kdWN0R3JvdXA6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFByb2R1Y3RHcm91cCksXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFByb2R1Y3RTZWxlY3Q7XG4iLCJpbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCB7IFNob3AgfSBmcm9tICcuLi8uLi9tb2RlbC9zaG9wJ1xuaW1wb3J0IHtQcm9kdWN0fSBmcm9tIFwiLi4vLi4vbW9kZWwvcHJvZHVjdFwiXG5pbXBvcnQgdmFsaWRhdG9yIGZyb20gXCJAcmpzZi92YWxpZGF0b3ItYWp2NlwiXG5pbXBvcnQgeyBKU09OU2NoZW1hNyB9IGZyb20gXCJqc29uLXNjaGVtYVwiXG5pbXBvcnQgeyBjb250YWluZXIgfSBmcm9tICd0c3lyaW5nZS1uZW8nXG5pbXBvcnQgRm9ybSBmcm9tIFwiQHJqc2YvY29yZVwiXG5pbXBvcnQgUHJvZHVjdFNlcnZpY2UgZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Byb2R1Y3RcIlxuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge1ByaWNlfSBmcm9tIFwiLi4vLi4vbW9kZWwvcHJpY2VcIlxuaW1wb3J0IHtQb3N9IGZyb20gXCIuLi8uLi9tb2RlbC9wb3NcIlxuaW1wb3J0IHsgdXNlRGVib3VuY2VkQ2FsbGJhY2sgfSBmcm9tICd1c2UtZGVib3VuY2UnXG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uL2Jhc2UvQnV0dG9uJ1xuaW1wb3J0IEN1cnJlbmN5IGZyb20gJy4uL2Jhc2UvQ3VycmVuY3knXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IFByb2R1Y3RGb3JtID0gKHtzaG9wLCBwb3MsIGhhbmRsZUNsb3NlLCBoYW5kbGVDaGFuZ2V9KSA9PiB7XG4gICAgY29uc3QgcHJvZHVjdF9hcGkgPSBuZXcgUHJvZHVjdFNlcnZpY2UoKVxuXG4gICAgY29uc3QgW3NjaGVtYSwgc2V0U2NoZW1hXSA9IHVzZVN0YXRlPEpTT05TY2hlbWE3Pih7fSlcbiAgICBjb25zdCBbdWlTY2hlbWEsIHNldFVpU2NoZW1hXSA9IHVzZVN0YXRlPEpTT05TY2hlbWE3Pih7fSlcblxuICAgIGNvbnN0IFtmb3JtRGF0YSwgc2V0Rm9ybURhdGFdID0gdXNlU3RhdGUoe30pXG4gICAgY29uc3QgW3R5cGUsIHNldFR5cGVdID0gdXNlU3RhdGU8bnVtYmVyPigwKVxuXG4gICAgY29uc3QgW3ByaWNlLCBzZXRQcmljZV0gPSB1c2VTdGF0ZTxQcmljZT4obmV3IFByaWNlKCkpXG5cbiAgICBjb25zdCBsb2FkU2NoZW1hID0gKGxvYWREYXRhOiBhbnkpID0+IHtcbiAgICAgICAgaWYocG9zLnByb2R1Y3QudXVpZCA9PSBcIlwiKSB7XG4gICAgICAgICAgICByZXR1cm4gW11cbiAgICAgICAgfVxuICAgICAgICB2YXIgZGF0YSA9IHt9XG5cbiAgICAgICAgcHJvZHVjdF9hcGkuZ2V0QWRkUHJvZHVjdFNjaGVtYShwb3MucHJvZHVjdCwgbG9hZERhdGEpLnRoZW4oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBmb3IoY29uc3Qgb2JqIGluIHZhbHVlWydqc29uRm9ybSddWydwcm9wZXJ0aWVzJ10pIHsgXG4gICAgICAgICAgICAgICAgZGF0YVtvYmpdID0gdmFsdWVbJ2pzb25Gb3JtJ11bJ3Byb3BlcnRpZXMnXVtvYmpdWydkZWZhdWx0J11cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldEZvcm1EYXRhKGRhdGEpXG4gICAgICAgICAgICBzZXRTY2hlbWEodmFsdWVbJ2pzb25Gb3JtJ10pXG4gICAgICAgICAgICBzZXRVaVNjaGVtYSh2YWx1ZVsndWlKc29uRm9ybSddKVxuICAgICAgICAgICAgc2V0UHJpY2UodmFsdWVbJ3ByaWNlJ10pXG4gICAgICAgICAgICBzZXRUeXBlKHZhbHVlWyd0eXAnXSlcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCBjaGFuZ2VDYWxjID0gKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgIHNldEZvcm1EYXRhKGZvcm1EYXRhKVxuICAgICAgICBkZWJvdW5jZVJlQ2FsYygpXG4gICAgfVxuXG4gICAgY29uc3QgZGVib3VuY2VSZUNhbGMgPSB1c2VEZWJvdW5jZWRDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHZhciBkYXRhID0ge31cblxuICAgICAgICBwcm9kdWN0X2FwaS5jYWxjUHJvZHVjdChwb3MucHJvZHVjdCwgZm9ybURhdGEpLnRoZW4oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBmb3IoY29uc3Qgb2JqIGluIHZhbHVlWydqc29uRm9ybSddWydwcm9wZXJ0aWVzJ10pIHsgXG4gICAgICAgICAgICAgICAgZGF0YVtvYmpdID0gdmFsdWVbJ2pzb25Gb3JtJ11bJ3Byb3BlcnRpZXMnXVtvYmpdWydkZWZhdWx0J11cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldEZvcm1EYXRhKGRhdGEpXG4gICAgICAgICAgICBzZXRTY2hlbWEodmFsdWVbJ2pzb25Gb3JtJ10pXG4gICAgICAgICAgICBzZXRVaVNjaGVtYSh2YWx1ZVsndWlKc29uRm9ybSddKVxuICAgICAgICAgICAgc2V0UHJpY2UodmFsdWVbJ3ByaWNlJ10pXG4gICAgICAgICAgICBzZXRUeXBlKHZhbHVlWyd0eXAnXSlcbiAgICAgICAgfSlcbiAgICB9LCA2MDApXG5cbiAgICBjb25zdCBhZGRQcm9kdWN0ID0gKCkgPT4ge1xuXG4gICAgICAgIHBvcy5wcm9kdWN0LnNwZWNpYWxQcm9kdWN0VHlwZU9iamVjdC5wYXJhbXMgPSBmb3JtRGF0YVxuICAgICAgICBwb3MucHJvZHVjdC5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QudHlwID0gdHlwZVxuICAgICAgICBpZihmb3JtRGF0YVsnY291bnQnXSkge1xuICAgICAgICAgICAgcG9zLmNvdW50ID0gZm9ybURhdGFbJ2NvdW50J11cbiAgICAgICAgfVxuXG4gICAgICAgIHBvcy5wcmljZSA9IHByaWNlXG4gICAgICAgIGhhbmRsZUNoYW5nZShwb3MpXG4gICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICB9XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZihwb3MucHJvZHVjdC5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QucGFyYW1zKSB7XG4gICAgICAgICAgICBzZXRGb3JtRGF0YShwb3MucHJvZHVjdC5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QucGFyYW1zKVxuICAgICAgICAgICAgbG9hZFNjaGVtYShwb3MucHJvZHVjdC5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QucGFyYW1zKVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIHNldEZvcm1EYXRhKHt9KVxuICAgICAgICAgICAgbG9hZFNjaGVtYSh7fSlcbiAgICAgICAgfVxuICAgICAgICBcbiAgICB9LCBbcG9zLnByb2R1Y3RdKVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdmbGV4Jz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nZmxleC0xJz5cbiAgICAgICAgICAgICAgICAgICAgPEZvcm0gc2NoZW1hPXtzY2hlbWF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVpU2NoZW1hPXt1aVNjaGVtYX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGE9e2Zvcm1EYXRhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGNoYW5nZUNhbGMoZS5mb3JtRGF0YSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcj17dmFsaWRhdG9yfS8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9Jyc+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDU+TmV0dG86IDxDdXJyZW5jeSBwcmljZT17IHByaWNlLmFsbE5ldH0gLz48L2g1PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1Pk13ZXJ0OiA8Q3VycmVuY3kgcHJpY2U9eyBwcmljZS5hbGxWYXR9IC8+PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoND5CcnV0dG86IDxDdXJyZW5jeSBwcmljZT17IHByaWNlLmFsbEdyb3NzfSAvPjwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e2FkZFByb2R1Y3R9IHR5cGU9ezN9IHZhcmlhbnQ9e1wic3VjY2Vzc1wifSAvPlxuICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvPlxuICAgIClcbn1cblxuUHJvZHVjdEZvcm0ucHJvcFR5cGVzID0ge1xuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxuICAgIHBvczogUHJvcFR5cGVzLmluc3RhbmNlT2YoUG9zKSxcbiAgICBoYW5kbGVDbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgaGFuZGxlQ2hhbmdlOiBQcm9wVHlwZXMuZnVuY1xufVxuXG5leHBvcnQgZGVmYXVsdCBQcm9kdWN0Rm9ybVxuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQge3VzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCB7IFNob3AgfSBmcm9tICcuLi8uLi9tb2RlbC9zaG9wJ1xuaW1wb3J0IHtQcm9kdWN0fSBmcm9tIFwiLi4vLi4vbW9kZWwvcHJvZHVjdFwiXG5pbXBvcnQge1Byb2R1Y3RHcm91cH0gZnJvbSBcIi4uLy4uL21vZGVsL3Byb2R1Y3RHcm91cFwiXG5pbXBvcnQgUHJvZHVjdEdyb3VwU2VsZWN0IGZyb20gXCIuLi9wcm9kdWN0L1Byb2R1Y3RHcm91cFNlbGVjdFwiXG5pbXBvcnQgUHJvZHVjdFNlbGVjdCBmcm9tIFwiLi4vcHJvZHVjdC9Qcm9kdWN0U2VsZWN0XCJcbmltcG9ydCBQcm9kdWN0Rm9ybSBmcm9tIFwiLi4vcHJvZHVjdC9Qcm9kdWN0Rm9ybVwiXG5pbXBvcnQgT3JkZXIgZnJvbSBcIi4uLy4uL21vZGVsL29yZGVyXCJcbmltcG9ydCB7IFBvcyB9IGZyb20gJy4uLy4uL21vZGVsL3BvcydcbmltcG9ydCBCdXR0b24gZnJvbSAnLi4vYmFzZS9CdXR0b24nXG5pbXBvcnQgeyBNb2RhbCB9IGZyb20gXCJmbG93Yml0ZS1yZWFjdFwiO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBBZGRQb3NpdGlvbkNvbXBvbmVudCA9IChwcm9wcykgPT4ge1xuXG4gICAgY29uc3QgW3Nob3AsIHNldFNob3BdID0gdXNlU3RhdGUobnVsbClcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNldFNob3AocHJvcHMuc2hvcClcbiAgICB9LCBbcHJvcHMuc2hvcF0pXG5cbiAgICBjb25zdCBbc2hvdywgc2V0U2hvd10gPSB1c2VTdGF0ZShmYWxzZSlcblxuICAgIGNvbnN0IHBvcyA9IG5ldyBQb3MoKTtcblxuICAgIGNvbnN0IGhhbmRsZUNsb3NlID0gKCkgPT4gc2V0U2hvdyhmYWxzZSlcbiAgICBjb25zdCBoYW5kbGVTaG93ID0gKCkgPT4gc2V0U2hvdyh0cnVlKVxuXG4gICAgY29uc3QgW3Byb2R1Y3QsIHNldFByb2R1Y3RdID0gdXNlU3RhdGU8UHJvZHVjdD4obmV3IFByb2R1Y3QoKSlcbiAgICBjb25zdCBbcHJvZHVjdEdyb3VwLCBzZXRQcm9kdWN0R3JvdXBdID0gdXNlU3RhdGU8UHJvZHVjdEdyb3VwPihuZXcgUHJvZHVjdEdyb3VwKCkpXG5cbiAgICBwb3MucHJvZHVjdCA9IHByb2R1Y3Q7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ndGV4dC1jZW50ZXInPlxuICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPXsxfSBvbkNsaWNrPXtoYW5kbGVTaG93fSB2YXJpYW50PVwic3VjY2Vzc1wiLz5cblxuICAgICAgICAgICAgPE1vZGFsIHNpemU9XCI3eGxcIiBzaG93PXtzaG93fSBvbkNsb3NlPXsoKSA9PiBoYW5kbGVDbG9zZSgpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxNb2RhbC5IZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgIGFkZCBwb3NpdGlvblxuICAgICAgICAgICAgICAgIDwvTW9kYWwuSGVhZGVyPlxuICAgICAgICAgICAgICAgIDxNb2RhbC5Cb2R5IGNsYXNzTmFtZT1cIm1pbi1oLTk2XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdmbGV4Jz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdmbGV4LTEnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5Qcm9kdWN0R3JvdXA8L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9kdWN0R3JvdXBTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3Byb2R1Y3RHcm91cH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcD17cHJvcHMuc2hvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3NldFByb2R1Y3RHcm91cH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nZmxleC0xJz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UHJvZHVjdDwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2R1Y3RTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3Byb2R1Y3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3A9e3Byb3BzLnNob3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3RHcm91cD17cHJvZHVjdEdyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17c2V0UHJvZHVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxQcm9kdWN0Rm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zPXtwb3N9XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDaGFuZ2U9e3Byb3BzLmFkZFBvc31cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsb3NlPXtoYW5kbGVDbG9zZX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L01vZGFsLkJvZHk+XG4gICAgICAgICAgICA8L01vZGFsPlxuICAgICAgICA8L2Rpdj5cbiAgICApXG59XG5cbkFkZFBvc2l0aW9uQ29tcG9uZW50LnByb3BUeXBlcyA9IHtcbiAgICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcbiAgICBhZGRQb3M6IFByb3BUeXBlcy5mdW5jXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgQWRkUG9zaXRpb25Db21wb25lbnRcbiIsImltcG9ydCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHsgU2hvcCB9IGZyb20gJy4uLy4uL21vZGVsL3Nob3AnXG5pbXBvcnQge1Byb2R1Y3R9IGZyb20gXCIuLi8uLi9tb2RlbC9wcm9kdWN0XCJcbmltcG9ydCB7UHJvZHVjdEdyb3VwfSBmcm9tIFwiLi4vLi4vbW9kZWwvcHJvZHVjdEdyb3VwXCJcbmltcG9ydCBQcm9kdWN0R3JvdXBTZWxlY3QgZnJvbSBcIi4uL3Byb2R1Y3QvUHJvZHVjdEdyb3VwU2VsZWN0XCJcbmltcG9ydCBQcm9kdWN0U2VsZWN0IGZyb20gXCIuLi9wcm9kdWN0L1Byb2R1Y3RTZWxlY3RcIlxuaW1wb3J0IHsgUG9zIH0gZnJvbSAnLi4vLi4vbW9kZWwvcG9zJ1xuaW1wb3J0IEJ1dHRvbiBmcm9tICcuLi9iYXNlL0J1dHRvbidcbmltcG9ydCBQcm9kdWN0Rm9ybSBmcm9tICcuLi9wcm9kdWN0L1Byb2R1Y3RGb3JtJ1xuaW1wb3J0IHsgTW9kYWwgfSBmcm9tIFwiZmxvd2JpdGUtcmVhY3RcIjtcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgRWRpdFBvc2l0aW9uQ29tcG9uZW50ID0gKHtwb3NpdGlvbiwgc2hvcCwgY2hhbmdlUG9zfSkgPT4ge1xuXG4gICAgY29uc3QgW3Nob3csIHNldFNob3ddID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgICBjb25zdCBoYW5kbGVDbG9zZSA9ICgpID0+IHNldFNob3coZmFsc2UpXG4gICAgY29uc3QgaGFuZGxlU2hvdyA9ICgpID0+IHNldFNob3codHJ1ZSlcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT17Mn0gdmFyaWFudD1cImdyYXlcIiBvbkNsaWNrPXtoYW5kbGVTaG93fS8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPE1vZGFsIHNpemU9XCI3eGxcIiBzaG93PXtzaG93fSBvbkNsb3NlPXsoKSA9PiBoYW5kbGVDbG9zZSgpfT5cbiAgICAgICAgICAgICAgICA8TW9kYWwuSGVhZGVyICBjbGFzc05hbWU9XCJ0ZXh0LW1hdXZlMTIgbS0wIHRleHQtWzE3cHhdIGZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgIGVkaXQgcG9zaXRpb25cbiAgICAgICAgICAgICAgICA8L01vZGFsLkhlYWRlcj5cbiAgICAgICAgICAgICAgICA8TW9kYWwuQm9keT5cbiAgICAgICAgICAgICAgICA8UHJvZHVjdEZvcm1cbiAgICAgICAgICAgICAgICAgICAgcG9zPXtwb3NpdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hhbmdlPXtjaGFuZ2VQb3N9XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsb3NlPXtoYW5kbGVDbG9zZX1cbiAgICAgICAgICAgICAgICAvPjwvTW9kYWwuQm9keT5cbiAgICAgICAgICAgIDwvTW9kYWw+XG4gICAgICAgIDwvZGl2PlxuICAgIClcbn1cblxuRWRpdFBvc2l0aW9uQ29tcG9uZW50LnByb3BUeXBlcyA9IHtcbiAgICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcbiAgICBwb3NpdGlvbjogUHJvcFR5cGVzLmluc3RhbmNlT2YoUG9zKSxcbiAgICBjaGFuZ2VQb3M6IFByb3BUeXBlcy5mdW5jXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgRWRpdFBvc2l0aW9uQ29tcG9uZW50XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXHJcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXHJcbmltcG9ydCB7UG9zfSBmcm9tIFwiLi4vLi4vbW9kZWwvcG9zXCJcclxuaW1wb3J0IEJ1dHRvbiBmcm9tICcuLi9iYXNlL0J1dHRvbidcclxuaW1wb3J0IEVkaXRQb3NpdGlvbkNvbXBvbmVudCBmcm9tICcuL0VkaXRQb3NpdGlvbkNvbXBvbmVudCdcclxuaW1wb3J0IHsgU2hvcCB9IGZyb20gJy4uLy4uL21vZGVsL3Nob3AnXHJcbmltcG9ydCBDdXJyZW5jeSBmcm9tICcuLi9iYXNlL0N1cnJlbmN5J1xyXG5cclxuXHJcbmNvbnN0IFBvc0NvbXBvbmVudCA9ICh7aW5kZXgsIHBvcywgZGVsUG9zLCBjaGFuZ2VQb3MsIHNob3B9KSA9PiB7XHJcblxyXG4gICAgY29uc3QgZGVsZXRlUG9zID0gKHV1aWQ6IFN0cmluZykgPT4ge1xyXG4gICAgICAgIGRlbFBvcyh1dWlkKVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4J30+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSd9PntpbmRleCArIDF9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSd9Pntwb3MucHJvZHVjdC50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xJ30+e3Bvcy5jb3VudH08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xIHRleHQtZW5kJ30+PEN1cnJlbmN5IHByaWNlPXsgcG9zLnByaWNlLmFsbE5ldH0gLz48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xIHRleHQtZW5kJ30+PEN1cnJlbmN5IHByaWNlPXsgcG9zLnByaWNlLmFsbFZhdH0gLz48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xIHRleHQtZW5kJ30+PEN1cnJlbmN5IHByaWNlPXsgcG9zLnByaWNlLmFsbEdyb3NzfSAvPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4LTEgdGV4dC1lbmQnfT48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xIHRleHQtZW5kJ30+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxFZGl0UG9zaXRpb25Db21wb25lbnQgc2hvcD17c2hvcH0gcG9zaXRpb249e3Bvc30gY2hhbmdlUG9zPXtjaGFuZ2VQb3N9IC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT17NX0gdmFyaWFudD17J2ZhaWx1cmUnfSBvbkNsaWNrPXsoKSA9PiBkZWxldGVQb3MocG9zLnV1aWQpfSAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8aHIvPlxyXG4gICAgICAgIDwvPlxyXG4gICAgKVxyXG59XHJcblxyXG5Qb3NDb21wb25lbnQucHJvcFR5cGVzID0ge1xyXG4gICAgaW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXHJcbiAgICBwb3M6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFBvcyksXHJcbiAgICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcclxuICAgIGRlbFBvczogUHJvcFR5cGVzLmZ1bmMsXHJcbiAgICBjaGFuZ2VQb3M6IFByb3BUeXBlcy5mdW5jXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFBvc0NvbXBvbmVudFxyXG4iLCJpbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxyXG5pbXBvcnQgUG9zQ29tcG9uZW50IGZyb20gXCIuL1Bvc0NvbXBvbmVudFwiXHJcbmltcG9ydCB7dXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIlxyXG5pbXBvcnQge09yZGVyfSBmcm9tIFwiLi4vLi4vbW9kZWwvb3JkZXJcIlxyXG5pbXBvcnQgeyBTaG9wIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2hvcCdcclxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xyXG5cclxuY29uc3QgSXRlbXNDb21wb25lbnQgPSAoe3Bvc2l0aW9ucywgZGVsUG9zLCBzaG9wLCBjaGFuZ2VQb3N9KSA9PiB7XHJcblxyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4J30+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSd9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNT5Qb3M8L2g1PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSd9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNT5UaXRsZTwvaDU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xJ30+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg1PkFuemFobDwvaDU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xIHRleHQtZW5kJ30+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg1Pk5ldHRvPC9oNT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4LTEgdGV4dC1lbmQnfT5cclxuICAgICAgICAgICAgICAgICAgICA8aDU+VGF4PC9oNT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4LTEgdGV4dC1lbmQnfT5cclxuICAgICAgICAgICAgICAgICAgICA8aDU+R3Jvc3M8L2g1PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSB0ZXh0LWVuZCd9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNT5TdGF0dXM8L2g1PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSd9PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGhyLz5cclxuICAgICAgICAgICAge3Bvc2l0aW9ucy5tYXAoKG9iamVjdCwgaSkgPT4gPFBvc0NvbXBvbmVudCBwb3M9e29iamVjdH0gc2hvcD17c2hvcH0gZGVsUG9zPXtkZWxQb3N9IGNoYW5nZVBvcz17Y2hhbmdlUG9zfSBrZXk9e2l9IGluZGV4PXtpfSAvPil9XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKVxyXG59XHJcblxyXG5JdGVtc0NvbXBvbmVudC5wcm9wVHlwZXMgPSB7XHJcbiAgICBwb3NpdGlvbnM6IFByb3BUeXBlcy5hcnJheSxcclxuICAgIGRlbFBvczogUHJvcFR5cGVzLmZ1bmMsXHJcbiAgICBjaGFuZ2VQb3M6IFByb3BUeXBlcy5mdW5jLFxyXG4gICAgc2hvcDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2hvcClcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgSXRlbXNDb21wb25lbnRcclxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IEFkZFBvc2l0aW9uQ29tcG9uZW50IGZyb20gXCIuL0FkZFBvc2l0aW9uQ29tcG9uZW50XCJcbmltcG9ydCBJdGVtc0NvbXBvbmVudCBmcm9tIFwiLi9JdGVtc0NvbXBvbmVudFwiXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHsgU2hvcCB9IGZyb20gJy4uLy4uL21vZGVsL3Nob3AnXG5pbXBvcnQge3VzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge1Bvc30gZnJvbSBcIi4uLy4uL21vZGVsL3Bvc1wiXG5pbXBvcnQgT3JkZXIgZnJvbSBcIi4uLy4uL21vZGVsL29yZGVyXCJcbmltcG9ydCBPcmRlclN0YXRlIGZyb20gXCIuLi8uLi9zdGF0ZS9vcmRlclwiXG5cbmNvbnN0IFBvc2l0aW9uc0NvbXBvbmVudCA9ICh7b3JkZXIsIHNob3AsIHVwZGF0ZU9yZGVyfSkgPT4ge1xuXG4gICAgY29uc3Qgb3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpXG5cbiAgICBjb25zdCBbcG9zaXRpb25zLCBzZXRQb3NpdGlvbnNdID0gdXNlU3RhdGU8QXJyYXk8UG9zPj4ob3JkZXIucG9zaXRpb25zKVxuXG4gICAgY29uc3QgYWRkUG9zID0gKHBvc09iaikgPT4ge1xuICAgICAgICBzZXRQb3NpdGlvbnMoWy4uLnBvc2l0aW9ucywgcG9zT2JqXSlcbiAgICB9XG5cbiAgICBjb25zdCBjaGFuZ2VQb3MgPSAocG9zT2JqKSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHRDb3VudGVycyA9IHBvc2l0aW9ucy5tYXAoKGMsIGkpID0+IHtcbiAgICAgICAgICAgIGlmIChjLnV1aWQgPT09IHBvc09iai51dWlkKSB7XG4gICAgICAgICAgICAgIHJldHVybiBwb3NPYmpcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBjXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIHNldFBvc2l0aW9ucyhuZXh0Q291bnRlcnMpXG4gICAgICAgIFxuICAgIH1cblxuICAgIGNvbnN0IGRlbFBvcyA9ICh1dWlkKSA9PiB7XG4gICAgICAgIGxldCBwb3MgPSBwb3NpdGlvbnMuZmlsdGVyKChvYmopID0+IG9iai51dWlkICE9PSB1dWlkKVxuXG4gICAgICAgIHNldFBvc2l0aW9ucyhwb3MpXG4gICAgfVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgbGV0IG9yZGVyT2JqID0gb3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS52YWx1ZVxuICAgICAgICBvcmRlck9iai5wb3NpdGlvbnMgPSBwb3NpdGlvbnNcbiAgICAgICAgb3JkZXJTdGF0ZS5zZXRDdXJyZW50T3JkZXIob3JkZXJPYmopXG4gICAgfSwgW3Bvc2l0aW9uc10pXG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJwLTJcIn0+XG4gICAgICAgICAgICA8SXRlbXNDb21wb25lbnQgcG9zaXRpb25zPXtwb3NpdGlvbnN9IHNob3A9e3Nob3B9IGRlbFBvcz17ZGVsUG9zfSBjaGFuZ2VQb3M9e2NoYW5nZVBvc30vPlxuICAgICAgICAgICAgPEFkZFBvc2l0aW9uQ29tcG9uZW50IHNob3A9e3Nob3B9IGFkZFBvcz17YWRkUG9zfS8+XG4gICAgICAgIDwvZGl2PlxuICAgIClcbn1cblxuUG9zaXRpb25zQ29tcG9uZW50LnByb3BUeXBlcyA9IHtcbiAgICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcbiAgICBvcmRlcjogUHJvcFR5cGVzLmluc3RhbmNlT2YoT3JkZXIpLFxuICAgIHVwZGF0ZU9yZGVyOiBQcm9wVHlwZXMuZnVuY1xufVxuXG5leHBvcnQgZGVmYXVsdCBQb3NpdGlvbnNDb21wb25lbnRcbiIsImltcG9ydCB7YXV0b0luamVjdGFibGUsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiXHJcbmltcG9ydCB7IFRva2VuIH0gZnJvbSBcIi4vdG9rZW5cIlxyXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnXHJcbmltcG9ydCB7IFNob3AgfSBmcm9tIFwiLi4vbW9kZWwvc2hvcFwiXHJcbmltcG9ydCB7UGF5bWVudH0gZnJvbSBcIi4uL21vZGVsL3BheW1lbnRcIlxyXG5cclxuQHNpbmdsZXRvbigpXHJcbkBhdXRvSW5qZWN0YWJsZSgpXHJcbmNsYXNzIFBheW1lbnRTZXJ2aWNlIHtcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdG9rZW4/OiBUb2tlbikge31cclxuXHJcbiAgICBhc3luYyBnZXRQYXltZW50cyhzaG9wOiBTaG9wKTogUHJvbWlzZTxQYXltZW50W10+IHtcclxuXHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IGF4aW9zLmdldCgnL2FwcHMvYXBpL3BheW1lbnQvYnkvc2hvcC8nICsgc2hvcC51dWlkLCB7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBwYXltZW50ID0gbmV3IFBheW1lbnQoKVxyXG4gICAgICAgICAgICAgICAgcGF5bWVudC51aWQgPSBpdGVtLnVpZFxyXG4gICAgICAgICAgICAgICAgcGF5bWVudC50aXRsZSA9IGl0ZW0udGl0bGVcclxuICAgICAgICAgICAgICAgIHBheW1lbnQudXVpZCA9IGl0ZW0udXVpZFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBheW1lbnRcclxuICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgUGF5bWVudFNlcnZpY2VcclxuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXHJcbmltcG9ydCB7IEFzeW5jUGFnaW5hdGUgfSBmcm9tIFwicmVhY3Qtc2VsZWN0LWFzeW5jLXBhZ2luYXRlXCJcclxuaW1wb3J0IFBheW1lbnRTZXJ2aWNlIGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9wYXltZW50XCJcclxuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcclxuaW1wb3J0IHsgU2hvcCB9IGZyb20gXCIuLi8uLi9tb2RlbC9zaG9wXCJcclxuaW1wb3J0IHsgY29udGFpbmVyIH0gZnJvbSBcInRzeXJpbmdlLW5lb1wiXHJcbmltcG9ydCBPcmRlclN0YXRlIGZyb20gXCIuLi8uLi9zdGF0ZS9vcmRlclwiXHJcbmltcG9ydCBPcmRlciBmcm9tIFwiLi4vLi4vbW9kZWwvb3JkZXJcIlxyXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCJcclxuaW1wb3J0IFNlbGVjdCBmcm9tICdyZWFjdC1zZWxlY3QnXHJcbmltcG9ydCB7IFNlbGVjdExhYmVsIH0gZnJvbSAnLi4vYmFzZS9TZWxlY3RMYWJlbCdcclxuXHJcbmNvbnN0IFBheW1lbnRDb21wb25lbnQgPSAoeyBzaG9wLCBvcmRlciB9KSA9PiB7XHJcblxyXG4gICAgY29uc3QgW3Nob3BVdWlkLCBzZXRTaG9wVXVpZF0gPSB1c2VTdGF0ZShudWxsKVxyXG4gICAgY29uc3Qgb3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpXHJcbiAgICBjb25zdCBbcGF5bWVudCwgc2V0UGF5bWVudF0gPSB1c2VTdGF0ZSgwKVxyXG4gICAgY29uc3QgcGF5bWVudF9zZXJ2aWNlID0gbmV3IFBheW1lbnRTZXJ2aWNlKClcclxuXHJcbiAgICBjb25zdCBsb2FkT3B0aW9ucyA9IGFzeW5jIChzZWFyY2hRdWVyeSwgbG9hZGVkT3B0aW9ucykgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBwYXltZW50X3NlcnZpY2UuZ2V0UGF5bWVudHMoc2hvcClcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgb3B0aW9uczogZGF0YSxcclxuICAgICAgICAgICAgaGFzTW9yZTogZmFsc2UsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgc2V0U2hvcFV1aWQoc2hvcC51dWlkKVxyXG4gICAgICB9LCBbc2hvcC51dWlkXSlcclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIHNldFBheW1lbnQob3JkZXIucGF5bWVudC51aWQpXHJcbiAgICB9LCBbb3JkZXIucGF5bWVudF0pXHJcblxyXG5cclxuICAgIGNvbnN0IG9uQ2hhbmdlID0gKG9wdGlvbikgPT4ge1xyXG4gICAgICAgIG9yZGVyLnBheW1lbnQgPSBvcHRpb25cclxuICAgICAgICBsZXQgb3JkZXJPYmogPSBvcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLmdldFZhbHVlKClcclxuICAgICAgICBvcmRlck9iai5wYXltZW50ID0gb3B0aW9uXHJcbiAgICAgICAgb3JkZXJTdGF0ZS5zZXRDdXJyZW50T3JkZXIob3JkZXJPYmopXHJcbiAgICAgICAgc2V0UGF5bWVudChvcHRpb24udWlkKVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wicC0yXCJ9PlxyXG4gICAgICAgICAgICA8QXN5bmNQYWdpbmF0ZVxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdE9wdGlvbnNcclxuICAgICAgICAgICAgICAgIGtleT17SlNPTi5zdHJpbmdpZnkoc2hvcFV1aWQpfVxyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50cz17eyBDb250cm9sOiBTZWxlY3RMYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtvcmRlci5wYXltZW50fVxyXG4gICAgICAgICAgICAgICAgbG9hZE9wdGlvbnM9e2xvYWRPcHRpb25zfVxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9JydcclxuICAgICAgICAgICAgICAgIG5hbWU9J1phaGxhcnQnXHJcbiAgICAgICAgICAgICAgICBnZXRPcHRpb25WYWx1ZT17KG9wdGlvbikgPT4gb3B0aW9uLnVpZH1cclxuICAgICAgICAgICAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiBvcHRpb24udGl0bGV9XHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XHJcbiAgICAgICAgICAgICAgICBpc1NlYXJjaGFibGU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtwYXltZW50ID09IDAgPyBcImJvcmRlciBib3JkZXItcmVkLTUwMFwiIDogXCJcIn1gfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKVxyXG59XHJcblxyXG5QYXltZW50Q29tcG9uZW50LnByb3BUeXBlcyA9IHtcclxuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxyXG4gICAgb3JkZXI6IFByb3BUeXBlcy5pbnN0YW5jZU9mKE9yZGVyKSxcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgUGF5bWVudENvbXBvbmVudFxyXG4iLCJpbXBvcnQge2F1dG9JbmplY3RhYmxlLCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZS1uZW9cIlxyXG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gXCIuL3Rva2VuXCJcclxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJ1xyXG5pbXBvcnQgeyBTaG9wIH0gZnJvbSBcIi4uL21vZGVsL3Nob3BcIlxyXG5pbXBvcnQge1NoaXBwaW5nfSBmcm9tIFwiLi4vbW9kZWwvc2hpcHBpbmdcIlxyXG5cclxuQHNpbmdsZXRvbigpXHJcbkBhdXRvSW5qZWN0YWJsZSgpXHJcbmNsYXNzIFNoaXBwaW5nU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRva2VuPzogVG9rZW4pIHt9XHJcblxyXG4gICAgYXN5bmMgZ2V0U2hpcHBpbmcoc2hvcDogU2hvcCk6IFByb21pc2U8U2hpcHBpbmdbXT4ge1xyXG5cclxuICAgICAgICByZXR1cm4gYXdhaXQgYXhpb3MuZ2V0KCcvYXBwcy9hcGkvc2hpcHBpbmcvYnkvc2hvcC8nICsgc2hvcC51dWlkLCB7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBzaGlwbWVudCA9IG5ldyBTaGlwcGluZygpXHJcbiAgICAgICAgICAgICAgICBzaGlwbWVudC51aWQgPSBpdGVtLnVpZFxyXG4gICAgICAgICAgICAgICAgc2hpcG1lbnQudGl0bGUgPSBpdGVtLnRpdGxlXHJcbiAgICAgICAgICAgICAgICBzaGlwbWVudC51dWlkID0gaXRlbS51dWlkXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc2hpcG1lbnRcclxuICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgU2hpcHBpbmdTZXJ2aWNlXHJcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xyXG5pbXBvcnQgeyBBc3luY1BhZ2luYXRlIH0gZnJvbSBcInJlYWN0LXNlbGVjdC1hc3luYy1wYWdpbmF0ZVwiXHJcbmltcG9ydCBTaGlwcGluZ1NlcnZpY2UgZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NoaXBwaW5nXCJcclxuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcclxuaW1wb3J0IHtTaG9wfSBmcm9tIFwiLi4vLi4vbW9kZWwvc2hvcFwiXHJcbmltcG9ydCB7Y29udGFpbmVyfSBmcm9tIFwidHN5cmluZ2UtbmVvXCJcclxuaW1wb3J0IE9yZGVyU3RhdGUgZnJvbSBcIi4uLy4uL3N0YXRlL29yZGVyXCJcclxuaW1wb3J0IE9yZGVyIGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiXHJcbmltcG9ydCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSBcInJlYWN0XCJcclxuaW1wb3J0IHsgU2VsZWN0TGFiZWwgfSBmcm9tICcuLi9iYXNlL1NlbGVjdExhYmVsJ1xyXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXHJcblxyXG5jb25zdCBTaGlwcGluZ0NvbXBvbmVudCA9ICh7c2hvcCwgb3JkZXJ9KSA9PiB7XHJcblxyXG4gICAgY29uc3QgW3Nob3BVdWlkLCBzZXRTaG9wVXVpZF0gPSB1c2VTdGF0ZShudWxsKVxyXG4gICAgY29uc3Qgb3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpXHJcbiAgICBjb25zdCBbc2hpcHBpbmcsIHNldFNoaXBwaW5nXSA9IHVzZVN0YXRlKDApXHJcbiAgICBjb25zdCBzaGlwcGluZ19zZXJ2aWNlID0gbmV3IFNoaXBwaW5nU2VydmljZSgpXHJcbiAgICBcclxuICAgIGNvbnN0IGxvYWRPcHRpb25zID0gYXN5bmMgKHNlYXJjaFF1ZXJ5LCBsb2FkZWRPcHRpb25zKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHNoaXBwaW5nX3NlcnZpY2UuZ2V0U2hpcHBpbmcoc2hvcClcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgb3B0aW9uczogZGF0YSxcclxuICAgICAgICAgICAgaGFzTW9yZTogZmFsc2UsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgc2V0U2hvcFV1aWQoc2hvcC51dWlkKVxyXG4gICAgICB9LCBbc2hvcC51dWlkXSlcclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIHNldFNoaXBwaW5nKG9yZGVyLnNoaXBwaW5nLnVpZClcclxuICAgIH0sIFtvcmRlci5zaGlwcGluZ10pXHJcblxyXG4gICAgY29uc3Qgb25DaGFuZ2UgPSAob3B0aW9uKSA9PiB7XHJcbiAgICAgICAgb3JkZXIuc2hpcHBpbmcgPSBvcHRpb25cclxuICAgICAgICBsZXQgb3JkZXJPYmogPSBvcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLmdldFZhbHVlKClcclxuICAgICAgICBvcmRlck9iai5zaGlwcGluZyA9IG9wdGlvblxyXG4gICAgICAgIG9yZGVyU3RhdGUuc2V0Q3VycmVudE9yZGVyKG9yZGVyT2JqKVxyXG4gICAgICAgIHNldFNoaXBwaW5nKG9wdGlvbi51aWQpXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJwLTJcIn0+XHJcbiAgICAgICAgICAgIDxBc3luY1BhZ2luYXRlXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0T3B0aW9uc1xyXG4gICAgICAgICAgICAgICAga2V5PXtKU09OLnN0cmluZ2lmeShzaG9wVXVpZCl9XHJcbiAgICAgICAgICAgICAgICBjb21wb25lbnRzPXt7Q29udHJvbDogU2VsZWN0TGFiZWx9fVxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtvcmRlci5zaGlwcGluZ31cclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPScnXHJcbiAgICAgICAgICAgICAgICBuYW1lPSdWZXJzYW5kYXJ0J1xyXG4gICAgICAgICAgICAgICAgbG9hZE9wdGlvbnM9e2xvYWRPcHRpb25zfVxyXG4gICAgICAgICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9eyhvcHRpb24pID0+IG9wdGlvbi51aWR9XHJcbiAgICAgICAgICAgICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4gb3B0aW9uLnRpdGxlfVxyXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxyXG4gICAgICAgICAgICAgICAgaXNTZWFyY2hhYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c2hpcHBpbmcgPT0gMCA/IFwiYm9yZGVyIGJvcmRlci1yZWQtNTAwXCIgOiBcIlwifWB9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICA8L2Rpdj5cclxuKVxyXG59XHJcblxyXG5TaGlwcGluZ0NvbXBvbmVudC5wcm9wVHlwZXMgPSB7XHJcbiAgICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcclxuICAgIG9yZGVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihPcmRlciksXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFNoaXBwaW5nQ29tcG9uZW50XHJcbiIsImltcG9ydCBPcmRlclN0YXRlIGZyb20gJy4uLy4uL3N0YXRlL29yZGVyJ1xuaW1wb3J0IHtjb250YWluZXJ9IGZyb20gXCJ0c3lyaW5nZS1uZW9cIlxuaW1wb3J0IE9yZGVyU2VydmljZSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcmRlcidcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtkZWJvdW5jZVRpbWV9IGZyb20gXCJyeGpzXCJcbmltcG9ydCB7T3JkZXJ9IGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiXG5pbXBvcnQgeyBSaVNhdmVGaWxsLCBSaVByaW50ZXJGaWxsIH0gZnJvbSBcIkBwcmVhY3QtaWNvbnMvcmlcIlxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcImZsb3diaXRlLXJlYWN0XCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY2xhc3MgQnV0dG9uQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50PHtsb2FkT3JkZXJ9LHtkaXNhYmxlZDogYm9vbGVhbn0+IHtcbiAgICBvcmRlclN0YXRlOiBPcmRlclN0YXRlXG4gICAgb3JkZXJTZXJ2aWNlOiBPcmRlclNlcnZpY2VcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcylcbiAgICAgICAgdGhpcy5vcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSlcbiAgICAgICAgdGhpcy5vcmRlclNlcnZpY2UgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclNlcnZpY2UpXG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtkaXNhYmxlZDogdHJ1ZX1cbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgdGhpcy5vcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLnBpcGUoZGVib3VuY2VUaW1lKDIwMDApKS5zdWJzY3JpYmUoKGUpID0+IHRoaXMuc2F2ZUJ1dHRvbihlKSlcbiAgICB9XG5cbiAgICBzYXZlQnV0dG9uKG9yZGVyOiBPcmRlcikge1xuICAgICAgICBpZihvcmRlci5jb250YWN0LnVzZXJuYW1lICE9IFwiXCJcbiAgICAgICAgICAgICYmIG9yZGVyLnBheW1lbnQudGl0bGUgIT0gXCJcIlxuICAgICAgICAgICAgJiYgb3JkZXIuc2hpcHBpbmcudGl0bGUgIT0gXCJcIlxuICAgICAgICAgICAgJiYgb3JkZXIuc2hvcC5uYW1lICE9IFwiXCJcbiAgICAgICAgICAgICYmIG9yZGVyLmFjY291bnQudGl0bGUgIT0gXCJcIlxuICAgICAgICAgICAgJiYgb3JkZXIuaW52b2ljZUFkZHJlc3MudXVpZCAhPSBcIlwiXG4gICAgICAgICAgICAmJiBvcmRlci50eXBlICE9IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtkaXNhYmxlZDogZmFsc2V9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgaGFuZGxlUHJpbnQoZSkge1xuICAgICAgICBjb25zdCB1dWlkID0gdGhpcy5vcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLnZhbHVlLnV1aWQ7XG4gICAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLm9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkudmFsdWUudHlwZTtcbiAgICAgICAgd2luZG93Lm9wZW4oJy9hcHBzL2JhY2tlbmQvb3JkZXIvZGV0YWlsL3ByaW50LycgKyB0eXBlICsgJy8nICsgdXVpZClcbiAgICB9XG5cbiAgICBhc3luYyBoYW5kbGVTYXZlKGUpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMub3JkZXJTZXJ2aWNlLnNhdmVPcmRlcih0aGlzLm9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkudmFsdWUpXG5cbiAgICAgICAgdGhpcy5wcm9wcy5sb2FkT3JkZXIocmVzdWx0Wyd1dWlkJ10pXG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgPEJ1dHRvbiBzaXplPVwieHNcIiBjb2xvcj1cImluZm9cIiBkaXNhYmxlZD17dGhpcy5zdGF0ZS5kaXNhYmxlZH0gb25DbGljaz17KGU6YW55KSA9PiB0aGlzLmhhbmRsZVNhdmUoZSl9PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1yLTIgaC01IHctNVwiLz4gU3BlaWNoZXJuXG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPEJ1dHRvbiBzaXplPVwieHNcIiBjb2xvcj1cInN1Y2Nlc3NcIiBkaXNhYmxlZD17IXRoaXMub3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS52YWx1ZS5zYXZlZH0gb25DbGljaz17KGU6YW55KSA9PiB0aGlzLmhhbmRsZVByaW50KGUpfT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtci0yIGgtNSB3LTVcIi8+IERydWNrZW5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApXG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgQnV0dG9uQ29tcG9uZW50XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucGFyc2UgPSBwYXJzZTtcbmV4cG9ydHMuc2VyaWFsaXplID0gc2VyaWFsaXplO1xuLyoqXG4gKiBSZWdFeHAgdG8gbWF0Y2ggY29va2llLW5hbWUgaW4gUkZDIDYyNjUgc2VjIDQuMS4xXG4gKiBUaGlzIHJlZmVycyBvdXQgdG8gdGhlIG9ic29sZXRlZCBkZWZpbml0aW9uIG9mIHRva2VuIGluIFJGQyAyNjE2IHNlYyAyLjJcbiAqIHdoaWNoIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHRoZSB0b2tlbiBkZWZpbml0aW9uIGluIFJGQyA3MjMwIGFwcGVuZGl4IEIuXG4gKlxuICogY29va2llLW5hbWUgICAgICAgPSB0b2tlblxuICogdG9rZW4gICAgICAgICAgICAgPSAxKnRjaGFyXG4gKiB0Y2hhciAgICAgICAgICAgICA9IFwiIVwiIC8gXCIjXCIgLyBcIiRcIiAvIFwiJVwiIC8gXCImXCIgLyBcIidcIiAvXG4gKiAgICAgICAgICAgICAgICAgICAgIFwiKlwiIC8gXCIrXCIgLyBcIi1cIiAvIFwiLlwiIC8gXCJeXCIgLyBcIl9cIiAvXG4gKiAgICAgICAgICAgICAgICAgICAgIFwiYFwiIC8gXCJ8XCIgLyBcIn5cIiAvIERJR0lUIC8gQUxQSEFcbiAqXG4gKiBOb3RlOiBBbGxvd2luZyBtb3JlIGNoYXJhY3RlcnMgLSBodHRwczovL2dpdGh1Yi5jb20vanNodHRwL2Nvb2tpZS9pc3N1ZXMvMTkxXG4gKiBBbGxvdyBzYW1lIHJhbmdlIGFzIGNvb2tpZSB2YWx1ZSwgZXhjZXB0IGA9YCwgd2hpY2ggZGVsaW1pdHMgZW5kIG9mIG5hbWUuXG4gKi9cbmNvbnN0IGNvb2tpZU5hbWVSZWdFeHAgPSAvXltcXHUwMDIxLVxcdTAwM0FcXHUwMDNDXFx1MDAzRS1cXHUwMDdFXSskLztcbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIGNvb2tpZS12YWx1ZSBpbiBSRkMgNjI2NSBzZWMgNC4xLjFcbiAqXG4gKiBjb29raWUtdmFsdWUgICAgICA9ICpjb29raWUtb2N0ZXQgLyAoIERRVU9URSAqY29va2llLW9jdGV0IERRVU9URSApXG4gKiBjb29raWUtb2N0ZXQgICAgICA9ICV4MjEgLyAleDIzLTJCIC8gJXgyRC0zQSAvICV4M0MtNUIgLyAleDVELTdFXG4gKiAgICAgICAgICAgICAgICAgICAgIDsgVVMtQVNDSUkgY2hhcmFjdGVycyBleGNsdWRpbmcgQ1RMcyxcbiAqICAgICAgICAgICAgICAgICAgICAgOyB3aGl0ZXNwYWNlIERRVU9URSwgY29tbWEsIHNlbWljb2xvbixcbiAqICAgICAgICAgICAgICAgICAgICAgOyBhbmQgYmFja3NsYXNoXG4gKlxuICogQWxsb3dpbmcgbW9yZSBjaGFyYWN0ZXJzOiBodHRwczovL2dpdGh1Yi5jb20vanNodHRwL2Nvb2tpZS9pc3N1ZXMvMTkxXG4gKiBDb21tYSwgYmFja3NsYXNoLCBhbmQgRFFVT1RFIGFyZSBub3QgcGFydCBvZiB0aGUgcGFyc2luZyBhbGdvcml0aG0uXG4gKi9cbmNvbnN0IGNvb2tpZVZhbHVlUmVnRXhwID0gL15bXFx1MDAyMS1cXHUwMDNBXFx1MDAzQy1cXHUwMDdFXSokLztcbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIGRvbWFpbi12YWx1ZSBpbiBSRkMgNjI2NSBzZWMgNC4xLjFcbiAqXG4gKiBkb21haW4tdmFsdWUgICAgICA9IDxzdWJkb21haW4+XG4gKiAgICAgICAgICAgICAgICAgICAgIDsgZGVmaW5lZCBpbiBbUkZDMTAzNF0sIFNlY3Rpb24gMy41LCBhc1xuICogICAgICAgICAgICAgICAgICAgICA7IGVuaGFuY2VkIGJ5IFtSRkMxMTIzXSwgU2VjdGlvbiAyLjFcbiAqIDxzdWJkb21haW4+ICAgICAgID0gPGxhYmVsPiB8IDxzdWJkb21haW4+IFwiLlwiIDxsYWJlbD5cbiAqIDxsYWJlbD4gICAgICAgICAgID0gPGxldC1kaWc+IFsgWyA8bGRoLXN0cj4gXSA8bGV0LWRpZz4gXVxuICogICAgICAgICAgICAgICAgICAgICBMYWJlbHMgbXVzdCBiZSA2MyBjaGFyYWN0ZXJzIG9yIGxlc3MuXG4gKiAgICAgICAgICAgICAgICAgICAgICdsZXQtZGlnJyBub3QgJ2xldHRlcicgaW4gdGhlIGZpcnN0IGNoYXIsIHBlciBSRkMxMTIzXG4gKiA8bGRoLXN0cj4gICAgICAgICA9IDxsZXQtZGlnLWh5cD4gfCA8bGV0LWRpZy1oeXA+IDxsZGgtc3RyPlxuICogPGxldC1kaWctaHlwPiAgICAgPSA8bGV0LWRpZz4gfCBcIi1cIlxuICogPGxldC1kaWc+ICAgICAgICAgPSA8bGV0dGVyPiB8IDxkaWdpdD5cbiAqIDxsZXR0ZXI+ICAgICAgICAgID0gYW55IG9uZSBvZiB0aGUgNTIgYWxwaGFiZXRpYyBjaGFyYWN0ZXJzIEEgdGhyb3VnaCBaIGluXG4gKiAgICAgICAgICAgICAgICAgICAgIHVwcGVyIGNhc2UgYW5kIGEgdGhyb3VnaCB6IGluIGxvd2VyIGNhc2VcbiAqIDxkaWdpdD4gICAgICAgICAgID0gYW55IG9uZSBvZiB0aGUgdGVuIGRpZ2l0cyAwIHRocm91Z2ggOVxuICpcbiAqIEtlZXAgc3VwcG9ydCBmb3IgbGVhZGluZyBkb3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS9qc2h0dHAvY29va2llL2lzc3Vlcy8xNzNcbiAqXG4gKiA+IChOb3RlIHRoYXQgYSBsZWFkaW5nICV4MkUgKFwiLlwiKSwgaWYgcHJlc2VudCwgaXMgaWdub3JlZCBldmVuIHRob3VnaCB0aGF0XG4gKiBjaGFyYWN0ZXIgaXMgbm90IHBlcm1pdHRlZCwgYnV0IGEgdHJhaWxpbmcgJXgyRSAoXCIuXCIpLCBpZiBwcmVzZW50LCB3aWxsXG4gKiBjYXVzZSB0aGUgdXNlciBhZ2VudCB0byBpZ25vcmUgdGhlIGF0dHJpYnV0ZS4pXG4gKi9cbmNvbnN0IGRvbWFpblZhbHVlUmVnRXhwID0gL14oWy5dP1thLXowLTldKFthLXowLTktXXswLDYxfVthLXowLTldKT8pKFsuXVthLXowLTldKFthLXowLTktXXswLDYxfVthLXowLTldKT8pKiQvaTtcbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIHBhdGgtdmFsdWUgaW4gUkZDIDYyNjUgc2VjIDQuMS4xXG4gKlxuICogcGF0aC12YWx1ZSAgICAgICAgPSA8YW55IENIQVIgZXhjZXB0IENUTHMgb3IgXCI7XCI+XG4gKiBDSEFSICAgICAgICAgICAgICA9ICV4MDEtN0ZcbiAqICAgICAgICAgICAgICAgICAgICAgOyBkZWZpbmVkIGluIFJGQyA1MjM0IGFwcGVuZGl4IEIuMVxuICovXG5jb25zdCBwYXRoVmFsdWVSZWdFeHAgPSAvXltcXHUwMDIwLVxcdTAwM0FcXHUwMDNELVxcdTAwN0VdKiQvO1xuY29uc3QgX190b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5jb25zdCBOdWxsT2JqZWN0ID0gLyogQF9fUFVSRV9fICovICgoKSA9PiB7XG4gICAgY29uc3QgQyA9IGZ1bmN0aW9uICgpIHsgfTtcbiAgICBDLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgcmV0dXJuIEM7XG59KSgpO1xuLyoqXG4gKiBQYXJzZSBhIGNvb2tpZSBoZWFkZXIuXG4gKlxuICogUGFyc2UgdGhlIGdpdmVuIGNvb2tpZSBoZWFkZXIgc3RyaW5nIGludG8gYW4gb2JqZWN0XG4gKiBUaGUgb2JqZWN0IGhhcyB0aGUgdmFyaW91cyBjb29raWVzIGFzIGtleXMobmFtZXMpID0+IHZhbHVlc1xuICovXG5mdW5jdGlvbiBwYXJzZShzdHIsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBvYmogPSBuZXcgTnVsbE9iamVjdCgpO1xuICAgIGNvbnN0IGxlbiA9IHN0ci5sZW5ndGg7XG4gICAgLy8gUkZDIDYyNjUgc2VjIDQuMS4xLCBSRkMgMjYxNiAyLjIgZGVmaW5lcyBhIGNvb2tpZSBuYW1lIGNvbnNpc3RzIG9mIG9uZSBjaGFyIG1pbmltdW0sIHBsdXMgJz0nLlxuICAgIGlmIChsZW4gPCAyKVxuICAgICAgICByZXR1cm4gb2JqO1xuICAgIGNvbnN0IGRlYyA9IG9wdGlvbnM/LmRlY29kZSB8fCBkZWNvZGU7XG4gICAgbGV0IGluZGV4ID0gMDtcbiAgICBkbyB7XG4gICAgICAgIGNvbnN0IGVxSWR4ID0gc3RyLmluZGV4T2YoXCI9XCIsIGluZGV4KTtcbiAgICAgICAgaWYgKGVxSWR4ID09PSAtMSlcbiAgICAgICAgICAgIGJyZWFrOyAvLyBObyBtb3JlIGNvb2tpZSBwYWlycy5cbiAgICAgICAgY29uc3QgY29sb25JZHggPSBzdHIuaW5kZXhPZihcIjtcIiwgaW5kZXgpO1xuICAgICAgICBjb25zdCBlbmRJZHggPSBjb2xvbklkeCA9PT0gLTEgPyBsZW4gOiBjb2xvbklkeDtcbiAgICAgICAgaWYgKGVxSWR4ID4gZW5kSWR4KSB7XG4gICAgICAgICAgICAvLyBiYWNrdHJhY2sgb24gcHJpb3Igc2VtaWNvbG9uXG4gICAgICAgICAgICBpbmRleCA9IHN0ci5sYXN0SW5kZXhPZihcIjtcIiwgZXFJZHggLSAxKSArIDE7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXlTdGFydElkeCA9IHN0YXJ0SW5kZXgoc3RyLCBpbmRleCwgZXFJZHgpO1xuICAgICAgICBjb25zdCBrZXlFbmRJZHggPSBlbmRJbmRleChzdHIsIGVxSWR4LCBrZXlTdGFydElkeCk7XG4gICAgICAgIGNvbnN0IGtleSA9IHN0ci5zbGljZShrZXlTdGFydElkeCwga2V5RW5kSWR4KTtcbiAgICAgICAgLy8gb25seSBhc3NpZ24gb25jZVxuICAgICAgICBpZiAob2JqW2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbGV0IHZhbFN0YXJ0SWR4ID0gc3RhcnRJbmRleChzdHIsIGVxSWR4ICsgMSwgZW5kSWR4KTtcbiAgICAgICAgICAgIGxldCB2YWxFbmRJZHggPSBlbmRJbmRleChzdHIsIGVuZElkeCwgdmFsU3RhcnRJZHgpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBkZWMoc3RyLnNsaWNlKHZhbFN0YXJ0SWR4LCB2YWxFbmRJZHgpKTtcbiAgICAgICAgICAgIG9ialtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXggPSBlbmRJZHggKyAxO1xuICAgIH0gd2hpbGUgKGluZGV4IDwgbGVuKTtcbiAgICByZXR1cm4gb2JqO1xufVxuZnVuY3Rpb24gc3RhcnRJbmRleChzdHIsIGluZGV4LCBtYXgpIHtcbiAgICBkbyB7XG4gICAgICAgIGNvbnN0IGNvZGUgPSBzdHIuY2hhckNvZGVBdChpbmRleCk7XG4gICAgICAgIGlmIChjb2RlICE9PSAweDIwIC8qICAgKi8gJiYgY29kZSAhPT0gMHgwOSAvKiBcXHQgKi8pXG4gICAgICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfSB3aGlsZSAoKytpbmRleCA8IG1heCk7XG4gICAgcmV0dXJuIG1heDtcbn1cbmZ1bmN0aW9uIGVuZEluZGV4KHN0ciwgaW5kZXgsIG1pbikge1xuICAgIHdoaWxlIChpbmRleCA+IG1pbikge1xuICAgICAgICBjb25zdCBjb2RlID0gc3RyLmNoYXJDb2RlQXQoLS1pbmRleCk7XG4gICAgICAgIGlmIChjb2RlICE9PSAweDIwIC8qICAgKi8gJiYgY29kZSAhPT0gMHgwOSAvKiBcXHQgKi8pXG4gICAgICAgICAgICByZXR1cm4gaW5kZXggKyAxO1xuICAgIH1cbiAgICByZXR1cm4gbWluO1xufVxuLyoqXG4gKiBTZXJpYWxpemUgZGF0YSBpbnRvIGEgY29va2llIGhlYWRlci5cbiAqXG4gKiBTZXJpYWxpemUgYSBuYW1lIHZhbHVlIHBhaXIgaW50byBhIGNvb2tpZSBzdHJpbmcgc3VpdGFibGUgZm9yXG4gKiBodHRwIGhlYWRlcnMuIEFuIG9wdGlvbmFsIG9wdGlvbnMgb2JqZWN0IHNwZWNpZmllcyBjb29raWUgcGFyYW1ldGVycy5cbiAqXG4gKiBzZXJpYWxpemUoJ2ZvbycsICdiYXInLCB7IGh0dHBPbmx5OiB0cnVlIH0pXG4gKiAgID0+IFwiZm9vPWJhcjsgaHR0cE9ubHlcIlxuICovXG5mdW5jdGlvbiBzZXJpYWxpemUobmFtZSwgdmFsLCBvcHRpb25zKSB7XG4gICAgY29uc3QgZW5jID0gb3B0aW9ucz8uZW5jb2RlIHx8IGVuY29kZVVSSUNvbXBvbmVudDtcbiAgICBpZiAoIWNvb2tpZU5hbWVSZWdFeHAudGVzdChuYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBhcmd1bWVudCBuYW1lIGlzIGludmFsaWQ6ICR7bmFtZX1gKTtcbiAgICB9XG4gICAgY29uc3QgdmFsdWUgPSBlbmModmFsKTtcbiAgICBpZiAoIWNvb2tpZVZhbHVlUmVnRXhwLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGFyZ3VtZW50IHZhbCBpcyBpbnZhbGlkOiAke3ZhbH1gKTtcbiAgICB9XG4gICAgbGV0IHN0ciA9IG5hbWUgKyBcIj1cIiArIHZhbHVlO1xuICAgIGlmICghb3B0aW9ucylcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICBpZiAob3B0aW9ucy5tYXhBZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIob3B0aW9ucy5tYXhBZ2UpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBvcHRpb24gbWF4QWdlIGlzIGludmFsaWQ6ICR7b3B0aW9ucy5tYXhBZ2V9YCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RyICs9IFwiOyBNYXgtQWdlPVwiICsgb3B0aW9ucy5tYXhBZ2U7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmRvbWFpbikge1xuICAgICAgICBpZiAoIWRvbWFpblZhbHVlUmVnRXhwLnRlc3Qob3B0aW9ucy5kb21haW4pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBvcHRpb24gZG9tYWluIGlzIGludmFsaWQ6ICR7b3B0aW9ucy5kb21haW59YCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RyICs9IFwiOyBEb21haW49XCIgKyBvcHRpb25zLmRvbWFpbjtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMucGF0aCkge1xuICAgICAgICBpZiAoIXBhdGhWYWx1ZVJlZ0V4cC50ZXN0KG9wdGlvbnMucGF0aCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYG9wdGlvbiBwYXRoIGlzIGludmFsaWQ6ICR7b3B0aW9ucy5wYXRofWApO1xuICAgICAgICB9XG4gICAgICAgIHN0ciArPSBcIjsgUGF0aD1cIiArIG9wdGlvbnMucGF0aDtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZXhwaXJlcykge1xuICAgICAgICBpZiAoIWlzRGF0ZShvcHRpb25zLmV4cGlyZXMpIHx8XG4gICAgICAgICAgICAhTnVtYmVyLmlzRmluaXRlKG9wdGlvbnMuZXhwaXJlcy52YWx1ZU9mKCkpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBvcHRpb24gZXhwaXJlcyBpcyBpbnZhbGlkOiAke29wdGlvbnMuZXhwaXJlc31gKTtcbiAgICAgICAgfVxuICAgICAgICBzdHIgKz0gXCI7IEV4cGlyZXM9XCIgKyBvcHRpb25zLmV4cGlyZXMudG9VVENTdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuaHR0cE9ubHkpIHtcbiAgICAgICAgc3RyICs9IFwiOyBIdHRwT25seVwiO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5zZWN1cmUpIHtcbiAgICAgICAgc3RyICs9IFwiOyBTZWN1cmVcIjtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMucGFydGl0aW9uZWQpIHtcbiAgICAgICAgc3RyICs9IFwiOyBQYXJ0aXRpb25lZFwiO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5wcmlvcml0eSkge1xuICAgICAgICBjb25zdCBwcmlvcml0eSA9IHR5cGVvZiBvcHRpb25zLnByaW9yaXR5ID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICA/IG9wdGlvbnMucHJpb3JpdHkudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIHN3aXRjaCAocHJpb3JpdHkpIHtcbiAgICAgICAgICAgIGNhc2UgXCJsb3dcIjpcbiAgICAgICAgICAgICAgICBzdHIgKz0gXCI7IFByaW9yaXR5PUxvd1wiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIm1lZGl1bVwiOlxuICAgICAgICAgICAgICAgIHN0ciArPSBcIjsgUHJpb3JpdHk9TWVkaXVtXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiaGlnaFwiOlxuICAgICAgICAgICAgICAgIHN0ciArPSBcIjsgUHJpb3JpdHk9SGlnaFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBvcHRpb24gcHJpb3JpdHkgaXMgaW52YWxpZDogJHtvcHRpb25zLnByaW9yaXR5fWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnNhbWVTaXRlKSB7XG4gICAgICAgIGNvbnN0IHNhbWVTaXRlID0gdHlwZW9mIG9wdGlvbnMuc2FtZVNpdGUgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8gb3B0aW9ucy5zYW1lU2l0ZS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICA6IG9wdGlvbnMuc2FtZVNpdGU7XG4gICAgICAgIHN3aXRjaCAoc2FtZVNpdGUpIHtcbiAgICAgICAgICAgIGNhc2UgdHJ1ZTpcbiAgICAgICAgICAgIGNhc2UgXCJzdHJpY3RcIjpcbiAgICAgICAgICAgICAgICBzdHIgKz0gXCI7IFNhbWVTaXRlPVN0cmljdFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImxheFwiOlxuICAgICAgICAgICAgICAgIHN0ciArPSBcIjsgU2FtZVNpdGU9TGF4XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwibm9uZVwiOlxuICAgICAgICAgICAgICAgIHN0ciArPSBcIjsgU2FtZVNpdGU9Tm9uZVwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBvcHRpb24gc2FtZVNpdGUgaXMgaW52YWxpZDogJHtvcHRpb25zLnNhbWVTaXRlfWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG59XG4vKipcbiAqIFVSTC1kZWNvZGUgc3RyaW5nIHZhbHVlLiBPcHRpbWl6ZWQgdG8gc2tpcCBuYXRpdmUgY2FsbCB3aGVuIG5vICUuXG4gKi9cbmZ1bmN0aW9uIGRlY29kZShzdHIpIHtcbiAgICBpZiAoc3RyLmluZGV4T2YoXCIlXCIpID09PSAtMSlcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHN0cik7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxufVxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgdmFsdWUgaXMgYSBEYXRlLlxuICovXG5mdW5jdGlvbiBpc0RhdGUodmFsKSB7XG4gICAgcmV0dXJuIF9fdG9TdHJpbmcuY2FsbCh2YWwpID09PSBcIltvYmplY3QgRGF0ZV1cIjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIi8qKlxuICogcmVhY3Qtcm91dGVyIHY3LjEuMFxuICpcbiAqIENvcHlyaWdodCAoYykgUmVtaXggU29mdHdhcmUgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRS5tZCBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqIEBsaWNlbnNlIE1JVFxuICovXG5cbi8vIGxpYi9yb3V0ZXIvaGlzdG9yeS50c1xudmFyIEFjdGlvbiA9IC8qIEBfX1BVUkVfXyAqLyAoKEFjdGlvbjIpID0+IHtcbiAgQWN0aW9uMltcIlBvcFwiXSA9IFwiUE9QXCI7XG4gIEFjdGlvbjJbXCJQdXNoXCJdID0gXCJQVVNIXCI7XG4gIEFjdGlvbjJbXCJSZXBsYWNlXCJdID0gXCJSRVBMQUNFXCI7XG4gIHJldHVybiBBY3Rpb24yO1xufSkoQWN0aW9uIHx8IHt9KTtcbnZhciBQb3BTdGF0ZUV2ZW50VHlwZSA9IFwicG9wc3RhdGVcIjtcbmZ1bmN0aW9uIGNyZWF0ZU1lbW9yeUhpc3Rvcnkob3B0aW9ucyA9IHt9KSB7XG4gIGxldCB7IGluaXRpYWxFbnRyaWVzID0gW1wiL1wiXSwgaW5pdGlhbEluZGV4LCB2NUNvbXBhdCA9IGZhbHNlIH0gPSBvcHRpb25zO1xuICBsZXQgZW50cmllcztcbiAgZW50cmllcyA9IGluaXRpYWxFbnRyaWVzLm1hcChcbiAgICAoZW50cnksIGluZGV4MikgPT4gY3JlYXRlTWVtb3J5TG9jYXRpb24oXG4gICAgICBlbnRyeSxcbiAgICAgIHR5cGVvZiBlbnRyeSA9PT0gXCJzdHJpbmdcIiA/IG51bGwgOiBlbnRyeS5zdGF0ZSxcbiAgICAgIGluZGV4MiA9PT0gMCA/IFwiZGVmYXVsdFwiIDogdm9pZCAwXG4gICAgKVxuICApO1xuICBsZXQgaW5kZXggPSBjbGFtcEluZGV4KFxuICAgIGluaXRpYWxJbmRleCA9PSBudWxsID8gZW50cmllcy5sZW5ndGggLSAxIDogaW5pdGlhbEluZGV4XG4gICk7XG4gIGxldCBhY3Rpb24gPSBcIlBPUFwiIC8qIFBvcCAqLztcbiAgbGV0IGxpc3RlbmVyID0gbnVsbDtcbiAgZnVuY3Rpb24gY2xhbXBJbmRleChuKSB7XG4gICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KG4sIDApLCBlbnRyaWVzLmxlbmd0aCAtIDEpO1xuICB9XG4gIGZ1bmN0aW9uIGdldEN1cnJlbnRMb2NhdGlvbigpIHtcbiAgICByZXR1cm4gZW50cmllc1tpbmRleF07XG4gIH1cbiAgZnVuY3Rpb24gY3JlYXRlTWVtb3J5TG9jYXRpb24odG8sIHN0YXRlID0gbnVsbCwga2V5KSB7XG4gICAgbGV0IGxvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24oXG4gICAgICBlbnRyaWVzID8gZ2V0Q3VycmVudExvY2F0aW9uKCkucGF0aG5hbWUgOiBcIi9cIixcbiAgICAgIHRvLFxuICAgICAgc3RhdGUsXG4gICAgICBrZXlcbiAgICApO1xuICAgIHdhcm5pbmcoXG4gICAgICBsb2NhdGlvbi5wYXRobmFtZS5jaGFyQXQoMCkgPT09IFwiL1wiLFxuICAgICAgYHJlbGF0aXZlIHBhdGhuYW1lcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBtZW1vcnkgaGlzdG9yeTogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgdG9cbiAgICAgICl9YFxuICAgICk7XG4gICAgcmV0dXJuIGxvY2F0aW9uO1xuICB9XG4gIGZ1bmN0aW9uIGNyZWF0ZUhyZWYyKHRvKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0byA9PT0gXCJzdHJpbmdcIiA/IHRvIDogY3JlYXRlUGF0aCh0byk7XG4gIH1cbiAgbGV0IGhpc3RvcnkgPSB7XG4gICAgZ2V0IGluZGV4KCkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH0sXG4gICAgZ2V0IGFjdGlvbigpIHtcbiAgICAgIHJldHVybiBhY3Rpb247XG4gICAgfSxcbiAgICBnZXQgbG9jYXRpb24oKSB7XG4gICAgICByZXR1cm4gZ2V0Q3VycmVudExvY2F0aW9uKCk7XG4gICAgfSxcbiAgICBjcmVhdGVIcmVmOiBjcmVhdGVIcmVmMixcbiAgICBjcmVhdGVVUkwodG8pIHtcbiAgICAgIHJldHVybiBuZXcgVVJMKGNyZWF0ZUhyZWYyKHRvKSwgXCJodHRwOi8vbG9jYWxob3N0XCIpO1xuICAgIH0sXG4gICAgZW5jb2RlTG9jYXRpb24odG8pIHtcbiAgICAgIGxldCBwYXRoID0gdHlwZW9mIHRvID09PSBcInN0cmluZ1wiID8gcGFyc2VQYXRoKHRvKSA6IHRvO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGF0aG5hbWU6IHBhdGgucGF0aG5hbWUgfHwgXCJcIixcbiAgICAgICAgc2VhcmNoOiBwYXRoLnNlYXJjaCB8fCBcIlwiLFxuICAgICAgICBoYXNoOiBwYXRoLmhhc2ggfHwgXCJcIlxuICAgICAgfTtcbiAgICB9LFxuICAgIHB1c2godG8sIHN0YXRlKSB7XG4gICAgICBhY3Rpb24gPSBcIlBVU0hcIiAvKiBQdXNoICovO1xuICAgICAgbGV0IG5leHRMb2NhdGlvbiA9IGNyZWF0ZU1lbW9yeUxvY2F0aW9uKHRvLCBzdGF0ZSk7XG4gICAgICBpbmRleCArPSAxO1xuICAgICAgZW50cmllcy5zcGxpY2UoaW5kZXgsIGVudHJpZXMubGVuZ3RoLCBuZXh0TG9jYXRpb24pO1xuICAgICAgaWYgKHY1Q29tcGF0ICYmIGxpc3RlbmVyKSB7XG4gICAgICAgIGxpc3RlbmVyKHsgYWN0aW9uLCBsb2NhdGlvbjogbmV4dExvY2F0aW9uLCBkZWx0YTogMSB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlcGxhY2UodG8sIHN0YXRlKSB7XG4gICAgICBhY3Rpb24gPSBcIlJFUExBQ0VcIiAvKiBSZXBsYWNlICovO1xuICAgICAgbGV0IG5leHRMb2NhdGlvbiA9IGNyZWF0ZU1lbW9yeUxvY2F0aW9uKHRvLCBzdGF0ZSk7XG4gICAgICBlbnRyaWVzW2luZGV4XSA9IG5leHRMb2NhdGlvbjtcbiAgICAgIGlmICh2NUNvbXBhdCAmJiBsaXN0ZW5lcikge1xuICAgICAgICBsaXN0ZW5lcih7IGFjdGlvbiwgbG9jYXRpb246IG5leHRMb2NhdGlvbiwgZGVsdGE6IDAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBnbyhkZWx0YSkge1xuICAgICAgYWN0aW9uID0gXCJQT1BcIiAvKiBQb3AgKi87XG4gICAgICBsZXQgbmV4dEluZGV4ID0gY2xhbXBJbmRleChpbmRleCArIGRlbHRhKTtcbiAgICAgIGxldCBuZXh0TG9jYXRpb24gPSBlbnRyaWVzW25leHRJbmRleF07XG4gICAgICBpbmRleCA9IG5leHRJbmRleDtcbiAgICAgIGlmIChsaXN0ZW5lcikge1xuICAgICAgICBsaXN0ZW5lcih7IGFjdGlvbiwgbG9jYXRpb246IG5leHRMb2NhdGlvbiwgZGVsdGEgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBsaXN0ZW4oZm4pIHtcbiAgICAgIGxpc3RlbmVyID0gZm47XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBsaXN0ZW5lciA9IG51bGw7XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGhpc3Rvcnk7XG59XG5mdW5jdGlvbiBjcmVhdGVCcm93c2VySGlzdG9yeShvcHRpb25zID0ge30pIHtcbiAgZnVuY3Rpb24gY3JlYXRlQnJvd3NlckxvY2F0aW9uKHdpbmRvdzIsIGdsb2JhbEhpc3RvcnkpIHtcbiAgICBsZXQgeyBwYXRobmFtZSwgc2VhcmNoLCBoYXNoIH0gPSB3aW5kb3cyLmxvY2F0aW9uO1xuICAgIHJldHVybiBjcmVhdGVMb2NhdGlvbihcbiAgICAgIFwiXCIsXG4gICAgICB7IHBhdGhuYW1lLCBzZWFyY2gsIGhhc2ggfSxcbiAgICAgIC8vIHN0YXRlIGRlZmF1bHRzIHRvIGBudWxsYCBiZWNhdXNlIGB3aW5kb3cuaGlzdG9yeS5zdGF0ZWAgZG9lc1xuICAgICAgZ2xvYmFsSGlzdG9yeS5zdGF0ZSAmJiBnbG9iYWxIaXN0b3J5LnN0YXRlLnVzciB8fCBudWxsLFxuICAgICAgZ2xvYmFsSGlzdG9yeS5zdGF0ZSAmJiBnbG9iYWxIaXN0b3J5LnN0YXRlLmtleSB8fCBcImRlZmF1bHRcIlxuICAgICk7XG4gIH1cbiAgZnVuY3Rpb24gY3JlYXRlQnJvd3NlckhyZWYod2luZG93MiwgdG8pIHtcbiAgICByZXR1cm4gdHlwZW9mIHRvID09PSBcInN0cmluZ1wiID8gdG8gOiBjcmVhdGVQYXRoKHRvKTtcbiAgfVxuICByZXR1cm4gZ2V0VXJsQmFzZWRIaXN0b3J5KFxuICAgIGNyZWF0ZUJyb3dzZXJMb2NhdGlvbixcbiAgICBjcmVhdGVCcm93c2VySHJlZixcbiAgICBudWxsLFxuICAgIG9wdGlvbnNcbiAgKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUhhc2hIaXN0b3J5KG9wdGlvbnMgPSB7fSkge1xuICBmdW5jdGlvbiBjcmVhdGVIYXNoTG9jYXRpb24od2luZG93MiwgZ2xvYmFsSGlzdG9yeSkge1xuICAgIGxldCB7XG4gICAgICBwYXRobmFtZSA9IFwiL1wiLFxuICAgICAgc2VhcmNoID0gXCJcIixcbiAgICAgIGhhc2ggPSBcIlwiXG4gICAgfSA9IHBhcnNlUGF0aCh3aW5kb3cyLmxvY2F0aW9uLmhhc2guc3Vic3RyaW5nKDEpKTtcbiAgICBpZiAoIXBhdGhuYW1lLnN0YXJ0c1dpdGgoXCIvXCIpICYmICFwYXRobmFtZS5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgcGF0aG5hbWUgPSBcIi9cIiArIHBhdGhuYW1lO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlTG9jYXRpb24oXG4gICAgICBcIlwiLFxuICAgICAgeyBwYXRobmFtZSwgc2VhcmNoLCBoYXNoIH0sXG4gICAgICAvLyBzdGF0ZSBkZWZhdWx0cyB0byBgbnVsbGAgYmVjYXVzZSBgd2luZG93Lmhpc3Rvcnkuc3RhdGVgIGRvZXNcbiAgICAgIGdsb2JhbEhpc3Rvcnkuc3RhdGUgJiYgZ2xvYmFsSGlzdG9yeS5zdGF0ZS51c3IgfHwgbnVsbCxcbiAgICAgIGdsb2JhbEhpc3Rvcnkuc3RhdGUgJiYgZ2xvYmFsSGlzdG9yeS5zdGF0ZS5rZXkgfHwgXCJkZWZhdWx0XCJcbiAgICApO1xuICB9XG4gIGZ1bmN0aW9uIGNyZWF0ZUhhc2hIcmVmKHdpbmRvdzIsIHRvKSB7XG4gICAgbGV0IGJhc2UgPSB3aW5kb3cyLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJiYXNlXCIpO1xuICAgIGxldCBocmVmID0gXCJcIjtcbiAgICBpZiAoYmFzZSAmJiBiYXNlLmdldEF0dHJpYnV0ZShcImhyZWZcIikpIHtcbiAgICAgIGxldCB1cmwgPSB3aW5kb3cyLmxvY2F0aW9uLmhyZWY7XG4gICAgICBsZXQgaGFzaEluZGV4ID0gdXJsLmluZGV4T2YoXCIjXCIpO1xuICAgICAgaHJlZiA9IGhhc2hJbmRleCA9PT0gLTEgPyB1cmwgOiB1cmwuc2xpY2UoMCwgaGFzaEluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIGhyZWYgKyBcIiNcIiArICh0eXBlb2YgdG8gPT09IFwic3RyaW5nXCIgPyB0byA6IGNyZWF0ZVBhdGgodG8pKTtcbiAgfVxuICBmdW5jdGlvbiB2YWxpZGF0ZUhhc2hMb2NhdGlvbihsb2NhdGlvbiwgdG8pIHtcbiAgICB3YXJuaW5nKFxuICAgICAgbG9jYXRpb24ucGF0aG5hbWUuY2hhckF0KDApID09PSBcIi9cIixcbiAgICAgIGByZWxhdGl2ZSBwYXRobmFtZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gaGFzaCBoaXN0b3J5LnB1c2goJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgdG9cbiAgICAgICl9KWBcbiAgICApO1xuICB9XG4gIHJldHVybiBnZXRVcmxCYXNlZEhpc3RvcnkoXG4gICAgY3JlYXRlSGFzaExvY2F0aW9uLFxuICAgIGNyZWF0ZUhhc2hIcmVmLFxuICAgIHZhbGlkYXRlSGFzaExvY2F0aW9uLFxuICAgIG9wdGlvbnNcbiAgKTtcbn1cbmZ1bmN0aW9uIGludmFyaWFudCh2YWx1ZSwgbWVzc2FnZSkge1xuICBpZiAodmFsdWUgPT09IGZhbHNlIHx8IHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgfVxufVxuZnVuY3Rpb24gd2FybmluZyhjb25kLCBtZXNzYWdlKSB7XG4gIGlmICghY29uZCkge1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIikgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICAgIHRyeSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlS2V5KCkge1xuICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDEwKTtcbn1cbmZ1bmN0aW9uIGdldEhpc3RvcnlTdGF0ZShsb2NhdGlvbiwgaW5kZXgpIHtcbiAgcmV0dXJuIHtcbiAgICB1c3I6IGxvY2F0aW9uLnN0YXRlLFxuICAgIGtleTogbG9jYXRpb24ua2V5LFxuICAgIGlkeDogaW5kZXhcbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUxvY2F0aW9uKGN1cnJlbnQsIHRvLCBzdGF0ZSA9IG51bGwsIGtleSkge1xuICBsZXQgbG9jYXRpb24gPSB7XG4gICAgcGF0aG5hbWU6IHR5cGVvZiBjdXJyZW50ID09PSBcInN0cmluZ1wiID8gY3VycmVudCA6IGN1cnJlbnQucGF0aG5hbWUsXG4gICAgc2VhcmNoOiBcIlwiLFxuICAgIGhhc2g6IFwiXCIsXG4gICAgLi4udHlwZW9mIHRvID09PSBcInN0cmluZ1wiID8gcGFyc2VQYXRoKHRvKSA6IHRvLFxuICAgIHN0YXRlLFxuICAgIC8vIFRPRE86IFRoaXMgY291bGQgYmUgY2xlYW5lZCB1cC4gIHB1c2gvcmVwbGFjZSBzaG91bGQgcHJvYmFibHkganVzdCB0YWtlXG4gICAgLy8gZnVsbCBMb2NhdGlvbnMgbm93IGFuZCBhdm9pZCB0aGUgbmVlZCB0byBydW4gdGhyb3VnaCB0aGlzIGZsb3cgYXQgYWxsXG4gICAgLy8gQnV0IHRoYXQncyBhIHByZXR0eSBiaWcgcmVmYWN0b3IgdG8gdGhlIGN1cnJlbnQgdGVzdCBzdWl0ZSBzbyBnb2luZyB0b1xuICAgIC8vIGtlZXAgYXMgaXMgZm9yIHRoZSB0aW1lIGJlaW5nIGFuZCBqdXN0IGxldCBhbnkgaW5jb21pbmcga2V5cyB0YWtlIHByZWNlZGVuY2VcbiAgICBrZXk6IHRvICYmIHRvLmtleSB8fCBrZXkgfHwgY3JlYXRlS2V5KClcbiAgfTtcbiAgcmV0dXJuIGxvY2F0aW9uO1xufVxuZnVuY3Rpb24gY3JlYXRlUGF0aCh7XG4gIHBhdGhuYW1lID0gXCIvXCIsXG4gIHNlYXJjaCA9IFwiXCIsXG4gIGhhc2ggPSBcIlwiXG59KSB7XG4gIGlmIChzZWFyY2ggJiYgc2VhcmNoICE9PSBcIj9cIilcbiAgICBwYXRobmFtZSArPSBzZWFyY2guY2hhckF0KDApID09PSBcIj9cIiA/IHNlYXJjaCA6IFwiP1wiICsgc2VhcmNoO1xuICBpZiAoaGFzaCAmJiBoYXNoICE9PSBcIiNcIilcbiAgICBwYXRobmFtZSArPSBoYXNoLmNoYXJBdCgwKSA9PT0gXCIjXCIgPyBoYXNoIDogXCIjXCIgKyBoYXNoO1xuICByZXR1cm4gcGF0aG5hbWU7XG59XG5mdW5jdGlvbiBwYXJzZVBhdGgocGF0aCkge1xuICBsZXQgcGFyc2VkUGF0aCA9IHt9O1xuICBpZiAocGF0aCkge1xuICAgIGxldCBoYXNoSW5kZXggPSBwYXRoLmluZGV4T2YoXCIjXCIpO1xuICAgIGlmIChoYXNoSW5kZXggPj0gMCkge1xuICAgICAgcGFyc2VkUGF0aC5oYXNoID0gcGF0aC5zdWJzdHJpbmcoaGFzaEluZGV4KTtcbiAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBoYXNoSW5kZXgpO1xuICAgIH1cbiAgICBsZXQgc2VhcmNoSW5kZXggPSBwYXRoLmluZGV4T2YoXCI/XCIpO1xuICAgIGlmIChzZWFyY2hJbmRleCA+PSAwKSB7XG4gICAgICBwYXJzZWRQYXRoLnNlYXJjaCA9IHBhdGguc3Vic3RyaW5nKHNlYXJjaEluZGV4KTtcbiAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBzZWFyY2hJbmRleCk7XG4gICAgfVxuICAgIGlmIChwYXRoKSB7XG4gICAgICBwYXJzZWRQYXRoLnBhdGhuYW1lID0gcGF0aDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBhcnNlZFBhdGg7XG59XG5mdW5jdGlvbiBnZXRVcmxCYXNlZEhpc3RvcnkoZ2V0TG9jYXRpb24sIGNyZWF0ZUhyZWYyLCB2YWxpZGF0ZUxvY2F0aW9uLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IHsgd2luZG93OiB3aW5kb3cyID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcsIHY1Q29tcGF0ID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gIGxldCBnbG9iYWxIaXN0b3J5ID0gd2luZG93Mi5oaXN0b3J5O1xuICBsZXQgYWN0aW9uID0gXCJQT1BcIiAvKiBQb3AgKi87XG4gIGxldCBsaXN0ZW5lciA9IG51bGw7XG4gIGxldCBpbmRleCA9IGdldEluZGV4KCk7XG4gIGlmIChpbmRleCA9PSBudWxsKSB7XG4gICAgaW5kZXggPSAwO1xuICAgIGdsb2JhbEhpc3RvcnkucmVwbGFjZVN0YXRlKHsgLi4uZ2xvYmFsSGlzdG9yeS5zdGF0ZSwgaWR4OiBpbmRleCB9LCBcIlwiKTtcbiAgfVxuICBmdW5jdGlvbiBnZXRJbmRleCgpIHtcbiAgICBsZXQgc3RhdGUgPSBnbG9iYWxIaXN0b3J5LnN0YXRlIHx8IHsgaWR4OiBudWxsIH07XG4gICAgcmV0dXJuIHN0YXRlLmlkeDtcbiAgfVxuICBmdW5jdGlvbiBoYW5kbGVQb3AoKSB7XG4gICAgYWN0aW9uID0gXCJQT1BcIiAvKiBQb3AgKi87XG4gICAgbGV0IG5leHRJbmRleCA9IGdldEluZGV4KCk7XG4gICAgbGV0IGRlbHRhID0gbmV4dEluZGV4ID09IG51bGwgPyBudWxsIDogbmV4dEluZGV4IC0gaW5kZXg7XG4gICAgaW5kZXggPSBuZXh0SW5kZXg7XG4gICAgaWYgKGxpc3RlbmVyKSB7XG4gICAgICBsaXN0ZW5lcih7IGFjdGlvbiwgbG9jYXRpb246IGhpc3RvcnkubG9jYXRpb24sIGRlbHRhIH0pO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBwdXNoKHRvLCBzdGF0ZSkge1xuICAgIGFjdGlvbiA9IFwiUFVTSFwiIC8qIFB1c2ggKi87XG4gICAgbGV0IGxvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24oaGlzdG9yeS5sb2NhdGlvbiwgdG8sIHN0YXRlKTtcbiAgICBpZiAodmFsaWRhdGVMb2NhdGlvbikgdmFsaWRhdGVMb2NhdGlvbihsb2NhdGlvbiwgdG8pO1xuICAgIGluZGV4ID0gZ2V0SW5kZXgoKSArIDE7XG4gICAgbGV0IGhpc3RvcnlTdGF0ZSA9IGdldEhpc3RvcnlTdGF0ZShsb2NhdGlvbiwgaW5kZXgpO1xuICAgIGxldCB1cmwgPSBoaXN0b3J5LmNyZWF0ZUhyZWYobG9jYXRpb24pO1xuICAgIHRyeSB7XG4gICAgICBnbG9iYWxIaXN0b3J5LnB1c2hTdGF0ZShoaXN0b3J5U3RhdGUsIFwiXCIsIHVybCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIERPTUV4Y2VwdGlvbiAmJiBlcnJvci5uYW1lID09PSBcIkRhdGFDbG9uZUVycm9yXCIpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICB3aW5kb3cyLmxvY2F0aW9uLmFzc2lnbih1cmwpO1xuICAgIH1cbiAgICBpZiAodjVDb21wYXQgJiYgbGlzdGVuZXIpIHtcbiAgICAgIGxpc3RlbmVyKHsgYWN0aW9uLCBsb2NhdGlvbjogaGlzdG9yeS5sb2NhdGlvbiwgZGVsdGE6IDEgfSk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHJlcGxhY2UyKHRvLCBzdGF0ZSkge1xuICAgIGFjdGlvbiA9IFwiUkVQTEFDRVwiIC8qIFJlcGxhY2UgKi87XG4gICAgbGV0IGxvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24oaGlzdG9yeS5sb2NhdGlvbiwgdG8sIHN0YXRlKTtcbiAgICBpZiAodmFsaWRhdGVMb2NhdGlvbikgdmFsaWRhdGVMb2NhdGlvbihsb2NhdGlvbiwgdG8pO1xuICAgIGluZGV4ID0gZ2V0SW5kZXgoKTtcbiAgICBsZXQgaGlzdG9yeVN0YXRlID0gZ2V0SGlzdG9yeVN0YXRlKGxvY2F0aW9uLCBpbmRleCk7XG4gICAgbGV0IHVybCA9IGhpc3RvcnkuY3JlYXRlSHJlZihsb2NhdGlvbik7XG4gICAgZ2xvYmFsSGlzdG9yeS5yZXBsYWNlU3RhdGUoaGlzdG9yeVN0YXRlLCBcIlwiLCB1cmwpO1xuICAgIGlmICh2NUNvbXBhdCAmJiBsaXN0ZW5lcikge1xuICAgICAgbGlzdGVuZXIoeyBhY3Rpb24sIGxvY2F0aW9uOiBoaXN0b3J5LmxvY2F0aW9uLCBkZWx0YTogMCB9KTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gY3JlYXRlVVJMKHRvKSB7XG4gICAgbGV0IGJhc2UgPSB3aW5kb3cyLmxvY2F0aW9uLm9yaWdpbiAhPT0gXCJudWxsXCIgPyB3aW5kb3cyLmxvY2F0aW9uLm9yaWdpbiA6IHdpbmRvdzIubG9jYXRpb24uaHJlZjtcbiAgICBsZXQgaHJlZiA9IHR5cGVvZiB0byA9PT0gXCJzdHJpbmdcIiA/IHRvIDogY3JlYXRlUGF0aCh0byk7XG4gICAgaHJlZiA9IGhyZWYucmVwbGFjZSgvICQvLCBcIiUyMFwiKTtcbiAgICBpbnZhcmlhbnQoXG4gICAgICBiYXNlLFxuICAgICAgYE5vIHdpbmRvdy5sb2NhdGlvbi4ob3JpZ2lufGhyZWYpIGF2YWlsYWJsZSB0byBjcmVhdGUgVVJMIGZvciBocmVmOiAke2hyZWZ9YFxuICAgICk7XG4gICAgcmV0dXJuIG5ldyBVUkwoaHJlZiwgYmFzZSk7XG4gIH1cbiAgbGV0IGhpc3RvcnkgPSB7XG4gICAgZ2V0IGFjdGlvbigpIHtcbiAgICAgIHJldHVybiBhY3Rpb247XG4gICAgfSxcbiAgICBnZXQgbG9jYXRpb24oKSB7XG4gICAgICByZXR1cm4gZ2V0TG9jYXRpb24od2luZG93MiwgZ2xvYmFsSGlzdG9yeSk7XG4gICAgfSxcbiAgICBsaXN0ZW4oZm4pIHtcbiAgICAgIGlmIChsaXN0ZW5lcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIGhpc3Rvcnkgb25seSBhY2NlcHRzIG9uZSBhY3RpdmUgbGlzdGVuZXJcIik7XG4gICAgICB9XG4gICAgICB3aW5kb3cyLmFkZEV2ZW50TGlzdGVuZXIoUG9wU3RhdGVFdmVudFR5cGUsIGhhbmRsZVBvcCk7XG4gICAgICBsaXN0ZW5lciA9IGZuO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgd2luZG93Mi5yZW1vdmVFdmVudExpc3RlbmVyKFBvcFN0YXRlRXZlbnRUeXBlLCBoYW5kbGVQb3ApO1xuICAgICAgICBsaXN0ZW5lciA9IG51bGw7XG4gICAgICB9O1xuICAgIH0sXG4gICAgY3JlYXRlSHJlZih0bykge1xuICAgICAgcmV0dXJuIGNyZWF0ZUhyZWYyKHdpbmRvdzIsIHRvKTtcbiAgICB9LFxuICAgIGNyZWF0ZVVSTCxcbiAgICBlbmNvZGVMb2NhdGlvbih0bykge1xuICAgICAgbGV0IHVybCA9IGNyZWF0ZVVSTCh0byk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXRobmFtZTogdXJsLnBhdGhuYW1lLFxuICAgICAgICBzZWFyY2g6IHVybC5zZWFyY2gsXG4gICAgICAgIGhhc2g6IHVybC5oYXNoXG4gICAgICB9O1xuICAgIH0sXG4gICAgcHVzaCxcbiAgICByZXBsYWNlOiByZXBsYWNlMixcbiAgICBnbyhuKSB7XG4gICAgICByZXR1cm4gZ2xvYmFsSGlzdG9yeS5nbyhuKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiBoaXN0b3J5O1xufVxuXG4vLyBsaWIvcm91dGVyL3V0aWxzLnRzXG52YXIgaW1tdXRhYmxlUm91dGVLZXlzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW1xuICBcImxhenlcIixcbiAgXCJjYXNlU2Vuc2l0aXZlXCIsXG4gIFwicGF0aFwiLFxuICBcImlkXCIsXG4gIFwiaW5kZXhcIixcbiAgXCJjaGlsZHJlblwiXG5dKTtcbmZ1bmN0aW9uIGlzSW5kZXhSb3V0ZShyb3V0ZSkge1xuICByZXR1cm4gcm91dGUuaW5kZXggPT09IHRydWU7XG59XG5mdW5jdGlvbiBjb252ZXJ0Um91dGVzVG9EYXRhUm91dGVzKHJvdXRlcywgbWFwUm91dGVQcm9wZXJ0aWVzMiwgcGFyZW50UGF0aCA9IFtdLCBtYW5pZmVzdCA9IHt9KSB7XG4gIHJldHVybiByb3V0ZXMubWFwKChyb3V0ZSwgaW5kZXgpID0+IHtcbiAgICBsZXQgdHJlZVBhdGggPSBbLi4ucGFyZW50UGF0aCwgU3RyaW5nKGluZGV4KV07XG4gICAgbGV0IGlkID0gdHlwZW9mIHJvdXRlLmlkID09PSBcInN0cmluZ1wiID8gcm91dGUuaWQgOiB0cmVlUGF0aC5qb2luKFwiLVwiKTtcbiAgICBpbnZhcmlhbnQoXG4gICAgICByb3V0ZS5pbmRleCAhPT0gdHJ1ZSB8fCAhcm91dGUuY2hpbGRyZW4sXG4gICAgICBgQ2Fubm90IHNwZWNpZnkgY2hpbGRyZW4gb24gYW4gaW5kZXggcm91dGVgXG4gICAgKTtcbiAgICBpbnZhcmlhbnQoXG4gICAgICAhbWFuaWZlc3RbaWRdLFxuICAgICAgYEZvdW5kIGEgcm91dGUgaWQgY29sbGlzaW9uIG9uIGlkIFwiJHtpZH1cIi4gIFJvdXRlIGlkJ3MgbXVzdCBiZSBnbG9iYWxseSB1bmlxdWUgd2l0aGluIERhdGEgUm91dGVyIHVzYWdlc2BcbiAgICApO1xuICAgIGlmIChpc0luZGV4Um91dGUocm91dGUpKSB7XG4gICAgICBsZXQgaW5kZXhSb3V0ZSA9IHtcbiAgICAgICAgLi4ucm91dGUsXG4gICAgICAgIC4uLm1hcFJvdXRlUHJvcGVydGllczIocm91dGUpLFxuICAgICAgICBpZFxuICAgICAgfTtcbiAgICAgIG1hbmlmZXN0W2lkXSA9IGluZGV4Um91dGU7XG4gICAgICByZXR1cm4gaW5kZXhSb3V0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHBhdGhPckxheW91dFJvdXRlID0ge1xuICAgICAgICAuLi5yb3V0ZSxcbiAgICAgICAgLi4ubWFwUm91dGVQcm9wZXJ0aWVzMihyb3V0ZSksXG4gICAgICAgIGlkLFxuICAgICAgICBjaGlsZHJlbjogdm9pZCAwXG4gICAgICB9O1xuICAgICAgbWFuaWZlc3RbaWRdID0gcGF0aE9yTGF5b3V0Um91dGU7XG4gICAgICBpZiAocm91dGUuY2hpbGRyZW4pIHtcbiAgICAgICAgcGF0aE9yTGF5b3V0Um91dGUuY2hpbGRyZW4gPSBjb252ZXJ0Um91dGVzVG9EYXRhUm91dGVzKFxuICAgICAgICAgIHJvdXRlLmNoaWxkcmVuLFxuICAgICAgICAgIG1hcFJvdXRlUHJvcGVydGllczIsXG4gICAgICAgICAgdHJlZVBhdGgsXG4gICAgICAgICAgbWFuaWZlc3RcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXRoT3JMYXlvdXRSb3V0ZTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gbWF0Y2hSb3V0ZXMocm91dGVzLCBsb2NhdGlvbkFyZywgYmFzZW5hbWUgPSBcIi9cIikge1xuICByZXR1cm4gbWF0Y2hSb3V0ZXNJbXBsKHJvdXRlcywgbG9jYXRpb25BcmcsIGJhc2VuYW1lLCBmYWxzZSk7XG59XG5mdW5jdGlvbiBtYXRjaFJvdXRlc0ltcGwocm91dGVzLCBsb2NhdGlvbkFyZywgYmFzZW5hbWUsIGFsbG93UGFydGlhbCkge1xuICBsZXQgbG9jYXRpb24gPSB0eXBlb2YgbG9jYXRpb25BcmcgPT09IFwic3RyaW5nXCIgPyBwYXJzZVBhdGgobG9jYXRpb25BcmcpIDogbG9jYXRpb25Bcmc7XG4gIGxldCBwYXRobmFtZSA9IHN0cmlwQmFzZW5hbWUobG9jYXRpb24ucGF0aG5hbWUgfHwgXCIvXCIsIGJhc2VuYW1lKTtcbiAgaWYgKHBhdGhuYW1lID09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBsZXQgYnJhbmNoZXMgPSBmbGF0dGVuUm91dGVzKHJvdXRlcyk7XG4gIHJhbmtSb3V0ZUJyYW5jaGVzKGJyYW5jaGVzKTtcbiAgbGV0IG1hdGNoZXMgPSBudWxsO1xuICBmb3IgKGxldCBpID0gMDsgbWF0Y2hlcyA9PSBudWxsICYmIGkgPCBicmFuY2hlcy5sZW5ndGg7ICsraSkge1xuICAgIGxldCBkZWNvZGVkID0gZGVjb2RlUGF0aChwYXRobmFtZSk7XG4gICAgbWF0Y2hlcyA9IG1hdGNoUm91dGVCcmFuY2goXG4gICAgICBicmFuY2hlc1tpXSxcbiAgICAgIGRlY29kZWQsXG4gICAgICBhbGxvd1BhcnRpYWxcbiAgICApO1xuICB9XG4gIHJldHVybiBtYXRjaGVzO1xufVxuZnVuY3Rpb24gY29udmVydFJvdXRlTWF0Y2hUb1VpTWF0Y2gobWF0Y2gsIGxvYWRlckRhdGEpIHtcbiAgbGV0IHsgcm91dGUsIHBhdGhuYW1lLCBwYXJhbXMgfSA9IG1hdGNoO1xuICByZXR1cm4ge1xuICAgIGlkOiByb3V0ZS5pZCxcbiAgICBwYXRobmFtZSxcbiAgICBwYXJhbXMsXG4gICAgZGF0YTogbG9hZGVyRGF0YVtyb3V0ZS5pZF0sXG4gICAgaGFuZGxlOiByb3V0ZS5oYW5kbGVcbiAgfTtcbn1cbmZ1bmN0aW9uIGZsYXR0ZW5Sb3V0ZXMocm91dGVzLCBicmFuY2hlcyA9IFtdLCBwYXJlbnRzTWV0YSA9IFtdLCBwYXJlbnRQYXRoID0gXCJcIikge1xuICBsZXQgZmxhdHRlblJvdXRlID0gKHJvdXRlLCBpbmRleCwgcmVsYXRpdmVQYXRoKSA9PiB7XG4gICAgbGV0IG1ldGEgPSB7XG4gICAgICByZWxhdGl2ZVBhdGg6IHJlbGF0aXZlUGF0aCA9PT0gdm9pZCAwID8gcm91dGUucGF0aCB8fCBcIlwiIDogcmVsYXRpdmVQYXRoLFxuICAgICAgY2FzZVNlbnNpdGl2ZTogcm91dGUuY2FzZVNlbnNpdGl2ZSA9PT0gdHJ1ZSxcbiAgICAgIGNoaWxkcmVuSW5kZXg6IGluZGV4LFxuICAgICAgcm91dGVcbiAgICB9O1xuICAgIGlmIChtZXRhLnJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgICAgaW52YXJpYW50KFxuICAgICAgICBtZXRhLnJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKHBhcmVudFBhdGgpLFxuICAgICAgICBgQWJzb2x1dGUgcm91dGUgcGF0aCBcIiR7bWV0YS5yZWxhdGl2ZVBhdGh9XCIgbmVzdGVkIHVuZGVyIHBhdGggXCIke3BhcmVudFBhdGh9XCIgaXMgbm90IHZhbGlkLiBBbiBhYnNvbHV0ZSBjaGlsZCByb3V0ZSBwYXRoIG11c3Qgc3RhcnQgd2l0aCB0aGUgY29tYmluZWQgcGF0aCBvZiBhbGwgaXRzIHBhcmVudCByb3V0ZXMuYFxuICAgICAgKTtcbiAgICAgIG1ldGEucmVsYXRpdmVQYXRoID0gbWV0YS5yZWxhdGl2ZVBhdGguc2xpY2UocGFyZW50UGF0aC5sZW5ndGgpO1xuICAgIH1cbiAgICBsZXQgcGF0aCA9IGpvaW5QYXRocyhbcGFyZW50UGF0aCwgbWV0YS5yZWxhdGl2ZVBhdGhdKTtcbiAgICBsZXQgcm91dGVzTWV0YSA9IHBhcmVudHNNZXRhLmNvbmNhdChtZXRhKTtcbiAgICBpZiAocm91dGUuY2hpbGRyZW4gJiYgcm91dGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgaW52YXJpYW50KFxuICAgICAgICAvLyBPdXIgdHlwZXMga25vdyBiZXR0ZXIsIGJ1dCBydW50aW1lIEpTIG1heSBub3QhXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgcm91dGUuaW5kZXggIT09IHRydWUsXG4gICAgICAgIGBJbmRleCByb3V0ZXMgbXVzdCBub3QgaGF2ZSBjaGlsZCByb3V0ZXMuIFBsZWFzZSByZW1vdmUgYWxsIGNoaWxkIHJvdXRlcyBmcm9tIHJvdXRlIHBhdGggXCIke3BhdGh9XCIuYFxuICAgICAgKTtcbiAgICAgIGZsYXR0ZW5Sb3V0ZXMocm91dGUuY2hpbGRyZW4sIGJyYW5jaGVzLCByb3V0ZXNNZXRhLCBwYXRoKTtcbiAgICB9XG4gICAgaWYgKHJvdXRlLnBhdGggPT0gbnVsbCAmJiAhcm91dGUuaW5kZXgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYnJhbmNoZXMucHVzaCh7XG4gICAgICBwYXRoLFxuICAgICAgc2NvcmU6IGNvbXB1dGVTY29yZShwYXRoLCByb3V0ZS5pbmRleCksXG4gICAgICByb3V0ZXNNZXRhXG4gICAgfSk7XG4gIH07XG4gIHJvdXRlcy5mb3JFYWNoKChyb3V0ZSwgaW5kZXgpID0+IHtcbiAgICBpZiAocm91dGUucGF0aCA9PT0gXCJcIiB8fCAhcm91dGUucGF0aD8uaW5jbHVkZXMoXCI/XCIpKSB7XG4gICAgICBmbGF0dGVuUm91dGUocm91dGUsIGluZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChsZXQgZXhwbG9kZWQgb2YgZXhwbG9kZU9wdGlvbmFsU2VnbWVudHMocm91dGUucGF0aCkpIHtcbiAgICAgICAgZmxhdHRlblJvdXRlKHJvdXRlLCBpbmRleCwgZXhwbG9kZWQpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiBicmFuY2hlcztcbn1cbmZ1bmN0aW9uIGV4cGxvZGVPcHRpb25hbFNlZ21lbnRzKHBhdGgpIHtcbiAgbGV0IHNlZ21lbnRzID0gcGF0aC5zcGxpdChcIi9cIik7XG4gIGlmIChzZWdtZW50cy5sZW5ndGggPT09IDApIHJldHVybiBbXTtcbiAgbGV0IFtmaXJzdCwgLi4ucmVzdF0gPSBzZWdtZW50cztcbiAgbGV0IGlzT3B0aW9uYWwgPSBmaXJzdC5lbmRzV2l0aChcIj9cIik7XG4gIGxldCByZXF1aXJlZCA9IGZpcnN0LnJlcGxhY2UoL1xcPyQvLCBcIlwiKTtcbiAgaWYgKHJlc3QubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGlzT3B0aW9uYWwgPyBbcmVxdWlyZWQsIFwiXCJdIDogW3JlcXVpcmVkXTtcbiAgfVxuICBsZXQgcmVzdEV4cGxvZGVkID0gZXhwbG9kZU9wdGlvbmFsU2VnbWVudHMocmVzdC5qb2luKFwiL1wiKSk7XG4gIGxldCByZXN1bHQgPSBbXTtcbiAgcmVzdWx0LnB1c2goXG4gICAgLi4ucmVzdEV4cGxvZGVkLm1hcChcbiAgICAgIChzdWJwYXRoKSA9PiBzdWJwYXRoID09PSBcIlwiID8gcmVxdWlyZWQgOiBbcmVxdWlyZWQsIHN1YnBhdGhdLmpvaW4oXCIvXCIpXG4gICAgKVxuICApO1xuICBpZiAoaXNPcHRpb25hbCkge1xuICAgIHJlc3VsdC5wdXNoKC4uLnJlc3RFeHBsb2RlZCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdC5tYXAoXG4gICAgKGV4cGxvZGVkKSA9PiBwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpICYmIGV4cGxvZGVkID09PSBcIlwiID8gXCIvXCIgOiBleHBsb2RlZFxuICApO1xufVxuZnVuY3Rpb24gcmFua1JvdXRlQnJhbmNoZXMoYnJhbmNoZXMpIHtcbiAgYnJhbmNoZXMuc29ydChcbiAgICAoYSwgYikgPT4gYS5zY29yZSAhPT0gYi5zY29yZSA/IGIuc2NvcmUgLSBhLnNjb3JlIDogY29tcGFyZUluZGV4ZXMoXG4gICAgICBhLnJvdXRlc01ldGEubWFwKChtZXRhKSA9PiBtZXRhLmNoaWxkcmVuSW5kZXgpLFxuICAgICAgYi5yb3V0ZXNNZXRhLm1hcCgobWV0YSkgPT4gbWV0YS5jaGlsZHJlbkluZGV4KVxuICAgIClcbiAgKTtcbn1cbnZhciBwYXJhbVJlID0gL146W1xcdy1dKyQvO1xudmFyIGR5bmFtaWNTZWdtZW50VmFsdWUgPSAzO1xudmFyIGluZGV4Um91dGVWYWx1ZSA9IDI7XG52YXIgZW1wdHlTZWdtZW50VmFsdWUgPSAxO1xudmFyIHN0YXRpY1NlZ21lbnRWYWx1ZSA9IDEwO1xudmFyIHNwbGF0UGVuYWx0eSA9IC0yO1xudmFyIGlzU3BsYXQgPSAocykgPT4gcyA9PT0gXCIqXCI7XG5mdW5jdGlvbiBjb21wdXRlU2NvcmUocGF0aCwgaW5kZXgpIHtcbiAgbGV0IHNlZ21lbnRzID0gcGF0aC5zcGxpdChcIi9cIik7XG4gIGxldCBpbml0aWFsU2NvcmUgPSBzZWdtZW50cy5sZW5ndGg7XG4gIGlmIChzZWdtZW50cy5zb21lKGlzU3BsYXQpKSB7XG4gICAgaW5pdGlhbFNjb3JlICs9IHNwbGF0UGVuYWx0eTtcbiAgfVxuICBpZiAoaW5kZXgpIHtcbiAgICBpbml0aWFsU2NvcmUgKz0gaW5kZXhSb3V0ZVZhbHVlO1xuICB9XG4gIHJldHVybiBzZWdtZW50cy5maWx0ZXIoKHMpID0+ICFpc1NwbGF0KHMpKS5yZWR1Y2UoXG4gICAgKHNjb3JlLCBzZWdtZW50KSA9PiBzY29yZSArIChwYXJhbVJlLnRlc3Qoc2VnbWVudCkgPyBkeW5hbWljU2VnbWVudFZhbHVlIDogc2VnbWVudCA9PT0gXCJcIiA/IGVtcHR5U2VnbWVudFZhbHVlIDogc3RhdGljU2VnbWVudFZhbHVlKSxcbiAgICBpbml0aWFsU2NvcmVcbiAgKTtcbn1cbmZ1bmN0aW9uIGNvbXBhcmVJbmRleGVzKGEsIGIpIHtcbiAgbGV0IHNpYmxpbmdzID0gYS5sZW5ndGggPT09IGIubGVuZ3RoICYmIGEuc2xpY2UoMCwgLTEpLmV2ZXJ5KChuLCBpKSA9PiBuID09PSBiW2ldKTtcbiAgcmV0dXJuIHNpYmxpbmdzID8gKFxuICAgIC8vIElmIHR3byByb3V0ZXMgYXJlIHNpYmxpbmdzLCB3ZSBzaG91bGQgdHJ5IHRvIG1hdGNoIHRoZSBlYXJsaWVyIHNpYmxpbmdcbiAgICAvLyBmaXJzdC4gVGhpcyBhbGxvd3MgcGVvcGxlIHRvIGhhdmUgZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlciB0aGUgbWF0Y2hpbmdcbiAgICAvLyBiZWhhdmlvciBieSBzaW1wbHkgcHV0dGluZyByb3V0ZXMgd2l0aCBpZGVudGljYWwgcGF0aHMgaW4gdGhlIG9yZGVyIHRoZXlcbiAgICAvLyB3YW50IHRoZW0gdHJpZWQuXG4gICAgYVthLmxlbmd0aCAtIDFdIC0gYltiLmxlbmd0aCAtIDFdXG4gICkgOiAoXG4gICAgLy8gT3RoZXJ3aXNlLCBpdCBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlIHRvIHJhbmsgbm9uLXNpYmxpbmdzIGJ5IGluZGV4LFxuICAgIC8vIHNvIHRoZXkgc29ydCBlcXVhbGx5LlxuICAgIDBcbiAgKTtcbn1cbmZ1bmN0aW9uIG1hdGNoUm91dGVCcmFuY2goYnJhbmNoLCBwYXRobmFtZSwgYWxsb3dQYXJ0aWFsID0gZmFsc2UpIHtcbiAgbGV0IHsgcm91dGVzTWV0YSB9ID0gYnJhbmNoO1xuICBsZXQgbWF0Y2hlZFBhcmFtcyA9IHt9O1xuICBsZXQgbWF0Y2hlZFBhdGhuYW1lID0gXCIvXCI7XG4gIGxldCBtYXRjaGVzID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcm91dGVzTWV0YS5sZW5ndGg7ICsraSkge1xuICAgIGxldCBtZXRhID0gcm91dGVzTWV0YVtpXTtcbiAgICBsZXQgZW5kID0gaSA9PT0gcm91dGVzTWV0YS5sZW5ndGggLSAxO1xuICAgIGxldCByZW1haW5pbmdQYXRobmFtZSA9IG1hdGNoZWRQYXRobmFtZSA9PT0gXCIvXCIgPyBwYXRobmFtZSA6IHBhdGhuYW1lLnNsaWNlKG1hdGNoZWRQYXRobmFtZS5sZW5ndGgpIHx8IFwiL1wiO1xuICAgIGxldCBtYXRjaCA9IG1hdGNoUGF0aChcbiAgICAgIHsgcGF0aDogbWV0YS5yZWxhdGl2ZVBhdGgsIGNhc2VTZW5zaXRpdmU6IG1ldGEuY2FzZVNlbnNpdGl2ZSwgZW5kIH0sXG4gICAgICByZW1haW5pbmdQYXRobmFtZVxuICAgICk7XG4gICAgbGV0IHJvdXRlID0gbWV0YS5yb3V0ZTtcbiAgICBpZiAoIW1hdGNoICYmIGVuZCAmJiBhbGxvd1BhcnRpYWwgJiYgIXJvdXRlc01ldGFbcm91dGVzTWV0YS5sZW5ndGggLSAxXS5yb3V0ZS5pbmRleCkge1xuICAgICAgbWF0Y2ggPSBtYXRjaFBhdGgoXG4gICAgICAgIHtcbiAgICAgICAgICBwYXRoOiBtZXRhLnJlbGF0aXZlUGF0aCxcbiAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBtZXRhLmNhc2VTZW5zaXRpdmUsXG4gICAgICAgICAgZW5kOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICByZW1haW5pbmdQYXRobmFtZVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIE9iamVjdC5hc3NpZ24obWF0Y2hlZFBhcmFtcywgbWF0Y2gucGFyYW1zKTtcbiAgICBtYXRjaGVzLnB1c2goe1xuICAgICAgLy8gVE9ETzogQ2FuIHRoaXMgYXMgYmUgYXZvaWRlZD9cbiAgICAgIHBhcmFtczogbWF0Y2hlZFBhcmFtcyxcbiAgICAgIHBhdGhuYW1lOiBqb2luUGF0aHMoW21hdGNoZWRQYXRobmFtZSwgbWF0Y2gucGF0aG5hbWVdKSxcbiAgICAgIHBhdGhuYW1lQmFzZTogbm9ybWFsaXplUGF0aG5hbWUoXG4gICAgICAgIGpvaW5QYXRocyhbbWF0Y2hlZFBhdGhuYW1lLCBtYXRjaC5wYXRobmFtZUJhc2VdKVxuICAgICAgKSxcbiAgICAgIHJvdXRlXG4gICAgfSk7XG4gICAgaWYgKG1hdGNoLnBhdGhuYW1lQmFzZSAhPT0gXCIvXCIpIHtcbiAgICAgIG1hdGNoZWRQYXRobmFtZSA9IGpvaW5QYXRocyhbbWF0Y2hlZFBhdGhuYW1lLCBtYXRjaC5wYXRobmFtZUJhc2VdKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1hdGNoZXM7XG59XG5mdW5jdGlvbiBnZW5lcmF0ZVBhdGgob3JpZ2luYWxQYXRoLCBwYXJhbXMgPSB7fSkge1xuICBsZXQgcGF0aCA9IG9yaWdpbmFsUGF0aDtcbiAgaWYgKHBhdGguZW5kc1dpdGgoXCIqXCIpICYmIHBhdGggIT09IFwiKlwiICYmICFwYXRoLmVuZHNXaXRoKFwiLypcIikpIHtcbiAgICB3YXJuaW5nKFxuICAgICAgZmFsc2UsXG4gICAgICBgUm91dGUgcGF0aCBcIiR7cGF0aH1cIiB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYgaXQgd2VyZSBcIiR7cGF0aC5yZXBsYWNlKC9cXCokLywgXCIvKlwiKX1cIiBiZWNhdXNlIHRoZSBcXGAqXFxgIGNoYXJhY3RlciBtdXN0IGFsd2F5cyBmb2xsb3cgYSBcXGAvXFxgIGluIHRoZSBwYXR0ZXJuLiBUbyBnZXQgcmlkIG9mIHRoaXMgd2FybmluZywgcGxlYXNlIGNoYW5nZSB0aGUgcm91dGUgcGF0aCB0byBcIiR7cGF0aC5yZXBsYWNlKC9cXCokLywgXCIvKlwiKX1cIi5gXG4gICAgKTtcbiAgICBwYXRoID0gcGF0aC5yZXBsYWNlKC9cXCokLywgXCIvKlwiKTtcbiAgfVxuICBjb25zdCBwcmVmaXggPSBwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpID8gXCIvXCIgOiBcIlwiO1xuICBjb25zdCBzdHJpbmdpZnkgPSAocCkgPT4gcCA9PSBudWxsID8gXCJcIiA6IHR5cGVvZiBwID09PSBcInN0cmluZ1wiID8gcCA6IFN0cmluZyhwKTtcbiAgY29uc3Qgc2VnbWVudHMgPSBwYXRoLnNwbGl0KC9cXC8rLykubWFwKChzZWdtZW50LCBpbmRleCwgYXJyYXkpID0+IHtcbiAgICBjb25zdCBpc0xhc3RTZWdtZW50ID0gaW5kZXggPT09IGFycmF5Lmxlbmd0aCAtIDE7XG4gICAgaWYgKGlzTGFzdFNlZ21lbnQgJiYgc2VnbWVudCA9PT0gXCIqXCIpIHtcbiAgICAgIGNvbnN0IHN0YXIgPSBcIipcIjtcbiAgICAgIHJldHVybiBzdHJpbmdpZnkocGFyYW1zW3N0YXJdKTtcbiAgICB9XG4gICAgY29uc3Qga2V5TWF0Y2ggPSBzZWdtZW50Lm1hdGNoKC9eOihbXFx3LV0rKShcXD8/KSQvKTtcbiAgICBpZiAoa2V5TWF0Y2gpIHtcbiAgICAgIGNvbnN0IFssIGtleSwgb3B0aW9uYWxdID0ga2V5TWF0Y2g7XG4gICAgICBsZXQgcGFyYW0gPSBwYXJhbXNba2V5XTtcbiAgICAgIGludmFyaWFudChvcHRpb25hbCA9PT0gXCI/XCIgfHwgcGFyYW0gIT0gbnVsbCwgYE1pc3NpbmcgXCI6JHtrZXl9XCIgcGFyYW1gKTtcbiAgICAgIHJldHVybiBzdHJpbmdpZnkocGFyYW0pO1xuICAgIH1cbiAgICByZXR1cm4gc2VnbWVudC5yZXBsYWNlKC9cXD8kL2csIFwiXCIpO1xuICB9KS5maWx0ZXIoKHNlZ21lbnQpID0+ICEhc2VnbWVudCk7XG4gIHJldHVybiBwcmVmaXggKyBzZWdtZW50cy5qb2luKFwiL1wiKTtcbn1cbmZ1bmN0aW9uIG1hdGNoUGF0aChwYXR0ZXJuLCBwYXRobmFtZSkge1xuICBpZiAodHlwZW9mIHBhdHRlcm4gPT09IFwic3RyaW5nXCIpIHtcbiAgICBwYXR0ZXJuID0geyBwYXRoOiBwYXR0ZXJuLCBjYXNlU2Vuc2l0aXZlOiBmYWxzZSwgZW5kOiB0cnVlIH07XG4gIH1cbiAgbGV0IFttYXRjaGVyLCBjb21waWxlZFBhcmFtc10gPSBjb21waWxlUGF0aChcbiAgICBwYXR0ZXJuLnBhdGgsXG4gICAgcGF0dGVybi5jYXNlU2Vuc2l0aXZlLFxuICAgIHBhdHRlcm4uZW5kXG4gICk7XG4gIGxldCBtYXRjaCA9IHBhdGhuYW1lLm1hdGNoKG1hdGNoZXIpO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gbnVsbDtcbiAgbGV0IG1hdGNoZWRQYXRobmFtZSA9IG1hdGNoWzBdO1xuICBsZXQgcGF0aG5hbWVCYXNlID0gbWF0Y2hlZFBhdGhuYW1lLnJlcGxhY2UoLyguKVxcLyskLywgXCIkMVwiKTtcbiAgbGV0IGNhcHR1cmVHcm91cHMgPSBtYXRjaC5zbGljZSgxKTtcbiAgbGV0IHBhcmFtcyA9IGNvbXBpbGVkUGFyYW1zLnJlZHVjZShcbiAgICAobWVtbzIsIHsgcGFyYW1OYW1lLCBpc09wdGlvbmFsIH0sIGluZGV4KSA9PiB7XG4gICAgICBpZiAocGFyYW1OYW1lID09PSBcIipcIikge1xuICAgICAgICBsZXQgc3BsYXRWYWx1ZSA9IGNhcHR1cmVHcm91cHNbaW5kZXhdIHx8IFwiXCI7XG4gICAgICAgIHBhdGhuYW1lQmFzZSA9IG1hdGNoZWRQYXRobmFtZS5zbGljZSgwLCBtYXRjaGVkUGF0aG5hbWUubGVuZ3RoIC0gc3BsYXRWYWx1ZS5sZW5ndGgpLnJlcGxhY2UoLyguKVxcLyskLywgXCIkMVwiKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZhbHVlID0gY2FwdHVyZUdyb3Vwc1tpbmRleF07XG4gICAgICBpZiAoaXNPcHRpb25hbCAmJiAhdmFsdWUpIHtcbiAgICAgICAgbWVtbzJbcGFyYW1OYW1lXSA9IHZvaWQgMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lbW8yW3BhcmFtTmFtZV0gPSAodmFsdWUgfHwgXCJcIikucmVwbGFjZSgvJTJGL2csIFwiL1wiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtZW1vMjtcbiAgICB9LFxuICAgIHt9XG4gICk7XG4gIHJldHVybiB7XG4gICAgcGFyYW1zLFxuICAgIHBhdGhuYW1lOiBtYXRjaGVkUGF0aG5hbWUsXG4gICAgcGF0aG5hbWVCYXNlLFxuICAgIHBhdHRlcm5cbiAgfTtcbn1cbmZ1bmN0aW9uIGNvbXBpbGVQYXRoKHBhdGgsIGNhc2VTZW5zaXRpdmUgPSBmYWxzZSwgZW5kID0gdHJ1ZSkge1xuICB3YXJuaW5nKFxuICAgIHBhdGggPT09IFwiKlwiIHx8ICFwYXRoLmVuZHNXaXRoKFwiKlwiKSB8fCBwYXRoLmVuZHNXaXRoKFwiLypcIiksXG4gICAgYFJvdXRlIHBhdGggXCIke3BhdGh9XCIgd2lsbCBiZSB0cmVhdGVkIGFzIGlmIGl0IHdlcmUgXCIke3BhdGgucmVwbGFjZSgvXFwqJC8sIFwiLypcIil9XCIgYmVjYXVzZSB0aGUgXFxgKlxcYCBjaGFyYWN0ZXIgbXVzdCBhbHdheXMgZm9sbG93IGEgXFxgL1xcYCBpbiB0aGUgcGF0dGVybi4gVG8gZ2V0IHJpZCBvZiB0aGlzIHdhcm5pbmcsIHBsZWFzZSBjaGFuZ2UgdGhlIHJvdXRlIHBhdGggdG8gXCIke3BhdGgucmVwbGFjZSgvXFwqJC8sIFwiLypcIil9XCIuYFxuICApO1xuICBsZXQgcGFyYW1zID0gW107XG4gIGxldCByZWdleHBTb3VyY2UgPSBcIl5cIiArIHBhdGgucmVwbGFjZSgvXFwvKlxcKj8kLywgXCJcIikucmVwbGFjZSgvXlxcLyovLCBcIi9cIikucmVwbGFjZSgvW1xcXFwuKiteJHt9fCgpW1xcXV0vZywgXCJcXFxcJCZcIikucmVwbGFjZShcbiAgICAvXFwvOihbXFx3LV0rKShcXD8pPy9nLFxuICAgIChfLCBwYXJhbU5hbWUsIGlzT3B0aW9uYWwpID0+IHtcbiAgICAgIHBhcmFtcy5wdXNoKHsgcGFyYW1OYW1lLCBpc09wdGlvbmFsOiBpc09wdGlvbmFsICE9IG51bGwgfSk7XG4gICAgICByZXR1cm4gaXNPcHRpb25hbCA/IFwiLz8oW15cXFxcL10rKT9cIiA6IFwiLyhbXlxcXFwvXSspXCI7XG4gICAgfVxuICApO1xuICBpZiAocGF0aC5lbmRzV2l0aChcIipcIikpIHtcbiAgICBwYXJhbXMucHVzaCh7IHBhcmFtTmFtZTogXCIqXCIgfSk7XG4gICAgcmVnZXhwU291cmNlICs9IHBhdGggPT09IFwiKlwiIHx8IHBhdGggPT09IFwiLypcIiA/IFwiKC4qKSRcIiA6IFwiKD86XFxcXC8oLispfFxcXFwvKikkXCI7XG4gIH0gZWxzZSBpZiAoZW5kKSB7XG4gICAgcmVnZXhwU291cmNlICs9IFwiXFxcXC8qJFwiO1xuICB9IGVsc2UgaWYgKHBhdGggIT09IFwiXCIgJiYgcGF0aCAhPT0gXCIvXCIpIHtcbiAgICByZWdleHBTb3VyY2UgKz0gXCIoPzooPz1cXFxcL3wkKSlcIjtcbiAgfSBlbHNlIHtcbiAgfVxuICBsZXQgbWF0Y2hlciA9IG5ldyBSZWdFeHAocmVnZXhwU291cmNlLCBjYXNlU2Vuc2l0aXZlID8gdm9pZCAwIDogXCJpXCIpO1xuICByZXR1cm4gW21hdGNoZXIsIHBhcmFtc107XG59XG5mdW5jdGlvbiBkZWNvZGVQYXRoKHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHZhbHVlLnNwbGl0KFwiL1wiKS5tYXAoKHYpID0+IGRlY29kZVVSSUNvbXBvbmVudCh2KS5yZXBsYWNlKC9cXC8vZywgXCIlMkZcIikpLmpvaW4oXCIvXCIpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHdhcm5pbmcoXG4gICAgICBmYWxzZSxcbiAgICAgIGBUaGUgVVJMIHBhdGggXCIke3ZhbHVlfVwiIGNvdWxkIG5vdCBiZSBkZWNvZGVkIGJlY2F1c2UgaXQgaXMgaXMgYSBtYWxmb3JtZWQgVVJMIHNlZ21lbnQuIFRoaXMgaXMgcHJvYmFibHkgZHVlIHRvIGEgYmFkIHBlcmNlbnQgZW5jb2RpbmcgKCR7ZXJyb3J9KS5gXG4gICAgKTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cbmZ1bmN0aW9uIHN0cmlwQmFzZW5hbWUocGF0aG5hbWUsIGJhc2VuYW1lKSB7XG4gIGlmIChiYXNlbmFtZSA9PT0gXCIvXCIpIHJldHVybiBwYXRobmFtZTtcbiAgaWYgKCFwYXRobmFtZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoYmFzZW5hbWUudG9Mb3dlckNhc2UoKSkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBsZXQgc3RhcnRJbmRleCA9IGJhc2VuYW1lLmVuZHNXaXRoKFwiL1wiKSA/IGJhc2VuYW1lLmxlbmd0aCAtIDEgOiBiYXNlbmFtZS5sZW5ndGg7XG4gIGxldCBuZXh0Q2hhciA9IHBhdGhuYW1lLmNoYXJBdChzdGFydEluZGV4KTtcbiAgaWYgKG5leHRDaGFyICYmIG5leHRDaGFyICE9PSBcIi9cIikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBwYXRobmFtZS5zbGljZShzdGFydEluZGV4KSB8fCBcIi9cIjtcbn1cbmZ1bmN0aW9uIHJlc29sdmVQYXRoKHRvLCBmcm9tUGF0aG5hbWUgPSBcIi9cIikge1xuICBsZXQge1xuICAgIHBhdGhuYW1lOiB0b1BhdGhuYW1lLFxuICAgIHNlYXJjaCA9IFwiXCIsXG4gICAgaGFzaCA9IFwiXCJcbiAgfSA9IHR5cGVvZiB0byA9PT0gXCJzdHJpbmdcIiA/IHBhcnNlUGF0aCh0bykgOiB0bztcbiAgbGV0IHBhdGhuYW1lID0gdG9QYXRobmFtZSA/IHRvUGF0aG5hbWUuc3RhcnRzV2l0aChcIi9cIikgPyB0b1BhdGhuYW1lIDogcmVzb2x2ZVBhdGhuYW1lKHRvUGF0aG5hbWUsIGZyb21QYXRobmFtZSkgOiBmcm9tUGF0aG5hbWU7XG4gIHJldHVybiB7XG4gICAgcGF0aG5hbWUsXG4gICAgc2VhcmNoOiBub3JtYWxpemVTZWFyY2goc2VhcmNoKSxcbiAgICBoYXNoOiBub3JtYWxpemVIYXNoKGhhc2gpXG4gIH07XG59XG5mdW5jdGlvbiByZXNvbHZlUGF0aG5hbWUocmVsYXRpdmVQYXRoLCBmcm9tUGF0aG5hbWUpIHtcbiAgbGV0IHNlZ21lbnRzID0gZnJvbVBhdGhuYW1lLnJlcGxhY2UoL1xcLyskLywgXCJcIikuc3BsaXQoXCIvXCIpO1xuICBsZXQgcmVsYXRpdmVTZWdtZW50cyA9IHJlbGF0aXZlUGF0aC5zcGxpdChcIi9cIik7XG4gIHJlbGF0aXZlU2VnbWVudHMuZm9yRWFjaCgoc2VnbWVudCkgPT4ge1xuICAgIGlmIChzZWdtZW50ID09PSBcIi4uXCIpIHtcbiAgICAgIGlmIChzZWdtZW50cy5sZW5ndGggPiAxKSBzZWdtZW50cy5wb3AoKTtcbiAgICB9IGVsc2UgaWYgKHNlZ21lbnQgIT09IFwiLlwiKSB7XG4gICAgICBzZWdtZW50cy5wdXNoKHNlZ21lbnQpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBzZWdtZW50cy5sZW5ndGggPiAxID8gc2VnbWVudHMuam9pbihcIi9cIikgOiBcIi9cIjtcbn1cbmZ1bmN0aW9uIGdldEludmFsaWRQYXRoRXJyb3IoY2hhciwgZmllbGQsIGRlc3QsIHBhdGgpIHtcbiAgcmV0dXJuIGBDYW5ub3QgaW5jbHVkZSBhICcke2NoYXJ9JyBjaGFyYWN0ZXIgaW4gYSBtYW51YWxseSBzcGVjaWZpZWQgXFxgdG8uJHtmaWVsZH1cXGAgZmllbGQgWyR7SlNPTi5zdHJpbmdpZnkoXG4gICAgcGF0aFxuICApfV0uICBQbGVhc2Ugc2VwYXJhdGUgaXQgb3V0IHRvIHRoZSBcXGB0by4ke2Rlc3R9XFxgIGZpZWxkLiBBbHRlcm5hdGl2ZWx5IHlvdSBtYXkgcHJvdmlkZSB0aGUgZnVsbCBwYXRoIGFzIGEgc3RyaW5nIGluIDxMaW5rIHRvPVwiLi4uXCI+IGFuZCB0aGUgcm91dGVyIHdpbGwgcGFyc2UgaXQgZm9yIHlvdS5gO1xufVxuZnVuY3Rpb24gZ2V0UGF0aENvbnRyaWJ1dGluZ01hdGNoZXMobWF0Y2hlcykge1xuICByZXR1cm4gbWF0Y2hlcy5maWx0ZXIoXG4gICAgKG1hdGNoLCBpbmRleCkgPT4gaW5kZXggPT09IDAgfHwgbWF0Y2gucm91dGUucGF0aCAmJiBtYXRjaC5yb3V0ZS5wYXRoLmxlbmd0aCA+IDBcbiAgKTtcbn1cbmZ1bmN0aW9uIGdldFJlc29sdmVUb01hdGNoZXMobWF0Y2hlcykge1xuICBsZXQgcGF0aE1hdGNoZXMgPSBnZXRQYXRoQ29udHJpYnV0aW5nTWF0Y2hlcyhtYXRjaGVzKTtcbiAgcmV0dXJuIHBhdGhNYXRjaGVzLm1hcChcbiAgICAobWF0Y2gsIGlkeCkgPT4gaWR4ID09PSBwYXRoTWF0Y2hlcy5sZW5ndGggLSAxID8gbWF0Y2gucGF0aG5hbWUgOiBtYXRjaC5wYXRobmFtZUJhc2VcbiAgKTtcbn1cbmZ1bmN0aW9uIHJlc29sdmVUbyh0b0FyZywgcm91dGVQYXRobmFtZXMsIGxvY2F0aW9uUGF0aG5hbWUsIGlzUGF0aFJlbGF0aXZlID0gZmFsc2UpIHtcbiAgbGV0IHRvO1xuICBpZiAodHlwZW9mIHRvQXJnID09PSBcInN0cmluZ1wiKSB7XG4gICAgdG8gPSBwYXJzZVBhdGgodG9BcmcpO1xuICB9IGVsc2Uge1xuICAgIHRvID0geyAuLi50b0FyZyB9O1xuICAgIGludmFyaWFudChcbiAgICAgICF0by5wYXRobmFtZSB8fCAhdG8ucGF0aG5hbWUuaW5jbHVkZXMoXCI/XCIpLFxuICAgICAgZ2V0SW52YWxpZFBhdGhFcnJvcihcIj9cIiwgXCJwYXRobmFtZVwiLCBcInNlYXJjaFwiLCB0bylcbiAgICApO1xuICAgIGludmFyaWFudChcbiAgICAgICF0by5wYXRobmFtZSB8fCAhdG8ucGF0aG5hbWUuaW5jbHVkZXMoXCIjXCIpLFxuICAgICAgZ2V0SW52YWxpZFBhdGhFcnJvcihcIiNcIiwgXCJwYXRobmFtZVwiLCBcImhhc2hcIiwgdG8pXG4gICAgKTtcbiAgICBpbnZhcmlhbnQoXG4gICAgICAhdG8uc2VhcmNoIHx8ICF0by5zZWFyY2guaW5jbHVkZXMoXCIjXCIpLFxuICAgICAgZ2V0SW52YWxpZFBhdGhFcnJvcihcIiNcIiwgXCJzZWFyY2hcIiwgXCJoYXNoXCIsIHRvKVxuICAgICk7XG4gIH1cbiAgbGV0IGlzRW1wdHlQYXRoID0gdG9BcmcgPT09IFwiXCIgfHwgdG8ucGF0aG5hbWUgPT09IFwiXCI7XG4gIGxldCB0b1BhdGhuYW1lID0gaXNFbXB0eVBhdGggPyBcIi9cIiA6IHRvLnBhdGhuYW1lO1xuICBsZXQgZnJvbTtcbiAgaWYgKHRvUGF0aG5hbWUgPT0gbnVsbCkge1xuICAgIGZyb20gPSBsb2NhdGlvblBhdGhuYW1lO1xuICB9IGVsc2Uge1xuICAgIGxldCByb3V0ZVBhdGhuYW1lSW5kZXggPSByb3V0ZVBhdGhuYW1lcy5sZW5ndGggLSAxO1xuICAgIGlmICghaXNQYXRoUmVsYXRpdmUgJiYgdG9QYXRobmFtZS5zdGFydHNXaXRoKFwiLi5cIikpIHtcbiAgICAgIGxldCB0b1NlZ21lbnRzID0gdG9QYXRobmFtZS5zcGxpdChcIi9cIik7XG4gICAgICB3aGlsZSAodG9TZWdtZW50c1swXSA9PT0gXCIuLlwiKSB7XG4gICAgICAgIHRvU2VnbWVudHMuc2hpZnQoKTtcbiAgICAgICAgcm91dGVQYXRobmFtZUluZGV4IC09IDE7XG4gICAgICB9XG4gICAgICB0by5wYXRobmFtZSA9IHRvU2VnbWVudHMuam9pbihcIi9cIik7XG4gICAgfVxuICAgIGZyb20gPSByb3V0ZVBhdGhuYW1lSW5kZXggPj0gMCA/IHJvdXRlUGF0aG5hbWVzW3JvdXRlUGF0aG5hbWVJbmRleF0gOiBcIi9cIjtcbiAgfVxuICBsZXQgcGF0aCA9IHJlc29sdmVQYXRoKHRvLCBmcm9tKTtcbiAgbGV0IGhhc0V4cGxpY2l0VHJhaWxpbmdTbGFzaCA9IHRvUGF0aG5hbWUgJiYgdG9QYXRobmFtZSAhPT0gXCIvXCIgJiYgdG9QYXRobmFtZS5lbmRzV2l0aChcIi9cIik7XG4gIGxldCBoYXNDdXJyZW50VHJhaWxpbmdTbGFzaCA9IChpc0VtcHR5UGF0aCB8fCB0b1BhdGhuYW1lID09PSBcIi5cIikgJiYgbG9jYXRpb25QYXRobmFtZS5lbmRzV2l0aChcIi9cIik7XG4gIGlmICghcGF0aC5wYXRobmFtZS5lbmRzV2l0aChcIi9cIikgJiYgKGhhc0V4cGxpY2l0VHJhaWxpbmdTbGFzaCB8fCBoYXNDdXJyZW50VHJhaWxpbmdTbGFzaCkpIHtcbiAgICBwYXRoLnBhdGhuYW1lICs9IFwiL1wiO1xuICB9XG4gIHJldHVybiBwYXRoO1xufVxudmFyIGpvaW5QYXRocyA9IChwYXRocykgPT4gcGF0aHMuam9pbihcIi9cIikucmVwbGFjZSgvXFwvXFwvKy9nLCBcIi9cIik7XG52YXIgbm9ybWFsaXplUGF0aG5hbWUgPSAocGF0aG5hbWUpID0+IHBhdGhuYW1lLnJlcGxhY2UoL1xcLyskLywgXCJcIikucmVwbGFjZSgvXlxcLyovLCBcIi9cIik7XG52YXIgbm9ybWFsaXplU2VhcmNoID0gKHNlYXJjaCkgPT4gIXNlYXJjaCB8fCBzZWFyY2ggPT09IFwiP1wiID8gXCJcIiA6IHNlYXJjaC5zdGFydHNXaXRoKFwiP1wiKSA/IHNlYXJjaCA6IFwiP1wiICsgc2VhcmNoO1xudmFyIG5vcm1hbGl6ZUhhc2ggPSAoaGFzaCkgPT4gIWhhc2ggfHwgaGFzaCA9PT0gXCIjXCIgPyBcIlwiIDogaGFzaC5zdGFydHNXaXRoKFwiI1wiKSA/IGhhc2ggOiBcIiNcIiArIGhhc2g7XG52YXIgRGF0YVdpdGhSZXNwb25zZUluaXQgPSBjbGFzcyB7XG4gIGNvbnN0cnVjdG9yKGRhdGEyLCBpbml0KSB7XG4gICAgdGhpcy50eXBlID0gXCJEYXRhV2l0aFJlc3BvbnNlSW5pdFwiO1xuICAgIHRoaXMuZGF0YSA9IGRhdGEyO1xuICAgIHRoaXMuaW5pdCA9IGluaXQgfHwgbnVsbDtcbiAgfVxufTtcbmZ1bmN0aW9uIGRhdGEoZGF0YTIsIGluaXQpIHtcbiAgcmV0dXJuIG5ldyBEYXRhV2l0aFJlc3BvbnNlSW5pdChcbiAgICBkYXRhMixcbiAgICB0eXBlb2YgaW5pdCA9PT0gXCJudW1iZXJcIiA/IHsgc3RhdHVzOiBpbml0IH0gOiBpbml0XG4gICk7XG59XG52YXIgcmVkaXJlY3QgPSAodXJsLCBpbml0ID0gMzAyKSA9PiB7XG4gIGxldCByZXNwb25zZUluaXQgPSBpbml0O1xuICBpZiAodHlwZW9mIHJlc3BvbnNlSW5pdCA9PT0gXCJudW1iZXJcIikge1xuICAgIHJlc3BvbnNlSW5pdCA9IHsgc3RhdHVzOiByZXNwb25zZUluaXQgfTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgcmVzcG9uc2VJbml0LnN0YXR1cyA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJlc3BvbnNlSW5pdC5zdGF0dXMgPSAzMDI7XG4gIH1cbiAgbGV0IGhlYWRlcnMgPSBuZXcgSGVhZGVycyhyZXNwb25zZUluaXQuaGVhZGVycyk7XG4gIGhlYWRlcnMuc2V0KFwiTG9jYXRpb25cIiwgdXJsKTtcbiAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7XG4gICAgLi4ucmVzcG9uc2VJbml0LFxuICAgIGhlYWRlcnNcbiAgfSk7XG59O1xudmFyIHJlZGlyZWN0RG9jdW1lbnQgPSAodXJsLCBpbml0KSA9PiB7XG4gIGxldCByZXNwb25zZSA9IHJlZGlyZWN0KHVybCwgaW5pdCk7XG4gIHJlc3BvbnNlLmhlYWRlcnMuc2V0KFwiWC1SZW1peC1SZWxvYWQtRG9jdW1lbnRcIiwgXCJ0cnVlXCIpO1xuICByZXR1cm4gcmVzcG9uc2U7XG59O1xudmFyIHJlcGxhY2UgPSAodXJsLCBpbml0KSA9PiB7XG4gIGxldCByZXNwb25zZSA9IHJlZGlyZWN0KHVybCwgaW5pdCk7XG4gIHJlc3BvbnNlLmhlYWRlcnMuc2V0KFwiWC1SZW1peC1SZXBsYWNlXCIsIFwidHJ1ZVwiKTtcbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcbnZhciBFcnJvclJlc3BvbnNlSW1wbCA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3Ioc3RhdHVzLCBzdGF0dXNUZXh0LCBkYXRhMiwgaW50ZXJuYWwgPSBmYWxzZSkge1xuICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzO1xuICAgIHRoaXMuc3RhdHVzVGV4dCA9IHN0YXR1c1RleHQgfHwgXCJcIjtcbiAgICB0aGlzLmludGVybmFsID0gaW50ZXJuYWw7XG4gICAgaWYgKGRhdGEyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHRoaXMuZGF0YSA9IGRhdGEyLnRvU3RyaW5nKCk7XG4gICAgICB0aGlzLmVycm9yID0gZGF0YTI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0YSA9IGRhdGEyO1xuICAgIH1cbiAgfVxufTtcbmZ1bmN0aW9uIGlzUm91dGVFcnJvclJlc3BvbnNlKGVycm9yKSB7XG4gIHJldHVybiBlcnJvciAhPSBudWxsICYmIHR5cGVvZiBlcnJvci5zdGF0dXMgPT09IFwibnVtYmVyXCIgJiYgdHlwZW9mIGVycm9yLnN0YXR1c1RleHQgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIGVycm9yLmludGVybmFsID09PSBcImJvb2xlYW5cIiAmJiBcImRhdGFcIiBpbiBlcnJvcjtcbn1cblxuLy8gbGliL3JvdXRlci9yb3V0ZXIudHNcbnZhciB2YWxpZE11dGF0aW9uTWV0aG9kc0FyciA9IFtcbiAgXCJQT1NUXCIsXG4gIFwiUFVUXCIsXG4gIFwiUEFUQ0hcIixcbiAgXCJERUxFVEVcIlxuXTtcbnZhciB2YWxpZE11dGF0aW9uTWV0aG9kcyA9IG5ldyBTZXQoXG4gIHZhbGlkTXV0YXRpb25NZXRob2RzQXJyXG4pO1xudmFyIHZhbGlkUmVxdWVzdE1ldGhvZHNBcnIgPSBbXG4gIFwiR0VUXCIsXG4gIC4uLnZhbGlkTXV0YXRpb25NZXRob2RzQXJyXG5dO1xudmFyIHZhbGlkUmVxdWVzdE1ldGhvZHMgPSBuZXcgU2V0KHZhbGlkUmVxdWVzdE1ldGhvZHNBcnIpO1xudmFyIHJlZGlyZWN0U3RhdHVzQ29kZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbMzAxLCAzMDIsIDMwMywgMzA3LCAzMDhdKTtcbnZhciByZWRpcmVjdFByZXNlcnZlTWV0aG9kU3RhdHVzQ29kZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbMzA3LCAzMDhdKTtcbnZhciBJRExFX05BVklHQVRJT04gPSB7XG4gIHN0YXRlOiBcImlkbGVcIixcbiAgbG9jYXRpb246IHZvaWQgMCxcbiAgZm9ybU1ldGhvZDogdm9pZCAwLFxuICBmb3JtQWN0aW9uOiB2b2lkIDAsXG4gIGZvcm1FbmNUeXBlOiB2b2lkIDAsXG4gIGZvcm1EYXRhOiB2b2lkIDAsXG4gIGpzb246IHZvaWQgMCxcbiAgdGV4dDogdm9pZCAwXG59O1xudmFyIElETEVfRkVUQ0hFUiA9IHtcbiAgc3RhdGU6IFwiaWRsZVwiLFxuICBkYXRhOiB2b2lkIDAsXG4gIGZvcm1NZXRob2Q6IHZvaWQgMCxcbiAgZm9ybUFjdGlvbjogdm9pZCAwLFxuICBmb3JtRW5jVHlwZTogdm9pZCAwLFxuICBmb3JtRGF0YTogdm9pZCAwLFxuICBqc29uOiB2b2lkIDAsXG4gIHRleHQ6IHZvaWQgMFxufTtcbnZhciBJRExFX0JMT0NLRVIgPSB7XG4gIHN0YXRlOiBcInVuYmxvY2tlZFwiLFxuICBwcm9jZWVkOiB2b2lkIDAsXG4gIHJlc2V0OiB2b2lkIDAsXG4gIGxvY2F0aW9uOiB2b2lkIDBcbn07XG52YXIgQUJTT0xVVEVfVVJMX1JFR0VYID0gL14oPzpbYS16XVthLXowLTkrLi1dKjp8XFwvXFwvKS9pO1xudmFyIGRlZmF1bHRNYXBSb3V0ZVByb3BlcnRpZXMgPSAocm91dGUpID0+ICh7XG4gIGhhc0Vycm9yQm91bmRhcnk6IEJvb2xlYW4ocm91dGUuaGFzRXJyb3JCb3VuZGFyeSlcbn0pO1xudmFyIFRSQU5TSVRJT05TX1NUT1JBR0VfS0VZID0gXCJyZW1peC1yb3V0ZXItdHJhbnNpdGlvbnNcIjtcbnZhciBSZXNldExvYWRlckRhdGFTeW1ib2wgPSBTeW1ib2woXCJSZXNldExvYWRlckRhdGFcIik7XG5mdW5jdGlvbiBjcmVhdGVSb3V0ZXIoaW5pdCkge1xuICBjb25zdCByb3V0ZXJXaW5kb3cgPSBpbml0LndpbmRvdyA/IGluaXQud2luZG93IDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHZvaWQgMDtcbiAgY29uc3QgaXNCcm93c2VyMiA9IHR5cGVvZiByb3V0ZXJXaW5kb3cgIT09IFwidW5kZWZpbmVkXCIgJiYgdHlwZW9mIHJvdXRlcldpbmRvdy5kb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2Ygcm91dGVyV2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgIT09IFwidW5kZWZpbmVkXCI7XG4gIGludmFyaWFudChcbiAgICBpbml0LnJvdXRlcy5sZW5ndGggPiAwLFxuICAgIFwiWW91IG11c3QgcHJvdmlkZSBhIG5vbi1lbXB0eSByb3V0ZXMgYXJyYXkgdG8gY3JlYXRlUm91dGVyXCJcbiAgKTtcbiAgbGV0IG1hcFJvdXRlUHJvcGVydGllczIgPSBpbml0Lm1hcFJvdXRlUHJvcGVydGllcyB8fCBkZWZhdWx0TWFwUm91dGVQcm9wZXJ0aWVzO1xuICBsZXQgbWFuaWZlc3QgPSB7fTtcbiAgbGV0IGRhdGFSb3V0ZXMgPSBjb252ZXJ0Um91dGVzVG9EYXRhUm91dGVzKFxuICAgIGluaXQucm91dGVzLFxuICAgIG1hcFJvdXRlUHJvcGVydGllczIsXG4gICAgdm9pZCAwLFxuICAgIG1hbmlmZXN0XG4gICk7XG4gIGxldCBpbkZsaWdodERhdGFSb3V0ZXM7XG4gIGxldCBiYXNlbmFtZSA9IGluaXQuYmFzZW5hbWUgfHwgXCIvXCI7XG4gIGxldCBkYXRhU3RyYXRlZ3lJbXBsID0gaW5pdC5kYXRhU3RyYXRlZ3kgfHwgZGVmYXVsdERhdGFTdHJhdGVneTtcbiAgbGV0IHBhdGNoUm91dGVzT25OYXZpZ2F0aW9uSW1wbCA9IGluaXQucGF0Y2hSb3V0ZXNPbk5hdmlnYXRpb247XG4gIGxldCBmdXR1cmUgPSB7XG4gICAgLi4uaW5pdC5mdXR1cmVcbiAgfTtcbiAgbGV0IHVubGlzdGVuSGlzdG9yeSA9IG51bGw7XG4gIGxldCBzdWJzY3JpYmVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gIGxldCBzYXZlZFNjcm9sbFBvc2l0aW9uczIgPSBudWxsO1xuICBsZXQgZ2V0U2Nyb2xsUmVzdG9yYXRpb25LZXkyID0gbnVsbDtcbiAgbGV0IGdldFNjcm9sbFBvc2l0aW9uID0gbnVsbDtcbiAgbGV0IGluaXRpYWxTY3JvbGxSZXN0b3JlZCA9IGluaXQuaHlkcmF0aW9uRGF0YSAhPSBudWxsO1xuICBsZXQgaW5pdGlhbE1hdGNoZXMgPSBtYXRjaFJvdXRlcyhkYXRhUm91dGVzLCBpbml0Lmhpc3RvcnkubG9jYXRpb24sIGJhc2VuYW1lKTtcbiAgbGV0IGluaXRpYWxFcnJvcnMgPSBudWxsO1xuICBpZiAoaW5pdGlhbE1hdGNoZXMgPT0gbnVsbCAmJiAhcGF0Y2hSb3V0ZXNPbk5hdmlnYXRpb25JbXBsKSB7XG4gICAgbGV0IGVycm9yID0gZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDQsIHtcbiAgICAgIHBhdGhuYW1lOiBpbml0Lmhpc3RvcnkubG9jYXRpb24ucGF0aG5hbWVcbiAgICB9KTtcbiAgICBsZXQgeyBtYXRjaGVzLCByb3V0ZSB9ID0gZ2V0U2hvcnRDaXJjdWl0TWF0Y2hlcyhkYXRhUm91dGVzKTtcbiAgICBpbml0aWFsTWF0Y2hlcyA9IG1hdGNoZXM7XG4gICAgaW5pdGlhbEVycm9ycyA9IHsgW3JvdXRlLmlkXTogZXJyb3IgfTtcbiAgfVxuICBpZiAoaW5pdGlhbE1hdGNoZXMgJiYgIWluaXQuaHlkcmF0aW9uRGF0YSkge1xuICAgIGxldCBmb2dPZldhciA9IGNoZWNrRm9nT2ZXYXIoXG4gICAgICBpbml0aWFsTWF0Y2hlcyxcbiAgICAgIGRhdGFSb3V0ZXMsXG4gICAgICBpbml0Lmhpc3RvcnkubG9jYXRpb24ucGF0aG5hbWVcbiAgICApO1xuICAgIGlmIChmb2dPZldhci5hY3RpdmUpIHtcbiAgICAgIGluaXRpYWxNYXRjaGVzID0gbnVsbDtcbiAgICB9XG4gIH1cbiAgbGV0IGluaXRpYWxpemVkO1xuICBpZiAoIWluaXRpYWxNYXRjaGVzKSB7XG4gICAgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICBpbml0aWFsTWF0Y2hlcyA9IFtdO1xuICAgIGxldCBmb2dPZldhciA9IGNoZWNrRm9nT2ZXYXIoXG4gICAgICBudWxsLFxuICAgICAgZGF0YVJvdXRlcyxcbiAgICAgIGluaXQuaGlzdG9yeS5sb2NhdGlvbi5wYXRobmFtZVxuICAgICk7XG4gICAgaWYgKGZvZ09mV2FyLmFjdGl2ZSAmJiBmb2dPZldhci5tYXRjaGVzKSB7XG4gICAgICBpbml0aWFsTWF0Y2hlcyA9IGZvZ09mV2FyLm1hdGNoZXM7XG4gICAgfVxuICB9IGVsc2UgaWYgKGluaXRpYWxNYXRjaGVzLnNvbWUoKG0pID0+IG0ucm91dGUubGF6eSkpIHtcbiAgICBpbml0aWFsaXplZCA9IGZhbHNlO1xuICB9IGVsc2UgaWYgKCFpbml0aWFsTWF0Y2hlcy5zb21lKChtKSA9PiBtLnJvdXRlLmxvYWRlcikpIHtcbiAgICBpbml0aWFsaXplZCA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgbGV0IGxvYWRlckRhdGEgPSBpbml0Lmh5ZHJhdGlvbkRhdGEgPyBpbml0Lmh5ZHJhdGlvbkRhdGEubG9hZGVyRGF0YSA6IG51bGw7XG4gICAgbGV0IGVycm9ycyA9IGluaXQuaHlkcmF0aW9uRGF0YSA/IGluaXQuaHlkcmF0aW9uRGF0YS5lcnJvcnMgOiBudWxsO1xuICAgIGlmIChlcnJvcnMpIHtcbiAgICAgIGxldCBpZHggPSBpbml0aWFsTWF0Y2hlcy5maW5kSW5kZXgoXG4gICAgICAgIChtKSA9PiBlcnJvcnNbbS5yb3V0ZS5pZF0gIT09IHZvaWQgMFxuICAgICAgKTtcbiAgICAgIGluaXRpYWxpemVkID0gaW5pdGlhbE1hdGNoZXMuc2xpY2UoMCwgaWR4ICsgMSkuZXZlcnkoKG0pID0+ICFzaG91bGRMb2FkUm91dGVPbkh5ZHJhdGlvbihtLnJvdXRlLCBsb2FkZXJEYXRhLCBlcnJvcnMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5pdGlhbGl6ZWQgPSBpbml0aWFsTWF0Y2hlcy5ldmVyeShcbiAgICAgICAgKG0pID0+ICFzaG91bGRMb2FkUm91dGVPbkh5ZHJhdGlvbihtLnJvdXRlLCBsb2FkZXJEYXRhLCBlcnJvcnMpXG4gICAgICApO1xuICAgIH1cbiAgfVxuICBsZXQgcm91dGVyO1xuICBsZXQgc3RhdGUgPSB7XG4gICAgaGlzdG9yeUFjdGlvbjogaW5pdC5oaXN0b3J5LmFjdGlvbixcbiAgICBsb2NhdGlvbjogaW5pdC5oaXN0b3J5LmxvY2F0aW9uLFxuICAgIG1hdGNoZXM6IGluaXRpYWxNYXRjaGVzLFxuICAgIGluaXRpYWxpemVkLFxuICAgIG5hdmlnYXRpb246IElETEVfTkFWSUdBVElPTixcbiAgICAvLyBEb24ndCByZXN0b3JlIG9uIGluaXRpYWwgdXBkYXRlU3RhdGUoKSBpZiB3ZSB3ZXJlIFNTUidkXG4gICAgcmVzdG9yZVNjcm9sbFBvc2l0aW9uOiBpbml0Lmh5ZHJhdGlvbkRhdGEgIT0gbnVsbCA/IGZhbHNlIDogbnVsbCxcbiAgICBwcmV2ZW50U2Nyb2xsUmVzZXQ6IGZhbHNlLFxuICAgIHJldmFsaWRhdGlvbjogXCJpZGxlXCIsXG4gICAgbG9hZGVyRGF0YTogaW5pdC5oeWRyYXRpb25EYXRhICYmIGluaXQuaHlkcmF0aW9uRGF0YS5sb2FkZXJEYXRhIHx8IHt9LFxuICAgIGFjdGlvbkRhdGE6IGluaXQuaHlkcmF0aW9uRGF0YSAmJiBpbml0Lmh5ZHJhdGlvbkRhdGEuYWN0aW9uRGF0YSB8fCBudWxsLFxuICAgIGVycm9yczogaW5pdC5oeWRyYXRpb25EYXRhICYmIGluaXQuaHlkcmF0aW9uRGF0YS5lcnJvcnMgfHwgaW5pdGlhbEVycm9ycyxcbiAgICBmZXRjaGVyczogLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSxcbiAgICBibG9ja2VyczogLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKVxuICB9O1xuICBsZXQgcGVuZGluZ0FjdGlvbiA9IFwiUE9QXCIgLyogUG9wICovO1xuICBsZXQgcGVuZGluZ1ByZXZlbnRTY3JvbGxSZXNldCA9IGZhbHNlO1xuICBsZXQgcGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyO1xuICBsZXQgcGVuZGluZ1ZpZXdUcmFuc2l0aW9uRW5hYmxlZCA9IGZhbHNlO1xuICBsZXQgYXBwbGllZFZpZXdUcmFuc2l0aW9ucyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGxldCByZW1vdmVQYWdlSGlkZUV2ZW50TGlzdGVuZXIgPSBudWxsO1xuICBsZXQgaXNVbmludGVycnVwdGVkUmV2YWxpZGF0aW9uID0gZmFsc2U7XG4gIGxldCBpc1JldmFsaWRhdGlvblJlcXVpcmVkID0gZmFsc2U7XG4gIGxldCBjYW5jZWxsZWRGZXRjaGVyTG9hZHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICBsZXQgZmV0Y2hDb250cm9sbGVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGxldCBpbmNyZW1lbnRpbmdMb2FkSWQgPSAwO1xuICBsZXQgcGVuZGluZ05hdmlnYXRpb25Mb2FkSWQgPSAtMTtcbiAgbGV0IGZldGNoUmVsb2FkSWRzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgbGV0IGZldGNoUmVkaXJlY3RJZHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICBsZXQgZmV0Y2hMb2FkTWF0Y2hlcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGxldCBhY3RpdmVGZXRjaGVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGxldCBmZXRjaGVyc1F1ZXVlZEZvckRlbGV0aW9uID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgbGV0IGJsb2NrZXJGdW5jdGlvbnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICBsZXQgdW5ibG9ja0Jsb2NrZXJIaXN0b3J5VXBkYXRlID0gdm9pZCAwO1xuICBsZXQgcGVuZGluZ1JldmFsaWRhdGlvbkRmZCA9IG51bGw7XG4gIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgdW5saXN0ZW5IaXN0b3J5ID0gaW5pdC5oaXN0b3J5Lmxpc3RlbihcbiAgICAgICh7IGFjdGlvbjogaGlzdG9yeUFjdGlvbiwgbG9jYXRpb24sIGRlbHRhIH0pID0+IHtcbiAgICAgICAgaWYgKHVuYmxvY2tCbG9ja2VySGlzdG9yeVVwZGF0ZSkge1xuICAgICAgICAgIHVuYmxvY2tCbG9ja2VySGlzdG9yeVVwZGF0ZSgpO1xuICAgICAgICAgIHVuYmxvY2tCbG9ja2VySGlzdG9yeVVwZGF0ZSA9IHZvaWQgMDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgd2FybmluZyhcbiAgICAgICAgICBibG9ja2VyRnVuY3Rpb25zLnNpemUgPT09IDAgfHwgZGVsdGEgIT0gbnVsbCxcbiAgICAgICAgICBcIllvdSBhcmUgdHJ5aW5nIHRvIHVzZSBhIGJsb2NrZXIgb24gYSBQT1AgbmF2aWdhdGlvbiB0byBhIGxvY2F0aW9uIHRoYXQgd2FzIG5vdCBjcmVhdGVkIGJ5IEByZW1peC1ydW4vcm91dGVyLiBUaGlzIHdpbGwgZmFpbCBzaWxlbnRseSBpbiBwcm9kdWN0aW9uLiBUaGlzIGNhbiBoYXBwZW4gaWYgeW91IGFyZSBuYXZpZ2F0aW5nIG91dHNpZGUgdGhlIHJvdXRlciB2aWEgYHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZWAvYHdpbmRvdy5sb2NhdGlvbi5oYXNoYCBpbnN0ZWFkIG9mIHVzaW5nIHJvdXRlciBuYXZpZ2F0aW9uIEFQSXMuICBUaGlzIGNhbiBhbHNvIGhhcHBlbiBpZiB5b3UgYXJlIHVzaW5nIGNyZWF0ZUhhc2hSb3V0ZXIgYW5kIHRoZSB1c2VyIG1hbnVhbGx5IGNoYW5nZXMgdGhlIFVSTC5cIlxuICAgICAgICApO1xuICAgICAgICBsZXQgYmxvY2tlcktleSA9IHNob3VsZEJsb2NrTmF2aWdhdGlvbih7XG4gICAgICAgICAgY3VycmVudExvY2F0aW9uOiBzdGF0ZS5sb2NhdGlvbixcbiAgICAgICAgICBuZXh0TG9jYXRpb246IGxvY2F0aW9uLFxuICAgICAgICAgIGhpc3RvcnlBY3Rpb25cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChibG9ja2VyS2V5ICYmIGRlbHRhICE9IG51bGwpIHtcbiAgICAgICAgICBsZXQgbmV4dEhpc3RvcnlVcGRhdGVQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIHVuYmxvY2tCbG9ja2VySGlzdG9yeVVwZGF0ZSA9IHJlc29sdmU7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaW5pdC5oaXN0b3J5LmdvKGRlbHRhICogLTEpO1xuICAgICAgICAgIHVwZGF0ZUJsb2NrZXIoYmxvY2tlcktleSwge1xuICAgICAgICAgICAgc3RhdGU6IFwiYmxvY2tlZFwiLFxuICAgICAgICAgICAgbG9jYXRpb24sXG4gICAgICAgICAgICBwcm9jZWVkKCkge1xuICAgICAgICAgICAgICB1cGRhdGVCbG9ja2VyKGJsb2NrZXJLZXksIHtcbiAgICAgICAgICAgICAgICBzdGF0ZTogXCJwcm9jZWVkaW5nXCIsXG4gICAgICAgICAgICAgICAgcHJvY2VlZDogdm9pZCAwLFxuICAgICAgICAgICAgICAgIHJlc2V0OiB2b2lkIDAsXG4gICAgICAgICAgICAgICAgbG9jYXRpb25cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIG5leHRIaXN0b3J5VXBkYXRlUHJvbWlzZS50aGVuKCgpID0+IGluaXQuaGlzdG9yeS5nbyhkZWx0YSkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgICAgICBsZXQgYmxvY2tlcnMgPSBuZXcgTWFwKHN0YXRlLmJsb2NrZXJzKTtcbiAgICAgICAgICAgICAgYmxvY2tlcnMuc2V0KGJsb2NrZXJLZXksIElETEVfQkxPQ0tFUik7XG4gICAgICAgICAgICAgIHVwZGF0ZVN0YXRlKHsgYmxvY2tlcnMgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGFydE5hdmlnYXRpb24oaGlzdG9yeUFjdGlvbiwgbG9jYXRpb24pO1xuICAgICAgfVxuICAgICk7XG4gICAgaWYgKGlzQnJvd3NlcjIpIHtcbiAgICAgIHJlc3RvcmVBcHBsaWVkVHJhbnNpdGlvbnMocm91dGVyV2luZG93LCBhcHBsaWVkVmlld1RyYW5zaXRpb25zKTtcbiAgICAgIGxldCBfc2F2ZUFwcGxpZWRUcmFuc2l0aW9ucyA9ICgpID0+IHBlcnNpc3RBcHBsaWVkVHJhbnNpdGlvbnMocm91dGVyV2luZG93LCBhcHBsaWVkVmlld1RyYW5zaXRpb25zKTtcbiAgICAgIHJvdXRlcldpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicGFnZWhpZGVcIiwgX3NhdmVBcHBsaWVkVHJhbnNpdGlvbnMpO1xuICAgICAgcmVtb3ZlUGFnZUhpZGVFdmVudExpc3RlbmVyID0gKCkgPT4gcm91dGVyV2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwYWdlaGlkZVwiLCBfc2F2ZUFwcGxpZWRUcmFuc2l0aW9ucyk7XG4gICAgfVxuICAgIGlmICghc3RhdGUuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHN0YXJ0TmF2aWdhdGlvbihcIlBPUFwiIC8qIFBvcCAqLywgc3RhdGUubG9jYXRpb24sIHtcbiAgICAgICAgaW5pdGlhbEh5ZHJhdGlvbjogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByb3V0ZXI7XG4gIH1cbiAgZnVuY3Rpb24gZGlzcG9zZSgpIHtcbiAgICBpZiAodW5saXN0ZW5IaXN0b3J5KSB7XG4gICAgICB1bmxpc3Rlbkhpc3RvcnkoKTtcbiAgICB9XG4gICAgaWYgKHJlbW92ZVBhZ2VIaWRlRXZlbnRMaXN0ZW5lcikge1xuICAgICAgcmVtb3ZlUGFnZUhpZGVFdmVudExpc3RlbmVyKCk7XG4gICAgfVxuICAgIHN1YnNjcmliZXJzLmNsZWFyKCk7XG4gICAgcGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyICYmIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlci5hYm9ydCgpO1xuICAgIHN0YXRlLmZldGNoZXJzLmZvckVhY2goKF8sIGtleSkgPT4gZGVsZXRlRmV0Y2hlcihrZXkpKTtcbiAgICBzdGF0ZS5ibG9ja2Vycy5mb3JFYWNoKChfLCBrZXkpID0+IGRlbGV0ZUJsb2NrZXIoa2V5KSk7XG4gIH1cbiAgZnVuY3Rpb24gc3Vic2NyaWJlKGZuKSB7XG4gICAgc3Vic2NyaWJlcnMuYWRkKGZuKTtcbiAgICByZXR1cm4gKCkgPT4gc3Vic2NyaWJlcnMuZGVsZXRlKGZuKTtcbiAgfVxuICBmdW5jdGlvbiB1cGRhdGVTdGF0ZShuZXdTdGF0ZSwgb3B0cyA9IHt9KSB7XG4gICAgc3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC4uLm5ld1N0YXRlXG4gICAgfTtcbiAgICBsZXQgdW5tb3VudGVkRmV0Y2hlcnMgPSBbXTtcbiAgICBsZXQgbW91bnRlZEZldGNoZXJzID0gW107XG4gICAgc3RhdGUuZmV0Y2hlcnMuZm9yRWFjaCgoZmV0Y2hlciwga2V5KSA9PiB7XG4gICAgICBpZiAoZmV0Y2hlci5zdGF0ZSA9PT0gXCJpZGxlXCIpIHtcbiAgICAgICAgaWYgKGZldGNoZXJzUXVldWVkRm9yRGVsZXRpb24uaGFzKGtleSkpIHtcbiAgICAgICAgICB1bm1vdW50ZWRGZXRjaGVycy5wdXNoKGtleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbW91bnRlZEZldGNoZXJzLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIFsuLi5zdWJzY3JpYmVyc10uZm9yRWFjaChcbiAgICAgIChzdWJzY3JpYmVyKSA9PiBzdWJzY3JpYmVyKHN0YXRlLCB7XG4gICAgICAgIGRlbGV0ZWRGZXRjaGVyczogdW5tb3VudGVkRmV0Y2hlcnMsXG4gICAgICAgIHZpZXdUcmFuc2l0aW9uT3B0czogb3B0cy52aWV3VHJhbnNpdGlvbk9wdHMsXG4gICAgICAgIGZsdXNoU3luYzogb3B0cy5mbHVzaFN5bmMgPT09IHRydWVcbiAgICAgIH0pXG4gICAgKTtcbiAgICB1bm1vdW50ZWRGZXRjaGVycy5mb3JFYWNoKChrZXkpID0+IGRlbGV0ZUZldGNoZXIoa2V5KSk7XG4gICAgbW91bnRlZEZldGNoZXJzLmZvckVhY2goKGtleSkgPT4gc3RhdGUuZmV0Y2hlcnMuZGVsZXRlKGtleSkpO1xuICB9XG4gIGZ1bmN0aW9uIGNvbXBsZXRlTmF2aWdhdGlvbihsb2NhdGlvbiwgbmV3U3RhdGUsIHsgZmx1c2hTeW5jIH0gPSB7fSkge1xuICAgIGxldCBpc0FjdGlvblJlbG9hZCA9IHN0YXRlLmFjdGlvbkRhdGEgIT0gbnVsbCAmJiBzdGF0ZS5uYXZpZ2F0aW9uLmZvcm1NZXRob2QgIT0gbnVsbCAmJiBpc011dGF0aW9uTWV0aG9kKHN0YXRlLm5hdmlnYXRpb24uZm9ybU1ldGhvZCkgJiYgc3RhdGUubmF2aWdhdGlvbi5zdGF0ZSA9PT0gXCJsb2FkaW5nXCIgJiYgbG9jYXRpb24uc3RhdGU/Ll9pc1JlZGlyZWN0ICE9PSB0cnVlO1xuICAgIGxldCBhY3Rpb25EYXRhO1xuICAgIGlmIChuZXdTdGF0ZS5hY3Rpb25EYXRhKSB7XG4gICAgICBpZiAoT2JqZWN0LmtleXMobmV3U3RhdGUuYWN0aW9uRGF0YSkubGVuZ3RoID4gMCkge1xuICAgICAgICBhY3Rpb25EYXRhID0gbmV3U3RhdGUuYWN0aW9uRGF0YTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjdGlvbkRhdGEgPSBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNBY3Rpb25SZWxvYWQpIHtcbiAgICAgIGFjdGlvbkRhdGEgPSBzdGF0ZS5hY3Rpb25EYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICBhY3Rpb25EYXRhID0gbnVsbDtcbiAgICB9XG4gICAgbGV0IGxvYWRlckRhdGEgPSBuZXdTdGF0ZS5sb2FkZXJEYXRhID8gbWVyZ2VMb2FkZXJEYXRhKFxuICAgICAgc3RhdGUubG9hZGVyRGF0YSxcbiAgICAgIG5ld1N0YXRlLmxvYWRlckRhdGEsXG4gICAgICBuZXdTdGF0ZS5tYXRjaGVzIHx8IFtdLFxuICAgICAgbmV3U3RhdGUuZXJyb3JzXG4gICAgKSA6IHN0YXRlLmxvYWRlckRhdGE7XG4gICAgbGV0IGJsb2NrZXJzID0gc3RhdGUuYmxvY2tlcnM7XG4gICAgaWYgKGJsb2NrZXJzLnNpemUgPiAwKSB7XG4gICAgICBibG9ja2VycyA9IG5ldyBNYXAoYmxvY2tlcnMpO1xuICAgICAgYmxvY2tlcnMuZm9yRWFjaCgoXywgaykgPT4gYmxvY2tlcnMuc2V0KGssIElETEVfQkxPQ0tFUikpO1xuICAgIH1cbiAgICBsZXQgcHJldmVudFNjcm9sbFJlc2V0ID0gcGVuZGluZ1ByZXZlbnRTY3JvbGxSZXNldCA9PT0gdHJ1ZSB8fCBzdGF0ZS5uYXZpZ2F0aW9uLmZvcm1NZXRob2QgIT0gbnVsbCAmJiBpc011dGF0aW9uTWV0aG9kKHN0YXRlLm5hdmlnYXRpb24uZm9ybU1ldGhvZCkgJiYgbG9jYXRpb24uc3RhdGU/Ll9pc1JlZGlyZWN0ICE9PSB0cnVlO1xuICAgIGlmIChpbkZsaWdodERhdGFSb3V0ZXMpIHtcbiAgICAgIGRhdGFSb3V0ZXMgPSBpbkZsaWdodERhdGFSb3V0ZXM7XG4gICAgICBpbkZsaWdodERhdGFSb3V0ZXMgPSB2b2lkIDA7XG4gICAgfVxuICAgIGlmIChpc1VuaW50ZXJydXB0ZWRSZXZhbGlkYXRpb24pIHtcbiAgICB9IGVsc2UgaWYgKHBlbmRpbmdBY3Rpb24gPT09IFwiUE9QXCIgLyogUG9wICovKSB7XG4gICAgfSBlbHNlIGlmIChwZW5kaW5nQWN0aW9uID09PSBcIlBVU0hcIiAvKiBQdXNoICovKSB7XG4gICAgICBpbml0Lmhpc3RvcnkucHVzaChsb2NhdGlvbiwgbG9jYXRpb24uc3RhdGUpO1xuICAgIH0gZWxzZSBpZiAocGVuZGluZ0FjdGlvbiA9PT0gXCJSRVBMQUNFXCIgLyogUmVwbGFjZSAqLykge1xuICAgICAgaW5pdC5oaXN0b3J5LnJlcGxhY2UobG9jYXRpb24sIGxvY2F0aW9uLnN0YXRlKTtcbiAgICB9XG4gICAgbGV0IHZpZXdUcmFuc2l0aW9uT3B0cztcbiAgICBpZiAocGVuZGluZ0FjdGlvbiA9PT0gXCJQT1BcIiAvKiBQb3AgKi8pIHtcbiAgICAgIGxldCBwcmlvclBhdGhzID0gYXBwbGllZFZpZXdUcmFuc2l0aW9ucy5nZXQoc3RhdGUubG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgaWYgKHByaW9yUGF0aHMgJiYgcHJpb3JQYXRocy5oYXMobG9jYXRpb24ucGF0aG5hbWUpKSB7XG4gICAgICAgIHZpZXdUcmFuc2l0aW9uT3B0cyA9IHtcbiAgICAgICAgICBjdXJyZW50TG9jYXRpb246IHN0YXRlLmxvY2F0aW9uLFxuICAgICAgICAgIG5leHRMb2NhdGlvbjogbG9jYXRpb25cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoYXBwbGllZFZpZXdUcmFuc2l0aW9ucy5oYXMobG9jYXRpb24ucGF0aG5hbWUpKSB7XG4gICAgICAgIHZpZXdUcmFuc2l0aW9uT3B0cyA9IHtcbiAgICAgICAgICBjdXJyZW50TG9jYXRpb246IGxvY2F0aW9uLFxuICAgICAgICAgIG5leHRMb2NhdGlvbjogc3RhdGUubG9jYXRpb25cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHBlbmRpbmdWaWV3VHJhbnNpdGlvbkVuYWJsZWQpIHtcbiAgICAgIGxldCB0b1BhdGhzID0gYXBwbGllZFZpZXdUcmFuc2l0aW9ucy5nZXQoc3RhdGUubG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgaWYgKHRvUGF0aHMpIHtcbiAgICAgICAgdG9QYXRocy5hZGQobG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG9QYXRocyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFtsb2NhdGlvbi5wYXRobmFtZV0pO1xuICAgICAgICBhcHBsaWVkVmlld1RyYW5zaXRpb25zLnNldChzdGF0ZS5sb2NhdGlvbi5wYXRobmFtZSwgdG9QYXRocyk7XG4gICAgICB9XG4gICAgICB2aWV3VHJhbnNpdGlvbk9wdHMgPSB7XG4gICAgICAgIGN1cnJlbnRMb2NhdGlvbjogc3RhdGUubG9jYXRpb24sXG4gICAgICAgIG5leHRMb2NhdGlvbjogbG9jYXRpb25cbiAgICAgIH07XG4gICAgfVxuICAgIHVwZGF0ZVN0YXRlKFxuICAgICAge1xuICAgICAgICAuLi5uZXdTdGF0ZSxcbiAgICAgICAgLy8gbWF0Y2hlcywgZXJyb3JzLCBmZXRjaGVycyBnbyB0aHJvdWdoIGFzLWlzXG4gICAgICAgIGFjdGlvbkRhdGEsXG4gICAgICAgIGxvYWRlckRhdGEsXG4gICAgICAgIGhpc3RvcnlBY3Rpb246IHBlbmRpbmdBY3Rpb24sXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICBpbml0aWFsaXplZDogdHJ1ZSxcbiAgICAgICAgbmF2aWdhdGlvbjogSURMRV9OQVZJR0FUSU9OLFxuICAgICAgICByZXZhbGlkYXRpb246IFwiaWRsZVwiLFxuICAgICAgICByZXN0b3JlU2Nyb2xsUG9zaXRpb246IGdldFNhdmVkU2Nyb2xsUG9zaXRpb24oXG4gICAgICAgICAgbG9jYXRpb24sXG4gICAgICAgICAgbmV3U3RhdGUubWF0Y2hlcyB8fCBzdGF0ZS5tYXRjaGVzXG4gICAgICAgICksXG4gICAgICAgIHByZXZlbnRTY3JvbGxSZXNldCxcbiAgICAgICAgYmxvY2tlcnNcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHZpZXdUcmFuc2l0aW9uT3B0cyxcbiAgICAgICAgZmx1c2hTeW5jOiBmbHVzaFN5bmMgPT09IHRydWVcbiAgICAgIH1cbiAgICApO1xuICAgIHBlbmRpbmdBY3Rpb24gPSBcIlBPUFwiIC8qIFBvcCAqLztcbiAgICBwZW5kaW5nUHJldmVudFNjcm9sbFJlc2V0ID0gZmFsc2U7XG4gICAgcGVuZGluZ1ZpZXdUcmFuc2l0aW9uRW5hYmxlZCA9IGZhbHNlO1xuICAgIGlzVW5pbnRlcnJ1cHRlZFJldmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgIGlzUmV2YWxpZGF0aW9uUmVxdWlyZWQgPSBmYWxzZTtcbiAgICBwZW5kaW5nUmV2YWxpZGF0aW9uRGZkPy5yZXNvbHZlKCk7XG4gICAgcGVuZGluZ1JldmFsaWRhdGlvbkRmZCA9IG51bGw7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gbmF2aWdhdGUodG8sIG9wdHMpIHtcbiAgICBpZiAodHlwZW9mIHRvID09PSBcIm51bWJlclwiKSB7XG4gICAgICBpbml0Lmhpc3RvcnkuZ28odG8pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVUbyhcbiAgICAgIHN0YXRlLmxvY2F0aW9uLFxuICAgICAgc3RhdGUubWF0Y2hlcyxcbiAgICAgIGJhc2VuYW1lLFxuICAgICAgdG8sXG4gICAgICBvcHRzPy5mcm9tUm91dGVJZCxcbiAgICAgIG9wdHM/LnJlbGF0aXZlXG4gICAgKTtcbiAgICBsZXQgeyBwYXRoLCBzdWJtaXNzaW9uLCBlcnJvciB9ID0gbm9ybWFsaXplTmF2aWdhdGVPcHRpb25zKFxuICAgICAgZmFsc2UsXG4gICAgICBub3JtYWxpemVkUGF0aCxcbiAgICAgIG9wdHNcbiAgICApO1xuICAgIGxldCBjdXJyZW50TG9jYXRpb24gPSBzdGF0ZS5sb2NhdGlvbjtcbiAgICBsZXQgbmV4dExvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24oc3RhdGUubG9jYXRpb24sIHBhdGgsIG9wdHMgJiYgb3B0cy5zdGF0ZSk7XG4gICAgbmV4dExvY2F0aW9uID0ge1xuICAgICAgLi4ubmV4dExvY2F0aW9uLFxuICAgICAgLi4uaW5pdC5oaXN0b3J5LmVuY29kZUxvY2F0aW9uKG5leHRMb2NhdGlvbilcbiAgICB9O1xuICAgIGxldCB1c2VyUmVwbGFjZSA9IG9wdHMgJiYgb3B0cy5yZXBsYWNlICE9IG51bGwgPyBvcHRzLnJlcGxhY2UgOiB2b2lkIDA7XG4gICAgbGV0IGhpc3RvcnlBY3Rpb24gPSBcIlBVU0hcIiAvKiBQdXNoICovO1xuICAgIGlmICh1c2VyUmVwbGFjZSA9PT0gdHJ1ZSkge1xuICAgICAgaGlzdG9yeUFjdGlvbiA9IFwiUkVQTEFDRVwiIC8qIFJlcGxhY2UgKi87XG4gICAgfSBlbHNlIGlmICh1c2VyUmVwbGFjZSA9PT0gZmFsc2UpIHtcbiAgICB9IGVsc2UgaWYgKHN1Ym1pc3Npb24gIT0gbnVsbCAmJiBpc011dGF0aW9uTWV0aG9kKHN1Ym1pc3Npb24uZm9ybU1ldGhvZCkgJiYgc3VibWlzc2lvbi5mb3JtQWN0aW9uID09PSBzdGF0ZS5sb2NhdGlvbi5wYXRobmFtZSArIHN0YXRlLmxvY2F0aW9uLnNlYXJjaCkge1xuICAgICAgaGlzdG9yeUFjdGlvbiA9IFwiUkVQTEFDRVwiIC8qIFJlcGxhY2UgKi87XG4gICAgfVxuICAgIGxldCBwcmV2ZW50U2Nyb2xsUmVzZXQgPSBvcHRzICYmIFwicHJldmVudFNjcm9sbFJlc2V0XCIgaW4gb3B0cyA/IG9wdHMucHJldmVudFNjcm9sbFJlc2V0ID09PSB0cnVlIDogdm9pZCAwO1xuICAgIGxldCBmbHVzaFN5bmMgPSAob3B0cyAmJiBvcHRzLmZsdXNoU3luYykgPT09IHRydWU7XG4gICAgbGV0IGJsb2NrZXJLZXkgPSBzaG91bGRCbG9ja05hdmlnYXRpb24oe1xuICAgICAgY3VycmVudExvY2F0aW9uLFxuICAgICAgbmV4dExvY2F0aW9uLFxuICAgICAgaGlzdG9yeUFjdGlvblxuICAgIH0pO1xuICAgIGlmIChibG9ja2VyS2V5KSB7XG4gICAgICB1cGRhdGVCbG9ja2VyKGJsb2NrZXJLZXksIHtcbiAgICAgICAgc3RhdGU6IFwiYmxvY2tlZFwiLFxuICAgICAgICBsb2NhdGlvbjogbmV4dExvY2F0aW9uLFxuICAgICAgICBwcm9jZWVkKCkge1xuICAgICAgICAgIHVwZGF0ZUJsb2NrZXIoYmxvY2tlcktleSwge1xuICAgICAgICAgICAgc3RhdGU6IFwicHJvY2VlZGluZ1wiLFxuICAgICAgICAgICAgcHJvY2VlZDogdm9pZCAwLFxuICAgICAgICAgICAgcmVzZXQ6IHZvaWQgMCxcbiAgICAgICAgICAgIGxvY2F0aW9uOiBuZXh0TG9jYXRpb25cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBuYXZpZ2F0ZSh0bywgb3B0cyk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgIGxldCBibG9ja2VycyA9IG5ldyBNYXAoc3RhdGUuYmxvY2tlcnMpO1xuICAgICAgICAgIGJsb2NrZXJzLnNldChibG9ja2VyS2V5LCBJRExFX0JMT0NLRVIpO1xuICAgICAgICAgIHVwZGF0ZVN0YXRlKHsgYmxvY2tlcnMgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCBzdGFydE5hdmlnYXRpb24oaGlzdG9yeUFjdGlvbiwgbmV4dExvY2F0aW9uLCB7XG4gICAgICBzdWJtaXNzaW9uLFxuICAgICAgLy8gU2VuZCB0aHJvdWdoIHRoZSBmb3JtRGF0YSBzZXJpYWxpemF0aW9uIGVycm9yIGlmIHdlIGhhdmUgb25lIHNvIHdlIGNhblxuICAgICAgLy8gcmVuZGVyIGF0IHRoZSByaWdodCBlcnJvciBib3VuZGFyeSBhZnRlciB3ZSBtYXRjaCByb3V0ZXNcbiAgICAgIHBlbmRpbmdFcnJvcjogZXJyb3IsXG4gICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgICByZXBsYWNlOiBvcHRzICYmIG9wdHMucmVwbGFjZSxcbiAgICAgIGVuYWJsZVZpZXdUcmFuc2l0aW9uOiBvcHRzICYmIG9wdHMudmlld1RyYW5zaXRpb24sXG4gICAgICBmbHVzaFN5bmNcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiByZXZhbGlkYXRlKCkge1xuICAgIGlmICghcGVuZGluZ1JldmFsaWRhdGlvbkRmZCkge1xuICAgICAgcGVuZGluZ1JldmFsaWRhdGlvbkRmZCA9IGNyZWF0ZURlZmVycmVkKCk7XG4gICAgfVxuICAgIGludGVycnVwdEFjdGl2ZUxvYWRzKCk7XG4gICAgdXBkYXRlU3RhdGUoeyByZXZhbGlkYXRpb246IFwibG9hZGluZ1wiIH0pO1xuICAgIGxldCBwcm9taXNlID0gcGVuZGluZ1JldmFsaWRhdGlvbkRmZC5wcm9taXNlO1xuICAgIGlmIChzdGF0ZS5uYXZpZ2F0aW9uLnN0YXRlID09PSBcInN1Ym1pdHRpbmdcIikge1xuICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5uYXZpZ2F0aW9uLnN0YXRlID09PSBcImlkbGVcIikge1xuICAgICAgc3RhcnROYXZpZ2F0aW9uKHN0YXRlLmhpc3RvcnlBY3Rpb24sIHN0YXRlLmxvY2F0aW9uLCB7XG4gICAgICAgIHN0YXJ0VW5pbnRlcnJ1cHRlZFJldmFsaWRhdGlvbjogdHJ1ZVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG4gICAgc3RhcnROYXZpZ2F0aW9uKFxuICAgICAgcGVuZGluZ0FjdGlvbiB8fCBzdGF0ZS5oaXN0b3J5QWN0aW9uLFxuICAgICAgc3RhdGUubmF2aWdhdGlvbi5sb2NhdGlvbixcbiAgICAgIHtcbiAgICAgICAgb3ZlcnJpZGVOYXZpZ2F0aW9uOiBzdGF0ZS5uYXZpZ2F0aW9uLFxuICAgICAgICAvLyBQcm94eSB0aHJvdWdoIGFueSByZW5kaW5nIHZpZXcgdHJhbnNpdGlvblxuICAgICAgICBlbmFibGVWaWV3VHJhbnNpdGlvbjogcGVuZGluZ1ZpZXdUcmFuc2l0aW9uRW5hYmxlZCA9PT0gdHJ1ZVxuICAgICAgfVxuICAgICk7XG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gc3RhcnROYXZpZ2F0aW9uKGhpc3RvcnlBY3Rpb24sIGxvY2F0aW9uLCBvcHRzKSB7XG4gICAgcGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyICYmIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlci5hYm9ydCgpO1xuICAgIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlciA9IG51bGw7XG4gICAgcGVuZGluZ0FjdGlvbiA9IGhpc3RvcnlBY3Rpb247XG4gICAgaXNVbmludGVycnVwdGVkUmV2YWxpZGF0aW9uID0gKG9wdHMgJiYgb3B0cy5zdGFydFVuaW50ZXJydXB0ZWRSZXZhbGlkYXRpb24pID09PSB0cnVlO1xuICAgIHNhdmVTY3JvbGxQb3NpdGlvbihzdGF0ZS5sb2NhdGlvbiwgc3RhdGUubWF0Y2hlcyk7XG4gICAgcGVuZGluZ1ByZXZlbnRTY3JvbGxSZXNldCA9IChvcHRzICYmIG9wdHMucHJldmVudFNjcm9sbFJlc2V0KSA9PT0gdHJ1ZTtcbiAgICBwZW5kaW5nVmlld1RyYW5zaXRpb25FbmFibGVkID0gKG9wdHMgJiYgb3B0cy5lbmFibGVWaWV3VHJhbnNpdGlvbikgPT09IHRydWU7XG4gICAgbGV0IHJvdXRlc1RvVXNlID0gaW5GbGlnaHREYXRhUm91dGVzIHx8IGRhdGFSb3V0ZXM7XG4gICAgbGV0IGxvYWRpbmdOYXZpZ2F0aW9uID0gb3B0cyAmJiBvcHRzLm92ZXJyaWRlTmF2aWdhdGlvbjtcbiAgICBsZXQgbWF0Y2hlcyA9IG1hdGNoUm91dGVzKHJvdXRlc1RvVXNlLCBsb2NhdGlvbiwgYmFzZW5hbWUpO1xuICAgIGxldCBmbHVzaFN5bmMgPSAob3B0cyAmJiBvcHRzLmZsdXNoU3luYykgPT09IHRydWU7XG4gICAgbGV0IGZvZ09mV2FyID0gY2hlY2tGb2dPZldhcihtYXRjaGVzLCByb3V0ZXNUb1VzZSwgbG9jYXRpb24ucGF0aG5hbWUpO1xuICAgIGlmIChmb2dPZldhci5hY3RpdmUgJiYgZm9nT2ZXYXIubWF0Y2hlcykge1xuICAgICAgbWF0Y2hlcyA9IGZvZ09mV2FyLm1hdGNoZXM7XG4gICAgfVxuICAgIGlmICghbWF0Y2hlcykge1xuICAgICAgbGV0IHsgZXJyb3IsIG5vdEZvdW5kTWF0Y2hlcywgcm91dGUgfSA9IGhhbmRsZU5hdmlnYXRpb25hbDQwNChcbiAgICAgICAgbG9jYXRpb24ucGF0aG5hbWVcbiAgICAgICk7XG4gICAgICBjb21wbGV0ZU5hdmlnYXRpb24oXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICB7XG4gICAgICAgICAgbWF0Y2hlczogbm90Rm91bmRNYXRjaGVzLFxuICAgICAgICAgIGxvYWRlckRhdGE6IHt9LFxuICAgICAgICAgIGVycm9yczoge1xuICAgICAgICAgICAgW3JvdXRlLmlkXTogZXJyb3JcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHsgZmx1c2hTeW5jIH1cbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChzdGF0ZS5pbml0aWFsaXplZCAmJiAhaXNSZXZhbGlkYXRpb25SZXF1aXJlZCAmJiBpc0hhc2hDaGFuZ2VPbmx5KHN0YXRlLmxvY2F0aW9uLCBsb2NhdGlvbikgJiYgIShvcHRzICYmIG9wdHMuc3VibWlzc2lvbiAmJiBpc011dGF0aW9uTWV0aG9kKG9wdHMuc3VibWlzc2lvbi5mb3JtTWV0aG9kKSkpIHtcbiAgICAgIGNvbXBsZXRlTmF2aWdhdGlvbihsb2NhdGlvbiwgeyBtYXRjaGVzIH0sIHsgZmx1c2hTeW5jIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBwZW5kaW5nTmF2aWdhdGlvbkNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgbGV0IHJlcXVlc3QgPSBjcmVhdGVDbGllbnRTaWRlUmVxdWVzdChcbiAgICAgIGluaXQuaGlzdG9yeSxcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgcGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyLnNpZ25hbCxcbiAgICAgIG9wdHMgJiYgb3B0cy5zdWJtaXNzaW9uXG4gICAgKTtcbiAgICBsZXQgcGVuZGluZ0FjdGlvblJlc3VsdDtcbiAgICBpZiAob3B0cyAmJiBvcHRzLnBlbmRpbmdFcnJvcikge1xuICAgICAgcGVuZGluZ0FjdGlvblJlc3VsdCA9IFtcbiAgICAgICAgZmluZE5lYXJlc3RCb3VuZGFyeShtYXRjaGVzKS5yb3V0ZS5pZCxcbiAgICAgICAgeyB0eXBlOiBcImVycm9yXCIgLyogZXJyb3IgKi8sIGVycm9yOiBvcHRzLnBlbmRpbmdFcnJvciB9XG4gICAgICBdO1xuICAgIH0gZWxzZSBpZiAob3B0cyAmJiBvcHRzLnN1Ym1pc3Npb24gJiYgaXNNdXRhdGlvbk1ldGhvZChvcHRzLnN1Ym1pc3Npb24uZm9ybU1ldGhvZCkpIHtcbiAgICAgIGxldCBhY3Rpb25SZXN1bHQgPSBhd2FpdCBoYW5kbGVBY3Rpb24oXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICBvcHRzLnN1Ym1pc3Npb24sXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGZvZ09mV2FyLmFjdGl2ZSxcbiAgICAgICAgeyByZXBsYWNlOiBvcHRzLnJlcGxhY2UsIGZsdXNoU3luYyB9XG4gICAgICApO1xuICAgICAgaWYgKGFjdGlvblJlc3VsdC5zaG9ydENpcmN1aXRlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoYWN0aW9uUmVzdWx0LnBlbmRpbmdBY3Rpb25SZXN1bHQpIHtcbiAgICAgICAgbGV0IFtyb3V0ZUlkLCByZXN1bHRdID0gYWN0aW9uUmVzdWx0LnBlbmRpbmdBY3Rpb25SZXN1bHQ7XG4gICAgICAgIGlmIChpc0Vycm9yUmVzdWx0KHJlc3VsdCkgJiYgaXNSb3V0ZUVycm9yUmVzcG9uc2UocmVzdWx0LmVycm9yKSAmJiByZXN1bHQuZXJyb3Iuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICBwZW5kaW5nTmF2aWdhdGlvbkNvbnRyb2xsZXIgPSBudWxsO1xuICAgICAgICAgIGNvbXBsZXRlTmF2aWdhdGlvbihsb2NhdGlvbiwge1xuICAgICAgICAgICAgbWF0Y2hlczogYWN0aW9uUmVzdWx0Lm1hdGNoZXMsXG4gICAgICAgICAgICBsb2FkZXJEYXRhOiB7fSxcbiAgICAgICAgICAgIGVycm9yczoge1xuICAgICAgICAgICAgICBbcm91dGVJZF06IHJlc3VsdC5lcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbWF0Y2hlcyA9IGFjdGlvblJlc3VsdC5tYXRjaGVzIHx8IG1hdGNoZXM7XG4gICAgICBwZW5kaW5nQWN0aW9uUmVzdWx0ID0gYWN0aW9uUmVzdWx0LnBlbmRpbmdBY3Rpb25SZXN1bHQ7XG4gICAgICBsb2FkaW5nTmF2aWdhdGlvbiA9IGdldExvYWRpbmdOYXZpZ2F0aW9uKGxvY2F0aW9uLCBvcHRzLnN1Ym1pc3Npb24pO1xuICAgICAgZmx1c2hTeW5jID0gZmFsc2U7XG4gICAgICBmb2dPZldhci5hY3RpdmUgPSBmYWxzZTtcbiAgICAgIHJlcXVlc3QgPSBjcmVhdGVDbGllbnRTaWRlUmVxdWVzdChcbiAgICAgICAgaW5pdC5oaXN0b3J5LFxuICAgICAgICByZXF1ZXN0LnVybCxcbiAgICAgICAgcmVxdWVzdC5zaWduYWxcbiAgICAgICk7XG4gICAgfVxuICAgIGxldCB7XG4gICAgICBzaG9ydENpcmN1aXRlZCxcbiAgICAgIG1hdGNoZXM6IHVwZGF0ZWRNYXRjaGVzLFxuICAgICAgbG9hZGVyRGF0YSxcbiAgICAgIGVycm9yc1xuICAgIH0gPSBhd2FpdCBoYW5kbGVMb2FkZXJzKFxuICAgICAgcmVxdWVzdCxcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIGZvZ09mV2FyLmFjdGl2ZSxcbiAgICAgIGxvYWRpbmdOYXZpZ2F0aW9uLFxuICAgICAgb3B0cyAmJiBvcHRzLnN1Ym1pc3Npb24sXG4gICAgICBvcHRzICYmIG9wdHMuZmV0Y2hlclN1Ym1pc3Npb24sXG4gICAgICBvcHRzICYmIG9wdHMucmVwbGFjZSxcbiAgICAgIG9wdHMgJiYgb3B0cy5pbml0aWFsSHlkcmF0aW9uID09PSB0cnVlLFxuICAgICAgZmx1c2hTeW5jLFxuICAgICAgcGVuZGluZ0FjdGlvblJlc3VsdFxuICAgICk7XG4gICAgaWYgKHNob3J0Q2lyY3VpdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlciA9IG51bGw7XG4gICAgY29tcGxldGVOYXZpZ2F0aW9uKGxvY2F0aW9uLCB7XG4gICAgICBtYXRjaGVzOiB1cGRhdGVkTWF0Y2hlcyB8fCBtYXRjaGVzLFxuICAgICAgLi4uZ2V0QWN0aW9uRGF0YUZvckNvbW1pdChwZW5kaW5nQWN0aW9uUmVzdWx0KSxcbiAgICAgIGxvYWRlckRhdGEsXG4gICAgICBlcnJvcnNcbiAgICB9KTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBoYW5kbGVBY3Rpb24ocmVxdWVzdCwgbG9jYXRpb24sIHN1Ym1pc3Npb24sIG1hdGNoZXMsIGlzRm9nT2ZXYXIsIG9wdHMgPSB7fSkge1xuICAgIGludGVycnVwdEFjdGl2ZUxvYWRzKCk7XG4gICAgbGV0IG5hdmlnYXRpb24gPSBnZXRTdWJtaXR0aW5nTmF2aWdhdGlvbihsb2NhdGlvbiwgc3VibWlzc2lvbik7XG4gICAgdXBkYXRlU3RhdGUoeyBuYXZpZ2F0aW9uIH0sIHsgZmx1c2hTeW5jOiBvcHRzLmZsdXNoU3luYyA9PT0gdHJ1ZSB9KTtcbiAgICBpZiAoaXNGb2dPZldhcikge1xuICAgICAgbGV0IGRpc2NvdmVyUmVzdWx0ID0gYXdhaXQgZGlzY292ZXJSb3V0ZXMoXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgICByZXF1ZXN0LnNpZ25hbFxuICAgICAgKTtcbiAgICAgIGlmIChkaXNjb3ZlclJlc3VsdC50eXBlID09PSBcImFib3J0ZWRcIikge1xuICAgICAgICByZXR1cm4geyBzaG9ydENpcmN1aXRlZDogdHJ1ZSB9O1xuICAgICAgfSBlbHNlIGlmIChkaXNjb3ZlclJlc3VsdC50eXBlID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgbGV0IGJvdW5kYXJ5SWQgPSBmaW5kTmVhcmVzdEJvdW5kYXJ5KGRpc2NvdmVyUmVzdWx0LnBhcnRpYWxNYXRjaGVzKS5yb3V0ZS5pZDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtYXRjaGVzOiBkaXNjb3ZlclJlc3VsdC5wYXJ0aWFsTWF0Y2hlcyxcbiAgICAgICAgICBwZW5kaW5nQWN0aW9uUmVzdWx0OiBbXG4gICAgICAgICAgICBib3VuZGFyeUlkLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBcImVycm9yXCIgLyogZXJyb3IgKi8sXG4gICAgICAgICAgICAgIGVycm9yOiBkaXNjb3ZlclJlc3VsdC5lcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoIWRpc2NvdmVyUmVzdWx0Lm1hdGNoZXMpIHtcbiAgICAgICAgbGV0IHsgbm90Rm91bmRNYXRjaGVzLCBlcnJvciwgcm91dGUgfSA9IGhhbmRsZU5hdmlnYXRpb25hbDQwNChcbiAgICAgICAgICBsb2NhdGlvbi5wYXRobmFtZVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1hdGNoZXM6IG5vdEZvdW5kTWF0Y2hlcyxcbiAgICAgICAgICBwZW5kaW5nQWN0aW9uUmVzdWx0OiBbXG4gICAgICAgICAgICByb3V0ZS5pZCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogXCJlcnJvclwiIC8qIGVycm9yICovLFxuICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hdGNoZXMgPSBkaXNjb3ZlclJlc3VsdC5tYXRjaGVzO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgcmVzdWx0O1xuICAgIGxldCBhY3Rpb25NYXRjaCA9IGdldFRhcmdldE1hdGNoKG1hdGNoZXMsIGxvY2F0aW9uKTtcbiAgICBpZiAoIWFjdGlvbk1hdGNoLnJvdXRlLmFjdGlvbiAmJiAhYWN0aW9uTWF0Y2gucm91dGUubGF6eSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICB0eXBlOiBcImVycm9yXCIgLyogZXJyb3IgKi8sXG4gICAgICAgIGVycm9yOiBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwNSwge1xuICAgICAgICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgICAgICAgcGF0aG5hbWU6IGxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgICAgIHJvdXRlSWQ6IGFjdGlvbk1hdGNoLnJvdXRlLmlkXG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IGNhbGxEYXRhU3RyYXRlZ3koXG4gICAgICAgIFwiYWN0aW9uXCIsXG4gICAgICAgIHN0YXRlLFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBbYWN0aW9uTWF0Y2hdLFxuICAgICAgICBtYXRjaGVzLFxuICAgICAgICBudWxsXG4gICAgICApO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0c1thY3Rpb25NYXRjaC5yb3V0ZS5pZF07XG4gICAgICBpZiAocmVxdWVzdC5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgICByZXR1cm4geyBzaG9ydENpcmN1aXRlZDogdHJ1ZSB9O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNSZWRpcmVjdFJlc3VsdChyZXN1bHQpKSB7XG4gICAgICBsZXQgcmVwbGFjZTI7XG4gICAgICBpZiAob3B0cyAmJiBvcHRzLnJlcGxhY2UgIT0gbnVsbCkge1xuICAgICAgICByZXBsYWNlMiA9IG9wdHMucmVwbGFjZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBsb2NhdGlvbjIgPSBub3JtYWxpemVSZWRpcmVjdExvY2F0aW9uKFxuICAgICAgICAgIHJlc3VsdC5yZXNwb25zZS5oZWFkZXJzLmdldChcIkxvY2F0aW9uXCIpLFxuICAgICAgICAgIG5ldyBVUkwocmVxdWVzdC51cmwpLFxuICAgICAgICAgIGJhc2VuYW1lXG4gICAgICAgICk7XG4gICAgICAgIHJlcGxhY2UyID0gbG9jYXRpb24yID09PSBzdGF0ZS5sb2NhdGlvbi5wYXRobmFtZSArIHN0YXRlLmxvY2F0aW9uLnNlYXJjaDtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHN0YXJ0UmVkaXJlY3ROYXZpZ2F0aW9uKHJlcXVlc3QsIHJlc3VsdCwgdHJ1ZSwge1xuICAgICAgICBzdWJtaXNzaW9uLFxuICAgICAgICByZXBsYWNlOiByZXBsYWNlMlxuICAgICAgfSk7XG4gICAgICByZXR1cm4geyBzaG9ydENpcmN1aXRlZDogdHJ1ZSB9O1xuICAgIH1cbiAgICBpZiAoaXNFcnJvclJlc3VsdChyZXN1bHQpKSB7XG4gICAgICBsZXQgYm91bmRhcnlNYXRjaCA9IGZpbmROZWFyZXN0Qm91bmRhcnkobWF0Y2hlcywgYWN0aW9uTWF0Y2gucm91dGUuaWQpO1xuICAgICAgaWYgKChvcHRzICYmIG9wdHMucmVwbGFjZSkgIT09IHRydWUpIHtcbiAgICAgICAgcGVuZGluZ0FjdGlvbiA9IFwiUFVTSFwiIC8qIFB1c2ggKi87XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYXRjaGVzLFxuICAgICAgICBwZW5kaW5nQWN0aW9uUmVzdWx0OiBbYm91bmRhcnlNYXRjaC5yb3V0ZS5pZCwgcmVzdWx0XVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIG1hdGNoZXMsXG4gICAgICBwZW5kaW5nQWN0aW9uUmVzdWx0OiBbYWN0aW9uTWF0Y2gucm91dGUuaWQsIHJlc3VsdF1cbiAgICB9O1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGhhbmRsZUxvYWRlcnMocmVxdWVzdCwgbG9jYXRpb24sIG1hdGNoZXMsIGlzRm9nT2ZXYXIsIG92ZXJyaWRlTmF2aWdhdGlvbiwgc3VibWlzc2lvbiwgZmV0Y2hlclN1Ym1pc3Npb24sIHJlcGxhY2UyLCBpbml0aWFsSHlkcmF0aW9uLCBmbHVzaFN5bmMsIHBlbmRpbmdBY3Rpb25SZXN1bHQpIHtcbiAgICBsZXQgbG9hZGluZ05hdmlnYXRpb24gPSBvdmVycmlkZU5hdmlnYXRpb24gfHwgZ2V0TG9hZGluZ05hdmlnYXRpb24obG9jYXRpb24sIHN1Ym1pc3Npb24pO1xuICAgIGxldCBhY3RpdmVTdWJtaXNzaW9uID0gc3VibWlzc2lvbiB8fCBmZXRjaGVyU3VibWlzc2lvbiB8fCBnZXRTdWJtaXNzaW9uRnJvbU5hdmlnYXRpb24obG9hZGluZ05hdmlnYXRpb24pO1xuICAgIGxldCBzaG91bGRVcGRhdGVOYXZpZ2F0aW9uU3RhdGUgPSAhaXNVbmludGVycnVwdGVkUmV2YWxpZGF0aW9uICYmICFpbml0aWFsSHlkcmF0aW9uO1xuICAgIGlmIChpc0ZvZ09mV2FyKSB7XG4gICAgICBpZiAoc2hvdWxkVXBkYXRlTmF2aWdhdGlvblN0YXRlKSB7XG4gICAgICAgIGxldCBhY3Rpb25EYXRhID0gZ2V0VXBkYXRlZEFjdGlvbkRhdGEocGVuZGluZ0FjdGlvblJlc3VsdCk7XG4gICAgICAgIHVwZGF0ZVN0YXRlKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hdmlnYXRpb246IGxvYWRpbmdOYXZpZ2F0aW9uLFxuICAgICAgICAgICAgLi4uYWN0aW9uRGF0YSAhPT0gdm9pZCAwID8geyBhY3Rpb25EYXRhIH0gOiB7fVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmx1c2hTeW5jXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgbGV0IGRpc2NvdmVyUmVzdWx0ID0gYXdhaXQgZGlzY292ZXJSb3V0ZXMoXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgICByZXF1ZXN0LnNpZ25hbFxuICAgICAgKTtcbiAgICAgIGlmIChkaXNjb3ZlclJlc3VsdC50eXBlID09PSBcImFib3J0ZWRcIikge1xuICAgICAgICByZXR1cm4geyBzaG9ydENpcmN1aXRlZDogdHJ1ZSB9O1xuICAgICAgfSBlbHNlIGlmIChkaXNjb3ZlclJlc3VsdC50eXBlID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgbGV0IGJvdW5kYXJ5SWQgPSBmaW5kTmVhcmVzdEJvdW5kYXJ5KGRpc2NvdmVyUmVzdWx0LnBhcnRpYWxNYXRjaGVzKS5yb3V0ZS5pZDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtYXRjaGVzOiBkaXNjb3ZlclJlc3VsdC5wYXJ0aWFsTWF0Y2hlcyxcbiAgICAgICAgICBsb2FkZXJEYXRhOiB7fSxcbiAgICAgICAgICBlcnJvcnM6IHtcbiAgICAgICAgICAgIFtib3VuZGFyeUlkXTogZGlzY292ZXJSZXN1bHQuZXJyb3JcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKCFkaXNjb3ZlclJlc3VsdC5tYXRjaGVzKSB7XG4gICAgICAgIGxldCB7IGVycm9yLCBub3RGb3VuZE1hdGNoZXMsIHJvdXRlIH0gPSBoYW5kbGVOYXZpZ2F0aW9uYWw0MDQoXG4gICAgICAgICAgbG9jYXRpb24ucGF0aG5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtYXRjaGVzOiBub3RGb3VuZE1hdGNoZXMsXG4gICAgICAgICAgbG9hZGVyRGF0YToge30sXG4gICAgICAgICAgZXJyb3JzOiB7XG4gICAgICAgICAgICBbcm91dGUuaWRdOiBlcnJvclxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hdGNoZXMgPSBkaXNjb3ZlclJlc3VsdC5tYXRjaGVzO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgcm91dGVzVG9Vc2UgPSBpbkZsaWdodERhdGFSb3V0ZXMgfHwgZGF0YVJvdXRlcztcbiAgICBsZXQgW21hdGNoZXNUb0xvYWQsIHJldmFsaWRhdGluZ0ZldGNoZXJzXSA9IGdldE1hdGNoZXNUb0xvYWQoXG4gICAgICBpbml0Lmhpc3RvcnksXG4gICAgICBzdGF0ZSxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBhY3RpdmVTdWJtaXNzaW9uLFxuICAgICAgbG9jYXRpb24sXG4gICAgICBpbml0aWFsSHlkcmF0aW9uID09PSB0cnVlLFxuICAgICAgaXNSZXZhbGlkYXRpb25SZXF1aXJlZCxcbiAgICAgIGNhbmNlbGxlZEZldGNoZXJMb2FkcyxcbiAgICAgIGZldGNoZXJzUXVldWVkRm9yRGVsZXRpb24sXG4gICAgICBmZXRjaExvYWRNYXRjaGVzLFxuICAgICAgZmV0Y2hSZWRpcmVjdElkcyxcbiAgICAgIHJvdXRlc1RvVXNlLFxuICAgICAgYmFzZW5hbWUsXG4gICAgICBwZW5kaW5nQWN0aW9uUmVzdWx0XG4gICAgKTtcbiAgICBwZW5kaW5nTmF2aWdhdGlvbkxvYWRJZCA9ICsraW5jcmVtZW50aW5nTG9hZElkO1xuICAgIGlmIChtYXRjaGVzVG9Mb2FkLmxlbmd0aCA9PT0gMCAmJiByZXZhbGlkYXRpbmdGZXRjaGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIGxldCB1cGRhdGVkRmV0Y2hlcnMyID0gbWFya0ZldGNoUmVkaXJlY3RzRG9uZSgpO1xuICAgICAgY29tcGxldGVOYXZpZ2F0aW9uKFxuICAgICAgICBsb2NhdGlvbixcbiAgICAgICAge1xuICAgICAgICAgIG1hdGNoZXMsXG4gICAgICAgICAgbG9hZGVyRGF0YToge30sXG4gICAgICAgICAgLy8gQ29tbWl0IHBlbmRpbmcgZXJyb3IgaWYgd2UncmUgc2hvcnQgY2lyY3VpdGluZ1xuICAgICAgICAgIGVycm9yczogcGVuZGluZ0FjdGlvblJlc3VsdCAmJiBpc0Vycm9yUmVzdWx0KHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0pID8geyBbcGVuZGluZ0FjdGlvblJlc3VsdFswXV06IHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0uZXJyb3IgfSA6IG51bGwsXG4gICAgICAgICAgLi4uZ2V0QWN0aW9uRGF0YUZvckNvbW1pdChwZW5kaW5nQWN0aW9uUmVzdWx0KSxcbiAgICAgICAgICAuLi51cGRhdGVkRmV0Y2hlcnMyID8geyBmZXRjaGVyczogbmV3IE1hcChzdGF0ZS5mZXRjaGVycykgfSA6IHt9XG4gICAgICAgIH0sXG4gICAgICAgIHsgZmx1c2hTeW5jIH1cbiAgICAgICk7XG4gICAgICByZXR1cm4geyBzaG9ydENpcmN1aXRlZDogdHJ1ZSB9O1xuICAgIH1cbiAgICBpZiAoc2hvdWxkVXBkYXRlTmF2aWdhdGlvblN0YXRlKSB7XG4gICAgICBsZXQgdXBkYXRlcyA9IHt9O1xuICAgICAgaWYgKCFpc0ZvZ09mV2FyKSB7XG4gICAgICAgIHVwZGF0ZXMubmF2aWdhdGlvbiA9IGxvYWRpbmdOYXZpZ2F0aW9uO1xuICAgICAgICBsZXQgYWN0aW9uRGF0YSA9IGdldFVwZGF0ZWRBY3Rpb25EYXRhKHBlbmRpbmdBY3Rpb25SZXN1bHQpO1xuICAgICAgICBpZiAoYWN0aW9uRGF0YSAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgdXBkYXRlcy5hY3Rpb25EYXRhID0gYWN0aW9uRGF0YTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJldmFsaWRhdGluZ0ZldGNoZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdXBkYXRlcy5mZXRjaGVycyA9IGdldFVwZGF0ZWRSZXZhbGlkYXRpbmdGZXRjaGVycyhyZXZhbGlkYXRpbmdGZXRjaGVycyk7XG4gICAgICB9XG4gICAgICB1cGRhdGVTdGF0ZSh1cGRhdGVzLCB7IGZsdXNoU3luYyB9KTtcbiAgICB9XG4gICAgcmV2YWxpZGF0aW5nRmV0Y2hlcnMuZm9yRWFjaCgocmYpID0+IHtcbiAgICAgIGFib3J0RmV0Y2hlcihyZi5rZXkpO1xuICAgICAgaWYgKHJmLmNvbnRyb2xsZXIpIHtcbiAgICAgICAgZmV0Y2hDb250cm9sbGVycy5zZXQocmYua2V5LCByZi5jb250cm9sbGVyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBsZXQgYWJvcnRQZW5kaW5nRmV0Y2hSZXZhbGlkYXRpb25zID0gKCkgPT4gcmV2YWxpZGF0aW5nRmV0Y2hlcnMuZm9yRWFjaCgoZikgPT4gYWJvcnRGZXRjaGVyKGYua2V5KSk7XG4gICAgaWYgKHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlcikge1xuICAgICAgcGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICBcImFib3J0XCIsXG4gICAgICAgIGFib3J0UGVuZGluZ0ZldGNoUmV2YWxpZGF0aW9uc1xuICAgICAgKTtcbiAgICB9XG4gICAgbGV0IHsgbG9hZGVyUmVzdWx0cywgZmV0Y2hlclJlc3VsdHMgfSA9IGF3YWl0IGNhbGxMb2FkZXJzQW5kTWF5YmVSZXNvbHZlRGF0YShcbiAgICAgIHN0YXRlLFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIG1hdGNoZXNUb0xvYWQsXG4gICAgICByZXZhbGlkYXRpbmdGZXRjaGVycyxcbiAgICAgIHJlcXVlc3RcbiAgICApO1xuICAgIGlmIChyZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm4geyBzaG9ydENpcmN1aXRlZDogdHJ1ZSB9O1xuICAgIH1cbiAgICBpZiAocGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyKSB7XG4gICAgICBwZW5kaW5nTmF2aWdhdGlvbkNvbnRyb2xsZXIuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAgIFwiYWJvcnRcIixcbiAgICAgICAgYWJvcnRQZW5kaW5nRmV0Y2hSZXZhbGlkYXRpb25zXG4gICAgICApO1xuICAgIH1cbiAgICByZXZhbGlkYXRpbmdGZXRjaGVycy5mb3JFYWNoKChyZikgPT4gZmV0Y2hDb250cm9sbGVycy5kZWxldGUocmYua2V5KSk7XG4gICAgbGV0IHJlZGlyZWN0MiA9IGZpbmRSZWRpcmVjdChsb2FkZXJSZXN1bHRzKTtcbiAgICBpZiAocmVkaXJlY3QyKSB7XG4gICAgICBhd2FpdCBzdGFydFJlZGlyZWN0TmF2aWdhdGlvbihyZXF1ZXN0LCByZWRpcmVjdDIucmVzdWx0LCB0cnVlLCB7XG4gICAgICAgIHJlcGxhY2U6IHJlcGxhY2UyXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IHNob3J0Q2lyY3VpdGVkOiB0cnVlIH07XG4gICAgfVxuICAgIHJlZGlyZWN0MiA9IGZpbmRSZWRpcmVjdChmZXRjaGVyUmVzdWx0cyk7XG4gICAgaWYgKHJlZGlyZWN0Mikge1xuICAgICAgZmV0Y2hSZWRpcmVjdElkcy5hZGQocmVkaXJlY3QyLmtleSk7XG4gICAgICBhd2FpdCBzdGFydFJlZGlyZWN0TmF2aWdhdGlvbihyZXF1ZXN0LCByZWRpcmVjdDIucmVzdWx0LCB0cnVlLCB7XG4gICAgICAgIHJlcGxhY2U6IHJlcGxhY2UyXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IHNob3J0Q2lyY3VpdGVkOiB0cnVlIH07XG4gICAgfVxuICAgIGxldCB7IGxvYWRlckRhdGEsIGVycm9ycyB9ID0gcHJvY2Vzc0xvYWRlckRhdGEoXG4gICAgICBzdGF0ZSxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBsb2FkZXJSZXN1bHRzLFxuICAgICAgcGVuZGluZ0FjdGlvblJlc3VsdCxcbiAgICAgIHJldmFsaWRhdGluZ0ZldGNoZXJzLFxuICAgICAgZmV0Y2hlclJlc3VsdHNcbiAgICApO1xuICAgIGlmIChpbml0aWFsSHlkcmF0aW9uICYmIHN0YXRlLmVycm9ycykge1xuICAgICAgZXJyb3JzID0geyAuLi5zdGF0ZS5lcnJvcnMsIC4uLmVycm9ycyB9O1xuICAgIH1cbiAgICBsZXQgdXBkYXRlZEZldGNoZXJzID0gbWFya0ZldGNoUmVkaXJlY3RzRG9uZSgpO1xuICAgIGxldCBkaWRBYm9ydEZldGNoTG9hZHMgPSBhYm9ydFN0YWxlRmV0Y2hMb2FkcyhwZW5kaW5nTmF2aWdhdGlvbkxvYWRJZCk7XG4gICAgbGV0IHNob3VsZFVwZGF0ZUZldGNoZXJzID0gdXBkYXRlZEZldGNoZXJzIHx8IGRpZEFib3J0RmV0Y2hMb2FkcyB8fCByZXZhbGlkYXRpbmdGZXRjaGVycy5sZW5ndGggPiAwO1xuICAgIHJldHVybiB7XG4gICAgICBtYXRjaGVzLFxuICAgICAgbG9hZGVyRGF0YSxcbiAgICAgIGVycm9ycyxcbiAgICAgIC4uLnNob3VsZFVwZGF0ZUZldGNoZXJzID8geyBmZXRjaGVyczogbmV3IE1hcChzdGF0ZS5mZXRjaGVycykgfSA6IHt9XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBnZXRVcGRhdGVkQWN0aW9uRGF0YShwZW5kaW5nQWN0aW9uUmVzdWx0KSB7XG4gICAgaWYgKHBlbmRpbmdBY3Rpb25SZXN1bHQgJiYgIWlzRXJyb3JSZXN1bHQocGVuZGluZ0FjdGlvblJlc3VsdFsxXSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtwZW5kaW5nQWN0aW9uUmVzdWx0WzBdXTogcGVuZGluZ0FjdGlvblJlc3VsdFsxXS5kYXRhXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoc3RhdGUuYWN0aW9uRGF0YSkge1xuICAgICAgaWYgKE9iamVjdC5rZXlzKHN0YXRlLmFjdGlvbkRhdGEpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBzdGF0ZS5hY3Rpb25EYXRhO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBnZXRVcGRhdGVkUmV2YWxpZGF0aW5nRmV0Y2hlcnMocmV2YWxpZGF0aW5nRmV0Y2hlcnMpIHtcbiAgICByZXZhbGlkYXRpbmdGZXRjaGVycy5mb3JFYWNoKChyZikgPT4ge1xuICAgICAgbGV0IGZldGNoZXIgPSBzdGF0ZS5mZXRjaGVycy5nZXQocmYua2V5KTtcbiAgICAgIGxldCByZXZhbGlkYXRpbmdGZXRjaGVyID0gZ2V0TG9hZGluZ0ZldGNoZXIoXG4gICAgICAgIHZvaWQgMCxcbiAgICAgICAgZmV0Y2hlciA/IGZldGNoZXIuZGF0YSA6IHZvaWQgMFxuICAgICAgKTtcbiAgICAgIHN0YXRlLmZldGNoZXJzLnNldChyZi5rZXksIHJldmFsaWRhdGluZ0ZldGNoZXIpO1xuICAgIH0pO1xuICAgIHJldHVybiBuZXcgTWFwKHN0YXRlLmZldGNoZXJzKTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBmZXRjaDIoa2V5LCByb3V0ZUlkLCBocmVmLCBvcHRzKSB7XG4gICAgYWJvcnRGZXRjaGVyKGtleSk7XG4gICAgbGV0IGZsdXNoU3luYyA9IChvcHRzICYmIG9wdHMuZmx1c2hTeW5jKSA9PT0gdHJ1ZTtcbiAgICBsZXQgcm91dGVzVG9Vc2UgPSBpbkZsaWdodERhdGFSb3V0ZXMgfHwgZGF0YVJvdXRlcztcbiAgICBsZXQgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVUbyhcbiAgICAgIHN0YXRlLmxvY2F0aW9uLFxuICAgICAgc3RhdGUubWF0Y2hlcyxcbiAgICAgIGJhc2VuYW1lLFxuICAgICAgaHJlZixcbiAgICAgIHJvdXRlSWQsXG4gICAgICBvcHRzPy5yZWxhdGl2ZVxuICAgICk7XG4gICAgbGV0IG1hdGNoZXMgPSBtYXRjaFJvdXRlcyhyb3V0ZXNUb1VzZSwgbm9ybWFsaXplZFBhdGgsIGJhc2VuYW1lKTtcbiAgICBsZXQgZm9nT2ZXYXIgPSBjaGVja0ZvZ09mV2FyKG1hdGNoZXMsIHJvdXRlc1RvVXNlLCBub3JtYWxpemVkUGF0aCk7XG4gICAgaWYgKGZvZ09mV2FyLmFjdGl2ZSAmJiBmb2dPZldhci5tYXRjaGVzKSB7XG4gICAgICBtYXRjaGVzID0gZm9nT2ZXYXIubWF0Y2hlcztcbiAgICB9XG4gICAgaWYgKCFtYXRjaGVzKSB7XG4gICAgICBzZXRGZXRjaGVyRXJyb3IoXG4gICAgICAgIGtleSxcbiAgICAgICAgcm91dGVJZCxcbiAgICAgICAgZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDQsIHsgcGF0aG5hbWU6IG5vcm1hbGl6ZWRQYXRoIH0pLFxuICAgICAgICB7IGZsdXNoU3luYyB9XG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgeyBwYXRoLCBzdWJtaXNzaW9uLCBlcnJvciB9ID0gbm9ybWFsaXplTmF2aWdhdGVPcHRpb25zKFxuICAgICAgdHJ1ZSxcbiAgICAgIG5vcm1hbGl6ZWRQYXRoLFxuICAgICAgb3B0c1xuICAgICk7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBzZXRGZXRjaGVyRXJyb3Ioa2V5LCByb3V0ZUlkLCBlcnJvciwgeyBmbHVzaFN5bmMgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBtYXRjaCA9IGdldFRhcmdldE1hdGNoKG1hdGNoZXMsIHBhdGgpO1xuICAgIGxldCBwcmV2ZW50U2Nyb2xsUmVzZXQgPSAob3B0cyAmJiBvcHRzLnByZXZlbnRTY3JvbGxSZXNldCkgPT09IHRydWU7XG4gICAgaWYgKHN1Ym1pc3Npb24gJiYgaXNNdXRhdGlvbk1ldGhvZChzdWJtaXNzaW9uLmZvcm1NZXRob2QpKSB7XG4gICAgICBhd2FpdCBoYW5kbGVGZXRjaGVyQWN0aW9uKFxuICAgICAgICBrZXksXG4gICAgICAgIHJvdXRlSWQsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIG1hdGNoLFxuICAgICAgICBtYXRjaGVzLFxuICAgICAgICBmb2dPZldhci5hY3RpdmUsXG4gICAgICAgIGZsdXNoU3luYyxcbiAgICAgICAgcHJldmVudFNjcm9sbFJlc2V0LFxuICAgICAgICBzdWJtaXNzaW9uXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmZXRjaExvYWRNYXRjaGVzLnNldChrZXksIHsgcm91dGVJZCwgcGF0aCB9KTtcbiAgICBhd2FpdCBoYW5kbGVGZXRjaGVyTG9hZGVyKFxuICAgICAga2V5LFxuICAgICAgcm91dGVJZCxcbiAgICAgIHBhdGgsXG4gICAgICBtYXRjaCxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBmb2dPZldhci5hY3RpdmUsXG4gICAgICBmbHVzaFN5bmMsXG4gICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgICBzdWJtaXNzaW9uXG4gICAgKTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBoYW5kbGVGZXRjaGVyQWN0aW9uKGtleSwgcm91dGVJZCwgcGF0aCwgbWF0Y2gsIHJlcXVlc3RNYXRjaGVzLCBpc0ZvZ09mV2FyLCBmbHVzaFN5bmMsIHByZXZlbnRTY3JvbGxSZXNldCwgc3VibWlzc2lvbikge1xuICAgIGludGVycnVwdEFjdGl2ZUxvYWRzKCk7XG4gICAgZmV0Y2hMb2FkTWF0Y2hlcy5kZWxldGUoa2V5KTtcbiAgICBmdW5jdGlvbiBkZXRlY3RBbmRIYW5kbGU0MDVFcnJvcihtKSB7XG4gICAgICBpZiAoIW0ucm91dGUuYWN0aW9uICYmICFtLnJvdXRlLmxhenkpIHtcbiAgICAgICAgbGV0IGVycm9yID0gZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDUsIHtcbiAgICAgICAgICBtZXRob2Q6IHN1Ym1pc3Npb24uZm9ybU1ldGhvZCxcbiAgICAgICAgICBwYXRobmFtZTogcGF0aCxcbiAgICAgICAgICByb3V0ZUlkXG4gICAgICAgIH0pO1xuICAgICAgICBzZXRGZXRjaGVyRXJyb3Ioa2V5LCByb3V0ZUlkLCBlcnJvciwgeyBmbHVzaFN5bmMgfSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWlzRm9nT2ZXYXIgJiYgZGV0ZWN0QW5kSGFuZGxlNDA1RXJyb3IobWF0Y2gpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBleGlzdGluZ0ZldGNoZXIgPSBzdGF0ZS5mZXRjaGVycy5nZXQoa2V5KTtcbiAgICB1cGRhdGVGZXRjaGVyU3RhdGUoa2V5LCBnZXRTdWJtaXR0aW5nRmV0Y2hlcihzdWJtaXNzaW9uLCBleGlzdGluZ0ZldGNoZXIpLCB7XG4gICAgICBmbHVzaFN5bmNcbiAgICB9KTtcbiAgICBsZXQgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGxldCBmZXRjaFJlcXVlc3QgPSBjcmVhdGVDbGllbnRTaWRlUmVxdWVzdChcbiAgICAgIGluaXQuaGlzdG9yeSxcbiAgICAgIHBhdGgsXG4gICAgICBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgc3VibWlzc2lvblxuICAgICk7XG4gICAgaWYgKGlzRm9nT2ZXYXIpIHtcbiAgICAgIGxldCBkaXNjb3ZlclJlc3VsdCA9IGF3YWl0IGRpc2NvdmVyUm91dGVzKFxuICAgICAgICByZXF1ZXN0TWF0Y2hlcyxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgZmV0Y2hSZXF1ZXN0LnNpZ25hbFxuICAgICAgKTtcbiAgICAgIGlmIChkaXNjb3ZlclJlc3VsdC50eXBlID09PSBcImFib3J0ZWRcIikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKGRpc2NvdmVyUmVzdWx0LnR5cGUgPT09IFwiZXJyb3JcIikge1xuICAgICAgICBzZXRGZXRjaGVyRXJyb3Ioa2V5LCByb3V0ZUlkLCBkaXNjb3ZlclJlc3VsdC5lcnJvciwgeyBmbHVzaFN5bmMgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAoIWRpc2NvdmVyUmVzdWx0Lm1hdGNoZXMpIHtcbiAgICAgICAgc2V0RmV0Y2hlckVycm9yKFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICByb3V0ZUlkLFxuICAgICAgICAgIGdldEludGVybmFsUm91dGVyRXJyb3IoNDA0LCB7IHBhdGhuYW1lOiBwYXRoIH0pLFxuICAgICAgICAgIHsgZmx1c2hTeW5jIH1cbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVxdWVzdE1hdGNoZXMgPSBkaXNjb3ZlclJlc3VsdC5tYXRjaGVzO1xuICAgICAgICBtYXRjaCA9IGdldFRhcmdldE1hdGNoKHJlcXVlc3RNYXRjaGVzLCBwYXRoKTtcbiAgICAgICAgaWYgKGRldGVjdEFuZEhhbmRsZTQwNUVycm9yKG1hdGNoKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmZXRjaENvbnRyb2xsZXJzLnNldChrZXksIGFib3J0Q29udHJvbGxlcik7XG4gICAgbGV0IG9yaWdpbmF0aW5nTG9hZElkID0gaW5jcmVtZW50aW5nTG9hZElkO1xuICAgIGxldCBhY3Rpb25SZXN1bHRzID0gYXdhaXQgY2FsbERhdGFTdHJhdGVneShcbiAgICAgIFwiYWN0aW9uXCIsXG4gICAgICBzdGF0ZSxcbiAgICAgIGZldGNoUmVxdWVzdCxcbiAgICAgIFttYXRjaF0sXG4gICAgICByZXF1ZXN0TWF0Y2hlcyxcbiAgICAgIGtleVxuICAgICk7XG4gICAgbGV0IGFjdGlvblJlc3VsdCA9IGFjdGlvblJlc3VsdHNbbWF0Y2gucm91dGUuaWRdO1xuICAgIGlmIChmZXRjaFJlcXVlc3Quc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIGlmIChmZXRjaENvbnRyb2xsZXJzLmdldChrZXkpID09PSBhYm9ydENvbnRyb2xsZXIpIHtcbiAgICAgICAgZmV0Y2hDb250cm9sbGVycy5kZWxldGUoa2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGZldGNoZXJzUXVldWVkRm9yRGVsZXRpb24uaGFzKGtleSkpIHtcbiAgICAgIGlmIChpc1JlZGlyZWN0UmVzdWx0KGFjdGlvblJlc3VsdCkgfHwgaXNFcnJvclJlc3VsdChhY3Rpb25SZXN1bHQpKSB7XG4gICAgICAgIHVwZGF0ZUZldGNoZXJTdGF0ZShrZXksIGdldERvbmVGZXRjaGVyKHZvaWQgMCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc1JlZGlyZWN0UmVzdWx0KGFjdGlvblJlc3VsdCkpIHtcbiAgICAgICAgZmV0Y2hDb250cm9sbGVycy5kZWxldGUoa2V5KTtcbiAgICAgICAgaWYgKHBlbmRpbmdOYXZpZ2F0aW9uTG9hZElkID4gb3JpZ2luYXRpbmdMb2FkSWQpIHtcbiAgICAgICAgICB1cGRhdGVGZXRjaGVyU3RhdGUoa2V5LCBnZXREb25lRmV0Y2hlcih2b2lkIDApKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmV0Y2hSZWRpcmVjdElkcy5hZGQoa2V5KTtcbiAgICAgICAgICB1cGRhdGVGZXRjaGVyU3RhdGUoa2V5LCBnZXRMb2FkaW5nRmV0Y2hlcihzdWJtaXNzaW9uKSk7XG4gICAgICAgICAgcmV0dXJuIHN0YXJ0UmVkaXJlY3ROYXZpZ2F0aW9uKGZldGNoUmVxdWVzdCwgYWN0aW9uUmVzdWx0LCBmYWxzZSwge1xuICAgICAgICAgICAgZmV0Y2hlclN1Ym1pc3Npb246IHN1Ym1pc3Npb24sXG4gICAgICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzRXJyb3JSZXN1bHQoYWN0aW9uUmVzdWx0KSkge1xuICAgICAgICBzZXRGZXRjaGVyRXJyb3Ioa2V5LCByb3V0ZUlkLCBhY3Rpb25SZXN1bHQuZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBuZXh0TG9jYXRpb24gPSBzdGF0ZS5uYXZpZ2F0aW9uLmxvY2F0aW9uIHx8IHN0YXRlLmxvY2F0aW9uO1xuICAgIGxldCByZXZhbGlkYXRpb25SZXF1ZXN0ID0gY3JlYXRlQ2xpZW50U2lkZVJlcXVlc3QoXG4gICAgICBpbml0Lmhpc3RvcnksXG4gICAgICBuZXh0TG9jYXRpb24sXG4gICAgICBhYm9ydENvbnRyb2xsZXIuc2lnbmFsXG4gICAgKTtcbiAgICBsZXQgcm91dGVzVG9Vc2UgPSBpbkZsaWdodERhdGFSb3V0ZXMgfHwgZGF0YVJvdXRlcztcbiAgICBsZXQgbWF0Y2hlcyA9IHN0YXRlLm5hdmlnYXRpb24uc3RhdGUgIT09IFwiaWRsZVwiID8gbWF0Y2hSb3V0ZXMocm91dGVzVG9Vc2UsIHN0YXRlLm5hdmlnYXRpb24ubG9jYXRpb24sIGJhc2VuYW1lKSA6IHN0YXRlLm1hdGNoZXM7XG4gICAgaW52YXJpYW50KG1hdGNoZXMsIFwiRGlkbid0IGZpbmQgYW55IG1hdGNoZXMgYWZ0ZXIgZmV0Y2hlciBhY3Rpb25cIik7XG4gICAgbGV0IGxvYWRJZCA9ICsraW5jcmVtZW50aW5nTG9hZElkO1xuICAgIGZldGNoUmVsb2FkSWRzLnNldChrZXksIGxvYWRJZCk7XG4gICAgbGV0IGxvYWRGZXRjaGVyID0gZ2V0TG9hZGluZ0ZldGNoZXIoc3VibWlzc2lvbiwgYWN0aW9uUmVzdWx0LmRhdGEpO1xuICAgIHN0YXRlLmZldGNoZXJzLnNldChrZXksIGxvYWRGZXRjaGVyKTtcbiAgICBsZXQgW21hdGNoZXNUb0xvYWQsIHJldmFsaWRhdGluZ0ZldGNoZXJzXSA9IGdldE1hdGNoZXNUb0xvYWQoXG4gICAgICBpbml0Lmhpc3RvcnksXG4gICAgICBzdGF0ZSxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBzdWJtaXNzaW9uLFxuICAgICAgbmV4dExvY2F0aW9uLFxuICAgICAgZmFsc2UsXG4gICAgICBpc1JldmFsaWRhdGlvblJlcXVpcmVkLFxuICAgICAgY2FuY2VsbGVkRmV0Y2hlckxvYWRzLFxuICAgICAgZmV0Y2hlcnNRdWV1ZWRGb3JEZWxldGlvbixcbiAgICAgIGZldGNoTG9hZE1hdGNoZXMsXG4gICAgICBmZXRjaFJlZGlyZWN0SWRzLFxuICAgICAgcm91dGVzVG9Vc2UsXG4gICAgICBiYXNlbmFtZSxcbiAgICAgIFttYXRjaC5yb3V0ZS5pZCwgYWN0aW9uUmVzdWx0XVxuICAgICk7XG4gICAgcmV2YWxpZGF0aW5nRmV0Y2hlcnMuZmlsdGVyKChyZikgPT4gcmYua2V5ICE9PSBrZXkpLmZvckVhY2goKHJmKSA9PiB7XG4gICAgICBsZXQgc3RhbGVLZXkgPSByZi5rZXk7XG4gICAgICBsZXQgZXhpc3RpbmdGZXRjaGVyMiA9IHN0YXRlLmZldGNoZXJzLmdldChzdGFsZUtleSk7XG4gICAgICBsZXQgcmV2YWxpZGF0aW5nRmV0Y2hlciA9IGdldExvYWRpbmdGZXRjaGVyKFxuICAgICAgICB2b2lkIDAsXG4gICAgICAgIGV4aXN0aW5nRmV0Y2hlcjIgPyBleGlzdGluZ0ZldGNoZXIyLmRhdGEgOiB2b2lkIDBcbiAgICAgICk7XG4gICAgICBzdGF0ZS5mZXRjaGVycy5zZXQoc3RhbGVLZXksIHJldmFsaWRhdGluZ0ZldGNoZXIpO1xuICAgICAgYWJvcnRGZXRjaGVyKHN0YWxlS2V5KTtcbiAgICAgIGlmIChyZi5jb250cm9sbGVyKSB7XG4gICAgICAgIGZldGNoQ29udHJvbGxlcnMuc2V0KHN0YWxlS2V5LCByZi5jb250cm9sbGVyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB1cGRhdGVTdGF0ZSh7IGZldGNoZXJzOiBuZXcgTWFwKHN0YXRlLmZldGNoZXJzKSB9KTtcbiAgICBsZXQgYWJvcnRQZW5kaW5nRmV0Y2hSZXZhbGlkYXRpb25zID0gKCkgPT4gcmV2YWxpZGF0aW5nRmV0Y2hlcnMuZm9yRWFjaCgocmYpID0+IGFib3J0RmV0Y2hlcihyZi5rZXkpKTtcbiAgICBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICBcImFib3J0XCIsXG4gICAgICBhYm9ydFBlbmRpbmdGZXRjaFJldmFsaWRhdGlvbnNcbiAgICApO1xuICAgIGxldCB7IGxvYWRlclJlc3VsdHMsIGZldGNoZXJSZXN1bHRzIH0gPSBhd2FpdCBjYWxsTG9hZGVyc0FuZE1heWJlUmVzb2x2ZURhdGEoXG4gICAgICBzdGF0ZSxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBtYXRjaGVzVG9Mb2FkLFxuICAgICAgcmV2YWxpZGF0aW5nRmV0Y2hlcnMsXG4gICAgICByZXZhbGlkYXRpb25SZXF1ZXN0XG4gICAgKTtcbiAgICBpZiAoYWJvcnRDb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGFib3J0Q29udHJvbGxlci5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgIFwiYWJvcnRcIixcbiAgICAgIGFib3J0UGVuZGluZ0ZldGNoUmV2YWxpZGF0aW9uc1xuICAgICk7XG4gICAgZmV0Y2hSZWxvYWRJZHMuZGVsZXRlKGtleSk7XG4gICAgZmV0Y2hDb250cm9sbGVycy5kZWxldGUoa2V5KTtcbiAgICByZXZhbGlkYXRpbmdGZXRjaGVycy5mb3JFYWNoKChyKSA9PiBmZXRjaENvbnRyb2xsZXJzLmRlbGV0ZShyLmtleSkpO1xuICAgIGxldCByZWRpcmVjdDIgPSBmaW5kUmVkaXJlY3QobG9hZGVyUmVzdWx0cyk7XG4gICAgaWYgKHJlZGlyZWN0Mikge1xuICAgICAgcmV0dXJuIHN0YXJ0UmVkaXJlY3ROYXZpZ2F0aW9uKFxuICAgICAgICByZXZhbGlkYXRpb25SZXF1ZXN0LFxuICAgICAgICByZWRpcmVjdDIucmVzdWx0LFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgeyBwcmV2ZW50U2Nyb2xsUmVzZXQgfVxuICAgICAgKTtcbiAgICB9XG4gICAgcmVkaXJlY3QyID0gZmluZFJlZGlyZWN0KGZldGNoZXJSZXN1bHRzKTtcbiAgICBpZiAocmVkaXJlY3QyKSB7XG4gICAgICBmZXRjaFJlZGlyZWN0SWRzLmFkZChyZWRpcmVjdDIua2V5KTtcbiAgICAgIHJldHVybiBzdGFydFJlZGlyZWN0TmF2aWdhdGlvbihcbiAgICAgICAgcmV2YWxpZGF0aW9uUmVxdWVzdCxcbiAgICAgICAgcmVkaXJlY3QyLnJlc3VsdCxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHsgcHJldmVudFNjcm9sbFJlc2V0IH1cbiAgICAgICk7XG4gICAgfVxuICAgIGxldCB7IGxvYWRlckRhdGEsIGVycm9ycyB9ID0gcHJvY2Vzc0xvYWRlckRhdGEoXG4gICAgICBzdGF0ZSxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBsb2FkZXJSZXN1bHRzLFxuICAgICAgdm9pZCAwLFxuICAgICAgcmV2YWxpZGF0aW5nRmV0Y2hlcnMsXG4gICAgICBmZXRjaGVyUmVzdWx0c1xuICAgICk7XG4gICAgaWYgKHN0YXRlLmZldGNoZXJzLmhhcyhrZXkpKSB7XG4gICAgICBsZXQgZG9uZUZldGNoZXIgPSBnZXREb25lRmV0Y2hlcihhY3Rpb25SZXN1bHQuZGF0YSk7XG4gICAgICBzdGF0ZS5mZXRjaGVycy5zZXQoa2V5LCBkb25lRmV0Y2hlcik7XG4gICAgfVxuICAgIGFib3J0U3RhbGVGZXRjaExvYWRzKGxvYWRJZCk7XG4gICAgaWYgKHN0YXRlLm5hdmlnYXRpb24uc3RhdGUgPT09IFwibG9hZGluZ1wiICYmIGxvYWRJZCA+IHBlbmRpbmdOYXZpZ2F0aW9uTG9hZElkKSB7XG4gICAgICBpbnZhcmlhbnQocGVuZGluZ0FjdGlvbiwgXCJFeHBlY3RlZCBwZW5kaW5nIGFjdGlvblwiKTtcbiAgICAgIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlciAmJiBwZW5kaW5nTmF2aWdhdGlvbkNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICAgIGNvbXBsZXRlTmF2aWdhdGlvbihzdGF0ZS5uYXZpZ2F0aW9uLmxvY2F0aW9uLCB7XG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGxvYWRlckRhdGEsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgZmV0Y2hlcnM6IG5ldyBNYXAoc3RhdGUuZmV0Y2hlcnMpXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdXBkYXRlU3RhdGUoe1xuICAgICAgICBlcnJvcnMsXG4gICAgICAgIGxvYWRlckRhdGE6IG1lcmdlTG9hZGVyRGF0YShcbiAgICAgICAgICBzdGF0ZS5sb2FkZXJEYXRhLFxuICAgICAgICAgIGxvYWRlckRhdGEsXG4gICAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgICBlcnJvcnNcbiAgICAgICAgKSxcbiAgICAgICAgZmV0Y2hlcnM6IG5ldyBNYXAoc3RhdGUuZmV0Y2hlcnMpXG4gICAgICB9KTtcbiAgICAgIGlzUmV2YWxpZGF0aW9uUmVxdWlyZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gaGFuZGxlRmV0Y2hlckxvYWRlcihrZXksIHJvdXRlSWQsIHBhdGgsIG1hdGNoLCBtYXRjaGVzLCBpc0ZvZ09mV2FyLCBmbHVzaFN5bmMsIHByZXZlbnRTY3JvbGxSZXNldCwgc3VibWlzc2lvbikge1xuICAgIGxldCBleGlzdGluZ0ZldGNoZXIgPSBzdGF0ZS5mZXRjaGVycy5nZXQoa2V5KTtcbiAgICB1cGRhdGVGZXRjaGVyU3RhdGUoXG4gICAgICBrZXksXG4gICAgICBnZXRMb2FkaW5nRmV0Y2hlcihcbiAgICAgICAgc3VibWlzc2lvbixcbiAgICAgICAgZXhpc3RpbmdGZXRjaGVyID8gZXhpc3RpbmdGZXRjaGVyLmRhdGEgOiB2b2lkIDBcbiAgICAgICksXG4gICAgICB7IGZsdXNoU3luYyB9XG4gICAgKTtcbiAgICBsZXQgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGxldCBmZXRjaFJlcXVlc3QgPSBjcmVhdGVDbGllbnRTaWRlUmVxdWVzdChcbiAgICAgIGluaXQuaGlzdG9yeSxcbiAgICAgIHBhdGgsXG4gICAgICBhYm9ydENvbnRyb2xsZXIuc2lnbmFsXG4gICAgKTtcbiAgICBpZiAoaXNGb2dPZldhcikge1xuICAgICAgbGV0IGRpc2NvdmVyUmVzdWx0ID0gYXdhaXQgZGlzY292ZXJSb3V0ZXMoXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIGZldGNoUmVxdWVzdC5zaWduYWxcbiAgICAgICk7XG4gICAgICBpZiAoZGlzY292ZXJSZXN1bHQudHlwZSA9PT0gXCJhYm9ydGVkXCIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmIChkaXNjb3ZlclJlc3VsdC50eXBlID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgc2V0RmV0Y2hlckVycm9yKGtleSwgcm91dGVJZCwgZGlzY292ZXJSZXN1bHQuZXJyb3IsIHsgZmx1c2hTeW5jIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKCFkaXNjb3ZlclJlc3VsdC5tYXRjaGVzKSB7XG4gICAgICAgIHNldEZldGNoZXJFcnJvcihcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgcm91dGVJZCxcbiAgICAgICAgICBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwNCwgeyBwYXRobmFtZTogcGF0aCB9KSxcbiAgICAgICAgICB7IGZsdXNoU3luYyB9XG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hdGNoZXMgPSBkaXNjb3ZlclJlc3VsdC5tYXRjaGVzO1xuICAgICAgICBtYXRjaCA9IGdldFRhcmdldE1hdGNoKG1hdGNoZXMsIHBhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgICBmZXRjaENvbnRyb2xsZXJzLnNldChrZXksIGFib3J0Q29udHJvbGxlcik7XG4gICAgbGV0IG9yaWdpbmF0aW5nTG9hZElkID0gaW5jcmVtZW50aW5nTG9hZElkO1xuICAgIGxldCByZXN1bHRzID0gYXdhaXQgY2FsbERhdGFTdHJhdGVneShcbiAgICAgIFwibG9hZGVyXCIsXG4gICAgICBzdGF0ZSxcbiAgICAgIGZldGNoUmVxdWVzdCxcbiAgICAgIFttYXRjaF0sXG4gICAgICBtYXRjaGVzLFxuICAgICAga2V5XG4gICAgKTtcbiAgICBsZXQgcmVzdWx0ID0gcmVzdWx0c1ttYXRjaC5yb3V0ZS5pZF07XG4gICAgaWYgKGZldGNoQ29udHJvbGxlcnMuZ2V0KGtleSkgPT09IGFib3J0Q29udHJvbGxlcikge1xuICAgICAgZmV0Y2hDb250cm9sbGVycy5kZWxldGUoa2V5KTtcbiAgICB9XG4gICAgaWYgKGZldGNoUmVxdWVzdC5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZmV0Y2hlcnNRdWV1ZWRGb3JEZWxldGlvbi5oYXMoa2V5KSkge1xuICAgICAgdXBkYXRlRmV0Y2hlclN0YXRlKGtleSwgZ2V0RG9uZUZldGNoZXIodm9pZCAwKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc1JlZGlyZWN0UmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgIGlmIChwZW5kaW5nTmF2aWdhdGlvbkxvYWRJZCA+IG9yaWdpbmF0aW5nTG9hZElkKSB7XG4gICAgICAgIHVwZGF0ZUZldGNoZXJTdGF0ZShrZXksIGdldERvbmVGZXRjaGVyKHZvaWQgMCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmZXRjaFJlZGlyZWN0SWRzLmFkZChrZXkpO1xuICAgICAgICBhd2FpdCBzdGFydFJlZGlyZWN0TmF2aWdhdGlvbihmZXRjaFJlcXVlc3QsIHJlc3VsdCwgZmFsc2UsIHtcbiAgICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXRcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzRXJyb3JSZXN1bHQocmVzdWx0KSkge1xuICAgICAgc2V0RmV0Y2hlckVycm9yKGtleSwgcm91dGVJZCwgcmVzdWx0LmVycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdXBkYXRlRmV0Y2hlclN0YXRlKGtleSwgZ2V0RG9uZUZldGNoZXIocmVzdWx0LmRhdGEpKTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBzdGFydFJlZGlyZWN0TmF2aWdhdGlvbihyZXF1ZXN0LCByZWRpcmVjdDIsIGlzTmF2aWdhdGlvbiwge1xuICAgIHN1Ym1pc3Npb24sXG4gICAgZmV0Y2hlclN1Ym1pc3Npb24sXG4gICAgcHJldmVudFNjcm9sbFJlc2V0LFxuICAgIHJlcGxhY2U6IHJlcGxhY2UyXG4gIH0gPSB7fSkge1xuICAgIGlmIChyZWRpcmVjdDIucmVzcG9uc2UuaGVhZGVycy5oYXMoXCJYLVJlbWl4LVJldmFsaWRhdGVcIikpIHtcbiAgICAgIGlzUmV2YWxpZGF0aW9uUmVxdWlyZWQgPSB0cnVlO1xuICAgIH1cbiAgICBsZXQgbG9jYXRpb24gPSByZWRpcmVjdDIucmVzcG9uc2UuaGVhZGVycy5nZXQoXCJMb2NhdGlvblwiKTtcbiAgICBpbnZhcmlhbnQobG9jYXRpb24sIFwiRXhwZWN0ZWQgYSBMb2NhdGlvbiBoZWFkZXIgb24gdGhlIHJlZGlyZWN0IFJlc3BvbnNlXCIpO1xuICAgIGxvY2F0aW9uID0gbm9ybWFsaXplUmVkaXJlY3RMb2NhdGlvbihcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgbmV3IFVSTChyZXF1ZXN0LnVybCksXG4gICAgICBiYXNlbmFtZVxuICAgICk7XG4gICAgbGV0IHJlZGlyZWN0TG9jYXRpb24gPSBjcmVhdGVMb2NhdGlvbihzdGF0ZS5sb2NhdGlvbiwgbG9jYXRpb24sIHtcbiAgICAgIF9pc1JlZGlyZWN0OiB0cnVlXG4gICAgfSk7XG4gICAgaWYgKGlzQnJvd3NlcjIpIHtcbiAgICAgIGxldCBpc0RvY3VtZW50UmVsb2FkID0gZmFsc2U7XG4gICAgICBpZiAocmVkaXJlY3QyLnJlc3BvbnNlLmhlYWRlcnMuaGFzKFwiWC1SZW1peC1SZWxvYWQtRG9jdW1lbnRcIikpIHtcbiAgICAgICAgaXNEb2N1bWVudFJlbG9hZCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKEFCU09MVVRFX1VSTF9SRUdFWC50ZXN0KGxvY2F0aW9uKSkge1xuICAgICAgICBjb25zdCB1cmwgPSBpbml0Lmhpc3RvcnkuY3JlYXRlVVJMKGxvY2F0aW9uKTtcbiAgICAgICAgaXNEb2N1bWVudFJlbG9hZCA9IC8vIEhhcmQgcmVsb2FkIGlmIGl0J3MgYW4gYWJzb2x1dGUgVVJMIHRvIGEgbmV3IG9yaWdpblxuICAgICAgICB1cmwub3JpZ2luICE9PSByb3V0ZXJXaW5kb3cubG9jYXRpb24ub3JpZ2luIHx8IC8vIEhhcmQgcmVsb2FkIGlmIGl0J3MgYW4gYWJzb2x1dGUgVVJMIHRoYXQgZG9lcyBub3QgbWF0Y2ggb3VyIGJhc2VuYW1lXG4gICAgICAgIHN0cmlwQmFzZW5hbWUodXJsLnBhdGhuYW1lLCBiYXNlbmFtZSkgPT0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChpc0RvY3VtZW50UmVsb2FkKSB7XG4gICAgICAgIGlmIChyZXBsYWNlMikge1xuICAgICAgICAgIHJvdXRlcldpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKGxvY2F0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByb3V0ZXJXaW5kb3cubG9jYXRpb24uYXNzaWduKGxvY2F0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlciA9IG51bGw7XG4gICAgbGV0IHJlZGlyZWN0TmF2aWdhdGlvblR5cGUgPSByZXBsYWNlMiA9PT0gdHJ1ZSB8fCByZWRpcmVjdDIucmVzcG9uc2UuaGVhZGVycy5oYXMoXCJYLVJlbWl4LVJlcGxhY2VcIikgPyBcIlJFUExBQ0VcIiAvKiBSZXBsYWNlICovIDogXCJQVVNIXCIgLyogUHVzaCAqLztcbiAgICBsZXQgeyBmb3JtTWV0aG9kLCBmb3JtQWN0aW9uLCBmb3JtRW5jVHlwZSB9ID0gc3RhdGUubmF2aWdhdGlvbjtcbiAgICBpZiAoIXN1Ym1pc3Npb24gJiYgIWZldGNoZXJTdWJtaXNzaW9uICYmIGZvcm1NZXRob2QgJiYgZm9ybUFjdGlvbiAmJiBmb3JtRW5jVHlwZSkge1xuICAgICAgc3VibWlzc2lvbiA9IGdldFN1Ym1pc3Npb25Gcm9tTmF2aWdhdGlvbihzdGF0ZS5uYXZpZ2F0aW9uKTtcbiAgICB9XG4gICAgbGV0IGFjdGl2ZVN1Ym1pc3Npb24gPSBzdWJtaXNzaW9uIHx8IGZldGNoZXJTdWJtaXNzaW9uO1xuICAgIGlmIChyZWRpcmVjdFByZXNlcnZlTWV0aG9kU3RhdHVzQ29kZXMuaGFzKHJlZGlyZWN0Mi5yZXNwb25zZS5zdGF0dXMpICYmIGFjdGl2ZVN1Ym1pc3Npb24gJiYgaXNNdXRhdGlvbk1ldGhvZChhY3RpdmVTdWJtaXNzaW9uLmZvcm1NZXRob2QpKSB7XG4gICAgICBhd2FpdCBzdGFydE5hdmlnYXRpb24ocmVkaXJlY3ROYXZpZ2F0aW9uVHlwZSwgcmVkaXJlY3RMb2NhdGlvbiwge1xuICAgICAgICBzdWJtaXNzaW9uOiB7XG4gICAgICAgICAgLi4uYWN0aXZlU3VibWlzc2lvbixcbiAgICAgICAgICBmb3JtQWN0aW9uOiBsb2NhdGlvblxuICAgICAgICB9LFxuICAgICAgICAvLyBQcmVzZXJ2ZSB0aGVzZSBmbGFncyBhY3Jvc3MgcmVkaXJlY3RzXG4gICAgICAgIHByZXZlbnRTY3JvbGxSZXNldDogcHJldmVudFNjcm9sbFJlc2V0IHx8IHBlbmRpbmdQcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgICAgIGVuYWJsZVZpZXdUcmFuc2l0aW9uOiBpc05hdmlnYXRpb24gPyBwZW5kaW5nVmlld1RyYW5zaXRpb25FbmFibGVkIDogdm9pZCAwXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG92ZXJyaWRlTmF2aWdhdGlvbiA9IGdldExvYWRpbmdOYXZpZ2F0aW9uKFxuICAgICAgICByZWRpcmVjdExvY2F0aW9uLFxuICAgICAgICBzdWJtaXNzaW9uXG4gICAgICApO1xuICAgICAgYXdhaXQgc3RhcnROYXZpZ2F0aW9uKHJlZGlyZWN0TmF2aWdhdGlvblR5cGUsIHJlZGlyZWN0TG9jYXRpb24sIHtcbiAgICAgICAgb3ZlcnJpZGVOYXZpZ2F0aW9uLFxuICAgICAgICAvLyBTZW5kIGZldGNoZXIgc3VibWlzc2lvbnMgdGhyb3VnaCBmb3Igc2hvdWxkUmV2YWxpZGF0ZVxuICAgICAgICBmZXRjaGVyU3VibWlzc2lvbixcbiAgICAgICAgLy8gUHJlc2VydmUgdGhlc2UgZmxhZ3MgYWNyb3NzIHJlZGlyZWN0c1xuICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQ6IHByZXZlbnRTY3JvbGxSZXNldCB8fCBwZW5kaW5nUHJldmVudFNjcm9sbFJlc2V0LFxuICAgICAgICBlbmFibGVWaWV3VHJhbnNpdGlvbjogaXNOYXZpZ2F0aW9uID8gcGVuZGluZ1ZpZXdUcmFuc2l0aW9uRW5hYmxlZCA6IHZvaWQgMFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGNhbGxEYXRhU3RyYXRlZ3kodHlwZSwgc3RhdGUyLCByZXF1ZXN0LCBtYXRjaGVzVG9Mb2FkLCBtYXRjaGVzLCBmZXRjaGVyS2V5KSB7XG4gICAgbGV0IHJlc3VsdHM7XG4gICAgbGV0IGRhdGFSZXN1bHRzID0ge307XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdHMgPSBhd2FpdCBjYWxsRGF0YVN0cmF0ZWd5SW1wbChcbiAgICAgICAgZGF0YVN0cmF0ZWd5SW1wbCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgc3RhdGUyLFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBtYXRjaGVzVG9Mb2FkLFxuICAgICAgICBtYXRjaGVzLFxuICAgICAgICBmZXRjaGVyS2V5LFxuICAgICAgICBtYW5pZmVzdCxcbiAgICAgICAgbWFwUm91dGVQcm9wZXJ0aWVzMlxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBtYXRjaGVzVG9Mb2FkLmZvckVhY2goKG0pID0+IHtcbiAgICAgICAgZGF0YVJlc3VsdHNbbS5yb3V0ZS5pZF0gPSB7XG4gICAgICAgICAgdHlwZTogXCJlcnJvclwiIC8qIGVycm9yICovLFxuICAgICAgICAgIGVycm9yOiBlXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBkYXRhUmVzdWx0cztcbiAgICB9XG4gICAgZm9yIChsZXQgW3JvdXRlSWQsIHJlc3VsdF0gb2YgT2JqZWN0LmVudHJpZXMocmVzdWx0cykpIHtcbiAgICAgIGlmIChpc1JlZGlyZWN0RGF0YVN0cmF0ZWd5UmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgICAgbGV0IHJlc3BvbnNlID0gcmVzdWx0LnJlc3VsdDtcbiAgICAgICAgZGF0YVJlc3VsdHNbcm91dGVJZF0gPSB7XG4gICAgICAgICAgdHlwZTogXCJyZWRpcmVjdFwiIC8qIHJlZGlyZWN0ICovLFxuICAgICAgICAgIHJlc3BvbnNlOiBub3JtYWxpemVSZWxhdGl2ZVJvdXRpbmdSZWRpcmVjdFJlc3BvbnNlKFxuICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgcm91dGVJZCxcbiAgICAgICAgICAgIG1hdGNoZXMsXG4gICAgICAgICAgICBiYXNlbmFtZVxuICAgICAgICAgIClcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGFSZXN1bHRzW3JvdXRlSWRdID0gYXdhaXQgY29udmVydERhdGFTdHJhdGVneVJlc3VsdFRvRGF0YVJlc3VsdChcbiAgICAgICAgICByZXN1bHRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFSZXN1bHRzO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGNhbGxMb2FkZXJzQW5kTWF5YmVSZXNvbHZlRGF0YShzdGF0ZTIsIG1hdGNoZXMsIG1hdGNoZXNUb0xvYWQsIGZldGNoZXJzVG9Mb2FkLCByZXF1ZXN0KSB7XG4gICAgbGV0IGxvYWRlclJlc3VsdHNQcm9taXNlID0gY2FsbERhdGFTdHJhdGVneShcbiAgICAgIFwibG9hZGVyXCIsXG4gICAgICBzdGF0ZTIsXG4gICAgICByZXF1ZXN0LFxuICAgICAgbWF0Y2hlc1RvTG9hZCxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBudWxsXG4gICAgKTtcbiAgICBsZXQgZmV0Y2hlclJlc3VsdHNQcm9taXNlID0gUHJvbWlzZS5hbGwoXG4gICAgICBmZXRjaGVyc1RvTG9hZC5tYXAoYXN5bmMgKGYpID0+IHtcbiAgICAgICAgaWYgKGYubWF0Y2hlcyAmJiBmLm1hdGNoICYmIGYuY29udHJvbGxlcikge1xuICAgICAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgY2FsbERhdGFTdHJhdGVneShcbiAgICAgICAgICAgIFwibG9hZGVyXCIsXG4gICAgICAgICAgICBzdGF0ZTIsXG4gICAgICAgICAgICBjcmVhdGVDbGllbnRTaWRlUmVxdWVzdChpbml0Lmhpc3RvcnksIGYucGF0aCwgZi5jb250cm9sbGVyLnNpZ25hbCksXG4gICAgICAgICAgICBbZi5tYXRjaF0sXG4gICAgICAgICAgICBmLm1hdGNoZXMsXG4gICAgICAgICAgICBmLmtleVxuICAgICAgICAgICk7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3VsdHNbZi5tYXRjaC5yb3V0ZS5pZF07XG4gICAgICAgICAgcmV0dXJuIHsgW2Yua2V5XTogcmVzdWx0IH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICBbZi5rZXldOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwiZXJyb3JcIiAvKiBlcnJvciAqLyxcbiAgICAgICAgICAgICAgZXJyb3I6IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA0LCB7XG4gICAgICAgICAgICAgICAgcGF0aG5hbWU6IGYucGF0aFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgbGV0IGxvYWRlclJlc3VsdHMgPSBhd2FpdCBsb2FkZXJSZXN1bHRzUHJvbWlzZTtcbiAgICBsZXQgZmV0Y2hlclJlc3VsdHMgPSAoYXdhaXQgZmV0Y2hlclJlc3VsdHNQcm9taXNlKS5yZWR1Y2UoXG4gICAgICAoYWNjLCByKSA9PiBPYmplY3QuYXNzaWduKGFjYywgciksXG4gICAgICB7fVxuICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvYWRlclJlc3VsdHMsXG4gICAgICBmZXRjaGVyUmVzdWx0c1xuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gaW50ZXJydXB0QWN0aXZlTG9hZHMoKSB7XG4gICAgaXNSZXZhbGlkYXRpb25SZXF1aXJlZCA9IHRydWU7XG4gICAgZmV0Y2hMb2FkTWF0Y2hlcy5mb3JFYWNoKChfLCBrZXkpID0+IHtcbiAgICAgIGlmIChmZXRjaENvbnRyb2xsZXJzLmhhcyhrZXkpKSB7XG4gICAgICAgIGNhbmNlbGxlZEZldGNoZXJMb2Fkcy5hZGQoa2V5KTtcbiAgICAgIH1cbiAgICAgIGFib3J0RmV0Y2hlcihrZXkpO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZUZldGNoZXJTdGF0ZShrZXksIGZldGNoZXIsIG9wdHMgPSB7fSkge1xuICAgIHN0YXRlLmZldGNoZXJzLnNldChrZXksIGZldGNoZXIpO1xuICAgIHVwZGF0ZVN0YXRlKFxuICAgICAgeyBmZXRjaGVyczogbmV3IE1hcChzdGF0ZS5mZXRjaGVycykgfSxcbiAgICAgIHsgZmx1c2hTeW5jOiAob3B0cyAmJiBvcHRzLmZsdXNoU3luYykgPT09IHRydWUgfVxuICAgICk7XG4gIH1cbiAgZnVuY3Rpb24gc2V0RmV0Y2hlckVycm9yKGtleSwgcm91dGVJZCwgZXJyb3IsIG9wdHMgPSB7fSkge1xuICAgIGxldCBib3VuZGFyeU1hdGNoID0gZmluZE5lYXJlc3RCb3VuZGFyeShzdGF0ZS5tYXRjaGVzLCByb3V0ZUlkKTtcbiAgICBkZWxldGVGZXRjaGVyKGtleSk7XG4gICAgdXBkYXRlU3RhdGUoXG4gICAgICB7XG4gICAgICAgIGVycm9yczoge1xuICAgICAgICAgIFtib3VuZGFyeU1hdGNoLnJvdXRlLmlkXTogZXJyb3JcbiAgICAgICAgfSxcbiAgICAgICAgZmV0Y2hlcnM6IG5ldyBNYXAoc3RhdGUuZmV0Y2hlcnMpXG4gICAgICB9LFxuICAgICAgeyBmbHVzaFN5bmM6IChvcHRzICYmIG9wdHMuZmx1c2hTeW5jKSA9PT0gdHJ1ZSB9XG4gICAgKTtcbiAgfVxuICBmdW5jdGlvbiBnZXRGZXRjaGVyKGtleSkge1xuICAgIGFjdGl2ZUZldGNoZXJzLnNldChrZXksIChhY3RpdmVGZXRjaGVycy5nZXQoa2V5KSB8fCAwKSArIDEpO1xuICAgIGlmIChmZXRjaGVyc1F1ZXVlZEZvckRlbGV0aW9uLmhhcyhrZXkpKSB7XG4gICAgICBmZXRjaGVyc1F1ZXVlZEZvckRlbGV0aW9uLmRlbGV0ZShrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGUuZmV0Y2hlcnMuZ2V0KGtleSkgfHwgSURMRV9GRVRDSEVSO1xuICB9XG4gIGZ1bmN0aW9uIGRlbGV0ZUZldGNoZXIoa2V5KSB7XG4gICAgbGV0IGZldGNoZXIgPSBzdGF0ZS5mZXRjaGVycy5nZXQoa2V5KTtcbiAgICBpZiAoZmV0Y2hDb250cm9sbGVycy5oYXMoa2V5KSAmJiAhKGZldGNoZXIgJiYgZmV0Y2hlci5zdGF0ZSA9PT0gXCJsb2FkaW5nXCIgJiYgZmV0Y2hSZWxvYWRJZHMuaGFzKGtleSkpKSB7XG4gICAgICBhYm9ydEZldGNoZXIoa2V5KTtcbiAgICB9XG4gICAgZmV0Y2hMb2FkTWF0Y2hlcy5kZWxldGUoa2V5KTtcbiAgICBmZXRjaFJlbG9hZElkcy5kZWxldGUoa2V5KTtcbiAgICBmZXRjaFJlZGlyZWN0SWRzLmRlbGV0ZShrZXkpO1xuICAgIGZldGNoZXJzUXVldWVkRm9yRGVsZXRpb24uZGVsZXRlKGtleSk7XG4gICAgY2FuY2VsbGVkRmV0Y2hlckxvYWRzLmRlbGV0ZShrZXkpO1xuICAgIHN0YXRlLmZldGNoZXJzLmRlbGV0ZShrZXkpO1xuICB9XG4gIGZ1bmN0aW9uIHF1ZXVlRmV0Y2hlckZvckRlbGV0aW9uKGtleSkge1xuICAgIGxldCBjb3VudCA9IChhY3RpdmVGZXRjaGVycy5nZXQoa2V5KSB8fCAwKSAtIDE7XG4gICAgaWYgKGNvdW50IDw9IDApIHtcbiAgICAgIGFjdGl2ZUZldGNoZXJzLmRlbGV0ZShrZXkpO1xuICAgICAgZmV0Y2hlcnNRdWV1ZWRGb3JEZWxldGlvbi5hZGQoa2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWN0aXZlRmV0Y2hlcnMuc2V0KGtleSwgY291bnQpO1xuICAgIH1cbiAgICB1cGRhdGVTdGF0ZSh7IGZldGNoZXJzOiBuZXcgTWFwKHN0YXRlLmZldGNoZXJzKSB9KTtcbiAgfVxuICBmdW5jdGlvbiBhYm9ydEZldGNoZXIoa2V5KSB7XG4gICAgbGV0IGNvbnRyb2xsZXIgPSBmZXRjaENvbnRyb2xsZXJzLmdldChrZXkpO1xuICAgIGlmIChjb250cm9sbGVyKSB7XG4gICAgICBjb250cm9sbGVyLmFib3J0KCk7XG4gICAgICBmZXRjaENvbnRyb2xsZXJzLmRlbGV0ZShrZXkpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBtYXJrRmV0Y2hlcnNEb25lKGtleXMpIHtcbiAgICBmb3IgKGxldCBrZXkgb2Yga2V5cykge1xuICAgICAgbGV0IGZldGNoZXIgPSBnZXRGZXRjaGVyKGtleSk7XG4gICAgICBsZXQgZG9uZUZldGNoZXIgPSBnZXREb25lRmV0Y2hlcihmZXRjaGVyLmRhdGEpO1xuICAgICAgc3RhdGUuZmV0Y2hlcnMuc2V0KGtleSwgZG9uZUZldGNoZXIpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBtYXJrRmV0Y2hSZWRpcmVjdHNEb25lKCkge1xuICAgIGxldCBkb25lS2V5cyA9IFtdO1xuICAgIGxldCB1cGRhdGVkRmV0Y2hlcnMgPSBmYWxzZTtcbiAgICBmb3IgKGxldCBrZXkgb2YgZmV0Y2hSZWRpcmVjdElkcykge1xuICAgICAgbGV0IGZldGNoZXIgPSBzdGF0ZS5mZXRjaGVycy5nZXQoa2V5KTtcbiAgICAgIGludmFyaWFudChmZXRjaGVyLCBgRXhwZWN0ZWQgZmV0Y2hlcjogJHtrZXl9YCk7XG4gICAgICBpZiAoZmV0Y2hlci5zdGF0ZSA9PT0gXCJsb2FkaW5nXCIpIHtcbiAgICAgICAgZmV0Y2hSZWRpcmVjdElkcy5kZWxldGUoa2V5KTtcbiAgICAgICAgZG9uZUtleXMucHVzaChrZXkpO1xuICAgICAgICB1cGRhdGVkRmV0Y2hlcnMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBtYXJrRmV0Y2hlcnNEb25lKGRvbmVLZXlzKTtcbiAgICByZXR1cm4gdXBkYXRlZEZldGNoZXJzO1xuICB9XG4gIGZ1bmN0aW9uIGFib3J0U3RhbGVGZXRjaExvYWRzKGxhbmRlZElkKSB7XG4gICAgbGV0IHllZXRlZEtleXMgPSBbXTtcbiAgICBmb3IgKGxldCBba2V5LCBpZF0gb2YgZmV0Y2hSZWxvYWRJZHMpIHtcbiAgICAgIGlmIChpZCA8IGxhbmRlZElkKSB7XG4gICAgICAgIGxldCBmZXRjaGVyID0gc3RhdGUuZmV0Y2hlcnMuZ2V0KGtleSk7XG4gICAgICAgIGludmFyaWFudChmZXRjaGVyLCBgRXhwZWN0ZWQgZmV0Y2hlcjogJHtrZXl9YCk7XG4gICAgICAgIGlmIChmZXRjaGVyLnN0YXRlID09PSBcImxvYWRpbmdcIikge1xuICAgICAgICAgIGFib3J0RmV0Y2hlcihrZXkpO1xuICAgICAgICAgIGZldGNoUmVsb2FkSWRzLmRlbGV0ZShrZXkpO1xuICAgICAgICAgIHllZXRlZEtleXMucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIG1hcmtGZXRjaGVyc0RvbmUoeWVldGVkS2V5cyk7XG4gICAgcmV0dXJuIHllZXRlZEtleXMubGVuZ3RoID4gMDtcbiAgfVxuICBmdW5jdGlvbiBnZXRCbG9ja2VyKGtleSwgZm4pIHtcbiAgICBsZXQgYmxvY2tlciA9IHN0YXRlLmJsb2NrZXJzLmdldChrZXkpIHx8IElETEVfQkxPQ0tFUjtcbiAgICBpZiAoYmxvY2tlckZ1bmN0aW9ucy5nZXQoa2V5KSAhPT0gZm4pIHtcbiAgICAgIGJsb2NrZXJGdW5jdGlvbnMuc2V0KGtleSwgZm4pO1xuICAgIH1cbiAgICByZXR1cm4gYmxvY2tlcjtcbiAgfVxuICBmdW5jdGlvbiBkZWxldGVCbG9ja2VyKGtleSkge1xuICAgIHN0YXRlLmJsb2NrZXJzLmRlbGV0ZShrZXkpO1xuICAgIGJsb2NrZXJGdW5jdGlvbnMuZGVsZXRlKGtleSk7XG4gIH1cbiAgZnVuY3Rpb24gdXBkYXRlQmxvY2tlcihrZXksIG5ld0Jsb2NrZXIpIHtcbiAgICBsZXQgYmxvY2tlciA9IHN0YXRlLmJsb2NrZXJzLmdldChrZXkpIHx8IElETEVfQkxPQ0tFUjtcbiAgICBpbnZhcmlhbnQoXG4gICAgICBibG9ja2VyLnN0YXRlID09PSBcInVuYmxvY2tlZFwiICYmIG5ld0Jsb2NrZXIuc3RhdGUgPT09IFwiYmxvY2tlZFwiIHx8IGJsb2NrZXIuc3RhdGUgPT09IFwiYmxvY2tlZFwiICYmIG5ld0Jsb2NrZXIuc3RhdGUgPT09IFwiYmxvY2tlZFwiIHx8IGJsb2NrZXIuc3RhdGUgPT09IFwiYmxvY2tlZFwiICYmIG5ld0Jsb2NrZXIuc3RhdGUgPT09IFwicHJvY2VlZGluZ1wiIHx8IGJsb2NrZXIuc3RhdGUgPT09IFwiYmxvY2tlZFwiICYmIG5ld0Jsb2NrZXIuc3RhdGUgPT09IFwidW5ibG9ja2VkXCIgfHwgYmxvY2tlci5zdGF0ZSA9PT0gXCJwcm9jZWVkaW5nXCIgJiYgbmV3QmxvY2tlci5zdGF0ZSA9PT0gXCJ1bmJsb2NrZWRcIixcbiAgICAgIGBJbnZhbGlkIGJsb2NrZXIgc3RhdGUgdHJhbnNpdGlvbjogJHtibG9ja2VyLnN0YXRlfSAtPiAke25ld0Jsb2NrZXIuc3RhdGV9YFxuICAgICk7XG4gICAgbGV0IGJsb2NrZXJzID0gbmV3IE1hcChzdGF0ZS5ibG9ja2Vycyk7XG4gICAgYmxvY2tlcnMuc2V0KGtleSwgbmV3QmxvY2tlcik7XG4gICAgdXBkYXRlU3RhdGUoeyBibG9ja2VycyB9KTtcbiAgfVxuICBmdW5jdGlvbiBzaG91bGRCbG9ja05hdmlnYXRpb24oe1xuICAgIGN1cnJlbnRMb2NhdGlvbixcbiAgICBuZXh0TG9jYXRpb24sXG4gICAgaGlzdG9yeUFjdGlvblxuICB9KSB7XG4gICAgaWYgKGJsb2NrZXJGdW5jdGlvbnMuc2l6ZSA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYmxvY2tlckZ1bmN0aW9ucy5zaXplID4gMSkge1xuICAgICAgd2FybmluZyhmYWxzZSwgXCJBIHJvdXRlciBvbmx5IHN1cHBvcnRzIG9uZSBibG9ja2VyIGF0IGEgdGltZVwiKTtcbiAgICB9XG4gICAgbGV0IGVudHJpZXMgPSBBcnJheS5mcm9tKGJsb2NrZXJGdW5jdGlvbnMuZW50cmllcygpKTtcbiAgICBsZXQgW2Jsb2NrZXJLZXksIGJsb2NrZXJGdW5jdGlvbl0gPSBlbnRyaWVzW2VudHJpZXMubGVuZ3RoIC0gMV07XG4gICAgbGV0IGJsb2NrZXIgPSBzdGF0ZS5ibG9ja2Vycy5nZXQoYmxvY2tlcktleSk7XG4gICAgaWYgKGJsb2NrZXIgJiYgYmxvY2tlci5zdGF0ZSA9PT0gXCJwcm9jZWVkaW5nXCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGJsb2NrZXJGdW5jdGlvbih7IGN1cnJlbnRMb2NhdGlvbiwgbmV4dExvY2F0aW9uLCBoaXN0b3J5QWN0aW9uIH0pKSB7XG4gICAgICByZXR1cm4gYmxvY2tlcktleTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gaGFuZGxlTmF2aWdhdGlvbmFsNDA0KHBhdGhuYW1lKSB7XG4gICAgbGV0IGVycm9yID0gZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDQsIHsgcGF0aG5hbWUgfSk7XG4gICAgbGV0IHJvdXRlc1RvVXNlID0gaW5GbGlnaHREYXRhUm91dGVzIHx8IGRhdGFSb3V0ZXM7XG4gICAgbGV0IHsgbWF0Y2hlcywgcm91dGUgfSA9IGdldFNob3J0Q2lyY3VpdE1hdGNoZXMocm91dGVzVG9Vc2UpO1xuICAgIHJldHVybiB7IG5vdEZvdW5kTWF0Y2hlczogbWF0Y2hlcywgcm91dGUsIGVycm9yIH07XG4gIH1cbiAgZnVuY3Rpb24gZW5hYmxlU2Nyb2xsUmVzdG9yYXRpb24ocG9zaXRpb25zLCBnZXRQb3NpdGlvbiwgZ2V0S2V5KSB7XG4gICAgc2F2ZWRTY3JvbGxQb3NpdGlvbnMyID0gcG9zaXRpb25zO1xuICAgIGdldFNjcm9sbFBvc2l0aW9uID0gZ2V0UG9zaXRpb247XG4gICAgZ2V0U2Nyb2xsUmVzdG9yYXRpb25LZXkyID0gZ2V0S2V5IHx8IG51bGw7XG4gICAgaWYgKCFpbml0aWFsU2Nyb2xsUmVzdG9yZWQgJiYgc3RhdGUubmF2aWdhdGlvbiA9PT0gSURMRV9OQVZJR0FUSU9OKSB7XG4gICAgICBpbml0aWFsU2Nyb2xsUmVzdG9yZWQgPSB0cnVlO1xuICAgICAgbGV0IHkgPSBnZXRTYXZlZFNjcm9sbFBvc2l0aW9uKHN0YXRlLmxvY2F0aW9uLCBzdGF0ZS5tYXRjaGVzKTtcbiAgICAgIGlmICh5ICE9IG51bGwpIHtcbiAgICAgICAgdXBkYXRlU3RhdGUoeyByZXN0b3JlU2Nyb2xsUG9zaXRpb246IHkgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzYXZlZFNjcm9sbFBvc2l0aW9uczIgPSBudWxsO1xuICAgICAgZ2V0U2Nyb2xsUG9zaXRpb24gPSBudWxsO1xuICAgICAgZ2V0U2Nyb2xsUmVzdG9yYXRpb25LZXkyID0gbnVsbDtcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIGdldFNjcm9sbEtleShsb2NhdGlvbiwgbWF0Y2hlcykge1xuICAgIGlmIChnZXRTY3JvbGxSZXN0b3JhdGlvbktleTIpIHtcbiAgICAgIGxldCBrZXkgPSBnZXRTY3JvbGxSZXN0b3JhdGlvbktleTIoXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICBtYXRjaGVzLm1hcCgobSkgPT4gY29udmVydFJvdXRlTWF0Y2hUb1VpTWF0Y2gobSwgc3RhdGUubG9hZGVyRGF0YSkpXG4gICAgICApO1xuICAgICAgcmV0dXJuIGtleSB8fCBsb2NhdGlvbi5rZXk7XG4gICAgfVxuICAgIHJldHVybiBsb2NhdGlvbi5rZXk7XG4gIH1cbiAgZnVuY3Rpb24gc2F2ZVNjcm9sbFBvc2l0aW9uKGxvY2F0aW9uLCBtYXRjaGVzKSB7XG4gICAgaWYgKHNhdmVkU2Nyb2xsUG9zaXRpb25zMiAmJiBnZXRTY3JvbGxQb3NpdGlvbikge1xuICAgICAgbGV0IGtleSA9IGdldFNjcm9sbEtleShsb2NhdGlvbiwgbWF0Y2hlcyk7XG4gICAgICBzYXZlZFNjcm9sbFBvc2l0aW9uczJba2V5XSA9IGdldFNjcm9sbFBvc2l0aW9uKCk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGdldFNhdmVkU2Nyb2xsUG9zaXRpb24obG9jYXRpb24sIG1hdGNoZXMpIHtcbiAgICBpZiAoc2F2ZWRTY3JvbGxQb3NpdGlvbnMyKSB7XG4gICAgICBsZXQga2V5ID0gZ2V0U2Nyb2xsS2V5KGxvY2F0aW9uLCBtYXRjaGVzKTtcbiAgICAgIGxldCB5ID0gc2F2ZWRTY3JvbGxQb3NpdGlvbnMyW2tleV07XG4gICAgICBpZiAodHlwZW9mIHkgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgcmV0dXJuIHk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIGNoZWNrRm9nT2ZXYXIobWF0Y2hlcywgcm91dGVzVG9Vc2UsIHBhdGhuYW1lKSB7XG4gICAgaWYgKHBhdGNoUm91dGVzT25OYXZpZ2F0aW9uSW1wbCkge1xuICAgICAgaWYgKCFtYXRjaGVzKSB7XG4gICAgICAgIGxldCBmb2dNYXRjaGVzID0gbWF0Y2hSb3V0ZXNJbXBsKFxuICAgICAgICAgIHJvdXRlc1RvVXNlLFxuICAgICAgICAgIHBhdGhuYW1lLFxuICAgICAgICAgIGJhc2VuYW1lLFxuICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHsgYWN0aXZlOiB0cnVlLCBtYXRjaGVzOiBmb2dNYXRjaGVzIHx8IFtdIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMobWF0Y2hlc1swXS5wYXJhbXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBsZXQgcGFydGlhbE1hdGNoZXMgPSBtYXRjaFJvdXRlc0ltcGwoXG4gICAgICAgICAgICByb3V0ZXNUb1VzZSxcbiAgICAgICAgICAgIHBhdGhuYW1lLFxuICAgICAgICAgICAgYmFzZW5hbWUsXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4geyBhY3RpdmU6IHRydWUsIG1hdGNoZXM6IHBhcnRpYWxNYXRjaGVzIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgbWF0Y2hlczogbnVsbCB9O1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGRpc2NvdmVyUm91dGVzKG1hdGNoZXMsIHBhdGhuYW1lLCBzaWduYWwpIHtcbiAgICBpZiAoIXBhdGNoUm91dGVzT25OYXZpZ2F0aW9uSW1wbCkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJzdWNjZXNzXCIsIG1hdGNoZXMgfTtcbiAgICB9XG4gICAgbGV0IHBhcnRpYWxNYXRjaGVzID0gbWF0Y2hlcztcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgbGV0IGlzTm9uSE1SID0gaW5GbGlnaHREYXRhUm91dGVzID09IG51bGw7XG4gICAgICBsZXQgcm91dGVzVG9Vc2UgPSBpbkZsaWdodERhdGFSb3V0ZXMgfHwgZGF0YVJvdXRlcztcbiAgICAgIGxldCBsb2NhbE1hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBwYXRjaFJvdXRlc09uTmF2aWdhdGlvbkltcGwoe1xuICAgICAgICAgIHBhdGg6IHBhdGhuYW1lLFxuICAgICAgICAgIG1hdGNoZXM6IHBhcnRpYWxNYXRjaGVzLFxuICAgICAgICAgIHBhdGNoOiAocm91dGVJZCwgY2hpbGRyZW4pID0+IHtcbiAgICAgICAgICAgIGlmIChzaWduYWwuYWJvcnRlZCkgcmV0dXJuO1xuICAgICAgICAgICAgcGF0Y2hSb3V0ZXNJbXBsKFxuICAgICAgICAgICAgICByb3V0ZUlkLFxuICAgICAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgICAgICAgcm91dGVzVG9Vc2UsXG4gICAgICAgICAgICAgIGxvY2FsTWFuaWZlc3QsXG4gICAgICAgICAgICAgIG1hcFJvdXRlUHJvcGVydGllczJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJlcnJvclwiLCBlcnJvcjogZSwgcGFydGlhbE1hdGNoZXMgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChpc05vbkhNUiAmJiAhc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICBkYXRhUm91dGVzID0gWy4uLmRhdGFSb3V0ZXNdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJhYm9ydGVkXCIgfTtcbiAgICAgIH1cbiAgICAgIGxldCBuZXdNYXRjaGVzID0gbWF0Y2hSb3V0ZXMocm91dGVzVG9Vc2UsIHBhdGhuYW1lLCBiYXNlbmFtZSk7XG4gICAgICBpZiAobmV3TWF0Y2hlcykge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcInN1Y2Nlc3NcIiwgbWF0Y2hlczogbmV3TWF0Y2hlcyB9O1xuICAgICAgfVxuICAgICAgbGV0IG5ld1BhcnRpYWxNYXRjaGVzID0gbWF0Y2hSb3V0ZXNJbXBsKFxuICAgICAgICByb3V0ZXNUb1VzZSxcbiAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgIGJhc2VuYW1lLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgaWYgKCFuZXdQYXJ0aWFsTWF0Y2hlcyB8fCBwYXJ0aWFsTWF0Y2hlcy5sZW5ndGggPT09IG5ld1BhcnRpYWxNYXRjaGVzLmxlbmd0aCAmJiBwYXJ0aWFsTWF0Y2hlcy5ldmVyeShcbiAgICAgICAgKG0sIGkpID0+IG0ucm91dGUuaWQgPT09IG5ld1BhcnRpYWxNYXRjaGVzW2ldLnJvdXRlLmlkXG4gICAgICApKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwic3VjY2Vzc1wiLCBtYXRjaGVzOiBudWxsIH07XG4gICAgICB9XG4gICAgICBwYXJ0aWFsTWF0Y2hlcyA9IG5ld1BhcnRpYWxNYXRjaGVzO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBfaW50ZXJuYWxTZXRSb3V0ZXMobmV3Um91dGVzKSB7XG4gICAgbWFuaWZlc3QgPSB7fTtcbiAgICBpbkZsaWdodERhdGFSb3V0ZXMgPSBjb252ZXJ0Um91dGVzVG9EYXRhUm91dGVzKFxuICAgICAgbmV3Um91dGVzLFxuICAgICAgbWFwUm91dGVQcm9wZXJ0aWVzMixcbiAgICAgIHZvaWQgMCxcbiAgICAgIG1hbmlmZXN0XG4gICAgKTtcbiAgfVxuICBmdW5jdGlvbiBwYXRjaFJvdXRlcyhyb3V0ZUlkLCBjaGlsZHJlbikge1xuICAgIGxldCBpc05vbkhNUiA9IGluRmxpZ2h0RGF0YVJvdXRlcyA9PSBudWxsO1xuICAgIGxldCByb3V0ZXNUb1VzZSA9IGluRmxpZ2h0RGF0YVJvdXRlcyB8fCBkYXRhUm91dGVzO1xuICAgIHBhdGNoUm91dGVzSW1wbChcbiAgICAgIHJvdXRlSWQsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIHJvdXRlc1RvVXNlLFxuICAgICAgbWFuaWZlc3QsXG4gICAgICBtYXBSb3V0ZVByb3BlcnRpZXMyXG4gICAgKTtcbiAgICBpZiAoaXNOb25ITVIpIHtcbiAgICAgIGRhdGFSb3V0ZXMgPSBbLi4uZGF0YVJvdXRlc107XG4gICAgICB1cGRhdGVTdGF0ZSh7fSk7XG4gICAgfVxuICB9XG4gIHJvdXRlciA9IHtcbiAgICBnZXQgYmFzZW5hbWUoKSB7XG4gICAgICByZXR1cm4gYmFzZW5hbWU7XG4gICAgfSxcbiAgICBnZXQgZnV0dXJlKCkge1xuICAgICAgcmV0dXJuIGZ1dHVyZTtcbiAgICB9LFxuICAgIGdldCBzdGF0ZSgpIHtcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9LFxuICAgIGdldCByb3V0ZXMoKSB7XG4gICAgICByZXR1cm4gZGF0YVJvdXRlcztcbiAgICB9LFxuICAgIGdldCB3aW5kb3coKSB7XG4gICAgICByZXR1cm4gcm91dGVyV2luZG93O1xuICAgIH0sXG4gICAgaW5pdGlhbGl6ZSxcbiAgICBzdWJzY3JpYmUsXG4gICAgZW5hYmxlU2Nyb2xsUmVzdG9yYXRpb24sXG4gICAgbmF2aWdhdGUsXG4gICAgZmV0Y2g6IGZldGNoMixcbiAgICByZXZhbGlkYXRlLFxuICAgIC8vIFBhc3N0aHJvdWdoIHRvIGhpc3RvcnktYXdhcmUgY3JlYXRlSHJlZiB1c2VkIGJ5IHVzZUhyZWYgc28gd2UgZ2V0IHByb3BlclxuICAgIC8vIGhhc2gtYXdhcmUgVVJMcyBpbiBET00gcGF0aHNcbiAgICBjcmVhdGVIcmVmOiAodG8pID0+IGluaXQuaGlzdG9yeS5jcmVhdGVIcmVmKHRvKSxcbiAgICBlbmNvZGVMb2NhdGlvbjogKHRvKSA9PiBpbml0Lmhpc3RvcnkuZW5jb2RlTG9jYXRpb24odG8pLFxuICAgIGdldEZldGNoZXIsXG4gICAgZGVsZXRlRmV0Y2hlcjogcXVldWVGZXRjaGVyRm9yRGVsZXRpb24sXG4gICAgZGlzcG9zZSxcbiAgICBnZXRCbG9ja2VyLFxuICAgIGRlbGV0ZUJsb2NrZXIsXG4gICAgcGF0Y2hSb3V0ZXMsXG4gICAgX2ludGVybmFsRmV0Y2hDb250cm9sbGVyczogZmV0Y2hDb250cm9sbGVycyxcbiAgICAvLyBUT0RPOiBSZW1vdmUgc2V0Um91dGVzLCBpdCdzIHRlbXBvcmFyeSB0byBhdm9pZCBkZWFsaW5nIHdpdGhcbiAgICAvLyB1cGRhdGluZyB0aGUgdHJlZSB3aGlsZSB2YWxpZGF0aW5nIHRoZSB1cGRhdGUgYWxnb3JpdGhtLlxuICAgIF9pbnRlcm5hbFNldFJvdXRlc1xuICB9O1xuICByZXR1cm4gcm91dGVyO1xufVxuZnVuY3Rpb24gY3JlYXRlU3RhdGljSGFuZGxlcihyb3V0ZXMsIG9wdHMpIHtcbiAgaW52YXJpYW50KFxuICAgIHJvdXRlcy5sZW5ndGggPiAwLFxuICAgIFwiWW91IG11c3QgcHJvdmlkZSBhIG5vbi1lbXB0eSByb3V0ZXMgYXJyYXkgdG8gY3JlYXRlU3RhdGljSGFuZGxlclwiXG4gICk7XG4gIGxldCBtYW5pZmVzdCA9IHt9O1xuICBsZXQgYmFzZW5hbWUgPSAob3B0cyA/IG9wdHMuYmFzZW5hbWUgOiBudWxsKSB8fCBcIi9cIjtcbiAgbGV0IG1hcFJvdXRlUHJvcGVydGllczIgPSBvcHRzPy5tYXBSb3V0ZVByb3BlcnRpZXMgfHwgZGVmYXVsdE1hcFJvdXRlUHJvcGVydGllcztcbiAgbGV0IGRhdGFSb3V0ZXMgPSBjb252ZXJ0Um91dGVzVG9EYXRhUm91dGVzKFxuICAgIHJvdXRlcyxcbiAgICBtYXBSb3V0ZVByb3BlcnRpZXMyLFxuICAgIHZvaWQgMCxcbiAgICBtYW5pZmVzdFxuICApO1xuICBhc3luYyBmdW5jdGlvbiBxdWVyeShyZXF1ZXN0LCB7XG4gICAgcmVxdWVzdENvbnRleHQsXG4gICAgc2tpcExvYWRlckVycm9yQnViYmxpbmcsXG4gICAgZGF0YVN0cmF0ZWd5XG4gIH0gPSB7fSkge1xuICAgIGxldCB1cmwgPSBuZXcgVVJMKHJlcXVlc3QudXJsKTtcbiAgICBsZXQgbWV0aG9kID0gcmVxdWVzdC5tZXRob2Q7XG4gICAgbGV0IGxvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24oXCJcIiwgY3JlYXRlUGF0aCh1cmwpLCBudWxsLCBcImRlZmF1bHRcIik7XG4gICAgbGV0IG1hdGNoZXMgPSBtYXRjaFJvdXRlcyhkYXRhUm91dGVzLCBsb2NhdGlvbiwgYmFzZW5hbWUpO1xuICAgIGlmICghaXNWYWxpZE1ldGhvZChtZXRob2QpICYmIG1ldGhvZCAhPT0gXCJIRUFEXCIpIHtcbiAgICAgIGxldCBlcnJvciA9IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA1LCB7IG1ldGhvZCB9KTtcbiAgICAgIGxldCB7IG1hdGNoZXM6IG1ldGhvZE5vdEFsbG93ZWRNYXRjaGVzLCByb3V0ZSB9ID0gZ2V0U2hvcnRDaXJjdWl0TWF0Y2hlcyhkYXRhUm91dGVzKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhc2VuYW1lLFxuICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgbWF0Y2hlczogbWV0aG9kTm90QWxsb3dlZE1hdGNoZXMsXG4gICAgICAgIGxvYWRlckRhdGE6IHt9LFxuICAgICAgICBhY3Rpb25EYXRhOiBudWxsLFxuICAgICAgICBlcnJvcnM6IHtcbiAgICAgICAgICBbcm91dGUuaWRdOiBlcnJvclxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXNDb2RlOiBlcnJvci5zdGF0dXMsXG4gICAgICAgIGxvYWRlckhlYWRlcnM6IHt9LFxuICAgICAgICBhY3Rpb25IZWFkZXJzOiB7fVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKCFtYXRjaGVzKSB7XG4gICAgICBsZXQgZXJyb3IgPSBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwNCwgeyBwYXRobmFtZTogbG9jYXRpb24ucGF0aG5hbWUgfSk7XG4gICAgICBsZXQgeyBtYXRjaGVzOiBub3RGb3VuZE1hdGNoZXMsIHJvdXRlIH0gPSBnZXRTaG9ydENpcmN1aXRNYXRjaGVzKGRhdGFSb3V0ZXMpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFzZW5hbWUsXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICBtYXRjaGVzOiBub3RGb3VuZE1hdGNoZXMsXG4gICAgICAgIGxvYWRlckRhdGE6IHt9LFxuICAgICAgICBhY3Rpb25EYXRhOiBudWxsLFxuICAgICAgICBlcnJvcnM6IHtcbiAgICAgICAgICBbcm91dGUuaWRdOiBlcnJvclxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXNDb2RlOiBlcnJvci5zdGF0dXMsXG4gICAgICAgIGxvYWRlckhlYWRlcnM6IHt9LFxuICAgICAgICBhY3Rpb25IZWFkZXJzOiB7fVxuICAgICAgfTtcbiAgICB9XG4gICAgbGV0IHJlc3VsdCA9IGF3YWl0IHF1ZXJ5SW1wbChcbiAgICAgIHJlcXVlc3QsXG4gICAgICBsb2NhdGlvbixcbiAgICAgIG1hdGNoZXMsXG4gICAgICByZXF1ZXN0Q29udGV4dCxcbiAgICAgIGRhdGFTdHJhdGVneSB8fCBudWxsLFxuICAgICAgc2tpcExvYWRlckVycm9yQnViYmxpbmcgPT09IHRydWUsXG4gICAgICBudWxsXG4gICAgKTtcbiAgICBpZiAoaXNSZXNwb25zZShyZXN1bHQpKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4geyBsb2NhdGlvbiwgYmFzZW5hbWUsIC4uLnJlc3VsdCB9O1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5Um91dGUocmVxdWVzdCwge1xuICAgIHJvdXRlSWQsXG4gICAgcmVxdWVzdENvbnRleHQsXG4gICAgZGF0YVN0cmF0ZWd5XG4gIH0gPSB7fSkge1xuICAgIGxldCB1cmwgPSBuZXcgVVJMKHJlcXVlc3QudXJsKTtcbiAgICBsZXQgbWV0aG9kID0gcmVxdWVzdC5tZXRob2Q7XG4gICAgbGV0IGxvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24oXCJcIiwgY3JlYXRlUGF0aCh1cmwpLCBudWxsLCBcImRlZmF1bHRcIik7XG4gICAgbGV0IG1hdGNoZXMgPSBtYXRjaFJvdXRlcyhkYXRhUm91dGVzLCBsb2NhdGlvbiwgYmFzZW5hbWUpO1xuICAgIGlmICghaXNWYWxpZE1ldGhvZChtZXRob2QpICYmIG1ldGhvZCAhPT0gXCJIRUFEXCIgJiYgbWV0aG9kICE9PSBcIk9QVElPTlNcIikge1xuICAgICAgdGhyb3cgZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDUsIHsgbWV0aG9kIH0pO1xuICAgIH0gZWxzZSBpZiAoIW1hdGNoZXMpIHtcbiAgICAgIHRocm93IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA0LCB7IHBhdGhuYW1lOiBsb2NhdGlvbi5wYXRobmFtZSB9KTtcbiAgICB9XG4gICAgbGV0IG1hdGNoID0gcm91dGVJZCA/IG1hdGNoZXMuZmluZCgobSkgPT4gbS5yb3V0ZS5pZCA9PT0gcm91dGVJZCkgOiBnZXRUYXJnZXRNYXRjaChtYXRjaGVzLCBsb2NhdGlvbik7XG4gICAgaWYgKHJvdXRlSWQgJiYgIW1hdGNoKSB7XG4gICAgICB0aHJvdyBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwMywge1xuICAgICAgICBwYXRobmFtZTogbG9jYXRpb24ucGF0aG5hbWUsXG4gICAgICAgIHJvdXRlSWRcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoIW1hdGNoKSB7XG4gICAgICB0aHJvdyBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwNCwgeyBwYXRobmFtZTogbG9jYXRpb24ucGF0aG5hbWUgfSk7XG4gICAgfVxuICAgIGxldCByZXN1bHQgPSBhd2FpdCBxdWVyeUltcGwoXG4gICAgICByZXF1ZXN0LFxuICAgICAgbG9jYXRpb24sXG4gICAgICBtYXRjaGVzLFxuICAgICAgcmVxdWVzdENvbnRleHQsXG4gICAgICBkYXRhU3RyYXRlZ3kgfHwgbnVsbCxcbiAgICAgIGZhbHNlLFxuICAgICAgbWF0Y2hcbiAgICApO1xuICAgIGlmIChpc1Jlc3BvbnNlKHJlc3VsdCkpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGxldCBlcnJvciA9IHJlc3VsdC5lcnJvcnMgPyBPYmplY3QudmFsdWVzKHJlc3VsdC5lcnJvcnMpWzBdIDogdm9pZCAwO1xuICAgIGlmIChlcnJvciAhPT0gdm9pZCAwKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgaWYgKHJlc3VsdC5hY3Rpb25EYXRhKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhyZXN1bHQuYWN0aW9uRGF0YSlbMF07XG4gICAgfVxuICAgIGlmIChyZXN1bHQubG9hZGVyRGF0YSkge1xuICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMocmVzdWx0LmxvYWRlckRhdGEpWzBdO1xuICAgIH1cbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5SW1wbChyZXF1ZXN0LCBsb2NhdGlvbiwgbWF0Y2hlcywgcmVxdWVzdENvbnRleHQsIGRhdGFTdHJhdGVneSwgc2tpcExvYWRlckVycm9yQnViYmxpbmcsIHJvdXRlTWF0Y2gpIHtcbiAgICBpbnZhcmlhbnQoXG4gICAgICByZXF1ZXN0LnNpZ25hbCxcbiAgICAgIFwicXVlcnkoKS9xdWVyeVJvdXRlKCkgcmVxdWVzdHMgbXVzdCBjb250YWluIGFuIEFib3J0Q29udHJvbGxlciBzaWduYWxcIlxuICAgICk7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChpc011dGF0aW9uTWV0aG9kKHJlcXVlc3QubWV0aG9kKSkge1xuICAgICAgICBsZXQgcmVzdWx0MiA9IGF3YWl0IHN1Ym1pdChcbiAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgIG1hdGNoZXMsXG4gICAgICAgICAgcm91dGVNYXRjaCB8fCBnZXRUYXJnZXRNYXRjaChtYXRjaGVzLCBsb2NhdGlvbiksXG4gICAgICAgICAgcmVxdWVzdENvbnRleHQsXG4gICAgICAgICAgZGF0YVN0cmF0ZWd5LFxuICAgICAgICAgIHNraXBMb2FkZXJFcnJvckJ1YmJsaW5nLFxuICAgICAgICAgIHJvdXRlTWF0Y2ggIT0gbnVsbFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gcmVzdWx0MjtcbiAgICAgIH1cbiAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBsb2FkUm91dGVEYXRhKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBtYXRjaGVzLFxuICAgICAgICByZXF1ZXN0Q29udGV4dCxcbiAgICAgICAgZGF0YVN0cmF0ZWd5LFxuICAgICAgICBza2lwTG9hZGVyRXJyb3JCdWJibGluZyxcbiAgICAgICAgcm91dGVNYXRjaFxuICAgICAgKTtcbiAgICAgIHJldHVybiBpc1Jlc3BvbnNlKHJlc3VsdCkgPyByZXN1bHQgOiB7XG4gICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgYWN0aW9uRGF0YTogbnVsbCxcbiAgICAgICAgYWN0aW9uSGVhZGVyczoge31cbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGlzRGF0YVN0cmF0ZWd5UmVzdWx0KGUpICYmIGlzUmVzcG9uc2UoZS5yZXN1bHQpKSB7XG4gICAgICAgIGlmIChlLnR5cGUgPT09IFwiZXJyb3JcIiAvKiBlcnJvciAqLykge1xuICAgICAgICAgIHRocm93IGUucmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlLnJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGlmIChpc1JlZGlyZWN0UmVzcG9uc2UoZSkpIHtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuICBhc3luYyBmdW5jdGlvbiBzdWJtaXQocmVxdWVzdCwgbWF0Y2hlcywgYWN0aW9uTWF0Y2gsIHJlcXVlc3RDb250ZXh0LCBkYXRhU3RyYXRlZ3ksIHNraXBMb2FkZXJFcnJvckJ1YmJsaW5nLCBpc1JvdXRlUmVxdWVzdCkge1xuICAgIGxldCByZXN1bHQ7XG4gICAgaWYgKCFhY3Rpb25NYXRjaC5yb3V0ZS5hY3Rpb24gJiYgIWFjdGlvbk1hdGNoLnJvdXRlLmxhenkpIHtcbiAgICAgIGxldCBlcnJvciA9IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA1LCB7XG4gICAgICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgICAgIHBhdGhuYW1lOiBuZXcgVVJMKHJlcXVlc3QudXJsKS5wYXRobmFtZSxcbiAgICAgICAgcm91dGVJZDogYWN0aW9uTWF0Y2gucm91dGUuaWRcbiAgICAgIH0pO1xuICAgICAgaWYgKGlzUm91dGVSZXF1ZXN0KSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICB0eXBlOiBcImVycm9yXCIgLyogZXJyb3IgKi8sXG4gICAgICAgIGVycm9yXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IGNhbGxEYXRhU3RyYXRlZ3koXG4gICAgICAgIFwiYWN0aW9uXCIsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIFthY3Rpb25NYXRjaF0sXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGlzUm91dGVSZXF1ZXN0LFxuICAgICAgICByZXF1ZXN0Q29udGV4dCxcbiAgICAgICAgZGF0YVN0cmF0ZWd5XG4gICAgICApO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0c1thY3Rpb25NYXRjaC5yb3V0ZS5pZF07XG4gICAgICBpZiAocmVxdWVzdC5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgICB0aHJvd1N0YXRpY0hhbmRsZXJBYm9ydGVkRXJyb3IocmVxdWVzdCwgaXNSb3V0ZVJlcXVlc3QpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNSZWRpcmVjdFJlc3VsdChyZXN1bHQpKSB7XG4gICAgICB0aHJvdyBuZXcgUmVzcG9uc2UobnVsbCwge1xuICAgICAgICBzdGF0dXM6IHJlc3VsdC5yZXNwb25zZS5zdGF0dXMsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBMb2NhdGlvbjogcmVzdWx0LnJlc3BvbnNlLmhlYWRlcnMuZ2V0KFwiTG9jYXRpb25cIilcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChpc1JvdXRlUmVxdWVzdCkge1xuICAgICAgaWYgKGlzRXJyb3JSZXN1bHQocmVzdWx0KSkge1xuICAgICAgICB0aHJvdyByZXN1bHQuZXJyb3I7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYXRjaGVzOiBbYWN0aW9uTWF0Y2hdLFxuICAgICAgICBsb2FkZXJEYXRhOiB7fSxcbiAgICAgICAgYWN0aW9uRGF0YTogeyBbYWN0aW9uTWF0Y2gucm91dGUuaWRdOiByZXN1bHQuZGF0YSB9LFxuICAgICAgICBlcnJvcnM6IG51bGwsXG4gICAgICAgIC8vIE5vdGU6IHN0YXR1c0NvZGUgKyBoZWFkZXJzIGFyZSB1bnVzZWQgaGVyZSBzaW5jZSBxdWVyeVJvdXRlIHdpbGxcbiAgICAgICAgLy8gcmV0dXJuIHRoZSByYXcgUmVzcG9uc2Ugb3IgdmFsdWVcbiAgICAgICAgc3RhdHVzQ29kZTogMjAwLFxuICAgICAgICBsb2FkZXJIZWFkZXJzOiB7fSxcbiAgICAgICAgYWN0aW9uSGVhZGVyczoge31cbiAgICAgIH07XG4gICAgfVxuICAgIGxldCBsb2FkZXJSZXF1ZXN0ID0gbmV3IFJlcXVlc3QocmVxdWVzdC51cmwsIHtcbiAgICAgIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycyxcbiAgICAgIHJlZGlyZWN0OiByZXF1ZXN0LnJlZGlyZWN0LFxuICAgICAgc2lnbmFsOiByZXF1ZXN0LnNpZ25hbFxuICAgIH0pO1xuICAgIGlmIChpc0Vycm9yUmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgIGxldCBib3VuZGFyeU1hdGNoID0gc2tpcExvYWRlckVycm9yQnViYmxpbmcgPyBhY3Rpb25NYXRjaCA6IGZpbmROZWFyZXN0Qm91bmRhcnkobWF0Y2hlcywgYWN0aW9uTWF0Y2gucm91dGUuaWQpO1xuICAgICAgbGV0IGNvbnRleHQyID0gYXdhaXQgbG9hZFJvdXRlRGF0YShcbiAgICAgICAgbG9hZGVyUmVxdWVzdCxcbiAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgcmVxdWVzdENvbnRleHQsXG4gICAgICAgIGRhdGFTdHJhdGVneSxcbiAgICAgICAgc2tpcExvYWRlckVycm9yQnViYmxpbmcsXG4gICAgICAgIG51bGwsXG4gICAgICAgIFtib3VuZGFyeU1hdGNoLnJvdXRlLmlkLCByZXN1bHRdXG4gICAgICApO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uY29udGV4dDIsXG4gICAgICAgIHN0YXR1c0NvZGU6IGlzUm91dGVFcnJvclJlc3BvbnNlKHJlc3VsdC5lcnJvcikgPyByZXN1bHQuZXJyb3Iuc3RhdHVzIDogcmVzdWx0LnN0YXR1c0NvZGUgIT0gbnVsbCA/IHJlc3VsdC5zdGF0dXNDb2RlIDogNTAwLFxuICAgICAgICBhY3Rpb25EYXRhOiBudWxsLFxuICAgICAgICBhY3Rpb25IZWFkZXJzOiB7XG4gICAgICAgICAgLi4ucmVzdWx0LmhlYWRlcnMgPyB7IFthY3Rpb25NYXRjaC5yb3V0ZS5pZF06IHJlc3VsdC5oZWFkZXJzIH0gOiB7fVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICBsZXQgY29udGV4dCA9IGF3YWl0IGxvYWRSb3V0ZURhdGEoXG4gICAgICBsb2FkZXJSZXF1ZXN0LFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIHJlcXVlc3RDb250ZXh0LFxuICAgICAgZGF0YVN0cmF0ZWd5LFxuICAgICAgc2tpcExvYWRlckVycm9yQnViYmxpbmcsXG4gICAgICBudWxsXG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uY29udGV4dCxcbiAgICAgIGFjdGlvbkRhdGE6IHtcbiAgICAgICAgW2FjdGlvbk1hdGNoLnJvdXRlLmlkXTogcmVzdWx0LmRhdGFcbiAgICAgIH0sXG4gICAgICAvLyBhY3Rpb24gc3RhdHVzIGNvZGVzIHRha2UgcHJlY2VkZW5jZSBvdmVyIGxvYWRlciBzdGF0dXMgY29kZXNcbiAgICAgIC4uLnJlc3VsdC5zdGF0dXNDb2RlID8geyBzdGF0dXNDb2RlOiByZXN1bHQuc3RhdHVzQ29kZSB9IDoge30sXG4gICAgICBhY3Rpb25IZWFkZXJzOiByZXN1bHQuaGVhZGVycyA/IHsgW2FjdGlvbk1hdGNoLnJvdXRlLmlkXTogcmVzdWx0LmhlYWRlcnMgfSA6IHt9XG4gICAgfTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBsb2FkUm91dGVEYXRhKHJlcXVlc3QsIG1hdGNoZXMsIHJlcXVlc3RDb250ZXh0LCBkYXRhU3RyYXRlZ3ksIHNraXBMb2FkZXJFcnJvckJ1YmJsaW5nLCByb3V0ZU1hdGNoLCBwZW5kaW5nQWN0aW9uUmVzdWx0KSB7XG4gICAgbGV0IGlzUm91dGVSZXF1ZXN0ID0gcm91dGVNYXRjaCAhPSBudWxsO1xuICAgIGlmIChpc1JvdXRlUmVxdWVzdCAmJiAhcm91dGVNYXRjaD8ucm91dGUubG9hZGVyICYmICFyb3V0ZU1hdGNoPy5yb3V0ZS5sYXp5KSB7XG4gICAgICB0aHJvdyBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwMCwge1xuICAgICAgICBtZXRob2Q6IHJlcXVlc3QubWV0aG9kLFxuICAgICAgICBwYXRobmFtZTogbmV3IFVSTChyZXF1ZXN0LnVybCkucGF0aG5hbWUsXG4gICAgICAgIHJvdXRlSWQ6IHJvdXRlTWF0Y2g/LnJvdXRlLmlkXG4gICAgICB9KTtcbiAgICB9XG4gICAgbGV0IHJlcXVlc3RNYXRjaGVzID0gcm91dGVNYXRjaCA/IFtyb3V0ZU1hdGNoXSA6IHBlbmRpbmdBY3Rpb25SZXN1bHQgJiYgaXNFcnJvclJlc3VsdChwZW5kaW5nQWN0aW9uUmVzdWx0WzFdKSA/IGdldExvYWRlck1hdGNoZXNVbnRpbEJvdW5kYXJ5KG1hdGNoZXMsIHBlbmRpbmdBY3Rpb25SZXN1bHRbMF0pIDogbWF0Y2hlcztcbiAgICBsZXQgbWF0Y2hlc1RvTG9hZCA9IHJlcXVlc3RNYXRjaGVzLmZpbHRlcihcbiAgICAgIChtKSA9PiBtLnJvdXRlLmxvYWRlciB8fCBtLnJvdXRlLmxhenlcbiAgICApO1xuICAgIGlmIChtYXRjaGVzVG9Mb2FkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgLy8gQWRkIGEgbnVsbCBmb3IgYWxsIG1hdGNoZWQgcm91dGVzIGZvciBwcm9wZXIgcmV2YWxpZGF0aW9uIG9uIHRoZSBjbGllbnRcbiAgICAgICAgbG9hZGVyRGF0YTogbWF0Y2hlcy5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgbSkgPT4gT2JqZWN0LmFzc2lnbihhY2MsIHsgW20ucm91dGUuaWRdOiBudWxsIH0pLFxuICAgICAgICAgIHt9XG4gICAgICAgICksXG4gICAgICAgIGVycm9yczogcGVuZGluZ0FjdGlvblJlc3VsdCAmJiBpc0Vycm9yUmVzdWx0KHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0pID8ge1xuICAgICAgICAgIFtwZW5kaW5nQWN0aW9uUmVzdWx0WzBdXTogcGVuZGluZ0FjdGlvblJlc3VsdFsxXS5lcnJvclxuICAgICAgICB9IDogbnVsbCxcbiAgICAgICAgc3RhdHVzQ29kZTogMjAwLFxuICAgICAgICBsb2FkZXJIZWFkZXJzOiB7fVxuICAgICAgfTtcbiAgICB9XG4gICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBjYWxsRGF0YVN0cmF0ZWd5KFxuICAgICAgXCJsb2FkZXJcIixcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtYXRjaGVzVG9Mb2FkLFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIGlzUm91dGVSZXF1ZXN0LFxuICAgICAgcmVxdWVzdENvbnRleHQsXG4gICAgICBkYXRhU3RyYXRlZ3lcbiAgICApO1xuICAgIGlmIChyZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICB0aHJvd1N0YXRpY0hhbmRsZXJBYm9ydGVkRXJyb3IocmVxdWVzdCwgaXNSb3V0ZVJlcXVlc3QpO1xuICAgIH1cbiAgICBsZXQgY29udGV4dCA9IHByb2Nlc3NSb3V0ZUxvYWRlckRhdGEoXG4gICAgICBtYXRjaGVzLFxuICAgICAgcmVzdWx0cyxcbiAgICAgIHBlbmRpbmdBY3Rpb25SZXN1bHQsXG4gICAgICB0cnVlLFxuICAgICAgc2tpcExvYWRlckVycm9yQnViYmxpbmdcbiAgICApO1xuICAgIGxldCBleGVjdXRlZExvYWRlcnMgPSBuZXcgU2V0KFxuICAgICAgbWF0Y2hlc1RvTG9hZC5tYXAoKG1hdGNoKSA9PiBtYXRjaC5yb3V0ZS5pZClcbiAgICApO1xuICAgIG1hdGNoZXMuZm9yRWFjaCgobWF0Y2gpID0+IHtcbiAgICAgIGlmICghZXhlY3V0ZWRMb2FkZXJzLmhhcyhtYXRjaC5yb3V0ZS5pZCkpIHtcbiAgICAgICAgY29udGV4dC5sb2FkZXJEYXRhW21hdGNoLnJvdXRlLmlkXSA9IG51bGw7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbnRleHQsXG4gICAgICBtYXRjaGVzXG4gICAgfTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBjYWxsRGF0YVN0cmF0ZWd5KHR5cGUsIHJlcXVlc3QsIG1hdGNoZXNUb0xvYWQsIG1hdGNoZXMsIGlzUm91dGVSZXF1ZXN0LCByZXF1ZXN0Q29udGV4dCwgZGF0YVN0cmF0ZWd5KSB7XG4gICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBjYWxsRGF0YVN0cmF0ZWd5SW1wbChcbiAgICAgIGRhdGFTdHJhdGVneSB8fCBkZWZhdWx0RGF0YVN0cmF0ZWd5LFxuICAgICAgdHlwZSxcbiAgICAgIG51bGwsXG4gICAgICByZXF1ZXN0LFxuICAgICAgbWF0Y2hlc1RvTG9hZCxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBudWxsLFxuICAgICAgbWFuaWZlc3QsXG4gICAgICBtYXBSb3V0ZVByb3BlcnRpZXMyLFxuICAgICAgcmVxdWVzdENvbnRleHRcbiAgICApO1xuICAgIGxldCBkYXRhUmVzdWx0cyA9IHt9O1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgbWF0Y2hlcy5tYXAoYXN5bmMgKG1hdGNoKSA9PiB7XG4gICAgICAgIGlmICghKG1hdGNoLnJvdXRlLmlkIGluIHJlc3VsdHMpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZXN1bHQgPSByZXN1bHRzW21hdGNoLnJvdXRlLmlkXTtcbiAgICAgICAgaWYgKGlzUmVkaXJlY3REYXRhU3RyYXRlZ3lSZXN1bHQocmVzdWx0KSkge1xuICAgICAgICAgIGxldCByZXNwb25zZSA9IHJlc3VsdC5yZXN1bHQ7XG4gICAgICAgICAgdGhyb3cgbm9ybWFsaXplUmVsYXRpdmVSb3V0aW5nUmVkaXJlY3RSZXNwb25zZShcbiAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgIG1hdGNoLnJvdXRlLmlkLFxuICAgICAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgICAgIGJhc2VuYW1lXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNSZXNwb25zZShyZXN1bHQucmVzdWx0KSAmJiBpc1JvdXRlUmVxdWVzdCkge1xuICAgICAgICAgIHRocm93IHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICBkYXRhUmVzdWx0c1ttYXRjaC5yb3V0ZS5pZF0gPSBhd2FpdCBjb252ZXJ0RGF0YVN0cmF0ZWd5UmVzdWx0VG9EYXRhUmVzdWx0KHJlc3VsdCk7XG4gICAgICB9KVxuICAgICk7XG4gICAgcmV0dXJuIGRhdGFSZXN1bHRzO1xuICB9XG4gIHJldHVybiB7XG4gICAgZGF0YVJvdXRlcyxcbiAgICBxdWVyeSxcbiAgICBxdWVyeVJvdXRlXG4gIH07XG59XG5mdW5jdGlvbiBnZXRTdGF0aWNDb250ZXh0RnJvbUVycm9yKHJvdXRlcywgY29udGV4dCwgZXJyb3IpIHtcbiAgbGV0IG5ld0NvbnRleHQgPSB7XG4gICAgLi4uY29udGV4dCxcbiAgICBzdGF0dXNDb2RlOiBpc1JvdXRlRXJyb3JSZXNwb25zZShlcnJvcikgPyBlcnJvci5zdGF0dXMgOiA1MDAsXG4gICAgZXJyb3JzOiB7XG4gICAgICBbY29udGV4dC5fZGVlcGVzdFJlbmRlcmVkQm91bmRhcnlJZCB8fCByb3V0ZXNbMF0uaWRdOiBlcnJvclxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIG5ld0NvbnRleHQ7XG59XG5mdW5jdGlvbiB0aHJvd1N0YXRpY0hhbmRsZXJBYm9ydGVkRXJyb3IocmVxdWVzdCwgaXNSb3V0ZVJlcXVlc3QpIHtcbiAgaWYgKHJlcXVlc3Quc2lnbmFsLnJlYXNvbiAhPT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgcmVxdWVzdC5zaWduYWwucmVhc29uO1xuICB9XG4gIGxldCBtZXRob2QgPSBpc1JvdXRlUmVxdWVzdCA/IFwicXVlcnlSb3V0ZVwiIDogXCJxdWVyeVwiO1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYCR7bWV0aG9kfSgpIGNhbGwgYWJvcnRlZCB3aXRob3V0IGFuIFxcYEFib3J0U2lnbmFsLnJlYXNvblxcYDogJHtyZXF1ZXN0Lm1ldGhvZH0gJHtyZXF1ZXN0LnVybH1gXG4gICk7XG59XG5mdW5jdGlvbiBpc1N1Ym1pc3Npb25OYXZpZ2F0aW9uKG9wdHMpIHtcbiAgcmV0dXJuIG9wdHMgIT0gbnVsbCAmJiAoXCJmb3JtRGF0YVwiIGluIG9wdHMgJiYgb3B0cy5mb3JtRGF0YSAhPSBudWxsIHx8IFwiYm9keVwiIGluIG9wdHMgJiYgb3B0cy5ib2R5ICE9PSB2b2lkIDApO1xufVxuZnVuY3Rpb24gbm9ybWFsaXplVG8obG9jYXRpb24sIG1hdGNoZXMsIGJhc2VuYW1lLCB0bywgZnJvbVJvdXRlSWQsIHJlbGF0aXZlKSB7XG4gIGxldCBjb250ZXh0dWFsTWF0Y2hlcztcbiAgbGV0IGFjdGl2ZVJvdXRlTWF0Y2g7XG4gIGlmIChmcm9tUm91dGVJZCkge1xuICAgIGNvbnRleHR1YWxNYXRjaGVzID0gW107XG4gICAgZm9yIChsZXQgbWF0Y2ggb2YgbWF0Y2hlcykge1xuICAgICAgY29udGV4dHVhbE1hdGNoZXMucHVzaChtYXRjaCk7XG4gICAgICBpZiAobWF0Y2gucm91dGUuaWQgPT09IGZyb21Sb3V0ZUlkKSB7XG4gICAgICAgIGFjdGl2ZVJvdXRlTWF0Y2ggPSBtYXRjaDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnRleHR1YWxNYXRjaGVzID0gbWF0Y2hlcztcbiAgICBhY3RpdmVSb3V0ZU1hdGNoID0gbWF0Y2hlc1ttYXRjaGVzLmxlbmd0aCAtIDFdO1xuICB9XG4gIGxldCBwYXRoID0gcmVzb2x2ZVRvKFxuICAgIHRvID8gdG8gOiBcIi5cIixcbiAgICBnZXRSZXNvbHZlVG9NYXRjaGVzKGNvbnRleHR1YWxNYXRjaGVzKSxcbiAgICBzdHJpcEJhc2VuYW1lKGxvY2F0aW9uLnBhdGhuYW1lLCBiYXNlbmFtZSkgfHwgbG9jYXRpb24ucGF0aG5hbWUsXG4gICAgcmVsYXRpdmUgPT09IFwicGF0aFwiXG4gICk7XG4gIGlmICh0byA9PSBudWxsKSB7XG4gICAgcGF0aC5zZWFyY2ggPSBsb2NhdGlvbi5zZWFyY2g7XG4gICAgcGF0aC5oYXNoID0gbG9jYXRpb24uaGFzaDtcbiAgfVxuICBpZiAoKHRvID09IG51bGwgfHwgdG8gPT09IFwiXCIgfHwgdG8gPT09IFwiLlwiKSAmJiBhY3RpdmVSb3V0ZU1hdGNoKSB7XG4gICAgbGV0IG5ha2VkSW5kZXggPSBoYXNOYWtlZEluZGV4UXVlcnkocGF0aC5zZWFyY2gpO1xuICAgIGlmIChhY3RpdmVSb3V0ZU1hdGNoLnJvdXRlLmluZGV4ICYmICFuYWtlZEluZGV4KSB7XG4gICAgICBwYXRoLnNlYXJjaCA9IHBhdGguc2VhcmNoID8gcGF0aC5zZWFyY2gucmVwbGFjZSgvXlxcPy8sIFwiP2luZGV4JlwiKSA6IFwiP2luZGV4XCI7XG4gICAgfSBlbHNlIGlmICghYWN0aXZlUm91dGVNYXRjaC5yb3V0ZS5pbmRleCAmJiBuYWtlZEluZGV4KSB7XG4gICAgICBsZXQgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXRoLnNlYXJjaCk7XG4gICAgICBsZXQgaW5kZXhWYWx1ZXMgPSBwYXJhbXMuZ2V0QWxsKFwiaW5kZXhcIik7XG4gICAgICBwYXJhbXMuZGVsZXRlKFwiaW5kZXhcIik7XG4gICAgICBpbmRleFZhbHVlcy5maWx0ZXIoKHYpID0+IHYpLmZvckVhY2goKHYpID0+IHBhcmFtcy5hcHBlbmQoXCJpbmRleFwiLCB2KSk7XG4gICAgICBsZXQgcXMgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgICAgIHBhdGguc2VhcmNoID0gcXMgPyBgPyR7cXN9YCA6IFwiXCI7XG4gICAgfVxuICB9XG4gIGlmIChiYXNlbmFtZSAhPT0gXCIvXCIpIHtcbiAgICBwYXRoLnBhdGhuYW1lID0gcGF0aC5wYXRobmFtZSA9PT0gXCIvXCIgPyBiYXNlbmFtZSA6IGpvaW5QYXRocyhbYmFzZW5hbWUsIHBhdGgucGF0aG5hbWVdKTtcbiAgfVxuICByZXR1cm4gY3JlYXRlUGF0aChwYXRoKTtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5hdmlnYXRlT3B0aW9ucyhpc0ZldGNoZXIsIHBhdGgsIG9wdHMpIHtcbiAgaWYgKCFvcHRzIHx8ICFpc1N1Ym1pc3Npb25OYXZpZ2F0aW9uKG9wdHMpKSB7XG4gICAgcmV0dXJuIHsgcGF0aCB9O1xuICB9XG4gIGlmIChvcHRzLmZvcm1NZXRob2QgJiYgIWlzVmFsaWRNZXRob2Qob3B0cy5mb3JtTWV0aG9kKSkge1xuICAgIHJldHVybiB7XG4gICAgICBwYXRoLFxuICAgICAgZXJyb3I6IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA1LCB7IG1ldGhvZDogb3B0cy5mb3JtTWV0aG9kIH0pXG4gICAgfTtcbiAgfVxuICBsZXQgZ2V0SW52YWxpZEJvZHlFcnJvciA9ICgpID0+ICh7XG4gICAgcGF0aCxcbiAgICBlcnJvcjogZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDAsIHsgdHlwZTogXCJpbnZhbGlkLWJvZHlcIiB9KVxuICB9KTtcbiAgbGV0IHJhd0Zvcm1NZXRob2QgPSBvcHRzLmZvcm1NZXRob2QgfHwgXCJnZXRcIjtcbiAgbGV0IGZvcm1NZXRob2QgPSByYXdGb3JtTWV0aG9kLnRvVXBwZXJDYXNlKCk7XG4gIGxldCBmb3JtQWN0aW9uID0gc3RyaXBIYXNoRnJvbVBhdGgocGF0aCk7XG4gIGlmIChvcHRzLmJvZHkgIT09IHZvaWQgMCkge1xuICAgIGlmIChvcHRzLmZvcm1FbmNUeXBlID09PSBcInRleHQvcGxhaW5cIikge1xuICAgICAgaWYgKCFpc011dGF0aW9uTWV0aG9kKGZvcm1NZXRob2QpKSB7XG4gICAgICAgIHJldHVybiBnZXRJbnZhbGlkQm9keUVycm9yKCk7XG4gICAgICB9XG4gICAgICBsZXQgdGV4dCA9IHR5cGVvZiBvcHRzLmJvZHkgPT09IFwic3RyaW5nXCIgPyBvcHRzLmJvZHkgOiBvcHRzLmJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YSB8fCBvcHRzLmJvZHkgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXMgPyAoXG4gICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm0tY29udHJvbC1pbmZyYXN0cnVjdHVyZS5odG1sI3BsYWluLXRleHQtZm9ybS1kYXRhXG4gICAgICAgIEFycmF5LmZyb20ob3B0cy5ib2R5LmVudHJpZXMoKSkucmVkdWNlKFxuICAgICAgICAgIChhY2MsIFtuYW1lLCB2YWx1ZV0pID0+IGAke2FjY30ke25hbWV9PSR7dmFsdWV9XG5gLFxuICAgICAgICAgIFwiXCJcbiAgICAgICAgKVxuICAgICAgKSA6IFN0cmluZyhvcHRzLmJvZHkpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGF0aCxcbiAgICAgICAgc3VibWlzc2lvbjoge1xuICAgICAgICAgIGZvcm1NZXRob2QsXG4gICAgICAgICAgZm9ybUFjdGlvbixcbiAgICAgICAgICBmb3JtRW5jVHlwZTogb3B0cy5mb3JtRW5jVHlwZSxcbiAgICAgICAgICBmb3JtRGF0YTogdm9pZCAwLFxuICAgICAgICAgIGpzb246IHZvaWQgMCxcbiAgICAgICAgICB0ZXh0XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChvcHRzLmZvcm1FbmNUeXBlID09PSBcImFwcGxpY2F0aW9uL2pzb25cIikge1xuICAgICAgaWYgKCFpc011dGF0aW9uTWV0aG9kKGZvcm1NZXRob2QpKSB7XG4gICAgICAgIHJldHVybiBnZXRJbnZhbGlkQm9keUVycm9yKCk7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBsZXQganNvbiA9IHR5cGVvZiBvcHRzLmJvZHkgPT09IFwic3RyaW5nXCIgPyBKU09OLnBhcnNlKG9wdHMuYm9keSkgOiBvcHRzLmJvZHk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBzdWJtaXNzaW9uOiB7XG4gICAgICAgICAgICBmb3JtTWV0aG9kLFxuICAgICAgICAgICAgZm9ybUFjdGlvbixcbiAgICAgICAgICAgIGZvcm1FbmNUeXBlOiBvcHRzLmZvcm1FbmNUeXBlLFxuICAgICAgICAgICAgZm9ybURhdGE6IHZvaWQgMCxcbiAgICAgICAgICAgIGpzb24sXG4gICAgICAgICAgICB0ZXh0OiB2b2lkIDBcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBnZXRJbnZhbGlkQm9keUVycm9yKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGludmFyaWFudChcbiAgICB0eXBlb2YgRm9ybURhdGEgPT09IFwiZnVuY3Rpb25cIixcbiAgICBcIkZvcm1EYXRhIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudFwiXG4gICk7XG4gIGxldCBzZWFyY2hQYXJhbXM7XG4gIGxldCBmb3JtRGF0YTtcbiAgaWYgKG9wdHMuZm9ybURhdGEpIHtcbiAgICBzZWFyY2hQYXJhbXMgPSBjb252ZXJ0Rm9ybURhdGFUb1NlYXJjaFBhcmFtcyhvcHRzLmZvcm1EYXRhKTtcbiAgICBmb3JtRGF0YSA9IG9wdHMuZm9ybURhdGE7XG4gIH0gZWxzZSBpZiAob3B0cy5ib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpIHtcbiAgICBzZWFyY2hQYXJhbXMgPSBjb252ZXJ0Rm9ybURhdGFUb1NlYXJjaFBhcmFtcyhvcHRzLmJvZHkpO1xuICAgIGZvcm1EYXRhID0gb3B0cy5ib2R5O1xuICB9IGVsc2UgaWYgKG9wdHMuYm9keSBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtcykge1xuICAgIHNlYXJjaFBhcmFtcyA9IG9wdHMuYm9keTtcbiAgICBmb3JtRGF0YSA9IGNvbnZlcnRTZWFyY2hQYXJhbXNUb0Zvcm1EYXRhKHNlYXJjaFBhcmFtcyk7XG4gIH0gZWxzZSBpZiAob3B0cy5ib2R5ID09IG51bGwpIHtcbiAgICBzZWFyY2hQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgc2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhvcHRzLmJvZHkpO1xuICAgICAgZm9ybURhdGEgPSBjb252ZXJ0U2VhcmNoUGFyYW1zVG9Gb3JtRGF0YShzZWFyY2hQYXJhbXMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBnZXRJbnZhbGlkQm9keUVycm9yKCk7XG4gICAgfVxuICB9XG4gIGxldCBzdWJtaXNzaW9uID0ge1xuICAgIGZvcm1NZXRob2QsXG4gICAgZm9ybUFjdGlvbixcbiAgICBmb3JtRW5jVHlwZTogb3B0cyAmJiBvcHRzLmZvcm1FbmNUeXBlIHx8IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIsXG4gICAgZm9ybURhdGEsXG4gICAganNvbjogdm9pZCAwLFxuICAgIHRleHQ6IHZvaWQgMFxuICB9O1xuICBpZiAoaXNNdXRhdGlvbk1ldGhvZChzdWJtaXNzaW9uLmZvcm1NZXRob2QpKSB7XG4gICAgcmV0dXJuIHsgcGF0aCwgc3VibWlzc2lvbiB9O1xuICB9XG4gIGxldCBwYXJzZWRQYXRoID0gcGFyc2VQYXRoKHBhdGgpO1xuICBpZiAoaXNGZXRjaGVyICYmIHBhcnNlZFBhdGguc2VhcmNoICYmIGhhc05ha2VkSW5kZXhRdWVyeShwYXJzZWRQYXRoLnNlYXJjaCkpIHtcbiAgICBzZWFyY2hQYXJhbXMuYXBwZW5kKFwiaW5kZXhcIiwgXCJcIik7XG4gIH1cbiAgcGFyc2VkUGF0aC5zZWFyY2ggPSBgPyR7c2VhcmNoUGFyYW1zfWA7XG4gIHJldHVybiB7IHBhdGg6IGNyZWF0ZVBhdGgocGFyc2VkUGF0aCksIHN1Ym1pc3Npb24gfTtcbn1cbmZ1bmN0aW9uIGdldExvYWRlck1hdGNoZXNVbnRpbEJvdW5kYXJ5KG1hdGNoZXMsIGJvdW5kYXJ5SWQsIGluY2x1ZGVCb3VuZGFyeSA9IGZhbHNlKSB7XG4gIGxldCBpbmRleCA9IG1hdGNoZXMuZmluZEluZGV4KChtKSA9PiBtLnJvdXRlLmlkID09PSBib3VuZGFyeUlkKTtcbiAgaWYgKGluZGV4ID49IDApIHtcbiAgICByZXR1cm4gbWF0Y2hlcy5zbGljZSgwLCBpbmNsdWRlQm91bmRhcnkgPyBpbmRleCArIDEgOiBpbmRleCk7XG4gIH1cbiAgcmV0dXJuIG1hdGNoZXM7XG59XG5mdW5jdGlvbiBnZXRNYXRjaGVzVG9Mb2FkKGhpc3RvcnksIHN0YXRlLCBtYXRjaGVzLCBzdWJtaXNzaW9uLCBsb2NhdGlvbiwgaW5pdGlhbEh5ZHJhdGlvbiwgaXNSZXZhbGlkYXRpb25SZXF1aXJlZCwgY2FuY2VsbGVkRmV0Y2hlckxvYWRzLCBmZXRjaGVyc1F1ZXVlZEZvckRlbGV0aW9uLCBmZXRjaExvYWRNYXRjaGVzLCBmZXRjaFJlZGlyZWN0SWRzLCByb3V0ZXNUb1VzZSwgYmFzZW5hbWUsIHBlbmRpbmdBY3Rpb25SZXN1bHQpIHtcbiAgbGV0IGFjdGlvblJlc3VsdCA9IHBlbmRpbmdBY3Rpb25SZXN1bHQgPyBpc0Vycm9yUmVzdWx0KHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0pID8gcGVuZGluZ0FjdGlvblJlc3VsdFsxXS5lcnJvciA6IHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0uZGF0YSA6IHZvaWQgMDtcbiAgbGV0IGN1cnJlbnRVcmwgPSBoaXN0b3J5LmNyZWF0ZVVSTChzdGF0ZS5sb2NhdGlvbik7XG4gIGxldCBuZXh0VXJsID0gaGlzdG9yeS5jcmVhdGVVUkwobG9jYXRpb24pO1xuICBsZXQgYm91bmRhcnlNYXRjaGVzID0gbWF0Y2hlcztcbiAgaWYgKGluaXRpYWxIeWRyYXRpb24gJiYgc3RhdGUuZXJyb3JzKSB7XG4gICAgYm91bmRhcnlNYXRjaGVzID0gZ2V0TG9hZGVyTWF0Y2hlc1VudGlsQm91bmRhcnkoXG4gICAgICBtYXRjaGVzLFxuICAgICAgT2JqZWN0LmtleXMoc3RhdGUuZXJyb3JzKVswXSxcbiAgICAgIHRydWVcbiAgICApO1xuICB9IGVsc2UgaWYgKHBlbmRpbmdBY3Rpb25SZXN1bHQgJiYgaXNFcnJvclJlc3VsdChwZW5kaW5nQWN0aW9uUmVzdWx0WzFdKSkge1xuICAgIGJvdW5kYXJ5TWF0Y2hlcyA9IGdldExvYWRlck1hdGNoZXNVbnRpbEJvdW5kYXJ5KFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIHBlbmRpbmdBY3Rpb25SZXN1bHRbMF1cbiAgICApO1xuICB9XG4gIGxldCBhY3Rpb25TdGF0dXMgPSBwZW5kaW5nQWN0aW9uUmVzdWx0ID8gcGVuZGluZ0FjdGlvblJlc3VsdFsxXS5zdGF0dXNDb2RlIDogdm9pZCAwO1xuICBsZXQgc2hvdWxkU2tpcFJldmFsaWRhdGlvbiA9IGFjdGlvblN0YXR1cyAmJiBhY3Rpb25TdGF0dXMgPj0gNDAwO1xuICBsZXQgbmF2aWdhdGlvbk1hdGNoZXMgPSBib3VuZGFyeU1hdGNoZXMuZmlsdGVyKChtYXRjaCwgaW5kZXgpID0+IHtcbiAgICBsZXQgeyByb3V0ZSB9ID0gbWF0Y2g7XG4gICAgaWYgKHJvdXRlLmxhenkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAocm91dGUubG9hZGVyID09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGluaXRpYWxIeWRyYXRpb24pIHtcbiAgICAgIHJldHVybiBzaG91bGRMb2FkUm91dGVPbkh5ZHJhdGlvbihyb3V0ZSwgc3RhdGUubG9hZGVyRGF0YSwgc3RhdGUuZXJyb3JzKTtcbiAgICB9XG4gICAgaWYgKGlzTmV3TG9hZGVyKHN0YXRlLmxvYWRlckRhdGEsIHN0YXRlLm1hdGNoZXNbaW5kZXhdLCBtYXRjaCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBsZXQgY3VycmVudFJvdXRlTWF0Y2ggPSBzdGF0ZS5tYXRjaGVzW2luZGV4XTtcbiAgICBsZXQgbmV4dFJvdXRlTWF0Y2ggPSBtYXRjaDtcbiAgICByZXR1cm4gc2hvdWxkUmV2YWxpZGF0ZUxvYWRlcihtYXRjaCwge1xuICAgICAgY3VycmVudFVybCxcbiAgICAgIGN1cnJlbnRQYXJhbXM6IGN1cnJlbnRSb3V0ZU1hdGNoLnBhcmFtcyxcbiAgICAgIG5leHRVcmwsXG4gICAgICBuZXh0UGFyYW1zOiBuZXh0Um91dGVNYXRjaC5wYXJhbXMsXG4gICAgICAuLi5zdWJtaXNzaW9uLFxuICAgICAgYWN0aW9uUmVzdWx0LFxuICAgICAgYWN0aW9uU3RhdHVzLFxuICAgICAgZGVmYXVsdFNob3VsZFJldmFsaWRhdGU6IHNob3VsZFNraXBSZXZhbGlkYXRpb24gPyBmYWxzZSA6IChcbiAgICAgICAgLy8gRm9yY2VkIHJldmFsaWRhdGlvbiBkdWUgdG8gc3VibWlzc2lvbiwgdXNlUmV2YWxpZGF0b3IsIG9yIFgtUmVtaXgtUmV2YWxpZGF0ZVxuICAgICAgICBpc1JldmFsaWRhdGlvblJlcXVpcmVkIHx8IGN1cnJlbnRVcmwucGF0aG5hbWUgKyBjdXJyZW50VXJsLnNlYXJjaCA9PT0gbmV4dFVybC5wYXRobmFtZSArIG5leHRVcmwuc2VhcmNoIHx8IC8vIFNlYXJjaCBwYXJhbXMgYWZmZWN0IGFsbCBsb2FkZXJzXG4gICAgICAgIGN1cnJlbnRVcmwuc2VhcmNoICE9PSBuZXh0VXJsLnNlYXJjaCB8fCBpc05ld1JvdXRlSW5zdGFuY2UoY3VycmVudFJvdXRlTWF0Y2gsIG5leHRSb3V0ZU1hdGNoKVxuICAgICAgKVxuICAgIH0pO1xuICB9KTtcbiAgbGV0IHJldmFsaWRhdGluZ0ZldGNoZXJzID0gW107XG4gIGZldGNoTG9hZE1hdGNoZXMuZm9yRWFjaCgoZiwga2V5KSA9PiB7XG4gICAgaWYgKGluaXRpYWxIeWRyYXRpb24gfHwgIW1hdGNoZXMuc29tZSgobSkgPT4gbS5yb3V0ZS5pZCA9PT0gZi5yb3V0ZUlkKSB8fCBmZXRjaGVyc1F1ZXVlZEZvckRlbGV0aW9uLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBmZXRjaGVyTWF0Y2hlcyA9IG1hdGNoUm91dGVzKHJvdXRlc1RvVXNlLCBmLnBhdGgsIGJhc2VuYW1lKTtcbiAgICBpZiAoIWZldGNoZXJNYXRjaGVzKSB7XG4gICAgICByZXZhbGlkYXRpbmdGZXRjaGVycy5wdXNoKHtcbiAgICAgICAga2V5LFxuICAgICAgICByb3V0ZUlkOiBmLnJvdXRlSWQsXG4gICAgICAgIHBhdGg6IGYucGF0aCxcbiAgICAgICAgbWF0Y2hlczogbnVsbCxcbiAgICAgICAgbWF0Y2g6IG51bGwsXG4gICAgICAgIGNvbnRyb2xsZXI6IG51bGxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgZmV0Y2hlciA9IHN0YXRlLmZldGNoZXJzLmdldChrZXkpO1xuICAgIGxldCBmZXRjaGVyTWF0Y2ggPSBnZXRUYXJnZXRNYXRjaChmZXRjaGVyTWF0Y2hlcywgZi5wYXRoKTtcbiAgICBsZXQgc2hvdWxkUmV2YWxpZGF0ZSA9IGZhbHNlO1xuICAgIGlmIChmZXRjaFJlZGlyZWN0SWRzLmhhcyhrZXkpKSB7XG4gICAgICBzaG91bGRSZXZhbGlkYXRlID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChjYW5jZWxsZWRGZXRjaGVyTG9hZHMuaGFzKGtleSkpIHtcbiAgICAgIGNhbmNlbGxlZEZldGNoZXJMb2Fkcy5kZWxldGUoa2V5KTtcbiAgICAgIHNob3VsZFJldmFsaWRhdGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoZmV0Y2hlciAmJiBmZXRjaGVyLnN0YXRlICE9PSBcImlkbGVcIiAmJiBmZXRjaGVyLmRhdGEgPT09IHZvaWQgMCkge1xuICAgICAgc2hvdWxkUmV2YWxpZGF0ZSA9IGlzUmV2YWxpZGF0aW9uUmVxdWlyZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNob3VsZFJldmFsaWRhdGUgPSBzaG91bGRSZXZhbGlkYXRlTG9hZGVyKGZldGNoZXJNYXRjaCwge1xuICAgICAgICBjdXJyZW50VXJsLFxuICAgICAgICBjdXJyZW50UGFyYW1zOiBzdGF0ZS5tYXRjaGVzW3N0YXRlLm1hdGNoZXMubGVuZ3RoIC0gMV0ucGFyYW1zLFxuICAgICAgICBuZXh0VXJsLFxuICAgICAgICBuZXh0UGFyYW1zOiBtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV0ucGFyYW1zLFxuICAgICAgICAuLi5zdWJtaXNzaW9uLFxuICAgICAgICBhY3Rpb25SZXN1bHQsXG4gICAgICAgIGFjdGlvblN0YXR1cyxcbiAgICAgICAgZGVmYXVsdFNob3VsZFJldmFsaWRhdGU6IHNob3VsZFNraXBSZXZhbGlkYXRpb24gPyBmYWxzZSA6IGlzUmV2YWxpZGF0aW9uUmVxdWlyZWRcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoc2hvdWxkUmV2YWxpZGF0ZSkge1xuICAgICAgcmV2YWxpZGF0aW5nRmV0Y2hlcnMucHVzaCh7XG4gICAgICAgIGtleSxcbiAgICAgICAgcm91dGVJZDogZi5yb3V0ZUlkLFxuICAgICAgICBwYXRoOiBmLnBhdGgsXG4gICAgICAgIG1hdGNoZXM6IGZldGNoZXJNYXRjaGVzLFxuICAgICAgICBtYXRjaDogZmV0Y2hlck1hdGNoLFxuICAgICAgICBjb250cm9sbGVyOiBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBbbmF2aWdhdGlvbk1hdGNoZXMsIHJldmFsaWRhdGluZ0ZldGNoZXJzXTtcbn1cbmZ1bmN0aW9uIHNob3VsZExvYWRSb3V0ZU9uSHlkcmF0aW9uKHJvdXRlLCBsb2FkZXJEYXRhLCBlcnJvcnMpIHtcbiAgaWYgKHJvdXRlLmxhenkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoIXJvdXRlLmxvYWRlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBsZXQgaGFzRGF0YSA9IGxvYWRlckRhdGEgIT0gbnVsbCAmJiBsb2FkZXJEYXRhW3JvdXRlLmlkXSAhPT0gdm9pZCAwO1xuICBsZXQgaGFzRXJyb3IgPSBlcnJvcnMgIT0gbnVsbCAmJiBlcnJvcnNbcm91dGUuaWRdICE9PSB2b2lkIDA7XG4gIGlmICghaGFzRGF0YSAmJiBoYXNFcnJvcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodHlwZW9mIHJvdXRlLmxvYWRlciA9PT0gXCJmdW5jdGlvblwiICYmIHJvdXRlLmxvYWRlci5oeWRyYXRlID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuICFoYXNEYXRhICYmICFoYXNFcnJvcjtcbn1cbmZ1bmN0aW9uIGlzTmV3TG9hZGVyKGN1cnJlbnRMb2FkZXJEYXRhLCBjdXJyZW50TWF0Y2gsIG1hdGNoKSB7XG4gIGxldCBpc05ldyA9IChcbiAgICAvLyBbYV0gLT4gW2EsIGJdXG4gICAgIWN1cnJlbnRNYXRjaCB8fCAvLyBbYSwgYl0gLT4gW2EsIGNdXG4gICAgbWF0Y2gucm91dGUuaWQgIT09IGN1cnJlbnRNYXRjaC5yb3V0ZS5pZFxuICApO1xuICBsZXQgaXNNaXNzaW5nRGF0YSA9ICFjdXJyZW50TG9hZGVyRGF0YS5oYXNPd25Qcm9wZXJ0eShtYXRjaC5yb3V0ZS5pZCk7XG4gIHJldHVybiBpc05ldyB8fCBpc01pc3NpbmdEYXRhO1xufVxuZnVuY3Rpb24gaXNOZXdSb3V0ZUluc3RhbmNlKGN1cnJlbnRNYXRjaCwgbWF0Y2gpIHtcbiAgbGV0IGN1cnJlbnRQYXRoID0gY3VycmVudE1hdGNoLnJvdXRlLnBhdGg7XG4gIHJldHVybiAoXG4gICAgLy8gcGFyYW0gY2hhbmdlIGZvciB0aGlzIG1hdGNoLCAvdXNlcnMvMTIzIC0+IC91c2Vycy80NTZcbiAgICBjdXJyZW50TWF0Y2gucGF0aG5hbWUgIT09IG1hdGNoLnBhdGhuYW1lIHx8IC8vIHNwbGF0IHBhcmFtIGNoYW5nZWQsIHdoaWNoIGlzIG5vdCBwcmVzZW50IGluIG1hdGNoLnBhdGhcbiAgICAvLyBlLmcuIC9maWxlcy9pbWFnZXMvYXZhdGFyLmpwZyAtPiBmaWxlcy9maW5hbmNlcy54bHNcbiAgICBjdXJyZW50UGF0aCAhPSBudWxsICYmIGN1cnJlbnRQYXRoLmVuZHNXaXRoKFwiKlwiKSAmJiBjdXJyZW50TWF0Y2gucGFyYW1zW1wiKlwiXSAhPT0gbWF0Y2gucGFyYW1zW1wiKlwiXVxuICApO1xufVxuZnVuY3Rpb24gc2hvdWxkUmV2YWxpZGF0ZUxvYWRlcihsb2FkZXJNYXRjaCwgYXJnKSB7XG4gIGlmIChsb2FkZXJNYXRjaC5yb3V0ZS5zaG91bGRSZXZhbGlkYXRlKSB7XG4gICAgbGV0IHJvdXRlQ2hvaWNlID0gbG9hZGVyTWF0Y2gucm91dGUuc2hvdWxkUmV2YWxpZGF0ZShhcmcpO1xuICAgIGlmICh0eXBlb2Ygcm91dGVDaG9pY2UgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICByZXR1cm4gcm91dGVDaG9pY2U7XG4gICAgfVxuICB9XG4gIHJldHVybiBhcmcuZGVmYXVsdFNob3VsZFJldmFsaWRhdGU7XG59XG5mdW5jdGlvbiBwYXRjaFJvdXRlc0ltcGwocm91dGVJZCwgY2hpbGRyZW4sIHJvdXRlc1RvVXNlLCBtYW5pZmVzdCwgbWFwUm91dGVQcm9wZXJ0aWVzMikge1xuICBsZXQgY2hpbGRyZW5Ub1BhdGNoO1xuICBpZiAocm91dGVJZCkge1xuICAgIGxldCByb3V0ZSA9IG1hbmlmZXN0W3JvdXRlSWRdO1xuICAgIGludmFyaWFudChcbiAgICAgIHJvdXRlLFxuICAgICAgYE5vIHJvdXRlIGZvdW5kIHRvIHBhdGNoIGNoaWxkcmVuIGludG86IHJvdXRlSWQgPSAke3JvdXRlSWR9YFxuICAgICk7XG4gICAgaWYgKCFyb3V0ZS5jaGlsZHJlbikge1xuICAgICAgcm91dGUuY2hpbGRyZW4gPSBbXTtcbiAgICB9XG4gICAgY2hpbGRyZW5Ub1BhdGNoID0gcm91dGUuY2hpbGRyZW47XG4gIH0gZWxzZSB7XG4gICAgY2hpbGRyZW5Ub1BhdGNoID0gcm91dGVzVG9Vc2U7XG4gIH1cbiAgbGV0IHVuaXF1ZUNoaWxkcmVuID0gY2hpbGRyZW4uZmlsdGVyKFxuICAgIChuZXdSb3V0ZSkgPT4gIWNoaWxkcmVuVG9QYXRjaC5zb21lKFxuICAgICAgKGV4aXN0aW5nUm91dGUpID0+IGlzU2FtZVJvdXRlKG5ld1JvdXRlLCBleGlzdGluZ1JvdXRlKVxuICAgIClcbiAgKTtcbiAgbGV0IG5ld1JvdXRlcyA9IGNvbnZlcnRSb3V0ZXNUb0RhdGFSb3V0ZXMoXG4gICAgdW5pcXVlQ2hpbGRyZW4sXG4gICAgbWFwUm91dGVQcm9wZXJ0aWVzMixcbiAgICBbcm91dGVJZCB8fCBcIl9cIiwgXCJwYXRjaFwiLCBTdHJpbmcoY2hpbGRyZW5Ub1BhdGNoPy5sZW5ndGggfHwgXCIwXCIpXSxcbiAgICBtYW5pZmVzdFxuICApO1xuICBjaGlsZHJlblRvUGF0Y2gucHVzaCguLi5uZXdSb3V0ZXMpO1xufVxuZnVuY3Rpb24gaXNTYW1lUm91dGUobmV3Um91dGUsIGV4aXN0aW5nUm91dGUpIHtcbiAgaWYgKFwiaWRcIiBpbiBuZXdSb3V0ZSAmJiBcImlkXCIgaW4gZXhpc3RpbmdSb3V0ZSAmJiBuZXdSb3V0ZS5pZCA9PT0gZXhpc3RpbmdSb3V0ZS5pZCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICghKG5ld1JvdXRlLmluZGV4ID09PSBleGlzdGluZ1JvdXRlLmluZGV4ICYmIG5ld1JvdXRlLnBhdGggPT09IGV4aXN0aW5nUm91dGUucGF0aCAmJiBuZXdSb3V0ZS5jYXNlU2Vuc2l0aXZlID09PSBleGlzdGluZ1JvdXRlLmNhc2VTZW5zaXRpdmUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICgoIW5ld1JvdXRlLmNoaWxkcmVuIHx8IG5ld1JvdXRlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkgJiYgKCFleGlzdGluZ1JvdXRlLmNoaWxkcmVuIHx8IGV4aXN0aW5nUm91dGUuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBuZXdSb3V0ZS5jaGlsZHJlbi5ldmVyeShcbiAgICAoYUNoaWxkLCBpKSA9PiBleGlzdGluZ1JvdXRlLmNoaWxkcmVuPy5zb21lKChiQ2hpbGQpID0+IGlzU2FtZVJvdXRlKGFDaGlsZCwgYkNoaWxkKSlcbiAgKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGxvYWRMYXp5Um91dGVNb2R1bGUocm91dGUsIG1hcFJvdXRlUHJvcGVydGllczIsIG1hbmlmZXN0KSB7XG4gIGlmICghcm91dGUubGF6eSkge1xuICAgIHJldHVybjtcbiAgfVxuICBsZXQgbGF6eVJvdXRlID0gYXdhaXQgcm91dGUubGF6eSgpO1xuICBpZiAoIXJvdXRlLmxhenkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IHJvdXRlVG9VcGRhdGUgPSBtYW5pZmVzdFtyb3V0ZS5pZF07XG4gIGludmFyaWFudChyb3V0ZVRvVXBkYXRlLCBcIk5vIHJvdXRlIGZvdW5kIGluIG1hbmlmZXN0XCIpO1xuICBsZXQgcm91dGVVcGRhdGVzID0ge307XG4gIGZvciAobGV0IGxhenlSb3V0ZVByb3BlcnR5IGluIGxhenlSb3V0ZSkge1xuICAgIGxldCBzdGF0aWNSb3V0ZVZhbHVlID0gcm91dGVUb1VwZGF0ZVtsYXp5Um91dGVQcm9wZXJ0eV07XG4gICAgbGV0IGlzUHJvcGVydHlTdGF0aWNhbGx5RGVmaW5lZCA9IHN0YXRpY1JvdXRlVmFsdWUgIT09IHZvaWQgMCAmJiAvLyBUaGlzIHByb3BlcnR5IGlzbid0IHN0YXRpYyBzaW5jZSBpdCBzaG91bGQgYWx3YXlzIGJlIHVwZGF0ZWQgYmFzZWRcbiAgICAvLyBvbiB0aGUgcm91dGUgdXBkYXRlc1xuICAgIGxhenlSb3V0ZVByb3BlcnR5ICE9PSBcImhhc0Vycm9yQm91bmRhcnlcIjtcbiAgICB3YXJuaW5nKFxuICAgICAgIWlzUHJvcGVydHlTdGF0aWNhbGx5RGVmaW5lZCxcbiAgICAgIGBSb3V0ZSBcIiR7cm91dGVUb1VwZGF0ZS5pZH1cIiBoYXMgYSBzdGF0aWMgcHJvcGVydHkgXCIke2xhenlSb3V0ZVByb3BlcnR5fVwiIGRlZmluZWQgYnV0IGl0cyBsYXp5IGZ1bmN0aW9uIGlzIGFsc28gcmV0dXJuaW5nIGEgdmFsdWUgZm9yIHRoaXMgcHJvcGVydHkuIFRoZSBsYXp5IHJvdXRlIHByb3BlcnR5IFwiJHtsYXp5Um91dGVQcm9wZXJ0eX1cIiB3aWxsIGJlIGlnbm9yZWQuYFxuICAgICk7XG4gICAgaWYgKCFpc1Byb3BlcnR5U3RhdGljYWxseURlZmluZWQgJiYgIWltbXV0YWJsZVJvdXRlS2V5cy5oYXMobGF6eVJvdXRlUHJvcGVydHkpKSB7XG4gICAgICByb3V0ZVVwZGF0ZXNbbGF6eVJvdXRlUHJvcGVydHldID0gbGF6eVJvdXRlW2xhenlSb3V0ZVByb3BlcnR5XTtcbiAgICB9XG4gIH1cbiAgT2JqZWN0LmFzc2lnbihyb3V0ZVRvVXBkYXRlLCByb3V0ZVVwZGF0ZXMpO1xuICBPYmplY3QuYXNzaWduKHJvdXRlVG9VcGRhdGUsIHtcbiAgICAvLyBUbyBrZWVwIHRoaW5ncyBmcmFtZXdvcmsgYWdub3N0aWMsIHdlIHVzZSB0aGUgcHJvdmlkZWQgYG1hcFJvdXRlUHJvcGVydGllc2BcbiAgICAvLyBmdW5jdGlvbiB0byBzZXQgdGhlIGZyYW1ld29yay1hd2FyZSBwcm9wZXJ0aWVzIChgZWxlbWVudGAvYGhhc0Vycm9yQm91bmRhcnlgKVxuICAgIC8vIHNpbmNlIHRoZSBsb2dpYyB3aWxsIGRpZmZlciBiZXR3ZWVuIGZyYW1ld29ya3MuXG4gICAgLi4ubWFwUm91dGVQcm9wZXJ0aWVzMihyb3V0ZVRvVXBkYXRlKSxcbiAgICBsYXp5OiB2b2lkIDBcbiAgfSk7XG59XG5hc3luYyBmdW5jdGlvbiBkZWZhdWx0RGF0YVN0cmF0ZWd5KHtcbiAgbWF0Y2hlc1xufSkge1xuICBsZXQgbWF0Y2hlc1RvTG9hZCA9IG1hdGNoZXMuZmlsdGVyKChtKSA9PiBtLnNob3VsZExvYWQpO1xuICBsZXQgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKG1hdGNoZXNUb0xvYWQubWFwKChtKSA9PiBtLnJlc29sdmUoKSkpO1xuICByZXR1cm4gcmVzdWx0cy5yZWR1Y2UoXG4gICAgKGFjYywgcmVzdWx0LCBpKSA9PiBPYmplY3QuYXNzaWduKGFjYywgeyBbbWF0Y2hlc1RvTG9hZFtpXS5yb3V0ZS5pZF06IHJlc3VsdCB9KSxcbiAgICB7fVxuICApO1xufVxuYXN5bmMgZnVuY3Rpb24gY2FsbERhdGFTdHJhdGVneUltcGwoZGF0YVN0cmF0ZWd5SW1wbCwgdHlwZSwgc3RhdGUsIHJlcXVlc3QsIG1hdGNoZXNUb0xvYWQsIG1hdGNoZXMsIGZldGNoZXJLZXksIG1hbmlmZXN0LCBtYXBSb3V0ZVByb3BlcnRpZXMyLCByZXF1ZXN0Q29udGV4dCkge1xuICBsZXQgbG9hZFJvdXRlRGVmaW5pdGlvbnNQcm9taXNlcyA9IG1hdGNoZXMubWFwKFxuICAgIChtKSA9PiBtLnJvdXRlLmxhenkgPyBsb2FkTGF6eVJvdXRlTW9kdWxlKG0ucm91dGUsIG1hcFJvdXRlUHJvcGVydGllczIsIG1hbmlmZXN0KSA6IHZvaWQgMFxuICApO1xuICBsZXQgZHNNYXRjaGVzID0gbWF0Y2hlcy5tYXAoKG1hdGNoLCBpKSA9PiB7XG4gICAgbGV0IGxvYWRSb3V0ZVByb21pc2UgPSBsb2FkUm91dGVEZWZpbml0aW9uc1Byb21pc2VzW2ldO1xuICAgIGxldCBzaG91bGRMb2FkID0gbWF0Y2hlc1RvTG9hZC5zb21lKChtKSA9PiBtLnJvdXRlLmlkID09PSBtYXRjaC5yb3V0ZS5pZCk7XG4gICAgbGV0IHJlc29sdmUgPSBhc3luYyAoaGFuZGxlck92ZXJyaWRlKSA9PiB7XG4gICAgICBpZiAoaGFuZGxlck92ZXJyaWRlICYmIHJlcXVlc3QubWV0aG9kID09PSBcIkdFVFwiICYmIChtYXRjaC5yb3V0ZS5sYXp5IHx8IG1hdGNoLnJvdXRlLmxvYWRlcikpIHtcbiAgICAgICAgc2hvdWxkTG9hZCA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2hvdWxkTG9hZCA/IGNhbGxMb2FkZXJPckFjdGlvbihcbiAgICAgICAgdHlwZSxcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgbWF0Y2gsXG4gICAgICAgIGxvYWRSb3V0ZVByb21pc2UsXG4gICAgICAgIGhhbmRsZXJPdmVycmlkZSxcbiAgICAgICAgcmVxdWVzdENvbnRleHRcbiAgICAgICkgOiBQcm9taXNlLnJlc29sdmUoeyB0eXBlOiBcImRhdGFcIiAvKiBkYXRhICovLCByZXN1bHQ6IHZvaWQgMCB9KTtcbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICAuLi5tYXRjaCxcbiAgICAgIHNob3VsZExvYWQsXG4gICAgICByZXNvbHZlXG4gICAgfTtcbiAgfSk7XG4gIGxldCByZXN1bHRzID0gYXdhaXQgZGF0YVN0cmF0ZWd5SW1wbCh7XG4gICAgbWF0Y2hlczogZHNNYXRjaGVzLFxuICAgIHJlcXVlc3QsXG4gICAgcGFyYW1zOiBtYXRjaGVzWzBdLnBhcmFtcyxcbiAgICBmZXRjaGVyS2V5LFxuICAgIGNvbnRleHQ6IHJlcXVlc3RDb250ZXh0XG4gIH0pO1xuICB0cnkge1xuICAgIGF3YWl0IFByb21pc2UuYWxsKGxvYWRSb3V0ZURlZmluaXRpb25zUHJvbWlzZXMpO1xuICB9IGNhdGNoIChlKSB7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5hc3luYyBmdW5jdGlvbiBjYWxsTG9hZGVyT3JBY3Rpb24odHlwZSwgcmVxdWVzdCwgbWF0Y2gsIGxvYWRSb3V0ZVByb21pc2UsIGhhbmRsZXJPdmVycmlkZSwgc3RhdGljQ29udGV4dCkge1xuICBsZXQgcmVzdWx0O1xuICBsZXQgb25SZWplY3Q7XG4gIGxldCBydW5IYW5kbGVyID0gKGhhbmRsZXIpID0+IHtcbiAgICBsZXQgcmVqZWN0O1xuICAgIGxldCBhYm9ydFByb21pc2UgPSBuZXcgUHJvbWlzZSgoXywgcikgPT4gcmVqZWN0ID0gcik7XG4gICAgb25SZWplY3QgPSAoKSA9PiByZWplY3QoKTtcbiAgICByZXF1ZXN0LnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgb25SZWplY3QpO1xuICAgIGxldCBhY3R1YWxIYW5kbGVyID0gKGN0eCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBoYW5kbGVyICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBZb3UgY2Fubm90IGNhbGwgdGhlIGhhbmRsZXIgZm9yIGEgcm91dGUgd2hpY2ggZGVmaW5lcyBhIGJvb2xlYW4gXCIke3R5cGV9XCIgW3JvdXRlSWQ6ICR7bWF0Y2gucm91dGUuaWR9XWBcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFuZGxlcihcbiAgICAgICAge1xuICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgcGFyYW1zOiBtYXRjaC5wYXJhbXMsXG4gICAgICAgICAgY29udGV4dDogc3RhdGljQ29udGV4dFxuICAgICAgICB9LFxuICAgICAgICAuLi5jdHggIT09IHZvaWQgMCA/IFtjdHhdIDogW11cbiAgICAgICk7XG4gICAgfTtcbiAgICBsZXQgaGFuZGxlclByb21pc2UgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbGV0IHZhbCA9IGF3YWl0IChoYW5kbGVyT3ZlcnJpZGUgPyBoYW5kbGVyT3ZlcnJpZGUoKGN0eCkgPT4gYWN0dWFsSGFuZGxlcihjdHgpKSA6IGFjdHVhbEhhbmRsZXIoKSk7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwiZGF0YVwiLCByZXN1bHQ6IHZhbCB9O1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImVycm9yXCIsIHJlc3VsdDogZSB9O1xuICAgICAgfVxuICAgIH0pKCk7XG4gICAgcmV0dXJuIFByb21pc2UucmFjZShbaGFuZGxlclByb21pc2UsIGFib3J0UHJvbWlzZV0pO1xuICB9O1xuICB0cnkge1xuICAgIGxldCBoYW5kbGVyID0gbWF0Y2gucm91dGVbdHlwZV07XG4gICAgaWYgKGxvYWRSb3V0ZVByb21pc2UpIHtcbiAgICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICAgIGxldCBoYW5kbGVyRXJyb3I7XG4gICAgICAgIGxldCBbdmFsdWVdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgIC8vIElmIHRoZSBoYW5kbGVyIHRocm93cywgZG9uJ3QgbGV0IGl0IGltbWVkaWF0ZWx5IGJ1YmJsZSBvdXQsXG4gICAgICAgICAgLy8gc2luY2Ugd2UgbmVlZCB0byBsZXQgdGhlIGxhenkoKSBleGVjdXRpb24gZmluaXNoIHNvIHdlIGtub3cgaWYgdGhpc1xuICAgICAgICAgIC8vIHJvdXRlIGhhcyBhIGJvdW5kYXJ5IHRoYXQgY2FuIGhhbmRsZSB0aGUgZXJyb3JcbiAgICAgICAgICBydW5IYW5kbGVyKGhhbmRsZXIpLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICBoYW5kbGVyRXJyb3IgPSBlO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGxvYWRSb3V0ZVByb21pc2VcbiAgICAgICAgXSk7XG4gICAgICAgIGlmIChoYW5kbGVyRXJyb3IgIT09IHZvaWQgMCkge1xuICAgICAgICAgIHRocm93IGhhbmRsZXJFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IGxvYWRSb3V0ZVByb21pc2U7XG4gICAgICAgIGhhbmRsZXIgPSBtYXRjaC5yb3V0ZVt0eXBlXTtcbiAgICAgICAgaWYgKGhhbmRsZXIpIHtcbiAgICAgICAgICByZXN1bHQgPSBhd2FpdCBydW5IYW5kbGVyKGhhbmRsZXIpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiYWN0aW9uXCIpIHtcbiAgICAgICAgICBsZXQgdXJsID0gbmV3IFVSTChyZXF1ZXN0LnVybCk7XG4gICAgICAgICAgbGV0IHBhdGhuYW1lID0gdXJsLnBhdGhuYW1lICsgdXJsLnNlYXJjaDtcbiAgICAgICAgICB0aHJvdyBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwNSwge1xuICAgICAgICAgICAgbWV0aG9kOiByZXF1ZXN0Lm1ldGhvZCxcbiAgICAgICAgICAgIHBhdGhuYW1lLFxuICAgICAgICAgICAgcm91dGVJZDogbWF0Y2gucm91dGUuaWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4geyB0eXBlOiBcImRhdGFcIiAvKiBkYXRhICovLCByZXN1bHQ6IHZvaWQgMCB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaGFuZGxlcikge1xuICAgICAgbGV0IHVybCA9IG5ldyBVUkwocmVxdWVzdC51cmwpO1xuICAgICAgbGV0IHBhdGhuYW1lID0gdXJsLnBhdGhuYW1lICsgdXJsLnNlYXJjaDtcbiAgICAgIHRocm93IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA0LCB7XG4gICAgICAgIHBhdGhuYW1lXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgcnVuSGFuZGxlcihoYW5kbGVyKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4geyB0eXBlOiBcImVycm9yXCIgLyogZXJyb3IgKi8sIHJlc3VsdDogZSB9O1xuICB9IGZpbmFsbHkge1xuICAgIGlmIChvblJlamVjdCkge1xuICAgICAgcmVxdWVzdC5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIG9uUmVqZWN0KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmFzeW5jIGZ1bmN0aW9uIGNvbnZlcnREYXRhU3RyYXRlZ3lSZXN1bHRUb0RhdGFSZXN1bHQoZGF0YVN0cmF0ZWd5UmVzdWx0KSB7XG4gIGxldCB7IHJlc3VsdCwgdHlwZSB9ID0gZGF0YVN0cmF0ZWd5UmVzdWx0O1xuICBpZiAoaXNSZXNwb25zZShyZXN1bHQpKSB7XG4gICAgbGV0IGRhdGEyO1xuICAgIHRyeSB7XG4gICAgICBsZXQgY29udGVudFR5cGUgPSByZXN1bHQuaGVhZGVycy5nZXQoXCJDb250ZW50LVR5cGVcIik7XG4gICAgICBpZiAoY29udGVudFR5cGUgJiYgL1xcYmFwcGxpY2F0aW9uXFwvanNvblxcYi8udGVzdChjb250ZW50VHlwZSkpIHtcbiAgICAgICAgaWYgKHJlc3VsdC5ib2R5ID09IG51bGwpIHtcbiAgICAgICAgICBkYXRhMiA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGF0YTIgPSBhd2FpdCByZXN1bHQuanNvbigpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhMiA9IGF3YWl0IHJlc3VsdC50ZXh0KCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJlcnJvclwiIC8qIGVycm9yICovLCBlcnJvcjogZSB9O1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gXCJlcnJvclwiIC8qIGVycm9yICovKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcImVycm9yXCIgLyogZXJyb3IgKi8sXG4gICAgICAgIGVycm9yOiBuZXcgRXJyb3JSZXNwb25zZUltcGwocmVzdWx0LnN0YXR1cywgcmVzdWx0LnN0YXR1c1RleHQsIGRhdGEyKSxcbiAgICAgICAgc3RhdHVzQ29kZTogcmVzdWx0LnN0YXR1cyxcbiAgICAgICAgaGVhZGVyczogcmVzdWx0LmhlYWRlcnNcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImRhdGFcIiAvKiBkYXRhICovLFxuICAgICAgZGF0YTogZGF0YTIsXG4gICAgICBzdGF0dXNDb2RlOiByZXN1bHQuc3RhdHVzLFxuICAgICAgaGVhZGVyczogcmVzdWx0LmhlYWRlcnNcbiAgICB9O1xuICB9XG4gIGlmICh0eXBlID09PSBcImVycm9yXCIgLyogZXJyb3IgKi8pIHtcbiAgICBpZiAoaXNEYXRhV2l0aFJlc3BvbnNlSW5pdChyZXN1bHQpKSB7XG4gICAgICBpZiAocmVzdWx0LmRhdGEgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwiZXJyb3JcIiAvKiBlcnJvciAqLyxcbiAgICAgICAgICBlcnJvcjogcmVzdWx0LmRhdGEsXG4gICAgICAgICAgc3RhdHVzQ29kZTogcmVzdWx0LmluaXQ/LnN0YXR1c1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0gbmV3IEVycm9yUmVzcG9uc2VJbXBsKFxuICAgICAgICByZXN1bHQuaW5pdD8uc3RhdHVzIHx8IDUwMCxcbiAgICAgICAgdm9pZCAwLFxuICAgICAgICByZXN1bHQuZGF0YVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiZXJyb3JcIiAvKiBlcnJvciAqLyxcbiAgICAgIGVycm9yOiByZXN1bHQsXG4gICAgICBzdGF0dXNDb2RlOiBpc1JvdXRlRXJyb3JSZXNwb25zZShyZXN1bHQpID8gcmVzdWx0LnN0YXR1cyA6IHZvaWQgMFxuICAgIH07XG4gIH1cbiAgaWYgKGlzRGF0YVdpdGhSZXNwb25zZUluaXQocmVzdWx0KSkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImRhdGFcIiAvKiBkYXRhICovLFxuICAgICAgZGF0YTogcmVzdWx0LmRhdGEsXG4gICAgICBzdGF0dXNDb2RlOiByZXN1bHQuaW5pdD8uc3RhdHVzLFxuICAgICAgaGVhZGVyczogcmVzdWx0LmluaXQ/LmhlYWRlcnMgPyBuZXcgSGVhZGVycyhyZXN1bHQuaW5pdC5oZWFkZXJzKSA6IHZvaWQgMFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHsgdHlwZTogXCJkYXRhXCIgLyogZGF0YSAqLywgZGF0YTogcmVzdWx0IH07XG59XG5mdW5jdGlvbiBub3JtYWxpemVSZWxhdGl2ZVJvdXRpbmdSZWRpcmVjdFJlc3BvbnNlKHJlc3BvbnNlLCByZXF1ZXN0LCByb3V0ZUlkLCBtYXRjaGVzLCBiYXNlbmFtZSkge1xuICBsZXQgbG9jYXRpb24gPSByZXNwb25zZS5oZWFkZXJzLmdldChcIkxvY2F0aW9uXCIpO1xuICBpbnZhcmlhbnQoXG4gICAgbG9jYXRpb24sXG4gICAgXCJSZWRpcmVjdHMgcmV0dXJuZWQvdGhyb3duIGZyb20gbG9hZGVycy9hY3Rpb25zIG11c3QgaGF2ZSBhIExvY2F0aW9uIGhlYWRlclwiXG4gICk7XG4gIGlmICghQUJTT0xVVEVfVVJMX1JFR0VYLnRlc3QobG9jYXRpb24pKSB7XG4gICAgbGV0IHRyaW1tZWRNYXRjaGVzID0gbWF0Y2hlcy5zbGljZShcbiAgICAgIDAsXG4gICAgICBtYXRjaGVzLmZpbmRJbmRleCgobSkgPT4gbS5yb3V0ZS5pZCA9PT0gcm91dGVJZCkgKyAxXG4gICAgKTtcbiAgICBsb2NhdGlvbiA9IG5vcm1hbGl6ZVRvKFxuICAgICAgbmV3IFVSTChyZXF1ZXN0LnVybCksXG4gICAgICB0cmltbWVkTWF0Y2hlcyxcbiAgICAgIGJhc2VuYW1lLFxuICAgICAgbG9jYXRpb25cbiAgICApO1xuICAgIHJlc3BvbnNlLmhlYWRlcnMuc2V0KFwiTG9jYXRpb25cIiwgbG9jYXRpb24pO1xuICB9XG4gIHJldHVybiByZXNwb25zZTtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZVJlZGlyZWN0TG9jYXRpb24obG9jYXRpb24sIGN1cnJlbnRVcmwsIGJhc2VuYW1lKSB7XG4gIGlmIChBQlNPTFVURV9VUkxfUkVHRVgudGVzdChsb2NhdGlvbikpIHtcbiAgICBsZXQgbm9ybWFsaXplZExvY2F0aW9uID0gbG9jYXRpb247XG4gICAgbGV0IHVybCA9IG5vcm1hbGl6ZWRMb2NhdGlvbi5zdGFydHNXaXRoKFwiLy9cIikgPyBuZXcgVVJMKGN1cnJlbnRVcmwucHJvdG9jb2wgKyBub3JtYWxpemVkTG9jYXRpb24pIDogbmV3IFVSTChub3JtYWxpemVkTG9jYXRpb24pO1xuICAgIGxldCBpc1NhbWVCYXNlbmFtZSA9IHN0cmlwQmFzZW5hbWUodXJsLnBhdGhuYW1lLCBiYXNlbmFtZSkgIT0gbnVsbDtcbiAgICBpZiAodXJsLm9yaWdpbiA9PT0gY3VycmVudFVybC5vcmlnaW4gJiYgaXNTYW1lQmFzZW5hbWUpIHtcbiAgICAgIHJldHVybiB1cmwucGF0aG5hbWUgKyB1cmwuc2VhcmNoICsgdXJsLmhhc2g7XG4gICAgfVxuICB9XG4gIHJldHVybiBsb2NhdGlvbjtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNsaWVudFNpZGVSZXF1ZXN0KGhpc3RvcnksIGxvY2F0aW9uLCBzaWduYWwsIHN1Ym1pc3Npb24pIHtcbiAgbGV0IHVybCA9IGhpc3RvcnkuY3JlYXRlVVJMKHN0cmlwSGFzaEZyb21QYXRoKGxvY2F0aW9uKSkudG9TdHJpbmcoKTtcbiAgbGV0IGluaXQgPSB7IHNpZ25hbCB9O1xuICBpZiAoc3VibWlzc2lvbiAmJiBpc011dGF0aW9uTWV0aG9kKHN1Ym1pc3Npb24uZm9ybU1ldGhvZCkpIHtcbiAgICBsZXQgeyBmb3JtTWV0aG9kLCBmb3JtRW5jVHlwZSB9ID0gc3VibWlzc2lvbjtcbiAgICBpbml0Lm1ldGhvZCA9IGZvcm1NZXRob2QudG9VcHBlckNhc2UoKTtcbiAgICBpZiAoZm9ybUVuY1R5cGUgPT09IFwiYXBwbGljYXRpb24vanNvblwiKSB7XG4gICAgICBpbml0LmhlYWRlcnMgPSBuZXcgSGVhZGVycyh7IFwiQ29udGVudC1UeXBlXCI6IGZvcm1FbmNUeXBlIH0pO1xuICAgICAgaW5pdC5ib2R5ID0gSlNPTi5zdHJpbmdpZnkoc3VibWlzc2lvbi5qc29uKTtcbiAgICB9IGVsc2UgaWYgKGZvcm1FbmNUeXBlID09PSBcInRleHQvcGxhaW5cIikge1xuICAgICAgaW5pdC5ib2R5ID0gc3VibWlzc2lvbi50ZXh0O1xuICAgIH0gZWxzZSBpZiAoZm9ybUVuY1R5cGUgPT09IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIgJiYgc3VibWlzc2lvbi5mb3JtRGF0YSkge1xuICAgICAgaW5pdC5ib2R5ID0gY29udmVydEZvcm1EYXRhVG9TZWFyY2hQYXJhbXMoc3VibWlzc2lvbi5mb3JtRGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluaXQuYm9keSA9IHN1Ym1pc3Npb24uZm9ybURhdGE7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZXcgUmVxdWVzdCh1cmwsIGluaXQpO1xufVxuZnVuY3Rpb24gY29udmVydEZvcm1EYXRhVG9TZWFyY2hQYXJhbXMoZm9ybURhdGEpIHtcbiAgbGV0IHNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGZvcm1EYXRhLmVudHJpZXMoKSkge1xuICAgIHNlYXJjaFBhcmFtcy5hcHBlbmQoa2V5LCB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyB2YWx1ZSA6IHZhbHVlLm5hbWUpO1xuICB9XG4gIHJldHVybiBzZWFyY2hQYXJhbXM7XG59XG5mdW5jdGlvbiBjb252ZXJ0U2VhcmNoUGFyYW1zVG9Gb3JtRGF0YShzZWFyY2hQYXJhbXMpIHtcbiAgbGV0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBzZWFyY2hQYXJhbXMuZW50cmllcygpKSB7XG4gICAgZm9ybURhdGEuYXBwZW5kKGtleSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiBmb3JtRGF0YTtcbn1cbmZ1bmN0aW9uIHByb2Nlc3NSb3V0ZUxvYWRlckRhdGEobWF0Y2hlcywgcmVzdWx0cywgcGVuZGluZ0FjdGlvblJlc3VsdCwgaXNTdGF0aWNIYW5kbGVyID0gZmFsc2UsIHNraXBMb2FkZXJFcnJvckJ1YmJsaW5nID0gZmFsc2UpIHtcbiAgbGV0IGxvYWRlckRhdGEgPSB7fTtcbiAgbGV0IGVycm9ycyA9IG51bGw7XG4gIGxldCBzdGF0dXNDb2RlO1xuICBsZXQgZm91bmRFcnJvciA9IGZhbHNlO1xuICBsZXQgbG9hZGVySGVhZGVycyA9IHt9O1xuICBsZXQgcGVuZGluZ0Vycm9yID0gcGVuZGluZ0FjdGlvblJlc3VsdCAmJiBpc0Vycm9yUmVzdWx0KHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0pID8gcGVuZGluZ0FjdGlvblJlc3VsdFsxXS5lcnJvciA6IHZvaWQgMDtcbiAgbWF0Y2hlcy5mb3JFYWNoKChtYXRjaCkgPT4ge1xuICAgIGlmICghKG1hdGNoLnJvdXRlLmlkIGluIHJlc3VsdHMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBpZCA9IG1hdGNoLnJvdXRlLmlkO1xuICAgIGxldCByZXN1bHQgPSByZXN1bHRzW2lkXTtcbiAgICBpbnZhcmlhbnQoXG4gICAgICAhaXNSZWRpcmVjdFJlc3VsdChyZXN1bHQpLFxuICAgICAgXCJDYW5ub3QgaGFuZGxlIHJlZGlyZWN0IHJlc3VsdHMgaW4gcHJvY2Vzc0xvYWRlckRhdGFcIlxuICAgICk7XG4gICAgaWYgKGlzRXJyb3JSZXN1bHQocmVzdWx0KSkge1xuICAgICAgbGV0IGVycm9yID0gcmVzdWx0LmVycm9yO1xuICAgICAgaWYgKHBlbmRpbmdFcnJvciAhPT0gdm9pZCAwKSB7XG4gICAgICAgIGVycm9yID0gcGVuZGluZ0Vycm9yO1xuICAgICAgICBwZW5kaW5nRXJyb3IgPSB2b2lkIDA7XG4gICAgICB9XG4gICAgICBlcnJvcnMgPSBlcnJvcnMgfHwge307XG4gICAgICBpZiAoc2tpcExvYWRlckVycm9yQnViYmxpbmcpIHtcbiAgICAgICAgZXJyb3JzW2lkXSA9IGVycm9yO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGJvdW5kYXJ5TWF0Y2ggPSBmaW5kTmVhcmVzdEJvdW5kYXJ5KG1hdGNoZXMsIGlkKTtcbiAgICAgICAgaWYgKGVycm9yc1tib3VuZGFyeU1hdGNoLnJvdXRlLmlkXSA9PSBudWxsKSB7XG4gICAgICAgICAgZXJyb3JzW2JvdW5kYXJ5TWF0Y2gucm91dGUuaWRdID0gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghaXNTdGF0aWNIYW5kbGVyKSB7XG4gICAgICAgIGxvYWRlckRhdGFbaWRdID0gUmVzZXRMb2FkZXJEYXRhU3ltYm9sO1xuICAgICAgfVxuICAgICAgaWYgKCFmb3VuZEVycm9yKSB7XG4gICAgICAgIGZvdW5kRXJyb3IgPSB0cnVlO1xuICAgICAgICBzdGF0dXNDb2RlID0gaXNSb3V0ZUVycm9yUmVzcG9uc2UocmVzdWx0LmVycm9yKSA/IHJlc3VsdC5lcnJvci5zdGF0dXMgOiA1MDA7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0LmhlYWRlcnMpIHtcbiAgICAgICAgbG9hZGVySGVhZGVyc1tpZF0gPSByZXN1bHQuaGVhZGVycztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbG9hZGVyRGF0YVtpZF0gPSByZXN1bHQuZGF0YTtcbiAgICAgIGlmIChyZXN1bHQuc3RhdHVzQ29kZSAmJiByZXN1bHQuc3RhdHVzQ29kZSAhPT0gMjAwICYmICFmb3VuZEVycm9yKSB7XG4gICAgICAgIHN0YXR1c0NvZGUgPSByZXN1bHQuc3RhdHVzQ29kZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQuaGVhZGVycykge1xuICAgICAgICBsb2FkZXJIZWFkZXJzW2lkXSA9IHJlc3VsdC5oZWFkZXJzO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIGlmIChwZW5kaW5nRXJyb3IgIT09IHZvaWQgMCAmJiBwZW5kaW5nQWN0aW9uUmVzdWx0KSB7XG4gICAgZXJyb3JzID0geyBbcGVuZGluZ0FjdGlvblJlc3VsdFswXV06IHBlbmRpbmdFcnJvciB9O1xuICAgIGxvYWRlckRhdGFbcGVuZGluZ0FjdGlvblJlc3VsdFswXV0gPSB2b2lkIDA7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBsb2FkZXJEYXRhLFxuICAgIGVycm9ycyxcbiAgICBzdGF0dXNDb2RlOiBzdGF0dXNDb2RlIHx8IDIwMCxcbiAgICBsb2FkZXJIZWFkZXJzXG4gIH07XG59XG5mdW5jdGlvbiBwcm9jZXNzTG9hZGVyRGF0YShzdGF0ZSwgbWF0Y2hlcywgcmVzdWx0cywgcGVuZGluZ0FjdGlvblJlc3VsdCwgcmV2YWxpZGF0aW5nRmV0Y2hlcnMsIGZldGNoZXJSZXN1bHRzKSB7XG4gIGxldCB7IGxvYWRlckRhdGEsIGVycm9ycyB9ID0gcHJvY2Vzc1JvdXRlTG9hZGVyRGF0YShcbiAgICBtYXRjaGVzLFxuICAgIHJlc3VsdHMsXG4gICAgcGVuZGluZ0FjdGlvblJlc3VsdFxuICApO1xuICByZXZhbGlkYXRpbmdGZXRjaGVycy5mb3JFYWNoKChyZikgPT4ge1xuICAgIGxldCB7IGtleSwgbWF0Y2gsIGNvbnRyb2xsZXIgfSA9IHJmO1xuICAgIGxldCByZXN1bHQgPSBmZXRjaGVyUmVzdWx0c1trZXldO1xuICAgIGludmFyaWFudChyZXN1bHQsIFwiRGlkIG5vdCBmaW5kIGNvcnJlc3BvbmRpbmcgZmV0Y2hlciByZXN1bHRcIik7XG4gICAgaWYgKGNvbnRyb2xsZXIgJiYgY29udHJvbGxlci5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoaXNFcnJvclJlc3VsdChyZXN1bHQpKSB7XG4gICAgICBsZXQgYm91bmRhcnlNYXRjaCA9IGZpbmROZWFyZXN0Qm91bmRhcnkoc3RhdGUubWF0Y2hlcywgbWF0Y2g/LnJvdXRlLmlkKTtcbiAgICAgIGlmICghKGVycm9ycyAmJiBlcnJvcnNbYm91bmRhcnlNYXRjaC5yb3V0ZS5pZF0pKSB7XG4gICAgICAgIGVycm9ycyA9IHtcbiAgICAgICAgICAuLi5lcnJvcnMsXG4gICAgICAgICAgW2JvdW5kYXJ5TWF0Y2gucm91dGUuaWRdOiByZXN1bHQuZXJyb3JcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHN0YXRlLmZldGNoZXJzLmRlbGV0ZShrZXkpO1xuICAgIH0gZWxzZSBpZiAoaXNSZWRpcmVjdFJlc3VsdChyZXN1bHQpKSB7XG4gICAgICBpbnZhcmlhbnQoZmFsc2UsIFwiVW5oYW5kbGVkIGZldGNoZXIgcmV2YWxpZGF0aW9uIHJlZGlyZWN0XCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZG9uZUZldGNoZXIgPSBnZXREb25lRmV0Y2hlcihyZXN1bHQuZGF0YSk7XG4gICAgICBzdGF0ZS5mZXRjaGVycy5zZXQoa2V5LCBkb25lRmV0Y2hlcik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHsgbG9hZGVyRGF0YSwgZXJyb3JzIH07XG59XG5mdW5jdGlvbiBtZXJnZUxvYWRlckRhdGEobG9hZGVyRGF0YSwgbmV3TG9hZGVyRGF0YSwgbWF0Y2hlcywgZXJyb3JzKSB7XG4gIGxldCBtZXJnZWRMb2FkZXJEYXRhID0gT2JqZWN0LmVudHJpZXMobmV3TG9hZGVyRGF0YSkuZmlsdGVyKChbLCB2XSkgPT4gdiAhPT0gUmVzZXRMb2FkZXJEYXRhU3ltYm9sKS5yZWR1Y2UoKG1lcmdlZCwgW2ssIHZdKSA9PiB7XG4gICAgbWVyZ2VkW2tdID0gdjtcbiAgICByZXR1cm4gbWVyZ2VkO1xuICB9LCB7fSk7XG4gIGZvciAobGV0IG1hdGNoIG9mIG1hdGNoZXMpIHtcbiAgICBsZXQgaWQgPSBtYXRjaC5yb3V0ZS5pZDtcbiAgICBpZiAoIW5ld0xvYWRlckRhdGEuaGFzT3duUHJvcGVydHkoaWQpICYmIGxvYWRlckRhdGEuaGFzT3duUHJvcGVydHkoaWQpICYmIG1hdGNoLnJvdXRlLmxvYWRlcikge1xuICAgICAgbWVyZ2VkTG9hZGVyRGF0YVtpZF0gPSBsb2FkZXJEYXRhW2lkXTtcbiAgICB9XG4gICAgaWYgKGVycm9ycyAmJiBlcnJvcnMuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1lcmdlZExvYWRlckRhdGE7XG59XG5mdW5jdGlvbiBnZXRBY3Rpb25EYXRhRm9yQ29tbWl0KHBlbmRpbmdBY3Rpb25SZXN1bHQpIHtcbiAgaWYgKCFwZW5kaW5nQWN0aW9uUmVzdWx0KSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIHJldHVybiBpc0Vycm9yUmVzdWx0KHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0pID8ge1xuICAgIC8vIENsZWFyIG91dCBwcmlvciBhY3Rpb25EYXRhIG9uIGVycm9yc1xuICAgIGFjdGlvbkRhdGE6IHt9XG4gIH0gOiB7XG4gICAgYWN0aW9uRGF0YToge1xuICAgICAgW3BlbmRpbmdBY3Rpb25SZXN1bHRbMF1dOiBwZW5kaW5nQWN0aW9uUmVzdWx0WzFdLmRhdGFcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBmaW5kTmVhcmVzdEJvdW5kYXJ5KG1hdGNoZXMsIHJvdXRlSWQpIHtcbiAgbGV0IGVsaWdpYmxlTWF0Y2hlcyA9IHJvdXRlSWQgPyBtYXRjaGVzLnNsaWNlKDAsIG1hdGNoZXMuZmluZEluZGV4KChtKSA9PiBtLnJvdXRlLmlkID09PSByb3V0ZUlkKSArIDEpIDogWy4uLm1hdGNoZXNdO1xuICByZXR1cm4gZWxpZ2libGVNYXRjaGVzLnJldmVyc2UoKS5maW5kKChtKSA9PiBtLnJvdXRlLmhhc0Vycm9yQm91bmRhcnkgPT09IHRydWUpIHx8IG1hdGNoZXNbMF07XG59XG5mdW5jdGlvbiBnZXRTaG9ydENpcmN1aXRNYXRjaGVzKHJvdXRlcykge1xuICBsZXQgcm91dGUgPSByb3V0ZXMubGVuZ3RoID09PSAxID8gcm91dGVzWzBdIDogcm91dGVzLmZpbmQoKHIpID0+IHIuaW5kZXggfHwgIXIucGF0aCB8fCByLnBhdGggPT09IFwiL1wiKSB8fCB7XG4gICAgaWQ6IGBfX3NoaW0tZXJyb3Itcm91dGVfX2BcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBtYXRjaGVzOiBbXG4gICAgICB7XG4gICAgICAgIHBhcmFtczoge30sXG4gICAgICAgIHBhdGhuYW1lOiBcIlwiLFxuICAgICAgICBwYXRobmFtZUJhc2U6IFwiXCIsXG4gICAgICAgIHJvdXRlXG4gICAgICB9XG4gICAgXSxcbiAgICByb3V0ZVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcihzdGF0dXMsIHtcbiAgcGF0aG5hbWUsXG4gIHJvdXRlSWQsXG4gIG1ldGhvZCxcbiAgdHlwZSxcbiAgbWVzc2FnZVxufSA9IHt9KSB7XG4gIGxldCBzdGF0dXNUZXh0ID0gXCJVbmtub3duIFNlcnZlciBFcnJvclwiO1xuICBsZXQgZXJyb3JNZXNzYWdlID0gXCJVbmtub3duIEByZW1peC1ydW4vcm91dGVyIGVycm9yXCI7XG4gIGlmIChzdGF0dXMgPT09IDQwMCkge1xuICAgIHN0YXR1c1RleHQgPSBcIkJhZCBSZXF1ZXN0XCI7XG4gICAgaWYgKG1ldGhvZCAmJiBwYXRobmFtZSAmJiByb3V0ZUlkKSB7XG4gICAgICBlcnJvck1lc3NhZ2UgPSBgWW91IG1hZGUgYSAke21ldGhvZH0gcmVxdWVzdCB0byBcIiR7cGF0aG5hbWV9XCIgYnV0IGRpZCBub3QgcHJvdmlkZSBhIFxcYGxvYWRlclxcYCBmb3Igcm91dGUgXCIke3JvdXRlSWR9XCIsIHNvIHRoZXJlIGlzIG5vIHdheSB0byBoYW5kbGUgdGhlIHJlcXVlc3QuYDtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiaW52YWxpZC1ib2R5XCIpIHtcbiAgICAgIGVycm9yTWVzc2FnZSA9IFwiVW5hYmxlIHRvIGVuY29kZSBzdWJtaXNzaW9uIGJvZHlcIjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoc3RhdHVzID09PSA0MDMpIHtcbiAgICBzdGF0dXNUZXh0ID0gXCJGb3JiaWRkZW5cIjtcbiAgICBlcnJvck1lc3NhZ2UgPSBgUm91dGUgXCIke3JvdXRlSWR9XCIgZG9lcyBub3QgbWF0Y2ggVVJMIFwiJHtwYXRobmFtZX1cImA7XG4gIH0gZWxzZSBpZiAoc3RhdHVzID09PSA0MDQpIHtcbiAgICBzdGF0dXNUZXh0ID0gXCJOb3QgRm91bmRcIjtcbiAgICBlcnJvck1lc3NhZ2UgPSBgTm8gcm91dGUgbWF0Y2hlcyBVUkwgXCIke3BhdGhuYW1lfVwiYDtcbiAgfSBlbHNlIGlmIChzdGF0dXMgPT09IDQwNSkge1xuICAgIHN0YXR1c1RleHQgPSBcIk1ldGhvZCBOb3QgQWxsb3dlZFwiO1xuICAgIGlmIChtZXRob2QgJiYgcGF0aG5hbWUgJiYgcm91dGVJZCkge1xuICAgICAgZXJyb3JNZXNzYWdlID0gYFlvdSBtYWRlIGEgJHttZXRob2QudG9VcHBlckNhc2UoKX0gcmVxdWVzdCB0byBcIiR7cGF0aG5hbWV9XCIgYnV0IGRpZCBub3QgcHJvdmlkZSBhbiBcXGBhY3Rpb25cXGAgZm9yIHJvdXRlIFwiJHtyb3V0ZUlkfVwiLCBzbyB0aGVyZSBpcyBubyB3YXkgdG8gaGFuZGxlIHRoZSByZXF1ZXN0LmA7XG4gICAgfSBlbHNlIGlmIChtZXRob2QpIHtcbiAgICAgIGVycm9yTWVzc2FnZSA9IGBJbnZhbGlkIHJlcXVlc3QgbWV0aG9kIFwiJHttZXRob2QudG9VcHBlckNhc2UoKX1cImA7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZXcgRXJyb3JSZXNwb25zZUltcGwoXG4gICAgc3RhdHVzIHx8IDUwMCxcbiAgICBzdGF0dXNUZXh0LFxuICAgIG5ldyBFcnJvcihlcnJvck1lc3NhZ2UpLFxuICAgIHRydWVcbiAgKTtcbn1cbmZ1bmN0aW9uIGZpbmRSZWRpcmVjdChyZXN1bHRzKSB7XG4gIGxldCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMocmVzdWx0cyk7XG4gIGZvciAobGV0IGkgPSBlbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgbGV0IFtrZXksIHJlc3VsdF0gPSBlbnRyaWVzW2ldO1xuICAgIGlmIChpc1JlZGlyZWN0UmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgIHJldHVybiB7IGtleSwgcmVzdWx0IH07XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBzdHJpcEhhc2hGcm9tUGF0aChwYXRoKSB7XG4gIGxldCBwYXJzZWRQYXRoID0gdHlwZW9mIHBhdGggPT09IFwic3RyaW5nXCIgPyBwYXJzZVBhdGgocGF0aCkgOiBwYXRoO1xuICByZXR1cm4gY3JlYXRlUGF0aCh7IC4uLnBhcnNlZFBhdGgsIGhhc2g6IFwiXCIgfSk7XG59XG5mdW5jdGlvbiBpc0hhc2hDaGFuZ2VPbmx5KGEsIGIpIHtcbiAgaWYgKGEucGF0aG5hbWUgIT09IGIucGF0aG5hbWUgfHwgYS5zZWFyY2ggIT09IGIuc2VhcmNoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChhLmhhc2ggPT09IFwiXCIpIHtcbiAgICByZXR1cm4gYi5oYXNoICE9PSBcIlwiO1xuICB9IGVsc2UgaWYgKGEuaGFzaCA9PT0gYi5oYXNoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoYi5oYXNoICE9PSBcIlwiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gaXNEYXRhU3RyYXRlZ3lSZXN1bHQocmVzdWx0KSB7XG4gIHJldHVybiByZXN1bHQgIT0gbnVsbCAmJiB0eXBlb2YgcmVzdWx0ID09PSBcIm9iamVjdFwiICYmIFwidHlwZVwiIGluIHJlc3VsdCAmJiBcInJlc3VsdFwiIGluIHJlc3VsdCAmJiAocmVzdWx0LnR5cGUgPT09IFwiZGF0YVwiIC8qIGRhdGEgKi8gfHwgcmVzdWx0LnR5cGUgPT09IFwiZXJyb3JcIiAvKiBlcnJvciAqLyk7XG59XG5mdW5jdGlvbiBpc1JlZGlyZWN0RGF0YVN0cmF0ZWd5UmVzdWx0KHJlc3VsdCkge1xuICByZXR1cm4gaXNSZXNwb25zZShyZXN1bHQucmVzdWx0KSAmJiByZWRpcmVjdFN0YXR1c0NvZGVzLmhhcyhyZXN1bHQucmVzdWx0LnN0YXR1cyk7XG59XG5mdW5jdGlvbiBpc0Vycm9yUmVzdWx0KHJlc3VsdCkge1xuICByZXR1cm4gcmVzdWx0LnR5cGUgPT09IFwiZXJyb3JcIiAvKiBlcnJvciAqLztcbn1cbmZ1bmN0aW9uIGlzUmVkaXJlY3RSZXN1bHQocmVzdWx0KSB7XG4gIHJldHVybiAocmVzdWx0ICYmIHJlc3VsdC50eXBlKSA9PT0gXCJyZWRpcmVjdFwiIC8qIHJlZGlyZWN0ICovO1xufVxuZnVuY3Rpb24gaXNEYXRhV2l0aFJlc3BvbnNlSW5pdCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9IG51bGwgJiYgXCJ0eXBlXCIgaW4gdmFsdWUgJiYgXCJkYXRhXCIgaW4gdmFsdWUgJiYgXCJpbml0XCIgaW4gdmFsdWUgJiYgdmFsdWUudHlwZSA9PT0gXCJEYXRhV2l0aFJlc3BvbnNlSW5pdFwiO1xufVxuZnVuY3Rpb24gaXNSZXNwb25zZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUuc3RhdHVzID09PSBcIm51bWJlclwiICYmIHR5cGVvZiB2YWx1ZS5zdGF0dXNUZXh0ID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiB2YWx1ZS5oZWFkZXJzID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiB2YWx1ZS5ib2R5ICE9PSBcInVuZGVmaW5lZFwiO1xufVxuZnVuY3Rpb24gaXNSZWRpcmVjdFN0YXR1c0NvZGUoc3RhdHVzQ29kZSkge1xuICByZXR1cm4gcmVkaXJlY3RTdGF0dXNDb2Rlcy5oYXMoc3RhdHVzQ29kZSk7XG59XG5mdW5jdGlvbiBpc1JlZGlyZWN0UmVzcG9uc2UocmVzdWx0KSB7XG4gIHJldHVybiBpc1Jlc3BvbnNlKHJlc3VsdCkgJiYgaXNSZWRpcmVjdFN0YXR1c0NvZGUocmVzdWx0LnN0YXR1cykgJiYgcmVzdWx0LmhlYWRlcnMuaGFzKFwiTG9jYXRpb25cIik7XG59XG5mdW5jdGlvbiBpc1ZhbGlkTWV0aG9kKG1ldGhvZCkge1xuICByZXR1cm4gdmFsaWRSZXF1ZXN0TWV0aG9kcy5oYXMobWV0aG9kLnRvVXBwZXJDYXNlKCkpO1xufVxuZnVuY3Rpb24gaXNNdXRhdGlvbk1ldGhvZChtZXRob2QpIHtcbiAgcmV0dXJuIHZhbGlkTXV0YXRpb25NZXRob2RzLmhhcyhtZXRob2QudG9VcHBlckNhc2UoKSk7XG59XG5mdW5jdGlvbiBoYXNOYWtlZEluZGV4UXVlcnkoc2VhcmNoKSB7XG4gIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zKHNlYXJjaCkuZ2V0QWxsKFwiaW5kZXhcIikuc29tZSgodikgPT4gdiA9PT0gXCJcIik7XG59XG5mdW5jdGlvbiBnZXRUYXJnZXRNYXRjaChtYXRjaGVzLCBsb2NhdGlvbikge1xuICBsZXQgc2VhcmNoID0gdHlwZW9mIGxvY2F0aW9uID09PSBcInN0cmluZ1wiID8gcGFyc2VQYXRoKGxvY2F0aW9uKS5zZWFyY2ggOiBsb2NhdGlvbi5zZWFyY2g7XG4gIGlmIChtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV0ucm91dGUuaW5kZXggJiYgaGFzTmFrZWRJbmRleFF1ZXJ5KHNlYXJjaCB8fCBcIlwiKSkge1xuICAgIHJldHVybiBtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV07XG4gIH1cbiAgbGV0IHBhdGhNYXRjaGVzID0gZ2V0UGF0aENvbnRyaWJ1dGluZ01hdGNoZXMobWF0Y2hlcyk7XG4gIHJldHVybiBwYXRoTWF0Y2hlc1twYXRoTWF0Y2hlcy5sZW5ndGggLSAxXTtcbn1cbmZ1bmN0aW9uIGdldFN1Ym1pc3Npb25Gcm9tTmF2aWdhdGlvbihuYXZpZ2F0aW9uKSB7XG4gIGxldCB7IGZvcm1NZXRob2QsIGZvcm1BY3Rpb24sIGZvcm1FbmNUeXBlLCB0ZXh0LCBmb3JtRGF0YSwganNvbiB9ID0gbmF2aWdhdGlvbjtcbiAgaWYgKCFmb3JtTWV0aG9kIHx8ICFmb3JtQWN0aW9uIHx8ICFmb3JtRW5jVHlwZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAodGV4dCAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvcm1NZXRob2QsXG4gICAgICBmb3JtQWN0aW9uLFxuICAgICAgZm9ybUVuY1R5cGUsXG4gICAgICBmb3JtRGF0YTogdm9pZCAwLFxuICAgICAganNvbjogdm9pZCAwLFxuICAgICAgdGV4dFxuICAgIH07XG4gIH0gZWxzZSBpZiAoZm9ybURhdGEgIT0gbnVsbCkge1xuICAgIHJldHVybiB7XG4gICAgICBmb3JtTWV0aG9kLFxuICAgICAgZm9ybUFjdGlvbixcbiAgICAgIGZvcm1FbmNUeXBlLFxuICAgICAgZm9ybURhdGEsXG4gICAgICBqc29uOiB2b2lkIDAsXG4gICAgICB0ZXh0OiB2b2lkIDBcbiAgICB9O1xuICB9IGVsc2UgaWYgKGpzb24gIT09IHZvaWQgMCkge1xuICAgIHJldHVybiB7XG4gICAgICBmb3JtTWV0aG9kLFxuICAgICAgZm9ybUFjdGlvbixcbiAgICAgIGZvcm1FbmNUeXBlLFxuICAgICAgZm9ybURhdGE6IHZvaWQgMCxcbiAgICAgIGpzb24sXG4gICAgICB0ZXh0OiB2b2lkIDBcbiAgICB9O1xuICB9XG59XG5mdW5jdGlvbiBnZXRMb2FkaW5nTmF2aWdhdGlvbihsb2NhdGlvbiwgc3VibWlzc2lvbikge1xuICBpZiAoc3VibWlzc2lvbikge1xuICAgIGxldCBuYXZpZ2F0aW9uID0ge1xuICAgICAgc3RhdGU6IFwibG9hZGluZ1wiLFxuICAgICAgbG9jYXRpb24sXG4gICAgICBmb3JtTWV0aG9kOiBzdWJtaXNzaW9uLmZvcm1NZXRob2QsXG4gICAgICBmb3JtQWN0aW9uOiBzdWJtaXNzaW9uLmZvcm1BY3Rpb24sXG4gICAgICBmb3JtRW5jVHlwZTogc3VibWlzc2lvbi5mb3JtRW5jVHlwZSxcbiAgICAgIGZvcm1EYXRhOiBzdWJtaXNzaW9uLmZvcm1EYXRhLFxuICAgICAganNvbjogc3VibWlzc2lvbi5qc29uLFxuICAgICAgdGV4dDogc3VibWlzc2lvbi50ZXh0XG4gICAgfTtcbiAgICByZXR1cm4gbmF2aWdhdGlvbjtcbiAgfSBlbHNlIHtcbiAgICBsZXQgbmF2aWdhdGlvbiA9IHtcbiAgICAgIHN0YXRlOiBcImxvYWRpbmdcIixcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgZm9ybU1ldGhvZDogdm9pZCAwLFxuICAgICAgZm9ybUFjdGlvbjogdm9pZCAwLFxuICAgICAgZm9ybUVuY1R5cGU6IHZvaWQgMCxcbiAgICAgIGZvcm1EYXRhOiB2b2lkIDAsXG4gICAgICBqc29uOiB2b2lkIDAsXG4gICAgICB0ZXh0OiB2b2lkIDBcbiAgICB9O1xuICAgIHJldHVybiBuYXZpZ2F0aW9uO1xuICB9XG59XG5mdW5jdGlvbiBnZXRTdWJtaXR0aW5nTmF2aWdhdGlvbihsb2NhdGlvbiwgc3VibWlzc2lvbikge1xuICBsZXQgbmF2aWdhdGlvbiA9IHtcbiAgICBzdGF0ZTogXCJzdWJtaXR0aW5nXCIsXG4gICAgbG9jYXRpb24sXG4gICAgZm9ybU1ldGhvZDogc3VibWlzc2lvbi5mb3JtTWV0aG9kLFxuICAgIGZvcm1BY3Rpb246IHN1Ym1pc3Npb24uZm9ybUFjdGlvbixcbiAgICBmb3JtRW5jVHlwZTogc3VibWlzc2lvbi5mb3JtRW5jVHlwZSxcbiAgICBmb3JtRGF0YTogc3VibWlzc2lvbi5mb3JtRGF0YSxcbiAgICBqc29uOiBzdWJtaXNzaW9uLmpzb24sXG4gICAgdGV4dDogc3VibWlzc2lvbi50ZXh0XG4gIH07XG4gIHJldHVybiBuYXZpZ2F0aW9uO1xufVxuZnVuY3Rpb24gZ2V0TG9hZGluZ0ZldGNoZXIoc3VibWlzc2lvbiwgZGF0YTIpIHtcbiAgaWYgKHN1Ym1pc3Npb24pIHtcbiAgICBsZXQgZmV0Y2hlciA9IHtcbiAgICAgIHN0YXRlOiBcImxvYWRpbmdcIixcbiAgICAgIGZvcm1NZXRob2Q6IHN1Ym1pc3Npb24uZm9ybU1ldGhvZCxcbiAgICAgIGZvcm1BY3Rpb246IHN1Ym1pc3Npb24uZm9ybUFjdGlvbixcbiAgICAgIGZvcm1FbmNUeXBlOiBzdWJtaXNzaW9uLmZvcm1FbmNUeXBlLFxuICAgICAgZm9ybURhdGE6IHN1Ym1pc3Npb24uZm9ybURhdGEsXG4gICAgICBqc29uOiBzdWJtaXNzaW9uLmpzb24sXG4gICAgICB0ZXh0OiBzdWJtaXNzaW9uLnRleHQsXG4gICAgICBkYXRhOiBkYXRhMlxuICAgIH07XG4gICAgcmV0dXJuIGZldGNoZXI7XG4gIH0gZWxzZSB7XG4gICAgbGV0IGZldGNoZXIgPSB7XG4gICAgICBzdGF0ZTogXCJsb2FkaW5nXCIsXG4gICAgICBmb3JtTWV0aG9kOiB2b2lkIDAsXG4gICAgICBmb3JtQWN0aW9uOiB2b2lkIDAsXG4gICAgICBmb3JtRW5jVHlwZTogdm9pZCAwLFxuICAgICAgZm9ybURhdGE6IHZvaWQgMCxcbiAgICAgIGpzb246IHZvaWQgMCxcbiAgICAgIHRleHQ6IHZvaWQgMCxcbiAgICAgIGRhdGE6IGRhdGEyXG4gICAgfTtcbiAgICByZXR1cm4gZmV0Y2hlcjtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0U3VibWl0dGluZ0ZldGNoZXIoc3VibWlzc2lvbiwgZXhpc3RpbmdGZXRjaGVyKSB7XG4gIGxldCBmZXRjaGVyID0ge1xuICAgIHN0YXRlOiBcInN1Ym1pdHRpbmdcIixcbiAgICBmb3JtTWV0aG9kOiBzdWJtaXNzaW9uLmZvcm1NZXRob2QsXG4gICAgZm9ybUFjdGlvbjogc3VibWlzc2lvbi5mb3JtQWN0aW9uLFxuICAgIGZvcm1FbmNUeXBlOiBzdWJtaXNzaW9uLmZvcm1FbmNUeXBlLFxuICAgIGZvcm1EYXRhOiBzdWJtaXNzaW9uLmZvcm1EYXRhLFxuICAgIGpzb246IHN1Ym1pc3Npb24uanNvbixcbiAgICB0ZXh0OiBzdWJtaXNzaW9uLnRleHQsXG4gICAgZGF0YTogZXhpc3RpbmdGZXRjaGVyID8gZXhpc3RpbmdGZXRjaGVyLmRhdGEgOiB2b2lkIDBcbiAgfTtcbiAgcmV0dXJuIGZldGNoZXI7XG59XG5mdW5jdGlvbiBnZXREb25lRmV0Y2hlcihkYXRhMikge1xuICBsZXQgZmV0Y2hlciA9IHtcbiAgICBzdGF0ZTogXCJpZGxlXCIsXG4gICAgZm9ybU1ldGhvZDogdm9pZCAwLFxuICAgIGZvcm1BY3Rpb246IHZvaWQgMCxcbiAgICBmb3JtRW5jVHlwZTogdm9pZCAwLFxuICAgIGZvcm1EYXRhOiB2b2lkIDAsXG4gICAganNvbjogdm9pZCAwLFxuICAgIHRleHQ6IHZvaWQgMCxcbiAgICBkYXRhOiBkYXRhMlxuICB9O1xuICByZXR1cm4gZmV0Y2hlcjtcbn1cbmZ1bmN0aW9uIHJlc3RvcmVBcHBsaWVkVHJhbnNpdGlvbnMoX3dpbmRvdywgdHJhbnNpdGlvbnMpIHtcbiAgdHJ5IHtcbiAgICBsZXQgc2Vzc2lvblBvc2l0aW9ucyA9IF93aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcbiAgICAgIFRSQU5TSVRJT05TX1NUT1JBR0VfS0VZXG4gICAgKTtcbiAgICBpZiAoc2Vzc2lvblBvc2l0aW9ucykge1xuICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKHNlc3Npb25Qb3NpdGlvbnMpO1xuICAgICAgZm9yIChsZXQgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGpzb24gfHwge30pKSB7XG4gICAgICAgIGlmICh2ICYmIEFycmF5LmlzQXJyYXkodikpIHtcbiAgICAgICAgICB0cmFuc2l0aW9ucy5zZXQoaywgbmV3IFNldCh2IHx8IFtdKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxufVxuZnVuY3Rpb24gcGVyc2lzdEFwcGxpZWRUcmFuc2l0aW9ucyhfd2luZG93LCB0cmFuc2l0aW9ucykge1xuICBpZiAodHJhbnNpdGlvbnMuc2l6ZSA+IDApIHtcbiAgICBsZXQganNvbiA9IHt9O1xuICAgIGZvciAobGV0IFtrLCB2XSBvZiB0cmFuc2l0aW9ucykge1xuICAgICAganNvbltrXSA9IFsuLi52XTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIF93aW5kb3cuc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgVFJBTlNJVElPTlNfU1RPUkFHRV9LRVksXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGpzb24pXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB3YXJuaW5nKFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgYEZhaWxlZCB0byBzYXZlIGFwcGxpZWQgdmlldyB0cmFuc2l0aW9ucyBpbiBzZXNzaW9uU3RvcmFnZSAoJHtlcnJvcn0pLmBcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBjcmVhdGVEZWZlcnJlZCgpIHtcbiAgbGV0IHJlc29sdmU7XG4gIGxldCByZWplY3Q7XG4gIGxldCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7XG4gICAgcmVzb2x2ZSA9IGFzeW5jICh2YWwpID0+IHtcbiAgICAgIHJlcyh2YWwpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgcHJvbWlzZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJlamVjdCA9IGFzeW5jIChlcnJvcikgPT4ge1xuICAgICAgcmVqKGVycm9yKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHByb21pc2U7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgcHJvbWlzZSxcbiAgICAvL0B0cy1pZ25vcmVcbiAgICByZXNvbHZlLFxuICAgIC8vQHRzLWlnbm9yZVxuICAgIHJlamVjdFxuICB9O1xufVxuXG4vLyBsaWIvY29tcG9uZW50cy50c3hcbmltcG9ydCAqIGFzIFJlYWN0MyBmcm9tIFwicmVhY3RcIjtcblxuLy8gbGliL2NvbnRleHQudHNcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xudmFyIERhdGFSb3V0ZXJDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbkRhdGFSb3V0ZXJDb250ZXh0LmRpc3BsYXlOYW1lID0gXCJEYXRhUm91dGVyXCI7XG52YXIgRGF0YVJvdXRlclN0YXRlQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5EYXRhUm91dGVyU3RhdGVDb250ZXh0LmRpc3BsYXlOYW1lID0gXCJEYXRhUm91dGVyU3RhdGVcIjtcbnZhciBWaWV3VHJhbnNpdGlvbkNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgaXNUcmFuc2l0aW9uaW5nOiBmYWxzZVxufSk7XG5WaWV3VHJhbnNpdGlvbkNvbnRleHQuZGlzcGxheU5hbWUgPSBcIlZpZXdUcmFuc2l0aW9uXCI7XG52YXIgRmV0Y2hlcnNDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChcbiAgLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKVxuKTtcbkZldGNoZXJzQ29udGV4dC5kaXNwbGF5TmFtZSA9IFwiRmV0Y2hlcnNcIjtcbnZhciBBd2FpdENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuQXdhaXRDb250ZXh0LmRpc3BsYXlOYW1lID0gXCJBd2FpdFwiO1xudmFyIE5hdmlnYXRpb25Db250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChcbiAgbnVsbFxuKTtcbk5hdmlnYXRpb25Db250ZXh0LmRpc3BsYXlOYW1lID0gXCJOYXZpZ2F0aW9uXCI7XG52YXIgTG9jYXRpb25Db250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChcbiAgbnVsbFxuKTtcbkxvY2F0aW9uQ29udGV4dC5kaXNwbGF5TmFtZSA9IFwiTG9jYXRpb25cIjtcbnZhciBSb3V0ZUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgb3V0bGV0OiBudWxsLFxuICBtYXRjaGVzOiBbXSxcbiAgaXNEYXRhUm91dGU6IGZhbHNlXG59KTtcblJvdXRlQ29udGV4dC5kaXNwbGF5TmFtZSA9IFwiUm91dGVcIjtcbnZhciBSb3V0ZUVycm9yQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5Sb3V0ZUVycm9yQ29udGV4dC5kaXNwbGF5TmFtZSA9IFwiUm91dGVFcnJvclwiO1xuXG4vLyBsaWIvaG9va3MudHN4XG5pbXBvcnQgKiBhcyBSZWFjdDIgZnJvbSBcInJlYWN0XCI7XG52YXIgRU5BQkxFX0RFVl9XQVJOSU5HUyA9IHRydWU7XG5mdW5jdGlvbiB1c2VIcmVmKHRvLCB7IHJlbGF0aXZlIH0gPSB7fSkge1xuICBpbnZhcmlhbnQoXG4gICAgdXNlSW5Sb3V0ZXJDb250ZXh0KCksXG4gICAgLy8gVE9ETzogVGhpcyBlcnJvciBpcyBwcm9iYWJseSBiZWNhdXNlIHRoZXkgc29tZWhvdyBoYXZlIDIgdmVyc2lvbnMgb2YgdGhlXG4gICAgLy8gcm91dGVyIGxvYWRlZC4gV2UgY2FuIGhlbHAgdGhlbSB1bmRlcnN0YW5kIGhvdyB0byBhdm9pZCB0aGF0LlxuICAgIGB1c2VIcmVmKCkgbWF5IGJlIHVzZWQgb25seSBpbiB0aGUgY29udGV4dCBvZiBhIDxSb3V0ZXI+IGNvbXBvbmVudC5gXG4gICk7XG4gIGxldCB7IGJhc2VuYW1lLCBuYXZpZ2F0b3I6IG5hdmlnYXRvcjIgfSA9IFJlYWN0Mi51c2VDb250ZXh0KE5hdmlnYXRpb25Db250ZXh0KTtcbiAgbGV0IHsgaGFzaCwgcGF0aG5hbWUsIHNlYXJjaCB9ID0gdXNlUmVzb2x2ZWRQYXRoKHRvLCB7IHJlbGF0aXZlIH0pO1xuICBsZXQgam9pbmVkUGF0aG5hbWUgPSBwYXRobmFtZTtcbiAgaWYgKGJhc2VuYW1lICE9PSBcIi9cIikge1xuICAgIGpvaW5lZFBhdGhuYW1lID0gcGF0aG5hbWUgPT09IFwiL1wiID8gYmFzZW5hbWUgOiBqb2luUGF0aHMoW2Jhc2VuYW1lLCBwYXRobmFtZV0pO1xuICB9XG4gIHJldHVybiBuYXZpZ2F0b3IyLmNyZWF0ZUhyZWYoeyBwYXRobmFtZTogam9pbmVkUGF0aG5hbWUsIHNlYXJjaCwgaGFzaCB9KTtcbn1cbmZ1bmN0aW9uIHVzZUluUm91dGVyQ29udGV4dCgpIHtcbiAgcmV0dXJuIFJlYWN0Mi51c2VDb250ZXh0KExvY2F0aW9uQ29udGV4dCkgIT0gbnVsbDtcbn1cbmZ1bmN0aW9uIHVzZUxvY2F0aW9uKCkge1xuICBpbnZhcmlhbnQoXG4gICAgdXNlSW5Sb3V0ZXJDb250ZXh0KCksXG4gICAgLy8gVE9ETzogVGhpcyBlcnJvciBpcyBwcm9iYWJseSBiZWNhdXNlIHRoZXkgc29tZWhvdyBoYXZlIDIgdmVyc2lvbnMgb2YgdGhlXG4gICAgLy8gcm91dGVyIGxvYWRlZC4gV2UgY2FuIGhlbHAgdGhlbSB1bmRlcnN0YW5kIGhvdyB0byBhdm9pZCB0aGF0LlxuICAgIGB1c2VMb2NhdGlvbigpIG1heSBiZSB1c2VkIG9ubHkgaW4gdGhlIGNvbnRleHQgb2YgYSA8Um91dGVyPiBjb21wb25lbnQuYFxuICApO1xuICByZXR1cm4gUmVhY3QyLnVzZUNvbnRleHQoTG9jYXRpb25Db250ZXh0KS5sb2NhdGlvbjtcbn1cbmZ1bmN0aW9uIHVzZU5hdmlnYXRpb25UeXBlKCkge1xuICByZXR1cm4gUmVhY3QyLnVzZUNvbnRleHQoTG9jYXRpb25Db250ZXh0KS5uYXZpZ2F0aW9uVHlwZTtcbn1cbmZ1bmN0aW9uIHVzZU1hdGNoKHBhdHRlcm4pIHtcbiAgaW52YXJpYW50KFxuICAgIHVzZUluUm91dGVyQ29udGV4dCgpLFxuICAgIC8vIFRPRE86IFRoaXMgZXJyb3IgaXMgcHJvYmFibHkgYmVjYXVzZSB0aGV5IHNvbWVob3cgaGF2ZSAyIHZlcnNpb25zIG9mIHRoZVxuICAgIC8vIHJvdXRlciBsb2FkZWQuIFdlIGNhbiBoZWxwIHRoZW0gdW5kZXJzdGFuZCBob3cgdG8gYXZvaWQgdGhhdC5cbiAgICBgdXNlTWF0Y2goKSBtYXkgYmUgdXNlZCBvbmx5IGluIHRoZSBjb250ZXh0IG9mIGEgPFJvdXRlcj4gY29tcG9uZW50LmBcbiAgKTtcbiAgbGV0IHsgcGF0aG5hbWUgfSA9IHVzZUxvY2F0aW9uKCk7XG4gIHJldHVybiBSZWFjdDIudXNlTWVtbyhcbiAgICAoKSA9PiBtYXRjaFBhdGgocGF0dGVybiwgZGVjb2RlUGF0aChwYXRobmFtZSkpLFxuICAgIFtwYXRobmFtZSwgcGF0dGVybl1cbiAgKTtcbn1cbnZhciBuYXZpZ2F0ZUVmZmVjdFdhcm5pbmcgPSBgWW91IHNob3VsZCBjYWxsIG5hdmlnYXRlKCkgaW4gYSBSZWFjdC51c2VFZmZlY3QoKSwgbm90IHdoZW4geW91ciBjb21wb25lbnQgaXMgZmlyc3QgcmVuZGVyZWQuYDtcbmZ1bmN0aW9uIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QoY2IpIHtcbiAgbGV0IGlzU3RhdGljID0gUmVhY3QyLnVzZUNvbnRleHQoTmF2aWdhdGlvbkNvbnRleHQpLnN0YXRpYztcbiAgaWYgKCFpc1N0YXRpYykge1xuICAgIFJlYWN0Mi51c2VMYXlvdXRFZmZlY3QoY2IpO1xuICB9XG59XG5mdW5jdGlvbiB1c2VOYXZpZ2F0ZSgpIHtcbiAgbGV0IHsgaXNEYXRhUm91dGUgfSA9IFJlYWN0Mi51c2VDb250ZXh0KFJvdXRlQ29udGV4dCk7XG4gIHJldHVybiBpc0RhdGFSb3V0ZSA/IHVzZU5hdmlnYXRlU3RhYmxlKCkgOiB1c2VOYXZpZ2F0ZVVuc3RhYmxlKCk7XG59XG5mdW5jdGlvbiB1c2VOYXZpZ2F0ZVVuc3RhYmxlKCkge1xuICBpbnZhcmlhbnQoXG4gICAgdXNlSW5Sb3V0ZXJDb250ZXh0KCksXG4gICAgLy8gVE9ETzogVGhpcyBlcnJvciBpcyBwcm9iYWJseSBiZWNhdXNlIHRoZXkgc29tZWhvdyBoYXZlIDIgdmVyc2lvbnMgb2YgdGhlXG4gICAgLy8gcm91dGVyIGxvYWRlZC4gV2UgY2FuIGhlbHAgdGhlbSB1bmRlcnN0YW5kIGhvdyB0byBhdm9pZCB0aGF0LlxuICAgIGB1c2VOYXZpZ2F0ZSgpIG1heSBiZSB1c2VkIG9ubHkgaW4gdGhlIGNvbnRleHQgb2YgYSA8Um91dGVyPiBjb21wb25lbnQuYFxuICApO1xuICBsZXQgZGF0YVJvdXRlckNvbnRleHQgPSBSZWFjdDIudXNlQ29udGV4dChEYXRhUm91dGVyQ29udGV4dCk7XG4gIGxldCB7IGJhc2VuYW1lLCBuYXZpZ2F0b3I6IG5hdmlnYXRvcjIgfSA9IFJlYWN0Mi51c2VDb250ZXh0KE5hdmlnYXRpb25Db250ZXh0KTtcbiAgbGV0IHsgbWF0Y2hlcyB9ID0gUmVhY3QyLnVzZUNvbnRleHQoUm91dGVDb250ZXh0KTtcbiAgbGV0IHsgcGF0aG5hbWU6IGxvY2F0aW9uUGF0aG5hbWUgfSA9IHVzZUxvY2F0aW9uKCk7XG4gIGxldCByb3V0ZVBhdGhuYW1lc0pzb24gPSBKU09OLnN0cmluZ2lmeShnZXRSZXNvbHZlVG9NYXRjaGVzKG1hdGNoZXMpKTtcbiAgbGV0IGFjdGl2ZVJlZiA9IFJlYWN0Mi51c2VSZWYoZmFsc2UpO1xuICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBhY3RpdmVSZWYuY3VycmVudCA9IHRydWU7XG4gIH0pO1xuICBsZXQgbmF2aWdhdGUgPSBSZWFjdDIudXNlQ2FsbGJhY2soXG4gICAgKHRvLCBvcHRpb25zID0ge30pID0+IHtcbiAgICAgIHdhcm5pbmcoYWN0aXZlUmVmLmN1cnJlbnQsIG5hdmlnYXRlRWZmZWN0V2FybmluZyk7XG4gICAgICBpZiAoIWFjdGl2ZVJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgICBpZiAodHlwZW9mIHRvID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIG5hdmlnYXRvcjIuZ28odG8pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgcGF0aCA9IHJlc29sdmVUbyhcbiAgICAgICAgdG8sXG4gICAgICAgIEpTT04ucGFyc2Uocm91dGVQYXRobmFtZXNKc29uKSxcbiAgICAgICAgbG9jYXRpb25QYXRobmFtZSxcbiAgICAgICAgb3B0aW9ucy5yZWxhdGl2ZSA9PT0gXCJwYXRoXCJcbiAgICAgICk7XG4gICAgICBpZiAoZGF0YVJvdXRlckNvbnRleHQgPT0gbnVsbCAmJiBiYXNlbmFtZSAhPT0gXCIvXCIpIHtcbiAgICAgICAgcGF0aC5wYXRobmFtZSA9IHBhdGgucGF0aG5hbWUgPT09IFwiL1wiID8gYmFzZW5hbWUgOiBqb2luUGF0aHMoW2Jhc2VuYW1lLCBwYXRoLnBhdGhuYW1lXSk7XG4gICAgICB9XG4gICAgICAoISFvcHRpb25zLnJlcGxhY2UgPyBuYXZpZ2F0b3IyLnJlcGxhY2UgOiBuYXZpZ2F0b3IyLnB1c2gpKFxuICAgICAgICBwYXRoLFxuICAgICAgICBvcHRpb25zLnN0YXRlLFxuICAgICAgICBvcHRpb25zXG4gICAgICApO1xuICAgIH0sXG4gICAgW1xuICAgICAgYmFzZW5hbWUsXG4gICAgICBuYXZpZ2F0b3IyLFxuICAgICAgcm91dGVQYXRobmFtZXNKc29uLFxuICAgICAgbG9jYXRpb25QYXRobmFtZSxcbiAgICAgIGRhdGFSb3V0ZXJDb250ZXh0XG4gICAgXVxuICApO1xuICByZXR1cm4gbmF2aWdhdGU7XG59XG52YXIgT3V0bGV0Q29udGV4dCA9IFJlYWN0Mi5jcmVhdGVDb250ZXh0KG51bGwpO1xuZnVuY3Rpb24gdXNlT3V0bGV0Q29udGV4dCgpIHtcbiAgcmV0dXJuIFJlYWN0Mi51c2VDb250ZXh0KE91dGxldENvbnRleHQpO1xufVxuZnVuY3Rpb24gdXNlT3V0bGV0KGNvbnRleHQpIHtcbiAgbGV0IG91dGxldCA9IFJlYWN0Mi51c2VDb250ZXh0KFJvdXRlQ29udGV4dCkub3V0bGV0O1xuICBpZiAob3V0bGV0KSB7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChPdXRsZXRDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0IH0sIG91dGxldCk7XG4gIH1cbiAgcmV0dXJuIG91dGxldDtcbn1cbmZ1bmN0aW9uIHVzZVBhcmFtcygpIHtcbiAgbGV0IHsgbWF0Y2hlcyB9ID0gUmVhY3QyLnVzZUNvbnRleHQoUm91dGVDb250ZXh0KTtcbiAgbGV0IHJvdXRlTWF0Y2ggPSBtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV07XG4gIHJldHVybiByb3V0ZU1hdGNoID8gcm91dGVNYXRjaC5wYXJhbXMgOiB7fTtcbn1cbmZ1bmN0aW9uIHVzZVJlc29sdmVkUGF0aCh0bywgeyByZWxhdGl2ZSB9ID0ge30pIHtcbiAgbGV0IHsgbWF0Y2hlcyB9ID0gUmVhY3QyLnVzZUNvbnRleHQoUm91dGVDb250ZXh0KTtcbiAgbGV0IHsgcGF0aG5hbWU6IGxvY2F0aW9uUGF0aG5hbWUgfSA9IHVzZUxvY2F0aW9uKCk7XG4gIGxldCByb3V0ZVBhdGhuYW1lc0pzb24gPSBKU09OLnN0cmluZ2lmeShnZXRSZXNvbHZlVG9NYXRjaGVzKG1hdGNoZXMpKTtcbiAgcmV0dXJuIFJlYWN0Mi51c2VNZW1vKFxuICAgICgpID0+IHJlc29sdmVUbyhcbiAgICAgIHRvLFxuICAgICAgSlNPTi5wYXJzZShyb3V0ZVBhdGhuYW1lc0pzb24pLFxuICAgICAgbG9jYXRpb25QYXRobmFtZSxcbiAgICAgIHJlbGF0aXZlID09PSBcInBhdGhcIlxuICAgICksXG4gICAgW3RvLCByb3V0ZVBhdGhuYW1lc0pzb24sIGxvY2F0aW9uUGF0aG5hbWUsIHJlbGF0aXZlXVxuICApO1xufVxuZnVuY3Rpb24gdXNlUm91dGVzKHJvdXRlcywgbG9jYXRpb25BcmcpIHtcbiAgcmV0dXJuIHVzZVJvdXRlc0ltcGwocm91dGVzLCBsb2NhdGlvbkFyZyk7XG59XG5mdW5jdGlvbiB1c2VSb3V0ZXNJbXBsKHJvdXRlcywgbG9jYXRpb25BcmcsIGRhdGFSb3V0ZXJTdGF0ZSwgZnV0dXJlKSB7XG4gIGludmFyaWFudChcbiAgICB1c2VJblJvdXRlckNvbnRleHQoKSxcbiAgICAvLyBUT0RPOiBUaGlzIGVycm9yIGlzIHByb2JhYmx5IGJlY2F1c2UgdGhleSBzb21laG93IGhhdmUgMiB2ZXJzaW9ucyBvZiB0aGVcbiAgICAvLyByb3V0ZXIgbG9hZGVkLiBXZSBjYW4gaGVscCB0aGVtIHVuZGVyc3RhbmQgaG93IHRvIGF2b2lkIHRoYXQuXG4gICAgYHVzZVJvdXRlcygpIG1heSBiZSB1c2VkIG9ubHkgaW4gdGhlIGNvbnRleHQgb2YgYSA8Um91dGVyPiBjb21wb25lbnQuYFxuICApO1xuICBsZXQgeyBuYXZpZ2F0b3I6IG5hdmlnYXRvcjIgfSA9IFJlYWN0Mi51c2VDb250ZXh0KE5hdmlnYXRpb25Db250ZXh0KTtcbiAgbGV0IHsgbWF0Y2hlczogcGFyZW50TWF0Y2hlcyB9ID0gUmVhY3QyLnVzZUNvbnRleHQoUm91dGVDb250ZXh0KTtcbiAgbGV0IHJvdXRlTWF0Y2ggPSBwYXJlbnRNYXRjaGVzW3BhcmVudE1hdGNoZXMubGVuZ3RoIC0gMV07XG4gIGxldCBwYXJlbnRQYXJhbXMgPSByb3V0ZU1hdGNoID8gcm91dGVNYXRjaC5wYXJhbXMgOiB7fTtcbiAgbGV0IHBhcmVudFBhdGhuYW1lID0gcm91dGVNYXRjaCA/IHJvdXRlTWF0Y2gucGF0aG5hbWUgOiBcIi9cIjtcbiAgbGV0IHBhcmVudFBhdGhuYW1lQmFzZSA9IHJvdXRlTWF0Y2ggPyByb3V0ZU1hdGNoLnBhdGhuYW1lQmFzZSA6IFwiL1wiO1xuICBsZXQgcGFyZW50Um91dGUgPSByb3V0ZU1hdGNoICYmIHJvdXRlTWF0Y2gucm91dGU7XG4gIGlmIChFTkFCTEVfREVWX1dBUk5JTkdTKSB7XG4gICAgbGV0IHBhcmVudFBhdGggPSBwYXJlbnRSb3V0ZSAmJiBwYXJlbnRSb3V0ZS5wYXRoIHx8IFwiXCI7XG4gICAgd2FybmluZ09uY2UoXG4gICAgICBwYXJlbnRQYXRobmFtZSxcbiAgICAgICFwYXJlbnRSb3V0ZSB8fCBwYXJlbnRQYXRoLmVuZHNXaXRoKFwiKlwiKSB8fCBwYXJlbnRQYXRoLmVuZHNXaXRoKFwiKj9cIiksXG4gICAgICBgWW91IHJlbmRlcmVkIGRlc2NlbmRhbnQgPFJvdXRlcz4gKG9yIGNhbGxlZCBcXGB1c2VSb3V0ZXMoKVxcYCkgYXQgXCIke3BhcmVudFBhdGhuYW1lfVwiICh1bmRlciA8Um91dGUgcGF0aD1cIiR7cGFyZW50UGF0aH1cIj4pIGJ1dCB0aGUgcGFyZW50IHJvdXRlIHBhdGggaGFzIG5vIHRyYWlsaW5nIFwiKlwiLiBUaGlzIG1lYW5zIGlmIHlvdSBuYXZpZ2F0ZSBkZWVwZXIsIHRoZSBwYXJlbnQgd29uJ3QgbWF0Y2ggYW55bW9yZSBhbmQgdGhlcmVmb3JlIHRoZSBjaGlsZCByb3V0ZXMgd2lsbCBuZXZlciByZW5kZXIuXG5cblBsZWFzZSBjaGFuZ2UgdGhlIHBhcmVudCA8Um91dGUgcGF0aD1cIiR7cGFyZW50UGF0aH1cIj4gdG8gPFJvdXRlIHBhdGg9XCIke3BhcmVudFBhdGggPT09IFwiL1wiID8gXCIqXCIgOiBgJHtwYXJlbnRQYXRofS8qYH1cIj4uYFxuICAgICk7XG4gIH1cbiAgbGV0IGxvY2F0aW9uRnJvbUNvbnRleHQgPSB1c2VMb2NhdGlvbigpO1xuICBsZXQgbG9jYXRpb247XG4gIGlmIChsb2NhdGlvbkFyZykge1xuICAgIGxldCBwYXJzZWRMb2NhdGlvbkFyZyA9IHR5cGVvZiBsb2NhdGlvbkFyZyA9PT0gXCJzdHJpbmdcIiA/IHBhcnNlUGF0aChsb2NhdGlvbkFyZykgOiBsb2NhdGlvbkFyZztcbiAgICBpbnZhcmlhbnQoXG4gICAgICBwYXJlbnRQYXRobmFtZUJhc2UgPT09IFwiL1wiIHx8IHBhcnNlZExvY2F0aW9uQXJnLnBhdGhuYW1lPy5zdGFydHNXaXRoKHBhcmVudFBhdGhuYW1lQmFzZSksXG4gICAgICBgV2hlbiBvdmVycmlkaW5nIHRoZSBsb2NhdGlvbiB1c2luZyBcXGA8Um91dGVzIGxvY2F0aW9uPlxcYCBvciBcXGB1c2VSb3V0ZXMocm91dGVzLCBsb2NhdGlvbilcXGAsIHRoZSBsb2NhdGlvbiBwYXRobmFtZSBtdXN0IGJlZ2luIHdpdGggdGhlIHBvcnRpb24gb2YgdGhlIFVSTCBwYXRobmFtZSB0aGF0IHdhcyBtYXRjaGVkIGJ5IGFsbCBwYXJlbnQgcm91dGVzLiBUaGUgY3VycmVudCBwYXRobmFtZSBiYXNlIGlzIFwiJHtwYXJlbnRQYXRobmFtZUJhc2V9XCIgYnV0IHBhdGhuYW1lIFwiJHtwYXJzZWRMb2NhdGlvbkFyZy5wYXRobmFtZX1cIiB3YXMgZ2l2ZW4gaW4gdGhlIFxcYGxvY2F0aW9uXFxgIHByb3AuYFxuICAgICk7XG4gICAgbG9jYXRpb24gPSBwYXJzZWRMb2NhdGlvbkFyZztcbiAgfSBlbHNlIHtcbiAgICBsb2NhdGlvbiA9IGxvY2F0aW9uRnJvbUNvbnRleHQ7XG4gIH1cbiAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWUgfHwgXCIvXCI7XG4gIGxldCByZW1haW5pbmdQYXRobmFtZSA9IHBhdGhuYW1lO1xuICBpZiAocGFyZW50UGF0aG5hbWVCYXNlICE9PSBcIi9cIikge1xuICAgIGxldCBwYXJlbnRTZWdtZW50cyA9IHBhcmVudFBhdGhuYW1lQmFzZS5yZXBsYWNlKC9eXFwvLywgXCJcIikuc3BsaXQoXCIvXCIpO1xuICAgIGxldCBzZWdtZW50cyA9IHBhdGhuYW1lLnJlcGxhY2UoL15cXC8vLCBcIlwiKS5zcGxpdChcIi9cIik7XG4gICAgcmVtYWluaW5nUGF0aG5hbWUgPSBcIi9cIiArIHNlZ21lbnRzLnNsaWNlKHBhcmVudFNlZ21lbnRzLmxlbmd0aCkuam9pbihcIi9cIik7XG4gIH1cbiAgbGV0IG1hdGNoZXMgPSBtYXRjaFJvdXRlcyhyb3V0ZXMsIHsgcGF0aG5hbWU6IHJlbWFpbmluZ1BhdGhuYW1lIH0pO1xuICBpZiAoRU5BQkxFX0RFVl9XQVJOSU5HUykge1xuICAgIHdhcm5pbmcoXG4gICAgICBwYXJlbnRSb3V0ZSB8fCBtYXRjaGVzICE9IG51bGwsXG4gICAgICBgTm8gcm91dGVzIG1hdGNoZWQgbG9jYXRpb24gXCIke2xvY2F0aW9uLnBhdGhuYW1lfSR7bG9jYXRpb24uc2VhcmNofSR7bG9jYXRpb24uaGFzaH1cIiBgXG4gICAgKTtcbiAgICB3YXJuaW5nKFxuICAgICAgbWF0Y2hlcyA9PSBudWxsIHx8IG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXS5yb3V0ZS5lbGVtZW50ICE9PSB2b2lkIDAgfHwgbWF0Y2hlc1ttYXRjaGVzLmxlbmd0aCAtIDFdLnJvdXRlLkNvbXBvbmVudCAhPT0gdm9pZCAwIHx8IG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXS5yb3V0ZS5sYXp5ICE9PSB2b2lkIDAsXG4gICAgICBgTWF0Y2hlZCBsZWFmIHJvdXRlIGF0IGxvY2F0aW9uIFwiJHtsb2NhdGlvbi5wYXRobmFtZX0ke2xvY2F0aW9uLnNlYXJjaH0ke2xvY2F0aW9uLmhhc2h9XCIgZG9lcyBub3QgaGF2ZSBhbiBlbGVtZW50IG9yIENvbXBvbmVudC4gVGhpcyBtZWFucyBpdCB3aWxsIHJlbmRlciBhbiA8T3V0bGV0IC8+IHdpdGggYSBudWxsIHZhbHVlIGJ5IGRlZmF1bHQgcmVzdWx0aW5nIGluIGFuIFwiZW1wdHlcIiBwYWdlLmBcbiAgICApO1xuICB9XG4gIGxldCByZW5kZXJlZE1hdGNoZXMgPSBfcmVuZGVyTWF0Y2hlcyhcbiAgICBtYXRjaGVzICYmIG1hdGNoZXMubWFwKFxuICAgICAgKG1hdGNoKSA9PiBPYmplY3QuYXNzaWduKHt9LCBtYXRjaCwge1xuICAgICAgICBwYXJhbXM6IE9iamVjdC5hc3NpZ24oe30sIHBhcmVudFBhcmFtcywgbWF0Y2gucGFyYW1zKSxcbiAgICAgICAgcGF0aG5hbWU6IGpvaW5QYXRocyhbXG4gICAgICAgICAgcGFyZW50UGF0aG5hbWVCYXNlLFxuICAgICAgICAgIC8vIFJlLWVuY29kZSBwYXRobmFtZXMgdGhhdCB3ZXJlIGRlY29kZWQgaW5zaWRlIG1hdGNoUm91dGVzXG4gICAgICAgICAgbmF2aWdhdG9yMi5lbmNvZGVMb2NhdGlvbiA/IG5hdmlnYXRvcjIuZW5jb2RlTG9jYXRpb24obWF0Y2gucGF0aG5hbWUpLnBhdGhuYW1lIDogbWF0Y2gucGF0aG5hbWVcbiAgICAgICAgXSksXG4gICAgICAgIHBhdGhuYW1lQmFzZTogbWF0Y2gucGF0aG5hbWVCYXNlID09PSBcIi9cIiA/IHBhcmVudFBhdGhuYW1lQmFzZSA6IGpvaW5QYXRocyhbXG4gICAgICAgICAgcGFyZW50UGF0aG5hbWVCYXNlLFxuICAgICAgICAgIC8vIFJlLWVuY29kZSBwYXRobmFtZXMgdGhhdCB3ZXJlIGRlY29kZWQgaW5zaWRlIG1hdGNoUm91dGVzXG4gICAgICAgICAgbmF2aWdhdG9yMi5lbmNvZGVMb2NhdGlvbiA/IG5hdmlnYXRvcjIuZW5jb2RlTG9jYXRpb24obWF0Y2gucGF0aG5hbWVCYXNlKS5wYXRobmFtZSA6IG1hdGNoLnBhdGhuYW1lQmFzZVxuICAgICAgICBdKVxuICAgICAgfSlcbiAgICApLFxuICAgIHBhcmVudE1hdGNoZXMsXG4gICAgZGF0YVJvdXRlclN0YXRlLFxuICAgIGZ1dHVyZVxuICApO1xuICBpZiAobG9jYXRpb25BcmcgJiYgcmVuZGVyZWRNYXRjaGVzKSB7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChcbiAgICAgIExvY2F0aW9uQ29udGV4dC5Qcm92aWRlcixcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBsb2NhdGlvbjoge1xuICAgICAgICAgICAgcGF0aG5hbWU6IFwiL1wiLFxuICAgICAgICAgICAgc2VhcmNoOiBcIlwiLFxuICAgICAgICAgICAgaGFzaDogXCJcIixcbiAgICAgICAgICAgIHN0YXRlOiBudWxsLFxuICAgICAgICAgICAga2V5OiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIC4uLmxvY2F0aW9uXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuYXZpZ2F0aW9uVHlwZTogXCJQT1BcIiAvKiBQb3AgKi9cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJlbmRlcmVkTWF0Y2hlc1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIHJlbmRlcmVkTWF0Y2hlcztcbn1cbmZ1bmN0aW9uIERlZmF1bHRFcnJvckNvbXBvbmVudCgpIHtcbiAgbGV0IGVycm9yID0gdXNlUm91dGVFcnJvcigpO1xuICBsZXQgbWVzc2FnZSA9IGlzUm91dGVFcnJvclJlc3BvbnNlKGVycm9yKSA/IGAke2Vycm9yLnN0YXR1c30gJHtlcnJvci5zdGF0dXNUZXh0fWAgOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IEpTT04uc3RyaW5naWZ5KGVycm9yKTtcbiAgbGV0IHN0YWNrID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLnN0YWNrIDogbnVsbDtcbiAgbGV0IGxpZ2h0Z3JleSA9IFwicmdiYSgyMDAsMjAwLDIwMCwgMC41KVwiO1xuICBsZXQgcHJlU3R5bGVzID0geyBwYWRkaW5nOiBcIjAuNXJlbVwiLCBiYWNrZ3JvdW5kQ29sb3I6IGxpZ2h0Z3JleSB9O1xuICBsZXQgY29kZVN0eWxlcyA9IHsgcGFkZGluZzogXCIycHggNHB4XCIsIGJhY2tncm91bmRDb2xvcjogbGlnaHRncmV5IH07XG4gIGxldCBkZXZJbmZvID0gbnVsbDtcbiAgaWYgKEVOQUJMRV9ERVZfV0FSTklOR1MpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJFcnJvciBoYW5kbGVkIGJ5IFJlYWN0IFJvdXRlciBkZWZhdWx0IEVycm9yQm91bmRhcnk6XCIsXG4gICAgICBlcnJvclxuICAgICk7XG4gICAgZGV2SW5mbyA9IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChSZWFjdDIuRnJhZ21lbnQsIG51bGwsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChcInBcIiwgbnVsbCwgXCJcXHV7MUY0QkZ9IEhleSBkZXZlbG9wZXIgXFx1ezFGNDRCfVwiKSwgLyogQF9fUFVSRV9fICovIFJlYWN0Mi5jcmVhdGVFbGVtZW50KFwicFwiLCBudWxsLCBcIllvdSBjYW4gcHJvdmlkZSBhIHdheSBiZXR0ZXIgVVggdGhhbiB0aGlzIHdoZW4geW91ciBhcHAgdGhyb3dzIGVycm9ycyBieSBwcm92aWRpbmcgeW91ciBvd24gXCIsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChcImNvZGVcIiwgeyBzdHlsZTogY29kZVN0eWxlcyB9LCBcIkVycm9yQm91bmRhcnlcIiksIFwiIG9yXCIsIFwiIFwiLCAvKiBAX19QVVJFX18gKi8gUmVhY3QyLmNyZWF0ZUVsZW1lbnQoXCJjb2RlXCIsIHsgc3R5bGU6IGNvZGVTdHlsZXMgfSwgXCJlcnJvckVsZW1lbnRcIiksIFwiIHByb3Agb24geW91ciByb3V0ZS5cIikpO1xuICB9XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QyLmNyZWF0ZUVsZW1lbnQoUmVhY3QyLkZyYWdtZW50LCBudWxsLCAvKiBAX19QVVJFX18gKi8gUmVhY3QyLmNyZWF0ZUVsZW1lbnQoXCJoMlwiLCBudWxsLCBcIlVuZXhwZWN0ZWQgQXBwbGljYXRpb24gRXJyb3IhXCIpLCAvKiBAX19QVVJFX18gKi8gUmVhY3QyLmNyZWF0ZUVsZW1lbnQoXCJoM1wiLCB7IHN0eWxlOiB7IGZvbnRTdHlsZTogXCJpdGFsaWNcIiB9IH0sIG1lc3NhZ2UpLCBzdGFjayA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChcInByZVwiLCB7IHN0eWxlOiBwcmVTdHlsZXMgfSwgc3RhY2spIDogbnVsbCwgZGV2SW5mbyk7XG59XG52YXIgZGVmYXVsdEVycm9yRWxlbWVudCA9IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChEZWZhdWx0RXJyb3JDb21wb25lbnQsIG51bGwpO1xudmFyIFJlbmRlckVycm9yQm91bmRhcnkgPSBjbGFzcyBleHRlbmRzIFJlYWN0Mi5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgbG9jYXRpb246IHByb3BzLmxvY2F0aW9uLFxuICAgICAgcmV2YWxpZGF0aW9uOiBwcm9wcy5yZXZhbGlkYXRpb24sXG4gICAgICBlcnJvcjogcHJvcHMuZXJyb3JcbiAgICB9O1xuICB9XG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IoZXJyb3IpIHtcbiAgICByZXR1cm4geyBlcnJvciB9O1xuICB9XG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMocHJvcHMsIHN0YXRlKSB7XG4gICAgaWYgKHN0YXRlLmxvY2F0aW9uICE9PSBwcm9wcy5sb2NhdGlvbiB8fCBzdGF0ZS5yZXZhbGlkYXRpb24gIT09IFwiaWRsZVwiICYmIHByb3BzLnJldmFsaWRhdGlvbiA9PT0gXCJpZGxlXCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVycm9yOiBwcm9wcy5lcnJvcixcbiAgICAgICAgbG9jYXRpb246IHByb3BzLmxvY2F0aW9uLFxuICAgICAgICByZXZhbGlkYXRpb246IHByb3BzLnJldmFsaWRhdGlvblxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yOiBwcm9wcy5lcnJvciAhPT0gdm9pZCAwID8gcHJvcHMuZXJyb3IgOiBzdGF0ZS5lcnJvcixcbiAgICAgIGxvY2F0aW9uOiBzdGF0ZS5sb2NhdGlvbixcbiAgICAgIHJldmFsaWRhdGlvbjogcHJvcHMucmV2YWxpZGF0aW9uIHx8IHN0YXRlLnJldmFsaWRhdGlvblxuICAgIH07XG4gIH1cbiAgY29tcG9uZW50RGlkQ2F0Y2goZXJyb3IsIGVycm9ySW5mbykge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIlJlYWN0IFJvdXRlciBjYXVnaHQgdGhlIGZvbGxvd2luZyBlcnJvciBkdXJpbmcgcmVuZGVyXCIsXG4gICAgICBlcnJvcixcbiAgICAgIGVycm9ySW5mb1xuICAgICk7XG4gIH1cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmVycm9yICE9PSB2b2lkIDAgPyAvKiBAX19QVVJFX18gKi8gUmVhY3QyLmNyZWF0ZUVsZW1lbnQoUm91dGVDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB0aGlzLnByb3BzLnJvdXRlQ29udGV4dCB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QyLmNyZWF0ZUVsZW1lbnQoXG4gICAgICBSb3V0ZUVycm9yQ29udGV4dC5Qcm92aWRlcixcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IHRoaXMuc3RhdGUuZXJyb3IsXG4gICAgICAgIGNoaWxkcmVuOiB0aGlzLnByb3BzLmNvbXBvbmVudFxuICAgICAgfVxuICAgICkpIDogdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgfVxufTtcbmZ1bmN0aW9uIFJlbmRlcmVkUm91dGUoeyByb3V0ZUNvbnRleHQsIG1hdGNoLCBjaGlsZHJlbiB9KSB7XG4gIGxldCBkYXRhUm91dGVyQ29udGV4dCA9IFJlYWN0Mi51c2VDb250ZXh0KERhdGFSb3V0ZXJDb250ZXh0KTtcbiAgaWYgKGRhdGFSb3V0ZXJDb250ZXh0ICYmIGRhdGFSb3V0ZXJDb250ZXh0LnN0YXRpYyAmJiBkYXRhUm91dGVyQ29udGV4dC5zdGF0aWNDb250ZXh0ICYmIChtYXRjaC5yb3V0ZS5lcnJvckVsZW1lbnQgfHwgbWF0Y2gucm91dGUuRXJyb3JCb3VuZGFyeSkpIHtcbiAgICBkYXRhUm91dGVyQ29udGV4dC5zdGF0aWNDb250ZXh0Ll9kZWVwZXN0UmVuZGVyZWRCb3VuZGFyeUlkID0gbWF0Y2gucm91dGUuaWQ7XG4gIH1cbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChSb3V0ZUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHJvdXRlQ29udGV4dCB9LCBjaGlsZHJlbik7XG59XG5mdW5jdGlvbiBfcmVuZGVyTWF0Y2hlcyhtYXRjaGVzLCBwYXJlbnRNYXRjaGVzID0gW10sIGRhdGFSb3V0ZXJTdGF0ZSA9IG51bGwsIGZ1dHVyZSA9IG51bGwpIHtcbiAgaWYgKG1hdGNoZXMgPT0gbnVsbCkge1xuICAgIGlmICghZGF0YVJvdXRlclN0YXRlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKGRhdGFSb3V0ZXJTdGF0ZS5lcnJvcnMpIHtcbiAgICAgIG1hdGNoZXMgPSBkYXRhUm91dGVyU3RhdGUubWF0Y2hlcztcbiAgICB9IGVsc2UgaWYgKHBhcmVudE1hdGNoZXMubGVuZ3RoID09PSAwICYmICFkYXRhUm91dGVyU3RhdGUuaW5pdGlhbGl6ZWQgJiYgZGF0YVJvdXRlclN0YXRlLm1hdGNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgbWF0Y2hlcyA9IGRhdGFSb3V0ZXJTdGF0ZS5tYXRjaGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgbGV0IHJlbmRlcmVkTWF0Y2hlcyA9IG1hdGNoZXM7XG4gIGxldCBlcnJvcnMgPSBkYXRhUm91dGVyU3RhdGU/LmVycm9ycztcbiAgaWYgKGVycm9ycyAhPSBudWxsKSB7XG4gICAgbGV0IGVycm9ySW5kZXggPSByZW5kZXJlZE1hdGNoZXMuZmluZEluZGV4KFxuICAgICAgKG0pID0+IG0ucm91dGUuaWQgJiYgZXJyb3JzPy5bbS5yb3V0ZS5pZF0gIT09IHZvaWQgMFxuICAgICk7XG4gICAgaW52YXJpYW50KFxuICAgICAgZXJyb3JJbmRleCA+PSAwLFxuICAgICAgYENvdWxkIG5vdCBmaW5kIGEgbWF0Y2hpbmcgcm91dGUgZm9yIGVycm9ycyBvbiByb3V0ZSBJRHM6ICR7T2JqZWN0LmtleXMoXG4gICAgICAgIGVycm9yc1xuICAgICAgKS5qb2luKFwiLFwiKX1gXG4gICAgKTtcbiAgICByZW5kZXJlZE1hdGNoZXMgPSByZW5kZXJlZE1hdGNoZXMuc2xpY2UoXG4gICAgICAwLFxuICAgICAgTWF0aC5taW4ocmVuZGVyZWRNYXRjaGVzLmxlbmd0aCwgZXJyb3JJbmRleCArIDEpXG4gICAgKTtcbiAgfVxuICBsZXQgcmVuZGVyRmFsbGJhY2sgPSBmYWxzZTtcbiAgbGV0IGZhbGxiYWNrSW5kZXggPSAtMTtcbiAgaWYgKGRhdGFSb3V0ZXJTdGF0ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVuZGVyZWRNYXRjaGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbWF0Y2ggPSByZW5kZXJlZE1hdGNoZXNbaV07XG4gICAgICBpZiAobWF0Y2gucm91dGUuSHlkcmF0ZUZhbGxiYWNrIHx8IG1hdGNoLnJvdXRlLmh5ZHJhdGVGYWxsYmFja0VsZW1lbnQpIHtcbiAgICAgICAgZmFsbGJhY2tJbmRleCA9IGk7XG4gICAgICB9XG4gICAgICBpZiAobWF0Y2gucm91dGUuaWQpIHtcbiAgICAgICAgbGV0IHsgbG9hZGVyRGF0YSwgZXJyb3JzOiBlcnJvcnMyIH0gPSBkYXRhUm91dGVyU3RhdGU7XG4gICAgICAgIGxldCBuZWVkc1RvUnVuTG9hZGVyID0gbWF0Y2gucm91dGUubG9hZGVyICYmICFsb2FkZXJEYXRhLmhhc093blByb3BlcnR5KG1hdGNoLnJvdXRlLmlkKSAmJiAoIWVycm9yczIgfHwgZXJyb3JzMlttYXRjaC5yb3V0ZS5pZF0gPT09IHZvaWQgMCk7XG4gICAgICAgIGlmIChtYXRjaC5yb3V0ZS5sYXp5IHx8IG5lZWRzVG9SdW5Mb2FkZXIpIHtcbiAgICAgICAgICByZW5kZXJGYWxsYmFjayA9IHRydWU7XG4gICAgICAgICAgaWYgKGZhbGxiYWNrSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgcmVuZGVyZWRNYXRjaGVzID0gcmVuZGVyZWRNYXRjaGVzLnNsaWNlKDAsIGZhbGxiYWNrSW5kZXggKyAxKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVuZGVyZWRNYXRjaGVzID0gW3JlbmRlcmVkTWF0Y2hlc1swXV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZW5kZXJlZE1hdGNoZXMucmVkdWNlUmlnaHQoKG91dGxldCwgbWF0Y2gsIGluZGV4KSA9PiB7XG4gICAgbGV0IGVycm9yO1xuICAgIGxldCBzaG91bGRSZW5kZXJIeWRyYXRlRmFsbGJhY2sgPSBmYWxzZTtcbiAgICBsZXQgZXJyb3JFbGVtZW50ID0gbnVsbDtcbiAgICBsZXQgaHlkcmF0ZUZhbGxiYWNrRWxlbWVudCA9IG51bGw7XG4gICAgaWYgKGRhdGFSb3V0ZXJTdGF0ZSkge1xuICAgICAgZXJyb3IgPSBlcnJvcnMgJiYgbWF0Y2gucm91dGUuaWQgPyBlcnJvcnNbbWF0Y2gucm91dGUuaWRdIDogdm9pZCAwO1xuICAgICAgZXJyb3JFbGVtZW50ID0gbWF0Y2gucm91dGUuZXJyb3JFbGVtZW50IHx8IGRlZmF1bHRFcnJvckVsZW1lbnQ7XG4gICAgICBpZiAocmVuZGVyRmFsbGJhY2spIHtcbiAgICAgICAgaWYgKGZhbGxiYWNrSW5kZXggPCAwICYmIGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgd2FybmluZ09uY2UoXG4gICAgICAgICAgICBcInJvdXRlLWZhbGxiYWNrXCIsXG4gICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgIFwiTm8gYEh5ZHJhdGVGYWxsYmFja2AgZWxlbWVudCBwcm92aWRlZCB0byByZW5kZXIgZHVyaW5nIGluaXRpYWwgaHlkcmF0aW9uXCJcbiAgICAgICAgICApO1xuICAgICAgICAgIHNob3VsZFJlbmRlckh5ZHJhdGVGYWxsYmFjayA9IHRydWU7XG4gICAgICAgICAgaHlkcmF0ZUZhbGxiYWNrRWxlbWVudCA9IG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAoZmFsbGJhY2tJbmRleCA9PT0gaW5kZXgpIHtcbiAgICAgICAgICBzaG91bGRSZW5kZXJIeWRyYXRlRmFsbGJhY2sgPSB0cnVlO1xuICAgICAgICAgIGh5ZHJhdGVGYWxsYmFja0VsZW1lbnQgPSBtYXRjaC5yb3V0ZS5oeWRyYXRlRmFsbGJhY2tFbGVtZW50IHx8IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IG1hdGNoZXMyID0gcGFyZW50TWF0Y2hlcy5jb25jYXQocmVuZGVyZWRNYXRjaGVzLnNsaWNlKDAsIGluZGV4ICsgMSkpO1xuICAgIGxldCBnZXRDaGlsZHJlbiA9ICgpID0+IHtcbiAgICAgIGxldCBjaGlsZHJlbjtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICBjaGlsZHJlbiA9IGVycm9yRWxlbWVudDtcbiAgICAgIH0gZWxzZSBpZiAoc2hvdWxkUmVuZGVySHlkcmF0ZUZhbGxiYWNrKSB7XG4gICAgICAgIGNoaWxkcmVuID0gaHlkcmF0ZUZhbGxiYWNrRWxlbWVudDtcbiAgICAgIH0gZWxzZSBpZiAobWF0Y2gucm91dGUuQ29tcG9uZW50KSB7XG4gICAgICAgIGNoaWxkcmVuID0gLyogQF9fUFVSRV9fICovIFJlYWN0Mi5jcmVhdGVFbGVtZW50KG1hdGNoLnJvdXRlLkNvbXBvbmVudCwgbnVsbCk7XG4gICAgICB9IGVsc2UgaWYgKG1hdGNoLnJvdXRlLmVsZW1lbnQpIHtcbiAgICAgICAgY2hpbGRyZW4gPSBtYXRjaC5yb3V0ZS5lbGVtZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hpbGRyZW4gPSBvdXRsZXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0Mi5jcmVhdGVFbGVtZW50KFxuICAgICAgICBSZW5kZXJlZFJvdXRlLFxuICAgICAgICB7XG4gICAgICAgICAgbWF0Y2gsXG4gICAgICAgICAgcm91dGVDb250ZXh0OiB7XG4gICAgICAgICAgICBvdXRsZXQsXG4gICAgICAgICAgICBtYXRjaGVzOiBtYXRjaGVzMixcbiAgICAgICAgICAgIGlzRGF0YVJvdXRlOiBkYXRhUm91dGVyU3RhdGUgIT0gbnVsbFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2hpbGRyZW5cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9O1xuICAgIHJldHVybiBkYXRhUm91dGVyU3RhdGUgJiYgKG1hdGNoLnJvdXRlLkVycm9yQm91bmRhcnkgfHwgbWF0Y2gucm91dGUuZXJyb3JFbGVtZW50IHx8IGluZGV4ID09PSAwKSA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChcbiAgICAgIFJlbmRlckVycm9yQm91bmRhcnksXG4gICAgICB7XG4gICAgICAgIGxvY2F0aW9uOiBkYXRhUm91dGVyU3RhdGUubG9jYXRpb24sXG4gICAgICAgIHJldmFsaWRhdGlvbjogZGF0YVJvdXRlclN0YXRlLnJldmFsaWRhdGlvbixcbiAgICAgICAgY29tcG9uZW50OiBlcnJvckVsZW1lbnQsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBjaGlsZHJlbjogZ2V0Q2hpbGRyZW4oKSxcbiAgICAgICAgcm91dGVDb250ZXh0OiB7IG91dGxldDogbnVsbCwgbWF0Y2hlczogbWF0Y2hlczIsIGlzRGF0YVJvdXRlOiB0cnVlIH1cbiAgICAgIH1cbiAgICApIDogZ2V0Q2hpbGRyZW4oKTtcbiAgfSwgbnVsbCk7XG59XG5mdW5jdGlvbiBnZXREYXRhUm91dGVyQ29uc29sZUVycm9yKGhvb2tOYW1lKSB7XG4gIHJldHVybiBgJHtob29rTmFtZX0gbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGRhdGEgcm91dGVyLiAgU2VlIGh0dHBzOi8vcmVhY3Ryb3V0ZXIuY29tL2VuL21haW4vcm91dGVycy9waWNraW5nLWEtcm91dGVyLmA7XG59XG5mdW5jdGlvbiB1c2VEYXRhUm91dGVyQ29udGV4dChob29rTmFtZSkge1xuICBsZXQgY3R4ID0gUmVhY3QyLnVzZUNvbnRleHQoRGF0YVJvdXRlckNvbnRleHQpO1xuICBpbnZhcmlhbnQoY3R4LCBnZXREYXRhUm91dGVyQ29uc29sZUVycm9yKGhvb2tOYW1lKSk7XG4gIHJldHVybiBjdHg7XG59XG5mdW5jdGlvbiB1c2VEYXRhUm91dGVyU3RhdGUoaG9va05hbWUpIHtcbiAgbGV0IHN0YXRlID0gUmVhY3QyLnVzZUNvbnRleHQoRGF0YVJvdXRlclN0YXRlQ29udGV4dCk7XG4gIGludmFyaWFudChzdGF0ZSwgZ2V0RGF0YVJvdXRlckNvbnNvbGVFcnJvcihob29rTmFtZSkpO1xuICByZXR1cm4gc3RhdGU7XG59XG5mdW5jdGlvbiB1c2VSb3V0ZUNvbnRleHQoaG9va05hbWUpIHtcbiAgbGV0IHJvdXRlID0gUmVhY3QyLnVzZUNvbnRleHQoUm91dGVDb250ZXh0KTtcbiAgaW52YXJpYW50KHJvdXRlLCBnZXREYXRhUm91dGVyQ29uc29sZUVycm9yKGhvb2tOYW1lKSk7XG4gIHJldHVybiByb3V0ZTtcbn1cbmZ1bmN0aW9uIHVzZUN1cnJlbnRSb3V0ZUlkKGhvb2tOYW1lKSB7XG4gIGxldCByb3V0ZSA9IHVzZVJvdXRlQ29udGV4dChob29rTmFtZSk7XG4gIGxldCB0aGlzUm91dGUgPSByb3V0ZS5tYXRjaGVzW3JvdXRlLm1hdGNoZXMubGVuZ3RoIC0gMV07XG4gIGludmFyaWFudChcbiAgICB0aGlzUm91dGUucm91dGUuaWQsXG4gICAgYCR7aG9va05hbWV9IGNhbiBvbmx5IGJlIHVzZWQgb24gcm91dGVzIHRoYXQgY29udGFpbiBhIHVuaXF1ZSBcImlkXCJgXG4gICk7XG4gIHJldHVybiB0aGlzUm91dGUucm91dGUuaWQ7XG59XG5mdW5jdGlvbiB1c2VSb3V0ZUlkKCkge1xuICByZXR1cm4gdXNlQ3VycmVudFJvdXRlSWQoXCJ1c2VSb3V0ZUlkXCIgLyogVXNlUm91dGVJZCAqLyk7XG59XG5mdW5jdGlvbiB1c2VOYXZpZ2F0aW9uKCkge1xuICBsZXQgc3RhdGUgPSB1c2VEYXRhUm91dGVyU3RhdGUoXCJ1c2VOYXZpZ2F0aW9uXCIgLyogVXNlTmF2aWdhdGlvbiAqLyk7XG4gIHJldHVybiBzdGF0ZS5uYXZpZ2F0aW9uO1xufVxuZnVuY3Rpb24gdXNlUmV2YWxpZGF0b3IoKSB7XG4gIGxldCBkYXRhUm91dGVyQ29udGV4dCA9IHVzZURhdGFSb3V0ZXJDb250ZXh0KFwidXNlUmV2YWxpZGF0b3JcIiAvKiBVc2VSZXZhbGlkYXRvciAqLyk7XG4gIGxldCBzdGF0ZSA9IHVzZURhdGFSb3V0ZXJTdGF0ZShcInVzZVJldmFsaWRhdG9yXCIgLyogVXNlUmV2YWxpZGF0b3IgKi8pO1xuICByZXR1cm4gUmVhY3QyLnVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGFzeW5jIHJldmFsaWRhdGUoKSB7XG4gICAgICAgIGF3YWl0IGRhdGFSb3V0ZXJDb250ZXh0LnJvdXRlci5yZXZhbGlkYXRlKCk7XG4gICAgICB9LFxuICAgICAgc3RhdGU6IHN0YXRlLnJldmFsaWRhdGlvblxuICAgIH0pLFxuICAgIFtkYXRhUm91dGVyQ29udGV4dC5yb3V0ZXIsIHN0YXRlLnJldmFsaWRhdGlvbl1cbiAgKTtcbn1cbmZ1bmN0aW9uIHVzZU1hdGNoZXMoKSB7XG4gIGxldCB7IG1hdGNoZXMsIGxvYWRlckRhdGEgfSA9IHVzZURhdGFSb3V0ZXJTdGF0ZShcbiAgICBcInVzZU1hdGNoZXNcIiAvKiBVc2VNYXRjaGVzICovXG4gICk7XG4gIHJldHVybiBSZWFjdDIudXNlTWVtbyhcbiAgICAoKSA9PiBtYXRjaGVzLm1hcCgobSkgPT4gY29udmVydFJvdXRlTWF0Y2hUb1VpTWF0Y2gobSwgbG9hZGVyRGF0YSkpLFxuICAgIFttYXRjaGVzLCBsb2FkZXJEYXRhXVxuICApO1xufVxuZnVuY3Rpb24gdXNlTG9hZGVyRGF0YSgpIHtcbiAgbGV0IHN0YXRlID0gdXNlRGF0YVJvdXRlclN0YXRlKFwidXNlTG9hZGVyRGF0YVwiIC8qIFVzZUxvYWRlckRhdGEgKi8pO1xuICBsZXQgcm91dGVJZCA9IHVzZUN1cnJlbnRSb3V0ZUlkKFwidXNlTG9hZGVyRGF0YVwiIC8qIFVzZUxvYWRlckRhdGEgKi8pO1xuICByZXR1cm4gc3RhdGUubG9hZGVyRGF0YVtyb3V0ZUlkXTtcbn1cbmZ1bmN0aW9uIHVzZVJvdXRlTG9hZGVyRGF0YShyb3V0ZUlkKSB7XG4gIGxldCBzdGF0ZSA9IHVzZURhdGFSb3V0ZXJTdGF0ZShcInVzZVJvdXRlTG9hZGVyRGF0YVwiIC8qIFVzZVJvdXRlTG9hZGVyRGF0YSAqLyk7XG4gIHJldHVybiBzdGF0ZS5sb2FkZXJEYXRhW3JvdXRlSWRdO1xufVxuZnVuY3Rpb24gdXNlQWN0aW9uRGF0YSgpIHtcbiAgbGV0IHN0YXRlID0gdXNlRGF0YVJvdXRlclN0YXRlKFwidXNlQWN0aW9uRGF0YVwiIC8qIFVzZUFjdGlvbkRhdGEgKi8pO1xuICBsZXQgcm91dGVJZCA9IHVzZUN1cnJlbnRSb3V0ZUlkKFwidXNlTG9hZGVyRGF0YVwiIC8qIFVzZUxvYWRlckRhdGEgKi8pO1xuICByZXR1cm4gc3RhdGUuYWN0aW9uRGF0YSA/IHN0YXRlLmFjdGlvbkRhdGFbcm91dGVJZF0gOiB2b2lkIDA7XG59XG5mdW5jdGlvbiB1c2VSb3V0ZUVycm9yKCkge1xuICBsZXQgZXJyb3IgPSBSZWFjdDIudXNlQ29udGV4dChSb3V0ZUVycm9yQ29udGV4dCk7XG4gIGxldCBzdGF0ZSA9IHVzZURhdGFSb3V0ZXJTdGF0ZShcInVzZVJvdXRlRXJyb3JcIiAvKiBVc2VSb3V0ZUVycm9yICovKTtcbiAgbGV0IHJvdXRlSWQgPSB1c2VDdXJyZW50Um91dGVJZChcInVzZVJvdXRlRXJyb3JcIiAvKiBVc2VSb3V0ZUVycm9yICovKTtcbiAgaWYgKGVycm9yICE9PSB2b2lkIDApIHtcbiAgICByZXR1cm4gZXJyb3I7XG4gIH1cbiAgcmV0dXJuIHN0YXRlLmVycm9ycz8uW3JvdXRlSWRdO1xufVxuZnVuY3Rpb24gdXNlQXN5bmNWYWx1ZSgpIHtcbiAgbGV0IHZhbHVlID0gUmVhY3QyLnVzZUNvbnRleHQoQXdhaXRDb250ZXh0KTtcbiAgcmV0dXJuIHZhbHVlPy5fZGF0YTtcbn1cbmZ1bmN0aW9uIHVzZUFzeW5jRXJyb3IoKSB7XG4gIGxldCB2YWx1ZSA9IFJlYWN0Mi51c2VDb250ZXh0KEF3YWl0Q29udGV4dCk7XG4gIHJldHVybiB2YWx1ZT8uX2Vycm9yO1xufVxudmFyIGJsb2NrZXJJZCA9IDA7XG5mdW5jdGlvbiB1c2VCbG9ja2VyKHNob3VsZEJsb2NrKSB7XG4gIGxldCB7IHJvdXRlciwgYmFzZW5hbWUgfSA9IHVzZURhdGFSb3V0ZXJDb250ZXh0KFwidXNlQmxvY2tlclwiIC8qIFVzZUJsb2NrZXIgKi8pO1xuICBsZXQgc3RhdGUgPSB1c2VEYXRhUm91dGVyU3RhdGUoXCJ1c2VCbG9ja2VyXCIgLyogVXNlQmxvY2tlciAqLyk7XG4gIGxldCBbYmxvY2tlcktleSwgc2V0QmxvY2tlcktleV0gPSBSZWFjdDIudXNlU3RhdGUoXCJcIik7XG4gIGxldCBibG9ja2VyRnVuY3Rpb24gPSBSZWFjdDIudXNlQ2FsbGJhY2soXG4gICAgKGFyZykgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBzaG91bGRCbG9jayAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiAhIXNob3VsZEJsb2NrO1xuICAgICAgfVxuICAgICAgaWYgKGJhc2VuYW1lID09PSBcIi9cIikge1xuICAgICAgICByZXR1cm4gc2hvdWxkQmxvY2soYXJnKTtcbiAgICAgIH1cbiAgICAgIGxldCB7IGN1cnJlbnRMb2NhdGlvbiwgbmV4dExvY2F0aW9uLCBoaXN0b3J5QWN0aW9uIH0gPSBhcmc7XG4gICAgICByZXR1cm4gc2hvdWxkQmxvY2soe1xuICAgICAgICBjdXJyZW50TG9jYXRpb246IHtcbiAgICAgICAgICAuLi5jdXJyZW50TG9jYXRpb24sXG4gICAgICAgICAgcGF0aG5hbWU6IHN0cmlwQmFzZW5hbWUoY3VycmVudExvY2F0aW9uLnBhdGhuYW1lLCBiYXNlbmFtZSkgfHwgY3VycmVudExvY2F0aW9uLnBhdGhuYW1lXG4gICAgICAgIH0sXG4gICAgICAgIG5leHRMb2NhdGlvbjoge1xuICAgICAgICAgIC4uLm5leHRMb2NhdGlvbixcbiAgICAgICAgICBwYXRobmFtZTogc3RyaXBCYXNlbmFtZShuZXh0TG9jYXRpb24ucGF0aG5hbWUsIGJhc2VuYW1lKSB8fCBuZXh0TG9jYXRpb24ucGF0aG5hbWVcbiAgICAgICAgfSxcbiAgICAgICAgaGlzdG9yeUFjdGlvblxuICAgICAgfSk7XG4gICAgfSxcbiAgICBbYmFzZW5hbWUsIHNob3VsZEJsb2NrXVxuICApO1xuICBSZWFjdDIudXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQga2V5ID0gU3RyaW5nKCsrYmxvY2tlcklkKTtcbiAgICBzZXRCbG9ja2VyS2V5KGtleSk7XG4gICAgcmV0dXJuICgpID0+IHJvdXRlci5kZWxldGVCbG9ja2VyKGtleSk7XG4gIH0sIFtyb3V0ZXJdKTtcbiAgUmVhY3QyLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGJsb2NrZXJLZXkgIT09IFwiXCIpIHtcbiAgICAgIHJvdXRlci5nZXRCbG9ja2VyKGJsb2NrZXJLZXksIGJsb2NrZXJGdW5jdGlvbik7XG4gICAgfVxuICB9LCBbcm91dGVyLCBibG9ja2VyS2V5LCBibG9ja2VyRnVuY3Rpb25dKTtcbiAgcmV0dXJuIGJsb2NrZXJLZXkgJiYgc3RhdGUuYmxvY2tlcnMuaGFzKGJsb2NrZXJLZXkpID8gc3RhdGUuYmxvY2tlcnMuZ2V0KGJsb2NrZXJLZXkpIDogSURMRV9CTE9DS0VSO1xufVxuZnVuY3Rpb24gdXNlTmF2aWdhdGVTdGFibGUoKSB7XG4gIGxldCB7IHJvdXRlciB9ID0gdXNlRGF0YVJvdXRlckNvbnRleHQoXCJ1c2VOYXZpZ2F0ZVwiIC8qIFVzZU5hdmlnYXRlU3RhYmxlICovKTtcbiAgbGV0IGlkID0gdXNlQ3VycmVudFJvdXRlSWQoXCJ1c2VOYXZpZ2F0ZVwiIC8qIFVzZU5hdmlnYXRlU3RhYmxlICovKTtcbiAgbGV0IGFjdGl2ZVJlZiA9IFJlYWN0Mi51c2VSZWYoZmFsc2UpO1xuICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBhY3RpdmVSZWYuY3VycmVudCA9IHRydWU7XG4gIH0pO1xuICBsZXQgbmF2aWdhdGUgPSBSZWFjdDIudXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHRvLCBvcHRpb25zID0ge30pID0+IHtcbiAgICAgIHdhcm5pbmcoYWN0aXZlUmVmLmN1cnJlbnQsIG5hdmlnYXRlRWZmZWN0V2FybmluZyk7XG4gICAgICBpZiAoIWFjdGl2ZVJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgICBpZiAodHlwZW9mIHRvID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIHJvdXRlci5uYXZpZ2F0ZSh0byk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCByb3V0ZXIubmF2aWdhdGUodG8sIHsgZnJvbVJvdXRlSWQ6IGlkLCAuLi5vcHRpb25zIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3JvdXRlciwgaWRdXG4gICk7XG4gIHJldHVybiBuYXZpZ2F0ZTtcbn1cbnZhciBhbHJlYWR5V2FybmVkID0ge307XG5mdW5jdGlvbiB3YXJuaW5nT25jZShrZXksIGNvbmQsIG1lc3NhZ2UpIHtcbiAgaWYgKCFjb25kICYmICFhbHJlYWR5V2FybmVkW2tleV0pIHtcbiAgICBhbHJlYWR5V2FybmVkW2tleV0gPSB0cnVlO1xuICAgIHdhcm5pbmcoZmFsc2UsIG1lc3NhZ2UpO1xuICB9XG59XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS93YXJuaW5ncy50c1xudmFyIGFscmVhZHlXYXJuZWQyID0ge307XG5mdW5jdGlvbiB3YXJuT25jZShjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgaWYgKCFjb25kaXRpb24gJiYgIWFscmVhZHlXYXJuZWQyW21lc3NhZ2VdKSB7XG4gICAgYWxyZWFkeVdhcm5lZDJbbWVzc2FnZV0gPSB0cnVlO1xuICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcbiAgfVxufVxuXG4vLyBsaWIvY29tcG9uZW50cy50c3hcbnZhciBFTkFCTEVfREVWX1dBUk5JTkdTMiA9IHRydWU7XG5mdW5jdGlvbiBtYXBSb3V0ZVByb3BlcnRpZXMocm91dGUpIHtcbiAgbGV0IHVwZGF0ZXMgPSB7XG4gICAgLy8gTm90ZTogdGhpcyBjaGVjayBhbHNvIG9jY3VycyBpbiBjcmVhdGVSb3V0ZXNGcm9tQ2hpbGRyZW4gc28gdXBkYXRlXG4gICAgLy8gdGhlcmUgaWYgeW91IGNoYW5nZSB0aGlzIC0tIHBsZWFzZSBhbmQgdGhhbmsgeW91IVxuICAgIGhhc0Vycm9yQm91bmRhcnk6IHJvdXRlLmhhc0Vycm9yQm91bmRhcnkgfHwgcm91dGUuRXJyb3JCb3VuZGFyeSAhPSBudWxsIHx8IHJvdXRlLmVycm9yRWxlbWVudCAhPSBudWxsXG4gIH07XG4gIGlmIChyb3V0ZS5Db21wb25lbnQpIHtcbiAgICBpZiAoRU5BQkxFX0RFVl9XQVJOSU5HUzIpIHtcbiAgICAgIGlmIChyb3V0ZS5lbGVtZW50KSB7XG4gICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgXCJZb3Ugc2hvdWxkIG5vdCBpbmNsdWRlIGJvdGggYENvbXBvbmVudGAgYW5kIGBlbGVtZW50YCBvbiB5b3VyIHJvdXRlIC0gYENvbXBvbmVudGAgd2lsbCBiZSB1c2VkLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIE9iamVjdC5hc3NpZ24odXBkYXRlcywge1xuICAgICAgZWxlbWVudDogUmVhY3QzLmNyZWF0ZUVsZW1lbnQocm91dGUuQ29tcG9uZW50KSxcbiAgICAgIENvbXBvbmVudDogdm9pZCAwXG4gICAgfSk7XG4gIH1cbiAgaWYgKHJvdXRlLkh5ZHJhdGVGYWxsYmFjaykge1xuICAgIGlmIChFTkFCTEVfREVWX1dBUk5JTkdTMikge1xuICAgICAgaWYgKHJvdXRlLmh5ZHJhdGVGYWxsYmFja0VsZW1lbnQpIHtcbiAgICAgICAgd2FybmluZyhcbiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICBcIllvdSBzaG91bGQgbm90IGluY2x1ZGUgYm90aCBgSHlkcmF0ZUZhbGxiYWNrYCBhbmQgYGh5ZHJhdGVGYWxsYmFja0VsZW1lbnRgIG9uIHlvdXIgcm91dGUgLSBgSHlkcmF0ZUZhbGxiYWNrYCB3aWxsIGJlIHVzZWQuXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgT2JqZWN0LmFzc2lnbih1cGRhdGVzLCB7XG4gICAgICBoeWRyYXRlRmFsbGJhY2tFbGVtZW50OiBSZWFjdDMuY3JlYXRlRWxlbWVudChyb3V0ZS5IeWRyYXRlRmFsbGJhY2spLFxuICAgICAgSHlkcmF0ZUZhbGxiYWNrOiB2b2lkIDBcbiAgICB9KTtcbiAgfVxuICBpZiAocm91dGUuRXJyb3JCb3VuZGFyeSkge1xuICAgIGlmIChFTkFCTEVfREVWX1dBUk5JTkdTMikge1xuICAgICAgaWYgKHJvdXRlLmVycm9yRWxlbWVudCkge1xuICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIFwiWW91IHNob3VsZCBub3QgaW5jbHVkZSBib3RoIGBFcnJvckJvdW5kYXJ5YCBhbmQgYGVycm9yRWxlbWVudGAgb24geW91ciByb3V0ZSAtIGBFcnJvckJvdW5kYXJ5YCB3aWxsIGJlIHVzZWQuXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgT2JqZWN0LmFzc2lnbih1cGRhdGVzLCB7XG4gICAgICBlcnJvckVsZW1lbnQ6IFJlYWN0My5jcmVhdGVFbGVtZW50KHJvdXRlLkVycm9yQm91bmRhcnkpLFxuICAgICAgRXJyb3JCb3VuZGFyeTogdm9pZCAwXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHVwZGF0ZXM7XG59XG5mdW5jdGlvbiBjcmVhdGVNZW1vcnlSb3V0ZXIocm91dGVzLCBvcHRzKSB7XG4gIHJldHVybiBjcmVhdGVSb3V0ZXIoe1xuICAgIGJhc2VuYW1lOiBvcHRzPy5iYXNlbmFtZSxcbiAgICBmdXR1cmU6IG9wdHM/LmZ1dHVyZSxcbiAgICBoaXN0b3J5OiBjcmVhdGVNZW1vcnlIaXN0b3J5KHtcbiAgICAgIGluaXRpYWxFbnRyaWVzOiBvcHRzPy5pbml0aWFsRW50cmllcyxcbiAgICAgIGluaXRpYWxJbmRleDogb3B0cz8uaW5pdGlhbEluZGV4XG4gICAgfSksXG4gICAgaHlkcmF0aW9uRGF0YTogb3B0cz8uaHlkcmF0aW9uRGF0YSxcbiAgICByb3V0ZXMsXG4gICAgbWFwUm91dGVQcm9wZXJ0aWVzLFxuICAgIGRhdGFTdHJhdGVneTogb3B0cz8uZGF0YVN0cmF0ZWd5LFxuICAgIHBhdGNoUm91dGVzT25OYXZpZ2F0aW9uOiBvcHRzPy5wYXRjaFJvdXRlc09uTmF2aWdhdGlvblxuICB9KS5pbml0aWFsaXplKCk7XG59XG52YXIgRGVmZXJyZWQgPSBjbGFzcyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc3RhdHVzID0gXCJwZW5kaW5nXCI7XG4gICAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5yZXNvbHZlID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gXCJwZW5kaW5nXCIpIHtcbiAgICAgICAgICB0aGlzLnN0YXR1cyA9IFwicmVzb2x2ZWRcIjtcbiAgICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMucmVqZWN0ID0gKHJlYXNvbikgPT4ge1xuICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IFwicGVuZGluZ1wiKSB7XG4gICAgICAgICAgdGhpcy5zdGF0dXMgPSBcInJlamVjdGVkXCI7XG4gICAgICAgICAgcmVqZWN0KHJlYXNvbik7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbn07XG5mdW5jdGlvbiBSb3V0ZXJQcm92aWRlcih7XG4gIHJvdXRlcixcbiAgZmx1c2hTeW5jOiByZWFjdERvbUZsdXNoU3luY0ltcGxcbn0pIHtcbiAgbGV0IFtzdGF0ZSwgc2V0U3RhdGVJbXBsXSA9IFJlYWN0My51c2VTdGF0ZShyb3V0ZXIuc3RhdGUpO1xuICBsZXQgW3BlbmRpbmdTdGF0ZSwgc2V0UGVuZGluZ1N0YXRlXSA9IFJlYWN0My51c2VTdGF0ZSgpO1xuICBsZXQgW3Z0Q29udGV4dCwgc2V0VnRDb250ZXh0XSA9IFJlYWN0My51c2VTdGF0ZSh7XG4gICAgaXNUcmFuc2l0aW9uaW5nOiBmYWxzZVxuICB9KTtcbiAgbGV0IFtyZW5kZXJEZmQsIHNldFJlbmRlckRmZF0gPSBSZWFjdDMudXNlU3RhdGUoKTtcbiAgbGV0IFt0cmFuc2l0aW9uLCBzZXRUcmFuc2l0aW9uXSA9IFJlYWN0My51c2VTdGF0ZSgpO1xuICBsZXQgW2ludGVycnVwdGlvbiwgc2V0SW50ZXJydXB0aW9uXSA9IFJlYWN0My51c2VTdGF0ZSgpO1xuICBsZXQgZmV0Y2hlckRhdGEgPSBSZWFjdDMudXNlUmVmKC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCkpO1xuICBsZXQgc2V0U3RhdGUgPSBSZWFjdDMudXNlQ2FsbGJhY2soXG4gICAgKG5ld1N0YXRlLCB7IGRlbGV0ZWRGZXRjaGVycywgZmx1c2hTeW5jLCB2aWV3VHJhbnNpdGlvbk9wdHMgfSkgPT4ge1xuICAgICAgZGVsZXRlZEZldGNoZXJzLmZvckVhY2goKGtleSkgPT4gZmV0Y2hlckRhdGEuY3VycmVudC5kZWxldGUoa2V5KSk7XG4gICAgICBuZXdTdGF0ZS5mZXRjaGVycy5mb3JFYWNoKChmZXRjaGVyLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKGZldGNoZXIuZGF0YSAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgZmV0Y2hlckRhdGEuY3VycmVudC5zZXQoa2V5LCBmZXRjaGVyLmRhdGEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHdhcm5PbmNlKFxuICAgICAgICBmbHVzaFN5bmMgPT09IGZhbHNlIHx8IHJlYWN0RG9tRmx1c2hTeW5jSW1wbCAhPSBudWxsLFxuICAgICAgICAnWW91IHByb3ZpZGVkIHRoZSBgZmx1c2hTeW5jYCBvcHRpb24gdG8gYSByb3V0ZXIgdXBkYXRlLCBidXQgeW91IGFyZSBub3QgdXNpbmcgdGhlIGA8Um91dGVyUHJvdmlkZXI+YCBmcm9tIGByZWFjdC1yb3V0ZXIvZG9tYCBzbyBgUmVhY3RET00uZmx1c2hTeW5jKClgIGlzIHVuYXZhaWxhYmxlLiAgUGxlYXNlIHVwZGF0ZSB5b3VyIGFwcCB0byBgaW1wb3J0IHsgUm91dGVyUHJvdmlkZXIgfSBmcm9tIFwicmVhY3Qtcm91dGVyL2RvbVwiYCBhbmQgZW5zdXJlIHlvdSBoYXZlIGByZWFjdC1kb21gIGluc3RhbGxlZCBhcyBhIGRlcGVuZGVuY3kgdG8gdXNlIHRoZSBgZmx1c2hTeW5jYCBvcHRpb24uJ1xuICAgICAgKTtcbiAgICAgIGxldCBpc1ZpZXdUcmFuc2l0aW9uQXZhaWxhYmxlID0gcm91dGVyLndpbmRvdyAhPSBudWxsICYmIHJvdXRlci53aW5kb3cuZG9jdW1lbnQgIT0gbnVsbCAmJiB0eXBlb2Ygcm91dGVyLndpbmRvdy5kb2N1bWVudC5zdGFydFZpZXdUcmFuc2l0aW9uID09PSBcImZ1bmN0aW9uXCI7XG4gICAgICB3YXJuT25jZShcbiAgICAgICAgdmlld1RyYW5zaXRpb25PcHRzID09IG51bGwgfHwgaXNWaWV3VHJhbnNpdGlvbkF2YWlsYWJsZSxcbiAgICAgICAgXCJZb3UgcHJvdmlkZWQgdGhlIGB2aWV3VHJhbnNpdGlvbmAgb3B0aW9uIHRvIGEgcm91dGVyIHVwZGF0ZSwgYnV0IHlvdSBkbyBub3QgYXBwZWFyIHRvIGJlIHJ1bm5pbmcgaW4gYSBET00gZW52aXJvbm1lbnQgYXMgYHdpbmRvdy5zdGFydFZpZXdUcmFuc2l0aW9uYCBpcyBub3QgYXZhaWxhYmxlLlwiXG4gICAgICApO1xuICAgICAgaWYgKCF2aWV3VHJhbnNpdGlvbk9wdHMgfHwgIWlzVmlld1RyYW5zaXRpb25BdmFpbGFibGUpIHtcbiAgICAgICAgaWYgKHJlYWN0RG9tRmx1c2hTeW5jSW1wbCAmJiBmbHVzaFN5bmMpIHtcbiAgICAgICAgICByZWFjdERvbUZsdXNoU3luY0ltcGwoKCkgPT4gc2V0U3RhdGVJbXBsKG5ld1N0YXRlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgUmVhY3QzLnN0YXJ0VHJhbnNpdGlvbigoKSA9PiBzZXRTdGF0ZUltcGwobmV3U3RhdGUpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAocmVhY3REb21GbHVzaFN5bmNJbXBsICYmIGZsdXNoU3luYykge1xuICAgICAgICByZWFjdERvbUZsdXNoU3luY0ltcGwoKCkgPT4ge1xuICAgICAgICAgIGlmICh0cmFuc2l0aW9uKSB7XG4gICAgICAgICAgICByZW5kZXJEZmQgJiYgcmVuZGVyRGZkLnJlc29sdmUoKTtcbiAgICAgICAgICAgIHRyYW5zaXRpb24uc2tpcFRyYW5zaXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2V0VnRDb250ZXh0KHtcbiAgICAgICAgICAgIGlzVHJhbnNpdGlvbmluZzogdHJ1ZSxcbiAgICAgICAgICAgIGZsdXNoU3luYzogdHJ1ZSxcbiAgICAgICAgICAgIGN1cnJlbnRMb2NhdGlvbjogdmlld1RyYW5zaXRpb25PcHRzLmN1cnJlbnRMb2NhdGlvbixcbiAgICAgICAgICAgIG5leHRMb2NhdGlvbjogdmlld1RyYW5zaXRpb25PcHRzLm5leHRMb2NhdGlvblxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgbGV0IHQgPSByb3V0ZXIud2luZG93LmRvY3VtZW50LnN0YXJ0Vmlld1RyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgICAgIHJlYWN0RG9tRmx1c2hTeW5jSW1wbCgoKSA9PiBzZXRTdGF0ZUltcGwobmV3U3RhdGUpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHQuZmluaXNoZWQuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgcmVhY3REb21GbHVzaFN5bmNJbXBsKCgpID0+IHtcbiAgICAgICAgICAgIHNldFJlbmRlckRmZCh2b2lkIDApO1xuICAgICAgICAgICAgc2V0VHJhbnNpdGlvbih2b2lkIDApO1xuICAgICAgICAgICAgc2V0UGVuZGluZ1N0YXRlKHZvaWQgMCk7XG4gICAgICAgICAgICBzZXRWdENvbnRleHQoeyBpc1RyYW5zaXRpb25pbmc6IGZhbHNlIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVhY3REb21GbHVzaFN5bmNJbXBsKCgpID0+IHNldFRyYW5zaXRpb24odCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodHJhbnNpdGlvbikge1xuICAgICAgICByZW5kZXJEZmQgJiYgcmVuZGVyRGZkLnJlc29sdmUoKTtcbiAgICAgICAgdHJhbnNpdGlvbi5za2lwVHJhbnNpdGlvbigpO1xuICAgICAgICBzZXRJbnRlcnJ1cHRpb24oe1xuICAgICAgICAgIHN0YXRlOiBuZXdTdGF0ZSxcbiAgICAgICAgICBjdXJyZW50TG9jYXRpb246IHZpZXdUcmFuc2l0aW9uT3B0cy5jdXJyZW50TG9jYXRpb24sXG4gICAgICAgICAgbmV4dExvY2F0aW9uOiB2aWV3VHJhbnNpdGlvbk9wdHMubmV4dExvY2F0aW9uXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0UGVuZGluZ1N0YXRlKG5ld1N0YXRlKTtcbiAgICAgICAgc2V0VnRDb250ZXh0KHtcbiAgICAgICAgICBpc1RyYW5zaXRpb25pbmc6IHRydWUsXG4gICAgICAgICAgZmx1c2hTeW5jOiBmYWxzZSxcbiAgICAgICAgICBjdXJyZW50TG9jYXRpb246IHZpZXdUcmFuc2l0aW9uT3B0cy5jdXJyZW50TG9jYXRpb24sXG4gICAgICAgICAgbmV4dExvY2F0aW9uOiB2aWV3VHJhbnNpdGlvbk9wdHMubmV4dExvY2F0aW9uXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3JvdXRlci53aW5kb3csIHJlYWN0RG9tRmx1c2hTeW5jSW1wbCwgdHJhbnNpdGlvbiwgcmVuZGVyRGZkXVxuICApO1xuICBSZWFjdDMudXNlTGF5b3V0RWZmZWN0KCgpID0+IHJvdXRlci5zdWJzY3JpYmUoc2V0U3RhdGUpLCBbcm91dGVyLCBzZXRTdGF0ZV0pO1xuICBSZWFjdDMudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodnRDb250ZXh0LmlzVHJhbnNpdGlvbmluZyAmJiAhdnRDb250ZXh0LmZsdXNoU3luYykge1xuICAgICAgc2V0UmVuZGVyRGZkKG5ldyBEZWZlcnJlZCgpKTtcbiAgICB9XG4gIH0sIFt2dENvbnRleHRdKTtcbiAgUmVhY3QzLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlbmRlckRmZCAmJiBwZW5kaW5nU3RhdGUgJiYgcm91dGVyLndpbmRvdykge1xuICAgICAgbGV0IG5ld1N0YXRlID0gcGVuZGluZ1N0YXRlO1xuICAgICAgbGV0IHJlbmRlclByb21pc2UgPSByZW5kZXJEZmQucHJvbWlzZTtcbiAgICAgIGxldCB0cmFuc2l0aW9uMiA9IHJvdXRlci53aW5kb3cuZG9jdW1lbnQuc3RhcnRWaWV3VHJhbnNpdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICAgIFJlYWN0My5zdGFydFRyYW5zaXRpb24oKCkgPT4gc2V0U3RhdGVJbXBsKG5ld1N0YXRlKSk7XG4gICAgICAgIGF3YWl0IHJlbmRlclByb21pc2U7XG4gICAgICB9KTtcbiAgICAgIHRyYW5zaXRpb24yLmZpbmlzaGVkLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBzZXRSZW5kZXJEZmQodm9pZCAwKTtcbiAgICAgICAgc2V0VHJhbnNpdGlvbih2b2lkIDApO1xuICAgICAgICBzZXRQZW5kaW5nU3RhdGUodm9pZCAwKTtcbiAgICAgICAgc2V0VnRDb250ZXh0KHsgaXNUcmFuc2l0aW9uaW5nOiBmYWxzZSB9KTtcbiAgICAgIH0pO1xuICAgICAgc2V0VHJhbnNpdGlvbih0cmFuc2l0aW9uMik7XG4gICAgfVxuICB9LCBbcGVuZGluZ1N0YXRlLCByZW5kZXJEZmQsIHJvdXRlci53aW5kb3ddKTtcbiAgUmVhY3QzLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlbmRlckRmZCAmJiBwZW5kaW5nU3RhdGUgJiYgc3RhdGUubG9jYXRpb24ua2V5ID09PSBwZW5kaW5nU3RhdGUubG9jYXRpb24ua2V5KSB7XG4gICAgICByZW5kZXJEZmQucmVzb2x2ZSgpO1xuICAgIH1cbiAgfSwgW3JlbmRlckRmZCwgdHJhbnNpdGlvbiwgc3RhdGUubG9jYXRpb24sIHBlbmRpbmdTdGF0ZV0pO1xuICBSZWFjdDMudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXZ0Q29udGV4dC5pc1RyYW5zaXRpb25pbmcgJiYgaW50ZXJydXB0aW9uKSB7XG4gICAgICBzZXRQZW5kaW5nU3RhdGUoaW50ZXJydXB0aW9uLnN0YXRlKTtcbiAgICAgIHNldFZ0Q29udGV4dCh7XG4gICAgICAgIGlzVHJhbnNpdGlvbmluZzogdHJ1ZSxcbiAgICAgICAgZmx1c2hTeW5jOiBmYWxzZSxcbiAgICAgICAgY3VycmVudExvY2F0aW9uOiBpbnRlcnJ1cHRpb24uY3VycmVudExvY2F0aW9uLFxuICAgICAgICBuZXh0TG9jYXRpb246IGludGVycnVwdGlvbi5uZXh0TG9jYXRpb25cbiAgICAgIH0pO1xuICAgICAgc2V0SW50ZXJydXB0aW9uKHZvaWQgMCk7XG4gICAgfVxuICB9LCBbdnRDb250ZXh0LmlzVHJhbnNpdGlvbmluZywgaW50ZXJydXB0aW9uXSk7XG4gIGxldCBuYXZpZ2F0b3IyID0gUmVhY3QzLnVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBjcmVhdGVIcmVmOiByb3V0ZXIuY3JlYXRlSHJlZixcbiAgICAgIGVuY29kZUxvY2F0aW9uOiByb3V0ZXIuZW5jb2RlTG9jYXRpb24sXG4gICAgICBnbzogKG4pID0+IHJvdXRlci5uYXZpZ2F0ZShuKSxcbiAgICAgIHB1c2g6ICh0bywgc3RhdGUyLCBvcHRzKSA9PiByb3V0ZXIubmF2aWdhdGUodG8sIHtcbiAgICAgICAgc3RhdGU6IHN0YXRlMixcbiAgICAgICAgcHJldmVudFNjcm9sbFJlc2V0OiBvcHRzPy5wcmV2ZW50U2Nyb2xsUmVzZXRcbiAgICAgIH0pLFxuICAgICAgcmVwbGFjZTogKHRvLCBzdGF0ZTIsIG9wdHMpID0+IHJvdXRlci5uYXZpZ2F0ZSh0bywge1xuICAgICAgICByZXBsYWNlOiB0cnVlLFxuICAgICAgICBzdGF0ZTogc3RhdGUyLFxuICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQ6IG9wdHM/LnByZXZlbnRTY3JvbGxSZXNldFxuICAgICAgfSlcbiAgICB9O1xuICB9LCBbcm91dGVyXSk7XG4gIGxldCBiYXNlbmFtZSA9IHJvdXRlci5iYXNlbmFtZSB8fCBcIi9cIjtcbiAgbGV0IGRhdGFSb3V0ZXJDb250ZXh0ID0gUmVhY3QzLnVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIHJvdXRlcixcbiAgICAgIG5hdmlnYXRvcjogbmF2aWdhdG9yMixcbiAgICAgIHN0YXRpYzogZmFsc2UsXG4gICAgICBiYXNlbmFtZVxuICAgIH0pLFxuICAgIFtyb3V0ZXIsIG5hdmlnYXRvcjIsIGJhc2VuYW1lXVxuICApO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KFJlYWN0My5GcmFnbWVudCwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KERhdGFSb3V0ZXJDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBkYXRhUm91dGVyQ29udGV4dCB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoRGF0YVJvdXRlclN0YXRlQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogc3RhdGUgfSwgLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KEZldGNoZXJzQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogZmV0Y2hlckRhdGEuY3VycmVudCB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoVmlld1RyYW5zaXRpb25Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB2dENvbnRleHQgfSwgLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KFxuICAgIFJvdXRlcixcbiAgICB7XG4gICAgICBiYXNlbmFtZSxcbiAgICAgIGxvY2F0aW9uOiBzdGF0ZS5sb2NhdGlvbixcbiAgICAgIG5hdmlnYXRpb25UeXBlOiBzdGF0ZS5oaXN0b3J5QWN0aW9uLFxuICAgICAgbmF2aWdhdG9yOiBuYXZpZ2F0b3IyXG4gICAgfSxcbiAgICAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoXG4gICAgICBNZW1vaXplZERhdGFSb3V0ZXMsXG4gICAgICB7XG4gICAgICAgIHJvdXRlczogcm91dGVyLnJvdXRlcyxcbiAgICAgICAgZnV0dXJlOiByb3V0ZXIuZnV0dXJlLFxuICAgICAgICBzdGF0ZVxuICAgICAgfVxuICAgIClcbiAgKSkpKSksIG51bGwpO1xufVxudmFyIE1lbW9pemVkRGF0YVJvdXRlcyA9IFJlYWN0My5tZW1vKERhdGFSb3V0ZXMpO1xuZnVuY3Rpb24gRGF0YVJvdXRlcyh7XG4gIHJvdXRlcyxcbiAgZnV0dXJlLFxuICBzdGF0ZVxufSkge1xuICByZXR1cm4gdXNlUm91dGVzSW1wbChyb3V0ZXMsIHZvaWQgMCwgc3RhdGUsIGZ1dHVyZSk7XG59XG5mdW5jdGlvbiBNZW1vcnlSb3V0ZXIoe1xuICBiYXNlbmFtZSxcbiAgY2hpbGRyZW4sXG4gIGluaXRpYWxFbnRyaWVzLFxuICBpbml0aWFsSW5kZXhcbn0pIHtcbiAgbGV0IGhpc3RvcnlSZWYgPSBSZWFjdDMudXNlUmVmKCk7XG4gIGlmIChoaXN0b3J5UmVmLmN1cnJlbnQgPT0gbnVsbCkge1xuICAgIGhpc3RvcnlSZWYuY3VycmVudCA9IGNyZWF0ZU1lbW9yeUhpc3Rvcnkoe1xuICAgICAgaW5pdGlhbEVudHJpZXMsXG4gICAgICBpbml0aWFsSW5kZXgsXG4gICAgICB2NUNvbXBhdDogdHJ1ZVxuICAgIH0pO1xuICB9XG4gIGxldCBoaXN0b3J5ID0gaGlzdG9yeVJlZi5jdXJyZW50O1xuICBsZXQgW3N0YXRlLCBzZXRTdGF0ZUltcGxdID0gUmVhY3QzLnVzZVN0YXRlKHtcbiAgICBhY3Rpb246IGhpc3RvcnkuYWN0aW9uLFxuICAgIGxvY2F0aW9uOiBoaXN0b3J5LmxvY2F0aW9uXG4gIH0pO1xuICBsZXQgc2V0U3RhdGUgPSBSZWFjdDMudXNlQ2FsbGJhY2soXG4gICAgKG5ld1N0YXRlKSA9PiB7XG4gICAgICBSZWFjdDMuc3RhcnRUcmFuc2l0aW9uKCgpID0+IHNldFN0YXRlSW1wbChuZXdTdGF0ZSkpO1xuICAgIH0sXG4gICAgW3NldFN0YXRlSW1wbF1cbiAgKTtcbiAgUmVhY3QzLnVzZUxheW91dEVmZmVjdCgoKSA9PiBoaXN0b3J5Lmxpc3RlbihzZXRTdGF0ZSksIFtoaXN0b3J5LCBzZXRTdGF0ZV0pO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KFxuICAgIFJvdXRlcixcbiAgICB7XG4gICAgICBiYXNlbmFtZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgbG9jYXRpb246IHN0YXRlLmxvY2F0aW9uLFxuICAgICAgbmF2aWdhdGlvblR5cGU6IHN0YXRlLmFjdGlvbixcbiAgICAgIG5hdmlnYXRvcjogaGlzdG9yeVxuICAgIH1cbiAgKTtcbn1cbmZ1bmN0aW9uIE5hdmlnYXRlKHtcbiAgdG8sXG4gIHJlcGxhY2U6IHJlcGxhY2UyLFxuICBzdGF0ZSxcbiAgcmVsYXRpdmVcbn0pIHtcbiAgaW52YXJpYW50KFxuICAgIHVzZUluUm91dGVyQ29udGV4dCgpLFxuICAgIC8vIFRPRE86IFRoaXMgZXJyb3IgaXMgcHJvYmFibHkgYmVjYXVzZSB0aGV5IHNvbWVob3cgaGF2ZSAyIHZlcnNpb25zIG9mXG4gICAgLy8gdGhlIHJvdXRlciBsb2FkZWQuIFdlIGNhbiBoZWxwIHRoZW0gdW5kZXJzdGFuZCBob3cgdG8gYXZvaWQgdGhhdC5cbiAgICBgPE5hdmlnYXRlPiBtYXkgYmUgdXNlZCBvbmx5IGluIHRoZSBjb250ZXh0IG9mIGEgPFJvdXRlcj4gY29tcG9uZW50LmBcbiAgKTtcbiAgbGV0IHsgc3RhdGljOiBpc1N0YXRpYyB9ID0gUmVhY3QzLnVzZUNvbnRleHQoTmF2aWdhdGlvbkNvbnRleHQpO1xuICB3YXJuaW5nKFxuICAgICFpc1N0YXRpYyxcbiAgICBgPE5hdmlnYXRlPiBtdXN0IG5vdCBiZSB1c2VkIG9uIHRoZSBpbml0aWFsIHJlbmRlciBpbiBhIDxTdGF0aWNSb3V0ZXI+LiBUaGlzIGlzIGEgbm8tb3AsIGJ1dCB5b3Ugc2hvdWxkIG1vZGlmeSB5b3VyIGNvZGUgc28gdGhlIDxOYXZpZ2F0ZT4gaXMgb25seSBldmVyIHJlbmRlcmVkIGluIHJlc3BvbnNlIHRvIHNvbWUgdXNlciBpbnRlcmFjdGlvbiBvciBzdGF0ZSBjaGFuZ2UuYFxuICApO1xuICBsZXQgeyBtYXRjaGVzIH0gPSBSZWFjdDMudXNlQ29udGV4dChSb3V0ZUNvbnRleHQpO1xuICBsZXQgeyBwYXRobmFtZTogbG9jYXRpb25QYXRobmFtZSB9ID0gdXNlTG9jYXRpb24oKTtcbiAgbGV0IG5hdmlnYXRlID0gdXNlTmF2aWdhdGUoKTtcbiAgbGV0IHBhdGggPSByZXNvbHZlVG8oXG4gICAgdG8sXG4gICAgZ2V0UmVzb2x2ZVRvTWF0Y2hlcyhtYXRjaGVzKSxcbiAgICBsb2NhdGlvblBhdGhuYW1lLFxuICAgIHJlbGF0aXZlID09PSBcInBhdGhcIlxuICApO1xuICBsZXQganNvblBhdGggPSBKU09OLnN0cmluZ2lmeShwYXRoKTtcbiAgUmVhY3QzLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbmF2aWdhdGUoSlNPTi5wYXJzZShqc29uUGF0aCksIHsgcmVwbGFjZTogcmVwbGFjZTIsIHN0YXRlLCByZWxhdGl2ZSB9KTtcbiAgfSwgW25hdmlnYXRlLCBqc29uUGF0aCwgcmVsYXRpdmUsIHJlcGxhY2UyLCBzdGF0ZV0pO1xuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIE91dGxldChwcm9wcykge1xuICByZXR1cm4gdXNlT3V0bGV0KHByb3BzLmNvbnRleHQpO1xufVxuZnVuY3Rpb24gUm91dGUoX3Byb3BzKSB7XG4gIGludmFyaWFudChcbiAgICBmYWxzZSxcbiAgICBgQSA8Um91dGU+IGlzIG9ubHkgZXZlciB0byBiZSB1c2VkIGFzIHRoZSBjaGlsZCBvZiA8Um91dGVzPiBlbGVtZW50LCBuZXZlciByZW5kZXJlZCBkaXJlY3RseS4gUGxlYXNlIHdyYXAgeW91ciA8Um91dGU+IGluIGEgPFJvdXRlcz4uYFxuICApO1xufVxuZnVuY3Rpb24gUm91dGVyKHtcbiAgYmFzZW5hbWU6IGJhc2VuYW1lUHJvcCA9IFwiL1wiLFxuICBjaGlsZHJlbiA9IG51bGwsXG4gIGxvY2F0aW9uOiBsb2NhdGlvblByb3AsXG4gIG5hdmlnYXRpb25UeXBlID0gXCJQT1BcIiAvKiBQb3AgKi8sXG4gIG5hdmlnYXRvcjogbmF2aWdhdG9yMixcbiAgc3RhdGljOiBzdGF0aWNQcm9wID0gZmFsc2Vcbn0pIHtcbiAgaW52YXJpYW50KFxuICAgICF1c2VJblJvdXRlckNvbnRleHQoKSxcbiAgICBgWW91IGNhbm5vdCByZW5kZXIgYSA8Um91dGVyPiBpbnNpZGUgYW5vdGhlciA8Um91dGVyPi4gWW91IHNob3VsZCBuZXZlciBoYXZlIG1vcmUgdGhhbiBvbmUgaW4geW91ciBhcHAuYFxuICApO1xuICBsZXQgYmFzZW5hbWUgPSBiYXNlbmFtZVByb3AucmVwbGFjZSgvXlxcLyovLCBcIi9cIik7XG4gIGxldCBuYXZpZ2F0aW9uQ29udGV4dCA9IFJlYWN0My51c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBiYXNlbmFtZSxcbiAgICAgIG5hdmlnYXRvcjogbmF2aWdhdG9yMixcbiAgICAgIHN0YXRpYzogc3RhdGljUHJvcCxcbiAgICAgIGZ1dHVyZToge31cbiAgICB9KSxcbiAgICBbYmFzZW5hbWUsIG5hdmlnYXRvcjIsIHN0YXRpY1Byb3BdXG4gICk7XG4gIGlmICh0eXBlb2YgbG9jYXRpb25Qcm9wID09PSBcInN0cmluZ1wiKSB7XG4gICAgbG9jYXRpb25Qcm9wID0gcGFyc2VQYXRoKGxvY2F0aW9uUHJvcCk7XG4gIH1cbiAgbGV0IHtcbiAgICBwYXRobmFtZSA9IFwiL1wiLFxuICAgIHNlYXJjaCA9IFwiXCIsXG4gICAgaGFzaCA9IFwiXCIsXG4gICAgc3RhdGUgPSBudWxsLFxuICAgIGtleSA9IFwiZGVmYXVsdFwiXG4gIH0gPSBsb2NhdGlvblByb3A7XG4gIGxldCBsb2NhdGlvbkNvbnRleHQgPSBSZWFjdDMudXNlTWVtbygoKSA9PiB7XG4gICAgbGV0IHRyYWlsaW5nUGF0aG5hbWUgPSBzdHJpcEJhc2VuYW1lKHBhdGhuYW1lLCBiYXNlbmFtZSk7XG4gICAgaWYgKHRyYWlsaW5nUGF0aG5hbWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBwYXRobmFtZTogdHJhaWxpbmdQYXRobmFtZSxcbiAgICAgICAgc2VhcmNoLFxuICAgICAgICBoYXNoLFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAga2V5XG4gICAgICB9LFxuICAgICAgbmF2aWdhdGlvblR5cGVcbiAgICB9O1xuICB9LCBbYmFzZW5hbWUsIHBhdGhuYW1lLCBzZWFyY2gsIGhhc2gsIHN0YXRlLCBrZXksIG5hdmlnYXRpb25UeXBlXSk7XG4gIHdhcm5pbmcoXG4gICAgbG9jYXRpb25Db250ZXh0ICE9IG51bGwsXG4gICAgYDxSb3V0ZXIgYmFzZW5hbWU9XCIke2Jhc2VuYW1lfVwiPiBpcyBub3QgYWJsZSB0byBtYXRjaCB0aGUgVVJMIFwiJHtwYXRobmFtZX0ke3NlYXJjaH0ke2hhc2h9XCIgYmVjYXVzZSBpdCBkb2VzIG5vdCBzdGFydCB3aXRoIHRoZSBiYXNlbmFtZSwgc28gdGhlIDxSb3V0ZXI+IHdvbid0IHJlbmRlciBhbnl0aGluZy5gXG4gICk7XG4gIGlmIChsb2NhdGlvbkNvbnRleHQgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoTmF2aWdhdGlvbkNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IG5hdmlnYXRpb25Db250ZXh0IH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDMuY3JlYXRlRWxlbWVudChMb2NhdGlvbkNvbnRleHQuUHJvdmlkZXIsIHsgY2hpbGRyZW4sIHZhbHVlOiBsb2NhdGlvbkNvbnRleHQgfSkpO1xufVxuZnVuY3Rpb24gUm91dGVzKHtcbiAgY2hpbGRyZW4sXG4gIGxvY2F0aW9uXG59KSB7XG4gIHJldHVybiB1c2VSb3V0ZXMoY3JlYXRlUm91dGVzRnJvbUNoaWxkcmVuKGNoaWxkcmVuKSwgbG9jYXRpb24pO1xufVxuZnVuY3Rpb24gQXdhaXQoe1xuICBjaGlsZHJlbixcbiAgZXJyb3JFbGVtZW50LFxuICByZXNvbHZlXG59KSB7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoQXdhaXRFcnJvckJvdW5kYXJ5LCB7IHJlc29sdmUsIGVycm9yRWxlbWVudCB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoUmVzb2x2ZUF3YWl0LCBudWxsLCBjaGlsZHJlbikpO1xufVxudmFyIEF3YWl0RXJyb3JCb3VuZGFyeSA9IGNsYXNzIGV4dGVuZHMgUmVhY3QzLkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuc3RhdGUgPSB7IGVycm9yOiBudWxsIH07XG4gIH1cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihlcnJvcikge1xuICAgIHJldHVybiB7IGVycm9yIH07XG4gIH1cbiAgY29tcG9uZW50RGlkQ2F0Y2goZXJyb3IsIGVycm9ySW5mbykge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIjxBd2FpdD4gY2F1Z2h0IHRoZSBmb2xsb3dpbmcgZXJyb3IgZHVyaW5nIHJlbmRlclwiLFxuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckluZm9cbiAgICApO1xuICB9XG4gIHJlbmRlcigpIHtcbiAgICBsZXQgeyBjaGlsZHJlbiwgZXJyb3JFbGVtZW50LCByZXNvbHZlIH0gPSB0aGlzLnByb3BzO1xuICAgIGxldCBwcm9taXNlID0gbnVsbDtcbiAgICBsZXQgc3RhdHVzID0gMCAvKiBwZW5kaW5nICovO1xuICAgIGlmICghKHJlc29sdmUgaW5zdGFuY2VvZiBQcm9taXNlKSkge1xuICAgICAgc3RhdHVzID0gMSAvKiBzdWNjZXNzICovO1xuICAgICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb21pc2UsIFwiX3RyYWNrZWRcIiwgeyBnZXQ6ICgpID0+IHRydWUgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvbWlzZSwgXCJfZGF0YVwiLCB7IGdldDogKCkgPT4gcmVzb2x2ZSB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUuZXJyb3IpIHtcbiAgICAgIHN0YXR1cyA9IDIgLyogZXJyb3IgKi87XG4gICAgICBsZXQgcmVuZGVyRXJyb3IgPSB0aGlzLnN0YXRlLmVycm9yO1xuICAgICAgcHJvbWlzZSA9IFByb21pc2UucmVqZWN0KCkuY2F0Y2goKCkgPT4ge1xuICAgICAgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvbWlzZSwgXCJfdHJhY2tlZFwiLCB7IGdldDogKCkgPT4gdHJ1ZSB9KTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9taXNlLCBcIl9lcnJvclwiLCB7IGdldDogKCkgPT4gcmVuZGVyRXJyb3IgfSk7XG4gICAgfSBlbHNlIGlmIChyZXNvbHZlLl90cmFja2VkKSB7XG4gICAgICBwcm9taXNlID0gcmVzb2x2ZTtcbiAgICAgIHN0YXR1cyA9IFwiX2Vycm9yXCIgaW4gcHJvbWlzZSA/IDIgLyogZXJyb3IgKi8gOiBcIl9kYXRhXCIgaW4gcHJvbWlzZSA/IDEgLyogc3VjY2VzcyAqLyA6IDAgLyogcGVuZGluZyAqLztcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdHVzID0gMCAvKiBwZW5kaW5nICovO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlc29sdmUsIFwiX3RyYWNrZWRcIiwgeyBnZXQ6ICgpID0+IHRydWUgfSk7XG4gICAgICBwcm9taXNlID0gcmVzb2x2ZS50aGVuKFxuICAgICAgICAoZGF0YTIpID0+IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXNvbHZlLCBcIl9kYXRhXCIsIHsgZ2V0OiAoKSA9PiBkYXRhMiB9KSxcbiAgICAgICAgKGVycm9yKSA9PiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzb2x2ZSwgXCJfZXJyb3JcIiwgeyBnZXQ6ICgpID0+IGVycm9yIH0pXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoc3RhdHVzID09PSAyIC8qIGVycm9yICovICYmICFlcnJvckVsZW1lbnQpIHtcbiAgICAgIHRocm93IHByb21pc2UuX2Vycm9yO1xuICAgIH1cbiAgICBpZiAoc3RhdHVzID09PSAyIC8qIGVycm9yICovKSB7XG4gICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KEF3YWl0Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogcHJvbWlzZSwgY2hpbGRyZW46IGVycm9yRWxlbWVudCB9KTtcbiAgICB9XG4gICAgaWYgKHN0YXR1cyA9PT0gMSAvKiBzdWNjZXNzICovKSB7XG4gICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KEF3YWl0Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogcHJvbWlzZSwgY2hpbGRyZW4gfSk7XG4gICAgfVxuICAgIHRocm93IHByb21pc2U7XG4gIH1cbn07XG5mdW5jdGlvbiBSZXNvbHZlQXdhaXQoe1xuICBjaGlsZHJlblxufSkge1xuICBsZXQgZGF0YTIgPSB1c2VBc3luY1ZhbHVlKCk7XG4gIGxldCB0b1JlbmRlciA9IHR5cGVvZiBjaGlsZHJlbiA9PT0gXCJmdW5jdGlvblwiID8gY2hpbGRyZW4oZGF0YTIpIDogY2hpbGRyZW47XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoUmVhY3QzLkZyYWdtZW50LCBudWxsLCB0b1JlbmRlcik7XG59XG5mdW5jdGlvbiBjcmVhdGVSb3V0ZXNGcm9tQ2hpbGRyZW4oY2hpbGRyZW4sIHBhcmVudFBhdGggPSBbXSkge1xuICBsZXQgcm91dGVzID0gW107XG4gIFJlYWN0My5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBpZiAoIVJlYWN0My5pc1ZhbGlkRWxlbWVudChlbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgdHJlZVBhdGggPSBbLi4ucGFyZW50UGF0aCwgaW5kZXhdO1xuICAgIGlmIChlbGVtZW50LnR5cGUgPT09IFJlYWN0My5GcmFnbWVudCkge1xuICAgICAgcm91dGVzLnB1c2guYXBwbHkoXG4gICAgICAgIHJvdXRlcyxcbiAgICAgICAgY3JlYXRlUm91dGVzRnJvbUNoaWxkcmVuKGVsZW1lbnQucHJvcHMuY2hpbGRyZW4sIHRyZWVQYXRoKVxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaW52YXJpYW50KFxuICAgICAgZWxlbWVudC50eXBlID09PSBSb3V0ZSxcbiAgICAgIGBbJHt0eXBlb2YgZWxlbWVudC50eXBlID09PSBcInN0cmluZ1wiID8gZWxlbWVudC50eXBlIDogZWxlbWVudC50eXBlLm5hbWV9XSBpcyBub3QgYSA8Um91dGU+IGNvbXBvbmVudC4gQWxsIGNvbXBvbmVudCBjaGlsZHJlbiBvZiA8Um91dGVzPiBtdXN0IGJlIGEgPFJvdXRlPiBvciA8UmVhY3QuRnJhZ21lbnQ+YFxuICAgICk7XG4gICAgaW52YXJpYW50KFxuICAgICAgIWVsZW1lbnQucHJvcHMuaW5kZXggfHwgIWVsZW1lbnQucHJvcHMuY2hpbGRyZW4sXG4gICAgICBcIkFuIGluZGV4IHJvdXRlIGNhbm5vdCBoYXZlIGNoaWxkIHJvdXRlcy5cIlxuICAgICk7XG4gICAgbGV0IHJvdXRlID0ge1xuICAgICAgaWQ6IGVsZW1lbnQucHJvcHMuaWQgfHwgdHJlZVBhdGguam9pbihcIi1cIiksXG4gICAgICBjYXNlU2Vuc2l0aXZlOiBlbGVtZW50LnByb3BzLmNhc2VTZW5zaXRpdmUsXG4gICAgICBlbGVtZW50OiBlbGVtZW50LnByb3BzLmVsZW1lbnQsXG4gICAgICBDb21wb25lbnQ6IGVsZW1lbnQucHJvcHMuQ29tcG9uZW50LFxuICAgICAgaW5kZXg6IGVsZW1lbnQucHJvcHMuaW5kZXgsXG4gICAgICBwYXRoOiBlbGVtZW50LnByb3BzLnBhdGgsXG4gICAgICBsb2FkZXI6IGVsZW1lbnQucHJvcHMubG9hZGVyLFxuICAgICAgYWN0aW9uOiBlbGVtZW50LnByb3BzLmFjdGlvbixcbiAgICAgIGh5ZHJhdGVGYWxsYmFja0VsZW1lbnQ6IGVsZW1lbnQucHJvcHMuaHlkcmF0ZUZhbGxiYWNrRWxlbWVudCxcbiAgICAgIEh5ZHJhdGVGYWxsYmFjazogZWxlbWVudC5wcm9wcy5IeWRyYXRlRmFsbGJhY2ssXG4gICAgICBlcnJvckVsZW1lbnQ6IGVsZW1lbnQucHJvcHMuZXJyb3JFbGVtZW50LFxuICAgICAgRXJyb3JCb3VuZGFyeTogZWxlbWVudC5wcm9wcy5FcnJvckJvdW5kYXJ5LFxuICAgICAgaGFzRXJyb3JCb3VuZGFyeTogZWxlbWVudC5wcm9wcy5oYXNFcnJvckJvdW5kYXJ5ID09PSB0cnVlIHx8IGVsZW1lbnQucHJvcHMuRXJyb3JCb3VuZGFyeSAhPSBudWxsIHx8IGVsZW1lbnQucHJvcHMuZXJyb3JFbGVtZW50ICE9IG51bGwsXG4gICAgICBzaG91bGRSZXZhbGlkYXRlOiBlbGVtZW50LnByb3BzLnNob3VsZFJldmFsaWRhdGUsXG4gICAgICBoYW5kbGU6IGVsZW1lbnQucHJvcHMuaGFuZGxlLFxuICAgICAgbGF6eTogZWxlbWVudC5wcm9wcy5sYXp5XG4gICAgfTtcbiAgICBpZiAoZWxlbWVudC5wcm9wcy5jaGlsZHJlbikge1xuICAgICAgcm91dGUuY2hpbGRyZW4gPSBjcmVhdGVSb3V0ZXNGcm9tQ2hpbGRyZW4oXG4gICAgICAgIGVsZW1lbnQucHJvcHMuY2hpbGRyZW4sXG4gICAgICAgIHRyZWVQYXRoXG4gICAgICApO1xuICAgIH1cbiAgICByb3V0ZXMucHVzaChyb3V0ZSk7XG4gIH0pO1xuICByZXR1cm4gcm91dGVzO1xufVxudmFyIGNyZWF0ZVJvdXRlc0Zyb21FbGVtZW50cyA9IGNyZWF0ZVJvdXRlc0Zyb21DaGlsZHJlbjtcbmZ1bmN0aW9uIHJlbmRlck1hdGNoZXMobWF0Y2hlcykge1xuICByZXR1cm4gX3JlbmRlck1hdGNoZXMobWF0Y2hlcyk7XG59XG5cbi8vIGxpYi9kb20vbGliLnRzeFxuaW1wb3J0ICogYXMgUmVhY3QxMCBmcm9tIFwicmVhY3RcIjtcblxuLy8gbGliL2RvbS9kb20udHNcbnZhciBkZWZhdWx0TWV0aG9kID0gXCJnZXRcIjtcbnZhciBkZWZhdWx0RW5jVHlwZSA9IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCI7XG5mdW5jdGlvbiBpc0h0bWxFbGVtZW50KG9iamVjdCkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgdHlwZW9mIG9iamVjdC50YWdOYW1lID09PSBcInN0cmluZ1wiO1xufVxuZnVuY3Rpb24gaXNCdXR0b25FbGVtZW50KG9iamVjdCkge1xuICByZXR1cm4gaXNIdG1sRWxlbWVudChvYmplY3QpICYmIG9iamVjdC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiYnV0dG9uXCI7XG59XG5mdW5jdGlvbiBpc0Zvcm1FbGVtZW50KG9iamVjdCkge1xuICByZXR1cm4gaXNIdG1sRWxlbWVudChvYmplY3QpICYmIG9iamVjdC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiZm9ybVwiO1xufVxuZnVuY3Rpb24gaXNJbnB1dEVsZW1lbnQob2JqZWN0KSB7XG4gIHJldHVybiBpc0h0bWxFbGVtZW50KG9iamVjdCkgJiYgb2JqZWN0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbnB1dFwiO1xufVxuZnVuY3Rpb24gaXNNb2RpZmllZEV2ZW50KGV2ZW50KSB7XG4gIHJldHVybiAhIShldmVudC5tZXRhS2V5IHx8IGV2ZW50LmFsdEtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50LnNoaWZ0S2V5KTtcbn1cbmZ1bmN0aW9uIHNob3VsZFByb2Nlc3NMaW5rQ2xpY2soZXZlbnQsIHRhcmdldCkge1xuICByZXR1cm4gZXZlbnQuYnV0dG9uID09PSAwICYmIC8vIElnbm9yZSBldmVyeXRoaW5nIGJ1dCBsZWZ0IGNsaWNrc1xuICAoIXRhcmdldCB8fCB0YXJnZXQgPT09IFwiX3NlbGZcIikgJiYgLy8gTGV0IGJyb3dzZXIgaGFuZGxlIFwidGFyZ2V0PV9ibGFua1wiIGV0Yy5cbiAgIWlzTW9kaWZpZWRFdmVudChldmVudCk7XG59XG5mdW5jdGlvbiBjcmVhdGVTZWFyY2hQYXJhbXMoaW5pdCA9IFwiXCIpIHtcbiAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXMoXG4gICAgdHlwZW9mIGluaXQgPT09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheShpbml0KSB8fCBpbml0IGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zID8gaW5pdCA6IE9iamVjdC5rZXlzKGluaXQpLnJlZHVjZSgobWVtbzIsIGtleSkgPT4ge1xuICAgICAgbGV0IHZhbHVlID0gaW5pdFtrZXldO1xuICAgICAgcmV0dXJuIG1lbW8yLmNvbmNhdChcbiAgICAgICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5tYXAoKHYpID0+IFtrZXksIHZdKSA6IFtba2V5LCB2YWx1ZV1dXG4gICAgICApO1xuICAgIH0sIFtdKVxuICApO1xufVxuZnVuY3Rpb24gZ2V0U2VhcmNoUGFyYW1zRm9yTG9jYXRpb24obG9jYXRpb25TZWFyY2gsIGRlZmF1bHRTZWFyY2hQYXJhbXMpIHtcbiAgbGV0IHNlYXJjaFBhcmFtcyA9IGNyZWF0ZVNlYXJjaFBhcmFtcyhsb2NhdGlvblNlYXJjaCk7XG4gIGlmIChkZWZhdWx0U2VhcmNoUGFyYW1zKSB7XG4gICAgZGVmYXVsdFNlYXJjaFBhcmFtcy5mb3JFYWNoKChfLCBrZXkpID0+IHtcbiAgICAgIGlmICghc2VhcmNoUGFyYW1zLmhhcyhrZXkpKSB7XG4gICAgICAgIGRlZmF1bHRTZWFyY2hQYXJhbXMuZ2V0QWxsKGtleSkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICBzZWFyY2hQYXJhbXMuYXBwZW5kKGtleSwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gc2VhcmNoUGFyYW1zO1xufVxudmFyIF9mb3JtRGF0YVN1cHBvcnRzU3VibWl0dGVyID0gbnVsbDtcbmZ1bmN0aW9uIGlzRm9ybURhdGFTdWJtaXR0ZXJTdXBwb3J0ZWQoKSB7XG4gIGlmIChfZm9ybURhdGFTdXBwb3J0c1N1Ym1pdHRlciA9PT0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICBuZXcgRm9ybURhdGEoXG4gICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmb3JtXCIpLFxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGlmIEZvcm1EYXRhIHN1cHBvcnRzIHRoZSBzdWJtaXR0ZXIgcGFyYW1ldGVyLCB0aGlzIHdpbGwgdGhyb3dcbiAgICAgICAgMFxuICAgICAgKTtcbiAgICAgIF9mb3JtRGF0YVN1cHBvcnRzU3VibWl0dGVyID0gZmFsc2U7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgX2Zvcm1EYXRhU3VwcG9ydHNTdWJtaXR0ZXIgPSB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gX2Zvcm1EYXRhU3VwcG9ydHNTdWJtaXR0ZXI7XG59XG52YXIgc3VwcG9ydGVkRm9ybUVuY1R5cGVzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW1xuICBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiLFxuICBcIm11bHRpcGFydC9mb3JtLWRhdGFcIixcbiAgXCJ0ZXh0L3BsYWluXCJcbl0pO1xuZnVuY3Rpb24gZ2V0Rm9ybUVuY1R5cGUoZW5jVHlwZSkge1xuICBpZiAoZW5jVHlwZSAhPSBudWxsICYmICFzdXBwb3J0ZWRGb3JtRW5jVHlwZXMuaGFzKGVuY1R5cGUpKSB7XG4gICAgd2FybmluZyhcbiAgICAgIGZhbHNlLFxuICAgICAgYFwiJHtlbmNUeXBlfVwiIGlzIG5vdCBhIHZhbGlkIFxcYGVuY1R5cGVcXGAgZm9yIFxcYDxGb3JtPlxcYC9cXGA8ZmV0Y2hlci5Gb3JtPlxcYCBhbmQgd2lsbCBkZWZhdWx0IHRvIFwiJHtkZWZhdWx0RW5jVHlwZX1cImBcbiAgICApO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBlbmNUeXBlO1xufVxuZnVuY3Rpb24gZ2V0Rm9ybVN1Ym1pc3Npb25JbmZvKHRhcmdldCwgYmFzZW5hbWUpIHtcbiAgbGV0IG1ldGhvZDtcbiAgbGV0IGFjdGlvbjtcbiAgbGV0IGVuY1R5cGU7XG4gIGxldCBmb3JtRGF0YTtcbiAgbGV0IGJvZHk7XG4gIGlmIChpc0Zvcm1FbGVtZW50KHRhcmdldCkpIHtcbiAgICBsZXQgYXR0ciA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoXCJhY3Rpb25cIik7XG4gICAgYWN0aW9uID0gYXR0ciA/IHN0cmlwQmFzZW5hbWUoYXR0ciwgYmFzZW5hbWUpIDogbnVsbDtcbiAgICBtZXRob2QgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKFwibWV0aG9kXCIpIHx8IGRlZmF1bHRNZXRob2Q7XG4gICAgZW5jVHlwZSA9IGdldEZvcm1FbmNUeXBlKHRhcmdldC5nZXRBdHRyaWJ1dGUoXCJlbmN0eXBlXCIpKSB8fCBkZWZhdWx0RW5jVHlwZTtcbiAgICBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSh0YXJnZXQpO1xuICB9IGVsc2UgaWYgKGlzQnV0dG9uRWxlbWVudCh0YXJnZXQpIHx8IGlzSW5wdXRFbGVtZW50KHRhcmdldCkgJiYgKHRhcmdldC50eXBlID09PSBcInN1Ym1pdFwiIHx8IHRhcmdldC50eXBlID09PSBcImltYWdlXCIpKSB7XG4gICAgbGV0IGZvcm0gPSB0YXJnZXQuZm9ybTtcbiAgICBpZiAoZm9ybSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDYW5ub3Qgc3VibWl0IGEgPGJ1dHRvbj4gb3IgPGlucHV0IHR5cGU9XCJzdWJtaXRcIj4gd2l0aG91dCBhIDxmb3JtPmBcbiAgICAgICk7XG4gICAgfVxuICAgIGxldCBhdHRyID0gdGFyZ2V0LmdldEF0dHJpYnV0ZShcImZvcm1hY3Rpb25cIikgfHwgZm9ybS5nZXRBdHRyaWJ1dGUoXCJhY3Rpb25cIik7XG4gICAgYWN0aW9uID0gYXR0ciA/IHN0cmlwQmFzZW5hbWUoYXR0ciwgYmFzZW5hbWUpIDogbnVsbDtcbiAgICBtZXRob2QgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKFwiZm9ybW1ldGhvZFwiKSB8fCBmb3JtLmdldEF0dHJpYnV0ZShcIm1ldGhvZFwiKSB8fCBkZWZhdWx0TWV0aG9kO1xuICAgIGVuY1R5cGUgPSBnZXRGb3JtRW5jVHlwZSh0YXJnZXQuZ2V0QXR0cmlidXRlKFwiZm9ybWVuY3R5cGVcIikpIHx8IGdldEZvcm1FbmNUeXBlKGZvcm0uZ2V0QXR0cmlidXRlKFwiZW5jdHlwZVwiKSkgfHwgZGVmYXVsdEVuY1R5cGU7XG4gICAgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoZm9ybSwgdGFyZ2V0KTtcbiAgICBpZiAoIWlzRm9ybURhdGFTdWJtaXR0ZXJTdXBwb3J0ZWQoKSkge1xuICAgICAgbGV0IHsgbmFtZSwgdHlwZSwgdmFsdWUgfSA9IHRhcmdldDtcbiAgICAgIGlmICh0eXBlID09PSBcImltYWdlXCIpIHtcbiAgICAgICAgbGV0IHByZWZpeCA9IG5hbWUgPyBgJHtuYW1lfS5gIDogXCJcIjtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGAke3ByZWZpeH14YCwgXCIwXCIpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoYCR7cHJlZml4fXlgLCBcIjBcIik7XG4gICAgICB9IGVsc2UgaWYgKG5hbWUpIHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKG5hbWUsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNIdG1sRWxlbWVudCh0YXJnZXQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYENhbm5vdCBzdWJtaXQgZWxlbWVudCB0aGF0IGlzIG5vdCA8Zm9ybT4sIDxidXR0b24+LCBvciA8aW5wdXQgdHlwZT1cInN1Ym1pdHxpbWFnZVwiPmBcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIG1ldGhvZCA9IGRlZmF1bHRNZXRob2Q7XG4gICAgYWN0aW9uID0gbnVsbDtcbiAgICBlbmNUeXBlID0gZGVmYXVsdEVuY1R5cGU7XG4gICAgYm9keSA9IHRhcmdldDtcbiAgfVxuICBpZiAoZm9ybURhdGEgJiYgZW5jVHlwZSA9PT0gXCJ0ZXh0L3BsYWluXCIpIHtcbiAgICBib2R5ID0gZm9ybURhdGE7XG4gICAgZm9ybURhdGEgPSB2b2lkIDA7XG4gIH1cbiAgcmV0dXJuIHsgYWN0aW9uLCBtZXRob2Q6IG1ldGhvZC50b0xvd2VyQ2FzZSgpLCBlbmNUeXBlLCBmb3JtRGF0YSwgYm9keSB9O1xufVxuXG4vLyBsaWIvZG9tL3Nzci9jb21wb25lbnRzLnRzeFxuaW1wb3J0ICogYXMgUmVhY3Q5IGZyb20gXCJyZWFjdFwiO1xuXG4vLyBsaWIvZG9tL3Nzci9pbnZhcmlhbnQudHNcbmZ1bmN0aW9uIGludmFyaWFudDIodmFsdWUsIG1lc3NhZ2UpIHtcbiAgaWYgKHZhbHVlID09PSBmYWxzZSB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIH1cbn1cblxuLy8gbGliL2RvbS9zc3Ivcm91dGVNb2R1bGVzLnRzXG5hc3luYyBmdW5jdGlvbiBsb2FkUm91dGVNb2R1bGUocm91dGUsIHJvdXRlTW9kdWxlc0NhY2hlKSB7XG4gIGlmIChyb3V0ZS5pZCBpbiByb3V0ZU1vZHVsZXNDYWNoZSkge1xuICAgIHJldHVybiByb3V0ZU1vZHVsZXNDYWNoZVtyb3V0ZS5pZF07XG4gIH1cbiAgdHJ5IHtcbiAgICBsZXQgcm91dGVNb2R1bGUgPSBhd2FpdCBpbXBvcnQoXG4gICAgICAvKiBAdml0ZS1pZ25vcmUgKi9cbiAgICAgIC8qIHdlYnBhY2tJZ25vcmU6IHRydWUgKi9cbiAgICAgIHJvdXRlLm1vZHVsZVxuICAgICk7XG4gICAgcm91dGVNb2R1bGVzQ2FjaGVbcm91dGUuaWRdID0gcm91dGVNb2R1bGU7XG4gICAgcmV0dXJuIHJvdXRlTW9kdWxlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBgRXJyb3IgbG9hZGluZyByb3V0ZSBtb2R1bGUgXFxgJHtyb3V0ZS5tb2R1bGV9XFxgLCByZWxvYWRpbmcgcGFnZS4uLmBcbiAgICApO1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIGlmICh3aW5kb3cuX19yZWFjdFJvdXRlckNvbnRleHQgJiYgd2luZG93Ll9fcmVhY3RSb3V0ZXJDb250ZXh0LmlzU3BhTW9kZSAmJiAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgaW1wb3J0Lm1ldGEuaG90KSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgoKSA9PiB7XG4gICAgfSk7XG4gIH1cbn1cblxuLy8gbGliL2RvbS9zc3IvbGlua3MudHNcbmZ1bmN0aW9uIGdldEtleWVkTGlua3NGb3JNYXRjaGVzKG1hdGNoZXMsIHJvdXRlTW9kdWxlcywgbWFuaWZlc3QpIHtcbiAgbGV0IGRlc2NyaXB0b3JzID0gbWF0Y2hlcy5tYXAoKG1hdGNoKSA9PiB7XG4gICAgbGV0IG1vZHVsZSA9IHJvdXRlTW9kdWxlc1ttYXRjaC5yb3V0ZS5pZF07XG4gICAgbGV0IHJvdXRlID0gbWFuaWZlc3Qucm91dGVzW21hdGNoLnJvdXRlLmlkXTtcbiAgICByZXR1cm4gW1xuICAgICAgcm91dGUgJiYgcm91dGUuY3NzID8gcm91dGUuY3NzLm1hcCgoaHJlZikgPT4gKHsgcmVsOiBcInN0eWxlc2hlZXRcIiwgaHJlZiB9KSkgOiBbXSxcbiAgICAgIG1vZHVsZT8ubGlua3M/LigpIHx8IFtdXG4gICAgXTtcbiAgfSkuZmxhdCgyKTtcbiAgbGV0IHByZWxvYWRzID0gZ2V0Q3VycmVudFBhZ2VNb2R1bGVQcmVsb2FkSHJlZnMobWF0Y2hlcywgbWFuaWZlc3QpO1xuICByZXR1cm4gZGVkdXBlTGlua0Rlc2NyaXB0b3JzKGRlc2NyaXB0b3JzLCBwcmVsb2Fkcyk7XG59XG5hc3luYyBmdW5jdGlvbiBwcmVmZXRjaFN0eWxlTGlua3Mocm91dGUsIHJvdXRlTW9kdWxlKSB7XG4gIGlmICghcm91dGUuY3NzICYmICFyb3V0ZU1vZHVsZS5saW5rcyB8fCAhaXNQcmVsb2FkU3VwcG9ydGVkKCkpIHJldHVybjtcbiAgbGV0IGRlc2NyaXB0b3JzID0gW107XG4gIGlmIChyb3V0ZS5jc3MpIHtcbiAgICBkZXNjcmlwdG9ycy5wdXNoKC4uLnJvdXRlLmNzcy5tYXAoKGhyZWYpID0+ICh7IHJlbDogXCJzdHlsZXNoZWV0XCIsIGhyZWYgfSkpKTtcbiAgfVxuICBpZiAocm91dGVNb2R1bGUubGlua3MpIHtcbiAgICBkZXNjcmlwdG9ycy5wdXNoKC4uLnJvdXRlTW9kdWxlLmxpbmtzKCkpO1xuICB9XG4gIGlmIChkZXNjcmlwdG9ycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgbGV0IHN0eWxlTGlua3MgPSBbXTtcbiAgZm9yIChsZXQgZGVzY3JpcHRvciBvZiBkZXNjcmlwdG9ycykge1xuICAgIGlmICghaXNQYWdlTGlua0Rlc2NyaXB0b3IoZGVzY3JpcHRvcikgJiYgZGVzY3JpcHRvci5yZWwgPT09IFwic3R5bGVzaGVldFwiKSB7XG4gICAgICBzdHlsZUxpbmtzLnB1c2goe1xuICAgICAgICAuLi5kZXNjcmlwdG9yLFxuICAgICAgICByZWw6IFwicHJlbG9hZFwiLFxuICAgICAgICBhczogXCJzdHlsZVwiXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgbGV0IG1hdGNoaW5nTGlua3MgPSBzdHlsZUxpbmtzLmZpbHRlcihcbiAgICAobGluaykgPT4gKCFsaW5rLm1lZGlhIHx8IHdpbmRvdy5tYXRjaE1lZGlhKGxpbmsubWVkaWEpLm1hdGNoZXMpICYmICFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBsaW5rW3JlbD1cInN0eWxlc2hlZXRcIl1baHJlZj1cIiR7bGluay5ocmVmfVwiXWApXG4gICk7XG4gIGF3YWl0IFByb21pc2UuYWxsKG1hdGNoaW5nTGlua3MubWFwKHByZWZldGNoU3R5bGVMaW5rKSk7XG59XG5hc3luYyBmdW5jdGlvbiBwcmVmZXRjaFN0eWxlTGluayhkZXNjcmlwdG9yKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGxldCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpbmtcIik7XG4gICAgT2JqZWN0LmFzc2lnbihsaW5rLCBkZXNjcmlwdG9yKTtcbiAgICBmdW5jdGlvbiByZW1vdmVMaW5rKCkge1xuICAgICAgaWYgKGRvY3VtZW50LmhlYWQuY29udGFpbnMobGluaykpIHtcbiAgICAgICAgZG9jdW1lbnQuaGVhZC5yZW1vdmVDaGlsZChsaW5rKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGluay5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICByZW1vdmVMaW5rKCk7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfTtcbiAgICBsaW5rLm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICByZW1vdmVMaW5rKCk7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfTtcbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmspO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGlzUGFnZUxpbmtEZXNjcmlwdG9yKG9iamVjdCkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgdHlwZW9mIG9iamVjdC5wYWdlID09PSBcInN0cmluZ1wiO1xufVxuZnVuY3Rpb24gaXNIdG1sTGlua0Rlc2NyaXB0b3Iob2JqZWN0KSB7XG4gIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAob2JqZWN0LmhyZWYgPT0gbnVsbCkge1xuICAgIHJldHVybiBvYmplY3QucmVsID09PSBcInByZWxvYWRcIiAmJiB0eXBlb2Ygb2JqZWN0LmltYWdlU3JjU2V0ID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiBvYmplY3QuaW1hZ2VTaXplcyA9PT0gXCJzdHJpbmdcIjtcbiAgfVxuICByZXR1cm4gdHlwZW9mIG9iamVjdC5yZWwgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIG9iamVjdC5ocmVmID09PSBcInN0cmluZ1wiO1xufVxuYXN5bmMgZnVuY3Rpb24gZ2V0S2V5ZWRQcmVmZXRjaExpbmtzKG1hdGNoZXMsIG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMpIHtcbiAgbGV0IGxpbmtzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgbWF0Y2hlcy5tYXAoYXN5bmMgKG1hdGNoKSA9PiB7XG4gICAgICBsZXQgcm91dGUgPSBtYW5pZmVzdC5yb3V0ZXNbbWF0Y2gucm91dGUuaWRdO1xuICAgICAgaWYgKHJvdXRlKSB7XG4gICAgICAgIGxldCBtb2QgPSBhd2FpdCBsb2FkUm91dGVNb2R1bGUocm91dGUsIHJvdXRlTW9kdWxlcyk7XG4gICAgICAgIHJldHVybiBtb2QubGlua3MgPyBtb2QubGlua3MoKSA6IFtdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtdO1xuICAgIH0pXG4gICk7XG4gIHJldHVybiBkZWR1cGVMaW5rRGVzY3JpcHRvcnMoXG4gICAgbGlua3MuZmxhdCgxKS5maWx0ZXIoaXNIdG1sTGlua0Rlc2NyaXB0b3IpLmZpbHRlcigobGluaykgPT4gbGluay5yZWwgPT09IFwic3R5bGVzaGVldFwiIHx8IGxpbmsucmVsID09PSBcInByZWxvYWRcIikubWFwKFxuICAgICAgKGxpbmspID0+IGxpbmsucmVsID09PSBcInN0eWxlc2hlZXRcIiA/IHsgLi4ubGluaywgcmVsOiBcInByZWZldGNoXCIsIGFzOiBcInN0eWxlXCIgfSA6IHsgLi4ubGluaywgcmVsOiBcInByZWZldGNoXCIgfVxuICAgIClcbiAgKTtcbn1cbmZ1bmN0aW9uIGdldE5ld01hdGNoZXNGb3JMaW5rcyhwYWdlLCBuZXh0TWF0Y2hlcywgY3VycmVudE1hdGNoZXMsIG1hbmlmZXN0LCBsb2NhdGlvbiwgbW9kZSkge1xuICBsZXQgaXNOZXcgPSAobWF0Y2gsIGluZGV4KSA9PiB7XG4gICAgaWYgKCFjdXJyZW50TWF0Y2hlc1tpbmRleF0pIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBtYXRjaC5yb3V0ZS5pZCAhPT0gY3VycmVudE1hdGNoZXNbaW5kZXhdLnJvdXRlLmlkO1xuICB9O1xuICBsZXQgbWF0Y2hQYXRoQ2hhbmdlZCA9IChtYXRjaCwgaW5kZXgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgLy8gcGFyYW0gY2hhbmdlLCAvdXNlcnMvMTIzIC0+IC91c2Vycy80NTZcbiAgICAgIGN1cnJlbnRNYXRjaGVzW2luZGV4XS5wYXRobmFtZSAhPT0gbWF0Y2gucGF0aG5hbWUgfHwgLy8gc3BsYXQgcGFyYW0gY2hhbmdlZCwgd2hpY2ggaXMgbm90IHByZXNlbnQgaW4gbWF0Y2gucGF0aFxuICAgICAgLy8gZS5nLiAvZmlsZXMvaW1hZ2VzL2F2YXRhci5qcGcgLT4gZmlsZXMvZmluYW5jZXMueGxzXG4gICAgICBjdXJyZW50TWF0Y2hlc1tpbmRleF0ucm91dGUucGF0aD8uZW5kc1dpdGgoXCIqXCIpICYmIGN1cnJlbnRNYXRjaGVzW2luZGV4XS5wYXJhbXNbXCIqXCJdICE9PSBtYXRjaC5wYXJhbXNbXCIqXCJdXG4gICAgKTtcbiAgfTtcbiAgaWYgKG1vZGUgPT09IFwiYXNzZXRzXCIpIHtcbiAgICByZXR1cm4gbmV4dE1hdGNoZXMuZmlsdGVyKFxuICAgICAgKG1hdGNoLCBpbmRleCkgPT4gaXNOZXcobWF0Y2gsIGluZGV4KSB8fCBtYXRjaFBhdGhDaGFuZ2VkKG1hdGNoLCBpbmRleClcbiAgICApO1xuICB9XG4gIGlmIChtb2RlID09PSBcImRhdGFcIikge1xuICAgIHJldHVybiBuZXh0TWF0Y2hlcy5maWx0ZXIoKG1hdGNoLCBpbmRleCkgPT4ge1xuICAgICAgbGV0IG1hbmlmZXN0Um91dGUgPSBtYW5pZmVzdC5yb3V0ZXNbbWF0Y2gucm91dGUuaWRdO1xuICAgICAgaWYgKCFtYW5pZmVzdFJvdXRlIHx8ICFtYW5pZmVzdFJvdXRlLmhhc0xvYWRlcikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoaXNOZXcobWF0Y2gsIGluZGV4KSB8fCBtYXRjaFBhdGhDaGFuZ2VkKG1hdGNoLCBpbmRleCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAobWF0Y2gucm91dGUuc2hvdWxkUmV2YWxpZGF0ZSkge1xuICAgICAgICBsZXQgcm91dGVDaG9pY2UgPSBtYXRjaC5yb3V0ZS5zaG91bGRSZXZhbGlkYXRlKHtcbiAgICAgICAgICBjdXJyZW50VXJsOiBuZXcgVVJMKFxuICAgICAgICAgICAgbG9jYXRpb24ucGF0aG5hbWUgKyBsb2NhdGlvbi5zZWFyY2ggKyBsb2NhdGlvbi5oYXNoLFxuICAgICAgICAgICAgd2luZG93Lm9yaWdpblxuICAgICAgICAgICksXG4gICAgICAgICAgY3VycmVudFBhcmFtczogY3VycmVudE1hdGNoZXNbMF0/LnBhcmFtcyB8fCB7fSxcbiAgICAgICAgICBuZXh0VXJsOiBuZXcgVVJMKHBhZ2UsIHdpbmRvdy5vcmlnaW4pLFxuICAgICAgICAgIG5leHRQYXJhbXM6IG1hdGNoLnBhcmFtcyxcbiAgICAgICAgICBkZWZhdWx0U2hvdWxkUmV2YWxpZGF0ZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHR5cGVvZiByb3V0ZUNob2ljZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICByZXR1cm4gcm91dGVDaG9pY2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBbXTtcbn1cbmZ1bmN0aW9uIGdldE1vZHVsZUxpbmtIcmVmcyhtYXRjaGVzLCBtYW5pZmVzdFBhdGNoKSB7XG4gIHJldHVybiBkZWR1cGVIcmVmcyhcbiAgICBtYXRjaGVzLm1hcCgobWF0Y2gpID0+IHtcbiAgICAgIGxldCByb3V0ZSA9IG1hbmlmZXN0UGF0Y2gucm91dGVzW21hdGNoLnJvdXRlLmlkXTtcbiAgICAgIGlmICghcm91dGUpIHJldHVybiBbXTtcbiAgICAgIGxldCBocmVmcyA9IFtyb3V0ZS5tb2R1bGVdO1xuICAgICAgaWYgKHJvdXRlLmltcG9ydHMpIHtcbiAgICAgICAgaHJlZnMgPSBocmVmcy5jb25jYXQocm91dGUuaW1wb3J0cyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaHJlZnM7XG4gICAgfSkuZmxhdCgxKVxuICApO1xufVxuZnVuY3Rpb24gZ2V0Q3VycmVudFBhZ2VNb2R1bGVQcmVsb2FkSHJlZnMobWF0Y2hlcywgbWFuaWZlc3QpIHtcbiAgcmV0dXJuIGRlZHVwZUhyZWZzKFxuICAgIG1hdGNoZXMubWFwKChtYXRjaCkgPT4ge1xuICAgICAgbGV0IHJvdXRlID0gbWFuaWZlc3Qucm91dGVzW21hdGNoLnJvdXRlLmlkXTtcbiAgICAgIGlmICghcm91dGUpIHJldHVybiBbXTtcbiAgICAgIGxldCBocmVmcyA9IFtyb3V0ZS5tb2R1bGVdO1xuICAgICAgaWYgKHJvdXRlLmltcG9ydHMpIHtcbiAgICAgICAgaHJlZnMgPSBocmVmcy5jb25jYXQocm91dGUuaW1wb3J0cyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaHJlZnM7XG4gICAgfSkuZmxhdCgxKVxuICApO1xufVxuZnVuY3Rpb24gZGVkdXBlSHJlZnMoaHJlZnMpIHtcbiAgcmV0dXJuIFsuLi5uZXcgU2V0KGhyZWZzKV07XG59XG5mdW5jdGlvbiBzb3J0S2V5cyhvYmopIHtcbiAgbGV0IHNvcnRlZCA9IHt9O1xuICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKG9iaikuc29ydCgpO1xuICBmb3IgKGxldCBrZXkgb2Yga2V5cykge1xuICAgIHNvcnRlZFtrZXldID0gb2JqW2tleV07XG4gIH1cbiAgcmV0dXJuIHNvcnRlZDtcbn1cbmZ1bmN0aW9uIGRlZHVwZUxpbmtEZXNjcmlwdG9ycyhkZXNjcmlwdG9ycywgcHJlbG9hZHMpIHtcbiAgbGV0IHNldCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gIGxldCBwcmVsb2Fkc1NldCA9IG5ldyBTZXQocHJlbG9hZHMpO1xuICByZXR1cm4gZGVzY3JpcHRvcnMucmVkdWNlKChkZWR1cGVkLCBkZXNjcmlwdG9yKSA9PiB7XG4gICAgbGV0IGFscmVhZHlNb2R1bGVQcmVsb2FkID0gcHJlbG9hZHMgJiYgIWlzUGFnZUxpbmtEZXNjcmlwdG9yKGRlc2NyaXB0b3IpICYmIGRlc2NyaXB0b3IuYXMgPT09IFwic2NyaXB0XCIgJiYgZGVzY3JpcHRvci5ocmVmICYmIHByZWxvYWRzU2V0LmhhcyhkZXNjcmlwdG9yLmhyZWYpO1xuICAgIGlmIChhbHJlYWR5TW9kdWxlUHJlbG9hZCkge1xuICAgICAgcmV0dXJuIGRlZHVwZWQ7XG4gICAgfVxuICAgIGxldCBrZXkgPSBKU09OLnN0cmluZ2lmeShzb3J0S2V5cyhkZXNjcmlwdG9yKSk7XG4gICAgaWYgKCFzZXQuaGFzKGtleSkpIHtcbiAgICAgIHNldC5hZGQoa2V5KTtcbiAgICAgIGRlZHVwZWQucHVzaCh7IGtleSwgbGluazogZGVzY3JpcHRvciB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGRlZHVwZWQ7XG4gIH0sIFtdKTtcbn1cbnZhciBfaXNQcmVsb2FkU3VwcG9ydGVkO1xuZnVuY3Rpb24gaXNQcmVsb2FkU3VwcG9ydGVkKCkge1xuICBpZiAoX2lzUHJlbG9hZFN1cHBvcnRlZCAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIF9pc1ByZWxvYWRTdXBwb3J0ZWQ7XG4gIH1cbiAgbGV0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpbmtcIik7XG4gIF9pc1ByZWxvYWRTdXBwb3J0ZWQgPSBlbC5yZWxMaXN0LnN1cHBvcnRzKFwicHJlbG9hZFwiKTtcbiAgZWwgPSBudWxsO1xuICByZXR1cm4gX2lzUHJlbG9hZFN1cHBvcnRlZDtcbn1cblxuLy8gbGliL2RvbS9zc3IvbWFya3VwLnRzXG52YXIgRVNDQVBFX0xPT0tVUCA9IHtcbiAgXCImXCI6IFwiXFxcXHUwMDI2XCIsXG4gIFwiPlwiOiBcIlxcXFx1MDAzZVwiLFxuICBcIjxcIjogXCJcXFxcdTAwM2NcIixcbiAgXCJcXHUyMDI4XCI6IFwiXFxcXHUyMDI4XCIsXG4gIFwiXFx1MjAyOVwiOiBcIlxcXFx1MjAyOVwiXG59O1xudmFyIEVTQ0FQRV9SRUdFWCA9IC9bJj48XFx1MjAyOFxcdTIwMjldL2c7XG5mdW5jdGlvbiBlc2NhcGVIdG1sKGh0bWwpIHtcbiAgcmV0dXJuIGh0bWwucmVwbGFjZShFU0NBUEVfUkVHRVgsIChtYXRjaCkgPT4gRVNDQVBFX0xPT0tVUFttYXRjaF0pO1xufVxuZnVuY3Rpb24gY3JlYXRlSHRtbChodG1sKSB7XG4gIHJldHVybiB7IF9faHRtbDogaHRtbCB9O1xufVxuXG4vLyBsaWIvZG9tL3Nzci9zaW5nbGUtZmV0Y2gudHN4XG5pbXBvcnQgKiBhcyBSZWFjdDQgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBkZWNvZGUgfSBmcm9tIFwidHVyYm8tc3RyZWFtXCI7XG5cbi8vIGxpYi9kb20vc3NyL2RhdGEudHNcbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3RJbml0KHJlcXVlc3QpIHtcbiAgbGV0IGluaXQgPSB7IHNpZ25hbDogcmVxdWVzdC5zaWduYWwgfTtcbiAgaWYgKHJlcXVlc3QubWV0aG9kICE9PSBcIkdFVFwiKSB7XG4gICAgaW5pdC5tZXRob2QgPSByZXF1ZXN0Lm1ldGhvZDtcbiAgICBsZXQgY29udGVudFR5cGUgPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KFwiQ29udGVudC1UeXBlXCIpO1xuICAgIGlmIChjb250ZW50VHlwZSAmJiAvXFxiYXBwbGljYXRpb25cXC9qc29uXFxiLy50ZXN0KGNvbnRlbnRUeXBlKSkge1xuICAgICAgaW5pdC5oZWFkZXJzID0geyBcIkNvbnRlbnQtVHlwZVwiOiBjb250ZW50VHlwZSB9O1xuICAgICAgaW5pdC5ib2R5ID0gSlNPTi5zdHJpbmdpZnkoYXdhaXQgcmVxdWVzdC5qc29uKCkpO1xuICAgIH0gZWxzZSBpZiAoY29udGVudFR5cGUgJiYgL1xcYnRleHRcXC9wbGFpblxcYi8udGVzdChjb250ZW50VHlwZSkpIHtcbiAgICAgIGluaXQuaGVhZGVycyA9IHsgXCJDb250ZW50LVR5cGVcIjogY29udGVudFR5cGUgfTtcbiAgICAgIGluaXQuYm9keSA9IGF3YWl0IHJlcXVlc3QudGV4dCgpO1xuICAgIH0gZWxzZSBpZiAoY29udGVudFR5cGUgJiYgL1xcYmFwcGxpY2F0aW9uXFwveC13d3ctZm9ybS11cmxlbmNvZGVkXFxiLy50ZXN0KGNvbnRlbnRUeXBlKSkge1xuICAgICAgaW5pdC5ib2R5ID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhhd2FpdCByZXF1ZXN0LnRleHQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluaXQuYm9keSA9IGF3YWl0IHJlcXVlc3QuZm9ybURhdGEoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluaXQ7XG59XG5cbi8vIGxpYi9kb20vc3NyL3NpbmdsZS1mZXRjaC50c3hcbnZhciBTaW5nbGVGZXRjaFJlZGlyZWN0U3ltYm9sID0gU3ltYm9sKFwiU2luZ2xlRmV0Y2hSZWRpcmVjdFwiKTtcbmZ1bmN0aW9uIFN0cmVhbVRyYW5zZmVyKHtcbiAgY29udGV4dCxcbiAgaWRlbnRpZmllcixcbiAgcmVhZGVyLFxuICB0ZXh0RGVjb2RlcixcbiAgbm9uY2Vcbn0pIHtcbiAgaWYgKCFjb250ZXh0LnJlbmRlck1ldGEgfHwgIWNvbnRleHQucmVuZGVyTWV0YS5kaWRSZW5kZXJTY3JpcHRzKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKCFjb250ZXh0LnJlbmRlck1ldGEuc3RyZWFtQ2FjaGUpIHtcbiAgICBjb250ZXh0LnJlbmRlck1ldGEuc3RyZWFtQ2FjaGUgPSB7fTtcbiAgfVxuICBsZXQgeyBzdHJlYW1DYWNoZSB9ID0gY29udGV4dC5yZW5kZXJNZXRhO1xuICBsZXQgcHJvbWlzZSA9IHN0cmVhbUNhY2hlW2lkZW50aWZpZXJdO1xuICBpZiAoIXByb21pc2UpIHtcbiAgICBwcm9taXNlID0gc3RyZWFtQ2FjaGVbaWRlbnRpZmllcl0gPSByZWFkZXIucmVhZCgpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgc3RyZWFtQ2FjaGVbaWRlbnRpZmllcl0ucmVzdWx0ID0ge1xuICAgICAgICBkb25lOiByZXN1bHQuZG9uZSxcbiAgICAgICAgdmFsdWU6IHRleHREZWNvZGVyLmRlY29kZShyZXN1bHQudmFsdWUsIHsgc3RyZWFtOiB0cnVlIH0pXG4gICAgICB9O1xuICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICBzdHJlYW1DYWNoZVtpZGVudGlmaWVyXS5lcnJvciA9IGU7XG4gICAgfSk7XG4gIH1cbiAgaWYgKHByb21pc2UuZXJyb3IpIHtcbiAgICB0aHJvdyBwcm9taXNlLmVycm9yO1xuICB9XG4gIGlmIChwcm9taXNlLnJlc3VsdCA9PT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgcHJvbWlzZTtcbiAgfVxuICBsZXQgeyBkb25lLCB2YWx1ZSB9ID0gcHJvbWlzZS5yZXN1bHQ7XG4gIGxldCBzY3JpcHRUYWcgPSB2YWx1ZSA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDQuY3JlYXRlRWxlbWVudChcbiAgICBcInNjcmlwdFwiLFxuICAgIHtcbiAgICAgIG5vbmNlLFxuICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgX19odG1sOiBgd2luZG93Ll9fcmVhY3RSb3V0ZXJDb250ZXh0LnN0cmVhbUNvbnRyb2xsZXIuZW5xdWV1ZSgke2VzY2FwZUh0bWwoXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodmFsdWUpXG4gICAgICAgICl9KTtgXG4gICAgICB9XG4gICAgfVxuICApIDogbnVsbDtcbiAgaWYgKGRvbmUpIHtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0NC5jcmVhdGVFbGVtZW50KFJlYWN0NC5GcmFnbWVudCwgbnVsbCwgc2NyaXB0VGFnLCAvKiBAX19QVVJFX18gKi8gUmVhY3Q0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICBcInNjcmlwdFwiLFxuICAgICAge1xuICAgICAgICBub25jZSxcbiAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgICBfX2h0bWw6IGB3aW5kb3cuX19yZWFjdFJvdXRlckNvbnRleHQuc3RyZWFtQ29udHJvbGxlci5jbG9zZSgpO2BcbiAgICAgICAgfVxuICAgICAgfVxuICAgICkpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3Q0LmNyZWF0ZUVsZW1lbnQoUmVhY3Q0LkZyYWdtZW50LCBudWxsLCBzY3JpcHRUYWcsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDQuY3JlYXRlRWxlbWVudChSZWFjdDQuU3VzcGVuc2UsIG51bGwsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDQuY3JlYXRlRWxlbWVudChcbiAgICAgIFN0cmVhbVRyYW5zZmVyLFxuICAgICAge1xuICAgICAgICBjb250ZXh0LFxuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyICsgMSxcbiAgICAgICAgcmVhZGVyLFxuICAgICAgICB0ZXh0RGVjb2RlcixcbiAgICAgICAgbm9uY2VcbiAgICAgIH1cbiAgICApKSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGdldFNpbmdsZUZldGNoRGF0YVN0cmF0ZWd5KG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMsIGdldFJvdXRlcikge1xuICByZXR1cm4gYXN5bmMgKHsgcmVxdWVzdCwgbWF0Y2hlcywgZmV0Y2hlcktleSB9KSA9PiB7XG4gICAgaWYgKHJlcXVlc3QubWV0aG9kICE9PSBcIkdFVFwiKSB7XG4gICAgICByZXR1cm4gc2luZ2xlRmV0Y2hBY3Rpb25TdHJhdGVneShyZXF1ZXN0LCBtYXRjaGVzKTtcbiAgICB9XG4gICAgaWYgKGZldGNoZXJLZXkpIHtcbiAgICAgIHJldHVybiBzaW5nbGVGZXRjaExvYWRlckZldGNoZXJTdHJhdGVneShyZXF1ZXN0LCBtYXRjaGVzKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpbmdsZUZldGNoTG9hZGVyTmF2aWdhdGlvblN0cmF0ZWd5KFxuICAgICAgbWFuaWZlc3QsXG4gICAgICByb3V0ZU1vZHVsZXMsXG4gICAgICBnZXRSb3V0ZXIoKSxcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtYXRjaGVzXG4gICAgKTtcbiAgfTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHNpbmdsZUZldGNoQWN0aW9uU3RyYXRlZ3kocmVxdWVzdCwgbWF0Y2hlcykge1xuICBsZXQgYWN0aW9uTWF0Y2ggPSBtYXRjaGVzLmZpbmQoKG0pID0+IG0uc2hvdWxkTG9hZCk7XG4gIGludmFyaWFudDIoYWN0aW9uTWF0Y2gsIFwiTm8gYWN0aW9uIG1hdGNoIGZvdW5kXCIpO1xuICBsZXQgYWN0aW9uU3RhdHVzID0gdm9pZCAwO1xuICBsZXQgcmVzdWx0ID0gYXdhaXQgYWN0aW9uTWF0Y2gucmVzb2x2ZShhc3luYyAoaGFuZGxlcikgPT4ge1xuICAgIGxldCByZXN1bHQyID0gYXdhaXQgaGFuZGxlcihhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgdXJsID0gc2luZ2xlRmV0Y2hVcmwocmVxdWVzdC51cmwpO1xuICAgICAgbGV0IGluaXQgPSBhd2FpdCBjcmVhdGVSZXF1ZXN0SW5pdChyZXF1ZXN0KTtcbiAgICAgIGxldCB7IGRhdGE6IGRhdGEyLCBzdGF0dXMgfSA9IGF3YWl0IGZldGNoQW5kRGVjb2RlKHVybCwgaW5pdCk7XG4gICAgICBhY3Rpb25TdGF0dXMgPSBzdGF0dXM7XG4gICAgICByZXR1cm4gdW53cmFwU2luZ2xlRmV0Y2hSZXN1bHQoXG4gICAgICAgIGRhdGEyLFxuICAgICAgICBhY3Rpb25NYXRjaC5yb3V0ZS5pZFxuICAgICAgKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0MjtcbiAgfSk7XG4gIGlmIChpc1Jlc3BvbnNlKHJlc3VsdC5yZXN1bHQpIHx8IGlzUm91dGVFcnJvclJlc3BvbnNlKHJlc3VsdC5yZXN1bHQpKSB7XG4gICAgcmV0dXJuIHsgW2FjdGlvbk1hdGNoLnJvdXRlLmlkXTogcmVzdWx0IH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBbYWN0aW9uTWF0Y2gucm91dGUuaWRdOiB7XG4gICAgICB0eXBlOiByZXN1bHQudHlwZSxcbiAgICAgIHJlc3VsdDogZGF0YShyZXN1bHQucmVzdWx0LCBhY3Rpb25TdGF0dXMpXG4gICAgfVxuICB9O1xufVxuYXN5bmMgZnVuY3Rpb24gc2luZ2xlRmV0Y2hMb2FkZXJOYXZpZ2F0aW9uU3RyYXRlZ3kobWFuaWZlc3QsIHJvdXRlTW9kdWxlcywgcm91dGVyLCByZXF1ZXN0LCBtYXRjaGVzKSB7XG4gIGxldCByb3V0ZXNQYXJhbXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICBsZXQgZm91bmRPcHRPdXRSb3V0ZSA9IGZhbHNlO1xuICBsZXQgcm91dGVEZmRzID0gbWF0Y2hlcy5tYXAoKCkgPT4gY3JlYXRlRGVmZXJyZWQyKCkpO1xuICBsZXQgcm91dGVzTG9hZGVkUHJvbWlzZSA9IFByb21pc2UuYWxsKHJvdXRlRGZkcy5tYXAoKGQpID0+IGQucHJvbWlzZSkpO1xuICBsZXQgc2luZ2xlRmV0Y2hEZmQgPSBjcmVhdGVEZWZlcnJlZDIoKTtcbiAgbGV0IHVybCA9IHN0cmlwSW5kZXhQYXJhbShzaW5nbGVGZXRjaFVybChyZXF1ZXN0LnVybCkpO1xuICBsZXQgaW5pdCA9IGF3YWl0IGNyZWF0ZVJlcXVlc3RJbml0KHJlcXVlc3QpO1xuICBsZXQgcmVzdWx0cyA9IHt9O1xuICBsZXQgcmVzb2x2ZVByb21pc2UgPSBQcm9taXNlLmFsbChcbiAgICBtYXRjaGVzLm1hcChcbiAgICAgIGFzeW5jIChtLCBpKSA9PiBtLnJlc29sdmUoYXN5bmMgKGhhbmRsZXIpID0+IHtcbiAgICAgICAgcm91dGVEZmRzW2ldLnJlc29sdmUoKTtcbiAgICAgICAgbGV0IG1hbmlmZXN0Um91dGUgPSBtYW5pZmVzdC5yb3V0ZXNbbS5yb3V0ZS5pZF07XG4gICAgICAgIGlmICghbS5zaG91bGRMb2FkKSB7XG4gICAgICAgICAgaWYgKCFyb3V0ZXIuc3RhdGUuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG0ucm91dGUuaWQgaW4gcm91dGVyLnN0YXRlLmxvYWRlckRhdGEgJiYgbWFuaWZlc3RSb3V0ZSAmJiBtYW5pZmVzdFJvdXRlLmhhc0xvYWRlciAmJiByb3V0ZU1vZHVsZXNbbS5yb3V0ZS5pZF0/LnNob3VsZFJldmFsaWRhdGUpIHtcbiAgICAgICAgICAgIGZvdW5kT3B0T3V0Um91dGUgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWFuaWZlc3RSb3V0ZSAmJiBtYW5pZmVzdFJvdXRlLmhhc0NsaWVudExvYWRlcikge1xuICAgICAgICAgIGlmIChtYW5pZmVzdFJvdXRlLmhhc0xvYWRlcikge1xuICAgICAgICAgICAgZm91bmRPcHRPdXRSb3V0ZSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgZmV0Y2hTaW5nbGVMb2FkZXIoXG4gICAgICAgICAgICAgIGhhbmRsZXIsXG4gICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgaW5pdCxcbiAgICAgICAgICAgICAgbS5yb3V0ZS5pZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJlc3VsdHNbbS5yb3V0ZS5pZF0gPSB7IHR5cGU6IFwiZGF0YVwiLCByZXN1bHQgfTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXN1bHRzW20ucm91dGUuaWRdID0geyB0eXBlOiBcImVycm9yXCIsIHJlc3VsdDogZSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hbmlmZXN0Um91dGUgJiYgbWFuaWZlc3RSb3V0ZS5oYXNMb2FkZXIpIHtcbiAgICAgICAgICByb3V0ZXNQYXJhbXMuYWRkKG0ucm91dGUuaWQpO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGhhbmRsZXIoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgbGV0IGRhdGEyID0gYXdhaXQgc2luZ2xlRmV0Y2hEZmQucHJvbWlzZTtcbiAgICAgICAgICAgIHJldHVybiB1bndyYXBTaW5nbGVGZXRjaFJlc3VsdHMoZGF0YTIsIG0ucm91dGUuaWQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJlc3VsdHNbbS5yb3V0ZS5pZF0gPSB7XG4gICAgICAgICAgICB0eXBlOiBcImRhdGFcIixcbiAgICAgICAgICAgIHJlc3VsdFxuICAgICAgICAgIH07XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICByZXN1bHRzW20ucm91dGUuaWRdID0ge1xuICAgICAgICAgICAgdHlwZTogXCJlcnJvclwiLFxuICAgICAgICAgICAgcmVzdWx0OiBlXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICk7XG4gIGF3YWl0IHJvdXRlc0xvYWRlZFByb21pc2U7XG4gIGlmICgoIXJvdXRlci5zdGF0ZS5pbml0aWFsaXplZCB8fCByb3V0ZXNQYXJhbXMuc2l6ZSA9PT0gMCkgJiYgIXdpbmRvdy5fX3JlYWN0Um91dGVySGRyQWN0aXZlKSB7XG4gICAgc2luZ2xlRmV0Y2hEZmQucmVzb2x2ZSh7fSk7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChmb3VuZE9wdE91dFJvdXRlICYmIHJvdXRlc1BhcmFtcy5zaXplID4gMCkge1xuICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldChcbiAgICAgICAgICBcIl9yb3V0ZXNcIixcbiAgICAgICAgICBtYXRjaGVzLmZpbHRlcigobSkgPT4gcm91dGVzUGFyYW1zLmhhcyhtLnJvdXRlLmlkKSkubWFwKChtKSA9PiBtLnJvdXRlLmlkKS5qb2luKFwiLFwiKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgbGV0IGRhdGEyID0gYXdhaXQgZmV0Y2hBbmREZWNvZGUodXJsLCBpbml0KTtcbiAgICAgIHNpbmdsZUZldGNoRGZkLnJlc29sdmUoZGF0YTIuZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgc2luZ2xlRmV0Y2hEZmQucmVqZWN0KGUpO1xuICAgIH1cbiAgfVxuICBhd2FpdCByZXNvbHZlUHJvbWlzZTtcbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5hc3luYyBmdW5jdGlvbiBzaW5nbGVGZXRjaExvYWRlckZldGNoZXJTdHJhdGVneShyZXF1ZXN0LCBtYXRjaGVzKSB7XG4gIGxldCBmZXRjaGVyTWF0Y2ggPSBtYXRjaGVzLmZpbmQoKG0pID0+IG0uc2hvdWxkTG9hZCk7XG4gIGludmFyaWFudDIoZmV0Y2hlck1hdGNoLCBcIk5vIGZldGNoZXIgbWF0Y2ggZm91bmRcIik7XG4gIGxldCByZXN1bHQgPSBhd2FpdCBmZXRjaGVyTWF0Y2gucmVzb2x2ZShhc3luYyAoaGFuZGxlcikgPT4ge1xuICAgIGxldCB1cmwgPSBzdHJpcEluZGV4UGFyYW0oc2luZ2xlRmV0Y2hVcmwocmVxdWVzdC51cmwpKTtcbiAgICBsZXQgaW5pdCA9IGF3YWl0IGNyZWF0ZVJlcXVlc3RJbml0KHJlcXVlc3QpO1xuICAgIHJldHVybiBmZXRjaFNpbmdsZUxvYWRlcihoYW5kbGVyLCB1cmwsIGluaXQsIGZldGNoZXJNYXRjaC5yb3V0ZS5pZCk7XG4gIH0pO1xuICByZXR1cm4geyBbZmV0Y2hlck1hdGNoLnJvdXRlLmlkXTogcmVzdWx0IH07XG59XG5mdW5jdGlvbiBmZXRjaFNpbmdsZUxvYWRlcihoYW5kbGVyLCB1cmwsIGluaXQsIHJvdXRlSWQpIHtcbiAgcmV0dXJuIGhhbmRsZXIoYXN5bmMgKCkgPT4ge1xuICAgIGxldCBzaW5nbGVMb2FkZXJVcmwgPSBuZXcgVVJMKHVybCk7XG4gICAgc2luZ2xlTG9hZGVyVXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJfcm91dGVzXCIsIHJvdXRlSWQpO1xuICAgIGxldCB7IGRhdGE6IGRhdGEyIH0gPSBhd2FpdCBmZXRjaEFuZERlY29kZShzaW5nbGVMb2FkZXJVcmwsIGluaXQpO1xuICAgIHJldHVybiB1bndyYXBTaW5nbGVGZXRjaFJlc3VsdHMoZGF0YTIsIHJvdXRlSWQpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHN0cmlwSW5kZXhQYXJhbSh1cmwpIHtcbiAgbGV0IGluZGV4VmFsdWVzID0gdXJsLnNlYXJjaFBhcmFtcy5nZXRBbGwoXCJpbmRleFwiKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5kZWxldGUoXCJpbmRleFwiKTtcbiAgbGV0IGluZGV4VmFsdWVzVG9LZWVwID0gW107XG4gIGZvciAobGV0IGluZGV4VmFsdWUgb2YgaW5kZXhWYWx1ZXMpIHtcbiAgICBpZiAoaW5kZXhWYWx1ZSkge1xuICAgICAgaW5kZXhWYWx1ZXNUb0tlZXAucHVzaChpbmRleFZhbHVlKTtcbiAgICB9XG4gIH1cbiAgZm9yIChsZXQgdG9LZWVwIG9mIGluZGV4VmFsdWVzVG9LZWVwKSB7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoXCJpbmRleFwiLCB0b0tlZXApO1xuICB9XG4gIHJldHVybiB1cmw7XG59XG5mdW5jdGlvbiBzaW5nbGVGZXRjaFVybChyZXFVcmwpIHtcbiAgbGV0IHVybCA9IHR5cGVvZiByZXFVcmwgPT09IFwic3RyaW5nXCIgPyBuZXcgVVJMKFxuICAgIHJlcVVybCxcbiAgICAvLyBUaGlzIGNhbiBiZSBjYWxsZWQgZHVyaW5nIHRoZSBTU1IgZmxvdyB2aWEgUHJlZmV0Y2hQYWdlTGlua3NJbXBsIHNvXG4gICAgLy8gZG9uJ3QgYXNzdW1lIHdpbmRvdyBpcyBhdmFpbGFibGVcbiAgICB0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiID8gXCJzZXJ2ZXI6Ly9zaW5nbGVmZXRjaC9cIiA6IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW5cbiAgKSA6IHJlcVVybDtcbiAgaWYgKHVybC5wYXRobmFtZSA9PT0gXCIvXCIpIHtcbiAgICB1cmwucGF0aG5hbWUgPSBcIl9yb290LmRhdGFcIjtcbiAgfSBlbHNlIHtcbiAgICB1cmwucGF0aG5hbWUgPSBgJHt1cmwucGF0aG5hbWUucmVwbGFjZSgvXFwvJC8sIFwiXCIpfS5kYXRhYDtcbiAgfVxuICByZXR1cm4gdXJsO1xufVxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBbmREZWNvZGUodXJsLCBpbml0KSB7XG4gIGxldCByZXMgPSBhd2FpdCBmZXRjaCh1cmwsIGluaXQpO1xuICBpZiAocmVzLnN0YXR1cyA9PT0gNDA0ICYmICFyZXMuaGVhZGVycy5oYXMoXCJYLVJlbWl4LVJlc3BvbnNlXCIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yUmVzcG9uc2VJbXBsKDQwNCwgXCJOb3QgRm91bmRcIiwgdHJ1ZSk7XG4gIH1cbiAgaW52YXJpYW50MihyZXMuYm9keSwgXCJObyByZXNwb25zZSBib2R5IHRvIGRlY29kZVwiKTtcbiAgdHJ5IHtcbiAgICBsZXQgZGVjb2RlZCA9IGF3YWl0IGRlY29kZVZpYVR1cmJvU3RyZWFtKHJlcy5ib2R5LCB3aW5kb3cpO1xuICAgIHJldHVybiB7IHN0YXR1czogcmVzLnN0YXR1cywgZGF0YTogZGVjb2RlZC52YWx1ZSB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGRlY29kZSB0dXJiby1zdHJlYW0gcmVzcG9uc2VcIik7XG4gIH1cbn1cbmZ1bmN0aW9uIGRlY29kZVZpYVR1cmJvU3RyZWFtKGJvZHksIGdsb2JhbDIpIHtcbiAgcmV0dXJuIGRlY29kZShib2R5LCB7XG4gICAgcGx1Z2luczogW1xuICAgICAgKHR5cGUsIC4uLnJlc3QpID0+IHtcbiAgICAgICAgaWYgKHR5cGUgPT09IFwiU2FuaXRpemVkRXJyb3JcIikge1xuICAgICAgICAgIGxldCBbbmFtZSwgbWVzc2FnZSwgc3RhY2tdID0gcmVzdDtcbiAgICAgICAgICBsZXQgQ29uc3RydWN0b3IgPSBFcnJvcjtcbiAgICAgICAgICBpZiAobmFtZSAmJiBuYW1lIGluIGdsb2JhbDIgJiYgdHlwZW9mIGdsb2JhbDJbbmFtZV0gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgQ29uc3RydWN0b3IgPSBnbG9iYWwyW25hbWVdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgZXJyb3IgPSBuZXcgQ29uc3RydWN0b3IobWVzc2FnZSk7XG4gICAgICAgICAgZXJyb3Iuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogZXJyb3IgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gXCJFcnJvclJlc3BvbnNlXCIpIHtcbiAgICAgICAgICBsZXQgW2RhdGEyLCBzdGF0dXMsIHN0YXR1c1RleHRdID0gcmVzdDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IG5ldyBFcnJvclJlc3BvbnNlSW1wbChzdGF0dXMsIHN0YXR1c1RleHQsIGRhdGEyKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUgPT09IFwiU2luZ2xlRmV0Y2hSZWRpcmVjdFwiKSB7XG4gICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHsgW1NpbmdsZUZldGNoUmVkaXJlY3RTeW1ib2xdOiByZXN0WzBdIH0gfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gXCJTaW5nbGVGZXRjaENsYXNzSW5zdGFuY2VcIikge1xuICAgICAgICAgIHJldHVybiB7IHZhbHVlOiByZXN0WzBdIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUgPT09IFwiU2luZ2xlRmV0Y2hGYWxsYmFja1wiKSB7XG4gICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHZvaWQgMCB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9KTtcbn1cbmZ1bmN0aW9uIHVud3JhcFNpbmdsZUZldGNoUmVzdWx0cyhyZXN1bHRzLCByb3V0ZUlkKSB7XG4gIGxldCByZWRpcmVjdDIgPSByZXN1bHRzW1NpbmdsZUZldGNoUmVkaXJlY3RTeW1ib2xdO1xuICBpZiAocmVkaXJlY3QyKSB7XG4gICAgcmV0dXJuIHVud3JhcFNpbmdsZUZldGNoUmVzdWx0KHJlZGlyZWN0Miwgcm91dGVJZCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHNbcm91dGVJZF0gIT09IHZvaWQgMCA/IHVud3JhcFNpbmdsZUZldGNoUmVzdWx0KHJlc3VsdHNbcm91dGVJZF0sIHJvdXRlSWQpIDogbnVsbDtcbn1cbmZ1bmN0aW9uIHVud3JhcFNpbmdsZUZldGNoUmVzdWx0KHJlc3VsdCwgcm91dGVJZCkge1xuICBpZiAoXCJlcnJvclwiIGluIHJlc3VsdCkge1xuICAgIHRocm93IHJlc3VsdC5lcnJvcjtcbiAgfSBlbHNlIGlmIChcInJlZGlyZWN0XCIgaW4gcmVzdWx0KSB7XG4gICAgbGV0IGhlYWRlcnMgPSB7fTtcbiAgICBpZiAocmVzdWx0LnJldmFsaWRhdGUpIHtcbiAgICAgIGhlYWRlcnNbXCJYLVJlbWl4LVJldmFsaWRhdGVcIl0gPSBcInllc1wiO1xuICAgIH1cbiAgICBpZiAocmVzdWx0LnJlbG9hZCkge1xuICAgICAgaGVhZGVyc1tcIlgtUmVtaXgtUmVsb2FkLURvY3VtZW50XCJdID0gXCJ5ZXNcIjtcbiAgICB9XG4gICAgaWYgKHJlc3VsdC5yZXBsYWNlKSB7XG4gICAgICBoZWFkZXJzW1wiWC1SZW1peC1SZXBsYWNlXCJdID0gXCJ5ZXNcIjtcbiAgICB9XG4gICAgdGhyb3cgcmVkaXJlY3QocmVzdWx0LnJlZGlyZWN0LCB7IHN0YXR1czogcmVzdWx0LnN0YXR1cywgaGVhZGVycyB9KTtcbiAgfSBlbHNlIGlmIChcImRhdGFcIiBpbiByZXN1bHQpIHtcbiAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBObyByZXNwb25zZSBmb3VuZCBmb3Igcm91dGVJZCBcIiR7cm91dGVJZH1cImApO1xuICB9XG59XG5mdW5jdGlvbiBjcmVhdGVEZWZlcnJlZDIoKSB7XG4gIGxldCByZXNvbHZlO1xuICBsZXQgcmVqZWN0O1xuICBsZXQgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4ge1xuICAgIHJlc29sdmUgPSBhc3luYyAodmFsKSA9PiB7XG4gICAgICByZXModmFsKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHByb21pc2U7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICB9XG4gICAgfTtcbiAgICByZWplY3QgPSBhc3luYyAoZXJyb3IpID0+IHtcbiAgICAgIHJlaihlcnJvcik7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBwcm9taXNlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgfVxuICAgIH07XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHByb21pc2UsXG4gICAgLy9AdHMtaWdub3JlXG4gICAgcmVzb2x2ZSxcbiAgICAvL0B0cy1pZ25vcmVcbiAgICByZWplY3RcbiAgfTtcbn1cblxuLy8gbGliL2RvbS9zc3IvZm9nLW9mLXdhci50c1xuaW1wb3J0ICogYXMgUmVhY3Q4IGZyb20gXCJyZWFjdFwiO1xuXG4vLyBsaWIvZG9tL3Nzci9yb3V0ZXMudHN4XG5pbXBvcnQgKiBhcyBSZWFjdDcgZnJvbSBcInJlYWN0XCI7XG5cbi8vIGxpYi9kb20vc3NyL2Vycm9yQm91bmRhcmllcy50c3hcbmltcG9ydCAqIGFzIFJlYWN0NSBmcm9tIFwicmVhY3RcIjtcbnZhciBSZW1peEVycm9yQm91bmRhcnkgPSBjbGFzcyBleHRlbmRzIFJlYWN0NS5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0geyBlcnJvcjogcHJvcHMuZXJyb3IgfHwgbnVsbCwgbG9jYXRpb246IHByb3BzLmxvY2F0aW9uIH07XG4gIH1cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihlcnJvcikge1xuICAgIHJldHVybiB7IGVycm9yIH07XG4gIH1cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhwcm9wcywgc3RhdGUpIHtcbiAgICBpZiAoc3RhdGUubG9jYXRpb24gIT09IHByb3BzLmxvY2F0aW9uKSB7XG4gICAgICByZXR1cm4geyBlcnJvcjogcHJvcHMuZXJyb3IgfHwgbnVsbCwgbG9jYXRpb246IHByb3BzLmxvY2F0aW9uIH07XG4gICAgfVxuICAgIHJldHVybiB7IGVycm9yOiBwcm9wcy5lcnJvciB8fCBzdGF0ZS5lcnJvciwgbG9jYXRpb246IHN0YXRlLmxvY2F0aW9uIH07XG4gIH1cbiAgcmVuZGVyKCkge1xuICAgIGlmICh0aGlzLnN0YXRlLmVycm9yKSB7XG4gICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFxuICAgICAgICBSZW1peFJvb3REZWZhdWx0RXJyb3JCb3VuZGFyeSxcbiAgICAgICAge1xuICAgICAgICAgIGVycm9yOiB0aGlzLnN0YXRlLmVycm9yLFxuICAgICAgICAgIGlzT3V0c2lkZVJlbWl4QXBwOiB0cnVlXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgIH1cbiAgfVxufTtcbmZ1bmN0aW9uIFJlbWl4Um9vdERlZmF1bHRFcnJvckJvdW5kYXJ5KHtcbiAgZXJyb3IsXG4gIGlzT3V0c2lkZVJlbWl4QXBwXG59KSB7XG4gIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICBsZXQgaGV5RGV2ZWxvcGVyID0gLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFxuICAgIFwic2NyaXB0XCIsXG4gICAge1xuICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgX19odG1sOiBgXG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIFwiXFx1ezFGNEJGfSBIZXkgZGV2ZWxvcGVyIFxcdXsxRjQ0Qn0uIFlvdSBjYW4gcHJvdmlkZSBhIHdheSBiZXR0ZXIgVVggdGhhbiB0aGlzIHdoZW4geW91ciBhcHAgdGhyb3dzIGVycm9ycy4gQ2hlY2sgb3V0IGh0dHBzOi8vcmVtaXgucnVuL2d1aWRlcy9lcnJvcnMgZm9yIG1vcmUgaW5mb3JtYXRpb24uXCJcbiAgICAgICAgKTtcbiAgICAgIGBcbiAgICAgIH1cbiAgICB9XG4gICk7XG4gIGlmIChpc1JvdXRlRXJyb3JSZXNwb25zZShlcnJvcikpIHtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KEJvdW5kYXJ5U2hlbGwsIHsgdGl0bGU6IFwiVW5oYW5kbGVkIFRocm93biBSZXNwb25zZSFcIiB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3Q1LmNyZWF0ZUVsZW1lbnQoXCJoMVwiLCB7IHN0eWxlOiB7IGZvbnRTaXplOiBcIjI0cHhcIiB9IH0sIGVycm9yLnN0YXR1cywgXCIgXCIsIGVycm9yLnN0YXR1c1RleHQpLCBoZXlEZXZlbG9wZXIpO1xuICB9XG4gIGxldCBlcnJvckluc3RhbmNlO1xuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIGVycm9ySW5zdGFuY2UgPSBlcnJvcjtcbiAgfSBlbHNlIHtcbiAgICBsZXQgZXJyb3JTdHJpbmcgPSBlcnJvciA9PSBudWxsID8gXCJVbmtub3duIEVycm9yXCIgOiB0eXBlb2YgZXJyb3IgPT09IFwib2JqZWN0XCIgJiYgXCJ0b1N0cmluZ1wiIGluIGVycm9yID8gZXJyb3IudG9TdHJpbmcoKSA6IEpTT04uc3RyaW5naWZ5KGVycm9yKTtcbiAgICBlcnJvckluc3RhbmNlID0gbmV3IEVycm9yKGVycm9yU3RyaW5nKTtcbiAgfVxuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFxuICAgIEJvdW5kYXJ5U2hlbGwsXG4gICAge1xuICAgICAgdGl0bGU6IFwiQXBwbGljYXRpb24gRXJyb3IhXCIsXG4gICAgICBpc091dHNpZGVSZW1peEFwcFxuICAgIH0sXG4gICAgLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFwiaDFcIiwgeyBzdHlsZTogeyBmb250U2l6ZTogXCIyNHB4XCIgfSB9LCBcIkFwcGxpY2F0aW9uIEVycm9yXCIpLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDUuY3JlYXRlRWxlbWVudChcbiAgICAgIFwicHJlXCIsXG4gICAgICB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgcGFkZGluZzogXCIycmVtXCIsXG4gICAgICAgICAgYmFja2dyb3VuZDogXCJoc2xhKDEwLCA1MCUsIDUwJSwgMC4xKVwiLFxuICAgICAgICAgIGNvbG9yOiBcInJlZFwiLFxuICAgICAgICAgIG92ZXJmbG93OiBcImF1dG9cIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3JJbnN0YW5jZS5zdGFja1xuICAgICksXG4gICAgaGV5RGV2ZWxvcGVyXG4gICk7XG59XG5mdW5jdGlvbiBCb3VuZGFyeVNoZWxsKHtcbiAgdGl0bGUsXG4gIHJlbmRlclNjcmlwdHMsXG4gIGlzT3V0c2lkZVJlbWl4QXBwLFxuICBjaGlsZHJlblxufSkge1xuICBsZXQgeyByb3V0ZU1vZHVsZXMgfSA9IHVzZUZyYW1ld29ya0NvbnRleHQoKTtcbiAgaWYgKHJvdXRlTW9kdWxlcy5yb290Py5MYXlvdXQgJiYgIWlzT3V0c2lkZVJlbWl4QXBwKSB7XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xuICB9XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3Q1LmNyZWF0ZUVsZW1lbnQoXCJodG1sXCIsIHsgbGFuZzogXCJlblwiIH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDUuY3JlYXRlRWxlbWVudChcImhlYWRcIiwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFwibWV0YVwiLCB7IGNoYXJTZXQ6IFwidXRmLThcIiB9KSwgLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFxuICAgIFwibWV0YVwiLFxuICAgIHtcbiAgICAgIG5hbWU6IFwidmlld3BvcnRcIixcbiAgICAgIGNvbnRlbnQ6IFwid2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSx2aWV3cG9ydC1maXQ9Y292ZXJcIlxuICAgIH1cbiAgKSwgLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFwidGl0bGVcIiwgbnVsbCwgdGl0bGUpKSwgLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFwiYm9keVwiLCBudWxsLCAvKiBAX19QVVJFX18gKi8gUmVhY3Q1LmNyZWF0ZUVsZW1lbnQoXCJtYWluXCIsIHsgc3R5bGU6IHsgZm9udEZhbWlseTogXCJzeXN0ZW0tdWksIHNhbnMtc2VyaWZcIiwgcGFkZGluZzogXCIycmVtXCIgfSB9LCBjaGlsZHJlbiwgcmVuZGVyU2NyaXB0cyA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDUuY3JlYXRlRWxlbWVudChTY3JpcHRzLCBudWxsKSA6IG51bGwpKSk7XG59XG5cbi8vIGxpYi9kb20vc3NyL2ZhbGxiYWNrLnRzeFxuaW1wb3J0ICogYXMgUmVhY3Q2IGZyb20gXCJyZWFjdFwiO1xuZnVuY3Rpb24gUmVtaXhSb290RGVmYXVsdEh5ZHJhdGVGYWxsYmFjaygpIHtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDYuY3JlYXRlRWxlbWVudChCb3VuZGFyeVNoZWxsLCB7IHRpdGxlOiBcIkxvYWRpbmcuLi5cIiwgcmVuZGVyU2NyaXB0czogdHJ1ZSB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3Q2LmNyZWF0ZUVsZW1lbnQoXG4gICAgXCJzY3JpcHRcIixcbiAgICB7XG4gICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDoge1xuICAgICAgICBfX2h0bWw6IGBcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgXCJcXHV7MUY0QkZ9IEhleSBkZXZlbG9wZXIgXFx1ezFGNDRCfS4gWW91IGNhbiBwcm92aWRlIGEgd2F5IGJldHRlciBVWCB0aGFuIHRoaXMgXCIgK1xuICAgICAgICAgICAgICAgIFwid2hlbiB5b3VyIGFwcCBpcyBsb2FkaW5nIEpTIG1vZHVsZXMgYW5kL29yIHJ1bm5pbmcgXFxgY2xpZW50TG9hZGVyXFxgIFwiICtcbiAgICAgICAgICAgICAgICBcImZ1bmN0aW9ucy4gQ2hlY2sgb3V0IGh0dHBzOi8vcmVtaXgucnVuL3JvdXRlL2h5ZHJhdGUtZmFsbGJhY2sgXCIgK1xuICAgICAgICAgICAgICAgIFwiZm9yIG1vcmUgaW5mb3JtYXRpb24uXCJcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGBcbiAgICAgIH1cbiAgICB9XG4gICkpO1xufVxuXG4vLyBsaWIvZG9tL3Nzci9yb3V0ZXMudHN4XG5mdW5jdGlvbiBncm91cFJvdXRlc0J5UGFyZW50SWQobWFuaWZlc3QpIHtcbiAgbGV0IHJvdXRlcyA9IHt9O1xuICBPYmplY3QudmFsdWVzKG1hbmlmZXN0KS5mb3JFYWNoKChyb3V0ZSkgPT4ge1xuICAgIGlmIChyb3V0ZSkge1xuICAgICAgbGV0IHBhcmVudElkID0gcm91dGUucGFyZW50SWQgfHwgXCJcIjtcbiAgICAgIGlmICghcm91dGVzW3BhcmVudElkXSkge1xuICAgICAgICByb3V0ZXNbcGFyZW50SWRdID0gW107XG4gICAgICB9XG4gICAgICByb3V0ZXNbcGFyZW50SWRdLnB1c2gocm91dGUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByb3V0ZXM7XG59XG5mdW5jdGlvbiBnZXRSb3V0ZUNvbXBvbmVudHMocm91dGUsIHJvdXRlTW9kdWxlLCBpc1NwYU1vZGUpIHtcbiAgbGV0IENvbXBvbmVudDQgPSBnZXRSb3V0ZU1vZHVsZUNvbXBvbmVudChyb3V0ZU1vZHVsZSk7XG4gIGxldCBIeWRyYXRlRmFsbGJhY2sgPSByb3V0ZU1vZHVsZS5IeWRyYXRlRmFsbGJhY2sgJiYgKCFpc1NwYU1vZGUgfHwgcm91dGUuaWQgPT09IFwicm9vdFwiKSA/IHJvdXRlTW9kdWxlLkh5ZHJhdGVGYWxsYmFjayA6IHJvdXRlLmlkID09PSBcInJvb3RcIiA/IFJlbWl4Um9vdERlZmF1bHRIeWRyYXRlRmFsbGJhY2sgOiB2b2lkIDA7XG4gIGxldCBFcnJvckJvdW5kYXJ5ID0gcm91dGVNb2R1bGUuRXJyb3JCb3VuZGFyeSA/IHJvdXRlTW9kdWxlLkVycm9yQm91bmRhcnkgOiByb3V0ZS5pZCA9PT0gXCJyb290XCIgPyAoKSA9PiAvKiBAX19QVVJFX18gKi8gUmVhY3Q3LmNyZWF0ZUVsZW1lbnQoUmVtaXhSb290RGVmYXVsdEVycm9yQm91bmRhcnksIHsgZXJyb3I6IHVzZVJvdXRlRXJyb3IoKSB9KSA6IHZvaWQgMDtcbiAgaWYgKHJvdXRlLmlkID09PSBcInJvb3RcIiAmJiByb3V0ZU1vZHVsZS5MYXlvdXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uQ29tcG9uZW50NCA/IHtcbiAgICAgICAgZWxlbWVudDogLyogQF9fUFVSRV9fICovIFJlYWN0Ny5jcmVhdGVFbGVtZW50KHJvdXRlTW9kdWxlLkxheW91dCwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0Ny5jcmVhdGVFbGVtZW50KENvbXBvbmVudDQsIG51bGwpKVxuICAgICAgfSA6IHsgQ29tcG9uZW50OiBDb21wb25lbnQ0IH0sXG4gICAgICAuLi5FcnJvckJvdW5kYXJ5ID8ge1xuICAgICAgICBlcnJvckVsZW1lbnQ6IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDcuY3JlYXRlRWxlbWVudChyb3V0ZU1vZHVsZS5MYXlvdXQsIG51bGwsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDcuY3JlYXRlRWxlbWVudChFcnJvckJvdW5kYXJ5LCBudWxsKSlcbiAgICAgIH0gOiB7IEVycm9yQm91bmRhcnkgfSxcbiAgICAgIC4uLkh5ZHJhdGVGYWxsYmFjayA/IHtcbiAgICAgICAgaHlkcmF0ZUZhbGxiYWNrRWxlbWVudDogLyogQF9fUFVSRV9fICovIFJlYWN0Ny5jcmVhdGVFbGVtZW50KHJvdXRlTW9kdWxlLkxheW91dCwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0Ny5jcmVhdGVFbGVtZW50KEh5ZHJhdGVGYWxsYmFjaywgbnVsbCkpXG4gICAgICB9IDogeyBIeWRyYXRlRmFsbGJhY2sgfVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHsgQ29tcG9uZW50OiBDb21wb25lbnQ0LCBFcnJvckJvdW5kYXJ5LCBIeWRyYXRlRmFsbGJhY2sgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVNlcnZlclJvdXRlcyhtYW5pZmVzdCwgcm91dGVNb2R1bGVzLCBmdXR1cmUsIGlzU3BhTW9kZSwgcGFyZW50SWQgPSBcIlwiLCByb3V0ZXNCeVBhcmVudElkID0gZ3JvdXBSb3V0ZXNCeVBhcmVudElkKG1hbmlmZXN0KSwgc3BhTW9kZUxhenlQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKHsgQ29tcG9uZW50OiAoKSA9PiBudWxsIH0pKSB7XG4gIHJldHVybiAocm91dGVzQnlQYXJlbnRJZFtwYXJlbnRJZF0gfHwgW10pLm1hcCgocm91dGUpID0+IHtcbiAgICBsZXQgcm91dGVNb2R1bGUgPSByb3V0ZU1vZHVsZXNbcm91dGUuaWRdO1xuICAgIGludmFyaWFudDIoXG4gICAgICByb3V0ZU1vZHVsZSxcbiAgICAgIFwiTm8gYHJvdXRlTW9kdWxlYCBhdmFpbGFibGUgdG8gY3JlYXRlIHNlcnZlciByb3V0ZXNcIlxuICAgICk7XG4gICAgbGV0IGRhdGFSb3V0ZSA9IHtcbiAgICAgIC4uLmdldFJvdXRlQ29tcG9uZW50cyhyb3V0ZSwgcm91dGVNb2R1bGUsIGlzU3BhTW9kZSksXG4gICAgICBjYXNlU2Vuc2l0aXZlOiByb3V0ZS5jYXNlU2Vuc2l0aXZlLFxuICAgICAgaWQ6IHJvdXRlLmlkLFxuICAgICAgaW5kZXg6IHJvdXRlLmluZGV4LFxuICAgICAgcGF0aDogcm91dGUucGF0aCxcbiAgICAgIGhhbmRsZTogcm91dGVNb2R1bGUuaGFuZGxlLFxuICAgICAgLy8gRm9yIFNQQSBNb2RlLCBhbGwgcm91dGVzIGFyZSBsYXp5IGV4Y2VwdCByb290LiAgSG93ZXZlciB3ZSB0ZWxsIHRoZVxuICAgICAgLy8gcm91dGVyIHJvb3QgaXMgYWxzbyBsYXp5IGhlcmUgdG9vIHNpbmNlIHdlIGRvbid0IG5lZWQgYSBmdWxsXG4gICAgICAvLyBpbXBsZW1lbnRhdGlvbiAtIHdlIGp1c3QgbmVlZCBhIGBsYXp5YCBwcm9wIHRvIHRlbGwgdGhlIFJSIHJlbmRlcmluZ1xuICAgICAgLy8gd2hlcmUgdG8gc3RvcCB3aGljaCBpcyBhbHdheXMgYXQgdGhlIHJvb3Qgcm91dGUgaW4gU1BBIG1vZGVcbiAgICAgIGxhenk6IGlzU3BhTW9kZSA/ICgpID0+IHNwYU1vZGVMYXp5UHJvbWlzZSA6IHZvaWQgMCxcbiAgICAgIC8vIEZvciBwYXJ0aWFsIGh5ZHJhdGlvbiByZW5kZXJpbmcsIHdlIG5lZWQgdG8gaW5kaWNhdGUgd2hlbiB0aGUgcm91dGVcbiAgICAgIC8vIGhhcyBhIGxvYWRlci9jbGllbnRMb2FkZXIsIGJ1dCBpdCB3b24ndCBldmVyIGJlIGNhbGxlZCBkdXJpbmcgdGhlIHN0YXRpY1xuICAgICAgLy8gcmVuZGVyLCBzbyBqdXN0IGdpdmUgaXQgYSBuby1vcCBmdW5jdGlvbiBzbyB3ZSBjYW4gcmVuZGVyIGRvd24gdG8gdGhlXG4gICAgICAvLyBwcm9wZXIgZmFsbGJhY2tcbiAgICAgIGxvYWRlcjogcm91dGUuaGFzTG9hZGVyIHx8IHJvdXRlLmhhc0NsaWVudExvYWRlciA/ICgpID0+IG51bGwgOiB2b2lkIDBcbiAgICAgIC8vIFdlIGRvbid0IG5lZWQgYWN0aW9uL3Nob3VsZFJldmFsaWRhdGUgb24gdGhlc2Ugcm91dGVzIHNpbmNlIHRoZXkncmVcbiAgICAgIC8vIGZvciBhIHN0YXRpYyByZW5kZXJcbiAgICB9O1xuICAgIGxldCBjaGlsZHJlbiA9IGNyZWF0ZVNlcnZlclJvdXRlcyhcbiAgICAgIG1hbmlmZXN0LFxuICAgICAgcm91dGVNb2R1bGVzLFxuICAgICAgZnV0dXJlLFxuICAgICAgaXNTcGFNb2RlLFxuICAgICAgcm91dGUuaWQsXG4gICAgICByb3V0ZXNCeVBhcmVudElkLFxuICAgICAgc3BhTW9kZUxhenlQcm9taXNlXG4gICAgKTtcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID4gMCkgZGF0YVJvdXRlLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgcmV0dXJuIGRhdGFSb3V0ZTtcbiAgfSk7XG59XG5mdW5jdGlvbiBjcmVhdGVDbGllbnRSb3V0ZXNXaXRoSE1SUmV2YWxpZGF0aW9uT3B0T3V0KG5lZWRzUmV2YWxpZGF0aW9uLCBtYW5pZmVzdCwgcm91dGVNb2R1bGVzQ2FjaGUsIGluaXRpYWxTdGF0ZSwgZnV0dXJlLCBpc1NwYU1vZGUpIHtcbiAgcmV0dXJuIGNyZWF0ZUNsaWVudFJvdXRlcyhcbiAgICBtYW5pZmVzdCxcbiAgICByb3V0ZU1vZHVsZXNDYWNoZSxcbiAgICBpbml0aWFsU3RhdGUsXG4gICAgaXNTcGFNb2RlLFxuICAgIFwiXCIsXG4gICAgZ3JvdXBSb3V0ZXNCeVBhcmVudElkKG1hbmlmZXN0KSxcbiAgICBuZWVkc1JldmFsaWRhdGlvblxuICApO1xufVxuZnVuY3Rpb24gcHJldmVudEludmFsaWRTZXJ2ZXJIYW5kbGVyQ2FsbCh0eXBlLCByb3V0ZSwgaXNTcGFNb2RlKSB7XG4gIGlmIChpc1NwYU1vZGUpIHtcbiAgICBsZXQgZm4yID0gdHlwZSA9PT0gXCJhY3Rpb25cIiA/IFwic2VydmVyQWN0aW9uKClcIiA6IFwic2VydmVyTG9hZGVyKClcIjtcbiAgICBsZXQgbXNnMiA9IGBZb3UgY2Fubm90IGNhbGwgJHtmbjJ9IGluIFNQQSBNb2RlIChyb3V0ZUlkOiBcIiR7cm91dGUuaWR9XCIpYDtcbiAgICBjb25zb2xlLmVycm9yKG1zZzIpO1xuICAgIHRocm93IG5ldyBFcnJvclJlc3BvbnNlSW1wbCg0MDAsIFwiQmFkIFJlcXVlc3RcIiwgbmV3IEVycm9yKG1zZzIpLCB0cnVlKTtcbiAgfVxuICBsZXQgZm4gPSB0eXBlID09PSBcImFjdGlvblwiID8gXCJzZXJ2ZXJBY3Rpb24oKVwiIDogXCJzZXJ2ZXJMb2FkZXIoKVwiO1xuICBsZXQgbXNnID0gYFlvdSBhcmUgdHJ5aW5nIHRvIGNhbGwgJHtmbn0gb24gYSByb3V0ZSB0aGF0IGRvZXMgbm90IGhhdmUgYSBzZXJ2ZXIgJHt0eXBlfSAocm91dGVJZDogXCIke3JvdXRlLmlkfVwiKWA7XG4gIGlmICh0eXBlID09PSBcImxvYWRlclwiICYmICFyb3V0ZS5oYXNMb2FkZXIgfHwgdHlwZSA9PT0gXCJhY3Rpb25cIiAmJiAhcm91dGUuaGFzQWN0aW9uKSB7XG4gICAgY29uc29sZS5lcnJvcihtc2cpO1xuICAgIHRocm93IG5ldyBFcnJvclJlc3BvbnNlSW1wbCg0MDAsIFwiQmFkIFJlcXVlc3RcIiwgbmV3IEVycm9yKG1zZyksIHRydWUpO1xuICB9XG59XG5mdW5jdGlvbiBub0FjdGlvbkRlZmluZWRFcnJvcih0eXBlLCByb3V0ZUlkKSB7XG4gIGxldCBhcnRpY2xlID0gdHlwZSA9PT0gXCJjbGllbnRBY3Rpb25cIiA/IFwiYVwiIDogXCJhblwiO1xuICBsZXQgbXNnID0gYFJvdXRlIFwiJHtyb3V0ZUlkfVwiIGRvZXMgbm90IGhhdmUgJHthcnRpY2xlfSAke3R5cGV9LCBidXQgeW91IGFyZSB0cnlpbmcgdG8gc3VibWl0IHRvIGl0LiBUbyBmaXggdGhpcywgcGxlYXNlIGFkZCAke2FydGljbGV9IFxcYCR7dHlwZX1cXGAgZnVuY3Rpb24gdG8gdGhlIHJvdXRlYDtcbiAgY29uc29sZS5lcnJvcihtc2cpO1xuICB0aHJvdyBuZXcgRXJyb3JSZXNwb25zZUltcGwoNDA1LCBcIk1ldGhvZCBOb3QgQWxsb3dlZFwiLCBuZXcgRXJyb3IobXNnKSwgdHJ1ZSk7XG59XG5mdW5jdGlvbiBjcmVhdGVDbGllbnRSb3V0ZXMobWFuaWZlc3QsIHJvdXRlTW9kdWxlc0NhY2hlLCBpbml0aWFsU3RhdGUsIGlzU3BhTW9kZSwgcGFyZW50SWQgPSBcIlwiLCByb3V0ZXNCeVBhcmVudElkID0gZ3JvdXBSb3V0ZXNCeVBhcmVudElkKG1hbmlmZXN0KSwgbmVlZHNSZXZhbGlkYXRpb24pIHtcbiAgcmV0dXJuIChyb3V0ZXNCeVBhcmVudElkW3BhcmVudElkXSB8fCBbXSkubWFwKChyb3V0ZSkgPT4ge1xuICAgIGxldCByb3V0ZU1vZHVsZSA9IHJvdXRlTW9kdWxlc0NhY2hlW3JvdXRlLmlkXTtcbiAgICBmdW5jdGlvbiBmZXRjaFNlcnZlckhhbmRsZXIoc2luZ2xlRmV0Y2gpIHtcbiAgICAgIGludmFyaWFudDIoXG4gICAgICAgIHR5cGVvZiBzaW5nbGVGZXRjaCA9PT0gXCJmdW5jdGlvblwiLFxuICAgICAgICBcIk5vIHNpbmdsZSBmZXRjaCBmdW5jdGlvbiBhdmFpbGFibGUgZm9yIHJvdXRlIGhhbmRsZXJcIlxuICAgICAgKTtcbiAgICAgIHJldHVybiBzaW5nbGVGZXRjaCgpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBmZXRjaFNlcnZlckxvYWRlcihzaW5nbGVGZXRjaCkge1xuICAgICAgaWYgKCFyb3V0ZS5oYXNMb2FkZXIpIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gICAgICByZXR1cm4gZmV0Y2hTZXJ2ZXJIYW5kbGVyKHNpbmdsZUZldGNoKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZmV0Y2hTZXJ2ZXJBY3Rpb24oc2luZ2xlRmV0Y2gpIHtcbiAgICAgIGlmICghcm91dGUuaGFzQWN0aW9uKSB7XG4gICAgICAgIHRocm93IG5vQWN0aW9uRGVmaW5lZEVycm9yKFwiYWN0aW9uXCIsIHJvdXRlLmlkKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmZXRjaFNlcnZlckhhbmRsZXIoc2luZ2xlRmV0Y2gpO1xuICAgIH1cbiAgICBhc3luYyBmdW5jdGlvbiBwcmVmZXRjaFN0eWxlc0FuZENhbGxIYW5kbGVyKGhhbmRsZXIpIHtcbiAgICAgIGxldCBjYWNoZWRNb2R1bGUgPSByb3V0ZU1vZHVsZXNDYWNoZVtyb3V0ZS5pZF07XG4gICAgICBsZXQgbGlua1ByZWZldGNoUHJvbWlzZSA9IGNhY2hlZE1vZHVsZSA/IHByZWZldGNoU3R5bGVMaW5rcyhyb3V0ZSwgY2FjaGVkTW9kdWxlKSA6IFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGhhbmRsZXIoKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGF3YWl0IGxpbmtQcmVmZXRjaFByb21pc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBkYXRhUm91dGUgPSB7XG4gICAgICBpZDogcm91dGUuaWQsXG4gICAgICBpbmRleDogcm91dGUuaW5kZXgsXG4gICAgICBwYXRoOiByb3V0ZS5wYXRoXG4gICAgfTtcbiAgICBpZiAocm91dGVNb2R1bGUpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oZGF0YVJvdXRlLCB7XG4gICAgICAgIC4uLmRhdGFSb3V0ZSxcbiAgICAgICAgLi4uZ2V0Um91dGVDb21wb25lbnRzKHJvdXRlLCByb3V0ZU1vZHVsZSwgaXNTcGFNb2RlKSxcbiAgICAgICAgaGFuZGxlOiByb3V0ZU1vZHVsZS5oYW5kbGUsXG4gICAgICAgIHNob3VsZFJldmFsaWRhdGU6IGdldFNob3VsZFJldmFsaWRhdGVGdW5jdGlvbihcbiAgICAgICAgICByb3V0ZU1vZHVsZSxcbiAgICAgICAgICByb3V0ZS5pZCxcbiAgICAgICAgICBuZWVkc1JldmFsaWRhdGlvblxuICAgICAgICApXG4gICAgICB9KTtcbiAgICAgIGxldCBoYXNJbml0aWFsRGF0YSA9IGluaXRpYWxTdGF0ZSAmJiBpbml0aWFsU3RhdGUubG9hZGVyRGF0YSAmJiByb3V0ZS5pZCBpbiBpbml0aWFsU3RhdGUubG9hZGVyRGF0YTtcbiAgICAgIGxldCBpbml0aWFsRGF0YSA9IGhhc0luaXRpYWxEYXRhID8gaW5pdGlhbFN0YXRlPy5sb2FkZXJEYXRhPy5bcm91dGUuaWRdIDogdm9pZCAwO1xuICAgICAgbGV0IGhhc0luaXRpYWxFcnJvciA9IGluaXRpYWxTdGF0ZSAmJiBpbml0aWFsU3RhdGUuZXJyb3JzICYmIHJvdXRlLmlkIGluIGluaXRpYWxTdGF0ZS5lcnJvcnM7XG4gICAgICBsZXQgaW5pdGlhbEVycm9yID0gaGFzSW5pdGlhbEVycm9yID8gaW5pdGlhbFN0YXRlPy5lcnJvcnM/Lltyb3V0ZS5pZF0gOiB2b2lkIDA7XG4gICAgICBsZXQgaXNIeWRyYXRpb25SZXF1ZXN0ID0gbmVlZHNSZXZhbGlkYXRpb24gPT0gbnVsbCAmJiAocm91dGVNb2R1bGUuY2xpZW50TG9hZGVyPy5oeWRyYXRlID09PSB0cnVlIHx8ICFyb3V0ZS5oYXNMb2FkZXIpO1xuICAgICAgZGF0YVJvdXRlLmxvYWRlciA9IGFzeW5jICh7IHJlcXVlc3QsIHBhcmFtcyB9LCBzaW5nbGVGZXRjaCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBwcmVmZXRjaFN0eWxlc0FuZENhbGxIYW5kbGVyKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGludmFyaWFudDIoXG4gICAgICAgICAgICAgIHJvdXRlTW9kdWxlLFxuICAgICAgICAgICAgICBcIk5vIGByb3V0ZU1vZHVsZWAgYXZhaWxhYmxlIGZvciBjcml0aWNhbC1yb3V0ZSBsb2FkZXJcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICghcm91dGVNb2R1bGUuY2xpZW50TG9hZGVyKSB7XG4gICAgICAgICAgICAgIGlmIChpc1NwYU1vZGUpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICByZXR1cm4gZmV0Y2hTZXJ2ZXJMb2FkZXIoc2luZ2xlRmV0Y2gpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJvdXRlTW9kdWxlLmNsaWVudExvYWRlcih7XG4gICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgICAgYXN5bmMgc2VydmVyTG9hZGVyKCkge1xuICAgICAgICAgICAgICAgIHByZXZlbnRJbnZhbGlkU2VydmVySGFuZGxlckNhbGwoXCJsb2FkZXJcIiwgcm91dGUsIGlzU3BhTW9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzSHlkcmF0aW9uUmVxdWVzdCkge1xuICAgICAgICAgICAgICAgICAgaWYgKGhhc0luaXRpYWxEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbml0aWFsRGF0YTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmIChoYXNJbml0aWFsRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgaW5pdGlhbEVycm9yO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZmV0Y2hTZXJ2ZXJMb2FkZXIoc2luZ2xlRmV0Y2gpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGlzSHlkcmF0aW9uUmVxdWVzdCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgZGF0YVJvdXRlLmxvYWRlci5oeWRyYXRlID0gc2hvdWxkSHlkcmF0ZVJvdXRlTG9hZGVyKFxuICAgICAgICByb3V0ZSxcbiAgICAgICAgcm91dGVNb2R1bGUsXG4gICAgICAgIGlzU3BhTW9kZVxuICAgICAgKTtcbiAgICAgIGRhdGFSb3V0ZS5hY3Rpb24gPSAoeyByZXF1ZXN0LCBwYXJhbXMgfSwgc2luZ2xlRmV0Y2gpID0+IHtcbiAgICAgICAgcmV0dXJuIHByZWZldGNoU3R5bGVzQW5kQ2FsbEhhbmRsZXIoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGludmFyaWFudDIoXG4gICAgICAgICAgICByb3V0ZU1vZHVsZSxcbiAgICAgICAgICAgIFwiTm8gYHJvdXRlTW9kdWxlYCBhdmFpbGFibGUgZm9yIGNyaXRpY2FsLXJvdXRlIGFjdGlvblwiXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoIXJvdXRlTW9kdWxlLmNsaWVudEFjdGlvbikge1xuICAgICAgICAgICAgaWYgKGlzU3BhTW9kZSkge1xuICAgICAgICAgICAgICB0aHJvdyBub0FjdGlvbkRlZmluZWRFcnJvcihcImNsaWVudEFjdGlvblwiLCByb3V0ZS5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmV0Y2hTZXJ2ZXJBY3Rpb24oc2luZ2xlRmV0Y2gpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcm91dGVNb2R1bGUuY2xpZW50QWN0aW9uKHtcbiAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICBhc3luYyBzZXJ2ZXJBY3Rpb24oKSB7XG4gICAgICAgICAgICAgIHByZXZlbnRJbnZhbGlkU2VydmVySGFuZGxlckNhbGwoXCJhY3Rpb25cIiwgcm91dGUsIGlzU3BhTW9kZSk7XG4gICAgICAgICAgICAgIHJldHVybiBmZXRjaFNlcnZlckFjdGlvbihzaW5nbGVGZXRjaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFyb3V0ZS5oYXNDbGllbnRMb2FkZXIpIHtcbiAgICAgICAgZGF0YVJvdXRlLmxvYWRlciA9ICh7IHJlcXVlc3QgfSwgc2luZ2xlRmV0Y2gpID0+IHByZWZldGNoU3R5bGVzQW5kQ2FsbEhhbmRsZXIoKCkgPT4ge1xuICAgICAgICAgIGlmIChpc1NwYU1vZGUpIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gICAgICAgICAgcmV0dXJuIGZldGNoU2VydmVyTG9hZGVyKHNpbmdsZUZldGNoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoIXJvdXRlLmhhc0NsaWVudEFjdGlvbikge1xuICAgICAgICBkYXRhUm91dGUuYWN0aW9uID0gKHsgcmVxdWVzdCB9LCBzaW5nbGVGZXRjaCkgPT4gcHJlZmV0Y2hTdHlsZXNBbmRDYWxsSGFuZGxlcigoKSA9PiB7XG4gICAgICAgICAgaWYgKGlzU3BhTW9kZSkge1xuICAgICAgICAgICAgdGhyb3cgbm9BY3Rpb25EZWZpbmVkRXJyb3IoXCJjbGllbnRBY3Rpb25cIiwgcm91dGUuaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmV0Y2hTZXJ2ZXJBY3Rpb24oc2luZ2xlRmV0Y2gpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGRhdGFSb3V0ZS5sYXp5ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgbW9kID0gYXdhaXQgbG9hZFJvdXRlTW9kdWxlV2l0aEJsb2NraW5nTGlua3MoXG4gICAgICAgICAgcm91dGUsXG4gICAgICAgICAgcm91dGVNb2R1bGVzQ2FjaGVcbiAgICAgICAgKTtcbiAgICAgICAgbGV0IGxhenlSb3V0ZSA9IHsgLi4ubW9kIH07XG4gICAgICAgIGlmIChtb2QuY2xpZW50TG9hZGVyKSB7XG4gICAgICAgICAgbGV0IGNsaWVudExvYWRlciA9IG1vZC5jbGllbnRMb2FkZXI7XG4gICAgICAgICAgbGF6eVJvdXRlLmxvYWRlciA9IChhcmdzLCBzaW5nbGVGZXRjaCkgPT4gY2xpZW50TG9hZGVyKHtcbiAgICAgICAgICAgIC4uLmFyZ3MsXG4gICAgICAgICAgICBhc3luYyBzZXJ2ZXJMb2FkZXIoKSB7XG4gICAgICAgICAgICAgIHByZXZlbnRJbnZhbGlkU2VydmVySGFuZGxlckNhbGwoXCJsb2FkZXJcIiwgcm91dGUsIGlzU3BhTW9kZSk7XG4gICAgICAgICAgICAgIHJldHVybiBmZXRjaFNlcnZlckxvYWRlcihzaW5nbGVGZXRjaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1vZC5jbGllbnRBY3Rpb24pIHtcbiAgICAgICAgICBsZXQgY2xpZW50QWN0aW9uID0gbW9kLmNsaWVudEFjdGlvbjtcbiAgICAgICAgICBsYXp5Um91dGUuYWN0aW9uID0gKGFyZ3MsIHNpbmdsZUZldGNoKSA9PiBjbGllbnRBY3Rpb24oe1xuICAgICAgICAgICAgLi4uYXJncyxcbiAgICAgICAgICAgIGFzeW5jIHNlcnZlckFjdGlvbigpIHtcbiAgICAgICAgICAgICAgcHJldmVudEludmFsaWRTZXJ2ZXJIYW5kbGVyQ2FsbChcImFjdGlvblwiLCByb3V0ZSwgaXNTcGFNb2RlKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGZldGNoU2VydmVyQWN0aW9uKHNpbmdsZUZldGNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmxhenlSb3V0ZS5sb2FkZXIgPyB7IGxvYWRlcjogbGF6eVJvdXRlLmxvYWRlciB9IDoge30sXG4gICAgICAgICAgLi4ubGF6eVJvdXRlLmFjdGlvbiA/IHsgYWN0aW9uOiBsYXp5Um91dGUuYWN0aW9uIH0gOiB7fSxcbiAgICAgICAgICBoYXNFcnJvckJvdW5kYXJ5OiBsYXp5Um91dGUuaGFzRXJyb3JCb3VuZGFyeSxcbiAgICAgICAgICBzaG91bGRSZXZhbGlkYXRlOiBnZXRTaG91bGRSZXZhbGlkYXRlRnVuY3Rpb24oXG4gICAgICAgICAgICBsYXp5Um91dGUsXG4gICAgICAgICAgICByb3V0ZS5pZCxcbiAgICAgICAgICAgIG5lZWRzUmV2YWxpZGF0aW9uXG4gICAgICAgICAgKSxcbiAgICAgICAgICBoYW5kbGU6IGxhenlSb3V0ZS5oYW5kbGUsXG4gICAgICAgICAgLy8gTm8gbmVlZCB0byB3cmFwIHRoZXNlIGluIGxheW91dCBzaW5jZSB0aGUgcm9vdCByb3V0ZSBpcyBuZXZlclxuICAgICAgICAgIC8vIGxvYWRlZCB2aWEgcm91dGUubGF6eSgpXG4gICAgICAgICAgQ29tcG9uZW50OiBsYXp5Um91dGUuQ29tcG9uZW50LFxuICAgICAgICAgIEVycm9yQm91bmRhcnk6IGxhenlSb3V0ZS5FcnJvckJvdW5kYXJ5XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH1cbiAgICBsZXQgY2hpbGRyZW4gPSBjcmVhdGVDbGllbnRSb3V0ZXMoXG4gICAgICBtYW5pZmVzdCxcbiAgICAgIHJvdXRlTW9kdWxlc0NhY2hlLFxuICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgaXNTcGFNb2RlLFxuICAgICAgcm91dGUuaWQsXG4gICAgICByb3V0ZXNCeVBhcmVudElkLFxuICAgICAgbmVlZHNSZXZhbGlkYXRpb25cbiAgICApO1xuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSBkYXRhUm91dGUuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICByZXR1cm4gZGF0YVJvdXRlO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGdldFNob3VsZFJldmFsaWRhdGVGdW5jdGlvbihyb3V0ZSwgcm91dGVJZCwgbmVlZHNSZXZhbGlkYXRpb24pIHtcbiAgaWYgKG5lZWRzUmV2YWxpZGF0aW9uKSB7XG4gICAgcmV0dXJuIHdyYXBTaG91bGRSZXZhbGlkYXRlRm9ySGRyKFxuICAgICAgcm91dGVJZCxcbiAgICAgIHJvdXRlLnNob3VsZFJldmFsaWRhdGUsXG4gICAgICBuZWVkc1JldmFsaWRhdGlvblxuICAgICk7XG4gIH1cbiAgaWYgKHJvdXRlLnNob3VsZFJldmFsaWRhdGUpIHtcbiAgICBsZXQgZm4gPSByb3V0ZS5zaG91bGRSZXZhbGlkYXRlO1xuICAgIHJldHVybiAob3B0cykgPT4gZm4oeyAuLi5vcHRzLCBkZWZhdWx0U2hvdWxkUmV2YWxpZGF0ZTogdHJ1ZSB9KTtcbiAgfVxuICByZXR1cm4gcm91dGUuc2hvdWxkUmV2YWxpZGF0ZTtcbn1cbmZ1bmN0aW9uIHdyYXBTaG91bGRSZXZhbGlkYXRlRm9ySGRyKHJvdXRlSWQsIHJvdXRlU2hvdWxkUmV2YWxpZGF0ZSwgbmVlZHNSZXZhbGlkYXRpb24pIHtcbiAgbGV0IGhhbmRsZWRSZXZhbGlkYXRpb24gPSBmYWxzZTtcbiAgcmV0dXJuIChhcmcpID0+IHtcbiAgICBpZiAoIWhhbmRsZWRSZXZhbGlkYXRpb24pIHtcbiAgICAgIGhhbmRsZWRSZXZhbGlkYXRpb24gPSB0cnVlO1xuICAgICAgcmV0dXJuIG5lZWRzUmV2YWxpZGF0aW9uLmhhcyhyb3V0ZUlkKTtcbiAgICB9XG4gICAgcmV0dXJuIHJvdXRlU2hvdWxkUmV2YWxpZGF0ZSA/IHJvdXRlU2hvdWxkUmV2YWxpZGF0ZShhcmcpIDogYXJnLmRlZmF1bHRTaG91bGRSZXZhbGlkYXRlO1xuICB9O1xufVxuYXN5bmMgZnVuY3Rpb24gbG9hZFJvdXRlTW9kdWxlV2l0aEJsb2NraW5nTGlua3Mocm91dGUsIHJvdXRlTW9kdWxlcykge1xuICBsZXQgcm91dGVNb2R1bGUgPSBhd2FpdCBsb2FkUm91dGVNb2R1bGUocm91dGUsIHJvdXRlTW9kdWxlcyk7XG4gIGF3YWl0IHByZWZldGNoU3R5bGVMaW5rcyhyb3V0ZSwgcm91dGVNb2R1bGUpO1xuICByZXR1cm4ge1xuICAgIENvbXBvbmVudDogZ2V0Um91dGVNb2R1bGVDb21wb25lbnQocm91dGVNb2R1bGUpLFxuICAgIEVycm9yQm91bmRhcnk6IHJvdXRlTW9kdWxlLkVycm9yQm91bmRhcnksXG4gICAgY2xpZW50QWN0aW9uOiByb3V0ZU1vZHVsZS5jbGllbnRBY3Rpb24sXG4gICAgY2xpZW50TG9hZGVyOiByb3V0ZU1vZHVsZS5jbGllbnRMb2FkZXIsXG4gICAgaGFuZGxlOiByb3V0ZU1vZHVsZS5oYW5kbGUsXG4gICAgbGlua3M6IHJvdXRlTW9kdWxlLmxpbmtzLFxuICAgIG1ldGE6IHJvdXRlTW9kdWxlLm1ldGEsXG4gICAgc2hvdWxkUmV2YWxpZGF0ZTogcm91dGVNb2R1bGUuc2hvdWxkUmV2YWxpZGF0ZVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Um91dGVNb2R1bGVDb21wb25lbnQocm91dGVNb2R1bGUpIHtcbiAgaWYgKHJvdXRlTW9kdWxlLmRlZmF1bHQgPT0gbnVsbCkgcmV0dXJuIHZvaWQgMDtcbiAgbGV0IGlzRW1wdHlPYmplY3QgPSB0eXBlb2Ygcm91dGVNb2R1bGUuZGVmYXVsdCA9PT0gXCJvYmplY3RcIiAmJiBPYmplY3Qua2V5cyhyb3V0ZU1vZHVsZS5kZWZhdWx0KS5sZW5ndGggPT09IDA7XG4gIGlmICghaXNFbXB0eU9iamVjdCkge1xuICAgIHJldHVybiByb3V0ZU1vZHVsZS5kZWZhdWx0O1xuICB9XG59XG5mdW5jdGlvbiBzaG91bGRIeWRyYXRlUm91dGVMb2FkZXIocm91dGUsIHJvdXRlTW9kdWxlLCBpc1NwYU1vZGUpIHtcbiAgcmV0dXJuIGlzU3BhTW9kZSAmJiByb3V0ZS5pZCAhPT0gXCJyb290XCIgfHwgcm91dGVNb2R1bGUuY2xpZW50TG9hZGVyICE9IG51bGwgJiYgKHJvdXRlTW9kdWxlLmNsaWVudExvYWRlci5oeWRyYXRlID09PSB0cnVlIHx8IHJvdXRlLmhhc0xvYWRlciAhPT0gdHJ1ZSk7XG59XG5cbi8vIGxpYi9kb20vc3NyL2ZvZy1vZi13YXIudHNcbnZhciBuZXh0UGF0aHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xudmFyIGRpc2NvdmVyZWRQYXRoc01heFNpemUgPSAxZTM7XG52YXIgZGlzY292ZXJlZFBhdGhzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbnZhciBVUkxfTElNSVQgPSA3NjgwO1xuZnVuY3Rpb24gaXNGb2dPZldhckVuYWJsZWQoaXNTcGFNb2RlKSB7XG4gIHJldHVybiAhaXNTcGFNb2RlO1xufVxuZnVuY3Rpb24gZ2V0UGFydGlhbE1hbmlmZXN0KG1hbmlmZXN0LCByb3V0ZXIpIHtcbiAgbGV0IHJvdXRlSWRzID0gbmV3IFNldChyb3V0ZXIuc3RhdGUubWF0Y2hlcy5tYXAoKG0pID0+IG0ucm91dGUuaWQpKTtcbiAgbGV0IHNlZ21lbnRzID0gcm91dGVyLnN0YXRlLmxvY2F0aW9uLnBhdGhuYW1lLnNwbGl0KFwiL1wiKS5maWx0ZXIoQm9vbGVhbik7XG4gIGxldCBwYXRocyA9IFtcIi9cIl07XG4gIHNlZ21lbnRzLnBvcCgpO1xuICB3aGlsZSAoc2VnbWVudHMubGVuZ3RoID4gMCkge1xuICAgIHBhdGhzLnB1c2goYC8ke3NlZ21lbnRzLmpvaW4oXCIvXCIpfWApO1xuICAgIHNlZ21lbnRzLnBvcCgpO1xuICB9XG4gIHBhdGhzLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICBsZXQgbWF0Y2hlcyA9IG1hdGNoUm91dGVzKHJvdXRlci5yb3V0ZXMsIHBhdGgsIHJvdXRlci5iYXNlbmFtZSk7XG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIG1hdGNoZXMuZm9yRWFjaCgobSkgPT4gcm91dGVJZHMuYWRkKG0ucm91dGUuaWQpKTtcbiAgICB9XG4gIH0pO1xuICBsZXQgaW5pdGlhbFJvdXRlcyA9IFsuLi5yb3V0ZUlkc10ucmVkdWNlKFxuICAgIChhY2MsIGlkKSA9PiBPYmplY3QuYXNzaWduKGFjYywgeyBbaWRdOiBtYW5pZmVzdC5yb3V0ZXNbaWRdIH0pLFxuICAgIHt9XG4gICk7XG4gIHJldHVybiB7XG4gICAgLi4ubWFuaWZlc3QsXG4gICAgcm91dGVzOiBpbml0aWFsUm91dGVzXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYXRjaFJvdXRlc09uTmF2aWdhdGlvbkZ1bmN0aW9uKG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMsIGlzU3BhTW9kZSwgYmFzZW5hbWUpIHtcbiAgaWYgKCFpc0ZvZ09mV2FyRW5hYmxlZChpc1NwYU1vZGUpKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuICByZXR1cm4gYXN5bmMgKHsgcGF0aCwgcGF0Y2ggfSkgPT4ge1xuICAgIGlmIChkaXNjb3ZlcmVkUGF0aHMuaGFzKHBhdGgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IGZldGNoQW5kQXBwbHlNYW5pZmVzdFBhdGNoZXMoXG4gICAgICBbcGF0aF0sXG4gICAgICBtYW5pZmVzdCxcbiAgICAgIHJvdXRlTW9kdWxlcyxcbiAgICAgIGlzU3BhTW9kZSxcbiAgICAgIGJhc2VuYW1lLFxuICAgICAgcGF0Y2hcbiAgICApO1xuICB9O1xufVxuZnVuY3Rpb24gdXNlRm9nT0ZXYXJEaXNjb3Zlcnkocm91dGVyLCBtYW5pZmVzdCwgcm91dGVNb2R1bGVzLCBpc1NwYU1vZGUpIHtcbiAgUmVhY3Q4LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0ZvZ09mV2FyRW5hYmxlZChpc1NwYU1vZGUpIHx8IG5hdmlnYXRvci5jb25uZWN0aW9uPy5zYXZlRGF0YSA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWdpc3RlckVsZW1lbnQoZWwpIHtcbiAgICAgIGxldCBwYXRoID0gZWwudGFnTmFtZSA9PT0gXCJGT1JNXCIgPyBlbC5nZXRBdHRyaWJ1dGUoXCJhY3Rpb25cIikgOiBlbC5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpO1xuICAgICAgaWYgKCFwYXRoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxldCB1cmwgPSBuZXcgVVJMKHBhdGgsIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pO1xuICAgICAgaWYgKCFkaXNjb3ZlcmVkUGF0aHMuaGFzKHVybC5wYXRobmFtZSkpIHtcbiAgICAgICAgbmV4dFBhdGhzLmFkZCh1cmwucGF0aG5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBmdW5jdGlvbiBmZXRjaFBhdGNoZXMoKSB7XG4gICAgICBsZXQgbGF6eVBhdGhzID0gQXJyYXkuZnJvbShuZXh0UGF0aHMua2V5cygpKS5maWx0ZXIoKHBhdGgpID0+IHtcbiAgICAgICAgaWYgKGRpc2NvdmVyZWRQYXRocy5oYXMocGF0aCkpIHtcbiAgICAgICAgICBuZXh0UGF0aHMuZGVsZXRlKHBhdGgpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgICAgaWYgKGxhenlQYXRocy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZmV0Y2hBbmRBcHBseU1hbmlmZXN0UGF0Y2hlcyhcbiAgICAgICAgICBsYXp5UGF0aHMsXG4gICAgICAgICAgbWFuaWZlc3QsXG4gICAgICAgICAgcm91dGVNb2R1bGVzLFxuICAgICAgICAgIGlzU3BhTW9kZSxcbiAgICAgICAgICByb3V0ZXIuYmFzZW5hbWUsXG4gICAgICAgICAgcm91dGVyLnBhdGNoUm91dGVzXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gZmV0Y2ggbWFuaWZlc3QgcGF0Y2hlc1wiLCBlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKFwiYVtkYXRhLWRpc2NvdmVyXSwgZm9ybVtkYXRhLWRpc2NvdmVyXVwiKS5mb3JFYWNoKChlbCkgPT4gcmVnaXN0ZXJFbGVtZW50KGVsKSk7XG4gICAgZmV0Y2hQYXRjaGVzKCk7XG4gICAgbGV0IGRlYm91bmNlZEZldGNoUGF0Y2hlcyA9IGRlYm91bmNlKGZldGNoUGF0Y2hlcywgMTAwKTtcbiAgICBmdW5jdGlvbiBpc0VsZW1lbnQobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFO1xuICAgIH1cbiAgICBsZXQgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigocmVjb3JkcykgPT4ge1xuICAgICAgbGV0IGVsZW1lbnRzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgICAgIHJlY29yZHMuZm9yRWFjaCgocikgPT4ge1xuICAgICAgICBbci50YXJnZXQsIC4uLnIuYWRkZWROb2Rlc10uZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgIGlmICghaXNFbGVtZW50KG5vZGUpKSByZXR1cm47XG4gICAgICAgICAgaWYgKG5vZGUudGFnTmFtZSA9PT0gXCJBXCIgJiYgbm9kZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLWRpc2NvdmVyXCIpKSB7XG4gICAgICAgICAgICBlbGVtZW50cy5hZGQobm9kZSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChub2RlLnRhZ05hbWUgPT09IFwiRk9STVwiICYmIG5vZGUuZ2V0QXR0cmlidXRlKFwiZGF0YS1kaXNjb3ZlclwiKSkge1xuICAgICAgICAgICAgZWxlbWVudHMuYWRkKG5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobm9kZS50YWdOYW1lICE9PSBcIkFcIikge1xuICAgICAgICAgICAgbm9kZS5xdWVyeVNlbGVjdG9yQWxsKFwiYVtkYXRhLWRpc2NvdmVyXSwgZm9ybVtkYXRhLWRpc2NvdmVyXVwiKS5mb3JFYWNoKChlbCkgPT4gZWxlbWVudHMuYWRkKGVsKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWwpID0+IHJlZ2lzdGVyRWxlbWVudChlbCkpO1xuICAgICAgZGVib3VuY2VkRmV0Y2hQYXRjaGVzKCk7XG4gICAgfSk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHtcbiAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbXCJkYXRhLWRpc2NvdmVyXCIsIFwiaHJlZlwiLCBcImFjdGlvblwiXVxuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH0sIFtpc1NwYU1vZGUsIG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMsIHJvdXRlcl0pO1xufVxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBbmRBcHBseU1hbmlmZXN0UGF0Y2hlcyhwYXRocywgbWFuaWZlc3QsIHJvdXRlTW9kdWxlcywgaXNTcGFNb2RlLCBiYXNlbmFtZSwgcGF0Y2hSb3V0ZXMpIHtcbiAgbGV0IG1hbmlmZXN0UGF0aCA9IGAke2Jhc2VuYW1lICE9IG51bGwgPyBiYXNlbmFtZSA6IFwiL1wifS9fX21hbmlmZXN0YC5yZXBsYWNlKFxuICAgIC9cXC8rL2csXG4gICAgXCIvXCJcbiAgKTtcbiAgbGV0IHVybCA9IG5ldyBVUkwobWFuaWZlc3RQYXRoLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgcGF0aHMuc29ydCgpLmZvckVhY2goKHBhdGgpID0+IHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKFwicFwiLCBwYXRoKSk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KFwidmVyc2lvblwiLCBtYW5pZmVzdC52ZXJzaW9uKTtcbiAgaWYgKHVybC50b1N0cmluZygpLmxlbmd0aCA+IFVSTF9MSU1JVCkge1xuICAgIG5leHRQYXRocy5jbGVhcigpO1xuICAgIHJldHVybjtcbiAgfVxuICBsZXQgcmVzID0gYXdhaXQgZmV0Y2godXJsKTtcbiAgaWYgKCFyZXMub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cmVzLnN0YXR1c30gJHtyZXMuc3RhdHVzVGV4dH1gKTtcbiAgfSBlbHNlIGlmIChyZXMuc3RhdHVzID49IDQwMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihhd2FpdCByZXMudGV4dCgpKTtcbiAgfVxuICBsZXQgc2VydmVyUGF0Y2hlcyA9IGF3YWl0IHJlcy5qc29uKCk7XG4gIGxldCBrbm93blJvdXRlcyA9IG5ldyBTZXQoT2JqZWN0LmtleXMobWFuaWZlc3Qucm91dGVzKSk7XG4gIGxldCBwYXRjaGVzID0gT2JqZWN0LnZhbHVlcyhzZXJ2ZXJQYXRjaGVzKS5yZWR1Y2UoKGFjYywgcm91dGUpID0+IHtcbiAgICBpZiAocm91dGUgJiYgIWtub3duUm91dGVzLmhhcyhyb3V0ZS5pZCkpIHtcbiAgICAgIGFjY1tyb3V0ZS5pZF0gPSByb3V0ZTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICBPYmplY3QuYXNzaWduKG1hbmlmZXN0LnJvdXRlcywgcGF0Y2hlcyk7XG4gIHBhdGhzLmZvckVhY2goKHApID0+IGFkZFRvRmlmb1F1ZXVlKHAsIGRpc2NvdmVyZWRQYXRocykpO1xuICBsZXQgcGFyZW50SWRzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgT2JqZWN0LnZhbHVlcyhwYXRjaGVzKS5mb3JFYWNoKChwYXRjaCkgPT4ge1xuICAgIGlmIChwYXRjaCAmJiAoIXBhdGNoLnBhcmVudElkIHx8ICFwYXRjaGVzW3BhdGNoLnBhcmVudElkXSkpIHtcbiAgICAgIHBhcmVudElkcy5hZGQocGF0Y2gucGFyZW50SWQpO1xuICAgIH1cbiAgfSk7XG4gIHBhcmVudElkcy5mb3JFYWNoKFxuICAgIChwYXJlbnRJZCkgPT4gcGF0Y2hSb3V0ZXMoXG4gICAgICBwYXJlbnRJZCB8fCBudWxsLFxuICAgICAgY3JlYXRlQ2xpZW50Um91dGVzKHBhdGNoZXMsIHJvdXRlTW9kdWxlcywgbnVsbCwgaXNTcGFNb2RlLCBwYXJlbnRJZClcbiAgICApXG4gICk7XG59XG5mdW5jdGlvbiBhZGRUb0ZpZm9RdWV1ZShwYXRoLCBxdWV1ZSkge1xuICBpZiAocXVldWUuc2l6ZSA+PSBkaXNjb3ZlcmVkUGF0aHNNYXhTaXplKSB7XG4gICAgbGV0IGZpcnN0ID0gcXVldWUudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICAgIHF1ZXVlLmRlbGV0ZShmaXJzdCk7XG4gIH1cbiAgcXVldWUuYWRkKHBhdGgpO1xufVxuZnVuY3Rpb24gZGVib3VuY2UoY2FsbGJhY2ssIHdhaXQpIHtcbiAgbGV0IHRpbWVvdXRJZDtcbiAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgIHRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IGNhbGxiYWNrKC4uLmFyZ3MpLCB3YWl0KTtcbiAgfTtcbn1cblxuLy8gbGliL2RvbS9zc3IvY29tcG9uZW50cy50c3hcbmZ1bmN0aW9uIHVzZURhdGFSb3V0ZXJDb250ZXh0MigpIHtcbiAgbGV0IGNvbnRleHQgPSBSZWFjdDkudXNlQ29udGV4dChEYXRhUm91dGVyQ29udGV4dCk7XG4gIGludmFyaWFudDIoXG4gICAgY29udGV4dCxcbiAgICBcIllvdSBtdXN0IHJlbmRlciB0aGlzIGVsZW1lbnQgaW5zaWRlIGEgPERhdGFSb3V0ZXJDb250ZXh0LlByb3ZpZGVyPiBlbGVtZW50XCJcbiAgKTtcbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5mdW5jdGlvbiB1c2VEYXRhUm91dGVyU3RhdGVDb250ZXh0KCkge1xuICBsZXQgY29udGV4dCA9IFJlYWN0OS51c2VDb250ZXh0KERhdGFSb3V0ZXJTdGF0ZUNvbnRleHQpO1xuICBpbnZhcmlhbnQyKFxuICAgIGNvbnRleHQsXG4gICAgXCJZb3UgbXVzdCByZW5kZXIgdGhpcyBlbGVtZW50IGluc2lkZSBhIDxEYXRhUm91dGVyU3RhdGVDb250ZXh0LlByb3ZpZGVyPiBlbGVtZW50XCJcbiAgKTtcbiAgcmV0dXJuIGNvbnRleHQ7XG59XG52YXIgRnJhbWV3b3JrQ29udGV4dCA9IFJlYWN0OS5jcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5GcmFtZXdvcmtDb250ZXh0LmRpc3BsYXlOYW1lID0gXCJGcmFtZXdvcmtDb250ZXh0XCI7XG5mdW5jdGlvbiB1c2VGcmFtZXdvcmtDb250ZXh0KCkge1xuICBsZXQgY29udGV4dCA9IFJlYWN0OS51c2VDb250ZXh0KEZyYW1ld29ya0NvbnRleHQpO1xuICBpbnZhcmlhbnQyKFxuICAgIGNvbnRleHQsXG4gICAgXCJZb3UgbXVzdCByZW5kZXIgdGhpcyBlbGVtZW50IGluc2lkZSBhIDxIeWRyYXRlZFJvdXRlcj4gZWxlbWVudFwiXG4gICk7XG4gIHJldHVybiBjb250ZXh0O1xufVxuZnVuY3Rpb24gdXNlUHJlZmV0Y2hCZWhhdmlvcihwcmVmZXRjaCwgdGhlaXJFbGVtZW50UHJvcHMpIHtcbiAgbGV0IGZyYW1ld29ya0NvbnRleHQgPSBSZWFjdDkudXNlQ29udGV4dChGcmFtZXdvcmtDb250ZXh0KTtcbiAgbGV0IFttYXliZVByZWZldGNoLCBzZXRNYXliZVByZWZldGNoXSA9IFJlYWN0OS51c2VTdGF0ZShmYWxzZSk7XG4gIGxldCBbc2hvdWxkUHJlZmV0Y2gsIHNldFNob3VsZFByZWZldGNoXSA9IFJlYWN0OS51c2VTdGF0ZShmYWxzZSk7XG4gIGxldCB7IG9uRm9jdXMsIG9uQmx1ciwgb25Nb3VzZUVudGVyLCBvbk1vdXNlTGVhdmUsIG9uVG91Y2hTdGFydCB9ID0gdGhlaXJFbGVtZW50UHJvcHM7XG4gIGxldCByZWYgPSBSZWFjdDkudXNlUmVmKG51bGwpO1xuICBSZWFjdDkudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocHJlZmV0Y2ggPT09IFwicmVuZGVyXCIpIHtcbiAgICAgIHNldFNob3VsZFByZWZldGNoKHRydWUpO1xuICAgIH1cbiAgICBpZiAocHJlZmV0Y2ggPT09IFwidmlld3BvcnRcIikge1xuICAgICAgbGV0IGNhbGxiYWNrID0gKGVudHJpZXMpID0+IHtcbiAgICAgICAgZW50cmllcy5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgICAgIHNldFNob3VsZFByZWZldGNoKGVudHJ5LmlzSW50ZXJzZWN0aW5nKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgbGV0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGNhbGxiYWNrLCB7IHRocmVzaG9sZDogMC41IH0pO1xuICAgICAgaWYgKHJlZi5jdXJyZW50KSBvYnNlcnZlci5vYnNlcnZlKHJlZi5jdXJyZW50KTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH07XG4gICAgfVxuICB9LCBbcHJlZmV0Y2hdKTtcbiAgUmVhY3Q5LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1heWJlUHJlZmV0Y2gpIHtcbiAgICAgIGxldCBpZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXRTaG91bGRQcmVmZXRjaCh0cnVlKTtcbiAgICAgIH0sIDEwMCk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQoaWQpO1xuICAgICAgfTtcbiAgICB9XG4gIH0sIFttYXliZVByZWZldGNoXSk7XG4gIGxldCBzZXRJbnRlbnQgPSAoKSA9PiB7XG4gICAgc2V0TWF5YmVQcmVmZXRjaCh0cnVlKTtcbiAgfTtcbiAgbGV0IGNhbmNlbEludGVudCA9ICgpID0+IHtcbiAgICBzZXRNYXliZVByZWZldGNoKGZhbHNlKTtcbiAgICBzZXRTaG91bGRQcmVmZXRjaChmYWxzZSk7XG4gIH07XG4gIGlmICghZnJhbWV3b3JrQ29udGV4dCkge1xuICAgIHJldHVybiBbZmFsc2UsIHJlZiwge31dO1xuICB9XG4gIGlmIChwcmVmZXRjaCAhPT0gXCJpbnRlbnRcIikge1xuICAgIHJldHVybiBbc2hvdWxkUHJlZmV0Y2gsIHJlZiwge31dO1xuICB9XG4gIHJldHVybiBbXG4gICAgc2hvdWxkUHJlZmV0Y2gsXG4gICAgcmVmLFxuICAgIHtcbiAgICAgIG9uRm9jdXM6IGNvbXBvc2VFdmVudEhhbmRsZXJzKG9uRm9jdXMsIHNldEludGVudCksXG4gICAgICBvbkJsdXI6IGNvbXBvc2VFdmVudEhhbmRsZXJzKG9uQmx1ciwgY2FuY2VsSW50ZW50KSxcbiAgICAgIG9uTW91c2VFbnRlcjogY29tcG9zZUV2ZW50SGFuZGxlcnMob25Nb3VzZUVudGVyLCBzZXRJbnRlbnQpLFxuICAgICAgb25Nb3VzZUxlYXZlOiBjb21wb3NlRXZlbnRIYW5kbGVycyhvbk1vdXNlTGVhdmUsIGNhbmNlbEludGVudCksXG4gICAgICBvblRvdWNoU3RhcnQ6IGNvbXBvc2VFdmVudEhhbmRsZXJzKG9uVG91Y2hTdGFydCwgc2V0SW50ZW50KVxuICAgIH1cbiAgXTtcbn1cbmZ1bmN0aW9uIGNvbXBvc2VFdmVudEhhbmRsZXJzKHRoZWlySGFuZGxlciwgb3VySGFuZGxlcikge1xuICByZXR1cm4gKGV2ZW50KSA9PiB7XG4gICAgdGhlaXJIYW5kbGVyICYmIHRoZWlySGFuZGxlcihldmVudCk7XG4gICAgaWYgKCFldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICBvdXJIYW5kbGVyKGV2ZW50KTtcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBnZXRBY3RpdmVNYXRjaGVzKG1hdGNoZXMsIGVycm9ycywgaXNTcGFNb2RlKSB7XG4gIGlmIChpc1NwYU1vZGUgJiYgIWlzSHlkcmF0ZWQpIHtcbiAgICByZXR1cm4gW21hdGNoZXNbMF1dO1xuICB9XG4gIGlmIChlcnJvcnMpIHtcbiAgICBsZXQgZXJyb3JJZHggPSBtYXRjaGVzLmZpbmRJbmRleCgobSkgPT4gZXJyb3JzW20ucm91dGUuaWRdICE9PSB2b2lkIDApO1xuICAgIHJldHVybiBtYXRjaGVzLnNsaWNlKDAsIGVycm9ySWR4ICsgMSk7XG4gIH1cbiAgcmV0dXJuIG1hdGNoZXM7XG59XG5mdW5jdGlvbiBMaW5rcygpIHtcbiAgbGV0IHsgaXNTcGFNb2RlLCBtYW5pZmVzdCwgcm91dGVNb2R1bGVzLCBjcml0aWNhbENzcyB9ID0gdXNlRnJhbWV3b3JrQ29udGV4dCgpO1xuICBsZXQgeyBlcnJvcnMsIG1hdGNoZXM6IHJvdXRlck1hdGNoZXMgfSA9IHVzZURhdGFSb3V0ZXJTdGF0ZUNvbnRleHQoKTtcbiAgbGV0IG1hdGNoZXMgPSBnZXRBY3RpdmVNYXRjaGVzKHJvdXRlck1hdGNoZXMsIGVycm9ycywgaXNTcGFNb2RlKTtcbiAgbGV0IGtleWVkTGlua3MgPSBSZWFjdDkudXNlTWVtbyhcbiAgICAoKSA9PiBnZXRLZXllZExpbmtzRm9yTWF0Y2hlcyhtYXRjaGVzLCByb3V0ZU1vZHVsZXMsIG1hbmlmZXN0KSxcbiAgICBbbWF0Y2hlcywgcm91dGVNb2R1bGVzLCBtYW5pZmVzdF1cbiAgKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChSZWFjdDkuRnJhZ21lbnQsIG51bGwsIGNyaXRpY2FsQ3NzID8gLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiwgeyBkYW5nZXJvdXNseVNldElubmVySFRNTDogeyBfX2h0bWw6IGNyaXRpY2FsQ3NzIH0gfSkgOiBudWxsLCBrZXllZExpbmtzLm1hcChcbiAgICAoeyBrZXksIGxpbmsgfSkgPT4gaXNQYWdlTGlua0Rlc2NyaXB0b3IobGluaykgPyAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoUHJlZmV0Y2hQYWdlTGlua3MsIHsga2V5LCAuLi5saW5rIH0pIDogLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFwibGlua1wiLCB7IGtleSwgLi4ubGluayB9KVxuICApKTtcbn1cbmZ1bmN0aW9uIFByZWZldGNoUGFnZUxpbmtzKHtcbiAgcGFnZSxcbiAgLi4uZGF0YUxpbmtQcm9wc1xufSkge1xuICBsZXQgeyByb3V0ZXIgfSA9IHVzZURhdGFSb3V0ZXJDb250ZXh0MigpO1xuICBsZXQgbWF0Y2hlcyA9IFJlYWN0OS51c2VNZW1vKFxuICAgICgpID0+IG1hdGNoUm91dGVzKHJvdXRlci5yb3V0ZXMsIHBhZ2UsIHJvdXRlci5iYXNlbmFtZSksXG4gICAgW3JvdXRlci5yb3V0ZXMsIHBhZ2UsIHJvdXRlci5iYXNlbmFtZV1cbiAgKTtcbiAgaWYgKCFtYXRjaGVzKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChQcmVmZXRjaFBhZ2VMaW5rc0ltcGwsIHsgcGFnZSwgbWF0Y2hlcywgLi4uZGF0YUxpbmtQcm9wcyB9KTtcbn1cbmZ1bmN0aW9uIHVzZUtleWVkUHJlZmV0Y2hMaW5rcyhtYXRjaGVzKSB7XG4gIGxldCB7IG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMgfSA9IHVzZUZyYW1ld29ya0NvbnRleHQoKTtcbiAgbGV0IFtrZXllZFByZWZldGNoTGlua3MsIHNldEtleWVkUHJlZmV0Y2hMaW5rc10gPSBSZWFjdDkudXNlU3RhdGUoW10pO1xuICBSZWFjdDkudXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgaW50ZXJydXB0ZWQgPSBmYWxzZTtcbiAgICB2b2lkIGdldEtleWVkUHJlZmV0Y2hMaW5rcyhtYXRjaGVzLCBtYW5pZmVzdCwgcm91dGVNb2R1bGVzKS50aGVuKFxuICAgICAgKGxpbmtzKSA9PiB7XG4gICAgICAgIGlmICghaW50ZXJydXB0ZWQpIHtcbiAgICAgICAgICBzZXRLZXllZFByZWZldGNoTGlua3MobGlua3MpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaW50ZXJydXB0ZWQgPSB0cnVlO1xuICAgIH07XG4gIH0sIFttYXRjaGVzLCBtYW5pZmVzdCwgcm91dGVNb2R1bGVzXSk7XG4gIHJldHVybiBrZXllZFByZWZldGNoTGlua3M7XG59XG5mdW5jdGlvbiBQcmVmZXRjaFBhZ2VMaW5rc0ltcGwoe1xuICBwYWdlLFxuICBtYXRjaGVzOiBuZXh0TWF0Y2hlcyxcbiAgLi4ubGlua1Byb3BzXG59KSB7XG4gIGxldCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG4gIGxldCB7IG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMgfSA9IHVzZUZyYW1ld29ya0NvbnRleHQoKTtcbiAgbGV0IHsgbG9hZGVyRGF0YSwgbWF0Y2hlcyB9ID0gdXNlRGF0YVJvdXRlclN0YXRlQ29udGV4dCgpO1xuICBsZXQgbmV3TWF0Y2hlc0ZvckRhdGEgPSBSZWFjdDkudXNlTWVtbyhcbiAgICAoKSA9PiBnZXROZXdNYXRjaGVzRm9yTGlua3MoXG4gICAgICBwYWdlLFxuICAgICAgbmV4dE1hdGNoZXMsXG4gICAgICBtYXRjaGVzLFxuICAgICAgbWFuaWZlc3QsXG4gICAgICBsb2NhdGlvbixcbiAgICAgIFwiZGF0YVwiXG4gICAgKSxcbiAgICBbcGFnZSwgbmV4dE1hdGNoZXMsIG1hdGNoZXMsIG1hbmlmZXN0LCBsb2NhdGlvbl1cbiAgKTtcbiAgbGV0IG5ld01hdGNoZXNGb3JBc3NldHMgPSBSZWFjdDkudXNlTWVtbyhcbiAgICAoKSA9PiBnZXROZXdNYXRjaGVzRm9yTGlua3MoXG4gICAgICBwYWdlLFxuICAgICAgbmV4dE1hdGNoZXMsXG4gICAgICBtYXRjaGVzLFxuICAgICAgbWFuaWZlc3QsXG4gICAgICBsb2NhdGlvbixcbiAgICAgIFwiYXNzZXRzXCJcbiAgICApLFxuICAgIFtwYWdlLCBuZXh0TWF0Y2hlcywgbWF0Y2hlcywgbWFuaWZlc3QsIGxvY2F0aW9uXVxuICApO1xuICBsZXQgZGF0YUhyZWZzID0gUmVhY3Q5LnVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChwYWdlID09PSBsb2NhdGlvbi5wYXRobmFtZSArIGxvY2F0aW9uLnNlYXJjaCArIGxvY2F0aW9uLmhhc2gpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgbGV0IHJvdXRlc1BhcmFtcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gICAgbGV0IGZvdW5kT3B0T3V0Um91dGUgPSBmYWxzZTtcbiAgICBuZXh0TWF0Y2hlcy5mb3JFYWNoKChtKSA9PiB7XG4gICAgICBsZXQgbWFuaWZlc3RSb3V0ZSA9IG1hbmlmZXN0LnJvdXRlc1ttLnJvdXRlLmlkXTtcbiAgICAgIGlmICghbWFuaWZlc3RSb3V0ZSB8fCAhbWFuaWZlc3RSb3V0ZS5oYXNMb2FkZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFuZXdNYXRjaGVzRm9yRGF0YS5zb21lKChtMikgPT4gbTIucm91dGUuaWQgPT09IG0ucm91dGUuaWQpICYmIG0ucm91dGUuaWQgaW4gbG9hZGVyRGF0YSAmJiByb3V0ZU1vZHVsZXNbbS5yb3V0ZS5pZF0/LnNob3VsZFJldmFsaWRhdGUpIHtcbiAgICAgICAgZm91bmRPcHRPdXRSb3V0ZSA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKG1hbmlmZXN0Um91dGUuaGFzQ2xpZW50TG9hZGVyKSB7XG4gICAgICAgIGZvdW5kT3B0T3V0Um91dGUgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm91dGVzUGFyYW1zLmFkZChtLnJvdXRlLmlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAocm91dGVzUGFyYW1zLnNpemUgPT09IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgbGV0IHVybCA9IHNpbmdsZUZldGNoVXJsKHBhZ2UpO1xuICAgIGlmIChmb3VuZE9wdE91dFJvdXRlICYmIHJvdXRlc1BhcmFtcy5zaXplID4gMCkge1xuICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXG4gICAgICAgIFwiX3JvdXRlc1wiLFxuICAgICAgICBuZXh0TWF0Y2hlcy5maWx0ZXIoKG0pID0+IHJvdXRlc1BhcmFtcy5oYXMobS5yb3V0ZS5pZCkpLm1hcCgobSkgPT4gbS5yb3V0ZS5pZCkuam9pbihcIixcIilcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBbdXJsLnBhdGhuYW1lICsgdXJsLnNlYXJjaF07XG4gIH0sIFtcbiAgICBsb2FkZXJEYXRhLFxuICAgIGxvY2F0aW9uLFxuICAgIG1hbmlmZXN0LFxuICAgIG5ld01hdGNoZXNGb3JEYXRhLFxuICAgIG5leHRNYXRjaGVzLFxuICAgIHBhZ2UsXG4gICAgcm91dGVNb2R1bGVzXG4gIF0pO1xuICBsZXQgbW9kdWxlSHJlZnMgPSBSZWFjdDkudXNlTWVtbyhcbiAgICAoKSA9PiBnZXRNb2R1bGVMaW5rSHJlZnMobmV3TWF0Y2hlc0ZvckFzc2V0cywgbWFuaWZlc3QpLFxuICAgIFtuZXdNYXRjaGVzRm9yQXNzZXRzLCBtYW5pZmVzdF1cbiAgKTtcbiAgbGV0IGtleWVkUHJlZmV0Y2hMaW5rcyA9IHVzZUtleWVkUHJlZmV0Y2hMaW5rcyhuZXdNYXRjaGVzRm9yQXNzZXRzKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChSZWFjdDkuRnJhZ21lbnQsIG51bGwsIGRhdGFIcmVmcy5tYXAoKGhyZWYpID0+IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcImxpbmtcIiwgeyBrZXk6IGhyZWYsIHJlbDogXCJwcmVmZXRjaFwiLCBhczogXCJmZXRjaFwiLCBocmVmLCAuLi5saW5rUHJvcHMgfSkpLCBtb2R1bGVIcmVmcy5tYXAoKGhyZWYpID0+IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcImxpbmtcIiwgeyBrZXk6IGhyZWYsIHJlbDogXCJtb2R1bGVwcmVsb2FkXCIsIGhyZWYsIC4uLmxpbmtQcm9wcyB9KSksIGtleWVkUHJlZmV0Y2hMaW5rcy5tYXAoKHsga2V5LCBsaW5rIH0pID0+IChcbiAgICAvLyB0aGVzZSBkb24ndCBzcHJlYWQgYGxpbmtQcm9wc2AgYmVjYXVzZSB0aGV5IGFyZSBmdWxsIGxpbmsgZGVzY3JpcHRvcnNcbiAgICAvLyBhbHJlYWR5IHdpdGggdGhlaXIgb3duIHByb3BzXG4gICAgLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFwibGlua1wiLCB7IGtleSwgLi4ubGluayB9KVxuICApKSk7XG59XG5mdW5jdGlvbiBNZXRhKCkge1xuICBsZXQgeyBpc1NwYU1vZGUsIHJvdXRlTW9kdWxlcyB9ID0gdXNlRnJhbWV3b3JrQ29udGV4dCgpO1xuICBsZXQge1xuICAgIGVycm9ycyxcbiAgICBtYXRjaGVzOiByb3V0ZXJNYXRjaGVzLFxuICAgIGxvYWRlckRhdGFcbiAgfSA9IHVzZURhdGFSb3V0ZXJTdGF0ZUNvbnRleHQoKTtcbiAgbGV0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcbiAgbGV0IF9tYXRjaGVzID0gZ2V0QWN0aXZlTWF0Y2hlcyhyb3V0ZXJNYXRjaGVzLCBlcnJvcnMsIGlzU3BhTW9kZSk7XG4gIGxldCBlcnJvciA9IG51bGw7XG4gIGlmIChlcnJvcnMpIHtcbiAgICBlcnJvciA9IGVycm9yc1tfbWF0Y2hlc1tfbWF0Y2hlcy5sZW5ndGggLSAxXS5yb3V0ZS5pZF07XG4gIH1cbiAgbGV0IG1ldGEgPSBbXTtcbiAgbGV0IGxlYWZNZXRhID0gbnVsbDtcbiAgbGV0IG1hdGNoZXMgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBfbWF0Y2hlcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBfbWF0Y2ggPSBfbWF0Y2hlc1tpXTtcbiAgICBsZXQgcm91dGVJZCA9IF9tYXRjaC5yb3V0ZS5pZDtcbiAgICBsZXQgZGF0YTIgPSBsb2FkZXJEYXRhW3JvdXRlSWRdO1xuICAgIGxldCBwYXJhbXMgPSBfbWF0Y2gucGFyYW1zO1xuICAgIGxldCByb3V0ZU1vZHVsZSA9IHJvdXRlTW9kdWxlc1tyb3V0ZUlkXTtcbiAgICBsZXQgcm91dGVNZXRhID0gW107XG4gICAgbGV0IG1hdGNoID0ge1xuICAgICAgaWQ6IHJvdXRlSWQsXG4gICAgICBkYXRhOiBkYXRhMixcbiAgICAgIG1ldGE6IFtdLFxuICAgICAgcGFyYW1zOiBfbWF0Y2gucGFyYW1zLFxuICAgICAgcGF0aG5hbWU6IF9tYXRjaC5wYXRobmFtZSxcbiAgICAgIGhhbmRsZTogX21hdGNoLnJvdXRlLmhhbmRsZSxcbiAgICAgIGVycm9yXG4gICAgfTtcbiAgICBtYXRjaGVzW2ldID0gbWF0Y2g7XG4gICAgaWYgKHJvdXRlTW9kdWxlPy5tZXRhKSB7XG4gICAgICByb3V0ZU1ldGEgPSB0eXBlb2Ygcm91dGVNb2R1bGUubWV0YSA9PT0gXCJmdW5jdGlvblwiID8gcm91dGVNb2R1bGUubWV0YSh7XG4gICAgICAgIGRhdGE6IGRhdGEyLFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICBtYXRjaGVzLFxuICAgICAgICBlcnJvclxuICAgICAgfSkgOiBBcnJheS5pc0FycmF5KHJvdXRlTW9kdWxlLm1ldGEpID8gWy4uLnJvdXRlTW9kdWxlLm1ldGFdIDogcm91dGVNb2R1bGUubWV0YTtcbiAgICB9IGVsc2UgaWYgKGxlYWZNZXRhKSB7XG4gICAgICByb3V0ZU1ldGEgPSBbLi4ubGVhZk1ldGFdO1xuICAgIH1cbiAgICByb3V0ZU1ldGEgPSByb3V0ZU1ldGEgfHwgW107XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHJvdXRlTWV0YSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJUaGUgcm91dGUgYXQgXCIgKyBfbWF0Y2gucm91dGUucGF0aCArIFwiIHJldHVybnMgYW4gaW52YWxpZCB2YWx1ZS4gQWxsIHJvdXRlIG1ldGEgZnVuY3Rpb25zIG11c3QgcmV0dXJuIGFuIGFycmF5IG9mIG1ldGEgb2JqZWN0cy5cXG5cXG5UbyByZWZlcmVuY2UgdGhlIG1ldGEgZnVuY3Rpb24gQVBJLCBzZWUgaHR0cHM6Ly9yZW1peC5ydW4vcm91dGUvbWV0YVwiXG4gICAgICApO1xuICAgIH1cbiAgICBtYXRjaC5tZXRhID0gcm91dGVNZXRhO1xuICAgIG1hdGNoZXNbaV0gPSBtYXRjaDtcbiAgICBtZXRhID0gWy4uLnJvdXRlTWV0YV07XG4gICAgbGVhZk1ldGEgPSBtZXRhO1xuICB9XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoUmVhY3Q5LkZyYWdtZW50LCBudWxsLCBtZXRhLmZsYXQoKS5tYXAoKG1ldGFQcm9wcykgPT4ge1xuICAgIGlmICghbWV0YVByb3BzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKFwidGFnTmFtZVwiIGluIG1ldGFQcm9wcykge1xuICAgICAgbGV0IHsgdGFnTmFtZSwgLi4ucmVzdCB9ID0gbWV0YVByb3BzO1xuICAgICAgaWYgKCFpc1ZhbGlkTWV0YVRhZyh0YWdOYW1lKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYEEgbWV0YSBvYmplY3QgdXNlcyBhbiBpbnZhbGlkIHRhZ05hbWU6ICR7dGFnTmFtZX0uIEV4cGVjdGVkIGVpdGhlciAnbGluaycgb3IgJ21ldGEnYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGxldCBDb21wID0gdGFnTmFtZTtcbiAgICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoQ29tcCwgeyBrZXk6IEpTT04uc3RyaW5naWZ5KHJlc3QpLCAuLi5yZXN0IH0pO1xuICAgIH1cbiAgICBpZiAoXCJ0aXRsZVwiIGluIG1ldGFQcm9wcykge1xuICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcInRpdGxlXCIsIHsga2V5OiBcInRpdGxlXCIgfSwgU3RyaW5nKG1ldGFQcm9wcy50aXRsZSkpO1xuICAgIH1cbiAgICBpZiAoXCJjaGFyc2V0XCIgaW4gbWV0YVByb3BzKSB7XG4gICAgICBtZXRhUHJvcHMuY2hhclNldCA/PyAobWV0YVByb3BzLmNoYXJTZXQgPSBtZXRhUHJvcHMuY2hhcnNldCk7XG4gICAgICBkZWxldGUgbWV0YVByb3BzLmNoYXJzZXQ7XG4gICAgfVxuICAgIGlmIChcImNoYXJTZXRcIiBpbiBtZXRhUHJvcHMgJiYgbWV0YVByb3BzLmNoYXJTZXQgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHR5cGVvZiBtZXRhUHJvcHMuY2hhclNldCA9PT0gXCJzdHJpbmdcIiA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcIm1ldGFcIiwgeyBrZXk6IFwiY2hhclNldFwiLCBjaGFyU2V0OiBtZXRhUHJvcHMuY2hhclNldCB9KSA6IG51bGw7XG4gICAgfVxuICAgIGlmIChcInNjcmlwdDpsZCtqc29uXCIgaW4gbWV0YVByb3BzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBsZXQganNvbiA9IEpTT04uc3RyaW5naWZ5KG1ldGFQcm9wc1tcInNjcmlwdDpsZCtqc29uXCJdKTtcbiAgICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICBcInNjcmlwdFwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogYHNjcmlwdDpsZCtqc29uOiR7anNvbn1gLFxuICAgICAgICAgICAgdHlwZTogXCJhcHBsaWNhdGlvbi9sZCtqc29uXCIsXG4gICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDogeyBfX2h0bWw6IGpzb24gfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcIm1ldGFcIiwgeyBrZXk6IEpTT04uc3RyaW5naWZ5KG1ldGFQcm9wcyksIC4uLm1ldGFQcm9wcyB9KTtcbiAgfSkpO1xufVxuZnVuY3Rpb24gaXNWYWxpZE1ldGFUYWcodGFnTmFtZSkge1xuICByZXR1cm4gdHlwZW9mIHRhZ05hbWUgPT09IFwic3RyaW5nXCIgJiYgL14obWV0YXxsaW5rKSQvLnRlc3QodGFnTmFtZSk7XG59XG52YXIgaXNIeWRyYXRlZCA9IGZhbHNlO1xuZnVuY3Rpb24gU2NyaXB0cyhwcm9wcykge1xuICBsZXQgeyBtYW5pZmVzdCwgc2VydmVySGFuZG9mZlN0cmluZywgaXNTcGFNb2RlLCByZW5kZXJNZXRhIH0gPSB1c2VGcmFtZXdvcmtDb250ZXh0KCk7XG4gIGxldCB7IHJvdXRlciwgc3RhdGljOiBpc1N0YXRpYywgc3RhdGljQ29udGV4dCB9ID0gdXNlRGF0YVJvdXRlckNvbnRleHQyKCk7XG4gIGxldCB7IG1hdGNoZXM6IHJvdXRlck1hdGNoZXMgfSA9IHVzZURhdGFSb3V0ZXJTdGF0ZUNvbnRleHQoKTtcbiAgbGV0IGVuYWJsZUZvZ09mV2FyID0gaXNGb2dPZldhckVuYWJsZWQoaXNTcGFNb2RlKTtcbiAgaWYgKHJlbmRlck1ldGEpIHtcbiAgICByZW5kZXJNZXRhLmRpZFJlbmRlclNjcmlwdHMgPSB0cnVlO1xuICB9XG4gIGxldCBtYXRjaGVzID0gZ2V0QWN0aXZlTWF0Y2hlcyhyb3V0ZXJNYXRjaGVzLCBudWxsLCBpc1NwYU1vZGUpO1xuICBSZWFjdDkudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpc0h5ZHJhdGVkID0gdHJ1ZTtcbiAgfSwgW10pO1xuICBsZXQgaW5pdGlhbFNjcmlwdHMgPSBSZWFjdDkudXNlTWVtbygoKSA9PiB7XG4gICAgbGV0IHN0cmVhbVNjcmlwdCA9IFwid2luZG93Ll9fcmVhY3RSb3V0ZXJDb250ZXh0LnN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7c3RhcnQoY29udHJvbGxlcil7d2luZG93Ll9fcmVhY3RSb3V0ZXJDb250ZXh0LnN0cmVhbUNvbnRyb2xsZXIgPSBjb250cm9sbGVyO319KS5waXBlVGhyb3VnaChuZXcgVGV4dEVuY29kZXJTdHJlYW0oKSk7XCI7XG4gICAgbGV0IGNvbnRleHRTY3JpcHQgPSBzdGF0aWNDb250ZXh0ID8gYHdpbmRvdy5fX3JlYWN0Um91dGVyQ29udGV4dCA9ICR7c2VydmVySGFuZG9mZlN0cmluZ307JHtzdHJlYW1TY3JpcHR9YCA6IFwiIFwiO1xuICAgIGxldCByb3V0ZU1vZHVsZXNTY3JpcHQgPSAhaXNTdGF0aWMgPyBcIiBcIiA6IGAke21hbmlmZXN0Lmhtcj8ucnVudGltZSA/IGBpbXBvcnQgJHtKU09OLnN0cmluZ2lmeShtYW5pZmVzdC5obXIucnVudGltZSl9O2AgOiBcIlwifSR7IWVuYWJsZUZvZ09mV2FyID8gYGltcG9ydCAke0pTT04uc3RyaW5naWZ5KG1hbmlmZXN0LnVybCl9YCA6IFwiXCJ9O1xuJHttYXRjaGVzLm1hcChcbiAgICAgIChtYXRjaCwgaW5kZXgpID0+IGBpbXBvcnQgKiBhcyByb3V0ZSR7aW5kZXh9IGZyb20gJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgbWFuaWZlc3Qucm91dGVzW21hdGNoLnJvdXRlLmlkXS5tb2R1bGVcbiAgICAgICl9O2BcbiAgICApLmpvaW4oXCJcXG5cIil9XG4gICR7ZW5hYmxlRm9nT2ZXYXIgPyAoXG4gICAgICAvLyBJbmxpbmUgYSBtaW5pbWFsIG1hbmlmZXN0IHdpdGggdGhlIFNTUiBtYXRjaGVzXG4gICAgICBgd2luZG93Ll9fcmVhY3RSb3V0ZXJNYW5pZmVzdCA9ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIGdldFBhcnRpYWxNYW5pZmVzdChtYW5pZmVzdCwgcm91dGVyKSxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgMlxuICAgICAgKX07YFxuICAgICkgOiBcIlwifVxuICB3aW5kb3cuX19yZWFjdFJvdXRlclJvdXRlTW9kdWxlcyA9IHske21hdGNoZXMubWFwKChtYXRjaCwgaW5kZXgpID0+IGAke0pTT04uc3RyaW5naWZ5KG1hdGNoLnJvdXRlLmlkKX06cm91dGUke2luZGV4fWApLmpvaW4oXCIsXCIpfX07XG5cbmltcG9ydCgke0pTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmVudHJ5Lm1vZHVsZSl9KTtgO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoUmVhY3Q5LkZyYWdtZW50LCBudWxsLCAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoXG4gICAgICBcInNjcmlwdFwiLFxuICAgICAge1xuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nOiB0cnVlLFxuICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDogY3JlYXRlSHRtbChjb250ZXh0U2NyaXB0KSxcbiAgICAgICAgdHlwZTogdm9pZCAwXG4gICAgICB9XG4gICAgKSwgLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFxuICAgICAgXCJzY3JpcHRcIixcbiAgICAgIHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZzogdHJ1ZSxcbiAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IGNyZWF0ZUh0bWwocm91dGVNb2R1bGVzU2NyaXB0KSxcbiAgICAgICAgdHlwZTogXCJtb2R1bGVcIixcbiAgICAgICAgYXN5bmM6IHRydWVcbiAgICAgIH1cbiAgICApKTtcbiAgfSwgW10pO1xuICBsZXQgcm91dGVQcmVsb2FkcyA9IG1hdGNoZXMubWFwKChtYXRjaCkgPT4ge1xuICAgIGxldCByb3V0ZSA9IG1hbmlmZXN0LnJvdXRlc1ttYXRjaC5yb3V0ZS5pZF07XG4gICAgcmV0dXJuIHJvdXRlID8gKHJvdXRlLmltcG9ydHMgfHwgW10pLmNvbmNhdChbcm91dGUubW9kdWxlXSkgOiBbXTtcbiAgfSkuZmxhdCgxKTtcbiAgbGV0IHByZWxvYWRzID0gaXNIeWRyYXRlZCA/IFtdIDogbWFuaWZlc3QuZW50cnkuaW1wb3J0cy5jb25jYXQocm91dGVQcmVsb2Fkcyk7XG4gIHJldHVybiBpc0h5ZHJhdGVkID8gbnVsbCA6IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChSZWFjdDkuRnJhZ21lbnQsIG51bGwsICFlbmFibGVGb2dPZldhciA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcbiAgICBcImxpbmtcIixcbiAgICB7XG4gICAgICByZWw6IFwibW9kdWxlcHJlbG9hZFwiLFxuICAgICAgaHJlZjogbWFuaWZlc3QudXJsLFxuICAgICAgY3Jvc3NPcmlnaW46IHByb3BzLmNyb3NzT3JpZ2luXG4gICAgfVxuICApIDogbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFxuICAgIFwibGlua1wiLFxuICAgIHtcbiAgICAgIHJlbDogXCJtb2R1bGVwcmVsb2FkXCIsXG4gICAgICBocmVmOiBtYW5pZmVzdC5lbnRyeS5tb2R1bGUsXG4gICAgICBjcm9zc09yaWdpbjogcHJvcHMuY3Jvc3NPcmlnaW5cbiAgICB9XG4gICksIGRlZHVwZShwcmVsb2FkcykubWFwKChwYXRoKSA9PiAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoXG4gICAgXCJsaW5rXCIsXG4gICAge1xuICAgICAga2V5OiBwYXRoLFxuICAgICAgcmVsOiBcIm1vZHVsZXByZWxvYWRcIixcbiAgICAgIGhyZWY6IHBhdGgsXG4gICAgICBjcm9zc09yaWdpbjogcHJvcHMuY3Jvc3NPcmlnaW5cbiAgICB9XG4gICkpLCBpbml0aWFsU2NyaXB0cyk7XG59XG5mdW5jdGlvbiBkZWR1cGUoYXJyYXkpIHtcbiAgcmV0dXJuIFsuLi5uZXcgU2V0KGFycmF5KV07XG59XG5mdW5jdGlvbiBtZXJnZVJlZnMoLi4ucmVmcykge1xuICByZXR1cm4gKHZhbHVlKSA9PiB7XG4gICAgcmVmcy5mb3JFYWNoKChyZWYpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgcmVmID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmVmKHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAocmVmICE9IG51bGwpIHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbn1cblxuLy8gbGliL2RvbS9saWIudHN4XG52YXIgaXNCcm93c2VyID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2Ygd2luZG93LmRvY3VtZW50ICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAhPT0gXCJ1bmRlZmluZWRcIjtcbnRyeSB7XG4gIGlmIChpc0Jyb3dzZXIpIHtcbiAgICB3aW5kb3cuX19yZWFjdFJvdXRlclZlcnNpb24gPSBcIjcuMS4wXCI7XG4gIH1cbn0gY2F0Y2ggKGUpIHtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUJyb3dzZXJSb3V0ZXIocm91dGVzLCBvcHRzKSB7XG4gIHJldHVybiBjcmVhdGVSb3V0ZXIoe1xuICAgIGJhc2VuYW1lOiBvcHRzPy5iYXNlbmFtZSxcbiAgICBmdXR1cmU6IG9wdHM/LmZ1dHVyZSxcbiAgICBoaXN0b3J5OiBjcmVhdGVCcm93c2VySGlzdG9yeSh7IHdpbmRvdzogb3B0cz8ud2luZG93IH0pLFxuICAgIGh5ZHJhdGlvbkRhdGE6IG9wdHM/Lmh5ZHJhdGlvbkRhdGEgfHwgcGFyc2VIeWRyYXRpb25EYXRhKCksXG4gICAgcm91dGVzLFxuICAgIG1hcFJvdXRlUHJvcGVydGllcyxcbiAgICBkYXRhU3RyYXRlZ3k6IG9wdHM/LmRhdGFTdHJhdGVneSxcbiAgICBwYXRjaFJvdXRlc09uTmF2aWdhdGlvbjogb3B0cz8ucGF0Y2hSb3V0ZXNPbk5hdmlnYXRpb24sXG4gICAgd2luZG93OiBvcHRzPy53aW5kb3dcbiAgfSkuaW5pdGlhbGl6ZSgpO1xufVxuZnVuY3Rpb24gY3JlYXRlSGFzaFJvdXRlcihyb3V0ZXMsIG9wdHMpIHtcbiAgcmV0dXJuIGNyZWF0ZVJvdXRlcih7XG4gICAgYmFzZW5hbWU6IG9wdHM/LmJhc2VuYW1lLFxuICAgIGZ1dHVyZTogb3B0cz8uZnV0dXJlLFxuICAgIGhpc3Rvcnk6IGNyZWF0ZUhhc2hIaXN0b3J5KHsgd2luZG93OiBvcHRzPy53aW5kb3cgfSksXG4gICAgaHlkcmF0aW9uRGF0YTogb3B0cz8uaHlkcmF0aW9uRGF0YSB8fCBwYXJzZUh5ZHJhdGlvbkRhdGEoKSxcbiAgICByb3V0ZXMsXG4gICAgbWFwUm91dGVQcm9wZXJ0aWVzLFxuICAgIGRhdGFTdHJhdGVneTogb3B0cz8uZGF0YVN0cmF0ZWd5LFxuICAgIHBhdGNoUm91dGVzT25OYXZpZ2F0aW9uOiBvcHRzPy5wYXRjaFJvdXRlc09uTmF2aWdhdGlvbixcbiAgICB3aW5kb3c6IG9wdHM/LndpbmRvd1xuICB9KS5pbml0aWFsaXplKCk7XG59XG5mdW5jdGlvbiBwYXJzZUh5ZHJhdGlvbkRhdGEoKSB7XG4gIGxldCBzdGF0ZSA9IHdpbmRvdz8uX19zdGF0aWNSb3V0ZXJIeWRyYXRpb25EYXRhO1xuICBpZiAoc3RhdGUgJiYgc3RhdGUuZXJyb3JzKSB7XG4gICAgc3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGVycm9yczogZGVzZXJpYWxpemVFcnJvcnMoc3RhdGUuZXJyb3JzKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHN0YXRlO1xufVxuZnVuY3Rpb24gZGVzZXJpYWxpemVFcnJvcnMoZXJyb3JzKSB7XG4gIGlmICghZXJyb3JzKSByZXR1cm4gbnVsbDtcbiAgbGV0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhlcnJvcnMpO1xuICBsZXQgc2VyaWFsaXplZCA9IHt9O1xuICBmb3IgKGxldCBba2V5LCB2YWxdIG9mIGVudHJpZXMpIHtcbiAgICBpZiAodmFsICYmIHZhbC5fX3R5cGUgPT09IFwiUm91dGVFcnJvclJlc3BvbnNlXCIpIHtcbiAgICAgIHNlcmlhbGl6ZWRba2V5XSA9IG5ldyBFcnJvclJlc3BvbnNlSW1wbChcbiAgICAgICAgdmFsLnN0YXR1cyxcbiAgICAgICAgdmFsLnN0YXR1c1RleHQsXG4gICAgICAgIHZhbC5kYXRhLFxuICAgICAgICB2YWwuaW50ZXJuYWwgPT09IHRydWVcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh2YWwgJiYgdmFsLl9fdHlwZSA9PT0gXCJFcnJvclwiKSB7XG4gICAgICBpZiAodmFsLl9fc3ViVHlwZSkge1xuICAgICAgICBsZXQgRXJyb3JDb25zdHJ1Y3RvciA9IHdpbmRvd1t2YWwuX19zdWJUeXBlXTtcbiAgICAgICAgaWYgKHR5cGVvZiBFcnJvckNvbnN0cnVjdG9yID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IGVycm9yID0gbmV3IEVycm9yQ29uc3RydWN0b3IodmFsLm1lc3NhZ2UpO1xuICAgICAgICAgICAgZXJyb3Iuc3RhY2sgPSBcIlwiO1xuICAgICAgICAgICAgc2VyaWFsaXplZFtrZXldID0gZXJyb3I7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHNlcmlhbGl6ZWRba2V5XSA9PSBudWxsKSB7XG4gICAgICAgIGxldCBlcnJvciA9IG5ldyBFcnJvcih2YWwubWVzc2FnZSk7XG4gICAgICAgIGVycm9yLnN0YWNrID0gXCJcIjtcbiAgICAgICAgc2VyaWFsaXplZFtrZXldID0gZXJyb3I7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlcmlhbGl6ZWRba2V5XSA9IHZhbDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHNlcmlhbGl6ZWQ7XG59XG5mdW5jdGlvbiBCcm93c2VyUm91dGVyKHtcbiAgYmFzZW5hbWUsXG4gIGNoaWxkcmVuLFxuICB3aW5kb3c6IHdpbmRvdzJcbn0pIHtcbiAgbGV0IGhpc3RvcnlSZWYgPSBSZWFjdDEwLnVzZVJlZigpO1xuICBpZiAoaGlzdG9yeVJlZi5jdXJyZW50ID09IG51bGwpIHtcbiAgICBoaXN0b3J5UmVmLmN1cnJlbnQgPSBjcmVhdGVCcm93c2VySGlzdG9yeSh7IHdpbmRvdzogd2luZG93MiwgdjVDb21wYXQ6IHRydWUgfSk7XG4gIH1cbiAgbGV0IGhpc3RvcnkgPSBoaXN0b3J5UmVmLmN1cnJlbnQ7XG4gIGxldCBbc3RhdGUsIHNldFN0YXRlSW1wbF0gPSBSZWFjdDEwLnVzZVN0YXRlKHtcbiAgICBhY3Rpb246IGhpc3RvcnkuYWN0aW9uLFxuICAgIGxvY2F0aW9uOiBoaXN0b3J5LmxvY2F0aW9uXG4gIH0pO1xuICBsZXQgc2V0U3RhdGUgPSBSZWFjdDEwLnVzZUNhbGxiYWNrKFxuICAgIChuZXdTdGF0ZSkgPT4ge1xuICAgICAgUmVhY3QxMC5zdGFydFRyYW5zaXRpb24oKCkgPT4gc2V0U3RhdGVJbXBsKG5ld1N0YXRlKSk7XG4gICAgfSxcbiAgICBbc2V0U3RhdGVJbXBsXVxuICApO1xuICBSZWFjdDEwLnVzZUxheW91dEVmZmVjdCgoKSA9PiBoaXN0b3J5Lmxpc3RlbihzZXRTdGF0ZSksIFtoaXN0b3J5LCBzZXRTdGF0ZV0pO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0MTAuY3JlYXRlRWxlbWVudChcbiAgICBSb3V0ZXIsXG4gICAge1xuICAgICAgYmFzZW5hbWUsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGxvY2F0aW9uOiBzdGF0ZS5sb2NhdGlvbixcbiAgICAgIG5hdmlnYXRpb25UeXBlOiBzdGF0ZS5hY3Rpb24sXG4gICAgICBuYXZpZ2F0b3I6IGhpc3RvcnlcbiAgICB9XG4gICk7XG59XG5mdW5jdGlvbiBIYXNoUm91dGVyKHsgYmFzZW5hbWUsIGNoaWxkcmVuLCB3aW5kb3c6IHdpbmRvdzIgfSkge1xuICBsZXQgaGlzdG9yeVJlZiA9IFJlYWN0MTAudXNlUmVmKCk7XG4gIGlmIChoaXN0b3J5UmVmLmN1cnJlbnQgPT0gbnVsbCkge1xuICAgIGhpc3RvcnlSZWYuY3VycmVudCA9IGNyZWF0ZUhhc2hIaXN0b3J5KHsgd2luZG93OiB3aW5kb3cyLCB2NUNvbXBhdDogdHJ1ZSB9KTtcbiAgfVxuICBsZXQgaGlzdG9yeSA9IGhpc3RvcnlSZWYuY3VycmVudDtcbiAgbGV0IFtzdGF0ZSwgc2V0U3RhdGVJbXBsXSA9IFJlYWN0MTAudXNlU3RhdGUoe1xuICAgIGFjdGlvbjogaGlzdG9yeS5hY3Rpb24sXG4gICAgbG9jYXRpb246IGhpc3RvcnkubG9jYXRpb25cbiAgfSk7XG4gIGxldCBzZXRTdGF0ZSA9IFJlYWN0MTAudXNlQ2FsbGJhY2soXG4gICAgKG5ld1N0YXRlKSA9PiB7XG4gICAgICBSZWFjdDEwLnN0YXJ0VHJhbnNpdGlvbigoKSA9PiBzZXRTdGF0ZUltcGwobmV3U3RhdGUpKTtcbiAgICB9LFxuICAgIFtzZXRTdGF0ZUltcGxdXG4gICk7XG4gIFJlYWN0MTAudXNlTGF5b3V0RWZmZWN0KCgpID0+IGhpc3RvcnkubGlzdGVuKHNldFN0YXRlKSwgW2hpc3RvcnksIHNldFN0YXRlXSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QxMC5jcmVhdGVFbGVtZW50KFxuICAgIFJvdXRlcixcbiAgICB7XG4gICAgICBiYXNlbmFtZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgbG9jYXRpb246IHN0YXRlLmxvY2F0aW9uLFxuICAgICAgbmF2aWdhdGlvblR5cGU6IHN0YXRlLmFjdGlvbixcbiAgICAgIG5hdmlnYXRvcjogaGlzdG9yeVxuICAgIH1cbiAgKTtcbn1cbmZ1bmN0aW9uIEhpc3RvcnlSb3V0ZXIoe1xuICBiYXNlbmFtZSxcbiAgY2hpbGRyZW4sXG4gIGhpc3Rvcnlcbn0pIHtcbiAgbGV0IFtzdGF0ZSwgc2V0U3RhdGVJbXBsXSA9IFJlYWN0MTAudXNlU3RhdGUoe1xuICAgIGFjdGlvbjogaGlzdG9yeS5hY3Rpb24sXG4gICAgbG9jYXRpb246IGhpc3RvcnkubG9jYXRpb25cbiAgfSk7XG4gIGxldCBzZXRTdGF0ZSA9IFJlYWN0MTAudXNlQ2FsbGJhY2soXG4gICAgKG5ld1N0YXRlKSA9PiB7XG4gICAgICBSZWFjdDEwLnN0YXJ0VHJhbnNpdGlvbigoKSA9PiBzZXRTdGF0ZUltcGwobmV3U3RhdGUpKTtcbiAgICB9LFxuICAgIFtzZXRTdGF0ZUltcGxdXG4gICk7XG4gIFJlYWN0MTAudXNlTGF5b3V0RWZmZWN0KCgpID0+IGhpc3RvcnkubGlzdGVuKHNldFN0YXRlKSwgW2hpc3RvcnksIHNldFN0YXRlXSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QxMC5jcmVhdGVFbGVtZW50KFxuICAgIFJvdXRlcixcbiAgICB7XG4gICAgICBiYXNlbmFtZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgbG9jYXRpb246IHN0YXRlLmxvY2F0aW9uLFxuICAgICAgbmF2aWdhdGlvblR5cGU6IHN0YXRlLmFjdGlvbixcbiAgICAgIG5hdmlnYXRvcjogaGlzdG9yeVxuICAgIH1cbiAgKTtcbn1cbkhpc3RvcnlSb3V0ZXIuZGlzcGxheU5hbWUgPSBcInVuc3RhYmxlX0hpc3RvcnlSb3V0ZXJcIjtcbnZhciBBQlNPTFVURV9VUkxfUkVHRVgyID0gL14oPzpbYS16XVthLXowLTkrLi1dKjp8XFwvXFwvKS9pO1xudmFyIExpbmsgPSBSZWFjdDEwLmZvcndhcmRSZWYoXG4gIGZ1bmN0aW9uIExpbmtXaXRoUmVmKHtcbiAgICBvbkNsaWNrLFxuICAgIGRpc2NvdmVyID0gXCJyZW5kZXJcIixcbiAgICBwcmVmZXRjaCA9IFwibm9uZVwiLFxuICAgIHJlbGF0aXZlLFxuICAgIHJlbG9hZERvY3VtZW50LFxuICAgIHJlcGxhY2U6IHJlcGxhY2UyLFxuICAgIHN0YXRlLFxuICAgIHRhcmdldCxcbiAgICB0byxcbiAgICBwcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgdmlld1RyYW5zaXRpb24sXG4gICAgLi4ucmVzdFxuICB9LCBmb3J3YXJkZWRSZWYpIHtcbiAgICBsZXQgeyBiYXNlbmFtZSB9ID0gUmVhY3QxMC51c2VDb250ZXh0KE5hdmlnYXRpb25Db250ZXh0KTtcbiAgICBsZXQgaXNBYnNvbHV0ZSA9IHR5cGVvZiB0byA9PT0gXCJzdHJpbmdcIiAmJiBBQlNPTFVURV9VUkxfUkVHRVgyLnRlc3QodG8pO1xuICAgIGxldCBhYnNvbHV0ZUhyZWY7XG4gICAgbGV0IGlzRXh0ZXJuYWwgPSBmYWxzZTtcbiAgICBpZiAodHlwZW9mIHRvID09PSBcInN0cmluZ1wiICYmIGlzQWJzb2x1dGUpIHtcbiAgICAgIGFic29sdXRlSHJlZiA9IHRvO1xuICAgICAgaWYgKGlzQnJvd3Nlcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGxldCBjdXJyZW50VXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgICAgICAgbGV0IHRhcmdldFVybCA9IHRvLnN0YXJ0c1dpdGgoXCIvL1wiKSA/IG5ldyBVUkwoY3VycmVudFVybC5wcm90b2NvbCArIHRvKSA6IG5ldyBVUkwodG8pO1xuICAgICAgICAgIGxldCBwYXRoID0gc3RyaXBCYXNlbmFtZSh0YXJnZXRVcmwucGF0aG5hbWUsIGJhc2VuYW1lKTtcbiAgICAgICAgICBpZiAodGFyZ2V0VXJsLm9yaWdpbiA9PT0gY3VycmVudFVybC5vcmlnaW4gJiYgcGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgICB0byA9IHBhdGggKyB0YXJnZXRVcmwuc2VhcmNoICsgdGFyZ2V0VXJsLmhhc2g7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlzRXh0ZXJuYWwgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgIGA8TGluayB0bz1cIiR7dG99XCI+IGNvbnRhaW5zIGFuIGludmFsaWQgVVJMIHdoaWNoIHdpbGwgcHJvYmFibHkgYnJlYWsgd2hlbiBjbGlja2VkIC0gcGxlYXNlIHVwZGF0ZSB0byBhIHZhbGlkIFVSTCBwYXRoLmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBocmVmID0gdXNlSHJlZih0bywgeyByZWxhdGl2ZSB9KTtcbiAgICBsZXQgW3Nob3VsZFByZWZldGNoLCBwcmVmZXRjaFJlZiwgcHJlZmV0Y2hIYW5kbGVyc10gPSB1c2VQcmVmZXRjaEJlaGF2aW9yKFxuICAgICAgcHJlZmV0Y2gsXG4gICAgICByZXN0XG4gICAgKTtcbiAgICBsZXQgaW50ZXJuYWxPbkNsaWNrID0gdXNlTGlua0NsaWNrSGFuZGxlcih0bywge1xuICAgICAgcmVwbGFjZTogcmVwbGFjZTIsXG4gICAgICBzdGF0ZSxcbiAgICAgIHRhcmdldCxcbiAgICAgIHByZXZlbnRTY3JvbGxSZXNldCxcbiAgICAgIHJlbGF0aXZlLFxuICAgICAgdmlld1RyYW5zaXRpb25cbiAgICB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xuICAgICAgaWYgKG9uQ2xpY2spIG9uQ2xpY2soZXZlbnQpO1xuICAgICAgaWYgKCFldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIGludGVybmFsT25DbGljayhldmVudCk7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBsaW5rID0gKFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1oYXMtY29udGVudFxuICAgICAgLyogQF9fUFVSRV9fICovIFJlYWN0MTAuY3JlYXRlRWxlbWVudChcbiAgICAgICAgXCJhXCIsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5yZXN0LFxuICAgICAgICAgIC4uLnByZWZldGNoSGFuZGxlcnMsXG4gICAgICAgICAgaHJlZjogYWJzb2x1dGVIcmVmIHx8IGhyZWYsXG4gICAgICAgICAgb25DbGljazogaXNFeHRlcm5hbCB8fCByZWxvYWREb2N1bWVudCA/IG9uQ2xpY2sgOiBoYW5kbGVDbGljayxcbiAgICAgICAgICByZWY6IG1lcmdlUmVmcyhmb3J3YXJkZWRSZWYsIHByZWZldGNoUmVmKSxcbiAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgXCJkYXRhLWRpc2NvdmVyXCI6ICFpc0Fic29sdXRlICYmIGRpc2NvdmVyID09PSBcInJlbmRlclwiID8gXCJ0cnVlXCIgOiB2b2lkIDBcbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG4gICAgcmV0dXJuIHNob3VsZFByZWZldGNoICYmICFpc0Fic29sdXRlID8gLyogQF9fUFVSRV9fICovIFJlYWN0MTAuY3JlYXRlRWxlbWVudChSZWFjdDEwLkZyYWdtZW50LCBudWxsLCBsaW5rLCAvKiBAX19QVVJFX18gKi8gUmVhY3QxMC5jcmVhdGVFbGVtZW50KFByZWZldGNoUGFnZUxpbmtzLCB7IHBhZ2U6IGhyZWYgfSkpIDogbGluaztcbiAgfVxuKTtcbkxpbmsuZGlzcGxheU5hbWUgPSBcIkxpbmtcIjtcbnZhciBOYXZMaW5rID0gUmVhY3QxMC5mb3J3YXJkUmVmKFxuICBmdW5jdGlvbiBOYXZMaW5rV2l0aFJlZih7XG4gICAgXCJhcmlhLWN1cnJlbnRcIjogYXJpYUN1cnJlbnRQcm9wID0gXCJwYWdlXCIsXG4gICAgY2FzZVNlbnNpdGl2ZSA9IGZhbHNlLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lUHJvcCA9IFwiXCIsXG4gICAgZW5kID0gZmFsc2UsXG4gICAgc3R5bGU6IHN0eWxlUHJvcCxcbiAgICB0byxcbiAgICB2aWV3VHJhbnNpdGlvbixcbiAgICBjaGlsZHJlbixcbiAgICAuLi5yZXN0XG4gIH0sIHJlZikge1xuICAgIGxldCBwYXRoID0gdXNlUmVzb2x2ZWRQYXRoKHRvLCB7IHJlbGF0aXZlOiByZXN0LnJlbGF0aXZlIH0pO1xuICAgIGxldCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG4gICAgbGV0IHJvdXRlclN0YXRlID0gUmVhY3QxMC51c2VDb250ZXh0KERhdGFSb3V0ZXJTdGF0ZUNvbnRleHQpO1xuICAgIGxldCB7IG5hdmlnYXRvcjogbmF2aWdhdG9yMiwgYmFzZW5hbWUgfSA9IFJlYWN0MTAudXNlQ29udGV4dChOYXZpZ2F0aW9uQ29udGV4dCk7XG4gICAgbGV0IGlzVHJhbnNpdGlvbmluZyA9IHJvdXRlclN0YXRlICE9IG51bGwgJiYgLy8gQ29uZGl0aW9uYWwgdXNhZ2UgaXMgT0sgaGVyZSBiZWNhdXNlIHRoZSB1c2FnZSBvZiBhIGRhdGEgcm91dGVyIGlzIHN0YXRpY1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgIHVzZVZpZXdUcmFuc2l0aW9uU3RhdGUocGF0aCkgJiYgdmlld1RyYW5zaXRpb24gPT09IHRydWU7XG4gICAgbGV0IHRvUGF0aG5hbWUgPSBuYXZpZ2F0b3IyLmVuY29kZUxvY2F0aW9uID8gbmF2aWdhdG9yMi5lbmNvZGVMb2NhdGlvbihwYXRoKS5wYXRobmFtZSA6IHBhdGgucGF0aG5hbWU7XG4gICAgbGV0IGxvY2F0aW9uUGF0aG5hbWUgPSBsb2NhdGlvbi5wYXRobmFtZTtcbiAgICBsZXQgbmV4dExvY2F0aW9uUGF0aG5hbWUgPSByb3V0ZXJTdGF0ZSAmJiByb3V0ZXJTdGF0ZS5uYXZpZ2F0aW9uICYmIHJvdXRlclN0YXRlLm5hdmlnYXRpb24ubG9jYXRpb24gPyByb3V0ZXJTdGF0ZS5uYXZpZ2F0aW9uLmxvY2F0aW9uLnBhdGhuYW1lIDogbnVsbDtcbiAgICBpZiAoIWNhc2VTZW5zaXRpdmUpIHtcbiAgICAgIGxvY2F0aW9uUGF0aG5hbWUgPSBsb2NhdGlvblBhdGhuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICBuZXh0TG9jYXRpb25QYXRobmFtZSA9IG5leHRMb2NhdGlvblBhdGhuYW1lID8gbmV4dExvY2F0aW9uUGF0aG5hbWUudG9Mb3dlckNhc2UoKSA6IG51bGw7XG4gICAgICB0b1BhdGhuYW1lID0gdG9QYXRobmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBpZiAobmV4dExvY2F0aW9uUGF0aG5hbWUgJiYgYmFzZW5hbWUpIHtcbiAgICAgIG5leHRMb2NhdGlvblBhdGhuYW1lID0gc3RyaXBCYXNlbmFtZShuZXh0TG9jYXRpb25QYXRobmFtZSwgYmFzZW5hbWUpIHx8IG5leHRMb2NhdGlvblBhdGhuYW1lO1xuICAgIH1cbiAgICBjb25zdCBlbmRTbGFzaFBvc2l0aW9uID0gdG9QYXRobmFtZSAhPT0gXCIvXCIgJiYgdG9QYXRobmFtZS5lbmRzV2l0aChcIi9cIikgPyB0b1BhdGhuYW1lLmxlbmd0aCAtIDEgOiB0b1BhdGhuYW1lLmxlbmd0aDtcbiAgICBsZXQgaXNBY3RpdmUgPSBsb2NhdGlvblBhdGhuYW1lID09PSB0b1BhdGhuYW1lIHx8ICFlbmQgJiYgbG9jYXRpb25QYXRobmFtZS5zdGFydHNXaXRoKHRvUGF0aG5hbWUpICYmIGxvY2F0aW9uUGF0aG5hbWUuY2hhckF0KGVuZFNsYXNoUG9zaXRpb24pID09PSBcIi9cIjtcbiAgICBsZXQgaXNQZW5kaW5nID0gbmV4dExvY2F0aW9uUGF0aG5hbWUgIT0gbnVsbCAmJiAobmV4dExvY2F0aW9uUGF0aG5hbWUgPT09IHRvUGF0aG5hbWUgfHwgIWVuZCAmJiBuZXh0TG9jYXRpb25QYXRobmFtZS5zdGFydHNXaXRoKHRvUGF0aG5hbWUpICYmIG5leHRMb2NhdGlvblBhdGhuYW1lLmNoYXJBdCh0b1BhdGhuYW1lLmxlbmd0aCkgPT09IFwiL1wiKTtcbiAgICBsZXQgcmVuZGVyUHJvcHMgPSB7XG4gICAgICBpc0FjdGl2ZSxcbiAgICAgIGlzUGVuZGluZyxcbiAgICAgIGlzVHJhbnNpdGlvbmluZ1xuICAgIH07XG4gICAgbGV0IGFyaWFDdXJyZW50ID0gaXNBY3RpdmUgPyBhcmlhQ3VycmVudFByb3AgOiB2b2lkIDA7XG4gICAgbGV0IGNsYXNzTmFtZTtcbiAgICBpZiAodHlwZW9mIGNsYXNzTmFtZVByb3AgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgY2xhc3NOYW1lID0gY2xhc3NOYW1lUHJvcChyZW5kZXJQcm9wcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsYXNzTmFtZSA9IFtcbiAgICAgICAgY2xhc3NOYW1lUHJvcCxcbiAgICAgICAgaXNBY3RpdmUgPyBcImFjdGl2ZVwiIDogbnVsbCxcbiAgICAgICAgaXNQZW5kaW5nID8gXCJwZW5kaW5nXCIgOiBudWxsLFxuICAgICAgICBpc1RyYW5zaXRpb25pbmcgPyBcInRyYW5zaXRpb25pbmdcIiA6IG51bGxcbiAgICAgIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpO1xuICAgIH1cbiAgICBsZXQgc3R5bGUgPSB0eXBlb2Ygc3R5bGVQcm9wID09PSBcImZ1bmN0aW9uXCIgPyBzdHlsZVByb3AocmVuZGVyUHJvcHMpIDogc3R5bGVQcm9wO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QxMC5jcmVhdGVFbGVtZW50KFxuICAgICAgTGluayxcbiAgICAgIHtcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgICAgXCJhcmlhLWN1cnJlbnRcIjogYXJpYUN1cnJlbnQsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgcmVmLFxuICAgICAgICBzdHlsZSxcbiAgICAgICAgdG8sXG4gICAgICAgIHZpZXdUcmFuc2l0aW9uXG4gICAgICB9LFxuICAgICAgdHlwZW9mIGNoaWxkcmVuID09PSBcImZ1bmN0aW9uXCIgPyBjaGlsZHJlbihyZW5kZXJQcm9wcykgOiBjaGlsZHJlblxuICAgICk7XG4gIH1cbik7XG5OYXZMaW5rLmRpc3BsYXlOYW1lID0gXCJOYXZMaW5rXCI7XG52YXIgRm9ybSA9IFJlYWN0MTAuZm9yd2FyZFJlZihcbiAgKHtcbiAgICBkaXNjb3ZlciA9IFwicmVuZGVyXCIsXG4gICAgZmV0Y2hlcktleSxcbiAgICBuYXZpZ2F0ZSxcbiAgICByZWxvYWREb2N1bWVudCxcbiAgICByZXBsYWNlOiByZXBsYWNlMixcbiAgICBzdGF0ZSxcbiAgICBtZXRob2QgPSBkZWZhdWx0TWV0aG9kLFxuICAgIGFjdGlvbixcbiAgICBvblN1Ym1pdCxcbiAgICByZWxhdGl2ZSxcbiAgICBwcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgdmlld1RyYW5zaXRpb24sXG4gICAgLi4ucHJvcHNcbiAgfSwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgbGV0IHN1Ym1pdCA9IHVzZVN1Ym1pdCgpO1xuICAgIGxldCBmb3JtQWN0aW9uID0gdXNlRm9ybUFjdGlvbihhY3Rpb24sIHsgcmVsYXRpdmUgfSk7XG4gICAgbGV0IGZvcm1NZXRob2QgPSBtZXRob2QudG9Mb3dlckNhc2UoKSA9PT0gXCJnZXRcIiA/IFwiZ2V0XCIgOiBcInBvc3RcIjtcbiAgICBsZXQgaXNBYnNvbHV0ZSA9IHR5cGVvZiBhY3Rpb24gPT09IFwic3RyaW5nXCIgJiYgQUJTT0xVVEVfVVJMX1JFR0VYMi50ZXN0KGFjdGlvbik7XG4gICAgbGV0IHN1Ym1pdEhhbmRsZXIgPSAoZXZlbnQpID0+IHtcbiAgICAgIG9uU3VibWl0ICYmIG9uU3VibWl0KGV2ZW50KTtcbiAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKSByZXR1cm47XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgbGV0IHN1Ym1pdHRlciA9IGV2ZW50Lm5hdGl2ZUV2ZW50LnN1Ym1pdHRlcjtcbiAgICAgIGxldCBzdWJtaXRNZXRob2QgPSBzdWJtaXR0ZXI/LmdldEF0dHJpYnV0ZShcImZvcm1tZXRob2RcIikgfHwgbWV0aG9kO1xuICAgICAgc3VibWl0KHN1Ym1pdHRlciB8fCBldmVudC5jdXJyZW50VGFyZ2V0LCB7XG4gICAgICAgIGZldGNoZXJLZXksXG4gICAgICAgIG1ldGhvZDogc3VibWl0TWV0aG9kLFxuICAgICAgICBuYXZpZ2F0ZSxcbiAgICAgICAgcmVwbGFjZTogcmVwbGFjZTIsXG4gICAgICAgIHN0YXRlLFxuICAgICAgICByZWxhdGl2ZSxcbiAgICAgICAgcHJldmVudFNjcm9sbFJlc2V0LFxuICAgICAgICB2aWV3VHJhbnNpdGlvblxuICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0MTAuY3JlYXRlRWxlbWVudChcbiAgICAgIFwiZm9ybVwiLFxuICAgICAge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgbWV0aG9kOiBmb3JtTWV0aG9kLFxuICAgICAgICBhY3Rpb246IGZvcm1BY3Rpb24sXG4gICAgICAgIG9uU3VibWl0OiByZWxvYWREb2N1bWVudCA/IG9uU3VibWl0IDogc3VibWl0SGFuZGxlcixcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIFwiZGF0YS1kaXNjb3ZlclwiOiAhaXNBYnNvbHV0ZSAmJiBkaXNjb3ZlciA9PT0gXCJyZW5kZXJcIiA/IFwidHJ1ZVwiIDogdm9pZCAwXG4gICAgICB9XG4gICAgKTtcbiAgfVxuKTtcbkZvcm0uZGlzcGxheU5hbWUgPSBcIkZvcm1cIjtcbmZ1bmN0aW9uIFNjcm9sbFJlc3RvcmF0aW9uKHtcbiAgZ2V0S2V5LFxuICBzdG9yYWdlS2V5LFxuICAuLi5wcm9wc1xufSkge1xuICBsZXQgcmVtaXhDb250ZXh0ID0gUmVhY3QxMC51c2VDb250ZXh0KEZyYW1ld29ya0NvbnRleHQpO1xuICBsZXQgeyBiYXNlbmFtZSB9ID0gUmVhY3QxMC51c2VDb250ZXh0KE5hdmlnYXRpb25Db250ZXh0KTtcbiAgbGV0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcbiAgbGV0IG1hdGNoZXMgPSB1c2VNYXRjaGVzKCk7XG4gIHVzZVNjcm9sbFJlc3RvcmF0aW9uKHsgZ2V0S2V5LCBzdG9yYWdlS2V5IH0pO1xuICBsZXQgc3NyS2V5ID0gUmVhY3QxMC51c2VNZW1vKFxuICAgICgpID0+IHtcbiAgICAgIGlmICghcmVtaXhDb250ZXh0IHx8ICFnZXRLZXkpIHJldHVybiBudWxsO1xuICAgICAgbGV0IHVzZXJLZXkgPSBnZXRTY3JvbGxSZXN0b3JhdGlvbktleShcbiAgICAgICAgbG9jYXRpb24sXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGJhc2VuYW1lLFxuICAgICAgICBnZXRLZXlcbiAgICAgICk7XG4gICAgICByZXR1cm4gdXNlcktleSAhPT0gbG9jYXRpb24ua2V5ID8gdXNlcktleSA6IG51bGw7XG4gICAgfSxcbiAgICAvLyBOYWgsIHdlIG9ubHkgbmVlZCB0aGlzIHRoZSBmaXJzdCB0aW1lIGZvciB0aGUgU1NSIHJlbmRlclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICBbXVxuICApO1xuICBpZiAoIXJlbWl4Q29udGV4dCB8fCByZW1peENvbnRleHQuaXNTcGFNb2RlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgbGV0IHJlc3RvcmVTY3JvbGwgPSAoKHN0b3JhZ2VLZXkyLCByZXN0b3JlS2V5KSA9PiB7XG4gICAgaWYgKCF3aW5kb3cuaGlzdG9yeS5zdGF0ZSB8fCAhd2luZG93Lmhpc3Rvcnkuc3RhdGUua2V5KSB7XG4gICAgICBsZXQga2V5ID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzMikuc2xpY2UoMik7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoeyBrZXkgfSwgXCJcIik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBsZXQgcG9zaXRpb25zID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHN0b3JhZ2VLZXkyKSB8fCBcInt9XCIpO1xuICAgICAgbGV0IHN0b3JlZFkgPSBwb3NpdGlvbnNbcmVzdG9yZUtleSB8fCB3aW5kb3cuaGlzdG9yeS5zdGF0ZS5rZXldO1xuICAgICAgaWYgKHR5cGVvZiBzdG9yZWRZID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCBzdG9yZWRZKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHN0b3JhZ2VLZXkyKTtcbiAgICB9XG4gIH0pLnRvU3RyaW5nKCk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QxMC5jcmVhdGVFbGVtZW50KFxuICAgIFwic2NyaXB0XCIsXG4gICAge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmc6IHRydWUsXG4gICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDoge1xuICAgICAgICBfX2h0bWw6IGAoJHtyZXN0b3JlU2Nyb2xsfSkoJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICBzdG9yYWdlS2V5IHx8IFNDUk9MTF9SRVNUT1JBVElPTl9TVE9SQUdFX0tFWVxuICAgICAgICApfSwgJHtKU09OLnN0cmluZ2lmeShzc3JLZXkpfSlgXG4gICAgICB9XG4gICAgfVxuICApO1xufVxuU2Nyb2xsUmVzdG9yYXRpb24uZGlzcGxheU5hbWUgPSBcIlNjcm9sbFJlc3RvcmF0aW9uXCI7XG5mdW5jdGlvbiBnZXREYXRhUm91dGVyQ29uc29sZUVycm9yMihob29rTmFtZSkge1xuICByZXR1cm4gYCR7aG9va05hbWV9IG11c3QgYmUgdXNlZCB3aXRoaW4gYSBkYXRhIHJvdXRlci4gIFNlZSBodHRwczovL3JlYWN0cm91dGVyLmNvbS9lbi9tYWluL3JvdXRlcnMvcGlja2luZy1hLXJvdXRlci5gO1xufVxuZnVuY3Rpb24gdXNlRGF0YVJvdXRlckNvbnRleHQzKGhvb2tOYW1lKSB7XG4gIGxldCBjdHggPSBSZWFjdDEwLnVzZUNvbnRleHQoRGF0YVJvdXRlckNvbnRleHQpO1xuICBpbnZhcmlhbnQoY3R4LCBnZXREYXRhUm91dGVyQ29uc29sZUVycm9yMihob29rTmFtZSkpO1xuICByZXR1cm4gY3R4O1xufVxuZnVuY3Rpb24gdXNlRGF0YVJvdXRlclN0YXRlMihob29rTmFtZSkge1xuICBsZXQgc3RhdGUgPSBSZWFjdDEwLnVzZUNvbnRleHQoRGF0YVJvdXRlclN0YXRlQ29udGV4dCk7XG4gIGludmFyaWFudChzdGF0ZSwgZ2V0RGF0YVJvdXRlckNvbnNvbGVFcnJvcjIoaG9va05hbWUpKTtcbiAgcmV0dXJuIHN0YXRlO1xufVxuZnVuY3Rpb24gdXNlTGlua0NsaWNrSGFuZGxlcih0bywge1xuICB0YXJnZXQsXG4gIHJlcGxhY2U6IHJlcGxhY2VQcm9wLFxuICBzdGF0ZSxcbiAgcHJldmVudFNjcm9sbFJlc2V0LFxuICByZWxhdGl2ZSxcbiAgdmlld1RyYW5zaXRpb25cbn0gPSB7fSkge1xuICBsZXQgbmF2aWdhdGUgPSB1c2VOYXZpZ2F0ZSgpO1xuICBsZXQgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICBsZXQgcGF0aCA9IHVzZVJlc29sdmVkUGF0aCh0bywgeyByZWxhdGl2ZSB9KTtcbiAgcmV0dXJuIFJlYWN0MTAudXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoc2hvdWxkUHJvY2Vzc0xpbmtDbGljayhldmVudCwgdGFyZ2V0KSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBsZXQgcmVwbGFjZTIgPSByZXBsYWNlUHJvcCAhPT0gdm9pZCAwID8gcmVwbGFjZVByb3AgOiBjcmVhdGVQYXRoKGxvY2F0aW9uKSA9PT0gY3JlYXRlUGF0aChwYXRoKTtcbiAgICAgICAgbmF2aWdhdGUodG8sIHtcbiAgICAgICAgICByZXBsYWNlOiByZXBsYWNlMixcbiAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgICAgICAgcmVsYXRpdmUsXG4gICAgICAgICAgdmlld1RyYW5zaXRpb25cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBsb2NhdGlvbixcbiAgICAgIG5hdmlnYXRlLFxuICAgICAgcGF0aCxcbiAgICAgIHJlcGxhY2VQcm9wLFxuICAgICAgc3RhdGUsXG4gICAgICB0YXJnZXQsXG4gICAgICB0byxcbiAgICAgIHByZXZlbnRTY3JvbGxSZXNldCxcbiAgICAgIHJlbGF0aXZlLFxuICAgICAgdmlld1RyYW5zaXRpb25cbiAgICBdXG4gICk7XG59XG5mdW5jdGlvbiB1c2VTZWFyY2hQYXJhbXMoZGVmYXVsdEluaXQpIHtcbiAgd2FybmluZyhcbiAgICB0eXBlb2YgVVJMU2VhcmNoUGFyYW1zICE9PSBcInVuZGVmaW5lZFwiLFxuICAgIGBZb3UgY2Fubm90IHVzZSB0aGUgXFxgdXNlU2VhcmNoUGFyYW1zXFxgIGhvb2sgaW4gYSBicm93c2VyIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgVVJMU2VhcmNoUGFyYW1zIEFQSS4gSWYgeW91IG5lZWQgdG8gc3VwcG9ydCBJbnRlcm5ldCBFeHBsb3JlciAxMSwgd2UgcmVjb21tZW5kIHlvdSBsb2FkIGEgcG9seWZpbGwgc3VjaCBhcyBodHRwczovL2dpdGh1Yi5jb20vdW5nYXAvdXJsLXNlYXJjaC1wYXJhbXMuYFxuICApO1xuICBsZXQgZGVmYXVsdFNlYXJjaFBhcmFtc1JlZiA9IFJlYWN0MTAudXNlUmVmKGNyZWF0ZVNlYXJjaFBhcmFtcyhkZWZhdWx0SW5pdCkpO1xuICBsZXQgaGFzU2V0U2VhcmNoUGFyYW1zUmVmID0gUmVhY3QxMC51c2VSZWYoZmFsc2UpO1xuICBsZXQgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICBsZXQgc2VhcmNoUGFyYW1zID0gUmVhY3QxMC51c2VNZW1vKFxuICAgICgpID0+IChcbiAgICAgIC8vIE9ubHkgbWVyZ2UgaW4gdGhlIGRlZmF1bHRzIGlmIHdlIGhhdmVuJ3QgeWV0IGNhbGxlZCBzZXRTZWFyY2hQYXJhbXMuXG4gICAgICAvLyBPbmNlIHdlIGNhbGwgdGhhdCB3ZSB3YW50IHRob3NlIHRvIHRha2UgcHJlY2VkZW5jZSwgb3RoZXJ3aXNlIHlvdSBjYW4ndFxuICAgICAgLy8gcmVtb3ZlIGEgcGFyYW0gd2l0aCBzZXRTZWFyY2hQYXJhbXMoe30pIGlmIGl0IGhhcyBhbiBpbml0aWFsIHZhbHVlXG4gICAgICBnZXRTZWFyY2hQYXJhbXNGb3JMb2NhdGlvbihcbiAgICAgICAgbG9jYXRpb24uc2VhcmNoLFxuICAgICAgICBoYXNTZXRTZWFyY2hQYXJhbXNSZWYuY3VycmVudCA/IG51bGwgOiBkZWZhdWx0U2VhcmNoUGFyYW1zUmVmLmN1cnJlbnRcbiAgICAgIClcbiAgICApLFxuICAgIFtsb2NhdGlvbi5zZWFyY2hdXG4gICk7XG4gIGxldCBuYXZpZ2F0ZSA9IHVzZU5hdmlnYXRlKCk7XG4gIGxldCBzZXRTZWFyY2hQYXJhbXMgPSBSZWFjdDEwLnVzZUNhbGxiYWNrKFxuICAgIChuZXh0SW5pdCwgbmF2aWdhdGVPcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBuZXdTZWFyY2hQYXJhbXMgPSBjcmVhdGVTZWFyY2hQYXJhbXMoXG4gICAgICAgIHR5cGVvZiBuZXh0SW5pdCA9PT0gXCJmdW5jdGlvblwiID8gbmV4dEluaXQoc2VhcmNoUGFyYW1zKSA6IG5leHRJbml0XG4gICAgICApO1xuICAgICAgaGFzU2V0U2VhcmNoUGFyYW1zUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgbmF2aWdhdGUoXCI/XCIgKyBuZXdTZWFyY2hQYXJhbXMsIG5hdmlnYXRlT3B0aW9ucyk7XG4gICAgfSxcbiAgICBbbmF2aWdhdGUsIHNlYXJjaFBhcmFtc11cbiAgKTtcbiAgcmV0dXJuIFtzZWFyY2hQYXJhbXMsIHNldFNlYXJjaFBhcmFtc107XG59XG52YXIgZmV0Y2hlcklkID0gMDtcbnZhciBnZXRVbmlxdWVGZXRjaGVySWQgPSAoKSA9PiBgX18ke1N0cmluZygrK2ZldGNoZXJJZCl9X19gO1xuZnVuY3Rpb24gdXNlU3VibWl0KCkge1xuICBsZXQgeyByb3V0ZXIgfSA9IHVzZURhdGFSb3V0ZXJDb250ZXh0MyhcInVzZVN1Ym1pdFwiIC8qIFVzZVN1Ym1pdCAqLyk7XG4gIGxldCB7IGJhc2VuYW1lIH0gPSBSZWFjdDEwLnVzZUNvbnRleHQoTmF2aWdhdGlvbkNvbnRleHQpO1xuICBsZXQgY3VycmVudFJvdXRlSWQgPSB1c2VSb3V0ZUlkKCk7XG4gIHJldHVybiBSZWFjdDEwLnVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh0YXJnZXQsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICAgICAgbGV0IHsgYWN0aW9uLCBtZXRob2QsIGVuY1R5cGUsIGZvcm1EYXRhLCBib2R5IH0gPSBnZXRGb3JtU3VibWlzc2lvbkluZm8oXG4gICAgICAgIHRhcmdldCxcbiAgICAgICAgYmFzZW5hbWVcbiAgICAgICk7XG4gICAgICBpZiAob3B0aW9ucy5uYXZpZ2F0ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgbGV0IGtleSA9IG9wdGlvbnMuZmV0Y2hlcktleSB8fCBnZXRVbmlxdWVGZXRjaGVySWQoKTtcbiAgICAgICAgYXdhaXQgcm91dGVyLmZldGNoKGtleSwgY3VycmVudFJvdXRlSWQsIG9wdGlvbnMuYWN0aW9uIHx8IGFjdGlvbiwge1xuICAgICAgICAgIHByZXZlbnRTY3JvbGxSZXNldDogb3B0aW9ucy5wcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgICAgICAgZm9ybURhdGEsXG4gICAgICAgICAgYm9keSxcbiAgICAgICAgICBmb3JtTWV0aG9kOiBvcHRpb25zLm1ldGhvZCB8fCBtZXRob2QsXG4gICAgICAgICAgZm9ybUVuY1R5cGU6IG9wdGlvbnMuZW5jVHlwZSB8fCBlbmNUeXBlLFxuICAgICAgICAgIGZsdXNoU3luYzogb3B0aW9ucy5mbHVzaFN5bmNcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCByb3V0ZXIubmF2aWdhdGUob3B0aW9ucy5hY3Rpb24gfHwgYWN0aW9uLCB7XG4gICAgICAgICAgcHJldmVudFNjcm9sbFJlc2V0OiBvcHRpb25zLnByZXZlbnRTY3JvbGxSZXNldCxcbiAgICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgICBib2R5LFxuICAgICAgICAgIGZvcm1NZXRob2Q6IG9wdGlvbnMubWV0aG9kIHx8IG1ldGhvZCxcbiAgICAgICAgICBmb3JtRW5jVHlwZTogb3B0aW9ucy5lbmNUeXBlIHx8IGVuY1R5cGUsXG4gICAgICAgICAgcmVwbGFjZTogb3B0aW9ucy5yZXBsYWNlLFxuICAgICAgICAgIHN0YXRlOiBvcHRpb25zLnN0YXRlLFxuICAgICAgICAgIGZyb21Sb3V0ZUlkOiBjdXJyZW50Um91dGVJZCxcbiAgICAgICAgICBmbHVzaFN5bmM6IG9wdGlvbnMuZmx1c2hTeW5jLFxuICAgICAgICAgIHZpZXdUcmFuc2l0aW9uOiBvcHRpb25zLnZpZXdUcmFuc2l0aW9uXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3JvdXRlciwgYmFzZW5hbWUsIGN1cnJlbnRSb3V0ZUlkXVxuICApO1xufVxuZnVuY3Rpb24gdXNlRm9ybUFjdGlvbihhY3Rpb24sIHsgcmVsYXRpdmUgfSA9IHt9KSB7XG4gIGxldCB7IGJhc2VuYW1lIH0gPSBSZWFjdDEwLnVzZUNvbnRleHQoTmF2aWdhdGlvbkNvbnRleHQpO1xuICBsZXQgcm91dGVDb250ZXh0ID0gUmVhY3QxMC51c2VDb250ZXh0KFJvdXRlQ29udGV4dCk7XG4gIGludmFyaWFudChyb3V0ZUNvbnRleHQsIFwidXNlRm9ybUFjdGlvbiBtdXN0IGJlIHVzZWQgaW5zaWRlIGEgUm91dGVDb250ZXh0XCIpO1xuICBsZXQgW21hdGNoXSA9IHJvdXRlQ29udGV4dC5tYXRjaGVzLnNsaWNlKC0xKTtcbiAgbGV0IHBhdGggPSB7IC4uLnVzZVJlc29sdmVkUGF0aChhY3Rpb24gPyBhY3Rpb24gOiBcIi5cIiwgeyByZWxhdGl2ZSB9KSB9O1xuICBsZXQgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICBpZiAoYWN0aW9uID09IG51bGwpIHtcbiAgICBwYXRoLnNlYXJjaCA9IGxvY2F0aW9uLnNlYXJjaDtcbiAgICBsZXQgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXRoLnNlYXJjaCk7XG4gICAgbGV0IGluZGV4VmFsdWVzID0gcGFyYW1zLmdldEFsbChcImluZGV4XCIpO1xuICAgIGxldCBoYXNOYWtlZEluZGV4UGFyYW0gPSBpbmRleFZhbHVlcy5zb21lKCh2KSA9PiB2ID09PSBcIlwiKTtcbiAgICBpZiAoaGFzTmFrZWRJbmRleFBhcmFtKSB7XG4gICAgICBwYXJhbXMuZGVsZXRlKFwiaW5kZXhcIik7XG4gICAgICBpbmRleFZhbHVlcy5maWx0ZXIoKHYpID0+IHYpLmZvckVhY2goKHYpID0+IHBhcmFtcy5hcHBlbmQoXCJpbmRleFwiLCB2KSk7XG4gICAgICBsZXQgcXMgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgICAgIHBhdGguc2VhcmNoID0gcXMgPyBgPyR7cXN9YCA6IFwiXCI7XG4gICAgfVxuICB9XG4gIGlmICgoIWFjdGlvbiB8fCBhY3Rpb24gPT09IFwiLlwiKSAmJiBtYXRjaC5yb3V0ZS5pbmRleCkge1xuICAgIHBhdGguc2VhcmNoID0gcGF0aC5zZWFyY2ggPyBwYXRoLnNlYXJjaC5yZXBsYWNlKC9eXFw/LywgXCI/aW5kZXgmXCIpIDogXCI/aW5kZXhcIjtcbiAgfVxuICBpZiAoYmFzZW5hbWUgIT09IFwiL1wiKSB7XG4gICAgcGF0aC5wYXRobmFtZSA9IHBhdGgucGF0aG5hbWUgPT09IFwiL1wiID8gYmFzZW5hbWUgOiBqb2luUGF0aHMoW2Jhc2VuYW1lLCBwYXRoLnBhdGhuYW1lXSk7XG4gIH1cbiAgcmV0dXJuIGNyZWF0ZVBhdGgocGF0aCk7XG59XG5mdW5jdGlvbiB1c2VGZXRjaGVyKHtcbiAga2V5XG59ID0ge30pIHtcbiAgbGV0IHsgcm91dGVyIH0gPSB1c2VEYXRhUm91dGVyQ29udGV4dDMoXCJ1c2VGZXRjaGVyXCIgLyogVXNlRmV0Y2hlciAqLyk7XG4gIGxldCBzdGF0ZSA9IHVzZURhdGFSb3V0ZXJTdGF0ZTIoXCJ1c2VGZXRjaGVyXCIgLyogVXNlRmV0Y2hlciAqLyk7XG4gIGxldCBmZXRjaGVyRGF0YSA9IFJlYWN0MTAudXNlQ29udGV4dChGZXRjaGVyc0NvbnRleHQpO1xuICBsZXQgcm91dGUgPSBSZWFjdDEwLnVzZUNvbnRleHQoUm91dGVDb250ZXh0KTtcbiAgbGV0IHJvdXRlSWQgPSByb3V0ZS5tYXRjaGVzW3JvdXRlLm1hdGNoZXMubGVuZ3RoIC0gMV0/LnJvdXRlLmlkO1xuICBpbnZhcmlhbnQoZmV0Y2hlckRhdGEsIGB1c2VGZXRjaGVyIG11c3QgYmUgdXNlZCBpbnNpZGUgYSBGZXRjaGVyc0NvbnRleHRgKTtcbiAgaW52YXJpYW50KHJvdXRlLCBgdXNlRmV0Y2hlciBtdXN0IGJlIHVzZWQgaW5zaWRlIGEgUm91dGVDb250ZXh0YCk7XG4gIGludmFyaWFudChcbiAgICByb3V0ZUlkICE9IG51bGwsXG4gICAgYHVzZUZldGNoZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiByb3V0ZXMgdGhhdCBjb250YWluIGEgdW5pcXVlIFwiaWRcImBcbiAgKTtcbiAgbGV0IGRlZmF1bHRLZXkgPSBSZWFjdDEwLnVzZUlkKCk7XG4gIGxldCBbZmV0Y2hlcktleSwgc2V0RmV0Y2hlcktleV0gPSBSZWFjdDEwLnVzZVN0YXRlKGtleSB8fCBkZWZhdWx0S2V5KTtcbiAgaWYgKGtleSAmJiBrZXkgIT09IGZldGNoZXJLZXkpIHtcbiAgICBzZXRGZXRjaGVyS2V5KGtleSk7XG4gIH1cbiAgUmVhY3QxMC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJvdXRlci5nZXRGZXRjaGVyKGZldGNoZXJLZXkpO1xuICAgIHJldHVybiAoKSA9PiByb3V0ZXIuZGVsZXRlRmV0Y2hlcihmZXRjaGVyS2V5KTtcbiAgfSwgW3JvdXRlciwgZmV0Y2hlcktleV0pO1xuICBsZXQgbG9hZCA9IFJlYWN0MTAudXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGhyZWYsIG9wdHMpID0+IHtcbiAgICAgIGludmFyaWFudChyb3V0ZUlkLCBcIk5vIHJvdXRlSWQgYXZhaWxhYmxlIGZvciBmZXRjaGVyLmxvYWQoKVwiKTtcbiAgICAgIGF3YWl0IHJvdXRlci5mZXRjaChmZXRjaGVyS2V5LCByb3V0ZUlkLCBocmVmLCBvcHRzKTtcbiAgICB9LFxuICAgIFtmZXRjaGVyS2V5LCByb3V0ZUlkLCByb3V0ZXJdXG4gICk7XG4gIGxldCBzdWJtaXRJbXBsID0gdXNlU3VibWl0KCk7XG4gIGxldCBzdWJtaXQgPSBSZWFjdDEwLnVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh0YXJnZXQsIG9wdHMpID0+IHtcbiAgICAgIGF3YWl0IHN1Ym1pdEltcGwodGFyZ2V0LCB7XG4gICAgICAgIC4uLm9wdHMsXG4gICAgICAgIG5hdmlnYXRlOiBmYWxzZSxcbiAgICAgICAgZmV0Y2hlcktleVxuICAgICAgfSk7XG4gICAgfSxcbiAgICBbZmV0Y2hlcktleSwgc3VibWl0SW1wbF1cbiAgKTtcbiAgbGV0IEZldGNoZXJGb3JtID0gUmVhY3QxMC51c2VNZW1vKCgpID0+IHtcbiAgICBsZXQgRmV0Y2hlckZvcm0yID0gUmVhY3QxMC5mb3J3YXJkUmVmKFxuICAgICAgKHByb3BzLCByZWYpID0+IHtcbiAgICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDEwLmNyZWF0ZUVsZW1lbnQoRm9ybSwgeyAuLi5wcm9wcywgbmF2aWdhdGU6IGZhbHNlLCBmZXRjaGVyS2V5LCByZWYgfSk7XG4gICAgICB9XG4gICAgKTtcbiAgICBGZXRjaGVyRm9ybTIuZGlzcGxheU5hbWUgPSBcImZldGNoZXIuRm9ybVwiO1xuICAgIHJldHVybiBGZXRjaGVyRm9ybTI7XG4gIH0sIFtmZXRjaGVyS2V5XSk7XG4gIGxldCBmZXRjaGVyID0gc3RhdGUuZmV0Y2hlcnMuZ2V0KGZldGNoZXJLZXkpIHx8IElETEVfRkVUQ0hFUjtcbiAgbGV0IGRhdGEyID0gZmV0Y2hlckRhdGEuZ2V0KGZldGNoZXJLZXkpO1xuICBsZXQgZmV0Y2hlcldpdGhDb21wb25lbnRzID0gUmVhY3QxMC51c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBGb3JtOiBGZXRjaGVyRm9ybSxcbiAgICAgIHN1Ym1pdCxcbiAgICAgIGxvYWQsXG4gICAgICAuLi5mZXRjaGVyLFxuICAgICAgZGF0YTogZGF0YTJcbiAgICB9KSxcbiAgICBbRmV0Y2hlckZvcm0sIHN1Ym1pdCwgbG9hZCwgZmV0Y2hlciwgZGF0YTJdXG4gICk7XG4gIHJldHVybiBmZXRjaGVyV2l0aENvbXBvbmVudHM7XG59XG5mdW5jdGlvbiB1c2VGZXRjaGVycygpIHtcbiAgbGV0IHN0YXRlID0gdXNlRGF0YVJvdXRlclN0YXRlMihcInVzZUZldGNoZXJzXCIgLyogVXNlRmV0Y2hlcnMgKi8pO1xuICByZXR1cm4gQXJyYXkuZnJvbShzdGF0ZS5mZXRjaGVycy5lbnRyaWVzKCkpLm1hcCgoW2tleSwgZmV0Y2hlcl0pID0+ICh7XG4gICAgLi4uZmV0Y2hlcixcbiAgICBrZXlcbiAgfSkpO1xufVxudmFyIFNDUk9MTF9SRVNUT1JBVElPTl9TVE9SQUdFX0tFWSA9IFwicmVhY3Qtcm91dGVyLXNjcm9sbC1wb3NpdGlvbnNcIjtcbnZhciBzYXZlZFNjcm9sbFBvc2l0aW9ucyA9IHt9O1xuZnVuY3Rpb24gZ2V0U2Nyb2xsUmVzdG9yYXRpb25LZXkobG9jYXRpb24sIG1hdGNoZXMsIGJhc2VuYW1lLCBnZXRLZXkpIHtcbiAgbGV0IGtleSA9IG51bGw7XG4gIGlmIChnZXRLZXkpIHtcbiAgICBpZiAoYmFzZW5hbWUgIT09IFwiL1wiKSB7XG4gICAgICBrZXkgPSBnZXRLZXkoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5sb2NhdGlvbixcbiAgICAgICAgICBwYXRobmFtZTogc3RyaXBCYXNlbmFtZShsb2NhdGlvbi5wYXRobmFtZSwgYmFzZW5hbWUpIHx8IGxvY2F0aW9uLnBhdGhuYW1lXG4gICAgICAgIH0sXG4gICAgICAgIG1hdGNoZXNcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGtleSA9IGdldEtleShsb2NhdGlvbiwgbWF0Y2hlcyk7XG4gICAgfVxuICB9XG4gIGlmIChrZXkgPT0gbnVsbCkge1xuICAgIGtleSA9IGxvY2F0aW9uLmtleTtcbiAgfVxuICByZXR1cm4ga2V5O1xufVxuZnVuY3Rpb24gdXNlU2Nyb2xsUmVzdG9yYXRpb24oe1xuICBnZXRLZXksXG4gIHN0b3JhZ2VLZXlcbn0gPSB7fSkge1xuICBsZXQgeyByb3V0ZXIgfSA9IHVzZURhdGFSb3V0ZXJDb250ZXh0MyhcInVzZVNjcm9sbFJlc3RvcmF0aW9uXCIgLyogVXNlU2Nyb2xsUmVzdG9yYXRpb24gKi8pO1xuICBsZXQgeyByZXN0b3JlU2Nyb2xsUG9zaXRpb24sIHByZXZlbnRTY3JvbGxSZXNldCB9ID0gdXNlRGF0YVJvdXRlclN0YXRlMihcbiAgICBcInVzZVNjcm9sbFJlc3RvcmF0aW9uXCIgLyogVXNlU2Nyb2xsUmVzdG9yYXRpb24gKi9cbiAgKTtcbiAgbGV0IHsgYmFzZW5hbWUgfSA9IFJlYWN0MTAudXNlQ29udGV4dChOYXZpZ2F0aW9uQ29udGV4dCk7XG4gIGxldCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG4gIGxldCBtYXRjaGVzID0gdXNlTWF0Y2hlcygpO1xuICBsZXQgbmF2aWdhdGlvbiA9IHVzZU5hdmlnYXRpb24oKTtcbiAgUmVhY3QxMC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHdpbmRvdy5oaXN0b3J5LnNjcm9sbFJlc3RvcmF0aW9uID0gXCJtYW51YWxcIjtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93Lmhpc3Rvcnkuc2Nyb2xsUmVzdG9yYXRpb24gPSBcImF1dG9cIjtcbiAgICB9O1xuICB9LCBbXSk7XG4gIHVzZVBhZ2VIaWRlKFxuICAgIFJlYWN0MTAudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKG5hdmlnYXRpb24uc3RhdGUgPT09IFwiaWRsZVwiKSB7XG4gICAgICAgIGxldCBrZXkgPSBnZXRTY3JvbGxSZXN0b3JhdGlvbktleShsb2NhdGlvbiwgbWF0Y2hlcywgYmFzZW5hbWUsIGdldEtleSk7XG4gICAgICAgIHNhdmVkU2Nyb2xsUG9zaXRpb25zW2tleV0gPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXG4gICAgICAgICAgc3RvcmFnZUtleSB8fCBTQ1JPTExfUkVTVE9SQVRJT05fU1RPUkFHRV9LRVksXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc2F2ZWRTY3JvbGxQb3NpdGlvbnMpXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIGBGYWlsZWQgdG8gc2F2ZSBzY3JvbGwgcG9zaXRpb25zIGluIHNlc3Npb25TdG9yYWdlLCA8U2Nyb2xsUmVzdG9yYXRpb24gLz4gd2lsbCBub3Qgd29yayBwcm9wZXJseSAoJHtlcnJvcn0pLmBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHdpbmRvdy5oaXN0b3J5LnNjcm9sbFJlc3RvcmF0aW9uID0gXCJhdXRvXCI7XG4gICAgfSwgW25hdmlnYXRpb24uc3RhdGUsIGdldEtleSwgYmFzZW5hbWUsIGxvY2F0aW9uLCBtYXRjaGVzLCBzdG9yYWdlS2V5XSlcbiAgKTtcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIFJlYWN0MTAudXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCBzZXNzaW9uUG9zaXRpb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcbiAgICAgICAgICBzdG9yYWdlS2V5IHx8IFNDUk9MTF9SRVNUT1JBVElPTl9TVE9SQUdFX0tFWVxuICAgICAgICApO1xuICAgICAgICBpZiAoc2Vzc2lvblBvc2l0aW9ucykge1xuICAgICAgICAgIHNhdmVkU2Nyb2xsUG9zaXRpb25zID0gSlNPTi5wYXJzZShzZXNzaW9uUG9zaXRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgfVxuICAgIH0sIFtzdG9yYWdlS2V5XSk7XG4gICAgUmVhY3QxMC51c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgbGV0IGRpc2FibGVTY3JvbGxSZXN0b3JhdGlvbiA9IHJvdXRlcj8uZW5hYmxlU2Nyb2xsUmVzdG9yYXRpb24oXG4gICAgICAgIHNhdmVkU2Nyb2xsUG9zaXRpb25zLFxuICAgICAgICAoKSA9PiB3aW5kb3cuc2Nyb2xsWSxcbiAgICAgICAgZ2V0S2V5ID8gKGxvY2F0aW9uMiwgbWF0Y2hlczIpID0+IGdldFNjcm9sbFJlc3RvcmF0aW9uS2V5KGxvY2F0aW9uMiwgbWF0Y2hlczIsIGJhc2VuYW1lLCBnZXRLZXkpIDogdm9pZCAwXG4gICAgICApO1xuICAgICAgcmV0dXJuICgpID0+IGRpc2FibGVTY3JvbGxSZXN0b3JhdGlvbiAmJiBkaXNhYmxlU2Nyb2xsUmVzdG9yYXRpb24oKTtcbiAgICB9LCBbcm91dGVyLCBiYXNlbmFtZSwgZ2V0S2V5XSk7XG4gICAgUmVhY3QxMC51c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHJlc3RvcmVTY3JvbGxQb3NpdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiByZXN0b3JlU2Nyb2xsUG9zaXRpb24gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIHJlc3RvcmVTY3JvbGxQb3NpdGlvbik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChsb2NhdGlvbi5oYXNoKSB7XG4gICAgICAgIGxldCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgIGRlY29kZVVSSUNvbXBvbmVudChsb2NhdGlvbi5oYXNoLnNsaWNlKDEpKVxuICAgICAgICApO1xuICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICBlbC5zY3JvbGxJbnRvVmlldygpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHByZXZlbnRTY3JvbGxSZXNldCA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgfSwgW2xvY2F0aW9uLCByZXN0b3JlU2Nyb2xsUG9zaXRpb24sIHByZXZlbnRTY3JvbGxSZXNldF0pO1xuICB9XG59XG5mdW5jdGlvbiB1c2VCZWZvcmVVbmxvYWQoY2FsbGJhY2ssIG9wdGlvbnMpIHtcbiAgbGV0IHsgY2FwdHVyZSB9ID0gb3B0aW9ucyB8fCB7fTtcbiAgUmVhY3QxMC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBvcHRzID0gY2FwdHVyZSAhPSBudWxsID8geyBjYXB0dXJlIH0gOiB2b2lkIDA7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJiZWZvcmV1bmxvYWRcIiwgY2FsbGJhY2ssIG9wdHMpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImJlZm9yZXVubG9hZFwiLCBjYWxsYmFjaywgb3B0cyk7XG4gICAgfTtcbiAgfSwgW2NhbGxiYWNrLCBjYXB0dXJlXSk7XG59XG5mdW5jdGlvbiB1c2VQYWdlSGlkZShjYWxsYmFjaywgb3B0aW9ucykge1xuICBsZXQgeyBjYXB0dXJlIH0gPSBvcHRpb25zIHx8IHt9O1xuICBSZWFjdDEwLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IG9wdHMgPSBjYXB0dXJlICE9IG51bGwgPyB7IGNhcHR1cmUgfSA6IHZvaWQgMDtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInBhZ2VoaWRlXCIsIGNhbGxiYWNrLCBvcHRzKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwYWdlaGlkZVwiLCBjYWxsYmFjaywgb3B0cyk7XG4gICAgfTtcbiAgfSwgW2NhbGxiYWNrLCBjYXB0dXJlXSk7XG59XG5mdW5jdGlvbiB1c2VQcm9tcHQoe1xuICB3aGVuLFxuICBtZXNzYWdlXG59KSB7XG4gIGxldCBibG9ja2VyID0gdXNlQmxvY2tlcih3aGVuKTtcbiAgUmVhY3QxMC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChibG9ja2VyLnN0YXRlID09PSBcImJsb2NrZWRcIikge1xuICAgICAgbGV0IHByb2NlZWQgPSB3aW5kb3cuY29uZmlybShtZXNzYWdlKTtcbiAgICAgIGlmIChwcm9jZWVkKSB7XG4gICAgICAgIHNldFRpbWVvdXQoYmxvY2tlci5wcm9jZWVkLCAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJsb2NrZXIucmVzZXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtibG9ja2VyLCBtZXNzYWdlXSk7XG4gIFJlYWN0MTAudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYmxvY2tlci5zdGF0ZSA9PT0gXCJibG9ja2VkXCIgJiYgIXdoZW4pIHtcbiAgICAgIGJsb2NrZXIucmVzZXQoKTtcbiAgICB9XG4gIH0sIFtibG9ja2VyLCB3aGVuXSk7XG59XG5mdW5jdGlvbiB1c2VWaWV3VHJhbnNpdGlvblN0YXRlKHRvLCBvcHRzID0ge30pIHtcbiAgbGV0IHZ0Q29udGV4dCA9IFJlYWN0MTAudXNlQ29udGV4dChWaWV3VHJhbnNpdGlvbkNvbnRleHQpO1xuICBpbnZhcmlhbnQoXG4gICAgdnRDb250ZXh0ICE9IG51bGwsXG4gICAgXCJgdXNlVmlld1RyYW5zaXRpb25TdGF0ZWAgbXVzdCBiZSB1c2VkIHdpdGhpbiBgcmVhY3Qtcm91dGVyLWRvbWAncyBgUm91dGVyUHJvdmlkZXJgLiAgRGlkIHlvdSBhY2NpZGVudGFsbHkgaW1wb3J0IGBSb3V0ZXJQcm92aWRlcmAgZnJvbSBgcmVhY3Qtcm91dGVyYD9cIlxuICApO1xuICBsZXQgeyBiYXNlbmFtZSB9ID0gdXNlRGF0YVJvdXRlckNvbnRleHQzKFxuICAgIFwidXNlVmlld1RyYW5zaXRpb25TdGF0ZVwiIC8qIHVzZVZpZXdUcmFuc2l0aW9uU3RhdGUgKi9cbiAgKTtcbiAgbGV0IHBhdGggPSB1c2VSZXNvbHZlZFBhdGgodG8sIHsgcmVsYXRpdmU6IG9wdHMucmVsYXRpdmUgfSk7XG4gIGlmICghdnRDb250ZXh0LmlzVHJhbnNpdGlvbmluZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBsZXQgY3VycmVudFBhdGggPSBzdHJpcEJhc2VuYW1lKHZ0Q29udGV4dC5jdXJyZW50TG9jYXRpb24ucGF0aG5hbWUsIGJhc2VuYW1lKSB8fCB2dENvbnRleHQuY3VycmVudExvY2F0aW9uLnBhdGhuYW1lO1xuICBsZXQgbmV4dFBhdGggPSBzdHJpcEJhc2VuYW1lKHZ0Q29udGV4dC5uZXh0TG9jYXRpb24ucGF0aG5hbWUsIGJhc2VuYW1lKSB8fCB2dENvbnRleHQubmV4dExvY2F0aW9uLnBhdGhuYW1lO1xuICByZXR1cm4gbWF0Y2hQYXRoKHBhdGgucGF0aG5hbWUsIG5leHRQYXRoKSAhPSBudWxsIHx8IG1hdGNoUGF0aChwYXRoLnBhdGhuYW1lLCBjdXJyZW50UGF0aCkgIT0gbnVsbDtcbn1cblxuLy8gbGliL2RvbS9zZXJ2ZXIudHN4XG5pbXBvcnQgKiBhcyBSZWFjdDExIGZyb20gXCJyZWFjdFwiO1xuZnVuY3Rpb24gU3RhdGljUm91dGVyKHtcbiAgYmFzZW5hbWUsXG4gIGNoaWxkcmVuLFxuICBsb2NhdGlvbjogbG9jYXRpb25Qcm9wID0gXCIvXCJcbn0pIHtcbiAgaWYgKHR5cGVvZiBsb2NhdGlvblByb3AgPT09IFwic3RyaW5nXCIpIHtcbiAgICBsb2NhdGlvblByb3AgPSBwYXJzZVBhdGgobG9jYXRpb25Qcm9wKTtcbiAgfVxuICBsZXQgYWN0aW9uID0gXCJQT1BcIiAvKiBQb3AgKi87XG4gIGxldCBsb2NhdGlvbiA9IHtcbiAgICBwYXRobmFtZTogbG9jYXRpb25Qcm9wLnBhdGhuYW1lIHx8IFwiL1wiLFxuICAgIHNlYXJjaDogbG9jYXRpb25Qcm9wLnNlYXJjaCB8fCBcIlwiLFxuICAgIGhhc2g6IGxvY2F0aW9uUHJvcC5oYXNoIHx8IFwiXCIsXG4gICAgc3RhdGU6IGxvY2F0aW9uUHJvcC5zdGF0ZSAhPSBudWxsID8gbG9jYXRpb25Qcm9wLnN0YXRlIDogbnVsbCxcbiAgICBrZXk6IGxvY2F0aW9uUHJvcC5rZXkgfHwgXCJkZWZhdWx0XCJcbiAgfTtcbiAgbGV0IHN0YXRpY05hdmlnYXRvciA9IGdldFN0YXRlbGVzc05hdmlnYXRvcigpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0MTEuY3JlYXRlRWxlbWVudChcbiAgICBSb3V0ZXIsXG4gICAge1xuICAgICAgYmFzZW5hbWUsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgbmF2aWdhdGlvblR5cGU6IGFjdGlvbixcbiAgICAgIG5hdmlnYXRvcjogc3RhdGljTmF2aWdhdG9yLFxuICAgICAgc3RhdGljOiB0cnVlXG4gICAgfVxuICApO1xufVxuZnVuY3Rpb24gU3RhdGljUm91dGVyUHJvdmlkZXIoe1xuICBjb250ZXh0LFxuICByb3V0ZXIsXG4gIGh5ZHJhdGUgPSB0cnVlLFxuICBub25jZVxufSkge1xuICBpbnZhcmlhbnQoXG4gICAgcm91dGVyICYmIGNvbnRleHQsXG4gICAgXCJZb3UgbXVzdCBwcm92aWRlIGByb3V0ZXJgIGFuZCBgY29udGV4dGAgdG8gPFN0YXRpY1JvdXRlclByb3ZpZGVyPlwiXG4gICk7XG4gIGxldCBkYXRhUm91dGVyQ29udGV4dCA9IHtcbiAgICByb3V0ZXIsXG4gICAgbmF2aWdhdG9yOiBnZXRTdGF0ZWxlc3NOYXZpZ2F0b3IoKSxcbiAgICBzdGF0aWM6IHRydWUsXG4gICAgc3RhdGljQ29udGV4dDogY29udGV4dCxcbiAgICBiYXNlbmFtZTogY29udGV4dC5iYXNlbmFtZSB8fCBcIi9cIlxuICB9O1xuICBsZXQgZmV0Y2hlcnNDb250ZXh0ID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgbGV0IGh5ZHJhdGVTY3JpcHQgPSBcIlwiO1xuICBpZiAoaHlkcmF0ZSAhPT0gZmFsc2UpIHtcbiAgICBsZXQgZGF0YTIgPSB7XG4gICAgICBsb2FkZXJEYXRhOiBjb250ZXh0LmxvYWRlckRhdGEsXG4gICAgICBhY3Rpb25EYXRhOiBjb250ZXh0LmFjdGlvbkRhdGEsXG4gICAgICBlcnJvcnM6IHNlcmlhbGl6ZUVycm9ycyhjb250ZXh0LmVycm9ycylcbiAgICB9O1xuICAgIGxldCBqc29uID0gaHRtbEVzY2FwZShKU09OLnN0cmluZ2lmeShKU09OLnN0cmluZ2lmeShkYXRhMikpKTtcbiAgICBoeWRyYXRlU2NyaXB0ID0gYHdpbmRvdy5fX3N0YXRpY1JvdXRlckh5ZHJhdGlvbkRhdGEgPSBKU09OLnBhcnNlKCR7anNvbn0pO2A7XG4gIH1cbiAgbGV0IHsgc3RhdGUgfSA9IGRhdGFSb3V0ZXJDb250ZXh0LnJvdXRlcjtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDExLmNyZWF0ZUVsZW1lbnQoUmVhY3QxMS5GcmFnbWVudCwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0MTEuY3JlYXRlRWxlbWVudChEYXRhUm91dGVyQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogZGF0YVJvdXRlckNvbnRleHQgfSwgLyogQF9fUFVSRV9fICovIFJlYWN0MTEuY3JlYXRlRWxlbWVudChEYXRhUm91dGVyU3RhdGVDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBzdGF0ZSB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QxMS5jcmVhdGVFbGVtZW50KEZldGNoZXJzQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogZmV0Y2hlcnNDb250ZXh0IH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDExLmNyZWF0ZUVsZW1lbnQoVmlld1RyYW5zaXRpb25Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IGlzVHJhbnNpdGlvbmluZzogZmFsc2UgfSB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QxMS5jcmVhdGVFbGVtZW50KFxuICAgIFJvdXRlcixcbiAgICB7XG4gICAgICBiYXNlbmFtZTogZGF0YVJvdXRlckNvbnRleHQuYmFzZW5hbWUsXG4gICAgICBsb2NhdGlvbjogc3RhdGUubG9jYXRpb24sXG4gICAgICBuYXZpZ2F0aW9uVHlwZTogc3RhdGUuaGlzdG9yeUFjdGlvbixcbiAgICAgIG5hdmlnYXRvcjogZGF0YVJvdXRlckNvbnRleHQubmF2aWdhdG9yLFxuICAgICAgc3RhdGljOiBkYXRhUm91dGVyQ29udGV4dC5zdGF0aWNcbiAgICB9LFxuICAgIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDExLmNyZWF0ZUVsZW1lbnQoXG4gICAgICBEYXRhUm91dGVzMixcbiAgICAgIHtcbiAgICAgICAgcm91dGVzOiByb3V0ZXIucm91dGVzLFxuICAgICAgICBmdXR1cmU6IHJvdXRlci5mdXR1cmUsXG4gICAgICAgIHN0YXRlXG4gICAgICB9XG4gICAgKVxuICApKSkpKSwgaHlkcmF0ZVNjcmlwdCA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDExLmNyZWF0ZUVsZW1lbnQoXG4gICAgXCJzY3JpcHRcIixcbiAgICB7XG4gICAgICBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmc6IHRydWUsXG4gICAgICBub25jZSxcbiAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7IF9faHRtbDogaHlkcmF0ZVNjcmlwdCB9XG4gICAgfVxuICApIDogbnVsbCk7XG59XG5mdW5jdGlvbiBEYXRhUm91dGVzMih7XG4gIHJvdXRlcyxcbiAgZnV0dXJlLFxuICBzdGF0ZVxufSkge1xuICByZXR1cm4gdXNlUm91dGVzSW1wbChyb3V0ZXMsIHZvaWQgMCwgc3RhdGUsIGZ1dHVyZSk7XG59XG5mdW5jdGlvbiBzZXJpYWxpemVFcnJvcnMoZXJyb3JzKSB7XG4gIGlmICghZXJyb3JzKSByZXR1cm4gbnVsbDtcbiAgbGV0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhlcnJvcnMpO1xuICBsZXQgc2VyaWFsaXplZCA9IHt9O1xuICBmb3IgKGxldCBba2V5LCB2YWxdIG9mIGVudHJpZXMpIHtcbiAgICBpZiAoaXNSb3V0ZUVycm9yUmVzcG9uc2UodmFsKSkge1xuICAgICAgc2VyaWFsaXplZFtrZXldID0geyAuLi52YWwsIF9fdHlwZTogXCJSb3V0ZUVycm9yUmVzcG9uc2VcIiB9O1xuICAgIH0gZWxzZSBpZiAodmFsIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHNlcmlhbGl6ZWRba2V5XSA9IHtcbiAgICAgICAgbWVzc2FnZTogdmFsLm1lc3NhZ2UsXG4gICAgICAgIF9fdHlwZTogXCJFcnJvclwiLFxuICAgICAgICAvLyBJZiB0aGlzIGlzIGEgc3ViY2xhc3MgKGkuZS4sIFJlZmVyZW5jZUVycm9yKSwgc2VuZCB1cCB0aGUgdHlwZSBzbyB3ZVxuICAgICAgICAvLyBjYW4gcmUtY3JlYXRlIHRoZSBzYW1lIHR5cGUgZHVyaW5nIGh5ZHJhdGlvbi5cbiAgICAgICAgLi4udmFsLm5hbWUgIT09IFwiRXJyb3JcIiA/IHtcbiAgICAgICAgICBfX3N1YlR5cGU6IHZhbC5uYW1lXG4gICAgICAgIH0gOiB7fVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VyaWFsaXplZFtrZXldID0gdmFsO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc2VyaWFsaXplZDtcbn1cbmZ1bmN0aW9uIGdldFN0YXRlbGVzc05hdmlnYXRvcigpIHtcbiAgcmV0dXJuIHtcbiAgICBjcmVhdGVIcmVmLFxuICAgIGVuY29kZUxvY2F0aW9uLFxuICAgIHB1c2godG8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFlvdSBjYW5ub3QgdXNlIG5hdmlnYXRvci5wdXNoKCkgb24gdGhlIHNlcnZlciBiZWNhdXNlIGl0IGlzIGEgc3RhdGVsZXNzIGVudmlyb25tZW50LiBUaGlzIGVycm9yIHdhcyBwcm9iYWJseSB0cmlnZ2VyZWQgd2hlbiB5b3UgZGlkIGEgXFxgbmF2aWdhdGUoJHtKU09OLnN0cmluZ2lmeSh0byl9KVxcYCBzb21ld2hlcmUgaW4geW91ciBhcHAuYFxuICAgICAgKTtcbiAgICB9LFxuICAgIHJlcGxhY2UodG8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFlvdSBjYW5ub3QgdXNlIG5hdmlnYXRvci5yZXBsYWNlKCkgb24gdGhlIHNlcnZlciBiZWNhdXNlIGl0IGlzIGEgc3RhdGVsZXNzIGVudmlyb25tZW50LiBUaGlzIGVycm9yIHdhcyBwcm9iYWJseSB0cmlnZ2VyZWQgd2hlbiB5b3UgZGlkIGEgXFxgbmF2aWdhdGUoJHtKU09OLnN0cmluZ2lmeSh0byl9LCB7IHJlcGxhY2U6IHRydWUgfSlcXGAgc29tZXdoZXJlIGluIHlvdXIgYXBwLmBcbiAgICAgICk7XG4gICAgfSxcbiAgICBnbyhkZWx0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IGNhbm5vdCB1c2UgbmF2aWdhdG9yLmdvKCkgb24gdGhlIHNlcnZlciBiZWNhdXNlIGl0IGlzIGEgc3RhdGVsZXNzIGVudmlyb25tZW50LiBUaGlzIGVycm9yIHdhcyBwcm9iYWJseSB0cmlnZ2VyZWQgd2hlbiB5b3UgZGlkIGEgXFxgbmF2aWdhdGUoJHtkZWx0YX0pXFxgIHNvbWV3aGVyZSBpbiB5b3VyIGFwcC5gXG4gICAgICApO1xuICAgIH0sXG4gICAgYmFjaygpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFlvdSBjYW5ub3QgdXNlIG5hdmlnYXRvci5iYWNrKCkgb24gdGhlIHNlcnZlciBiZWNhdXNlIGl0IGlzIGEgc3RhdGVsZXNzIGVudmlyb25tZW50LmBcbiAgICAgICk7XG4gICAgfSxcbiAgICBmb3J3YXJkKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IGNhbm5vdCB1c2UgbmF2aWdhdG9yLmZvcndhcmQoKSBvbiB0aGUgc2VydmVyIGJlY2F1c2UgaXQgaXMgYSBzdGF0ZWxlc3MgZW52aXJvbm1lbnQuYFxuICAgICAgKTtcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBjcmVhdGVTdGF0aWNIYW5kbGVyMihyb3V0ZXMsIG9wdHMpIHtcbiAgcmV0dXJuIGNyZWF0ZVN0YXRpY0hhbmRsZXIocm91dGVzLCB7XG4gICAgLi4ub3B0cyxcbiAgICBtYXBSb3V0ZVByb3BlcnRpZXNcbiAgfSk7XG59XG5mdW5jdGlvbiBjcmVhdGVTdGF0aWNSb3V0ZXIocm91dGVzLCBjb250ZXh0LCBvcHRzID0ge30pIHtcbiAgbGV0IG1hbmlmZXN0ID0ge307XG4gIGxldCBkYXRhUm91dGVzID0gY29udmVydFJvdXRlc1RvRGF0YVJvdXRlcyhcbiAgICByb3V0ZXMsXG4gICAgbWFwUm91dGVQcm9wZXJ0aWVzLFxuICAgIHZvaWQgMCxcbiAgICBtYW5pZmVzdFxuICApO1xuICBsZXQgbWF0Y2hlcyA9IGNvbnRleHQubWF0Y2hlcy5tYXAoKG1hdGNoKSA9PiB7XG4gICAgbGV0IHJvdXRlID0gbWFuaWZlc3RbbWF0Y2gucm91dGUuaWRdIHx8IG1hdGNoLnJvdXRlO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5tYXRjaCxcbiAgICAgIHJvdXRlXG4gICAgfTtcbiAgfSk7XG4gIGxldCBtc2cgPSAobWV0aG9kKSA9PiBgWW91IGNhbm5vdCB1c2Ugcm91dGVyLiR7bWV0aG9kfSgpIG9uIHRoZSBzZXJ2ZXIgYmVjYXVzZSBpdCBpcyBhIHN0YXRlbGVzcyBlbnZpcm9ubWVudGA7XG4gIHJldHVybiB7XG4gICAgZ2V0IGJhc2VuYW1lKCkge1xuICAgICAgcmV0dXJuIGNvbnRleHQuYmFzZW5hbWU7XG4gICAgfSxcbiAgICBnZXQgZnV0dXJlKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3B0cz8uZnV0dXJlXG4gICAgICB9O1xuICAgIH0sXG4gICAgZ2V0IHN0YXRlKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaGlzdG9yeUFjdGlvbjogXCJQT1BcIiAvKiBQb3AgKi8sXG4gICAgICAgIGxvY2F0aW9uOiBjb250ZXh0LmxvY2F0aW9uLFxuICAgICAgICBtYXRjaGVzLFxuICAgICAgICBsb2FkZXJEYXRhOiBjb250ZXh0LmxvYWRlckRhdGEsXG4gICAgICAgIGFjdGlvbkRhdGE6IGNvbnRleHQuYWN0aW9uRGF0YSxcbiAgICAgICAgZXJyb3JzOiBjb250ZXh0LmVycm9ycyxcbiAgICAgICAgaW5pdGlhbGl6ZWQ6IHRydWUsXG4gICAgICAgIG5hdmlnYXRpb246IElETEVfTkFWSUdBVElPTixcbiAgICAgICAgcmVzdG9yZVNjcm9sbFBvc2l0aW9uOiBudWxsLFxuICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQ6IGZhbHNlLFxuICAgICAgICByZXZhbGlkYXRpb246IFwiaWRsZVwiLFxuICAgICAgICBmZXRjaGVyczogLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSxcbiAgICAgICAgYmxvY2tlcnM6IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKClcbiAgICAgIH07XG4gICAgfSxcbiAgICBnZXQgcm91dGVzKCkge1xuICAgICAgcmV0dXJuIGRhdGFSb3V0ZXM7XG4gICAgfSxcbiAgICBnZXQgd2luZG93KCkge1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9LFxuICAgIGluaXRpYWxpemUoKSB7XG4gICAgICB0aHJvdyBtc2coXCJpbml0aWFsaXplXCIpO1xuICAgIH0sXG4gICAgc3Vic2NyaWJlKCkge1xuICAgICAgdGhyb3cgbXNnKFwic3Vic2NyaWJlXCIpO1xuICAgIH0sXG4gICAgZW5hYmxlU2Nyb2xsUmVzdG9yYXRpb24oKSB7XG4gICAgICB0aHJvdyBtc2coXCJlbmFibGVTY3JvbGxSZXN0b3JhdGlvblwiKTtcbiAgICB9LFxuICAgIG5hdmlnYXRlKCkge1xuICAgICAgdGhyb3cgbXNnKFwibmF2aWdhdGVcIik7XG4gICAgfSxcbiAgICBmZXRjaCgpIHtcbiAgICAgIHRocm93IG1zZyhcImZldGNoXCIpO1xuICAgIH0sXG4gICAgcmV2YWxpZGF0ZSgpIHtcbiAgICAgIHRocm93IG1zZyhcInJldmFsaWRhdGVcIik7XG4gICAgfSxcbiAgICBjcmVhdGVIcmVmLFxuICAgIGVuY29kZUxvY2F0aW9uLFxuICAgIGdldEZldGNoZXIoKSB7XG4gICAgICByZXR1cm4gSURMRV9GRVRDSEVSO1xuICAgIH0sXG4gICAgZGVsZXRlRmV0Y2hlcigpIHtcbiAgICAgIHRocm93IG1zZyhcImRlbGV0ZUZldGNoZXJcIik7XG4gICAgfSxcbiAgICBkaXNwb3NlKCkge1xuICAgICAgdGhyb3cgbXNnKFwiZGlzcG9zZVwiKTtcbiAgICB9LFxuICAgIGdldEJsb2NrZXIoKSB7XG4gICAgICByZXR1cm4gSURMRV9CTE9DS0VSO1xuICAgIH0sXG4gICAgZGVsZXRlQmxvY2tlcigpIHtcbiAgICAgIHRocm93IG1zZyhcImRlbGV0ZUJsb2NrZXJcIik7XG4gICAgfSxcbiAgICBwYXRjaFJvdXRlcygpIHtcbiAgICAgIHRocm93IG1zZyhcInBhdGNoUm91dGVzXCIpO1xuICAgIH0sXG4gICAgX2ludGVybmFsRmV0Y2hDb250cm9sbGVyczogLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSxcbiAgICBfaW50ZXJuYWxTZXRSb3V0ZXMoKSB7XG4gICAgICB0aHJvdyBtc2coXCJfaW50ZXJuYWxTZXRSb3V0ZXNcIik7XG4gICAgfVxuICB9O1xufVxuZnVuY3Rpb24gY3JlYXRlSHJlZih0bykge1xuICByZXR1cm4gdHlwZW9mIHRvID09PSBcInN0cmluZ1wiID8gdG8gOiBjcmVhdGVQYXRoKHRvKTtcbn1cbmZ1bmN0aW9uIGVuY29kZUxvY2F0aW9uKHRvKSB7XG4gIGxldCBocmVmID0gdHlwZW9mIHRvID09PSBcInN0cmluZ1wiID8gdG8gOiBjcmVhdGVQYXRoKHRvKTtcbiAgaHJlZiA9IGhyZWYucmVwbGFjZSgvICQvLCBcIiUyMFwiKTtcbiAgbGV0IGVuY29kZWQgPSBBQlNPTFVURV9VUkxfUkVHRVgzLnRlc3QoaHJlZikgPyBuZXcgVVJMKGhyZWYpIDogbmV3IFVSTChocmVmLCBcImh0dHA6Ly9sb2NhbGhvc3RcIik7XG4gIHJldHVybiB7XG4gICAgcGF0aG5hbWU6IGVuY29kZWQucGF0aG5hbWUsXG4gICAgc2VhcmNoOiBlbmNvZGVkLnNlYXJjaCxcbiAgICBoYXNoOiBlbmNvZGVkLmhhc2hcbiAgfTtcbn1cbnZhciBBQlNPTFVURV9VUkxfUkVHRVgzID0gL14oPzpbYS16XVthLXowLTkrLi1dKjp8XFwvXFwvKS9pO1xudmFyIEVTQ0FQRV9MT09LVVAyID0ge1xuICBcIiZcIjogXCJcXFxcdTAwMjZcIixcbiAgXCI+XCI6IFwiXFxcXHUwMDNlXCIsXG4gIFwiPFwiOiBcIlxcXFx1MDAzY1wiLFxuICBcIlxcdTIwMjhcIjogXCJcXFxcdTIwMjhcIixcbiAgXCJcXHUyMDI5XCI6IFwiXFxcXHUyMDI5XCJcbn07XG52YXIgRVNDQVBFX1JFR0VYMiA9IC9bJj48XFx1MjAyOFxcdTIwMjldL2c7XG5mdW5jdGlvbiBodG1sRXNjYXBlKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoRVNDQVBFX1JFR0VYMiwgKG1hdGNoKSA9PiBFU0NBUEVfTE9PS1VQMlttYXRjaF0pO1xufVxuXG4vLyBsaWIvZG9tL3Nzci9zZXJ2ZXIudHN4XG5pbXBvcnQgKiBhcyBSZWFjdDEyIGZyb20gXCJyZWFjdFwiO1xuZnVuY3Rpb24gU2VydmVyUm91dGVyKHtcbiAgY29udGV4dCxcbiAgdXJsLFxuICBub25jZVxufSkge1xuICBpZiAodHlwZW9mIHVybCA9PT0gXCJzdHJpbmdcIikge1xuICAgIHVybCA9IG5ldyBVUkwodXJsKTtcbiAgfVxuICBsZXQgeyBtYW5pZmVzdCwgcm91dGVNb2R1bGVzLCBjcml0aWNhbENzcywgc2VydmVySGFuZG9mZlN0cmluZyB9ID0gY29udGV4dDtcbiAgbGV0IHJvdXRlcyA9IGNyZWF0ZVNlcnZlclJvdXRlcyhcbiAgICBtYW5pZmVzdC5yb3V0ZXMsXG4gICAgcm91dGVNb2R1bGVzLFxuICAgIGNvbnRleHQuZnV0dXJlLFxuICAgIGNvbnRleHQuaXNTcGFNb2RlXG4gICk7XG4gIGNvbnRleHQuc3RhdGljSGFuZGxlckNvbnRleHQubG9hZGVyRGF0YSA9IHtcbiAgICAuLi5jb250ZXh0LnN0YXRpY0hhbmRsZXJDb250ZXh0LmxvYWRlckRhdGFcbiAgfTtcbiAgZm9yIChsZXQgbWF0Y2ggb2YgY29udGV4dC5zdGF0aWNIYW5kbGVyQ29udGV4dC5tYXRjaGVzKSB7XG4gICAgbGV0IHJvdXRlSWQgPSBtYXRjaC5yb3V0ZS5pZDtcbiAgICBsZXQgcm91dGUgPSByb3V0ZU1vZHVsZXNbcm91dGVJZF07XG4gICAgbGV0IG1hbmlmZXN0Um91dGUgPSBjb250ZXh0Lm1hbmlmZXN0LnJvdXRlc1tyb3V0ZUlkXTtcbiAgICBpZiAocm91dGUgJiYgbWFuaWZlc3RSb3V0ZSAmJiBzaG91bGRIeWRyYXRlUm91dGVMb2FkZXIobWFuaWZlc3RSb3V0ZSwgcm91dGUsIGNvbnRleHQuaXNTcGFNb2RlKSAmJiAocm91dGUuSHlkcmF0ZUZhbGxiYWNrIHx8ICFtYW5pZmVzdFJvdXRlLmhhc0xvYWRlcikpIHtcbiAgICAgIGRlbGV0ZSBjb250ZXh0LnN0YXRpY0hhbmRsZXJDb250ZXh0LmxvYWRlckRhdGFbcm91dGVJZF07XG4gICAgfVxuICB9XG4gIGxldCByb3V0ZXIgPSBjcmVhdGVTdGF0aWNSb3V0ZXIocm91dGVzLCBjb250ZXh0LnN0YXRpY0hhbmRsZXJDb250ZXh0KTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDEyLmNyZWF0ZUVsZW1lbnQoUmVhY3QxMi5GcmFnbWVudCwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0MTIuY3JlYXRlRWxlbWVudChcbiAgICBGcmFtZXdvcmtDb250ZXh0LlByb3ZpZGVyLFxuICAgIHtcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIG1hbmlmZXN0LFxuICAgICAgICByb3V0ZU1vZHVsZXMsXG4gICAgICAgIGNyaXRpY2FsQ3NzLFxuICAgICAgICBzZXJ2ZXJIYW5kb2ZmU3RyaW5nLFxuICAgICAgICBmdXR1cmU6IGNvbnRleHQuZnV0dXJlLFxuICAgICAgICBpc1NwYU1vZGU6IGNvbnRleHQuaXNTcGFNb2RlLFxuICAgICAgICBzZXJpYWxpemVFcnJvcjogY29udGV4dC5zZXJpYWxpemVFcnJvcixcbiAgICAgICAgcmVuZGVyTWV0YTogY29udGV4dC5yZW5kZXJNZXRhXG4gICAgICB9XG4gICAgfSxcbiAgICAvKiBAX19QVVJFX18gKi8gUmVhY3QxMi5jcmVhdGVFbGVtZW50KFJlbWl4RXJyb3JCb3VuZGFyeSwgeyBsb2NhdGlvbjogcm91dGVyLnN0YXRlLmxvY2F0aW9uIH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDEyLmNyZWF0ZUVsZW1lbnQoXG4gICAgICBTdGF0aWNSb3V0ZXJQcm92aWRlcixcbiAgICAgIHtcbiAgICAgICAgcm91dGVyLFxuICAgICAgICBjb250ZXh0OiBjb250ZXh0LnN0YXRpY0hhbmRsZXJDb250ZXh0LFxuICAgICAgICBoeWRyYXRlOiBmYWxzZVxuICAgICAgfVxuICAgICkpXG4gICksIGNvbnRleHQuc2VydmVySGFuZG9mZlN0cmVhbSA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDEyLmNyZWF0ZUVsZW1lbnQoUmVhY3QxMi5TdXNwZW5zZSwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0MTIuY3JlYXRlRWxlbWVudChcbiAgICBTdHJlYW1UcmFuc2ZlcixcbiAgICB7XG4gICAgICBjb250ZXh0LFxuICAgICAgaWRlbnRpZmllcjogMCxcbiAgICAgIHJlYWRlcjogY29udGV4dC5zZXJ2ZXJIYW5kb2ZmU3RyZWFtLmdldFJlYWRlcigpLFxuICAgICAgdGV4dERlY29kZXI6IG5ldyBUZXh0RGVjb2RlcigpLFxuICAgICAgbm9uY2VcbiAgICB9XG4gICkpIDogbnVsbCk7XG59XG5cbi8vIGxpYi9kb20vc3NyL3JvdXRlcy10ZXN0LXN0dWIudHN4XG5pbXBvcnQgKiBhcyBSZWFjdDEzIGZyb20gXCJyZWFjdFwiO1xuZnVuY3Rpb24gY3JlYXRlUm91dGVzU3R1Yihyb3V0ZXMsIGNvbnRleHQgPSB7fSkge1xuICByZXR1cm4gZnVuY3Rpb24gUm91dGVzVGVzdFN0dWIoe1xuICAgIGluaXRpYWxFbnRyaWVzLFxuICAgIGluaXRpYWxJbmRleCxcbiAgICBoeWRyYXRpb25EYXRhLFxuICAgIGZ1dHVyZVxuICB9KSB7XG4gICAgbGV0IHJvdXRlclJlZiA9IFJlYWN0MTMudXNlUmVmKCk7XG4gICAgbGV0IHJlbWl4Q29udGV4dFJlZiA9IFJlYWN0MTMudXNlUmVmKCk7XG4gICAgaWYgKHJvdXRlclJlZi5jdXJyZW50ID09IG51bGwpIHtcbiAgICAgIHJlbWl4Q29udGV4dFJlZi5jdXJyZW50ID0ge1xuICAgICAgICBmdXR1cmU6IHt9LFxuICAgICAgICBtYW5pZmVzdDoge1xuICAgICAgICAgIHJvdXRlczoge30sXG4gICAgICAgICAgZW50cnk6IHsgaW1wb3J0czogW10sIG1vZHVsZTogXCJcIiB9LFxuICAgICAgICAgIHVybDogXCJcIixcbiAgICAgICAgICB2ZXJzaW9uOiBcIlwiXG4gICAgICAgIH0sXG4gICAgICAgIHJvdXRlTW9kdWxlczoge30sXG4gICAgICAgIGlzU3BhTW9kZTogZmFsc2VcbiAgICAgIH07XG4gICAgICBsZXQgcGF0Y2hlZCA9IHByb2Nlc3NSb3V0ZXMoXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbG9hZGVyL2FjdGlvbiBjb250ZXh0IHR5cGVzIGRvbid0IG1hdGNoIDovXG4gICAgICAgIGNvbnZlcnRSb3V0ZXNUb0RhdGFSb3V0ZXMocm91dGVzLCAocikgPT4gciksXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHJlbWl4Q29udGV4dFJlZi5jdXJyZW50Lm1hbmlmZXN0LFxuICAgICAgICByZW1peENvbnRleHRSZWYuY3VycmVudC5yb3V0ZU1vZHVsZXNcbiAgICAgICk7XG4gICAgICByb3V0ZXJSZWYuY3VycmVudCA9IGNyZWF0ZU1lbW9yeVJvdXRlcihwYXRjaGVkLCB7XG4gICAgICAgIGluaXRpYWxFbnRyaWVzLFxuICAgICAgICBpbml0aWFsSW5kZXgsXG4gICAgICAgIGh5ZHJhdGlvbkRhdGFcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0MTMuY3JlYXRlRWxlbWVudChGcmFtZXdvcmtDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiByZW1peENvbnRleHRSZWYuY3VycmVudCB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QxMy5jcmVhdGVFbGVtZW50KFJvdXRlclByb3ZpZGVyLCB7IHJvdXRlcjogcm91dGVyUmVmLmN1cnJlbnQgfSkpO1xuICB9O1xufVxuZnVuY3Rpb24gcHJvY2Vzc1JvdXRlcyhyb3V0ZXMsIGNvbnRleHQsIG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMsIHBhcmVudElkKSB7XG4gIHJldHVybiByb3V0ZXMubWFwKChyb3V0ZSkgPT4ge1xuICAgIGlmICghcm91dGUuaWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJFeHBlY3RlZCBhIHJvdXRlLmlkIGluIEByZW1peC1ydW4vdGVzdGluZyBwcm9jZXNzUm91dGVzKCkgZnVuY3Rpb25cIlxuICAgICAgKTtcbiAgICB9XG4gICAgbGV0IHsgbG9hZGVyLCBhY3Rpb24gfSA9IHJvdXRlO1xuICAgIGxldCBuZXdSb3V0ZSA9IHtcbiAgICAgIGlkOiByb3V0ZS5pZCxcbiAgICAgIHBhdGg6IHJvdXRlLnBhdGgsXG4gICAgICBpbmRleDogcm91dGUuaW5kZXgsXG4gICAgICBDb21wb25lbnQ6IHJvdXRlLkNvbXBvbmVudCxcbiAgICAgIEh5ZHJhdGVGYWxsYmFjazogcm91dGUuSHlkcmF0ZUZhbGxiYWNrLFxuICAgICAgRXJyb3JCb3VuZGFyeTogcm91dGUuRXJyb3JCb3VuZGFyeSxcbiAgICAgIGFjdGlvbjogYWN0aW9uID8gKGFyZ3MpID0+IGFjdGlvbih7IC4uLmFyZ3MsIGNvbnRleHQgfSkgOiB2b2lkIDAsXG4gICAgICBsb2FkZXI6IGxvYWRlciA/IChhcmdzKSA9PiBsb2FkZXIoeyAuLi5hcmdzLCBjb250ZXh0IH0pIDogdm9pZCAwLFxuICAgICAgaGFuZGxlOiByb3V0ZS5oYW5kbGUsXG4gICAgICBzaG91bGRSZXZhbGlkYXRlOiByb3V0ZS5zaG91bGRSZXZhbGlkYXRlXG4gICAgfTtcbiAgICBsZXQgZW50cnlSb3V0ZSA9IHtcbiAgICAgIGlkOiByb3V0ZS5pZCxcbiAgICAgIHBhdGg6IHJvdXRlLnBhdGgsXG4gICAgICBpbmRleDogcm91dGUuaW5kZXgsXG4gICAgICBwYXJlbnRJZCxcbiAgICAgIGhhc0FjdGlvbjogcm91dGUuYWN0aW9uICE9IG51bGwsXG4gICAgICBoYXNMb2FkZXI6IHJvdXRlLmxvYWRlciAhPSBudWxsLFxuICAgICAgLy8gV2hlbiB0ZXN0aW5nIHJvdXRlcywgeW91IHNob3VsZCBqdXN0IGJlIHN0dWJiaW5nIGxvYWRlci9hY3Rpb24sIG5vdFxuICAgICAgLy8gdHJ5aW5nIHRvIHJlLWltcGxlbWVudCB0aGUgZnVsbCBsb2FkZXIvY2xpZW50TG9hZGVyL1NTUi9oeWRyYXRpb24gZmxvdy5cbiAgICAgIC8vIFRoYXQgaXMgYmV0dGVyIHRlc3RlZCB2aWEgRTJFIHRlc3RzLlxuICAgICAgaGFzQ2xpZW50QWN0aW9uOiBmYWxzZSxcbiAgICAgIGhhc0NsaWVudExvYWRlcjogZmFsc2UsXG4gICAgICBoYXNFcnJvckJvdW5kYXJ5OiByb3V0ZS5FcnJvckJvdW5kYXJ5ICE9IG51bGwsXG4gICAgICBtb2R1bGU6IFwiYnVpbGQvc3R1Yi1wYXRoLXRvLW1vZHVsZS5qc1wiXG4gICAgICAvLyBhbnkgbmVlZCBmb3IgdGhpcz9cbiAgICB9O1xuICAgIG1hbmlmZXN0LnJvdXRlc1tuZXdSb3V0ZS5pZF0gPSBlbnRyeVJvdXRlO1xuICAgIHJvdXRlTW9kdWxlc1tyb3V0ZS5pZF0gPSB7XG4gICAgICBkZWZhdWx0OiByb3V0ZS5Db21wb25lbnQgfHwgT3V0bGV0LFxuICAgICAgRXJyb3JCb3VuZGFyeTogcm91dGUuRXJyb3JCb3VuZGFyeSB8fCB2b2lkIDAsXG4gICAgICBoYW5kbGU6IHJvdXRlLmhhbmRsZSxcbiAgICAgIGxpbmtzOiByb3V0ZS5saW5rcyxcbiAgICAgIG1ldGE6IHJvdXRlLm1ldGEsXG4gICAgICBzaG91bGRSZXZhbGlkYXRlOiByb3V0ZS5zaG91bGRSZXZhbGlkYXRlXG4gICAgfTtcbiAgICBpZiAocm91dGUuY2hpbGRyZW4pIHtcbiAgICAgIG5ld1JvdXRlLmNoaWxkcmVuID0gcHJvY2Vzc1JvdXRlcyhcbiAgICAgICAgcm91dGUuY2hpbGRyZW4sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIG1hbmlmZXN0LFxuICAgICAgICByb3V0ZU1vZHVsZXMsXG4gICAgICAgIG5ld1JvdXRlLmlkXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3Um91dGU7XG4gIH0pO1xufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvY29va2llcy50c1xuaW1wb3J0IHsgcGFyc2UsIHNlcmlhbGl6ZSB9IGZyb20gXCJjb29raWVcIjtcblxuLy8gbGliL3NlcnZlci1ydW50aW1lL2NyeXB0by50c1xudmFyIGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbnZhciBzaWduID0gYXN5bmMgKHZhbHVlLCBzZWNyZXQpID0+IHtcbiAgbGV0IGRhdGEyID0gZW5jb2Rlci5lbmNvZGUodmFsdWUpO1xuICBsZXQga2V5ID0gYXdhaXQgY3JlYXRlS2V5MihzZWNyZXQsIFtcInNpZ25cIl0pO1xuICBsZXQgc2lnbmF0dXJlID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5zaWduKFwiSE1BQ1wiLCBrZXksIGRhdGEyKTtcbiAgbGV0IGhhc2ggPSBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4ubmV3IFVpbnQ4QXJyYXkoc2lnbmF0dXJlKSkpLnJlcGxhY2UoXG4gICAgLz0rJC8sXG4gICAgXCJcIlxuICApO1xuICByZXR1cm4gdmFsdWUgKyBcIi5cIiArIGhhc2g7XG59O1xudmFyIHVuc2lnbiA9IGFzeW5jIChjb29raWUsIHNlY3JldCkgPT4ge1xuICBsZXQgaW5kZXggPSBjb29raWUubGFzdEluZGV4T2YoXCIuXCIpO1xuICBsZXQgdmFsdWUgPSBjb29raWUuc2xpY2UoMCwgaW5kZXgpO1xuICBsZXQgaGFzaCA9IGNvb2tpZS5zbGljZShpbmRleCArIDEpO1xuICBsZXQgZGF0YTIgPSBlbmNvZGVyLmVuY29kZSh2YWx1ZSk7XG4gIGxldCBrZXkgPSBhd2FpdCBjcmVhdGVLZXkyKHNlY3JldCwgW1widmVyaWZ5XCJdKTtcbiAgbGV0IHNpZ25hdHVyZSA9IGJ5dGVTdHJpbmdUb1VpbnQ4QXJyYXkoYXRvYihoYXNoKSk7XG4gIGxldCB2YWxpZCA9IGF3YWl0IGNyeXB0by5zdWJ0bGUudmVyaWZ5KFwiSE1BQ1wiLCBrZXksIHNpZ25hdHVyZSwgZGF0YTIpO1xuICByZXR1cm4gdmFsaWQgPyB2YWx1ZSA6IGZhbHNlO1xufTtcbnZhciBjcmVhdGVLZXkyID0gYXN5bmMgKHNlY3JldCwgdXNhZ2VzKSA9PiBjcnlwdG8uc3VidGxlLmltcG9ydEtleShcbiAgXCJyYXdcIixcbiAgZW5jb2Rlci5lbmNvZGUoc2VjcmV0KSxcbiAgeyBuYW1lOiBcIkhNQUNcIiwgaGFzaDogXCJTSEEtMjU2XCIgfSxcbiAgZmFsc2UsXG4gIHVzYWdlc1xuKTtcbmZ1bmN0aW9uIGJ5dGVTdHJpbmdUb1VpbnQ4QXJyYXkoYnl0ZVN0cmluZykge1xuICBsZXQgYXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlU3RyaW5nLmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZVN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgIGFycmF5W2ldID0gYnl0ZVN0cmluZy5jaGFyQ29kZUF0KGkpO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL2Nvb2tpZXMudHNcbnZhciBjcmVhdGVDb29raWUgPSAobmFtZSwgY29va2llT3B0aW9ucyA9IHt9KSA9PiB7XG4gIGxldCB7IHNlY3JldHMgPSBbXSwgLi4ub3B0aW9ucyB9ID0ge1xuICAgIHBhdGg6IFwiL1wiLFxuICAgIHNhbWVTaXRlOiBcImxheFwiLFxuICAgIC4uLmNvb2tpZU9wdGlvbnNcbiAgfTtcbiAgd2Fybk9uY2VBYm91dEV4cGlyZXNDb29raWUobmFtZSwgb3B0aW9ucy5leHBpcmVzKTtcbiAgcmV0dXJuIHtcbiAgICBnZXQgbmFtZSgpIHtcbiAgICAgIHJldHVybiBuYW1lO1xuICAgIH0sXG4gICAgZ2V0IGlzU2lnbmVkKCkge1xuICAgICAgcmV0dXJuIHNlY3JldHMubGVuZ3RoID4gMDtcbiAgICB9LFxuICAgIGdldCBleHBpcmVzKCkge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvcHRpb25zLm1heEFnZSAhPT0gXCJ1bmRlZmluZWRcIiA/IG5ldyBEYXRlKERhdGUubm93KCkgKyBvcHRpb25zLm1heEFnZSAqIDFlMykgOiBvcHRpb25zLmV4cGlyZXM7XG4gICAgfSxcbiAgICBhc3luYyBwYXJzZShjb29raWVIZWFkZXIsIHBhcnNlT3B0aW9ucykge1xuICAgICAgaWYgKCFjb29raWVIZWFkZXIpIHJldHVybiBudWxsO1xuICAgICAgbGV0IGNvb2tpZXMgPSBwYXJzZShjb29raWVIZWFkZXIsIHsgLi4ub3B0aW9ucywgLi4ucGFyc2VPcHRpb25zIH0pO1xuICAgICAgaWYgKG5hbWUgaW4gY29va2llcykge1xuICAgICAgICBsZXQgdmFsdWUgPSBjb29raWVzW25hbWVdO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlICE9PSBcIlwiKSB7XG4gICAgICAgICAgbGV0IGRlY29kZWQgPSBhd2FpdCBkZWNvZGVDb29raWVWYWx1ZSh2YWx1ZSwgc2VjcmV0cyk7XG4gICAgICAgICAgcmV0dXJuIGRlY29kZWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgc2VyaWFsaXplKHZhbHVlLCBzZXJpYWxpemVPcHRpb25zKSB7XG4gICAgICByZXR1cm4gc2VyaWFsaXplKFxuICAgICAgICBuYW1lLFxuICAgICAgICB2YWx1ZSA9PT0gXCJcIiA/IFwiXCIgOiBhd2FpdCBlbmNvZGVDb29raWVWYWx1ZSh2YWx1ZSwgc2VjcmV0cyksXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgIC4uLnNlcmlhbGl6ZU9wdGlvbnNcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH07XG59O1xudmFyIGlzQ29va2llID0gKG9iamVjdCkgPT4ge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgdHlwZW9mIG9iamVjdC5uYW1lID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiBvYmplY3QuaXNTaWduZWQgPT09IFwiYm9vbGVhblwiICYmIHR5cGVvZiBvYmplY3QucGFyc2UgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygb2JqZWN0LnNlcmlhbGl6ZSA9PT0gXCJmdW5jdGlvblwiO1xufTtcbmFzeW5jIGZ1bmN0aW9uIGVuY29kZUNvb2tpZVZhbHVlKHZhbHVlLCBzZWNyZXRzKSB7XG4gIGxldCBlbmNvZGVkID0gZW5jb2RlRGF0YSh2YWx1ZSk7XG4gIGlmIChzZWNyZXRzLmxlbmd0aCA+IDApIHtcbiAgICBlbmNvZGVkID0gYXdhaXQgc2lnbihlbmNvZGVkLCBzZWNyZXRzWzBdKTtcbiAgfVxuICByZXR1cm4gZW5jb2RlZDtcbn1cbmFzeW5jIGZ1bmN0aW9uIGRlY29kZUNvb2tpZVZhbHVlKHZhbHVlLCBzZWNyZXRzKSB7XG4gIGlmIChzZWNyZXRzLmxlbmd0aCA+IDApIHtcbiAgICBmb3IgKGxldCBzZWNyZXQgb2Ygc2VjcmV0cykge1xuICAgICAgbGV0IHVuc2lnbmVkVmFsdWUgPSBhd2FpdCB1bnNpZ24odmFsdWUsIHNlY3JldCk7XG4gICAgICBpZiAodW5zaWduZWRWYWx1ZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGRlY29kZURhdGEodW5zaWduZWRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBkZWNvZGVEYXRhKHZhbHVlKTtcbn1cbmZ1bmN0aW9uIGVuY29kZURhdGEodmFsdWUpIHtcbiAgcmV0dXJuIGJ0b2EobXlVbmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkodmFsdWUpKSkpO1xufVxuZnVuY3Rpb24gZGVjb2RlRGF0YSh2YWx1ZSkge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChteUVzY2FwZShhdG9iKHZhbHVlKSkpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn1cbmZ1bmN0aW9uIG15RXNjYXBlKHZhbHVlKSB7XG4gIGxldCBzdHIgPSB2YWx1ZS50b1N0cmluZygpO1xuICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgbGV0IGluZGV4ID0gMDtcbiAgbGV0IGNociwgY29kZTtcbiAgd2hpbGUgKGluZGV4IDwgc3RyLmxlbmd0aCkge1xuICAgIGNociA9IHN0ci5jaGFyQXQoaW5kZXgrKyk7XG4gICAgaWYgKC9bXFx3KitcXC0uL0BdLy5leGVjKGNocikpIHtcbiAgICAgIHJlc3VsdCArPSBjaHI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvZGUgPSBjaHIuY2hhckNvZGVBdCgwKTtcbiAgICAgIGlmIChjb2RlIDwgMjU2KSB7XG4gICAgICAgIHJlc3VsdCArPSBcIiVcIiArIGhleChjb2RlLCAyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCArPSBcIiV1XCIgKyBoZXgoY29kZSwgNCkudG9VcHBlckNhc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGhleChjb2RlLCBsZW5ndGgpIHtcbiAgbGV0IHJlc3VsdCA9IGNvZGUudG9TdHJpbmcoMTYpO1xuICB3aGlsZSAocmVzdWx0Lmxlbmd0aCA8IGxlbmd0aCkgcmVzdWx0ID0gXCIwXCIgKyByZXN1bHQ7XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBteVVuZXNjYXBlKHZhbHVlKSB7XG4gIGxldCBzdHIgPSB2YWx1ZS50b1N0cmluZygpO1xuICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgbGV0IGluZGV4ID0gMDtcbiAgbGV0IGNociwgcGFydDtcbiAgd2hpbGUgKGluZGV4IDwgc3RyLmxlbmd0aCkge1xuICAgIGNociA9IHN0ci5jaGFyQXQoaW5kZXgrKyk7XG4gICAgaWYgKGNociA9PT0gXCIlXCIpIHtcbiAgICAgIGlmIChzdHIuY2hhckF0KGluZGV4KSA9PT0gXCJ1XCIpIHtcbiAgICAgICAgcGFydCA9IHN0ci5zbGljZShpbmRleCArIDEsIGluZGV4ICsgNSk7XG4gICAgICAgIGlmICgvXltcXGRhLWZdezR9JC9pLmV4ZWMocGFydCkpIHtcbiAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChwYXJ0LCAxNikpO1xuICAgICAgICAgIGluZGV4ICs9IDU7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnQgPSBzdHIuc2xpY2UoaW5kZXgsIGluZGV4ICsgMik7XG4gICAgICAgIGlmICgvXltcXGRhLWZdezJ9JC9pLmV4ZWMocGFydCkpIHtcbiAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChwYXJ0LCAxNikpO1xuICAgICAgICAgIGluZGV4ICs9IDI7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmVzdWx0ICs9IGNocjtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gd2Fybk9uY2VBYm91dEV4cGlyZXNDb29raWUobmFtZSwgZXhwaXJlcykge1xuICB3YXJuT25jZShcbiAgICAhZXhwaXJlcyxcbiAgICBgVGhlIFwiJHtuYW1lfVwiIGNvb2tpZSBoYXMgYW4gXCJleHBpcmVzXCIgcHJvcGVydHkgc2V0LiBUaGlzIHdpbGwgY2F1c2UgdGhlIGV4cGlyZXMgdmFsdWUgdG8gbm90IGJlIHVwZGF0ZWQgd2hlbiB0aGUgc2Vzc2lvbiBpcyBjb21taXR0ZWQuIEluc3RlYWQsIHlvdSBzaG91bGQgc2V0IHRoZSBleHBpcmVzIHZhbHVlIHdoZW4gc2VyaWFsaXppbmcgdGhlIGNvb2tpZS4gWW91IGNhbiB1c2UgXFxgY29tbWl0U2Vzc2lvbihzZXNzaW9uLCB7IGV4cGlyZXMgfSlcXGAgaWYgdXNpbmcgYSBzZXNzaW9uIHN0b3JhZ2Ugb2JqZWN0LCBvciBcXGBjb29raWUuc2VyaWFsaXplKFwidmFsdWVcIiwgeyBleHBpcmVzIH0pXFxgIGlmIHlvdSdyZSB1c2luZyB0aGUgY29va2llIGRpcmVjdGx5LmBcbiAgKTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL2VudHJ5LnRzXG5mdW5jdGlvbiBjcmVhdGVFbnRyeVJvdXRlTW9kdWxlcyhtYW5pZmVzdCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMobWFuaWZlc3QpLnJlZHVjZSgobWVtbzIsIHJvdXRlSWQpID0+IHtcbiAgICBsZXQgcm91dGUgPSBtYW5pZmVzdFtyb3V0ZUlkXTtcbiAgICBpZiAocm91dGUpIHtcbiAgICAgIG1lbW8yW3JvdXRlSWRdID0gcm91dGUubW9kdWxlO1xuICAgIH1cbiAgICByZXR1cm4gbWVtbzI7XG4gIH0sIHt9KTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL21vZGUudHNcbnZhciBTZXJ2ZXJNb2RlID0gLyogQF9fUFVSRV9fICovICgoU2VydmVyTW9kZTIpID0+IHtcbiAgU2VydmVyTW9kZTJbXCJEZXZlbG9wbWVudFwiXSA9IFwiZGV2ZWxvcG1lbnRcIjtcbiAgU2VydmVyTW9kZTJbXCJQcm9kdWN0aW9uXCJdID0gXCJwcm9kdWN0aW9uXCI7XG4gIFNlcnZlck1vZGUyW1wiVGVzdFwiXSA9IFwidGVzdFwiO1xuICByZXR1cm4gU2VydmVyTW9kZTI7XG59KShTZXJ2ZXJNb2RlIHx8IHt9KTtcbmZ1bmN0aW9uIGlzU2VydmVyTW9kZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IFwiZGV2ZWxvcG1lbnRcIiAvKiBEZXZlbG9wbWVudCAqLyB8fCB2YWx1ZSA9PT0gXCJwcm9kdWN0aW9uXCIgLyogUHJvZHVjdGlvbiAqLyB8fCB2YWx1ZSA9PT0gXCJ0ZXN0XCIgLyogVGVzdCAqLztcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL2Vycm9ycy50c1xuZnVuY3Rpb24gc2FuaXRpemVFcnJvcihlcnJvciwgc2VydmVyTW9kZSkge1xuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiBzZXJ2ZXJNb2RlICE9PSBcImRldmVsb3BtZW50XCIgLyogRGV2ZWxvcG1lbnQgKi8pIHtcbiAgICBsZXQgc2FuaXRpemVkID0gbmV3IEVycm9yKFwiVW5leHBlY3RlZCBTZXJ2ZXIgRXJyb3JcIik7XG4gICAgc2FuaXRpemVkLnN0YWNrID0gdm9pZCAwO1xuICAgIHJldHVybiBzYW5pdGl6ZWQ7XG4gIH1cbiAgcmV0dXJuIGVycm9yO1xufVxuZnVuY3Rpb24gc2FuaXRpemVFcnJvcnMoZXJyb3JzLCBzZXJ2ZXJNb2RlKSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhlcnJvcnMpLnJlZHVjZSgoYWNjLCBbcm91dGVJZCwgZXJyb3JdKSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYWNjLCB7IFtyb3V0ZUlkXTogc2FuaXRpemVFcnJvcihlcnJvciwgc2VydmVyTW9kZSkgfSk7XG4gIH0sIHt9KTtcbn1cbmZ1bmN0aW9uIHNlcmlhbGl6ZUVycm9yKGVycm9yLCBzZXJ2ZXJNb2RlKSB7XG4gIGxldCBzYW5pdGl6ZWQgPSBzYW5pdGl6ZUVycm9yKGVycm9yLCBzZXJ2ZXJNb2RlKTtcbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiBzYW5pdGl6ZWQubWVzc2FnZSxcbiAgICBzdGFjazogc2FuaXRpemVkLnN0YWNrXG4gIH07XG59XG5mdW5jdGlvbiBzZXJpYWxpemVFcnJvcnMyKGVycm9ycywgc2VydmVyTW9kZSkge1xuICBpZiAoIWVycm9ycykgcmV0dXJuIG51bGw7XG4gIGxldCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoZXJyb3JzKTtcbiAgbGV0IHNlcmlhbGl6ZWQgPSB7fTtcbiAgZm9yIChsZXQgW2tleSwgdmFsXSBvZiBlbnRyaWVzKSB7XG4gICAgaWYgKGlzUm91dGVFcnJvclJlc3BvbnNlKHZhbCkpIHtcbiAgICAgIHNlcmlhbGl6ZWRba2V5XSA9IHsgLi4udmFsLCBfX3R5cGU6IFwiUm91dGVFcnJvclJlc3BvbnNlXCIgfTtcbiAgICB9IGVsc2UgaWYgKHZhbCBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICBsZXQgc2FuaXRpemVkID0gc2FuaXRpemVFcnJvcih2YWwsIHNlcnZlck1vZGUpO1xuICAgICAgc2VyaWFsaXplZFtrZXldID0ge1xuICAgICAgICBtZXNzYWdlOiBzYW5pdGl6ZWQubWVzc2FnZSxcbiAgICAgICAgc3RhY2s6IHNhbml0aXplZC5zdGFjayxcbiAgICAgICAgX190eXBlOiBcIkVycm9yXCIsXG4gICAgICAgIC8vIElmIHRoaXMgaXMgYSBzdWJjbGFzcyAoaS5lLiwgUmVmZXJlbmNlRXJyb3IpLCBzZW5kIHVwIHRoZSB0eXBlIHNvIHdlXG4gICAgICAgIC8vIGNhbiByZS1jcmVhdGUgdGhlIHNhbWUgdHlwZSBkdXJpbmcgaHlkcmF0aW9uLiAgVGhpcyB3aWxsIG9ubHkgYXBwbHlcbiAgICAgICAgLy8gaW4gZGV2IG1vZGUgc2luY2UgYWxsIHByb2R1Y3Rpb24gZXJyb3JzIGFyZSBzYW5pdGl6ZWQgdG8gbm9ybWFsXG4gICAgICAgIC8vIEVycm9yIGluc3RhbmNlc1xuICAgICAgICAuLi5zYW5pdGl6ZWQubmFtZSAhPT0gXCJFcnJvclwiID8ge1xuICAgICAgICAgIF9fc3ViVHlwZTogc2FuaXRpemVkLm5hbWVcbiAgICAgICAgfSA6IHt9XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXJpYWxpemVkW2tleV0gPSB2YWw7XG4gICAgfVxuICB9XG4gIHJldHVybiBzZXJpYWxpemVkO1xufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvcm91dGVNYXRjaGluZy50c1xuZnVuY3Rpb24gbWF0Y2hTZXJ2ZXJSb3V0ZXMocm91dGVzLCBwYXRobmFtZSwgYmFzZW5hbWUpIHtcbiAgbGV0IG1hdGNoZXMgPSBtYXRjaFJvdXRlcyhcbiAgICByb3V0ZXMsXG4gICAgcGF0aG5hbWUsXG4gICAgYmFzZW5hbWVcbiAgKTtcbiAgaWYgKCFtYXRjaGVzKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIG1hdGNoZXMubWFwKChtYXRjaCkgPT4gKHtcbiAgICBwYXJhbXM6IG1hdGNoLnBhcmFtcyxcbiAgICBwYXRobmFtZTogbWF0Y2gucGF0aG5hbWUsXG4gICAgcm91dGU6IG1hdGNoLnJvdXRlXG4gIH0pKTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL2RhdGEudHNcbmFzeW5jIGZ1bmN0aW9uIGNhbGxSb3V0ZUhhbmRsZXIoaGFuZGxlciwgYXJncykge1xuICBsZXQgcmVzdWx0ID0gYXdhaXQgaGFuZGxlcih7XG4gICAgcmVxdWVzdDogc3RyaXBSb3V0ZXNQYXJhbShzdHJpcEluZGV4UGFyYW0yKGFyZ3MucmVxdWVzdCkpLFxuICAgIHBhcmFtczogYXJncy5wYXJhbXMsXG4gICAgY29udGV4dDogYXJncy5jb250ZXh0XG4gIH0pO1xuICBpZiAoaXNEYXRhV2l0aFJlc3BvbnNlSW5pdChyZXN1bHQpICYmIHJlc3VsdC5pbml0ICYmIHJlc3VsdC5pbml0LnN0YXR1cyAmJiBpc1JlZGlyZWN0U3RhdHVzQ29kZShyZXN1bHQuaW5pdC5zdGF0dXMpKSB7XG4gICAgdGhyb3cgbmV3IFJlc3BvbnNlKG51bGwsIHJlc3VsdC5pbml0KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gc3RyaXBJbmRleFBhcmFtMihyZXF1ZXN0KSB7XG4gIGxldCB1cmwgPSBuZXcgVVJMKHJlcXVlc3QudXJsKTtcbiAgbGV0IGluZGV4VmFsdWVzID0gdXJsLnNlYXJjaFBhcmFtcy5nZXRBbGwoXCJpbmRleFwiKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5kZWxldGUoXCJpbmRleFwiKTtcbiAgbGV0IGluZGV4VmFsdWVzVG9LZWVwID0gW107XG4gIGZvciAobGV0IGluZGV4VmFsdWUgb2YgaW5kZXhWYWx1ZXMpIHtcbiAgICBpZiAoaW5kZXhWYWx1ZSkge1xuICAgICAgaW5kZXhWYWx1ZXNUb0tlZXAucHVzaChpbmRleFZhbHVlKTtcbiAgICB9XG4gIH1cbiAgZm9yIChsZXQgdG9LZWVwIG9mIGluZGV4VmFsdWVzVG9LZWVwKSB7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoXCJpbmRleFwiLCB0b0tlZXApO1xuICB9XG4gIGxldCBpbml0ID0ge1xuICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgYm9keTogcmVxdWVzdC5ib2R5LFxuICAgIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycyxcbiAgICBzaWduYWw6IHJlcXVlc3Quc2lnbmFsXG4gIH07XG4gIGlmIChpbml0LmJvZHkpIHtcbiAgICBpbml0LmR1cGxleCA9IFwiaGFsZlwiO1xuICB9XG4gIHJldHVybiBuZXcgUmVxdWVzdCh1cmwuaHJlZiwgaW5pdCk7XG59XG5mdW5jdGlvbiBzdHJpcFJvdXRlc1BhcmFtKHJlcXVlc3QpIHtcbiAgbGV0IHVybCA9IG5ldyBVUkwocmVxdWVzdC51cmwpO1xuICB1cmwuc2VhcmNoUGFyYW1zLmRlbGV0ZShcIl9yb3V0ZXNcIik7XG4gIGxldCBpbml0ID0ge1xuICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgYm9keTogcmVxdWVzdC5ib2R5LFxuICAgIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycyxcbiAgICBzaWduYWw6IHJlcXVlc3Quc2lnbmFsXG4gIH07XG4gIGlmIChpbml0LmJvZHkpIHtcbiAgICBpbml0LmR1cGxleCA9IFwiaGFsZlwiO1xuICB9XG4gIHJldHVybiBuZXcgUmVxdWVzdCh1cmwuaHJlZiwgaW5pdCk7XG59XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS9pbnZhcmlhbnQudHNcbmZ1bmN0aW9uIGludmFyaWFudDModmFsdWUsIG1lc3NhZ2UpIHtcbiAgaWYgKHZhbHVlID09PSBmYWxzZSB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJUaGUgZm9sbG93aW5nIGVycm9yIGlzIGEgYnVnIGluIFJlYWN0IFJvdXRlcjsgcGxlYXNlIG9wZW4gYW4gaXNzdWUhIGh0dHBzOi8vZ2l0aHViLmNvbS9yZW1peC1ydW4vcmVhY3Qtcm91dGVyL2lzc3Vlcy9uZXcvY2hvb3NlXCJcbiAgICApO1xuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgfVxufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvcm91dGVzLnRzXG5mdW5jdGlvbiBncm91cFJvdXRlc0J5UGFyZW50SWQyKG1hbmlmZXN0KSB7XG4gIGxldCByb3V0ZXMgPSB7fTtcbiAgT2JqZWN0LnZhbHVlcyhtYW5pZmVzdCkuZm9yRWFjaCgocm91dGUpID0+IHtcbiAgICBpZiAocm91dGUpIHtcbiAgICAgIGxldCBwYXJlbnRJZCA9IHJvdXRlLnBhcmVudElkIHx8IFwiXCI7XG4gICAgICBpZiAoIXJvdXRlc1twYXJlbnRJZF0pIHtcbiAgICAgICAgcm91dGVzW3BhcmVudElkXSA9IFtdO1xuICAgICAgfVxuICAgICAgcm91dGVzW3BhcmVudElkXS5wdXNoKHJvdXRlKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcm91dGVzO1xufVxuZnVuY3Rpb24gY3JlYXRlUm91dGVzKG1hbmlmZXN0LCBwYXJlbnRJZCA9IFwiXCIsIHJvdXRlc0J5UGFyZW50SWQgPSBncm91cFJvdXRlc0J5UGFyZW50SWQyKG1hbmlmZXN0KSkge1xuICByZXR1cm4gKHJvdXRlc0J5UGFyZW50SWRbcGFyZW50SWRdIHx8IFtdKS5tYXAoKHJvdXRlKSA9PiAoe1xuICAgIC4uLnJvdXRlLFxuICAgIGNoaWxkcmVuOiBjcmVhdGVSb3V0ZXMobWFuaWZlc3QsIHJvdXRlLmlkLCByb3V0ZXNCeVBhcmVudElkKVxuICB9KSk7XG59XG5mdW5jdGlvbiBjcmVhdGVTdGF0aWNIYW5kbGVyRGF0YVJvdXRlcyhtYW5pZmVzdCwgZnV0dXJlLCBwYXJlbnRJZCA9IFwiXCIsIHJvdXRlc0J5UGFyZW50SWQgPSBncm91cFJvdXRlc0J5UGFyZW50SWQyKG1hbmlmZXN0KSkge1xuICByZXR1cm4gKHJvdXRlc0J5UGFyZW50SWRbcGFyZW50SWRdIHx8IFtdKS5tYXAoKHJvdXRlKSA9PiB7XG4gICAgbGV0IGNvbW1vblJvdXRlID0ge1xuICAgICAgLy8gQWx3YXlzIGluY2x1ZGUgcm9vdCBkdWUgdG8gZGVmYXVsdCBib3VuZGFyaWVzXG4gICAgICBoYXNFcnJvckJvdW5kYXJ5OiByb3V0ZS5pZCA9PT0gXCJyb290XCIgfHwgcm91dGUubW9kdWxlLkVycm9yQm91bmRhcnkgIT0gbnVsbCxcbiAgICAgIGlkOiByb3V0ZS5pZCxcbiAgICAgIHBhdGg6IHJvdXRlLnBhdGgsXG4gICAgICAvLyBOZWVkIHRvIHVzZSBSUidzIHZlcnNpb24gaW4gdGhlIHBhcmFtIHR5cGVkIGhlcmUgdG8gcGVybWl0IHRoZSBvcHRpb25hbFxuICAgICAgLy8gY29udGV4dCBldmVuIHRob3VnaCB3ZSBrbm93IGl0J2xsIGFsd2F5cyBiZSBwcm92aWRlZCBpbiByZW1peFxuICAgICAgbG9hZGVyOiByb3V0ZS5tb2R1bGUubG9hZGVyID8gYXN5bmMgKGFyZ3MpID0+IHtcbiAgICAgICAgaWYgKGFyZ3MucmVxdWVzdC5oZWFkZXJzLmhhcyhcIlgtUmVhY3QtUm91dGVyLVByZXJlbmRlci1EYXRhXCIpKSB7XG4gICAgICAgICAgY29uc3QgcHJlUmVuZGVyZWREYXRhID0gYXJncy5yZXF1ZXN0LmhlYWRlcnMuZ2V0KFxuICAgICAgICAgICAgXCJYLVJlYWN0LVJvdXRlci1QcmVyZW5kZXItRGF0YVwiXG4gICAgICAgICAgKTtcbiAgICAgICAgICBsZXQgZW5jb2RlZCA9IHByZVJlbmRlcmVkRGF0YSA/IGRlY29kZVVSSShwcmVSZW5kZXJlZERhdGEpIDogcHJlUmVuZGVyZWREYXRhO1xuICAgICAgICAgIGludmFyaWFudDMoZW5jb2RlZCwgXCJNaXNzaW5nIHByZXJlbmRlcmVkIGRhdGEgZm9yIHJvdXRlXCIpO1xuICAgICAgICAgIGxldCB1aW50OGFycmF5ID0gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKGVuY29kZWQpO1xuICAgICAgICAgIGxldCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgICAgICAgICAgc3RhcnQoY29udHJvbGxlcikge1xuICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUodWludDhhcnJheSk7XG4gICAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBsZXQgZGVjb2RlZCA9IGF3YWl0IGRlY29kZVZpYVR1cmJvU3RyZWFtKHN0cmVhbSwgZ2xvYmFsKTtcbiAgICAgICAgICBsZXQgZGF0YTIgPSBkZWNvZGVkLnZhbHVlO1xuICAgICAgICAgIGludmFyaWFudDMoXG4gICAgICAgICAgICBkYXRhMiAmJiByb3V0ZS5pZCBpbiBkYXRhMixcbiAgICAgICAgICAgIFwiVW5hYmxlIHRvIGRlY29kZSBwcmVyZW5kZXJlZCBkYXRhXCJcbiAgICAgICAgICApO1xuICAgICAgICAgIGxldCByZXN1bHQgPSBkYXRhMltyb3V0ZS5pZF07XG4gICAgICAgICAgaW52YXJpYW50MyhcImRhdGFcIiBpbiByZXN1bHQsIFwiVW5hYmxlIHRvIHByb2Nlc3MgcHJlcmVuZGVyZWQgZGF0YVwiKTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHZhbCA9IGF3YWl0IGNhbGxSb3V0ZUhhbmRsZXIocm91dGUubW9kdWxlLmxvYWRlciwgYXJncyk7XG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgICB9IDogdm9pZCAwLFxuICAgICAgYWN0aW9uOiByb3V0ZS5tb2R1bGUuYWN0aW9uID8gKGFyZ3MpID0+IGNhbGxSb3V0ZUhhbmRsZXIocm91dGUubW9kdWxlLmFjdGlvbiwgYXJncykgOiB2b2lkIDAsXG4gICAgICBoYW5kbGU6IHJvdXRlLm1vZHVsZS5oYW5kbGVcbiAgICB9O1xuICAgIHJldHVybiByb3V0ZS5pbmRleCA/IHtcbiAgICAgIGluZGV4OiB0cnVlLFxuICAgICAgLi4uY29tbW9uUm91dGVcbiAgICB9IDoge1xuICAgICAgY2FzZVNlbnNpdGl2ZTogcm91dGUuY2FzZVNlbnNpdGl2ZSxcbiAgICAgIGNoaWxkcmVuOiBjcmVhdGVTdGF0aWNIYW5kbGVyRGF0YVJvdXRlcyhcbiAgICAgICAgbWFuaWZlc3QsXG4gICAgICAgIGZ1dHVyZSxcbiAgICAgICAgcm91dGUuaWQsXG4gICAgICAgIHJvdXRlc0J5UGFyZW50SWRcbiAgICAgICksXG4gICAgICAuLi5jb21tb25Sb3V0ZVxuICAgIH07XG4gIH0pO1xufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvbWFya3VwLnRzXG52YXIgRVNDQVBFX0xPT0tVUDMgPSB7XG4gIFwiJlwiOiBcIlxcXFx1MDAyNlwiLFxuICBcIj5cIjogXCJcXFxcdTAwM2VcIixcbiAgXCI8XCI6IFwiXFxcXHUwMDNjXCIsXG4gIFwiXFx1MjAyOFwiOiBcIlxcXFx1MjAyOFwiLFxuICBcIlxcdTIwMjlcIjogXCJcXFxcdTIwMjlcIlxufTtcbnZhciBFU0NBUEVfUkVHRVgzID0gL1smPjxcXHUyMDI4XFx1MjAyOV0vZztcbmZ1bmN0aW9uIGVzY2FwZUh0bWwyKGh0bWwpIHtcbiAgcmV0dXJuIGh0bWwucmVwbGFjZShFU0NBUEVfUkVHRVgzLCAobWF0Y2gpID0+IEVTQ0FQRV9MT09LVVAzW21hdGNoXSk7XG59XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS9zZXJ2ZXJIYW5kb2ZmLnRzXG5mdW5jdGlvbiBjcmVhdGVTZXJ2ZXJIYW5kb2ZmU3RyaW5nKHNlcnZlckhhbmRvZmYpIHtcbiAgcmV0dXJuIGVzY2FwZUh0bWwyKEpTT04uc3RyaW5naWZ5KHNlcnZlckhhbmRvZmYpKTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL2Rldi50c1xudmFyIGdsb2JhbERldlNlcnZlckhvb2tzS2V5ID0gXCJfX3JlYWN0Um91dGVyRGV2U2VydmVySG9va3NcIjtcbmZ1bmN0aW9uIHNldERldlNlcnZlckhvb2tzKGRldlNlcnZlckhvb2tzKSB7XG4gIGdsb2JhbFRoaXNbZ2xvYmFsRGV2U2VydmVySG9va3NLZXldID0gZGV2U2VydmVySG9va3M7XG59XG5mdW5jdGlvbiBnZXREZXZTZXJ2ZXJIb29rcygpIHtcbiAgcmV0dXJuIGdsb2JhbFRoaXNbZ2xvYmFsRGV2U2VydmVySG9va3NLZXldO1xufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvc2luZ2xlLWZldGNoLnRzXG5pbXBvcnQgeyBlbmNvZGUgfSBmcm9tIFwidHVyYm8tc3RyZWFtXCI7XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS9oZWFkZXJzLnRzXG5pbXBvcnQgeyBzcGxpdENvb2tpZXNTdHJpbmcgfSBmcm9tIFwic2V0LWNvb2tpZS1wYXJzZXJcIjtcbmZ1bmN0aW9uIGdldERvY3VtZW50SGVhZGVycyhidWlsZCwgY29udGV4dCkge1xuICBsZXQgYm91bmRhcnlJZHggPSBjb250ZXh0LmVycm9ycyA/IGNvbnRleHQubWF0Y2hlcy5maW5kSW5kZXgoKG0pID0+IGNvbnRleHQuZXJyb3JzW20ucm91dGUuaWRdKSA6IC0xO1xuICBsZXQgbWF0Y2hlcyA9IGJvdW5kYXJ5SWR4ID49IDAgPyBjb250ZXh0Lm1hdGNoZXMuc2xpY2UoMCwgYm91bmRhcnlJZHggKyAxKSA6IGNvbnRleHQubWF0Y2hlcztcbiAgbGV0IGVycm9ySGVhZGVycztcbiAgaWYgKGJvdW5kYXJ5SWR4ID49IDApIHtcbiAgICBsZXQgeyBhY3Rpb25IZWFkZXJzLCBhY3Rpb25EYXRhLCBsb2FkZXJIZWFkZXJzLCBsb2FkZXJEYXRhIH0gPSBjb250ZXh0O1xuICAgIGNvbnRleHQubWF0Y2hlcy5zbGljZShib3VuZGFyeUlkeCkuc29tZSgobWF0Y2gpID0+IHtcbiAgICAgIGxldCBpZCA9IG1hdGNoLnJvdXRlLmlkO1xuICAgICAgaWYgKGFjdGlvbkhlYWRlcnNbaWRdICYmICghYWN0aW9uRGF0YSB8fCAhYWN0aW9uRGF0YS5oYXNPd25Qcm9wZXJ0eShpZCkpKSB7XG4gICAgICAgIGVycm9ySGVhZGVycyA9IGFjdGlvbkhlYWRlcnNbaWRdO1xuICAgICAgfSBlbHNlIGlmIChsb2FkZXJIZWFkZXJzW2lkXSAmJiAhbG9hZGVyRGF0YS5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcbiAgICAgICAgZXJyb3JIZWFkZXJzID0gbG9hZGVySGVhZGVyc1tpZF07XG4gICAgICB9XG4gICAgICByZXR1cm4gZXJyb3JIZWFkZXJzICE9IG51bGw7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIG1hdGNoZXMucmVkdWNlKChwYXJlbnRIZWFkZXJzLCBtYXRjaCwgaWR4KSA9PiB7XG4gICAgbGV0IHsgaWQgfSA9IG1hdGNoLnJvdXRlO1xuICAgIGxldCByb3V0ZSA9IGJ1aWxkLnJvdXRlc1tpZF07XG4gICAgaW52YXJpYW50Myhyb3V0ZSwgYFJvdXRlIHdpdGggaWQgXCIke2lkfVwiIG5vdCBmb3VuZCBpbiBidWlsZGApO1xuICAgIGxldCByb3V0ZU1vZHVsZSA9IHJvdXRlLm1vZHVsZTtcbiAgICBsZXQgbG9hZGVySGVhZGVycyA9IGNvbnRleHQubG9hZGVySGVhZGVyc1tpZF0gfHwgbmV3IEhlYWRlcnMoKTtcbiAgICBsZXQgYWN0aW9uSGVhZGVycyA9IGNvbnRleHQuYWN0aW9uSGVhZGVyc1tpZF0gfHwgbmV3IEhlYWRlcnMoKTtcbiAgICBsZXQgaW5jbHVkZUVycm9ySGVhZGVycyA9IGVycm9ySGVhZGVycyAhPSBudWxsICYmIGlkeCA9PT0gbWF0Y2hlcy5sZW5ndGggLSAxO1xuICAgIGxldCBpbmNsdWRlRXJyb3JDb29raWVzID0gaW5jbHVkZUVycm9ySGVhZGVycyAmJiBlcnJvckhlYWRlcnMgIT09IGxvYWRlckhlYWRlcnMgJiYgZXJyb3JIZWFkZXJzICE9PSBhY3Rpb25IZWFkZXJzO1xuICAgIGlmIChyb3V0ZU1vZHVsZS5oZWFkZXJzID09IG51bGwpIHtcbiAgICAgIGxldCBoZWFkZXJzMiA9IG5ldyBIZWFkZXJzKHBhcmVudEhlYWRlcnMpO1xuICAgICAgaWYgKGluY2x1ZGVFcnJvckNvb2tpZXMpIHtcbiAgICAgICAgcHJlcGVuZENvb2tpZXMoZXJyb3JIZWFkZXJzLCBoZWFkZXJzMik7XG4gICAgICB9XG4gICAgICBwcmVwZW5kQ29va2llcyhhY3Rpb25IZWFkZXJzLCBoZWFkZXJzMik7XG4gICAgICBwcmVwZW5kQ29va2llcyhsb2FkZXJIZWFkZXJzLCBoZWFkZXJzMik7XG4gICAgICByZXR1cm4gaGVhZGVyczI7XG4gICAgfVxuICAgIGxldCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoXG4gICAgICByb3V0ZU1vZHVsZS5oZWFkZXJzID8gdHlwZW9mIHJvdXRlTW9kdWxlLmhlYWRlcnMgPT09IFwiZnVuY3Rpb25cIiA/IHJvdXRlTW9kdWxlLmhlYWRlcnMoe1xuICAgICAgICBsb2FkZXJIZWFkZXJzLFxuICAgICAgICBwYXJlbnRIZWFkZXJzLFxuICAgICAgICBhY3Rpb25IZWFkZXJzLFxuICAgICAgICBlcnJvckhlYWRlcnM6IGluY2x1ZGVFcnJvckhlYWRlcnMgPyBlcnJvckhlYWRlcnMgOiB2b2lkIDBcbiAgICAgIH0pIDogcm91dGVNb2R1bGUuaGVhZGVycyA6IHZvaWQgMFxuICAgICk7XG4gICAgaWYgKGluY2x1ZGVFcnJvckNvb2tpZXMpIHtcbiAgICAgIHByZXBlbmRDb29raWVzKGVycm9ySGVhZGVycywgaGVhZGVycyk7XG4gICAgfVxuICAgIHByZXBlbmRDb29raWVzKGFjdGlvbkhlYWRlcnMsIGhlYWRlcnMpO1xuICAgIHByZXBlbmRDb29raWVzKGxvYWRlckhlYWRlcnMsIGhlYWRlcnMpO1xuICAgIHByZXBlbmRDb29raWVzKHBhcmVudEhlYWRlcnMsIGhlYWRlcnMpO1xuICAgIHJldHVybiBoZWFkZXJzO1xuICB9LCBuZXcgSGVhZGVycygpKTtcbn1cbmZ1bmN0aW9uIHByZXBlbmRDb29raWVzKHBhcmVudEhlYWRlcnMsIGNoaWxkSGVhZGVycykge1xuICBsZXQgcGFyZW50U2V0Q29va2llU3RyaW5nID0gcGFyZW50SGVhZGVycy5nZXQoXCJTZXQtQ29va2llXCIpO1xuICBpZiAocGFyZW50U2V0Q29va2llU3RyaW5nKSB7XG4gICAgbGV0IGNvb2tpZXMgPSBzcGxpdENvb2tpZXNTdHJpbmcocGFyZW50U2V0Q29va2llU3RyaW5nKTtcbiAgICBjb29raWVzLmZvckVhY2goKGNvb2tpZSkgPT4ge1xuICAgICAgY2hpbGRIZWFkZXJzLmFwcGVuZChcIlNldC1Db29raWVcIiwgY29va2llKTtcbiAgICB9KTtcbiAgfVxufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvc2luZ2xlLWZldGNoLnRzXG52YXIgU0lOR0xFX0ZFVENIX1JFRElSRUNUX1NUQVRVUyA9IDIwMjtcbmZ1bmN0aW9uIGdldFNpbmdsZUZldGNoRGF0YVN0cmF0ZWd5Mih7XG4gIGlzQWN0aW9uRGF0YVJlcXVlc3QsXG4gIGxvYWRSb3V0ZUlkc1xufSA9IHt9KSB7XG4gIHJldHVybiBhc3luYyAoeyByZXF1ZXN0LCBtYXRjaGVzIH0pID0+IHtcbiAgICBpZiAoaXNBY3Rpb25EYXRhUmVxdWVzdCAmJiByZXF1ZXN0Lm1ldGhvZCA9PT0gXCJHRVRcIikge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBsZXQgbWF0Y2hlc1RvTG9hZCA9IGxvYWRSb3V0ZUlkcyA/IG1hdGNoZXMuZmlsdGVyKChtKSA9PiBsb2FkUm91dGVJZHMuaW5jbHVkZXMobS5yb3V0ZS5pZCkpIDogbWF0Y2hlcztcbiAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgbWF0Y2hlc1RvTG9hZC5tYXAoKG1hdGNoKSA9PiBtYXRjaC5yZXNvbHZlKCkpXG4gICAgKTtcbiAgICByZXR1cm4gcmVzdWx0cy5yZWR1Y2UoXG4gICAgICAoYWNjLCByZXN1bHQsIGkpID0+IE9iamVjdC5hc3NpZ24oYWNjLCB7IFttYXRjaGVzVG9Mb2FkW2ldLnJvdXRlLmlkXTogcmVzdWx0IH0pLFxuICAgICAge31cbiAgICApO1xuICB9O1xufVxuYXN5bmMgZnVuY3Rpb24gc2luZ2xlRmV0Y2hBY3Rpb24oYnVpbGQsIHNlcnZlck1vZGUsIHN0YXRpY0hhbmRsZXIsIHJlcXVlc3QsIGhhbmRsZXJVcmwsIGxvYWRDb250ZXh0LCBoYW5kbGVFcnJvcikge1xuICB0cnkge1xuICAgIGxldCBoYW5kbGVyUmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGhhbmRsZXJVcmwsIHtcbiAgICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgICBib2R5OiByZXF1ZXN0LmJvZHksXG4gICAgICBoZWFkZXJzOiByZXF1ZXN0LmhlYWRlcnMsXG4gICAgICBzaWduYWw6IHJlcXVlc3Quc2lnbmFsLFxuICAgICAgLi4ucmVxdWVzdC5ib2R5ID8geyBkdXBsZXg6IFwiaGFsZlwiIH0gOiB2b2lkIDBcbiAgICB9KTtcbiAgICBsZXQgcmVzdWx0ID0gYXdhaXQgc3RhdGljSGFuZGxlci5xdWVyeShoYW5kbGVyUmVxdWVzdCwge1xuICAgICAgcmVxdWVzdENvbnRleHQ6IGxvYWRDb250ZXh0LFxuICAgICAgc2tpcExvYWRlckVycm9yQnViYmxpbmc6IHRydWUsXG4gICAgICBkYXRhU3RyYXRlZ3k6IGdldFNpbmdsZUZldGNoRGF0YVN0cmF0ZWd5Mih7XG4gICAgICAgIGlzQWN0aW9uRGF0YVJlcXVlc3Q6IHRydWVcbiAgICAgIH0pXG4gICAgfSk7XG4gICAgaWYgKGlzUmVzcG9uc2UocmVzdWx0KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVzdWx0OiBnZXRTaW5nbGVGZXRjaFJlZGlyZWN0KFxuICAgICAgICAgIHJlc3VsdC5zdGF0dXMsXG4gICAgICAgICAgcmVzdWx0LmhlYWRlcnMsXG4gICAgICAgICAgYnVpbGQuYmFzZW5hbWVcbiAgICAgICAgKSxcbiAgICAgICAgaGVhZGVyczogcmVzdWx0LmhlYWRlcnMsXG4gICAgICAgIHN0YXR1czogU0lOR0xFX0ZFVENIX1JFRElSRUNUX1NUQVRVU1xuICAgICAgfTtcbiAgICB9XG4gICAgbGV0IGNvbnRleHQgPSByZXN1bHQ7XG4gICAgbGV0IGhlYWRlcnMgPSBnZXREb2N1bWVudEhlYWRlcnMoYnVpbGQsIGNvbnRleHQpO1xuICAgIGlmIChpc1JlZGlyZWN0U3RhdHVzQ29kZShjb250ZXh0LnN0YXR1c0NvZGUpICYmIGhlYWRlcnMuaGFzKFwiTG9jYXRpb25cIikpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlc3VsdDogZ2V0U2luZ2xlRmV0Y2hSZWRpcmVjdChcbiAgICAgICAgICBjb250ZXh0LnN0YXR1c0NvZGUsXG4gICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgICBidWlsZC5iYXNlbmFtZVxuICAgICAgICApLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgICBzdGF0dXM6IFNJTkdMRV9GRVRDSF9SRURJUkVDVF9TVEFUVVNcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChjb250ZXh0LmVycm9ycykge1xuICAgICAgT2JqZWN0LnZhbHVlcyhjb250ZXh0LmVycm9ycykuZm9yRWFjaCgoZXJyKSA9PiB7XG4gICAgICAgIGlmICghaXNSb3V0ZUVycm9yUmVzcG9uc2UoZXJyKSB8fCBlcnIuZXJyb3IpIHtcbiAgICAgICAgICBoYW5kbGVFcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNvbnRleHQuZXJyb3JzID0gc2FuaXRpemVFcnJvcnMoY29udGV4dC5lcnJvcnMsIHNlcnZlck1vZGUpO1xuICAgIH1cbiAgICBsZXQgc2luZ2xlRmV0Y2hSZXN1bHQ7XG4gICAgaWYgKGNvbnRleHQuZXJyb3JzKSB7XG4gICAgICBzaW5nbGVGZXRjaFJlc3VsdCA9IHsgZXJyb3I6IE9iamVjdC52YWx1ZXMoY29udGV4dC5lcnJvcnMpWzBdIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHNpbmdsZUZldGNoUmVzdWx0ID0geyBkYXRhOiBPYmplY3QudmFsdWVzKGNvbnRleHQuYWN0aW9uRGF0YSB8fCB7fSlbMF0gfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlc3VsdDogc2luZ2xlRmV0Y2hSZXN1bHQsXG4gICAgICBoZWFkZXJzLFxuICAgICAgc3RhdHVzOiBjb250ZXh0LnN0YXR1c0NvZGVcbiAgICB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGhhbmRsZUVycm9yKGVycm9yKTtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzdWx0OiB7IGVycm9yIH0sXG4gICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycygpLFxuICAgICAgc3RhdHVzOiA1MDBcbiAgICB9O1xuICB9XG59XG5hc3luYyBmdW5jdGlvbiBzaW5nbGVGZXRjaExvYWRlcnMoYnVpbGQsIHNlcnZlck1vZGUsIHN0YXRpY0hhbmRsZXIsIHJlcXVlc3QsIGhhbmRsZXJVcmwsIGxvYWRDb250ZXh0LCBoYW5kbGVFcnJvcikge1xuICB0cnkge1xuICAgIGxldCBoYW5kbGVyUmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGhhbmRsZXJVcmwsIHtcbiAgICAgIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycyxcbiAgICAgIHNpZ25hbDogcmVxdWVzdC5zaWduYWxcbiAgICB9KTtcbiAgICBsZXQgbG9hZFJvdXRlSWRzID0gbmV3IFVSTChyZXF1ZXN0LnVybCkuc2VhcmNoUGFyYW1zLmdldChcIl9yb3V0ZXNcIik/LnNwbGl0KFwiLFwiKSB8fCB2b2lkIDA7XG4gICAgbGV0IHJlc3VsdCA9IGF3YWl0IHN0YXRpY0hhbmRsZXIucXVlcnkoaGFuZGxlclJlcXVlc3QsIHtcbiAgICAgIHJlcXVlc3RDb250ZXh0OiBsb2FkQ29udGV4dCxcbiAgICAgIHNraXBMb2FkZXJFcnJvckJ1YmJsaW5nOiB0cnVlLFxuICAgICAgZGF0YVN0cmF0ZWd5OiBnZXRTaW5nbGVGZXRjaERhdGFTdHJhdGVneTIoe1xuICAgICAgICBsb2FkUm91dGVJZHNcbiAgICAgIH0pXG4gICAgfSk7XG4gICAgaWYgKGlzUmVzcG9uc2UocmVzdWx0KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgW1NpbmdsZUZldGNoUmVkaXJlY3RTeW1ib2xdOiBnZXRTaW5nbGVGZXRjaFJlZGlyZWN0KFxuICAgICAgICAgICAgcmVzdWx0LnN0YXR1cyxcbiAgICAgICAgICAgIHJlc3VsdC5oZWFkZXJzLFxuICAgICAgICAgICAgYnVpbGQuYmFzZW5hbWVcbiAgICAgICAgICApXG4gICAgICAgIH0sXG4gICAgICAgIGhlYWRlcnM6IHJlc3VsdC5oZWFkZXJzLFxuICAgICAgICBzdGF0dXM6IFNJTkdMRV9GRVRDSF9SRURJUkVDVF9TVEFUVVNcbiAgICAgIH07XG4gICAgfVxuICAgIGxldCBjb250ZXh0ID0gcmVzdWx0O1xuICAgIGxldCBoZWFkZXJzID0gZ2V0RG9jdW1lbnRIZWFkZXJzKGJ1aWxkLCBjb250ZXh0KTtcbiAgICBpZiAoaXNSZWRpcmVjdFN0YXR1c0NvZGUoY29udGV4dC5zdGF0dXNDb2RlKSAmJiBoZWFkZXJzLmhhcyhcIkxvY2F0aW9uXCIpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICBbU2luZ2xlRmV0Y2hSZWRpcmVjdFN5bWJvbF06IGdldFNpbmdsZUZldGNoUmVkaXJlY3QoXG4gICAgICAgICAgICBjb250ZXh0LnN0YXR1c0NvZGUsXG4gICAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgICAgYnVpbGQuYmFzZW5hbWVcbiAgICAgICAgICApXG4gICAgICAgIH0sXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIHN0YXR1czogU0lOR0xFX0ZFVENIX1JFRElSRUNUX1NUQVRVU1xuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQuZXJyb3JzKSB7XG4gICAgICBPYmplY3QudmFsdWVzKGNvbnRleHQuZXJyb3JzKS5mb3JFYWNoKChlcnIpID0+IHtcbiAgICAgICAgaWYgKCFpc1JvdXRlRXJyb3JSZXNwb25zZShlcnIpIHx8IGVyci5lcnJvcikge1xuICAgICAgICAgIGhhbmRsZUVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY29udGV4dC5lcnJvcnMgPSBzYW5pdGl6ZUVycm9ycyhjb250ZXh0LmVycm9ycywgc2VydmVyTW9kZSk7XG4gICAgfVxuICAgIGxldCByZXN1bHRzID0ge307XG4gICAgbGV0IGxvYWRlZE1hdGNoZXMgPSBsb2FkUm91dGVJZHMgPyBjb250ZXh0Lm1hdGNoZXMuZmlsdGVyKFxuICAgICAgKG0pID0+IG0ucm91dGUubG9hZGVyICYmIGxvYWRSb3V0ZUlkcy5pbmNsdWRlcyhtLnJvdXRlLmlkKVxuICAgICkgOiBjb250ZXh0Lm1hdGNoZXM7XG4gICAgbG9hZGVkTWF0Y2hlcy5mb3JFYWNoKChtKSA9PiB7XG4gICAgICBsZXQgeyBpZCB9ID0gbS5yb3V0ZTtcbiAgICAgIGlmIChjb250ZXh0LmVycm9ycyAmJiBjb250ZXh0LmVycm9ycy5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcbiAgICAgICAgcmVzdWx0c1tpZF0gPSB7IGVycm9yOiBjb250ZXh0LmVycm9yc1tpZF0gfTtcbiAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5sb2FkZXJEYXRhLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgICAgICByZXN1bHRzW2lkXSA9IHsgZGF0YTogY29udGV4dC5sb2FkZXJEYXRhW2lkXSB9O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICByZXN1bHQ6IHJlc3VsdHMsXG4gICAgICBoZWFkZXJzLFxuICAgICAgc3RhdHVzOiBjb250ZXh0LnN0YXR1c0NvZGVcbiAgICB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGhhbmRsZUVycm9yKGVycm9yKTtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzdWx0OiB7IHJvb3Q6IHsgZXJyb3IgfSB9LFxuICAgICAgaGVhZGVyczogbmV3IEhlYWRlcnMoKSxcbiAgICAgIHN0YXR1czogNTAwXG4gICAgfTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0U2luZ2xlRmV0Y2hSZWRpcmVjdChzdGF0dXMsIGhlYWRlcnMsIGJhc2VuYW1lKSB7XG4gIGxldCByZWRpcmVjdDIgPSBoZWFkZXJzLmdldChcIkxvY2F0aW9uXCIpO1xuICBpZiAoYmFzZW5hbWUpIHtcbiAgICByZWRpcmVjdDIgPSBzdHJpcEJhc2VuYW1lKHJlZGlyZWN0MiwgYmFzZW5hbWUpIHx8IHJlZGlyZWN0MjtcbiAgfVxuICByZXR1cm4ge1xuICAgIHJlZGlyZWN0OiByZWRpcmVjdDIsXG4gICAgc3RhdHVzLFxuICAgIHJldmFsaWRhdGU6IChcbiAgICAgIC8vIFRlY2huaWNhbGx5IFgtUmVtaXgtUmV2YWxpZGF0ZSBpc24ndCBuZWVkZWQgaGVyZSAtIHRoYXQgd2FzIGFuIGltcGxlbWVudGF0aW9uXG4gICAgICAvLyBkZXRhaWwgb2YgP19kYXRhIHJlcXVlc3RzIGFzIG91ciB3YXkgdG8gdGVsbCB0aGUgZnJvbnQgZW5kIHRvIHJldmFsaWRhdGUgd2hlblxuICAgICAgLy8gd2UgZGlkbid0IGhhdmUgYSByZXNwb25zZSBib2R5IHRvIGluY2x1ZGUgdGhhdCBpbmZvcm1hdGlvbiBpbi5cbiAgICAgIC8vIFdpdGggc2luZ2xlIGZldGNoLCB3ZSB0ZWxsIHRoZSBmcm9udCBlbmQgdmlhIHRoaXMgcmV2YWxpZGF0ZSBib29sZWFuIGZpZWxkLlxuICAgICAgLy8gSG93ZXZlciwgd2UncmUgcmVzcGVjdGluZyBpdCBmb3Igbm93IGJlY2F1c2UgaXQgbWF5IGJlIHNvbWV0aGluZyBmb2xrcyBoYXZlXG4gICAgICAvLyB1c2VkIGluIHRoZWlyIG93biByZXNwb25zZXNcbiAgICAgIC8vIFRPRE8odjMpOiBDb25zaWRlciByZW1vdmluZyBvciBtYWtpbmcgdGhpcyBvZmZpY2lhbCBwdWJsaWMgQVBJXG4gICAgICBoZWFkZXJzLmhhcyhcIlgtUmVtaXgtUmV2YWxpZGF0ZVwiKSB8fCBoZWFkZXJzLmhhcyhcIlNldC1Db29raWVcIilcbiAgICApLFxuICAgIHJlbG9hZDogaGVhZGVycy5oYXMoXCJYLVJlbWl4LVJlbG9hZC1Eb2N1bWVudFwiKSxcbiAgICByZXBsYWNlOiBoZWFkZXJzLmhhcyhcIlgtUmVtaXgtUmVwbGFjZVwiKVxuICB9O1xufVxuZnVuY3Rpb24gZW5jb2RlVmlhVHVyYm9TdHJlYW0oZGF0YTIsIHJlcXVlc3RTaWduYWwsIHN0cmVhbVRpbWVvdXQsIHNlcnZlck1vZGUpIHtcbiAgbGV0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIGxldCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KFxuICAgICgpID0+IGNvbnRyb2xsZXIuYWJvcnQobmV3IEVycm9yKFwiU2VydmVyIFRpbWVvdXRcIikpLFxuICAgIHR5cGVvZiBzdHJlYW1UaW1lb3V0ID09PSBcIm51bWJlclwiID8gc3RyZWFtVGltZW91dCA6IDQ5NTBcbiAgKTtcbiAgcmVxdWVzdFNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCkpO1xuICByZXR1cm4gZW5jb2RlKGRhdGEyLCB7XG4gICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICBwbHVnaW5zOiBbXG4gICAgICAodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBsZXQgeyBuYW1lLCBtZXNzYWdlLCBzdGFjayB9ID0gc2VydmVyTW9kZSA9PT0gXCJwcm9kdWN0aW9uXCIgLyogUHJvZHVjdGlvbiAqLyA/IHNhbml0aXplRXJyb3IodmFsdWUsIHNlcnZlck1vZGUpIDogdmFsdWU7XG4gICAgICAgICAgcmV0dXJuIFtcIlNhbml0aXplZEVycm9yXCIsIG5hbWUsIG1lc3NhZ2UsIHN0YWNrXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBFcnJvclJlc3BvbnNlSW1wbCkge1xuICAgICAgICAgIGxldCB7IGRhdGE6IGRhdGEzLCBzdGF0dXMsIHN0YXR1c1RleHQgfSA9IHZhbHVlO1xuICAgICAgICAgIHJldHVybiBbXCJFcnJvclJlc3BvbnNlXCIsIGRhdGEzLCBzdGF0dXMsIHN0YXR1c1RleHRdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgU2luZ2xlRmV0Y2hSZWRpcmVjdFN5bWJvbCBpbiB2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiBbXCJTaW5nbGVGZXRjaFJlZGlyZWN0XCIsIHZhbHVlW1NpbmdsZUZldGNoUmVkaXJlY3RTeW1ib2xdXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF0sXG4gICAgcG9zdFBsdWdpbnM6IFtcbiAgICAgICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIpIHJldHVybjtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBcIlNpbmdsZUZldGNoQ2xhc3NJbnN0YW5jZVwiLFxuICAgICAgICAgIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh2YWx1ZSkpXG4gICAgICAgIF07XG4gICAgICB9LFxuICAgICAgKCkgPT4gW1wiU2luZ2xlRmV0Y2hGYWxsYmFja1wiXVxuICAgIF1cbiAgfSk7XG59XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS9zZXJ2ZXIudHNcbmZ1bmN0aW9uIGRlcml2ZShidWlsZCwgbW9kZSkge1xuICBsZXQgcm91dGVzID0gY3JlYXRlUm91dGVzKGJ1aWxkLnJvdXRlcyk7XG4gIGxldCBkYXRhUm91dGVzID0gY3JlYXRlU3RhdGljSGFuZGxlckRhdGFSb3V0ZXMoYnVpbGQucm91dGVzLCBidWlsZC5mdXR1cmUpO1xuICBsZXQgc2VydmVyTW9kZSA9IGlzU2VydmVyTW9kZShtb2RlKSA/IG1vZGUgOiBcInByb2R1Y3Rpb25cIiAvKiBQcm9kdWN0aW9uICovO1xuICBsZXQgc3RhdGljSGFuZGxlciA9IGNyZWF0ZVN0YXRpY0hhbmRsZXIoZGF0YVJvdXRlcywge1xuICAgIGJhc2VuYW1lOiBidWlsZC5iYXNlbmFtZVxuICB9KTtcbiAgbGV0IGVycm9ySGFuZGxlciA9IGJ1aWxkLmVudHJ5Lm1vZHVsZS5oYW5kbGVFcnJvciB8fCAoKGVycm9yLCB7IHJlcXVlc3QgfSkgPT4ge1xuICAgIGlmIChzZXJ2ZXJNb2RlICE9PSBcInRlc3RcIiAvKiBUZXN0ICovICYmICFyZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRoaXMgaXMgXCJwcml2YXRlXCIgZnJvbSB1c2VycyBidXQgaW50ZW5kZWQgZm9yIGludGVybmFsIHVzZVxuICAgICAgICBpc1JvdXRlRXJyb3JSZXNwb25zZShlcnJvcikgJiYgZXJyb3IuZXJyb3IgPyBlcnJvci5lcnJvciA6IGVycm9yXG4gICAgICApO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB7XG4gICAgcm91dGVzLFxuICAgIGRhdGFSb3V0ZXMsXG4gICAgc2VydmVyTW9kZSxcbiAgICBzdGF0aWNIYW5kbGVyLFxuICAgIGVycm9ySGFuZGxlclxuICB9O1xufVxudmFyIGNyZWF0ZVJlcXVlc3RIYW5kbGVyID0gKGJ1aWxkLCBtb2RlKSA9PiB7XG4gIGxldCBfYnVpbGQ7XG4gIGxldCByb3V0ZXM7XG4gIGxldCBzZXJ2ZXJNb2RlO1xuICBsZXQgc3RhdGljSGFuZGxlcjtcbiAgbGV0IGVycm9ySGFuZGxlcjtcbiAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uIHJlcXVlc3RIYW5kbGVyKHJlcXVlc3QsIGxvYWRDb250ZXh0ID0ge30pIHtcbiAgICBfYnVpbGQgPSB0eXBlb2YgYnVpbGQgPT09IFwiZnVuY3Rpb25cIiA/IGF3YWl0IGJ1aWxkKCkgOiBidWlsZDtcbiAgICBpZiAodHlwZW9mIGJ1aWxkID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGxldCBkZXJpdmVkID0gZGVyaXZlKF9idWlsZCwgbW9kZSk7XG4gICAgICByb3V0ZXMgPSBkZXJpdmVkLnJvdXRlcztcbiAgICAgIHNlcnZlck1vZGUgPSBkZXJpdmVkLnNlcnZlck1vZGU7XG4gICAgICBzdGF0aWNIYW5kbGVyID0gZGVyaXZlZC5zdGF0aWNIYW5kbGVyO1xuICAgICAgZXJyb3JIYW5kbGVyID0gZGVyaXZlZC5lcnJvckhhbmRsZXI7XG4gICAgfSBlbHNlIGlmICghcm91dGVzIHx8ICFzZXJ2ZXJNb2RlIHx8ICFzdGF0aWNIYW5kbGVyIHx8ICFlcnJvckhhbmRsZXIpIHtcbiAgICAgIGxldCBkZXJpdmVkID0gZGVyaXZlKF9idWlsZCwgbW9kZSk7XG4gICAgICByb3V0ZXMgPSBkZXJpdmVkLnJvdXRlcztcbiAgICAgIHNlcnZlck1vZGUgPSBkZXJpdmVkLnNlcnZlck1vZGU7XG4gICAgICBzdGF0aWNIYW5kbGVyID0gZGVyaXZlZC5zdGF0aWNIYW5kbGVyO1xuICAgICAgZXJyb3JIYW5kbGVyID0gZGVyaXZlZC5lcnJvckhhbmRsZXI7XG4gICAgfVxuICAgIGxldCB1cmwgPSBuZXcgVVJMKHJlcXVlc3QudXJsKTtcbiAgICBsZXQgcGFyYW1zID0ge307XG4gICAgbGV0IGhhbmRsZUVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgICBpZiAobW9kZSA9PT0gXCJkZXZlbG9wbWVudFwiIC8qIERldmVsb3BtZW50ICovKSB7XG4gICAgICAgIGdldERldlNlcnZlckhvb2tzKCk/LnByb2Nlc3NSZXF1ZXN0RXJyb3I/LihlcnJvcik7XG4gICAgICB9XG4gICAgICBlcnJvckhhbmRsZXIoZXJyb3IsIHtcbiAgICAgICAgY29udGV4dDogbG9hZENvbnRleHQsXG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgcmVxdWVzdFxuICAgICAgfSk7XG4gICAgfTtcbiAgICBsZXQgbWFuaWZlc3RVcmwgPSBgJHtfYnVpbGQuYmFzZW5hbWUgPz8gXCIvXCJ9L19fbWFuaWZlc3RgLnJlcGxhY2UoXG4gICAgICAvXFwvKy9nLFxuICAgICAgXCIvXCJcbiAgICApO1xuICAgIGlmICh1cmwucGF0aG5hbWUgPT09IG1hbmlmZXN0VXJsKSB7XG4gICAgICB0cnkge1xuICAgICAgICBsZXQgcmVzID0gYXdhaXQgaGFuZGxlTWFuaWZlc3RSZXF1ZXN0KF9idWlsZCwgcm91dGVzLCB1cmwpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBoYW5kbGVFcnJvcihlKTtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShcIlVua25vd24gU2VydmVyIEVycm9yXCIsIHsgc3RhdHVzOiA1MDAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBtYXRjaGVzID0gbWF0Y2hTZXJ2ZXJSb3V0ZXMocm91dGVzLCB1cmwucGF0aG5hbWUsIF9idWlsZC5iYXNlbmFtZSk7XG4gICAgaWYgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICBPYmplY3QuYXNzaWduKHBhcmFtcywgbWF0Y2hlc1swXS5wYXJhbXMpO1xuICAgIH1cbiAgICBsZXQgcmVzcG9uc2U7XG4gICAgaWYgKHVybC5wYXRobmFtZS5lbmRzV2l0aChcIi5kYXRhXCIpKSB7XG4gICAgICBsZXQgaGFuZGxlclVybCA9IG5ldyBVUkwocmVxdWVzdC51cmwpO1xuICAgICAgaGFuZGxlclVybC5wYXRobmFtZSA9IGhhbmRsZXJVcmwucGF0aG5hbWUucmVwbGFjZSgvXFwuZGF0YSQvLCBcIlwiKS5yZXBsYWNlKC9eXFwvX3Jvb3QkLywgXCIvXCIpO1xuICAgICAgbGV0IHNpbmdsZUZldGNoTWF0Y2hlcyA9IG1hdGNoU2VydmVyUm91dGVzKFxuICAgICAgICByb3V0ZXMsXG4gICAgICAgIGhhbmRsZXJVcmwucGF0aG5hbWUsXG4gICAgICAgIF9idWlsZC5iYXNlbmFtZVxuICAgICAgKTtcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgaGFuZGxlU2luZ2xlRmV0Y2hSZXF1ZXN0KFxuICAgICAgICBzZXJ2ZXJNb2RlLFxuICAgICAgICBfYnVpbGQsXG4gICAgICAgIHN0YXRpY0hhbmRsZXIsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIGhhbmRsZXJVcmwsXG4gICAgICAgIGxvYWRDb250ZXh0LFxuICAgICAgICBoYW5kbGVFcnJvclxuICAgICAgKTtcbiAgICAgIGlmIChfYnVpbGQuZW50cnkubW9kdWxlLmhhbmRsZURhdGFSZXF1ZXN0KSB7XG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgX2J1aWxkLmVudHJ5Lm1vZHVsZS5oYW5kbGVEYXRhUmVxdWVzdChyZXNwb25zZSwge1xuICAgICAgICAgIGNvbnRleHQ6IGxvYWRDb250ZXh0LFxuICAgICAgICAgIHBhcmFtczogc2luZ2xlRmV0Y2hNYXRjaGVzID8gc2luZ2xlRmV0Y2hNYXRjaGVzWzBdLnBhcmFtcyA6IHt9LFxuICAgICAgICAgIHJlcXVlc3RcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpc1JlZGlyZWN0UmVzcG9uc2UocmVzcG9uc2UpKSB7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGdldFNpbmdsZUZldGNoUmVkaXJlY3QoXG4gICAgICAgICAgICByZXNwb25zZS5zdGF0dXMsXG4gICAgICAgICAgICByZXNwb25zZS5oZWFkZXJzLFxuICAgICAgICAgICAgX2J1aWxkLmJhc2VuYW1lXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAocmVxdWVzdC5tZXRob2QgPT09IFwiR0VUXCIpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgW1NpbmdsZUZldGNoUmVkaXJlY3RTeW1ib2xdOiByZXN1bHRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBoZWFkZXJzID0gbmV3IEhlYWRlcnMocmVzcG9uc2UuaGVhZGVycyk7XG4gICAgICAgICAgaGVhZGVycy5zZXQoXCJDb250ZW50LVR5cGVcIiwgXCJ0ZXh0L3gtc2NyaXB0XCIpO1xuICAgICAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgICAgICAgICBlbmNvZGVWaWFUdXJib1N0cmVhbShcbiAgICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgICAgICByZXF1ZXN0LnNpZ25hbCxcbiAgICAgICAgICAgICAgX2J1aWxkLmVudHJ5Lm1vZHVsZS5zdHJlYW1UaW1lb3V0LFxuICAgICAgICAgICAgICBzZXJ2ZXJNb2RlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdGF0dXM6IFNJTkdMRV9GRVRDSF9SRURJUkVDVF9TVEFUVVMsXG4gICAgICAgICAgICAgIGhlYWRlcnNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChtYXRjaGVzICYmIG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXS5yb3V0ZS5tb2R1bGUuZGVmYXVsdCA9PSBudWxsICYmIG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXS5yb3V0ZS5tb2R1bGUuRXJyb3JCb3VuZGFyeSA9PSBudWxsKSB7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IGhhbmRsZVJlc291cmNlUmVxdWVzdChcbiAgICAgICAgc2VydmVyTW9kZSxcbiAgICAgICAgc3RhdGljSGFuZGxlcixcbiAgICAgICAgbWF0Y2hlcy5zbGljZSgtMSlbMF0ucm91dGUuaWQsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIGxvYWRDb250ZXh0LFxuICAgICAgICBoYW5kbGVFcnJvclxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGNyaXRpY2FsQ3NzID0gbW9kZSA9PT0gXCJkZXZlbG9wbWVudFwiIC8qIERldmVsb3BtZW50ICovID8gYXdhaXQgZ2V0RGV2U2VydmVySG9va3MoKT8uZ2V0Q3JpdGljYWxDc3M/LihfYnVpbGQsIHVybC5wYXRobmFtZSkgOiB2b2lkIDA7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IGhhbmRsZURvY3VtZW50UmVxdWVzdChcbiAgICAgICAgc2VydmVyTW9kZSxcbiAgICAgICAgX2J1aWxkLFxuICAgICAgICBzdGF0aWNIYW5kbGVyLFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBsb2FkQ29udGV4dCxcbiAgICAgICAgaGFuZGxlRXJyb3IsXG4gICAgICAgIGNyaXRpY2FsQ3NzXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAocmVxdWVzdC5tZXRob2QgPT09IFwiSEVBRFwiKSB7XG4gICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHtcbiAgICAgICAgaGVhZGVyczogcmVzcG9uc2UuaGVhZGVycyxcbiAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1c1RleHRcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH07XG59O1xuYXN5bmMgZnVuY3Rpb24gaGFuZGxlTWFuaWZlc3RSZXF1ZXN0KGJ1aWxkLCByb3V0ZXMsIHVybCkge1xuICBsZXQgcGF0Y2hlcyA9IHt9O1xuICBpZiAodXJsLnNlYXJjaFBhcmFtcy5oYXMoXCJwXCIpKSB7XG4gICAgZm9yIChsZXQgcGF0aCBvZiB1cmwuc2VhcmNoUGFyYW1zLmdldEFsbChcInBcIikpIHtcbiAgICAgIGxldCBtYXRjaGVzID0gbWF0Y2hTZXJ2ZXJSb3V0ZXMocm91dGVzLCBwYXRoLCBidWlsZC5iYXNlbmFtZSk7XG4gICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICBmb3IgKGxldCBtYXRjaCBvZiBtYXRjaGVzKSB7XG4gICAgICAgICAgbGV0IHJvdXRlSWQgPSBtYXRjaC5yb3V0ZS5pZDtcbiAgICAgICAgICBsZXQgcm91dGUgPSBidWlsZC5hc3NldHMucm91dGVzW3JvdXRlSWRdO1xuICAgICAgICAgIGlmIChyb3V0ZSkge1xuICAgICAgICAgICAgcGF0Y2hlc1tyb3V0ZUlkXSA9IHJvdXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gUmVzcG9uc2UuanNvbihwYXRjaGVzLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ2FjaGUtQ29udHJvbFwiOiBcInB1YmxpYywgbWF4LWFnZT0zMTUzNjAwMCwgaW1tdXRhYmxlXCJcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gbmV3IFJlc3BvbnNlKFwiSW52YWxpZCBSZXF1ZXN0XCIsIHsgc3RhdHVzOiA0MDAgfSk7XG59XG5hc3luYyBmdW5jdGlvbiBoYW5kbGVTaW5nbGVGZXRjaFJlcXVlc3Qoc2VydmVyTW9kZSwgYnVpbGQsIHN0YXRpY0hhbmRsZXIsIHJlcXVlc3QsIGhhbmRsZXJVcmwsIGxvYWRDb250ZXh0LCBoYW5kbGVFcnJvcikge1xuICBsZXQgeyByZXN1bHQsIGhlYWRlcnMsIHN0YXR1cyB9ID0gcmVxdWVzdC5tZXRob2QgIT09IFwiR0VUXCIgPyBhd2FpdCBzaW5nbGVGZXRjaEFjdGlvbihcbiAgICBidWlsZCxcbiAgICBzZXJ2ZXJNb2RlLFxuICAgIHN0YXRpY0hhbmRsZXIsXG4gICAgcmVxdWVzdCxcbiAgICBoYW5kbGVyVXJsLFxuICAgIGxvYWRDb250ZXh0LFxuICAgIGhhbmRsZUVycm9yXG4gICkgOiBhd2FpdCBzaW5nbGVGZXRjaExvYWRlcnMoXG4gICAgYnVpbGQsXG4gICAgc2VydmVyTW9kZSxcbiAgICBzdGF0aWNIYW5kbGVyLFxuICAgIHJlcXVlc3QsXG4gICAgaGFuZGxlclVybCxcbiAgICBsb2FkQ29udGV4dCxcbiAgICBoYW5kbGVFcnJvclxuICApO1xuICBsZXQgcmVzdWx0SGVhZGVycyA9IG5ldyBIZWFkZXJzKGhlYWRlcnMpO1xuICByZXN1bHRIZWFkZXJzLnNldChcIlgtUmVtaXgtUmVzcG9uc2VcIiwgXCJ5ZXNcIik7XG4gIGlmIChzdGF0dXMgPT09IDMwNCkge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UobnVsbCwgeyBzdGF0dXM6IDMwNCwgaGVhZGVyczogcmVzdWx0SGVhZGVycyB9KTtcbiAgfVxuICByZXN1bHRIZWFkZXJzLnNldChcIkNvbnRlbnQtVHlwZVwiLCBcInRleHQveC1zY3JpcHRcIik7XG4gIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgZW5jb2RlVmlhVHVyYm9TdHJlYW0oXG4gICAgICByZXN1bHQsXG4gICAgICByZXF1ZXN0LnNpZ25hbCxcbiAgICAgIGJ1aWxkLmVudHJ5Lm1vZHVsZS5zdHJlYW1UaW1lb3V0LFxuICAgICAgc2VydmVyTW9kZVxuICAgICksXG4gICAge1xuICAgICAgc3RhdHVzOiBzdGF0dXMgfHwgMjAwLFxuICAgICAgaGVhZGVyczogcmVzdWx0SGVhZGVyc1xuICAgIH1cbiAgKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZURvY3VtZW50UmVxdWVzdChzZXJ2ZXJNb2RlLCBidWlsZCwgc3RhdGljSGFuZGxlciwgcmVxdWVzdCwgbG9hZENvbnRleHQsIGhhbmRsZUVycm9yLCBjcml0aWNhbENzcykge1xuICBsZXQgY29udGV4dDtcbiAgdHJ5IHtcbiAgICBjb250ZXh0ID0gYXdhaXQgc3RhdGljSGFuZGxlci5xdWVyeShyZXF1ZXN0LCB7XG4gICAgICByZXF1ZXN0Q29udGV4dDogbG9hZENvbnRleHRcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBoYW5kbGVFcnJvcihlcnJvcik7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7IHN0YXR1czogNTAwIH0pO1xuICB9XG4gIGlmIChpc1Jlc3BvbnNlKGNvbnRleHQpKSB7XG4gICAgcmV0dXJuIGNvbnRleHQ7XG4gIH1cbiAgbGV0IGhlYWRlcnMgPSBnZXREb2N1bWVudEhlYWRlcnMoYnVpbGQsIGNvbnRleHQpO1xuICBpZiAoY29udGV4dC5zdGF0dXNDb2RlID09PSAzMDQpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHsgc3RhdHVzOiAzMDQsIGhlYWRlcnMgfSk7XG4gIH1cbiAgaWYgKGNvbnRleHQuZXJyb3JzKSB7XG4gICAgT2JqZWN0LnZhbHVlcyhjb250ZXh0LmVycm9ycykuZm9yRWFjaCgoZXJyKSA9PiB7XG4gICAgICBpZiAoIWlzUm91dGVFcnJvclJlc3BvbnNlKGVycikgfHwgZXJyLmVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29udGV4dC5lcnJvcnMgPSBzYW5pdGl6ZUVycm9ycyhjb250ZXh0LmVycm9ycywgc2VydmVyTW9kZSk7XG4gIH1cbiAgbGV0IHN0YXRlID0ge1xuICAgIGxvYWRlckRhdGE6IGNvbnRleHQubG9hZGVyRGF0YSxcbiAgICBhY3Rpb25EYXRhOiBjb250ZXh0LmFjdGlvbkRhdGEsXG4gICAgZXJyb3JzOiBzZXJpYWxpemVFcnJvcnMyKGNvbnRleHQuZXJyb3JzLCBzZXJ2ZXJNb2RlKVxuICB9O1xuICBsZXQgZW50cnlDb250ZXh0ID0ge1xuICAgIG1hbmlmZXN0OiBidWlsZC5hc3NldHMsXG4gICAgcm91dGVNb2R1bGVzOiBjcmVhdGVFbnRyeVJvdXRlTW9kdWxlcyhidWlsZC5yb3V0ZXMpLFxuICAgIHN0YXRpY0hhbmRsZXJDb250ZXh0OiBjb250ZXh0LFxuICAgIGNyaXRpY2FsQ3NzLFxuICAgIHNlcnZlckhhbmRvZmZTdHJpbmc6IGNyZWF0ZVNlcnZlckhhbmRvZmZTdHJpbmcoe1xuICAgICAgYmFzZW5hbWU6IGJ1aWxkLmJhc2VuYW1lLFxuICAgICAgY3JpdGljYWxDc3MsXG4gICAgICBmdXR1cmU6IGJ1aWxkLmZ1dHVyZSxcbiAgICAgIGlzU3BhTW9kZTogYnVpbGQuaXNTcGFNb2RlXG4gICAgfSksXG4gICAgc2VydmVySGFuZG9mZlN0cmVhbTogZW5jb2RlVmlhVHVyYm9TdHJlYW0oXG4gICAgICBzdGF0ZSxcbiAgICAgIHJlcXVlc3Quc2lnbmFsLFxuICAgICAgYnVpbGQuZW50cnkubW9kdWxlLnN0cmVhbVRpbWVvdXQsXG4gICAgICBzZXJ2ZXJNb2RlXG4gICAgKSxcbiAgICByZW5kZXJNZXRhOiB7fSxcbiAgICBmdXR1cmU6IGJ1aWxkLmZ1dHVyZSxcbiAgICBpc1NwYU1vZGU6IGJ1aWxkLmlzU3BhTW9kZSxcbiAgICBzZXJpYWxpemVFcnJvcjogKGVycikgPT4gc2VyaWFsaXplRXJyb3IoZXJyLCBzZXJ2ZXJNb2RlKVxuICB9O1xuICBsZXQgaGFuZGxlRG9jdW1lbnRSZXF1ZXN0RnVuY3Rpb24gPSBidWlsZC5lbnRyeS5tb2R1bGUuZGVmYXVsdDtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgaGFuZGxlRG9jdW1lbnRSZXF1ZXN0RnVuY3Rpb24oXG4gICAgICByZXF1ZXN0LFxuICAgICAgY29udGV4dC5zdGF0dXNDb2RlLFxuICAgICAgaGVhZGVycyxcbiAgICAgIGVudHJ5Q29udGV4dCxcbiAgICAgIGxvYWRDb250ZXh0XG4gICAgKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBoYW5kbGVFcnJvcihlcnJvcik7XG4gICAgbGV0IGVycm9yRm9yU2Vjb25kUmVuZGVyID0gZXJyb3I7XG4gICAgaWYgKGlzUmVzcG9uc2UoZXJyb3IpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBsZXQgZGF0YTIgPSBhd2FpdCB1bndyYXBSZXNwb25zZShlcnJvcik7XG4gICAgICAgIGVycm9yRm9yU2Vjb25kUmVuZGVyID0gbmV3IEVycm9yUmVzcG9uc2VJbXBsKFxuICAgICAgICAgIGVycm9yLnN0YXR1cyxcbiAgICAgICAgICBlcnJvci5zdGF0dXNUZXh0LFxuICAgICAgICAgIGRhdGEyXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnRleHQgPSBnZXRTdGF0aWNDb250ZXh0RnJvbUVycm9yKFxuICAgICAgc3RhdGljSGFuZGxlci5kYXRhUm91dGVzLFxuICAgICAgY29udGV4dCxcbiAgICAgIGVycm9yRm9yU2Vjb25kUmVuZGVyXG4gICAgKTtcbiAgICBpZiAoY29udGV4dC5lcnJvcnMpIHtcbiAgICAgIGNvbnRleHQuZXJyb3JzID0gc2FuaXRpemVFcnJvcnMoY29udGV4dC5lcnJvcnMsIHNlcnZlck1vZGUpO1xuICAgIH1cbiAgICBsZXQgc3RhdGUyID0ge1xuICAgICAgbG9hZGVyRGF0YTogY29udGV4dC5sb2FkZXJEYXRhLFxuICAgICAgYWN0aW9uRGF0YTogY29udGV4dC5hY3Rpb25EYXRhLFxuICAgICAgZXJyb3JzOiBzZXJpYWxpemVFcnJvcnMyKGNvbnRleHQuZXJyb3JzLCBzZXJ2ZXJNb2RlKVxuICAgIH07XG4gICAgZW50cnlDb250ZXh0ID0ge1xuICAgICAgLi4uZW50cnlDb250ZXh0LFxuICAgICAgc3RhdGljSGFuZGxlckNvbnRleHQ6IGNvbnRleHQsXG4gICAgICBzZXJ2ZXJIYW5kb2ZmU3RyaW5nOiBjcmVhdGVTZXJ2ZXJIYW5kb2ZmU3RyaW5nKHtcbiAgICAgICAgYmFzZW5hbWU6IGJ1aWxkLmJhc2VuYW1lLFxuICAgICAgICBmdXR1cmU6IGJ1aWxkLmZ1dHVyZSxcbiAgICAgICAgaXNTcGFNb2RlOiBidWlsZC5pc1NwYU1vZGVcbiAgICAgIH0pLFxuICAgICAgc2VydmVySGFuZG9mZlN0cmVhbTogZW5jb2RlVmlhVHVyYm9TdHJlYW0oXG4gICAgICAgIHN0YXRlMixcbiAgICAgICAgcmVxdWVzdC5zaWduYWwsXG4gICAgICAgIGJ1aWxkLmVudHJ5Lm1vZHVsZS5zdHJlYW1UaW1lb3V0LFxuICAgICAgICBzZXJ2ZXJNb2RlXG4gICAgICApLFxuICAgICAgcmVuZGVyTWV0YToge31cbiAgICB9O1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgaGFuZGxlRG9jdW1lbnRSZXF1ZXN0RnVuY3Rpb24oXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIGNvbnRleHQuc3RhdHVzQ29kZSxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgICAgZW50cnlDb250ZXh0LFxuICAgICAgICBsb2FkQ29udGV4dFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcjIpIHtcbiAgICAgIGhhbmRsZUVycm9yKGVycm9yMik7XG4gICAgICByZXR1cm4gcmV0dXJuTGFzdFJlc29ydEVycm9yUmVzcG9uc2UoZXJyb3IyLCBzZXJ2ZXJNb2RlKTtcbiAgICB9XG4gIH1cbn1cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZVJlc291cmNlUmVxdWVzdChzZXJ2ZXJNb2RlLCBzdGF0aWNIYW5kbGVyLCByb3V0ZUlkLCByZXF1ZXN0LCBsb2FkQ29udGV4dCwgaGFuZGxlRXJyb3IpIHtcbiAgdHJ5IHtcbiAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBzdGF0aWNIYW5kbGVyLnF1ZXJ5Um91dGUocmVxdWVzdCwge1xuICAgICAgcm91dGVJZCxcbiAgICAgIHJlcXVlc3RDb250ZXh0OiBsb2FkQ29udGV4dFxuICAgIH0pO1xuICAgIGludmFyaWFudDMoXG4gICAgICBpc1Jlc3BvbnNlKHJlc3BvbnNlKSxcbiAgICAgIFwiRXhwZWN0ZWQgYSBSZXNwb25zZSB0byBiZSByZXR1cm5lZCBmcm9tIHJlc291cmNlIHJvdXRlIGhhbmRsZXJcIlxuICAgICk7XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChpc1Jlc3BvbnNlKGVycm9yKSkge1xuICAgICAgZXJyb3IuaGVhZGVycy5zZXQoXCJYLVJlbWl4LUNhdGNoXCIsIFwieWVzXCIpO1xuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH1cbiAgICBpZiAoaXNSb3V0ZUVycm9yUmVzcG9uc2UoZXJyb3IpKSB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVycm9yUmVzcG9uc2VUb0pzb24oZXJyb3IsIHNlcnZlck1vZGUpO1xuICAgIH1cbiAgICBoYW5kbGVFcnJvcihlcnJvcik7XG4gICAgcmV0dXJuIHJldHVybkxhc3RSZXNvcnRFcnJvclJlc3BvbnNlKGVycm9yLCBzZXJ2ZXJNb2RlKTtcbiAgfVxufVxuZnVuY3Rpb24gZXJyb3JSZXNwb25zZVRvSnNvbihlcnJvclJlc3BvbnNlLCBzZXJ2ZXJNb2RlKSB7XG4gIHJldHVybiBSZXNwb25zZS5qc29uKFxuICAgIHNlcmlhbGl6ZUVycm9yKFxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUaGlzIGlzIFwicHJpdmF0ZVwiIGZyb20gdXNlcnMgYnV0IGludGVuZGVkIGZvciBpbnRlcm5hbCB1c2VcbiAgICAgIGVycm9yUmVzcG9uc2UuZXJyb3IgfHwgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBTZXJ2ZXIgRXJyb3JcIiksXG4gICAgICBzZXJ2ZXJNb2RlXG4gICAgKSxcbiAgICB7XG4gICAgICBzdGF0dXM6IGVycm9yUmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDogZXJyb3JSZXNwb25zZS5zdGF0dXNUZXh0LFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBcIlgtUmVtaXgtRXJyb3JcIjogXCJ5ZXNcIlxuICAgICAgfVxuICAgIH1cbiAgKTtcbn1cbmZ1bmN0aW9uIHJldHVybkxhc3RSZXNvcnRFcnJvclJlc3BvbnNlKGVycm9yLCBzZXJ2ZXJNb2RlKSB7XG4gIGxldCBtZXNzYWdlID0gXCJVbmV4cGVjdGVkIFNlcnZlciBFcnJvclwiO1xuICBpZiAoc2VydmVyTW9kZSAhPT0gXCJwcm9kdWN0aW9uXCIgLyogUHJvZHVjdGlvbiAqLykge1xuICAgIG1lc3NhZ2UgKz0gYFxuXG4ke1N0cmluZyhlcnJvcil9YDtcbiAgfVxuICByZXR1cm4gbmV3IFJlc3BvbnNlKG1lc3NhZ2UsIHtcbiAgICBzdGF0dXM6IDUwMCxcbiAgICBoZWFkZXJzOiB7XG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcInRleHQvcGxhaW5cIlxuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiB1bndyYXBSZXNwb25zZShyZXNwb25zZSkge1xuICBsZXQgY29udGVudFR5cGUgPSByZXNwb25zZS5oZWFkZXJzLmdldChcIkNvbnRlbnQtVHlwZVwiKTtcbiAgcmV0dXJuIGNvbnRlbnRUeXBlICYmIC9cXGJhcHBsaWNhdGlvblxcL2pzb25cXGIvLnRlc3QoY29udGVudFR5cGUpID8gcmVzcG9uc2UuYm9keSA9PSBudWxsID8gbnVsbCA6IHJlc3BvbnNlLmpzb24oKSA6IHJlc3BvbnNlLnRleHQoKTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL3Nlc3Npb25zLnRzXG5mdW5jdGlvbiBmbGFzaChuYW1lKSB7XG4gIHJldHVybiBgX19mbGFzaF8ke25hbWV9X19gO1xufVxudmFyIGNyZWF0ZVNlc3Npb24gPSAoaW5pdGlhbERhdGEgPSB7fSwgaWQgPSBcIlwiKSA9PiB7XG4gIGxldCBtYXAgPSBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKGluaXRpYWxEYXRhKSk7XG4gIHJldHVybiB7XG4gICAgZ2V0IGlkKCkge1xuICAgICAgcmV0dXJuIGlkO1xuICAgIH0sXG4gICAgZ2V0IGRhdGEoKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKG1hcCk7XG4gICAgfSxcbiAgICBoYXMobmFtZSkge1xuICAgICAgcmV0dXJuIG1hcC5oYXMobmFtZSkgfHwgbWFwLmhhcyhmbGFzaChuYW1lKSk7XG4gICAgfSxcbiAgICBnZXQobmFtZSkge1xuICAgICAgaWYgKG1hcC5oYXMobmFtZSkpIHJldHVybiBtYXAuZ2V0KG5hbWUpO1xuICAgICAgbGV0IGZsYXNoTmFtZSA9IGZsYXNoKG5hbWUpO1xuICAgICAgaWYgKG1hcC5oYXMoZmxhc2hOYW1lKSkge1xuICAgICAgICBsZXQgdmFsdWUgPSBtYXAuZ2V0KGZsYXNoTmFtZSk7XG4gICAgICAgIG1hcC5kZWxldGUoZmxhc2hOYW1lKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9LFxuICAgIHNldChuYW1lLCB2YWx1ZSkge1xuICAgICAgbWFwLnNldChuYW1lLCB2YWx1ZSk7XG4gICAgfSxcbiAgICBmbGFzaChuYW1lLCB2YWx1ZSkge1xuICAgICAgbWFwLnNldChmbGFzaChuYW1lKSwgdmFsdWUpO1xuICAgIH0sXG4gICAgdW5zZXQobmFtZSkge1xuICAgICAgbWFwLmRlbGV0ZShuYW1lKTtcbiAgICB9XG4gIH07XG59O1xudmFyIGlzU2Vzc2lvbiA9IChvYmplY3QpID0+IHtcbiAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIHR5cGVvZiBvYmplY3QuaWQgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIG9iamVjdC5kYXRhICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBvYmplY3QuaGFzID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIG9iamVjdC5nZXQgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygb2JqZWN0LnNldCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBvYmplY3QuZmxhc2ggPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygb2JqZWN0LnVuc2V0ID09PSBcImZ1bmN0aW9uXCI7XG59O1xuZnVuY3Rpb24gY3JlYXRlU2Vzc2lvblN0b3JhZ2Uoe1xuICBjb29raWU6IGNvb2tpZUFyZyxcbiAgY3JlYXRlRGF0YSxcbiAgcmVhZERhdGEsXG4gIHVwZGF0ZURhdGEsXG4gIGRlbGV0ZURhdGFcbn0pIHtcbiAgbGV0IGNvb2tpZSA9IGlzQ29va2llKGNvb2tpZUFyZykgPyBjb29raWVBcmcgOiBjcmVhdGVDb29raWUoY29va2llQXJnPy5uYW1lIHx8IFwiX19zZXNzaW9uXCIsIGNvb2tpZUFyZyk7XG4gIHdhcm5PbmNlQWJvdXRTaWduaW5nU2Vzc2lvbkNvb2tpZShjb29raWUpO1xuICByZXR1cm4ge1xuICAgIGFzeW5jIGdldFNlc3Npb24oY29va2llSGVhZGVyLCBvcHRpb25zKSB7XG4gICAgICBsZXQgaWQgPSBjb29raWVIZWFkZXIgJiYgYXdhaXQgY29va2llLnBhcnNlKGNvb2tpZUhlYWRlciwgb3B0aW9ucyk7XG4gICAgICBsZXQgZGF0YTIgPSBpZCAmJiBhd2FpdCByZWFkRGF0YShpZCk7XG4gICAgICByZXR1cm4gY3JlYXRlU2Vzc2lvbihkYXRhMiB8fCB7fSwgaWQgfHwgXCJcIik7XG4gICAgfSxcbiAgICBhc3luYyBjb21taXRTZXNzaW9uKHNlc3Npb24sIG9wdGlvbnMpIHtcbiAgICAgIGxldCB7IGlkLCBkYXRhOiBkYXRhMiB9ID0gc2Vzc2lvbjtcbiAgICAgIGxldCBleHBpcmVzID0gb3B0aW9ucz8ubWF4QWdlICE9IG51bGwgPyBuZXcgRGF0ZShEYXRlLm5vdygpICsgb3B0aW9ucy5tYXhBZ2UgKiAxZTMpIDogb3B0aW9ucz8uZXhwaXJlcyAhPSBudWxsID8gb3B0aW9ucy5leHBpcmVzIDogY29va2llLmV4cGlyZXM7XG4gICAgICBpZiAoaWQpIHtcbiAgICAgICAgYXdhaXQgdXBkYXRlRGF0YShpZCwgZGF0YTIsIGV4cGlyZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWQgPSBhd2FpdCBjcmVhdGVEYXRhKGRhdGEyLCBleHBpcmVzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb29raWUuc2VyaWFsaXplKGlkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGFzeW5jIGRlc3Ryb3lTZXNzaW9uKHNlc3Npb24sIG9wdGlvbnMpIHtcbiAgICAgIGF3YWl0IGRlbGV0ZURhdGEoc2Vzc2lvbi5pZCk7XG4gICAgICByZXR1cm4gY29va2llLnNlcmlhbGl6ZShcIlwiLCB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIG1heEFnZTogdm9pZCAwLFxuICAgICAgICBleHBpcmVzOiAvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoMClcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cbmZ1bmN0aW9uIHdhcm5PbmNlQWJvdXRTaWduaW5nU2Vzc2lvbkNvb2tpZShjb29raWUpIHtcbiAgd2Fybk9uY2UoXG4gICAgY29va2llLmlzU2lnbmVkLFxuICAgIGBUaGUgXCIke2Nvb2tpZS5uYW1lfVwiIGNvb2tpZSBpcyBub3Qgc2lnbmVkLCBidXQgc2Vzc2lvbiBjb29raWVzIHNob3VsZCBiZSBzaWduZWQgdG8gcHJldmVudCB0YW1wZXJpbmcgb24gdGhlIGNsaWVudCBiZWZvcmUgdGhleSBhcmUgc2VudCBiYWNrIHRvIHRoZSBzZXJ2ZXIuIFNlZSBodHRwczovL3JlbWl4LnJ1bi91dGlscy9jb29raWVzI3NpZ25pbmctY29va2llcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5gXG4gICk7XG59XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS9zZXNzaW9ucy9jb29raWVTdG9yYWdlLnRzXG5mdW5jdGlvbiBjcmVhdGVDb29raWVTZXNzaW9uU3RvcmFnZSh7IGNvb2tpZTogY29va2llQXJnIH0gPSB7fSkge1xuICBsZXQgY29va2llID0gaXNDb29raWUoY29va2llQXJnKSA/IGNvb2tpZUFyZyA6IGNyZWF0ZUNvb2tpZShjb29raWVBcmc/Lm5hbWUgfHwgXCJfX3Nlc3Npb25cIiwgY29va2llQXJnKTtcbiAgd2Fybk9uY2VBYm91dFNpZ25pbmdTZXNzaW9uQ29va2llKGNvb2tpZSk7XG4gIHJldHVybiB7XG4gICAgYXN5bmMgZ2V0U2Vzc2lvbihjb29raWVIZWFkZXIsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBjcmVhdGVTZXNzaW9uKFxuICAgICAgICBjb29raWVIZWFkZXIgJiYgYXdhaXQgY29va2llLnBhcnNlKGNvb2tpZUhlYWRlciwgb3B0aW9ucykgfHwge31cbiAgICAgICk7XG4gICAgfSxcbiAgICBhc3luYyBjb21taXRTZXNzaW9uKHNlc3Npb24sIG9wdGlvbnMpIHtcbiAgICAgIGxldCBzZXJpYWxpemVkQ29va2llID0gYXdhaXQgY29va2llLnNlcmlhbGl6ZShzZXNzaW9uLmRhdGEsIG9wdGlvbnMpO1xuICAgICAgaWYgKHNlcmlhbGl6ZWRDb29raWUubGVuZ3RoID4gNDA5Nikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJDb29raWUgbGVuZ3RoIHdpbGwgZXhjZWVkIGJyb3dzZXIgbWF4aW11bS4gTGVuZ3RoOiBcIiArIHNlcmlhbGl6ZWRDb29raWUubGVuZ3RoXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2VyaWFsaXplZENvb2tpZTtcbiAgICB9LFxuICAgIGFzeW5jIGRlc3Ryb3lTZXNzaW9uKF9zZXNzaW9uLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gY29va2llLnNlcmlhbGl6ZShcIlwiLCB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIG1heEFnZTogdm9pZCAwLFxuICAgICAgICBleHBpcmVzOiAvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoMClcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL3Nlc3Npb25zL21lbW9yeVN0b3JhZ2UudHNcbmZ1bmN0aW9uIGNyZWF0ZU1lbW9yeVNlc3Npb25TdG9yYWdlKHsgY29va2llIH0gPSB7fSkge1xuICBsZXQgbWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgcmV0dXJuIGNyZWF0ZVNlc3Npb25TdG9yYWdlKHtcbiAgICBjb29raWUsXG4gICAgYXN5bmMgY3JlYXRlRGF0YShkYXRhMiwgZXhwaXJlcykge1xuICAgICAgbGV0IGlkID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDEwKTtcbiAgICAgIG1hcC5zZXQoaWQsIHsgZGF0YTogZGF0YTIsIGV4cGlyZXMgfSk7XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfSxcbiAgICBhc3luYyByZWFkRGF0YShpZCkge1xuICAgICAgaWYgKG1hcC5oYXMoaWQpKSB7XG4gICAgICAgIGxldCB7IGRhdGE6IGRhdGEyLCBleHBpcmVzIH0gPSBtYXAuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCFleHBpcmVzIHx8IGV4cGlyZXMgPiAvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoKSkge1xuICAgICAgICAgIHJldHVybiBkYXRhMjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXhwaXJlcykgbWFwLmRlbGV0ZShpZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9LFxuICAgIGFzeW5jIHVwZGF0ZURhdGEoaWQsIGRhdGEyLCBleHBpcmVzKSB7XG4gICAgICBtYXAuc2V0KGlkLCB7IGRhdGE6IGRhdGEyLCBleHBpcmVzIH0pO1xuICAgIH0sXG4gICAgYXN5bmMgZGVsZXRlRGF0YShpZCkge1xuICAgICAgbWFwLmRlbGV0ZShpZCk7XG4gICAgfVxuICB9KTtcbn1cblxuLy8gbGliL2RvbS9zc3IvZXJyb3JzLnRzXG5mdW5jdGlvbiBkZXNlcmlhbGl6ZUVycm9yczIoZXJyb3JzKSB7XG4gIGlmICghZXJyb3JzKSByZXR1cm4gbnVsbDtcbiAgbGV0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhlcnJvcnMpO1xuICBsZXQgc2VyaWFsaXplZCA9IHt9O1xuICBmb3IgKGxldCBba2V5LCB2YWxdIG9mIGVudHJpZXMpIHtcbiAgICBpZiAodmFsICYmIHZhbC5fX3R5cGUgPT09IFwiUm91dGVFcnJvclJlc3BvbnNlXCIpIHtcbiAgICAgIHNlcmlhbGl6ZWRba2V5XSA9IG5ldyBFcnJvclJlc3BvbnNlSW1wbChcbiAgICAgICAgdmFsLnN0YXR1cyxcbiAgICAgICAgdmFsLnN0YXR1c1RleHQsXG4gICAgICAgIHZhbC5kYXRhLFxuICAgICAgICB2YWwuaW50ZXJuYWwgPT09IHRydWVcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh2YWwgJiYgdmFsLl9fdHlwZSA9PT0gXCJFcnJvclwiKSB7XG4gICAgICBpZiAodmFsLl9fc3ViVHlwZSkge1xuICAgICAgICBsZXQgRXJyb3JDb25zdHJ1Y3RvciA9IHdpbmRvd1t2YWwuX19zdWJUeXBlXTtcbiAgICAgICAgaWYgKHR5cGVvZiBFcnJvckNvbnN0cnVjdG9yID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IGVycm9yID0gbmV3IEVycm9yQ29uc3RydWN0b3IodmFsLm1lc3NhZ2UpO1xuICAgICAgICAgICAgZXJyb3Iuc3RhY2sgPSB2YWwuc3RhY2s7XG4gICAgICAgICAgICBzZXJpYWxpemVkW2tleV0gPSBlcnJvcjtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc2VyaWFsaXplZFtrZXldID09IG51bGwpIHtcbiAgICAgICAgbGV0IGVycm9yID0gbmV3IEVycm9yKHZhbC5tZXNzYWdlKTtcbiAgICAgICAgZXJyb3Iuc3RhY2sgPSB2YWwuc3RhY2s7XG4gICAgICAgIHNlcmlhbGl6ZWRba2V5XSA9IGVycm9yO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXJpYWxpemVkW2tleV0gPSB2YWw7XG4gICAgfVxuICB9XG4gIHJldHVybiBzZXJpYWxpemVkO1xufVxuXG5leHBvcnQge1xuICBBY3Rpb24sXG4gIGNyZWF0ZUJyb3dzZXJIaXN0b3J5LFxuICBpbnZhcmlhbnQsXG4gIGNyZWF0ZVBhdGgsXG4gIHBhcnNlUGF0aCxcbiAgbWF0Y2hSb3V0ZXMsXG4gIGdlbmVyYXRlUGF0aCxcbiAgbWF0Y2hQYXRoLFxuICByZXNvbHZlUGF0aCxcbiAgZGF0YSxcbiAgcmVkaXJlY3QsXG4gIHJlZGlyZWN0RG9jdW1lbnQsXG4gIHJlcGxhY2UsXG4gIEVycm9yUmVzcG9uc2VJbXBsLFxuICBpc1JvdXRlRXJyb3JSZXNwb25zZSxcbiAgSURMRV9OQVZJR0FUSU9OLFxuICBJRExFX0ZFVENIRVIsXG4gIElETEVfQkxPQ0tFUixcbiAgY3JlYXRlUm91dGVyLFxuICBEYXRhUm91dGVyQ29udGV4dCxcbiAgRGF0YVJvdXRlclN0YXRlQ29udGV4dCxcbiAgVmlld1RyYW5zaXRpb25Db250ZXh0LFxuICBGZXRjaGVyc0NvbnRleHQsXG4gIE5hdmlnYXRpb25Db250ZXh0LFxuICBMb2NhdGlvbkNvbnRleHQsXG4gIFJvdXRlQ29udGV4dCxcbiAgdXNlSHJlZixcbiAgdXNlSW5Sb3V0ZXJDb250ZXh0LFxuICB1c2VMb2NhdGlvbixcbiAgdXNlTmF2aWdhdGlvblR5cGUsXG4gIHVzZU1hdGNoLFxuICB1c2VOYXZpZ2F0ZSxcbiAgdXNlT3V0bGV0Q29udGV4dCxcbiAgdXNlT3V0bGV0LFxuICB1c2VQYXJhbXMsXG4gIHVzZVJlc29sdmVkUGF0aCxcbiAgdXNlUm91dGVzLFxuICB1c2VOYXZpZ2F0aW9uLFxuICB1c2VSZXZhbGlkYXRvcixcbiAgdXNlTWF0Y2hlcyxcbiAgdXNlTG9hZGVyRGF0YSxcbiAgdXNlUm91dGVMb2FkZXJEYXRhLFxuICB1c2VBY3Rpb25EYXRhLFxuICB1c2VSb3V0ZUVycm9yLFxuICB1c2VBc3luY1ZhbHVlLFxuICB1c2VBc3luY0Vycm9yLFxuICB1c2VCbG9ja2VyLFxuICBtYXBSb3V0ZVByb3BlcnRpZXMsXG4gIGNyZWF0ZU1lbW9yeVJvdXRlcixcbiAgUm91dGVyUHJvdmlkZXIsXG4gIE1lbW9yeVJvdXRlcixcbiAgTmF2aWdhdGUsXG4gIE91dGxldCxcbiAgUm91dGUsXG4gIFJvdXRlcixcbiAgUm91dGVzLFxuICBBd2FpdCxcbiAgY3JlYXRlUm91dGVzRnJvbUNoaWxkcmVuLFxuICBjcmVhdGVSb3V0ZXNGcm9tRWxlbWVudHMsXG4gIHJlbmRlck1hdGNoZXMsXG4gIGNyZWF0ZVNlYXJjaFBhcmFtcyxcbiAgU2luZ2xlRmV0Y2hSZWRpcmVjdFN5bWJvbCxcbiAgZ2V0U2luZ2xlRmV0Y2hEYXRhU3RyYXRlZ3ksXG4gIGRlY29kZVZpYVR1cmJvU3RyZWFtLFxuICBSZW1peEVycm9yQm91bmRhcnksXG4gIGNyZWF0ZUNsaWVudFJvdXRlc1dpdGhITVJSZXZhbGlkYXRpb25PcHRPdXQsXG4gIGNyZWF0ZUNsaWVudFJvdXRlcyxcbiAgc2hvdWxkSHlkcmF0ZVJvdXRlTG9hZGVyLFxuICBnZXRQYXRjaFJvdXRlc09uTmF2aWdhdGlvbkZ1bmN0aW9uLFxuICB1c2VGb2dPRldhckRpc2NvdmVyeSxcbiAgRnJhbWV3b3JrQ29udGV4dCxcbiAgTGlua3MsXG4gIFByZWZldGNoUGFnZUxpbmtzLFxuICBNZXRhLFxuICBTY3JpcHRzLFxuICBjcmVhdGVCcm93c2VyUm91dGVyLFxuICBjcmVhdGVIYXNoUm91dGVyLFxuICBCcm93c2VyUm91dGVyLFxuICBIYXNoUm91dGVyLFxuICBIaXN0b3J5Um91dGVyLFxuICBMaW5rLFxuICBOYXZMaW5rLFxuICBGb3JtLFxuICBTY3JvbGxSZXN0b3JhdGlvbixcbiAgdXNlTGlua0NsaWNrSGFuZGxlcixcbiAgdXNlU2VhcmNoUGFyYW1zLFxuICB1c2VTdWJtaXQsXG4gIHVzZUZvcm1BY3Rpb24sXG4gIHVzZUZldGNoZXIsXG4gIHVzZUZldGNoZXJzLFxuICB1c2VTY3JvbGxSZXN0b3JhdGlvbixcbiAgdXNlQmVmb3JlVW5sb2FkLFxuICB1c2VQcm9tcHQsXG4gIHVzZVZpZXdUcmFuc2l0aW9uU3RhdGUsXG4gIFN0YXRpY1JvdXRlcixcbiAgU3RhdGljUm91dGVyUHJvdmlkZXIsXG4gIGNyZWF0ZVN0YXRpY0hhbmRsZXIyIGFzIGNyZWF0ZVN0YXRpY0hhbmRsZXIsXG4gIGNyZWF0ZVN0YXRpY1JvdXRlcixcbiAgU2VydmVyUm91dGVyLFxuICBjcmVhdGVSb3V0ZXNTdHViLFxuICBjcmVhdGVDb29raWUsXG4gIGlzQ29va2llLFxuICBTZXJ2ZXJNb2RlLFxuICBzZXREZXZTZXJ2ZXJIb29rcyxcbiAgY3JlYXRlUmVxdWVzdEhhbmRsZXIsXG4gIGNyZWF0ZVNlc3Npb24sXG4gIGlzU2Vzc2lvbixcbiAgY3JlYXRlU2Vzc2lvblN0b3JhZ2UsXG4gIGNyZWF0ZUNvb2tpZVNlc3Npb25TdG9yYWdlLFxuICBjcmVhdGVNZW1vcnlTZXNzaW9uU3RvcmFnZSxcbiAgZGVzZXJpYWxpemVFcnJvcnMyIGFzIGRlc2VyaWFsaXplRXJyb3JzXG59O1xuIiwiaW1wb3J0IHsgQXN5bmNQYWdpbmF0ZSB9IGZyb20gXCJyZWFjdC1zZWxlY3QtYXN5bmMtcGFnaW5hdGVcIlxuaW1wb3J0IFNoaXBwaW5nU2VydmljZSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2hpcHBpbmdcIlxuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCB7U2hvcH0gZnJvbSBcIi4uLy4uL21vZGVsL3Nob3BcIlxuaW1wb3J0IHtjb250YWluZXJ9IGZyb20gXCJ0c3lyaW5nZS1uZW9cIlxuaW1wb3J0IE9yZGVyU3RhdGUgZnJvbSBcIi4uLy4uL3N0YXRlL29yZGVyXCJcbmltcG9ydCBPcmRlciBmcm9tIFwiLi4vLi4vbW9kZWwvb3JkZXJcIlxuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBJbmZvRmllbGRDb21wb25lbnQgPSAoe3Nob3AsIG9yZGVyfSkgPT4ge1xuXG4gICAgY29uc3QgW2Jhc2tldEZpZWxkMSwgc2V0QmFza2V0RmllbGQxXSA9IHVzZVN0YXRlPHN0cmluZz4oXCJcIik7XG4gICAgY29uc3QgW2Jhc2tldEZpZWxkMiwgc2V0QmFza2V0RmllbGQyXSA9IHVzZVN0YXRlPHN0cmluZz4oXCJcIik7XG5cbiAgICBjb25zdCBvcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzZXRCYXNrZXRGaWVsZDEob3JkZXIuYmFza2V0RmllbGQxKVxuICAgICAgICBzZXRCYXNrZXRGaWVsZDIob3JkZXIuYmFza2V0RmllbGQxKVxuICAgIH0sIFtvcmRlci5iYXNrZXRGaWVsZDEsIG9yZGVyLmJhc2tldEZpZWxkMl0pXG5cbiAgICBjb25zdCBjaGFuZ2VCYXNrZXRGaWVsZDEgPSAodmFsdWUpID0+IHtcbiAgICAgICAgbGV0IG9yZGVyT2JqID0gb3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS5nZXRWYWx1ZSgpXG4gICAgICAgIG9yZGVyT2JqLmJhc2tldEZpZWxkMSA9IHZhbHVlXG4gICAgICAgIG9yZGVyU3RhdGUuc2V0Q3VycmVudE9yZGVyKG9yZGVyT2JqKVxuICAgICAgICBzZXRCYXNrZXRGaWVsZDEodmFsdWUpXG4gICAgfVxuXG4gICAgY29uc3QgY2hhbmdlQmFza2V0RmllbGQyID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGxldCBvcmRlck9iaiA9IG9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkuZ2V0VmFsdWUoKVxuICAgICAgICBvcmRlck9iai5iYXNrZXRGaWVsZDIgPSB2YWx1ZVxuICAgICAgICBvcmRlclN0YXRlLnNldEN1cnJlbnRPcmRlcihvcmRlck9iailcbiAgICAgICAgc2V0QmFza2V0RmllbGQyKHZhbHVlKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJmbGV4XCJ9PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcImZsZXgtMVwifT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2ZsZXggZ2FwLTEnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImJhc2tldEZpZWxkMVwiIHZhbHVlPXtiYXNrZXRGaWVsZDF9IG9uQ2hhbmdlPXsgZSA9PiBjaGFuZ2VCYXNrZXRGaWVsZDEoZS50YXJnZXQudmFsdWUpfSBjbGFzc05hbWU9e1wiYmctZ3JheS01MCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHRleHQtZ3JheS05MDAgdGV4dC1zbSByb3VuZGVkLWxnIGZvY3VzOnJpbmctYmx1ZS01MDAgZm9jdXM6Ym9yZGVyLWJsdWUtNTAwIGJsb2NrIHctZnVsbCBwLTIuNSBkYXJrOmJnLWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6cGxhY2Vob2xkZXItZ3JheS00MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1ibHVlLTUwMCBkYXJrOmZvY3VzOmJvcmRlci1ibHVlLTUwMFwifSBwbGFjZWhvbGRlcj17XCJJbmZvIDFcIn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57c2hvcC5iYXNrZXRGaWVsZDF9PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wiZmxleC0xXCJ9PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nZmxleCBnYXAtMSc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiYmFza2V0RmllbGQyXCIgdmFsdWU9e2Jhc2tldEZpZWxkMn0gb25DaGFuZ2U9e2UgPT4gY2hhbmdlQmFza2V0RmllbGQyKGUudGFyZ2V0LnZhbHVlKX0gIGNsYXNzTmFtZT17XCJiZy1ncmF5LTUwIGJvcmRlciBib3JkZXItZ3JheS0zMDAgdGV4dC1ncmF5LTkwMCB0ZXh0LXNtIHJvdW5kZWQtbGcgZm9jdXM6cmluZy1ibHVlLTUwMCBmb2N1czpib3JkZXItYmx1ZS01MDAgYmxvY2sgdy1mdWxsIHAtMi41IGRhcms6YmctZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpwbGFjZWhvbGRlci1ncmF5LTQwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLWJsdWUtNTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWJsdWUtNTAwXCJ9IHBsYWNlaG9sZGVyPXtcIkluZm8gMlwifSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPntzaG9wLmJhc2tldEZpZWxkMn08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuKTtcbn1cblxuSW5mb0ZpZWxkQ29tcG9uZW50LnByb3BUeXBlcyA9IHtcbiAgICBvcmRlcjogUHJvcFR5cGVzLmluc3RhbmNlT2YoT3JkZXIpLFxuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgSW5mb0ZpZWxkQ29tcG9uZW50O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcclxuaW1wb3J0IE9yZGVyIGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiO1xyXG5cclxuY29uc3QgT3JkZXJBbGlhc0NvbXBvbmVudCA9ICh7b3JkZXJ9KSA9PiB7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJtLTEgcC0yXCJ9PlxyXG4gICAgICAgICAgICA8aDQ+TlI6IHtvcmRlci5hbGlhc308L2g0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKTsgIFxyXG59XHJcblxyXG5PcmRlckFsaWFzQ29tcG9uZW50LnByb3BUeXBlcyA9IHtcclxuICAgIG9yZGVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihPcmRlciksXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBPcmRlckFsaWFzQ29tcG9uZW50O1xyXG4iLCJpbXBvcnQgeyBTaG9wIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2hvcCdcbmltcG9ydCBDb250YWN0Q29tcG9uZW50IGZyb20gJy4uL2NvbnRhY3QvQ29udGFjdENvbXBvbmVudCdcbmltcG9ydCBUb3BCYXJDb21wb25lbnQgZnJvbSAnLi4vdG9wYmFyL1RvcEJhckNvbXBvbmVudCdcbmltcG9ydCBQb3NpdGlvbnNDb21wb25lbnQgZnJvbSAnLi4vcG9zaXRpb25zL1Bvc2l0aW9uc0NvbXBvbmVudCdcbmltcG9ydCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnXG5pbXBvcnQgT3JkZXIgZnJvbSBcIi4uLy4uL21vZGVsL29yZGVyXCJcbmltcG9ydCBQYXltZW50Q29tcG9uZW50IGZyb20gXCIuLi9wYXltZW50L1BheW1lbnRDb21wb25lbnRcIlxuaW1wb3J0IFNoaXBwaW5nQ29tcG9uZW50IGZyb20gXCIuLi9zaGlwcGluZy9TaGlwcGluZ0NvbXBvbmVudFwiXG5pbXBvcnQgQnV0dG9uQ29tcG9uZW50IGZyb20gXCIuLi9idXR0b24vQnV0dG9uQ29tcG9uZW50XCJcbmltcG9ydCB7dXNlUGFyYW1zfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiXG5pbXBvcnQge2NvbnRhaW5lcn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiXG5pbXBvcnQgT3JkZXJTdGF0ZSBmcm9tIFwiLi4vLi4vc3RhdGUvb3JkZXJcIlxuaW1wb3J0IE9yZGVyU2VydmljZSBmcm9tIFwiLi4vLi4vc2VydmljZXMvb3JkZXJcIlxuaW1wb3J0IEluZm9GaWVsZENvbXBvbmVudCBmcm9tIFwiLi4vaW5mby9JbmZvRmllbGRDb21wb25lbnRcIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IE9yZGVyQWxpYXNDb21wb25lbnQgZnJvbSAnLi4vb3JkZXIvT3JkZXJBbGlhc0NvbXBvbmVudCdcblxuY29uc3QgQmFzZUNvbXBvbmVudCA9IChwcm9wcykgPT4ge1xuXG4gICAgY29uc3QgW3Nob3AsIHNldFNob3BdID0gdXNlU3RhdGU8U2hvcD4obmV3IFNob3AoKSlcbiAgICBjb25zdCBbb3JkZXIsIHNldE9yZGVyXSA9IHVzZVN0YXRlPE9yZGVyPihuZXcgT3JkZXIoKSlcblxuICAgIGNvbnN0IG9yZGVyX3N0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSlcbiAgICBjb25zdCBvcmRlclNlcnZpY2UgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclNlcnZpY2UpXG4gICAgY29uc3QgbG9hZE9yZGVyID0gYXN5bmMgKHV1aWQ6IFN0cmluZykgPT4ge1xuICAgICAgICBvcmRlclNlcnZpY2UuZ2V0T3JkZXIodXVpZCkudGhlbigob3JkZXJPYmopID0+IHtcbiAgICAgICAgICAgIG9yZGVyX3N0YXRlLnNldEN1cnJlbnRPcmRlcihvcmRlck9iailcbiAgICAgICAgICAgIHNldFNob3Aob3JkZXJPYmouc2hvcClcbiAgICAgICAgICAgIHNldE9yZGVyKG9yZGVyT2JqKVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGxldCBwYXJhbXMgPSB1c2VQYXJhbXMoKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYocGFyYW1zLnV1aWQpIHtcbiAgICAgICAgICAgIGxvYWRPcmRlcihwYXJhbXMudXVpZClcbiAgICAgICAgfVxuICAgIH0sIFtdKVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPFJlYWN0LlN0cmljdE1vZGU+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWwtMSBtdC0xIG1yLTEnPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtMSBtdC0xIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxPcmRlckFsaWFzQ29tcG9uZW50IG9yZGVyPXtvcmRlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uQ29tcG9uZW50IGxvYWRPcmRlcj17bG9hZE9yZGVyfS8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPFRvcEJhckNvbXBvbmVudCBzaG9wPXtzaG9wfSBvcmRlcj17b3JkZXJ9IGNoYW5nZT17c2V0U2hvcH0gLz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTEgbWItMVwiPnsgc2hvcC5pZCAhPSAwICYmIDxDb250YWN0Q29tcG9uZW50IHNob3A9e3Nob3B9IG9yZGVyPXtvcmRlcn0gLz4gfTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+eyBzaG9wLmlkICE9IDAgJiYgPFBvc2l0aW9uc0NvbXBvbmVudCBzaG9wPXtzaG9wfSBvcmRlcj17b3JkZXJ9IC8+IH08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTEgbWItMSBmbGV4IGdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+eyBzaG9wLmlkICE9IDAgJiYgPFBheW1lbnRDb21wb25lbnQgc2hvcD17c2hvcH0gb3JkZXI9e29yZGVyfSAvPiB9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+eyBzaG9wLmlkICE9IDAgJiYgPFNoaXBwaW5nQ29tcG9uZW50IHNob3A9e3Nob3B9IG9yZGVyPXtvcmRlcn0gLz4gfTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIHsgc2hvcC5pZCAhPSAwICYmIDxJbmZvRmllbGRDb21wb25lbnQgc2hvcD17c2hvcH0gb3JkZXI9e29yZGVyfSAvPiB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9SZWFjdC5TdHJpY3RNb2RlPlxuICAgIClcbiAgICBcbn0gXG5cbmV4cG9ydCBkZWZhdWx0IEJhc2VDb21wb25lbnRcbiIsImltcG9ydCAqIGFzIEV0YSBmcm9tICdldGEnXG5pbXBvcnQgVG9rZW4gZnJvbSAnLi4vc2VydmljZXMvdG9rZW4nXG5pbXBvcnQge2NvbnRhaW5lcn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tL2NsaWVudCdcbmltcG9ydCBOaWNlTW9kYWwgZnJvbSBcIkBlYmF5L25pY2UtbW9kYWwtcmVhY3RcIlxuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSAnLi4vbW9kdWxlcy9iYXNlL0Jhc2VDb21wb25lbnQnXG5pbXBvcnQge1JvdXRlLCBIYXNoUm91dGVyIGFzIFJvdXRlciwgUm91dGVzLCB1c2VTZWFyY2hQYXJhbXN9IGZyb20gXCJyZWFjdC1yb3V0ZXItZG9tXCJcblxuZXhwb3J0IGNsYXNzIEFwcCB7XG4gICAgcHJpdmF0ZSBzZWFyY2hQYXJhbXM6IGFueVxuICAgIHByaXZhdGUgc2V0U2VhcmNoUGFyYW1zOiBhbnlcblxuXG4gICAgY29uc3RydWN0b3Ioand0OiBTdHJpbmcpIHtcbiAgICAgICAgbGV0IHRva2VuID0gY29udGFpbmVyLnJlc29sdmUoVG9rZW4pXG4gICAgICAgIGNvbnNvbGUubG9nKGp3dClcbiAgICAgICAgdG9rZW4uY3VycmVudFRva2VuID0gand0XG4gICAgICAgIHRva2VuLmluaXQoKVxuICAgIH1cblxuICAgIGluaXQoKTogdm9pZCB7XG5cbiAgICAgICAgdGhpcy5idWlsZFVpKClcbiAgICB9XG5cbiAgICBidWlsZFVpKCkge1xuICAgICAgICBjb25zdCByb290ID0gUmVhY3RET00uY3JlYXRlUm9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpKVxuXG4gICAgICAgIHJvb3QucmVuZGVyKFxuICAgICAgICAgICAgPE5pY2VNb2RhbC5Qcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8Um91dGVyPlxuICAgICAgICAgICAgICAgICAgICA8Um91dGVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvXCIgZWxlbWVudD17PEJhc2VDb21wb25lbnQgLz59IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi86dXVpZFwiIGVsZW1lbnQ9ezxCYXNlQ29tcG9uZW50IC8+fSAvPlxuICAgICAgICAgICAgICAgICAgICA8L1JvdXRlcz5cbiAgICAgICAgICAgICAgICA8L1JvdXRlcj5cbiAgICAgICAgICAgIDwvTmljZU1vZGFsLlByb3ZpZGVyPlxuICAgICAgICApXG5cbiAgICB9XG5cbiAgICBydW4oKTogdm9pZCB7XG4gICAgICAgIFxuICAgIFxuICAgIH1cbn1cbiIsImltcG9ydCBcIi4vYXNzZXRzL2luZGV4LmNzc1wiXG5pbXBvcnQgXCJyZWZsZWN0LW1ldGFkYXRhXCI7XG5pbXBvcnQgKiBhcyAkIGZyb20gXCJqcXVlcnlcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuL2FwcC9hcHBcIjtcblxuZGVjbGFyZSB2YXIgand0X3Rva2VuOiBTdHJpbmc7XG5sZXQgYXBwID0gbmV3IEFwcChqd3RfdG9rZW4pO1xuYXBwLmluaXQoKTtcbmFwcC5ydW4oKTtcbiJdLCJuYW1lcyI6WyJSZWZsZWN0IiwiZ2xvYmFsIiwiXyIsImhhc093biIsIl9NYXAiLCJfU2V0IiwiX1dlYWtNYXAiLCJpIiwiTyIsIlAiLCJvd25LZXlzIiwic2V0IiwiX2EiLCJ4IiwidG9TdHJpbmdfMSIsInkiLCJWIiwiZiIsInByb3RvdHlwZSIsIm5leHQiLCJtZXRhZGF0YVJlZ2lzdHJ5IiwibWV0YWRhdGEiLCJPcmRpbmFyeURlZmluZU93bk1ldGFkYXRhIiwiT3JkaW5hcnlIYXNPd25NZXRhZGF0YSIsIk9yZGluYXJ5R2V0T3duTWV0YWRhdGEiLCJPcmRpbmFyeU93bk1ldGFkYXRhS2V5cyIsImsiLCJlIiwiZGVmaW5lTWV0YWRhdGEiLCJoYXNPd25NZXRhZGF0YSIsImdldE93bk1ldGFkYXRhIiwiZ2V0T3duTWV0YWRhdGFLZXlzIiwiZGVsZXRlTWV0YWRhdGEiLCJNYXBJdGVyYXRvciIsImluZGV4IiwiTWFwIiwic2l6ZSIsImdldFZhbHVlIiwiU2V0IiwiV2Vha01hcCIsImNyZWF0ZSIsImRhdGEiLCJvZmZzZXQiLCJsIiwibiIsInAiLCJxIiwiciIsInQiLCJ1IiwidiIsInciLCJ6IiwiQSIsImEiLCJCIiwiQyIsIkQiLCJFIiwiYiIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiZCIsImMiLCJoIiwiZyIsIm0iLCJOIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJXIiwiWCIsInJlYWN0TW9kdWxlIiwicmVxdWlyZSQkMCIsImpzeFJ1bnRpbWVNb2R1bGUiLCJiaW5kIiwiZ2V0UHJvdG90eXBlT2YiLCJjYWNoZSIsInR5cGUiLCJpc0FycmF5IiwiaXNCdWZmZXIiLCJpc0Z1bmN0aW9uIiwiaXNTdHJpbmciLCJpc051bWJlciIsImlzT2JqZWN0IiwiaXNQbGFpbk9iamVjdCIsInRyaW0iLCJtZXJnZSIsImluaGVyaXRzIiwiZGVzY3JpcHRvcnMiLCJmaWx0ZXIiLCJwb3NpdGlvbiIsIm1hdGNoZXMiLCJoYXNPd25Qcm9wZXJ0eSIsInJlZHVjZXIiLCJkZWxpbWl0ZXIiLCJub29wIiwibGVuZ3RoIiwidG9rZW4iLCJjb25maWciLCJ1dGlscyIsIm9wdGlvbnMiLCJlbmNvZGUiLCJtYXRjaCIsInRvU3RyaW5nIiwiVVJMU2VhcmNoUGFyYW1zIiwiRm9ybURhdGEiLCJCbG9iIiwicGxhdGZvcm0iLCJpc0Zvcm1EYXRhIiwiaXNGaWxlTGlzdCIsInRyYW5zaXRpb25hbCIsImxpbmUiLCJjaGFyIiwic2VsZiIsImZvcm1hdCIsInRyYW5zZm9ybSIsInZhbGlkYXRlU3RhdHVzIiwibWluIiwib3JpZ2luIiwic2lnbmFsIiwiZG9uZSIsInJlcyIsImFkYXB0ZXJzIiwicyIsInZhbGlkYXRvcnMiLCJ2YWxpZGF0b3IiLCJpbnN0YW5jZSIsImZyb20iLCJzY2hlZHVsZXJNb2R1bGUiLCJyZXF1aXJlJCQxIiwiYWUiLCJiZSIsImNlIiwiZGUiLCJlZSIsImZlIiwiZ2UiLCJoZSIsImllIiwiamUiLCJrZSIsImxlIiwibWUiLCJuZSIsIm9lIiwicGUiLCJxZSIsInJlIiwic2UiLCJ0ZSIsInVlIiwidmUiLCJ3ZSIsInhlIiwieWUiLCJ6ZSIsIkFlIiwiQmUiLCJDZSIsIkRlIiwiRWUiLCJGZSIsIkdlIiwiSGUiLCJJZSIsIkplIiwiS2UiLCJMZSIsIk1lIiwiTmUiLCJPZSIsIlBlIiwiUWUiLCJSZSIsIlNlIiwiVGUiLCJVZSIsIlZlIiwiV2UiLCJYZSIsIlplIiwiJGUiLCJZIiwiWiIsIk9rIiwicmVhY3REb21Nb2R1bGUiLCJfX2Fzc2lnbiIsIlJlYWN0IiwiX2UiLCJoaWRlIiwidXNlQ29udGV4dCIsInVzZUVmZmVjdCIsInVzZUNhbGxiYWNrIiwiYXJncyIsInVzZU1lbW8iLCJzaG93IiwidXNlUmVkdWNlciIsInByb3BUeXBlc01vZHVsZSIsIl90eXBlb2YiLCJvIiwidG9QcmltaXRpdmUiLCJ0b1Byb3BlcnR5S2V5IiwiX2RlZmluZVByb3BlcnR5IiwiZGVmaW5lUHJvcGVydHkiLCJhcnJheUxpa2VUb0FycmF5IiwiYXJyYXlXaXRoSG9sZXMiLCJpdGVyYWJsZVRvQXJyYXlMaW1pdCIsInVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5Iiwibm9uSXRlcmFibGVSZXN0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiX2V4Y2x1ZGVkIiwiX3JlZiIsInVzZVN0YXRlIiwib25DaGFuZ2UiLCJ2YWx1ZSIsIl9vYmplY3RTcHJlYWQiLCJfZXh0ZW5kcyIsInNldFByb3RvdHlwZU9mIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsImFzc2VydFRoaXNJbml0aWFsaXplZCIsImlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsInBvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJhcnJheVdpdGhvdXRIb2xlcyIsIml0ZXJhYmxlVG9BcnJheSIsIm5vbkl0ZXJhYmxlU3ByZWFkIiwiaXNEZXZlbG9wbWVudCIsIlN0eWxlU2hlZXQiLCJNUyIsIk1PWiIsIldFQktJVCIsIkNPTU1FTlQiLCJSVUxFU0VUIiwiREVDTEFSQVRJT04iLCJJTVBPUlQiLCJLRVlGUkFNRVMiLCJMQVlFUiIsImFicyIsImFzc2lnbiIsImhhc2giLCJjaGFyYXQiLCJwYXR0ZXJuIiwicmVwbGFjZSIsImluZGV4b2YiLCJzdWJzdHIiLCJzdHJsZW4iLCJzaXplb2YiLCJhcHBlbmQiLCJjb21iaW5lIiwiY29sdW1uIiwiY2hhcmFjdGVyIiwiY2hhcmFjdGVycyIsIm5vZGUiLCJjb3B5IiwicHJldiIsInBlZWsiLCJjYXJldCIsInNsaWNlIiwiYWxsb2MiLCJkZWFsbG9jIiwiZGVsaW1pdCIsIndoaXRlc3BhY2UiLCJlc2NhcGluZyIsImNvdW50IiwiY29tbWVudGVyIiwiaWRlbnRpZmllciIsImNvbXBpbGUiLCJwYXJzZSIsInJ1bGVzIiwiY29tbWVudCIsImRlY2xhcmF0aW9uIiwicnVsZXNldCIsImoiLCJzZXJpYWxpemUiLCJzdHJpbmdpZnkiLCJtaWRkbGV3YXJlIiwicnVsZXNoZWV0Iiwid2Vha01lbW9pemUiLCJpZGVudGlmaWVyV2l0aFBvaW50VHJhY2tpbmciLCJ0b1J1bGVzIiwiZ2V0UnVsZXMiLCJjb21wYXQiLCJyZW1vdmVMYWJlbCIsInByZWZpeCIsInByZWZpeGVyIiwiY3JlYXRlQ2FjaGUiLCJjb250YWluZXIiLCJzdHlsaXMiLCJyZWFjdElzX3Byb2R1Y3Rpb25fbWluIiwicmVhY3RJc01vZHVsZSIsInJlYWN0SXMiLCJob2lzdE5vblJlYWN0U3RhdGljcyIsImlzQnJvd3NlciIsImNsYXNzTmFtZXMiLCJyZWdpc3RlclN0eWxlcyIsImluc2VydFN0eWxlcyIsInVuaXRsZXNzS2V5cyIsImlzQ3VzdG9tUHJvcGVydHkiLCJpc1Byb2Nlc3NhYmxlVmFsdWUiLCJwcm9jZXNzU3R5bGVWYWx1ZSIsInVuaXRsZXNzIiwia2V5ZnJhbWVzIiwiaGFzaFN0cmluZyIsInN5bmNGYWxsYmFjayIsInVzZUluc2VydGlvbkVmZmVjdCIsIlJlYWN0LnVzZUxheW91dEVmZmVjdCIsIlJlYWN0LmNyZWF0ZUNvbnRleHQiLCJ3aXRoRW1vdGlvbkNhY2hlIiwiZm9yd2FyZFJlZiIsInJlZiIsInVzZVRoZW1lIiwiUmVhY3QudXNlQ29udGV4dCIsImdldFRoZW1lIiwidGhlbWUiLCJUaGVtZVByb3ZpZGVyIiwiUmVhY3QuY3JlYXRlRWxlbWVudCIsIlJlYWN0LmZvcndhcmRSZWYiLCJjcmVhdGVFbW90aW9uUHJvcHMiLCJJbnNlcnRpb24iLCJSZWFjdC5GcmFnbWVudCIsImpzeCIsIkVtb3Rpb24iLCJSZWFjdC51c2VSZWYiLCJjbGFzc25hbWVzIiwiY3NzIiwiY3giLCJub29wJDEiLCJpbml0aWFsU3RhdGUiLCJjb21wdXRlUG9zaXRpb24iLCJkZXRlY3RPdmVyZmxvdyIsImFycm93IiwibWF4IiwiYXV0b1BsYWNlbWVudCIsImFsaWdubWVudCIsImZsaXAiLCJwbGFjZW1lbnRzIiwic2lkZXMiLCJzaWRlIiwicGxhY2VtZW50Iiwib3ZlcmZsb3ciLCJpbmxpbmUiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJ3aWR0aCIsImhlaWdodCIsInNoaWZ0IiwibGltaXRTaGlmdCIsImdldENvbXB1dGVkU3R5bGUiLCJnZXRDc3NEaW1lbnNpb25zIiwidW53cmFwRWxlbWVudCIsImdldFNjYWxlIiwiJCIsIm5vT2Zmc2V0cyIsImdldFZpc3VhbE9mZnNldHMiLCJzaG91bGRBZGRWaXN1YWxPZmZzZXRzIiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImdldEhUTUxPZmZzZXQiLCJjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCIsImdldENsaWVudFJlY3RzIiwiZ2V0RG9jdW1lbnRSZWN0IiwiZ2V0Vmlld3BvcnRSZWN0IiwiZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QiLCJnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IiLCJoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IiLCJnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMiLCJnZXRDbGlwcGluZ1JlY3QiLCJnZXREaW1lbnNpb25zIiwiZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQiLCJpc1N0YXRpY1Bvc2l0aW9uZWQiLCJnZXRUcnVlT2Zmc2V0UGFyZW50IiwicG9seWZpbGwiLCJnZXRPZmZzZXRQYXJlbnQiLCJnZXRFbGVtZW50UmVjdHMiLCJpc1JUTCIsIm9ic2VydmVNb3ZlIiwidGltZW91dElkIiwiYXV0b1VwZGF0ZSIsIm9mZnNldCQxIiwiYXV0b1BsYWNlbWVudCQxIiwic2hpZnQkMSIsImZsaXAkMSIsImFycm93JDEiLCJjb21wdXRlUG9zaXRpb24kMSIsInVzZUxheW91dEVmZmVjdCIsImNsZWFuVmFsdWUiLCJjbGVhbkNvbW1vblByb3BzIiwiZ2V0U3R5bGVQcm9wcyIsInJlbW92ZVByb3BzIiwicHJvcGVydGllcyIsIl9yZWYyIiwiY29udHJvbEhlaWdodCIsImNvZXJjZVBsYWNlbWVudCIsIm1lbnVDU1MiLCJfb2JqZWN0U3ByZWFkMiIsImJvcmRlclJhZGl1cyIsInNwYWNpbmciLCJjb2xvcnMiLCJNZW51UGxhY2VyIiwidXNlUmVmIiwiTWVudSIsIm1lbnVMaXN0Q1NTIiwiYmFzZVVuaXQiLCJNZW51TGlzdCIsIm5vdGljZUNTUyIsIk5vT3B0aW9uc01lc3NhZ2UiLCJMb2FkaW5nTWVzc2FnZSIsIm1lbnVQb3J0YWxDU1MiLCJNZW51UG9ydGFsIiwiY3JlYXRlUG9ydGFsIiwiY29udGFpbmVyQ1NTIiwiaXNEaXNhYmxlZCIsIlNlbGVjdENvbnRhaW5lciIsInZhbHVlQ29udGFpbmVyQ1NTIiwiVmFsdWVDb250YWluZXIiLCJpbmRpY2F0b3JzQ29udGFpbmVyQ1NTIiwiSW5kaWNhdG9yc0NvbnRhaW5lciIsIlN2ZyIsIkNyb3NzSWNvbiIsIkRvd25DaGV2cm9uIiwiYmFzZUNTUyIsIkRyb3Bkb3duSW5kaWNhdG9yIiwiQ2xlYXJJbmRpY2F0b3IiLCJpbmRpY2F0b3JTZXBhcmF0b3JDU1MiLCJJbmRpY2F0b3JTZXBhcmF0b3IiLCJsb2FkaW5nSW5kaWNhdG9yQ1NTIiwiTG9hZGluZ0RvdCIsImNzcyQyIiwiTG9hZGluZ0luZGljYXRvciIsIkNvbnRyb2wiLCJfZXhjbHVkZWQkMSIsImdyb3VwQ1NTIiwiR3JvdXAiLCJncm91cEhlYWRpbmdDU1MiLCJHcm91cEhlYWRpbmciLCJpbnB1dENTUyIsImlucHV0U3R5bGUiLCJpc0hpZGRlbiIsIklucHV0IiwibXVsdGlWYWx1ZUNTUyIsIm11bHRpVmFsdWVMYWJlbENTUyIsIm11bHRpVmFsdWVSZW1vdmVDU1MiLCJNdWx0aVZhbHVlR2VuZXJpYyIsIk11bHRpVmFsdWUiLCJjb21wb25lbnRzIiwiTGFiZWwiLCJvcHRpb25DU1MiLCJPcHRpb24iLCJwbGFjZWhvbGRlckNTUyIsIlBsYWNlaG9sZGVyIiwiU2luZ2xlVmFsdWUiLCJkZWZhdWx0Q29tcG9uZW50cyIsImlzRXF1YWwiLCJBMTF5VGV4dCIsImlzQXBwbGVEZXZpY2UiLCJnZXRBcnJheUluZGV4IiwiTGl2ZVJlZ2lvbiIsImdldE9wdGlvbkxhYmVsIiwiaXNPcHRpb25EaXNhYmxlZCIsInNjcmVlblJlYWRlclN0YXR1cyIsImFzT3B0aW9uIiwiRnJhZ21lbnQiLCJzdHJpcERpYWNyaXRpY3MiLCJ0cmltU3RyaW5nIiwiZGVmYXVsdFN0cmluZ2lmeSIsImNyZWF0ZUZpbHRlciIsImNhbmNlbFNjcm9sbCIsImJsdXJTZWxlY3RJbnB1dCIsInRhcmdldFJlZiIsIlJlcXVpcmVkSW5wdXQiLCJvbkZvY3VzIiwiaXNNYWMiLCJmb3JtYXRHcm91cExhYmVsIiwiZ2V0T3B0aW9uVmFsdWUiLCJjYXRlZ29yaXplZE9wdGlvbiIsIm9wdGlvbklkIiwiZ2V0Rm9jdXNlZE9wdGlvbklkIiwic2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyIsIlNlbGVjdCIsImN1c3RvbSIsImlzQ2xlYXJhYmxlIiwicmVxdWlyZWQiLCJNdWx0aVZhbHVlQ29udGFpbmVyIiwiTXVsdGlWYWx1ZUxhYmVsIiwiTXVsdGlWYWx1ZVJlbW92ZSIsImxvYWRpbmdNZXNzYWdlIiwibm9PcHRpb25zTWVzc2FnZSIsInJlbmRlciIsIkNvbXBvbmVudCIsInVzZUxhdGVzdCIsInVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QiLCJjb21wb3NlUmVmc18xIiwiY29tcG9zZVJlZnMiLCJzbGVlcCIsInVzZVN0YXRlMiIsInVzZUNhbGxiYWNrMiIsIk1lbnVMaXN0MiIsInVzZVJlZjIiLCJ1c2VDYWxsYmFjazMiLCJ1c2VFZmZlY3QyIiwidXNlTWVtbzIiLCJkZWZhdWx0Q29tcG9uZW50czIiLCJqc3gyIiwiX2luaXQiLCJ1dWlkdjQiLCJfX3NwcmVhZEFycmF5IiwiU3Vic2NyaXB0aW9uIiwiU3Vic2NyaWJlciIsIkNvbnN1bWVyT2JzZXJ2ZXIiLCJTYWZlU3Vic2NyaWJlciIsIk9ic2VydmFibGUiLCJvYnNlcnZhYmxlIiwiU3ltYm9sX29ic2VydmFibGUiLCJPcGVyYXRvclN1YnNjcmliZXIiLCJlcnIiLCJTdWJqZWN0IiwiQW5vbnltb3VzU3ViamVjdCIsIkJlaGF2aW9yU3ViamVjdCIsIkFjdGlvbiIsInNjaGVkdWxlciIsIkFzeW5jQWN0aW9uIiwiU2NoZWR1bGVyIiwiQXN5bmNTY2hlZHVsZXIiLCJhdHRyIiwidGl0bGUiLCJjbGFzc0dyb3VwIiwiY2xvbmVEZWVwIiwiY3JlYXRlQ29udGV4dCIsImpzeHMiLCJDaGlsZHJlbiIsImNsb25lRWxlbWVudCIsIkJhc2VDb21wb25lbnQiLCJjcmVhdGVFbGVtZW50IiwiaXNWYWxpZEVsZW1lbnQiLCJCdXR0b24iLCJpdGVtcyIsIkJ1dHRvbkNvbXBvbmVudCIsImJ1dHRvblRoZW1lIiwiZGVib3VuY2UiLCJkZWJvdW5jZU1vZHVsZSIsIl9fZGVmUHJvcCIsIl9fZGVmTm9ybWFsUHJvcCIsIl9fcHVibGljRmllbGQiLCJQdXJlQ29tcG9uZW50IiwiYWN0aXZlRWxlbWVudCIsImNvbnRhaW5zIiwiaXNJbmVydCIsImlzQ29udGVudEVkaXRhYmxlIiwiZ2V0Q2FuZGlkYXRlcyIsImdldENhbmRpZGF0ZXNJdGVyYXRpdmVseSIsImhhc1RhYkluZGV4IiwiZ2V0VGFiSW5kZXgiLCJnZXRTb3J0T3JkZXJUYWJJbmRleCIsInNvcnRPcmRlcmVkVGFiYmFibGVzIiwiaXNJbnB1dCIsImlzSGlkZGVuSW5wdXQiLCJpc0RldGFpbHNXaXRoU3VtbWFyeSIsImdldENoZWNrZWRSYWRpbyIsImlzVGFiYmFibGVSYWRpbyIsInF1ZXJ5UmFkaW9zIiwiaXNSYWRpbyIsImlzTm9uVGFiYmFibGVSYWRpbyIsImlzTm9kZUF0dGFjaGVkIiwiaXNaZXJvQXJlYSIsImlzRGlzYWJsZWRGcm9tRmllbGRzZXQiLCJpc05vZGVNYXRjaGluZ1NlbGVjdG9yRm9jdXNhYmxlIiwiaXNOb2RlTWF0Y2hpbmdTZWxlY3RvclRhYmJhYmxlIiwiaXNWYWxpZFNoYWRvd1Jvb3RUYWJiYWJsZSIsInNvcnRCeU9yZGVyIiwidGFiYmFibGUiLCJpc1RhYmJhYmxlIiwidXNlTGF0ZXN0UmVmIiwidXNlRmxvYXRpbmciLCJSZWFjdC51c2VTdGF0ZSIsIlJlYWN0LnVzZUNhbGxiYWNrIiwiUmVhY3RET00uZmx1c2hTeW5jIiwiUmVhY3QudXNlTWVtbyIsImFycm93JDIiLCJyZWdpc3RlciIsInVucmVnaXN0ZXIiLCJtYXAiLCJpbmRleCQxIiwiUmVhY3QudXNlRWZmZWN0Iiwib25PcGVuQ2hhbmdlIiwib3BlbiIsIkZvY3VzR3VhcmQiLCJSZWFjdERPTS5jcmVhdGVQb3J0YWwiLCJWaXN1YWxseUhpZGRlbkRpc21pc3MiLCJkb21SZWZlcmVuY2UiLCJGbG9hdGluZ092ZXJsYXkiLCJpc0lPUyIsImxpc3RSZWYiLCJpbmRleFJlZiIsIml0ZW0iLCJwcm9wcyIsImlzSW5zaWRlIiwiX3JlZjMiLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwidXNlSWQiLCJzcmMiLCJMaXN0SXRlbSIsIkJhc2VCdXR0b24iLCJTeW1ib2wiLCJyZXF1aXJlJCQyIiwicmVxdWlyZSQkMyIsInJlcXVpcmUkJDQiLCJyZXF1aXJlJCQ1Iiwib3RoVmFsdWUiLCJVaW50OEFycmF5IiwiQnVmZmVyIiwiaXNMZW5ndGgiLCJpc1R5cGVkQXJyYXkiLCJQcm9taXNlIiwicmVxdWlyZSQkNiIsInJlcXVpcmUkJDciLCJpc0VxdWFsV2l0aCIsIm1lbW9pemUiLCJqc29ucG9pbnRlciIsInJlcXVpcmUkJDgiLCJyZXF1aXJlJCQ5IiwicmVxdWlyZSQkMTAiLCJyZXF1aXJlJCQxMSIsInJlcXVpcmUkJDEyIiwicmVxdWlyZSQkMTMiLCJyZXF1aXJlJCQxNCIsInJlcXVpcmUkJDE1IiwicmVxdWlyZSQkMTYiLCJyZXF1aXJlJCQxNyIsInJlcXVpcmUkJDE4IiwicmVxdWlyZSQkMTkiLCJyZXF1aXJlJCQyMCIsInJlcXVpcmUkJDIxIiwia2V5IiwiaWRlbnRpdHkiLCJvbWl0IiwiaGFzIiwiY29sbGVjdGlvbiIsInJlZHVjZSIsInRpbWVzIiwiZ2V0Iiwib2JqZWN0IiwiZmxhdHRlbkRlZXAiLCJ1bmlxIiwiZGVmYXVsdHMiLCJpc0Jvb2xlYW4iLCJjb21wYXJlIiwibGliIiwiaXNJbnRlZ2VyIiwiZm9yRWFjaCIsIm1lcmdlU2NoZW1hcyIsImFsbCIsInVuaXF1ZUl0ZW1zIiwiYWxsT2YiLCJzY2hlbWFzIiwiY29tbW9uIiwibWVyZ2VkIiwia2V5cyIsIm1lcmdlciIsInVuaW9uIiwiYWNjIiwiYWRkaXRpb25hbFByb3BlcnRpZXMiLCJvbmVPZiIsImFueU9mIiwiZGVwZW5kZW5jaWVzIiwiYWx0U2NoZW1hcyIsIkFkZGl0aW9uYWxJdGVtc0hhbmRsaW5nIiwiaXNFbXB0eSIsIiRpZCIsImlzTmlsIiwic2V0V2l0aCIsInRlbXBsYXRlcyIsIl9qc3giLCJ0b1BhdGgiLCJUcmFuc2xhdGFibGVTdHJpbmciLCJ0aGlzIiwiZXhwb3J0cyIsInRvQXJyYXkiLCJIRVhESUckJCIsIlBDVF9FTkNPREVEJCIsIlVOUkVTRVJWRUQkJCIsInNsaWNlZFRvQXJyYXkiLCJ0b0NvbnN1bWFibGVBcnJheSIsImZsb29yIiwidWNzMmVuY29kZSIsImJhc2ljVG9EaWdpdCIsImRpZ2l0VG9CYXNpYyIsImFkYXB0IiwiZGVjb2RlIiwidG9Vbmljb2RlIiwidG9BU0NJSSIsImMyIiwiZGVjb2RlVW5yZXNlcnZlZCIsImZpZWxkcyIsImJhc2UiLCJ1Y3MybGVuZ3RoIiwiam9pblBhdGhzIiwidXRpbCIsImpzb25TY2hlbWFUcmF2ZXJzZU1vZHVsZSIsInJlc29sdmVTY2hlbWEiLCJpdCIsIiRzY2hlbWEiLCIkcnVsZXNHcm91cCIsIiRydWxlIiwidmFsaWRhdGUiLCJfcm9vdCIsImxvY2FsUmVmcyIsImJhc2VJZCIsInJlZlZhbCIsInNjaGVtYSIsImtleXdvcmQiLCJjYWNoZU1vZHVsZSIsIkNhY2hlIiwiVVJMIiwiJHNjaCIsInJlcXVpcmUkJDIyIiwicmVxdWlyZSQkMjMiLCJkYXRhVHlwZSIsImRlZmluaXRpb24iLCJBanYiLCJhanYiLCJrZXllZEZvcm1EYXRhIiwiZm9ybURhdGEiLCJ3aWRnZXRzIiwiU2NoZW1hRmllbGQiLCJyZXRyaWV2ZWRPcHRpb25zIiwic2NoZW1hVXRpbHMiLCJfanN4cyIsIlN0cmluZ0ZpZWxkIiwiZS5jcmVhdGVFbGVtZW50IiwiZS5jbG9uZUVsZW1lbnQiLCJ1bnNldCIsImRlc2NyaXB0aW9uIiwibmFtZSIsIkZpZWxkVGVtcGxhdGUiLCJGaWVsZEhlbHBUZW1wbGF0ZSIsIkZpZWxkRXJyb3JUZW1wbGF0ZSIsImlkIiwiX0ZyYWdtZW50IiwiX3NjaGVtYSIsIk11bHRpU2NoZW1hRmllbGQiLCJDb3B5QnV0dG9uIiwiTW92ZURvd25CdXR0b24iLCJNb3ZlVXBCdXR0b24iLCJSZW1vdmVCdXR0b24iLCJBcnJheUZpZWxkRGVzY3JpcHRpb25UZW1wbGF0ZSIsIkFycmF5RmllbGRJdGVtVGVtcGxhdGUiLCJBcnJheUZpZWxkVGl0bGVUZW1wbGF0ZSIsIkFkZEJ1dHRvbiIsIlJFUVVJUkVEX0ZJRUxEX1NZTUJPTCIsIldyYXBJZkFkZGl0aW9uYWxUZW1wbGF0ZSIsIkJ1dHRvblRlbXBsYXRlcyIsInJhbmdlIiwiU2VsZWN0V2lkZ2V0Iiwic3RhdGUiLCJBbHREYXRlV2lkZ2V0IiwiQmFzZUlucHV0VGVtcGxhdGUiLCJkaXNhYmxlZCIsImNyZWF0ZVJlZiIsIlN1Ym1pdEJ1dHRvbiIsIkZvcm0iLCJjb250YWN0IiwiUHJvcFR5cGVzLmluc3RhbmNlT2YiLCJQcm9wVHlwZXMuZnVuYyIsImQuUlVMRVNFVCIsImQucHJlZml4ZXIiLCJkLnN0cmluZ2lmeSIsImQuY29tcGlsZSIsImQuc2VyaWFsaXplIiwiZC5taWRkbGV3YXJlIiwiZC5ydWxlc2hlZXQiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfYXJyYXlMaWtlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJfc2xpY2VkVG9BcnJheSIsInVzZVN0YXRlTWFuYWdlciIsIl9jbGFzc0NhbGxDaGVjayIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwiX2NyZWF0ZUNsYXNzIiwiX3NldFByb3RvdHlwZU9mIiwiX2luaGVyaXRzIiwiX2dldFByb3RvdHlwZU9mIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2NyZWF0ZVN1cGVyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIl90b0NvbnN1bWFibGVBcnJheSIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwiLCJyZWFjdCIsInJlYWN0RG9tIiwiX2V4Y2x1ZGVkJDQiLCJhcHBseVByZWZpeFRvTmFtZSIsImlzRG9jdW1lbnRFbGVtZW50Iiwibm9ybWFsaXplZEhlaWdodCIsImdldFNjcm9sbFRvcCIsInNjcm9sbFRvIiwiZ2V0U2Nyb2xsUGFyZW50IiwiZWFzZU91dEN1YmljIiwiYW5pbWF0ZWRTY3JvbGxUbyIsInNjcm9sbEludG9WaWV3IiwiZ2V0Qm91bmRpbmdDbGllbnRPYmoiLCJpc1RvdWNoQ2FwYWJsZSIsImlzTW9iaWxlRGV2aWNlIiwicGFzc2l2ZU9wdGlvbkFjY2Vzc2VkIiwic3VwcG9ydHNQYXNzaXZlRXZlbnRzIiwibm90TnVsbGlzaCIsInZhbHVlVGVybmFyeSIsInNpbmdsZVZhbHVlQXNWYWx1ZSIsIm11bHRpVmFsdWVBc1ZhbHVlIiwiX2V4Y2x1ZGVkJDMiLCJfZXhjbHVkZWQyJDEiLCJnZXRNZW51UGxhY2VtZW50IiwiYWxpZ25Ub0NvbnRyb2wiLCJQb3J0YWxQbGFjZW1lbnRDb250ZXh0IiwiTWVudSQxIiwibm9PcHRpb25zTWVzc2FnZUNTUyIsImxvYWRpbmdNZXNzYWdlQ1NTIiwiX3RlbXBsYXRlT2JqZWN0IiwiX2V4Y2x1ZGVkJDIiLCJfZXhjbHVkZWQyIiwiZHJvcGRvd25JbmRpY2F0b3JDU1MiLCJjbGVhckluZGljYXRvckNTUyIsImxvYWRpbmdEb3RBbmltYXRpb25zIiwiY3NzJDEiLCJDb250cm9sJDEiLCJHcm91cCQxIiwiY29udGFpbmVyU3R5bGUiLCJzcGFjaW5nU3R5bGUiLCJJbnB1dCQxIiwiTXVsdGlWYWx1ZSQxIiwiT3B0aW9uJDEiLCJQbGFjZWhvbGRlciQxIiwiU2luZ2xlVmFsdWUkMSIsIm1lbW9pemVPbmUiLCJBMTF5VGV4dCQxIiwiZGVmYXVsdEFyaWFMaXZlTWVzc2FnZXMiLCJndWlkYW5jZSIsIm9uRmlsdGVyIiwiTGl2ZVJlZ2lvbiQxIiwiZGlhY3JpdGljcyIsImFueURpYWNyaXRpYyIsImRpYWNyaXRpY1RvQmFzZSIsIm1lbW9pemVkU3RyaXBEaWFjcml0aWNzRm9ySW5wdXQiLCJEdW1teUlucHV0IiwidXNlU2Nyb2xsQ2FwdHVyZSIsIlNUWUxFX0tFWVMiLCJMT0NLX1NUWUxFUyIsInByZXZlbnRUb3VjaE1vdmUiLCJhbGxvd1RvdWNoTW92ZSIsInByZXZlbnRJbmVydGlhU2Nyb2xsIiwiaXNUb3VjaERldmljZSIsImNhblVzZURPTSIsImFjdGl2ZVNjcm9sbExvY2tzIiwibGlzdGVuZXJPcHRpb25zIiwidXNlU2Nyb2xsTG9jayIsIl9yZWYyJDEiLCJTY3JvbGxNYW5hZ2VyIiwiUmVxdWlyZWRJbnB1dCQxIiwidGVzdFBsYXRmb3JtIiwiaXNJUGhvbmUiLCJpc0lQYWQiLCJnZXRPcHRpb25MYWJlbCQxIiwiZ2V0T3B0aW9uVmFsdWUkMSIsImRlZmF1bHRTdHlsZXMiLCJtZW51R3V0dGVyIiwiZGVmYXVsdFRoZW1lIiwiZGVmYXVsdFByb3BzIiwidG9DYXRlZ29yaXplZE9wdGlvbiIsIl9pc09wdGlvbkRpc2FibGVkIiwiX2lzT3B0aW9uU2VsZWN0ZWQiLCJidWlsZENhdGVnb3JpemVkT3B0aW9ucyIsImlzRm9jdXNhYmxlIiwiYnVpbGRGb2N1c2FibGVPcHRpb25zRnJvbUNhdGVnb3JpemVkT3B0aW9ucyIsImJ1aWxkRm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMiLCJidWlsZEZvY3VzYWJsZU9wdGlvbnMiLCJfZmlsdGVyT3B0aW9uIiwiZ2V0TmV4dEZvY3VzZWRWYWx1ZSIsImdldE5leHRGb2N1c2VkT3B0aW9uIiwiaW5zdGFuY2VJZCIsIlN0YXRlTWFuYWdlZFNlbGVjdCIsIlN0YXRlTWFuYWdlZFNlbGVjdCQxIiwicmVhY3RTZWxlY3RfY2pzTW9kdWxlIiwic3R5bGVkIiwiQWRkcmVzc01vZGFsIiwiYWRkcmVzcyIsIlByb3BUeXBlcy5udW1iZXIiLCJQcm9wVHlwZXMuc3RyaW5nIiwib3JkZXIiLCJyZWFjdFNlbGVjdEFzeW5jX2Nqc01vZHVsZSIsIkFzeW5jU2VsZWN0IiwidXNlRGVib3VuY2UiLCJ1c2VEZWJvdW5jZWRDYWxsYmFjayIsIlByb3BUeXBlcy5hcnJheSIsImlzRGF0ZSIsIlJlYWN0Mi51c2VDb250ZXh0IiwiUmVhY3QyLnVzZUxheW91dEVmZmVjdCIsIlJlYWN0Mi51c2VSZWYiLCJSZWFjdDIudXNlQ2FsbGJhY2siLCJSZWFjdDIuY3JlYXRlQ29udGV4dCIsIlJlYWN0Mi51c2VNZW1vIiwiUmVhY3QyLmNyZWF0ZUVsZW1lbnQiLCJSZWFjdDIuRnJhZ21lbnQiLCJSZWFjdDIuQ29tcG9uZW50IiwibWF0Y2hlczIiLCJnZXRDaGlsZHJlbiIsIlJlYWN0My5tZW1vIiwiUmVhY3QzLnVzZU1lbW8iLCJSZWFjdDMuY3JlYXRlRWxlbWVudCIsIlJlYWN0My5DaGlsZHJlbiIsIlJlYWN0My5pc1ZhbGlkRWxlbWVudCIsIlJlYWN0My5GcmFnbWVudCIsIlJlYWN0OS51c2VDb250ZXh0IiwiUmVhY3Q5LmNyZWF0ZUNvbnRleHQiLCJSZWFjdDkudXNlU3RhdGUiLCJSZWFjdDkudXNlUmVmIiwiUmVhY3Q5LnVzZUVmZmVjdCIsIlJlYWN0OS51c2VNZW1vIiwiUmVhY3Q5LmNyZWF0ZUVsZW1lbnQiLCJtMiIsIlJlYWN0OS5GcmFnbWVudCIsIlJlYWN0MTAudXNlUmVmIiwiUmVhY3QxMC51c2VTdGF0ZSIsIlJlYWN0MTAudXNlQ2FsbGJhY2siLCJSZWFjdDEwLnN0YXJ0VHJhbnNpdGlvbiIsIlJlYWN0MTAudXNlTGF5b3V0RWZmZWN0IiwiUmVhY3QxMC5jcmVhdGVFbGVtZW50IiwiUmVhY3QxMC5mb3J3YXJkUmVmIiwiUmVhY3QxMC51c2VDb250ZXh0IiwiUmVhY3QxMC5GcmFnbWVudCIsIlRva2VuIiwiUm91dGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWNBLE1BQUlBO0FBQ0osR0FBQyxTQUFVQSxVQUFTO0FBR2hCLEtBQUMsU0FBVSxTQUFTO0FBQ2hCLFVBQUksT0FBTyxPQUFPLGVBQWUsV0FBVyxhQUN4QyxPQUFPQyxtQkFBVyxXQUFXQSxpQkFDekIsT0FBTyxTQUFTLFdBQVcsT0FDdkIsT0FBTyxTQUFTLFdBQVcsT0FDdkIsZUFBZ0I7QUFDaEMsVUFBSSxXQUFXLGFBQWFELFFBQU87QUFDbkMsVUFBSSxPQUFPLEtBQUssWUFBWSxhQUFhO0FBQ3JDLG1CQUFXLGFBQWEsS0FBSyxTQUFTLFFBQVE7QUFBQSxNQUMxRDtBQUNRLGNBQVEsVUFBVSxJQUFJO0FBQ3RCLFVBQUksT0FBTyxLQUFLLFlBQVksYUFBYTtBQUNyQyxhQUFLLFVBQVVBO0FBQUEsTUFDM0I7QUFDUSxlQUFTLGFBQWEsUUFBUSxVQUFVO0FBQ3BDLGVBQU8sU0FBVSxLQUFLLE9BQU87QUFDekIs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QSxJQUFHO0FBQUEsTUFBQSxLQUFLO0FBQUEsTUFBUyxLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBYyxLQUFLO0FBQUEsTUFBTyxLQUFLO0FBQUEsTUFBTSxLQUFLO0FBQUEsTUFBVyxLQUFLO0FBQUEsTUFBVyxLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQUEsTUFBWSxLQUFLO0FBQUEsTUFBTyxLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQUEsTUFBVyxLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQUEsTUFBVyxLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBWSxLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBTyxLQUFLO0FBQUEsTUFBZ0IsS0FBSztBQUFBLE1BQWMsS0FBSztBQUFBLE1BQVksS0FBSztBQUFBLE1BQWEsS0FBSztBQUFBLE1BQVEsS0FBSztBQUFBLE1BQVMsS0FBSztBQUFBLE1BQVMsS0FBSztBQUFBLE1BQVMsS0FBSztBQUFBLE1BQWMsS0FBSztBQUFBLE1BQVcsS0FBSztBQUFBLE1BQWEsS0FBSztBQUFBLE1BQWUsS0FBSztBQUFBLE1BQVMsS0FBSztBQUFBLE1BQWtCLEtBQUs7QUFBQSxNQUFZLEtBQUs7QUFBQSxNQUFtQixLQUFLO0FBQUEsTUFBaUIsS0FBSztBQUFBLE1BQW9CLEtBQUs7QUFBQSxNQUFhLEtBQUs7QUFBQSxNQUFZLEtBQUs7QUFBQSxNQUFjLEtBQUs7QUFBQSxNQUFPLEtBQUs7QUFBQSxNQUFtQixLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBYSxLQUFLO0FBQUEsTUFBVyxLQUFLO0FBQUEsTUFBUyxLQUFLO0FBQWMsZUFBTztBQUFBLE1BQUUsS0FBSztBQUFBLE1BQU8sS0FBSztBQUFBLE1BQVksS0FBSztBQUFBLE1BQVcsS0FBSztBQUFBLE1BQVksS0FBSztBQUFBLE1BQVcsS0FBSztBQUFBLE1BQVksS0FBSztBQUFBLE1B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LEdBQUUsV0FBVztBQUFFLGNBQUlELEtBQUU7QUFBRyxVQUFBVCxNQUFHLEdBQUdMLElBQUVLLEVBQUMsSUFBRSxHQUFHUyxJQUFFQyxFQUFDLEtBQUdmLEdBQUUsUUFBTUEsR0FBRSxRQUFNLFFBQU0sR0FBRVMsS0FBRSxPQUFHLEtBQUdUO0FBQUEsUUFBRTtBQUFBLE1BQUMsT0FBSztBQUFDLFlBQUcsR0FBR0EsRUFBQyxFQUFFLE9BQU0sTUFBTVQsR0FBRSxHQUFHLENBQUM7QUFBRSxRQUFBUyxHQUFFLFFBQU1BLEdBQUUsUUFBTSxRQUFNO0FBQUUsUUFBQVMsS0FBRTtBQUFHLGFBQUdUO0FBQUEsTUFBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHQSxJQUFFO0FBQUMsU0FBSUEsS0FBRUEsR0FBRSxRQUFPLFNBQU9BLE1BQUcsTUFBSUEsR0FBRSxPQUFLLE1BQUlBLEdBQUUsT0FBSyxPQUFLQSxHQUFFLE1BQUssQ0FBQUEsS0FBRUEsR0FBRTtBQUFPLFNBQUdBO0FBQUEsRUFBQztBQUNoYSxXQUFTLEdBQUdBLElBQUU7QUFBQyxRQUFHQSxPQUFJLEdBQUcsUUFBTTtBQUFHLFFBQUcsQ0FBQ1MsR0FBRSxRQUFPLEdBQUdULEVBQUMsR0FBRVMsS0FBRSxNQUFHO0FBQUcsUUFBSUo7QUFBRSxLQUFDQSxLQUFFLE1BQUlMLEdBQUUsUUFBTSxFQUFFSyxLQUFFLE1BQUlMLEdBQUUsU0FBT0ssS0FBRUwsR0FBRSxNQUFLSyxLQUFFLFdBQVNBLE1BQUcsV0FBU0EsTUFBRyxDQUFDLEdBQUdMLEdBQUUsTUFBS0EsR0FBRSxhQUFhO0FBQUcsUUFBR0ssT0FBSUEsS0FBRSxLQUFJO0FBQUMsVUFBRyxHQUFHTCxFQUFDLEVBQUUsT0FBTSxHQUFFLEdBQUcsTUFBTVQsR0FBRSxHQUFHLENBQUM7QUFBRSxhQUFLYyxLQUFHLElBQUdMLElBQUVLLEVBQUMsR0FBRUEsS0FBRSxHQUFHQSxHQUFFLFdBQVc7QUFBQSxJQUFDO0FBQUMsT0FBR0wsRUFBQztBQUFFLFFBQUcsT0FBS0EsR0FBRSxLQUFJ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QUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxH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dkUsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxjQUFjLENBQUM7QUFBQSxRQUNiLGNBQWMsQ0FBQyxRQUFRLFNBQVMsT0FBTyxVQUFVLFNBQVM7QUFBQSxNQUNsRSxDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BTUQsR0FBRyxDQUFDO0FBQUEsUUFDRixHQUFHLENBQUMsT0FBTztBQUFBLE1BQ25CLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsSUFBSSxDQUFDO0FBQUEsUUFDSCxJQUFJLENBQUMsT0FBTztBQUFBLE1BQ3BCLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsSUFBSSxDQUFDO0FBQUEsUUFDSCxJQUFJLENBQUMsT0FBTztBQUFBLE1BQ3BCLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsSUFBSSxDQUFDO0FBQUEsUUFDSCxJQUFJLENBQUMsT0FBTztBQUFBLE1BQ3BCLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsSUFBSSxDQUFDO0FBQUEsUUFDSCxJQUFJLENBQUMsT0FBTztBQUFBLE1BQ3BCLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsSUFBSSxDQUFDO0FBQUEsUUFDSCxJQUFJLENBQUMsT0FBTztBQUFBLE1BQ3BCLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsSUFBSSxDQUFDO0FBQUEsUUFDSCxJQUFJLENBQUMsT0FBTztBQUFBLE1BQ3BCLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsSUFBSSxDQUFDO0FBQUEsUUFDSCxJQUFJLENBQUMsT0FBTztBQUFBLE1BQ3BCLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsSUFBSSxDQUFDO0FBQUEsUUFDSCxJQUFJLENBQUMsT0FBTztBQUFBLE1BQ3BCLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsR0FBRyxDQUFDO0FBQUEsUUFDRixHQUFHLENB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QUFBLE1BQzNDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsYUFBYSxDQUFDO0FBQUEsUUFDWixhQUFhLHdCQUF1QjtBQUFBLE1BQzVDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsYUFBYSxDQUFDO0FBQUEsUUFDWixhQUFhLHdCQUF1QjtBQUFBLE1BQzVDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsYUFBYSxDQUFDO0FBQUEsUUFDWixhQUFhLHdCQUF1QjtBQUFBLE1BQzVDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsYUFBYSxDQUFDO0FBQUEsUUFDWixhQUFhLHdCQUF1QjtBQUFBLE1BQzVDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsYUFBYSxDQUFDO0FBQUEsUUFDWixhQUFhLHdCQUF1QjtBQUFBLE1BQzVDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsYUFBYSxDQUFDO0FBQUEsUUFDWixhQUFhLHdCQUF1QjtBQUFBLE1BQzVDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsYUFBYSxDQUFDO0FBQUEsUUFDWixhQUFhLHdCQUF1QjtBQUFBLE1BQzVDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsYUFBYSxDQUFDO0FBQUEsUUFDWixhQUFhLHdCQUF1QjtBQUFBLE1BQzVDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsWUFBWSxDQUFDO0FBQUEsUUFDWCxZQUFZLHdCQUF1QjtBQUFBLE1BQzNDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsYUFBYSxDQUFDO0FBQUEsUUFDWixhQUFhLHdCQUF1QjtBQUFBLE1BQzVDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0QsYUFBYSxDQUFDO0FBQUEsUUFDWixhQUFhLHdCQUF1QjtBQUFBLE1BQzVDLENBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1B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Q1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVBQ1gsR0FBRztBQUFBLElBQ0QsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLEVB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RUFDSixDQUFBO0FBR1I7QUN2RE8sTUFBTSxJQUFJO0FBQUEsRUFLYixZQUFZLEtBQWE7QUFKakI7QUFDQTtBQUlBLFFBQUFoTyxTQUFROEwsU0FBVSxRQUFRd29CLE9BQUs7QUFDbkMsWUFBUSxJQUFJLEdBQUc7QUFDZixJQUFBdDBCLE9BQU0sZUFBZTtBQUNyQixJQUFBQSxPQUFNLEtBQUs7QUFBQSxFQUFBO0FBQUEsRUFHZixPQUFhO0FBRVQsU0FBSyxRQUFRO0FBQUEsRUFBQTtBQUFBLEVBR2pCLFVBQVU7QUFDTixVQUFNLE9BQU8sU0FBUyxXQUFXLFNBQVMsZUFBZSxNQUFNLENBQUM7QUFFM0QsU0FBQTtBQUFBLDRDQUNBLFVBQVUsVUFBVixFQUNHLFVBQUNnTyxrQ0FBQSxJQUFBdW1CLFlBQUEsRUFDRyxpREFBQyxRQUNHLEVBQUEsVUFBQTtBQUFBLFFBQUF2bUIsc0NBQUMsU0FBTSxNQUFLLEtBQUksU0FBU0Esc0NBQUMsZ0JBQWMsQ0FBQSxHQUFJO0FBQUEsOENBQzNDLE9BQU0sRUFBQSxNQUFLLFVBQVMsU0FBU0Esa0NBQUEsSUFBQyxpQkFBYyxFQUFJLENBQUE7QUFBQSxNQUFBLEVBQ3JELENBQUEsRUFDSixDQUFBLEVBQ0osQ0FBQTtBQUFBLElBQ0o7QUFBQSxFQUFBO0FBQUEsRUFJSixNQUFZO0FBQUEsRUFBQTtBQUloQjtBQ3hDQSxJQUFJLE1BQU0sSUFBSSxJQUFJLFNBQVM7QUFDM0IsSUFBSSxLQUFLO0FBQ1QsSUFBSSxJQUFJOyIsInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU2LDU3LDU4LDU5LDYwLDYxLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDEyNywxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzOCwxMzksMTQwLDE0MSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsMzg0LDM4NSwzODYsMzg3LDM4OCwzODksMzkwLDM5MSwzOTIsMzkzLDM5NCwzOTUsMzk2LDM5NywzOTgsMzk5LDQwMCw0MDEsNDAyLDQwMyw0MDQsNDA1LDQwNiw0MDcsNDA4LDQwOSw0MTAsNDExLDQxMiw0MTMsNDE0LDQxNSw0MTYsNDE3LDQxOCw0MTksNDIwLDQyMSw0MjIsNDIzLDQyNCw0MjUsNDI2LDQyNyw0MjgsNDI5LDQzMCw0MzEsNDMyLDQzMyw0MzQsNDM1LDQzNiw0MzcsNDM4LDQzOSw0NDAsNDQxLDQ0Miw0NDMsNDQ0LDQ0NSw0NDYsNDQ3LDQ0OCw0NDksNDUwLDQ1MSw0NTIsNDUzLDQ1NCw0NTUsNDU2LDQ1Nyw0NTgsNDU5LDQ2MCw0NjEsNDYyLDQ2Myw0NjQsNDY1LDQ2Niw0NjcsNDY4LDQ2OSw0NzAsNDcxLDQ3Miw0NzMsNDc0LDQ3NSw0NzYsNDc3LDQ3OCw0NzksNDgwLDQ4MSw0ODIsNDgzLDQ4NCw0ODUsNDg2LDQ4Nyw0ODgsNDg5LDQ5MCw0OTEsNDkyLDQ5Myw0OTQsNDk1LDQ5Niw0OTcsNDk4LDQ5OSw1MDAsNTAxLDUwMiw1MDMsNTA0LDUwNSw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MTIsNTEzLDUxNCw1MTUsNTE2LDUxNyw1MTgsNTE5LDUyMCw1MjEsNTIyLDUyMyw1MjQsNTI1LDUyNiw1MjcsNTI4LDUyOSw1MzAsNTMxLDUzMiw1MzMsNTM0LDUzNSw1MzYsNTM3LDUzOCw1MzksNTQwLDU0MSw1NDIsNTQzLDU0NCw1NDUsNTQ2LDU0Nyw1NDgsNTQ5LDU1MCw1NTEsNTUyLDU1Myw1NTQsNTU1LDU1Niw1NTcsNTU4LDU1OSw1NjAsNTYxLDU2Miw1NjMsNTY0LDU2NSw1NjYsNTY3LDU2OCw1NjksNTcwLDU3MSw1NzIsNTczLDU3NCw1NzUsNTc2LDU3Nyw1NzgsNTc5LDU4MCw1ODEsNTgyLDU4Myw1ODQsNTg1LDU4Niw1ODcsNTg4LDU4OSw1OTAsNTkxLDU5Miw1OTMsNTk0LDU5NSw1OTYsNTk3LDU5OCw1OTksNjAwLDYwMSw2MDIsNjAzLDYwNCw2MDUsNjA2LDYwNyw2MDgsNjA5LDYxMCw2MTEsNjEyLDYxMyw2MTQsNjE1LDYxNiw2MTcsNjE4LDYxOSw2MjAsNjIxLDYyMiw2MjMsNjI0LDYyNSw2MjYsNjI3LDYyOCw2MjksNjMwLDYzMSw2MzIsNjMzLDYzNCw2MzUsNjM2LDYzNyw2MzgsNjM5LDY0MCw2NDEsNjQyLDY0Myw2NDQsNjQ1LDY0Niw2NDcsNjQ4LDY0OSw2NTAsNjUxLDY1Miw2NTMsNjU0LDY1NSw2NTYsNjU3LDY1OCw2NTksNjYwLDY2MSw2NjIsNjYzLDY2NCw2NjUsNjY2LDY2Nyw2NjgsNjY5LDY3MCw2NzEsNjcyLDY3Myw2NzQsNjc1LDY3Niw2NzcsNjc4LDY3OSw2ODAsNjgxLDY4Miw2ODMsNjg0LDY4NSw2ODYsNjg3LDY4OCw2ODksNjkwLDY5MSw2OTIsNjkzLDY5NCw2OTUsNjk2LDY5Nyw2OTgsNjk5LDcwMCw3MDEsNzAyLDcwMyw3MDQsNzA1LDcwNiw3MDcsNzA4LDcwOSw3MTAsNzExLDcxMiw3MTMsNzE0LDcxNSw3MTYsNzE3LDcxOCw3MTksNzIwLDcyMSw3MjIsNzIzLDcyNCw3MjUsNzI2LDcyNyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw3MzQsNzM1LDczNiw3MzcsNzM4LDczOSw3NDAsNzQxLDc0Miw3NDMsNzQ0LDc0NSw3NDYsNzQ3LDc0OCw3NDksNzUwLDc1MSw3NTIsNzUzLDc1NCw3NTUsNzU2LDc1Nyw3NTgsNzU5LDc2MCw3NjEsNzYyLDc2Myw3NjQsNzY1LDc2Niw3NjcsNzY4LDc2OSw3NzAsNzcxLDc3Miw3NzMsNzc0LDc3NSw3NzYsNzc3LDc3OCw3NzksNzgwLDc4MSw3ODIsNzgzLDc4NCw3ODUsNzg2LDc4Nyw3ODgsNzg5LDc5MCw3OTYsNzk3LDc5OCw3OTksODAwLDgwMSw4MDIsODAzLDgwNCw4MDUsODA2LDgwNyw4MDgsODA5LDgxMCw4MTEsODEyLDgxMyw4MTQsODE1LDgxNiw4MTcsODE4LDgxOSw4MjAsODIxLDgyMiw4MjMsODI0LDgyNSw4MjYsODI3LDgyOCw4MjksODMwLDgzMSw4MzIsODMzLDgzNCw4MzUsODM2LDgzNyw4MzgsODM5LDg0MCw4NjAsODYxLDg2Miw4NjMsODY2LDg3OSw4ODBdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVmbGVjdC1tZXRhZGF0YUAwLjIuMi9ub2RlX21vZHVsZXMvcmVmbGVjdC1tZXRhZGF0YS9SZWZsZWN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdEAxOC4zLjEvbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC5wcm9kdWN0aW9uLm1pbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3RAMTguMy4xL25vZGVfbW9kdWxlcy9yZWFjdC9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3RAMTguMy4xL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0QDE4LjMuMS9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9iaW5kLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL3V0aWxzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3NFcnJvci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL251bGwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy90b0Zvcm1EYXRhLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvQXhpb3NVUkxTZWFyY2hQYXJhbXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9idWlsZFVSTC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL0ludGVyY2VwdG9yTWFuYWdlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9kZWZhdWx0cy90cmFuc2l0aW9uYWwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vYnJvd3Nlci9jbGFzc2VzL1VSTFNlYXJjaFBhcmFtcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9wbGF0Zm9ybS9icm93c2VyL2NsYXNzZXMvRm9ybURhdGEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vYnJvd3Nlci9jbGFzc2VzL0Jsb2IuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vYnJvd3Nlci9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9wbGF0Zm9ybS9jb21tb24vdXRpbHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy90b1VSTEVuY29kZWRGb3JtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvZm9ybURhdGFUb0pTT04uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvZGVmYXVsdHMvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9wYXJzZUhlYWRlcnMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9BeGlvc0hlYWRlcnMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS90cmFuc2Zvcm1EYXRhLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9pc0NhbmNlbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvQ2FuY2VsZWRFcnJvci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL3NldHRsZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3BhcnNlUHJvdG9jb2wuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9zcGVlZG9tZXRlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3Rocm90dGxlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcHJvZ3Jlc3NFdmVudFJlZHVjZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc1VSTFNhbWVPcmlnaW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb29raWVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNBYnNvbHV0ZVVSTC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2NvbWJpbmVVUkxzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvYnVpbGRGdWxsUGF0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL21lcmdlQ29uZmlnLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcmVzb2x2ZUNvbmZpZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9hZGFwdGVycy94aHIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb21wb3NlU2lnbmFscy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYXhpb3NAMS43Ljkvbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3RyYWNrU3RyZWFtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2FkYXB0ZXJzL2ZldGNoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2FkYXB0ZXJzL2FkYXB0ZXJzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZGlzcGF0Y2hSZXF1ZXN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2Vudi9kYXRhLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvdmFsaWRhdG9yLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3MuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL0NhbmNlbFRva2VuLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvc3ByZWFkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNBeGlvc0Vycm9yLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9heGlvc0AxLjcuOS9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvSHR0cFN0YXR1c0NvZGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2F4aW9zQDEuNy45L25vZGVfbW9kdWxlcy9heGlvcy9saWIvYXhpb3MuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3RzeXJpbmdlLW5lb0A1LjEuMC9ub2RlX21vZHVsZXMvdHN5cmluZ2UtbmVvL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9zZXJ2aWNlcy90b2tlbi50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc2NoZWR1bGVyQDAuMjMuMi9ub2RlX21vZHVsZXMvc2NoZWR1bGVyL2Nqcy9zY2hlZHVsZXIucHJvZHVjdGlvbi5taW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3NjaGVkdWxlckAwLjIzLjIvbm9kZV9tb2R1bGVzL3NjaGVkdWxlci9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3QtZG9tQDE4LjMuMS9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Nqcy9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LWRvbUAxOC4zLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3QtZG9tQDE4LjMuMS9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2NsaWVudC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGViYXkrbmljZS1tb2RhbC1yZWFjdEAxLjIuMTMvbm9kZV9tb2R1bGVzL0BlYmF5L25pY2UtbW9kYWwtcmVhY3QvbGliL2VzbS9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvc2hvcC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcHJvcC10eXBlc0AxNS44LjEvbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9wcm9wLXR5cGVzQDE1LjguMS9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3Byb3AtdHlwZXNAMTUuOC4xL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1Byb3BlcnR5S2V5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRoSG9sZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5TGltaXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlMaWtlVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9ub25JdGVyYWJsZVJlc3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9kaXN0L3VzZVN0YXRlTWFuYWdlci03ZTFlODQ4OS5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjay5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zZXRQcm90b3R5cGVPZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9nZXRQcm90b3R5cGVPZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRob3V0SG9sZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL25vbkl0ZXJhYmxlU3ByZWFkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZW1vdGlvbitzaGVldEAxLjQuMC9ub2RlX21vZHVsZXMvQGVtb3Rpb24vc2hlZXQvZGlzdC9lbW90aW9uLXNoZWV0LmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc3R5bGlzQDQuMi4wL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL0VudW0uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3N0eWxpc0A0LjIuMC9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9VdGlsaXR5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsaXNANC4yLjAvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvVG9rZW5pemVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsaXNANC4yLjAvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvUGFyc2VyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsaXNANC4yLjAvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvU2VyaWFsaXplci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc3R5bGlzQDQuMi4wL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL01pZGRsZXdhcmUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3dlYWstbWVtb2l6ZUAwLjQuMC9ub2RlX21vZHVsZXMvQGVtb3Rpb24vd2Vhay1tZW1vaXplL2Rpc3QvZW1vdGlvbi13ZWFrLW1lbW9pemUuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZW1vdGlvbittZW1vaXplQDAuOS4wL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9tZW1vaXplL2Rpc3QvZW1vdGlvbi1tZW1vaXplLmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGVtb3Rpb24rY2FjaGVAMTEuMTQuMC9ub2RlX21vZHVsZXMvQGVtb3Rpb24vY2FjaGUvZGlzdC9lbW90aW9uLWNhY2hlLmJyb3dzZXIuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1pc0AxNi4xMy4xL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LWlzQDE2LjEzLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9ob2lzdC1ub24tcmVhY3Qtc3RhdGljc0AzLjMuMi9ub2RlX21vZHVsZXMvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MvZGlzdC9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy5janMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3JlYWN0QDExLjE0LjAvbm9kZV9tb2R1bGVzL0BlbW90aW9uL3JlYWN0L19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5icm93c2VyLmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGVtb3Rpb24rdXRpbHNAMS40LjIvbm9kZV9tb2R1bGVzL0BlbW90aW9uL3V0aWxzL2Rpc3QvZW1vdGlvbi11dGlscy5icm93c2VyLmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGVtb3Rpb24raGFzaEAwLjkuMi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vaGFzaC9kaXN0L2Vtb3Rpb24taGFzaC5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3VuaXRsZXNzQDAuMTAuMC9ub2RlX21vZHVsZXMvQGVtb3Rpb24vdW5pdGxlc3MvZGlzdC9lbW90aW9uLXVuaXRsZXNzLmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGVtb3Rpb24rc2VyaWFsaXplQDEuMy4zL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9zZXJpYWxpemUvZGlzdC9lbW90aW9uLXNlcmlhbGl6ZS5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3VzZS1pbnNlcnRpb24tZWZmZWN0LXdpdGgtZmFsbGJhY2tzQDEuMi4wL25vZGVfbW9kdWxlcy9AZW1vdGlvbi91c2UtaW5zZXJ0aW9uLWVmZmVjdC13aXRoLWZhbGxiYWNrcy9kaXN0L2Vtb3Rpb24tdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3MuYnJvd3Nlci5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BlbW90aW9uK3JlYWN0QDExLjE0LjAvbm9kZV9tb2R1bGVzL0BlbW90aW9uL3JlYWN0L2Rpc3QvZW1vdGlvbi1lbGVtZW50LWYwZGU5NjhlLmJyb3dzZXIuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZW1vdGlvbityZWFjdEAxMS4xNC4wL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9yZWFjdC9kaXN0L2Vtb3Rpb24tcmVhY3QuYnJvd3Nlci5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdGFnZ2VkVGVtcGxhdGVMaXRlcmFsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdEAxOS4wLjAvbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC5wcm9kdWN0aW9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdEAxOS4wLjAvbm9kZV9tb2R1bGVzL3JlYWN0L2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1kb21AMTkuMC4wL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vY2pzL3JlYWN0LWRvbS5wcm9kdWN0aW9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1kb21AMTkuMC4wL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BmbG9hdGluZy11aSt1dGlsc0AwLjIuOC9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3V0aWxzL2Rpc3QvZmxvYXRpbmctdWkudXRpbHMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZmxvYXRpbmctdWkrY29yZUAxLjYuNi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2NvcmUvZGlzdC9mbG9hdGluZy11aS5jb3JlLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGZsb2F0aW5nLXVpK3V0aWxzQDAuMi44L25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdXRpbHMvZGlzdC9mbG9hdGluZy11aS51dGlscy5kb20ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZmxvYXRpbmctdWkrZG9tQDEuNi4xMi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2RvbS9kaXN0L2Zsb2F0aW5nLXVpLmRvbS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3VzZS1pc29tb3JwaGljLWxheW91dC1lZmZlY3RAMS4yLjAvbm9kZV9tb2R1bGVzL3VzZS1pc29tb3JwaGljLWxheW91dC1lZmZlY3QvZGlzdC91c2UtaXNvbW9ycGhpYy1sYXlvdXQtZWZmZWN0LmJyb3dzZXIuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9kaXN0L2luZGV4LTY0MWVlNWI4LmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbWVtb2l6ZS1vbmVANi4wLjAvbm9kZV9tb2R1bGVzL21lbW9pemUtb25lL2Rpc3QvbWVtb2l6ZS1vbmUuZXNtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9kaXN0L1NlbGVjdC1hYWIwMjdmMy5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LXNlbGVjdEA1LjkuMC9ub2RlX21vZHVsZXMvcmVhY3Qtc2VsZWN0L2Rpc3QvcmVhY3Qtc2VsZWN0LmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHZ0YWl0cyt1c2UtbGF6eS1yZWZAMC4xLjMvbm9kZV9tb2R1bGVzL0B2dGFpdHMvdXNlLWxhenktcmVmL2Rpc3QvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3VzZS1pcy1tb3VudGVkLXJlZkAxLjUuMC9ub2RlX21vZHVsZXMvdXNlLWlzLW1vdW50ZWQtcmVmL2Rpc3QvdXNlLWlzLW1vdW50ZWQtcmVmLmVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby91c2UtbGF0ZXN0QDEuMy4wL25vZGVfbW9kdWxlcy91c2UtbGF0ZXN0L2Rpc3QvdXNlLWxhdGVzdC5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2tydXN0eWtyYWJAMS4xLjAvbm9kZV9tb2R1bGVzL2tydXN0eWtyYWIvZGlzdC9pbmRleC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3NsZWVwLXByb21pc2VAOS4xLjAvbm9kZV9tb2R1bGVzL3NsZWVwLXByb21pc2UvYnVpbGQvZXNtLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHNlem5hbStjb21wb3NlLXJlYWN0LXJlZnNAMS4wLjYvbm9kZV9tb2R1bGVzL0BzZXpuYW0vY29tcG9zZS1yZWFjdC1yZWZzL2NvbXBvc2VSZWZzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3QtYXN5bmMtcGFnaW5hdGVAMC43Ljcvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC1hc3luYy1wYWdpbmF0ZS9kaXN0L2VzbS9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvY29udGFjdC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvc2VydmljZXMvY29udGFjdC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdXVpZEAxMS4wLjMvbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9zdHJpbmdpZnkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3V1aWRAMTEuMC4zL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvcm5nLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby91dWlkQDExLjAuMy9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL25hdGl2ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdXVpZEAxMS4wLjMvbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci92NC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvYWNjb3VudC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvYWRkcmVzcy50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvcHJvZHVjdC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvcHJpY2UudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZGVsL3Bvcy50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvcGF5bWVudC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvc2hpcHBpbmcudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZGVsL29yZGVyLnRzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby90c2xpYkAyLjguMS9ub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvdXRpbC9pc0Z1bmN0aW9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC91dGlsL2NyZWF0ZUVycm9yQ2xhc3MuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3V0aWwvVW5zdWJzY3JpcHRpb25FcnJvci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvdXRpbC9hcnJSZW1vdmUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL1N1YnNjcmlwdGlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvY29uZmlnLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC9zY2hlZHVsZXIvdGltZW91dFByb3ZpZGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC91dGlsL3JlcG9ydFVuaGFuZGxlZEVycm9yLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC91dGlsL25vb3AuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3V0aWwvZXJyb3JDb250ZXh0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC9TdWJzY3JpYmVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC9zeW1ib2wvb2JzZXJ2YWJsZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvdXRpbC9pZGVudGl0eS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvdXRpbC9waXBlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC9PYnNlcnZhYmxlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC91dGlsL2xpZnQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL29wZXJhdG9ycy9PcGVyYXRvclN1YnNjcmliZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3V0aWwvT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL1N1YmplY3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL0JlaGF2aW9yU3ViamVjdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvc2NoZWR1bGVyL2RhdGVUaW1lc3RhbXBQcm92aWRlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvc2NoZWR1bGVyL0FjdGlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvc2NoZWR1bGVyL2ludGVydmFsUHJvdmlkZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3NjaGVkdWxlci9Bc3luY0FjdGlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvU2NoZWR1bGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yeGpzQDcuOC4xL25vZGVfbW9kdWxlcy9yeGpzL2Rpc3QvZXNtNS9pbnRlcm5hbC9zY2hlZHVsZXIvQXN5bmNTY2hlZHVsZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3J4anNANy44LjEvbm9kZV9tb2R1bGVzL3J4anMvZGlzdC9lc201L2ludGVybmFsL3NjaGVkdWxlci9hc3luYy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcnhqc0A3LjguMS9ub2RlX21vZHVsZXMvcnhqcy9kaXN0L2VzbTUvaW50ZXJuYWwvb3BlcmF0b3JzL2RlYm91bmNlVGltZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvc3RhdGUvb3JkZXIudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LWljb25zQDUuMi4xL25vZGVfbW9kdWxlcy9yZWFjdC1pY29ucy9saWIvaWNvbkNvbnRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1pY29uc0A1LjIuMS9ub2RlX21vZHVsZXMvcmVhY3QtaWNvbnMvbGliL2ljb25CYXNlLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3QtaWNvbnNANS4yLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWljb25zL2hpL2luZGV4Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdGFpbHdpbmQtbWVyZ2VAMi40LjAvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL2Rpc3QvYnVuZGxlLW1qcy5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vaGVscGVycy9pcy1vYmplY3QubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2hlbHBlcnMvY2xvbmUtZGVlcC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vaGVscGVycy9tZXJnZS1kZWVwLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9BY2NvcmRpb24vdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQWxlcnQvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQXZhdGFyL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0JhZGdlL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Jsb2NrcXVvdGUvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQnJlYWRjcnVtYi90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9CdXR0b24vdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQ2FyZC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9DYXJvdXNlbC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9DaGVja2JveC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9DbGlwYm9hcmQvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRGFya1RoZW1lVG9nZ2xlL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RhdGVwaWNrZXIvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRHJhd2VyL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Ryb3Bkb3duL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0ZpbGVJbnB1dC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9GbG9hdGluZ0xhYmVsL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Zvb3Rlci90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9IZWxwZXJUZXh0L3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0hSL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0tiZC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9MYWJlbC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9MaXN0L3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0xpc3RHcm91cC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9OYXZiYXIvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTWVnYU1lbnUvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTW9kYWwvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvUGFnaW5hdGlvbi90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Qb3BvdmVyL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1Byb2dyZXNzL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1JhZGlvL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1JhbmdlU2xpZGVyL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1JhdGluZy90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9TZWxlY3QvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvU2lkZWJhci90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9TcGlubmVyL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RhYmxlL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RhYnMvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGV4dGFyZWEvdGhlbWUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGV4dElucHV0L3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RpbWVsaW5lL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RvYXN0L3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RvZ2dsZVN3aXRjaC90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ub29sdGlwL3RoZW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS90aGVtZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vdGhlbWUtc3RvcmUvaW5kZXgubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQWNjb3JkaW9uL0FjY29yZGlvblBhbmVsQ29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9BY2NvcmRpb24vQWNjb3JkaW9uQ29udGVudC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9BY2NvcmRpb24vQWNjb3JkaW9uUGFuZWwubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQWNjb3JkaW9uL0FjY29yZGlvblRpdGxlLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0FjY29yZGlvbi9BY2NvcmRpb24ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQXZhdGFyL0F2YXRhckdyb3VwLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0F2YXRhci9BdmF0YXJHcm91cENvdW50ZXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQXZhdGFyL0F2YXRhci5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9CYWRnZS9CYWRnZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9TcGlubmVyL1NwaW5uZXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQnV0dG9uL0J1dHRvbkJhc2UubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQnV0dG9uL0J1dHRvbkdyb3VwLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0J1dHRvbi9CdXR0b24ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQmFubmVyL0Jhbm5lckNvbGxhcHNlQnV0dG9uLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Jhbm5lci9CYW5uZXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQnJlYWRjcnVtYi9CcmVhZGNydW1iSXRlbS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9CcmVhZGNydW1iL0JyZWFkY3J1bWIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9jbGFzc25hbWVzQDIuNS4xL25vZGVfbW9kdWxlcy9jbGFzc25hbWVzL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9kZWJvdW5jZUAyLjEuMC9ub2RlX21vZHVsZXMvZGVib3VuY2UvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vaGVscGVycy9kcmFnLXNjcm9sbC9pbmRleC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9DaGVja2JveC9DaGVja2JveC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BmbG9hdGluZy11aStyZWFjdEAwLjI2LjIxL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvcmVhY3QvZGlzdC9mbG9hdGluZy11aS5yZWFjdC51dGlscy5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3RhYmJhYmxlQDYuMi4wL25vZGVfbW9kdWxlcy90YWJiYWJsZS9kaXN0L2luZGV4LmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGZsb2F0aW5nLXVpK3JlYWN0LWRvbUAyLjEuMi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3JlYWN0LWRvbS9kaXN0L2Zsb2F0aW5nLXVpLnJlYWN0LWRvbS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BmbG9hdGluZy11aStyZWFjdEAwLjI2LjIxL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvcmVhY3QvZGlzdC9mbG9hdGluZy11aS5yZWFjdC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9GbG9hdGluZy9oZWxwZXJzLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9ob29rcy91c2UtZmxvYXRpbmcubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRmxvYXRpbmcvRmxvYXRpbmcubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVG9vbHRpcC9Ub29sdGlwLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3QtaWNvbnNANS4yLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWljb25zL2ZhNi9pbmRleC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9DbGlwYm9hcmQvaGVscGVycy5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9DbGlwYm9hcmQvQ2xpcGJvYXJkV2l0aEljb24ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvQ2xpcGJvYXJkL0NsaXBib2FyZFdpdGhJY29uVGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9DbGlwYm9hcmQvQ2xpcGJvYXJkLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0hlbHBlclRleHQvSGVscGVyVGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UZXh0SW5wdXQvVGV4dElucHV0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RhdGVwaWNrZXIvRGF0ZXBpY2tlckNvbnRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRGF0ZXBpY2tlci9oZWxwZXJzLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0RhdGVwaWNrZXIvVmlld3MvRGF5cy5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9EYXRlcGlja2VyL1ZpZXdzL0RlY2FkZXMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRGF0ZXBpY2tlci9WaWV3cy9Nb250aHMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRGF0ZXBpY2tlci9WaWV3cy9ZZWFycy5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9EYXRlcGlja2VyL0RhdGVwaWNrZXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRHJhd2VyL0RyYXdlckNvbnRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1pY29uc0A1LjIuMS9ub2RlX21vZHVsZXMvcmVhY3QtaWNvbnMvbWQvaW5kZXgubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRHJhd2VyL0RyYXdlckhlYWRlci5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9EcmF3ZXIvRHJhd2VySXRlbXMubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRHJhd2VyL0RyYXdlci5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ecm9wZG93bi9Ecm9wZG93bkNvbnRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd25EaXZpZGVyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Ryb3Bkb3duL0Ryb3Bkb3duSGVhZGVyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Ryb3Bkb3duL0Ryb3Bkb3duSXRlbS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Ecm9wZG93bi9Ecm9wZG93bi5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9GaWxlSW5wdXQvRmlsZUlucHV0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Zsb2F0aW5nTGFiZWwvRmxvYXRpbmdMYWJlbC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Gb290ZXIvRm9vdGVyQnJhbmQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvRm9vdGVyL0Zvb3RlckNvcHlyaWdodC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Gb290ZXIvRm9vdGVyRGl2aWRlci5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Gb290ZXIvRm9vdGVySWNvbi5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Gb290ZXIvRm9vdGVyTGluay5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Gb290ZXIvRm9vdGVyTGlua0dyb3VwLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0Zvb3Rlci9Gb290ZXJUaXRsZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Gb290ZXIvRm9vdGVyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0hSL0hSSWNvbi5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9IUi9IUlNxdWFyZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9IUi9IUlRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvSFIvSFJUcmltbWVkLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0hSL0hSLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0xpc3QvTGlzdEl0ZW0ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTGlzdC9MaXN0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0xpc3RHcm91cC9MaXN0R3JvdXBJdGVtLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL0xpc3RHcm91cC9MaXN0R3JvdXAubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTmF2YmFyL05hdmJhckNvbnRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTmF2YmFyL05hdmJhckJyYW5kLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL05hdmJhci9OYXZiYXJDb2xsYXBzZS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9OYXZiYXIvTmF2YmFyTGluay5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LWljb25zQDUuMi4xL25vZGVfbW9kdWxlcy9yZWFjdC1pY29ucy9mYS9pbmRleC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9OYXZiYXIvTmF2YmFyVG9nZ2xlLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL05hdmJhci9OYXZiYXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTWVnYU1lbnUvTWVnYU1lbnVEcm9wZG93bi5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9NZWdhTWVudS9NZWdhTWVudURyb3Bkb3duVG9nZ2xlLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL01lZ2FNZW51L01lZ2FNZW51Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL01vZGFsL01vZGFsQ29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9Nb2RhbC9Nb2RhbEJvZHkubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTW9kYWwvTW9kYWxGb290ZXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTW9kYWwvTW9kYWxIZWFkZXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvTW9kYWwvTW9kYWwubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvUGFnaW5hdGlvbi9oZWxwZXJzLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1BhZ2luYXRpb24vUGFnaW5hdGlvbkJ1dHRvbi5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9QYWdpbmF0aW9uL1BhZ2luYXRpb24ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvUmFkaW8vUmFkaW8ubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvUmFuZ2VTbGlkZXIvUmFuZ2VTbGlkZXIubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvUmF0aW5nL1JhdGluZ0FkdmFuY2VkLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1JhdGluZy9SYXRpbmdDb250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1JhdGluZy9SYXRpbmdTdGFyLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1JhdGluZy9SYXRpbmcubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJDb250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1NpZGViYXIvU2lkZWJhckl0ZW1Db250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1NpZGViYXIvU2lkZWJhckNvbGxhcHNlLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1NpZGViYXIvU2lkZWJhckNUQS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJJdGVtLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1NpZGViYXIvU2lkZWJhckl0ZW1Hcm91cC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJJdGVtcy5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJMb2dvLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1NpZGViYXIvU2lkZWJhci5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UYWJsZS9UYWJsZUJvZHlDb250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RhYmxlL1RhYmxlQ29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UYWJsZS9UYWJsZUJvZHkubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGFibGUvVGFibGVDZWxsLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RhYmxlL1RhYmxlSGVhZENvbnRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGFibGUvVGFibGVIZWFkLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RhYmxlL1RhYmxlSGVhZENlbGwubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGFibGUvVGFibGVSb3cubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGFibGUvVGFibGUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGFicy9UYWJJdGVtLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RhYnMvVGFicy5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UZXh0YXJlYS9UZXh0YXJlYS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UaW1lbGluZS9UaW1lbGluZUNvbnRlbnRDb250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RpbWVsaW5lL1RpbWVsaW5lQm9keS5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UaW1lbGluZS9UaW1lbGluZUNvbnRleHQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGltZWxpbmUvVGltZWxpbmVJdGVtQ29udGV4dC5tanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zsb3diaXRlLXJlYWN0QDAuMTAuMi9ub2RlX21vZHVsZXMvZmxvd2JpdGUtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9UaW1lbGluZS9UaW1lbGluZUNvbnRlbnQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGltZWxpbmUvVGltZWxpbmVJdGVtLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RpbWVsaW5lL1RpbWVsaW5lUG9pbnQubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGltZWxpbmUvVGltZWxpbmVUaW1lLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RpbWVsaW5lL1RpbWVsaW5lVGl0bGUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVGltZWxpbmUvVGltZWxpbmUubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9mbG93Yml0ZS1yZWFjdEAwLjEwLjIvbm9kZV9tb2R1bGVzL2Zsb3diaXRlLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvVG9hc3QvVG9hc3RDb250ZXh0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RvYXN0L1RvYXN0VG9nZ2xlLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RvYXN0L1RvYXN0Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmxvd2JpdGUtcmVhY3RAMC4xMC4yL25vZGVfbW9kdWxlcy9mbG93Yml0ZS1yZWFjdC9kaXN0L2VzbS9jb21wb25lbnRzL1RvZ2dsZVN3aXRjaC9Ub2dnbGVTd2l0Y2gubWpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2Jhc2UvQnV0dG9uLnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvaXNPYmplY3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2FsbG93QWRkaXRpb25hbEl0ZW1zLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9hc051bWJlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvY29uc3RhbnRzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9nZXRVaU9wdGlvbnMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2NhbkV4cGFuZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZnJlZUdsb2JhbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fcm9vdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fU3ltYm9sLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRSYXdUYWcuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX29iamVjdFRvU3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0VGFnLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyQXJnLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRQcm90b3R5cGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNPYmplY3RMaWtlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzUGxhaW5PYmplY3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2NyZWF0ZUVycm9ySGFuZGxlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlQ2xlYXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvZXEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Fzc29jSW5kZXhPZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlRGVsZXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVHZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZUhhcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlU2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19MaXN0Q2FjaGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrQ2xlYXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrRGVsZXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0dldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tIYXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNPYmplY3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNGdW5jdGlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29yZUpzRGF0YS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNNYXNrZWQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3RvU291cmNlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNOYXRpdmUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFZhbHVlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXROYXRpdmUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX01hcC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlQ3JlYXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoQ2xlYXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hEZWxldGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hHZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hIYXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hTZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX0hhc2guanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlQ2xlYXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzS2V5YWJsZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TWFwRGF0YS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVEZWxldGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlR2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUhhcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVTZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX01hcENhY2hlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja1NldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fU3RhY2suanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldENhY2hlQWRkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRDYWNoZUhhcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fU2V0Q2FjaGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5U29tZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FjaGVIYXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2VxdWFsQXJyYXlzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19VaW50OEFycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBUb0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRUb0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbEJ5VGFnLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVB1c2guanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldEFsbEtleXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5RmlsdGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3N0dWJBcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0U3ltYm9scy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRpbWVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNBcmd1bWVudHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcmd1bWVudHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvc3R1YkZhbHNlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQnVmZmVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTGVuZ3RoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNUeXBlZEFycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5hcnkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25vZGVVdGlsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzVHlwZWRBcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlMaWtlS2V5cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNQcm90b3R5cGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25hdGl2ZUtleXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VLZXlzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXlMaWtlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldEFsbEtleXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2VxdWFsT2JqZWN0cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fRGF0YVZpZXcuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1Byb21pc2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1NldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fV2Vha01hcC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0VGFnLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNFcXVhbERlZXAuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc0VxdWFsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRXF1YWxXaXRoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9kZWVwRXF1YWxzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU3ltYm9sLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9tZW1vaXplLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19tZW1vaXplQ2FwcGVkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpbmdUb1BhdGguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5TWFwLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVG9TdHJpbmcuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9TdHJpbmcuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nhc3RQYXRoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL190b0tleS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9nZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNFbXB0eS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vanNvbnBvaW50ZXJANS4wLjEvbm9kZV9tb2R1bGVzL2pzb25wb2ludGVyL2pzb25wb2ludGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUVhY2guanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2RlZmluZVByb3BlcnR5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduVmFsdWUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Fzc2lnblZhbHVlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5T2JqZWN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVLZXlzSW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VLZXlzSW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gva2V5c0luLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduSW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lQnVmZmVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5QXJyYXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlTeW1ib2xzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRTeW1ib2xzSW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlTeW1ib2xzSW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldEFsbEtleXNJbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faW5pdENsb25lQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lQXJyYXlCdWZmZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lRGF0YVZpZXcuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lUmVnRXhwLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZVN5bWJvbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVUeXBlZEFycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVCeVRhZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUNyZWF0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faW5pdENsb25lT2JqZWN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNNYXAuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNNYXAuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc1NldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1NldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUNsb25lLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2xhc3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTbGljZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fcGFyZW50LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5zZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2N1c3RvbU9taXRDbG9uZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNGbGF0dGVuYWJsZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZsYXR0ZW4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvZmxhdHRlbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXBwbHkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX292ZXJSZXN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2NvbnN0YW50LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lkZW50aXR5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU2V0VG9TdHJpbmcuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3Nob3J0T3V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRUb1N0cmluZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZmxhdFJlc3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvb21pdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZmluZFNjaGVtYURlZmluaXRpb24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VIYXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc1BhdGguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaGFzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTnVtYmVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVJlZHVjZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlQmFzZUZvci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZvci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZvck93bi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlQmFzZUVhY2guanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VFYWNoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNNYXRjaC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNTdHJpY3RDb21wYXJhYmxlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRNYXRjaERhdGEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hdGNoZXNTdHJpY3RDb21wYXJhYmxlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWF0Y2hlcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUhhc0luLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2hhc0luLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWF0Y2hlc1Byb3BlcnR5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUHJvcGVydHkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VQcm9wZXJ0eURlZXAuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvcHJvcGVydHkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJdGVyYXRlZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVJlZHVjZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9yZWR1Y2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nhc3RGdW5jdGlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fdHJpbW1lZEVuZEluZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVHJpbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC90b051bWJlci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC90b0Zpbml0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC90b0ludGVnZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvdGltZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2dldE9wdGlvbk1hdGNoaW5nU2ltcGxlRGlzY3JpbWluYXRvci5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvc2NoZW1hL2dldE1hdGNoaW5nT3B0aW9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9zY2hlbWEvZ2V0Rmlyc3RNYXRjaGluZ09wdGlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0VxdWFsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3NldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC90cmFuc2Zvcm0uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Fzc2lnbk1lcmdlVmFsdWUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheUxpa2VPYmplY3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NhZmVHZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9QbGFpbk9iamVjdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1lcmdlRGVlcC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1lcmdlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUmVzdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNJdGVyYXRlZUNhbGwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZUFzc2lnbmVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL21lcmdlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2ZsYXR0ZW5EZWVwLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRmluZEluZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNOYU4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0cmljdEluZGV4T2YuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJbmRleE9mLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUluY2x1ZGVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUluY2x1ZGVzV2l0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9ub29wLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVTZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VVbmlxLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3VuaXEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvY2xvbmVEZWVwLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWFwLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU29ydEJ5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jb21wYXJlQXNjZW5kaW5nLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jb21wYXJlTXVsdGlwbGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VPcmRlckJ5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3NvcnRCeS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC91bmlxV2l0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9kZWZhdWx0cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUludGVyc2VjdGlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FzdEFycmF5TGlrZU9iamVjdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pbnRlcnNlY3Rpb25XaXRoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQm9vbGVhbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vanNvbi1zY2hlbWEtY29tcGFyZUAwLjIuMi9ub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtY29tcGFyZS9zcmMvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3ZhbGlkYXRlLmlvLWFycmF5QDEuMC42L25vZGVfbW9kdWxlcy92YWxpZGF0ZS5pby1hcnJheS9saWIvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3ZhbGlkYXRlLmlvLW51bWJlckAxLjAuMy9ub2RlX21vZHVsZXMvdmFsaWRhdGUuaW8tbnVtYmVyL2xpYi9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vdmFsaWRhdGUuaW8taW50ZWdlckAxLjAuNS9ub2RlX21vZHVsZXMvdmFsaWRhdGUuaW8taW50ZWdlci9saWIvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3ZhbGlkYXRlLmlvLWludGVnZXItYXJyYXlAMS4wLjAvbm9kZV9tb2R1bGVzL3ZhbGlkYXRlLmlvLWludGVnZXItYXJyYXkvbGliL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby92YWxpZGF0ZS5pby1mdW5jdGlvbkAxLjAuMi9ub2RlX21vZHVsZXMvdmFsaWRhdGUuaW8tZnVuY3Rpb24vbGliL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9jb21wdXRlLWdjZEAxLjIuMS9ub2RlX21vZHVsZXMvY29tcHV0ZS1nY2QvbGliL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9jb21wdXRlLWxjbUAxLjEuMi9ub2RlX21vZHVsZXMvY29tcHV0ZS1sY20vbGliL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19jdXN0b21EZWZhdWx0c01lcmdlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL21lcmdlV2l0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9kZWZhdWx0c0RlZXAuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaW50ZXJzZWN0aW9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSW5kZXhPZldpdGguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VQdWxsQWxsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3B1bGxBbGwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvZm9yRWFjaC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZURpZmZlcmVuY2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvd2l0aG91dC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vanNvbi1zY2hlbWEtbWVyZ2UtYWxsb2ZAMC44LjEvbm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLW1lcmdlLWFsbG9mL3NyYy9jb21tb24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2pzb24tc2NoZW1hLW1lcmdlLWFsbG9mQDAuOC4xL25vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1tZXJnZS1hbGxvZi9zcmMvY29tcGxleC1yZXNvbHZlcnMvcHJvcGVydGllcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vanNvbi1zY2hlbWEtbWVyZ2UtYWxsb2ZAMC44LjEvbm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLW1lcmdlLWFsbG9mL3NyYy9jb21wbGV4LXJlc29sdmVycy9pdGVtcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vanNvbi1zY2hlbWEtbWVyZ2UtYWxsb2ZAMC44LjEvbm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLW1lcmdlLWFsbG9mL3NyYy9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZ2V0RGlzY3JpbWluYXRvckZpZWxkRnJvbVNjaGVtYS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZ3Vlc3NUeXBlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3VuaW9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9nZXRTY2hlbWFUeXBlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9tZXJnZVNjaGVtYXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3NjaGVtYS9yZXRyaWV2ZVNjaGVtYS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvc2NoZW1hL2dldENsb3Nlc3RNYXRjaGluZ09wdGlvbi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvaXNGaXhlZEl0ZW1zLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9tZXJnZURlZmF1bHRzV2l0aEZvcm1EYXRhLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9tZXJnZU9iamVjdHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2lzQ29uc3RhbnQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3NjaGVtYS9pc1NlbGVjdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvc2NoZW1hL2lzTXVsdGlTZWxlY3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3NjaGVtYS9nZXREZWZhdWx0Rm9ybVN0YXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9pc0N1c3RvbVdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvc2NoZW1hL2lzRmlsZXNBcnJheS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvc2NoZW1hL2dldERpc3BsYXlMYWJlbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvc2NoZW1hL21lcmdlVmFsaWRhdGlvbkRhdGEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3NjaGVtYS9zYW5pdGl6ZURhdGFGb3JOZXdTY2hlbWEuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3NjaGVtYS90b0lkU2NoZW1hLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9zY2hlbWEvdG9QYXRoU2NoZW1hLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9jcmVhdGVTY2hlbWFVdGlscy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZGF0YVVSSXRvQmxvYi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvcGFkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9kYXRlUmFuZ2VPcHRpb25zLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9yZXBsYWNlU3RyaW5nUGFyYW1ldGVycy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZW5nbGlzaFN0cmluZ1RyYW5zbGF0b3IuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2VudW1PcHRpb25zVmFsdWVGb3JJbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZW51bU9wdGlvbnNEZXNlbGVjdFZhbHVlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9lbnVtT3B0aW9uc0lzU2VsZWN0ZWQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2VudW1PcHRpb25zSW5kZXhGb3JWYWx1ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc05pbC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZW51bU9wdGlvbnNTZWxlY3RWYWx1ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9zZXRXaXRoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9FcnJvclNjaGVtYUJ1aWxkZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2dldERhdGVFbGVtZW50UHJvcHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3JhbmdlU3BlYy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZ2V0SW5wdXRQcm9wcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZ2V0U3VibWl0QnV0dG9uT3B0aW9ucy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZ2V0VGVtcGxhdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LWlzQDE4LjMuMS9ub2RlX21vZHVsZXMvcmVhY3QtaXMvY2pzL3JlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1pc0AxOC4zLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9nZXRXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL2hhc1dpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvaWRHZW5lcmF0b3JzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9sYWJlbFZhbHVlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9sb2NhbFRvVVRDLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi90b0NvbnN0YW50LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9vcHRpb25zTGlzdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvb3JkZXJQcm9wZXJ0aWVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9wYXJzZURhdGVTdHJpbmcuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3NjaGVtYVJlcXVpcmVzVHJ1ZVZhbHVlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi9zaG91bGRSZW5kZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3RvRGF0ZVN0cmluZy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvdG9FcnJvckxpc3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9QYXRoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi90b0Vycm9yU2NoZW1hLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit1dGlsc0A1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3V0aWxzL2xpYi91bndyYXBFcnJvckhhbmRsZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3V0Y1RvTG9jYWwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3ZhbGlkYXRpb25EYXRhTWVyZ2UuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3V0aWxzQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdXRpbHMvbGliL3dpdGhJZFJlZlByZWZpeC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdXRpbHNANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi91dGlscy9saWIvZW51bXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3VyaS1qc0A0LjQuMS9ub2RlX21vZHVsZXMvdXJpLWpzL2Rpc3QvZXM1L3VyaS5hbGwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2Zhc3QtZGVlcC1lcXVhbEAzLjEuMy9ub2RlX21vZHVsZXMvZmFzdC1kZWVwLWVxdWFsL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2NvbXBpbGUvdWNzMmxlbmd0aC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9jb21waWxlL3V0aWwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS9zY2hlbWFfb2JqLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9qc29uLXNjaGVtYS10cmF2ZXJzZUAwLjQuMS9ub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtdHJhdmVyc2UvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS9yZXNvbHZlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2NvbXBpbGUvZXJyb3JfY2xhc3Nlcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vZmFzdC1qc29uLXN0YWJsZS1zdHJpbmdpZnlAMi4xLjAvbm9kZV9tb2R1bGVzL2Zhc3QtanNvbi1zdGFibGUtc3RyaW5naWZ5L2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL3ZhbGlkYXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2NvbXBpbGUvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY2FjaGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS9mb3JtYXRzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL3JlZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9hbGxPZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9hbnlPZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9jb21tZW50LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL2NvbnN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL2NvbnRhaW5zLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL2RlcGVuZGVuY2llcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9lbnVtLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL2Zvcm1hdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9pZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9pdGVtcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9fbGltaXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvX2xpbWl0SXRlbXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvX2xpbWl0TGVuZ3RoLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL19saW1pdFByb3BlcnRpZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvbXVsdGlwbGVPZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9ub3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvb25lT2YuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvcGF0dGVybi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kb3Rqcy9wcm9wZXJ0aWVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RvdGpzL3Byb3BlcnR5TmFtZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvcmVxdWlyZWQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvdW5pcXVlSXRlbXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvY29tcGlsZS9ydWxlcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vYWp2QDYuMTIuNi9ub2RlX21vZHVsZXMvYWp2L2xpYi9kYXRhLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2NvbXBpbGUvYXN5bmMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvZG90anMvY3VzdG9tLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2RlZmluaXRpb25fc2NoZW1hLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9hanZANi4xMi42L25vZGVfbW9kdWxlcy9hanYvbGliL2tleXdvcmQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2FqdkA2LjEyLjYvbm9kZV9tb2R1bGVzL2Fqdi9saWIvYWp2LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit2YWxpZGF0b3ItYWp2NkA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3ZhbGlkYXRvci1hanY2L2xpYi9jcmVhdGVBanZJbnN0YW5jZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrdmFsaWRhdG9yLWFqdjZANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi92YWxpZGF0b3ItYWp2Ni9saWIvdmFsaWRhdG9yLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZit2YWxpZGF0b3ItYWp2NkA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL3ZhbGlkYXRvci1hanY2L2xpYi9jdXN0b21pemVWYWxpZGF0b3IuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK3ZhbGlkYXRvci1hanY2QDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvdmFsaWRhdG9yLWFqdjYvbGliL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUGlja0J5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUGljay5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9waWNrLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9uYW5vaWRAMy4zLjgvbm9kZV9tb2R1bGVzL25hbm9pZC9pbmRleC5icm93c2VyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy9maWVsZHMvQXJyYXlGaWVsZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvZmllbGRzL0Jvb2xlYW5GaWVsZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvZmllbGRzL011bHRpU2NoZW1hRmllbGQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9OdW1iZXJGaWVsZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vbWFya2Rvd24tdG8tanN4QDcuNy4yL25vZGVfbW9kdWxlcy9tYXJrZG93bi10by1qc3gvZGlzdC9pbmRleC5tb2Rlcm4uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvdW5zZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9PYmplY3RGaWVsZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvZmllbGRzL1NjaGVtYUZpZWxkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy9maWVsZHMvU3RyaW5nRmllbGQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9OdWxsRmllbGQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL0FycmF5RmllbGREZXNjcmlwdGlvblRlbXBsYXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvQXJyYXlGaWVsZEl0ZW1UZW1wbGF0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL0FycmF5RmllbGRUZW1wbGF0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL0FycmF5RmllbGRUaXRsZVRlbXBsYXRlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvQmFzZUlucHV0VGVtcGxhdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9CdXR0b25UZW1wbGF0ZXMvU3VibWl0QnV0dG9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvQnV0dG9uVGVtcGxhdGVzL0ljb25CdXR0b24uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9CdXR0b25UZW1wbGF0ZXMvQWRkQnV0dG9uLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvQnV0dG9uVGVtcGxhdGVzL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvRGVzY3JpcHRpb25GaWVsZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL0Vycm9yTGlzdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL0ZpZWxkVGVtcGxhdGUvTGFiZWwuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9GaWVsZFRlbXBsYXRlL0ZpZWxkVGVtcGxhdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9GaWVsZEVycm9yVGVtcGxhdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9GaWVsZEhlbHBUZW1wbGF0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL09iamVjdEZpZWxkVGVtcGxhdGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9UaXRsZUZpZWxkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvVW5zdXBwb3J0ZWRGaWVsZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL1dyYXBJZkFkZGl0aW9uYWxUZW1wbGF0ZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL0FsdERhdGVXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvQWx0RGF0ZVRpbWVXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvQ2hlY2tib3hXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvQ2hlY2tib3hlc1dpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9Db2xvcldpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9EYXRlV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL0RhdGVUaW1lV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL0VtYWlsV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL0ZpbGVXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvSGlkZGVuV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL1Bhc3N3b3JkV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL1JhZGlvV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL1JhbmdlV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL1NlbGVjdFdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9UZXh0YXJlYVdpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9UZXh0V2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL1RpbWVXaWRnZXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0ByanNmK2NvcmVANS4yMy4yL25vZGVfbW9kdWxlcy9AcmpzZi9jb3JlL2xpYi9jb21wb25lbnRzL3dpZGdldHMvVVJMV2lkZ2V0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AcmpzZitjb3JlQDUuMjMuMi9ub2RlX21vZHVsZXMvQHJqc2YvY29yZS9saWIvY29tcG9uZW50cy93aWRnZXRzL1VwRG93bldpZGdldC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvd2lkZ2V0cy9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2dldERlZmF1bHRSZWdpc3RyeS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQHJqc2YrY29yZUA1LjIzLjIvbm9kZV9tb2R1bGVzL0ByanNmL2NvcmUvbGliL2NvbXBvbmVudHMvRm9ybS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kZWwvY291bnRyeS50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvc2VydmljZXMvY291bnRyeS50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9jb250YWN0L0NvbnRhY3RNb2RhbC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL3NlcnZpY2VzL2FkZHJlc3MudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvY29udGFjdC9Db250YWN0TW9kYWxDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby90c2xpYkAyLjYuMi9ub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2Lm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vc3R5bGlzQDQuMy4yL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL0VudW0uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3N0eWxpc0A0LjMuMi9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9VdGlsaXR5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsaXNANC4zLjIvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvVG9rZW5pemVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsaXNANC4zLjIvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvUGFyc2VyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsaXNANC4zLjIvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvUHJlZml4ZXIuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3N0eWxpc0A0LjMuMi9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9TZXJpYWxpemVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9zdHlsaXNANC4zLjIvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvTWlkZGxld2FyZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGVtb3Rpb24rdW5pdGxlc3NAMC44LjEvbm9kZV9tb2R1bGVzL0BlbW90aW9uL3VuaXRsZXNzL2Rpc3QvZW1vdGlvbi11bml0bGVzcy5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3N0eWxlZC1jb21wb25lbnRzQDYuMS4xMy9ub2RlX21vZHVsZXMvc3R5bGVkLWNvbXBvbmVudHMvZGlzdC9zdHlsZWQtY29tcG9uZW50cy5icm93c2VyLmVzbS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJpbWl0aXZlLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Qcm9wZXJ0eUtleS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0U3ByZWFkMi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aEhvbGVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXRlcmFibGVUb0FycmF5TGltaXQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheUxpa2VUb0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVJlc3QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9kaXN0L3VzZVN0YXRlTWFuYWdlci1jZTIzMDYxYy5janMucHJvZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2V0UHJvdG90eXBlT2YuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0cy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZVN1cGVyLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlXaXRob3V0SG9sZXMuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL0BiYWJlbCtydW50aW1lQDcuMjYuMC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVNwcmVhZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vQGJhYmVsK3J1bnRpbWVANy4yNi4wL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AYmFiZWwrcnVudGltZUA3LjI2LjAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdGFnZ2VkVGVtcGxhdGVMaXRlcmFsLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9AZmxvYXRpbmctdWkrZG9tQDEuNi4xMi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2RvbS9kaXN0L2Zsb2F0aW5nLXVpLmRvbS5lc20uanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LXNlbGVjdEA1LjkuMC9ub2RlX21vZHVsZXMvcmVhY3Qtc2VsZWN0L2Rpc3QvaW5kZXgtNjY1YzRlZDguY2pzLnByb2QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LXNlbGVjdEA1LjkuMC9ub2RlX21vZHVsZXMvcmVhY3Qtc2VsZWN0L2Rpc3QvU2VsZWN0LTM2ZDE1ZjkzLmNqcy5wcm9kLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9kaXN0L3JlYWN0LXNlbGVjdC5janMucHJvZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3Qtc2VsZWN0QDUuOS4wL25vZGVfbW9kdWxlcy9yZWFjdC1zZWxlY3QvZGlzdC9yZWFjdC1zZWxlY3QuY2pzLmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1zZWxlY3RANS45LjAvbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9kaXN0L3JlYWN0LXNlbGVjdC5janMuZGVmYXVsdC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9iYXNlL1NlbGVjdExhYmVsLnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9jb250YWN0L0NvbnRhY3RTZWxlY3QudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2NvbnRhY3QvQWRkcmVzc01vZGFsLnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9jb250YWN0L0FkZHJlc3NNb2RhbENvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvY29udGFjdC9BZGRyZXNzRGV0YWlsLnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9jb250YWN0L0FkZHJlc3NTZWxlY3QudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9zZXJ2aWNlcy9hY2NvdW50LnRzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2FjY291bnQvQWNjb3VudFNlbGVjdENvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvY29udGFjdC9Db250YWN0Q29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy90eXBlL1R5cGVTZWxlY3RDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9zZXJ2aWNlcy9zaG9wLnRzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL3Nob3AvU2hvcFNlbGVjdENvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvZHJhZnQvRHJhZnRDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9zZXJ2aWNlcy9vcmRlci50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9iYXNlL0N1cnJlbmN5LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9jYWxjL0NhbGNDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL3RvcGJhci9Ub3BCYXJDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2RlbC9wcm9kdWN0R3JvdXAudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL3NlcnZpY2VzL3Byb2R1Y3Rncm91cC50cyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3Qtc2VsZWN0QDUuOS4wL25vZGVfbW9kdWxlcy9yZWFjdC1zZWxlY3QvZGlzdC91c2VBc3luYy1iZTY1OWE1Ny5janMucHJvZC5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3Qtc2VsZWN0QDUuOS4wL25vZGVfbW9kdWxlcy9yZWFjdC1zZWxlY3QvYXN5bmMvZGlzdC9yZWFjdC1zZWxlY3QtYXN5bmMuY2pzLnByb2QuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvbm9kZV9tb2R1bGVzLy5kZW5vL3JlYWN0LXNlbGVjdEA1LjkuMC9ub2RlX21vZHVsZXMvcmVhY3Qtc2VsZWN0L2FzeW5jL2Rpc3QvcmVhY3Qtc2VsZWN0LWFzeW5jLmNqcy5qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9ub2RlX21vZHVsZXMvLmRlbm8vcmVhY3Qtc2VsZWN0QDUuOS4wL25vZGVfbW9kdWxlcy9yZWFjdC1zZWxlY3QvYXN5bmMvZGlzdC9yZWFjdC1zZWxlY3QtYXN5bmMuY2pzLmRlZmF1bHQuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvcHJvZHVjdC9Qcm9kdWN0R3JvdXBTZWxlY3QudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9zZXJ2aWNlcy9wcm9kdWN0LnRzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby91c2UtZGVib3VuY2VAMTAuMC40L25vZGVfbW9kdWxlcy91c2UtZGVib3VuY2UvZGlzdC9pbmRleC5tb2R1bGUuanMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvcHJvZHVjdC9Qcm9kdWN0U2VsZWN0LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9wcm9kdWN0L1Byb2R1Y3RGb3JtLnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9wb3NpdGlvbnMvQWRkUG9zaXRpb25Db21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL3Bvc2l0aW9ucy9FZGl0UG9zaXRpb25Db21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL3Bvc2l0aW9ucy9Qb3NDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL3Bvc2l0aW9ucy9JdGVtc0NvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvcG9zaXRpb25zL1Bvc2l0aW9uc0NvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL3NlcnZpY2VzL3BheW1lbnQudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvcGF5bWVudC9QYXltZW50Q29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvc2VydmljZXMvc2hpcHBpbmcudHMiLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvc2hpcHBpbmcvU2hpcHBpbmdDb21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL3NyYy9tb2R1bGVzL2J1dHRvbi9CdXR0b25Db21wb25lbnQudHN4IiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9jb29raWVAMS4wLjIvbm9kZV9tb2R1bGVzL2Nvb2tpZS9kaXN0L2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vSW52b2ljZVRTL25vZGVfbW9kdWxlcy8uZGVuby9yZWFjdC1yb3V0ZXJANy4xLjAvbm9kZV9tb2R1bGVzL3JlYWN0LXJvdXRlci9kaXN0L2RldmVsb3BtZW50L2NodW5rLVczSFpKTFVRLm1qcyIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvbW9kdWxlcy9pbmZvL0luZm9GaWVsZENvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvb3JkZXIvT3JkZXJBbGlhc0NvbXBvbmVudC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21vZHVsZXMvYmFzZS9CYXNlQ29tcG9uZW50LnRzeCIsIi4uLy4uLy4uLy4uL0ludm9pY2VUUy9zcmMvYXBwL2FwcC50c3giLCIuLi8uLi8uLi8uLi9JbnZvaWNlVFMvc3JjL21haW4udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuQ29weXJpZ2h0IChDKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2VcbnRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlXG5MaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5USElTIENPREUgSVMgUFJPVklERUQgT04gQU4gKkFTIElTKiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG5LSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVEXG5XQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLFxuTUVSQ0hBTlRBQkxJVFkgT1IgTk9OLUlORlJJTkdFTUVOVC5cblxuU2VlIHRoZSBBcGFjaGUgVmVyc2lvbiAyLjAgTGljZW5zZSBmb3Igc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG5hbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xudmFyIFJlZmxlY3Q7XG4oZnVuY3Rpb24gKFJlZmxlY3QpIHtcbiAgICAvLyBNZXRhZGF0YSBQcm9wb3NhbFxuICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvXG4gICAgKGZ1bmN0aW9uIChmYWN0b3J5KSB7XG4gICAgICAgIHZhciByb290ID0gdHlwZW9mIGdsb2JhbFRoaXMgPT09IFwib2JqZWN0XCIgPyBnbG9iYWxUaGlzIDpcbiAgICAgICAgICAgIHR5cGVvZiBnbG9iYWwgPT09IFwib2JqZWN0XCIgPyBnbG9iYWwgOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBzZWxmID09PSBcIm9iamVjdFwiID8gc2VsZiA6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiB0aGlzID09PSBcIm9iamVjdFwiID8gdGhpcyA6XG4gICAgICAgICAgICAgICAgICAgICAgICBzbG9wcHlNb2RlVGhpcygpO1xuICAgICAgICB2YXIgZXhwb3J0ZXIgPSBtYWtlRXhwb3J0ZXIoUmVmbGVjdCk7XG4gICAgICAgIGlmICh0eXBlb2Ygcm9vdC5SZWZsZWN0ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICBleHBvcnRlciA9IG1ha2VFeHBvcnRlcihyb290LlJlZmxlY3QsIGV4cG9ydGVyKTtcbiAgICAgICAgfVxuICAgICAgICBmYWN0b3J5KGV4cG9ydGVyLCByb290KTtcbiAgICAgICAgaWYgKHR5cGVvZiByb290LlJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHJvb3QuUmVmbGVjdCA9IFJlZmxlY3Q7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gbWFrZUV4cG9ydGVyKHRhcmdldCwgcHJldmlvdXMpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgeyBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzKVxuICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyhrZXksIHZhbHVlKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZnVuY3Rpb25UaGlzKCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gRnVuY3Rpb24oXCJyZXR1cm4gdGhpcztcIikoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChfKSB7IH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBpbmRpcmVjdEV2YWxUaGlzKCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHZvaWQgMCwgZXZhbCkoXCIoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSgpXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKF8pIHsgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHNsb3BweU1vZGVUaGlzKCkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uVGhpcygpIHx8IGluZGlyZWN0RXZhbFRoaXMoKTtcbiAgICAgICAgfVxuICAgIH0pKGZ1bmN0aW9uIChleHBvcnRlciwgcm9vdCkge1xuICAgICAgICB2YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbiAgICAgICAgLy8gZmVhdHVyZSB0ZXN0IGZvciBTeW1ib2wgc3VwcG9ydFxuICAgICAgICB2YXIgc3VwcG9ydHNTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCI7XG4gICAgICAgIHZhciB0b1ByaW1pdGl2ZVN5bWJvbCA9IHN1cHBvcnRzU3ltYm9sICYmIHR5cGVvZiBTeW1ib2wudG9QcmltaXRpdmUgIT09IFwidW5kZWZpbmVkXCIgPyBTeW1ib2wudG9QcmltaXRpdmUgOiBcIkBAdG9QcmltaXRpdmVcIjtcbiAgICAgICAgdmFyIGl0ZXJhdG9yU3ltYm9sID0gc3VwcG9ydHNTeW1ib2wgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciAhPT0gXCJ1bmRlZmluZWRcIiA/IFN5bWJvbC5pdGVyYXRvciA6IFwiQEBpdGVyYXRvclwiO1xuICAgICAgICB2YXIgc3VwcG9ydHNDcmVhdGUgPSB0eXBlb2YgT2JqZWN0LmNyZWF0ZSA9PT0gXCJmdW5jdGlvblwiOyAvLyBmZWF0dXJlIHRlc3QgZm9yIE9iamVjdC5jcmVhdGUgc3VwcG9ydFxuICAgICAgICB2YXIgc3VwcG9ydHNQcm90byA9IHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXk7IC8vIGZlYXR1cmUgdGVzdCBmb3IgX19wcm90b19fIHN1cHBvcnRcbiAgICAgICAgdmFyIGRvd25MZXZlbCA9ICFzdXBwb3J0c0NyZWF0ZSAmJiAhc3VwcG9ydHNQcm90bztcbiAgICAgICAgdmFyIEhhc2hNYXAgPSB7XG4gICAgICAgICAgICAvLyBjcmVhdGUgYW4gb2JqZWN0IGluIGRpY3Rpb25hcnkgbW9kZSAoYS5rLmEuIFwic2xvd1wiIG1vZGUgaW4gdjgpXG4gICAgICAgICAgICBjcmVhdGU6IHN1cHBvcnRzQ3JlYXRlXG4gICAgICAgICAgICAgICAgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBNYWtlRGljdGlvbmFyeShPYmplY3QuY3JlYXRlKG51bGwpKTsgfVxuICAgICAgICAgICAgICAgIDogc3VwcG9ydHNQcm90b1xuICAgICAgICAgICAgICAgICAgICA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE1ha2VEaWN0aW9uYXJ5KHsgX19wcm90b19fOiBudWxsIH0pOyB9XG4gICAgICAgICAgICAgICAgICAgIDogZnVuY3Rpb24gKCkgeyByZXR1cm4gTWFrZURpY3Rpb25hcnkoe30pOyB9LFxuICAgICAgICAgICAgaGFzOiBkb3duTGV2ZWxcbiAgICAgICAgICAgICAgICA/IGZ1bmN0aW9uIChtYXAsIGtleSkgeyByZXR1cm4gaGFzT3duLmNhbGwobWFwLCBrZXkpOyB9XG4gICAgICAgICAgICAgICAgOiBmdW5jdGlvbiAobWFwLCBrZXkpIHsgcmV0dXJuIGtleSBpbiBtYXA7IH0sXG4gICAgICAgICAgICBnZXQ6IGRvd25MZXZlbFxuICAgICAgICAgICAgICAgID8gZnVuY3Rpb24gKG1hcCwga2V5KSB7IHJldHVybiBoYXNPd24uY2FsbChtYXAsIGtleSkgPyBtYXBba2V5XSA6IHVuZGVmaW5lZDsgfVxuICAgICAgICAgICAgICAgIDogZnVuY3Rpb24gKG1hcCwga2V5KSB7IHJldHVybiBtYXBba2V5XTsgfSxcbiAgICAgICAgfTtcbiAgICAgICAgLy8gTG9hZCBnbG9iYWwgb3Igc2hpbSB2ZXJzaW9ucyBvZiBNYXAsIFNldCwgYW5kIFdlYWtNYXBcbiAgICAgICAgdmFyIGZ1bmN0aW9uUHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKEZ1bmN0aW9uKTtcbiAgICAgICAgdmFyIF9NYXAgPSB0eXBlb2YgTWFwID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIE1hcC5wcm90b3R5cGUuZW50cmllcyA9PT0gXCJmdW5jdGlvblwiID8gTWFwIDogQ3JlYXRlTWFwUG9seWZpbGwoKTtcbiAgICAgICAgdmFyIF9TZXQgPSB0eXBlb2YgU2V0ID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFNldC5wcm90b3R5cGUuZW50cmllcyA9PT0gXCJmdW5jdGlvblwiID8gU2V0IDogQ3JlYXRlU2V0UG9seWZpbGwoKTtcbiAgICAgICAgdmFyIF9XZWFrTWFwID0gdHlwZW9mIFdlYWtNYXAgPT09IFwiZnVuY3Rpb25cIiA/IFdlYWtNYXAgOiBDcmVhdGVXZWFrTWFwUG9seWZpbGwoKTtcbiAgICAgICAgdmFyIHJlZ2lzdHJ5U3ltYm9sID0gc3VwcG9ydHNTeW1ib2wgPyBTeW1ib2wuZm9yKFwiQHJlZmxlY3QtbWV0YWRhdGE6cmVnaXN0cnlcIikgOiB1bmRlZmluZWQ7XG4gICAgICAgIHZhciBtZXRhZGF0YVJlZ2lzdHJ5ID0gR2V0T3JDcmVhdGVNZXRhZGF0YVJlZ2lzdHJ5KCk7XG4gICAgICAgIHZhciBtZXRhZGF0YVByb3ZpZGVyID0gQ3JlYXRlTWV0YWRhdGFQcm92aWRlcihtZXRhZGF0YVJlZ2lzdHJ5KTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFwcGxpZXMgYSBzZXQgb2YgZGVjb3JhdG9ycyB0byBhIHByb3BlcnR5IG9mIGEgdGFyZ2V0IG9iamVjdC5cbiAgICAgICAgICogQHBhcmFtIGRlY29yYXRvcnMgQW4gYXJyYXkgb2YgZGVjb3JhdG9ycy5cbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdC5cbiAgICAgICAgICogQHBhcmFtIHByb3BlcnR5S2V5IChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGtleSB0byBkZWNvcmF0ZS5cbiAgICAgICAgICogQHBhcmFtIGF0dHJpYnV0ZXMgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIHRhcmdldCBrZXkuXG4gICAgICAgICAqIEByZW1hcmtzIERlY29yYXRvcnMgYXJlIGFwcGxpZWQgaW4gcmV2ZXJzZSBvcmRlci5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgRXhhbXBsZSA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9yc0FycmF5LCBFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9yc0FycmF5LCBFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9yc0FycmF5LCBFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIixcbiAgICAgICAgICogICAgICAgICBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnNBcnJheSwgRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIixcbiAgICAgICAgICogICAgICAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiKSkpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIsXG4gICAgICAgICAqICAgICAgICAgUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzQXJyYXksIEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiLFxuICAgICAgICAgKiAgICAgICAgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiKSkpO1xuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBwcm9wZXJ0eUtleSwgYXR0cmlidXRlcykge1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIUlzQXJyYXkoZGVjb3JhdG9ycykpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgICAgICBpZiAoIUlzT2JqZWN0KGF0dHJpYnV0ZXMpICYmICFJc1VuZGVmaW5lZChhdHRyaWJ1dGVzKSAmJiAhSXNOdWxsKGF0dHJpYnV0ZXMpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgaWYgKElzTnVsbChhdHRyaWJ1dGVzKSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBEZWNvcmF0ZVByb3BlcnR5KGRlY29yYXRvcnMsIHRhcmdldCwgcHJvcGVydHlLZXksIGF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFJc0FycmF5KGRlY29yYXRvcnMpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFJc0NvbnN0cnVjdG9yKHRhcmdldCkpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gRGVjb3JhdGVDb25zdHJ1Y3RvcihkZWNvcmF0b3JzLCB0YXJnZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwiZGVjb3JhdGVcIiwgZGVjb3JhdGUpO1xuICAgICAgICAvLyA0LjEuMiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKVxuICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNyZWZsZWN0Lm1ldGFkYXRhXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIGRlZmF1bHQgbWV0YWRhdGEgZGVjb3JhdG9yIGZhY3RvcnkgdGhhdCBjYW4gYmUgdXNlZCBvbiBhIGNsYXNzLCBjbGFzcyBtZW1iZXIsIG9yIHBhcmFtZXRlci5cbiAgICAgICAgICogQHBhcmFtIG1ldGFkYXRhS2V5IFRoZSBrZXkgZm9yIHRoZSBtZXRhZGF0YSBlbnRyeS5cbiAgICAgICAgICogQHBhcmFtIG1ldGFkYXRhVmFsdWUgVGhlIHZhbHVlIGZvciB0aGUgbWV0YWRhdGEgZW50cnkuXG4gICAgICAgICAqIEByZXR1cm5zIEEgZGVjb3JhdG9yIGZ1bmN0aW9uLlxuICAgICAgICAgKiBAcmVtYXJrc1xuICAgICAgICAgKiBJZiBgbWV0YWRhdGFLZXlgIGlzIGFscmVhZHkgZGVmaW5lZCBmb3IgdGhlIHRhcmdldCBhbmQgdGFyZ2V0IGtleSwgdGhlXG4gICAgICAgICAqIG1ldGFkYXRhVmFsdWUgZm9yIHRoYXQga2V5IHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgQFJlZmxlY3QubWV0YWRhdGEoa2V5LCB2YWx1ZSlcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yLCBUeXBlU2NyaXB0IG9ubHkpXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICBAUmVmbGVjdC5tZXRhZGF0YShrZXksIHZhbHVlKVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUsIFR5cGVTY3JpcHQgb25seSlcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIEBSZWZsZWN0Lm1ldGFkYXRhKGtleSwgdmFsdWUpXG4gICAgICAgICAqICAgICAgICAgcHJvcGVydHk7XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgQFJlZmxlY3QubWV0YWRhdGEoa2V5LCB2YWx1ZSlcbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIEBSZWZsZWN0Lm1ldGFkYXRhKGtleSwgdmFsdWUpXG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBtZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xuICAgICAgICAgICAgZnVuY3Rpb24gZGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSAmJiAhSXNQcm9wZXJ0eUtleShwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgICAgICBPcmRpbmFyeURlZmluZU93bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkZWNvcmF0b3I7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJtZXRhZGF0YVwiLCBtZXRhZGF0YSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZWZpbmUgYSB1bmlxdWUgbWV0YWRhdGEgZW50cnkgb24gdGhlIHRhcmdldC5cbiAgICAgICAgICogQHBhcmFtIG1ldGFkYXRhS2V5IEEga2V5IHVzZWQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIG1ldGFkYXRhLlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFWYWx1ZSBBIHZhbHVlIHRoYXQgY29udGFpbnMgYXR0YWNoZWQgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdG8gZGVmaW5lIG1ldGFkYXRhLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgb3B0aW9ucywgRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgb3B0aW9ucywgRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgb3B0aW9ucywgRXhhbXBsZS5wcm90b3R5cGUsIFwicHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIG9wdGlvbnMsIEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgb3B0aW9ucywgRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gZGVjb3JhdG9yIGZhY3RvcnkgYXMgbWV0YWRhdGEtcHJvZHVjaW5nIGFubm90YXRpb24uXG4gICAgICAgICAqICAgICBmdW5jdGlvbiBNeUFubm90YXRpb24ob3B0aW9ucyk6IERlY29yYXRvciB7XG4gICAgICAgICAqICAgICAgICAgcmV0dXJuICh0YXJnZXQsIGtleT8pID0+IFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBvcHRpb25zLCB0YXJnZXQsIGtleSk7XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBkZWZpbmVNZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJkZWZpbmVNZXRhZGF0YVwiLCBkZWZpbmVNZXRhZGF0YSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIGEgdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB0YXJnZXQgb2JqZWN0IG9yIGl0cyBwcm90b3R5cGUgY2hhaW4gaGFzIHRoZSBwcm92aWRlZCBtZXRhZGF0YSBrZXkgZGVmaW5lZC5cbiAgICAgICAgICogQHBhcmFtIG1ldGFkYXRhS2V5IEEga2V5IHVzZWQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIG1ldGFkYXRhLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG1ldGFkYXRhIGtleSB3YXMgZGVmaW5lZCBvbiB0aGUgdGFyZ2V0IG9iamVjdCBvciBpdHMgcHJvdG90eXBlIGNoYWluOyBvdGhlcndpc2UsIGBmYWxzZWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuaGFzTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuaGFzTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuaGFzTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc01ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuaGFzTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBoYXNNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlIYXNNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJoYXNNZXRhZGF0YVwiLCBoYXNNZXRhZGF0YSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIGEgdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB0YXJnZXQgb2JqZWN0IGhhcyB0aGUgcHJvdmlkZWQgbWV0YWRhdGEga2V5IGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YUtleSBBIGtleSB1c2VkIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBtZXRhZGF0YS5cbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCBvbiB3aGljaCB0aGUgbWV0YWRhdGEgaXMgZGVmaW5lZC5cbiAgICAgICAgICogQHBhcmFtIHByb3BlcnR5S2V5IChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGtleSBmb3IgdGhlIHRhcmdldC5cbiAgICAgICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBtZXRhZGF0YSBrZXkgd2FzIGRlZmluZWQgb24gdGhlIHRhcmdldCBvYmplY3Q7IG90aGVyd2lzZSwgYGZhbHNlYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNPd25NZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNPd25NZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNPd25NZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuaGFzT3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNPd25NZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGhhc093bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUhhc093bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImhhc093bk1ldGFkYXRhXCIsIGhhc093bk1ldGFkYXRhKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgdGhlIG1ldGFkYXRhIHZhbHVlIGZvciB0aGUgcHJvdmlkZWQgbWV0YWRhdGEga2V5IG9uIHRoZSB0YXJnZXQgb2JqZWN0IG9yIGl0cyBwcm90b3R5cGUgY2hhaW4uXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YUtleSBBIGtleSB1c2VkIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBtZXRhZGF0YS5cbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCBvbiB3aGljaCB0aGUgbWV0YWRhdGEgaXMgZGVmaW5lZC5cbiAgICAgICAgICogQHBhcmFtIHByb3BlcnR5S2V5IChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGtleSBmb3IgdGhlIHRhcmdldC5cbiAgICAgICAgICogQHJldHVybnMgVGhlIG1ldGFkYXRhIHZhbHVlIGZvciB0aGUgbWV0YWRhdGEga2V5IGlmIGZvdW5kOyBvdGhlcndpc2UsIGB1bmRlZmluZWRgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwicHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZ2V0TWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5R2V0TWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwiZ2V0TWV0YWRhdGFcIiwgZ2V0TWV0YWRhdGEpO1xuICAgICAgICAvKipcbiAgICAgICAgICogR2V0cyB0aGUgbWV0YWRhdGEgdmFsdWUgZm9yIHRoZSBwcm92aWRlZCBtZXRhZGF0YSBrZXkgb24gdGhlIHRhcmdldCBvYmplY3QuXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YUtleSBBIGtleSB1c2VkIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBtZXRhZGF0YS5cbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCBvbiB3aGljaCB0aGUgbWV0YWRhdGEgaXMgZGVmaW5lZC5cbiAgICAgICAgICogQHBhcmFtIHByb3BlcnR5S2V5IChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGtleSBmb3IgdGhlIHRhcmdldC5cbiAgICAgICAgICogQHJldHVybnMgVGhlIG1ldGFkYXRhIHZhbHVlIGZvciB0aGUgbWV0YWRhdGEga2V5IGlmIGZvdW5kOyBvdGhlcndpc2UsIGB1bmRlZmluZWRgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwicHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZ2V0T3duTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5R2V0T3duTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwiZ2V0T3duTWV0YWRhdGFcIiwgZ2V0T3duTWV0YWRhdGEpO1xuICAgICAgICAvKipcbiAgICAgICAgICogR2V0cyB0aGUgbWV0YWRhdGEga2V5cyBkZWZpbmVkIG9uIHRoZSB0YXJnZXQgb2JqZWN0IG9yIGl0cyBwcm90b3R5cGUgY2hhaW4uXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHVuaXF1ZSBtZXRhZGF0YSBrZXlzLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhS2V5cyhFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGFLZXlzKEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YUtleXMoRXhhbXBsZS5wcm90b3R5cGUsIFwicHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YUtleXMoRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGFLZXlzKEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGdldE1ldGFkYXRhS2V5cyh0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeU1ldGFkYXRhS2V5cyh0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImdldE1ldGFkYXRhS2V5c1wiLCBnZXRNZXRhZGF0YUtleXMpO1xuICAgICAgICAvKipcbiAgICAgICAgICogR2V0cyB0aGUgdW5pcXVlIG1ldGFkYXRhIGtleXMgZGVmaW5lZCBvbiB0aGUgdGFyZ2V0IG9iamVjdC5cbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCBvbiB3aGljaCB0aGUgbWV0YWRhdGEgaXMgZGVmaW5lZC5cbiAgICAgICAgICogQHBhcmFtIHByb3BlcnR5S2V5IChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGtleSBmb3IgdGhlIHRhcmdldC5cbiAgICAgICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgdW5pcXVlIG1ldGFkYXRhIGtleXMuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGFLZXlzKEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YUtleXMoRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhS2V5cyhFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhS2V5cyhFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YUtleXMoRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZ2V0T3duTWV0YWRhdGFLZXlzKHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5T3duTWV0YWRhdGFLZXlzKHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwiZ2V0T3duTWV0YWRhdGFLZXlzXCIsIGdldE93bk1ldGFkYXRhS2V5cyk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZWxldGVzIHRoZSBtZXRhZGF0YSBlbnRyeSBmcm9tIHRoZSB0YXJnZXQgb2JqZWN0IHdpdGggdGhlIHByb3ZpZGVkIGtleS5cbiAgICAgICAgICogQHBhcmFtIG1ldGFkYXRhS2V5IEEga2V5IHVzZWQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIG1ldGFkYXRhLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG1ldGFkYXRhIGVudHJ5IHdhcyBmb3VuZCBhbmQgZGVsZXRlZDsgb3RoZXJ3aXNlLCBmYWxzZS5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5kZWxldGVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5kZWxldGVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5kZWxldGVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZGVsZXRlTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5kZWxldGVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGRlbGV0ZU1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgdmFyIHByb3ZpZGVyID0gR2V0TWV0YWRhdGFQcm92aWRlcih0YXJnZXQsIHByb3BlcnR5S2V5LCAvKkNyZWF0ZSovIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChwcm92aWRlcikpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVyLk9yZGluYXJ5RGVsZXRlTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwiZGVsZXRlTWV0YWRhdGFcIiwgZGVsZXRlTWV0YWRhdGEpO1xuICAgICAgICBmdW5jdGlvbiBEZWNvcmF0ZUNvbnN0cnVjdG9yKGRlY29yYXRvcnMsIHRhcmdldCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGVjb3JhdG9yID0gZGVjb3JhdG9yc1tpXTtcbiAgICAgICAgICAgICAgICB2YXIgZGVjb3JhdGVkID0gZGVjb3JhdG9yKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChkZWNvcmF0ZWQpICYmICFJc051bGwoZGVjb3JhdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUlzQ29uc3RydWN0b3IoZGVjb3JhdGVkKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gZGVjb3JhdGVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gRGVjb3JhdGVQcm9wZXJ0eShkZWNvcmF0b3JzLCB0YXJnZXQsIHByb3BlcnR5S2V5LCBkZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICAgICAgICAgIHZhciBkZWNvcmF0b3IgPSBkZWNvcmF0b3JzW2ldO1xuICAgICAgICAgICAgICAgIHZhciBkZWNvcmF0ZWQgPSBkZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSwgZGVzY3JpcHRvcik7XG4gICAgICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChkZWNvcmF0ZWQpICYmICFJc051bGwoZGVjb3JhdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUlzT2JqZWN0KGRlY29yYXRlZCkpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IgPSBkZWNvcmF0ZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMy4xLjEuMSBPcmRpbmFyeUhhc01ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKVxuICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeWhhc21ldGFkYXRhXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5SGFzTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgICAgICAgICAgIHZhciBoYXNPd24gPSBPcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKTtcbiAgICAgICAgICAgIGlmIChoYXNPd24pXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB2YXIgcGFyZW50ID0gT3JkaW5hcnlHZXRQcm90b3R5cGVPZihPKTtcbiAgICAgICAgICAgIGlmICghSXNOdWxsKHBhcmVudCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5SGFzTWV0YWRhdGEoTWV0YWRhdGFLZXksIHBhcmVudCwgUCk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMy4xLjIuMSBPcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKVxuICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeWhhc293bm1ldGFkYXRhXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5SGFzT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgICAgICAgICAgIHZhciBwcm92aWRlciA9IEdldE1ldGFkYXRhUHJvdmlkZXIoTywgUCwgLypDcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQocHJvdmlkZXIpKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiBUb0Jvb2xlYW4ocHJvdmlkZXIuT3JkaW5hcnlIYXNPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS4zLjEgT3JkaW5hcnlHZXRNZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnlnZXRtZXRhZGF0YVxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUdldE1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gICAgICAgICAgICB2YXIgaGFzT3duID0gT3JkaW5hcnlIYXNPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCk7XG4gICAgICAgICAgICBpZiAoaGFzT3duKVxuICAgICAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUdldE93bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKTtcbiAgICAgICAgICAgIHZhciBwYXJlbnQgPSBPcmRpbmFyeUdldFByb3RvdHlwZU9mKE8pO1xuICAgICAgICAgICAgaWYgKCFJc051bGwocGFyZW50KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlHZXRNZXRhZGF0YShNZXRhZGF0YUtleSwgcGFyZW50LCBQKTtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMy4xLjQuMSBPcmRpbmFyeUdldE93bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKVxuICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeWdldG93bm1ldGFkYXRhXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5R2V0T3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgICAgICAgICAgIHZhciBwcm92aWRlciA9IEdldE1ldGFkYXRhUHJvdmlkZXIoTywgUCwgLypDcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQocHJvdmlkZXIpKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIHJldHVybiBwcm92aWRlci5PcmRpbmFyeUdldE93bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKTtcbiAgICAgICAgfVxuICAgICAgICAvLyAzLjEuNS4xIE9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE1ldGFkYXRhVmFsdWUsIE8sIFApXG4gICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5ZGVmaW5lb3dubWV0YWRhdGFcbiAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTWV0YWRhdGFWYWx1ZSwgTywgUCkge1xuICAgICAgICAgICAgdmFyIHByb3ZpZGVyID0gR2V0TWV0YWRhdGFQcm92aWRlcihPLCBQLCAvKkNyZWF0ZSovIHRydWUpO1xuICAgICAgICAgICAgcHJvdmlkZXIuT3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTWV0YWRhdGFWYWx1ZSwgTywgUCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMy4xLjYuMSBPcmRpbmFyeU1ldGFkYXRhS2V5cyhPLCBQKVxuICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeW1ldGFkYXRha2V5c1xuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeU1ldGFkYXRhS2V5cyhPLCBQKSB7XG4gICAgICAgICAgICB2YXIgb3duS2V5cyA9IE9yZGluYXJ5T3duTWV0YWRhdGFLZXlzKE8sIFApO1xuICAgICAgICAgICAgdmFyIHBhcmVudCA9IE9yZGluYXJ5R2V0UHJvdG90eXBlT2YoTyk7XG4gICAgICAgICAgICBpZiAocGFyZW50ID09PSBudWxsKVxuICAgICAgICAgICAgICAgIHJldHVybiBvd25LZXlzO1xuICAgICAgICAgICAgdmFyIHBhcmVudEtleXMgPSBPcmRpbmFyeU1ldGFkYXRhS2V5cyhwYXJlbnQsIFApO1xuICAgICAgICAgICAgaWYgKHBhcmVudEtleXMubGVuZ3RoIDw9IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIG93bktleXM7XG4gICAgICAgICAgICBpZiAob3duS2V5cy5sZW5ndGggPD0gMClcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50S2V5cztcbiAgICAgICAgICAgIHZhciBzZXQgPSBuZXcgX1NldCgpO1xuICAgICAgICAgICAgdmFyIGtleXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMCwgb3duS2V5c18xID0gb3duS2V5czsgX2kgPCBvd25LZXlzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IG93bktleXNfMVtfaV07XG4gICAgICAgICAgICAgICAgdmFyIGhhc0tleSA9IHNldC5oYXMoa2V5KTtcbiAgICAgICAgICAgICAgICBpZiAoIWhhc0tleSkge1xuICAgICAgICAgICAgICAgICAgICBzZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAodmFyIF9hID0gMCwgcGFyZW50S2V5c18xID0gcGFyZW50S2V5czsgX2EgPCBwYXJlbnRLZXlzXzEubGVuZ3RoOyBfYSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IHBhcmVudEtleXNfMVtfYV07XG4gICAgICAgICAgICAgICAgdmFyIGhhc0tleSA9IHNldC5oYXMoa2V5KTtcbiAgICAgICAgICAgICAgICBpZiAoIWhhc0tleSkge1xuICAgICAgICAgICAgICAgICAgICBzZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBrZXlzO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS43LjEgT3JkaW5hcnlPd25NZXRhZGF0YUtleXMoTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnlvd25tZXRhZGF0YWtleXNcbiAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlPd25NZXRhZGF0YUtleXMoTywgUCkge1xuICAgICAgICAgICAgdmFyIHByb3ZpZGVyID0gR2V0TWV0YWRhdGFQcm92aWRlcihPLCBQLCAvKmNyZWF0ZSovIGZhbHNlKTtcbiAgICAgICAgICAgIGlmICghcHJvdmlkZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcHJvdmlkZXIuT3JkaW5hcnlPd25NZXRhZGF0YUtleXMoTywgUCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNiBFQ01BU2NyaXB0IERhdGEgVHlwZXMgYW5kIFZhbHVlc1xuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1lY21hc2NyaXB0LWRhdGEtdHlwZXMtYW5kLXZhbHVlc1xuICAgICAgICBmdW5jdGlvbiBUeXBlKHgpIHtcbiAgICAgICAgICAgIGlmICh4ID09PSBudWxsKVxuICAgICAgICAgICAgICAgIHJldHVybiAxIC8qIE51bGwgKi87XG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiB4KSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcInVuZGVmaW5lZFwiOiByZXR1cm4gMCAvKiBVbmRlZmluZWQgKi87XG4gICAgICAgICAgICAgICAgY2FzZSBcImJvb2xlYW5cIjogcmV0dXJuIDIgLyogQm9vbGVhbiAqLztcbiAgICAgICAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6IHJldHVybiAzIC8qIFN0cmluZyAqLztcbiAgICAgICAgICAgICAgICBjYXNlIFwic3ltYm9sXCI6IHJldHVybiA0IC8qIFN5bWJvbCAqLztcbiAgICAgICAgICAgICAgICBjYXNlIFwibnVtYmVyXCI6IHJldHVybiA1IC8qIE51bWJlciAqLztcbiAgICAgICAgICAgICAgICBjYXNlIFwib2JqZWN0XCI6IHJldHVybiB4ID09PSBudWxsID8gMSAvKiBOdWxsICovIDogNiAvKiBPYmplY3QgKi87XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIDYgLyogT2JqZWN0ICovO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIDYuMS4xIFRoZSBVbmRlZmluZWQgVHlwZVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzLXVuZGVmaW5lZC10eXBlXG4gICAgICAgIGZ1bmN0aW9uIElzVW5kZWZpbmVkKHgpIHtcbiAgICAgICAgICAgIHJldHVybiB4ID09PSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNi4xLjIgVGhlIE51bGwgVHlwZVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzLW51bGwtdHlwZVxuICAgICAgICBmdW5jdGlvbiBJc051bGwoeCkge1xuICAgICAgICAgICAgcmV0dXJuIHggPT09IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNi4xLjUgVGhlIFN5bWJvbCBUeXBlXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMtc3ltYm9sLXR5cGVcbiAgICAgICAgZnVuY3Rpb24gSXNTeW1ib2woeCkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB4ID09PSBcInN5bWJvbFwiO1xuICAgICAgICB9XG4gICAgICAgIC8vIDYuMS43IFRoZSBPYmplY3QgVHlwZVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QtdHlwZVxuICAgICAgICBmdW5jdGlvbiBJc09iamVjdCh4KSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIHggPT09IFwib2JqZWN0XCIgPyB4ICE9PSBudWxsIDogdHlwZW9mIHggPT09IFwiZnVuY3Rpb25cIjtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjEgVHlwZSBDb252ZXJzaW9uXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXR5cGUtY29udmVyc2lvblxuICAgICAgICAvLyA3LjEuMSBUb1ByaW1pdGl2ZShpbnB1dCBbLCBQcmVmZXJyZWRUeXBlXSlcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9wcmltaXRpdmVcbiAgICAgICAgZnVuY3Rpb24gVG9QcmltaXRpdmUoaW5wdXQsIFByZWZlcnJlZFR5cGUpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoVHlwZShpbnB1dCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDAgLyogVW5kZWZpbmVkICovOiByZXR1cm4gaW5wdXQ7XG4gICAgICAgICAgICAgICAgY2FzZSAxIC8qIE51bGwgKi86IHJldHVybiBpbnB1dDtcbiAgICAgICAgICAgICAgICBjYXNlIDIgLyogQm9vbGVhbiAqLzogcmV0dXJuIGlucHV0O1xuICAgICAgICAgICAgICAgIGNhc2UgMyAvKiBTdHJpbmcgKi86IHJldHVybiBpbnB1dDtcbiAgICAgICAgICAgICAgICBjYXNlIDQgLyogU3ltYm9sICovOiByZXR1cm4gaW5wdXQ7XG4gICAgICAgICAgICAgICAgY2FzZSA1IC8qIE51bWJlciAqLzogcmV0dXJuIGlucHV0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGhpbnQgPSBQcmVmZXJyZWRUeXBlID09PSAzIC8qIFN0cmluZyAqLyA/IFwic3RyaW5nXCIgOiBQcmVmZXJyZWRUeXBlID09PSA1IC8qIE51bWJlciAqLyA/IFwibnVtYmVyXCIgOiBcImRlZmF1bHRcIjtcbiAgICAgICAgICAgIHZhciBleG90aWNUb1ByaW0gPSBHZXRNZXRob2QoaW5wdXQsIHRvUHJpbWl0aXZlU3ltYm9sKTtcbiAgICAgICAgICAgIGlmIChleG90aWNUb1ByaW0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBleG90aWNUb1ByaW0uY2FsbChpbnB1dCwgaGludCk7XG4gICAgICAgICAgICAgICAgaWYgKElzT2JqZWN0KHJlc3VsdCkpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5VG9QcmltaXRpdmUoaW5wdXQsIGhpbnQgPT09IFwiZGVmYXVsdFwiID8gXCJudW1iZXJcIiA6IGhpbnQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMS4xLjEgT3JkaW5hcnlUb1ByaW1pdGl2ZShPLCBoaW50KVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vcmRpbmFyeXRvcHJpbWl0aXZlXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5VG9QcmltaXRpdmUoTywgaGludCkge1xuICAgICAgICAgICAgaWYgKGhpbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICB2YXIgdG9TdHJpbmdfMSA9IE8udG9TdHJpbmc7XG4gICAgICAgICAgICAgICAgaWYgKElzQ2FsbGFibGUodG9TdHJpbmdfMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRvU3RyaW5nXzEuY2FsbChPKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFJc09iamVjdChyZXN1bHQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlT2YgPSBPLnZhbHVlT2Y7XG4gICAgICAgICAgICAgICAgaWYgKElzQ2FsbGFibGUodmFsdWVPZikpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHZhbHVlT2YuY2FsbChPKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFJc09iamVjdChyZXN1bHQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWVPZiA9IE8udmFsdWVPZjtcbiAgICAgICAgICAgICAgICBpZiAoSXNDYWxsYWJsZSh2YWx1ZU9mKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdmFsdWVPZi5jYWxsKE8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHJlc3VsdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgdG9TdHJpbmdfMiA9IE8udG9TdHJpbmc7XG4gICAgICAgICAgICAgICAgaWYgKElzQ2FsbGFibGUodG9TdHJpbmdfMikpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRvU3RyaW5nXzIuY2FsbChPKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFJc09iamVjdChyZXN1bHQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4xLjIgVG9Cb29sZWFuKGFyZ3VtZW50KVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvMjAxNi8jc2VjLXRvYm9vbGVhblxuICAgICAgICBmdW5jdGlvbiBUb0Jvb2xlYW4oYXJndW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiAhIWFyZ3VtZW50O1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMS4xMiBUb1N0cmluZyhhcmd1bWVudClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9zdHJpbmdcbiAgICAgICAgZnVuY3Rpb24gVG9TdHJpbmcoYXJndW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiICsgYXJndW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4xLjE0IFRvUHJvcGVydHlLZXkoYXJndW1lbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvcHJvcGVydHlrZXlcbiAgICAgICAgZnVuY3Rpb24gVG9Qcm9wZXJ0eUtleShhcmd1bWVudCkge1xuICAgICAgICAgICAgdmFyIGtleSA9IFRvUHJpbWl0aXZlKGFyZ3VtZW50LCAzIC8qIFN0cmluZyAqLyk7XG4gICAgICAgICAgICBpZiAoSXNTeW1ib2woa2V5KSlcbiAgICAgICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICAgICAgcmV0dXJuIFRvU3RyaW5nKGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4yIFRlc3RpbmcgYW5kIENvbXBhcmlzb24gT3BlcmF0aW9uc1xuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10ZXN0aW5nLWFuZC1jb21wYXJpc29uLW9wZXJhdGlvbnNcbiAgICAgICAgLy8gNy4yLjIgSXNBcnJheShhcmd1bWVudClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXNhcnJheVxuICAgICAgICBmdW5jdGlvbiBJc0FycmF5KGFyZ3VtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheVxuICAgICAgICAgICAgICAgID8gQXJyYXkuaXNBcnJheShhcmd1bWVudClcbiAgICAgICAgICAgICAgICA6IGFyZ3VtZW50IGluc3RhbmNlb2YgT2JqZWN0XG4gICAgICAgICAgICAgICAgICAgID8gYXJndW1lbnQgaW5zdGFuY2VvZiBBcnJheVxuICAgICAgICAgICAgICAgICAgICA6IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCkgPT09IFwiW29iamVjdCBBcnJheV1cIjtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjIuMyBJc0NhbGxhYmxlKGFyZ3VtZW50KVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pc2NhbGxhYmxlXG4gICAgICAgIGZ1bmN0aW9uIElzQ2FsbGFibGUoYXJndW1lbnQpIHtcbiAgICAgICAgICAgIC8vIE5PVEU6IFRoaXMgaXMgYW4gYXBwcm94aW1hdGlvbiBhcyB3ZSBjYW5ub3QgY2hlY2sgZm9yIFtbQ2FsbF1dIGludGVybmFsIG1ldGhvZC5cbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT09IFwiZnVuY3Rpb25cIjtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjIuNCBJc0NvbnN0cnVjdG9yKGFyZ3VtZW50KVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pc2NvbnN0cnVjdG9yXG4gICAgICAgIGZ1bmN0aW9uIElzQ29uc3RydWN0b3IoYXJndW1lbnQpIHtcbiAgICAgICAgICAgIC8vIE5PVEU6IFRoaXMgaXMgYW4gYXBwcm94aW1hdGlvbiBhcyB3ZSBjYW5ub3QgY2hlY2sgZm9yIFtbQ29uc3RydWN0XV0gaW50ZXJuYWwgbWV0aG9kLlxuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJmdW5jdGlvblwiO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMi43IElzUHJvcGVydHlLZXkoYXJndW1lbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzcHJvcGVydHlrZXlcbiAgICAgICAgZnVuY3Rpb24gSXNQcm9wZXJ0eUtleShhcmd1bWVudCkge1xuICAgICAgICAgICAgc3dpdGNoIChUeXBlKGFyZ3VtZW50KSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMyAvKiBTdHJpbmcgKi86IHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNCAvKiBTeW1ib2wgKi86IHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBTYW1lVmFsdWVaZXJvKHgsIHkpIHtcbiAgICAgICAgICAgIHJldHVybiB4ID09PSB5IHx8IHggIT09IHggJiYgeSAhPT0geTtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjMgT3BlcmF0aW9ucyBvbiBPYmplY3RzXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9wZXJhdGlvbnMtb24tb2JqZWN0c1xuICAgICAgICAvLyA3LjMuOSBHZXRNZXRob2QoViwgUClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZ2V0bWV0aG9kXG4gICAgICAgIGZ1bmN0aW9uIEdldE1ldGhvZChWLCBQKSB7XG4gICAgICAgICAgICB2YXIgZnVuYyA9IFZbUF07XG4gICAgICAgICAgICBpZiAoZnVuYyA9PT0gdW5kZWZpbmVkIHx8IGZ1bmMgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmICghSXNDYWxsYWJsZShmdW5jKSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICByZXR1cm4gZnVuYztcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjQgT3BlcmF0aW9ucyBvbiBJdGVyYXRvciBPYmplY3RzXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9wZXJhdGlvbnMtb24taXRlcmF0b3Itb2JqZWN0c1xuICAgICAgICBmdW5jdGlvbiBHZXRJdGVyYXRvcihvYmopIHtcbiAgICAgICAgICAgIHZhciBtZXRob2QgPSBHZXRNZXRob2Qob2JqLCBpdGVyYXRvclN5bWJvbCk7XG4gICAgICAgICAgICBpZiAoIUlzQ2FsbGFibGUobWV0aG9kKSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7IC8vIGZyb20gQ2FsbFxuICAgICAgICAgICAgdmFyIGl0ZXJhdG9yID0gbWV0aG9kLmNhbGwob2JqKTtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QoaXRlcmF0b3IpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjQuNCBJdGVyYXRvclZhbHVlKGl0ZXJSZXN1bHQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8yMDE2LyNzZWMtaXRlcmF0b3J2YWx1ZVxuICAgICAgICBmdW5jdGlvbiBJdGVyYXRvclZhbHVlKGl0ZXJSZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVyUmVzdWx0LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuNC41IEl0ZXJhdG9yU3RlcChpdGVyYXRvcilcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXRlcmF0b3JzdGVwXG4gICAgICAgIGZ1bmN0aW9uIEl0ZXJhdG9yU3RlcChpdGVyYXRvcikge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGl0ZXJhdG9yLm5leHQoKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQuZG9uZSA/IGZhbHNlIDogcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWl0ZXJhdG9yY2xvc2VcbiAgICAgICAgZnVuY3Rpb24gSXRlcmF0b3JDbG9zZShpdGVyYXRvcikge1xuICAgICAgICAgICAgdmFyIGYgPSBpdGVyYXRvcltcInJldHVyblwiXTtcbiAgICAgICAgICAgIGlmIChmKVxuICAgICAgICAgICAgICAgIGYuY2FsbChpdGVyYXRvcik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gOS4xIE9yZGluYXJ5IE9iamVjdCBJbnRlcm5hbCBNZXRob2RzIGFuZCBJbnRlcm5hbCBTbG90c1xuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vcmRpbmFyeS1vYmplY3QtaW50ZXJuYWwtbWV0aG9kcy1hbmQtaW50ZXJuYWwtc2xvdHNcbiAgICAgICAgLy8gOS4xLjEuMSBPcmRpbmFyeUdldFByb3RvdHlwZU9mKE8pXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9yZGluYXJ5Z2V0cHJvdG90eXBlb2ZcbiAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlHZXRQcm90b3R5cGVPZihPKSB7XG4gICAgICAgICAgICB2YXIgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTyk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIE8gIT09IFwiZnVuY3Rpb25cIiB8fCBPID09PSBmdW5jdGlvblByb3RvdHlwZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvdG87XG4gICAgICAgICAgICAvLyBUeXBlU2NyaXB0IGRvZXNuJ3Qgc2V0IF9fcHJvdG9fXyBpbiBFUzUsIGFzIGl0J3Mgbm9uLXN0YW5kYXJkLlxuICAgICAgICAgICAgLy8gVHJ5IHRvIGRldGVybWluZSB0aGUgc3VwZXJjbGFzcyBjb25zdHJ1Y3Rvci4gQ29tcGF0aWJsZSBpbXBsZW1lbnRhdGlvbnNcbiAgICAgICAgICAgIC8vIG11c3QgZWl0aGVyIHNldCBfX3Byb3RvX18gb24gYSBzdWJjbGFzcyBjb25zdHJ1Y3RvciB0byB0aGUgc3VwZXJjbGFzcyBjb25zdHJ1Y3RvcixcbiAgICAgICAgICAgIC8vIG9yIGVuc3VyZSBlYWNoIGNsYXNzIGhhcyBhIHZhbGlkIGBjb25zdHJ1Y3RvcmAgcHJvcGVydHkgb24gaXRzIHByb3RvdHlwZSB0aGF0XG4gICAgICAgICAgICAvLyBwb2ludHMgYmFjayB0byB0aGUgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAvLyBJZiB0aGlzIGlzIG5vdCB0aGUgc2FtZSBhcyBGdW5jdGlvbi5bW1Byb3RvdHlwZV1dLCB0aGVuIHRoaXMgaXMgZGVmaW5hdGVseSBpbmhlcml0ZWQuXG4gICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBjYXNlIHdoZW4gaW4gRVM2IG9yIHdoZW4gdXNpbmcgX19wcm90b19fIGluIGEgY29tcGF0aWJsZSBicm93c2VyLlxuICAgICAgICAgICAgaWYgKHByb3RvICE9PSBmdW5jdGlvblByb3RvdHlwZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvdG87XG4gICAgICAgICAgICAvLyBJZiB0aGUgc3VwZXIgcHJvdG90eXBlIGlzIE9iamVjdC5wcm90b3R5cGUsIG51bGwsIG9yIHVuZGVmaW5lZCwgdGhlbiB3ZSBjYW5ub3QgZGV0ZXJtaW5lIHRoZSBoZXJpdGFnZS5cbiAgICAgICAgICAgIHZhciBwcm90b3R5cGUgPSBPLnByb3RvdHlwZTtcbiAgICAgICAgICAgIHZhciBwcm90b3R5cGVQcm90byA9IHByb3RvdHlwZSAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG90eXBlKTtcbiAgICAgICAgICAgIGlmIChwcm90b3R5cGVQcm90byA9PSBudWxsIHx8IHByb3RvdHlwZVByb3RvID09PSBPYmplY3QucHJvdG90eXBlKVxuICAgICAgICAgICAgICAgIHJldHVybiBwcm90bztcbiAgICAgICAgICAgIC8vIElmIHRoZSBjb25zdHJ1Y3RvciB3YXMgbm90IGEgZnVuY3Rpb24sIHRoZW4gd2UgY2Fubm90IGRldGVybWluZSB0aGUgaGVyaXRhZ2UuXG4gICAgICAgICAgICB2YXIgY29uc3RydWN0b3IgPSBwcm90b3R5cGVQcm90by5jb25zdHJ1Y3RvcjtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29uc3RydWN0b3IgIT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvdG87XG4gICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIHNvbWUga2luZCBvZiBzZWxmLXJlZmVyZW5jZSwgdGhlbiB3ZSBjYW5ub3QgZGV0ZXJtaW5lIHRoZSBoZXJpdGFnZS5cbiAgICAgICAgICAgIGlmIChjb25zdHJ1Y3RvciA9PT0gTylcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvdG87XG4gICAgICAgICAgICAvLyB3ZSBoYXZlIGEgcHJldHR5IGdvb2QgZ3Vlc3MgYXQgdGhlIGhlcml0YWdlLlxuICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yO1xuICAgICAgICB9XG4gICAgICAgIC8vIEdsb2JhbCBtZXRhZGF0YSByZWdpc3RyeVxuICAgICAgICAvLyAtIEFsbG93cyBgaW1wb3J0IFwicmVmbGVjdC1tZXRhZGF0YVwiYCBhbmQgYGltcG9ydCBcInJlZmxlY3QtbWV0YWRhdGEvbm8tY29uZmxpY3RcImAgdG8gaW50ZXJvcGVyYXRlLlxuICAgICAgICAvLyAtIFVzZXMgaXNvbGF0ZWQgbWV0YWRhdGEgaWYgYFJlZmxlY3RgIGlzIGZyb3plbiBiZWZvcmUgdGhlIHJlZ2lzdHJ5IGNhbiBiZSBpbnN0YWxsZWQuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgcmVnaXN0cnkgdXNlZCB0byBhbGxvdyBtdWx0aXBsZSBgcmVmbGVjdC1tZXRhZGF0YWAgcHJvdmlkZXJzLlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gQ3JlYXRlTWV0YWRhdGFSZWdpc3RyeSgpIHtcbiAgICAgICAgICAgIHZhciBmYWxsYmFjaztcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocmVnaXN0cnlTeW1ib2wpICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIHJvb3QuUmVmbGVjdCAhPT0gXCJ1bmRlZmluZWRcIiAmJlxuICAgICAgICAgICAgICAgICEocmVnaXN0cnlTeW1ib2wgaW4gcm9vdC5SZWZsZWN0KSAmJlxuICAgICAgICAgICAgICAgIHR5cGVvZiByb290LlJlZmxlY3QuZGVmaW5lTWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIC8vIGludGVyb3BlcmF0ZSB3aXRoIG9sZGVyIHZlcnNpb24gb2YgYHJlZmxlY3QtbWV0YWRhdGFgIHRoYXQgZGlkIG5vdCBzdXBwb3J0IGEgcmVnaXN0cnkuXG4gICAgICAgICAgICAgICAgZmFsbGJhY2sgPSBDcmVhdGVGYWxsYmFja1Byb3ZpZGVyKHJvb3QuUmVmbGVjdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZmlyc3Q7XG4gICAgICAgICAgICB2YXIgc2Vjb25kO1xuICAgICAgICAgICAgdmFyIHJlc3Q7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0UHJvdmlkZXJNYXAgPSBuZXcgX1dlYWtNYXAoKTtcbiAgICAgICAgICAgIHZhciByZWdpc3RyeSA9IHtcbiAgICAgICAgICAgICAgICByZWdpc3RlclByb3ZpZGVyOiByZWdpc3RlclByb3ZpZGVyLFxuICAgICAgICAgICAgICAgIGdldFByb3ZpZGVyOiBnZXRQcm92aWRlcixcbiAgICAgICAgICAgICAgICBzZXRQcm92aWRlcjogc2V0UHJvdmlkZXIsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdHJ5O1xuICAgICAgICAgICAgZnVuY3Rpb24gcmVnaXN0ZXJQcm92aWRlcihwcm92aWRlcikge1xuICAgICAgICAgICAgICAgIGlmICghT2JqZWN0LmlzRXh0ZW5zaWJsZShyZWdpc3RyeSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGFkZCBwcm92aWRlciB0byBhIGZyb3plbiByZWdpc3RyeS5cIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIGZhbGxiYWNrID09PSBwcm92aWRlcjogYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgSXNVbmRlZmluZWQoZmlyc3QpOlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBwcm92aWRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIGZpcnN0ID09PSBwcm92aWRlcjogYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgSXNVbmRlZmluZWQoc2Vjb25kKTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZCA9IHByb3ZpZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2Ugc2Vjb25kID09PSBwcm92aWRlcjogYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3QgPSBuZXcgX1NldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdC5hZGQocHJvdmlkZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gZ2V0UHJvdmlkZXJOb0NhY2hlKE8sIFApIHtcbiAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKGZpcnN0KSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3QuaXNQcm92aWRlckZvcihPLCBQKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChzZWNvbmQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2Vjb25kLmlzUHJvdmlkZXJGb3IoTywgUCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChyZXN0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVyYXRvciA9IEdldEl0ZXJhdG9yKHJlc3QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuZXh0ID0gSXRlcmF0b3JTdGVwKGl0ZXJhdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFuZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcm92aWRlciA9IEl0ZXJhdG9yVmFsdWUobmV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm92aWRlci5pc1Byb3ZpZGVyRm9yKE8sIFApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm92aWRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKGZhbGxiYWNrKSAmJiBmYWxsYmFjay5pc1Byb3ZpZGVyRm9yKE8sIFApKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxsYmFjaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIGdldFByb3ZpZGVyKE8sIFApIHtcbiAgICAgICAgICAgICAgICB2YXIgcHJvdmlkZXJNYXAgPSB0YXJnZXRQcm92aWRlck1hcC5nZXQoTyk7XG4gICAgICAgICAgICAgICAgdmFyIHByb3ZpZGVyO1xuICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvdmlkZXJNYXApKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyID0gcHJvdmlkZXJNYXAuZ2V0KFApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3ZpZGVyKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvdmlkZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHByb3ZpZGVyID0gZ2V0UHJvdmlkZXJOb0NhY2hlKE8sIFApO1xuICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvdmlkZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChwcm92aWRlck1hcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyTWFwID0gbmV3IF9NYXAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFByb3ZpZGVyTWFwLnNldChPLCBwcm92aWRlck1hcCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXJNYXAuc2V0KFAsIHByb3ZpZGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gaGFzUHJvdmlkZXIocHJvdmlkZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQocHJvdmlkZXIpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0ID09PSBwcm92aWRlciB8fCBzZWNvbmQgPT09IHByb3ZpZGVyIHx8ICFJc1VuZGVmaW5lZChyZXN0KSAmJiByZXN0Lmhhcyhwcm92aWRlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBzZXRQcm92aWRlcihPLCBQLCBwcm92aWRlcikge1xuICAgICAgICAgICAgICAgIGlmICghaGFzUHJvdmlkZXIocHJvdmlkZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGFkYXRhIHByb3ZpZGVyIG5vdCByZWdpc3RlcmVkLlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGV4aXN0aW5nUHJvdmlkZXIgPSBnZXRQcm92aWRlcihPLCBQKTtcbiAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdQcm92aWRlciAhPT0gcHJvdmlkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChleGlzdGluZ1Byb3ZpZGVyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBwcm92aWRlck1hcCA9IHRhcmdldFByb3ZpZGVyTWFwLmdldChPKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKHByb3ZpZGVyTWFwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXJNYXAgPSBuZXcgX01hcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UHJvdmlkZXJNYXAuc2V0KE8sIHByb3ZpZGVyTWFwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwcm92aWRlck1hcC5zZXQoUCwgcHJvdmlkZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogR2V0cyBvciBjcmVhdGVzIHRoZSBzaGFyZWQgcmVnaXN0cnkgb2YgbWV0YWRhdGEgcHJvdmlkZXJzLlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gR2V0T3JDcmVhdGVNZXRhZGF0YVJlZ2lzdHJ5KCkge1xuICAgICAgICAgICAgdmFyIG1ldGFkYXRhUmVnaXN0cnk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHJlZ2lzdHJ5U3ltYm9sKSAmJiBJc09iamVjdChyb290LlJlZmxlY3QpICYmIE9iamVjdC5pc0V4dGVuc2libGUocm9vdC5SZWZsZWN0KSkge1xuICAgICAgICAgICAgICAgIG1ldGFkYXRhUmVnaXN0cnkgPSByb290LlJlZmxlY3RbcmVnaXN0cnlTeW1ib2xdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKG1ldGFkYXRhUmVnaXN0cnkpKSB7XG4gICAgICAgICAgICAgICAgbWV0YWRhdGFSZWdpc3RyeSA9IENyZWF0ZU1ldGFkYXRhUmVnaXN0cnkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocmVnaXN0cnlTeW1ib2wpICYmIElzT2JqZWN0KHJvb3QuUmVmbGVjdCkgJiYgT2JqZWN0LmlzRXh0ZW5zaWJsZShyb290LlJlZmxlY3QpKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJvb3QuUmVmbGVjdCwgcmVnaXN0cnlTeW1ib2wsIHtcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG1ldGFkYXRhUmVnaXN0cnlcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBtZXRhZGF0YVJlZ2lzdHJ5O1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIENyZWF0ZU1ldGFkYXRhUHJvdmlkZXIocmVnaXN0cnkpIHtcbiAgICAgICAgICAgIC8vIFtbTWV0YWRhdGFdXSBpbnRlcm5hbCBzbG90XG4gICAgICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeS1vYmplY3QtaW50ZXJuYWwtbWV0aG9kcy1hbmQtaW50ZXJuYWwtc2xvdHNcbiAgICAgICAgICAgIHZhciBtZXRhZGF0YSA9IG5ldyBfV2Vha01hcCgpO1xuICAgICAgICAgICAgdmFyIHByb3ZpZGVyID0ge1xuICAgICAgICAgICAgICAgIGlzUHJvdmlkZXJGb3I6IGZ1bmN0aW9uIChPLCBQKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YXJnZXRNZXRhZGF0YSA9IG1ldGFkYXRhLmdldChPKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKHRhcmdldE1ldGFkYXRhKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldE1ldGFkYXRhLmhhcyhQKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIE9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGE6IE9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgT3JkaW5hcnlIYXNPd25NZXRhZGF0YTogT3JkaW5hcnlIYXNPd25NZXRhZGF0YSxcbiAgICAgICAgICAgICAgICBPcmRpbmFyeUdldE93bk1ldGFkYXRhOiBPcmRpbmFyeUdldE93bk1ldGFkYXRhLFxuICAgICAgICAgICAgICAgIE9yZGluYXJ5T3duTWV0YWRhdGFLZXlzOiBPcmRpbmFyeU93bk1ldGFkYXRhS2V5cyxcbiAgICAgICAgICAgICAgICBPcmRpbmFyeURlbGV0ZU1ldGFkYXRhOiBPcmRpbmFyeURlbGV0ZU1ldGFkYXRhLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIG1ldGFkYXRhUmVnaXN0cnkucmVnaXN0ZXJQcm92aWRlcihwcm92aWRlcik7XG4gICAgICAgICAgICByZXR1cm4gcHJvdmlkZXI7XG4gICAgICAgICAgICBmdW5jdGlvbiBHZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIENyZWF0ZSkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXRNZXRhZGF0YSA9IG1ldGFkYXRhLmdldChPKTtcbiAgICAgICAgICAgICAgICB2YXIgY3JlYXRlZFRhcmdldE1ldGFkYXRhID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKHRhcmdldE1ldGFkYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUNyZWF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldE1ldGFkYXRhID0gbmV3IF9NYXAoKTtcbiAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEuc2V0KE8sIHRhcmdldE1ldGFkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlZFRhcmdldE1ldGFkYXRhID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIG1ldGFkYXRhTWFwID0gdGFyZ2V0TWV0YWRhdGEuZ2V0KFApO1xuICAgICAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChtZXRhZGF0YU1hcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFDcmVhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YU1hcCA9IG5ldyBfTWFwKCk7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldE1ldGFkYXRhLnNldChQLCBtZXRhZGF0YU1hcCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVnaXN0cnkuc2V0UHJvdmlkZXIoTywgUCwgcHJvdmlkZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRNZXRhZGF0YS5kZWxldGUoUCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3JlYXRlZFRhcmdldE1ldGFkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEuZGVsZXRlKE8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiV3JvbmcgcHJvdmlkZXIgZm9yIHRhcmdldC5cIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1ldGFkYXRhTWFwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gMy4xLjIuMSBPcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKVxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnloYXNvd25tZXRhZGF0YVxuICAgICAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlIYXNPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCkge1xuICAgICAgICAgICAgICAgIHZhciBtZXRhZGF0YU1hcCA9IEdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgLypDcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKG1ldGFkYXRhTWFwKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybiBUb0Jvb2xlYW4obWV0YWRhdGFNYXAuaGFzKE1ldGFkYXRhS2V5KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyAzLjEuNC4xIE9yZGluYXJ5R2V0T3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApXG4gICAgICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeWdldG93bm1ldGFkYXRhXG4gICAgICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUdldE93bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1ldGFkYXRhTWFwID0gR2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCAvKkNyZWF0ZSovIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQobWV0YWRhdGFNYXApKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHJldHVybiBtZXRhZGF0YU1hcC5nZXQoTWV0YWRhdGFLZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gMy4xLjUuMSBPcmRpbmFyeURlZmluZU93bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBNZXRhZGF0YVZhbHVlLCBPLCBQKVxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnlkZWZpbmVvd25tZXRhZGF0YVxuICAgICAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTWV0YWRhdGFWYWx1ZSwgTywgUCkge1xuICAgICAgICAgICAgICAgIHZhciBtZXRhZGF0YU1hcCA9IEdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgLypDcmVhdGUqLyB0cnVlKTtcbiAgICAgICAgICAgICAgICBtZXRhZGF0YU1hcC5zZXQoTWV0YWRhdGFLZXksIE1ldGFkYXRhVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gMy4xLjcuMSBPcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhPLCBQKVxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnlvd25tZXRhZGF0YWtleXNcbiAgICAgICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5T3duTWV0YWRhdGFLZXlzKE8sIFApIHtcbiAgICAgICAgICAgICAgICB2YXIga2V5cyA9IFtdO1xuICAgICAgICAgICAgICAgIHZhciBtZXRhZGF0YU1hcCA9IEdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgLypDcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKG1ldGFkYXRhTWFwKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgICAgICAgICAgICAgdmFyIGtleXNPYmogPSBtZXRhZGF0YU1hcC5rZXlzKCk7XG4gICAgICAgICAgICAgICAgdmFyIGl0ZXJhdG9yID0gR2V0SXRlcmF0b3Ioa2V5c09iaik7XG4gICAgICAgICAgICAgICAgdmFyIGsgPSAwO1xuICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXh0ID0gSXRlcmF0b3JTdGVwKGl0ZXJhdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFuZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlzLmxlbmd0aCA9IGs7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5cztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dFZhbHVlID0gSXRlcmF0b3JWYWx1ZShuZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleXNba10gPSBuZXh0VmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3JDbG9zZShpdGVyYXRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGsrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeURlbGV0ZU1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1ldGFkYXRhTWFwID0gR2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCAvKkNyZWF0ZSovIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQobWV0YWRhdGFNYXApKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKCFtZXRhZGF0YU1hcC5kZWxldGUoTWV0YWRhdGFLZXkpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKG1ldGFkYXRhTWFwLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhcmdldE1ldGFkYXRhID0gbWV0YWRhdGEuZ2V0KE8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHRhcmdldE1ldGFkYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TWV0YWRhdGEuZGVsZXRlKFApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldE1ldGFkYXRhLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5kZWxldGUodGFyZ2V0TWV0YWRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIENyZWF0ZUZhbGxiYWNrUHJvdmlkZXIocmVmbGVjdCkge1xuICAgICAgICAgICAgdmFyIGRlZmluZU1ldGFkYXRhID0gcmVmbGVjdC5kZWZpbmVNZXRhZGF0YSwgaGFzT3duTWV0YWRhdGEgPSByZWZsZWN0Lmhhc093bk1ldGFkYXRhLCBnZXRPd25NZXRhZGF0YSA9IHJlZmxlY3QuZ2V0T3duTWV0YWRhdGEsIGdldE93bk1ldGFkYXRhS2V5cyA9IHJlZmxlY3QuZ2V0T3duTWV0YWRhdGFLZXlzLCBkZWxldGVNZXRhZGF0YSA9IHJlZmxlY3QuZGVsZXRlTWV0YWRhdGE7XG4gICAgICAgICAgICB2YXIgbWV0YWRhdGFPd25lciA9IG5ldyBfV2Vha01hcCgpO1xuICAgICAgICAgICAgdmFyIHByb3ZpZGVyID0ge1xuICAgICAgICAgICAgICAgIGlzUHJvdmlkZXJGb3I6IGZ1bmN0aW9uIChPLCBQKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtZXRhZGF0YVByb3BlcnR5U2V0ID0gbWV0YWRhdGFPd25lci5nZXQoTyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQobWV0YWRhdGFQcm9wZXJ0eVNldCkgJiYgbWV0YWRhdGFQcm9wZXJ0eVNldC5oYXMoUCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXRPd25NZXRhZGF0YUtleXMoTywgUCkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQobWV0YWRhdGFQcm9wZXJ0eVNldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YVByb3BlcnR5U2V0ID0gbmV3IF9TZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YU93bmVyLnNldChPLCBtZXRhZGF0YVByb3BlcnR5U2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhUHJvcGVydHlTZXQuYWRkKFApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgT3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YTogZGVmaW5lTWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgT3JkaW5hcnlIYXNPd25NZXRhZGF0YTogaGFzT3duTWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgT3JkaW5hcnlHZXRPd25NZXRhZGF0YTogZ2V0T3duTWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgT3JkaW5hcnlPd25NZXRhZGF0YUtleXM6IGdldE93bk1ldGFkYXRhS2V5cyxcbiAgICAgICAgICAgICAgICBPcmRpbmFyeURlbGV0ZU1ldGFkYXRhOiBkZWxldGVNZXRhZGF0YSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gcHJvdmlkZXI7XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgdGhlIG1ldGFkYXRhIHByb3ZpZGVyIGZvciBhbiBvYmplY3QuIElmIHRoZSBvYmplY3QgaGFzIG5vIG1ldGFkYXRhIHByb3ZpZGVyIGFuZCB0aGlzIGlzIGZvciBhIGNyZWF0ZSBvcGVyYXRpb24sXG4gICAgICAgICAqIHRoZW4gdGhpcyBtb2R1bGUncyBtZXRhZGF0YSBwcm92aWRlciBpcyBhc3NpZ25lZCB0byB0aGUgb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gR2V0TWV0YWRhdGFQcm92aWRlcihPLCBQLCBDcmVhdGUpIHtcbiAgICAgICAgICAgIHZhciByZWdpc3RlcmVkUHJvdmlkZXIgPSBtZXRhZGF0YVJlZ2lzdHJ5LmdldFByb3ZpZGVyKE8sIFApO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChyZWdpc3RlcmVkUHJvdmlkZXIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdGVyZWRQcm92aWRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChDcmVhdGUpIHtcbiAgICAgICAgICAgICAgICBpZiAobWV0YWRhdGFSZWdpc3RyeS5zZXRQcm92aWRlcihPLCBQLCBtZXRhZGF0YVByb3ZpZGVyKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWV0YWRhdGFQcm92aWRlcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSWxsZWdhbCBzdGF0ZS5cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vIG5haXZlIE1hcCBzaGltXG4gICAgICAgIGZ1bmN0aW9uIENyZWF0ZU1hcFBvbHlmaWxsKCkge1xuICAgICAgICAgICAgdmFyIGNhY2hlU2VudGluZWwgPSB7fTtcbiAgICAgICAgICAgIHZhciBhcnJheVNlbnRpbmVsID0gW107XG4gICAgICAgICAgICB2YXIgTWFwSXRlcmF0b3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gTWFwSXRlcmF0b3Ioa2V5cywgdmFsdWVzLCBzZWxlY3Rvcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleXMgPSBrZXlzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMgPSB2YWx1ZXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdG9yID0gc2VsZWN0b3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIE1hcEl0ZXJhdG9yLnByb3RvdHlwZVtcIkBAaXRlcmF0b3JcIl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuICAgICAgICAgICAgICAgIE1hcEl0ZXJhdG9yLnByb3RvdHlwZVtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuICAgICAgICAgICAgICAgIE1hcEl0ZXJhdG9yLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9pbmRleDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCB0aGlzLl9rZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX3NlbGVjdG9yKHRoaXMuX2tleXNbaW5kZXhdLCB0aGlzLl92YWx1ZXNbaW5kZXhdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCArIDEgPj0gdGhpcy5fa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleXMgPSBhcnJheVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcyA9IGFycmF5U2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHJlc3VsdCwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBNYXBJdGVyYXRvci5wcm90b3R5cGUudGhyb3cgPSBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2luZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzID0gYXJyYXlTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcyA9IGFycmF5U2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBNYXBJdGVyYXRvci5wcm90b3R5cGUucmV0dXJuID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cyA9IGFycmF5U2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMgPSBhcnJheVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgZG9uZTogdHJ1ZSB9O1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hcEl0ZXJhdG9yO1xuICAgICAgICAgICAgfSgpKTtcbiAgICAgICAgICAgIHZhciBNYXAgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gTWFwKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUtleSA9IGNhY2hlU2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlSW5kZXggPSAtMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE1hcC5wcm90b3R5cGUsIFwic2l6ZVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fa2V5cy5sZW5ndGg7IH0sXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gdGhpcy5fZmluZChrZXksIC8qaW5zZXJ0Ki8gZmFsc2UpID49IDA7IH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmQoa2V5LCAvKmluc2VydCovIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4ID49IDAgPyB0aGlzLl92YWx1ZXNbaW5kZXhdIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9maW5kKGtleSwgLyppbnNlcnQqLyB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzW2luZGV4XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGUuZGVsZXRlID0gZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9maW5kKGtleSwgLyppbnNlcnQqLyBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2l6ZSA9IHRoaXMuX2tleXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IGluZGV4ICsgMTsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleXNbaSAtIDFdID0gdGhpcy5fa2V5c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXNbaSAtIDFdID0gdGhpcy5fdmFsdWVzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cy5sZW5ndGgtLTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcy5sZW5ndGgtLTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTYW1lVmFsdWVaZXJvKGtleSwgdGhpcy5fY2FjaGVLZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVLZXkgPSBjYWNoZVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlSW5kZXggPSAtMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleXMubGVuZ3RoID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlS2V5ID0gY2FjaGVTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVJbmRleCA9IC0yO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5rZXlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3IE1hcEl0ZXJhdG9yKHRoaXMuX2tleXMsIHRoaXMuX3ZhbHVlcywgZ2V0S2V5KTsgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLnZhbHVlcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ldyBNYXBJdGVyYXRvcih0aGlzLl9rZXlzLCB0aGlzLl92YWx1ZXMsIGdldFZhbHVlKTsgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLmVudHJpZXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgTWFwSXRlcmF0b3IodGhpcy5fa2V5cywgdGhpcy5fdmFsdWVzLCBnZXRFbnRyeSk7IH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZVtcIkBAaXRlcmF0b3JcIl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmVudHJpZXMoKTsgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuZW50cmllcygpOyB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGUuX2ZpbmQgPSBmdW5jdGlvbiAoa2V5LCBpbnNlcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFTYW1lVmFsdWVaZXJvKHRoaXMuX2NhY2hlS2V5LCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUluZGV4ID0gLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2tleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU2FtZVZhbHVlWmVybyh0aGlzLl9rZXlzW2ldLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlSW5kZXggPSBpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NhY2hlSW5kZXggPCAwICYmIGluc2VydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVJbmRleCA9IHRoaXMuX2tleXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jYWNoZUluZGV4O1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hcDtcbiAgICAgICAgICAgIH0oKSk7XG4gICAgICAgICAgICByZXR1cm4gTWFwO1xuICAgICAgICAgICAgZnVuY3Rpb24gZ2V0S2V5KGtleSwgXykge1xuICAgICAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBnZXRWYWx1ZShfLCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIGdldEVudHJ5KGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW2tleSwgdmFsdWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIG5haXZlIFNldCBzaGltXG4gICAgICAgIGZ1bmN0aW9uIENyZWF0ZVNldFBvbHlmaWxsKCkge1xuICAgICAgICAgICAgdmFyIFNldCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBTZXQoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21hcCA9IG5ldyBfTWFwKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTZXQucHJvdG90eXBlLCBcInNpemVcIiwge1xuICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX21hcC5zaXplOyB9LFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdGhpcy5fbWFwLmhhcyh2YWx1ZSk7IH07XG4gICAgICAgICAgICAgICAgU2V0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIHRoaXMuX21hcC5zZXQodmFsdWUsIHZhbHVlKSwgdGhpczsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdGhpcy5fbWFwLmRlbGV0ZSh2YWx1ZSk7IH07XG4gICAgICAgICAgICAgICAgU2V0LnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHsgdGhpcy5fbWFwLmNsZWFyKCk7IH07XG4gICAgICAgICAgICAgICAgU2V0LnByb3RvdHlwZS5rZXlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fbWFwLmtleXMoKTsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlLnZhbHVlcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX21hcC5rZXlzKCk7IH07XG4gICAgICAgICAgICAgICAgU2V0LnByb3RvdHlwZS5lbnRyaWVzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fbWFwLmVudHJpZXMoKTsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlW1wiQEBpdGVyYXRvclwiXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMua2V5cygpOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGVbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5rZXlzKCk7IH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFNldDtcbiAgICAgICAgICAgIH0oKSk7XG4gICAgICAgICAgICByZXR1cm4gU2V0O1xuICAgICAgICB9XG4gICAgICAgIC8vIG5haXZlIFdlYWtNYXAgc2hpbVxuICAgICAgICBmdW5jdGlvbiBDcmVhdGVXZWFrTWFwUG9seWZpbGwoKSB7XG4gICAgICAgICAgICB2YXIgVVVJRF9TSVpFID0gMTY7XG4gICAgICAgICAgICB2YXIga2V5cyA9IEhhc2hNYXAuY3JlYXRlKCk7XG4gICAgICAgICAgICB2YXIgcm9vdEtleSA9IENyZWF0ZVVuaXF1ZUtleSgpO1xuICAgICAgICAgICAgcmV0dXJuIC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBXZWFrTWFwKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXkgPSBDcmVhdGVVbmlxdWVLZXkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgV2Vha01hcC5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFibGUgPSBHZXRPckNyZWF0ZVdlYWtNYXBUYWJsZSh0YXJnZXQsIC8qY3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFibGUgIT09IHVuZGVmaW5lZCA/IEhhc2hNYXAuaGFzKHRhYmxlLCB0aGlzLl9rZXkpIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBXZWFrTWFwLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YWJsZSA9IEdldE9yQ3JlYXRlV2Vha01hcFRhYmxlKHRhcmdldCwgLypjcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZSAhPT0gdW5kZWZpbmVkID8gSGFzaE1hcC5nZXQodGFibGUsIHRoaXMuX2tleSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBXZWFrTWFwLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAodGFyZ2V0LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFibGUgPSBHZXRPckNyZWF0ZVdlYWtNYXBUYWJsZSh0YXJnZXQsIC8qY3JlYXRlKi8gdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlW3RoaXMuX2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBXZWFrTWFwLnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YWJsZSA9IEdldE9yQ3JlYXRlV2Vha01hcFRhYmxlKHRhcmdldCwgLypjcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZSAhPT0gdW5kZWZpbmVkID8gZGVsZXRlIHRhYmxlW3RoaXMuX2tleV0gOiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIFdlYWtNYXAucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBub3QgYSByZWFsIGNsZWFyLCBqdXN0IG1ha2VzIHRoZSBwcmV2aW91cyBkYXRhIHVucmVhY2hhYmxlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleSA9IENyZWF0ZVVuaXF1ZUtleSgpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFdlYWtNYXA7XG4gICAgICAgICAgICB9KCkpO1xuICAgICAgICAgICAgZnVuY3Rpb24gQ3JlYXRlVW5pcXVlS2V5KCkge1xuICAgICAgICAgICAgICAgIHZhciBrZXk7XG4gICAgICAgICAgICAgICAgZG9cbiAgICAgICAgICAgICAgICAgICAga2V5ID0gXCJAQFdlYWtNYXBAQFwiICsgQ3JlYXRlVVVJRCgpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChIYXNoTWFwLmhhcyhrZXlzLCBrZXkpKTtcbiAgICAgICAgICAgICAgICBrZXlzW2tleV0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBHZXRPckNyZWF0ZVdlYWtNYXBUYWJsZSh0YXJnZXQsIGNyZWF0ZSkge1xuICAgICAgICAgICAgICAgIGlmICghaGFzT3duLmNhbGwodGFyZ2V0LCByb290S2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNyZWF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHJvb3RLZXksIHsgdmFsdWU6IEhhc2hNYXAuY3JlYXRlKCkgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbcm9vdEtleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBGaWxsUmFuZG9tQnl0ZXMoYnVmZmVyLCBzaXplKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyArK2kpXG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltpXSA9IE1hdGgucmFuZG9tKCkgKiAweGZmIHwgMDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gR2VuUmFuZG9tQnl0ZXMoc2l6ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgVWludDhBcnJheSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBhcnJheSA9IG5ldyBVaW50OEFycmF5KHNpemUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNyeXB0byAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnJheSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIG1zQ3J5cHRvICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyYXkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgRmlsbFJhbmRvbUJ5dGVzKGFycmF5LCBzaXplKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxsUmFuZG9tQnl0ZXMobmV3IEFycmF5KHNpemUpLCBzaXplKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIENyZWF0ZVVVSUQoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBHZW5SYW5kb21CeXRlcyhVVUlEX1NJWkUpO1xuICAgICAgICAgICAgICAgIC8vIG1hcmsgYXMgcmFuZG9tIC0gUkZDIDQxMjIgwqcgNC40XG4gICAgICAgICAgICAgICAgZGF0YVs2XSA9IGRhdGFbNl0gJiAweDRmIHwgMHg0MDtcbiAgICAgICAgICAgICAgICBkYXRhWzhdID0gZGF0YVs4XSAmIDB4YmYgfCAweDgwO1xuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIG9mZnNldCA9IDA7IG9mZnNldCA8IFVVSURfU0laRTsgKytvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJ5dGUgPSBkYXRhW29mZnNldF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPT09IDQgfHwgb2Zmc2V0ID09PSA2IHx8IG9mZnNldCA9PT0gOClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBcIi1cIjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ5dGUgPCAxNilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBcIjBcIjtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGJ5dGUudG9TdHJpbmcoMTYpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gdXNlcyBhIGhldXJpc3RpYyB1c2VkIGJ5IHY4IGFuZCBjaGFrcmEgdG8gZm9yY2UgYW4gb2JqZWN0IGludG8gZGljdGlvbmFyeSBtb2RlLlxuICAgICAgICBmdW5jdGlvbiBNYWtlRGljdGlvbmFyeShvYmopIHtcbiAgICAgICAgICAgIG9iai5fXyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGRlbGV0ZSBvYmouX187XG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9XG4gICAgfSk7XG59KShSZWZsZWN0IHx8IChSZWZsZWN0ID0ge30pKTtcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgbD1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxuPVN5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIikscD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIikscT1TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIikscj1TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIiksdD1TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIiksdT1TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKSx2PVN5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSx3PVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKSx4PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpLHk9U3ltYm9sLmZvcihcInJlYWN0LmxhenlcIiksej1TeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gQShhKXtpZihudWxsPT09YXx8XCJvYmplY3RcIiE9PXR5cGVvZiBhKXJldHVybiBudWxsO2E9eiYmYVt6XXx8YVtcIkBAaXRlcmF0b3JcIl07cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGE/YTpudWxsfVxudmFyIEI9e2lzTW91bnRlZDpmdW5jdGlvbigpe3JldHVybiExfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbigpe319LEM9T2JqZWN0LmFzc2lnbixEPXt9O2Z1bmN0aW9uIEUoYSxiLGUpe3RoaXMucHJvcHM9YTt0aGlzLmNvbnRleHQ9Yjt0aGlzLnJlZnM9RDt0aGlzLnVwZGF0ZXI9ZXx8Qn1FLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9O1xuRS5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oYSxiKXtpZihcIm9iamVjdFwiIT09dHlwZW9mIGEmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBhJiZudWxsIT1hKXRocm93IEVycm9yKFwic2V0U3RhdGUoLi4uKTogdGFrZXMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcyB0byB1cGRhdGUgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMuXCIpO3RoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcyxhLGIsXCJzZXRTdGF0ZVwiKX07RS5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24oYSl7dGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzLGEsXCJmb3JjZVVwZGF0ZVwiKX07ZnVuY3Rpb24gRigpe31GLnByb3RvdHlwZT1FLnByb3RvdHlwZTtmdW5jdGlvbiBHKGEsYixlKXt0aGlzLnByb3BzPWE7dGhpcy5jb250ZXh0PWI7dGhpcy5yZWZzPUQ7dGhpcy51cGRhdGVyPWV8fEJ9dmFyIEg9Ry5wcm90b3R5cGU9bmV3IEY7XG5ILmNvbnN0cnVjdG9yPUc7QyhILEUucHJvdG90eXBlKTtILmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwO3ZhciBJPUFycmF5LmlzQXJyYXksSj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEs9e2N1cnJlbnQ6bnVsbH0sTD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gTShhLGIsZSl7dmFyIGQsYz17fSxrPW51bGwsaD1udWxsO2lmKG51bGwhPWIpZm9yKGQgaW4gdm9pZCAwIT09Yi5yZWYmJihoPWIucmVmKSx2b2lkIDAhPT1iLmtleSYmKGs9XCJcIitiLmtleSksYilKLmNhbGwoYixkKSYmIUwuaGFzT3duUHJvcGVydHkoZCkmJihjW2RdPWJbZF0pO3ZhciBnPWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09ZyljLmNoaWxkcmVuPWU7ZWxzZSBpZigxPGcpe2Zvcih2YXIgZj1BcnJheShnKSxtPTA7bTxnO20rKylmW21dPWFyZ3VtZW50c1ttKzJdO2MuY2hpbGRyZW49Zn1pZihhJiZhLmRlZmF1bHRQcm9wcylmb3IoZCBpbiBnPWEuZGVmYXVsdFByb3BzLGcpdm9pZCAwPT09Y1tkXSYmKGNbZF09Z1tkXSk7cmV0dXJueyQkdHlwZW9mOmwsdHlwZTphLGtleTprLHJlZjpoLHByb3BzOmMsX293bmVyOksuY3VycmVudH19XG5mdW5jdGlvbiBOKGEsYil7cmV0dXJueyQkdHlwZW9mOmwsdHlwZTphLnR5cGUsa2V5OmIscmVmOmEucmVmLHByb3BzOmEucHJvcHMsX293bmVyOmEuX293bmVyfX1mdW5jdGlvbiBPKGEpe3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJmEuJCR0eXBlb2Y9PT1sfWZ1bmN0aW9uIGVzY2FwZShhKXt2YXIgYj17XCI9XCI6XCI9MFwiLFwiOlwiOlwiPTJcIn07cmV0dXJuXCIkXCIrYS5yZXBsYWNlKC9bPTpdL2csZnVuY3Rpb24oYSl7cmV0dXJuIGJbYV19KX12YXIgUD0vXFwvKy9nO2Z1bmN0aW9uIFEoYSxiKXtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiZudWxsIT1hLmtleT9lc2NhcGUoXCJcIithLmtleSk6Yi50b1N0cmluZygzNil9XG5mdW5jdGlvbiBSKGEsYixlLGQsYyl7dmFyIGs9dHlwZW9mIGE7aWYoXCJ1bmRlZmluZWRcIj09PWt8fFwiYm9vbGVhblwiPT09aylhPW51bGw7dmFyIGg9ITE7aWYobnVsbD09PWEpaD0hMDtlbHNlIHN3aXRjaChrKXtjYXNlIFwic3RyaW5nXCI6Y2FzZSBcIm51bWJlclwiOmg9ITA7YnJlYWs7Y2FzZSBcIm9iamVjdFwiOnN3aXRjaChhLiQkdHlwZW9mKXtjYXNlIGw6Y2FzZSBuOmg9ITB9fWlmKGgpcmV0dXJuIGg9YSxjPWMoaCksYT1cIlwiPT09ZD9cIi5cIitRKGgsMCk6ZCxJKGMpPyhlPVwiXCIsbnVsbCE9YSYmKGU9YS5yZXBsYWNlKFAsXCIkJi9cIikrXCIvXCIpLFIoYyxiLGUsXCJcIixmdW5jdGlvbihhKXtyZXR1cm4gYX0pKTpudWxsIT1jJiYoTyhjKSYmKGM9TihjLGUrKCFjLmtleXx8aCYmaC5rZXk9PT1jLmtleT9cIlwiOihcIlwiK2Mua2V5KS5yZXBsYWNlKFAsXCIkJi9cIikrXCIvXCIpK2EpKSxiLnB1c2goYykpLDE7aD0wO2Q9XCJcIj09PWQ/XCIuXCI6ZCtcIjpcIjtpZihJKGEpKWZvcih2YXIgZz0wO2c8YS5sZW5ndGg7ZysrKXtrPVxuYVtnXTt2YXIgZj1kK1EoayxnKTtoKz1SKGssYixlLGYsYyl9ZWxzZSBpZihmPUEoYSksXCJmdW5jdGlvblwiPT09dHlwZW9mIGYpZm9yKGE9Zi5jYWxsKGEpLGc9MDshKGs9YS5uZXh0KCkpLmRvbmU7KWs9ay52YWx1ZSxmPWQrUShrLGcrKyksaCs9UihrLGIsZSxmLGMpO2Vsc2UgaWYoXCJvYmplY3RcIj09PWspdGhyb3cgYj1TdHJpbmcoYSksRXJyb3IoXCJPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6IFwiKyhcIltvYmplY3QgT2JqZWN0XVwiPT09Yj9cIm9iamVjdCB3aXRoIGtleXMge1wiK09iamVjdC5rZXlzKGEpLmpvaW4oXCIsIFwiKStcIn1cIjpiKStcIikuIElmIHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuLCB1c2UgYW4gYXJyYXkgaW5zdGVhZC5cIik7cmV0dXJuIGh9XG5mdW5jdGlvbiBTKGEsYixlKXtpZihudWxsPT1hKXJldHVybiBhO3ZhciBkPVtdLGM9MDtSKGEsZCxcIlwiLFwiXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGIuY2FsbChlLGEsYysrKX0pO3JldHVybiBkfWZ1bmN0aW9uIFQoYSl7aWYoLTE9PT1hLl9zdGF0dXMpe3ZhciBiPWEuX3Jlc3VsdDtiPWIoKTtiLnRoZW4oZnVuY3Rpb24oYil7aWYoMD09PWEuX3N0YXR1c3x8LTE9PT1hLl9zdGF0dXMpYS5fc3RhdHVzPTEsYS5fcmVzdWx0PWJ9LGZ1bmN0aW9uKGIpe2lmKDA9PT1hLl9zdGF0dXN8fC0xPT09YS5fc3RhdHVzKWEuX3N0YXR1cz0yLGEuX3Jlc3VsdD1ifSk7LTE9PT1hLl9zdGF0dXMmJihhLl9zdGF0dXM9MCxhLl9yZXN1bHQ9Yil9aWYoMT09PWEuX3N0YXR1cylyZXR1cm4gYS5fcmVzdWx0LmRlZmF1bHQ7dGhyb3cgYS5fcmVzdWx0O31cbnZhciBVPXtjdXJyZW50Om51bGx9LFY9e3RyYW5zaXRpb246bnVsbH0sVz17UmVhY3RDdXJyZW50RGlzcGF0Y2hlcjpVLFJlYWN0Q3VycmVudEJhdGNoQ29uZmlnOlYsUmVhY3RDdXJyZW50T3duZXI6S307ZnVuY3Rpb24gWCgpe3Rocm93IEVycm9yKFwiYWN0KC4uLikgaXMgbm90IHN1cHBvcnRlZCBpbiBwcm9kdWN0aW9uIGJ1aWxkcyBvZiBSZWFjdC5cIik7fVxuZXhwb3J0cy5DaGlsZHJlbj17bWFwOlMsZm9yRWFjaDpmdW5jdGlvbihhLGIsZSl7UyhhLGZ1bmN0aW9uKCl7Yi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGUpfSxjb3VudDpmdW5jdGlvbihhKXt2YXIgYj0wO1MoYSxmdW5jdGlvbigpe2IrK30pO3JldHVybiBifSx0b0FycmF5OmZ1bmN0aW9uKGEpe3JldHVybiBTKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGF9KXx8W119LG9ubHk6ZnVuY3Rpb24oYSl7aWYoIU8oYSkpdGhyb3cgRXJyb3IoXCJSZWFjdC5DaGlsZHJlbi5vbmx5IGV4cGVjdGVkIHRvIHJlY2VpdmUgYSBzaW5nbGUgUmVhY3QgZWxlbWVudCBjaGlsZC5cIik7cmV0dXJuIGF9fTtleHBvcnRzLkNvbXBvbmVudD1FO2V4cG9ydHMuRnJhZ21lbnQ9cDtleHBvcnRzLlByb2ZpbGVyPXI7ZXhwb3J0cy5QdXJlQ29tcG9uZW50PUc7ZXhwb3J0cy5TdHJpY3RNb2RlPXE7ZXhwb3J0cy5TdXNwZW5zZT13O1xuZXhwb3J0cy5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRD1XO2V4cG9ydHMuYWN0PVg7XG5leHBvcnRzLmNsb25lRWxlbWVudD1mdW5jdGlvbihhLGIsZSl7aWYobnVsbD09PWF8fHZvaWQgMD09PWEpdGhyb3cgRXJyb3IoXCJSZWFjdC5jbG9uZUVsZW1lbnQoLi4uKTogVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBSZWFjdCBlbGVtZW50LCBidXQgeW91IHBhc3NlZCBcIithK1wiLlwiKTt2YXIgZD1DKHt9LGEucHJvcHMpLGM9YS5rZXksaz1hLnJlZixoPWEuX293bmVyO2lmKG51bGwhPWIpe3ZvaWQgMCE9PWIucmVmJiYoaz1iLnJlZixoPUsuY3VycmVudCk7dm9pZCAwIT09Yi5rZXkmJihjPVwiXCIrYi5rZXkpO2lmKGEudHlwZSYmYS50eXBlLmRlZmF1bHRQcm9wcyl2YXIgZz1hLnR5cGUuZGVmYXVsdFByb3BzO2ZvcihmIGluIGIpSi5jYWxsKGIsZikmJiFMLmhhc093blByb3BlcnR5KGYpJiYoZFtmXT12b2lkIDA9PT1iW2ZdJiZ2b2lkIDAhPT1nP2dbZl06YltmXSl9dmFyIGY9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1mKWQuY2hpbGRyZW49ZTtlbHNlIGlmKDE8Zil7Zz1BcnJheShmKTtcbmZvcih2YXIgbT0wO208ZjttKyspZ1ttXT1hcmd1bWVudHNbbSsyXTtkLmNoaWxkcmVuPWd9cmV0dXJueyQkdHlwZW9mOmwsdHlwZTphLnR5cGUsa2V5OmMscmVmOmsscHJvcHM6ZCxfb3duZXI6aH19O2V4cG9ydHMuY3JlYXRlQ29udGV4dD1mdW5jdGlvbihhKXthPXskJHR5cGVvZjp1LF9jdXJyZW50VmFsdWU6YSxfY3VycmVudFZhbHVlMjphLF90aHJlYWRDb3VudDowLFByb3ZpZGVyOm51bGwsQ29uc3VtZXI6bnVsbCxfZGVmYXVsdFZhbHVlOm51bGwsX2dsb2JhbE5hbWU6bnVsbH07YS5Qcm92aWRlcj17JCR0eXBlb2Y6dCxfY29udGV4dDphfTtyZXR1cm4gYS5Db25zdW1lcj1hfTtleHBvcnRzLmNyZWF0ZUVsZW1lbnQ9TTtleHBvcnRzLmNyZWF0ZUZhY3Rvcnk9ZnVuY3Rpb24oYSl7dmFyIGI9TS5iaW5kKG51bGwsYSk7Yi50eXBlPWE7cmV0dXJuIGJ9O2V4cG9ydHMuY3JlYXRlUmVmPWZ1bmN0aW9uKCl7cmV0dXJue2N1cnJlbnQ6bnVsbH19O1xuZXhwb3J0cy5mb3J3YXJkUmVmPWZ1bmN0aW9uKGEpe3JldHVybnskJHR5cGVvZjp2LHJlbmRlcjphfX07ZXhwb3J0cy5pc1ZhbGlkRWxlbWVudD1PO2V4cG9ydHMubGF6eT1mdW5jdGlvbihhKXtyZXR1cm57JCR0eXBlb2Y6eSxfcGF5bG9hZDp7X3N0YXR1czotMSxfcmVzdWx0OmF9LF9pbml0OlR9fTtleHBvcnRzLm1lbW89ZnVuY3Rpb24oYSxiKXtyZXR1cm57JCR0eXBlb2Y6eCx0eXBlOmEsY29tcGFyZTp2b2lkIDA9PT1iP251bGw6Yn19O2V4cG9ydHMuc3RhcnRUcmFuc2l0aW9uPWZ1bmN0aW9uKGEpe3ZhciBiPVYudHJhbnNpdGlvbjtWLnRyYW5zaXRpb249e307dHJ5e2EoKX1maW5hbGx5e1YudHJhbnNpdGlvbj1ifX07ZXhwb3J0cy51bnN0YWJsZV9hY3Q9WDtleHBvcnRzLnVzZUNhbGxiYWNrPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFUuY3VycmVudC51c2VDYWxsYmFjayhhLGIpfTtleHBvcnRzLnVzZUNvbnRleHQ9ZnVuY3Rpb24oYSl7cmV0dXJuIFUuY3VycmVudC51c2VDb250ZXh0KGEpfTtcbmV4cG9ydHMudXNlRGVidWdWYWx1ZT1mdW5jdGlvbigpe307ZXhwb3J0cy51c2VEZWZlcnJlZFZhbHVlPWZ1bmN0aW9uKGEpe3JldHVybiBVLmN1cnJlbnQudXNlRGVmZXJyZWRWYWx1ZShhKX07ZXhwb3J0cy51c2VFZmZlY3Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZUVmZmVjdChhLGIpfTtleHBvcnRzLnVzZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIFUuY3VycmVudC51c2VJZCgpfTtleHBvcnRzLnVzZUltcGVyYXRpdmVIYW5kbGU9ZnVuY3Rpb24oYSxiLGUpe3JldHVybiBVLmN1cnJlbnQudXNlSW1wZXJhdGl2ZUhhbmRsZShhLGIsZSl9O2V4cG9ydHMudXNlSW5zZXJ0aW9uRWZmZWN0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIFUuY3VycmVudC51c2VJbnNlcnRpb25FZmZlY3QoYSxiKX07ZXhwb3J0cy51c2VMYXlvdXRFZmZlY3Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZUxheW91dEVmZmVjdChhLGIpfTtcbmV4cG9ydHMudXNlTWVtbz1mdW5jdGlvbihhLGIpe3JldHVybiBVLmN1cnJlbnQudXNlTWVtbyhhLGIpfTtleHBvcnRzLnVzZVJlZHVjZXI9ZnVuY3Rpb24oYSxiLGUpe3JldHVybiBVLmN1cnJlbnQudXNlUmVkdWNlcihhLGIsZSl9O2V4cG9ydHMudXNlUmVmPWZ1bmN0aW9uKGEpe3JldHVybiBVLmN1cnJlbnQudXNlUmVmKGEpfTtleHBvcnRzLnVzZVN0YXRlPWZ1bmN0aW9uKGEpe3JldHVybiBVLmN1cnJlbnQudXNlU3RhdGUoYSl9O2V4cG9ydHMudXNlU3luY0V4dGVybmFsU3RvcmU9ZnVuY3Rpb24oYSxiLGUpe3JldHVybiBVLmN1cnJlbnQudXNlU3luY0V4dGVybmFsU3RvcmUoYSxiLGUpfTtleHBvcnRzLnVzZVRyYW5zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gVS5jdXJyZW50LnVzZVRyYW5zaXRpb24oKX07ZXhwb3J0cy52ZXJzaW9uPVwiMTguMy4xXCI7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYmluZChmbiwgdGhpc0FyZykge1xuICByZXR1cm4gZnVuY3Rpb24gd3JhcCgpIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhpc0FyZywgYXJndW1lbnRzKTtcbiAgfTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IGJpbmQgZnJvbSAnLi9oZWxwZXJzL2JpbmQuanMnO1xuXG4vLyB1dGlscyBpcyBhIGxpYnJhcnkgb2YgZ2VuZXJpYyBoZWxwZXIgZnVuY3Rpb25zIG5vbi1zcGVjaWZpYyB0byBheGlvc1xuXG5jb25zdCB7dG9TdHJpbmd9ID0gT2JqZWN0LnByb3RvdHlwZTtcbmNvbnN0IHtnZXRQcm90b3R5cGVPZn0gPSBPYmplY3Q7XG5cbmNvbnN0IGtpbmRPZiA9IChjYWNoZSA9PiB0aGluZyA9PiB7XG4gICAgY29uc3Qgc3RyID0gdG9TdHJpbmcuY2FsbCh0aGluZyk7XG4gICAgcmV0dXJuIGNhY2hlW3N0cl0gfHwgKGNhY2hlW3N0cl0gPSBzdHIuc2xpY2UoOCwgLTEpLnRvTG93ZXJDYXNlKCkpO1xufSkoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG5cbmNvbnN0IGtpbmRPZlRlc3QgPSAodHlwZSkgPT4ge1xuICB0eXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gKHRoaW5nKSA9PiBraW5kT2YodGhpbmcpID09PSB0eXBlXG59XG5cbmNvbnN0IHR5cGVPZlRlc3QgPSB0eXBlID0+IHRoaW5nID0+IHR5cGVvZiB0aGluZyA9PT0gdHlwZTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhbiBBcnJheVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBBcnJheSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IHtpc0FycmF5fSA9IEFycmF5O1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIHVuZGVmaW5lZFxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzVW5kZWZpbmVkID0gdHlwZU9mVGVzdCgndW5kZWZpbmVkJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCdWZmZXJcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNCdWZmZXIodmFsKSB7XG4gIHJldHVybiB2YWwgIT09IG51bGwgJiYgIWlzVW5kZWZpbmVkKHZhbCkgJiYgdmFsLmNvbnN0cnVjdG9yICE9PSBudWxsICYmICFpc1VuZGVmaW5lZCh2YWwuY29uc3RydWN0b3IpXG4gICAgJiYgaXNGdW5jdGlvbih2YWwuY29uc3RydWN0b3IuaXNCdWZmZXIpICYmIHZhbC5jb25zdHJ1Y3Rvci5pc0J1ZmZlcih2YWwpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIEFycmF5QnVmZmVyXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBBcnJheUJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzQXJyYXlCdWZmZXIgPSBraW5kT2ZUZXN0KCdBcnJheUJ1ZmZlcicpO1xuXG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSB2aWV3IG9uIGFuIEFycmF5QnVmZmVyXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIHZpZXcgb24gYW4gQXJyYXlCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyVmlldyh2YWwpIHtcbiAgbGV0IHJlc3VsdDtcbiAgaWYgKCh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnKSAmJiAoQXJyYXlCdWZmZXIuaXNWaWV3KSkge1xuICAgIHJlc3VsdCA9IEFycmF5QnVmZmVyLmlzVmlldyh2YWwpO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdCA9ICh2YWwpICYmICh2YWwuYnVmZmVyKSAmJiAoaXNBcnJheUJ1ZmZlcih2YWwuYnVmZmVyKSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFN0cmluZ1xuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBTdHJpbmcsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc1N0cmluZyA9IHR5cGVPZlRlc3QoJ3N0cmluZycpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBGdW5jdGlvbiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzRnVuY3Rpb24gPSB0eXBlT2ZUZXN0KCdmdW5jdGlvbicpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgTnVtYmVyXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIE51bWJlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzTnVtYmVyID0gdHlwZU9mVGVzdCgnbnVtYmVyJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gT2JqZWN0XG4gKlxuICogQHBhcmFtIHsqfSB0aGluZyBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIE9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzT2JqZWN0ID0gKHRoaW5nKSA9PiB0aGluZyAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpbmcgPT09ICdvYmplY3QnO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgQm9vbGVhblxuICpcbiAqIEBwYXJhbSB7Kn0gdGhpbmcgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQm9vbGVhbiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzQm9vbGVhbiA9IHRoaW5nID0+IHRoaW5nID09PSB0cnVlIHx8IHRoaW5nID09PSBmYWxzZTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIHBsYWluIE9iamVjdFxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc1BsYWluT2JqZWN0ID0gKHZhbCkgPT4ge1xuICBpZiAoa2luZE9mKHZhbCkgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgcHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YodmFsKTtcbiAgcmV0dXJuIChwcm90b3R5cGUgPT09IG51bGwgfHwgcHJvdG90eXBlID09PSBPYmplY3QucHJvdG90eXBlIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90b3R5cGUpID09PSBudWxsKSAmJiAhKFN5bWJvbC50b1N0cmluZ1RhZyBpbiB2YWwpICYmICEoU3ltYm9sLml0ZXJhdG9yIGluIHZhbCk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBEYXRlXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIERhdGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0RhdGUgPSBraW5kT2ZUZXN0KCdEYXRlJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGaWxlXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZpbGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0ZpbGUgPSBraW5kT2ZUZXN0KCdGaWxlJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCbG9iXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJsb2IsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0Jsb2IgPSBraW5kT2ZUZXN0KCdCbG9iJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGaWxlTGlzdFxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBGaWxlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNGaWxlTGlzdCA9IGtpbmRPZlRlc3QoJ0ZpbGVMaXN0Jyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBTdHJlYW1cbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgU3RyZWFtLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNTdHJlYW0gPSAodmFsKSA9PiBpc09iamVjdCh2YWwpICYmIGlzRnVuY3Rpb24odmFsLnBpcGUpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRm9ybURhdGFcbiAqXG4gKiBAcGFyYW0geyp9IHRoaW5nIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gRm9ybURhdGEsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0Zvcm1EYXRhID0gKHRoaW5nKSA9PiB7XG4gIGxldCBraW5kO1xuICByZXR1cm4gdGhpbmcgJiYgKFxuICAgICh0eXBlb2YgRm9ybURhdGEgPT09ICdmdW5jdGlvbicgJiYgdGhpbmcgaW5zdGFuY2VvZiBGb3JtRGF0YSkgfHwgKFxuICAgICAgaXNGdW5jdGlvbih0aGluZy5hcHBlbmQpICYmIChcbiAgICAgICAgKGtpbmQgPSBraW5kT2YodGhpbmcpKSA9PT0gJ2Zvcm1kYXRhJyB8fFxuICAgICAgICAvLyBkZXRlY3QgZm9ybS1kYXRhIGluc3RhbmNlXG4gICAgICAgIChraW5kID09PSAnb2JqZWN0JyAmJiBpc0Z1bmN0aW9uKHRoaW5nLnRvU3RyaW5nKSAmJiB0aGluZy50b1N0cmluZygpID09PSAnW29iamVjdCBGb3JtRGF0YV0nKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBVUkxTZWFyY2hQYXJhbXMgb2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNVUkxTZWFyY2hQYXJhbXMgPSBraW5kT2ZUZXN0KCdVUkxTZWFyY2hQYXJhbXMnKTtcblxuY29uc3QgW2lzUmVhZGFibGVTdHJlYW0sIGlzUmVxdWVzdCwgaXNSZXNwb25zZSwgaXNIZWFkZXJzXSA9IFsnUmVhZGFibGVTdHJlYW0nLCAnUmVxdWVzdCcsICdSZXNwb25zZScsICdIZWFkZXJzJ10ubWFwKGtpbmRPZlRlc3QpO1xuXG4vKipcbiAqIFRyaW0gZXhjZXNzIHdoaXRlc3BhY2Ugb2ZmIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBhIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgVGhlIFN0cmluZyB0byB0cmltXG4gKlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIFN0cmluZyBmcmVlZCBvZiBleGNlc3Mgd2hpdGVzcGFjZVxuICovXG5jb25zdCB0cmltID0gKHN0cikgPT4gc3RyLnRyaW0gP1xuICBzdHIudHJpbSgpIDogc3RyLnJlcGxhY2UoL15bXFxzXFx1RkVGRlxceEEwXSt8W1xcc1xcdUZFRkZcXHhBMF0rJC9nLCAnJyk7XG5cbi8qKlxuICogSXRlcmF0ZSBvdmVyIGFuIEFycmF5IG9yIGFuIE9iamVjdCBpbnZva2luZyBhIGZ1bmN0aW9uIGZvciBlYWNoIGl0ZW0uXG4gKlxuICogSWYgYG9iamAgaXMgYW4gQXJyYXkgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgcGFzc2luZ1xuICogdGhlIHZhbHVlLCBpbmRleCwgYW5kIGNvbXBsZXRlIGFycmF5IGZvciBlYWNoIGl0ZW0uXG4gKlxuICogSWYgJ29iaicgaXMgYW4gT2JqZWN0IGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIHBhc3NpbmdcbiAqIHRoZSB2YWx1ZSwga2V5LCBhbmQgY29tcGxldGUgb2JqZWN0IGZvciBlYWNoIHByb3BlcnR5LlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fEFycmF5fSBvYmogVGhlIG9iamVjdCB0byBpdGVyYXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgY2FsbGJhY2sgdG8gaW52b2tlIGZvciBlYWNoIGl0ZW1cbiAqXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFthbGxPd25LZXlzID0gZmFsc2VdXG4gKiBAcmV0dXJucyB7YW55fVxuICovXG5mdW5jdGlvbiBmb3JFYWNoKG9iaiwgZm4sIHthbGxPd25LZXlzID0gZmFsc2V9ID0ge30pIHtcbiAgLy8gRG9uJ3QgYm90aGVyIGlmIG5vIHZhbHVlIHByb3ZpZGVkXG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgaTtcbiAgbGV0IGw7XG5cbiAgLy8gRm9yY2UgYW4gYXJyYXkgaWYgbm90IGFscmVhZHkgc29tZXRoaW5nIGl0ZXJhYmxlXG4gIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICAgIG9iaiA9IFtvYmpdO1xuICB9XG5cbiAgaWYgKGlzQXJyYXkob2JqKSkge1xuICAgIC8vIEl0ZXJhdGUgb3ZlciBhcnJheSB2YWx1ZXNcbiAgICBmb3IgKGkgPSAwLCBsID0gb2JqLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgZm4uY2FsbChudWxsLCBvYmpbaV0sIGksIG9iaik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIEl0ZXJhdGUgb3ZlciBvYmplY3Qga2V5c1xuICAgIGNvbnN0IGtleXMgPSBhbGxPd25LZXlzID8gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKSA6IE9iamVjdC5rZXlzKG9iaik7XG4gICAgY29uc3QgbGVuID0ga2V5cy5sZW5ndGg7XG4gICAgbGV0IGtleTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAga2V5ID0ga2V5c1tpXTtcbiAgICAgIGZuLmNhbGwobnVsbCwgb2JqW2tleV0sIGtleSwgb2JqKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluZEtleShvYmosIGtleSkge1xuICBrZXkgPSBrZXkudG9Mb3dlckNhc2UoKTtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gIGxldCBpID0ga2V5cy5sZW5ndGg7XG4gIGxldCBfa2V5O1xuICB3aGlsZSAoaS0tID4gMCkge1xuICAgIF9rZXkgPSBrZXlzW2ldO1xuICAgIGlmIChrZXkgPT09IF9rZXkudG9Mb3dlckNhc2UoKSkge1xuICAgICAgcmV0dXJuIF9rZXk7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5jb25zdCBfZ2xvYmFsID0gKCgpID0+IHtcbiAgLyplc2xpbnQgbm8tdW5kZWY6MCovXG4gIGlmICh0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIGdsb2JhbFRoaXM7XG4gIHJldHVybiB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiBnbG9iYWwpXG59KSgpO1xuXG5jb25zdCBpc0NvbnRleHREZWZpbmVkID0gKGNvbnRleHQpID0+ICFpc1VuZGVmaW5lZChjb250ZXh0KSAmJiBjb250ZXh0ICE9PSBfZ2xvYmFsO1xuXG4vKipcbiAqIEFjY2VwdHMgdmFyYXJncyBleHBlY3RpbmcgZWFjaCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3QsIHRoZW5cbiAqIGltbXV0YWJseSBtZXJnZXMgdGhlIHByb3BlcnRpZXMgb2YgZWFjaCBvYmplY3QgYW5kIHJldHVybnMgcmVzdWx0LlxuICpcbiAqIFdoZW4gbXVsdGlwbGUgb2JqZWN0cyBjb250YWluIHRoZSBzYW1lIGtleSB0aGUgbGF0ZXIgb2JqZWN0IGluXG4gKiB0aGUgYXJndW1lbnRzIGxpc3Qgd2lsbCB0YWtlIHByZWNlZGVuY2UuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGBqc1xuICogdmFyIHJlc3VsdCA9IG1lcmdlKHtmb286IDEyM30sIHtmb286IDQ1Nn0pO1xuICogY29uc29sZS5sb2cocmVzdWx0LmZvbyk7IC8vIG91dHB1dHMgNDU2XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqMSBPYmplY3QgdG8gbWVyZ2VcbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXN1bHQgb2YgYWxsIG1lcmdlIHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gbWVyZ2UoLyogb2JqMSwgb2JqMiwgb2JqMywgLi4uICovKSB7XG4gIGNvbnN0IHtjYXNlbGVzc30gPSBpc0NvbnRleHREZWZpbmVkKHRoaXMpICYmIHRoaXMgfHwge307XG4gIGNvbnN0IHJlc3VsdCA9IHt9O1xuICBjb25zdCBhc3NpZ25WYWx1ZSA9ICh2YWwsIGtleSkgPT4ge1xuICAgIGNvbnN0IHRhcmdldEtleSA9IGNhc2VsZXNzICYmIGZpbmRLZXkocmVzdWx0LCBrZXkpIHx8IGtleTtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChyZXN1bHRbdGFyZ2V0S2V5XSkgJiYgaXNQbGFpbk9iamVjdCh2YWwpKSB7XG4gICAgICByZXN1bHRbdGFyZ2V0S2V5XSA9IG1lcmdlKHJlc3VsdFt0YXJnZXRLZXldLCB2YWwpO1xuICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdCh2YWwpKSB7XG4gICAgICByZXN1bHRbdGFyZ2V0S2V5XSA9IG1lcmdlKHt9LCB2YWwpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWwpKSB7XG4gICAgICByZXN1bHRbdGFyZ2V0S2V5XSA9IHZhbC5zbGljZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRbdGFyZ2V0S2V5XSA9IHZhbDtcbiAgICB9XG4gIH1cblxuICBmb3IgKGxldCBpID0gMCwgbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBhcmd1bWVudHNbaV0gJiYgZm9yRWFjaChhcmd1bWVudHNbaV0sIGFzc2lnblZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEV4dGVuZHMgb2JqZWN0IGEgYnkgbXV0YWJseSBhZGRpbmcgdG8gaXQgdGhlIHByb3BlcnRpZXMgb2Ygb2JqZWN0IGIuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGEgVGhlIG9iamVjdCB0byBiZSBleHRlbmRlZFxuICogQHBhcmFtIHtPYmplY3R9IGIgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbVxuICogQHBhcmFtIHtPYmplY3R9IHRoaXNBcmcgVGhlIG9iamVjdCB0byBiaW5kIGZ1bmN0aW9uIHRvXG4gKlxuICogQHBhcmFtIHtCb29sZWFufSBbYWxsT3duS2V5c11cbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSByZXN1bHRpbmcgdmFsdWUgb2Ygb2JqZWN0IGFcbiAqL1xuY29uc3QgZXh0ZW5kID0gKGEsIGIsIHRoaXNBcmcsIHthbGxPd25LZXlzfT0ge30pID0+IHtcbiAgZm9yRWFjaChiLCAodmFsLCBrZXkpID0+IHtcbiAgICBpZiAodGhpc0FyZyAmJiBpc0Z1bmN0aW9uKHZhbCkpIHtcbiAgICAgIGFba2V5XSA9IGJpbmQodmFsLCB0aGlzQXJnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYVtrZXldID0gdmFsO1xuICAgIH1cbiAgfSwge2FsbE93bktleXN9KTtcbiAgcmV0dXJuIGE7XG59XG5cbi8qKlxuICogUmVtb3ZlIGJ5dGUgb3JkZXIgbWFya2VyLiBUaGlzIGNhdGNoZXMgRUYgQkIgQkYgKHRoZSBVVEYtOCBCT00pXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQgd2l0aCBCT01cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBjb250ZW50IHZhbHVlIHdpdGhvdXQgQk9NXG4gKi9cbmNvbnN0IHN0cmlwQk9NID0gKGNvbnRlbnQpID0+IHtcbiAgaWYgKGNvbnRlbnQuY2hhckNvZGVBdCgwKSA9PT0gMHhGRUZGKSB7XG4gICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UoMSk7XG4gIH1cbiAgcmV0dXJuIGNvbnRlbnQ7XG59XG5cbi8qKlxuICogSW5oZXJpdCB0aGUgcHJvdG90eXBlIG1ldGhvZHMgZnJvbSBvbmUgY29uc3RydWN0b3IgaW50byBhbm90aGVyXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtmdW5jdGlvbn0gc3VwZXJDb25zdHJ1Y3RvclxuICogQHBhcmFtIHtvYmplY3R9IFtwcm9wc11cbiAqIEBwYXJhbSB7b2JqZWN0fSBbZGVzY3JpcHRvcnNdXG4gKlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmNvbnN0IGluaGVyaXRzID0gKGNvbnN0cnVjdG9yLCBzdXBlckNvbnN0cnVjdG9yLCBwcm9wcywgZGVzY3JpcHRvcnMpID0+IHtcbiAgY29uc3RydWN0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNvbnN0cnVjdG9yLnByb3RvdHlwZSwgZGVzY3JpcHRvcnMpO1xuICBjb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcjtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnN0cnVjdG9yLCAnc3VwZXInLCB7XG4gICAgdmFsdWU6IHN1cGVyQ29uc3RydWN0b3IucHJvdG90eXBlXG4gIH0pO1xuICBwcm9wcyAmJiBPYmplY3QuYXNzaWduKGNvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvcHMpO1xufVxuXG4vKipcbiAqIFJlc29sdmUgb2JqZWN0IHdpdGggZGVlcCBwcm90b3R5cGUgY2hhaW4gdG8gYSBmbGF0IG9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZU9iaiBzb3VyY2Ugb2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gW2Rlc3RPYmpdXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufEJvb2xlYW59IFtmaWx0ZXJdXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJvcEZpbHRlcl1cbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICovXG5jb25zdCB0b0ZsYXRPYmplY3QgPSAoc291cmNlT2JqLCBkZXN0T2JqLCBmaWx0ZXIsIHByb3BGaWx0ZXIpID0+IHtcbiAgbGV0IHByb3BzO1xuICBsZXQgaTtcbiAgbGV0IHByb3A7XG4gIGNvbnN0IG1lcmdlZCA9IHt9O1xuXG4gIGRlc3RPYmogPSBkZXN0T2JqIHx8IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXEtbnVsbCxlcWVxZXFcbiAgaWYgKHNvdXJjZU9iaiA9PSBudWxsKSByZXR1cm4gZGVzdE9iajtcblxuICBkbyB7XG4gICAgcHJvcHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2VPYmopO1xuICAgIGkgPSBwcm9wcy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSA+IDApIHtcbiAgICAgIHByb3AgPSBwcm9wc1tpXTtcbiAgICAgIGlmICgoIXByb3BGaWx0ZXIgfHwgcHJvcEZpbHRlcihwcm9wLCBzb3VyY2VPYmosIGRlc3RPYmopKSAmJiAhbWVyZ2VkW3Byb3BdKSB7XG4gICAgICAgIGRlc3RPYmpbcHJvcF0gPSBzb3VyY2VPYmpbcHJvcF07XG4gICAgICAgIG1lcmdlZFtwcm9wXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHNvdXJjZU9iaiA9IGZpbHRlciAhPT0gZmFsc2UgJiYgZ2V0UHJvdG90eXBlT2Yoc291cmNlT2JqKTtcbiAgfSB3aGlsZSAoc291cmNlT2JqICYmICghZmlsdGVyIHx8IGZpbHRlcihzb3VyY2VPYmosIGRlc3RPYmopKSAmJiBzb3VyY2VPYmogIT09IE9iamVjdC5wcm90b3R5cGUpO1xuXG4gIHJldHVybiBkZXN0T2JqO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIHN0cmluZyBlbmRzIHdpdGggdGhlIGNoYXJhY3RlcnMgb2YgYSBzcGVjaWZpZWQgc3RyaW5nXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHBhcmFtIHtTdHJpbmd9IHNlYXJjaFN0cmluZ1xuICogQHBhcmFtIHtOdW1iZXJ9IFtwb3NpdGlvbj0gMF1cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuY29uc3QgZW5kc1dpdGggPSAoc3RyLCBzZWFyY2hTdHJpbmcsIHBvc2l0aW9uKSA9PiB7XG4gIHN0ciA9IFN0cmluZyhzdHIpO1xuICBpZiAocG9zaXRpb24gPT09IHVuZGVmaW5lZCB8fCBwb3NpdGlvbiA+IHN0ci5sZW5ndGgpIHtcbiAgICBwb3NpdGlvbiA9IHN0ci5sZW5ndGg7XG4gIH1cbiAgcG9zaXRpb24gLT0gc2VhcmNoU3RyaW5nLmxlbmd0aDtcbiAgY29uc3QgbGFzdEluZGV4ID0gc3RyLmluZGV4T2Yoc2VhcmNoU3RyaW5nLCBwb3NpdGlvbik7XG4gIHJldHVybiBsYXN0SW5kZXggIT09IC0xICYmIGxhc3RJbmRleCA9PT0gcG9zaXRpb247XG59XG5cblxuLyoqXG4gKiBSZXR1cm5zIG5ldyBhcnJheSBmcm9tIGFycmF5IGxpa2Ugb2JqZWN0IG9yIG51bGwgaWYgZmFpbGVkXG4gKlxuICogQHBhcmFtIHsqfSBbdGhpbmddXG4gKlxuICogQHJldHVybnMgez9BcnJheX1cbiAqL1xuY29uc3QgdG9BcnJheSA9ICh0aGluZykgPT4ge1xuICBpZiAoIXRoaW5nKSByZXR1cm4gbnVsbDtcbiAgaWYgKGlzQXJyYXkodGhpbmcpKSByZXR1cm4gdGhpbmc7XG4gIGxldCBpID0gdGhpbmcubGVuZ3RoO1xuICBpZiAoIWlzTnVtYmVyKGkpKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgYXJyID0gbmV3IEFycmF5KGkpO1xuICB3aGlsZSAoaS0tID4gMCkge1xuICAgIGFycltpXSA9IHRoaW5nW2ldO1xuICB9XG4gIHJldHVybiBhcnI7XG59XG5cbi8qKlxuICogQ2hlY2tpbmcgaWYgdGhlIFVpbnQ4QXJyYXkgZXhpc3RzIGFuZCBpZiBpdCBkb2VzLCBpdCByZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgdGhlXG4gKiB0aGluZyBwYXNzZWQgaW4gaXMgYW4gaW5zdGFuY2Ugb2YgVWludDhBcnJheVxuICpcbiAqIEBwYXJhbSB7VHlwZWRBcnJheX1cbiAqXG4gKiBAcmV0dXJucyB7QXJyYXl9XG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5jb25zdCBpc1R5cGVkQXJyYXkgPSAoVHlwZWRBcnJheSA9PiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gIHJldHVybiB0aGluZyA9PiB7XG4gICAgcmV0dXJuIFR5cGVkQXJyYXkgJiYgdGhpbmcgaW5zdGFuY2VvZiBUeXBlZEFycmF5O1xuICB9O1xufSkodHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnICYmIGdldFByb3RvdHlwZU9mKFVpbnQ4QXJyYXkpKTtcblxuLyoqXG4gKiBGb3IgZWFjaCBlbnRyeSBpbiB0aGUgb2JqZWN0LCBjYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBrZXkgYW5kIHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0PGFueSwgYW55Pn0gb2JqIC0gVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiAtIFRoZSBmdW5jdGlvbiB0byBjYWxsIGZvciBlYWNoIGVudHJ5LlxuICpcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5jb25zdCBmb3JFYWNoRW50cnkgPSAob2JqLCBmbikgPT4ge1xuICBjb25zdCBnZW5lcmF0b3IgPSBvYmogJiYgb2JqW1N5bWJvbC5pdGVyYXRvcl07XG5cbiAgY29uc3QgaXRlcmF0b3IgPSBnZW5lcmF0b3IuY2FsbChvYmopO1xuXG4gIGxldCByZXN1bHQ7XG5cbiAgd2hpbGUgKChyZXN1bHQgPSBpdGVyYXRvci5uZXh0KCkpICYmICFyZXN1bHQuZG9uZSkge1xuICAgIGNvbnN0IHBhaXIgPSByZXN1bHQudmFsdWU7XG4gICAgZm4uY2FsbChvYmosIHBhaXJbMF0sIHBhaXJbMV0pO1xuICB9XG59XG5cbi8qKlxuICogSXQgdGFrZXMgYSByZWd1bGFyIGV4cHJlc3Npb24gYW5kIGEgc3RyaW5nLCBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiBhbGwgdGhlIG1hdGNoZXNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVnRXhwIC0gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBtYXRjaCBhZ2FpbnN0LlxuICogQHBhcmFtIHtzdHJpbmd9IHN0ciAtIFRoZSBzdHJpbmcgdG8gc2VhcmNoLlxuICpcbiAqIEByZXR1cm5zIHtBcnJheTxib29sZWFuPn1cbiAqL1xuY29uc3QgbWF0Y2hBbGwgPSAocmVnRXhwLCBzdHIpID0+IHtcbiAgbGV0IG1hdGNoZXM7XG4gIGNvbnN0IGFyciA9IFtdO1xuXG4gIHdoaWxlICgobWF0Y2hlcyA9IHJlZ0V4cC5leGVjKHN0cikpICE9PSBudWxsKSB7XG4gICAgYXJyLnB1c2gobWF0Y2hlcyk7XG4gIH1cblxuICByZXR1cm4gYXJyO1xufVxuXG4vKiBDaGVja2luZyBpZiB0aGUga2luZE9mVGVzdCBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBwYXNzZWQgYW4gSFRNTEZvcm1FbGVtZW50LiAqL1xuY29uc3QgaXNIVE1MRm9ybSA9IGtpbmRPZlRlc3QoJ0hUTUxGb3JtRWxlbWVudCcpO1xuXG5jb25zdCB0b0NhbWVsQ2FzZSA9IHN0ciA9PiB7XG4gIHJldHVybiBzdHIudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bLV9cXHNdKFthLXpcXGRdKShcXHcqKS9nLFxuICAgIGZ1bmN0aW9uIHJlcGxhY2VyKG0sIHAxLCBwMikge1xuICAgICAgcmV0dXJuIHAxLnRvVXBwZXJDYXNlKCkgKyBwMjtcbiAgICB9XG4gICk7XG59O1xuXG4vKiBDcmVhdGluZyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBjaGVjayBpZiBhbiBvYmplY3QgaGFzIGEgcHJvcGVydHkuICovXG5jb25zdCBoYXNPd25Qcm9wZXJ0eSA9ICgoe2hhc093blByb3BlcnR5fSkgPT4gKG9iaiwgcHJvcCkgPT4gaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKShPYmplY3QucHJvdG90eXBlKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFJlZ0V4cCBvYmplY3RcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgUmVnRXhwIG9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzUmVnRXhwID0ga2luZE9mVGVzdCgnUmVnRXhwJyk7XG5cbmNvbnN0IHJlZHVjZURlc2NyaXB0b3JzID0gKG9iaiwgcmVkdWNlcikgPT4ge1xuICBjb25zdCBkZXNjcmlwdG9ycyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9iaik7XG4gIGNvbnN0IHJlZHVjZWREZXNjcmlwdG9ycyA9IHt9O1xuXG4gIGZvckVhY2goZGVzY3JpcHRvcnMsIChkZXNjcmlwdG9yLCBuYW1lKSA9PiB7XG4gICAgbGV0IHJldDtcbiAgICBpZiAoKHJldCA9IHJlZHVjZXIoZGVzY3JpcHRvciwgbmFtZSwgb2JqKSkgIT09IGZhbHNlKSB7XG4gICAgICByZWR1Y2VkRGVzY3JpcHRvcnNbbmFtZV0gPSByZXQgfHwgZGVzY3JpcHRvcjtcbiAgICB9XG4gIH0pO1xuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG9iaiwgcmVkdWNlZERlc2NyaXB0b3JzKTtcbn1cblxuLyoqXG4gKiBNYWtlcyBhbGwgbWV0aG9kcyByZWFkLW9ubHlcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqL1xuXG5jb25zdCBmcmVlemVNZXRob2RzID0gKG9iaikgPT4ge1xuICByZWR1Y2VEZXNjcmlwdG9ycyhvYmosIChkZXNjcmlwdG9yLCBuYW1lKSA9PiB7XG4gICAgLy8gc2tpcCByZXN0cmljdGVkIHByb3BzIGluIHN0cmljdCBtb2RlXG4gICAgaWYgKGlzRnVuY3Rpb24ob2JqKSAmJiBbJ2FyZ3VtZW50cycsICdjYWxsZXInLCAnY2FsbGVlJ10uaW5kZXhPZihuYW1lKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IG9ialtuYW1lXTtcblxuICAgIGlmICghaXNGdW5jdGlvbih2YWx1ZSkpIHJldHVybjtcblxuICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGZhbHNlO1xuXG4gICAgaWYgKCd3cml0YWJsZScgaW4gZGVzY3JpcHRvcikge1xuICAgICAgZGVzY3JpcHRvci53cml0YWJsZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghZGVzY3JpcHRvci5zZXQpIHtcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKCkgPT4ge1xuICAgICAgICB0aHJvdyBFcnJvcignQ2FuIG5vdCByZXdyaXRlIHJlYWQtb25seSBtZXRob2QgXFwnJyArIG5hbWUgKyAnXFwnJyk7XG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG59XG5cbmNvbnN0IHRvT2JqZWN0U2V0ID0gKGFycmF5T3JTdHJpbmcsIGRlbGltaXRlcikgPT4ge1xuICBjb25zdCBvYmogPSB7fTtcblxuICBjb25zdCBkZWZpbmUgPSAoYXJyKSA9PiB7XG4gICAgYXJyLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgb2JqW3ZhbHVlXSA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBpc0FycmF5KGFycmF5T3JTdHJpbmcpID8gZGVmaW5lKGFycmF5T3JTdHJpbmcpIDogZGVmaW5lKFN0cmluZyhhcnJheU9yU3RyaW5nKS5zcGxpdChkZWxpbWl0ZXIpKTtcblxuICByZXR1cm4gb2JqO1xufVxuXG5jb25zdCBub29wID0gKCkgPT4ge31cblxuY29uc3QgdG9GaW5pdGVOdW1iZXIgPSAodmFsdWUsIGRlZmF1bHRWYWx1ZSkgPT4ge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiBOdW1iZXIuaXNGaW5pdGUodmFsdWUgPSArdmFsdWUpID8gdmFsdWUgOiBkZWZhdWx0VmFsdWU7XG59XG5cbmNvbnN0IEFMUEhBID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6J1xuXG5jb25zdCBESUdJVCA9ICcwMTIzNDU2Nzg5JztcblxuY29uc3QgQUxQSEFCRVQgPSB7XG4gIERJR0lULFxuICBBTFBIQSxcbiAgQUxQSEFfRElHSVQ6IEFMUEhBICsgQUxQSEEudG9VcHBlckNhc2UoKSArIERJR0lUXG59XG5cbmNvbnN0IGdlbmVyYXRlU3RyaW5nID0gKHNpemUgPSAxNiwgYWxwaGFiZXQgPSBBTFBIQUJFVC5BTFBIQV9ESUdJVCkgPT4ge1xuICBsZXQgc3RyID0gJyc7XG4gIGNvbnN0IHtsZW5ndGh9ID0gYWxwaGFiZXQ7XG4gIHdoaWxlIChzaXplLS0pIHtcbiAgICBzdHIgKz0gYWxwaGFiZXRbTWF0aC5yYW5kb20oKSAqIGxlbmd0aHwwXVxuICB9XG5cbiAgcmV0dXJuIHN0cjtcbn1cblxuLyoqXG4gKiBJZiB0aGUgdGhpbmcgaXMgYSBGb3JtRGF0YSBvYmplY3QsIHJldHVybiB0cnVlLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxuICpcbiAqIEBwYXJhbSB7dW5rbm93bn0gdGhpbmcgLSBUaGUgdGhpbmcgdG8gY2hlY2suXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzU3BlY0NvbXBsaWFudEZvcm0odGhpbmcpIHtcbiAgcmV0dXJuICEhKHRoaW5nICYmIGlzRnVuY3Rpb24odGhpbmcuYXBwZW5kKSAmJiB0aGluZ1tTeW1ib2wudG9TdHJpbmdUYWddID09PSAnRm9ybURhdGEnICYmIHRoaW5nW1N5bWJvbC5pdGVyYXRvcl0pO1xufVxuXG5jb25zdCB0b0pTT05PYmplY3QgPSAob2JqKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IEFycmF5KDEwKTtcblxuICBjb25zdCB2aXNpdCA9IChzb3VyY2UsIGkpID0+IHtcblxuICAgIGlmIChpc09iamVjdChzb3VyY2UpKSB7XG4gICAgICBpZiAoc3RhY2suaW5kZXhPZihzb3VyY2UpID49IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZighKCd0b0pTT04nIGluIHNvdXJjZSkpIHtcbiAgICAgICAgc3RhY2tbaV0gPSBzb3VyY2U7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGlzQXJyYXkoc291cmNlKSA/IFtdIDoge307XG5cbiAgICAgICAgZm9yRWFjaChzb3VyY2UsICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVkdWNlZFZhbHVlID0gdmlzaXQodmFsdWUsIGkgKyAxKTtcbiAgICAgICAgICAhaXNVbmRlZmluZWQocmVkdWNlZFZhbHVlKSAmJiAodGFyZ2V0W2tleV0gPSByZWR1Y2VkVmFsdWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzdGFja1tpXSA9IHVuZGVmaW5lZDtcblxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzb3VyY2U7XG4gIH1cblxuICByZXR1cm4gdmlzaXQob2JqLCAwKTtcbn1cblxuY29uc3QgaXNBc3luY0ZuID0ga2luZE9mVGVzdCgnQXN5bmNGdW5jdGlvbicpO1xuXG5jb25zdCBpc1RoZW5hYmxlID0gKHRoaW5nKSA9PlxuICB0aGluZyAmJiAoaXNPYmplY3QodGhpbmcpIHx8IGlzRnVuY3Rpb24odGhpbmcpKSAmJiBpc0Z1bmN0aW9uKHRoaW5nLnRoZW4pICYmIGlzRnVuY3Rpb24odGhpbmcuY2F0Y2gpO1xuXG4vLyBvcmlnaW5hbCBjb2RlXG4vLyBodHRwczovL2dpdGh1Yi5jb20vRGlnaXRhbEJyYWluSlMvQXhpb3NQcm9taXNlL2Jsb2IvMTZkZWFiMTM3MTBlYzA5Nzc5OTIyMTMxZjNmYTU5NTQzMjBmODNhYi9saWIvdXRpbHMuanMjTDExLUwzNFxuXG5jb25zdCBfc2V0SW1tZWRpYXRlID0gKChzZXRJbW1lZGlhdGVTdXBwb3J0ZWQsIHBvc3RNZXNzYWdlU3VwcG9ydGVkKSA9PiB7XG4gIGlmIChzZXRJbW1lZGlhdGVTdXBwb3J0ZWQpIHtcbiAgICByZXR1cm4gc2V0SW1tZWRpYXRlO1xuICB9XG5cbiAgcmV0dXJuIHBvc3RNZXNzYWdlU3VwcG9ydGVkID8gKCh0b2tlbiwgY2FsbGJhY2tzKSA9PiB7XG4gICAgX2dsb2JhbC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCAoe3NvdXJjZSwgZGF0YX0pID0+IHtcbiAgICAgIGlmIChzb3VyY2UgPT09IF9nbG9iYWwgJiYgZGF0YSA9PT0gdG9rZW4pIHtcbiAgICAgICAgY2FsbGJhY2tzLmxlbmd0aCAmJiBjYWxsYmFja3Muc2hpZnQoKSgpO1xuICAgICAgfVxuICAgIH0sIGZhbHNlKTtcblxuICAgIHJldHVybiAoY2IpID0+IHtcbiAgICAgIGNhbGxiYWNrcy5wdXNoKGNiKTtcbiAgICAgIF9nbG9iYWwucG9zdE1lc3NhZ2UodG9rZW4sIFwiKlwiKTtcbiAgICB9XG4gIH0pKGBheGlvc0Ake01hdGgucmFuZG9tKCl9YCwgW10pIDogKGNiKSA9PiBzZXRUaW1lb3V0KGNiKTtcbn0pKFxuICB0eXBlb2Ygc2V0SW1tZWRpYXRlID09PSAnZnVuY3Rpb24nLFxuICBpc0Z1bmN0aW9uKF9nbG9iYWwucG9zdE1lc3NhZ2UpXG4pO1xuXG5jb25zdCBhc2FwID0gdHlwZW9mIHF1ZXVlTWljcm90YXNrICE9PSAndW5kZWZpbmVkJyA/XG4gIHF1ZXVlTWljcm90YXNrLmJpbmQoX2dsb2JhbCkgOiAoIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLm5leHRUaWNrIHx8IF9zZXRJbW1lZGlhdGUpO1xuXG4vLyAqKioqKioqKioqKioqKioqKioqKipcblxuZXhwb3J0IGRlZmF1bHQge1xuICBpc0FycmF5LFxuICBpc0FycmF5QnVmZmVyLFxuICBpc0J1ZmZlcixcbiAgaXNGb3JtRGF0YSxcbiAgaXNBcnJheUJ1ZmZlclZpZXcsXG4gIGlzU3RyaW5nLFxuICBpc051bWJlcixcbiAgaXNCb29sZWFuLFxuICBpc09iamVjdCxcbiAgaXNQbGFpbk9iamVjdCxcbiAgaXNSZWFkYWJsZVN0cmVhbSxcbiAgaXNSZXF1ZXN0LFxuICBpc1Jlc3BvbnNlLFxuICBpc0hlYWRlcnMsXG4gIGlzVW5kZWZpbmVkLFxuICBpc0RhdGUsXG4gIGlzRmlsZSxcbiAgaXNCbG9iLFxuICBpc1JlZ0V4cCxcbiAgaXNGdW5jdGlvbixcbiAgaXNTdHJlYW0sXG4gIGlzVVJMU2VhcmNoUGFyYW1zLFxuICBpc1R5cGVkQXJyYXksXG4gIGlzRmlsZUxpc3QsXG4gIGZvckVhY2gsXG4gIG1lcmdlLFxuICBleHRlbmQsXG4gIHRyaW0sXG4gIHN0cmlwQk9NLFxuICBpbmhlcml0cyxcbiAgdG9GbGF0T2JqZWN0LFxuICBraW5kT2YsXG4gIGtpbmRPZlRlc3QsXG4gIGVuZHNXaXRoLFxuICB0b0FycmF5LFxuICBmb3JFYWNoRW50cnksXG4gIG1hdGNoQWxsLFxuICBpc0hUTUxGb3JtLFxuICBoYXNPd25Qcm9wZXJ0eSxcbiAgaGFzT3duUHJvcDogaGFzT3duUHJvcGVydHksIC8vIGFuIGFsaWFzIHRvIGF2b2lkIEVTTGludCBuby1wcm90b3R5cGUtYnVpbHRpbnMgZGV0ZWN0aW9uXG4gIHJlZHVjZURlc2NyaXB0b3JzLFxuICBmcmVlemVNZXRob2RzLFxuICB0b09iamVjdFNldCxcbiAgdG9DYW1lbENhc2UsXG4gIG5vb3AsXG4gIHRvRmluaXRlTnVtYmVyLFxuICBmaW5kS2V5LFxuICBnbG9iYWw6IF9nbG9iYWwsXG4gIGlzQ29udGV4dERlZmluZWQsXG4gIEFMUEhBQkVULFxuICBnZW5lcmF0ZVN0cmluZyxcbiAgaXNTcGVjQ29tcGxpYW50Rm9ybSxcbiAgdG9KU09OT2JqZWN0LFxuICBpc0FzeW5jRm4sXG4gIGlzVGhlbmFibGUsXG4gIHNldEltbWVkaWF0ZTogX3NldEltbWVkaWF0ZSxcbiAgYXNhcFxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzLmpzJztcblxuLyoqXG4gKiBDcmVhdGUgYW4gRXJyb3Igd2l0aCB0aGUgc3BlY2lmaWVkIG1lc3NhZ2UsIGNvbmZpZywgZXJyb3IgY29kZSwgcmVxdWVzdCBhbmQgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvZGVdIFRoZSBlcnJvciBjb2RlIChmb3IgZXhhbXBsZSwgJ0VDT05OQUJPUlRFRCcpLlxuICogQHBhcmFtIHtPYmplY3R9IFtjb25maWddIFRoZSBjb25maWcuXG4gKiBAcGFyYW0ge09iamVjdH0gW3JlcXVlc3RdIFRoZSByZXF1ZXN0LlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXNwb25zZV0gVGhlIHJlc3BvbnNlLlxuICpcbiAqIEByZXR1cm5zIHtFcnJvcn0gVGhlIGNyZWF0ZWQgZXJyb3IuXG4gKi9cbmZ1bmN0aW9uIEF4aW9zRXJyb3IobWVzc2FnZSwgY29kZSwgY29uZmlnLCByZXF1ZXN0LCByZXNwb25zZSkge1xuICBFcnJvci5jYWxsKHRoaXMpO1xuXG4gIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkge1xuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuc3RhY2sgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICB9XG5cbiAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgdGhpcy5uYW1lID0gJ0F4aW9zRXJyb3InO1xuICBjb2RlICYmICh0aGlzLmNvZGUgPSBjb2RlKTtcbiAgY29uZmlnICYmICh0aGlzLmNvbmZpZyA9IGNvbmZpZyk7XG4gIHJlcXVlc3QgJiYgKHRoaXMucmVxdWVzdCA9IHJlcXVlc3QpO1xuICBpZiAocmVzcG9uc2UpIHtcbiAgICB0aGlzLnJlc3BvbnNlID0gcmVzcG9uc2U7XG4gICAgdGhpcy5zdGF0dXMgPSByZXNwb25zZS5zdGF0dXMgPyByZXNwb25zZS5zdGF0dXMgOiBudWxsO1xuICB9XG59XG5cbnV0aWxzLmluaGVyaXRzKEF4aW9zRXJyb3IsIEVycm9yLCB7XG4gIHRvSlNPTjogZnVuY3Rpb24gdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICAvLyBTdGFuZGFyZFxuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgLy8gTWljcm9zb2Z0XG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIG51bWJlcjogdGhpcy5udW1iZXIsXG4gICAgICAvLyBNb3ppbGxhXG4gICAgICBmaWxlTmFtZTogdGhpcy5maWxlTmFtZSxcbiAgICAgIGxpbmVOdW1iZXI6IHRoaXMubGluZU51bWJlcixcbiAgICAgIGNvbHVtbk51bWJlcjogdGhpcy5jb2x1bW5OdW1iZXIsXG4gICAgICBzdGFjazogdGhpcy5zdGFjayxcbiAgICAgIC8vIEF4aW9zXG4gICAgICBjb25maWc6IHV0aWxzLnRvSlNPTk9iamVjdCh0aGlzLmNvbmZpZyksXG4gICAgICBjb2RlOiB0aGlzLmNvZGUsXG4gICAgICBzdGF0dXM6IHRoaXMuc3RhdHVzXG4gICAgfTtcbiAgfVxufSk7XG5cbmNvbnN0IHByb3RvdHlwZSA9IEF4aW9zRXJyb3IucHJvdG90eXBlO1xuY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcblxuW1xuICAnRVJSX0JBRF9PUFRJT05fVkFMVUUnLFxuICAnRVJSX0JBRF9PUFRJT04nLFxuICAnRUNPTk5BQk9SVEVEJyxcbiAgJ0VUSU1FRE9VVCcsXG4gICdFUlJfTkVUV09SSycsXG4gICdFUlJfRlJfVE9PX01BTllfUkVESVJFQ1RTJyxcbiAgJ0VSUl9ERVBSRUNBVEVEJyxcbiAgJ0VSUl9CQURfUkVTUE9OU0UnLFxuICAnRVJSX0JBRF9SRVFVRVNUJyxcbiAgJ0VSUl9DQU5DRUxFRCcsXG4gICdFUlJfTk9UX1NVUFBPUlQnLFxuICAnRVJSX0lOVkFMSURfVVJMJ1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbl0uZm9yRWFjaChjb2RlID0+IHtcbiAgZGVzY3JpcHRvcnNbY29kZV0gPSB7dmFsdWU6IGNvZGV9O1xufSk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEF4aW9zRXJyb3IsIGRlc2NyaXB0b3JzKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90b3R5cGUsICdpc0F4aW9zRXJyb3InLCB7dmFsdWU6IHRydWV9KTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbkF4aW9zRXJyb3IuZnJvbSA9IChlcnJvciwgY29kZSwgY29uZmlnLCByZXF1ZXN0LCByZXNwb25zZSwgY3VzdG9tUHJvcHMpID0+IHtcbiAgY29uc3QgYXhpb3NFcnJvciA9IE9iamVjdC5jcmVhdGUocHJvdG90eXBlKTtcblxuICB1dGlscy50b0ZsYXRPYmplY3QoZXJyb3IsIGF4aW9zRXJyb3IsIGZ1bmN0aW9uIGZpbHRlcihvYmopIHtcbiAgICByZXR1cm4gb2JqICE9PSBFcnJvci5wcm90b3R5cGU7XG4gIH0sIHByb3AgPT4ge1xuICAgIHJldHVybiBwcm9wICE9PSAnaXNBeGlvc0Vycm9yJztcbiAgfSk7XG5cbiAgQXhpb3NFcnJvci5jYWxsKGF4aW9zRXJyb3IsIGVycm9yLm1lc3NhZ2UsIGNvZGUsIGNvbmZpZywgcmVxdWVzdCwgcmVzcG9uc2UpO1xuXG4gIGF4aW9zRXJyb3IuY2F1c2UgPSBlcnJvcjtcblxuICBheGlvc0Vycm9yLm5hbWUgPSBlcnJvci5uYW1lO1xuXG4gIGN1c3RvbVByb3BzICYmIE9iamVjdC5hc3NpZ24oYXhpb3NFcnJvciwgY3VzdG9tUHJvcHMpO1xuXG4gIHJldHVybiBheGlvc0Vycm9yO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXhpb3NFcnJvcjtcbiIsIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdHJpY3RcbmV4cG9ydCBkZWZhdWx0IG51bGw7XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5pbXBvcnQgQXhpb3NFcnJvciBmcm9tICcuLi9jb3JlL0F4aW9zRXJyb3IuanMnO1xuLy8gdGVtcG9yYXJ5IGhvdGZpeCB0byBhdm9pZCBjaXJjdWxhciByZWZlcmVuY2VzIHVudGlsIEF4aW9zVVJMU2VhcmNoUGFyYW1zIGlzIHJlZmFjdG9yZWRcbmltcG9ydCBQbGF0Zm9ybUZvcm1EYXRhIGZyb20gJy4uL3BsYXRmb3JtL25vZGUvY2xhc3Nlcy9Gb3JtRGF0YS5qcyc7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gdGhpbmcgaXMgYSBhcnJheSBvciBqcyBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRoaW5nIC0gVGhlIG9iamVjdCBvciBhcnJheSB0byBiZSB2aXNpdGVkLlxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc1Zpc2l0YWJsZSh0aGluZykge1xuICByZXR1cm4gdXRpbHMuaXNQbGFpbk9iamVjdCh0aGluZykgfHwgdXRpbHMuaXNBcnJheSh0aGluZyk7XG59XG5cbi8qKlxuICogSXQgcmVtb3ZlcyB0aGUgYnJhY2tldHMgZnJvbSB0aGUgZW5kIG9mIGEgc3RyaW5nXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBrZXkgb2YgdGhlIHBhcmFtZXRlci5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUga2V5IHdpdGhvdXQgdGhlIGJyYWNrZXRzLlxuICovXG5mdW5jdGlvbiByZW1vdmVCcmFja2V0cyhrZXkpIHtcbiAgcmV0dXJuIHV0aWxzLmVuZHNXaXRoKGtleSwgJ1tdJykgPyBrZXkuc2xpY2UoMCwgLTIpIDoga2V5O1xufVxuXG4vKipcbiAqIEl0IHRha2VzIGEgcGF0aCwgYSBrZXksIGFuZCBhIGJvb2xlYW4sIGFuZCByZXR1cm5zIGEgc3RyaW5nXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCB0byB0aGUgY3VycmVudCBrZXkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIGtleSBvZiB0aGUgY3VycmVudCBvYmplY3QgYmVpbmcgaXRlcmF0ZWQgb3Zlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkb3RzIC0gSWYgdHJ1ZSwgdGhlIGtleSB3aWxsIGJlIHJlbmRlcmVkIHdpdGggZG90cyBpbnN0ZWFkIG9mIGJyYWNrZXRzLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBwYXRoIHRvIHRoZSBjdXJyZW50IGtleS5cbiAqL1xuZnVuY3Rpb24gcmVuZGVyS2V5KHBhdGgsIGtleSwgZG90cykge1xuICBpZiAoIXBhdGgpIHJldHVybiBrZXk7XG4gIHJldHVybiBwYXRoLmNvbmNhdChrZXkpLm1hcChmdW5jdGlvbiBlYWNoKHRva2VuLCBpKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgdG9rZW4gPSByZW1vdmVCcmFja2V0cyh0b2tlbik7XG4gICAgcmV0dXJuICFkb3RzICYmIGkgPyAnWycgKyB0b2tlbiArICddJyA6IHRva2VuO1xuICB9KS5qb2luKGRvdHMgPyAnLicgOiAnJyk7XG59XG5cbi8qKlxuICogSWYgdGhlIGFycmF5IGlzIGFuIGFycmF5IGFuZCBub25lIG9mIGl0cyBlbGVtZW50cyBhcmUgdmlzaXRhYmxlLCB0aGVuIGl0J3MgYSBmbGF0IGFycmF5LlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8YW55Pn0gYXJyIC0gVGhlIGFycmF5IHRvIGNoZWNrXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzRmxhdEFycmF5KGFycikge1xuICByZXR1cm4gdXRpbHMuaXNBcnJheShhcnIpICYmICFhcnIuc29tZShpc1Zpc2l0YWJsZSk7XG59XG5cbmNvbnN0IHByZWRpY2F0ZXMgPSB1dGlscy50b0ZsYXRPYmplY3QodXRpbHMsIHt9LCBudWxsLCBmdW5jdGlvbiBmaWx0ZXIocHJvcCkge1xuICByZXR1cm4gL15pc1tBLVpdLy50ZXN0KHByb3ApO1xufSk7XG5cbi8qKlxuICogQ29udmVydCBhIGRhdGEgb2JqZWN0IHRvIEZvcm1EYXRhXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICogQHBhcmFtIHs/T2JqZWN0fSBbZm9ybURhdGFdXG4gKiBAcGFyYW0gez9PYmplY3R9IFtvcHRpb25zXVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdGlvbnMudmlzaXRvcl1cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMubWV0YVRva2VucyA9IHRydWVdXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLmRvdHMgPSBmYWxzZV1cbiAqIEBwYXJhbSB7P0Jvb2xlYW59IFtvcHRpb25zLmluZGV4ZXMgPSBmYWxzZV1cbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICoqL1xuXG4vKipcbiAqIEl0IGNvbnZlcnRzIGFuIG9iamVjdCBpbnRvIGEgRm9ybURhdGEgb2JqZWN0XG4gKlxuICogQHBhcmFtIHtPYmplY3Q8YW55LCBhbnk+fSBvYmogLSBUaGUgb2JqZWN0IHRvIGNvbnZlcnQgdG8gZm9ybSBkYXRhLlxuICogQHBhcmFtIHtzdHJpbmd9IGZvcm1EYXRhIC0gVGhlIEZvcm1EYXRhIG9iamVjdCB0byBhcHBlbmQgdG8uXG4gKiBAcGFyYW0ge09iamVjdDxzdHJpbmcsIGFueT59IG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJuc1xuICovXG5mdW5jdGlvbiB0b0Zvcm1EYXRhKG9iaiwgZm9ybURhdGEsIG9wdGlvbnMpIHtcbiAgaWYgKCF1dGlscy5pc09iamVjdChvYmopKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndGFyZ2V0IG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgZm9ybURhdGEgPSBmb3JtRGF0YSB8fCBuZXcgKFBsYXRmb3JtRm9ybURhdGEgfHwgRm9ybURhdGEpKCk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIG9wdGlvbnMgPSB1dGlscy50b0ZsYXRPYmplY3Qob3B0aW9ucywge1xuICAgIG1ldGFUb2tlbnM6IHRydWUsXG4gICAgZG90czogZmFsc2UsXG4gICAgaW5kZXhlczogZmFsc2VcbiAgfSwgZmFsc2UsIGZ1bmN0aW9uIGRlZmluZWQob3B0aW9uLCBzb3VyY2UpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXEtbnVsbCxlcWVxZXFcbiAgICByZXR1cm4gIXV0aWxzLmlzVW5kZWZpbmVkKHNvdXJjZVtvcHRpb25dKTtcbiAgfSk7XG5cbiAgY29uc3QgbWV0YVRva2VucyA9IG9wdGlvbnMubWV0YVRva2VucztcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gIGNvbnN0IHZpc2l0b3IgPSBvcHRpb25zLnZpc2l0b3IgfHwgZGVmYXVsdFZpc2l0b3I7XG4gIGNvbnN0IGRvdHMgPSBvcHRpb25zLmRvdHM7XG4gIGNvbnN0IGluZGV4ZXMgPSBvcHRpb25zLmluZGV4ZXM7XG4gIGNvbnN0IF9CbG9iID0gb3B0aW9ucy5CbG9iIHx8IHR5cGVvZiBCbG9iICE9PSAndW5kZWZpbmVkJyAmJiBCbG9iO1xuICBjb25zdCB1c2VCbG9iID0gX0Jsb2IgJiYgdXRpbHMuaXNTcGVjQ29tcGxpYW50Rm9ybShmb3JtRGF0YSk7XG5cbiAgaWYgKCF1dGlscy5pc0Z1bmN0aW9uKHZpc2l0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmlzaXRvciBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbnZlcnRWYWx1ZSh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuICcnO1xuXG4gICAgaWYgKHV0aWxzLmlzRGF0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZS50b0lTT1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmICghdXNlQmxvYiAmJiB1dGlscy5pc0Jsb2IodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcignQmxvYiBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgYSBCdWZmZXIgaW5zdGVhZC4nKTtcbiAgICB9XG5cbiAgICBpZiAodXRpbHMuaXNBcnJheUJ1ZmZlcih2YWx1ZSkgfHwgdXRpbHMuaXNUeXBlZEFycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHVzZUJsb2IgJiYgdHlwZW9mIEJsb2IgPT09ICdmdW5jdGlvbicgPyBuZXcgQmxvYihbdmFsdWVdKSA6IEJ1ZmZlci5mcm9tKHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogRGVmYXVsdCB2aXNpdG9yLlxuICAgKlxuICAgKiBAcGFyYW0geyp9IHZhbHVlXG4gICAqIEBwYXJhbSB7U3RyaW5nfE51bWJlcn0ga2V5XG4gICAqIEBwYXJhbSB7QXJyYXk8U3RyaW5nfE51bWJlcj59IHBhdGhcbiAgICogQHRoaXMge0Zvcm1EYXRhfVxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gcmV0dXJuIHRydWUgdG8gdmlzaXQgdGhlIGVhY2ggcHJvcCBvZiB0aGUgdmFsdWUgcmVjdXJzaXZlbHlcbiAgICovXG4gIGZ1bmN0aW9uIGRlZmF1bHRWaXNpdG9yKHZhbHVlLCBrZXksIHBhdGgpIHtcbiAgICBsZXQgYXJyID0gdmFsdWU7XG5cbiAgICBpZiAodmFsdWUgJiYgIXBhdGggJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKHV0aWxzLmVuZHNXaXRoKGtleSwgJ3t9JykpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIGtleSA9IG1ldGFUb2tlbnMgPyBrZXkgOiBrZXkuc2xpY2UoMCwgLTIpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgdmFsdWUgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAodXRpbHMuaXNBcnJheSh2YWx1ZSkgJiYgaXNGbGF0QXJyYXkodmFsdWUpKSB8fFxuICAgICAgICAoKHV0aWxzLmlzRmlsZUxpc3QodmFsdWUpIHx8IHV0aWxzLmVuZHNXaXRoKGtleSwgJ1tdJykpICYmIChhcnIgPSB1dGlscy50b0FycmF5KHZhbHVlKSlcbiAgICAgICAgKSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAga2V5ID0gcmVtb3ZlQnJhY2tldHMoa2V5KTtcblxuICAgICAgICBhcnIuZm9yRWFjaChmdW5jdGlvbiBlYWNoKGVsLCBpbmRleCkge1xuICAgICAgICAgICEodXRpbHMuaXNVbmRlZmluZWQoZWwpIHx8IGVsID09PSBudWxsKSAmJiBmb3JtRGF0YS5hcHBlbmQoXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmVzdGVkLXRlcm5hcnlcbiAgICAgICAgICAgIGluZGV4ZXMgPT09IHRydWUgPyByZW5kZXJLZXkoW2tleV0sIGluZGV4LCBkb3RzKSA6IChpbmRleGVzID09PSBudWxsID8ga2V5IDoga2V5ICsgJ1tdJyksXG4gICAgICAgICAgICBjb252ZXJ0VmFsdWUoZWwpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNWaXNpdGFibGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQocmVuZGVyS2V5KHBhdGgsIGtleSwgZG90cyksIGNvbnZlcnRWYWx1ZSh2YWx1ZSkpO1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qgc3RhY2sgPSBbXTtcblxuICBjb25zdCBleHBvc2VkSGVscGVycyA9IE9iamVjdC5hc3NpZ24ocHJlZGljYXRlcywge1xuICAgIGRlZmF1bHRWaXNpdG9yLFxuICAgIGNvbnZlcnRWYWx1ZSxcbiAgICBpc1Zpc2l0YWJsZVxuICB9KTtcblxuICBmdW5jdGlvbiBidWlsZCh2YWx1ZSwgcGF0aCkge1xuICAgIGlmICh1dGlscy5pc1VuZGVmaW5lZCh2YWx1ZSkpIHJldHVybjtcblxuICAgIGlmIChzdGFjay5pbmRleE9mKHZhbHVlKSAhPT0gLTEpIHtcbiAgICAgIHRocm93IEVycm9yKCdDaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQgaW4gJyArIHBhdGguam9pbignLicpKTtcbiAgICB9XG5cbiAgICBzdGFjay5wdXNoKHZhbHVlKTtcblxuICAgIHV0aWxzLmZvckVhY2godmFsdWUsIGZ1bmN0aW9uIGVhY2goZWwsIGtleSkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gISh1dGlscy5pc1VuZGVmaW5lZChlbCkgfHwgZWwgPT09IG51bGwpICYmIHZpc2l0b3IuY2FsbChcbiAgICAgICAgZm9ybURhdGEsIGVsLCB1dGlscy5pc1N0cmluZyhrZXkpID8ga2V5LnRyaW0oKSA6IGtleSwgcGF0aCwgZXhwb3NlZEhlbHBlcnNcbiAgICAgICk7XG5cbiAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgYnVpbGQoZWwsIHBhdGggPyBwYXRoLmNvbmNhdChrZXkpIDogW2tleV0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc3RhY2sucG9wKCk7XG4gIH1cblxuICBpZiAoIXV0aWxzLmlzT2JqZWN0KG9iaikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdkYXRhIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH1cblxuICBidWlsZChvYmopO1xuXG4gIHJldHVybiBmb3JtRGF0YTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdG9Gb3JtRGF0YTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHRvRm9ybURhdGEgZnJvbSAnLi90b0Zvcm1EYXRhLmpzJztcblxuLyoqXG4gKiBJdCBlbmNvZGVzIGEgc3RyaW5nIGJ5IHJlcGxhY2luZyBhbGwgY2hhcmFjdGVycyB0aGF0IGFyZSBub3QgaW4gdGhlIHVucmVzZXJ2ZWQgc2V0IHdpdGhcbiAqIHRoZWlyIHBlcmNlbnQtZW5jb2RlZCBlcXVpdmFsZW50c1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgLSBUaGUgc3RyaW5nIHRvIGVuY29kZS5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZW5jb2RlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGVuY29kZShzdHIpIHtcbiAgY29uc3QgY2hhck1hcCA9IHtcbiAgICAnISc6ICclMjEnLFxuICAgIFwiJ1wiOiAnJTI3JyxcbiAgICAnKCc6ICclMjgnLFxuICAgICcpJzogJyUyOScsXG4gICAgJ34nOiAnJTdFJyxcbiAgICAnJTIwJzogJysnLFxuICAgICclMDAnOiAnXFx4MDAnXG4gIH07XG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoc3RyKS5yZXBsYWNlKC9bIScoKX5dfCUyMHwlMDAvZywgZnVuY3Rpb24gcmVwbGFjZXIobWF0Y2gpIHtcbiAgICByZXR1cm4gY2hhck1hcFttYXRjaF07XG4gIH0pO1xufVxuXG4vKipcbiAqIEl0IHRha2VzIGEgcGFyYW1zIG9iamVjdCBhbmQgY29udmVydHMgaXQgdG8gYSBGb3JtRGF0YSBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdDxzdHJpbmcsIGFueT59IHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIHRvIGJlIGNvbnZlcnRlZCB0byBhIEZvcm1EYXRhIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0PHN0cmluZywgYW55Pn0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIG9iamVjdCBwYXNzZWQgdG8gdGhlIEF4aW9zIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBBeGlvc1VSTFNlYXJjaFBhcmFtcyhwYXJhbXMsIG9wdGlvbnMpIHtcbiAgdGhpcy5fcGFpcnMgPSBbXTtcblxuICBwYXJhbXMgJiYgdG9Gb3JtRGF0YShwYXJhbXMsIHRoaXMsIG9wdGlvbnMpO1xufVxuXG5jb25zdCBwcm90b3R5cGUgPSBBeGlvc1VSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGU7XG5cbnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiBhcHBlbmQobmFtZSwgdmFsdWUpIHtcbiAgdGhpcy5fcGFpcnMucHVzaChbbmFtZSwgdmFsdWVdKTtcbn07XG5cbnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKGVuY29kZXIpIHtcbiAgY29uc3QgX2VuY29kZSA9IGVuY29kZXIgPyBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiBlbmNvZGVyLmNhbGwodGhpcywgdmFsdWUsIGVuY29kZSk7XG4gIH0gOiBlbmNvZGU7XG5cbiAgcmV0dXJuIHRoaXMuX3BhaXJzLm1hcChmdW5jdGlvbiBlYWNoKHBhaXIpIHtcbiAgICByZXR1cm4gX2VuY29kZShwYWlyWzBdKSArICc9JyArIF9lbmNvZGUocGFpclsxXSk7XG4gIH0sICcnKS5qb2luKCcmJyk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBeGlvc1VSTFNlYXJjaFBhcmFtcztcbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzLmpzJztcbmltcG9ydCBBeGlvc1VSTFNlYXJjaFBhcmFtcyBmcm9tICcuLi9oZWxwZXJzL0F4aW9zVVJMU2VhcmNoUGFyYW1zLmpzJztcblxuLyoqXG4gKiBJdCByZXBsYWNlcyBhbGwgaW5zdGFuY2VzIG9mIHRoZSBjaGFyYWN0ZXJzIGA6YCwgYCRgLCBgLGAsIGArYCwgYFtgLCBhbmQgYF1gIHdpdGggdGhlaXJcbiAqIFVSSSBlbmNvZGVkIGNvdW50ZXJwYXJ0c1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWwgVGhlIHZhbHVlIHRvIGJlIGVuY29kZWQuXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGVuY29kZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGVuY29kZSh2YWwpIHtcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh2YWwpLlxuICAgIHJlcGxhY2UoLyUzQS9naSwgJzonKS5cbiAgICByZXBsYWNlKC8lMjQvZywgJyQnKS5cbiAgICByZXBsYWNlKC8lMkMvZ2ksICcsJykuXG4gICAgcmVwbGFjZSgvJTIwL2csICcrJykuXG4gICAgcmVwbGFjZSgvJTVCL2dpLCAnWycpLlxuICAgIHJlcGxhY2UoLyU1RC9naSwgJ10nKTtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIFVSTCBieSBhcHBlbmRpbmcgcGFyYW1zIHRvIHRoZSBlbmRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBiYXNlIG9mIHRoZSB1cmwgKGUuZy4sIGh0dHA6Ly93d3cuZ29vZ2xlLmNvbSlcbiAqIEBwYXJhbSB7b2JqZWN0fSBbcGFyYW1zXSBUaGUgcGFyYW1zIHRvIGJlIGFwcGVuZGVkXG4gKiBAcGFyYW0gez8ob2JqZWN0fEZ1bmN0aW9uKX0gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBmb3JtYXR0ZWQgdXJsXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJ1aWxkVVJMKHVybCwgcGFyYW1zLCBvcHRpb25zKSB7XG4gIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICBpZiAoIXBhcmFtcykge1xuICAgIHJldHVybiB1cmw7XG4gIH1cbiAgXG4gIGNvbnN0IF9lbmNvZGUgPSBvcHRpb25zICYmIG9wdGlvbnMuZW5jb2RlIHx8IGVuY29kZTtcblxuICBpZiAodXRpbHMuaXNGdW5jdGlvbihvcHRpb25zKSkge1xuICAgIG9wdGlvbnMgPSB7XG4gICAgICBzZXJpYWxpemU6IG9wdGlvbnNcbiAgICB9O1xuICB9IFxuXG4gIGNvbnN0IHNlcmlhbGl6ZUZuID0gb3B0aW9ucyAmJiBvcHRpb25zLnNlcmlhbGl6ZTtcblxuICBsZXQgc2VyaWFsaXplZFBhcmFtcztcblxuICBpZiAoc2VyaWFsaXplRm4pIHtcbiAgICBzZXJpYWxpemVkUGFyYW1zID0gc2VyaWFsaXplRm4ocGFyYW1zLCBvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICBzZXJpYWxpemVkUGFyYW1zID0gdXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMocGFyYW1zKSA/XG4gICAgICBwYXJhbXMudG9TdHJpbmcoKSA6XG4gICAgICBuZXcgQXhpb3NVUkxTZWFyY2hQYXJhbXMocGFyYW1zLCBvcHRpb25zKS50b1N0cmluZyhfZW5jb2RlKTtcbiAgfVxuXG4gIGlmIChzZXJpYWxpemVkUGFyYW1zKSB7XG4gICAgY29uc3QgaGFzaG1hcmtJbmRleCA9IHVybC5pbmRleE9mKFwiI1wiKTtcblxuICAgIGlmIChoYXNobWFya0luZGV4ICE9PSAtMSkge1xuICAgICAgdXJsID0gdXJsLnNsaWNlKDAsIGhhc2htYXJrSW5kZXgpO1xuICAgIH1cbiAgICB1cmwgKz0gKHVybC5pbmRleE9mKCc/JykgPT09IC0xID8gJz8nIDogJyYnKSArIHNlcmlhbGl6ZWRQYXJhbXM7XG4gIH1cblxuICByZXR1cm4gdXJsO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi8uLi91dGlscy5qcyc7XG5cbmNsYXNzIEludGVyY2VwdG9yTWFuYWdlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaGFuZGxlcnMgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgaW50ZXJjZXB0b3IgdG8gdGhlIHN0YWNrXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bGZpbGxlZCBUaGUgZnVuY3Rpb24gdG8gaGFuZGxlIGB0aGVuYCBmb3IgYSBgUHJvbWlzZWBcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcmVqZWN0ZWQgVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBgcmVqZWN0YCBmb3IgYSBgUHJvbWlzZWBcbiAgICpcbiAgICogQHJldHVybiB7TnVtYmVyfSBBbiBJRCB1c2VkIHRvIHJlbW92ZSBpbnRlcmNlcHRvciBsYXRlclxuICAgKi9cbiAgdXNlKGZ1bGZpbGxlZCwgcmVqZWN0ZWQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLmhhbmRsZXJzLnB1c2goe1xuICAgICAgZnVsZmlsbGVkLFxuICAgICAgcmVqZWN0ZWQsXG4gICAgICBzeW5jaHJvbm91czogb3B0aW9ucyA/IG9wdGlvbnMuc3luY2hyb25vdXMgOiBmYWxzZSxcbiAgICAgIHJ1bldoZW46IG9wdGlvbnMgPyBvcHRpb25zLnJ1bldoZW4gOiBudWxsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlcnMubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gaW50ZXJjZXB0b3IgZnJvbSB0aGUgc3RhY2tcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGlkIFRoZSBJRCB0aGF0IHdhcyByZXR1cm5lZCBieSBgdXNlYFxuICAgKlxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gYHRydWVgIGlmIHRoZSBpbnRlcmNlcHRvciB3YXMgcmVtb3ZlZCwgYGZhbHNlYCBvdGhlcndpc2VcbiAgICovXG4gIGVqZWN0KGlkKSB7XG4gICAgaWYgKHRoaXMuaGFuZGxlcnNbaWRdKSB7XG4gICAgICB0aGlzLmhhbmRsZXJzW2lkXSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGFsbCBpbnRlcmNlcHRvcnMgZnJvbSB0aGUgc3RhY2tcbiAgICpcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBjbGVhcigpIHtcbiAgICBpZiAodGhpcy5oYW5kbGVycykge1xuICAgICAgdGhpcy5oYW5kbGVycyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJdGVyYXRlIG92ZXIgYWxsIHRoZSByZWdpc3RlcmVkIGludGVyY2VwdG9yc1xuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBza2lwcGluZyBvdmVyIGFueVxuICAgKiBpbnRlcmNlcHRvcnMgdGhhdCBtYXkgaGF2ZSBiZWNvbWUgYG51bGxgIGNhbGxpbmcgYGVqZWN0YC5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgZm9yIGVhY2ggaW50ZXJjZXB0b3JcbiAgICpcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBmb3JFYWNoKGZuKSB7XG4gICAgdXRpbHMuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLCBmdW5jdGlvbiBmb3JFYWNoSGFuZGxlcihoKSB7XG4gICAgICBpZiAoaCAhPT0gbnVsbCkge1xuICAgICAgICBmbihoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJbnRlcmNlcHRvck1hbmFnZXI7XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2lsZW50SlNPTlBhcnNpbmc6IHRydWUsXG4gIGZvcmNlZEpTT05QYXJzaW5nOiB0cnVlLFxuICBjbGFyaWZ5VGltZW91dEVycm9yOiBmYWxzZVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IEF4aW9zVVJMU2VhcmNoUGFyYW1zIGZyb20gJy4uLy4uLy4uL2hlbHBlcnMvQXhpb3NVUkxTZWFyY2hQYXJhbXMuanMnO1xuZXhwb3J0IGRlZmF1bHQgdHlwZW9mIFVSTFNlYXJjaFBhcmFtcyAhPT0gJ3VuZGVmaW5lZCcgPyBVUkxTZWFyY2hQYXJhbXMgOiBBeGlvc1VSTFNlYXJjaFBhcmFtcztcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGRlZmF1bHQgdHlwZW9mIEZvcm1EYXRhICE9PSAndW5kZWZpbmVkJyA/IEZvcm1EYXRhIDogbnVsbDtcbiIsIid1c2Ugc3RyaWN0J1xuXG5leHBvcnQgZGVmYXVsdCB0eXBlb2YgQmxvYiAhPT0gJ3VuZGVmaW5lZCcgPyBCbG9iIDogbnVsbFxuIiwiaW1wb3J0IFVSTFNlYXJjaFBhcmFtcyBmcm9tICcuL2NsYXNzZXMvVVJMU2VhcmNoUGFyYW1zLmpzJ1xuaW1wb3J0IEZvcm1EYXRhIGZyb20gJy4vY2xhc3Nlcy9Gb3JtRGF0YS5qcydcbmltcG9ydCBCbG9iIGZyb20gJy4vY2xhc3Nlcy9CbG9iLmpzJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlzQnJvd3NlcjogdHJ1ZSxcbiAgY2xhc3Nlczoge1xuICAgIFVSTFNlYXJjaFBhcmFtcyxcbiAgICBGb3JtRGF0YSxcbiAgICBCbG9iXG4gIH0sXG4gIHByb3RvY29sczogWydodHRwJywgJ2h0dHBzJywgJ2ZpbGUnLCAnYmxvYicsICd1cmwnLCAnZGF0YSddXG59O1xuIiwiY29uc3QgaGFzQnJvd3NlckVudiA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCc7XG5cbmNvbnN0IF9uYXZpZ2F0b3IgPSB0eXBlb2YgbmF2aWdhdG9yID09PSAnb2JqZWN0JyAmJiBuYXZpZ2F0b3IgfHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIERldGVybWluZSBpZiB3ZSdyZSBydW5uaW5nIGluIGEgc3RhbmRhcmQgYnJvd3NlciBlbnZpcm9ubWVudFxuICpcbiAqIFRoaXMgYWxsb3dzIGF4aW9zIHRvIHJ1biBpbiBhIHdlYiB3b3JrZXIsIGFuZCByZWFjdC1uYXRpdmUuXG4gKiBCb3RoIGVudmlyb25tZW50cyBzdXBwb3J0IFhNTEh0dHBSZXF1ZXN0LCBidXQgbm90IGZ1bGx5IHN0YW5kYXJkIGdsb2JhbHMuXG4gKlxuICogd2ViIHdvcmtlcnM6XG4gKiAgdHlwZW9mIHdpbmRvdyAtPiB1bmRlZmluZWRcbiAqICB0eXBlb2YgZG9jdW1lbnQgLT4gdW5kZWZpbmVkXG4gKlxuICogcmVhY3QtbmF0aXZlOlxuICogIG5hdmlnYXRvci5wcm9kdWN0IC0+ICdSZWFjdE5hdGl2ZSdcbiAqIG5hdGl2ZXNjcmlwdFxuICogIG5hdmlnYXRvci5wcm9kdWN0IC0+ICdOYXRpdmVTY3JpcHQnIG9yICdOUydcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuY29uc3QgaGFzU3RhbmRhcmRCcm93c2VyRW52ID0gaGFzQnJvd3NlckVudiAmJlxuICAoIV9uYXZpZ2F0b3IgfHwgWydSZWFjdE5hdGl2ZScsICdOYXRpdmVTY3JpcHQnLCAnTlMnXS5pbmRleE9mKF9uYXZpZ2F0b3IucHJvZHVjdCkgPCAwKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgd2UncmUgcnVubmluZyBpbiBhIHN0YW5kYXJkIGJyb3dzZXIgd2ViV29ya2VyIGVudmlyb25tZW50XG4gKlxuICogQWx0aG91Z2ggdGhlIGBpc1N0YW5kYXJkQnJvd3NlckVudmAgbWV0aG9kIGluZGljYXRlcyB0aGF0XG4gKiBgYWxsb3dzIGF4aW9zIHRvIHJ1biBpbiBhIHdlYiB3b3JrZXJgLCB0aGUgV2ViV29ya2VyIHdpbGwgc3RpbGwgYmVcbiAqIGZpbHRlcmVkIG91dCBkdWUgdG8gaXRzIGp1ZGdtZW50IHN0YW5kYXJkXG4gKiBgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJ2AuXG4gKiBUaGlzIGxlYWRzIHRvIGEgcHJvYmxlbSB3aGVuIGF4aW9zIHBvc3QgYEZvcm1EYXRhYCBpbiB3ZWJXb3JrZXJcbiAqL1xuY29uc3QgaGFzU3RhbmRhcmRCcm93c2VyV2ViV29ya2VyRW52ID0gKCgpID0+IHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUgIT09ICd1bmRlZmluZWQnICYmXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gICAgc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlICYmXG4gICAgdHlwZW9mIHNlbGYuaW1wb3J0U2NyaXB0cyA9PT0gJ2Z1bmN0aW9uJ1xuICApO1xufSkoKTtcblxuY29uc3Qgb3JpZ2luID0gaGFzQnJvd3NlckVudiAmJiB3aW5kb3cubG9jYXRpb24uaHJlZiB8fCAnaHR0cDovL2xvY2FsaG9zdCc7XG5cbmV4cG9ydCB7XG4gIGhhc0Jyb3dzZXJFbnYsXG4gIGhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudixcbiAgaGFzU3RhbmRhcmRCcm93c2VyRW52LFxuICBfbmF2aWdhdG9yIGFzIG5hdmlnYXRvcixcbiAgb3JpZ2luXG59XG4iLCJpbXBvcnQgcGxhdGZvcm0gZnJvbSAnLi9ub2RlL2luZGV4LmpzJztcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gJy4vY29tbW9uL3V0aWxzLmpzJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAuLi51dGlscyxcbiAgLi4ucGxhdGZvcm1cbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzLmpzJztcbmltcG9ydCB0b0Zvcm1EYXRhIGZyb20gJy4vdG9Gb3JtRGF0YS5qcyc7XG5pbXBvcnQgcGxhdGZvcm0gZnJvbSAnLi4vcGxhdGZvcm0vaW5kZXguanMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b1VSTEVuY29kZWRGb3JtKGRhdGEsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHRvRm9ybURhdGEoZGF0YSwgbmV3IHBsYXRmb3JtLmNsYXNzZXMuVVJMU2VhcmNoUGFyYW1zKCksIE9iamVjdC5hc3NpZ24oe1xuICAgIHZpc2l0b3I6IGZ1bmN0aW9uKHZhbHVlLCBrZXksIHBhdGgsIGhlbHBlcnMpIHtcbiAgICAgIGlmIChwbGF0Zm9ybS5pc05vZGUgJiYgdXRpbHMuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKGtleSwgdmFsdWUudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaGVscGVycy5kZWZhdWx0VmlzaXRvci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgfSwgb3B0aW9ucykpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuXG4vKipcbiAqIEl0IHRha2VzIGEgc3RyaW5nIGxpa2UgYGZvb1t4XVt5XVt6XWAgYW5kIHJldHVybnMgYW4gYXJyYXkgbGlrZSBgWydmb28nLCAneCcsICd5JywgJ3onXVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzdHJpbmdzLlxuICovXG5mdW5jdGlvbiBwYXJzZVByb3BQYXRoKG5hbWUpIHtcbiAgLy8gZm9vW3hdW3ldW3pdXG4gIC8vIGZvby54LnkuelxuICAvLyBmb28teC15LXpcbiAgLy8gZm9vIHggeSB6XG4gIHJldHVybiB1dGlscy5tYXRjaEFsbCgvXFx3K3xcXFsoXFx3KildL2csIG5hbWUpLm1hcChtYXRjaCA9PiB7XG4gICAgcmV0dXJuIG1hdGNoWzBdID09PSAnW10nID8gJycgOiBtYXRjaFsxXSB8fCBtYXRjaFswXTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ29udmVydCBhbiBhcnJheSB0byBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtBcnJheTxhbnk+fSBhcnIgLSBUaGUgYXJyYXkgdG8gY29udmVydCB0byBhbiBvYmplY3QuXG4gKlxuICogQHJldHVybnMgQW4gb2JqZWN0IHdpdGggdGhlIHNhbWUga2V5cyBhbmQgdmFsdWVzIGFzIHRoZSBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlUb09iamVjdChhcnIpIHtcbiAgY29uc3Qgb2JqID0ge307XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhhcnIpO1xuICBsZXQgaTtcbiAgY29uc3QgbGVuID0ga2V5cy5sZW5ndGg7XG4gIGxldCBrZXk7XG4gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGtleSA9IGtleXNbaV07XG4gICAgb2JqW2tleV0gPSBhcnJba2V5XTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG4vKipcbiAqIEl0IHRha2VzIGEgRm9ybURhdGEgb2JqZWN0IGFuZCByZXR1cm5zIGEgSmF2YVNjcmlwdCBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZm9ybURhdGEgVGhlIEZvcm1EYXRhIG9iamVjdCB0byBjb252ZXJ0IHRvIEpTT04uXG4gKlxuICogQHJldHVybnMge09iamVjdDxzdHJpbmcsIGFueT4gfCBudWxsfSBUaGUgY29udmVydGVkIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gZm9ybURhdGFUb0pTT04oZm9ybURhdGEpIHtcbiAgZnVuY3Rpb24gYnVpbGRQYXRoKHBhdGgsIHZhbHVlLCB0YXJnZXQsIGluZGV4KSB7XG4gICAgbGV0IG5hbWUgPSBwYXRoW2luZGV4KytdO1xuXG4gICAgaWYgKG5hbWUgPT09ICdfX3Byb3RvX18nKSByZXR1cm4gdHJ1ZTtcblxuICAgIGNvbnN0IGlzTnVtZXJpY0tleSA9IE51bWJlci5pc0Zpbml0ZSgrbmFtZSk7XG4gICAgY29uc3QgaXNMYXN0ID0gaW5kZXggPj0gcGF0aC5sZW5ndGg7XG4gICAgbmFtZSA9ICFuYW1lICYmIHV0aWxzLmlzQXJyYXkodGFyZ2V0KSA/IHRhcmdldC5sZW5ndGggOiBuYW1lO1xuXG4gICAgaWYgKGlzTGFzdCkge1xuICAgICAgaWYgKHV0aWxzLmhhc093blByb3AodGFyZ2V0LCBuYW1lKSkge1xuICAgICAgICB0YXJnZXRbbmFtZV0gPSBbdGFyZ2V0W25hbWVdLCB2YWx1ZV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXRbbmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICFpc051bWVyaWNLZXk7XG4gICAgfVxuXG4gICAgaWYgKCF0YXJnZXRbbmFtZV0gfHwgIXV0aWxzLmlzT2JqZWN0KHRhcmdldFtuYW1lXSkpIHtcbiAgICAgIHRhcmdldFtuYW1lXSA9IFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGJ1aWxkUGF0aChwYXRoLCB2YWx1ZSwgdGFyZ2V0W25hbWVdLCBpbmRleCk7XG5cbiAgICBpZiAocmVzdWx0ICYmIHV0aWxzLmlzQXJyYXkodGFyZ2V0W25hbWVdKSkge1xuICAgICAgdGFyZ2V0W25hbWVdID0gYXJyYXlUb09iamVjdCh0YXJnZXRbbmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiAhaXNOdW1lcmljS2V5O1xuICB9XG5cbiAgaWYgKHV0aWxzLmlzRm9ybURhdGEoZm9ybURhdGEpICYmIHV0aWxzLmlzRnVuY3Rpb24oZm9ybURhdGEuZW50cmllcykpIHtcbiAgICBjb25zdCBvYmogPSB7fTtcblxuICAgIHV0aWxzLmZvckVhY2hFbnRyeShmb3JtRGF0YSwgKG5hbWUsIHZhbHVlKSA9PiB7XG4gICAgICBidWlsZFBhdGgocGFyc2VQcm9wUGF0aChuYW1lKSwgdmFsdWUsIG9iaiwgMCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZvcm1EYXRhVG9KU09OO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSAnLi4vY29yZS9BeGlvc0Vycm9yLmpzJztcbmltcG9ydCB0cmFuc2l0aW9uYWxEZWZhdWx0cyBmcm9tICcuL3RyYW5zaXRpb25hbC5qcyc7XG5pbXBvcnQgdG9Gb3JtRGF0YSBmcm9tICcuLi9oZWxwZXJzL3RvRm9ybURhdGEuanMnO1xuaW1wb3J0IHRvVVJMRW5jb2RlZEZvcm0gZnJvbSAnLi4vaGVscGVycy90b1VSTEVuY29kZWRGb3JtLmpzJztcbmltcG9ydCBwbGF0Zm9ybSBmcm9tICcuLi9wbGF0Zm9ybS9pbmRleC5qcyc7XG5pbXBvcnQgZm9ybURhdGFUb0pTT04gZnJvbSAnLi4vaGVscGVycy9mb3JtRGF0YVRvSlNPTi5qcyc7XG5cbi8qKlxuICogSXQgdGFrZXMgYSBzdHJpbmcsIHRyaWVzIHRvIHBhcnNlIGl0LCBhbmQgaWYgaXQgZmFpbHMsIGl0IHJldHVybnMgdGhlIHN0cmluZ2lmaWVkIHZlcnNpb25cbiAqIG9mIHRoZSBpbnB1dFxuICpcbiAqIEBwYXJhbSB7YW55fSByYXdWYWx1ZSAtIFRoZSB2YWx1ZSB0byBiZSBzdHJpbmdpZmllZC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcnNlciAtIEEgZnVuY3Rpb24gdGhhdCBwYXJzZXMgYSBzdHJpbmcgaW50byBhIEphdmFTY3JpcHQgb2JqZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZW5jb2RlciAtIEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHZhbHVlIGFuZCByZXR1cm5zIGEgc3RyaW5nLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgc3RyaW5naWZpZWQgdmVyc2lvbiBvZiB0aGUgcmF3VmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHN0cmluZ2lmeVNhZmVseShyYXdWYWx1ZSwgcGFyc2VyLCBlbmNvZGVyKSB7XG4gIGlmICh1dGlscy5pc1N0cmluZyhyYXdWYWx1ZSkpIHtcbiAgICB0cnkge1xuICAgICAgKHBhcnNlciB8fCBKU09OLnBhcnNlKShyYXdWYWx1ZSk7XG4gICAgICByZXR1cm4gdXRpbHMudHJpbShyYXdWYWx1ZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUubmFtZSAhPT0gJ1N5bnRheEVycm9yJykge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAoZW5jb2RlciB8fCBKU09OLnN0cmluZ2lmeSkocmF3VmFsdWUpO1xufVxuXG5jb25zdCBkZWZhdWx0cyA9IHtcblxuICB0cmFuc2l0aW9uYWw6IHRyYW5zaXRpb25hbERlZmF1bHRzLFxuXG4gIGFkYXB0ZXI6IFsneGhyJywgJ2h0dHAnLCAnZmV0Y2gnXSxcblxuICB0cmFuc2Zvcm1SZXF1ZXN0OiBbZnVuY3Rpb24gdHJhbnNmb3JtUmVxdWVzdChkYXRhLCBoZWFkZXJzKSB7XG4gICAgY29uc3QgY29udGVudFR5cGUgPSBoZWFkZXJzLmdldENvbnRlbnRUeXBlKCkgfHwgJyc7XG4gICAgY29uc3QgaGFzSlNPTkNvbnRlbnRUeXBlID0gY29udGVudFR5cGUuaW5kZXhPZignYXBwbGljYXRpb24vanNvbicpID4gLTE7XG4gICAgY29uc3QgaXNPYmplY3RQYXlsb2FkID0gdXRpbHMuaXNPYmplY3QoZGF0YSk7XG5cbiAgICBpZiAoaXNPYmplY3RQYXlsb2FkICYmIHV0aWxzLmlzSFRNTEZvcm0oZGF0YSkpIHtcbiAgICAgIGRhdGEgPSBuZXcgRm9ybURhdGEoZGF0YSk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNGb3JtRGF0YSA9IHV0aWxzLmlzRm9ybURhdGEoZGF0YSk7XG5cbiAgICBpZiAoaXNGb3JtRGF0YSkge1xuICAgICAgcmV0dXJuIGhhc0pTT05Db250ZW50VHlwZSA/IEpTT04uc3RyaW5naWZ5KGZvcm1EYXRhVG9KU09OKGRhdGEpKSA6IGRhdGE7XG4gICAgfVxuXG4gICAgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXIoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzQnVmZmVyKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc1N0cmVhbShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNGaWxlKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0Jsb2IoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzUmVhZGFibGVTdHJlYW0oZGF0YSlcbiAgICApIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBpZiAodXRpbHMuaXNBcnJheUJ1ZmZlclZpZXcoZGF0YSkpIHtcbiAgICAgIHJldHVybiBkYXRhLmJ1ZmZlcjtcbiAgICB9XG4gICAgaWYgKHV0aWxzLmlzVVJMU2VhcmNoUGFyYW1zKGRhdGEpKSB7XG4gICAgICBoZWFkZXJzLnNldENvbnRlbnRUeXBlKCdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCcsIGZhbHNlKTtcbiAgICAgIHJldHVybiBkYXRhLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgbGV0IGlzRmlsZUxpc3Q7XG5cbiAgICBpZiAoaXNPYmplY3RQYXlsb2FkKSB7XG4gICAgICBpZiAoY29udGVudFR5cGUuaW5kZXhPZignYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJykgPiAtMSkge1xuICAgICAgICByZXR1cm4gdG9VUkxFbmNvZGVkRm9ybShkYXRhLCB0aGlzLmZvcm1TZXJpYWxpemVyKS50b1N0cmluZygpO1xuICAgICAgfVxuXG4gICAgICBpZiAoKGlzRmlsZUxpc3QgPSB1dGlscy5pc0ZpbGVMaXN0KGRhdGEpKSB8fCBjb250ZW50VHlwZS5pbmRleE9mKCdtdWx0aXBhcnQvZm9ybS1kYXRhJykgPiAtMSkge1xuICAgICAgICBjb25zdCBfRm9ybURhdGEgPSB0aGlzLmVudiAmJiB0aGlzLmVudi5Gb3JtRGF0YTtcblxuICAgICAgICByZXR1cm4gdG9Gb3JtRGF0YShcbiAgICAgICAgICBpc0ZpbGVMaXN0ID8geydmaWxlc1tdJzogZGF0YX0gOiBkYXRhLFxuICAgICAgICAgIF9Gb3JtRGF0YSAmJiBuZXcgX0Zvcm1EYXRhKCksXG4gICAgICAgICAgdGhpcy5mb3JtU2VyaWFsaXplclxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpc09iamVjdFBheWxvYWQgfHwgaGFzSlNPTkNvbnRlbnRUeXBlICkge1xuICAgICAgaGVhZGVycy5zZXRDb250ZW50VHlwZSgnYXBwbGljYXRpb24vanNvbicsIGZhbHNlKTtcbiAgICAgIHJldHVybiBzdHJpbmdpZnlTYWZlbHkoZGF0YSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1dLFxuXG4gIHRyYW5zZm9ybVJlc3BvbnNlOiBbZnVuY3Rpb24gdHJhbnNmb3JtUmVzcG9uc2UoZGF0YSkge1xuICAgIGNvbnN0IHRyYW5zaXRpb25hbCA9IHRoaXMudHJhbnNpdGlvbmFsIHx8IGRlZmF1bHRzLnRyYW5zaXRpb25hbDtcbiAgICBjb25zdCBmb3JjZWRKU09OUGFyc2luZyA9IHRyYW5zaXRpb25hbCAmJiB0cmFuc2l0aW9uYWwuZm9yY2VkSlNPTlBhcnNpbmc7XG4gICAgY29uc3QgSlNPTlJlcXVlc3RlZCA9IHRoaXMucmVzcG9uc2VUeXBlID09PSAnanNvbic7XG5cbiAgICBpZiAodXRpbHMuaXNSZXNwb25zZShkYXRhKSB8fCB1dGlscy5pc1JlYWRhYmxlU3RyZWFtKGRhdGEpKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YSAmJiB1dGlscy5pc1N0cmluZyhkYXRhKSAmJiAoKGZvcmNlZEpTT05QYXJzaW5nICYmICF0aGlzLnJlc3BvbnNlVHlwZSkgfHwgSlNPTlJlcXVlc3RlZCkpIHtcbiAgICAgIGNvbnN0IHNpbGVudEpTT05QYXJzaW5nID0gdHJhbnNpdGlvbmFsICYmIHRyYW5zaXRpb25hbC5zaWxlbnRKU09OUGFyc2luZztcbiAgICAgIGNvbnN0IHN0cmljdEpTT05QYXJzaW5nID0gIXNpbGVudEpTT05QYXJzaW5nICYmIEpTT05SZXF1ZXN0ZWQ7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoc3RyaWN0SlNPTlBhcnNpbmcpIHtcbiAgICAgICAgICBpZiAoZS5uYW1lID09PSAnU3ludGF4RXJyb3InKSB7XG4gICAgICAgICAgICB0aHJvdyBBeGlvc0Vycm9yLmZyb20oZSwgQXhpb3NFcnJvci5FUlJfQkFEX1JFU1BPTlNFLCB0aGlzLCBudWxsLCB0aGlzLnJlc3BvbnNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9XSxcblxuICAvKipcbiAgICogQSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyB0byBhYm9ydCBhIHJlcXVlc3QuIElmIHNldCB0byAwIChkZWZhdWx0KSBhXG4gICAqIHRpbWVvdXQgaXMgbm90IGNyZWF0ZWQuXG4gICAqL1xuICB0aW1lb3V0OiAwLFxuXG4gIHhzcmZDb29raWVOYW1lOiAnWFNSRi1UT0tFTicsXG4gIHhzcmZIZWFkZXJOYW1lOiAnWC1YU1JGLVRPS0VOJyxcblxuICBtYXhDb250ZW50TGVuZ3RoOiAtMSxcbiAgbWF4Qm9keUxlbmd0aDogLTEsXG5cbiAgZW52OiB7XG4gICAgRm9ybURhdGE6IHBsYXRmb3JtLmNsYXNzZXMuRm9ybURhdGEsXG4gICAgQmxvYjogcGxhdGZvcm0uY2xhc3Nlcy5CbG9iXG4gIH0sXG5cbiAgdmFsaWRhdGVTdGF0dXM6IGZ1bmN0aW9uIHZhbGlkYXRlU3RhdHVzKHN0YXR1cykge1xuICAgIHJldHVybiBzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMDtcbiAgfSxcblxuICBoZWFkZXJzOiB7XG4gICAgY29tbW9uOiB7XG4gICAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKicsXG4gICAgICAnQ29udGVudC1UeXBlJzogdW5kZWZpbmVkXG4gICAgfVxuICB9XG59O1xuXG51dGlscy5mb3JFYWNoKFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJywgJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJ10sIChtZXRob2QpID0+IHtcbiAgZGVmYXVsdHMuaGVhZGVyc1ttZXRob2RdID0ge307XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgZGVmYXVsdHM7XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLy4uL3V0aWxzLmpzJztcblxuLy8gUmF3QXhpb3NIZWFkZXJzIHdob3NlIGR1cGxpY2F0ZXMgYXJlIGlnbm9yZWQgYnkgbm9kZVxuLy8gYy5mLiBodHRwczovL25vZGVqcy5vcmcvYXBpL2h0dHAuaHRtbCNodHRwX21lc3NhZ2VfaGVhZGVyc1xuY29uc3QgaWdub3JlRHVwbGljYXRlT2YgPSB1dGlscy50b09iamVjdFNldChbXG4gICdhZ2UnLCAnYXV0aG9yaXphdGlvbicsICdjb250ZW50LWxlbmd0aCcsICdjb250ZW50LXR5cGUnLCAnZXRhZycsXG4gICdleHBpcmVzJywgJ2Zyb20nLCAnaG9zdCcsICdpZi1tb2RpZmllZC1zaW5jZScsICdpZi11bm1vZGlmaWVkLXNpbmNlJyxcbiAgJ2xhc3QtbW9kaWZpZWQnLCAnbG9jYXRpb24nLCAnbWF4LWZvcndhcmRzJywgJ3Byb3h5LWF1dGhvcml6YXRpb24nLFxuICAncmVmZXJlcicsICdyZXRyeS1hZnRlcicsICd1c2VyLWFnZW50J1xuXSk7XG5cbi8qKlxuICogUGFyc2UgaGVhZGVycyBpbnRvIGFuIG9iamVjdFxuICpcbiAqIGBgYFxuICogRGF0ZTogV2VkLCAyNyBBdWcgMjAxNCAwODo1ODo0OSBHTVRcbiAqIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvblxuICogQ29ubmVjdGlvbjoga2VlcC1hbGl2ZVxuICogVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSByYXdIZWFkZXJzIEhlYWRlcnMgbmVlZGluZyB0byBiZSBwYXJzZWRcbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBIZWFkZXJzIHBhcnNlZCBpbnRvIGFuIG9iamVjdFxuICovXG5leHBvcnQgZGVmYXVsdCByYXdIZWFkZXJzID0+IHtcbiAgY29uc3QgcGFyc2VkID0ge307XG4gIGxldCBrZXk7XG4gIGxldCB2YWw7XG4gIGxldCBpO1xuXG4gIHJhd0hlYWRlcnMgJiYgcmF3SGVhZGVycy5zcGxpdCgnXFxuJykuZm9yRWFjaChmdW5jdGlvbiBwYXJzZXIobGluZSkge1xuICAgIGkgPSBsaW5lLmluZGV4T2YoJzonKTtcbiAgICBrZXkgPSBsaW5lLnN1YnN0cmluZygwLCBpKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICB2YWwgPSBsaW5lLnN1YnN0cmluZyhpICsgMSkudHJpbSgpO1xuXG4gICAgaWYgKCFrZXkgfHwgKHBhcnNlZFtrZXldICYmIGlnbm9yZUR1cGxpY2F0ZU9mW2tleV0pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGtleSA9PT0gJ3NldC1jb29raWUnKSB7XG4gICAgICBpZiAocGFyc2VkW2tleV0pIHtcbiAgICAgICAgcGFyc2VkW2tleV0ucHVzaCh2YWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyc2VkW2tleV0gPSBbdmFsXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGFyc2VkW2tleV0gPSBwYXJzZWRba2V5XSA/IHBhcnNlZFtrZXldICsgJywgJyArIHZhbCA6IHZhbDtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBwYXJzZWQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuaW1wb3J0IHBhcnNlSGVhZGVycyBmcm9tICcuLi9oZWxwZXJzL3BhcnNlSGVhZGVycy5qcyc7XG5cbmNvbnN0ICRpbnRlcm5hbHMgPSBTeW1ib2woJ2ludGVybmFscycpO1xuXG5mdW5jdGlvbiBub3JtYWxpemVIZWFkZXIoaGVhZGVyKSB7XG4gIHJldHVybiBoZWFkZXIgJiYgU3RyaW5nKGhlYWRlcikudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PT0gZmFsc2UgfHwgdmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiB1dGlscy5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLm1hcChub3JtYWxpemVWYWx1ZSkgOiBTdHJpbmcodmFsdWUpO1xufVxuXG5mdW5jdGlvbiBwYXJzZVRva2VucyhzdHIpIHtcbiAgY29uc3QgdG9rZW5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgY29uc3QgdG9rZW5zUkUgPSAvKFteXFxzLDs9XSspXFxzKig/Oj1cXHMqKFteLDtdKykpPy9nO1xuICBsZXQgbWF0Y2g7XG5cbiAgd2hpbGUgKChtYXRjaCA9IHRva2Vuc1JFLmV4ZWMoc3RyKSkpIHtcbiAgICB0b2tlbnNbbWF0Y2hbMV1dID0gbWF0Y2hbMl07XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufVxuXG5jb25zdCBpc1ZhbGlkSGVhZGVyTmFtZSA9IChzdHIpID0+IC9eWy1fYS16QS1aMC05XmB8fiwhIyQlJicqKy5dKyQvLnRlc3Qoc3RyLnRyaW0oKSk7XG5cbmZ1bmN0aW9uIG1hdGNoSGVhZGVyVmFsdWUoY29udGV4dCwgdmFsdWUsIGhlYWRlciwgZmlsdGVyLCBpc0hlYWRlck5hbWVGaWx0ZXIpIHtcbiAgaWYgKHV0aWxzLmlzRnVuY3Rpb24oZmlsdGVyKSkge1xuICAgIHJldHVybiBmaWx0ZXIuY2FsbCh0aGlzLCB2YWx1ZSwgaGVhZGVyKTtcbiAgfVxuXG4gIGlmIChpc0hlYWRlck5hbWVGaWx0ZXIpIHtcbiAgICB2YWx1ZSA9IGhlYWRlcjtcbiAgfVxuXG4gIGlmICghdXRpbHMuaXNTdHJpbmcodmFsdWUpKSByZXR1cm47XG5cbiAgaWYgKHV0aWxzLmlzU3RyaW5nKGZpbHRlcikpIHtcbiAgICByZXR1cm4gdmFsdWUuaW5kZXhPZihmaWx0ZXIpICE9PSAtMTtcbiAgfVxuXG4gIGlmICh1dGlscy5pc1JlZ0V4cChmaWx0ZXIpKSB7XG4gICAgcmV0dXJuIGZpbHRlci50ZXN0KHZhbHVlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JtYXRIZWFkZXIoaGVhZGVyKSB7XG4gIHJldHVybiBoZWFkZXIudHJpbSgpXG4gICAgLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvKFthLXpcXGRdKShcXHcqKS9nLCAodywgY2hhciwgc3RyKSA9PiB7XG4gICAgICByZXR1cm4gY2hhci50b1VwcGVyQ2FzZSgpICsgc3RyO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBidWlsZEFjY2Vzc29ycyhvYmosIGhlYWRlcikge1xuICBjb25zdCBhY2Nlc3Nvck5hbWUgPSB1dGlscy50b0NhbWVsQ2FzZSgnICcgKyBoZWFkZXIpO1xuXG4gIFsnZ2V0JywgJ3NldCcsICdoYXMnXS5mb3JFYWNoKG1ldGhvZE5hbWUgPT4ge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIG1ldGhvZE5hbWUgKyBhY2Nlc3Nvck5hbWUsIHtcbiAgICAgIHZhbHVlOiBmdW5jdGlvbihhcmcxLCBhcmcyLCBhcmczKSB7XG4gICAgICAgIHJldHVybiB0aGlzW21ldGhvZE5hbWVdLmNhbGwodGhpcywgaGVhZGVyLCBhcmcxLCBhcmcyLCBhcmczKTtcbiAgICAgIH0sXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgfSk7XG59XG5cbmNsYXNzIEF4aW9zSGVhZGVycyB7XG4gIGNvbnN0cnVjdG9yKGhlYWRlcnMpIHtcbiAgICBoZWFkZXJzICYmIHRoaXMuc2V0KGhlYWRlcnMpO1xuICB9XG5cbiAgc2V0KGhlYWRlciwgdmFsdWVPclJld3JpdGUsIHJld3JpdGUpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgIGZ1bmN0aW9uIHNldEhlYWRlcihfdmFsdWUsIF9oZWFkZXIsIF9yZXdyaXRlKSB7XG4gICAgICBjb25zdCBsSGVhZGVyID0gbm9ybWFsaXplSGVhZGVyKF9oZWFkZXIpO1xuXG4gICAgICBpZiAoIWxIZWFkZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdoZWFkZXIgbmFtZSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBrZXkgPSB1dGlscy5maW5kS2V5KHNlbGYsIGxIZWFkZXIpO1xuXG4gICAgICBpZigha2V5IHx8IHNlbGZba2V5XSA9PT0gdW5kZWZpbmVkIHx8IF9yZXdyaXRlID09PSB0cnVlIHx8IChfcmV3cml0ZSA9PT0gdW5kZWZpbmVkICYmIHNlbGZba2V5XSAhPT0gZmFsc2UpKSB7XG4gICAgICAgIHNlbGZba2V5IHx8IF9oZWFkZXJdID0gbm9ybWFsaXplVmFsdWUoX3ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzZXRIZWFkZXJzID0gKGhlYWRlcnMsIF9yZXdyaXRlKSA9PlxuICAgICAgdXRpbHMuZm9yRWFjaChoZWFkZXJzLCAoX3ZhbHVlLCBfaGVhZGVyKSA9PiBzZXRIZWFkZXIoX3ZhbHVlLCBfaGVhZGVyLCBfcmV3cml0ZSkpO1xuXG4gICAgaWYgKHV0aWxzLmlzUGxhaW5PYmplY3QoaGVhZGVyKSB8fCBoZWFkZXIgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yKSB7XG4gICAgICBzZXRIZWFkZXJzKGhlYWRlciwgdmFsdWVPclJld3JpdGUpXG4gICAgfSBlbHNlIGlmKHV0aWxzLmlzU3RyaW5nKGhlYWRlcikgJiYgKGhlYWRlciA9IGhlYWRlci50cmltKCkpICYmICFpc1ZhbGlkSGVhZGVyTmFtZShoZWFkZXIpKSB7XG4gICAgICBzZXRIZWFkZXJzKHBhcnNlSGVhZGVycyhoZWFkZXIpLCB2YWx1ZU9yUmV3cml0ZSk7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc0hlYWRlcnMoaGVhZGVyKSkge1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgaGVhZGVyLmVudHJpZXMoKSkge1xuICAgICAgICBzZXRIZWFkZXIodmFsdWUsIGtleSwgcmV3cml0ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGhlYWRlciAhPSBudWxsICYmIHNldEhlYWRlcih2YWx1ZU9yUmV3cml0ZSwgaGVhZGVyLCByZXdyaXRlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldChoZWFkZXIsIHBhcnNlcikge1xuICAgIGhlYWRlciA9IG5vcm1hbGl6ZUhlYWRlcihoZWFkZXIpO1xuXG4gICAgaWYgKGhlYWRlcikge1xuICAgICAgY29uc3Qga2V5ID0gdXRpbHMuZmluZEtleSh0aGlzLCBoZWFkZXIpO1xuXG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpc1trZXldO1xuXG4gICAgICAgIGlmICghcGFyc2VyKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhcnNlciA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHJldHVybiBwYXJzZVRva2Vucyh2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXRpbHMuaXNGdW5jdGlvbihwYXJzZXIpKSB7XG4gICAgICAgICAgcmV0dXJuIHBhcnNlci5jYWxsKHRoaXMsIHZhbHVlLCBrZXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHV0aWxzLmlzUmVnRXhwKHBhcnNlcikpIHtcbiAgICAgICAgICByZXR1cm4gcGFyc2VyLmV4ZWModmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncGFyc2VyIG11c3QgYmUgYm9vbGVhbnxyZWdleHB8ZnVuY3Rpb24nKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYXMoaGVhZGVyLCBtYXRjaGVyKSB7XG4gICAgaGVhZGVyID0gbm9ybWFsaXplSGVhZGVyKGhlYWRlcik7XG5cbiAgICBpZiAoaGVhZGVyKSB7XG4gICAgICBjb25zdCBrZXkgPSB1dGlscy5maW5kS2V5KHRoaXMsIGhlYWRlcik7XG5cbiAgICAgIHJldHVybiAhIShrZXkgJiYgdGhpc1trZXldICE9PSB1bmRlZmluZWQgJiYgKCFtYXRjaGVyIHx8IG1hdGNoSGVhZGVyVmFsdWUodGhpcywgdGhpc1trZXldLCBrZXksIG1hdGNoZXIpKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZGVsZXRlKGhlYWRlciwgbWF0Y2hlcikge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGxldCBkZWxldGVkID0gZmFsc2U7XG5cbiAgICBmdW5jdGlvbiBkZWxldGVIZWFkZXIoX2hlYWRlcikge1xuICAgICAgX2hlYWRlciA9IG5vcm1hbGl6ZUhlYWRlcihfaGVhZGVyKTtcblxuICAgICAgaWYgKF9oZWFkZXIpIHtcbiAgICAgICAgY29uc3Qga2V5ID0gdXRpbHMuZmluZEtleShzZWxmLCBfaGVhZGVyKTtcblxuICAgICAgICBpZiAoa2V5ICYmICghbWF0Y2hlciB8fCBtYXRjaEhlYWRlclZhbHVlKHNlbGYsIHNlbGZba2V5XSwga2V5LCBtYXRjaGVyKSkpIHtcbiAgICAgICAgICBkZWxldGUgc2VsZltrZXldO1xuXG4gICAgICAgICAgZGVsZXRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodXRpbHMuaXNBcnJheShoZWFkZXIpKSB7XG4gICAgICBoZWFkZXIuZm9yRWFjaChkZWxldGVIZWFkZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGVIZWFkZXIoaGVhZGVyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVsZXRlZDtcbiAgfVxuXG4gIGNsZWFyKG1hdGNoZXIpIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcyk7XG4gICAgbGV0IGkgPSBrZXlzLmxlbmd0aDtcbiAgICBsZXQgZGVsZXRlZCA9IGZhbHNlO1xuXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXTtcbiAgICAgIGlmKCFtYXRjaGVyIHx8IG1hdGNoSGVhZGVyVmFsdWUodGhpcywgdGhpc1trZXldLCBrZXksIG1hdGNoZXIsIHRydWUpKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzW2tleV07XG4gICAgICAgIGRlbGV0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkZWxldGVkO1xuICB9XG5cbiAgbm9ybWFsaXplKGZvcm1hdCkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbnN0IGhlYWRlcnMgPSB7fTtcblxuICAgIHV0aWxzLmZvckVhY2godGhpcywgKHZhbHVlLCBoZWFkZXIpID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IHV0aWxzLmZpbmRLZXkoaGVhZGVycywgaGVhZGVyKTtcblxuICAgICAgaWYgKGtleSkge1xuICAgICAgICBzZWxmW2tleV0gPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGRlbGV0ZSBzZWxmW2hlYWRlcl07XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IGZvcm1hdCA/IGZvcm1hdEhlYWRlcihoZWFkZXIpIDogU3RyaW5nKGhlYWRlcikudHJpbSgpO1xuXG4gICAgICBpZiAobm9ybWFsaXplZCAhPT0gaGVhZGVyKSB7XG4gICAgICAgIGRlbGV0ZSBzZWxmW2hlYWRlcl07XG4gICAgICB9XG5cbiAgICAgIHNlbGZbbm9ybWFsaXplZF0gPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgIGhlYWRlcnNbbm9ybWFsaXplZF0gPSB0cnVlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjb25jYXQoLi4udGFyZ2V0cykge1xuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLmNvbmNhdCh0aGlzLCAuLi50YXJnZXRzKTtcbiAgfVxuXG4gIHRvSlNPTihhc1N0cmluZ3MpIHtcbiAgICBjb25zdCBvYmogPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgdXRpbHMuZm9yRWFjaCh0aGlzLCAodmFsdWUsIGhlYWRlcikgPT4ge1xuICAgICAgdmFsdWUgIT0gbnVsbCAmJiB2YWx1ZSAhPT0gZmFsc2UgJiYgKG9ialtoZWFkZXJdID0gYXNTdHJpbmdzICYmIHV0aWxzLmlzQXJyYXkodmFsdWUpID8gdmFsdWUuam9pbignLCAnKSA6IHZhbHVlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBbU3ltYm9sLml0ZXJhdG9yXSgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSlbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMudG9KU09OKCkpLm1hcCgoW2hlYWRlciwgdmFsdWVdKSA9PiBoZWFkZXIgKyAnOiAnICsgdmFsdWUpLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkge1xuICAgIHJldHVybiAnQXhpb3NIZWFkZXJzJztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tKHRoaW5nKSB7XG4gICAgcmV0dXJuIHRoaW5nIGluc3RhbmNlb2YgdGhpcyA/IHRoaW5nIDogbmV3IHRoaXModGhpbmcpO1xuICB9XG5cbiAgc3RhdGljIGNvbmNhdChmaXJzdCwgLi4udGFyZ2V0cykge1xuICAgIGNvbnN0IGNvbXB1dGVkID0gbmV3IHRoaXMoZmlyc3QpO1xuXG4gICAgdGFyZ2V0cy5mb3JFYWNoKCh0YXJnZXQpID0+IGNvbXB1dGVkLnNldCh0YXJnZXQpKTtcblxuICAgIHJldHVybiBjb21wdXRlZDtcbiAgfVxuXG4gIHN0YXRpYyBhY2Nlc3NvcihoZWFkZXIpIHtcbiAgICBjb25zdCBpbnRlcm5hbHMgPSB0aGlzWyRpbnRlcm5hbHNdID0gKHRoaXNbJGludGVybmFsc10gPSB7XG4gICAgICBhY2Nlc3NvcnM6IHt9XG4gICAgfSk7XG5cbiAgICBjb25zdCBhY2Nlc3NvcnMgPSBpbnRlcm5hbHMuYWNjZXNzb3JzO1xuICAgIGNvbnN0IHByb3RvdHlwZSA9IHRoaXMucHJvdG90eXBlO1xuXG4gICAgZnVuY3Rpb24gZGVmaW5lQWNjZXNzb3IoX2hlYWRlcikge1xuICAgICAgY29uc3QgbEhlYWRlciA9IG5vcm1hbGl6ZUhlYWRlcihfaGVhZGVyKTtcblxuICAgICAgaWYgKCFhY2Nlc3NvcnNbbEhlYWRlcl0pIHtcbiAgICAgICAgYnVpbGRBY2Nlc3NvcnMocHJvdG90eXBlLCBfaGVhZGVyKTtcbiAgICAgICAgYWNjZXNzb3JzW2xIZWFkZXJdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB1dGlscy5pc0FycmF5KGhlYWRlcikgPyBoZWFkZXIuZm9yRWFjaChkZWZpbmVBY2Nlc3NvcikgOiBkZWZpbmVBY2Nlc3NvcihoZWFkZXIpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuQXhpb3NIZWFkZXJzLmFjY2Vzc29yKFsnQ29udGVudC1UeXBlJywgJ0NvbnRlbnQtTGVuZ3RoJywgJ0FjY2VwdCcsICdBY2NlcHQtRW5jb2RpbmcnLCAnVXNlci1BZ2VudCcsICdBdXRob3JpemF0aW9uJ10pO1xuXG4vLyByZXNlcnZlZCBuYW1lcyBob3RmaXhcbnV0aWxzLnJlZHVjZURlc2NyaXB0b3JzKEF4aW9zSGVhZGVycy5wcm90b3R5cGUsICh7dmFsdWV9LCBrZXkpID0+IHtcbiAgbGV0IG1hcHBlZCA9IGtleVswXS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpOyAvLyBtYXAgYHNldGAgPT4gYFNldGBcbiAgcmV0dXJuIHtcbiAgICBnZXQ6ICgpID0+IHZhbHVlLFxuICAgIHNldChoZWFkZXJWYWx1ZSkge1xuICAgICAgdGhpc1ttYXBwZWRdID0gaGVhZGVyVmFsdWU7XG4gICAgfVxuICB9XG59KTtcblxudXRpbHMuZnJlZXplTWV0aG9kcyhBeGlvc0hlYWRlcnMpO1xuXG5leHBvcnQgZGVmYXVsdCBBeGlvc0hlYWRlcnM7XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLy4uL3V0aWxzLmpzJztcbmltcG9ydCBkZWZhdWx0cyBmcm9tICcuLi9kZWZhdWx0cy9pbmRleC5qcyc7XG5pbXBvcnQgQXhpb3NIZWFkZXJzIGZyb20gJy4uL2NvcmUvQXhpb3NIZWFkZXJzLmpzJztcblxuLyoqXG4gKiBUcmFuc2Zvcm0gdGhlIGRhdGEgZm9yIGEgcmVxdWVzdCBvciBhIHJlc3BvbnNlXG4gKlxuICogQHBhcmFtIHtBcnJheXxGdW5jdGlvbn0gZm5zIEEgc2luZ2xlIGZ1bmN0aW9uIG9yIEFycmF5IG9mIGZ1bmN0aW9uc1xuICogQHBhcmFtIHs/T2JqZWN0fSByZXNwb25zZSBUaGUgcmVzcG9uc2Ugb2JqZWN0XG4gKlxuICogQHJldHVybnMgeyp9IFRoZSByZXN1bHRpbmcgdHJhbnNmb3JtZWQgZGF0YVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRhKGZucywgcmVzcG9uc2UpIHtcbiAgY29uc3QgY29uZmlnID0gdGhpcyB8fCBkZWZhdWx0cztcbiAgY29uc3QgY29udGV4dCA9IHJlc3BvbnNlIHx8IGNvbmZpZztcbiAgY29uc3QgaGVhZGVycyA9IEF4aW9zSGVhZGVycy5mcm9tKGNvbnRleHQuaGVhZGVycyk7XG4gIGxldCBkYXRhID0gY29udGV4dC5kYXRhO1xuXG4gIHV0aWxzLmZvckVhY2goZm5zLCBmdW5jdGlvbiB0cmFuc2Zvcm0oZm4pIHtcbiAgICBkYXRhID0gZm4uY2FsbChjb25maWcsIGRhdGEsIGhlYWRlcnMubm9ybWFsaXplKCksIHJlc3BvbnNlID8gcmVzcG9uc2Uuc3RhdHVzIDogdW5kZWZpbmVkKTtcbiAgfSk7XG5cbiAgaGVhZGVycy5ub3JtYWxpemUoKTtcblxuICByZXR1cm4gZGF0YTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNDYW5jZWwodmFsdWUpIHtcbiAgcmV0dXJuICEhKHZhbHVlICYmIHZhbHVlLl9fQ0FOQ0VMX18pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgQXhpb3NFcnJvciBmcm9tICcuLi9jb3JlL0F4aW9zRXJyb3IuanMnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzLmpzJztcblxuLyoqXG4gKiBBIGBDYW5jZWxlZEVycm9yYCBpcyBhbiBvYmplY3QgdGhhdCBpcyB0aHJvd24gd2hlbiBhbiBvcGVyYXRpb24gaXMgY2FuY2VsZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmc9fSBtZXNzYWdlIFRoZSBtZXNzYWdlLlxuICogQHBhcmFtIHtPYmplY3Q9fSBjb25maWcgVGhlIGNvbmZpZy5cbiAqIEBwYXJhbSB7T2JqZWN0PX0gcmVxdWVzdCBUaGUgcmVxdWVzdC5cbiAqXG4gKiBAcmV0dXJucyB7Q2FuY2VsZWRFcnJvcn0gVGhlIGNyZWF0ZWQgZXJyb3IuXG4gKi9cbmZ1bmN0aW9uIENhbmNlbGVkRXJyb3IobWVzc2FnZSwgY29uZmlnLCByZXF1ZXN0KSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lcS1udWxsLGVxZXFlcVxuICBBeGlvc0Vycm9yLmNhbGwodGhpcywgbWVzc2FnZSA9PSBudWxsID8gJ2NhbmNlbGVkJyA6IG1lc3NhZ2UsIEF4aW9zRXJyb3IuRVJSX0NBTkNFTEVELCBjb25maWcsIHJlcXVlc3QpO1xuICB0aGlzLm5hbWUgPSAnQ2FuY2VsZWRFcnJvcic7XG59XG5cbnV0aWxzLmluaGVyaXRzKENhbmNlbGVkRXJyb3IsIEF4aW9zRXJyb3IsIHtcbiAgX19DQU5DRUxfXzogdHJ1ZVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IENhbmNlbGVkRXJyb3I7XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCBBeGlvc0Vycm9yIGZyb20gJy4vQXhpb3NFcnJvci5qcyc7XG5cbi8qKlxuICogUmVzb2x2ZSBvciByZWplY3QgYSBQcm9taXNlIGJhc2VkIG9uIHJlc3BvbnNlIHN0YXR1cy5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXNvbHZlIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0aGUgcHJvbWlzZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlamVjdCBBIGZ1bmN0aW9uIHRoYXQgcmVqZWN0cyB0aGUgcHJvbWlzZS5cbiAqIEBwYXJhbSB7b2JqZWN0fSByZXNwb25zZSBUaGUgcmVzcG9uc2UuXG4gKlxuICogQHJldHVybnMge29iamVjdH0gVGhlIHJlc3BvbnNlLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCByZXNwb25zZSkge1xuICBjb25zdCB2YWxpZGF0ZVN0YXR1cyA9IHJlc3BvbnNlLmNvbmZpZy52YWxpZGF0ZVN0YXR1cztcbiAgaWYgKCFyZXNwb25zZS5zdGF0dXMgfHwgIXZhbGlkYXRlU3RhdHVzIHx8IHZhbGlkYXRlU3RhdHVzKHJlc3BvbnNlLnN0YXR1cykpIHtcbiAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgfSBlbHNlIHtcbiAgICByZWplY3QobmV3IEF4aW9zRXJyb3IoXG4gICAgICAnUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAnICsgcmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgW0F4aW9zRXJyb3IuRVJSX0JBRF9SRVFVRVNULCBBeGlvc0Vycm9yLkVSUl9CQURfUkVTUE9OU0VdW01hdGguZmxvb3IocmVzcG9uc2Uuc3RhdHVzIC8gMTAwKSAtIDRdLFxuICAgICAgcmVzcG9uc2UuY29uZmlnLFxuICAgICAgcmVzcG9uc2UucmVxdWVzdCxcbiAgICAgIHJlc3BvbnNlXG4gICAgKSk7XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGFyc2VQcm90b2NvbCh1cmwpIHtcbiAgY29uc3QgbWF0Y2ggPSAvXihbLStcXHddezEsMjV9KSg6P1xcL1xcL3w6KS8uZXhlYyh1cmwpO1xuICByZXR1cm4gbWF0Y2ggJiYgbWF0Y2hbMV0gfHwgJyc7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ2FsY3VsYXRlIGRhdGEgbWF4UmF0ZVxuICogQHBhcmFtIHtOdW1iZXJ9IFtzYW1wbGVzQ291bnQ9IDEwXVxuICogQHBhcmFtIHtOdW1iZXJ9IFttaW49IDEwMDBdXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259XG4gKi9cbmZ1bmN0aW9uIHNwZWVkb21ldGVyKHNhbXBsZXNDb3VudCwgbWluKSB7XG4gIHNhbXBsZXNDb3VudCA9IHNhbXBsZXNDb3VudCB8fCAxMDtcbiAgY29uc3QgYnl0ZXMgPSBuZXcgQXJyYXkoc2FtcGxlc0NvdW50KTtcbiAgY29uc3QgdGltZXN0YW1wcyA9IG5ldyBBcnJheShzYW1wbGVzQ291bnQpO1xuICBsZXQgaGVhZCA9IDA7XG4gIGxldCB0YWlsID0gMDtcbiAgbGV0IGZpcnN0U2FtcGxlVFM7XG5cbiAgbWluID0gbWluICE9PSB1bmRlZmluZWQgPyBtaW4gOiAxMDAwO1xuXG4gIHJldHVybiBmdW5jdGlvbiBwdXNoKGNodW5rTGVuZ3RoKSB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgIGNvbnN0IHN0YXJ0ZWRBdCA9IHRpbWVzdGFtcHNbdGFpbF07XG5cbiAgICBpZiAoIWZpcnN0U2FtcGxlVFMpIHtcbiAgICAgIGZpcnN0U2FtcGxlVFMgPSBub3c7XG4gICAgfVxuXG4gICAgYnl0ZXNbaGVhZF0gPSBjaHVua0xlbmd0aDtcbiAgICB0aW1lc3RhbXBzW2hlYWRdID0gbm93O1xuXG4gICAgbGV0IGkgPSB0YWlsO1xuICAgIGxldCBieXRlc0NvdW50ID0gMDtcblxuICAgIHdoaWxlIChpICE9PSBoZWFkKSB7XG4gICAgICBieXRlc0NvdW50ICs9IGJ5dGVzW2krK107XG4gICAgICBpID0gaSAlIHNhbXBsZXNDb3VudDtcbiAgICB9XG5cbiAgICBoZWFkID0gKGhlYWQgKyAxKSAlIHNhbXBsZXNDb3VudDtcblxuICAgIGlmIChoZWFkID09PSB0YWlsKSB7XG4gICAgICB0YWlsID0gKHRhaWwgKyAxKSAlIHNhbXBsZXNDb3VudDtcbiAgICB9XG5cbiAgICBpZiAobm93IC0gZmlyc3RTYW1wbGVUUyA8IG1pbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhc3NlZCA9IHN0YXJ0ZWRBdCAmJiBub3cgLSBzdGFydGVkQXQ7XG5cbiAgICByZXR1cm4gcGFzc2VkID8gTWF0aC5yb3VuZChieXRlc0NvdW50ICogMTAwMCAvIHBhc3NlZCkgOiB1bmRlZmluZWQ7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHNwZWVkb21ldGVyO1xuIiwiLyoqXG4gKiBUaHJvdHRsZSBkZWNvcmF0b3JcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuXG4gKiBAcGFyYW0ge051bWJlcn0gZnJlcVxuICogQHJldHVybiB7RnVuY3Rpb259XG4gKi9cbmZ1bmN0aW9uIHRocm90dGxlKGZuLCBmcmVxKSB7XG4gIGxldCB0aW1lc3RhbXAgPSAwO1xuICBsZXQgdGhyZXNob2xkID0gMTAwMCAvIGZyZXE7XG4gIGxldCBsYXN0QXJncztcbiAgbGV0IHRpbWVyO1xuXG4gIGNvbnN0IGludm9rZSA9IChhcmdzLCBub3cgPSBEYXRlLm5vdygpKSA9PiB7XG4gICAgdGltZXN0YW1wID0gbm93O1xuICAgIGxhc3RBcmdzID0gbnVsbDtcbiAgICBpZiAodGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICB0aW1lciA9IG51bGw7XG4gICAgfVxuICAgIGZuLmFwcGx5KG51bGwsIGFyZ3MpO1xuICB9XG5cbiAgY29uc3QgdGhyb3R0bGVkID0gKC4uLmFyZ3MpID0+IHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHBhc3NlZCA9IG5vdyAtIHRpbWVzdGFtcDtcbiAgICBpZiAoIHBhc3NlZCA+PSB0aHJlc2hvbGQpIHtcbiAgICAgIGludm9rZShhcmdzLCBub3cpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsYXN0QXJncyA9IGFyZ3M7XG4gICAgICBpZiAoIXRpbWVyKSB7XG4gICAgICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGltZXIgPSBudWxsO1xuICAgICAgICAgIGludm9rZShsYXN0QXJncylcbiAgICAgICAgfSwgdGhyZXNob2xkIC0gcGFzc2VkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBmbHVzaCA9ICgpID0+IGxhc3RBcmdzICYmIGludm9rZShsYXN0QXJncyk7XG5cbiAgcmV0dXJuIFt0aHJvdHRsZWQsIGZsdXNoXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdGhyb3R0bGU7XG4iLCJpbXBvcnQgc3BlZWRvbWV0ZXIgZnJvbSBcIi4vc3BlZWRvbWV0ZXIuanNcIjtcbmltcG9ydCB0aHJvdHRsZSBmcm9tIFwiLi90aHJvdHRsZS5qc1wiO1xuaW1wb3J0IHV0aWxzIGZyb20gXCIuLi91dGlscy5qc1wiO1xuXG5leHBvcnQgY29uc3QgcHJvZ3Jlc3NFdmVudFJlZHVjZXIgPSAobGlzdGVuZXIsIGlzRG93bmxvYWRTdHJlYW0sIGZyZXEgPSAzKSA9PiB7XG4gIGxldCBieXRlc05vdGlmaWVkID0gMDtcbiAgY29uc3QgX3NwZWVkb21ldGVyID0gc3BlZWRvbWV0ZXIoNTAsIDI1MCk7XG5cbiAgcmV0dXJuIHRocm90dGxlKGUgPT4ge1xuICAgIGNvbnN0IGxvYWRlZCA9IGUubG9hZGVkO1xuICAgIGNvbnN0IHRvdGFsID0gZS5sZW5ndGhDb21wdXRhYmxlID8gZS50b3RhbCA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBwcm9ncmVzc0J5dGVzID0gbG9hZGVkIC0gYnl0ZXNOb3RpZmllZDtcbiAgICBjb25zdCByYXRlID0gX3NwZWVkb21ldGVyKHByb2dyZXNzQnl0ZXMpO1xuICAgIGNvbnN0IGluUmFuZ2UgPSBsb2FkZWQgPD0gdG90YWw7XG5cbiAgICBieXRlc05vdGlmaWVkID0gbG9hZGVkO1xuXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGxvYWRlZCxcbiAgICAgIHRvdGFsLFxuICAgICAgcHJvZ3Jlc3M6IHRvdGFsID8gKGxvYWRlZCAvIHRvdGFsKSA6IHVuZGVmaW5lZCxcbiAgICAgIGJ5dGVzOiBwcm9ncmVzc0J5dGVzLFxuICAgICAgcmF0ZTogcmF0ZSA/IHJhdGUgOiB1bmRlZmluZWQsXG4gICAgICBlc3RpbWF0ZWQ6IHJhdGUgJiYgdG90YWwgJiYgaW5SYW5nZSA/ICh0b3RhbCAtIGxvYWRlZCkgLyByYXRlIDogdW5kZWZpbmVkLFxuICAgICAgZXZlbnQ6IGUsXG4gICAgICBsZW5ndGhDb21wdXRhYmxlOiB0b3RhbCAhPSBudWxsLFxuICAgICAgW2lzRG93bmxvYWRTdHJlYW0gPyAnZG93bmxvYWQnIDogJ3VwbG9hZCddOiB0cnVlXG4gICAgfTtcblxuICAgIGxpc3RlbmVyKGRhdGEpO1xuICB9LCBmcmVxKTtcbn1cblxuZXhwb3J0IGNvbnN0IHByb2dyZXNzRXZlbnREZWNvcmF0b3IgPSAodG90YWwsIHRocm90dGxlZCkgPT4ge1xuICBjb25zdCBsZW5ndGhDb21wdXRhYmxlID0gdG90YWwgIT0gbnVsbDtcblxuICByZXR1cm4gWyhsb2FkZWQpID0+IHRocm90dGxlZFswXSh7XG4gICAgbGVuZ3RoQ29tcHV0YWJsZSxcbiAgICB0b3RhbCxcbiAgICBsb2FkZWRcbiAgfSksIHRocm90dGxlZFsxXV07XG59XG5cbmV4cG9ydCBjb25zdCBhc3luY0RlY29yYXRvciA9IChmbikgPT4gKC4uLmFyZ3MpID0+IHV0aWxzLmFzYXAoKCkgPT4gZm4oLi4uYXJncykpO1xuIiwiaW1wb3J0IHBsYXRmb3JtIGZyb20gJy4uL3BsYXRmb3JtL2luZGV4LmpzJztcblxuZXhwb3J0IGRlZmF1bHQgcGxhdGZvcm0uaGFzU3RhbmRhcmRCcm93c2VyRW52ID8gKChvcmlnaW4sIGlzTVNJRSkgPT4gKHVybCkgPT4ge1xuICB1cmwgPSBuZXcgVVJMKHVybCwgcGxhdGZvcm0ub3JpZ2luKTtcblxuICByZXR1cm4gKFxuICAgIG9yaWdpbi5wcm90b2NvbCA9PT0gdXJsLnByb3RvY29sICYmXG4gICAgb3JpZ2luLmhvc3QgPT09IHVybC5ob3N0ICYmXG4gICAgKGlzTVNJRSB8fCBvcmlnaW4ucG9ydCA9PT0gdXJsLnBvcnQpXG4gICk7XG59KShcbiAgbmV3IFVSTChwbGF0Zm9ybS5vcmlnaW4pLFxuICBwbGF0Zm9ybS5uYXZpZ2F0b3IgJiYgLyhtc2llfHRyaWRlbnQpL2kudGVzdChwbGF0Zm9ybS5uYXZpZ2F0b3IudXNlckFnZW50KVxuKSA6ICgpID0+IHRydWU7XG4iLCJpbXBvcnQgdXRpbHMgZnJvbSAnLi8uLi91dGlscy5qcyc7XG5pbXBvcnQgcGxhdGZvcm0gZnJvbSAnLi4vcGxhdGZvcm0vaW5kZXguanMnO1xuXG5leHBvcnQgZGVmYXVsdCBwbGF0Zm9ybS5oYXNTdGFuZGFyZEJyb3dzZXJFbnYgP1xuXG4gIC8vIFN0YW5kYXJkIGJyb3dzZXIgZW52cyBzdXBwb3J0IGRvY3VtZW50LmNvb2tpZVxuICB7XG4gICAgd3JpdGUobmFtZSwgdmFsdWUsIGV4cGlyZXMsIHBhdGgsIGRvbWFpbiwgc2VjdXJlKSB7XG4gICAgICBjb25zdCBjb29raWUgPSBbbmFtZSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSldO1xuXG4gICAgICB1dGlscy5pc051bWJlcihleHBpcmVzKSAmJiBjb29raWUucHVzaCgnZXhwaXJlcz0nICsgbmV3IERhdGUoZXhwaXJlcykudG9HTVRTdHJpbmcoKSk7XG5cbiAgICAgIHV0aWxzLmlzU3RyaW5nKHBhdGgpICYmIGNvb2tpZS5wdXNoKCdwYXRoPScgKyBwYXRoKTtcblxuICAgICAgdXRpbHMuaXNTdHJpbmcoZG9tYWluKSAmJiBjb29raWUucHVzaCgnZG9tYWluPScgKyBkb21haW4pO1xuXG4gICAgICBzZWN1cmUgPT09IHRydWUgJiYgY29va2llLnB1c2goJ3NlY3VyZScpO1xuXG4gICAgICBkb2N1bWVudC5jb29raWUgPSBjb29raWUuam9pbignOyAnKTtcbiAgICB9LFxuXG4gICAgcmVhZChuYW1lKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IGRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCcoXnw7XFxcXHMqKSgnICsgbmFtZSArICcpPShbXjtdKiknKSk7XG4gICAgICByZXR1cm4gKG1hdGNoID8gZGVjb2RlVVJJQ29tcG9uZW50KG1hdGNoWzNdKSA6IG51bGwpO1xuICAgIH0sXG5cbiAgICByZW1vdmUobmFtZSkge1xuICAgICAgdGhpcy53cml0ZShuYW1lLCAnJywgRGF0ZS5ub3coKSAtIDg2NDAwMDAwKTtcbiAgICB9XG4gIH1cblxuICA6XG5cbiAgLy8gTm9uLXN0YW5kYXJkIGJyb3dzZXIgZW52ICh3ZWIgd29ya2VycywgcmVhY3QtbmF0aXZlKSBsYWNrIG5lZWRlZCBzdXBwb3J0LlxuICB7XG4gICAgd3JpdGUoKSB7fSxcbiAgICByZWFkKCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSxcbiAgICByZW1vdmUoKSB7fVxuICB9O1xuXG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgVVJMIGlzIGFic29sdXRlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCBUaGUgVVJMIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIFVSTCBpcyBhYnNvbHV0ZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzQWJzb2x1dGVVUkwodXJsKSB7XG4gIC8vIEEgVVJMIGlzIGNvbnNpZGVyZWQgYWJzb2x1dGUgaWYgaXQgYmVnaW5zIHdpdGggXCI8c2NoZW1lPjovL1wiIG9yIFwiLy9cIiAocHJvdG9jb2wtcmVsYXRpdmUgVVJMKS5cbiAgLy8gUkZDIDM5ODYgZGVmaW5lcyBzY2hlbWUgbmFtZSBhcyBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgYmVnaW5uaW5nIHdpdGggYSBsZXR0ZXIgYW5kIGZvbGxvd2VkXG4gIC8vIGJ5IGFueSBjb21iaW5hdGlvbiBvZiBsZXR0ZXJzLCBkaWdpdHMsIHBsdXMsIHBlcmlvZCwgb3IgaHlwaGVuLlxuICByZXR1cm4gL14oW2Etel1bYS16XFxkK1xcLS5dKjopP1xcL1xcLy9pLnRlc3QodXJsKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IFVSTCBieSBjb21iaW5pbmcgdGhlIHNwZWNpZmllZCBVUkxzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2VVUkwgVGhlIGJhc2UgVVJMXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVsYXRpdmVVUkwgVGhlIHJlbGF0aXZlIFVSTFxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBVUkxcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tYmluZVVSTHMoYmFzZVVSTCwgcmVsYXRpdmVVUkwpIHtcbiAgcmV0dXJuIHJlbGF0aXZlVVJMXG4gICAgPyBiYXNlVVJMLnJlcGxhY2UoL1xcLz9cXC8kLywgJycpICsgJy8nICsgcmVsYXRpdmVVUkwucmVwbGFjZSgvXlxcLysvLCAnJylcbiAgICA6IGJhc2VVUkw7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCBpc0Fic29sdXRlVVJMIGZyb20gJy4uL2hlbHBlcnMvaXNBYnNvbHV0ZVVSTC5qcyc7XG5pbXBvcnQgY29tYmluZVVSTHMgZnJvbSAnLi4vaGVscGVycy9jb21iaW5lVVJMcy5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBVUkwgYnkgY29tYmluaW5nIHRoZSBiYXNlVVJMIHdpdGggdGhlIHJlcXVlc3RlZFVSTCxcbiAqIG9ubHkgd2hlbiB0aGUgcmVxdWVzdGVkVVJMIGlzIG5vdCBhbHJlYWR5IGFuIGFic29sdXRlIFVSTC5cbiAqIElmIHRoZSByZXF1ZXN0VVJMIGlzIGFic29sdXRlLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJlcXVlc3RlZFVSTCB1bnRvdWNoZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2VVUkwgVGhlIGJhc2UgVVJMXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVxdWVzdGVkVVJMIEFic29sdXRlIG9yIHJlbGF0aXZlIFVSTCB0byBjb21iaW5lXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbWJpbmVkIGZ1bGwgcGF0aFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBidWlsZEZ1bGxQYXRoKGJhc2VVUkwsIHJlcXVlc3RlZFVSTCkge1xuICBpZiAoYmFzZVVSTCAmJiAhaXNBYnNvbHV0ZVVSTChyZXF1ZXN0ZWRVUkwpKSB7XG4gICAgcmV0dXJuIGNvbWJpbmVVUkxzKGJhc2VVUkwsIHJlcXVlc3RlZFVSTCk7XG4gIH1cbiAgcmV0dXJuIHJlcXVlc3RlZFVSTDtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzLmpzJztcbmltcG9ydCBBeGlvc0hlYWRlcnMgZnJvbSBcIi4vQXhpb3NIZWFkZXJzLmpzXCI7XG5cbmNvbnN0IGhlYWRlcnNUb09iamVjdCA9ICh0aGluZykgPT4gdGhpbmcgaW5zdGFuY2VvZiBBeGlvc0hlYWRlcnMgPyB7IC4uLnRoaW5nIH0gOiB0aGluZztcblxuLyoqXG4gKiBDb25maWctc3BlY2lmaWMgbWVyZ2UtZnVuY3Rpb24gd2hpY2ggY3JlYXRlcyBhIG5ldyBjb25maWctb2JqZWN0XG4gKiBieSBtZXJnaW5nIHR3byBjb25maWd1cmF0aW9uIG9iamVjdHMgdG9nZXRoZXIuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZzFcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcyXG4gKlxuICogQHJldHVybnMge09iamVjdH0gTmV3IG9iamVjdCByZXN1bHRpbmcgZnJvbSBtZXJnaW5nIGNvbmZpZzIgdG8gY29uZmlnMVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZUNvbmZpZyhjb25maWcxLCBjb25maWcyKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICBjb25maWcyID0gY29uZmlnMiB8fCB7fTtcbiAgY29uc3QgY29uZmlnID0ge307XG5cbiAgZnVuY3Rpb24gZ2V0TWVyZ2VkVmFsdWUodGFyZ2V0LCBzb3VyY2UsIHByb3AsIGNhc2VsZXNzKSB7XG4gICAgaWYgKHV0aWxzLmlzUGxhaW5PYmplY3QodGFyZ2V0KSAmJiB1dGlscy5pc1BsYWluT2JqZWN0KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiB1dGlscy5tZXJnZS5jYWxsKHtjYXNlbGVzc30sIHRhcmdldCwgc291cmNlKTtcbiAgICB9IGVsc2UgaWYgKHV0aWxzLmlzUGxhaW5PYmplY3Qoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHV0aWxzLm1lcmdlKHt9LCBzb3VyY2UpO1xuICAgIH0gZWxzZSBpZiAodXRpbHMuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gc291cmNlLnNsaWNlKCk7XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2U7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cbiAgZnVuY3Rpb24gbWVyZ2VEZWVwUHJvcGVydGllcyhhLCBiLCBwcm9wICwgY2FzZWxlc3MpIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGIpKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUoYSwgYiwgcHJvcCAsIGNhc2VsZXNzKTtcbiAgICB9IGVsc2UgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChhKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgYSwgcHJvcCAsIGNhc2VsZXNzKTtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cbiAgZnVuY3Rpb24gdmFsdWVGcm9tQ29uZmlnMihhLCBiKSB7XG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChiKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgYik7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIGRlZmF1bHRUb0NvbmZpZzIoYSwgYikge1xuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoYikpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGIpO1xuICAgIH0gZWxzZSBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGEpKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBhKTtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cbiAgZnVuY3Rpb24gbWVyZ2VEaXJlY3RLZXlzKGEsIGIsIHByb3ApIHtcbiAgICBpZiAocHJvcCBpbiBjb25maWcyKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUoYSwgYik7XG4gICAgfSBlbHNlIGlmIChwcm9wIGluIGNvbmZpZzEpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGEpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG1lcmdlTWFwID0ge1xuICAgIHVybDogdmFsdWVGcm9tQ29uZmlnMixcbiAgICBtZXRob2Q6IHZhbHVlRnJvbUNvbmZpZzIsXG4gICAgZGF0YTogdmFsdWVGcm9tQ29uZmlnMixcbiAgICBiYXNlVVJMOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHRyYW5zZm9ybVJlcXVlc3Q6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgdHJhbnNmb3JtUmVzcG9uc2U6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgcGFyYW1zU2VyaWFsaXplcjogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB0aW1lb3V0OiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHRpbWVvdXRNZXNzYWdlOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHdpdGhDcmVkZW50aWFsczogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB3aXRoWFNSRlRva2VuOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIGFkYXB0ZXI6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgcmVzcG9uc2VUeXBlOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHhzcmZDb29raWVOYW1lOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHhzcmZIZWFkZXJOYW1lOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIG9uVXBsb2FkUHJvZ3Jlc3M6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgb25Eb3dubG9hZFByb2dyZXNzOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIGRlY29tcHJlc3M6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgbWF4Q29udGVudExlbmd0aDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBtYXhCb2R5TGVuZ3RoOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIGJlZm9yZVJlZGlyZWN0OiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHRyYW5zcG9ydDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBodHRwQWdlbnQ6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgaHR0cHNBZ2VudDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBjYW5jZWxUb2tlbjogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBzb2NrZXRQYXRoOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHJlc3BvbnNlRW5jb2Rpbmc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgdmFsaWRhdGVTdGF0dXM6IG1lcmdlRGlyZWN0S2V5cyxcbiAgICBoZWFkZXJzOiAoYSwgYiAsIHByb3ApID0+IG1lcmdlRGVlcFByb3BlcnRpZXMoaGVhZGVyc1RvT2JqZWN0KGEpLCBoZWFkZXJzVG9PYmplY3QoYikscHJvcCwgdHJ1ZSlcbiAgfTtcblxuICB1dGlscy5mb3JFYWNoKE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sIGNvbmZpZzEsIGNvbmZpZzIpKSwgZnVuY3Rpb24gY29tcHV0ZUNvbmZpZ1ZhbHVlKHByb3ApIHtcbiAgICBjb25zdCBtZXJnZSA9IG1lcmdlTWFwW3Byb3BdIHx8IG1lcmdlRGVlcFByb3BlcnRpZXM7XG4gICAgY29uc3QgY29uZmlnVmFsdWUgPSBtZXJnZShjb25maWcxW3Byb3BdLCBjb25maWcyW3Byb3BdLCBwcm9wKTtcbiAgICAodXRpbHMuaXNVbmRlZmluZWQoY29uZmlnVmFsdWUpICYmIG1lcmdlICE9PSBtZXJnZURpcmVjdEtleXMpIHx8IChjb25maWdbcHJvcF0gPSBjb25maWdWYWx1ZSk7XG4gIH0pO1xuXG4gIHJldHVybiBjb25maWc7XG59XG4iLCJpbXBvcnQgcGxhdGZvcm0gZnJvbSBcIi4uL3BsYXRmb3JtL2luZGV4LmpzXCI7XG5pbXBvcnQgdXRpbHMgZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgaXNVUkxTYW1lT3JpZ2luIGZyb20gXCIuL2lzVVJMU2FtZU9yaWdpbi5qc1wiO1xuaW1wb3J0IGNvb2tpZXMgZnJvbSBcIi4vY29va2llcy5qc1wiO1xuaW1wb3J0IGJ1aWxkRnVsbFBhdGggZnJvbSBcIi4uL2NvcmUvYnVpbGRGdWxsUGF0aC5qc1wiO1xuaW1wb3J0IG1lcmdlQ29uZmlnIGZyb20gXCIuLi9jb3JlL21lcmdlQ29uZmlnLmpzXCI7XG5pbXBvcnQgQXhpb3NIZWFkZXJzIGZyb20gXCIuLi9jb3JlL0F4aW9zSGVhZGVycy5qc1wiO1xuaW1wb3J0IGJ1aWxkVVJMIGZyb20gXCIuL2J1aWxkVVJMLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IChjb25maWcpID0+IHtcbiAgY29uc3QgbmV3Q29uZmlnID0gbWVyZ2VDb25maWcoe30sIGNvbmZpZyk7XG5cbiAgbGV0IHtkYXRhLCB3aXRoWFNSRlRva2VuLCB4c3JmSGVhZGVyTmFtZSwgeHNyZkNvb2tpZU5hbWUsIGhlYWRlcnMsIGF1dGh9ID0gbmV3Q29uZmlnO1xuXG4gIG5ld0NvbmZpZy5oZWFkZXJzID0gaGVhZGVycyA9IEF4aW9zSGVhZGVycy5mcm9tKGhlYWRlcnMpO1xuXG4gIG5ld0NvbmZpZy51cmwgPSBidWlsZFVSTChidWlsZEZ1bGxQYXRoKG5ld0NvbmZpZy5iYXNlVVJMLCBuZXdDb25maWcudXJsKSwgY29uZmlnLnBhcmFtcywgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIpO1xuXG4gIC8vIEhUVFAgYmFzaWMgYXV0aGVudGljYXRpb25cbiAgaWYgKGF1dGgpIHtcbiAgICBoZWFkZXJzLnNldCgnQXV0aG9yaXphdGlvbicsICdCYXNpYyAnICtcbiAgICAgIGJ0b2EoKGF1dGgudXNlcm5hbWUgfHwgJycpICsgJzonICsgKGF1dGgucGFzc3dvcmQgPyB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoYXV0aC5wYXNzd29yZCkpIDogJycpKVxuICAgICk7XG4gIH1cblxuICBsZXQgY29udGVudFR5cGU7XG5cbiAgaWYgKHV0aWxzLmlzRm9ybURhdGEoZGF0YSkpIHtcbiAgICBpZiAocGxhdGZvcm0uaGFzU3RhbmRhcmRCcm93c2VyRW52IHx8IHBsYXRmb3JtLmhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudikge1xuICAgICAgaGVhZGVycy5zZXRDb250ZW50VHlwZSh1bmRlZmluZWQpOyAvLyBMZXQgdGhlIGJyb3dzZXIgc2V0IGl0XG4gICAgfSBlbHNlIGlmICgoY29udGVudFR5cGUgPSBoZWFkZXJzLmdldENvbnRlbnRUeXBlKCkpICE9PSBmYWxzZSkge1xuICAgICAgLy8gZml4IHNlbWljb2xvbiBkdXBsaWNhdGlvbiBpc3N1ZSBmb3IgUmVhY3ROYXRpdmUgRm9ybURhdGEgaW1wbGVtZW50YXRpb25cbiAgICAgIGNvbnN0IFt0eXBlLCAuLi50b2tlbnNdID0gY29udGVudFR5cGUgPyBjb250ZW50VHlwZS5zcGxpdCgnOycpLm1hcCh0b2tlbiA9PiB0b2tlbi50cmltKCkpLmZpbHRlcihCb29sZWFuKSA6IFtdO1xuICAgICAgaGVhZGVycy5zZXRDb250ZW50VHlwZShbdHlwZSB8fCAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsIC4uLnRva2Vuc10uam9pbignOyAnKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIHhzcmYgaGVhZGVyXG4gIC8vIFRoaXMgaXMgb25seSBkb25lIGlmIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIGVudmlyb25tZW50LlxuICAvLyBTcGVjaWZpY2FsbHkgbm90IGlmIHdlJ3JlIGluIGEgd2ViIHdvcmtlciwgb3IgcmVhY3QtbmF0aXZlLlxuXG4gIGlmIChwbGF0Zm9ybS5oYXNTdGFuZGFyZEJyb3dzZXJFbnYpIHtcbiAgICB3aXRoWFNSRlRva2VuICYmIHV0aWxzLmlzRnVuY3Rpb24od2l0aFhTUkZUb2tlbikgJiYgKHdpdGhYU1JGVG9rZW4gPSB3aXRoWFNSRlRva2VuKG5ld0NvbmZpZykpO1xuXG4gICAgaWYgKHdpdGhYU1JGVG9rZW4gfHwgKHdpdGhYU1JGVG9rZW4gIT09IGZhbHNlICYmIGlzVVJMU2FtZU9yaWdpbihuZXdDb25maWcudXJsKSkpIHtcbiAgICAgIC8vIEFkZCB4c3JmIGhlYWRlclxuICAgICAgY29uc3QgeHNyZlZhbHVlID0geHNyZkhlYWRlck5hbWUgJiYgeHNyZkNvb2tpZU5hbWUgJiYgY29va2llcy5yZWFkKHhzcmZDb29raWVOYW1lKTtcblxuICAgICAgaWYgKHhzcmZWYWx1ZSkge1xuICAgICAgICBoZWFkZXJzLnNldCh4c3JmSGVhZGVyTmFtZSwgeHNyZlZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3Q29uZmlnO1xufVxuXG4iLCJpbXBvcnQgdXRpbHMgZnJvbSAnLi8uLi91dGlscy5qcyc7XG5pbXBvcnQgc2V0dGxlIGZyb20gJy4vLi4vY29yZS9zZXR0bGUuanMnO1xuaW1wb3J0IHRyYW5zaXRpb25hbERlZmF1bHRzIGZyb20gJy4uL2RlZmF1bHRzL3RyYW5zaXRpb25hbC5qcyc7XG5pbXBvcnQgQXhpb3NFcnJvciBmcm9tICcuLi9jb3JlL0F4aW9zRXJyb3IuanMnO1xuaW1wb3J0IENhbmNlbGVkRXJyb3IgZnJvbSAnLi4vY2FuY2VsL0NhbmNlbGVkRXJyb3IuanMnO1xuaW1wb3J0IHBhcnNlUHJvdG9jb2wgZnJvbSAnLi4vaGVscGVycy9wYXJzZVByb3RvY29sLmpzJztcbmltcG9ydCBwbGF0Zm9ybSBmcm9tICcuLi9wbGF0Zm9ybS9pbmRleC5qcyc7XG5pbXBvcnQgQXhpb3NIZWFkZXJzIGZyb20gJy4uL2NvcmUvQXhpb3NIZWFkZXJzLmpzJztcbmltcG9ydCB7cHJvZ3Jlc3NFdmVudFJlZHVjZXJ9IGZyb20gJy4uL2hlbHBlcnMvcHJvZ3Jlc3NFdmVudFJlZHVjZXIuanMnO1xuaW1wb3J0IHJlc29sdmVDb25maWcgZnJvbSBcIi4uL2hlbHBlcnMvcmVzb2x2ZUNvbmZpZy5qc1wiO1xuXG5jb25zdCBpc1hIUkFkYXB0ZXJTdXBwb3J0ZWQgPSB0eXBlb2YgWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnO1xuXG5leHBvcnQgZGVmYXVsdCBpc1hIUkFkYXB0ZXJTdXBwb3J0ZWQgJiYgZnVuY3Rpb24gKGNvbmZpZykge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gZGlzcGF0Y2hYaHJSZXF1ZXN0KHJlc29sdmUsIHJlamVjdCkge1xuICAgIGNvbnN0IF9jb25maWcgPSByZXNvbHZlQ29uZmlnKGNvbmZpZyk7XG4gICAgbGV0IHJlcXVlc3REYXRhID0gX2NvbmZpZy5kYXRhO1xuICAgIGNvbnN0IHJlcXVlc3RIZWFkZXJzID0gQXhpb3NIZWFkZXJzLmZyb20oX2NvbmZpZy5oZWFkZXJzKS5ub3JtYWxpemUoKTtcbiAgICBsZXQge3Jlc3BvbnNlVHlwZSwgb25VcGxvYWRQcm9ncmVzcywgb25Eb3dubG9hZFByb2dyZXNzfSA9IF9jb25maWc7XG4gICAgbGV0IG9uQ2FuY2VsZWQ7XG4gICAgbGV0IHVwbG9hZFRocm90dGxlZCwgZG93bmxvYWRUaHJvdHRsZWQ7XG4gICAgbGV0IGZsdXNoVXBsb2FkLCBmbHVzaERvd25sb2FkO1xuXG4gICAgZnVuY3Rpb24gZG9uZSgpIHtcbiAgICAgIGZsdXNoVXBsb2FkICYmIGZsdXNoVXBsb2FkKCk7IC8vIGZsdXNoIGV2ZW50c1xuICAgICAgZmx1c2hEb3dubG9hZCAmJiBmbHVzaERvd25sb2FkKCk7IC8vIGZsdXNoIGV2ZW50c1xuXG4gICAgICBfY29uZmlnLmNhbmNlbFRva2VuICYmIF9jb25maWcuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUob25DYW5jZWxlZCk7XG5cbiAgICAgIF9jb25maWcuc2lnbmFsICYmIF9jb25maWcuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25DYW5jZWxlZCk7XG4gICAgfVxuXG4gICAgbGV0IHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcblxuICAgIHJlcXVlc3Qub3BlbihfY29uZmlnLm1ldGhvZC50b1VwcGVyQ2FzZSgpLCBfY29uZmlnLnVybCwgdHJ1ZSk7XG5cbiAgICAvLyBTZXQgdGhlIHJlcXVlc3QgdGltZW91dCBpbiBNU1xuICAgIHJlcXVlc3QudGltZW91dCA9IF9jb25maWcudGltZW91dDtcblxuICAgIGZ1bmN0aW9uIG9ubG9hZGVuZCgpIHtcbiAgICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBQcmVwYXJlIHRoZSByZXNwb25zZVxuICAgICAgY29uc3QgcmVzcG9uc2VIZWFkZXJzID0gQXhpb3NIZWFkZXJzLmZyb20oXG4gICAgICAgICdnZXRBbGxSZXNwb25zZUhlYWRlcnMnIGluIHJlcXVlc3QgJiYgcmVxdWVzdC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9ICFyZXNwb25zZVR5cGUgfHwgcmVzcG9uc2VUeXBlID09PSAndGV4dCcgfHwgcmVzcG9uc2VUeXBlID09PSAnanNvbicgP1xuICAgICAgICByZXF1ZXN0LnJlc3BvbnNlVGV4dCA6IHJlcXVlc3QucmVzcG9uc2U7XG4gICAgICBjb25zdCByZXNwb25zZSA9IHtcbiAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLFxuICAgICAgICBzdGF0dXM6IHJlcXVlc3Quc3RhdHVzLFxuICAgICAgICBzdGF0dXNUZXh0OiByZXF1ZXN0LnN0YXR1c1RleHQsXG4gICAgICAgIGhlYWRlcnM6IHJlc3BvbnNlSGVhZGVycyxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICByZXF1ZXN0XG4gICAgICB9O1xuXG4gICAgICBzZXR0bGUoZnVuY3Rpb24gX3Jlc29sdmUodmFsdWUpIHtcbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0sIGZ1bmN0aW9uIF9yZWplY3QoZXJyKSB7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9LCByZXNwb25zZSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICgnb25sb2FkZW5kJyBpbiByZXF1ZXN0KSB7XG4gICAgICAvLyBVc2Ugb25sb2FkZW5kIGlmIGF2YWlsYWJsZVxuICAgICAgcmVxdWVzdC5vbmxvYWRlbmQgPSBvbmxvYWRlbmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIExpc3RlbiBmb3IgcmVhZHkgc3RhdGUgdG8gZW11bGF0ZSBvbmxvYWRlbmRcbiAgICAgIHJlcXVlc3Qub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gaGFuZGxlTG9hZCgpIHtcbiAgICAgICAgaWYgKCFyZXF1ZXN0IHx8IHJlcXVlc3QucmVhZHlTdGF0ZSAhPT0gNCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSByZXF1ZXN0IGVycm9yZWQgb3V0IGFuZCB3ZSBkaWRuJ3QgZ2V0IGEgcmVzcG9uc2UsIHRoaXMgd2lsbCBiZVxuICAgICAgICAvLyBoYW5kbGVkIGJ5IG9uZXJyb3IgaW5zdGVhZFxuICAgICAgICAvLyBXaXRoIG9uZSBleGNlcHRpb246IHJlcXVlc3QgdGhhdCB1c2luZyBmaWxlOiBwcm90b2NvbCwgbW9zdCBicm93c2Vyc1xuICAgICAgICAvLyB3aWxsIHJldHVybiBzdGF0dXMgYXMgMCBldmVuIHRob3VnaCBpdCdzIGEgc3VjY2Vzc2Z1bCByZXF1ZXN0XG4gICAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyA9PT0gMCAmJiAhKHJlcXVlc3QucmVzcG9uc2VVUkwgJiYgcmVxdWVzdC5yZXNwb25zZVVSTC5pbmRleE9mKCdmaWxlOicpID09PSAwKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyByZWFkeXN0YXRlIGhhbmRsZXIgaXMgY2FsbGluZyBiZWZvcmUgb25lcnJvciBvciBvbnRpbWVvdXQgaGFuZGxlcnMsXG4gICAgICAgIC8vIHNvIHdlIHNob3VsZCBjYWxsIG9ubG9hZGVuZCBvbiB0aGUgbmV4dCAndGljaydcbiAgICAgICAgc2V0VGltZW91dChvbmxvYWRlbmQpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgYnJvd3NlciByZXF1ZXN0IGNhbmNlbGxhdGlvbiAoYXMgb3Bwb3NlZCB0byBhIG1hbnVhbCBjYW5jZWxsYXRpb24pXG4gICAgcmVxdWVzdC5vbmFib3J0ID0gZnVuY3Rpb24gaGFuZGxlQWJvcnQoKSB7XG4gICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZWplY3QobmV3IEF4aW9zRXJyb3IoJ1JlcXVlc3QgYWJvcnRlZCcsIEF4aW9zRXJyb3IuRUNPTk5BQk9SVEVELCBjb25maWcsIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSBsb3cgbGV2ZWwgbmV0d29yayBlcnJvcnNcbiAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiBoYW5kbGVFcnJvcigpIHtcbiAgICAgIC8vIFJlYWwgZXJyb3JzIGFyZSBoaWRkZW4gZnJvbSB1cyBieSB0aGUgYnJvd3NlclxuICAgICAgLy8gb25lcnJvciBzaG91bGQgb25seSBmaXJlIGlmIGl0J3MgYSBuZXR3b3JrIGVycm9yXG4gICAgICByZWplY3QobmV3IEF4aW9zRXJyb3IoJ05ldHdvcmsgRXJyb3InLCBBeGlvc0Vycm9yLkVSUl9ORVRXT1JLLCBjb25maWcsIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSB0aW1lb3V0XG4gICAgcmVxdWVzdC5vbnRpbWVvdXQgPSBmdW5jdGlvbiBoYW5kbGVUaW1lb3V0KCkge1xuICAgICAgbGV0IHRpbWVvdXRFcnJvck1lc3NhZ2UgPSBfY29uZmlnLnRpbWVvdXQgPyAndGltZW91dCBvZiAnICsgX2NvbmZpZy50aW1lb3V0ICsgJ21zIGV4Y2VlZGVkJyA6ICd0aW1lb3V0IGV4Y2VlZGVkJztcbiAgICAgIGNvbnN0IHRyYW5zaXRpb25hbCA9IF9jb25maWcudHJhbnNpdGlvbmFsIHx8IHRyYW5zaXRpb25hbERlZmF1bHRzO1xuICAgICAgaWYgKF9jb25maWcudGltZW91dEVycm9yTWVzc2FnZSkge1xuICAgICAgICB0aW1lb3V0RXJyb3JNZXNzYWdlID0gX2NvbmZpZy50aW1lb3V0RXJyb3JNZXNzYWdlO1xuICAgICAgfVxuICAgICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKFxuICAgICAgICB0aW1lb3V0RXJyb3JNZXNzYWdlLFxuICAgICAgICB0cmFuc2l0aW9uYWwuY2xhcmlmeVRpbWVvdXRFcnJvciA/IEF4aW9zRXJyb3IuRVRJTUVET1VUIDogQXhpb3NFcnJvci5FQ09OTkFCT1JURUQsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gUmVtb3ZlIENvbnRlbnQtVHlwZSBpZiBkYXRhIGlzIHVuZGVmaW5lZFxuICAgIHJlcXVlc3REYXRhID09PSB1bmRlZmluZWQgJiYgcmVxdWVzdEhlYWRlcnMuc2V0Q29udGVudFR5cGUobnVsbCk7XG5cbiAgICAvLyBBZGQgaGVhZGVycyB0byB0aGUgcmVxdWVzdFxuICAgIGlmICgnc2V0UmVxdWVzdEhlYWRlcicgaW4gcmVxdWVzdCkge1xuICAgICAgdXRpbHMuZm9yRWFjaChyZXF1ZXN0SGVhZGVycy50b0pTT04oKSwgZnVuY3Rpb24gc2V0UmVxdWVzdEhlYWRlcih2YWwsIGtleSkge1xuICAgICAgICByZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoa2V5LCB2YWwpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhDcmVkZW50aWFscyB0byByZXF1ZXN0IGlmIG5lZWRlZFxuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoX2NvbmZpZy53aXRoQ3JlZGVudGlhbHMpKSB7XG4gICAgICByZXF1ZXN0LndpdGhDcmVkZW50aWFscyA9ICEhX2NvbmZpZy53aXRoQ3JlZGVudGlhbHM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHJlc3BvbnNlVHlwZSB0byByZXF1ZXN0IGlmIG5lZWRlZFxuICAgIGlmIChyZXNwb25zZVR5cGUgJiYgcmVzcG9uc2VUeXBlICE9PSAnanNvbicpIHtcbiAgICAgIHJlcXVlc3QucmVzcG9uc2VUeXBlID0gX2NvbmZpZy5yZXNwb25zZVR5cGU7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHByb2dyZXNzIGlmIG5lZWRlZFxuICAgIGlmIChvbkRvd25sb2FkUHJvZ3Jlc3MpIHtcbiAgICAgIChbZG93bmxvYWRUaHJvdHRsZWQsIGZsdXNoRG93bmxvYWRdID0gcHJvZ3Jlc3NFdmVudFJlZHVjZXIob25Eb3dubG9hZFByb2dyZXNzLCB0cnVlKSk7XG4gICAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgZG93bmxvYWRUaHJvdHRsZWQpO1xuICAgIH1cblxuICAgIC8vIE5vdCBhbGwgYnJvd3NlcnMgc3VwcG9ydCB1cGxvYWQgZXZlbnRzXG4gICAgaWYgKG9uVXBsb2FkUHJvZ3Jlc3MgJiYgcmVxdWVzdC51cGxvYWQpIHtcbiAgICAgIChbdXBsb2FkVGhyb3R0bGVkLCBmbHVzaFVwbG9hZF0gPSBwcm9ncmVzc0V2ZW50UmVkdWNlcihvblVwbG9hZFByb2dyZXNzKSk7XG5cbiAgICAgIHJlcXVlc3QudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgdXBsb2FkVGhyb3R0bGVkKTtcblxuICAgICAgcmVxdWVzdC51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVuZCcsIGZsdXNoVXBsb2FkKTtcbiAgICB9XG5cbiAgICBpZiAoX2NvbmZpZy5jYW5jZWxUb2tlbiB8fCBfY29uZmlnLnNpZ25hbCkge1xuICAgICAgLy8gSGFuZGxlIGNhbmNlbGxhdGlvblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgIG9uQ2FuY2VsZWQgPSBjYW5jZWwgPT4ge1xuICAgICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmVqZWN0KCFjYW5jZWwgfHwgY2FuY2VsLnR5cGUgPyBuZXcgQ2FuY2VsZWRFcnJvcihudWxsLCBjb25maWcsIHJlcXVlc3QpIDogY2FuY2VsKTtcbiAgICAgICAgcmVxdWVzdC5hYm9ydCgpO1xuICAgICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICAgIH07XG5cbiAgICAgIF9jb25maWcuY2FuY2VsVG9rZW4gJiYgX2NvbmZpZy5jYW5jZWxUb2tlbi5zdWJzY3JpYmUob25DYW5jZWxlZCk7XG4gICAgICBpZiAoX2NvbmZpZy5zaWduYWwpIHtcbiAgICAgICAgX2NvbmZpZy5zaWduYWwuYWJvcnRlZCA/IG9uQ2FuY2VsZWQoKSA6IF9jb25maWcuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25DYW5jZWxlZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcHJvdG9jb2wgPSBwYXJzZVByb3RvY29sKF9jb25maWcudXJsKTtcblxuICAgIGlmIChwcm90b2NvbCAmJiBwbGF0Zm9ybS5wcm90b2NvbHMuaW5kZXhPZihwcm90b2NvbCkgPT09IC0xKSB7XG4gICAgICByZWplY3QobmV3IEF4aW9zRXJyb3IoJ1Vuc3VwcG9ydGVkIHByb3RvY29sICcgKyBwcm90b2NvbCArICc6JywgQXhpb3NFcnJvci5FUlJfQkFEX1JFUVVFU1QsIGNvbmZpZykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuXG4gICAgLy8gU2VuZCB0aGUgcmVxdWVzdFxuICAgIHJlcXVlc3Quc2VuZChyZXF1ZXN0RGF0YSB8fCBudWxsKTtcbiAgfSk7XG59XG4iLCJpbXBvcnQgQ2FuY2VsZWRFcnJvciBmcm9tIFwiLi4vY2FuY2VsL0NhbmNlbGVkRXJyb3IuanNcIjtcbmltcG9ydCBBeGlvc0Vycm9yIGZyb20gXCIuLi9jb3JlL0F4aW9zRXJyb3IuanNcIjtcbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5cbmNvbnN0IGNvbXBvc2VTaWduYWxzID0gKHNpZ25hbHMsIHRpbWVvdXQpID0+IHtcbiAgY29uc3Qge2xlbmd0aH0gPSAoc2lnbmFscyA9IHNpZ25hbHMgPyBzaWduYWxzLmZpbHRlcihCb29sZWFuKSA6IFtdKTtcblxuICBpZiAodGltZW91dCB8fCBsZW5ndGgpIHtcbiAgICBsZXQgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAgIGxldCBhYm9ydGVkO1xuXG4gICAgY29uc3Qgb25hYm9ydCA9IGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICAgIGlmICghYWJvcnRlZCkge1xuICAgICAgICBhYm9ydGVkID0gdHJ1ZTtcbiAgICAgICAgdW5zdWJzY3JpYmUoKTtcbiAgICAgICAgY29uc3QgZXJyID0gcmVhc29uIGluc3RhbmNlb2YgRXJyb3IgPyByZWFzb24gOiB0aGlzLnJlYXNvbjtcbiAgICAgICAgY29udHJvbGxlci5hYm9ydChlcnIgaW5zdGFuY2VvZiBBeGlvc0Vycm9yID8gZXJyIDogbmV3IENhbmNlbGVkRXJyb3IoZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IGVycikpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCB0aW1lciA9IHRpbWVvdXQgJiYgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aW1lciA9IG51bGw7XG4gICAgICBvbmFib3J0KG5ldyBBeGlvc0Vycm9yKGB0aW1lb3V0ICR7dGltZW91dH0gb2YgbXMgZXhjZWVkZWRgLCBBeGlvc0Vycm9yLkVUSU1FRE9VVCkpXG4gICAgfSwgdGltZW91dClcblxuICAgIGNvbnN0IHVuc3Vic2NyaWJlID0gKCkgPT4ge1xuICAgICAgaWYgKHNpZ25hbHMpIHtcbiAgICAgICAgdGltZXIgJiYgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgdGltZXIgPSBudWxsO1xuICAgICAgICBzaWduYWxzLmZvckVhY2goc2lnbmFsID0+IHtcbiAgICAgICAgICBzaWduYWwudW5zdWJzY3JpYmUgPyBzaWduYWwudW5zdWJzY3JpYmUob25hYm9ydCkgOiBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbmFib3J0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHNpZ25hbHMgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHNpZ25hbHMuZm9yRWFjaCgoc2lnbmFsKSA9PiBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbmFib3J0KSk7XG5cbiAgICBjb25zdCB7c2lnbmFsfSA9IGNvbnRyb2xsZXI7XG5cbiAgICBzaWduYWwudW5zdWJzY3JpYmUgPSAoKSA9PiB1dGlscy5hc2FwKHVuc3Vic2NyaWJlKTtcblxuICAgIHJldHVybiBzaWduYWw7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZVNpZ25hbHM7XG4iLCJcbmV4cG9ydCBjb25zdCBzdHJlYW1DaHVuayA9IGZ1bmN0aW9uKiAoY2h1bmssIGNodW5rU2l6ZSkge1xuICBsZXQgbGVuID0gY2h1bmsuYnl0ZUxlbmd0aDtcblxuICBpZiAoIWNodW5rU2l6ZSB8fCBsZW4gPCBjaHVua1NpemUpIHtcbiAgICB5aWVsZCBjaHVuaztcbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgcG9zID0gMDtcbiAgbGV0IGVuZDtcblxuICB3aGlsZSAocG9zIDwgbGVuKSB7XG4gICAgZW5kID0gcG9zICsgY2h1bmtTaXplO1xuICAgIHlpZWxkIGNodW5rLnNsaWNlKHBvcywgZW5kKTtcbiAgICBwb3MgPSBlbmQ7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHJlYWRCeXRlcyA9IGFzeW5jIGZ1bmN0aW9uKiAoaXRlcmFibGUsIGNodW5rU2l6ZSkge1xuICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHJlYWRTdHJlYW0oaXRlcmFibGUpKSB7XG4gICAgeWllbGQqIHN0cmVhbUNodW5rKGNodW5rLCBjaHVua1NpemUpO1xuICB9XG59XG5cbmNvbnN0IHJlYWRTdHJlYW0gPSBhc3luYyBmdW5jdGlvbiogKHN0cmVhbSkge1xuICBpZiAoc3RyZWFtW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSkge1xuICAgIHlpZWxkKiBzdHJlYW07XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpO1xuICB0cnkge1xuICAgIGZvciAoOzspIHtcbiAgICAgIGNvbnN0IHtkb25lLCB2YWx1ZX0gPSBhd2FpdCByZWFkZXIucmVhZCgpO1xuICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB5aWVsZCB2YWx1ZTtcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgcmVhZGVyLmNhbmNlbCgpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCB0cmFja1N0cmVhbSA9IChzdHJlYW0sIGNodW5rU2l6ZSwgb25Qcm9ncmVzcywgb25GaW5pc2gpID0+IHtcbiAgY29uc3QgaXRlcmF0b3IgPSByZWFkQnl0ZXMoc3RyZWFtLCBjaHVua1NpemUpO1xuXG4gIGxldCBieXRlcyA9IDA7XG4gIGxldCBkb25lO1xuICBsZXQgX29uRmluaXNoID0gKGUpID0+IHtcbiAgICBpZiAoIWRvbmUpIHtcbiAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgb25GaW5pc2ggJiYgb25GaW5pc2goZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgYXN5bmMgcHVsbChjb250cm9sbGVyKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB7ZG9uZSwgdmFsdWV9ID0gYXdhaXQgaXRlcmF0b3IubmV4dCgpO1xuXG4gICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICBfb25GaW5pc2goKTtcbiAgICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxlbiA9IHZhbHVlLmJ5dGVMZW5ndGg7XG4gICAgICAgIGlmIChvblByb2dyZXNzKSB7XG4gICAgICAgICAgbGV0IGxvYWRlZEJ5dGVzID0gYnl0ZXMgKz0gbGVuO1xuICAgICAgICAgIG9uUHJvZ3Jlc3MobG9hZGVkQnl0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgVWludDhBcnJheSh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIF9vbkZpbmlzaChlcnIpO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfSxcbiAgICBjYW5jZWwocmVhc29uKSB7XG4gICAgICBfb25GaW5pc2gocmVhc29uKTtcbiAgICAgIHJldHVybiBpdGVyYXRvci5yZXR1cm4oKTtcbiAgICB9XG4gIH0sIHtcbiAgICBoaWdoV2F0ZXJNYXJrOiAyXG4gIH0pXG59XG4iLCJpbXBvcnQgcGxhdGZvcm0gZnJvbSBcIi4uL3BsYXRmb3JtL2luZGV4LmpzXCI7XG5pbXBvcnQgdXRpbHMgZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgQXhpb3NFcnJvciBmcm9tIFwiLi4vY29yZS9BeGlvc0Vycm9yLmpzXCI7XG5pbXBvcnQgY29tcG9zZVNpZ25hbHMgZnJvbSBcIi4uL2hlbHBlcnMvY29tcG9zZVNpZ25hbHMuanNcIjtcbmltcG9ydCB7dHJhY2tTdHJlYW19IGZyb20gXCIuLi9oZWxwZXJzL3RyYWNrU3RyZWFtLmpzXCI7XG5pbXBvcnQgQXhpb3NIZWFkZXJzIGZyb20gXCIuLi9jb3JlL0F4aW9zSGVhZGVycy5qc1wiO1xuaW1wb3J0IHtwcm9ncmVzc0V2ZW50UmVkdWNlciwgcHJvZ3Jlc3NFdmVudERlY29yYXRvciwgYXN5bmNEZWNvcmF0b3J9IGZyb20gXCIuLi9oZWxwZXJzL3Byb2dyZXNzRXZlbnRSZWR1Y2VyLmpzXCI7XG5pbXBvcnQgcmVzb2x2ZUNvbmZpZyBmcm9tIFwiLi4vaGVscGVycy9yZXNvbHZlQ29uZmlnLmpzXCI7XG5pbXBvcnQgc2V0dGxlIGZyb20gXCIuLi9jb3JlL3NldHRsZS5qc1wiO1xuXG5jb25zdCBpc0ZldGNoU3VwcG9ydGVkID0gdHlwZW9mIGZldGNoID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBSZXF1ZXN0ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBSZXNwb25zZSA9PT0gJ2Z1bmN0aW9uJztcbmNvbnN0IGlzUmVhZGFibGVTdHJlYW1TdXBwb3J0ZWQgPSBpc0ZldGNoU3VwcG9ydGVkICYmIHR5cGVvZiBSZWFkYWJsZVN0cmVhbSA9PT0gJ2Z1bmN0aW9uJztcblxuLy8gdXNlZCBvbmx5IGluc2lkZSB0aGUgZmV0Y2ggYWRhcHRlclxuY29uc3QgZW5jb2RlVGV4dCA9IGlzRmV0Y2hTdXBwb3J0ZWQgJiYgKHR5cGVvZiBUZXh0RW5jb2RlciA9PT0gJ2Z1bmN0aW9uJyA/XG4gICAgKChlbmNvZGVyKSA9PiAoc3RyKSA9PiBlbmNvZGVyLmVuY29kZShzdHIpKShuZXcgVGV4dEVuY29kZXIoKSkgOlxuICAgIGFzeW5jIChzdHIpID0+IG5ldyBVaW50OEFycmF5KGF3YWl0IG5ldyBSZXNwb25zZShzdHIpLmFycmF5QnVmZmVyKCkpXG4pO1xuXG5jb25zdCB0ZXN0ID0gKGZuLCAuLi5hcmdzKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZm4oLi4uYXJncyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5jb25zdCBzdXBwb3J0c1JlcXVlc3RTdHJlYW0gPSBpc1JlYWRhYmxlU3RyZWFtU3VwcG9ydGVkICYmIHRlc3QoKCkgPT4ge1xuICBsZXQgZHVwbGV4QWNjZXNzZWQgPSBmYWxzZTtcblxuICBjb25zdCBoYXNDb250ZW50VHlwZSA9IG5ldyBSZXF1ZXN0KHBsYXRmb3JtLm9yaWdpbiwge1xuICAgIGJvZHk6IG5ldyBSZWFkYWJsZVN0cmVhbSgpLFxuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGdldCBkdXBsZXgoKSB7XG4gICAgICBkdXBsZXhBY2Nlc3NlZCA9IHRydWU7XG4gICAgICByZXR1cm4gJ2hhbGYnO1xuICAgIH0sXG4gIH0pLmhlYWRlcnMuaGFzKCdDb250ZW50LVR5cGUnKTtcblxuICByZXR1cm4gZHVwbGV4QWNjZXNzZWQgJiYgIWhhc0NvbnRlbnRUeXBlO1xufSk7XG5cbmNvbnN0IERFRkFVTFRfQ0hVTktfU0laRSA9IDY0ICogMTAyNDtcblxuY29uc3Qgc3VwcG9ydHNSZXNwb25zZVN0cmVhbSA9IGlzUmVhZGFibGVTdHJlYW1TdXBwb3J0ZWQgJiZcbiAgdGVzdCgoKSA9PiB1dGlscy5pc1JlYWRhYmxlU3RyZWFtKG5ldyBSZXNwb25zZSgnJykuYm9keSkpO1xuXG5cbmNvbnN0IHJlc29sdmVycyA9IHtcbiAgc3RyZWFtOiBzdXBwb3J0c1Jlc3BvbnNlU3RyZWFtICYmICgocmVzKSA9PiByZXMuYm9keSlcbn07XG5cbmlzRmV0Y2hTdXBwb3J0ZWQgJiYgKCgocmVzKSA9PiB7XG4gIFsndGV4dCcsICdhcnJheUJ1ZmZlcicsICdibG9iJywgJ2Zvcm1EYXRhJywgJ3N0cmVhbSddLmZvckVhY2godHlwZSA9PiB7XG4gICAgIXJlc29sdmVyc1t0eXBlXSAmJiAocmVzb2x2ZXJzW3R5cGVdID0gdXRpbHMuaXNGdW5jdGlvbihyZXNbdHlwZV0pID8gKHJlcykgPT4gcmVzW3R5cGVdKCkgOlxuICAgICAgKF8sIGNvbmZpZykgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcihgUmVzcG9uc2UgdHlwZSAnJHt0eXBlfScgaXMgbm90IHN1cHBvcnRlZGAsIEF4aW9zRXJyb3IuRVJSX05PVF9TVVBQT1JULCBjb25maWcpO1xuICAgICAgfSlcbiAgfSk7XG59KShuZXcgUmVzcG9uc2UpKTtcblxuY29uc3QgZ2V0Qm9keUxlbmd0aCA9IGFzeW5jIChib2R5KSA9PiB7XG4gIGlmIChib2R5ID09IG51bGwpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGlmKHV0aWxzLmlzQmxvYihib2R5KSkge1xuICAgIHJldHVybiBib2R5LnNpemU7XG4gIH1cblxuICBpZih1dGlscy5pc1NwZWNDb21wbGlhbnRGb3JtKGJvZHkpKSB7XG4gICAgY29uc3QgX3JlcXVlc3QgPSBuZXcgUmVxdWVzdChwbGF0Zm9ybS5vcmlnaW4sIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keSxcbiAgICB9KTtcbiAgICByZXR1cm4gKGF3YWl0IF9yZXF1ZXN0LmFycmF5QnVmZmVyKCkpLmJ5dGVMZW5ndGg7XG4gIH1cblxuICBpZih1dGlscy5pc0FycmF5QnVmZmVyVmlldyhib2R5KSB8fCB1dGlscy5pc0FycmF5QnVmZmVyKGJvZHkpKSB7XG4gICAgcmV0dXJuIGJvZHkuYnl0ZUxlbmd0aDtcbiAgfVxuXG4gIGlmKHV0aWxzLmlzVVJMU2VhcmNoUGFyYW1zKGJvZHkpKSB7XG4gICAgYm9keSA9IGJvZHkgKyAnJztcbiAgfVxuXG4gIGlmKHV0aWxzLmlzU3RyaW5nKGJvZHkpKSB7XG4gICAgcmV0dXJuIChhd2FpdCBlbmNvZGVUZXh0KGJvZHkpKS5ieXRlTGVuZ3RoO1xuICB9XG59XG5cbmNvbnN0IHJlc29sdmVCb2R5TGVuZ3RoID0gYXN5bmMgKGhlYWRlcnMsIGJvZHkpID0+IHtcbiAgY29uc3QgbGVuZ3RoID0gdXRpbHMudG9GaW5pdGVOdW1iZXIoaGVhZGVycy5nZXRDb250ZW50TGVuZ3RoKCkpO1xuXG4gIHJldHVybiBsZW5ndGggPT0gbnVsbCA/IGdldEJvZHlMZW5ndGgoYm9keSkgOiBsZW5ndGg7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzRmV0Y2hTdXBwb3J0ZWQgJiYgKGFzeW5jIChjb25maWcpID0+IHtcbiAgbGV0IHtcbiAgICB1cmwsXG4gICAgbWV0aG9kLFxuICAgIGRhdGEsXG4gICAgc2lnbmFsLFxuICAgIGNhbmNlbFRva2VuLFxuICAgIHRpbWVvdXQsXG4gICAgb25Eb3dubG9hZFByb2dyZXNzLFxuICAgIG9uVXBsb2FkUHJvZ3Jlc3MsXG4gICAgcmVzcG9uc2VUeXBlLFxuICAgIGhlYWRlcnMsXG4gICAgd2l0aENyZWRlbnRpYWxzID0gJ3NhbWUtb3JpZ2luJyxcbiAgICBmZXRjaE9wdGlvbnNcbiAgfSA9IHJlc29sdmVDb25maWcoY29uZmlnKTtcblxuICByZXNwb25zZVR5cGUgPSByZXNwb25zZVR5cGUgPyAocmVzcG9uc2VUeXBlICsgJycpLnRvTG93ZXJDYXNlKCkgOiAndGV4dCc7XG5cbiAgbGV0IGNvbXBvc2VkU2lnbmFsID0gY29tcG9zZVNpZ25hbHMoW3NpZ25hbCwgY2FuY2VsVG9rZW4gJiYgY2FuY2VsVG9rZW4udG9BYm9ydFNpZ25hbCgpXSwgdGltZW91dCk7XG5cbiAgbGV0IHJlcXVlc3Q7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmUgPSBjb21wb3NlZFNpZ25hbCAmJiBjb21wb3NlZFNpZ25hbC51bnN1YnNjcmliZSAmJiAoKCkgPT4ge1xuICAgICAgY29tcG9zZWRTaWduYWwudW5zdWJzY3JpYmUoKTtcbiAgfSk7XG5cbiAgbGV0IHJlcXVlc3RDb250ZW50TGVuZ3RoO1xuXG4gIHRyeSB7XG4gICAgaWYgKFxuICAgICAgb25VcGxvYWRQcm9ncmVzcyAmJiBzdXBwb3J0c1JlcXVlc3RTdHJlYW0gJiYgbWV0aG9kICE9PSAnZ2V0JyAmJiBtZXRob2QgIT09ICdoZWFkJyAmJlxuICAgICAgKHJlcXVlc3RDb250ZW50TGVuZ3RoID0gYXdhaXQgcmVzb2x2ZUJvZHlMZW5ndGgoaGVhZGVycywgZGF0YSkpICE9PSAwXG4gICAgKSB7XG4gICAgICBsZXQgX3JlcXVlc3QgPSBuZXcgUmVxdWVzdCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJvZHk6IGRhdGEsXG4gICAgICAgIGR1cGxleDogXCJoYWxmXCJcbiAgICAgIH0pO1xuXG4gICAgICBsZXQgY29udGVudFR5cGVIZWFkZXI7XG5cbiAgICAgIGlmICh1dGlscy5pc0Zvcm1EYXRhKGRhdGEpICYmIChjb250ZW50VHlwZUhlYWRlciA9IF9yZXF1ZXN0LmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSkpIHtcbiAgICAgICAgaGVhZGVycy5zZXRDb250ZW50VHlwZShjb250ZW50VHlwZUhlYWRlcilcbiAgICAgIH1cblxuICAgICAgaWYgKF9yZXF1ZXN0LmJvZHkpIHtcbiAgICAgICAgY29uc3QgW29uUHJvZ3Jlc3MsIGZsdXNoXSA9IHByb2dyZXNzRXZlbnREZWNvcmF0b3IoXG4gICAgICAgICAgcmVxdWVzdENvbnRlbnRMZW5ndGgsXG4gICAgICAgICAgcHJvZ3Jlc3NFdmVudFJlZHVjZXIoYXN5bmNEZWNvcmF0b3Iob25VcGxvYWRQcm9ncmVzcykpXG4gICAgICAgICk7XG5cbiAgICAgICAgZGF0YSA9IHRyYWNrU3RyZWFtKF9yZXF1ZXN0LmJvZHksIERFRkFVTFRfQ0hVTktfU0laRSwgb25Qcm9ncmVzcywgZmx1c2gpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdXRpbHMuaXNTdHJpbmcod2l0aENyZWRlbnRpYWxzKSkge1xuICAgICAgd2l0aENyZWRlbnRpYWxzID0gd2l0aENyZWRlbnRpYWxzID8gJ2luY2x1ZGUnIDogJ29taXQnO1xuICAgIH1cblxuICAgIC8vIENsb3VkZmxhcmUgV29ya2VycyB0aHJvd3Mgd2hlbiBjcmVkZW50aWFscyBhcmUgZGVmaW5lZFxuICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vY2xvdWRmbGFyZS93b3JrZXJkL2lzc3Vlcy85MDJcbiAgICBjb25zdCBpc0NyZWRlbnRpYWxzU3VwcG9ydGVkID0gXCJjcmVkZW50aWFsc1wiIGluIFJlcXVlc3QucHJvdG90eXBlO1xuICAgIHJlcXVlc3QgPSBuZXcgUmVxdWVzdCh1cmwsIHtcbiAgICAgIC4uLmZldGNoT3B0aW9ucyxcbiAgICAgIHNpZ25hbDogY29tcG9zZWRTaWduYWwsXG4gICAgICBtZXRob2Q6IG1ldGhvZC50b1VwcGVyQ2FzZSgpLFxuICAgICAgaGVhZGVyczogaGVhZGVycy5ub3JtYWxpemUoKS50b0pTT04oKSxcbiAgICAgIGJvZHk6IGRhdGEsXG4gICAgICBkdXBsZXg6IFwiaGFsZlwiLFxuICAgICAgY3JlZGVudGlhbHM6IGlzQ3JlZGVudGlhbHNTdXBwb3J0ZWQgPyB3aXRoQ3JlZGVudGlhbHMgOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHJlcXVlc3QpO1xuXG4gICAgY29uc3QgaXNTdHJlYW1SZXNwb25zZSA9IHN1cHBvcnRzUmVzcG9uc2VTdHJlYW0gJiYgKHJlc3BvbnNlVHlwZSA9PT0gJ3N0cmVhbScgfHwgcmVzcG9uc2VUeXBlID09PSAncmVzcG9uc2UnKTtcblxuICAgIGlmIChzdXBwb3J0c1Jlc3BvbnNlU3RyZWFtICYmIChvbkRvd25sb2FkUHJvZ3Jlc3MgfHwgKGlzU3RyZWFtUmVzcG9uc2UgJiYgdW5zdWJzY3JpYmUpKSkge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHt9O1xuXG4gICAgICBbJ3N0YXR1cycsICdzdGF0dXNUZXh0JywgJ2hlYWRlcnMnXS5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgICBvcHRpb25zW3Byb3BdID0gcmVzcG9uc2VbcHJvcF07XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVzcG9uc2VDb250ZW50TGVuZ3RoID0gdXRpbHMudG9GaW5pdGVOdW1iZXIocmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRlbnQtbGVuZ3RoJykpO1xuXG4gICAgICBjb25zdCBbb25Qcm9ncmVzcywgZmx1c2hdID0gb25Eb3dubG9hZFByb2dyZXNzICYmIHByb2dyZXNzRXZlbnREZWNvcmF0b3IoXG4gICAgICAgIHJlc3BvbnNlQ29udGVudExlbmd0aCxcbiAgICAgICAgcHJvZ3Jlc3NFdmVudFJlZHVjZXIoYXN5bmNEZWNvcmF0b3Iob25Eb3dubG9hZFByb2dyZXNzKSwgdHJ1ZSlcbiAgICAgICkgfHwgW107XG5cbiAgICAgIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKFxuICAgICAgICB0cmFja1N0cmVhbShyZXNwb25zZS5ib2R5LCBERUZBVUxUX0NIVU5LX1NJWkUsIG9uUHJvZ3Jlc3MsICgpID0+IHtcbiAgICAgICAgICBmbHVzaCAmJiBmbHVzaCgpO1xuICAgICAgICAgIHVuc3Vic2NyaWJlICYmIHVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBvcHRpb25zXG4gICAgICApO1xuICAgIH1cblxuICAgIHJlc3BvbnNlVHlwZSA9IHJlc3BvbnNlVHlwZSB8fCAndGV4dCc7XG5cbiAgICBsZXQgcmVzcG9uc2VEYXRhID0gYXdhaXQgcmVzb2x2ZXJzW3V0aWxzLmZpbmRLZXkocmVzb2x2ZXJzLCByZXNwb25zZVR5cGUpIHx8ICd0ZXh0J10ocmVzcG9uc2UsIGNvbmZpZyk7XG5cbiAgICAhaXNTdHJlYW1SZXNwb25zZSAmJiB1bnN1YnNjcmliZSAmJiB1bnN1YnNjcmliZSgpO1xuXG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHtcbiAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLFxuICAgICAgICBoZWFkZXJzOiBBeGlvc0hlYWRlcnMuZnJvbShyZXNwb25zZS5oZWFkZXJzKSxcbiAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1c1RleHQsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxdWVzdFxuICAgICAgfSlcbiAgICB9KVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB1bnN1YnNjcmliZSAmJiB1bnN1YnNjcmliZSgpO1xuXG4gICAgaWYgKGVyciAmJiBlcnIubmFtZSA9PT0gJ1R5cGVFcnJvcicgJiYgL2ZldGNoL2kudGVzdChlcnIubWVzc2FnZSkpIHtcbiAgICAgIHRocm93IE9iamVjdC5hc3NpZ24oXG4gICAgICAgIG5ldyBBeGlvc0Vycm9yKCdOZXR3b3JrIEVycm9yJywgQXhpb3NFcnJvci5FUlJfTkVUV09SSywgY29uZmlnLCByZXF1ZXN0KSxcbiAgICAgICAge1xuICAgICAgICAgIGNhdXNlOiBlcnIuY2F1c2UgfHwgZXJyXG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9XG5cbiAgICB0aHJvdyBBeGlvc0Vycm9yLmZyb20oZXJyLCBlcnIgJiYgZXJyLmNvZGUsIGNvbmZpZywgcmVxdWVzdCk7XG4gIH1cbn0pO1xuXG5cbiIsImltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5pbXBvcnQgaHR0cEFkYXB0ZXIgZnJvbSAnLi9odHRwLmpzJztcbmltcG9ydCB4aHJBZGFwdGVyIGZyb20gJy4veGhyLmpzJztcbmltcG9ydCBmZXRjaEFkYXB0ZXIgZnJvbSAnLi9mZXRjaC5qcyc7XG5pbXBvcnQgQXhpb3NFcnJvciBmcm9tIFwiLi4vY29yZS9BeGlvc0Vycm9yLmpzXCI7XG5cbmNvbnN0IGtub3duQWRhcHRlcnMgPSB7XG4gIGh0dHA6IGh0dHBBZGFwdGVyLFxuICB4aHI6IHhockFkYXB0ZXIsXG4gIGZldGNoOiBmZXRjaEFkYXB0ZXJcbn1cblxudXRpbHMuZm9yRWFjaChrbm93bkFkYXB0ZXJzLCAoZm4sIHZhbHVlKSA9PiB7XG4gIGlmIChmbikge1xuICAgIHRyeSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm4sICduYW1lJywge3ZhbHVlfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmbiwgJ2FkYXB0ZXJOYW1lJywge3ZhbHVlfSk7XG4gIH1cbn0pO1xuXG5jb25zdCByZW5kZXJSZWFzb24gPSAocmVhc29uKSA9PiBgLSAke3JlYXNvbn1gO1xuXG5jb25zdCBpc1Jlc29sdmVkSGFuZGxlID0gKGFkYXB0ZXIpID0+IHV0aWxzLmlzRnVuY3Rpb24oYWRhcHRlcikgfHwgYWRhcHRlciA9PT0gbnVsbCB8fCBhZGFwdGVyID09PSBmYWxzZTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBnZXRBZGFwdGVyOiAoYWRhcHRlcnMpID0+IHtcbiAgICBhZGFwdGVycyA9IHV0aWxzLmlzQXJyYXkoYWRhcHRlcnMpID8gYWRhcHRlcnMgOiBbYWRhcHRlcnNdO1xuXG4gICAgY29uc3Qge2xlbmd0aH0gPSBhZGFwdGVycztcbiAgICBsZXQgbmFtZU9yQWRhcHRlcjtcbiAgICBsZXQgYWRhcHRlcjtcblxuICAgIGNvbnN0IHJlamVjdGVkUmVhc29ucyA9IHt9O1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgbmFtZU9yQWRhcHRlciA9IGFkYXB0ZXJzW2ldO1xuICAgICAgbGV0IGlkO1xuXG4gICAgICBhZGFwdGVyID0gbmFtZU9yQWRhcHRlcjtcblxuICAgICAgaWYgKCFpc1Jlc29sdmVkSGFuZGxlKG5hbWVPckFkYXB0ZXIpKSB7XG4gICAgICAgIGFkYXB0ZXIgPSBrbm93bkFkYXB0ZXJzWyhpZCA9IFN0cmluZyhuYW1lT3JBZGFwdGVyKSkudG9Mb3dlckNhc2UoKV07XG5cbiAgICAgICAgaWYgKGFkYXB0ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRocm93IG5ldyBBeGlvc0Vycm9yKGBVbmtub3duIGFkYXB0ZXIgJyR7aWR9J2ApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhZGFwdGVyKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZWplY3RlZFJlYXNvbnNbaWQgfHwgJyMnICsgaV0gPSBhZGFwdGVyO1xuICAgIH1cblxuICAgIGlmICghYWRhcHRlcikge1xuXG4gICAgICBjb25zdCByZWFzb25zID0gT2JqZWN0LmVudHJpZXMocmVqZWN0ZWRSZWFzb25zKVxuICAgICAgICAubWFwKChbaWQsIHN0YXRlXSkgPT4gYGFkYXB0ZXIgJHtpZH0gYCArXG4gICAgICAgICAgKHN0YXRlID09PSBmYWxzZSA/ICdpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBlbnZpcm9ubWVudCcgOiAnaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgYnVpbGQnKVxuICAgICAgICApO1xuXG4gICAgICBsZXQgcyA9IGxlbmd0aCA/XG4gICAgICAgIChyZWFzb25zLmxlbmd0aCA+IDEgPyAnc2luY2UgOlxcbicgKyByZWFzb25zLm1hcChyZW5kZXJSZWFzb24pLmpvaW4oJ1xcbicpIDogJyAnICsgcmVuZGVyUmVhc29uKHJlYXNvbnNbMF0pKSA6XG4gICAgICAgICdhcyBubyBhZGFwdGVyIHNwZWNpZmllZCc7XG5cbiAgICAgIHRocm93IG5ldyBBeGlvc0Vycm9yKFxuICAgICAgICBgVGhlcmUgaXMgbm8gc3VpdGFibGUgYWRhcHRlciB0byBkaXNwYXRjaCB0aGUgcmVxdWVzdCBgICsgcyxcbiAgICAgICAgJ0VSUl9OT1RfU1VQUE9SVCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFkYXB0ZXI7XG4gIH0sXG4gIGFkYXB0ZXJzOiBrbm93bkFkYXB0ZXJzXG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB0cmFuc2Zvcm1EYXRhIGZyb20gJy4vdHJhbnNmb3JtRGF0YS5qcyc7XG5pbXBvcnQgaXNDYW5jZWwgZnJvbSAnLi4vY2FuY2VsL2lzQ2FuY2VsLmpzJztcbmltcG9ydCBkZWZhdWx0cyBmcm9tICcuLi9kZWZhdWx0cy9pbmRleC5qcyc7XG5pbXBvcnQgQ2FuY2VsZWRFcnJvciBmcm9tICcuLi9jYW5jZWwvQ2FuY2VsZWRFcnJvci5qcyc7XG5pbXBvcnQgQXhpb3NIZWFkZXJzIGZyb20gJy4uL2NvcmUvQXhpb3NIZWFkZXJzLmpzJztcbmltcG9ydCBhZGFwdGVycyBmcm9tIFwiLi4vYWRhcHRlcnMvYWRhcHRlcnMuanNcIjtcblxuLyoqXG4gKiBUaHJvd3MgYSBgQ2FuY2VsZWRFcnJvcmAgaWYgY2FuY2VsbGF0aW9uIGhhcyBiZWVuIHJlcXVlc3RlZC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcgdGhhdCBpcyB0byBiZSB1c2VkIGZvciB0aGUgcmVxdWVzdFxuICpcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZykge1xuICBpZiAoY29uZmlnLmNhbmNlbFRva2VuKSB7XG4gICAgY29uZmlnLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKTtcbiAgfVxuXG4gIGlmIChjb25maWcuc2lnbmFsICYmIGNvbmZpZy5zaWduYWwuYWJvcnRlZCkge1xuICAgIHRocm93IG5ldyBDYW5jZWxlZEVycm9yKG51bGwsIGNvbmZpZyk7XG4gIH1cbn1cblxuLyoqXG4gKiBEaXNwYXRjaCBhIHJlcXVlc3QgdG8gdGhlIHNlcnZlciB1c2luZyB0aGUgY29uZmlndXJlZCBhZGFwdGVyLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZyB0aGF0IGlzIHRvIGJlIHVzZWQgZm9yIHRoZSByZXF1ZXN0XG4gKlxuICogQHJldHVybnMge1Byb21pc2V9IFRoZSBQcm9taXNlIHRvIGJlIGZ1bGZpbGxlZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaXNwYXRjaFJlcXVlc3QoY29uZmlnKSB7XG4gIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICBjb25maWcuaGVhZGVycyA9IEF4aW9zSGVhZGVycy5mcm9tKGNvbmZpZy5oZWFkZXJzKTtcblxuICAvLyBUcmFuc2Zvcm0gcmVxdWVzdCBkYXRhXG4gIGNvbmZpZy5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxuICAgIGNvbmZpZyxcbiAgICBjb25maWcudHJhbnNmb3JtUmVxdWVzdFxuICApO1xuXG4gIGlmIChbJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJ10uaW5kZXhPZihjb25maWcubWV0aG9kKSAhPT0gLTEpIHtcbiAgICBjb25maWcuaGVhZGVycy5zZXRDb250ZW50VHlwZSgnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJywgZmFsc2UpO1xuICB9XG5cbiAgY29uc3QgYWRhcHRlciA9IGFkYXB0ZXJzLmdldEFkYXB0ZXIoY29uZmlnLmFkYXB0ZXIgfHwgZGVmYXVsdHMuYWRhcHRlcik7XG5cbiAgcmV0dXJuIGFkYXB0ZXIoY29uZmlnKS50aGVuKGZ1bmN0aW9uIG9uQWRhcHRlclJlc29sdXRpb24ocmVzcG9uc2UpIHtcbiAgICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gcmVzcG9uc2UgZGF0YVxuICAgIHJlc3BvbnNlLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXG4gICAgICBjb25maWcsXG4gICAgICBjb25maWcudHJhbnNmb3JtUmVzcG9uc2UsXG4gICAgICByZXNwb25zZVxuICAgICk7XG5cbiAgICByZXNwb25zZS5oZWFkZXJzID0gQXhpb3NIZWFkZXJzLmZyb20ocmVzcG9uc2UuaGVhZGVycyk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH0sIGZ1bmN0aW9uIG9uQWRhcHRlclJlamVjdGlvbihyZWFzb24pIHtcbiAgICBpZiAoIWlzQ2FuY2VsKHJlYXNvbikpIHtcbiAgICAgIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAgICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcbiAgICAgIGlmIChyZWFzb24gJiYgcmVhc29uLnJlc3BvbnNlKSB7XG4gICAgICAgIHJlYXNvbi5yZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBjb25maWcudHJhbnNmb3JtUmVzcG9uc2UsXG4gICAgICAgICAgcmVhc29uLnJlc3BvbnNlXG4gICAgICAgICk7XG4gICAgICAgIHJlYXNvbi5yZXNwb25zZS5oZWFkZXJzID0gQXhpb3NIZWFkZXJzLmZyb20ocmVhc29uLnJlc3BvbnNlLmhlYWRlcnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChyZWFzb24pO1xuICB9KTtcbn1cbiIsImV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIxLjcuOVwiOyIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHtWRVJTSU9OfSBmcm9tICcuLi9lbnYvZGF0YS5qcyc7XG5pbXBvcnQgQXhpb3NFcnJvciBmcm9tICcuLi9jb3JlL0F4aW9zRXJyb3IuanMnO1xuXG5jb25zdCB2YWxpZGF0b3JzID0ge307XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5bJ29iamVjdCcsICdib29sZWFuJywgJ251bWJlcicsICdmdW5jdGlvbicsICdzdHJpbmcnLCAnc3ltYm9sJ10uZm9yRWFjaCgodHlwZSwgaSkgPT4ge1xuICB2YWxpZGF0b3JzW3R5cGVdID0gZnVuY3Rpb24gdmFsaWRhdG9yKHRoaW5nKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGluZyA9PT0gdHlwZSB8fCAnYScgKyAoaSA8IDEgPyAnbiAnIDogJyAnKSArIHR5cGU7XG4gIH07XG59KTtcblxuY29uc3QgZGVwcmVjYXRlZFdhcm5pbmdzID0ge307XG5cbi8qKlxuICogVHJhbnNpdGlvbmFsIG9wdGlvbiB2YWxpZGF0b3JcbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufGJvb2xlYW4/fSB2YWxpZGF0b3IgLSBzZXQgdG8gZmFsc2UgaWYgdGhlIHRyYW5zaXRpb25hbCBvcHRpb24gaGFzIGJlZW4gcmVtb3ZlZFxuICogQHBhcmFtIHtzdHJpbmc/fSB2ZXJzaW9uIC0gZGVwcmVjYXRlZCB2ZXJzaW9uIC8gcmVtb3ZlZCBzaW5jZSB2ZXJzaW9uXG4gKiBAcGFyYW0ge3N0cmluZz99IG1lc3NhZ2UgLSBzb21lIG1lc3NhZ2Ugd2l0aCBhZGRpdGlvbmFsIGluZm9cbiAqXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb259XG4gKi9cbnZhbGlkYXRvcnMudHJhbnNpdGlvbmFsID0gZnVuY3Rpb24gdHJhbnNpdGlvbmFsKHZhbGlkYXRvciwgdmVyc2lvbiwgbWVzc2FnZSkge1xuICBmdW5jdGlvbiBmb3JtYXRNZXNzYWdlKG9wdCwgZGVzYykge1xuICAgIHJldHVybiAnW0F4aW9zIHYnICsgVkVSU0lPTiArICddIFRyYW5zaXRpb25hbCBvcHRpb24gXFwnJyArIG9wdCArICdcXCcnICsgZGVzYyArIChtZXNzYWdlID8gJy4gJyArIG1lc3NhZ2UgOiAnJyk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICByZXR1cm4gKHZhbHVlLCBvcHQsIG9wdHMpID0+IHtcbiAgICBpZiAodmFsaWRhdG9yID09PSBmYWxzZSkge1xuICAgICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoXG4gICAgICAgIGZvcm1hdE1lc3NhZ2Uob3B0LCAnIGhhcyBiZWVuIHJlbW92ZWQnICsgKHZlcnNpb24gPyAnIGluICcgKyB2ZXJzaW9uIDogJycpKSxcbiAgICAgICAgQXhpb3NFcnJvci5FUlJfREVQUkVDQVRFRFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodmVyc2lvbiAmJiAhZGVwcmVjYXRlZFdhcm5pbmdzW29wdF0pIHtcbiAgICAgIGRlcHJlY2F0ZWRXYXJuaW5nc1tvcHRdID0gdHJ1ZTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGZvcm1hdE1lc3NhZ2UoXG4gICAgICAgICAgb3B0LFxuICAgICAgICAgICcgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2JyArIHZlcnNpb24gKyAnIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlJ1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0b3IgPyB2YWxpZGF0b3IodmFsdWUsIG9wdCwgb3B0cykgOiB0cnVlO1xuICB9O1xufTtcblxudmFsaWRhdG9ycy5zcGVsbGluZyA9IGZ1bmN0aW9uIHNwZWxsaW5nKGNvcnJlY3RTcGVsbGluZykge1xuICByZXR1cm4gKHZhbHVlLCBvcHQpID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUud2FybihgJHtvcHR9IGlzIGxpa2VseSBhIG1pc3NwZWxsaW5nIG9mICR7Y29ycmVjdFNwZWxsaW5nfWApO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG4vKipcbiAqIEFzc2VydCBvYmplY3QncyBwcm9wZXJ0aWVzIHR5cGVcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICogQHBhcmFtIHtvYmplY3R9IHNjaGVtYVxuICogQHBhcmFtIHtib29sZWFuP30gYWxsb3dVbmtub3duXG4gKlxuICogQHJldHVybnMge29iamVjdH1cbiAqL1xuXG5mdW5jdGlvbiBhc3NlcnRPcHRpb25zKG9wdGlvbnMsIHNjaGVtYSwgYWxsb3dVbmtub3duKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcsIEF4aW9zRXJyb3IuRVJSX0JBRF9PUFRJT05fVkFMVUUpO1xuICB9XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvcHRpb25zKTtcbiAgbGV0IGkgPSBrZXlzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSA+IDApIHtcbiAgICBjb25zdCBvcHQgPSBrZXlzW2ldO1xuICAgIGNvbnN0IHZhbGlkYXRvciA9IHNjaGVtYVtvcHRdO1xuICAgIGlmICh2YWxpZGF0b3IpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb3B0aW9uc1tvcHRdO1xuICAgICAgY29uc3QgcmVzdWx0ID0gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWxpZGF0b3IodmFsdWUsIG9wdCwgb3B0aW9ucyk7XG4gICAgICBpZiAocmVzdWx0ICE9PSB0cnVlKSB7XG4gICAgICAgIHRocm93IG5ldyBBeGlvc0Vycm9yKCdvcHRpb24gJyArIG9wdCArICcgbXVzdCBiZSAnICsgcmVzdWx0LCBBeGlvc0Vycm9yLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoYWxsb3dVbmtub3duICE9PSB0cnVlKSB7XG4gICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcignVW5rbm93biBvcHRpb24gJyArIG9wdCwgQXhpb3NFcnJvci5FUlJfQkFEX09QVElPTik7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgYXNzZXJ0T3B0aW9ucyxcbiAgdmFsaWRhdG9yc1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4vLi4vdXRpbHMuanMnO1xuaW1wb3J0IGJ1aWxkVVJMIGZyb20gJy4uL2hlbHBlcnMvYnVpbGRVUkwuanMnO1xuaW1wb3J0IEludGVyY2VwdG9yTWFuYWdlciBmcm9tICcuL0ludGVyY2VwdG9yTWFuYWdlci5qcyc7XG5pbXBvcnQgZGlzcGF0Y2hSZXF1ZXN0IGZyb20gJy4vZGlzcGF0Y2hSZXF1ZXN0LmpzJztcbmltcG9ydCBtZXJnZUNvbmZpZyBmcm9tICcuL21lcmdlQ29uZmlnLmpzJztcbmltcG9ydCBidWlsZEZ1bGxQYXRoIGZyb20gJy4vYnVpbGRGdWxsUGF0aC5qcyc7XG5pbXBvcnQgdmFsaWRhdG9yIGZyb20gJy4uL2hlbHBlcnMvdmFsaWRhdG9yLmpzJztcbmltcG9ydCBBeGlvc0hlYWRlcnMgZnJvbSAnLi9BeGlvc0hlYWRlcnMuanMnO1xuXG5jb25zdCB2YWxpZGF0b3JzID0gdmFsaWRhdG9yLnZhbGlkYXRvcnM7XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGluc3RhbmNlQ29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXG4gKlxuICogQHJldHVybiB7QXhpb3N9IEEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXG4gKi9cbmNsYXNzIEF4aW9zIHtcbiAgY29uc3RydWN0b3IoaW5zdGFuY2VDb25maWcpIHtcbiAgICB0aGlzLmRlZmF1bHRzID0gaW5zdGFuY2VDb25maWc7XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMgPSB7XG4gICAgICByZXF1ZXN0OiBuZXcgSW50ZXJjZXB0b3JNYW5hZ2VyKCksXG4gICAgICByZXNwb25zZTogbmV3IEludGVyY2VwdG9yTWFuYWdlcigpXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwYXRjaCBhIHJlcXVlc3RcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBjb25maWdPclVybCBUaGUgY29uZmlnIHNwZWNpZmljIGZvciB0aGlzIHJlcXVlc3QgKG1lcmdlZCB3aXRoIHRoaXMuZGVmYXVsdHMpXG4gICAqIEBwYXJhbSB7P09iamVjdH0gY29uZmlnXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlfSBUaGUgUHJvbWlzZSB0byBiZSBmdWxmaWxsZWRcbiAgICovXG4gIGFzeW5jIHJlcXVlc3QoY29uZmlnT3JVcmwsIGNvbmZpZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5fcmVxdWVzdChjb25maWdPclVybCwgY29uZmlnKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBsZXQgZHVtbXkgPSB7fTtcblxuICAgICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSA/IEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGR1bW15KSA6IChkdW1teSA9IG5ldyBFcnJvcigpKTtcblxuICAgICAgICAvLyBzbGljZSBvZmYgdGhlIEVycm9yOiAuLi4gbGluZVxuICAgICAgICBjb25zdCBzdGFjayA9IGR1bW15LnN0YWNrID8gZHVtbXkuc3RhY2sucmVwbGFjZSgvXi4rXFxuLywgJycpIDogJyc7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKCFlcnIuc3RhY2spIHtcbiAgICAgICAgICAgIGVyci5zdGFjayA9IHN0YWNrO1xuICAgICAgICAgICAgLy8gbWF0Y2ggd2l0aG91dCB0aGUgMiB0b3Agc3RhY2sgbGluZXNcbiAgICAgICAgICB9IGVsc2UgaWYgKHN0YWNrICYmICFTdHJpbmcoZXJyLnN0YWNrKS5lbmRzV2l0aChzdGFjay5yZXBsYWNlKC9eLitcXG4uK1xcbi8sICcnKSkpIHtcbiAgICAgICAgICAgIGVyci5zdGFjayArPSAnXFxuJyArIHN0YWNrXG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy8gaWdub3JlIHRoZSBjYXNlIHdoZXJlIFwic3RhY2tcIiBpcyBhbiB1bi13cml0YWJsZSBwcm9wZXJ0eVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICBfcmVxdWVzdChjb25maWdPclVybCwgY29uZmlnKSB7XG4gICAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gICAgLy8gQWxsb3cgZm9yIGF4aW9zKCdleGFtcGxlL3VybCdbLCBjb25maWddKSBhIGxhIGZldGNoIEFQSVxuICAgIGlmICh0eXBlb2YgY29uZmlnT3JVcmwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25maWcgPSBjb25maWcgfHwge307XG4gICAgICBjb25maWcudXJsID0gY29uZmlnT3JVcmw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmZpZyA9IGNvbmZpZ09yVXJsIHx8IHt9O1xuICAgIH1cblxuICAgIGNvbmZpZyA9IG1lcmdlQ29uZmlnKHRoaXMuZGVmYXVsdHMsIGNvbmZpZyk7XG5cbiAgICBjb25zdCB7dHJhbnNpdGlvbmFsLCBwYXJhbXNTZXJpYWxpemVyLCBoZWFkZXJzfSA9IGNvbmZpZztcblxuICAgIGlmICh0cmFuc2l0aW9uYWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFsaWRhdG9yLmFzc2VydE9wdGlvbnModHJhbnNpdGlvbmFsLCB7XG4gICAgICAgIHNpbGVudEpTT05QYXJzaW5nOiB2YWxpZGF0b3JzLnRyYW5zaXRpb25hbCh2YWxpZGF0b3JzLmJvb2xlYW4pLFxuICAgICAgICBmb3JjZWRKU09OUGFyc2luZzogdmFsaWRhdG9ycy50cmFuc2l0aW9uYWwodmFsaWRhdG9ycy5ib29sZWFuKSxcbiAgICAgICAgY2xhcmlmeVRpbWVvdXRFcnJvcjogdmFsaWRhdG9ycy50cmFuc2l0aW9uYWwodmFsaWRhdG9ycy5ib29sZWFuKVxuICAgICAgfSwgZmFsc2UpO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXNTZXJpYWxpemVyICE9IG51bGwpIHtcbiAgICAgIGlmICh1dGlscy5pc0Z1bmN0aW9uKHBhcmFtc1NlcmlhbGl6ZXIpKSB7XG4gICAgICAgIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyID0ge1xuICAgICAgICAgIHNlcmlhbGl6ZTogcGFyYW1zU2VyaWFsaXplclxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWxpZGF0b3IuYXNzZXJ0T3B0aW9ucyhwYXJhbXNTZXJpYWxpemVyLCB7XG4gICAgICAgICAgZW5jb2RlOiB2YWxpZGF0b3JzLmZ1bmN0aW9uLFxuICAgICAgICAgIHNlcmlhbGl6ZTogdmFsaWRhdG9ycy5mdW5jdGlvblxuICAgICAgICB9LCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YWxpZGF0b3IuYXNzZXJ0T3B0aW9ucyhjb25maWcsIHtcbiAgICAgIGJhc2VVcmw6IHZhbGlkYXRvcnMuc3BlbGxpbmcoJ2Jhc2VVUkwnKSxcbiAgICAgIHdpdGhYc3JmVG9rZW46IHZhbGlkYXRvcnMuc3BlbGxpbmcoJ3dpdGhYU1JGVG9rZW4nKVxuICAgIH0sIHRydWUpO1xuXG4gICAgLy8gU2V0IGNvbmZpZy5tZXRob2RcbiAgICBjb25maWcubWV0aG9kID0gKGNvbmZpZy5tZXRob2QgfHwgdGhpcy5kZWZhdWx0cy5tZXRob2QgfHwgJ2dldCcpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAvLyBGbGF0dGVuIGhlYWRlcnNcbiAgICBsZXQgY29udGV4dEhlYWRlcnMgPSBoZWFkZXJzICYmIHV0aWxzLm1lcmdlKFxuICAgICAgaGVhZGVycy5jb21tb24sXG4gICAgICBoZWFkZXJzW2NvbmZpZy5tZXRob2RdXG4gICAgKTtcblxuICAgIGhlYWRlcnMgJiYgdXRpbHMuZm9yRWFjaChcbiAgICAgIFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJywgJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJywgJ2NvbW1vbiddLFxuICAgICAgKG1ldGhvZCkgPT4ge1xuICAgICAgICBkZWxldGUgaGVhZGVyc1ttZXRob2RdO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25maWcuaGVhZGVycyA9IEF4aW9zSGVhZGVycy5jb25jYXQoY29udGV4dEhlYWRlcnMsIGhlYWRlcnMpO1xuXG4gICAgLy8gZmlsdGVyIG91dCBza2lwcGVkIGludGVyY2VwdG9yc1xuICAgIGNvbnN0IHJlcXVlc3RJbnRlcmNlcHRvckNoYWluID0gW107XG4gICAgbGV0IHN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycyA9IHRydWU7XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKGZ1bmN0aW9uIHVuc2hpZnRSZXF1ZXN0SW50ZXJjZXB0b3JzKGludGVyY2VwdG9yKSB7XG4gICAgICBpZiAodHlwZW9mIGludGVyY2VwdG9yLnJ1bldoZW4gPT09ICdmdW5jdGlvbicgJiYgaW50ZXJjZXB0b3IucnVuV2hlbihjb25maWcpID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycyA9IHN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycyAmJiBpbnRlcmNlcHRvci5zeW5jaHJvbm91cztcblxuICAgICAgcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4udW5zaGlmdChpbnRlcmNlcHRvci5mdWxmaWxsZWQsIGludGVyY2VwdG9yLnJlamVjdGVkKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbiA9IFtdO1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLmZvckVhY2goZnVuY3Rpb24gcHVzaFJlc3BvbnNlSW50ZXJjZXB0b3JzKGludGVyY2VwdG9yKSB7XG4gICAgICByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4ucHVzaChpbnRlcmNlcHRvci5mdWxmaWxsZWQsIGludGVyY2VwdG9yLnJlamVjdGVkKTtcbiAgICB9KTtcblxuICAgIGxldCBwcm9taXNlO1xuICAgIGxldCBpID0gMDtcbiAgICBsZXQgbGVuO1xuXG4gICAgaWYgKCFzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMpIHtcbiAgICAgIGNvbnN0IGNoYWluID0gW2Rpc3BhdGNoUmVxdWVzdC5iaW5kKHRoaXMpLCB1bmRlZmluZWRdO1xuICAgICAgY2hhaW4udW5zaGlmdC5hcHBseShjaGFpbiwgcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4pO1xuICAgICAgY2hhaW4ucHVzaC5hcHBseShjaGFpbiwgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluKTtcbiAgICAgIGxlbiA9IGNoYWluLmxlbmd0aDtcblxuICAgICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShjb25maWcpO1xuXG4gICAgICB3aGlsZSAoaSA8IGxlbikge1xuICAgICAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKGNoYWluW2krK10sIGNoYWluW2krK10pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG5cbiAgICBsZW4gPSByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi5sZW5ndGg7XG5cbiAgICBsZXQgbmV3Q29uZmlnID0gY29uZmlnO1xuXG4gICAgaSA9IDA7XG5cbiAgICB3aGlsZSAoaSA8IGxlbikge1xuICAgICAgY29uc3Qgb25GdWxmaWxsZWQgPSByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbltpKytdO1xuICAgICAgY29uc3Qgb25SZWplY3RlZCA9IHJlcXVlc3RJbnRlcmNlcHRvckNoYWluW2krK107XG4gICAgICB0cnkge1xuICAgICAgICBuZXdDb25maWcgPSBvbkZ1bGZpbGxlZChuZXdDb25maWcpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgb25SZWplY3RlZC5jYWxsKHRoaXMsIGVycm9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHByb21pc2UgPSBkaXNwYXRjaFJlcXVlc3QuY2FsbCh0aGlzLCBuZXdDb25maWcpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgIH1cblxuICAgIGkgPSAwO1xuICAgIGxlbiA9IHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbi5sZW5ndGg7XG5cbiAgICB3aGlsZSAoaSA8IGxlbikge1xuICAgICAgcHJvbWlzZSA9IHByb21pc2UudGhlbihyZXNwb25zZUludGVyY2VwdG9yQ2hhaW5baSsrXSwgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluW2krK10pO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cbiAgZ2V0VXJpKGNvbmZpZykge1xuICAgIGNvbmZpZyA9IG1lcmdlQ29uZmlnKHRoaXMuZGVmYXVsdHMsIGNvbmZpZyk7XG4gICAgY29uc3QgZnVsbFBhdGggPSBidWlsZEZ1bGxQYXRoKGNvbmZpZy5iYXNlVVJMLCBjb25maWcudXJsKTtcbiAgICByZXR1cm4gYnVpbGRVUkwoZnVsbFBhdGgsIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKTtcbiAgfVxufVxuXG4vLyBQcm92aWRlIGFsaWFzZXMgZm9yIHN1cHBvcnRlZCByZXF1ZXN0IG1ldGhvZHNcbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAnb3B0aW9ucyddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kTm9EYXRhKG1ldGhvZCkge1xuICAvKmVzbGludCBmdW5jLW5hbWVzOjAqL1xuICBBeGlvcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKHVybCwgY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdChtZXJnZUNvbmZpZyhjb25maWcgfHwge30sIHtcbiAgICAgIG1ldGhvZCxcbiAgICAgIHVybCxcbiAgICAgIGRhdGE6IChjb25maWcgfHwge30pLmRhdGFcbiAgICB9KSk7XG4gIH07XG59KTtcblxudXRpbHMuZm9yRWFjaChbJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2RXaXRoRGF0YShtZXRob2QpIHtcbiAgLyplc2xpbnQgZnVuYy1uYW1lczowKi9cblxuICBmdW5jdGlvbiBnZW5lcmF0ZUhUVFBNZXRob2QoaXNGb3JtKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGh0dHBNZXRob2QodXJsLCBkYXRhLCBjb25maWcpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcXVlc3QobWVyZ2VDb25maWcoY29uZmlnIHx8IHt9LCB7XG4gICAgICAgIG1ldGhvZCxcbiAgICAgICAgaGVhZGVyczogaXNGb3JtID8ge1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YSdcbiAgICAgICAgfSA6IHt9LFxuICAgICAgICB1cmwsXG4gICAgICAgIGRhdGFcbiAgICAgIH0pKTtcbiAgICB9O1xuICB9XG5cbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZF0gPSBnZW5lcmF0ZUhUVFBNZXRob2QoKTtcblxuICBBeGlvcy5wcm90b3R5cGVbbWV0aG9kICsgJ0Zvcm0nXSA9IGdlbmVyYXRlSFRUUE1ldGhvZCh0cnVlKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBBeGlvcztcbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IENhbmNlbGVkRXJyb3IgZnJvbSAnLi9DYW5jZWxlZEVycm9yLmpzJztcblxuLyoqXG4gKiBBIGBDYW5jZWxUb2tlbmAgaXMgYW4gb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVxdWVzdCBjYW5jZWxsYXRpb24gb2YgYW4gb3BlcmF0aW9uLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGV4ZWN1dG9yIFRoZSBleGVjdXRvciBmdW5jdGlvbi5cbiAqXG4gKiBAcmV0dXJucyB7Q2FuY2VsVG9rZW59XG4gKi9cbmNsYXNzIENhbmNlbFRva2VuIHtcbiAgY29uc3RydWN0b3IoZXhlY3V0b3IpIHtcbiAgICBpZiAodHlwZW9mIGV4ZWN1dG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdleGVjdXRvciBtdXN0IGJlIGEgZnVuY3Rpb24uJyk7XG4gICAgfVxuXG4gICAgbGV0IHJlc29sdmVQcm9taXNlO1xuXG4gICAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gcHJvbWlzZUV4ZWN1dG9yKHJlc29sdmUpIHtcbiAgICAgIHJlc29sdmVQcm9taXNlID0gcmVzb2x2ZTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHRva2VuID0gdGhpcztcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgdGhpcy5wcm9taXNlLnRoZW4oY2FuY2VsID0+IHtcbiAgICAgIGlmICghdG9rZW4uX2xpc3RlbmVycykgcmV0dXJuO1xuXG4gICAgICBsZXQgaSA9IHRva2VuLl9saXN0ZW5lcnMubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICB0b2tlbi5fbGlzdGVuZXJzW2ldKGNhbmNlbCk7XG4gICAgICB9XG4gICAgICB0b2tlbi5fbGlzdGVuZXJzID0gbnVsbDtcbiAgICB9KTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgdGhpcy5wcm9taXNlLnRoZW4gPSBvbmZ1bGZpbGxlZCA9PiB7XG4gICAgICBsZXQgX3Jlc29sdmU7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICB0b2tlbi5zdWJzY3JpYmUocmVzb2x2ZSk7XG4gICAgICAgIF9yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICAgIH0pLnRoZW4ob25mdWxmaWxsZWQpO1xuXG4gICAgICBwcm9taXNlLmNhbmNlbCA9IGZ1bmN0aW9uIHJlamVjdCgpIHtcbiAgICAgICAgdG9rZW4udW5zdWJzY3JpYmUoX3Jlc29sdmUpO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfTtcblxuICAgIGV4ZWN1dG9yKGZ1bmN0aW9uIGNhbmNlbChtZXNzYWdlLCBjb25maWcsIHJlcXVlc3QpIHtcbiAgICAgIGlmICh0b2tlbi5yZWFzb24pIHtcbiAgICAgICAgLy8gQ2FuY2VsbGF0aW9uIGhhcyBhbHJlYWR5IGJlZW4gcmVxdWVzdGVkXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdG9rZW4ucmVhc29uID0gbmV3IENhbmNlbGVkRXJyb3IobWVzc2FnZSwgY29uZmlnLCByZXF1ZXN0KTtcbiAgICAgIHJlc29sdmVQcm9taXNlKHRva2VuLnJlYXNvbik7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhyb3dzIGEgYENhbmNlbGVkRXJyb3JgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gICAqL1xuICB0aHJvd0lmUmVxdWVzdGVkKCkge1xuICAgIGlmICh0aGlzLnJlYXNvbikge1xuICAgICAgdGhyb3cgdGhpcy5yZWFzb247XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byB0aGUgY2FuY2VsIHNpZ25hbFxuICAgKi9cblxuICBzdWJzY3JpYmUobGlzdGVuZXIpIHtcbiAgICBpZiAodGhpcy5yZWFzb24pIHtcbiAgICAgIGxpc3RlbmVyKHRoaXMucmVhc29uKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fbGlzdGVuZXJzKSB7XG4gICAgICB0aGlzLl9saXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2xpc3RlbmVycyA9IFtsaXN0ZW5lcl07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVuc3Vic2NyaWJlIGZyb20gdGhlIGNhbmNlbCBzaWduYWxcbiAgICovXG5cbiAgdW5zdWJzY3JpYmUobGlzdGVuZXIpIHtcbiAgICBpZiAoIXRoaXMuX2xpc3RlbmVycykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpbmRleCA9IHRoaXMuX2xpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICB0b0Fib3J0U2lnbmFsKCkge1xuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICBjb25zdCBhYm9ydCA9IChlcnIpID0+IHtcbiAgICAgIGNvbnRyb2xsZXIuYWJvcnQoZXJyKTtcbiAgICB9O1xuXG4gICAgdGhpcy5zdWJzY3JpYmUoYWJvcnQpO1xuXG4gICAgY29udHJvbGxlci5zaWduYWwudW5zdWJzY3JpYmUgPSAoKSA9PiB0aGlzLnVuc3Vic2NyaWJlKGFib3J0KTtcblxuICAgIHJldHVybiBjb250cm9sbGVyLnNpZ25hbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgbmV3IGBDYW5jZWxUb2tlbmAgYW5kIGEgZnVuY3Rpb24gdGhhdCwgd2hlbiBjYWxsZWQsXG4gICAqIGNhbmNlbHMgdGhlIGBDYW5jZWxUb2tlbmAuXG4gICAqL1xuICBzdGF0aWMgc291cmNlKCkge1xuICAgIGxldCBjYW5jZWw7XG4gICAgY29uc3QgdG9rZW4gPSBuZXcgQ2FuY2VsVG9rZW4oZnVuY3Rpb24gZXhlY3V0b3IoYykge1xuICAgICAgY2FuY2VsID0gYztcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgdG9rZW4sXG4gICAgICBjYW5jZWxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENhbmNlbFRva2VuO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFN5bnRhY3RpYyBzdWdhciBmb3IgaW52b2tpbmcgYSBmdW5jdGlvbiBhbmQgZXhwYW5kaW5nIGFuIGFycmF5IGZvciBhcmd1bWVudHMuXG4gKlxuICogQ29tbW9uIHVzZSBjYXNlIHdvdWxkIGJlIHRvIHVzZSBgRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5YC5cbiAqXG4gKiAgYGBganNcbiAqICBmdW5jdGlvbiBmKHgsIHksIHopIHt9XG4gKiAgdmFyIGFyZ3MgPSBbMSwgMiwgM107XG4gKiAgZi5hcHBseShudWxsLCBhcmdzKTtcbiAqICBgYGBcbiAqXG4gKiBXaXRoIGBzcHJlYWRgIHRoaXMgZXhhbXBsZSBjYW4gYmUgcmUtd3JpdHRlbi5cbiAqXG4gKiAgYGBganNcbiAqICBzcHJlYWQoZnVuY3Rpb24oeCwgeSwgeikge30pKFsxLCAyLCAzXSk7XG4gKiAgYGBgXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNwcmVhZChjYWxsYmFjaykge1xuICByZXR1cm4gZnVuY3Rpb24gd3JhcChhcnIpIHtcbiAgICByZXR1cm4gY2FsbGJhY2suYXBwbHkobnVsbCwgYXJyKTtcbiAgfTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4vLi4vdXRpbHMuanMnO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgcGF5bG9hZCBpcyBhbiBlcnJvciB0aHJvd24gYnkgQXhpb3NcbiAqXG4gKiBAcGFyYW0geyp9IHBheWxvYWQgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgcGF5bG9hZCBpcyBhbiBlcnJvciB0aHJvd24gYnkgQXhpb3MsIG90aGVyd2lzZSBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0F4aW9zRXJyb3IocGF5bG9hZCkge1xuICByZXR1cm4gdXRpbHMuaXNPYmplY3QocGF5bG9hZCkgJiYgKHBheWxvYWQuaXNBeGlvc0Vycm9yID09PSB0cnVlKTtcbn1cbiIsImNvbnN0IEh0dHBTdGF0dXNDb2RlID0ge1xuICBDb250aW51ZTogMTAwLFxuICBTd2l0Y2hpbmdQcm90b2NvbHM6IDEwMSxcbiAgUHJvY2Vzc2luZzogMTAyLFxuICBFYXJseUhpbnRzOiAxMDMsXG4gIE9rOiAyMDAsXG4gIENyZWF0ZWQ6IDIwMSxcbiAgQWNjZXB0ZWQ6IDIwMixcbiAgTm9uQXV0aG9yaXRhdGl2ZUluZm9ybWF0aW9uOiAyMDMsXG4gIE5vQ29udGVudDogMjA0LFxuICBSZXNldENvbnRlbnQ6IDIwNSxcbiAgUGFydGlhbENvbnRlbnQ6IDIwNixcbiAgTXVsdGlTdGF0dXM6IDIwNyxcbiAgQWxyZWFkeVJlcG9ydGVkOiAyMDgsXG4gIEltVXNlZDogMjI2LFxuICBNdWx0aXBsZUNob2ljZXM6IDMwMCxcbiAgTW92ZWRQZXJtYW5lbnRseTogMzAxLFxuICBGb3VuZDogMzAyLFxuICBTZWVPdGhlcjogMzAzLFxuICBOb3RNb2RpZmllZDogMzA0LFxuICBVc2VQcm94eTogMzA1LFxuICBVbnVzZWQ6IDMwNixcbiAgVGVtcG9yYXJ5UmVkaXJlY3Q6IDMwNyxcbiAgUGVybWFuZW50UmVkaXJlY3Q6IDMwOCxcbiAgQmFkUmVxdWVzdDogNDAwLFxuICBVbmF1dGhvcml6ZWQ6IDQwMSxcbiAgUGF5bWVudFJlcXVpcmVkOiA0MDIsXG4gIEZvcmJpZGRlbjogNDAzLFxuICBOb3RGb3VuZDogNDA0LFxuICBNZXRob2ROb3RBbGxvd2VkOiA0MDUsXG4gIE5vdEFjY2VwdGFibGU6IDQwNixcbiAgUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkOiA0MDcsXG4gIFJlcXVlc3RUaW1lb3V0OiA0MDgsXG4gIENvbmZsaWN0OiA0MDksXG4gIEdvbmU6IDQxMCxcbiAgTGVuZ3RoUmVxdWlyZWQ6IDQxMSxcbiAgUHJlY29uZGl0aW9uRmFpbGVkOiA0MTIsXG4gIFBheWxvYWRUb29MYXJnZTogNDEzLFxuICBVcmlUb29Mb25nOiA0MTQsXG4gIFVuc3VwcG9ydGVkTWVkaWFUeXBlOiA0MTUsXG4gIFJhbmdlTm90U2F0aXNmaWFibGU6IDQxNixcbiAgRXhwZWN0YXRpb25GYWlsZWQ6IDQxNyxcbiAgSW1BVGVhcG90OiA0MTgsXG4gIE1pc2RpcmVjdGVkUmVxdWVzdDogNDIxLFxuICBVbnByb2Nlc3NhYmxlRW50aXR5OiA0MjIsXG4gIExvY2tlZDogNDIzLFxuICBGYWlsZWREZXBlbmRlbmN5OiA0MjQsXG4gIFRvb0Vhcmx5OiA0MjUsXG4gIFVwZ3JhZGVSZXF1aXJlZDogNDI2LFxuICBQcmVjb25kaXRpb25SZXF1aXJlZDogNDI4LFxuICBUb29NYW55UmVxdWVzdHM6IDQyOSxcbiAgUmVxdWVzdEhlYWRlckZpZWxkc1Rvb0xhcmdlOiA0MzEsXG4gIFVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zOiA0NTEsXG4gIEludGVybmFsU2VydmVyRXJyb3I6IDUwMCxcbiAgTm90SW1wbGVtZW50ZWQ6IDUwMSxcbiAgQmFkR2F0ZXdheTogNTAyLFxuICBTZXJ2aWNlVW5hdmFpbGFibGU6IDUwMyxcbiAgR2F0ZXdheVRpbWVvdXQ6IDUwNCxcbiAgSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQ6IDUwNSxcbiAgVmFyaWFudEFsc29OZWdvdGlhdGVzOiA1MDYsXG4gIEluc3VmZmljaWVudFN0b3JhZ2U6IDUwNyxcbiAgTG9vcERldGVjdGVkOiA1MDgsXG4gIE5vdEV4dGVuZGVkOiA1MTAsXG4gIE5ldHdvcmtBdXRoZW50aWNhdGlvblJlcXVpcmVkOiA1MTEsXG59O1xuXG5PYmplY3QuZW50cmllcyhIdHRwU3RhdHVzQ29kZSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gIEh0dHBTdGF0dXNDb2RlW3ZhbHVlXSA9IGtleTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBIdHRwU3RhdHVzQ29kZTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMuanMnO1xuaW1wb3J0IGJpbmQgZnJvbSAnLi9oZWxwZXJzL2JpbmQuanMnO1xuaW1wb3J0IEF4aW9zIGZyb20gJy4vY29yZS9BeGlvcy5qcyc7XG5pbXBvcnQgbWVyZ2VDb25maWcgZnJvbSAnLi9jb3JlL21lcmdlQ29uZmlnLmpzJztcbmltcG9ydCBkZWZhdWx0cyBmcm9tICcuL2RlZmF1bHRzL2luZGV4LmpzJztcbmltcG9ydCBmb3JtRGF0YVRvSlNPTiBmcm9tICcuL2hlbHBlcnMvZm9ybURhdGFUb0pTT04uanMnO1xuaW1wb3J0IENhbmNlbGVkRXJyb3IgZnJvbSAnLi9jYW5jZWwvQ2FuY2VsZWRFcnJvci5qcyc7XG5pbXBvcnQgQ2FuY2VsVG9rZW4gZnJvbSAnLi9jYW5jZWwvQ2FuY2VsVG9rZW4uanMnO1xuaW1wb3J0IGlzQ2FuY2VsIGZyb20gJy4vY2FuY2VsL2lzQ2FuY2VsLmpzJztcbmltcG9ydCB7VkVSU0lPTn0gZnJvbSAnLi9lbnYvZGF0YS5qcyc7XG5pbXBvcnQgdG9Gb3JtRGF0YSBmcm9tICcuL2hlbHBlcnMvdG9Gb3JtRGF0YS5qcyc7XG5pbXBvcnQgQXhpb3NFcnJvciBmcm9tICcuL2NvcmUvQXhpb3NFcnJvci5qcyc7XG5pbXBvcnQgc3ByZWFkIGZyb20gJy4vaGVscGVycy9zcHJlYWQuanMnO1xuaW1wb3J0IGlzQXhpb3NFcnJvciBmcm9tICcuL2hlbHBlcnMvaXNBeGlvc0Vycm9yLmpzJztcbmltcG9ydCBBeGlvc0hlYWRlcnMgZnJvbSBcIi4vY29yZS9BeGlvc0hlYWRlcnMuanNcIjtcbmltcG9ydCBhZGFwdGVycyBmcm9tICcuL2FkYXB0ZXJzL2FkYXB0ZXJzLmpzJztcbmltcG9ydCBIdHRwU3RhdHVzQ29kZSBmcm9tICcuL2hlbHBlcnMvSHR0cFN0YXR1c0NvZGUuanMnO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiBBeGlvc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0Q29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXG4gKlxuICogQHJldHVybnMge0F4aW9zfSBBIG5ldyBpbnN0YW5jZSBvZiBBeGlvc1xuICovXG5mdW5jdGlvbiBjcmVhdGVJbnN0YW5jZShkZWZhdWx0Q29uZmlnKSB7XG4gIGNvbnN0IGNvbnRleHQgPSBuZXcgQXhpb3MoZGVmYXVsdENvbmZpZyk7XG4gIGNvbnN0IGluc3RhbmNlID0gYmluZChBeGlvcy5wcm90b3R5cGUucmVxdWVzdCwgY29udGV4dCk7XG5cbiAgLy8gQ29weSBheGlvcy5wcm90b3R5cGUgdG8gaW5zdGFuY2VcbiAgdXRpbHMuZXh0ZW5kKGluc3RhbmNlLCBBeGlvcy5wcm90b3R5cGUsIGNvbnRleHQsIHthbGxPd25LZXlzOiB0cnVlfSk7XG5cbiAgLy8gQ29weSBjb250ZXh0IHRvIGluc3RhbmNlXG4gIHV0aWxzLmV4dGVuZChpbnN0YW5jZSwgY29udGV4dCwgbnVsbCwge2FsbE93bktleXM6IHRydWV9KTtcblxuICAvLyBGYWN0b3J5IGZvciBjcmVhdGluZyBuZXcgaW5zdGFuY2VzXG4gIGluc3RhbmNlLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpbnN0YW5jZUNvbmZpZykge1xuICAgIHJldHVybiBjcmVhdGVJbnN0YW5jZShtZXJnZUNvbmZpZyhkZWZhdWx0Q29uZmlnLCBpbnN0YW5jZUNvbmZpZykpO1xuICB9O1xuXG4gIHJldHVybiBpbnN0YW5jZTtcbn1cblxuLy8gQ3JlYXRlIHRoZSBkZWZhdWx0IGluc3RhbmNlIHRvIGJlIGV4cG9ydGVkXG5jb25zdCBheGlvcyA9IGNyZWF0ZUluc3RhbmNlKGRlZmF1bHRzKTtcblxuLy8gRXhwb3NlIEF4aW9zIGNsYXNzIHRvIGFsbG93IGNsYXNzIGluaGVyaXRhbmNlXG5heGlvcy5BeGlvcyA9IEF4aW9zO1xuXG4vLyBFeHBvc2UgQ2FuY2VsICYgQ2FuY2VsVG9rZW5cbmF4aW9zLkNhbmNlbGVkRXJyb3IgPSBDYW5jZWxlZEVycm9yO1xuYXhpb3MuQ2FuY2VsVG9rZW4gPSBDYW5jZWxUb2tlbjtcbmF4aW9zLmlzQ2FuY2VsID0gaXNDYW5jZWw7XG5heGlvcy5WRVJTSU9OID0gVkVSU0lPTjtcbmF4aW9zLnRvRm9ybURhdGEgPSB0b0Zvcm1EYXRhO1xuXG4vLyBFeHBvc2UgQXhpb3NFcnJvciBjbGFzc1xuYXhpb3MuQXhpb3NFcnJvciA9IEF4aW9zRXJyb3I7XG5cbi8vIGFsaWFzIGZvciBDYW5jZWxlZEVycm9yIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG5heGlvcy5DYW5jZWwgPSBheGlvcy5DYW5jZWxlZEVycm9yO1xuXG4vLyBFeHBvc2UgYWxsL3NwcmVhZFxuYXhpb3MuYWxsID0gZnVuY3Rpb24gYWxsKHByb21pc2VzKSB7XG4gIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XG59O1xuXG5heGlvcy5zcHJlYWQgPSBzcHJlYWQ7XG5cbi8vIEV4cG9zZSBpc0F4aW9zRXJyb3JcbmF4aW9zLmlzQXhpb3NFcnJvciA9IGlzQXhpb3NFcnJvcjtcblxuLy8gRXhwb3NlIG1lcmdlQ29uZmlnXG5heGlvcy5tZXJnZUNvbmZpZyA9IG1lcmdlQ29uZmlnO1xuXG5heGlvcy5BeGlvc0hlYWRlcnMgPSBBeGlvc0hlYWRlcnM7XG5cbmF4aW9zLmZvcm1Ub0pTT04gPSB0aGluZyA9PiBmb3JtRGF0YVRvSlNPTih1dGlscy5pc0hUTUxGb3JtKHRoaW5nKSA/IG5ldyBGb3JtRGF0YSh0aGluZykgOiB0aGluZyk7XG5cbmF4aW9zLmdldEFkYXB0ZXIgPSBhZGFwdGVycy5nZXRBZGFwdGVyO1xuXG5heGlvcy5IdHRwU3RhdHVzQ29kZSA9IEh0dHBTdGF0dXNDb2RlO1xuXG5heGlvcy5kZWZhdWx0ID0gYXhpb3M7XG5cbi8vIHRoaXMgbW9kdWxlIHNob3VsZCBvbmx5IGhhdmUgYSBkZWZhdWx0IGV4cG9ydFxuZXhwb3J0IGRlZmF1bHQgYXhpb3NcbiIsImZ1bmN0aW9uIGZvcm1hdERlcGVuZGVuY3kocGFyYW1zLCBpZHgpIHtcbiAgaWYgKHBhcmFtcyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBgYXQgcG9zaXRpb24gIyR7aWR4fWA7XG4gIH1cbiAgY29uc3QgYXJnTmFtZSA9IHBhcmFtcy5zcGxpdChcIixcIilbaWR4XS50cmltKCk7XG4gIHJldHVybiBgXCIke2FyZ05hbWV9XCIgYXQgcG9zaXRpb24gIyR7aWR4fWA7XG59XG5mdW5jdGlvbiBjb21wb3NlRXJyb3JNZXNzYWdlKG1zZywgZSwgaW5kZW50ID0gXCIgICAgXCIpIHtcbiAgcmV0dXJuIFttc2csIC4uLmUubWVzc2FnZS5zcGxpdChcIlxcblwiKS5tYXAoKGwpID0+IGluZGVudCArIGwpXS5qb2luKFwiXFxuXCIpO1xufVxuZnVuY3Rpb24gZm9ybWF0RXJyb3JDdG9yKGN0b3IsIHBhcmFtSWR4LCBlcnJvcikge1xuICBjb25zdCBbLCBwYXJhbXMgPSBudWxsXSA9IGN0b3IudG9TdHJpbmcoKS5tYXRjaCgvY29uc3RydWN0b3JcXCgoW1xcdywgXSspXFwpLykgfHwgW107XG4gIGNvbnN0IGRlcCA9IGZvcm1hdERlcGVuZGVuY3kocGFyYW1zLCBwYXJhbUlkeCk7XG4gIHJldHVybiBjb21wb3NlRXJyb3JNZXNzYWdlKFxuICAgIGBDYW5ub3QgaW5qZWN0IHRoZSBkZXBlbmRlbmN5ICR7ZGVwfSBvZiBcIiR7Y3Rvci5uYW1lfVwiIGNvbnN0cnVjdG9yLiBSZWFzb246YCxcbiAgICBlcnJvclxuICApO1xufVxuXG5jbGFzcyBSZWdpc3RyeUJhc2Uge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9yZWdpc3RyeU1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIH1cbiAgdG9rZW5zKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX3JlZ2lzdHJ5TWFwLmtleXMoKSk7XG4gIH1cbiAgZW50cmllcygpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVnaXN0cnlNYXAuZW50cmllcygpO1xuICB9XG4gIGdldEFsbChrZXkpIHtcbiAgICB0aGlzLmVuc3VyZShrZXkpO1xuICAgIHJldHVybiB0aGlzLl9yZWdpc3RyeU1hcC5nZXQoa2V5KTtcbiAgfVxuICBnZXQoa2V5KSB7XG4gICAgdGhpcy5lbnN1cmUoa2V5KTtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX3JlZ2lzdHJ5TWFwLmdldChrZXkpO1xuICAgIHJldHVybiB2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXSB8fCBudWxsO1xuICB9XG4gIHNldChrZXksIHZhbHVlKSB7XG4gICAgdGhpcy5lbnN1cmUoa2V5KTtcbiAgICB0aGlzLl9yZWdpc3RyeU1hcC5nZXQoa2V5KS5wdXNoKHZhbHVlKTtcbiAgfVxuICBzZXRBbGwoa2V5LCB2YWx1ZSkge1xuICAgIHRoaXMuX3JlZ2lzdHJ5TWFwLnNldChrZXksIHZhbHVlKTtcbiAgfVxuICBoYXMoa2V5KSB7XG4gICAgdGhpcy5lbnN1cmUoa2V5KTtcbiAgICByZXR1cm4gdGhpcy5fcmVnaXN0cnlNYXAuZ2V0KGtleSkubGVuZ3RoID4gMDtcbiAgfVxuICBjbGVhcigpIHtcbiAgICB0aGlzLl9yZWdpc3RyeU1hcC5jbGVhcigpO1xuICB9XG4gIGRlbGV0ZShrZXkpIHtcbiAgICB0aGlzLl9yZWdpc3RyeU1hcC5kZWxldGUoa2V5KTtcbiAgfVxuICBlbnN1cmUoa2V5KSB7XG4gICAgaWYgKCF0aGlzLl9yZWdpc3RyeU1hcC5oYXMoa2V5KSkge1xuICAgICAgdGhpcy5fcmVnaXN0cnlNYXAuc2V0KGtleSwgW10pO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBQb3N0UmVnaXN0cmF0aW9uSW50ZXJjZXB0b3JzIGV4dGVuZHMgUmVnaXN0cnlCYXNlIHtcbn1cbmNsYXNzIFByZVJlc29sdXRpb25JbnRlcmNlcHRvcnMgZXh0ZW5kcyBSZWdpc3RyeUJhc2Uge1xufVxuY2xhc3MgUG9zdFJlc29sdXRpb25JbnRlcmNlcHRvcnMgZXh0ZW5kcyBSZWdpc3RyeUJhc2Uge1xufVxuY2xhc3MgSW50ZXJjZXB0b3JzIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5wb3N0UmVnaXN0cmF0aW9uID0gbmV3IFBvc3RSZWdpc3RyYXRpb25JbnRlcmNlcHRvcnMoKTtcbiAgICB0aGlzLnByZVJlc29sdXRpb24gPSBuZXcgUHJlUmVzb2x1dGlvbkludGVyY2VwdG9ycygpO1xuICAgIHRoaXMucG9zdFJlc29sdXRpb24gPSBuZXcgUG9zdFJlc29sdXRpb25JbnRlcmNlcHRvcnMoKTtcbiAgfVxufVxuXG5jbGFzcyBEZWxheWVkQ29uc3RydWN0b3Ige1xuICBjb25zdHJ1Y3Rvcih3cmFwKSB7XG4gICAgdGhpcy53cmFwID0gd3JhcDtcbiAgICB0aGlzLnJlZmxlY3RNZXRob2RzID0gW1xuICAgICAgXCJnZXRcIixcbiAgICAgIFwiZ2V0UHJvdG90eXBlT2ZcIixcbiAgICAgIFwic2V0UHJvdG90eXBlT2ZcIixcbiAgICAgIFwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yXCIsXG4gICAgICBcImRlZmluZVByb3BlcnR5XCIsXG4gICAgICBcImhhc1wiLFxuICAgICAgXCJzZXRcIixcbiAgICAgIFwiZGVsZXRlUHJvcGVydHlcIixcbiAgICAgIFwiYXBwbHlcIixcbiAgICAgIFwiY29uc3RydWN0XCIsXG4gICAgICBcIm93bktleXNcIlxuICAgIF07XG4gIH1cbiAgY3JlYXRlUHJveHkoY3JlYXRlT2JqZWN0KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0ge307XG4gICAgbGV0IGluaXQgPSBmYWxzZTtcbiAgICBsZXQgdmFsdWU7XG4gICAgY29uc3QgZGVsYXllZE9iamVjdCA9ICgpID0+IHtcbiAgICAgIGlmICghaW5pdCkge1xuICAgICAgICB2YWx1ZSA9IGNyZWF0ZU9iamVjdCh0aGlzLndyYXAoKSk7XG4gICAgICAgIGluaXQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gICAgcmV0dXJuIG5ldyBQcm94eSh0YXJnZXQsIHRoaXMuY3JlYXRlSGFuZGxlcihkZWxheWVkT2JqZWN0KSk7XG4gIH1cbiAgY3JlYXRlSGFuZGxlcihkZWxheWVkT2JqZWN0KSB7XG4gICAgY29uc3QgaGFuZGxlciA9IHt9O1xuICAgIGNvbnN0IGluc3RhbGwgPSAobmFtZSkgPT4ge1xuICAgICAgaGFuZGxlcltuYW1lXSA9ICguLi5hcmdzKSA9PiB7XG4gICAgICAgIGFyZ3NbMF0gPSBkZWxheWVkT2JqZWN0KCk7XG4gICAgICAgIGNvbnN0IG1ldGhvZCA9IFJlZmxlY3RbbmFtZV07XG4gICAgICAgIHJldHVybiBtZXRob2QoLi4uYXJncyk7XG4gICAgICB9O1xuICAgIH07XG4gICAgdGhpcy5yZWZsZWN0TWV0aG9kcy5mb3JFYWNoKGluc3RhbGwpO1xuICAgIHJldHVybiBoYW5kbGVyO1xuICB9XG59XG5mdW5jdGlvbiBkZWxheSh3cmFwcGVkQ29uc3RydWN0b3IpIHtcbiAgaWYgKHR5cGVvZiB3cmFwcGVkQ29uc3RydWN0b3IgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgXCJBdHRlbXB0IHRvIGBkZWxheWAgdW5kZWZpbmVkLiBDb25zdHJ1Y3RvciBtdXN0IGJlIHdyYXBwZWQgaW4gYSBjYWxsYmFja1wiXG4gICAgKTtcbiAgfVxuICByZXR1cm4gbmV3IERlbGF5ZWRDb25zdHJ1Y3Rvcih3cmFwcGVkQ29uc3RydWN0b3IpO1xufVxuXG5mdW5jdGlvbiBpc0NsYXNzUHJvdmlkZXIocHJvdmlkZXIpIHtcbiAgcmV0dXJuIEJvb2xlYW4ocHJvdmlkZXIudXNlQ2xhc3MpO1xufVxuXG5mdW5jdGlvbiBpc0ZhY3RvcnlQcm92aWRlcihwcm92aWRlcikge1xuICByZXR1cm4gQm9vbGVhbihwcm92aWRlci51c2VGYWN0b3J5KTtcbn1cblxuZnVuY3Rpb24gaXNOb3JtYWxUb2tlbih0b2tlbikge1xuICByZXR1cm4gdHlwZW9mIHRva2VuID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiB0b2tlbiA9PT0gXCJzeW1ib2xcIjtcbn1cbmZ1bmN0aW9uIGlzVG9rZW5EZXNjcmlwdG9yKGRlc2NyaXB0b3IpIHtcbiAgcmV0dXJuIHR5cGVvZiBkZXNjcmlwdG9yID09PSBcIm9iamVjdFwiICYmIFwidG9rZW5cIiBpbiBkZXNjcmlwdG9yICYmIFwibXVsdGlwbGVcIiBpbiBkZXNjcmlwdG9yO1xufVxuZnVuY3Rpb24gaXNUcmFuc2Zvcm1EZXNjcmlwdG9yKGRlc2NyaXB0b3IpIHtcbiAgcmV0dXJuIHR5cGVvZiBkZXNjcmlwdG9yID09PSBcIm9iamVjdFwiICYmIFwidG9rZW5cIiBpbiBkZXNjcmlwdG9yICYmIFwidHJhbnNmb3JtXCIgaW4gZGVzY3JpcHRvcjtcbn1cbmZ1bmN0aW9uIGlzQ29uc3RydWN0b3JUb2tlbih0b2tlbikge1xuICByZXR1cm4gdHlwZW9mIHRva2VuID09PSBcImZ1bmN0aW9uXCIgfHwgdG9rZW4gaW5zdGFuY2VvZiBEZWxheWVkQ29uc3RydWN0b3I7XG59XG5cbmZ1bmN0aW9uIGlzVG9rZW5Qcm92aWRlcihwcm92aWRlcikge1xuICByZXR1cm4gQm9vbGVhbihwcm92aWRlci51c2VUb2tlbik7XG59XG5cbmZ1bmN0aW9uIGlzVmFsdWVQcm92aWRlcihwcm92aWRlcikge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3ZpZGVyLCBcInVzZVZhbHVlXCIpO1xufVxuXG5mdW5jdGlvbiBpc1Byb3ZpZGVyKHByb3ZpZGVyKSB7XG4gIHJldHVybiBpc0NsYXNzUHJvdmlkZXIocHJvdmlkZXIpIHx8IGlzVmFsdWVQcm92aWRlcihwcm92aWRlcikgfHwgaXNUb2tlblByb3ZpZGVyKHByb3ZpZGVyKSB8fCBpc0ZhY3RvcnlQcm92aWRlcihwcm92aWRlcik7XG59XG5cbmNvbnN0IElOSkVDVElPTl9UT0tFTl9NRVRBREFUQV9LRVkgPSBcImluamVjdGlvblRva2Vuc1wiO1xuY29uc3QgUEFSQU1fSU5GT1NfTUVUQURBVEFfS0VZID0gXCJwYXJhbUluZm9zXCI7XG5mdW5jdGlvbiBnZXRQYXJhbUluZm8odGFyZ2V0KSB7XG4gIGNvbnN0IHBhcmFtcyA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJkZXNpZ246cGFyYW10eXBlc1wiLCB0YXJnZXQpIHx8IFtdO1xuICBjb25zdCBpbmplY3Rpb25Ub2tlbnMgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhKElOSkVDVElPTl9UT0tFTl9NRVRBREFUQV9LRVksIHRhcmdldCkgfHwge307XG4gIE9iamVjdC5rZXlzKGluamVjdGlvblRva2VucykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgcGFyYW1zW051bWJlcihrZXkpXSA9IGluamVjdGlvblRva2Vuc1trZXldO1xuICB9KTtcbiAgcmV0dXJuIHBhcmFtcztcbn1cbmZ1bmN0aW9uIGRlZmluZUluamVjdGlvblRva2VuTWV0YWRhdGEoZGF0YSwgdHJhbnNmb3JtKSB7XG4gIHJldHVybiBmdW5jdGlvbih0YXJnZXQsIF9wcm9wZXJ0eUtleSwgcGFyYW1ldGVySW5kZXgpIHtcbiAgICBjb25zdCBkZXNjcmlwdG9ycyA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoSU5KRUNUSU9OX1RPS0VOX01FVEFEQVRBX0tFWSwgdGFyZ2V0KSB8fCB7fTtcbiAgICBkZXNjcmlwdG9yc1twYXJhbWV0ZXJJbmRleF0gPSB0cmFuc2Zvcm0gPyB7XG4gICAgICB0b2tlbjogZGF0YSxcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNmb3JtLnRyYW5zZm9ybVRva2VuLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cbiAgICAgIHRyYW5zZm9ybUFyZ3M6IHRyYW5zZm9ybS5hcmdzID8/IFtdXG4gICAgfSA6IGRhdGE7XG4gICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShJTkpFQ1RJT05fVE9LRU5fTUVUQURBVEFfS0VZLCBkZXNjcmlwdG9ycywgdGFyZ2V0KTtcbiAgfTtcbn1cblxuY2xhc3MgUmVnaXN0cnkgZXh0ZW5kcyBSZWdpc3RyeUJhc2Uge1xufVxuXG5jbGFzcyBSZXNvbHV0aW9uQ29udGV4dCB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2NvcGVkUmVzb2x1dGlvbnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzRGlzcG9zYWJsZSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiIHx8IHZhbHVlID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gIGlmICghKFwiZGlzcG9zZVwiIGluIHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuICBpZiAodHlwZW9mIHZhbHVlLmRpc3Bvc2UgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBkaXNwb3NlRm4gPSB2YWx1ZS5kaXNwb3NlO1xuICBpZiAoZGlzcG9zZUZuLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbnZhciBMaWZlY3ljbGUgPSAvKiBAX19QVVJFX18gKi8gKChMaWZlY3ljbGUyKSA9PiB7XG4gIExpZmVjeWNsZTJbTGlmZWN5Y2xlMltcIlRyYW5zaWVudFwiXSA9IDBdID0gXCJUcmFuc2llbnRcIjtcbiAgTGlmZWN5Y2xlMltMaWZlY3ljbGUyW1wiU2luZ2xldG9uXCJdID0gMV0gPSBcIlNpbmdsZXRvblwiO1xuICBMaWZlY3ljbGUyW0xpZmVjeWNsZTJbXCJSZXNvbHV0aW9uU2NvcGVkXCJdID0gMl0gPSBcIlJlc29sdXRpb25TY29wZWRcIjtcbiAgTGlmZWN5Y2xlMltMaWZlY3ljbGUyW1wiQ29udGFpbmVyU2NvcGVkXCJdID0gM10gPSBcIkNvbnRhaW5lclNjb3BlZFwiO1xuICByZXR1cm4gTGlmZWN5Y2xlMjtcbn0pKExpZmVjeWNsZSB8fCB7fSk7XG5cbmNsYXNzIEludGVybmFsRGVwZW5kZW5jeUNvbnRhaW5lciB7XG4gIGNvbnN0cnVjdG9yKHBhcmVudCkge1xuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgIHRoaXMuX3JlZ2lzdHJ5ID0gbmV3IFJlZ2lzdHJ5KCk7XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMgPSBuZXcgSW50ZXJjZXB0b3JzKCk7XG4gICAgdGhpcy5kaXNwb3NlZCA9IGZhbHNlO1xuICAgIHRoaXMuZGlzcG9zYWJsZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICB9XG4gIHJlZ2lzdGVyKHRva2VuLCBwcm92aWRlck9yQ29uc3RydWN0b3IsIG9wdGlvbnMgPSB7IGxpZmVjeWNsZTogTGlmZWN5Y2xlLlRyYW5zaWVudCB9KSB7XG4gICAgdGhpcy5lbnN1cmVOb3REaXNwb3NlZCgpO1xuICAgIGxldCBwcm92aWRlcjtcbiAgICBpZiAoIWlzUHJvdmlkZXIocHJvdmlkZXJPckNvbnN0cnVjdG9yKSkge1xuICAgICAgcHJvdmlkZXIgPSB7IHVzZUNsYXNzOiBwcm92aWRlck9yQ29uc3RydWN0b3IgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvdmlkZXIgPSBwcm92aWRlck9yQ29uc3RydWN0b3I7XG4gICAgfVxuICAgIGlmIChpc1Rva2VuUHJvdmlkZXIocHJvdmlkZXIpKSB7XG4gICAgICBjb25zdCBwYXRoID0gW3Rva2VuXTtcbiAgICAgIGxldCB0b2tlblByb3ZpZGVyID0gcHJvdmlkZXI7XG4gICAgICB3aGlsZSAodG9rZW5Qcm92aWRlciAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRUb2tlbiA9IHRva2VuUHJvdmlkZXIudXNlVG9rZW47XG4gICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKGN1cnJlbnRUb2tlbikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgVG9rZW4gcmVnaXN0cmF0aW9uIGN5Y2xlIGRldGVjdGVkISAke1suLi5wYXRoLCBjdXJyZW50VG9rZW5dLmpvaW4oXG4gICAgICAgICAgICAgIFwiIC0+IFwiXG4gICAgICAgICAgICApfWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHBhdGgucHVzaChjdXJyZW50VG9rZW4pO1xuICAgICAgICBjb25zdCByZWdpc3RyYXRpb24gPSB0aGlzLl9yZWdpc3RyeS5nZXQoY3VycmVudFRva2VuKTtcbiAgICAgICAgaWYgKHJlZ2lzdHJhdGlvbiAmJiBpc1Rva2VuUHJvdmlkZXIocmVnaXN0cmF0aW9uLnByb3ZpZGVyKSkge1xuICAgICAgICAgIHRva2VuUHJvdmlkZXIgPSByZWdpc3RyYXRpb24ucHJvdmlkZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdG9rZW5Qcm92aWRlciA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKChvcHRpb25zLmxpZmVjeWNsZSA9PT0gTGlmZWN5Y2xlLlNpbmdsZXRvbiB8fCBvcHRpb25zLmxpZmVjeWNsZSA9PT0gTGlmZWN5Y2xlLkNvbnRhaW5lclNjb3BlZCB8fCBvcHRpb25zLmxpZmVjeWNsZSA9PT0gTGlmZWN5Y2xlLlJlc29sdXRpb25TY29wZWQpICYmIChpc1ZhbHVlUHJvdmlkZXIocHJvdmlkZXIpIHx8IGlzRmFjdG9yeVByb3ZpZGVyKHByb3ZpZGVyKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENhbm5vdCB1c2UgbGlmZWN5Y2xlIFwiJHtMaWZlY3ljbGVbb3B0aW9ucy5saWZlY3ljbGVdfVwiIHdpdGggVmFsdWVQcm92aWRlcnMgb3IgRmFjdG9yeVByb3ZpZGVyc2BcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuX3JlZ2lzdHJ5LnNldCh0b2tlbiwgeyBwcm92aWRlciwgb3B0aW9ucyB9KTtcbiAgICB0aGlzLmV4ZWN1dGVQb3N0UmVnaXN0cmF0aW9uSW50ZXJjZXB0b3IodG9rZW4pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIHJlZ2lzdGVyVHlwZShmcm9tLCB0bykge1xuICAgIHRoaXMuZW5zdXJlTm90RGlzcG9zZWQoKTtcbiAgICBpZiAoaXNOb3JtYWxUb2tlbih0bykpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyKGZyb20sIHtcbiAgICAgICAgdXNlVG9rZW46IHRvXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucmVnaXN0ZXIoZnJvbSwge1xuICAgICAgdXNlQ2xhc3M6IHRvXG4gICAgfSk7XG4gIH1cbiAgcmVnaXN0ZXJJbnN0YW5jZSh0b2tlbiwgaW5zdGFuY2UyKSB7XG4gICAgdGhpcy5lbnN1cmVOb3REaXNwb3NlZCgpO1xuICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyKHRva2VuLCB7XG4gICAgICB1c2VWYWx1ZTogaW5zdGFuY2UyXG4gICAgfSk7XG4gIH1cbiAgcmVnaXN0ZXJTaW5nbGV0b24oZnJvbSwgdG8pIHtcbiAgICB0aGlzLmVuc3VyZU5vdERpc3Bvc2VkKCk7XG4gICAgaWYgKGlzTm9ybWFsVG9rZW4oZnJvbSkpIHtcbiAgICAgIGlmIChpc05vcm1hbFRva2VuKHRvKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWdpc3RlcihcbiAgICAgICAgICBmcm9tLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHVzZVRva2VuOiB0b1xuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBsaWZlY3ljbGU6IExpZmVjeWNsZS5TaW5nbGV0b24gfVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHRvKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyKFxuICAgICAgICAgIGZyb20sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdXNlQ2xhc3M6IHRvXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IGxpZmVjeWNsZTogTGlmZWN5Y2xlLlNpbmdsZXRvbiB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDYW5ub3QgcmVnaXN0ZXIgYSB0eXBlIG5hbWUgYXMgYSBzaW5nbGV0b24gd2l0aG91dCBhIFwidG9cIiB0b2tlbidcbiAgICAgICk7XG4gICAgfVxuICAgIGxldCB1c2VDbGFzcyA9IGZyb207XG4gICAgaWYgKHRvICYmICFpc05vcm1hbFRva2VuKHRvKSkge1xuICAgICAgdXNlQ2xhc3MgPSB0bztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucmVnaXN0ZXIoXG4gICAgICBmcm9tLFxuICAgICAge1xuICAgICAgICB1c2VDbGFzc1xuICAgICAgfSxcbiAgICAgIHsgbGlmZWN5Y2xlOiBMaWZlY3ljbGUuU2luZ2xldG9uIH1cbiAgICApO1xuICB9XG4gIHJlc29sdmUodG9rZW4sIGNvbnRleHQgPSBuZXcgUmVzb2x1dGlvbkNvbnRleHQoKSkge1xuICAgIHRoaXMuZW5zdXJlTm90RGlzcG9zZWQoKTtcbiAgICBjb25zdCByZWdpc3RyYXRpb24gPSB0aGlzLmdldFJlZ2lzdHJhdGlvbih0b2tlbik7XG4gICAgaWYgKCFyZWdpc3RyYXRpb24gJiYgaXNOb3JtYWxUb2tlbih0b2tlbikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEF0dGVtcHRlZCB0byByZXNvbHZlIHVucmVnaXN0ZXJlZCBkZXBlbmRlbmN5IHRva2VuOiBcIiR7dG9rZW4udG9TdHJpbmcoKX1cImBcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuZXhlY3V0ZVByZVJlc29sdXRpb25JbnRlcmNlcHRvcih0b2tlbiwgXCJTaW5nbGVcIik7XG4gICAgaWYgKHJlZ2lzdHJhdGlvbikge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5yZXNvbHZlUmVnaXN0cmF0aW9uKHJlZ2lzdHJhdGlvbiwgY29udGV4dCk7XG4gICAgICB0aGlzLmV4ZWN1dGVQb3N0UmVzb2x1dGlvbkludGVyY2VwdG9yKHRva2VuLCByZXN1bHQsIFwiU2luZ2xlXCIpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgaWYgKGlzQ29uc3RydWN0b3JUb2tlbih0b2tlbikpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY29uc3RydWN0KHRva2VuLCBjb250ZXh0KTtcbiAgICAgIHRoaXMuZXhlY3V0ZVBvc3RSZXNvbHV0aW9uSW50ZXJjZXB0b3IodG9rZW4sIHJlc3VsdCwgXCJTaW5nbGVcIik7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIkF0dGVtcHRlZCB0byBjb25zdHJ1Y3QgYW4gdW5kZWZpbmVkIGNvbnN0cnVjdG9yLiBDb3VsZCBtZWFuIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBwcm9ibGVtLiBUcnkgdXNpbmcgYGRlbGF5YCBmdW5jdGlvbi5cIlxuICAgICk7XG4gIH1cbiAgZXhlY3V0ZVBvc3RSZWdpc3RyYXRpb25JbnRlcmNlcHRvcih0b2tlbikge1xuICAgIGlmICh0aGlzLmludGVyY2VwdG9ycy5wb3N0UmVnaXN0cmF0aW9uLmhhcyh0b2tlbikpIHtcbiAgICAgIGNvbnN0IHJlbWFpbmluZ0ludGVyY2VwdG9ycyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBpbnRlcmNlcHRvciBvZiB0aGlzLmludGVyY2VwdG9ycy5wb3N0UmVnaXN0cmF0aW9uLmdldEFsbCh0b2tlbikpIHtcbiAgICAgICAgaWYgKGludGVyY2VwdG9yLm9wdGlvbnMuZnJlcXVlbmN5ICE9PSBcIk9uY2VcIikge1xuICAgICAgICAgIHJlbWFpbmluZ0ludGVyY2VwdG9ycy5wdXNoKGludGVyY2VwdG9yKTtcbiAgICAgICAgfVxuICAgICAgICBpbnRlcmNlcHRvci5jYWxsYmFjayh0b2tlbik7XG4gICAgICB9XG4gICAgICB0aGlzLmludGVyY2VwdG9ycy5wb3N0UmVnaXN0cmF0aW9uLnNldEFsbCh0b2tlbiwgcmVtYWluaW5nSW50ZXJjZXB0b3JzKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaW50ZXJjZXB0b3JzLnBvc3RBbnlSZWdpc3RyYXRpb24pIHtcbiAgICAgIHRoaXMuaW50ZXJjZXB0b3JzLnBvc3RBbnlSZWdpc3RyYXRpb24odG9rZW4pO1xuICAgIH1cbiAgfVxuICBleGVjdXRlUHJlUmVzb2x1dGlvbkludGVyY2VwdG9yKHRva2VuLCByZXNvbHV0aW9uVHlwZSkge1xuICAgIGlmICh0aGlzLmludGVyY2VwdG9ycy5wcmVSZXNvbHV0aW9uLmhhcyh0b2tlbikpIHtcbiAgICAgIGNvbnN0IHJlbWFpbmluZ0ludGVyY2VwdG9ycyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBpbnRlcmNlcHRvciBvZiB0aGlzLmludGVyY2VwdG9ycy5wcmVSZXNvbHV0aW9uLmdldEFsbCh0b2tlbikpIHtcbiAgICAgICAgaWYgKGludGVyY2VwdG9yLm9wdGlvbnMuZnJlcXVlbmN5ICE9PSBcIk9uY2VcIikge1xuICAgICAgICAgIHJlbWFpbmluZ0ludGVyY2VwdG9ycy5wdXNoKGludGVyY2VwdG9yKTtcbiAgICAgICAgfVxuICAgICAgICBpbnRlcmNlcHRvci5jYWxsYmFjayh0b2tlbiwgcmVzb2x1dGlvblR5cGUpO1xuICAgICAgfVxuICAgICAgdGhpcy5pbnRlcmNlcHRvcnMucHJlUmVzb2x1dGlvbi5zZXRBbGwodG9rZW4sIHJlbWFpbmluZ0ludGVyY2VwdG9ycyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmludGVyY2VwdG9ycy5wcmVBbnlSZXNvbHV0aW9uKSB7XG4gICAgICB0aGlzLmludGVyY2VwdG9ycy5wcmVBbnlSZXNvbHV0aW9uKHRva2VuLCByZXNvbHV0aW9uVHlwZSk7XG4gICAgfVxuICB9XG4gIGV4ZWN1dGVQb3N0UmVzb2x1dGlvbkludGVyY2VwdG9yKHRva2VuLCByZXN1bHQsIHJlc29sdXRpb25UeXBlKSB7XG4gICAgaWYgKHRoaXMuaW50ZXJjZXB0b3JzLnBvc3RSZXNvbHV0aW9uLmhhcyh0b2tlbikpIHtcbiAgICAgIGNvbnN0IHJlbWFpbmluZ0ludGVyY2VwdG9ycyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBpbnRlcmNlcHRvciBvZiB0aGlzLmludGVyY2VwdG9ycy5wb3N0UmVzb2x1dGlvbi5nZXRBbGwoXG4gICAgICAgIHRva2VuXG4gICAgICApKSB7XG4gICAgICAgIGlmIChpbnRlcmNlcHRvci5vcHRpb25zLmZyZXF1ZW5jeSAhPT0gXCJPbmNlXCIpIHtcbiAgICAgICAgICByZW1haW5pbmdJbnRlcmNlcHRvcnMucHVzaChpbnRlcmNlcHRvcik7XG4gICAgICAgIH1cbiAgICAgICAgaW50ZXJjZXB0b3IuY2FsbGJhY2sodG9rZW4sIHJlc3VsdCwgcmVzb2x1dGlvblR5cGUpO1xuICAgICAgfVxuICAgICAgdGhpcy5pbnRlcmNlcHRvcnMucG9zdFJlc29sdXRpb24uc2V0QWxsKHRva2VuLCByZW1haW5pbmdJbnRlcmNlcHRvcnMpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbnRlcmNlcHRvcnMucG9zdEFueVJlc29sdXRpb24pIHtcbiAgICAgIHRoaXMuaW50ZXJjZXB0b3JzLnBvc3RBbnlSZXNvbHV0aW9uKHRva2VuLCByZXN1bHQsIHJlc29sdXRpb25UeXBlKTtcbiAgICB9XG4gIH1cbiAgcmVzb2x2ZVJlZ2lzdHJhdGlvbihyZWdpc3RyYXRpb24sIGNvbnRleHQpIHtcbiAgICB0aGlzLmVuc3VyZU5vdERpc3Bvc2VkKCk7XG4gICAgaWYgKHJlZ2lzdHJhdGlvbi5vcHRpb25zLmxpZmVjeWNsZSA9PT0gTGlmZWN5Y2xlLlJlc29sdXRpb25TY29wZWQgJiYgY29udGV4dC5zY29wZWRSZXNvbHV0aW9ucy5oYXMocmVnaXN0cmF0aW9uKSkge1xuICAgICAgcmV0dXJuIGNvbnRleHQuc2NvcGVkUmVzb2x1dGlvbnMuZ2V0KHJlZ2lzdHJhdGlvbik7XG4gICAgfVxuICAgIGNvbnN0IGlzU2luZ2xldG9uID0gcmVnaXN0cmF0aW9uLm9wdGlvbnMubGlmZWN5Y2xlID09PSBMaWZlY3ljbGUuU2luZ2xldG9uO1xuICAgIGNvbnN0IGlzQ29udGFpbmVyU2NvcGVkID0gcmVnaXN0cmF0aW9uLm9wdGlvbnMubGlmZWN5Y2xlID09PSBMaWZlY3ljbGUuQ29udGFpbmVyU2NvcGVkO1xuICAgIGNvbnN0IHJldHVybkluc3RhbmNlID0gaXNTaW5nbGV0b24gfHwgaXNDb250YWluZXJTY29wZWQ7XG4gICAgbGV0IG5ld1Jlc29sdXRpb24gPSB0cnVlO1xuICAgIGxldCByZXNvbHZlZDtcbiAgICBpZiAoaXNWYWx1ZVByb3ZpZGVyKHJlZ2lzdHJhdGlvbi5wcm92aWRlcikpIHtcbiAgICAgIHJlc29sdmVkID0gcmVnaXN0cmF0aW9uLnByb3ZpZGVyLnVzZVZhbHVlO1xuICAgIH0gZWxzZSBpZiAoaXNUb2tlblByb3ZpZGVyKHJlZ2lzdHJhdGlvbi5wcm92aWRlcikpIHtcbiAgICAgIG5ld1Jlc29sdXRpb24gPSByZXR1cm5JbnN0YW5jZTtcbiAgICAgIHJlc29sdmVkID0gcmV0dXJuSW5zdGFuY2UgPyByZWdpc3RyYXRpb24uaW5zdGFuY2UgfHwgKHJlZ2lzdHJhdGlvbi5pbnN0YW5jZSA9IHRoaXMucmVzb2x2ZShcbiAgICAgICAgcmVnaXN0cmF0aW9uLnByb3ZpZGVyLnVzZVRva2VuLFxuICAgICAgICBjb250ZXh0XG4gICAgICApKSA6IHRoaXMucmVzb2x2ZShyZWdpc3RyYXRpb24ucHJvdmlkZXIudXNlVG9rZW4sIGNvbnRleHQpO1xuICAgIH0gZWxzZSBpZiAoaXNDbGFzc1Byb3ZpZGVyKHJlZ2lzdHJhdGlvbi5wcm92aWRlcikpIHtcbiAgICAgIG5ld1Jlc29sdXRpb24gPSByZXR1cm5JbnN0YW5jZTtcbiAgICAgIHJlc29sdmVkID0gcmV0dXJuSW5zdGFuY2UgPyByZWdpc3RyYXRpb24uaW5zdGFuY2UgfHwgKHJlZ2lzdHJhdGlvbi5pbnN0YW5jZSA9IHRoaXMuY29uc3RydWN0KFxuICAgICAgICByZWdpc3RyYXRpb24ucHJvdmlkZXIudXNlQ2xhc3MsXG4gICAgICAgIGNvbnRleHRcbiAgICAgICkpIDogdGhpcy5jb25zdHJ1Y3QocmVnaXN0cmF0aW9uLnByb3ZpZGVyLnVzZUNsYXNzLCBjb250ZXh0KTtcbiAgICB9IGVsc2UgaWYgKGlzRmFjdG9yeVByb3ZpZGVyKHJlZ2lzdHJhdGlvbi5wcm92aWRlcikpIHtcbiAgICAgIHJlc29sdmVkID0gcmVnaXN0cmF0aW9uLnByb3ZpZGVyLnVzZUZhY3RvcnkodGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1Jlc29sdXRpb24gPSBmYWxzZTtcbiAgICAgIHJlc29sdmVkID0gdGhpcy5jb25zdHJ1Y3QocmVnaXN0cmF0aW9uLnByb3ZpZGVyLCBjb250ZXh0KTtcbiAgICB9XG4gICAgaWYgKHJlZ2lzdHJhdGlvbi5vcHRpb25zLmxpZmVjeWNsZSA9PT0gTGlmZWN5Y2xlLlJlc29sdXRpb25TY29wZWQpIHtcbiAgICAgIGNvbnRleHQuc2NvcGVkUmVzb2x1dGlvbnMuc2V0KHJlZ2lzdHJhdGlvbiwgcmVzb2x2ZWQpO1xuICAgIH1cbiAgICBpZiAobmV3UmVzb2x1dGlvbiAmJiBpc0Rpc3Bvc2FibGUocmVzb2x2ZWQpKSB7XG4gICAgICB0aGlzLmRpc3Bvc2FibGVzLmFkZChyZXNvbHZlZCk7XG4gICAgfVxuICAgIHJldHVybiByZXNvbHZlZDtcbiAgfVxuICByZXNvbHZlQWxsKHRva2VuLCBjb250ZXh0ID0gbmV3IFJlc29sdXRpb25Db250ZXh0KCkpIHtcbiAgICB0aGlzLmVuc3VyZU5vdERpc3Bvc2VkKCk7XG4gICAgY29uc3QgcmVnaXN0cmF0aW9ucyA9IHRoaXMuZ2V0QWxsUmVnaXN0cmF0aW9ucyh0b2tlbik7XG4gICAgaWYgKCFyZWdpc3RyYXRpb25zICYmIGlzTm9ybWFsVG9rZW4odG9rZW4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBBdHRlbXB0ZWQgdG8gcmVzb2x2ZSB1bnJlZ2lzdGVyZWQgZGVwZW5kZW5jeSB0b2tlbjogXCIke3Rva2VuLnRvU3RyaW5nKCl9XCJgXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmV4ZWN1dGVQcmVSZXNvbHV0aW9uSW50ZXJjZXB0b3IodG9rZW4sIFwiQWxsXCIpO1xuICAgIGlmIChyZWdpc3RyYXRpb25zKSB7XG4gICAgICBjb25zdCByZXN1bHQyID0gcmVnaXN0cmF0aW9ucy5tYXAoXG4gICAgICAgIChpdGVtKSA9PiB0aGlzLnJlc29sdmVSZWdpc3RyYXRpb24oaXRlbSwgY29udGV4dClcbiAgICAgICk7XG4gICAgICB0aGlzLmV4ZWN1dGVQb3N0UmVzb2x1dGlvbkludGVyY2VwdG9yKHRva2VuLCByZXN1bHQyLCBcIkFsbFwiKTtcbiAgICAgIHJldHVybiByZXN1bHQyO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBbdGhpcy5jb25zdHJ1Y3QodG9rZW4sIGNvbnRleHQpXTtcbiAgICB0aGlzLmV4ZWN1dGVQb3N0UmVzb2x1dGlvbkludGVyY2VwdG9yKHRva2VuLCByZXN1bHQsIFwiQWxsXCIpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgcmVnaXN0ZXJlZFRva2VucygpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVnaXN0cnkudG9rZW5zKCk7XG4gIH1cbiAgaXNSZWdpc3RlcmVkKHRva2VuLCByZWN1cnNpdmUgPSBmYWxzZSkge1xuICAgIHRoaXMuZW5zdXJlTm90RGlzcG9zZWQoKTtcbiAgICByZXR1cm4gdGhpcy5fcmVnaXN0cnkuaGFzKHRva2VuKSB8fCAoKHJlY3Vyc2l2ZSAmJiB0aGlzLnBhcmVudD8uaXNSZWdpc3RlcmVkKHRva2VuLCB0cnVlKSkgPz8gZmFsc2UpO1xuICB9XG4gIHJlc2V0KCkge1xuICAgIHRoaXMuZW5zdXJlTm90RGlzcG9zZWQoKTtcbiAgICB0aGlzLl9yZWdpc3RyeS5jbGVhcigpO1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnByZVJlc29sdXRpb24uY2xlYXIoKTtcbiAgICB0aGlzLmludGVyY2VwdG9ycy5wb3N0UmVzb2x1dGlvbi5jbGVhcigpO1xuICB9XG4gIHVucmVnaXN0ZXJBbGwoKSB7XG4gICAgdGhpcy5fcmVnaXN0cnkuY2xlYXIoKTtcbiAgICB0aGlzLmludGVyY2VwdG9ycy5wcmVSZXNvbHV0aW9uLmNsZWFyKCk7XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMucG9zdFJlc29sdXRpb24uY2xlYXIoKTtcbiAgfVxuICB1bnJlZ2lzdGVyKHRva2VuKSB7XG4gICAgY29uc3QgcmVnaXN0cmF0aW9uID0gdGhpcy5nZXRSZWdpc3RyYXRpb24odG9rZW4pO1xuICAgIGlmICghcmVnaXN0cmF0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBBdHRlbXB0ZWQgdG8gZGVsZXRlIHVucmVnaXN0ZXJlZCBkZXBlbmRlbmN5IHRva2VuOiBcIiR7dG9rZW4udG9TdHJpbmcoKX1cImBcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuX3JlZ2lzdHJ5LmRlbGV0ZSh0b2tlbik7XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMucHJlUmVzb2x1dGlvbi5kZWxldGUodG9rZW4pO1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnBvc3RSZXNvbHV0aW9uLmRlbGV0ZSh0b2tlbik7XG4gIH1cbiAgY2xlYXJJbnN0YW5jZXMoKSB7XG4gICAgdGhpcy5lbnN1cmVOb3REaXNwb3NlZCgpO1xuICAgIGZvciAoY29uc3QgW3Rva2VuLCByZWdpc3RyYXRpb25zXSBvZiB0aGlzLl9yZWdpc3RyeS5lbnRyaWVzKCkpIHtcbiAgICAgIHRoaXMuX3JlZ2lzdHJ5LnNldEFsbChcbiAgICAgICAgdG9rZW4sXG4gICAgICAgIHJlZ2lzdHJhdGlvbnMuZmlsdGVyKChyZWdpc3RyYXRpb24pID0+ICFpc1ZhbHVlUHJvdmlkZXIocmVnaXN0cmF0aW9uLnByb3ZpZGVyKSkubWFwKChyZWdpc3RyYXRpb24pID0+IHtcbiAgICAgICAgICByZWdpc3RyYXRpb24uaW5zdGFuY2UgPSB2b2lkIDA7XG4gICAgICAgICAgcmV0dXJuIHJlZ2lzdHJhdGlvbjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGNyZWF0ZUNoaWxkQ29udGFpbmVyKCkge1xuICAgIHRoaXMuZW5zdXJlTm90RGlzcG9zZWQoKTtcbiAgICBjb25zdCBjaGlsZENvbnRhaW5lciA9IG5ldyBJbnRlcm5hbERlcGVuZGVuY3lDb250YWluZXIodGhpcyk7XG4gICAgZm9yIChjb25zdCBbdG9rZW4sIHJlZ2lzdHJhdGlvbnNdIG9mIHRoaXMuX3JlZ2lzdHJ5LmVudHJpZXMoKSkge1xuICAgICAgaWYgKHJlZ2lzdHJhdGlvbnMuc29tZShcbiAgICAgICAgKHsgb3B0aW9ucyB9KSA9PiBvcHRpb25zLmxpZmVjeWNsZSA9PT0gTGlmZWN5Y2xlLkNvbnRhaW5lclNjb3BlZFxuICAgICAgKSkge1xuICAgICAgICBjaGlsZENvbnRhaW5lci5fcmVnaXN0cnkuc2V0QWxsKFxuICAgICAgICAgIHRva2VuLFxuICAgICAgICAgIHJlZ2lzdHJhdGlvbnMubWFwKChyZWdpc3RyYXRpb24pID0+IHtcbiAgICAgICAgICAgIGlmIChyZWdpc3RyYXRpb24ub3B0aW9ucy5saWZlY3ljbGUgPT09IExpZmVjeWNsZS5Db250YWluZXJTY29wZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBwcm92aWRlcjogcmVnaXN0cmF0aW9uLnByb3ZpZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHJlZ2lzdHJhdGlvbi5vcHRpb25zXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVnaXN0cmF0aW9uO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjaGlsZENvbnRhaW5lcjtcbiAgfVxuICBhZnRlclJlZ2lzdHJhdGlvbih0b2tlbiwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7IGZyZXF1ZW5jeTogXCJBbHdheXNcIiB9KSB7XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMucG9zdFJlZ2lzdHJhdGlvbi5zZXQodG9rZW4sIHtcbiAgICAgIGNhbGxiYWNrLFxuICAgICAgb3B0aW9uc1xuICAgIH0pO1xuICB9XG4gIGFmdGVyQW55UmVnaXN0cmF0aW9uKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMucG9zdEFueVJlZ2lzdHJhdGlvbiA9IGNhbGxiYWNrO1xuICB9XG4gIGJlZm9yZVJlc29sdXRpb24odG9rZW4sIGNhbGxiYWNrLCBvcHRpb25zID0geyBmcmVxdWVuY3k6IFwiQWx3YXlzXCIgfSkge1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnByZVJlc29sdXRpb24uc2V0KHRva2VuLCB7XG4gICAgICBjYWxsYmFjayxcbiAgICAgIG9wdGlvbnNcbiAgICB9KTtcbiAgfVxuICBiZWZvcmVBbnlSZXNvbHV0aW9uKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMucHJlQW55UmVzb2x1dGlvbiA9IGNhbGxiYWNrO1xuICB9XG4gIGFmdGVyUmVzb2x1dGlvbih0b2tlbiwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7IGZyZXF1ZW5jeTogXCJBbHdheXNcIiB9KSB7XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMucG9zdFJlc29sdXRpb24uc2V0KHRva2VuLCB7XG4gICAgICBjYWxsYmFjayxcbiAgICAgIG9wdGlvbnNcbiAgICB9KTtcbiAgfVxuICBhZnRlckFueVJlc29sdXRpb24oY2FsbGJhY2spIHtcbiAgICB0aGlzLmludGVyY2VwdG9ycy5wb3N0QW55UmVzb2x1dGlvbiA9IGNhbGxiYWNrO1xuICB9XG4gIGFzeW5jIGRpc3Bvc2UoKSB7XG4gICAgdGhpcy5kaXNwb3NlZCA9IHRydWU7XG4gICAgY29uc3QgcHJvbWlzZXMgPSBbXTtcbiAgICB0aGlzLmRpc3Bvc2FibGVzLmZvckVhY2goKGRpc3Bvc2FibGUpID0+IHtcbiAgICAgIGNvbnN0IG1heWJlUHJvbWlzZSA9IGRpc3Bvc2FibGUuZGlzcG9zZSgpO1xuICAgICAgaWYgKG1heWJlUHJvbWlzZSkge1xuICAgICAgICBwcm9taXNlcy5wdXNoKG1heWJlUHJvbWlzZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICB9XG4gIGdldFJlZ2lzdHJhdGlvbih0b2tlbikge1xuICAgIGlmICh0aGlzLmlzUmVnaXN0ZXJlZCh0b2tlbikpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZWdpc3RyeS5nZXQodG9rZW4pO1xuICAgIH1cbiAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmVudC5nZXRSZWdpc3RyYXRpb24odG9rZW4pO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBnZXRBbGxSZWdpc3RyYXRpb25zKHRva2VuKSB7XG4gICAgaWYgKHRoaXMuaXNSZWdpc3RlcmVkKHRva2VuKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlZ2lzdHJ5LmdldEFsbCh0b2tlbik7XG4gICAgfVxuICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyZW50LmdldEFsbFJlZ2lzdHJhdGlvbnModG9rZW4pO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdHJ1Y3QoY3RvciwgY29udGV4dCkge1xuICAgIGlmIChjdG9yIGluc3RhbmNlb2YgRGVsYXllZENvbnN0cnVjdG9yKSB7XG4gICAgICByZXR1cm4gY3Rvci5jcmVhdGVQcm94eShcbiAgICAgICAgKHRhcmdldCkgPT4gdGhpcy5yZXNvbHZlKHRhcmdldCwgY29udGV4dClcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGluc3RhbmNlMiA9ICgoKSA9PiB7XG4gICAgICBjb25zdCBwYXJhbUluZm8gPSBSZWZsZWN0LmdldE1ldGFkYXRhKFBBUkFNX0lORk9TX01FVEFEQVRBX0tFWSwgY3Rvcik7XG4gICAgICBpZiAoIXBhcmFtSW5mbyB8fCBwYXJhbUluZm8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGlmIChjdG9yLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBuZXcgY3RvcigpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVHlwZUluZm8gbm90IGtub3duIGZvciBcIiR7Y3Rvci5uYW1lfVwiYCk7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJhbXMgPSBwYXJhbUluZm8ubWFwKHRoaXMucmVzb2x2ZVBhcmFtcyhjb250ZXh0LCBjdG9yKSk7XG4gICAgICByZXR1cm4gbmV3IGN0b3IoLi4ucGFyYW1zKTtcbiAgICB9KSgpO1xuICAgIGlmIChpc0Rpc3Bvc2FibGUoaW5zdGFuY2UyKSkge1xuICAgICAgdGhpcy5kaXNwb3NhYmxlcy5hZGQoaW5zdGFuY2UyKTtcbiAgICB9XG4gICAgcmV0dXJuIGluc3RhbmNlMjtcbiAgfVxuICByZXNvbHZlUGFyYW1zKGNvbnRleHQsIGN0b3IpIHtcbiAgICByZXR1cm4gKHBhcmFtLCBpZHgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChpc1Rva2VuRGVzY3JpcHRvcihwYXJhbSkpIHtcbiAgICAgICAgICBpZiAoaXNUcmFuc2Zvcm1EZXNjcmlwdG9yKHBhcmFtKSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcmFtLm11bHRpcGxlID8gdGhpcy5yZXNvbHZlKHBhcmFtLnRyYW5zZm9ybSkudHJhbnNmb3JtKFxuICAgICAgICAgICAgICB0aGlzLnJlc29sdmVBbGwocGFyYW0udG9rZW4pLFxuICAgICAgICAgICAgICAuLi5wYXJhbS50cmFuc2Zvcm1BcmdzXG4gICAgICAgICAgICApIDogdGhpcy5yZXNvbHZlKHBhcmFtLnRyYW5zZm9ybSkudHJhbnNmb3JtKFxuICAgICAgICAgICAgICB0aGlzLnJlc29sdmUocGFyYW0udG9rZW4sIGNvbnRleHQpLFxuICAgICAgICAgICAgICAuLi5wYXJhbS50cmFuc2Zvcm1BcmdzXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcGFyYW0ubXVsdGlwbGUgPyB0aGlzLnJlc29sdmVBbGwocGFyYW0udG9rZW4pIDogdGhpcy5yZXNvbHZlKHBhcmFtLnRva2VuLCBjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNUcmFuc2Zvcm1EZXNjcmlwdG9yKHBhcmFtKSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnJlc29sdmUocGFyYW0udHJhbnNmb3JtLCBjb250ZXh0KS50cmFuc2Zvcm0oXG4gICAgICAgICAgICB0aGlzLnJlc29sdmUocGFyYW0udG9rZW4sIGNvbnRleHQpLFxuICAgICAgICAgICAgLi4ucGFyYW0udHJhbnNmb3JtQXJnc1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZShwYXJhbSwgY29udGV4dCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZm9ybWF0RXJyb3JDdG9yKGN0b3IsIGlkeCwgZXJyb3IpKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIGVuc3VyZU5vdERpc3Bvc2VkKCkge1xuICAgIGlmICh0aGlzLmRpc3Bvc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiVGhpcyBjb250YWluZXIgaGFzIGJlZW4gZGlzcG9zZWQsIHlvdSBjYW5ub3QgaW50ZXJhY3Qgd2l0aCBhIGRpc3Bvc2VkIGNvbnRhaW5lclwiXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuY29uc3QgaW5zdGFuY2UgPSBuZXcgSW50ZXJuYWxEZXBlbmRlbmN5Q29udGFpbmVyKCk7XG5cbmZ1bmN0aW9uIGF1dG9JbmplY3RhYmxlKCkge1xuICByZXR1cm4gZnVuY3Rpb24odGFyZ2V0KSB7XG4gICAgY29uc3QgcGFyYW1JbmZvID0gZ2V0UGFyYW1JbmZvKHRhcmdldCk7XG4gICAgcmV0dXJuIGNsYXNzIGV4dGVuZHMgdGFyZ2V0IHtcbiAgICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgLi4uYXJncy5jb25jYXQoXG4gICAgICAgICAgICBwYXJhbUluZm8uc2xpY2UoYXJncy5sZW5ndGgpLm1hcCgodHlwZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNUb2tlbkRlc2NyaXB0b3IodHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChpc1RyYW5zZm9ybURlc2NyaXB0b3IodHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUubXVsdGlwbGUgPyBpbnN0YW5jZS5yZXNvbHZlKHR5cGUudHJhbnNmb3JtKS50cmFuc2Zvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UucmVzb2x2ZUFsbCh0eXBlLnRva2VuKSxcbiAgICAgICAgICAgICAgICAgICAgICAuLi50eXBlLnRyYW5zZm9ybUFyZ3NcbiAgICAgICAgICAgICAgICAgICAgKSA6IGluc3RhbmNlLnJlc29sdmUodHlwZS50cmFuc2Zvcm0pLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5yZXNvbHZlKHR5cGUudG9rZW4pLFxuICAgICAgICAgICAgICAgICAgICAgIC4uLnR5cGUudHJhbnNmb3JtQXJnc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUubXVsdGlwbGUgPyBpbnN0YW5jZS5yZXNvbHZlQWxsKHR5cGUudG9rZW4pIDogaW5zdGFuY2UucmVzb2x2ZSh0eXBlLnRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlzVHJhbnNmb3JtRGVzY3JpcHRvcih0eXBlKSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLnJlc29sdmUodHlwZS50cmFuc2Zvcm0pLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UucmVzb2x2ZSh0eXBlLnRva2VuKSxcbiAgICAgICAgICAgICAgICAgICAgLi4udHlwZS50cmFuc2Zvcm1BcmdzXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2UucmVzb2x2ZSh0eXBlKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhcmdJbmRleCA9IGluZGV4ICsgYXJncy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgZm9ybWF0RXJyb3JDdG9yKHRhcmdldCwgYXJnSW5kZXgsIGVycm9yKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH07XG4gIH07XG59XG5cbmZ1bmN0aW9uIGluamVjdCh0b2tlbikge1xuICByZXR1cm4gZGVmaW5lSW5qZWN0aW9uVG9rZW5NZXRhZGF0YSh0b2tlbik7XG59XG5cbmZ1bmN0aW9uIGluamVjdEFsbCh0b2tlbikge1xuICBjb25zdCBkYXRhID0geyB0b2tlbiwgbXVsdGlwbGU6IHRydWUgfTtcbiAgcmV0dXJuIGRlZmluZUluamVjdGlvblRva2VuTWV0YWRhdGEoZGF0YSk7XG59XG5cbmZ1bmN0aW9uIGluamVjdEFsbFdpdGhUcmFuc2Zvcm0odG9rZW4sIHRyYW5zZm9ybWVyLCAuLi5hcmdzKSB7XG4gIGNvbnN0IGRhdGEgPSB7XG4gICAgdG9rZW4sXG4gICAgbXVsdGlwbGU6IHRydWUsXG4gICAgdHJhbnNmb3JtOiB0cmFuc2Zvcm1lcixcbiAgICB0cmFuc2Zvcm1BcmdzOiBhcmdzXG4gIH07XG4gIHJldHVybiBkZWZpbmVJbmplY3Rpb25Ub2tlbk1ldGFkYXRhKGRhdGEpO1xufVxuXG5mdW5jdGlvbiBpbmplY3RXaXRoVHJhbnNmb3JtKHRva2VuLCB0cmFuc2Zvcm1lciwgLi4uYXJncykge1xuICByZXR1cm4gZGVmaW5lSW5qZWN0aW9uVG9rZW5NZXRhZGF0YSh0b2tlbiwge1xuICAgIHRyYW5zZm9ybVRva2VuOiB0cmFuc2Zvcm1lcixcbiAgICBhcmdzXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpbmplY3RhYmxlKCkge1xuICByZXR1cm4gZnVuY3Rpb24odGFyZ2V0KSB7XG4gICAgY29uc3QgcGFyYW1JbmZvID0gZ2V0UGFyYW1JbmZvKHRhcmdldCk7XG4gICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShQQVJBTV9JTkZPU19NRVRBREFUQV9LRVksIHBhcmFtSW5mbywgdGFyZ2V0KTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVnaXN0cnkocmVnaXN0cmF0aW9ucyA9IFtdKSB7XG4gIHJldHVybiBmdW5jdGlvbih0YXJnZXQpIHtcbiAgICByZWdpc3RyYXRpb25zLmZvckVhY2goXG4gICAgICAoeyB0b2tlbiwgb3B0aW9ucywgLi4ucHJvdmlkZXIgfSkgPT4gaW5zdGFuY2UucmVnaXN0ZXIodG9rZW4sIHByb3ZpZGVyLCBvcHRpb25zKVxuICAgICk7XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc2NvcGVkKGxpZmVjeWNsZSwgdG9rZW4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHRhcmdldCkge1xuICAgIGluamVjdGFibGUoKSh0YXJnZXQpO1xuICAgIGluc3RhbmNlLnJlZ2lzdGVyKHRva2VuIHx8IHRhcmdldCwgdGFyZ2V0LCB7XG4gICAgICBsaWZlY3ljbGVcbiAgICB9KTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc2luZ2xldG9uKCkge1xuICByZXR1cm4gZnVuY3Rpb24odGFyZ2V0KSB7XG4gICAgaW5qZWN0YWJsZSgpKHRhcmdldCk7XG4gICAgaW5zdGFuY2UucmVnaXN0ZXJTaW5nbGV0b24odGFyZ2V0KTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gaW5zdGFuY2VDYWNoaW5nRmFjdG9yeShmYWN0b3J5RnVuYykge1xuICBsZXQgaW5zdGFuY2U7XG4gIHJldHVybiAoZGVwZW5kZW5jeUNvbnRhaW5lcikgPT4ge1xuICAgIGlmIChpbnN0YW5jZSA9PSBudWxsKSB7XG4gICAgICBpbnN0YW5jZSA9IGZhY3RvcnlGdW5jKGRlcGVuZGVuY3lDb250YWluZXIpO1xuICAgIH1cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGluc3RhbmNlUGVyQ29udGFpbmVyQ2FjaGluZ0ZhY3RvcnkoZmFjdG9yeUZ1bmMpIHtcbiAgY29uc3QgY2FjaGUgPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKTtcbiAgcmV0dXJuIChkZXBlbmRlbmN5Q29udGFpbmVyKSA9PiB7XG4gICAgbGV0IGluc3RhbmNlID0gY2FjaGUuZ2V0KGRlcGVuZGVuY3lDb250YWluZXIpO1xuICAgIGlmIChpbnN0YW5jZSA9PSBudWxsKSB7XG4gICAgICBpbnN0YW5jZSA9IGZhY3RvcnlGdW5jKGRlcGVuZGVuY3lDb250YWluZXIpO1xuICAgICAgY2FjaGUuc2V0KGRlcGVuZGVuY3lDb250YWluZXIsIGluc3RhbmNlKTtcbiAgICB9XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9O1xufVxuXG5mdW5jdGlvbiBwcmVkaWNhdGVBd2FyZUNsYXNzRmFjdG9yeShwcmVkaWNhdGUsIHRydWVDb25zdHJ1Y3RvciwgZmFsc2VDb25zdHJ1Y3RvciwgdXNlQ2FjaGluZyA9IHRydWUpIHtcbiAgbGV0IGluc3RhbmNlO1xuICBsZXQgcHJldmlvdXNQcmVkaWNhdGU7XG4gIHJldHVybiAoZGVwZW5kZW5jeUNvbnRhaW5lcikgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRQcmVkaWNhdGUgPSBwcmVkaWNhdGUoZGVwZW5kZW5jeUNvbnRhaW5lcik7XG4gICAgaWYgKCF1c2VDYWNoaW5nIHx8IHByZXZpb3VzUHJlZGljYXRlICE9PSBjdXJyZW50UHJlZGljYXRlKSB7XG4gICAgICBpZiAocHJldmlvdXNQcmVkaWNhdGUgPSBjdXJyZW50UHJlZGljYXRlKSB7XG4gICAgICAgIGluc3RhbmNlID0gZGVwZW5kZW5jeUNvbnRhaW5lci5yZXNvbHZlKHRydWVDb25zdHJ1Y3Rvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnN0YW5jZSA9IGRlcGVuZGVuY3lDb250YWluZXIucmVzb2x2ZShmYWxzZUNvbnN0cnVjdG9yKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9O1xufVxuXG5pZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuZ2V0TWV0YWRhdGEpIHtcbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGB0c3lyaW5nZS1uZW8gcmVxdWlyZXMgYSByZWZsZWN0IHBvbHlmaWxsLiBQbGVhc2UgYWRkICdpbXBvcnQgXCJyZWZsZWN0LW1ldGFkYXRhXCInIHRvIHRoZSB0b3Agb2YgeW91ciBlbnRyeSBwb2ludC5gXG4gICk7XG59XG5cbmV4cG9ydCB7IExpZmVjeWNsZSwgYXV0b0luamVjdGFibGUsIGluc3RhbmNlIGFzIGNvbnRhaW5lciwgZGVsYXksIGluamVjdCwgaW5qZWN0QWxsLCBpbmplY3RBbGxXaXRoVHJhbnNmb3JtLCBpbmplY3RXaXRoVHJhbnNmb3JtLCBpbmplY3RhYmxlLCBpbnN0YW5jZUNhY2hpbmdGYWN0b3J5LCBpbnN0YW5jZVBlckNvbnRhaW5lckNhY2hpbmdGYWN0b3J5LCBpc0NsYXNzUHJvdmlkZXIsIGlzRmFjdG9yeVByb3ZpZGVyLCBpc05vcm1hbFRva2VuLCBpc1Rva2VuUHJvdmlkZXIsIGlzVmFsdWVQcm92aWRlciwgcHJlZGljYXRlQXdhcmVDbGFzc0ZhY3RvcnksIHJlZ2lzdHJ5LCBzY29wZWQsIHNpbmdsZXRvbiB9O1xuIiwiaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiXG5pbXBvcnQge3NpbmdsZXRvbiwgaW5qZWN0YWJsZX0gZnJvbSBcInRzeXJpbmdlLW5lb1wiXG5cbkBzaW5nbGV0b24oKVxuY2xhc3MgVG9rZW4ge1xuICAgIHB1YmxpYyBjdXJyZW50VG9rZW46U3RyaW5nXG5cbiAgICBpbml0KCkge1xuICAgICAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbigpXG4gICAgICAgIH0sIDIqNjAqMTAwMClcbiAgICB9XG4gICAgcmVmcmVzaFRva2VuKCk6IHZvaWQge1xuICAgICAgICBheGlvcy5nZXQoJy9hcHBzL2FwaS9jb250YWN0L3JlZnJlc2gnLCB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLmN1cnJlbnRUb2tlblxuICAgICAgICAgICAgfVxuICAgICAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHJlc3BvbnNlLmRhdGEudG9rZW5cbiAgICAgICAgfSlcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFRva2VuXG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiBzY2hlZHVsZXIucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO2Z1bmN0aW9uIGYoYSxiKXt2YXIgYz1hLmxlbmd0aDthLnB1c2goYik7YTpmb3IoOzA8Yzspe3ZhciBkPWMtMT4+PjEsZT1hW2RdO2lmKDA8ZyhlLGIpKWFbZF09YixhW2NdPWUsYz1kO2Vsc2UgYnJlYWsgYX19ZnVuY3Rpb24gaChhKXtyZXR1cm4gMD09PWEubGVuZ3RoP251bGw6YVswXX1mdW5jdGlvbiBrKGEpe2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgYj1hWzBdLGM9YS5wb3AoKTtpZihjIT09Yil7YVswXT1jO2E6Zm9yKHZhciBkPTAsZT1hLmxlbmd0aCx3PWU+Pj4xO2Q8dzspe3ZhciBtPTIqKGQrMSktMSxDPWFbbV0sbj1tKzEseD1hW25dO2lmKDA+ZyhDLGMpKW48ZSYmMD5nKHgsQyk/KGFbZF09eCxhW25dPWMsZD1uKTooYVtkXT1DLGFbbV09YyxkPW0pO2Vsc2UgaWYobjxlJiYwPmcoeCxjKSlhW2RdPXgsYVtuXT1jLGQ9bjtlbHNlIGJyZWFrIGF9fXJldHVybiBifVxuZnVuY3Rpb24gZyhhLGIpe3ZhciBjPWEuc29ydEluZGV4LWIuc29ydEluZGV4O3JldHVybiAwIT09Yz9jOmEuaWQtYi5pZH1pZihcIm9iamVjdFwiPT09dHlwZW9mIHBlcmZvcm1hbmNlJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgcGVyZm9ybWFuY2Uubm93KXt2YXIgbD1wZXJmb3JtYW5jZTtleHBvcnRzLnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiBsLm5vdygpfX1lbHNle3ZhciBwPURhdGUscT1wLm5vdygpO2V4cG9ydHMudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIHAubm93KCktcX19dmFyIHI9W10sdD1bXSx1PTEsdj1udWxsLHk9Myx6PSExLEE9ITEsQj0hMSxEPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6bnVsbCxFPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0Om51bGwsRj1cInVuZGVmaW5lZFwiIT09dHlwZW9mIHNldEltbWVkaWF0ZT9zZXRJbW1lZGlhdGU6bnVsbDtcblwidW5kZWZpbmVkXCIhPT10eXBlb2YgbmF2aWdhdG9yJiZ2b2lkIDAhPT1uYXZpZ2F0b3Iuc2NoZWR1bGluZyYmdm9pZCAwIT09bmF2aWdhdG9yLnNjaGVkdWxpbmcuaXNJbnB1dFBlbmRpbmcmJm5hdmlnYXRvci5zY2hlZHVsaW5nLmlzSW5wdXRQZW5kaW5nLmJpbmQobmF2aWdhdG9yLnNjaGVkdWxpbmcpO2Z1bmN0aW9uIEcoYSl7Zm9yKHZhciBiPWgodCk7bnVsbCE9PWI7KXtpZihudWxsPT09Yi5jYWxsYmFjaylrKHQpO2Vsc2UgaWYoYi5zdGFydFRpbWU8PWEpayh0KSxiLnNvcnRJbmRleD1iLmV4cGlyYXRpb25UaW1lLGYocixiKTtlbHNlIGJyZWFrO2I9aCh0KX19ZnVuY3Rpb24gSChhKXtCPSExO0coYSk7aWYoIUEpaWYobnVsbCE9PWgocikpQT0hMCxJKEopO2Vsc2V7dmFyIGI9aCh0KTtudWxsIT09YiYmSyhILGIuc3RhcnRUaW1lLWEpfX1cbmZ1bmN0aW9uIEooYSxiKXtBPSExO0ImJihCPSExLEUoTCksTD0tMSk7ej0hMDt2YXIgYz15O3RyeXtHKGIpO2Zvcih2PWgocik7bnVsbCE9PXYmJighKHYuZXhwaXJhdGlvblRpbWU+Yil8fGEmJiFNKCkpOyl7dmFyIGQ9di5jYWxsYmFjaztpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZCl7di5jYWxsYmFjaz1udWxsO3k9di5wcmlvcml0eUxldmVsO3ZhciBlPWQodi5leHBpcmF0aW9uVGltZTw9Yik7Yj1leHBvcnRzLnVuc3RhYmxlX25vdygpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBlP3YuY2FsbGJhY2s9ZTp2PT09aChyKSYmayhyKTtHKGIpfWVsc2UgayhyKTt2PWgocil9aWYobnVsbCE9PXYpdmFyIHc9ITA7ZWxzZXt2YXIgbT1oKHQpO251bGwhPT1tJiZLKEgsbS5zdGFydFRpbWUtYik7dz0hMX1yZXR1cm4gd31maW5hbGx5e3Y9bnVsbCx5PWMsej0hMX19dmFyIE49ITEsTz1udWxsLEw9LTEsUD01LFE9LTE7XG5mdW5jdGlvbiBNKCl7cmV0dXJuIGV4cG9ydHMudW5zdGFibGVfbm93KCktUTxQPyExOiEwfWZ1bmN0aW9uIFIoKXtpZihudWxsIT09Tyl7dmFyIGE9ZXhwb3J0cy51bnN0YWJsZV9ub3coKTtRPWE7dmFyIGI9ITA7dHJ5e2I9TyghMCxhKX1maW5hbGx5e2I/UygpOihOPSExLE89bnVsbCl9fWVsc2UgTj0hMX12YXIgUztpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgRilTPWZ1bmN0aW9uKCl7RihSKX07ZWxzZSBpZihcInVuZGVmaW5lZFwiIT09dHlwZW9mIE1lc3NhZ2VDaGFubmVsKXt2YXIgVD1uZXcgTWVzc2FnZUNoYW5uZWwsVT1ULnBvcnQyO1QucG9ydDEub25tZXNzYWdlPVI7Uz1mdW5jdGlvbigpe1UucG9zdE1lc3NhZ2UobnVsbCl9fWVsc2UgUz1mdW5jdGlvbigpe0QoUiwwKX07ZnVuY3Rpb24gSShhKXtPPWE7Tnx8KE49ITAsUygpKX1mdW5jdGlvbiBLKGEsYil7TD1EKGZ1bmN0aW9uKCl7YShleHBvcnRzLnVuc3RhYmxlX25vdygpKX0sYil9XG5leHBvcnRzLnVuc3RhYmxlX0lkbGVQcmlvcml0eT01O2V4cG9ydHMudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHk9MTtleHBvcnRzLnVuc3RhYmxlX0xvd1ByaW9yaXR5PTQ7ZXhwb3J0cy51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eT0zO2V4cG9ydHMudW5zdGFibGVfUHJvZmlsaW5nPW51bGw7ZXhwb3J0cy51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eT0yO2V4cG9ydHMudW5zdGFibGVfY2FuY2VsQ2FsbGJhY2s9ZnVuY3Rpb24oYSl7YS5jYWxsYmFjaz1udWxsfTtleHBvcnRzLnVuc3RhYmxlX2NvbnRpbnVlRXhlY3V0aW9uPWZ1bmN0aW9uKCl7QXx8enx8KEE9ITAsSShKKSl9O1xuZXhwb3J0cy51bnN0YWJsZV9mb3JjZUZyYW1lUmF0ZT1mdW5jdGlvbihhKXswPmF8fDEyNTxhP2NvbnNvbGUuZXJyb3IoXCJmb3JjZUZyYW1lUmF0ZSB0YWtlcyBhIHBvc2l0aXZlIGludCBiZXR3ZWVuIDAgYW5kIDEyNSwgZm9yY2luZyBmcmFtZSByYXRlcyBoaWdoZXIgdGhhbiAxMjUgZnBzIGlzIG5vdCBzdXBwb3J0ZWRcIik6UD0wPGE/TWF0aC5mbG9vcigxRTMvYSk6NX07ZXhwb3J0cy51bnN0YWJsZV9nZXRDdXJyZW50UHJpb3JpdHlMZXZlbD1mdW5jdGlvbigpe3JldHVybiB5fTtleHBvcnRzLnVuc3RhYmxlX2dldEZpcnN0Q2FsbGJhY2tOb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIGgocil9O2V4cG9ydHMudW5zdGFibGVfbmV4dD1mdW5jdGlvbihhKXtzd2l0Y2goeSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6dmFyIGI9MzticmVhaztkZWZhdWx0OmI9eX12YXIgYz15O3k9Yjt0cnl7cmV0dXJuIGEoKX1maW5hbGx5e3k9Y319O2V4cG9ydHMudW5zdGFibGVfcGF1c2VFeGVjdXRpb249ZnVuY3Rpb24oKXt9O1xuZXhwb3J0cy51bnN0YWJsZV9yZXF1ZXN0UGFpbnQ9ZnVuY3Rpb24oKXt9O2V4cG9ydHMudW5zdGFibGVfcnVuV2l0aFByaW9yaXR5PWZ1bmN0aW9uKGEsYil7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOmNhc2UgNDpjYXNlIDU6YnJlYWs7ZGVmYXVsdDphPTN9dmFyIGM9eTt5PWE7dHJ5e3JldHVybiBiKCl9ZmluYWxseXt5PWN9fTtcbmV4cG9ydHMudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjaz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZXhwb3J0cy51bnN0YWJsZV9ub3coKTtcIm9iamVjdFwiPT09dHlwZW9mIGMmJm51bGwhPT1jPyhjPWMuZGVsYXksYz1cIm51bWJlclwiPT09dHlwZW9mIGMmJjA8Yz9kK2M6ZCk6Yz1kO3N3aXRjaChhKXtjYXNlIDE6dmFyIGU9LTE7YnJlYWs7Y2FzZSAyOmU9MjUwO2JyZWFrO2Nhc2UgNTplPTEwNzM3NDE4MjM7YnJlYWs7Y2FzZSA0OmU9MUU0O2JyZWFrO2RlZmF1bHQ6ZT01RTN9ZT1jK2U7YT17aWQ6dSsrLGNhbGxiYWNrOmIscHJpb3JpdHlMZXZlbDphLHN0YXJ0VGltZTpjLGV4cGlyYXRpb25UaW1lOmUsc29ydEluZGV4Oi0xfTtjPmQ/KGEuc29ydEluZGV4PWMsZih0LGEpLG51bGw9PT1oKHIpJiZhPT09aCh0KSYmKEI/KEUoTCksTD0tMSk6Qj0hMCxLKEgsYy1kKSkpOihhLnNvcnRJbmRleD1lLGYocixhKSxBfHx6fHwoQT0hMCxJKEopKSk7cmV0dXJuIGF9O1xuZXhwb3J0cy51bnN0YWJsZV9zaG91bGRZaWVsZD1NO2V4cG9ydHMudW5zdGFibGVfd3JhcENhbGxiYWNrPWZ1bmN0aW9uKGEpe3ZhciBiPXk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGM9eTt5PWI7dHJ5e3JldHVybiBhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5e3k9Y319fTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9zY2hlZHVsZXIucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvc2NoZWR1bGVyLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuLypcbiBNb2Rlcm5penIgMy4wLjBwcmUgKEN1c3RvbSBCdWlsZCkgfCBNSVRcbiovXG4ndXNlIHN0cmljdCc7dmFyIGFhPXJlcXVpcmUoXCJyZWFjdFwiKSxjYT1yZXF1aXJlKFwic2NoZWR1bGVyXCIpO2Z1bmN0aW9uIHAoYSl7Zm9yKHZhciBiPVwiaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9XCIrYSxjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyliKz1cIiZhcmdzW109XCIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tjXSk7cmV0dXJuXCJNaW5pZmllZCBSZWFjdCBlcnJvciAjXCIrYStcIjsgdmlzaXQgXCIrYitcIiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuXCJ9dmFyIGRhPW5ldyBTZXQsZWE9e307ZnVuY3Rpb24gZmEoYSxiKXtoYShhLGIpO2hhKGErXCJDYXB0dXJlXCIsYil9XG5mdW5jdGlvbiBoYShhLGIpe2VhW2FdPWI7Zm9yKGE9MDthPGIubGVuZ3RoO2ErKylkYS5hZGQoYlthXSl9XG52YXIgaWE9IShcInVuZGVmaW5lZFwiPT09dHlwZW9mIHdpbmRvd3x8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiB3aW5kb3cuZG9jdW1lbnR8fFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpLGphPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksa2E9L15bOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkRdWzpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEXFwtLjAtOVxcdTAwQjdcXHUwMzAwLVxcdTAzNkZcXHUyMDNGLVxcdTIwNDBdKiQvLGxhPVxue30sbWE9e307ZnVuY3Rpb24gb2EoYSl7aWYoamEuY2FsbChtYSxhKSlyZXR1cm4hMDtpZihqYS5jYWxsKGxhLGEpKXJldHVybiExO2lmKGthLnRlc3QoYSkpcmV0dXJuIG1hW2FdPSEwO2xhW2FdPSEwO3JldHVybiExfWZ1bmN0aW9uIHBhKGEsYixjLGQpe2lmKG51bGwhPT1jJiYwPT09Yy50eXBlKXJldHVybiExO3N3aXRjaCh0eXBlb2YgYil7Y2FzZSBcImZ1bmN0aW9uXCI6Y2FzZSBcInN5bWJvbFwiOnJldHVybiEwO2Nhc2UgXCJib29sZWFuXCI6aWYoZClyZXR1cm4hMTtpZihudWxsIT09YylyZXR1cm4hYy5hY2NlcHRzQm9vbGVhbnM7YT1hLnRvTG93ZXJDYXNlKCkuc2xpY2UoMCw1KTtyZXR1cm5cImRhdGEtXCIhPT1hJiZcImFyaWEtXCIhPT1hO2RlZmF1bHQ6cmV0dXJuITF9fVxuZnVuY3Rpb24gcWEoYSxiLGMsZCl7aWYobnVsbD09PWJ8fFwidW5kZWZpbmVkXCI9PT10eXBlb2YgYnx8cGEoYSxiLGMsZCkpcmV0dXJuITA7aWYoZClyZXR1cm4hMTtpZihudWxsIT09Yylzd2l0Y2goYy50eXBlKXtjYXNlIDM6cmV0dXJuIWI7Y2FzZSA0OnJldHVybiExPT09YjtjYXNlIDU6cmV0dXJuIGlzTmFOKGIpO2Nhc2UgNjpyZXR1cm4gaXNOYU4oYil8fDE+Yn1yZXR1cm4hMX1mdW5jdGlvbiB2KGEsYixjLGQsZSxmLGcpe3RoaXMuYWNjZXB0c0Jvb2xlYW5zPTI9PT1ifHwzPT09Ynx8ND09PWI7dGhpcy5hdHRyaWJ1dGVOYW1lPWQ7dGhpcy5hdHRyaWJ1dGVOYW1lc3BhY2U9ZTt0aGlzLm11c3RVc2VQcm9wZXJ0eT1jO3RoaXMucHJvcGVydHlOYW1lPWE7dGhpcy50eXBlPWI7dGhpcy5zYW5pdGl6ZVVSTD1mO3RoaXMucmVtb3ZlRW1wdHlTdHJpbmc9Z312YXIgej17fTtcblwiY2hpbGRyZW4gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgZGVmYXVsdFZhbHVlIGRlZmF1bHRDaGVja2VkIGlubmVySFRNTCBzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIHN0eWxlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDAsITEsYSxudWxsLCExLCExKX0pO1tbXCJhY2NlcHRDaGFyc2V0XCIsXCJhY2NlcHQtY2hhcnNldFwiXSxbXCJjbGFzc05hbWVcIixcImNsYXNzXCJdLFtcImh0bWxGb3JcIixcImZvclwiXSxbXCJodHRwRXF1aXZcIixcImh0dHAtZXF1aXZcIl1dLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YVswXTt6W2JdPW5ldyB2KGIsMSwhMSxhWzFdLG51bGwsITEsITEpfSk7W1wiY29udGVudEVkaXRhYmxlXCIsXCJkcmFnZ2FibGVcIixcInNwZWxsQ2hlY2tcIixcInZhbHVlXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDIsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7XG5bXCJhdXRvUmV2ZXJzZVwiLFwiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFwiLFwiZm9jdXNhYmxlXCIsXCJwcmVzZXJ2ZUFscGhhXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDIsITEsYSxudWxsLCExLCExKX0pO1wiYWxsb3dGdWxsU2NyZWVuIGFzeW5jIGF1dG9Gb2N1cyBhdXRvUGxheSBjb250cm9scyBkZWZhdWx0IGRlZmVyIGRpc2FibGVkIGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlIGRpc2FibGVSZW1vdGVQbGF5YmFjayBmb3JtTm9WYWxpZGF0ZSBoaWRkZW4gbG9vcCBub01vZHVsZSBub1ZhbGlkYXRlIG9wZW4gcGxheXNJbmxpbmUgcmVhZE9ubHkgcmVxdWlyZWQgcmV2ZXJzZWQgc2NvcGVkIHNlYW1sZXNzIGl0ZW1TY29wZVwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwzLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pO1xuW1wiY2hlY2tlZFwiLFwibXVsdGlwbGVcIixcIm11dGVkXCIsXCJzZWxlY3RlZFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwzLCEwLGEsbnVsbCwhMSwhMSl9KTtbXCJjYXB0dXJlXCIsXCJkb3dubG9hZFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSw0LCExLGEsbnVsbCwhMSwhMSl9KTtbXCJjb2xzXCIsXCJyb3dzXCIsXCJzaXplXCIsXCJzcGFuXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDYsITEsYSxudWxsLCExLCExKX0pO1tcInJvd1NwYW5cIixcInN0YXJ0XCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDUsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7dmFyIHJhPS9bXFwtOl0oW2Etel0pL2c7ZnVuY3Rpb24gc2EoYSl7cmV0dXJuIGFbMV0udG9VcHBlckNhc2UoKX1cblwiYWNjZW50LWhlaWdodCBhbGlnbm1lbnQtYmFzZWxpbmUgYXJhYmljLWZvcm0gYmFzZWxpbmUtc2hpZnQgY2FwLWhlaWdodCBjbGlwLXBhdGggY2xpcC1ydWxlIGNvbG9yLWludGVycG9sYXRpb24gY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIGNvbG9yLXByb2ZpbGUgY29sb3ItcmVuZGVyaW5nIGRvbWluYW50LWJhc2VsaW5lIGVuYWJsZS1iYWNrZ3JvdW5kIGZpbGwtb3BhY2l0eSBmaWxsLXJ1bGUgZmxvb2QtY29sb3IgZmxvb2Qtb3BhY2l0eSBmb250LWZhbWlseSBmb250LXNpemUgZm9udC1zaXplLWFkanVzdCBmb250LXN0cmV0Y2ggZm9udC1zdHlsZSBmb250LXZhcmlhbnQgZm9udC13ZWlnaHQgZ2x5cGgtbmFtZSBnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIGhvcml6LWFkdi14IGhvcml6LW9yaWdpbi14IGltYWdlLXJlbmRlcmluZyBsZXR0ZXItc3BhY2luZyBsaWdodGluZy1jb2xvciBtYXJrZXItZW5kIG1hcmtlci1taWQgbWFya2VyLXN0YXJ0IG92ZXJsaW5lLXBvc2l0aW9uIG92ZXJsaW5lLXRoaWNrbmVzcyBwYWludC1vcmRlciBwYW5vc2UtMSBwb2ludGVyLWV2ZW50cyByZW5kZXJpbmctaW50ZW50IHNoYXBlLXJlbmRlcmluZyBzdG9wLWNvbG9yIHN0b3Atb3BhY2l0eSBzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIHN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIHN0cm9rZS1kYXNoYXJyYXkgc3Ryb2tlLWRhc2hvZmZzZXQgc3Ryb2tlLWxpbmVjYXAgc3Ryb2tlLWxpbmVqb2luIHN0cm9rZS1taXRlcmxpbWl0IHN0cm9rZS1vcGFjaXR5IHN0cm9rZS13aWR0aCB0ZXh0LWFuY2hvciB0ZXh0LWRlY29yYXRpb24gdGV4dC1yZW5kZXJpbmcgdW5kZXJsaW5lLXBvc2l0aW9uIHVuZGVybGluZS10aGlja25lc3MgdW5pY29kZS1iaWRpIHVuaWNvZGUtcmFuZ2UgdW5pdHMtcGVyLWVtIHYtYWxwaGFiZXRpYyB2LWhhbmdpbmcgdi1pZGVvZ3JhcGhpYyB2LW1hdGhlbWF0aWNhbCB2ZWN0b3ItZWZmZWN0IHZlcnQtYWR2LXkgdmVydC1vcmlnaW4teCB2ZXJ0LW9yaWdpbi15IHdvcmQtc3BhY2luZyB3cml0aW5nLW1vZGUgeG1sbnM6eGxpbmsgeC1oZWlnaHRcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UocmEsXG5zYSk7eltiXT1uZXcgdihiLDEsITEsYSxudWxsLCExLCExKX0pO1wieGxpbms6YWN0dWF0ZSB4bGluazphcmNyb2xlIHhsaW5rOnJvbGUgeGxpbms6c2hvdyB4bGluazp0aXRsZSB4bGluazp0eXBlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKHJhLHNhKTt6W2JdPW5ldyB2KGIsMSwhMSxhLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLCExLCExKX0pO1tcInhtbDpiYXNlXCIsXCJ4bWw6bGFuZ1wiLFwieG1sOnNwYWNlXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKHJhLHNhKTt6W2JdPW5ldyB2KGIsMSwhMSxhLFwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlXCIsITEsITEpfSk7W1widGFiSW5kZXhcIixcImNyb3NzT3JpZ2luXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDEsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7XG56LnhsaW5rSHJlZj1uZXcgdihcInhsaW5rSHJlZlwiLDEsITEsXCJ4bGluazpocmVmXCIsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsITAsITEpO1tcInNyY1wiLFwiaHJlZlwiLFwiYWN0aW9uXCIsXCJmb3JtQWN0aW9uXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDEsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITAsITApfSk7XG5mdW5jdGlvbiB0YShhLGIsYyxkKXt2YXIgZT16Lmhhc093blByb3BlcnR5KGIpP3pbYl06bnVsbDtpZihudWxsIT09ZT8wIT09ZS50eXBlOmR8fCEoMjxiLmxlbmd0aCl8fFwib1wiIT09YlswXSYmXCJPXCIhPT1iWzBdfHxcIm5cIiE9PWJbMV0mJlwiTlwiIT09YlsxXSlxYShiLGMsZSxkKSYmKGM9bnVsbCksZHx8bnVsbD09PWU/b2EoYikmJihudWxsPT09Yz9hLnJlbW92ZUF0dHJpYnV0ZShiKTphLnNldEF0dHJpYnV0ZShiLFwiXCIrYykpOmUubXVzdFVzZVByb3BlcnR5P2FbZS5wcm9wZXJ0eU5hbWVdPW51bGw9PT1jPzM9PT1lLnR5cGU/ITE6XCJcIjpjOihiPWUuYXR0cmlidXRlTmFtZSxkPWUuYXR0cmlidXRlTmFtZXNwYWNlLG51bGw9PT1jP2EucmVtb3ZlQXR0cmlidXRlKGIpOihlPWUudHlwZSxjPTM9PT1lfHw0PT09ZSYmITA9PT1jP1wiXCI6XCJcIitjLGQ/YS5zZXRBdHRyaWJ1dGVOUyhkLGIsYyk6YS5zZXRBdHRyaWJ1dGUoYixjKSkpfVxudmFyIHVhPWFhLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELHZhPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLHdhPVN5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIikseWE9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLHphPVN5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKSxBYT1TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIiksQmE9U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpLENhPVN5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpLERhPVN5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSxFYT1TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIiksRmE9U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIiksR2E9U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIiksSGE9U3ltYm9sLmZvcihcInJlYWN0LmxhenlcIik7U3ltYm9sLmZvcihcInJlYWN0LnNjb3BlXCIpO1N5bWJvbC5mb3IoXCJyZWFjdC5kZWJ1Z190cmFjZV9tb2RlXCIpO1xudmFyIElhPVN5bWJvbC5mb3IoXCJyZWFjdC5vZmZzY3JlZW5cIik7U3ltYm9sLmZvcihcInJlYWN0LmxlZ2FjeV9oaWRkZW5cIik7U3ltYm9sLmZvcihcInJlYWN0LmNhY2hlXCIpO1N5bWJvbC5mb3IoXCJyZWFjdC50cmFjaW5nX21hcmtlclwiKTt2YXIgSmE9U3ltYm9sLml0ZXJhdG9yO2Z1bmN0aW9uIEthKGEpe2lmKG51bGw9PT1hfHxcIm9iamVjdFwiIT09dHlwZW9mIGEpcmV0dXJuIG51bGw7YT1KYSYmYVtKYV18fGFbXCJAQGl0ZXJhdG9yXCJdO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhP2E6bnVsbH12YXIgQT1PYmplY3QuYXNzaWduLExhO2Z1bmN0aW9uIE1hKGEpe2lmKHZvaWQgMD09PUxhKXRyeXt0aHJvdyBFcnJvcigpO31jYXRjaChjKXt2YXIgYj1jLnN0YWNrLnRyaW0oKS5tYXRjaCgvXFxuKCAqKGF0ICk/KS8pO0xhPWImJmJbMV18fFwiXCJ9cmV0dXJuXCJcXG5cIitMYSthfXZhciBOYT0hMTtcbmZ1bmN0aW9uIE9hKGEsYil7aWYoIWF8fE5hKXJldHVyblwiXCI7TmE9ITA7dmFyIGM9RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U9dm9pZCAwO3RyeXtpZihiKWlmKGI9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigpO30sT2JqZWN0LmRlZmluZVByb3BlcnR5KGIucHJvdG90eXBlLFwicHJvcHNcIix7c2V0OmZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoKTt9fSksXCJvYmplY3RcIj09PXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmNvbnN0cnVjdCl7dHJ5e1JlZmxlY3QuY29uc3RydWN0KGIsW10pfWNhdGNoKGwpe3ZhciBkPWx9UmVmbGVjdC5jb25zdHJ1Y3QoYSxbXSxiKX1lbHNle3RyeXtiLmNhbGwoKX1jYXRjaChsKXtkPWx9YS5jYWxsKGIucHJvdG90eXBlKX1lbHNle3RyeXt0aHJvdyBFcnJvcigpO31jYXRjaChsKXtkPWx9YSgpfX1jYXRjaChsKXtpZihsJiZkJiZcInN0cmluZ1wiPT09dHlwZW9mIGwuc3RhY2spe2Zvcih2YXIgZT1sLnN0YWNrLnNwbGl0KFwiXFxuXCIpLFxuZj1kLnN0YWNrLnNwbGl0KFwiXFxuXCIpLGc9ZS5sZW5ndGgtMSxoPWYubGVuZ3RoLTE7MTw9ZyYmMDw9aCYmZVtnXSE9PWZbaF07KWgtLTtmb3IoOzE8PWcmJjA8PWg7Zy0tLGgtLSlpZihlW2ddIT09ZltoXSl7aWYoMSE9PWd8fDEhPT1oKXtkbyBpZihnLS0saC0tLDA+aHx8ZVtnXSE9PWZbaF0pe3ZhciBrPVwiXFxuXCIrZVtnXS5yZXBsYWNlKFwiIGF0IG5ldyBcIixcIiBhdCBcIik7YS5kaXNwbGF5TmFtZSYmay5pbmNsdWRlcyhcIjxhbm9ueW1vdXM+XCIpJiYoaz1rLnJlcGxhY2UoXCI8YW5vbnltb3VzPlwiLGEuZGlzcGxheU5hbWUpKTtyZXR1cm4ga313aGlsZSgxPD1nJiYwPD1oKX1icmVha319fWZpbmFsbHl7TmE9ITEsRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U9Y31yZXR1cm4oYT1hP2EuZGlzcGxheU5hbWV8fGEubmFtZTpcIlwiKT9NYShhKTpcIlwifVxuZnVuY3Rpb24gUGEoYSl7c3dpdGNoKGEudGFnKXtjYXNlIDU6cmV0dXJuIE1hKGEudHlwZSk7Y2FzZSAxNjpyZXR1cm4gTWEoXCJMYXp5XCIpO2Nhc2UgMTM6cmV0dXJuIE1hKFwiU3VzcGVuc2VcIik7Y2FzZSAxOTpyZXR1cm4gTWEoXCJTdXNwZW5zZUxpc3RcIik7Y2FzZSAwOmNhc2UgMjpjYXNlIDE1OnJldHVybiBhPU9hKGEudHlwZSwhMSksYTtjYXNlIDExOnJldHVybiBhPU9hKGEudHlwZS5yZW5kZXIsITEpLGE7Y2FzZSAxOnJldHVybiBhPU9hKGEudHlwZSwhMCksYTtkZWZhdWx0OnJldHVyblwiXCJ9fVxuZnVuY3Rpb24gUWEoYSl7aWYobnVsbD09YSlyZXR1cm4gbnVsbDtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSlyZXR1cm4gYS5kaXNwbGF5TmFtZXx8YS5uYW1lfHxudWxsO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYSlyZXR1cm4gYTtzd2l0Y2goYSl7Y2FzZSB5YTpyZXR1cm5cIkZyYWdtZW50XCI7Y2FzZSB3YTpyZXR1cm5cIlBvcnRhbFwiO2Nhc2UgQWE6cmV0dXJuXCJQcm9maWxlclwiO2Nhc2UgemE6cmV0dXJuXCJTdHJpY3RNb2RlXCI7Y2FzZSBFYTpyZXR1cm5cIlN1c3BlbnNlXCI7Y2FzZSBGYTpyZXR1cm5cIlN1c3BlbnNlTGlzdFwifWlmKFwib2JqZWN0XCI9PT10eXBlb2YgYSlzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBDYTpyZXR1cm4oYS5kaXNwbGF5TmFtZXx8XCJDb250ZXh0XCIpK1wiLkNvbnN1bWVyXCI7Y2FzZSBCYTpyZXR1cm4oYS5fY29udGV4dC5kaXNwbGF5TmFtZXx8XCJDb250ZXh0XCIpK1wiLlByb3ZpZGVyXCI7Y2FzZSBEYTp2YXIgYj1hLnJlbmRlcjthPWEuZGlzcGxheU5hbWU7YXx8KGE9Yi5kaXNwbGF5TmFtZXx8XG5iLm5hbWV8fFwiXCIsYT1cIlwiIT09YT9cIkZvcndhcmRSZWYoXCIrYStcIilcIjpcIkZvcndhcmRSZWZcIik7cmV0dXJuIGE7Y2FzZSBHYTpyZXR1cm4gYj1hLmRpc3BsYXlOYW1lfHxudWxsLG51bGwhPT1iP2I6UWEoYS50eXBlKXx8XCJNZW1vXCI7Y2FzZSBIYTpiPWEuX3BheWxvYWQ7YT1hLl9pbml0O3RyeXtyZXR1cm4gUWEoYShiKSl9Y2F0Y2goYyl7fX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFJhKGEpe3ZhciBiPWEudHlwZTtzd2l0Y2goYS50YWcpe2Nhc2UgMjQ6cmV0dXJuXCJDYWNoZVwiO2Nhc2UgOTpyZXR1cm4oYi5kaXNwbGF5TmFtZXx8XCJDb250ZXh0XCIpK1wiLkNvbnN1bWVyXCI7Y2FzZSAxMDpyZXR1cm4oYi5fY29udGV4dC5kaXNwbGF5TmFtZXx8XCJDb250ZXh0XCIpK1wiLlByb3ZpZGVyXCI7Y2FzZSAxODpyZXR1cm5cIkRlaHlkcmF0ZWRGcmFnbWVudFwiO2Nhc2UgMTE6cmV0dXJuIGE9Yi5yZW5kZXIsYT1hLmRpc3BsYXlOYW1lfHxhLm5hbWV8fFwiXCIsYi5kaXNwbGF5TmFtZXx8KFwiXCIhPT1hP1wiRm9yd2FyZFJlZihcIithK1wiKVwiOlwiRm9yd2FyZFJlZlwiKTtjYXNlIDc6cmV0dXJuXCJGcmFnbWVudFwiO2Nhc2UgNTpyZXR1cm4gYjtjYXNlIDQ6cmV0dXJuXCJQb3J0YWxcIjtjYXNlIDM6cmV0dXJuXCJSb290XCI7Y2FzZSA2OnJldHVyblwiVGV4dFwiO2Nhc2UgMTY6cmV0dXJuIFFhKGIpO2Nhc2UgODpyZXR1cm4gYj09PXphP1wiU3RyaWN0TW9kZVwiOlwiTW9kZVwiO2Nhc2UgMjI6cmV0dXJuXCJPZmZzY3JlZW5cIjtcbmNhc2UgMTI6cmV0dXJuXCJQcm9maWxlclwiO2Nhc2UgMjE6cmV0dXJuXCJTY29wZVwiO2Nhc2UgMTM6cmV0dXJuXCJTdXNwZW5zZVwiO2Nhc2UgMTk6cmV0dXJuXCJTdXNwZW5zZUxpc3RcIjtjYXNlIDI1OnJldHVyblwiVHJhY2luZ01hcmtlclwiO2Nhc2UgMTpjYXNlIDA6Y2FzZSAxNzpjYXNlIDI6Y2FzZSAxNDpjYXNlIDE1OmlmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBiKXJldHVybiBiLmRpc3BsYXlOYW1lfHxiLm5hbWV8fG51bGw7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBiKXJldHVybiBifXJldHVybiBudWxsfWZ1bmN0aW9uIFNhKGEpe3N3aXRjaCh0eXBlb2YgYSl7Y2FzZSBcImJvb2xlYW5cIjpjYXNlIFwibnVtYmVyXCI6Y2FzZSBcInN0cmluZ1wiOmNhc2UgXCJ1bmRlZmluZWRcIjpyZXR1cm4gYTtjYXNlIFwib2JqZWN0XCI6cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm5cIlwifX1cbmZ1bmN0aW9uIFRhKGEpe3ZhciBiPWEudHlwZTtyZXR1cm4oYT1hLm5vZGVOYW1lKSYmXCJpbnB1dFwiPT09YS50b0xvd2VyQ2FzZSgpJiYoXCJjaGVja2JveFwiPT09Ynx8XCJyYWRpb1wiPT09Yil9XG5mdW5jdGlvbiBVYShhKXt2YXIgYj1UYShhKT9cImNoZWNrZWRcIjpcInZhbHVlXCIsYz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEuY29uc3RydWN0b3IucHJvdG90eXBlLGIpLGQ9XCJcIithW2JdO2lmKCFhLmhhc093blByb3BlcnR5KGIpJiZcInVuZGVmaW5lZFwiIT09dHlwZW9mIGMmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBjLmdldCYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGMuc2V0KXt2YXIgZT1jLmdldCxmPWMuc2V0O09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5jYWxsKHRoaXMpfSxzZXQ6ZnVuY3Rpb24oYSl7ZD1cIlwiK2E7Zi5jYWxsKHRoaXMsYSl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYix7ZW51bWVyYWJsZTpjLmVudW1lcmFibGV9KTtyZXR1cm57Z2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZH0sc2V0VmFsdWU6ZnVuY3Rpb24oYSl7ZD1cIlwiK2F9LHN0b3BUcmFja2luZzpmdW5jdGlvbigpe2EuX3ZhbHVlVHJhY2tlcj1cbm51bGw7ZGVsZXRlIGFbYl19fX19ZnVuY3Rpb24gVmEoYSl7YS5fdmFsdWVUcmFja2VyfHwoYS5fdmFsdWVUcmFja2VyPVVhKGEpKX1mdW5jdGlvbiBXYShhKXtpZighYSlyZXR1cm4hMTt2YXIgYj1hLl92YWx1ZVRyYWNrZXI7aWYoIWIpcmV0dXJuITA7dmFyIGM9Yi5nZXRWYWx1ZSgpO3ZhciBkPVwiXCI7YSYmKGQ9VGEoYSk/YS5jaGVja2VkP1widHJ1ZVwiOlwiZmFsc2VcIjphLnZhbHVlKTthPWQ7cmV0dXJuIGEhPT1jPyhiLnNldFZhbHVlKGEpLCEwKTohMX1mdW5jdGlvbiBYYShhKXthPWF8fChcInVuZGVmaW5lZFwiIT09dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50OnZvaWQgMCk7aWYoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBhKXJldHVybiBudWxsO3RyeXtyZXR1cm4gYS5hY3RpdmVFbGVtZW50fHxhLmJvZHl9Y2F0Y2goYil7cmV0dXJuIGEuYm9keX19XG5mdW5jdGlvbiBZYShhLGIpe3ZhciBjPWIuY2hlY2tlZDtyZXR1cm4gQSh7fSxiLHtkZWZhdWx0Q2hlY2tlZDp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCx2YWx1ZTp2b2lkIDAsY2hlY2tlZDpudWxsIT1jP2M6YS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkfSl9ZnVuY3Rpb24gWmEoYSxiKXt2YXIgYz1udWxsPT1iLmRlZmF1bHRWYWx1ZT9cIlwiOmIuZGVmYXVsdFZhbHVlLGQ9bnVsbCE9Yi5jaGVja2VkP2IuY2hlY2tlZDpiLmRlZmF1bHRDaGVja2VkO2M9U2EobnVsbCE9Yi52YWx1ZT9iLnZhbHVlOmMpO2EuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbENoZWNrZWQ6ZCxpbml0aWFsVmFsdWU6Yyxjb250cm9sbGVkOlwiY2hlY2tib3hcIj09PWIudHlwZXx8XCJyYWRpb1wiPT09Yi50eXBlP251bGwhPWIuY2hlY2tlZDpudWxsIT1iLnZhbHVlfX1mdW5jdGlvbiBhYihhLGIpe2I9Yi5jaGVja2VkO251bGwhPWImJnRhKGEsXCJjaGVja2VkXCIsYiwhMSl9XG5mdW5jdGlvbiBiYihhLGIpe2FiKGEsYik7dmFyIGM9U2EoYi52YWx1ZSksZD1iLnR5cGU7aWYobnVsbCE9YylpZihcIm51bWJlclwiPT09ZCl7aWYoMD09PWMmJlwiXCI9PT1hLnZhbHVlfHxhLnZhbHVlIT1jKWEudmFsdWU9XCJcIitjfWVsc2UgYS52YWx1ZSE9PVwiXCIrYyYmKGEudmFsdWU9XCJcIitjKTtlbHNlIGlmKFwic3VibWl0XCI9PT1kfHxcInJlc2V0XCI9PT1kKXthLnJlbW92ZUF0dHJpYnV0ZShcInZhbHVlXCIpO3JldHVybn1iLmhhc093blByb3BlcnR5KFwidmFsdWVcIik/Y2IoYSxiLnR5cGUsYyk6Yi5oYXNPd25Qcm9wZXJ0eShcImRlZmF1bHRWYWx1ZVwiKSYmY2IoYSxiLnR5cGUsU2EoYi5kZWZhdWx0VmFsdWUpKTtudWxsPT1iLmNoZWNrZWQmJm51bGwhPWIuZGVmYXVsdENoZWNrZWQmJihhLmRlZmF1bHRDaGVja2VkPSEhYi5kZWZhdWx0Q2hlY2tlZCl9XG5mdW5jdGlvbiBkYihhLGIsYyl7aWYoYi5oYXNPd25Qcm9wZXJ0eShcInZhbHVlXCIpfHxiLmhhc093blByb3BlcnR5KFwiZGVmYXVsdFZhbHVlXCIpKXt2YXIgZD1iLnR5cGU7aWYoIShcInN1Ym1pdFwiIT09ZCYmXCJyZXNldFwiIT09ZHx8dm9pZCAwIT09Yi52YWx1ZSYmbnVsbCE9PWIudmFsdWUpKXJldHVybjtiPVwiXCIrYS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZTtjfHxiPT09YS52YWx1ZXx8KGEudmFsdWU9Yik7YS5kZWZhdWx0VmFsdWU9Yn1jPWEubmFtZTtcIlwiIT09YyYmKGEubmFtZT1cIlwiKTthLmRlZmF1bHRDaGVja2VkPSEhYS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkO1wiXCIhPT1jJiYoYS5uYW1lPWMpfVxuZnVuY3Rpb24gY2IoYSxiLGMpe2lmKFwibnVtYmVyXCIhPT1ifHxYYShhLm93bmVyRG9jdW1lbnQpIT09YSludWxsPT1jP2EuZGVmYXVsdFZhbHVlPVwiXCIrYS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZTphLmRlZmF1bHRWYWx1ZSE9PVwiXCIrYyYmKGEuZGVmYXVsdFZhbHVlPVwiXCIrYyl9dmFyIGViPUFycmF5LmlzQXJyYXk7XG5mdW5jdGlvbiBmYihhLGIsYyxkKXthPWEub3B0aW9ucztpZihiKXtiPXt9O2Zvcih2YXIgZT0wO2U8Yy5sZW5ndGg7ZSsrKWJbXCIkXCIrY1tlXV09ITA7Zm9yKGM9MDtjPGEubGVuZ3RoO2MrKyllPWIuaGFzT3duUHJvcGVydHkoXCIkXCIrYVtjXS52YWx1ZSksYVtjXS5zZWxlY3RlZCE9PWUmJihhW2NdLnNlbGVjdGVkPWUpLGUmJmQmJihhW2NdLmRlZmF1bHRTZWxlY3RlZD0hMCl9ZWxzZXtjPVwiXCIrU2EoYyk7Yj1udWxsO2ZvcihlPTA7ZTxhLmxlbmd0aDtlKyspe2lmKGFbZV0udmFsdWU9PT1jKXthW2VdLnNlbGVjdGVkPSEwO2QmJihhW2VdLmRlZmF1bHRTZWxlY3RlZD0hMCk7cmV0dXJufW51bGwhPT1ifHxhW2VdLmRpc2FibGVkfHwoYj1hW2VdKX1udWxsIT09YiYmKGIuc2VsZWN0ZWQ9ITApfX1cbmZ1bmN0aW9uIGdiKGEsYil7aWYobnVsbCE9Yi5kYW5nZXJvdXNseVNldElubmVySFRNTCl0aHJvdyBFcnJvcihwKDkxKSk7cmV0dXJuIEEoe30sYix7dmFsdWU6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsY2hpbGRyZW46XCJcIithLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlfSl9ZnVuY3Rpb24gaGIoYSxiKXt2YXIgYz1iLnZhbHVlO2lmKG51bGw9PWMpe2M9Yi5jaGlsZHJlbjtiPWIuZGVmYXVsdFZhbHVlO2lmKG51bGwhPWMpe2lmKG51bGwhPWIpdGhyb3cgRXJyb3IocCg5MikpO2lmKGViKGMpKXtpZigxPGMubGVuZ3RoKXRocm93IEVycm9yKHAoOTMpKTtjPWNbMF19Yj1jfW51bGw9PWImJihiPVwiXCIpO2M9Yn1hLl93cmFwcGVyU3RhdGU9e2luaXRpYWxWYWx1ZTpTYShjKX19XG5mdW5jdGlvbiBpYihhLGIpe3ZhciBjPVNhKGIudmFsdWUpLGQ9U2EoYi5kZWZhdWx0VmFsdWUpO251bGwhPWMmJihjPVwiXCIrYyxjIT09YS52YWx1ZSYmKGEudmFsdWU9YyksbnVsbD09Yi5kZWZhdWx0VmFsdWUmJmEuZGVmYXVsdFZhbHVlIT09YyYmKGEuZGVmYXVsdFZhbHVlPWMpKTtudWxsIT1kJiYoYS5kZWZhdWx0VmFsdWU9XCJcIitkKX1mdW5jdGlvbiBqYihhKXt2YXIgYj1hLnRleHRDb250ZW50O2I9PT1hLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlJiZcIlwiIT09YiYmbnVsbCE9PWImJihhLnZhbHVlPWIpfWZ1bmN0aW9uIGtiKGEpe3N3aXRjaChhKXtjYXNlIFwic3ZnXCI6cmV0dXJuXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO2Nhc2UgXCJtYXRoXCI6cmV0dXJuXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCI7ZGVmYXVsdDpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIn19XG5mdW5jdGlvbiBsYihhLGIpe3JldHVybiBudWxsPT1hfHxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIj09PWE/a2IoYik6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPT09YSYmXCJmb3JlaWduT2JqZWN0XCI9PT1iP1wiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiOmF9XG52YXIgbWIsbmI9ZnVuY3Rpb24oYSl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBNU0FwcCYmTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24/ZnVuY3Rpb24oYixjLGQsZSl7TVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24oKXtyZXR1cm4gYShiLGMsZCxlKX0pfTphfShmdW5jdGlvbihhLGIpe2lmKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiE9PWEubmFtZXNwYWNlVVJJfHxcImlubmVySFRNTFwiaW4gYSlhLmlubmVySFRNTD1iO2Vsc2V7bWI9bWJ8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7bWIuaW5uZXJIVE1MPVwiPHN2Zz5cIitiLnZhbHVlT2YoKS50b1N0cmluZygpK1wiPC9zdmc+XCI7Zm9yKGI9bWIuZmlyc3RDaGlsZDthLmZpcnN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKTtmb3IoO2IuZmlyc3RDaGlsZDspYS5hcHBlbmRDaGlsZChiLmZpcnN0Q2hpbGQpfX0pO1xuZnVuY3Rpb24gb2IoYSxiKXtpZihiKXt2YXIgYz1hLmZpcnN0Q2hpbGQ7aWYoYyYmYz09PWEubGFzdENoaWxkJiYzPT09Yy5ub2RlVHlwZSl7Yy5ub2RlVmFsdWU9YjtyZXR1cm59fWEudGV4dENvbnRlbnQ9Yn1cbnZhciBwYj17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYXNwZWN0UmF0aW86ITAsYm9yZGVySW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDohMCxjb2x1bW5zOiEwLGZsZXg6ITAsZmxleEdyb3c6ITAsZmxleFBvc2l0aXZlOiEwLGZsZXhTaHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhPcmRlcjohMCxncmlkQXJlYTohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1NwYW46ITAsZ3JpZFJvd1N0YXJ0OiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3BhbjohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAsekluZGV4OiEwLFxuem9vbTohMCxmaWxsT3BhY2l0eTohMCxmbG9vZE9wYWNpdHk6ITAsc3RvcE9wYWNpdHk6ITAsc3Ryb2tlRGFzaGFycmF5OiEwLHN0cm9rZURhc2hvZmZzZXQ6ITAsc3Ryb2tlTWl0ZXJsaW1pdDohMCxzdHJva2VPcGFjaXR5OiEwLHN0cm9rZVdpZHRoOiEwfSxxYj1bXCJXZWJraXRcIixcIm1zXCIsXCJNb3pcIixcIk9cIl07T2JqZWN0LmtleXMocGIpLmZvckVhY2goZnVuY3Rpb24oYSl7cWIuZm9yRWFjaChmdW5jdGlvbihiKXtiPWIrYS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSthLnN1YnN0cmluZygxKTtwYltiXT1wYlthXX0pfSk7ZnVuY3Rpb24gcmIoYSxiLGMpe3JldHVybiBudWxsPT1ifHxcImJvb2xlYW5cIj09PXR5cGVvZiBifHxcIlwiPT09Yj9cIlwiOmN8fFwibnVtYmVyXCIhPT10eXBlb2YgYnx8MD09PWJ8fHBiLmhhc093blByb3BlcnR5KGEpJiZwYlthXT8oXCJcIitiKS50cmltKCk6YitcInB4XCJ9XG5mdW5jdGlvbiBzYihhLGIpe2E9YS5zdHlsZTtmb3IodmFyIGMgaW4gYilpZihiLmhhc093blByb3BlcnR5KGMpKXt2YXIgZD0wPT09Yy5pbmRleE9mKFwiLS1cIiksZT1yYihjLGJbY10sZCk7XCJmbG9hdFwiPT09YyYmKGM9XCJjc3NGbG9hdFwiKTtkP2Euc2V0UHJvcGVydHkoYyxlKTphW2NdPWV9fXZhciB0Yj1BKHttZW51aXRlbTohMH0se2FyZWE6ITAsYmFzZTohMCxicjohMCxjb2w6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH0pO1xuZnVuY3Rpb24gdWIoYSxiKXtpZihiKXtpZih0YlthXSYmKG51bGwhPWIuY2hpbGRyZW58fG51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpKXRocm93IEVycm9yKHAoMTM3LGEpKTtpZihudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKXtpZihudWxsIT1iLmNoaWxkcmVuKXRocm93IEVycm9yKHAoNjApKTtpZihcIm9iamVjdFwiIT09dHlwZW9mIGIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUx8fCEoXCJfX2h0bWxcImluIGIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpKXRocm93IEVycm9yKHAoNjEpKTt9aWYobnVsbCE9Yi5zdHlsZSYmXCJvYmplY3RcIiE9PXR5cGVvZiBiLnN0eWxlKXRocm93IEVycm9yKHAoNjIpKTt9fVxuZnVuY3Rpb24gdmIoYSxiKXtpZigtMT09PWEuaW5kZXhPZihcIi1cIikpcmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBiLmlzO3N3aXRjaChhKXtjYXNlIFwiYW5ub3RhdGlvbi14bWxcIjpjYXNlIFwiY29sb3ItcHJvZmlsZVwiOmNhc2UgXCJmb250LWZhY2VcIjpjYXNlIFwiZm9udC1mYWNlLXNyY1wiOmNhc2UgXCJmb250LWZhY2UtdXJpXCI6Y2FzZSBcImZvbnQtZmFjZS1mb3JtYXRcIjpjYXNlIFwiZm9udC1mYWNlLW5hbWVcIjpjYXNlIFwibWlzc2luZy1nbHlwaFwiOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fXZhciB3Yj1udWxsO2Z1bmN0aW9uIHhiKGEpe2E9YS50YXJnZXR8fGEuc3JjRWxlbWVudHx8d2luZG93O2EuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQmJihhPWEuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpO3JldHVybiAzPT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGU6YX12YXIgeWI9bnVsbCx6Yj1udWxsLEFiPW51bGw7XG5mdW5jdGlvbiBCYihhKXtpZihhPUNiKGEpKXtpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgeWIpdGhyb3cgRXJyb3IocCgyODApKTt2YXIgYj1hLnN0YXRlTm9kZTtiJiYoYj1EYihiKSx5YihhLnN0YXRlTm9kZSxhLnR5cGUsYikpfX1mdW5jdGlvbiBFYihhKXt6Yj9BYj9BYi5wdXNoKGEpOkFiPVthXTp6Yj1hfWZ1bmN0aW9uIEZiKCl7aWYoemIpe3ZhciBhPXpiLGI9QWI7QWI9emI9bnVsbDtCYihhKTtpZihiKWZvcihhPTA7YTxiLmxlbmd0aDthKyspQmIoYlthXSl9fWZ1bmN0aW9uIEdiKGEsYil7cmV0dXJuIGEoYil9ZnVuY3Rpb24gSGIoKXt9dmFyIEliPSExO2Z1bmN0aW9uIEpiKGEsYixjKXtpZihJYilyZXR1cm4gYShiLGMpO0liPSEwO3RyeXtyZXR1cm4gR2IoYSxiLGMpfWZpbmFsbHl7aWYoSWI9ITEsbnVsbCE9PXpifHxudWxsIT09QWIpSGIoKSxGYigpfX1cbmZ1bmN0aW9uIEtiKGEsYil7dmFyIGM9YS5zdGF0ZU5vZGU7aWYobnVsbD09PWMpcmV0dXJuIG51bGw7dmFyIGQ9RGIoYyk7aWYobnVsbD09PWQpcmV0dXJuIG51bGw7Yz1kW2JdO2E6c3dpdGNoKGIpe2Nhc2UgXCJvbkNsaWNrXCI6Y2FzZSBcIm9uQ2xpY2tDYXB0dXJlXCI6Y2FzZSBcIm9uRG91YmxlQ2xpY2tcIjpjYXNlIFwib25Eb3VibGVDbGlja0NhcHR1cmVcIjpjYXNlIFwib25Nb3VzZURvd25cIjpjYXNlIFwib25Nb3VzZURvd25DYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VNb3ZlXCI6Y2FzZSBcIm9uTW91c2VNb3ZlQ2FwdHVyZVwiOmNhc2UgXCJvbk1vdXNlVXBcIjpjYXNlIFwib25Nb3VzZVVwQ2FwdHVyZVwiOmNhc2UgXCJvbk1vdXNlRW50ZXJcIjooZD0hZC5kaXNhYmxlZCl8fChhPWEudHlwZSxkPSEoXCJidXR0b25cIj09PWF8fFwiaW5wdXRcIj09PWF8fFwic2VsZWN0XCI9PT1hfHxcInRleHRhcmVhXCI9PT1hKSk7YT0hZDticmVhayBhO2RlZmF1bHQ6YT0hMX1pZihhKXJldHVybiBudWxsO2lmKGMmJlwiZnVuY3Rpb25cIiE9PVxudHlwZW9mIGMpdGhyb3cgRXJyb3IocCgyMzEsYix0eXBlb2YgYykpO3JldHVybiBjfXZhciBMYj0hMTtpZihpYSl0cnl7dmFyIE1iPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShNYixcInBhc3NpdmVcIix7Z2V0OmZ1bmN0aW9uKCl7TGI9ITB9fSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0ZXN0XCIsTWIsTWIpO3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwidGVzdFwiLE1iLE1iKX1jYXRjaChhKXtMYj0hMX1mdW5jdGlvbiBOYihhLGIsYyxkLGUsZixnLGgsayl7dmFyIGw9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDMpO3RyeXtiLmFwcGx5KGMsbCl9Y2F0Y2gobSl7dGhpcy5vbkVycm9yKG0pfX12YXIgT2I9ITEsUGI9bnVsbCxRYj0hMSxSYj1udWxsLFNiPXtvbkVycm9yOmZ1bmN0aW9uKGEpe09iPSEwO1BiPWF9fTtmdW5jdGlvbiBUYihhLGIsYyxkLGUsZixnLGgsayl7T2I9ITE7UGI9bnVsbDtOYi5hcHBseShTYixhcmd1bWVudHMpfVxuZnVuY3Rpb24gVWIoYSxiLGMsZCxlLGYsZyxoLGspe1RiLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihPYil7aWYoT2Ipe3ZhciBsPVBiO09iPSExO1BiPW51bGx9ZWxzZSB0aHJvdyBFcnJvcihwKDE5OCkpO1FifHwoUWI9ITAsUmI9bCl9fWZ1bmN0aW9uIFZiKGEpe3ZhciBiPWEsYz1hO2lmKGEuYWx0ZXJuYXRlKWZvcig7Yi5yZXR1cm47KWI9Yi5yZXR1cm47ZWxzZXthPWI7ZG8gYj1hLDAhPT0oYi5mbGFncyY0MDk4KSYmKGM9Yi5yZXR1cm4pLGE9Yi5yZXR1cm47d2hpbGUoYSl9cmV0dXJuIDM9PT1iLnRhZz9jOm51bGx9ZnVuY3Rpb24gV2IoYSl7aWYoMTM9PT1hLnRhZyl7dmFyIGI9YS5tZW1vaXplZFN0YXRlO251bGw9PT1iJiYoYT1hLmFsdGVybmF0ZSxudWxsIT09YSYmKGI9YS5tZW1vaXplZFN0YXRlKSk7aWYobnVsbCE9PWIpcmV0dXJuIGIuZGVoeWRyYXRlZH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBYYihhKXtpZihWYihhKSE9PWEpdGhyb3cgRXJyb3IocCgxODgpKTt9XG5mdW5jdGlvbiBZYihhKXt2YXIgYj1hLmFsdGVybmF0ZTtpZighYil7Yj1WYihhKTtpZihudWxsPT09Yil0aHJvdyBFcnJvcihwKDE4OCkpO3JldHVybiBiIT09YT9udWxsOmF9Zm9yKHZhciBjPWEsZD1iOzspe3ZhciBlPWMucmV0dXJuO2lmKG51bGw9PT1lKWJyZWFrO3ZhciBmPWUuYWx0ZXJuYXRlO2lmKG51bGw9PT1mKXtkPWUucmV0dXJuO2lmKG51bGwhPT1kKXtjPWQ7Y29udGludWV9YnJlYWt9aWYoZS5jaGlsZD09PWYuY2hpbGQpe2ZvcihmPWUuY2hpbGQ7Zjspe2lmKGY9PT1jKXJldHVybiBYYihlKSxhO2lmKGY9PT1kKXJldHVybiBYYihlKSxiO2Y9Zi5zaWJsaW5nfXRocm93IEVycm9yKHAoMTg4KSk7fWlmKGMucmV0dXJuIT09ZC5yZXR1cm4pYz1lLGQ9ZjtlbHNle2Zvcih2YXIgZz0hMSxoPWUuY2hpbGQ7aDspe2lmKGg9PT1jKXtnPSEwO2M9ZTtkPWY7YnJlYWt9aWYoaD09PWQpe2c9ITA7ZD1lO2M9ZjticmVha31oPWguc2libGluZ31pZighZyl7Zm9yKGg9Zi5jaGlsZDtoOyl7aWYoaD09PVxuYyl7Zz0hMDtjPWY7ZD1lO2JyZWFrfWlmKGg9PT1kKXtnPSEwO2Q9ZjtjPWU7YnJlYWt9aD1oLnNpYmxpbmd9aWYoIWcpdGhyb3cgRXJyb3IocCgxODkpKTt9fWlmKGMuYWx0ZXJuYXRlIT09ZCl0aHJvdyBFcnJvcihwKDE5MCkpO31pZigzIT09Yy50YWcpdGhyb3cgRXJyb3IocCgxODgpKTtyZXR1cm4gYy5zdGF0ZU5vZGUuY3VycmVudD09PWM/YTpifWZ1bmN0aW9uIFpiKGEpe2E9WWIoYSk7cmV0dXJuIG51bGwhPT1hPyRiKGEpOm51bGx9ZnVuY3Rpb24gJGIoYSl7aWYoNT09PWEudGFnfHw2PT09YS50YWcpcmV0dXJuIGE7Zm9yKGE9YS5jaGlsZDtudWxsIT09YTspe3ZhciBiPSRiKGEpO2lmKG51bGwhPT1iKXJldHVybiBiO2E9YS5zaWJsaW5nfXJldHVybiBudWxsfVxudmFyIGFjPWNhLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2ssYmM9Y2EudW5zdGFibGVfY2FuY2VsQ2FsbGJhY2ssY2M9Y2EudW5zdGFibGVfc2hvdWxkWWllbGQsZGM9Y2EudW5zdGFibGVfcmVxdWVzdFBhaW50LEI9Y2EudW5zdGFibGVfbm93LGVjPWNhLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsLGZjPWNhLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5LGdjPWNhLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5LGhjPWNhLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LGljPWNhLnVuc3RhYmxlX0xvd1ByaW9yaXR5LGpjPWNhLnVuc3RhYmxlX0lkbGVQcmlvcml0eSxrYz1udWxsLGxjPW51bGw7ZnVuY3Rpb24gbWMoYSl7aWYobGMmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBsYy5vbkNvbW1pdEZpYmVyUm9vdCl0cnl7bGMub25Db21taXRGaWJlclJvb3Qoa2MsYSx2b2lkIDAsMTI4PT09KGEuY3VycmVudC5mbGFncyYxMjgpKX1jYXRjaChiKXt9fVxudmFyIG9jPU1hdGguY2x6MzI/TWF0aC5jbHozMjpuYyxwYz1NYXRoLmxvZyxxYz1NYXRoLkxOMjtmdW5jdGlvbiBuYyhhKXthPj4+PTA7cmV0dXJuIDA9PT1hPzMyOjMxLShwYyhhKS9xY3wwKXwwfXZhciByYz02NCxzYz00MTk0MzA0O1xuZnVuY3Rpb24gdGMoYSl7c3dpdGNoKGEmLWEpe2Nhc2UgMTpyZXR1cm4gMTtjYXNlIDI6cmV0dXJuIDI7Y2FzZSA0OnJldHVybiA0O2Nhc2UgODpyZXR1cm4gODtjYXNlIDE2OnJldHVybiAxNjtjYXNlIDMyOnJldHVybiAzMjtjYXNlIDY0OmNhc2UgMTI4OmNhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOnJldHVybiBhJjQxOTQyNDA7Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6Y2FzZSA2NzEwODg2NDpyZXR1cm4gYSYxMzAwMjM0MjQ7Y2FzZSAxMzQyMTc3Mjg6cmV0dXJuIDEzNDIxNzcyODtjYXNlIDI2ODQzNTQ1NjpyZXR1cm4gMjY4NDM1NDU2O2Nhc2UgNTM2ODcwOTEyOnJldHVybiA1MzY4NzA5MTI7Y2FzZSAxMDczNzQxODI0OnJldHVybiAxMDczNzQxODI0O1xuZGVmYXVsdDpyZXR1cm4gYX19ZnVuY3Rpb24gdWMoYSxiKXt2YXIgYz1hLnBlbmRpbmdMYW5lcztpZigwPT09YylyZXR1cm4gMDt2YXIgZD0wLGU9YS5zdXNwZW5kZWRMYW5lcyxmPWEucGluZ2VkTGFuZXMsZz1jJjI2ODQzNTQ1NTtpZigwIT09Zyl7dmFyIGg9ZyZ+ZTswIT09aD9kPXRjKGgpOihmJj1nLDAhPT1mJiYoZD10YyhmKSkpfWVsc2UgZz1jJn5lLDAhPT1nP2Q9dGMoZyk6MCE9PWYmJihkPXRjKGYpKTtpZigwPT09ZClyZXR1cm4gMDtpZigwIT09YiYmYiE9PWQmJjA9PT0oYiZlKSYmKGU9ZCYtZCxmPWImLWIsZT49Znx8MTY9PT1lJiYwIT09KGYmNDE5NDI0MCkpKXJldHVybiBiOzAhPT0oZCY0KSYmKGR8PWMmMTYpO2I9YS5lbnRhbmdsZWRMYW5lcztpZigwIT09Yilmb3IoYT1hLmVudGFuZ2xlbWVudHMsYiY9ZDswPGI7KWM9MzEtb2MoYiksZT0xPDxjLGR8PWFbY10sYiY9fmU7cmV0dXJuIGR9XG5mdW5jdGlvbiB2YyhhLGIpe3N3aXRjaChhKXtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpyZXR1cm4gYisyNTA7Y2FzZSA4OmNhc2UgMTY6Y2FzZSAzMjpjYXNlIDY0OmNhc2UgMTI4OmNhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOnJldHVybiBiKzVFMztjYXNlIDQxOTQzMDQ6Y2FzZSA4Mzg4NjA4OmNhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpjYXNlIDY3MTA4ODY0OnJldHVybi0xO2Nhc2UgMTM0MjE3NzI4OmNhc2UgMjY4NDM1NDU2OmNhc2UgNTM2ODcwOTEyOmNhc2UgMTA3Mzc0MTgyNDpyZXR1cm4tMTtkZWZhdWx0OnJldHVybi0xfX1cbmZ1bmN0aW9uIHdjKGEsYil7Zm9yKHZhciBjPWEuc3VzcGVuZGVkTGFuZXMsZD1hLnBpbmdlZExhbmVzLGU9YS5leHBpcmF0aW9uVGltZXMsZj1hLnBlbmRpbmdMYW5lczswPGY7KXt2YXIgZz0zMS1vYyhmKSxoPTE8PGcsaz1lW2ddO2lmKC0xPT09ayl7aWYoMD09PShoJmMpfHwwIT09KGgmZCkpZVtnXT12YyhoLGIpfWVsc2Ugazw9YiYmKGEuZXhwaXJlZExhbmVzfD1oKTtmJj1+aH19ZnVuY3Rpb24geGMoYSl7YT1hLnBlbmRpbmdMYW5lcyYtMTA3Mzc0MTgyNTtyZXR1cm4gMCE9PWE/YTphJjEwNzM3NDE4MjQ/MTA3Mzc0MTgyNDowfWZ1bmN0aW9uIHljKCl7dmFyIGE9cmM7cmM8PD0xOzA9PT0ocmMmNDE5NDI0MCkmJihyYz02NCk7cmV0dXJuIGF9ZnVuY3Rpb24gemMoYSl7Zm9yKHZhciBiPVtdLGM9MDszMT5jO2MrKyliLnB1c2goYSk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBBYyhhLGIsYyl7YS5wZW5kaW5nTGFuZXN8PWI7NTM2ODcwOTEyIT09YiYmKGEuc3VzcGVuZGVkTGFuZXM9MCxhLnBpbmdlZExhbmVzPTApO2E9YS5ldmVudFRpbWVzO2I9MzEtb2MoYik7YVtiXT1jfWZ1bmN0aW9uIEJjKGEsYil7dmFyIGM9YS5wZW5kaW5nTGFuZXMmfmI7YS5wZW5kaW5nTGFuZXM9YjthLnN1c3BlbmRlZExhbmVzPTA7YS5waW5nZWRMYW5lcz0wO2EuZXhwaXJlZExhbmVzJj1iO2EubXV0YWJsZVJlYWRMYW5lcyY9YjthLmVudGFuZ2xlZExhbmVzJj1iO2I9YS5lbnRhbmdsZW1lbnRzO3ZhciBkPWEuZXZlbnRUaW1lcztmb3IoYT1hLmV4cGlyYXRpb25UaW1lczswPGM7KXt2YXIgZT0zMS1vYyhjKSxmPTE8PGU7YltlXT0wO2RbZV09LTE7YVtlXT0tMTtjJj1+Zn19XG5mdW5jdGlvbiBDYyhhLGIpe3ZhciBjPWEuZW50YW5nbGVkTGFuZXN8PWI7Zm9yKGE9YS5lbnRhbmdsZW1lbnRzO2M7KXt2YXIgZD0zMS1vYyhjKSxlPTE8PGQ7ZSZifGFbZF0mYiYmKGFbZF18PWIpO2MmPX5lfX12YXIgQz0wO2Z1bmN0aW9uIERjKGEpe2EmPS1hO3JldHVybiAxPGE/NDxhPzAhPT0oYSYyNjg0MzU0NTUpPzE2OjUzNjg3MDkxMjo0OjF9dmFyIEVjLEZjLEdjLEhjLEljLEpjPSExLEtjPVtdLExjPW51bGwsTWM9bnVsbCxOYz1udWxsLE9jPW5ldyBNYXAsUGM9bmV3IE1hcCxRYz1bXSxSYz1cIm1vdXNlZG93biBtb3VzZXVwIHRvdWNoY2FuY2VsIHRvdWNoZW5kIHRvdWNoc3RhcnQgYXV4Y2xpY2sgZGJsY2xpY2sgcG9pbnRlcmNhbmNlbCBwb2ludGVyZG93biBwb2ludGVydXAgZHJhZ2VuZCBkcmFnc3RhcnQgZHJvcCBjb21wb3NpdGlvbmVuZCBjb21wb3NpdGlvbnN0YXJ0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgaW5wdXQgdGV4dElucHV0IGNvcHkgY3V0IHBhc3RlIGNsaWNrIGNoYW5nZSBjb250ZXh0bWVudSByZXNldCBzdWJtaXRcIi5zcGxpdChcIiBcIik7XG5mdW5jdGlvbiBTYyhhLGIpe3N3aXRjaChhKXtjYXNlIFwiZm9jdXNpblwiOmNhc2UgXCJmb2N1c291dFwiOkxjPW51bGw7YnJlYWs7Y2FzZSBcImRyYWdlbnRlclwiOmNhc2UgXCJkcmFnbGVhdmVcIjpNYz1udWxsO2JyZWFrO2Nhc2UgXCJtb3VzZW92ZXJcIjpjYXNlIFwibW91c2VvdXRcIjpOYz1udWxsO2JyZWFrO2Nhc2UgXCJwb2ludGVyb3ZlclwiOmNhc2UgXCJwb2ludGVyb3V0XCI6T2MuZGVsZXRlKGIucG9pbnRlcklkKTticmVhaztjYXNlIFwiZ290cG9pbnRlcmNhcHR1cmVcIjpjYXNlIFwibG9zdHBvaW50ZXJjYXB0dXJlXCI6UGMuZGVsZXRlKGIucG9pbnRlcklkKX19XG5mdW5jdGlvbiBUYyhhLGIsYyxkLGUsZil7aWYobnVsbD09PWF8fGEubmF0aXZlRXZlbnQhPT1mKXJldHVybiBhPXtibG9ja2VkT246Yixkb21FdmVudE5hbWU6YyxldmVudFN5c3RlbUZsYWdzOmQsbmF0aXZlRXZlbnQ6Zix0YXJnZXRDb250YWluZXJzOltlXX0sbnVsbCE9PWImJihiPUNiKGIpLG51bGwhPT1iJiZGYyhiKSksYTthLmV2ZW50U3lzdGVtRmxhZ3N8PWQ7Yj1hLnRhcmdldENvbnRhaW5lcnM7bnVsbCE9PWUmJi0xPT09Yi5pbmRleE9mKGUpJiZiLnB1c2goZSk7cmV0dXJuIGF9XG5mdW5jdGlvbiBVYyhhLGIsYyxkLGUpe3N3aXRjaChiKXtjYXNlIFwiZm9jdXNpblwiOnJldHVybiBMYz1UYyhMYyxhLGIsYyxkLGUpLCEwO2Nhc2UgXCJkcmFnZW50ZXJcIjpyZXR1cm4gTWM9VGMoTWMsYSxiLGMsZCxlKSwhMDtjYXNlIFwibW91c2VvdmVyXCI6cmV0dXJuIE5jPVRjKE5jLGEsYixjLGQsZSksITA7Y2FzZSBcInBvaW50ZXJvdmVyXCI6dmFyIGY9ZS5wb2ludGVySWQ7T2Muc2V0KGYsVGMoT2MuZ2V0KGYpfHxudWxsLGEsYixjLGQsZSkpO3JldHVybiEwO2Nhc2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiOnJldHVybiBmPWUucG9pbnRlcklkLFBjLnNldChmLFRjKFBjLmdldChmKXx8bnVsbCxhLGIsYyxkLGUpKSwhMH1yZXR1cm4hMX1cbmZ1bmN0aW9uIFZjKGEpe3ZhciBiPVdjKGEudGFyZ2V0KTtpZihudWxsIT09Yil7dmFyIGM9VmIoYik7aWYobnVsbCE9PWMpaWYoYj1jLnRhZywxMz09PWIpe2lmKGI9V2IoYyksbnVsbCE9PWIpe2EuYmxvY2tlZE9uPWI7SWMoYS5wcmlvcml0eSxmdW5jdGlvbigpe0djKGMpfSk7cmV0dXJufX1lbHNlIGlmKDM9PT1iJiZjLnN0YXRlTm9kZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXthLmJsb2NrZWRPbj0zPT09Yy50YWc/Yy5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzpudWxsO3JldHVybn19YS5ibG9ja2VkT249bnVsbH1cbmZ1bmN0aW9uIFhjKGEpe2lmKG51bGwhPT1hLmJsb2NrZWRPbilyZXR1cm4hMTtmb3IodmFyIGI9YS50YXJnZXRDb250YWluZXJzOzA8Yi5sZW5ndGg7KXt2YXIgYz1ZYyhhLmRvbUV2ZW50TmFtZSxhLmV2ZW50U3lzdGVtRmxhZ3MsYlswXSxhLm5hdGl2ZUV2ZW50KTtpZihudWxsPT09Yyl7Yz1hLm5hdGl2ZUV2ZW50O3ZhciBkPW5ldyBjLmNvbnN0cnVjdG9yKGMudHlwZSxjKTt3Yj1kO2MudGFyZ2V0LmRpc3BhdGNoRXZlbnQoZCk7d2I9bnVsbH1lbHNlIHJldHVybiBiPUNiKGMpLG51bGwhPT1iJiZGYyhiKSxhLmJsb2NrZWRPbj1jLCExO2Iuc2hpZnQoKX1yZXR1cm4hMH1mdW5jdGlvbiBaYyhhLGIsYyl7WGMoYSkmJmMuZGVsZXRlKGIpfWZ1bmN0aW9uICRjKCl7SmM9ITE7bnVsbCE9PUxjJiZYYyhMYykmJihMYz1udWxsKTtudWxsIT09TWMmJlhjKE1jKSYmKE1jPW51bGwpO251bGwhPT1OYyYmWGMoTmMpJiYoTmM9bnVsbCk7T2MuZm9yRWFjaChaYyk7UGMuZm9yRWFjaChaYyl9XG5mdW5jdGlvbiBhZChhLGIpe2EuYmxvY2tlZE9uPT09YiYmKGEuYmxvY2tlZE9uPW51bGwsSmN8fChKYz0hMCxjYS51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrKGNhLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LCRjKSkpfVxuZnVuY3Rpb24gYmQoYSl7ZnVuY3Rpb24gYihiKXtyZXR1cm4gYWQoYixhKX1pZigwPEtjLmxlbmd0aCl7YWQoS2NbMF0sYSk7Zm9yKHZhciBjPTE7YzxLYy5sZW5ndGg7YysrKXt2YXIgZD1LY1tjXTtkLmJsb2NrZWRPbj09PWEmJihkLmJsb2NrZWRPbj1udWxsKX19bnVsbCE9PUxjJiZhZChMYyxhKTtudWxsIT09TWMmJmFkKE1jLGEpO251bGwhPT1OYyYmYWQoTmMsYSk7T2MuZm9yRWFjaChiKTtQYy5mb3JFYWNoKGIpO2ZvcihjPTA7YzxRYy5sZW5ndGg7YysrKWQ9UWNbY10sZC5ibG9ja2VkT249PT1hJiYoZC5ibG9ja2VkT249bnVsbCk7Zm9yKDswPFFjLmxlbmd0aCYmKGM9UWNbMF0sbnVsbD09PWMuYmxvY2tlZE9uKTspVmMoYyksbnVsbD09PWMuYmxvY2tlZE9uJiZRYy5zaGlmdCgpfXZhciBjZD11YS5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxkZD0hMDtcbmZ1bmN0aW9uIGVkKGEsYixjLGQpe3ZhciBlPUMsZj1jZC50cmFuc2l0aW9uO2NkLnRyYW5zaXRpb249bnVsbDt0cnl7Qz0xLGZkKGEsYixjLGQpfWZpbmFsbHl7Qz1lLGNkLnRyYW5zaXRpb249Zn19ZnVuY3Rpb24gZ2QoYSxiLGMsZCl7dmFyIGU9QyxmPWNkLnRyYW5zaXRpb247Y2QudHJhbnNpdGlvbj1udWxsO3RyeXtDPTQsZmQoYSxiLGMsZCl9ZmluYWxseXtDPWUsY2QudHJhbnNpdGlvbj1mfX1cbmZ1bmN0aW9uIGZkKGEsYixjLGQpe2lmKGRkKXt2YXIgZT1ZYyhhLGIsYyxkKTtpZihudWxsPT09ZSloZChhLGIsZCxpZCxjKSxTYyhhLGQpO2Vsc2UgaWYoVWMoZSxhLGIsYyxkKSlkLnN0b3BQcm9wYWdhdGlvbigpO2Vsc2UgaWYoU2MoYSxkKSxiJjQmJi0xPFJjLmluZGV4T2YoYSkpe2Zvcig7bnVsbCE9PWU7KXt2YXIgZj1DYihlKTtudWxsIT09ZiYmRWMoZik7Zj1ZYyhhLGIsYyxkKTtudWxsPT09ZiYmaGQoYSxiLGQsaWQsYyk7aWYoZj09PWUpYnJlYWs7ZT1mfW51bGwhPT1lJiZkLnN0b3BQcm9wYWdhdGlvbigpfWVsc2UgaGQoYSxiLGQsbnVsbCxjKX19dmFyIGlkPW51bGw7XG5mdW5jdGlvbiBZYyhhLGIsYyxkKXtpZD1udWxsO2E9eGIoZCk7YT1XYyhhKTtpZihudWxsIT09YSlpZihiPVZiKGEpLG51bGw9PT1iKWE9bnVsbDtlbHNlIGlmKGM9Yi50YWcsMTM9PT1jKXthPVdiKGIpO2lmKG51bGwhPT1hKXJldHVybiBhO2E9bnVsbH1lbHNlIGlmKDM9PT1jKXtpZihiLnN0YXRlTm9kZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXJldHVybiAzPT09Yi50YWc/Yi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzpudWxsO2E9bnVsbH1lbHNlIGIhPT1hJiYoYT1udWxsKTtpZD1hO3JldHVybiBudWxsfVxuZnVuY3Rpb24gamQoYSl7c3dpdGNoKGEpe2Nhc2UgXCJjYW5jZWxcIjpjYXNlIFwiY2xpY2tcIjpjYXNlIFwiY2xvc2VcIjpjYXNlIFwiY29udGV4dG1lbnVcIjpjYXNlIFwiY29weVwiOmNhc2UgXCJjdXRcIjpjYXNlIFwiYXV4Y2xpY2tcIjpjYXNlIFwiZGJsY2xpY2tcIjpjYXNlIFwiZHJhZ2VuZFwiOmNhc2UgXCJkcmFnc3RhcnRcIjpjYXNlIFwiZHJvcFwiOmNhc2UgXCJmb2N1c2luXCI6Y2FzZSBcImZvY3Vzb3V0XCI6Y2FzZSBcImlucHV0XCI6Y2FzZSBcImludmFsaWRcIjpjYXNlIFwia2V5ZG93blwiOmNhc2UgXCJrZXlwcmVzc1wiOmNhc2UgXCJrZXl1cFwiOmNhc2UgXCJtb3VzZWRvd25cIjpjYXNlIFwibW91c2V1cFwiOmNhc2UgXCJwYXN0ZVwiOmNhc2UgXCJwYXVzZVwiOmNhc2UgXCJwbGF5XCI6Y2FzZSBcInBvaW50ZXJjYW5jZWxcIjpjYXNlIFwicG9pbnRlcmRvd25cIjpjYXNlIFwicG9pbnRlcnVwXCI6Y2FzZSBcInJhdGVjaGFuZ2VcIjpjYXNlIFwicmVzZXRcIjpjYXNlIFwicmVzaXplXCI6Y2FzZSBcInNlZWtlZFwiOmNhc2UgXCJzdWJtaXRcIjpjYXNlIFwidG91Y2hjYW5jZWxcIjpjYXNlIFwidG91Y2hlbmRcIjpjYXNlIFwidG91Y2hzdGFydFwiOmNhc2UgXCJ2b2x1bWVjaGFuZ2VcIjpjYXNlIFwiY2hhbmdlXCI6Y2FzZSBcInNlbGVjdGlvbmNoYW5nZVwiOmNhc2UgXCJ0ZXh0SW5wdXRcIjpjYXNlIFwiY29tcG9zaXRpb25zdGFydFwiOmNhc2UgXCJjb21wb3NpdGlvbmVuZFwiOmNhc2UgXCJjb21wb3NpdGlvbnVwZGF0ZVwiOmNhc2UgXCJiZWZvcmVibHVyXCI6Y2FzZSBcImFmdGVyYmx1clwiOmNhc2UgXCJiZWZvcmVpbnB1dFwiOmNhc2UgXCJibHVyXCI6Y2FzZSBcImZ1bGxzY3JlZW5jaGFuZ2VcIjpjYXNlIFwiZm9jdXNcIjpjYXNlIFwiaGFzaGNoYW5nZVwiOmNhc2UgXCJwb3BzdGF0ZVwiOmNhc2UgXCJzZWxlY3RcIjpjYXNlIFwic2VsZWN0c3RhcnRcIjpyZXR1cm4gMTtjYXNlIFwiZHJhZ1wiOmNhc2UgXCJkcmFnZW50ZXJcIjpjYXNlIFwiZHJhZ2V4aXRcIjpjYXNlIFwiZHJhZ2xlYXZlXCI6Y2FzZSBcImRyYWdvdmVyXCI6Y2FzZSBcIm1vdXNlbW92ZVwiOmNhc2UgXCJtb3VzZW91dFwiOmNhc2UgXCJtb3VzZW92ZXJcIjpjYXNlIFwicG9pbnRlcm1vdmVcIjpjYXNlIFwicG9pbnRlcm91dFwiOmNhc2UgXCJwb2ludGVyb3ZlclwiOmNhc2UgXCJzY3JvbGxcIjpjYXNlIFwidG9nZ2xlXCI6Y2FzZSBcInRvdWNobW92ZVwiOmNhc2UgXCJ3aGVlbFwiOmNhc2UgXCJtb3VzZWVudGVyXCI6Y2FzZSBcIm1vdXNlbGVhdmVcIjpjYXNlIFwicG9pbnRlcmVudGVyXCI6Y2FzZSBcInBvaW50ZXJsZWF2ZVwiOnJldHVybiA0O1xuY2FzZSBcIm1lc3NhZ2VcIjpzd2l0Y2goZWMoKSl7Y2FzZSBmYzpyZXR1cm4gMTtjYXNlIGdjOnJldHVybiA0O2Nhc2UgaGM6Y2FzZSBpYzpyZXR1cm4gMTY7Y2FzZSBqYzpyZXR1cm4gNTM2ODcwOTEyO2RlZmF1bHQ6cmV0dXJuIDE2fWRlZmF1bHQ6cmV0dXJuIDE2fX12YXIga2Q9bnVsbCxsZD1udWxsLG1kPW51bGw7ZnVuY3Rpb24gbmQoKXtpZihtZClyZXR1cm4gbWQ7dmFyIGEsYj1sZCxjPWIubGVuZ3RoLGQsZT1cInZhbHVlXCJpbiBrZD9rZC52YWx1ZTprZC50ZXh0Q29udGVudCxmPWUubGVuZ3RoO2ZvcihhPTA7YTxjJiZiW2FdPT09ZVthXTthKyspO3ZhciBnPWMtYTtmb3IoZD0xO2Q8PWcmJmJbYy1kXT09PWVbZi1kXTtkKyspO3JldHVybiBtZD1lLnNsaWNlKGEsMTxkPzEtZDp2b2lkIDApfVxuZnVuY3Rpb24gb2QoYSl7dmFyIGI9YS5rZXlDb2RlO1wiY2hhckNvZGVcImluIGE/KGE9YS5jaGFyQ29kZSwwPT09YSYmMTM9PT1iJiYoYT0xMykpOmE9YjsxMD09PWEmJihhPTEzKTtyZXR1cm4gMzI8PWF8fDEzPT09YT9hOjB9ZnVuY3Rpb24gcGQoKXtyZXR1cm4hMH1mdW5jdGlvbiBxZCgpe3JldHVybiExfVxuZnVuY3Rpb24gcmQoYSl7ZnVuY3Rpb24gYihiLGQsZSxmLGcpe3RoaXMuX3JlYWN0TmFtZT1iO3RoaXMuX3RhcmdldEluc3Q9ZTt0aGlzLnR5cGU9ZDt0aGlzLm5hdGl2ZUV2ZW50PWY7dGhpcy50YXJnZXQ9Zzt0aGlzLmN1cnJlbnRUYXJnZXQ9bnVsbDtmb3IodmFyIGMgaW4gYSlhLmhhc093blByb3BlcnR5KGMpJiYoYj1hW2NdLHRoaXNbY109Yj9iKGYpOmZbY10pO3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPShudWxsIT1mLmRlZmF1bHRQcmV2ZW50ZWQ/Zi5kZWZhdWx0UHJldmVudGVkOiExPT09Zi5yZXR1cm5WYWx1ZSk/cGQ6cWQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1xZDtyZXR1cm4gdGhpc31BKGIucHJvdG90eXBlLHtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMDt2YXIgYT10aGlzLm5hdGl2ZUV2ZW50O2EmJihhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTpcInVua25vd25cIiE9PXR5cGVvZiBhLnJldHVyblZhbHVlJiZcbihhLnJldHVyblZhbHVlPSExKSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1wZCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMubmF0aXZlRXZlbnQ7YSYmKGEuc3RvcFByb3BhZ2F0aW9uP2Euc3RvcFByb3BhZ2F0aW9uKCk6XCJ1bmtub3duXCIhPT10eXBlb2YgYS5jYW5jZWxCdWJibGUmJihhLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1wZCl9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt9LGlzUGVyc2lzdGVudDpwZH0pO3JldHVybiBifVxudmFyIHNkPXtldmVudFBoYXNlOjAsYnViYmxlczowLGNhbmNlbGFibGU6MCx0aW1lU3RhbXA6ZnVuY3Rpb24oYSl7cmV0dXJuIGEudGltZVN0YW1wfHxEYXRlLm5vdygpfSxkZWZhdWx0UHJldmVudGVkOjAsaXNUcnVzdGVkOjB9LHRkPXJkKHNkKSx1ZD1BKHt9LHNkLHt2aWV3OjAsZGV0YWlsOjB9KSx2ZD1yZCh1ZCksd2QseGQseWQsQWQ9QSh7fSx1ZCx7c2NyZWVuWDowLHNjcmVlblk6MCxjbGllbnRYOjAsY2xpZW50WTowLHBhZ2VYOjAscGFnZVk6MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxhbHRLZXk6MCxtZXRhS2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTp6ZCxidXR0b246MCxidXR0b25zOjAscmVsYXRlZFRhcmdldDpmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YS5yZWxhdGVkVGFyZ2V0P2EuZnJvbUVsZW1lbnQ9PT1hLnNyY0VsZW1lbnQ/YS50b0VsZW1lbnQ6YS5mcm9tRWxlbWVudDphLnJlbGF0ZWRUYXJnZXR9LG1vdmVtZW50WDpmdW5jdGlvbihhKXtpZihcIm1vdmVtZW50WFwiaW5cbmEpcmV0dXJuIGEubW92ZW1lbnRYO2EhPT15ZCYmKHlkJiZcIm1vdXNlbW92ZVwiPT09YS50eXBlPyh3ZD1hLnNjcmVlblgteWQuc2NyZWVuWCx4ZD1hLnNjcmVlblkteWQuc2NyZWVuWSk6eGQ9d2Q9MCx5ZD1hKTtyZXR1cm4gd2R9LG1vdmVtZW50WTpmdW5jdGlvbihhKXtyZXR1cm5cIm1vdmVtZW50WVwiaW4gYT9hLm1vdmVtZW50WTp4ZH19KSxCZD1yZChBZCksQ2Q9QSh7fSxBZCx7ZGF0YVRyYW5zZmVyOjB9KSxEZD1yZChDZCksRWQ9QSh7fSx1ZCx7cmVsYXRlZFRhcmdldDowfSksRmQ9cmQoRWQpLEdkPUEoe30sc2Qse2FuaW1hdGlvbk5hbWU6MCxlbGFwc2VkVGltZTowLHBzZXVkb0VsZW1lbnQ6MH0pLEhkPXJkKEdkKSxJZD1BKHt9LHNkLHtjbGlwYm9hcmREYXRhOmZ1bmN0aW9uKGEpe3JldHVyblwiY2xpcGJvYXJkRGF0YVwiaW4gYT9hLmNsaXBib2FyZERhdGE6d2luZG93LmNsaXBib2FyZERhdGF9fSksSmQ9cmQoSWQpLEtkPUEoe30sc2Qse2RhdGE6MH0pLExkPXJkKEtkKSxNZD17RXNjOlwiRXNjYXBlXCIsXG5TcGFjZWJhcjpcIiBcIixMZWZ0OlwiQXJyb3dMZWZ0XCIsVXA6XCJBcnJvd1VwXCIsUmlnaHQ6XCJBcnJvd1JpZ2h0XCIsRG93bjpcIkFycm93RG93blwiLERlbDpcIkRlbGV0ZVwiLFdpbjpcIk9TXCIsTWVudTpcIkNvbnRleHRNZW51XCIsQXBwczpcIkNvbnRleHRNZW51XCIsU2Nyb2xsOlwiU2Nyb2xsTG9ja1wiLE1velByaW50YWJsZUtleTpcIlVuaWRlbnRpZmllZFwifSxOZD17ODpcIkJhY2tzcGFjZVwiLDk6XCJUYWJcIiwxMjpcIkNsZWFyXCIsMTM6XCJFbnRlclwiLDE2OlwiU2hpZnRcIiwxNzpcIkNvbnRyb2xcIiwxODpcIkFsdFwiLDE5OlwiUGF1c2VcIiwyMDpcIkNhcHNMb2NrXCIsMjc6XCJFc2NhcGVcIiwzMjpcIiBcIiwzMzpcIlBhZ2VVcFwiLDM0OlwiUGFnZURvd25cIiwzNTpcIkVuZFwiLDM2OlwiSG9tZVwiLDM3OlwiQXJyb3dMZWZ0XCIsMzg6XCJBcnJvd1VwXCIsMzk6XCJBcnJvd1JpZ2h0XCIsNDA6XCJBcnJvd0Rvd25cIiw0NTpcIkluc2VydFwiLDQ2OlwiRGVsZXRlXCIsMTEyOlwiRjFcIiwxMTM6XCJGMlwiLDExNDpcIkYzXCIsMTE1OlwiRjRcIiwxMTY6XCJGNVwiLDExNzpcIkY2XCIsMTE4OlwiRjdcIixcbjExOTpcIkY4XCIsMTIwOlwiRjlcIiwxMjE6XCJGMTBcIiwxMjI6XCJGMTFcIiwxMjM6XCJGMTJcIiwxNDQ6XCJOdW1Mb2NrXCIsMTQ1OlwiU2Nyb2xsTG9ja1wiLDIyNDpcIk1ldGFcIn0sT2Q9e0FsdDpcImFsdEtleVwiLENvbnRyb2w6XCJjdHJsS2V5XCIsTWV0YTpcIm1ldGFLZXlcIixTaGlmdDpcInNoaWZ0S2V5XCJ9O2Z1bmN0aW9uIFBkKGEpe3ZhciBiPXRoaXMubmF0aXZlRXZlbnQ7cmV0dXJuIGIuZ2V0TW9kaWZpZXJTdGF0ZT9iLmdldE1vZGlmaWVyU3RhdGUoYSk6KGE9T2RbYV0pPyEhYlthXTohMX1mdW5jdGlvbiB6ZCgpe3JldHVybiBQZH1cbnZhciBRZD1BKHt9LHVkLHtrZXk6ZnVuY3Rpb24oYSl7aWYoYS5rZXkpe3ZhciBiPU1kW2Eua2V5XXx8YS5rZXk7aWYoXCJVbmlkZW50aWZpZWRcIiE9PWIpcmV0dXJuIGJ9cmV0dXJuXCJrZXlwcmVzc1wiPT09YS50eXBlPyhhPW9kKGEpLDEzPT09YT9cIkVudGVyXCI6U3RyaW5nLmZyb21DaGFyQ29kZShhKSk6XCJrZXlkb3duXCI9PT1hLnR5cGV8fFwia2V5dXBcIj09PWEudHlwZT9OZFthLmtleUNvZGVdfHxcIlVuaWRlbnRpZmllZFwiOlwiXCJ9LGNvZGU6MCxsb2NhdGlvbjowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxyZXBlYXQ6MCxsb2NhbGU6MCxnZXRNb2RpZmllclN0YXRlOnpkLGNoYXJDb2RlOmZ1bmN0aW9uKGEpe3JldHVyblwia2V5cHJlc3NcIj09PWEudHlwZT9vZChhKTowfSxrZXlDb2RlOmZ1bmN0aW9uKGEpe3JldHVyblwia2V5ZG93blwiPT09YS50eXBlfHxcImtleXVwXCI9PT1hLnR5cGU/YS5rZXlDb2RlOjB9LHdoaWNoOmZ1bmN0aW9uKGEpe3JldHVyblwia2V5cHJlc3NcIj09PVxuYS50eXBlP29kKGEpOlwia2V5ZG93blwiPT09YS50eXBlfHxcImtleXVwXCI9PT1hLnR5cGU/YS5rZXlDb2RlOjB9fSksUmQ9cmQoUWQpLFNkPUEoe30sQWQse3BvaW50ZXJJZDowLHdpZHRoOjAsaGVpZ2h0OjAscHJlc3N1cmU6MCx0YW5nZW50aWFsUHJlc3N1cmU6MCx0aWx0WDowLHRpbHRZOjAsdHdpc3Q6MCxwb2ludGVyVHlwZTowLGlzUHJpbWFyeTowfSksVGQ9cmQoU2QpLFVkPUEoe30sdWQse3RvdWNoZXM6MCx0YXJnZXRUb3VjaGVzOjAsY2hhbmdlZFRvdWNoZXM6MCxhbHRLZXk6MCxtZXRhS2V5OjAsY3RybEtleTowLHNoaWZ0S2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTp6ZH0pLFZkPXJkKFVkKSxXZD1BKHt9LHNkLHtwcm9wZXJ0eU5hbWU6MCxlbGFwc2VkVGltZTowLHBzZXVkb0VsZW1lbnQ6MH0pLFhkPXJkKFdkKSxZZD1BKHt9LEFkLHtkZWx0YVg6ZnVuY3Rpb24oYSl7cmV0dXJuXCJkZWx0YVhcImluIGE/YS5kZWx0YVg6XCJ3aGVlbERlbHRhWFwiaW4gYT8tYS53aGVlbERlbHRhWDowfSxcbmRlbHRhWTpmdW5jdGlvbihhKXtyZXR1cm5cImRlbHRhWVwiaW4gYT9hLmRlbHRhWTpcIndoZWVsRGVsdGFZXCJpbiBhPy1hLndoZWVsRGVsdGFZOlwid2hlZWxEZWx0YVwiaW4gYT8tYS53aGVlbERlbHRhOjB9LGRlbHRhWjowLGRlbHRhTW9kZTowfSksWmQ9cmQoWWQpLCRkPVs5LDEzLDI3LDMyXSxhZT1pYSYmXCJDb21wb3NpdGlvbkV2ZW50XCJpbiB3aW5kb3csYmU9bnVsbDtpYSYmXCJkb2N1bWVudE1vZGVcImluIGRvY3VtZW50JiYoYmU9ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKTt2YXIgY2U9aWEmJlwiVGV4dEV2ZW50XCJpbiB3aW5kb3cmJiFiZSxkZT1pYSYmKCFhZXx8YmUmJjg8YmUmJjExPj1iZSksZWU9U3RyaW5nLmZyb21DaGFyQ29kZSgzMiksZmU9ITE7XG5mdW5jdGlvbiBnZShhLGIpe3N3aXRjaChhKXtjYXNlIFwia2V5dXBcIjpyZXR1cm4tMSE9PSRkLmluZGV4T2YoYi5rZXlDb2RlKTtjYXNlIFwia2V5ZG93blwiOnJldHVybiAyMjkhPT1iLmtleUNvZGU7Y2FzZSBcImtleXByZXNzXCI6Y2FzZSBcIm1vdXNlZG93blwiOmNhc2UgXCJmb2N1c291dFwiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIGhlKGEpe2E9YS5kZXRhaWw7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZcImRhdGFcImluIGE/YS5kYXRhOm51bGx9dmFyIGllPSExO2Z1bmN0aW9uIGplKGEsYil7c3dpdGNoKGEpe2Nhc2UgXCJjb21wb3NpdGlvbmVuZFwiOnJldHVybiBoZShiKTtjYXNlIFwia2V5cHJlc3NcIjppZigzMiE9PWIud2hpY2gpcmV0dXJuIG51bGw7ZmU9ITA7cmV0dXJuIGVlO2Nhc2UgXCJ0ZXh0SW5wdXRcIjpyZXR1cm4gYT1iLmRhdGEsYT09PWVlJiZmZT9udWxsOmE7ZGVmYXVsdDpyZXR1cm4gbnVsbH19XG5mdW5jdGlvbiBrZShhLGIpe2lmKGllKXJldHVyblwiY29tcG9zaXRpb25lbmRcIj09PWF8fCFhZSYmZ2UoYSxiKT8oYT1uZCgpLG1kPWxkPWtkPW51bGwsaWU9ITEsYSk6bnVsbDtzd2l0Y2goYSl7Y2FzZSBcInBhc3RlXCI6cmV0dXJuIG51bGw7Y2FzZSBcImtleXByZXNzXCI6aWYoIShiLmN0cmxLZXl8fGIuYWx0S2V5fHxiLm1ldGFLZXkpfHxiLmN0cmxLZXkmJmIuYWx0S2V5KXtpZihiLmNoYXImJjE8Yi5jaGFyLmxlbmd0aClyZXR1cm4gYi5jaGFyO2lmKGIud2hpY2gpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoYi53aGljaCl9cmV0dXJuIG51bGw7Y2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6cmV0dXJuIGRlJiZcImtvXCIhPT1iLmxvY2FsZT9udWxsOmIuZGF0YTtkZWZhdWx0OnJldHVybiBudWxsfX1cbnZhciBsZT17Y29sb3I6ITAsZGF0ZTohMCxkYXRldGltZTohMCxcImRhdGV0aW1lLWxvY2FsXCI6ITAsZW1haWw6ITAsbW9udGg6ITAsbnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNlYXJjaDohMCx0ZWw6ITAsdGV4dDohMCx0aW1lOiEwLHVybDohMCx3ZWVrOiEwfTtmdW5jdGlvbiBtZShhKXt2YXIgYj1hJiZhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuXCJpbnB1dFwiPT09Yj8hIWxlW2EudHlwZV06XCJ0ZXh0YXJlYVwiPT09Yj8hMDohMX1mdW5jdGlvbiBuZShhLGIsYyxkKXtFYihkKTtiPW9lKGIsXCJvbkNoYW5nZVwiKTswPGIubGVuZ3RoJiYoYz1uZXcgdGQoXCJvbkNoYW5nZVwiLFwiY2hhbmdlXCIsbnVsbCxjLGQpLGEucHVzaCh7ZXZlbnQ6YyxsaXN0ZW5lcnM6Yn0pKX12YXIgcGU9bnVsbCxxZT1udWxsO2Z1bmN0aW9uIHJlKGEpe3NlKGEsMCl9ZnVuY3Rpb24gdGUoYSl7dmFyIGI9dWUoYSk7aWYoV2EoYikpcmV0dXJuIGF9XG5mdW5jdGlvbiB2ZShhLGIpe2lmKFwiY2hhbmdlXCI9PT1hKXJldHVybiBifXZhciB3ZT0hMTtpZihpYSl7dmFyIHhlO2lmKGlhKXt2YXIgeWU9XCJvbmlucHV0XCJpbiBkb2N1bWVudDtpZigheWUpe3ZhciB6ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO3plLnNldEF0dHJpYnV0ZShcIm9uaW5wdXRcIixcInJldHVybjtcIik7eWU9XCJmdW5jdGlvblwiPT09dHlwZW9mIHplLm9uaW5wdXR9eGU9eWV9ZWxzZSB4ZT0hMTt3ZT14ZSYmKCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fDk8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKX1mdW5jdGlvbiBBZSgpe3BlJiYocGUuZGV0YWNoRXZlbnQoXCJvbnByb3BlcnR5Y2hhbmdlXCIsQmUpLHFlPXBlPW51bGwpfWZ1bmN0aW9uIEJlKGEpe2lmKFwidmFsdWVcIj09PWEucHJvcGVydHlOYW1lJiZ0ZShxZSkpe3ZhciBiPVtdO25lKGIscWUsYSx4YihhKSk7SmIocmUsYil9fVxuZnVuY3Rpb24gQ2UoYSxiLGMpe1wiZm9jdXNpblwiPT09YT8oQWUoKSxwZT1iLHFlPWMscGUuYXR0YWNoRXZlbnQoXCJvbnByb3BlcnR5Y2hhbmdlXCIsQmUpKTpcImZvY3Vzb3V0XCI9PT1hJiZBZSgpfWZ1bmN0aW9uIERlKGEpe2lmKFwic2VsZWN0aW9uY2hhbmdlXCI9PT1hfHxcImtleXVwXCI9PT1hfHxcImtleWRvd25cIj09PWEpcmV0dXJuIHRlKHFlKX1mdW5jdGlvbiBFZShhLGIpe2lmKFwiY2xpY2tcIj09PWEpcmV0dXJuIHRlKGIpfWZ1bmN0aW9uIEZlKGEsYil7aWYoXCJpbnB1dFwiPT09YXx8XCJjaGFuZ2VcIj09PWEpcmV0dXJuIHRlKGIpfWZ1bmN0aW9uIEdlKGEsYil7cmV0dXJuIGE9PT1iJiYoMCE9PWF8fDEvYT09PTEvYil8fGEhPT1hJiZiIT09Yn12YXIgSGU9XCJmdW5jdGlvblwiPT09dHlwZW9mIE9iamVjdC5pcz9PYmplY3QuaXM6R2U7XG5mdW5jdGlvbiBJZShhLGIpe2lmKEhlKGEsYikpcmV0dXJuITA7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBhfHxudWxsPT09YXx8XCJvYmplY3RcIiE9PXR5cGVvZiBifHxudWxsPT09YilyZXR1cm4hMTt2YXIgYz1PYmplY3Qua2V5cyhhKSxkPU9iamVjdC5rZXlzKGIpO2lmKGMubGVuZ3RoIT09ZC5sZW5ndGgpcmV0dXJuITE7Zm9yKGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9Y1tkXTtpZighamEuY2FsbChiLGUpfHwhSGUoYVtlXSxiW2VdKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBKZShhKXtmb3IoO2EmJmEuZmlyc3RDaGlsZDspYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9XG5mdW5jdGlvbiBLZShhLGIpe3ZhciBjPUplKGEpO2E9MDtmb3IodmFyIGQ7Yzspe2lmKDM9PT1jLm5vZGVUeXBlKXtkPWErYy50ZXh0Q29udGVudC5sZW5ndGg7aWYoYTw9YiYmZD49YilyZXR1cm57bm9kZTpjLG9mZnNldDpiLWF9O2E9ZH1hOntmb3IoO2M7KXtpZihjLm5leHRTaWJsaW5nKXtjPWMubmV4dFNpYmxpbmc7YnJlYWsgYX1jPWMucGFyZW50Tm9kZX1jPXZvaWQgMH1jPUplKGMpfX1mdW5jdGlvbiBMZShhLGIpe3JldHVybiBhJiZiP2E9PT1iPyEwOmEmJjM9PT1hLm5vZGVUeXBlPyExOmImJjM9PT1iLm5vZGVUeXBlP0xlKGEsYi5wYXJlbnROb2RlKTpcImNvbnRhaW5zXCJpbiBhP2EuY29udGFpbnMoYik6YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj8hIShhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpJjE2KTohMTohMX1cbmZ1bmN0aW9uIE1lKCl7Zm9yKHZhciBhPXdpbmRvdyxiPVhhKCk7YiBpbnN0YW5jZW9mIGEuSFRNTElGcmFtZUVsZW1lbnQ7KXt0cnl7dmFyIGM9XCJzdHJpbmdcIj09PXR5cGVvZiBiLmNvbnRlbnRXaW5kb3cubG9jYXRpb24uaHJlZn1jYXRjaChkKXtjPSExfWlmKGMpYT1iLmNvbnRlbnRXaW5kb3c7ZWxzZSBicmVhaztiPVhhKGEuZG9jdW1lbnQpfXJldHVybiBifWZ1bmN0aW9uIE5lKGEpe3ZhciBiPWEmJmEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gYiYmKFwiaW5wdXRcIj09PWImJihcInRleHRcIj09PWEudHlwZXx8XCJzZWFyY2hcIj09PWEudHlwZXx8XCJ0ZWxcIj09PWEudHlwZXx8XCJ1cmxcIj09PWEudHlwZXx8XCJwYXNzd29yZFwiPT09YS50eXBlKXx8XCJ0ZXh0YXJlYVwiPT09Ynx8XCJ0cnVlXCI9PT1hLmNvbnRlbnRFZGl0YWJsZSl9XG5mdW5jdGlvbiBPZShhKXt2YXIgYj1NZSgpLGM9YS5mb2N1c2VkRWxlbSxkPWEuc2VsZWN0aW9uUmFuZ2U7aWYoYiE9PWMmJmMmJmMub3duZXJEb2N1bWVudCYmTGUoYy5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxjKSl7aWYobnVsbCE9PWQmJk5lKGMpKWlmKGI9ZC5zdGFydCxhPWQuZW5kLHZvaWQgMD09PWEmJihhPWIpLFwic2VsZWN0aW9uU3RhcnRcImluIGMpYy5zZWxlY3Rpb25TdGFydD1iLGMuc2VsZWN0aW9uRW5kPU1hdGgubWluKGEsYy52YWx1ZS5sZW5ndGgpO2Vsc2UgaWYoYT0oYj1jLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50KSYmYi5kZWZhdWx0Vmlld3x8d2luZG93LGEuZ2V0U2VsZWN0aW9uKXthPWEuZ2V0U2VsZWN0aW9uKCk7dmFyIGU9Yy50ZXh0Q29udGVudC5sZW5ndGgsZj1NYXRoLm1pbihkLnN0YXJ0LGUpO2Q9dm9pZCAwPT09ZC5lbmQ/ZjpNYXRoLm1pbihkLmVuZCxlKTshYS5leHRlbmQmJmY+ZCYmKGU9ZCxkPWYsZj1lKTtlPUtlKGMsZik7dmFyIGc9S2UoYyxcbmQpO2UmJmcmJigxIT09YS5yYW5nZUNvdW50fHxhLmFuY2hvck5vZGUhPT1lLm5vZGV8fGEuYW5jaG9yT2Zmc2V0IT09ZS5vZmZzZXR8fGEuZm9jdXNOb2RlIT09Zy5ub2RlfHxhLmZvY3VzT2Zmc2V0IT09Zy5vZmZzZXQpJiYoYj1iLmNyZWF0ZVJhbmdlKCksYi5zZXRTdGFydChlLm5vZGUsZS5vZmZzZXQpLGEucmVtb3ZlQWxsUmFuZ2VzKCksZj5kPyhhLmFkZFJhbmdlKGIpLGEuZXh0ZW5kKGcubm9kZSxnLm9mZnNldCkpOihiLnNldEVuZChnLm5vZGUsZy5vZmZzZXQpLGEuYWRkUmFuZ2UoYikpKX1iPVtdO2ZvcihhPWM7YT1hLnBhcmVudE5vZGU7KTE9PT1hLm5vZGVUeXBlJiZiLnB1c2goe2VsZW1lbnQ6YSxsZWZ0OmEuc2Nyb2xsTGVmdCx0b3A6YS5zY3JvbGxUb3B9KTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYy5mb2N1cyYmYy5mb2N1cygpO2ZvcihjPTA7YzxiLmxlbmd0aDtjKyspYT1iW2NdLGEuZWxlbWVudC5zY3JvbGxMZWZ0PWEubGVmdCxhLmVsZW1lbnQuc2Nyb2xsVG9wPWEudG9wfX1cbnZhciBQZT1pYSYmXCJkb2N1bWVudE1vZGVcImluIGRvY3VtZW50JiYxMT49ZG9jdW1lbnQuZG9jdW1lbnRNb2RlLFFlPW51bGwsUmU9bnVsbCxTZT1udWxsLFRlPSExO1xuZnVuY3Rpb24gVWUoYSxiLGMpe3ZhciBkPWMud2luZG93PT09Yz9jLmRvY3VtZW50Ojk9PT1jLm5vZGVUeXBlP2M6Yy5vd25lckRvY3VtZW50O1RlfHxudWxsPT1RZXx8UWUhPT1YYShkKXx8KGQ9UWUsXCJzZWxlY3Rpb25TdGFydFwiaW4gZCYmTmUoZCk/ZD17c3RhcnQ6ZC5zZWxlY3Rpb25TdGFydCxlbmQ6ZC5zZWxlY3Rpb25FbmR9OihkPShkLm93bmVyRG9jdW1lbnQmJmQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93KS5nZXRTZWxlY3Rpb24oKSxkPXthbmNob3JOb2RlOmQuYW5jaG9yTm9kZSxhbmNob3JPZmZzZXQ6ZC5hbmNob3JPZmZzZXQsZm9jdXNOb2RlOmQuZm9jdXNOb2RlLGZvY3VzT2Zmc2V0OmQuZm9jdXNPZmZzZXR9KSxTZSYmSWUoU2UsZCl8fChTZT1kLGQ9b2UoUmUsXCJvblNlbGVjdFwiKSwwPGQubGVuZ3RoJiYoYj1uZXcgdGQoXCJvblNlbGVjdFwiLFwic2VsZWN0XCIsbnVsbCxiLGMpLGEucHVzaCh7ZXZlbnQ6YixsaXN0ZW5lcnM6ZH0pLGIudGFyZ2V0PVFlKSkpfVxuZnVuY3Rpb24gVmUoYSxiKXt2YXIgYz17fTtjW2EudG9Mb3dlckNhc2UoKV09Yi50b0xvd2VyQ2FzZSgpO2NbXCJXZWJraXRcIithXT1cIndlYmtpdFwiK2I7Y1tcIk1velwiK2FdPVwibW96XCIrYjtyZXR1cm4gY312YXIgV2U9e2FuaW1hdGlvbmVuZDpWZShcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uRW5kXCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpWZShcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uSXRlcmF0aW9uXCIpLGFuaW1hdGlvbnN0YXJ0OlZlKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25TdGFydFwiKSx0cmFuc2l0aW9uZW5kOlZlKFwiVHJhbnNpdGlvblwiLFwiVHJhbnNpdGlvbkVuZFwiKX0sWGU9e30sWWU9e307XG5pYSYmKFllPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikuc3R5bGUsXCJBbmltYXRpb25FdmVudFwiaW4gd2luZG93fHwoZGVsZXRlIFdlLmFuaW1hdGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIFdlLmFuaW1hdGlvbml0ZXJhdGlvbi5hbmltYXRpb24sZGVsZXRlIFdlLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbiksXCJUcmFuc2l0aW9uRXZlbnRcImluIHdpbmRvd3x8ZGVsZXRlIFdlLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbik7ZnVuY3Rpb24gWmUoYSl7aWYoWGVbYV0pcmV0dXJuIFhlW2FdO2lmKCFXZVthXSlyZXR1cm4gYTt2YXIgYj1XZVthXSxjO2ZvcihjIGluIGIpaWYoYi5oYXNPd25Qcm9wZXJ0eShjKSYmYyBpbiBZZSlyZXR1cm4gWGVbYV09YltjXTtyZXR1cm4gYX12YXIgJGU9WmUoXCJhbmltYXRpb25lbmRcIiksYWY9WmUoXCJhbmltYXRpb25pdGVyYXRpb25cIiksYmY9WmUoXCJhbmltYXRpb25zdGFydFwiKSxjZj1aZShcInRyYW5zaXRpb25lbmRcIiksZGY9bmV3IE1hcCxlZj1cImFib3J0IGF1eENsaWNrIGNhbmNlbCBjYW5QbGF5IGNhblBsYXlUaHJvdWdoIGNsaWNrIGNsb3NlIGNvbnRleHRNZW51IGNvcHkgY3V0IGRyYWcgZHJhZ0VuZCBkcmFnRW50ZXIgZHJhZ0V4aXQgZHJhZ0xlYXZlIGRyYWdPdmVyIGRyYWdTdGFydCBkcm9wIGR1cmF0aW9uQ2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGdvdFBvaW50ZXJDYXB0dXJlIGlucHV0IGludmFsaWQga2V5RG93biBrZXlQcmVzcyBrZXlVcCBsb2FkIGxvYWRlZERhdGEgbG9hZGVkTWV0YWRhdGEgbG9hZFN0YXJ0IGxvc3RQb2ludGVyQ2FwdHVyZSBtb3VzZURvd24gbW91c2VNb3ZlIG1vdXNlT3V0IG1vdXNlT3ZlciBtb3VzZVVwIHBhc3RlIHBhdXNlIHBsYXkgcGxheWluZyBwb2ludGVyQ2FuY2VsIHBvaW50ZXJEb3duIHBvaW50ZXJNb3ZlIHBvaW50ZXJPdXQgcG9pbnRlck92ZXIgcG9pbnRlclVwIHByb2dyZXNzIHJhdGVDaGFuZ2UgcmVzZXQgcmVzaXplIHNlZWtlZCBzZWVraW5nIHN0YWxsZWQgc3VibWl0IHN1c3BlbmQgdGltZVVwZGF0ZSB0b3VjaENhbmNlbCB0b3VjaEVuZCB0b3VjaFN0YXJ0IHZvbHVtZUNoYW5nZSBzY3JvbGwgdG9nZ2xlIHRvdWNoTW92ZSB3YWl0aW5nIHdoZWVsXCIuc3BsaXQoXCIgXCIpO1xuZnVuY3Rpb24gZmYoYSxiKXtkZi5zZXQoYSxiKTtmYShiLFthXSl9Zm9yKHZhciBnZj0wO2dmPGVmLmxlbmd0aDtnZisrKXt2YXIgaGY9ZWZbZ2ZdLGpmPWhmLnRvTG93ZXJDYXNlKCksa2Y9aGZbMF0udG9VcHBlckNhc2UoKStoZi5zbGljZSgxKTtmZihqZixcIm9uXCIra2YpfWZmKCRlLFwib25BbmltYXRpb25FbmRcIik7ZmYoYWYsXCJvbkFuaW1hdGlvbkl0ZXJhdGlvblwiKTtmZihiZixcIm9uQW5pbWF0aW9uU3RhcnRcIik7ZmYoXCJkYmxjbGlja1wiLFwib25Eb3VibGVDbGlja1wiKTtmZihcImZvY3VzaW5cIixcIm9uRm9jdXNcIik7ZmYoXCJmb2N1c291dFwiLFwib25CbHVyXCIpO2ZmKGNmLFwib25UcmFuc2l0aW9uRW5kXCIpO2hhKFwib25Nb3VzZUVudGVyXCIsW1wibW91c2VvdXRcIixcIm1vdXNlb3ZlclwiXSk7aGEoXCJvbk1vdXNlTGVhdmVcIixbXCJtb3VzZW91dFwiLFwibW91c2VvdmVyXCJdKTtoYShcIm9uUG9pbnRlckVudGVyXCIsW1wicG9pbnRlcm91dFwiLFwicG9pbnRlcm92ZXJcIl0pO1xuaGEoXCJvblBvaW50ZXJMZWF2ZVwiLFtcInBvaW50ZXJvdXRcIixcInBvaW50ZXJvdmVyXCJdKTtmYShcIm9uQ2hhbmdlXCIsXCJjaGFuZ2UgY2xpY2sgZm9jdXNpbiBmb2N1c291dCBpbnB1dCBrZXlkb3duIGtleXVwIHNlbGVjdGlvbmNoYW5nZVwiLnNwbGl0KFwiIFwiKSk7ZmEoXCJvblNlbGVjdFwiLFwiZm9jdXNvdXQgY29udGV4dG1lbnUgZHJhZ2VuZCBmb2N1c2luIGtleWRvd24ga2V5dXAgbW91c2Vkb3duIG1vdXNldXAgc2VsZWN0aW9uY2hhbmdlXCIuc3BsaXQoXCIgXCIpKTtmYShcIm9uQmVmb3JlSW5wdXRcIixbXCJjb21wb3NpdGlvbmVuZFwiLFwia2V5cHJlc3NcIixcInRleHRJbnB1dFwiLFwicGFzdGVcIl0pO2ZhKFwib25Db21wb3NpdGlvbkVuZFwiLFwiY29tcG9zaXRpb25lbmQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIikpO2ZhKFwib25Db21wb3NpdGlvblN0YXJ0XCIsXCJjb21wb3NpdGlvbnN0YXJ0IGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpKTtcbmZhKFwib25Db21wb3NpdGlvblVwZGF0ZVwiLFwiY29tcG9zaXRpb251cGRhdGUgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIikpO3ZhciBsZj1cImFib3J0IGNhbnBsYXkgY2FucGxheXRocm91Z2ggZHVyYXRpb25jaGFuZ2UgZW1wdGllZCBlbmNyeXB0ZWQgZW5kZWQgZXJyb3IgbG9hZGVkZGF0YSBsb2FkZWRtZXRhZGF0YSBsb2Fkc3RhcnQgcGF1c2UgcGxheSBwbGF5aW5nIHByb2dyZXNzIHJhdGVjaGFuZ2UgcmVzaXplIHNlZWtlZCBzZWVraW5nIHN0YWxsZWQgc3VzcGVuZCB0aW1ldXBkYXRlIHZvbHVtZWNoYW5nZSB3YWl0aW5nXCIuc3BsaXQoXCIgXCIpLG1mPW5ldyBTZXQoXCJjYW5jZWwgY2xvc2UgaW52YWxpZCBsb2FkIHNjcm9sbCB0b2dnbGVcIi5zcGxpdChcIiBcIikuY29uY2F0KGxmKSk7XG5mdW5jdGlvbiBuZihhLGIsYyl7dmFyIGQ9YS50eXBlfHxcInVua25vd24tZXZlbnRcIjthLmN1cnJlbnRUYXJnZXQ9YztVYihkLGIsdm9pZCAwLGEpO2EuY3VycmVudFRhcmdldD1udWxsfVxuZnVuY3Rpb24gc2UoYSxiKXtiPTAhPT0oYiY0KTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9YVtjXSxlPWQuZXZlbnQ7ZD1kLmxpc3RlbmVyczthOnt2YXIgZj12b2lkIDA7aWYoYilmb3IodmFyIGc9ZC5sZW5ndGgtMTswPD1nO2ctLSl7dmFyIGg9ZFtnXSxrPWguaW5zdGFuY2UsbD1oLmN1cnJlbnRUYXJnZXQ7aD1oLmxpc3RlbmVyO2lmKGshPT1mJiZlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYnJlYWsgYTtuZihlLGgsbCk7Zj1rfWVsc2UgZm9yKGc9MDtnPGQubGVuZ3RoO2crKyl7aD1kW2ddO2s9aC5pbnN0YW5jZTtsPWguY3VycmVudFRhcmdldDtoPWgubGlzdGVuZXI7aWYoayE9PWYmJmUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlicmVhayBhO25mKGUsaCxsKTtmPWt9fX1pZihRYil0aHJvdyBhPVJiLFFiPSExLFJiPW51bGwsYTt9XG5mdW5jdGlvbiBEKGEsYil7dmFyIGM9YltvZl07dm9pZCAwPT09YyYmKGM9YltvZl09bmV3IFNldCk7dmFyIGQ9YStcIl9fYnViYmxlXCI7Yy5oYXMoZCl8fChwZihiLGEsMiwhMSksYy5hZGQoZCkpfWZ1bmN0aW9uIHFmKGEsYixjKXt2YXIgZD0wO2ImJihkfD00KTtwZihjLGEsZCxiKX12YXIgcmY9XCJfcmVhY3RMaXN0ZW5pbmdcIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTtmdW5jdGlvbiBzZihhKXtpZighYVtyZl0pe2FbcmZdPSEwO2RhLmZvckVhY2goZnVuY3Rpb24oYil7XCJzZWxlY3Rpb25jaGFuZ2VcIiE9PWImJihtZi5oYXMoYil8fHFmKGIsITEsYSkscWYoYiwhMCxhKSl9KTt2YXIgYj05PT09YS5ub2RlVHlwZT9hOmEub3duZXJEb2N1bWVudDtudWxsPT09Ynx8YltyZl18fChiW3JmXT0hMCxxZihcInNlbGVjdGlvbmNoYW5nZVwiLCExLGIpKX19XG5mdW5jdGlvbiBwZihhLGIsYyxkKXtzd2l0Y2goamQoYikpe2Nhc2UgMTp2YXIgZT1lZDticmVhaztjYXNlIDQ6ZT1nZDticmVhaztkZWZhdWx0OmU9ZmR9Yz1lLmJpbmQobnVsbCxiLGMsYSk7ZT12b2lkIDA7IUxifHxcInRvdWNoc3RhcnRcIiE9PWImJlwidG91Y2htb3ZlXCIhPT1iJiZcIndoZWVsXCIhPT1ifHwoZT0hMCk7ZD92b2lkIDAhPT1lP2EuYWRkRXZlbnRMaXN0ZW5lcihiLGMse2NhcHR1cmU6ITAscGFzc2l2ZTplfSk6YS5hZGRFdmVudExpc3RlbmVyKGIsYywhMCk6dm9pZCAwIT09ZT9hLmFkZEV2ZW50TGlzdGVuZXIoYixjLHtwYXNzaXZlOmV9KTphLmFkZEV2ZW50TGlzdGVuZXIoYixjLCExKX1cbmZ1bmN0aW9uIGhkKGEsYixjLGQsZSl7dmFyIGY9ZDtpZigwPT09KGImMSkmJjA9PT0oYiYyKSYmbnVsbCE9PWQpYTpmb3IoOzspe2lmKG51bGw9PT1kKXJldHVybjt2YXIgZz1kLnRhZztpZigzPT09Z3x8ND09PWcpe3ZhciBoPWQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87aWYoaD09PWV8fDg9PT1oLm5vZGVUeXBlJiZoLnBhcmVudE5vZGU9PT1lKWJyZWFrO2lmKDQ9PT1nKWZvcihnPWQucmV0dXJuO251bGwhPT1nOyl7dmFyIGs9Zy50YWc7aWYoMz09PWt8fDQ9PT1rKWlmKGs9Zy5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyxrPT09ZXx8OD09PWsubm9kZVR5cGUmJmsucGFyZW50Tm9kZT09PWUpcmV0dXJuO2c9Zy5yZXR1cm59Zm9yKDtudWxsIT09aDspe2c9V2MoaCk7aWYobnVsbD09PWcpcmV0dXJuO2s9Zy50YWc7aWYoNT09PWt8fDY9PT1rKXtkPWY9Zztjb250aW51ZSBhfWg9aC5wYXJlbnROb2RlfX1kPWQucmV0dXJufUpiKGZ1bmN0aW9uKCl7dmFyIGQ9ZixlPXhiKGMpLGc9W107XG5hOnt2YXIgaD1kZi5nZXQoYSk7aWYodm9pZCAwIT09aCl7dmFyIGs9dGQsbj1hO3N3aXRjaChhKXtjYXNlIFwia2V5cHJlc3NcIjppZigwPT09b2QoYykpYnJlYWsgYTtjYXNlIFwia2V5ZG93blwiOmNhc2UgXCJrZXl1cFwiOms9UmQ7YnJlYWs7Y2FzZSBcImZvY3VzaW5cIjpuPVwiZm9jdXNcIjtrPUZkO2JyZWFrO2Nhc2UgXCJmb2N1c291dFwiOm49XCJibHVyXCI7az1GZDticmVhaztjYXNlIFwiYmVmb3JlYmx1clwiOmNhc2UgXCJhZnRlcmJsdXJcIjprPUZkO2JyZWFrO2Nhc2UgXCJjbGlja1wiOmlmKDI9PT1jLmJ1dHRvbilicmVhayBhO2Nhc2UgXCJhdXhjbGlja1wiOmNhc2UgXCJkYmxjbGlja1wiOmNhc2UgXCJtb3VzZWRvd25cIjpjYXNlIFwibW91c2Vtb3ZlXCI6Y2FzZSBcIm1vdXNldXBcIjpjYXNlIFwibW91c2VvdXRcIjpjYXNlIFwibW91c2VvdmVyXCI6Y2FzZSBcImNvbnRleHRtZW51XCI6az1CZDticmVhaztjYXNlIFwiZHJhZ1wiOmNhc2UgXCJkcmFnZW5kXCI6Y2FzZSBcImRyYWdlbnRlclwiOmNhc2UgXCJkcmFnZXhpdFwiOmNhc2UgXCJkcmFnbGVhdmVcIjpjYXNlIFwiZHJhZ292ZXJcIjpjYXNlIFwiZHJhZ3N0YXJ0XCI6Y2FzZSBcImRyb3BcIjprPVxuRGQ7YnJlYWs7Y2FzZSBcInRvdWNoY2FuY2VsXCI6Y2FzZSBcInRvdWNoZW5kXCI6Y2FzZSBcInRvdWNobW92ZVwiOmNhc2UgXCJ0b3VjaHN0YXJ0XCI6az1WZDticmVhaztjYXNlICRlOmNhc2UgYWY6Y2FzZSBiZjprPUhkO2JyZWFrO2Nhc2UgY2Y6az1YZDticmVhaztjYXNlIFwic2Nyb2xsXCI6az12ZDticmVhaztjYXNlIFwid2hlZWxcIjprPVpkO2JyZWFrO2Nhc2UgXCJjb3B5XCI6Y2FzZSBcImN1dFwiOmNhc2UgXCJwYXN0ZVwiOms9SmQ7YnJlYWs7Y2FzZSBcImdvdHBvaW50ZXJjYXB0dXJlXCI6Y2FzZSBcImxvc3Rwb2ludGVyY2FwdHVyZVwiOmNhc2UgXCJwb2ludGVyY2FuY2VsXCI6Y2FzZSBcInBvaW50ZXJkb3duXCI6Y2FzZSBcInBvaW50ZXJtb3ZlXCI6Y2FzZSBcInBvaW50ZXJvdXRcIjpjYXNlIFwicG9pbnRlcm92ZXJcIjpjYXNlIFwicG9pbnRlcnVwXCI6az1UZH12YXIgdD0wIT09KGImNCksSj0hdCYmXCJzY3JvbGxcIj09PWEseD10P251bGwhPT1oP2grXCJDYXB0dXJlXCI6bnVsbDpoO3Q9W107Zm9yKHZhciB3PWQsdTtudWxsIT09XG53Oyl7dT13O3ZhciBGPXUuc3RhdGVOb2RlOzU9PT11LnRhZyYmbnVsbCE9PUYmJih1PUYsbnVsbCE9PXgmJihGPUtiKHcseCksbnVsbCE9RiYmdC5wdXNoKHRmKHcsRix1KSkpKTtpZihKKWJyZWFrO3c9dy5yZXR1cm59MDx0Lmxlbmd0aCYmKGg9bmV3IGsoaCxuLG51bGwsYyxlKSxnLnB1c2goe2V2ZW50OmgsbGlzdGVuZXJzOnR9KSl9fWlmKDA9PT0oYiY3KSl7YTp7aD1cIm1vdXNlb3ZlclwiPT09YXx8XCJwb2ludGVyb3ZlclwiPT09YTtrPVwibW91c2VvdXRcIj09PWF8fFwicG9pbnRlcm91dFwiPT09YTtpZihoJiZjIT09d2ImJihuPWMucmVsYXRlZFRhcmdldHx8Yy5mcm9tRWxlbWVudCkmJihXYyhuKXx8blt1Zl0pKWJyZWFrIGE7aWYoa3x8aCl7aD1lLndpbmRvdz09PWU/ZTooaD1lLm93bmVyRG9jdW1lbnQpP2guZGVmYXVsdFZpZXd8fGgucGFyZW50V2luZG93OndpbmRvdztpZihrKXtpZihuPWMucmVsYXRlZFRhcmdldHx8Yy50b0VsZW1lbnQsaz1kLG49bj9XYyhuKTpudWxsLG51bGwhPT1cbm4mJihKPVZiKG4pLG4hPT1KfHw1IT09bi50YWcmJjYhPT1uLnRhZykpbj1udWxsfWVsc2Ugaz1udWxsLG49ZDtpZihrIT09bil7dD1CZDtGPVwib25Nb3VzZUxlYXZlXCI7eD1cIm9uTW91c2VFbnRlclwiO3c9XCJtb3VzZVwiO2lmKFwicG9pbnRlcm91dFwiPT09YXx8XCJwb2ludGVyb3ZlclwiPT09YSl0PVRkLEY9XCJvblBvaW50ZXJMZWF2ZVwiLHg9XCJvblBvaW50ZXJFbnRlclwiLHc9XCJwb2ludGVyXCI7Sj1udWxsPT1rP2g6dWUoayk7dT1udWxsPT1uP2g6dWUobik7aD1uZXcgdChGLHcrXCJsZWF2ZVwiLGssYyxlKTtoLnRhcmdldD1KO2gucmVsYXRlZFRhcmdldD11O0Y9bnVsbDtXYyhlKT09PWQmJih0PW5ldyB0KHgsdytcImVudGVyXCIsbixjLGUpLHQudGFyZ2V0PXUsdC5yZWxhdGVkVGFyZ2V0PUosRj10KTtKPUY7aWYoayYmbiliOnt0PWs7eD1uO3c9MDtmb3IodT10O3U7dT12Zih1KSl3Kys7dT0wO2ZvcihGPXg7RjtGPXZmKEYpKXUrKztmb3IoOzA8dy11Oyl0PXZmKHQpLHctLTtmb3IoOzA8dS13Oyl4PVxudmYoeCksdS0tO2Zvcig7dy0tOyl7aWYodD09PXh8fG51bGwhPT14JiZ0PT09eC5hbHRlcm5hdGUpYnJlYWsgYjt0PXZmKHQpO3g9dmYoeCl9dD1udWxsfWVsc2UgdD1udWxsO251bGwhPT1rJiZ3ZihnLGgsayx0LCExKTtudWxsIT09biYmbnVsbCE9PUomJndmKGcsSixuLHQsITApfX19YTp7aD1kP3VlKGQpOndpbmRvdztrPWgubm9kZU5hbWUmJmgubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihcInNlbGVjdFwiPT09a3x8XCJpbnB1dFwiPT09ayYmXCJmaWxlXCI9PT1oLnR5cGUpdmFyIG5hPXZlO2Vsc2UgaWYobWUoaCkpaWYod2UpbmE9RmU7ZWxzZXtuYT1EZTt2YXIgeGE9Q2V9ZWxzZShrPWgubm9kZU5hbWUpJiZcImlucHV0XCI9PT1rLnRvTG93ZXJDYXNlKCkmJihcImNoZWNrYm94XCI9PT1oLnR5cGV8fFwicmFkaW9cIj09PWgudHlwZSkmJihuYT1FZSk7aWYobmEmJihuYT1uYShhLGQpKSl7bmUoZyxuYSxjLGUpO2JyZWFrIGF9eGEmJnhhKGEsaCxkKTtcImZvY3Vzb3V0XCI9PT1hJiYoeGE9aC5fd3JhcHBlclN0YXRlKSYmXG54YS5jb250cm9sbGVkJiZcIm51bWJlclwiPT09aC50eXBlJiZjYihoLFwibnVtYmVyXCIsaC52YWx1ZSl9eGE9ZD91ZShkKTp3aW5kb3c7c3dpdGNoKGEpe2Nhc2UgXCJmb2N1c2luXCI6aWYobWUoeGEpfHxcInRydWVcIj09PXhhLmNvbnRlbnRFZGl0YWJsZSlRZT14YSxSZT1kLFNlPW51bGw7YnJlYWs7Y2FzZSBcImZvY3Vzb3V0XCI6U2U9UmU9UWU9bnVsbDticmVhaztjYXNlIFwibW91c2Vkb3duXCI6VGU9ITA7YnJlYWs7Y2FzZSBcImNvbnRleHRtZW51XCI6Y2FzZSBcIm1vdXNldXBcIjpjYXNlIFwiZHJhZ2VuZFwiOlRlPSExO1VlKGcsYyxlKTticmVhaztjYXNlIFwic2VsZWN0aW9uY2hhbmdlXCI6aWYoUGUpYnJlYWs7Y2FzZSBcImtleWRvd25cIjpjYXNlIFwia2V5dXBcIjpVZShnLGMsZSl9dmFyICRhO2lmKGFlKWI6e3N3aXRjaChhKXtjYXNlIFwiY29tcG9zaXRpb25zdGFydFwiOnZhciBiYT1cIm9uQ29tcG9zaXRpb25TdGFydFwiO2JyZWFrIGI7Y2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6YmE9XCJvbkNvbXBvc2l0aW9uRW5kXCI7XG5icmVhayBiO2Nhc2UgXCJjb21wb3NpdGlvbnVwZGF0ZVwiOmJhPVwib25Db21wb3NpdGlvblVwZGF0ZVwiO2JyZWFrIGJ9YmE9dm9pZCAwfWVsc2UgaWU/Z2UoYSxjKSYmKGJhPVwib25Db21wb3NpdGlvbkVuZFwiKTpcImtleWRvd25cIj09PWEmJjIyOT09PWMua2V5Q29kZSYmKGJhPVwib25Db21wb3NpdGlvblN0YXJ0XCIpO2JhJiYoZGUmJlwia29cIiE9PWMubG9jYWxlJiYoaWV8fFwib25Db21wb3NpdGlvblN0YXJ0XCIhPT1iYT9cIm9uQ29tcG9zaXRpb25FbmRcIj09PWJhJiZpZSYmKCRhPW5kKCkpOihrZD1lLGxkPVwidmFsdWVcImluIGtkP2tkLnZhbHVlOmtkLnRleHRDb250ZW50LGllPSEwKSkseGE9b2UoZCxiYSksMDx4YS5sZW5ndGgmJihiYT1uZXcgTGQoYmEsYSxudWxsLGMsZSksZy5wdXNoKHtldmVudDpiYSxsaXN0ZW5lcnM6eGF9KSwkYT9iYS5kYXRhPSRhOigkYT1oZShjKSxudWxsIT09JGEmJihiYS5kYXRhPSRhKSkpKTtpZigkYT1jZT9qZShhLGMpOmtlKGEsYykpZD1vZShkLFwib25CZWZvcmVJbnB1dFwiKSxcbjA8ZC5sZW5ndGgmJihlPW5ldyBMZChcIm9uQmVmb3JlSW5wdXRcIixcImJlZm9yZWlucHV0XCIsbnVsbCxjLGUpLGcucHVzaCh7ZXZlbnQ6ZSxsaXN0ZW5lcnM6ZH0pLGUuZGF0YT0kYSl9c2UoZyxiKX0pfWZ1bmN0aW9uIHRmKGEsYixjKXtyZXR1cm57aW5zdGFuY2U6YSxsaXN0ZW5lcjpiLGN1cnJlbnRUYXJnZXQ6Y319ZnVuY3Rpb24gb2UoYSxiKXtmb3IodmFyIGM9YitcIkNhcHR1cmVcIixkPVtdO251bGwhPT1hOyl7dmFyIGU9YSxmPWUuc3RhdGVOb2RlOzU9PT1lLnRhZyYmbnVsbCE9PWYmJihlPWYsZj1LYihhLGMpLG51bGwhPWYmJmQudW5zaGlmdCh0ZihhLGYsZSkpLGY9S2IoYSxiKSxudWxsIT1mJiZkLnB1c2godGYoYSxmLGUpKSk7YT1hLnJldHVybn1yZXR1cm4gZH1mdW5jdGlvbiB2ZihhKXtpZihudWxsPT09YSlyZXR1cm4gbnVsbDtkbyBhPWEucmV0dXJuO3doaWxlKGEmJjUhPT1hLnRhZyk7cmV0dXJuIGE/YTpudWxsfVxuZnVuY3Rpb24gd2YoYSxiLGMsZCxlKXtmb3IodmFyIGY9Yi5fcmVhY3ROYW1lLGc9W107bnVsbCE9PWMmJmMhPT1kOyl7dmFyIGg9YyxrPWguYWx0ZXJuYXRlLGw9aC5zdGF0ZU5vZGU7aWYobnVsbCE9PWsmJms9PT1kKWJyZWFrOzU9PT1oLnRhZyYmbnVsbCE9PWwmJihoPWwsZT8oaz1LYihjLGYpLG51bGwhPWsmJmcudW5zaGlmdCh0ZihjLGssaCkpKTplfHwoaz1LYihjLGYpLG51bGwhPWsmJmcucHVzaCh0ZihjLGssaCkpKSk7Yz1jLnJldHVybn0wIT09Zy5sZW5ndGgmJmEucHVzaCh7ZXZlbnQ6YixsaXN0ZW5lcnM6Z30pfXZhciB4Zj0vXFxyXFxuPy9nLHlmPS9cXHUwMDAwfFxcdUZGRkQvZztmdW5jdGlvbiB6ZihhKXtyZXR1cm4oXCJzdHJpbmdcIj09PXR5cGVvZiBhP2E6XCJcIithKS5yZXBsYWNlKHhmLFwiXFxuXCIpLnJlcGxhY2UoeWYsXCJcIil9ZnVuY3Rpb24gQWYoYSxiLGMpe2I9emYoYik7aWYoemYoYSkhPT1iJiZjKXRocm93IEVycm9yKHAoNDI1KSk7fWZ1bmN0aW9uIEJmKCl7fVxudmFyIENmPW51bGwsRGY9bnVsbDtmdW5jdGlvbiBFZihhLGIpe3JldHVyblwidGV4dGFyZWFcIj09PWF8fFwibm9zY3JpcHRcIj09PWF8fFwic3RyaW5nXCI9PT10eXBlb2YgYi5jaGlsZHJlbnx8XCJudW1iZXJcIj09PXR5cGVvZiBiLmNoaWxkcmVufHxcIm9iamVjdFwiPT09dHlwZW9mIGIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJm51bGwhPT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbH1cbnZhciBGZj1cImZ1bmN0aW9uXCI9PT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0OnZvaWQgMCxHZj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDp2b2lkIDAsSGY9XCJmdW5jdGlvblwiPT09dHlwZW9mIFByb21pc2U/UHJvbWlzZTp2b2lkIDAsSmY9XCJmdW5jdGlvblwiPT09dHlwZW9mIHF1ZXVlTWljcm90YXNrP3F1ZXVlTWljcm90YXNrOlwidW5kZWZpbmVkXCIhPT10eXBlb2YgSGY/ZnVuY3Rpb24oYSl7cmV0dXJuIEhmLnJlc29sdmUobnVsbCkudGhlbihhKS5jYXRjaChJZil9OkZmO2Z1bmN0aW9uIElmKGEpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBhO30pfVxuZnVuY3Rpb24gS2YoYSxiKXt2YXIgYz1iLGQ9MDtkb3t2YXIgZT1jLm5leHRTaWJsaW5nO2EucmVtb3ZlQ2hpbGQoYyk7aWYoZSYmOD09PWUubm9kZVR5cGUpaWYoYz1lLmRhdGEsXCIvJFwiPT09Yyl7aWYoMD09PWQpe2EucmVtb3ZlQ2hpbGQoZSk7YmQoYik7cmV0dXJufWQtLX1lbHNlXCIkXCIhPT1jJiZcIiQ/XCIhPT1jJiZcIiQhXCIhPT1jfHxkKys7Yz1lfXdoaWxlKGMpO2JkKGIpfWZ1bmN0aW9uIExmKGEpe2Zvcig7bnVsbCE9YTthPWEubmV4dFNpYmxpbmcpe3ZhciBiPWEubm9kZVR5cGU7aWYoMT09PWJ8fDM9PT1iKWJyZWFrO2lmKDg9PT1iKXtiPWEuZGF0YTtpZihcIiRcIj09PWJ8fFwiJCFcIj09PWJ8fFwiJD9cIj09PWIpYnJlYWs7aWYoXCIvJFwiPT09YilyZXR1cm4gbnVsbH19cmV0dXJuIGF9XG5mdW5jdGlvbiBNZihhKXthPWEucHJldmlvdXNTaWJsaW5nO2Zvcih2YXIgYj0wO2E7KXtpZig4PT09YS5ub2RlVHlwZSl7dmFyIGM9YS5kYXRhO2lmKFwiJFwiPT09Y3x8XCIkIVwiPT09Y3x8XCIkP1wiPT09Yyl7aWYoMD09PWIpcmV0dXJuIGE7Yi0tfWVsc2VcIi8kXCI9PT1jJiZiKyt9YT1hLnByZXZpb3VzU2libGluZ31yZXR1cm4gbnVsbH12YXIgTmY9TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiksT2Y9XCJfX3JlYWN0RmliZXIkXCIrTmYsUGY9XCJfX3JlYWN0UHJvcHMkXCIrTmYsdWY9XCJfX3JlYWN0Q29udGFpbmVyJFwiK05mLG9mPVwiX19yZWFjdEV2ZW50cyRcIitOZixRZj1cIl9fcmVhY3RMaXN0ZW5lcnMkXCIrTmYsUmY9XCJfX3JlYWN0SGFuZGxlcyRcIitOZjtcbmZ1bmN0aW9uIFdjKGEpe3ZhciBiPWFbT2ZdO2lmKGIpcmV0dXJuIGI7Zm9yKHZhciBjPWEucGFyZW50Tm9kZTtjOyl7aWYoYj1jW3VmXXx8Y1tPZl0pe2M9Yi5hbHRlcm5hdGU7aWYobnVsbCE9PWIuY2hpbGR8fG51bGwhPT1jJiZudWxsIT09Yy5jaGlsZClmb3IoYT1NZihhKTtudWxsIT09YTspe2lmKGM9YVtPZl0pcmV0dXJuIGM7YT1NZihhKX1yZXR1cm4gYn1hPWM7Yz1hLnBhcmVudE5vZGV9cmV0dXJuIG51bGx9ZnVuY3Rpb24gQ2IoYSl7YT1hW09mXXx8YVt1Zl07cmV0dXJuIWF8fDUhPT1hLnRhZyYmNiE9PWEudGFnJiYxMyE9PWEudGFnJiYzIT09YS50YWc/bnVsbDphfWZ1bmN0aW9uIHVlKGEpe2lmKDU9PT1hLnRhZ3x8Nj09PWEudGFnKXJldHVybiBhLnN0YXRlTm9kZTt0aHJvdyBFcnJvcihwKDMzKSk7fWZ1bmN0aW9uIERiKGEpe3JldHVybiBhW1BmXXx8bnVsbH12YXIgU2Y9W10sVGY9LTE7ZnVuY3Rpb24gVWYoYSl7cmV0dXJue2N1cnJlbnQ6YX19XG5mdW5jdGlvbiBFKGEpezA+VGZ8fChhLmN1cnJlbnQ9U2ZbVGZdLFNmW1RmXT1udWxsLFRmLS0pfWZ1bmN0aW9uIEcoYSxiKXtUZisrO1NmW1RmXT1hLmN1cnJlbnQ7YS5jdXJyZW50PWJ9dmFyIFZmPXt9LEg9VWYoVmYpLFdmPVVmKCExKSxYZj1WZjtmdW5jdGlvbiBZZihhLGIpe3ZhciBjPWEudHlwZS5jb250ZXh0VHlwZXM7aWYoIWMpcmV0dXJuIFZmO3ZhciBkPWEuc3RhdGVOb2RlO2lmKGQmJmQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD09PWIpcmV0dXJuIGQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ7dmFyIGU9e30sZjtmb3IoZiBpbiBjKWVbZl09YltmXTtkJiYoYT1hLnN0YXRlTm9kZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9YixhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0PWUpO3JldHVybiBlfVxuZnVuY3Rpb24gWmYoYSl7YT1hLmNoaWxkQ29udGV4dFR5cGVzO3JldHVybiBudWxsIT09YSYmdm9pZCAwIT09YX1mdW5jdGlvbiAkZigpe0UoV2YpO0UoSCl9ZnVuY3Rpb24gYWcoYSxiLGMpe2lmKEguY3VycmVudCE9PVZmKXRocm93IEVycm9yKHAoMTY4KSk7RyhILGIpO0coV2YsYyl9ZnVuY3Rpb24gYmcoYSxiLGMpe3ZhciBkPWEuc3RhdGVOb2RlO2I9Yi5jaGlsZENvbnRleHRUeXBlcztpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgZC5nZXRDaGlsZENvbnRleHQpcmV0dXJuIGM7ZD1kLmdldENoaWxkQ29udGV4dCgpO2Zvcih2YXIgZSBpbiBkKWlmKCEoZSBpbiBiKSl0aHJvdyBFcnJvcihwKDEwOCxSYShhKXx8XCJVbmtub3duXCIsZSkpO3JldHVybiBBKHt9LGMsZCl9XG5mdW5jdGlvbiBjZyhhKXthPShhPWEuc3RhdGVOb2RlKSYmYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dHx8VmY7WGY9SC5jdXJyZW50O0coSCxhKTtHKFdmLFdmLmN1cnJlbnQpO3JldHVybiEwfWZ1bmN0aW9uIGRnKGEsYixjKXt2YXIgZD1hLnN0YXRlTm9kZTtpZighZCl0aHJvdyBFcnJvcihwKDE2OSkpO2M/KGE9YmcoYSxiLFhmKSxkLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0PWEsRShXZiksRShIKSxHKEgsYSkpOkUoV2YpO0coV2YsYyl9dmFyIGVnPW51bGwsZmc9ITEsZ2c9ITE7ZnVuY3Rpb24gaGcoYSl7bnVsbD09PWVnP2VnPVthXTplZy5wdXNoKGEpfWZ1bmN0aW9uIGlnKGEpe2ZnPSEwO2hnKGEpfVxuZnVuY3Rpb24gamcoKXtpZighZ2cmJm51bGwhPT1lZyl7Z2c9ITA7dmFyIGE9MCxiPUM7dHJ5e3ZhciBjPWVnO2ZvcihDPTE7YTxjLmxlbmd0aDthKyspe3ZhciBkPWNbYV07ZG8gZD1kKCEwKTt3aGlsZShudWxsIT09ZCl9ZWc9bnVsbDtmZz0hMX1jYXRjaChlKXt0aHJvdyBudWxsIT09ZWcmJihlZz1lZy5zbGljZShhKzEpKSxhYyhmYyxqZyksZTt9ZmluYWxseXtDPWIsZ2c9ITF9fXJldHVybiBudWxsfXZhciBrZz1bXSxsZz0wLG1nPW51bGwsbmc9MCxvZz1bXSxwZz0wLHFnPW51bGwscmc9MSxzZz1cIlwiO2Z1bmN0aW9uIHRnKGEsYil7a2dbbGcrK109bmc7a2dbbGcrK109bWc7bWc9YTtuZz1ifVxuZnVuY3Rpb24gdWcoYSxiLGMpe29nW3BnKytdPXJnO29nW3BnKytdPXNnO29nW3BnKytdPXFnO3FnPWE7dmFyIGQ9cmc7YT1zZzt2YXIgZT0zMi1vYyhkKS0xO2QmPX4oMTw8ZSk7Yys9MTt2YXIgZj0zMi1vYyhiKStlO2lmKDMwPGYpe3ZhciBnPWUtZSU1O2Y9KGQmKDE8PGcpLTEpLnRvU3RyaW5nKDMyKTtkPj49ZztlLT1nO3JnPTE8PDMyLW9jKGIpK2V8Yzw8ZXxkO3NnPWYrYX1lbHNlIHJnPTE8PGZ8Yzw8ZXxkLHNnPWF9ZnVuY3Rpb24gdmcoYSl7bnVsbCE9PWEucmV0dXJuJiYodGcoYSwxKSx1ZyhhLDEsMCkpfWZ1bmN0aW9uIHdnKGEpe2Zvcig7YT09PW1nOyltZz1rZ1stLWxnXSxrZ1tsZ109bnVsbCxuZz1rZ1stLWxnXSxrZ1tsZ109bnVsbDtmb3IoO2E9PT1xZzspcWc9b2dbLS1wZ10sb2dbcGddPW51bGwsc2c9b2dbLS1wZ10sb2dbcGddPW51bGwscmc9b2dbLS1wZ10sb2dbcGddPW51bGx9dmFyIHhnPW51bGwseWc9bnVsbCxJPSExLHpnPW51bGw7XG5mdW5jdGlvbiBBZyhhLGIpe3ZhciBjPUJnKDUsbnVsbCxudWxsLDApO2MuZWxlbWVudFR5cGU9XCJERUxFVEVEXCI7Yy5zdGF0ZU5vZGU9YjtjLnJldHVybj1hO2I9YS5kZWxldGlvbnM7bnVsbD09PWI/KGEuZGVsZXRpb25zPVtjXSxhLmZsYWdzfD0xNik6Yi5wdXNoKGMpfVxuZnVuY3Rpb24gQ2coYSxiKXtzd2l0Y2goYS50YWcpe2Nhc2UgNTp2YXIgYz1hLnR5cGU7Yj0xIT09Yi5ub2RlVHlwZXx8Yy50b0xvd2VyQ2FzZSgpIT09Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP251bGw6YjtyZXR1cm4gbnVsbCE9PWI/KGEuc3RhdGVOb2RlPWIseGc9YSx5Zz1MZihiLmZpcnN0Q2hpbGQpLCEwKTohMTtjYXNlIDY6cmV0dXJuIGI9XCJcIj09PWEucGVuZGluZ1Byb3BzfHwzIT09Yi5ub2RlVHlwZT9udWxsOmIsbnVsbCE9PWI/KGEuc3RhdGVOb2RlPWIseGc9YSx5Zz1udWxsLCEwKTohMTtjYXNlIDEzOnJldHVybiBiPTghPT1iLm5vZGVUeXBlP251bGw6YixudWxsIT09Yj8oYz1udWxsIT09cWc/e2lkOnJnLG92ZXJmbG93OnNnfTpudWxsLGEubWVtb2l6ZWRTdGF0ZT17ZGVoeWRyYXRlZDpiLHRyZWVDb250ZXh0OmMscmV0cnlMYW5lOjEwNzM3NDE4MjR9LGM9QmcoMTgsbnVsbCxudWxsLDApLGMuc3RhdGVOb2RlPWIsYy5yZXR1cm49YSxhLmNoaWxkPWMseGc9YSx5Zz1cbm51bGwsITApOiExO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIERnKGEpe3JldHVybiAwIT09KGEubW9kZSYxKSYmMD09PShhLmZsYWdzJjEyOCl9ZnVuY3Rpb24gRWcoYSl7aWYoSSl7dmFyIGI9eWc7aWYoYil7dmFyIGM9YjtpZighQ2coYSxiKSl7aWYoRGcoYSkpdGhyb3cgRXJyb3IocCg0MTgpKTtiPUxmKGMubmV4dFNpYmxpbmcpO3ZhciBkPXhnO2ImJkNnKGEsYik/QWcoZCxjKTooYS5mbGFncz1hLmZsYWdzJi00MDk3fDIsST0hMSx4Zz1hKX19ZWxzZXtpZihEZyhhKSl0aHJvdyBFcnJvcihwKDQxOCkpO2EuZmxhZ3M9YS5mbGFncyYtNDA5N3wyO0k9ITE7eGc9YX19fWZ1bmN0aW9uIEZnKGEpe2ZvcihhPWEucmV0dXJuO251bGwhPT1hJiY1IT09YS50YWcmJjMhPT1hLnRhZyYmMTMhPT1hLnRhZzspYT1hLnJldHVybjt4Zz1hfVxuZnVuY3Rpb24gR2coYSl7aWYoYSE9PXhnKXJldHVybiExO2lmKCFJKXJldHVybiBGZyhhKSxJPSEwLCExO3ZhciBiOyhiPTMhPT1hLnRhZykmJiEoYj01IT09YS50YWcpJiYoYj1hLnR5cGUsYj1cImhlYWRcIiE9PWImJlwiYm9keVwiIT09YiYmIUVmKGEudHlwZSxhLm1lbW9pemVkUHJvcHMpKTtpZihiJiYoYj15Zykpe2lmKERnKGEpKXRocm93IEhnKCksRXJyb3IocCg0MTgpKTtmb3IoO2I7KUFnKGEsYiksYj1MZihiLm5leHRTaWJsaW5nKX1GZyhhKTtpZigxMz09PWEudGFnKXthPWEubWVtb2l6ZWRTdGF0ZTthPW51bGwhPT1hP2EuZGVoeWRyYXRlZDpudWxsO2lmKCFhKXRocm93IEVycm9yKHAoMzE3KSk7YTp7YT1hLm5leHRTaWJsaW5nO2ZvcihiPTA7YTspe2lmKDg9PT1hLm5vZGVUeXBlKXt2YXIgYz1hLmRhdGE7aWYoXCIvJFwiPT09Yyl7aWYoMD09PWIpe3lnPUxmKGEubmV4dFNpYmxpbmcpO2JyZWFrIGF9Yi0tfWVsc2VcIiRcIiE9PWMmJlwiJCFcIiE9PWMmJlwiJD9cIiE9PWN8fGIrK31hPWEubmV4dFNpYmxpbmd9eWc9XG5udWxsfX1lbHNlIHlnPXhnP0xmKGEuc3RhdGVOb2RlLm5leHRTaWJsaW5nKTpudWxsO3JldHVybiEwfWZ1bmN0aW9uIEhnKCl7Zm9yKHZhciBhPXlnO2E7KWE9TGYoYS5uZXh0U2libGluZyl9ZnVuY3Rpb24gSWcoKXt5Zz14Zz1udWxsO0k9ITF9ZnVuY3Rpb24gSmcoYSl7bnVsbD09PXpnP3pnPVthXTp6Zy5wdXNoKGEpfXZhciBLZz11YS5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZztcbmZ1bmN0aW9uIExnKGEsYixjKXthPWMucmVmO2lmKG51bGwhPT1hJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgYSYmXCJvYmplY3RcIiE9PXR5cGVvZiBhKXtpZihjLl9vd25lcil7Yz1jLl9vd25lcjtpZihjKXtpZigxIT09Yy50YWcpdGhyb3cgRXJyb3IocCgzMDkpKTt2YXIgZD1jLnN0YXRlTm9kZX1pZighZCl0aHJvdyBFcnJvcihwKDE0NyxhKSk7dmFyIGU9ZCxmPVwiXCIrYTtpZihudWxsIT09YiYmbnVsbCE9PWIucmVmJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5yZWYmJmIucmVmLl9zdHJpbmdSZWY9PT1mKXJldHVybiBiLnJlZjtiPWZ1bmN0aW9uKGEpe3ZhciBiPWUucmVmcztudWxsPT09YT9kZWxldGUgYltmXTpiW2ZdPWF9O2IuX3N0cmluZ1JlZj1mO3JldHVybiBifWlmKFwic3RyaW5nXCIhPT10eXBlb2YgYSl0aHJvdyBFcnJvcihwKDI4NCkpO2lmKCFjLl9vd25lcil0aHJvdyBFcnJvcihwKDI5MCxhKSk7fXJldHVybiBhfVxuZnVuY3Rpb24gTWcoYSxiKXthPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChiKTt0aHJvdyBFcnJvcihwKDMxLFwiW29iamVjdCBPYmplY3RdXCI9PT1hP1wib2JqZWN0IHdpdGgga2V5cyB7XCIrT2JqZWN0LmtleXMoYikuam9pbihcIiwgXCIpK1wifVwiOmEpKTt9ZnVuY3Rpb24gTmcoYSl7dmFyIGI9YS5faW5pdDtyZXR1cm4gYihhLl9wYXlsb2FkKX1cbmZ1bmN0aW9uIE9nKGEpe2Z1bmN0aW9uIGIoYixjKXtpZihhKXt2YXIgZD1iLmRlbGV0aW9ucztudWxsPT09ZD8oYi5kZWxldGlvbnM9W2NdLGIuZmxhZ3N8PTE2KTpkLnB1c2goYyl9fWZ1bmN0aW9uIGMoYyxkKXtpZighYSlyZXR1cm4gbnVsbDtmb3IoO251bGwhPT1kOyliKGMsZCksZD1kLnNpYmxpbmc7cmV0dXJuIG51bGx9ZnVuY3Rpb24gZChhLGIpe2ZvcihhPW5ldyBNYXA7bnVsbCE9PWI7KW51bGwhPT1iLmtleT9hLnNldChiLmtleSxiKTphLnNldChiLmluZGV4LGIpLGI9Yi5zaWJsaW5nO3JldHVybiBhfWZ1bmN0aW9uIGUoYSxiKXthPVBnKGEsYik7YS5pbmRleD0wO2Euc2libGluZz1udWxsO3JldHVybiBhfWZ1bmN0aW9uIGYoYixjLGQpe2IuaW5kZXg9ZDtpZighYSlyZXR1cm4gYi5mbGFnc3w9MTA0ODU3NixjO2Q9Yi5hbHRlcm5hdGU7aWYobnVsbCE9PWQpcmV0dXJuIGQ9ZC5pbmRleCxkPGM/KGIuZmxhZ3N8PTIsYyk6ZDtiLmZsYWdzfD0yO3JldHVybiBjfWZ1bmN0aW9uIGcoYil7YSYmXG5udWxsPT09Yi5hbHRlcm5hdGUmJihiLmZsYWdzfD0yKTtyZXR1cm4gYn1mdW5jdGlvbiBoKGEsYixjLGQpe2lmKG51bGw9PT1ifHw2IT09Yi50YWcpcmV0dXJuIGI9UWcoYyxhLm1vZGUsZCksYi5yZXR1cm49YSxiO2I9ZShiLGMpO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24gayhhLGIsYyxkKXt2YXIgZj1jLnR5cGU7aWYoZj09PXlhKXJldHVybiBtKGEsYixjLnByb3BzLmNoaWxkcmVuLGQsYy5rZXkpO2lmKG51bGwhPT1iJiYoYi5lbGVtZW50VHlwZT09PWZ8fFwib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWYmJmYuJCR0eXBlb2Y9PT1IYSYmTmcoZik9PT1iLnR5cGUpKXJldHVybiBkPWUoYixjLnByb3BzKSxkLnJlZj1MZyhhLGIsYyksZC5yZXR1cm49YSxkO2Q9UmcoYy50eXBlLGMua2V5LGMucHJvcHMsbnVsbCxhLm1vZGUsZCk7ZC5yZWY9TGcoYSxiLGMpO2QucmV0dXJuPWE7cmV0dXJuIGR9ZnVuY3Rpb24gbChhLGIsYyxkKXtpZihudWxsPT09Ynx8NCE9PWIudGFnfHxcbmIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8hPT1jLmNvbnRhaW5lckluZm98fGIuc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uIT09Yy5pbXBsZW1lbnRhdGlvbilyZXR1cm4gYj1TZyhjLGEubW9kZSxkKSxiLnJldHVybj1hLGI7Yj1lKGIsYy5jaGlsZHJlbnx8W10pO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24gbShhLGIsYyxkLGYpe2lmKG51bGw9PT1ifHw3IT09Yi50YWcpcmV0dXJuIGI9VGcoYyxhLm1vZGUsZCxmKSxiLnJldHVybj1hLGI7Yj1lKGIsYyk7Yi5yZXR1cm49YTtyZXR1cm4gYn1mdW5jdGlvbiBxKGEsYixjKXtpZihcInN0cmluZ1wiPT09dHlwZW9mIGImJlwiXCIhPT1ifHxcIm51bWJlclwiPT09dHlwZW9mIGIpcmV0dXJuIGI9UWcoXCJcIitiLGEubW9kZSxjKSxiLnJldHVybj1hLGI7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBiJiZudWxsIT09Yil7c3dpdGNoKGIuJCR0eXBlb2Ype2Nhc2UgdmE6cmV0dXJuIGM9UmcoYi50eXBlLGIua2V5LGIucHJvcHMsbnVsbCxhLm1vZGUsYyksXG5jLnJlZj1MZyhhLG51bGwsYiksYy5yZXR1cm49YSxjO2Nhc2Ugd2E6cmV0dXJuIGI9U2coYixhLm1vZGUsYyksYi5yZXR1cm49YSxiO2Nhc2UgSGE6dmFyIGQ9Yi5faW5pdDtyZXR1cm4gcShhLGQoYi5fcGF5bG9hZCksYyl9aWYoZWIoYil8fEthKGIpKXJldHVybiBiPVRnKGIsYS5tb2RlLGMsbnVsbCksYi5yZXR1cm49YSxiO01nKGEsYil9cmV0dXJuIG51bGx9ZnVuY3Rpb24gcihhLGIsYyxkKXt2YXIgZT1udWxsIT09Yj9iLmtleTpudWxsO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYyYmXCJcIiE9PWN8fFwibnVtYmVyXCI9PT10eXBlb2YgYylyZXR1cm4gbnVsbCE9PWU/bnVsbDpoKGEsYixcIlwiK2MsZCk7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBjJiZudWxsIT09Yyl7c3dpdGNoKGMuJCR0eXBlb2Ype2Nhc2UgdmE6cmV0dXJuIGMua2V5PT09ZT9rKGEsYixjLGQpOm51bGw7Y2FzZSB3YTpyZXR1cm4gYy5rZXk9PT1lP2woYSxiLGMsZCk6bnVsbDtjYXNlIEhhOnJldHVybiBlPWMuX2luaXQscihhLFxuYixlKGMuX3BheWxvYWQpLGQpfWlmKGViKGMpfHxLYShjKSlyZXR1cm4gbnVsbCE9PWU/bnVsbDptKGEsYixjLGQsbnVsbCk7TWcoYSxjKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB5KGEsYixjLGQsZSl7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBkJiZcIlwiIT09ZHx8XCJudW1iZXJcIj09PXR5cGVvZiBkKXJldHVybiBhPWEuZ2V0KGMpfHxudWxsLGgoYixhLFwiXCIrZCxlKTtpZihcIm9iamVjdFwiPT09dHlwZW9mIGQmJm51bGwhPT1kKXtzd2l0Y2goZC4kJHR5cGVvZil7Y2FzZSB2YTpyZXR1cm4gYT1hLmdldChudWxsPT09ZC5rZXk/YzpkLmtleSl8fG51bGwsayhiLGEsZCxlKTtjYXNlIHdhOnJldHVybiBhPWEuZ2V0KG51bGw9PT1kLmtleT9jOmQua2V5KXx8bnVsbCxsKGIsYSxkLGUpO2Nhc2UgSGE6dmFyIGY9ZC5faW5pdDtyZXR1cm4geShhLGIsYyxmKGQuX3BheWxvYWQpLGUpfWlmKGViKGQpfHxLYShkKSlyZXR1cm4gYT1hLmdldChjKXx8bnVsbCxtKGIsYSxkLGUsbnVsbCk7TWcoYixkKX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIG4oZSxnLGgsayl7Zm9yKHZhciBsPW51bGwsbT1udWxsLHU9Zyx3PWc9MCx4PW51bGw7bnVsbCE9PXUmJnc8aC5sZW5ndGg7dysrKXt1LmluZGV4Pnc/KHg9dSx1PW51bGwpOng9dS5zaWJsaW5nO3ZhciBuPXIoZSx1LGhbd10sayk7aWYobnVsbD09PW4pe251bGw9PT11JiYodT14KTticmVha31hJiZ1JiZudWxsPT09bi5hbHRlcm5hdGUmJmIoZSx1KTtnPWYobixnLHcpO251bGw9PT1tP2w9bjptLnNpYmxpbmc9bjttPW47dT14fWlmKHc9PT1oLmxlbmd0aClyZXR1cm4gYyhlLHUpLEkmJnRnKGUsdyksbDtpZihudWxsPT09dSl7Zm9yKDt3PGgubGVuZ3RoO3crKyl1PXEoZSxoW3ddLGspLG51bGwhPT11JiYoZz1mKHUsZyx3KSxudWxsPT09bT9sPXU6bS5zaWJsaW5nPXUsbT11KTtJJiZ0ZyhlLHcpO3JldHVybiBsfWZvcih1PWQoZSx1KTt3PGgubGVuZ3RoO3crKyl4PXkodSxlLHcsaFt3XSxrKSxudWxsIT09eCYmKGEmJm51bGwhPT14LmFsdGVybmF0ZSYmdS5kZWxldGUobnVsbD09PVxueC5rZXk/dzp4LmtleSksZz1mKHgsZyx3KSxudWxsPT09bT9sPXg6bS5zaWJsaW5nPXgsbT14KTthJiZ1LmZvckVhY2goZnVuY3Rpb24oYSl7cmV0dXJuIGIoZSxhKX0pO0kmJnRnKGUsdyk7cmV0dXJuIGx9ZnVuY3Rpb24gdChlLGcsaCxrKXt2YXIgbD1LYShoKTtpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgbCl0aHJvdyBFcnJvcihwKDE1MCkpO2g9bC5jYWxsKGgpO2lmKG51bGw9PWgpdGhyb3cgRXJyb3IocCgxNTEpKTtmb3IodmFyIHU9bD1udWxsLG09Zyx3PWc9MCx4PW51bGwsbj1oLm5leHQoKTtudWxsIT09bSYmIW4uZG9uZTt3Kyssbj1oLm5leHQoKSl7bS5pbmRleD53Pyh4PW0sbT1udWxsKTp4PW0uc2libGluZzt2YXIgdD1yKGUsbSxuLnZhbHVlLGspO2lmKG51bGw9PT10KXtudWxsPT09bSYmKG09eCk7YnJlYWt9YSYmbSYmbnVsbD09PXQuYWx0ZXJuYXRlJiZiKGUsbSk7Zz1mKHQsZyx3KTtudWxsPT09dT9sPXQ6dS5zaWJsaW5nPXQ7dT10O209eH1pZihuLmRvbmUpcmV0dXJuIGMoZSxcbm0pLEkmJnRnKGUsdyksbDtpZihudWxsPT09bSl7Zm9yKDshbi5kb25lO3crKyxuPWgubmV4dCgpKW49cShlLG4udmFsdWUsayksbnVsbCE9PW4mJihnPWYobixnLHcpLG51bGw9PT11P2w9bjp1LnNpYmxpbmc9bix1PW4pO0kmJnRnKGUsdyk7cmV0dXJuIGx9Zm9yKG09ZChlLG0pOyFuLmRvbmU7dysrLG49aC5uZXh0KCkpbj15KG0sZSx3LG4udmFsdWUsayksbnVsbCE9PW4mJihhJiZudWxsIT09bi5hbHRlcm5hdGUmJm0uZGVsZXRlKG51bGw9PT1uLmtleT93Om4ua2V5KSxnPWYobixnLHcpLG51bGw9PT11P2w9bjp1LnNpYmxpbmc9bix1PW4pO2EmJm0uZm9yRWFjaChmdW5jdGlvbihhKXtyZXR1cm4gYihlLGEpfSk7SSYmdGcoZSx3KTtyZXR1cm4gbH1mdW5jdGlvbiBKKGEsZCxmLGgpe1wib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWYmJmYudHlwZT09PXlhJiZudWxsPT09Zi5rZXkmJihmPWYucHJvcHMuY2hpbGRyZW4pO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWYpe3N3aXRjaChmLiQkdHlwZW9mKXtjYXNlIHZhOmE6e2Zvcih2YXIgaz1cbmYua2V5LGw9ZDtudWxsIT09bDspe2lmKGwua2V5PT09ayl7az1mLnR5cGU7aWYoaz09PXlhKXtpZig3PT09bC50YWcpe2MoYSxsLnNpYmxpbmcpO2Q9ZShsLGYucHJvcHMuY2hpbGRyZW4pO2QucmV0dXJuPWE7YT1kO2JyZWFrIGF9fWVsc2UgaWYobC5lbGVtZW50VHlwZT09PWt8fFwib2JqZWN0XCI9PT10eXBlb2YgayYmbnVsbCE9PWsmJmsuJCR0eXBlb2Y9PT1IYSYmTmcoayk9PT1sLnR5cGUpe2MoYSxsLnNpYmxpbmcpO2Q9ZShsLGYucHJvcHMpO2QucmVmPUxnKGEsbCxmKTtkLnJldHVybj1hO2E9ZDticmVhayBhfWMoYSxsKTticmVha31lbHNlIGIoYSxsKTtsPWwuc2libGluZ31mLnR5cGU9PT15YT8oZD1UZyhmLnByb3BzLmNoaWxkcmVuLGEubW9kZSxoLGYua2V5KSxkLnJldHVybj1hLGE9ZCk6KGg9UmcoZi50eXBlLGYua2V5LGYucHJvcHMsbnVsbCxhLm1vZGUsaCksaC5yZWY9TGcoYSxkLGYpLGgucmV0dXJuPWEsYT1oKX1yZXR1cm4gZyhhKTtjYXNlIHdhOmE6e2ZvcihsPWYua2V5O251bGwhPT1cbmQ7KXtpZihkLmtleT09PWwpaWYoND09PWQudGFnJiZkLnN0YXRlTm9kZS5jb250YWluZXJJbmZvPT09Zi5jb250YWluZXJJbmZvJiZkLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbj09PWYuaW1wbGVtZW50YXRpb24pe2MoYSxkLnNpYmxpbmcpO2Q9ZShkLGYuY2hpbGRyZW58fFtdKTtkLnJldHVybj1hO2E9ZDticmVhayBhfWVsc2V7YyhhLGQpO2JyZWFrfWVsc2UgYihhLGQpO2Q9ZC5zaWJsaW5nfWQ9U2coZixhLm1vZGUsaCk7ZC5yZXR1cm49YTthPWR9cmV0dXJuIGcoYSk7Y2FzZSBIYTpyZXR1cm4gbD1mLl9pbml0LEooYSxkLGwoZi5fcGF5bG9hZCksaCl9aWYoZWIoZikpcmV0dXJuIG4oYSxkLGYsaCk7aWYoS2EoZikpcmV0dXJuIHQoYSxkLGYsaCk7TWcoYSxmKX1yZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGYmJlwiXCIhPT1mfHxcIm51bWJlclwiPT09dHlwZW9mIGY/KGY9XCJcIitmLG51bGwhPT1kJiY2PT09ZC50YWc/KGMoYSxkLnNpYmxpbmcpLGQ9ZShkLGYpLGQucmV0dXJuPWEsYT1kKTpcbihjKGEsZCksZD1RZyhmLGEubW9kZSxoKSxkLnJldHVybj1hLGE9ZCksZyhhKSk6YyhhLGQpfXJldHVybiBKfXZhciBVZz1PZyghMCksVmc9T2coITEpLFdnPVVmKG51bGwpLFhnPW51bGwsWWc9bnVsbCxaZz1udWxsO2Z1bmN0aW9uICRnKCl7Wmc9WWc9WGc9bnVsbH1mdW5jdGlvbiBhaChhKXt2YXIgYj1XZy5jdXJyZW50O0UoV2cpO2EuX2N1cnJlbnRWYWx1ZT1ifWZ1bmN0aW9uIGJoKGEsYixjKXtmb3IoO251bGwhPT1hOyl7dmFyIGQ9YS5hbHRlcm5hdGU7KGEuY2hpbGRMYW5lcyZiKSE9PWI/KGEuY2hpbGRMYW5lc3w9YixudWxsIT09ZCYmKGQuY2hpbGRMYW5lc3w9YikpOm51bGwhPT1kJiYoZC5jaGlsZExhbmVzJmIpIT09YiYmKGQuY2hpbGRMYW5lc3w9Yik7aWYoYT09PWMpYnJlYWs7YT1hLnJldHVybn19XG5mdW5jdGlvbiBjaChhLGIpe1hnPWE7Wmc9WWc9bnVsbDthPWEuZGVwZW5kZW5jaWVzO251bGwhPT1hJiZudWxsIT09YS5maXJzdENvbnRleHQmJigwIT09KGEubGFuZXMmYikmJihkaD0hMCksYS5maXJzdENvbnRleHQ9bnVsbCl9ZnVuY3Rpb24gZWgoYSl7dmFyIGI9YS5fY3VycmVudFZhbHVlO2lmKFpnIT09YSlpZihhPXtjb250ZXh0OmEsbWVtb2l6ZWRWYWx1ZTpiLG5leHQ6bnVsbH0sbnVsbD09PVlnKXtpZihudWxsPT09WGcpdGhyb3cgRXJyb3IocCgzMDgpKTtZZz1hO1hnLmRlcGVuZGVuY2llcz17bGFuZXM6MCxmaXJzdENvbnRleHQ6YX19ZWxzZSBZZz1ZZy5uZXh0PWE7cmV0dXJuIGJ9dmFyIGZoPW51bGw7ZnVuY3Rpb24gZ2goYSl7bnVsbD09PWZoP2ZoPVthXTpmaC5wdXNoKGEpfVxuZnVuY3Rpb24gaGgoYSxiLGMsZCl7dmFyIGU9Yi5pbnRlcmxlYXZlZDtudWxsPT09ZT8oYy5uZXh0PWMsZ2goYikpOihjLm5leHQ9ZS5uZXh0LGUubmV4dD1jKTtiLmludGVybGVhdmVkPWM7cmV0dXJuIGloKGEsZCl9ZnVuY3Rpb24gaWgoYSxiKXthLmxhbmVzfD1iO3ZhciBjPWEuYWx0ZXJuYXRlO251bGwhPT1jJiYoYy5sYW5lc3w9Yik7Yz1hO2ZvcihhPWEucmV0dXJuO251bGwhPT1hOylhLmNoaWxkTGFuZXN8PWIsYz1hLmFsdGVybmF0ZSxudWxsIT09YyYmKGMuY2hpbGRMYW5lc3w9YiksYz1hLGE9YS5yZXR1cm47cmV0dXJuIDM9PT1jLnRhZz9jLnN0YXRlTm9kZTpudWxsfXZhciBqaD0hMTtmdW5jdGlvbiBraChhKXthLnVwZGF0ZVF1ZXVlPXtiYXNlU3RhdGU6YS5tZW1vaXplZFN0YXRlLGZpcnN0QmFzZVVwZGF0ZTpudWxsLGxhc3RCYXNlVXBkYXRlOm51bGwsc2hhcmVkOntwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowfSxlZmZlY3RzOm51bGx9fVxuZnVuY3Rpb24gbGgoYSxiKXthPWEudXBkYXRlUXVldWU7Yi51cGRhdGVRdWV1ZT09PWEmJihiLnVwZGF0ZVF1ZXVlPXtiYXNlU3RhdGU6YS5iYXNlU3RhdGUsZmlyc3RCYXNlVXBkYXRlOmEuZmlyc3RCYXNlVXBkYXRlLGxhc3RCYXNlVXBkYXRlOmEubGFzdEJhc2VVcGRhdGUsc2hhcmVkOmEuc2hhcmVkLGVmZmVjdHM6YS5lZmZlY3RzfSl9ZnVuY3Rpb24gbWgoYSxiKXtyZXR1cm57ZXZlbnRUaW1lOmEsbGFuZTpiLHRhZzowLHBheWxvYWQ6bnVsbCxjYWxsYmFjazpudWxsLG5leHQ6bnVsbH19XG5mdW5jdGlvbiBuaChhLGIsYyl7dmFyIGQ9YS51cGRhdGVRdWV1ZTtpZihudWxsPT09ZClyZXR1cm4gbnVsbDtkPWQuc2hhcmVkO2lmKDAhPT0oSyYyKSl7dmFyIGU9ZC5wZW5kaW5nO251bGw9PT1lP2IubmV4dD1iOihiLm5leHQ9ZS5uZXh0LGUubmV4dD1iKTtkLnBlbmRpbmc9YjtyZXR1cm4gaWgoYSxjKX1lPWQuaW50ZXJsZWF2ZWQ7bnVsbD09PWU/KGIubmV4dD1iLGdoKGQpKTooYi5uZXh0PWUubmV4dCxlLm5leHQ9Yik7ZC5pbnRlcmxlYXZlZD1iO3JldHVybiBpaChhLGMpfWZ1bmN0aW9uIG9oKGEsYixjKXtiPWIudXBkYXRlUXVldWU7aWYobnVsbCE9PWImJihiPWIuc2hhcmVkLDAhPT0oYyY0MTk0MjQwKSkpe3ZhciBkPWIubGFuZXM7ZCY9YS5wZW5kaW5nTGFuZXM7Y3w9ZDtiLmxhbmVzPWM7Q2MoYSxjKX19XG5mdW5jdGlvbiBwaChhLGIpe3ZhciBjPWEudXBkYXRlUXVldWUsZD1hLmFsdGVybmF0ZTtpZihudWxsIT09ZCYmKGQ9ZC51cGRhdGVRdWV1ZSxjPT09ZCkpe3ZhciBlPW51bGwsZj1udWxsO2M9Yy5maXJzdEJhc2VVcGRhdGU7aWYobnVsbCE9PWMpe2Rve3ZhciBnPXtldmVudFRpbWU6Yy5ldmVudFRpbWUsbGFuZTpjLmxhbmUsdGFnOmMudGFnLHBheWxvYWQ6Yy5wYXlsb2FkLGNhbGxiYWNrOmMuY2FsbGJhY2ssbmV4dDpudWxsfTtudWxsPT09Zj9lPWY9ZzpmPWYubmV4dD1nO2M9Yy5uZXh0fXdoaWxlKG51bGwhPT1jKTtudWxsPT09Zj9lPWY9YjpmPWYubmV4dD1ifWVsc2UgZT1mPWI7Yz17YmFzZVN0YXRlOmQuYmFzZVN0YXRlLGZpcnN0QmFzZVVwZGF0ZTplLGxhc3RCYXNlVXBkYXRlOmYsc2hhcmVkOmQuc2hhcmVkLGVmZmVjdHM6ZC5lZmZlY3RzfTthLnVwZGF0ZVF1ZXVlPWM7cmV0dXJufWE9Yy5sYXN0QmFzZVVwZGF0ZTtudWxsPT09YT9jLmZpcnN0QmFzZVVwZGF0ZT1iOmEubmV4dD1cbmI7Yy5sYXN0QmFzZVVwZGF0ZT1ifVxuZnVuY3Rpb24gcWgoYSxiLGMsZCl7dmFyIGU9YS51cGRhdGVRdWV1ZTtqaD0hMTt2YXIgZj1lLmZpcnN0QmFzZVVwZGF0ZSxnPWUubGFzdEJhc2VVcGRhdGUsaD1lLnNoYXJlZC5wZW5kaW5nO2lmKG51bGwhPT1oKXtlLnNoYXJlZC5wZW5kaW5nPW51bGw7dmFyIGs9aCxsPWsubmV4dDtrLm5leHQ9bnVsbDtudWxsPT09Zz9mPWw6Zy5uZXh0PWw7Zz1rO3ZhciBtPWEuYWx0ZXJuYXRlO251bGwhPT1tJiYobT1tLnVwZGF0ZVF1ZXVlLGg9bS5sYXN0QmFzZVVwZGF0ZSxoIT09ZyYmKG51bGw9PT1oP20uZmlyc3RCYXNlVXBkYXRlPWw6aC5uZXh0PWwsbS5sYXN0QmFzZVVwZGF0ZT1rKSl9aWYobnVsbCE9PWYpe3ZhciBxPWUuYmFzZVN0YXRlO2c9MDttPWw9az1udWxsO2g9Zjtkb3t2YXIgcj1oLmxhbmUseT1oLmV2ZW50VGltZTtpZigoZCZyKT09PXIpe251bGwhPT1tJiYobT1tLm5leHQ9e2V2ZW50VGltZTp5LGxhbmU6MCx0YWc6aC50YWcscGF5bG9hZDpoLnBheWxvYWQsY2FsbGJhY2s6aC5jYWxsYmFjayxcbm5leHQ6bnVsbH0pO2E6e3ZhciBuPWEsdD1oO3I9Yjt5PWM7c3dpdGNoKHQudGFnKXtjYXNlIDE6bj10LnBheWxvYWQ7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIG4pe3E9bi5jYWxsKHkscSxyKTticmVhayBhfXE9bjticmVhayBhO2Nhc2UgMzpuLmZsYWdzPW4uZmxhZ3MmLTY1NTM3fDEyODtjYXNlIDA6bj10LnBheWxvYWQ7cj1cImZ1bmN0aW9uXCI9PT10eXBlb2Ygbj9uLmNhbGwoeSxxLHIpOm47aWYobnVsbD09PXJ8fHZvaWQgMD09PXIpYnJlYWsgYTtxPUEoe30scSxyKTticmVhayBhO2Nhc2UgMjpqaD0hMH19bnVsbCE9PWguY2FsbGJhY2smJjAhPT1oLmxhbmUmJihhLmZsYWdzfD02NCxyPWUuZWZmZWN0cyxudWxsPT09cj9lLmVmZmVjdHM9W2hdOnIucHVzaChoKSl9ZWxzZSB5PXtldmVudFRpbWU6eSxsYW5lOnIsdGFnOmgudGFnLHBheWxvYWQ6aC5wYXlsb2FkLGNhbGxiYWNrOmguY2FsbGJhY2ssbmV4dDpudWxsfSxudWxsPT09bT8obD1tPXksaz1xKTptPW0ubmV4dD15LGd8PXI7XG5oPWgubmV4dDtpZihudWxsPT09aClpZihoPWUuc2hhcmVkLnBlbmRpbmcsbnVsbD09PWgpYnJlYWs7ZWxzZSByPWgsaD1yLm5leHQsci5uZXh0PW51bGwsZS5sYXN0QmFzZVVwZGF0ZT1yLGUuc2hhcmVkLnBlbmRpbmc9bnVsbH13aGlsZSgxKTtudWxsPT09bSYmKGs9cSk7ZS5iYXNlU3RhdGU9aztlLmZpcnN0QmFzZVVwZGF0ZT1sO2UubGFzdEJhc2VVcGRhdGU9bTtiPWUuc2hhcmVkLmludGVybGVhdmVkO2lmKG51bGwhPT1iKXtlPWI7ZG8gZ3w9ZS5sYW5lLGU9ZS5uZXh0O3doaWxlKGUhPT1iKX1lbHNlIG51bGw9PT1mJiYoZS5zaGFyZWQubGFuZXM9MCk7cmh8PWc7YS5sYW5lcz1nO2EubWVtb2l6ZWRTdGF0ZT1xfX1cbmZ1bmN0aW9uIHNoKGEsYixjKXthPWIuZWZmZWN0cztiLmVmZmVjdHM9bnVsbDtpZihudWxsIT09YSlmb3IoYj0wO2I8YS5sZW5ndGg7YisrKXt2YXIgZD1hW2JdLGU9ZC5jYWxsYmFjaztpZihudWxsIT09ZSl7ZC5jYWxsYmFjaz1udWxsO2Q9YztpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgZSl0aHJvdyBFcnJvcihwKDE5MSxlKSk7ZS5jYWxsKGQpfX19dmFyIHRoPXt9LHVoPVVmKHRoKSx2aD1VZih0aCksd2g9VWYodGgpO2Z1bmN0aW9uIHhoKGEpe2lmKGE9PT10aCl0aHJvdyBFcnJvcihwKDE3NCkpO3JldHVybiBhfVxuZnVuY3Rpb24geWgoYSxiKXtHKHdoLGIpO0codmgsYSk7Ryh1aCx0aCk7YT1iLm5vZGVUeXBlO3N3aXRjaChhKXtjYXNlIDk6Y2FzZSAxMTpiPShiPWIuZG9jdW1lbnRFbGVtZW50KT9iLm5hbWVzcGFjZVVSSTpsYihudWxsLFwiXCIpO2JyZWFrO2RlZmF1bHQ6YT04PT09YT9iLnBhcmVudE5vZGU6YixiPWEubmFtZXNwYWNlVVJJfHxudWxsLGE9YS50YWdOYW1lLGI9bGIoYixhKX1FKHVoKTtHKHVoLGIpfWZ1bmN0aW9uIHpoKCl7RSh1aCk7RSh2aCk7RSh3aCl9ZnVuY3Rpb24gQWgoYSl7eGgod2guY3VycmVudCk7dmFyIGI9eGgodWguY3VycmVudCk7dmFyIGM9bGIoYixhLnR5cGUpO2IhPT1jJiYoRyh2aCxhKSxHKHVoLGMpKX1mdW5jdGlvbiBCaChhKXt2aC5jdXJyZW50PT09YSYmKEUodWgpLEUodmgpKX12YXIgTD1VZigwKTtcbmZ1bmN0aW9uIENoKGEpe2Zvcih2YXIgYj1hO251bGwhPT1iOyl7aWYoMTM9PT1iLnRhZyl7dmFyIGM9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1jJiYoYz1jLmRlaHlkcmF0ZWQsbnVsbD09PWN8fFwiJD9cIj09PWMuZGF0YXx8XCIkIVwiPT09Yy5kYXRhKSlyZXR1cm4gYn1lbHNlIGlmKDE5PT09Yi50YWcmJnZvaWQgMCE9PWIubWVtb2l6ZWRQcm9wcy5yZXZlYWxPcmRlcil7aWYoMCE9PShiLmZsYWdzJjEyOCkpcmV0dXJuIGJ9ZWxzZSBpZihudWxsIT09Yi5jaGlsZCl7Yi5jaGlsZC5yZXR1cm49YjtiPWIuY2hpbGQ7Y29udGludWV9aWYoYj09PWEpYnJlYWs7Zm9yKDtudWxsPT09Yi5zaWJsaW5nOyl7aWYobnVsbD09PWIucmV0dXJufHxiLnJldHVybj09PWEpcmV0dXJuIG51bGw7Yj1iLnJldHVybn1iLnNpYmxpbmcucmV0dXJuPWIucmV0dXJuO2I9Yi5zaWJsaW5nfXJldHVybiBudWxsfXZhciBEaD1bXTtcbmZ1bmN0aW9uIEVoKCl7Zm9yKHZhciBhPTA7YTxEaC5sZW5ndGg7YSsrKURoW2FdLl93b3JrSW5Qcm9ncmVzc1ZlcnNpb25QcmltYXJ5PW51bGw7RGgubGVuZ3RoPTB9dmFyIEZoPXVhLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsR2g9dWEuUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsSGg9MCxNPW51bGwsTj1udWxsLE89bnVsbCxJaD0hMSxKaD0hMSxLaD0wLExoPTA7ZnVuY3Rpb24gUCgpe3Rocm93IEVycm9yKHAoMzIxKSk7fWZ1bmN0aW9uIE1oKGEsYil7aWYobnVsbD09PWIpcmV0dXJuITE7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aCYmYzxhLmxlbmd0aDtjKyspaWYoIUhlKGFbY10sYltjXSkpcmV0dXJuITE7cmV0dXJuITB9XG5mdW5jdGlvbiBOaChhLGIsYyxkLGUsZil7SGg9ZjtNPWI7Yi5tZW1vaXplZFN0YXRlPW51bGw7Yi51cGRhdGVRdWV1ZT1udWxsO2IubGFuZXM9MDtGaC5jdXJyZW50PW51bGw9PT1hfHxudWxsPT09YS5tZW1vaXplZFN0YXRlP09oOlBoO2E9YyhkLGUpO2lmKEpoKXtmPTA7ZG97Smg9ITE7S2g9MDtpZigyNTw9Zil0aHJvdyBFcnJvcihwKDMwMSkpO2YrPTE7Tz1OPW51bGw7Yi51cGRhdGVRdWV1ZT1udWxsO0ZoLmN1cnJlbnQ9UWg7YT1jKGQsZSl9d2hpbGUoSmgpfUZoLmN1cnJlbnQ9Umg7Yj1udWxsIT09TiYmbnVsbCE9PU4ubmV4dDtIaD0wO089Tj1NPW51bGw7SWg9ITE7aWYoYil0aHJvdyBFcnJvcihwKDMwMCkpO3JldHVybiBhfWZ1bmN0aW9uIFNoKCl7dmFyIGE9MCE9PUtoO0toPTA7cmV0dXJuIGF9XG5mdW5jdGlvbiBUaCgpe3ZhciBhPXttZW1vaXplZFN0YXRlOm51bGwsYmFzZVN0YXRlOm51bGwsYmFzZVF1ZXVlOm51bGwscXVldWU6bnVsbCxuZXh0Om51bGx9O251bGw9PT1PP00ubWVtb2l6ZWRTdGF0ZT1PPWE6Tz1PLm5leHQ9YTtyZXR1cm4gT31mdW5jdGlvbiBVaCgpe2lmKG51bGw9PT1OKXt2YXIgYT1NLmFsdGVybmF0ZTthPW51bGwhPT1hP2EubWVtb2l6ZWRTdGF0ZTpudWxsfWVsc2UgYT1OLm5leHQ7dmFyIGI9bnVsbD09PU8/TS5tZW1vaXplZFN0YXRlOk8ubmV4dDtpZihudWxsIT09YilPPWIsTj1hO2Vsc2V7aWYobnVsbD09PWEpdGhyb3cgRXJyb3IocCgzMTApKTtOPWE7YT17bWVtb2l6ZWRTdGF0ZTpOLm1lbW9pemVkU3RhdGUsYmFzZVN0YXRlOk4uYmFzZVN0YXRlLGJhc2VRdWV1ZTpOLmJhc2VRdWV1ZSxxdWV1ZTpOLnF1ZXVlLG5leHQ6bnVsbH07bnVsbD09PU8/TS5tZW1vaXplZFN0YXRlPU89YTpPPU8ubmV4dD1hfXJldHVybiBPfVxuZnVuY3Rpb24gVmgoYSxiKXtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYj9iKGEpOmJ9XG5mdW5jdGlvbiBXaChhKXt2YXIgYj1VaCgpLGM9Yi5xdWV1ZTtpZihudWxsPT09Yyl0aHJvdyBFcnJvcihwKDMxMSkpO2MubGFzdFJlbmRlcmVkUmVkdWNlcj1hO3ZhciBkPU4sZT1kLmJhc2VRdWV1ZSxmPWMucGVuZGluZztpZihudWxsIT09Zil7aWYobnVsbCE9PWUpe3ZhciBnPWUubmV4dDtlLm5leHQ9Zi5uZXh0O2YubmV4dD1nfWQuYmFzZVF1ZXVlPWU9ZjtjLnBlbmRpbmc9bnVsbH1pZihudWxsIT09ZSl7Zj1lLm5leHQ7ZD1kLmJhc2VTdGF0ZTt2YXIgaD1nPW51bGwsaz1udWxsLGw9Zjtkb3t2YXIgbT1sLmxhbmU7aWYoKEhoJm0pPT09bSludWxsIT09ayYmKGs9ay5uZXh0PXtsYW5lOjAsYWN0aW9uOmwuYWN0aW9uLGhhc0VhZ2VyU3RhdGU6bC5oYXNFYWdlclN0YXRlLGVhZ2VyU3RhdGU6bC5lYWdlclN0YXRlLG5leHQ6bnVsbH0pLGQ9bC5oYXNFYWdlclN0YXRlP2wuZWFnZXJTdGF0ZTphKGQsbC5hY3Rpb24pO2Vsc2V7dmFyIHE9e2xhbmU6bSxhY3Rpb246bC5hY3Rpb24saGFzRWFnZXJTdGF0ZTpsLmhhc0VhZ2VyU3RhdGUsXG5lYWdlclN0YXRlOmwuZWFnZXJTdGF0ZSxuZXh0Om51bGx9O251bGw9PT1rPyhoPWs9cSxnPWQpOms9ay5uZXh0PXE7TS5sYW5lc3w9bTtyaHw9bX1sPWwubmV4dH13aGlsZShudWxsIT09bCYmbCE9PWYpO251bGw9PT1rP2c9ZDprLm5leHQ9aDtIZShkLGIubWVtb2l6ZWRTdGF0ZSl8fChkaD0hMCk7Yi5tZW1vaXplZFN0YXRlPWQ7Yi5iYXNlU3RhdGU9ZztiLmJhc2VRdWV1ZT1rO2MubGFzdFJlbmRlcmVkU3RhdGU9ZH1hPWMuaW50ZXJsZWF2ZWQ7aWYobnVsbCE9PWEpe2U9YTtkbyBmPWUubGFuZSxNLmxhbmVzfD1mLHJofD1mLGU9ZS5uZXh0O3doaWxlKGUhPT1hKX1lbHNlIG51bGw9PT1lJiYoYy5sYW5lcz0wKTtyZXR1cm5bYi5tZW1vaXplZFN0YXRlLGMuZGlzcGF0Y2hdfVxuZnVuY3Rpb24gWGgoYSl7dmFyIGI9VWgoKSxjPWIucXVldWU7aWYobnVsbD09PWMpdGhyb3cgRXJyb3IocCgzMTEpKTtjLmxhc3RSZW5kZXJlZFJlZHVjZXI9YTt2YXIgZD1jLmRpc3BhdGNoLGU9Yy5wZW5kaW5nLGY9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1lKXtjLnBlbmRpbmc9bnVsbDt2YXIgZz1lPWUubmV4dDtkbyBmPWEoZixnLmFjdGlvbiksZz1nLm5leHQ7d2hpbGUoZyE9PWUpO0hlKGYsYi5tZW1vaXplZFN0YXRlKXx8KGRoPSEwKTtiLm1lbW9pemVkU3RhdGU9ZjtudWxsPT09Yi5iYXNlUXVldWUmJihiLmJhc2VTdGF0ZT1mKTtjLmxhc3RSZW5kZXJlZFN0YXRlPWZ9cmV0dXJuW2YsZF19ZnVuY3Rpb24gWWgoKXt9XG5mdW5jdGlvbiBaaChhLGIpe3ZhciBjPU0sZD1VaCgpLGU9YigpLGY9IUhlKGQubWVtb2l6ZWRTdGF0ZSxlKTtmJiYoZC5tZW1vaXplZFN0YXRlPWUsZGg9ITApO2Q9ZC5xdWV1ZTskaChhaS5iaW5kKG51bGwsYyxkLGEpLFthXSk7aWYoZC5nZXRTbmFwc2hvdCE9PWJ8fGZ8fG51bGwhPT1PJiZPLm1lbW9pemVkU3RhdGUudGFnJjEpe2MuZmxhZ3N8PTIwNDg7YmkoOSxjaS5iaW5kKG51bGwsYyxkLGUsYiksdm9pZCAwLG51bGwpO2lmKG51bGw9PT1RKXRocm93IEVycm9yKHAoMzQ5KSk7MCE9PShIaCYzMCl8fGRpKGMsYixlKX1yZXR1cm4gZX1mdW5jdGlvbiBkaShhLGIsYyl7YS5mbGFnc3w9MTYzODQ7YT17Z2V0U25hcHNob3Q6Yix2YWx1ZTpjfTtiPU0udXBkYXRlUXVldWU7bnVsbD09PWI/KGI9e2xhc3RFZmZlY3Q6bnVsbCxzdG9yZXM6bnVsbH0sTS51cGRhdGVRdWV1ZT1iLGIuc3RvcmVzPVthXSk6KGM9Yi5zdG9yZXMsbnVsbD09PWM/Yi5zdG9yZXM9W2FdOmMucHVzaChhKSl9XG5mdW5jdGlvbiBjaShhLGIsYyxkKXtiLnZhbHVlPWM7Yi5nZXRTbmFwc2hvdD1kO2VpKGIpJiZmaShhKX1mdW5jdGlvbiBhaShhLGIsYyl7cmV0dXJuIGMoZnVuY3Rpb24oKXtlaShiKSYmZmkoYSl9KX1mdW5jdGlvbiBlaShhKXt2YXIgYj1hLmdldFNuYXBzaG90O2E9YS52YWx1ZTt0cnl7dmFyIGM9YigpO3JldHVybiFIZShhLGMpfWNhdGNoKGQpe3JldHVybiEwfX1mdW5jdGlvbiBmaShhKXt2YXIgYj1paChhLDEpO251bGwhPT1iJiZnaShiLGEsMSwtMSl9XG5mdW5jdGlvbiBoaShhKXt2YXIgYj1UaCgpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBhJiYoYT1hKCkpO2IubWVtb2l6ZWRTdGF0ZT1iLmJhc2VTdGF0ZT1hO2E9e3BlbmRpbmc6bnVsbCxpbnRlcmxlYXZlZDpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOlZoLGxhc3RSZW5kZXJlZFN0YXRlOmF9O2IucXVldWU9YTthPWEuZGlzcGF0Y2g9aWkuYmluZChudWxsLE0sYSk7cmV0dXJuW2IubWVtb2l6ZWRTdGF0ZSxhXX1cbmZ1bmN0aW9uIGJpKGEsYixjLGQpe2E9e3RhZzphLGNyZWF0ZTpiLGRlc3Ryb3k6YyxkZXBzOmQsbmV4dDpudWxsfTtiPU0udXBkYXRlUXVldWU7bnVsbD09PWI/KGI9e2xhc3RFZmZlY3Q6bnVsbCxzdG9yZXM6bnVsbH0sTS51cGRhdGVRdWV1ZT1iLGIubGFzdEVmZmVjdD1hLm5leHQ9YSk6KGM9Yi5sYXN0RWZmZWN0LG51bGw9PT1jP2IubGFzdEVmZmVjdD1hLm5leHQ9YTooZD1jLm5leHQsYy5uZXh0PWEsYS5uZXh0PWQsYi5sYXN0RWZmZWN0PWEpKTtyZXR1cm4gYX1mdW5jdGlvbiBqaSgpe3JldHVybiBVaCgpLm1lbW9pemVkU3RhdGV9ZnVuY3Rpb24ga2koYSxiLGMsZCl7dmFyIGU9VGgoKTtNLmZsYWdzfD1hO2UubWVtb2l6ZWRTdGF0ZT1iaSgxfGIsYyx2b2lkIDAsdm9pZCAwPT09ZD9udWxsOmQpfVxuZnVuY3Rpb24gbGkoYSxiLGMsZCl7dmFyIGU9VWgoKTtkPXZvaWQgMD09PWQ/bnVsbDpkO3ZhciBmPXZvaWQgMDtpZihudWxsIT09Til7dmFyIGc9Ti5tZW1vaXplZFN0YXRlO2Y9Zy5kZXN0cm95O2lmKG51bGwhPT1kJiZNaChkLGcuZGVwcykpe2UubWVtb2l6ZWRTdGF0ZT1iaShiLGMsZixkKTtyZXR1cm59fU0uZmxhZ3N8PWE7ZS5tZW1vaXplZFN0YXRlPWJpKDF8YixjLGYsZCl9ZnVuY3Rpb24gbWkoYSxiKXtyZXR1cm4ga2koODM5MDY1Niw4LGEsYil9ZnVuY3Rpb24gJGgoYSxiKXtyZXR1cm4gbGkoMjA0OCw4LGEsYil9ZnVuY3Rpb24gbmkoYSxiKXtyZXR1cm4gbGkoNCwyLGEsYil9ZnVuY3Rpb24gb2koYSxiKXtyZXR1cm4gbGkoNCw0LGEsYil9XG5mdW5jdGlvbiBwaShhLGIpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBiKXJldHVybiBhPWEoKSxiKGEpLGZ1bmN0aW9uKCl7YihudWxsKX07aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpcmV0dXJuIGE9YSgpLGIuY3VycmVudD1hLGZ1bmN0aW9uKCl7Yi5jdXJyZW50PW51bGx9fWZ1bmN0aW9uIHFpKGEsYixjKXtjPW51bGwhPT1jJiZ2b2lkIDAhPT1jP2MuY29uY2F0KFthXSk6bnVsbDtyZXR1cm4gbGkoNCw0LHBpLmJpbmQobnVsbCxiLGEpLGMpfWZ1bmN0aW9uIHJpKCl7fWZ1bmN0aW9uIHNpKGEsYil7dmFyIGM9VWgoKTtiPXZvaWQgMD09PWI/bnVsbDpiO3ZhciBkPWMubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZCYmbnVsbCE9PWImJk1oKGIsZFsxXSkpcmV0dXJuIGRbMF07Yy5tZW1vaXplZFN0YXRlPVthLGJdO3JldHVybiBhfVxuZnVuY3Rpb24gdGkoYSxiKXt2YXIgYz1VaCgpO2I9dm9pZCAwPT09Yj9udWxsOmI7dmFyIGQ9Yy5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1kJiZudWxsIT09YiYmTWgoYixkWzFdKSlyZXR1cm4gZFswXTthPWEoKTtjLm1lbW9pemVkU3RhdGU9W2EsYl07cmV0dXJuIGF9ZnVuY3Rpb24gdWkoYSxiLGMpe2lmKDA9PT0oSGgmMjEpKXJldHVybiBhLmJhc2VTdGF0ZSYmKGEuYmFzZVN0YXRlPSExLGRoPSEwKSxhLm1lbW9pemVkU3RhdGU9YztIZShjLGIpfHwoYz15YygpLE0ubGFuZXN8PWMscmh8PWMsYS5iYXNlU3RhdGU9ITApO3JldHVybiBifWZ1bmN0aW9uIHZpKGEsYil7dmFyIGM9QztDPTAhPT1jJiY0PmM/Yzo0O2EoITApO3ZhciBkPUdoLnRyYW5zaXRpb247R2gudHJhbnNpdGlvbj17fTt0cnl7YSghMSksYigpfWZpbmFsbHl7Qz1jLEdoLnRyYW5zaXRpb249ZH19ZnVuY3Rpb24gd2koKXtyZXR1cm4gVWgoKS5tZW1vaXplZFN0YXRlfVxuZnVuY3Rpb24geGkoYSxiLGMpe3ZhciBkPXlpKGEpO2M9e2xhbmU6ZCxhY3Rpb246YyxoYXNFYWdlclN0YXRlOiExLGVhZ2VyU3RhdGU6bnVsbCxuZXh0Om51bGx9O2lmKHppKGEpKUFpKGIsYyk7ZWxzZSBpZihjPWhoKGEsYixjLGQpLG51bGwhPT1jKXt2YXIgZT1SKCk7Z2koYyxhLGQsZSk7QmkoYyxiLGQpfX1cbmZ1bmN0aW9uIGlpKGEsYixjKXt2YXIgZD15aShhKSxlPXtsYW5lOmQsYWN0aW9uOmMsaGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfTtpZih6aShhKSlBaShiLGUpO2Vsc2V7dmFyIGY9YS5hbHRlcm5hdGU7aWYoMD09PWEubGFuZXMmJihudWxsPT09Znx8MD09PWYubGFuZXMpJiYoZj1iLmxhc3RSZW5kZXJlZFJlZHVjZXIsbnVsbCE9PWYpKXRyeXt2YXIgZz1iLmxhc3RSZW5kZXJlZFN0YXRlLGg9ZihnLGMpO2UuaGFzRWFnZXJTdGF0ZT0hMDtlLmVhZ2VyU3RhdGU9aDtpZihIZShoLGcpKXt2YXIgaz1iLmludGVybGVhdmVkO251bGw9PT1rPyhlLm5leHQ9ZSxnaChiKSk6KGUubmV4dD1rLm5leHQsay5uZXh0PWUpO2IuaW50ZXJsZWF2ZWQ9ZTtyZXR1cm59fWNhdGNoKGwpe31maW5hbGx5e31jPWhoKGEsYixlLGQpO251bGwhPT1jJiYoZT1SKCksZ2koYyxhLGQsZSksQmkoYyxiLGQpKX19XG5mdW5jdGlvbiB6aShhKXt2YXIgYj1hLmFsdGVybmF0ZTtyZXR1cm4gYT09PU18fG51bGwhPT1iJiZiPT09TX1mdW5jdGlvbiBBaShhLGIpe0poPUloPSEwO3ZhciBjPWEucGVuZGluZztudWxsPT09Yz9iLm5leHQ9YjooYi5uZXh0PWMubmV4dCxjLm5leHQ9Yik7YS5wZW5kaW5nPWJ9ZnVuY3Rpb24gQmkoYSxiLGMpe2lmKDAhPT0oYyY0MTk0MjQwKSl7dmFyIGQ9Yi5sYW5lcztkJj1hLnBlbmRpbmdMYW5lcztjfD1kO2IubGFuZXM9YztDYyhhLGMpfX1cbnZhciBSaD17cmVhZENvbnRleHQ6ZWgsdXNlQ2FsbGJhY2s6UCx1c2VDb250ZXh0OlAsdXNlRWZmZWN0OlAsdXNlSW1wZXJhdGl2ZUhhbmRsZTpQLHVzZUluc2VydGlvbkVmZmVjdDpQLHVzZUxheW91dEVmZmVjdDpQLHVzZU1lbW86UCx1c2VSZWR1Y2VyOlAsdXNlUmVmOlAsdXNlU3RhdGU6UCx1c2VEZWJ1Z1ZhbHVlOlAsdXNlRGVmZXJyZWRWYWx1ZTpQLHVzZVRyYW5zaXRpb246UCx1c2VNdXRhYmxlU291cmNlOlAsdXNlU3luY0V4dGVybmFsU3RvcmU6UCx1c2VJZDpQLHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX0sT2g9e3JlYWRDb250ZXh0OmVoLHVzZUNhbGxiYWNrOmZ1bmN0aW9uKGEsYil7VGgoKS5tZW1vaXplZFN0YXRlPVthLHZvaWQgMD09PWI/bnVsbDpiXTtyZXR1cm4gYX0sdXNlQ29udGV4dDplaCx1c2VFZmZlY3Q6bWksdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbihhLGIsYyl7Yz1udWxsIT09YyYmdm9pZCAwIT09Yz9jLmNvbmNhdChbYV0pOm51bGw7cmV0dXJuIGtpKDQxOTQzMDgsXG40LHBpLmJpbmQobnVsbCxiLGEpLGMpfSx1c2VMYXlvdXRFZmZlY3Q6ZnVuY3Rpb24oYSxiKXtyZXR1cm4ga2koNDE5NDMwOCw0LGEsYil9LHVzZUluc2VydGlvbkVmZmVjdDpmdW5jdGlvbihhLGIpe3JldHVybiBraSg0LDIsYSxiKX0sdXNlTWVtbzpmdW5jdGlvbihhLGIpe3ZhciBjPVRoKCk7Yj12b2lkIDA9PT1iP251bGw6YjthPWEoKTtjLm1lbW9pemVkU3RhdGU9W2EsYl07cmV0dXJuIGF9LHVzZVJlZHVjZXI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVRoKCk7Yj12b2lkIDAhPT1jP2MoYik6YjtkLm1lbW9pemVkU3RhdGU9ZC5iYXNlU3RhdGU9YjthPXtwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjphLGxhc3RSZW5kZXJlZFN0YXRlOmJ9O2QucXVldWU9YTthPWEuZGlzcGF0Y2g9eGkuYmluZChudWxsLE0sYSk7cmV0dXJuW2QubWVtb2l6ZWRTdGF0ZSxhXX0sdXNlUmVmOmZ1bmN0aW9uKGEpe3ZhciBiPVxuVGgoKTthPXtjdXJyZW50OmF9O3JldHVybiBiLm1lbW9pemVkU3RhdGU9YX0sdXNlU3RhdGU6aGksdXNlRGVidWdWYWx1ZTpyaSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiBUaCgpLm1lbW9pemVkU3RhdGU9YX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBhPWhpKCExKSxiPWFbMF07YT12aS5iaW5kKG51bGwsYVsxXSk7VGgoKS5tZW1vaXplZFN0YXRlPWE7cmV0dXJuW2IsYV19LHVzZU11dGFibGVTb3VyY2U6ZnVuY3Rpb24oKXt9LHVzZVN5bmNFeHRlcm5hbFN0b3JlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1NLGU9VGgoKTtpZihJKXtpZih2b2lkIDA9PT1jKXRocm93IEVycm9yKHAoNDA3KSk7Yz1jKCl9ZWxzZXtjPWIoKTtpZihudWxsPT09USl0aHJvdyBFcnJvcihwKDM0OSkpOzAhPT0oSGgmMzApfHxkaShkLGIsYyl9ZS5tZW1vaXplZFN0YXRlPWM7dmFyIGY9e3ZhbHVlOmMsZ2V0U25hcHNob3Q6Yn07ZS5xdWV1ZT1mO21pKGFpLmJpbmQobnVsbCxkLFxuZixhKSxbYV0pO2QuZmxhZ3N8PTIwNDg7YmkoOSxjaS5iaW5kKG51bGwsZCxmLGMsYiksdm9pZCAwLG51bGwpO3JldHVybiBjfSx1c2VJZDpmdW5jdGlvbigpe3ZhciBhPVRoKCksYj1RLmlkZW50aWZpZXJQcmVmaXg7aWYoSSl7dmFyIGM9c2c7dmFyIGQ9cmc7Yz0oZCZ+KDE8PDMyLW9jKGQpLTEpKS50b1N0cmluZygzMikrYztiPVwiOlwiK2IrXCJSXCIrYztjPUtoKys7MDxjJiYoYis9XCJIXCIrYy50b1N0cmluZygzMikpO2IrPVwiOlwifWVsc2UgYz1MaCsrLGI9XCI6XCIrYitcInJcIitjLnRvU3RyaW5nKDMyKStcIjpcIjtyZXR1cm4gYS5tZW1vaXplZFN0YXRlPWJ9LHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX0sUGg9e3JlYWRDb250ZXh0OmVoLHVzZUNhbGxiYWNrOnNpLHVzZUNvbnRleHQ6ZWgsdXNlRWZmZWN0OiRoLHVzZUltcGVyYXRpdmVIYW5kbGU6cWksdXNlSW5zZXJ0aW9uRWZmZWN0Om5pLHVzZUxheW91dEVmZmVjdDpvaSx1c2VNZW1vOnRpLHVzZVJlZHVjZXI6V2gsdXNlUmVmOmppLHVzZVN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIFdoKFZoKX0sXG51c2VEZWJ1Z1ZhbHVlOnJpLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGI9VWgoKTtyZXR1cm4gdWkoYixOLm1lbW9pemVkU3RhdGUsYSl9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1XaChWaClbMF0sYj1VaCgpLm1lbW9pemVkU3RhdGU7cmV0dXJuW2EsYl19LHVzZU11dGFibGVTb3VyY2U6WWgsdXNlU3luY0V4dGVybmFsU3RvcmU6WmgsdXNlSWQ6d2ksdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSxRaD17cmVhZENvbnRleHQ6ZWgsdXNlQ2FsbGJhY2s6c2ksdXNlQ29udGV4dDplaCx1c2VFZmZlY3Q6JGgsdXNlSW1wZXJhdGl2ZUhhbmRsZTpxaSx1c2VJbnNlcnRpb25FZmZlY3Q6bmksdXNlTGF5b3V0RWZmZWN0Om9pLHVzZU1lbW86dGksdXNlUmVkdWNlcjpYaCx1c2VSZWY6amksdXNlU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gWGgoVmgpfSx1c2VEZWJ1Z1ZhbHVlOnJpLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGI9VWgoKTtyZXR1cm4gbnVsbD09PVxuTj9iLm1lbW9pemVkU3RhdGU9YTp1aShiLE4ubWVtb2l6ZWRTdGF0ZSxhKX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBhPVhoKFZoKVswXSxiPVVoKCkubWVtb2l6ZWRTdGF0ZTtyZXR1cm5bYSxiXX0sdXNlTXV0YWJsZVNvdXJjZTpZaCx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpaaCx1c2VJZDp3aSx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9O2Z1bmN0aW9uIENpKGEsYil7aWYoYSYmYS5kZWZhdWx0UHJvcHMpe2I9QSh7fSxiKTthPWEuZGVmYXVsdFByb3BzO2Zvcih2YXIgYyBpbiBhKXZvaWQgMD09PWJbY10mJihiW2NdPWFbY10pO3JldHVybiBifXJldHVybiBifWZ1bmN0aW9uIERpKGEsYixjLGQpe2I9YS5tZW1vaXplZFN0YXRlO2M9YyhkLGIpO2M9bnVsbD09PWN8fHZvaWQgMD09PWM/YjpBKHt9LGIsYyk7YS5tZW1vaXplZFN0YXRlPWM7MD09PWEubGFuZXMmJihhLnVwZGF0ZVF1ZXVlLmJhc2VTdGF0ZT1jKX1cbnZhciBFaT17aXNNb3VudGVkOmZ1bmN0aW9uKGEpe3JldHVybihhPWEuX3JlYWN0SW50ZXJuYWxzKT9WYihhKT09PWE6ITF9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihhLGIsYyl7YT1hLl9yZWFjdEludGVybmFsczt2YXIgZD1SKCksZT15aShhKSxmPW1oKGQsZSk7Zi5wYXlsb2FkPWI7dm9pZCAwIT09YyYmbnVsbCE9PWMmJihmLmNhbGxiYWNrPWMpO2I9bmgoYSxmLGUpO251bGwhPT1iJiYoZ2koYixhLGUsZCksb2goYixhLGUpKX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihhLGIsYyl7YT1hLl9yZWFjdEludGVybmFsczt2YXIgZD1SKCksZT15aShhKSxmPW1oKGQsZSk7Zi50YWc9MTtmLnBheWxvYWQ9Yjt2b2lkIDAhPT1jJiZudWxsIT09YyYmKGYuY2FsbGJhY2s9Yyk7Yj1uaChhLGYsZSk7bnVsbCE9PWImJihnaShiLGEsZSxkKSxvaChiLGEsZSkpfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oYSxiKXthPWEuX3JlYWN0SW50ZXJuYWxzO3ZhciBjPVIoKSxkPVxueWkoYSksZT1taChjLGQpO2UudGFnPTI7dm9pZCAwIT09YiYmbnVsbCE9PWImJihlLmNhbGxiYWNrPWIpO2I9bmgoYSxlLGQpO251bGwhPT1iJiYoZ2koYixhLGQsYyksb2goYixhLGQpKX19O2Z1bmN0aW9uIEZpKGEsYixjLGQsZSxmLGcpe2E9YS5zdGF0ZU5vZGU7cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGEuc2hvdWxkQ29tcG9uZW50VXBkYXRlP2Euc2hvdWxkQ29tcG9uZW50VXBkYXRlKGQsZixnKTpiLnByb3RvdHlwZSYmYi5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQ/IUllKGMsZCl8fCFJZShlLGYpOiEwfVxuZnVuY3Rpb24gR2koYSxiLGMpe3ZhciBkPSExLGU9VmY7dmFyIGY9Yi5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mP2Y9ZWgoZik6KGU9WmYoYik/WGY6SC5jdXJyZW50LGQ9Yi5jb250ZXh0VHlwZXMsZj0oZD1udWxsIT09ZCYmdm9pZCAwIT09ZCk/WWYoYSxlKTpWZik7Yj1uZXcgYihjLGYpO2EubWVtb2l6ZWRTdGF0ZT1udWxsIT09Yi5zdGF0ZSYmdm9pZCAwIT09Yi5zdGF0ZT9iLnN0YXRlOm51bGw7Yi51cGRhdGVyPUVpO2Euc3RhdGVOb2RlPWI7Yi5fcmVhY3RJbnRlcm5hbHM9YTtkJiYoYT1hLnN0YXRlTm9kZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9ZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0PWYpO3JldHVybiBifVxuZnVuY3Rpb24gSGkoYSxiLGMsZCl7YT1iLnN0YXRlO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBiLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJmIuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhjLGQpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBiLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZiLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKGMsZCk7Yi5zdGF0ZSE9PWEmJkVpLmVucXVldWVSZXBsYWNlU3RhdGUoYixiLnN0YXRlLG51bGwpfVxuZnVuY3Rpb24gSWkoYSxiLGMsZCl7dmFyIGU9YS5zdGF0ZU5vZGU7ZS5wcm9wcz1jO2Uuc3RhdGU9YS5tZW1vaXplZFN0YXRlO2UucmVmcz17fTtraChhKTt2YXIgZj1iLmNvbnRleHRUeXBlO1wib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWY/ZS5jb250ZXh0PWVoKGYpOihmPVpmKGIpP1hmOkguY3VycmVudCxlLmNvbnRleHQ9WWYoYSxmKSk7ZS5zdGF0ZT1hLm1lbW9pemVkU3RhdGU7Zj1iLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcztcImZ1bmN0aW9uXCI9PT10eXBlb2YgZiYmKERpKGEsYixmLGMpLGUuc3RhdGU9YS5tZW1vaXplZFN0YXRlKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHN8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnR8fChiPWUuc3RhdGUsXG5cImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnQmJmUuY29tcG9uZW50V2lsbE1vdW50KCksXCJmdW5jdGlvblwiPT09dHlwZW9mIGUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCksYiE9PWUuc3RhdGUmJkVpLmVucXVldWVSZXBsYWNlU3RhdGUoZSxlLnN0YXRlLG51bGwpLHFoKGEsYyxlLGQpLGUuc3RhdGU9YS5tZW1vaXplZFN0YXRlKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5jb21wb25lbnREaWRNb3VudCYmKGEuZmxhZ3N8PTQxOTQzMDgpfWZ1bmN0aW9uIEppKGEsYil7dHJ5e3ZhciBjPVwiXCIsZD1iO2RvIGMrPVBhKGQpLGQ9ZC5yZXR1cm47d2hpbGUoZCk7dmFyIGU9Y31jYXRjaChmKXtlPVwiXFxuRXJyb3IgZ2VuZXJhdGluZyBzdGFjazogXCIrZi5tZXNzYWdlK1wiXFxuXCIrZi5zdGFja31yZXR1cm57dmFsdWU6YSxzb3VyY2U6YixzdGFjazplLGRpZ2VzdDpudWxsfX1cbmZ1bmN0aW9uIEtpKGEsYixjKXtyZXR1cm57dmFsdWU6YSxzb3VyY2U6bnVsbCxzdGFjazpudWxsIT1jP2M6bnVsbCxkaWdlc3Q6bnVsbCE9Yj9iOm51bGx9fWZ1bmN0aW9uIExpKGEsYil7dHJ5e2NvbnNvbGUuZXJyb3IoYi52YWx1ZSl9Y2F0Y2goYyl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGM7fSl9fXZhciBNaT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgV2Vha01hcD9XZWFrTWFwOk1hcDtmdW5jdGlvbiBOaShhLGIsYyl7Yz1taCgtMSxjKTtjLnRhZz0zO2MucGF5bG9hZD17ZWxlbWVudDpudWxsfTt2YXIgZD1iLnZhbHVlO2MuY2FsbGJhY2s9ZnVuY3Rpb24oKXtPaXx8KE9pPSEwLFBpPWQpO0xpKGEsYil9O3JldHVybiBjfVxuZnVuY3Rpb24gUWkoYSxiLGMpe2M9bWgoLTEsYyk7Yy50YWc9Mzt2YXIgZD1hLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkKXt2YXIgZT1iLnZhbHVlO2MucGF5bG9hZD1mdW5jdGlvbigpe3JldHVybiBkKGUpfTtjLmNhbGxiYWNrPWZ1bmN0aW9uKCl7TGkoYSxiKX19dmFyIGY9YS5zdGF0ZU5vZGU7bnVsbCE9PWYmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBmLmNvbXBvbmVudERpZENhdGNoJiYoYy5jYWxsYmFjaz1mdW5jdGlvbigpe0xpKGEsYik7XCJmdW5jdGlvblwiIT09dHlwZW9mIGQmJihudWxsPT09Umk/Umk9bmV3IFNldChbdGhpc10pOlJpLmFkZCh0aGlzKSk7dmFyIGM9Yi5zdGFjazt0aGlzLmNvbXBvbmVudERpZENhdGNoKGIudmFsdWUse2NvbXBvbmVudFN0YWNrOm51bGwhPT1jP2M6XCJcIn0pfSk7cmV0dXJuIGN9XG5mdW5jdGlvbiBTaShhLGIsYyl7dmFyIGQ9YS5waW5nQ2FjaGU7aWYobnVsbD09PWQpe2Q9YS5waW5nQ2FjaGU9bmV3IE1pO3ZhciBlPW5ldyBTZXQ7ZC5zZXQoYixlKX1lbHNlIGU9ZC5nZXQoYiksdm9pZCAwPT09ZSYmKGU9bmV3IFNldCxkLnNldChiLGUpKTtlLmhhcyhjKXx8KGUuYWRkKGMpLGE9VGkuYmluZChudWxsLGEsYixjKSxiLnRoZW4oYSxhKSl9ZnVuY3Rpb24gVWkoYSl7ZG97dmFyIGI7aWYoYj0xMz09PWEudGFnKWI9YS5tZW1vaXplZFN0YXRlLGI9bnVsbCE9PWI/bnVsbCE9PWIuZGVoeWRyYXRlZD8hMDohMTohMDtpZihiKXJldHVybiBhO2E9YS5yZXR1cm59d2hpbGUobnVsbCE9PWEpO3JldHVybiBudWxsfVxuZnVuY3Rpb24gVmkoYSxiLGMsZCxlKXtpZigwPT09KGEubW9kZSYxKSlyZXR1cm4gYT09PWI/YS5mbGFnc3w9NjU1MzY6KGEuZmxhZ3N8PTEyOCxjLmZsYWdzfD0xMzEwNzIsYy5mbGFncyY9LTUyODA1LDE9PT1jLnRhZyYmKG51bGw9PT1jLmFsdGVybmF0ZT9jLnRhZz0xNzooYj1taCgtMSwxKSxiLnRhZz0yLG5oKGMsYiwxKSkpLGMubGFuZXN8PTEpLGE7YS5mbGFnc3w9NjU1MzY7YS5sYW5lcz1lO3JldHVybiBhfXZhciBXaT11YS5SZWFjdEN1cnJlbnRPd25lcixkaD0hMTtmdW5jdGlvbiBYaShhLGIsYyxkKXtiLmNoaWxkPW51bGw9PT1hP1ZnKGIsbnVsbCxjLGQpOlVnKGIsYS5jaGlsZCxjLGQpfVxuZnVuY3Rpb24gWWkoYSxiLGMsZCxlKXtjPWMucmVuZGVyO3ZhciBmPWIucmVmO2NoKGIsZSk7ZD1OaChhLGIsYyxkLGYsZSk7Yz1TaCgpO2lmKG51bGwhPT1hJiYhZGgpcmV0dXJuIGIudXBkYXRlUXVldWU9YS51cGRhdGVRdWV1ZSxiLmZsYWdzJj0tMjA1MyxhLmxhbmVzJj1+ZSxaaShhLGIsZSk7SSYmYyYmdmcoYik7Yi5mbGFnc3w9MTtYaShhLGIsZCxlKTtyZXR1cm4gYi5jaGlsZH1cbmZ1bmN0aW9uICRpKGEsYixjLGQsZSl7aWYobnVsbD09PWEpe3ZhciBmPWMudHlwZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZiYmIWFqKGYpJiZ2b2lkIDA9PT1mLmRlZmF1bHRQcm9wcyYmbnVsbD09PWMuY29tcGFyZSYmdm9pZCAwPT09Yy5kZWZhdWx0UHJvcHMpcmV0dXJuIGIudGFnPTE1LGIudHlwZT1mLGJqKGEsYixmLGQsZSk7YT1SZyhjLnR5cGUsbnVsbCxkLGIsYi5tb2RlLGUpO2EucmVmPWIucmVmO2EucmV0dXJuPWI7cmV0dXJuIGIuY2hpbGQ9YX1mPWEuY2hpbGQ7aWYoMD09PShhLmxhbmVzJmUpKXt2YXIgZz1mLm1lbW9pemVkUHJvcHM7Yz1jLmNvbXBhcmU7Yz1udWxsIT09Yz9jOkllO2lmKGMoZyxkKSYmYS5yZWY9PT1iLnJlZilyZXR1cm4gWmkoYSxiLGUpfWIuZmxhZ3N8PTE7YT1QZyhmLGQpO2EucmVmPWIucmVmO2EucmV0dXJuPWI7cmV0dXJuIGIuY2hpbGQ9YX1cbmZ1bmN0aW9uIGJqKGEsYixjLGQsZSl7aWYobnVsbCE9PWEpe3ZhciBmPWEubWVtb2l6ZWRQcm9wcztpZihJZShmLGQpJiZhLnJlZj09PWIucmVmKWlmKGRoPSExLGIucGVuZGluZ1Byb3BzPWQ9ZiwwIT09KGEubGFuZXMmZSkpMCE9PShhLmZsYWdzJjEzMTA3MikmJihkaD0hMCk7ZWxzZSByZXR1cm4gYi5sYW5lcz1hLmxhbmVzLFppKGEsYixlKX1yZXR1cm4gY2ooYSxiLGMsZCxlKX1cbmZ1bmN0aW9uIGRqKGEsYixjKXt2YXIgZD1iLnBlbmRpbmdQcm9wcyxlPWQuY2hpbGRyZW4sZj1udWxsIT09YT9hLm1lbW9pemVkU3RhdGU6bnVsbDtpZihcImhpZGRlblwiPT09ZC5tb2RlKWlmKDA9PT0oYi5tb2RlJjEpKWIubWVtb2l6ZWRTdGF0ZT17YmFzZUxhbmVzOjAsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH0sRyhlaixmaiksZmp8PWM7ZWxzZXtpZigwPT09KGMmMTA3Mzc0MTgyNCkpcmV0dXJuIGE9bnVsbCE9PWY/Zi5iYXNlTGFuZXN8YzpjLGIubGFuZXM9Yi5jaGlsZExhbmVzPTEwNzM3NDE4MjQsYi5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6YSxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfSxiLnVwZGF0ZVF1ZXVlPW51bGwsRyhlaixmaiksZmp8PWEsbnVsbDtiLm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczowLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9O2Q9bnVsbCE9PWY/Zi5iYXNlTGFuZXM6YztHKGVqLGZqKTtmanw9ZH1lbHNlIG51bGwhPT1cbmY/KGQ9Zi5iYXNlTGFuZXN8YyxiLm1lbW9pemVkU3RhdGU9bnVsbCk6ZD1jLEcoZWosZmopLGZqfD1kO1hpKGEsYixlLGMpO3JldHVybiBiLmNoaWxkfWZ1bmN0aW9uIGdqKGEsYil7dmFyIGM9Yi5yZWY7aWYobnVsbD09PWEmJm51bGwhPT1jfHxudWxsIT09YSYmYS5yZWYhPT1jKWIuZmxhZ3N8PTUxMixiLmZsYWdzfD0yMDk3MTUyfWZ1bmN0aW9uIGNqKGEsYixjLGQsZSl7dmFyIGY9WmYoYyk/WGY6SC5jdXJyZW50O2Y9WWYoYixmKTtjaChiLGUpO2M9TmgoYSxiLGMsZCxmLGUpO2Q9U2goKTtpZihudWxsIT09YSYmIWRoKXJldHVybiBiLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWUsYi5mbGFncyY9LTIwNTMsYS5sYW5lcyY9fmUsWmkoYSxiLGUpO0kmJmQmJnZnKGIpO2IuZmxhZ3N8PTE7WGkoYSxiLGMsZSk7cmV0dXJuIGIuY2hpbGR9XG5mdW5jdGlvbiBoaihhLGIsYyxkLGUpe2lmKFpmKGMpKXt2YXIgZj0hMDtjZyhiKX1lbHNlIGY9ITE7Y2goYixlKTtpZihudWxsPT09Yi5zdGF0ZU5vZGUpaWooYSxiKSxHaShiLGMsZCksSWkoYixjLGQsZSksZD0hMDtlbHNlIGlmKG51bGw9PT1hKXt2YXIgZz1iLnN0YXRlTm9kZSxoPWIubWVtb2l6ZWRQcm9wcztnLnByb3BzPWg7dmFyIGs9Zy5jb250ZXh0LGw9Yy5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGwmJm51bGwhPT1sP2w9ZWgobCk6KGw9WmYoYyk/WGY6SC5jdXJyZW50LGw9WWYoYixsKSk7dmFyIG09Yy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMscT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgbXx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGU7cXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHN8fFxuKGghPT1kfHxrIT09bCkmJkhpKGIsZyxkLGwpO2poPSExO3ZhciByPWIubWVtb2l6ZWRTdGF0ZTtnLnN0YXRlPXI7cWgoYixkLGcsZSk7az1iLm1lbW9pemVkU3RhdGU7aCE9PWR8fHIhPT1rfHxXZi5jdXJyZW50fHxqaD8oXCJmdW5jdGlvblwiPT09dHlwZW9mIG0mJihEaShiLGMsbSxkKSxrPWIubWVtb2l6ZWRTdGF0ZSksKGg9amh8fEZpKGIsYyxoLGQscixrLGwpKT8ocXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbE1vdW50fHwoXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50V2lsbE1vdW50JiZnLmNvbXBvbmVudFdpbGxNb3VudCgpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJmcuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnREaWRNb3VudCYmKGIuZmxhZ3N8PTQxOTQzMDgpKTpcbihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnREaWRNb3VudCYmKGIuZmxhZ3N8PTQxOTQzMDgpLGIubWVtb2l6ZWRQcm9wcz1kLGIubWVtb2l6ZWRTdGF0ZT1rKSxnLnByb3BzPWQsZy5zdGF0ZT1rLGcuY29udGV4dD1sLGQ9aCk6KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudERpZE1vdW50JiYoYi5mbGFnc3w9NDE5NDMwOCksZD0hMSl9ZWxzZXtnPWIuc3RhdGVOb2RlO2xoKGEsYik7aD1iLm1lbW9pemVkUHJvcHM7bD1iLnR5cGU9PT1iLmVsZW1lbnRUeXBlP2g6Q2koYi50eXBlLGgpO2cucHJvcHM9bDtxPWIucGVuZGluZ1Byb3BzO3I9Zy5jb250ZXh0O2s9Yy5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGsmJm51bGwhPT1rP2s9ZWgoayk6KGs9WmYoYyk/WGY6SC5jdXJyZW50LGs9WWYoYixrKSk7dmFyIHk9Yy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7KG09XCJmdW5jdGlvblwiPT09dHlwZW9mIHl8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKXx8XG5cImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc3x8KGghPT1xfHxyIT09aykmJkhpKGIsZyxkLGspO2poPSExO3I9Yi5tZW1vaXplZFN0YXRlO2cuc3RhdGU9cjtxaChiLGQsZyxlKTt2YXIgbj1iLm1lbW9pemVkU3RhdGU7aCE9PXF8fHIhPT1ufHxXZi5jdXJyZW50fHxqaD8oXCJmdW5jdGlvblwiPT09dHlwZW9mIHkmJihEaShiLGMseSxkKSxuPWIubWVtb2l6ZWRTdGF0ZSksKGw9amh8fEZpKGIsYyxsLGQscixuLGspfHwhMSk/KG18fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsVXBkYXRlfHwoXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFVwZGF0ZSYmZy5jb21wb25lbnRXaWxsVXBkYXRlKGQsbixrKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmXG5nLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlKGQsbixrKSksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkVXBkYXRlJiYoYi5mbGFnc3w9NCksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUmJihiLmZsYWdzfD0xMDI0KSk6KFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudERpZFVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PWEubWVtb2l6ZWRTdGF0ZXx8KGIuZmxhZ3N8PTQpLFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxoPT09YS5tZW1vaXplZFByb3BzJiZyPT09YS5tZW1vaXplZFN0YXRlfHwoYi5mbGFnc3w9MTAyNCksYi5tZW1vaXplZFByb3BzPWQsYi5tZW1vaXplZFN0YXRlPW4pLGcucHJvcHM9ZCxnLnN0YXRlPW4sZy5jb250ZXh0PWssZD1sKTooXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50RGlkVXBkYXRlfHxoPT09YS5tZW1vaXplZFByb3BzJiZyPT09XG5hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD00KSxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PWEubWVtb2l6ZWRTdGF0ZXx8KGIuZmxhZ3N8PTEwMjQpLGQ9ITEpfXJldHVybiBqaihhLGIsYyxkLGYsZSl9XG5mdW5jdGlvbiBqaihhLGIsYyxkLGUsZil7Z2ooYSxiKTt2YXIgZz0wIT09KGIuZmxhZ3MmMTI4KTtpZighZCYmIWcpcmV0dXJuIGUmJmRnKGIsYywhMSksWmkoYSxiLGYpO2Q9Yi5zdGF0ZU5vZGU7V2kuY3VycmVudD1iO3ZhciBoPWcmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBjLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcj9udWxsOmQucmVuZGVyKCk7Yi5mbGFnc3w9MTtudWxsIT09YSYmZz8oYi5jaGlsZD1VZyhiLGEuY2hpbGQsbnVsbCxmKSxiLmNoaWxkPVVnKGIsbnVsbCxoLGYpKTpYaShhLGIsaCxmKTtiLm1lbW9pemVkU3RhdGU9ZC5zdGF0ZTtlJiZkZyhiLGMsITApO3JldHVybiBiLmNoaWxkfWZ1bmN0aW9uIGtqKGEpe3ZhciBiPWEuc3RhdGVOb2RlO2IucGVuZGluZ0NvbnRleHQ/YWcoYSxiLnBlbmRpbmdDb250ZXh0LGIucGVuZGluZ0NvbnRleHQhPT1iLmNvbnRleHQpOmIuY29udGV4dCYmYWcoYSxiLmNvbnRleHQsITEpO3loKGEsYi5jb250YWluZXJJbmZvKX1cbmZ1bmN0aW9uIGxqKGEsYixjLGQsZSl7SWcoKTtKZyhlKTtiLmZsYWdzfD0yNTY7WGkoYSxiLGMsZCk7cmV0dXJuIGIuY2hpbGR9dmFyIG1qPXtkZWh5ZHJhdGVkOm51bGwsdHJlZUNvbnRleHQ6bnVsbCxyZXRyeUxhbmU6MH07ZnVuY3Rpb24gbmooYSl7cmV0dXJue2Jhc2VMYW5lczphLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9fVxuZnVuY3Rpb24gb2ooYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzLGU9TC5jdXJyZW50LGY9ITEsZz0wIT09KGIuZmxhZ3MmMTI4KSxoOyhoPWcpfHwoaD1udWxsIT09YSYmbnVsbD09PWEubWVtb2l6ZWRTdGF0ZT8hMTowIT09KGUmMikpO2lmKGgpZj0hMCxiLmZsYWdzJj0tMTI5O2Vsc2UgaWYobnVsbD09PWF8fG51bGwhPT1hLm1lbW9pemVkU3RhdGUpZXw9MTtHKEwsZSYxKTtpZihudWxsPT09YSl7RWcoYik7YT1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWEmJihhPWEuZGVoeWRyYXRlZCxudWxsIT09YSkpcmV0dXJuIDA9PT0oYi5tb2RlJjEpP2IubGFuZXM9MTpcIiQhXCI9PT1hLmRhdGE/Yi5sYW5lcz04OmIubGFuZXM9MTA3Mzc0MTgyNCxudWxsO2c9ZC5jaGlsZHJlbjthPWQuZmFsbGJhY2s7cmV0dXJuIGY/KGQ9Yi5tb2RlLGY9Yi5jaGlsZCxnPXttb2RlOlwiaGlkZGVuXCIsY2hpbGRyZW46Z30sMD09PShkJjEpJiZudWxsIT09Zj8oZi5jaGlsZExhbmVzPTAsZi5wZW5kaW5nUHJvcHM9XG5nKTpmPXBqKGcsZCwwLG51bGwpLGE9VGcoYSxkLGMsbnVsbCksZi5yZXR1cm49YixhLnJldHVybj1iLGYuc2libGluZz1hLGIuY2hpbGQ9ZixiLmNoaWxkLm1lbW9pemVkU3RhdGU9bmooYyksYi5tZW1vaXplZFN0YXRlPW1qLGEpOnFqKGIsZyl9ZT1hLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWUmJihoPWUuZGVoeWRyYXRlZCxudWxsIT09aCkpcmV0dXJuIHJqKGEsYixnLGQsaCxlLGMpO2lmKGYpe2Y9ZC5mYWxsYmFjaztnPWIubW9kZTtlPWEuY2hpbGQ7aD1lLnNpYmxpbmc7dmFyIGs9e21vZGU6XCJoaWRkZW5cIixjaGlsZHJlbjpkLmNoaWxkcmVufTswPT09KGcmMSkmJmIuY2hpbGQhPT1lPyhkPWIuY2hpbGQsZC5jaGlsZExhbmVzPTAsZC5wZW5kaW5nUHJvcHM9ayxiLmRlbGV0aW9ucz1udWxsKTooZD1QZyhlLGspLGQuc3VidHJlZUZsYWdzPWUuc3VidHJlZUZsYWdzJjE0NjgwMDY0KTtudWxsIT09aD9mPVBnKGgsZik6KGY9VGcoZixnLGMsbnVsbCksZi5mbGFnc3w9Mik7Zi5yZXR1cm49XG5iO2QucmV0dXJuPWI7ZC5zaWJsaW5nPWY7Yi5jaGlsZD1kO2Q9ZjtmPWIuY2hpbGQ7Zz1hLmNoaWxkLm1lbW9pemVkU3RhdGU7Zz1udWxsPT09Zz9uaihjKTp7YmFzZUxhbmVzOmcuYmFzZUxhbmVzfGMsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6Zy50cmFuc2l0aW9uc307Zi5tZW1vaXplZFN0YXRlPWc7Zi5jaGlsZExhbmVzPWEuY2hpbGRMYW5lcyZ+YztiLm1lbW9pemVkU3RhdGU9bWo7cmV0dXJuIGR9Zj1hLmNoaWxkO2E9Zi5zaWJsaW5nO2Q9UGcoZix7bW9kZTpcInZpc2libGVcIixjaGlsZHJlbjpkLmNoaWxkcmVufSk7MD09PShiLm1vZGUmMSkmJihkLmxhbmVzPWMpO2QucmV0dXJuPWI7ZC5zaWJsaW5nPW51bGw7bnVsbCE9PWEmJihjPWIuZGVsZXRpb25zLG51bGw9PT1jPyhiLmRlbGV0aW9ucz1bYV0sYi5mbGFnc3w9MTYpOmMucHVzaChhKSk7Yi5jaGlsZD1kO2IubWVtb2l6ZWRTdGF0ZT1udWxsO3JldHVybiBkfVxuZnVuY3Rpb24gcWooYSxiKXtiPXBqKHttb2RlOlwidmlzaWJsZVwiLGNoaWxkcmVuOmJ9LGEubW9kZSwwLG51bGwpO2IucmV0dXJuPWE7cmV0dXJuIGEuY2hpbGQ9Yn1mdW5jdGlvbiBzaihhLGIsYyxkKXtudWxsIT09ZCYmSmcoZCk7VWcoYixhLmNoaWxkLG51bGwsYyk7YT1xaihiLGIucGVuZGluZ1Byb3BzLmNoaWxkcmVuKTthLmZsYWdzfD0yO2IubWVtb2l6ZWRTdGF0ZT1udWxsO3JldHVybiBhfVxuZnVuY3Rpb24gcmooYSxiLGMsZCxlLGYsZyl7aWYoYyl7aWYoYi5mbGFncyYyNTYpcmV0dXJuIGIuZmxhZ3MmPS0yNTcsZD1LaShFcnJvcihwKDQyMikpKSxzaihhLGIsZyxkKTtpZihudWxsIT09Yi5tZW1vaXplZFN0YXRlKXJldHVybiBiLmNoaWxkPWEuY2hpbGQsYi5mbGFnc3w9MTI4LG51bGw7Zj1kLmZhbGxiYWNrO2U9Yi5tb2RlO2Q9cGooe21vZGU6XCJ2aXNpYmxlXCIsY2hpbGRyZW46ZC5jaGlsZHJlbn0sZSwwLG51bGwpO2Y9VGcoZixlLGcsbnVsbCk7Zi5mbGFnc3w9MjtkLnJldHVybj1iO2YucmV0dXJuPWI7ZC5zaWJsaW5nPWY7Yi5jaGlsZD1kOzAhPT0oYi5tb2RlJjEpJiZVZyhiLGEuY2hpbGQsbnVsbCxnKTtiLmNoaWxkLm1lbW9pemVkU3RhdGU9bmooZyk7Yi5tZW1vaXplZFN0YXRlPW1qO3JldHVybiBmfWlmKDA9PT0oYi5tb2RlJjEpKXJldHVybiBzaihhLGIsZyxudWxsKTtpZihcIiQhXCI9PT1lLmRhdGEpe2Q9ZS5uZXh0U2libGluZyYmZS5uZXh0U2libGluZy5kYXRhc2V0O1xuaWYoZCl2YXIgaD1kLmRnc3Q7ZD1oO2Y9RXJyb3IocCg0MTkpKTtkPUtpKGYsZCx2b2lkIDApO3JldHVybiBzaihhLGIsZyxkKX1oPTAhPT0oZyZhLmNoaWxkTGFuZXMpO2lmKGRofHxoKXtkPVE7aWYobnVsbCE9PWQpe3N3aXRjaChnJi1nKXtjYXNlIDQ6ZT0yO2JyZWFrO2Nhc2UgMTY6ZT04O2JyZWFrO2Nhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6Y2FzZSA2NzEwODg2NDplPTMyO2JyZWFrO2Nhc2UgNTM2ODcwOTEyOmU9MjY4NDM1NDU2O2JyZWFrO2RlZmF1bHQ6ZT0wfWU9MCE9PShlJihkLnN1c3BlbmRlZExhbmVzfGcpKT8wOmU7XG4wIT09ZSYmZSE9PWYucmV0cnlMYW5lJiYoZi5yZXRyeUxhbmU9ZSxpaChhLGUpLGdpKGQsYSxlLC0xKSl9dGooKTtkPUtpKEVycm9yKHAoNDIxKSkpO3JldHVybiBzaihhLGIsZyxkKX1pZihcIiQ/XCI9PT1lLmRhdGEpcmV0dXJuIGIuZmxhZ3N8PTEyOCxiLmNoaWxkPWEuY2hpbGQsYj11ai5iaW5kKG51bGwsYSksZS5fcmVhY3RSZXRyeT1iLG51bGw7YT1mLnRyZWVDb250ZXh0O3lnPUxmKGUubmV4dFNpYmxpbmcpO3hnPWI7ST0hMDt6Zz1udWxsO251bGwhPT1hJiYob2dbcGcrK109cmcsb2dbcGcrK109c2csb2dbcGcrK109cWcscmc9YS5pZCxzZz1hLm92ZXJmbG93LHFnPWIpO2I9cWooYixkLmNoaWxkcmVuKTtiLmZsYWdzfD00MDk2O3JldHVybiBifWZ1bmN0aW9uIHZqKGEsYixjKXthLmxhbmVzfD1iO3ZhciBkPWEuYWx0ZXJuYXRlO251bGwhPT1kJiYoZC5sYW5lc3w9Yik7YmgoYS5yZXR1cm4sYixjKX1cbmZ1bmN0aW9uIHdqKGEsYixjLGQsZSl7dmFyIGY9YS5tZW1vaXplZFN0YXRlO251bGw9PT1mP2EubWVtb2l6ZWRTdGF0ZT17aXNCYWNrd2FyZHM6YixyZW5kZXJpbmc6bnVsbCxyZW5kZXJpbmdTdGFydFRpbWU6MCxsYXN0OmQsdGFpbDpjLHRhaWxNb2RlOmV9OihmLmlzQmFja3dhcmRzPWIsZi5yZW5kZXJpbmc9bnVsbCxmLnJlbmRlcmluZ1N0YXJ0VGltZT0wLGYubGFzdD1kLGYudGFpbD1jLGYudGFpbE1vZGU9ZSl9XG5mdW5jdGlvbiB4aihhLGIsYyl7dmFyIGQ9Yi5wZW5kaW5nUHJvcHMsZT1kLnJldmVhbE9yZGVyLGY9ZC50YWlsO1hpKGEsYixkLmNoaWxkcmVuLGMpO2Q9TC5jdXJyZW50O2lmKDAhPT0oZCYyKSlkPWQmMXwyLGIuZmxhZ3N8PTEyODtlbHNle2lmKG51bGwhPT1hJiYwIT09KGEuZmxhZ3MmMTI4KSlhOmZvcihhPWIuY2hpbGQ7bnVsbCE9PWE7KXtpZigxMz09PWEudGFnKW51bGwhPT1hLm1lbW9pemVkU3RhdGUmJnZqKGEsYyxiKTtlbHNlIGlmKDE5PT09YS50YWcpdmooYSxjLGIpO2Vsc2UgaWYobnVsbCE9PWEuY2hpbGQpe2EuY2hpbGQucmV0dXJuPWE7YT1hLmNoaWxkO2NvbnRpbnVlfWlmKGE9PT1iKWJyZWFrIGE7Zm9yKDtudWxsPT09YS5zaWJsaW5nOyl7aWYobnVsbD09PWEucmV0dXJufHxhLnJldHVybj09PWIpYnJlYWsgYTthPWEucmV0dXJufWEuc2libGluZy5yZXR1cm49YS5yZXR1cm47YT1hLnNpYmxpbmd9ZCY9MX1HKEwsZCk7aWYoMD09PShiLm1vZGUmMSkpYi5tZW1vaXplZFN0YXRlPVxubnVsbDtlbHNlIHN3aXRjaChlKXtjYXNlIFwiZm9yd2FyZHNcIjpjPWIuY2hpbGQ7Zm9yKGU9bnVsbDtudWxsIT09YzspYT1jLmFsdGVybmF0ZSxudWxsIT09YSYmbnVsbD09PUNoKGEpJiYoZT1jKSxjPWMuc2libGluZztjPWU7bnVsbD09PWM/KGU9Yi5jaGlsZCxiLmNoaWxkPW51bGwpOihlPWMuc2libGluZyxjLnNpYmxpbmc9bnVsbCk7d2ooYiwhMSxlLGMsZik7YnJlYWs7Y2FzZSBcImJhY2t3YXJkc1wiOmM9bnVsbDtlPWIuY2hpbGQ7Zm9yKGIuY2hpbGQ9bnVsbDtudWxsIT09ZTspe2E9ZS5hbHRlcm5hdGU7aWYobnVsbCE9PWEmJm51bGw9PT1DaChhKSl7Yi5jaGlsZD1lO2JyZWFrfWE9ZS5zaWJsaW5nO2Uuc2libGluZz1jO2M9ZTtlPWF9d2ooYiwhMCxjLG51bGwsZik7YnJlYWs7Y2FzZSBcInRvZ2V0aGVyXCI6d2ooYiwhMSxudWxsLG51bGwsdm9pZCAwKTticmVhaztkZWZhdWx0OmIubWVtb2l6ZWRTdGF0ZT1udWxsfXJldHVybiBiLmNoaWxkfVxuZnVuY3Rpb24gaWooYSxiKXswPT09KGIubW9kZSYxKSYmbnVsbCE9PWEmJihhLmFsdGVybmF0ZT1udWxsLGIuYWx0ZXJuYXRlPW51bGwsYi5mbGFnc3w9Mil9ZnVuY3Rpb24gWmkoYSxiLGMpe251bGwhPT1hJiYoYi5kZXBlbmRlbmNpZXM9YS5kZXBlbmRlbmNpZXMpO3JofD1iLmxhbmVzO2lmKDA9PT0oYyZiLmNoaWxkTGFuZXMpKXJldHVybiBudWxsO2lmKG51bGwhPT1hJiZiLmNoaWxkIT09YS5jaGlsZCl0aHJvdyBFcnJvcihwKDE1MykpO2lmKG51bGwhPT1iLmNoaWxkKXthPWIuY2hpbGQ7Yz1QZyhhLGEucGVuZGluZ1Byb3BzKTtiLmNoaWxkPWM7Zm9yKGMucmV0dXJuPWI7bnVsbCE9PWEuc2libGluZzspYT1hLnNpYmxpbmcsYz1jLnNpYmxpbmc9UGcoYSxhLnBlbmRpbmdQcm9wcyksYy5yZXR1cm49YjtjLnNpYmxpbmc9bnVsbH1yZXR1cm4gYi5jaGlsZH1cbmZ1bmN0aW9uIHlqKGEsYixjKXtzd2l0Y2goYi50YWcpe2Nhc2UgMzpraihiKTtJZygpO2JyZWFrO2Nhc2UgNTpBaChiKTticmVhaztjYXNlIDE6WmYoYi50eXBlKSYmY2coYik7YnJlYWs7Y2FzZSA0OnloKGIsYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyk7YnJlYWs7Y2FzZSAxMDp2YXIgZD1iLnR5cGUuX2NvbnRleHQsZT1iLm1lbW9pemVkUHJvcHMudmFsdWU7RyhXZyxkLl9jdXJyZW50VmFsdWUpO2QuX2N1cnJlbnRWYWx1ZT1lO2JyZWFrO2Nhc2UgMTM6ZD1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQpe2lmKG51bGwhPT1kLmRlaHlkcmF0ZWQpcmV0dXJuIEcoTCxMLmN1cnJlbnQmMSksYi5mbGFnc3w9MTI4LG51bGw7aWYoMCE9PShjJmIuY2hpbGQuY2hpbGRMYW5lcykpcmV0dXJuIG9qKGEsYixjKTtHKEwsTC5jdXJyZW50JjEpO2E9WmkoYSxiLGMpO3JldHVybiBudWxsIT09YT9hLnNpYmxpbmc6bnVsbH1HKEwsTC5jdXJyZW50JjEpO2JyZWFrO2Nhc2UgMTk6ZD0wIT09KGMmXG5iLmNoaWxkTGFuZXMpO2lmKDAhPT0oYS5mbGFncyYxMjgpKXtpZihkKXJldHVybiB4aihhLGIsYyk7Yi5mbGFnc3w9MTI4fWU9Yi5tZW1vaXplZFN0YXRlO251bGwhPT1lJiYoZS5yZW5kZXJpbmc9bnVsbCxlLnRhaWw9bnVsbCxlLmxhc3RFZmZlY3Q9bnVsbCk7RyhMLEwuY3VycmVudCk7aWYoZClicmVhaztlbHNlIHJldHVybiBudWxsO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gYi5sYW5lcz0wLGRqKGEsYixjKX1yZXR1cm4gWmkoYSxiLGMpfXZhciB6aixBaixCaixDajtcbnpqPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPWIuY2hpbGQ7bnVsbCE9PWM7KXtpZig1PT09Yy50YWd8fDY9PT1jLnRhZylhLmFwcGVuZENoaWxkKGMuc3RhdGVOb2RlKTtlbHNlIGlmKDQhPT1jLnRhZyYmbnVsbCE9PWMuY2hpbGQpe2MuY2hpbGQucmV0dXJuPWM7Yz1jLmNoaWxkO2NvbnRpbnVlfWlmKGM9PT1iKWJyZWFrO2Zvcig7bnVsbD09PWMuc2libGluZzspe2lmKG51bGw9PT1jLnJldHVybnx8Yy5yZXR1cm49PT1iKXJldHVybjtjPWMucmV0dXJufWMuc2libGluZy5yZXR1cm49Yy5yZXR1cm47Yz1jLnNpYmxpbmd9fTtBaj1mdW5jdGlvbigpe307XG5Caj1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hLm1lbW9pemVkUHJvcHM7aWYoZSE9PWQpe2E9Yi5zdGF0ZU5vZGU7eGgodWguY3VycmVudCk7dmFyIGY9bnVsbDtzd2l0Y2goYyl7Y2FzZSBcImlucHV0XCI6ZT1ZYShhLGUpO2Q9WWEoYSxkKTtmPVtdO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjplPUEoe30sZSx7dmFsdWU6dm9pZCAwfSk7ZD1BKHt9LGQse3ZhbHVlOnZvaWQgMH0pO2Y9W107YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6ZT1nYihhLGUpO2Q9Z2IoYSxkKTtmPVtdO2JyZWFrO2RlZmF1bHQ6XCJmdW5jdGlvblwiIT09dHlwZW9mIGUub25DbGljayYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGQub25DbGljayYmKGEub25jbGljaz1CZil9dWIoYyxkKTt2YXIgZztjPW51bGw7Zm9yKGwgaW4gZSlpZighZC5oYXNPd25Qcm9wZXJ0eShsKSYmZS5oYXNPd25Qcm9wZXJ0eShsKSYmbnVsbCE9ZVtsXSlpZihcInN0eWxlXCI9PT1sKXt2YXIgaD1lW2xdO2ZvcihnIGluIGgpaC5oYXNPd25Qcm9wZXJ0eShnKSYmXG4oY3x8KGM9e30pLGNbZ109XCJcIil9ZWxzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIiE9PWwmJlwiY2hpbGRyZW5cIiE9PWwmJlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1sJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09bCYmXCJhdXRvRm9jdXNcIiE9PWwmJihlYS5oYXNPd25Qcm9wZXJ0eShsKT9mfHwoZj1bXSk6KGY9Znx8W10pLnB1c2gobCxudWxsKSk7Zm9yKGwgaW4gZCl7dmFyIGs9ZFtsXTtoPW51bGwhPWU/ZVtsXTp2b2lkIDA7aWYoZC5oYXNPd25Qcm9wZXJ0eShsKSYmayE9PWgmJihudWxsIT1rfHxudWxsIT1oKSlpZihcInN0eWxlXCI9PT1sKWlmKGgpe2ZvcihnIGluIGgpIWguaGFzT3duUHJvcGVydHkoZyl8fGsmJmsuaGFzT3duUHJvcGVydHkoZyl8fChjfHwoYz17fSksY1tnXT1cIlwiKTtmb3IoZyBpbiBrKWsuaGFzT3duUHJvcGVydHkoZykmJmhbZ10hPT1rW2ddJiYoY3x8KGM9e30pLGNbZ109a1tnXSl9ZWxzZSBjfHwoZnx8KGY9W10pLGYucHVzaChsLFxuYykpLGM9aztlbHNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiPT09bD8oaz1rP2suX19odG1sOnZvaWQgMCxoPWg/aC5fX2h0bWw6dm9pZCAwLG51bGwhPWsmJmghPT1rJiYoZj1mfHxbXSkucHVzaChsLGspKTpcImNoaWxkcmVuXCI9PT1sP1wic3RyaW5nXCIhPT10eXBlb2YgayYmXCJudW1iZXJcIiE9PXR5cGVvZiBrfHwoZj1mfHxbXSkucHVzaChsLFwiXCIrayk6XCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIiE9PWwmJlwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCIhPT1sJiYoZWEuaGFzT3duUHJvcGVydHkobCk/KG51bGwhPWsmJlwib25TY3JvbGxcIj09PWwmJkQoXCJzY3JvbGxcIixhKSxmfHxoPT09a3x8KGY9W10pKTooZj1mfHxbXSkucHVzaChsLGspKX1jJiYoZj1mfHxbXSkucHVzaChcInN0eWxlXCIsYyk7dmFyIGw9ZjtpZihiLnVwZGF0ZVF1ZXVlPWwpYi5mbGFnc3w9NH19O0NqPWZ1bmN0aW9uKGEsYixjLGQpe2MhPT1kJiYoYi5mbGFnc3w9NCl9O1xuZnVuY3Rpb24gRGooYSxiKXtpZighSSlzd2l0Y2goYS50YWlsTW9kZSl7Y2FzZSBcImhpZGRlblwiOmI9YS50YWlsO2Zvcih2YXIgYz1udWxsO251bGwhPT1iOyludWxsIT09Yi5hbHRlcm5hdGUmJihjPWIpLGI9Yi5zaWJsaW5nO251bGw9PT1jP2EudGFpbD1udWxsOmMuc2libGluZz1udWxsO2JyZWFrO2Nhc2UgXCJjb2xsYXBzZWRcIjpjPWEudGFpbDtmb3IodmFyIGQ9bnVsbDtudWxsIT09YzspbnVsbCE9PWMuYWx0ZXJuYXRlJiYoZD1jKSxjPWMuc2libGluZztudWxsPT09ZD9ifHxudWxsPT09YS50YWlsP2EudGFpbD1udWxsOmEudGFpbC5zaWJsaW5nPW51bGw6ZC5zaWJsaW5nPW51bGx9fVxuZnVuY3Rpb24gUyhhKXt2YXIgYj1udWxsIT09YS5hbHRlcm5hdGUmJmEuYWx0ZXJuYXRlLmNoaWxkPT09YS5jaGlsZCxjPTAsZD0wO2lmKGIpZm9yKHZhciBlPWEuY2hpbGQ7bnVsbCE9PWU7KWN8PWUubGFuZXN8ZS5jaGlsZExhbmVzLGR8PWUuc3VidHJlZUZsYWdzJjE0NjgwMDY0LGR8PWUuZmxhZ3MmMTQ2ODAwNjQsZS5yZXR1cm49YSxlPWUuc2libGluZztlbHNlIGZvcihlPWEuY2hpbGQ7bnVsbCE9PWU7KWN8PWUubGFuZXN8ZS5jaGlsZExhbmVzLGR8PWUuc3VidHJlZUZsYWdzLGR8PWUuZmxhZ3MsZS5yZXR1cm49YSxlPWUuc2libGluZzthLnN1YnRyZWVGbGFnc3w9ZDthLmNoaWxkTGFuZXM9YztyZXR1cm4gYn1cbmZ1bmN0aW9uIEVqKGEsYixjKXt2YXIgZD1iLnBlbmRpbmdQcm9wczt3ZyhiKTtzd2l0Y2goYi50YWcpe2Nhc2UgMjpjYXNlIDE2OmNhc2UgMTU6Y2FzZSAwOmNhc2UgMTE6Y2FzZSA3OmNhc2UgODpjYXNlIDEyOmNhc2UgOTpjYXNlIDE0OnJldHVybiBTKGIpLG51bGw7Y2FzZSAxOnJldHVybiBaZihiLnR5cGUpJiYkZigpLFMoYiksbnVsbDtjYXNlIDM6ZD1iLnN0YXRlTm9kZTt6aCgpO0UoV2YpO0UoSCk7RWgoKTtkLnBlbmRpbmdDb250ZXh0JiYoZC5jb250ZXh0PWQucGVuZGluZ0NvbnRleHQsZC5wZW5kaW5nQ29udGV4dD1udWxsKTtpZihudWxsPT09YXx8bnVsbD09PWEuY2hpbGQpR2coYik/Yi5mbGFnc3w9NDpudWxsPT09YXx8YS5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCYmMD09PShiLmZsYWdzJjI1Nil8fChiLmZsYWdzfD0xMDI0LG51bGwhPT16ZyYmKEZqKHpnKSx6Zz1udWxsKSk7QWooYSxiKTtTKGIpO3JldHVybiBudWxsO2Nhc2UgNTpCaChiKTt2YXIgZT14aCh3aC5jdXJyZW50KTtcbmM9Yi50eXBlO2lmKG51bGwhPT1hJiZudWxsIT1iLnN0YXRlTm9kZSlCaihhLGIsYyxkLGUpLGEucmVmIT09Yi5yZWYmJihiLmZsYWdzfD01MTIsYi5mbGFnc3w9MjA5NzE1Mik7ZWxzZXtpZighZCl7aWYobnVsbD09PWIuc3RhdGVOb2RlKXRocm93IEVycm9yKHAoMTY2KSk7UyhiKTtyZXR1cm4gbnVsbH1hPXhoKHVoLmN1cnJlbnQpO2lmKEdnKGIpKXtkPWIuc3RhdGVOb2RlO2M9Yi50eXBlO3ZhciBmPWIubWVtb2l6ZWRQcm9wcztkW09mXT1iO2RbUGZdPWY7YT0wIT09KGIubW9kZSYxKTtzd2l0Y2goYyl7Y2FzZSBcImRpYWxvZ1wiOkQoXCJjYW5jZWxcIixkKTtEKFwiY2xvc2VcIixkKTticmVhaztjYXNlIFwiaWZyYW1lXCI6Y2FzZSBcIm9iamVjdFwiOmNhc2UgXCJlbWJlZFwiOkQoXCJsb2FkXCIsZCk7YnJlYWs7Y2FzZSBcInZpZGVvXCI6Y2FzZSBcImF1ZGlvXCI6Zm9yKGU9MDtlPGxmLmxlbmd0aDtlKyspRChsZltlXSxkKTticmVhaztjYXNlIFwic291cmNlXCI6RChcImVycm9yXCIsZCk7YnJlYWs7Y2FzZSBcImltZ1wiOmNhc2UgXCJpbWFnZVwiOmNhc2UgXCJsaW5rXCI6RChcImVycm9yXCIsXG5kKTtEKFwibG9hZFwiLGQpO2JyZWFrO2Nhc2UgXCJkZXRhaWxzXCI6RChcInRvZ2dsZVwiLGQpO2JyZWFrO2Nhc2UgXCJpbnB1dFwiOlphKGQsZik7RChcImludmFsaWRcIixkKTticmVhaztjYXNlIFwic2VsZWN0XCI6ZC5fd3JhcHBlclN0YXRlPXt3YXNNdWx0aXBsZTohIWYubXVsdGlwbGV9O0QoXCJpbnZhbGlkXCIsZCk7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6aGIoZCxmKSxEKFwiaW52YWxpZFwiLGQpfXViKGMsZik7ZT1udWxsO2Zvcih2YXIgZyBpbiBmKWlmKGYuaGFzT3duUHJvcGVydHkoZykpe3ZhciBoPWZbZ107XCJjaGlsZHJlblwiPT09Zz9cInN0cmluZ1wiPT09dHlwZW9mIGg/ZC50ZXh0Q29udGVudCE9PWgmJighMCE9PWYuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nJiZBZihkLnRleHRDb250ZW50LGgsYSksZT1bXCJjaGlsZHJlblwiLGhdKTpcIm51bWJlclwiPT09dHlwZW9mIGgmJmQudGV4dENvbnRlbnQhPT1cIlwiK2gmJighMCE9PWYuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nJiZBZihkLnRleHRDb250ZW50LFxuaCxhKSxlPVtcImNoaWxkcmVuXCIsXCJcIitoXSk6ZWEuaGFzT3duUHJvcGVydHkoZykmJm51bGwhPWgmJlwib25TY3JvbGxcIj09PWcmJkQoXCJzY3JvbGxcIixkKX1zd2l0Y2goYyl7Y2FzZSBcImlucHV0XCI6VmEoZCk7ZGIoZCxmLCEwKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjpWYShkKTtqYihkKTticmVhaztjYXNlIFwic2VsZWN0XCI6Y2FzZSBcIm9wdGlvblwiOmJyZWFrO2RlZmF1bHQ6XCJmdW5jdGlvblwiPT09dHlwZW9mIGYub25DbGljayYmKGQub25jbGljaz1CZil9ZD1lO2IudXBkYXRlUXVldWU9ZDtudWxsIT09ZCYmKGIuZmxhZ3N8PTQpfWVsc2V7Zz05PT09ZS5ub2RlVHlwZT9lOmUub3duZXJEb2N1bWVudDtcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIj09PWEmJihhPWtiKGMpKTtcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIj09PWE/XCJzY3JpcHRcIj09PWM/KGE9Zy5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGEuaW5uZXJIVE1MPVwiPHNjcmlwdD5cXHgzYy9zY3JpcHQ+XCIsYT1hLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCkpOlxuXCJzdHJpbmdcIj09PXR5cGVvZiBkLmlzP2E9Zy5jcmVhdGVFbGVtZW50KGMse2lzOmQuaXN9KTooYT1nLmNyZWF0ZUVsZW1lbnQoYyksXCJzZWxlY3RcIj09PWMmJihnPWEsZC5tdWx0aXBsZT9nLm11bHRpcGxlPSEwOmQuc2l6ZSYmKGcuc2l6ZT1kLnNpemUpKSk6YT1nLmNyZWF0ZUVsZW1lbnROUyhhLGMpO2FbT2ZdPWI7YVtQZl09ZDt6aihhLGIsITEsITEpO2Iuc3RhdGVOb2RlPWE7YTp7Zz12YihjLGQpO3N3aXRjaChjKXtjYXNlIFwiZGlhbG9nXCI6RChcImNhbmNlbFwiLGEpO0QoXCJjbG9zZVwiLGEpO2U9ZDticmVhaztjYXNlIFwiaWZyYW1lXCI6Y2FzZSBcIm9iamVjdFwiOmNhc2UgXCJlbWJlZFwiOkQoXCJsb2FkXCIsYSk7ZT1kO2JyZWFrO2Nhc2UgXCJ2aWRlb1wiOmNhc2UgXCJhdWRpb1wiOmZvcihlPTA7ZTxsZi5sZW5ndGg7ZSsrKUQobGZbZV0sYSk7ZT1kO2JyZWFrO2Nhc2UgXCJzb3VyY2VcIjpEKFwiZXJyb3JcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcImltZ1wiOmNhc2UgXCJpbWFnZVwiOmNhc2UgXCJsaW5rXCI6RChcImVycm9yXCIsXG5hKTtEKFwibG9hZFwiLGEpO2U9ZDticmVhaztjYXNlIFwiZGV0YWlsc1wiOkQoXCJ0b2dnbGVcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcImlucHV0XCI6WmEoYSxkKTtlPVlhKGEsZCk7RChcImludmFsaWRcIixhKTticmVhaztjYXNlIFwib3B0aW9uXCI6ZT1kO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjphLl93cmFwcGVyU3RhdGU9e3dhc011bHRpcGxlOiEhZC5tdWx0aXBsZX07ZT1BKHt9LGQse3ZhbHVlOnZvaWQgMH0pO0QoXCJpbnZhbGlkXCIsYSk7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6aGIoYSxkKTtlPWdiKGEsZCk7RChcImludmFsaWRcIixhKTticmVhaztkZWZhdWx0OmU9ZH11YihjLGUpO2g9ZTtmb3IoZiBpbiBoKWlmKGguaGFzT3duUHJvcGVydHkoZikpe3ZhciBrPWhbZl07XCJzdHlsZVwiPT09Zj9zYihhLGspOlwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIj09PWY/KGs9az9rLl9faHRtbDp2b2lkIDAsbnVsbCE9ayYmbmIoYSxrKSk6XCJjaGlsZHJlblwiPT09Zj9cInN0cmluZ1wiPT09dHlwZW9mIGs/KFwidGV4dGFyZWFcIiE9PVxuY3x8XCJcIiE9PWspJiZvYihhLGspOlwibnVtYmVyXCI9PT10eXBlb2YgayYmb2IoYSxcIlwiK2spOlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1mJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09ZiYmXCJhdXRvRm9jdXNcIiE9PWYmJihlYS5oYXNPd25Qcm9wZXJ0eShmKT9udWxsIT1rJiZcIm9uU2Nyb2xsXCI9PT1mJiZEKFwic2Nyb2xsXCIsYSk6bnVsbCE9ayYmdGEoYSxmLGssZykpfXN3aXRjaChjKXtjYXNlIFwiaW5wdXRcIjpWYShhKTtkYihhLGQsITEpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOlZhKGEpO2piKGEpO2JyZWFrO2Nhc2UgXCJvcHRpb25cIjpudWxsIT1kLnZhbHVlJiZhLnNldEF0dHJpYnV0ZShcInZhbHVlXCIsXCJcIitTYShkLnZhbHVlKSk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmEubXVsdGlwbGU9ISFkLm11bHRpcGxlO2Y9ZC52YWx1ZTtudWxsIT1mP2ZiKGEsISFkLm11bHRpcGxlLGYsITEpOm51bGwhPWQuZGVmYXVsdFZhbHVlJiZmYihhLCEhZC5tdWx0aXBsZSxkLmRlZmF1bHRWYWx1ZSxcbiEwKTticmVhaztkZWZhdWx0OlwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLm9uQ2xpY2smJihhLm9uY2xpY2s9QmYpfXN3aXRjaChjKXtjYXNlIFwiYnV0dG9uXCI6Y2FzZSBcImlucHV0XCI6Y2FzZSBcInNlbGVjdFwiOmNhc2UgXCJ0ZXh0YXJlYVwiOmQ9ISFkLmF1dG9Gb2N1czticmVhayBhO2Nhc2UgXCJpbWdcIjpkPSEwO2JyZWFrIGE7ZGVmYXVsdDpkPSExfX1kJiYoYi5mbGFnc3w9NCl9bnVsbCE9PWIucmVmJiYoYi5mbGFnc3w9NTEyLGIuZmxhZ3N8PTIwOTcxNTIpfVMoYik7cmV0dXJuIG51bGw7Y2FzZSA2OmlmKGEmJm51bGwhPWIuc3RhdGVOb2RlKUNqKGEsYixhLm1lbW9pemVkUHJvcHMsZCk7ZWxzZXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGQmJm51bGw9PT1iLnN0YXRlTm9kZSl0aHJvdyBFcnJvcihwKDE2NikpO2M9eGgod2guY3VycmVudCk7eGgodWguY3VycmVudCk7aWYoR2coYikpe2Q9Yi5zdGF0ZU5vZGU7Yz1iLm1lbW9pemVkUHJvcHM7ZFtPZl09YjtpZihmPWQubm9kZVZhbHVlIT09YylpZihhPVxueGcsbnVsbCE9PWEpc3dpdGNoKGEudGFnKXtjYXNlIDM6QWYoZC5ub2RlVmFsdWUsYywwIT09KGEubW9kZSYxKSk7YnJlYWs7Y2FzZSA1OiEwIT09YS5tZW1vaXplZFByb3BzLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyYmQWYoZC5ub2RlVmFsdWUsYywwIT09KGEubW9kZSYxKSl9ZiYmKGIuZmxhZ3N8PTQpfWVsc2UgZD0oOT09PWMubm9kZVR5cGU/YzpjLm93bmVyRG9jdW1lbnQpLmNyZWF0ZVRleHROb2RlKGQpLGRbT2ZdPWIsYi5zdGF0ZU5vZGU9ZH1TKGIpO3JldHVybiBudWxsO2Nhc2UgMTM6RShMKTtkPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsPT09YXx8bnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PWEubWVtb2l6ZWRTdGF0ZS5kZWh5ZHJhdGVkKXtpZihJJiZudWxsIT09eWcmJjAhPT0oYi5tb2RlJjEpJiYwPT09KGIuZmxhZ3MmMTI4KSlIZygpLElnKCksYi5mbGFnc3w9OTg1NjAsZj0hMTtlbHNlIGlmKGY9R2coYiksbnVsbCE9PWQmJm51bGwhPT1kLmRlaHlkcmF0ZWQpe2lmKG51bGw9PT1cbmEpe2lmKCFmKXRocm93IEVycm9yKHAoMzE4KSk7Zj1iLm1lbW9pemVkU3RhdGU7Zj1udWxsIT09Zj9mLmRlaHlkcmF0ZWQ6bnVsbDtpZighZil0aHJvdyBFcnJvcihwKDMxNykpO2ZbT2ZdPWJ9ZWxzZSBJZygpLDA9PT0oYi5mbGFncyYxMjgpJiYoYi5tZW1vaXplZFN0YXRlPW51bGwpLGIuZmxhZ3N8PTQ7UyhiKTtmPSExfWVsc2UgbnVsbCE9PXpnJiYoRmooemcpLHpnPW51bGwpLGY9ITA7aWYoIWYpcmV0dXJuIGIuZmxhZ3MmNjU1MzY/YjpudWxsfWlmKDAhPT0oYi5mbGFncyYxMjgpKXJldHVybiBiLmxhbmVzPWMsYjtkPW51bGwhPT1kO2QhPT0obnVsbCE9PWEmJm51bGwhPT1hLm1lbW9pemVkU3RhdGUpJiZkJiYoYi5jaGlsZC5mbGFnc3w9ODE5MiwwIT09KGIubW9kZSYxKSYmKG51bGw9PT1hfHwwIT09KEwuY3VycmVudCYxKT8wPT09VCYmKFQ9Myk6dGooKSkpO251bGwhPT1iLnVwZGF0ZVF1ZXVlJiYoYi5mbGFnc3w9NCk7UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDQ6cmV0dXJuIHpoKCksXG5BaihhLGIpLG51bGw9PT1hJiZzZihiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxTKGIpLG51bGw7Y2FzZSAxMDpyZXR1cm4gYWgoYi50eXBlLl9jb250ZXh0KSxTKGIpLG51bGw7Y2FzZSAxNzpyZXR1cm4gWmYoYi50eXBlKSYmJGYoKSxTKGIpLG51bGw7Y2FzZSAxOTpFKEwpO2Y9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGw9PT1mKXJldHVybiBTKGIpLG51bGw7ZD0wIT09KGIuZmxhZ3MmMTI4KTtnPWYucmVuZGVyaW5nO2lmKG51bGw9PT1nKWlmKGQpRGooZiwhMSk7ZWxzZXtpZigwIT09VHx8bnVsbCE9PWEmJjAhPT0oYS5mbGFncyYxMjgpKWZvcihhPWIuY2hpbGQ7bnVsbCE9PWE7KXtnPUNoKGEpO2lmKG51bGwhPT1nKXtiLmZsYWdzfD0xMjg7RGooZiwhMSk7ZD1nLnVwZGF0ZVF1ZXVlO251bGwhPT1kJiYoYi51cGRhdGVRdWV1ZT1kLGIuZmxhZ3N8PTQpO2Iuc3VidHJlZUZsYWdzPTA7ZD1jO2ZvcihjPWIuY2hpbGQ7bnVsbCE9PWM7KWY9YyxhPWQsZi5mbGFncyY9MTQ2ODAwNjYsXG5nPWYuYWx0ZXJuYXRlLG51bGw9PT1nPyhmLmNoaWxkTGFuZXM9MCxmLmxhbmVzPWEsZi5jaGlsZD1udWxsLGYuc3VidHJlZUZsYWdzPTAsZi5tZW1vaXplZFByb3BzPW51bGwsZi5tZW1vaXplZFN0YXRlPW51bGwsZi51cGRhdGVRdWV1ZT1udWxsLGYuZGVwZW5kZW5jaWVzPW51bGwsZi5zdGF0ZU5vZGU9bnVsbCk6KGYuY2hpbGRMYW5lcz1nLmNoaWxkTGFuZXMsZi5sYW5lcz1nLmxhbmVzLGYuY2hpbGQ9Zy5jaGlsZCxmLnN1YnRyZWVGbGFncz0wLGYuZGVsZXRpb25zPW51bGwsZi5tZW1vaXplZFByb3BzPWcubWVtb2l6ZWRQcm9wcyxmLm1lbW9pemVkU3RhdGU9Zy5tZW1vaXplZFN0YXRlLGYudXBkYXRlUXVldWU9Zy51cGRhdGVRdWV1ZSxmLnR5cGU9Zy50eXBlLGE9Zy5kZXBlbmRlbmNpZXMsZi5kZXBlbmRlbmNpZXM9bnVsbD09PWE/bnVsbDp7bGFuZXM6YS5sYW5lcyxmaXJzdENvbnRleHQ6YS5maXJzdENvbnRleHR9KSxjPWMuc2libGluZztHKEwsTC5jdXJyZW50JjF8Mik7cmV0dXJuIGIuY2hpbGR9YT1cbmEuc2libGluZ31udWxsIT09Zi50YWlsJiZCKCk+R2omJihiLmZsYWdzfD0xMjgsZD0hMCxEaihmLCExKSxiLmxhbmVzPTQxOTQzMDQpfWVsc2V7aWYoIWQpaWYoYT1DaChnKSxudWxsIT09YSl7aWYoYi5mbGFnc3w9MTI4LGQ9ITAsYz1hLnVwZGF0ZVF1ZXVlLG51bGwhPT1jJiYoYi51cGRhdGVRdWV1ZT1jLGIuZmxhZ3N8PTQpLERqKGYsITApLG51bGw9PT1mLnRhaWwmJlwiaGlkZGVuXCI9PT1mLnRhaWxNb2RlJiYhZy5hbHRlcm5hdGUmJiFJKXJldHVybiBTKGIpLG51bGx9ZWxzZSAyKkIoKS1mLnJlbmRlcmluZ1N0YXJ0VGltZT5HaiYmMTA3Mzc0MTgyNCE9PWMmJihiLmZsYWdzfD0xMjgsZD0hMCxEaihmLCExKSxiLmxhbmVzPTQxOTQzMDQpO2YuaXNCYWNrd2FyZHM/KGcuc2libGluZz1iLmNoaWxkLGIuY2hpbGQ9Zyk6KGM9Zi5sYXN0LG51bGwhPT1jP2Muc2libGluZz1nOmIuY2hpbGQ9ZyxmLmxhc3Q9Zyl9aWYobnVsbCE9PWYudGFpbClyZXR1cm4gYj1mLnRhaWwsZi5yZW5kZXJpbmc9XG5iLGYudGFpbD1iLnNpYmxpbmcsZi5yZW5kZXJpbmdTdGFydFRpbWU9QigpLGIuc2libGluZz1udWxsLGM9TC5jdXJyZW50LEcoTCxkP2MmMXwyOmMmMSksYjtTKGIpO3JldHVybiBudWxsO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gSGooKSxkPW51bGwhPT1iLm1lbW9pemVkU3RhdGUsbnVsbCE9PWEmJm51bGwhPT1hLm1lbW9pemVkU3RhdGUhPT1kJiYoYi5mbGFnc3w9ODE5MiksZCYmMCE9PShiLm1vZGUmMSk/MCE9PShmaiYxMDczNzQxODI0KSYmKFMoYiksYi5zdWJ0cmVlRmxhZ3MmNiYmKGIuZmxhZ3N8PTgxOTIpKTpTKGIpLG51bGw7Y2FzZSAyNDpyZXR1cm4gbnVsbDtjYXNlIDI1OnJldHVybiBudWxsfXRocm93IEVycm9yKHAoMTU2LGIudGFnKSk7fVxuZnVuY3Rpb24gSWooYSxiKXt3ZyhiKTtzd2l0Y2goYi50YWcpe2Nhc2UgMTpyZXR1cm4gWmYoYi50eXBlKSYmJGYoKSxhPWIuZmxhZ3MsYSY2NTUzNj8oYi5mbGFncz1hJi02NTUzN3wxMjgsYik6bnVsbDtjYXNlIDM6cmV0dXJuIHpoKCksRShXZiksRShIKSxFaCgpLGE9Yi5mbGFncywwIT09KGEmNjU1MzYpJiYwPT09KGEmMTI4KT8oYi5mbGFncz1hJi02NTUzN3wxMjgsYik6bnVsbDtjYXNlIDU6cmV0dXJuIEJoKGIpLG51bGw7Y2FzZSAxMzpFKEwpO2E9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1hJiZudWxsIT09YS5kZWh5ZHJhdGVkKXtpZihudWxsPT09Yi5hbHRlcm5hdGUpdGhyb3cgRXJyb3IocCgzNDApKTtJZygpfWE9Yi5mbGFncztyZXR1cm4gYSY2NTUzNj8oYi5mbGFncz1hJi02NTUzN3wxMjgsYik6bnVsbDtjYXNlIDE5OnJldHVybiBFKEwpLG51bGw7Y2FzZSA0OnJldHVybiB6aCgpLG51bGw7Y2FzZSAxMDpyZXR1cm4gYWgoYi50eXBlLl9jb250ZXh0KSxudWxsO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gSGooKSxcbm51bGw7Y2FzZSAyNDpyZXR1cm4gbnVsbDtkZWZhdWx0OnJldHVybiBudWxsfX12YXIgSmo9ITEsVT0hMSxLaj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgV2Vha1NldD9XZWFrU2V0OlNldCxWPW51bGw7ZnVuY3Rpb24gTGooYSxiKXt2YXIgYz1hLnJlZjtpZihudWxsIT09YylpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYyl0cnl7YyhudWxsKX1jYXRjaChkKXtXKGEsYixkKX1lbHNlIGMuY3VycmVudD1udWxsfWZ1bmN0aW9uIE1qKGEsYixjKXt0cnl7YygpfWNhdGNoKGQpe1coYSxiLGQpfX12YXIgTmo9ITE7XG5mdW5jdGlvbiBPaihhLGIpe0NmPWRkO2E9TWUoKTtpZihOZShhKSl7aWYoXCJzZWxlY3Rpb25TdGFydFwiaW4gYSl2YXIgYz17c3RhcnQ6YS5zZWxlY3Rpb25TdGFydCxlbmQ6YS5zZWxlY3Rpb25FbmR9O2Vsc2UgYTp7Yz0oYz1hLm93bmVyRG9jdW1lbnQpJiZjLmRlZmF1bHRWaWV3fHx3aW5kb3c7dmFyIGQ9Yy5nZXRTZWxlY3Rpb24mJmMuZ2V0U2VsZWN0aW9uKCk7aWYoZCYmMCE9PWQucmFuZ2VDb3VudCl7Yz1kLmFuY2hvck5vZGU7dmFyIGU9ZC5hbmNob3JPZmZzZXQsZj1kLmZvY3VzTm9kZTtkPWQuZm9jdXNPZmZzZXQ7dHJ5e2Mubm9kZVR5cGUsZi5ub2RlVHlwZX1jYXRjaChGKXtjPW51bGw7YnJlYWsgYX12YXIgZz0wLGg9LTEsaz0tMSxsPTAsbT0wLHE9YSxyPW51bGw7Yjpmb3IoOzspe2Zvcih2YXIgeTs7KXtxIT09Y3x8MCE9PWUmJjMhPT1xLm5vZGVUeXBlfHwoaD1nK2UpO3EhPT1mfHwwIT09ZCYmMyE9PXEubm9kZVR5cGV8fChrPWcrZCk7Mz09PXEubm9kZVR5cGUmJihnKz1cbnEubm9kZVZhbHVlLmxlbmd0aCk7aWYobnVsbD09PSh5PXEuZmlyc3RDaGlsZCkpYnJlYWs7cj1xO3E9eX1mb3IoOzspe2lmKHE9PT1hKWJyZWFrIGI7cj09PWMmJisrbD09PWUmJihoPWcpO3I9PT1mJiYrK209PT1kJiYoaz1nKTtpZihudWxsIT09KHk9cS5uZXh0U2libGluZykpYnJlYWs7cT1yO3I9cS5wYXJlbnROb2RlfXE9eX1jPS0xPT09aHx8LTE9PT1rP251bGw6e3N0YXJ0OmgsZW5kOmt9fWVsc2UgYz1udWxsfWM9Y3x8e3N0YXJ0OjAsZW5kOjB9fWVsc2UgYz1udWxsO0RmPXtmb2N1c2VkRWxlbTphLHNlbGVjdGlvblJhbmdlOmN9O2RkPSExO2ZvcihWPWI7bnVsbCE9PVY7KWlmKGI9VixhPWIuY2hpbGQsMCE9PShiLnN1YnRyZWVGbGFncyYxMDI4KSYmbnVsbCE9PWEpYS5yZXR1cm49YixWPWE7ZWxzZSBmb3IoO251bGwhPT1WOyl7Yj1WO3RyeXt2YXIgbj1iLmFsdGVybmF0ZTtpZigwIT09KGIuZmxhZ3MmMTAyNCkpc3dpdGNoKGIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmJyZWFrO1xuY2FzZSAxOmlmKG51bGwhPT1uKXt2YXIgdD1uLm1lbW9pemVkUHJvcHMsSj1uLm1lbW9pemVkU3RhdGUseD1iLnN0YXRlTm9kZSx3PXguZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUoYi5lbGVtZW50VHlwZT09PWIudHlwZT90OkNpKGIudHlwZSx0KSxKKTt4Ll9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlPXd9YnJlYWs7Y2FzZSAzOnZhciB1PWIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87MT09PXUubm9kZVR5cGU/dS50ZXh0Q29udGVudD1cIlwiOjk9PT11Lm5vZGVUeXBlJiZ1LmRvY3VtZW50RWxlbWVudCYmdS5yZW1vdmVDaGlsZCh1LmRvY3VtZW50RWxlbWVudCk7YnJlYWs7Y2FzZSA1OmNhc2UgNjpjYXNlIDQ6Y2FzZSAxNzpicmVhaztkZWZhdWx0OnRocm93IEVycm9yKHAoMTYzKSk7fX1jYXRjaChGKXtXKGIsYi5yZXR1cm4sRil9YT1iLnNpYmxpbmc7aWYobnVsbCE9PWEpe2EucmV0dXJuPWIucmV0dXJuO1Y9YTticmVha31WPWIucmV0dXJufW49Tmo7Tmo9ITE7cmV0dXJuIG59XG5mdW5jdGlvbiBQaihhLGIsYyl7dmFyIGQ9Yi51cGRhdGVRdWV1ZTtkPW51bGwhPT1kP2QubGFzdEVmZmVjdDpudWxsO2lmKG51bGwhPT1kKXt2YXIgZT1kPWQubmV4dDtkb3tpZigoZS50YWcmYSk9PT1hKXt2YXIgZj1lLmRlc3Ryb3k7ZS5kZXN0cm95PXZvaWQgMDt2b2lkIDAhPT1mJiZNaihiLGMsZil9ZT1lLm5leHR9d2hpbGUoZSE9PWQpfX1mdW5jdGlvbiBRaihhLGIpe2I9Yi51cGRhdGVRdWV1ZTtiPW51bGwhPT1iP2IubGFzdEVmZmVjdDpudWxsO2lmKG51bGwhPT1iKXt2YXIgYz1iPWIubmV4dDtkb3tpZigoYy50YWcmYSk9PT1hKXt2YXIgZD1jLmNyZWF0ZTtjLmRlc3Ryb3k9ZCgpfWM9Yy5uZXh0fXdoaWxlKGMhPT1iKX19ZnVuY3Rpb24gUmooYSl7dmFyIGI9YS5yZWY7aWYobnVsbCE9PWIpe3ZhciBjPWEuc3RhdGVOb2RlO3N3aXRjaChhLnRhZyl7Y2FzZSA1OmE9YzticmVhaztkZWZhdWx0OmE9Y31cImZ1bmN0aW9uXCI9PT10eXBlb2YgYj9iKGEpOmIuY3VycmVudD1hfX1cbmZ1bmN0aW9uIFNqKGEpe3ZhciBiPWEuYWx0ZXJuYXRlO251bGwhPT1iJiYoYS5hbHRlcm5hdGU9bnVsbCxTaihiKSk7YS5jaGlsZD1udWxsO2EuZGVsZXRpb25zPW51bGw7YS5zaWJsaW5nPW51bGw7NT09PWEudGFnJiYoYj1hLnN0YXRlTm9kZSxudWxsIT09YiYmKGRlbGV0ZSBiW09mXSxkZWxldGUgYltQZl0sZGVsZXRlIGJbb2ZdLGRlbGV0ZSBiW1FmXSxkZWxldGUgYltSZl0pKTthLnN0YXRlTm9kZT1udWxsO2EucmV0dXJuPW51bGw7YS5kZXBlbmRlbmNpZXM9bnVsbDthLm1lbW9pemVkUHJvcHM9bnVsbDthLm1lbW9pemVkU3RhdGU9bnVsbDthLnBlbmRpbmdQcm9wcz1udWxsO2Euc3RhdGVOb2RlPW51bGw7YS51cGRhdGVRdWV1ZT1udWxsfWZ1bmN0aW9uIFRqKGEpe3JldHVybiA1PT09YS50YWd8fDM9PT1hLnRhZ3x8ND09PWEudGFnfVxuZnVuY3Rpb24gVWooYSl7YTpmb3IoOzspe2Zvcig7bnVsbD09PWEuc2libGluZzspe2lmKG51bGw9PT1hLnJldHVybnx8VGooYS5yZXR1cm4pKXJldHVybiBudWxsO2E9YS5yZXR1cm59YS5zaWJsaW5nLnJldHVybj1hLnJldHVybjtmb3IoYT1hLnNpYmxpbmc7NSE9PWEudGFnJiY2IT09YS50YWcmJjE4IT09YS50YWc7KXtpZihhLmZsYWdzJjIpY29udGludWUgYTtpZihudWxsPT09YS5jaGlsZHx8ND09PWEudGFnKWNvbnRpbnVlIGE7ZWxzZSBhLmNoaWxkLnJldHVybj1hLGE9YS5jaGlsZH1pZighKGEuZmxhZ3MmMikpcmV0dXJuIGEuc3RhdGVOb2RlfX1cbmZ1bmN0aW9uIFZqKGEsYixjKXt2YXIgZD1hLnRhZztpZig1PT09ZHx8Nj09PWQpYT1hLnN0YXRlTm9kZSxiPzg9PT1jLm5vZGVUeXBlP2MucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxiKTpjLmluc2VydEJlZm9yZShhLGIpOig4PT09Yy5ub2RlVHlwZT8oYj1jLnBhcmVudE5vZGUsYi5pbnNlcnRCZWZvcmUoYSxjKSk6KGI9YyxiLmFwcGVuZENoaWxkKGEpKSxjPWMuX3JlYWN0Um9vdENvbnRhaW5lcixudWxsIT09YyYmdm9pZCAwIT09Y3x8bnVsbCE9PWIub25jbGlja3x8KGIub25jbGljaz1CZikpO2Vsc2UgaWYoNCE9PWQmJihhPWEuY2hpbGQsbnVsbCE9PWEpKWZvcihWaihhLGIsYyksYT1hLnNpYmxpbmc7bnVsbCE9PWE7KVZqKGEsYixjKSxhPWEuc2libGluZ31cbmZ1bmN0aW9uIFdqKGEsYixjKXt2YXIgZD1hLnRhZztpZig1PT09ZHx8Nj09PWQpYT1hLnN0YXRlTm9kZSxiP2MuaW5zZXJ0QmVmb3JlKGEsYik6Yy5hcHBlbmRDaGlsZChhKTtlbHNlIGlmKDQhPT1kJiYoYT1hLmNoaWxkLG51bGwhPT1hKSlmb3IoV2ooYSxiLGMpLGE9YS5zaWJsaW5nO251bGwhPT1hOylXaihhLGIsYyksYT1hLnNpYmxpbmd9dmFyIFg9bnVsbCxYaj0hMTtmdW5jdGlvbiBZaihhLGIsYyl7Zm9yKGM9Yy5jaGlsZDtudWxsIT09YzspWmooYSxiLGMpLGM9Yy5zaWJsaW5nfVxuZnVuY3Rpb24gWmooYSxiLGMpe2lmKGxjJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgbGMub25Db21taXRGaWJlclVubW91bnQpdHJ5e2xjLm9uQ29tbWl0RmliZXJVbm1vdW50KGtjLGMpfWNhdGNoKGgpe31zd2l0Y2goYy50YWcpe2Nhc2UgNTpVfHxMaihjLGIpO2Nhc2UgNjp2YXIgZD1YLGU9WGo7WD1udWxsO1lqKGEsYixjKTtYPWQ7WGo9ZTtudWxsIT09WCYmKFhqPyhhPVgsYz1jLnN0YXRlTm9kZSw4PT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYyk6YS5yZW1vdmVDaGlsZChjKSk6WC5yZW1vdmVDaGlsZChjLnN0YXRlTm9kZSkpO2JyZWFrO2Nhc2UgMTg6bnVsbCE9PVgmJihYaj8oYT1YLGM9Yy5zdGF0ZU5vZGUsOD09PWEubm9kZVR5cGU/S2YoYS5wYXJlbnROb2RlLGMpOjE9PT1hLm5vZGVUeXBlJiZLZihhLGMpLGJkKGEpKTpLZihYLGMuc3RhdGVOb2RlKSk7YnJlYWs7Y2FzZSA0OmQ9WDtlPVhqO1g9Yy5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztYaj0hMDtcbllqKGEsYixjKTtYPWQ7WGo9ZTticmVhaztjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6aWYoIVUmJihkPWMudXBkYXRlUXVldWUsbnVsbCE9PWQmJihkPWQubGFzdEVmZmVjdCxudWxsIT09ZCkpKXtlPWQ9ZC5uZXh0O2Rve3ZhciBmPWUsZz1mLmRlc3Ryb3k7Zj1mLnRhZzt2b2lkIDAhPT1nJiYoMCE9PShmJjIpP01qKGMsYixnKTowIT09KGYmNCkmJk1qKGMsYixnKSk7ZT1lLm5leHR9d2hpbGUoZSE9PWQpfVlqKGEsYixjKTticmVhaztjYXNlIDE6aWYoIVUmJihMaihjLGIpLGQ9Yy5zdGF0ZU5vZGUsXCJmdW5jdGlvblwiPT09dHlwZW9mIGQuY29tcG9uZW50V2lsbFVubW91bnQpKXRyeXtkLnByb3BzPWMubWVtb2l6ZWRQcm9wcyxkLnN0YXRlPWMubWVtb2l6ZWRTdGF0ZSxkLmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2goaCl7VyhjLGIsaCl9WWooYSxiLGMpO2JyZWFrO2Nhc2UgMjE6WWooYSxiLGMpO2JyZWFrO2Nhc2UgMjI6Yy5tb2RlJjE/KFU9KGQ9VSl8fG51bGwhPT1cbmMubWVtb2l6ZWRTdGF0ZSxZaihhLGIsYyksVT1kKTpZaihhLGIsYyk7YnJlYWs7ZGVmYXVsdDpZaihhLGIsYyl9fWZ1bmN0aW9uIGFrKGEpe3ZhciBiPWEudXBkYXRlUXVldWU7aWYobnVsbCE9PWIpe2EudXBkYXRlUXVldWU9bnVsbDt2YXIgYz1hLnN0YXRlTm9kZTtudWxsPT09YyYmKGM9YS5zdGF0ZU5vZGU9bmV3IEtqKTtiLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGQ9YmsuYmluZChudWxsLGEsYik7Yy5oYXMoYil8fChjLmFkZChiKSxiLnRoZW4oZCxkKSl9KX19XG5mdW5jdGlvbiBjayhhLGIpe3ZhciBjPWIuZGVsZXRpb25zO2lmKG51bGwhPT1jKWZvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1jW2RdO3RyeXt2YXIgZj1hLGc9YixoPWc7YTpmb3IoO251bGwhPT1oOyl7c3dpdGNoKGgudGFnKXtjYXNlIDU6WD1oLnN0YXRlTm9kZTtYaj0hMTticmVhayBhO2Nhc2UgMzpYPWguc3RhdGVOb2RlLmNvbnRhaW5lckluZm87WGo9ITA7YnJlYWsgYTtjYXNlIDQ6WD1oLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO1hqPSEwO2JyZWFrIGF9aD1oLnJldHVybn1pZihudWxsPT09WCl0aHJvdyBFcnJvcihwKDE2MCkpO1pqKGYsZyxlKTtYPW51bGw7WGo9ITE7dmFyIGs9ZS5hbHRlcm5hdGU7bnVsbCE9PWsmJihrLnJldHVybj1udWxsKTtlLnJldHVybj1udWxsfWNhdGNoKGwpe1coZSxiLGwpfX1pZihiLnN1YnRyZWVGbGFncyYxMjg1NClmb3IoYj1iLmNoaWxkO251bGwhPT1iOylkayhiLGEpLGI9Yi5zaWJsaW5nfVxuZnVuY3Rpb24gZGsoYSxiKXt2YXIgYz1hLmFsdGVybmF0ZSxkPWEuZmxhZ3M7c3dpdGNoKGEudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6Y2soYixhKTtlayhhKTtpZihkJjQpe3RyeXtQaigzLGEsYS5yZXR1cm4pLFFqKDMsYSl9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfXRyeXtQaig1LGEsYS5yZXR1cm4pfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19YnJlYWs7Y2FzZSAxOmNrKGIsYSk7ZWsoYSk7ZCY1MTImJm51bGwhPT1jJiZMaihjLGMucmV0dXJuKTticmVhaztjYXNlIDU6Y2soYixhKTtlayhhKTtkJjUxMiYmbnVsbCE9PWMmJkxqKGMsYy5yZXR1cm4pO2lmKGEuZmxhZ3MmMzIpe3ZhciBlPWEuc3RhdGVOb2RlO3RyeXtvYihlLFwiXCIpfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19aWYoZCY0JiYoZT1hLnN0YXRlTm9kZSxudWxsIT1lKSl7dmFyIGY9YS5tZW1vaXplZFByb3BzLGc9bnVsbCE9PWM/Yy5tZW1vaXplZFByb3BzOmYsaD1hLnR5cGUsaz1hLnVwZGF0ZVF1ZXVlO1xuYS51cGRhdGVRdWV1ZT1udWxsO2lmKG51bGwhPT1rKXRyeXtcImlucHV0XCI9PT1oJiZcInJhZGlvXCI9PT1mLnR5cGUmJm51bGwhPWYubmFtZSYmYWIoZSxmKTt2YihoLGcpO3ZhciBsPXZiKGgsZik7Zm9yKGc9MDtnPGsubGVuZ3RoO2crPTIpe3ZhciBtPWtbZ10scT1rW2crMV07XCJzdHlsZVwiPT09bT9zYihlLHEpOlwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIj09PW0/bmIoZSxxKTpcImNoaWxkcmVuXCI9PT1tP29iKGUscSk6dGEoZSxtLHEsbCl9c3dpdGNoKGgpe2Nhc2UgXCJpbnB1dFwiOmJiKGUsZik7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6aWIoZSxmKTticmVhaztjYXNlIFwic2VsZWN0XCI6dmFyIHI9ZS5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlO2UuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZT0hIWYubXVsdGlwbGU7dmFyIHk9Zi52YWx1ZTtudWxsIT15P2ZiKGUsISFmLm11bHRpcGxlLHksITEpOnIhPT0hIWYubXVsdGlwbGUmJihudWxsIT1mLmRlZmF1bHRWYWx1ZT9mYihlLCEhZi5tdWx0aXBsZSxcbmYuZGVmYXVsdFZhbHVlLCEwKTpmYihlLCEhZi5tdWx0aXBsZSxmLm11bHRpcGxlP1tdOlwiXCIsITEpKX1lW1BmXT1mfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19YnJlYWs7Y2FzZSA2OmNrKGIsYSk7ZWsoYSk7aWYoZCY0KXtpZihudWxsPT09YS5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IocCgxNjIpKTtlPWEuc3RhdGVOb2RlO2Y9YS5tZW1vaXplZFByb3BzO3RyeXtlLm5vZGVWYWx1ZT1mfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19YnJlYWs7Y2FzZSAzOmNrKGIsYSk7ZWsoYSk7aWYoZCY0JiZudWxsIT09YyYmYy5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl0cnl7YmQoYi5jb250YWluZXJJbmZvKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9YnJlYWs7Y2FzZSA0OmNrKGIsYSk7ZWsoYSk7YnJlYWs7Y2FzZSAxMzpjayhiLGEpO2VrKGEpO2U9YS5jaGlsZDtlLmZsYWdzJjgxOTImJihmPW51bGwhPT1lLm1lbW9pemVkU3RhdGUsZS5zdGF0ZU5vZGUuaXNIaWRkZW49ZiwhZnx8XG5udWxsIT09ZS5hbHRlcm5hdGUmJm51bGwhPT1lLmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlfHwoZms9QigpKSk7ZCY0JiZhayhhKTticmVhaztjYXNlIDIyOm09bnVsbCE9PWMmJm51bGwhPT1jLm1lbW9pemVkU3RhdGU7YS5tb2RlJjE/KFU9KGw9VSl8fG0sY2soYixhKSxVPWwpOmNrKGIsYSk7ZWsoYSk7aWYoZCY4MTkyKXtsPW51bGwhPT1hLm1lbW9pemVkU3RhdGU7aWYoKGEuc3RhdGVOb2RlLmlzSGlkZGVuPWwpJiYhbSYmMCE9PShhLm1vZGUmMSkpZm9yKFY9YSxtPWEuY2hpbGQ7bnVsbCE9PW07KXtmb3IocT1WPW07bnVsbCE9PVY7KXtyPVY7eT1yLmNoaWxkO3N3aXRjaChyLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OlBqKDQscixyLnJldHVybik7YnJlYWs7Y2FzZSAxOkxqKHIsci5yZXR1cm4pO3ZhciBuPXIuc3RhdGVOb2RlO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBuLmNvbXBvbmVudFdpbGxVbm1vdW50KXtkPXI7Yz1yLnJldHVybjt0cnl7Yj1kLG4ucHJvcHM9XG5iLm1lbW9pemVkUHJvcHMsbi5zdGF0ZT1iLm1lbW9pemVkU3RhdGUsbi5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKHQpe1coZCxjLHQpfX1icmVhaztjYXNlIDU6TGoocixyLnJldHVybik7YnJlYWs7Y2FzZSAyMjppZihudWxsIT09ci5tZW1vaXplZFN0YXRlKXtnayhxKTtjb250aW51ZX19bnVsbCE9PXk/KHkucmV0dXJuPXIsVj15KTpnayhxKX1tPW0uc2libGluZ31hOmZvcihtPW51bGwscT1hOzspe2lmKDU9PT1xLnRhZyl7aWYobnVsbD09PW0pe209cTt0cnl7ZT1xLnN0YXRlTm9kZSxsPyhmPWUuc3R5bGUsXCJmdW5jdGlvblwiPT09dHlwZW9mIGYuc2V0UHJvcGVydHk/Zi5zZXRQcm9wZXJ0eShcImRpc3BsYXlcIixcIm5vbmVcIixcImltcG9ydGFudFwiKTpmLmRpc3BsYXk9XCJub25lXCIpOihoPXEuc3RhdGVOb2RlLGs9cS5tZW1vaXplZFByb3BzLnN0eWxlLGc9dm9pZCAwIT09ayYmbnVsbCE9PWsmJmsuaGFzT3duUHJvcGVydHkoXCJkaXNwbGF5XCIpP2suZGlzcGxheTpudWxsLGguc3R5bGUuZGlzcGxheT1cbnJiKFwiZGlzcGxheVwiLGcpKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fX1lbHNlIGlmKDY9PT1xLnRhZyl7aWYobnVsbD09PW0pdHJ5e3Euc3RhdGVOb2RlLm5vZGVWYWx1ZT1sP1wiXCI6cS5tZW1vaXplZFByb3BzfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19ZWxzZSBpZigoMjIhPT1xLnRhZyYmMjMhPT1xLnRhZ3x8bnVsbD09PXEubWVtb2l6ZWRTdGF0ZXx8cT09PWEpJiZudWxsIT09cS5jaGlsZCl7cS5jaGlsZC5yZXR1cm49cTtxPXEuY2hpbGQ7Y29udGludWV9aWYocT09PWEpYnJlYWsgYTtmb3IoO251bGw9PT1xLnNpYmxpbmc7KXtpZihudWxsPT09cS5yZXR1cm58fHEucmV0dXJuPT09YSlicmVhayBhO209PT1xJiYobT1udWxsKTtxPXEucmV0dXJufW09PT1xJiYobT1udWxsKTtxLnNpYmxpbmcucmV0dXJuPXEucmV0dXJuO3E9cS5zaWJsaW5nfX1icmVhaztjYXNlIDE5OmNrKGIsYSk7ZWsoYSk7ZCY0JiZhayhhKTticmVhaztjYXNlIDIxOmJyZWFrO2RlZmF1bHQ6Y2soYixcbmEpLGVrKGEpfX1mdW5jdGlvbiBlayhhKXt2YXIgYj1hLmZsYWdzO2lmKGImMil7dHJ5e2E6e2Zvcih2YXIgYz1hLnJldHVybjtudWxsIT09Yzspe2lmKFRqKGMpKXt2YXIgZD1jO2JyZWFrIGF9Yz1jLnJldHVybn10aHJvdyBFcnJvcihwKDE2MCkpO31zd2l0Y2goZC50YWcpe2Nhc2UgNTp2YXIgZT1kLnN0YXRlTm9kZTtkLmZsYWdzJjMyJiYob2IoZSxcIlwiKSxkLmZsYWdzJj0tMzMpO3ZhciBmPVVqKGEpO1dqKGEsZixlKTticmVhaztjYXNlIDM6Y2FzZSA0OnZhciBnPWQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8saD1VaihhKTtWaihhLGgsZyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihwKDE2MSkpO319Y2F0Y2goayl7VyhhLGEucmV0dXJuLGspfWEuZmxhZ3MmPS0zfWImNDA5NiYmKGEuZmxhZ3MmPS00MDk3KX1mdW5jdGlvbiBoayhhLGIsYyl7Vj1hO2lrKGEsYixjKX1cbmZ1bmN0aW9uIGlrKGEsYixjKXtmb3IodmFyIGQ9MCE9PShhLm1vZGUmMSk7bnVsbCE9PVY7KXt2YXIgZT1WLGY9ZS5jaGlsZDtpZigyMj09PWUudGFnJiZkKXt2YXIgZz1udWxsIT09ZS5tZW1vaXplZFN0YXRlfHxKajtpZighZyl7dmFyIGg9ZS5hbHRlcm5hdGUsaz1udWxsIT09aCYmbnVsbCE9PWgubWVtb2l6ZWRTdGF0ZXx8VTtoPUpqO3ZhciBsPVU7Smo9ZztpZigoVT1rKSYmIWwpZm9yKFY9ZTtudWxsIT09VjspZz1WLGs9Zy5jaGlsZCwyMj09PWcudGFnJiZudWxsIT09Zy5tZW1vaXplZFN0YXRlP2prKGUpOm51bGwhPT1rPyhrLnJldHVybj1nLFY9ayk6amsoZSk7Zm9yKDtudWxsIT09ZjspVj1mLGlrKGYsYixjKSxmPWYuc2libGluZztWPWU7Smo9aDtVPWx9a2soYSxiLGMpfWVsc2UgMCE9PShlLnN1YnRyZWVGbGFncyY4NzcyKSYmbnVsbCE9PWY/KGYucmV0dXJuPWUsVj1mKTprayhhLGIsYyl9fVxuZnVuY3Rpb24ga2soYSl7Zm9yKDtudWxsIT09Vjspe3ZhciBiPVY7aWYoMCE9PShiLmZsYWdzJjg3NzIpKXt2YXIgYz1iLmFsdGVybmF0ZTt0cnl7aWYoMCE9PShiLmZsYWdzJjg3NzIpKXN3aXRjaChiLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpVfHxRaig1LGIpO2JyZWFrO2Nhc2UgMTp2YXIgZD1iLnN0YXRlTm9kZTtpZihiLmZsYWdzJjQmJiFVKWlmKG51bGw9PT1jKWQuY29tcG9uZW50RGlkTW91bnQoKTtlbHNle3ZhciBlPWIuZWxlbWVudFR5cGU9PT1iLnR5cGU/Yy5tZW1vaXplZFByb3BzOkNpKGIudHlwZSxjLm1lbW9pemVkUHJvcHMpO2QuY29tcG9uZW50RGlkVXBkYXRlKGUsYy5tZW1vaXplZFN0YXRlLGQuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGUpfXZhciBmPWIudXBkYXRlUXVldWU7bnVsbCE9PWYmJnNoKGIsZixkKTticmVhaztjYXNlIDM6dmFyIGc9Yi51cGRhdGVRdWV1ZTtpZihudWxsIT09Zyl7Yz1udWxsO2lmKG51bGwhPT1iLmNoaWxkKXN3aXRjaChiLmNoaWxkLnRhZyl7Y2FzZSA1OmM9XG5iLmNoaWxkLnN0YXRlTm9kZTticmVhaztjYXNlIDE6Yz1iLmNoaWxkLnN0YXRlTm9kZX1zaChiLGcsYyl9YnJlYWs7Y2FzZSA1OnZhciBoPWIuc3RhdGVOb2RlO2lmKG51bGw9PT1jJiZiLmZsYWdzJjQpe2M9aDt2YXIgaz1iLm1lbW9pemVkUHJvcHM7c3dpdGNoKGIudHlwZSl7Y2FzZSBcImJ1dHRvblwiOmNhc2UgXCJpbnB1dFwiOmNhc2UgXCJzZWxlY3RcIjpjYXNlIFwidGV4dGFyZWFcIjprLmF1dG9Gb2N1cyYmYy5mb2N1cygpO2JyZWFrO2Nhc2UgXCJpbWdcIjprLnNyYyYmKGMuc3JjPWsuc3JjKX19YnJlYWs7Y2FzZSA2OmJyZWFrO2Nhc2UgNDpicmVhaztjYXNlIDEyOmJyZWFrO2Nhc2UgMTM6aWYobnVsbD09PWIubWVtb2l6ZWRTdGF0ZSl7dmFyIGw9Yi5hbHRlcm5hdGU7aWYobnVsbCE9PWwpe3ZhciBtPWwubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09bSl7dmFyIHE9bS5kZWh5ZHJhdGVkO251bGwhPT1xJiZiZChxKX19fWJyZWFrO2Nhc2UgMTk6Y2FzZSAxNzpjYXNlIDIxOmNhc2UgMjI6Y2FzZSAyMzpjYXNlIDI1OmJyZWFrO1xuZGVmYXVsdDp0aHJvdyBFcnJvcihwKDE2MykpO31VfHxiLmZsYWdzJjUxMiYmUmooYil9Y2F0Y2gocil7VyhiLGIucmV0dXJuLHIpfX1pZihiPT09YSl7Vj1udWxsO2JyZWFrfWM9Yi5zaWJsaW5nO2lmKG51bGwhPT1jKXtjLnJldHVybj1iLnJldHVybjtWPWM7YnJlYWt9Vj1iLnJldHVybn19ZnVuY3Rpb24gZ2soYSl7Zm9yKDtudWxsIT09Vjspe3ZhciBiPVY7aWYoYj09PWEpe1Y9bnVsbDticmVha312YXIgYz1iLnNpYmxpbmc7aWYobnVsbCE9PWMpe2MucmV0dXJuPWIucmV0dXJuO1Y9YzticmVha31WPWIucmV0dXJufX1cbmZ1bmN0aW9uIGprKGEpe2Zvcig7bnVsbCE9PVY7KXt2YXIgYj1WO3RyeXtzd2l0Y2goYi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6dmFyIGM9Yi5yZXR1cm47dHJ5e1FqKDQsYil9Y2F0Y2goayl7VyhiLGMsayl9YnJlYWs7Y2FzZSAxOnZhciBkPWIuc3RhdGVOb2RlO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLmNvbXBvbmVudERpZE1vdW50KXt2YXIgZT1iLnJldHVybjt0cnl7ZC5jb21wb25lbnREaWRNb3VudCgpfWNhdGNoKGspe1coYixlLGspfX12YXIgZj1iLnJldHVybjt0cnl7UmooYil9Y2F0Y2goayl7VyhiLGYsayl9YnJlYWs7Y2FzZSA1OnZhciBnPWIucmV0dXJuO3RyeXtSaihiKX1jYXRjaChrKXtXKGIsZyxrKX19fWNhdGNoKGspe1coYixiLnJldHVybixrKX1pZihiPT09YSl7Vj1udWxsO2JyZWFrfXZhciBoPWIuc2libGluZztpZihudWxsIT09aCl7aC5yZXR1cm49Yi5yZXR1cm47Vj1oO2JyZWFrfVY9Yi5yZXR1cm59fVxudmFyIGxrPU1hdGguY2VpbCxtaz11YS5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLG5rPXVhLlJlYWN0Q3VycmVudE93bmVyLG9rPXVhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLEs9MCxRPW51bGwsWT1udWxsLFo9MCxmaj0wLGVqPVVmKDApLFQ9MCxwaz1udWxsLHJoPTAscWs9MCxyaz0wLHNrPW51bGwsdGs9bnVsbCxmaz0wLEdqPUluZmluaXR5LHVrPW51bGwsT2k9ITEsUGk9bnVsbCxSaT1udWxsLHZrPSExLHdrPW51bGwseGs9MCx5az0wLHprPW51bGwsQWs9LTEsQms9MDtmdW5jdGlvbiBSKCl7cmV0dXJuIDAhPT0oSyY2KT9CKCk6LTEhPT1Baz9BazpBaz1CKCl9XG5mdW5jdGlvbiB5aShhKXtpZigwPT09KGEubW9kZSYxKSlyZXR1cm4gMTtpZigwIT09KEsmMikmJjAhPT1aKXJldHVybiBaJi1aO2lmKG51bGwhPT1LZy50cmFuc2l0aW9uKXJldHVybiAwPT09QmsmJihCaz15YygpKSxCazthPUM7aWYoMCE9PWEpcmV0dXJuIGE7YT13aW5kb3cuZXZlbnQ7YT12b2lkIDA9PT1hPzE2OmpkKGEudHlwZSk7cmV0dXJuIGF9ZnVuY3Rpb24gZ2koYSxiLGMsZCl7aWYoNTA8eWspdGhyb3cgeWs9MCx6az1udWxsLEVycm9yKHAoMTg1KSk7QWMoYSxjLGQpO2lmKDA9PT0oSyYyKXx8YSE9PVEpYT09PVEmJigwPT09KEsmMikmJihxa3w9YyksND09PVQmJkNrKGEsWikpLERrKGEsZCksMT09PWMmJjA9PT1LJiYwPT09KGIubW9kZSYxKSYmKEdqPUIoKSs1MDAsZmcmJmpnKCkpfVxuZnVuY3Rpb24gRGsoYSxiKXt2YXIgYz1hLmNhbGxiYWNrTm9kZTt3YyhhLGIpO3ZhciBkPXVjKGEsYT09PVE/WjowKTtpZigwPT09ZCludWxsIT09YyYmYmMoYyksYS5jYWxsYmFja05vZGU9bnVsbCxhLmNhbGxiYWNrUHJpb3JpdHk9MDtlbHNlIGlmKGI9ZCYtZCxhLmNhbGxiYWNrUHJpb3JpdHkhPT1iKXtudWxsIT1jJiZiYyhjKTtpZigxPT09YikwPT09YS50YWc/aWcoRWsuYmluZChudWxsLGEpKTpoZyhFay5iaW5kKG51bGwsYSkpLEpmKGZ1bmN0aW9uKCl7MD09PShLJjYpJiZqZygpfSksYz1udWxsO2Vsc2V7c3dpdGNoKERjKGQpKXtjYXNlIDE6Yz1mYzticmVhaztjYXNlIDQ6Yz1nYzticmVhaztjYXNlIDE2OmM9aGM7YnJlYWs7Y2FzZSA1MzY4NzA5MTI6Yz1qYzticmVhaztkZWZhdWx0OmM9aGN9Yz1GayhjLEdrLmJpbmQobnVsbCxhKSl9YS5jYWxsYmFja1ByaW9yaXR5PWI7YS5jYWxsYmFja05vZGU9Y319XG5mdW5jdGlvbiBHayhhLGIpe0FrPS0xO0JrPTA7aWYoMCE9PShLJjYpKXRocm93IEVycm9yKHAoMzI3KSk7dmFyIGM9YS5jYWxsYmFja05vZGU7aWYoSGsoKSYmYS5jYWxsYmFja05vZGUhPT1jKXJldHVybiBudWxsO3ZhciBkPXVjKGEsYT09PVE/WjowKTtpZigwPT09ZClyZXR1cm4gbnVsbDtpZigwIT09KGQmMzApfHwwIT09KGQmYS5leHBpcmVkTGFuZXMpfHxiKWI9SWsoYSxkKTtlbHNle2I9ZDt2YXIgZT1LO0t8PTI7dmFyIGY9SmsoKTtpZihRIT09YXx8WiE9PWIpdWs9bnVsbCxHaj1CKCkrNTAwLEtrKGEsYik7ZG8gdHJ5e0xrKCk7YnJlYWt9Y2F0Y2goaCl7TWsoYSxoKX13aGlsZSgxKTskZygpO21rLmN1cnJlbnQ9ZjtLPWU7bnVsbCE9PVk/Yj0wOihRPW51bGwsWj0wLGI9VCl9aWYoMCE9PWIpezI9PT1iJiYoZT14YyhhKSwwIT09ZSYmKGQ9ZSxiPU5rKGEsZSkpKTtpZigxPT09Yil0aHJvdyBjPXBrLEtrKGEsMCksQ2soYSxkKSxEayhhLEIoKSksYztpZig2PT09YilDayhhLGQpO1xuZWxzZXtlPWEuY3VycmVudC5hbHRlcm5hdGU7aWYoMD09PShkJjMwKSYmIU9rKGUpJiYoYj1JayhhLGQpLDI9PT1iJiYoZj14YyhhKSwwIT09ZiYmKGQ9ZixiPU5rKGEsZikpKSwxPT09YikpdGhyb3cgYz1wayxLayhhLDApLENrKGEsZCksRGsoYSxCKCkpLGM7YS5maW5pc2hlZFdvcms9ZTthLmZpbmlzaGVkTGFuZXM9ZDtzd2l0Y2goYil7Y2FzZSAwOmNhc2UgMTp0aHJvdyBFcnJvcihwKDM0NSkpO2Nhc2UgMjpQayhhLHRrLHVrKTticmVhaztjYXNlIDM6Q2soYSxkKTtpZigoZCYxMzAwMjM0MjQpPT09ZCYmKGI9ZmsrNTAwLUIoKSwxMDxiKSl7aWYoMCE9PXVjKGEsMCkpYnJlYWs7ZT1hLnN1c3BlbmRlZExhbmVzO2lmKChlJmQpIT09ZCl7UigpO2EucGluZ2VkTGFuZXN8PWEuc3VzcGVuZGVkTGFuZXMmZTticmVha31hLnRpbWVvdXRIYW5kbGU9RmYoUGsuYmluZChudWxsLGEsdGssdWspLGIpO2JyZWFrfVBrKGEsdGssdWspO2JyZWFrO2Nhc2UgNDpDayhhLGQpO2lmKChkJjQxOTQyNDApPT09XG5kKWJyZWFrO2I9YS5ldmVudFRpbWVzO2ZvcihlPS0xOzA8ZDspe3ZhciBnPTMxLW9jKGQpO2Y9MTw8ZztnPWJbZ107Zz5lJiYoZT1nKTtkJj1+Zn1kPWU7ZD1CKCktZDtkPSgxMjA+ZD8xMjA6NDgwPmQ/NDgwOjEwODA+ZD8xMDgwOjE5MjA+ZD8xOTIwOjNFMz5kPzNFMzo0MzIwPmQ/NDMyMDoxOTYwKmxrKGQvMTk2MCkpLWQ7aWYoMTA8ZCl7YS50aW1lb3V0SGFuZGxlPUZmKFBrLmJpbmQobnVsbCxhLHRrLHVrKSxkKTticmVha31QayhhLHRrLHVrKTticmVhaztjYXNlIDU6UGsoYSx0ayx1ayk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihwKDMyOSkpO319fURrKGEsQigpKTtyZXR1cm4gYS5jYWxsYmFja05vZGU9PT1jP0drLmJpbmQobnVsbCxhKTpudWxsfVxuZnVuY3Rpb24gTmsoYSxiKXt2YXIgYz1zazthLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQmJihLayhhLGIpLmZsYWdzfD0yNTYpO2E9SWsoYSxiKTsyIT09YSYmKGI9dGssdGs9YyxudWxsIT09YiYmRmooYikpO3JldHVybiBhfWZ1bmN0aW9uIEZqKGEpe251bGw9PT10az90az1hOnRrLnB1c2guYXBwbHkodGssYSl9XG5mdW5jdGlvbiBPayhhKXtmb3IodmFyIGI9YTs7KXtpZihiLmZsYWdzJjE2Mzg0KXt2YXIgYz1iLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1jJiYoYz1jLnN0b3JlcyxudWxsIT09YykpZm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPWNbZF0sZj1lLmdldFNuYXBzaG90O2U9ZS52YWx1ZTt0cnl7aWYoIUhlKGYoKSxlKSlyZXR1cm4hMX1jYXRjaChnKXtyZXR1cm4hMX19fWM9Yi5jaGlsZDtpZihiLnN1YnRyZWVGbGFncyYxNjM4NCYmbnVsbCE9PWMpYy5yZXR1cm49YixiPWM7ZWxzZXtpZihiPT09YSlicmVhaztmb3IoO251bGw9PT1iLnNpYmxpbmc7KXtpZihudWxsPT09Yi5yZXR1cm58fGIucmV0dXJuPT09YSlyZXR1cm4hMDtiPWIucmV0dXJufWIuc2libGluZy5yZXR1cm49Yi5yZXR1cm47Yj1iLnNpYmxpbmd9fXJldHVybiEwfVxuZnVuY3Rpb24gQ2soYSxiKXtiJj1+cms7YiY9fnFrO2Euc3VzcGVuZGVkTGFuZXN8PWI7YS5waW5nZWRMYW5lcyY9fmI7Zm9yKGE9YS5leHBpcmF0aW9uVGltZXM7MDxiOyl7dmFyIGM9MzEtb2MoYiksZD0xPDxjO2FbY109LTE7YiY9fmR9fWZ1bmN0aW9uIEVrKGEpe2lmKDAhPT0oSyY2KSl0aHJvdyBFcnJvcihwKDMyNykpO0hrKCk7dmFyIGI9dWMoYSwwKTtpZigwPT09KGImMSkpcmV0dXJuIERrKGEsQigpKSxudWxsO3ZhciBjPUlrKGEsYik7aWYoMCE9PWEudGFnJiYyPT09Yyl7dmFyIGQ9eGMoYSk7MCE9PWQmJihiPWQsYz1OayhhLGQpKX1pZigxPT09Yyl0aHJvdyBjPXBrLEtrKGEsMCksQ2soYSxiKSxEayhhLEIoKSksYztpZig2PT09Yyl0aHJvdyBFcnJvcihwKDM0NSkpO2EuZmluaXNoZWRXb3JrPWEuY3VycmVudC5hbHRlcm5hdGU7YS5maW5pc2hlZExhbmVzPWI7UGsoYSx0ayx1ayk7RGsoYSxCKCkpO3JldHVybiBudWxsfVxuZnVuY3Rpb24gUWsoYSxiKXt2YXIgYz1LO0t8PTE7dHJ5e3JldHVybiBhKGIpfWZpbmFsbHl7Sz1jLDA9PT1LJiYoR2o9QigpKzUwMCxmZyYmamcoKSl9fWZ1bmN0aW9uIFJrKGEpe251bGwhPT13ayYmMD09PXdrLnRhZyYmMD09PShLJjYpJiZIaygpO3ZhciBiPUs7S3w9MTt2YXIgYz1vay50cmFuc2l0aW9uLGQ9Qzt0cnl7aWYob2sudHJhbnNpdGlvbj1udWxsLEM9MSxhKXJldHVybiBhKCl9ZmluYWxseXtDPWQsb2sudHJhbnNpdGlvbj1jLEs9YiwwPT09KEsmNikmJmpnKCl9fWZ1bmN0aW9uIEhqKCl7Zmo9ZWouY3VycmVudDtFKGVqKX1cbmZ1bmN0aW9uIEtrKGEsYil7YS5maW5pc2hlZFdvcms9bnVsbDthLmZpbmlzaGVkTGFuZXM9MDt2YXIgYz1hLnRpbWVvdXRIYW5kbGU7LTEhPT1jJiYoYS50aW1lb3V0SGFuZGxlPS0xLEdmKGMpKTtpZihudWxsIT09WSlmb3IoYz1ZLnJldHVybjtudWxsIT09Yzspe3ZhciBkPWM7d2coZCk7c3dpdGNoKGQudGFnKXtjYXNlIDE6ZD1kLnR5cGUuY2hpbGRDb250ZXh0VHlwZXM7bnVsbCE9PWQmJnZvaWQgMCE9PWQmJiRmKCk7YnJlYWs7Y2FzZSAzOnpoKCk7RShXZik7RShIKTtFaCgpO2JyZWFrO2Nhc2UgNTpCaChkKTticmVhaztjYXNlIDQ6emgoKTticmVhaztjYXNlIDEzOkUoTCk7YnJlYWs7Y2FzZSAxOTpFKEwpO2JyZWFrO2Nhc2UgMTA6YWgoZC50eXBlLl9jb250ZXh0KTticmVhaztjYXNlIDIyOmNhc2UgMjM6SGooKX1jPWMucmV0dXJufVE9YTtZPWE9UGcoYS5jdXJyZW50LG51bGwpO1o9Zmo9YjtUPTA7cGs9bnVsbDtyaz1xaz1yaD0wO3RrPXNrPW51bGw7aWYobnVsbCE9PWZoKXtmb3IoYj1cbjA7YjxmaC5sZW5ndGg7YisrKWlmKGM9ZmhbYl0sZD1jLmludGVybGVhdmVkLG51bGwhPT1kKXtjLmludGVybGVhdmVkPW51bGw7dmFyIGU9ZC5uZXh0LGY9Yy5wZW5kaW5nO2lmKG51bGwhPT1mKXt2YXIgZz1mLm5leHQ7Zi5uZXh0PWU7ZC5uZXh0PWd9Yy5wZW5kaW5nPWR9Zmg9bnVsbH1yZXR1cm4gYX1cbmZ1bmN0aW9uIE1rKGEsYil7ZG97dmFyIGM9WTt0cnl7JGcoKTtGaC5jdXJyZW50PVJoO2lmKEloKXtmb3IodmFyIGQ9TS5tZW1vaXplZFN0YXRlO251bGwhPT1kOyl7dmFyIGU9ZC5xdWV1ZTtudWxsIT09ZSYmKGUucGVuZGluZz1udWxsKTtkPWQubmV4dH1JaD0hMX1IaD0wO089Tj1NPW51bGw7Smg9ITE7S2g9MDtuay5jdXJyZW50PW51bGw7aWYobnVsbD09PWN8fG51bGw9PT1jLnJldHVybil7VD0xO3BrPWI7WT1udWxsO2JyZWFrfWE6e3ZhciBmPWEsZz1jLnJldHVybixoPWMsaz1iO2I9WjtoLmZsYWdzfD0zMjc2ODtpZihudWxsIT09ayYmXCJvYmplY3RcIj09PXR5cGVvZiBrJiZcImZ1bmN0aW9uXCI9PT10eXBlb2Ygay50aGVuKXt2YXIgbD1rLG09aCxxPW0udGFnO2lmKDA9PT0obS5tb2RlJjEpJiYoMD09PXF8fDExPT09cXx8MTU9PT1xKSl7dmFyIHI9bS5hbHRlcm5hdGU7cj8obS51cGRhdGVRdWV1ZT1yLnVwZGF0ZVF1ZXVlLG0ubWVtb2l6ZWRTdGF0ZT1yLm1lbW9pemVkU3RhdGUsXG5tLmxhbmVzPXIubGFuZXMpOihtLnVwZGF0ZVF1ZXVlPW51bGwsbS5tZW1vaXplZFN0YXRlPW51bGwpfXZhciB5PVVpKGcpO2lmKG51bGwhPT15KXt5LmZsYWdzJj0tMjU3O1ZpKHksZyxoLGYsYik7eS5tb2RlJjEmJlNpKGYsbCxiKTtiPXk7az1sO3ZhciBuPWIudXBkYXRlUXVldWU7aWYobnVsbD09PW4pe3ZhciB0PW5ldyBTZXQ7dC5hZGQoayk7Yi51cGRhdGVRdWV1ZT10fWVsc2Ugbi5hZGQoayk7YnJlYWsgYX1lbHNle2lmKDA9PT0oYiYxKSl7U2koZixsLGIpO3RqKCk7YnJlYWsgYX1rPUVycm9yKHAoNDI2KSl9fWVsc2UgaWYoSSYmaC5tb2RlJjEpe3ZhciBKPVVpKGcpO2lmKG51bGwhPT1KKXswPT09KEouZmxhZ3MmNjU1MzYpJiYoSi5mbGFnc3w9MjU2KTtWaShKLGcsaCxmLGIpO0pnKEppKGssaCkpO2JyZWFrIGF9fWY9az1KaShrLGgpOzQhPT1UJiYoVD0yKTtudWxsPT09c2s/c2s9W2ZdOnNrLnB1c2goZik7Zj1nO2Rve3N3aXRjaChmLnRhZyl7Y2FzZSAzOmYuZmxhZ3N8PTY1NTM2O1xuYiY9LWI7Zi5sYW5lc3w9Yjt2YXIgeD1OaShmLGssYik7cGgoZix4KTticmVhayBhO2Nhc2UgMTpoPWs7dmFyIHc9Zi50eXBlLHU9Zi5zdGF0ZU5vZGU7aWYoMD09PShmLmZsYWdzJjEyOCkmJihcImZ1bmN0aW9uXCI9PT10eXBlb2Ygdy5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3J8fG51bGwhPT11JiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgdS5jb21wb25lbnREaWRDYXRjaCYmKG51bGw9PT1SaXx8IVJpLmhhcyh1KSkpKXtmLmZsYWdzfD02NTUzNjtiJj0tYjtmLmxhbmVzfD1iO3ZhciBGPVFpKGYsaCxiKTtwaChmLEYpO2JyZWFrIGF9fWY9Zi5yZXR1cm59d2hpbGUobnVsbCE9PWYpfVNrKGMpfWNhdGNoKG5hKXtiPW5hO1k9PT1jJiZudWxsIT09YyYmKFk9Yz1jLnJldHVybik7Y29udGludWV9YnJlYWt9d2hpbGUoMSl9ZnVuY3Rpb24gSmsoKXt2YXIgYT1tay5jdXJyZW50O21rLmN1cnJlbnQ9Umg7cmV0dXJuIG51bGw9PT1hP1JoOmF9XG5mdW5jdGlvbiB0aigpe2lmKDA9PT1UfHwzPT09VHx8Mj09PVQpVD00O251bGw9PT1RfHwwPT09KHJoJjI2ODQzNTQ1NSkmJjA9PT0ocWsmMjY4NDM1NDU1KXx8Q2soUSxaKX1mdW5jdGlvbiBJayhhLGIpe3ZhciBjPUs7S3w9Mjt2YXIgZD1KaygpO2lmKFEhPT1hfHxaIT09Yil1az1udWxsLEtrKGEsYik7ZG8gdHJ5e1RrKCk7YnJlYWt9Y2F0Y2goZSl7TWsoYSxlKX13aGlsZSgxKTskZygpO0s9Yzttay5jdXJyZW50PWQ7aWYobnVsbCE9PVkpdGhyb3cgRXJyb3IocCgyNjEpKTtRPW51bGw7Wj0wO3JldHVybiBUfWZ1bmN0aW9uIFRrKCl7Zm9yKDtudWxsIT09WTspVWsoWSl9ZnVuY3Rpb24gTGsoKXtmb3IoO251bGwhPT1ZJiYhY2MoKTspVWsoWSl9ZnVuY3Rpb24gVWsoYSl7dmFyIGI9VmsoYS5hbHRlcm5hdGUsYSxmaik7YS5tZW1vaXplZFByb3BzPWEucGVuZGluZ1Byb3BzO251bGw9PT1iP1NrKGEpOlk9Yjtuay5jdXJyZW50PW51bGx9XG5mdW5jdGlvbiBTayhhKXt2YXIgYj1hO2Rve3ZhciBjPWIuYWx0ZXJuYXRlO2E9Yi5yZXR1cm47aWYoMD09PShiLmZsYWdzJjMyNzY4KSl7aWYoYz1FaihjLGIsZmopLG51bGwhPT1jKXtZPWM7cmV0dXJufX1lbHNle2M9SWooYyxiKTtpZihudWxsIT09Yyl7Yy5mbGFncyY9MzI3Njc7WT1jO3JldHVybn1pZihudWxsIT09YSlhLmZsYWdzfD0zMjc2OCxhLnN1YnRyZWVGbGFncz0wLGEuZGVsZXRpb25zPW51bGw7ZWxzZXtUPTY7WT1udWxsO3JldHVybn19Yj1iLnNpYmxpbmc7aWYobnVsbCE9PWIpe1k9YjtyZXR1cm59WT1iPWF9d2hpbGUobnVsbCE9PWIpOzA9PT1UJiYoVD01KX1mdW5jdGlvbiBQayhhLGIsYyl7dmFyIGQ9QyxlPW9rLnRyYW5zaXRpb247dHJ5e29rLnRyYW5zaXRpb249bnVsbCxDPTEsV2soYSxiLGMsZCl9ZmluYWxseXtvay50cmFuc2l0aW9uPWUsQz1kfXJldHVybiBudWxsfVxuZnVuY3Rpb24gV2soYSxiLGMsZCl7ZG8gSGsoKTt3aGlsZShudWxsIT09d2spO2lmKDAhPT0oSyY2KSl0aHJvdyBFcnJvcihwKDMyNykpO2M9YS5maW5pc2hlZFdvcms7dmFyIGU9YS5maW5pc2hlZExhbmVzO2lmKG51bGw9PT1jKXJldHVybiBudWxsO2EuZmluaXNoZWRXb3JrPW51bGw7YS5maW5pc2hlZExhbmVzPTA7aWYoYz09PWEuY3VycmVudCl0aHJvdyBFcnJvcihwKDE3NykpO2EuY2FsbGJhY2tOb2RlPW51bGw7YS5jYWxsYmFja1ByaW9yaXR5PTA7dmFyIGY9Yy5sYW5lc3xjLmNoaWxkTGFuZXM7QmMoYSxmKTthPT09USYmKFk9UT1udWxsLFo9MCk7MD09PShjLnN1YnRyZWVGbGFncyYyMDY0KSYmMD09PShjLmZsYWdzJjIwNjQpfHx2a3x8KHZrPSEwLEZrKGhjLGZ1bmN0aW9uKCl7SGsoKTtyZXR1cm4gbnVsbH0pKTtmPTAhPT0oYy5mbGFncyYxNTk5MCk7aWYoMCE9PShjLnN1YnRyZWVGbGFncyYxNTk5MCl8fGYpe2Y9b2sudHJhbnNpdGlvbjtvay50cmFuc2l0aW9uPW51bGw7XG52YXIgZz1DO0M9MTt2YXIgaD1LO0t8PTQ7bmsuY3VycmVudD1udWxsO09qKGEsYyk7ZGsoYyxhKTtPZShEZik7ZGQ9ISFDZjtEZj1DZj1udWxsO2EuY3VycmVudD1jO2hrKGMsYSxlKTtkYygpO0s9aDtDPWc7b2sudHJhbnNpdGlvbj1mfWVsc2UgYS5jdXJyZW50PWM7dmsmJih2az0hMSx3az1hLHhrPWUpO2Y9YS5wZW5kaW5nTGFuZXM7MD09PWYmJihSaT1udWxsKTttYyhjLnN0YXRlTm9kZSxkKTtEayhhLEIoKSk7aWYobnVsbCE9PWIpZm9yKGQ9YS5vblJlY292ZXJhYmxlRXJyb3IsYz0wO2M8Yi5sZW5ndGg7YysrKWU9YltjXSxkKGUudmFsdWUse2NvbXBvbmVudFN0YWNrOmUuc3RhY2ssZGlnZXN0OmUuZGlnZXN0fSk7aWYoT2kpdGhyb3cgT2k9ITEsYT1QaSxQaT1udWxsLGE7MCE9PSh4ayYxKSYmMCE9PWEudGFnJiZIaygpO2Y9YS5wZW5kaW5nTGFuZXM7MCE9PShmJjEpP2E9PT16az95aysrOih5az0wLHprPWEpOnlrPTA7amcoKTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIEhrKCl7aWYobnVsbCE9PXdrKXt2YXIgYT1EYyh4ayksYj1vay50cmFuc2l0aW9uLGM9Qzt0cnl7b2sudHJhbnNpdGlvbj1udWxsO0M9MTY+YT8xNjphO2lmKG51bGw9PT13ayl2YXIgZD0hMTtlbHNle2E9d2s7d2s9bnVsbDt4az0wO2lmKDAhPT0oSyY2KSl0aHJvdyBFcnJvcihwKDMzMSkpO3ZhciBlPUs7S3w9NDtmb3IoVj1hLmN1cnJlbnQ7bnVsbCE9PVY7KXt2YXIgZj1WLGc9Zi5jaGlsZDtpZigwIT09KFYuZmxhZ3MmMTYpKXt2YXIgaD1mLmRlbGV0aW9ucztpZihudWxsIT09aCl7Zm9yKHZhciBrPTA7azxoLmxlbmd0aDtrKyspe3ZhciBsPWhba107Zm9yKFY9bDtudWxsIT09Vjspe3ZhciBtPVY7c3dpdGNoKG0udGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OlBqKDgsbSxmKX12YXIgcT1tLmNoaWxkO2lmKG51bGwhPT1xKXEucmV0dXJuPW0sVj1xO2Vsc2UgZm9yKDtudWxsIT09Vjspe209Vjt2YXIgcj1tLnNpYmxpbmcseT1tLnJldHVybjtTaihtKTtpZihtPT09XG5sKXtWPW51bGw7YnJlYWt9aWYobnVsbCE9PXIpe3IucmV0dXJuPXk7Vj1yO2JyZWFrfVY9eX19fXZhciBuPWYuYWx0ZXJuYXRlO2lmKG51bGwhPT1uKXt2YXIgdD1uLmNoaWxkO2lmKG51bGwhPT10KXtuLmNoaWxkPW51bGw7ZG97dmFyIEo9dC5zaWJsaW5nO3Quc2libGluZz1udWxsO3Q9Sn13aGlsZShudWxsIT09dCl9fVY9Zn19aWYoMCE9PShmLnN1YnRyZWVGbGFncyYyMDY0KSYmbnVsbCE9PWcpZy5yZXR1cm49ZixWPWc7ZWxzZSBiOmZvcig7bnVsbCE9PVY7KXtmPVY7aWYoMCE9PShmLmZsYWdzJjIwNDgpKXN3aXRjaChmLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpQaig5LGYsZi5yZXR1cm4pfXZhciB4PWYuc2libGluZztpZihudWxsIT09eCl7eC5yZXR1cm49Zi5yZXR1cm47Vj14O2JyZWFrIGJ9Vj1mLnJldHVybn19dmFyIHc9YS5jdXJyZW50O2ZvcihWPXc7bnVsbCE9PVY7KXtnPVY7dmFyIHU9Zy5jaGlsZDtpZigwIT09KGcuc3VidHJlZUZsYWdzJjIwNjQpJiZudWxsIT09XG51KXUucmV0dXJuPWcsVj11O2Vsc2UgYjpmb3IoZz13O251bGwhPT1WOyl7aD1WO2lmKDAhPT0oaC5mbGFncyYyMDQ4KSl0cnl7c3dpdGNoKGgudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OlFqKDksaCl9fWNhdGNoKG5hKXtXKGgsaC5yZXR1cm4sbmEpfWlmKGg9PT1nKXtWPW51bGw7YnJlYWsgYn12YXIgRj1oLnNpYmxpbmc7aWYobnVsbCE9PUYpe0YucmV0dXJuPWgucmV0dXJuO1Y9RjticmVhayBifVY9aC5yZXR1cm59fUs9ZTtqZygpO2lmKGxjJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgbGMub25Qb3N0Q29tbWl0RmliZXJSb290KXRyeXtsYy5vblBvc3RDb21taXRGaWJlclJvb3Qoa2MsYSl9Y2F0Y2gobmEpe31kPSEwfXJldHVybiBkfWZpbmFsbHl7Qz1jLG9rLnRyYW5zaXRpb249Yn19cmV0dXJuITF9ZnVuY3Rpb24gWGsoYSxiLGMpe2I9SmkoYyxiKTtiPU5pKGEsYiwxKTthPW5oKGEsYiwxKTtiPVIoKTtudWxsIT09YSYmKEFjKGEsMSxiKSxEayhhLGIpKX1cbmZ1bmN0aW9uIFcoYSxiLGMpe2lmKDM9PT1hLnRhZylYayhhLGEsYyk7ZWxzZSBmb3IoO251bGwhPT1iOyl7aWYoMz09PWIudGFnKXtYayhiLGEsYyk7YnJlYWt9ZWxzZSBpZigxPT09Yi50YWcpe3ZhciBkPWIuc3RhdGVOb2RlO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBiLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZC5jb21wb25lbnREaWRDYXRjaCYmKG51bGw9PT1SaXx8IVJpLmhhcyhkKSkpe2E9SmkoYyxhKTthPVFpKGIsYSwxKTtiPW5oKGIsYSwxKTthPVIoKTtudWxsIT09YiYmKEFjKGIsMSxhKSxEayhiLGEpKTticmVha319Yj1iLnJldHVybn19XG5mdW5jdGlvbiBUaShhLGIsYyl7dmFyIGQ9YS5waW5nQ2FjaGU7bnVsbCE9PWQmJmQuZGVsZXRlKGIpO2I9UigpO2EucGluZ2VkTGFuZXN8PWEuc3VzcGVuZGVkTGFuZXMmYztRPT09YSYmKFomYyk9PT1jJiYoND09PVR8fDM9PT1UJiYoWiYxMzAwMjM0MjQpPT09WiYmNTAwPkIoKS1maz9LayhhLDApOnJrfD1jKTtEayhhLGIpfWZ1bmN0aW9uIFlrKGEsYil7MD09PWImJigwPT09KGEubW9kZSYxKT9iPTE6KGI9c2Msc2M8PD0xLDA9PT0oc2MmMTMwMDIzNDI0KSYmKHNjPTQxOTQzMDQpKSk7dmFyIGM9UigpO2E9aWgoYSxiKTtudWxsIT09YSYmKEFjKGEsYixjKSxEayhhLGMpKX1mdW5jdGlvbiB1aihhKXt2YXIgYj1hLm1lbW9pemVkU3RhdGUsYz0wO251bGwhPT1iJiYoYz1iLnJldHJ5TGFuZSk7WWsoYSxjKX1cbmZ1bmN0aW9uIGJrKGEsYil7dmFyIGM9MDtzd2l0Y2goYS50YWcpe2Nhc2UgMTM6dmFyIGQ9YS5zdGF0ZU5vZGU7dmFyIGU9YS5tZW1vaXplZFN0YXRlO251bGwhPT1lJiYoYz1lLnJldHJ5TGFuZSk7YnJlYWs7Y2FzZSAxOTpkPWEuc3RhdGVOb2RlO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IocCgzMTQpKTt9bnVsbCE9PWQmJmQuZGVsZXRlKGIpO1lrKGEsYyl9dmFyIFZrO1xuVms9ZnVuY3Rpb24oYSxiLGMpe2lmKG51bGwhPT1hKWlmKGEubWVtb2l6ZWRQcm9wcyE9PWIucGVuZGluZ1Byb3BzfHxXZi5jdXJyZW50KWRoPSEwO2Vsc2V7aWYoMD09PShhLmxhbmVzJmMpJiYwPT09KGIuZmxhZ3MmMTI4KSlyZXR1cm4gZGg9ITEseWooYSxiLGMpO2RoPTAhPT0oYS5mbGFncyYxMzEwNzIpPyEwOiExfWVsc2UgZGg9ITEsSSYmMCE9PShiLmZsYWdzJjEwNDg1NzYpJiZ1ZyhiLG5nLGIuaW5kZXgpO2IubGFuZXM9MDtzd2l0Y2goYi50YWcpe2Nhc2UgMjp2YXIgZD1iLnR5cGU7aWooYSxiKTthPWIucGVuZGluZ1Byb3BzO3ZhciBlPVlmKGIsSC5jdXJyZW50KTtjaChiLGMpO2U9TmgobnVsbCxiLGQsYSxlLGMpO3ZhciBmPVNoKCk7Yi5mbGFnc3w9MTtcIm9iamVjdFwiPT09dHlwZW9mIGUmJm51bGwhPT1lJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5yZW5kZXImJnZvaWQgMD09PWUuJCR0eXBlb2Y/KGIudGFnPTEsYi5tZW1vaXplZFN0YXRlPW51bGwsYi51cGRhdGVRdWV1ZT1cbm51bGwsWmYoZCk/KGY9ITAsY2coYikpOmY9ITEsYi5tZW1vaXplZFN0YXRlPW51bGwhPT1lLnN0YXRlJiZ2b2lkIDAhPT1lLnN0YXRlP2Uuc3RhdGU6bnVsbCxraChiKSxlLnVwZGF0ZXI9RWksYi5zdGF0ZU5vZGU9ZSxlLl9yZWFjdEludGVybmFscz1iLElpKGIsZCxhLGMpLGI9amoobnVsbCxiLGQsITAsZixjKSk6KGIudGFnPTAsSSYmZiYmdmcoYiksWGkobnVsbCxiLGUsYyksYj1iLmNoaWxkKTtyZXR1cm4gYjtjYXNlIDE2OmQ9Yi5lbGVtZW50VHlwZTthOntpaihhLGIpO2E9Yi5wZW5kaW5nUHJvcHM7ZT1kLl9pbml0O2Q9ZShkLl9wYXlsb2FkKTtiLnR5cGU9ZDtlPWIudGFnPVprKGQpO2E9Q2koZCxhKTtzd2l0Y2goZSl7Y2FzZSAwOmI9Y2oobnVsbCxiLGQsYSxjKTticmVhayBhO2Nhc2UgMTpiPWhqKG51bGwsYixkLGEsYyk7YnJlYWsgYTtjYXNlIDExOmI9WWkobnVsbCxiLGQsYSxjKTticmVhayBhO2Nhc2UgMTQ6Yj0kaShudWxsLGIsZCxDaShkLnR5cGUsYSksYyk7YnJlYWsgYX10aHJvdyBFcnJvcihwKDMwNixcbmQsXCJcIikpO31yZXR1cm4gYjtjYXNlIDA6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkNpKGQsZSksY2ooYSxiLGQsZSxjKTtjYXNlIDE6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkNpKGQsZSksaGooYSxiLGQsZSxjKTtjYXNlIDM6YTp7a2ooYik7aWYobnVsbD09PWEpdGhyb3cgRXJyb3IocCgzODcpKTtkPWIucGVuZGluZ1Byb3BzO2Y9Yi5tZW1vaXplZFN0YXRlO2U9Zi5lbGVtZW50O2xoKGEsYik7cWgoYixkLG51bGwsYyk7dmFyIGc9Yi5tZW1vaXplZFN0YXRlO2Q9Zy5lbGVtZW50O2lmKGYuaXNEZWh5ZHJhdGVkKWlmKGY9e2VsZW1lbnQ6ZCxpc0RlaHlkcmF0ZWQ6ITEsY2FjaGU6Zy5jYWNoZSxwZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzOmcucGVuZGluZ1N1c3BlbnNlQm91bmRhcmllcyx0cmFuc2l0aW9uczpnLnRyYW5zaXRpb25zfSxiLnVwZGF0ZVF1ZXVlLmJhc2VTdGF0ZT1cbmYsYi5tZW1vaXplZFN0YXRlPWYsYi5mbGFncyYyNTYpe2U9SmkoRXJyb3IocCg0MjMpKSxiKTtiPWxqKGEsYixkLGMsZSk7YnJlYWsgYX1lbHNlIGlmKGQhPT1lKXtlPUppKEVycm9yKHAoNDI0KSksYik7Yj1saihhLGIsZCxjLGUpO2JyZWFrIGF9ZWxzZSBmb3IoeWc9TGYoYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mby5maXJzdENoaWxkKSx4Zz1iLEk9ITAsemc9bnVsbCxjPVZnKGIsbnVsbCxkLGMpLGIuY2hpbGQ9YztjOyljLmZsYWdzPWMuZmxhZ3MmLTN8NDA5NixjPWMuc2libGluZztlbHNle0lnKCk7aWYoZD09PWUpe2I9WmkoYSxiLGMpO2JyZWFrIGF9WGkoYSxiLGQsYyl9Yj1iLmNoaWxkfXJldHVybiBiO2Nhc2UgNTpyZXR1cm4gQWgoYiksbnVsbD09PWEmJkVnKGIpLGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZj1udWxsIT09YT9hLm1lbW9pemVkUHJvcHM6bnVsbCxnPWUuY2hpbGRyZW4sRWYoZCxlKT9nPW51bGw6bnVsbCE9PWYmJkVmKGQsZikmJihiLmZsYWdzfD0zMiksXG5naihhLGIpLFhpKGEsYixnLGMpLGIuY2hpbGQ7Y2FzZSA2OnJldHVybiBudWxsPT09YSYmRWcoYiksbnVsbDtjYXNlIDEzOnJldHVybiBvaihhLGIsYyk7Y2FzZSA0OnJldHVybiB5aChiLGIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLGQ9Yi5wZW5kaW5nUHJvcHMsbnVsbD09PWE/Yi5jaGlsZD1VZyhiLG51bGwsZCxjKTpYaShhLGIsZCxjKSxiLmNoaWxkO2Nhc2UgMTE6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkNpKGQsZSksWWkoYSxiLGQsZSxjKTtjYXNlIDc6cmV0dXJuIFhpKGEsYixiLnBlbmRpbmdQcm9wcyxjKSxiLmNoaWxkO2Nhc2UgODpyZXR1cm4gWGkoYSxiLGIucGVuZGluZ1Byb3BzLmNoaWxkcmVuLGMpLGIuY2hpbGQ7Y2FzZSAxMjpyZXR1cm4gWGkoYSxiLGIucGVuZGluZ1Byb3BzLmNoaWxkcmVuLGMpLGIuY2hpbGQ7Y2FzZSAxMDphOntkPWIudHlwZS5fY29udGV4dDtlPWIucGVuZGluZ1Byb3BzO2Y9Yi5tZW1vaXplZFByb3BzO1xuZz1lLnZhbHVlO0coV2csZC5fY3VycmVudFZhbHVlKTtkLl9jdXJyZW50VmFsdWU9ZztpZihudWxsIT09ZilpZihIZShmLnZhbHVlLGcpKXtpZihmLmNoaWxkcmVuPT09ZS5jaGlsZHJlbiYmIVdmLmN1cnJlbnQpe2I9WmkoYSxiLGMpO2JyZWFrIGF9fWVsc2UgZm9yKGY9Yi5jaGlsZCxudWxsIT09ZiYmKGYucmV0dXJuPWIpO251bGwhPT1mOyl7dmFyIGg9Zi5kZXBlbmRlbmNpZXM7aWYobnVsbCE9PWgpe2c9Zi5jaGlsZDtmb3IodmFyIGs9aC5maXJzdENvbnRleHQ7bnVsbCE9PWs7KXtpZihrLmNvbnRleHQ9PT1kKXtpZigxPT09Zi50YWcpe2s9bWgoLTEsYyYtYyk7ay50YWc9Mjt2YXIgbD1mLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1sKXtsPWwuc2hhcmVkO3ZhciBtPWwucGVuZGluZztudWxsPT09bT9rLm5leHQ9azooay5uZXh0PW0ubmV4dCxtLm5leHQ9ayk7bC5wZW5kaW5nPWt9fWYubGFuZXN8PWM7az1mLmFsdGVybmF0ZTtudWxsIT09ayYmKGsubGFuZXN8PWMpO2JoKGYucmV0dXJuLFxuYyxiKTtoLmxhbmVzfD1jO2JyZWFrfWs9ay5uZXh0fX1lbHNlIGlmKDEwPT09Zi50YWcpZz1mLnR5cGU9PT1iLnR5cGU/bnVsbDpmLmNoaWxkO2Vsc2UgaWYoMTg9PT1mLnRhZyl7Zz1mLnJldHVybjtpZihudWxsPT09Zyl0aHJvdyBFcnJvcihwKDM0MSkpO2cubGFuZXN8PWM7aD1nLmFsdGVybmF0ZTtudWxsIT09aCYmKGgubGFuZXN8PWMpO2JoKGcsYyxiKTtnPWYuc2libGluZ31lbHNlIGc9Zi5jaGlsZDtpZihudWxsIT09ZylnLnJldHVybj1mO2Vsc2UgZm9yKGc9ZjtudWxsIT09Zzspe2lmKGc9PT1iKXtnPW51bGw7YnJlYWt9Zj1nLnNpYmxpbmc7aWYobnVsbCE9PWYpe2YucmV0dXJuPWcucmV0dXJuO2c9ZjticmVha31nPWcucmV0dXJufWY9Z31YaShhLGIsZS5jaGlsZHJlbixjKTtiPWIuY2hpbGR9cmV0dXJuIGI7Y2FzZSA5OnJldHVybiBlPWIudHlwZSxkPWIucGVuZGluZ1Byb3BzLmNoaWxkcmVuLGNoKGIsYyksZT1laChlKSxkPWQoZSksYi5mbGFnc3w9MSxYaShhLGIsZCxjKSxcbmIuY2hpbGQ7Y2FzZSAxNDpyZXR1cm4gZD1iLnR5cGUsZT1DaShkLGIucGVuZGluZ1Byb3BzKSxlPUNpKGQudHlwZSxlKSwkaShhLGIsZCxlLGMpO2Nhc2UgMTU6cmV0dXJuIGJqKGEsYixiLnR5cGUsYi5wZW5kaW5nUHJvcHMsYyk7Y2FzZSAxNzpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6Q2koZCxlKSxpaihhLGIpLGIudGFnPTEsWmYoZCk/KGE9ITAsY2coYikpOmE9ITEsY2goYixjKSxHaShiLGQsZSksSWkoYixkLGUsYyksamoobnVsbCxiLGQsITAsYSxjKTtjYXNlIDE5OnJldHVybiB4aihhLGIsYyk7Y2FzZSAyMjpyZXR1cm4gZGooYSxiLGMpfXRocm93IEVycm9yKHAoMTU2LGIudGFnKSk7fTtmdW5jdGlvbiBGayhhLGIpe3JldHVybiBhYyhhLGIpfVxuZnVuY3Rpb24gJGsoYSxiLGMsZCl7dGhpcy50YWc9YTt0aGlzLmtleT1jO3RoaXMuc2libGluZz10aGlzLmNoaWxkPXRoaXMucmV0dXJuPXRoaXMuc3RhdGVOb2RlPXRoaXMudHlwZT10aGlzLmVsZW1lbnRUeXBlPW51bGw7dGhpcy5pbmRleD0wO3RoaXMucmVmPW51bGw7dGhpcy5wZW5kaW5nUHJvcHM9Yjt0aGlzLmRlcGVuZGVuY2llcz10aGlzLm1lbW9pemVkU3RhdGU9dGhpcy51cGRhdGVRdWV1ZT10aGlzLm1lbW9pemVkUHJvcHM9bnVsbDt0aGlzLm1vZGU9ZDt0aGlzLnN1YnRyZWVGbGFncz10aGlzLmZsYWdzPTA7dGhpcy5kZWxldGlvbnM9bnVsbDt0aGlzLmNoaWxkTGFuZXM9dGhpcy5sYW5lcz0wO3RoaXMuYWx0ZXJuYXRlPW51bGx9ZnVuY3Rpb24gQmcoYSxiLGMsZCl7cmV0dXJuIG5ldyAkayhhLGIsYyxkKX1mdW5jdGlvbiBhaihhKXthPWEucHJvdG90eXBlO3JldHVybiEoIWF8fCFhLmlzUmVhY3RDb21wb25lbnQpfVxuZnVuY3Rpb24gWmsoYSl7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEpcmV0dXJuIGFqKGEpPzE6MDtpZih2b2lkIDAhPT1hJiZudWxsIT09YSl7YT1hLiQkdHlwZW9mO2lmKGE9PT1EYSlyZXR1cm4gMTE7aWYoYT09PUdhKXJldHVybiAxNH1yZXR1cm4gMn1cbmZ1bmN0aW9uIFBnKGEsYil7dmFyIGM9YS5hbHRlcm5hdGU7bnVsbD09PWM/KGM9QmcoYS50YWcsYixhLmtleSxhLm1vZGUpLGMuZWxlbWVudFR5cGU9YS5lbGVtZW50VHlwZSxjLnR5cGU9YS50eXBlLGMuc3RhdGVOb2RlPWEuc3RhdGVOb2RlLGMuYWx0ZXJuYXRlPWEsYS5hbHRlcm5hdGU9Yyk6KGMucGVuZGluZ1Byb3BzPWIsYy50eXBlPWEudHlwZSxjLmZsYWdzPTAsYy5zdWJ0cmVlRmxhZ3M9MCxjLmRlbGV0aW9ucz1udWxsKTtjLmZsYWdzPWEuZmxhZ3MmMTQ2ODAwNjQ7Yy5jaGlsZExhbmVzPWEuY2hpbGRMYW5lcztjLmxhbmVzPWEubGFuZXM7Yy5jaGlsZD1hLmNoaWxkO2MubWVtb2l6ZWRQcm9wcz1hLm1lbW9pemVkUHJvcHM7Yy5tZW1vaXplZFN0YXRlPWEubWVtb2l6ZWRTdGF0ZTtjLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWU7Yj1hLmRlcGVuZGVuY2llcztjLmRlcGVuZGVuY2llcz1udWxsPT09Yj9udWxsOntsYW5lczpiLmxhbmVzLGZpcnN0Q29udGV4dDpiLmZpcnN0Q29udGV4dH07XG5jLnNpYmxpbmc9YS5zaWJsaW5nO2MuaW5kZXg9YS5pbmRleDtjLnJlZj1hLnJlZjtyZXR1cm4gY31cbmZ1bmN0aW9uIFJnKGEsYixjLGQsZSxmKXt2YXIgZz0yO2Q9YTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSlhaihhKSYmKGc9MSk7ZWxzZSBpZihcInN0cmluZ1wiPT09dHlwZW9mIGEpZz01O2Vsc2UgYTpzd2l0Y2goYSl7Y2FzZSB5YTpyZXR1cm4gVGcoYy5jaGlsZHJlbixlLGYsYik7Y2FzZSB6YTpnPTg7ZXw9ODticmVhaztjYXNlIEFhOnJldHVybiBhPUJnKDEyLGMsYixlfDIpLGEuZWxlbWVudFR5cGU9QWEsYS5sYW5lcz1mLGE7Y2FzZSBFYTpyZXR1cm4gYT1CZygxMyxjLGIsZSksYS5lbGVtZW50VHlwZT1FYSxhLmxhbmVzPWYsYTtjYXNlIEZhOnJldHVybiBhPUJnKDE5LGMsYixlKSxhLmVsZW1lbnRUeXBlPUZhLGEubGFuZXM9ZixhO2Nhc2UgSWE6cmV0dXJuIHBqKGMsZSxmLGIpO2RlZmF1bHQ6aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSlzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBCYTpnPTEwO2JyZWFrIGE7Y2FzZSBDYTpnPTk7YnJlYWsgYTtjYXNlIERhOmc9MTE7XG5icmVhayBhO2Nhc2UgR2E6Zz0xNDticmVhayBhO2Nhc2UgSGE6Zz0xNjtkPW51bGw7YnJlYWsgYX10aHJvdyBFcnJvcihwKDEzMCxudWxsPT1hP2E6dHlwZW9mIGEsXCJcIikpO31iPUJnKGcsYyxiLGUpO2IuZWxlbWVudFR5cGU9YTtiLnR5cGU9ZDtiLmxhbmVzPWY7cmV0dXJuIGJ9ZnVuY3Rpb24gVGcoYSxiLGMsZCl7YT1CZyg3LGEsZCxiKTthLmxhbmVzPWM7cmV0dXJuIGF9ZnVuY3Rpb24gcGooYSxiLGMsZCl7YT1CZygyMixhLGQsYik7YS5lbGVtZW50VHlwZT1JYTthLmxhbmVzPWM7YS5zdGF0ZU5vZGU9e2lzSGlkZGVuOiExfTtyZXR1cm4gYX1mdW5jdGlvbiBRZyhhLGIsYyl7YT1CZyg2LGEsbnVsbCxiKTthLmxhbmVzPWM7cmV0dXJuIGF9XG5mdW5jdGlvbiBTZyhhLGIsYyl7Yj1CZyg0LG51bGwhPT1hLmNoaWxkcmVuP2EuY2hpbGRyZW46W10sYS5rZXksYik7Yi5sYW5lcz1jO2Iuc3RhdGVOb2RlPXtjb250YWluZXJJbmZvOmEuY29udGFpbmVySW5mbyxwZW5kaW5nQ2hpbGRyZW46bnVsbCxpbXBsZW1lbnRhdGlvbjphLmltcGxlbWVudGF0aW9ufTtyZXR1cm4gYn1cbmZ1bmN0aW9uIGFsKGEsYixjLGQsZSl7dGhpcy50YWc9Yjt0aGlzLmNvbnRhaW5lckluZm89YTt0aGlzLmZpbmlzaGVkV29yaz10aGlzLnBpbmdDYWNoZT10aGlzLmN1cnJlbnQ9dGhpcy5wZW5kaW5nQ2hpbGRyZW49bnVsbDt0aGlzLnRpbWVvdXRIYW5kbGU9LTE7dGhpcy5jYWxsYmFja05vZGU9dGhpcy5wZW5kaW5nQ29udGV4dD10aGlzLmNvbnRleHQ9bnVsbDt0aGlzLmNhbGxiYWNrUHJpb3JpdHk9MDt0aGlzLmV2ZW50VGltZXM9emMoMCk7dGhpcy5leHBpcmF0aW9uVGltZXM9emMoLTEpO3RoaXMuZW50YW5nbGVkTGFuZXM9dGhpcy5maW5pc2hlZExhbmVzPXRoaXMubXV0YWJsZVJlYWRMYW5lcz10aGlzLmV4cGlyZWRMYW5lcz10aGlzLnBpbmdlZExhbmVzPXRoaXMuc3VzcGVuZGVkTGFuZXM9dGhpcy5wZW5kaW5nTGFuZXM9MDt0aGlzLmVudGFuZ2xlbWVudHM9emMoMCk7dGhpcy5pZGVudGlmaWVyUHJlZml4PWQ7dGhpcy5vblJlY292ZXJhYmxlRXJyb3I9ZTt0aGlzLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE9XG5udWxsfWZ1bmN0aW9uIGJsKGEsYixjLGQsZSxmLGcsaCxrKXthPW5ldyBhbChhLGIsYyxoLGspOzE9PT1iPyhiPTEsITA9PT1mJiYoYnw9OCkpOmI9MDtmPUJnKDMsbnVsbCxudWxsLGIpO2EuY3VycmVudD1mO2Yuc3RhdGVOb2RlPWE7Zi5tZW1vaXplZFN0YXRlPXtlbGVtZW50OmQsaXNEZWh5ZHJhdGVkOmMsY2FjaGU6bnVsbCx0cmFuc2l0aW9uczpudWxsLHBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXM6bnVsbH07a2goZik7cmV0dXJuIGF9ZnVuY3Rpb24gY2woYSxiLGMpe3ZhciBkPTM8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsO3JldHVybnskJHR5cGVvZjp3YSxrZXk6bnVsbD09ZD9udWxsOlwiXCIrZCxjaGlsZHJlbjphLGNvbnRhaW5lckluZm86YixpbXBsZW1lbnRhdGlvbjpjfX1cbmZ1bmN0aW9uIGRsKGEpe2lmKCFhKXJldHVybiBWZjthPWEuX3JlYWN0SW50ZXJuYWxzO2E6e2lmKFZiKGEpIT09YXx8MSE9PWEudGFnKXRocm93IEVycm9yKHAoMTcwKSk7dmFyIGI9YTtkb3tzd2l0Y2goYi50YWcpe2Nhc2UgMzpiPWIuc3RhdGVOb2RlLmNvbnRleHQ7YnJlYWsgYTtjYXNlIDE6aWYoWmYoYi50eXBlKSl7Yj1iLnN0YXRlTm9kZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dDticmVhayBhfX1iPWIucmV0dXJufXdoaWxlKG51bGwhPT1iKTt0aHJvdyBFcnJvcihwKDE3MSkpO31pZigxPT09YS50YWcpe3ZhciBjPWEudHlwZTtpZihaZihjKSlyZXR1cm4gYmcoYSxjLGIpfXJldHVybiBifVxuZnVuY3Rpb24gZWwoYSxiLGMsZCxlLGYsZyxoLGspe2E9YmwoYyxkLCEwLGEsZSxmLGcsaCxrKTthLmNvbnRleHQ9ZGwobnVsbCk7Yz1hLmN1cnJlbnQ7ZD1SKCk7ZT15aShjKTtmPW1oKGQsZSk7Zi5jYWxsYmFjaz12b2lkIDAhPT1iJiZudWxsIT09Yj9iOm51bGw7bmgoYyxmLGUpO2EuY3VycmVudC5sYW5lcz1lO0FjKGEsZSxkKTtEayhhLGQpO3JldHVybiBhfWZ1bmN0aW9uIGZsKGEsYixjLGQpe3ZhciBlPWIuY3VycmVudCxmPVIoKSxnPXlpKGUpO2M9ZGwoYyk7bnVsbD09PWIuY29udGV4dD9iLmNvbnRleHQ9YzpiLnBlbmRpbmdDb250ZXh0PWM7Yj1taChmLGcpO2IucGF5bG9hZD17ZWxlbWVudDphfTtkPXZvaWQgMD09PWQ/bnVsbDpkO251bGwhPT1kJiYoYi5jYWxsYmFjaz1kKTthPW5oKGUsYixnKTtudWxsIT09YSYmKGdpKGEsZSxnLGYpLG9oKGEsZSxnKSk7cmV0dXJuIGd9XG5mdW5jdGlvbiBnbChhKXthPWEuY3VycmVudDtpZighYS5jaGlsZClyZXR1cm4gbnVsbDtzd2l0Y2goYS5jaGlsZC50YWcpe2Nhc2UgNTpyZXR1cm4gYS5jaGlsZC5zdGF0ZU5vZGU7ZGVmYXVsdDpyZXR1cm4gYS5jaGlsZC5zdGF0ZU5vZGV9fWZ1bmN0aW9uIGhsKGEsYil7YT1hLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWEmJm51bGwhPT1hLmRlaHlkcmF0ZWQpe3ZhciBjPWEucmV0cnlMYW5lO2EucmV0cnlMYW5lPTAhPT1jJiZjPGI/YzpifX1mdW5jdGlvbiBpbChhLGIpe2hsKGEsYik7KGE9YS5hbHRlcm5hdGUpJiZobChhLGIpfWZ1bmN0aW9uIGpsKCl7cmV0dXJuIG51bGx9dmFyIGtsPVwiZnVuY3Rpb25cIj09PXR5cGVvZiByZXBvcnRFcnJvcj9yZXBvcnRFcnJvcjpmdW5jdGlvbihhKXtjb25zb2xlLmVycm9yKGEpfTtmdW5jdGlvbiBsbChhKXt0aGlzLl9pbnRlcm5hbFJvb3Q9YX1cbm1sLnByb3RvdHlwZS5yZW5kZXI9bGwucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihhKXt2YXIgYj10aGlzLl9pbnRlcm5hbFJvb3Q7aWYobnVsbD09PWIpdGhyb3cgRXJyb3IocCg0MDkpKTtmbChhLGIsbnVsbCxudWxsKX07bWwucHJvdG90eXBlLnVubW91bnQ9bGwucHJvdG90eXBlLnVubW91bnQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9pbnRlcm5hbFJvb3Q7aWYobnVsbCE9PWEpe3RoaXMuX2ludGVybmFsUm9vdD1udWxsO3ZhciBiPWEuY29udGFpbmVySW5mbztSayhmdW5jdGlvbigpe2ZsKG51bGwsYSxudWxsLG51bGwpfSk7Ylt1Zl09bnVsbH19O2Z1bmN0aW9uIG1sKGEpe3RoaXMuX2ludGVybmFsUm9vdD1hfVxubWwucHJvdG90eXBlLnVuc3RhYmxlX3NjaGVkdWxlSHlkcmF0aW9uPWZ1bmN0aW9uKGEpe2lmKGEpe3ZhciBiPUhjKCk7YT17YmxvY2tlZE9uOm51bGwsdGFyZ2V0OmEscHJpb3JpdHk6Yn07Zm9yKHZhciBjPTA7YzxRYy5sZW5ndGgmJjAhPT1iJiZiPFFjW2NdLnByaW9yaXR5O2MrKyk7UWMuc3BsaWNlKGMsMCxhKTswPT09YyYmVmMoYSl9fTtmdW5jdGlvbiBubChhKXtyZXR1cm4hKCFhfHwxIT09YS5ub2RlVHlwZSYmOSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZSl9ZnVuY3Rpb24gb2woYSl7cmV0dXJuISghYXx8MSE9PWEubm9kZVR5cGUmJjkhPT1hLm5vZGVUeXBlJiYxMSE9PWEubm9kZVR5cGUmJig4IT09YS5ub2RlVHlwZXx8XCIgcmVhY3QtbW91bnQtcG9pbnQtdW5zdGFibGUgXCIhPT1hLm5vZGVWYWx1ZSkpfWZ1bmN0aW9uIHBsKCl7fVxuZnVuY3Rpb24gcWwoYSxiLGMsZCxlKXtpZihlKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZCl7dmFyIGY9ZDtkPWZ1bmN0aW9uKCl7dmFyIGE9Z2woZyk7Zi5jYWxsKGEpfX12YXIgZz1lbChiLGQsYSwwLG51bGwsITEsITEsXCJcIixwbCk7YS5fcmVhY3RSb290Q29udGFpbmVyPWc7YVt1Zl09Zy5jdXJyZW50O3NmKDg9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZTphKTtSaygpO3JldHVybiBnfWZvcig7ZT1hLmxhc3RDaGlsZDspYS5yZW1vdmVDaGlsZChlKTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZCl7dmFyIGg9ZDtkPWZ1bmN0aW9uKCl7dmFyIGE9Z2woayk7aC5jYWxsKGEpfX12YXIgaz1ibChhLDAsITEsbnVsbCxudWxsLCExLCExLFwiXCIscGwpO2EuX3JlYWN0Um9vdENvbnRhaW5lcj1rO2FbdWZdPWsuY3VycmVudDtzZig4PT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGU6YSk7UmsoZnVuY3Rpb24oKXtmbChiLGssYyxkKX0pO3JldHVybiBrfVxuZnVuY3Rpb24gcmwoYSxiLGMsZCxlKXt2YXIgZj1jLl9yZWFjdFJvb3RDb250YWluZXI7aWYoZil7dmFyIGc9ZjtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZSl7dmFyIGg9ZTtlPWZ1bmN0aW9uKCl7dmFyIGE9Z2woZyk7aC5jYWxsKGEpfX1mbChiLGcsYSxlKX1lbHNlIGc9cWwoYyxiLGEsZSxkKTtyZXR1cm4gZ2woZyl9RWM9ZnVuY3Rpb24oYSl7c3dpdGNoKGEudGFnKXtjYXNlIDM6dmFyIGI9YS5zdGF0ZU5vZGU7aWYoYi5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXt2YXIgYz10YyhiLnBlbmRpbmdMYW5lcyk7MCE9PWMmJihDYyhiLGN8MSksRGsoYixCKCkpLDA9PT0oSyY2KSYmKEdqPUIoKSs1MDAsamcoKSkpfWJyZWFrO2Nhc2UgMTM6UmsoZnVuY3Rpb24oKXt2YXIgYj1paChhLDEpO2lmKG51bGwhPT1iKXt2YXIgYz1SKCk7Z2koYixhLDEsYyl9fSksaWwoYSwxKX19O1xuRmM9ZnVuY3Rpb24oYSl7aWYoMTM9PT1hLnRhZyl7dmFyIGI9aWgoYSwxMzQyMTc3MjgpO2lmKG51bGwhPT1iKXt2YXIgYz1SKCk7Z2koYixhLDEzNDIxNzcyOCxjKX1pbChhLDEzNDIxNzcyOCl9fTtHYz1mdW5jdGlvbihhKXtpZigxMz09PWEudGFnKXt2YXIgYj15aShhKSxjPWloKGEsYik7aWYobnVsbCE9PWMpe3ZhciBkPVIoKTtnaShjLGEsYixkKX1pbChhLGIpfX07SGM9ZnVuY3Rpb24oKXtyZXR1cm4gQ307SWM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1DO3RyeXtyZXR1cm4gQz1hLGIoKX1maW5hbGx5e0M9Y319O1xueWI9ZnVuY3Rpb24oYSxiLGMpe3N3aXRjaChiKXtjYXNlIFwiaW5wdXRcIjpiYihhLGMpO2I9Yy5uYW1lO2lmKFwicmFkaW9cIj09PWMudHlwZSYmbnVsbCE9Yil7Zm9yKGM9YTtjLnBhcmVudE5vZGU7KWM9Yy5wYXJlbnROb2RlO2M9Yy5xdWVyeVNlbGVjdG9yQWxsKFwiaW5wdXRbbmFtZT1cIitKU09OLnN0cmluZ2lmeShcIlwiK2IpKyddW3R5cGU9XCJyYWRpb1wiXScpO2ZvcihiPTA7YjxjLmxlbmd0aDtiKyspe3ZhciBkPWNbYl07aWYoZCE9PWEmJmQuZm9ybT09PWEuZm9ybSl7dmFyIGU9RGIoZCk7aWYoIWUpdGhyb3cgRXJyb3IocCg5MCkpO1dhKGQpO2JiKGQsZSl9fX1icmVhaztjYXNlIFwidGV4dGFyZWFcIjppYihhLGMpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjpiPWMudmFsdWUsbnVsbCE9YiYmZmIoYSwhIWMubXVsdGlwbGUsYiwhMSl9fTtHYj1RaztIYj1SaztcbnZhciBzbD17dXNpbmdDbGllbnRFbnRyeVBvaW50OiExLEV2ZW50czpbQ2IsdWUsRGIsRWIsRmIsUWtdfSx0bD17ZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6V2MsYnVuZGxlVHlwZTowLHZlcnNpb246XCIxOC4zLjFcIixyZW5kZXJlclBhY2thZ2VOYW1lOlwicmVhY3QtZG9tXCJ9O1xudmFyIHVsPXtidW5kbGVUeXBlOnRsLmJ1bmRsZVR5cGUsdmVyc2lvbjp0bC52ZXJzaW9uLHJlbmRlcmVyUGFja2FnZU5hbWU6dGwucmVuZGVyZXJQYWNrYWdlTmFtZSxyZW5kZXJlckNvbmZpZzp0bC5yZW5kZXJlckNvbmZpZyxvdmVycmlkZUhvb2tTdGF0ZTpudWxsLG92ZXJyaWRlSG9va1N0YXRlRGVsZXRlUGF0aDpudWxsLG92ZXJyaWRlSG9va1N0YXRlUmVuYW1lUGF0aDpudWxsLG92ZXJyaWRlUHJvcHM6bnVsbCxvdmVycmlkZVByb3BzRGVsZXRlUGF0aDpudWxsLG92ZXJyaWRlUHJvcHNSZW5hbWVQYXRoOm51bGwsc2V0RXJyb3JIYW5kbGVyOm51bGwsc2V0U3VzcGVuc2VIYW5kbGVyOm51bGwsc2NoZWR1bGVVcGRhdGU6bnVsbCxjdXJyZW50RGlzcGF0Y2hlclJlZjp1YS5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLGZpbmRIb3N0SW5zdGFuY2VCeUZpYmVyOmZ1bmN0aW9uKGEpe2E9WmIoYSk7cmV0dXJuIG51bGw9PT1hP251bGw6YS5zdGF0ZU5vZGV9LGZpbmRGaWJlckJ5SG9zdEluc3RhbmNlOnRsLmZpbmRGaWJlckJ5SG9zdEluc3RhbmNlfHxcbmpsLGZpbmRIb3N0SW5zdGFuY2VzRm9yUmVmcmVzaDpudWxsLHNjaGVkdWxlUmVmcmVzaDpudWxsLHNjaGVkdWxlUm9vdDpudWxsLHNldFJlZnJlc2hIYW5kbGVyOm51bGwsZ2V0Q3VycmVudEZpYmVyOm51bGwscmVjb25jaWxlclZlcnNpb246XCIxOC4zLjEtbmV4dC1mMTMzOGY4MDgwLTIwMjQwNDI2XCJ9O2lmKFwidW5kZWZpbmVkXCIhPT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fKXt2YXIgdmw9X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fO2lmKCF2bC5pc0Rpc2FibGVkJiZ2bC5zdXBwb3J0c0ZpYmVyKXRyeXtrYz12bC5pbmplY3QodWwpLGxjPXZsfWNhdGNoKGEpe319ZXhwb3J0cy5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRD1zbDtcbmV4cG9ydHMuY3JlYXRlUG9ydGFsPWZ1bmN0aW9uKGEsYil7dmFyIGM9Mjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGw7aWYoIW5sKGIpKXRocm93IEVycm9yKHAoMjAwKSk7cmV0dXJuIGNsKGEsYixudWxsLGMpfTtleHBvcnRzLmNyZWF0ZVJvb3Q9ZnVuY3Rpb24oYSxiKXtpZighbmwoYSkpdGhyb3cgRXJyb3IocCgyOTkpKTt2YXIgYz0hMSxkPVwiXCIsZT1rbDtudWxsIT09YiYmdm9pZCAwIT09YiYmKCEwPT09Yi51bnN0YWJsZV9zdHJpY3RNb2RlJiYoYz0hMCksdm9pZCAwIT09Yi5pZGVudGlmaWVyUHJlZml4JiYoZD1iLmlkZW50aWZpZXJQcmVmaXgpLHZvaWQgMCE9PWIub25SZWNvdmVyYWJsZUVycm9yJiYoZT1iLm9uUmVjb3ZlcmFibGVFcnJvcikpO2I9YmwoYSwxLCExLG51bGwsbnVsbCxjLCExLGQsZSk7YVt1Zl09Yi5jdXJyZW50O3NmKDg9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZTphKTtyZXR1cm4gbmV3IGxsKGIpfTtcbmV4cG9ydHMuZmluZERPTU5vZGU9ZnVuY3Rpb24oYSl7aWYobnVsbD09YSlyZXR1cm4gbnVsbDtpZigxPT09YS5ub2RlVHlwZSlyZXR1cm4gYTt2YXIgYj1hLl9yZWFjdEludGVybmFscztpZih2b2lkIDA9PT1iKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYS5yZW5kZXIpdGhyb3cgRXJyb3IocCgxODgpKTthPU9iamVjdC5rZXlzKGEpLmpvaW4oXCIsXCIpO3Rocm93IEVycm9yKHAoMjY4LGEpKTt9YT1aYihiKTthPW51bGw9PT1hP251bGw6YS5zdGF0ZU5vZGU7cmV0dXJuIGF9O2V4cG9ydHMuZmx1c2hTeW5jPWZ1bmN0aW9uKGEpe3JldHVybiBSayhhKX07ZXhwb3J0cy5oeWRyYXRlPWZ1bmN0aW9uKGEsYixjKXtpZighb2woYikpdGhyb3cgRXJyb3IocCgyMDApKTtyZXR1cm4gcmwobnVsbCxhLGIsITAsYyl9O1xuZXhwb3J0cy5oeWRyYXRlUm9vdD1mdW5jdGlvbihhLGIsYyl7aWYoIW5sKGEpKXRocm93IEVycm9yKHAoNDA1KSk7dmFyIGQ9bnVsbCE9YyYmYy5oeWRyYXRlZFNvdXJjZXN8fG51bGwsZT0hMSxmPVwiXCIsZz1rbDtudWxsIT09YyYmdm9pZCAwIT09YyYmKCEwPT09Yy51bnN0YWJsZV9zdHJpY3RNb2RlJiYoZT0hMCksdm9pZCAwIT09Yy5pZGVudGlmaWVyUHJlZml4JiYoZj1jLmlkZW50aWZpZXJQcmVmaXgpLHZvaWQgMCE9PWMub25SZWNvdmVyYWJsZUVycm9yJiYoZz1jLm9uUmVjb3ZlcmFibGVFcnJvcikpO2I9ZWwoYixudWxsLGEsMSxudWxsIT1jP2M6bnVsbCxlLCExLGYsZyk7YVt1Zl09Yi5jdXJyZW50O3NmKGEpO2lmKGQpZm9yKGE9MDthPGQubGVuZ3RoO2ErKyljPWRbYV0sZT1jLl9nZXRWZXJzaW9uLGU9ZShjLl9zb3VyY2UpLG51bGw9PWIubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YT9iLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE9W2MsZV06Yi5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhLnB1c2goYyxcbmUpO3JldHVybiBuZXcgbWwoYil9O2V4cG9ydHMucmVuZGVyPWZ1bmN0aW9uKGEsYixjKXtpZighb2woYikpdGhyb3cgRXJyb3IocCgyMDApKTtyZXR1cm4gcmwobnVsbCxhLGIsITEsYyl9O2V4cG9ydHMudW5tb3VudENvbXBvbmVudEF0Tm9kZT1mdW5jdGlvbihhKXtpZighb2woYSkpdGhyb3cgRXJyb3IocCg0MCkpO3JldHVybiBhLl9yZWFjdFJvb3RDb250YWluZXI/KFJrKGZ1bmN0aW9uKCl7cmwobnVsbCxudWxsLGEsITEsZnVuY3Rpb24oKXthLl9yZWFjdFJvb3RDb250YWluZXI9bnVsbDthW3VmXT1udWxsfSl9KSwhMCk6ITF9O2V4cG9ydHMudW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM9UWs7XG5leHBvcnRzLnVuc3RhYmxlX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyPWZ1bmN0aW9uKGEsYixjLGQpe2lmKCFvbChjKSl0aHJvdyBFcnJvcihwKDIwMCkpO2lmKG51bGw9PWF8fHZvaWQgMD09PWEuX3JlYWN0SW50ZXJuYWxzKXRocm93IEVycm9yKHAoMzgpKTtyZXR1cm4gcmwoYSxiLGMsITEsZCl9O2V4cG9ydHMudmVyc2lvbj1cIjE4LjMuMS1uZXh0LWYxMzM4ZjgwODAtMjAyNDA0MjZcIjtcbiIsIid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gY2hlY2tEQ0UoKSB7XG4gIC8qIGdsb2JhbCBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gKi9cbiAgaWYgKFxuICAgIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gPT09ICd1bmRlZmluZWQnIHx8XG4gICAgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRSAhPT0gJ2Z1bmN0aW9uJ1xuICApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBUaGlzIGJyYW5jaCBpcyB1bnJlYWNoYWJsZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWRcbiAgICAvLyBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGNvbmRpdGlvbiBpcyB0cnVlIG9ubHkgaW4gZGV2ZWxvcG1lbnQuXG4gICAgLy8gVGhlcmVmb3JlIGlmIHRoZSBicmFuY2ggaXMgc3RpbGwgaGVyZSwgZGVhZCBjb2RlIGVsaW1pbmF0aW9uIHdhc24ndFxuICAgIC8vIHByb3Blcmx5IGFwcGxpZWQuXG4gICAgLy8gRG9uJ3QgY2hhbmdlIHRoZSBtZXNzYWdlLiBSZWFjdCBEZXZUb29scyByZWxpZXMgb24gaXQuIEFsc28gbWFrZSBzdXJlXG4gICAgLy8gdGhpcyBtZXNzYWdlIGRvZXNuJ3Qgb2NjdXIgZWxzZXdoZXJlIGluIHRoaXMgZnVuY3Rpb24sIG9yIGl0IHdpbGwgY2F1c2VcbiAgICAvLyBhIGZhbHNlIHBvc2l0aXZlLlxuICAgIHRocm93IG5ldyBFcnJvcignXl9eJyk7XG4gIH1cbiAgdHJ5IHtcbiAgICAvLyBWZXJpZnkgdGhhdCB0aGUgY29kZSBhYm92ZSBoYXMgYmVlbiBkZWFkIGNvZGUgZWxpbWluYXRlZCAoRENFJ2QpLlxuICAgIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRShjaGVja0RDRSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIERldlRvb2xzIHNob3VsZG4ndCBjcmFzaCBSZWFjdCwgbm8gbWF0dGVyIHdoYXQuXG4gICAgLy8gV2Ugc2hvdWxkIHN0aWxsIHJlcG9ydCBpbiBjYXNlIHdlIGJyZWFrIHRoaXMgY29kZS5cbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gIH1cbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgLy8gRENFIGNoZWNrIHNob3VsZCBoYXBwZW4gYmVmb3JlIFJlYWN0RE9NIGJ1bmRsZSBleGVjdXRlcyBzbyB0aGF0XG4gIC8vIERldlRvb2xzIGNhbiByZXBvcnQgYmFkIG1pbmlmaWNhdGlvbiBkdXJpbmcgaW5qZWN0aW9uLlxuICBjaGVja0RDRSgpO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1kb20uZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIG0gPSByZXF1aXJlKCdyZWFjdC1kb20nKTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIGV4cG9ydHMuY3JlYXRlUm9vdCA9IG0uY3JlYXRlUm9vdDtcbiAgZXhwb3J0cy5oeWRyYXRlUm9vdCA9IG0uaHlkcmF0ZVJvb3Q7XG59IGVsc2Uge1xuICB2YXIgaSA9IG0uX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ7XG4gIGV4cG9ydHMuY3JlYXRlUm9vdCA9IGZ1bmN0aW9uKGMsIG8pIHtcbiAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IHRydWU7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBtLmNyZWF0ZVJvb3QoYywgbyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGkudXNpbmdDbGllbnRFbnRyeVBvaW50ID0gZmFsc2U7XG4gICAgfVxuICB9O1xuICBleHBvcnRzLmh5ZHJhdGVSb290ID0gZnVuY3Rpb24oYywgaCwgbykge1xuICAgIGkudXNpbmdDbGllbnRFbnRyeVBvaW50ID0gdHJ1ZTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG0uaHlkcmF0ZVJvb3QoYywgaCwgbyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGkudXNpbmdDbGllbnRFbnRyeVBvaW50ID0gZmFsc2U7XG4gICAgfVxuICB9O1xufVxuIiwiLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBDb3B5cmlnaHQgMjAyMSBlQmF5IEluYy5cblxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlXG4gKiBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgb3IgYXRcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlULlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKipcbiAqIEBtb2R1bGUgTmljZU1vZGFsXG4gKiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZVJlZHVjZXIsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG52YXIgc3ltTW9kYWxJZCA9IFN5bWJvbCgnTmljZU1vZGFsSWQnKTtcbnZhciBpbml0aWFsU3RhdGUgPSB7fTtcbmV4cG9ydCB2YXIgTmljZU1vZGFsQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoaW5pdGlhbFN0YXRlKTtcbnZhciBOaWNlTW9kYWxJZENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xudmFyIE1PREFMX1JFR0lTVFJZID0ge307XG52YXIgQUxSRUFEWV9NT1VOVEVEID0ge307XG52YXIgdWlkU2VlZCA9IDA7XG52YXIgZGlzcGF0Y2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyBkaXNwYXRjaCBtZXRob2QgZGV0ZWN0ZWQsIGRpZCB5b3UgZW1iZWQgeW91ciBhcHAgd2l0aCBOaWNlTW9kYWwuUHJvdmlkZXI/Jyk7XG59O1xudmFyIGdldFVpZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFwiX25pY2VfbW9kYWxfXCIgKyB1aWRTZWVkKys7IH07XG4vLyBNb2RhbCByZWR1Y2VyIHVzZWQgaW4gdXNlUmVkdWNlciBob29rLlxuZXhwb3J0IHZhciByZWR1Y2VyID0gZnVuY3Rpb24gKHN0YXRlLCBhY3Rpb24pIHtcbiAgICB2YXIgX2EsIF9iLCBfYztcbiAgICBpZiAoc3RhdGUgPT09IHZvaWQgMCkgeyBzdGF0ZSA9IGluaXRpYWxTdGF0ZTsgfVxuICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnbmljZS1tb2RhbC9zaG93Jzoge1xuICAgICAgICAgICAgdmFyIF9kID0gYWN0aW9uLnBheWxvYWQsIG1vZGFsSWQgPSBfZC5tb2RhbElkLCBhcmdzID0gX2QuYXJncztcbiAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RhdGUpLCAoX2EgPSB7fSwgX2FbbW9kYWxJZF0gPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RhdGVbbW9kYWxJZF0pLCB7IGlkOiBtb2RhbElkLCBhcmdzOiBhcmdzLCBcbiAgICAgICAgICAgICAgICAvLyBJZiBtb2RhbCBpcyBub3QgbW91bnRlZCwgbW91bnQgaXQgZmlyc3QgdGhlbiBtYWtlIGl0IHZpc2libGUuXG4gICAgICAgICAgICAgICAgLy8gVGhlcmUgaXMgbG9naWMgaW5zaWRlIEhPQyB3cmFwcGVyIHRvIG1ha2UgaXQgdmlzaWJsZSBhZnRlciBpdHMgZmlyc3QgbW91bnQuXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBtZWNoYW5pc20gZW5zdXJlcyB0aGUgZW50ZXJpbmcgdHJhbnNpdGlvbi5cbiAgICAgICAgICAgICAgICB2aXNpYmxlOiAhIUFMUkVBRFlfTU9VTlRFRFttb2RhbElkXSwgZGVsYXlWaXNpYmxlOiAhQUxSRUFEWV9NT1VOVEVEW21vZGFsSWRdIH0pLCBfYSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ25pY2UtbW9kYWwvaGlkZSc6IHtcbiAgICAgICAgICAgIHZhciBtb2RhbElkID0gYWN0aW9uLnBheWxvYWQubW9kYWxJZDtcbiAgICAgICAgICAgIGlmICghc3RhdGVbbW9kYWxJZF0pXG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdGF0ZSksIChfYiA9IHt9LCBfYlttb2RhbElkXSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdGF0ZVttb2RhbElkXSksIHsgdmlzaWJsZTogZmFsc2UgfSksIF9iKSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnbmljZS1tb2RhbC9yZW1vdmUnOiB7XG4gICAgICAgICAgICB2YXIgbW9kYWxJZCA9IGFjdGlvbi5wYXlsb2FkLm1vZGFsSWQ7XG4gICAgICAgICAgICB2YXIgbmV3U3RhdGUgPSBfX2Fzc2lnbih7fSwgc3RhdGUpO1xuICAgICAgICAgICAgZGVsZXRlIG5ld1N0YXRlW21vZGFsSWRdO1xuICAgICAgICAgICAgcmV0dXJuIG5ld1N0YXRlO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ25pY2UtbW9kYWwvc2V0LWZsYWdzJzoge1xuICAgICAgICAgICAgdmFyIF9lID0gYWN0aW9uLnBheWxvYWQsIG1vZGFsSWQgPSBfZS5tb2RhbElkLCBmbGFncyA9IF9lLmZsYWdzO1xuICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdGF0ZSksIChfYyA9IHt9LCBfY1ttb2RhbElkXSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdGF0ZVttb2RhbElkXSksIGZsYWdzKSwgX2MpKTtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cbn07XG4vLyBHZXQgbW9kYWwgY29tcG9uZW50IGJ5IG1vZGFsIGlkXG5mdW5jdGlvbiBnZXRNb2RhbChtb2RhbElkKSB7XG4gICAgdmFyIF9hO1xuICAgIHJldHVybiAoX2EgPSBNT0RBTF9SRUdJU1RSWVttb2RhbElkXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNvbXA7XG59XG4vLyBhY3Rpb24gY3JlYXRvciB0byBzaG93IGEgbW9kYWxcbmZ1bmN0aW9uIHNob3dNb2RhbChtb2RhbElkLCBhcmdzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ25pY2UtbW9kYWwvc2hvdycsXG4gICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIG1vZGFsSWQ6IG1vZGFsSWQsXG4gICAgICAgICAgICBhcmdzOiBhcmdzLFxuICAgICAgICB9LFxuICAgIH07XG59XG4vLyBhY3Rpb24gY3JlYXRvciB0byBzZXQgZmxhZ3Mgb2YgYSBtb2RhbFxuZnVuY3Rpb24gc2V0TW9kYWxGbGFncyhtb2RhbElkLCBmbGFncykge1xuICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICduaWNlLW1vZGFsL3NldC1mbGFncycsXG4gICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIG1vZGFsSWQ6IG1vZGFsSWQsXG4gICAgICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgIH0sXG4gICAgfTtcbn1cbi8vIGFjdGlvbiBjcmVhdG9yIHRvIGhpZGUgYSBtb2RhbFxuZnVuY3Rpb24gaGlkZU1vZGFsKG1vZGFsSWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAnbmljZS1tb2RhbC9oaWRlJyxcbiAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgbW9kYWxJZDogbW9kYWxJZCxcbiAgICAgICAgfSxcbiAgICB9O1xufVxuLy8gYWN0aW9uIGNyZWF0b3IgdG8gcmVtb3ZlIGEgbW9kYWxcbmZ1bmN0aW9uIHJlbW92ZU1vZGFsKG1vZGFsSWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAnbmljZS1tb2RhbC9yZW1vdmUnLFxuICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBtb2RhbElkOiBtb2RhbElkLFxuICAgICAgICB9LFxuICAgIH07XG59XG52YXIgbW9kYWxDYWxsYmFja3MgPSB7fTtcbnZhciBoaWRlTW9kYWxDYWxsYmFja3MgPSB7fTtcbnZhciBnZXRNb2RhbElkID0gZnVuY3Rpb24gKG1vZGFsKSB7XG4gICAgaWYgKHR5cGVvZiBtb2RhbCA9PT0gJ3N0cmluZycpXG4gICAgICAgIHJldHVybiBtb2RhbDtcbiAgICBpZiAoIW1vZGFsW3N5bU1vZGFsSWRdKSB7XG4gICAgICAgIG1vZGFsW3N5bU1vZGFsSWRdID0gZ2V0VWlkKCk7XG4gICAgfVxuICAgIHJldHVybiBtb2RhbFtzeW1Nb2RhbElkXTtcbn07XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xuZXhwb3J0IGZ1bmN0aW9uIHNob3cobW9kYWwsIGFyZ3MpIHtcbiAgICB2YXIgbW9kYWxJZCA9IGdldE1vZGFsSWQobW9kYWwpO1xuICAgIGlmICh0eXBlb2YgbW9kYWwgIT09ICdzdHJpbmcnICYmICFNT0RBTF9SRUdJU1RSWVttb2RhbElkXSkge1xuICAgICAgICByZWdpc3Rlcihtb2RhbElkLCBtb2RhbCk7XG4gICAgfVxuICAgIGRpc3BhdGNoKHNob3dNb2RhbChtb2RhbElkLCBhcmdzKSk7XG4gICAgaWYgKCFtb2RhbENhbGxiYWNrc1ttb2RhbElkXSkge1xuICAgICAgICAvLyBgIWAgdGVsbCB0cyB0aGF0IHRoZVJlc29sdmUgd2lsbCBiZSB3cml0dGVuIGJlZm9yZSBpdCBpcyB1c2VkXG4gICAgICAgIHZhciB0aGVSZXNvbHZlXzE7XG4gICAgICAgIC8vIGAhYCB0ZWxsIHRzIHRoYXQgdGhlUmVzb2x2ZSB3aWxsIGJlIHdyaXR0ZW4gYmVmb3JlIGl0IGlzIHVzZWRcbiAgICAgICAgdmFyIHRoZVJlamVjdF8xO1xuICAgICAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHRoZVJlc29sdmVfMSA9IHJlc29sdmU7XG4gICAgICAgICAgICB0aGVSZWplY3RfMSA9IHJlamVjdDtcbiAgICAgICAgfSk7XG4gICAgICAgIG1vZGFsQ2FsbGJhY2tzW21vZGFsSWRdID0ge1xuICAgICAgICAgICAgcmVzb2x2ZTogdGhlUmVzb2x2ZV8xLFxuICAgICAgICAgICAgcmVqZWN0OiB0aGVSZWplY3RfMSxcbiAgICAgICAgICAgIHByb21pc2U6IHByb21pc2UsXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBtb2RhbENhbGxiYWNrc1ttb2RhbElkXS5wcm9taXNlO1xufVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXNcbmV4cG9ydCBmdW5jdGlvbiBoaWRlKG1vZGFsKSB7XG4gICAgdmFyIG1vZGFsSWQgPSBnZXRNb2RhbElkKG1vZGFsKTtcbiAgICBkaXNwYXRjaChoaWRlTW9kYWwobW9kYWxJZCkpO1xuICAgIC8vIFNob3VsZCBhbHNvIGRlbGV0ZSB0aGUgY2FsbGJhY2sgZm9yIG1vZGFsLnJlc29sdmUgIzM1XG4gICAgZGVsZXRlIG1vZGFsQ2FsbGJhY2tzW21vZGFsSWRdO1xuICAgIGlmICghaGlkZU1vZGFsQ2FsbGJhY2tzW21vZGFsSWRdKSB7XG4gICAgICAgIC8vIGAhYCB0ZWxsIHRzIHRoYXQgdGhlUmVzb2x2ZSB3aWxsIGJlIHdyaXR0ZW4gYmVmb3JlIGl0IGlzIHVzZWRcbiAgICAgICAgdmFyIHRoZVJlc29sdmVfMjtcbiAgICAgICAgLy8gYCFgIHRlbGwgdHMgdGhhdCB0aGVSZXNvbHZlIHdpbGwgYmUgd3JpdHRlbiBiZWZvcmUgaXQgaXMgdXNlZFxuICAgICAgICB2YXIgdGhlUmVqZWN0XzI7XG4gICAgICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdGhlUmVzb2x2ZV8yID0gcmVzb2x2ZTtcbiAgICAgICAgICAgIHRoZVJlamVjdF8yID0gcmVqZWN0O1xuICAgICAgICB9KTtcbiAgICAgICAgaGlkZU1vZGFsQ2FsbGJhY2tzW21vZGFsSWRdID0ge1xuICAgICAgICAgICAgcmVzb2x2ZTogdGhlUmVzb2x2ZV8yLFxuICAgICAgICAgICAgcmVqZWN0OiB0aGVSZWplY3RfMixcbiAgICAgICAgICAgIHByb21pc2U6IHByb21pc2UsXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBoaWRlTW9kYWxDYWxsYmFja3NbbW9kYWxJZF0ucHJvbWlzZTtcbn1cbmV4cG9ydCB2YXIgcmVtb3ZlID0gZnVuY3Rpb24gKG1vZGFsKSB7XG4gICAgdmFyIG1vZGFsSWQgPSBnZXRNb2RhbElkKG1vZGFsKTtcbiAgICBkaXNwYXRjaChyZW1vdmVNb2RhbChtb2RhbElkKSk7XG4gICAgZGVsZXRlIG1vZGFsQ2FsbGJhY2tzW21vZGFsSWRdO1xuICAgIGRlbGV0ZSBoaWRlTW9kYWxDYWxsYmFja3NbbW9kYWxJZF07XG59O1xudmFyIHNldEZsYWdzID0gZnVuY3Rpb24gKG1vZGFsSWQsIGZsYWdzKSB7XG4gICAgZGlzcGF0Y2goc2V0TW9kYWxGbGFncyhtb2RhbElkLCBmbGFncykpO1xufTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzXG5leHBvcnQgZnVuY3Rpb24gdXNlTW9kYWwobW9kYWwsIGFyZ3MpIHtcbiAgICB2YXIgbW9kYWxzID0gdXNlQ29udGV4dChOaWNlTW9kYWxDb250ZXh0KTtcbiAgICB2YXIgY29udGV4dE1vZGFsSWQgPSB1c2VDb250ZXh0KE5pY2VNb2RhbElkQ29udGV4dCk7XG4gICAgdmFyIG1vZGFsSWQgPSBudWxsO1xuICAgIHZhciBpc1VzZUNvbXBvbmVudCA9IG1vZGFsICYmIHR5cGVvZiBtb2RhbCAhPT0gJ3N0cmluZyc7XG4gICAgaWYgKCFtb2RhbCkge1xuICAgICAgICBtb2RhbElkID0gY29udGV4dE1vZGFsSWQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBtb2RhbElkID0gZ2V0TW9kYWxJZChtb2RhbCk7XG4gICAgfVxuICAgIC8vIE9ubHkgaWYgY29udGV4dE1vZGFsSWQgZG9lc24ndCBleGlzdFxuICAgIGlmICghbW9kYWxJZClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBtb2RhbCBpZCBmb3VuZCBpbiBOaWNlTW9kYWwudXNlTW9kYWwuJyk7XG4gICAgdmFyIG1pZCA9IG1vZGFsSWQ7XG4gICAgLy8gSWYgdXNlIGEgY29tcG9uZW50IGRpcmVjdGx5LCByZWdpc3RlciBpdC5cbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoaXNVc2VDb21wb25lbnQgJiYgIU1PREFMX1JFR0lTVFJZW21pZF0pIHtcbiAgICAgICAgICAgIHJlZ2lzdGVyKG1pZCwgbW9kYWwsIGFyZ3MpO1xuICAgICAgICB9XG4gICAgfSwgW2lzVXNlQ29tcG9uZW50LCBtaWQsIG1vZGFsLCBhcmdzXSk7XG4gICAgdmFyIG1vZGFsSW5mbyA9IG1vZGFsc1ttaWRdO1xuICAgIHZhciBzaG93Q2FsbGJhY2sgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoYXJncykgeyByZXR1cm4gc2hvdyhtaWQsIGFyZ3MpOyB9LCBbbWlkXSk7XG4gICAgdmFyIGhpZGVDYWxsYmFjayA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGhpZGUobWlkKTsgfSwgW21pZF0pO1xuICAgIHZhciByZW1vdmVDYWxsYmFjayA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlbW92ZShtaWQpOyB9LCBbbWlkXSk7XG4gICAgdmFyIHJlc29sdmVDYWxsYmFjayA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgKF9hID0gbW9kYWxDYWxsYmFja3NbbWlkXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnJlc29sdmUoYXJncyk7XG4gICAgICAgIGRlbGV0ZSBtb2RhbENhbGxiYWNrc1ttaWRdO1xuICAgIH0sIFttaWRdKTtcbiAgICB2YXIgcmVqZWN0Q2FsbGJhY2sgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoYXJncykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIChfYSA9IG1vZGFsQ2FsbGJhY2tzW21pZF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZWplY3QoYXJncyk7XG4gICAgICAgIGRlbGV0ZSBtb2RhbENhbGxiYWNrc1ttaWRdO1xuICAgIH0sIFttaWRdKTtcbiAgICB2YXIgcmVzb2x2ZUhpZGUgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoYXJncykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIChfYSA9IGhpZGVNb2RhbENhbGxiYWNrc1ttaWRdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVzb2x2ZShhcmdzKTtcbiAgICAgICAgZGVsZXRlIGhpZGVNb2RhbENhbGxiYWNrc1ttaWRdO1xuICAgIH0sIFttaWRdKTtcbiAgICByZXR1cm4gdXNlTWVtbyhmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgICAgICBpZDogbWlkLFxuICAgICAgICBhcmdzOiBtb2RhbEluZm8gPT09IG51bGwgfHwgbW9kYWxJbmZvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBtb2RhbEluZm8uYXJncyxcbiAgICAgICAgdmlzaWJsZTogISEobW9kYWxJbmZvID09PSBudWxsIHx8IG1vZGFsSW5mbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbW9kYWxJbmZvLnZpc2libGUpLFxuICAgICAgICBrZWVwTW91bnRlZDogISEobW9kYWxJbmZvID09PSBudWxsIHx8IG1vZGFsSW5mbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbW9kYWxJbmZvLmtlZXBNb3VudGVkKSxcbiAgICAgICAgc2hvdzogc2hvd0NhbGxiYWNrLFxuICAgICAgICBoaWRlOiBoaWRlQ2FsbGJhY2ssXG4gICAgICAgIHJlbW92ZTogcmVtb3ZlQ2FsbGJhY2ssXG4gICAgICAgIHJlc29sdmU6IHJlc29sdmVDYWxsYmFjayxcbiAgICAgICAgcmVqZWN0OiByZWplY3RDYWxsYmFjayxcbiAgICAgICAgcmVzb2x2ZUhpZGU6IHJlc29sdmVIaWRlLFxuICAgIH0pOyB9LCBbXG4gICAgICAgIG1pZCxcbiAgICAgICAgbW9kYWxJbmZvID09PSBudWxsIHx8IG1vZGFsSW5mbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbW9kYWxJbmZvLmFyZ3MsXG4gICAgICAgIG1vZGFsSW5mbyA9PT0gbnVsbCB8fCBtb2RhbEluZm8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1vZGFsSW5mby52aXNpYmxlLFxuICAgICAgICBtb2RhbEluZm8gPT09IG51bGwgfHwgbW9kYWxJbmZvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBtb2RhbEluZm8ua2VlcE1vdW50ZWQsXG4gICAgICAgIHNob3dDYWxsYmFjayxcbiAgICAgICAgaGlkZUNhbGxiYWNrLFxuICAgICAgICByZW1vdmVDYWxsYmFjayxcbiAgICAgICAgcmVzb2x2ZUNhbGxiYWNrLFxuICAgICAgICByZWplY3RDYWxsYmFjayxcbiAgICAgICAgcmVzb2x2ZUhpZGUsXG4gICAgXSk7XG59XG5leHBvcnQgdmFyIGNyZWF0ZSA9IGZ1bmN0aW9uIChDb21wKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgX2I7XG4gICAgICAgIHZhciBkZWZhdWx0VmlzaWJsZSA9IF9hLmRlZmF1bHRWaXNpYmxlLCBrZWVwTW91bnRlZCA9IF9hLmtlZXBNb3VudGVkLCBpZCA9IF9hLmlkLCBwcm9wcyA9IF9fcmVzdChfYSwgW1wiZGVmYXVsdFZpc2libGVcIiwgXCJrZWVwTW91bnRlZFwiLCBcImlkXCJdKTtcbiAgICAgICAgdmFyIF9jID0gdXNlTW9kYWwoaWQpLCBhcmdzID0gX2MuYXJncywgc2hvdyA9IF9jLnNob3c7XG4gICAgICAgIC8vIElmIHRoZXJlJ3MgbW9kYWwgc3RhdGUsIHRoZW4gc2hvdWxkIG1vdW50IGl0LlxuICAgICAgICB2YXIgbW9kYWxzID0gdXNlQ29udGV4dChOaWNlTW9kYWxDb250ZXh0KTtcbiAgICAgICAgdmFyIHNob3VsZE1vdW50ID0gISFtb2RhbHNbaWRdO1xuICAgICAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy8gSWYgZGVmYXVsdFZpc2libGUsIHNob3cgaXQgYWZ0ZXIgbW91bnRlZC5cbiAgICAgICAgICAgIGlmIChkZWZhdWx0VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHNob3coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEFMUkVBRFlfTU9VTlRFRFtpZF0gPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgQUxSRUFEWV9NT1VOVEVEW2lkXTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sIFtpZCwgc2hvdywgZGVmYXVsdFZpc2libGVdKTtcbiAgICAgICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChrZWVwTW91bnRlZClcbiAgICAgICAgICAgICAgICBzZXRGbGFncyhpZCwgeyBrZWVwTW91bnRlZDogdHJ1ZSB9KTtcbiAgICAgICAgfSwgW2lkLCBrZWVwTW91bnRlZF0pO1xuICAgICAgICB2YXIgZGVsYXlWaXNpYmxlID0gKF9iID0gbW9kYWxzW2lkXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmRlbGF5VmlzaWJsZTtcbiAgICAgICAgLy8gSWYgbW9kYWwuc2hvdyBpcyBjYWxsZWRcbiAgICAgICAgLy8gIDEuIElmIG1vZGFsIHdhcyBtb3VudGVkLCBzaG91bGQgbWFrZSBpdCB2aXNpYmxlIGRpcmVjdGx5XG4gICAgICAgIC8vICAyLiBJZiBtb2RhbCBoYXMgbm90IGJlZW4gbW91bnRlZCwgc2hvdWxkIG1vdW50IGl0IGZpcnN0LCB0aGVuIG1ha2UgaXQgdmlzaWJsZVxuICAgICAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGRlbGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIC8vIGRlbGF5VmlzaWJsZTogZmFsc2UgPT4gdHJ1ZSwgaXQgbWVhbnMgdGhlIG1vZGFsLnNob3coKSBpcyBjYWxsZWQsIHNob3VsZCBzaG93IGl0LlxuICAgICAgICAgICAgICAgIHNob3coYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIFtkZWxheVZpc2libGUsIGFyZ3MsIHNob3ddKTtcbiAgICAgICAgaWYgKCFzaG91bGRNb3VudClcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoTmljZU1vZGFsSWRDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBpZCB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChDb21wLCBfX2Fzc2lnbih7fSwgcHJvcHMsIGFyZ3MpKSkpO1xuICAgIH07XG59O1xuLy8gQWxsIHJlZ2lzdGVyZWQgbW9kYWxzIHdpbGwgYmUgcmVuZGVyZWQgaW4gbW9kYWwgcGxhY2Vob2xkZXJcbmV4cG9ydCB2YXIgcmVnaXN0ZXIgPSBmdW5jdGlvbiAoaWQsIGNvbXAsIHByb3BzKSB7XG4gICAgaWYgKCFNT0RBTF9SRUdJU1RSWVtpZF0pIHtcbiAgICAgICAgTU9EQUxfUkVHSVNUUllbaWRdID0geyBjb21wOiBjb21wLCBwcm9wczogcHJvcHMgfTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIE1PREFMX1JFR0lTVFJZW2lkXS5wcm9wcyA9IHByb3BzO1xuICAgIH1cbn07XG4vKipcbiAqIFVucmVnaXN0ZXIgYSBtb2RhbC5cbiAqIEBwYXJhbSBpZCAtIFRoZSBpZCBvZiB0aGUgbW9kYWwuXG4gKi9cbmV4cG9ydCB2YXIgdW5yZWdpc3RlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgIGRlbGV0ZSBNT0RBTF9SRUdJU1RSWVtpZF07XG59O1xuLy8gVGhlIHBsYWNlaG9sZGVyIGNvbXBvbmVudCBpcyB1c2VkIHRvIGF1dG8gcmVuZGVyIG1vZGFscyB3aGVuIGNhbGwgbW9kYWwuc2hvdygpXG4vLyBXaGVuIG1vZGFsLnNob3coKSBpcyBjYWxsZWQsIGl0IG1lYW5zIHRoZXJlJ3ZlIGJlZW4gbW9kYWwgaW5mb1xudmFyIE5pY2VNb2RhbFBsYWNlaG9sZGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBtb2RhbHMgPSB1c2VDb250ZXh0KE5pY2VNb2RhbENvbnRleHQpO1xuICAgIHZhciB2aXNpYmxlTW9kYWxJZHMgPSBPYmplY3Qua2V5cyhtb2RhbHMpLmZpbHRlcihmdW5jdGlvbiAoaWQpIHsgcmV0dXJuICEhbW9kYWxzW2lkXTsgfSk7XG4gICAgdmlzaWJsZU1vZGFsSWRzLmZvckVhY2goZnVuY3Rpb24gKGlkKSB7XG4gICAgICAgIGlmICghTU9EQUxfUkVHSVNUUllbaWRdICYmICFBTFJFQURZX01PVU5URURbaWRdKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJObyBtb2RhbCBmb3VuZCBmb3IgaWQ6IFwiICsgaWQgKyBcIi4gUGxlYXNlIGNoZWNrIHRoZSBpZCBvciBpZiBpdCBpcyByZWdpc3RlcmVkIG9yIGRlY2xhcmVkIHZpYSBKU1guXCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgdmFyIHRvUmVuZGVyID0gdmlzaWJsZU1vZGFsSWRzXG4gICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKGlkKSB7IHJldHVybiBNT0RBTF9SRUdJU1RSWVtpZF07IH0pXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKGlkKSB7IHJldHVybiAoX19hc3NpZ24oeyBpZDogaWQgfSwgTU9EQUxfUkVHSVNUUllbaWRdKSk7IH0pO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgdG9SZW5kZXIubWFwKGZ1bmN0aW9uICh0KSB7IHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudCh0LmNvbXAsIF9fYXNzaWduKHsga2V5OiB0LmlkLCBpZDogdC5pZCB9LCB0LnByb3BzKSkpOyB9KSkpO1xufTtcbnZhciBJbm5lckNvbnRleHRQcm92aWRlciA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBjaGlsZHJlbiA9IF9hLmNoaWxkcmVuO1xuICAgIHZhciBhcnIgPSB1c2VSZWR1Y2VyKHJlZHVjZXIsIGluaXRpYWxTdGF0ZSk7XG4gICAgdmFyIG1vZGFscyA9IGFyclswXTtcbiAgICBkaXNwYXRjaCA9IGFyclsxXTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoTmljZU1vZGFsQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogbW9kYWxzIH0sXG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KE5pY2VNb2RhbFBsYWNlaG9sZGVyLCBudWxsKSkpO1xufTtcbmV4cG9ydCB2YXIgUHJvdmlkZXIgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBfYS5jaGlsZHJlbiwgZ2l2ZW5EaXNwYXRjaCA9IF9hLmRpc3BhdGNoLCBnaXZlbk1vZGFscyA9IF9hLm1vZGFscztcbiAgICBpZiAoIWdpdmVuRGlzcGF0Y2ggfHwgIWdpdmVuTW9kYWxzKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KElubmVyQ29udGV4dFByb3ZpZGVyLCBudWxsLCBjaGlsZHJlbik7XG4gICAgfVxuICAgIGRpc3BhdGNoID0gZ2l2ZW5EaXNwYXRjaDtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoTmljZU1vZGFsQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogZ2l2ZW5Nb2RhbHMgfSxcbiAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTmljZU1vZGFsUGxhY2Vob2xkZXIsIG51bGwpKSk7XG59O1xuLyoqXG4gKiBEZWNsYXJhdGl2ZSB3YXkgdG8gcmVnaXN0ZXIgYSBtb2RhbC5cbiAqIEBwYXJhbSBpZCAtIFRoZSBpZCBvZiB0aGUgbW9kYWwuXG4gKiBAcGFyYW0gY29tcG9uZW50IC0gVGhlIG1vZGFsIENvbXBvbmVudC5cbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCB2YXIgTW9kYWxEZWYgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgaWQgPSBfYS5pZCwgY29tcG9uZW50ID0gX2EuY29tcG9uZW50O1xuICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJlZ2lzdGVyKGlkLCBjb21wb25lbnQpO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdW5yZWdpc3RlcihpZCk7XG4gICAgICAgIH07XG4gICAgfSwgW2lkLCBjb21wb25lbnRdKTtcbiAgICByZXR1cm4gbnVsbDtcbn07XG4vKipcbiAqIEEgcGxhY2UgaG9sZGVyIGFsbG93cyB0byBiaW5kIHByb3BzIHRvIGEgbW9kYWwuXG4gKiBJdCBhc3NpZ25zIHNob3cvaGlkZSBtZXRob2RzIHRvIGhhbmRsZXIgb2JqZWN0IHRvIHNob3cvaGlkZSB0aGUgbW9kYWwuXG4gKlxuICogQ29tcGFyaW5nIHRvIHVzZSB0aGUgPE15TmljZU1vZGFsIGlkPS4uLz4gZGlyZWN0bHksIHRoaXMgYXBwcm9hY2ggYWxsb3dzIHVzZSByZWdpc3RlcmVkIG1vZGFsIGlkIHRvIGZpbmQgdGhlIG1vZGFsIGNvbXBvbmVudC5cbiAqIEFsc28gaXQgYXZvaWRzIHRvIGNyZWF0ZSB1bmlxdWUgaWQgZm9yIE15TmljZU1vZGFsLlxuICpcbiAqIEBwYXJhbSBtb2RhbCAtIFRoZSBtb2RhbCBpZCByZWdpc3RlcmVkIG9yIGEgbW9kYWwgY29tcG9uZW50LlxuICogQHBhcmFtIGhhbmRsZXIgLSBUaGUgaGFuZGxlciBvYmplY3QgdG8gY29udHJvbCB0aGUgbW9kYWwuXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgdmFyIE1vZGFsSG9sZGVyID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIF9iO1xuICAgIHZhciBtb2RhbCA9IF9hLm1vZGFsLCBfYyA9IF9hLmhhbmRsZXIsIGhhbmRsZXIgPSBfYyA9PT0gdm9pZCAwID8ge30gOiBfYywgcmVzdFByb3BzID0gX19yZXN0KF9hLCBbXCJtb2RhbFwiLCBcImhhbmRsZXJcIl0pO1xuICAgIHZhciBtaWQgPSB1c2VNZW1vKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGdldFVpZCgpOyB9LCBbXSk7XG4gICAgdmFyIE1vZGFsQ29tcCA9IHR5cGVvZiBtb2RhbCA9PT0gJ3N0cmluZycgPyAoX2IgPSBNT0RBTF9SRUdJU1RSWVttb2RhbF0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jb21wIDogbW9kYWw7XG4gICAgaWYgKCFoYW5kbGVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gaGFuZGxlciBmb3VuZCBpbiBOaWNlTW9kYWwuTW9kYWxIb2xkZXIuJyk7XG4gICAgfVxuICAgIGlmICghTW9kYWxDb21wKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIG1vZGFsIGZvdW5kIGZvciBpZDogXCIgKyBtb2RhbCArIFwiIGluIE5pY2VNb2RhbC5Nb2RhbEhvbGRlci5cIik7XG4gICAgfVxuICAgIGhhbmRsZXIuc2hvdyA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChhcmdzKSB7IHJldHVybiBzaG93KG1pZCwgYXJncyk7IH0sIFttaWRdKTtcbiAgICBoYW5kbGVyLmhpZGUgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7IHJldHVybiBoaWRlKG1pZCk7IH0sIFttaWRdKTtcbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChNb2RhbENvbXAsIF9fYXNzaWduKHsgaWQ6IG1pZCB9LCByZXN0UHJvcHMpKTtcbn07XG5leHBvcnQgdmFyIGFudGRNb2RhbCA9IGZ1bmN0aW9uIChtb2RhbCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHZpc2libGU6IG1vZGFsLnZpc2libGUsXG4gICAgICAgIG9uT2s6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1vZGFsLmhpZGUoKTsgfSxcbiAgICAgICAgb25DYW5jZWw6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1vZGFsLmhpZGUoKTsgfSxcbiAgICAgICAgYWZ0ZXJDbG9zZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy8gTmVlZCB0byByZXNvbHZlIGJlZm9yZSByZW1vdmVcbiAgICAgICAgICAgIG1vZGFsLnJlc29sdmVIaWRlKCk7XG4gICAgICAgICAgICBpZiAoIW1vZGFsLmtlZXBNb3VudGVkKVxuICAgICAgICAgICAgICAgIG1vZGFsLnJlbW92ZSgpO1xuICAgICAgICB9LFxuICAgIH07XG59O1xuZXhwb3J0IHZhciBhbnRkTW9kYWxWNSA9IGZ1bmN0aW9uIChtb2RhbCkge1xuICAgIHZhciBfYSA9IGFudGRNb2RhbChtb2RhbCksIG9uT2sgPSBfYS5vbk9rLCBvbkNhbmNlbCA9IF9hLm9uQ2FuY2VsLCBhZnRlckNsb3NlID0gX2EuYWZ0ZXJDbG9zZTtcbiAgICByZXR1cm4ge1xuICAgICAgICBvcGVuOiBtb2RhbC52aXNpYmxlLFxuICAgICAgICBvbk9rOiBvbk9rLFxuICAgICAgICBvbkNhbmNlbDogb25DYW5jZWwsXG4gICAgICAgIGFmdGVyQ2xvc2U6IGFmdGVyQ2xvc2UsXG4gICAgfTtcbn07XG5leHBvcnQgdmFyIGFudGREcmF3ZXIgPSBmdW5jdGlvbiAobW9kYWwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB2aXNpYmxlOiBtb2RhbC52aXNpYmxlLFxuICAgICAgICBvbkNsb3NlOiBmdW5jdGlvbiAoKSB7IHJldHVybiBtb2RhbC5oaWRlKCk7IH0sXG4gICAgICAgIGFmdGVyVmlzaWJsZUNoYW5nZTogZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgIGlmICghdikge1xuICAgICAgICAgICAgICAgIG1vZGFsLnJlc29sdmVIaWRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAhdiAmJiAhbW9kYWwua2VlcE1vdW50ZWQgJiYgbW9kYWwucmVtb3ZlKCk7XG4gICAgICAgIH0sXG4gICAgfTtcbn07XG5leHBvcnQgdmFyIGFudGREcmF3ZXJWNSA9IGZ1bmN0aW9uIChtb2RhbCkge1xuICAgIHZhciBfYSA9IGFudGREcmF3ZXIobW9kYWwpLCBvbkNsb3NlID0gX2Eub25DbG9zZSwgYWZ0ZXJPcGVuQ2hhbmdlID0gX2EuYWZ0ZXJWaXNpYmxlQ2hhbmdlO1xuICAgIHJldHVybiB7XG4gICAgICAgIG9wZW46IG1vZGFsLnZpc2libGUsXG4gICAgICAgIG9uQ2xvc2U6IG9uQ2xvc2UsXG4gICAgICAgIGFmdGVyT3BlbkNoYW5nZTogYWZ0ZXJPcGVuQ2hhbmdlLFxuICAgIH07XG59O1xuZXhwb3J0IHZhciBtdWlEaWFsb2cgPSBmdW5jdGlvbiAobW9kYWwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBvcGVuOiBtb2RhbC52aXNpYmxlLFxuICAgICAgICBvbkNsb3NlOiBmdW5jdGlvbiAoKSB7IHJldHVybiBtb2RhbC5oaWRlKCk7IH0sXG4gICAgICAgIG9uRXhpdGVkOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBtb2RhbC5yZXNvbHZlSGlkZSgpO1xuICAgICAgICAgICAgIW1vZGFsLmtlZXBNb3VudGVkICYmIG1vZGFsLnJlbW92ZSgpO1xuICAgICAgICB9LFxuICAgIH07XG59O1xuZXhwb3J0IHZhciBtdWlEaWFsb2dWNSA9IGZ1bmN0aW9uIChtb2RhbCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIG9wZW46IG1vZGFsLnZpc2libGUsXG4gICAgICAgIG9uQ2xvc2U6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1vZGFsLmhpZGUoKTsgfSxcbiAgICAgICAgVHJhbnNpdGlvblByb3BzOiB7XG4gICAgICAgICAgICBvbkV4aXRlZDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIG1vZGFsLnJlc29sdmVIaWRlKCk7XG4gICAgICAgICAgICAgICAgIW1vZGFsLmtlZXBNb3VudGVkICYmIG1vZGFsLnJlbW92ZSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9O1xufTtcbmV4cG9ydCB2YXIgYm9vdHN0cmFwRGlhbG9nID0gZnVuY3Rpb24gKG1vZGFsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc2hvdzogbW9kYWwudmlzaWJsZSxcbiAgICAgICAgb25IaWRlOiBmdW5jdGlvbiAoKSB7IHJldHVybiBtb2RhbC5oaWRlKCk7IH0sXG4gICAgICAgIG9uRXhpdGVkOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBtb2RhbC5yZXNvbHZlSGlkZSgpO1xuICAgICAgICAgICAgIW1vZGFsLmtlZXBNb3VudGVkICYmIG1vZGFsLnJlbW92ZSgpO1xuICAgICAgICB9LFxuICAgIH07XG59O1xudmFyIE5pY2VNb2RhbCA9IHtcbiAgICBQcm92aWRlcjogUHJvdmlkZXIsXG4gICAgTW9kYWxEZWY6IE1vZGFsRGVmLFxuICAgIE1vZGFsSG9sZGVyOiBNb2RhbEhvbGRlcixcbiAgICBOaWNlTW9kYWxDb250ZXh0OiBOaWNlTW9kYWxDb250ZXh0LFxuICAgIGNyZWF0ZTogY3JlYXRlLFxuICAgIHJlZ2lzdGVyOiByZWdpc3RlcixcbiAgICBnZXRNb2RhbDogZ2V0TW9kYWwsXG4gICAgc2hvdzogc2hvdyxcbiAgICBoaWRlOiBoaWRlLFxuICAgIHJlbW92ZTogcmVtb3ZlLFxuICAgIHVzZU1vZGFsOiB1c2VNb2RhbCxcbiAgICByZWR1Y2VyOiByZWR1Y2VyLFxuICAgIGFudGRNb2RhbDogYW50ZE1vZGFsLFxuICAgIGFudGREcmF3ZXI6IGFudGREcmF3ZXIsXG4gICAgbXVpRGlhbG9nOiBtdWlEaWFsb2csXG4gICAgYm9vdHN0cmFwRGlhbG9nOiBib290c3RyYXBEaWFsb2csXG59O1xuZXhwb3J0IGRlZmF1bHQgTmljZU1vZGFsO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiXG5leHBvcnQgY2xhc3MgU2hvcCB7XG4gICAgaWQ6IG51bWJlciA9IDBcbiAgICBuYW1lOiBzdHJpbmcgPSBcIlwiXG4gICAgdXVpZDogc3RyaW5nID0gXCJcIlxuICAgIGJhc2tldEZpZWxkMTogc3RyaW5nID0gXCJcIlxuICAgIGJhc2tldEZpZWxkMjogc3RyaW5nID0gXCJcIlxuICAgIGJhc2tldFBvc0ZpZWxkMTogc3RyaW5nID0gXCJcIlxuICAgIGJhc2tldFBvc0ZpZWxkMjogc3RyaW5nID0gXCJcIlxuXG4gICAgcGFyc2VGcm9tSnNvbihpdGVtOiBhbnkpIHtcbiAgICAgICAgdGhpcy5pZCA9IGl0ZW0uc2hvcC5pZFxuICAgICAgICB0aGlzLm5hbWUgPSBpdGVtLnNob3AubmFtZVxuICAgICAgICB0aGlzLnV1aWQgPSBpdGVtLnNob3AudXVpZFxuICAgICAgICB0aGlzLmJhc2tldEZpZWxkMSA9IGl0ZW0uc2hvcC5iYXNrZXRGaWVsZDFcbiAgICAgICAgdGhpcy5iYXNrZXRGaWVsZDIgPSBpdGVtLnNob3AuYmFza2V0RmllbGQyXG4gICAgICAgIHRoaXMuYmFza2V0UG9zRmllbGQxID0gaXRlbS5zaG9wLmJhc2tldFBvc0ZpZWxkMVxuICAgICAgICB0aGlzLmJhc2tldFBvc0ZpZWxkMiA9IGl0ZW0uc2hvcC5iYXNrZXRQb3NGaWVsZDJcbiAgICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9XG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0KCkge31cbmVtcHR5RnVuY3Rpb25XaXRoUmVzZXQucmVzZXRXYXJuaW5nQ2FjaGUgPSBlbXB0eUZ1bmN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgdGhyb3cgZXJyO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYmlnaW50OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGVsZW1lbnRUeXBlOiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW0sXG5cbiAgICBjaGVja1Byb3BUeXBlczogZW1wdHlGdW5jdGlvbldpdGhSZXNldCxcbiAgICByZXNldFdhcm5pbmdDYWNoZTogZW1wdHlGdW5jdGlvblxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCJmdW5jdGlvbiBfdHlwZW9mKG8pIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gdHlwZW9mIG87XG4gIH0gOiBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvO1xuICB9LCBfdHlwZW9mKG8pO1xufVxuZXhwb3J0IHsgX3R5cGVvZiBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIi4vdHlwZW9mLmpzXCI7XG5mdW5jdGlvbiB0b1ByaW1pdGl2ZSh0LCByKSB7XG4gIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0O1xuICB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkge1xuICAgIHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpO1xuICAgIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTtcbiAgfVxuICByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xufVxuZXhwb3J0IHsgdG9QcmltaXRpdmUgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuaW1wb3J0IHRvUHJpbWl0aXZlIGZyb20gXCIuL3RvUHJpbWl0aXZlLmpzXCI7XG5mdW5jdGlvbiB0b1Byb3BlcnR5S2V5KHQpIHtcbiAgdmFyIGkgPSB0b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTtcbiAgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjtcbn1cbmV4cG9ydCB7IHRvUHJvcGVydHlLZXkgYXMgZGVmYXVsdCB9OyIsImltcG9ydCB0b1Byb3BlcnR5S2V5IGZyb20gXCIuL3RvUHJvcGVydHlLZXkuanNcIjtcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0KSB7XG4gIHJldHVybiAociA9IHRvUHJvcGVydHlLZXkocikpIGluIGUgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwge1xuICAgIHZhbHVlOiB0LFxuICAgIGVudW1lcmFibGU6ICEwLFxuICAgIGNvbmZpZ3VyYWJsZTogITAsXG4gICAgd3JpdGFibGU6ICEwXG4gIH0pIDogZVtyXSA9IHQsIGU7XG59XG5leHBvcnQgeyBfZGVmaW5lUHJvcGVydHkgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBkZWZpbmVQcm9wZXJ0eSBmcm9tIFwiLi9kZWZpbmVQcm9wZXJ0eS5qc1wiO1xuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7XG4gIHZhciB0ID0gT2JqZWN0LmtleXMoZSk7XG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO1xuICAgIHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikge1xuICAgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTtcbiAgICB9KSksIHQucHVzaC5hcHBseSh0LCBvKTtcbiAgfVxuICByZXR1cm4gdDtcbn1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQyKGUpIHtcbiAgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHtcbiAgICB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307XG4gICAgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHtcbiAgICAgIGRlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pO1xuICAgIH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBlO1xufVxuZXhwb3J0IHsgX29iamVjdFNwcmVhZDIgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gcjtcbn1cbmV4cG9ydCB7IF9hcnJheVdpdGhIb2xlcyBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHtcbiAgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTtcbiAgaWYgKG51bGwgIT0gdCkge1xuICAgIHZhciBlLFxuICAgICAgbixcbiAgICAgIGksXG4gICAgICB1LFxuICAgICAgYSA9IFtdLFxuICAgICAgZiA9ICEwLFxuICAgICAgbyA9ICExO1xuICAgIHRyeSB7XG4gICAgICBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7XG4gICAgICAgIGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjtcbiAgICAgICAgZiA9ICExO1xuICAgICAgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApO1xuICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgIG8gPSAhMCwgbiA9IHI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChvKSB0aHJvdyBuO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYTtcbiAgfVxufVxuZXhwb3J0IHsgX2l0ZXJhYmxlVG9BcnJheUxpbWl0IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShyLCBhKSB7XG4gIChudWxsID09IGEgfHwgYSA+IHIubGVuZ3RoKSAmJiAoYSA9IHIubGVuZ3RoKTtcbiAgZm9yICh2YXIgZSA9IDAsIG4gPSBBcnJheShhKTsgZSA8IGE7IGUrKykgbltlXSA9IHJbZV07XG4gIHJldHVybiBuO1xufVxuZXhwb3J0IHsgX2FycmF5TGlrZVRvQXJyYXkgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBhcnJheUxpa2VUb0FycmF5IGZyb20gXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIjtcbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBhKSB7XG4gIGlmIChyKSB7XG4gICAgaWYgKFwic3RyaW5nXCIgPT0gdHlwZW9mIHIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIsIGEpO1xuICAgIHZhciB0ID0ge30udG9TdHJpbmcuY2FsbChyKS5zbGljZSg4LCAtMSk7XG4gICAgcmV0dXJuIFwiT2JqZWN0XCIgPT09IHQgJiYgci5jb25zdHJ1Y3RvciAmJiAodCA9IHIuY29uc3RydWN0b3IubmFtZSksIFwiTWFwXCIgPT09IHQgfHwgXCJTZXRcIiA9PT0gdCA/IEFycmF5LmZyb20ocikgOiBcIkFyZ3VtZW50c1wiID09PSB0IHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpID8gYXJyYXlMaWtlVG9BcnJheShyLCBhKSA6IHZvaWQgMDtcbiAgfVxufVxuZXhwb3J0IHsgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxuZXhwb3J0IHsgX25vbkl0ZXJhYmxlUmVzdCBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IGFycmF5V2l0aEhvbGVzIGZyb20gXCIuL2FycmF5V2l0aEhvbGVzLmpzXCI7XG5pbXBvcnQgaXRlcmFibGVUb0FycmF5TGltaXQgZnJvbSBcIi4vaXRlcmFibGVUb0FycmF5TGltaXQuanNcIjtcbmltcG9ydCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSBmcm9tIFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiO1xuaW1wb3J0IG5vbkl0ZXJhYmxlUmVzdCBmcm9tIFwiLi9ub25JdGVyYWJsZVJlc3QuanNcIjtcbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KHIsIGUpIHtcbiAgcmV0dXJuIGFycmF5V2l0aEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGUpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGUpIHx8IG5vbkl0ZXJhYmxlUmVzdCgpO1xufVxuZXhwb3J0IHsgX3NsaWNlZFRvQXJyYXkgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHIsIGUpIHtcbiAgaWYgKG51bGwgPT0gcikgcmV0dXJuIHt9O1xuICB2YXIgdCA9IHt9O1xuICBmb3IgKHZhciBuIGluIHIpIGlmICh7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsIG4pKSB7XG4gICAgaWYgKGUuaW5jbHVkZXMobikpIGNvbnRpbnVlO1xuICAgIHRbbl0gPSByW25dO1xuICB9XG4gIHJldHVybiB0O1xufVxuZXhwb3J0IHsgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCIuL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanNcIjtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhlLCB0KSB7XG4gIGlmIChudWxsID09IGUpIHJldHVybiB7fTtcbiAgdmFyIG8sXG4gICAgcixcbiAgICBpID0gb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShlLCB0KTtcbiAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICB2YXIgcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7XG4gICAgZm9yIChyID0gMDsgciA8IHMubGVuZ3RoOyByKyspIG8gPSBzW3JdLCB0LmluY2x1ZGVzKG8pIHx8IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSwgbykgJiYgKGlbb10gPSBlW29dKTtcbiAgfVxuICByZXR1cm4gaTtcbn1cbmV4cG9ydCB7IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMic7XG5pbXBvcnQgX3NsaWNlZFRvQXJyYXkgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheSc7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzJztcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcblxudmFyIF9leGNsdWRlZCA9IFtcImRlZmF1bHRJbnB1dFZhbHVlXCIsIFwiZGVmYXVsdE1lbnVJc09wZW5cIiwgXCJkZWZhdWx0VmFsdWVcIiwgXCJpbnB1dFZhbHVlXCIsIFwibWVudUlzT3BlblwiLCBcIm9uQ2hhbmdlXCIsIFwib25JbnB1dENoYW5nZVwiLCBcIm9uTWVudUNsb3NlXCIsIFwib25NZW51T3BlblwiLCBcInZhbHVlXCJdO1xuZnVuY3Rpb24gdXNlU3RhdGVNYW5hZ2VyKF9yZWYpIHtcbiAgdmFyIF9yZWYkZGVmYXVsdElucHV0VmFsdSA9IF9yZWYuZGVmYXVsdElucHV0VmFsdWUsXG4gICAgZGVmYXVsdElucHV0VmFsdWUgPSBfcmVmJGRlZmF1bHRJbnB1dFZhbHUgPT09IHZvaWQgMCA/ICcnIDogX3JlZiRkZWZhdWx0SW5wdXRWYWx1LFxuICAgIF9yZWYkZGVmYXVsdE1lbnVJc09wZSA9IF9yZWYuZGVmYXVsdE1lbnVJc09wZW4sXG4gICAgZGVmYXVsdE1lbnVJc09wZW4gPSBfcmVmJGRlZmF1bHRNZW51SXNPcGUgPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZiRkZWZhdWx0TWVudUlzT3BlLFxuICAgIF9yZWYkZGVmYXVsdFZhbHVlID0gX3JlZi5kZWZhdWx0VmFsdWUsXG4gICAgZGVmYXVsdFZhbHVlID0gX3JlZiRkZWZhdWx0VmFsdWUgPT09IHZvaWQgMCA/IG51bGwgOiBfcmVmJGRlZmF1bHRWYWx1ZSxcbiAgICBwcm9wc0lucHV0VmFsdWUgPSBfcmVmLmlucHV0VmFsdWUsXG4gICAgcHJvcHNNZW51SXNPcGVuID0gX3JlZi5tZW51SXNPcGVuLFxuICAgIHByb3BzT25DaGFuZ2UgPSBfcmVmLm9uQ2hhbmdlLFxuICAgIHByb3BzT25JbnB1dENoYW5nZSA9IF9yZWYub25JbnB1dENoYW5nZSxcbiAgICBwcm9wc09uTWVudUNsb3NlID0gX3JlZi5vbk1lbnVDbG9zZSxcbiAgICBwcm9wc09uTWVudU9wZW4gPSBfcmVmLm9uTWVudU9wZW4sXG4gICAgcHJvcHNWYWx1ZSA9IF9yZWYudmFsdWUsXG4gICAgcmVzdFNlbGVjdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIF9leGNsdWRlZCk7XG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZShwcm9wc0lucHV0VmFsdWUgIT09IHVuZGVmaW5lZCA/IHByb3BzSW5wdXRWYWx1ZSA6IGRlZmF1bHRJbnB1dFZhbHVlKSxcbiAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICBzdGF0ZUlucHV0VmFsdWUgPSBfdXNlU3RhdGUyWzBdLFxuICAgIHNldFN0YXRlSW5wdXRWYWx1ZSA9IF91c2VTdGF0ZTJbMV07XG4gIHZhciBfdXNlU3RhdGUzID0gdXNlU3RhdGUocHJvcHNNZW51SXNPcGVuICE9PSB1bmRlZmluZWQgPyBwcm9wc01lbnVJc09wZW4gOiBkZWZhdWx0TWVudUlzT3BlbiksXG4gICAgX3VzZVN0YXRlNCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTMsIDIpLFxuICAgIHN0YXRlTWVudUlzT3BlbiA9IF91c2VTdGF0ZTRbMF0sXG4gICAgc2V0U3RhdGVNZW51SXNPcGVuID0gX3VzZVN0YXRlNFsxXTtcbiAgdmFyIF91c2VTdGF0ZTUgPSB1c2VTdGF0ZShwcm9wc1ZhbHVlICE9PSB1bmRlZmluZWQgPyBwcm9wc1ZhbHVlIDogZGVmYXVsdFZhbHVlKSxcbiAgICBfdXNlU3RhdGU2ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlNSwgMiksXG4gICAgc3RhdGVWYWx1ZSA9IF91c2VTdGF0ZTZbMF0sXG4gICAgc2V0U3RhdGVWYWx1ZSA9IF91c2VTdGF0ZTZbMV07XG4gIHZhciBvbkNoYW5nZSA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uICh2YWx1ZSwgYWN0aW9uTWV0YSkge1xuICAgIGlmICh0eXBlb2YgcHJvcHNPbkNoYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvcHNPbkNoYW5nZSh2YWx1ZSwgYWN0aW9uTWV0YSk7XG4gICAgfVxuICAgIHNldFN0YXRlVmFsdWUodmFsdWUpO1xuICB9LCBbcHJvcHNPbkNoYW5nZV0pO1xuICB2YXIgb25JbnB1dENoYW5nZSA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uICh2YWx1ZSwgYWN0aW9uTWV0YSkge1xuICAgIHZhciBuZXdWYWx1ZTtcbiAgICBpZiAodHlwZW9mIHByb3BzT25JbnB1dENoYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbmV3VmFsdWUgPSBwcm9wc09uSW5wdXRDaGFuZ2UodmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgIH1cbiAgICBzZXRTdGF0ZUlucHV0VmFsdWUobmV3VmFsdWUgIT09IHVuZGVmaW5lZCA/IG5ld1ZhbHVlIDogdmFsdWUpO1xuICB9LCBbcHJvcHNPbklucHV0Q2hhbmdlXSk7XG4gIHZhciBvbk1lbnVPcGVuID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgcHJvcHNPbk1lbnVPcGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9wc09uTWVudU9wZW4oKTtcbiAgICB9XG4gICAgc2V0U3RhdGVNZW51SXNPcGVuKHRydWUpO1xuICB9LCBbcHJvcHNPbk1lbnVPcGVuXSk7XG4gIHZhciBvbk1lbnVDbG9zZSA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIHByb3BzT25NZW51Q2xvc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHByb3BzT25NZW51Q2xvc2UoKTtcbiAgICB9XG4gICAgc2V0U3RhdGVNZW51SXNPcGVuKGZhbHNlKTtcbiAgfSwgW3Byb3BzT25NZW51Q2xvc2VdKTtcbiAgdmFyIGlucHV0VmFsdWUgPSBwcm9wc0lucHV0VmFsdWUgIT09IHVuZGVmaW5lZCA/IHByb3BzSW5wdXRWYWx1ZSA6IHN0YXRlSW5wdXRWYWx1ZTtcbiAgdmFyIG1lbnVJc09wZW4gPSBwcm9wc01lbnVJc09wZW4gIT09IHVuZGVmaW5lZCA/IHByb3BzTWVudUlzT3BlbiA6IHN0YXRlTWVudUlzT3BlbjtcbiAgdmFyIHZhbHVlID0gcHJvcHNWYWx1ZSAhPT0gdW5kZWZpbmVkID8gcHJvcHNWYWx1ZSA6IHN0YXRlVmFsdWU7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RTZWxlY3RQcm9wcyksIHt9LCB7XG4gICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZSxcbiAgICBtZW51SXNPcGVuOiBtZW51SXNPcGVuLFxuICAgIG9uQ2hhbmdlOiBvbkNoYW5nZSxcbiAgICBvbklucHV0Q2hhbmdlOiBvbklucHV0Q2hhbmdlLFxuICAgIG9uTWVudUNsb3NlOiBvbk1lbnVDbG9zZSxcbiAgICBvbk1lbnVPcGVuOiBvbk1lbnVPcGVuLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9KTtcbn1cblxuZXhwb3J0IHsgdXNlU3RhdGVNYW5hZ2VyIGFzIHUgfTtcbiIsImZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICByZXR1cm4gX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAobikge1xuICAgIGZvciAodmFyIGUgPSAxOyBlIDwgYXJndW1lbnRzLmxlbmd0aDsgZSsrKSB7XG4gICAgICB2YXIgdCA9IGFyZ3VtZW50c1tlXTtcbiAgICAgIGZvciAodmFyIHIgaW4gdCkgKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsIHIpICYmIChuW3JdID0gdFtyXSk7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9LCBfZXh0ZW5kcy5hcHBseShudWxsLCBhcmd1bWVudHMpO1xufVxuZXhwb3J0IHsgX2V4dGVuZHMgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhhLCBuKSB7XG4gIGlmICghKGEgaW5zdGFuY2VvZiBuKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbn1cbmV4cG9ydCB7IF9jbGFzc0NhbGxDaGVjayBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IHRvUHJvcGVydHlLZXkgZnJvbSBcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXMoZSwgcikge1xuICBmb3IgKHZhciB0ID0gMDsgdCA8IHIubGVuZ3RoOyB0KyspIHtcbiAgICB2YXIgbyA9IHJbdF07XG4gICAgby5lbnVtZXJhYmxlID0gby5lbnVtZXJhYmxlIHx8ICExLCBvLmNvbmZpZ3VyYWJsZSA9ICEwLCBcInZhbHVlXCIgaW4gbyAmJiAoby53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHRvUHJvcGVydHlLZXkoby5rZXkpLCBvKTtcbiAgfVxufVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKGUsIHIsIHQpIHtcbiAgcmV0dXJuIHIgJiYgX2RlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsIHIpLCB0ICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHQpLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZTtcbn1cbmV4cG9ydCB7IF9jcmVhdGVDbGFzcyBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKHQsIGUpIHtcbiAgcmV0dXJuIF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCwgZSkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyA9IGUsIHQ7XG4gIH0sIF9zZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbmV4cG9ydCB7IF9zZXRQcm90b3R5cGVPZiBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IHNldFByb3RvdHlwZU9mIGZyb20gXCIuL3NldFByb3RvdHlwZU9mLmpzXCI7XG5mdW5jdGlvbiBfaW5oZXJpdHModCwgZSkge1xuICBpZiAoXCJmdW5jdGlvblwiICE9IHR5cGVvZiBlICYmIG51bGwgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGUgJiYgZS5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHQsXG4gICAgICB3cml0YWJsZTogITAsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfVxuICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogITFcbiAgfSksIGUgJiYgc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5leHBvcnQgeyBfaW5oZXJpdHMgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZih0KSB7XG4gIHJldHVybiBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO1xuICB9LCBfZ2V0UHJvdG90eXBlT2YodCk7XG59XG5leHBvcnQgeyBfZ2V0UHJvdG90eXBlT2YgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7XG4gIHRyeSB7XG4gICAgdmFyIHQgPSAhQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpO1xuICB9IGNhdGNoICh0KSB7fVxuICByZXR1cm4gKF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICAgIHJldHVybiAhIXQ7XG4gIH0pKCk7XG59XG5leHBvcnQgeyBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKGUpIHtcbiAgaWYgKHZvaWQgMCA9PT0gZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICByZXR1cm4gZTtcbn1cbmV4cG9ydCB7IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuaW1wb3J0IGFzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiLi9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanNcIjtcbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIGUpIHtcbiAgaWYgKGUgJiYgKFwib2JqZWN0XCIgPT0gX3R5cGVvZihlKSB8fCBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGUpKSByZXR1cm4gZTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICByZXR1cm4gYXNzZXJ0VGhpc0luaXRpYWxpemVkKHQpO1xufVxuZXhwb3J0IHsgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gYXMgZGVmYXVsdCB9OyIsImltcG9ydCBnZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9nZXRQcm90b3R5cGVPZi5qc1wiO1xuaW1wb3J0IGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCBmcm9tIFwiLi9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanNcIjtcbmltcG9ydCBwb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCIuL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanNcIjtcbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcih0KSB7XG4gIHZhciByID0gaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGUsXG4gICAgICBvID0gZ2V0UHJvdG90eXBlT2YodCk7XG4gICAgaWYgKHIpIHtcbiAgICAgIHZhciBzID0gZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7XG4gICAgICBlID0gUmVmbGVjdC5jb25zdHJ1Y3QobywgYXJndW1lbnRzLCBzKTtcbiAgICB9IGVsc2UgZSA9IG8uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICByZXR1cm4gcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBlKTtcbiAgfTtcbn1cbmV4cG9ydCB7IF9jcmVhdGVTdXBlciBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IGFycmF5TGlrZVRvQXJyYXkgZnJvbSBcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiO1xuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIpO1xufVxuZXhwb3J0IHsgX2FycmF5V2l0aG91dEhvbGVzIGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KHIpIHtcbiAgaWYgKFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiBudWxsICE9IHJbU3ltYm9sLml0ZXJhdG9yXSB8fCBudWxsICE9IHJbXCJAQGl0ZXJhdG9yXCJdKSByZXR1cm4gQXJyYXkuZnJvbShyKTtcbn1cbmV4cG9ydCB7IF9pdGVyYWJsZVRvQXJyYXkgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5leHBvcnQgeyBfbm9uSXRlcmFibGVTcHJlYWQgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBhcnJheVdpdGhvdXRIb2xlcyBmcm9tIFwiLi9hcnJheVdpdGhvdXRIb2xlcy5qc1wiO1xuaW1wb3J0IGl0ZXJhYmxlVG9BcnJheSBmcm9tIFwiLi9pdGVyYWJsZVRvQXJyYXkuanNcIjtcbmltcG9ydCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSBmcm9tIFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiO1xuaW1wb3J0IG5vbkl0ZXJhYmxlU3ByZWFkIGZyb20gXCIuL25vbkl0ZXJhYmxlU3ByZWFkLmpzXCI7XG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkocikge1xuICByZXR1cm4gYXJyYXlXaXRob3V0SG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5KHIpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIpIHx8IG5vbkl0ZXJhYmxlU3ByZWFkKCk7XG59XG5leHBvcnQgeyBfdG9Db25zdW1hYmxlQXJyYXkgYXMgZGVmYXVsdCB9OyIsInZhciBpc0RldmVsb3BtZW50ID0gZmFsc2U7XG5cbi8qXG5cbkJhc2VkIG9mZiBnbGFtb3IncyBTdHlsZVNoZWV0LCB0aGFua3MgU3VuaWwg4p2k77iPXG5cbmhpZ2ggcGVyZm9ybWFuY2UgU3R5bGVTaGVldCBmb3IgY3NzLWluLWpzIHN5c3RlbXNcblxuLSB1c2VzIG11bHRpcGxlIHN0eWxlIHRhZ3MgYmVoaW5kIHRoZSBzY2VuZXMgZm9yIG1pbGxpb25zIG9mIHJ1bGVzXG4tIHVzZXMgYGluc2VydFJ1bGVgIGZvciBhcHBlbmRpbmcgaW4gcHJvZHVjdGlvbiBmb3IgKm11Y2gqIGZhc3RlciBwZXJmb3JtYW5jZVxuXG4vLyB1c2FnZVxuXG5pbXBvcnQgeyBTdHlsZVNoZWV0IH0gZnJvbSAnQGVtb3Rpb24vc2hlZXQnXG5cbmxldCBzdHlsZVNoZWV0ID0gbmV3IFN0eWxlU2hlZXQoeyBrZXk6ICcnLCBjb250YWluZXI6IGRvY3VtZW50LmhlYWQgfSlcblxuc3R5bGVTaGVldC5pbnNlcnQoJyNib3ggeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0nKVxuLSBhcHBlbmRzIGEgY3NzIHJ1bGUgaW50byB0aGUgc3R5bGVzaGVldFxuXG5zdHlsZVNoZWV0LmZsdXNoKClcbi0gZW1wdGllcyB0aGUgc3R5bGVzaGVldCBvZiBhbGwgaXRzIGNvbnRlbnRzXG5cbiovXG5cbmZ1bmN0aW9uIHNoZWV0Rm9yVGFnKHRhZykge1xuICBpZiAodGFnLnNoZWV0KSB7XG4gICAgcmV0dXJuIHRhZy5zaGVldDtcbiAgfSAvLyB0aGlzIHdlaXJkbmVzcyBicm91Z2h0IHRvIHlvdSBieSBmaXJlZm94XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZG9jdW1lbnQuc3R5bGVTaGVldHMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZG9jdW1lbnQuc3R5bGVTaGVldHNbaV0ub3duZXJOb2RlID09PSB0YWcpIHtcbiAgICAgIHJldHVybiBkb2N1bWVudC5zdHlsZVNoZWV0c1tpXTtcbiAgICB9XG4gIH0gLy8gdGhpcyBmdW5jdGlvbiBzaG91bGQgYWx3YXlzIHJldHVybiB3aXRoIGEgdmFsdWVcbiAgLy8gVFMgY2FuJ3QgdW5kZXJzdGFuZCBpdCB0aG91Z2ggc28gd2UgbWFrZSBpdCBzdG9wIGNvbXBsYWluaW5nIGhlcmVcblxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciB0YWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICB0YWcuc2V0QXR0cmlidXRlKCdkYXRhLWVtb3Rpb24nLCBvcHRpb25zLmtleSk7XG5cbiAgaWYgKG9wdGlvbnMubm9uY2UgIT09IHVuZGVmaW5lZCkge1xuICAgIHRhZy5zZXRBdHRyaWJ1dGUoJ25vbmNlJywgb3B0aW9ucy5ub25jZSk7XG4gIH1cblxuICB0YWcuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpKTtcbiAgdGFnLnNldEF0dHJpYnV0ZSgnZGF0YS1zJywgJycpO1xuICByZXR1cm4gdGFnO1xufVxuXG52YXIgU3R5bGVTaGVldCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIC8vIFVzaW5nIE5vZGUgaW5zdGVhZCBvZiBIVE1MRWxlbWVudCBzaW5jZSBjb250YWluZXIgbWF5IGJlIGEgU2hhZG93Um9vdFxuICBmdW5jdGlvbiBTdHlsZVNoZWV0KG9wdGlvbnMpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdGhpcy5faW5zZXJ0VGFnID0gZnVuY3Rpb24gKHRhZykge1xuICAgICAgdmFyIGJlZm9yZTtcblxuICAgICAgaWYgKF90aGlzLnRhZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGlmIChfdGhpcy5pbnNlcnRpb25Qb2ludCkge1xuICAgICAgICAgIGJlZm9yZSA9IF90aGlzLmluc2VydGlvblBvaW50Lm5leHRTaWJsaW5nO1xuICAgICAgICB9IGVsc2UgaWYgKF90aGlzLnByZXBlbmQpIHtcbiAgICAgICAgICBiZWZvcmUgPSBfdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiZWZvcmUgPSBfdGhpcy5iZWZvcmU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJlZm9yZSA9IF90aGlzLnRhZ3NbX3RoaXMudGFncy5sZW5ndGggLSAxXS5uZXh0U2libGluZztcbiAgICAgIH1cblxuICAgICAgX3RoaXMuY29udGFpbmVyLmluc2VydEJlZm9yZSh0YWcsIGJlZm9yZSk7XG5cbiAgICAgIF90aGlzLnRhZ3MucHVzaCh0YWcpO1xuICAgIH07XG5cbiAgICB0aGlzLmlzU3BlZWR5ID0gb3B0aW9ucy5zcGVlZHkgPT09IHVuZGVmaW5lZCA/ICFpc0RldmVsb3BtZW50IDogb3B0aW9ucy5zcGVlZHk7XG4gICAgdGhpcy50YWdzID0gW107XG4gICAgdGhpcy5jdHIgPSAwO1xuICAgIHRoaXMubm9uY2UgPSBvcHRpb25zLm5vbmNlOyAvLyBrZXkgaXMgdGhlIHZhbHVlIG9mIHRoZSBkYXRhLWVtb3Rpb24gYXR0cmlidXRlLCBpdCdzIHVzZWQgdG8gaWRlbnRpZnkgZGlmZmVyZW50IHNoZWV0c1xuXG4gICAgdGhpcy5rZXkgPSBvcHRpb25zLmtleTtcbiAgICB0aGlzLmNvbnRhaW5lciA9IG9wdGlvbnMuY29udGFpbmVyO1xuICAgIHRoaXMucHJlcGVuZCA9IG9wdGlvbnMucHJlcGVuZDtcbiAgICB0aGlzLmluc2VydGlvblBvaW50ID0gb3B0aW9ucy5pbnNlcnRpb25Qb2ludDtcbiAgICB0aGlzLmJlZm9yZSA9IG51bGw7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gU3R5bGVTaGVldC5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmh5ZHJhdGUgPSBmdW5jdGlvbiBoeWRyYXRlKG5vZGVzKSB7XG4gICAgbm9kZXMuZm9yRWFjaCh0aGlzLl9pbnNlcnRUYWcpO1xuICB9O1xuXG4gIF9wcm90by5pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnQocnVsZSkge1xuICAgIC8vIHRoZSBtYXggbGVuZ3RoIGlzIGhvdyBtYW55IHJ1bGVzIHdlIGhhdmUgcGVyIHN0eWxlIHRhZywgaXQncyA2NTAwMCBpbiBzcGVlZHkgbW9kZVxuICAgIC8vIGl0J3MgMSBpbiBkZXYgYmVjYXVzZSB3ZSBpbnNlcnQgc291cmNlIG1hcHMgdGhhdCBtYXAgYSBzaW5nbGUgcnVsZSB0byBhIGxvY2F0aW9uXG4gICAgLy8gYW5kIHlvdSBjYW4gb25seSBoYXZlIG9uZSBzb3VyY2UgbWFwIHBlciBzdHlsZSB0YWdcbiAgICBpZiAodGhpcy5jdHIgJSAodGhpcy5pc1NwZWVkeSA/IDY1MDAwIDogMSkgPT09IDApIHtcbiAgICAgIHRoaXMuX2luc2VydFRhZyhjcmVhdGVTdHlsZUVsZW1lbnQodGhpcykpO1xuICAgIH1cblxuICAgIHZhciB0YWcgPSB0aGlzLnRhZ3NbdGhpcy50YWdzLmxlbmd0aCAtIDFdO1xuXG4gICAgaWYgKHRoaXMuaXNTcGVlZHkpIHtcbiAgICAgIHZhciBzaGVldCA9IHNoZWV0Rm9yVGFnKHRhZyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIHRoaXMgaXMgdGhlIHVsdHJhZmFzdCB2ZXJzaW9uLCB3b3JrcyBhY3Jvc3MgYnJvd3NlcnNcbiAgICAgICAgLy8gdGhlIGJpZyBkcmF3YmFjayBpcyB0aGF0IHRoZSBjc3Mgd29uJ3QgYmUgZWRpdGFibGUgaW4gZGV2dG9vbHNcbiAgICAgICAgc2hlZXQuaW5zZXJ0UnVsZShydWxlLCBzaGVldC5jc3NSdWxlcy5sZW5ndGgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0YWcuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocnVsZSkpO1xuICAgIH1cblxuICAgIHRoaXMuY3RyKys7XG4gIH07XG5cbiAgX3Byb3RvLmZsdXNoID0gZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgdGhpcy50YWdzLmZvckVhY2goZnVuY3Rpb24gKHRhZykge1xuICAgICAgdmFyIF90YWckcGFyZW50Tm9kZTtcblxuICAgICAgcmV0dXJuIChfdGFnJHBhcmVudE5vZGUgPSB0YWcucGFyZW50Tm9kZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90YWckcGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0YWcpO1xuICAgIH0pO1xuICAgIHRoaXMudGFncyA9IFtdO1xuICAgIHRoaXMuY3RyID0gMDtcbiAgfTtcblxuICByZXR1cm4gU3R5bGVTaGVldDtcbn0oKTtcblxuZXhwb3J0IHsgU3R5bGVTaGVldCB9O1xuIiwiZXhwb3J0IHZhciBNUyA9ICctbXMtJ1xuZXhwb3J0IHZhciBNT1ogPSAnLW1vei0nXG5leHBvcnQgdmFyIFdFQktJVCA9ICctd2Via2l0LSdcblxuZXhwb3J0IHZhciBDT01NRU5UID0gJ2NvbW0nXG5leHBvcnQgdmFyIFJVTEVTRVQgPSAncnVsZSdcbmV4cG9ydCB2YXIgREVDTEFSQVRJT04gPSAnZGVjbCdcblxuZXhwb3J0IHZhciBQQUdFID0gJ0BwYWdlJ1xuZXhwb3J0IHZhciBNRURJQSA9ICdAbWVkaWEnXG5leHBvcnQgdmFyIElNUE9SVCA9ICdAaW1wb3J0J1xuZXhwb3J0IHZhciBDSEFSU0VUID0gJ0BjaGFyc2V0J1xuZXhwb3J0IHZhciBWSUVXUE9SVCA9ICdAdmlld3BvcnQnXG5leHBvcnQgdmFyIFNVUFBPUlRTID0gJ0BzdXBwb3J0cydcbmV4cG9ydCB2YXIgRE9DVU1FTlQgPSAnQGRvY3VtZW50J1xuZXhwb3J0IHZhciBOQU1FU1BBQ0UgPSAnQG5hbWVzcGFjZSdcbmV4cG9ydCB2YXIgS0VZRlJBTUVTID0gJ0BrZXlmcmFtZXMnXG5leHBvcnQgdmFyIEZPTlRfRkFDRSA9ICdAZm9udC1mYWNlJ1xuZXhwb3J0IHZhciBDT1VOVEVSX1NUWUxFID0gJ0Bjb3VudGVyLXN0eWxlJ1xuZXhwb3J0IHZhciBGT05UX0ZFQVRVUkVfVkFMVUVTID0gJ0Bmb250LWZlYXR1cmUtdmFsdWVzJ1xuZXhwb3J0IHZhciBMQVlFUiA9ICdAbGF5ZXInXG4iLCIvKipcbiAqIEBwYXJhbSB7bnVtYmVyfVxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgdmFyIGFicyA9IE1hdGguYWJzXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCB2YXIgZnJvbSA9IFN0cmluZy5mcm9tQ2hhckNvZGVcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH1cbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IHZhciBhc3NpZ24gPSBPYmplY3QuYXNzaWduXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNoICh2YWx1ZSwgbGVuZ3RoKSB7XG5cdHJldHVybiBjaGFyYXQodmFsdWUsIDApIF4gNDUgPyAoKCgoKCgobGVuZ3RoIDw8IDIpIF4gY2hhcmF0KHZhbHVlLCAwKSkgPDwgMikgXiBjaGFyYXQodmFsdWUsIDEpKSA8PCAyKSBeIGNoYXJhdCh2YWx1ZSwgMikpIDw8IDIpIF4gY2hhcmF0KHZhbHVlLCAzKSA6IDBcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyaW0gKHZhbHVlKSB7XG5cdHJldHVybiB2YWx1ZS50cmltKClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7UmVnRXhwfSBwYXR0ZXJuXG4gKiBAcmV0dXJuIHtzdHJpbmc/fVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2ggKHZhbHVlLCBwYXR0ZXJuKSB7XG5cdHJldHVybiAodmFsdWUgPSBwYXR0ZXJuLmV4ZWModmFsdWUpKSA/IHZhbHVlWzBdIDogdmFsdWVcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7KHN0cmluZ3xSZWdFeHApfSBwYXR0ZXJuXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVwbGFjZW1lbnRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2UgKHZhbHVlLCBwYXR0ZXJuLCByZXBsYWNlbWVudCkge1xuXHRyZXR1cm4gdmFsdWUucmVwbGFjZShwYXR0ZXJuLCByZXBsYWNlbWVudClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZWFyY2hcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluZGV4b2YgKHZhbHVlLCBzZWFyY2gpIHtcblx0cmV0dXJuIHZhbHVlLmluZGV4T2Yoc2VhcmNoKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGFyYXQgKHZhbHVlLCBpbmRleCkge1xuXHRyZXR1cm4gdmFsdWUuY2hhckNvZGVBdChpbmRleCkgfCAwXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gYmVnaW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0ciAodmFsdWUsIGJlZ2luLCBlbmQpIHtcblx0cmV0dXJuIHZhbHVlLnNsaWNlKGJlZ2luLCBlbmQpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJsZW4gKHZhbHVlKSB7XG5cdHJldHVybiB2YWx1ZS5sZW5ndGhcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueVtdfSB2YWx1ZVxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2l6ZW9mICh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUubGVuZ3RoXG59XG5cbi8qKlxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcGFyYW0ge2FueVtdfSBhcnJheVxuICogQHJldHVybiB7YW55fVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kICh2YWx1ZSwgYXJyYXkpIHtcblx0cmV0dXJuIGFycmF5LnB1c2godmFsdWUpLCB2YWx1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nW119IGFycmF5XG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZSAoYXJyYXksIGNhbGxiYWNrKSB7XG5cdHJldHVybiBhcnJheS5tYXAoY2FsbGJhY2spLmpvaW4oJycpXG59XG4iLCJpbXBvcnQge2Zyb20sIHRyaW0sIGNoYXJhdCwgc3RybGVuLCBzdWJzdHIsIGFwcGVuZCwgYXNzaWdufSBmcm9tICcuL1V0aWxpdHkuanMnXG5cbmV4cG9ydCB2YXIgbGluZSA9IDFcbmV4cG9ydCB2YXIgY29sdW1uID0gMVxuZXhwb3J0IHZhciBsZW5ndGggPSAwXG5leHBvcnQgdmFyIHBvc2l0aW9uID0gMFxuZXhwb3J0IHZhciBjaGFyYWN0ZXIgPSAwXG5leHBvcnQgdmFyIGNoYXJhY3RlcnMgPSAnJ1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3QgfCBudWxsfSByb290XG4gKiBAcGFyYW0ge29iamVjdCB8IG51bGx9IHBhcmVudFxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEBwYXJhbSB7c3RyaW5nW10gfCBzdHJpbmd9IHByb3BzXG4gKiBAcGFyYW0ge29iamVjdFtdIHwgc3RyaW5nfSBjaGlsZHJlblxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZSAodmFsdWUsIHJvb3QsIHBhcmVudCwgdHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBsZW5ndGgpIHtcblx0cmV0dXJuIHt2YWx1ZTogdmFsdWUsIHJvb3Q6IHJvb3QsIHBhcmVudDogcGFyZW50LCB0eXBlOiB0eXBlLCBwcm9wczogcHJvcHMsIGNoaWxkcmVuOiBjaGlsZHJlbiwgbGluZTogbGluZSwgY29sdW1uOiBjb2x1bW4sIGxlbmd0aDogbGVuZ3RoLCByZXR1cm46ICcnfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHkgKHJvb3QsIHByb3BzKSB7XG5cdHJldHVybiBhc3NpZ24obm9kZSgnJywgbnVsbCwgbnVsbCwgJycsIG51bGwsIG51bGwsIDApLCByb290LCB7bGVuZ3RoOiAtcm9vdC5sZW5ndGh9LCBwcm9wcylcbn1cblxuLyoqXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGFyICgpIHtcblx0cmV0dXJuIGNoYXJhY3RlclxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZXYgKCkge1xuXHRjaGFyYWN0ZXIgPSBwb3NpdGlvbiA+IDAgPyBjaGFyYXQoY2hhcmFjdGVycywgLS1wb3NpdGlvbikgOiAwXG5cblx0aWYgKGNvbHVtbi0tLCBjaGFyYWN0ZXIgPT09IDEwKVxuXHRcdGNvbHVtbiA9IDEsIGxpbmUtLVxuXG5cdHJldHVybiBjaGFyYWN0ZXJcbn1cblxuLyoqXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuZXh0ICgpIHtcblx0Y2hhcmFjdGVyID0gcG9zaXRpb24gPCBsZW5ndGggPyBjaGFyYXQoY2hhcmFjdGVycywgcG9zaXRpb24rKykgOiAwXG5cblx0aWYgKGNvbHVtbisrLCBjaGFyYWN0ZXIgPT09IDEwKVxuXHRcdGNvbHVtbiA9IDEsIGxpbmUrK1xuXG5cdHJldHVybiBjaGFyYWN0ZXJcbn1cblxuLyoqXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwZWVrICgpIHtcblx0cmV0dXJuIGNoYXJhdChjaGFyYWN0ZXJzLCBwb3NpdGlvbilcbn1cblxuLyoqXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYXJldCAoKSB7XG5cdHJldHVybiBwb3NpdGlvblxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSBiZWdpblxuICogQHBhcmFtIHtudW1iZXJ9IGVuZFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2xpY2UgKGJlZ2luLCBlbmQpIHtcblx0cmV0dXJuIHN1YnN0cihjaGFyYWN0ZXJzLCBiZWdpbiwgZW5kKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbiAodHlwZSkge1xuXHRzd2l0Y2ggKHR5cGUpIHtcblx0XHQvLyBcXDAgXFx0IFxcbiBcXHIgXFxzIHdoaXRlc3BhY2UgdG9rZW5cblx0XHRjYXNlIDA6IGNhc2UgOTogY2FzZSAxMDogY2FzZSAxMzogY2FzZSAzMjpcblx0XHRcdHJldHVybiA1XG5cdFx0Ly8gISArICwgLyA+IEAgfiBpc29sYXRlIHRva2VuXG5cdFx0Y2FzZSAzMzogY2FzZSA0MzogY2FzZSA0NDogY2FzZSA0NzogY2FzZSA2MjogY2FzZSA2NDogY2FzZSAxMjY6XG5cdFx0Ly8gOyB7IH0gYnJlYWtwb2ludCB0b2tlblxuXHRcdGNhc2UgNTk6IGNhc2UgMTIzOiBjYXNlIDEyNTpcblx0XHRcdHJldHVybiA0XG5cdFx0Ly8gOiBhY2NvbXBhbmllZCB0b2tlblxuXHRcdGNhc2UgNTg6XG5cdFx0XHRyZXR1cm4gM1xuXHRcdC8vIFwiICcgKCBbIG9wZW5pbmcgZGVsaW1pdCB0b2tlblxuXHRcdGNhc2UgMzQ6IGNhc2UgMzk6IGNhc2UgNDA6IGNhc2UgOTE6XG5cdFx0XHRyZXR1cm4gMlxuXHRcdC8vICkgXSBjbG9zaW5nIGRlbGltaXQgdG9rZW5cblx0XHRjYXNlIDQxOiBjYXNlIDkzOlxuXHRcdFx0cmV0dXJuIDFcblx0fVxuXG5cdHJldHVybiAwXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHthbnlbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFsbG9jICh2YWx1ZSkge1xuXHRyZXR1cm4gbGluZSA9IGNvbHVtbiA9IDEsIGxlbmd0aCA9IHN0cmxlbihjaGFyYWN0ZXJzID0gdmFsdWUpLCBwb3NpdGlvbiA9IDAsIFtdXG59XG5cbi8qKlxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcmV0dXJuIHthbnl9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWFsbG9jICh2YWx1ZSkge1xuXHRyZXR1cm4gY2hhcmFjdGVycyA9ICcnLCB2YWx1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxpbWl0ICh0eXBlKSB7XG5cdHJldHVybiB0cmltKHNsaWNlKHBvc2l0aW9uIC0gMSwgZGVsaW1pdGVyKHR5cGUgPT09IDkxID8gdHlwZSArIDIgOiB0eXBlID09PSA0MCA/IHR5cGUgKyAxIDogdHlwZSkpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7c3RyaW5nW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbml6ZSAodmFsdWUpIHtcblx0cmV0dXJuIGRlYWxsb2ModG9rZW5pemVyKGFsbG9jKHZhbHVlKSkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdoaXRlc3BhY2UgKHR5cGUpIHtcblx0d2hpbGUgKGNoYXJhY3RlciA9IHBlZWsoKSlcblx0XHRpZiAoY2hhcmFjdGVyIDwgMzMpXG5cdFx0XHRuZXh0KClcblx0XHRlbHNlXG5cdFx0XHRicmVha1xuXG5cdHJldHVybiB0b2tlbih0eXBlKSA+IDIgfHwgdG9rZW4oY2hhcmFjdGVyKSA+IDMgPyAnJyA6ICcgJ1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nW119IGNoaWxkcmVuXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuaXplciAoY2hpbGRyZW4pIHtcblx0d2hpbGUgKG5leHQoKSlcblx0XHRzd2l0Y2ggKHRva2VuKGNoYXJhY3RlcikpIHtcblx0XHRcdGNhc2UgMDogYXBwZW5kKGlkZW50aWZpZXIocG9zaXRpb24gLSAxKSwgY2hpbGRyZW4pXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRjYXNlIDI6IGFwcGVuZChkZWxpbWl0KGNoYXJhY3RlciksIGNoaWxkcmVuKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0ZGVmYXVsdDogYXBwZW5kKGZyb20oY2hhcmFjdGVyKSwgY2hpbGRyZW4pXG5cdFx0fVxuXG5cdHJldHVybiBjaGlsZHJlblxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtIHtudW1iZXJ9IGNvdW50XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGluZyAoaW5kZXgsIGNvdW50KSB7XG5cdHdoaWxlICgtLWNvdW50ICYmIG5leHQoKSlcblx0XHQvLyBub3QgMC05IEEtRiBhLWZcblx0XHRpZiAoY2hhcmFjdGVyIDwgNDggfHwgY2hhcmFjdGVyID4gMTAyIHx8IChjaGFyYWN0ZXIgPiA1NyAmJiBjaGFyYWN0ZXIgPCA2NSkgfHwgKGNoYXJhY3RlciA+IDcwICYmIGNoYXJhY3RlciA8IDk3KSlcblx0XHRcdGJyZWFrXG5cblx0cmV0dXJuIHNsaWNlKGluZGV4LCBjYXJldCgpICsgKGNvdW50IDwgNiAmJiBwZWVrKCkgPT0gMzIgJiYgbmV4dCgpID09IDMyKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVsaW1pdGVyICh0eXBlKSB7XG5cdHdoaWxlIChuZXh0KCkpXG5cdFx0c3dpdGNoIChjaGFyYWN0ZXIpIHtcblx0XHRcdC8vIF0gKSBcIiAnXG5cdFx0XHRjYXNlIHR5cGU6XG5cdFx0XHRcdHJldHVybiBwb3NpdGlvblxuXHRcdFx0Ly8gXCIgJ1xuXHRcdFx0Y2FzZSAzNDogY2FzZSAzOTpcblx0XHRcdFx0aWYgKHR5cGUgIT09IDM0ICYmIHR5cGUgIT09IDM5KVxuXHRcdFx0XHRcdGRlbGltaXRlcihjaGFyYWN0ZXIpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyAoXG5cdFx0XHRjYXNlIDQwOlxuXHRcdFx0XHRpZiAodHlwZSA9PT0gNDEpXG5cdFx0XHRcdFx0ZGVsaW1pdGVyKHR5cGUpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyBcXFxuXHRcdFx0Y2FzZSA5Mjpcblx0XHRcdFx0bmV4dCgpXG5cdFx0XHRcdGJyZWFrXG5cdFx0fVxuXG5cdHJldHVybiBwb3NpdGlvblxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbW1lbnRlciAodHlwZSwgaW5kZXgpIHtcblx0d2hpbGUgKG5leHQoKSlcblx0XHQvLyAvL1xuXHRcdGlmICh0eXBlICsgY2hhcmFjdGVyID09PSA0NyArIDEwKVxuXHRcdFx0YnJlYWtcblx0XHQvLyAvKlxuXHRcdGVsc2UgaWYgKHR5cGUgKyBjaGFyYWN0ZXIgPT09IDQyICsgNDIgJiYgcGVlaygpID09PSA0Nylcblx0XHRcdGJyZWFrXG5cblx0cmV0dXJuICcvKicgKyBzbGljZShpbmRleCwgcG9zaXRpb24gLSAxKSArICcqJyArIGZyb20odHlwZSA9PT0gNDcgPyB0eXBlIDogbmV4dCgpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpZmllciAoaW5kZXgpIHtcblx0d2hpbGUgKCF0b2tlbihwZWVrKCkpKVxuXHRcdG5leHQoKVxuXG5cdHJldHVybiBzbGljZShpbmRleCwgcG9zaXRpb24pXG59XG4iLCJpbXBvcnQge0NPTU1FTlQsIFJVTEVTRVQsIERFQ0xBUkFUSU9OfSBmcm9tICcuL0VudW0uanMnXG5pbXBvcnQge2FicywgY2hhcmF0LCB0cmltLCBmcm9tLCBzaXplb2YsIHN0cmxlbiwgc3Vic3RyLCBhcHBlbmQsIHJlcGxhY2UsIGluZGV4b2Z9IGZyb20gJy4vVXRpbGl0eS5qcydcbmltcG9ydCB7bm9kZSwgY2hhciwgcHJldiwgbmV4dCwgcGVlaywgY2FyZXQsIGFsbG9jLCBkZWFsbG9jLCBkZWxpbWl0LCB3aGl0ZXNwYWNlLCBlc2NhcGluZywgaWRlbnRpZmllciwgY29tbWVudGVyfSBmcm9tICcuL1Rva2VuaXplci5qcydcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge29iamVjdFtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZSAodmFsdWUpIHtcblx0cmV0dXJuIGRlYWxsb2MocGFyc2UoJycsIG51bGwsIG51bGwsIG51bGwsIFsnJ10sIHZhbHVlID0gYWxsb2ModmFsdWUpLCAwLCBbMF0sIHZhbHVlKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHBhcmFtIHtzdHJpbmdbXX0gcnVsZVxuICogQHBhcmFtIHtzdHJpbmdbXX0gcnVsZXNcbiAqIEBwYXJhbSB7c3RyaW5nW119IHJ1bGVzZXRzXG4gKiBAcGFyYW0ge251bWJlcltdfSBwc2V1ZG9cbiAqIEBwYXJhbSB7bnVtYmVyW119IHBvaW50c1xuICogQHBhcmFtIHtzdHJpbmdbXX0gZGVjbGFyYXRpb25zXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZSAodmFsdWUsIHJvb3QsIHBhcmVudCwgcnVsZSwgcnVsZXMsIHJ1bGVzZXRzLCBwc2V1ZG8sIHBvaW50cywgZGVjbGFyYXRpb25zKSB7XG5cdHZhciBpbmRleCA9IDBcblx0dmFyIG9mZnNldCA9IDBcblx0dmFyIGxlbmd0aCA9IHBzZXVkb1xuXHR2YXIgYXRydWxlID0gMFxuXHR2YXIgcHJvcGVydHkgPSAwXG5cdHZhciBwcmV2aW91cyA9IDBcblx0dmFyIHZhcmlhYmxlID0gMVxuXHR2YXIgc2Nhbm5pbmcgPSAxXG5cdHZhciBhbXBlcnNhbmQgPSAxXG5cdHZhciBjaGFyYWN0ZXIgPSAwXG5cdHZhciB0eXBlID0gJydcblx0dmFyIHByb3BzID0gcnVsZXNcblx0dmFyIGNoaWxkcmVuID0gcnVsZXNldHNcblx0dmFyIHJlZmVyZW5jZSA9IHJ1bGVcblx0dmFyIGNoYXJhY3RlcnMgPSB0eXBlXG5cblx0d2hpbGUgKHNjYW5uaW5nKVxuXHRcdHN3aXRjaCAocHJldmlvdXMgPSBjaGFyYWN0ZXIsIGNoYXJhY3RlciA9IG5leHQoKSkge1xuXHRcdFx0Ly8gKFxuXHRcdFx0Y2FzZSA0MDpcblx0XHRcdFx0aWYgKHByZXZpb3VzICE9IDEwOCAmJiBjaGFyYXQoY2hhcmFjdGVycywgbGVuZ3RoIC0gMSkgPT0gNTgpIHtcblx0XHRcdFx0XHRpZiAoaW5kZXhvZihjaGFyYWN0ZXJzICs9IHJlcGxhY2UoZGVsaW1pdChjaGFyYWN0ZXIpLCAnJicsICcmXFxmJyksICcmXFxmJykgIT0gLTEpXG5cdFx0XHRcdFx0XHRhbXBlcnNhbmQgPSAtMVxuXHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdH1cblx0XHRcdC8vIFwiICcgW1xuXHRcdFx0Y2FzZSAzNDogY2FzZSAzOTogY2FzZSA5MTpcblx0XHRcdFx0Y2hhcmFjdGVycyArPSBkZWxpbWl0KGNoYXJhY3Rlcilcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIFxcdCBcXG4gXFxyIFxcc1xuXHRcdFx0Y2FzZSA5OiBjYXNlIDEwOiBjYXNlIDEzOiBjYXNlIDMyOlxuXHRcdFx0XHRjaGFyYWN0ZXJzICs9IHdoaXRlc3BhY2UocHJldmlvdXMpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyBcXFxuXHRcdFx0Y2FzZSA5Mjpcblx0XHRcdFx0Y2hhcmFjdGVycyArPSBlc2NhcGluZyhjYXJldCgpIC0gMSwgNylcblx0XHRcdFx0Y29udGludWVcblx0XHRcdC8vIC9cblx0XHRcdGNhc2UgNDc6XG5cdFx0XHRcdHN3aXRjaCAocGVlaygpKSB7XG5cdFx0XHRcdFx0Y2FzZSA0MjogY2FzZSA0Nzpcblx0XHRcdFx0XHRcdGFwcGVuZChjb21tZW50KGNvbW1lbnRlcihuZXh0KCksIGNhcmV0KCkpLCByb290LCBwYXJlbnQpLCBkZWNsYXJhdGlvbnMpXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRjaGFyYWN0ZXJzICs9ICcvJ1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyB7XG5cdFx0XHRjYXNlIDEyMyAqIHZhcmlhYmxlOlxuXHRcdFx0XHRwb2ludHNbaW5kZXgrK10gPSBzdHJsZW4oY2hhcmFjdGVycykgKiBhbXBlcnNhbmRcblx0XHRcdC8vIH0gOyBcXDBcblx0XHRcdGNhc2UgMTI1ICogdmFyaWFibGU6IGNhc2UgNTk6IGNhc2UgMDpcblx0XHRcdFx0c3dpdGNoIChjaGFyYWN0ZXIpIHtcblx0XHRcdFx0XHQvLyBcXDAgfVxuXHRcdFx0XHRcdGNhc2UgMDogY2FzZSAxMjU6IHNjYW5uaW5nID0gMFxuXHRcdFx0XHRcdC8vIDtcblx0XHRcdFx0XHRjYXNlIDU5ICsgb2Zmc2V0OiBpZiAoYW1wZXJzYW5kID09IC0xKSBjaGFyYWN0ZXJzID0gcmVwbGFjZShjaGFyYWN0ZXJzLCAvXFxmL2csICcnKVxuXHRcdFx0XHRcdFx0aWYgKHByb3BlcnR5ID4gMCAmJiAoc3RybGVuKGNoYXJhY3RlcnMpIC0gbGVuZ3RoKSlcblx0XHRcdFx0XHRcdFx0YXBwZW5kKHByb3BlcnR5ID4gMzIgPyBkZWNsYXJhdGlvbihjaGFyYWN0ZXJzICsgJzsnLCBydWxlLCBwYXJlbnQsIGxlbmd0aCAtIDEpIDogZGVjbGFyYXRpb24ocmVwbGFjZShjaGFyYWN0ZXJzLCAnICcsICcnKSArICc7JywgcnVsZSwgcGFyZW50LCBsZW5ndGggLSAyKSwgZGVjbGFyYXRpb25zKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyBAIDtcblx0XHRcdFx0XHRjYXNlIDU5OiBjaGFyYWN0ZXJzICs9ICc7J1xuXHRcdFx0XHRcdC8vIHsgcnVsZS9hdC1ydWxlXG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdGFwcGVuZChyZWZlcmVuY2UgPSBydWxlc2V0KGNoYXJhY3RlcnMsIHJvb3QsIHBhcmVudCwgaW5kZXgsIG9mZnNldCwgcnVsZXMsIHBvaW50cywgdHlwZSwgcHJvcHMgPSBbXSwgY2hpbGRyZW4gPSBbXSwgbGVuZ3RoKSwgcnVsZXNldHMpXG5cblx0XHRcdFx0XHRcdGlmIChjaGFyYWN0ZXIgPT09IDEyMylcblx0XHRcdFx0XHRcdFx0aWYgKG9mZnNldCA9PT0gMClcblx0XHRcdFx0XHRcdFx0XHRwYXJzZShjaGFyYWN0ZXJzLCByb290LCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgcHJvcHMsIHJ1bGVzZXRzLCBsZW5ndGgsIHBvaW50cywgY2hpbGRyZW4pXG5cdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKGF0cnVsZSA9PT0gOTkgJiYgY2hhcmF0KGNoYXJhY3RlcnMsIDMpID09PSAxMTAgPyAxMDAgOiBhdHJ1bGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGQgbCBtIHNcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTAwOiBjYXNlIDEwODogY2FzZSAxMDk6IGNhc2UgMTE1OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJzZSh2YWx1ZSwgcmVmZXJlbmNlLCByZWZlcmVuY2UsIHJ1bGUgJiYgYXBwZW5kKHJ1bGVzZXQodmFsdWUsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCAwLCAwLCBydWxlcywgcG9pbnRzLCB0eXBlLCBydWxlcywgcHJvcHMgPSBbXSwgbGVuZ3RoKSwgY2hpbGRyZW4pLCBydWxlcywgY2hpbGRyZW4sIGxlbmd0aCwgcG9pbnRzLCBydWxlID8gcHJvcHMgOiBjaGlsZHJlbilcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBhcnNlKGNoYXJhY3RlcnMsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCByZWZlcmVuY2UsIFsnJ10sIGNoaWxkcmVuLCAwLCBwb2ludHMsIGNoaWxkcmVuKVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGluZGV4ID0gb2Zmc2V0ID0gcHJvcGVydHkgPSAwLCB2YXJpYWJsZSA9IGFtcGVyc2FuZCA9IDEsIHR5cGUgPSBjaGFyYWN0ZXJzID0gJycsIGxlbmd0aCA9IHBzZXVkb1xuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gOlxuXHRcdFx0Y2FzZSA1ODpcblx0XHRcdFx0bGVuZ3RoID0gMSArIHN0cmxlbihjaGFyYWN0ZXJzKSwgcHJvcGVydHkgPSBwcmV2aW91c1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYgKHZhcmlhYmxlIDwgMSlcblx0XHRcdFx0XHRpZiAoY2hhcmFjdGVyID09IDEyMylcblx0XHRcdFx0XHRcdC0tdmFyaWFibGVcblx0XHRcdFx0XHRlbHNlIGlmIChjaGFyYWN0ZXIgPT0gMTI1ICYmIHZhcmlhYmxlKysgPT0gMCAmJiBwcmV2KCkgPT0gMTI1KVxuXHRcdFx0XHRcdFx0Y29udGludWVcblxuXHRcdFx0XHRzd2l0Y2ggKGNoYXJhY3RlcnMgKz0gZnJvbShjaGFyYWN0ZXIpLCBjaGFyYWN0ZXIgKiB2YXJpYWJsZSkge1xuXHRcdFx0XHRcdC8vICZcblx0XHRcdFx0XHRjYXNlIDM4OlxuXHRcdFx0XHRcdFx0YW1wZXJzYW5kID0gb2Zmc2V0ID4gMCA/IDEgOiAoY2hhcmFjdGVycyArPSAnXFxmJywgLTEpXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vICxcblx0XHRcdFx0XHRjYXNlIDQ0OlxuXHRcdFx0XHRcdFx0cG9pbnRzW2luZGV4KytdID0gKHN0cmxlbihjaGFyYWN0ZXJzKSAtIDEpICogYW1wZXJzYW5kLCBhbXBlcnNhbmQgPSAxXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vIEBcblx0XHRcdFx0XHRjYXNlIDY0OlxuXHRcdFx0XHRcdFx0Ly8gLVxuXHRcdFx0XHRcdFx0aWYgKHBlZWsoKSA9PT0gNDUpXG5cdFx0XHRcdFx0XHRcdGNoYXJhY3RlcnMgKz0gZGVsaW1pdChuZXh0KCkpXG5cblx0XHRcdFx0XHRcdGF0cnVsZSA9IHBlZWsoKSwgb2Zmc2V0ID0gbGVuZ3RoID0gc3RybGVuKHR5cGUgPSBjaGFyYWN0ZXJzICs9IGlkZW50aWZpZXIoY2FyZXQoKSkpLCBjaGFyYWN0ZXIrK1xuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyAtXG5cdFx0XHRcdFx0Y2FzZSA0NTpcblx0XHRcdFx0XHRcdGlmIChwcmV2aW91cyA9PT0gNDUgJiYgc3RybGVuKGNoYXJhY3RlcnMpID09IDIpXG5cdFx0XHRcdFx0XHRcdHZhcmlhYmxlID0gMFxuXHRcdFx0XHR9XG5cdFx0fVxuXG5cdHJldHVybiBydWxlc2V0c1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXRcbiAqIEBwYXJhbSB7c3RyaW5nW119IHJ1bGVzXG4gKiBAcGFyYW0ge251bWJlcltdfSBwb2ludHNcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwcm9wc1xuICogQHBhcmFtIHtzdHJpbmdbXX0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzZXQgKHZhbHVlLCByb290LCBwYXJlbnQsIGluZGV4LCBvZmZzZXQsIHJ1bGVzLCBwb2ludHMsIHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgbGVuZ3RoKSB7XG5cdHZhciBwb3N0ID0gb2Zmc2V0IC0gMVxuXHR2YXIgcnVsZSA9IG9mZnNldCA9PT0gMCA/IHJ1bGVzIDogWycnXVxuXHR2YXIgc2l6ZSA9IHNpemVvZihydWxlKVxuXG5cdGZvciAodmFyIGkgPSAwLCBqID0gMCwgayA9IDA7IGkgPCBpbmRleDsgKytpKVxuXHRcdGZvciAodmFyIHggPSAwLCB5ID0gc3Vic3RyKHZhbHVlLCBwb3N0ICsgMSwgcG9zdCA9IGFicyhqID0gcG9pbnRzW2ldKSksIHogPSB2YWx1ZTsgeCA8IHNpemU7ICsreClcblx0XHRcdGlmICh6ID0gdHJpbShqID4gMCA/IHJ1bGVbeF0gKyAnICcgKyB5IDogcmVwbGFjZSh5LCAvJlxcZi9nLCBydWxlW3hdKSkpXG5cdFx0XHRcdHByb3BzW2srK10gPSB6XG5cblx0cmV0dXJuIG5vZGUodmFsdWUsIHJvb3QsIHBhcmVudCwgb2Zmc2V0ID09PSAwID8gUlVMRVNFVCA6IHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgbGVuZ3RoKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21tZW50ICh2YWx1ZSwgcm9vdCwgcGFyZW50KSB7XG5cdHJldHVybiBub2RlKHZhbHVlLCByb290LCBwYXJlbnQsIENPTU1FTlQsIGZyb20oY2hhcigpKSwgc3Vic3RyKHZhbHVlLCAyLCAtMiksIDApXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3Q/fSBwYXJlbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmF0aW9uICh2YWx1ZSwgcm9vdCwgcGFyZW50LCBsZW5ndGgpIHtcblx0cmV0dXJuIG5vZGUodmFsdWUsIHJvb3QsIHBhcmVudCwgREVDTEFSQVRJT04sIHN1YnN0cih2YWx1ZSwgMCwgbGVuZ3RoKSwgc3Vic3RyKHZhbHVlLCBsZW5ndGggKyAxLCAtMSksIGxlbmd0aClcbn1cbiIsImltcG9ydCB7SU1QT1JULCBMQVlFUiwgQ09NTUVOVCwgUlVMRVNFVCwgREVDTEFSQVRJT04sIEtFWUZSQU1FU30gZnJvbSAnLi9FbnVtLmpzJ1xuaW1wb3J0IHtzdHJsZW4sIHNpemVvZn0gZnJvbSAnLi9VdGlsaXR5LmpzJ1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0W119IGNoaWxkcmVuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplIChjaGlsZHJlbiwgY2FsbGJhY2spIHtcblx0dmFyIG91dHB1dCA9ICcnXG5cdHZhciBsZW5ndGggPSBzaXplb2YoY2hpbGRyZW4pXG5cblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKylcblx0XHRvdXRwdXQgKz0gY2FsbGJhY2soY2hpbGRyZW5baV0sIGksIGNoaWxkcmVuLCBjYWxsYmFjaykgfHwgJydcblxuXHRyZXR1cm4gb3V0cHV0XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkgKGVsZW1lbnQsIGluZGV4LCBjaGlsZHJlbiwgY2FsbGJhY2spIHtcblx0c3dpdGNoIChlbGVtZW50LnR5cGUpIHtcblx0XHRjYXNlIExBWUVSOiBpZiAoZWxlbWVudC5jaGlsZHJlbi5sZW5ndGgpIGJyZWFrXG5cdFx0Y2FzZSBJTVBPUlQ6IGNhc2UgREVDTEFSQVRJT046IHJldHVybiBlbGVtZW50LnJldHVybiA9IGVsZW1lbnQucmV0dXJuIHx8IGVsZW1lbnQudmFsdWVcblx0XHRjYXNlIENPTU1FTlQ6IHJldHVybiAnJ1xuXHRcdGNhc2UgS0VZRlJBTUVTOiByZXR1cm4gZWxlbWVudC5yZXR1cm4gPSBlbGVtZW50LnZhbHVlICsgJ3snICsgc2VyaWFsaXplKGVsZW1lbnQuY2hpbGRyZW4sIGNhbGxiYWNrKSArICd9J1xuXHRcdGNhc2UgUlVMRVNFVDogZWxlbWVudC52YWx1ZSA9IGVsZW1lbnQucHJvcHMuam9pbignLCcpXG5cdH1cblxuXHRyZXR1cm4gc3RybGVuKGNoaWxkcmVuID0gc2VyaWFsaXplKGVsZW1lbnQuY2hpbGRyZW4sIGNhbGxiYWNrKSkgPyBlbGVtZW50LnJldHVybiA9IGVsZW1lbnQudmFsdWUgKyAneycgKyBjaGlsZHJlbiArICd9JyA6ICcnXG59XG4iLCJpbXBvcnQge01TLCBNT1osIFdFQktJVCwgUlVMRVNFVCwgS0VZRlJBTUVTLCBERUNMQVJBVElPTn0gZnJvbSAnLi9FbnVtLmpzJ1xuaW1wb3J0IHttYXRjaCwgY2hhcmF0LCBzdWJzdHIsIHN0cmxlbiwgc2l6ZW9mLCByZXBsYWNlLCBjb21iaW5lfSBmcm9tICcuL1V0aWxpdHkuanMnXG5pbXBvcnQge2NvcHksIHRva2VuaXplfSBmcm9tICcuL1Rva2VuaXplci5qcydcbmltcG9ydCB7c2VyaWFsaXplfSBmcm9tICcuL1NlcmlhbGl6ZXIuanMnXG5pbXBvcnQge3ByZWZpeH0gZnJvbSAnLi9QcmVmaXhlci5qcydcblxuLyoqXG4gKiBAcGFyYW0ge2Z1bmN0aW9uW119IGNvbGxlY3Rpb25cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWlkZGxld2FyZSAoY29sbGVjdGlvbikge1xuXHR2YXIgbGVuZ3RoID0gc2l6ZW9mKGNvbGxlY3Rpb24pXG5cblx0cmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdFx0dmFyIG91dHB1dCA9ICcnXG5cblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKVxuXHRcdFx0b3V0cHV0ICs9IGNvbGxlY3Rpb25baV0oZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykgfHwgJydcblxuXHRcdHJldHVybiBvdXRwdXRcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzaGVldCAoY2FsbGJhY2spIHtcblx0cmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50KSB7XG5cdFx0aWYgKCFlbGVtZW50LnJvb3QpXG5cdFx0XHRpZiAoZWxlbWVudCA9IGVsZW1lbnQucmV0dXJuKVxuXHRcdFx0XHRjYWxsYmFjayhlbGVtZW50KVxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVmaXhlciAoZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHRpZiAoZWxlbWVudC5sZW5ndGggPiAtMSlcblx0XHRpZiAoIWVsZW1lbnQucmV0dXJuKVxuXHRcdFx0c3dpdGNoIChlbGVtZW50LnR5cGUpIHtcblx0XHRcdFx0Y2FzZSBERUNMQVJBVElPTjogZWxlbWVudC5yZXR1cm4gPSBwcmVmaXgoZWxlbWVudC52YWx1ZSwgZWxlbWVudC5sZW5ndGgsIGNoaWxkcmVuKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHRjYXNlIEtFWUZSQU1FUzpcblx0XHRcdFx0XHRyZXR1cm4gc2VyaWFsaXplKFtjb3B5KGVsZW1lbnQsIHt2YWx1ZTogcmVwbGFjZShlbGVtZW50LnZhbHVlLCAnQCcsICdAJyArIFdFQktJVCl9KV0sIGNhbGxiYWNrKVxuXHRcdFx0XHRjYXNlIFJVTEVTRVQ6XG5cdFx0XHRcdFx0aWYgKGVsZW1lbnQubGVuZ3RoKVxuXHRcdFx0XHRcdFx0cmV0dXJuIGNvbWJpbmUoZWxlbWVudC5wcm9wcywgZnVuY3Rpb24gKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHN3aXRjaCAobWF0Y2godmFsdWUsIC8oOjpwbGFjXFx3K3w6cmVhZC1cXHcrKS8pKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gOnJlYWQtKG9ubHl8d3JpdGUpXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSAnOnJlYWQtb25seSc6IGNhc2UgJzpyZWFkLXdyaXRlJzpcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBzZXJpYWxpemUoW2NvcHkoZWxlbWVudCwge3Byb3BzOiBbcmVwbGFjZSh2YWx1ZSwgLzoocmVhZC1cXHcrKS8sICc6JyArIE1PWiArICckMScpXX0pXSwgY2FsbGJhY2spXG5cdFx0XHRcdFx0XHRcdFx0Ly8gOnBsYWNlaG9sZGVyXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSAnOjpwbGFjZWhvbGRlcic6XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gc2VyaWFsaXplKFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCAnOicgKyBXRUJLSVQgKyAnaW5wdXQtJDEnKV19KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCAnOicgKyBNT1ogKyAnJDEnKV19KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCBNUyArICdpbnB1dC0kMScpXX0pXG5cdFx0XHRcdFx0XHRcdFx0XHRdLCBjYWxsYmFjaylcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdHJldHVybiAnJ1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICovXG5leHBvcnQgZnVuY3Rpb24gbmFtZXNwYWNlIChlbGVtZW50KSB7XG5cdHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG5cdFx0Y2FzZSBSVUxFU0VUOlxuXHRcdFx0ZWxlbWVudC5wcm9wcyA9IGVsZW1lbnQucHJvcHMubWFwKGZ1bmN0aW9uICh2YWx1ZSkge1xuXHRcdFx0XHRyZXR1cm4gY29tYmluZSh0b2tlbml6ZSh2YWx1ZSksIGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgsIGNoaWxkcmVuKSB7XG5cdFx0XHRcdFx0c3dpdGNoIChjaGFyYXQodmFsdWUsIDApKSB7XG5cdFx0XHRcdFx0XHQvLyBcXGZcblx0XHRcdFx0XHRcdGNhc2UgMTI6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzdWJzdHIodmFsdWUsIDEsIHN0cmxlbih2YWx1ZSkpXG5cdFx0XHRcdFx0XHQvLyBcXDAgKCArID4gflxuXHRcdFx0XHRcdFx0Y2FzZSAwOiBjYXNlIDQwOiBjYXNlIDQzOiBjYXNlIDYyOiBjYXNlIDEyNjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhbHVlXG5cdFx0XHRcdFx0XHQvLyA6XG5cdFx0XHRcdFx0XHRjYXNlIDU4OlxuXHRcdFx0XHRcdFx0XHRpZiAoY2hpbGRyZW5bKytpbmRleF0gPT09ICdnbG9iYWwnKVxuXHRcdFx0XHRcdFx0XHRcdGNoaWxkcmVuW2luZGV4XSA9ICcnLCBjaGlsZHJlblsrK2luZGV4XSA9ICdcXGYnICsgc3Vic3RyKGNoaWxkcmVuW2luZGV4XSwgaW5kZXggPSAxLCAtMSlcblx0XHRcdFx0XHRcdC8vIFxcc1xuXHRcdFx0XHRcdFx0Y2FzZSAzMjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGluZGV4ID09PSAxID8gJycgOiB2YWx1ZVxuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0c3dpdGNoIChpbmRleCkge1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgMDogZWxlbWVudCA9IHZhbHVlXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gc2l6ZW9mKGNoaWxkcmVuKSA+IDEgPyAnJyA6IHZhbHVlXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBpbmRleCA9IHNpemVvZihjaGlsZHJlbikgLSAxOiBjYXNlIDI6XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaW5kZXggPT09IDIgPyB2YWx1ZSArIGVsZW1lbnQgKyBlbGVtZW50IDogdmFsdWUgKyBlbGVtZW50XG5cdFx0XHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblx0fVxufVxuIiwidmFyIHdlYWtNZW1vaXplID0gZnVuY3Rpb24gd2Vha01lbW9pemUoZnVuYykge1xuICB2YXIgY2FjaGUgPSBuZXcgV2Vha01hcCgpO1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZykge1xuICAgIGlmIChjYWNoZS5oYXMoYXJnKSkge1xuICAgICAgLy8gVXNlIG5vbi1udWxsIGFzc2VydGlvbiBiZWNhdXNlIHdlIGp1c3QgY2hlY2tlZCB0aGF0IHRoZSBjYWNoZSBgaGFzYCBpdFxuICAgICAgLy8gVGhpcyBhbGxvd3MgdXMgdG8gcmVtb3ZlIGB1bmRlZmluZWRgIGZyb20gdGhlIHJldHVybiB2YWx1ZVxuICAgICAgcmV0dXJuIGNhY2hlLmdldChhcmcpO1xuICAgIH1cblxuICAgIHZhciByZXQgPSBmdW5jKGFyZyk7XG4gICAgY2FjaGUuc2V0KGFyZywgcmV0KTtcbiAgICByZXR1cm4gcmV0O1xuICB9O1xufTtcblxuZXhwb3J0IHsgd2Vha01lbW9pemUgYXMgZGVmYXVsdCB9O1xuIiwiZnVuY3Rpb24gbWVtb2l6ZShmbikge1xuICB2YXIgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZykge1xuICAgIGlmIChjYWNoZVthcmddID09PSB1bmRlZmluZWQpIGNhY2hlW2FyZ10gPSBmbihhcmcpO1xuICAgIHJldHVybiBjYWNoZVthcmddO1xuICB9O1xufVxuXG5leHBvcnQgeyBtZW1vaXplIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCB7IFN0eWxlU2hlZXQgfSBmcm9tICdAZW1vdGlvbi9zaGVldCc7XG5pbXBvcnQgeyBkZWFsbG9jLCBhbGxvYywgbmV4dCwgdG9rZW4sIGZyb20sIHBlZWssIGRlbGltaXQsIHNsaWNlLCBwb3NpdGlvbiwgUlVMRVNFVCwgY29tYmluZSwgbWF0Y2gsIHNlcmlhbGl6ZSwgY29weSwgcmVwbGFjZSwgV0VCS0lULCBNT1osIE1TLCBLRVlGUkFNRVMsIERFQ0xBUkFUSU9OLCBoYXNoLCBjaGFyYXQsIHN0cmxlbiwgaW5kZXhvZiwgc3RyaW5naWZ5LCBydWxlc2hlZXQsIG1pZGRsZXdhcmUsIGNvbXBpbGUgfSBmcm9tICdzdHlsaXMnO1xuaW1wb3J0ICdAZW1vdGlvbi93ZWFrLW1lbW9pemUnO1xuaW1wb3J0ICdAZW1vdGlvbi9tZW1vaXplJztcblxudmFyIGlkZW50aWZpZXJXaXRoUG9pbnRUcmFja2luZyA9IGZ1bmN0aW9uIGlkZW50aWZpZXJXaXRoUG9pbnRUcmFja2luZyhiZWdpbiwgcG9pbnRzLCBpbmRleCkge1xuICB2YXIgcHJldmlvdXMgPSAwO1xuICB2YXIgY2hhcmFjdGVyID0gMDtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIHByZXZpb3VzID0gY2hhcmFjdGVyO1xuICAgIGNoYXJhY3RlciA9IHBlZWsoKTsgLy8gJlxcZlxuXG4gICAgaWYgKHByZXZpb3VzID09PSAzOCAmJiBjaGFyYWN0ZXIgPT09IDEyKSB7XG4gICAgICBwb2ludHNbaW5kZXhdID0gMTtcbiAgICB9XG5cbiAgICBpZiAodG9rZW4oY2hhcmFjdGVyKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgbmV4dCgpO1xuICB9XG5cbiAgcmV0dXJuIHNsaWNlKGJlZ2luLCBwb3NpdGlvbik7XG59O1xuXG52YXIgdG9SdWxlcyA9IGZ1bmN0aW9uIHRvUnVsZXMocGFyc2VkLCBwb2ludHMpIHtcbiAgLy8gcHJldGVuZCB3ZSd2ZSBzdGFydGVkIHdpdGggYSBjb21tYVxuICB2YXIgaW5kZXggPSAtMTtcbiAgdmFyIGNoYXJhY3RlciA9IDQ0O1xuXG4gIGRvIHtcbiAgICBzd2l0Y2ggKHRva2VuKGNoYXJhY3RlcikpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgLy8gJlxcZlxuICAgICAgICBpZiAoY2hhcmFjdGVyID09PSAzOCAmJiBwZWVrKCkgPT09IDEyKSB7XG4gICAgICAgICAgLy8gdGhpcyBpcyBub3QgMTAwJSBjb3JyZWN0LCB3ZSBkb24ndCBhY2NvdW50IGZvciBsaXRlcmFsIHNlcXVlbmNlcyBoZXJlIC0gbGlrZSBmb3IgZXhhbXBsZSBxdW90ZWQgc3RyaW5nc1xuICAgICAgICAgIC8vIHN0eWxpcyBpbnNlcnRzIFxcZiBhZnRlciAmIHRvIGtub3cgd2hlbiAmIHdoZXJlIGl0IHNob3VsZCByZXBsYWNlIHRoaXMgc2VxdWVuY2Ugd2l0aCB0aGUgY29udGV4dCBzZWxlY3RvclxuICAgICAgICAgIC8vIGFuZCB3aGVuIGl0IHNob3VsZCBqdXN0IGNvbmNhdGVuYXRlIHRoZSBvdXRlciBhbmQgaW5uZXIgc2VsZWN0b3JzXG4gICAgICAgICAgLy8gaXQncyB2ZXJ5IHVubGlrZWx5IGZvciB0aGlzIHNlcXVlbmNlIHRvIGFjdHVhbGx5IGFwcGVhciBpbiBhIGRpZmZlcmVudCBjb250ZXh0LCBzbyB3ZSBqdXN0IGxldmVyYWdlIHRoaXMgZmFjdCBoZXJlXG4gICAgICAgICAgcG9pbnRzW2luZGV4XSA9IDE7XG4gICAgICAgIH1cblxuICAgICAgICBwYXJzZWRbaW5kZXhdICs9IGlkZW50aWZpZXJXaXRoUG9pbnRUcmFja2luZyhwb3NpdGlvbiAtIDEsIHBvaW50cywgaW5kZXgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAyOlxuICAgICAgICBwYXJzZWRbaW5kZXhdICs9IGRlbGltaXQoY2hhcmFjdGVyKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgNDpcbiAgICAgICAgLy8gY29tbWFcbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gNDQpIHtcbiAgICAgICAgICAvLyBjb2xvblxuICAgICAgICAgIHBhcnNlZFsrK2luZGV4XSA9IHBlZWsoKSA9PT0gNTggPyAnJlxcZicgOiAnJztcbiAgICAgICAgICBwb2ludHNbaW5kZXhdID0gcGFyc2VkW2luZGV4XS5sZW5ndGg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgLy8gZmFsbHRocm91Z2hcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcGFyc2VkW2luZGV4XSArPSBmcm9tKGNoYXJhY3Rlcik7XG4gICAgfVxuICB9IHdoaWxlIChjaGFyYWN0ZXIgPSBuZXh0KCkpO1xuXG4gIHJldHVybiBwYXJzZWQ7XG59O1xuXG52YXIgZ2V0UnVsZXMgPSBmdW5jdGlvbiBnZXRSdWxlcyh2YWx1ZSwgcG9pbnRzKSB7XG4gIHJldHVybiBkZWFsbG9jKHRvUnVsZXMoYWxsb2ModmFsdWUpLCBwb2ludHMpKTtcbn07IC8vIFdlYWtTZXQgd291bGQgYmUgbW9yZSBhcHByb3ByaWF0ZSwgYnV0IG9ubHkgV2Vha01hcCBpcyBzdXBwb3J0ZWQgaW4gSUUxMVxuXG5cbnZhciBmaXhlZEVsZW1lbnRzID0gLyogI19fUFVSRV9fICovbmV3IFdlYWtNYXAoKTtcbnZhciBjb21wYXQgPSBmdW5jdGlvbiBjb21wYXQoZWxlbWVudCkge1xuICBpZiAoZWxlbWVudC50eXBlICE9PSAncnVsZScgfHwgIWVsZW1lbnQucGFyZW50IHx8IC8vIHBvc2l0aXZlIC5sZW5ndGggaW5kaWNhdGVzIHRoYXQgdGhpcyBydWxlIGNvbnRhaW5zIHBzZXVkb1xuICAvLyBuZWdhdGl2ZSAubGVuZ3RoIGluZGljYXRlcyB0aGF0IHRoaXMgcnVsZSBoYXMgYmVlbiBhbHJlYWR5IHByZWZpeGVkXG4gIGVsZW1lbnQubGVuZ3RoIDwgMSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciB2YWx1ZSA9IGVsZW1lbnQudmFsdWU7XG4gIHZhciBwYXJlbnQgPSBlbGVtZW50LnBhcmVudDtcbiAgdmFyIGlzSW1wbGljaXRSdWxlID0gZWxlbWVudC5jb2x1bW4gPT09IHBhcmVudC5jb2x1bW4gJiYgZWxlbWVudC5saW5lID09PSBwYXJlbnQubGluZTtcblxuICB3aGlsZSAocGFyZW50LnR5cGUgIT09ICdydWxlJykge1xuICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XG4gICAgaWYgKCFwYXJlbnQpIHJldHVybjtcbiAgfSAvLyBzaG9ydC1jaXJjdWl0IGZvciB0aGUgc2ltcGxlc3QgY2FzZVxuXG5cbiAgaWYgKGVsZW1lbnQucHJvcHMubGVuZ3RoID09PSAxICYmIHZhbHVlLmNoYXJDb2RlQXQoMCkgIT09IDU4XG4gIC8qIGNvbG9uICovXG4gICYmICFmaXhlZEVsZW1lbnRzLmdldChwYXJlbnQpKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIGlmIHRoaXMgaXMgYW4gaW1wbGljaXRseSBpbnNlcnRlZCBydWxlICh0aGUgb25lIGVhZ2VybHkgaW5zZXJ0ZWQgYXQgdGhlIGVhY2ggbmV3IG5lc3RlZCBsZXZlbClcbiAgLy8gdGhlbiB0aGUgcHJvcHMgaGFzIGFscmVhZHkgYmVlbiBtYW5pcHVsYXRlZCBiZWZvcmVoYW5kIGFzIHRoZXkgdGhhdCBhcnJheSBpcyBzaGFyZWQgYmV0d2VlbiBpdCBhbmQgaXRzIFwicnVsZSBwYXJlbnRcIlxuXG5cbiAgaWYgKGlzSW1wbGljaXRSdWxlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZml4ZWRFbGVtZW50cy5zZXQoZWxlbWVudCwgdHJ1ZSk7XG4gIHZhciBwb2ludHMgPSBbXTtcbiAgdmFyIHJ1bGVzID0gZ2V0UnVsZXModmFsdWUsIHBvaW50cyk7XG4gIHZhciBwYXJlbnRSdWxlcyA9IHBhcmVudC5wcm9wcztcblxuICBmb3IgKHZhciBpID0gMCwgayA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgcGFyZW50UnVsZXMubGVuZ3RoOyBqKyssIGsrKykge1xuICAgICAgZWxlbWVudC5wcm9wc1trXSA9IHBvaW50c1tpXSA/IHJ1bGVzW2ldLnJlcGxhY2UoLyZcXGYvZywgcGFyZW50UnVsZXNbal0pIDogcGFyZW50UnVsZXNbal0gKyBcIiBcIiArIHJ1bGVzW2ldO1xuICAgIH1cbiAgfVxufTtcbnZhciByZW1vdmVMYWJlbCA9IGZ1bmN0aW9uIHJlbW92ZUxhYmVsKGVsZW1lbnQpIHtcbiAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ2RlY2wnKSB7XG4gICAgdmFyIHZhbHVlID0gZWxlbWVudC52YWx1ZTtcblxuICAgIGlmICggLy8gY2hhcmNvZGUgZm9yIGxcbiAgICB2YWx1ZS5jaGFyQ29kZUF0KDApID09PSAxMDggJiYgLy8gY2hhcmNvZGUgZm9yIGJcbiAgICB2YWx1ZS5jaGFyQ29kZUF0KDIpID09PSA5OCkge1xuICAgICAgLy8gdGhpcyBpZ25vcmVzIGxhYmVsXG4gICAgICBlbGVtZW50W1wicmV0dXJuXCJdID0gJyc7XG4gICAgICBlbGVtZW50LnZhbHVlID0gJyc7XG4gICAgfVxuICB9XG59O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1mYWxsdGhyb3VnaCAqL1xuXG5mdW5jdGlvbiBwcmVmaXgodmFsdWUsIGxlbmd0aCkge1xuICBzd2l0Y2ggKGhhc2godmFsdWUsIGxlbmd0aCkpIHtcbiAgICAvLyBjb2xvci1hZGp1c3RcbiAgICBjYXNlIDUxMDM6XG4gICAgICByZXR1cm4gV0VCS0lUICsgJ3ByaW50LScgKyB2YWx1ZSArIHZhbHVlO1xuICAgIC8vIGFuaW1hdGlvbiwgYW5pbWF0aW9uLShkZWxheXxkaXJlY3Rpb258ZHVyYXRpb258ZmlsbC1tb2RlfGl0ZXJhdGlvbi1jb3VudHxuYW1lfHBsYXktc3RhdGV8dGltaW5nLWZ1bmN0aW9uKVxuXG4gICAgY2FzZSA1NzM3OlxuICAgIGNhc2UgNDIwMTpcbiAgICBjYXNlIDMxNzc6XG4gICAgY2FzZSAzNDMzOlxuICAgIGNhc2UgMTY0MTpcbiAgICBjYXNlIDQ0NTc6XG4gICAgY2FzZSAyOTIxOiAvLyB0ZXh0LWRlY29yYXRpb24sIGZpbHRlciwgY2xpcC1wYXRoLCBiYWNrZmFjZS12aXNpYmlsaXR5LCBjb2x1bW4sIGJveC1kZWNvcmF0aW9uLWJyZWFrXG5cbiAgICBjYXNlIDU1NzI6XG4gICAgY2FzZSA2MzU2OlxuICAgIGNhc2UgNTg0NDpcbiAgICBjYXNlIDMxOTE6XG4gICAgY2FzZSA2NjQ1OlxuICAgIGNhc2UgMzAwNTogLy8gbWFzaywgbWFzay1pbWFnZSwgbWFzay0obW9kZXxjbGlwfHNpemUpLCBtYXNrLShyZXBlYXR8b3JpZ2luKSwgbWFzay1wb3NpdGlvbiwgbWFzay1jb21wb3NpdGUsXG5cbiAgICBjYXNlIDYzOTE6XG4gICAgY2FzZSA1ODc5OlxuICAgIGNhc2UgNTYyMzpcbiAgICBjYXNlIDYxMzU6XG4gICAgY2FzZSA0NTk5OlxuICAgIGNhc2UgNDg1NTogLy8gYmFja2dyb3VuZC1jbGlwLCBjb2x1bW5zLCBjb2x1bW4tKGNvdW50fGZpbGx8Z2FwfHJ1bGV8cnVsZS1jb2xvcnxydWxlLXN0eWxlfHJ1bGUtd2lkdGh8c3Bhbnx3aWR0aClcblxuICAgIGNhc2UgNDIxNTpcbiAgICBjYXNlIDYzODk6XG4gICAgY2FzZSA1MTA5OlxuICAgIGNhc2UgNTM2NTpcbiAgICBjYXNlIDU2MjE6XG4gICAgY2FzZSAzODI5OlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgdmFsdWU7XG4gICAgLy8gYXBwZWFyYW5jZSwgdXNlci1zZWxlY3QsIHRyYW5zZm9ybSwgaHlwaGVucywgdGV4dC1zaXplLWFkanVzdFxuXG4gICAgY2FzZSA1MzQ5OlxuICAgIGNhc2UgNDI0NjpcbiAgICBjYXNlIDQ4MTA6XG4gICAgY2FzZSA2OTY4OlxuICAgIGNhc2UgMjc1NjpcbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1PWiArIHZhbHVlICsgTVMgKyB2YWx1ZSArIHZhbHVlO1xuICAgIC8vIGZsZXgsIGZsZXgtZGlyZWN0aW9uXG5cbiAgICBjYXNlIDY4Mjg6XG4gICAgY2FzZSA0MjY4OlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyB2YWx1ZSArIHZhbHVlO1xuICAgIC8vIG9yZGVyXG5cbiAgICBjYXNlIDYxNjU6XG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArICdmbGV4LScgKyB2YWx1ZSArIHZhbHVlO1xuICAgIC8vIGFsaWduLWl0ZW1zXG5cbiAgICBjYXNlIDUxODc6XG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyByZXBsYWNlKHZhbHVlLCAvKFxcdyspLisoOlteXSspLywgV0VCS0lUICsgJ2JveC0kMSQyJyArIE1TICsgJ2ZsZXgtJDEkMicpICsgdmFsdWU7XG4gICAgLy8gYWxpZ24tc2VsZlxuXG4gICAgY2FzZSA1NDQzOlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyAnZmxleC1pdGVtLScgKyByZXBsYWNlKHZhbHVlLCAvZmxleC18LXNlbGYvLCAnJykgKyB2YWx1ZTtcbiAgICAvLyBhbGlnbi1jb250ZW50XG5cbiAgICBjYXNlIDQ2NzU6XG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArICdmbGV4LWxpbmUtcGFjaycgKyByZXBsYWNlKHZhbHVlLCAvYWxpZ24tY29udGVudHxmbGV4LXwtc2VsZi8sICcnKSArIHZhbHVlO1xuICAgIC8vIGZsZXgtc2hyaW5rXG5cbiAgICBjYXNlIDU1NDg6XG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsICdzaHJpbmsnLCAnbmVnYXRpdmUnKSArIHZhbHVlO1xuICAgIC8vIGZsZXgtYmFzaXNcblxuICAgIGNhc2UgNTI5MjpcbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgJ2Jhc2lzJywgJ3ByZWZlcnJlZC1zaXplJykgKyB2YWx1ZTtcbiAgICAvLyBmbGV4LWdyb3dcblxuICAgIGNhc2UgNjA2MDpcbiAgICAgIHJldHVybiBXRUJLSVQgKyAnYm94LScgKyByZXBsYWNlKHZhbHVlLCAnLWdyb3cnLCAnJykgKyBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgJ2dyb3cnLCAncG9zaXRpdmUnKSArIHZhbHVlO1xuICAgIC8vIHRyYW5zaXRpb25cblxuICAgIGNhc2UgNDU1NDpcbiAgICAgIHJldHVybiBXRUJLSVQgKyByZXBsYWNlKHZhbHVlLCAvKFteLV0pKHRyYW5zZm9ybSkvZywgJyQxJyArIFdFQktJVCArICckMicpICsgdmFsdWU7XG4gICAgLy8gY3Vyc29yXG5cbiAgICBjYXNlIDYxODc6XG4gICAgICByZXR1cm4gcmVwbGFjZShyZXBsYWNlKHJlcGxhY2UodmFsdWUsIC8oem9vbS18Z3JhYikvLCBXRUJLSVQgKyAnJDEnKSwgLyhpbWFnZS1zZXQpLywgV0VCS0lUICsgJyQxJyksIHZhbHVlLCAnJykgKyB2YWx1ZTtcbiAgICAvLyBiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kLWltYWdlXG5cbiAgICBjYXNlIDU0OTU6XG4gICAgY2FzZSAzOTU5OlxuICAgICAgcmV0dXJuIHJlcGxhY2UodmFsdWUsIC8oaW1hZ2Utc2V0XFwoW15dKikvLCBXRUJLSVQgKyAnJDEnICsgJyRgJDEnKTtcbiAgICAvLyBqdXN0aWZ5LWNvbnRlbnRcblxuICAgIGNhc2UgNDk2ODpcbiAgICAgIHJldHVybiByZXBsYWNlKHJlcGxhY2UodmFsdWUsIC8oLis6KShmbGV4LSk/KC4qKS8sIFdFQktJVCArICdib3gtcGFjazokMycgKyBNUyArICdmbGV4LXBhY2s6JDMnKSwgL3MuKy1iW147XSsvLCAnanVzdGlmeScpICsgV0VCS0lUICsgdmFsdWUgKyB2YWx1ZTtcbiAgICAvLyAobWFyZ2lufHBhZGRpbmcpLWlubGluZS0oc3RhcnR8ZW5kKVxuXG4gICAgY2FzZSA0MDk1OlxuICAgIGNhc2UgMzU4MzpcbiAgICBjYXNlIDQwNjg6XG4gICAgY2FzZSAyNTMyOlxuICAgICAgcmV0dXJuIHJlcGxhY2UodmFsdWUsIC8oLispLWlubGluZSguKykvLCBXRUJLSVQgKyAnJDEkMicpICsgdmFsdWU7XG4gICAgLy8gKG1pbnxtYXgpPyh3aWR0aHxoZWlnaHR8aW5saW5lLXNpemV8YmxvY2stc2l6ZSlcblxuICAgIGNhc2UgODExNjpcbiAgICBjYXNlIDcwNTk6XG4gICAgY2FzZSA1NzUzOlxuICAgIGNhc2UgNTUzNTpcbiAgICBjYXNlIDU0NDU6XG4gICAgY2FzZSA1NzAxOlxuICAgIGNhc2UgNDkzMzpcbiAgICBjYXNlIDQ2Nzc6XG4gICAgY2FzZSA1NTMzOlxuICAgIGNhc2UgNTc4OTpcbiAgICBjYXNlIDUwMjE6XG4gICAgY2FzZSA0NzY1OlxuICAgICAgLy8gc3RyZXRjaCwgbWF4LWNvbnRlbnQsIG1pbi1jb250ZW50LCBmaWxsLWF2YWlsYWJsZVxuICAgICAgaWYgKHN0cmxlbih2YWx1ZSkgLSAxIC0gbGVuZ3RoID4gNikgc3dpdGNoIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDEpKSB7XG4gICAgICAgIC8vIChtKWF4LWNvbnRlbnQsIChtKWluLWNvbnRlbnRcbiAgICAgICAgY2FzZSAxMDk6XG4gICAgICAgICAgLy8gLVxuICAgICAgICAgIGlmIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDQpICE9PSA0NSkgYnJlYWs7XG4gICAgICAgIC8vIChmKWlsbC1hdmFpbGFibGUsIChmKWl0LWNvbnRlbnRcblxuICAgICAgICBjYXNlIDEwMjpcbiAgICAgICAgICByZXR1cm4gcmVwbGFjZSh2YWx1ZSwgLyguKzopKC4rKS0oW15dKykvLCAnJDEnICsgV0VCS0lUICsgJyQyLSQzJyArICckMScgKyBNT1ogKyAoY2hhcmF0KHZhbHVlLCBsZW5ndGggKyAzKSA9PSAxMDggPyAnJDMnIDogJyQyLSQzJykpICsgdmFsdWU7XG4gICAgICAgIC8vIChzKXRyZXRjaFxuXG4gICAgICAgIGNhc2UgMTE1OlxuICAgICAgICAgIHJldHVybiB+aW5kZXhvZih2YWx1ZSwgJ3N0cmV0Y2gnKSA/IHByZWZpeChyZXBsYWNlKHZhbHVlLCAnc3RyZXRjaCcsICdmaWxsLWF2YWlsYWJsZScpLCBsZW5ndGgpICsgdmFsdWUgOiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIC8vIHBvc2l0aW9uOiBzdGlja3lcblxuICAgIGNhc2UgNDk0OTpcbiAgICAgIC8vIChzKXRpY2t5P1xuICAgICAgaWYgKGNoYXJhdCh2YWx1ZSwgbGVuZ3RoICsgMSkgIT09IDExNSkgYnJlYWs7XG4gICAgLy8gZGlzcGxheTogKGZsZXh8aW5saW5lLWZsZXgpXG5cbiAgICBjYXNlIDY0NDQ6XG4gICAgICBzd2l0Y2ggKGNoYXJhdCh2YWx1ZSwgc3RybGVuKHZhbHVlKSAtIDMgLSAofmluZGV4b2YodmFsdWUsICchaW1wb3J0YW50JykgJiYgMTApKSkge1xuICAgICAgICAvLyBzdGljKGspeVxuICAgICAgICBjYXNlIDEwNzpcbiAgICAgICAgICByZXR1cm4gcmVwbGFjZSh2YWx1ZSwgJzonLCAnOicgKyBXRUJLSVQpICsgdmFsdWU7XG4gICAgICAgIC8vIChpbmxpbmUtKT9mbChlKXhcblxuICAgICAgICBjYXNlIDEwMTpcbiAgICAgICAgICByZXR1cm4gcmVwbGFjZSh2YWx1ZSwgLyguKzopKFteOyFdKykoO3whLispPy8sICckMScgKyBXRUJLSVQgKyAoY2hhcmF0KHZhbHVlLCAxNCkgPT09IDQ1ID8gJ2lubGluZS0nIDogJycpICsgJ2JveCQzJyArICckMScgKyBXRUJLSVQgKyAnJDIkMycgKyAnJDEnICsgTVMgKyAnJDJib3gkMycpICsgdmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuICAgIC8vIHdyaXRpbmctbW9kZVxuXG4gICAgY2FzZSA1OTM2OlxuICAgICAgc3dpdGNoIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDExKSkge1xuICAgICAgICAvLyB2ZXJ0aWNhbC1sKHIpXG4gICAgICAgIGNhc2UgMTE0OlxuICAgICAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgL1tzdmhdXFx3Ky1bdGJscl17Mn0vLCAndGInKSArIHZhbHVlO1xuICAgICAgICAvLyB2ZXJ0aWNhbC1yKGwpXG5cbiAgICAgICAgY2FzZSAxMDg6XG4gICAgICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAvW3N2aF1cXHcrLVt0YmxyXXsyfS8sICd0Yi1ybCcpICsgdmFsdWU7XG4gICAgICAgIC8vIGhvcml6b250YWwoLSl0YlxuXG4gICAgICAgIGNhc2UgNDU6XG4gICAgICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAvW3N2aF1cXHcrLVt0YmxyXXsyfS8sICdscicpICsgdmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgdmFsdWUgKyB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxudmFyIHByZWZpeGVyID0gZnVuY3Rpb24gcHJlZml4ZXIoZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykge1xuICBpZiAoZWxlbWVudC5sZW5ndGggPiAtMSkgaWYgKCFlbGVtZW50W1wicmV0dXJuXCJdKSBzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuICAgIGNhc2UgREVDTEFSQVRJT046XG4gICAgICBlbGVtZW50W1wicmV0dXJuXCJdID0gcHJlZml4KGVsZW1lbnQudmFsdWUsIGVsZW1lbnQubGVuZ3RoKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBLRVlGUkFNRVM6XG4gICAgICByZXR1cm4gc2VyaWFsaXplKFtjb3B5KGVsZW1lbnQsIHtcbiAgICAgICAgdmFsdWU6IHJlcGxhY2UoZWxlbWVudC52YWx1ZSwgJ0AnLCAnQCcgKyBXRUJLSVQpXG4gICAgICB9KV0sIGNhbGxiYWNrKTtcblxuICAgIGNhc2UgUlVMRVNFVDpcbiAgICAgIGlmIChlbGVtZW50Lmxlbmd0aCkgcmV0dXJuIGNvbWJpbmUoZWxlbWVudC5wcm9wcywgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHN3aXRjaCAobWF0Y2godmFsdWUsIC8oOjpwbGFjXFx3K3w6cmVhZC1cXHcrKS8pKSB7XG4gICAgICAgICAgLy8gOnJlYWQtKG9ubHl8d3JpdGUpXG4gICAgICAgICAgY2FzZSAnOnJlYWQtb25seSc6XG4gICAgICAgICAgY2FzZSAnOnJlYWQtd3JpdGUnOlxuICAgICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZShbY29weShlbGVtZW50LCB7XG4gICAgICAgICAgICAgIHByb3BzOiBbcmVwbGFjZSh2YWx1ZSwgLzoocmVhZC1cXHcrKS8sICc6JyArIE1PWiArICckMScpXVxuICAgICAgICAgICAgfSldLCBjYWxsYmFjayk7XG4gICAgICAgICAgLy8gOnBsYWNlaG9sZGVyXG5cbiAgICAgICAgICBjYXNlICc6OnBsYWNlaG9sZGVyJzpcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemUoW2NvcHkoZWxlbWVudCwge1xuICAgICAgICAgICAgICBwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHBsYWNcXHcrKS8sICc6JyArIFdFQktJVCArICdpbnB1dC0kMScpXVxuICAgICAgICAgICAgfSksIGNvcHkoZWxlbWVudCwge1xuICAgICAgICAgICAgICBwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHBsYWNcXHcrKS8sICc6JyArIE1PWiArICckMScpXVxuICAgICAgICAgICAgfSksIGNvcHkoZWxlbWVudCwge1xuICAgICAgICAgICAgICBwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHBsYWNcXHcrKS8sIE1TICsgJ2lucHV0LSQxJyldXG4gICAgICAgICAgICB9KV0sIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH0pO1xuICB9XG59O1xuXG52YXIgZGVmYXVsdFN0eWxpc1BsdWdpbnMgPSBbcHJlZml4ZXJdO1xuXG52YXIgY3JlYXRlQ2FjaGUgPSBmdW5jdGlvbiBjcmVhdGVDYWNoZShvcHRpb25zKSB7XG4gIHZhciBrZXkgPSBvcHRpb25zLmtleTtcblxuICBpZiAoa2V5ID09PSAnY3NzJykge1xuICAgIHZhciBzc3JTdHlsZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwic3R5bGVbZGF0YS1lbW90aW9uXTpub3QoW2RhdGEtc10pXCIpOyAvLyBnZXQgU1NSZWQgc3R5bGVzIG91dCBvZiB0aGUgd2F5IG9mIFJlYWN0J3MgaHlkcmF0aW9uXG4gICAgLy8gZG9jdW1lbnQuaGVhZCBpcyBhIHNhZmUgcGxhY2UgdG8gbW92ZSB0aGVtIHRvKHRob3VnaCBub3RlIGRvY3VtZW50LmhlYWQgaXMgbm90IG5lY2Vzc2FyaWx5IHRoZSBsYXN0IHBsYWNlIHRoZXkgd2lsbCBiZSlcbiAgICAvLyBub3RlIHRoaXMgdmVyeSB2ZXJ5IGludGVudGlvbmFsbHkgdGFyZ2V0cyBhbGwgc3R5bGUgZWxlbWVudHMgcmVnYXJkbGVzcyBvZiB0aGUga2V5IHRvIGVuc3VyZVxuICAgIC8vIHRoYXQgY3JlYXRpbmcgYSBjYWNoZSB3b3JrcyBpbnNpZGUgb2YgcmVuZGVyIG9mIGEgUmVhY3QgY29tcG9uZW50XG5cbiAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHNzclN0eWxlcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIC8vIHdlIHdhbnQgdG8gb25seSBtb3ZlIGVsZW1lbnRzIHdoaWNoIGhhdmUgYSBzcGFjZSBpbiB0aGUgZGF0YS1lbW90aW9uIGF0dHJpYnV0ZSB2YWx1ZVxuICAgICAgLy8gYmVjYXVzZSB0aGF0IGluZGljYXRlcyB0aGF0IGl0IGlzIGFuIEVtb3Rpb24gMTEgc2VydmVyLXNpZGUgcmVuZGVyZWQgc3R5bGUgZWxlbWVudHNcbiAgICAgIC8vIHdoaWxlIHdlIHdpbGwgYWxyZWFkeSBpZ25vcmUgRW1vdGlvbiAxMSBjbGllbnQtc2lkZSBpbnNlcnRlZCBzdHlsZXMgYmVjYXVzZSBvZiB0aGUgOm5vdChbZGF0YS1zXSkgcGFydCBpbiB0aGUgc2VsZWN0b3JcbiAgICAgIC8vIEVtb3Rpb24gMTAgY2xpZW50LXNpZGUgaW5zZXJ0ZWQgc3R5bGVzIGRpZCBub3QgaGF2ZSBkYXRhLXMgKGJ1dCBpbXBvcnRhbnRseSBkaWQgbm90IGhhdmUgYSBzcGFjZSBpbiB0aGVpciBkYXRhLWVtb3Rpb24gYXR0cmlidXRlcylcbiAgICAgIC8vIHNvIGNoZWNraW5nIGZvciB0aGUgc3BhY2UgZW5zdXJlcyB0aGF0IGxvYWRpbmcgRW1vdGlvbiAxMSBhZnRlciBFbW90aW9uIDEwIGhhcyBpbnNlcnRlZCBzb21lIHN0eWxlc1xuICAgICAgLy8gd2lsbCBub3QgcmVzdWx0IGluIHRoZSBFbW90aW9uIDEwIHN0eWxlcyBiZWluZyBkZXN0cm95ZWRcbiAgICAgIHZhciBkYXRhRW1vdGlvbkF0dHJpYnV0ZSA9IG5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLWVtb3Rpb24nKTtcblxuICAgICAgaWYgKGRhdGFFbW90aW9uQXR0cmlidXRlLmluZGV4T2YoJyAnKSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG5vZGUpO1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtcycsICcnKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBzdHlsaXNQbHVnaW5zID0gb3B0aW9ucy5zdHlsaXNQbHVnaW5zIHx8IGRlZmF1bHRTdHlsaXNQbHVnaW5zO1xuXG4gIHZhciBpbnNlcnRlZCA9IHt9O1xuICB2YXIgY29udGFpbmVyO1xuICB2YXIgbm9kZXNUb0h5ZHJhdGUgPSBbXTtcblxuICB7XG4gICAgY29udGFpbmVyID0gb3B0aW9ucy5jb250YWluZXIgfHwgZG9jdW1lbnQuaGVhZDtcbiAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKCAvLyB0aGlzIG1lYW5zIHdlIHdpbGwgaWdub3JlIGVsZW1lbnRzIHdoaWNoIGRvbid0IGhhdmUgYSBzcGFjZSBpbiB0aGVtIHdoaWNoXG4gICAgLy8gbWVhbnMgdGhhdCB0aGUgc3R5bGUgZWxlbWVudHMgd2UncmUgbG9va2luZyBhdCBhcmUgb25seSBFbW90aW9uIDExIHNlcnZlci1yZW5kZXJlZCBzdHlsZSBlbGVtZW50c1xuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJzdHlsZVtkYXRhLWVtb3Rpb25ePVxcXCJcIiArIGtleSArIFwiIFxcXCJdXCIpLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgdmFyIGF0dHJpYiA9IG5vZGUuZ2V0QXR0cmlidXRlKFwiZGF0YS1lbW90aW9uXCIpLnNwbGl0KCcgJyk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXR0cmliLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGluc2VydGVkW2F0dHJpYltpXV0gPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBub2Rlc1RvSHlkcmF0ZS5wdXNoKG5vZGUpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIF9pbnNlcnQ7XG5cbiAgdmFyIG9tbmlwcmVzZW50UGx1Z2lucyA9IFtjb21wYXQsIHJlbW92ZUxhYmVsXTtcblxuICB7XG4gICAgdmFyIGN1cnJlbnRTaGVldDtcbiAgICB2YXIgZmluYWxpemluZ1BsdWdpbnMgPSBbc3RyaW5naWZ5LCBydWxlc2hlZXQoZnVuY3Rpb24gKHJ1bGUpIHtcbiAgICAgIGN1cnJlbnRTaGVldC5pbnNlcnQocnVsZSk7XG4gICAgfSldO1xuICAgIHZhciBzZXJpYWxpemVyID0gbWlkZGxld2FyZShvbW5pcHJlc2VudFBsdWdpbnMuY29uY2F0KHN0eWxpc1BsdWdpbnMsIGZpbmFsaXppbmdQbHVnaW5zKSk7XG5cbiAgICB2YXIgc3R5bGlzID0gZnVuY3Rpb24gc3R5bGlzKHN0eWxlcykge1xuICAgICAgcmV0dXJuIHNlcmlhbGl6ZShjb21waWxlKHN0eWxlcyksIHNlcmlhbGl6ZXIpO1xuICAgIH07XG5cbiAgICBfaW5zZXJ0ID0gZnVuY3Rpb24gaW5zZXJ0KHNlbGVjdG9yLCBzZXJpYWxpemVkLCBzaGVldCwgc2hvdWxkQ2FjaGUpIHtcbiAgICAgIGN1cnJlbnRTaGVldCA9IHNoZWV0O1xuXG4gICAgICBzdHlsaXMoc2VsZWN0b3IgPyBzZWxlY3RvciArIFwie1wiICsgc2VyaWFsaXplZC5zdHlsZXMgKyBcIn1cIiA6IHNlcmlhbGl6ZWQuc3R5bGVzKTtcblxuICAgICAgaWYgKHNob3VsZENhY2hlKSB7XG4gICAgICAgIGNhY2hlLmluc2VydGVkW3NlcmlhbGl6ZWQubmFtZV0gPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICB2YXIgY2FjaGUgPSB7XG4gICAga2V5OiBrZXksXG4gICAgc2hlZXQ6IG5ldyBTdHlsZVNoZWV0KHtcbiAgICAgIGtleToga2V5LFxuICAgICAgY29udGFpbmVyOiBjb250YWluZXIsXG4gICAgICBub25jZTogb3B0aW9ucy5ub25jZSxcbiAgICAgIHNwZWVkeTogb3B0aW9ucy5zcGVlZHksXG4gICAgICBwcmVwZW5kOiBvcHRpb25zLnByZXBlbmQsXG4gICAgICBpbnNlcnRpb25Qb2ludDogb3B0aW9ucy5pbnNlcnRpb25Qb2ludFxuICAgIH0pLFxuICAgIG5vbmNlOiBvcHRpb25zLm5vbmNlLFxuICAgIGluc2VydGVkOiBpbnNlcnRlZCxcbiAgICByZWdpc3RlcmVkOiB7fSxcbiAgICBpbnNlcnQ6IF9pbnNlcnRcbiAgfTtcbiAgY2FjaGUuc2hlZXQuaHlkcmF0ZShub2Rlc1RvSHlkcmF0ZSk7XG4gIHJldHVybiBjYWNoZTtcbn07XG5cbmV4cG9ydCB7IGNyZWF0ZUNhY2hlIGFzIGRlZmF1bHQgfTtcbiIsIi8qKiBAbGljZW5zZSBSZWFjdCB2MTYuMTMuMVxuICogcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7dmFyIGI9XCJmdW5jdGlvblwiPT09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcixjPWI/U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIik6NjAxMDMsZD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIik6NjAxMDYsZT1iP1N5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKTo2MDEwNyxmPWI/U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpOjYwMTA4LGc9Yj9TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIik6NjAxMTQsaD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKTo2MDEwOSxrPWI/U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIik6NjAxMTAsbD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5hc3luY19tb2RlXCIpOjYwMTExLG09Yj9TeW1ib2wuZm9yKFwicmVhY3QuY29uY3VycmVudF9tb2RlXCIpOjYwMTExLG49Yj9TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIik6NjAxMTIscD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKTo2MDExMyxxPWI/XG5TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VfbGlzdFwiKTo2MDEyMCxyPWI/U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIik6NjAxMTUsdD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpOjYwMTE2LHY9Yj9TeW1ib2wuZm9yKFwicmVhY3QuYmxvY2tcIik6NjAxMjEsdz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5mdW5kYW1lbnRhbFwiKTo2MDExNyx4PWI/U3ltYm9sLmZvcihcInJlYWN0LnJlc3BvbmRlclwiKTo2MDExOCx5PWI/U3ltYm9sLmZvcihcInJlYWN0LnNjb3BlXCIpOjYwMTE5O1xuZnVuY3Rpb24geihhKXtpZihcIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hKXt2YXIgdT1hLiQkdHlwZW9mO3N3aXRjaCh1KXtjYXNlIGM6c3dpdGNoKGE9YS50eXBlLGEpe2Nhc2UgbDpjYXNlIG06Y2FzZSBlOmNhc2UgZzpjYXNlIGY6Y2FzZSBwOnJldHVybiBhO2RlZmF1bHQ6c3dpdGNoKGE9YSYmYS4kJHR5cGVvZixhKXtjYXNlIGs6Y2FzZSBuOmNhc2UgdDpjYXNlIHI6Y2FzZSBoOnJldHVybiBhO2RlZmF1bHQ6cmV0dXJuIHV9fWNhc2UgZDpyZXR1cm4gdX19fWZ1bmN0aW9uIEEoYSl7cmV0dXJuIHooYSk9PT1tfWV4cG9ydHMuQXN5bmNNb2RlPWw7ZXhwb3J0cy5Db25jdXJyZW50TW9kZT1tO2V4cG9ydHMuQ29udGV4dENvbnN1bWVyPWs7ZXhwb3J0cy5Db250ZXh0UHJvdmlkZXI9aDtleHBvcnRzLkVsZW1lbnQ9YztleHBvcnRzLkZvcndhcmRSZWY9bjtleHBvcnRzLkZyYWdtZW50PWU7ZXhwb3J0cy5MYXp5PXQ7ZXhwb3J0cy5NZW1vPXI7ZXhwb3J0cy5Qb3J0YWw9ZDtcbmV4cG9ydHMuUHJvZmlsZXI9ZztleHBvcnRzLlN0cmljdE1vZGU9ZjtleHBvcnRzLlN1c3BlbnNlPXA7ZXhwb3J0cy5pc0FzeW5jTW9kZT1mdW5jdGlvbihhKXtyZXR1cm4gQShhKXx8eihhKT09PWx9O2V4cG9ydHMuaXNDb25jdXJyZW50TW9kZT1BO2V4cG9ydHMuaXNDb250ZXh0Q29uc3VtZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1rfTtleHBvcnRzLmlzQ29udGV4dFByb3ZpZGVyPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09aH07ZXhwb3J0cy5pc0VsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmYS4kJHR5cGVvZj09PWN9O2V4cG9ydHMuaXNGb3J3YXJkUmVmPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09bn07ZXhwb3J0cy5pc0ZyYWdtZW50PWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09ZX07ZXhwb3J0cy5pc0xhenk9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT10fTtcbmV4cG9ydHMuaXNNZW1vPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09cn07ZXhwb3J0cy5pc1BvcnRhbD1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWR9O2V4cG9ydHMuaXNQcm9maWxlcj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWd9O2V4cG9ydHMuaXNTdHJpY3RNb2RlPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09Zn07ZXhwb3J0cy5pc1N1c3BlbnNlPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09cH07XG5leHBvcnRzLmlzVmFsaWRFbGVtZW50VHlwZT1mdW5jdGlvbihhKXtyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGF8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhfHxhPT09ZXx8YT09PW18fGE9PT1nfHxhPT09Znx8YT09PXB8fGE9PT1xfHxcIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiYoYS4kJHR5cGVvZj09PXR8fGEuJCR0eXBlb2Y9PT1yfHxhLiQkdHlwZW9mPT09aHx8YS4kJHR5cGVvZj09PWt8fGEuJCR0eXBlb2Y9PT1ufHxhLiQkdHlwZW9mPT09d3x8YS4kJHR5cGVvZj09PXh8fGEuJCR0eXBlb2Y9PT15fHxhLiQkdHlwZW9mPT09dil9O2V4cG9ydHMudHlwZU9mPXo7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4vKipcbiAqIENvcHlyaWdodCAyMDE1LCBZYWhvbyEgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG52YXIgUkVBQ1RfU1RBVElDUyA9IHtcbiAgY2hpbGRDb250ZXh0VHlwZXM6IHRydWUsXG4gIGNvbnRleHRUeXBlOiB0cnVlLFxuICBjb250ZXh0VHlwZXM6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIGdldERlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yOiB0cnVlLFxuICBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM6IHRydWUsXG4gIG1peGluczogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlLFxuICB0eXBlOiB0cnVlXG59O1xudmFyIEtOT1dOX1NUQVRJQ1MgPSB7XG4gIG5hbWU6IHRydWUsXG4gIGxlbmd0aDogdHJ1ZSxcbiAgcHJvdG90eXBlOiB0cnVlLFxuICBjYWxsZXI6IHRydWUsXG4gIGNhbGxlZTogdHJ1ZSxcbiAgYXJndW1lbnRzOiB0cnVlLFxuICBhcml0eTogdHJ1ZVxufTtcbnZhciBGT1JXQVJEX1JFRl9TVEFUSUNTID0ge1xuICAnJCR0eXBlb2YnOiB0cnVlLFxuICByZW5kZXI6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZVxufTtcbnZhciBNRU1PX1NUQVRJQ1MgPSB7XG4gICckJHR5cGVvZic6IHRydWUsXG4gIGNvbXBhcmU6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZSxcbiAgdHlwZTogdHJ1ZVxufTtcbnZhciBUWVBFX1NUQVRJQ1MgPSB7fTtcblRZUEVfU1RBVElDU1tyZWFjdElzLkZvcndhcmRSZWZdID0gRk9SV0FSRF9SRUZfU1RBVElDUztcblRZUEVfU1RBVElDU1tyZWFjdElzLk1lbW9dID0gTUVNT19TVEFUSUNTO1xuXG5mdW5jdGlvbiBnZXRTdGF0aWNzKGNvbXBvbmVudCkge1xuICAvLyBSZWFjdCB2MTYuMTEgYW5kIGJlbG93XG4gIGlmIChyZWFjdElzLmlzTWVtbyhjb21wb25lbnQpKSB7XG4gICAgcmV0dXJuIE1FTU9fU1RBVElDUztcbiAgfSAvLyBSZWFjdCB2MTYuMTIgYW5kIGFib3ZlXG5cblxuICByZXR1cm4gVFlQRV9TVEFUSUNTW2NvbXBvbmVudFsnJCR0eXBlb2YnXV0gfHwgUkVBQ1RfU1RBVElDUztcbn1cblxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIGdldE93blByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcztcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG52YXIgb2JqZWN0UHJvdG90eXBlID0gT2JqZWN0LnByb3RvdHlwZTtcbmZ1bmN0aW9uIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKHRhcmdldENvbXBvbmVudCwgc291cmNlQ29tcG9uZW50LCBibGFja2xpc3QpIHtcbiAgaWYgKHR5cGVvZiBzb3VyY2VDb21wb25lbnQgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgaG9pc3Qgb3ZlciBzdHJpbmcgKGh0bWwpIGNvbXBvbmVudHNcbiAgICBpZiAob2JqZWN0UHJvdG90eXBlKSB7XG4gICAgICB2YXIgaW5oZXJpdGVkQ29tcG9uZW50ID0gZ2V0UHJvdG90eXBlT2Yoc291cmNlQ29tcG9uZW50KTtcblxuICAgICAgaWYgKGluaGVyaXRlZENvbXBvbmVudCAmJiBpbmhlcml0ZWRDb21wb25lbnQgIT09IG9iamVjdFByb3RvdHlwZSkge1xuICAgICAgICBob2lzdE5vblJlYWN0U3RhdGljcyh0YXJnZXRDb21wb25lbnQsIGluaGVyaXRlZENvbXBvbmVudCwgYmxhY2tsaXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXMoc291cmNlQ29tcG9uZW50KTtcblxuICAgIGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICAgIGtleXMgPSBrZXlzLmNvbmNhdChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlQ29tcG9uZW50KSk7XG4gICAgfVxuXG4gICAgdmFyIHRhcmdldFN0YXRpY3MgPSBnZXRTdGF0aWNzKHRhcmdldENvbXBvbmVudCk7XG4gICAgdmFyIHNvdXJjZVN0YXRpY3MgPSBnZXRTdGF0aWNzKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuXG4gICAgICBpZiAoIUtOT1dOX1NUQVRJQ1Nba2V5XSAmJiAhKGJsYWNrbGlzdCAmJiBibGFja2xpc3Rba2V5XSkgJiYgIShzb3VyY2VTdGF0aWNzICYmIHNvdXJjZVN0YXRpY3Nba2V5XSkgJiYgISh0YXJnZXRTdGF0aWNzICYmIHRhcmdldFN0YXRpY3Nba2V5XSkpIHtcbiAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlQ29tcG9uZW50LCBrZXkpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gQXZvaWQgZmFpbHVyZXMgZnJvbSByZWFkLW9ubHkgcHJvcGVydGllc1xuICAgICAgICAgIGRlZmluZVByb3BlcnR5KHRhcmdldENvbXBvbmVudCwga2V5LCBkZXNjcmlwdG9yKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0Q29tcG9uZW50O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhvaXN0Tm9uUmVhY3RTdGF0aWNzO1xuIiwiaW1wb3J0IGhvaXN0Tm9uUmVhY3RTdGF0aWNzJDEgZnJvbSAnaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MnO1xuXG4vLyB0aGlzIGZpbGUgaXNvbGF0ZXMgdGhpcyBwYWNrYWdlIHRoYXQgaXMgbm90IHRyZWUtc2hha2VhYmxlXG4vLyBhbmQgaWYgdGhpcyBtb2R1bGUgZG9lc24ndCBhY3R1YWxseSBjb250YWluIGFueSBsb2dpYyBvZiBpdHMgb3duXG4vLyB0aGVuIFJvbGx1cCBqdXN0IHVzZSAnaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MnIGRpcmVjdGx5IGluIG90aGVyIGNodW5rc1xuXG52YXIgaG9pc3ROb25SZWFjdFN0YXRpY3MgPSAoZnVuY3Rpb24gKHRhcmdldENvbXBvbmVudCwgc291cmNlQ29tcG9uZW50KSB7XG4gIHJldHVybiBob2lzdE5vblJlYWN0U3RhdGljcyQxKHRhcmdldENvbXBvbmVudCwgc291cmNlQ29tcG9uZW50KTtcbn0pO1xuXG5leHBvcnQgeyBob2lzdE5vblJlYWN0U3RhdGljcyBhcyBkZWZhdWx0IH07XG4iLCJ2YXIgaXNCcm93c2VyID0gdHJ1ZTtcblxuZnVuY3Rpb24gZ2V0UmVnaXN0ZXJlZFN0eWxlcyhyZWdpc3RlcmVkLCByZWdpc3RlcmVkU3R5bGVzLCBjbGFzc05hbWVzKSB7XG4gIHZhciByYXdDbGFzc05hbWUgPSAnJztcbiAgY2xhc3NOYW1lcy5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rpb24gKGNsYXNzTmFtZSkge1xuICAgIGlmIChyZWdpc3RlcmVkW2NsYXNzTmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVnaXN0ZXJlZFN0eWxlcy5wdXNoKHJlZ2lzdGVyZWRbY2xhc3NOYW1lXSArIFwiO1wiKTtcbiAgICB9IGVsc2UgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgcmF3Q2xhc3NOYW1lICs9IGNsYXNzTmFtZSArIFwiIFwiO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByYXdDbGFzc05hbWU7XG59XG52YXIgcmVnaXN0ZXJTdHlsZXMgPSBmdW5jdGlvbiByZWdpc3RlclN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgaXNTdHJpbmdUYWcpIHtcbiAgdmFyIGNsYXNzTmFtZSA9IGNhY2hlLmtleSArIFwiLVwiICsgc2VyaWFsaXplZC5uYW1lO1xuXG4gIGlmICggLy8gd2Ugb25seSBuZWVkIHRvIGFkZCB0aGUgc3R5bGVzIHRvIHRoZSByZWdpc3RlcmVkIGNhY2hlIGlmIHRoZVxuICAvLyBjbGFzcyBuYW1lIGNvdWxkIGJlIHVzZWQgZnVydGhlciBkb3duXG4gIC8vIHRoZSB0cmVlIGJ1dCBpZiBpdCdzIGEgc3RyaW5nIHRhZywgd2Uga25vdyBpdCB3b24ndFxuICAvLyBzbyB3ZSBkb24ndCBoYXZlIHRvIGFkZCBpdCB0byByZWdpc3RlcmVkIGNhY2hlLlxuICAvLyB0aGlzIGltcHJvdmVzIG1lbW9yeSB1c2FnZSBzaW5jZSB3ZSBjYW4gYXZvaWQgc3RvcmluZyB0aGUgd2hvbGUgc3R5bGUgc3RyaW5nXG4gIChpc1N0cmluZ1RhZyA9PT0gZmFsc2UgfHwgLy8gd2UgbmVlZCB0byBhbHdheXMgc3RvcmUgaXQgaWYgd2UncmUgaW4gY29tcGF0IG1vZGUgYW5kXG4gIC8vIGluIG5vZGUgc2luY2UgZW1vdGlvbi1zZXJ2ZXIgcmVsaWVzIG9uIHdoZXRoZXIgYSBzdHlsZSBpcyBpblxuICAvLyB0aGUgcmVnaXN0ZXJlZCBjYWNoZSB0byBrbm93IHdoZXRoZXIgYSBzdHlsZSBpcyBnbG9iYWwgb3Igbm90XG4gIC8vIGFsc28sIG5vdGUgdGhhdCB0aGlzIGNoZWNrIHdpbGwgYmUgZGVhZCBjb2RlIGVsaW1pbmF0ZWQgaW4gdGhlIGJyb3dzZXJcbiAgaXNCcm93c2VyID09PSBmYWxzZSApICYmIGNhY2hlLnJlZ2lzdGVyZWRbY2xhc3NOYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY2FjaGUucmVnaXN0ZXJlZFtjbGFzc05hbWVdID0gc2VyaWFsaXplZC5zdHlsZXM7XG4gIH1cbn07XG52YXIgaW5zZXJ0U3R5bGVzID0gZnVuY3Rpb24gaW5zZXJ0U3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLCBpc1N0cmluZ1RhZykge1xuICByZWdpc3RlclN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgaXNTdHJpbmdUYWcpO1xuICB2YXIgY2xhc3NOYW1lID0gY2FjaGUua2V5ICsgXCItXCIgKyBzZXJpYWxpemVkLm5hbWU7XG5cbiAgaWYgKGNhY2hlLmluc2VydGVkW3NlcmlhbGl6ZWQubmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBjdXJyZW50ID0gc2VyaWFsaXplZDtcblxuICAgIGRvIHtcbiAgICAgIGNhY2hlLmluc2VydChzZXJpYWxpemVkID09PSBjdXJyZW50ID8gXCIuXCIgKyBjbGFzc05hbWUgOiAnJywgY3VycmVudCwgY2FjaGUuc2hlZXQsIHRydWUpO1xuXG4gICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICAgIH0gd2hpbGUgKGN1cnJlbnQgIT09IHVuZGVmaW5lZCk7XG4gIH1cbn07XG5cbmV4cG9ydCB7IGdldFJlZ2lzdGVyZWRTdHlsZXMsIGluc2VydFN0eWxlcywgcmVnaXN0ZXJTdHlsZXMgfTtcbiIsIi8qIGVzbGludC1kaXNhYmxlICovXG4vLyBJbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vZ2FyeWNvdXJ0L211cm11cmhhc2gtanNcbi8vIFBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hYXBwbGVieS9zbWhhc2hlci9ibG9iLzYxYTA1MzBmMjgyNzdmMmU4NTBiZmMzOTYwMGNlNjFkMDJiNTE4ZGUvc3JjL011cm11ckhhc2gyLmNwcCNMMzctTDg2XG5mdW5jdGlvbiBtdXJtdXIyKHN0cikge1xuICAvLyAnbScgYW5kICdyJyBhcmUgbWl4aW5nIGNvbnN0YW50cyBnZW5lcmF0ZWQgb2ZmbGluZS5cbiAgLy8gVGhleSdyZSBub3QgcmVhbGx5ICdtYWdpYycsIHRoZXkganVzdCBoYXBwZW4gdG8gd29yayB3ZWxsLlxuICAvLyBjb25zdCBtID0gMHg1YmQxZTk5NTtcbiAgLy8gY29uc3QgciA9IDI0O1xuICAvLyBJbml0aWFsaXplIHRoZSBoYXNoXG4gIHZhciBoID0gMDsgLy8gTWl4IDQgYnl0ZXMgYXQgYSB0aW1lIGludG8gdGhlIGhhc2hcblxuICB2YXIgayxcbiAgICAgIGkgPSAwLFxuICAgICAgbGVuID0gc3RyLmxlbmd0aDtcblxuICBmb3IgKDsgbGVuID49IDQ7ICsraSwgbGVuIC09IDQpIHtcbiAgICBrID0gc3RyLmNoYXJDb2RlQXQoaSkgJiAweGZmIHwgKHN0ci5jaGFyQ29kZUF0KCsraSkgJiAweGZmKSA8PCA4IHwgKHN0ci5jaGFyQ29kZUF0KCsraSkgJiAweGZmKSA8PCAxNiB8IChzdHIuY2hhckNvZGVBdCgrK2kpICYgMHhmZikgPDwgMjQ7XG4gICAgayA9XG4gICAgLyogTWF0aC5pbXVsKGssIG0pOiAqL1xuICAgIChrICYgMHhmZmZmKSAqIDB4NWJkMWU5OTUgKyAoKGsgPj4+IDE2KSAqIDB4ZTk5NSA8PCAxNik7XG4gICAgayBePVxuICAgIC8qIGsgPj4+IHI6ICovXG4gICAgayA+Pj4gMjQ7XG4gICAgaCA9XG4gICAgLyogTWF0aC5pbXVsKGssIG0pOiAqL1xuICAgIChrICYgMHhmZmZmKSAqIDB4NWJkMWU5OTUgKyAoKGsgPj4+IDE2KSAqIDB4ZTk5NSA8PCAxNikgXlxuICAgIC8qIE1hdGguaW11bChoLCBtKTogKi9cbiAgICAoaCAmIDB4ZmZmZikgKiAweDViZDFlOTk1ICsgKChoID4+PiAxNikgKiAweGU5OTUgPDwgMTYpO1xuICB9IC8vIEhhbmRsZSB0aGUgbGFzdCBmZXcgYnl0ZXMgb2YgdGhlIGlucHV0IGFycmF5XG5cblxuICBzd2l0Y2ggKGxlbikge1xuICAgIGNhc2UgMzpcbiAgICAgIGggXj0gKHN0ci5jaGFyQ29kZUF0KGkgKyAyKSAmIDB4ZmYpIDw8IDE2O1xuXG4gICAgY2FzZSAyOlxuICAgICAgaCBePSAoc3RyLmNoYXJDb2RlQXQoaSArIDEpICYgMHhmZikgPDwgODtcblxuICAgIGNhc2UgMTpcbiAgICAgIGggXj0gc3RyLmNoYXJDb2RlQXQoaSkgJiAweGZmO1xuICAgICAgaCA9XG4gICAgICAvKiBNYXRoLmltdWwoaCwgbSk6ICovXG4gICAgICAoaCAmIDB4ZmZmZikgKiAweDViZDFlOTk1ICsgKChoID4+PiAxNikgKiAweGU5OTUgPDwgMTYpO1xuICB9IC8vIERvIGEgZmV3IGZpbmFsIG1peGVzIG9mIHRoZSBoYXNoIHRvIGVuc3VyZSB0aGUgbGFzdCBmZXdcbiAgLy8gYnl0ZXMgYXJlIHdlbGwtaW5jb3Jwb3JhdGVkLlxuXG5cbiAgaCBePSBoID4+PiAxMztcbiAgaCA9XG4gIC8qIE1hdGguaW11bChoLCBtKTogKi9cbiAgKGggJiAweGZmZmYpICogMHg1YmQxZTk5NSArICgoaCA+Pj4gMTYpICogMHhlOTk1IDw8IDE2KTtcbiAgcmV0dXJuICgoaCBeIGggPj4+IDE1KSA+Pj4gMCkudG9TdHJpbmcoMzYpO1xufVxuXG5leHBvcnQgeyBtdXJtdXIyIGFzIGRlZmF1bHQgfTtcbiIsInZhciB1bml0bGVzc0tleXMgPSB7XG4gIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiAxLFxuICBhc3BlY3RSYXRpbzogMSxcbiAgYm9yZGVySW1hZ2VPdXRzZXQ6IDEsXG4gIGJvcmRlckltYWdlU2xpY2U6IDEsXG4gIGJvcmRlckltYWdlV2lkdGg6IDEsXG4gIGJveEZsZXg6IDEsXG4gIGJveEZsZXhHcm91cDogMSxcbiAgYm94T3JkaW5hbEdyb3VwOiAxLFxuICBjb2x1bW5Db3VudDogMSxcbiAgY29sdW1uczogMSxcbiAgZmxleDogMSxcbiAgZmxleEdyb3c6IDEsXG4gIGZsZXhQb3NpdGl2ZTogMSxcbiAgZmxleFNocmluazogMSxcbiAgZmxleE5lZ2F0aXZlOiAxLFxuICBmbGV4T3JkZXI6IDEsXG4gIGdyaWRSb3c6IDEsXG4gIGdyaWRSb3dFbmQ6IDEsXG4gIGdyaWRSb3dTcGFuOiAxLFxuICBncmlkUm93U3RhcnQ6IDEsXG4gIGdyaWRDb2x1bW46IDEsXG4gIGdyaWRDb2x1bW5FbmQ6IDEsXG4gIGdyaWRDb2x1bW5TcGFuOiAxLFxuICBncmlkQ29sdW1uU3RhcnQ6IDEsXG4gIG1zR3JpZFJvdzogMSxcbiAgbXNHcmlkUm93U3BhbjogMSxcbiAgbXNHcmlkQ29sdW1uOiAxLFxuICBtc0dyaWRDb2x1bW5TcGFuOiAxLFxuICBmb250V2VpZ2h0OiAxLFxuICBsaW5lSGVpZ2h0OiAxLFxuICBvcGFjaXR5OiAxLFxuICBvcmRlcjogMSxcbiAgb3JwaGFuczogMSxcbiAgc2NhbGU6IDEsXG4gIHRhYlNpemU6IDEsXG4gIHdpZG93czogMSxcbiAgekluZGV4OiAxLFxuICB6b29tOiAxLFxuICBXZWJraXRMaW5lQ2xhbXA6IDEsXG4gIC8vIFNWRy1yZWxhdGVkIHByb3BlcnRpZXNcbiAgZmlsbE9wYWNpdHk6IDEsXG4gIGZsb29kT3BhY2l0eTogMSxcbiAgc3RvcE9wYWNpdHk6IDEsXG4gIHN0cm9rZURhc2hhcnJheTogMSxcbiAgc3Ryb2tlRGFzaG9mZnNldDogMSxcbiAgc3Ryb2tlTWl0ZXJsaW1pdDogMSxcbiAgc3Ryb2tlT3BhY2l0eTogMSxcbiAgc3Ryb2tlV2lkdGg6IDFcbn07XG5cbmV4cG9ydCB7IHVuaXRsZXNzS2V5cyBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgaGFzaFN0cmluZyBmcm9tICdAZW1vdGlvbi9oYXNoJztcbmltcG9ydCB1bml0bGVzcyBmcm9tICdAZW1vdGlvbi91bml0bGVzcyc7XG5pbXBvcnQgbWVtb2l6ZSBmcm9tICdAZW1vdGlvbi9tZW1vaXplJztcblxudmFyIGlzRGV2ZWxvcG1lbnQgPSBmYWxzZTtcblxudmFyIGh5cGhlbmF0ZVJlZ2V4ID0gL1tBLVpdfF5tcy9nO1xudmFyIGFuaW1hdGlvblJlZ2V4ID0gL19FTU9fKFteX10rPylfKFteXSo/KV9FTU9fL2c7XG5cbnZhciBpc0N1c3RvbVByb3BlcnR5ID0gZnVuY3Rpb24gaXNDdXN0b21Qcm9wZXJ0eShwcm9wZXJ0eSkge1xuICByZXR1cm4gcHJvcGVydHkuY2hhckNvZGVBdCgxKSA9PT0gNDU7XG59O1xuXG52YXIgaXNQcm9jZXNzYWJsZVZhbHVlID0gZnVuY3Rpb24gaXNQcm9jZXNzYWJsZVZhbHVlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nO1xufTtcblxudmFyIHByb2Nlc3NTdHlsZU5hbWUgPSAvKiAjX19QVVJFX18gKi9tZW1vaXplKGZ1bmN0aW9uIChzdHlsZU5hbWUpIHtcbiAgcmV0dXJuIGlzQ3VzdG9tUHJvcGVydHkoc3R5bGVOYW1lKSA/IHN0eWxlTmFtZSA6IHN0eWxlTmFtZS5yZXBsYWNlKGh5cGhlbmF0ZVJlZ2V4LCAnLSQmJykudG9Mb3dlckNhc2UoKTtcbn0pO1xuXG52YXIgcHJvY2Vzc1N0eWxlVmFsdWUgPSBmdW5jdGlvbiBwcm9jZXNzU3R5bGVWYWx1ZShrZXksIHZhbHVlKSB7XG4gIHN3aXRjaCAoa2V5KSB7XG4gICAgY2FzZSAnYW5pbWF0aW9uJzpcbiAgICBjYXNlICdhbmltYXRpb25OYW1lJzpcbiAgICAgIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWUucmVwbGFjZShhbmltYXRpb25SZWdleCwgZnVuY3Rpb24gKG1hdGNoLCBwMSwgcDIpIHtcbiAgICAgICAgICAgIGN1cnNvciA9IHtcbiAgICAgICAgICAgICAgbmFtZTogcDEsXG4gICAgICAgICAgICAgIHN0eWxlczogcDIsXG4gICAgICAgICAgICAgIG5leHQ6IGN1cnNvclxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBwMTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICB9XG5cbiAgaWYgKHVuaXRsZXNzW2tleV0gIT09IDEgJiYgIWlzQ3VzdG9tUHJvcGVydHkoa2V5KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIHZhbHVlICE9PSAwKSB7XG4gICAgcmV0dXJuIHZhbHVlICsgJ3B4JztcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbnZhciBub0NvbXBvbmVudFNlbGVjdG9yTWVzc2FnZSA9ICdDb21wb25lbnQgc2VsZWN0b3JzIGNhbiBvbmx5IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCAnICsgJ0BlbW90aW9uL2JhYmVsLXBsdWdpbiwgdGhlIHN3YyBFbW90aW9uIHBsdWdpbiwgb3IgYW5vdGhlciBFbW90aW9uLWF3YXJlICcgKyAnY29tcGlsZXIgdHJhbnNmb3JtLic7XG5cbmZ1bmN0aW9uIGhhbmRsZUludGVycG9sYXRpb24obWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIGludGVycG9sYXRpb24pIHtcbiAgaWYgKGludGVycG9sYXRpb24gPT0gbnVsbCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHZhciBjb21wb25lbnRTZWxlY3RvciA9IGludGVycG9sYXRpb247XG5cbiAgaWYgKGNvbXBvbmVudFNlbGVjdG9yLl9fZW1vdGlvbl9zdHlsZXMgIT09IHVuZGVmaW5lZCkge1xuXG4gICAgcmV0dXJuIGNvbXBvbmVudFNlbGVjdG9yO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlb2YgaW50ZXJwb2xhdGlvbikge1xuICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG5cbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAge1xuICAgICAgICB2YXIga2V5ZnJhbWVzID0gaW50ZXJwb2xhdGlvbjtcblxuICAgICAgICBpZiAoa2V5ZnJhbWVzLmFuaW0gPT09IDEpIHtcbiAgICAgICAgICBjdXJzb3IgPSB7XG4gICAgICAgICAgICBuYW1lOiBrZXlmcmFtZXMubmFtZSxcbiAgICAgICAgICAgIHN0eWxlczoga2V5ZnJhbWVzLnN0eWxlcyxcbiAgICAgICAgICAgIG5leHQ6IGN1cnNvclxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIGtleWZyYW1lcy5uYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNlcmlhbGl6ZWRTdHlsZXMgPSBpbnRlcnBvbGF0aW9uO1xuXG4gICAgICAgIGlmIChzZXJpYWxpemVkU3R5bGVzLnN0eWxlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdmFyIG5leHQgPSBzZXJpYWxpemVkU3R5bGVzLm5leHQ7XG5cbiAgICAgICAgICBpZiAobmV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBub3QgdGhlIG1vc3QgZWZmaWNpZW50IHRoaW5nIGV2ZXIgYnV0IHRoaXMgaXMgYSBwcmV0dHkgcmFyZSBjYXNlXG4gICAgICAgICAgICAvLyBhbmQgdGhlcmUgd2lsbCBiZSB2ZXJ5IGZldyBpdGVyYXRpb25zIG9mIHRoaXMgZ2VuZXJhbGx5XG4gICAgICAgICAgICB3aGlsZSAobmV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGN1cnNvciA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBuZXh0Lm5hbWUsXG4gICAgICAgICAgICAgICAgc3R5bGVzOiBuZXh0LnN0eWxlcyxcbiAgICAgICAgICAgICAgICBuZXh0OiBjdXJzb3JcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgbmV4dCA9IG5leHQubmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgc3R5bGVzID0gc2VyaWFsaXplZFN0eWxlcy5zdHlsZXMgKyBcIjtcIjtcbiAgICAgICAgICByZXR1cm4gc3R5bGVzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNyZWF0ZVN0cmluZ0Zyb21PYmplY3QobWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIGludGVycG9sYXRpb24pO1xuICAgICAgfVxuXG4gICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAge1xuICAgICAgICBpZiAobWVyZ2VkUHJvcHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHZhciBwcmV2aW91c0N1cnNvciA9IGN1cnNvcjtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gaW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcyk7XG4gICAgICAgICAgY3Vyc29yID0gcHJldmlvdXNDdXJzb3I7XG4gICAgICAgICAgcmV0dXJuIGhhbmRsZUludGVycG9sYXRpb24obWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIHJlc3VsdCk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgfSAvLyBmaW5hbGl6ZSBzdHJpbmcgdmFsdWVzIChyZWd1bGFyIHN0cmluZ3MgYW5kIGZ1bmN0aW9ucyBpbnRlcnBvbGF0ZWQgaW50byBjc3MgY2FsbHMpXG5cblxuICB2YXIgYXNTdHJpbmcgPSBpbnRlcnBvbGF0aW9uO1xuXG4gIGlmIChyZWdpc3RlcmVkID09IG51bGwpIHtcbiAgICByZXR1cm4gYXNTdHJpbmc7XG4gIH1cblxuICB2YXIgY2FjaGVkID0gcmVnaXN0ZXJlZFthc1N0cmluZ107XG4gIHJldHVybiBjYWNoZWQgIT09IHVuZGVmaW5lZCA/IGNhY2hlZCA6IGFzU3RyaW5nO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTdHJpbmdGcm9tT2JqZWN0KG1lcmdlZFByb3BzLCByZWdpc3RlcmVkLCBvYmopIHtcbiAgdmFyIHN0cmluZyA9ICcnO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkrKykge1xuICAgICAgc3RyaW5nICs9IGhhbmRsZUludGVycG9sYXRpb24obWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIG9ialtpXSkgKyBcIjtcIjtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgdmFyIHZhbHVlID0gb2JqW2tleV07XG5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHZhciBhc1N0cmluZyA9IHZhbHVlO1xuXG4gICAgICAgIGlmIChyZWdpc3RlcmVkICE9IG51bGwgJiYgcmVnaXN0ZXJlZFthc1N0cmluZ10gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHN0cmluZyArPSBrZXkgKyBcIntcIiArIHJlZ2lzdGVyZWRbYXNTdHJpbmddICsgXCJ9XCI7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNQcm9jZXNzYWJsZVZhbHVlKGFzU3RyaW5nKSkge1xuICAgICAgICAgIHN0cmluZyArPSBwcm9jZXNzU3R5bGVOYW1lKGtleSkgKyBcIjpcIiArIHByb2Nlc3NTdHlsZVZhbHVlKGtleSwgYXNTdHJpbmcpICsgXCI7XCI7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdOT19DT01QT05FTlRfU0VMRUNUT1InICYmIGlzRGV2ZWxvcG1lbnQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Iobm9Db21wb25lbnRTZWxlY3Rvck1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHR5cGVvZiB2YWx1ZVswXSA9PT0gJ3N0cmluZycgJiYgKHJlZ2lzdGVyZWQgPT0gbnVsbCB8fCByZWdpc3RlcmVkW3ZhbHVlWzBdXSA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCB2YWx1ZS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGlmIChpc1Byb2Nlc3NhYmxlVmFsdWUodmFsdWVbX2ldKSkge1xuICAgICAgICAgICAgICBzdHJpbmcgKz0gcHJvY2Vzc1N0eWxlTmFtZShrZXkpICsgXCI6XCIgKyBwcm9jZXNzU3R5bGVWYWx1ZShrZXksIHZhbHVlW19pXSkgKyBcIjtcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGludGVycG9sYXRlZCA9IGhhbmRsZUludGVycG9sYXRpb24obWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIHZhbHVlKTtcblxuICAgICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdhbmltYXRpb24nOlxuICAgICAgICAgICAgY2FzZSAnYW5pbWF0aW9uTmFtZSc6XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdHJpbmcgKz0gcHJvY2Vzc1N0eWxlTmFtZShrZXkpICsgXCI6XCIgKyBpbnRlcnBvbGF0ZWQgKyBcIjtcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBzdHJpbmcgKz0ga2V5ICsgXCJ7XCIgKyBpbnRlcnBvbGF0ZWQgKyBcIn1cIjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbnZhciBsYWJlbFBhdHRlcm4gPSAvbGFiZWw6XFxzKihbXlxcczt7XSspXFxzKig7fCQpL2c7IC8vIHRoaXMgaXMgdGhlIGN1cnNvciBmb3Iga2V5ZnJhbWVzXG4vLyBrZXlmcmFtZXMgYXJlIHN0b3JlZCBvbiB0aGUgU2VyaWFsaXplZFN0eWxlcyBvYmplY3QgYXMgYSBsaW5rZWQgbGlzdFxuXG52YXIgY3Vyc29yO1xuZnVuY3Rpb24gc2VyaWFsaXplU3R5bGVzKGFyZ3MsIHJlZ2lzdGVyZWQsIG1lcmdlZFByb3BzKSB7XG4gIGlmIChhcmdzLmxlbmd0aCA9PT0gMSAmJiB0eXBlb2YgYXJnc1swXSA9PT0gJ29iamVjdCcgJiYgYXJnc1swXSAhPT0gbnVsbCAmJiBhcmdzWzBdLnN0eWxlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGFyZ3NbMF07XG4gIH1cblxuICB2YXIgc3RyaW5nTW9kZSA9IHRydWU7XG4gIHZhciBzdHlsZXMgPSAnJztcbiAgY3Vyc29yID0gdW5kZWZpbmVkO1xuICB2YXIgc3RyaW5ncyA9IGFyZ3NbMF07XG5cbiAgaWYgKHN0cmluZ3MgPT0gbnVsbCB8fCBzdHJpbmdzLnJhdyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgc3RyaW5nTW9kZSA9IGZhbHNlO1xuICAgIHN0eWxlcyArPSBoYW5kbGVJbnRlcnBvbGF0aW9uKG1lcmdlZFByb3BzLCByZWdpc3RlcmVkLCBzdHJpbmdzKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgYXNUZW1wbGF0ZVN0cmluZ3NBcnIgPSBzdHJpbmdzO1xuXG4gICAgc3R5bGVzICs9IGFzVGVtcGxhdGVTdHJpbmdzQXJyWzBdO1xuICB9IC8vIHdlIHN0YXJ0IGF0IDEgc2luY2Ugd2UndmUgYWxyZWFkeSBoYW5kbGVkIHRoZSBmaXJzdCBhcmdcblxuXG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgIHN0eWxlcyArPSBoYW5kbGVJbnRlcnBvbGF0aW9uKG1lcmdlZFByb3BzLCByZWdpc3RlcmVkLCBhcmdzW2ldKTtcblxuICAgIGlmIChzdHJpbmdNb2RlKSB7XG4gICAgICB2YXIgdGVtcGxhdGVTdHJpbmdzQXJyID0gc3RyaW5ncztcblxuICAgICAgc3R5bGVzICs9IHRlbXBsYXRlU3RyaW5nc0FycltpXTtcbiAgICB9XG4gIH0gLy8gdXNpbmcgYSBnbG9iYWwgcmVnZXggd2l0aCAuZXhlYyBpcyBzdGF0ZWZ1bCBzbyBsYXN0SW5kZXggaGFzIHRvIGJlIHJlc2V0IGVhY2ggdGltZVxuXG5cbiAgbGFiZWxQYXR0ZXJuLmxhc3RJbmRleCA9IDA7XG4gIHZhciBpZGVudGlmaWVyTmFtZSA9ICcnO1xuICB2YXIgbWF0Y2g7IC8vIGh0dHBzOi8vZXNiZW5jaC5jb20vYmVuY2gvNWI4MDljMmNmMjk0OTgwMGEwZjYxZmI1XG5cbiAgd2hpbGUgKChtYXRjaCA9IGxhYmVsUGF0dGVybi5leGVjKHN0eWxlcykpICE9PSBudWxsKSB7XG4gICAgaWRlbnRpZmllck5hbWUgKz0gJy0nICsgbWF0Y2hbMV07XG4gIH1cblxuICB2YXIgbmFtZSA9IGhhc2hTdHJpbmcoc3R5bGVzKSArIGlkZW50aWZpZXJOYW1lO1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogbmFtZSxcbiAgICBzdHlsZXM6IHN0eWxlcyxcbiAgICBuZXh0OiBjdXJzb3JcbiAgfTtcbn1cblxuZXhwb3J0IHsgc2VyaWFsaXplU3R5bGVzIH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbnZhciBzeW5jRmFsbGJhY2sgPSBmdW5jdGlvbiBzeW5jRmFsbGJhY2soY3JlYXRlKSB7XG4gIHJldHVybiBjcmVhdGUoKTtcbn07XG5cbnZhciB1c2VJbnNlcnRpb25FZmZlY3QgPSBSZWFjdFsndXNlSW5zZXJ0aW9uJyArICdFZmZlY3QnXSA/IFJlYWN0Wyd1c2VJbnNlcnRpb24nICsgJ0VmZmVjdCddIDogZmFsc2U7XG52YXIgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjayA9IHVzZUluc2VydGlvbkVmZmVjdCB8fCBzeW5jRmFsbGJhY2s7XG52YXIgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrID0gdXNlSW5zZXJ0aW9uRWZmZWN0IHx8IFJlYWN0LnVzZUxheW91dEVmZmVjdDtcblxuZXhwb3J0IHsgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjaywgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrIH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0LCBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNyZWF0ZUNhY2hlIGZyb20gJ0BlbW90aW9uL2NhY2hlJztcbmltcG9ydCBfZXh0ZW5kcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzJztcbmltcG9ydCB3ZWFrTWVtb2l6ZSBmcm9tICdAZW1vdGlvbi93ZWFrLW1lbW9pemUnO1xuaW1wb3J0IGhvaXN0Tm9uUmVhY3RTdGF0aWNzIGZyb20gJy4uL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5icm93c2VyLmVzbS5qcyc7XG5pbXBvcnQgeyBnZXRSZWdpc3RlcmVkU3R5bGVzLCByZWdpc3RlclN0eWxlcywgaW5zZXJ0U3R5bGVzIH0gZnJvbSAnQGVtb3Rpb24vdXRpbHMnO1xuaW1wb3J0IHsgc2VyaWFsaXplU3R5bGVzIH0gZnJvbSAnQGVtb3Rpb24vc2VyaWFsaXplJztcbmltcG9ydCB7IHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2sgfSBmcm9tICdAZW1vdGlvbi91c2UtaW5zZXJ0aW9uLWVmZmVjdC13aXRoLWZhbGxiYWNrcyc7XG5cbnZhciBpc0RldmVsb3BtZW50ID0gZmFsc2U7XG5cbnZhciBFbW90aW9uQ2FjaGVDb250ZXh0ID0gLyogI19fUFVSRV9fICovUmVhY3QuY3JlYXRlQ29udGV4dCggLy8gd2UncmUgZG9pbmcgdGhpcyB0byBhdm9pZCBwcmVjb25zdHJ1Y3QncyBkZWFkIGNvZGUgZWxpbWluYXRpb24gaW4gdGhpcyBvbmUgY2FzZVxuLy8gYmVjYXVzZSB0aGlzIG1vZHVsZSBpcyBwcmltYXJpbHkgaW50ZW5kZWQgZm9yIHRoZSBicm93c2VyIGFuZCBub2RlXG4vLyBidXQgaXQncyBhbHNvIHJlcXVpcmVkIGluIHJlYWN0IG5hdGl2ZSBhbmQgc2ltaWxhciBlbnZpcm9ubWVudHMgc29tZXRpbWVzXG4vLyBhbmQgd2UgY291bGQgaGF2ZSBhIHNwZWNpYWwgYnVpbGQganVzdCBmb3IgdGhhdFxuLy8gYnV0IHRoaXMgaXMgbXVjaCBlYXNpZXIgYW5kIHRoZSBuYXRpdmUgcGFja2FnZXNcbi8vIG1pZ2h0IHVzZSBhIGRpZmZlcmVudCB0aGVtZSBjb250ZXh0IGluIHRoZSBmdXR1cmUgYW55d2F5XG50eXBlb2YgSFRNTEVsZW1lbnQgIT09ICd1bmRlZmluZWQnID8gLyogI19fUFVSRV9fICovY3JlYXRlQ2FjaGUoe1xuICBrZXk6ICdjc3MnXG59KSA6IG51bGwpO1xuXG52YXIgQ2FjaGVQcm92aWRlciA9IEVtb3Rpb25DYWNoZUNvbnRleHQuUHJvdmlkZXI7XG52YXIgX191bnNhZmVfdXNlRW1vdGlvbkNhY2hlID0gZnVuY3Rpb24gdXNlRW1vdGlvbkNhY2hlKCkge1xuICByZXR1cm4gdXNlQ29udGV4dChFbW90aW9uQ2FjaGVDb250ZXh0KTtcbn07XG5cbnZhciB3aXRoRW1vdGlvbkNhY2hlID0gZnVuY3Rpb24gd2l0aEVtb3Rpb25DYWNoZShmdW5jKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikge1xuICAgIC8vIHRoZSBjYWNoZSB3aWxsIG5ldmVyIGJlIG51bGwgaW4gdGhlIGJyb3dzZXJcbiAgICB2YXIgY2FjaGUgPSB1c2VDb250ZXh0KEVtb3Rpb25DYWNoZUNvbnRleHQpO1xuICAgIHJldHVybiBmdW5jKHByb3BzLCBjYWNoZSwgcmVmKTtcbiAgfSk7XG59O1xuXG52YXIgVGhlbWVDb250ZXh0ID0gLyogI19fUFVSRV9fICovUmVhY3QuY3JlYXRlQ29udGV4dCh7fSk7XG5cbnZhciB1c2VUaGVtZSA9IGZ1bmN0aW9uIHVzZVRoZW1lKCkge1xuICByZXR1cm4gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xufTtcblxudmFyIGdldFRoZW1lID0gZnVuY3Rpb24gZ2V0VGhlbWUob3V0ZXJUaGVtZSwgdGhlbWUpIHtcbiAgaWYgKHR5cGVvZiB0aGVtZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciBtZXJnZWRUaGVtZSA9IHRoZW1lKG91dGVyVGhlbWUpO1xuXG4gICAgcmV0dXJuIG1lcmdlZFRoZW1lO1xuICB9XG5cbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvdXRlclRoZW1lLCB0aGVtZSk7XG59O1xuXG52YXIgY3JlYXRlQ2FjaGVXaXRoVGhlbWUgPSAvKiAjX19QVVJFX18gKi93ZWFrTWVtb2l6ZShmdW5jdGlvbiAob3V0ZXJUaGVtZSkge1xuICByZXR1cm4gd2Vha01lbW9pemUoZnVuY3Rpb24gKHRoZW1lKSB7XG4gICAgcmV0dXJuIGdldFRoZW1lKG91dGVyVGhlbWUsIHRoZW1lKTtcbiAgfSk7XG59KTtcbnZhciBUaGVtZVByb3ZpZGVyID0gZnVuY3Rpb24gVGhlbWVQcm92aWRlcihwcm9wcykge1xuICB2YXIgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XG5cbiAgaWYgKHByb3BzLnRoZW1lICE9PSB0aGVtZSkge1xuICAgIHRoZW1lID0gY3JlYXRlQ2FjaGVXaXRoVGhlbWUodGhlbWUpKHByb3BzLnRoZW1lKTtcbiAgfVxuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUaGVtZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogdGhlbWVcbiAgfSwgcHJvcHMuY2hpbGRyZW4pO1xufTtcbmZ1bmN0aW9uIHdpdGhUaGVtZShDb21wb25lbnQpIHtcbiAgdmFyIGNvbXBvbmVudE5hbWUgPSBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCc7XG4gIHZhciBXaXRoVGhlbWUgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiByZW5kZXIocHJvcHMsIHJlZikge1xuICAgIHZhciB0aGVtZSA9IFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ29tcG9uZW50LCBfZXh0ZW5kcyh7XG4gICAgICB0aGVtZTogdGhlbWUsXG4gICAgICByZWY6IHJlZlxuICAgIH0sIHByb3BzKSk7XG4gIH0pO1xuICBXaXRoVGhlbWUuZGlzcGxheU5hbWUgPSBcIldpdGhUaGVtZShcIiArIGNvbXBvbmVudE5hbWUgKyBcIilcIjtcbiAgcmV0dXJuIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKFdpdGhUaGVtZSwgQ29tcG9uZW50KTtcbn1cblxudmFyIGhhc093biA9IHt9Lmhhc093blByb3BlcnR5O1xuXG52YXIgdHlwZVByb3BOYW1lID0gJ19fRU1PVElPTl9UWVBFX1BMRUFTRV9ET19OT1RfVVNFX18nO1xudmFyIGNyZWF0ZUVtb3Rpb25Qcm9wcyA9IGZ1bmN0aW9uIGNyZWF0ZUVtb3Rpb25Qcm9wcyh0eXBlLCBwcm9wcykge1xuXG4gIHZhciBuZXdQcm9wcyA9IHt9O1xuXG4gIGZvciAodmFyIF9rZXkgaW4gcHJvcHMpIHtcbiAgICBpZiAoaGFzT3duLmNhbGwocHJvcHMsIF9rZXkpKSB7XG4gICAgICBuZXdQcm9wc1tfa2V5XSA9IHByb3BzW19rZXldO1xuICAgIH1cbiAgfVxuXG4gIG5ld1Byb3BzW3R5cGVQcm9wTmFtZV0gPSB0eXBlOyAvLyBSdW50aW1lIGxhYmVsaW5nIGlzIGFuIG9wdC1pbiBmZWF0dXJlIGJlY2F1c2U6XG5cbiAgcmV0dXJuIG5ld1Byb3BzO1xufTtcblxudmFyIEluc2VydGlvbiA9IGZ1bmN0aW9uIEluc2VydGlvbihfcmVmKSB7XG4gIHZhciBjYWNoZSA9IF9yZWYuY2FjaGUsXG4gICAgICBzZXJpYWxpemVkID0gX3JlZi5zZXJpYWxpemVkLFxuICAgICAgaXNTdHJpbmdUYWcgPSBfcmVmLmlzU3RyaW5nVGFnO1xuICByZWdpc3RlclN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgaXNTdHJpbmdUYWcpO1xuICB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gaW5zZXJ0U3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLCBpc1N0cmluZ1RhZyk7XG4gIH0pO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxudmFyIEVtb3Rpb24gPSAvKiAjX19QVVJFX18gKi93aXRoRW1vdGlvbkNhY2hlKGZ1bmN0aW9uIChwcm9wcywgY2FjaGUsIHJlZikge1xuICB2YXIgY3NzUHJvcCA9IHByb3BzLmNzczsgLy8gc28gdGhhdCB1c2luZyBgY3NzYCBmcm9tIGBlbW90aW9uYCBhbmQgcGFzc2luZyB0aGUgcmVzdWx0IHRvIHRoZSBjc3MgcHJvcCB3b3Jrc1xuICAvLyBub3QgcGFzc2luZyB0aGUgcmVnaXN0ZXJlZCBjYWNoZSB0byBzZXJpYWxpemVTdHlsZXMgYmVjYXVzZSBpdCB3b3VsZFxuICAvLyBtYWtlIGNlcnRhaW4gYmFiZWwgb3B0aW1pc2F0aW9ucyBub3QgcG9zc2libGVcblxuICBpZiAodHlwZW9mIGNzc1Byb3AgPT09ICdzdHJpbmcnICYmIGNhY2hlLnJlZ2lzdGVyZWRbY3NzUHJvcF0gIT09IHVuZGVmaW5lZCkge1xuICAgIGNzc1Byb3AgPSBjYWNoZS5yZWdpc3RlcmVkW2Nzc1Byb3BdO1xuICB9XG5cbiAgdmFyIFdyYXBwZWRDb21wb25lbnQgPSBwcm9wc1t0eXBlUHJvcE5hbWVdO1xuICB2YXIgcmVnaXN0ZXJlZFN0eWxlcyA9IFtjc3NQcm9wXTtcbiAgdmFyIGNsYXNzTmFtZSA9ICcnO1xuXG4gIGlmICh0eXBlb2YgcHJvcHMuY2xhc3NOYW1lID09PSAnc3RyaW5nJykge1xuICAgIGNsYXNzTmFtZSA9IGdldFJlZ2lzdGVyZWRTdHlsZXMoY2FjaGUucmVnaXN0ZXJlZCwgcmVnaXN0ZXJlZFN0eWxlcywgcHJvcHMuY2xhc3NOYW1lKTtcbiAgfSBlbHNlIGlmIChwcm9wcy5jbGFzc05hbWUgIT0gbnVsbCkge1xuICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSArIFwiIFwiO1xuICB9XG5cbiAgdmFyIHNlcmlhbGl6ZWQgPSBzZXJpYWxpemVTdHlsZXMocmVnaXN0ZXJlZFN0eWxlcywgdW5kZWZpbmVkLCBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCkpO1xuXG4gIGNsYXNzTmFtZSArPSBjYWNoZS5rZXkgKyBcIi1cIiArIHNlcmlhbGl6ZWQubmFtZTtcbiAgdmFyIG5ld1Byb3BzID0ge307XG5cbiAgZm9yICh2YXIgX2tleTIgaW4gcHJvcHMpIHtcbiAgICBpZiAoaGFzT3duLmNhbGwocHJvcHMsIF9rZXkyKSAmJiBfa2V5MiAhPT0gJ2NzcycgJiYgX2tleTIgIT09IHR5cGVQcm9wTmFtZSAmJiAoIWlzRGV2ZWxvcG1lbnQgKSkge1xuICAgICAgbmV3UHJvcHNbX2tleTJdID0gcHJvcHNbX2tleTJdO1xuICAgIH1cbiAgfVxuXG4gIG5ld1Byb3BzLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcblxuICBpZiAocmVmKSB7XG4gICAgbmV3UHJvcHMucmVmID0gcmVmO1xuICB9XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbnNlcnRpb24sIHtcbiAgICBjYWNoZTogY2FjaGUsXG4gICAgc2VyaWFsaXplZDogc2VyaWFsaXplZCxcbiAgICBpc1N0cmluZ1RhZzogdHlwZW9mIFdyYXBwZWRDb21wb25lbnQgPT09ICdzdHJpbmcnXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChXcmFwcGVkQ29tcG9uZW50LCBuZXdQcm9wcykpO1xufSk7XG5cbnZhciBFbW90aW9uJDEgPSBFbW90aW9uO1xuXG5leHBvcnQgeyBDYWNoZVByb3ZpZGVyIGFzIEMsIEVtb3Rpb24kMSBhcyBFLCBUaGVtZUNvbnRleHQgYXMgVCwgX191bnNhZmVfdXNlRW1vdGlvbkNhY2hlIGFzIF8sIFRoZW1lUHJvdmlkZXIgYXMgYSwgd2l0aFRoZW1lIGFzIGIsIGNyZWF0ZUVtb3Rpb25Qcm9wcyBhcyBjLCBoYXNPd24gYXMgaCwgaXNEZXZlbG9wbWVudCBhcyBpLCB1c2VUaGVtZSBhcyB1LCB3aXRoRW1vdGlvbkNhY2hlIGFzIHcgfTtcbiIsImltcG9ydCB7IGggYXMgaGFzT3duLCBFIGFzIEVtb3Rpb24sIGMgYXMgY3JlYXRlRW1vdGlvblByb3BzLCB3IGFzIHdpdGhFbW90aW9uQ2FjaGUsIFQgYXMgVGhlbWVDb250ZXh0LCBpIGFzIGlzRGV2ZWxvcG1lbnQgfSBmcm9tICcuL2Vtb3Rpb24tZWxlbWVudC1mMGRlOTY4ZS5icm93c2VyLmVzbS5qcyc7XG5leHBvcnQgeyBDIGFzIENhY2hlUHJvdmlkZXIsIFQgYXMgVGhlbWVDb250ZXh0LCBhIGFzIFRoZW1lUHJvdmlkZXIsIF8gYXMgX191bnNhZmVfdXNlRW1vdGlvbkNhY2hlLCB1IGFzIHVzZVRoZW1lLCB3IGFzIHdpdGhFbW90aW9uQ2FjaGUsIGIgYXMgd2l0aFRoZW1lIH0gZnJvbSAnLi9lbW90aW9uLWVsZW1lbnQtZjBkZTk2OGUuYnJvd3Nlci5lc20uanMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgaW5zZXJ0U3R5bGVzLCByZWdpc3RlclN0eWxlcywgZ2V0UmVnaXN0ZXJlZFN0eWxlcyB9IGZyb20gJ0BlbW90aW9uL3V0aWxzJztcbmltcG9ydCB7IHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjaywgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjayB9IGZyb20gJ0BlbW90aW9uL3VzZS1pbnNlcnRpb24tZWZmZWN0LXdpdGgtZmFsbGJhY2tzJztcbmltcG9ydCB7IHNlcmlhbGl6ZVN0eWxlcyB9IGZyb20gJ0BlbW90aW9uL3NlcmlhbGl6ZSc7XG5pbXBvcnQgJ0BlbW90aW9uL2NhY2hlJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzJztcbmltcG9ydCAnQGVtb3Rpb24vd2Vhay1tZW1vaXplJztcbmltcG9ydCAnLi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmJyb3dzZXIuZXNtLmpzJztcbmltcG9ydCAnaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MnO1xuXG52YXIganN4ID0gZnVuY3Rpb24ganN4KHR5cGUsIHByb3BzKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG5cbiAgaWYgKHByb3BzID09IG51bGwgfHwgIWhhc093bi5jYWxsKHByb3BzLCAnY3NzJykpIHtcbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudC5hcHBseSh1bmRlZmluZWQsIGFyZ3MpO1xuICB9XG5cbiAgdmFyIGFyZ3NMZW5ndGggPSBhcmdzLmxlbmd0aDtcbiAgdmFyIGNyZWF0ZUVsZW1lbnRBcmdBcnJheSA9IG5ldyBBcnJheShhcmdzTGVuZ3RoKTtcbiAgY3JlYXRlRWxlbWVudEFyZ0FycmF5WzBdID0gRW1vdGlvbjtcbiAgY3JlYXRlRWxlbWVudEFyZ0FycmF5WzFdID0gY3JlYXRlRW1vdGlvblByb3BzKHR5cGUsIHByb3BzKTtcblxuICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3NMZW5ndGg7IGkrKykge1xuICAgIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVtpXSA9IGFyZ3NbaV07XG4gIH1cblxuICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudC5hcHBseShudWxsLCBjcmVhdGVFbGVtZW50QXJnQXJyYXkpO1xufTtcblxuKGZ1bmN0aW9uIChfanN4KSB7XG4gIHZhciBKU1g7XG5cbiAgKGZ1bmN0aW9uIChfSlNYKSB7fSkoSlNYIHx8IChKU1ggPSBfanN4LkpTWCB8fCAoX2pzeC5KU1ggPSB7fSkpKTtcbn0pKGpzeCB8fCAoanN4ID0ge30pKTtcblxuLy8gaW5pdGlhbCByZW5kZXIgZnJvbSBicm93c2VyLCBpbnNlcnRCZWZvcmUgY29udGV4dC5zaGVldC50YWdzWzBdIG9yIGlmIGEgc3R5bGUgaGFzbid0IGJlZW4gaW5zZXJ0ZWQgdGhlcmUgeWV0LCBhcHBlbmRDaGlsZFxuLy8gaW5pdGlhbCBjbGllbnQtc2lkZSByZW5kZXIgZnJvbSBTU1IsIHVzZSBwbGFjZSBvZiBoeWRyYXRpbmcgdGFnXG5cbnZhciBHbG9iYWwgPSAvKiAjX19QVVJFX18gKi93aXRoRW1vdGlvbkNhY2hlKGZ1bmN0aW9uIChwcm9wcywgY2FjaGUpIHtcblxuICB2YXIgc3R5bGVzID0gcHJvcHMuc3R5bGVzO1xuICB2YXIgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZVN0eWxlcyhbc3R5bGVzXSwgdW5kZWZpbmVkLCBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCkpO1xuICAvLyBidXQgaXQgaXMgYmFzZWQgb24gYSBjb25zdGFudCB0aGF0IHdpbGwgbmV2ZXIgY2hhbmdlIGF0IHJ1bnRpbWVcbiAgLy8gaXQncyBlZmZlY3RpdmVseSBsaWtlIGhhdmluZyB0d28gaW1wbGVtZW50YXRpb25zIGFuZCBzd2l0Y2hpbmcgdGhlbSBvdXRcbiAgLy8gc28gaXQncyBub3QgYWN0dWFsbHkgYnJlYWtpbmcgYW55dGhpbmdcblxuXG4gIHZhciBzaGVldFJlZiA9IFJlYWN0LnVzZVJlZigpO1xuICB1c2VJbnNlcnRpb25FZmZlY3RXaXRoTGF5b3V0RmFsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIHZhciBrZXkgPSBjYWNoZS5rZXkgKyBcIi1nbG9iYWxcIjsgLy8gdXNlIGNhc2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL2Vtb3Rpb24tanMvZW1vdGlvbi9pc3N1ZXMvMjY3NVxuXG4gICAgdmFyIHNoZWV0ID0gbmV3IGNhY2hlLnNoZWV0LmNvbnN0cnVjdG9yKHtcbiAgICAgIGtleToga2V5LFxuICAgICAgbm9uY2U6IGNhY2hlLnNoZWV0Lm5vbmNlLFxuICAgICAgY29udGFpbmVyOiBjYWNoZS5zaGVldC5jb250YWluZXIsXG4gICAgICBzcGVlZHk6IGNhY2hlLnNoZWV0LmlzU3BlZWR5XG4gICAgfSk7XG4gICAgdmFyIHJlaHlkcmF0aW5nID0gZmFsc2U7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwic3R5bGVbZGF0YS1lbW90aW9uPVxcXCJcIiArIGtleSArIFwiIFwiICsgc2VyaWFsaXplZC5uYW1lICsgXCJcXFwiXVwiKTtcblxuICAgIGlmIChjYWNoZS5zaGVldC50YWdzLmxlbmd0aCkge1xuICAgICAgc2hlZXQuYmVmb3JlID0gY2FjaGUuc2hlZXQudGFnc1swXTtcbiAgICB9XG5cbiAgICBpZiAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgcmVoeWRyYXRpbmcgPSB0cnVlOyAvLyBjbGVhciB0aGUgaGFzaCBzbyB0aGlzIG5vZGUgd29uJ3QgYmUgcmVjb2duaXphYmxlIGFzIHJlaHlkcmF0YWJsZSBieSBvdGhlciA8R2xvYmFsLz5zXG5cbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLWVtb3Rpb24nLCBrZXkpO1xuICAgICAgc2hlZXQuaHlkcmF0ZShbbm9kZV0pO1xuICAgIH1cblxuICAgIHNoZWV0UmVmLmN1cnJlbnQgPSBbc2hlZXQsIHJlaHlkcmF0aW5nXTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgc2hlZXQuZmx1c2goKTtcbiAgICB9O1xuICB9LCBbY2FjaGVdKTtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2hlZXRSZWZDdXJyZW50ID0gc2hlZXRSZWYuY3VycmVudDtcbiAgICB2YXIgc2hlZXQgPSBzaGVldFJlZkN1cnJlbnRbMF0sXG4gICAgICAgIHJlaHlkcmF0aW5nID0gc2hlZXRSZWZDdXJyZW50WzFdO1xuXG4gICAgaWYgKHJlaHlkcmF0aW5nKSB7XG4gICAgICBzaGVldFJlZkN1cnJlbnRbMV0gPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc2VyaWFsaXplZC5uZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIGluc2VydCBrZXlmcmFtZXNcbiAgICAgIGluc2VydFN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZC5uZXh0LCB0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAoc2hlZXQudGFncy5sZW5ndGgpIHtcbiAgICAgIC8vIGlmIHRoaXMgZG9lc24ndCBleGlzdCB0aGVuIGl0IHdpbGwgYmUgbnVsbCBzbyB0aGUgc3R5bGUgZWxlbWVudCB3aWxsIGJlIGFwcGVuZGVkXG4gICAgICB2YXIgZWxlbWVudCA9IHNoZWV0LnRhZ3Nbc2hlZXQudGFncy5sZW5ndGggLSAxXS5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICBzaGVldC5iZWZvcmUgPSBlbGVtZW50O1xuICAgICAgc2hlZXQuZmx1c2goKTtcbiAgICB9XG5cbiAgICBjYWNoZS5pbnNlcnQoXCJcIiwgc2VyaWFsaXplZCwgc2hlZXQsIGZhbHNlKTtcbiAgfSwgW2NhY2hlLCBzZXJpYWxpemVkLm5hbWVdKTtcbiAgcmV0dXJuIG51bGw7XG59KTtcblxuZnVuY3Rpb24gY3NzKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIHNlcmlhbGl6ZVN0eWxlcyhhcmdzKTtcbn1cblxuZnVuY3Rpb24ga2V5ZnJhbWVzKCkge1xuICB2YXIgaW5zZXJ0YWJsZSA9IGNzcy5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gIHZhciBuYW1lID0gXCJhbmltYXRpb24tXCIgKyBpbnNlcnRhYmxlLm5hbWU7XG4gIHJldHVybiB7XG4gICAgbmFtZTogbmFtZSxcbiAgICBzdHlsZXM6IFwiQGtleWZyYW1lcyBcIiArIG5hbWUgKyBcIntcIiArIGluc2VydGFibGUuc3R5bGVzICsgXCJ9XCIsXG4gICAgYW5pbTogMSxcbiAgICB0b1N0cmluZzogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gXCJfRU1PX1wiICsgdGhpcy5uYW1lICsgXCJfXCIgKyB0aGlzLnN0eWxlcyArIFwiX0VNT19cIjtcbiAgICB9XG4gIH07XG59XG5cbnZhciBjbGFzc25hbWVzID0gZnVuY3Rpb24gY2xhc3NuYW1lcyhhcmdzKSB7XG4gIHZhciBsZW4gPSBhcmdzLmxlbmd0aDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgY2xzID0gJyc7XG5cbiAgZm9yICg7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBhcmcgPSBhcmdzW2ldO1xuICAgIGlmIChhcmcgPT0gbnVsbCkgY29udGludWU7XG4gICAgdmFyIHRvQWRkID0gdm9pZCAwO1xuXG4gICAgc3dpdGNoICh0eXBlb2YgYXJnKSB7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG4gICAgICAgICAgICB0b0FkZCA9IGNsYXNzbmFtZXMoYXJnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICB0b0FkZCA9ICcnO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBrIGluIGFyZykge1xuICAgICAgICAgICAgICBpZiAoYXJnW2tdICYmIGspIHtcbiAgICAgICAgICAgICAgICB0b0FkZCAmJiAodG9BZGQgKz0gJyAnKTtcbiAgICAgICAgICAgICAgICB0b0FkZCArPSBrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAge1xuICAgICAgICAgIHRvQWRkID0gYXJnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRvQWRkKSB7XG4gICAgICBjbHMgJiYgKGNscyArPSAnICcpO1xuICAgICAgY2xzICs9IHRvQWRkO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbHM7XG59O1xuXG5mdW5jdGlvbiBtZXJnZShyZWdpc3RlcmVkLCBjc3MsIGNsYXNzTmFtZSkge1xuICB2YXIgcmVnaXN0ZXJlZFN0eWxlcyA9IFtdO1xuICB2YXIgcmF3Q2xhc3NOYW1lID0gZ2V0UmVnaXN0ZXJlZFN0eWxlcyhyZWdpc3RlcmVkLCByZWdpc3RlcmVkU3R5bGVzLCBjbGFzc05hbWUpO1xuXG4gIGlmIChyZWdpc3RlcmVkU3R5bGVzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gY2xhc3NOYW1lO1xuICB9XG5cbiAgcmV0dXJuIHJhd0NsYXNzTmFtZSArIGNzcyhyZWdpc3RlcmVkU3R5bGVzKTtcbn1cblxudmFyIEluc2VydGlvbiA9IGZ1bmN0aW9uIEluc2VydGlvbihfcmVmKSB7XG4gIHZhciBjYWNoZSA9IF9yZWYuY2FjaGUsXG4gICAgICBzZXJpYWxpemVkQXJyID0gX3JlZi5zZXJpYWxpemVkQXJyO1xuICB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VyaWFsaXplZEFyci5sZW5ndGg7IGkrKykge1xuICAgICAgaW5zZXJ0U3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkQXJyW2ldLCBmYWxzZSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbnZhciBDbGFzc05hbWVzID0gLyogI19fUFVSRV9fICovd2l0aEVtb3Rpb25DYWNoZShmdW5jdGlvbiAocHJvcHMsIGNhY2hlKSB7XG4gIHZhciBoYXNSZW5kZXJlZCA9IGZhbHNlO1xuICB2YXIgc2VyaWFsaXplZEFyciA9IFtdO1xuXG4gIHZhciBjc3MgPSBmdW5jdGlvbiBjc3MoKSB7XG4gICAgaWYgKGhhc1JlbmRlcmVkICYmIGlzRGV2ZWxvcG1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY3NzIGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIHJlbmRlcicpO1xuICAgIH1cblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICB2YXIgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZVN0eWxlcyhhcmdzLCBjYWNoZS5yZWdpc3RlcmVkKTtcbiAgICBzZXJpYWxpemVkQXJyLnB1c2goc2VyaWFsaXplZCk7IC8vIHJlZ2lzdHJhdGlvbiBoYXMgdG8gaGFwcGVuIGhlcmUgYXMgdGhlIHJlc3VsdCBvZiB0aGlzIG1pZ2h0IGdldCBjb25zdW1lZCBieSBgY3hgXG5cbiAgICByZWdpc3RlclN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgZmFsc2UpO1xuICAgIHJldHVybiBjYWNoZS5rZXkgKyBcIi1cIiArIHNlcmlhbGl6ZWQubmFtZTtcbiAgfTtcblxuICB2YXIgY3ggPSBmdW5jdGlvbiBjeCgpIHtcbiAgICBpZiAoaGFzUmVuZGVyZWQgJiYgaXNEZXZlbG9wbWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjeCBjYW4gb25seSBiZSB1c2VkIGR1cmluZyByZW5kZXInKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVyZ2UoY2FjaGUucmVnaXN0ZXJlZCwgY3NzLCBjbGFzc25hbWVzKGFyZ3MpKTtcbiAgfTtcblxuICB2YXIgY29udGVudCA9IHtcbiAgICBjc3M6IGNzcyxcbiAgICBjeDogY3gsXG4gICAgdGhlbWU6IFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KVxuICB9O1xuICB2YXIgZWxlID0gcHJvcHMuY2hpbGRyZW4oY29udGVudCk7XG4gIGhhc1JlbmRlcmVkID0gdHJ1ZTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbnNlcnRpb24sIHtcbiAgICBjYWNoZTogY2FjaGUsXG4gICAgc2VyaWFsaXplZEFycjogc2VyaWFsaXplZEFyclxuICB9KSwgZWxlKTtcbn0pO1xuXG5leHBvcnQgeyBDbGFzc05hbWVzLCBHbG9iYWwsIGpzeCBhcyBjcmVhdGVFbGVtZW50LCBjc3MsIGpzeCwga2V5ZnJhbWVzIH07XG4iLCJmdW5jdGlvbiBfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsKGUsIHQpIHtcbiAgcmV0dXJuIHQgfHwgKHQgPSBlLnNsaWNlKDApKSwgT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCB7XG4gICAgcmF3OiB7XG4gICAgICB2YWx1ZTogT2JqZWN0LmZyZWV6ZSh0KVxuICAgIH1cbiAgfSkpO1xufVxuZXhwb3J0IHsgX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbCBhcyBkZWZhdWx0IH07IiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QucHJvZHVjdGlvbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG52YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnRyYW5zaXRpb25hbC5lbGVtZW50XCIpLFxuICBSRUFDVF9QT1JUQUxfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIiksXG4gIFJFQUNUX0ZSQUdNRU5UX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksXG4gIFJFQUNUX1NUUklDVF9NT0RFX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIiksXG4gIFJFQUNUX1BST0ZJTEVSX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIiksXG4gIFJFQUNUX0NPTlNVTUVSX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuY29uc3VtZXJcIiksXG4gIFJFQUNUX0NPTlRFWFRfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpLFxuICBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpLFxuICBSRUFDVF9TVVNQRU5TRV9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpLFxuICBSRUFDVF9NRU1PX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKSxcbiAgUkVBQ1RfTEFaWV9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmxhenlcIiksXG4gIE1BWUJFX0lURVJBVE9SX1NZTUJPTCA9IFN5bWJvbC5pdGVyYXRvcjtcbmZ1bmN0aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkge1xuICBpZiAobnVsbCA9PT0gbWF5YmVJdGVyYWJsZSB8fCBcIm9iamVjdFwiICE9PSB0eXBlb2YgbWF5YmVJdGVyYWJsZSkgcmV0dXJuIG51bGw7XG4gIG1heWJlSXRlcmFibGUgPVxuICAgIChNQVlCRV9JVEVSQVRPUl9TWU1CT0wgJiYgbWF5YmVJdGVyYWJsZVtNQVlCRV9JVEVSQVRPUl9TWU1CT0xdKSB8fFxuICAgIG1heWJlSXRlcmFibGVbXCJAQGl0ZXJhdG9yXCJdO1xuICByZXR1cm4gXCJmdW5jdGlvblwiID09PSB0eXBlb2YgbWF5YmVJdGVyYWJsZSA/IG1heWJlSXRlcmFibGUgOiBudWxsO1xufVxudmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0ge1xuICAgIGlzTW91bnRlZDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuICExO1xuICAgIH0sXG4gICAgZW5xdWV1ZUZvcmNlVXBkYXRlOiBmdW5jdGlvbiAoKSB7fSxcbiAgICBlbnF1ZXVlUmVwbGFjZVN0YXRlOiBmdW5jdGlvbiAoKSB7fSxcbiAgICBlbnF1ZXVlU2V0U3RhdGU6IGZ1bmN0aW9uICgpIHt9XG4gIH0sXG4gIGFzc2lnbiA9IE9iamVjdC5hc3NpZ24sXG4gIGVtcHR5T2JqZWN0ID0ge307XG5mdW5jdGlvbiBDb21wb25lbnQocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHtcbiAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLnJlZnMgPSBlbXB0eU9iamVjdDtcbiAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcbn1cbkNvbXBvbmVudC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCA9IHt9O1xuQ29tcG9uZW50LnByb3RvdHlwZS5zZXRTdGF0ZSA9IGZ1bmN0aW9uIChwYXJ0aWFsU3RhdGUsIGNhbGxiYWNrKSB7XG4gIGlmIChcbiAgICBcIm9iamVjdFwiICE9PSB0eXBlb2YgcGFydGlhbFN0YXRlICYmXG4gICAgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgcGFydGlhbFN0YXRlICYmXG4gICAgbnVsbCAhPSBwYXJ0aWFsU3RhdGVcbiAgKVxuICAgIHRocm93IEVycm9yKFxuICAgICAgXCJ0YWtlcyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzIHRvIHVwZGF0ZSBvciBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcy5cIlxuICAgICk7XG4gIHRoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcywgcGFydGlhbFN0YXRlLCBjYWxsYmFjaywgXCJzZXRTdGF0ZVwiKTtcbn07XG5Db21wb25lbnQucHJvdG90eXBlLmZvcmNlVXBkYXRlID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIHRoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcywgY2FsbGJhY2ssIFwiZm9yY2VVcGRhdGVcIik7XG59O1xuZnVuY3Rpb24gQ29tcG9uZW50RHVtbXkoKSB7fVxuQ29tcG9uZW50RHVtbXkucHJvdG90eXBlID0gQ29tcG9uZW50LnByb3RvdHlwZTtcbmZ1bmN0aW9uIFB1cmVDb21wb25lbnQocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHtcbiAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLnJlZnMgPSBlbXB0eU9iamVjdDtcbiAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcbn1cbnZhciBwdXJlQ29tcG9uZW50UHJvdG90eXBlID0gKFB1cmVDb21wb25lbnQucHJvdG90eXBlID0gbmV3IENvbXBvbmVudER1bW15KCkpO1xucHVyZUNvbXBvbmVudFByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFB1cmVDb21wb25lbnQ7XG5hc3NpZ24ocHVyZUNvbXBvbmVudFByb3RvdHlwZSwgQ29tcG9uZW50LnByb3RvdHlwZSk7XG5wdXJlQ29tcG9uZW50UHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50ID0gITA7XG52YXIgaXNBcnJheUltcGwgPSBBcnJheS5pc0FycmF5LFxuICBSZWFjdFNoYXJlZEludGVybmFscyA9IHsgSDogbnVsbCwgQTogbnVsbCwgVDogbnVsbCwgUzogbnVsbCB9LFxuICBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5mdW5jdGlvbiBSZWFjdEVsZW1lbnQodHlwZSwga2V5LCBzZWxmLCBzb3VyY2UsIG93bmVyLCBwcm9wcykge1xuICBzZWxmID0gcHJvcHMucmVmO1xuICByZXR1cm4ge1xuICAgICQkdHlwZW9mOiBSRUFDVF9FTEVNRU5UX1RZUEUsXG4gICAgdHlwZTogdHlwZSxcbiAgICBrZXk6IGtleSxcbiAgICByZWY6IHZvaWQgMCAhPT0gc2VsZiA/IHNlbGYgOiBudWxsLFxuICAgIHByb3BzOiBwcm9wc1xuICB9O1xufVxuZnVuY3Rpb24gY2xvbmVBbmRSZXBsYWNlS2V5KG9sZEVsZW1lbnQsIG5ld0tleSkge1xuICByZXR1cm4gUmVhY3RFbGVtZW50KFxuICAgIG9sZEVsZW1lbnQudHlwZSxcbiAgICBuZXdLZXksXG4gICAgdm9pZCAwLFxuICAgIHZvaWQgMCxcbiAgICB2b2lkIDAsXG4gICAgb2xkRWxlbWVudC5wcm9wc1xuICApO1xufVxuZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnQob2JqZWN0KSB7XG4gIHJldHVybiAoXG4gICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIG9iamVjdCAmJlxuICAgIG51bGwgIT09IG9iamVjdCAmJlxuICAgIG9iamVjdC4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFXG4gICk7XG59XG5mdW5jdGlvbiBlc2NhcGUoa2V5KSB7XG4gIHZhciBlc2NhcGVyTG9va3VwID0geyBcIj1cIjogXCI9MFwiLCBcIjpcIjogXCI9MlwiIH07XG4gIHJldHVybiAoXG4gICAgXCIkXCIgK1xuICAgIGtleS5yZXBsYWNlKC9bPTpdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgcmV0dXJuIGVzY2FwZXJMb29rdXBbbWF0Y2hdO1xuICAgIH0pXG4gICk7XG59XG52YXIgdXNlclByb3ZpZGVkS2V5RXNjYXBlUmVnZXggPSAvXFwvKy9nO1xuZnVuY3Rpb24gZ2V0RWxlbWVudEtleShlbGVtZW50LCBpbmRleCkge1xuICByZXR1cm4gXCJvYmplY3RcIiA9PT0gdHlwZW9mIGVsZW1lbnQgJiYgbnVsbCAhPT0gZWxlbWVudCAmJiBudWxsICE9IGVsZW1lbnQua2V5XG4gICAgPyBlc2NhcGUoXCJcIiArIGVsZW1lbnQua2V5KVxuICAgIDogaW5kZXgudG9TdHJpbmcoMzYpO1xufVxuZnVuY3Rpb24gbm9vcCQxKCkge31cbmZ1bmN0aW9uIHJlc29sdmVUaGVuYWJsZSh0aGVuYWJsZSkge1xuICBzd2l0Y2ggKHRoZW5hYmxlLnN0YXR1cykge1xuICAgIGNhc2UgXCJmdWxmaWxsZWRcIjpcbiAgICAgIHJldHVybiB0aGVuYWJsZS52YWx1ZTtcbiAgICBjYXNlIFwicmVqZWN0ZWRcIjpcbiAgICAgIHRocm93IHRoZW5hYmxlLnJlYXNvbjtcbiAgICBkZWZhdWx0OlxuICAgICAgc3dpdGNoIChcbiAgICAgICAgKFwic3RyaW5nXCIgPT09IHR5cGVvZiB0aGVuYWJsZS5zdGF0dXNcbiAgICAgICAgICA/IHRoZW5hYmxlLnRoZW4obm9vcCQxLCBub29wJDEpXG4gICAgICAgICAgOiAoKHRoZW5hYmxlLnN0YXR1cyA9IFwicGVuZGluZ1wiKSxcbiAgICAgICAgICAgIHRoZW5hYmxlLnRoZW4oXG4gICAgICAgICAgICAgIGZ1bmN0aW9uIChmdWxmaWxsZWRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIFwicGVuZGluZ1wiID09PSB0aGVuYWJsZS5zdGF0dXMgJiZcbiAgICAgICAgICAgICAgICAgICgodGhlbmFibGUuc3RhdHVzID0gXCJmdWxmaWxsZWRcIiksXG4gICAgICAgICAgICAgICAgICAodGhlbmFibGUudmFsdWUgPSBmdWxmaWxsZWRWYWx1ZSkpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBcInBlbmRpbmdcIiA9PT0gdGhlbmFibGUuc3RhdHVzICYmXG4gICAgICAgICAgICAgICAgICAoKHRoZW5hYmxlLnN0YXR1cyA9IFwicmVqZWN0ZWRcIiksICh0aGVuYWJsZS5yZWFzb24gPSBlcnJvcikpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApKSxcbiAgICAgICAgdGhlbmFibGUuc3RhdHVzKVxuICAgICAgKSB7XG4gICAgICAgIGNhc2UgXCJmdWxmaWxsZWRcIjpcbiAgICAgICAgICByZXR1cm4gdGhlbmFibGUudmFsdWU7XG4gICAgICAgIGNhc2UgXCJyZWplY3RlZFwiOlxuICAgICAgICAgIHRocm93IHRoZW5hYmxlLnJlYXNvbjtcbiAgICAgIH1cbiAgfVxuICB0aHJvdyB0aGVuYWJsZTtcbn1cbmZ1bmN0aW9uIG1hcEludG9BcnJheShjaGlsZHJlbiwgYXJyYXksIGVzY2FwZWRQcmVmaXgsIG5hbWVTb0ZhciwgY2FsbGJhY2spIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgY2hpbGRyZW47XG4gIGlmIChcInVuZGVmaW5lZFwiID09PSB0eXBlIHx8IFwiYm9vbGVhblwiID09PSB0eXBlKSBjaGlsZHJlbiA9IG51bGw7XG4gIHZhciBpbnZva2VDYWxsYmFjayA9ICExO1xuICBpZiAobnVsbCA9PT0gY2hpbGRyZW4pIGludm9rZUNhbGxiYWNrID0gITA7XG4gIGVsc2VcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgXCJiaWdpbnRcIjpcbiAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgaW52b2tlQ2FsbGJhY2sgPSAhMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgIHN3aXRjaCAoY2hpbGRyZW4uJCR0eXBlb2YpIHtcbiAgICAgICAgICBjYXNlIFJFQUNUX0VMRU1FTlRfVFlQRTpcbiAgICAgICAgICBjYXNlIFJFQUNUX1BPUlRBTF9UWVBFOlxuICAgICAgICAgICAgaW52b2tlQ2FsbGJhY2sgPSAhMDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgKGludm9rZUNhbGxiYWNrID0gY2hpbGRyZW4uX2luaXQpLFxuICAgICAgICAgICAgICBtYXBJbnRvQXJyYXkoXG4gICAgICAgICAgICAgICAgaW52b2tlQ2FsbGJhY2soY2hpbGRyZW4uX3BheWxvYWQpLFxuICAgICAgICAgICAgICAgIGFycmF5LFxuICAgICAgICAgICAgICAgIGVzY2FwZWRQcmVmaXgsXG4gICAgICAgICAgICAgICAgbmFtZVNvRmFyLFxuICAgICAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG4gIGlmIChpbnZva2VDYWxsYmFjaylcbiAgICByZXR1cm4gKFxuICAgICAgKGNhbGxiYWNrID0gY2FsbGJhY2soY2hpbGRyZW4pKSxcbiAgICAgIChpbnZva2VDYWxsYmFjayA9XG4gICAgICAgIFwiXCIgPT09IG5hbWVTb0ZhciA/IFwiLlwiICsgZ2V0RWxlbWVudEtleShjaGlsZHJlbiwgMCkgOiBuYW1lU29GYXIpLFxuICAgICAgaXNBcnJheUltcGwoY2FsbGJhY2spXG4gICAgICAgID8gKChlc2NhcGVkUHJlZml4ID0gXCJcIiksXG4gICAgICAgICAgbnVsbCAhPSBpbnZva2VDYWxsYmFjayAmJlxuICAgICAgICAgICAgKGVzY2FwZWRQcmVmaXggPVxuICAgICAgICAgICAgICBpbnZva2VDYWxsYmFjay5yZXBsYWNlKHVzZXJQcm92aWRlZEtleUVzY2FwZVJlZ2V4LCBcIiQmL1wiKSArIFwiL1wiKSxcbiAgICAgICAgICBtYXBJbnRvQXJyYXkoY2FsbGJhY2ssIGFycmF5LCBlc2NhcGVkUHJlZml4LCBcIlwiLCBmdW5jdGlvbiAoYykge1xuICAgICAgICAgICAgcmV0dXJuIGM7XG4gICAgICAgICAgfSkpXG4gICAgICAgIDogbnVsbCAhPSBjYWxsYmFjayAmJlxuICAgICAgICAgIChpc1ZhbGlkRWxlbWVudChjYWxsYmFjaykgJiZcbiAgICAgICAgICAgIChjYWxsYmFjayA9IGNsb25lQW5kUmVwbGFjZUtleShcbiAgICAgICAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgICAgICAgIGVzY2FwZWRQcmVmaXggK1xuICAgICAgICAgICAgICAgIChudWxsID09IGNhbGxiYWNrLmtleSB8fFxuICAgICAgICAgICAgICAgIChjaGlsZHJlbiAmJiBjaGlsZHJlbi5rZXkgPT09IGNhbGxiYWNrLmtleSlcbiAgICAgICAgICAgICAgICAgID8gXCJcIlxuICAgICAgICAgICAgICAgICAgOiAoXCJcIiArIGNhbGxiYWNrLmtleSkucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgICB1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdleCxcbiAgICAgICAgICAgICAgICAgICAgICBcIiQmL1wiXG4gICAgICAgICAgICAgICAgICAgICkgKyBcIi9cIikgK1xuICAgICAgICAgICAgICAgIGludm9rZUNhbGxiYWNrXG4gICAgICAgICAgICApKSxcbiAgICAgICAgICBhcnJheS5wdXNoKGNhbGxiYWNrKSksXG4gICAgICAxXG4gICAgKTtcbiAgaW52b2tlQ2FsbGJhY2sgPSAwO1xuICB2YXIgbmV4dE5hbWVQcmVmaXggPSBcIlwiID09PSBuYW1lU29GYXIgPyBcIi5cIiA6IG5hbWVTb0ZhciArIFwiOlwiO1xuICBpZiAoaXNBcnJheUltcGwoY2hpbGRyZW4pKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspXG4gICAgICAobmFtZVNvRmFyID0gY2hpbGRyZW5baV0pLFxuICAgICAgICAodHlwZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0RWxlbWVudEtleShuYW1lU29GYXIsIGkpKSxcbiAgICAgICAgKGludm9rZUNhbGxiYWNrICs9IG1hcEludG9BcnJheShcbiAgICAgICAgICBuYW1lU29GYXIsXG4gICAgICAgICAgYXJyYXksXG4gICAgICAgICAgZXNjYXBlZFByZWZpeCxcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICkpO1xuICBlbHNlIGlmICgoKGkgPSBnZXRJdGVyYXRvckZuKGNoaWxkcmVuKSksIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGkpKVxuICAgIGZvciAoXG4gICAgICBjaGlsZHJlbiA9IGkuY2FsbChjaGlsZHJlbiksIGkgPSAwO1xuICAgICAgIShuYW1lU29GYXIgPSBjaGlsZHJlbi5uZXh0KCkpLmRvbmU7XG5cbiAgICApXG4gICAgICAobmFtZVNvRmFyID0gbmFtZVNvRmFyLnZhbHVlKSxcbiAgICAgICAgKHR5cGUgPSBuZXh0TmFtZVByZWZpeCArIGdldEVsZW1lbnRLZXkobmFtZVNvRmFyLCBpKyspKSxcbiAgICAgICAgKGludm9rZUNhbGxiYWNrICs9IG1hcEludG9BcnJheShcbiAgICAgICAgICBuYW1lU29GYXIsXG4gICAgICAgICAgYXJyYXksXG4gICAgICAgICAgZXNjYXBlZFByZWZpeCxcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICkpO1xuICBlbHNlIGlmIChcIm9iamVjdFwiID09PSB0eXBlKSB7XG4gICAgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGNoaWxkcmVuLnRoZW4pXG4gICAgICByZXR1cm4gbWFwSW50b0FycmF5KFxuICAgICAgICByZXNvbHZlVGhlbmFibGUoY2hpbGRyZW4pLFxuICAgICAgICBhcnJheSxcbiAgICAgICAgZXNjYXBlZFByZWZpeCxcbiAgICAgICAgbmFtZVNvRmFyLFxuICAgICAgICBjYWxsYmFja1xuICAgICAgKTtcbiAgICBhcnJheSA9IFN0cmluZyhjaGlsZHJlbik7XG4gICAgdGhyb3cgRXJyb3IoXG4gICAgICBcIk9iamVjdHMgYXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0IGNoaWxkIChmb3VuZDogXCIgK1xuICAgICAgICAoXCJbb2JqZWN0IE9iamVjdF1cIiA9PT0gYXJyYXlcbiAgICAgICAgICA/IFwib2JqZWN0IHdpdGgga2V5cyB7XCIgKyBPYmplY3Qua2V5cyhjaGlsZHJlbikuam9pbihcIiwgXCIpICsgXCJ9XCJcbiAgICAgICAgICA6IGFycmF5KSArXG4gICAgICAgIFwiKS4gSWYgeW91IG1lYW50IHRvIHJlbmRlciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSBpbnN0ZWFkLlwiXG4gICAgKTtcbiAgfVxuICByZXR1cm4gaW52b2tlQ2FsbGJhY2s7XG59XG5mdW5jdGlvbiBtYXBDaGlsZHJlbihjaGlsZHJlbiwgZnVuYywgY29udGV4dCkge1xuICBpZiAobnVsbCA9PSBjaGlsZHJlbikgcmV0dXJuIGNoaWxkcmVuO1xuICB2YXIgcmVzdWx0ID0gW10sXG4gICAgY291bnQgPSAwO1xuICBtYXBJbnRvQXJyYXkoY2hpbGRyZW4sIHJlc3VsdCwgXCJcIiwgXCJcIiwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0LCBjaGlsZCwgY291bnQrKyk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gbGF6eUluaXRpYWxpemVyKHBheWxvYWQpIHtcbiAgaWYgKC0xID09PSBwYXlsb2FkLl9zdGF0dXMpIHtcbiAgICB2YXIgY3RvciA9IHBheWxvYWQuX3Jlc3VsdDtcbiAgICBjdG9yID0gY3RvcigpO1xuICAgIGN0b3IudGhlbihcbiAgICAgIGZ1bmN0aW9uIChtb2R1bGVPYmplY3QpIHtcbiAgICAgICAgaWYgKDAgPT09IHBheWxvYWQuX3N0YXR1cyB8fCAtMSA9PT0gcGF5bG9hZC5fc3RhdHVzKVxuICAgICAgICAgIChwYXlsb2FkLl9zdGF0dXMgPSAxKSwgKHBheWxvYWQuX3Jlc3VsdCA9IG1vZHVsZU9iamVjdCk7XG4gICAgICB9LFxuICAgICAgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgIGlmICgwID09PSBwYXlsb2FkLl9zdGF0dXMgfHwgLTEgPT09IHBheWxvYWQuX3N0YXR1cylcbiAgICAgICAgICAocGF5bG9hZC5fc3RhdHVzID0gMiksIChwYXlsb2FkLl9yZXN1bHQgPSBlcnJvcik7XG4gICAgICB9XG4gICAgKTtcbiAgICAtMSA9PT0gcGF5bG9hZC5fc3RhdHVzICYmICgocGF5bG9hZC5fc3RhdHVzID0gMCksIChwYXlsb2FkLl9yZXN1bHQgPSBjdG9yKSk7XG4gIH1cbiAgaWYgKDEgPT09IHBheWxvYWQuX3N0YXR1cykgcmV0dXJuIHBheWxvYWQuX3Jlc3VsdC5kZWZhdWx0O1xuICB0aHJvdyBwYXlsb2FkLl9yZXN1bHQ7XG59XG52YXIgcmVwb3J0R2xvYmFsRXJyb3IgPVxuICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiByZXBvcnRFcnJvclxuICAgID8gcmVwb3J0RXJyb3JcbiAgICA6IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIHdpbmRvdyAmJlxuICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHdpbmRvdy5FcnJvckV2ZW50XG4gICAgICAgICkge1xuICAgICAgICAgIHZhciBldmVudCA9IG5ldyB3aW5kb3cuRXJyb3JFdmVudChcImVycm9yXCIsIHtcbiAgICAgICAgICAgIGJ1YmJsZXM6ICEwLFxuICAgICAgICAgICAgY2FuY2VsYWJsZTogITAsXG4gICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgZXJyb3IgJiZcbiAgICAgICAgICAgICAgbnVsbCAhPT0gZXJyb3IgJiZcbiAgICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGVycm9yLm1lc3NhZ2VcbiAgICAgICAgICAgICAgICA/IFN0cmluZyhlcnJvci5tZXNzYWdlKVxuICAgICAgICAgICAgICAgIDogU3RyaW5nKGVycm9yKSxcbiAgICAgICAgICAgIGVycm9yOiBlcnJvclxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmICghd2luZG93LmRpc3BhdGNoRXZlbnQoZXZlbnQpKSByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIHByb2Nlc3MgJiZcbiAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBwcm9jZXNzLmVtaXRcbiAgICAgICAgKSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbWl0KFwidW5jYXVnaHRFeGNlcHRpb25cIiwgZXJyb3IpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIH07XG5mdW5jdGlvbiBub29wKCkge31cbmV4cG9ydHMuQ2hpbGRyZW4gPSB7XG4gIG1hcDogbWFwQ2hpbGRyZW4sXG4gIGZvckVhY2g6IGZ1bmN0aW9uIChjaGlsZHJlbiwgZm9yRWFjaEZ1bmMsIGZvckVhY2hDb250ZXh0KSB7XG4gICAgbWFwQ2hpbGRyZW4oXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yRWFjaEZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBmb3JFYWNoQ29udGV4dFxuICAgICk7XG4gIH0sXG4gIGNvdW50OiBmdW5jdGlvbiAoY2hpbGRyZW4pIHtcbiAgICB2YXIgbiA9IDA7XG4gICAgbWFwQ2hpbGRyZW4oY2hpbGRyZW4sIGZ1bmN0aW9uICgpIHtcbiAgICAgIG4rKztcbiAgICB9KTtcbiAgICByZXR1cm4gbjtcbiAgfSxcbiAgdG9BcnJheTogZnVuY3Rpb24gKGNoaWxkcmVuKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIG1hcENoaWxkcmVuKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgfSkgfHwgW11cbiAgICApO1xuICB9LFxuICBvbmx5OiBmdW5jdGlvbiAoY2hpbGRyZW4pIHtcbiAgICBpZiAoIWlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSlcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICBcIlJlYWN0LkNoaWxkcmVuLm9ubHkgZXhwZWN0ZWQgdG8gcmVjZWl2ZSBhIHNpbmdsZSBSZWFjdCBlbGVtZW50IGNoaWxkLlwiXG4gICAgICApO1xuICAgIHJldHVybiBjaGlsZHJlbjtcbiAgfVxufTtcbmV4cG9ydHMuQ29tcG9uZW50ID0gQ29tcG9uZW50O1xuZXhwb3J0cy5GcmFnbWVudCA9IFJFQUNUX0ZSQUdNRU5UX1RZUEU7XG5leHBvcnRzLlByb2ZpbGVyID0gUkVBQ1RfUFJPRklMRVJfVFlQRTtcbmV4cG9ydHMuUHVyZUNvbXBvbmVudCA9IFB1cmVDb21wb25lbnQ7XG5leHBvcnRzLlN0cmljdE1vZGUgPSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFO1xuZXhwb3J0cy5TdXNwZW5zZSA9IFJFQUNUX1NVU1BFTlNFX1RZUEU7XG5leHBvcnRzLl9fQ0xJRU5UX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERSA9XG4gIFJlYWN0U2hhcmVkSW50ZXJuYWxzO1xuZXhwb3J0cy5hY3QgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IEVycm9yKFwiYWN0KC4uLikgaXMgbm90IHN1cHBvcnRlZCBpbiBwcm9kdWN0aW9uIGJ1aWxkcyBvZiBSZWFjdC5cIik7XG59O1xuZXhwb3J0cy5jYWNoZSA9IGZ1bmN0aW9uIChmbikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmbi5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICB9O1xufTtcbmV4cG9ydHMuY2xvbmVFbGVtZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQsIGNvbmZpZywgY2hpbGRyZW4pIHtcbiAgaWYgKG51bGwgPT09IGVsZW1lbnQgfHwgdm9pZCAwID09PSBlbGVtZW50KVxuICAgIHRocm93IEVycm9yKFxuICAgICAgXCJUaGUgYXJndW1lbnQgbXVzdCBiZSBhIFJlYWN0IGVsZW1lbnQsIGJ1dCB5b3UgcGFzc2VkIFwiICsgZWxlbWVudCArIFwiLlwiXG4gICAgKTtcbiAgdmFyIHByb3BzID0gYXNzaWduKHt9LCBlbGVtZW50LnByb3BzKSxcbiAgICBrZXkgPSBlbGVtZW50LmtleSxcbiAgICBvd25lciA9IHZvaWQgMDtcbiAgaWYgKG51bGwgIT0gY29uZmlnKVxuICAgIGZvciAocHJvcE5hbWUgaW4gKHZvaWQgMCAhPT0gY29uZmlnLnJlZiAmJiAob3duZXIgPSB2b2lkIDApLFxuICAgIHZvaWQgMCAhPT0gY29uZmlnLmtleSAmJiAoa2V5ID0gXCJcIiArIGNvbmZpZy5rZXkpLFxuICAgIGNvbmZpZykpXG4gICAgICAhaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsIHByb3BOYW1lKSB8fFxuICAgICAgICBcImtleVwiID09PSBwcm9wTmFtZSB8fFxuICAgICAgICBcIl9fc2VsZlwiID09PSBwcm9wTmFtZSB8fFxuICAgICAgICBcIl9fc291cmNlXCIgPT09IHByb3BOYW1lIHx8XG4gICAgICAgIChcInJlZlwiID09PSBwcm9wTmFtZSAmJiB2b2lkIDAgPT09IGNvbmZpZy5yZWYpIHx8XG4gICAgICAgIChwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdKTtcbiAgdmFyIHByb3BOYW1lID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG4gIGlmICgxID09PSBwcm9wTmFtZSkgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgZWxzZSBpZiAoMSA8IHByb3BOYW1lKSB7XG4gICAgZm9yICh2YXIgY2hpbGRBcnJheSA9IEFycmF5KHByb3BOYW1lKSwgaSA9IDA7IGkgPCBwcm9wTmFtZTsgaSsrKVxuICAgICAgY2hpbGRBcnJheVtpXSA9IGFyZ3VtZW50c1tpICsgMl07XG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZEFycmF5O1xuICB9XG4gIHJldHVybiBSZWFjdEVsZW1lbnQoZWxlbWVudC50eXBlLCBrZXksIHZvaWQgMCwgdm9pZCAwLCBvd25lciwgcHJvcHMpO1xufTtcbmV4cG9ydHMuY3JlYXRlQ29udGV4dCA9IGZ1bmN0aW9uIChkZWZhdWx0VmFsdWUpIHtcbiAgZGVmYXVsdFZhbHVlID0ge1xuICAgICQkdHlwZW9mOiBSRUFDVF9DT05URVhUX1RZUEUsXG4gICAgX2N1cnJlbnRWYWx1ZTogZGVmYXVsdFZhbHVlLFxuICAgIF9jdXJyZW50VmFsdWUyOiBkZWZhdWx0VmFsdWUsXG4gICAgX3RocmVhZENvdW50OiAwLFxuICAgIFByb3ZpZGVyOiBudWxsLFxuICAgIENvbnN1bWVyOiBudWxsXG4gIH07XG4gIGRlZmF1bHRWYWx1ZS5Qcm92aWRlciA9IGRlZmF1bHRWYWx1ZTtcbiAgZGVmYXVsdFZhbHVlLkNvbnN1bWVyID0ge1xuICAgICQkdHlwZW9mOiBSRUFDVF9DT05TVU1FUl9UWVBFLFxuICAgIF9jb250ZXh0OiBkZWZhdWx0VmFsdWVcbiAgfTtcbiAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbn07XG5leHBvcnRzLmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwgY29uZmlnLCBjaGlsZHJlbikge1xuICB2YXIgcHJvcE5hbWUsXG4gICAgcHJvcHMgPSB7fSxcbiAgICBrZXkgPSBudWxsO1xuICBpZiAobnVsbCAhPSBjb25maWcpXG4gICAgZm9yIChwcm9wTmFtZSBpbiAodm9pZCAwICE9PSBjb25maWcua2V5ICYmIChrZXkgPSBcIlwiICsgY29uZmlnLmtleSksIGNvbmZpZykpXG4gICAgICBoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgcHJvcE5hbWUpICYmXG4gICAgICAgIFwia2V5XCIgIT09IHByb3BOYW1lICYmXG4gICAgICAgIFwiX19zZWxmXCIgIT09IHByb3BOYW1lICYmXG4gICAgICAgIFwiX19zb3VyY2VcIiAhPT0gcHJvcE5hbWUgJiZcbiAgICAgICAgKHByb3BzW3Byb3BOYW1lXSA9IGNvbmZpZ1twcm9wTmFtZV0pO1xuICB2YXIgY2hpbGRyZW5MZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoIC0gMjtcbiAgaWYgKDEgPT09IGNoaWxkcmVuTGVuZ3RoKSBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICBlbHNlIGlmICgxIDwgY2hpbGRyZW5MZW5ndGgpIHtcbiAgICBmb3IgKHZhciBjaGlsZEFycmF5ID0gQXJyYXkoY2hpbGRyZW5MZW5ndGgpLCBpID0gMDsgaSA8IGNoaWxkcmVuTGVuZ3RoOyBpKyspXG4gICAgICBjaGlsZEFycmF5W2ldID0gYXJndW1lbnRzW2kgKyAyXTtcbiAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkQXJyYXk7XG4gIH1cbiAgaWYgKHR5cGUgJiYgdHlwZS5kZWZhdWx0UHJvcHMpXG4gICAgZm9yIChwcm9wTmFtZSBpbiAoKGNoaWxkcmVuTGVuZ3RoID0gdHlwZS5kZWZhdWx0UHJvcHMpLCBjaGlsZHJlbkxlbmd0aCkpXG4gICAgICB2b2lkIDAgPT09IHByb3BzW3Byb3BOYW1lXSAmJlxuICAgICAgICAocHJvcHNbcHJvcE5hbWVdID0gY2hpbGRyZW5MZW5ndGhbcHJvcE5hbWVdKTtcbiAgcmV0dXJuIFJlYWN0RWxlbWVudCh0eXBlLCBrZXksIHZvaWQgMCwgdm9pZCAwLCBudWxsLCBwcm9wcyk7XG59O1xuZXhwb3J0cy5jcmVhdGVSZWYgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB7IGN1cnJlbnQ6IG51bGwgfTtcbn07XG5leHBvcnRzLmZvcndhcmRSZWYgPSBmdW5jdGlvbiAocmVuZGVyKSB7XG4gIHJldHVybiB7ICQkdHlwZW9mOiBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFLCByZW5kZXI6IHJlbmRlciB9O1xufTtcbmV4cG9ydHMuaXNWYWxpZEVsZW1lbnQgPSBpc1ZhbGlkRWxlbWVudDtcbmV4cG9ydHMubGF6eSA9IGZ1bmN0aW9uIChjdG9yKSB7XG4gIHJldHVybiB7XG4gICAgJCR0eXBlb2Y6IFJFQUNUX0xBWllfVFlQRSxcbiAgICBfcGF5bG9hZDogeyBfc3RhdHVzOiAtMSwgX3Jlc3VsdDogY3RvciB9LFxuICAgIF9pbml0OiBsYXp5SW5pdGlhbGl6ZXJcbiAgfTtcbn07XG5leHBvcnRzLm1lbW8gPSBmdW5jdGlvbiAodHlwZSwgY29tcGFyZSkge1xuICByZXR1cm4ge1xuICAgICQkdHlwZW9mOiBSRUFDVF9NRU1PX1RZUEUsXG4gICAgdHlwZTogdHlwZSxcbiAgICBjb21wYXJlOiB2b2lkIDAgPT09IGNvbXBhcmUgPyBudWxsIDogY29tcGFyZVxuICB9O1xufTtcbmV4cG9ydHMuc3RhcnRUcmFuc2l0aW9uID0gZnVuY3Rpb24gKHNjb3BlKSB7XG4gIHZhciBwcmV2VHJhbnNpdGlvbiA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlQsXG4gICAgY3VycmVudFRyYW5zaXRpb24gPSB7fTtcbiAgUmVhY3RTaGFyZWRJbnRlcm5hbHMuVCA9IGN1cnJlbnRUcmFuc2l0aW9uO1xuICB0cnkge1xuICAgIHZhciByZXR1cm5WYWx1ZSA9IHNjb3BlKCksXG4gICAgICBvblN0YXJ0VHJhbnNpdGlvbkZpbmlzaCA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlM7XG4gICAgbnVsbCAhPT0gb25TdGFydFRyYW5zaXRpb25GaW5pc2ggJiZcbiAgICAgIG9uU3RhcnRUcmFuc2l0aW9uRmluaXNoKGN1cnJlbnRUcmFuc2l0aW9uLCByZXR1cm5WYWx1ZSk7XG4gICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIHJldHVyblZhbHVlICYmXG4gICAgICBudWxsICE9PSByZXR1cm5WYWx1ZSAmJlxuICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgcmV0dXJuVmFsdWUudGhlbiAmJlxuICAgICAgcmV0dXJuVmFsdWUudGhlbihub29wLCByZXBvcnRHbG9iYWxFcnJvcik7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVwb3J0R2xvYmFsRXJyb3IoZXJyb3IpO1xuICB9IGZpbmFsbHkge1xuICAgIFJlYWN0U2hhcmVkSW50ZXJuYWxzLlQgPSBwcmV2VHJhbnNpdGlvbjtcbiAgfVxufTtcbmV4cG9ydHMudW5zdGFibGVfdXNlQ2FjaGVSZWZyZXNoID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSC51c2VDYWNoZVJlZnJlc2goKTtcbn07XG5leHBvcnRzLnVzZSA9IGZ1bmN0aW9uICh1c2FibGUpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlKHVzYWJsZSk7XG59O1xuZXhwb3J0cy51c2VBY3Rpb25TdGF0ZSA9IGZ1bmN0aW9uIChhY3Rpb24sIGluaXRpYWxTdGF0ZSwgcGVybWFsaW5rKSB7XG4gIHJldHVybiBSZWFjdFNoYXJlZEludGVybmFscy5ILnVzZUFjdGlvblN0YXRlKGFjdGlvbiwgaW5pdGlhbFN0YXRlLCBwZXJtYWxpbmspO1xufTtcbmV4cG9ydHMudXNlQ2FsbGJhY2sgPSBmdW5jdGlvbiAoY2FsbGJhY2ssIGRlcHMpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlQ2FsbGJhY2soY2FsbGJhY2ssIGRlcHMpO1xufTtcbmV4cG9ydHMudXNlQ29udGV4dCA9IGZ1bmN0aW9uIChDb250ZXh0KSB7XG4gIHJldHVybiBSZWFjdFNoYXJlZEludGVybmFscy5ILnVzZUNvbnRleHQoQ29udGV4dCk7XG59O1xuZXhwb3J0cy51c2VEZWJ1Z1ZhbHVlID0gZnVuY3Rpb24gKCkge307XG5leHBvcnRzLnVzZURlZmVycmVkVmFsdWUgPSBmdW5jdGlvbiAodmFsdWUsIGluaXRpYWxWYWx1ZSkge1xuICByZXR1cm4gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSC51c2VEZWZlcnJlZFZhbHVlKHZhbHVlLCBpbml0aWFsVmFsdWUpO1xufTtcbmV4cG9ydHMudXNlRWZmZWN0ID0gZnVuY3Rpb24gKGNyZWF0ZSwgZGVwcykge1xuICByZXR1cm4gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSC51c2VFZmZlY3QoY3JlYXRlLCBkZXBzKTtcbn07XG5leHBvcnRzLnVzZUlkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSC51c2VJZCgpO1xufTtcbmV4cG9ydHMudXNlSW1wZXJhdGl2ZUhhbmRsZSA9IGZ1bmN0aW9uIChyZWYsIGNyZWF0ZSwgZGVwcykge1xuICByZXR1cm4gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSC51c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgY3JlYXRlLCBkZXBzKTtcbn07XG5leHBvcnRzLnVzZUluc2VydGlvbkVmZmVjdCA9IGZ1bmN0aW9uIChjcmVhdGUsIGRlcHMpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlSW5zZXJ0aW9uRWZmZWN0KGNyZWF0ZSwgZGVwcyk7XG59O1xuZXhwb3J0cy51c2VMYXlvdXRFZmZlY3QgPSBmdW5jdGlvbiAoY3JlYXRlLCBkZXBzKSB7XG4gIHJldHVybiBSZWFjdFNoYXJlZEludGVybmFscy5ILnVzZUxheW91dEVmZmVjdChjcmVhdGUsIGRlcHMpO1xufTtcbmV4cG9ydHMudXNlTWVtbyA9IGZ1bmN0aW9uIChjcmVhdGUsIGRlcHMpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlTWVtbyhjcmVhdGUsIGRlcHMpO1xufTtcbmV4cG9ydHMudXNlT3B0aW1pc3RpYyA9IGZ1bmN0aW9uIChwYXNzdGhyb3VnaCwgcmVkdWNlcikge1xuICByZXR1cm4gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSC51c2VPcHRpbWlzdGljKHBhc3N0aHJvdWdoLCByZWR1Y2VyKTtcbn07XG5leHBvcnRzLnVzZVJlZHVjZXIgPSBmdW5jdGlvbiAocmVkdWNlciwgaW5pdGlhbEFyZywgaW5pdCkge1xuICByZXR1cm4gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSC51c2VSZWR1Y2VyKHJlZHVjZXIsIGluaXRpYWxBcmcsIGluaXQpO1xufTtcbmV4cG9ydHMudXNlUmVmID0gZnVuY3Rpb24gKGluaXRpYWxWYWx1ZSkge1xuICByZXR1cm4gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSC51c2VSZWYoaW5pdGlhbFZhbHVlKTtcbn07XG5leHBvcnRzLnVzZVN0YXRlID0gZnVuY3Rpb24gKGluaXRpYWxTdGF0ZSkge1xuICByZXR1cm4gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSC51c2VTdGF0ZShpbml0aWFsU3RhdGUpO1xufTtcbmV4cG9ydHMudXNlU3luY0V4dGVybmFsU3RvcmUgPSBmdW5jdGlvbiAoXG4gIHN1YnNjcmliZSxcbiAgZ2V0U25hcHNob3QsXG4gIGdldFNlcnZlclNuYXBzaG90XG4pIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlU3luY0V4dGVybmFsU3RvcmUoXG4gICAgc3Vic2NyaWJlLFxuICAgIGdldFNuYXBzaG90LFxuICAgIGdldFNlcnZlclNuYXBzaG90XG4gICk7XG59O1xuZXhwb3J0cy51c2VUcmFuc2l0aW9uID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSC51c2VUcmFuc2l0aW9uKCk7XG59O1xuZXhwb3J0cy52ZXJzaW9uID0gXCIxOS4wLjBcIjtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC5wcm9kdWN0aW9uLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1kb20ucHJvZHVjdGlvbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG5mdW5jdGlvbiBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKGNvZGUpIHtcbiAgdmFyIHVybCA9IFwiaHR0cHM6Ly9yZWFjdC5kZXYvZXJyb3JzL1wiICsgY29kZTtcbiAgaWYgKDEgPCBhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgdXJsICs9IFwiP2FyZ3NbXT1cIiArIGVuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbMV0pO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxuICAgICAgdXJsICs9IFwiJmFyZ3NbXT1cIiArIGVuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbaV0pO1xuICB9XG4gIHJldHVybiAoXG4gICAgXCJNaW5pZmllZCBSZWFjdCBlcnJvciAjXCIgK1xuICAgIGNvZGUgK1xuICAgIFwiOyB2aXNpdCBcIiArXG4gICAgdXJsICtcbiAgICBcIiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuXCJcbiAgKTtcbn1cbmZ1bmN0aW9uIG5vb3AoKSB7fVxudmFyIEludGVybmFscyA9IHtcbiAgICBkOiB7XG4gICAgICBmOiBub29wLFxuICAgICAgcjogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDUyMikpO1xuICAgICAgfSxcbiAgICAgIEQ6IG5vb3AsXG4gICAgICBDOiBub29wLFxuICAgICAgTDogbm9vcCxcbiAgICAgIG06IG5vb3AsXG4gICAgICBYOiBub29wLFxuICAgICAgUzogbm9vcCxcbiAgICAgIE06IG5vb3BcbiAgICB9LFxuICAgIHA6IDAsXG4gICAgZmluZERPTU5vZGU6IG51bGxcbiAgfSxcbiAgUkVBQ1RfUE9SVEFMX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpO1xuZnVuY3Rpb24gY3JlYXRlUG9ydGFsJDEoY2hpbGRyZW4sIGNvbnRhaW5lckluZm8sIGltcGxlbWVudGF0aW9uKSB7XG4gIHZhciBrZXkgPVxuICAgIDMgPCBhcmd1bWVudHMubGVuZ3RoICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzNdID8gYXJndW1lbnRzWzNdIDogbnVsbDtcbiAgcmV0dXJuIHtcbiAgICAkJHR5cGVvZjogUkVBQ1RfUE9SVEFMX1RZUEUsXG4gICAga2V5OiBudWxsID09IGtleSA/IG51bGwgOiBcIlwiICsga2V5LFxuICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICBjb250YWluZXJJbmZvOiBjb250YWluZXJJbmZvLFxuICAgIGltcGxlbWVudGF0aW9uOiBpbXBsZW1lbnRhdGlvblxuICB9O1xufVxudmFyIFJlYWN0U2hhcmVkSW50ZXJuYWxzID1cbiAgUmVhY3QuX19DTElFTlRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfV0FSTl9VU0VSU19USEVZX0NBTk5PVF9VUEdSQURFO1xuZnVuY3Rpb24gZ2V0Q3Jvc3NPcmlnaW5TdHJpbmdBcyhhcywgaW5wdXQpIHtcbiAgaWYgKFwiZm9udFwiID09PSBhcykgcmV0dXJuIFwiXCI7XG4gIGlmIChcInN0cmluZ1wiID09PSB0eXBlb2YgaW5wdXQpXG4gICAgcmV0dXJuIFwidXNlLWNyZWRlbnRpYWxzXCIgPT09IGlucHV0ID8gaW5wdXQgOiBcIlwiO1xufVxuZXhwb3J0cy5fX0RPTV9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUgPVxuICBJbnRlcm5hbHM7XG5leHBvcnRzLmNyZWF0ZVBvcnRhbCA9IGZ1bmN0aW9uIChjaGlsZHJlbiwgY29udGFpbmVyKSB7XG4gIHZhciBrZXkgPVxuICAgIDIgPCBhcmd1bWVudHMubGVuZ3RoICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzJdID8gYXJndW1lbnRzWzJdIDogbnVsbDtcbiAgaWYgKFxuICAgICFjb250YWluZXIgfHxcbiAgICAoMSAhPT0gY29udGFpbmVyLm5vZGVUeXBlICYmXG4gICAgICA5ICE9PSBjb250YWluZXIubm9kZVR5cGUgJiZcbiAgICAgIDExICE9PSBjb250YWluZXIubm9kZVR5cGUpXG4gIClcbiAgICB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDI5OSkpO1xuICByZXR1cm4gY3JlYXRlUG9ydGFsJDEoY2hpbGRyZW4sIGNvbnRhaW5lciwgbnVsbCwga2V5KTtcbn07XG5leHBvcnRzLmZsdXNoU3luYyA9IGZ1bmN0aW9uIChmbikge1xuICB2YXIgcHJldmlvdXNUcmFuc2l0aW9uID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuVCxcbiAgICBwcmV2aW91c1VwZGF0ZVByaW9yaXR5ID0gSW50ZXJuYWxzLnA7XG4gIHRyeSB7XG4gICAgaWYgKCgoUmVhY3RTaGFyZWRJbnRlcm5hbHMuVCA9IG51bGwpLCAoSW50ZXJuYWxzLnAgPSAyKSwgZm4pKSByZXR1cm4gZm4oKTtcbiAgfSBmaW5hbGx5IHtcbiAgICAoUmVhY3RTaGFyZWRJbnRlcm5hbHMuVCA9IHByZXZpb3VzVHJhbnNpdGlvbiksXG4gICAgICAoSW50ZXJuYWxzLnAgPSBwcmV2aW91c1VwZGF0ZVByaW9yaXR5KSxcbiAgICAgIEludGVybmFscy5kLmYoKTtcbiAgfVxufTtcbmV4cG9ydHMucHJlY29ubmVjdCA9IGZ1bmN0aW9uIChocmVmLCBvcHRpb25zKSB7XG4gIFwic3RyaW5nXCIgPT09IHR5cGVvZiBocmVmICYmXG4gICAgKG9wdGlvbnNcbiAgICAgID8gKChvcHRpb25zID0gb3B0aW9ucy5jcm9zc09yaWdpbiksXG4gICAgICAgIChvcHRpb25zID1cbiAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9uc1xuICAgICAgICAgICAgPyBcInVzZS1jcmVkZW50aWFsc1wiID09PSBvcHRpb25zXG4gICAgICAgICAgICAgID8gb3B0aW9uc1xuICAgICAgICAgICAgICA6IFwiXCJcbiAgICAgICAgICAgIDogdm9pZCAwKSlcbiAgICAgIDogKG9wdGlvbnMgPSBudWxsKSxcbiAgICBJbnRlcm5hbHMuZC5DKGhyZWYsIG9wdGlvbnMpKTtcbn07XG5leHBvcnRzLnByZWZldGNoRE5TID0gZnVuY3Rpb24gKGhyZWYpIHtcbiAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGhyZWYgJiYgSW50ZXJuYWxzLmQuRChocmVmKTtcbn07XG5leHBvcnRzLnByZWluaXQgPSBmdW5jdGlvbiAoaHJlZiwgb3B0aW9ucykge1xuICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGhyZWYgJiYgb3B0aW9ucyAmJiBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5hcykge1xuICAgIHZhciBhcyA9IG9wdGlvbnMuYXMsXG4gICAgICBjcm9zc09yaWdpbiA9IGdldENyb3NzT3JpZ2luU3RyaW5nQXMoYXMsIG9wdGlvbnMuY3Jvc3NPcmlnaW4pLFxuICAgICAgaW50ZWdyaXR5ID1cbiAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMuaW50ZWdyaXR5ID8gb3B0aW9ucy5pbnRlZ3JpdHkgOiB2b2lkIDAsXG4gICAgICBmZXRjaFByaW9yaXR5ID1cbiAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMuZmV0Y2hQcmlvcml0eVxuICAgICAgICAgID8gb3B0aW9ucy5mZXRjaFByaW9yaXR5XG4gICAgICAgICAgOiB2b2lkIDA7XG4gICAgXCJzdHlsZVwiID09PSBhc1xuICAgICAgPyBJbnRlcm5hbHMuZC5TKFxuICAgICAgICAgIGhyZWYsXG4gICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMucHJlY2VkZW5jZSA/IG9wdGlvbnMucHJlY2VkZW5jZSA6IHZvaWQgMCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjcm9zc09yaWdpbjogY3Jvc3NPcmlnaW4sXG4gICAgICAgICAgICBpbnRlZ3JpdHk6IGludGVncml0eSxcbiAgICAgICAgICAgIGZldGNoUHJpb3JpdHk6IGZldGNoUHJpb3JpdHlcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIDogXCJzY3JpcHRcIiA9PT0gYXMgJiZcbiAgICAgICAgSW50ZXJuYWxzLmQuWChocmVmLCB7XG4gICAgICAgICAgY3Jvc3NPcmlnaW46IGNyb3NzT3JpZ2luLFxuICAgICAgICAgIGludGVncml0eTogaW50ZWdyaXR5LFxuICAgICAgICAgIGZldGNoUHJpb3JpdHk6IGZldGNoUHJpb3JpdHksXG4gICAgICAgICAgbm9uY2U6IFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLm5vbmNlID8gb3B0aW9ucy5ub25jZSA6IHZvaWQgMFxuICAgICAgICB9KTtcbiAgfVxufTtcbmV4cG9ydHMucHJlaW5pdE1vZHVsZSA9IGZ1bmN0aW9uIChocmVmLCBvcHRpb25zKSB7XG4gIGlmIChcInN0cmluZ1wiID09PSB0eXBlb2YgaHJlZilcbiAgICBpZiAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIG9wdGlvbnMgJiYgbnVsbCAhPT0gb3B0aW9ucykge1xuICAgICAgaWYgKG51bGwgPT0gb3B0aW9ucy5hcyB8fCBcInNjcmlwdFwiID09PSBvcHRpb25zLmFzKSB7XG4gICAgICAgIHZhciBjcm9zc09yaWdpbiA9IGdldENyb3NzT3JpZ2luU3RyaW5nQXMoXG4gICAgICAgICAgb3B0aW9ucy5hcyxcbiAgICAgICAgICBvcHRpb25zLmNyb3NzT3JpZ2luXG4gICAgICAgICk7XG4gICAgICAgIEludGVybmFscy5kLk0oaHJlZiwge1xuICAgICAgICAgIGNyb3NzT3JpZ2luOiBjcm9zc09yaWdpbixcbiAgICAgICAgICBpbnRlZ3JpdHk6XG4gICAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5pbnRlZ3JpdHkgPyBvcHRpb25zLmludGVncml0eSA6IHZvaWQgMCxcbiAgICAgICAgICBub25jZTogXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMubm9uY2UgPyBvcHRpb25zLm5vbmNlIDogdm9pZCAwXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBudWxsID09IG9wdGlvbnMgJiYgSW50ZXJuYWxzLmQuTShocmVmKTtcbn07XG5leHBvcnRzLnByZWxvYWQgPSBmdW5jdGlvbiAoaHJlZiwgb3B0aW9ucykge1xuICBpZiAoXG4gICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGhyZWYgJiZcbiAgICBcIm9iamVjdFwiID09PSB0eXBlb2Ygb3B0aW9ucyAmJlxuICAgIG51bGwgIT09IG9wdGlvbnMgJiZcbiAgICBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5hc1xuICApIHtcbiAgICB2YXIgYXMgPSBvcHRpb25zLmFzLFxuICAgICAgY3Jvc3NPcmlnaW4gPSBnZXRDcm9zc09yaWdpblN0cmluZ0FzKGFzLCBvcHRpb25zLmNyb3NzT3JpZ2luKTtcbiAgICBJbnRlcm5hbHMuZC5MKGhyZWYsIGFzLCB7XG4gICAgICBjcm9zc09yaWdpbjogY3Jvc3NPcmlnaW4sXG4gICAgICBpbnRlZ3JpdHk6XG4gICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLmludGVncml0eSA/IG9wdGlvbnMuaW50ZWdyaXR5IDogdm9pZCAwLFxuICAgICAgbm9uY2U6IFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLm5vbmNlID8gb3B0aW9ucy5ub25jZSA6IHZvaWQgMCxcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLnR5cGUgPyBvcHRpb25zLnR5cGUgOiB2b2lkIDAsXG4gICAgICBmZXRjaFByaW9yaXR5OlxuICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5mZXRjaFByaW9yaXR5XG4gICAgICAgICAgPyBvcHRpb25zLmZldGNoUHJpb3JpdHlcbiAgICAgICAgICA6IHZvaWQgMCxcbiAgICAgIHJlZmVycmVyUG9saWN5OlxuICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5yZWZlcnJlclBvbGljeVxuICAgICAgICAgID8gb3B0aW9ucy5yZWZlcnJlclBvbGljeVxuICAgICAgICAgIDogdm9pZCAwLFxuICAgICAgaW1hZ2VTcmNTZXQ6XG4gICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLmltYWdlU3JjU2V0ID8gb3B0aW9ucy5pbWFnZVNyY1NldCA6IHZvaWQgMCxcbiAgICAgIGltYWdlU2l6ZXM6XG4gICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLmltYWdlU2l6ZXMgPyBvcHRpb25zLmltYWdlU2l6ZXMgOiB2b2lkIDAsXG4gICAgICBtZWRpYTogXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMubWVkaWEgPyBvcHRpb25zLm1lZGlhIDogdm9pZCAwXG4gICAgfSk7XG4gIH1cbn07XG5leHBvcnRzLnByZWxvYWRNb2R1bGUgPSBmdW5jdGlvbiAoaHJlZiwgb3B0aW9ucykge1xuICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGhyZWYpXG4gICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgIHZhciBjcm9zc09yaWdpbiA9IGdldENyb3NzT3JpZ2luU3RyaW5nQXMob3B0aW9ucy5hcywgb3B0aW9ucy5jcm9zc09yaWdpbik7XG4gICAgICBJbnRlcm5hbHMuZC5tKGhyZWYsIHtcbiAgICAgICAgYXM6XG4gICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMuYXMgJiYgXCJzY3JpcHRcIiAhPT0gb3B0aW9ucy5hc1xuICAgICAgICAgICAgPyBvcHRpb25zLmFzXG4gICAgICAgICAgICA6IHZvaWQgMCxcbiAgICAgICAgY3Jvc3NPcmlnaW46IGNyb3NzT3JpZ2luLFxuICAgICAgICBpbnRlZ3JpdHk6XG4gICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMuaW50ZWdyaXR5ID8gb3B0aW9ucy5pbnRlZ3JpdHkgOiB2b2lkIDBcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBJbnRlcm5hbHMuZC5tKGhyZWYpO1xufTtcbmV4cG9ydHMucmVxdWVzdEZvcm1SZXNldCA9IGZ1bmN0aW9uIChmb3JtKSB7XG4gIEludGVybmFscy5kLnIoZm9ybSk7XG59O1xuZXhwb3J0cy51bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyA9IGZ1bmN0aW9uIChmbiwgYSkge1xuICByZXR1cm4gZm4oYSk7XG59O1xuZXhwb3J0cy51c2VGb3JtU3RhdGUgPSBmdW5jdGlvbiAoYWN0aW9uLCBpbml0aWFsU3RhdGUsIHBlcm1hbGluaykge1xuICByZXR1cm4gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSC51c2VGb3JtU3RhdGUoYWN0aW9uLCBpbml0aWFsU3RhdGUsIHBlcm1hbGluayk7XG59O1xuZXhwb3J0cy51c2VGb3JtU3RhdHVzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSC51c2VIb3N0VHJhbnNpdGlvblN0YXR1cygpO1xufTtcbmV4cG9ydHMudmVyc2lvbiA9IFwiMTkuMC4wXCI7XG4iLCIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIGNoZWNrRENFKCkge1xuICAvKiBnbG9iYWwgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICovXG4gIGlmIChcbiAgICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fID09PSAndW5kZWZpbmVkJyB8fFxuICAgIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UgIT09ICdmdW5jdGlvbidcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gVGhpcyBicmFuY2ggaXMgdW5yZWFjaGFibGUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkXG4gICAgLy8gaW4gcHJvZHVjdGlvbiwgYnV0IHRoZSBjb25kaXRpb24gaXMgdHJ1ZSBvbmx5IGluIGRldmVsb3BtZW50LlxuICAgIC8vIFRoZXJlZm9yZSBpZiB0aGUgYnJhbmNoIGlzIHN0aWxsIGhlcmUsIGRlYWQgY29kZSBlbGltaW5hdGlvbiB3YXNuJ3RcbiAgICAvLyBwcm9wZXJseSBhcHBsaWVkLlxuICAgIC8vIERvbid0IGNoYW5nZSB0aGUgbWVzc2FnZS4gUmVhY3QgRGV2VG9vbHMgcmVsaWVzIG9uIGl0LiBBbHNvIG1ha2Ugc3VyZVxuICAgIC8vIHRoaXMgbWVzc2FnZSBkb2Vzbid0IG9jY3VyIGVsc2V3aGVyZSBpbiB0aGlzIGZ1bmN0aW9uLCBvciBpdCB3aWxsIGNhdXNlXG4gICAgLy8gYSBmYWxzZSBwb3NpdGl2ZS5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ15fXicpO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGNvZGUgYWJvdmUgaGFzIGJlZW4gZGVhZCBjb2RlIGVsaW1pbmF0ZWQgKERDRSdkKS5cbiAgICBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UoY2hlY2tEQ0UpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBEZXZUb29scyBzaG91bGRuJ3QgY3Jhc2ggUmVhY3QsIG5vIG1hdHRlciB3aGF0LlxuICAgIC8vIFdlIHNob3VsZCBzdGlsbCByZXBvcnQgaW4gY2FzZSB3ZSBicmVhayB0aGlzIGNvZGUuXG4gICAgY29uc29sZS5lcnJvcihlcnIpO1xuICB9XG59XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIC8vIERDRSBjaGVjayBzaG91bGQgaGFwcGVuIGJlZm9yZSBSZWFjdERPTSBidW5kbGUgZXhlY3V0ZXMgc28gdGhhdFxuICAvLyBEZXZUb29scyBjYW4gcmVwb3J0IGJhZCBtaW5pZmljYXRpb24gZHVyaW5nIGluamVjdGlvbi5cbiAgY2hlY2tEQ0UoKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1kb20ucHJvZHVjdGlvbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1kb20uZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIi8qKlxuICogQ3VzdG9tIHBvc2l0aW9uaW5nIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3ZpcnR1YWwtZWxlbWVudHNcbiAqL1xuXG5jb25zdCBzaWRlcyA9IFsndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J107XG5jb25zdCBhbGlnbm1lbnRzID0gWydzdGFydCcsICdlbmQnXTtcbmNvbnN0IHBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovc2lkZXMucmVkdWNlKChhY2MsIHNpZGUpID0+IGFjYy5jb25jYXQoc2lkZSwgc2lkZSArIFwiLVwiICsgYWxpZ25tZW50c1swXSwgc2lkZSArIFwiLVwiICsgYWxpZ25tZW50c1sxXSksIFtdKTtcbmNvbnN0IG1pbiA9IE1hdGgubWluO1xuY29uc3QgbWF4ID0gTWF0aC5tYXg7XG5jb25zdCByb3VuZCA9IE1hdGgucm91bmQ7XG5jb25zdCBmbG9vciA9IE1hdGguZmxvb3I7XG5jb25zdCBjcmVhdGVDb29yZHMgPSB2ID0+ICh7XG4gIHg6IHYsXG4gIHk6IHZcbn0pO1xuY29uc3Qgb3Bwb3NpdGVTaWRlTWFwID0ge1xuICBsZWZ0OiAncmlnaHQnLFxuICByaWdodDogJ2xlZnQnLFxuICBib3R0b206ICd0b3AnLFxuICB0b3A6ICdib3R0b20nXG59O1xuY29uc3Qgb3Bwb3NpdGVBbGlnbm1lbnRNYXAgPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZnVuY3Rpb24gY2xhbXAoc3RhcnQsIHZhbHVlLCBlbmQpIHtcbiAgcmV0dXJuIG1heChzdGFydCwgbWluKHZhbHVlLCBlbmQpKTtcbn1cbmZ1bmN0aW9uIGV2YWx1YXRlKHZhbHVlLCBwYXJhbSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nID8gdmFsdWUocGFyYW0pIDogdmFsdWU7XG59XG5mdW5jdGlvbiBnZXRTaWRlKHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQXhpcyhheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneCcgPyAneScgOiAneCc7XG59XG5mdW5jdGlvbiBnZXRBeGlzTGVuZ3RoKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbn1cbmZ1bmN0aW9uIGdldFNpZGVBeGlzKHBsYWNlbWVudCkge1xuICByZXR1cm4gWyd0b3AnLCAnYm90dG9tJ10uaW5jbHVkZXMoZ2V0U2lkZShwbGFjZW1lbnQpKSA/ICd5JyA6ICd4Jztcbn1cbmZ1bmN0aW9uIGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KSB7XG4gIHJldHVybiBnZXRPcHBvc2l0ZUF4aXMoZ2V0U2lkZUF4aXMocGxhY2VtZW50KSk7XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRTaWRlcyhwbGFjZW1lbnQsIHJlY3RzLCBydGwpIHtcbiAgaWYgKHJ0bCA9PT0gdm9pZCAwKSB7XG4gICAgcnRsID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudEF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYWxpZ25tZW50QXhpcyk7XG4gIGxldCBtYWluQWxpZ25tZW50U2lkZSA9IGFsaWdubWVudEF4aXMgPT09ICd4JyA/IGFsaWdubWVudCA9PT0gKHJ0bCA/ICdlbmQnIDogJ3N0YXJ0JykgPyAncmlnaHQnIDogJ2xlZnQnIDogYWxpZ25tZW50ID09PSAnc3RhcnQnID8gJ2JvdHRvbScgOiAndG9wJztcbiAgaWYgKHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdID4gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXSkge1xuICAgIG1haW5BbGlnbm1lbnRTaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpbkFsaWdubWVudFNpZGUpO1xuICB9XG4gIHJldHVybiBbbWFpbkFsaWdubWVudFNpZGUsIGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKV07XG59XG5mdW5jdGlvbiBnZXRFeHBhbmRlZFBsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGNvbnN0IG9wcG9zaXRlUGxhY2VtZW50ID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgcmV0dXJuIFtnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpLCBvcHBvc2l0ZVBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQob3Bwb3NpdGVQbGFjZW1lbnQpXTtcbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL3N0YXJ0fGVuZC9nLCBhbGlnbm1lbnQgPT4gb3Bwb3NpdGVBbGlnbm1lbnRNYXBbYWxpZ25tZW50XSk7XG59XG5mdW5jdGlvbiBnZXRTaWRlTGlzdChzaWRlLCBpc1N0YXJ0LCBydGwpIHtcbiAgY29uc3QgbHIgPSBbJ2xlZnQnLCAncmlnaHQnXTtcbiAgY29uc3QgcmwgPSBbJ3JpZ2h0JywgJ2xlZnQnXTtcbiAgY29uc3QgdGIgPSBbJ3RvcCcsICdib3R0b20nXTtcbiAgY29uc3QgYnQgPSBbJ2JvdHRvbScsICd0b3AnXTtcbiAgc3dpdGNoIChzaWRlKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgaWYgKHJ0bCkgcmV0dXJuIGlzU3RhcnQgPyBybCA6IGxyO1xuICAgICAgcmV0dXJuIGlzU3RhcnQgPyBsciA6IHJsO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gdGIgOiBidDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFtdO1xuICB9XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKHBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZGlyZWN0aW9uLCBydGwpIHtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGxldCBsaXN0ID0gZ2V0U2lkZUxpc3QoZ2V0U2lkZShwbGFjZW1lbnQpLCBkaXJlY3Rpb24gPT09ICdzdGFydCcsIHJ0bCk7XG4gIGlmIChhbGlnbm1lbnQpIHtcbiAgICBsaXN0ID0gbGlzdC5tYXAoc2lkZSA9PiBzaWRlICsgXCItXCIgKyBhbGlnbm1lbnQpO1xuICAgIGlmIChmbGlwQWxpZ25tZW50KSB7XG4gICAgICBsaXN0ID0gbGlzdC5jb25jYXQobGlzdC5tYXAoZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxpc3Q7XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgc2lkZSA9PiBvcHBvc2l0ZVNpZGVNYXBbc2lkZV0pO1xufVxuZnVuY3Rpb24gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIC4uLnBhZGRpbmdcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4gdHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSA6IHtcbiAgICB0b3A6IHBhZGRpbmcsXG4gICAgcmlnaHQ6IHBhZGRpbmcsXG4gICAgYm90dG9tOiBwYWRkaW5nLFxuICAgIGxlZnQ6IHBhZGRpbmdcbiAgfTtcbn1cbmZ1bmN0aW9uIHJlY3RUb0NsaWVudFJlY3QocmVjdCkge1xuICBjb25zdCB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9ID0gcmVjdDtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgdG9wOiB5LFxuICAgIGxlZnQ6IHgsXG4gICAgcmlnaHQ6IHggKyB3aWR0aCxcbiAgICBib3R0b206IHkgKyBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmV4cG9ydCB7IGFsaWdubWVudHMsIGNsYW1wLCBjcmVhdGVDb29yZHMsIGV2YWx1YXRlLCBleHBhbmRQYWRkaW5nT2JqZWN0LCBmbG9vciwgZ2V0QWxpZ25tZW50LCBnZXRBbGlnbm1lbnRBeGlzLCBnZXRBbGlnbm1lbnRTaWRlcywgZ2V0QXhpc0xlbmd0aCwgZ2V0RXhwYW5kZWRQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVBeGlzLCBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZVBsYWNlbWVudCwgZ2V0UGFkZGluZ09iamVjdCwgZ2V0U2lkZSwgZ2V0U2lkZUF4aXMsIG1heCwgbWluLCBwbGFjZW1lbnRzLCByZWN0VG9DbGllbnRSZWN0LCByb3VuZCwgc2lkZXMgfTtcbiIsImltcG9ydCB7IGdldFNpZGVBeGlzLCBnZXRBbGlnbm1lbnRBeGlzLCBnZXRBeGlzTGVuZ3RoLCBnZXRTaWRlLCBnZXRBbGlnbm1lbnQsIGV2YWx1YXRlLCBnZXRQYWRkaW5nT2JqZWN0LCByZWN0VG9DbGllbnRSZWN0LCBtaW4sIGNsYW1wLCBwbGFjZW1lbnRzLCBnZXRBbGlnbm1lbnRTaWRlcywgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQsIGdldE9wcG9zaXRlUGxhY2VtZW50LCBnZXRFeHBhbmRlZFBsYWNlbWVudHMsIGdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMsIHNpZGVzLCBtYXgsIGdldE9wcG9zaXRlQXhpcyB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5leHBvcnQgeyByZWN0VG9DbGllbnRSZWN0IH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzJztcblxuZnVuY3Rpb24gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQoX3JlZiwgcGxhY2VtZW50LCBydGwpIHtcbiAgbGV0IHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmdcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IHNpZGVBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50QXhpcyA9IGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25MZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGFsaWdubWVudEF4aXMpO1xuICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICBjb25zdCBpc1ZlcnRpY2FsID0gc2lkZUF4aXMgPT09ICd5JztcbiAgY29uc3QgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGZsb2F0aW5nLndpZHRoIC8gMjtcbiAgY29uc3QgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBmbG9hdGluZy5oZWlnaHQgLyAyO1xuICBjb25zdCBjb21tb25BbGlnbiA9IHJlZmVyZW5jZVthbGlnbkxlbmd0aF0gLyAyIC0gZmxvYXRpbmdbYWxpZ25MZW5ndGhdIC8gMjtcbiAgbGV0IGNvb3JkcztcbiAgc3dpdGNoIChzaWRlKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBmbG9hdGluZy5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54IC0gZmxvYXRpbmcud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnlcbiAgICAgIH07XG4gIH1cbiAgc3dpdGNoIChnZXRBbGlnbm1lbnQocGxhY2VtZW50KSkge1xuICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgIGNvb3Jkc1thbGlnbm1lbnRBeGlzXSAtPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdlbmQnOlxuICAgICAgY29vcmRzW2FsaWdubWVudEF4aXNdICs9IGNvbW1vbkFsaWduICogKHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBjb29yZHM7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudFxuICogbmV4dCB0byBhIGdpdmVuIHJlZmVyZW5jZSBlbGVtZW50LlxuICpcbiAqIFRoaXMgZXhwb3J0IGRvZXMgbm90IGhhdmUgYW55IGBwbGF0Zm9ybWAgaW50ZXJmYWNlIGxvZ2ljLiBZb3Ugd2lsbCBuZWVkIHRvXG4gKiB3cml0ZSBvbmUgZm9yIHRoZSBwbGF0Zm9ybSB5b3UgYXJlIHVzaW5nIEZsb2F0aW5nIFVJIHdpdGguXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IGFzeW5jIChyZWZlcmVuY2UsIGZsb2F0aW5nLCBjb25maWcpID0+IHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCA9ICdib3R0b20nLFxuICAgIHN0cmF0ZWd5ID0gJ2Fic29sdXRlJyxcbiAgICBtaWRkbGV3YXJlID0gW10sXG4gICAgcGxhdGZvcm1cbiAgfSA9IGNvbmZpZztcbiAgY29uc3QgdmFsaWRNaWRkbGV3YXJlID0gbWlkZGxld2FyZS5maWx0ZXIoQm9vbGVhbik7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZmxvYXRpbmcpKTtcbiAgbGV0IHJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmcsXG4gICAgc3RyYXRlZ3lcbiAgfSk7XG4gIGxldCB7XG4gICAgeCxcbiAgICB5XG4gIH0gPSBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChyZWN0cywgcGxhY2VtZW50LCBydGwpO1xuICBsZXQgc3RhdGVmdWxQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gIGxldCBtaWRkbGV3YXJlRGF0YSA9IHt9O1xuICBsZXQgcmVzZXRDb3VudCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsaWRNaWRkbGV3YXJlLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qge1xuICAgICAgbmFtZSxcbiAgICAgIGZuXG4gICAgfSA9IHZhbGlkTWlkZGxld2FyZVtpXTtcbiAgICBjb25zdCB7XG4gICAgICB4OiBuZXh0WCxcbiAgICAgIHk6IG5leHRZLFxuICAgICAgZGF0YSxcbiAgICAgIHJlc2V0XG4gICAgfSA9IGF3YWl0IGZuKHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgaW5pdGlhbFBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgcGxhY2VtZW50OiBzdGF0ZWZ1bFBsYWNlbWVudCxcbiAgICAgIHN0cmF0ZWd5LFxuICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICByZWN0cyxcbiAgICAgIHBsYXRmb3JtLFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICBmbG9hdGluZ1xuICAgICAgfVxuICAgIH0pO1xuICAgIHggPSBuZXh0WCAhPSBudWxsID8gbmV4dFggOiB4O1xuICAgIHkgPSBuZXh0WSAhPSBudWxsID8gbmV4dFkgOiB5O1xuICAgIG1pZGRsZXdhcmVEYXRhID0ge1xuICAgICAgLi4ubWlkZGxld2FyZURhdGEsXG4gICAgICBbbmFtZV06IHtcbiAgICAgICAgLi4ubWlkZGxld2FyZURhdGFbbmFtZV0sXG4gICAgICAgIC4uLmRhdGFcbiAgICAgIH1cbiAgICB9O1xuICAgIGlmIChyZXNldCAmJiByZXNldENvdW50IDw9IDUwKSB7XG4gICAgICByZXNldENvdW50Kys7XG4gICAgICBpZiAodHlwZW9mIHJlc2V0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAocmVzZXQucGxhY2VtZW50KSB7XG4gICAgICAgICAgc3RhdGVmdWxQbGFjZW1lbnQgPSByZXNldC5wbGFjZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc2V0LnJlY3RzKSB7XG4gICAgICAgICAgcmVjdHMgPSByZXNldC5yZWN0cyA9PT0gdHJ1ZSA/IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgICAgICBmbG9hdGluZyxcbiAgICAgICAgICAgIHN0cmF0ZWd5XG4gICAgICAgICAgfSkgOiByZXNldC5yZWN0cztcbiAgICAgICAgfVxuICAgICAgICAoe1xuICAgICAgICAgIHgsXG4gICAgICAgICAgeVxuICAgICAgICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHN0YXRlZnVsUGxhY2VtZW50LCBydGwpKTtcbiAgICAgIH1cbiAgICAgIGkgPSAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgcGxhY2VtZW50OiBzdGF0ZWZ1bFBsYWNlbWVudCxcbiAgICBzdHJhdGVneSxcbiAgICBtaWRkbGV3YXJlRGF0YVxuICB9O1xufTtcblxuLyoqXG4gKiBSZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBvZiBvdmVyZmxvdyBzaWRlIG9mZnNldHMgdGhhdCBkZXRlcm1pbmUgaG93IG11Y2ggdGhlXG4gKiBlbGVtZW50IGlzIG92ZXJmbG93aW5nIGEgZ2l2ZW4gY2xpcHBpbmcgYm91bmRhcnkgb24gZWFjaCBzaWRlLlxuICogLSBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBib3VuZGFyeSBieSB0aGF0IG51bWJlciBvZiBwaXhlbHNcbiAqIC0gbmVnYXRpdmUgPSBob3cgbWFueSBwaXhlbHMgbGVmdCBiZWZvcmUgaXQgd2lsbCBvdmVyZmxvd1xuICogLSAwID0gbGllcyBmbHVzaCB3aXRoIHRoZSBib3VuZGFyeVxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2RldGVjdE92ZXJmbG93XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRldGVjdE92ZXJmbG93KHN0YXRlLCBvcHRpb25zKSB7XG4gIHZhciBfYXdhaXQkcGxhdGZvcm0kaXNFbGU7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIHgsXG4gICAgeSxcbiAgICBwbGF0Zm9ybSxcbiAgICByZWN0cyxcbiAgICBlbGVtZW50cyxcbiAgICBzdHJhdGVneVxuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHtcbiAgICBib3VuZGFyeSA9ICdjbGlwcGluZ0FuY2VzdG9ycycsXG4gICAgcm9vdEJvdW5kYXJ5ID0gJ3ZpZXdwb3J0JyxcbiAgICBlbGVtZW50Q29udGV4dCA9ICdmbG9hdGluZycsXG4gICAgYWx0Qm91bmRhcnkgPSBmYWxzZSxcbiAgICBwYWRkaW5nID0gMFxuICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKTtcbiAgY29uc3QgYWx0Q29udGV4dCA9IGVsZW1lbnRDb250ZXh0ID09PSAnZmxvYXRpbmcnID8gJ3JlZmVyZW5jZScgOiAnZmxvYXRpbmcnO1xuICBjb25zdCBlbGVtZW50ID0gZWxlbWVudHNbYWx0Qm91bmRhcnkgPyBhbHRDb250ZXh0IDogZWxlbWVudENvbnRleHRdO1xuICBjb25zdCBjbGlwcGluZ0NsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KGF3YWl0IHBsYXRmb3JtLmdldENsaXBwaW5nUmVjdCh7XG4gICAgZWxlbWVudDogKChfYXdhaXQkcGxhdGZvcm0kaXNFbGUgPSBhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQoZWxlbWVudCkpKSAhPSBudWxsID8gX2F3YWl0JHBsYXRmb3JtJGlzRWxlIDogdHJ1ZSkgPyBlbGVtZW50IDogZWxlbWVudC5jb250ZXh0RWxlbWVudCB8fCAoYXdhaXQgKHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnRzLmZsb2F0aW5nKSkpLFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9KSk7XG4gIGNvbnN0IHJlY3QgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/IHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGg6IHJlY3RzLmZsb2F0aW5nLndpZHRoLFxuICAgIGhlaWdodDogcmVjdHMuZmxvYXRpbmcuaGVpZ2h0XG4gIH0gOiByZWN0cy5yZWZlcmVuY2U7XG4gIGNvbnN0IG9mZnNldFBhcmVudCA9IGF3YWl0IChwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldE9mZnNldFBhcmVudChlbGVtZW50cy5mbG9hdGluZykpO1xuICBjb25zdCBvZmZzZXRTY2FsZSA9IChhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkpID8gKGF3YWl0IChwbGF0Zm9ybS5nZXRTY2FsZSA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0U2NhbGUob2Zmc2V0UGFyZW50KSkpIHx8IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfSA6IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfTtcbiAgY29uc3QgZWxlbWVudENsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0ID8gYXdhaXQgcGxhdGZvcm0uY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Qoe1xuICAgIGVsZW1lbnRzLFxuICAgIHJlY3QsXG4gICAgb2Zmc2V0UGFyZW50LFxuICAgIHN0cmF0ZWd5XG4gIH0pIDogcmVjdCk7XG4gIHJldHVybiB7XG4gICAgdG9wOiAoY2xpcHBpbmdDbGllbnRSZWN0LnRvcCAtIGVsZW1lbnRDbGllbnRSZWN0LnRvcCArIHBhZGRpbmdPYmplY3QudG9wKSAvIG9mZnNldFNjYWxlLnksXG4gICAgYm90dG9tOiAoZWxlbWVudENsaWVudFJlY3QuYm90dG9tIC0gY2xpcHBpbmdDbGllbnRSZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSAvIG9mZnNldFNjYWxlLnksXG4gICAgbGVmdDogKGNsaXBwaW5nQ2xpZW50UmVjdC5sZWZ0IC0gZWxlbWVudENsaWVudFJlY3QubGVmdCArIHBhZGRpbmdPYmplY3QubGVmdCkgLyBvZmZzZXRTY2FsZS54LFxuICAgIHJpZ2h0OiAoZWxlbWVudENsaWVudFJlY3QucmlnaHQgLSBjbGlwcGluZ0NsaWVudFJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0KSAvIG9mZnNldFNjYWxlLnhcbiAgfTtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc28gdGhhdCBpdFxuICogYXBwZWFycyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSBvcHRpb25zID0+ICh7XG4gIG5hbWU6ICdhcnJvdycsXG4gIG9wdGlvbnMsXG4gIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgY29uc3Qge1xuICAgICAgeCxcbiAgICAgIHksXG4gICAgICBwbGFjZW1lbnQsXG4gICAgICByZWN0cyxcbiAgICAgIHBsYXRmb3JtLFxuICAgICAgZWxlbWVudHMsXG4gICAgICBtaWRkbGV3YXJlRGF0YVxuICAgIH0gPSBzdGF0ZTtcbiAgICAvLyBTaW5jZSBgZWxlbWVudGAgaXMgcmVxdWlyZWQsIHdlIGRvbid0IFBhcnRpYWw8PiB0aGUgdHlwZS5cbiAgICBjb25zdCB7XG4gICAgICBlbGVtZW50LFxuICAgICAgcGFkZGluZyA9IDBcbiAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpIHx8IHt9O1xuICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgeCxcbiAgICAgIHlcbiAgICB9O1xuICAgIGNvbnN0IGF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gICAgY29uc3QgbGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChheGlzKTtcbiAgICBjb25zdCBhcnJvd0RpbWVuc2lvbnMgPSBhd2FpdCBwbGF0Zm9ybS5nZXREaW1lbnNpb25zKGVsZW1lbnQpO1xuICAgIGNvbnN0IGlzWUF4aXMgPSBheGlzID09PSAneSc7XG4gICAgY29uc3QgbWluUHJvcCA9IGlzWUF4aXMgPyAndG9wJyA6ICdsZWZ0JztcbiAgICBjb25zdCBtYXhQcm9wID0gaXNZQXhpcyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICBjb25zdCBjbGllbnRQcm9wID0gaXNZQXhpcyA/ICdjbGllbnRIZWlnaHQnIDogJ2NsaWVudFdpZHRoJztcbiAgICBjb25zdCBlbmREaWZmID0gcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gKyByZWN0cy5yZWZlcmVuY2VbYXhpc10gLSBjb29yZHNbYXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5ndGhdO1xuICAgIGNvbnN0IHN0YXJ0RGlmZiA9IGNvb3Jkc1theGlzXSAtIHJlY3RzLnJlZmVyZW5jZVtheGlzXTtcbiAgICBjb25zdCBhcnJvd09mZnNldFBhcmVudCA9IGF3YWl0IChwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldE9mZnNldFBhcmVudChlbGVtZW50KSk7XG4gICAgbGV0IGNsaWVudFNpemUgPSBhcnJvd09mZnNldFBhcmVudCA/IGFycm93T2Zmc2V0UGFyZW50W2NsaWVudFByb3BdIDogMDtcblxuICAgIC8vIERPTSBwbGF0Zm9ybSBjYW4gcmV0dXJuIGB3aW5kb3dgIGFzIHRoZSBgb2Zmc2V0UGFyZW50YC5cbiAgICBpZiAoIWNsaWVudFNpemUgfHwgIShhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQoYXJyb3dPZmZzZXRQYXJlbnQpKSkpIHtcbiAgICAgIGNsaWVudFNpemUgPSBlbGVtZW50cy5mbG9hdGluZ1tjbGllbnRQcm9wXSB8fCByZWN0cy5mbG9hdGluZ1tsZW5ndGhdO1xuICAgIH1cbiAgICBjb25zdCBjZW50ZXJUb1JlZmVyZW5jZSA9IGVuZERpZmYgLyAyIC0gc3RhcnREaWZmIC8gMjtcblxuICAgIC8vIElmIHRoZSBwYWRkaW5nIGlzIGxhcmdlIGVub3VnaCB0aGF0IGl0IGNhdXNlcyB0aGUgYXJyb3cgdG8gbm8gbG9uZ2VyIGJlXG4gICAgLy8gY2VudGVyZWQsIG1vZGlmeSB0aGUgcGFkZGluZyBzbyB0aGF0IGl0IGlzIGNlbnRlcmVkLlxuICAgIGNvbnN0IGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiAtIDE7XG4gICAgY29uc3QgbWluUGFkZGluZyA9IG1pbihwYWRkaW5nT2JqZWN0W21pblByb3BdLCBsYXJnZXN0UG9zc2libGVQYWRkaW5nKTtcbiAgICBjb25zdCBtYXhQYWRkaW5nID0gbWluKHBhZGRpbmdPYmplY3RbbWF4UHJvcF0sIGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcpO1xuXG4gICAgLy8gTWFrZSBzdXJlIHRoZSBhcnJvdyBkb2Vzbid0IG92ZXJmbG93IHRoZSBmbG9hdGluZyBlbGVtZW50IGlmIHRoZSBjZW50ZXJcbiAgICAvLyBwb2ludCBpcyBvdXRzaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50J3MgYm91bmRzLlxuICAgIGNvbnN0IG1pbiQxID0gbWluUGFkZGluZztcbiAgICBjb25zdCBtYXggPSBjbGllbnRTaXplIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLSBtYXhQYWRkaW5nO1xuICAgIGNvbnN0IGNlbnRlciA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyICsgY2VudGVyVG9SZWZlcmVuY2U7XG4gICAgY29uc3Qgb2Zmc2V0ID0gY2xhbXAobWluJDEsIGNlbnRlciwgbWF4KTtcblxuICAgIC8vIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGwgZW5vdWdoIHRoYXQgdGhlIGFycm93J3MgcGFkZGluZyBjYXVzZXMgaXQgdG9cbiAgICAvLyB0byBwb2ludCB0byBub3RoaW5nIGZvciBhbiBhbGlnbmVkIHBsYWNlbWVudCwgYWRqdXN0IHRoZSBvZmZzZXQgb2YgdGhlXG4gICAgLy8gZmxvYXRpbmcgZWxlbWVudCBpdHNlbGYuIFRvIGVuc3VyZSBgc2hpZnQoKWAgY29udGludWVzIHRvIHRha2UgYWN0aW9uLFxuICAgIC8vIGEgc2luZ2xlIHJlc2V0IGlzIHBlcmZvcm1lZCB3aGVuIHRoaXMgaXMgdHJ1ZS5cbiAgICBjb25zdCBzaG91bGRBZGRPZmZzZXQgPSAhbWlkZGxld2FyZURhdGEuYXJyb3cgJiYgZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgIT0gbnVsbCAmJiBjZW50ZXIgIT09IG9mZnNldCAmJiByZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSAvIDIgLSAoY2VudGVyIDwgbWluJDEgPyBtaW5QYWRkaW5nIDogbWF4UGFkZGluZykgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgPCAwO1xuICAgIGNvbnN0IGFsaWdubWVudE9mZnNldCA9IHNob3VsZEFkZE9mZnNldCA/IGNlbnRlciA8IG1pbiQxID8gY2VudGVyIC0gbWluJDEgOiBjZW50ZXIgLSBtYXggOiAwO1xuICAgIHJldHVybiB7XG4gICAgICBbYXhpc106IGNvb3Jkc1theGlzXSArIGFsaWdubWVudE9mZnNldCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgW2F4aXNdOiBvZmZzZXQsXG4gICAgICAgIGNlbnRlck9mZnNldDogY2VudGVyIC0gb2Zmc2V0IC0gYWxpZ25tZW50T2Zmc2V0LFxuICAgICAgICAuLi4oc2hvdWxkQWRkT2Zmc2V0ICYmIHtcbiAgICAgICAgICBhbGlnbm1lbnRPZmZzZXRcbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICByZXNldDogc2hvdWxkQWRkT2Zmc2V0XG4gICAgfTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGdldFBsYWNlbWVudExpc3QoYWxpZ25tZW50LCBhdXRvQWxpZ25tZW50LCBhbGxvd2VkUGxhY2VtZW50cykge1xuICBjb25zdCBhbGxvd2VkUGxhY2VtZW50c1NvcnRlZEJ5QWxpZ25tZW50ID0gYWxpZ25tZW50ID8gWy4uLmFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCksIC4uLmFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgIT09IGFsaWdubWVudCldIDogYWxsb3dlZFBsYWNlbWVudHMuZmlsdGVyKHBsYWNlbWVudCA9PiBnZXRTaWRlKHBsYWNlbWVudCkgPT09IHBsYWNlbWVudCk7XG4gIHJldHVybiBhbGxvd2VkUGxhY2VtZW50c1NvcnRlZEJ5QWxpZ25tZW50LmZpbHRlcihwbGFjZW1lbnQgPT4ge1xuICAgIGlmIChhbGlnbm1lbnQpIHtcbiAgICAgIHJldHVybiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSA9PT0gYWxpZ25tZW50IHx8IChhdXRvQWxpZ25tZW50ID8gZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSAhPT0gcGxhY2VtZW50IDogZmFsc2UpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG59XG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBjaG9vc2luZyB0aGUgcGxhY2VtZW50XG4gKiB0aGF0IGhhcyB0aGUgbW9zdCBzcGFjZSBhdmFpbGFibGUgYXV0b21hdGljYWxseSwgd2l0aG91dCBuZWVkaW5nIHRvIHNwZWNpZnkgYVxuICogcHJlZmVycmVkIHBsYWNlbWVudC4gQWx0ZXJuYXRpdmUgdG8gYGZsaXBgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9QbGFjZW1lbnRcbiAqL1xuY29uc3QgYXV0b1BsYWNlbWVudCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYXV0b1BsYWNlbWVudCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRhdXRvUCwgX21pZGRsZXdhcmVEYXRhJGF1dG9QMiwgX3BsYWNlbWVudHNUaGF0Rml0T25FO1xuICAgICAgY29uc3Qge1xuICAgICAgICByZWN0cyxcbiAgICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGNyb3NzQXhpcyA9IGZhbHNlLFxuICAgICAgICBhbGlnbm1lbnQsXG4gICAgICAgIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cyxcbiAgICAgICAgYXV0b0FsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IHBsYWNlbWVudHMkMSA9IGFsaWdubWVudCAhPT0gdW5kZWZpbmVkIHx8IGFsbG93ZWRQbGFjZW1lbnRzID09PSBwbGFjZW1lbnRzID8gZ2V0UGxhY2VtZW50TGlzdChhbGlnbm1lbnQgfHwgbnVsbCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIDogYWxsb3dlZFBsYWNlbWVudHM7XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gKChfbWlkZGxld2FyZURhdGEkYXV0b1AgPSBtaWRkbGV3YXJlRGF0YS5hdXRvUGxhY2VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGF1dG9QLmluZGV4KSB8fCAwO1xuICAgICAgY29uc3QgY3VycmVudFBsYWNlbWVudCA9IHBsYWNlbWVudHMkMVtjdXJyZW50SW5kZXhdO1xuICAgICAgaWYgKGN1cnJlbnRQbGFjZW1lbnQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCBhbGlnbm1lbnRTaWRlcyA9IGdldEFsaWdubWVudFNpZGVzKGN1cnJlbnRQbGFjZW1lbnQsIHJlY3RzLCBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSkpO1xuXG4gICAgICAvLyBNYWtlIGBjb21wdXRlQ29vcmRzYCBzdGFydCBmcm9tIHRoZSByaWdodCBwbGFjZS5cbiAgICAgIGlmIChwbGFjZW1lbnQgIT09IGN1cnJlbnRQbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnRzJDFbMF1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50T3ZlcmZsb3dzID0gW292ZXJmbG93W2dldFNpZGUoY3VycmVudFBsYWNlbWVudCldLCBvdmVyZmxvd1thbGlnbm1lbnRTaWRlc1swXV0sIG92ZXJmbG93W2FsaWdubWVudFNpZGVzWzFdXV07XG4gICAgICBjb25zdCBhbGxPdmVyZmxvd3MgPSBbLi4uKCgoX21pZGRsZXdhcmVEYXRhJGF1dG9QMiA9IG1pZGRsZXdhcmVEYXRhLmF1dG9QbGFjZW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXV0b1AyLm92ZXJmbG93cykgfHwgW10pLCB7XG4gICAgICAgIHBsYWNlbWVudDogY3VycmVudFBsYWNlbWVudCxcbiAgICAgICAgb3ZlcmZsb3dzOiBjdXJyZW50T3ZlcmZsb3dzXG4gICAgICB9XTtcbiAgICAgIGNvbnN0IG5leHRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzJDFbY3VycmVudEluZGV4ICsgMV07XG5cbiAgICAgIC8vIFRoZXJlIGFyZSBtb3JlIHBsYWNlbWVudHMgdG8gY2hlY2suXG4gICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UgPSBhbGxPdmVyZmxvd3MubWFwKGQgPT4ge1xuICAgICAgICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQoZC5wbGFjZW1lbnQpO1xuICAgICAgICByZXR1cm4gW2QucGxhY2VtZW50LCBhbGlnbm1lbnQgJiYgY3Jvc3NBeGlzID9cbiAgICAgICAgLy8gQ2hlY2sgYWxvbmcgdGhlIG1haW5BeGlzIGFuZCBtYWluIGNyb3NzQXhpcyBzaWRlLlxuICAgICAgICBkLm92ZXJmbG93cy5zbGljZSgwLCAyKS5yZWR1Y2UoKGFjYywgdikgPT4gYWNjICsgdiwgMCkgOlxuICAgICAgICAvLyBDaGVjayBvbmx5IHRoZSBtYWluQXhpcy5cbiAgICAgICAgZC5vdmVyZmxvd3NbMF0sIGQub3ZlcmZsb3dzXTtcbiAgICAgIH0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKTtcbiAgICAgIGNvbnN0IHBsYWNlbWVudHNUaGF0Rml0T25FYWNoU2lkZSA9IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZS5maWx0ZXIoZCA9PiBkWzJdLnNsaWNlKDAsXG4gICAgICAvLyBBbGlnbmVkIHBsYWNlbWVudHMgc2hvdWxkIG5vdCBjaGVjayB0aGVpciBvcHBvc2l0ZSBjcm9zc0F4aXNcbiAgICAgIC8vIHNpZGUuXG4gICAgICBnZXRBbGlnbm1lbnQoZFswXSkgPyAyIDogMykuZXZlcnkodiA9PiB2IDw9IDApKTtcbiAgICAgIGNvbnN0IHJlc2V0UGxhY2VtZW50ID0gKChfcGxhY2VtZW50c1RoYXRGaXRPbkUgPSBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGVbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfcGxhY2VtZW50c1RoYXRGaXRPbkVbMF0pIHx8IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZVswXVswXTtcbiAgICAgIGlmIChyZXNldFBsYWNlbWVudCAhPT0gcGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgaW5kZXg6IGN1cnJlbnRJbmRleCArIDEsXG4gICAgICAgICAgICBvdmVyZmxvd3M6IGFsbE92ZXJmbG93c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcmVzZXRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgZmxpcHBpbmcgdGhlIGBwbGFjZW1lbnRgXG4gKiBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcgd2hlbiB0aGUgcHJlZmVycmVkIHBsYWNlbWVudChzKSB3aWxsIG92ZXJmbG93IHRoZVxuICogY2xpcHBpbmcgYm91bmRhcnkuIEFsdGVybmF0aXZlIHRvIGBhdXRvUGxhY2VtZW50YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwXG4gKi9cbmNvbnN0IGZsaXAgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2ZsaXAnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXJyb3csIF9taWRkbGV3YXJlRGF0YSRmbGlwO1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgaW5pdGlhbFBsYWNlbWVudCxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IHRydWUsXG4gICAgICAgIGZhbGxiYWNrUGxhY2VtZW50czogc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzLFxuICAgICAgICBmYWxsYmFja1N0cmF0ZWd5ID0gJ2Jlc3RGaXQnLFxuICAgICAgICBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uID0gJ25vbmUnLFxuICAgICAgICBmbGlwQWxpZ25tZW50ID0gdHJ1ZSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuXG4gICAgICAvLyBJZiBhIHJlc2V0IGJ5IHRoZSBhcnJvdyB3YXMgY2F1c2VkIGR1ZSB0byBhbiBhbGlnbm1lbnQgb2Zmc2V0IGJlaW5nXG4gICAgICAvLyBhZGRlZCwgd2Ugc2hvdWxkIHNraXAgYW55IGxvZ2ljIG5vdyBzaW5jZSBgZmxpcCgpYCBoYXMgYWxyZWFkeSBkb25lIGl0c1xuICAgICAgLy8gd29yay5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjU0OSNpc3N1ZWNvbW1lbnQtMTcxOTYwMTY0M1xuICAgICAgaWYgKChfbWlkZGxld2FyZURhdGEkYXJyb3cgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgIT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3cuYWxpZ25tZW50T2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpbml0aWFsU2lkZUF4aXMgPSBnZXRTaWRlQXhpcyhpbml0aWFsUGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGlzQmFzZVBsYWNlbWVudCA9IGdldFNpZGUoaW5pdGlhbFBsYWNlbWVudCkgPT09IGluaXRpYWxQbGFjZW1lbnQ7XG4gICAgICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gICAgICBjb25zdCBmYWxsYmFja1BsYWNlbWVudHMgPSBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgfHwgKGlzQmFzZVBsYWNlbWVudCB8fCAhZmxpcEFsaWdubWVudCA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChpbml0aWFsUGxhY2VtZW50KV0gOiBnZXRFeHBhbmRlZFBsYWNlbWVudHMoaW5pdGlhbFBsYWNlbWVudCkpO1xuICAgICAgY29uc3QgaGFzRmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9IGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gIT09ICdub25lJztcbiAgICAgIGlmICghc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzICYmIGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24pIHtcbiAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzLnB1c2goLi4uZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhpbml0aWFsUGxhY2VtZW50LCBmbGlwQWxpZ25tZW50LCBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uLCBydGwpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBsYWNlbWVudHMgPSBbaW5pdGlhbFBsYWNlbWVudCwgLi4uZmFsbGJhY2tQbGFjZW1lbnRzXTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBvdmVyZmxvd3MgPSBbXTtcbiAgICAgIGxldCBvdmVyZmxvd3NEYXRhID0gKChfbWlkZGxld2FyZURhdGEkZmxpcCA9IG1pZGRsZXdhcmVEYXRhLmZsaXApID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkZmxpcC5vdmVyZmxvd3MpIHx8IFtdO1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgb3ZlcmZsb3dzLnB1c2gob3ZlcmZsb3dbc2lkZV0pO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IHNpZGVzID0gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKTtcbiAgICAgICAgb3ZlcmZsb3dzLnB1c2gob3ZlcmZsb3dbc2lkZXNbMF1dLCBvdmVyZmxvd1tzaWRlc1sxXV0pO1xuICAgICAgfVxuICAgICAgb3ZlcmZsb3dzRGF0YSA9IFsuLi5vdmVyZmxvd3NEYXRhLCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgb3ZlcmZsb3dzXG4gICAgICB9XTtcblxuICAgICAgLy8gT25lIG9yIG1vcmUgc2lkZXMgaXMgb3ZlcmZsb3dpbmcuXG4gICAgICBpZiAoIW92ZXJmbG93cy5ldmVyeShzaWRlID0+IHNpZGUgPD0gMCkpIHtcbiAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRmbGlwMiwgX292ZXJmbG93c0RhdGEkZmlsdGVyO1xuICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoKChfbWlkZGxld2FyZURhdGEkZmxpcDIgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAyLmluZGV4KSB8fCAwKSArIDE7XG4gICAgICAgIGNvbnN0IG5leHRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzW25leHRJbmRleF07XG4gICAgICAgIGlmIChuZXh0UGxhY2VtZW50KSB7XG4gICAgICAgICAgLy8gVHJ5IG5leHQgcGxhY2VtZW50IGFuZCByZS1ydW4gdGhlIGxpZmVjeWNsZS5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBpbmRleDogbmV4dEluZGV4LFxuICAgICAgICAgICAgICBvdmVyZmxvd3M6IG92ZXJmbG93c0RhdGFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmlyc3QsIGZpbmQgdGhlIGNhbmRpZGF0ZXMgdGhhdCBmaXQgb24gdGhlIG1haW5BeGlzIHNpZGUgb2Ygb3ZlcmZsb3csXG4gICAgICAgIC8vIHRoZW4gZmluZCB0aGUgcGxhY2VtZW50IHRoYXQgZml0cyB0aGUgYmVzdCBvbiB0aGUgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgbGV0IHJlc2V0UGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlciA9IG92ZXJmbG93c0RhdGEuZmlsdGVyKGQgPT4gZC5vdmVyZmxvd3NbMF0gPD0gMCkuc29ydCgoYSwgYikgPT4gYS5vdmVyZmxvd3NbMV0gLSBiLm92ZXJmbG93c1sxXSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIucGxhY2VtZW50O1xuXG4gICAgICAgIC8vIE90aGVyd2lzZSBmYWxsYmFjay5cbiAgICAgICAgaWYgKCFyZXNldFBsYWNlbWVudCkge1xuICAgICAgICAgIHN3aXRjaCAoZmFsbGJhY2tTdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSAnYmVzdEZpdCc6XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YXIgX292ZXJmbG93c0RhdGEkZmlsdGVyMjtcbiAgICAgICAgICAgICAgICBjb25zdCBwbGFjZW1lbnQgPSAoX292ZXJmbG93c0RhdGEkZmlsdGVyMiA9IG92ZXJmbG93c0RhdGEuZmlsdGVyKGQgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNpZGVBeGlzID0gZ2V0U2lkZUF4aXMoZC5wbGFjZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNpZGVBeGlzID09PSBpbml0aWFsU2lkZUF4aXMgfHxcbiAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgYmlhcyB0byB0aGUgYHlgIHNpZGUgYXhpcyBkdWUgdG8gaG9yaXpvbnRhbFxuICAgICAgICAgICAgICAgICAgICAvLyByZWFkaW5nIGRpcmVjdGlvbnMgZmF2b3JpbmcgZ3JlYXRlciB3aWR0aC5cbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFNpZGVBeGlzID09PSAneSc7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KS5tYXAoZCA9PiBbZC5wbGFjZW1lbnQsIGQub3ZlcmZsb3dzLmZpbHRlcihvdmVyZmxvdyA9PiBvdmVyZmxvdyA+IDApLnJlZHVjZSgoYWNjLCBvdmVyZmxvdykgPT4gYWNjICsgb3ZlcmZsb3csIDApXSkuc29ydCgoYSwgYikgPT4gYVsxXSAtIGJbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkZmlsdGVyMlswXTtcbiAgICAgICAgICAgICAgICBpZiAocGxhY2VtZW50KSB7XG4gICAgICAgICAgICAgICAgICByZXNldFBsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2luaXRpYWxQbGFjZW1lbnQnOlxuICAgICAgICAgICAgICByZXNldFBsYWNlbWVudCA9IGluaXRpYWxQbGFjZW1lbnQ7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocGxhY2VtZW50ICE9PSByZXNldFBsYWNlbWVudCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgICBwbGFjZW1lbnQ6IHJlc2V0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0KSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiBvdmVyZmxvdy50b3AgLSByZWN0LmhlaWdodCxcbiAgICByaWdodDogb3ZlcmZsb3cucmlnaHQgLSByZWN0LndpZHRoLFxuICAgIGJvdHRvbTogb3ZlcmZsb3cuYm90dG9tIC0gcmVjdC5oZWlnaHQsXG4gICAgbGVmdDogb3ZlcmZsb3cubGVmdCAtIHJlY3Qud2lkdGhcbiAgfTtcbn1cbmZ1bmN0aW9uIGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvdmVyZmxvdykge1xuICByZXR1cm4gc2lkZXMuc29tZShzaWRlID0+IG92ZXJmbG93W3NpZGVdID49IDApO1xufVxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIGhpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaW4gYXBwbGljYWJsZSBzaXR1YXRpb25zLCBzdWNoIGFzXG4gKiB3aGVuIGl0IGlzIG5vdCBpbiB0aGUgc2FtZSBjbGlwcGluZyBjb250ZXh0IGFzIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9oaWRlXG4gKi9cbmNvbnN0IGhpZGUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2hpZGUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc3RyYXRlZ3kgPSAncmVmZXJlbmNlSGlkZGVuJyxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgc3dpdGNoIChzdHJhdGVneSkge1xuICAgICAgICBjYXNlICdyZWZlcmVuY2VIaWRkZW4nOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zLFxuICAgICAgICAgICAgICBlbGVtZW50Q29udGV4dDogJ3JlZmVyZW5jZSdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5yZWZlcmVuY2UpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbk9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlSGlkZGVuOiBpc0FueVNpZGVGdWxseUNsaXBwZWQob2Zmc2V0cylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2VzY2FwZWQnOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zLFxuICAgICAgICAgICAgICBhbHRCb3VuZGFyeTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3RzLmZsb2F0aW5nKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBlc2NhcGVkT2Zmc2V0czogb2Zmc2V0cyxcbiAgICAgICAgICAgICAgICBlc2NhcGVkOiBpc0FueVNpZGVGdWxseUNsaXBwZWQob2Zmc2V0cylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ1JlY3QocmVjdHMpIHtcbiAgY29uc3QgbWluWCA9IG1pbiguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LmxlZnQpKTtcbiAgY29uc3QgbWluWSA9IG1pbiguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnRvcCkpO1xuICBjb25zdCBtYXhYID0gbWF4KC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgY29uc3QgbWF4WSA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LmJvdHRvbSkpO1xuICByZXR1cm4ge1xuICAgIHg6IG1pblgsXG4gICAgeTogbWluWSxcbiAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgaGVpZ2h0OiBtYXhZIC0gbWluWVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0UmVjdHNCeUxpbmUocmVjdHMpIHtcbiAgY29uc3Qgc29ydGVkUmVjdHMgPSByZWN0cy5zbGljZSgpLnNvcnQoKGEsIGIpID0+IGEueSAtIGIueSk7XG4gIGNvbnN0IGdyb3VwcyA9IFtdO1xuICBsZXQgcHJldlJlY3QgPSBudWxsO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNvcnRlZFJlY3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgcmVjdCA9IHNvcnRlZFJlY3RzW2ldO1xuICAgIGlmICghcHJldlJlY3QgfHwgcmVjdC55IC0gcHJldlJlY3QueSA+IHByZXZSZWN0LmhlaWdodCAvIDIpIHtcbiAgICAgIGdyb3Vwcy5wdXNoKFtyZWN0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyb3Vwc1tncm91cHMubGVuZ3RoIC0gMV0ucHVzaChyZWN0KTtcbiAgICB9XG4gICAgcHJldlJlY3QgPSByZWN0O1xuICB9XG4gIHJldHVybiBncm91cHMubWFwKHJlY3QgPT4gcmVjdFRvQ2xpZW50UmVjdChnZXRCb3VuZGluZ1JlY3QocmVjdCkpKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgaW1wcm92ZWQgcG9zaXRpb25pbmcgZm9yIGlubGluZSByZWZlcmVuY2UgZWxlbWVudHMgdGhhdCBjYW4gc3BhblxuICogb3ZlciBtdWx0aXBsZSBsaW5lcywgc3VjaCBhcyBoeXBlcmxpbmtzIG9yIHJhbmdlIHNlbGVjdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaW5saW5lXG4gKi9cbmNvbnN0IGlubGluZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnaW5saW5lJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgZWxlbWVudHMsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIC8vIEEgTW91c2VFdmVudCdzIGNsaWVudHtYLFl9IGNvb3JkcyBjYW4gYmUgdXAgdG8gMiBwaXhlbHMgb2ZmIGFcbiAgICAgIC8vIENsaWVudFJlY3QncyBib3VuZHMsIGRlc3BpdGUgdGhlIGV2ZW50IGxpc3RlbmVyIGJlaW5nIHRyaWdnZXJlZC4gQVxuICAgICAgLy8gcGFkZGluZyBvZiAyIHNlZW1zIHRvIGhhbmRsZSB0aGlzIGlzc3VlLlxuICAgICAgY29uc3Qge1xuICAgICAgICBwYWRkaW5nID0gMixcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IG5hdGl2ZUNsaWVudFJlY3RzID0gQXJyYXkuZnJvbSgoYXdhaXQgKHBsYXRmb3JtLmdldENsaWVudFJlY3RzID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyhlbGVtZW50cy5yZWZlcmVuY2UpKSkgfHwgW10pO1xuICAgICAgY29uc3QgY2xpZW50UmVjdHMgPSBnZXRSZWN0c0J5TGluZShuYXRpdmVDbGllbnRSZWN0cyk7XG4gICAgICBjb25zdCBmYWxsYmFjayA9IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KG5hdGl2ZUNsaWVudFJlY3RzKSk7XG4gICAgICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKTtcbiAgICAgIGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIHtcbiAgICAgICAgLy8gVGhlcmUgYXJlIHR3byByZWN0cyBhbmQgdGhleSBhcmUgZGlzam9pbmVkLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID09PSAyICYmIGNsaWVudFJlY3RzWzBdLmxlZnQgPiBjbGllbnRSZWN0c1sxXS5yaWdodCAmJiB4ICE9IG51bGwgJiYgeSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgcmVjdCBpbiB3aGljaCB0aGUgcG9pbnQgaXMgZnVsbHkgaW5zaWRlLlxuICAgICAgICAgIHJldHVybiBjbGllbnRSZWN0cy5maW5kKHJlY3QgPT4geCA+IHJlY3QubGVmdCAtIHBhZGRpbmdPYmplY3QubGVmdCAmJiB4IDwgcmVjdC5yaWdodCArIHBhZGRpbmdPYmplY3QucmlnaHQgJiYgeSA+IHJlY3QudG9wIC0gcGFkZGluZ09iamVjdC50b3AgJiYgeSA8IHJlY3QuYm90dG9tICsgcGFkZGluZ09iamVjdC5ib3R0b20pIHx8IGZhbGxiYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlcmUgYXJlIDIgb3IgbW9yZSBjb25uZWN0ZWQgcmVjdHMuXG4gICAgICAgIGlmIChjbGllbnRSZWN0cy5sZW5ndGggPj0gMikge1xuICAgICAgICAgIGlmIChnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneScpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0UmVjdCA9IGNsaWVudFJlY3RzWzBdO1xuICAgICAgICAgICAgY29uc3QgbGFzdFJlY3QgPSBjbGllbnRSZWN0c1tjbGllbnRSZWN0cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IGlzVG9wID0gZ2V0U2lkZShwbGFjZW1lbnQpID09PSAndG9wJztcbiAgICAgICAgICAgIGNvbnN0IHRvcCA9IGZpcnN0UmVjdC50b3A7XG4gICAgICAgICAgICBjb25zdCBib3R0b20gPSBsYXN0UmVjdC5ib3R0b207XG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gaXNUb3AgPyBmaXJzdFJlY3QubGVmdCA6IGxhc3RSZWN0LmxlZnQ7XG4gICAgICAgICAgICBjb25zdCByaWdodCA9IGlzVG9wID8gZmlyc3RSZWN0LnJpZ2h0IDogbGFzdFJlY3QucmlnaHQ7XG4gICAgICAgICAgICBjb25zdCB3aWR0aCA9IHJpZ2h0IC0gbGVmdDtcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgICBsZWZ0LFxuICAgICAgICAgICAgICByaWdodCxcbiAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgICAgeDogbGVmdCxcbiAgICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpc0xlZnRTaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpID09PSAnbGVmdCc7XG4gICAgICAgICAgY29uc3QgbWF4UmlnaHQgPSBtYXgoLi4uY2xpZW50UmVjdHMubWFwKHJlY3QgPT4gcmVjdC5yaWdodCkpO1xuICAgICAgICAgIGNvbnN0IG1pbkxlZnQgPSBtaW4oLi4uY2xpZW50UmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gICAgICAgICAgY29uc3QgbWVhc3VyZVJlY3RzID0gY2xpZW50UmVjdHMuZmlsdGVyKHJlY3QgPT4gaXNMZWZ0U2lkZSA/IHJlY3QubGVmdCA9PT0gbWluTGVmdCA6IHJlY3QucmlnaHQgPT09IG1heFJpZ2h0KTtcbiAgICAgICAgICBjb25zdCB0b3AgPSBtZWFzdXJlUmVjdHNbMF0udG9wO1xuICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IG1lYXN1cmVSZWN0c1ttZWFzdXJlUmVjdHMubGVuZ3RoIC0gMV0uYm90dG9tO1xuICAgICAgICAgIGNvbnN0IGxlZnQgPSBtaW5MZWZ0O1xuICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gbWF4UmlnaHQ7XG4gICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgY29uc3QgaGVpZ2h0ID0gYm90dG9tIC0gdG9wO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICBib3R0b20sXG4gICAgICAgICAgICBsZWZ0LFxuICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICB5OiB0b3BcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxsYmFjaztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc2V0UmVjdHMgPSBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgICAgICByZWZlcmVuY2U6IHtcbiAgICAgICAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3RcbiAgICAgICAgfSxcbiAgICAgICAgZmxvYXRpbmc6IGVsZW1lbnRzLmZsb2F0aW5nLFxuICAgICAgICBzdHJhdGVneVxuICAgICAgfSk7XG4gICAgICBpZiAocmVjdHMucmVmZXJlbmNlLnggIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLnggfHwgcmVjdHMucmVmZXJlbmNlLnkgIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLnkgfHwgcmVjdHMucmVmZXJlbmNlLndpZHRoICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS53aWR0aCB8fCByZWN0cy5yZWZlcmVuY2UuaGVpZ2h0ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcmVjdHM6IHJlc2V0UmVjdHNcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuLy8gRm9yIHR5cGUgYmFja3dhcmRzLWNvbXBhdGliaWxpdHksIHRoZSBgT2Zmc2V0T3B0aW9uc2AgdHlwZSB3YXMgYWxzb1xuLy8gRGVyaXZhYmxlLlxuXG5hc3luYyBmdW5jdGlvbiBjb252ZXJ0VmFsdWVUb0Nvb3JkcyhzdGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgcGxhY2VtZW50LFxuICAgIHBsYXRmb3JtLFxuICAgIGVsZW1lbnRzXG4gIH0gPSBzdGF0ZTtcbiAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCkgPT09ICd5JztcbiAgY29uc3QgbWFpbkF4aXNNdWx0aSA9IFsnbGVmdCcsICd0b3AnXS5pbmNsdWRlcyhzaWRlKSA/IC0xIDogMTtcbiAgY29uc3QgY3Jvc3NBeGlzTXVsdGkgPSBydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMTtcbiAgY29uc3QgcmF3VmFsdWUgPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICBsZXQge1xuICAgIG1haW5BeGlzLFxuICAgIGNyb3NzQXhpcyxcbiAgICBhbGlnbm1lbnRBeGlzXG4gIH0gPSB0eXBlb2YgcmF3VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiByYXdWYWx1ZSxcbiAgICBjcm9zc0F4aXM6IDAsXG4gICAgYWxpZ25tZW50QXhpczogbnVsbFxuICB9IDoge1xuICAgIG1haW5BeGlzOiAwLFxuICAgIGNyb3NzQXhpczogMCxcbiAgICBhbGlnbm1lbnRBeGlzOiBudWxsLFxuICAgIC4uLnJhd1ZhbHVlXG4gIH07XG4gIGlmIChhbGlnbm1lbnQgJiYgdHlwZW9mIGFsaWdubWVudEF4aXMgPT09ICdudW1iZXInKSB7XG4gICAgY3Jvc3NBeGlzID0gYWxpZ25tZW50ID09PSAnZW5kJyA/IGFsaWdubWVudEF4aXMgKiAtMSA6IGFsaWdubWVudEF4aXM7XG4gIH1cbiAgcmV0dXJuIGlzVmVydGljYWwgPyB7XG4gICAgeDogY3Jvc3NBeGlzICogY3Jvc3NBeGlzTXVsdGksXG4gICAgeTogbWFpbkF4aXMgKiBtYWluQXhpc011bHRpXG4gIH0gOiB7XG4gICAgeDogbWFpbkF4aXMgKiBtYWluQXhpc011bHRpLFxuICAgIHk6IGNyb3NzQXhpcyAqIGNyb3NzQXhpc011bHRpXG4gIH07XG59XG5cbi8qKlxuICogTW9kaWZpZXMgdGhlIHBsYWNlbWVudCBieSB0cmFuc2xhdGluZyB0aGUgZmxvYXRpbmcgZWxlbWVudCBhbG9uZyB0aGVcbiAqIHNwZWNpZmllZCBheGVzLlxuICogQSBudW1iZXIgKHNob3J0aGFuZCBmb3IgYG1haW5BeGlzYCBvciBkaXN0YW5jZSksIG9yIGFuIGF4ZXMgY29uZmlndXJhdGlvblxuICogb2JqZWN0IG1heSBiZSBwYXNzZWQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvb2Zmc2V0XG4gKi9cbmNvbnN0IG9mZnNldCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0gMDtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdvZmZzZXQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkb2Zmc2UsIF9taWRkbGV3YXJlRGF0YSRhcnJvdztcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBtaWRkbGV3YXJlRGF0YVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgZGlmZkNvb3JkcyA9IGF3YWl0IGNvbnZlcnRWYWx1ZVRvQ29vcmRzKHN0YXRlLCBvcHRpb25zKTtcblxuICAgICAgLy8gSWYgdGhlIHBsYWNlbWVudCBpcyB0aGUgc2FtZSBhbmQgdGhlIGFycm93IGNhdXNlZCBhbiBhbGlnbm1lbnQgb2Zmc2V0XG4gICAgICAvLyB0aGVuIHdlIGRvbid0IG5lZWQgdG8gY2hhbmdlIHRoZSBwb3NpdGlvbmluZyBjb29yZGluYXRlcy5cbiAgICAgIGlmIChwbGFjZW1lbnQgPT09ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlLnBsYWNlbWVudCkgJiYgKF9taWRkbGV3YXJlRGF0YSRhcnJvdyA9IG1pZGRsZXdhcmVEYXRhLmFycm93KSAhPSBudWxsICYmIF9taWRkbGV3YXJlRGF0YSRhcnJvdy5hbGlnbm1lbnRPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCArIGRpZmZDb29yZHMueCxcbiAgICAgICAgeTogeSArIGRpZmZDb29yZHMueSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIC4uLmRpZmZDb29yZHMsXG4gICAgICAgICAgcGxhY2VtZW50XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgc2hpZnRpbmcgaXQgaW4gb3JkZXIgdG9cbiAqIGtlZXAgaXQgaW4gdmlldyB3aGVuIGl0IHdpbGwgb3ZlcmZsb3cgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NoaWZ0XG4gKi9cbmNvbnN0IHNoaWZ0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzaGlmdCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnRcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gZmFsc2UsXG4gICAgICAgIGxpbWl0ZXIgPSB7XG4gICAgICAgICAgZm46IF9yZWYgPT4ge1xuICAgICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgfSA9IF9yZWY7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICB5XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9O1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IGNyb3NzQXhpcyA9IGdldFNpZGVBeGlzKGdldFNpZGUocGxhY2VtZW50KSk7XG4gICAgICBjb25zdCBtYWluQXhpcyA9IGdldE9wcG9zaXRlQXhpcyhjcm9zc0F4aXMpO1xuICAgICAgbGV0IG1haW5BeGlzQ29vcmQgPSBjb29yZHNbbWFpbkF4aXNdO1xuICAgICAgbGV0IGNyb3NzQXhpc0Nvb3JkID0gY29vcmRzW2Nyb3NzQXhpc107XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBjb25zdCBtaW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICAgICAgY29uc3QgbWluID0gbWFpbkF4aXNDb29yZCArIG92ZXJmbG93W21pblNpZGVdO1xuICAgICAgICBjb25zdCBtYXggPSBtYWluQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIG1haW5BeGlzQ29vcmQgPSBjbGFtcChtaW4sIG1haW5BeGlzQ29vcmQsIG1heCk7XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgY29uc3QgbWluU2lkZSA9IGNyb3NzQXhpcyA9PT0gJ3knID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgICAgIGNvbnN0IG1heFNpZGUgPSBjcm9zc0F4aXMgPT09ICd5JyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICAgICAgY29uc3QgbWluID0gY3Jvc3NBeGlzQ29vcmQgKyBvdmVyZmxvd1ttaW5TaWRlXTtcbiAgICAgICAgY29uc3QgbWF4ID0gY3Jvc3NBeGlzQ29vcmQgLSBvdmVyZmxvd1ttYXhTaWRlXTtcbiAgICAgICAgY3Jvc3NBeGlzQ29vcmQgPSBjbGFtcChtaW4sIGNyb3NzQXhpc0Nvb3JkLCBtYXgpO1xuICAgICAgfVxuICAgICAgY29uc3QgbGltaXRlZENvb3JkcyA9IGxpbWl0ZXIuZm4oe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgW21haW5BeGlzXTogbWFpbkF4aXNDb29yZCxcbiAgICAgICAgW2Nyb3NzQXhpc106IGNyb3NzQXhpc0Nvb3JkXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmxpbWl0ZWRDb29yZHMsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICB4OiBsaW1pdGVkQ29vcmRzLnggLSB4LFxuICAgICAgICAgIHk6IGxpbWl0ZWRDb29yZHMueSAtIHlcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuLyoqXG4gKiBCdWlsdC1pbiBgbGltaXRlcmAgdGhhdCB3aWxsIHN0b3AgYHNoaWZ0KClgIGF0IGEgY2VydGFpbiBwb2ludC5cbiAqL1xuY29uc3QgbGltaXRTaGlmdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBvcHRpb25zLFxuICAgIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG9mZnNldCA9IDAsXG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IHRydWVcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH07XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgbWFpbkF4aXMgPSBnZXRPcHBvc2l0ZUF4aXMoY3Jvc3NBeGlzKTtcbiAgICAgIGxldCBtYWluQXhpc0Nvb3JkID0gY29vcmRzW21haW5BeGlzXTtcbiAgICAgIGxldCBjcm9zc0F4aXNDb29yZCA9IGNvb3Jkc1tjcm9zc0F4aXNdO1xuICAgICAgY29uc3QgcmF3T2Zmc2V0ID0gZXZhbHVhdGUob2Zmc2V0LCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb21wdXRlZE9mZnNldCA9IHR5cGVvZiByYXdPZmZzZXQgPT09ICdudW1iZXInID8ge1xuICAgICAgICBtYWluQXhpczogcmF3T2Zmc2V0LFxuICAgICAgICBjcm9zc0F4aXM6IDBcbiAgICAgIH0gOiB7XG4gICAgICAgIG1haW5BeGlzOiAwLFxuICAgICAgICBjcm9zc0F4aXM6IDAsXG4gICAgICAgIC4uLnJhd09mZnNldFxuICAgICAgfTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIGNvbnN0IGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgICAgIGNvbnN0IGxpbWl0TWluID0gcmVjdHMucmVmZXJlbmNlW21haW5BeGlzXSAtIHJlY3RzLmZsb2F0aW5nW2xlbl0gKyBjb21wdXRlZE9mZnNldC5tYWluQXhpcztcbiAgICAgICAgY29uc3QgbGltaXRNYXggPSByZWN0cy5yZWZlcmVuY2VbbWFpbkF4aXNdICsgcmVjdHMucmVmZXJlbmNlW2xlbl0gLSBjb21wdXRlZE9mZnNldC5tYWluQXhpcztcbiAgICAgICAgaWYgKG1haW5BeGlzQ29vcmQgPCBsaW1pdE1pbikge1xuICAgICAgICAgIG1haW5BeGlzQ29vcmQgPSBsaW1pdE1pbjtcbiAgICAgICAgfSBlbHNlIGlmIChtYWluQXhpc0Nvb3JkID4gbGltaXRNYXgpIHtcbiAgICAgICAgICBtYWluQXhpc0Nvb3JkID0gbGltaXRNYXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJG9mZnNlLCBfbWlkZGxld2FyZURhdGEkb2Zmc2UyO1xuICAgICAgICBjb25zdCBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgICAgICBjb25zdCBpc09yaWdpblNpZGUgPSBbJ3RvcCcsICdsZWZ0J10uaW5jbHVkZXMoZ2V0U2lkZShwbGFjZW1lbnQpKTtcbiAgICAgICAgY29uc3QgbGltaXRNaW4gPSByZWN0cy5yZWZlcmVuY2VbY3Jvc3NBeGlzXSAtIHJlY3RzLmZsb2F0aW5nW2xlbl0gKyAoaXNPcmlnaW5TaWRlID8gKChfbWlkZGxld2FyZURhdGEkb2Zmc2UgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2VbY3Jvc3NBeGlzXSkgfHwgMCA6IDApICsgKGlzT3JpZ2luU2lkZSA/IDAgOiBjb21wdXRlZE9mZnNldC5jcm9zc0F4aXMpO1xuICAgICAgICBjb25zdCBsaW1pdE1heCA9IHJlY3RzLnJlZmVyZW5jZVtjcm9zc0F4aXNdICsgcmVjdHMucmVmZXJlbmNlW2xlbl0gKyAoaXNPcmlnaW5TaWRlID8gMCA6ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlMiA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZTJbY3Jvc3NBeGlzXSkgfHwgMCkgLSAoaXNPcmlnaW5TaWRlID8gY29tcHV0ZWRPZmZzZXQuY3Jvc3NBeGlzIDogMCk7XG4gICAgICAgIGlmIChjcm9zc0F4aXNDb29yZCA8IGxpbWl0TWluKSB7XG4gICAgICAgICAgY3Jvc3NBeGlzQ29vcmQgPSBsaW1pdE1pbjtcbiAgICAgICAgfSBlbHNlIGlmIChjcm9zc0F4aXNDb29yZCA+IGxpbWl0TWF4KSB7XG4gICAgICAgICAgY3Jvc3NBeGlzQ29vcmQgPSBsaW1pdE1heDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW21haW5BeGlzXTogbWFpbkF4aXNDb29yZCxcbiAgICAgICAgW2Nyb3NzQXhpc106IGNyb3NzQXhpc0Nvb3JkXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0aGF0IGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IOKAlFxuICogZm9yIGluc3RhbmNlLCBwcmV2ZW50IGl0IGZyb20gb3ZlcmZsb3dpbmcgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5IG9yIG1hdGNoIHRoZVxuICogd2lkdGggb2YgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NpemVcbiAqL1xuY29uc3Qgc2l6ZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnc2l6ZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYXBwbHkgPSAoKSA9PiB7fSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGlzWUF4aXMgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneSc7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHRcbiAgICAgIH0gPSByZWN0cy5mbG9hdGluZztcbiAgICAgIGxldCBoZWlnaHRTaWRlO1xuICAgICAgbGV0IHdpZHRoU2lkZTtcbiAgICAgIGlmIChzaWRlID09PSAndG9wJyB8fCBzaWRlID09PSAnYm90dG9tJykge1xuICAgICAgICBoZWlnaHRTaWRlID0gc2lkZTtcbiAgICAgICAgd2lkdGhTaWRlID0gYWxpZ25tZW50ID09PSAoKGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKSkgPyAnc3RhcnQnIDogJ2VuZCcpID8gJ2xlZnQnIDogJ3JpZ2h0JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpZHRoU2lkZSA9IHNpZGU7XG4gICAgICAgIGhlaWdodFNpZGUgPSBhbGlnbm1lbnQgPT09ICdlbmQnID8gJ3RvcCcgOiAnYm90dG9tJztcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ0hlaWdodCA9IGhlaWdodCAtIG92ZXJmbG93LnRvcCAtIG92ZXJmbG93LmJvdHRvbTtcbiAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ1dpZHRoID0gd2lkdGggLSBvdmVyZmxvdy5sZWZ0IC0gb3ZlcmZsb3cucmlnaHQ7XG4gICAgICBjb25zdCBvdmVyZmxvd0F2YWlsYWJsZUhlaWdodCA9IG1pbihoZWlnaHQgLSBvdmVyZmxvd1toZWlnaHRTaWRlXSwgbWF4aW11bUNsaXBwaW5nSGVpZ2h0KTtcbiAgICAgIGNvbnN0IG92ZXJmbG93QXZhaWxhYmxlV2lkdGggPSBtaW4od2lkdGggLSBvdmVyZmxvd1t3aWR0aFNpZGVdLCBtYXhpbXVtQ2xpcHBpbmdXaWR0aCk7XG4gICAgICBjb25zdCBub1NoaWZ0ID0gIXN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0O1xuICAgICAgbGV0IGF2YWlsYWJsZUhlaWdodCA9IG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0O1xuICAgICAgbGV0IGF2YWlsYWJsZVdpZHRoID0gb3ZlcmZsb3dBdmFpbGFibGVXaWR0aDtcbiAgICAgIGlmIChpc1lBeGlzKSB7XG4gICAgICAgIGF2YWlsYWJsZVdpZHRoID0gYWxpZ25tZW50IHx8IG5vU2hpZnQgPyBtaW4ob3ZlcmZsb3dBdmFpbGFibGVXaWR0aCwgbWF4aW11bUNsaXBwaW5nV2lkdGgpIDogbWF4aW11bUNsaXBwaW5nV2lkdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBhbGlnbm1lbnQgfHwgbm9TaGlmdCA/IG1pbihvdmVyZmxvd0F2YWlsYWJsZUhlaWdodCwgbWF4aW11bUNsaXBwaW5nSGVpZ2h0KSA6IG1heGltdW1DbGlwcGluZ0hlaWdodDtcbiAgICAgIH1cbiAgICAgIGlmIChub1NoaWZ0ICYmICFhbGlnbm1lbnQpIHtcbiAgICAgICAgY29uc3QgeE1pbiA9IG1heChvdmVyZmxvdy5sZWZ0LCAwKTtcbiAgICAgICAgY29uc3QgeE1heCA9IG1heChvdmVyZmxvdy5yaWdodCwgMCk7XG4gICAgICAgIGNvbnN0IHlNaW4gPSBtYXgob3ZlcmZsb3cudG9wLCAwKTtcbiAgICAgICAgY29uc3QgeU1heCA9IG1heChvdmVyZmxvdy5ib3R0b20sIDApO1xuICAgICAgICBpZiAoaXNZQXhpcykge1xuICAgICAgICAgIGF2YWlsYWJsZVdpZHRoID0gd2lkdGggLSAyICogKHhNaW4gIT09IDAgfHwgeE1heCAhPT0gMCA/IHhNaW4gKyB4TWF4IDogbWF4KG92ZXJmbG93LmxlZnQsIG92ZXJmbG93LnJpZ2h0KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gaGVpZ2h0IC0gMiAqICh5TWluICE9PSAwIHx8IHlNYXggIT09IDAgPyB5TWluICsgeU1heCA6IG1heChvdmVyZmxvdy50b3AsIG92ZXJmbG93LmJvdHRvbSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhd2FpdCBhcHBseSh7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBhdmFpbGFibGVXaWR0aCxcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IG5leHREaW1lbnNpb25zID0gYXdhaXQgcGxhdGZvcm0uZ2V0RGltZW5zaW9ucyhlbGVtZW50cy5mbG9hdGluZyk7XG4gICAgICBpZiAod2lkdGggIT09IG5leHREaW1lbnNpb25zLndpZHRoIHx8IGhlaWdodCAhPT0gbmV4dERpbWVuc2lvbnMuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHJlY3RzOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydCB7IGFycm93LCBhdXRvUGxhY2VtZW50LCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgc2hpZnQsIHNpemUgfTtcbiIsImZ1bmN0aW9uIGhhc1dpbmRvdygpIHtcbiAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xufVxuZnVuY3Rpb24gZ2V0Tm9kZU5hbWUobm9kZSkge1xuICBpZiAoaXNOb2RlKG5vZGUpKSB7XG4gICAgcmV0dXJuIChub2RlLm5vZGVOYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIC8vIE1vY2tlZCBub2RlcyBpbiB0ZXN0aW5nIGVudmlyb25tZW50cyBtYXkgbm90IGJlIGluc3RhbmNlcyBvZiBOb2RlLiBCeVxuICAvLyByZXR1cm5pbmcgYCNkb2N1bWVudGAgYW4gaW5maW5pdGUgbG9vcCB3b24ndCBvY2N1ci5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8yMzE3XG4gIHJldHVybiAnI2RvY3VtZW50Jztcbn1cbmZ1bmN0aW9uIGdldFdpbmRvdyhub2RlKSB7XG4gIHZhciBfbm9kZSRvd25lckRvY3VtZW50O1xuICByZXR1cm4gKG5vZGUgPT0gbnVsbCB8fCAoX25vZGUkb3duZXJEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9ub2RlJG93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpIHx8IHdpbmRvdztcbn1cbmZ1bmN0aW9uIGdldERvY3VtZW50RWxlbWVudChub2RlKSB7XG4gIHZhciBfcmVmO1xuICByZXR1cm4gKF9yZWYgPSAoaXNOb2RlKG5vZGUpID8gbm9kZS5vd25lckRvY3VtZW50IDogbm9kZS5kb2N1bWVudCkgfHwgd2luZG93LmRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX3JlZi5kb2N1bWVudEVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc05vZGUodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBOb2RlIHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5Ob2RlO1xufVxuZnVuY3Rpb24gaXNFbGVtZW50KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRWxlbWVudCB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuRWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuSFRNTEVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc1NoYWRvd1Jvb3QodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSB8fCB0eXBlb2YgU2hhZG93Um9vdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgU2hhZG93Um9vdCB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuU2hhZG93Um9vdDtcbn1cbmZ1bmN0aW9uIGlzT3ZlcmZsb3dFbGVtZW50KGVsZW1lbnQpIHtcbiAgY29uc3Qge1xuICAgIG92ZXJmbG93LFxuICAgIG92ZXJmbG93WCxcbiAgICBvdmVyZmxvd1ksXG4gICAgZGlzcGxheVxuICB9ID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbnxjbGlwLy50ZXN0KG92ZXJmbG93ICsgb3ZlcmZsb3dZICsgb3ZlcmZsb3dYKSAmJiAhWydpbmxpbmUnLCAnY29udGVudHMnXS5pbmNsdWRlcyhkaXNwbGF5KTtcbn1cbmZ1bmN0aW9uIGlzVGFibGVFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuIFsndGFibGUnLCAndGQnLCAndGgnXS5pbmNsdWRlcyhnZXROb2RlTmFtZShlbGVtZW50KSk7XG59XG5mdW5jdGlvbiBpc1RvcExheWVyKGVsZW1lbnQpIHtcbiAgcmV0dXJuIFsnOnBvcG92ZXItb3BlbicsICc6bW9kYWwnXS5zb21lKHNlbGVjdG9yID0+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQubWF0Y2hlcyhzZWxlY3Rvcik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBpc0NvbnRhaW5pbmdCbG9jayhlbGVtZW50T3JDc3MpIHtcbiAgY29uc3Qgd2Via2l0ID0gaXNXZWJLaXQoKTtcbiAgY29uc3QgY3NzID0gaXNFbGVtZW50KGVsZW1lbnRPckNzcykgPyBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnRPckNzcykgOiBlbGVtZW50T3JDc3M7XG5cbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcbiAgcmV0dXJuIGNzcy50cmFuc2Zvcm0gIT09ICdub25lJyB8fCBjc3MucGVyc3BlY3RpdmUgIT09ICdub25lJyB8fCAoY3NzLmNvbnRhaW5lclR5cGUgPyBjc3MuY29udGFpbmVyVHlwZSAhPT0gJ25vcm1hbCcgOiBmYWxzZSkgfHwgIXdlYmtpdCAmJiAoY3NzLmJhY2tkcm9wRmlsdGVyID8gY3NzLmJhY2tkcm9wRmlsdGVyICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgIXdlYmtpdCAmJiAoY3NzLmZpbHRlciA/IGNzcy5maWx0ZXIgIT09ICdub25lJyA6IGZhbHNlKSB8fCBbJ3RyYW5zZm9ybScsICdwZXJzcGVjdGl2ZScsICdmaWx0ZXInXS5zb21lKHZhbHVlID0+IChjc3Mud2lsbENoYW5nZSB8fCAnJykuaW5jbHVkZXModmFsdWUpKSB8fCBbJ3BhaW50JywgJ2xheW91dCcsICdzdHJpY3QnLCAnY29udGVudCddLnNvbWUodmFsdWUgPT4gKGNzcy5jb250YWluIHx8ICcnKS5pbmNsdWRlcyh2YWx1ZSkpO1xufVxuZnVuY3Rpb24gZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgbGV0IGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgaWYgKGlzQ29udGFpbmluZ0Jsb2NrKGN1cnJlbnROb2RlKSkge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSBpZiAoaXNUb3BMYXllcihjdXJyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoY3VycmVudE5vZGUpO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gaXNXZWJLaXQoKSB7XG4gIGlmICh0eXBlb2YgQ1NTID09PSAndW5kZWZpbmVkJyB8fCAhQ1NTLnN1cHBvcnRzKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBDU1Muc3VwcG9ydHMoJy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyJywgJ25vbmUnKTtcbn1cbmZ1bmN0aW9uIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShub2RlKSB7XG4gIHJldHVybiBbJ2h0bWwnLCAnYm9keScsICcjZG9jdW1lbnQnXS5pbmNsdWRlcyhnZXROb2RlTmFtZShub2RlKSk7XG59XG5mdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldFdpbmRvdyhlbGVtZW50KS5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xufVxuZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KSB7XG4gIGlmIChpc0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbFgsXG4gICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFlcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFBhcmVudE5vZGUobm9kZSkge1xuICBpZiAoZ2V0Tm9kZU5hbWUobm9kZSkgPT09ICdodG1sJykge1xuICAgIHJldHVybiBub2RlO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9XG4gIC8vIFN0ZXAgaW50byB0aGUgc2hhZG93IERPTSBvZiB0aGUgcGFyZW50IG9mIGEgc2xvdHRlZCBub2RlLlxuICBub2RlLmFzc2lnbmVkU2xvdCB8fFxuICAvLyBET00gRWxlbWVudCBkZXRlY3RlZC5cbiAgbm9kZS5wYXJlbnROb2RlIHx8XG4gIC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWQuXG4gIGlzU2hhZG93Um9vdChub2RlKSAmJiBub2RlLmhvc3QgfHxcbiAgLy8gRmFsbGJhY2suXG4gIGdldERvY3VtZW50RWxlbWVudChub2RlKTtcbiAgcmV0dXJuIGlzU2hhZG93Um9vdChyZXN1bHQpID8gcmVzdWx0Lmhvc3QgOiByZXN1bHQ7XG59XG5mdW5jdGlvbiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKSB7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKG5vZGUpO1xuICBpZiAoaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGUub3duZXJEb2N1bWVudCA/IG5vZGUub3duZXJEb2N1bWVudC5ib2R5IDogbm9kZS5ib2R5O1xuICB9XG4gIGlmIChpc0hUTUxFbGVtZW50KHBhcmVudE5vZGUpICYmIGlzT3ZlcmZsb3dFbGVtZW50KHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIHBhcmVudE5vZGU7XG4gIH1cbiAgcmV0dXJuIGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKHBhcmVudE5vZGUpO1xufVxuZnVuY3Rpb24gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMobm9kZSwgbGlzdCwgdHJhdmVyc2VJZnJhbWVzKSB7XG4gIHZhciBfbm9kZSRvd25lckRvY3VtZW50MjtcbiAgaWYgKGxpc3QgPT09IHZvaWQgMCkge1xuICAgIGxpc3QgPSBbXTtcbiAgfVxuICBpZiAodHJhdmVyc2VJZnJhbWVzID09PSB2b2lkIDApIHtcbiAgICB0cmF2ZXJzZUlmcmFtZXMgPSB0cnVlO1xuICB9XG4gIGNvbnN0IHNjcm9sbGFibGVBbmNlc3RvciA9IGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKG5vZGUpO1xuICBjb25zdCBpc0JvZHkgPSBzY3JvbGxhYmxlQW5jZXN0b3IgPT09ICgoX25vZGUkb3duZXJEb2N1bWVudDIgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50Mi5ib2R5KTtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KHNjcm9sbGFibGVBbmNlc3Rvcik7XG4gIGlmIChpc0JvZHkpIHtcbiAgICBjb25zdCBmcmFtZUVsZW1lbnQgPSBnZXRGcmFtZUVsZW1lbnQod2luKTtcbiAgICByZXR1cm4gbGlzdC5jb25jYXQod2luLCB3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzT3ZlcmZsb3dFbGVtZW50KHNjcm9sbGFibGVBbmNlc3RvcikgPyBzY3JvbGxhYmxlQW5jZXN0b3IgOiBbXSwgZnJhbWVFbGVtZW50ICYmIHRyYXZlcnNlSWZyYW1lcyA/IGdldE92ZXJmbG93QW5jZXN0b3JzKGZyYW1lRWxlbWVudCkgOiBbXSk7XG4gIH1cbiAgcmV0dXJuIGxpc3QuY29uY2F0KHNjcm9sbGFibGVBbmNlc3RvciwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoc2Nyb2xsYWJsZUFuY2VzdG9yLCBbXSwgdHJhdmVyc2VJZnJhbWVzKSk7XG59XG5mdW5jdGlvbiBnZXRGcmFtZUVsZW1lbnQod2luKSB7XG4gIHJldHVybiB3aW4ucGFyZW50ICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZih3aW4ucGFyZW50KSA/IHdpbi5mcmFtZUVsZW1lbnQgOiBudWxsO1xufVxuXG5leHBvcnQgeyBnZXRDb21wdXRlZFN0eWxlLCBnZXRDb250YWluaW5nQmxvY2ssIGdldERvY3VtZW50RWxlbWVudCwgZ2V0RnJhbWVFbGVtZW50LCBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvciwgZ2V0Tm9kZU5hbWUsIGdldE5vZGVTY3JvbGwsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBnZXRQYXJlbnROb2RlLCBnZXRXaW5kb3csIGlzQ29udGFpbmluZ0Jsb2NrLCBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQsIGlzTGFzdFRyYXZlcnNhYmxlTm9kZSwgaXNOb2RlLCBpc092ZXJmbG93RWxlbWVudCwgaXNTaGFkb3dSb290LCBpc1RhYmxlRWxlbWVudCwgaXNUb3BMYXllciwgaXNXZWJLaXQgfTtcbiIsImltcG9ydCB7IHJlY3RUb0NsaWVudFJlY3QsIGRldGVjdE92ZXJmbG93IGFzIGRldGVjdE92ZXJmbG93JDEsIG9mZnNldCBhcyBvZmZzZXQkMSwgYXV0b1BsYWNlbWVudCBhcyBhdXRvUGxhY2VtZW50JDEsIHNoaWZ0IGFzIHNoaWZ0JDEsIGZsaXAgYXMgZmxpcCQxLCBzaXplIGFzIHNpemUkMSwgaGlkZSBhcyBoaWRlJDEsIGFycm93IGFzIGFycm93JDEsIGlubGluZSBhcyBpbmxpbmUkMSwgbGltaXRTaGlmdCBhcyBsaW1pdFNoaWZ0JDEsIGNvbXB1dGVQb3NpdGlvbiBhcyBjb21wdXRlUG9zaXRpb24kMSB9IGZyb20gJ0BmbG9hdGluZy11aS9jb3JlJztcbmltcG9ydCB7IHJvdW5kLCBjcmVhdGVDb29yZHMsIG1heCwgbWluLCBmbG9vciB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5pbXBvcnQgeyBnZXRDb21wdXRlZFN0eWxlLCBpc0hUTUxFbGVtZW50LCBpc0VsZW1lbnQsIGdldFdpbmRvdywgaXNXZWJLaXQsIGdldEZyYW1lRWxlbWVudCwgZ2V0Tm9kZVNjcm9sbCwgZ2V0RG9jdW1lbnRFbGVtZW50LCBpc1RvcExheWVyLCBnZXROb2RlTmFtZSwgaXNPdmVyZmxvd0VsZW1lbnQsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBnZXRQYXJlbnROb2RlLCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGlzQ29udGFpbmluZ0Jsb2NrLCBpc1RhYmxlRWxlbWVudCwgZ2V0Q29udGFpbmluZ0Jsb2NrIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzL2RvbSc7XG5leHBvcnQgeyBnZXRPdmVyZmxvd0FuY2VzdG9ycyB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuXG5mdW5jdGlvbiBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpIHtcbiAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgLy8gSW4gdGVzdGluZyBlbnZpcm9ubWVudHMsIHRoZSBgd2lkdGhgIGFuZCBgaGVpZ2h0YCBwcm9wZXJ0aWVzIGFyZSBlbXB0eVxuICAvLyBzdHJpbmdzIGZvciBTVkcgZWxlbWVudHMsIHJldHVybmluZyBOYU4uIEZhbGxiYWNrIHRvIGAwYCBpbiB0aGlzIGNhc2UuXG4gIGxldCB3aWR0aCA9IHBhcnNlRmxvYXQoY3NzLndpZHRoKSB8fCAwO1xuICBsZXQgaGVpZ2h0ID0gcGFyc2VGbG9hdChjc3MuaGVpZ2h0KSB8fCAwO1xuICBjb25zdCBoYXNPZmZzZXQgPSBpc0hUTUxFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCBvZmZzZXRXaWR0aCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0V2lkdGggOiB3aWR0aDtcbiAgY29uc3Qgb2Zmc2V0SGVpZ2h0ID0gaGFzT2Zmc2V0ID8gZWxlbWVudC5vZmZzZXRIZWlnaHQgOiBoZWlnaHQ7XG4gIGNvbnN0IHNob3VsZEZhbGxiYWNrID0gcm91bmQod2lkdGgpICE9PSBvZmZzZXRXaWR0aCB8fCByb3VuZChoZWlnaHQpICE9PSBvZmZzZXRIZWlnaHQ7XG4gIGlmIChzaG91bGRGYWxsYmFjaykge1xuICAgIHdpZHRoID0gb2Zmc2V0V2lkdGg7XG4gICAgaGVpZ2h0ID0gb2Zmc2V0SGVpZ2h0O1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgICQ6IHNob3VsZEZhbGxiYWNrXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVud3JhcEVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gIWlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgOiBlbGVtZW50O1xufVxuXG5mdW5jdGlvbiBnZXRTY2FsZShlbGVtZW50KSB7XG4gIGNvbnN0IGRvbUVsZW1lbnQgPSB1bndyYXBFbGVtZW50KGVsZW1lbnQpO1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZG9tRWxlbWVudCkpIHtcbiAgICByZXR1cm4gY3JlYXRlQ29vcmRzKDEpO1xuICB9XG4gIGNvbnN0IHJlY3QgPSBkb21FbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgICRcbiAgfSA9IGdldENzc0RpbWVuc2lvbnMoZG9tRWxlbWVudCk7XG4gIGxldCB4ID0gKCQgPyByb3VuZChyZWN0LndpZHRoKSA6IHJlY3Qud2lkdGgpIC8gd2lkdGg7XG4gIGxldCB5ID0gKCQgPyByb3VuZChyZWN0LmhlaWdodCkgOiByZWN0LmhlaWdodCkgLyBoZWlnaHQ7XG5cbiAgLy8gMCwgTmFOLCBvciBJbmZpbml0eSBzaG91bGQgYWx3YXlzIGZhbGxiYWNrIHRvIDEuXG5cbiAgaWYgKCF4IHx8ICFOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICB4ID0gMTtcbiAgfVxuICBpZiAoIXkgfHwgIU51bWJlci5pc0Zpbml0ZSh5KSkge1xuICAgIHkgPSAxO1xuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmNvbnN0IG5vT2Zmc2V0cyA9IC8qI19fUFVSRV9fKi9jcmVhdGVDb29yZHMoMCk7XG5mdW5jdGlvbiBnZXRWaXN1YWxPZmZzZXRzKGVsZW1lbnQpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBpZiAoIWlzV2ViS2l0KCkgfHwgIXdpbi52aXN1YWxWaWV3cG9ydCkge1xuICAgIHJldHVybiBub09mZnNldHM7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiB3aW4udmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCxcbiAgICB5OiB3aW4udmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wXG4gIH07XG59XG5mdW5jdGlvbiBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGVsZW1lbnQsIGlzRml4ZWQsIGZsb2F0aW5nT2Zmc2V0UGFyZW50KSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cbiAgaWYgKCFmbG9hdGluZ09mZnNldFBhcmVudCB8fCBpc0ZpeGVkICYmIGZsb2F0aW5nT2Zmc2V0UGFyZW50ICE9PSBnZXRXaW5kb3coZWxlbWVudCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGlzRml4ZWQ7XG59XG5cbmZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSB7XG4gIGlmIChpbmNsdWRlU2NhbGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGVTY2FsZSA9IGZhbHNlO1xuICB9XG4gIGlmIChpc0ZpeGVkU3RyYXRlZ3kgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWRTdHJhdGVneSA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGNsaWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBpZiAoaW5jbHVkZVNjYWxlKSB7XG4gICAgaWYgKG9mZnNldFBhcmVudCkge1xuICAgICAgaWYgKGlzRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2NhbGUgPSBnZXRTY2FsZShlbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgdmlzdWFsT2Zmc2V0cyA9IHNob3VsZEFkZFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCwgaXNGaXhlZFN0cmF0ZWd5LCBvZmZzZXRQYXJlbnQpID8gZ2V0VmlzdWFsT2Zmc2V0cyhkb21FbGVtZW50KSA6IGNyZWF0ZUNvb3JkcygwKTtcbiAgbGV0IHggPSAoY2xpZW50UmVjdC5sZWZ0ICsgdmlzdWFsT2Zmc2V0cy54KSAvIHNjYWxlLng7XG4gIGxldCB5ID0gKGNsaWVudFJlY3QudG9wICsgdmlzdWFsT2Zmc2V0cy55KSAvIHNjYWxlLnk7XG4gIGxldCB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGggLyBzY2FsZS54O1xuICBsZXQgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQgLyBzY2FsZS55O1xuICBpZiAoZG9tRWxlbWVudCkge1xuICAgIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhkb21FbGVtZW50KTtcbiAgICBjb25zdCBvZmZzZXRXaW4gPSBvZmZzZXRQYXJlbnQgJiYgaXNFbGVtZW50KG9mZnNldFBhcmVudCkgPyBnZXRXaW5kb3cob2Zmc2V0UGFyZW50KSA6IG9mZnNldFBhcmVudDtcbiAgICBsZXQgY3VycmVudFdpbiA9IHdpbjtcbiAgICBsZXQgY3VycmVudElGcmFtZSA9IGdldEZyYW1lRWxlbWVudChjdXJyZW50V2luKTtcbiAgICB3aGlsZSAoY3VycmVudElGcmFtZSAmJiBvZmZzZXRQYXJlbnQgJiYgb2Zmc2V0V2luICE9PSBjdXJyZW50V2luKSB7XG4gICAgICBjb25zdCBpZnJhbWVTY2FsZSA9IGdldFNjYWxlKGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY29uc3QgaWZyYW1lUmVjdCA9IGN1cnJlbnRJRnJhbWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY29uc3QgbGVmdCA9IGlmcmFtZVJlY3QubGVmdCArIChjdXJyZW50SUZyYW1lLmNsaWVudExlZnQgKyBwYXJzZUZsb2F0KGNzcy5wYWRkaW5nTGVmdCkpICogaWZyYW1lU2NhbGUueDtcbiAgICAgIGNvbnN0IHRvcCA9IGlmcmFtZVJlY3QudG9wICsgKGN1cnJlbnRJRnJhbWUuY2xpZW50VG9wICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ1RvcCkpICogaWZyYW1lU2NhbGUueTtcbiAgICAgIHggKj0gaWZyYW1lU2NhbGUueDtcbiAgICAgIHkgKj0gaWZyYW1lU2NhbGUueTtcbiAgICAgIHdpZHRoICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICBoZWlnaHQgKj0gaWZyYW1lU2NhbGUueTtcbiAgICAgIHggKz0gbGVmdDtcbiAgICAgIHkgKz0gdG9wO1xuICAgICAgY3VycmVudFdpbiA9IGdldFdpbmRvdyhjdXJyZW50SUZyYW1lKTtcbiAgICAgIGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgfVxuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH0pO1xufVxuXG4vLyBJZiA8aHRtbD4gaGFzIGEgQ1NTIHdpZHRoIGdyZWF0ZXIgdGhhbiB0aGUgdmlld3BvcnQsIHRoZW4gdGhpcyB3aWxsIGJlXG4vLyBpbmNvcnJlY3QgZm9yIFJUTC5cbmZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCwgcmVjdCkge1xuICBjb25zdCBsZWZ0U2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KS5zY3JvbGxMZWZ0O1xuICBpZiAoIXJlY3QpIHtcbiAgICByZXR1cm4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkubGVmdCArIGxlZnRTY3JvbGw7XG4gIH1cbiAgcmV0dXJuIHJlY3QubGVmdCArIGxlZnRTY3JvbGw7XG59XG5cbmZ1bmN0aW9uIGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwsIGlnbm9yZVNjcm9sbGJhclgpIHtcbiAgaWYgKGlnbm9yZVNjcm9sbGJhclggPT09IHZvaWQgMCkge1xuICAgIGlnbm9yZVNjcm9sbGJhclggPSBmYWxzZTtcbiAgfVxuICBjb25zdCBodG1sUmVjdCA9IGRvY3VtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgeCA9IGh0bWxSZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIChpZ25vcmVTY3JvbGxiYXJYID8gMCA6XG4gIC8vIFJUTCA8Ym9keT4gc2Nyb2xsYmFyLlxuICBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCwgaHRtbFJlY3QpKTtcbiAgY29uc3QgeSA9IGh0bWxSZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3A7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgdG9wTGF5ZXIgPSBlbGVtZW50cyA/IGlzVG9wTGF5ZXIoZWxlbWVudHMuZmxvYXRpbmcpIDogZmFsc2U7XG4gIGlmIChvZmZzZXRQYXJlbnQgPT09IGRvY3VtZW50RWxlbWVudCB8fCB0b3BMYXllciAmJiBpc0ZpeGVkKSB7XG4gICAgcmV0dXJuIHJlY3Q7XG4gIH1cbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBsZXQgc2NhbGUgPSBjcmVhdGVDb29yZHMoMSk7XG4gIGNvbnN0IG9mZnNldHMgPSBjcmVhdGVDb29yZHMoMCk7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCBpc092ZXJmbG93RWxlbWVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIGlmIChpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50KTtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIG9mZnNldHMueCA9IG9mZnNldFJlY3QueCArIG9mZnNldFBhcmVudC5jbGllbnRMZWZ0O1xuICAgICAgb2Zmc2V0cy55ID0gb2Zmc2V0UmVjdC55ICsgb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9XG4gIH1cbiAgY29uc3QgaHRtbE9mZnNldCA9IGRvY3VtZW50RWxlbWVudCAmJiAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQgPyBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCB0cnVlKSA6IGNyZWF0ZUNvb3JkcygwKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogcmVjdC53aWR0aCAqIHNjYWxlLngsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodCAqIHNjYWxlLnksXG4gICAgeDogcmVjdC54ICogc2NhbGUueCAtIHNjcm9sbC5zY3JvbGxMZWZ0ICogc2NhbGUueCArIG9mZnNldHMueCArIGh0bWxPZmZzZXQueCxcbiAgICB5OiByZWN0LnkgKiBzY2FsZS55IC0gc2Nyb2xsLnNjcm9sbFRvcCAqIHNjYWxlLnkgKyBvZmZzZXRzLnkgKyBodG1sT2Zmc2V0LnlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdHMoZWxlbWVudCkge1xuICByZXR1cm4gQXJyYXkuZnJvbShlbGVtZW50LmdldENsaWVudFJlY3RzKCkpO1xufVxuXG4vLyBHZXRzIHRoZSBlbnRpcmUgc2l6ZSBvZiB0aGUgc2Nyb2xsYWJsZSBkb2N1bWVudCBhcmVhLCBldmVuIGV4dGVuZGluZyBvdXRzaWRlXG4vLyBvZiB0aGUgYDxodG1sPmAgYW5kIGA8Ym9keT5gIHJlY3QgYm91bmRzIGlmIGhvcml6b250YWxseSBzY3JvbGxhYmxlLlxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRSZWN0KGVsZW1lbnQpIHtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KTtcbiAgY29uc3QgYm9keSA9IGVsZW1lbnQub3duZXJEb2N1bWVudC5ib2R5O1xuICBjb25zdCB3aWR0aCA9IG1heChodG1sLnNjcm9sbFdpZHRoLCBodG1sLmNsaWVudFdpZHRoLCBib2R5LnNjcm9sbFdpZHRoLCBib2R5LmNsaWVudFdpZHRoKTtcbiAgY29uc3QgaGVpZ2h0ID0gbWF4KGh0bWwuc2Nyb2xsSGVpZ2h0LCBodG1sLmNsaWVudEhlaWdodCwgYm9keS5zY3JvbGxIZWlnaHQsIGJvZHkuY2xpZW50SGVpZ2h0KTtcbiAgbGV0IHggPSAtc2Nyb2xsLnNjcm9sbExlZnQgKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpO1xuICBjb25zdCB5ID0gLXNjcm9sbC5zY3JvbGxUb3A7XG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKGJvZHkpLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICB4ICs9IG1heChodG1sLmNsaWVudFdpZHRoLCBib2R5LmNsaWVudFdpZHRoKSAtIHdpZHRoO1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBjb25zdCBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCB2aXN1YWxWaWV3cG9ydCA9IHdpbi52aXN1YWxWaWV3cG9ydDtcbiAgbGV0IHdpZHRoID0gaHRtbC5jbGllbnRXaWR0aDtcbiAgbGV0IGhlaWdodCA9IGh0bWwuY2xpZW50SGVpZ2h0O1xuICBsZXQgeCA9IDA7XG4gIGxldCB5ID0gMDtcbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7XG4gICAgY29uc3QgdmlzdWFsVmlld3BvcnRCYXNlZCA9IGlzV2ViS2l0KCk7XG4gICAgaWYgKCF2aXN1YWxWaWV3cG9ydEJhc2VkIHx8IHZpc3VhbFZpZXdwb3J0QmFzZWQgJiYgc3RyYXRlZ3kgPT09ICdmaXhlZCcpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbi8vIFJldHVybnMgdGhlIGlubmVyIGNsaWVudCByZWN0LCBzdWJ0cmFjdGluZyBzY3JvbGxiYXJzIGlmIHByZXNlbnQuXG5mdW5jdGlvbiBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICBjb25zdCBjbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIHN0cmF0ZWd5ID09PSAnZml4ZWQnKTtcbiAgY29uc3QgdG9wID0gY2xpZW50UmVjdC50b3AgKyBlbGVtZW50LmNsaWVudFRvcDtcbiAgY29uc3QgbGVmdCA9IGNsaWVudFJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50TGVmdDtcbiAgY29uc3Qgc2NhbGUgPSBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0U2NhbGUoZWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMSk7XG4gIGNvbnN0IHdpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aCAqIHNjYWxlLng7XG4gIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0ICogc2NhbGUueTtcbiAgY29uc3QgeCA9IGxlZnQgKiBzY2FsZS54O1xuICBjb25zdCB5ID0gdG9wICogc2NhbGUueTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5mdW5jdGlvbiBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpIHtcbiAgbGV0IHJlY3Q7XG4gIGlmIChjbGlwcGluZ0FuY2VzdG9yID09PSAndmlld3BvcnQnKSB7XG4gICAgcmVjdCA9IGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSk7XG4gIH0gZWxzZSBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ2RvY3VtZW50Jykge1xuICAgIHJlY3QgPSBnZXREb2N1bWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKTtcbiAgfSBlbHNlIGlmIChpc0VsZW1lbnQoY2xpcHBpbmdBbmNlc3RvcikpIHtcbiAgICByZWN0ID0gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBnZXRWaXN1YWxPZmZzZXRzKGVsZW1lbnQpO1xuICAgIHJlY3QgPSB7XG4gICAgICB4OiBjbGlwcGluZ0FuY2VzdG9yLnggLSB2aXN1YWxPZmZzZXRzLngsXG4gICAgICB5OiBjbGlwcGluZ0FuY2VzdG9yLnkgLSB2aXN1YWxPZmZzZXRzLnksXG4gICAgICB3aWR0aDogY2xpcHBpbmdBbmNlc3Rvci53aWR0aCxcbiAgICAgIGhlaWdodDogY2xpcHBpbmdBbmNlc3Rvci5oZWlnaHRcbiAgICB9O1xuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHJlY3QpO1xufVxuZnVuY3Rpb24gaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIHN0b3BOb2RlKSB7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICBpZiAocGFyZW50Tm9kZSA9PT0gc3RvcE5vZGUgfHwgIWlzRWxlbWVudChwYXJlbnROb2RlKSB8fCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUocGFyZW50Tm9kZSkucG9zaXRpb24gPT09ICdmaXhlZCcgfHwgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKHBhcmVudE5vZGUsIHN0b3BOb2RlKTtcbn1cblxuLy8gQSBcImNsaXBwaW5nIGFuY2VzdG9yXCIgaXMgYW4gYG92ZXJmbG93YCBlbGVtZW50IHdpdGggdGhlIGNoYXJhY3RlcmlzdGljIG9mXG4vLyBjbGlwcGluZyAob3IgaGlkaW5nKSBjaGlsZCBlbGVtZW50cy4gVGhpcyByZXR1cm5zIGFsbCBjbGlwcGluZyBhbmNlc3RvcnNcbi8vIG9mIHRoZSBnaXZlbiBlbGVtZW50IHVwIHRoZSB0cmVlLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIGNhY2hlKSB7XG4gIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGNhY2hlLmdldChlbGVtZW50KTtcbiAgaWYgKGNhY2hlZFJlc3VsdCkge1xuICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gIH1cbiAgbGV0IHJlc3VsdCA9IGdldE92ZXJmbG93QW5jZXN0b3JzKGVsZW1lbnQsIFtdLCBmYWxzZSkuZmlsdGVyKGVsID0+IGlzRWxlbWVudChlbCkgJiYgZ2V0Tm9kZU5hbWUoZWwpICE9PSAnYm9keScpO1xuICBsZXQgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICBjb25zdCBlbGVtZW50SXNGaXhlZCA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCc7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gZ2V0UGFyZW50Tm9kZShlbGVtZW50KSA6IGVsZW1lbnQ7XG5cbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcbiAgd2hpbGUgKGlzRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShjdXJyZW50Tm9kZSkpIHtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50Tm9kZSk7XG4gICAgY29uc3QgY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgPSBpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSk7XG4gICAgaWYgKCFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHNob3VsZERyb3BDdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmICFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA6ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJyAmJiAhIWN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlICYmIFsnYWJzb2x1dGUnLCAnZml4ZWQnXS5pbmNsdWRlcyhjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZS5wb3NpdGlvbikgfHwgaXNPdmVyZmxvd0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgY3VycmVudE5vZGUpO1xuICAgIGlmIChzaG91bGREcm9wQ3VycmVudE5vZGUpIHtcbiAgICAgIC8vIERyb3Agbm9uLWNvbnRhaW5pbmcgYmxvY2tzLlxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihhbmNlc3RvciA9PiBhbmNlc3RvciAhPT0gY3VycmVudE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZWNvcmQgbGFzdCBjb250YWluaW5nIGJsb2NrIGZvciBuZXh0IGl0ZXJhdGlvbi5cbiAgICAgIGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gY29tcHV0ZWRTdHlsZTtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICBjYWNoZS5zZXQoZWxlbWVudCwgcmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gR2V0cyB0aGUgbWF4aW11bSBhcmVhIHRoYXQgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBkdWUgdG8gYW55IG51bWJlciBvZlxuLy8gY2xpcHBpbmcgYW5jZXN0b3JzLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50LFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ0FuY2VzdG9ycycgPyBpc1RvcExheWVyKGVsZW1lbnQpID8gW10gOiBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMoZWxlbWVudCwgdGhpcy5fYykgOiBbXS5jb25jYXQoYm91bmRhcnkpO1xuICBjb25zdCBjbGlwcGluZ0FuY2VzdG9ycyA9IFsuLi5lbGVtZW50Q2xpcHBpbmdBbmNlc3RvcnMsIHJvb3RCb3VuZGFyeV07XG4gIGNvbnN0IGZpcnN0Q2xpcHBpbmdBbmNlc3RvciA9IGNsaXBwaW5nQW5jZXN0b3JzWzBdO1xuICBjb25zdCBjbGlwcGluZ1JlY3QgPSBjbGlwcGluZ0FuY2VzdG9ycy5yZWR1Y2UoKGFjY1JlY3QsIGNsaXBwaW5nQW5jZXN0b3IpID0+IHtcbiAgICBjb25zdCByZWN0ID0gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgICBhY2NSZWN0LnRvcCA9IG1heChyZWN0LnRvcCwgYWNjUmVjdC50b3ApO1xuICAgIGFjY1JlY3QucmlnaHQgPSBtaW4ocmVjdC5yaWdodCwgYWNjUmVjdC5yaWdodCk7XG4gICAgYWNjUmVjdC5ib3R0b20gPSBtaW4ocmVjdC5ib3R0b20sIGFjY1JlY3QuYm90dG9tKTtcbiAgICBhY2NSZWN0LmxlZnQgPSBtYXgocmVjdC5sZWZ0LCBhY2NSZWN0LmxlZnQpO1xuICAgIHJldHVybiBhY2NSZWN0O1xuICB9LCBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgZmlyc3RDbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSkpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiBjbGlwcGluZ1JlY3QucmlnaHQgLSBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICBoZWlnaHQ6IGNsaXBwaW5nUmVjdC5ib3R0b20gLSBjbGlwcGluZ1JlY3QudG9wLFxuICAgIHg6IGNsaXBwaW5nUmVjdC5sZWZ0LFxuICAgIHk6IGNsaXBwaW5nUmVjdC50b3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IGdldENzc0RpbWVuc2lvbnMoZWxlbWVudCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGVsZW1lbnQsIG9mZnNldFBhcmVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBpc0ZpeGVkID0gc3RyYXRlZ3kgPT09ICdmaXhlZCc7XG4gIGNvbnN0IHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgdHJ1ZSwgaXNGaXhlZCwgb2Zmc2V0UGFyZW50KTtcbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCBpc092ZXJmbG93RWxlbWVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCkge1xuICAgICAgY29uc3Qgb2Zmc2V0UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfSBlbHNlIGlmIChkb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIC8vIElmIHRoZSA8Ym9keT4gc2Nyb2xsYmFyIGFwcGVhcnMgb24gdGhlIGxlZnQgKGUuZy4gUlRMIHN5c3RlbXMpLiBVc2VcbiAgICAgIC8vIEZpcmVmb3ggd2l0aCBsYXlvdXQuc2Nyb2xsYmFyLnNpZGUgPSAzIGluIGFib3V0OmNvbmZpZyB0byB0ZXN0IHRoaXMuXG4gICAgICBvZmZzZXRzLnggPSBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGNvbnN0IHggPSByZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIG9mZnNldHMueCAtIGh0bWxPZmZzZXQueDtcbiAgY29uc3QgeSA9IHJlY3QudG9wICsgc2Nyb2xsLnNjcm9sbFRvcCAtIG9mZnNldHMueSAtIGh0bWxPZmZzZXQueTtcbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc1N0YXRpY1Bvc2l0aW9uZWQoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYyc7XG59XG5cbmZ1bmN0aW9uIGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpIHtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAocG9seWZpbGwpIHtcbiAgICByZXR1cm4gcG9seWZpbGwoZWxlbWVudCk7XG4gIH1cbiAgbGV0IHJhd09mZnNldFBhcmVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50O1xuXG4gIC8vIEZpcmVmb3ggcmV0dXJucyB0aGUgPGh0bWw+IGVsZW1lbnQgYXMgdGhlIG9mZnNldFBhcmVudCBpZiBpdCdzIG5vbi1zdGF0aWMsXG4gIC8vIHdoaWxlIENocm9tZSBhbmQgU2FmYXJpIHJldHVybiB0aGUgPGJvZHk+IGVsZW1lbnQuIFRoZSA8Ym9keT4gZWxlbWVudCBtdXN0XG4gIC8vIGJlIHVzZWQgdG8gcGVyZm9ybSB0aGUgY29ycmVjdCBjYWxjdWxhdGlvbnMgZXZlbiBpZiB0aGUgPGh0bWw+IGVsZW1lbnQgaXNcbiAgLy8gbm9uLXN0YXRpYy5cbiAgaWYgKGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSA9PT0gcmF3T2Zmc2V0UGFyZW50KSB7XG4gICAgcmF3T2Zmc2V0UGFyZW50ID0gcmF3T2Zmc2V0UGFyZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuICByZXR1cm4gcmF3T2Zmc2V0UGFyZW50O1xufVxuXG4vLyBHZXRzIHRoZSBjbG9zZXN0IGFuY2VzdG9yIHBvc2l0aW9uZWQgZWxlbWVudC4gSGFuZGxlcyBzb21lIGVkZ2UgY2FzZXMsXG4vLyBzdWNoIGFzIHRhYmxlIGFuY2VzdG9ycyBhbmQgY3Jvc3MgYnJvd3NlciBidWdzLlxuZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKGlzVG9wTGF5ZXIoZWxlbWVudCkpIHtcbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIGxldCBzdmdPZmZzZXRQYXJlbnQgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICAgIHdoaWxlIChzdmdPZmZzZXRQYXJlbnQgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShzdmdPZmZzZXRQYXJlbnQpKSB7XG4gICAgICBpZiAoaXNFbGVtZW50KHN2Z09mZnNldFBhcmVudCkgJiYgIWlzU3RhdGljUG9zaXRpb25lZChzdmdPZmZzZXRQYXJlbnQpKSB7XG4gICAgICAgIHJldHVybiBzdmdPZmZzZXRQYXJlbnQ7XG4gICAgICB9XG4gICAgICBzdmdPZmZzZXRQYXJlbnQgPSBnZXRQYXJlbnROb2RlKHN2Z09mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIHJldHVybiB3aW47XG4gIH1cbiAgbGV0IG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpO1xuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgaXNTdGF0aWNQb3NpdGlvbmVkKG9mZnNldFBhcmVudCkpIHtcbiAgICBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KG9mZnNldFBhcmVudCwgcG9seWZpbGwpO1xuICB9XG4gIGlmIChvZmZzZXRQYXJlbnQgJiYgaXNMYXN0VHJhdmVyc2FibGVOb2RlKG9mZnNldFBhcmVudCkgJiYgaXNTdGF0aWNQb3NpdGlvbmVkKG9mZnNldFBhcmVudCkgJiYgIWlzQ29udGFpbmluZ0Jsb2NrKG9mZnNldFBhcmVudCkpIHtcbiAgICByZXR1cm4gd2luO1xuICB9XG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbjtcbn1cblxuY29uc3QgZ2V0RWxlbWVudFJlY3RzID0gYXN5bmMgZnVuY3Rpb24gKGRhdGEpIHtcbiAgY29uc3QgZ2V0T2Zmc2V0UGFyZW50Rm4gPSB0aGlzLmdldE9mZnNldFBhcmVudCB8fCBnZXRPZmZzZXRQYXJlbnQ7XG4gIGNvbnN0IGdldERpbWVuc2lvbnNGbiA9IHRoaXMuZ2V0RGltZW5zaW9ucztcbiAgY29uc3QgZmxvYXRpbmdEaW1lbnNpb25zID0gYXdhaXQgZ2V0RGltZW5zaW9uc0ZuKGRhdGEuZmxvYXRpbmcpO1xuICByZXR1cm4ge1xuICAgIHJlZmVyZW5jZTogZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoZGF0YS5yZWZlcmVuY2UsIGF3YWl0IGdldE9mZnNldFBhcmVudEZuKGRhdGEuZmxvYXRpbmcpLCBkYXRhLnN0cmF0ZWd5KSxcbiAgICBmbG9hdGluZzoge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICB3aWR0aDogZmxvYXRpbmdEaW1lbnNpb25zLndpZHRoLFxuICAgICAgaGVpZ2h0OiBmbG9hdGluZ0RpbWVuc2lvbnMuaGVpZ2h0XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gaXNSVEwoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5kaXJlY3Rpb24gPT09ICdydGwnO1xufVxuXG5jb25zdCBwbGF0Zm9ybSA9IHtcbiAgY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QsXG4gIGdldERvY3VtZW50RWxlbWVudCxcbiAgZ2V0Q2xpcHBpbmdSZWN0LFxuICBnZXRPZmZzZXRQYXJlbnQsXG4gIGdldEVsZW1lbnRSZWN0cyxcbiAgZ2V0Q2xpZW50UmVjdHMsXG4gIGdldERpbWVuc2lvbnMsXG4gIGdldFNjYWxlLFxuICBpc0VsZW1lbnQsXG4gIGlzUlRMXG59O1xuXG4vLyBodHRwczovL3NhbXRob3IuYXUvMjAyMS9vYnNlcnZpbmctZG9tL1xuZnVuY3Rpb24gb2JzZXJ2ZU1vdmUoZWxlbWVudCwgb25Nb3ZlKSB7XG4gIGxldCBpbyA9IG51bGw7XG4gIGxldCB0aW1lb3V0SWQ7XG4gIGNvbnN0IHJvb3QgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgdmFyIF9pbztcbiAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAoX2lvID0gaW8pID09IG51bGwgfHwgX2lvLmRpc2Nvbm5lY3QoKTtcbiAgICBpbyA9IG51bGw7XG4gIH1cbiAgZnVuY3Rpb24gcmVmcmVzaChza2lwLCB0aHJlc2hvbGQpIHtcbiAgICBpZiAoc2tpcCA9PT0gdm9pZCAwKSB7XG4gICAgICBza2lwID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aHJlc2hvbGQgPT09IHZvaWQgMCkge1xuICAgICAgdGhyZXNob2xkID0gMTtcbiAgICB9XG4gICAgY2xlYW51cCgpO1xuICAgIGNvbnN0IHtcbiAgICAgIGxlZnQsXG4gICAgICB0b3AsXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodFxuICAgIH0gPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGlmICghc2tpcCkge1xuICAgICAgb25Nb3ZlKCk7XG4gICAgfVxuICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpbnNldFRvcCA9IGZsb29yKHRvcCk7XG4gICAgY29uc3QgaW5zZXRSaWdodCA9IGZsb29yKHJvb3QuY2xpZW50V2lkdGggLSAobGVmdCArIHdpZHRoKSk7XG4gICAgY29uc3QgaW5zZXRCb3R0b20gPSBmbG9vcihyb290LmNsaWVudEhlaWdodCAtICh0b3AgKyBoZWlnaHQpKTtcbiAgICBjb25zdCBpbnNldExlZnQgPSBmbG9vcihsZWZ0KTtcbiAgICBjb25zdCByb290TWFyZ2luID0gLWluc2V0VG9wICsgXCJweCBcIiArIC1pbnNldFJpZ2h0ICsgXCJweCBcIiArIC1pbnNldEJvdHRvbSArIFwicHggXCIgKyAtaW5zZXRMZWZ0ICsgXCJweFwiO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICByb290TWFyZ2luLFxuICAgICAgdGhyZXNob2xkOiBtYXgoMCwgbWluKDEsIHRocmVzaG9sZCkpIHx8IDFcbiAgICB9O1xuICAgIGxldCBpc0ZpcnN0VXBkYXRlID0gdHJ1ZTtcbiAgICBmdW5jdGlvbiBoYW5kbGVPYnNlcnZlKGVudHJpZXMpIHtcbiAgICAgIGNvbnN0IHJhdGlvID0gZW50cmllc1swXS5pbnRlcnNlY3Rpb25SYXRpbztcbiAgICAgIGlmIChyYXRpbyAhPT0gdGhyZXNob2xkKSB7XG4gICAgICAgIGlmICghaXNGaXJzdFVwZGF0ZSkge1xuICAgICAgICAgIHJldHVybiByZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyYXRpbykge1xuICAgICAgICAgIC8vIElmIHRoZSByZWZlcmVuY2UgaXMgY2xpcHBlZCwgdGhlIHJhdGlvIGlzIDAuIFRocm90dGxlIHRoZSByZWZyZXNoXG4gICAgICAgICAgLy8gdG8gcHJldmVudCBhbiBpbmZpbml0ZSBsb29wIG9mIHVwZGF0ZXMuXG4gICAgICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICByZWZyZXNoKGZhbHNlLCAxZS03KTtcbiAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWZyZXNoKGZhbHNlLCByYXRpbyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlzRmlyc3RVcGRhdGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBPbGRlciBicm93c2VycyBkb24ndCBzdXBwb3J0IGEgYGRvY3VtZW50YCBhcyB0aGUgcm9vdCBhbmQgd2lsbCB0aHJvdyBhblxuICAgIC8vIGVycm9yLlxuICAgIHRyeSB7XG4gICAgICBpbyA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVPYnNlcnZlLCB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIC8vIEhhbmRsZSA8aWZyYW1lPnNcbiAgICAgICAgcm9vdDogcm9vdC5vd25lckRvY3VtZW50XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpbyA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVPYnNlcnZlLCBvcHRpb25zKTtcbiAgICB9XG4gICAgaW8ub2JzZXJ2ZShlbGVtZW50KTtcbiAgfVxuICByZWZyZXNoKHRydWUpO1xuICByZXR1cm4gY2xlYW51cDtcbn1cblxuLyoqXG4gKiBBdXRvbWF0aWNhbGx5IHVwZGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHdoZW4gbmVjZXNzYXJ5LlxuICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXMgbW91bnRlZCBvbiB0aGUgRE9NIG9yXG4gKiB2aXNpYmxlIG9uIHRoZSBzY3JlZW4uXG4gKiBAcmV0dXJucyBjbGVhbnVwIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGJlIGludm9rZWQgd2hlbiB0aGUgZmxvYXRpbmcgZWxlbWVudCBpc1xuICogcmVtb3ZlZCBmcm9tIHRoZSBET00gb3IgaGlkZGVuIGZyb20gdGhlIHNjcmVlbi5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvVXBkYXRlXG4gKi9cbmZ1bmN0aW9uIGF1dG9VcGRhdGUocmVmZXJlbmNlLCBmbG9hdGluZywgdXBkYXRlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIGFuY2VzdG9yU2Nyb2xsID0gdHJ1ZSxcbiAgICBhbmNlc3RvclJlc2l6ZSA9IHRydWUsXG4gICAgZWxlbWVudFJlc2l6ZSA9IHR5cGVvZiBSZXNpemVPYnNlcnZlciA9PT0gJ2Z1bmN0aW9uJyxcbiAgICBsYXlvdXRTaGlmdCA9IHR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlciA9PT0gJ2Z1bmN0aW9uJyxcbiAgICBhbmltYXRpb25GcmFtZSA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCByZWZlcmVuY2VFbCA9IHVud3JhcEVsZW1lbnQocmVmZXJlbmNlKTtcbiAgY29uc3QgYW5jZXN0b3JzID0gYW5jZXN0b3JTY3JvbGwgfHwgYW5jZXN0b3JSZXNpemUgPyBbLi4uKHJlZmVyZW5jZUVsID8gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMocmVmZXJlbmNlRWwpIDogW10pLCAuLi5nZXRPdmVyZmxvd0FuY2VzdG9ycyhmbG9hdGluZyldIDogW107XG4gIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICBhbmNlc3RvclNjcm9sbCAmJiBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUsIHtcbiAgICAgIHBhc3NpdmU6IHRydWVcbiAgICB9KTtcbiAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICB9KTtcbiAgY29uc3QgY2xlYW51cElvID0gcmVmZXJlbmNlRWwgJiYgbGF5b3V0U2hpZnQgPyBvYnNlcnZlTW92ZShyZWZlcmVuY2VFbCwgdXBkYXRlKSA6IG51bGw7XG4gIGxldCByZW9ic2VydmVGcmFtZSA9IC0xO1xuICBsZXQgcmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICBpZiAoZWxlbWVudFJlc2l6ZSkge1xuICAgIHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKF9yZWYgPT4ge1xuICAgICAgbGV0IFtmaXJzdEVudHJ5XSA9IF9yZWY7XG4gICAgICBpZiAoZmlyc3RFbnRyeSAmJiBmaXJzdEVudHJ5LnRhcmdldCA9PT0gcmVmZXJlbmNlRWwgJiYgcmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgLy8gUHJldmVudCB1cGRhdGUgbG9vcHMgd2hlbiB1c2luZyB0aGUgYHNpemVgIG1pZGRsZXdhcmUuXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMTc0MFxuICAgICAgICByZXNpemVPYnNlcnZlci51bm9ic2VydmUoZmxvYXRpbmcpO1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyZW9ic2VydmVGcmFtZSk7XG4gICAgICAgIHJlb2JzZXJ2ZUZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICB2YXIgX3Jlc2l6ZU9ic2VydmVyO1xuICAgICAgICAgIChfcmVzaXplT2JzZXJ2ZXIgPSByZXNpemVPYnNlcnZlcikgPT0gbnVsbCB8fCBfcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShmbG9hdGluZyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdXBkYXRlKCk7XG4gICAgfSk7XG4gICAgaWYgKHJlZmVyZW5jZUVsICYmICFhbmltYXRpb25GcmFtZSkge1xuICAgICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShyZWZlcmVuY2VFbCk7XG4gICAgfVxuICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZmxvYXRpbmcpO1xuICB9XG4gIGxldCBmcmFtZUlkO1xuICBsZXQgcHJldlJlZlJlY3QgPSBhbmltYXRpb25GcmFtZSA/IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpIDogbnVsbDtcbiAgaWYgKGFuaW1hdGlvbkZyYW1lKSB7XG4gICAgZnJhbWVMb29wKCk7XG4gIH1cbiAgZnVuY3Rpb24gZnJhbWVMb29wKCkge1xuICAgIGNvbnN0IG5leHRSZWZSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHJlZmVyZW5jZSk7XG4gICAgaWYgKHByZXZSZWZSZWN0ICYmIChuZXh0UmVmUmVjdC54ICE9PSBwcmV2UmVmUmVjdC54IHx8IG5leHRSZWZSZWN0LnkgIT09IHByZXZSZWZSZWN0LnkgfHwgbmV4dFJlZlJlY3Qud2lkdGggIT09IHByZXZSZWZSZWN0LndpZHRoIHx8IG5leHRSZWZSZWN0LmhlaWdodCAhPT0gcHJldlJlZlJlY3QuaGVpZ2h0KSkge1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICAgIHByZXZSZWZSZWN0ID0gbmV4dFJlZlJlY3Q7XG4gICAgZnJhbWVJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmcmFtZUxvb3ApO1xuICB9XG4gIHVwZGF0ZSgpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIHZhciBfcmVzaXplT2JzZXJ2ZXIyO1xuICAgIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSk7XG4gICAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICAgIH0pO1xuICAgIGNsZWFudXBJbyA9PSBudWxsIHx8IGNsZWFudXBJbygpO1xuICAgIChfcmVzaXplT2JzZXJ2ZXIyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyMi5kaXNjb25uZWN0KCk7XG4gICAgcmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICAgIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWVJZCk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHdpdGggYW4gb2JqZWN0IG9mIG92ZXJmbG93IHNpZGUgb2Zmc2V0cyB0aGF0IGRldGVybWluZSBob3cgbXVjaCB0aGVcbiAqIGVsZW1lbnQgaXMgb3ZlcmZsb3dpbmcgYSBnaXZlbiBjbGlwcGluZyBib3VuZGFyeSBvbiBlYWNoIHNpZGUuXG4gKiAtIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGJvdW5kYXJ5IGJ5IHRoYXQgbnVtYmVyIG9mIHBpeGVsc1xuICogLSBuZWdhdGl2ZSA9IGhvdyBtYW55IHBpeGVscyBsZWZ0IGJlZm9yZSBpdCB3aWxsIG92ZXJmbG93XG4gKiAtIDAgPSBsaWVzIGZsdXNoIHdpdGggdGhlIGJvdW5kYXJ5XG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZGV0ZWN0T3ZlcmZsb3dcbiAqL1xuY29uc3QgZGV0ZWN0T3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyQxO1xuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSBvZmZzZXQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBhdXRvUGxhY2VtZW50JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IHNoaWZ0JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZmxpcCQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSBzaXplJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gaGlkZSQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IGFycm93JDE7XG5cbi8qKlxuICogUHJvdmlkZXMgaW1wcm92ZWQgcG9zaXRpb25pbmcgZm9yIGlubGluZSByZWZlcmVuY2UgZWxlbWVudHMgdGhhdCBjYW4gc3BhblxuICogb3ZlciBtdWx0aXBsZSBsaW5lcywgc3VjaCBhcyBoeXBlcmxpbmtzIG9yIHJhbmdlIHNlbGVjdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaW5saW5lXG4gKi9cbmNvbnN0IGlubGluZSA9IGlubGluZSQxO1xuXG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gbGltaXRTaGlmdCQxO1xuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSBnaXZlbiByZWZlcmVuY2UgZWxlbWVudC5cbiAqL1xuY29uc3QgY29tcHV0ZVBvc2l0aW9uID0gKHJlZmVyZW5jZSwgZmxvYXRpbmcsIG9wdGlvbnMpID0+IHtcbiAgLy8gVGhpcyBjYWNoZXMgdGhlIGV4cGVuc2l2ZSBgZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzYCBmdW5jdGlvbiBzbyB0aGF0XG4gIC8vIG11bHRpcGxlIGxpZmVjeWNsZSByZXNldHMgcmUtdXNlIHRoZSBzYW1lIHJlc3VsdC4gSXQgb25seSBsaXZlcyBmb3IgYVxuICAvLyBzaW5nbGUgY2FsbC4gSWYgb3RoZXIgZnVuY3Rpb25zIGJlY29tZSBleHBlbnNpdmUsIHdlIGNhbiBhZGQgdGhlbSBhcyB3ZWxsLlxuICBjb25zdCBjYWNoZSA9IG5ldyBNYXAoKTtcbiAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IHtcbiAgICBwbGF0Zm9ybSxcbiAgICAuLi5vcHRpb25zXG4gIH07XG4gIGNvbnN0IHBsYXRmb3JtV2l0aENhY2hlID0ge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMucGxhdGZvcm0sXG4gICAgX2M6IGNhY2hlXG4gIH07XG4gIHJldHVybiBjb21wdXRlUG9zaXRpb24kMShyZWZlcmVuY2UsIGZsb2F0aW5nLCB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucyxcbiAgICBwbGF0Zm9ybTogcGxhdGZvcm1XaXRoQ2FjaGVcbiAgfSk7XG59O1xuXG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHBsYXRmb3JtLCBzaGlmdCwgc2l6ZSB9O1xuIiwiaW1wb3J0IHsgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuXG52YXIgaW5kZXggPSB1c2VMYXlvdXRFZmZlY3QgO1xuXG5leHBvcnQgeyBpbmRleCBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyJztcbmltcG9ydCBfZXh0ZW5kcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzJztcbmltcG9ydCB7IGpzeCwga2V5ZnJhbWVzLCBjc3MgYXMgY3NzJDIgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgX3NsaWNlZFRvQXJyYXkgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheSc7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzJztcbmltcG9ydCBfdHlwZW9mIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZic7XG5pbXBvcnQgX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbCBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90YWdnZWRUZW1wbGF0ZUxpdGVyYWwnO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eSc7XG5pbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VSZWYsIHVzZVN0YXRlLCB1c2VNZW1vLCB1c2VDYWxsYmFjaywgY3JlYXRlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgeyBhdXRvVXBkYXRlIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgdXNlTGF5b3V0RWZmZWN0IGZyb20gJ3VzZS1pc29tb3JwaGljLWxheW91dC1lZmZlY3QnO1xuXG52YXIgX2V4Y2x1ZGVkJDQgPSBbXCJjbGFzc05hbWVcIiwgXCJjbGVhclZhbHVlXCIsIFwiY3hcIiwgXCJnZXRTdHlsZXNcIiwgXCJnZXRDbGFzc05hbWVzXCIsIFwiZ2V0VmFsdWVcIiwgXCJoYXNWYWx1ZVwiLCBcImlzTXVsdGlcIiwgXCJpc1J0bFwiLCBcIm9wdGlvbnNcIiwgXCJzZWxlY3RPcHRpb25cIiwgXCJzZWxlY3RQcm9wc1wiLCBcInNldFZhbHVlXCIsIFwidGhlbWVcIl07XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE5PIE9QXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIG5vb3AgPSBmdW5jdGlvbiBub29wKCkge307XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ2xhc3MgTmFtZSBQcmVmaXhlclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBjb21wb25lbnQgc3RhdGUgZm9yIHN0eWxpbmcgd2l0aCBjbGFzcyBuYW1lcy5cblxuIEV4cGVjdHMgYW4gYXJyYXkgb2Ygc3RyaW5ncyBPUiBhIHN0cmluZy9vYmplY3QgcGFpcjpcbiAtIGNsYXNzTmFtZShbJ2NvbXAnLCAnY29tcC1hcmcnLCAnY29tcC1hcmctMiddKVxuICAgQHJldHVybnMgJ3JlYWN0LXNlbGVjdF9fY29tcCByZWFjdC1zZWxlY3RfX2NvbXAtYXJnIHJlYWN0LXNlbGVjdF9fY29tcC1hcmctMidcbiAtIGNsYXNzTmFtZSgnY29tcCcsIHsgc29tZTogdHJ1ZSwgc3RhdGU6IGZhbHNlIH0pXG4gICBAcmV0dXJucyAncmVhY3Qtc2VsZWN0X19jb21wIHJlYWN0LXNlbGVjdF9fY29tcC0tc29tZSdcbiovXG5mdW5jdGlvbiBhcHBseVByZWZpeFRvTmFtZShwcmVmaXgsIG5hbWUpIHtcbiAgaWYgKCFuYW1lKSB7XG4gICAgcmV0dXJuIHByZWZpeDtcbiAgfSBlbHNlIGlmIChuYW1lWzBdID09PSAnLScpIHtcbiAgICByZXR1cm4gcHJlZml4ICsgbmFtZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcHJlZml4ICsgJ19fJyArIG5hbWU7XG4gIH1cbn1cbmZ1bmN0aW9uIGNsYXNzTmFtZXMocHJlZml4LCBzdGF0ZSkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgY2xhc3NOYW1lTGlzdCA9IG5ldyBBcnJheShfbGVuID4gMiA/IF9sZW4gLSAyIDogMCksIF9rZXkgPSAyOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgY2xhc3NOYW1lTGlzdFtfa2V5IC0gMl0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cbiAgdmFyIGFyciA9IFtdLmNvbmNhdChjbGFzc05hbWVMaXN0KTtcbiAgaWYgKHN0YXRlICYmIHByZWZpeCkge1xuICAgIGZvciAodmFyIGtleSBpbiBzdGF0ZSkge1xuICAgICAgaWYgKHN0YXRlLmhhc093blByb3BlcnR5KGtleSkgJiYgc3RhdGVba2V5XSkge1xuICAgICAgICBhcnIucHVzaChcIlwiLmNvbmNhdChhcHBseVByZWZpeFRvTmFtZShwcmVmaXgsIGtleSkpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFyci5maWx0ZXIoZnVuY3Rpb24gKGkpIHtcbiAgICByZXR1cm4gaTtcbiAgfSkubWFwKGZ1bmN0aW9uIChpKSB7XG4gICAgcmV0dXJuIFN0cmluZyhpKS50cmltKCk7XG4gIH0pLmpvaW4oJyAnKTtcbn1cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ2xlYW4gVmFsdWVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgY2xlYW5WYWx1ZSA9IGZ1bmN0aW9uIGNsZWFuVmFsdWUodmFsdWUpIHtcbiAgaWYgKGlzQXJyYXkodmFsdWUpKSByZXR1cm4gdmFsdWUuZmlsdGVyKEJvb2xlYW4pO1xuICBpZiAoX3R5cGVvZih2YWx1ZSkgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSByZXR1cm4gW3ZhbHVlXTtcbiAgcmV0dXJuIFtdO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDbGVhbiBDb21tb24gUHJvcHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgY2xlYW5Db21tb25Qcm9wcyA9IGZ1bmN0aW9uIGNsZWFuQ29tbW9uUHJvcHMocHJvcHMpIHtcbiAgLy9jbGFzc05hbWVcbiAgcHJvcHMuY2xhc3NOYW1lO1xuICAgIHByb3BzLmNsZWFyVmFsdWU7XG4gICAgcHJvcHMuY3g7XG4gICAgcHJvcHMuZ2V0U3R5bGVzO1xuICAgIHByb3BzLmdldENsYXNzTmFtZXM7XG4gICAgcHJvcHMuZ2V0VmFsdWU7XG4gICAgcHJvcHMuaGFzVmFsdWU7XG4gICAgcHJvcHMuaXNNdWx0aTtcbiAgICBwcm9wcy5pc1J0bDtcbiAgICBwcm9wcy5vcHRpb25zO1xuICAgIHByb3BzLnNlbGVjdE9wdGlvbjtcbiAgICBwcm9wcy5zZWxlY3RQcm9wcztcbiAgICBwcm9wcy5zZXRWYWx1ZTtcbiAgICBwcm9wcy50aGVtZTtcbiAgICB2YXIgaW5uZXJQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhwcm9wcywgX2V4Y2x1ZGVkJDQpO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7fSwgaW5uZXJQcm9wcyk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdldCBTdHlsZSBQcm9wc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBnZXRTdHlsZVByb3BzID0gZnVuY3Rpb24gZ2V0U3R5bGVQcm9wcyhwcm9wcywgbmFtZSwgY2xhc3NOYW1lc1N0YXRlKSB7XG4gIHZhciBjeCA9IHByb3BzLmN4LFxuICAgIGdldFN0eWxlcyA9IHByb3BzLmdldFN0eWxlcyxcbiAgICBnZXRDbGFzc05hbWVzID0gcHJvcHMuZ2V0Q2xhc3NOYW1lcyxcbiAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gIHJldHVybiB7XG4gICAgY3NzOiBnZXRTdHlsZXMobmFtZSwgcHJvcHMpLFxuICAgIGNsYXNzTmFtZTogY3goY2xhc3NOYW1lc1N0YXRlICE9PSBudWxsICYmIGNsYXNzTmFtZXNTdGF0ZSAhPT0gdm9pZCAwID8gY2xhc3NOYW1lc1N0YXRlIDoge30sIGdldENsYXNzTmFtZXMobmFtZSwgcHJvcHMpLCBjbGFzc05hbWUpXG4gIH07XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhhbmRsZSBJbnB1dCBDaGFuZ2Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBoYW5kbGVJbnB1dENoYW5nZShpbnB1dFZhbHVlLCBhY3Rpb25NZXRhLCBvbklucHV0Q2hhbmdlKSB7XG4gIGlmIChvbklucHV0Q2hhbmdlKSB7XG4gICAgdmFyIF9uZXdWYWx1ZSA9IG9uSW5wdXRDaGFuZ2UoaW5wdXRWYWx1ZSwgYWN0aW9uTWV0YSk7XG4gICAgaWYgKHR5cGVvZiBfbmV3VmFsdWUgPT09ICdzdHJpbmcnKSByZXR1cm4gX25ld1ZhbHVlO1xuICB9XG4gIHJldHVybiBpbnB1dFZhbHVlO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNjcm9sbCBIZWxwZXJzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZnVuY3Rpb24gaXNEb2N1bWVudEVsZW1lbnQoZWwpIHtcbiAgcmV0dXJuIFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIGRvY3VtZW50LmJvZHksIHdpbmRvd10uaW5kZXhPZihlbCkgPiAtMTtcbn1cblxuLy8gTm9ybWFsaXplZCBTY3JvbGwgVG9wXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZnVuY3Rpb24gbm9ybWFsaXplZEhlaWdodChlbCkge1xuICBpZiAoaXNEb2N1bWVudEVsZW1lbnQoZWwpKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lckhlaWdodDtcbiAgfVxuICByZXR1cm4gZWwuY2xpZW50SGVpZ2h0O1xufVxuXG4vLyBOb3JtYWxpemVkIHNjcm9sbFRvICYgc2Nyb2xsVG9wXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZnVuY3Rpb24gZ2V0U2Nyb2xsVG9wKGVsKSB7XG4gIGlmIChpc0RvY3VtZW50RWxlbWVudChlbCkpIHtcbiAgICByZXR1cm4gd2luZG93LnBhZ2VZT2Zmc2V0O1xuICB9XG4gIHJldHVybiBlbC5zY3JvbGxUb3A7XG59XG5mdW5jdGlvbiBzY3JvbGxUbyhlbCwgdG9wKSB7XG4gIC8vIHdpdGggYSBzY3JvbGwgZGlzdGFuY2UsIHdlIHBlcmZvcm0gc2Nyb2xsIG9uIHRoZSBlbGVtZW50XG4gIGlmIChpc0RvY3VtZW50RWxlbWVudChlbCkpIHtcbiAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgdG9wKTtcbiAgICByZXR1cm47XG4gIH1cbiAgZWwuc2Nyb2xsVG9wID0gdG9wO1xufVxuXG4vLyBHZXQgU2Nyb2xsIFBhcmVudFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIGdldFNjcm9sbFBhcmVudChlbGVtZW50KSB7XG4gIHZhciBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIHZhciBleGNsdWRlU3RhdGljUGFyZW50ID0gc3R5bGUucG9zaXRpb24gPT09ICdhYnNvbHV0ZSc7XG4gIHZhciBvdmVyZmxvd1J4ID0gLyhhdXRvfHNjcm9sbCkvO1xuICBpZiAoc3R5bGUucG9zaXRpb24gPT09ICdmaXhlZCcpIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gIGZvciAodmFyIHBhcmVudCA9IGVsZW1lbnQ7IHBhcmVudCA9IHBhcmVudC5wYXJlbnRFbGVtZW50Oykge1xuICAgIHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnQpO1xuICAgIGlmIChleGNsdWRlU3RhdGljUGFyZW50ICYmIHN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChvdmVyZmxvd1J4LnRlc3Qoc3R5bGUub3ZlcmZsb3cgKyBzdHlsZS5vdmVyZmxvd1kgKyBzdHlsZS5vdmVyZmxvd1gpKSB7XG4gICAgICByZXR1cm4gcGFyZW50O1xuICAgIH1cbiAgfVxuICByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xufVxuXG4vLyBBbmltYXRlZCBTY3JvbGwgVG9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAgQHBhcmFtIHQ6IHRpbWUgKGVsYXBzZWQpXG4gIEBwYXJhbSBiOiBpbml0aWFsIHZhbHVlXG4gIEBwYXJhbSBjOiBhbW91bnQgb2YgY2hhbmdlXG4gIEBwYXJhbSBkOiBkdXJhdGlvblxuKi9cbmZ1bmN0aW9uIGVhc2VPdXRDdWJpYyh0LCBiLCBjLCBkKSB7XG4gIHJldHVybiBjICogKCh0ID0gdCAvIGQgLSAxKSAqIHQgKiB0ICsgMSkgKyBiO1xufVxuZnVuY3Rpb24gYW5pbWF0ZWRTY3JvbGxUbyhlbGVtZW50LCB0bykge1xuICB2YXIgZHVyYXRpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDIwMDtcbiAgdmFyIGNhbGxiYWNrID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiBub29wO1xuICB2YXIgc3RhcnQgPSBnZXRTY3JvbGxUb3AoZWxlbWVudCk7XG4gIHZhciBjaGFuZ2UgPSB0byAtIHN0YXJ0O1xuICB2YXIgaW5jcmVtZW50ID0gMTA7XG4gIHZhciBjdXJyZW50VGltZSA9IDA7XG4gIGZ1bmN0aW9uIGFuaW1hdGVTY3JvbGwoKSB7XG4gICAgY3VycmVudFRpbWUgKz0gaW5jcmVtZW50O1xuICAgIHZhciB2YWwgPSBlYXNlT3V0Q3ViaWMoY3VycmVudFRpbWUsIHN0YXJ0LCBjaGFuZ2UsIGR1cmF0aW9uKTtcbiAgICBzY3JvbGxUbyhlbGVtZW50LCB2YWwpO1xuICAgIGlmIChjdXJyZW50VGltZSA8IGR1cmF0aW9uKSB7XG4gICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGVTY3JvbGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsYmFjayhlbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgYW5pbWF0ZVNjcm9sbCgpO1xufVxuXG4vLyBTY3JvbGwgSW50byBWaWV3XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZnVuY3Rpb24gc2Nyb2xsSW50b1ZpZXcobWVudUVsLCBmb2N1c2VkRWwpIHtcbiAgdmFyIG1lbnVSZWN0ID0gbWVudUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB2YXIgZm9jdXNlZFJlY3QgPSBmb2N1c2VkRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBvdmVyU2Nyb2xsID0gZm9jdXNlZEVsLm9mZnNldEhlaWdodCAvIDM7XG4gIGlmIChmb2N1c2VkUmVjdC5ib3R0b20gKyBvdmVyU2Nyb2xsID4gbWVudVJlY3QuYm90dG9tKSB7XG4gICAgc2Nyb2xsVG8obWVudUVsLCBNYXRoLm1pbihmb2N1c2VkRWwub2Zmc2V0VG9wICsgZm9jdXNlZEVsLmNsaWVudEhlaWdodCAtIG1lbnVFbC5vZmZzZXRIZWlnaHQgKyBvdmVyU2Nyb2xsLCBtZW51RWwuc2Nyb2xsSGVpZ2h0KSk7XG4gIH0gZWxzZSBpZiAoZm9jdXNlZFJlY3QudG9wIC0gb3ZlclNjcm9sbCA8IG1lbnVSZWN0LnRvcCkge1xuICAgIHNjcm9sbFRvKG1lbnVFbCwgTWF0aC5tYXgoZm9jdXNlZEVsLm9mZnNldFRvcCAtIG92ZXJTY3JvbGwsIDApKTtcbiAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdldCBib3VuZGluZyBjbGllbnQgb2JqZWN0XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gY2Fubm90IGdldCBrZXlzIHVzaW5nIGFycmF5IG5vdGF0aW9uIHdpdGggRE9NUmVjdFxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRPYmooZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHJldHVybiB7XG4gICAgYm90dG9tOiByZWN0LmJvdHRvbSxcbiAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0LFxuICAgIGxlZnQ6IHJlY3QubGVmdCxcbiAgICByaWdodDogcmVjdC5yaWdodCxcbiAgICB0b3A6IHJlY3QudG9wLFxuICAgIHdpZHRoOiByZWN0LndpZHRoXG4gIH07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVG91Y2ggQ2FwYWJpbGl0eSBEZXRlY3RvclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmZ1bmN0aW9uIGlzVG91Y2hDYXBhYmxlKCkge1xuICB0cnkge1xuICAgIGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdUb3VjaEV2ZW50Jyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNb2JpbGUgRGV2aWNlIERldGVjdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZnVuY3Rpb24gaXNNb2JpbGVEZXZpY2UoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIC9BbmRyb2lkfHdlYk9TfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxJRU1vYmlsZXxPcGVyYSBNaW5pL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBhc3NpdmUgRXZlbnQgRGV0ZWN0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vcmFmZ3JhcGgvZGV0ZWN0LWl0L2Jsb2IvbWFpbi9zcmMvaW5kZXgudHMjTDE5LUwzNlxudmFyIHBhc3NpdmVPcHRpb25BY2Nlc3NlZCA9IGZhbHNlO1xudmFyIG9wdGlvbnMgPSB7XG4gIGdldCBwYXNzaXZlKCkge1xuICAgIHJldHVybiBwYXNzaXZlT3B0aW9uQWNjZXNzZWQgPSB0cnVlO1xuICB9XG59O1xuLy8gY2hlY2sgZm9yIFNTUlxudmFyIHcgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHt9O1xuaWYgKHcuYWRkRXZlbnRMaXN0ZW5lciAmJiB3LnJlbW92ZUV2ZW50TGlzdGVuZXIpIHtcbiAgdy5hZGRFdmVudExpc3RlbmVyKCdwJywgbm9vcCwgb3B0aW9ucyk7XG4gIHcucmVtb3ZlRXZlbnRMaXN0ZW5lcigncCcsIG5vb3AsIGZhbHNlKTtcbn1cbnZhciBzdXBwb3J0c1Bhc3NpdmVFdmVudHMgPSBwYXNzaXZlT3B0aW9uQWNjZXNzZWQ7XG5mdW5jdGlvbiBub3ROdWxsaXNoKGl0ZW0pIHtcbiAgcmV0dXJuIGl0ZW0gIT0gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzQXJyYXkoYXJnKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGFyZyk7XG59XG5mdW5jdGlvbiB2YWx1ZVRlcm5hcnkoaXNNdWx0aSwgbXVsdGlWYWx1ZSwgc2luZ2xlVmFsdWUpIHtcbiAgcmV0dXJuIGlzTXVsdGkgPyBtdWx0aVZhbHVlIDogc2luZ2xlVmFsdWU7XG59XG5mdW5jdGlvbiBzaW5nbGVWYWx1ZUFzVmFsdWUoc2luZ2xlVmFsdWUpIHtcbiAgcmV0dXJuIHNpbmdsZVZhbHVlO1xufVxuZnVuY3Rpb24gbXVsdGlWYWx1ZUFzVmFsdWUobXVsdGlWYWx1ZSkge1xuICByZXR1cm4gbXVsdGlWYWx1ZTtcbn1cbnZhciByZW1vdmVQcm9wcyA9IGZ1bmN0aW9uIHJlbW92ZVByb3BzKHByb3BzT2JqKSB7XG4gIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgcHJvcGVydGllcyA9IG5ldyBBcnJheShfbGVuMiA+IDEgPyBfbGVuMiAtIDEgOiAwKSwgX2tleTIgPSAxOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgcHJvcGVydGllc1tfa2V5MiAtIDFdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgfVxuICB2YXIgcHJvcHNNYXAgPSBPYmplY3QuZW50cmllcyhwcm9wc09iaikuZmlsdGVyKGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgdmFyIF9yZWYyID0gX3NsaWNlZFRvQXJyYXkoX3JlZiwgMSksXG4gICAgICBrZXkgPSBfcmVmMlswXTtcbiAgICByZXR1cm4gIXByb3BlcnRpZXMuaW5jbHVkZXMoa2V5KTtcbiAgfSk7XG4gIHJldHVybiBwcm9wc01hcC5yZWR1Y2UoZnVuY3Rpb24gKG5ld1Byb3BzLCBfcmVmMykge1xuICAgIHZhciBfcmVmNCA9IF9zbGljZWRUb0FycmF5KF9yZWYzLCAyKSxcbiAgICAgIGtleSA9IF9yZWY0WzBdLFxuICAgICAgdmFsID0gX3JlZjRbMV07XG4gICAgbmV3UHJvcHNba2V5XSA9IHZhbDtcbiAgICByZXR1cm4gbmV3UHJvcHM7XG4gIH0sIHt9KTtcbn07XG5cbnZhciBfZXhjbHVkZWQkMyA9IFtcImNoaWxkcmVuXCIsIFwiaW5uZXJQcm9wc1wiXSxcbiAgX2V4Y2x1ZGVkMiQxID0gW1wiY2hpbGRyZW5cIiwgXCJpbm5lclByb3BzXCJdO1xuZnVuY3Rpb24gZ2V0TWVudVBsYWNlbWVudChfcmVmKSB7XG4gIHZhciBwcmVmZXJyZWRNYXhIZWlnaHQgPSBfcmVmLm1heEhlaWdodCxcbiAgICBtZW51RWwgPSBfcmVmLm1lbnVFbCxcbiAgICBtaW5IZWlnaHQgPSBfcmVmLm1pbkhlaWdodCxcbiAgICBwcmVmZXJyZWRQbGFjZW1lbnQgPSBfcmVmLnBsYWNlbWVudCxcbiAgICBzaG91bGRTY3JvbGwgPSBfcmVmLnNob3VsZFNjcm9sbCxcbiAgICBpc0ZpeGVkUG9zaXRpb24gPSBfcmVmLmlzRml4ZWRQb3NpdGlvbixcbiAgICBjb250cm9sSGVpZ2h0ID0gX3JlZi5jb250cm9sSGVpZ2h0O1xuICB2YXIgc2Nyb2xsUGFyZW50ID0gZ2V0U2Nyb2xsUGFyZW50KG1lbnVFbCk7XG4gIHZhciBkZWZhdWx0U3RhdGUgPSB7XG4gICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICB9O1xuXG4gIC8vIHNvbWV0aGluZyB3ZW50IHdyb25nLCByZXR1cm4gZGVmYXVsdCBzdGF0ZVxuICBpZiAoIW1lbnVFbCB8fCAhbWVudUVsLm9mZnNldFBhcmVudCkgcmV0dXJuIGRlZmF1bHRTdGF0ZTtcblxuICAvLyB3ZSBjYW4ndCB0cnVzdCBgc2Nyb2xsUGFyZW50LnNjcm9sbEhlaWdodGAgLS0+IGl0IG1heSBpbmNyZWFzZSB3aGVuXG4gIC8vIHRoZSBtZW51IGlzIHJlbmRlcmVkXG4gIHZhciBfc2Nyb2xsUGFyZW50JGdldEJvdW4gPSBzY3JvbGxQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgc2Nyb2xsSGVpZ2h0ID0gX3Njcm9sbFBhcmVudCRnZXRCb3VuLmhlaWdodDtcbiAgdmFyIF9tZW51RWwkZ2V0Qm91bmRpbmdDbCA9IG1lbnVFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICBtZW51Qm90dG9tID0gX21lbnVFbCRnZXRCb3VuZGluZ0NsLmJvdHRvbSxcbiAgICBtZW51SGVpZ2h0ID0gX21lbnVFbCRnZXRCb3VuZGluZ0NsLmhlaWdodCxcbiAgICBtZW51VG9wID0gX21lbnVFbCRnZXRCb3VuZGluZ0NsLnRvcDtcbiAgdmFyIF9tZW51RWwkb2Zmc2V0UGFyZW50JCA9IG1lbnVFbC5vZmZzZXRQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgY29udGFpbmVyVG9wID0gX21lbnVFbCRvZmZzZXRQYXJlbnQkLnRvcDtcbiAgdmFyIHZpZXdIZWlnaHQgPSBpc0ZpeGVkUG9zaXRpb24gPyB3aW5kb3cuaW5uZXJIZWlnaHQgOiBub3JtYWxpemVkSGVpZ2h0KHNjcm9sbFBhcmVudCk7XG4gIHZhciBzY3JvbGxUb3AgPSBnZXRTY3JvbGxUb3Aoc2Nyb2xsUGFyZW50KTtcbiAgdmFyIG1hcmdpbkJvdHRvbSA9IHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUobWVudUVsKS5tYXJnaW5Cb3R0b20sIDEwKTtcbiAgdmFyIG1hcmdpblRvcCA9IHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUobWVudUVsKS5tYXJnaW5Ub3AsIDEwKTtcbiAgdmFyIHZpZXdTcGFjZUFib3ZlID0gY29udGFpbmVyVG9wIC0gbWFyZ2luVG9wO1xuICB2YXIgdmlld1NwYWNlQmVsb3cgPSB2aWV3SGVpZ2h0IC0gbWVudVRvcDtcbiAgdmFyIHNjcm9sbFNwYWNlQWJvdmUgPSB2aWV3U3BhY2VBYm92ZSArIHNjcm9sbFRvcDtcbiAgdmFyIHNjcm9sbFNwYWNlQmVsb3cgPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBtZW51VG9wO1xuICB2YXIgc2Nyb2xsRG93biA9IG1lbnVCb3R0b20gLSB2aWV3SGVpZ2h0ICsgc2Nyb2xsVG9wICsgbWFyZ2luQm90dG9tO1xuICB2YXIgc2Nyb2xsVXAgPSBzY3JvbGxUb3AgKyBtZW51VG9wIC0gbWFyZ2luVG9wO1xuICB2YXIgc2Nyb2xsRHVyYXRpb24gPSAxNjA7XG4gIHN3aXRjaCAocHJlZmVycmVkUGxhY2VtZW50KSB7XG4gICAgY2FzZSAnYXV0byc6XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIC8vIDE6IHRoZSBtZW51IHdpbGwgZml0LCBkbyBub3RoaW5nXG4gICAgICBpZiAodmlld1NwYWNlQmVsb3cgPj0gbWVudUhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBwcmVmZXJyZWRNYXhIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gMjogdGhlIG1lbnUgd2lsbCBmaXQsIGlmIHNjcm9sbGVkXG4gICAgICBpZiAoc2Nyb2xsU3BhY2VCZWxvdyA+PSBtZW51SGVpZ2h0ICYmICFpc0ZpeGVkUG9zaXRpb24pIHtcbiAgICAgICAgaWYgKHNob3VsZFNjcm9sbCkge1xuICAgICAgICAgIGFuaW1hdGVkU2Nyb2xsVG8oc2Nyb2xsUGFyZW50LCBzY3JvbGxEb3duLCBzY3JvbGxEdXJhdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgICAgIG1heEhlaWdodDogcHJlZmVycmVkTWF4SGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIDM6IHRoZSBtZW51IHdpbGwgZml0LCBpZiBjb25zdHJhaW5lZFxuICAgICAgaWYgKCFpc0ZpeGVkUG9zaXRpb24gJiYgc2Nyb2xsU3BhY2VCZWxvdyA+PSBtaW5IZWlnaHQgfHwgaXNGaXhlZFBvc2l0aW9uICYmIHZpZXdTcGFjZUJlbG93ID49IG1pbkhlaWdodCkge1xuICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsKSB7XG4gICAgICAgICAgYW5pbWF0ZWRTY3JvbGxUbyhzY3JvbGxQYXJlbnQsIHNjcm9sbERvd24sIHNjcm9sbER1cmF0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHdlIHdhbnQgdG8gcHJvdmlkZSBhcyBtdWNoIG9mIHRoZSBtZW51IGFzIHBvc3NpYmxlIHRvIHRoZSB1c2VyLFxuICAgICAgICAvLyBzbyBnaXZlIHRoZW0gd2hhdGV2ZXIgaXMgYXZhaWxhYmxlIGJlbG93IHJhdGhlciB0aGFuIHRoZSBtaW5IZWlnaHQuXG4gICAgICAgIHZhciBjb25zdHJhaW5lZEhlaWdodCA9IGlzRml4ZWRQb3NpdGlvbiA/IHZpZXdTcGFjZUJlbG93IC0gbWFyZ2luQm90dG9tIDogc2Nyb2xsU3BhY2VCZWxvdyAtIG1hcmdpbkJvdHRvbTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgICAgIG1heEhlaWdodDogY29uc3RyYWluZWRIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gRm9ya2VkIGJldmlvdXIgd2hlbiB0aGVyZSBpc24ndCBlbm91Z2ggc3BhY2UgYmVsb3dcblxuICAgICAgLy8gQVVUTzogZmxpcCB0aGUgbWVudSwgcmVuZGVyIGFib3ZlXG4gICAgICBpZiAocHJlZmVycmVkUGxhY2VtZW50ID09PSAnYXV0bycgfHwgaXNGaXhlZFBvc2l0aW9uKSB7XG4gICAgICAgIC8vIG1heSBuZWVkIHRvIGJlIGNvbnN0cmFpbmVkIGFmdGVyIGZsaXBwaW5nXG4gICAgICAgIHZhciBfY29uc3RyYWluZWRIZWlnaHQgPSBwcmVmZXJyZWRNYXhIZWlnaHQ7XG4gICAgICAgIHZhciBzcGFjZUFib3ZlID0gaXNGaXhlZFBvc2l0aW9uID8gdmlld1NwYWNlQWJvdmUgOiBzY3JvbGxTcGFjZUFib3ZlO1xuICAgICAgICBpZiAoc3BhY2VBYm92ZSA+PSBtaW5IZWlnaHQpIHtcbiAgICAgICAgICBfY29uc3RyYWluZWRIZWlnaHQgPSBNYXRoLm1pbihzcGFjZUFib3ZlIC0gbWFyZ2luQm90dG9tIC0gY29udHJvbEhlaWdodCwgcHJlZmVycmVkTWF4SGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBfY29uc3RyYWluZWRIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gQk9UVE9NOiBhbGxvdyBicm93c2VyIHRvIGluY3JlYXNlIHNjcm9sbGFibGUgYXJlYSBhbmQgaW1tZWRpYXRlbHkgc2V0IHNjcm9sbFxuICAgICAgaWYgKHByZWZlcnJlZFBsYWNlbWVudCA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgaWYgKHNob3VsZFNjcm9sbCkge1xuICAgICAgICAgIHNjcm9sbFRvKHNjcm9sbFBhcmVudCwgc2Nyb2xsRG93bik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgICAgIG1heEhlaWdodDogcHJlZmVycmVkTWF4SGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICd0b3AnOlxuICAgICAgLy8gMTogdGhlIG1lbnUgd2lsbCBmaXQsIGRvIG5vdGhpbmdcbiAgICAgIGlmICh2aWV3U3BhY2VBYm92ZSA+PSBtZW51SGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyAyOiB0aGUgbWVudSB3aWxsIGZpdCwgaWYgc2Nyb2xsZWRcbiAgICAgIGlmIChzY3JvbGxTcGFjZUFib3ZlID49IG1lbnVIZWlnaHQgJiYgIWlzRml4ZWRQb3NpdGlvbikge1xuICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsKSB7XG4gICAgICAgICAgYW5pbWF0ZWRTY3JvbGxUbyhzY3JvbGxQYXJlbnQsIHNjcm9sbFVwLCBzY3JvbGxEdXJhdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICd0b3AnLFxuICAgICAgICAgIG1heEhlaWdodDogcHJlZmVycmVkTWF4SGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIDM6IHRoZSBtZW51IHdpbGwgZml0LCBpZiBjb25zdHJhaW5lZFxuICAgICAgaWYgKCFpc0ZpeGVkUG9zaXRpb24gJiYgc2Nyb2xsU3BhY2VBYm92ZSA+PSBtaW5IZWlnaHQgfHwgaXNGaXhlZFBvc2l0aW9uICYmIHZpZXdTcGFjZUFib3ZlID49IG1pbkhlaWdodCkge1xuICAgICAgICB2YXIgX2NvbnN0cmFpbmVkSGVpZ2h0MiA9IHByZWZlcnJlZE1heEhlaWdodDtcblxuICAgICAgICAvLyB3ZSB3YW50IHRvIHByb3ZpZGUgYXMgbXVjaCBvZiB0aGUgbWVudSBhcyBwb3NzaWJsZSB0byB0aGUgdXNlcixcbiAgICAgICAgLy8gc28gZ2l2ZSB0aGVtIHdoYXRldmVyIGlzIGF2YWlsYWJsZSBiZWxvdyByYXRoZXIgdGhhbiB0aGUgbWluSGVpZ2h0LlxuICAgICAgICBpZiAoIWlzRml4ZWRQb3NpdGlvbiAmJiBzY3JvbGxTcGFjZUFib3ZlID49IG1pbkhlaWdodCB8fCBpc0ZpeGVkUG9zaXRpb24gJiYgdmlld1NwYWNlQWJvdmUgPj0gbWluSGVpZ2h0KSB7XG4gICAgICAgICAgX2NvbnN0cmFpbmVkSGVpZ2h0MiA9IGlzRml4ZWRQb3NpdGlvbiA/IHZpZXdTcGFjZUFib3ZlIC0gbWFyZ2luVG9wIDogc2Nyb2xsU3BhY2VBYm92ZSAtIG1hcmdpblRvcDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsKSB7XG4gICAgICAgICAgYW5pbWF0ZWRTY3JvbGxUbyhzY3JvbGxQYXJlbnQsIHNjcm9sbFVwLCBzY3JvbGxEdXJhdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICd0b3AnLFxuICAgICAgICAgIG1heEhlaWdodDogX2NvbnN0cmFpbmVkSGVpZ2h0MlxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyA0LiBub3QgZW5vdWdoIHNwYWNlLCB0aGUgYnJvd3NlciBXSUxMIE5PVCBpbmNyZWFzZSBzY3JvbGxhYmxlIGFyZWEgd2hlblxuICAgICAgLy8gYWJzb2x1dGVseSBwb3NpdGlvbmVkIGVsZW1lbnQgcmVuZGVyZWQgYWJvdmUgdGhlIHZpZXdwb3J0IChvbmx5IGJlbG93KS5cbiAgICAgIC8vIEZsaXAgdGhlIG1lbnUsIHJlbmRlciBiZWxvd1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgICAgbWF4SGVpZ2h0OiBwcmVmZXJyZWRNYXhIZWlnaHRcbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcGxhY2VtZW50IHByb3ZpZGVkIFxcXCJcIi5jb25jYXQocHJlZmVycmVkUGxhY2VtZW50LCBcIlxcXCIuXCIpKTtcbiAgfVxuICByZXR1cm4gZGVmYXVsdFN0YXRlO1xufVxuXG4vLyBNZW51IENvbXBvbmVudFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIGFsaWduVG9Db250cm9sKHBsYWNlbWVudCkge1xuICB2YXIgcGxhY2VtZW50VG9DU1NQcm9wID0ge1xuICAgIGJvdHRvbTogJ3RvcCcsXG4gICAgdG9wOiAnYm90dG9tJ1xuICB9O1xuICByZXR1cm4gcGxhY2VtZW50ID8gcGxhY2VtZW50VG9DU1NQcm9wW3BsYWNlbWVudF0gOiAnYm90dG9tJztcbn1cbnZhciBjb2VyY2VQbGFjZW1lbnQgPSBmdW5jdGlvbiBjb2VyY2VQbGFjZW1lbnQocCkge1xuICByZXR1cm4gcCA9PT0gJ2F1dG8nID8gJ2JvdHRvbScgOiBwO1xufTtcbnZhciBtZW51Q1NTID0gZnVuY3Rpb24gbWVudUNTUyhfcmVmMiwgdW5zdHlsZWQpIHtcbiAgdmFyIF9vYmplY3RTcHJlYWQyO1xuICB2YXIgcGxhY2VtZW50ID0gX3JlZjIucGxhY2VtZW50LFxuICAgIF9yZWYyJHRoZW1lID0gX3JlZjIudGhlbWUsXG4gICAgYm9yZGVyUmFkaXVzID0gX3JlZjIkdGhlbWUuYm9yZGVyUmFkaXVzLFxuICAgIHNwYWNpbmcgPSBfcmVmMiR0aGVtZS5zcGFjaW5nLFxuICAgIGNvbG9ycyA9IF9yZWYyJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoKF9vYmplY3RTcHJlYWQyID0ge1xuICAgIGxhYmVsOiAnbWVudSdcbiAgfSwgX2RlZmluZVByb3BlcnR5KF9vYmplY3RTcHJlYWQyLCBhbGlnblRvQ29udHJvbChwbGFjZW1lbnQpLCAnMTAwJScpLCBfZGVmaW5lUHJvcGVydHkoX29iamVjdFNwcmVhZDIsIFwicG9zaXRpb25cIiwgJ2Fic29sdXRlJyksIF9kZWZpbmVQcm9wZXJ0eShfb2JqZWN0U3ByZWFkMiwgXCJ3aWR0aFwiLCAnMTAwJScpLCBfZGVmaW5lUHJvcGVydHkoX29iamVjdFNwcmVhZDIsIFwiekluZGV4XCIsIDEpLCBfb2JqZWN0U3ByZWFkMiksIHVuc3R5bGVkID8ge30gOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBjb2xvcnMubmV1dHJhbDAsXG4gICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMsXG4gICAgYm94U2hhZG93OiAnMCAwIDAgMXB4IGhzbGEoMCwgMCUsIDAlLCAwLjEpLCAwIDRweCAxMXB4IGhzbGEoMCwgMCUsIDAlLCAwLjEpJyxcbiAgICBtYXJnaW5Cb3R0b206IHNwYWNpbmcubWVudUd1dHRlcixcbiAgICBtYXJnaW5Ub3A6IHNwYWNpbmcubWVudUd1dHRlclxuICB9KTtcbn07XG52YXIgUG9ydGFsUGxhY2VtZW50Q29udGV4dCA9IC8qI19fUFVSRV9fKi9jcmVhdGVDb250ZXh0KG51bGwpO1xuXG4vLyBOT1RFOiBpbnRlcm5hbCBvbmx5XG52YXIgTWVudVBsYWNlciA9IGZ1bmN0aW9uIE1lbnVQbGFjZXIocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgbWluTWVudUhlaWdodCA9IHByb3BzLm1pbk1lbnVIZWlnaHQsXG4gICAgbWF4TWVudUhlaWdodCA9IHByb3BzLm1heE1lbnVIZWlnaHQsXG4gICAgbWVudVBsYWNlbWVudCA9IHByb3BzLm1lbnVQbGFjZW1lbnQsXG4gICAgbWVudVBvc2l0aW9uID0gcHJvcHMubWVudVBvc2l0aW9uLFxuICAgIG1lbnVTaG91bGRTY3JvbGxJbnRvVmlldyA9IHByb3BzLm1lbnVTaG91bGRTY3JvbGxJbnRvVmlldyxcbiAgICB0aGVtZSA9IHByb3BzLnRoZW1lO1xuICB2YXIgX3JlZjMgPSB1c2VDb250ZXh0KFBvcnRhbFBsYWNlbWVudENvbnRleHQpIHx8IHt9LFxuICAgIHNldFBvcnRhbFBsYWNlbWVudCA9IF9yZWYzLnNldFBvcnRhbFBsYWNlbWVudDtcbiAgdmFyIHJlZiA9IHVzZVJlZihudWxsKTtcbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKG1heE1lbnVIZWlnaHQpLFxuICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgIG1heEhlaWdodCA9IF91c2VTdGF0ZTJbMF0sXG4gICAgc2V0TWF4SGVpZ2h0ID0gX3VzZVN0YXRlMlsxXTtcbiAgdmFyIF91c2VTdGF0ZTMgPSB1c2VTdGF0ZShudWxsKSxcbiAgICBfdXNlU3RhdGU0ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlMywgMiksXG4gICAgcGxhY2VtZW50ID0gX3VzZVN0YXRlNFswXSxcbiAgICBzZXRQbGFjZW1lbnQgPSBfdXNlU3RhdGU0WzFdO1xuICB2YXIgY29udHJvbEhlaWdodCA9IHRoZW1lLnNwYWNpbmcuY29udHJvbEhlaWdodDtcbiAgdXNlTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbWVudUVsID0gcmVmLmN1cnJlbnQ7XG4gICAgaWYgKCFtZW51RWwpIHJldHVybjtcblxuICAgIC8vIERPIE5PVCBzY3JvbGwgaWYgcG9zaXRpb24gaXMgZml4ZWRcbiAgICB2YXIgaXNGaXhlZFBvc2l0aW9uID0gbWVudVBvc2l0aW9uID09PSAnZml4ZWQnO1xuICAgIHZhciBzaG91bGRTY3JvbGwgPSBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXcgJiYgIWlzRml4ZWRQb3NpdGlvbjtcbiAgICB2YXIgc3RhdGUgPSBnZXRNZW51UGxhY2VtZW50KHtcbiAgICAgIG1heEhlaWdodDogbWF4TWVudUhlaWdodCxcbiAgICAgIG1lbnVFbDogbWVudUVsLFxuICAgICAgbWluSGVpZ2h0OiBtaW5NZW51SGVpZ2h0LFxuICAgICAgcGxhY2VtZW50OiBtZW51UGxhY2VtZW50LFxuICAgICAgc2hvdWxkU2Nyb2xsOiBzaG91bGRTY3JvbGwsXG4gICAgICBpc0ZpeGVkUG9zaXRpb246IGlzRml4ZWRQb3NpdGlvbixcbiAgICAgIGNvbnRyb2xIZWlnaHQ6IGNvbnRyb2xIZWlnaHRcbiAgICB9KTtcbiAgICBzZXRNYXhIZWlnaHQoc3RhdGUubWF4SGVpZ2h0KTtcbiAgICBzZXRQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgICBzZXRQb3J0YWxQbGFjZW1lbnQgPT09IG51bGwgfHwgc2V0UG9ydGFsUGxhY2VtZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZXRQb3J0YWxQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgfSwgW21heE1lbnVIZWlnaHQsIG1lbnVQbGFjZW1lbnQsIG1lbnVQb3NpdGlvbiwgbWVudVNob3VsZFNjcm9sbEludG9WaWV3LCBtaW5NZW51SGVpZ2h0LCBzZXRQb3J0YWxQbGFjZW1lbnQsIGNvbnRyb2xIZWlnaHRdKTtcbiAgcmV0dXJuIGNoaWxkcmVuKHtcbiAgICByZWY6IHJlZixcbiAgICBwbGFjZXJQcm9wczogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBwcm9wcyksIHt9LCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCB8fCBjb2VyY2VQbGFjZW1lbnQobWVudVBsYWNlbWVudCksXG4gICAgICBtYXhIZWlnaHQ6IG1heEhlaWdodFxuICAgIH0pXG4gIH0pO1xufTtcbnZhciBNZW51ID0gZnVuY3Rpb24gTWVudShwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbWVudScsIHtcbiAgICBtZW51OiB0cnVlXG4gIH0pLCB7XG4gICAgcmVmOiBpbm5lclJlZlxuICB9LCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcbnZhciBNZW51JDEgPSBNZW51O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1lbnUgTGlzdFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBtZW51TGlzdENTUyA9IGZ1bmN0aW9uIG1lbnVMaXN0Q1NTKF9yZWY0LCB1bnN0eWxlZCkge1xuICB2YXIgbWF4SGVpZ2h0ID0gX3JlZjQubWF4SGVpZ2h0LFxuICAgIGJhc2VVbml0ID0gX3JlZjQudGhlbWUuc3BhY2luZy5iYXNlVW5pdDtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIG1heEhlaWdodDogbWF4SGVpZ2h0LFxuICAgIG92ZXJmbG93WTogJ2F1dG8nLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIC8vIHJlcXVpcmVkIGZvciBvZmZzZXRbSGVpZ2h0LCBUb3BdID4ga2V5Ym9hcmQgc2Nyb2xsXG4gICAgV2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6ICd0b3VjaCdcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBwYWRkaW5nQm90dG9tOiBiYXNlVW5pdCxcbiAgICBwYWRkaW5nVG9wOiBiYXNlVW5pdFxuICB9KTtcbn07XG52YXIgTWVudUxpc3QgPSBmdW5jdGlvbiBNZW51TGlzdChwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlzTXVsdGkgPSBwcm9wcy5pc011bHRpO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbWVudUxpc3QnLCB7XG4gICAgJ21lbnUtbGlzdCc6IHRydWUsXG4gICAgJ21lbnUtbGlzdC0taXMtbXVsdGknOiBpc011bHRpXG4gIH0pLCB7XG4gICAgcmVmOiBpbm5lclJlZlxuICB9LCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZW51IE5vdGljZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgbm90aWNlQ1NTID0gZnVuY3Rpb24gbm90aWNlQ1NTKF9yZWY1LCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZjUkdGhlbWUgPSBfcmVmNS50aGVtZSxcbiAgICBiYXNlVW5pdCA9IF9yZWY1JHRoZW1lLnNwYWNpbmcuYmFzZVVuaXQsXG4gICAgY29sb3JzID0gX3JlZjUkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBjb2xvcnMubmV1dHJhbDQwLFxuICAgIHBhZGRpbmc6IFwiXCIuY29uY2F0KGJhc2VVbml0ICogMiwgXCJweCBcIikuY29uY2F0KGJhc2VVbml0ICogMywgXCJweFwiKVxuICB9KTtcbn07XG52YXIgbm9PcHRpb25zTWVzc2FnZUNTUyA9IG5vdGljZUNTUztcbnZhciBsb2FkaW5nTWVzc2FnZUNTUyA9IG5vdGljZUNTUztcbnZhciBOb09wdGlvbnNNZXNzYWdlID0gZnVuY3Rpb24gTm9PcHRpb25zTWVzc2FnZShfcmVmNikge1xuICB2YXIgX3JlZjYkY2hpbGRyZW4gPSBfcmVmNi5jaGlsZHJlbixcbiAgICBjaGlsZHJlbiA9IF9yZWY2JGNoaWxkcmVuID09PSB2b2lkIDAgPyAnTm8gb3B0aW9ucycgOiBfcmVmNiRjaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gX3JlZjYuaW5uZXJQcm9wcyxcbiAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjYsIF9leGNsdWRlZCQzKTtcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RQcm9wcyksIHt9LCB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHM6IGlubmVyUHJvcHNcbiAgfSksICdub09wdGlvbnNNZXNzYWdlJywge1xuICAgICdtZW51LW5vdGljZSc6IHRydWUsXG4gICAgJ21lbnUtbm90aWNlLS1uby1vcHRpb25zJzogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG52YXIgTG9hZGluZ01lc3NhZ2UgPSBmdW5jdGlvbiBMb2FkaW5nTWVzc2FnZShfcmVmNykge1xuICB2YXIgX3JlZjckY2hpbGRyZW4gPSBfcmVmNy5jaGlsZHJlbixcbiAgICBjaGlsZHJlbiA9IF9yZWY3JGNoaWxkcmVuID09PSB2b2lkIDAgPyAnTG9hZGluZy4uLicgOiBfcmVmNyRjaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gX3JlZjcuaW5uZXJQcm9wcyxcbiAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjcsIF9leGNsdWRlZDIkMSk7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN0UHJvcHMpLCB7fSwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICBpbm5lclByb3BzOiBpbm5lclByb3BzXG4gIH0pLCAnbG9hZGluZ01lc3NhZ2UnLCB7XG4gICAgJ21lbnUtbm90aWNlJzogdHJ1ZSxcbiAgICAnbWVudS1ub3RpY2UtLWxvYWRpbmcnOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZW51IFBvcnRhbFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBtZW51UG9ydGFsQ1NTID0gZnVuY3Rpb24gbWVudVBvcnRhbENTUyhfcmVmOCkge1xuICB2YXIgcmVjdCA9IF9yZWY4LnJlY3QsXG4gICAgb2Zmc2V0ID0gX3JlZjgub2Zmc2V0LFxuICAgIHBvc2l0aW9uID0gX3JlZjgucG9zaXRpb247XG4gIHJldHVybiB7XG4gICAgbGVmdDogcmVjdC5sZWZ0LFxuICAgIHBvc2l0aW9uOiBwb3NpdGlvbixcbiAgICB0b3A6IG9mZnNldCxcbiAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICB6SW5kZXg6IDFcbiAgfTtcbn07XG52YXIgTWVudVBvcnRhbCA9IGZ1bmN0aW9uIE1lbnVQb3J0YWwocHJvcHMpIHtcbiAgdmFyIGFwcGVuZFRvID0gcHJvcHMuYXBwZW5kVG8sXG4gICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBjb250cm9sRWxlbWVudCA9IHByb3BzLmNvbnRyb2xFbGVtZW50LFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIG1lbnVQbGFjZW1lbnQgPSBwcm9wcy5tZW51UGxhY2VtZW50LFxuICAgIG1lbnVQb3NpdGlvbiA9IHByb3BzLm1lbnVQb3NpdGlvbjtcbiAgdmFyIG1lbnVQb3J0YWxSZWYgPSB1c2VSZWYobnVsbCk7XG4gIHZhciBjbGVhbnVwUmVmID0gdXNlUmVmKG51bGwpO1xuICB2YXIgX3VzZVN0YXRlNSA9IHVzZVN0YXRlKGNvZXJjZVBsYWNlbWVudChtZW51UGxhY2VtZW50KSksXG4gICAgX3VzZVN0YXRlNiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTUsIDIpLFxuICAgIHBsYWNlbWVudCA9IF91c2VTdGF0ZTZbMF0sXG4gICAgc2V0UG9ydGFsUGxhY2VtZW50ID0gX3VzZVN0YXRlNlsxXTtcbiAgdmFyIHBvcnRhbFBsYWNlbWVudENvbnRleHQgPSB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2V0UG9ydGFsUGxhY2VtZW50OiBzZXRQb3J0YWxQbGFjZW1lbnRcbiAgICB9O1xuICB9LCBbXSk7XG4gIHZhciBfdXNlU3RhdGU3ID0gdXNlU3RhdGUobnVsbCksXG4gICAgX3VzZVN0YXRlOCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTcsIDIpLFxuICAgIGNvbXB1dGVkUG9zaXRpb24gPSBfdXNlU3RhdGU4WzBdLFxuICAgIHNldENvbXB1dGVkUG9zaXRpb24gPSBfdXNlU3RhdGU4WzFdO1xuICB2YXIgdXBkYXRlQ29tcHV0ZWRQb3NpdGlvbiA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWNvbnRyb2xFbGVtZW50KSByZXR1cm47XG4gICAgdmFyIHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudE9iaihjb250cm9sRWxlbWVudCk7XG4gICAgdmFyIHNjcm9sbERpc3RhbmNlID0gbWVudVBvc2l0aW9uID09PSAnZml4ZWQnID8gMCA6IHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgICB2YXIgb2Zmc2V0ID0gcmVjdFtwbGFjZW1lbnRdICsgc2Nyb2xsRGlzdGFuY2U7XG4gICAgaWYgKG9mZnNldCAhPT0gKGNvbXB1dGVkUG9zaXRpb24gPT09IG51bGwgfHwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29tcHV0ZWRQb3NpdGlvbi5vZmZzZXQpIHx8IHJlY3QubGVmdCAhPT0gKGNvbXB1dGVkUG9zaXRpb24gPT09IG51bGwgfHwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29tcHV0ZWRQb3NpdGlvbi5yZWN0LmxlZnQpIHx8IHJlY3Qud2lkdGggIT09IChjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ucmVjdC53aWR0aCkpIHtcbiAgICAgIHNldENvbXB1dGVkUG9zaXRpb24oe1xuICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgcmVjdDogcmVjdFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbY29udHJvbEVsZW1lbnQsIG1lbnVQb3NpdGlvbiwgcGxhY2VtZW50LCBjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ub2Zmc2V0LCBjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ucmVjdC5sZWZ0LCBjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ucmVjdC53aWR0aF0pO1xuICB1c2VMYXlvdXRFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHVwZGF0ZUNvbXB1dGVkUG9zaXRpb24oKTtcbiAgfSwgW3VwZGF0ZUNvbXB1dGVkUG9zaXRpb25dKTtcbiAgdmFyIHJ1bkF1dG9VcGRhdGUgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVvZiBjbGVhbnVwUmVmLmN1cnJlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNsZWFudXBSZWYuY3VycmVudCgpO1xuICAgICAgY2xlYW51cFJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKGNvbnRyb2xFbGVtZW50ICYmIG1lbnVQb3J0YWxSZWYuY3VycmVudCkge1xuICAgICAgY2xlYW51cFJlZi5jdXJyZW50ID0gYXV0b1VwZGF0ZShjb250cm9sRWxlbWVudCwgbWVudVBvcnRhbFJlZi5jdXJyZW50LCB1cGRhdGVDb21wdXRlZFBvc2l0aW9uLCB7XG4gICAgICAgIGVsZW1lbnRSZXNpemU6ICdSZXNpemVPYnNlcnZlcicgaW4gd2luZG93XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtjb250cm9sRWxlbWVudCwgdXBkYXRlQ29tcHV0ZWRQb3NpdGlvbl0pO1xuICB1c2VMYXlvdXRFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHJ1bkF1dG9VcGRhdGUoKTtcbiAgfSwgW3J1bkF1dG9VcGRhdGVdKTtcbiAgdmFyIHNldE1lbnVQb3J0YWxFbGVtZW50ID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKG1lbnVQb3J0YWxFbGVtZW50KSB7XG4gICAgbWVudVBvcnRhbFJlZi5jdXJyZW50ID0gbWVudVBvcnRhbEVsZW1lbnQ7XG4gICAgcnVuQXV0b1VwZGF0ZSgpO1xuICB9LCBbcnVuQXV0b1VwZGF0ZV0pO1xuXG4gIC8vIGJhaWwgZWFybHkgaWYgcmVxdWlyZWQgZWxlbWVudHMgYXJlbid0IHByZXNlbnRcbiAgaWYgKCFhcHBlbmRUbyAmJiBtZW51UG9zaXRpb24gIT09ICdmaXhlZCcgfHwgIWNvbXB1dGVkUG9zaXRpb24pIHJldHVybiBudWxsO1xuXG4gIC8vIHNhbWUgd3JhcHBlciBlbGVtZW50IHdoZXRoZXIgZml4ZWQgb3IgcG9ydGFsbGVkXG4gIHZhciBtZW51V3JhcHBlciA9IGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgcmVmOiBzZXRNZW51UG9ydGFsRWxlbWVudFxuICB9LCBnZXRTdHlsZVByb3BzKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJvcHMpLCB7fSwge1xuICAgIG9mZnNldDogY29tcHV0ZWRQb3NpdGlvbi5vZmZzZXQsXG4gICAgcG9zaXRpb246IG1lbnVQb3NpdGlvbixcbiAgICByZWN0OiBjb21wdXRlZFBvc2l0aW9uLnJlY3RcbiAgfSksICdtZW51UG9ydGFsJywge1xuICAgICdtZW51LXBvcnRhbCc6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG4gIHJldHVybiBqc3goUG9ydGFsUGxhY2VtZW50Q29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBwb3J0YWxQbGFjZW1lbnRDb250ZXh0XG4gIH0sIGFwcGVuZFRvID8gLyojX19QVVJFX18qL2NyZWF0ZVBvcnRhbChtZW51V3JhcHBlciwgYXBwZW5kVG8pIDogbWVudVdyYXBwZXIpO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSb290IENvbnRhaW5lclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBjb250YWluZXJDU1MgPSBmdW5jdGlvbiBjb250YWluZXJDU1MoX3JlZikge1xuICB2YXIgaXNEaXNhYmxlZCA9IF9yZWYuaXNEaXNhYmxlZCxcbiAgICBpc1J0bCA9IF9yZWYuaXNSdGw7XG4gIHJldHVybiB7XG4gICAgbGFiZWw6ICdjb250YWluZXInLFxuICAgIGRpcmVjdGlvbjogaXNSdGwgPyAncnRsJyA6IHVuZGVmaW5lZCxcbiAgICBwb2ludGVyRXZlbnRzOiBpc0Rpc2FibGVkID8gJ25vbmUnIDogdW5kZWZpbmVkLFxuICAgIC8vIGNhbmNlbCBtb3VzZSBldmVudHMgd2hlbiBkaXNhYmxlZFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnXG4gIH07XG59O1xudmFyIFNlbGVjdENvbnRhaW5lciA9IGZ1bmN0aW9uIFNlbGVjdENvbnRhaW5lcihwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZCxcbiAgICBpc1J0bCA9IHByb3BzLmlzUnRsO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnY29udGFpbmVyJywge1xuICAgICctLWlzLWRpc2FibGVkJzogaXNEaXNhYmxlZCxcbiAgICAnLS1pcy1ydGwnOiBpc1J0bFxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVmFsdWUgQ29udGFpbmVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIHZhbHVlQ29udGFpbmVyQ1NTID0gZnVuY3Rpb24gdmFsdWVDb250YWluZXJDU1MoX3JlZjIsIHVuc3R5bGVkKSB7XG4gIHZhciBzcGFjaW5nID0gX3JlZjIudGhlbWUuc3BhY2luZyxcbiAgICBpc011bHRpID0gX3JlZjIuaXNNdWx0aSxcbiAgICBoYXNWYWx1ZSA9IF9yZWYyLmhhc1ZhbHVlLFxuICAgIGNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZSA9IF9yZWYyLnNlbGVjdFByb3BzLmNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZTtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6IGlzTXVsdGkgJiYgaGFzVmFsdWUgJiYgY29udHJvbFNob3VsZFJlbmRlclZhbHVlID8gJ2ZsZXgnIDogJ2dyaWQnLFxuICAgIGZsZXg6IDEsXG4gICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICBXZWJraXRPdmVyZmxvd1Njcm9sbGluZzogJ3RvdWNoJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbidcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBwYWRkaW5nOiBcIlwiLmNvbmNhdChzcGFjaW5nLmJhc2VVbml0IC8gMiwgXCJweCBcIikuY29uY2F0KHNwYWNpbmcuYmFzZVVuaXQgKiAyLCBcInB4XCIpXG4gIH0pO1xufTtcbnZhciBWYWx1ZUNvbnRhaW5lciA9IGZ1bmN0aW9uIFZhbHVlQ29udGFpbmVyKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIGlzTXVsdGkgPSBwcm9wcy5pc011bHRpLFxuICAgIGhhc1ZhbHVlID0gcHJvcHMuaGFzVmFsdWU7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICd2YWx1ZUNvbnRhaW5lcicsIHtcbiAgICAndmFsdWUtY29udGFpbmVyJzogdHJ1ZSxcbiAgICAndmFsdWUtY29udGFpbmVyLS1pcy1tdWx0aSc6IGlzTXVsdGksXG4gICAgJ3ZhbHVlLWNvbnRhaW5lci0taGFzLXZhbHVlJzogaGFzVmFsdWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEluZGljYXRvciBDb250YWluZXJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgaW5kaWNhdG9yc0NvbnRhaW5lckNTUyA9IGZ1bmN0aW9uIGluZGljYXRvcnNDb250YWluZXJDU1MoKSB7XG4gIHJldHVybiB7XG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgYWxpZ25TZWxmOiAnc3RyZXRjaCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhTaHJpbms6IDBcbiAgfTtcbn07XG52YXIgSW5kaWNhdG9yc0NvbnRhaW5lciA9IGZ1bmN0aW9uIEluZGljYXRvcnNDb250YWluZXIocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdpbmRpY2F0b3JzQ29udGFpbmVyJywge1xuICAgIGluZGljYXRvcnM6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xuXG52YXIgX3RlbXBsYXRlT2JqZWN0O1xudmFyIF9leGNsdWRlZCQyID0gW1wic2l6ZVwiXSxcbiAgX2V4Y2x1ZGVkMiA9IFtcImlubmVyUHJvcHNcIiwgXCJpc1J0bFwiLCBcInNpemVcIl07XG5mdW5jdGlvbiBfRU1PVElPTl9TVFJJTkdJRklFRF9DU1NfRVJST1JfXygpIHsgcmV0dXJuIFwiWW91IGhhdmUgdHJpZWQgdG8gc3RyaW5naWZ5IG9iamVjdCByZXR1cm5lZCBmcm9tIGBjc3NgIGZ1bmN0aW9uLiBJdCBpc24ndCBzdXBwb3NlZCB0byBiZSB1c2VkIGRpcmVjdGx5IChlLmcuIGFzIHZhbHVlIG9mIHRoZSBgY2xhc3NOYW1lYCBwcm9wKSwgYnV0IHJhdGhlciBoYW5kZWQgdG8gZW1vdGlvbiBzbyBpdCBjYW4gaGFuZGxlIGl0IChlLmcuIGFzIHZhbHVlIG9mIGBjc3NgIHByb3ApLlwiOyB9XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBJY29uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG52YXIgX3JlZjIgPSBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyB7XG4gIG5hbWU6IFwiOG1ta2NnXCIsXG4gIHN0eWxlczogXCJkaXNwbGF5OmlubGluZS1ibG9jaztmaWxsOmN1cnJlbnRDb2xvcjtsaW5lLWhlaWdodDoxO3N0cm9rZTpjdXJyZW50Q29sb3I7c3Ryb2tlLXdpZHRoOjBcIlxufSA6IHtcbiAgbmFtZTogXCJ0ajViZGUtU3ZnXCIsXG4gIHN0eWxlczogXCJkaXNwbGF5OmlubGluZS1ibG9jaztmaWxsOmN1cnJlbnRDb2xvcjtsaW5lLWhlaWdodDoxO3N0cm9rZTpjdXJyZW50Q29sb3I7c3Ryb2tlLXdpZHRoOjA7bGFiZWw6U3ZnO1wiLFxuICBtYXA6IFwiLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW1sdVpHbGpZWFJ2Y25NdWRITjRJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRWGxDU1NJc0ltWnBiR1VpT2lKcGJtUnBZMkYwYjNKekxuUnplQ0lzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtpQkFhbk40SUdwemVDQXFMMXh1YVcxd2IzSjBJSHNnU2xOWUxDQlNaV0ZqZEU1dlpHVWdmU0JtY205dElDZHlaV0ZqZENjN1hHNXBiWEJ2Y25RZ2V5QnFjM2dzSUd0bGVXWnlZVzFsY3lCOUlHWnliMjBnSjBCbGJXOTBhVzl1TDNKbFlXTjBKenRjYmx4dWFXMXdiM0owSUh0Y2JpQWdRMjl0Ylc5dVVISnZjSE5CYm1SRGJHRnpjMDVoYldVc1hHNGdJRU5UVTA5aWFtVmpkRmRwZEdoTVlXSmxiQ3hjYmlBZ1IzSnZkWEJDWVhObExGeHVmU0JtY205dElDY3VMaTkwZVhCbGN5YzdYRzVwYlhCdmNuUWdleUJuWlhSVGRIbHNaVkJ5YjNCeklIMGdabkp2YlNBbkxpNHZkWFJwYkhNbk8xeHVYRzR2THlBOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMWNiaTh2SUVSeWIzQmtiM2R1SUNZZ1EyeGxZWElnU1dOdmJuTmNiaTh2SUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBWeHVYRzVqYjI1emRDQlRkbWNnUFNBb2UxeHVJQ0J6YVhwbExGeHVJQ0F1TGk1d2NtOXdjMXh1ZlRvZ1NsTllMa2x1ZEhKcGJuTnBZMFZzWlcxbGJuUnpXeWR6ZG1jblhTQW1JSHNnYzJsNlpUb2diblZ0WW1WeUlIMHBJRDArSUNoY2JpQWdQSE4yWjF4dUlDQWdJR2hsYVdkb2REMTdjMmw2WlgxY2JpQWdJQ0IzYVdSMGFEMTdjMmw2WlgxY2JpQWdJQ0IyYVdWM1FtOTRQVndpTUNBd0lESXdJREl3WENKY2JpQWdJQ0JoY21saExXaHBaR1JsYmoxY0luUnlkV1ZjSWx4dUlDQWdJR1p2WTNWellXSnNaVDFjSW1aaGJITmxYQ0pjYmlBZ0lDQmpjM005ZTN0Y2JpQWdJQ0FnSUdScGMzQnNZWGs2SUNkcGJteHBibVV0WW14dlkyc25MRnh1SUNBZ0lDQWdabWxzYkRvZ0oyTjFjbkpsYm5SRGIyeHZjaWNzWEc0Z0lDQWdJQ0JzYVc1bFNHVnBaMmgwT2lBeExGeHVJQ0FnSUNBZ2MzUnliMnRsT2lBblkzVnljbVZ1ZEVOdmJHOXlKeXhjYmlBZ0lDQWdJSE4wY205clpWZHBaSFJvT2lBd0xGeHVJQ0FnSUgxOVhHNGdJQ0FnZXk0dUxuQnliM0J6ZlZ4dUlDQXZQbHh1S1R0Y2JseHVaWGh3YjNKMElIUjVjR1VnUTNKdmMzTkpZMjl1VUhKdmNITWdQU0JLVTFndVNXNTBjbWx1YzJsalJXeGxiV1Z1ZEhOYkozTjJaeWRkSUNZZ2V5QnphWHBsUHpvZ2JuVnRZbVZ5SUgwN1hHNWxlSEJ2Y25RZ1kyOXVjM1FnUTNKdmMzTkpZMjl1SUQwZ0tIQnliM0J6T2lCRGNtOXpjMGxqYjI1UWNtOXdjeWtnUFQ0Z0tGeHVJQ0E4VTNabklITnBlbVU5ZXpJd2ZTQjdMaTR1Y0hKdmNITjlQbHh1SUNBZ0lEeHdZWFJvSUdROVhDSk5NVFF1TXpRNElERTBMamcwT1dNdE1DNDBOamtnTUM0ME5qa3RNUzR5TWprZ01DNDBOamt0TVM0Mk9UY2dNR3d0TWk0Mk5URXRNeTR3TXpBdE1pNDJOVEVnTXk0d01qbGpMVEF1TkRZNUlEQXVORFk1TFRFdU1qSTVJREF1TkRZNUxURXVOamszSURBdE1DNDBOamt0TUM0ME5qa3RNQzQwTmprdE1TNHlNamtnTUMweExqWTVOMnd5TGpjMU9DMHpMakUxTFRJdU56VTVMVE11TVRVeVl5MHdMalEyT1Mwd0xqUTJPUzB3TGpRMk9TMHhMakl5T0NBd0xURXVOamszY3pFdU1qSTRMVEF1TkRZNUlERXVOamszSURCc01pNDJOVElnTXk0d016RWdNaTQyTlRFdE15NHdNekZqTUM0ME5qa3RNQzQwTmprZ01TNHlNamd0TUM0ME5qa2dNUzQyT1RjZ01ITXdMalEyT1NBeExqSXlPU0F3SURFdU5qazNiQzB5TGpjMU9DQXpMakUxTWlBeUxqYzFPQ0F6TGpFMVl6QXVORFk1SURBdU5EWTVJREF1TkRZNUlERXVNakk1SURBZ01TNDJPVGg2WENJZ0x6NWNiaUFnUEM5VGRtYytYRzRwTzF4dVpYaHdiM0owSUhSNWNHVWdSRzkzYmtOb1pYWnliMjVRY205d2N5QTlJRXBUV0M1SmJuUnlhVzV6YVdORmJHVnRaVzUwYzFzbmMzWm5KMTBnSmlCN0lITnBlbVUvT2lCdWRXMWlaWElnZlR0Y2JtVjRjRzl5ZENCamIyNXpkQ0JFYjNkdVEyaGxkbkp2YmlBOUlDaHdjbTl3Y3pvZ1JHOTNia05vWlhaeWIyNVFjbTl3Y3lrZ1BUNGdLRnh1SUNBOFUzWm5JSE5wZW1VOWV6SXdmU0I3TGk0dWNISnZjSE45UGx4dUlDQWdJRHh3WVhSb0lHUTlYQ0pOTkM0MU1UWWdOeTQxTkRoak1DNDBNell0TUM0ME5EWWdNUzR3TkRNdE1DNDBPREVnTVM0MU56WWdNR3d6TGprd09DQXpMamMwTnlBekxqa3dPQzB6TGpjME4yTXdMalV6TXkwd0xqUTRNU0F4TGpFME1TMHdMalEwTmlBeExqVTNOQ0F3SURBdU5ETTJJREF1TkRRMUlEQXVOREE0SURFdU1UazNJREFnTVM0Mk1UVXRNQzQwTURZZ01DNDBNVGd0TkM0Mk9UVWdOQzQxTURJdE5DNDJPVFVnTkM0MU1ESXRNQzR5TVRjZ01DNHlNak10TUM0MU1ESWdNQzR6TXpVdE1DNDNPRGNnTUM0ek16VnpMVEF1TlRjdE1DNHhNVEl0TUM0M09Ea3RNQzR6TXpWak1DQXdMVFF1TWpnM0xUUXVNRGcwTFRRdU5qazFMVFF1TlRBeWN5MHdMalF6TmkweExqRTNJREF0TVM0Mk1UVjZYQ0lnTHo1Y2JpQWdQQzlUZG1jK1hHNHBPMXh1WEc0dkx5QTlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmk4dklFUnliM0JrYjNkdUlDWWdRMnhsWVhJZ1FuVjBkRzl1YzF4dUx5OGdQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1JISnZjR1J2ZDI1SmJtUnBZMkYwYjNKUWNtOXdjenhjYmlBZ1QzQjBhVzl1SUQwZ2RXNXJibTkzYml4Y2JpQWdTWE5OZFd4MGFTQmxlSFJsYm1SeklHSnZiMnhsWVc0Z1BTQmliMjlzWldGdUxGeHVJQ0JIY205MWNDQmxlSFJsYm1SeklFZHliM1Z3UW1GelpUeFBjSFJwYjI0K0lEMGdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNWNiajRnWlhoMFpXNWtjeUJEYjIxdGIyNVFjbTl3YzBGdVpFTnNZWE56VG1GdFpUeFBjSFJwYjI0c0lFbHpUWFZzZEdrc0lFZHliM1Z3UGlCN1hHNGdJQzhxS2lCVWFHVWdZMmhwYkdSeVpXNGdkRzhnWW1VZ2NtVnVaR1Z5WldRZ2FXNXphV1JsSUhSb1pTQnBibVJwWTJGMGIzSXVJQ292WEc0Z0lHTm9hV3hrY21WdVB6b2dVbVZoWTNST2IyUmxPMXh1SUNBdktpb2dVSEp2Y0hNZ2RHaGhkQ0IzYVd4c0lHSmxJSEJoYzNObFpDQnZiaUIwYnlCMGFHVWdZMmhwYkdSeVpXNHVJQ292WEc0Z0lHbHVibVZ5VUhKdmNITTZJRXBUV0M1SmJuUnlhVzV6YVdORmJHVnRaVzUwYzFzblpHbDJKMTA3WEc0Z0lDOHFLaUJVYUdVZ1ptOWpkWE5sWkNCemRHRjBaU0J2WmlCMGFHVWdjMlZzWldOMExpQXFMMXh1SUNCcGMwWnZZM1Z6WldRNklHSnZiMnhsWVc0N1hHNGdJR2x6UkdsellXSnNaV1E2SUdKdmIyeGxZVzQ3WEc1OVhHNWNibU52Ym5OMElHSmhjMlZEVTFNZ1BTQThYRzRnSUU5d2RHbHZiaXhjYmlBZ1NYTk5kV3gwYVNCbGVIUmxibVJ6SUdKdmIyeGxZVzRzWEc0Z0lFZHliM1Z3SUdWNGRHVnVaSE1nUjNKdmRYQkNZWE5sUEU5d2RHbHZiajVjYmo0b1hHNGdJSHRjYmlBZ0lDQnBjMFp2WTNWelpXUXNYRzRnSUNBZ2RHaGxiV1U2SUh0Y2JpQWdJQ0FnSUhOd1lXTnBibWM2SUhzZ1ltRnpaVlZ1YVhRZ2ZTeGNiaUFnSUNBZ0lHTnZiRzl5Y3l4Y2JpQWdJQ0I5TEZ4dUlDQjlPbHh1SUNBZ0lId2dSSEp2Y0dSdmQyNUpibVJwWTJGMGIzSlFjbTl3Y3p4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQbHh1SUNBZ0lId2dRMnhsWVhKSmJtUnBZMkYwYjNKUWNtOXdjenhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BpeGNiaUFnZFc1emRIbHNaV1E2SUdKdmIyeGxZVzVjYmlrNklFTlRVMDlpYW1WamRGZHBkR2hNWVdKbGJDQTlQaUFvZTF4dUlDQnNZV0psYkRvZ0oybHVaR2xqWVhSdmNrTnZiblJoYVc1bGNpY3NYRzRnSUdScGMzQnNZWGs2SUNkbWJHVjRKeXhjYmlBZ2RISmhibk5wZEdsdmJqb2dKMk52Ykc5eUlERTFNRzF6Snl4Y2JpQWdMaTR1S0hWdWMzUjViR1ZrWEc0Z0lDQWdQeUI3ZlZ4dUlDQWdJRG9nZTF4dUlDQWdJQ0FnSUNCamIyeHZjam9nYVhOR2IyTjFjMlZrSUQ4Z1kyOXNiM0p6TG01bGRYUnlZV3cyTUNBNklHTnZiRzl5Y3k1dVpYVjBjbUZzTWpBc1hHNGdJQ0FnSUNBZ0lIQmhaR1JwYm1jNklHSmhjMlZWYm1sMElDb2dNaXhjYmlBZ0lDQWdJQ0FnSnpwb2IzWmxjaWM2SUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ2FYTkdiMk4xYzJWa0lEOGdZMjlzYjNKekxtNWxkWFJ5WVd3NE1DQTZJR052Ykc5eWN5NXVaWFYwY21Gc05EQXNYRzRnSUNBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0I5S1N4Y2JuMHBPMXh1WEc1bGVIQnZjblFnWTI5dWMzUWdaSEp2Y0dSdmQyNUpibVJwWTJGMGIzSkRVMU1nUFNCaVlYTmxRMU5UTzF4dVpYaHdiM0owSUdOdmJuTjBJRVJ5YjNCa2IzZHVTVzVrYVdOaGRHOXlJRDBnUEZ4dUlDQlBjSFJwYjI0c1hHNGdJRWx6VFhWc2RHa2daWGgwWlc1a2N5QmliMjlzWldGdUxGeHVJQ0JIY205MWNDQmxlSFJsYm1SeklFZHliM1Z3UW1GelpUeFBjSFJwYjI0K1hHNCtLRnh1SUNCd2NtOXdjem9nUkhKdmNHUnZkMjVKYm1ScFkyRjBiM0pRY205d2N6eFBjSFJwYjI0c0lFbHpUWFZzZEdrc0lFZHliM1Z3UGx4dUtTQTlQaUI3WEc0Z0lHTnZibk4wSUhzZ1kyaHBiR1J5Wlc0c0lHbHVibVZ5VUhKdmNITWdmU0E5SUhCeWIzQnpPMXh1SUNCeVpYUjFjbTRnS0Z4dUlDQWdJRHhrYVhaY2JpQWdJQ0FnSUhzdUxpNW5aWFJUZEhsc1pWQnliM0J6S0hCeWIzQnpMQ0FuWkhKdmNHUnZkMjVKYm1ScFkyRjBiM0luTENCN1hHNGdJQ0FnSUNBZ0lHbHVaR2xqWVhSdmNqb2dkSEoxWlN4Y2JpQWdJQ0FnSUNBZ0oyUnliM0JrYjNkdUxXbHVaR2xqWVhSdmNpYzZJSFJ5ZFdVc1hHNGdJQ0FnSUNCOUtYMWNiaUFnSUNBZ0lIc3VMaTVwYm01bGNsQnliM0J6ZlZ4dUlDQWdJRDVjYmlBZ0lDQWdJSHRqYUdsc1pISmxiaUI4ZkNBOFJHOTNia05vWlhaeWIyNGdMejU5WEc0Z0lDQWdQQzlrYVhZK1hHNGdJQ2s3WEc1OU8xeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRU5zWldGeVNXNWthV05oZEc5eVVISnZjSE04WEc0Z0lFOXdkR2x2YmlBOUlIVnVhMjV2ZDI0c1hHNGdJRWx6VFhWc2RHa2daWGgwWlc1a2N5QmliMjlzWldGdUlEMGdZbTl2YkdWaGJpeGNiaUFnUjNKdmRYQWdaWGgwWlc1a2N5QkhjbTkxY0VKaGMyVThUM0IwYVc5dVBpQTlJRWR5YjNWd1FtRnpaVHhQY0hScGIyNCtYRzQrSUdWNGRHVnVaSE1nUTI5dGJXOXVVSEp2Y0hOQmJtUkRiR0Z6YzA1aGJXVThUM0IwYVc5dUxDQkpjMDExYkhScExDQkhjbTkxY0Q0Z2UxeHVJQ0F2S2lvZ1ZHaGxJR05vYVd4a2NtVnVJSFJ2SUdKbElISmxibVJsY21Wa0lHbHVjMmxrWlNCMGFHVWdhVzVrYVdOaGRHOXlMaUFxTDF4dUlDQmphR2xzWkhKbGJqODZJRkpsWVdOMFRtOWtaVHRjYmlBZ0x5b3FJRkJ5YjNCeklIUm9ZWFFnZDJsc2JDQmlaU0J3WVhOelpXUWdiMjRnZEc4Z2RHaGxJR05vYVd4a2NtVnVMaUFxTDF4dUlDQnBibTVsY2xCeWIzQnpPaUJLVTFndVNXNTBjbWx1YzJsalJXeGxiV1Z1ZEhOYkoyUnBkaWRkTzF4dUlDQXZLaW9nVkdobElHWnZZM1Z6WldRZ2MzUmhkR1VnYjJZZ2RHaGxJSE5sYkdWamRDNGdLaTljYmlBZ2FYTkdiMk4xYzJWa09pQmliMjlzWldGdU8xeHVmVnh1WEc1bGVIQnZjblFnWTI5dWMzUWdZMnhsWVhKSmJtUnBZMkYwYjNKRFUxTWdQU0JpWVhObFExTlRPMXh1Wlhod2IzSjBJR052Ym5OMElFTnNaV0Z5U1c1a2FXTmhkRzl5SUQwZ1BGeHVJQ0JQY0hScGIyNHNYRzRnSUVselRYVnNkR2tnWlhoMFpXNWtjeUJpYjI5c1pXRnVMRnh1SUNCSGNtOTFjQ0JsZUhSbGJtUnpJRWR5YjNWd1FtRnpaVHhQY0hScGIyNCtYRzQrS0Z4dUlDQndjbTl3Y3pvZ1EyeGxZWEpKYm1ScFkyRjBiM0pRY205d2N6eFBjSFJwYjI0c0lFbHpUWFZzZEdrc0lFZHliM1Z3UGx4dUtTQTlQaUI3WEc0Z0lHTnZibk4wSUhzZ1kyaHBiR1J5Wlc0c0lHbHVibVZ5VUhKdmNITWdmU0E5SUhCeWIzQnpPMXh1SUNCeVpYUjFjbTRnS0Z4dUlDQWdJRHhrYVhaY2JpQWdJQ0FnSUhzdUxpNW5aWFJUZEhsc1pWQnliM0J6S0hCeWIzQnpMQ0FuWTJ4bFlYSkpibVJwWTJGMGIzSW5MQ0I3WEc0Z0lDQWdJQ0FnSUdsdVpHbGpZWFJ2Y2pvZ2RISjFaU3hjYmlBZ0lDQWdJQ0FnSjJOc1pXRnlMV2x1WkdsallYUnZjaWM2SUhSeWRXVXNYRzRnSUNBZ0lDQjlLWDFjYmlBZ0lDQWdJSHN1TGk1cGJtNWxjbEJ5YjNCemZWeHVJQ0FnSUQ1Y2JpQWdJQ0FnSUh0amFHbHNaSEpsYmlCOGZDQThRM0p2YzNOSlkyOXVJQzgrZlZ4dUlDQWdJRHd2WkdsMlBseHVJQ0FwTzF4dWZUdGNibHh1THk4Z1BUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlYRzR2THlCVFpYQmhjbUYwYjNKY2JpOHZJRDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFZ4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElFbHVaR2xqWVhSdmNsTmxjR0Z5WVhSdmNsQnliM0J6UEZ4dUlDQlBjSFJwYjI0Z1BTQjFibXR1YjNkdUxGeHVJQ0JKYzAxMWJIUnBJR1Y0ZEdWdVpITWdZbTl2YkdWaGJpQTlJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNGdQU0JIY205MWNFSmhjMlU4VDNCMGFXOXVQbHh1UGlCbGVIUmxibVJ6SUVOdmJXMXZibEJ5YjNCelFXNWtRMnhoYzNOT1lXMWxQRTl3ZEdsdmJpd2dTWE5OZFd4MGFTd2dSM0p2ZFhBK0lIdGNiaUFnYVhORWFYTmhZbXhsWkRvZ1ltOXZiR1ZoYmp0Y2JpQWdhWE5HYjJOMWMyVmtPaUJpYjI5c1pXRnVPMXh1SUNCcGJtNWxjbEJ5YjNCelB6b2dTbE5ZTGtsdWRISnBibk5wWTBWc1pXMWxiblJ6V3lkemNHRnVKMTA3WEc1OVhHNWNibVY0Y0c5eWRDQmpiMjV6ZENCcGJtUnBZMkYwYjNKVFpYQmhjbUYwYjNKRFUxTWdQU0E4WEc0Z0lFOXdkR2x2Yml4Y2JpQWdTWE5OZFd4MGFTQmxlSFJsYm1SeklHSnZiMnhsWVc0c1hHNGdJRWR5YjNWd0lHVjRkR1Z1WkhNZ1IzSnZkWEJDWVhObFBFOXdkR2x2Ymo1Y2JqNG9YRzRnSUh0Y2JpQWdJQ0JwYzBScGMyRmliR1ZrTEZ4dUlDQWdJSFJvWlcxbE9pQjdYRzRnSUNBZ0lDQnpjR0ZqYVc1bk9pQjdJR0poYzJWVmJtbDBJSDBzWEc0Z0lDQWdJQ0JqYjJ4dmNuTXNYRzRnSUNBZ2ZTeGNiaUFnZlRvZ1NXNWthV05oZEc5eVUyVndZWEpoZEc5eVVISnZjSE04VDNCMGFXOXVMQ0JKYzAxMWJIUnBMQ0JIY205MWNENHNYRzRnSUhWdWMzUjViR1ZrT2lCaWIyOXNaV0Z1WEc0cE9pQkRVMU5QWW1wbFkzUlhhWFJvVEdGaVpXd2dQVDRnS0h0Y2JpQWdiR0ZpWld3NklDZHBibVJwWTJGMGIzSlRaWEJoY21GMGIzSW5MRnh1SUNCaGJHbG5ibE5sYkdZNklDZHpkSEpsZEdOb0p5eGNiaUFnZDJsa2RHZzZJREVzWEc0Z0lDNHVMaWgxYm5OMGVXeGxaRnh1SUNBZ0lEOGdlMzFjYmlBZ0lDQTZJSHRjYmlBZ0lDQWdJQ0FnWW1GamEyZHliM1Z1WkVOdmJHOXlPaUJwYzBScGMyRmliR1ZrSUQ4Z1kyOXNiM0p6TG01bGRYUnlZV3d4TUNBNklHTnZiRzl5Y3k1dVpYVjBjbUZzTWpBc1hHNGdJQ0FnSUNBZ0lHMWhjbWRwYmtKdmRIUnZiVG9nWW1GelpWVnVhWFFnS2lBeUxGeHVJQ0FnSUNBZ0lDQnRZWEpuYVc1VWIzQTZJR0poYzJWVmJtbDBJQ29nTWl4Y2JpQWdJQ0FnSUgwcExGeHVmU2s3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0JKYm1ScFkyRjBiM0pUWlhCaGNtRjBiM0lnUFNBOFhHNGdJRTl3ZEdsdmJpeGNiaUFnU1hOTmRXeDBhU0JsZUhSbGJtUnpJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNWNiajRvWEc0Z0lIQnliM0J6T2lCSmJtUnBZMkYwYjNKVFpYQmhjbUYwYjNKUWNtOXdjenhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BseHVLU0E5UGlCN1hHNGdJR052Ym5OMElIc2dhVzV1WlhKUWNtOXdjeUI5SUQwZ2NISnZjSE03WEc0Z0lISmxkSFZ5YmlBb1hHNGdJQ0FnUEhOd1lXNWNiaUFnSUNBZ0lIc3VMaTVwYm01bGNsQnliM0J6ZlZ4dUlDQWdJQ0FnZXk0dUxtZGxkRk4wZVd4bFVISnZjSE1vY0hKdmNITXNJQ2RwYm1ScFkyRjBiM0pUWlhCaGNtRjBiM0luTENCN1hHNGdJQ0FnSUNBZ0lDZHBibVJwWTJGMGIzSXRjMlZ3WVhKaGRHOXlKem9nZEhKMVpTeGNiaUFnSUNBZ0lIMHBmVnh1SUNBZ0lDOCtYRzRnSUNrN1hHNTlPMXh1WEc0dkx5QTlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmk4dklFeHZZV1JwYm1kY2JpOHZJRDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFZ4dVhHNWpiMjV6ZENCc2IyRmthVzVuUkc5MFFXNXBiV0YwYVc5dWN5QTlJR3RsZVdaeVlXMWxjMkJjYmlBZ01DVXNJRGd3SlN3Z01UQXdKU0I3SUc5d1lXTnBkSGs2SURBN0lIMWNiaUFnTkRBbElIc2diM0JoWTJsMGVUb2dNVHNnZlZ4dVlEdGNibHh1Wlhod2IzSjBJR052Ym5OMElHeHZZV1JwYm1kSmJtUnBZMkYwYjNKRFUxTWdQU0E4WEc0Z0lFOXdkR2x2Yml4Y2JpQWdTWE5OZFd4MGFTQmxlSFJsYm1SeklHSnZiMnhsWVc0c1hHNGdJRWR5YjNWd0lHVjRkR1Z1WkhNZ1IzSnZkWEJDWVhObFBFOXdkR2x2Ymo1Y2JqNG9YRzRnSUh0Y2JpQWdJQ0JwYzBadlkzVnpaV1FzWEc0Z0lDQWdjMmw2WlN4Y2JpQWdJQ0IwYUdWdFpUb2dlMXh1SUNBZ0lDQWdZMjlzYjNKekxGeHVJQ0FnSUNBZ2MzQmhZMmx1WnpvZ2V5QmlZWE5sVlc1cGRDQjlMRnh1SUNBZ0lIMHNYRzRnSUgwNklFeHZZV1JwYm1kSmJtUnBZMkYwYjNKUWNtOXdjenhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BpeGNiaUFnZFc1emRIbHNaV1E2SUdKdmIyeGxZVzVjYmlrNklFTlRVMDlpYW1WamRGZHBkR2hNWVdKbGJDQTlQaUFvZTF4dUlDQnNZV0psYkRvZ0oyeHZZV1JwYm1kSmJtUnBZMkYwYjNJbkxGeHVJQ0JrYVhOd2JHRjVPaUFuWm14bGVDY3NYRzRnSUhSeVlXNXphWFJwYjI0NklDZGpiMnh2Y2lBeE5UQnRjeWNzWEc0Z0lHRnNhV2R1VTJWc1pqb2dKMk5sYm5SbGNpY3NYRzRnSUdadmJuUlRhWHBsT2lCemFYcGxMRnh1SUNCc2FXNWxTR1ZwWjJoME9pQXhMRnh1SUNCdFlYSm5hVzVTYVdkb2REb2djMmw2WlN4Y2JpQWdkR1Y0ZEVGc2FXZHVPaUFuWTJWdWRHVnlKeXhjYmlBZ2RtVnlkR2xqWVd4QmJHbG5iam9nSjIxcFpHUnNaU2NzWEc0Z0lDNHVMaWgxYm5OMGVXeGxaRnh1SUNBZ0lEOGdlMzFjYmlBZ0lDQTZJSHRjYmlBZ0lDQWdJQ0FnWTI5c2IzSTZJR2x6Um05amRYTmxaQ0EvSUdOdmJHOXljeTV1WlhWMGNtRnNOakFnT2lCamIyeHZjbk11Ym1WMWRISmhiREl3TEZ4dUlDQWdJQ0FnSUNCd1lXUmthVzVuT2lCaVlYTmxWVzVwZENBcUlESXNYRzRnSUNBZ0lDQjlLU3hjYm4wcE8xeHVYRzVwYm5SbGNtWmhZMlVnVEc5aFpHbHVaMFJ2ZEZCeWIzQnpJSHRjYmlBZ1pHVnNZWGs2SUc1MWJXSmxjanRjYmlBZ2IyWm1jMlYwT2lCaWIyOXNaV0Z1TzF4dWZWeHVZMjl1YzNRZ1RHOWhaR2x1WjBSdmRDQTlJQ2g3SUdSbGJHRjVMQ0J2Wm1aelpYUWdmVG9nVEc5aFpHbHVaMFJ2ZEZCeWIzQnpLU0E5UGlBb1hHNGdJRHh6Y0dGdVhHNGdJQ0FnWTNOelBYdDdYRzRnSUNBZ0lDQmhibWx0WVhScGIyNDZJR0FrZTJ4dllXUnBibWRFYjNSQmJtbHRZWFJwYjI1emZTQXhjeUJsWVhObExXbHVMVzkxZENBa2UyUmxiR0Y1ZlcxeklHbHVabWx1YVhSbE8yQXNYRzRnSUNBZ0lDQmlZV05yWjNKdmRXNWtRMjlzYjNJNklDZGpkWEp5Wlc1MFEyOXNiM0luTEZ4dUlDQWdJQ0FnWW05eVpHVnlVbUZrYVhWek9pQW5NV1Z0Snl4Y2JpQWdJQ0FnSUdScGMzQnNZWGs2SUNkcGJteHBibVV0WW14dlkyc25MRnh1SUNBZ0lDQWdiV0Z5WjJsdVRHVm1kRG9nYjJabWMyVjBJRDhnSnpGbGJTY2dPaUIxYm1SbFptbHVaV1FzWEc0Z0lDQWdJQ0JvWldsbmFIUTZJQ2N4WlcwbkxGeHVJQ0FnSUNBZ2RtVnlkR2xqWVd4QmJHbG5iam9nSjNSdmNDY3NYRzRnSUNBZ0lDQjNhV1IwYURvZ0p6RmxiU2NzWEc0Z0lDQWdmWDFjYmlBZ0x6NWNiaWs3WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1RHOWhaR2x1WjBsdVpHbGpZWFJ2Y2xCeWIzQnpQRnh1SUNCUGNIUnBiMjRnUFNCMWJtdHViM2R1TEZ4dUlDQkpjMDExYkhScElHVjRkR1Z1WkhNZ1ltOXZiR1ZoYmlBOUlHSnZiMnhsWVc0c1hHNGdJRWR5YjNWd0lHVjRkR1Z1WkhNZ1IzSnZkWEJDWVhObFBFOXdkR2x2Ymo0Z1BTQkhjbTkxY0VKaGMyVThUM0IwYVc5dVBseHVQaUJsZUhSbGJtUnpJRU52YlcxdmJsQnliM0J6UVc1a1EyeGhjM05PWVcxbFBFOXdkR2x2Yml3Z1NYTk5kV3gwYVN3Z1IzSnZkWEErSUh0Y2JpQWdMeW9xSUZCeWIzQnpJSFJvWVhRZ2QybHNiQ0JpWlNCd1lYTnpaV1FnYjI0Z2RHOGdkR2hsSUdOb2FXeGtjbVZ1TGlBcUwxeHVJQ0JwYm01bGNsQnliM0J6T2lCS1UxZ3VTVzUwY21sdWMybGpSV3hsYldWdWRITmJKMlJwZGlkZE8xeHVJQ0F2S2lvZ1ZHaGxJR1p2WTNWelpXUWdjM1JoZEdVZ2IyWWdkR2hsSUhObGJHVmpkQzRnS2k5Y2JpQWdhWE5HYjJOMWMyVmtPaUJpYjI5c1pXRnVPMXh1SUNCcGMwUnBjMkZpYkdWa09pQmliMjlzWldGdU8xeHVJQ0F2S2lvZ1UyVjBJSE5wZW1VZ2IyWWdkR2hsSUdOdmJuUmhhVzVsY2k0Z0tpOWNiaUFnYzJsNlpUb2diblZ0WW1WeU8xeHVmVnh1Wlhod2IzSjBJR052Ym5OMElFeHZZV1JwYm1kSmJtUnBZMkYwYjNJZ1BTQThYRzRnSUU5d2RHbHZiaXhjYmlBZ1NYTk5kV3gwYVNCbGVIUmxibVJ6SUdKdmIyeGxZVzRzWEc0Z0lFZHliM1Z3SUdWNGRHVnVaSE1nUjNKdmRYQkNZWE5sUEU5d2RHbHZiajVjYmo0b2UxeHVJQ0JwYm01bGNsQnliM0J6TEZ4dUlDQnBjMUowYkN4Y2JpQWdjMmw2WlNBOUlEUXNYRzRnSUM0dUxuSmxjM1JRY205d2MxeHVmVG9nVEc5aFpHbHVaMGx1WkdsallYUnZjbEJ5YjNCelBFOXdkR2x2Yml3Z1NYTk5kV3gwYVN3Z1IzSnZkWEErS1NBOVBpQjdYRzRnSUhKbGRIVnliaUFvWEc0Z0lDQWdQR1JwZGx4dUlDQWdJQ0FnZXk0dUxtZGxkRk4wZVd4bFVISnZjSE1vWEc0Z0lDQWdJQ0FnSUhzZ0xpNHVjbVZ6ZEZCeWIzQnpMQ0JwYm01bGNsQnliM0J6TENCcGMxSjBiQ3dnYzJsNlpTQjlMRnh1SUNBZ0lDQWdJQ0FuYkc5aFpHbHVaMGx1WkdsallYUnZjaWNzWEc0Z0lDQWdJQ0FnSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBibVJwWTJGMGIzSTZJSFJ5ZFdVc1hHNGdJQ0FnSUNBZ0lDQWdKMnh2WVdScGJtY3RhVzVrYVdOaGRHOXlKem9nZEhKMVpTeGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdLWDFjYmlBZ0lDQWdJSHN1TGk1cGJtNWxjbEJ5YjNCemZWeHVJQ0FnSUQ1Y2JpQWdJQ0FnSUR4TWIyRmthVzVuUkc5MElHUmxiR0Y1UFhzd2ZTQnZabVp6WlhROWUybHpVblJzZlNBdlBseHVJQ0FnSUNBZ1BFeHZZV1JwYm1kRWIzUWdaR1ZzWVhrOWV6RTJNSDBnYjJabWMyVjBJQzgrWEc0Z0lDQWdJQ0E4VEc5aFpHbHVaMFJ2ZENCa1pXeGhlVDE3TXpJd2ZTQnZabVp6WlhROWV5RnBjMUowYkgwZ0x6NWNiaUFnSUNBOEwyUnBkajVjYmlBZ0tUdGNibjA3WEc0aVhYMD0gKi9cIixcbiAgdG9TdHJpbmc6IF9FTU9USU9OX1NUUklOR0lGSUVEX0NTU19FUlJPUl9fXG59O1xudmFyIFN2ZyA9IGZ1bmN0aW9uIFN2ZyhfcmVmKSB7XG4gIHZhciBzaXplID0gX3JlZi5zaXplLFxuICAgIHByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIF9leGNsdWRlZCQyKTtcbiAgcmV0dXJuIGpzeChcInN2Z1wiLCBfZXh0ZW5kcyh7XG4gICAgaGVpZ2h0OiBzaXplLFxuICAgIHdpZHRoOiBzaXplLFxuICAgIHZpZXdCb3g6IFwiMCAwIDIwIDIwXCIsXG4gICAgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIixcbiAgICBmb2N1c2FibGU6IFwiZmFsc2VcIixcbiAgICBjc3M6IF9yZWYyXG4gIH0sIHByb3BzKSk7XG59O1xudmFyIENyb3NzSWNvbiA9IGZ1bmN0aW9uIENyb3NzSWNvbihwcm9wcykge1xuICByZXR1cm4ganN4KFN2ZywgX2V4dGVuZHMoe1xuICAgIHNpemU6IDIwXG4gIH0sIHByb3BzKSwganN4KFwicGF0aFwiLCB7XG4gICAgZDogXCJNMTQuMzQ4IDE0Ljg0OWMtMC40NjkgMC40NjktMS4yMjkgMC40NjktMS42OTcgMGwtMi42NTEtMy4wMzAtMi42NTEgMy4wMjljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDAtMC40NjktMC40NjktMC40NjktMS4yMjkgMC0xLjY5N2wyLjc1OC0zLjE1LTIuNzU5LTMuMTUyYy0wLjQ2OS0wLjQ2OS0wLjQ2OS0xLjIyOCAwLTEuNjk3czEuMjI4LTAuNDY5IDEuNjk3IDBsMi42NTIgMy4wMzEgMi42NTEtMy4wMzFjMC40NjktMC40NjkgMS4yMjgtMC40NjkgMS42OTcgMHMwLjQ2OSAxLjIyOSAwIDEuNjk3bC0yLjc1OCAzLjE1MiAyLjc1OCAzLjE1YzAuNDY5IDAuNDY5IDAuNDY5IDEuMjI5IDAgMS42OTh6XCJcbiAgfSkpO1xufTtcbnZhciBEb3duQ2hldnJvbiA9IGZ1bmN0aW9uIERvd25DaGV2cm9uKHByb3BzKSB7XG4gIHJldHVybiBqc3goU3ZnLCBfZXh0ZW5kcyh7XG4gICAgc2l6ZTogMjBcbiAgfSwgcHJvcHMpLCBqc3goXCJwYXRoXCIsIHtcbiAgICBkOiBcIk00LjUxNiA3LjU0OGMwLjQzNi0wLjQ0NiAxLjA0My0wLjQ4MSAxLjU3NiAwbDMuOTA4IDMuNzQ3IDMuOTA4LTMuNzQ3YzAuNTMzLTAuNDgxIDEuMTQxLTAuNDQ2IDEuNTc0IDAgMC40MzYgMC40NDUgMC40MDggMS4xOTcgMCAxLjYxNS0wLjQwNiAwLjQxOC00LjY5NSA0LjUwMi00LjY5NSA0LjUwMi0wLjIxNyAwLjIyMy0wLjUwMiAwLjMzNS0wLjc4NyAwLjMzNXMtMC41Ny0wLjExMi0wLjc4OS0wLjMzNWMwIDAtNC4yODctNC4wODQtNC42OTUtNC41MDJzLTAuNDM2LTEuMTcgMC0xLjYxNXpcIlxuICB9KSk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgQnV0dG9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBiYXNlQ1NTID0gZnVuY3Rpb24gYmFzZUNTUyhfcmVmMywgdW5zdHlsZWQpIHtcbiAgdmFyIGlzRm9jdXNlZCA9IF9yZWYzLmlzRm9jdXNlZCxcbiAgICBfcmVmMyR0aGVtZSA9IF9yZWYzLnRoZW1lLFxuICAgIGJhc2VVbml0ID0gX3JlZjMkdGhlbWUuc3BhY2luZy5iYXNlVW5pdCxcbiAgICBjb2xvcnMgPSBfcmVmMyR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ2luZGljYXRvckNvbnRhaW5lcicsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcydcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICAgICc6aG92ZXInOiB7XG4gICAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw4MCA6IGNvbG9ycy5uZXV0cmFsNDBcbiAgICB9XG4gIH0pO1xufTtcbnZhciBkcm9wZG93bkluZGljYXRvckNTUyA9IGJhc2VDU1M7XG52YXIgRHJvcGRvd25JbmRpY2F0b3IgPSBmdW5jdGlvbiBEcm9wZG93bkluZGljYXRvcihwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcztcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2Ryb3Bkb3duSW5kaWNhdG9yJywge1xuICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAnZHJvcGRvd24taW5kaWNhdG9yJzogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuIHx8IGpzeChEb3duQ2hldnJvbiwgbnVsbCkpO1xufTtcbnZhciBjbGVhckluZGljYXRvckNTUyA9IGJhc2VDU1M7XG52YXIgQ2xlYXJJbmRpY2F0b3IgPSBmdW5jdGlvbiBDbGVhckluZGljYXRvcihwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcztcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2NsZWFySW5kaWNhdG9yJywge1xuICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAnY2xlYXItaW5kaWNhdG9yJzogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuIHx8IGpzeChDcm9zc0ljb24sIG51bGwpKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VwYXJhdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGluZGljYXRvclNlcGFyYXRvckNTUyA9IGZ1bmN0aW9uIGluZGljYXRvclNlcGFyYXRvckNTUyhfcmVmNCwgdW5zdHlsZWQpIHtcbiAgdmFyIGlzRGlzYWJsZWQgPSBfcmVmNC5pc0Rpc2FibGVkLFxuICAgIF9yZWY0JHRoZW1lID0gX3JlZjQudGhlbWUsXG4gICAgYmFzZVVuaXQgPSBfcmVmNCR0aGVtZS5zcGFjaW5nLmJhc2VVbml0LFxuICAgIGNvbG9ycyA9IF9yZWY0JHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnaW5kaWNhdG9yU2VwYXJhdG9yJyxcbiAgICBhbGlnblNlbGY6ICdzdHJldGNoJyxcbiAgICB3aWR0aDogMVxuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJhY2tncm91bmRDb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsMTAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgIG1hcmdpbkJvdHRvbTogYmFzZVVuaXQgKiAyLFxuICAgIG1hcmdpblRvcDogYmFzZVVuaXQgKiAyXG4gIH0pO1xufTtcbnZhciBJbmRpY2F0b3JTZXBhcmF0b3IgPSBmdW5jdGlvbiBJbmRpY2F0b3JTZXBhcmF0b3IocHJvcHMpIHtcbiAgdmFyIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4ganN4KFwic3BhblwiLCBfZXh0ZW5kcyh7fSwgaW5uZXJQcm9wcywgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2luZGljYXRvclNlcGFyYXRvcicsIHtcbiAgICAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWVcbiAgfSkpKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTG9hZGluZ1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBsb2FkaW5nRG90QW5pbWF0aW9ucyA9IGtleWZyYW1lcyhfdGVtcGxhdGVPYmplY3QgfHwgKF90ZW1wbGF0ZU9iamVjdCA9IF90YWdnZWRUZW1wbGF0ZUxpdGVyYWwoW1wiXFxuICAwJSwgODAlLCAxMDAlIHsgb3BhY2l0eTogMDsgfVxcbiAgNDAlIHsgb3BhY2l0eTogMTsgfVxcblwiXSkpKTtcbnZhciBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gZnVuY3Rpb24gbG9hZGluZ0luZGljYXRvckNTUyhfcmVmNSwgdW5zdHlsZWQpIHtcbiAgdmFyIGlzRm9jdXNlZCA9IF9yZWY1LmlzRm9jdXNlZCxcbiAgICBzaXplID0gX3JlZjUuc2l6ZSxcbiAgICBfcmVmNSR0aGVtZSA9IF9yZWY1LnRoZW1lLFxuICAgIGNvbG9ycyA9IF9yZWY1JHRoZW1lLmNvbG9ycyxcbiAgICBiYXNlVW5pdCA9IF9yZWY1JHRoZW1lLnNwYWNpbmcuYmFzZVVuaXQ7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ2xvYWRpbmdJbmRpY2F0b3InLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuICAgIGFsaWduU2VsZjogJ2NlbnRlcicsXG4gICAgZm9udFNpemU6IHNpemUsXG4gICAgbGluZUhlaWdodDogMSxcbiAgICBtYXJnaW5SaWdodDogc2l6ZSxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgIHBhZGRpbmc6IGJhc2VVbml0ICogMlxuICB9KTtcbn07XG52YXIgTG9hZGluZ0RvdCA9IGZ1bmN0aW9uIExvYWRpbmdEb3QoX3JlZjYpIHtcbiAgdmFyIGRlbGF5ID0gX3JlZjYuZGVsYXksXG4gICAgb2Zmc2V0ID0gX3JlZjYub2Zmc2V0O1xuICByZXR1cm4ganN4KFwic3BhblwiLCB7XG4gICAgY3NzOiAvKiNfX1BVUkVfXyovY3NzJDIoe1xuICAgICAgYW5pbWF0aW9uOiBcIlwiLmNvbmNhdChsb2FkaW5nRG90QW5pbWF0aW9ucywgXCIgMXMgZWFzZS1pbi1vdXQgXCIpLmNvbmNhdChkZWxheSwgXCJtcyBpbmZpbml0ZTtcIiksXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdjdXJyZW50Q29sb3InLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtJyxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luTGVmdDogb2Zmc2V0ID8gJzFlbScgOiB1bmRlZmluZWQsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbSdcbiAgICB9LCBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBcIlwiIDogXCI7bGFiZWw6TG9hZGluZ0RvdDtcIiwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gXCJcIiA6IFwiLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW1sdVpHbGpZWFJ2Y25NdWRITjRJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVzFSU1NJc0ltWnBiR1VpT2lKcGJtUnBZMkYwYjNKekxuUnplQ0lzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtpQkFhbk40SUdwemVDQXFMMXh1YVcxd2IzSjBJSHNnU2xOWUxDQlNaV0ZqZEU1dlpHVWdmU0JtY205dElDZHlaV0ZqZENjN1hHNXBiWEJ2Y25RZ2V5QnFjM2dzSUd0bGVXWnlZVzFsY3lCOUlHWnliMjBnSjBCbGJXOTBhVzl1TDNKbFlXTjBKenRjYmx4dWFXMXdiM0owSUh0Y2JpQWdRMjl0Ylc5dVVISnZjSE5CYm1SRGJHRnpjMDVoYldVc1hHNGdJRU5UVTA5aWFtVmpkRmRwZEdoTVlXSmxiQ3hjYmlBZ1IzSnZkWEJDWVhObExGeHVmU0JtY205dElDY3VMaTkwZVhCbGN5YzdYRzVwYlhCdmNuUWdleUJuWlhSVGRIbHNaVkJ5YjNCeklIMGdabkp2YlNBbkxpNHZkWFJwYkhNbk8xeHVYRzR2THlBOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMWNiaTh2SUVSeWIzQmtiM2R1SUNZZ1EyeGxZWElnU1dOdmJuTmNiaTh2SUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBWeHVYRzVqYjI1emRDQlRkbWNnUFNBb2UxeHVJQ0J6YVhwbExGeHVJQ0F1TGk1d2NtOXdjMXh1ZlRvZ1NsTllMa2x1ZEhKcGJuTnBZMFZzWlcxbGJuUnpXeWR6ZG1jblhTQW1JSHNnYzJsNlpUb2diblZ0WW1WeUlIMHBJRDArSUNoY2JpQWdQSE4yWjF4dUlDQWdJR2hsYVdkb2REMTdjMmw2WlgxY2JpQWdJQ0IzYVdSMGFEMTdjMmw2WlgxY2JpQWdJQ0IyYVdWM1FtOTRQVndpTUNBd0lESXdJREl3WENKY2JpQWdJQ0JoY21saExXaHBaR1JsYmoxY0luUnlkV1ZjSWx4dUlDQWdJR1p2WTNWellXSnNaVDFjSW1aaGJITmxYQ0pjYmlBZ0lDQmpjM005ZTN0Y2JpQWdJQ0FnSUdScGMzQnNZWGs2SUNkcGJteHBibVV0WW14dlkyc25MRnh1SUNBZ0lDQWdabWxzYkRvZ0oyTjFjbkpsYm5SRGIyeHZjaWNzWEc0Z0lDQWdJQ0JzYVc1bFNHVnBaMmgwT2lBeExGeHVJQ0FnSUNBZ2MzUnliMnRsT2lBblkzVnljbVZ1ZEVOdmJHOXlKeXhjYmlBZ0lDQWdJSE4wY205clpWZHBaSFJvT2lBd0xGeHVJQ0FnSUgxOVhHNGdJQ0FnZXk0dUxuQnliM0J6ZlZ4dUlDQXZQbHh1S1R0Y2JseHVaWGh3YjNKMElIUjVjR1VnUTNKdmMzTkpZMjl1VUhKdmNITWdQU0JLVTFndVNXNTBjbWx1YzJsalJXeGxiV1Z1ZEhOYkozTjJaeWRkSUNZZ2V5QnphWHBsUHpvZ2JuVnRZbVZ5SUgwN1hHNWxlSEJ2Y25RZ1kyOXVjM1FnUTNKdmMzTkpZMjl1SUQwZ0tIQnliM0J6T2lCRGNtOXpjMGxqYjI1UWNtOXdjeWtnUFQ0Z0tGeHVJQ0E4VTNabklITnBlbVU5ZXpJd2ZTQjdMaTR1Y0hKdmNITjlQbHh1SUNBZ0lEeHdZWFJvSUdROVhDSk5NVFF1TXpRNElERTBMamcwT1dNdE1DNDBOamtnTUM0ME5qa3RNUzR5TWprZ01DNDBOamt0TVM0Mk9UY2dNR3d0TWk0Mk5URXRNeTR3TXpBdE1pNDJOVEVnTXk0d01qbGpMVEF1TkRZNUlEQXVORFk1TFRFdU1qSTVJREF1TkRZNUxURXVOamszSURBdE1DNDBOamt0TUM0ME5qa3RNQzQwTmprdE1TNHlNamtnTUMweExqWTVOMnd5TGpjMU9DMHpMakUxTFRJdU56VTVMVE11TVRVeVl5MHdMalEyT1Mwd0xqUTJPUzB3TGpRMk9TMHhMakl5T0NBd0xURXVOamszY3pFdU1qSTRMVEF1TkRZNUlERXVOamszSURCc01pNDJOVElnTXk0d016RWdNaTQyTlRFdE15NHdNekZqTUM0ME5qa3RNQzQwTmprZ01TNHlNamd0TUM0ME5qa2dNUzQyT1RjZ01ITXdMalEyT1NBeExqSXlPU0F3SURFdU5qazNiQzB5TGpjMU9DQXpMakUxTWlBeUxqYzFPQ0F6TGpFMVl6QXVORFk1SURBdU5EWTVJREF1TkRZNUlERXVNakk1SURBZ01TNDJPVGg2WENJZ0x6NWNiaUFnUEM5VGRtYytYRzRwTzF4dVpYaHdiM0owSUhSNWNHVWdSRzkzYmtOb1pYWnliMjVRY205d2N5QTlJRXBUV0M1SmJuUnlhVzV6YVdORmJHVnRaVzUwYzFzbmMzWm5KMTBnSmlCN0lITnBlbVUvT2lCdWRXMWlaWElnZlR0Y2JtVjRjRzl5ZENCamIyNXpkQ0JFYjNkdVEyaGxkbkp2YmlBOUlDaHdjbTl3Y3pvZ1JHOTNia05vWlhaeWIyNVFjbTl3Y3lrZ1BUNGdLRnh1SUNBOFUzWm5JSE5wZW1VOWV6SXdmU0I3TGk0dWNISnZjSE45UGx4dUlDQWdJRHh3WVhSb0lHUTlYQ0pOTkM0MU1UWWdOeTQxTkRoak1DNDBNell0TUM0ME5EWWdNUzR3TkRNdE1DNDBPREVnTVM0MU56WWdNR3d6TGprd09DQXpMamMwTnlBekxqa3dPQzB6TGpjME4yTXdMalV6TXkwd0xqUTRNU0F4TGpFME1TMHdMalEwTmlBeExqVTNOQ0F3SURBdU5ETTJJREF1TkRRMUlEQXVOREE0SURFdU1UazNJREFnTVM0Mk1UVXRNQzQwTURZZ01DNDBNVGd0TkM0Mk9UVWdOQzQxTURJdE5DNDJPVFVnTkM0MU1ESXRNQzR5TVRjZ01DNHlNak10TUM0MU1ESWdNQzR6TXpVdE1DNDNPRGNnTUM0ek16VnpMVEF1TlRjdE1DNHhNVEl0TUM0M09Ea3RNQzR6TXpWak1DQXdMVFF1TWpnM0xUUXVNRGcwTFRRdU5qazFMVFF1TlRBeWN5MHdMalF6TmkweExqRTNJREF0TVM0Mk1UVjZYQ0lnTHo1Y2JpQWdQQzlUZG1jK1hHNHBPMXh1WEc0dkx5QTlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmk4dklFUnliM0JrYjNkdUlDWWdRMnhsWVhJZ1FuVjBkRzl1YzF4dUx5OGdQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1JISnZjR1J2ZDI1SmJtUnBZMkYwYjNKUWNtOXdjenhjYmlBZ1QzQjBhVzl1SUQwZ2RXNXJibTkzYml4Y2JpQWdTWE5OZFd4MGFTQmxlSFJsYm1SeklHSnZiMnhsWVc0Z1BTQmliMjlzWldGdUxGeHVJQ0JIY205MWNDQmxlSFJsYm1SeklFZHliM1Z3UW1GelpUeFBjSFJwYjI0K0lEMGdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNWNiajRnWlhoMFpXNWtjeUJEYjIxdGIyNVFjbTl3YzBGdVpFTnNZWE56VG1GdFpUeFBjSFJwYjI0c0lFbHpUWFZzZEdrc0lFZHliM1Z3UGlCN1hHNGdJQzhxS2lCVWFHVWdZMmhwYkdSeVpXNGdkRzhnWW1VZ2NtVnVaR1Z5WldRZ2FXNXphV1JsSUhSb1pTQnBibVJwWTJGMGIzSXVJQ292WEc0Z0lHTm9hV3hrY21WdVB6b2dVbVZoWTNST2IyUmxPMXh1SUNBdktpb2dVSEp2Y0hNZ2RHaGhkQ0IzYVd4c0lHSmxJSEJoYzNObFpDQnZiaUIwYnlCMGFHVWdZMmhwYkdSeVpXNHVJQ292WEc0Z0lHbHVibVZ5VUhKdmNITTZJRXBUV0M1SmJuUnlhVzV6YVdORmJHVnRaVzUwYzFzblpHbDJKMTA3WEc0Z0lDOHFLaUJVYUdVZ1ptOWpkWE5sWkNCemRHRjBaU0J2WmlCMGFHVWdjMlZzWldOMExpQXFMMXh1SUNCcGMwWnZZM1Z6WldRNklHSnZiMnhsWVc0N1hHNGdJR2x6UkdsellXSnNaV1E2SUdKdmIyeGxZVzQ3WEc1OVhHNWNibU52Ym5OMElHSmhjMlZEVTFNZ1BTQThYRzRnSUU5d2RHbHZiaXhjYmlBZ1NYTk5kV3gwYVNCbGVIUmxibVJ6SUdKdmIyeGxZVzRzWEc0Z0lFZHliM1Z3SUdWNGRHVnVaSE1nUjNKdmRYQkNZWE5sUEU5d2RHbHZiajVjYmo0b1hHNGdJSHRjYmlBZ0lDQnBjMFp2WTNWelpXUXNYRzRnSUNBZ2RHaGxiV1U2SUh0Y2JpQWdJQ0FnSUhOd1lXTnBibWM2SUhzZ1ltRnpaVlZ1YVhRZ2ZTeGNiaUFnSUNBZ0lHTnZiRzl5Y3l4Y2JpQWdJQ0I5TEZ4dUlDQjlPbHh1SUNBZ0lId2dSSEp2Y0dSdmQyNUpibVJwWTJGMGIzSlFjbTl3Y3p4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQbHh1SUNBZ0lId2dRMnhsWVhKSmJtUnBZMkYwYjNKUWNtOXdjenhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BpeGNiaUFnZFc1emRIbHNaV1E2SUdKdmIyeGxZVzVjYmlrNklFTlRVMDlpYW1WamRGZHBkR2hNWVdKbGJDQTlQaUFvZTF4dUlDQnNZV0psYkRvZ0oybHVaR2xqWVhSdmNrTnZiblJoYVc1bGNpY3NYRzRnSUdScGMzQnNZWGs2SUNkbWJHVjRKeXhjYmlBZ2RISmhibk5wZEdsdmJqb2dKMk52Ykc5eUlERTFNRzF6Snl4Y2JpQWdMaTR1S0hWdWMzUjViR1ZrWEc0Z0lDQWdQeUI3ZlZ4dUlDQWdJRG9nZTF4dUlDQWdJQ0FnSUNCamIyeHZjam9nYVhOR2IyTjFjMlZrSUQ4Z1kyOXNiM0p6TG01bGRYUnlZV3cyTUNBNklHTnZiRzl5Y3k1dVpYVjBjbUZzTWpBc1hHNGdJQ0FnSUNBZ0lIQmhaR1JwYm1jNklHSmhjMlZWYm1sMElDb2dNaXhjYmlBZ0lDQWdJQ0FnSnpwb2IzWmxjaWM2SUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ2FYTkdiMk4xYzJWa0lEOGdZMjlzYjNKekxtNWxkWFJ5WVd3NE1DQTZJR052Ykc5eWN5NXVaWFYwY21Gc05EQXNYRzRnSUNBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0I5S1N4Y2JuMHBPMXh1WEc1bGVIQnZjblFnWTI5dWMzUWdaSEp2Y0dSdmQyNUpibVJwWTJGMGIzSkRVMU1nUFNCaVlYTmxRMU5UTzF4dVpYaHdiM0owSUdOdmJuTjBJRVJ5YjNCa2IzZHVTVzVrYVdOaGRHOXlJRDBnUEZ4dUlDQlBjSFJwYjI0c1hHNGdJRWx6VFhWc2RHa2daWGgwWlc1a2N5QmliMjlzWldGdUxGeHVJQ0JIY205MWNDQmxlSFJsYm1SeklFZHliM1Z3UW1GelpUeFBjSFJwYjI0K1hHNCtLRnh1SUNCd2NtOXdjem9nUkhKdmNHUnZkMjVKYm1ScFkyRjBiM0pRY205d2N6eFBjSFJwYjI0c0lFbHpUWFZzZEdrc0lFZHliM1Z3UGx4dUtTQTlQaUI3WEc0Z0lHTnZibk4wSUhzZ1kyaHBiR1J5Wlc0c0lHbHVibVZ5VUhKdmNITWdmU0E5SUhCeWIzQnpPMXh1SUNCeVpYUjFjbTRnS0Z4dUlDQWdJRHhrYVhaY2JpQWdJQ0FnSUhzdUxpNW5aWFJUZEhsc1pWQnliM0J6S0hCeWIzQnpMQ0FuWkhKdmNHUnZkMjVKYm1ScFkyRjBiM0luTENCN1hHNGdJQ0FnSUNBZ0lHbHVaR2xqWVhSdmNqb2dkSEoxWlN4Y2JpQWdJQ0FnSUNBZ0oyUnliM0JrYjNkdUxXbHVaR2xqWVhSdmNpYzZJSFJ5ZFdVc1hHNGdJQ0FnSUNCOUtYMWNiaUFnSUNBZ0lIc3VMaTVwYm01bGNsQnliM0J6ZlZ4dUlDQWdJRDVjYmlBZ0lDQWdJSHRqYUdsc1pISmxiaUI4ZkNBOFJHOTNia05vWlhaeWIyNGdMejU5WEc0Z0lDQWdQQzlrYVhZK1hHNGdJQ2s3WEc1OU8xeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRU5zWldGeVNXNWthV05oZEc5eVVISnZjSE04WEc0Z0lFOXdkR2x2YmlBOUlIVnVhMjV2ZDI0c1hHNGdJRWx6VFhWc2RHa2daWGgwWlc1a2N5QmliMjlzWldGdUlEMGdZbTl2YkdWaGJpeGNiaUFnUjNKdmRYQWdaWGgwWlc1a2N5QkhjbTkxY0VKaGMyVThUM0IwYVc5dVBpQTlJRWR5YjNWd1FtRnpaVHhQY0hScGIyNCtYRzQrSUdWNGRHVnVaSE1nUTI5dGJXOXVVSEp2Y0hOQmJtUkRiR0Z6YzA1aGJXVThUM0IwYVc5dUxDQkpjMDExYkhScExDQkhjbTkxY0Q0Z2UxeHVJQ0F2S2lvZ1ZHaGxJR05vYVd4a2NtVnVJSFJ2SUdKbElISmxibVJsY21Wa0lHbHVjMmxrWlNCMGFHVWdhVzVrYVdOaGRHOXlMaUFxTDF4dUlDQmphR2xzWkhKbGJqODZJRkpsWVdOMFRtOWtaVHRjYmlBZ0x5b3FJRkJ5YjNCeklIUm9ZWFFnZDJsc2JDQmlaU0J3WVhOelpXUWdiMjRnZEc4Z2RHaGxJR05vYVd4a2NtVnVMaUFxTDF4dUlDQnBibTVsY2xCeWIzQnpPaUJLVTFndVNXNTBjbWx1YzJsalJXeGxiV1Z1ZEhOYkoyUnBkaWRkTzF4dUlDQXZLaW9nVkdobElHWnZZM1Z6WldRZ2MzUmhkR1VnYjJZZ2RHaGxJSE5sYkdWamRDNGdLaTljYmlBZ2FYTkdiMk4xYzJWa09pQmliMjlzWldGdU8xeHVmVnh1WEc1bGVIQnZjblFnWTI5dWMzUWdZMnhsWVhKSmJtUnBZMkYwYjNKRFUxTWdQU0JpWVhObFExTlRPMXh1Wlhod2IzSjBJR052Ym5OMElFTnNaV0Z5U1c1a2FXTmhkRzl5SUQwZ1BGeHVJQ0JQY0hScGIyNHNYRzRnSUVselRYVnNkR2tnWlhoMFpXNWtjeUJpYjI5c1pXRnVMRnh1SUNCSGNtOTFjQ0JsZUhSbGJtUnpJRWR5YjNWd1FtRnpaVHhQY0hScGIyNCtYRzQrS0Z4dUlDQndjbTl3Y3pvZ1EyeGxZWEpKYm1ScFkyRjBiM0pRY205d2N6eFBjSFJwYjI0c0lFbHpUWFZzZEdrc0lFZHliM1Z3UGx4dUtTQTlQaUI3WEc0Z0lHTnZibk4wSUhzZ1kyaHBiR1J5Wlc0c0lHbHVibVZ5VUhKdmNITWdmU0E5SUhCeWIzQnpPMXh1SUNCeVpYUjFjbTRnS0Z4dUlDQWdJRHhrYVhaY2JpQWdJQ0FnSUhzdUxpNW5aWFJUZEhsc1pWQnliM0J6S0hCeWIzQnpMQ0FuWTJ4bFlYSkpibVJwWTJGMGIzSW5MQ0I3WEc0Z0lDQWdJQ0FnSUdsdVpHbGpZWFJ2Y2pvZ2RISjFaU3hjYmlBZ0lDQWdJQ0FnSjJOc1pXRnlMV2x1WkdsallYUnZjaWM2SUhSeWRXVXNYRzRnSUNBZ0lDQjlLWDFjYmlBZ0lDQWdJSHN1TGk1cGJtNWxjbEJ5YjNCemZWeHVJQ0FnSUQ1Y2JpQWdJQ0FnSUh0amFHbHNaSEpsYmlCOGZDQThRM0p2YzNOSlkyOXVJQzgrZlZ4dUlDQWdJRHd2WkdsMlBseHVJQ0FwTzF4dWZUdGNibHh1THk4Z1BUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlYRzR2THlCVFpYQmhjbUYwYjNKY2JpOHZJRDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFZ4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElFbHVaR2xqWVhSdmNsTmxjR0Z5WVhSdmNsQnliM0J6UEZ4dUlDQlBjSFJwYjI0Z1BTQjFibXR1YjNkdUxGeHVJQ0JKYzAxMWJIUnBJR1Y0ZEdWdVpITWdZbTl2YkdWaGJpQTlJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNGdQU0JIY205MWNFSmhjMlU4VDNCMGFXOXVQbHh1UGlCbGVIUmxibVJ6SUVOdmJXMXZibEJ5YjNCelFXNWtRMnhoYzNOT1lXMWxQRTl3ZEdsdmJpd2dTWE5OZFd4MGFTd2dSM0p2ZFhBK0lIdGNiaUFnYVhORWFYTmhZbXhsWkRvZ1ltOXZiR1ZoYmp0Y2JpQWdhWE5HYjJOMWMyVmtPaUJpYjI5c1pXRnVPMXh1SUNCcGJtNWxjbEJ5YjNCelB6b2dTbE5ZTGtsdWRISnBibk5wWTBWc1pXMWxiblJ6V3lkemNHRnVKMTA3WEc1OVhHNWNibVY0Y0c5eWRDQmpiMjV6ZENCcGJtUnBZMkYwYjNKVFpYQmhjbUYwYjNKRFUxTWdQU0E4WEc0Z0lFOXdkR2x2Yml4Y2JpQWdTWE5OZFd4MGFTQmxlSFJsYm1SeklHSnZiMnhsWVc0c1hHNGdJRWR5YjNWd0lHVjRkR1Z1WkhNZ1IzSnZkWEJDWVhObFBFOXdkR2x2Ymo1Y2JqNG9YRzRnSUh0Y2JpQWdJQ0JwYzBScGMyRmliR1ZrTEZ4dUlDQWdJSFJvWlcxbE9pQjdYRzRnSUNBZ0lDQnpjR0ZqYVc1bk9pQjdJR0poYzJWVmJtbDBJSDBzWEc0Z0lDQWdJQ0JqYjJ4dmNuTXNYRzRnSUNBZ2ZTeGNiaUFnZlRvZ1NXNWthV05oZEc5eVUyVndZWEpoZEc5eVVISnZjSE04VDNCMGFXOXVMQ0JKYzAxMWJIUnBMQ0JIY205MWNENHNYRzRnSUhWdWMzUjViR1ZrT2lCaWIyOXNaV0Z1WEc0cE9pQkRVMU5QWW1wbFkzUlhhWFJvVEdGaVpXd2dQVDRnS0h0Y2JpQWdiR0ZpWld3NklDZHBibVJwWTJGMGIzSlRaWEJoY21GMGIzSW5MRnh1SUNCaGJHbG5ibE5sYkdZNklDZHpkSEpsZEdOb0p5eGNiaUFnZDJsa2RHZzZJREVzWEc0Z0lDNHVMaWgxYm5OMGVXeGxaRnh1SUNBZ0lEOGdlMzFjYmlBZ0lDQTZJSHRjYmlBZ0lDQWdJQ0FnWW1GamEyZHliM1Z1WkVOdmJHOXlPaUJwYzBScGMyRmliR1ZrSUQ4Z1kyOXNiM0p6TG01bGRYUnlZV3d4TUNBNklHTnZiRzl5Y3k1dVpYVjBjbUZzTWpBc1hHNGdJQ0FnSUNBZ0lHMWhjbWRwYmtKdmRIUnZiVG9nWW1GelpWVnVhWFFnS2lBeUxGeHVJQ0FnSUNBZ0lDQnRZWEpuYVc1VWIzQTZJR0poYzJWVmJtbDBJQ29nTWl4Y2JpQWdJQ0FnSUgwcExGeHVmU2s3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0JKYm1ScFkyRjBiM0pUWlhCaGNtRjBiM0lnUFNBOFhHNGdJRTl3ZEdsdmJpeGNiaUFnU1hOTmRXeDBhU0JsZUhSbGJtUnpJR0p2YjJ4bFlXNHNYRzRnSUVkeWIzVndJR1Y0ZEdWdVpITWdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNWNiajRvWEc0Z0lIQnliM0J6T2lCSmJtUnBZMkYwYjNKVFpYQmhjbUYwYjNKUWNtOXdjenhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BseHVLU0E5UGlCN1hHNGdJR052Ym5OMElIc2dhVzV1WlhKUWNtOXdjeUI5SUQwZ2NISnZjSE03WEc0Z0lISmxkSFZ5YmlBb1hHNGdJQ0FnUEhOd1lXNWNiaUFnSUNBZ0lIc3VMaTVwYm01bGNsQnliM0J6ZlZ4dUlDQWdJQ0FnZXk0dUxtZGxkRk4wZVd4bFVISnZjSE1vY0hKdmNITXNJQ2RwYm1ScFkyRjBiM0pUWlhCaGNtRjBiM0luTENCN1hHNGdJQ0FnSUNBZ0lDZHBibVJwWTJGMGIzSXRjMlZ3WVhKaGRHOXlKem9nZEhKMVpTeGNiaUFnSUNBZ0lIMHBmVnh1SUNBZ0lDOCtYRzRnSUNrN1hHNTlPMXh1WEc0dkx5QTlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmk4dklFeHZZV1JwYm1kY2JpOHZJRDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFZ4dVhHNWpiMjV6ZENCc2IyRmthVzVuUkc5MFFXNXBiV0YwYVc5dWN5QTlJR3RsZVdaeVlXMWxjMkJjYmlBZ01DVXNJRGd3SlN3Z01UQXdKU0I3SUc5d1lXTnBkSGs2SURBN0lIMWNiaUFnTkRBbElIc2diM0JoWTJsMGVUb2dNVHNnZlZ4dVlEdGNibHh1Wlhod2IzSjBJR052Ym5OMElHeHZZV1JwYm1kSmJtUnBZMkYwYjNKRFUxTWdQU0E4WEc0Z0lFOXdkR2x2Yml4Y2JpQWdTWE5OZFd4MGFTQmxlSFJsYm1SeklHSnZiMnhsWVc0c1hHNGdJRWR5YjNWd0lHVjRkR1Z1WkhNZ1IzSnZkWEJDWVhObFBFOXdkR2x2Ymo1Y2JqNG9YRzRnSUh0Y2JpQWdJQ0JwYzBadlkzVnpaV1FzWEc0Z0lDQWdjMmw2WlN4Y2JpQWdJQ0IwYUdWdFpUb2dlMXh1SUNBZ0lDQWdZMjlzYjNKekxGeHVJQ0FnSUNBZ2MzQmhZMmx1WnpvZ2V5QmlZWE5sVlc1cGRDQjlMRnh1SUNBZ0lIMHNYRzRnSUgwNklFeHZZV1JwYm1kSmJtUnBZMkYwYjNKUWNtOXdjenhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BpeGNiaUFnZFc1emRIbHNaV1E2SUdKdmIyeGxZVzVjYmlrNklFTlRVMDlpYW1WamRGZHBkR2hNWVdKbGJDQTlQaUFvZTF4dUlDQnNZV0psYkRvZ0oyeHZZV1JwYm1kSmJtUnBZMkYwYjNJbkxGeHVJQ0JrYVhOd2JHRjVPaUFuWm14bGVDY3NYRzRnSUhSeVlXNXphWFJwYjI0NklDZGpiMnh2Y2lBeE5UQnRjeWNzWEc0Z0lHRnNhV2R1VTJWc1pqb2dKMk5sYm5SbGNpY3NYRzRnSUdadmJuUlRhWHBsT2lCemFYcGxMRnh1SUNCc2FXNWxTR1ZwWjJoME9pQXhMRnh1SUNCdFlYSm5hVzVTYVdkb2REb2djMmw2WlN4Y2JpQWdkR1Y0ZEVGc2FXZHVPaUFuWTJWdWRHVnlKeXhjYmlBZ2RtVnlkR2xqWVd4QmJHbG5iam9nSjIxcFpHUnNaU2NzWEc0Z0lDNHVMaWgxYm5OMGVXeGxaRnh1SUNBZ0lEOGdlMzFjYmlBZ0lDQTZJSHRjYmlBZ0lDQWdJQ0FnWTI5c2IzSTZJR2x6Um05amRYTmxaQ0EvSUdOdmJHOXljeTV1WlhWMGNtRnNOakFnT2lCamIyeHZjbk11Ym1WMWRISmhiREl3TEZ4dUlDQWdJQ0FnSUNCd1lXUmthVzVuT2lCaVlYTmxWVzVwZENBcUlESXNYRzRnSUNBZ0lDQjlLU3hjYm4wcE8xeHVYRzVwYm5SbGNtWmhZMlVnVEc5aFpHbHVaMFJ2ZEZCeWIzQnpJSHRjYmlBZ1pHVnNZWGs2SUc1MWJXSmxjanRjYmlBZ2IyWm1jMlYwT2lCaWIyOXNaV0Z1TzF4dWZWeHVZMjl1YzNRZ1RHOWhaR2x1WjBSdmRDQTlJQ2g3SUdSbGJHRjVMQ0J2Wm1aelpYUWdmVG9nVEc5aFpHbHVaMFJ2ZEZCeWIzQnpLU0E5UGlBb1hHNGdJRHh6Y0dGdVhHNGdJQ0FnWTNOelBYdDdYRzRnSUNBZ0lDQmhibWx0WVhScGIyNDZJR0FrZTJ4dllXUnBibWRFYjNSQmJtbHRZWFJwYjI1emZTQXhjeUJsWVhObExXbHVMVzkxZENBa2UyUmxiR0Y1ZlcxeklHbHVabWx1YVhSbE8yQXNYRzRnSUNBZ0lDQmlZV05yWjNKdmRXNWtRMjlzYjNJNklDZGpkWEp5Wlc1MFEyOXNiM0luTEZ4dUlDQWdJQ0FnWW05eVpHVnlVbUZrYVhWek9pQW5NV1Z0Snl4Y2JpQWdJQ0FnSUdScGMzQnNZWGs2SUNkcGJteHBibVV0WW14dlkyc25MRnh1SUNBZ0lDQWdiV0Z5WjJsdVRHVm1kRG9nYjJabWMyVjBJRDhnSnpGbGJTY2dPaUIxYm1SbFptbHVaV1FzWEc0Z0lDQWdJQ0JvWldsbmFIUTZJQ2N4WlcwbkxGeHVJQ0FnSUNBZ2RtVnlkR2xqWVd4QmJHbG5iam9nSjNSdmNDY3NYRzRnSUNBZ0lDQjNhV1IwYURvZ0p6RmxiU2NzWEc0Z0lDQWdmWDFjYmlBZ0x6NWNiaWs3WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1RHOWhaR2x1WjBsdVpHbGpZWFJ2Y2xCeWIzQnpQRnh1SUNCUGNIUnBiMjRnUFNCMWJtdHViM2R1TEZ4dUlDQkpjMDExYkhScElHVjRkR1Z1WkhNZ1ltOXZiR1ZoYmlBOUlHSnZiMnhsWVc0c1hHNGdJRWR5YjNWd0lHVjRkR1Z1WkhNZ1IzSnZkWEJDWVhObFBFOXdkR2x2Ymo0Z1BTQkhjbTkxY0VKaGMyVThUM0IwYVc5dVBseHVQaUJsZUhSbGJtUnpJRU52YlcxdmJsQnliM0J6UVc1a1EyeGhjM05PWVcxbFBFOXdkR2x2Yml3Z1NYTk5kV3gwYVN3Z1IzSnZkWEErSUh0Y2JpQWdMeW9xSUZCeWIzQnpJSFJvWVhRZ2QybHNiQ0JpWlNCd1lYTnpaV1FnYjI0Z2RHOGdkR2hsSUdOb2FXeGtjbVZ1TGlBcUwxeHVJQ0JwYm01bGNsQnliM0J6T2lCS1UxZ3VTVzUwY21sdWMybGpSV3hsYldWdWRITmJKMlJwZGlkZE8xeHVJQ0F2S2lvZ1ZHaGxJR1p2WTNWelpXUWdjM1JoZEdVZ2IyWWdkR2hsSUhObGJHVmpkQzRnS2k5Y2JpQWdhWE5HYjJOMWMyVmtPaUJpYjI5c1pXRnVPMXh1SUNCcGMwUnBjMkZpYkdWa09pQmliMjlzWldGdU8xeHVJQ0F2S2lvZ1UyVjBJSE5wZW1VZ2IyWWdkR2hsSUdOdmJuUmhhVzVsY2k0Z0tpOWNiaUFnYzJsNlpUb2diblZ0WW1WeU8xeHVmVnh1Wlhod2IzSjBJR052Ym5OMElFeHZZV1JwYm1kSmJtUnBZMkYwYjNJZ1BTQThYRzRnSUU5d2RHbHZiaXhjYmlBZ1NYTk5kV3gwYVNCbGVIUmxibVJ6SUdKdmIyeGxZVzRzWEc0Z0lFZHliM1Z3SUdWNGRHVnVaSE1nUjNKdmRYQkNZWE5sUEU5d2RHbHZiajVjYmo0b2UxeHVJQ0JwYm01bGNsQnliM0J6TEZ4dUlDQnBjMUowYkN4Y2JpQWdjMmw2WlNBOUlEUXNYRzRnSUM0dUxuSmxjM1JRY205d2MxeHVmVG9nVEc5aFpHbHVaMGx1WkdsallYUnZjbEJ5YjNCelBFOXdkR2x2Yml3Z1NYTk5kV3gwYVN3Z1IzSnZkWEErS1NBOVBpQjdYRzRnSUhKbGRIVnliaUFvWEc0Z0lDQWdQR1JwZGx4dUlDQWdJQ0FnZXk0dUxtZGxkRk4wZVd4bFVISnZjSE1vWEc0Z0lDQWdJQ0FnSUhzZ0xpNHVjbVZ6ZEZCeWIzQnpMQ0JwYm01bGNsQnliM0J6TENCcGMxSjBiQ3dnYzJsNlpTQjlMRnh1SUNBZ0lDQWdJQ0FuYkc5aFpHbHVaMGx1WkdsallYUnZjaWNzWEc0Z0lDQWdJQ0FnSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBibVJwWTJGMGIzSTZJSFJ5ZFdVc1hHNGdJQ0FnSUNBZ0lDQWdKMnh2WVdScGJtY3RhVzVrYVdOaGRHOXlKem9nZEhKMVpTeGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdLWDFjYmlBZ0lDQWdJSHN1TGk1cGJtNWxjbEJ5YjNCemZWeHVJQ0FnSUQ1Y2JpQWdJQ0FnSUR4TWIyRmthVzVuUkc5MElHUmxiR0Y1UFhzd2ZTQnZabVp6WlhROWUybHpVblJzZlNBdlBseHVJQ0FnSUNBZ1BFeHZZV1JwYm1kRWIzUWdaR1ZzWVhrOWV6RTJNSDBnYjJabWMyVjBJQzgrWEc0Z0lDQWdJQ0E4VEc5aFpHbHVaMFJ2ZENCa1pXeGhlVDE3TXpJd2ZTQnZabVp6WlhROWV5RnBjMUowYkgwZ0x6NWNiaUFnSUNBOEwyUnBkajVjYmlBZ0tUdGNibjA3WEc0aVhYMD0gKi9cIilcbiAgfSk7XG59O1xudmFyIExvYWRpbmdJbmRpY2F0b3IgPSBmdW5jdGlvbiBMb2FkaW5nSW5kaWNhdG9yKF9yZWY3KSB7XG4gIHZhciBpbm5lclByb3BzID0gX3JlZjcuaW5uZXJQcm9wcyxcbiAgICBpc1J0bCA9IF9yZWY3LmlzUnRsLFxuICAgIF9yZWY3JHNpemUgPSBfcmVmNy5zaXplLFxuICAgIHNpemUgPSBfcmVmNyRzaXplID09PSB2b2lkIDAgPyA0IDogX3JlZjckc2l6ZSxcbiAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjcsIF9leGNsdWRlZDIpO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdFByb3BzKSwge30sIHtcbiAgICBpbm5lclByb3BzOiBpbm5lclByb3BzLFxuICAgIGlzUnRsOiBpc1J0bCxcbiAgICBzaXplOiBzaXplXG4gIH0pLCAnbG9hZGluZ0luZGljYXRvcicsIHtcbiAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgJ2xvYWRpbmctaW5kaWNhdG9yJzogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIGpzeChMb2FkaW5nRG90LCB7XG4gICAgZGVsYXk6IDAsXG4gICAgb2Zmc2V0OiBpc1J0bFxuICB9KSwganN4KExvYWRpbmdEb3QsIHtcbiAgICBkZWxheTogMTYwLFxuICAgIG9mZnNldDogdHJ1ZVxuICB9KSwganN4KExvYWRpbmdEb3QsIHtcbiAgICBkZWxheTogMzIwLFxuICAgIG9mZnNldDogIWlzUnRsXG4gIH0pKTtcbn07XG5cbnZhciBjc3MkMSA9IGZ1bmN0aW9uIGNzcyhfcmVmLCB1bnN0eWxlZCkge1xuICB2YXIgaXNEaXNhYmxlZCA9IF9yZWYuaXNEaXNhYmxlZCxcbiAgICBpc0ZvY3VzZWQgPSBfcmVmLmlzRm9jdXNlZCxcbiAgICBfcmVmJHRoZW1lID0gX3JlZi50aGVtZSxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycyxcbiAgICBib3JkZXJSYWRpdXMgPSBfcmVmJHRoZW1lLmJvcmRlclJhZGl1cyxcbiAgICBzcGFjaW5nID0gX3JlZiR0aGVtZS5zcGFjaW5nO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdjb250cm9sJyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBjdXJzb3I6ICdkZWZhdWx0JyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgIG1pbkhlaWdodDogc3BhY2luZy5jb250cm9sSGVpZ2h0LFxuICAgIG91dGxpbmU6ICcwICFpbXBvcnRhbnQnLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIHRyYW5zaXRpb246ICdhbGwgMTAwbXMnXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWw1IDogY29sb3JzLm5ldXRyYWwwLFxuICAgIGJvcmRlckNvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWwxMCA6IGlzRm9jdXNlZCA/IGNvbG9ycy5wcmltYXJ5IDogY29sb3JzLm5ldXRyYWwyMCxcbiAgICBib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyxcbiAgICBib3JkZXJTdHlsZTogJ3NvbGlkJyxcbiAgICBib3JkZXJXaWR0aDogMSxcbiAgICBib3hTaGFkb3c6IGlzRm9jdXNlZCA/IFwiMCAwIDAgMXB4IFwiLmNvbmNhdChjb2xvcnMucHJpbWFyeSkgOiB1bmRlZmluZWQsXG4gICAgJyY6aG92ZXInOiB7XG4gICAgICBib3JkZXJDb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLnByaW1hcnkgOiBjb2xvcnMubmV1dHJhbDMwXG4gICAgfVxuICB9KTtcbn07XG52YXIgQ29udHJvbCA9IGZ1bmN0aW9uIENvbnRyb2wocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgaXNGb2N1c2VkID0gcHJvcHMuaXNGb2N1c2VkLFxuICAgIGlubmVyUmVmID0gcHJvcHMuaW5uZXJSZWYsXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHMsXG4gICAgbWVudUlzT3BlbiA9IHByb3BzLm1lbnVJc09wZW47XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe1xuICAgIHJlZjogaW5uZXJSZWZcbiAgfSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2NvbnRyb2wnLCB7XG4gICAgY29udHJvbDogdHJ1ZSxcbiAgICAnY29udHJvbC0taXMtZGlzYWJsZWQnOiBpc0Rpc2FibGVkLFxuICAgICdjb250cm9sLS1pcy1mb2N1c2VkJzogaXNGb2N1c2VkLFxuICAgICdjb250cm9sLS1tZW51LWlzLW9wZW4nOiBtZW51SXNPcGVuXG4gIH0pLCBpbm5lclByb3BzLCB7XG4gICAgXCJhcmlhLWRpc2FibGVkXCI6IGlzRGlzYWJsZWQgfHwgdW5kZWZpbmVkXG4gIH0pLCBjaGlsZHJlbik7XG59O1xudmFyIENvbnRyb2wkMSA9IENvbnRyb2w7XG5cbnZhciBfZXhjbHVkZWQkMSA9IFtcImRhdGFcIl07XG52YXIgZ3JvdXBDU1MgPSBmdW5jdGlvbiBncm91cENTUyhfcmVmLCB1bnN0eWxlZCkge1xuICB2YXIgc3BhY2luZyA9IF9yZWYudGhlbWUuc3BhY2luZztcbiAgcmV0dXJuIHVuc3R5bGVkID8ge30gOiB7XG4gICAgcGFkZGluZ0JvdHRvbTogc3BhY2luZy5iYXNlVW5pdCAqIDIsXG4gICAgcGFkZGluZ1RvcDogc3BhY2luZy5iYXNlVW5pdCAqIDJcbiAgfTtcbn07XG52YXIgR3JvdXAgPSBmdW5jdGlvbiBHcm91cChwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBjeCA9IHByb3BzLmN4LFxuICAgIGdldFN0eWxlcyA9IHByb3BzLmdldFN0eWxlcyxcbiAgICBnZXRDbGFzc05hbWVzID0gcHJvcHMuZ2V0Q2xhc3NOYW1lcyxcbiAgICBIZWFkaW5nID0gcHJvcHMuSGVhZGluZyxcbiAgICBoZWFkaW5nUHJvcHMgPSBwcm9wcy5oZWFkaW5nUHJvcHMsXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHMsXG4gICAgbGFiZWwgPSBwcm9wcy5sYWJlbCxcbiAgICB0aGVtZSA9IHByb3BzLnRoZW1lLFxuICAgIHNlbGVjdFByb3BzID0gcHJvcHMuc2VsZWN0UHJvcHM7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdncm91cCcsIHtcbiAgICBncm91cDogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIGpzeChIZWFkaW5nLCBfZXh0ZW5kcyh7fSwgaGVhZGluZ1Byb3BzLCB7XG4gICAgc2VsZWN0UHJvcHM6IHNlbGVjdFByb3BzLFxuICAgIHRoZW1lOiB0aGVtZSxcbiAgICBnZXRTdHlsZXM6IGdldFN0eWxlcyxcbiAgICBnZXRDbGFzc05hbWVzOiBnZXRDbGFzc05hbWVzLFxuICAgIGN4OiBjeFxuICB9KSwgbGFiZWwpLCBqc3goXCJkaXZcIiwgbnVsbCwgY2hpbGRyZW4pKTtcbn07XG52YXIgZ3JvdXBIZWFkaW5nQ1NTID0gZnVuY3Rpb24gZ3JvdXBIZWFkaW5nQ1NTKF9yZWYyLCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZjIkdGhlbWUgPSBfcmVmMi50aGVtZSxcbiAgICBjb2xvcnMgPSBfcmVmMiR0aGVtZS5jb2xvcnMsXG4gICAgc3BhY2luZyA9IF9yZWYyJHRoZW1lLnNwYWNpbmc7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ2dyb3VwJyxcbiAgICBjdXJzb3I6ICdkZWZhdWx0JyxcbiAgICBkaXNwbGF5OiAnYmxvY2snXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgY29sb3I6IGNvbG9ycy5uZXV0cmFsNDAsXG4gICAgZm9udFNpemU6ICc3NSUnLFxuICAgIGZvbnRXZWlnaHQ6IDUwMCxcbiAgICBtYXJnaW5Cb3R0b206ICcwLjI1ZW0nLFxuICAgIHBhZGRpbmdMZWZ0OiBzcGFjaW5nLmJhc2VVbml0ICogMyxcbiAgICBwYWRkaW5nUmlnaHQ6IHNwYWNpbmcuYmFzZVVuaXQgKiAzLFxuICAgIHRleHRUcmFuc2Zvcm06ICd1cHBlcmNhc2UnXG4gIH0pO1xufTtcbnZhciBHcm91cEhlYWRpbmcgPSBmdW5jdGlvbiBHcm91cEhlYWRpbmcocHJvcHMpIHtcbiAgdmFyIF9jbGVhbkNvbW1vblByb3BzID0gY2xlYW5Db21tb25Qcm9wcyhwcm9wcyk7XG4gICAgX2NsZWFuQ29tbW9uUHJvcHMuZGF0YTtcbiAgICB2YXIgaW5uZXJQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfY2xlYW5Db21tb25Qcm9wcywgX2V4Y2x1ZGVkJDEpO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnZ3JvdXBIZWFkaW5nJywge1xuICAgICdncm91cC1oZWFkaW5nJzogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcykpO1xufTtcbnZhciBHcm91cCQxID0gR3JvdXA7XG5cbnZhciBfZXhjbHVkZWQgPSBbXCJpbm5lclJlZlwiLCBcImlzRGlzYWJsZWRcIiwgXCJpc0hpZGRlblwiLCBcImlucHV0Q2xhc3NOYW1lXCJdO1xudmFyIGlucHV0Q1NTID0gZnVuY3Rpb24gaW5wdXRDU1MoX3JlZiwgdW5zdHlsZWQpIHtcbiAgdmFyIGlzRGlzYWJsZWQgPSBfcmVmLmlzRGlzYWJsZWQsXG4gICAgdmFsdWUgPSBfcmVmLnZhbHVlLFxuICAgIF9yZWYkdGhlbWUgPSBfcmVmLnRoZW1lLFxuICAgIHNwYWNpbmcgPSBfcmVmJHRoZW1lLnNwYWNpbmcsXG4gICAgY29sb3JzID0gX3JlZiR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgIHZpc2liaWxpdHk6IGlzRGlzYWJsZWQgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJyxcbiAgICAvLyBmb3JjZSBjc3MgdG8gcmVjb21wdXRlIHdoZW4gdmFsdWUgY2hhbmdlIGR1ZSB0byBAZW1vdGlvbiBidWcuXG4gICAgLy8gV2UgY2FuIHJlbW92ZSBpdCB3aGVuZXZlciB0aGUgYnVnIGlzIGZpeGVkLlxuICAgIHRyYW5zZm9ybTogdmFsdWUgPyAndHJhbnNsYXRlWigwKScgOiAnJ1xuICB9LCBjb250YWluZXJTdHlsZSksIHVuc3R5bGVkID8ge30gOiB7XG4gICAgbWFyZ2luOiBzcGFjaW5nLmJhc2VVbml0IC8gMixcbiAgICBwYWRkaW5nQm90dG9tOiBzcGFjaW5nLmJhc2VVbml0IC8gMixcbiAgICBwYWRkaW5nVG9wOiBzcGFjaW5nLmJhc2VVbml0IC8gMixcbiAgICBjb2xvcjogY29sb3JzLm5ldXRyYWw4MFxuICB9KTtcbn07XG52YXIgc3BhY2luZ1N0eWxlID0ge1xuICBncmlkQXJlYTogJzEgLyAyJyxcbiAgZm9udDogJ2luaGVyaXQnLFxuICBtaW5XaWR0aDogJzJweCcsXG4gIGJvcmRlcjogMCxcbiAgbWFyZ2luOiAwLFxuICBvdXRsaW5lOiAwLFxuICBwYWRkaW5nOiAwXG59O1xudmFyIGNvbnRhaW5lclN0eWxlID0ge1xuICBmbGV4OiAnMSAxIGF1dG8nLFxuICBkaXNwbGF5OiAnaW5saW5lLWdyaWQnLFxuICBncmlkQXJlYTogJzEgLyAxIC8gMiAvIDMnLFxuICBncmlkVGVtcGxhdGVDb2x1bW5zOiAnMCBtaW4tY29udGVudCcsXG4gICcmOmFmdGVyJzogX29iamVjdFNwcmVhZCh7XG4gICAgY29udGVudDogJ2F0dHIoZGF0YS12YWx1ZSkgXCIgXCInLFxuICAgIHZpc2liaWxpdHk6ICdoaWRkZW4nLFxuICAgIHdoaXRlU3BhY2U6ICdwcmUnXG4gIH0sIHNwYWNpbmdTdHlsZSlcbn07XG52YXIgaW5wdXRTdHlsZSA9IGZ1bmN0aW9uIGlucHV0U3R5bGUoaXNIaWRkZW4pIHtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnaW5wdXQnLFxuICAgIGNvbG9yOiAnaW5oZXJpdCcsXG4gICAgYmFja2dyb3VuZDogMCxcbiAgICBvcGFjaXR5OiBpc0hpZGRlbiA/IDAgOiAxLFxuICAgIHdpZHRoOiAnMTAwJSdcbiAgfSwgc3BhY2luZ1N0eWxlKTtcbn07XG52YXIgSW5wdXQgPSBmdW5jdGlvbiBJbnB1dChwcm9wcykge1xuICB2YXIgY3ggPSBwcm9wcy5jeCxcbiAgICB2YWx1ZSA9IHByb3BzLnZhbHVlO1xuICB2YXIgX2NsZWFuQ29tbW9uUHJvcHMgPSBjbGVhbkNvbW1vblByb3BzKHByb3BzKSxcbiAgICBpbm5lclJlZiA9IF9jbGVhbkNvbW1vblByb3BzLmlubmVyUmVmLFxuICAgIGlzRGlzYWJsZWQgPSBfY2xlYW5Db21tb25Qcm9wcy5pc0Rpc2FibGVkLFxuICAgIGlzSGlkZGVuID0gX2NsZWFuQ29tbW9uUHJvcHMuaXNIaWRkZW4sXG4gICAgaW5wdXRDbGFzc05hbWUgPSBfY2xlYW5Db21tb25Qcm9wcy5pbnB1dENsYXNzTmFtZSxcbiAgICBpbm5lclByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9jbGVhbkNvbW1vblByb3BzLCBfZXhjbHVkZWQpO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnaW5wdXQnLCB7XG4gICAgJ2lucHV0LWNvbnRhaW5lcic6IHRydWVcbiAgfSksIHtcbiAgICBcImRhdGEtdmFsdWVcIjogdmFsdWUgfHwgJydcbiAgfSksIGpzeChcImlucHV0XCIsIF9leHRlbmRzKHtcbiAgICBjbGFzc05hbWU6IGN4KHtcbiAgICAgIGlucHV0OiB0cnVlXG4gICAgfSwgaW5wdXRDbGFzc05hbWUpLFxuICAgIHJlZjogaW5uZXJSZWYsXG4gICAgc3R5bGU6IGlucHV0U3R5bGUoaXNIaWRkZW4pLFxuICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkXG4gIH0sIGlubmVyUHJvcHMpKSk7XG59O1xudmFyIElucHV0JDEgPSBJbnB1dDtcblxudmFyIG11bHRpVmFsdWVDU1MgPSBmdW5jdGlvbiBtdWx0aVZhbHVlQ1NTKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBfcmVmJHRoZW1lID0gX3JlZi50aGVtZSxcbiAgICBzcGFjaW5nID0gX3JlZiR0aGVtZS5zcGFjaW5nLFxuICAgIGJvcmRlclJhZGl1cyA9IF9yZWYkdGhlbWUuYm9yZGVyUmFkaXVzLFxuICAgIGNvbG9ycyA9IF9yZWYkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdtdWx0aVZhbHVlJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgbWluV2lkdGg6IDBcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9ycy5uZXV0cmFsMTAsXG4gICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMgLyAyLFxuICAgIG1hcmdpbjogc3BhY2luZy5iYXNlVW5pdCAvIDJcbiAgfSk7XG59O1xudmFyIG11bHRpVmFsdWVMYWJlbENTUyA9IGZ1bmN0aW9uIG11bHRpVmFsdWVMYWJlbENTUyhfcmVmMiwgdW5zdHlsZWQpIHtcbiAgdmFyIF9yZWYyJHRoZW1lID0gX3JlZjIudGhlbWUsXG4gICAgYm9yZGVyUmFkaXVzID0gX3JlZjIkdGhlbWUuYm9yZGVyUmFkaXVzLFxuICAgIGNvbG9ycyA9IF9yZWYyJHRoZW1lLmNvbG9ycyxcbiAgICBjcm9wV2l0aEVsbGlwc2lzID0gX3JlZjIuY3JvcFdpdGhFbGxpcHNpcztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICB0ZXh0T3ZlcmZsb3c6IGNyb3BXaXRoRWxsaXBzaXMgfHwgY3JvcFdpdGhFbGxpcHNpcyA9PT0gdW5kZWZpbmVkID8gJ2VsbGlwc2lzJyA6IHVuZGVmaW5lZCxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzIC8gMixcbiAgICBjb2xvcjogY29sb3JzLm5ldXRyYWw4MCxcbiAgICBmb250U2l6ZTogJzg1JScsXG4gICAgcGFkZGluZzogMyxcbiAgICBwYWRkaW5nTGVmdDogNlxuICB9KTtcbn07XG52YXIgbXVsdGlWYWx1ZVJlbW92ZUNTUyA9IGZ1bmN0aW9uIG11bHRpVmFsdWVSZW1vdmVDU1MoX3JlZjMsIHVuc3R5bGVkKSB7XG4gIHZhciBfcmVmMyR0aGVtZSA9IF9yZWYzLnRoZW1lLFxuICAgIHNwYWNpbmcgPSBfcmVmMyR0aGVtZS5zcGFjaW5nLFxuICAgIGJvcmRlclJhZGl1cyA9IF9yZWYzJHRoZW1lLmJvcmRlclJhZGl1cyxcbiAgICBjb2xvcnMgPSBfcmVmMyR0aGVtZS5jb2xvcnMsXG4gICAgaXNGb2N1c2VkID0gX3JlZjMuaXNGb2N1c2VkO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgZGlzcGxheTogJ2ZsZXgnXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMgLyAyLFxuICAgIGJhY2tncm91bmRDb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLmRhbmdlckxpZ2h0IDogdW5kZWZpbmVkLFxuICAgIHBhZGRpbmdMZWZ0OiBzcGFjaW5nLmJhc2VVbml0LFxuICAgIHBhZGRpbmdSaWdodDogc3BhY2luZy5iYXNlVW5pdCxcbiAgICAnOmhvdmVyJzoge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiBjb2xvcnMuZGFuZ2VyTGlnaHQsXG4gICAgICBjb2xvcjogY29sb3JzLmRhbmdlclxuICAgIH1cbiAgfSk7XG59O1xudmFyIE11bHRpVmFsdWVHZW5lcmljID0gZnVuY3Rpb24gTXVsdGlWYWx1ZUdlbmVyaWMoX3JlZjQpIHtcbiAgdmFyIGNoaWxkcmVuID0gX3JlZjQuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IF9yZWY0LmlubmVyUHJvcHM7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgaW5uZXJQcm9wcywgY2hpbGRyZW4pO1xufTtcbnZhciBNdWx0aVZhbHVlQ29udGFpbmVyID0gTXVsdGlWYWx1ZUdlbmVyaWM7XG52YXIgTXVsdGlWYWx1ZUxhYmVsID0gTXVsdGlWYWx1ZUdlbmVyaWM7XG5mdW5jdGlvbiBNdWx0aVZhbHVlUmVtb3ZlKF9yZWY1KSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWY1LmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBfcmVmNS5pbm5lclByb3BzO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHtcbiAgICByb2xlOiBcImJ1dHRvblwiXG4gIH0sIGlubmVyUHJvcHMpLCBjaGlsZHJlbiB8fCBqc3goQ3Jvc3NJY29uLCB7XG4gICAgc2l6ZTogMTRcbiAgfSkpO1xufVxudmFyIE11bHRpVmFsdWUgPSBmdW5jdGlvbiBNdWx0aVZhbHVlKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGNvbXBvbmVudHMgPSBwcm9wcy5jb21wb25lbnRzLFxuICAgIGRhdGEgPSBwcm9wcy5kYXRhLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgIHJlbW92ZVByb3BzID0gcHJvcHMucmVtb3ZlUHJvcHMsXG4gICAgc2VsZWN0UHJvcHMgPSBwcm9wcy5zZWxlY3RQcm9wcztcbiAgdmFyIENvbnRhaW5lciA9IGNvbXBvbmVudHMuQ29udGFpbmVyLFxuICAgIExhYmVsID0gY29tcG9uZW50cy5MYWJlbCxcbiAgICBSZW1vdmUgPSBjb21wb25lbnRzLlJlbW92ZTtcbiAgcmV0dXJuIGpzeChDb250YWluZXIsIHtcbiAgICBkYXRhOiBkYXRhLFxuICAgIGlubmVyUHJvcHM6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ211bHRpVmFsdWUnLCB7XG4gICAgICAnbXVsdGktdmFsdWUnOiB0cnVlLFxuICAgICAgJ211bHRpLXZhbHVlLS1pcy1kaXNhYmxlZCc6IGlzRGlzYWJsZWRcbiAgICB9KSksIGlubmVyUHJvcHMpLFxuICAgIHNlbGVjdFByb3BzOiBzZWxlY3RQcm9wc1xuICB9LCBqc3goTGFiZWwsIHtcbiAgICBkYXRhOiBkYXRhLFxuICAgIGlubmVyUHJvcHM6IF9vYmplY3RTcHJlYWQoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdtdWx0aVZhbHVlTGFiZWwnLCB7XG4gICAgICAnbXVsdGktdmFsdWVfX2xhYmVsJzogdHJ1ZVxuICAgIH0pKSxcbiAgICBzZWxlY3RQcm9wczogc2VsZWN0UHJvcHNcbiAgfSwgY2hpbGRyZW4pLCBqc3goUmVtb3ZlLCB7XG4gICAgZGF0YTogZGF0YSxcbiAgICBpbm5lclByb3BzOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdtdWx0aVZhbHVlUmVtb3ZlJywge1xuICAgICAgJ211bHRpLXZhbHVlX19yZW1vdmUnOiB0cnVlXG4gICAgfSkpLCB7fSwge1xuICAgICAgJ2FyaWEtbGFiZWwnOiBcIlJlbW92ZSBcIi5jb25jYXQoY2hpbGRyZW4gfHwgJ29wdGlvbicpXG4gICAgfSwgcmVtb3ZlUHJvcHMpLFxuICAgIHNlbGVjdFByb3BzOiBzZWxlY3RQcm9wc1xuICB9KSk7XG59O1xudmFyIE11bHRpVmFsdWUkMSA9IE11bHRpVmFsdWU7XG5cbnZhciBvcHRpb25DU1MgPSBmdW5jdGlvbiBvcHRpb25DU1MoX3JlZiwgdW5zdHlsZWQpIHtcbiAgdmFyIGlzRGlzYWJsZWQgPSBfcmVmLmlzRGlzYWJsZWQsXG4gICAgaXNGb2N1c2VkID0gX3JlZi5pc0ZvY3VzZWQsXG4gICAgaXNTZWxlY3RlZCA9IF9yZWYuaXNTZWxlY3RlZCxcbiAgICBfcmVmJHRoZW1lID0gX3JlZi50aGVtZSxcbiAgICBzcGFjaW5nID0gX3JlZiR0aGVtZS5zcGFjaW5nLFxuICAgIGNvbG9ycyA9IF9yZWYkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdvcHRpb24nLFxuICAgIGN1cnNvcjogJ2RlZmF1bHQnLFxuICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgZm9udFNpemU6ICdpbmhlcml0JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHVzZXJTZWxlY3Q6ICdub25lJyxcbiAgICBXZWJraXRUYXBIaWdobGlnaHRDb2xvcjogJ3JnYmEoMCwgMCwgMCwgMCknXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBpc1NlbGVjdGVkID8gY29sb3JzLnByaW1hcnkgOiBpc0ZvY3VzZWQgPyBjb2xvcnMucHJpbWFyeTI1IDogJ3RyYW5zcGFyZW50JyxcbiAgICBjb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsMjAgOiBpc1NlbGVjdGVkID8gY29sb3JzLm5ldXRyYWwwIDogJ2luaGVyaXQnLFxuICAgIHBhZGRpbmc6IFwiXCIuY29uY2F0KHNwYWNpbmcuYmFzZVVuaXQgKiAyLCBcInB4IFwiKS5jb25jYXQoc3BhY2luZy5iYXNlVW5pdCAqIDMsIFwicHhcIiksXG4gICAgLy8gcHJvdmlkZSBzb21lIGFmZm9yZGFuY2Ugb24gdG91Y2ggZGV2aWNlc1xuICAgICc6YWN0aXZlJzoge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAhaXNEaXNhYmxlZCA/IGlzU2VsZWN0ZWQgPyBjb2xvcnMucHJpbWFyeSA6IGNvbG9ycy5wcmltYXJ5NTAgOiB1bmRlZmluZWRcbiAgICB9XG4gIH0pO1xufTtcbnZhciBPcHRpb24gPSBmdW5jdGlvbiBPcHRpb24ocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgaXNGb2N1c2VkID0gcHJvcHMuaXNGb2N1c2VkLFxuICAgIGlzU2VsZWN0ZWQgPSBwcm9wcy5pc1NlbGVjdGVkLFxuICAgIGlubmVyUmVmID0gcHJvcHMuaW5uZXJSZWYsXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdvcHRpb24nLCB7XG4gICAgb3B0aW9uOiB0cnVlLFxuICAgICdvcHRpb24tLWlzLWRpc2FibGVkJzogaXNEaXNhYmxlZCxcbiAgICAnb3B0aW9uLS1pcy1mb2N1c2VkJzogaXNGb2N1c2VkLFxuICAgICdvcHRpb24tLWlzLXNlbGVjdGVkJzogaXNTZWxlY3RlZFxuICB9KSwge1xuICAgIHJlZjogaW5uZXJSZWYsXG4gICAgXCJhcmlhLWRpc2FibGVkXCI6IGlzRGlzYWJsZWRcbiAgfSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG52YXIgT3B0aW9uJDEgPSBPcHRpb247XG5cbnZhciBwbGFjZWhvbGRlckNTUyA9IGZ1bmN0aW9uIHBsYWNlaG9sZGVyQ1NTKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBfcmVmJHRoZW1lID0gX3JlZi50aGVtZSxcbiAgICBzcGFjaW5nID0gX3JlZiR0aGVtZS5zcGFjaW5nLFxuICAgIGNvbG9ycyA9IF9yZWYkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdwbGFjZWhvbGRlcicsXG4gICAgZ3JpZEFyZWE6ICcxIC8gMSAvIDIgLyAzJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBjb2xvcnMubmV1dHJhbDUwLFxuICAgIG1hcmdpbkxlZnQ6IHNwYWNpbmcuYmFzZVVuaXQgLyAyLFxuICAgIG1hcmdpblJpZ2h0OiBzcGFjaW5nLmJhc2VVbml0IC8gMlxuICB9KTtcbn07XG52YXIgUGxhY2Vob2xkZXIgPSBmdW5jdGlvbiBQbGFjZWhvbGRlcihwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcztcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ3BsYWNlaG9sZGVyJywge1xuICAgIHBsYWNlaG9sZGVyOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcbnZhciBQbGFjZWhvbGRlciQxID0gUGxhY2Vob2xkZXI7XG5cbnZhciBjc3MgPSBmdW5jdGlvbiBjc3MoX3JlZiwgdW5zdHlsZWQpIHtcbiAgdmFyIGlzRGlzYWJsZWQgPSBfcmVmLmlzRGlzYWJsZWQsXG4gICAgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZyxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnc2luZ2xlVmFsdWUnLFxuICAgIGdyaWRBcmVhOiAnMSAvIDEgLyAyIC8gMycsXG4gICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgY29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDQwIDogY29sb3JzLm5ldXRyYWw4MCxcbiAgICBtYXJnaW5MZWZ0OiBzcGFjaW5nLmJhc2VVbml0IC8gMixcbiAgICBtYXJnaW5SaWdodDogc3BhY2luZy5iYXNlVW5pdCAvIDJcbiAgfSk7XG59O1xudmFyIFNpbmdsZVZhbHVlID0gZnVuY3Rpb24gU2luZ2xlVmFsdWUocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdzaW5nbGVWYWx1ZScsIHtcbiAgICAnc2luZ2xlLXZhbHVlJzogdHJ1ZSxcbiAgICAnc2luZ2xlLXZhbHVlLS1pcy1kaXNhYmxlZCc6IGlzRGlzYWJsZWRcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xudmFyIFNpbmdsZVZhbHVlJDEgPSBTaW5nbGVWYWx1ZTtcblxudmFyIGNvbXBvbmVudHMgPSB7XG4gIENsZWFySW5kaWNhdG9yOiBDbGVhckluZGljYXRvcixcbiAgQ29udHJvbDogQ29udHJvbCQxLFxuICBEcm9wZG93bkluZGljYXRvcjogRHJvcGRvd25JbmRpY2F0b3IsXG4gIERvd25DaGV2cm9uOiBEb3duQ2hldnJvbixcbiAgQ3Jvc3NJY29uOiBDcm9zc0ljb24sXG4gIEdyb3VwOiBHcm91cCQxLFxuICBHcm91cEhlYWRpbmc6IEdyb3VwSGVhZGluZyxcbiAgSW5kaWNhdG9yc0NvbnRhaW5lcjogSW5kaWNhdG9yc0NvbnRhaW5lcixcbiAgSW5kaWNhdG9yU2VwYXJhdG9yOiBJbmRpY2F0b3JTZXBhcmF0b3IsXG4gIElucHV0OiBJbnB1dCQxLFxuICBMb2FkaW5nSW5kaWNhdG9yOiBMb2FkaW5nSW5kaWNhdG9yLFxuICBNZW51OiBNZW51JDEsXG4gIE1lbnVMaXN0OiBNZW51TGlzdCxcbiAgTWVudVBvcnRhbDogTWVudVBvcnRhbCxcbiAgTG9hZGluZ01lc3NhZ2U6IExvYWRpbmdNZXNzYWdlLFxuICBOb09wdGlvbnNNZXNzYWdlOiBOb09wdGlvbnNNZXNzYWdlLFxuICBNdWx0aVZhbHVlOiBNdWx0aVZhbHVlJDEsXG4gIE11bHRpVmFsdWVDb250YWluZXI6IE11bHRpVmFsdWVDb250YWluZXIsXG4gIE11bHRpVmFsdWVMYWJlbDogTXVsdGlWYWx1ZUxhYmVsLFxuICBNdWx0aVZhbHVlUmVtb3ZlOiBNdWx0aVZhbHVlUmVtb3ZlLFxuICBPcHRpb246IE9wdGlvbiQxLFxuICBQbGFjZWhvbGRlcjogUGxhY2Vob2xkZXIkMSxcbiAgU2VsZWN0Q29udGFpbmVyOiBTZWxlY3RDb250YWluZXIsXG4gIFNpbmdsZVZhbHVlOiBTaW5nbGVWYWx1ZSQxLFxuICBWYWx1ZUNvbnRhaW5lcjogVmFsdWVDb250YWluZXJcbn07XG52YXIgZGVmYXVsdENvbXBvbmVudHMgPSBmdW5jdGlvbiBkZWZhdWx0Q29tcG9uZW50cyhwcm9wcykge1xuICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBjb21wb25lbnRzKSwgcHJvcHMuY29tcG9uZW50cyk7XG59O1xuXG5leHBvcnQgeyBpc01vYmlsZURldmljZSBhcyBBLCBtdWx0aVZhbHVlQXNWYWx1ZSBhcyBCLCBzaW5nbGVWYWx1ZUFzVmFsdWUgYXMgQywgdmFsdWVUZXJuYXJ5IGFzIEQsIGNsYXNzTmFtZXMgYXMgRSwgZGVmYXVsdENvbXBvbmVudHMgYXMgRiwgaXNEb2N1bWVudEVsZW1lbnQgYXMgRywgY2xlYW5WYWx1ZSBhcyBILCBzY3JvbGxJbnRvVmlldyBhcyBJLCBub29wIGFzIEosIG5vdE51bGxpc2ggYXMgSywgaGFuZGxlSW5wdXRDaGFuZ2UgYXMgTCwgTWVudVBsYWNlciBhcyBNLCBjbGVhckluZGljYXRvckNTUyBhcyBhLCBjb250YWluZXJDU1MgYXMgYiwgY29tcG9uZW50cyBhcyBjLCBjc3MkMSBhcyBkLCBkcm9wZG93bkluZGljYXRvckNTUyBhcyBlLCBncm91cEhlYWRpbmdDU1MgYXMgZiwgZ3JvdXBDU1MgYXMgZywgaW5kaWNhdG9yU2VwYXJhdG9yQ1NTIGFzIGgsIGluZGljYXRvcnNDb250YWluZXJDU1MgYXMgaSwgaW5wdXRDU1MgYXMgaiwgbG9hZGluZ01lc3NhZ2VDU1MgYXMgaywgbG9hZGluZ0luZGljYXRvckNTUyBhcyBsLCBtZW51Q1NTIGFzIG0sIG1lbnVMaXN0Q1NTIGFzIG4sIG1lbnVQb3J0YWxDU1MgYXMgbywgbXVsdGlWYWx1ZUNTUyBhcyBwLCBtdWx0aVZhbHVlTGFiZWxDU1MgYXMgcSwgcmVtb3ZlUHJvcHMgYXMgciwgc3VwcG9ydHNQYXNzaXZlRXZlbnRzIGFzIHMsIG11bHRpVmFsdWVSZW1vdmVDU1MgYXMgdCwgbm9PcHRpb25zTWVzc2FnZUNTUyBhcyB1LCBvcHRpb25DU1MgYXMgdiwgcGxhY2Vob2xkZXJDU1MgYXMgdywgY3NzIGFzIHgsIHZhbHVlQ29udGFpbmVyQ1NTIGFzIHksIGlzVG91Y2hDYXBhYmxlIGFzIHogfTtcbiIsInZhciBzYWZlSXNOYU4gPSBOdW1iZXIuaXNOYU4gfHxcbiAgICBmdW5jdGlvbiBwb255ZmlsbCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiB2YWx1ZSAhPT0gdmFsdWU7XG4gICAgfTtcbmZ1bmN0aW9uIGlzRXF1YWwoZmlyc3QsIHNlY29uZCkge1xuICAgIGlmIChmaXJzdCA9PT0gc2Vjb25kKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoc2FmZUlzTmFOKGZpcnN0KSAmJiBzYWZlSXNOYU4oc2Vjb25kKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gYXJlSW5wdXRzRXF1YWwobmV3SW5wdXRzLCBsYXN0SW5wdXRzKSB7XG4gICAgaWYgKG5ld0lucHV0cy5sZW5ndGggIT09IGxhc3RJbnB1dHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXdJbnB1dHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKCFpc0VxdWFsKG5ld0lucHV0c1tpXSwgbGFzdElucHV0c1tpXSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gbWVtb2l6ZU9uZShyZXN1bHRGbiwgaXNFcXVhbCkge1xuICAgIGlmIChpc0VxdWFsID09PSB2b2lkIDApIHsgaXNFcXVhbCA9IGFyZUlucHV0c0VxdWFsOyB9XG4gICAgdmFyIGNhY2hlID0gbnVsbDtcbiAgICBmdW5jdGlvbiBtZW1vaXplZCgpIHtcbiAgICAgICAgdmFyIG5ld0FyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIG5ld0FyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FjaGUgJiYgY2FjaGUubGFzdFRoaXMgPT09IHRoaXMgJiYgaXNFcXVhbChuZXdBcmdzLCBjYWNoZS5sYXN0QXJncykpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZS5sYXN0UmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBsYXN0UmVzdWx0ID0gcmVzdWx0Rm4uYXBwbHkodGhpcywgbmV3QXJncyk7XG4gICAgICAgIGNhY2hlID0ge1xuICAgICAgICAgICAgbGFzdFJlc3VsdDogbGFzdFJlc3VsdCxcbiAgICAgICAgICAgIGxhc3RBcmdzOiBuZXdBcmdzLFxuICAgICAgICAgICAgbGFzdFRoaXM6IHRoaXMsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBsYXN0UmVzdWx0O1xuICAgIH1cbiAgICBtZW1vaXplZC5jbGVhciA9IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgICBjYWNoZSA9IG51bGw7XG4gICAgfTtcbiAgICByZXR1cm4gbWVtb2l6ZWQ7XG59XG5cbmV4cG9ydCB7IG1lbW9pemVPbmUgYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IF9leHRlbmRzIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHMnO1xuaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMic7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrJztcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3MnO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0cyc7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyJztcbmltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Db25zdW1hYmxlQXJyYXknO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlTWVtbywgRnJhZ21lbnQsIHVzZVJlZiwgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgciBhcyByZW1vdmVQcm9wcywgcyBhcyBzdXBwb3J0c1Bhc3NpdmVFdmVudHMsIGEgYXMgY2xlYXJJbmRpY2F0b3JDU1MsIGIgYXMgY29udGFpbmVyQ1NTLCBkIGFzIGNzcyQxLCBlIGFzIGRyb3Bkb3duSW5kaWNhdG9yQ1NTLCBnIGFzIGdyb3VwQ1NTLCBmIGFzIGdyb3VwSGVhZGluZ0NTUywgaSBhcyBpbmRpY2F0b3JzQ29udGFpbmVyQ1NTLCBoIGFzIGluZGljYXRvclNlcGFyYXRvckNTUywgaiBhcyBpbnB1dENTUywgbCBhcyBsb2FkaW5nSW5kaWNhdG9yQ1NTLCBrIGFzIGxvYWRpbmdNZXNzYWdlQ1NTLCBtIGFzIG1lbnVDU1MsIG4gYXMgbWVudUxpc3RDU1MsIG8gYXMgbWVudVBvcnRhbENTUywgcCBhcyBtdWx0aVZhbHVlQ1NTLCBxIGFzIG11bHRpVmFsdWVMYWJlbENTUywgdCBhcyBtdWx0aVZhbHVlUmVtb3ZlQ1NTLCB1IGFzIG5vT3B0aW9uc01lc3NhZ2VDU1MsIHYgYXMgb3B0aW9uQ1NTLCB3IGFzIHBsYWNlaG9sZGVyQ1NTLCB4IGFzIGNzcyQyLCB5IGFzIHZhbHVlQ29udGFpbmVyQ1NTLCB6IGFzIGlzVG91Y2hDYXBhYmxlLCBBIGFzIGlzTW9iaWxlRGV2aWNlLCBCIGFzIG11bHRpVmFsdWVBc1ZhbHVlLCBDIGFzIHNpbmdsZVZhbHVlQXNWYWx1ZSwgRCBhcyB2YWx1ZVRlcm5hcnksIEUgYXMgY2xhc3NOYW1lcywgRiBhcyBkZWZhdWx0Q29tcG9uZW50cywgRyBhcyBpc0RvY3VtZW50RWxlbWVudCwgSCBhcyBjbGVhblZhbHVlLCBJIGFzIHNjcm9sbEludG9WaWV3LCBKIGFzIG5vb3AsIE0gYXMgTWVudVBsYWNlciwgSyBhcyBub3ROdWxsaXNoIH0gZnJvbSAnLi9pbmRleC02NDFlZTViOC5lc20uanMnO1xuaW1wb3J0IHsganN4LCBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgbWVtb2l6ZU9uZSBmcm9tICdtZW1vaXplLW9uZSc7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzJztcblxuZnVuY3Rpb24gX0VNT1RJT05fU1RSSU5HSUZJRURfQ1NTX0VSUk9SX18kMigpIHsgcmV0dXJuIFwiWW91IGhhdmUgdHJpZWQgdG8gc3RyaW5naWZ5IG9iamVjdCByZXR1cm5lZCBmcm9tIGBjc3NgIGZ1bmN0aW9uLiBJdCBpc24ndCBzdXBwb3NlZCB0byBiZSB1c2VkIGRpcmVjdGx5IChlLmcuIGFzIHZhbHVlIG9mIHRoZSBgY2xhc3NOYW1lYCBwcm9wKSwgYnV0IHJhdGhlciBoYW5kZWQgdG8gZW1vdGlvbiBzbyBpdCBjYW4gaGFuZGxlIGl0IChlLmcuIGFzIHZhbHVlIG9mIGBjc3NgIHByb3ApLlwiOyB9XG5cbi8vIEFzc2lzdGl2ZSB0ZXh0IHRvIGRlc2NyaWJlIHZpc3VhbCBlbGVtZW50cy4gSGlkZGVuIGZvciBzaWdodGVkIHVzZXJzLlxudmFyIF9yZWYgPSBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyB7XG4gIG5hbWU6IFwiN3BnMGNqLWExMXlUZXh0XCIsXG4gIHN0eWxlczogXCJsYWJlbDphMTF5VGV4dDt6LWluZGV4Ojk5OTk7Ym9yZGVyOjA7Y2xpcDpyZWN0KDFweCwgMXB4LCAxcHgsIDFweCk7aGVpZ2h0OjFweDt3aWR0aDoxcHg7cG9zaXRpb246YWJzb2x1dGU7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDt3aGl0ZS1zcGFjZTpub3dyYXBcIlxufSA6IHtcbiAgbmFtZTogXCIxZjQzYXZ6LWExMXlUZXh0LUExMXlUZXh0XCIsXG4gIHN0eWxlczogXCJsYWJlbDphMTF5VGV4dDt6LWluZGV4Ojk5OTk7Ym9yZGVyOjA7Y2xpcDpyZWN0KDFweCwgMXB4LCAxcHgsIDFweCk7aGVpZ2h0OjFweDt3aWR0aDoxcHg7cG9zaXRpb246YWJzb2x1dGU7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDt3aGl0ZS1zcGFjZTpub3dyYXA7bGFiZWw6QTExeVRleHQ7XCIsXG4gIG1hcDogXCIvKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJa0V4TVhsVVpYaDBMblJ6ZUNKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGUFNTSXNJbVpwYkdVaU9pSkJNVEY1VkdWNGRDNTBjM2dpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpb2dRR3B6ZUNCcWMzZ2dLaTljYm1sdGNHOXlkQ0I3SUVwVFdDQjlJR1p5YjIwZ0ozSmxZV04wSnp0Y2JtbHRjRzl5ZENCN0lHcHplQ0I5SUdaeWIyMGdKMEJsYlc5MGFXOXVMM0psWVdOMEp6dGNibHh1THk4Z1FYTnphWE4wYVhabElIUmxlSFFnZEc4Z1pHVnpZM0pwWW1VZ2RtbHpkV0ZzSUdWc1pXMWxiblJ6TGlCSWFXUmtaVzRnWm05eUlITnBaMmgwWldRZ2RYTmxjbk11WEc1amIyNXpkQ0JCTVRGNVZHVjRkQ0E5SUNod2NtOXdjem9nU2xOWUxrbHVkSEpwYm5OcFkwVnNaVzFsYm5Seld5ZHpjR0Z1SjEwcElEMCtJQ2hjYmlBZ1BITndZVzVjYmlBZ0lDQmpjM005ZTN0Y2JpQWdJQ0FnSUd4aFltVnNPaUFuWVRFeGVWUmxlSFFuTEZ4dUlDQWdJQ0FnZWtsdVpHVjRPaUE1T1RrNUxGeHVJQ0FnSUNBZ1ltOXlaR1Z5T2lBd0xGeHVJQ0FnSUNBZ1kyeHBjRG9nSjNKbFkzUW9NWEI0TENBeGNIZ3NJREZ3ZUN3Z01YQjRLU2NzWEc0Z0lDQWdJQ0JvWldsbmFIUTZJREVzWEc0Z0lDQWdJQ0IzYVdSMGFEb2dNU3hjYmlBZ0lDQWdJSEJ2YzJsMGFXOXVPaUFuWVdKemIyeDFkR1VuTEZ4dUlDQWdJQ0FnYjNabGNtWnNiM2M2SUNkb2FXUmtaVzRuTEZ4dUlDQWdJQ0FnY0dGa1pHbHVaem9nTUN4Y2JpQWdJQ0FnSUhkb2FYUmxVM0JoWTJVNklDZHViM2R5WVhBbkxGeHVJQ0FnSUgxOVhHNGdJQ0FnZXk0dUxuQnliM0J6ZlZ4dUlDQXZQbHh1S1R0Y2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ1FURXhlVlJsZUhRN1hHNGlYWDA9ICovXCIsXG4gIHRvU3RyaW5nOiBfRU1PVElPTl9TVFJJTkdJRklFRF9DU1NfRVJST1JfXyQyXG59O1xudmFyIEExMXlUZXh0ID0gZnVuY3Rpb24gQTExeVRleHQocHJvcHMpIHtcbiAgcmV0dXJuIGpzeChcInNwYW5cIiwgX2V4dGVuZHMoe1xuICAgIGNzczogX3JlZlxuICB9LCBwcm9wcykpO1xufTtcbnZhciBBMTF5VGV4dCQxID0gQTExeVRleHQ7XG5cbnZhciBkZWZhdWx0QXJpYUxpdmVNZXNzYWdlcyA9IHtcbiAgZ3VpZGFuY2U6IGZ1bmN0aW9uIGd1aWRhbmNlKHByb3BzKSB7XG4gICAgdmFyIGlzU2VhcmNoYWJsZSA9IHByb3BzLmlzU2VhcmNoYWJsZSxcbiAgICAgIGlzTXVsdGkgPSBwcm9wcy5pc011bHRpLFxuICAgICAgdGFiU2VsZWN0c1ZhbHVlID0gcHJvcHMudGFiU2VsZWN0c1ZhbHVlLFxuICAgICAgY29udGV4dCA9IHByb3BzLmNvbnRleHQsXG4gICAgICBpc0luaXRpYWxGb2N1cyA9IHByb3BzLmlzSW5pdGlhbEZvY3VzO1xuICAgIHN3aXRjaCAoY29udGV4dCkge1xuICAgICAgY2FzZSAnbWVudSc6XG4gICAgICAgIHJldHVybiBcIlVzZSBVcCBhbmQgRG93biB0byBjaG9vc2Ugb3B0aW9ucywgcHJlc3MgRW50ZXIgdG8gc2VsZWN0IHRoZSBjdXJyZW50bHkgZm9jdXNlZCBvcHRpb24sIHByZXNzIEVzY2FwZSB0byBleGl0IHRoZSBtZW51XCIuY29uY2F0KHRhYlNlbGVjdHNWYWx1ZSA/ICcsIHByZXNzIFRhYiB0byBzZWxlY3QgdGhlIG9wdGlvbiBhbmQgZXhpdCB0aGUgbWVudScgOiAnJywgXCIuXCIpO1xuICAgICAgY2FzZSAnaW5wdXQnOlxuICAgICAgICByZXR1cm4gaXNJbml0aWFsRm9jdXMgPyBcIlwiLmNvbmNhdChwcm9wc1snYXJpYS1sYWJlbCddIHx8ICdTZWxlY3QnLCBcIiBpcyBmb2N1c2VkIFwiKS5jb25jYXQoaXNTZWFyY2hhYmxlID8gJyx0eXBlIHRvIHJlZmluZSBsaXN0JyA6ICcnLCBcIiwgcHJlc3MgRG93biB0byBvcGVuIHRoZSBtZW51LCBcIikuY29uY2F0KGlzTXVsdGkgPyAnIHByZXNzIGxlZnQgdG8gZm9jdXMgc2VsZWN0ZWQgdmFsdWVzJyA6ICcnKSA6ICcnO1xuICAgICAgY2FzZSAndmFsdWUnOlxuICAgICAgICByZXR1cm4gJ1VzZSBsZWZ0IGFuZCByaWdodCB0byB0b2dnbGUgYmV0d2VlbiBmb2N1c2VkIHZhbHVlcywgcHJlc3MgQmFja3NwYWNlIHRvIHJlbW92ZSB0aGUgY3VycmVudGx5IGZvY3VzZWQgdmFsdWUnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfSxcbiAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHByb3BzKSB7XG4gICAgdmFyIGFjdGlvbiA9IHByb3BzLmFjdGlvbixcbiAgICAgIF9wcm9wcyRsYWJlbCA9IHByb3BzLmxhYmVsLFxuICAgICAgbGFiZWwgPSBfcHJvcHMkbGFiZWwgPT09IHZvaWQgMCA/ICcnIDogX3Byb3BzJGxhYmVsLFxuICAgICAgbGFiZWxzID0gcHJvcHMubGFiZWxzLFxuICAgICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQ7XG4gICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgIGNhc2UgJ2Rlc2VsZWN0LW9wdGlvbic6XG4gICAgICBjYXNlICdwb3AtdmFsdWUnOlxuICAgICAgY2FzZSAncmVtb3ZlLXZhbHVlJzpcbiAgICAgICAgcmV0dXJuIFwib3B0aW9uIFwiLmNvbmNhdChsYWJlbCwgXCIsIGRlc2VsZWN0ZWQuXCIpO1xuICAgICAgY2FzZSAnY2xlYXInOlxuICAgICAgICByZXR1cm4gJ0FsbCBzZWxlY3RlZCBvcHRpb25zIGhhdmUgYmVlbiBjbGVhcmVkLic7XG4gICAgICBjYXNlICdpbml0aWFsLWlucHV0LWZvY3VzJzpcbiAgICAgICAgcmV0dXJuIFwib3B0aW9uXCIuY29uY2F0KGxhYmVscy5sZW5ndGggPiAxID8gJ3MnIDogJycsIFwiIFwiKS5jb25jYXQobGFiZWxzLmpvaW4oJywnKSwgXCIsIHNlbGVjdGVkLlwiKTtcbiAgICAgIGNhc2UgJ3NlbGVjdC1vcHRpb24nOlxuICAgICAgICByZXR1cm4gaXNEaXNhYmxlZCA/IFwib3B0aW9uIFwiLmNvbmNhdChsYWJlbCwgXCIgaXMgZGlzYWJsZWQuIFNlbGVjdCBhbm90aGVyIG9wdGlvbi5cIikgOiBcIm9wdGlvbiBcIi5jb25jYXQobGFiZWwsIFwiLCBzZWxlY3RlZC5cIik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9LFxuICBvbkZvY3VzOiBmdW5jdGlvbiBvbkZvY3VzKHByb3BzKSB7XG4gICAgdmFyIGNvbnRleHQgPSBwcm9wcy5jb250ZXh0LFxuICAgICAgZm9jdXNlZCA9IHByb3BzLmZvY3VzZWQsXG4gICAgICBvcHRpb25zID0gcHJvcHMub3B0aW9ucyxcbiAgICAgIF9wcm9wcyRsYWJlbDIgPSBwcm9wcy5sYWJlbCxcbiAgICAgIGxhYmVsID0gX3Byb3BzJGxhYmVsMiA9PT0gdm9pZCAwID8gJycgOiBfcHJvcHMkbGFiZWwyLFxuICAgICAgc2VsZWN0VmFsdWUgPSBwcm9wcy5zZWxlY3RWYWx1ZSxcbiAgICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgICAgaXNTZWxlY3RlZCA9IHByb3BzLmlzU2VsZWN0ZWQsXG4gICAgICBpc0FwcGxlRGV2aWNlID0gcHJvcHMuaXNBcHBsZURldmljZTtcbiAgICB2YXIgZ2V0QXJyYXlJbmRleCA9IGZ1bmN0aW9uIGdldEFycmF5SW5kZXgoYXJyLCBpdGVtKSB7XG4gICAgICByZXR1cm4gYXJyICYmIGFyci5sZW5ndGggPyBcIlwiLmNvbmNhdChhcnIuaW5kZXhPZihpdGVtKSArIDEsIFwiIG9mIFwiKS5jb25jYXQoYXJyLmxlbmd0aCkgOiAnJztcbiAgICB9O1xuICAgIGlmIChjb250ZXh0ID09PSAndmFsdWUnICYmIHNlbGVjdFZhbHVlKSB7XG4gICAgICByZXR1cm4gXCJ2YWx1ZSBcIi5jb25jYXQobGFiZWwsIFwiIGZvY3VzZWQsIFwiKS5jb25jYXQoZ2V0QXJyYXlJbmRleChzZWxlY3RWYWx1ZSwgZm9jdXNlZCksIFwiLlwiKTtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQgPT09ICdtZW51JyAmJiBpc0FwcGxlRGV2aWNlKSB7XG4gICAgICB2YXIgZGlzYWJsZWQgPSBpc0Rpc2FibGVkID8gJyBkaXNhYmxlZCcgOiAnJztcbiAgICAgIHZhciBzdGF0dXMgPSBcIlwiLmNvbmNhdChpc1NlbGVjdGVkID8gJyBzZWxlY3RlZCcgOiAnJykuY29uY2F0KGRpc2FibGVkKTtcbiAgICAgIHJldHVybiBcIlwiLmNvbmNhdChsYWJlbCkuY29uY2F0KHN0YXR1cywgXCIsIFwiKS5jb25jYXQoZ2V0QXJyYXlJbmRleChvcHRpb25zLCBmb2N1c2VkKSwgXCIuXCIpO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH0sXG4gIG9uRmlsdGVyOiBmdW5jdGlvbiBvbkZpbHRlcihwcm9wcykge1xuICAgIHZhciBpbnB1dFZhbHVlID0gcHJvcHMuaW5wdXRWYWx1ZSxcbiAgICAgIHJlc3VsdHNNZXNzYWdlID0gcHJvcHMucmVzdWx0c01lc3NhZ2U7XG4gICAgcmV0dXJuIFwiXCIuY29uY2F0KHJlc3VsdHNNZXNzYWdlKS5jb25jYXQoaW5wdXRWYWx1ZSA/ICcgZm9yIHNlYXJjaCB0ZXJtICcgKyBpbnB1dFZhbHVlIDogJycsIFwiLlwiKTtcbiAgfVxufTtcblxudmFyIExpdmVSZWdpb24gPSBmdW5jdGlvbiBMaXZlUmVnaW9uKHByb3BzKSB7XG4gIHZhciBhcmlhU2VsZWN0aW9uID0gcHJvcHMuYXJpYVNlbGVjdGlvbixcbiAgICBmb2N1c2VkT3B0aW9uID0gcHJvcHMuZm9jdXNlZE9wdGlvbixcbiAgICBmb2N1c2VkVmFsdWUgPSBwcm9wcy5mb2N1c2VkVmFsdWUsXG4gICAgZm9jdXNhYmxlT3B0aW9ucyA9IHByb3BzLmZvY3VzYWJsZU9wdGlvbnMsXG4gICAgaXNGb2N1c2VkID0gcHJvcHMuaXNGb2N1c2VkLFxuICAgIHNlbGVjdFZhbHVlID0gcHJvcHMuc2VsZWN0VmFsdWUsXG4gICAgc2VsZWN0UHJvcHMgPSBwcm9wcy5zZWxlY3RQcm9wcyxcbiAgICBpZCA9IHByb3BzLmlkLFxuICAgIGlzQXBwbGVEZXZpY2UgPSBwcm9wcy5pc0FwcGxlRGV2aWNlO1xuICB2YXIgYXJpYUxpdmVNZXNzYWdlcyA9IHNlbGVjdFByb3BzLmFyaWFMaXZlTWVzc2FnZXMsXG4gICAgZ2V0T3B0aW9uTGFiZWwgPSBzZWxlY3RQcm9wcy5nZXRPcHRpb25MYWJlbCxcbiAgICBpbnB1dFZhbHVlID0gc2VsZWN0UHJvcHMuaW5wdXRWYWx1ZSxcbiAgICBpc011bHRpID0gc2VsZWN0UHJvcHMuaXNNdWx0aSxcbiAgICBpc09wdGlvbkRpc2FibGVkID0gc2VsZWN0UHJvcHMuaXNPcHRpb25EaXNhYmxlZCxcbiAgICBpc1NlYXJjaGFibGUgPSBzZWxlY3RQcm9wcy5pc1NlYXJjaGFibGUsXG4gICAgbWVudUlzT3BlbiA9IHNlbGVjdFByb3BzLm1lbnVJc09wZW4sXG4gICAgb3B0aW9ucyA9IHNlbGVjdFByb3BzLm9wdGlvbnMsXG4gICAgc2NyZWVuUmVhZGVyU3RhdHVzID0gc2VsZWN0UHJvcHMuc2NyZWVuUmVhZGVyU3RhdHVzLFxuICAgIHRhYlNlbGVjdHNWYWx1ZSA9IHNlbGVjdFByb3BzLnRhYlNlbGVjdHNWYWx1ZSxcbiAgICBpc0xvYWRpbmcgPSBzZWxlY3RQcm9wcy5pc0xvYWRpbmc7XG4gIHZhciBhcmlhTGFiZWwgPSBzZWxlY3RQcm9wc1snYXJpYS1sYWJlbCddO1xuICB2YXIgYXJpYUxpdmUgPSBzZWxlY3RQcm9wc1snYXJpYS1saXZlJ107XG5cbiAgLy8gVXBkYXRlIGFyaWEgbGl2ZSBtZXNzYWdlIGNvbmZpZ3VyYXRpb24gd2hlbiBwcm9wIGNoYW5nZXNcbiAgdmFyIG1lc3NhZ2VzID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZGVmYXVsdEFyaWFMaXZlTWVzc2FnZXMpLCBhcmlhTGl2ZU1lc3NhZ2VzIHx8IHt9KTtcbiAgfSwgW2FyaWFMaXZlTWVzc2FnZXNdKTtcblxuICAvLyBVcGRhdGUgYXJpYSBsaXZlIHNlbGVjdGVkIG9wdGlvbiB3aGVuIHByb3AgY2hhbmdlc1xuICB2YXIgYXJpYVNlbGVjdGVkID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1lc3NhZ2UgPSAnJztcbiAgICBpZiAoYXJpYVNlbGVjdGlvbiAmJiBtZXNzYWdlcy5vbkNoYW5nZSkge1xuICAgICAgdmFyIG9wdGlvbiA9IGFyaWFTZWxlY3Rpb24ub3B0aW9uLFxuICAgICAgICBzZWxlY3RlZE9wdGlvbnMgPSBhcmlhU2VsZWN0aW9uLm9wdGlvbnMsXG4gICAgICAgIHJlbW92ZWRWYWx1ZSA9IGFyaWFTZWxlY3Rpb24ucmVtb3ZlZFZhbHVlLFxuICAgICAgICByZW1vdmVkVmFsdWVzID0gYXJpYVNlbGVjdGlvbi5yZW1vdmVkVmFsdWVzLFxuICAgICAgICB2YWx1ZSA9IGFyaWFTZWxlY3Rpb24udmFsdWU7XG4gICAgICAvLyBzZWxlY3Qtb3B0aW9uIHdoZW4gIWlzTXVsdGkgZG9lcyBub3QgcmV0dXJuIG9wdGlvbiBzbyB3ZSBhc3N1bWUgc2VsZWN0ZWQgb3B0aW9uIGlzIHZhbHVlXG4gICAgICB2YXIgYXNPcHRpb24gPSBmdW5jdGlvbiBhc09wdGlvbih2YWwpIHtcbiAgICAgICAgcmV0dXJuICFBcnJheS5pc0FycmF5KHZhbCkgPyB2YWwgOiBudWxsO1xuICAgICAgfTtcblxuICAgICAgLy8gSWYgdGhlcmUgaXMganVzdCBvbmUgaXRlbSBmcm9tIHRoZSBhY3Rpb24gdGhlbiBnZXQgaXRzIGxhYmVsXG4gICAgICB2YXIgc2VsZWN0ZWQgPSByZW1vdmVkVmFsdWUgfHwgb3B0aW9uIHx8IGFzT3B0aW9uKHZhbHVlKTtcbiAgICAgIHZhciBsYWJlbCA9IHNlbGVjdGVkID8gZ2V0T3B0aW9uTGFiZWwoc2VsZWN0ZWQpIDogJyc7XG5cbiAgICAgIC8vIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBpdGVtcyBmcm9tIHRoZSBhY3Rpb24gdGhlbiByZXR1cm4gYW4gYXJyYXkgb2YgbGFiZWxzXG4gICAgICB2YXIgbXVsdGlTZWxlY3RlZCA9IHNlbGVjdGVkT3B0aW9ucyB8fCByZW1vdmVkVmFsdWVzIHx8IHVuZGVmaW5lZDtcbiAgICAgIHZhciBsYWJlbHMgPSBtdWx0aVNlbGVjdGVkID8gbXVsdGlTZWxlY3RlZC5tYXAoZ2V0T3B0aW9uTGFiZWwpIDogW107XG4gICAgICB2YXIgb25DaGFuZ2VQcm9wcyA9IF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAvLyBtdWx0aVNlbGVjdGVkIGl0ZW1zIGFyZSB1c3VhbGx5IGl0ZW1zIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gc2VsZWN0ZWRcbiAgICAgICAgLy8gb3Igc2V0IGJ5IHRoZSB1c2VyIGFzIGEgZGVmYXVsdCB2YWx1ZSBzbyB3ZSBhc3N1bWUgdGhleSBhcmUgbm90IGRpc2FibGVkXG4gICAgICAgIGlzRGlzYWJsZWQ6IHNlbGVjdGVkICYmIGlzT3B0aW9uRGlzYWJsZWQoc2VsZWN0ZWQsIHNlbGVjdFZhbHVlKSxcbiAgICAgICAgbGFiZWw6IGxhYmVsLFxuICAgICAgICBsYWJlbHM6IGxhYmVsc1xuICAgICAgfSwgYXJpYVNlbGVjdGlvbik7XG4gICAgICBtZXNzYWdlID0gbWVzc2FnZXMub25DaGFuZ2Uob25DaGFuZ2VQcm9wcyk7XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LCBbYXJpYVNlbGVjdGlvbiwgbWVzc2FnZXMsIGlzT3B0aW9uRGlzYWJsZWQsIHNlbGVjdFZhbHVlLCBnZXRPcHRpb25MYWJlbF0pO1xuICB2YXIgYXJpYUZvY3VzZWQgPSB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZm9jdXNNc2cgPSAnJztcbiAgICB2YXIgZm9jdXNlZCA9IGZvY3VzZWRPcHRpb24gfHwgZm9jdXNlZFZhbHVlO1xuICAgIHZhciBpc1NlbGVjdGVkID0gISEoZm9jdXNlZE9wdGlvbiAmJiBzZWxlY3RWYWx1ZSAmJiBzZWxlY3RWYWx1ZS5pbmNsdWRlcyhmb2N1c2VkT3B0aW9uKSk7XG4gICAgaWYgKGZvY3VzZWQgJiYgbWVzc2FnZXMub25Gb2N1cykge1xuICAgICAgdmFyIG9uRm9jdXNQcm9wcyA9IHtcbiAgICAgICAgZm9jdXNlZDogZm9jdXNlZCxcbiAgICAgICAgbGFiZWw6IGdldE9wdGlvbkxhYmVsKGZvY3VzZWQpLFxuICAgICAgICBpc0Rpc2FibGVkOiBpc09wdGlvbkRpc2FibGVkKGZvY3VzZWQsIHNlbGVjdFZhbHVlKSxcbiAgICAgICAgaXNTZWxlY3RlZDogaXNTZWxlY3RlZCxcbiAgICAgICAgb3B0aW9uczogZm9jdXNhYmxlT3B0aW9ucyxcbiAgICAgICAgY29udGV4dDogZm9jdXNlZCA9PT0gZm9jdXNlZE9wdGlvbiA/ICdtZW51JyA6ICd2YWx1ZScsXG4gICAgICAgIHNlbGVjdFZhbHVlOiBzZWxlY3RWYWx1ZSxcbiAgICAgICAgaXNBcHBsZURldmljZTogaXNBcHBsZURldmljZVxuICAgICAgfTtcbiAgICAgIGZvY3VzTXNnID0gbWVzc2FnZXMub25Gb2N1cyhvbkZvY3VzUHJvcHMpO1xuICAgIH1cbiAgICByZXR1cm4gZm9jdXNNc2c7XG4gIH0sIFtmb2N1c2VkT3B0aW9uLCBmb2N1c2VkVmFsdWUsIGdldE9wdGlvbkxhYmVsLCBpc09wdGlvbkRpc2FibGVkLCBtZXNzYWdlcywgZm9jdXNhYmxlT3B0aW9ucywgc2VsZWN0VmFsdWUsIGlzQXBwbGVEZXZpY2VdKTtcbiAgdmFyIGFyaWFSZXN1bHRzID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlc3VsdHNNc2cgPSAnJztcbiAgICBpZiAobWVudUlzT3BlbiAmJiBvcHRpb25zLmxlbmd0aCAmJiAhaXNMb2FkaW5nICYmIG1lc3NhZ2VzLm9uRmlsdGVyKSB7XG4gICAgICB2YXIgcmVzdWx0c01lc3NhZ2UgPSBzY3JlZW5SZWFkZXJTdGF0dXMoe1xuICAgICAgICBjb3VudDogZm9jdXNhYmxlT3B0aW9ucy5sZW5ndGhcbiAgICAgIH0pO1xuICAgICAgcmVzdWx0c01zZyA9IG1lc3NhZ2VzLm9uRmlsdGVyKHtcbiAgICAgICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZSxcbiAgICAgICAgcmVzdWx0c01lc3NhZ2U6IHJlc3VsdHNNZXNzYWdlXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHNNc2c7XG4gIH0sIFtmb2N1c2FibGVPcHRpb25zLCBpbnB1dFZhbHVlLCBtZW51SXNPcGVuLCBtZXNzYWdlcywgb3B0aW9ucywgc2NyZWVuUmVhZGVyU3RhdHVzLCBpc0xvYWRpbmddKTtcbiAgdmFyIGlzSW5pdGlhbEZvY3VzID0gKGFyaWFTZWxlY3Rpb24gPT09IG51bGwgfHwgYXJpYVNlbGVjdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXJpYVNlbGVjdGlvbi5hY3Rpb24pID09PSAnaW5pdGlhbC1pbnB1dC1mb2N1cyc7XG4gIHZhciBhcmlhR3VpZGFuY2UgPSB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZ3VpZGFuY2VNc2cgPSAnJztcbiAgICBpZiAobWVzc2FnZXMuZ3VpZGFuY2UpIHtcbiAgICAgIHZhciBjb250ZXh0ID0gZm9jdXNlZFZhbHVlID8gJ3ZhbHVlJyA6IG1lbnVJc09wZW4gPyAnbWVudScgOiAnaW5wdXQnO1xuICAgICAgZ3VpZGFuY2VNc2cgPSBtZXNzYWdlcy5ndWlkYW5jZSh7XG4gICAgICAgICdhcmlhLWxhYmVsJzogYXJpYUxhYmVsLFxuICAgICAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgICAgICBpc0Rpc2FibGVkOiBmb2N1c2VkT3B0aW9uICYmIGlzT3B0aW9uRGlzYWJsZWQoZm9jdXNlZE9wdGlvbiwgc2VsZWN0VmFsdWUpLFxuICAgICAgICBpc011bHRpOiBpc011bHRpLFxuICAgICAgICBpc1NlYXJjaGFibGU6IGlzU2VhcmNoYWJsZSxcbiAgICAgICAgdGFiU2VsZWN0c1ZhbHVlOiB0YWJTZWxlY3RzVmFsdWUsXG4gICAgICAgIGlzSW5pdGlhbEZvY3VzOiBpc0luaXRpYWxGb2N1c1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBndWlkYW5jZU1zZztcbiAgfSwgW2FyaWFMYWJlbCwgZm9jdXNlZE9wdGlvbiwgZm9jdXNlZFZhbHVlLCBpc011bHRpLCBpc09wdGlvbkRpc2FibGVkLCBpc1NlYXJjaGFibGUsIG1lbnVJc09wZW4sIG1lc3NhZ2VzLCBzZWxlY3RWYWx1ZSwgdGFiU2VsZWN0c1ZhbHVlLCBpc0luaXRpYWxGb2N1c10pO1xuICB2YXIgU2NyZWVuUmVhZGVyVGV4dCA9IGpzeChGcmFnbWVudCwgbnVsbCwganN4KFwic3BhblwiLCB7XG4gICAgaWQ6IFwiYXJpYS1zZWxlY3Rpb25cIlxuICB9LCBhcmlhU2VsZWN0ZWQpLCBqc3goXCJzcGFuXCIsIHtcbiAgICBpZDogXCJhcmlhLWZvY3VzZWRcIlxuICB9LCBhcmlhRm9jdXNlZCksIGpzeChcInNwYW5cIiwge1xuICAgIGlkOiBcImFyaWEtcmVzdWx0c1wiXG4gIH0sIGFyaWFSZXN1bHRzKSwganN4KFwic3BhblwiLCB7XG4gICAgaWQ6IFwiYXJpYS1ndWlkYW5jZVwiXG4gIH0sIGFyaWFHdWlkYW5jZSkpO1xuICByZXR1cm4ganN4KEZyYWdtZW50LCBudWxsLCBqc3goQTExeVRleHQkMSwge1xuICAgIGlkOiBpZFxuICB9LCBpc0luaXRpYWxGb2N1cyAmJiBTY3JlZW5SZWFkZXJUZXh0KSwganN4KEExMXlUZXh0JDEsIHtcbiAgICBcImFyaWEtbGl2ZVwiOiBhcmlhTGl2ZSxcbiAgICBcImFyaWEtYXRvbWljXCI6IFwiZmFsc2VcIixcbiAgICBcImFyaWEtcmVsZXZhbnRcIjogXCJhZGRpdGlvbnMgdGV4dFwiLFxuICAgIHJvbGU6IFwibG9nXCJcbiAgfSwgaXNGb2N1c2VkICYmICFpc0luaXRpYWxGb2N1cyAmJiBTY3JlZW5SZWFkZXJUZXh0KSk7XG59O1xudmFyIExpdmVSZWdpb24kMSA9IExpdmVSZWdpb247XG5cbnZhciBkaWFjcml0aWNzID0gW3tcbiAgYmFzZTogJ0EnLFxuICBsZXR0ZXJzOiBcIkFcXHUyNEI2XFx1RkYyMVxceEMwXFx4QzFcXHhDMlxcdTFFQTZcXHUxRUE0XFx1MUVBQVxcdTFFQThcXHhDM1xcdTAxMDBcXHUwMTAyXFx1MUVCMFxcdTFFQUVcXHUxRUI0XFx1MUVCMlxcdTAyMjZcXHUwMUUwXFx4QzRcXHUwMURFXFx1MUVBMlxceEM1XFx1MDFGQVxcdTAxQ0RcXHUwMjAwXFx1MDIwMlxcdTFFQTBcXHUxRUFDXFx1MUVCNlxcdTFFMDBcXHUwMTA0XFx1MDIzQVxcdTJDNkZcIlxufSwge1xuICBiYXNlOiAnQUEnLFxuICBsZXR0ZXJzOiBcIlxcdUE3MzJcIlxufSwge1xuICBiYXNlOiAnQUUnLFxuICBsZXR0ZXJzOiBcIlxceEM2XFx1MDFGQ1xcdTAxRTJcIlxufSwge1xuICBiYXNlOiAnQU8nLFxuICBsZXR0ZXJzOiBcIlxcdUE3MzRcIlxufSwge1xuICBiYXNlOiAnQVUnLFxuICBsZXR0ZXJzOiBcIlxcdUE3MzZcIlxufSwge1xuICBiYXNlOiAnQVYnLFxuICBsZXR0ZXJzOiBcIlxcdUE3MzhcXHVBNzNBXCJcbn0sIHtcbiAgYmFzZTogJ0FZJyxcbiAgbGV0dGVyczogXCJcXHVBNzNDXCJcbn0sIHtcbiAgYmFzZTogJ0InLFxuICBsZXR0ZXJzOiBcIkJcXHUyNEI3XFx1RkYyMlxcdTFFMDJcXHUxRTA0XFx1MUUwNlxcdTAyNDNcXHUwMTgyXFx1MDE4MVwiXG59LCB7XG4gIGJhc2U6ICdDJyxcbiAgbGV0dGVyczogXCJDXFx1MjRCOFxcdUZGMjNcXHUwMTA2XFx1MDEwOFxcdTAxMEFcXHUwMTBDXFx4QzdcXHUxRTA4XFx1MDE4N1xcdTAyM0JcXHVBNzNFXCJcbn0sIHtcbiAgYmFzZTogJ0QnLFxuICBsZXR0ZXJzOiBcIkRcXHUyNEI5XFx1RkYyNFxcdTFFMEFcXHUwMTBFXFx1MUUwQ1xcdTFFMTBcXHUxRTEyXFx1MUUwRVxcdTAxMTBcXHUwMThCXFx1MDE4QVxcdTAxODlcXHVBNzc5XCJcbn0sIHtcbiAgYmFzZTogJ0RaJyxcbiAgbGV0dGVyczogXCJcXHUwMUYxXFx1MDFDNFwiXG59LCB7XG4gIGJhc2U6ICdEeicsXG4gIGxldHRlcnM6IFwiXFx1MDFGMlxcdTAxQzVcIlxufSwge1xuICBiYXNlOiAnRScsXG4gIGxldHRlcnM6IFwiRVxcdTI0QkFcXHVGRjI1XFx4QzhcXHhDOVxceENBXFx1MUVDMFxcdTFFQkVcXHUxRUM0XFx1MUVDMlxcdTFFQkNcXHUwMTEyXFx1MUUxNFxcdTFFMTZcXHUwMTE0XFx1MDExNlxceENCXFx1MUVCQVxcdTAxMUFcXHUwMjA0XFx1MDIwNlxcdTFFQjhcXHUxRUM2XFx1MDIyOFxcdTFFMUNcXHUwMTE4XFx1MUUxOFxcdTFFMUFcXHUwMTkwXFx1MDE4RVwiXG59LCB7XG4gIGJhc2U6ICdGJyxcbiAgbGV0dGVyczogXCJGXFx1MjRCQlxcdUZGMjZcXHUxRTFFXFx1MDE5MVxcdUE3N0JcIlxufSwge1xuICBiYXNlOiAnRycsXG4gIGxldHRlcnM6IFwiR1xcdTI0QkNcXHVGRjI3XFx1MDFGNFxcdTAxMUNcXHUxRTIwXFx1MDExRVxcdTAxMjBcXHUwMUU2XFx1MDEyMlxcdTAxRTRcXHUwMTkzXFx1QTdBMFxcdUE3N0RcXHVBNzdFXCJcbn0sIHtcbiAgYmFzZTogJ0gnLFxuICBsZXR0ZXJzOiBcIkhcXHUyNEJEXFx1RkYyOFxcdTAxMjRcXHUxRTIyXFx1MUUyNlxcdTAyMUVcXHUxRTI0XFx1MUUyOFxcdTFFMkFcXHUwMTI2XFx1MkM2N1xcdTJDNzVcXHVBNzhEXCJcbn0sIHtcbiAgYmFzZTogJ0knLFxuICBsZXR0ZXJzOiBcIklcXHUyNEJFXFx1RkYyOVxceENDXFx4Q0RcXHhDRVxcdTAxMjhcXHUwMTJBXFx1MDEyQ1xcdTAxMzBcXHhDRlxcdTFFMkVcXHUxRUM4XFx1MDFDRlxcdTAyMDhcXHUwMjBBXFx1MUVDQVxcdTAxMkVcXHUxRTJDXFx1MDE5N1wiXG59LCB7XG4gIGJhc2U6ICdKJyxcbiAgbGV0dGVyczogXCJKXFx1MjRCRlxcdUZGMkFcXHUwMTM0XFx1MDI0OFwiXG59LCB7XG4gIGJhc2U6ICdLJyxcbiAgbGV0dGVyczogXCJLXFx1MjRDMFxcdUZGMkJcXHUxRTMwXFx1MDFFOFxcdTFFMzJcXHUwMTM2XFx1MUUzNFxcdTAxOThcXHUyQzY5XFx1QTc0MFxcdUE3NDJcXHVBNzQ0XFx1QTdBMlwiXG59LCB7XG4gIGJhc2U6ICdMJyxcbiAgbGV0dGVyczogXCJMXFx1MjRDMVxcdUZGMkNcXHUwMTNGXFx1MDEzOVxcdTAxM0RcXHUxRTM2XFx1MUUzOFxcdTAxM0JcXHUxRTNDXFx1MUUzQVxcdTAxNDFcXHUwMjNEXFx1MkM2MlxcdTJDNjBcXHVBNzQ4XFx1QTc0NlxcdUE3ODBcIlxufSwge1xuICBiYXNlOiAnTEonLFxuICBsZXR0ZXJzOiBcIlxcdTAxQzdcIlxufSwge1xuICBiYXNlOiAnTGonLFxuICBsZXR0ZXJzOiBcIlxcdTAxQzhcIlxufSwge1xuICBiYXNlOiAnTScsXG4gIGxldHRlcnM6IFwiTVxcdTI0QzJcXHVGRjJEXFx1MUUzRVxcdTFFNDBcXHUxRTQyXFx1MkM2RVxcdTAxOUNcIlxufSwge1xuICBiYXNlOiAnTicsXG4gIGxldHRlcnM6IFwiTlxcdTI0QzNcXHVGRjJFXFx1MDFGOFxcdTAxNDNcXHhEMVxcdTFFNDRcXHUwMTQ3XFx1MUU0NlxcdTAxNDVcXHUxRTRBXFx1MUU0OFxcdTAyMjBcXHUwMTlEXFx1QTc5MFxcdUE3QTRcIlxufSwge1xuICBiYXNlOiAnTkonLFxuICBsZXR0ZXJzOiBcIlxcdTAxQ0FcIlxufSwge1xuICBiYXNlOiAnTmonLFxuICBsZXR0ZXJzOiBcIlxcdTAxQ0JcIlxufSwge1xuICBiYXNlOiAnTycsXG4gIGxldHRlcnM6IFwiT1xcdTI0QzRcXHVGRjJGXFx4RDJcXHhEM1xceEQ0XFx1MUVEMlxcdTFFRDBcXHUxRUQ2XFx1MUVENFxceEQ1XFx1MUU0Q1xcdTAyMkNcXHUxRTRFXFx1MDE0Q1xcdTFFNTBcXHUxRTUyXFx1MDE0RVxcdTAyMkVcXHUwMjMwXFx4RDZcXHUwMjJBXFx1MUVDRVxcdTAxNTBcXHUwMUQxXFx1MDIwQ1xcdTAyMEVcXHUwMUEwXFx1MUVEQ1xcdTFFREFcXHUxRUUwXFx1MUVERVxcdTFFRTJcXHUxRUNDXFx1MUVEOFxcdTAxRUFcXHUwMUVDXFx4RDhcXHUwMUZFXFx1MDE4NlxcdTAxOUZcXHVBNzRBXFx1QTc0Q1wiXG59LCB7XG4gIGJhc2U6ICdPSScsXG4gIGxldHRlcnM6IFwiXFx1MDFBMlwiXG59LCB7XG4gIGJhc2U6ICdPTycsXG4gIGxldHRlcnM6IFwiXFx1QTc0RVwiXG59LCB7XG4gIGJhc2U6ICdPVScsXG4gIGxldHRlcnM6IFwiXFx1MDIyMlwiXG59LCB7XG4gIGJhc2U6ICdQJyxcbiAgbGV0dGVyczogXCJQXFx1MjRDNVxcdUZGMzBcXHUxRTU0XFx1MUU1NlxcdTAxQTRcXHUyQzYzXFx1QTc1MFxcdUE3NTJcXHVBNzU0XCJcbn0sIHtcbiAgYmFzZTogJ1EnLFxuICBsZXR0ZXJzOiBcIlFcXHUyNEM2XFx1RkYzMVxcdUE3NTZcXHVBNzU4XFx1MDI0QVwiXG59LCB7XG4gIGJhc2U6ICdSJyxcbiAgbGV0dGVyczogXCJSXFx1MjRDN1xcdUZGMzJcXHUwMTU0XFx1MUU1OFxcdTAxNThcXHUwMjEwXFx1MDIxMlxcdTFFNUFcXHUxRTVDXFx1MDE1NlxcdTFFNUVcXHUwMjRDXFx1MkM2NFxcdUE3NUFcXHVBN0E2XFx1QTc4MlwiXG59LCB7XG4gIGJhc2U6ICdTJyxcbiAgbGV0dGVyczogXCJTXFx1MjRDOFxcdUZGMzNcXHUxRTlFXFx1MDE1QVxcdTFFNjRcXHUwMTVDXFx1MUU2MFxcdTAxNjBcXHUxRTY2XFx1MUU2MlxcdTFFNjhcXHUwMjE4XFx1MDE1RVxcdTJDN0VcXHVBN0E4XFx1QTc4NFwiXG59LCB7XG4gIGJhc2U6ICdUJyxcbiAgbGV0dGVyczogXCJUXFx1MjRDOVxcdUZGMzRcXHUxRTZBXFx1MDE2NFxcdTFFNkNcXHUwMjFBXFx1MDE2MlxcdTFFNzBcXHUxRTZFXFx1MDE2NlxcdTAxQUNcXHUwMUFFXFx1MDIzRVxcdUE3ODZcIlxufSwge1xuICBiYXNlOiAnVFonLFxuICBsZXR0ZXJzOiBcIlxcdUE3MjhcIlxufSwge1xuICBiYXNlOiAnVScsXG4gIGxldHRlcnM6IFwiVVxcdTI0Q0FcXHVGRjM1XFx4RDlcXHhEQVxceERCXFx1MDE2OFxcdTFFNzhcXHUwMTZBXFx1MUU3QVxcdTAxNkNcXHhEQ1xcdTAxREJcXHUwMUQ3XFx1MDFENVxcdTAxRDlcXHUxRUU2XFx1MDE2RVxcdTAxNzBcXHUwMUQzXFx1MDIxNFxcdTAyMTZcXHUwMUFGXFx1MUVFQVxcdTFFRThcXHUxRUVFXFx1MUVFQ1xcdTFFRjBcXHUxRUU0XFx1MUU3MlxcdTAxNzJcXHUxRTc2XFx1MUU3NFxcdTAyNDRcIlxufSwge1xuICBiYXNlOiAnVicsXG4gIGxldHRlcnM6IFwiVlxcdTI0Q0JcXHVGRjM2XFx1MUU3Q1xcdTFFN0VcXHUwMUIyXFx1QTc1RVxcdTAyNDVcIlxufSwge1xuICBiYXNlOiAnVlknLFxuICBsZXR0ZXJzOiBcIlxcdUE3NjBcIlxufSwge1xuICBiYXNlOiAnVycsXG4gIGxldHRlcnM6IFwiV1xcdTI0Q0NcXHVGRjM3XFx1MUU4MFxcdTFFODJcXHUwMTc0XFx1MUU4NlxcdTFFODRcXHUxRTg4XFx1MkM3MlwiXG59LCB7XG4gIGJhc2U6ICdYJyxcbiAgbGV0dGVyczogXCJYXFx1MjRDRFxcdUZGMzhcXHUxRThBXFx1MUU4Q1wiXG59LCB7XG4gIGJhc2U6ICdZJyxcbiAgbGV0dGVyczogXCJZXFx1MjRDRVxcdUZGMzlcXHUxRUYyXFx4RERcXHUwMTc2XFx1MUVGOFxcdTAyMzJcXHUxRThFXFx1MDE3OFxcdTFFRjZcXHUxRUY0XFx1MDFCM1xcdTAyNEVcXHUxRUZFXCJcbn0sIHtcbiAgYmFzZTogJ1onLFxuICBsZXR0ZXJzOiBcIlpcXHUyNENGXFx1RkYzQVxcdTAxNzlcXHUxRTkwXFx1MDE3QlxcdTAxN0RcXHUxRTkyXFx1MUU5NFxcdTAxQjVcXHUwMjI0XFx1MkM3RlxcdTJDNkJcXHVBNzYyXCJcbn0sIHtcbiAgYmFzZTogJ2EnLFxuICBsZXR0ZXJzOiBcImFcXHUyNEQwXFx1RkY0MVxcdTFFOUFcXHhFMFxceEUxXFx4RTJcXHUxRUE3XFx1MUVBNVxcdTFFQUJcXHUxRUE5XFx4RTNcXHUwMTAxXFx1MDEwM1xcdTFFQjFcXHUxRUFGXFx1MUVCNVxcdTFFQjNcXHUwMjI3XFx1MDFFMVxceEU0XFx1MDFERlxcdTFFQTNcXHhFNVxcdTAxRkJcXHUwMUNFXFx1MDIwMVxcdTAyMDNcXHUxRUExXFx1MUVBRFxcdTFFQjdcXHUxRTAxXFx1MDEwNVxcdTJDNjVcXHUwMjUwXCJcbn0sIHtcbiAgYmFzZTogJ2FhJyxcbiAgbGV0dGVyczogXCJcXHVBNzMzXCJcbn0sIHtcbiAgYmFzZTogJ2FlJyxcbiAgbGV0dGVyczogXCJcXHhFNlxcdTAxRkRcXHUwMUUzXCJcbn0sIHtcbiAgYmFzZTogJ2FvJyxcbiAgbGV0dGVyczogXCJcXHVBNzM1XCJcbn0sIHtcbiAgYmFzZTogJ2F1JyxcbiAgbGV0dGVyczogXCJcXHVBNzM3XCJcbn0sIHtcbiAgYmFzZTogJ2F2JyxcbiAgbGV0dGVyczogXCJcXHVBNzM5XFx1QTczQlwiXG59LCB7XG4gIGJhc2U6ICdheScsXG4gIGxldHRlcnM6IFwiXFx1QTczRFwiXG59LCB7XG4gIGJhc2U6ICdiJyxcbiAgbGV0dGVyczogXCJiXFx1MjREMVxcdUZGNDJcXHUxRTAzXFx1MUUwNVxcdTFFMDdcXHUwMTgwXFx1MDE4M1xcdTAyNTNcIlxufSwge1xuICBiYXNlOiAnYycsXG4gIGxldHRlcnM6IFwiY1xcdTI0RDJcXHVGRjQzXFx1MDEwN1xcdTAxMDlcXHUwMTBCXFx1MDEwRFxceEU3XFx1MUUwOVxcdTAxODhcXHUwMjNDXFx1QTczRlxcdTIxODRcIlxufSwge1xuICBiYXNlOiAnZCcsXG4gIGxldHRlcnM6IFwiZFxcdTI0RDNcXHVGRjQ0XFx1MUUwQlxcdTAxMEZcXHUxRTBEXFx1MUUxMVxcdTFFMTNcXHUxRTBGXFx1MDExMVxcdTAxOENcXHUwMjU2XFx1MDI1N1xcdUE3N0FcIlxufSwge1xuICBiYXNlOiAnZHonLFxuICBsZXR0ZXJzOiBcIlxcdTAxRjNcXHUwMUM2XCJcbn0sIHtcbiAgYmFzZTogJ2UnLFxuICBsZXR0ZXJzOiBcImVcXHUyNEQ0XFx1RkY0NVxceEU4XFx4RTlcXHhFQVxcdTFFQzFcXHUxRUJGXFx1MUVDNVxcdTFFQzNcXHUxRUJEXFx1MDExM1xcdTFFMTVcXHUxRTE3XFx1MDExNVxcdTAxMTdcXHhFQlxcdTFFQkJcXHUwMTFCXFx1MDIwNVxcdTAyMDdcXHUxRUI5XFx1MUVDN1xcdTAyMjlcXHUxRTFEXFx1MDExOVxcdTFFMTlcXHUxRTFCXFx1MDI0N1xcdTAyNUJcXHUwMUREXCJcbn0sIHtcbiAgYmFzZTogJ2YnLFxuICBsZXR0ZXJzOiBcImZcXHUyNEQ1XFx1RkY0NlxcdTFFMUZcXHUwMTkyXFx1QTc3Q1wiXG59LCB7XG4gIGJhc2U6ICdnJyxcbiAgbGV0dGVyczogXCJnXFx1MjRENlxcdUZGNDdcXHUwMUY1XFx1MDExRFxcdTFFMjFcXHUwMTFGXFx1MDEyMVxcdTAxRTdcXHUwMTIzXFx1MDFFNVxcdTAyNjBcXHVBN0ExXFx1MUQ3OVxcdUE3N0ZcIlxufSwge1xuICBiYXNlOiAnaCcsXG4gIGxldHRlcnM6IFwiaFxcdTI0RDdcXHVGRjQ4XFx1MDEyNVxcdTFFMjNcXHUxRTI3XFx1MDIxRlxcdTFFMjVcXHUxRTI5XFx1MUUyQlxcdTFFOTZcXHUwMTI3XFx1MkM2OFxcdTJDNzZcXHUwMjY1XCJcbn0sIHtcbiAgYmFzZTogJ2h2JyxcbiAgbGV0dGVyczogXCJcXHUwMTk1XCJcbn0sIHtcbiAgYmFzZTogJ2knLFxuICBsZXR0ZXJzOiBcImlcXHUyNEQ4XFx1RkY0OVxceEVDXFx4RURcXHhFRVxcdTAxMjlcXHUwMTJCXFx1MDEyRFxceEVGXFx1MUUyRlxcdTFFQzlcXHUwMUQwXFx1MDIwOVxcdTAyMEJcXHUxRUNCXFx1MDEyRlxcdTFFMkRcXHUwMjY4XFx1MDEzMVwiXG59LCB7XG4gIGJhc2U6ICdqJyxcbiAgbGV0dGVyczogXCJqXFx1MjREOVxcdUZGNEFcXHUwMTM1XFx1MDFGMFxcdTAyNDlcIlxufSwge1xuICBiYXNlOiAnaycsXG4gIGxldHRlcnM6IFwia1xcdTI0REFcXHVGRjRCXFx1MUUzMVxcdTAxRTlcXHUxRTMzXFx1MDEzN1xcdTFFMzVcXHUwMTk5XFx1MkM2QVxcdUE3NDFcXHVBNzQzXFx1QTc0NVxcdUE3QTNcIlxufSwge1xuICBiYXNlOiAnbCcsXG4gIGxldHRlcnM6IFwibFxcdTI0REJcXHVGRjRDXFx1MDE0MFxcdTAxM0FcXHUwMTNFXFx1MUUzN1xcdTFFMzlcXHUwMTNDXFx1MUUzRFxcdTFFM0JcXHUwMTdGXFx1MDE0MlxcdTAxOUFcXHUwMjZCXFx1MkM2MVxcdUE3NDlcXHVBNzgxXFx1QTc0N1wiXG59LCB7XG4gIGJhc2U6ICdsaicsXG4gIGxldHRlcnM6IFwiXFx1MDFDOVwiXG59LCB7XG4gIGJhc2U6ICdtJyxcbiAgbGV0dGVyczogXCJtXFx1MjREQ1xcdUZGNERcXHUxRTNGXFx1MUU0MVxcdTFFNDNcXHUwMjcxXFx1MDI2RlwiXG59LCB7XG4gIGJhc2U6ICduJyxcbiAgbGV0dGVyczogXCJuXFx1MjRERFxcdUZGNEVcXHUwMUY5XFx1MDE0NFxceEYxXFx1MUU0NVxcdTAxNDhcXHUxRTQ3XFx1MDE0NlxcdTFFNEJcXHUxRTQ5XFx1MDE5RVxcdTAyNzJcXHUwMTQ5XFx1QTc5MVxcdUE3QTVcIlxufSwge1xuICBiYXNlOiAnbmonLFxuICBsZXR0ZXJzOiBcIlxcdTAxQ0NcIlxufSwge1xuICBiYXNlOiAnbycsXG4gIGxldHRlcnM6IFwib1xcdTI0REVcXHVGRjRGXFx4RjJcXHhGM1xceEY0XFx1MUVEM1xcdTFFRDFcXHUxRUQ3XFx1MUVENVxceEY1XFx1MUU0RFxcdTAyMkRcXHUxRTRGXFx1MDE0RFxcdTFFNTFcXHUxRTUzXFx1MDE0RlxcdTAyMkZcXHUwMjMxXFx4RjZcXHUwMjJCXFx1MUVDRlxcdTAxNTFcXHUwMUQyXFx1MDIwRFxcdTAyMEZcXHUwMUExXFx1MUVERFxcdTFFREJcXHUxRUUxXFx1MUVERlxcdTFFRTNcXHUxRUNEXFx1MUVEOVxcdTAxRUJcXHUwMUVEXFx4RjhcXHUwMUZGXFx1MDI1NFxcdUE3NEJcXHVBNzREXFx1MDI3NVwiXG59LCB7XG4gIGJhc2U6ICdvaScsXG4gIGxldHRlcnM6IFwiXFx1MDFBM1wiXG59LCB7XG4gIGJhc2U6ICdvdScsXG4gIGxldHRlcnM6IFwiXFx1MDIyM1wiXG59LCB7XG4gIGJhc2U6ICdvbycsXG4gIGxldHRlcnM6IFwiXFx1QTc0RlwiXG59LCB7XG4gIGJhc2U6ICdwJyxcbiAgbGV0dGVyczogXCJwXFx1MjRERlxcdUZGNTBcXHUxRTU1XFx1MUU1N1xcdTAxQTVcXHUxRDdEXFx1QTc1MVxcdUE3NTNcXHVBNzU1XCJcbn0sIHtcbiAgYmFzZTogJ3EnLFxuICBsZXR0ZXJzOiBcInFcXHUyNEUwXFx1RkY1MVxcdTAyNEJcXHVBNzU3XFx1QTc1OVwiXG59LCB7XG4gIGJhc2U6ICdyJyxcbiAgbGV0dGVyczogXCJyXFx1MjRFMVxcdUZGNTJcXHUwMTU1XFx1MUU1OVxcdTAxNTlcXHUwMjExXFx1MDIxM1xcdTFFNUJcXHUxRTVEXFx1MDE1N1xcdTFFNUZcXHUwMjREXFx1MDI3RFxcdUE3NUJcXHVBN0E3XFx1QTc4M1wiXG59LCB7XG4gIGJhc2U6ICdzJyxcbiAgbGV0dGVyczogXCJzXFx1MjRFMlxcdUZGNTNcXHhERlxcdTAxNUJcXHUxRTY1XFx1MDE1RFxcdTFFNjFcXHUwMTYxXFx1MUU2N1xcdTFFNjNcXHUxRTY5XFx1MDIxOVxcdTAxNUZcXHUwMjNGXFx1QTdBOVxcdUE3ODVcXHUxRTlCXCJcbn0sIHtcbiAgYmFzZTogJ3QnLFxuICBsZXR0ZXJzOiBcInRcXHUyNEUzXFx1RkY1NFxcdTFFNkJcXHUxRTk3XFx1MDE2NVxcdTFFNkRcXHUwMjFCXFx1MDE2M1xcdTFFNzFcXHUxRTZGXFx1MDE2N1xcdTAxQURcXHUwMjg4XFx1MkM2NlxcdUE3ODdcIlxufSwge1xuICBiYXNlOiAndHonLFxuICBsZXR0ZXJzOiBcIlxcdUE3MjlcIlxufSwge1xuICBiYXNlOiAndScsXG4gIGxldHRlcnM6IFwidVxcdTI0RTRcXHVGRjU1XFx4RjlcXHhGQVxceEZCXFx1MDE2OVxcdTFFNzlcXHUwMTZCXFx1MUU3QlxcdTAxNkRcXHhGQ1xcdTAxRENcXHUwMUQ4XFx1MDFENlxcdTAxREFcXHUxRUU3XFx1MDE2RlxcdTAxNzFcXHUwMUQ0XFx1MDIxNVxcdTAyMTdcXHUwMUIwXFx1MUVFQlxcdTFFRTlcXHUxRUVGXFx1MUVFRFxcdTFFRjFcXHUxRUU1XFx1MUU3M1xcdTAxNzNcXHUxRTc3XFx1MUU3NVxcdTAyODlcIlxufSwge1xuICBiYXNlOiAndicsXG4gIGxldHRlcnM6IFwidlxcdTI0RTVcXHVGRjU2XFx1MUU3RFxcdTFFN0ZcXHUwMjhCXFx1QTc1RlxcdTAyOENcIlxufSwge1xuICBiYXNlOiAndnknLFxuICBsZXR0ZXJzOiBcIlxcdUE3NjFcIlxufSwge1xuICBiYXNlOiAndycsXG4gIGxldHRlcnM6IFwid1xcdTI0RTZcXHVGRjU3XFx1MUU4MVxcdTFFODNcXHUwMTc1XFx1MUU4N1xcdTFFODVcXHUxRTk4XFx1MUU4OVxcdTJDNzNcIlxufSwge1xuICBiYXNlOiAneCcsXG4gIGxldHRlcnM6IFwieFxcdTI0RTdcXHVGRjU4XFx1MUU4QlxcdTFFOERcIlxufSwge1xuICBiYXNlOiAneScsXG4gIGxldHRlcnM6IFwieVxcdTI0RThcXHVGRjU5XFx1MUVGM1xceEZEXFx1MDE3N1xcdTFFRjlcXHUwMjMzXFx1MUU4RlxceEZGXFx1MUVGN1xcdTFFOTlcXHUxRUY1XFx1MDFCNFxcdTAyNEZcXHUxRUZGXCJcbn0sIHtcbiAgYmFzZTogJ3onLFxuICBsZXR0ZXJzOiBcInpcXHUyNEU5XFx1RkY1QVxcdTAxN0FcXHUxRTkxXFx1MDE3Q1xcdTAxN0VcXHUxRTkzXFx1MUU5NVxcdTAxQjZcXHUwMjI1XFx1MDI0MFxcdTJDNkNcXHVBNzYzXCJcbn1dO1xudmFyIGFueURpYWNyaXRpYyA9IG5ldyBSZWdFeHAoJ1snICsgZGlhY3JpdGljcy5tYXAoZnVuY3Rpb24gKGQpIHtcbiAgcmV0dXJuIGQubGV0dGVycztcbn0pLmpvaW4oJycpICsgJ10nLCAnZycpO1xudmFyIGRpYWNyaXRpY1RvQmFzZSA9IHt9O1xuZm9yICh2YXIgaSA9IDA7IGkgPCBkaWFjcml0aWNzLmxlbmd0aDsgaSsrKSB7XG4gIHZhciBkaWFjcml0aWMgPSBkaWFjcml0aWNzW2ldO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IGRpYWNyaXRpYy5sZXR0ZXJzLmxlbmd0aDsgaisrKSB7XG4gICAgZGlhY3JpdGljVG9CYXNlW2RpYWNyaXRpYy5sZXR0ZXJzW2pdXSA9IGRpYWNyaXRpYy5iYXNlO1xuICB9XG59XG52YXIgc3RyaXBEaWFjcml0aWNzID0gZnVuY3Rpb24gc3RyaXBEaWFjcml0aWNzKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoYW55RGlhY3JpdGljLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICByZXR1cm4gZGlhY3JpdGljVG9CYXNlW21hdGNoXTtcbiAgfSk7XG59O1xuXG52YXIgbWVtb2l6ZWRTdHJpcERpYWNyaXRpY3NGb3JJbnB1dCA9IG1lbW9pemVPbmUoc3RyaXBEaWFjcml0aWNzKTtcbnZhciB0cmltU3RyaW5nID0gZnVuY3Rpb24gdHJpbVN0cmluZyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJyk7XG59O1xudmFyIGRlZmF1bHRTdHJpbmdpZnkgPSBmdW5jdGlvbiBkZWZhdWx0U3RyaW5naWZ5KG9wdGlvbikge1xuICByZXR1cm4gXCJcIi5jb25jYXQob3B0aW9uLmxhYmVsLCBcIiBcIikuY29uY2F0KG9wdGlvbi52YWx1ZSk7XG59O1xudmFyIGNyZWF0ZUZpbHRlciA9IGZ1bmN0aW9uIGNyZWF0ZUZpbHRlcihjb25maWcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChvcHRpb24sIHJhd0lucHV0KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG4gICAgaWYgKG9wdGlvbi5kYXRhLl9faXNOZXdfXykgcmV0dXJuIHRydWU7XG4gICAgdmFyIF9pZ25vcmVDYXNlJGlnbm9yZUFjYyA9IF9vYmplY3RTcHJlYWQoe1xuICAgICAgICBpZ25vcmVDYXNlOiB0cnVlLFxuICAgICAgICBpZ25vcmVBY2NlbnRzOiB0cnVlLFxuICAgICAgICBzdHJpbmdpZnk6IGRlZmF1bHRTdHJpbmdpZnksXG4gICAgICAgIHRyaW06IHRydWUsXG4gICAgICAgIG1hdGNoRnJvbTogJ2FueSdcbiAgICAgIH0sIGNvbmZpZyksXG4gICAgICBpZ25vcmVDYXNlID0gX2lnbm9yZUNhc2UkaWdub3JlQWNjLmlnbm9yZUNhc2UsXG4gICAgICBpZ25vcmVBY2NlbnRzID0gX2lnbm9yZUNhc2UkaWdub3JlQWNjLmlnbm9yZUFjY2VudHMsXG4gICAgICBzdHJpbmdpZnkgPSBfaWdub3JlQ2FzZSRpZ25vcmVBY2Muc3RyaW5naWZ5LFxuICAgICAgdHJpbSA9IF9pZ25vcmVDYXNlJGlnbm9yZUFjYy50cmltLFxuICAgICAgbWF0Y2hGcm9tID0gX2lnbm9yZUNhc2UkaWdub3JlQWNjLm1hdGNoRnJvbTtcbiAgICB2YXIgaW5wdXQgPSB0cmltID8gdHJpbVN0cmluZyhyYXdJbnB1dCkgOiByYXdJbnB1dDtcbiAgICB2YXIgY2FuZGlkYXRlID0gdHJpbSA/IHRyaW1TdHJpbmcoc3RyaW5naWZ5KG9wdGlvbikpIDogc3RyaW5naWZ5KG9wdGlvbik7XG4gICAgaWYgKGlnbm9yZUNhc2UpIHtcbiAgICAgIGlucHV0ID0gaW5wdXQudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBpZiAoaWdub3JlQWNjZW50cykge1xuICAgICAgaW5wdXQgPSBtZW1vaXplZFN0cmlwRGlhY3JpdGljc0ZvcklucHV0KGlucHV0KTtcbiAgICAgIGNhbmRpZGF0ZSA9IHN0cmlwRGlhY3JpdGljcyhjYW5kaWRhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0Y2hGcm9tID09PSAnc3RhcnQnID8gY2FuZGlkYXRlLnN1YnN0cigwLCBpbnB1dC5sZW5ndGgpID09PSBpbnB1dCA6IGNhbmRpZGF0ZS5pbmRleE9mKGlucHV0KSA+IC0xO1xuICB9O1xufTtcblxudmFyIF9leGNsdWRlZCA9IFtcImlubmVyUmVmXCJdO1xuZnVuY3Rpb24gRHVtbXlJbnB1dChfcmVmKSB7XG4gIHZhciBpbm5lclJlZiA9IF9yZWYuaW5uZXJSZWYsXG4gICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgLy8gUmVtb3ZlIGFuaW1hdGlvbiBwcm9wcyBub3QgbWVhbnQgZm9yIEhUTUwgZWxlbWVudHNcbiAgdmFyIGZpbHRlcmVkUHJvcHMgPSByZW1vdmVQcm9wcyhwcm9wcywgJ29uRXhpdGVkJywgJ2luJywgJ2VudGVyJywgJ2V4aXQnLCAnYXBwZWFyJyk7XG4gIHJldHVybiBqc3goXCJpbnB1dFwiLCBfZXh0ZW5kcyh7XG4gICAgcmVmOiBpbm5lclJlZlxuICB9LCBmaWx0ZXJlZFByb3BzLCB7XG4gICAgY3NzOiAvKiNfX1BVUkVfXyovY3NzKHtcbiAgICAgIGxhYmVsOiAnZHVtbXlJbnB1dCcsXG4gICAgICAvLyBnZXQgcmlkIG9mIGFueSBkZWZhdWx0IHN0eWxlc1xuICAgICAgYmFja2dyb3VuZDogMCxcbiAgICAgIGJvcmRlcjogMCxcbiAgICAgIC8vIGltcG9ydGFudCEgdGhpcyBoaWRlcyB0aGUgZmxhc2hpbmcgY3Vyc29yXG4gICAgICBjYXJldENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgZm9udFNpemU6ICdpbmhlcml0JyxcbiAgICAgIGdyaWRBcmVhOiAnMSAvIDEgLyAyIC8gMycsXG4gICAgICBvdXRsaW5lOiAwLFxuICAgICAgcGFkZGluZzogMCxcbiAgICAgIC8vIGltcG9ydGFudCEgd2l0aG91dCBgd2lkdGhgIGJyb3dzZXJzIHdvbid0IGFsbG93IGZvY3VzXG4gICAgICB3aWR0aDogMSxcbiAgICAgIC8vIHJlbW92ZSBjdXJzb3Igb24gZGVza3RvcFxuICAgICAgY29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIG1vYmlsZSB3aGlsc3QgbWFpbnRhaW5pbmcgXCJzY3JvbGwgaW50byB2aWV3XCIgYmVoYXZpb3VyXG4gICAgICBsZWZ0OiAtMTAwLFxuICAgICAgb3BhY2l0eTogMCxcbiAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgdHJhbnNmb3JtOiAnc2NhbGUoLjAxKSdcbiAgICB9LCBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBcIlwiIDogXCI7bGFiZWw6RHVtbXlJbnB1dDtcIiwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gXCJcIiA6IFwiLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWtSMWJXMTVTVzV3ZFhRdWRITjRJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRWGxDVFNJc0ltWnBiR1VpT2lKRWRXMXRlVWx1Y0hWMExuUnplQ0lzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtpQkFhbk40SUdwemVDQXFMMXh1YVcxd2IzSjBJSHNnU2xOWUxDQlNaV1lnZlNCbWNtOXRJQ2R5WldGamRDYzdYRzVwYlhCdmNuUWdleUJxYzNnZ2ZTQm1jbTl0SUNkQVpXMXZkR2x2Ymk5eVpXRmpkQ2M3WEc1cGJYQnZjblFnZXlCeVpXMXZkbVZRY205d2N5QjlJR1p5YjIwZ0p5NHVMM1YwYVd4ekp6dGNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdablZ1WTNScGIyNGdSSFZ0YlhsSmJuQjFkQ2g3WEc0Z0lHbHVibVZ5VW1WbUxGeHVJQ0F1TGk1d2NtOXdjMXh1ZlRvZ1NsTllMa2x1ZEhKcGJuTnBZMFZzWlcxbGJuUnpXeWRwYm5CMWRDZGRJQ1lnZTF4dUlDQnlaV0ZrYjI1c2VTQnBibTVsY2xKbFpqb2dVbVZtUEVoVVRVeEpibkIxZEVWc1pXMWxiblErTzF4dWZTa2dlMXh1SUNBdkx5QlNaVzF2ZG1VZ1lXNXBiV0YwYVc5dUlIQnliM0J6SUc1dmRDQnRaV0Z1ZENCbWIzSWdTRlJOVENCbGJHVnRaVzUwYzF4dUlDQmpiMjV6ZENCbWFXeDBaWEpsWkZCeWIzQnpJRDBnY21WdGIzWmxVSEp2Y0hNb1hHNGdJQ0FnY0hKdmNITXNYRzRnSUNBZ0oyOXVSWGhwZEdWa0p5eGNiaUFnSUNBbmFXNG5MRnh1SUNBZ0lDZGxiblJsY2ljc1hHNGdJQ0FnSjJWNGFYUW5MRnh1SUNBZ0lDZGhjSEJsWVhJblhHNGdJQ2s3WEc1Y2JpQWdjbVYwZFhKdUlDaGNiaUFnSUNBOGFXNXdkWFJjYmlBZ0lDQWdJSEpsWmoxN2FXNXVaWEpTWldaOVhHNGdJQ0FnSUNCN0xpNHVabWxzZEdWeVpXUlFjbTl3YzMxY2JpQWdJQ0FnSUdOemN6MTdlMXh1SUNBZ0lDQWdJQ0JzWVdKbGJEb2dKMlIxYlcxNVNXNXdkWFFuTEZ4dUlDQWdJQ0FnSUNBdkx5Qm5aWFFnY21sa0lHOW1JR0Z1ZVNCa1pXWmhkV3gwSUhOMGVXeGxjMXh1SUNBZ0lDQWdJQ0JpWVdOclozSnZkVzVrT2lBd0xGeHVJQ0FnSUNBZ0lDQmliM0prWlhJNklEQXNYRzRnSUNBZ0lDQWdJQzh2SUdsdGNHOXlkR0Z1ZENFZ2RHaHBjeUJvYVdSbGN5QjBhR1VnWm14aGMyaHBibWNnWTNWeWMyOXlYRzRnSUNBZ0lDQWdJR05oY21WMFEyOXNiM0k2SUNkMGNtRnVjM0JoY21WdWRDY3NYRzRnSUNBZ0lDQWdJR1p2Ym5SVGFYcGxPaUFuYVc1b1pYSnBkQ2NzWEc0Z0lDQWdJQ0FnSUdkeWFXUkJjbVZoT2lBbk1TQXZJREVnTHlBeUlDOGdNeWNzWEc0Z0lDQWdJQ0FnSUc5MWRHeHBibVU2SURBc1hHNGdJQ0FnSUNBZ0lIQmhaR1JwYm1jNklEQXNYRzRnSUNBZ0lDQWdJQzh2SUdsdGNHOXlkR0Z1ZENFZ2QybDBhRzkxZENCZ2QybGtkR2hnSUdKeWIzZHpaWEp6SUhkdmJpZDBJR0ZzYkc5M0lHWnZZM1Z6WEc0Z0lDQWdJQ0FnSUhkcFpIUm9PaUF4TEZ4dVhHNGdJQ0FnSUNBZ0lDOHZJSEpsYlc5MlpTQmpkWEp6YjNJZ2IyNGdaR1Z6YTNSdmNGeHVJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ0ozUnlZVzV6Y0dGeVpXNTBKeXhjYmx4dUlDQWdJQ0FnSUNBdkx5QnlaVzF2ZG1VZ1kzVnljMjl5SUc5dUlHMXZZbWxzWlNCM2FHbHNjM1FnYldGcGJuUmhhVzVwYm1jZ1hDSnpZM0p2Ykd3Z2FXNTBieUIyYVdWM1hDSWdZbVZvWVhacGIzVnlYRzRnSUNBZ0lDQWdJR3hsWm5RNklDMHhNREFzWEc0Z0lDQWdJQ0FnSUc5d1lXTnBkSGs2SURBc1hHNGdJQ0FnSUNBZ0lIQnZjMmwwYVc5dU9pQW5jbVZzWVhScGRtVW5MRnh1SUNBZ0lDQWdJQ0IwY21GdWMyWnZjbTA2SUNkelkyRnNaU2d1TURFcEp5eGNiaUFnSUNBZ0lIMTlYRzRnSUNBZ0x6NWNiaUFnS1R0Y2JuMWNiaUpkZlE9PSAqL1wiKVxuICB9KSk7XG59XG5cbnZhciBjYW5jZWxTY3JvbGwgPSBmdW5jdGlvbiBjYW5jZWxTY3JvbGwoZXZlbnQpIHtcbiAgaWYgKGV2ZW50LmNhbmNlbGFibGUpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xufTtcbmZ1bmN0aW9uIHVzZVNjcm9sbENhcHR1cmUoX3JlZikge1xuICB2YXIgaXNFbmFibGVkID0gX3JlZi5pc0VuYWJsZWQsXG4gICAgb25Cb3R0b21BcnJpdmUgPSBfcmVmLm9uQm90dG9tQXJyaXZlLFxuICAgIG9uQm90dG9tTGVhdmUgPSBfcmVmLm9uQm90dG9tTGVhdmUsXG4gICAgb25Ub3BBcnJpdmUgPSBfcmVmLm9uVG9wQXJyaXZlLFxuICAgIG9uVG9wTGVhdmUgPSBfcmVmLm9uVG9wTGVhdmU7XG4gIHZhciBpc0JvdHRvbSA9IHVzZVJlZihmYWxzZSk7XG4gIHZhciBpc1RvcCA9IHVzZVJlZihmYWxzZSk7XG4gIHZhciB0b3VjaFN0YXJ0ID0gdXNlUmVmKDApO1xuICB2YXIgc2Nyb2xsVGFyZ2V0ID0gdXNlUmVmKG51bGwpO1xuICB2YXIgaGFuZGxlRXZlbnREZWx0YSA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldmVudCwgZGVsdGEpIHtcbiAgICBpZiAoc2Nyb2xsVGFyZ2V0LmN1cnJlbnQgPT09IG51bGwpIHJldHVybjtcbiAgICB2YXIgX3Njcm9sbFRhcmdldCRjdXJyZW50ID0gc2Nyb2xsVGFyZ2V0LmN1cnJlbnQsXG4gICAgICBzY3JvbGxUb3AgPSBfc2Nyb2xsVGFyZ2V0JGN1cnJlbnQuc2Nyb2xsVG9wLFxuICAgICAgc2Nyb2xsSGVpZ2h0ID0gX3Njcm9sbFRhcmdldCRjdXJyZW50LnNjcm9sbEhlaWdodCxcbiAgICAgIGNsaWVudEhlaWdodCA9IF9zY3JvbGxUYXJnZXQkY3VycmVudC5jbGllbnRIZWlnaHQ7XG4gICAgdmFyIHRhcmdldCA9IHNjcm9sbFRhcmdldC5jdXJyZW50O1xuICAgIHZhciBpc0RlbHRhUG9zaXRpdmUgPSBkZWx0YSA+IDA7XG4gICAgdmFyIGF2YWlsYWJsZVNjcm9sbCA9IHNjcm9sbEhlaWdodCAtIGNsaWVudEhlaWdodCAtIHNjcm9sbFRvcDtcbiAgICB2YXIgc2hvdWxkQ2FuY2VsU2Nyb2xsID0gZmFsc2U7XG5cbiAgICAvLyByZXNldCBib3R0b20vdG9wIGZsYWdzXG4gICAgaWYgKGF2YWlsYWJsZVNjcm9sbCA+IGRlbHRhICYmIGlzQm90dG9tLmN1cnJlbnQpIHtcbiAgICAgIGlmIChvbkJvdHRvbUxlYXZlKSBvbkJvdHRvbUxlYXZlKGV2ZW50KTtcbiAgICAgIGlzQm90dG9tLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGlzRGVsdGFQb3NpdGl2ZSAmJiBpc1RvcC5jdXJyZW50KSB7XG4gICAgICBpZiAob25Ub3BMZWF2ZSkgb25Ub3BMZWF2ZShldmVudCk7XG4gICAgICBpc1RvcC5jdXJyZW50ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gYm90dG9tIGxpbWl0XG4gICAgaWYgKGlzRGVsdGFQb3NpdGl2ZSAmJiBkZWx0YSA+IGF2YWlsYWJsZVNjcm9sbCkge1xuICAgICAgaWYgKG9uQm90dG9tQXJyaXZlICYmICFpc0JvdHRvbS5jdXJyZW50KSB7XG4gICAgICAgIG9uQm90dG9tQXJyaXZlKGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIHRhcmdldC5zY3JvbGxUb3AgPSBzY3JvbGxIZWlnaHQ7XG4gICAgICBzaG91bGRDYW5jZWxTY3JvbGwgPSB0cnVlO1xuICAgICAgaXNCb3R0b20uY3VycmVudCA9IHRydWU7XG5cbiAgICAgIC8vIHRvcCBsaW1pdFxuICAgIH0gZWxzZSBpZiAoIWlzRGVsdGFQb3NpdGl2ZSAmJiAtZGVsdGEgPiBzY3JvbGxUb3ApIHtcbiAgICAgIGlmIChvblRvcEFycml2ZSAmJiAhaXNUb3AuY3VycmVudCkge1xuICAgICAgICBvblRvcEFycml2ZShldmVudCk7XG4gICAgICB9XG4gICAgICB0YXJnZXQuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHNob3VsZENhbmNlbFNjcm9sbCA9IHRydWU7XG4gICAgICBpc1RvcC5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBjYW5jZWwgc2Nyb2xsXG4gICAgaWYgKHNob3VsZENhbmNlbFNjcm9sbCkge1xuICAgICAgY2FuY2VsU2Nyb2xsKGV2ZW50KTtcbiAgICB9XG4gIH0sIFtvbkJvdHRvbUFycml2ZSwgb25Cb3R0b21MZWF2ZSwgb25Ub3BBcnJpdmUsIG9uVG9wTGVhdmVdKTtcbiAgdmFyIG9uV2hlZWwgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICBoYW5kbGVFdmVudERlbHRhKGV2ZW50LCBldmVudC5kZWx0YVkpO1xuICB9LCBbaGFuZGxlRXZlbnREZWx0YV0pO1xuICB2YXIgb25Ub3VjaFN0YXJ0ID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgLy8gc2V0IHRvdWNoIHN0YXJ0IHNvIHdlIGNhbiBjYWxjdWxhdGUgdG91Y2htb3ZlIGRlbHRhXG4gICAgdG91Y2hTdGFydC5jdXJyZW50ID0gZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WTtcbiAgfSwgW10pO1xuICB2YXIgb25Ub3VjaE1vdmUgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICB2YXIgZGVsdGFZID0gdG91Y2hTdGFydC5jdXJyZW50IC0gZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WTtcbiAgICBoYW5kbGVFdmVudERlbHRhKGV2ZW50LCBkZWx0YVkpO1xuICB9LCBbaGFuZGxlRXZlbnREZWx0YV0pO1xuICB2YXIgc3RhcnRMaXN0ZW5pbmcgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoZWwpIHtcbiAgICAvLyBiYWlsIGVhcmx5IGlmIG5vIGVsZW1lbnQgaXMgYXZhaWxhYmxlIHRvIGF0dGFjaCB0b1xuICAgIGlmICghZWwpIHJldHVybjtcbiAgICB2YXIgbm90UGFzc2l2ZSA9IHN1cHBvcnRzUGFzc2l2ZUV2ZW50cyA/IHtcbiAgICAgIHBhc3NpdmU6IGZhbHNlXG4gICAgfSA6IGZhbHNlO1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgb25XaGVlbCwgbm90UGFzc2l2ZSk7XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIG9uVG91Y2hTdGFydCwgbm90UGFzc2l2ZSk7XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgb25Ub3VjaE1vdmUsIG5vdFBhc3NpdmUpO1xuICB9LCBbb25Ub3VjaE1vdmUsIG9uVG91Y2hTdGFydCwgb25XaGVlbF0pO1xuICB2YXIgc3RvcExpc3RlbmluZyA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChlbCkge1xuICAgIC8vIGJhaWwgZWFybHkgaWYgbm8gZWxlbWVudCBpcyBhdmFpbGFibGUgdG8gZGV0YWNoIGZyb21cbiAgICBpZiAoIWVsKSByZXR1cm47XG4gICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBvbldoZWVsLCBmYWxzZSk7XG4gICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIG9uVG91Y2hTdGFydCwgZmFsc2UpO1xuICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIG9uVG91Y2hNb3ZlLCBmYWxzZSk7XG4gIH0sIFtvblRvdWNoTW92ZSwgb25Ub3VjaFN0YXJ0LCBvbldoZWVsXSk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFpc0VuYWJsZWQpIHJldHVybjtcbiAgICB2YXIgZWxlbWVudCA9IHNjcm9sbFRhcmdldC5jdXJyZW50O1xuICAgIHN0YXJ0TGlzdGVuaW5nKGVsZW1lbnQpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBzdG9wTGlzdGVuaW5nKGVsZW1lbnQpO1xuICAgIH07XG4gIH0sIFtpc0VuYWJsZWQsIHN0YXJ0TGlzdGVuaW5nLCBzdG9wTGlzdGVuaW5nXSk7XG4gIHJldHVybiBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHNjcm9sbFRhcmdldC5jdXJyZW50ID0gZWxlbWVudDtcbiAgfTtcbn1cblxudmFyIFNUWUxFX0tFWVMgPSBbJ2JveFNpemluZycsICdoZWlnaHQnLCAnb3ZlcmZsb3cnLCAncGFkZGluZ1JpZ2h0JywgJ3Bvc2l0aW9uJ107XG52YXIgTE9DS19TVFlMRVMgPSB7XG4gIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAvLyBhY2NvdW50IGZvciBwb3NzaWJsZSBkZWNsYXJhdGlvbiBgd2lkdGg6IDEwMCU7YCBvbiBib2R5XG4gIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIGhlaWdodDogJzEwMCUnXG59O1xuZnVuY3Rpb24gcHJldmVudFRvdWNoTW92ZShlKSB7XG4gIGlmIChlLmNhbmNlbGFibGUpIGUucHJldmVudERlZmF1bHQoKTtcbn1cbmZ1bmN0aW9uIGFsbG93VG91Y2hNb3ZlKGUpIHtcbiAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbn1cbmZ1bmN0aW9uIHByZXZlbnRJbmVydGlhU2Nyb2xsKCkge1xuICB2YXIgdG9wID0gdGhpcy5zY3JvbGxUb3A7XG4gIHZhciB0b3RhbFNjcm9sbCA9IHRoaXMuc2Nyb2xsSGVpZ2h0O1xuICB2YXIgY3VycmVudFNjcm9sbCA9IHRvcCArIHRoaXMub2Zmc2V0SGVpZ2h0O1xuICBpZiAodG9wID09PSAwKSB7XG4gICAgdGhpcy5zY3JvbGxUb3AgPSAxO1xuICB9IGVsc2UgaWYgKGN1cnJlbnRTY3JvbGwgPT09IHRvdGFsU2Nyb2xsKSB7XG4gICAgdGhpcy5zY3JvbGxUb3AgPSB0b3AgLSAxO1xuICB9XG59XG5cbi8vIGBvbnRvdWNoc3RhcnRgIGNoZWNrIHdvcmtzIG9uIG1vc3QgYnJvd3NlcnNcbi8vIGBtYXhUb3VjaFBvaW50c2Agd29ya3Mgb24gSUUxMC8xMSBhbmQgU3VyZmFjZVxuZnVuY3Rpb24gaXNUb3VjaERldmljZSgpIHtcbiAgcmV0dXJuICdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdyB8fCBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHM7XG59XG52YXIgY2FuVXNlRE9NID0gISEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRvY3VtZW50ICYmIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcbnZhciBhY3RpdmVTY3JvbGxMb2NrcyA9IDA7XG52YXIgbGlzdGVuZXJPcHRpb25zID0ge1xuICBjYXB0dXJlOiBmYWxzZSxcbiAgcGFzc2l2ZTogZmFsc2Vcbn07XG5mdW5jdGlvbiB1c2VTY3JvbGxMb2NrKF9yZWYpIHtcbiAgdmFyIGlzRW5hYmxlZCA9IF9yZWYuaXNFbmFibGVkLFxuICAgIF9yZWYkYWNjb3VudEZvclNjcm9sbCA9IF9yZWYuYWNjb3VudEZvclNjcm9sbGJhcnMsXG4gICAgYWNjb3VudEZvclNjcm9sbGJhcnMgPSBfcmVmJGFjY291bnRGb3JTY3JvbGwgPT09IHZvaWQgMCA/IHRydWUgOiBfcmVmJGFjY291bnRGb3JTY3JvbGw7XG4gIHZhciBvcmlnaW5hbFN0eWxlcyA9IHVzZVJlZih7fSk7XG4gIHZhciBzY3JvbGxUYXJnZXQgPSB1c2VSZWYobnVsbCk7XG4gIHZhciBhZGRTY3JvbGxMb2NrID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKHRvdWNoU2Nyb2xsVGFyZ2V0KSB7XG4gICAgaWYgKCFjYW5Vc2VET00pIHJldHVybjtcbiAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuYm9keTtcbiAgICB2YXIgdGFyZ2V0U3R5bGUgPSB0YXJnZXQgJiYgdGFyZ2V0LnN0eWxlO1xuICAgIGlmIChhY2NvdW50Rm9yU2Nyb2xsYmFycykge1xuICAgICAgLy8gc3RvcmUgYW55IHN0eWxlcyBhbHJlYWR5IGFwcGxpZWQgdG8gdGhlIGJvZHlcbiAgICAgIFNUWUxFX0tFWVMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciB2YWwgPSB0YXJnZXRTdHlsZSAmJiB0YXJnZXRTdHlsZVtrZXldO1xuICAgICAgICBvcmlnaW5hbFN0eWxlcy5jdXJyZW50W2tleV0gPSB2YWw7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBhcHBseSB0aGUgbG9jayBzdHlsZXMgYW5kIHBhZGRpbmcgaWYgdGhpcyBpcyB0aGUgZmlyc3Qgc2Nyb2xsIGxvY2tcbiAgICBpZiAoYWNjb3VudEZvclNjcm9sbGJhcnMgJiYgYWN0aXZlU2Nyb2xsTG9ja3MgPCAxKSB7XG4gICAgICB2YXIgY3VycmVudFBhZGRpbmcgPSBwYXJzZUludChvcmlnaW5hbFN0eWxlcy5jdXJyZW50LnBhZGRpbmdSaWdodCwgMTApIHx8IDA7XG4gICAgICB2YXIgY2xpZW50V2lkdGggPSBkb2N1bWVudC5ib2R5ID8gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCA6IDA7XG4gICAgICB2YXIgYWRqdXN0ZWRQYWRkaW5nID0gd2luZG93LmlubmVyV2lkdGggLSBjbGllbnRXaWR0aCArIGN1cnJlbnRQYWRkaW5nIHx8IDA7XG4gICAgICBPYmplY3Qua2V5cyhMT0NLX1NUWUxFUykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciB2YWwgPSBMT0NLX1NUWUxFU1trZXldO1xuICAgICAgICBpZiAodGFyZ2V0U3R5bGUpIHtcbiAgICAgICAgICB0YXJnZXRTdHlsZVtrZXldID0gdmFsO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmICh0YXJnZXRTdHlsZSkge1xuICAgICAgICB0YXJnZXRTdHlsZS5wYWRkaW5nUmlnaHQgPSBcIlwiLmNvbmNhdChhZGp1c3RlZFBhZGRpbmcsIFwicHhcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYWNjb3VudCBmb3IgdG91Y2ggZGV2aWNlc1xuICAgIGlmICh0YXJnZXQgJiYgaXNUb3VjaERldmljZSgpKSB7XG4gICAgICAvLyBNb2JpbGUgU2FmYXJpIGlnbm9yZXMgeyBvdmVyZmxvdzogaGlkZGVuIH0gZGVjbGFyYXRpb24gb24gdGhlIGJvZHkuXG4gICAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgcHJldmVudFRvdWNoTW92ZSwgbGlzdGVuZXJPcHRpb25zKTtcblxuICAgICAgLy8gQWxsb3cgc2Nyb2xsIG9uIHByb3ZpZGVkIHRhcmdldFxuICAgICAgaWYgKHRvdWNoU2Nyb2xsVGFyZ2V0KSB7XG4gICAgICAgIHRvdWNoU2Nyb2xsVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBwcmV2ZW50SW5lcnRpYVNjcm9sbCwgbGlzdGVuZXJPcHRpb25zKTtcbiAgICAgICAgdG91Y2hTY3JvbGxUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgYWxsb3dUb3VjaE1vdmUsIGxpc3RlbmVyT3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaW5jcmVtZW50IGFjdGl2ZSBzY3JvbGwgbG9ja3NcbiAgICBhY3RpdmVTY3JvbGxMb2NrcyArPSAxO1xuICB9LCBbYWNjb3VudEZvclNjcm9sbGJhcnNdKTtcbiAgdmFyIHJlbW92ZVNjcm9sbExvY2sgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAodG91Y2hTY3JvbGxUYXJnZXQpIHtcbiAgICBpZiAoIWNhblVzZURPTSkgcmV0dXJuO1xuICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5ib2R5O1xuICAgIHZhciB0YXJnZXRTdHlsZSA9IHRhcmdldCAmJiB0YXJnZXQuc3R5bGU7XG5cbiAgICAvLyBzYWZlbHkgZGVjcmVtZW50IGFjdGl2ZSBzY3JvbGwgbG9ja3NcbiAgICBhY3RpdmVTY3JvbGxMb2NrcyA9IE1hdGgubWF4KGFjdGl2ZVNjcm9sbExvY2tzIC0gMSwgMCk7XG5cbiAgICAvLyByZWFwcGx5IG9yaWdpbmFsIGJvZHkgc3R5bGVzLCBpZiBhbnlcbiAgICBpZiAoYWNjb3VudEZvclNjcm9sbGJhcnMgJiYgYWN0aXZlU2Nyb2xsTG9ja3MgPCAxKSB7XG4gICAgICBTVFlMRV9LRVlTLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsID0gb3JpZ2luYWxTdHlsZXMuY3VycmVudFtrZXldO1xuICAgICAgICBpZiAodGFyZ2V0U3R5bGUpIHtcbiAgICAgICAgICB0YXJnZXRTdHlsZVtrZXldID0gdmFsO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyByZW1vdmUgdG91Y2ggbGlzdGVuZXJzXG4gICAgaWYgKHRhcmdldCAmJiBpc1RvdWNoRGV2aWNlKCkpIHtcbiAgICAgIHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBwcmV2ZW50VG91Y2hNb3ZlLCBsaXN0ZW5lck9wdGlvbnMpO1xuICAgICAgaWYgKHRvdWNoU2Nyb2xsVGFyZ2V0KSB7XG4gICAgICAgIHRvdWNoU2Nyb2xsVGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBwcmV2ZW50SW5lcnRpYVNjcm9sbCwgbGlzdGVuZXJPcHRpb25zKTtcbiAgICAgICAgdG91Y2hTY3JvbGxUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgYWxsb3dUb3VjaE1vdmUsIGxpc3RlbmVyT3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbYWNjb3VudEZvclNjcm9sbGJhcnNdKTtcbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWlzRW5hYmxlZCkgcmV0dXJuO1xuICAgIHZhciBlbGVtZW50ID0gc2Nyb2xsVGFyZ2V0LmN1cnJlbnQ7XG4gICAgYWRkU2Nyb2xsTG9jayhlbGVtZW50KTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmVtb3ZlU2Nyb2xsTG9jayhlbGVtZW50KTtcbiAgICB9O1xuICB9LCBbaXNFbmFibGVkLCBhZGRTY3JvbGxMb2NrLCByZW1vdmVTY3JvbGxMb2NrXSk7XG4gIHJldHVybiBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHNjcm9sbFRhcmdldC5jdXJyZW50ID0gZWxlbWVudDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gX0VNT1RJT05fU1RSSU5HSUZJRURfQ1NTX0VSUk9SX18kMSgpIHsgcmV0dXJuIFwiWW91IGhhdmUgdHJpZWQgdG8gc3RyaW5naWZ5IG9iamVjdCByZXR1cm5lZCBmcm9tIGBjc3NgIGZ1bmN0aW9uLiBJdCBpc24ndCBzdXBwb3NlZCB0byBiZSB1c2VkIGRpcmVjdGx5IChlLmcuIGFzIHZhbHVlIG9mIHRoZSBgY2xhc3NOYW1lYCBwcm9wKSwgYnV0IHJhdGhlciBoYW5kZWQgdG8gZW1vdGlvbiBzbyBpdCBjYW4gaGFuZGxlIGl0IChlLmcuIGFzIHZhbHVlIG9mIGBjc3NgIHByb3ApLlwiOyB9XG52YXIgYmx1clNlbGVjdElucHV0ID0gZnVuY3Rpb24gYmx1clNlbGVjdElucHV0KGV2ZW50KSB7XG4gIHZhciBlbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xuICByZXR1cm4gZWxlbWVudC5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgZWxlbWVudC5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpO1xufTtcbnZhciBfcmVmMiQxID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8ge1xuICBuYW1lOiBcIjFrZmRiMGVcIixcbiAgc3R5bGVzOiBcInBvc2l0aW9uOmZpeGVkO2xlZnQ6MDtib3R0b206MDtyaWdodDowO3RvcDowXCJcbn0gOiB7XG4gIG5hbWU6IFwiYnA4Y3VhLVNjcm9sbE1hbmFnZXJcIixcbiAgc3R5bGVzOiBcInBvc2l0aW9uOmZpeGVkO2xlZnQ6MDtib3R0b206MDtyaWdodDowO3RvcDowO2xhYmVsOlNjcm9sbE1hbmFnZXI7XCIsXG4gIG1hcDogXCIvKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbE5qY205c2JFMWhibUZuWlhJdWRITjRJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVzlFVlNJc0ltWnBiR1VpT2lKVFkzSnZiR3hOWVc1aFoyVnlMblJ6ZUNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLaUJBYW5ONElHcHplQ0FxTDF4dWFXMXdiM0owSUhzZ2FuTjRJSDBnWm5KdmJTQW5RR1Z0YjNScGIyNHZjbVZoWTNRbk8xeHVhVzF3YjNKMElIc2dSbkpoWjIxbGJuUXNJRkpsWVdOMFJXeGxiV1Z1ZEN3Z1VtVm1RMkZzYkdKaFkyc3NJRTF2ZFhObFJYWmxiblFnZlNCbWNtOXRJQ2R5WldGamRDYzdYRzVwYlhCdmNuUWdkWE5sVTJOeWIyeHNRMkZ3ZEhWeVpTQm1jbTl0SUNjdUwzVnpaVk5qY205c2JFTmhjSFIxY21Vbk8xeHVhVzF3YjNKMElIVnpaVk5qY205c2JFeHZZMnNnWm5KdmJTQW5MaTkxYzJWVFkzSnZiR3hNYjJOckp6dGNibHh1YVc1MFpYSm1ZV05sSUZCeWIzQnpJSHRjYmlBZ2NtVmhaRzl1YkhrZ1kyaHBiR1J5Wlc0NklDaHlaV1k2SUZKbFprTmhiR3hpWVdOclBFaFVUVXhGYkdWdFpXNTBQaWtnUFQ0Z1VtVmhZM1JGYkdWdFpXNTBPMXh1SUNCeVpXRmtiMjVzZVNCc2IyTnJSVzVoWW14bFpEb2dZbTl2YkdWaGJqdGNiaUFnY21WaFpHOXViSGtnWTJGd2RIVnlaVVZ1WVdKc1pXUTZJR0p2YjJ4bFlXNDdYRzRnSUhKbFlXUnZibXg1SUc5dVFtOTBkRzl0UVhKeWFYWmxQem9nS0dWMlpXNTBPaUJYYUdWbGJFVjJaVzUwSUh3Z1ZHOTFZMmhGZG1WdWRDa2dQVDRnZG05cFpEdGNiaUFnY21WaFpHOXViSGtnYjI1Q2IzUjBiMjFNWldGMlpUODZJQ2hsZG1WdWREb2dWMmhsWld4RmRtVnVkQ0I4SUZSdmRXTm9SWFpsYm5RcElEMCtJSFp2YVdRN1hHNGdJSEpsWVdSdmJteDVJRzl1Vkc5d1FYSnlhWFpsUHpvZ0tHVjJaVzUwT2lCWGFHVmxiRVYyWlc1MElId2dWRzkxWTJoRmRtVnVkQ2tnUFQ0Z2RtOXBaRHRjYmlBZ2NtVmhaRzl1YkhrZ2IyNVViM0JNWldGMlpUODZJQ2hsZG1WdWREb2dWMmhsWld4RmRtVnVkQ0I4SUZSdmRXTm9SWFpsYm5RcElEMCtJSFp2YVdRN1hHNTlYRzVjYm1OdmJuTjBJR0pzZFhKVFpXeGxZM1JKYm5CMWRDQTlJQ2hsZG1WdWREb2dUVzkxYzJWRmRtVnVkRHhJVkUxTVJHbDJSV3hsYldWdWRENHBJRDArSUh0Y2JpQWdZMjl1YzNRZ1pXeGxiV1Z1ZENBOUlHVjJaVzUwTG5SaGNtZGxkQ0JoY3lCSVZFMU1SR2wyUld4bGJXVnVkRHRjYmlBZ2NtVjBkWEp1SUNoY2JpQWdJQ0JsYkdWdFpXNTBMbTkzYm1WeVJHOWpkVzFsYm5RdVlXTjBhWFpsUld4bGJXVnVkQ0FtSmx4dUlDQWdJQ2hsYkdWdFpXNTBMbTkzYm1WeVJHOWpkVzFsYm5RdVlXTjBhWFpsUld4bGJXVnVkQ0JoY3lCSVZFMU1SV3hsYldWdWRDa3VZbXgxY2lncFhHNGdJQ2s3WEc1OU8xeHVYRzVsZUhCdmNuUWdaR1ZtWVhWc2RDQm1kVzVqZEdsdmJpQlRZM0p2Ykd4TllXNWhaMlZ5S0h0Y2JpQWdZMmhwYkdSeVpXNHNYRzRnSUd4dlkydEZibUZpYkdWa0xGeHVJQ0JqWVhCMGRYSmxSVzVoWW14bFpDQTlJSFJ5ZFdVc1hHNGdJRzl1UW05MGRHOXRRWEp5YVhabExGeHVJQ0J2YmtKdmRIUnZiVXhsWVhabExGeHVJQ0J2YmxSdmNFRnljbWwyWlN4Y2JpQWdiMjVVYjNCTVpXRjJaU3hjYm4wNklGQnliM0J6S1NCN1hHNGdJR052Ym5OMElITmxkRk5qY205c2JFTmhjSFIxY21WVVlYSm5aWFFnUFNCMWMyVlRZM0p2Ykd4RFlYQjBkWEpsS0h0Y2JpQWdJQ0JwYzBWdVlXSnNaV1E2SUdOaGNIUjFjbVZGYm1GaWJHVmtMRnh1SUNBZ0lHOXVRbTkwZEc5dFFYSnlhWFpsTEZ4dUlDQWdJRzl1UW05MGRHOXRUR1ZoZG1Vc1hHNGdJQ0FnYjI1VWIzQkJjbkpwZG1Vc1hHNGdJQ0FnYjI1VWIzQk1aV0YyWlN4Y2JpQWdmU2s3WEc0Z0lHTnZibk4wSUhObGRGTmpjbTlzYkV4dlkydFVZWEpuWlhRZ1BTQjFjMlZUWTNKdmJHeE1iMk5yS0hzZ2FYTkZibUZpYkdWa09pQnNiMk5yUlc1aFlteGxaQ0I5S1R0Y2JseHVJQ0JqYjI1emRDQjBZWEpuWlhSU1pXWTZJRkpsWmtOaGJHeGlZV05yUEVoVVRVeEZiR1Z0Wlc1MFBpQTlJQ2hsYkdWdFpXNTBLU0E5UGlCN1hHNGdJQ0FnYzJWMFUyTnliMnhzUTJGd2RIVnlaVlJoY21kbGRDaGxiR1Z0Wlc1MEtUdGNiaUFnSUNCelpYUlRZM0p2Ykd4TWIyTnJWR0Z5WjJWMEtHVnNaVzFsYm5RcE8xeHVJQ0I5TzF4dVhHNGdJSEpsZEhWeWJpQW9YRzRnSUNBZ1BFWnlZV2R0Wlc1MFBseHVJQ0FnSUNBZ2UyeHZZMnRGYm1GaWJHVmtJQ1ltSUNoY2JpQWdJQ0FnSUNBZ1BHUnBkbHh1SUNBZ0lDQWdJQ0FnSUc5dVEyeHBZMnM5ZTJKc2RYSlRaV3hsWTNSSmJuQjFkSDFjYmlBZ0lDQWdJQ0FnSUNCamMzTTllM3NnY0c5emFYUnBiMjQ2SUNkbWFYaGxaQ2NzSUd4bFpuUTZJREFzSUdKdmRIUnZiVG9nTUN3Z2NtbG5hSFE2SURBc0lIUnZjRG9nTUNCOWZWeHVJQ0FnSUNBZ0lDQXZQbHh1SUNBZ0lDQWdLWDFjYmlBZ0lDQWdJSHRqYUdsc1pISmxiaWgwWVhKblpYUlNaV1lwZlZ4dUlDQWdJRHd2Um5KaFoyMWxiblErWEc0Z0lDazdYRzU5WEc0aVhYMD0gKi9cIixcbiAgdG9TdHJpbmc6IF9FTU9USU9OX1NUUklOR0lGSUVEX0NTU19FUlJPUl9fJDFcbn07XG5mdW5jdGlvbiBTY3JvbGxNYW5hZ2VyKF9yZWYpIHtcbiAgdmFyIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbixcbiAgICBsb2NrRW5hYmxlZCA9IF9yZWYubG9ja0VuYWJsZWQsXG4gICAgX3JlZiRjYXB0dXJlRW5hYmxlZCA9IF9yZWYuY2FwdHVyZUVuYWJsZWQsXG4gICAgY2FwdHVyZUVuYWJsZWQgPSBfcmVmJGNhcHR1cmVFbmFibGVkID09PSB2b2lkIDAgPyB0cnVlIDogX3JlZiRjYXB0dXJlRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZSA9IF9yZWYub25Cb3R0b21BcnJpdmUsXG4gICAgb25Cb3R0b21MZWF2ZSA9IF9yZWYub25Cb3R0b21MZWF2ZSxcbiAgICBvblRvcEFycml2ZSA9IF9yZWYub25Ub3BBcnJpdmUsXG4gICAgb25Ub3BMZWF2ZSA9IF9yZWYub25Ub3BMZWF2ZTtcbiAgdmFyIHNldFNjcm9sbENhcHR1cmVUYXJnZXQgPSB1c2VTY3JvbGxDYXB0dXJlKHtcbiAgICBpc0VuYWJsZWQ6IGNhcHR1cmVFbmFibGVkLFxuICAgIG9uQm90dG9tQXJyaXZlOiBvbkJvdHRvbUFycml2ZSxcbiAgICBvbkJvdHRvbUxlYXZlOiBvbkJvdHRvbUxlYXZlLFxuICAgIG9uVG9wQXJyaXZlOiBvblRvcEFycml2ZSxcbiAgICBvblRvcExlYXZlOiBvblRvcExlYXZlXG4gIH0pO1xuICB2YXIgc2V0U2Nyb2xsTG9ja1RhcmdldCA9IHVzZVNjcm9sbExvY2soe1xuICAgIGlzRW5hYmxlZDogbG9ja0VuYWJsZWRcbiAgfSk7XG4gIHZhciB0YXJnZXRSZWYgPSBmdW5jdGlvbiB0YXJnZXRSZWYoZWxlbWVudCkge1xuICAgIHNldFNjcm9sbENhcHR1cmVUYXJnZXQoZWxlbWVudCk7XG4gICAgc2V0U2Nyb2xsTG9ja1RhcmdldChlbGVtZW50KTtcbiAgfTtcbiAgcmV0dXJuIGpzeChGcmFnbWVudCwgbnVsbCwgbG9ja0VuYWJsZWQgJiYganN4KFwiZGl2XCIsIHtcbiAgICBvbkNsaWNrOiBibHVyU2VsZWN0SW5wdXQsXG4gICAgY3NzOiBfcmVmMiQxXG4gIH0pLCBjaGlsZHJlbih0YXJnZXRSZWYpKTtcbn1cblxuZnVuY3Rpb24gX0VNT1RJT05fU1RSSU5HSUZJRURfQ1NTX0VSUk9SX18oKSB7IHJldHVybiBcIllvdSBoYXZlIHRyaWVkIHRvIHN0cmluZ2lmeSBvYmplY3QgcmV0dXJuZWQgZnJvbSBgY3NzYCBmdW5jdGlvbi4gSXQgaXNuJ3Qgc3VwcG9zZWQgdG8gYmUgdXNlZCBkaXJlY3RseSAoZS5nLiBhcyB2YWx1ZSBvZiB0aGUgYGNsYXNzTmFtZWAgcHJvcCksIGJ1dCByYXRoZXIgaGFuZGVkIHRvIGVtb3Rpb24gc28gaXQgY2FuIGhhbmRsZSBpdCAoZS5nLiBhcyB2YWx1ZSBvZiBgY3NzYCBwcm9wKS5cIjsgfVxudmFyIF9yZWYyID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8ge1xuICBuYW1lOiBcIjFhMHJvNG4tcmVxdWlyZWRJbnB1dFwiLFxuICBzdHlsZXM6IFwibGFiZWw6cmVxdWlyZWRJbnB1dDtvcGFjaXR5OjA7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt3aWR0aDoxMDAlXCJcbn0gOiB7XG4gIG5hbWU6IFwiNWtreGIyLXJlcXVpcmVkSW5wdXQtUmVxdWlyZWRJbnB1dFwiLFxuICBzdHlsZXM6IFwibGFiZWw6cmVxdWlyZWRJbnB1dDtvcGFjaXR5OjA7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt3aWR0aDoxMDAlO2xhYmVsOlJlcXVpcmVkSW5wdXQ7XCIsXG4gIG1hcDogXCIvKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbEpsY1hWcGNtVmtTVzV3ZFhRdWRITjRJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRV05KSWl3aVptbHNaU0k2SWxKbGNYVnBjbVZrU1c1d2RYUXVkSE40SWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FJRUJxYzNnZ2FuTjRJQ292WEc1cGJYQnZjblFnZXlCR2IyTjFjMFYyWlc1MFNHRnVaR3hsY2l3Z1JuVnVZM1JwYjI1RGIyMXdiMjVsYm5RZ2ZTQm1jbTl0SUNkeVpXRmpkQ2M3WEc1cGJYQnZjblFnZXlCcWMzZ2dmU0JtY205dElDZEFaVzF2ZEdsdmJpOXlaV0ZqZENjN1hHNWNibU52Ym5OMElGSmxjWFZwY21Wa1NXNXdkWFE2SUVaMWJtTjBhVzl1UTI5dGNHOXVaVzUwUEh0Y2JpQWdjbVZoWkc5dWJIa2dibUZ0WlQ4NklITjBjbWx1Wnp0Y2JpQWdjbVZoWkc5dWJIa2diMjVHYjJOMWN6b2dSbTlqZFhORmRtVnVkRWhoYm1Sc1pYSThTRlJOVEVsdWNIVjBSV3hsYldWdWRENDdYRzU5UGlBOUlDaDdJRzVoYldVc0lHOXVSbTlqZFhNZ2ZTa2dQVDRnS0Z4dUlDQThhVzV3ZFhSY2JpQWdJQ0J5WlhGMWFYSmxaRnh1SUNBZ0lHNWhiV1U5ZTI1aGJXVjlYRzRnSUNBZ2RHRmlTVzVrWlhnOWV5MHhmVnh1SUNBZ0lHRnlhV0V0YUdsa1pHVnVQVndpZEhKMVpWd2lYRzRnSUNBZ2IyNUdiMk4xY3oxN2IyNUdiMk4xYzMxY2JpQWdJQ0JqYzNNOWUzdGNiaUFnSUNBZ0lHeGhZbVZzT2lBbmNtVnhkV2x5WldSSmJuQjFkQ2NzWEc0Z0lDQWdJQ0J2Y0dGamFYUjVPaUF3TEZ4dUlDQWdJQ0FnY0c5cGJuUmxja1YyWlc1MGN6b2dKMjV2Ym1VbkxGeHVJQ0FnSUNBZ2NHOXphWFJwYjI0NklDZGhZbk52YkhWMFpTY3NYRzRnSUNBZ0lDQmliM1IwYjIwNklEQXNYRzRnSUNBZ0lDQnNaV1owT2lBd0xGeHVJQ0FnSUNBZ2NtbG5hSFE2SURBc1hHNGdJQ0FnSUNCM2FXUjBhRG9nSnpFd01DVW5MRnh1SUNBZ0lIMTlYRzRnSUNBZ0x5OGdVSEpsZG1WdWRDQmdVM2RwZEdOb2FXNW5JR1p5YjIwZ2RXNWpiMjUwY205c2JHVmtJSFJ2SUdOdmJuUnliMnhzWldSZ0lHVnljbTl5WEc0Z0lDQWdkbUZzZFdVOVhDSmNJbHh1SUNBZ0lHOXVRMmhoYm1kbFBYc29LU0E5UGlCN2ZYMWNiaUFnTHo1Y2JpazdYRzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJRkpsY1hWcGNtVmtTVzV3ZFhRN1hHNGlYWDA9ICovXCIsXG4gIHRvU3RyaW5nOiBfRU1PVElPTl9TVFJJTkdJRklFRF9DU1NfRVJST1JfX1xufTtcbnZhciBSZXF1aXJlZElucHV0ID0gZnVuY3Rpb24gUmVxdWlyZWRJbnB1dChfcmVmKSB7XG4gIHZhciBuYW1lID0gX3JlZi5uYW1lLFxuICAgIG9uRm9jdXMgPSBfcmVmLm9uRm9jdXM7XG4gIHJldHVybiBqc3goXCJpbnB1dFwiLCB7XG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgbmFtZTogbmFtZSxcbiAgICB0YWJJbmRleDogLTEsXG4gICAgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIixcbiAgICBvbkZvY3VzOiBvbkZvY3VzLFxuICAgIGNzczogX3JlZjJcbiAgICAvLyBQcmV2ZW50IGBTd2l0Y2hpbmcgZnJvbSB1bmNvbnRyb2xsZWQgdG8gY29udHJvbGxlZGAgZXJyb3JcbiAgICAsXG4gICAgdmFsdWU6IFwiXCIsXG4gICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKCkge31cbiAgfSk7XG59O1xudmFyIFJlcXVpcmVkSW5wdXQkMSA9IFJlcXVpcmVkSW5wdXQ7XG5cbi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidXNlci1hZ2VudC1kYXRhLXR5cGVzXCIgLz5cblxuZnVuY3Rpb24gdGVzdFBsYXRmb3JtKHJlKSB7XG4gIHZhciBfd2luZG93JG5hdmlnYXRvciR1c2U7XG4gIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cubmF2aWdhdG9yICE9IG51bGwgPyByZS50ZXN0KCgoX3dpbmRvdyRuYXZpZ2F0b3IkdXNlID0gd2luZG93Lm5hdmlnYXRvclsndXNlckFnZW50RGF0YSddKSA9PT0gbnVsbCB8fCBfd2luZG93JG5hdmlnYXRvciR1c2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF93aW5kb3ckbmF2aWdhdG9yJHVzZS5wbGF0Zm9ybSkgfHwgd2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybSkgOiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGlzSVBob25lKCkge1xuICByZXR1cm4gdGVzdFBsYXRmb3JtKC9eaVBob25lL2kpO1xufVxuZnVuY3Rpb24gaXNNYWMoKSB7XG4gIHJldHVybiB0ZXN0UGxhdGZvcm0oL15NYWMvaSk7XG59XG5mdW5jdGlvbiBpc0lQYWQoKSB7XG4gIHJldHVybiB0ZXN0UGxhdGZvcm0oL15pUGFkL2kpIHx8XG4gIC8vIGlQYWRPUyAxMyBsaWVzIGFuZCBzYXlzIGl0J3MgYSBNYWMsIGJ1dCB3ZSBjYW4gZGlzdGluZ3Vpc2ggYnkgZGV0ZWN0aW5nIHRvdWNoIHN1cHBvcnQuXG4gIGlzTWFjKCkgJiYgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzID4gMTtcbn1cbmZ1bmN0aW9uIGlzSU9TKCkge1xuICByZXR1cm4gaXNJUGhvbmUoKSB8fCBpc0lQYWQoKTtcbn1cbmZ1bmN0aW9uIGlzQXBwbGVEZXZpY2UoKSB7XG4gIHJldHVybiBpc01hYygpIHx8IGlzSU9TKCk7XG59XG5cbnZhciBmb3JtYXRHcm91cExhYmVsID0gZnVuY3Rpb24gZm9ybWF0R3JvdXBMYWJlbChncm91cCkge1xuICByZXR1cm4gZ3JvdXAubGFiZWw7XG59O1xudmFyIGdldE9wdGlvbkxhYmVsJDEgPSBmdW5jdGlvbiBnZXRPcHRpb25MYWJlbChvcHRpb24pIHtcbiAgcmV0dXJuIG9wdGlvbi5sYWJlbDtcbn07XG52YXIgZ2V0T3B0aW9uVmFsdWUkMSA9IGZ1bmN0aW9uIGdldE9wdGlvblZhbHVlKG9wdGlvbikge1xuICByZXR1cm4gb3B0aW9uLnZhbHVlO1xufTtcbnZhciBpc09wdGlvbkRpc2FibGVkID0gZnVuY3Rpb24gaXNPcHRpb25EaXNhYmxlZChvcHRpb24pIHtcbiAgcmV0dXJuICEhb3B0aW9uLmlzRGlzYWJsZWQ7XG59O1xuXG52YXIgZGVmYXVsdFN0eWxlcyA9IHtcbiAgY2xlYXJJbmRpY2F0b3I6IGNsZWFySW5kaWNhdG9yQ1NTLFxuICBjb250YWluZXI6IGNvbnRhaW5lckNTUyxcbiAgY29udHJvbDogY3NzJDEsXG4gIGRyb3Bkb3duSW5kaWNhdG9yOiBkcm9wZG93bkluZGljYXRvckNTUyxcbiAgZ3JvdXA6IGdyb3VwQ1NTLFxuICBncm91cEhlYWRpbmc6IGdyb3VwSGVhZGluZ0NTUyxcbiAgaW5kaWNhdG9yc0NvbnRhaW5lcjogaW5kaWNhdG9yc0NvbnRhaW5lckNTUyxcbiAgaW5kaWNhdG9yU2VwYXJhdG9yOiBpbmRpY2F0b3JTZXBhcmF0b3JDU1MsXG4gIGlucHV0OiBpbnB1dENTUyxcbiAgbG9hZGluZ0luZGljYXRvcjogbG9hZGluZ0luZGljYXRvckNTUyxcbiAgbG9hZGluZ01lc3NhZ2U6IGxvYWRpbmdNZXNzYWdlQ1NTLFxuICBtZW51OiBtZW51Q1NTLFxuICBtZW51TGlzdDogbWVudUxpc3RDU1MsXG4gIG1lbnVQb3J0YWw6IG1lbnVQb3J0YWxDU1MsXG4gIG11bHRpVmFsdWU6IG11bHRpVmFsdWVDU1MsXG4gIG11bHRpVmFsdWVMYWJlbDogbXVsdGlWYWx1ZUxhYmVsQ1NTLFxuICBtdWx0aVZhbHVlUmVtb3ZlOiBtdWx0aVZhbHVlUmVtb3ZlQ1NTLFxuICBub09wdGlvbnNNZXNzYWdlOiBub09wdGlvbnNNZXNzYWdlQ1NTLFxuICBvcHRpb246IG9wdGlvbkNTUyxcbiAgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyQ1NTLFxuICBzaW5nbGVWYWx1ZTogY3NzJDIsXG4gIHZhbHVlQ29udGFpbmVyOiB2YWx1ZUNvbnRhaW5lckNTU1xufTtcbi8vIE1lcmdlIFV0aWxpdHlcbi8vIEFsbG93cyBjb25zdW1lcnMgdG8gZXh0ZW5kIGEgYmFzZSBTZWxlY3Qgd2l0aCBhZGRpdGlvbmFsIHN0eWxlc1xuXG5mdW5jdGlvbiBtZXJnZVN0eWxlcyhzb3VyY2UpIHtcbiAgdmFyIHRhcmdldCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gIC8vIGluaXRpYWxpemUgd2l0aCBzb3VyY2Ugc3R5bGVzXG4gIHZhciBzdHlsZXMgPSBfb2JqZWN0U3ByZWFkKHt9LCBzb3VyY2UpO1xuXG4gIC8vIG1hc3NhZ2UgaW4gdGFyZ2V0IHN0eWxlc1xuICBPYmplY3Qua2V5cyh0YXJnZXQpLmZvckVhY2goZnVuY3Rpb24gKGtleUFzU3RyaW5nKSB7XG4gICAgdmFyIGtleSA9IGtleUFzU3RyaW5nO1xuICAgIGlmIChzb3VyY2Vba2V5XSkge1xuICAgICAgc3R5bGVzW2tleV0gPSBmdW5jdGlvbiAocnNDc3MsIHByb3BzKSB7XG4gICAgICAgIHJldHVybiB0YXJnZXRba2V5XShzb3VyY2Vba2V5XShyc0NzcywgcHJvcHMpLCBwcm9wcyk7XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZXNba2V5XSA9IHRhcmdldFtrZXldO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBzdHlsZXM7XG59XG5cbnZhciBjb2xvcnMgPSB7XG4gIHByaW1hcnk6ICcjMjY4NEZGJyxcbiAgcHJpbWFyeTc1OiAnIzRDOUFGRicsXG4gIHByaW1hcnk1MDogJyNCMkQ0RkYnLFxuICBwcmltYXJ5MjU6ICcjREVFQkZGJyxcbiAgZGFuZ2VyOiAnI0RFMzUwQicsXG4gIGRhbmdlckxpZ2h0OiAnI0ZGQkRBRCcsXG4gIG5ldXRyYWwwOiAnaHNsKDAsIDAlLCAxMDAlKScsXG4gIG5ldXRyYWw1OiAnaHNsKDAsIDAlLCA5NSUpJyxcbiAgbmV1dHJhbDEwOiAnaHNsKDAsIDAlLCA5MCUpJyxcbiAgbmV1dHJhbDIwOiAnaHNsKDAsIDAlLCA4MCUpJyxcbiAgbmV1dHJhbDMwOiAnaHNsKDAsIDAlLCA3MCUpJyxcbiAgbmV1dHJhbDQwOiAnaHNsKDAsIDAlLCA2MCUpJyxcbiAgbmV1dHJhbDUwOiAnaHNsKDAsIDAlLCA1MCUpJyxcbiAgbmV1dHJhbDYwOiAnaHNsKDAsIDAlLCA0MCUpJyxcbiAgbmV1dHJhbDcwOiAnaHNsKDAsIDAlLCAzMCUpJyxcbiAgbmV1dHJhbDgwOiAnaHNsKDAsIDAlLCAyMCUpJyxcbiAgbmV1dHJhbDkwOiAnaHNsKDAsIDAlLCAxMCUpJ1xufTtcbnZhciBib3JkZXJSYWRpdXMgPSA0O1xuLy8gVXNlZCB0byBjYWxjdWxhdGUgY29uc2lzdGVudCBtYXJnaW4vcGFkZGluZyBvbiBlbGVtZW50c1xudmFyIGJhc2VVbml0ID0gNDtcbi8vIFRoZSBtaW5pbXVtIGhlaWdodCBvZiB0aGUgY29udHJvbFxudmFyIGNvbnRyb2xIZWlnaHQgPSAzODtcbi8vIFRoZSBhbW91bnQgb2Ygc3BhY2UgYmV0d2VlbiB0aGUgY29udHJvbCBhbmQgbWVudSAqL1xudmFyIG1lbnVHdXR0ZXIgPSBiYXNlVW5pdCAqIDI7XG52YXIgc3BhY2luZyA9IHtcbiAgYmFzZVVuaXQ6IGJhc2VVbml0LFxuICBjb250cm9sSGVpZ2h0OiBjb250cm9sSGVpZ2h0LFxuICBtZW51R3V0dGVyOiBtZW51R3V0dGVyXG59O1xudmFyIGRlZmF1bHRUaGVtZSA9IHtcbiAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMsXG4gIGNvbG9yczogY29sb3JzLFxuICBzcGFjaW5nOiBzcGFjaW5nXG59O1xuXG52YXIgZGVmYXVsdFByb3BzID0ge1xuICAnYXJpYS1saXZlJzogJ3BvbGl0ZScsXG4gIGJhY2tzcGFjZVJlbW92ZXNWYWx1ZTogdHJ1ZSxcbiAgYmx1cklucHV0T25TZWxlY3Q6IGlzVG91Y2hDYXBhYmxlKCksXG4gIGNhcHR1cmVNZW51U2Nyb2xsOiAhaXNUb3VjaENhcGFibGUoKSxcbiAgY2xhc3NOYW1lczoge30sXG4gIGNsb3NlTWVudU9uU2VsZWN0OiB0cnVlLFxuICBjbG9zZU1lbnVPblNjcm9sbDogZmFsc2UsXG4gIGNvbXBvbmVudHM6IHt9LFxuICBjb250cm9sU2hvdWxkUmVuZGVyVmFsdWU6IHRydWUsXG4gIGVzY2FwZUNsZWFyc1ZhbHVlOiBmYWxzZSxcbiAgZmlsdGVyT3B0aW9uOiBjcmVhdGVGaWx0ZXIoKSxcbiAgZm9ybWF0R3JvdXBMYWJlbDogZm9ybWF0R3JvdXBMYWJlbCxcbiAgZ2V0T3B0aW9uTGFiZWw6IGdldE9wdGlvbkxhYmVsJDEsXG4gIGdldE9wdGlvblZhbHVlOiBnZXRPcHRpb25WYWx1ZSQxLFxuICBpc0Rpc2FibGVkOiBmYWxzZSxcbiAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgaXNNdWx0aTogZmFsc2UsXG4gIGlzUnRsOiBmYWxzZSxcbiAgaXNTZWFyY2hhYmxlOiB0cnVlLFxuICBpc09wdGlvbkRpc2FibGVkOiBpc09wdGlvbkRpc2FibGVkLFxuICBsb2FkaW5nTWVzc2FnZTogZnVuY3Rpb24gbG9hZGluZ01lc3NhZ2UoKSB7XG4gICAgcmV0dXJuICdMb2FkaW5nLi4uJztcbiAgfSxcbiAgbWF4TWVudUhlaWdodDogMzAwLFxuICBtaW5NZW51SGVpZ2h0OiAxNDAsXG4gIG1lbnVJc09wZW46IGZhbHNlLFxuICBtZW51UGxhY2VtZW50OiAnYm90dG9tJyxcbiAgbWVudVBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICBtZW51U2hvdWxkQmxvY2tTY3JvbGw6IGZhbHNlLFxuICBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXc6ICFpc01vYmlsZURldmljZSgpLFxuICBub09wdGlvbnNNZXNzYWdlOiBmdW5jdGlvbiBub09wdGlvbnNNZXNzYWdlKCkge1xuICAgIHJldHVybiAnTm8gb3B0aW9ucyc7XG4gIH0sXG4gIG9wZW5NZW51T25Gb2N1czogZmFsc2UsXG4gIG9wZW5NZW51T25DbGljazogdHJ1ZSxcbiAgb3B0aW9uczogW10sXG4gIHBhZ2VTaXplOiA1LFxuICBwbGFjZWhvbGRlcjogJ1NlbGVjdC4uLicsXG4gIHNjcmVlblJlYWRlclN0YXR1czogZnVuY3Rpb24gc2NyZWVuUmVhZGVyU3RhdHVzKF9yZWYpIHtcbiAgICB2YXIgY291bnQgPSBfcmVmLmNvdW50O1xuICAgIHJldHVybiBcIlwiLmNvbmNhdChjb3VudCwgXCIgcmVzdWx0XCIpLmNvbmNhdChjb3VudCAhPT0gMSA/ICdzJyA6ICcnLCBcIiBhdmFpbGFibGVcIik7XG4gIH0sXG4gIHN0eWxlczoge30sXG4gIHRhYkluZGV4OiAwLFxuICB0YWJTZWxlY3RzVmFsdWU6IHRydWUsXG4gIHVuc3R5bGVkOiBmYWxzZVxufTtcbmZ1bmN0aW9uIHRvQ2F0ZWdvcml6ZWRPcHRpb24ocHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUsIGluZGV4KSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX2lzT3B0aW9uRGlzYWJsZWQocHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpO1xuICB2YXIgaXNTZWxlY3RlZCA9IF9pc09wdGlvblNlbGVjdGVkKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlKTtcbiAgdmFyIGxhYmVsID0gZ2V0T3B0aW9uTGFiZWwocHJvcHMsIG9wdGlvbik7XG4gIHZhciB2YWx1ZSA9IGdldE9wdGlvblZhbHVlKHByb3BzLCBvcHRpb24pO1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdvcHRpb24nLFxuICAgIGRhdGE6IG9wdGlvbixcbiAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgIGlzU2VsZWN0ZWQ6IGlzU2VsZWN0ZWQsXG4gICAgbGFiZWw6IGxhYmVsLFxuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBpbmRleDogaW5kZXhcbiAgfTtcbn1cbmZ1bmN0aW9uIGJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKHByb3BzLCBzZWxlY3RWYWx1ZSkge1xuICByZXR1cm4gcHJvcHMub3B0aW9ucy5tYXAoZnVuY3Rpb24gKGdyb3VwT3JPcHRpb24sIGdyb3VwT3JPcHRpb25JbmRleCkge1xuICAgIGlmICgnb3B0aW9ucycgaW4gZ3JvdXBPck9wdGlvbikge1xuICAgICAgdmFyIGNhdGVnb3JpemVkT3B0aW9ucyA9IGdyb3VwT3JPcHRpb24ub3B0aW9ucy5tYXAoZnVuY3Rpb24gKG9wdGlvbiwgb3B0aW9uSW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHRvQ2F0ZWdvcml6ZWRPcHRpb24ocHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUsIG9wdGlvbkluZGV4KTtcbiAgICAgIH0pLmZpbHRlcihmdW5jdGlvbiAoY2F0ZWdvcml6ZWRPcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIGlzRm9jdXNhYmxlKHByb3BzLCBjYXRlZ29yaXplZE9wdGlvbik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBjYXRlZ29yaXplZE9wdGlvbnMubGVuZ3RoID4gMCA/IHtcbiAgICAgICAgdHlwZTogJ2dyb3VwJyxcbiAgICAgICAgZGF0YTogZ3JvdXBPck9wdGlvbixcbiAgICAgICAgb3B0aW9uczogY2F0ZWdvcml6ZWRPcHRpb25zLFxuICAgICAgICBpbmRleDogZ3JvdXBPck9wdGlvbkluZGV4XG4gICAgICB9IDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICB2YXIgY2F0ZWdvcml6ZWRPcHRpb24gPSB0b0NhdGVnb3JpemVkT3B0aW9uKHByb3BzLCBncm91cE9yT3B0aW9uLCBzZWxlY3RWYWx1ZSwgZ3JvdXBPck9wdGlvbkluZGV4KTtcbiAgICByZXR1cm4gaXNGb2N1c2FibGUocHJvcHMsIGNhdGVnb3JpemVkT3B0aW9uKSA/IGNhdGVnb3JpemVkT3B0aW9uIDogdW5kZWZpbmVkO1xuICB9KS5maWx0ZXIobm90TnVsbGlzaCk7XG59XG5mdW5jdGlvbiBidWlsZEZvY3VzYWJsZU9wdGlvbnNGcm9tQ2F0ZWdvcml6ZWRPcHRpb25zKGNhdGVnb3JpemVkT3B0aW9ucykge1xuICByZXR1cm4gY2F0ZWdvcml6ZWRPcHRpb25zLnJlZHVjZShmdW5jdGlvbiAob3B0aW9uc0FjY3VtdWxhdG9yLCBjYXRlZ29yaXplZE9wdGlvbikge1xuICAgIGlmIChjYXRlZ29yaXplZE9wdGlvbi50eXBlID09PSAnZ3JvdXAnKSB7XG4gICAgICBvcHRpb25zQWNjdW11bGF0b3IucHVzaC5hcHBseShvcHRpb25zQWNjdW11bGF0b3IsIF90b0NvbnN1bWFibGVBcnJheShjYXRlZ29yaXplZE9wdGlvbi5vcHRpb25zLm1hcChmdW5jdGlvbiAob3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24uZGF0YTtcbiAgICAgIH0pKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnNBY2N1bXVsYXRvci5wdXNoKGNhdGVnb3JpemVkT3B0aW9uLmRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9uc0FjY3VtdWxhdG9yO1xuICB9LCBbXSk7XG59XG5mdW5jdGlvbiBidWlsZEZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzKGNhdGVnb3JpemVkT3B0aW9ucywgb3B0aW9uSWQpIHtcbiAgcmV0dXJuIGNhdGVnb3JpemVkT3B0aW9ucy5yZWR1Y2UoZnVuY3Rpb24gKG9wdGlvbnNBY2N1bXVsYXRvciwgY2F0ZWdvcml6ZWRPcHRpb24pIHtcbiAgICBpZiAoY2F0ZWdvcml6ZWRPcHRpb24udHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgb3B0aW9uc0FjY3VtdWxhdG9yLnB1c2guYXBwbHkob3B0aW9uc0FjY3VtdWxhdG9yLCBfdG9Db25zdW1hYmxlQXJyYXkoY2F0ZWdvcml6ZWRPcHRpb24ub3B0aW9ucy5tYXAoZnVuY3Rpb24gKG9wdGlvbikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IG9wdGlvbi5kYXRhLFxuICAgICAgICAgIGlkOiBcIlwiLmNvbmNhdChvcHRpb25JZCwgXCItXCIpLmNvbmNhdChjYXRlZ29yaXplZE9wdGlvbi5pbmRleCwgXCItXCIpLmNvbmNhdChvcHRpb24uaW5kZXgpXG4gICAgICAgIH07XG4gICAgICB9KSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zQWNjdW11bGF0b3IucHVzaCh7XG4gICAgICAgIGRhdGE6IGNhdGVnb3JpemVkT3B0aW9uLmRhdGEsXG4gICAgICAgIGlkOiBcIlwiLmNvbmNhdChvcHRpb25JZCwgXCItXCIpLmNvbmNhdChjYXRlZ29yaXplZE9wdGlvbi5pbmRleClcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9uc0FjY3VtdWxhdG9yO1xuICB9LCBbXSk7XG59XG5mdW5jdGlvbiBidWlsZEZvY3VzYWJsZU9wdGlvbnMocHJvcHMsIHNlbGVjdFZhbHVlKSB7XG4gIHJldHVybiBidWlsZEZvY3VzYWJsZU9wdGlvbnNGcm9tQ2F0ZWdvcml6ZWRPcHRpb25zKGJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKHByb3BzLCBzZWxlY3RWYWx1ZSkpO1xufVxuZnVuY3Rpb24gaXNGb2N1c2FibGUocHJvcHMsIGNhdGVnb3JpemVkT3B0aW9uKSB7XG4gIHZhciBfcHJvcHMkaW5wdXRWYWx1ZSA9IHByb3BzLmlucHV0VmFsdWUsXG4gICAgaW5wdXRWYWx1ZSA9IF9wcm9wcyRpbnB1dFZhbHVlID09PSB2b2lkIDAgPyAnJyA6IF9wcm9wcyRpbnB1dFZhbHVlO1xuICB2YXIgZGF0YSA9IGNhdGVnb3JpemVkT3B0aW9uLmRhdGEsXG4gICAgaXNTZWxlY3RlZCA9IGNhdGVnb3JpemVkT3B0aW9uLmlzU2VsZWN0ZWQsXG4gICAgbGFiZWwgPSBjYXRlZ29yaXplZE9wdGlvbi5sYWJlbCxcbiAgICB2YWx1ZSA9IGNhdGVnb3JpemVkT3B0aW9uLnZhbHVlO1xuICByZXR1cm4gKCFzaG91bGRIaWRlU2VsZWN0ZWRPcHRpb25zKHByb3BzKSB8fCAhaXNTZWxlY3RlZCkgJiYgX2ZpbHRlck9wdGlvbihwcm9wcywge1xuICAgIGxhYmVsOiBsYWJlbCxcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgZGF0YTogZGF0YVxuICB9LCBpbnB1dFZhbHVlKTtcbn1cbmZ1bmN0aW9uIGdldE5leHRGb2N1c2VkVmFsdWUoc3RhdGUsIG5leHRTZWxlY3RWYWx1ZSkge1xuICB2YXIgZm9jdXNlZFZhbHVlID0gc3RhdGUuZm9jdXNlZFZhbHVlLFxuICAgIGxhc3RTZWxlY3RWYWx1ZSA9IHN0YXRlLnNlbGVjdFZhbHVlO1xuICB2YXIgbGFzdEZvY3VzZWRJbmRleCA9IGxhc3RTZWxlY3RWYWx1ZS5pbmRleE9mKGZvY3VzZWRWYWx1ZSk7XG4gIGlmIChsYXN0Rm9jdXNlZEluZGV4ID4gLTEpIHtcbiAgICB2YXIgbmV4dEZvY3VzZWRJbmRleCA9IG5leHRTZWxlY3RWYWx1ZS5pbmRleE9mKGZvY3VzZWRWYWx1ZSk7XG4gICAgaWYgKG5leHRGb2N1c2VkSW5kZXggPiAtMSkge1xuICAgICAgLy8gdGhlIGZvY3VzZWQgdmFsdWUgaXMgc3RpbGwgaW4gdGhlIHNlbGVjdFZhbHVlLCByZXR1cm4gaXRcbiAgICAgIHJldHVybiBmb2N1c2VkVmFsdWU7XG4gICAgfSBlbHNlIGlmIChsYXN0Rm9jdXNlZEluZGV4IDwgbmV4dFNlbGVjdFZhbHVlLmxlbmd0aCkge1xuICAgICAgLy8gdGhlIGZvY3VzZWRWYWx1ZSBpcyBub3QgcHJlc2VudCBpbiB0aGUgbmV4dCBzZWxlY3RWYWx1ZSBhcnJheSBieVxuICAgICAgLy8gcmVmZXJlbmNlLCBzbyByZXR1cm4gdGhlIG5ldyB2YWx1ZSBhdCB0aGUgc2FtZSBpbmRleFxuICAgICAgcmV0dXJuIG5leHRTZWxlY3RWYWx1ZVtsYXN0Rm9jdXNlZEluZGV4XTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiBnZXROZXh0Rm9jdXNlZE9wdGlvbihzdGF0ZSwgb3B0aW9ucykge1xuICB2YXIgbGFzdEZvY3VzZWRPcHRpb24gPSBzdGF0ZS5mb2N1c2VkT3B0aW9uO1xuICByZXR1cm4gbGFzdEZvY3VzZWRPcHRpb24gJiYgb3B0aW9ucy5pbmRleE9mKGxhc3RGb2N1c2VkT3B0aW9uKSA+IC0xID8gbGFzdEZvY3VzZWRPcHRpb24gOiBvcHRpb25zWzBdO1xufVxudmFyIGdldEZvY3VzZWRPcHRpb25JZCA9IGZ1bmN0aW9uIGdldEZvY3VzZWRPcHRpb25JZChmb2N1c2FibGVPcHRpb25zV2l0aElkcywgZm9jdXNlZE9wdGlvbikge1xuICB2YXIgX2ZvY3VzYWJsZU9wdGlvbnNXaXRoO1xuICB2YXIgZm9jdXNlZE9wdGlvbklkID0gKF9mb2N1c2FibGVPcHRpb25zV2l0aCA9IGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLmZpbmQoZnVuY3Rpb24gKG9wdGlvbikge1xuICAgIHJldHVybiBvcHRpb24uZGF0YSA9PT0gZm9jdXNlZE9wdGlvbjtcbiAgfSkpID09PSBudWxsIHx8IF9mb2N1c2FibGVPcHRpb25zV2l0aCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2ZvY3VzYWJsZU9wdGlvbnNXaXRoLmlkO1xuICByZXR1cm4gZm9jdXNlZE9wdGlvbklkIHx8IG51bGw7XG59O1xudmFyIGdldE9wdGlvbkxhYmVsID0gZnVuY3Rpb24gZ2V0T3B0aW9uTGFiZWwocHJvcHMsIGRhdGEpIHtcbiAgcmV0dXJuIHByb3BzLmdldE9wdGlvbkxhYmVsKGRhdGEpO1xufTtcbnZhciBnZXRPcHRpb25WYWx1ZSA9IGZ1bmN0aW9uIGdldE9wdGlvblZhbHVlKHByb3BzLCBkYXRhKSB7XG4gIHJldHVybiBwcm9wcy5nZXRPcHRpb25WYWx1ZShkYXRhKTtcbn07XG5mdW5jdGlvbiBfaXNPcHRpb25EaXNhYmxlZChwcm9wcywgb3B0aW9uLCBzZWxlY3RWYWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHByb3BzLmlzT3B0aW9uRGlzYWJsZWQgPT09ICdmdW5jdGlvbicgPyBwcm9wcy5pc09wdGlvbkRpc2FibGVkKG9wdGlvbiwgc2VsZWN0VmFsdWUpIDogZmFsc2U7XG59XG5mdW5jdGlvbiBfaXNPcHRpb25TZWxlY3RlZChwcm9wcywgb3B0aW9uLCBzZWxlY3RWYWx1ZSkge1xuICBpZiAoc2VsZWN0VmFsdWUuaW5kZXhPZihvcHRpb24pID4gLTEpIHJldHVybiB0cnVlO1xuICBpZiAodHlwZW9mIHByb3BzLmlzT3B0aW9uU2VsZWN0ZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gcHJvcHMuaXNPcHRpb25TZWxlY3RlZChvcHRpb24sIHNlbGVjdFZhbHVlKTtcbiAgfVxuICB2YXIgY2FuZGlkYXRlID0gZ2V0T3B0aW9uVmFsdWUocHJvcHMsIG9wdGlvbik7XG4gIHJldHVybiBzZWxlY3RWYWx1ZS5zb21lKGZ1bmN0aW9uIChpKSB7XG4gICAgcmV0dXJuIGdldE9wdGlvblZhbHVlKHByb3BzLCBpKSA9PT0gY2FuZGlkYXRlO1xuICB9KTtcbn1cbmZ1bmN0aW9uIF9maWx0ZXJPcHRpb24ocHJvcHMsIG9wdGlvbiwgaW5wdXRWYWx1ZSkge1xuICByZXR1cm4gcHJvcHMuZmlsdGVyT3B0aW9uID8gcHJvcHMuZmlsdGVyT3B0aW9uKG9wdGlvbiwgaW5wdXRWYWx1ZSkgOiB0cnVlO1xufVxudmFyIHNob3VsZEhpZGVTZWxlY3RlZE9wdGlvbnMgPSBmdW5jdGlvbiBzaG91bGRIaWRlU2VsZWN0ZWRPcHRpb25zKHByb3BzKSB7XG4gIHZhciBoaWRlU2VsZWN0ZWRPcHRpb25zID0gcHJvcHMuaGlkZVNlbGVjdGVkT3B0aW9ucyxcbiAgICBpc011bHRpID0gcHJvcHMuaXNNdWx0aTtcbiAgaWYgKGhpZGVTZWxlY3RlZE9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGlzTXVsdGk7XG4gIHJldHVybiBoaWRlU2VsZWN0ZWRPcHRpb25zO1xufTtcbnZhciBpbnN0YW5jZUlkID0gMTtcbnZhciBTZWxlY3QgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFNlbGVjdCwgX0NvbXBvbmVudCk7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoU2VsZWN0KTtcbiAgLy8gTWlzYy4gSW5zdGFuY2UgUHJvcGVydGllc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvLyBUT0RPXG5cbiAgLy8gUmVmc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvLyBMaWZlY3ljbGVcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgZnVuY3Rpb24gU2VsZWN0KF9wcm9wcykge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU2VsZWN0KTtcbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIF9wcm9wcyk7XG4gICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICBhcmlhU2VsZWN0aW9uOiBudWxsLFxuICAgICAgZm9jdXNlZE9wdGlvbjogbnVsbCxcbiAgICAgIGZvY3VzZWRPcHRpb25JZDogbnVsbCxcbiAgICAgIGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzOiBbXSxcbiAgICAgIGZvY3VzZWRWYWx1ZTogbnVsbCxcbiAgICAgIGlucHV0SXNIaWRkZW46IGZhbHNlLFxuICAgICAgaXNGb2N1c2VkOiBmYWxzZSxcbiAgICAgIHNlbGVjdFZhbHVlOiBbXSxcbiAgICAgIGNsZWFyRm9jdXNWYWx1ZU9uVXBkYXRlOiBmYWxzZSxcbiAgICAgIHByZXZXYXNGb2N1c2VkOiBmYWxzZSxcbiAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogdW5kZWZpbmVkLFxuICAgICAgcHJldlByb3BzOiB1bmRlZmluZWQsXG4gICAgICBpbnN0YW5jZVByZWZpeDogJydcbiAgICB9O1xuICAgIF90aGlzLmJsb2NrT3B0aW9uSG92ZXIgPSBmYWxzZTtcbiAgICBfdGhpcy5pc0NvbXBvc2luZyA9IGZhbHNlO1xuICAgIF90aGlzLmNvbW1vblByb3BzID0gdm9pZCAwO1xuICAgIF90aGlzLmluaXRpYWxUb3VjaFggPSAwO1xuICAgIF90aGlzLmluaXRpYWxUb3VjaFkgPSAwO1xuICAgIF90aGlzLm9wZW5BZnRlckZvY3VzID0gZmFsc2U7XG4gICAgX3RoaXMuc2Nyb2xsVG9Gb2N1c2VkT3B0aW9uT25VcGRhdGUgPSBmYWxzZTtcbiAgICBfdGhpcy51c2VySXNEcmFnZ2luZyA9IHZvaWQgMDtcbiAgICBfdGhpcy5pc0FwcGxlRGV2aWNlID0gaXNBcHBsZURldmljZSgpO1xuICAgIF90aGlzLmNvbnRyb2xSZWYgPSBudWxsO1xuICAgIF90aGlzLmdldENvbnRyb2xSZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICBfdGhpcy5jb250cm9sUmVmID0gcmVmO1xuICAgIH07XG4gICAgX3RoaXMuZm9jdXNlZE9wdGlvblJlZiA9IG51bGw7XG4gICAgX3RoaXMuZ2V0Rm9jdXNlZE9wdGlvblJlZiA9IGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgIF90aGlzLmZvY3VzZWRPcHRpb25SZWYgPSByZWY7XG4gICAgfTtcbiAgICBfdGhpcy5tZW51TGlzdFJlZiA9IG51bGw7XG4gICAgX3RoaXMuZ2V0TWVudUxpc3RSZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICBfdGhpcy5tZW51TGlzdFJlZiA9IHJlZjtcbiAgICB9O1xuICAgIF90aGlzLmlucHV0UmVmID0gbnVsbDtcbiAgICBfdGhpcy5nZXRJbnB1dFJlZiA9IGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgIF90aGlzLmlucHV0UmVmID0gcmVmO1xuICAgIH07XG4gICAgX3RoaXMuZm9jdXMgPSBfdGhpcy5mb2N1c0lucHV0O1xuICAgIF90aGlzLmJsdXIgPSBfdGhpcy5ibHVySW5wdXQ7XG4gICAgX3RoaXMub25DaGFuZ2UgPSBmdW5jdGlvbiAobmV3VmFsdWUsIGFjdGlvbk1ldGEpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IF90aGlzLnByb3BzLFxuICAgICAgICBvbkNoYW5nZSA9IF90aGlzJHByb3BzLm9uQ2hhbmdlLFxuICAgICAgICBuYW1lID0gX3RoaXMkcHJvcHMubmFtZTtcbiAgICAgIGFjdGlvbk1ldGEubmFtZSA9IG5hbWU7XG4gICAgICBfdGhpcy5hcmlhT25DaGFuZ2UobmV3VmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgICAgb25DaGFuZ2UobmV3VmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgIH07XG4gICAgX3RoaXMuc2V0VmFsdWUgPSBmdW5jdGlvbiAobmV3VmFsdWUsIGFjdGlvbiwgb3B0aW9uKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMyID0gX3RoaXMucHJvcHMsXG4gICAgICAgIGNsb3NlTWVudU9uU2VsZWN0ID0gX3RoaXMkcHJvcHMyLmNsb3NlTWVudU9uU2VsZWN0LFxuICAgICAgICBpc011bHRpID0gX3RoaXMkcHJvcHMyLmlzTXVsdGksXG4gICAgICAgIGlucHV0VmFsdWUgPSBfdGhpcyRwcm9wczIuaW5wdXRWYWx1ZTtcbiAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoJycsIHtcbiAgICAgICAgYWN0aW9uOiAnc2V0LXZhbHVlJyxcbiAgICAgICAgcHJldklucHV0VmFsdWU6IGlucHV0VmFsdWVcbiAgICAgIH0pO1xuICAgICAgaWYgKGNsb3NlTWVudU9uU2VsZWN0KSB7XG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6ICFpc011bHRpXG4gICAgICAgIH0pO1xuICAgICAgICBfdGhpcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgfVxuICAgICAgLy8gd2hlbiB0aGUgc2VsZWN0IHZhbHVlIHNob3VsZCBjaGFuZ2UsIHdlIHNob3VsZCByZXNldCBmb2N1c2VkVmFsdWVcbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgY2xlYXJGb2N1c1ZhbHVlT25VcGRhdGU6IHRydWVcbiAgICAgIH0pO1xuICAgICAgX3RoaXMub25DaGFuZ2UobmV3VmFsdWUsIHtcbiAgICAgICAgYWN0aW9uOiBhY3Rpb24sXG4gICAgICAgIG9wdGlvbjogb3B0aW9uXG4gICAgICB9KTtcbiAgICB9O1xuICAgIF90aGlzLnNlbGVjdE9wdGlvbiA9IGZ1bmN0aW9uIChuZXdWYWx1ZSkge1xuICAgICAgdmFyIF90aGlzJHByb3BzMyA9IF90aGlzLnByb3BzLFxuICAgICAgICBibHVySW5wdXRPblNlbGVjdCA9IF90aGlzJHByb3BzMy5ibHVySW5wdXRPblNlbGVjdCxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzMy5pc011bHRpLFxuICAgICAgICBuYW1lID0gX3RoaXMkcHJvcHMzLm5hbWU7XG4gICAgICB2YXIgc2VsZWN0VmFsdWUgPSBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIHZhciBkZXNlbGVjdGVkID0gaXNNdWx0aSAmJiBfdGhpcy5pc09wdGlvblNlbGVjdGVkKG5ld1ZhbHVlLCBzZWxlY3RWYWx1ZSk7XG4gICAgICB2YXIgaXNEaXNhYmxlZCA9IF90aGlzLmlzT3B0aW9uRGlzYWJsZWQobmV3VmFsdWUsIHNlbGVjdFZhbHVlKTtcbiAgICAgIGlmIChkZXNlbGVjdGVkKSB7XG4gICAgICAgIHZhciBjYW5kaWRhdGUgPSBfdGhpcy5nZXRPcHRpb25WYWx1ZShuZXdWYWx1ZSk7XG4gICAgICAgIF90aGlzLnNldFZhbHVlKG11bHRpVmFsdWVBc1ZhbHVlKHNlbGVjdFZhbHVlLmZpbHRlcihmdW5jdGlvbiAoaSkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5nZXRPcHRpb25WYWx1ZShpKSAhPT0gY2FuZGlkYXRlO1xuICAgICAgICB9KSksICdkZXNlbGVjdC1vcHRpb24nLCBuZXdWYWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKCFpc0Rpc2FibGVkKSB7XG4gICAgICAgIC8vIFNlbGVjdCBvcHRpb24gaWYgb3B0aW9uIGlzIG5vdCBkaXNhYmxlZFxuICAgICAgICBpZiAoaXNNdWx0aSkge1xuICAgICAgICAgIF90aGlzLnNldFZhbHVlKG11bHRpVmFsdWVBc1ZhbHVlKFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoc2VsZWN0VmFsdWUpLCBbbmV3VmFsdWVdKSksICdzZWxlY3Qtb3B0aW9uJywgbmV3VmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF90aGlzLnNldFZhbHVlKHNpbmdsZVZhbHVlQXNWYWx1ZShuZXdWYWx1ZSksICdzZWxlY3Qtb3B0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF90aGlzLmFyaWFPbkNoYW5nZShzaW5nbGVWYWx1ZUFzVmFsdWUobmV3VmFsdWUpLCB7XG4gICAgICAgICAgYWN0aW9uOiAnc2VsZWN0LW9wdGlvbicsXG4gICAgICAgICAgb3B0aW9uOiBuZXdWYWx1ZSxcbiAgICAgICAgICBuYW1lOiBuYW1lXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoYmx1cklucHV0T25TZWxlY3QpIHtcbiAgICAgICAgX3RoaXMuYmx1cklucHV0KCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBfdGhpcy5yZW1vdmVWYWx1ZSA9IGZ1bmN0aW9uIChyZW1vdmVkVmFsdWUpIHtcbiAgICAgIHZhciBpc011bHRpID0gX3RoaXMucHJvcHMuaXNNdWx0aTtcbiAgICAgIHZhciBzZWxlY3RWYWx1ZSA9IF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlO1xuICAgICAgdmFyIGNhbmRpZGF0ZSA9IF90aGlzLmdldE9wdGlvblZhbHVlKHJlbW92ZWRWYWx1ZSk7XG4gICAgICB2YXIgbmV3VmFsdWVBcnJheSA9IHNlbGVjdFZhbHVlLmZpbHRlcihmdW5jdGlvbiAoaSkge1xuICAgICAgICByZXR1cm4gX3RoaXMuZ2V0T3B0aW9uVmFsdWUoaSkgIT09IGNhbmRpZGF0ZTtcbiAgICAgIH0pO1xuICAgICAgdmFyIG5ld1ZhbHVlID0gdmFsdWVUZXJuYXJ5KGlzTXVsdGksIG5ld1ZhbHVlQXJyYXksIG5ld1ZhbHVlQXJyYXlbMF0gfHwgbnVsbCk7XG4gICAgICBfdGhpcy5vbkNoYW5nZShuZXdWYWx1ZSwge1xuICAgICAgICBhY3Rpb246ICdyZW1vdmUtdmFsdWUnLFxuICAgICAgICByZW1vdmVkVmFsdWU6IHJlbW92ZWRWYWx1ZVxuICAgICAgfSk7XG4gICAgICBfdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgfTtcbiAgICBfdGhpcy5jbGVhclZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICBfdGhpcy5vbkNoYW5nZSh2YWx1ZVRlcm5hcnkoX3RoaXMucHJvcHMuaXNNdWx0aSwgW10sIG51bGwpLCB7XG4gICAgICAgIGFjdGlvbjogJ2NsZWFyJyxcbiAgICAgICAgcmVtb3ZlZFZhbHVlczogc2VsZWN0VmFsdWVcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMucG9wVmFsdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgaXNNdWx0aSA9IF90aGlzLnByb3BzLmlzTXVsdGk7XG4gICAgICB2YXIgc2VsZWN0VmFsdWUgPSBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIHZhciBsYXN0U2VsZWN0ZWRWYWx1ZSA9IHNlbGVjdFZhbHVlW3NlbGVjdFZhbHVlLmxlbmd0aCAtIDFdO1xuICAgICAgdmFyIG5ld1ZhbHVlQXJyYXkgPSBzZWxlY3RWYWx1ZS5zbGljZSgwLCBzZWxlY3RWYWx1ZS5sZW5ndGggLSAxKTtcbiAgICAgIHZhciBuZXdWYWx1ZSA9IHZhbHVlVGVybmFyeShpc011bHRpLCBuZXdWYWx1ZUFycmF5LCBuZXdWYWx1ZUFycmF5WzBdIHx8IG51bGwpO1xuICAgICAgaWYgKGxhc3RTZWxlY3RlZFZhbHVlKSB7XG4gICAgICAgIF90aGlzLm9uQ2hhbmdlKG5ld1ZhbHVlLCB7XG4gICAgICAgICAgYWN0aW9uOiAncG9wLXZhbHVlJyxcbiAgICAgICAgICByZW1vdmVkVmFsdWU6IGxhc3RTZWxlY3RlZFZhbHVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMuZ2V0Rm9jdXNlZE9wdGlvbklkID0gZnVuY3Rpb24gKGZvY3VzZWRPcHRpb24pIHtcbiAgICAgIHJldHVybiBnZXRGb2N1c2VkT3B0aW9uSWQoX3RoaXMuc3RhdGUuZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMsIGZvY3VzZWRPcHRpb24pO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gYnVpbGRGb2N1c2FibGVPcHRpb25zV2l0aElkcyhidWlsZENhdGVnb3JpemVkT3B0aW9ucyhfdGhpcy5wcm9wcywgX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWUpLCBfdGhpcy5nZXRFbGVtZW50SWQoJ29wdGlvbicpKTtcbiAgICB9O1xuICAgIF90aGlzLmdldFZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlO1xuICAgIH07XG4gICAgX3RoaXMuY3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjbGFzc05hbWVzLmFwcGx5KHZvaWQgMCwgW190aGlzLnByb3BzLmNsYXNzTmFtZVByZWZpeF0uY29uY2F0KGFyZ3MpKTtcbiAgICB9O1xuICAgIF90aGlzLmdldE9wdGlvbkxhYmVsID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIHJldHVybiBnZXRPcHRpb25MYWJlbChfdGhpcy5wcm9wcywgZGF0YSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRPcHRpb25WYWx1ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICByZXR1cm4gZ2V0T3B0aW9uVmFsdWUoX3RoaXMucHJvcHMsIGRhdGEpO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0U3R5bGVzID0gZnVuY3Rpb24gKGtleSwgcHJvcHMpIHtcbiAgICAgIHZhciB1bnN0eWxlZCA9IF90aGlzLnByb3BzLnVuc3R5bGVkO1xuICAgICAgdmFyIGJhc2UgPSBkZWZhdWx0U3R5bGVzW2tleV0ocHJvcHMsIHVuc3R5bGVkKTtcbiAgICAgIGJhc2UuYm94U2l6aW5nID0gJ2JvcmRlci1ib3gnO1xuICAgICAgdmFyIGN1c3RvbSA9IF90aGlzLnByb3BzLnN0eWxlc1trZXldO1xuICAgICAgcmV0dXJuIGN1c3RvbSA/IGN1c3RvbShiYXNlLCBwcm9wcykgOiBiYXNlO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0Q2xhc3NOYW1lcyA9IGZ1bmN0aW9uIChrZXksIHByb3BzKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMkY2xhc3NOYW1lLCBfdGhpcyRwcm9wcyRjbGFzc05hbWUyO1xuICAgICAgcmV0dXJuIChfdGhpcyRwcm9wcyRjbGFzc05hbWUgPSAoX3RoaXMkcHJvcHMkY2xhc3NOYW1lMiA9IF90aGlzLnByb3BzLmNsYXNzTmFtZXMpW2tleV0pID09PSBudWxsIHx8IF90aGlzJHByb3BzJGNsYXNzTmFtZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkY2xhc3NOYW1lLmNhbGwoX3RoaXMkcHJvcHMkY2xhc3NOYW1lMiwgcHJvcHMpO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0RWxlbWVudElkID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBcIlwiLmNvbmNhdChfdGhpcy5zdGF0ZS5pbnN0YW5jZVByZWZpeCwgXCItXCIpLmNvbmNhdChlbGVtZW50KTtcbiAgICB9O1xuICAgIF90aGlzLmdldENvbXBvbmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdENvbXBvbmVudHMoX3RoaXMucHJvcHMpO1xuICAgIH07XG4gICAgX3RoaXMuYnVpbGRDYXRlZ29yaXplZE9wdGlvbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gYnVpbGRDYXRlZ29yaXplZE9wdGlvbnMoX3RoaXMucHJvcHMsIF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlKTtcbiAgICB9O1xuICAgIF90aGlzLmdldENhdGVnb3JpemVkT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5wcm9wcy5tZW51SXNPcGVuID8gX3RoaXMuYnVpbGRDYXRlZ29yaXplZE9wdGlvbnMoKSA6IFtdO1xuICAgIH07XG4gICAgX3RoaXMuYnVpbGRGb2N1c2FibGVPcHRpb25zID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGJ1aWxkRm9jdXNhYmxlT3B0aW9uc0Zyb21DYXRlZ29yaXplZE9wdGlvbnMoX3RoaXMuYnVpbGRDYXRlZ29yaXplZE9wdGlvbnMoKSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRGb2N1c2FibGVPcHRpb25zID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzLnByb3BzLm1lbnVJc09wZW4gPyBfdGhpcy5idWlsZEZvY3VzYWJsZU9wdGlvbnMoKSA6IFtdO1xuICAgIH07XG4gICAgX3RoaXMuYXJpYU9uQ2hhbmdlID0gZnVuY3Rpb24gKHZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGFyaWFTZWxlY3Rpb246IF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9LCBhY3Rpb25NZXRhKVxuICAgICAgfSk7XG4gICAgfTtcbiAgICBfdGhpcy5vbk1lbnVNb3VzZURvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgX3RoaXMuZm9jdXNJbnB1dCgpO1xuICAgIH07XG4gICAgX3RoaXMub25NZW51TW91c2VNb3ZlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBfdGhpcy5ibG9ja09wdGlvbkhvdmVyID0gZmFsc2U7XG4gICAgfTtcbiAgICBfdGhpcy5vbkNvbnRyb2xNb3VzZURvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIC8vIEV2ZW50IGNhcHR1cmVkIGJ5IGRyb3Bkb3duIGluZGljYXRvclxuICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIG9wZW5NZW51T25DbGljayA9IF90aGlzLnByb3BzLm9wZW5NZW51T25DbGljaztcbiAgICAgIGlmICghX3RoaXMuc3RhdGUuaXNGb2N1c2VkKSB7XG4gICAgICAgIGlmIChvcGVuTWVudU9uQ2xpY2spIHtcbiAgICAgICAgICBfdGhpcy5vcGVuQWZ0ZXJGb2N1cyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgX3RoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgfSBlbHNlIGlmICghX3RoaXMucHJvcHMubWVudUlzT3Blbikge1xuICAgICAgICBpZiAob3Blbk1lbnVPbkNsaWNrKSB7XG4gICAgICAgICAgX3RoaXMub3Blbk1lbnUoJ2ZpcnN0Jyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChldmVudC50YXJnZXQudGFnTmFtZSAhPT0gJ0lOUFVUJyAmJiBldmVudC50YXJnZXQudGFnTmFtZSAhPT0gJ1RFWFRBUkVBJykge1xuICAgICAgICAgIF90aGlzLm9uTWVudUNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChldmVudC50YXJnZXQudGFnTmFtZSAhPT0gJ0lOUFVUJyAmJiBldmVudC50YXJnZXQudGFnTmFtZSAhPT0gJ1RFWFRBUkVBJykge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMub25Ecm9wZG93bkluZGljYXRvck1vdXNlRG93biA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgLy8gaWdub3JlIG1vdXNlIGV2ZW50cyB0aGF0IHdlcmVuJ3QgdHJpZ2dlcmVkIGJ5IHRoZSBwcmltYXJ5IGJ1dHRvblxuICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LnR5cGUgPT09ICdtb3VzZWRvd24nICYmIGV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoX3RoaXMucHJvcHMuaXNEaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgdmFyIF90aGlzJHByb3BzNCA9IF90aGlzLnByb3BzLFxuICAgICAgICBpc011bHRpID0gX3RoaXMkcHJvcHM0LmlzTXVsdGksXG4gICAgICAgIG1lbnVJc09wZW4gPSBfdGhpcyRwcm9wczQubWVudUlzT3BlbjtcbiAgICAgIF90aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgIGlmIChtZW51SXNPcGVuKSB7XG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6ICFpc011bHRpXG4gICAgICAgIH0pO1xuICAgICAgICBfdGhpcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3RoaXMub3Blbk1lbnUoJ2ZpcnN0Jyk7XG4gICAgICB9XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH07XG4gICAgX3RoaXMub25DbGVhckluZGljYXRvck1vdXNlRG93biA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgLy8gaWdub3JlIG1vdXNlIGV2ZW50cyB0aGF0IHdlcmVuJ3QgdHJpZ2dlcmVkIGJ5IHRoZSBwcmltYXJ5IGJ1dHRvblxuICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LnR5cGUgPT09ICdtb3VzZWRvd24nICYmIGV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBfdGhpcy5jbGVhclZhbHVlKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgX3RoaXMub3BlbkFmdGVyRm9jdXMgPSBmYWxzZTtcbiAgICAgIGlmIChldmVudC50eXBlID09PSAndG91Y2hlbmQnKSB7XG4gICAgICAgIF90aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMub25TY3JvbGwgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmICh0eXBlb2YgX3RoaXMucHJvcHMuY2xvc2VNZW51T25TY3JvbGwgPT09ICdib29sZWFuJykge1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgaXNEb2N1bWVudEVsZW1lbnQoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgIF90aGlzLnByb3BzLm9uTWVudUNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIF90aGlzLnByb3BzLmNsb3NlTWVudU9uU2Nyb2xsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGlmIChfdGhpcy5wcm9wcy5jbG9zZU1lbnVPblNjcm9sbChldmVudCkpIHtcbiAgICAgICAgICBfdGhpcy5wcm9wcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBfdGhpcy5vbkNvbXBvc2l0aW9uU3RhcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5pc0NvbXBvc2luZyA9IHRydWU7XG4gICAgfTtcbiAgICBfdGhpcy5vbkNvbXBvc2l0aW9uRW5kID0gZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuaXNDb21wb3NpbmcgPSBmYWxzZTtcbiAgICB9O1xuICAgIF90aGlzLm9uVG91Y2hTdGFydCA9IGZ1bmN0aW9uIChfcmVmMikge1xuICAgICAgdmFyIHRvdWNoZXMgPSBfcmVmMi50b3VjaGVzO1xuICAgICAgdmFyIHRvdWNoID0gdG91Y2hlcyAmJiB0b3VjaGVzLml0ZW0oMCk7XG4gICAgICBpZiAoIXRvdWNoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIF90aGlzLmluaXRpYWxUb3VjaFggPSB0b3VjaC5jbGllbnRYO1xuICAgICAgX3RoaXMuaW5pdGlhbFRvdWNoWSA9IHRvdWNoLmNsaWVudFk7XG4gICAgICBfdGhpcy51c2VySXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgIH07XG4gICAgX3RoaXMub25Ub3VjaE1vdmUgPSBmdW5jdGlvbiAoX3JlZjMpIHtcbiAgICAgIHZhciB0b3VjaGVzID0gX3JlZjMudG91Y2hlcztcbiAgICAgIHZhciB0b3VjaCA9IHRvdWNoZXMgJiYgdG91Y2hlcy5pdGVtKDApO1xuICAgICAgaWYgKCF0b3VjaCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgZGVsdGFYID0gTWF0aC5hYnModG91Y2guY2xpZW50WCAtIF90aGlzLmluaXRpYWxUb3VjaFgpO1xuICAgICAgdmFyIGRlbHRhWSA9IE1hdGguYWJzKHRvdWNoLmNsaWVudFkgLSBfdGhpcy5pbml0aWFsVG91Y2hZKTtcbiAgICAgIHZhciBtb3ZlVGhyZXNob2xkID0gNTtcbiAgICAgIF90aGlzLnVzZXJJc0RyYWdnaW5nID0gZGVsdGFYID4gbW92ZVRocmVzaG9sZCB8fCBkZWx0YVkgPiBtb3ZlVGhyZXNob2xkO1xuICAgIH07XG4gICAgX3RoaXMub25Ub3VjaEVuZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnVzZXJJc0RyYWdnaW5nKSByZXR1cm47XG5cbiAgICAgIC8vIGNsb3NlIHRoZSBtZW51IGlmIHRoZSB1c2VyIHRhcHMgb3V0c2lkZVxuICAgICAgLy8gd2UncmUgY2hlY2tpbmcgb24gZXZlbnQudGFyZ2V0IGhlcmUgaW5zdGVhZCBvZiBldmVudC5jdXJyZW50VGFyZ2V0LCBiZWNhdXNlIHdlIHdhbnQgdG8gYXNzZXJ0IGluZm9ybWF0aW9uXG4gICAgICAvLyBvbiBldmVudHMgb24gY2hpbGQgZWxlbWVudHMsIG5vdCB0aGUgZG9jdW1lbnQgKHdoaWNoIHdlJ3ZlIGF0dGFjaGVkIHRoaXMgaGFuZGxlciB0bykuXG4gICAgICBpZiAoX3RoaXMuY29udHJvbFJlZiAmJiAhX3RoaXMuY29udHJvbFJlZi5jb250YWlucyhldmVudC50YXJnZXQpICYmIF90aGlzLm1lbnVMaXN0UmVmICYmICFfdGhpcy5tZW51TGlzdFJlZi5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgIF90aGlzLmJsdXJJbnB1dCgpO1xuICAgICAgfVxuXG4gICAgICAvLyByZXNldCBtb3ZlIHZhcnNcbiAgICAgIF90aGlzLmluaXRpYWxUb3VjaFggPSAwO1xuICAgICAgX3RoaXMuaW5pdGlhbFRvdWNoWSA9IDA7XG4gICAgfTtcbiAgICBfdGhpcy5vbkNvbnRyb2xUb3VjaEVuZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnVzZXJJc0RyYWdnaW5nKSByZXR1cm47XG4gICAgICBfdGhpcy5vbkNvbnRyb2xNb3VzZURvd24oZXZlbnQpO1xuICAgIH07XG4gICAgX3RoaXMub25DbGVhckluZGljYXRvclRvdWNoRW5kID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAoX3RoaXMudXNlcklzRHJhZ2dpbmcpIHJldHVybjtcbiAgICAgIF90aGlzLm9uQ2xlYXJJbmRpY2F0b3JNb3VzZURvd24oZXZlbnQpO1xuICAgIH07XG4gICAgX3RoaXMub25Ecm9wZG93bkluZGljYXRvclRvdWNoRW5kID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAoX3RoaXMudXNlcklzRHJhZ2dpbmcpIHJldHVybjtcbiAgICAgIF90aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JNb3VzZURvd24oZXZlbnQpO1xuICAgIH07XG4gICAgX3RoaXMuaGFuZGxlSW5wdXRDaGFuZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHZhciBwcmV2SW5wdXRWYWx1ZSA9IF90aGlzLnByb3BzLmlucHV0VmFsdWU7XG4gICAgICB2YXIgaW5wdXRWYWx1ZSA9IGV2ZW50LmN1cnJlbnRUYXJnZXQudmFsdWU7XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgX3RoaXMub25JbnB1dENoYW5nZShpbnB1dFZhbHVlLCB7XG4gICAgICAgIGFjdGlvbjogJ2lucHV0LWNoYW5nZScsXG4gICAgICAgIHByZXZJbnB1dFZhbHVlOiBwcmV2SW5wdXRWYWx1ZVxuICAgICAgfSk7XG4gICAgICBpZiAoIV90aGlzLnByb3BzLm1lbnVJc09wZW4pIHtcbiAgICAgICAgX3RoaXMub25NZW51T3BlbigpO1xuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMub25JbnB1dEZvY3VzID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAoX3RoaXMucHJvcHMub25Gb2N1cykge1xuICAgICAgICBfdGhpcy5wcm9wcy5vbkZvY3VzKGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlOiBmYWxzZSxcbiAgICAgICAgaXNGb2N1c2VkOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIGlmIChfdGhpcy5vcGVuQWZ0ZXJGb2N1cyB8fCBfdGhpcy5wcm9wcy5vcGVuTWVudU9uRm9jdXMpIHtcbiAgICAgICAgX3RoaXMub3Blbk1lbnUoJ2ZpcnN0Jyk7XG4gICAgICB9XG4gICAgICBfdGhpcy5vcGVuQWZ0ZXJGb2N1cyA9IGZhbHNlO1xuICAgIH07XG4gICAgX3RoaXMub25JbnB1dEJsdXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHZhciBwcmV2SW5wdXRWYWx1ZSA9IF90aGlzLnByb3BzLmlucHV0VmFsdWU7XG4gICAgICBpZiAoX3RoaXMubWVudUxpc3RSZWYgJiYgX3RoaXMubWVudUxpc3RSZWYuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgX3RoaXMuaW5wdXRSZWYuZm9jdXMoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKF90aGlzLnByb3BzLm9uQmx1cikge1xuICAgICAgICBfdGhpcy5wcm9wcy5vbkJsdXIoZXZlbnQpO1xuICAgICAgfVxuICAgICAgX3RoaXMub25JbnB1dENoYW5nZSgnJywge1xuICAgICAgICBhY3Rpb246ICdpbnB1dC1ibHVyJyxcbiAgICAgICAgcHJldklucHV0VmFsdWU6IHByZXZJbnB1dFZhbHVlXG4gICAgICB9KTtcbiAgICAgIF90aGlzLm9uTWVudUNsb3NlKCk7XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGZvY3VzZWRWYWx1ZTogbnVsbCxcbiAgICAgICAgaXNGb2N1c2VkOiBmYWxzZVxuICAgICAgfSk7XG4gICAgfTtcbiAgICBfdGhpcy5vbk9wdGlvbkhvdmVyID0gZnVuY3Rpb24gKGZvY3VzZWRPcHRpb24pIHtcbiAgICAgIGlmIChfdGhpcy5ibG9ja09wdGlvbkhvdmVyIHx8IF90aGlzLnN0YXRlLmZvY3VzZWRPcHRpb24gPT09IGZvY3VzZWRPcHRpb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIG9wdGlvbnMgPSBfdGhpcy5nZXRGb2N1c2FibGVPcHRpb25zKCk7XG4gICAgICB2YXIgZm9jdXNlZE9wdGlvbkluZGV4ID0gb3B0aW9ucy5pbmRleE9mKGZvY3VzZWRPcHRpb24pO1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkT3B0aW9uOiBmb2N1c2VkT3B0aW9uLFxuICAgICAgICBmb2N1c2VkT3B0aW9uSWQ6IGZvY3VzZWRPcHRpb25JbmRleCA+IC0xID8gX3RoaXMuZ2V0Rm9jdXNlZE9wdGlvbklkKGZvY3VzZWRPcHRpb24pIDogbnVsbFxuICAgICAgfSk7XG4gICAgfTtcbiAgICBfdGhpcy5zaG91bGRIaWRlU2VsZWN0ZWRPcHRpb25zID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHNob3VsZEhpZGVTZWxlY3RlZE9wdGlvbnMoX3RoaXMucHJvcHMpO1xuICAgIH07XG4gICAgX3RoaXMub25WYWx1ZUlucHV0Rm9jdXMgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIF90aGlzLmZvY3VzKCk7XG4gICAgfTtcbiAgICBfdGhpcy5vbktleURvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczUgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzNS5pc011bHRpLFxuICAgICAgICBiYWNrc3BhY2VSZW1vdmVzVmFsdWUgPSBfdGhpcyRwcm9wczUuYmFja3NwYWNlUmVtb3Zlc1ZhbHVlLFxuICAgICAgICBlc2NhcGVDbGVhcnNWYWx1ZSA9IF90aGlzJHByb3BzNS5lc2NhcGVDbGVhcnNWYWx1ZSxcbiAgICAgICAgaW5wdXRWYWx1ZSA9IF90aGlzJHByb3BzNS5pbnB1dFZhbHVlLFxuICAgICAgICBpc0NsZWFyYWJsZSA9IF90aGlzJHByb3BzNS5pc0NsZWFyYWJsZSxcbiAgICAgICAgaXNEaXNhYmxlZCA9IF90aGlzJHByb3BzNS5pc0Rpc2FibGVkLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHM1Lm1lbnVJc09wZW4sXG4gICAgICAgIG9uS2V5RG93biA9IF90aGlzJHByb3BzNS5vbktleURvd24sXG4gICAgICAgIHRhYlNlbGVjdHNWYWx1ZSA9IF90aGlzJHByb3BzNS50YWJTZWxlY3RzVmFsdWUsXG4gICAgICAgIG9wZW5NZW51T25Gb2N1cyA9IF90aGlzJHByb3BzNS5vcGVuTWVudU9uRm9jdXM7XG4gICAgICB2YXIgX3RoaXMkc3RhdGUgPSBfdGhpcy5zdGF0ZSxcbiAgICAgICAgZm9jdXNlZE9wdGlvbiA9IF90aGlzJHN0YXRlLmZvY3VzZWRPcHRpb24sXG4gICAgICAgIGZvY3VzZWRWYWx1ZSA9IF90aGlzJHN0YXRlLmZvY3VzZWRWYWx1ZSxcbiAgICAgICAgc2VsZWN0VmFsdWUgPSBfdGhpcyRzdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIGlmIChpc0Rpc2FibGVkKSByZXR1cm47XG4gICAgICBpZiAodHlwZW9mIG9uS2V5RG93biA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvbktleURvd24oZXZlbnQpO1xuICAgICAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBCbG9jayBvcHRpb24gaG92ZXIgZXZlbnRzIHdoZW4gdGhlIHVzZXIgaGFzIGp1c3QgcHJlc3NlZCBhIGtleVxuICAgICAgX3RoaXMuYmxvY2tPcHRpb25Ib3ZlciA9IHRydWU7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgIGlmICghaXNNdWx0aSB8fCBpbnB1dFZhbHVlKSByZXR1cm47XG4gICAgICAgICAgX3RoaXMuZm9jdXNWYWx1ZSgncHJldmlvdXMnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgaWYgKCFpc011bHRpIHx8IGlucHV0VmFsdWUpIHJldHVybjtcbiAgICAgICAgICBfdGhpcy5mb2N1c1ZhbHVlKCduZXh0Jyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0RlbGV0ZSc6XG4gICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgICAgaWYgKGlucHV0VmFsdWUpIHJldHVybjtcbiAgICAgICAgICBpZiAoZm9jdXNlZFZhbHVlKSB7XG4gICAgICAgICAgICBfdGhpcy5yZW1vdmVWYWx1ZShmb2N1c2VkVmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWJhY2tzcGFjZVJlbW92ZXNWYWx1ZSkgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgICAgICAgX3RoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNDbGVhcmFibGUpIHtcbiAgICAgICAgICAgICAgX3RoaXMuY2xlYXJWYWx1ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgICBpZiAoX3RoaXMuaXNDb21wb3NpbmcpIHJldHVybjtcbiAgICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkgfHwgIW1lbnVJc09wZW4gfHwgIXRhYlNlbGVjdHNWYWx1ZSB8fCAhZm9jdXNlZE9wdGlvbiB8fFxuICAgICAgICAgIC8vIGRvbid0IGNhcHR1cmUgdGhlIGV2ZW50IGlmIHRoZSBtZW51IG9wZW5zIG9uIGZvY3VzIGFuZCB0aGUgZm9jdXNlZFxuICAgICAgICAgIC8vIG9wdGlvbiBpcyBhbHJlYWR5IHNlbGVjdGVkOyBpdCBicmVha3MgdGhlIGZsb3cgb2YgbmF2aWdhdGlvblxuICAgICAgICAgIG9wZW5NZW51T25Gb2N1cyAmJiBfdGhpcy5pc09wdGlvblNlbGVjdGVkKGZvY3VzZWRPcHRpb24sIHNlbGVjdFZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBfdGhpcy5zZWxlY3RPcHRpb24oZm9jdXNlZE9wdGlvbik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMjI5KSB7XG4gICAgICAgICAgICAvLyBpZ25vcmUgdGhlIGtleWRvd24gZXZlbnQgZnJvbSBhbiBJbnB1dCBNZXRob2QgRWRpdG9yKElNRSlcbiAgICAgICAgICAgIC8vIHJlZi4gaHR0cHM6Ly93d3cudzMub3JnL1RSL3VpZXZlbnRzLyNkZXRlcm1pbmUta2V5ZG93bi1rZXl1cC1rZXlDb2RlXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1lbnVJc09wZW4pIHtcbiAgICAgICAgICAgIGlmICghZm9jdXNlZE9wdGlvbikgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKF90aGlzLmlzQ29tcG9zaW5nKSByZXR1cm47XG4gICAgICAgICAgICBfdGhpcy5zZWxlY3RPcHRpb24oZm9jdXNlZE9wdGlvbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICAgIGlmIChtZW51SXNPcGVuKSB7XG4gICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgX3RoaXMub25JbnB1dENoYW5nZSgnJywge1xuICAgICAgICAgICAgICBhY3Rpb246ICdtZW51LWNsb3NlJyxcbiAgICAgICAgICAgICAgcHJldklucHV0VmFsdWU6IGlucHV0VmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgX3RoaXMub25NZW51Q2xvc2UoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzQ2xlYXJhYmxlICYmIGVzY2FwZUNsZWFyc1ZhbHVlKSB7XG4gICAgICAgICAgICBfdGhpcy5jbGVhclZhbHVlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgICAvLyBzcGFjZVxuICAgICAgICAgIGlmIChpbnB1dFZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghbWVudUlzT3Blbikge1xuICAgICAgICAgICAgX3RoaXMub3Blbk1lbnUoJ2ZpcnN0Jyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFmb2N1c2VkT3B0aW9uKSByZXR1cm47XG4gICAgICAgICAgX3RoaXMuc2VsZWN0T3B0aW9uKGZvY3VzZWRPcHRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICAgICAgX3RoaXMuZm9jdXNPcHRpb24oJ3VwJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF90aGlzLm9wZW5NZW51KCdsYXN0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgIGlmIChtZW51SXNPcGVuKSB7XG4gICAgICAgICAgICBfdGhpcy5mb2N1c09wdGlvbignZG93bicpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfdGhpcy5vcGVuTWVudSgnZmlyc3QnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1BhZ2VVcCc6XG4gICAgICAgICAgaWYgKCFtZW51SXNPcGVuKSByZXR1cm47XG4gICAgICAgICAgX3RoaXMuZm9jdXNPcHRpb24oJ3BhZ2V1cCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdQYWdlRG93bic6XG4gICAgICAgICAgaWYgKCFtZW51SXNPcGVuKSByZXR1cm47XG4gICAgICAgICAgX3RoaXMuZm9jdXNPcHRpb24oJ3BhZ2Vkb3duJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgICAgIGlmICghbWVudUlzT3BlbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCdmaXJzdCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdFbmQnOlxuICAgICAgICAgIGlmICghbWVudUlzT3BlbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCdsYXN0Jyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuICAgIF90aGlzLnN0YXRlLmluc3RhbmNlUHJlZml4ID0gJ3JlYWN0LXNlbGVjdC0nICsgKF90aGlzLnByb3BzLmluc3RhbmNlSWQgfHwgKytpbnN0YW5jZUlkKTtcbiAgICBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZSA9IGNsZWFuVmFsdWUoX3Byb3BzLnZhbHVlKTtcbiAgICAvLyBTZXQgZm9jdXNlZE9wdGlvbiBpZiBtZW51SXNPcGVuIGlzIHNldCBvbiBpbml0IChlLmcuIGRlZmF1bHRNZW51SXNPcGVuKVxuICAgIGlmIChfcHJvcHMubWVudUlzT3BlbiAmJiBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZS5sZW5ndGgpIHtcbiAgICAgIHZhciBmb2N1c2FibGVPcHRpb25zV2l0aElkcyA9IF90aGlzLmdldEZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzKCk7XG4gICAgICB2YXIgZm9jdXNhYmxlT3B0aW9ucyA9IF90aGlzLmJ1aWxkRm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgdmFyIG9wdGlvbkluZGV4ID0gZm9jdXNhYmxlT3B0aW9ucy5pbmRleE9mKF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlWzBdKTtcbiAgICAgIF90aGlzLnN0YXRlLmZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzID0gZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHM7XG4gICAgICBfdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uID0gZm9jdXNhYmxlT3B0aW9uc1tvcHRpb25JbmRleF07XG4gICAgICBfdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uSWQgPSBnZXRGb2N1c2VkT3B0aW9uSWQoZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMsIGZvY3VzYWJsZU9wdGlvbnNbb3B0aW9uSW5kZXhdKTtcbiAgICB9XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhTZWxlY3QsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudERpZE1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5zdGFydExpc3RlbmluZ0NvbXBvc2l0aW9uKCk7XG4gICAgICB0aGlzLnN0YXJ0TGlzdGVuaW5nVG9Ub3VjaCgpO1xuICAgICAgaWYgKHRoaXMucHJvcHMuY2xvc2VNZW51T25TY3JvbGwgJiYgZG9jdW1lbnQgJiYgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICAvLyBMaXN0ZW4gdG8gYWxsIHNjcm9sbCBldmVudHMsIGFuZCBmaWx0ZXIgdGhlbSBvdXQgaW5zaWRlIG9mICdvblNjcm9sbCdcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vblNjcm9sbCwgdHJ1ZSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5wcm9wcy5hdXRvRm9jdXMpIHtcbiAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNjcm9sbCBmb2N1c2VkT3B0aW9uIGludG8gdmlldyBpZiBtZW51SXNPcGVuIGlzIHNldCBvbiBtb3VudCAoZS5nLiBkZWZhdWx0TWVudUlzT3BlbilcbiAgICAgIGlmICh0aGlzLnByb3BzLm1lbnVJc09wZW4gJiYgdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uICYmIHRoaXMubWVudUxpc3RSZWYgJiYgdGhpcy5mb2N1c2VkT3B0aW9uUmVmKSB7XG4gICAgICAgIHNjcm9sbEludG9WaWV3KHRoaXMubWVudUxpc3RSZWYsIHRoaXMuZm9jdXNlZE9wdGlvblJlZik7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudERpZFVwZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM2ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgaXNEaXNhYmxlZCA9IF90aGlzJHByb3BzNi5pc0Rpc2FibGVkLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHM2Lm1lbnVJc09wZW47XG4gICAgICB2YXIgaXNGb2N1c2VkID0gdGhpcy5zdGF0ZS5pc0ZvY3VzZWQ7XG4gICAgICBpZiAoXG4gICAgICAvLyBlbnN1cmUgZm9jdXMgaXMgcmVzdG9yZWQgY29ycmVjdGx5IHdoZW4gdGhlIGNvbnRyb2wgYmVjb21lcyBlbmFibGVkXG4gICAgICBpc0ZvY3VzZWQgJiYgIWlzRGlzYWJsZWQgJiYgcHJldlByb3BzLmlzRGlzYWJsZWQgfHxcbiAgICAgIC8vIGVuc3VyZSBmb2N1cyBpcyBvbiB0aGUgSW5wdXQgd2hlbiB0aGUgbWVudSBvcGVuc1xuICAgICAgaXNGb2N1c2VkICYmIG1lbnVJc09wZW4gJiYgIXByZXZQcm9wcy5tZW51SXNPcGVuKSB7XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgfVxuICAgICAgaWYgKGlzRm9jdXNlZCAmJiBpc0Rpc2FibGVkICYmICFwcmV2UHJvcHMuaXNEaXNhYmxlZCkge1xuICAgICAgICAvLyBlbnN1cmUgc2VsZWN0IHN0YXRlIGdldHMgYmx1cnJlZCBpbiBjYXNlIFNlbGVjdCBpcyBwcm9ncmFtbWF0aWNhbGx5IGRpc2FibGVkIHdoaWxlIGZvY3VzZWRcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWRpZC11cGRhdGUtc2V0LXN0YXRlXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGlzRm9jdXNlZDogZmFsc2VcbiAgICAgICAgfSwgdGhpcy5vbk1lbnVDbG9zZSk7XG4gICAgICB9IGVsc2UgaWYgKCFpc0ZvY3VzZWQgJiYgIWlzRGlzYWJsZWQgJiYgcHJldlByb3BzLmlzRGlzYWJsZWQgJiYgdGhpcy5pbnB1dFJlZiA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkge1xuICAgICAgICAvLyBlbnN1cmUgc2VsZWN0IHN0YXRlIGdldHMgZm9jdXNlZCBpbiBjYXNlIFNlbGVjdCBpcyBwcm9ncmFtYXRpY2FsbHkgcmUtZW5hYmxlZCB3aGlsZSBmb2N1c2VkIChGaXJlZm94KVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tZGlkLXVwZGF0ZS1zZXQtc3RhdGVcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaXNGb2N1c2VkOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBzY3JvbGwgdGhlIGZvY3VzZWQgb3B0aW9uIGludG8gdmlldyBpZiBuZWNlc3NhcnlcbiAgICAgIGlmICh0aGlzLm1lbnVMaXN0UmVmICYmIHRoaXMuZm9jdXNlZE9wdGlvblJlZiAmJiB0aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlKSB7XG4gICAgICAgIHNjcm9sbEludG9WaWV3KHRoaXMubWVudUxpc3RSZWYsIHRoaXMuZm9jdXNlZE9wdGlvblJlZik7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9Gb2N1c2VkT3B0aW9uT25VcGRhdGUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50V2lsbFVubW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICB0aGlzLnN0b3BMaXN0ZW5pbmdDb21wb3NpdGlvbigpO1xuICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nVG9Ub3VjaCgpO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vblNjcm9sbCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gQ29uc3VtZXIgSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgfSwge1xuICAgIGtleTogXCJvbk1lbnVPcGVuXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uTWVudU9wZW4oKSB7XG4gICAgICB0aGlzLnByb3BzLm9uTWVudU9wZW4oKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25NZW51Q2xvc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25NZW51Q2xvc2UoKSB7XG4gICAgICB0aGlzLm9uSW5wdXRDaGFuZ2UoJycsIHtcbiAgICAgICAgYWN0aW9uOiAnbWVudS1jbG9zZScsXG4gICAgICAgIHByZXZJbnB1dFZhbHVlOiB0aGlzLnByb3BzLmlucHV0VmFsdWVcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wcm9wcy5vbk1lbnVDbG9zZSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJvbklucHV0Q2hhbmdlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uSW5wdXRDaGFuZ2UobmV3VmFsdWUsIGFjdGlvbk1ldGEpIHtcbiAgICAgIHRoaXMucHJvcHMub25JbnB1dENoYW5nZShuZXdWYWx1ZSwgYWN0aW9uTWV0YSk7XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gTWV0aG9kc1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB9LCB7XG4gICAga2V5OiBcImZvY3VzSW5wdXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9jdXNJbnB1dCgpIHtcbiAgICAgIGlmICghdGhpcy5pbnB1dFJlZikgcmV0dXJuO1xuICAgICAgdGhpcy5pbnB1dFJlZi5mb2N1cygpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJibHVySW5wdXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYmx1cklucHV0KCkge1xuICAgICAgaWYgKCF0aGlzLmlucHV0UmVmKSByZXR1cm47XG4gICAgICB0aGlzLmlucHV0UmVmLmJsdXIoKTtcbiAgICB9XG5cbiAgICAvLyBhbGlhc2VkIGZvciBjb25zdW1lcnNcbiAgfSwge1xuICAgIGtleTogXCJvcGVuTWVudVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvcGVuTWVudShmb2N1c09wdGlvbikge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkc3RhdGUyID0gdGhpcy5zdGF0ZSxcbiAgICAgICAgc2VsZWN0VmFsdWUgPSBfdGhpcyRzdGF0ZTIuc2VsZWN0VmFsdWUsXG4gICAgICAgIGlzRm9jdXNlZCA9IF90aGlzJHN0YXRlMi5pc0ZvY3VzZWQ7XG4gICAgICB2YXIgZm9jdXNhYmxlT3B0aW9ucyA9IHRoaXMuYnVpbGRGb2N1c2FibGVPcHRpb25zKCk7XG4gICAgICB2YXIgb3BlbkF0SW5kZXggPSBmb2N1c09wdGlvbiA9PT0gJ2ZpcnN0JyA/IDAgOiBmb2N1c2FibGVPcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICBpZiAoIXRoaXMucHJvcHMuaXNNdWx0aSkge1xuICAgICAgICB2YXIgc2VsZWN0ZWRJbmRleCA9IGZvY3VzYWJsZU9wdGlvbnMuaW5kZXhPZihzZWxlY3RWYWx1ZVswXSk7XG4gICAgICAgIGlmIChzZWxlY3RlZEluZGV4ID4gLTEpIHtcbiAgICAgICAgICBvcGVuQXRJbmRleCA9IHNlbGVjdGVkSW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gb25seSBzY3JvbGwgaWYgdGhlIG1lbnUgaXNuJ3QgYWxyZWFkeSBvcGVuXG4gICAgICB0aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gIShpc0ZvY3VzZWQgJiYgdGhpcy5tZW51TGlzdFJlZik7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlOiBmYWxzZSxcbiAgICAgICAgZm9jdXNlZFZhbHVlOiBudWxsLFxuICAgICAgICBmb2N1c2VkT3B0aW9uOiBmb2N1c2FibGVPcHRpb25zW29wZW5BdEluZGV4XSxcbiAgICAgICAgZm9jdXNlZE9wdGlvbklkOiB0aGlzLmdldEZvY3VzZWRPcHRpb25JZChmb2N1c2FibGVPcHRpb25zW29wZW5BdEluZGV4XSlcbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzMi5vbk1lbnVPcGVuKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9jdXNWYWx1ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb2N1c1ZhbHVlKGRpcmVjdGlvbikge1xuICAgICAgdmFyIF90aGlzJHN0YXRlMyA9IHRoaXMuc3RhdGUsXG4gICAgICAgIHNlbGVjdFZhbHVlID0gX3RoaXMkc3RhdGUzLnNlbGVjdFZhbHVlLFxuICAgICAgICBmb2N1c2VkVmFsdWUgPSBfdGhpcyRzdGF0ZTMuZm9jdXNlZFZhbHVlO1xuXG4gICAgICAvLyBPbmx5IG11bHRpc2VsZWN0cyBzdXBwb3J0IHZhbHVlIGZvY3VzaW5nXG4gICAgICBpZiAoIXRoaXMucHJvcHMuaXNNdWx0aSkgcmV0dXJuO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGZvY3VzZWRPcHRpb246IG51bGxcbiAgICAgIH0pO1xuICAgICAgdmFyIGZvY3VzZWRJbmRleCA9IHNlbGVjdFZhbHVlLmluZGV4T2YoZm9jdXNlZFZhbHVlKTtcbiAgICAgIGlmICghZm9jdXNlZFZhbHVlKSB7XG4gICAgICAgIGZvY3VzZWRJbmRleCA9IC0xO1xuICAgICAgfVxuICAgICAgdmFyIGxhc3RJbmRleCA9IHNlbGVjdFZhbHVlLmxlbmd0aCAtIDE7XG4gICAgICB2YXIgbmV4dEZvY3VzID0gLTE7XG4gICAgICBpZiAoIXNlbGVjdFZhbHVlLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcbiAgICAgICAgY2FzZSAncHJldmlvdXMnOlxuICAgICAgICAgIGlmIChmb2N1c2VkSW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIC8vIGRvbid0IGN5Y2xlIGZyb20gdGhlIHN0YXJ0IHRvIHRoZSBlbmRcbiAgICAgICAgICAgIG5leHRGb2N1cyA9IDA7XG4gICAgICAgICAgfSBlbHNlIGlmIChmb2N1c2VkSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAvLyBpZiBub3RoaW5nIGlzIGZvY3VzZWQsIGZvY3VzIHRoZSBsYXN0IHZhbHVlIGZpcnN0XG4gICAgICAgICAgICBuZXh0Rm9jdXMgPSBsYXN0SW5kZXg7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5leHRGb2N1cyA9IGZvY3VzZWRJbmRleCAtIDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICduZXh0JzpcbiAgICAgICAgICBpZiAoZm9jdXNlZEluZGV4ID4gLTEgJiYgZm9jdXNlZEluZGV4IDwgbGFzdEluZGV4KSB7XG4gICAgICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggKyAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpbnB1dElzSGlkZGVuOiBuZXh0Rm9jdXMgIT09IC0xLFxuICAgICAgICBmb2N1c2VkVmFsdWU6IHNlbGVjdFZhbHVlW25leHRGb2N1c11cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmb2N1c09wdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb2N1c09wdGlvbigpIHtcbiAgICAgIHZhciBkaXJlY3Rpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6ICdmaXJzdCc7XG4gICAgICB2YXIgcGFnZVNpemUgPSB0aGlzLnByb3BzLnBhZ2VTaXplO1xuICAgICAgdmFyIGZvY3VzZWRPcHRpb24gPSB0aGlzLnN0YXRlLmZvY3VzZWRPcHRpb247XG4gICAgICB2YXIgb3B0aW9ucyA9IHRoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgaWYgKCFvcHRpb25zLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgdmFyIG5leHRGb2N1cyA9IDA7IC8vIGhhbmRsZXMgJ2ZpcnN0J1xuICAgICAgdmFyIGZvY3VzZWRJbmRleCA9IG9wdGlvbnMuaW5kZXhPZihmb2N1c2VkT3B0aW9uKTtcbiAgICAgIGlmICghZm9jdXNlZE9wdGlvbikge1xuICAgICAgICBmb2N1c2VkSW5kZXggPSAtMTtcbiAgICAgIH1cbiAgICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgICAgbmV4dEZvY3VzID0gZm9jdXNlZEluZGV4ID4gMCA/IGZvY3VzZWRJbmRleCAtIDEgOiBvcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ2Rvd24nKSB7XG4gICAgICAgIG5leHRGb2N1cyA9IChmb2N1c2VkSW5kZXggKyAxKSAlIG9wdGlvbnMubGVuZ3RoO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdwYWdldXAnKSB7XG4gICAgICAgIG5leHRGb2N1cyA9IGZvY3VzZWRJbmRleCAtIHBhZ2VTaXplO1xuICAgICAgICBpZiAobmV4dEZvY3VzIDwgMCkgbmV4dEZvY3VzID0gMDtcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAncGFnZWRvd24nKSB7XG4gICAgICAgIG5leHRGb2N1cyA9IGZvY3VzZWRJbmRleCArIHBhZ2VTaXplO1xuICAgICAgICBpZiAobmV4dEZvY3VzID4gb3B0aW9ucy5sZW5ndGggLSAxKSBuZXh0Rm9jdXMgPSBvcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ2xhc3QnKSB7XG4gICAgICAgIG5leHRGb2N1cyA9IG9wdGlvbnMubGVuZ3RoIC0gMTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2Nyb2xsVG9Gb2N1c2VkT3B0aW9uT25VcGRhdGUgPSB0cnVlO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGZvY3VzZWRPcHRpb246IG9wdGlvbnNbbmV4dEZvY3VzXSxcbiAgICAgICAgZm9jdXNlZFZhbHVlOiBudWxsLFxuICAgICAgICBmb2N1c2VkT3B0aW9uSWQ6IHRoaXMuZ2V0Rm9jdXNlZE9wdGlvbklkKG9wdGlvbnNbbmV4dEZvY3VzXSlcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRUaGVtZVwiLFxuICAgIHZhbHVlOlxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIEdldHRlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIGZ1bmN0aW9uIGdldFRoZW1lKCkge1xuICAgICAgLy8gVXNlIHRoZSBkZWZhdWx0IHRoZW1lIGlmIHRoZXJlIGFyZSBubyBjdXN0b21pc2F0aW9ucy5cbiAgICAgIGlmICghdGhpcy5wcm9wcy50aGVtZSkge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFRoZW1lO1xuICAgICAgfVxuICAgICAgLy8gSWYgdGhlIHRoZW1lIHByb3AgaXMgYSBmdW5jdGlvbiwgYXNzdW1lIHRoZSBmdW5jdGlvblxuICAgICAgLy8ga25vd3MgaG93IHRvIG1lcmdlIHRoZSBwYXNzZWQtaW4gZGVmYXVsdCB0aGVtZSB3aXRoXG4gICAgICAvLyBpdHMgb3duIG1vZGlmaWNhdGlvbnMuXG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMudGhlbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMudGhlbWUoZGVmYXVsdFRoZW1lKTtcbiAgICAgIH1cbiAgICAgIC8vIE90aGVyd2lzZSwgaWYgYSBwbGFpbiB0aGVtZSBvYmplY3Qgd2FzIHBhc3NlZCBpbixcbiAgICAgIC8vIG92ZXJsYXkgaXQgd2l0aCB0aGUgZGVmYXVsdCB0aGVtZS5cbiAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGRlZmF1bHRUaGVtZSksIHRoaXMucHJvcHMudGhlbWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRDb21tb25Qcm9wc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDb21tb25Qcm9wcygpIHtcbiAgICAgIHZhciBjbGVhclZhbHVlID0gdGhpcy5jbGVhclZhbHVlLFxuICAgICAgICBjeCA9IHRoaXMuY3gsXG4gICAgICAgIGdldFN0eWxlcyA9IHRoaXMuZ2V0U3R5bGVzLFxuICAgICAgICBnZXRDbGFzc05hbWVzID0gdGhpcy5nZXRDbGFzc05hbWVzLFxuICAgICAgICBnZXRWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUsXG4gICAgICAgIHNlbGVjdE9wdGlvbiA9IHRoaXMuc2VsZWN0T3B0aW9uLFxuICAgICAgICBzZXRWYWx1ZSA9IHRoaXMuc2V0VmFsdWUsXG4gICAgICAgIHByb3BzID0gdGhpcy5wcm9wcztcbiAgICAgIHZhciBpc011bHRpID0gcHJvcHMuaXNNdWx0aSxcbiAgICAgICAgaXNSdGwgPSBwcm9wcy5pc1J0bCxcbiAgICAgICAgb3B0aW9ucyA9IHByb3BzLm9wdGlvbnM7XG4gICAgICB2YXIgaGFzVmFsdWUgPSB0aGlzLmhhc1ZhbHVlKCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjbGVhclZhbHVlOiBjbGVhclZhbHVlLFxuICAgICAgICBjeDogY3gsXG4gICAgICAgIGdldFN0eWxlczogZ2V0U3R5bGVzLFxuICAgICAgICBnZXRDbGFzc05hbWVzOiBnZXRDbGFzc05hbWVzLFxuICAgICAgICBnZXRWYWx1ZTogZ2V0VmFsdWUsXG4gICAgICAgIGhhc1ZhbHVlOiBoYXNWYWx1ZSxcbiAgICAgICAgaXNNdWx0aTogaXNNdWx0aSxcbiAgICAgICAgaXNSdGw6IGlzUnRsLFxuICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICBzZWxlY3RPcHRpb246IHNlbGVjdE9wdGlvbixcbiAgICAgICAgc2VsZWN0UHJvcHM6IHByb3BzLFxuICAgICAgICBzZXRWYWx1ZTogc2V0VmFsdWUsXG4gICAgICAgIHRoZW1lOiB0aGlzLmdldFRoZW1lKClcbiAgICAgIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImhhc1ZhbHVlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhc1ZhbHVlKCkge1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIHJldHVybiBzZWxlY3RWYWx1ZS5sZW5ndGggPiAwO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYXNPcHRpb25zXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhc09wdGlvbnMoKSB7XG4gICAgICByZXR1cm4gISF0aGlzLmdldEZvY3VzYWJsZU9wdGlvbnMoKS5sZW5ndGg7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImlzQ2xlYXJhYmxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzQ2xlYXJhYmxlKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzNyA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzQ2xlYXJhYmxlID0gX3RoaXMkcHJvcHM3LmlzQ2xlYXJhYmxlLFxuICAgICAgICBpc011bHRpID0gX3RoaXMkcHJvcHM3LmlzTXVsdGk7XG5cbiAgICAgIC8vIHNpbmdsZSBzZWxlY3QsIGJ5IGRlZmF1bHQsIElTIE5PVCBjbGVhcmFibGVcbiAgICAgIC8vIG11bHRpIHNlbGVjdCwgYnkgZGVmYXVsdCwgSVMgY2xlYXJhYmxlXG4gICAgICBpZiAoaXNDbGVhcmFibGUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGlzTXVsdGk7XG4gICAgICByZXR1cm4gaXNDbGVhcmFibGU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImlzT3B0aW9uRGlzYWJsZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNPcHRpb25EaXNhYmxlZChvcHRpb24sIHNlbGVjdFZhbHVlKSB7XG4gICAgICByZXR1cm4gX2lzT3B0aW9uRGlzYWJsZWQodGhpcy5wcm9wcywgb3B0aW9uLCBzZWxlY3RWYWx1ZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImlzT3B0aW9uU2VsZWN0ZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNPcHRpb25TZWxlY3RlZChvcHRpb24sIHNlbGVjdFZhbHVlKSB7XG4gICAgICByZXR1cm4gX2lzT3B0aW9uU2VsZWN0ZWQodGhpcy5wcm9wcywgb3B0aW9uLCBzZWxlY3RWYWx1ZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImZpbHRlck9wdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmaWx0ZXJPcHRpb24ob3B0aW9uLCBpbnB1dFZhbHVlKSB7XG4gICAgICByZXR1cm4gX2ZpbHRlck9wdGlvbih0aGlzLnByb3BzLCBvcHRpb24sIGlucHV0VmFsdWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmb3JtYXRPcHRpb25MYWJlbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JtYXRPcHRpb25MYWJlbChkYXRhLCBjb250ZXh0KSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMuZm9ybWF0T3B0aW9uTGFiZWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdmFyIF9pbnB1dFZhbHVlID0gdGhpcy5wcm9wcy5pbnB1dFZhbHVlO1xuICAgICAgICB2YXIgX3NlbGVjdFZhbHVlID0gdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuZm9ybWF0T3B0aW9uTGFiZWwoZGF0YSwge1xuICAgICAgICAgIGNvbnRleHQ6IGNvbnRleHQsXG4gICAgICAgICAgaW5wdXRWYWx1ZTogX2lucHV0VmFsdWUsXG4gICAgICAgICAgc2VsZWN0VmFsdWU6IF9zZWxlY3RWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9wdGlvbkxhYmVsKGRhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmb3JtYXRHcm91cExhYmVsXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZvcm1hdEdyb3VwTGFiZWwoZGF0YSkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuZm9ybWF0R3JvdXBMYWJlbChkYXRhKTtcbiAgICB9XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBNb3VzZSBIYW5kbGVyc1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB9LCB7XG4gICAga2V5OiBcInN0YXJ0TGlzdGVuaW5nQ29tcG9zaXRpb25cIixcbiAgICB2YWx1ZTpcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBDb21wb3NpdGlvbiBIYW5kbGVyc1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgZnVuY3Rpb24gc3RhcnRMaXN0ZW5pbmdDb21wb3NpdGlvbigpIHtcbiAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uc3RhcnQnLCB0aGlzLm9uQ29tcG9zaXRpb25TdGFydCwgZmFsc2UpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3NpdGlvbmVuZCcsIHRoaXMub25Db21wb3NpdGlvbkVuZCwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdG9wTGlzdGVuaW5nQ29tcG9zaXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3RvcExpc3RlbmluZ0NvbXBvc2l0aW9uKCkge1xuICAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY29tcG9zaXRpb25zdGFydCcsIHRoaXMub25Db21wb3NpdGlvblN0YXJ0KTtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY29tcG9zaXRpb25lbmQnLCB0aGlzLm9uQ29tcG9zaXRpb25FbmQpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdGFydExpc3RlbmluZ1RvVG91Y2hcIixcbiAgICB2YWx1ZTpcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBUb3VjaCBIYW5kbGVyc1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgZnVuY3Rpb24gc3RhcnRMaXN0ZW5pbmdUb1RvdWNoKCkge1xuICAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMub25Ub3VjaFN0YXJ0LCBmYWxzZSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHRoaXMub25Ub3VjaE1vdmUsIGZhbHNlKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLm9uVG91Y2hFbmQsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RvcExpc3RlbmluZ1RvVG91Y2hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3RvcExpc3RlbmluZ1RvVG91Y2goKSB7XG4gICAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy5vblRvdWNoU3RhcnQpO1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLm9uVG91Y2hNb3ZlKTtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLm9uVG91Y2hFbmQpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJJbnB1dFwiLFxuICAgIHZhbHVlOlxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFJlbmRlcmVyc1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGZ1bmN0aW9uIHJlbmRlcklucHV0KCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzOCA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczguaXNEaXNhYmxlZCxcbiAgICAgICAgaXNTZWFyY2hhYmxlID0gX3RoaXMkcHJvcHM4LmlzU2VhcmNoYWJsZSxcbiAgICAgICAgaW5wdXRJZCA9IF90aGlzJHByb3BzOC5pbnB1dElkLFxuICAgICAgICBpbnB1dFZhbHVlID0gX3RoaXMkcHJvcHM4LmlucHV0VmFsdWUsXG4gICAgICAgIHRhYkluZGV4ID0gX3RoaXMkcHJvcHM4LnRhYkluZGV4LFxuICAgICAgICBmb3JtID0gX3RoaXMkcHJvcHM4LmZvcm0sXG4gICAgICAgIG1lbnVJc09wZW4gPSBfdGhpcyRwcm9wczgubWVudUlzT3BlbixcbiAgICAgICAgcmVxdWlyZWQgPSBfdGhpcyRwcm9wczgucmVxdWlyZWQ7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50cyA9IHRoaXMuZ2V0Q29tcG9uZW50cygpLFxuICAgICAgICBJbnB1dCA9IF90aGlzJGdldENvbXBvbmVudHMuSW5wdXQ7XG4gICAgICB2YXIgX3RoaXMkc3RhdGU0ID0gdGhpcy5zdGF0ZSxcbiAgICAgICAgaW5wdXRJc0hpZGRlbiA9IF90aGlzJHN0YXRlNC5pbnB1dElzSGlkZGVuLFxuICAgICAgICBhcmlhU2VsZWN0aW9uID0gX3RoaXMkc3RhdGU0LmFyaWFTZWxlY3Rpb247XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIGlkID0gaW5wdXRJZCB8fCB0aGlzLmdldEVsZW1lbnRJZCgnaW5wdXQnKTtcblxuICAgICAgLy8gYXJpYSBhdHRyaWJ1dGVzIG1ha2VzIHRoZSBKU1ggXCJub2lzeVwiLCBzZXBhcmF0ZWQgZm9yIGNsYXJpdHlcbiAgICAgIHZhciBhcmlhQXR0cmlidXRlcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgJ2FyaWEtYXV0b2NvbXBsZXRlJzogJ2xpc3QnLFxuICAgICAgICAnYXJpYS1leHBhbmRlZCc6IG1lbnVJc09wZW4sXG4gICAgICAgICdhcmlhLWhhc3BvcHVwJzogdHJ1ZSxcbiAgICAgICAgJ2FyaWEtZXJyb3JtZXNzYWdlJzogdGhpcy5wcm9wc1snYXJpYS1lcnJvcm1lc3NhZ2UnXSxcbiAgICAgICAgJ2FyaWEtaW52YWxpZCc6IHRoaXMucHJvcHNbJ2FyaWEtaW52YWxpZCddLFxuICAgICAgICAnYXJpYS1sYWJlbCc6IHRoaXMucHJvcHNbJ2FyaWEtbGFiZWwnXSxcbiAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IHRoaXMucHJvcHNbJ2FyaWEtbGFiZWxsZWRieSddLFxuICAgICAgICAnYXJpYS1yZXF1aXJlZCc6IHJlcXVpcmVkLFxuICAgICAgICByb2xlOiAnY29tYm9ib3gnLFxuICAgICAgICAnYXJpYS1hY3RpdmVkZXNjZW5kYW50JzogdGhpcy5pc0FwcGxlRGV2aWNlID8gdW5kZWZpbmVkIDogdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uSWQgfHwgJydcbiAgICAgIH0sIG1lbnVJc09wZW4gJiYge1xuICAgICAgICAnYXJpYS1jb250cm9scyc6IHRoaXMuZ2V0RWxlbWVudElkKCdsaXN0Ym94JylcbiAgICAgIH0pLCAhaXNTZWFyY2hhYmxlICYmIHtcbiAgICAgICAgJ2FyaWEtcmVhZG9ubHknOiB0cnVlXG4gICAgICB9KSwgdGhpcy5oYXNWYWx1ZSgpID8gKGFyaWFTZWxlY3Rpb24gPT09IG51bGwgfHwgYXJpYVNlbGVjdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXJpYVNlbGVjdGlvbi5hY3Rpb24pID09PSAnaW5pdGlhbC1pbnB1dC1mb2N1cycgJiYge1xuICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc6IHRoaXMuZ2V0RWxlbWVudElkKCdsaXZlLXJlZ2lvbicpXG4gICAgICB9IDoge1xuICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc6IHRoaXMuZ2V0RWxlbWVudElkKCdwbGFjZWhvbGRlcicpXG4gICAgICB9KTtcbiAgICAgIGlmICghaXNTZWFyY2hhYmxlKSB7XG4gICAgICAgIC8vIHVzZSBhIGR1bW15IGlucHV0IHRvIG1haW50YWluIGZvY3VzL2JsdXIgZnVuY3Rpb25hbGl0eVxuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRHVtbXlJbnB1dCwgX2V4dGVuZHMoe1xuICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICBpbm5lclJlZjogdGhpcy5nZXRJbnB1dFJlZixcbiAgICAgICAgICBvbkJsdXI6IHRoaXMub25JbnB1dEJsdXIsXG4gICAgICAgICAgb25DaGFuZ2U6IG5vb3AsXG4gICAgICAgICAgb25Gb2N1czogdGhpcy5vbklucHV0Rm9jdXMsXG4gICAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgdGFiSW5kZXg6IHRhYkluZGV4LFxuICAgICAgICAgIGlucHV0TW9kZTogXCJub25lXCIsXG4gICAgICAgICAgZm9ybTogZm9ybSxcbiAgICAgICAgICB2YWx1ZTogXCJcIlxuICAgICAgICB9LCBhcmlhQXR0cmlidXRlcykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KElucHV0LCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgYXV0b0NhcGl0YWxpemU6IFwibm9uZVwiLFxuICAgICAgICBhdXRvQ29tcGxldGU6IFwib2ZmXCIsXG4gICAgICAgIGF1dG9Db3JyZWN0OiBcIm9mZlwiLFxuICAgICAgICBpZDogaWQsXG4gICAgICAgIGlubmVyUmVmOiB0aGlzLmdldElucHV0UmVmLFxuICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICBpc0hpZGRlbjogaW5wdXRJc0hpZGRlbixcbiAgICAgICAgb25CbHVyOiB0aGlzLm9uSW5wdXRCbHVyLFxuICAgICAgICBvbkNoYW5nZTogdGhpcy5oYW5kbGVJbnB1dENoYW5nZSxcbiAgICAgICAgb25Gb2N1czogdGhpcy5vbklucHV0Rm9jdXMsXG4gICAgICAgIHNwZWxsQ2hlY2s6IFwiZmFsc2VcIixcbiAgICAgICAgdGFiSW5kZXg6IHRhYkluZGV4LFxuICAgICAgICBmb3JtOiBmb3JtLFxuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdmFsdWU6IGlucHV0VmFsdWVcbiAgICAgIH0sIGFyaWFBdHRyaWJ1dGVzKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclBsYWNlaG9sZGVyT3JWYWx1ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJQbGFjZWhvbGRlck9yVmFsdWUoKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcbiAgICAgIHZhciBfdGhpcyRnZXRDb21wb25lbnRzMiA9IHRoaXMuZ2V0Q29tcG9uZW50cygpLFxuICAgICAgICBNdWx0aVZhbHVlID0gX3RoaXMkZ2V0Q29tcG9uZW50czIuTXVsdGlWYWx1ZSxcbiAgICAgICAgTXVsdGlWYWx1ZUNvbnRhaW5lciA9IF90aGlzJGdldENvbXBvbmVudHMyLk11bHRpVmFsdWVDb250YWluZXIsXG4gICAgICAgIE11bHRpVmFsdWVMYWJlbCA9IF90aGlzJGdldENvbXBvbmVudHMyLk11bHRpVmFsdWVMYWJlbCxcbiAgICAgICAgTXVsdGlWYWx1ZVJlbW92ZSA9IF90aGlzJGdldENvbXBvbmVudHMyLk11bHRpVmFsdWVSZW1vdmUsXG4gICAgICAgIFNpbmdsZVZhbHVlID0gX3RoaXMkZ2V0Q29tcG9uZW50czIuU2luZ2xlVmFsdWUsXG4gICAgICAgIFBsYWNlaG9sZGVyID0gX3RoaXMkZ2V0Q29tcG9uZW50czIuUGxhY2Vob2xkZXI7XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIF90aGlzJHByb3BzOSA9IHRoaXMucHJvcHMsXG4gICAgICAgIGNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZSA9IF90aGlzJHByb3BzOS5jb250cm9sU2hvdWxkUmVuZGVyVmFsdWUsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczkuaXNEaXNhYmxlZCxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzOS5pc011bHRpLFxuICAgICAgICBpbnB1dFZhbHVlID0gX3RoaXMkcHJvcHM5LmlucHV0VmFsdWUsXG4gICAgICAgIHBsYWNlaG9sZGVyID0gX3RoaXMkcHJvcHM5LnBsYWNlaG9sZGVyO1xuICAgICAgdmFyIF90aGlzJHN0YXRlNSA9IHRoaXMuc3RhdGUsXG4gICAgICAgIHNlbGVjdFZhbHVlID0gX3RoaXMkc3RhdGU1LnNlbGVjdFZhbHVlLFxuICAgICAgICBmb2N1c2VkVmFsdWUgPSBfdGhpcyRzdGF0ZTUuZm9jdXNlZFZhbHVlLFxuICAgICAgICBpc0ZvY3VzZWQgPSBfdGhpcyRzdGF0ZTUuaXNGb2N1c2VkO1xuICAgICAgaWYgKCF0aGlzLmhhc1ZhbHVlKCkgfHwgIWNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZSkge1xuICAgICAgICByZXR1cm4gaW5wdXRWYWx1ZSA/IG51bGwgOiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChQbGFjZWhvbGRlciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgICAga2V5OiBcInBsYWNlaG9sZGVyXCIsXG4gICAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZCxcbiAgICAgICAgICBpbm5lclByb3BzOiB7XG4gICAgICAgICAgICBpZDogdGhpcy5nZXRFbGVtZW50SWQoJ3BsYWNlaG9sZGVyJylcbiAgICAgICAgICB9XG4gICAgICAgIH0pLCBwbGFjZWhvbGRlcik7XG4gICAgICB9XG4gICAgICBpZiAoaXNNdWx0aSkge1xuICAgICAgICByZXR1cm4gc2VsZWN0VmFsdWUubWFwKGZ1bmN0aW9uIChvcHQsIGluZGV4KSB7XG4gICAgICAgICAgdmFyIGlzT3B0aW9uRm9jdXNlZCA9IG9wdCA9PT0gZm9jdXNlZFZhbHVlO1xuICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChfdGhpczMuZ2V0T3B0aW9uTGFiZWwob3B0KSwgXCItXCIpLmNvbmNhdChfdGhpczMuZ2V0T3B0aW9uVmFsdWUob3B0KSk7XG4gICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE11bHRpVmFsdWUsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgICBDb250YWluZXI6IE11bHRpVmFsdWVDb250YWluZXIsXG4gICAgICAgICAgICAgIExhYmVsOiBNdWx0aVZhbHVlTGFiZWwsXG4gICAgICAgICAgICAgIFJlbW92ZTogTXVsdGlWYWx1ZVJlbW92ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzRm9jdXNlZDogaXNPcHRpb25Gb2N1c2VkLFxuICAgICAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgcmVtb3ZlUHJvcHM6IHtcbiAgICAgICAgICAgICAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMzLnJlbW92ZVZhbHVlKG9wdCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9uVG91Y2hFbmQ6IGZ1bmN0aW9uIG9uVG91Y2hFbmQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMy5yZW1vdmVWYWx1ZShvcHQpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbk1vdXNlRG93bjogZnVuY3Rpb24gb25Nb3VzZURvd24oZSkge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRhdGE6IG9wdFxuICAgICAgICAgIH0pLCBfdGhpczMuZm9ybWF0T3B0aW9uTGFiZWwob3B0LCAndmFsdWUnKSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGlucHV0VmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgc2luZ2xlVmFsdWUgPSBzZWxlY3RWYWx1ZVswXTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTaW5nbGVWYWx1ZSwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGRhdGE6IHNpbmdsZVZhbHVlLFxuICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkXG4gICAgICB9KSwgdGhpcy5mb3JtYXRPcHRpb25MYWJlbChzaW5nbGVWYWx1ZSwgJ3ZhbHVlJykpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJDbGVhckluZGljYXRvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJDbGVhckluZGljYXRvcigpIHtcbiAgICAgIHZhciBfdGhpcyRnZXRDb21wb25lbnRzMyA9IHRoaXMuZ2V0Q29tcG9uZW50cygpLFxuICAgICAgICBDbGVhckluZGljYXRvciA9IF90aGlzJGdldENvbXBvbmVudHMzLkNsZWFySW5kaWNhdG9yO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBfdGhpcyRwcm9wczEwID0gdGhpcy5wcm9wcyxcbiAgICAgICAgaXNEaXNhYmxlZCA9IF90aGlzJHByb3BzMTAuaXNEaXNhYmxlZCxcbiAgICAgICAgaXNMb2FkaW5nID0gX3RoaXMkcHJvcHMxMC5pc0xvYWRpbmc7XG4gICAgICB2YXIgaXNGb2N1c2VkID0gdGhpcy5zdGF0ZS5pc0ZvY3VzZWQ7XG4gICAgICBpZiAoIXRoaXMuaXNDbGVhcmFibGUoKSB8fCAhQ2xlYXJJbmRpY2F0b3IgfHwgaXNEaXNhYmxlZCB8fCAhdGhpcy5oYXNWYWx1ZSgpIHx8IGlzTG9hZGluZykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBpbm5lclByb3BzID0ge1xuICAgICAgICBvbk1vdXNlRG93bjogdGhpcy5vbkNsZWFySW5kaWNhdG9yTW91c2VEb3duLFxuICAgICAgICBvblRvdWNoRW5kOiB0aGlzLm9uQ2xlYXJJbmRpY2F0b3JUb3VjaEVuZCxcbiAgICAgICAgJ2FyaWEtaGlkZGVuJzogJ3RydWUnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENsZWFySW5kaWNhdG9yLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWRcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyTG9hZGluZ0luZGljYXRvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJMb2FkaW5nSW5kaWNhdG9yKCkge1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHM0ID0gdGhpcy5nZXRDb21wb25lbnRzKCksXG4gICAgICAgIExvYWRpbmdJbmRpY2F0b3IgPSBfdGhpcyRnZXRDb21wb25lbnRzNC5Mb2FkaW5nSW5kaWNhdG9yO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBfdGhpcyRwcm9wczExID0gdGhpcy5wcm9wcyxcbiAgICAgICAgaXNEaXNhYmxlZCA9IF90aGlzJHByb3BzMTEuaXNEaXNhYmxlZCxcbiAgICAgICAgaXNMb2FkaW5nID0gX3RoaXMkcHJvcHMxMS5pc0xvYWRpbmc7XG4gICAgICB2YXIgaXNGb2N1c2VkID0gdGhpcy5zdGF0ZS5pc0ZvY3VzZWQ7XG4gICAgICBpZiAoIUxvYWRpbmdJbmRpY2F0b3IgfHwgIWlzTG9hZGluZykgcmV0dXJuIG51bGw7XG4gICAgICB2YXIgaW5uZXJQcm9wcyA9IHtcbiAgICAgICAgJ2FyaWEtaGlkZGVuJzogJ3RydWUnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExvYWRpbmdJbmRpY2F0b3IsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBpbm5lclByb3BzOiBpbm5lclByb3BzLFxuICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZFxuICAgICAgfSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJJbmRpY2F0b3JTZXBhcmF0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVySW5kaWNhdG9yU2VwYXJhdG9yKCkge1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHM1ID0gdGhpcy5nZXRDb21wb25lbnRzKCksXG4gICAgICAgIERyb3Bkb3duSW5kaWNhdG9yID0gX3RoaXMkZ2V0Q29tcG9uZW50czUuRHJvcGRvd25JbmRpY2F0b3IsXG4gICAgICAgIEluZGljYXRvclNlcGFyYXRvciA9IF90aGlzJGdldENvbXBvbmVudHM1LkluZGljYXRvclNlcGFyYXRvcjtcblxuICAgICAgLy8gc2VwYXJhdG9yIGRvZXNuJ3QgbWFrZSBzZW5zZSB3aXRob3V0IHRoZSBkcm9wZG93biBpbmRpY2F0b3JcbiAgICAgIGlmICghRHJvcGRvd25JbmRpY2F0b3IgfHwgIUluZGljYXRvclNlcGFyYXRvcikgcmV0dXJuIG51bGw7XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIGlzRGlzYWJsZWQgPSB0aGlzLnByb3BzLmlzRGlzYWJsZWQ7XG4gICAgICB2YXIgaXNGb2N1c2VkID0gdGhpcy5zdGF0ZS5pc0ZvY3VzZWQ7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoSW5kaWNhdG9yU2VwYXJhdG9yLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWRcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyRHJvcGRvd25JbmRpY2F0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyRHJvcGRvd25JbmRpY2F0b3IoKSB7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czYgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgRHJvcGRvd25JbmRpY2F0b3IgPSBfdGhpcyRnZXRDb21wb25lbnRzNi5Ecm9wZG93bkluZGljYXRvcjtcbiAgICAgIGlmICghRHJvcGRvd25JbmRpY2F0b3IpIHJldHVybiBudWxsO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBpc0Rpc2FibGVkID0gdGhpcy5wcm9wcy5pc0Rpc2FibGVkO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgdmFyIGlubmVyUHJvcHMgPSB7XG4gICAgICAgIG9uTW91c2VEb3duOiB0aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JNb3VzZURvd24sXG4gICAgICAgIG9uVG91Y2hFbmQ6IHRoaXMub25Ecm9wZG93bkluZGljYXRvclRvdWNoRW5kLFxuICAgICAgICAnYXJpYS1oaWRkZW4nOiAndHJ1ZSdcbiAgICAgIH07XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRHJvcGRvd25JbmRpY2F0b3IsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBpbm5lclByb3BzOiBpbm5lclByb3BzLFxuICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZFxuICAgICAgfSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJNZW51XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlck1lbnUoKSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcbiAgICAgIHZhciBfdGhpcyRnZXRDb21wb25lbnRzNyA9IHRoaXMuZ2V0Q29tcG9uZW50cygpLFxuICAgICAgICBHcm91cCA9IF90aGlzJGdldENvbXBvbmVudHM3Lkdyb3VwLFxuICAgICAgICBHcm91cEhlYWRpbmcgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5Hcm91cEhlYWRpbmcsXG4gICAgICAgIE1lbnUgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5NZW51LFxuICAgICAgICBNZW51TGlzdCA9IF90aGlzJGdldENvbXBvbmVudHM3Lk1lbnVMaXN0LFxuICAgICAgICBNZW51UG9ydGFsID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuTWVudVBvcnRhbCxcbiAgICAgICAgTG9hZGluZ01lc3NhZ2UgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5Mb2FkaW5nTWVzc2FnZSxcbiAgICAgICAgTm9PcHRpb25zTWVzc2FnZSA9IF90aGlzJGdldENvbXBvbmVudHM3Lk5vT3B0aW9uc01lc3NhZ2UsXG4gICAgICAgIE9wdGlvbiA9IF90aGlzJGdldENvbXBvbmVudHM3Lk9wdGlvbjtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgZm9jdXNlZE9wdGlvbiA9IHRoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbjtcbiAgICAgIHZhciBfdGhpcyRwcm9wczEyID0gdGhpcy5wcm9wcyxcbiAgICAgICAgY2FwdHVyZU1lbnVTY3JvbGwgPSBfdGhpcyRwcm9wczEyLmNhcHR1cmVNZW51U2Nyb2xsLFxuICAgICAgICBpbnB1dFZhbHVlID0gX3RoaXMkcHJvcHMxMi5pbnB1dFZhbHVlLFxuICAgICAgICBpc0xvYWRpbmcgPSBfdGhpcyRwcm9wczEyLmlzTG9hZGluZyxcbiAgICAgICAgbG9hZGluZ01lc3NhZ2UgPSBfdGhpcyRwcm9wczEyLmxvYWRpbmdNZXNzYWdlLFxuICAgICAgICBtaW5NZW51SGVpZ2h0ID0gX3RoaXMkcHJvcHMxMi5taW5NZW51SGVpZ2h0LFxuICAgICAgICBtYXhNZW51SGVpZ2h0ID0gX3RoaXMkcHJvcHMxMi5tYXhNZW51SGVpZ2h0LFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHMxMi5tZW51SXNPcGVuLFxuICAgICAgICBtZW51UGxhY2VtZW50ID0gX3RoaXMkcHJvcHMxMi5tZW51UGxhY2VtZW50LFxuICAgICAgICBtZW51UG9zaXRpb24gPSBfdGhpcyRwcm9wczEyLm1lbnVQb3NpdGlvbixcbiAgICAgICAgbWVudVBvcnRhbFRhcmdldCA9IF90aGlzJHByb3BzMTIubWVudVBvcnRhbFRhcmdldCxcbiAgICAgICAgbWVudVNob3VsZEJsb2NrU2Nyb2xsID0gX3RoaXMkcHJvcHMxMi5tZW51U2hvdWxkQmxvY2tTY3JvbGwsXG4gICAgICAgIG1lbnVTaG91bGRTY3JvbGxJbnRvVmlldyA9IF90aGlzJHByb3BzMTIubWVudVNob3VsZFNjcm9sbEludG9WaWV3LFxuICAgICAgICBub09wdGlvbnNNZXNzYWdlID0gX3RoaXMkcHJvcHMxMi5ub09wdGlvbnNNZXNzYWdlLFxuICAgICAgICBvbk1lbnVTY3JvbGxUb1RvcCA9IF90aGlzJHByb3BzMTIub25NZW51U2Nyb2xsVG9Ub3AsXG4gICAgICAgIG9uTWVudVNjcm9sbFRvQm90dG9tID0gX3RoaXMkcHJvcHMxMi5vbk1lbnVTY3JvbGxUb0JvdHRvbTtcbiAgICAgIGlmICghbWVudUlzT3BlbikgcmV0dXJuIG51bGw7XG5cbiAgICAgIC8vIFRPRE86IEludGVybmFsIE9wdGlvbiBUeXBlIGhlcmVcbiAgICAgIHZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIocHJvcHMsIGlkKSB7XG4gICAgICAgIHZhciB0eXBlID0gcHJvcHMudHlwZSxcbiAgICAgICAgICBkYXRhID0gcHJvcHMuZGF0YSxcbiAgICAgICAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZCxcbiAgICAgICAgICBpc1NlbGVjdGVkID0gcHJvcHMuaXNTZWxlY3RlZCxcbiAgICAgICAgICBsYWJlbCA9IHByb3BzLmxhYmVsLFxuICAgICAgICAgIHZhbHVlID0gcHJvcHMudmFsdWU7XG4gICAgICAgIHZhciBpc0ZvY3VzZWQgPSBmb2N1c2VkT3B0aW9uID09PSBkYXRhO1xuICAgICAgICB2YXIgb25Ib3ZlciA9IGlzRGlzYWJsZWQgPyB1bmRlZmluZWQgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzNC5vbk9wdGlvbkhvdmVyKGRhdGEpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgb25TZWxlY3QgPSBpc0Rpc2FibGVkID8gdW5kZWZpbmVkIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpczQuc2VsZWN0T3B0aW9uKGRhdGEpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgb3B0aW9uSWQgPSBcIlwiLmNvbmNhdChfdGhpczQuZ2V0RWxlbWVudElkKCdvcHRpb24nKSwgXCItXCIpLmNvbmNhdChpZCk7XG4gICAgICAgIHZhciBpbm5lclByb3BzID0ge1xuICAgICAgICAgIGlkOiBvcHRpb25JZCxcbiAgICAgICAgICBvbkNsaWNrOiBvblNlbGVjdCxcbiAgICAgICAgICBvbk1vdXNlTW92ZTogb25Ib3ZlcixcbiAgICAgICAgICBvbk1vdXNlT3Zlcjogb25Ib3ZlcixcbiAgICAgICAgICB0YWJJbmRleDogLTEsXG4gICAgICAgICAgcm9sZTogJ29wdGlvbicsXG4gICAgICAgICAgJ2FyaWEtc2VsZWN0ZWQnOiBfdGhpczQuaXNBcHBsZURldmljZSA/IHVuZGVmaW5lZCA6IGlzU2VsZWN0ZWQgLy8gaXMgbm90IHN1cHBvcnRlZCBvbiBBcHBsZSBkZXZpY2VzXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE9wdGlvbiwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgaXNTZWxlY3RlZDogaXNTZWxlY3RlZCxcbiAgICAgICAgICBrZXk6IG9wdGlvbklkLFxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcbiAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZCxcbiAgICAgICAgICBpbm5lclJlZjogaXNGb2N1c2VkID8gX3RoaXM0LmdldEZvY3VzZWRPcHRpb25SZWYgOiB1bmRlZmluZWRcbiAgICAgICAgfSksIF90aGlzNC5mb3JtYXRPcHRpb25MYWJlbChwcm9wcy5kYXRhLCAnbWVudScpKTtcbiAgICAgIH07XG4gICAgICB2YXIgbWVudVVJO1xuICAgICAgaWYgKHRoaXMuaGFzT3B0aW9ucygpKSB7XG4gICAgICAgIG1lbnVVSSA9IHRoaXMuZ2V0Q2F0ZWdvcml6ZWRPcHRpb25zKCkubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgICAgICAgdmFyIF9kYXRhID0gaXRlbS5kYXRhLFxuICAgICAgICAgICAgICBvcHRpb25zID0gaXRlbS5vcHRpb25zLFxuICAgICAgICAgICAgICBncm91cEluZGV4ID0gaXRlbS5pbmRleDtcbiAgICAgICAgICAgIHZhciBncm91cElkID0gXCJcIi5jb25jYXQoX3RoaXM0LmdldEVsZW1lbnRJZCgnZ3JvdXAnKSwgXCItXCIpLmNvbmNhdChncm91cEluZGV4KTtcbiAgICAgICAgICAgIHZhciBoZWFkaW5nSWQgPSBcIlwiLmNvbmNhdChncm91cElkLCBcIi1oZWFkaW5nXCIpO1xuICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEdyb3VwLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgICAgICAga2V5OiBncm91cElkLFxuICAgICAgICAgICAgICBkYXRhOiBfZGF0YSxcbiAgICAgICAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgICAgICAgSGVhZGluZzogR3JvdXBIZWFkaW5nLFxuICAgICAgICAgICAgICBoZWFkaW5nUHJvcHM6IHtcbiAgICAgICAgICAgICAgICBpZDogaGVhZGluZ0lkLFxuICAgICAgICAgICAgICAgIGRhdGE6IGl0ZW0uZGF0YVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBsYWJlbDogX3RoaXM0LmZvcm1hdEdyb3VwTGFiZWwoaXRlbS5kYXRhKVxuICAgICAgICAgICAgfSksIGl0ZW0ub3B0aW9ucy5tYXAoZnVuY3Rpb24gKG9wdGlvbikge1xuICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyKG9wdGlvbiwgXCJcIi5jb25jYXQoZ3JvdXBJbmRleCwgXCItXCIpLmNvbmNhdChvcHRpb24uaW5kZXgpKTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gJ29wdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiByZW5kZXIoaXRlbSwgXCJcIi5jb25jYXQoaXRlbS5pbmRleCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGlzTG9hZGluZykge1xuICAgICAgICB2YXIgbWVzc2FnZSA9IGxvYWRpbmdNZXNzYWdlKHtcbiAgICAgICAgICBpbnB1dFZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAobWVzc2FnZSA9PT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgICAgIG1lbnVVSSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExvYWRpbmdNZXNzYWdlLCBjb21tb25Qcm9wcywgbWVzc2FnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgX21lc3NhZ2UgPSBub09wdGlvbnNNZXNzYWdlKHtcbiAgICAgICAgICBpbnB1dFZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoX21lc3NhZ2UgPT09IG51bGwpIHJldHVybiBudWxsO1xuICAgICAgICBtZW51VUkgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChOb09wdGlvbnNNZXNzYWdlLCBjb21tb25Qcm9wcywgX21lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgdmFyIG1lbnVQbGFjZW1lbnRQcm9wcyA9IHtcbiAgICAgICAgbWluTWVudUhlaWdodDogbWluTWVudUhlaWdodCxcbiAgICAgICAgbWF4TWVudUhlaWdodDogbWF4TWVudUhlaWdodCxcbiAgICAgICAgbWVudVBsYWNlbWVudDogbWVudVBsYWNlbWVudCxcbiAgICAgICAgbWVudVBvc2l0aW9uOiBtZW51UG9zaXRpb24sXG4gICAgICAgIG1lbnVTaG91bGRTY3JvbGxJbnRvVmlldzogbWVudVNob3VsZFNjcm9sbEludG9WaWV3XG4gICAgICB9O1xuICAgICAgdmFyIG1lbnVFbGVtZW50ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTWVudVBsYWNlciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCBtZW51UGxhY2VtZW50UHJvcHMpLCBmdW5jdGlvbiAoX3JlZjQpIHtcbiAgICAgICAgdmFyIHJlZiA9IF9yZWY0LnJlZixcbiAgICAgICAgICBfcmVmNCRwbGFjZXJQcm9wcyA9IF9yZWY0LnBsYWNlclByb3BzLFxuICAgICAgICAgIHBsYWNlbWVudCA9IF9yZWY0JHBsYWNlclByb3BzLnBsYWNlbWVudCxcbiAgICAgICAgICBtYXhIZWlnaHQgPSBfcmVmNCRwbGFjZXJQcm9wcy5tYXhIZWlnaHQ7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChNZW51LCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIG1lbnVQbGFjZW1lbnRQcm9wcywge1xuICAgICAgICAgIGlubmVyUmVmOiByZWYsXG4gICAgICAgICAgaW5uZXJQcm9wczoge1xuICAgICAgICAgICAgb25Nb3VzZURvd246IF90aGlzNC5vbk1lbnVNb3VzZURvd24sXG4gICAgICAgICAgICBvbk1vdXNlTW92ZTogX3RoaXM0Lm9uTWVudU1vdXNlTW92ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaXNMb2FkaW5nOiBpc0xvYWRpbmcsXG4gICAgICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgICAgICAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFNjcm9sbE1hbmFnZXIsIHtcbiAgICAgICAgICBjYXB0dXJlRW5hYmxlZDogY2FwdHVyZU1lbnVTY3JvbGwsXG4gICAgICAgICAgb25Ub3BBcnJpdmU6IG9uTWVudVNjcm9sbFRvVG9wLFxuICAgICAgICAgIG9uQm90dG9tQXJyaXZlOiBvbk1lbnVTY3JvbGxUb0JvdHRvbSxcbiAgICAgICAgICBsb2NrRW5hYmxlZDogbWVudVNob3VsZEJsb2NrU2Nyb2xsXG4gICAgICAgIH0sIGZ1bmN0aW9uIChzY3JvbGxUYXJnZXRSZWYpIHtcbiAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTWVudUxpc3QsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICAgICAgaW5uZXJSZWY6IGZ1bmN0aW9uIGlubmVyUmVmKGluc3RhbmNlKSB7XG4gICAgICAgICAgICAgIF90aGlzNC5nZXRNZW51TGlzdFJlZihpbnN0YW5jZSk7XG4gICAgICAgICAgICAgIHNjcm9sbFRhcmdldFJlZihpbnN0YW5jZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5uZXJQcm9wczoge1xuICAgICAgICAgICAgICByb2xlOiAnbGlzdGJveCcsXG4gICAgICAgICAgICAgICdhcmlhLW11bHRpc2VsZWN0YWJsZSc6IGNvbW1vblByb3BzLmlzTXVsdGksXG4gICAgICAgICAgICAgIGlkOiBfdGhpczQuZ2V0RWxlbWVudElkKCdsaXN0Ym94JylcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc0xvYWRpbmc6IGlzTG9hZGluZyxcbiAgICAgICAgICAgIG1heEhlaWdodDogbWF4SGVpZ2h0LFxuICAgICAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNlZE9wdGlvblxuICAgICAgICAgIH0pLCBtZW51VUkpO1xuICAgICAgICB9KSk7XG4gICAgICB9KTtcblxuICAgICAgLy8gcG9zaXRpb25pbmcgYmVoYXZpb3VyIGlzIGFsbW9zdCBpZGVudGljYWwgZm9yIHBvcnRhbGxlZCBhbmQgZml4ZWQsXG4gICAgICAvLyBzbyB3ZSB1c2UgdGhlIHNhbWUgY29tcG9uZW50LiB0aGUgYWN0dWFsIHBvcnRhbGxpbmcgbG9naWMgaXMgZm9ya2VkXG4gICAgICAvLyB3aXRoaW4gdGhlIGNvbXBvbmVudCBiYXNlZCBvbiBgbWVudVBvc2l0aW9uYFxuICAgICAgcmV0dXJuIG1lbnVQb3J0YWxUYXJnZXQgfHwgbWVudVBvc2l0aW9uID09PSAnZml4ZWQnID8gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTWVudVBvcnRhbCwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGFwcGVuZFRvOiBtZW51UG9ydGFsVGFyZ2V0LFxuICAgICAgICBjb250cm9sRWxlbWVudDogdGhpcy5jb250cm9sUmVmLFxuICAgICAgICBtZW51UGxhY2VtZW50OiBtZW51UGxhY2VtZW50LFxuICAgICAgICBtZW51UG9zaXRpb246IG1lbnVQb3NpdGlvblxuICAgICAgfSksIG1lbnVFbGVtZW50KSA6IG1lbnVFbGVtZW50O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJGb3JtRmllbGRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyRm9ybUZpZWxkKCkge1xuICAgICAgdmFyIF90aGlzNSA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMyA9IHRoaXMucHJvcHMsXG4gICAgICAgIGRlbGltaXRlciA9IF90aGlzJHByb3BzMTMuZGVsaW1pdGVyLFxuICAgICAgICBpc0Rpc2FibGVkID0gX3RoaXMkcHJvcHMxMy5pc0Rpc2FibGVkLFxuICAgICAgICBpc011bHRpID0gX3RoaXMkcHJvcHMxMy5pc011bHRpLFxuICAgICAgICBuYW1lID0gX3RoaXMkcHJvcHMxMy5uYW1lLFxuICAgICAgICByZXF1aXJlZCA9IF90aGlzJHByb3BzMTMucmVxdWlyZWQ7XG4gICAgICB2YXIgc2VsZWN0VmFsdWUgPSB0aGlzLnN0YXRlLnNlbGVjdFZhbHVlO1xuICAgICAgaWYgKHJlcXVpcmVkICYmICF0aGlzLmhhc1ZhbHVlKCkgJiYgIWlzRGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlcXVpcmVkSW5wdXQkMSwge1xuICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgb25Gb2N1czogdGhpcy5vblZhbHVlSW5wdXRGb2N1c1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICghbmFtZSB8fCBpc0Rpc2FibGVkKSByZXR1cm47XG4gICAgICBpZiAoaXNNdWx0aSkge1xuICAgICAgICBpZiAoZGVsaW1pdGVyKSB7XG4gICAgICAgICAgdmFyIHZhbHVlID0gc2VsZWN0VmFsdWUubWFwKGZ1bmN0aW9uIChvcHQpIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpczUuZ2V0T3B0aW9uVmFsdWUob3B0KTtcbiAgICAgICAgICB9KS5qb2luKGRlbGltaXRlcik7XG4gICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIHR5cGU6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgaW5wdXQgPSBzZWxlY3RWYWx1ZS5sZW5ndGggPiAwID8gc2VsZWN0VmFsdWUubWFwKGZ1bmN0aW9uIChvcHQsIGkpIHtcbiAgICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtcbiAgICAgICAgICAgICAga2V5OiBcImktXCIuY29uY2F0KGkpLFxuICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICB0eXBlOiBcImhpZGRlblwiLFxuICAgICAgICAgICAgICB2YWx1ZTogX3RoaXM1LmdldE9wdGlvblZhbHVlKG9wdClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pIDogLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICAgIHZhbHVlOiBcIlwiXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIG51bGwsIGlucHV0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIF92YWx1ZSA9IHNlbGVjdFZhbHVlWzBdID8gdGhpcy5nZXRPcHRpb25WYWx1ZShzZWxlY3RWYWx1ZVswXSkgOiAnJztcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge1xuICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICB2YWx1ZTogX3ZhbHVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJMaXZlUmVnaW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckxpdmVSZWdpb24oKSB7XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIF90aGlzJHN0YXRlNiA9IHRoaXMuc3RhdGUsXG4gICAgICAgIGFyaWFTZWxlY3Rpb24gPSBfdGhpcyRzdGF0ZTYuYXJpYVNlbGVjdGlvbixcbiAgICAgICAgZm9jdXNlZE9wdGlvbiA9IF90aGlzJHN0YXRlNi5mb2N1c2VkT3B0aW9uLFxuICAgICAgICBmb2N1c2VkVmFsdWUgPSBfdGhpcyRzdGF0ZTYuZm9jdXNlZFZhbHVlLFxuICAgICAgICBpc0ZvY3VzZWQgPSBfdGhpcyRzdGF0ZTYuaXNGb2N1c2VkLFxuICAgICAgICBzZWxlY3RWYWx1ZSA9IF90aGlzJHN0YXRlNi5zZWxlY3RWYWx1ZTtcbiAgICAgIHZhciBmb2N1c2FibGVPcHRpb25zID0gdGhpcy5nZXRGb2N1c2FibGVPcHRpb25zKCk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGl2ZVJlZ2lvbiQxLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaWQ6IHRoaXMuZ2V0RWxlbWVudElkKCdsaXZlLXJlZ2lvbicpLFxuICAgICAgICBhcmlhU2VsZWN0aW9uOiBhcmlhU2VsZWN0aW9uLFxuICAgICAgICBmb2N1c2VkT3B0aW9uOiBmb2N1c2VkT3B0aW9uLFxuICAgICAgICBmb2N1c2VkVmFsdWU6IGZvY3VzZWRWYWx1ZSxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgIHNlbGVjdFZhbHVlOiBzZWxlY3RWYWx1ZSxcbiAgICAgICAgZm9jdXNhYmxlT3B0aW9uczogZm9jdXNhYmxlT3B0aW9ucyxcbiAgICAgICAgaXNBcHBsZURldmljZTogdGhpcy5pc0FwcGxlRGV2aWNlXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czggPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgQ29udHJvbCA9IF90aGlzJGdldENvbXBvbmVudHM4LkNvbnRyb2wsXG4gICAgICAgIEluZGljYXRvcnNDb250YWluZXIgPSBfdGhpcyRnZXRDb21wb25lbnRzOC5JbmRpY2F0b3JzQ29udGFpbmVyLFxuICAgICAgICBTZWxlY3RDb250YWluZXIgPSBfdGhpcyRnZXRDb21wb25lbnRzOC5TZWxlY3RDb250YWluZXIsXG4gICAgICAgIFZhbHVlQ29udGFpbmVyID0gX3RoaXMkZ2V0Q29tcG9uZW50czguVmFsdWVDb250YWluZXI7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxNCA9IHRoaXMucHJvcHMsXG4gICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzMTQuY2xhc3NOYW1lLFxuICAgICAgICBpZCA9IF90aGlzJHByb3BzMTQuaWQsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczE0LmlzRGlzYWJsZWQsXG4gICAgICAgIG1lbnVJc09wZW4gPSBfdGhpcyRwcm9wczE0Lm1lbnVJc09wZW47XG4gICAgICB2YXIgaXNGb2N1c2VkID0gdGhpcy5zdGF0ZS5pc0ZvY3VzZWQ7XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzID0gdGhpcy5nZXRDb21tb25Qcm9wcygpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRhaW5lciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLFxuICAgICAgICBpbm5lclByb3BzOiB7XG4gICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgIG9uS2V5RG93bjogdGhpcy5vbktleURvd25cbiAgICAgICAgfSxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWRcbiAgICAgIH0pLCB0aGlzLnJlbmRlckxpdmVSZWdpb24oKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udHJvbCwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlubmVyUmVmOiB0aGlzLmdldENvbnRyb2xSZWYsXG4gICAgICAgIGlubmVyUHJvcHM6IHtcbiAgICAgICAgICBvbk1vdXNlRG93bjogdGhpcy5vbkNvbnRyb2xNb3VzZURvd24sXG4gICAgICAgICAgb25Ub3VjaEVuZDogdGhpcy5vbkNvbnRyb2xUb3VjaEVuZFxuICAgICAgICB9LFxuICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZCxcbiAgICAgICAgbWVudUlzT3BlbjogbWVudUlzT3BlblxuICAgICAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFZhbHVlQ29udGFpbmVyLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZFxuICAgICAgfSksIHRoaXMucmVuZGVyUGxhY2Vob2xkZXJPclZhbHVlKCksIHRoaXMucmVuZGVySW5wdXQoKSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEluZGljYXRvcnNDb250YWluZXIsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkXG4gICAgICB9KSwgdGhpcy5yZW5kZXJDbGVhckluZGljYXRvcigpLCB0aGlzLnJlbmRlckxvYWRpbmdJbmRpY2F0b3IoKSwgdGhpcy5yZW5kZXJJbmRpY2F0b3JTZXBhcmF0b3IoKSwgdGhpcy5yZW5kZXJEcm9wZG93bkluZGljYXRvcigpKSksIHRoaXMucmVuZGVyTWVudSgpLCB0aGlzLnJlbmRlckZvcm1GaWVsZCgpKTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKHByb3BzLCBzdGF0ZSkge1xuICAgICAgdmFyIHByZXZQcm9wcyA9IHN0YXRlLnByZXZQcm9wcyxcbiAgICAgICAgY2xlYXJGb2N1c1ZhbHVlT25VcGRhdGUgPSBzdGF0ZS5jbGVhckZvY3VzVmFsdWVPblVwZGF0ZSxcbiAgICAgICAgaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlID0gc3RhdGUuaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlLFxuICAgICAgICBhcmlhU2VsZWN0aW9uID0gc3RhdGUuYXJpYVNlbGVjdGlvbixcbiAgICAgICAgaXNGb2N1c2VkID0gc3RhdGUuaXNGb2N1c2VkLFxuICAgICAgICBwcmV2V2FzRm9jdXNlZCA9IHN0YXRlLnByZXZXYXNGb2N1c2VkLFxuICAgICAgICBpbnN0YW5jZVByZWZpeCA9IHN0YXRlLmluc3RhbmNlUHJlZml4O1xuICAgICAgdmFyIG9wdGlvbnMgPSBwcm9wcy5vcHRpb25zLFxuICAgICAgICB2YWx1ZSA9IHByb3BzLnZhbHVlLFxuICAgICAgICBtZW51SXNPcGVuID0gcHJvcHMubWVudUlzT3BlbixcbiAgICAgICAgaW5wdXRWYWx1ZSA9IHByb3BzLmlucHV0VmFsdWUsXG4gICAgICAgIGlzTXVsdGkgPSBwcm9wcy5pc011bHRpO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gY2xlYW5WYWx1ZSh2YWx1ZSk7XG4gICAgICB2YXIgbmV3TWVudU9wdGlvbnNTdGF0ZSA9IHt9O1xuICAgICAgaWYgKHByZXZQcm9wcyAmJiAodmFsdWUgIT09IHByZXZQcm9wcy52YWx1ZSB8fCBvcHRpb25zICE9PSBwcmV2UHJvcHMub3B0aW9ucyB8fCBtZW51SXNPcGVuICE9PSBwcmV2UHJvcHMubWVudUlzT3BlbiB8fCBpbnB1dFZhbHVlICE9PSBwcmV2UHJvcHMuaW5wdXRWYWx1ZSkpIHtcbiAgICAgICAgdmFyIGZvY3VzYWJsZU9wdGlvbnMgPSBtZW51SXNPcGVuID8gYnVpbGRGb2N1c2FibGVPcHRpb25zKHByb3BzLCBzZWxlY3RWYWx1ZSkgOiBbXTtcbiAgICAgICAgdmFyIGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzID0gbWVudUlzT3BlbiA/IGJ1aWxkRm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMoYnVpbGRDYXRlZ29yaXplZE9wdGlvbnMocHJvcHMsIHNlbGVjdFZhbHVlKSwgXCJcIi5jb25jYXQoaW5zdGFuY2VQcmVmaXgsIFwiLW9wdGlvblwiKSkgOiBbXTtcbiAgICAgICAgdmFyIGZvY3VzZWRWYWx1ZSA9IGNsZWFyRm9jdXNWYWx1ZU9uVXBkYXRlID8gZ2V0TmV4dEZvY3VzZWRWYWx1ZShzdGF0ZSwgc2VsZWN0VmFsdWUpIDogbnVsbDtcbiAgICAgICAgdmFyIGZvY3VzZWRPcHRpb24gPSBnZXROZXh0Rm9jdXNlZE9wdGlvbihzdGF0ZSwgZm9jdXNhYmxlT3B0aW9ucyk7XG4gICAgICAgIHZhciBmb2N1c2VkT3B0aW9uSWQgPSBnZXRGb2N1c2VkT3B0aW9uSWQoZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMsIGZvY3VzZWRPcHRpb24pO1xuICAgICAgICBuZXdNZW51T3B0aW9uc1N0YXRlID0ge1xuICAgICAgICAgIHNlbGVjdFZhbHVlOiBzZWxlY3RWYWx1ZSxcbiAgICAgICAgICBmb2N1c2VkT3B0aW9uOiBmb2N1c2VkT3B0aW9uLFxuICAgICAgICAgIGZvY3VzZWRPcHRpb25JZDogZm9jdXNlZE9wdGlvbklkLFxuICAgICAgICAgIGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzOiBmb2N1c2FibGVPcHRpb25zV2l0aElkcyxcbiAgICAgICAgICBmb2N1c2VkVmFsdWU6IGZvY3VzZWRWYWx1ZSxcbiAgICAgICAgICBjbGVhckZvY3VzVmFsdWVPblVwZGF0ZTogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIC8vIHNvbWUgdXBkYXRlcyBzaG91bGQgdG9nZ2xlIHRoZSBzdGF0ZSBvZiB0aGUgaW5wdXQgdmlzaWJpbGl0eVxuICAgICAgdmFyIG5ld0lucHV0SXNIaWRkZW5TdGF0ZSA9IGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZSAhPSBudWxsICYmIHByb3BzICE9PSBwcmV2UHJvcHMgPyB7XG4gICAgICAgIGlucHV0SXNIaWRkZW46IGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZSxcbiAgICAgICAgaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlOiB1bmRlZmluZWRcbiAgICAgIH0gOiB7fTtcbiAgICAgIHZhciBuZXdBcmlhU2VsZWN0aW9uID0gYXJpYVNlbGVjdGlvbjtcbiAgICAgIHZhciBoYXNLZXB0Rm9jdXMgPSBpc0ZvY3VzZWQgJiYgcHJldldhc0ZvY3VzZWQ7XG4gICAgICBpZiAoaXNGb2N1c2VkICYmICFoYXNLZXB0Rm9jdXMpIHtcbiAgICAgICAgLy8gSWYgYHZhbHVlYCBvciBgZGVmYXVsdFZhbHVlYCBwcm9wcyBhcmUgbm90IGVtcHR5IHRoZW4gYW5ub3VuY2UgdGhlbVxuICAgICAgICAvLyB3aGVuIHRoZSBTZWxlY3QgaXMgaW5pdGlhbGx5IGZvY3VzZWRcbiAgICAgICAgbmV3QXJpYVNlbGVjdGlvbiA9IHtcbiAgICAgICAgICB2YWx1ZTogdmFsdWVUZXJuYXJ5KGlzTXVsdGksIHNlbGVjdFZhbHVlLCBzZWxlY3RWYWx1ZVswXSB8fCBudWxsKSxcbiAgICAgICAgICBvcHRpb25zOiBzZWxlY3RWYWx1ZSxcbiAgICAgICAgICBhY3Rpb246ICdpbml0aWFsLWlucHV0LWZvY3VzJ1xuICAgICAgICB9O1xuICAgICAgICBoYXNLZXB0Rm9jdXMgPSAhcHJldldhc0ZvY3VzZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSAnaW5pdGlhbC1pbnB1dC1mb2N1cycgYWN0aW9uIGhhcyBiZWVuIHNldCBhbHJlYWR5XG4gICAgICAvLyB0aGVuIHJlc2V0IHRoZSBhcmlhU2VsZWN0aW9uIHRvIG51bGxcbiAgICAgIGlmICgoYXJpYVNlbGVjdGlvbiA9PT0gbnVsbCB8fCBhcmlhU2VsZWN0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhcmlhU2VsZWN0aW9uLmFjdGlvbikgPT09ICdpbml0aWFsLWlucHV0LWZvY3VzJykge1xuICAgICAgICBuZXdBcmlhU2VsZWN0aW9uID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgbmV3TWVudU9wdGlvbnNTdGF0ZSksIG5ld0lucHV0SXNIaWRkZW5TdGF0ZSksIHt9LCB7XG4gICAgICAgIHByZXZQcm9wczogcHJvcHMsXG4gICAgICAgIGFyaWFTZWxlY3Rpb246IG5ld0FyaWFTZWxlY3Rpb24sXG4gICAgICAgIHByZXZXYXNGb2N1c2VkOiBoYXNLZXB0Rm9jdXNcbiAgICAgIH0pO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gU2VsZWN0O1xufShDb21wb25lbnQpO1xuU2VsZWN0LmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuZXhwb3J0IHsgU2VsZWN0IGFzIFMsIGRlZmF1bHRQcm9wcyBhcyBhLCBnZXRPcHRpb25MYWJlbCQxIGFzIGIsIGNyZWF0ZUZpbHRlciBhcyBjLCBkZWZhdWx0VGhlbWUgYXMgZCwgZ2V0T3B0aW9uVmFsdWUkMSBhcyBnLCBtZXJnZVN0eWxlcyBhcyBtIH07XG4iLCJpbXBvcnQgeyB1IGFzIHVzZVN0YXRlTWFuYWdlciB9IGZyb20gJy4vdXNlU3RhdGVNYW5hZ2VyLTdlMWU4NDg5LmVzbS5qcyc7XG5leHBvcnQgeyB1IGFzIHVzZVN0YXRlTWFuYWdlciB9IGZyb20gJy4vdXNlU3RhdGVNYW5hZ2VyLTdlMWU4NDg5LmVzbS5qcyc7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUyBhcyBTZWxlY3QgfSBmcm9tICcuL1NlbGVjdC1hYWIwMjdmMy5lc20uanMnO1xuZXhwb3J0IHsgYyBhcyBjcmVhdGVGaWx0ZXIsIGQgYXMgZGVmYXVsdFRoZW1lLCBtIGFzIG1lcmdlU3R5bGVzIH0gZnJvbSAnLi9TZWxlY3QtYWFiMDI3ZjMuZXNtLmpzJztcbmltcG9ydCB7IENhY2hlUHJvdmlkZXIgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgY3JlYXRlQ2FjaGUgZnJvbSAnQGVtb3Rpb24vY2FjaGUnO1xuZXhwb3J0IHsgYyBhcyBjb21wb25lbnRzIH0gZnJvbSAnLi9pbmRleC02NDFlZTViOC5lc20uanMnO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFNwcmVhZDInO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXknO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjayc7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MnO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVTdXBlcic7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXknO1xuaW1wb3J0ICdtZW1vaXplLW9uZSc7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy90YWdnZWRUZW1wbGF0ZUxpdGVyYWwnO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5JztcbmltcG9ydCAncmVhY3QtZG9tJztcbmltcG9ydCAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgJ3VzZS1pc29tb3JwaGljLWxheW91dC1lZmZlY3QnO1xuXG52YXIgU3RhdGVNYW5hZ2VkU2VsZWN0ID0gLyojX19QVVJFX18qL2ZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHtcbiAgdmFyIGJhc2VTZWxlY3RQcm9wcyA9IHVzZVN0YXRlTWFuYWdlcihwcm9wcyk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTZWxlY3QsIF9leHRlbmRzKHtcbiAgICByZWY6IHJlZlxuICB9LCBiYXNlU2VsZWN0UHJvcHMpKTtcbn0pO1xudmFyIFN0YXRlTWFuYWdlZFNlbGVjdCQxID0gU3RhdGVNYW5hZ2VkU2VsZWN0O1xuXG52YXIgTm9uY2VQcm92aWRlciA9IChmdW5jdGlvbiAoX3JlZikge1xuICB2YXIgbm9uY2UgPSBfcmVmLm5vbmNlLFxuICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbixcbiAgICBjYWNoZUtleSA9IF9yZWYuY2FjaGVLZXk7XG4gIHZhciBlbW90aW9uQ2FjaGUgPSB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gY3JlYXRlQ2FjaGUoe1xuICAgICAga2V5OiBjYWNoZUtleSxcbiAgICAgIG5vbmNlOiBub25jZVxuICAgIH0pO1xuICB9LCBbY2FjaGVLZXksIG5vbmNlXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDYWNoZVByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IGVtb3Rpb25DYWNoZVxuICB9LCBjaGlsZHJlbik7XG59KTtcblxuZXhwb3J0IHsgTm9uY2VQcm92aWRlciwgU3RhdGVNYW5hZ2VkU2VsZWN0JDEgYXMgZGVmYXVsdCB9O1xuIiwiLy8gc3JjL2luZGV4LnRzXG5pbXBvcnQgeyB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbnZhciBFTVBUWV9WQUxVRSA9IFN5bWJvbChcInVzZUxhenlSZWYgZW1wdHkgdmFsdWVcIik7XG52YXIgdXNlTGF6eVJlZiA9IChpbml0KSA9PiB7XG4gIGNvbnN0IHJlc3VsdFJlZiA9IHVzZVJlZihFTVBUWV9WQUxVRSk7XG4gIGlmIChyZXN1bHRSZWYuY3VycmVudCA9PT0gRU1QVFlfVkFMVUUpIHtcbiAgICByZXN1bHRSZWYuY3VycmVudCA9IGluaXQoKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0UmVmO1xufTtcbmV4cG9ydCB7XG4gIEVNUFRZX1ZBTFVFLFxuICB1c2VMYXp5UmVmXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiaW1wb3J0IHsgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5cbmZ1bmN0aW9uIHVzZUlzTW91bnRlZFJlZigpIHtcclxuICAgIHZhciBpc01vdW50ZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xyXG4gICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpc01vdW50ZWRSZWYuY3VycmVudCA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaXNNb3VudGVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcclxuICAgICAgICB9O1xyXG4gICAgfSwgW10pO1xyXG4gICAgcmV0dXJuIGlzTW91bnRlZFJlZjtcclxufVxuXG5leHBvcnQgeyB1c2VJc01vdW50ZWRSZWYgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlLWlzLW1vdW50ZWQtcmVmLmVzLmpzLm1hcFxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0IGZyb20gJ3VzZS1pc29tb3JwaGljLWxheW91dC1lZmZlY3QnO1xuXG52YXIgdXNlTGF0ZXN0ID0gZnVuY3Rpb24gdXNlTGF0ZXN0KHZhbHVlKSB7XG4gIHZhciByZWYgPSBSZWFjdC51c2VSZWYodmFsdWUpO1xuICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuIHJlZjtcbn07XG5cbmV4cG9ydCB7IHVzZUxhdGVzdCBhcyBkZWZhdWx0IH07XG4iLCIvLyBzcmMvb3B0aW9uX3Jlc3VsdC50c1xuZnVuY3Rpb24gT2socmVzdWx0KSB7XG4gIGNvbnN0IHNlbGYgPSB7XG4gICAgaXNPazogKCkgPT4gdHJ1ZSxcbiAgICBpc09rQW5kOiAoZm4pID0+IGZuKHJlc3VsdCksXG4gICAgaXNFcnI6ICgpID0+IGZhbHNlLFxuICAgIGlzRXJyQW5kOiAoKSA9PiBmYWxzZSxcbiAgICBvazogKCkgPT4gU29tZShyZXN1bHQpLFxuICAgIGVycjogKCkgPT4gTm9uZSgpLFxuICAgIG1hcDogKGZuKSA9PiBPayhmbihyZXN1bHQpKSxcbiAgICBtYXBPcjogKF8sIGZuKSA9PiBmbihyZXN1bHQpLFxuICAgIG1hcE9yRWxzZTogKF8sIGZuKSA9PiBmbihyZXN1bHQpLFxuICAgIG1hcEVycjogKCkgPT4gT2socmVzdWx0KSxcbiAgICBleHBlY3Q6ICgpID0+IHJlc3VsdCxcbiAgICBleHBlY3RFcnI6IChtc2cpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgIH0sXG4gICAgdW53cmFwOiAoKSA9PiByZXN1bHQsXG4gICAgdW53cmFwRXJyOiAoKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cmVzdWx0fWApO1xuICAgIH0sXG4gICAgdW53cmFwT3I6ICgpID0+IHJlc3VsdCxcbiAgICB1bndyYXBPckVsc2U6ICgpID0+IHJlc3VsdCxcbiAgICBhbmQ6IChyZXMpID0+IHJlcyxcbiAgICBhbmRUaGVuOiAoZ2V0UmVzKSA9PiBnZXRSZXMocmVzdWx0KSxcbiAgICBvcjogKCkgPT4gT2socmVzdWx0KSxcbiAgICBvckVsc2U6ICgpID0+IE9rKHJlc3VsdClcbiAgfTtcbiAgcmV0dXJuIHNlbGY7XG59XG5mdW5jdGlvbiBFcnIoZXJyKSB7XG4gIGNvbnN0IHNlbGYgPSB7XG4gICAgaXNPazogKCkgPT4gZmFsc2UsXG4gICAgaXNPa0FuZDogKCkgPT4gZmFsc2UsXG4gICAgaXNFcnI6ICgpID0+IHRydWUsXG4gICAgaXNFcnJBbmQ6IChmbikgPT4gZm4oZXJyKSxcbiAgICBvazogKCkgPT4gTm9uZSgpLFxuICAgIGVycjogKCkgPT4gU29tZShlcnIpLFxuICAgIG1hcDogKCkgPT4gRXJyKGVyciksXG4gICAgbWFwT3I6IChkZWZhdWx0VmFsdWUpID0+IGRlZmF1bHRWYWx1ZSxcbiAgICBtYXBPckVsc2U6IChnZXREZWZhdWx0VmFsdWUpID0+IGdldERlZmF1bHRWYWx1ZShlcnIpLFxuICAgIG1hcEVycjogKGZuKSA9PiBFcnIoZm4oZXJyKSksXG4gICAgZXhwZWN0OiAobXNnKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICB9LFxuICAgIGV4cGVjdEVycjogKCkgPT4gZXJyLFxuICAgIHVud3JhcDogKCkgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2Vycn1gKTtcbiAgICB9LFxuICAgIHVud3JhcEVycjogKCkgPT4gZXJyLFxuICAgIHVud3JhcE9yOiAoZGVmYXVsdFZhbHVlKSA9PiBkZWZhdWx0VmFsdWUsXG4gICAgdW53cmFwT3JFbHNlOiAoZ2V0RGVmYXVsdFZhbHVlKSA9PiBnZXREZWZhdWx0VmFsdWUoZXJyKSxcbiAgICBhbmQ6ICgpID0+IEVycihlcnIpLFxuICAgIGFuZFRoZW46ICgpID0+IEVycihlcnIpLFxuICAgIG9yOiAocmVzKSA9PiByZXMsXG4gICAgb3JFbHNlOiAoZ2V0UmVzKSA9PiBnZXRSZXMoZXJyKVxuICB9O1xuICByZXR1cm4gc2VsZjtcbn1cbmZ1bmN0aW9uIE5vbmUoKSB7XG4gIGNvbnN0IHNlbGYgPSB7XG4gICAgYW5kOiAoKSA9PiBOb25lKCksXG4gICAgYW5kVGhlbjogKCkgPT4gTm9uZSgpLFxuICAgIGV4cGVjdDogKG1zZykgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgfSxcbiAgICBmaWx0ZXI6ICgpID0+IHNlbGYsXG4gICAgaXNTb21lOiAoKSA9PiBmYWxzZSxcbiAgICBpc1NvbWVBbmQ6ICgpID0+IGZhbHNlLFxuICAgIGlzTm9uZTogKCkgPT4gdHJ1ZSxcbiAgICBtYXA6ICgpID0+IE5vbmUoKSxcbiAgICBtYXBPcjogKGRlZmF1bHRWYWx1ZSkgPT4gZGVmYXVsdFZhbHVlLFxuICAgIG1hcE9yRWxzZTogKGdldERlZmF1bHRWYWx1ZSkgPT4gZ2V0RGVmYXVsdFZhbHVlKCksXG4gICAgb2tPcjogKGVycikgPT4gRXJyKGVyciksXG4gICAgb2tPckVsc2U6IChnZXRFcnIpID0+IEVycihnZXRFcnIoKSksXG4gICAgb3I6IChvcHQpID0+IG9wdCxcbiAgICBvckVsc2U6IChmbikgPT4gZm4oKSxcbiAgICB1bndyYXA6ICgpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInBhbmljISBjYWxsIGB1bndyYXBgIG9uIGEgYE5vbmVgIHZhbHVlXCIpO1xuICAgIH0sXG4gICAgdW53cmFwT3I6IChkZWZhdWx0VmFsdWUpID0+IGRlZmF1bHRWYWx1ZSxcbiAgICB1bndyYXBPckVsc2U6IChnZXREZWZhdWx0VmFsdWUpID0+IGdldERlZmF1bHRWYWx1ZSgpLFxuICAgIHhvcjogKG9wdCkgPT4ge1xuICAgICAgaWYgKG9wdC5pc1NvbWUoKSkge1xuICAgICAgICByZXR1cm4gb3B0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNlbGY7XG4gICAgfVxuICB9O1xuICByZXR1cm4gc2VsZjtcbn1cbmZ1bmN0aW9uIFNvbWUodmFsdWUpIHtcbiAgY29uc3Qgc2VsZiA9IHtcbiAgICBhbmQ6IChvcHQpID0+IG9wdCxcbiAgICBhbmRUaGVuOiAoZm4pID0+IGZuKHZhbHVlKSxcbiAgICBleHBlY3Q6ICgpID0+IHZhbHVlLFxuICAgIGZpbHRlcjogKGZuKSA9PiB7XG4gICAgICBpZiAoZm4odmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBzZWxmO1xuICAgICAgfVxuICAgICAgcmV0dXJuIE5vbmUoKTtcbiAgICB9LFxuICAgIGlzU29tZTogKCkgPT4gdHJ1ZSxcbiAgICBpc1NvbWVBbmQ6IChmbikgPT4gZm4odmFsdWUpLFxuICAgIGlzTm9uZTogKCkgPT4gZmFsc2UsXG4gICAgbWFwOiAoZm4pID0+IFNvbWUoZm4odmFsdWUpKSxcbiAgICBtYXBPcjogKF8sIGZuKSA9PiBmbih2YWx1ZSksXG4gICAgbWFwT3JFbHNlOiAoXywgZm4pID0+IGZuKHZhbHVlKSxcbiAgICBva09yOiAoKSA9PiBPayh2YWx1ZSksXG4gICAgb2tPckVsc2U6ICgpID0+IE9rKHZhbHVlKSxcbiAgICBvcjogKCkgPT4gc2VsZixcbiAgICBvckVsc2U6ICgpID0+IHNlbGYsXG4gICAgdW53cmFwOiAoKSA9PiB2YWx1ZSxcbiAgICB1bndyYXBPcjogKCkgPT4gdmFsdWUsXG4gICAgdW53cmFwT3JFbHNlOiAoKSA9PiB2YWx1ZSxcbiAgICB4b3I6IChvcHQpID0+IHtcbiAgICAgIGlmIChvcHQuaXNOb25lKCkpIHtcbiAgICAgICAgcmV0dXJuIHNlbGY7XG4gICAgICB9XG4gICAgICByZXR1cm4gTm9uZSgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHNlbGY7XG59XG5cbi8vIHNyYy90b19vcHRpb24udHNcbmZ1bmN0aW9uIHRvT3B0aW9uKGFyZykge1xuICBpZiAoYXJnID09PSBudWxsIHx8IGFyZyA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIE5vbmUoKTtcbiAgfVxuICByZXR1cm4gU29tZShhcmcpO1xufVxuXG4vLyBzcmMvZ2V0X3Jlc3VsdC50c1xuZnVuY3Rpb24gZ2V0UmVzdWx0KHByb21pc2UpIHtcbiAgcmV0dXJuIHByb21pc2UudGhlbihcbiAgICAocmVzcG9uc2UpID0+IE9rKHJlc3BvbnNlKSxcbiAgICAoZXJyKSA9PiBFcnIoZXJyKVxuICApO1xufVxuXG4vLyBzcmMvdW53cmFwLnRzXG5mdW5jdGlvbiB1bndyYXAodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB2b2lkIDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHBhbmljISBjYWxsIFxcYHVud3JhcFxcYCBvbiBhIFxcYCR7dmFsdWV9XFxgIHZhbHVlYCk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vLyBzcmMvdW53cmFwX29yLnRzXG5mdW5jdGlvbiB1bndyYXBPcih2YWx1ZSwgZGVmYXVsdFZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8vIHNyYy91bndyYXBfb3JfZWxzZS50c1xuZnVuY3Rpb24gdW53cmFwT3JFbHNlKHZhbHVlLCBnZXREZWZhdWx0VmFsdWUpIHtcbiAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gZ2V0RGVmYXVsdFZhbHVlKCk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vLyBzcmMvdHJ5X2NhdGNoLnRzXG5mdW5jdGlvbiB0cnlDYXRjaChmbikge1xuICBsZXQgcmVzdWx0O1xuICB0cnkge1xuICAgIHJlc3VsdCA9IGZuKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gRXJyKGUpO1xuICB9XG4gIHJldHVybiBPayhyZXN1bHQpO1xufVxuZXhwb3J0IHtcbiAgRXJyLFxuICBOb25lLFxuICBPayxcbiAgU29tZSxcbiAgZ2V0UmVzdWx0LFxuICB0b09wdGlvbixcbiAgdHJ5Q2F0Y2gsXG4gIHVud3JhcCxcbiAgdW53cmFwT3IsXG4gIHVud3JhcE9yRWxzZVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXAiLCJ2YXIgZT1zZXRUaW1lb3V0O2Z1bmN0aW9uIHQodCxuKXt2YXIgdT1uLnVzZUNhY2hlZFNldFRpbWVvdXQ/ZTpzZXRUaW1lb3V0O3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7dShlLHQpfSkpfWZ1bmN0aW9uIG4oZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LHU9bi51c2VDYWNoZWRTZXRUaW1lb3V0LHI9dChlLHt1c2VDYWNoZWRTZXRUaW1lb3V0OnV9KTtmdW5jdGlvbiBvKGUpe3JldHVybiByLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGV9KSl9cmV0dXJuIG8udGhlbj1mdW5jdGlvbigpe3JldHVybiByLnRoZW4uYXBwbHkocixhcmd1bWVudHMpfSxvLmNhdGNoPVByb21pc2UucmVzb2x2ZSgpLmNhdGNoLG99ZXhwb3J0IGRlZmF1bHQgbjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZnVuY3Rpb24gY29tcG9zZVJlZnMoKSB7XG4gICAgdmFyIHJlZnMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICByZWZzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIGlmIChyZWZzLmxlbmd0aCA9PT0gMikgeyAvLyBtaWNyby1vcHRpbWl6ZSB0aGUgaG90IHBhdGhcbiAgICAgICAgcmV0dXJuIGNvbXBvc2VUd29SZWZzKHJlZnNbMF0sIHJlZnNbMV0pIHx8IG51bGw7XG4gICAgfVxuICAgIHZhciBjb21wb3NlZFJlZiA9IHJlZnMuc2xpY2UoMSkucmVkdWNlKGZ1bmN0aW9uIChzZW1pQ29tYmluZWRSZWYsIHJlZlRvSW5jbHVkZSkgeyByZXR1cm4gY29tcG9zZVR3b1JlZnMoc2VtaUNvbWJpbmVkUmVmLCByZWZUb0luY2x1ZGUpOyB9LCByZWZzWzBdKTtcbiAgICByZXR1cm4gY29tcG9zZWRSZWYgfHwgbnVsbDtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IGNvbXBvc2VSZWZzO1xudmFyIGNvbXBvc2VkUmVmQ2FjaGUgPSBuZXcgV2Vha01hcCgpO1xuZnVuY3Rpb24gY29tcG9zZVR3b1JlZnMocmVmMSwgcmVmMikge1xuICAgIGlmIChyZWYxICYmIHJlZjIpIHtcbiAgICAgICAgdmFyIHJlZjFDYWNoZSA9IGNvbXBvc2VkUmVmQ2FjaGUuZ2V0KHJlZjEpIHx8IG5ldyBXZWFrTWFwKCk7XG4gICAgICAgIGNvbXBvc2VkUmVmQ2FjaGUuc2V0KHJlZjEsIHJlZjFDYWNoZSk7XG4gICAgICAgIHZhciBjb21wb3NlZFJlZiA9IHJlZjFDYWNoZS5nZXQocmVmMikgfHwgKGZ1bmN0aW9uIChpbnN0YW5jZSkge1xuICAgICAgICAgICAgdXBkYXRlUmVmKHJlZjEsIGluc3RhbmNlKTtcbiAgICAgICAgICAgIHVwZGF0ZVJlZihyZWYyLCBpbnN0YW5jZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZWYxQ2FjaGUuc2V0KHJlZjIsIGNvbXBvc2VkUmVmKTtcbiAgICAgICAgcmV0dXJuIGNvbXBvc2VkUmVmO1xuICAgIH1cbiAgICBpZiAoIXJlZjEpIHtcbiAgICAgICAgcmV0dXJuIHJlZjI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVmMTtcbiAgICB9XG59XG5mdW5jdGlvbiB1cGRhdGVSZWYocmVmLCBpbnN0YW5jZSkge1xuICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJlZihpbnN0YW5jZSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZWYuY3VycmVudCA9IGluc3RhbmNlO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbXBvc2VSZWZzLmpzLm1hcCIsIi8vIHNyYy9pbmRleC50c1xuaW1wb3J0IFNlbGVjdCBmcm9tIFwicmVhY3Qtc2VsZWN0XCI7XG5cbi8vIHNyYy91c2VBc3luY1BhZ2luYXRlLnRzXG5pbXBvcnQgeyB1c2VDYWxsYmFjayBhcyB1c2VDYWxsYmFjazIsIHVzZVN0YXRlIGFzIHVzZVN0YXRlMiB9IGZyb20gXCJyZWFjdFwiO1xuXG4vLyBzcmMvdXNlQXN5bmNQYWdpbmF0ZUJhc2UudHNcbmltcG9ydCB7IHVzZUxhenlSZWYgfSBmcm9tIFwiQHZ0YWl0cy91c2UtbGF6eS1yZWZcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB1c2VJc01vdW50ZWRSZWYgZnJvbSBcInVzZS1pcy1tb3VudGVkLXJlZlwiO1xuaW1wb3J0IHVzZUxhdGVzdCBmcm9tIFwidXNlLWxhdGVzdFwiO1xuXG4vLyBzcmMvZGVmYXVsdFJlZHVjZU9wdGlvbnMudHNcbnZhciBkZWZhdWx0UmVkdWNlT3B0aW9ucyA9IChwcmV2T3B0aW9ucywgbG9hZGVkT3B0aW9ucykgPT4gWy4uLnByZXZPcHRpb25zLCAuLi5sb2FkZWRPcHRpb25zXTtcblxuLy8gc3JjL2RlZmF1bHRTaG91bGRMb2FkTW9yZS50c1xudmFyIEFWQUlMQUJMRV9ERUxUQSA9IDEwO1xudmFyIGRlZmF1bHRTaG91bGRMb2FkTW9yZSA9IChzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCwgc2Nyb2xsVG9wKSA9PiB7XG4gIGNvbnN0IGJvdHRvbUJvcmRlciA9IHNjcm9sbEhlaWdodCAtIGNsaWVudEhlaWdodCAtIEFWQUlMQUJMRV9ERUxUQTtcbiAgcmV0dXJuIGJvdHRvbUJvcmRlciA8IHNjcm9sbFRvcDtcbn07XG5cbi8vIHNyYy9nZXRJbml0aWFsQ2FjaGUudHNcbnZhciBnZXRJbml0aWFsQ2FjaGUgPSAocGFyYW1zKSA9PiAoe1xuICBpc0ZpcnN0TG9hZDogdHJ1ZSxcbiAgb3B0aW9uczogW10sXG4gIGhhc01vcmU6IHRydWUsXG4gIGlzTG9hZGluZzogZmFsc2UsXG4gIGxvY2tlZFVudGlsOiAwLFxuICBhZGRpdGlvbmFsOiBwYXJhbXMuYWRkaXRpb25hbFxufSk7XG5cbi8vIHNyYy9nZXRJbml0aWFsT3B0aW9uc0NhY2hlLnRzXG52YXIgZ2V0SW5pdGlhbE9wdGlvbnNDYWNoZSA9ICh7XG4gIG9wdGlvbnMsXG4gIGRlZmF1bHRPcHRpb25zLFxuICBhZGRpdGlvbmFsLFxuICBkZWZhdWx0QWRkaXRpb25hbFxufSkgPT4ge1xuICBjb25zdCBpbml0aWFsT3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zID09PSB0cnVlID8gbnVsbCA6IEFycmF5LmlzQXJyYXkoZGVmYXVsdE9wdGlvbnMpID8gZGVmYXVsdE9wdGlvbnMgOiBvcHRpb25zO1xuICBpZiAoaW5pdGlhbE9wdGlvbnMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJcIjoge1xuICAgICAgICBpc0ZpcnN0TG9hZDogZmFsc2UsXG4gICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgIG9wdGlvbnM6IGluaXRpYWxPcHRpb25zLFxuICAgICAgICBoYXNNb3JlOiB0cnVlLFxuICAgICAgICBsb2NrZWRVbnRpbDogMCxcbiAgICAgICAgYWRkaXRpb25hbDogZGVmYXVsdEFkZGl0aW9uYWwgfHwgYWRkaXRpb25hbFxuICAgICAgfVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHt9O1xufTtcblxuLy8gc3JjL3JlcXVlc3RPcHRpb25zLnRzXG5pbXBvcnQgeyBnZXRSZXN1bHQgfSBmcm9tIFwia3J1c3R5a3JhYlwiO1xuaW1wb3J0IHNsZWVwIGZyb20gXCJzbGVlcC1wcm9taXNlXCI7XG5cbi8vIHNyYy92YWxpZGF0ZVJlc3BvbnNlLnRzXG52YXIgZXJyb3JUZXh0ID0gJ1tyZWFjdC1zZWxlY3QtYXN5bmMtcGFnaW5hdGVdIHJlc3BvbnNlIG9mIFwibG9hZE9wdGlvbnNcIiBzaG91bGQgYmUgYW4gb2JqZWN0IHdpdGggXCJvcHRpb25zXCIgcHJvcCwgd2hpY2ggY29udGFpbnMgYXJyYXkgb2Ygb3B0aW9ucy4nO1xudmFyIGNoZWNrSXNSZXNwb25zZSA9IChyZXNwb25zZSkgPT4ge1xuICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IHsgb3B0aW9ucywgaGFzTW9yZSB9ID0gcmVzcG9uc2U7XG4gIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodHlwZW9mIGhhc01vcmUgIT09IFwiYm9vbGVhblwiICYmIHR5cGVvZiBoYXNNb3JlICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciB2YWxpZGF0ZVJlc3BvbnNlID0gKHJlc3BvbnNlKSA9PiB7XG4gIGlmICghY2hlY2tJc1Jlc3BvbnNlKHJlc3BvbnNlKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3JUZXh0LCBcIlJlY2VpdmVkOlwiLCByZXNwb25zZSk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGVycm9yVGV4dCk7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vLyBzcmMvcmVxdWVzdE9wdGlvbnMudHNcbnZhciByZXF1ZXN0T3B0aW9ucyA9IGFzeW5jIChjYWxsZXIsIHBhcmFtc1JlZiwgb3B0aW9uc0NhY2hlUmVmLCBkZWJvdW5jZVRpbWVvdXQsIHNldE9wdGlvbnNDYWNoZSwgcmVkdWNlT3B0aW9ucywgaXNNb3VudGVkUmVmKSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRJbnB1dFZhbHVlID0gcGFyYW1zUmVmLmN1cnJlbnQuaW5wdXRWYWx1ZTtcbiAgY29uc3QgaXNDYWNoZUVtcHR5ID0gIW9wdGlvbnNDYWNoZVJlZi5jdXJyZW50W2N1cnJlbnRJbnB1dFZhbHVlXTtcbiAgY29uc3QgY3VycmVudE9wdGlvbnMgPSBpc0NhY2hlRW1wdHkgPyBnZXRJbml0aWFsQ2FjaGUocGFyYW1zUmVmLmN1cnJlbnQpIDogb3B0aW9uc0NhY2hlUmVmLmN1cnJlbnRbY3VycmVudElucHV0VmFsdWVdO1xuICBpZiAoY3VycmVudE9wdGlvbnMuaXNMb2FkaW5nIHx8ICFjdXJyZW50T3B0aW9ucy5oYXNNb3JlIHx8IGN1cnJlbnRPcHRpb25zLmxvY2tlZFVudGlsID4gRGF0ZS5ub3coKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBzZXRPcHRpb25zQ2FjaGUoXG4gICAgKHByZXZPcHRpb25zQ2FjaGUpID0+ICh7XG4gICAgICAuLi5wcmV2T3B0aW9uc0NhY2hlLFxuICAgICAgW2N1cnJlbnRJbnB1dFZhbHVlXToge1xuICAgICAgICAuLi5jdXJyZW50T3B0aW9ucyxcbiAgICAgICAgaXNMb2FkaW5nOiB0cnVlXG4gICAgICB9XG4gICAgfSlcbiAgKTtcbiAgaWYgKGRlYm91bmNlVGltZW91dCA+IDAgJiYgY2FsbGVyID09PSBcImlucHV0LWNoYW5nZVwiKSB7XG4gICAgYXdhaXQgc2xlZXAoZGVib3VuY2VUaW1lb3V0KTtcbiAgICBjb25zdCBuZXdJbnB1dFZhbHVlID0gcGFyYW1zUmVmLmN1cnJlbnQuaW5wdXRWYWx1ZTtcbiAgICBpZiAoY3VycmVudElucHV0VmFsdWUgIT09IG5ld0lucHV0VmFsdWUpIHtcbiAgICAgIHNldE9wdGlvbnNDYWNoZSgocHJldk9wdGlvbnNDYWNoZSkgPT4ge1xuICAgICAgICBpZiAoaXNDYWNoZUVtcHR5KSB7XG4gICAgICAgICAgY29uc3QgeyBbY3VycmVudElucHV0VmFsdWVdOiBpdGVtRm9yRGVsZXRlLCAuLi5yZXN0Q2FjaGUgfSA9IHByZXZPcHRpb25zQ2FjaGU7XG4gICAgICAgICAgcmV0dXJuIHJlc3RDYWNoZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnByZXZPcHRpb25zQ2FjaGUsXG4gICAgICAgICAgW2N1cnJlbnRJbnB1dFZhbHVlXToge1xuICAgICAgICAgICAgLi4uY3VycmVudE9wdGlvbnMsXG4gICAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG4gIGNvbnN0IHsgbG9hZE9wdGlvbnMsIHJlbG9hZE9uRXJyb3JUaW1lb3V0ID0gMCB9ID0gcGFyYW1zUmVmLmN1cnJlbnQ7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldFJlc3VsdChcbiAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKFxuICAgICAgKCkgPT4gbG9hZE9wdGlvbnMoXG4gICAgICAgIGN1cnJlbnRJbnB1dFZhbHVlLFxuICAgICAgICBjdXJyZW50T3B0aW9ucy5vcHRpb25zLFxuICAgICAgICBjdXJyZW50T3B0aW9ucy5hZGRpdGlvbmFsXG4gICAgICApXG4gICAgKVxuICApO1xuICBpZiAoIWlzTW91bnRlZFJlZi5jdXJyZW50KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChyZXN1bHQuaXNFcnIoKSkge1xuICAgIHNldE9wdGlvbnNDYWNoZSgocHJldk9wdGlvbnNDYWNoZSkgPT4gKHtcbiAgICAgIC4uLnByZXZPcHRpb25zQ2FjaGUsXG4gICAgICBbY3VycmVudElucHV0VmFsdWVdOiB7XG4gICAgICAgIC4uLmN1cnJlbnRPcHRpb25zLFxuICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICBsb2NrZWRVbnRpbDogRGF0ZS5ub3coKSArIHJlbG9hZE9uRXJyb3JUaW1lb3V0XG4gICAgICB9XG4gICAgfSkpO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCByZXNwb25zZSA9IHJlc3VsdC51bndyYXAoKTtcbiAgaWYgKHZhbGlkYXRlUmVzcG9uc2UocmVzcG9uc2UpKSB7XG4gICAgY29uc3QgeyBvcHRpb25zLCBoYXNNb3JlIH0gPSByZXNwb25zZTtcbiAgICBjb25zdCBuZXdBZGRpdGlvbmFsID0gT2JqZWN0Lmhhc093bihyZXNwb25zZSwgXCJhZGRpdGlvbmFsXCIpID8gcmVzcG9uc2UuYWRkaXRpb25hbCA6IGN1cnJlbnRPcHRpb25zLmFkZGl0aW9uYWw7XG4gICAgc2V0T3B0aW9uc0NhY2hlKChwcmV2T3B0aW9uc0NhY2hlKSA9PiAoe1xuICAgICAgLi4ucHJldk9wdGlvbnNDYWNoZSxcbiAgICAgIFtjdXJyZW50SW5wdXRWYWx1ZV06IHtcbiAgICAgICAgLi4uY3VycmVudE9wdGlvbnMsXG4gICAgICAgIG9wdGlvbnM6IHJlZHVjZU9wdGlvbnMoY3VycmVudE9wdGlvbnMub3B0aW9ucywgb3B0aW9ucywgbmV3QWRkaXRpb25hbCksXG4gICAgICAgIGhhc01vcmU6ICEhaGFzTW9yZSxcbiAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgaXNGaXJzdExvYWQ6IGZhbHNlLFxuICAgICAgICBhZGRpdGlvbmFsOiBuZXdBZGRpdGlvbmFsXG4gICAgICB9XG4gICAgfSkpO1xuICB9XG59O1xuXG4vLyBzcmMvdXNlQXN5bmNQYWdpbmF0ZUJhc2UudHNcbnZhciBpbmNyZWFzZVN0YXRlSWQgPSAocHJldlN0YXRlSWQpID0+IHByZXZTdGF0ZUlkICsgMTtcbnZhciB1c2VBc3luY1BhZ2luYXRlQmFzZSA9IChwYXJhbXMsIGRlcHMgPSBbXSkgPT4ge1xuICBjb25zdCB7XG4gICAgZGVmYXVsdE9wdGlvbnMsXG4gICAgbG9hZE9wdGlvbnNPbk1lbnVPcGVuID0gdHJ1ZSxcbiAgICBkZWJvdW5jZVRpbWVvdXQgPSAwLFxuICAgIGlucHV0VmFsdWUsXG4gICAgbWVudUlzT3BlbixcbiAgICBmaWx0ZXJPcHRpb24gPSBudWxsLFxuICAgIHJlZHVjZU9wdGlvbnMgPSBkZWZhdWx0UmVkdWNlT3B0aW9ucyxcbiAgICBzaG91bGRMb2FkTW9yZSA9IGRlZmF1bHRTaG91bGRMb2FkTW9yZVxuICB9ID0gcGFyYW1zO1xuICBjb25zdCBpc01vdW50ZWRSZWYgPSB1c2VJc01vdW50ZWRSZWYoKTtcbiAgY29uc3QgcmVkdWNlT3B0aW9uc1JlZiA9IHVzZUxhdGVzdChyZWR1Y2VPcHRpb25zKTtcbiAgY29uc3QgbG9hZE9wdGlvbnNPbk1lbnVPcGVuUmVmID0gdXNlTGF0ZXN0KGxvYWRPcHRpb25zT25NZW51T3Blbik7XG4gIGNvbnN0IGlzSW5pdFJlZiA9IHVzZVJlZih0cnVlKTtcbiAgY29uc3QgcGFyYW1zUmVmID0gdXNlUmVmKHBhcmFtcyk7XG4gIHBhcmFtc1JlZi5jdXJyZW50ID0gcGFyYW1zO1xuICBjb25zdCBbX3N0YXRlSWQsIHNldFN0YXRlSWRdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IG9wdGlvbnNDYWNoZVJlZiA9IHVzZUxhenlSZWYoKCkgPT4gZ2V0SW5pdGlhbE9wdGlvbnNDYWNoZShwYXJhbXMpKTtcbiAgY29uc3QgY2FsbFJlcXVlc3RPcHRpb25zUmVmID0gdXNlTGF0ZXN0KFxuICAgIChjYWxsZXIpID0+IHtcbiAgICAgIHJlcXVlc3RPcHRpb25zKFxuICAgICAgICBjYWxsZXIsXG4gICAgICAgIHBhcmFtc1JlZixcbiAgICAgICAgb3B0aW9uc0NhY2hlUmVmLFxuICAgICAgICBkZWJvdW5jZVRpbWVvdXQsXG4gICAgICAgIChyZWR1Y2VTdGF0ZSkgPT4ge1xuICAgICAgICAgIG9wdGlvbnNDYWNoZVJlZi5jdXJyZW50ID0gcmVkdWNlU3RhdGUob3B0aW9uc0NhY2hlUmVmLmN1cnJlbnQpO1xuICAgICAgICAgIGlmIChpc01vdW50ZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgc2V0U3RhdGVJZChpbmNyZWFzZVN0YXRlSWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVkdWNlT3B0aW9uc1JlZi5jdXJyZW50LFxuICAgICAgICBpc01vdW50ZWRSZWZcbiAgICAgICk7XG4gICAgfVxuICApO1xuICBjb25zdCBoYW5kbGVTY3JvbGxlZFRvQm90dG9tID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRJbnB1dFZhbHVlID0gcGFyYW1zUmVmLmN1cnJlbnQuaW5wdXRWYWx1ZTtcbiAgICBjb25zdCBjdXJyZW50T3B0aW9uczIgPSBvcHRpb25zQ2FjaGVSZWYuY3VycmVudFtjdXJyZW50SW5wdXRWYWx1ZV07XG4gICAgaWYgKGN1cnJlbnRPcHRpb25zMikge1xuICAgICAgY2FsbFJlcXVlc3RPcHRpb25zUmVmLmN1cnJlbnQoXCJtZW51LXNjcm9sbFwiKTtcbiAgICB9XG4gIH0sIFtjYWxsUmVxdWVzdE9wdGlvbnNSZWYsIG9wdGlvbnNDYWNoZVJlZl0pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc0luaXRSZWYuY3VycmVudCkge1xuICAgICAgaXNJbml0UmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9uc0NhY2hlUmVmLmN1cnJlbnQgPSB7fTtcbiAgICAgIHNldFN0YXRlSWQoaW5jcmVhc2VTdGF0ZUlkKTtcbiAgICB9XG4gICAgaWYgKGRlZmF1bHRPcHRpb25zID09PSB0cnVlKSB7XG4gICAgICBjYWxsUmVxdWVzdE9wdGlvbnNSZWYuY3VycmVudChcImF1dG9sb2FkXCIpO1xuICAgIH1cbiAgfSwgZGVwcyk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1lbnVJc09wZW4gJiYgIW9wdGlvbnNDYWNoZVJlZi5jdXJyZW50W2lucHV0VmFsdWVdKSB7XG4gICAgICBjYWxsUmVxdWVzdE9wdGlvbnNSZWYuY3VycmVudChcImlucHV0LWNoYW5nZVwiKTtcbiAgICB9XG4gIH0sIFtjYWxsUmVxdWVzdE9wdGlvbnNSZWYsIGlucHV0VmFsdWUsIG1lbnVJc09wZW4sIG9wdGlvbnNDYWNoZVJlZl0pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChtZW51SXNPcGVuICYmICFvcHRpb25zQ2FjaGVSZWYuY3VycmVudFtcIlwiXSAmJiBsb2FkT3B0aW9uc09uTWVudU9wZW5SZWYuY3VycmVudCkge1xuICAgICAgY2FsbFJlcXVlc3RPcHRpb25zUmVmLmN1cnJlbnQoXCJtZW51LXRvZ2dsZVwiKTtcbiAgICB9XG4gIH0sIFtcbiAgICBjYWxsUmVxdWVzdE9wdGlvbnNSZWYsXG4gICAgbG9hZE9wdGlvbnNPbk1lbnVPcGVuUmVmLFxuICAgIG1lbnVJc09wZW4sXG4gICAgb3B0aW9uc0NhY2hlUmVmXG4gIF0pO1xuICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IG9wdGlvbnNDYWNoZVJlZi5jdXJyZW50W2lucHV0VmFsdWVdIHx8IGdldEluaXRpYWxDYWNoZShwYXJhbXMpO1xuICByZXR1cm4ge1xuICAgIGhhbmRsZVNjcm9sbGVkVG9Cb3R0b20sXG4gICAgc2hvdWxkTG9hZE1vcmUsXG4gICAgZmlsdGVyT3B0aW9uLFxuICAgIGlzTG9hZGluZzogY3VycmVudE9wdGlvbnMuaXNMb2FkaW5nIHx8IGN1cnJlbnRPcHRpb25zLmxvY2tlZFVudGlsID4gRGF0ZS5ub3coKSxcbiAgICBpc0ZpcnN0TG9hZDogY3VycmVudE9wdGlvbnMuaXNGaXJzdExvYWQsXG4gICAgb3B0aW9uczogY3VycmVudE9wdGlvbnMub3B0aW9uc1xuICB9O1xufTtcblxuLy8gc3JjL3VzZUFzeW5jUGFnaW5hdGUudHNcbnZhciB1c2VBc3luY1BhZ2luYXRlID0gKHBhcmFtcywgZGVwcyA9IFtdKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBpbnB1dFZhbHVlOiBpbnB1dFZhbHVlUGFyYW0sXG4gICAgbWVudUlzT3BlbjogbWVudUlzT3BlblBhcmFtLFxuICAgIGRlZmF1bHRJbnB1dFZhbHVlOiBkZWZhdWx0SW5wdXRWYWx1ZVBhcmFtLFxuICAgIGRlZmF1bHRNZW51SXNPcGVuOiBkZWZhdWx0TWVudUlzT3BlblBhcmFtLFxuICAgIG9uSW5wdXRDaGFuZ2U6IG9uSW5wdXRDaGFuZ2VQYXJhbSxcbiAgICBvbk1lbnVDbG9zZTogb25NZW51Q2xvc2VQYXJhbSxcbiAgICBvbk1lbnVPcGVuOiBvbk1lbnVPcGVuUGFyYW1cbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgW2lucHV0VmFsdWVTdGF0ZSwgc2V0SW5wdXRWYWx1ZV0gPSB1c2VTdGF0ZTIoXG4gICAgZGVmYXVsdElucHV0VmFsdWVQYXJhbSB8fCBcIlwiXG4gICk7XG4gIGNvbnN0IFttZW51SXNPcGVuU3RhdGUsIHNldE1lbnVJc09wZW5dID0gdXNlU3RhdGUyKCEhZGVmYXVsdE1lbnVJc09wZW5QYXJhbSk7XG4gIGNvbnN0IGlucHV0VmFsdWUgPSB0eXBlb2YgaW5wdXRWYWx1ZVBhcmFtID09PSBcInN0cmluZ1wiID8gaW5wdXRWYWx1ZVBhcmFtIDogaW5wdXRWYWx1ZVN0YXRlO1xuICBjb25zdCBtZW51SXNPcGVuID0gdHlwZW9mIG1lbnVJc09wZW5QYXJhbSA9PT0gXCJib29sZWFuXCIgPyBtZW51SXNPcGVuUGFyYW0gOiBtZW51SXNPcGVuU3RhdGU7XG4gIGNvbnN0IG9uSW5wdXRDaGFuZ2UgPSB1c2VDYWxsYmFjazIoXG4gICAgKG5leHRJbnB1dFZhbHVlLCBhY3Rpb25NZXRhKSA9PiB7XG4gICAgICBpZiAob25JbnB1dENoYW5nZVBhcmFtKSB7XG4gICAgICAgIG9uSW5wdXRDaGFuZ2VQYXJhbShuZXh0SW5wdXRWYWx1ZSwgYWN0aW9uTWV0YSk7XG4gICAgICB9XG4gICAgICBzZXRJbnB1dFZhbHVlKG5leHRJbnB1dFZhbHVlKTtcbiAgICB9LFxuICAgIFtvbklucHV0Q2hhbmdlUGFyYW1dXG4gICk7XG4gIGNvbnN0IG9uTWVudUNsb3NlID0gdXNlQ2FsbGJhY2syKCgpID0+IHtcbiAgICBpZiAob25NZW51Q2xvc2VQYXJhbSkge1xuICAgICAgb25NZW51Q2xvc2VQYXJhbSgpO1xuICAgIH1cbiAgICBzZXRNZW51SXNPcGVuKGZhbHNlKTtcbiAgfSwgW29uTWVudUNsb3NlUGFyYW1dKTtcbiAgY29uc3Qgb25NZW51T3BlbiA9IHVzZUNhbGxiYWNrMigoKSA9PiB7XG4gICAgaWYgKG9uTWVudU9wZW5QYXJhbSkge1xuICAgICAgb25NZW51T3BlblBhcmFtKCk7XG4gICAgfVxuICAgIHNldE1lbnVJc09wZW4odHJ1ZSk7XG4gIH0sIFtvbk1lbnVPcGVuUGFyYW1dKTtcbiAgY29uc3QgYmFzZVJlc3VsdCA9IHVzZUFzeW5jUGFnaW5hdGVCYXNlKFxuICAgIHtcbiAgICAgIC4uLnBhcmFtcyxcbiAgICAgIGlucHV0VmFsdWUsXG4gICAgICBtZW51SXNPcGVuXG4gICAgfSxcbiAgICBkZXBzXG4gICk7XG4gIHJldHVybiB7XG4gICAgLi4uYmFzZVJlc3VsdCxcbiAgICBpbnB1dFZhbHVlLFxuICAgIG1lbnVJc09wZW4sXG4gICAgb25JbnB1dENoYW5nZSxcbiAgICBvbk1lbnVDbG9zZSxcbiAgICBvbk1lbnVPcGVuXG4gIH07XG59O1xuXG4vLyBzcmMvdXNlQ29tcG9uZW50cy50c1xuaW1wb3J0IHsgdXNlTWVtbyBhcyB1c2VNZW1vMiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29tcG9uZW50cyBhcyBkZWZhdWx0Q29tcG9uZW50cyB9IGZyb20gXCJyZWFjdC1zZWxlY3RcIjtcblxuLy8gc3JjL3dyYXBNZW51TGlzdC50c3hcbmltcG9ydCBjb21wb3NlUmVmcyBmcm9tIFwiQHNlem5hbS9jb21wb3NlLXJlYWN0LXJlZnNcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrIGFzIHVzZUNhbGxiYWNrMywgdXNlRWZmZWN0IGFzIHVzZUVmZmVjdDIsIHVzZU1lbW8sIHVzZVJlZiBhcyB1c2VSZWYyIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBqc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbnZhciBDSEVDS19USU1FT1VUID0gMzAwO1xuZnVuY3Rpb24gd3JhcE1lbnVMaXN0KE1lbnVMaXN0Mikge1xuICBmdW5jdGlvbiBXcmFwcGVkTWVudUxpc3QocHJvcHMpIHtcbiAgICBjb25zdCB7IHNlbGVjdFByb3BzLCBpbm5lclJlZiB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyBoYW5kbGVTY3JvbGxlZFRvQm90dG9tLCBzaG91bGRMb2FkTW9yZSB9ID0gc2VsZWN0UHJvcHM7XG4gICAgY29uc3QgY2hlY2tUaW1lb3V0UmVmID0gdXNlUmVmMihudWxsKTtcbiAgICBjb25zdCBtZW51TGlzdFJlZiA9IHVzZVJlZjIobnVsbCk7XG4gICAgY29uc3Qgc2hvdWxkSGFuZGxlID0gdXNlQ2FsbGJhY2szKCgpID0+IHtcbiAgICAgIGNvbnN0IGVsID0gbWVudUxpc3RSZWYuY3VycmVudDtcbiAgICAgIGlmICghZWwpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBlbDtcbiAgICAgIHJldHVybiBzaG91bGRMb2FkTW9yZShzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCwgc2Nyb2xsVG9wKTtcbiAgICB9LCBbc2hvdWxkTG9hZE1vcmVdKTtcbiAgICBjb25zdCBjaGVja0FuZEhhbmRsZSA9IHVzZUNhbGxiYWNrMygoKSA9PiB7XG4gICAgICBpZiAoc2hvdWxkSGFuZGxlKCkpIHtcbiAgICAgICAgaWYgKGhhbmRsZVNjcm9sbGVkVG9Cb3R0b20pIHtcbiAgICAgICAgICBoYW5kbGVTY3JvbGxlZFRvQm90dG9tKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBbc2hvdWxkSGFuZGxlLCBoYW5kbGVTY3JvbGxlZFRvQm90dG9tXSk7XG4gICAgY29uc3Qgc2V0Q2hlY2tBbmRIYW5kbGVUaW1lb3V0ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSAoKSA9PiB7XG4gICAgICAgIGNoZWNrQW5kSGFuZGxlKCk7XG4gICAgICAgIGNoZWNrVGltZW91dFJlZi5jdXJyZW50ID0gc2V0VGltZW91dChyZXMsIENIRUNLX1RJTUVPVVQpO1xuICAgICAgfTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSwgW2NoZWNrQW5kSGFuZGxlXSk7XG4gICAgdXNlRWZmZWN0MigoKSA9PiB7XG4gICAgICBzZXRDaGVja0FuZEhhbmRsZVRpbWVvdXQoKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChjaGVja1RpbWVvdXRSZWYuY3VycmVudCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dChjaGVja1RpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSwgW10pO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgTWVudUxpc3QyLFxuICAgICAge1xuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgaW5uZXJSZWY6IGNvbXBvc2VSZWZzKGlubmVyUmVmLCBtZW51TGlzdFJlZilcbiAgICAgIH1cbiAgICApO1xuICB9XG4gIHJldHVybiBXcmFwcGVkTWVudUxpc3Q7XG59XG5cbi8vIHNyYy91c2VDb21wb25lbnRzLnRzXG52YXIgTWVudUxpc3QgPSB3cmFwTWVudUxpc3QoXG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogZml4IHR5cGVzXG4gIGRlZmF1bHRDb21wb25lbnRzLk1lbnVMaXN0XG4pO1xudmFyIHVzZUNvbXBvbmVudHMgPSAoY29tcG9uZW50cykgPT4gdXNlTWVtbzIoXG4gICgpID0+ICh7XG4gICAgTWVudUxpc3QsXG4gICAgLi4uY29tcG9uZW50c1xuICB9KSxcbiAgW2NvbXBvbmVudHNdXG4pO1xuXG4vLyBzcmMvd2l0aEFzeW5jUGFnaW5hdGUudHN4XG5pbXBvcnQgeyBqc3ggYXMganN4MiB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xudmFyIGRlZmF1bHRDYWNoZVVuaXFzID0gW107XG52YXIgZGVmYXVsdENvbXBvbmVudHMyID0ge307XG5mdW5jdGlvbiB3aXRoQXN5bmNQYWdpbmF0ZShTZWxlY3RDb21wb25lbnQpIHtcbiAgZnVuY3Rpb24gV2l0aEFzeW5jUGFnaW5hdGUocHJvcHMpIHtcbiAgICBjb25zdCB7XG4gICAgICBjb21wb25lbnRzID0gZGVmYXVsdENvbXBvbmVudHMyLFxuICAgICAgc2VsZWN0UmVmID0gdm9pZCAwLFxuICAgICAgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9wLFxuICAgICAgY2FjaGVVbmlxcyA9IGRlZmF1bHRDYWNoZVVuaXFzLFxuICAgICAgLi4ucmVzdFxuICAgIH0gPSBwcm9wcztcbiAgICBjb25zdCBhc3luY1BhZ2luYXRlUHJvcHMgPSB1c2VBc3luY1BhZ2luYXRlKHJlc3QsIGNhY2hlVW5pcXMpO1xuICAgIGNvbnN0IHByb2Nlc3NlZENvbXBvbmVudHMgPSB1c2VDb21wb25lbnRzKFxuICAgICAgY29tcG9uZW50c1xuICAgICk7XG4gICAgY29uc3QgaXNMb2FkaW5nID0gdHlwZW9mIGlzTG9hZGluZ1Byb3AgPT09IFwiYm9vbGVhblwiID8gaXNMb2FkaW5nUHJvcCA6IGFzeW5jUGFnaW5hdGVQcm9wcy5pc0xvYWRpbmc7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3gyKFxuICAgICAgU2VsZWN0Q29tcG9uZW50LFxuICAgICAge1xuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgLi4uYXN5bmNQYWdpbmF0ZVByb3BzLFxuICAgICAgICBpc0xvYWRpbmcsXG4gICAgICAgIGNvbXBvbmVudHM6IHByb2Nlc3NlZENvbXBvbmVudHMsXG4gICAgICAgIHJlZjogc2VsZWN0UmVmXG4gICAgICB9XG4gICAgKTtcbiAgfVxuICByZXR1cm4gV2l0aEFzeW5jUGFnaW5hdGU7XG59XG5cbi8vIHNyYy9yZWR1Y2VHcm91cGVkT3B0aW9ucy50c1xudmFyIGNoZWNrR3JvdXAgPSAoZ3JvdXApID0+IHtcbiAgaWYgKCFncm91cCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCB7IGxhYmVsLCBvcHRpb25zIH0gPSBncm91cDtcbiAgaWYgKHR5cGVvZiBsYWJlbCAhPT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YgbGFiZWwgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciByZWR1Y2VHcm91cGVkT3B0aW9ucyA9IChwcmV2T3B0aW9ucywgbG9hZGVkT3B0aW9ucykgPT4ge1xuICBjb25zdCByZXMgPSBwcmV2T3B0aW9ucy5zbGljZSgpO1xuICBjb25zdCBtYXBMYWJlbFRvSW5kZXggPSB7fTtcbiAgbGV0IHByZXZPcHRpb25zSW5kZXggPSAwO1xuICBjb25zdCBwcmV2T3B0aW9uc0xlbmd0aCA9IHByZXZPcHRpb25zLmxlbmd0aDtcbiAgZm9yIChjb25zdCBvcHRpb25Pckdyb3VwIG9mIGxvYWRlZE9wdGlvbnMpIHtcbiAgICBjb25zdCBncm91cCA9IGNoZWNrR3JvdXAob3B0aW9uT3JHcm91cCkgPyBvcHRpb25Pckdyb3VwIDoge1xuICAgICAgb3B0aW9uczogW29wdGlvbk9yR3JvdXBdXG4gICAgfTtcbiAgICBjb25zdCB7IGxhYmVsID0gXCJcIiB9ID0gZ3JvdXA7XG4gICAgbGV0IGdyb3VwSW5kZXggPSBtYXBMYWJlbFRvSW5kZXhbbGFiZWxdO1xuICAgIGlmICh0eXBlb2YgZ3JvdXBJbmRleCAhPT0gXCJudW1iZXJcIikge1xuICAgICAgZm9yICg7IHByZXZPcHRpb25zSW5kZXggPCBwcmV2T3B0aW9uc0xlbmd0aCAmJiB0eXBlb2YgbWFwTGFiZWxUb0luZGV4W2xhYmVsXSAhPT0gXCJudW1iZXJcIjsgKytwcmV2T3B0aW9uc0luZGV4KSB7XG4gICAgICAgIGNvbnN0IHByZXZHcm91cCA9IHByZXZPcHRpb25zW3ByZXZPcHRpb25zSW5kZXhdO1xuICAgICAgICBpZiAoY2hlY2tHcm91cChwcmV2R3JvdXApKSB7XG4gICAgICAgICAgbWFwTGFiZWxUb0luZGV4W3ByZXZHcm91cC5sYWJlbCB8fCBcIlwiXSA9IHByZXZPcHRpb25zSW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGdyb3VwSW5kZXggPSBtYXBMYWJlbFRvSW5kZXhbbGFiZWxdO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGdyb3VwSW5kZXggIT09IFwibnVtYmVyXCIpIHtcbiAgICAgIG1hcExhYmVsVG9JbmRleFtsYWJlbF0gPSByZXMubGVuZ3RoO1xuICAgICAgcmVzLnB1c2goZ3JvdXApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNbZ3JvdXBJbmRleF0gPSB7XG4gICAgICAgIC4uLnJlc1tncm91cEluZGV4XSxcbiAgICAgICAgb3B0aW9uczogWy4uLnJlc1tncm91cEluZGV4XS5vcHRpb25zLCAuLi5ncm91cC5vcHRpb25zXVxuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG5cbi8vIHNyYy9pbmRleC50c1xudmFyIEFzeW5jUGFnaW5hdGUgPSB3aXRoQXN5bmNQYWdpbmF0ZShTZWxlY3QpO1xuZXhwb3J0IHtcbiAgQXN5bmNQYWdpbmF0ZSxcbiAgY2hlY2tJc1Jlc3BvbnNlLFxuICByZWR1Y2VHcm91cGVkT3B0aW9ucyxcbiAgdXNlQXN5bmNQYWdpbmF0ZSxcbiAgdXNlQXN5bmNQYWdpbmF0ZUJhc2UsXG4gIHVzZUNvbXBvbmVudHMsXG4gIHZhbGlkYXRlUmVzcG9uc2UsXG4gIHdpdGhBc3luY1BhZ2luYXRlLFxuICB3cmFwTWVudUxpc3Rcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJpbXBvcnQge1Nob3B9IGZyb20gXCIuL3Nob3BcIlxuXG5leHBvcnQgY2xhc3MgTGF5b3V0ZXJEYXRhIHtcbiAgICBmaXJzdG5hbWU6IHN0cmluZ1xuICAgIGNvbXBhbnk6IHN0cmluZ1xuICAgIGxhc3RuYW1lOiBzdHJpbmdcbiAgICBzdHJlZXQ6IHN0cmluZ1xuICAgIGhvdXNlTnVtYmVyOiBzdHJpbmdcbiAgICB6aXA6IHN0cmluZ1xuICAgIGNpdHk6IHN0cmluZ1xuICAgIHBob25lOiBzdHJpbmdcbiAgICBjb3VudHJ5OiBzdHJpbmdcbiAgICB1c3RpZDogc3RyaW5nXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5maXJzdG5hbWUgPSBcIlwiXG4gICAgICAgIHRoaXMuY29tcGFueSA9IFwiXCJcbiAgICAgICAgdGhpcy5sYXN0bmFtZSA9IFwiXCJcbiAgICAgICAgdGhpcy5zdHJlZXQgPSBcIlwiXG4gICAgICAgIHRoaXMuaG91c2VOdW1iZXIgPSBcIlwiXG4gICAgICAgIHRoaXMuemlwID0gXCJcIlxuICAgICAgICB0aGlzLmNpdHkgPSBcIlwiXG4gICAgICAgIHRoaXMucGhvbmUgPSBcIlwiXG4gICAgICAgIHRoaXMuY291bnRyeSA9IFwiXCJcbiAgICAgICAgdGhpcy51c3RpZCA9IFwiXCJcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQ29udGFjdCB7XG4gICAgdWlkOiBudW1iZXJcbiAgICB1c2VybmFtZTogc3RyaW5nXG4gICAgZW1haWw6IHN0cmluZ1xuICAgIHBhc3N3b3JkOiBzdHJpbmdcbiAgICB1dWlkOiBzdHJpbmdcbiAgICBzaG9wczogU2hvcFtdXG4gICAgbGF5b3V0ZXJfZGF0YTogTGF5b3V0ZXJEYXRhXG5cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnVpZCA9IDBcbiAgICAgICAgdGhpcy51dWlkID0gXCJcIlxuICAgICAgICB0aGlzLnVzZXJuYW1lID0gXCJcIlxuICAgICAgICB0aGlzLmVtYWlsID0gXCJcIlxuICAgICAgICB0aGlzLnBhc3N3b3JkID0gXCJcIlxuICAgICAgICB0aGlzLnNob3BzID0gW11cbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhID0gbmV3IExheW91dGVyRGF0YSgpXG4gICAgfVxuXG4gICAgcGFyc2VGcm9tSnNvbihpdGVtOiBhbnkpIHtcbiAgICAgICAgdGhpcy51aWQgPSBpdGVtLmNvbnRhY3QudWlkXG4gICAgICAgIHRoaXMudXVpZCA9IGl0ZW0uY29udGFjdC51dWlkXG4gICAgICAgIHRoaXMuZW1haWwgPSBpdGVtLmNvbnRhY3QuZW1haWxcbiAgICAgICAgdGhpcy51c2VybmFtZSA9IGl0ZW0uY29udGFjdC51c2VybmFtZVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuZmlyc3RuYW1lID0gaXRlbS5jb250YWN0LmxheW91dGVyX2RhdGEuZmlyc3RuYW1lXG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS5jb21wYW55ID0gaXRlbS5jb250YWN0LmxheW91dGVyX2RhdGEuY29tcGFueVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEubGFzdG5hbWUgPSBpdGVtLmNvbnRhY3QubGF5b3V0ZXJfZGF0YS5sYXN0bmFtZVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuc3RyZWV0ID0gaXRlbS5jb250YWN0LmxheW91dGVyX2RhdGEuc3RyZWV0XG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS5ob3VzZU51bWJlciA9IGl0ZW0uY29udGFjdC5sYXlvdXRlcl9kYXRhLmhvdXNlTnVtYmVyXG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS56aXAgPSBpdGVtLmNvbnRhY3QubGF5b3V0ZXJfZGF0YS56aXBcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLmNpdHkgPSBpdGVtLmNvbnRhY3QubGF5b3V0ZXJfZGF0YS5jaXR5XG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS5waG9uZSA9IGl0ZW0uY29udGFjdC5sYXlvdXRlcl9kYXRhLnBob25lXG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS5jb3VudHJ5ID0gaXRlbS5jb250YWN0LmxheW91dGVyX2RhdGEuY291bnRyeVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEudXN0aWQgPSBpdGVtLmNvbnRhY3QubGF5b3V0ZXJfZGF0YS51c3RpZFxuICAgIH1cblxuICAgIHBhcnNlRnJvbUZvcm1EYXRhKGZvcm1kYXRhOiBhbnksIHNob3A6IFNob3AgPSBudWxsKSB7XG5cbiAgICAgICAgdGhpcy5lbWFpbCA9IGZvcm1kYXRhLmVtYWlsXG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS5jb21wYW55ID0gZm9ybWRhdGEuY29tcGFueVxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuZmlyc3RuYW1lID0gZm9ybWRhdGEuZmlyc3RuYW1lXG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS5sYXN0bmFtZSA9IGZvcm1kYXRhLmxhc3RuYW1lXG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS5zdHJlZXQgPSBmb3JtZGF0YS5zdHJlZXRcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLmhvdXNlTnVtYmVyID0gZm9ybWRhdGEuaG91c2VOdW1iZXJcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLnppcCA9IGZvcm1kYXRhLnppcFxuICAgICAgICB0aGlzLmxheW91dGVyX2RhdGEuY2l0eSA9IGZvcm1kYXRhLmNpdHlcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLnBob25lID0gZm9ybWRhdGEucGhvbmVcbiAgICAgICAgdGhpcy5sYXlvdXRlcl9kYXRhLmNvdW50cnkgPSBmb3JtZGF0YS5jb3VudHJ5XG4gICAgICAgIHRoaXMubGF5b3V0ZXJfZGF0YS51c3RpZCA9IGZvcm1kYXRhLnVzdGlkXG4gICAgICAgIGlmKHNob3ApIHtcbiAgICAgICAgICAgIHRoaXMuc2hvcHMucHVzaChzaG9wKVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiaW1wb3J0IHtpbmplY3QsIGF1dG9JbmplY3RhYmxlLCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZS1uZW9cIjtcbmltcG9ydCBUb2tlbiBmcm9tIFwiLi90b2tlblwiO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IENvbnRhY3QgfSBmcm9tIFwiLi4vbW9kZWwvY29udGFjdFwiO1xuaW1wb3J0IHsgQWRkcmVzcyB9IGZyb20gXCIuLi9tb2RlbC9hZGRyZXNzXCI7XG5pbXBvcnQgeyBTaG9wIH0gZnJvbSBcIi4uL21vZGVsL3Nob3BcIjtcblxuQHNpbmdsZXRvbigpXG5AYXV0b0luamVjdGFibGUoKVxuY2xhc3MgQ29udGFjdFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihAaW5qZWN0KFRva2VuKSB0b2tlbj86IFRva2VuKSB7XG4gICAgdGhpcy50b2tlbiA9IHRva2VuXG4gIH1cblxuICBhc3luYyBjcmVhdGVDb250YWN0KGNvbnRhY3Q6IENvbnRhY3QpOiBQcm9taXNlPENvbnRhY3Q+IHtcblxuICAgIHJldHVybiBhd2FpdCBheGlvcy5wb3N0KCcvYXBwcy9hcGkvY29udGFjdC9jcmVhdGUnLCB7J2NvbnRhY3QnOiBjb250YWN0fSAse1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMudG9rZW4/LmN1cnJlbnRUb2tlblxuICAgICAgfVxuICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlQ29udGFjdChjb250YWN0OiBDb250YWN0KTogUHJvbWlzZTxDb250YWN0PiB7XG5cbiAgICByZXR1cm4gYXdhaXQgYXhpb3MucHV0KCcvYXBwcy9hcGkvY29udGFjdC91cGRhdGUvJyArIGNvbnRhY3QudXVpZCwgeydjb250YWN0JzogY29udGFjdH0gLHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLnRva2VuPy5jdXJyZW50VG9rZW5cbiAgICAgIH1cbiAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGdldENvbnRhY3RzKHNlYXJjaFF1ZXJ5OiBTdHJpbmcsIHBhZ2U6IE51bWJlciwgc2hvcDogU2hvcCk6IFByb21pc2U8Q29udGFjdFtdPiB7XG5cbiAgICByZXR1cm4gYXdhaXQgYXhpb3MuZ2V0KCcvYXBwcy9hcGkvY29udGFjdC9hbGxieXNob3AvJyArIHNob3AudXVpZCArICc/dGVybT0nICsgc2VhcmNoUXVlcnkgKyAnJnBhZ2U9JyArIHBhZ2UsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLnRva2VuPy5jdXJyZW50VG9rZW5cbiAgICAgICAgfVxuICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgIGxldCBjb250YWN0ID0gbmV3IENvbnRhY3Q7XG4gICAgICAgICAgY29udGFjdC5wYXJzZUZyb21Kc29uKHtjb250YWN0OiBpdGVtfSk7XG4gICAgICAgICAgcmV0dXJuIGNvbnRhY3Q7XG4gICAgICAgIH0pXG4gICAgXG4gICAgfSk7XG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBDb250YWN0U2VydmljZVxuIiwiaW1wb3J0IHZhbGlkYXRlIGZyb20gJy4vdmFsaWRhdGUuanMnO1xuY29uc3QgYnl0ZVRvSGV4ID0gW107XG5mb3IgKGxldCBpID0gMDsgaSA8IDI1NjsgKytpKSB7XG4gICAgYnl0ZVRvSGV4LnB1c2goKGkgKyAweDEwMCkudG9TdHJpbmcoMTYpLnNsaWNlKDEpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB1bnNhZmVTdHJpbmdpZnkoYXJyLCBvZmZzZXQgPSAwKSB7XG4gICAgcmV0dXJuIChieXRlVG9IZXhbYXJyW29mZnNldCArIDBdXSArXG4gICAgICAgIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMV1dICtcbiAgICAgICAgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAyXV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDNdXSArXG4gICAgICAgICctJyArXG4gICAgICAgIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgNF1dICtcbiAgICAgICAgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA1XV0gK1xuICAgICAgICAnLScgK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDZdXSArXG4gICAgICAgIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgN11dICtcbiAgICAgICAgJy0nICtcbiAgICAgICAgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA4XV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDldXSArXG4gICAgICAgICctJyArXG4gICAgICAgIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMTBdXSArXG4gICAgICAgIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMTFdXSArXG4gICAgICAgIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMTJdXSArXG4gICAgICAgIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMTNdXSArXG4gICAgICAgIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMTRdXSArXG4gICAgICAgIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMTVdXSkudG9Mb3dlckNhc2UoKTtcbn1cbmZ1bmN0aW9uIHN0cmluZ2lmeShhcnIsIG9mZnNldCA9IDApIHtcbiAgICBjb25zdCB1dWlkID0gdW5zYWZlU3RyaW5naWZ5KGFyciwgb2Zmc2V0KTtcbiAgICBpZiAoIXZhbGlkYXRlKHV1aWQpKSB7XG4gICAgICAgIHRocm93IFR5cGVFcnJvcignU3RyaW5naWZpZWQgVVVJRCBpcyBpbnZhbGlkJyk7XG4gICAgfVxuICAgIHJldHVybiB1dWlkO1xufVxuZXhwb3J0IGRlZmF1bHQgc3RyaW5naWZ5O1xuIiwibGV0IGdldFJhbmRvbVZhbHVlcztcbmNvbnN0IHJuZHM4ID0gbmV3IFVpbnQ4QXJyYXkoMTYpO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcm5nKCkge1xuICAgIGlmICghZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY3J5cHRvID09PSAndW5kZWZpbmVkJyB8fCAhY3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKCkgbm90IHN1cHBvcnRlZC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS91dWlkanMvdXVpZCNnZXRyYW5kb212YWx1ZXMtbm90LXN1cHBvcnRlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGdldFJhbmRvbVZhbHVlcyA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMuYmluZChjcnlwdG8pO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0UmFuZG9tVmFsdWVzKHJuZHM4KTtcbn1cbiIsImNvbnN0IHJhbmRvbVVVSUQgPSB0eXBlb2YgY3J5cHRvICE9PSAndW5kZWZpbmVkJyAmJiBjcnlwdG8ucmFuZG9tVVVJRCAmJiBjcnlwdG8ucmFuZG9tVVVJRC5iaW5kKGNyeXB0byk7XG5leHBvcnQgZGVmYXVsdCB7IHJhbmRvbVVVSUQgfTtcbiIsImltcG9ydCBuYXRpdmUgZnJvbSAnLi9uYXRpdmUuanMnO1xuaW1wb3J0IHJuZyBmcm9tICcuL3JuZy5qcyc7XG5pbXBvcnQgeyB1bnNhZmVTdHJpbmdpZnkgfSBmcm9tICcuL3N0cmluZ2lmeS5qcyc7XG5mdW5jdGlvbiB2NChvcHRpb25zLCBidWYsIG9mZnNldCkge1xuICAgIGlmIChuYXRpdmUucmFuZG9tVVVJRCAmJiAhYnVmICYmICFvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBuYXRpdmUucmFuZG9tVVVJRCgpO1xuICAgIH1cbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICBjb25zdCBybmRzID0gb3B0aW9ucy5yYW5kb20gfHwgKG9wdGlvbnMucm5nIHx8IHJuZykoKTtcbiAgICBybmRzWzZdID0gKHJuZHNbNl0gJiAweDBmKSB8IDB4NDA7XG4gICAgcm5kc1s4XSA9IChybmRzWzhdICYgMHgzZikgfCAweDgwO1xuICAgIGlmIChidWYpIHtcbiAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0IHx8IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTY7ICsraSkge1xuICAgICAgICAgICAgYnVmW29mZnNldCArIGldID0gcm5kc1tpXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnVmO1xuICAgIH1cbiAgICByZXR1cm4gdW5zYWZlU3RyaW5naWZ5KHJuZHMpO1xufVxuZXhwb3J0IGRlZmF1bHQgdjQ7XG4iLCJpbXBvcnQge3Y0IGFzIHV1aWR2NH0gZnJvbSAndXVpZCdcblxuZXhwb3J0IGNsYXNzIEFjY291bnQge1xuICAgIHVpZDogTnVtYmVyXG4gICAgYXBwZW5kaXg6IFN0cmluZ1xuICAgIHRpdGxlOiBTdHJpbmdcbiAgICB1dWlkOiBTdHJpbmdcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnVpZCA9IDBcbiAgICAgICAgdGhpcy51dWlkID0gXCJcIlxuICAgICAgICB0aGlzLmFwcGVuZGl4ID0gXCJcIlxuICAgICAgICB0aGlzLnRpdGxlID0gXCJcIlxuICAgIH1cblxuICAgIHBhcnNlRnJvbUpzb24oaXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMudWlkID0gaXRlbS5hY2NvdW50LnVpZFxuICAgICAgICB0aGlzLnV1aWQgPSBpdGVtLmFjY291bnQudXVpZFxuICAgICAgICB0aGlzLnRpdGxlID0gaXRlbS5hY2NvdW50LnRpdGxlXG4gICAgICAgIHRoaXMuYXBwZW5kaXggPSBpdGVtLmFjY291bnQuYXBwZW5kaXhcbiAgICB9XG59IiwiaW1wb3J0IHt2NCBhcyB1dWlkdjR9IGZyb20gJ3V1aWQnXG5pbXBvcnQge0NvbnRhY3R9IGZyb20gXCIuL2NvbnRhY3RcIlxuaW1wb3J0IHtTaG9wfSBmcm9tIFwiLi9zaG9wXCJcblxuZXhwb3J0IGNsYXNzIEFkZHJlc3Mge1xuICAgIHVpZDogTnVtYmVyXG4gICAgdXVpZDogU3RyaW5nXG4gICAgZmlyc3RuYW1lOiBTdHJpbmdcbiAgICBsYXN0bmFtZTogU3RyaW5nXG4gICAgc3RyZWV0OiBTdHJpbmdcbiAgICBob3VzZU51bWJlcjogU3RyaW5nXG4gICAgemlwOiBTdHJpbmdcbiAgICBjb21wYW55OiBTdHJpbmdcbiAgICBjb21wYW55MjogU3RyaW5nXG4gICAgcGhvbmU6IFN0cmluZ1xuICAgIGNvdW50cnk6IFN0cmluZ1xuICAgIHVzdGlkOiBTdHJpbmdcbiAgICBjaXR5OiBTdHJpbmdcbiAgICBlbWFpbDogU3RyaW5nXG4gICAgY29udGFjdDogQ29udGFjdFxuICAgIHR5cGU6IE51bWJlclxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMudWlkID0gMFxuICAgICAgICB0aGlzLnV1aWQgPSBcIlwiXG4gICAgICAgIHRoaXMuZmlyc3RuYW1lID0gXCJcIlxuICAgICAgICB0aGlzLmxhc3RuYW1lID0gXCJcIlxuICAgICAgICB0aGlzLnN0cmVldCA9IFwiXCJcbiAgICAgICAgdGhpcy5ob3VzZU51bWJlciA9IFwiXCJcbiAgICAgICAgdGhpcy56aXAgPSBcIlwiXG4gICAgICAgIHRoaXMuY29tcGFueSA9IFwiXCJcbiAgICAgICAgdGhpcy5jb21wYW55MiA9IFwiXCJcbiAgICAgICAgdGhpcy5jaXR5ID0gXCJcIlxuICAgICAgICB0aGlzLmVtYWlsID0gXCJcIlxuICAgICAgICB0aGlzLmNvdW50cnkgPSBcIlwiXG4gICAgICAgIHRoaXMudXN0aWQgPSBcIlwiXG4gICAgICAgIHRoaXMuY29udGFjdCA9IG5ldyBDb250YWN0KClcbiAgICAgICAgdGhpcy50eXBlID0gMFxuICAgIH1cblxuICAgIHBhcnNlRnJvbUpzb24oaXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMudWlkID0gaXRlbS51aWRcbiAgICAgICAgdGhpcy51dWlkID0gaXRlbS51dWlkXG4gICAgICAgIHRoaXMuZmlyc3RuYW1lID0gaXRlbS5maXJzdG5hbWVcbiAgICAgICAgdGhpcy5sYXN0bmFtZSA9IGl0ZW0ubGFzdG5hbWVcbiAgICAgICAgdGhpcy5zdHJlZXQgPSBpdGVtLnN0cmVldFxuICAgICAgICB0aGlzLmhvdXNlTnVtYmVyID0gaXRlbS5ob3VzZU51bWJlclxuICAgICAgICB0aGlzLnppcCA9IGl0ZW0uemlwXG4gICAgICAgIHRoaXMuY29tcGFueSA9IGl0ZW0uY29tcGFueVxuICAgICAgICB0aGlzLmNvbXBhbnkyID0gaXRlbS5jb21wYW55MlxuICAgICAgICB0aGlzLnBob25lID0gaXRlbS5waG9uZVxuICAgICAgICB0aGlzLmNpdHkgPSBpdGVtLmNpdHlcbiAgICAgICAgdGhpcy5lbWFpbCA9IGl0ZW0uZW1haWxcbiAgICAgICAgdGhpcy50eXBlID0gaXRlbS50eXBlXG4gICAgICAgIHRoaXMuY291bnRyeSA9IGl0ZW0uY291bnRyeVxuICAgICAgICB0aGlzLnVzdGlkID0gaXRlbS51c3RpZFxuICAgIH1cblxuICAgIHBhcnNlRnJvbUZvcm1EYXRhKGZvcm1kYXRhOiBhbnkpIHtcblxuICAgICAgICB0aGlzLmVtYWlsID0gZm9ybWRhdGEuZW1haWxcbiAgICAgICAgdGhpcy5jb21wYW55ID0gZm9ybWRhdGEuY29tcGFueVxuICAgICAgICB0aGlzLmZpcnN0bmFtZSA9IGZvcm1kYXRhLmZpcnN0bmFtZVxuICAgICAgICB0aGlzLmxhc3RuYW1lID0gZm9ybWRhdGEubGFzdG5hbWVcbiAgICAgICAgdGhpcy5zdHJlZXQgPSBmb3JtZGF0YS5zdHJlZXRcbiAgICAgICAgdGhpcy5ob3VzZU51bWJlciA9IGZvcm1kYXRhLmhvdXNlTnVtYmVyXG4gICAgICAgIHRoaXMuemlwID0gZm9ybWRhdGEuemlwXG4gICAgICAgIHRoaXMuY2l0eSA9IGZvcm1kYXRhLmNpdHlcbiAgICAgICAgdGhpcy5waG9uZSA9IGZvcm1kYXRhLnBob25lXG4gICAgICAgIHRoaXMuY291bnRyeSA9IGZvcm1kYXRhLmNvdW50cnlcbiAgICAgICAgdGhpcy51c3RpZCA9IGZvcm1kYXRhLnVzdGlkXG4gICAgfVxufSIsImludGVyZmFjZSBQYXJhbSB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlclxufVxuXG5leHBvcnQgY2xhc3MgU3BlY2lhbFByb2R1Y3RUeXBlT2JqZWN0IHtcbiAgICBwYXJhbXM6IEFycmF5PFBhcmFtPiA9IFtdXG4gICAgdHlwOiBOdW1iZXIgPSAwXG5cbiAgICBwYXJzZUZyb21Kc29uKGl0ZW06IGFueSkge1xuICAgICAgICB0aGlzLnR5cCA9IGl0ZW0udHlwXG4gICAgICAgIHRoaXMucGFyYW1zID0gaXRlbS5wYXJhbXNcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQcm9kdWN0IHtcbiAgICBpZDogTnVtYmVyID0gMFxuICAgIHRpdGxlOiBTdHJpbmcgPSBcIlwiXG4gICAgdXVpZDogU3RyaW5nID0gXCJcIlxuICAgIHNwZWNpYWxQcm9kdWN0VHlwZU9iamVjdDogU3BlY2lhbFByb2R1Y3RUeXBlT2JqZWN0ID0gbmV3IFNwZWNpYWxQcm9kdWN0VHlwZU9iamVjdCgpXG5cbiAgICBwYXJzZUZyb21Kc29uKGl0ZW06IGFueSkge1xuICAgICAgICB0aGlzLmlkID0gaXRlbS5pZFxuICAgICAgICB0aGlzLnRpdGxlID0gaXRlbS50aXRsZVxuICAgICAgICB0aGlzLnV1aWQgPSBpdGVtLnV1aWRcbiAgICAgICAgdGhpcy5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QucGFyc2VGcm9tSnNvbihpdGVtLnNwZWNpYWxQcm9kdWN0VHlwZU9iamVjdClcbiAgICB9XG59IiwiZXhwb3J0IGNsYXNzIFByaWNlIHtcclxuICAgIG5ldDogbnVtYmVyID0gMFxyXG4gICAgdmF0OiBudW1iZXIgPSAwXHJcbiAgICBncm9zczogbnVtYmVyID0gMFxyXG5cclxuICAgIGFsbE5ldDogbnVtYmVyID0gMFxyXG4gICAgYWxsVmF0OiBudW1iZXIgPSAwXHJcbiAgICBhbGxHcm9zczogbnVtYmVyID0gMFxyXG5cclxuICAgIHBhcnNlRnJvbUpzb24oaXRlbTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5uZXQgPSBpdGVtLm5ldFxyXG4gICAgICAgIHRoaXMudmF0ID0gaXRlbS52YXRcclxuICAgICAgICB0aGlzLmdyb3NzID0gaXRlbS5ncm9zc1xyXG4gICAgICAgIHRoaXMuYWxsTmV0ID0gaXRlbS5hbGxOZXRcclxuICAgICAgICB0aGlzLmFsbFZhdCA9IGl0ZW0uYWxsVmF0XHJcbiAgICAgICAgdGhpcy5hbGxHcm9zcyA9IGl0ZW0uYWxsR3Jvc3NcclxuICAgIH1cclxufSIsImltcG9ydCB7djQgYXMgdXVpZHY0fSBmcm9tICd1dWlkJ1xyXG5pbXBvcnQge1Byb2R1Y3R9IGZyb20gXCIuL3Byb2R1Y3RcIlxyXG5pbXBvcnQge1ByaWNlfSBmcm9tIFwiLi9wcmljZVwiXHJcblxyXG5leHBvcnQgY2xhc3MgUG9zIHtcclxuICAgIHV1aWQ6IFN0cmluZyA9IFwiXCJcclxuICAgIHByb2R1Y3Q6IFByb2R1Y3QgPSBuZXcgUHJvZHVjdCgpXHJcbiAgICBzdGF0dXM6IE51bWJlciA9IDEwXHJcbiAgICBjb3VudDogTnVtYmVyID0gMVxyXG4gICAgcHJpY2U6IFByaWNlID0gbmV3IFByaWNlKClcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLnV1aWQgPSB1dWlkdjQoKVxyXG4gICAgfVxyXG5cclxuICAgIHBhcnNlRnJvbUpzb24oaXRlbTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5jb3VudCA9IGl0ZW0ucHJpY2UuY291bnRcclxuICAgICAgICB0aGlzLnN0YXR1cyA9IGl0ZW0uc3RhdHVzXHJcbiAgICAgICAgdGhpcy51dWlkID0gaXRlbS51dWlkXHJcbiAgICAgICAgdGhpcy5wcmljZS5wYXJzZUZyb21Kc29uKGl0ZW0ucHJpY2UpXHJcbiAgICAgICAgdGhpcy5wcm9kdWN0LnBhcnNlRnJvbUpzb24oaXRlbS5wcm9kdWN0KVxyXG4gICAgfVxyXG59IiwiZXhwb3J0IGNsYXNzIFBheW1lbnQge1xuICAgIHVpZDogTnVtYmVyID0gMFxuICAgIHRpdGxlOiBTdHJpbmcgPSBcIlwiXG4gICAgdXVpZDogU3RyaW5nID0gXCJcIlxuXG4gICAgcGFyc2VGcm9tSnNvbihpdGVtOiBhbnkpIHtcbiAgICAgICAgdGhpcy51aWQgPSBpdGVtLnBheW1lbnQudWlkXG4gICAgICAgIHRoaXMudGl0bGUgPSBpdGVtLnBheW1lbnQudGl0bGVcbiAgICAgICAgdGhpcy51dWlkID0gU3RyaW5nKGl0ZW0ucGF5bWVudC51dWlkKVxuICAgIH1cbn0iLCJcbmV4cG9ydCBjbGFzcyBTaGlwcGluZyB7XG4gICAgdWlkOiBOdW1iZXIgPSAwXG4gICAgdGl0bGU6IFN0cmluZyA9IFwiXCJcbiAgICB1dWlkOiBTdHJpbmcgPSBcIlwiXG5cbiAgICBwYXJzZUZyb21Kc29uKGl0ZW06IGFueSkge1xuICAgICAgICB0aGlzLnVpZCA9IGl0ZW0uc2hpcHBpbmcudWlkXG4gICAgICAgIHRoaXMudGl0bGUgPSBpdGVtLnNoaXBwaW5nLnRpdGxlXG4gICAgICAgIHRoaXMudXVpZCA9IFN0cmluZyhpdGVtLnNoaXBwaW5nLnV1aWQpXG4gICAgfVxufSIsImltcG9ydCB7djQgYXMgdXVpZHY0fSBmcm9tICd1dWlkJ1xuaW1wb3J0IHtDb250YWN0fSBmcm9tIFwiLi9jb250YWN0XCJcbmltcG9ydCB7QWNjb3VudH0gZnJvbSBcIi4vYWNjb3VudFwiXG5pbXBvcnQge0FkZHJlc3N9IGZyb20gXCIuL2FkZHJlc3NcIlxuaW1wb3J0IHtQb3N9IGZyb20gXCIuL3Bvc1wiXG5pbXBvcnQge1BheW1lbnR9IGZyb20gXCIuL3BheW1lbnRcIlxuaW1wb3J0IHtTaGlwcGluZ30gZnJvbSBcIi4vc2hpcHBpbmdcIlxuaW1wb3J0IHtTaG9wfSBmcm9tIFwiLi9zaG9wXCJcblxuY2xhc3MgT3JkZXIge1xuXG4gICAgYWxpYXM6IFN0cmluZ1xuICAgIHV1aWQ6IFN0cmluZ1xuICAgIGRyYWZ0OiBCb29sZWFuXG4gICAgc2F2ZWQ6IGJvb2xlYW5cblxuICAgIGNvbnRhY3Q6IENvbnRhY3QgPSBuZXcgQ29udGFjdCgpXG4gICAgYWNjb3VudDogQWNjb3VudCA9IG5ldyBBY2NvdW50KClcbiAgICBkZWxpdmVyeUFkZHJlc3M6IEFkZHJlc3MgPSBuZXcgQWRkcmVzcygpXG4gICAgc2VuZGVyQWRkcmVzczogQWRkcmVzcyA9IG5ldyBBZGRyZXNzKClcbiAgICBpbnZvaWNlQWRkcmVzczogQWRkcmVzcyA9IG5ldyBBZGRyZXNzKClcblxuICAgIHBvc2l0aW9uczogQXJyYXk8UG9zPiA9IFtdXG5cbiAgICBwYXltZW50OiBQYXltZW50ID0gbmV3IFBheW1lbnQoKVxuICAgIHNoaXBwaW5nOiBTaGlwcGluZyA9IG5ldyBTaGlwcGluZygpXG5cbiAgICBiYXNrZXRGaWVsZDE6IFN0cmluZ1xuICAgIGJhc2tldEZpZWxkMjogU3RyaW5nXG5cbiAgICB0eXBlOiBOdW1iZXJcbiAgICBzaG9wOiBTaG9wID0gbmV3IFNob3AoKVxuXG4gICAgbmV0OiBudW1iZXJcbiAgICB2YXQ6IG51bWJlclxuICAgIGdyb3NzOiBudW1iZXJcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnV1aWQgPSB1dWlkdjQoKVxuICAgICAgICB0aGlzLmJhc2tldEZpZWxkMSA9IFwiXCJcbiAgICAgICAgdGhpcy5iYXNrZXRGaWVsZDIgPSBcIlwiXG4gICAgICAgIHRoaXMuZHJhZnQgPSB0cnVlXG4gICAgICAgIHRoaXMuc2F2ZWQgPSBmYWxzZVxuICAgIH1cblxuICAgIGFkZFBvc2l0aW9uKHBvczogUG9zKSB7XG4gICAgICAgIHRoaXMucG9zaXRpb25zLnB1c2gocG9zKVxuICAgIH1cblxuICAgIHBhcnNlRnJvbUpzb24oaXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMuc2hvcC5wYXJzZUZyb21Kc29uKGl0ZW0pXG4gICAgICAgIHRoaXMuY29udGFjdC5wYXJzZUZyb21Kc29uKGl0ZW0pXG4gICAgICAgIHRoaXMuYWNjb3VudC5wYXJzZUZyb21Kc29uKGl0ZW0pXG4gICAgICAgIHRoaXMuc2hpcHBpbmcucGFyc2VGcm9tSnNvbihpdGVtKVxuICAgICAgICB0aGlzLnBheW1lbnQucGFyc2VGcm9tSnNvbihpdGVtKVxuICAgICAgICB0aGlzLmludm9pY2VBZGRyZXNzLnBhcnNlRnJvbUpzb24oaXRlbS5pbnZvaWNlQWRkcmVzcylcbiAgICAgICAgdGhpcy5kZWxpdmVyeUFkZHJlc3MucGFyc2VGcm9tSnNvbihpdGVtLmRlbGl2ZXJ5QWRkcmVzcylcbiAgICAgICAgdGhpcy5zZW5kZXJBZGRyZXNzLnBhcnNlRnJvbUpzb24oaXRlbS5zZW5kZXJBZGRyZXNzKVxuICAgICAgICB0aGlzLmFsaWFzID0gaXRlbS5hbGlhc1xuICAgICAgICB0aGlzLnV1aWQgPSBpdGVtLnV1aWRcbiAgICAgICAgdGhpcy50eXBlID0gaXRlbS50eXBlXG4gICAgICAgIHRoaXMuZHJhZnQgPSBpdGVtLmRyYWZ0XG4gICAgICAgIHRoaXMuc2F2ZWQgPSB0cnVlXG4gICAgICAgIHRoaXMuYmFza2V0RmllbGQxID0gaXRlbS5iYXNrZXRGaWVsZDFcbiAgICAgICAgdGhpcy5iYXNrZXRGaWVsZDIgPSBpdGVtLmJhc2tldEZpZWxkMlxuXG4gICAgICAgIGl0ZW0ucG9zaXRpb25zLm1hcCgoZSkgPT4ge1xuICAgICAgICAgICAgbGV0IHBvcyA9IG5ldyBQb3MoKVxuICAgICAgICAgICAgcG9zLnBhcnNlRnJvbUpzb24oZSlcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zLnB1c2gocG9zKVxuICAgICAgICB9KVxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJcbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxuXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cblxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlLCBTdXBwcmVzc2VkRXJyb3IsIFN5bWJvbCwgSXRlcmF0b3IgKi9cblxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XG4gIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XG4gIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG59XG5cbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcbiAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcbiAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0O1xuICB9XG4gIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcbiAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICB0W3BdID0gc1twXTtcbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICB9XG4gIHJldHVybiB0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xuICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xuICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xuICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2VzRGVjb3JhdGUoY3RvciwgZGVzY3JpcHRvckluLCBkZWNvcmF0b3JzLCBjb250ZXh0SW4sIGluaXRpYWxpemVycywgZXh0cmFJbml0aWFsaXplcnMpIHtcbiAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XG4gIHZhciBraW5kID0gY29udGV4dEluLmtpbmQsIGtleSA9IGtpbmQgPT09IFwiZ2V0dGVyXCIgPyBcImdldFwiIDoga2luZCA9PT0gXCJzZXR0ZXJcIiA/IFwic2V0XCIgOiBcInZhbHVlXCI7XG4gIHZhciB0YXJnZXQgPSAhZGVzY3JpcHRvckluICYmIGN0b3IgPyBjb250ZXh0SW5bXCJzdGF0aWNcIl0gPyBjdG9yIDogY3Rvci5wcm90b3R5cGUgOiBudWxsO1xuICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcbiAgdmFyIF8sIGRvbmUgPSBmYWxzZTtcbiAgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBjb250ZXh0ID0ge307XG4gICAgICBmb3IgKHZhciBwIGluIGNvbnRleHRJbikgY29udGV4dFtwXSA9IHAgPT09IFwiYWNjZXNzXCIgPyB7fSA6IGNvbnRleHRJbltwXTtcbiAgICAgIGZvciAodmFyIHAgaW4gY29udGV4dEluLmFjY2VzcykgY29udGV4dC5hY2Nlc3NbcF0gPSBjb250ZXh0SW4uYWNjZXNzW3BdO1xuICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcbiAgICAgIHZhciByZXN1bHQgPSAoMCwgZGVjb3JhdG9yc1tpXSkoa2luZCA9PT0gXCJhY2Nlc3NvclwiID8geyBnZXQ6IGRlc2NyaXB0b3IuZ2V0LCBzZXQ6IGRlc2NyaXB0b3Iuc2V0IH0gOiBkZXNjcmlwdG9yW2tleV0sIGNvbnRleHQpO1xuICAgICAgaWYgKGtpbmQgPT09IFwiYWNjZXNzb3JcIikge1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCB8fCB0eXBlb2YgcmVzdWx0ICE9PSBcIm9iamVjdFwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IGV4cGVjdGVkXCIpO1xuICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5nZXQpKSBkZXNjcmlwdG9yLmdldCA9IF87XG4gICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcbiAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuaW5pdCkpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XG4gICAgICAgICAgaWYgKGtpbmQgPT09IFwiZmllbGRcIikgaW5pdGlhbGl6ZXJzLnVuc2hpZnQoXyk7XG4gICAgICAgICAgZWxzZSBkZXNjcmlwdG9yW2tleV0gPSBfO1xuICAgICAgfVxuICB9XG4gIGlmICh0YXJnZXQpIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGNvbnRleHRJbi5uYW1lLCBkZXNjcmlwdG9yKTtcbiAgZG9uZSA9IHRydWU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xuICB2YXIgdXNlVmFsdWUgPSBhcmd1bWVudHMubGVuZ3RoID4gMjtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbml0aWFsaXplcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcbiAgfVxuICByZXR1cm4gdXNlVmFsdWUgPyB2YWx1ZSA6IHZvaWQgMDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3Byb3BLZXkoeCkge1xuICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XG4gIGlmICh0eXBlb2YgbmFtZSA9PT0gXCJzeW1ib2xcIikgbmFtZSA9IG5hbWUuZGVzY3JpcHRpb24gPyBcIltcIi5jb25jYXQobmFtZS5kZXNjcmlwdGlvbiwgXCJdXCIpIDogXCJcIjtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLCBcIm5hbWVcIiwgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiBwcmVmaXggPyBcIlwiLmNvbmNhdChwcmVmaXgsIFwiIFwiLCBuYW1lKSA6IG5hbWUgfSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xuICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xuICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnID0gT2JqZWN0LmNyZWF0ZSgodHlwZW9mIEl0ZXJhdG9yID09PSBcImZ1bmN0aW9uXCIgPyBJdGVyYXRvciA6IE9iamVjdCkucHJvdG90eXBlKTtcbiAgcmV0dXJuIGcubmV4dCA9IHZlcmIoMCksIGdbXCJ0aHJvd1wiXSA9IHZlcmIoMSksIGdbXCJyZXR1cm5cIl0gPSB2ZXJiKDIpLCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gIH1cbn1cblxuZXhwb3J0IHZhciBfX2NyZWF0ZUJpbmRpbmcgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcbiAgaWYgKCFkZXNjIHx8IChcImdldFwiIGluIGRlc2MgPyAhbS5fX2VzTW9kdWxlIDogZGVzYy53cml0YWJsZSB8fCBkZXNjLmNvbmZpZ3VyYWJsZSkpIHtcbiAgICAgIGRlc2MgPSB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH07XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCBkZXNjKTtcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gIG9bazJdID0gbVtrXTtcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIG8pIHtcbiAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xuICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xuICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghbSkgcmV0dXJuIG87XG4gIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICB0cnkge1xuICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gIH1cbiAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gIGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgIH1cbiAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICB9XG4gIHJldHVybiBhcjtcbn1cblxuLyoqIEBkZXByZWNhdGVkICovXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XG4gIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxuICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xuICByZXR1cm4gYXI7XG59XG5cbi8qKiBAZGVwcmVjYXRlZCAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xuICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcbiAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxuICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXG4gICAgICAgICAgcltrXSA9IGFbal07XG4gIHJldHVybiByO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheSh0bywgZnJvbSwgcGFjaykge1xuICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XG4gICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xuICAgICAgfVxuICB9XG4gIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XG4gIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcbiAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcbiAgcmV0dXJuIGkgPSBPYmplY3QuY3JlYXRlKCh0eXBlb2YgQXN5bmNJdGVyYXRvciA9PT0gXCJmdW5jdGlvblwiID8gQXN5bmNJdGVyYXRvciA6IE9iamVjdCkucHJvdG90eXBlKSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiLCBhd2FpdFJldHVybiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcbiAgZnVuY3Rpb24gYXdhaXRSZXR1cm4oZikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGYsIHJlamVjdCk7IH07IH1cbiAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlmIChnW25dKSB7IGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IGlmIChmKSBpW25dID0gZihpW25dKTsgfSB9XG4gIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cbiAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XG4gIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cbiAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxuICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcbiAgdmFyIGksIHA7XG4gIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XG4gIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IGZhbHNlIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcbiAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcbiAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xuICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XG4gIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XG4gIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XG4gIHJldHVybiBjb29rZWQ7XG59O1xuXG52YXIgX19zZXRNb2R1bGVEZWZhdWx0ID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCB2KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcbn0pIDogZnVuY3Rpb24obywgdikge1xuICBvW1wiZGVmYXVsdFwiXSA9IHY7XG59O1xuXG52YXIgb3duS2V5cyA9IGZ1bmN0aW9uKG8pIHtcbiAgb3duS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uIChvKSB7XG4gICAgdmFyIGFyID0gW107XG4gICAgZm9yICh2YXIgayBpbiBvKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIGspKSBhclthci5sZW5ndGhdID0gaztcbiAgICByZXR1cm4gYXI7XG4gIH07XG4gIHJldHVybiBvd25LZXlzKG8pO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcbiAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgPSBvd25LZXlzKG1vZCksIGkgPSAwOyBpIDwgay5sZW5ndGg7IGkrKykgaWYgKGtbaV0gIT09IFwiZGVmYXVsdFwiKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGtbaV0pO1xuICBfX3NldE1vZHVsZURlZmF1bHQocmVzdWx0LCBtb2QpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xuICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcbiAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgZ2V0dGVyXCIpO1xuICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcbiAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xuICBpZiAoa2luZCA9PT0gXCJtXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIG1ldGhvZCBpcyBub3Qgd3JpdGFibGVcIik7XG4gIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlclwiKTtcbiAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcbiAgcmV0dXJuIChraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlciwgdmFsdWUpIDogZiA/IGYudmFsdWUgPSB2YWx1ZSA6IHN0YXRlLnNldChyZWNlaXZlciwgdmFsdWUpKSwgdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkSW4oc3RhdGUsIHJlY2VpdmVyKSB7XG4gIGlmIChyZWNlaXZlciA9PT0gbnVsbCB8fCAodHlwZW9mIHJlY2VpdmVyICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiByZWNlaXZlciAhPT0gXCJmdW5jdGlvblwiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB1c2UgJ2luJyBvcGVyYXRvciBvbiBub24tb2JqZWN0XCIpO1xuICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hZGREaXNwb3NhYmxlUmVzb3VyY2UoZW52LCB2YWx1ZSwgYXN5bmMpIHtcbiAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB2b2lkIDApIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IGV4cGVjdGVkLlwiKTtcbiAgICB2YXIgZGlzcG9zZSwgaW5uZXI7XG4gICAgaWYgKGFzeW5jKSB7XG4gICAgICBpZiAoIVN5bWJvbC5hc3luY0Rpc3Bvc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNEaXNwb3NlIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgICAgIGRpc3Bvc2UgPSB2YWx1ZVtTeW1ib2wuYXN5bmNEaXNwb3NlXTtcbiAgICB9XG4gICAgaWYgKGRpc3Bvc2UgPT09IHZvaWQgMCkge1xuICAgICAgaWYgKCFTeW1ib2wuZGlzcG9zZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5kaXNwb3NlIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgICAgIGRpc3Bvc2UgPSB2YWx1ZVtTeW1ib2wuZGlzcG9zZV07XG4gICAgICBpZiAoYXN5bmMpIGlubmVyID0gZGlzcG9zZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBkaXNwb3NlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3Qgbm90IGRpc3Bvc2FibGUuXCIpO1xuICAgIGlmIChpbm5lcikgZGlzcG9zZSA9IGZ1bmN0aW9uKCkgeyB0cnkgeyBpbm5lci5jYWxsKHRoaXMpOyB9IGNhdGNoIChlKSB7IHJldHVybiBQcm9taXNlLnJlamVjdChlKTsgfSB9O1xuICAgIGVudi5zdGFjay5wdXNoKHsgdmFsdWU6IHZhbHVlLCBkaXNwb3NlOiBkaXNwb3NlLCBhc3luYzogYXN5bmMgfSk7XG4gIH1cbiAgZWxzZSBpZiAoYXN5bmMpIHtcbiAgICBlbnYuc3RhY2sucHVzaCh7IGFzeW5jOiB0cnVlIH0pO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxudmFyIF9TdXBwcmVzc2VkRXJyb3IgPSB0eXBlb2YgU3VwcHJlc3NlZEVycm9yID09PSBcImZ1bmN0aW9uXCIgPyBTdXBwcmVzc2VkRXJyb3IgOiBmdW5jdGlvbiAoZXJyb3IsIHN1cHByZXNzZWQsIG1lc3NhZ2UpIHtcbiAgdmFyIGUgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIHJldHVybiBlLm5hbWUgPSBcIlN1cHByZXNzZWRFcnJvclwiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19kaXNwb3NlUmVzb3VyY2VzKGVudikge1xuICBmdW5jdGlvbiBmYWlsKGUpIHtcbiAgICBlbnYuZXJyb3IgPSBlbnYuaGFzRXJyb3IgPyBuZXcgX1N1cHByZXNzZWRFcnJvcihlLCBlbnYuZXJyb3IsIFwiQW4gZXJyb3Igd2FzIHN1cHByZXNzZWQgZHVyaW5nIGRpc3Bvc2FsLlwiKSA6IGU7XG4gICAgZW52Lmhhc0Vycm9yID0gdHJ1ZTtcbiAgfVxuICB2YXIgciwgcyA9IDA7XG4gIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgd2hpbGUgKHIgPSBlbnYuc3RhY2sucG9wKCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghci5hc3luYyAmJiBzID09PSAxKSByZXR1cm4gcyA9IDAsIGVudi5zdGFjay5wdXNoKHIpLCBQcm9taXNlLnJlc29sdmUoKS50aGVuKG5leHQpO1xuICAgICAgICBpZiAoci5kaXNwb3NlKSB7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IHIuZGlzcG9zZS5jYWxsKHIudmFsdWUpO1xuICAgICAgICAgIGlmIChyLmFzeW5jKSByZXR1cm4gcyB8PSAyLCBQcm9taXNlLnJlc29sdmUocmVzdWx0KS50aGVuKG5leHQsIGZ1bmN0aW9uKGUpIHsgZmFpbChlKTsgcmV0dXJuIG5leHQoKTsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBzIHw9IDE7XG4gICAgICB9XG4gICAgICBjYXRjaCAoZSkge1xuICAgICAgICBmYWlsKGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocyA9PT0gMSkgcmV0dXJuIGVudi5oYXNFcnJvciA/IFByb21pc2UucmVqZWN0KGVudi5lcnJvcikgOiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICBpZiAoZW52Lmhhc0Vycm9yKSB0aHJvdyBlbnYuZXJyb3I7XG4gIH1cbiAgcmV0dXJuIG5leHQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcmV3cml0ZVJlbGF0aXZlSW1wb3J0RXh0ZW5zaW9uKHBhdGgsIHByZXNlcnZlSnN4KSB7XG4gIGlmICh0eXBlb2YgcGF0aCA9PT0gXCJzdHJpbmdcIiAmJiAvXlxcLlxcLj9cXC8vLnRlc3QocGF0aCkpIHtcbiAgICAgIHJldHVybiBwYXRoLnJlcGxhY2UoL1xcLih0c3gpJHwoKD86XFwuZCk/KSgoPzpcXC5bXi4vXSs/KT8pXFwuKFtjbV0/KXRzJC9pLCBmdW5jdGlvbiAobSwgdHN4LCBkLCBleHQsIGNtKSB7XG4gICAgICAgICAgcmV0dXJuIHRzeCA/IHByZXNlcnZlSnN4ID8gXCIuanN4XCIgOiBcIi5qc1wiIDogZCAmJiAoIWV4dCB8fCAhY20pID8gbSA6IChkICsgZXh0ICsgXCIuXCIgKyBjbS50b0xvd2VyQ2FzZSgpICsgXCJqc1wiKTtcbiAgICAgIH0pO1xuICB9XG4gIHJldHVybiBwYXRoO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIF9fZXh0ZW5kcyxcbiAgX19hc3NpZ24sXG4gIF9fcmVzdCxcbiAgX19kZWNvcmF0ZSxcbiAgX19wYXJhbSxcbiAgX19lc0RlY29yYXRlLFxuICBfX3J1bkluaXRpYWxpemVycyxcbiAgX19wcm9wS2V5LFxuICBfX3NldEZ1bmN0aW9uTmFtZSxcbiAgX19tZXRhZGF0YSxcbiAgX19hd2FpdGVyLFxuICBfX2dlbmVyYXRvcixcbiAgX19jcmVhdGVCaW5kaW5nLFxuICBfX2V4cG9ydFN0YXIsXG4gIF9fdmFsdWVzLFxuICBfX3JlYWQsXG4gIF9fc3ByZWFkLFxuICBfX3NwcmVhZEFycmF5cyxcbiAgX19zcHJlYWRBcnJheSxcbiAgX19hd2FpdCxcbiAgX19hc3luY0dlbmVyYXRvcixcbiAgX19hc3luY0RlbGVnYXRvcixcbiAgX19hc3luY1ZhbHVlcyxcbiAgX19tYWtlVGVtcGxhdGVPYmplY3QsXG4gIF9faW1wb3J0U3RhcixcbiAgX19pbXBvcnREZWZhdWx0LFxuICBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0LFxuICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0LFxuICBfX2NsYXNzUHJpdmF0ZUZpZWxkSW4sXG4gIF9fYWRkRGlzcG9zYWJsZVJlc291cmNlLFxuICBfX2Rpc3Bvc2VSZXNvdXJjZXMsXG4gIF9fcmV3cml0ZVJlbGF0aXZlSW1wb3J0RXh0ZW5zaW9uLFxufTtcbiIsImV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzRnVuY3Rpb24uanMubWFwIiwiZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVycm9yQ2xhc3MoY3JlYXRlSW1wbCkge1xuICAgIHZhciBfc3VwZXIgPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgICAgICAgRXJyb3IuY2FsbChpbnN0YW5jZSk7XG4gICAgICAgIGluc3RhbmNlLnN0YWNrID0gbmV3IEVycm9yKCkuc3RhY2s7XG4gICAgfTtcbiAgICB2YXIgY3RvckZ1bmMgPSBjcmVhdGVJbXBsKF9zdXBlcik7XG4gICAgY3RvckZ1bmMucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpO1xuICAgIGN0b3JGdW5jLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3JGdW5jO1xuICAgIHJldHVybiBjdG9yRnVuYztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNyZWF0ZUVycm9yQ2xhc3MuanMubWFwIiwiaW1wb3J0IHsgY3JlYXRlRXJyb3JDbGFzcyB9IGZyb20gJy4vY3JlYXRlRXJyb3JDbGFzcyc7XG5leHBvcnQgdmFyIFVuc3Vic2NyaXB0aW9uRXJyb3IgPSBjcmVhdGVFcnJvckNsYXNzKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gVW5zdWJzY3JpcHRpb25FcnJvckltcGwoZXJyb3JzKSB7XG4gICAgICAgIF9zdXBlcih0aGlzKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gZXJyb3JzXG4gICAgICAgICAgICA/IGVycm9ycy5sZW5ndGggKyBcIiBlcnJvcnMgb2NjdXJyZWQgZHVyaW5nIHVuc3Vic2NyaXB0aW9uOlxcblwiICsgZXJyb3JzLm1hcChmdW5jdGlvbiAoZXJyLCBpKSB7IHJldHVybiBpICsgMSArIFwiKSBcIiArIGVyci50b1N0cmluZygpOyB9KS5qb2luKCdcXG4gICcpXG4gICAgICAgICAgICA6ICcnO1xuICAgICAgICB0aGlzLm5hbWUgPSAnVW5zdWJzY3JpcHRpb25FcnJvcic7XG4gICAgICAgIHRoaXMuZXJyb3JzID0gZXJyb3JzO1xuICAgIH07XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVVuc3Vic2NyaXB0aW9uRXJyb3IuanMubWFwIiwiZXhwb3J0IGZ1bmN0aW9uIGFyclJlbW92ZShhcnIsIGl0ZW0pIHtcbiAgICBpZiAoYXJyKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGFyci5pbmRleE9mKGl0ZW0pO1xuICAgICAgICAwIDw9IGluZGV4ICYmIGFyci5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFyclJlbW92ZS5qcy5tYXAiLCJpbXBvcnQgeyBfX3JlYWQsIF9fc3ByZWFkQXJyYXksIF9fdmFsdWVzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnLi91dGlsL2lzRnVuY3Rpb24nO1xuaW1wb3J0IHsgVW5zdWJzY3JpcHRpb25FcnJvciB9IGZyb20gJy4vdXRpbC9VbnN1YnNjcmlwdGlvbkVycm9yJztcbmltcG9ydCB7IGFyclJlbW92ZSB9IGZyb20gJy4vdXRpbC9hcnJSZW1vdmUnO1xudmFyIFN1YnNjcmlwdGlvbiA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU3Vic2NyaXB0aW9uKGluaXRpYWxUZWFyZG93bikge1xuICAgICAgICB0aGlzLmluaXRpYWxUZWFyZG93biA9IGluaXRpYWxUZWFyZG93bjtcbiAgICAgICAgdGhpcy5jbG9zZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fcGFyZW50YWdlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZmluYWxpemVycyA9IG51bGw7XG4gICAgfVxuICAgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlXzEsIF9hLCBlXzIsIF9iO1xuICAgICAgICB2YXIgZXJyb3JzO1xuICAgICAgICBpZiAoIXRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgICAgICAgICB2YXIgX3BhcmVudGFnZSA9IHRoaXMuX3BhcmVudGFnZTtcbiAgICAgICAgICAgIGlmIChfcGFyZW50YWdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGFyZW50YWdlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfcGFyZW50YWdlKSkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX3BhcmVudGFnZV8xID0gX192YWx1ZXMoX3BhcmVudGFnZSksIF9wYXJlbnRhZ2VfMV8xID0gX3BhcmVudGFnZV8xLm5leHQoKTsgIV9wYXJlbnRhZ2VfMV8xLmRvbmU7IF9wYXJlbnRhZ2VfMV8xID0gX3BhcmVudGFnZV8xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJlbnRfMSA9IF9wYXJlbnRhZ2VfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudF8xLnJlbW92ZSh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9wYXJlbnRhZ2VfMV8xICYmICFfcGFyZW50YWdlXzFfMS5kb25lICYmIChfYSA9IF9wYXJlbnRhZ2VfMS5yZXR1cm4pKSBfYS5jYWxsKF9wYXJlbnRhZ2VfMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIF9wYXJlbnRhZ2UucmVtb3ZlKHRoaXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBpbml0aWFsRmluYWxpemVyID0gdGhpcy5pbml0aWFsVGVhcmRvd247XG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihpbml0aWFsRmluYWxpemVyKSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxGaW5hbGl6ZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gZSBpbnN0YW5jZW9mIFVuc3Vic2NyaXB0aW9uRXJyb3IgPyBlLmVycm9ycyA6IFtlXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgX2ZpbmFsaXplcnMgPSB0aGlzLl9maW5hbGl6ZXJzO1xuICAgICAgICAgICAgaWYgKF9maW5hbGl6ZXJzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZmluYWxpemVycyA9IG51bGw7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX2ZpbmFsaXplcnNfMSA9IF9fdmFsdWVzKF9maW5hbGl6ZXJzKSwgX2ZpbmFsaXplcnNfMV8xID0gX2ZpbmFsaXplcnNfMS5uZXh0KCk7ICFfZmluYWxpemVyc18xXzEuZG9uZTsgX2ZpbmFsaXplcnNfMV8xID0gX2ZpbmFsaXplcnNfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaW5hbGl6ZXIgPSBfZmluYWxpemVyc18xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWNGaW5hbGl6ZXIoZmluYWxpemVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBlcnJvcnMgIT09IG51bGwgJiYgZXJyb3JzICE9PSB2b2lkIDAgPyBlcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgVW5zdWJzY3JpcHRpb25FcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZChlcnJvcnMpKSwgX19yZWFkKGVyci5lcnJvcnMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2ZpbmFsaXplcnNfMV8xICYmICFfZmluYWxpemVyc18xXzEuZG9uZSAmJiAoX2IgPSBfZmluYWxpemVyc18xLnJldHVybikpIF9iLmNhbGwoX2ZpbmFsaXplcnNfMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnJvcnMpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVW5zdWJzY3JpcHRpb25FcnJvcihlcnJvcnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh0ZWFyZG93bikge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICh0ZWFyZG93biAmJiB0ZWFyZG93biAhPT0gdGhpcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgZXhlY0ZpbmFsaXplcih0ZWFyZG93bik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGVhcmRvd24gaW5zdGFuY2VvZiBTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRlYXJkb3duLmNsb3NlZCB8fCB0ZWFyZG93bi5faGFzUGFyZW50KHRoaXMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGVhcmRvd24uX2FkZFBhcmVudCh0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKHRoaXMuX2ZpbmFsaXplcnMgPSAoX2EgPSB0aGlzLl9maW5hbGl6ZXJzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBbXSkucHVzaCh0ZWFyZG93bik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUuX2hhc1BhcmVudCA9IGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgdmFyIF9wYXJlbnRhZ2UgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgICAgIHJldHVybiBfcGFyZW50YWdlID09PSBwYXJlbnQgfHwgKEFycmF5LmlzQXJyYXkoX3BhcmVudGFnZSkgJiYgX3BhcmVudGFnZS5pbmNsdWRlcyhwYXJlbnQpKTtcbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUuX2FkZFBhcmVudCA9IGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgdmFyIF9wYXJlbnRhZ2UgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgICAgIHRoaXMuX3BhcmVudGFnZSA9IEFycmF5LmlzQXJyYXkoX3BhcmVudGFnZSkgPyAoX3BhcmVudGFnZS5wdXNoKHBhcmVudCksIF9wYXJlbnRhZ2UpIDogX3BhcmVudGFnZSA/IFtfcGFyZW50YWdlLCBwYXJlbnRdIDogcGFyZW50O1xuICAgIH07XG4gICAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS5fcmVtb3ZlUGFyZW50ID0gZnVuY3Rpb24gKHBhcmVudCkge1xuICAgICAgICB2YXIgX3BhcmVudGFnZSA9IHRoaXMuX3BhcmVudGFnZTtcbiAgICAgICAgaWYgKF9wYXJlbnRhZ2UgPT09IHBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5fcGFyZW50YWdlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9wYXJlbnRhZ2UpKSB7XG4gICAgICAgICAgICBhcnJSZW1vdmUoX3BhcmVudGFnZSwgcGFyZW50KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAodGVhcmRvd24pIHtcbiAgICAgICAgdmFyIF9maW5hbGl6ZXJzID0gdGhpcy5fZmluYWxpemVycztcbiAgICAgICAgX2ZpbmFsaXplcnMgJiYgYXJyUmVtb3ZlKF9maW5hbGl6ZXJzLCB0ZWFyZG93bik7XG4gICAgICAgIGlmICh0ZWFyZG93biBpbnN0YW5jZW9mIFN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGVhcmRvd24uX3JlbW92ZVBhcmVudCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaXB0aW9uLkVNUFRZID0gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVtcHR5ID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgICAgICBlbXB0eS5jbG9zZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gZW1wdHk7XG4gICAgfSkoKTtcbiAgICByZXR1cm4gU3Vic2NyaXB0aW9uO1xufSgpKTtcbmV4cG9ydCB7IFN1YnNjcmlwdGlvbiB9O1xuZXhwb3J0IHZhciBFTVBUWV9TVUJTQ1JJUFRJT04gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5leHBvcnQgZnVuY3Rpb24gaXNTdWJzY3JpcHRpb24odmFsdWUpIHtcbiAgICByZXR1cm4gKHZhbHVlIGluc3RhbmNlb2YgU3Vic2NyaXB0aW9uIHx8XG4gICAgICAgICh2YWx1ZSAmJiAnY2xvc2VkJyBpbiB2YWx1ZSAmJiBpc0Z1bmN0aW9uKHZhbHVlLnJlbW92ZSkgJiYgaXNGdW5jdGlvbih2YWx1ZS5hZGQpICYmIGlzRnVuY3Rpb24odmFsdWUudW5zdWJzY3JpYmUpKSk7XG59XG5mdW5jdGlvbiBleGVjRmluYWxpemVyKGZpbmFsaXplcikge1xuICAgIGlmIChpc0Z1bmN0aW9uKGZpbmFsaXplcikpIHtcbiAgICAgICAgZmluYWxpemVyKCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBmaW5hbGl6ZXIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TdWJzY3JpcHRpb24uanMubWFwIiwiZXhwb3J0IHZhciBjb25maWcgPSB7XG4gICAgb25VbmhhbmRsZWRFcnJvcjogbnVsbCxcbiAgICBvblN0b3BwZWROb3RpZmljYXRpb246IG51bGwsXG4gICAgUHJvbWlzZTogdW5kZWZpbmVkLFxuICAgIHVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmc6IGZhbHNlLFxuICAgIHVzZURlcHJlY2F0ZWROZXh0Q29udGV4dDogZmFsc2UsXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uZmlnLmpzLm1hcCIsImltcG9ydCB7IF9fcmVhZCwgX19zcHJlYWRBcnJheSB9IGZyb20gXCJ0c2xpYlwiO1xuZXhwb3J0IHZhciB0aW1lb3V0UHJvdmlkZXIgPSB7XG4gICAgc2V0VGltZW91dDogZnVuY3Rpb24gKGhhbmRsZXIsIHRpbWVvdXQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2kgLSAyXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRlbGVnYXRlID0gdGltZW91dFByb3ZpZGVyLmRlbGVnYXRlO1xuICAgICAgICBpZiAoZGVsZWdhdGUgPT09IG51bGwgfHwgZGVsZWdhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRlbGVnYXRlLnNldFRpbWVvdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5zZXRUaW1lb3V0LmFwcGx5KGRlbGVnYXRlLCBfX3NwcmVhZEFycmF5KFtoYW5kbGVyLCB0aW1lb3V0XSwgX19yZWFkKGFyZ3MpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQuYXBwbHkodm9pZCAwLCBfX3NwcmVhZEFycmF5KFtoYW5kbGVyLCB0aW1lb3V0XSwgX19yZWFkKGFyZ3MpKSk7XG4gICAgfSxcbiAgICBjbGVhclRpbWVvdXQ6IGZ1bmN0aW9uIChoYW5kbGUpIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gdGltZW91dFByb3ZpZGVyLmRlbGVnYXRlO1xuICAgICAgICByZXR1cm4gKChkZWxlZ2F0ZSA9PT0gbnVsbCB8fCBkZWxlZ2F0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVsZWdhdGUuY2xlYXJUaW1lb3V0KSB8fCBjbGVhclRpbWVvdXQpKGhhbmRsZSk7XG4gICAgfSxcbiAgICBkZWxlZ2F0ZTogdW5kZWZpbmVkLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRpbWVvdXRQcm92aWRlci5qcy5tYXAiLCJpbXBvcnQgeyBjb25maWcgfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHsgdGltZW91dFByb3ZpZGVyIH0gZnJvbSAnLi4vc2NoZWR1bGVyL3RpbWVvdXRQcm92aWRlcic7XG5leHBvcnQgZnVuY3Rpb24gcmVwb3J0VW5oYW5kbGVkRXJyb3IoZXJyKSB7XG4gICAgdGltZW91dFByb3ZpZGVyLnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgb25VbmhhbmRsZWRFcnJvciA9IGNvbmZpZy5vblVuaGFuZGxlZEVycm9yO1xuICAgICAgICBpZiAob25VbmhhbmRsZWRFcnJvcikge1xuICAgICAgICAgICAgb25VbmhhbmRsZWRFcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXBvcnRVbmhhbmRsZWRFcnJvci5qcy5tYXAiLCJleHBvcnQgZnVuY3Rpb24gbm9vcCgpIHsgfVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bm9vcC5qcy5tYXAiLCJpbXBvcnQgeyBjb25maWcgfSBmcm9tICcuLi9jb25maWcnO1xudmFyIGNvbnRleHQgPSBudWxsO1xuZXhwb3J0IGZ1bmN0aW9uIGVycm9yQ29udGV4dChjYikge1xuICAgIGlmIChjb25maWcudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZykge1xuICAgICAgICB2YXIgaXNSb290ID0gIWNvbnRleHQ7XG4gICAgICAgIGlmIChpc1Jvb3QpIHtcbiAgICAgICAgICAgIGNvbnRleHQgPSB7IGVycm9yVGhyb3duOiBmYWxzZSwgZXJyb3I6IG51bGwgfTtcbiAgICAgICAgfVxuICAgICAgICBjYigpO1xuICAgICAgICBpZiAoaXNSb290KSB7XG4gICAgICAgICAgICB2YXIgX2EgPSBjb250ZXh0LCBlcnJvclRocm93biA9IF9hLmVycm9yVGhyb3duLCBlcnJvciA9IF9hLmVycm9yO1xuICAgICAgICAgICAgY29udGV4dCA9IG51bGw7XG4gICAgICAgICAgICBpZiAoZXJyb3JUaHJvd24pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY2IoKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gY2FwdHVyZUVycm9yKGVycikge1xuICAgIGlmIChjb25maWcudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZyAmJiBjb250ZXh0KSB7XG4gICAgICAgIGNvbnRleHQuZXJyb3JUaHJvd24gPSB0cnVlO1xuICAgICAgICBjb250ZXh0LmVycm9yID0gZXJyO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVycm9yQ29udGV4dC5qcy5tYXAiLCJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICcuL3V0aWwvaXNGdW5jdGlvbic7XG5pbXBvcnQgeyBpc1N1YnNjcmlwdGlvbiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAnLi9TdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgcmVwb3J0VW5oYW5kbGVkRXJyb3IgfSBmcm9tICcuL3V0aWwvcmVwb3J0VW5oYW5kbGVkRXJyb3InO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJy4vdXRpbC9ub29wJztcbmltcG9ydCB7IG5leHROb3RpZmljYXRpb24sIGVycm9yTm90aWZpY2F0aW9uLCBDT01QTEVURV9OT1RJRklDQVRJT04gfSBmcm9tICcuL05vdGlmaWNhdGlvbkZhY3Rvcmllcyc7XG5pbXBvcnQgeyB0aW1lb3V0UHJvdmlkZXIgfSBmcm9tICcuL3NjaGVkdWxlci90aW1lb3V0UHJvdmlkZXInO1xuaW1wb3J0IHsgY2FwdHVyZUVycm9yIH0gZnJvbSAnLi91dGlsL2Vycm9yQ29udGV4dCc7XG52YXIgU3Vic2NyaWJlciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFN1YnNjcmliZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gU3Vic2NyaWJlcihkZXN0aW5hdGlvbikge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5pc1N0b3BwZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGRlc3RpbmF0aW9uKSB7XG4gICAgICAgICAgICBfdGhpcy5kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uO1xuICAgICAgICAgICAgaWYgKGlzU3Vic2NyaXB0aW9uKGRlc3RpbmF0aW9uKSkge1xuICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLmFkZChfdGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBfdGhpcy5kZXN0aW5hdGlvbiA9IEVNUFRZX09CU0VSVkVSO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgU3Vic2NyaWJlci5jcmVhdGUgPSBmdW5jdGlvbiAobmV4dCwgZXJyb3IsIGNvbXBsZXRlKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2FmZVN1YnNjcmliZXIobmV4dCwgZXJyb3IsIGNvbXBsZXRlKTtcbiAgICB9O1xuICAgIFN1YnNjcmliZXIucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTdG9wcGVkKSB7XG4gICAgICAgICAgICBoYW5kbGVTdG9wcGVkTm90aWZpY2F0aW9uKG5leHROb3RpZmljYXRpb24odmFsdWUpLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX25leHQodmFsdWUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpYmVyLnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTdG9wcGVkKSB7XG4gICAgICAgICAgICBoYW5kbGVTdG9wcGVkTm90aWZpY2F0aW9uKGVycm9yTm90aWZpY2F0aW9uKGVyciksIHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc1N0b3BwZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZXJyb3IoZXJyKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaWJlci5wcm90b3R5cGUuY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzU3RvcHBlZCkge1xuICAgICAgICAgICAgaGFuZGxlU3RvcHBlZE5vdGlmaWNhdGlvbihDT01QTEVURV9OT1RJRklDQVRJT04sIHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc1N0b3BwZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaWJlci5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghdGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNTdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIF9zdXBlci5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuZGVzdGluYXRpb24gPSBudWxsO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpYmVyLnByb3RvdHlwZS5fbmV4dCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB0aGlzLmRlc3RpbmF0aW9uLm5leHQodmFsdWUpO1xuICAgIH07XG4gICAgU3Vic2NyaWJlci5wcm90b3R5cGUuX2Vycm9yID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpYmVyLnByb3RvdHlwZS5fY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBTdWJzY3JpYmVyO1xufShTdWJzY3JpcHRpb24pKTtcbmV4cG9ydCB7IFN1YnNjcmliZXIgfTtcbnZhciBfYmluZCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kO1xuZnVuY3Rpb24gYmluZChmbiwgdGhpc0FyZykge1xuICAgIHJldHVybiBfYmluZC5jYWxsKGZuLCB0aGlzQXJnKTtcbn1cbnZhciBDb25zdW1lck9ic2VydmVyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBDb25zdW1lck9ic2VydmVyKHBhcnRpYWxPYnNlcnZlcikge1xuICAgICAgICB0aGlzLnBhcnRpYWxPYnNlcnZlciA9IHBhcnRpYWxPYnNlcnZlcjtcbiAgICB9XG4gICAgQ29uc3VtZXJPYnNlcnZlci5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgcGFydGlhbE9ic2VydmVyID0gdGhpcy5wYXJ0aWFsT2JzZXJ2ZXI7XG4gICAgICAgIGlmIChwYXJ0aWFsT2JzZXJ2ZXIubmV4dCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBwYXJ0aWFsT2JzZXJ2ZXIubmV4dCh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVVbmhhbmRsZWRFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIENvbnN1bWVyT2JzZXJ2ZXIucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICB2YXIgcGFydGlhbE9ic2VydmVyID0gdGhpcy5wYXJ0aWFsT2JzZXJ2ZXI7XG4gICAgICAgIGlmIChwYXJ0aWFsT2JzZXJ2ZXIuZXJyb3IpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcGFydGlhbE9ic2VydmVyLmVycm9yKGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVVbmhhbmRsZWRFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBoYW5kbGVVbmhhbmRsZWRFcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBDb25zdW1lck9ic2VydmVyLnByb3RvdHlwZS5jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBhcnRpYWxPYnNlcnZlciA9IHRoaXMucGFydGlhbE9ic2VydmVyO1xuICAgICAgICBpZiAocGFydGlhbE9ic2VydmVyLmNvbXBsZXRlKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHBhcnRpYWxPYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVW5oYW5kbGVkRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gQ29uc3VtZXJPYnNlcnZlcjtcbn0oKSk7XG52YXIgU2FmZVN1YnNjcmliZXIgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhTYWZlU3Vic2NyaWJlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBTYWZlU3Vic2NyaWJlcihvYnNlcnZlck9yTmV4dCwgZXJyb3IsIGNvbXBsZXRlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIHZhciBwYXJ0aWFsT2JzZXJ2ZXI7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKG9ic2VydmVyT3JOZXh0KSB8fCAhb2JzZXJ2ZXJPck5leHQpIHtcbiAgICAgICAgICAgIHBhcnRpYWxPYnNlcnZlciA9IHtcbiAgICAgICAgICAgICAgICBuZXh0OiAob2JzZXJ2ZXJPck5leHQgIT09IG51bGwgJiYgb2JzZXJ2ZXJPck5leHQgIT09IHZvaWQgMCA/IG9ic2VydmVyT3JOZXh0IDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3IgIT09IG51bGwgJiYgZXJyb3IgIT09IHZvaWQgMCA/IGVycm9yIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBjb21wbGV0ZSAhPT0gbnVsbCAmJiBjb21wbGV0ZSAhPT0gdm9pZCAwID8gY29tcGxldGUgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGNvbnRleHRfMTtcbiAgICAgICAgICAgIGlmIChfdGhpcyAmJiBjb25maWcudXNlRGVwcmVjYXRlZE5leHRDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgY29udGV4dF8xID0gT2JqZWN0LmNyZWF0ZShvYnNlcnZlck9yTmV4dCk7XG4gICAgICAgICAgICAgICAgY29udGV4dF8xLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX3RoaXMudW5zdWJzY3JpYmUoKTsgfTtcbiAgICAgICAgICAgICAgICBwYXJ0aWFsT2JzZXJ2ZXIgPSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHQ6IG9ic2VydmVyT3JOZXh0Lm5leHQgJiYgYmluZChvYnNlcnZlck9yTmV4dC5uZXh0LCBjb250ZXh0XzEpLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogb2JzZXJ2ZXJPck5leHQuZXJyb3IgJiYgYmluZChvYnNlcnZlck9yTmV4dC5lcnJvciwgY29udGV4dF8xKSxcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IG9ic2VydmVyT3JOZXh0LmNvbXBsZXRlICYmIGJpbmQob2JzZXJ2ZXJPck5leHQuY29tcGxldGUsIGNvbnRleHRfMSksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcnRpYWxPYnNlcnZlciA9IG9ic2VydmVyT3JOZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIF90aGlzLmRlc3RpbmF0aW9uID0gbmV3IENvbnN1bWVyT2JzZXJ2ZXIocGFydGlhbE9ic2VydmVyKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICByZXR1cm4gU2FmZVN1YnNjcmliZXI7XG59KFN1YnNjcmliZXIpKTtcbmV4cG9ydCB7IFNhZmVTdWJzY3JpYmVyIH07XG5mdW5jdGlvbiBoYW5kbGVVbmhhbmRsZWRFcnJvcihlcnJvcikge1xuICAgIGlmIChjb25maWcudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZykge1xuICAgICAgICBjYXB0dXJlRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmVwb3J0VW5oYW5kbGVkRXJyb3IoZXJyb3IpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGRlZmF1bHRFcnJvckhhbmRsZXIoZXJyKSB7XG4gICAgdGhyb3cgZXJyO1xufVxuZnVuY3Rpb24gaGFuZGxlU3RvcHBlZE5vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIHN1YnNjcmliZXIpIHtcbiAgICB2YXIgb25TdG9wcGVkTm90aWZpY2F0aW9uID0gY29uZmlnLm9uU3RvcHBlZE5vdGlmaWNhdGlvbjtcbiAgICBvblN0b3BwZWROb3RpZmljYXRpb24gJiYgdGltZW91dFByb3ZpZGVyLnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gb25TdG9wcGVkTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbiwgc3Vic2NyaWJlcik7IH0pO1xufVxuZXhwb3J0IHZhciBFTVBUWV9PQlNFUlZFUiA9IHtcbiAgICBjbG9zZWQ6IHRydWUsXG4gICAgbmV4dDogbm9vcCxcbiAgICBlcnJvcjogZGVmYXVsdEVycm9ySGFuZGxlcixcbiAgICBjb21wbGV0ZTogbm9vcCxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TdWJzY3JpYmVyLmpzLm1hcCIsImV4cG9ydCB2YXIgb2JzZXJ2YWJsZSA9IChmdW5jdGlvbiAoKSB7IHJldHVybiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wub2JzZXJ2YWJsZSkgfHwgJ0BAb2JzZXJ2YWJsZSc7IH0pKCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1vYnNlcnZhYmxlLmpzLm1hcCIsImV4cG9ydCBmdW5jdGlvbiBpZGVudGl0eSh4KSB7XG4gICAgcmV0dXJuIHg7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pZGVudGl0eS5qcy5tYXAiLCJpbXBvcnQgeyBpZGVudGl0eSB9IGZyb20gJy4vaWRlbnRpdHknO1xuZXhwb3J0IGZ1bmN0aW9uIHBpcGUoKSB7XG4gICAgdmFyIGZucyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIGZuc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICByZXR1cm4gcGlwZUZyb21BcnJheShmbnMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBpcGVGcm9tQXJyYXkoZm5zKSB7XG4gICAgaWYgKGZucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGlkZW50aXR5O1xuICAgIH1cbiAgICBpZiAoZm5zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gZm5zWzBdO1xuICAgIH1cbiAgICByZXR1cm4gZnVuY3Rpb24gcGlwZWQoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGZucy5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGZuKSB7IHJldHVybiBmbihwcmV2KTsgfSwgaW5wdXQpO1xuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1waXBlLmpzLm1hcCIsImltcG9ydCB7IFNhZmVTdWJzY3JpYmVyLCBTdWJzY3JpYmVyIH0gZnJvbSAnLi9TdWJzY3JpYmVyJztcbmltcG9ydCB7IGlzU3Vic2NyaXB0aW9uIH0gZnJvbSAnLi9TdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgb2JzZXJ2YWJsZSBhcyBTeW1ib2xfb2JzZXJ2YWJsZSB9IGZyb20gJy4vc3ltYm9sL29ic2VydmFibGUnO1xuaW1wb3J0IHsgcGlwZUZyb21BcnJheSB9IGZyb20gJy4vdXRpbC9waXBlJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICcuL3V0aWwvaXNGdW5jdGlvbic7XG5pbXBvcnQgeyBlcnJvckNvbnRleHQgfSBmcm9tICcuL3V0aWwvZXJyb3JDb250ZXh0JztcbnZhciBPYnNlcnZhYmxlID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBPYnNlcnZhYmxlKHN1YnNjcmliZSkge1xuICAgICAgICBpZiAoc3Vic2NyaWJlKSB7XG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpYmUgPSBzdWJzY3JpYmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgT2JzZXJ2YWJsZS5wcm90b3R5cGUubGlmdCA9IGZ1bmN0aW9uIChvcGVyYXRvcikge1xuICAgICAgICB2YXIgb2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlKCk7XG4gICAgICAgIG9ic2VydmFibGUuc291cmNlID0gdGhpcztcbiAgICAgICAgb2JzZXJ2YWJsZS5vcGVyYXRvciA9IG9wZXJhdG9yO1xuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZTtcbiAgICB9O1xuICAgIE9ic2VydmFibGUucHJvdG90eXBlLnN1YnNjcmliZSA9IGZ1bmN0aW9uIChvYnNlcnZlck9yTmV4dCwgZXJyb3IsIGNvbXBsZXRlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBzdWJzY3JpYmVyID0gaXNTdWJzY3JpYmVyKG9ic2VydmVyT3JOZXh0KSA/IG9ic2VydmVyT3JOZXh0IDogbmV3IFNhZmVTdWJzY3JpYmVyKG9ic2VydmVyT3JOZXh0LCBlcnJvciwgY29tcGxldGUpO1xuICAgICAgICBlcnJvckNvbnRleHQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hID0gX3RoaXMsIG9wZXJhdG9yID0gX2Eub3BlcmF0b3IsIHNvdXJjZSA9IF9hLnNvdXJjZTtcbiAgICAgICAgICAgIHN1YnNjcmliZXIuYWRkKG9wZXJhdG9yXG4gICAgICAgICAgICAgICAgP1xuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvci5jYWxsKHN1YnNjcmliZXIsIHNvdXJjZSlcbiAgICAgICAgICAgICAgICA6IHNvdXJjZVxuICAgICAgICAgICAgICAgICAgICA/XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5fc3Vic2NyaWJlKHN1YnNjcmliZXIpXG4gICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLl90cnlTdWJzY3JpYmUoc3Vic2NyaWJlcikpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHN1YnNjcmliZXI7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlID0gZnVuY3Rpb24gKHNpbmspIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdWJzY3JpYmUoc2luayk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgc2luay5lcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24gKG5leHQsIHByb21pc2VDdG9yKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHByb21pc2VDdG9yID0gZ2V0UHJvbWlzZUN0b3IocHJvbWlzZUN0b3IpO1xuICAgICAgICByZXR1cm4gbmV3IHByb21pc2VDdG9yKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciBzdWJzY3JpYmVyID0gbmV3IFNhZmVTdWJzY3JpYmVyKHtcbiAgICAgICAgICAgICAgICBuZXh0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogcmVqZWN0LFxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiByZXNvbHZlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBfdGhpcy5zdWJzY3JpYmUoc3Vic2NyaWJlcik7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIChfYSA9IHRoaXMuc291cmNlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3Vic2NyaWJlKHN1YnNjcmliZXIpO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5wcm90b3R5cGVbU3ltYm9sX29ic2VydmFibGVdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIE9ic2VydmFibGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBvcGVyYXRpb25zID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBvcGVyYXRpb25zW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBpcGVGcm9tQXJyYXkob3BlcmF0aW9ucykodGhpcyk7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZS50b1Byb21pc2UgPSBmdW5jdGlvbiAocHJvbWlzZUN0b3IpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcHJvbWlzZUN0b3IgPSBnZXRQcm9taXNlQ3Rvcihwcm9taXNlQ3Rvcik7XG4gICAgICAgIHJldHVybiBuZXcgcHJvbWlzZUN0b3IoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIHZhbHVlO1xuICAgICAgICAgICAgX3RoaXMuc3Vic2NyaWJlKGZ1bmN0aW9uICh4KSB7IHJldHVybiAodmFsdWUgPSB4KTsgfSwgZnVuY3Rpb24gKGVycikgeyByZXR1cm4gcmVqZWN0KGVycik7IH0sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlc29sdmUodmFsdWUpOyB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLmNyZWF0ZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKHN1YnNjcmliZSk7XG4gICAgfTtcbiAgICByZXR1cm4gT2JzZXJ2YWJsZTtcbn0oKSk7XG5leHBvcnQgeyBPYnNlcnZhYmxlIH07XG5mdW5jdGlvbiBnZXRQcm9taXNlQ3Rvcihwcm9taXNlQ3Rvcikge1xuICAgIHZhciBfYTtcbiAgICByZXR1cm4gKF9hID0gcHJvbWlzZUN0b3IgIT09IG51bGwgJiYgcHJvbWlzZUN0b3IgIT09IHZvaWQgMCA/IHByb21pc2VDdG9yIDogY29uZmlnLlByb21pc2UpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IFByb21pc2U7XG59XG5mdW5jdGlvbiBpc09ic2VydmVyKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICYmIGlzRnVuY3Rpb24odmFsdWUubmV4dCkgJiYgaXNGdW5jdGlvbih2YWx1ZS5lcnJvcikgJiYgaXNGdW5jdGlvbih2YWx1ZS5jb21wbGV0ZSk7XG59XG5mdW5jdGlvbiBpc1N1YnNjcmliZXIodmFsdWUpIHtcbiAgICByZXR1cm4gKHZhbHVlICYmIHZhbHVlIGluc3RhbmNlb2YgU3Vic2NyaWJlcikgfHwgKGlzT2JzZXJ2ZXIodmFsdWUpICYmIGlzU3Vic2NyaXB0aW9uKHZhbHVlKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1PYnNlcnZhYmxlLmpzLm1hcCIsImltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICcuL2lzRnVuY3Rpb24nO1xuZXhwb3J0IGZ1bmN0aW9uIGhhc0xpZnQoc291cmNlKSB7XG4gICAgcmV0dXJuIGlzRnVuY3Rpb24oc291cmNlID09PSBudWxsIHx8IHNvdXJjZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc291cmNlLmxpZnQpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG9wZXJhdGUoaW5pdCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICAgIGlmIChoYXNMaWZ0KHNvdXJjZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2UubGlmdChmdW5jdGlvbiAobGlmdGVkU291cmNlKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluaXQobGlmdGVkU291cmNlLCB0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5hYmxlIHRvIGxpZnQgdW5rbm93biBPYnNlcnZhYmxlIHR5cGUnKTtcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bGlmdC5qcy5tYXAiLCJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IFN1YnNjcmliZXIgfSBmcm9tICcuLi9TdWJzY3JpYmVyJztcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVPcGVyYXRvclN1YnNjcmliZXIoZGVzdGluYXRpb24sIG9uTmV4dCwgb25Db21wbGV0ZSwgb25FcnJvciwgb25GaW5hbGl6ZSkge1xuICAgIHJldHVybiBuZXcgT3BlcmF0b3JTdWJzY3JpYmVyKGRlc3RpbmF0aW9uLCBvbk5leHQsIG9uQ29tcGxldGUsIG9uRXJyb3IsIG9uRmluYWxpemUpO1xufVxudmFyIE9wZXJhdG9yU3Vic2NyaWJlciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE9wZXJhdG9yU3Vic2NyaWJlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBPcGVyYXRvclN1YnNjcmliZXIoZGVzdGluYXRpb24sIG9uTmV4dCwgb25Db21wbGV0ZSwgb25FcnJvciwgb25GaW5hbGl6ZSwgc2hvdWxkVW5zdWJzY3JpYmUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZGVzdGluYXRpb24pIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLm9uRmluYWxpemUgPSBvbkZpbmFsaXplO1xuICAgICAgICBfdGhpcy5zaG91bGRVbnN1YnNjcmliZSA9IHNob3VsZFVuc3Vic2NyaWJlO1xuICAgICAgICBfdGhpcy5fbmV4dCA9IG9uTmV4dFxuICAgICAgICAgICAgPyBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBvbk5leHQodmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBfc3VwZXIucHJvdG90eXBlLl9uZXh0O1xuICAgICAgICBfdGhpcy5fZXJyb3IgPSBvbkVycm9yXG4gICAgICAgICAgICA/IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24uZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IF9zdXBlci5wcm90b3R5cGUuX2Vycm9yO1xuICAgICAgICBfdGhpcy5fY29tcGxldGUgPSBvbkNvbXBsZXRlXG4gICAgICAgICAgICA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24uZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IF9zdXBlci5wcm90b3R5cGUuX2NvbXBsZXRlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9wZXJhdG9yU3Vic2NyaWJlci5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCF0aGlzLnNob3VsZFVuc3Vic2NyaWJlIHx8IHRoaXMuc2hvdWxkVW5zdWJzY3JpYmUoKSkge1xuICAgICAgICAgICAgdmFyIGNsb3NlZF8xID0gdGhpcy5jbG9zZWQ7XG4gICAgICAgICAgICBfc3VwZXIucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAhY2xvc2VkXzEgJiYgKChfYSA9IHRoaXMub25GaW5hbGl6ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwodGhpcykpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gT3BlcmF0b3JTdWJzY3JpYmVyO1xufShTdWJzY3JpYmVyKSk7XG5leHBvcnQgeyBPcGVyYXRvclN1YnNjcmliZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU9wZXJhdG9yU3Vic2NyaWJlci5qcy5tYXAiLCJpbXBvcnQgeyBjcmVhdGVFcnJvckNsYXNzIH0gZnJvbSAnLi9jcmVhdGVFcnJvckNsYXNzJztcbmV4cG9ydCB2YXIgT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IgPSBjcmVhdGVFcnJvckNsYXNzKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3JJbXBsKCkge1xuICAgICAgICBfc3VwZXIodGhpcyk7XG4gICAgICAgIHRoaXMubmFtZSA9ICdPYmplY3RVbnN1YnNjcmliZWRFcnJvcic7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9ICdvYmplY3QgdW5zdWJzY3JpYmVkJztcbiAgICB9O1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1PYmplY3RVbnN1YnNjcmliZWRFcnJvci5qcy5tYXAiLCJpbXBvcnQgeyBfX2V4dGVuZHMsIF9fdmFsdWVzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAnLi9PYnNlcnZhYmxlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgRU1QVFlfU1VCU0NSSVBUSU9OIH0gZnJvbSAnLi9TdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IgfSBmcm9tICcuL3V0aWwvT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3InO1xuaW1wb3J0IHsgYXJyUmVtb3ZlIH0gZnJvbSAnLi91dGlsL2FyclJlbW92ZSc7XG5pbXBvcnQgeyBlcnJvckNvbnRleHQgfSBmcm9tICcuL3V0aWwvZXJyb3JDb250ZXh0JztcbnZhciBTdWJqZWN0ID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoU3ViamVjdCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBTdWJqZWN0KCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5jbG9zZWQgPSBmYWxzZTtcbiAgICAgICAgX3RoaXMuY3VycmVudE9ic2VydmVycyA9IG51bGw7XG4gICAgICAgIF90aGlzLm9ic2VydmVycyA9IFtdO1xuICAgICAgICBfdGhpcy5pc1N0b3BwZWQgPSBmYWxzZTtcbiAgICAgICAgX3RoaXMuaGFzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgX3RoaXMudGhyb3duRXJyb3IgPSBudWxsO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFN1YmplY3QucHJvdG90eXBlLmxpZnQgPSBmdW5jdGlvbiAob3BlcmF0b3IpIHtcbiAgICAgICAgdmFyIHN1YmplY3QgPSBuZXcgQW5vbnltb3VzU3ViamVjdCh0aGlzLCB0aGlzKTtcbiAgICAgICAgc3ViamVjdC5vcGVyYXRvciA9IG9wZXJhdG9yO1xuICAgICAgICByZXR1cm4gc3ViamVjdDtcbiAgICB9O1xuICAgIFN1YmplY3QucHJvdG90eXBlLl90aHJvd0lmQ2xvc2VkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBPYmplY3RVbnN1YnNjcmliZWRFcnJvcigpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGVycm9yQ29udGV4dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgICAgIF90aGlzLl90aHJvd0lmQ2xvc2VkKCk7XG4gICAgICAgICAgICBpZiAoIV90aGlzLmlzU3RvcHBlZCkge1xuICAgICAgICAgICAgICAgIGlmICghX3RoaXMuY3VycmVudE9ic2VydmVycykge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gQXJyYXkuZnJvbShfdGhpcy5vYnNlcnZlcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKF90aGlzLmN1cnJlbnRPYnNlcnZlcnMpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2JzZXJ2ZXIgPSBfYy52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgZXJyb3JDb250ZXh0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzLl90aHJvd0lmQ2xvc2VkKCk7XG4gICAgICAgICAgICBpZiAoIV90aGlzLmlzU3RvcHBlZCkge1xuICAgICAgICAgICAgICAgIF90aGlzLmhhc0Vycm9yID0gX3RoaXMuaXNTdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBfdGhpcy50aHJvd25FcnJvciA9IGVycjtcbiAgICAgICAgICAgICAgICB2YXIgb2JzZXJ2ZXJzID0gX3RoaXMub2JzZXJ2ZXJzO1xuICAgICAgICAgICAgICAgIHdoaWxlIChvYnNlcnZlcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVycy5zaGlmdCgpLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFN1YmplY3QucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBlcnJvckNvbnRleHQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMuX3Rocm93SWZDbG9zZWQoKTtcbiAgICAgICAgICAgIGlmICghX3RoaXMuaXNTdG9wcGVkKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuaXNTdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB2YXIgb2JzZXJ2ZXJzID0gX3RoaXMub2JzZXJ2ZXJzO1xuICAgICAgICAgICAgICAgIHdoaWxlIChvYnNlcnZlcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVycy5zaGlmdCgpLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFN1YmplY3QucHJvdG90eXBlLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmlzU3RvcHBlZCA9IHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vYnNlcnZlcnMgPSB0aGlzLmN1cnJlbnRPYnNlcnZlcnMgPSBudWxsO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFN1YmplY3QucHJvdG90eXBlLCBcIm9ic2VydmVkXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICByZXR1cm4gKChfYSA9IHRoaXMub2JzZXJ2ZXJzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSA+IDA7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlID0gZnVuY3Rpb24gKHN1YnNjcmliZXIpIHtcbiAgICAgICAgdGhpcy5fdGhyb3dJZkNsb3NlZCgpO1xuICAgICAgICByZXR1cm4gX3N1cGVyLnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlLmNhbGwodGhpcywgc3Vic2NyaWJlcik7XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5fc3Vic2NyaWJlID0gZnVuY3Rpb24gKHN1YnNjcmliZXIpIHtcbiAgICAgICAgdGhpcy5fdGhyb3dJZkNsb3NlZCgpO1xuICAgICAgICB0aGlzLl9jaGVja0ZpbmFsaXplZFN0YXR1c2VzKHN1YnNjcmliZXIpO1xuICAgICAgICByZXR1cm4gdGhpcy5faW5uZXJTdWJzY3JpYmUoc3Vic2NyaWJlcik7XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5faW5uZXJTdWJzY3JpYmUgPSBmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBoYXNFcnJvciA9IF9hLmhhc0Vycm9yLCBpc1N0b3BwZWQgPSBfYS5pc1N0b3BwZWQsIG9ic2VydmVycyA9IF9hLm9ic2VydmVycztcbiAgICAgICAgaWYgKGhhc0Vycm9yIHx8IGlzU3RvcHBlZCkge1xuICAgICAgICAgICAgcmV0dXJuIEVNUFRZX1NVQlNDUklQVElPTjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmN1cnJlbnRPYnNlcnZlcnMgPSBudWxsO1xuICAgICAgICBvYnNlcnZlcnMucHVzaChzdWJzY3JpYmVyKTtcbiAgICAgICAgcmV0dXJuIG5ldyBTdWJzY3JpcHRpb24oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMuY3VycmVudE9ic2VydmVycyA9IG51bGw7XG4gICAgICAgICAgICBhcnJSZW1vdmUob2JzZXJ2ZXJzLCBzdWJzY3JpYmVyKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5fY2hlY2tGaW5hbGl6ZWRTdGF0dXNlcyA9IGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIGhhc0Vycm9yID0gX2EuaGFzRXJyb3IsIHRocm93bkVycm9yID0gX2EudGhyb3duRXJyb3IsIGlzU3RvcHBlZCA9IF9hLmlzU3RvcHBlZDtcbiAgICAgICAgaWYgKGhhc0Vycm9yKSB7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKHRocm93bkVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc1N0b3BwZWQpIHtcbiAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuYXNPYnNlcnZhYmxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgb2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlKCk7XG4gICAgICAgIG9ic2VydmFibGUuc291cmNlID0gdGhpcztcbiAgICAgICAgcmV0dXJuIG9ic2VydmFibGU7XG4gICAgfTtcbiAgICBTdWJqZWN0LmNyZWF0ZSA9IGZ1bmN0aW9uIChkZXN0aW5hdGlvbiwgc291cmNlKSB7XG4gICAgICAgIHJldHVybiBuZXcgQW5vbnltb3VzU3ViamVjdChkZXN0aW5hdGlvbiwgc291cmNlKTtcbiAgICB9O1xuICAgIHJldHVybiBTdWJqZWN0O1xufShPYnNlcnZhYmxlKSk7XG5leHBvcnQgeyBTdWJqZWN0IH07XG52YXIgQW5vbnltb3VzU3ViamVjdCA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEFub255bW91c1N1YmplY3QsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQW5vbnltb3VzU3ViamVjdChkZXN0aW5hdGlvbiwgc291cmNlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmRlc3RpbmF0aW9uID0gZGVzdGluYXRpb247XG4gICAgICAgIF90aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBBbm9ueW1vdXNTdWJqZWN0LnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIChfYiA9IChfYSA9IHRoaXMuZGVzdGluYXRpb24pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5uZXh0KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSwgdmFsdWUpO1xuICAgIH07XG4gICAgQW5vbnltb3VzU3ViamVjdC5wcm90b3R5cGUuZXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIChfYiA9IChfYSA9IHRoaXMuZGVzdGluYXRpb24pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5lcnJvcikgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIGVycik7XG4gICAgfTtcbiAgICBBbm9ueW1vdXNTdWJqZWN0LnByb3RvdHlwZS5jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgKF9iID0gKF9hID0gdGhpcy5kZXN0aW5hdGlvbikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNvbXBsZXRlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7XG4gICAgfTtcbiAgICBBbm9ueW1vdXNTdWJqZWN0LnByb3RvdHlwZS5fc3Vic2NyaWJlID0gZnVuY3Rpb24gKHN1YnNjcmliZXIpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgcmV0dXJuIChfYiA9IChfYSA9IHRoaXMuc291cmNlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3Vic2NyaWJlKHN1YnNjcmliZXIpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBFTVBUWV9TVUJTQ1JJUFRJT047XG4gICAgfTtcbiAgICByZXR1cm4gQW5vbnltb3VzU3ViamVjdDtcbn0oU3ViamVjdCkpO1xuZXhwb3J0IHsgQW5vbnltb3VzU3ViamVjdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3ViamVjdC5qcy5tYXAiLCJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICcuL1N1YmplY3QnO1xudmFyIEJlaGF2aW9yU3ViamVjdCA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEJlaGF2aW9yU3ViamVjdCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBCZWhhdmlvclN1YmplY3QoX3ZhbHVlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLl92YWx1ZSA9IF92YWx1ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQmVoYXZpb3JTdWJqZWN0LnByb3RvdHlwZSwgXCJ2YWx1ZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIEJlaGF2aW9yU3ViamVjdC5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHZhciBzdWJzY3JpcHRpb24gPSBfc3VwZXIucHJvdG90eXBlLl9zdWJzY3JpYmUuY2FsbCh0aGlzLCBzdWJzY3JpYmVyKTtcbiAgICAgICAgIXN1YnNjcmlwdGlvbi5jbG9zZWQgJiYgc3Vic2NyaWJlci5uZXh0KHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHN1YnNjcmlwdGlvbjtcbiAgICB9O1xuICAgIEJlaGF2aW9yU3ViamVjdC5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIGhhc0Vycm9yID0gX2EuaGFzRXJyb3IsIHRocm93bkVycm9yID0gX2EudGhyb3duRXJyb3IsIF92YWx1ZSA9IF9hLl92YWx1ZTtcbiAgICAgICAgaWYgKGhhc0Vycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyB0aHJvd25FcnJvcjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90aHJvd0lmQ2xvc2VkKCk7XG4gICAgICAgIHJldHVybiBfdmFsdWU7XG4gICAgfTtcbiAgICBCZWhhdmlvclN1YmplY3QucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5uZXh0LmNhbGwodGhpcywgKHRoaXMuX3ZhbHVlID0gdmFsdWUpKTtcbiAgICB9O1xuICAgIHJldHVybiBCZWhhdmlvclN1YmplY3Q7XG59KFN1YmplY3QpKTtcbmV4cG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QmVoYXZpb3JTdWJqZWN0LmpzLm1hcCIsImV4cG9ydCB2YXIgZGF0ZVRpbWVzdGFtcFByb3ZpZGVyID0ge1xuICAgIG5vdzogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKGRhdGVUaW1lc3RhbXBQcm92aWRlci5kZWxlZ2F0ZSB8fCBEYXRlKS5ub3coKTtcbiAgICB9LFxuICAgIGRlbGVnYXRlOiB1bmRlZmluZWQsXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0ZVRpbWVzdGFtcFByb3ZpZGVyLmpzLm1hcCIsImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAnLi4vU3Vic2NyaXB0aW9uJztcbnZhciBBY3Rpb24gPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhBY3Rpb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQWN0aW9uKHNjaGVkdWxlciwgd29yaykge1xuICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICB9XG4gICAgQWN0aW9uLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9uIChzdGF0ZSwgZGVsYXkpIHtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgcmV0dXJuIEFjdGlvbjtcbn0oU3Vic2NyaXB0aW9uKSk7XG5leHBvcnQgeyBBY3Rpb24gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFjdGlvbi5qcy5tYXAiLCJpbXBvcnQgeyBfX3JlYWQsIF9fc3ByZWFkQXJyYXkgfSBmcm9tIFwidHNsaWJcIjtcbmV4cG9ydCB2YXIgaW50ZXJ2YWxQcm92aWRlciA9IHtcbiAgICBzZXRJbnRlcnZhbDogZnVuY3Rpb24gKGhhbmRsZXIsIHRpbWVvdXQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2kgLSAyXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRlbGVnYXRlID0gaW50ZXJ2YWxQcm92aWRlci5kZWxlZ2F0ZTtcbiAgICAgICAgaWYgKGRlbGVnYXRlID09PSBudWxsIHx8IGRlbGVnYXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZWxlZ2F0ZS5zZXRJbnRlcnZhbCkge1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLnNldEludGVydmFsLmFwcGx5KGRlbGVnYXRlLCBfX3NwcmVhZEFycmF5KFtoYW5kbGVyLCB0aW1lb3V0XSwgX19yZWFkKGFyZ3MpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNldEludGVydmFsLmFwcGx5KHZvaWQgMCwgX19zcHJlYWRBcnJheShbaGFuZGxlciwgdGltZW91dF0sIF9fcmVhZChhcmdzKSkpO1xuICAgIH0sXG4gICAgY2xlYXJJbnRlcnZhbDogZnVuY3Rpb24gKGhhbmRsZSkge1xuICAgICAgICB2YXIgZGVsZWdhdGUgPSBpbnRlcnZhbFByb3ZpZGVyLmRlbGVnYXRlO1xuICAgICAgICByZXR1cm4gKChkZWxlZ2F0ZSA9PT0gbnVsbCB8fCBkZWxlZ2F0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVsZWdhdGUuY2xlYXJJbnRlcnZhbCkgfHwgY2xlYXJJbnRlcnZhbCkoaGFuZGxlKTtcbiAgICB9LFxuICAgIGRlbGVnYXRlOiB1bmRlZmluZWQsXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW50ZXJ2YWxQcm92aWRlci5qcy5tYXAiLCJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4vQWN0aW9uJztcbmltcG9ydCB7IGludGVydmFsUHJvdmlkZXIgfSBmcm9tICcuL2ludGVydmFsUHJvdmlkZXInO1xuaW1wb3J0IHsgYXJyUmVtb3ZlIH0gZnJvbSAnLi4vdXRpbC9hcnJSZW1vdmUnO1xudmFyIEFzeW5jQWN0aW9uID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQXN5bmNBY3Rpb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQXN5bmNBY3Rpb24oc2NoZWR1bGVyLCB3b3JrKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHNjaGVkdWxlciwgd29yaykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyO1xuICAgICAgICBfdGhpcy53b3JrID0gd29yaztcbiAgICAgICAgX3RoaXMucGVuZGluZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9uIChzdGF0ZSwgZGVsYXkpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoZGVsYXkgPT09IHZvaWQgMCkgeyBkZWxheSA9IDA7IH1cbiAgICAgICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlID0gc3RhdGU7XG4gICAgICAgIHZhciBpZCA9IHRoaXMuaWQ7XG4gICAgICAgIHZhciBzY2hlZHVsZXIgPSB0aGlzLnNjaGVkdWxlcjtcbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuaWQgPSB0aGlzLnJlY3ljbGVBc3luY0lkKHNjaGVkdWxlciwgaWQsIGRlbGF5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBlbmRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmRlbGF5ID0gZGVsYXk7XG4gICAgICAgIHRoaXMuaWQgPSAoX2EgPSB0aGlzLmlkKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLnJlcXVlc3RBc3luY0lkKHNjaGVkdWxlciwgdGhpcy5pZCwgZGVsYXkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZCA9IGZ1bmN0aW9uIChzY2hlZHVsZXIsIF9pZCwgZGVsYXkpIHtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIHJldHVybiBpbnRlcnZhbFByb3ZpZGVyLnNldEludGVydmFsKHNjaGVkdWxlci5mbHVzaC5iaW5kKHNjaGVkdWxlciwgdGhpcyksIGRlbGF5KTtcbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5yZWN5Y2xlQXN5bmNJZCA9IGZ1bmN0aW9uIChfc2NoZWR1bGVyLCBpZCwgZGVsYXkpIHtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIGlmIChkZWxheSAhPSBudWxsICYmIHRoaXMuZGVsYXkgPT09IGRlbGF5ICYmIHRoaXMucGVuZGluZyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBpZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaW50ZXJ2YWxQcm92aWRlci5jbGVhckludGVydmFsKGlkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG4gICAgQXN5bmNBY3Rpb24ucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbiAoc3RhdGUsIGRlbGF5KSB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcignZXhlY3V0aW5nIGEgY2FuY2VsbGVkIGFjdGlvbicpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGVuZGluZyA9IGZhbHNlO1xuICAgICAgICB2YXIgZXJyb3IgPSB0aGlzLl9leGVjdXRlKHN0YXRlLCBkZWxheSk7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMucGVuZGluZyA9PT0gZmFsc2UgJiYgdGhpcy5pZCAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmlkID0gdGhpcy5yZWN5Y2xlQXN5bmNJZCh0aGlzLnNjaGVkdWxlciwgdGhpcy5pZCwgbnVsbCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5fZXhlY3V0ZSA9IGZ1bmN0aW9uIChzdGF0ZSwgX2RlbGF5KSB7XG4gICAgICAgIHZhciBlcnJvcmVkID0gZmFsc2U7XG4gICAgICAgIHZhciBlcnJvclZhbHVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy53b3JrKHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgZXJyb3JlZCA9IHRydWU7XG4gICAgICAgICAgICBlcnJvclZhbHVlID0gZSA/IGUgOiBuZXcgRXJyb3IoJ1NjaGVkdWxlZCBhY3Rpb24gdGhyZXcgZmFsc3kgZXJyb3InKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3JlZCkge1xuICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yVmFsdWU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgaWQgPSBfYS5pZCwgc2NoZWR1bGVyID0gX2Euc2NoZWR1bGVyO1xuICAgICAgICAgICAgdmFyIGFjdGlvbnMgPSBzY2hlZHVsZXIuYWN0aW9ucztcbiAgICAgICAgICAgIHRoaXMud29yayA9IHRoaXMuc3RhdGUgPSB0aGlzLnNjaGVkdWxlciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIGFyclJlbW92ZShhY3Rpb25zLCB0aGlzKTtcbiAgICAgICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pZCA9IHRoaXMucmVjeWNsZUFzeW5jSWQoc2NoZWR1bGVyLCBpZCwgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRlbGF5ID0gbnVsbDtcbiAgICAgICAgICAgIF9zdXBlci5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIEFzeW5jQWN0aW9uO1xufShBY3Rpb24pKTtcbmV4cG9ydCB7IEFzeW5jQWN0aW9uIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Bc3luY0FjdGlvbi5qcy5tYXAiLCJpbXBvcnQgeyBkYXRlVGltZXN0YW1wUHJvdmlkZXIgfSBmcm9tICcuL3NjaGVkdWxlci9kYXRlVGltZXN0YW1wUHJvdmlkZXInO1xudmFyIFNjaGVkdWxlciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU2NoZWR1bGVyKHNjaGVkdWxlckFjdGlvbkN0b3IsIG5vdykge1xuICAgICAgICBpZiAobm93ID09PSB2b2lkIDApIHsgbm93ID0gU2NoZWR1bGVyLm5vdzsgfVxuICAgICAgICB0aGlzLnNjaGVkdWxlckFjdGlvbkN0b3IgPSBzY2hlZHVsZXJBY3Rpb25DdG9yO1xuICAgICAgICB0aGlzLm5vdyA9IG5vdztcbiAgICB9XG4gICAgU2NoZWR1bGVyLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9uICh3b3JrLCBkZWxheSwgc3RhdGUpIHtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIHJldHVybiBuZXcgdGhpcy5zY2hlZHVsZXJBY3Rpb25DdG9yKHRoaXMsIHdvcmspLnNjaGVkdWxlKHN0YXRlLCBkZWxheSk7XG4gICAgfTtcbiAgICBTY2hlZHVsZXIubm93ID0gZGF0ZVRpbWVzdGFtcFByb3ZpZGVyLm5vdztcbiAgICByZXR1cm4gU2NoZWR1bGVyO1xufSgpKTtcbmV4cG9ydCB7IFNjaGVkdWxlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2NoZWR1bGVyLmpzLm1hcCIsImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgU2NoZWR1bGVyIH0gZnJvbSAnLi4vU2NoZWR1bGVyJztcbnZhciBBc3luY1NjaGVkdWxlciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEFzeW5jU2NoZWR1bGVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEFzeW5jU2NoZWR1bGVyKFNjaGVkdWxlckFjdGlvbiwgbm93KSB7XG4gICAgICAgIGlmIChub3cgPT09IHZvaWQgMCkgeyBub3cgPSBTY2hlZHVsZXIubm93OyB9XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIFNjaGVkdWxlckFjdGlvbiwgbm93KSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5hY3Rpb25zID0gW107XG4gICAgICAgIF90aGlzLl9hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBBc3luY1NjaGVkdWxlci5wcm90b3R5cGUuZmx1c2ggPSBmdW5jdGlvbiAoYWN0aW9uKSB7XG4gICAgICAgIHZhciBhY3Rpb25zID0gdGhpcy5hY3Rpb25zO1xuICAgICAgICBpZiAodGhpcy5fYWN0aXZlKSB7XG4gICAgICAgICAgICBhY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZXJyb3I7XG4gICAgICAgIHRoaXMuX2FjdGl2ZSA9IHRydWU7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGlmICgoZXJyb3IgPSBhY3Rpb24uZXhlY3V0ZShhY3Rpb24uc3RhdGUsIGFjdGlvbi5kZWxheSkpKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gd2hpbGUgKChhY3Rpb24gPSBhY3Rpb25zLnNoaWZ0KCkpKTtcbiAgICAgICAgdGhpcy5fYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgd2hpbGUgKChhY3Rpb24gPSBhY3Rpb25zLnNoaWZ0KCkpKSB7XG4gICAgICAgICAgICAgICAgYWN0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIEFzeW5jU2NoZWR1bGVyO1xufShTY2hlZHVsZXIpKTtcbmV4cG9ydCB7IEFzeW5jU2NoZWR1bGVyIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Bc3luY1NjaGVkdWxlci5qcy5tYXAiLCJpbXBvcnQgeyBBc3luY0FjdGlvbiB9IGZyb20gJy4vQXN5bmNBY3Rpb24nO1xuaW1wb3J0IHsgQXN5bmNTY2hlZHVsZXIgfSBmcm9tICcuL0FzeW5jU2NoZWR1bGVyJztcbmV4cG9ydCB2YXIgYXN5bmNTY2hlZHVsZXIgPSBuZXcgQXN5bmNTY2hlZHVsZXIoQXN5bmNBY3Rpb24pO1xuZXhwb3J0IHZhciBhc3luYyA9IGFzeW5jU2NoZWR1bGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXN5bmMuanMubWFwIiwiaW1wb3J0IHsgYXN5bmNTY2hlZHVsZXIgfSBmcm9tICcuLi9zY2hlZHVsZXIvYXN5bmMnO1xuaW1wb3J0IHsgb3BlcmF0ZSB9IGZyb20gJy4uL3V0aWwvbGlmdCc7XG5pbXBvcnQgeyBjcmVhdGVPcGVyYXRvclN1YnNjcmliZXIgfSBmcm9tICcuL09wZXJhdG9yU3Vic2NyaWJlcic7XG5leHBvcnQgZnVuY3Rpb24gZGVib3VuY2VUaW1lKGR1ZVRpbWUsIHNjaGVkdWxlcikge1xuICAgIGlmIChzY2hlZHVsZXIgPT09IHZvaWQgMCkgeyBzY2hlZHVsZXIgPSBhc3luY1NjaGVkdWxlcjsgfVxuICAgIHJldHVybiBvcGVyYXRlKGZ1bmN0aW9uIChzb3VyY2UsIHN1YnNjcmliZXIpIHtcbiAgICAgICAgdmFyIGFjdGl2ZVRhc2sgPSBudWxsO1xuICAgICAgICB2YXIgbGFzdFZhbHVlID0gbnVsbDtcbiAgICAgICAgdmFyIGxhc3RUaW1lID0gbnVsbDtcbiAgICAgICAgdmFyIGVtaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoYWN0aXZlVGFzaykge1xuICAgICAgICAgICAgICAgIGFjdGl2ZVRhc2sudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICBhY3RpdmVUYXNrID0gbnVsbDtcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBsYXN0VmFsdWU7XG4gICAgICAgICAgICAgICAgbGFzdFZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBmdW5jdGlvbiBlbWl0V2hlbklkbGUoKSB7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0VGltZSA9IGxhc3RUaW1lICsgZHVlVGltZTtcbiAgICAgICAgICAgIHZhciBub3cgPSBzY2hlZHVsZXIubm93KCk7XG4gICAgICAgICAgICBpZiAobm93IDwgdGFyZ2V0VGltZSkge1xuICAgICAgICAgICAgICAgIGFjdGl2ZVRhc2sgPSB0aGlzLnNjaGVkdWxlKHVuZGVmaW5lZCwgdGFyZ2V0VGltZSAtIG5vdyk7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5hZGQoYWN0aXZlVGFzayk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZW1pdCgpO1xuICAgICAgICB9XG4gICAgICAgIHNvdXJjZS5zdWJzY3JpYmUoY3JlYXRlT3BlcmF0b3JTdWJzY3JpYmVyKHN1YnNjcmliZXIsIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgbGFzdFZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICBsYXN0VGltZSA9IHNjaGVkdWxlci5ub3coKTtcbiAgICAgICAgICAgIGlmICghYWN0aXZlVGFzaykge1xuICAgICAgICAgICAgICAgIGFjdGl2ZVRhc2sgPSBzY2hlZHVsZXIuc2NoZWR1bGUoZW1pdFdoZW5JZGxlLCBkdWVUaW1lKTtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmFkZChhY3RpdmVUYXNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZW1pdCgpO1xuICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICB9LCB1bmRlZmluZWQsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGxhc3RWYWx1ZSA9IGFjdGl2ZVRhc2sgPSBudWxsO1xuICAgICAgICB9KSk7XG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kZWJvdW5jZVRpbWUuanMubWFwIiwiaW1wb3J0IHtzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZS1uZW9cIlxuaW1wb3J0IE9yZGVyIGZyb20gXCIuLi9tb2RlbC9vcmRlclwiXG5pbXBvcnQge29ic2VydmVPYmplY3R9IGZyb20gXCIuLi9saWIvb2Itb2JcIlxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0fSBmcm9tIFwicnhqc1wiXG5cbkBzaW5nbGV0b24oKVxuY2xhc3MgT3JkZXJTdGF0ZSB7XG5cbiAgICBvcmRlcnM6IEFycmF5PE9yZGVyPlxuICAgIHByaXZhdGUgY3VycmVudE9yZGVyOiBCZWhhdmlvclN1YmplY3Q8T3JkZXI+XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50T3JkZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE9yZGVyPihuZXcgT3JkZXIoKSlcbiAgICB9XG5cbiAgICBnZXRDdXJyZW50T3JkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRPcmRlclxuICAgIH1cblxuICAgIHNldEN1cnJlbnRPcmRlcihvcmRlcjogT3JkZXIpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50T3JkZXIubmV4dChvcmRlcilcbiAgICB9XG5cbiAgICBnZXRPcmRlcih1dWlkOiBTdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3JkZXJzLm1hcCgoZSkgPT4gZS51dWlkID09IHV1aWQpXG4gICAgfVxuXG4gICAgdXBkYXRlT3JkZXIob3JkZXI6IE9yZGVyKSB7XG4gICAgICAgIHRoaXMub3JkZXJzLnB1c2gob3JkZXIpXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBPcmRlclN0YXRlXG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5leHBvcnQgdmFyIERlZmF1bHRDb250ZXh0ID0ge1xuICBjb2xvcjogdW5kZWZpbmVkLFxuICBzaXplOiB1bmRlZmluZWQsXG4gIGNsYXNzTmFtZTogdW5kZWZpbmVkLFxuICBzdHlsZTogdW5kZWZpbmVkLFxuICBhdHRyOiB1bmRlZmluZWRcbn07XG5leHBvcnQgdmFyIEljb25Db250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dCAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChEZWZhdWx0Q29udGV4dCk7IiwidmFyIF9leGNsdWRlZCA9IFtcImF0dHJcIiwgXCJzaXplXCIsIFwidGl0bGVcIl07XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSB0eXBlb2YgaSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gdHlwZW9mIHQgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gdHlwZW9mIGkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgSWNvbkNvbnRleHQsIERlZmF1bHRDb250ZXh0IH0gZnJvbSBcIi4vaWNvbkNvbnRleHQubWpzXCI7XG5mdW5jdGlvbiBUcmVlMkVsZW1lbnQodHJlZSkge1xuICByZXR1cm4gdHJlZSAmJiB0cmVlLm1hcCgobm9kZSwgaSkgPT4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQobm9kZS50YWcsIF9vYmplY3RTcHJlYWQoe1xuICAgIGtleTogaVxuICB9LCBub2RlLmF0dHIpLCBUcmVlMkVsZW1lbnQobm9kZS5jaGlsZCkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBHZW5JY29uKGRhdGEpIHtcbiAgcmV0dXJuIHByb3BzID0+IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEljb25CYXNlLCBfZXh0ZW5kcyh7XG4gICAgYXR0cjogX29iamVjdFNwcmVhZCh7fSwgZGF0YS5hdHRyKVxuICB9LCBwcm9wcyksIFRyZWUyRWxlbWVudChkYXRhLmNoaWxkKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gSWNvbkJhc2UocHJvcHMpIHtcbiAgdmFyIGVsZW0gPSBjb25mID0+IHtcbiAgICB2YXIge1xuICAgICAgICBhdHRyLFxuICAgICAgICBzaXplLFxuICAgICAgICB0aXRsZVxuICAgICAgfSA9IHByb3BzLFxuICAgICAgc3ZnUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZCk7XG4gICAgdmFyIGNvbXB1dGVkU2l6ZSA9IHNpemUgfHwgY29uZi5zaXplIHx8IFwiMWVtXCI7XG4gICAgdmFyIGNsYXNzTmFtZTtcbiAgICBpZiAoY29uZi5jbGFzc05hbWUpIGNsYXNzTmFtZSA9IGNvbmYuY2xhc3NOYW1lO1xuICAgIGlmIChwcm9wcy5jbGFzc05hbWUpIGNsYXNzTmFtZSA9IChjbGFzc05hbWUgPyBjbGFzc05hbWUgKyBcIiBcIiA6IFwiXCIpICsgcHJvcHMuY2xhc3NOYW1lO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCBfZXh0ZW5kcyh7XG4gICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICBmaWxsOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgc3Ryb2tlV2lkdGg6IFwiMFwiXG4gICAgfSwgY29uZi5hdHRyLCBhdHRyLCBzdmdQcm9wcywge1xuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgICBzdHlsZTogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgY29sb3I6IHByb3BzLmNvbG9yIHx8IGNvbmYuY29sb3JcbiAgICAgIH0sIGNvbmYuc3R5bGUpLCBwcm9wcy5zdHlsZSksXG4gICAgICBoZWlnaHQ6IGNvbXB1dGVkU2l6ZSxcbiAgICAgIHdpZHRoOiBjb21wdXRlZFNpemUsXG4gICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgfSksIHRpdGxlICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwidGl0bGVcIiwgbnVsbCwgdGl0bGUpLCBwcm9wcy5jaGlsZHJlbik7XG4gIH07XG4gIHJldHVybiBJY29uQ29udGV4dCAhPT0gdW5kZWZpbmVkID8gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbkNvbnRleHQuQ29uc3VtZXIsIG51bGwsIGNvbmYgPT4gZWxlbShjb25mKSkgOiBlbGVtKERlZmF1bHRDb250ZXh0KTtcbn0iLCIvLyBUSElTIEZJTEUgSVMgQVVUTyBHRU5FUkFURURcbmltcG9ydCB7IEdlbkljb24gfSBmcm9tICcuLi9saWIvaW5kZXgubWpzJztcbmV4cG9ydCBmdW5jdGlvbiBIaUFjYWRlbWljQ2FwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4zOTQgMi4wOGExIDEgMCAwMC0uNzg4IDBsLTcgM2ExIDEgMCAwMDAgMS44NEw1LjI1IDguMDUxYS45OTkuOTk5IDAgMDEuMzU2LS4yNTdsNC0xLjcxNGExIDEgMCAxMS43ODggMS44MzhMNy42NjcgOS4wODhsMS45NC44MzFhMSAxIDAgMDAuNzg3IDBsNy0zYTEgMSAwIDAwMC0xLjgzOGwtNy0zek0zLjMxIDkuMzk3TDUgMTAuMTJ2NC4xMDJhOC45NjkgOC45NjkgMCAwMC0xLjA1LS4xNzQgMSAxIDAgMDEtLjg5LS44OSAxMS4xMTUgMTEuMTE1IDAgMDEuMjUtMy43NjJ6TTkuMyAxNi41NzNBOS4wMjYgOS4wMjYgMCAwMDcgMTQuOTM1di0zLjk1N2wxLjgxOC43OGEzIDMgMCAwMDIuMzY0IDBsNS41MDgtMi4zNjFhMTEuMDI2IDExLjAyNiAwIDAxLjI1IDMuNzYyIDEgMSAwIDAxLS44OS44OSA4Ljk2OCA4Ljk2OCAwIDAwLTUuMzUgMi41MjQgMSAxIDAgMDEtMS40IDB6TTYgMThhMSAxIDAgMDAxLTF2LTIuMDY1YTguOTM1IDguOTM1IDAgMDAtMi0uNzEyVjE3YTEgMSAwIDAwMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlBZGp1c3RtZW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA0YTEgMSAwIDAwLTIgMHY3LjI2OGEyIDIgMCAwMDAgMy40NjRWMTZhMSAxIDAgMTAyIDB2LTEuMjY4YTIgMiAwIDAwMC0zLjQ2NFY0ek0xMSA0YTEgMSAwIDEwLTIgMHYxLjI2OGEyIDIgMCAwMDAgMy40NjRWMTZhMSAxIDAgMTAyIDBWOC43MzJhMiAyIDAgMDAwLTMuNDY0VjR6TTE2IDNhMSAxIDAgMDExIDF2Ny4yNjhhMiAyIDAgMDEwIDMuNDY0VjE2YTEgMSAwIDExLTIgMHYtMS4yNjhhMiAyIDAgMDEwLTMuNDY0VjRhMSAxIDAgMDExLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFubm90YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xOCAxM1Y1YTIgMiAwIDAwLTItMkg0YTIgMiAwIDAwLTIgMnY4YTIgMiAwIDAwMiAyaDNsMyAzIDMtM2gzYTIgMiAwIDAwMi0yek01IDdhMSAxIDAgMDExLTFoOGExIDEgMCAxMTAgMkg2YTEgMSAwIDAxLTEtMXptMSAzYTEgMSAwIDEwMCAyaDNhMSAxIDAgMTAwLTJINnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgM2EyIDIgMCAxMDAgNGgxMmEyIDIgMCAxMDAtNEg0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyA4aDE0djdhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yVjh6bTUgM2ExIDEgMCAwMTEtMWgyYTEgMSAwIDExMCAySDlhMSAxIDAgMDEtMS0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dDaXJjbGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnptMS0xMWExIDEgMCAxMC0yIDB2My41ODZMNy43MDcgOS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMyAzYTEgMSAwIDAwMS40MTQgMGwzLTNhMSAxIDAgMDAtMS40MTQtMS40MTRMMTEgMTAuNTg2Vjd6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlBcnJvd0NpcmNsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2em0uNzA3LTEwLjI5M2ExIDEgMCAwMC0xLjQxNC0xLjQxNGwtMyAzYTEgMSAwIDAwMCAxLjQxNGwzIDNhMSAxIDAgMDAxLjQxNC0xLjQxNEw5LjQxNCAxMUgxM2ExIDEgMCAxMDAtMkg5LjQxNGwxLjI5My0xLjI5M3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93Q2lyY2xlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2em0zLjcwNy04LjcwN2wtMy0zYTEgMSAwIDAwLTEuNDE0IDEuNDE0TDEwLjU4NiA5SDdhMSAxIDAgMTAwIDJoMy41ODZsLTEuMjkzIDEuMjkzYTEgMSAwIDEwMS40MTQgMS40MTRsMy0zYTEgMSAwIDAwMC0xLjQxNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93Q2lyY2xlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2em0zLjcwNy04LjcwN2wtMy0zYTEgMSAwIDAwLTEuNDE0IDBsLTMgM2ExIDEgMCAwMDEuNDE0IDEuNDE0TDkgOS40MTRWMTNhMSAxIDAgMTAyIDBWOS40MTRsMS4yOTMgMS4yOTNhMSAxIDAgMDAxLjQxNC0xLjQxNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE2LjcwNyAxMC4yOTNhMSAxIDAgMDEwIDEuNDE0bC02IDZhMSAxIDAgMDEtMS40MTQgMGwtNi02YTEgMSAwIDExMS40MTQtMS40MTRMOSAxNC41ODZWM2ExIDEgMCAwMTIgMHYxMS41ODZsNC4yOTMtNC4yOTNhMSAxIDAgMDExLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOS43MDcgMTYuNzA3YTEgMSAwIDAxLTEuNDE0IDBsLTYtNmExIDEgMCAwMTAtMS40MTRsNi02YTEgMSAwIDAxMS40MTQgMS40MTRMNS40MTQgOUgxN2ExIDEgMCAxMTAgMkg1LjQxNGw0LjI5MyA0LjI5M2ExIDEgMCAwMTAgMS40MTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlBcnJvd05hcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNC43MDcgMTIuMjkzYTEgMSAwIDAxMCAxLjQxNGwtNCA0YTEgMSAwIDAxLTEuNDE0IDBsLTQtNGExIDEgMCAxMTEuNDE0LTEuNDE0TDkgMTQuNTg2VjNhMSAxIDAgMDEyIDB2MTEuNTg2bDIuMjkzLTIuMjkzYTEgMSAwIDAxMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93TmFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTcuNzA3IDE0LjcwN2ExIDEgMCAwMS0xLjQxNCAwbC00LTRhMSAxIDAgMDEwLTEuNDE0bDQtNGExIDEgMCAwMTEuNDE0IDEuNDE0TDUuNDE0IDlIMTdhMSAxIDAgMTEwIDJINS40MTRsMi4yOTMgMi4yOTNhMSAxIDAgMDEwIDEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dOYXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEyLjI5MyA1LjI5M2ExIDEgMCAwMTEuNDE0IDBsNCA0YTEgMSAwIDAxMCAxLjQxNGwtNCA0YTEgMSAwIDAxLTEuNDE0LTEuNDE0TDE0LjU4NiAxMUgzYTEgMSAwIDExMC0yaDExLjU4NmwtMi4yOTMtMi4yOTNhMSAxIDAgMDEwLTEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dOYXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUuMjkzIDcuNzA3YTEgMSAwIDAxMC0xLjQxNGw0LTRhMSAxIDAgMDExLjQxNCAwbDQgNGExIDEgMCAwMS0xLjQxNCAxLjQxNEwxMSA1LjQxNFYxN2ExIDEgMCAxMS0yIDBWNS40MTRMNi43MDcgNy43MDdhMSAxIDAgMDEtMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMC4yOTMgMy4yOTNhMSAxIDAgMDExLjQxNCAwbDYgNmExIDEgMCAwMTAgMS40MTRsLTYgNmExIDEgMCAwMS0xLjQxNC0xLjQxNEwxNC41ODYgMTFIM2ExIDEgMCAxMTAtMmgxMS41ODZsLTQuMjkzLTQuMjkzYTEgMSAwIDAxMC0xLjQxNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93U21Eb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTQuNzA3IDEwLjI5M2ExIDEgMCAwMTAgMS40MTRsLTQgNGExIDEgMCAwMS0xLjQxNCAwbC00LTRhMSAxIDAgMTExLjQxNC0xLjQxNEw5IDEyLjU4NlY1YTEgMSAwIDAxMiAwdjcuNTg2bDIuMjkzLTIuMjkzYTEgMSAwIDAxMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93U21MZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOS43MDcgMTQuNzA3YTEgMSAwIDAxLTEuNDE0IDBsLTQtNGExIDEgMCAwMTAtMS40MTRsNC00YTEgMSAwIDAxMS40MTQgMS40MTRMNy40MTQgOUgxNWExIDEgMCAxMTAgMkg3LjQxNGwyLjI5MyAyLjI5M2ExIDEgMCAwMTAgMS40MTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlBcnJvd1NtUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMC4yOTMgNS4yOTNhMSAxIDAgMDExLjQxNCAwbDQgNGExIDEgMCAwMTAgMS40MTRsLTQgNGExIDEgMCAwMS0xLjQxNC0xLjQxNEwxMi41ODYgMTFINWExIDEgMCAxMTAtMmg3LjU4NmwtMi4yOTMtMi4yOTNhMSAxIDAgMDEwLTEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dTbVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNS4yOTMgOS43MDdhMSAxIDAgMDEwLTEuNDE0bDQtNGExIDEgMCAwMTEuNDE0IDBsNCA0YTEgMSAwIDAxLTEuNDE0IDEuNDE0TDExIDcuNDE0VjE1YTEgMSAwIDExLTIgMFY3LjQxNEw2LjcwNyA5LjcwN2ExIDEgMCAwMS0xLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMuMjkzIDkuNzA3YTEgMSAwIDAxMC0xLjQxNGw2LTZhMSAxIDAgMDExLjQxNCAwbDYgNmExIDEgMCAwMS0xLjQxNCAxLjQxNEwxMSA1LjQxNFYxN2ExIDEgMCAxMS0yIDBWNS40MTRMNC43MDcgOS43MDdhMSAxIDAgMDEtMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUFycm93c0V4cGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgNGExIDEgMCAwMTEtMWg0YTEgMSAwIDAxMCAySDYuNDE0bDIuMjkzIDIuMjkzYTEgMSAwIDAxLTEuNDE0IDEuNDE0TDUgNi40MTRWOGExIDEgMCAwMS0yIDBWNHptOSAxYTEgMSAwIDExMC0yaDRhMSAxIDAgMDExIDF2NGExIDEgMCAxMS0yIDBWNi40MTRsLTIuMjkzIDIuMjkzYTEgMSAwIDExLTEuNDE0LTEuNDE0TDEzLjU4NiA1SDEyem0tOSA3YTEgMSAwIDExMiAwdjEuNTg2bDIuMjkzLTIuMjkzYTEgMSAwIDAxMS40MTQgMS40MTRMNi40MTQgMTVIOGExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXYtNHptMTMtMWExIDEgMCAwMTEgMXY0YTEgMSAwIDAxLTEgMWgtNGExIDEgMCAxMTAtMmgxLjU4NmwtMi4yOTMtMi4yOTNhMSAxIDAgMDExLjQxNC0xLjQxNEwxNSAxMy41ODZWMTJhMSAxIDAgMDExLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlBdFN5bWJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE0LjI0MyA1Ljc1N2E2IDYgMCAxMC0uOTg2IDkuMjg0IDEgMSAwIDExMS4wODcgMS42NzhBOCA4IDAgMTExOCAxMGEzIDMgMCAwMS00LjggMi40MDFBNCA0IDAgMTExNCAxMGExIDEgMCAxMDIgMGMwLTEuNTM3LS41ODYtMy4wNy0xLjc1Ny00LjI0M3pNMTIgMTBhMiAyIDAgMTAtNCAwIDIgMiAwIDAwNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQmFja3NwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNi43MDcgNC44NzlBMyAzIDAgMDE4LjgyOCA0SDE1YTMgMyAwIDAxMyAzdjZhMyAzIDAgMDEtMyAzSDguODI4YTMgMyAwIDAxLTIuMTItLjg3OWwtNC40MTUtNC40MTRhMSAxIDAgMDEwLTEuNDE0bDQuNDE0LTQuNDE0em00IDIuNDE0YTEgMSAwIDAwLTEuNDE0IDEuNDE0TDEwLjU4NiAxMGwtMS4yOTMgMS4yOTNhMSAxIDAgMTAxLjQxNCAxLjQxNEwxMiAxMS40MTRsMS4yOTMgMS4yOTNhMSAxIDAgMDAxLjQxNC0xLjQxNEwxMy40MTQgMTBsMS4yOTMtMS4yOTNhMSAxIDAgMDAtMS40MTQtMS40MTRMMTIgOC41ODZsLTEuMjkzLTEuMjkzelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQmFkZ2VDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYuMjY3IDMuNDU1YTMuMDY2IDMuMDY2IDAgMDAxLjc0NS0uNzIzIDMuMDY2IDMuMDY2IDAgMDEzLjk3NiAwIDMuMDY2IDMuMDY2IDAgMDAxLjc0NS43MjMgMy4wNjYgMy4wNjYgMCAwMTIuODEyIDIuODEyYy4wNTEuNjQzLjMwNCAxLjI1NC43MjMgMS43NDVhMy4wNjYgMy4wNjYgMCAwMTAgMy45NzYgMy4wNjYgMy4wNjYgMCAwMC0uNzIzIDEuNzQ1IDMuMDY2IDMuMDY2IDAgMDEtMi44MTIgMi44MTIgMy4wNjYgMy4wNjYgMCAwMC0xLjc0NS43MjMgMy4wNjYgMy4wNjYgMCAwMS0zLjk3NiAwIDMuMDY2IDMuMDY2IDAgMDAtMS43NDUtLjcyMyAzLjA2NiAzLjA2NiAwIDAxLTIuODEyLTIuODEyIDMuMDY2IDMuMDY2IDAgMDAtLjcyMy0xLjc0NSAzLjA2NiAzLjA2NiAwIDAxMC0zLjk3NiAzLjA2NiAzLjA2NiAwIDAwLjcyMy0xLjc0NSAzLjA2NiAzLjA2NiAwIDAxMi44MTItMi44MTJ6bTcuNDQgNS4yNTJhMSAxIDAgMDAtMS40MTQtMS40MTRMOSAxMC41ODYgNy43MDcgOS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMiAyYTEgMSAwIDAwMS40MTQgMGw0LTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlCYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMy40NzcgMTQuODlBNiA2IDAgMDE1LjExIDYuNTI0bDguMzY3IDguMzY4em0xLjQxNC0xLjQxNEw2LjUyNCA1LjExYTYgNiAwIDAxOC4zNjcgOC4zNjd6TTE4IDEwYTggOCAwIDExLTE2IDAgOCA4IDAgMDExNiAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQmVha2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNyAyYTEgMSAwIDAwLS43MDcgMS43MDdMNyA0LjQxNHYzLjc1OGExIDEgMCAwMS0uMjkzLjcwN2wtNCA0Qy44MTcgMTQuNzY5IDIuMTU2IDE4IDQuODI4IDE4aDEwLjM0M2MyLjY3MyAwIDQuMDEyLTMuMjMxIDIuMTIyLTUuMTIxbC00LTRBMSAxIDAgMDExMyA4LjE3MlY0LjQxNGwuNzA3LS43MDdBMSAxIDAgMDAxMyAySDd6bTIgNi4xNzJWNGgydjQuMTcyYTMgMyAwIDAwLjg3OSAyLjEybDEuMDI3IDEuMDI4YTQgNCAwIDAwLTIuMTcxLjEwMmwtLjQ3LjE1NmE0IDQgMCAwMS0yLjUzIDBsLS41NjMtLjE4N2ExLjk5MyAxLjk5MyAwIDAwLS4xMTQtLjAzNWwxLjA2My0xLjA2M0EzIDMgMCAwMDkgOC4xNzJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlCZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAyYTYgNiAwIDAwLTYgNnYzLjU4NmwtLjcwNy43MDdBMSAxIDAgMDA0IDE0aDEyYTEgMSAwIDAwLjcwNy0xLjcwN0wxNiAxMS41ODZWOGE2IDYgMCAwMC02LTZ6TTEwIDE4YTMgMyAwIDAxLTMtM2g2YTMgMyAwIDAxLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQm9va09wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNC44MDRBNy45NjggNy45NjggMCAwMDUuNSA0Yy0xLjI1NSAwLTIuNDQzLjI5LTMuNS44MDR2MTBBNy45NjkgNy45NjkgMCAwMTUuNSAxNGMxLjY2OSAwIDMuMjE4LjUxIDQuNSAxLjM4NUE3Ljk2MiA3Ljk2MiAwIDAxMTQuNSAxNGMxLjI1NSAwIDIuNDQzLjI5IDMuNS44MDR2LTEwQTcuOTY4IDcuOTY4IDAgMDAxNC41IDRjLTEuMjU1IDAtMi40NDMuMjktMy41LjgwNFYxMmExIDEgMCAxMS0yIDBWNC44MDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUJvb2ttYXJrQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyA1YTIgMiAwIDAxMi0yaDEwYTIgMiAwIDAxMiAydjEwYTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMlY1em0xMSAxSDZ2OGw0LTIgNCAyVjZ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlCb29rbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA0YTIgMiAwIDAxMi0yaDZhMiAyIDAgMDEyIDJ2MTRsLTUtMi41TDUgMThWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQnJpZWZjYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNiA2VjVhMyAzIDAgMDEzLTNoMmEzIDMgMCAwMTMgM3YxaDJhMiAyIDAgMDEyIDJ2My41N0EyMi45NTIgMjIuOTUyIDAgMDExMCAxM2EyMi45NSAyMi45NSAwIDAxLTgtMS40M1Y4YTIgMiAwIDAxMi0yaDJ6bTItMWExIDEgMCAwMTEtMWgyYTEgMSAwIDAxMSAxdjFIOFY1em0xIDVhMSAxIDAgMDExLTFoLjAxYTEgMSAwIDExMCAySDEwYTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTMuNjkyVjE2YTIgMiAwIDAwMiAyaDEyYTIgMiAwIDAwMi0ydi0yLjMwOEEyNC45NzQgMjQuOTc0IDAgMDExMCAxNWMtMi43OTYgMC01LjQ4Ny0uNDYtOC0xLjMwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2FrZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYgM2ExIDEgMCAwMTEtMWguMDFhMSAxIDAgMDEwIDJIN2ExIDEgMCAwMS0xLTF6bTIgM2ExIDEgMCAwMC0yIDB2MWEyIDIgMCAwMC0yIDJ2MWEyIDIgMCAwMC0yIDJ2LjY4M2EzLjcgMy43IDAgMDExLjA1NS40ODUgMS43MDQgMS43MDQgMCAwMDEuODkgMCAzLjcwNCAzLjcwNCAwIDAxNC4xMSAwIDEuNzA0IDEuNzA0IDAgMDAxLjg5IDAgMy43MDQgMy43MDQgMCAwMTQuMTEgMCAxLjcwNCAxLjcwNCAwIDAwMS44OSAwQTMuNyAzLjcgMCAwMTE4IDEyLjY4M1YxMmEyIDIgMCAwMC0yLTJWOWEyIDIgMCAwMC0yLTJWNmExIDEgMCAxMC0yIDB2MWgtMVY2YTEgMSAwIDEwLTIgMHYxSDhWNnptMTAgOC44NjhhMy43MDQgMy43MDQgMCAwMS00LjA1NS0uMDM2IDEuNzA0IDEuNzA0IDAgMDAtMS44OSAwIDMuNzA0IDMuNzA0IDAgMDEtNC4xMSAwIDEuNzA0IDEuNzA0IDAgMDAtMS44OSAwQTMuNzA0IDMuNzA0IDAgMDEyIDE0Ljg2OFYxN2ExIDEgMCAwMDEgMWgxNGExIDEgMCAwMDEtMXYtMi4xMzJ6TTkgM2ExIDEgMCAwMTEtMWguMDFhMSAxIDAgMTEwIDJIMTBhMSAxIDAgMDEtMS0xem0zIDBhMSAxIDAgMDExLTFoLjAxYTEgMSAwIDExMCAySDEzYTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNhbGN1bGF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk02IDJhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyaDhhMiAyIDAgMDAyLTJWNGEyIDIgMCAwMC0yLTJINnptMSAyYTEgMSAwIDAwMCAyaDZhMSAxIDAgMTAwLTJIN3ptNiA3YTEgMSAwIDAxMSAxdjNhMSAxIDAgMTEtMiAwdi0zYTEgMSAwIDAxMS0xem0tMyAzYTEgMSAwIDEwMCAyaC4wMWExIDEgMCAxMDAtMkgxMHptLTQgMWExIDEgMCAwMTEtMWguMDFhMSAxIDAgMTEwIDJIN2ExIDEgMCAwMS0xLTF6bTEtNGExIDEgMCAxMDAgMmguMDFhMSAxIDAgMTAwLTJIN3ptMiAxYTEgMSAwIDAxMS0xaC4wMWExIDEgMCAxMTAgMkgxMGExIDEgMCAwMS0xLTF6bTQtNGExIDEgMCAxMDAgMmguMDFhMSAxIDAgMTAwLTJIMTN6TTkgOWExIDEgMCAwMTEtMWguMDFhMSAxIDAgMTEwIDJIMTBhMSAxIDAgMDEtMS0xek03IDhhMSAxIDAgMDAwIDJoLjAxYTEgMSAwIDAwMC0ySDd6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDYWxlbmRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYgMmExIDEgMCAwMC0xIDF2MUg0YTIgMiAwIDAwLTIgMnYxMGEyIDIgMCAwMDIgMmgxMmEyIDIgMCAwMDItMlY2YTIgMiAwIDAwLTItMmgtMVYzYTEgMSAwIDEwLTIgMHYxSDdWM2ExIDEgMCAwMC0xLTF6bTAgNWExIDEgMCAwMDAgMmg4YTEgMSAwIDEwMC0ySDZ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDVhMiAyIDAgMDAtMiAydjhhMiAyIDAgMDAyIDJoMTJhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJoLTEuNTg2YTEgMSAwIDAxLS43MDctLjI5M2wtMS4xMjEtMS4xMjFBMiAyIDAgMDAxMS4xNzIgM0g4LjgyOGEyIDIgMCAwMC0xLjQxNC41ODZMNi4yOTMgNC43MDdBMSAxIDAgMDE1LjU4NiA1SDR6bTYgOWEzIDMgMCAxMDAtNiAzIDMgMCAwMDAgNnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDRhMiAyIDAgMDAtMiAydjRhMiAyIDAgMDAyIDJWNmgxMGEyIDIgMCAwMC0yLTJINHptMiA2YTIgMiAwIDAxMi0yaDhhMiAyIDAgMDEyIDJ2NGEyIDIgMCAwMS0yIDJIOGEyIDIgMCAwMS0yLTJ2LTR6bTYgNGEyIDIgMCAxMDAtNCAyIDIgMCAwMDAgNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNoYXJ0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDExYTEgMSAwIDAxMS0xaDJhMSAxIDAgMDExIDF2NWExIDEgMCAwMS0xIDFIM2ExIDEgMCAwMS0xLTF2LTV6TTggN2ExIDEgMCAwMTEtMWgyYTEgMSAwIDAxMSAxdjlhMSAxIDAgMDEtMSAxSDlhMSAxIDAgMDEtMS0xVjd6TTE0IDRhMSAxIDAgMDExLTFoMmExIDEgMCAwMTEgMXYxMmExIDEgMCAwMS0xIDFoLTJhMSAxIDAgMDEtMS0xVjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNoYXJ0UGllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDEwYTggOCAwIDAxOC04djhoOGE4IDggMCAxMS0xNiAwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyLjI1MkE4LjAxNCA4LjAxNCAwIDAxMTcuNzQ4IDhIMTJWMi4yNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNoYXJ0U3F1YXJlQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNSAzYTIgMiAwIDAwLTIgMnYxMGEyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMlY1YTIgMiAwIDAwLTItMkg1em05IDRhMSAxIDAgMTAtMiAwdjZhMSAxIDAgMTAyIDBWN3ptLTMgMmExIDEgMCAxMC0yIDB2NGExIDEgMCAxMDIgMFY5em0tMyAzYTEgMSAwIDEwLTIgMHYxYTEgMSAwIDEwMiAwdi0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hhdEFsdDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNWEyIDIgMCAwMTItMmg3YTIgMiAwIDAxMiAydjRhMiAyIDAgMDEtMiAySDlsLTMgM3YtM0g0YTIgMiAwIDAxLTItMlY1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA3djJhNCA0IDAgMDEtNCA0SDkuODI4bC0xLjc2NiAxLjc2N2MuMjguMTQ5LjU5OS4yMzMuOTM4LjIzM2gybDMgM3YtM2gyYTIgMiAwIDAwMi0yVjlhMiAyIDAgMDAtMi0yaC0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGF0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTggNXY4YTIgMiAwIDAxLTIgMmgtNWwtNSA0di00SDRhMiAyIDAgMDEtMi0yVjVhMiAyIDAgMDEyLTJoMTJhMiAyIDAgMDEyIDJ6TTcgOEg1djJoMlY4em0yIDBoMnYySDlWOHptNiAwaC0ydjJoMlY4elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDEwYzAgMy44NjYtMy41ODIgNy04IDdhOC44NDEgOC44NDEgMCAwMS00LjA4My0uOThMMiAxN2wxLjMzOC0zLjEyM0MyLjQ5MyAxMi43NjcgMiAxMS40MzQgMiAxMGMwLTMuODY2IDMuNTgyLTcgOC03czggMy4xMzQgOCA3ek03IDlINXYyaDJWOXptOCAwaC0ydjJoMlY5ek05IDloMnYySDlWOXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNoZWNrQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnptMy43MDctOS4yOTNhMSAxIDAgMDAtMS40MTQtMS40MTRMOSAxMC41ODYgNy43MDcgOS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMiAyYTEgMSAwIDAwMS40MTQgMGw0LTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE2LjcwNyA1LjI5M2ExIDEgMCAwMTAgMS40MTRsLTggOGExIDEgMCAwMS0xLjQxNCAwbC00LTRhMSAxIDAgMDExLjQxNC0xLjQxNEw4IDEyLjU4Nmw3LjI5My03LjI5M2ExIDEgMCAwMTEuNDE0IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGV2cm9uRG91YmxlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE1LjcwNyA0LjI5M2ExIDEgMCAwMTAgMS40MTRsLTUgNWExIDEgMCAwMS0xLjQxNCAwbC01LTVhMSAxIDAgMDExLjQxNC0xLjQxNEwxMCA4LjU4Nmw0LjI5My00LjI5M2ExIDEgMCAwMTEuNDE0IDB6bTAgNmExIDEgMCAwMTAgMS40MTRsLTUgNWExIDEgMCAwMS0xLjQxNCAwbC01LTVhMSAxIDAgMTExLjQxNC0xLjQxNEwxMCAxNC41ODZsNC4yOTMtNC4yOTNhMSAxIDAgMDExLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hldnJvbkRvdWJsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNS43MDcgMTUuNzA3YTEgMSAwIDAxLTEuNDE0IDBsLTUtNWExIDEgMCAwMTAtMS40MTRsNS01YTEgMSAwIDExMS40MTQgMS40MTRMMTEuNDE0IDEwbDQuMjkzIDQuMjkzYTEgMSAwIDAxMCAxLjQxNHptLTYgMGExIDEgMCAwMS0xLjQxNCAwbC01LTVhMSAxIDAgMDEwLTEuNDE0bDUtNWExIDEgMCAwMTEuNDE0IDEuNDE0TDUuNDE0IDEwbDQuMjkzIDQuMjkzYTEgMSAwIDAxMCAxLjQxNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNoZXZyb25Eb3VibGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwLjI5MyAxNS43MDdhMSAxIDAgMDEwLTEuNDE0TDE0LjU4NiAxMGwtNC4yOTMtNC4yOTNhMSAxIDAgMTExLjQxNC0xLjQxNGw1IDVhMSAxIDAgMDEwIDEuNDE0bC01IDVhMSAxIDAgMDEtMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00LjI5MyAxNS43MDdhMSAxIDAgMDEwLTEuNDE0TDguNTg2IDEwIDQuMjkzIDUuNzA3YTEgMSAwIDAxMS40MTQtMS40MTRsNSA1YTEgMSAwIDAxMCAxLjQxNGwtNSA1YTEgMSAwIDAxLTEuNDE0IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGV2cm9uRG91YmxlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00LjI5MyAxNS43MDdhMSAxIDAgMDEwLTEuNDE0bDUtNWExIDEgMCAwMTEuNDE0IDBsNSA1YTEgMSAwIDAxLTEuNDE0IDEuNDE0TDEwIDExLjQxNGwtNC4yOTMgNC4yOTNhMSAxIDAgMDEtMS40MTQgMHptMC02YTEgMSAwIDAxMC0xLjQxNGw1LTVhMSAxIDAgMDExLjQxNCAwbDUgNWExIDEgMCAwMS0xLjQxNCAxLjQxNEwxMCA1LjQxNCA1LjcwNyA5LjcwN2ExIDEgMCAwMS0xLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hldnJvbkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01LjI5MyA3LjI5M2ExIDEgMCAwMTEuNDE0IDBMMTAgMTAuNTg2bDMuMjkzLTMuMjkzYTEgMSAwIDExMS40MTQgMS40MTRsLTQgNGExIDEgMCAwMS0xLjQxNCAwbC00LTRhMSAxIDAgMDEwLTEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hldnJvbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMi43MDcgNS4yOTNhMSAxIDAgMDEwIDEuNDE0TDkuNDE0IDEwbDMuMjkzIDMuMjkzYTEgMSAwIDAxLTEuNDE0IDEuNDE0bC00LTRhMSAxIDAgMDEwLTEuNDE0bDQtNGExIDEgMCAwMTEuNDE0IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGV2cm9uUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03LjI5MyAxNC43MDdhMSAxIDAgMDEwLTEuNDE0TDEwLjU4NiAxMCA3LjI5MyA2LjcwN2ExIDEgMCAwMTEuNDE0LTEuNDE0bDQgNGExIDEgMCAwMTAgMS40MTRsLTQgNGExIDEgMCAwMS0xLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2hldnJvblVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTQuNzA3IDEyLjcwN2ExIDEgMCAwMS0xLjQxNCAwTDEwIDkuNDE0bC0zLjI5MyAzLjI5M2ExIDEgMCAwMS0xLjQxNC0xLjQxNGw0LTRhMSAxIDAgMDExLjQxNCAwbDQgNGExIDEgMCAwMTAgMS40MTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3SDd2Nmg2Vjd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03IDJhMSAxIDAgMDEyIDB2MWgyVjJhMSAxIDAgMTEyIDB2MWgyYTIgMiAwIDAxMiAydjJoMWExIDEgMCAxMTAgMmgtMXYyaDFhMSAxIDAgMTEwIDJoLTF2MmEyIDIgMCAwMS0yIDJoLTJ2MWExIDEgMCAxMS0yIDB2LTFIOXYxYTEgMSAwIDExLTIgMHYtMUg1YTIgMiAwIDAxLTItMnYtMkgyYTEgMSAwIDExMC0yaDFWOUgyYTEgMSAwIDAxMC0yaDFWNWEyIDIgMCAwMTItMmgyVjJ6TTUgNWgxMHYxMEg1VjV6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDbGlwYm9hcmRDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAyYTEgMSAwIDAwMCAyaDJhMSAxIDAgMTAwLTJIOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgNWEyIDIgMCAwMTItMiAzIDMgMCAwMDMgM2gyYTMgMyAwIDAwMy0zIDIgMiAwIDAxMiAydjExYTIgMiAwIDAxLTIgMkg2YTIgMiAwIDAxLTItMlY1em05LjcwNyA1LjcwN2ExIDEgMCAwMC0xLjQxNC0xLjQxNEw5IDEyLjU4NmwtMS4yOTMtMS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMiAyYTEgMSAwIDAwMS40MTQgMGw0LTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDbGlwYm9hcmRDb3B5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDJhMSAxIDAgMDAwIDJoMmExIDEgMCAxMDAtMkg4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVhMiAyIDAgMDEyLTIgMyAzIDAgMDAzIDNoMmEzIDMgMCAwMDMtMyAyIDIgMCAwMTIgMnY2aC00LjU4NmwxLjI5My0xLjI5M2ExIDEgMCAwMC0xLjQxNC0xLjQxNGwtMyAzYTEgMSAwIDAwMCAxLjQxNGwzIDNhMSAxIDAgMDAxLjQxNC0xLjQxNEwxMC40MTQgMTNIMTV2M2EyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJWNXpNMTUgMTFoMmExIDEgMCAxMTAgMmgtMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ2xpcGJvYXJkTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAyYTEgMSAwIDAwMCAyaDJhMSAxIDAgMTAwLTJIOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgNWEyIDIgMCAwMTItMiAzIDMgMCAwMDMgM2gyYTMgMyAwIDAwMy0zIDIgMiAwIDAxMiAydjExYTIgMiAwIDAxLTIgMkg2YTIgMiAwIDAxLTItMlY1em0zIDRhMSAxIDAgMDAwIDJoLjAxYTEgMSAwIDEwMC0ySDd6bTMgMGExIDEgMCAwMDAgMmgzYTEgMSAwIDEwMC0yaC0zem0tMyA0YTEgMSAwIDEwMCAyaC4wMWExIDEgMCAxMDAtMkg3em0zIDBhMSAxIDAgMTAwIDJoM2ExIDEgMCAxMDAtMmgtM3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNsaXBib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAzYTEgMSAwIDAxMS0xaDJhMSAxIDAgMTEwIDJIOWExIDEgMCAwMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgM2EyIDIgMCAwMC0yIDJ2MTFhMiAyIDAgMDAyIDJoOGEyIDIgMCAwMDItMlY1YTIgMiAwIDAwLTItMiAzIDMgMCAwMS0zIDNIOWEzIDMgMCAwMS0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnptMS0xMmExIDEgMCAxMC0yIDB2NGExIDEgMCAwMC4yOTMuNzA3bDIuODI4IDIuODI5YTEgMSAwIDEwMS40MTUtMS40MTVMMTEgOS41ODZWNnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNsb3VkRG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDkuNUEzLjUgMy41IDAgMDA1LjUgMTNIOXYyLjU4NmwtMS4yOTMtMS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMyAzYTEgMSAwIDAwMS40MTQgMGwzLTNhMSAxIDAgMDAtMS40MTQtMS40MTRMMTEgMTUuNTg2VjEzaDIuNWE0LjUgNC41IDAgMTAtLjYxNi04Ljk1OCA0LjAwMiA0LjAwMiAwIDEwLTcuNzUzIDEuOTc3QTMuNSAzLjUgMCAwMDIgOS41em05IDMuNUg5VjhhMSAxIDAgMDEyIDB2NXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNsb3VkVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgMTNhMy41IDMuNSAwIDAxLS4zNjktNi45OCA0IDQgMCAxMTcuNzUzLTEuOTc3QTQuNSA0LjUgMCAxMTEzLjUgMTNIMTFWOS40MTNsMS4yOTMgMS4yOTNhMSAxIDAgMDAxLjQxNC0xLjQxNGwtMy0zYTEgMSAwIDAwLTEuNDE0IDBsLTMgM2ExIDEgMCAwMDEuNDE0IDEuNDE0TDkgOS40MTRWMTNINS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDEzaDJ2NWExIDEgMCAxMS0yIDB2LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgMTZhMy41IDMuNSAwIDAxLS4zNjktNi45OCA0IDQgMCAxMTcuNzUzLTEuOTc3QTQuNSA0LjUgMCAxMTEzLjUgMTZoLTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMi4zMTYgMy4wNTFhMSAxIDAgMDEuNjMzIDEuMjY1bC00IDEyYTEgMSAwIDExLTEuODk4LS42MzJsNC0xMmExIDEgMCAwMTEuMjY1LS42MzN6TTUuNzA3IDYuMjkzYTEgMSAwIDAxMCAxLjQxNEwzLjQxNCAxMGwyLjI5MyAyLjI5M2ExIDEgMCAxMS0xLjQxNCAxLjQxNGwtMy0zYTEgMSAwIDAxMC0xLjQxNGwzLTNhMSAxIDAgMDExLjQxNCAwem04LjU4NiAwYTEgMSAwIDAxMS40MTQgMGwzIDNhMSAxIDAgMDEwIDEuNDE0bC0zIDNhMSAxIDAgMTEtMS40MTQtMS40MTRMMTYuNTg2IDEwbC0yLjI5My0yLjI5M2ExIDEgMCAwMTAtMS40MTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMS40OSAzLjE3Yy0uMzgtMS41Ni0yLjYtMS41Ni0yLjk4IDBhMS41MzIgMS41MzIgMCAwMS0yLjI4Ni45NDhjLTEuMzcyLS44MzYtMi45NDIuNzM0LTIuMTA2IDIuMTA2LjU0Ljg4Ni4wNjEgMi4wNDItLjk0NyAyLjI4Ny0xLjU2MS4zNzktMS41NjEgMi42IDAgMi45NzhhMS41MzIgMS41MzIgMCAwMS45NDcgMi4yODdjLS44MzYgMS4zNzIuNzM0IDIuOTQyIDIuMTA2IDIuMTA2YTEuNTMyIDEuNTMyIDAgMDEyLjI4Ny45NDdjLjM3OSAxLjU2MSAyLjYgMS41NjEgMi45NzggMGExLjUzMyAxLjUzMyAwIDAxMi4yODctLjk0N2MxLjM3Mi44MzYgMi45NDItLjczNCAyLjEwNi0yLjEwNmExLjUzMyAxLjUzMyAwIDAxLjk0Ny0yLjI4N2MxLjU2MS0uMzc5IDEuNTYxLTIuNiAwLTIuOTc4YTEuNTMyIDEuNTMyIDAgMDEtLjk0Ny0yLjI4N2MuODM2LTEuMzcyLS43MzQtMi45NDItMi4xMDYtMi4xMDZhMS41MzIgMS41MzIgMCAwMS0yLjI4Ny0uOTQ3ek0xMCAxM2EzIDMgMCAxMDAtNiAzIDMgMCAwMDAgNnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUNvbGxlY3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgM2ExIDEgMCAwMDAgMmg2YTEgMSAwIDEwMC0ySDd6TTQgN2ExIDEgMCAwMTEtMWgxMGExIDEgMCAxMTAgMkg1YTEgMSAwIDAxLTEtMXpNMiAxMWEyIDIgMCAwMTItMmgxMmEyIDIgMCAwMTIgMnY0YTIgMiAwIDAxLTIgMkg0YTIgMiAwIDAxLTItMnYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ29sb3JTd2F0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDJhMiAyIDAgMDAtMiAydjExYTMgMyAwIDEwNiAwVjRhMiAyIDAgMDAtMi0ySDR6bTEgMTRhMSAxIDAgMTAwLTIgMSAxIDAgMDAwIDJ6bTUtMS43NTdsNC45LTQuOWEyIDIgMCAwMDAtMi44MjhMMTMuNDg1IDUuMWEyIDIgMCAwMC0yLjgyOCAwTDEwIDUuNzU3djguNDg2ek0xNiAxOEg5LjA3MWw2LTZIMTZhMiAyIDAgMDEyIDJ2MmEyIDIgMCAwMS0yIDJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDcmVkaXRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRhMiAyIDAgMDAtMiAydjFoMTZWNmEyIDIgMCAwMC0yLTJINHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDlIMnY1YTIgMiAwIDAwMiAyaDEyYTIgMiAwIDAwMi0yVjl6TTQgMTNhMSAxIDAgMDExLTFoMWExIDEgMCAxMTAgMkg1YTEgMSAwIDAxLTEtMXptNS0xYTEgMSAwIDEwMCAyaDFhMSAxIDAgMTAwLTJIOXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUN1YmVUcmFuc3BhcmVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTkuNTA0IDEuMTMyYTEgMSAwIDAxLjk5MiAwbDEuNzUgMWExIDEgMCAxMS0uOTkyIDEuNzM2TDEwIDMuMTUybC0xLjI1NC43MTZhMSAxIDAgMTEtLjk5Mi0xLjczNmwxLjc1LTF6TTUuNjE4IDQuNTA0YTEgMSAwIDAxLS4zNzIgMS4zNjRMNS4wMTYgNmwuMjMuMTMyYTEgMSAwIDExLS45OTIgMS43MzZMNCA3LjcyM1Y4YTEgMSAwIDAxLTIgMFY2YS45OTYuOTk2IDAgMDEuNTItLjg3OGwxLjczNC0uOTlhMSAxIDAgMDExLjM2NC4zNzJ6bTguNzY0IDBhMSAxIDAgMDExLjM2NC0uMzcybDEuNzMzLjk5QTEuMDAyIDEuMDAyIDAgMDExOCA2djJhMSAxIDAgMTEtMiAwdi0uMjc3bC0uMjU0LjE0NWExIDEgMCAxMS0uOTkyLTEuNzM2bC4yMy0uMTMyLS4yMy0uMTMyYTEgMSAwIDAxLS4zNzItMS4zNjR6bS03IDRhMSAxIDAgMDExLjM2NC0uMzcyTDEwIDguODQ4bDEuMjU0LS43MTZhMSAxIDAgMTEuOTkyIDEuNzM2TDExIDEwLjU4VjEyYTEgMSAwIDExLTIgMHYtMS40MmwtMS4yNDYtLjcxMmExIDEgMCAwMS0uMzcyLTEuMzY0ek0zIDExYTEgMSAwIDAxMSAxdjEuNDJsMS4yNDYuNzEyYTEgMSAwIDExLS45OTIgMS43MzZsLTEuNzUtMUExIDEgMCAwMTIgMTR2LTJhMSAxIDAgMDExLTF6bTE0IDBhMSAxIDAgMDExIDF2MmExIDEgMCAwMS0uNTA0Ljg2OGwtMS43NSAxYTEgMSAwIDExLS45OTItMS43MzZMMTYgMTMuNDJWMTJhMSAxIDAgMDExLTF6bS05LjYxOCA1LjUwNGExIDEgMCAwMTEuMzY0LS4zNzJsLjI1NC4xNDVWMTZhMSAxIDAgMTEyIDB2LjI3N2wuMjU0LS4xNDVhMSAxIDAgMTEuOTkyIDEuNzM2bC0xLjczNS45OTJhLjk5NS45OTUgMCAwMS0xLjAyMiAwbC0xLjczNS0uOTkyYTEgMSAwIDAxLS4zNzItMS4zNjR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDdWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxN2ExIDEgMCAwMDEuNDQ3Ljg5NGw0LTJBMSAxIDAgMDAxNyAxNVY5LjIzNmExIDEgMCAwMC0xLjQ0Ny0uODk0bC00IDJhMSAxIDAgMDAtLjU1My44OTRWMTd6TTE1LjIxMSA2LjI3NmExIDEgMCAwMDAtMS43ODhsLTQuNzY0LTIuMzgyYTEgMSAwIDAwLS44OTQgMEw0Ljc4OSA0LjQ4OGExIDEgMCAwMDAgMS43ODhsNC43NjQgMi4zODJhMSAxIDAgMDAuODk0IDBsNC43NjQtMi4zODJ6TTQuNDQ3IDguMzQyQTEgMSAwIDAwMyA5LjIzNlYxNWExIDEgMCAwMC41NTMuODk0bDQgMkExIDEgMCAwMDkgMTd2LTUuNzY0YTEgMSAwIDAwLS41NTMtLjg5NGwtNC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDdXJyZW5jeUJhbmdsYWRlc2hpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnpNNyA0YTEgMSAwIDAwMCAyIDEgMSAwIDAxMSAxdjFIN2ExIDEgMCAwMDAgMmgxdjNhMyAzIDAgMTA2IDB2LTFhMSAxIDAgMTAtMiAwdjFhMSAxIDAgMTEtMiAwdi0zaDNhMSAxIDAgMTAwLTJoLTNWN2EzIDMgMCAwMC0zLTN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDdXJyZW5jeURvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC40MzMgNy40MThjLjE1NS0uMTAzLjM0Ni0uMTk2LjU2Ny0uMjY3djEuNjk4YTIuMzA1IDIuMzA1IDAgMDEtLjU2Ny0uMjY3QzguMDcgOC4zNCA4IDguMTE0IDggOGMwLS4xMTQuMDctLjM0LjQzMy0uNTgyek0xMSAxMi44NDl2LTEuNjk4Yy4yMi4wNzEuNDEyLjE2NC41NjcuMjY3LjM2NC4yNDMuNDMzLjQ2OC40MzMuNTgyIDAgLjExNC0uMDcuMzQtLjQzMy41ODJhMi4zMDUgMi4zMDUgMCAwMS0uNTY3LjI2N3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6bTEtMTNhMSAxIDAgMTAtMiAwdi4wOTJhNC41MzUgNC41MzUgMCAwMC0xLjY3Ni42NjJDNi42MDIgNi4yMzQgNiA3LjAwOSA2IDhjMCAuOTkuNjAyIDEuNzY1IDEuMzI0IDIuMjQ2LjQ4LjMyIDEuMDU0LjU0NSAxLjY3Ni42NjJ2MS45NDFjLS4zOTEtLjEyNy0uNjgtLjMxNy0uODQzLS41MDRhMSAxIDAgMTAtMS41MSAxLjMxYy41NjIuNjQ5IDEuNDEzIDEuMDc2IDIuMzUzIDEuMjUzVjE1YTEgMSAwIDEwMiAwdi0uMDkyYTQuNTM1IDQuNTM1IDAgMDAxLjY3Ni0uNjYyQzEzLjM5OCAxMy43NjYgMTQgMTIuOTkxIDE0IDEyYzAtLjk5LS42MDItMS43NjUtMS4zMjQtMi4yNDZBNC41MzUgNC41MzUgMCAwMDExIDkuMDkyVjcuMTUxYy4zOTEuMTI3LjY4LjMxNy44NDMuNTA0YTEgMSAwIDEwMS41MTEtMS4zMWMtLjU2My0uNjQ5LTEuNDEzLTEuMDc2LTIuMzU0LTEuMjUzVjV6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDdXJyZW5jeUV1cm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2ek04LjczNiA2Ljk3OUM5LjIwOCA2LjE5MyA5LjY5NiA2IDEwIDZjLjMwNCAwIC43OTIuMTkzIDEuMjY0Ljk3OWExIDEgMCAwMDEuNzE1LTEuMDI5QzEyLjI3OSA0Ljc4NCAxMS4yMzIgNCAxMCA0cy0yLjI3OS43ODQtMi45NzkgMS45NWMtLjI4NS40NzUtLjUwNyAxLS42NyAxLjU1SDZhMSAxIDAgMDAwIDJoLjAxM2E5LjM1OCA5LjM1OCAwIDAwMCAxSDZhMSAxIDAgMTAwIDJoLjM1MWMuMTYzLjU1LjM4NSAxLjA3NS42NyAxLjU1QzcuNzIxIDE1LjIxNiA4Ljc2OCAxNiAxMCAxNnMyLjI3OS0uNzg0IDIuOTc5LTEuOTVhMSAxIDAgMTAtMS43MTUtMS4wMjljLS40NzIuNzg2LS45Ni45NzktMS4yNjQuOTc5LS4zMDQgMC0uNzkyLS4xOTMtMS4yNjQtLjk3OWE0LjI2NSA0LjI2NSAwIDAxLS4yNjQtLjUyMUgxMGExIDEgMCAxMDAtMkg4LjAxN2E3LjM2IDcuMzYgMCAwMTAtMUgxMGExIDEgMCAxMDAtMkg4LjQ3MmMuMDgtLjE4NS4xNjctLjM2LjI2NC0uNTIxelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ3VycmVuY3lQb3VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6bTEtMTRhMyAzIDAgMDAtMyAzdjJIN2ExIDEgMCAwMDAgMmgxdjFhMSAxIDAgMDEtMSAxIDEgMSAwIDEwMCAyaDZhMSAxIDAgMTAwLTJIOS44M2MuMTEtLjMxMy4xNy0uNjUuMTctMXYtMWgxYTEgMSAwIDEwMC0yaC0xVjdhMSAxIDAgMTEyIDAgMSAxIDAgMTAyIDAgMyAzIDAgMDAtMy0zelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpQ3VycmVuY3lSdXBlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6TTcgNWExIDEgMCAxMDAgMmgxYTIgMiAwIDAxMS43MzIgMUg3YTEgMSAwIDEwMCAyaDIuNzMyQTIgMiAwIDAxOCAxMUg3YTEgMSAwIDAwLS43MDcgMS43MDdsMyAzYTEgMSAwIDAwMS40MTQtMS40MTRsLTEuNDgzLTEuNDg0QTQuMDA4IDQuMDA4IDAgMDAxMS44NzQgMTBIMTNhMSAxIDAgMTAwLTJoLTEuMTI2YTMuOTc2IDMuOTc2IDAgMDAtLjQxLTFIMTNhMSAxIDAgMTAwLTJIN3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUN1cnJlbmN5WWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnpNNy44NTggNS40ODVhMSAxIDAgMDAtMS43MTUgMS4wM0w3LjYzMyA5SDdhMSAxIDAgMTAwIDJoMS44MzRsLjE2Ni4yNzdWMTJIN2ExIDEgMCAxMDAgMmgydjFhMSAxIDAgMTAyIDB2LTFoMmExIDEgMCAxMDAtMmgtMnYtLjcyM2wuMTY2LS4yNzdIMTNhMSAxIDAgMTAwLTJoLS42MzRsMS40OTItMi40ODZhMSAxIDAgMTAtMS43MTYtMS4wMjlMMTAuMDM0IDloLS4wNjhMNy44NTggNS40ODV6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlDdXJzb3JDbGljayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYuNjcyIDEuOTExYTEgMSAwIDEwLTEuOTMyLjUxOGwuMjU5Ljk2NmExIDEgMCAwMDEuOTMyLS41MThsLS4yNi0uOTY2ek0yLjQyOSA0Ljc0YTEgMSAwIDEwLS41MTcgMS45MzJsLjk2Ni4yNTlhMSAxIDAgMDAuNTE3LTEuOTMybC0uOTY2LS4yNnptOC44MTQtLjU2OWExIDEgMCAwMC0xLjQxNS0xLjQxNGwtLjcwNy43MDdhMSAxIDAgMTAxLjQxNSAxLjQxNWwuNzA3LS43MDh6bS03LjA3MSA3LjA3MmwuNzA3LS43MDdBMSAxIDAgMDAzLjQ2NSA5LjEybC0uNzA4LjcwN2ExIDEgMCAwMDEuNDE1IDEuNDE1em0zLjItNS4xNzFhMSAxIDAgMDAtMS4zIDEuM2w0IDEwYTEgMSAwIDAwMS44MjMuMDc1bDEuMzgtMi43NTkgMy4wMTggMy4wMmExIDEgMCAwMDEuNDE0LTEuNDE1bC0zLjAxOS0zLjAyIDIuNzYtMS4zNzlhMSAxIDAgMDAtLjA3Ni0xLjgyMmwtMTAtNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURhdGFiYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEydjNjMCAxLjY1NyAzLjEzNCAzIDcgM3M3LTEuMzQzIDctM3YtM2MwIDEuNjU3LTMuMTM0IDMtNyAzcy03LTEuMzQzLTctM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA3djNjMCAxLjY1NyAzLjEzNCAzIDcgM3M3LTEuMzQzIDctM1Y3YzAgMS42NTctMy4xMzQgMy03IDNTMyA4LjY1NyAzIDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDVjMCAxLjY1Ny0zLjEzNCAzLTcgM1MzIDYuNjU3IDMgNXMzLjEzNC0zIDctMyA3IDEuMzQzIDcgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRGVza3RvcENvbXB1dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyA1YTIgMiAwIDAxMi0yaDEwYTIgMiAwIDAxMiAydjhhMiAyIDAgMDEtMiAyaC0yLjIybC4xMjMuNDg5LjgwNC44MDRBMSAxIDAgMDExMyAxOEg3YTEgMSAwIDAxLS43MDctMS43MDdsLjgwNC0uODA0TDcuMjIgMTVINWEyIDIgMCAwMS0yLTJWNXptNS43NzEgN0g1VjVoMTB2N0g4Ljc3MXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURldmljZU1vYmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTcgMmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoNmEyIDIgMCAwMDItMlY0YTIgMiAwIDAwLTItMkg3em0zIDE0YTEgMSAwIDEwMC0yIDEgMSAwIDAwMCAyelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRGV2aWNlVGFibGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNiAyYTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMmg4YTIgMiAwIDAwMi0yVjRhMiAyIDAgMDAtMi0ySDZ6bTQgMTRhMSAxIDAgMTAwLTIgMSAxIDAgMDAwIDJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlEb2N1bWVudEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYgMmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoOGEyIDIgMCAwMDItMlY3LjQxNEEyIDIgMCAwMDE1LjQxNCA2TDEyIDIuNTg2QTIgMiAwIDAwMTAuNTg2IDJINnptNSA2YTEgMSAwIDEwLTIgMHYySDdhMSAxIDAgMTAwIDJoMnYyYTEgMSAwIDEwMiAwdi0yaDJhMSAxIDAgMTAwLTJoLTJWOHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURvY3VtZW50RG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk02IDJhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyaDhhMiAyIDAgMDAyLTJWNy40MTRBMiAyIDAgMDAxNS40MTQgNkwxMiAyLjU4NkEyIDIgMCAwMDEwLjU4NiAySDZ6bTUgNmExIDEgMCAxMC0yIDB2My41ODZsLTEuMjkzLTEuMjkzYTEgMSAwIDEwLTEuNDE0IDEuNDE0bDMgM2ExIDEgMCAwMDEuNDE0IDBsMy0zYTEgMSAwIDAwLTEuNDE0LTEuNDE0TDExIDExLjU4NlY4elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRG9jdW1lbnREdXBsaWNhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMmEyIDIgMCAwMC0yIDJ2OGEyIDIgMCAwMDIgMmg2YTIgMiAwIDAwMi0yVjYuNDE0QTIgMiAwIDAwMTYuNDE0IDVMMTQgMi41ODZBMiAyIDAgMDAxMi41ODYgMkg5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDhhMiAyIDAgMDEyLTJ2MTBoOGEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRG9jdW1lbnRSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk02IDJhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyaDhhMiAyIDAgMDAyLTJWNy40MTRBMiAyIDAgMDAxNS40MTQgNkwxMiAyLjU4NkEyIDIgMCAwMDEwLjU4NiAySDZ6bTEgOGExIDEgMCAxMDAgMmg2YTEgMSAwIDEwMC0ySDd6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlEb2N1bWVudFJlcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYgMmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoOGEyIDIgMCAwMDItMlY3LjQxNEEyIDIgMCAwMDE1LjQxNCA2TDEyIDIuNTg2QTIgMiAwIDAwMTAuNTg2IDJINnptMiAxMGExIDEgMCAxMC0yIDB2M2ExIDEgMCAxMDIgMHYtM3ptMi0zYTEgMSAwIDAxMSAxdjVhMSAxIDAgMTEtMiAwdi01YTEgMSAwIDAxMS0xem00LTFhMSAxIDAgMTAtMiAwdjdhMSAxIDAgMTAyIDBWOHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURvY3VtZW50U2VhcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRhMiAyIDAgMDEyLTJoNC41ODZBMiAyIDAgMDExMiAyLjU4NkwxNS40MTQgNkEyIDIgMCAwMTE2IDcuNDE0VjE2YTIgMiAwIDAxLTIgMmgtMS41MjhBNiA2IDAgMDA0IDkuNTI4VjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04IDEwYTQgNCAwIDAwLTMuNDQ2IDYuMDMybC0xLjI2MSAxLjI2YTEgMSAwIDEwMS40MTQgMS40MTVsMS4yNjEtMS4yNjFBNCA0IDAgMTA4IDEwem0tMiA0YTIgMiAwIDExNCAwIDIgMiAwIDAxLTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURvY3VtZW50VGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgNGEyIDIgMCAwMTItMmg0LjU4NkEyIDIgMCAwMTEyIDIuNTg2TDE1LjQxNCA2QTIgMiAwIDAxMTYgNy40MTRWMTZhMiAyIDAgMDEtMiAySDZhMiAyIDAgMDEtMi0yVjR6bTIgNmExIDEgMCAwMTEtMWg2YTEgMSAwIDExMCAySDdhMSAxIDAgMDEtMS0xem0xIDNhMSAxIDAgMTAwIDJoNmExIDEgMCAxMDAtMkg3elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRG9jdW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDRhMiAyIDAgMDEyLTJoNC41ODZBMiAyIDAgMDExMiAyLjU4NkwxNS40MTQgNkEyIDIgMCAwMTE2IDcuNDE0VjE2YTIgMiAwIDAxLTIgMkg2YTIgMiAwIDAxLTItMlY0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRG90c0NpcmNsZUhvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2ek03IDlINXYyaDJWOXptOCAwaC0ydjJoMlY5ek05IDloMnYySDlWOXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURvdHNIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEwYTIgMiAwIDExLTQgMCAyIDIgMCAwMTQgMHpNMTIgMTBhMiAyIDAgMTEtNCAwIDIgMiAwIDAxNCAwek0xNiAxMmEyIDIgMCAxMDAtNCAyIDIgMCAwMDAgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRG90c1ZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA2YTIgMiAwIDExMC00IDIgMiAwIDAxMCA0ek0xMCAxMmEyIDIgMCAxMTAtNCAyIDIgMCAwMTAgNHpNMTAgMThhMiAyIDAgMTEwLTQgMiAyIDAgMDEwIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaURvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyAxN2ExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXptMy4yOTMtNy43MDdhMSAxIDAgMDExLjQxNCAwTDkgMTAuNTg2VjNhMSAxIDAgMTEyIDB2Ny41ODZsMS4yOTMtMS4yOTNhMSAxIDAgMTExLjQxNCAxLjQxNGwtMyAzYTEgMSAwIDAxLTEuNDE0IDBsLTMtM2ExIDEgMCAwMTAtMS40MTR6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlEdXBsaWNhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOWEyIDIgMCAwMTItMmg2YTIgMiAwIDAxMiAydjZhMiAyIDAgMDEtMiAySDlhMiAyIDAgMDEtMi0yVjl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgM2EyIDIgMCAwMC0yIDJ2NmEyIDIgMCAwMDIgMlY1aDhhMiAyIDAgMDAtMi0ySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUVtb2ppSGFwcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2ek03IDlhMSAxIDAgMTAwLTIgMSAxIDAgMDAwIDJ6bTctMWExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6bS0uNDY0IDUuNTM1YTEgMSAwIDEwLTEuNDE1LTEuNDE0IDMgMyAwIDAxLTQuMjQyIDAgMSAxIDAgMDAtMS40MTUgMS40MTQgNSA1IDAgMDA3LjA3MiAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRW1vamlTYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2ek03IDlhMSAxIDAgMTAwLTIgMSAxIDAgMDAwIDJ6bTctMWExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6bS03LjUzNiA1Ljg3OWExIDEgMCAwMDEuNDE1IDAgMyAzIDAgMDE0LjI0MiAwIDEgMSAwIDAwMS40MTUtMS40MTUgNSA1IDAgMDAtNy4wNzIgMCAxIDEgMCAwMDAgMS40MTV6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlFeGNsYW1hdGlvbkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDEwYTggOCAwIDExLTE2IDAgOCA4IDAgMDExNiAwem0tNyA0YTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHptLTEtOWExIDEgMCAwMC0xIDF2NGExIDEgMCAxMDIgMFY2YTEgMSAwIDAwLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOC4yNTcgMy4wOTljLjc2NS0xLjM2IDIuNzIyLTEuMzYgMy40ODYgMGw1LjU4IDkuOTJjLjc1IDEuMzM0LS4yMTMgMi45OC0xLjc0MiAyLjk4SDQuNDJjLTEuNTMgMC0yLjQ5My0xLjY0Ni0xLjc0My0yLjk4bDUuNTgtOS45MnpNMTEgMTNhMSAxIDAgMTEtMiAwIDEgMSAwIDAxMiAwem0tMS04YTEgMSAwIDAwLTEgMXYzYTEgMSAwIDAwMiAwVjZhMSAxIDAgMDAtMS0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRXh0ZXJuYWxMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAzYTEgMSAwIDEwMCAyaDIuNTg2bC02LjI5MyA2LjI5M2ExIDEgMCAxMDEuNDE0IDEuNDE0TDE1IDYuNDE0VjlhMSAxIDAgMTAyIDBWNGExIDEgMCAwMC0xLTFoLTV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNWEyIDIgMCAwMC0yIDJ2OGEyIDIgMCAwMDIgMmg4YTIgMiAwIDAwMi0ydi0zYTEgMSAwIDEwLTIgMHYzSDVWN2gzYTEgMSAwIDAwMC0ySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUV5ZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMuNzA3IDIuMjkzYTEgMSAwIDAwLTEuNDE0IDEuNDE0bDE0IDE0YTEgMSAwIDAwMS40MTQtMS40MTRsLTEuNDczLTEuNDczQTEwLjAxNCAxMC4wMTQgMCAwMDE5LjU0MiAxMEMxOC4yNjggNS45NDMgMTQuNDc4IDMgMTAgM2E5Ljk1OCA5Ljk1OCAwIDAwLTQuNTEyIDEuMDc0bC0xLjc4LTEuNzgxem00LjI2MSA0LjI2bDEuNTE0IDEuNTE1YTIuMDAzIDIuMDAzIDAgMDEyLjQ1IDIuNDVsMS41MTQgMS41MTRhNCA0IDAgMDAtNS40NzgtNS40Nzh6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi40NTQgMTYuNjk3TDkuNzUgMTMuOTkyYTQgNCAwIDAxLTMuNzQyLTMuNzQxTDIuMzM1IDYuNTc4QTkuOTggOS45OCAwIDAwLjQ1OCAxMGMxLjI3NCA0LjA1NyA1LjA2NSA3IDkuNTQyIDcgLjg0NyAwIDEuNjY5LS4xMDUgMi40NTQtLjMwM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRXllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxMmEyIDIgMCAxMDAtNCAyIDIgMCAwMDAgNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTS40NTggMTBDMS43MzIgNS45NDMgNS41MjIgMyAxMCAzczguMjY4IDIuOTQzIDkuNTQyIDdjLTEuMjc0IDQuMDU3LTUuMDY0IDctOS41NDIgN1MxLjczMiAxNC4wNTcuNDU4IDEwek0xNCAxMGE0IDQgMCAxMS04IDAgNCA0IDAgMDE4IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlGYXN0Rm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41NTUgNS4xNjhBMSAxIDAgMDAzIDZ2OGExIDEgMCAwMDEuNTU1LjgzMkwxMCAxMS4yMDJWMTRhMSAxIDAgMDAxLjU1NS44MzJsNi00YTEgMSAwIDAwMC0xLjY2NGwtNi00QTEgMSAwIDAwMTAgNnYyLjc5OGwtNS40NDUtMy42M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRmlsbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgM2EyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJoMTJhMiAyIDAgMDAyLTJWNWEyIDIgMCAwMC0yLTJINHptMyAyaDZ2NEg3VjV6bTggOHYyaDF2LTJoLTF6bS0yLTJIN3Y0aDZ2LTR6bTIgMGgxVjloLTF2MnptMS00VjVoLTF2Mmgxek01IDV2Mkg0VjVoMXptMCA0SDR2MmgxVjl6bS0xIDRoMXYySDR2LTJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlGaWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zIDNhMSAxIDAgMDExLTFoMTJhMSAxIDAgMDExIDF2M2ExIDEgMCAwMS0uMjkzLjcwN0wxMiAxMS40MTRWMTVhMSAxIDAgMDEtLjI5My43MDdsLTIgMkExIDEgMCAwMTggMTd2LTUuNTg2TDMuMjkzIDYuNzA3QTEgMSAwIDAxMyA2VjN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlGaW5nZXJQcmludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYuNjI1IDIuNjU1QTkgOSAwIDAxMTkgMTFhMSAxIDAgMTEtMiAwIDcgNyAwIDAwLTkuNjI1LTYuNDkyIDEgMSAwIDExLS43NS0xLjg1M3pNNC42NjIgNC45NTlBMSAxIDAgMDE0Ljc1IDYuMzcgNi45NyA2Ljk3IDAgMDAzIDExYTEgMSAwIDExLTIgMCA4Ljk3IDguOTcgMCAwMTIuMjUtNS45NTMgMSAxIDAgMDExLjQxMi0uMDg4elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUgMTFhNSA1IDAgMTExMCAwIDEgMSAwIDExLTIgMCAzIDMgMCAxMC02IDBjMCAxLjY3Ny0uMzQ1IDMuMjc2LS45NjggNC43MjlhMSAxIDAgMTEtMS44MzgtLjc4OUE5Ljk2NCA5Ljk2NCAwIDAwNSAxMXptOC45MjEgMi4wMTJhMSAxIDAgMDEuODMxIDEuMTQ1IDE5Ljg2IDE5Ljg2IDAgMDEtLjU0NSAyLjQzNiAxIDEgMCAxMS0xLjkyLS41NThjLjIwNy0uNzEzLjM3MS0xLjQ0NS40OS0yLjE5MmExIDEgMCAwMTEuMTQ0LS44M3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxMGExIDEgMCAwMTEgMWMwIDIuMjM2LS40NiA0LjM2OC0xLjI5IDYuMzA0YTEgMSAwIDAxLTEuODM4LS43ODlBMTMuOTUyIDEzLjk1MiAwIDAwOSAxMWExIDEgMCAwMTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMi4zOTUgMi41NTNhMSAxIDAgMDAtMS40NS0uMzg1Yy0uMzQ1LjIzLS42MTQuNTU4LS44MjIuODgtLjIxNC4zMy0uNDAzLjcxMy0uNTcgMS4xMTYtLjMzNC44MDQtLjYxNCAxLjc2OC0uODQgMi43MzRhMzEuMzY1IDMxLjM2NSAwIDAwLS42MTMgMy41OCAyLjY0IDIuNjQgMCAwMS0uOTQ1LTEuMDY3Yy0uMzI4LS42OC0uMzk4LTEuNTM0LS4zOTgtMi42NTRBMSAxIDAgMDA1LjA1IDYuMDUgNi45ODEgNi45ODEgMCAwMDMgMTFhNyA3IDAgMTAxMS45NS00Ljk1Yy0uNTkyLS41OTEtLjk4LS45ODUtMS4zNDgtMS40NjctLjM2My0uNDc2LS43MjQtMS4wNjMtMS4yMDctMi4wM3pNMTIuMTIgMTUuMTJBMyAzIDAgMDE3IDEzcy44NzkuNSAyLjUuNWMwLTEgLjUtNCAxLjI1LTQuNS41IDEgLjc4NiAxLjI5MyAxLjM3MSAxLjg3OUEyLjk5IDIuOTkgMCAwMTEzIDEzYTIuOTkgMi45OSAwIDAxLS44NzkgMi4xMjF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyA2YTMgMyAwIDAxMy0zaDEwYTEgMSAwIDAxLjggMS42TDE0LjI1IDhsMi41NSAzLjRBMSAxIDAgMDExNiAxM0g2YTEgMSAwIDAwLTEgMXYzYTEgMSAwIDExLTIgMFY2elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpRm9sZGVyQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNCA0YTIgMiAwIDAwLTIgMnY4YTIgMiAwIDAwMiAyaDEyYTIgMiAwIDAwMi0yVjhhMiAyIDAgMDAtMi0yaC01TDkgNEg0em03IDVhMSAxIDAgMTAtMiAwdjFIOGExIDEgMCAxMDAgMmgxdjFhMSAxIDAgMTAyIDB2LTFoMWExIDEgMCAxMDAtMmgtMVY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlGb2xkZXJEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgNGEyIDIgMCAwMC0yIDJ2OGEyIDIgMCAwMDIgMmgxMmEyIDIgMCAwMDItMlY4YTIgMiAwIDAwLTItMmgtNUw5IDRINHptNyA1YTEgMSAwIDEwLTIgMHYxLjU4NmwtLjI5My0uMjkzYTEgMSAwIDEwLTEuNDE0IDEuNDE0bDIgMiAuMDAyLjAwMmEuOTk3Ljk5NyAwIDAwMS40MSAwbC4wMDItLjAwMiAyLTJhMSAxIDAgMDAtMS40MTQtMS40MTRsLS4yOTMuMjkzVjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUZvbGRlck9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDZhMiAyIDAgMDEyLTJoNGwyIDJoNGEyIDIgMCAwMTIgMnYxSDhhMyAzIDAgMDAtMyAzdjEuNWExLjUgMS41IDAgMDEtMyAwVjZ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEyYTIgMiAwIDAxMi0yaDhhMiAyIDAgMDEyIDJ2MmEyIDIgMCAwMS0yIDJIMmgyYTIgMiAwIDAwMi0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlGb2xkZXJSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDRhMiAyIDAgMDAtMiAydjhhMiAyIDAgMDAyIDJoMTJhMiAyIDAgMDAyLTJWOGEyIDIgMCAwMC0yLTJoLTVMOSA0SDR6bTQgNmExIDEgMCAxMDAgMmg0YTEgMSAwIDEwMC0ySDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA2YTIgMiAwIDAxMi0yaDVsMiAyaDVhMiAyIDAgMDEyIDJ2NmEyIDIgMCAwMS0yIDJINGEyIDIgMCAwMS0yLTJWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpR2lmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUgNWEzIDMgMCAwMTUtMi4yMzZBMyAzIDAgMDExNC44MyA2SDE2YTIgMiAwIDExMCA0aC01VjlhMSAxIDAgMTAtMiAwdjFINGEyIDIgMCAxMTAtNGgxLjE3QzUuMDYgNS42ODcgNSA1LjM1IDUgNXptNCAxVjVhMSAxIDAgMTAtMSAxaDF6bTMgMGExIDEgMCAxMC0xLTF2MWgxelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMUgzdjVhMiAyIDAgMDAyIDJoNHYtN3pNMTEgMThoNGEyIDIgMCAwMDItMnYtNWgtNnY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlHbG9iZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQuMDgzIDloMS45NDZjLjA4OS0xLjU0Ni4zODMtMi45Ny44MzctNC4xMThBNi4wMDQgNi4wMDQgMCAwMDQuMDgzIDl6TTEwIDJhOCA4IDAgMTAwIDE2IDggOCAwIDAwMC0xNnptMCAyYy0uMDc2IDAtLjIzMi4wMzItLjQ2NS4yNjItLjIzOC4yMzQtLjQ5Ny42MjMtLjczNyAxLjE4Mi0uMzg5LjkwNy0uNjczIDIuMTQyLS43NjYgMy41NTZoMy45MzZjLS4wOTMtMS40MTQtLjM3Ny0yLjY0OS0uNzY2LTMuNTU2LS4yNC0uNTYtLjUtLjk0OC0uNzM3LTEuMTgyQzEwLjIzMiA0LjAzMiAxMC4wNzYgNCAxMCA0em0zLjk3MSA1Yy0uMDg5LTEuNTQ2LS4zODMtMi45Ny0uODM3LTQuMTE4QTYuMDA0IDYuMDA0IDAgMDExNS45MTcgOWgtMS45NDZ6bS0yLjAwMyAySDguMDMyYy4wOTMgMS40MTQuMzc3IDIuNjQ5Ljc2NiAzLjU1Ni4yNC41Ni41Ljk0OC43MzcgMS4xODIuMjMzLjIzLjM4OS4yNjIuNDY1LjI2Mi4wNzYgMCAuMjMyLS4wMzIuNDY1LS4yNjIuMjM4LS4yMzQuNDk4LS42MjMuNzM3LTEuMTgyLjM4OS0uOTA3LjY3My0yLjE0Mi43NjYtMy41NTZ6bTEuMTY2IDQuMTE4Yy40NTQtMS4xNDcuNzQ4LTIuNTcyLjgzNy00LjExOGgxLjk0NmE2LjAwNCA2LjAwNCAwIDAxLTIuNzgzIDQuMTE4em0tNi4yNjggMEM2LjQxMiAxMy45NyA2LjExOCAxMi41NDYgNi4wMyAxMUg0LjA4M2E2LjAwNCA2LjAwNCAwIDAwMi43ODMgNC4xMTh6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlHbG9iZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6TTQuMzMyIDguMDI3YTYuMDEyIDYuMDEyIDAgMDExLjkxMi0yLjcwNkM2LjUxMiA1LjczIDYuOTc0IDYgNy41IDZBMS41IDEuNSAwIDAxOSA3LjVWOGEyIDIgMCAwMDQgMCAyIDIgMCAwMTEuNTIzLTEuOTQzQTUuOTc3IDUuOTc3IDAgMDExNiAxMGMwIC4zNC0uMDI4LjY3NS0uMDgzIDFIMTVhMiAyIDAgMDAtMiAydjIuMTk3QTUuOTczIDUuOTczIDAgMDExMCAxNnYtMmEyIDIgMCAwMC0yLTIgMiAyIDAgMDEtMi0yIDIgMiAwIDAwLTEuNjY4LTEuOTczelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpSGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTkgM2ExIDEgMCAwMTIgMHY1LjVhLjUuNSAwIDAwMSAwVjRhMSAxIDAgMTEyIDB2NC41YS41LjUgMCAwMDEgMFY2YTEgMSAwIDExMiAwdjVhNyA3IDAgMTEtMTQgMFY5YTEgMSAwIDAxMiAwdjIuNWEuNS41IDAgMDAxIDBWNGExIDEgMCAwMTIgMHY0LjVhLjUuNSAwIDAwMSAwVjN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlIYXNodGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOS4yNDMgMy4wM2ExIDEgMCAwMS43MjcgMS4yMTNMOS41MyA2aDIuOTRsLjU2LTIuMjQzYTEgMSAwIDExMS45NC40ODZMMTQuNTMgNkgxN2ExIDEgMCAxMTAgMmgtMi45N2wtMSA0SDE1YTEgMSAwIDExMCAyaC0yLjQ3bC0uNTYgMi4yNDJhMSAxIDAgMTEtMS45NC0uNDg1TDEwLjQ3IDE0SDcuNTNsLS41NiAyLjI0MmExIDEgMCAxMS0xLjk0LS40ODVMNS40NyAxNEgzYTEgMSAwIDExMC0yaDIuOTdsMS00SDVhMSAxIDAgMTEwLTJoMi40N2wuNTYtMi4yNDNhMSAxIDAgMDExLjIxMy0uNzI3ek05LjAzIDhsLTEgNGgyLjkzOGwxLTRIOS4wMzF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMuMTcyIDUuMTcyYTQgNCAwIDAxNS42NTYgMEwxMCA2LjM0M2wxLjE3Mi0xLjE3MWE0IDQgMCAxMTUuNjU2IDUuNjU2TDEwIDE3LjY1N2wtNi44MjgtNi44MjlhNCA0IDAgMDEwLTUuNjU2elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNzA3IDIuMjkzYTEgMSAwIDAwLTEuNDE0IDBsLTcgN2ExIDEgMCAwMDEuNDE0IDEuNDE0TDQgMTAuNDE0VjE3YTEgMSAwIDAwMSAxaDJhMSAxIDAgMDAxLTF2LTJhMSAxIDAgMDExLTFoMmExIDEgMCAwMTEgMXYyYTEgMSAwIDAwMSAxaDJhMSAxIDAgMDAxLTF2LTYuNTg2bC4yOTMuMjkzYTEgMSAwIDAwMS40MTQtMS40MTRsLTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpSWRlbnRpZmljYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAyYTEgMSAwIDAwLTEgMXYxYTEgMSAwIDAwMiAwVjNhMSAxIDAgMDAtMS0xek00IDRoM2EzIDMgMCAwMDYgMGgzYTIgMiAwIDAxMiAydjlhMiAyIDAgMDEtMiAySDRhMiAyIDAgMDEtMi0yVjZhMiAyIDAgMDEyLTJ6bTIuNSA3YTEuNSAxLjUgMCAxMDAtMyAxLjUgMS41IDAgMDAwIDN6bTIuNDUgNGEyLjUgMi41IDAgMTAtNC45IDBoNC45ek0xMiA5YTEgMSAwIDEwMCAyaDNhMSAxIDAgMTAwLTJoLTN6bS0xIDRhMSAxIDAgMDExLTFoMmExIDEgMCAxMTAgMmgtMmExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlJbmJveEluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjcwNyA3LjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNGwyIDJhMSAxIDAgMDAxLjQxNCAwbDItMmExIDEgMCAwMC0xLjQxNC0xLjQxNEwxMSA3LjU4NlYzYTEgMSAwIDEwLTIgMHY0LjU4NmwtLjI5My0uMjkzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVhMiAyIDAgMDEyLTJoMWExIDEgMCAwMTAgMkg1djdoMmwxIDJoNGwxLTJoMlY1aC0xYTEgMSAwIDExMC0yaDFhMiAyIDAgMDEyIDJ2MTBhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNSAzYTIgMiAwIDAwLTIgMnYxMGEyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMlY1YTIgMiAwIDAwLTItMkg1em0wIDJoMTB2N2gtMmwtMSAySDhsLTEtMkg1VjV6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlJbmZvcm1hdGlvbkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDEwYTggOCAwIDExLTE2IDAgOCA4IDAgMDExNiAwem0tNy00YTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHpNOSA5YTEgMSAwIDAwMCAydjNhMSAxIDAgMDAxIDFoMWExIDEgMCAxMDAtMnYtM2ExIDEgMCAwMC0xLTFIOXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUtleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDhhNiA2IDAgMDEtNy43NDMgNS43NDNMMTAgMTRsLTEgMS0xIDFINnYySDJ2LTRsNC4yNTctNC4yNTdBNiA2IDAgMTExOCA4em0tNi00YTEgMSAwIDEwMCAyIDIgMiAwIDAxMiAyIDEgMSAwIDEwMiAwIDQgNCAwIDAwLTQtNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUxpYnJhcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMC40OTYgMi4xMzJhMSAxIDAgMDAtLjk5MiAwbC03IDRBMSAxIDAgMDAzIDh2N2ExIDEgMCAxMDAgMmgxNGExIDEgMCAxMDAtMlY4YTEgMSAwIDAwLjQ5Ni0xLjg2OGwtNy00ek02IDlhMSAxIDAgMDAtMSAxdjNhMSAxIDAgMTAyIDB2LTNhMSAxIDAgMDAtMS0xem0zIDFhMSAxIDAgMDEyIDB2M2ExIDEgMCAxMS0yIDB2LTN6bTUtMWExIDEgMCAwMC0xIDF2M2ExIDEgMCAxMDIgMHYtM2ExIDEgMCAwMC0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlMaWdodEJ1bGIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDNhMSAxIDAgMTAtMiAwdjFhMSAxIDAgMTAyIDBWM3pNMTUuNjU3IDUuNzU3YTEgMSAwIDAwLTEuNDE0LTEuNDE0bC0uNzA3LjcwN2ExIDEgMCAwMDEuNDE0IDEuNDE0bC43MDctLjcwN3pNMTggMTBhMSAxIDAgMDEtMSAxaC0xYTEgMSAwIDExMC0yaDFhMSAxIDAgMDExIDF6TTUuMDUgNi40NjRBMSAxIDAgMTA2LjQ2NCA1LjA1bC0uNzA3LS43MDdhMSAxIDAgMDAtMS40MTQgMS40MTRsLjcwNy43MDd6TTUgMTBhMSAxIDAgMDEtMSAxSDNhMSAxIDAgMTEwLTJoMWExIDEgMCAwMTEgMXpNOCAxNnYtMWg0djFhMiAyIDAgMTEtNCAwek0xMiAxNGMuMDE1LS4zNC4yMDgtLjY0Ni40NzctLjg1OWE0IDQgMCAxMC00Ljk1NCAwYy4yNy4yMTMuNDYyLjUxOS40NzYuODU5aDQuMDAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlMaWdodG5pbmdCb2x0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTEuMyAxLjA0NkExIDEgMCAwMTEyIDJ2NWg0YTEgMSAwIDAxLjgyIDEuNTczbC03IDEwQTEgMSAwIDAxOCAxOHYtNUg0YTEgMSAwIDAxLS44Mi0xLjU3M2w3LTEwYTEgMSAwIDAxMS4xMi0uMzh6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTIuNTg2IDQuNTg2YTIgMiAwIDExMi44MjggMi44MjhsLTMgM2EyIDIgMCAwMS0yLjgyOCAwIDEgMSAwIDAwLTEuNDE0IDEuNDE0IDQgNCAwIDAwNS42NTYgMGwzLTNhNCA0IDAgMDAtNS42NTYtNS42NTZsLTEuNSAxLjVhMSAxIDAgMTAxLjQxNCAxLjQxNGwxLjUtMS41em0tNSA1YTIgMiAwIDAxMi44MjggMCAxIDEgMCAxMDEuNDE0LTEuNDE0IDQgNCAwIDAwLTUuNjU2IDBsLTMgM2E0IDQgMCAxMDUuNjU2IDUuNjU2bDEuNS0xLjVhMSAxIDAgMTAtMS40MTQtMS40MTRsLTEuNSAxLjVhMiAyIDAgMTEtMi44MjgtMi44MjhsMy0zelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTG9jYXRpb25NYXJrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01LjA1IDQuMDVhNyA3IDAgMTE5LjkgOS45TDEwIDE4LjlsLTQuOTUtNC45NWE3IDcgMCAwMTAtOS45ek0xMCAxMWEyIDIgMCAxMDAtNCAyIDIgMCAwMDAgNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUxvY2tDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01IDlWN2E1IDUgMCAwMTEwIDB2MmEyIDIgMCAwMTIgMnY1YTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMnYtNWEyIDIgMCAwMTItMnptOC0ydjJIN1Y3YTMgMyAwIDAxNiAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTG9ja09wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDJhNSA1IDAgMDAtNSA1djJhMiAyIDAgMDAtMiAydjVhMiAyIDAgMDAyIDJoMTBhMiAyIDAgMDAyLTJ2LTVhMiAyIDAgMDAtMi0ySDdWN2EzIDMgMCAwMTUuOTA1LS43NSAxIDEgMCAwMDEuOTM3LS41QTUuMDAyIDUuMDAyIDAgMDAxMCAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlMb2dpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgM2ExIDEgMCAwMTEgMXYxMmExIDEgMCAxMS0yIDBWNGExIDEgMCAwMTEtMXptNy43MDcgMy4yOTNhMSAxIDAgMDEwIDEuNDE0TDkuNDE0IDlIMTdhMSAxIDAgMTEwIDJIOS40MTRsMS4yOTMgMS4yOTNhMSAxIDAgMDEtMS40MTQgMS40MTRsLTMtM2ExIDEgMCAwMTAtMS40MTRsMy0zYTEgMSAwIDAxMS40MTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaUxvZ291dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgM2ExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMTAyIDBWNGExIDEgMCAwMC0xLTF6bTEwLjI5MyA5LjI5M2ExIDEgMCAwMDEuNDE0IDEuNDE0bDMtM2ExIDEgMCAwMDAtMS40MTRsLTMtM2ExIDEgMCAxMC0xLjQxNCAxLjQxNEwxNC41ODYgOUg3YTEgMSAwIDEwMCAyaDcuNTg2bC0xLjI5MyAxLjI5M3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU1haWxPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMi45NCA2LjQxMkEyIDIgMCAwMDIgOC4xMDhWMTZhMiAyIDAgMDAyIDJoMTJhMiAyIDAgMDAyLTJWOC4xMDhhMiAyIDAgMDAtLjk0LTEuNjk2bC02LTMuNzVhMiAyIDAgMDAtMi4xMiAwbC02IDMuNzV6bTIuNjE1IDIuNDIzYTEgMSAwIDEwLTEuMTEgMS42NjRsNSAzLjMzM2ExIDEgMCAwMDEuMTEgMGw1LTMuMzMzYTEgMSAwIDAwLTEuMTEtMS42NjRMMTAgMTEuNzk4IDUuNTU1IDguODM1elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTWFpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi4wMDMgNS44ODRMMTAgOS44ODJsNy45OTctMy45OThBMiAyIDAgMDAxNiA0SDRhMiAyIDAgMDAtMS45OTcgMS44ODR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDguMTE4bC04IDQtOC00VjE0YTIgMiAwIDAwMiAyaDEyYTIgMiAwIDAwMi0yVjguMTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlNYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMiAxLjU4NmwtNCA0djEyLjgyOGw0LTRWMS41ODZ6TTMuNzA3IDMuMjkzQTEgMSAwIDAwMiA0djEwYTEgMSAwIDAwLjI5My43MDdMNiAxOC40MTRWNS41ODZMMy43MDcgMy4yOTN6TTE3LjcwNyA1LjI5M0wxNCAxLjU4NnYxMi44MjhsMi4yOTMgMi4yOTNBMSAxIDAgMDAxOCAxNlY2YTEgMSAwIDAwLS4yOTMtLjcwN3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU1lbnVBbHQxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyA1YTEgMSAwIDAxMS0xaDEyYTEgMSAwIDExMCAySDRhMSAxIDAgMDEtMS0xek0zIDEwYTEgMSAwIDAxMS0xaDZhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6TTMgMTVhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlNZW51QWx0MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgNWExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpNMyAxMGExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpNMyAxNWExIDEgMCAwMTEtMWg2YTEgMSAwIDExMCAySDRhMSAxIDAgMDEtMS0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTWVudUFsdDMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zIDVhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6TTMgMTBhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6TTkgMTVhMSAxIDAgMDExLTFoNmExIDEgMCAxMTAgMmgtNmExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlNZW51QWx0NCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgN2ExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpNMyAxM2ExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU1lbnUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zIDVhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6TTMgMTBhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6TTMgMTVhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlNaWNyb3Bob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNyA0YTMgMyAwIDAxNiAwdjRhMyAzIDAgMTEtNiAwVjR6bTQgMTAuOTNBNy4wMDEgNy4wMDEgMCAwMDE3IDhhMSAxIDAgMTAtMiAwQTUgNSAwIDAxNSA4YTEgMSAwIDAwLTIgMCA3LjAwMSA3LjAwMSAwIDAwNiA2LjkzVjE3SDZhMSAxIDAgMTAwIDJoOGExIDEgMCAxMDAtMmgtM3YtMi4wN3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU1pbnVzQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnpNNyA5YTEgMSAwIDAwMCAyaDZhMSAxIDAgMTAwLTJIN3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU1pbnVzU20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01IDEwYTEgMSAwIDAxMS0xaDhhMSAxIDAgMTEwIDJINmExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgMTBhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlNb29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4yOTMgMTMuMjkzQTggOCAwIDAxNi43MDcgMi43MDdhOC4wMDEgOC4wMDEgMCAxMDEwLjU4NiAxMC41ODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU11c2ljTm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggM2ExIDEgMCAwMC0xLjE5Ni0uOThsLTEwIDJBMSAxIDAgMDA2IDV2OS4xMTRBNC4zNjkgNC4zNjkgMCAwMDUgMTRjLTEuNjU3IDAtMyAuODk1LTMgMnMxLjM0MyAyIDMgMiAzLS44OTUgMy0yVjcuODJsOC0xLjZ2NS44OTRBNC4zNyA0LjM3IDAgMDAxNSAxMmMtMS42NTcgMC0zIC44OTUtMyAyczEuMzQzIDIgMyAyIDMtLjg5NSAzLTJWM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpTmV3c3BhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMiA1YTIgMiAwIDAxMi0yaDhhMiAyIDAgMDEyIDJ2MTBhMiAyIDAgMDAyIDJINGEyIDIgMCAwMS0yLTJWNXptMyAxaDZ2NEg1VjZ6bTYgNkg1djJoNnYtMnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDdoMWEyIDIgMCAwMTIgMnY1LjVhMS41IDEuNSAwIDAxLTMgMFY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPZmZpY2VCdWlsZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgNGEyIDIgMCAwMTItMmg4YTIgMiAwIDAxMiAydjEyYTEgMSAwIDExMCAyaC0zYTEgMSAwIDAxLTEtMXYtMmExIDEgMCAwMC0xLTFIOWExIDEgMCAwMC0xIDF2MmExIDEgMCAwMS0xIDFINGExIDEgMCAxMTAtMlY0em0zIDFoMnYySDdWNXptMiA0SDd2MmgyVjl6bTItNGgydjJoLTJWNXptMiA0aC0ydjJoMlY5elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGFwZXJBaXJwbGFuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuODk0IDIuNTUzYTEgMSAwIDAwLTEuNzg4IDBsLTcgMTRhMSAxIDAgMDAxLjE2OSAxLjQwOWw1LTEuNDI5QTEgMSAwIDAwOSAxNS41NzFWMTFhMSAxIDAgMTEyIDB2NC41NzFhMSAxIDAgMDAuNzI1Ljk2Mmw1IDEuNDI4YTEgMSAwIDAwMS4xNy0xLjQwOGwtNy0xNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGFwZXJDbGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOCA0YTMgMyAwIDAwLTMgM3Y0YTUgNSAwIDAwMTAgMFY3YTEgMSAwIDExMiAwdjRhNyA3IDAgMTEtMTQgMFY3YTUgNSAwIDAxMTAgMHY0YTMgMyAwIDExLTYgMFY3YTEgMSAwIDAxMiAwdjRhMSAxIDAgMTAyIDBWN2EzIDMgMCAwMC0zLTN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQYXVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDEwYTggOCAwIDExLTE2IDAgOCA4IDAgMDExNiAwek03IDhhMSAxIDAgMDEyIDB2NGExIDEgMCAxMS0yIDBWOHptNS0xYTEgMSAwIDAwLTEgMXY0YTEgMSAwIDEwMiAwVjhhMSAxIDAgMDAtMS0xelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGVuY2lsQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy40MTQgMi41ODZhMiAyIDAgMDAtMi44MjggMEw3IDEwLjE3MlYxM2gyLjgyOGw3LjU4Ni03LjU4NmEyIDIgMCAwMDAtMi44Mjh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDZhMiAyIDAgMDEyLTJoNGExIDEgMCAwMTAgMkg0djEwaDEwdi00YTEgMSAwIDExMiAwdjRhMiAyIDAgMDEtMiAySDRhMiAyIDAgMDEtMi0yVjZ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQZW5jaWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjU4NiAzLjU4NmEyIDIgMCAxMTIuODI4IDIuODI4bC0uNzkzLjc5My0yLjgyOC0yLjgyOC43OTMtLjc5M3pNMTEuMzc5IDUuNzkzTDMgMTQuMTcyVjE3aDIuODI4bDguMzgtOC4zNzktMi44My0yLjgyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGhvbmVJbmNvbWluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNDE0IDdsMy4yOTMtMy4yOTNhMSAxIDAgMDAtMS40MTQtMS40MTRMMTMgNS41ODZWNGExIDEgMCAxMC0yIDB2NC4wMDNhLjk5Ni45OTYgMCAwMC42MTcuOTIxQS45OTcuOTk3IDAgMDAxMiA5aDRhMSAxIDAgMTAwLTJoLTEuNTg2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDNhMSAxIDAgMDExLTFoMi4xNTNhMSAxIDAgMDEuOTg2LjgzNmwuNzQgNC40MzVhMSAxIDAgMDEtLjU0IDEuMDZsLTEuNTQ4Ljc3M2ExMS4wMzcgMTEuMDM3IDAgMDA2LjEwNSA2LjEwNWwuNzc0LTEuNTQ4YTEgMSAwIDAxMS4wNTktLjU0bDQuNDM1Ljc0YTEgMSAwIDAxLjgzNi45ODZWMTdhMSAxIDAgMDEtMSAxaC0yQzcuODIgMTggMiAxMi4xOCAyIDVWM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGhvbmVNaXNzZWRDYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDNhMSAxIDAgMDExLTFoMi4xNTNhMSAxIDAgMDEuOTg2LjgzNmwuNzQgNC40MzVhMSAxIDAgMDEtLjU0IDEuMDZsLTEuNTQ4Ljc3M2ExMS4wMzcgMTEuMDM3IDAgMDA2LjEwNSA2LjEwNWwuNzc0LTEuNTQ4YTEgMSAwIDAxMS4wNTktLjU0bDQuNDM1Ljc0YTEgMSAwIDAxLjgzNi45ODZWMTdhMSAxIDAgMDEtMSAxaC0yQzcuODIgMTggMiAxMi4xOCAyIDVWM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNzA3IDMuMjkzYTEgMSAwIDAxMCAxLjQxNEwxNS40MTQgNmwxLjI5MyAxLjI5M2ExIDEgMCAwMS0xLjQxNCAxLjQxNEwxNCA3LjQxNGwtMS4yOTMgMS4yOTNhMSAxIDAgMTEtMS40MTQtMS40MTRMMTIuNTg2IDZsLTEuMjkzLTEuMjkzYTEgMSAwIDAxMS40MTQtMS40MTRMMTQgNC41ODZsMS4yOTMtMS4yOTNhMSAxIDAgMDExLjQxNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQaG9uZU91dGdvaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy45MjQgMi42MTdhLjk5Ny45OTcgMCAwMC0uMjE1LS4zMjJsLS4wMDQtLjAwNEEuOTk3Ljk5NyAwIDAwMTcgMmgtNGExIDEgMCAxMDAgMmgxLjU4NmwtMy4yOTMgMy4yOTNhMSAxIDAgMDAxLjQxNCAxLjQxNEwxNiA1LjQxNFY3YTEgMSAwIDEwMiAwVjNhLjk5Ny45OTcgMCAwMC0uMDc2LS4zODN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgM2ExIDEgMCAwMTEtMWgyLjE1M2ExIDEgMCAwMS45ODYuODM2bC43NCA0LjQzNWExIDEgMCAwMS0uNTQgMS4wNmwtMS41NDguNzczYTExLjAzNyAxMS4wMzcgMCAwMDYuMTA1IDYuMTA1bC43NzQtMS41NDhhMSAxIDAgMDExLjA1OS0uNTRsNC40MzUuNzRhMSAxIDAgMDEuODM2Ljk4NlYxN2ExIDEgMCAwMS0xIDFoLTJDNy44MiAxOCAyIDEyLjE4IDIgNVYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAzYTEgMSAwIDAxMS0xaDIuMTUzYTEgMSAwIDAxLjk4Ni44MzZsLjc0IDQuNDM1YTEgMSAwIDAxLS41NCAxLjA2bC0xLjU0OC43NzNhMTEuMDM3IDExLjAzNyAwIDAwNi4xMDUgNi4xMDVsLjc3NC0xLjU0OGExIDEgMCAwMTEuMDU5LS41NGw0LjQzNS43NGExIDEgMCAwMS44MzYuOTg2VjE3YTEgMSAwIDAxLTEgMWgtMkM3LjgyIDE4IDIgMTIuMTggMiA1VjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVBob3RvZ3JhcGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDNhMiAyIDAgMDAtMiAydjEwYTIgMiAwIDAwMiAyaDEyYTIgMiAwIDAwMi0yVjVhMiAyIDAgMDAtMi0ySDR6bTEyIDEySDRsNC04IDMgNiAyLTQgMyA2elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGxheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6TTkuNTU1IDcuMTY4QTEgMSAwIDAwOCA4djRhMSAxIDAgMDAxLjU1NS44MzJsMy0yYTEgMSAwIDAwMC0xLjY2NGwtMy0yelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGx1c0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6bTEtMTFhMSAxIDAgMTAtMiAwdjJIN2ExIDEgMCAxMDAgMmgydjJhMSAxIDAgMTAyIDB2LTJoMmExIDEgMCAxMDAtMmgtMlY3elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUGx1c1NtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgNWExIDEgMCAwMTEgMXYzaDNhMSAxIDAgMTEwIDJoLTN2M2ExIDEgMCAxMS0yIDB2LTNINmExIDEgMCAxMTAtMmgzVjZhMSAxIDAgMDExLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgM2ExIDEgMCAwMTEgMXY1aDVhMSAxIDAgMTEwIDJoLTV2NWExIDEgMCAxMS0yIDB2LTVINGExIDEgMCAxMTAtMmg1VjRhMSAxIDAgMDExLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlQcmVzZW50YXRpb25DaGFydEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgM2ExIDEgMCAwMDAgMnY4YTIgMiAwIDAwMiAyaDIuNTg2bC0xLjI5MyAxLjI5M2ExIDEgMCAxMDEuNDE0IDEuNDE0TDEwIDE1LjQxNGwyLjI5MyAyLjI5M2ExIDEgMCAwMDEuNDE0LTEuNDE0TDEyLjQxNCAxNUgxNWEyIDIgMCAwMDItMlY1YTEgMSAwIDEwMC0ySDN6bTExIDRhMSAxIDAgMTAtMiAwdjRhMSAxIDAgMTAyIDBWN3ptLTMgMWExIDEgMCAxMC0yIDB2M2ExIDEgMCAxMDIgMFY4ek04IDlhMSAxIDAgMDAtMiAwdjJhMSAxIDAgMTAyIDBWOXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVByZXNlbnRhdGlvbkNoYXJ0TGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgM2ExIDEgMCAwMDAgMnY4YTIgMiAwIDAwMiAyaDIuNTg2bC0xLjI5MyAxLjI5M2ExIDEgMCAxMDEuNDE0IDEuNDE0TDEwIDE1LjQxNGwyLjI5MyAyLjI5M2ExIDEgMCAwMDEuNDE0LTEuNDE0TDEyLjQxNCAxNUgxNWEyIDIgMCAwMDItMlY1YTEgMSAwIDEwMC0ySDN6bTExLjcwNyA0LjcwN2ExIDEgMCAwMC0xLjQxNC0xLjQxNEwxMCA5LjU4NiA4LjcwNyA4LjI5M2ExIDEgMCAwMC0xLjQxNCAwbC0yIDJhMSAxIDAgMTAxLjQxNCAxLjQxNEw4IDEwLjQxNGwxLjI5MyAxLjI5M2ExIDEgMCAwMDEuNDE0IDBsNC00elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUHJpbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUgNHYzSDRhMiAyIDAgMDAtMiAydjNhMiAyIDAgMDAyIDJoMXYyYTIgMiAwIDAwMiAyaDZhMiAyIDAgMDAyLTJ2LTJoMWEyIDIgMCAwMDItMlY5YTIgMiAwIDAwLTItMmgtMVY0YTIgMiAwIDAwLTItMkg3YTIgMiAwIDAwLTIgMnptOCAwSDd2M2g2VjR6bTAgOEg3djRoNnYtNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVB1enpsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMy41YTEuNSAxLjUgMCAwMTMgMFY0YTEgMSAwIDAwMSAxaDNhMSAxIDAgMDExIDF2M2ExIDEgMCAwMS0xIDFoLS41YTEuNSAxLjUgMCAwMDAgM2guNWExIDEgMCAwMTEgMXYzYTEgMSAwIDAxLTEgMWgtM2ExIDEgMCAwMS0xLTF2LS41YTEuNSAxLjUgMCAwMC0zIDB2LjVhMSAxIDAgMDEtMSAxSDZhMSAxIDAgMDEtMS0xdi0zYTEgMSAwIDAwLTEtMWgtLjVhMS41IDEuNSAwIDAxMC0zSDRhMSAxIDAgMDAxLTFWNmExIDEgMCAwMTEtMWgzYTEgMSAwIDAwMS0xdi0uNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUXJjb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyA0YTEgMSAwIDAxMS0xaDNhMSAxIDAgMDExIDF2M2ExIDEgMCAwMS0xIDFINGExIDEgMCAwMS0xLTFWNHptMiAyVjVoMXYxSDV6TTMgMTNhMSAxIDAgMDExLTFoM2ExIDEgMCAwMTEgMXYzYTEgMSAwIDAxLTEgMUg0YTEgMSAwIDAxLTEtMXYtM3ptMiAydi0xaDF2MUg1ek0xMyAzYTEgMSAwIDAwLTEgMXYzYTEgMSAwIDAwMSAxaDNhMSAxIDAgMDAxLTFWNGExIDEgMCAwMC0xLTFoLTN6bTEgMnYxaDFWNWgtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDRhMSAxIDAgMTAtMiAwdjFhMSAxIDAgMDAyIDBWNHpNMTAgN2ExIDEgMCAwMTEgMXYxaDJhMSAxIDAgMTEwIDJoLTNhMSAxIDAgMDEtMS0xVjhhMSAxIDAgMDExLTF6TTE2IDlhMSAxIDAgMTAwIDIgMSAxIDAgMDAwLTJ6TTkgMTNhMSAxIDAgMDExLTFoMWExIDEgMCAxMTAgMnYyYTEgMSAwIDExLTIgMHYtM3pNNyAxMWExIDEgMCAxMDAtMkg0YTEgMSAwIDEwMCAyaDN6TTE3IDEzYTEgMSAwIDAxLTEgMWgtMmExIDEgMCAxMTAtMmgyYTEgMSAwIDAxMSAxek0xNiAxN2ExIDEgMCAxMDAtMmgtM2ExIDEgMCAxMDAgMmgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlRdWVzdGlvbk1hcmtDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xOCAxMGE4IDggMCAxMS0xNiAwIDggOCAwIDAxMTYgMHptLTgtM2ExIDEgMCAwMC0uODY3LjUgMSAxIDAgMTEtMS43MzEtMUEzIDMgMCAwMTEzIDhhMy4wMDEgMy4wMDEgMCAwMS0yIDIuODNWMTFhMSAxIDAgMTEtMiAwdi0xYTEgMSAwIDAxMS0xIDEgMSAwIDEwMC0yem0wIDhhMSAxIDAgMTAwLTIgMSAxIDAgMDAwIDJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlSZWNlaXB0UmVmdW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNSAyYTIgMiAwIDAwLTIgMnYxNGwzLjUtMiAzLjUgMiAzLjUtMiAzLjUgMlY0YTIgMiAwIDAwLTItMkg1em00LjcwNyAzLjcwN2ExIDEgMCAwMC0xLjQxNC0xLjQxNGwtMyAzYTEgMSAwIDAwMCAxLjQxNGwzIDNhMSAxIDAgMDAxLjQxNC0xLjQxNEw4LjQxNCA5SDEwYTMgMyAwIDAxMyAzdjFhMSAxIDAgMTAyIDB2LTFhNSA1IDAgMDAtNS01SDguNDE0bDEuMjkzLTEuMjkzelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpUmVjZWlwdFRheCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUgMmEyIDIgMCAwMC0yIDJ2MTRsMy41LTIgMy41IDIgMy41LTIgMy41IDJWNGEyIDIgMCAwMC0yLTJINXptMi41IDNhMS41IDEuNSAwIDEwMCAzIDEuNSAxLjUgMCAwMDAtM3ptNi4yMDcuMjkzYTEgMSAwIDAwLTEuNDE0IDBsLTYgNmExIDEgMCAxMDEuNDE0IDEuNDE0bDYtNmExIDEgMCAwMDAtMS40MTR6TTEyLjUgMTBhMS41IDEuNSAwIDEwMCAzIDEuNSAxLjUgMCAwMDAtM3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVJlZnJlc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDJhMSAxIDAgMDExIDF2Mi4xMDFhNy4wMDIgNy4wMDIgMCAwMTExLjYwMSAyLjU2NiAxIDEgMCAxMS0xLjg4NS42NjZBNS4wMDIgNS4wMDIgMCAwMDUuOTk5IDdIOWExIDEgMCAwMTAgMkg0YTEgMSAwIDAxLTEtMVYzYTEgMSAwIDAxMS0xem0uMDA4IDkuMDU3YTEgMSAwIDAxMS4yNzYuNjFBNS4wMDIgNS4wMDIgMCAwMDE0LjAwMSAxM0gxMWExIDEgMCAxMTAtMmg1YTEgMSAwIDAxMSAxdjVhMSAxIDAgMTEtMiAwdi0yLjEwMWE3LjAwMiA3LjAwMiAwIDAxLTExLjYwMS0yLjU2NiAxIDEgMCAwMS42MS0xLjI3NnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVJlcGx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNy43MDcgMy4yOTNhMSAxIDAgMDEwIDEuNDE0TDUuNDE0IDdIMTFhNyA3IDAgMDE3IDd2MmExIDEgMCAxMS0yIDB2LTJhNSA1IDAgMDAtNS01SDUuNDE0bDIuMjkzIDIuMjkzYTEgMSAwIDExLTEuNDE0IDEuNDE0bC00LTRhMSAxIDAgMDEwLTEuNDE0bDQtNGExIDEgMCAwMTEuNDE0IDB6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlSZXdpbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNDQ1IDE0LjgzMkExIDEgMCAwMDEwIDE0di0yLjc5OGw1LjQ0NSAzLjYzQTEgMSAwIDAwMTcgMTRWNmExIDEgMCAwMC0xLjU1NS0uODMyTDEwIDguNzk4VjZhMSAxIDAgMDAtMS41NTUtLjgzMmwtNiA0YTEgMSAwIDAwMCAxLjY2NGw2IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVJzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAzYTEgMSAwIDAwMCAyYzUuNTIzIDAgMTAgNC40NzcgMTAgMTBhMSAxIDAgMTAyIDBDMTcgOC4zNzMgMTEuNjI3IDMgNSAzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDlhMSAxIDAgMDExLTEgNyA3IDAgMDE3IDcgMSAxIDAgMTEtMiAwIDUgNSAwIDAwLTUtNSAxIDEgMCAwMS0xLTF6TTMgMTVhMiAyIDAgMTE0IDAgMiAyIDAgMDEtNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlTYXZlQXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNzA3IDcuMjkzYTEgMSAwIDAwLTEuNDE0IDEuNDE0bDMgM2ExIDEgMCAwMDEuNDE0IDBsMy0zYTEgMSAwIDAwLTEuNDE0LTEuNDE0TDEzIDguNTg2VjVoM2EyIDIgMCAwMTIgMnY1YTIgMiAwIDAxLTIgMkg4YTIgMiAwIDAxLTItMlY3YTIgMiAwIDAxMi0yaDN2My41ODZMOS43MDcgNy4yOTN6TTExIDNhMSAxIDAgMTEyIDB2MmgtMlYzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDlhMiAyIDAgMDAtMiAydjVhMiAyIDAgMDAyIDJoOGEyIDIgMCAwMDItMkg0Vjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNzA3IDEwLjI5M2ExIDEgMCAxMC0xLjQxNCAxLjQxNGwzIDNhMSAxIDAgMDAxLjQxNCAwbDMtM2ExIDEgMCAwMC0xLjQxNC0xLjQxNEwxMSAxMS41ODZWNmg1YTIgMiAwIDAxMiAydjdhMiAyIDAgMDEtMiAySDRhMiAyIDAgMDEtMi0yVjhhMiAyIDAgMDEyLTJoNXY1LjU4NmwtMS4yOTMtMS4yOTN6TTkgNGExIDEgMCAwMTIgMHYySDlWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2NhbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAyYTEgMSAwIDAxMSAxdjEuMzIzbDMuOTU0IDEuNTgyIDEuNTk5LS44YTEgMSAwIDAxLjg5NCAxLjc5bC0xLjIzMy42MTYgMS43MzggNS40MmExIDEgMCAwMS0uMjg1IDEuMDVBMy45ODkgMy45ODkgMCAwMTE1IDE1YTMuOTg5IDMuOTg5IDAgMDEtMi42NjctMS4wMTkgMSAxIDAgMDEtLjI4NS0xLjA1bDEuNzE1LTUuMzQ5TDExIDYuNDc3VjE2aDJhMSAxIDAgMTEwIDJIN2ExIDEgMCAxMTAtMmgyVjYuNDc3TDYuMjM3IDcuNTgybDEuNzE1IDUuMzQ5YTEgMSAwIDAxLS4yODUgMS4wNUEzLjk4OSAzLjk4OSAwIDAxNSAxNWEzLjk4OSAzLjk4OSAwIDAxLTIuNjY3LTEuMDE5IDEgMSAwIDAxLS4yODUtMS4wNWwxLjczOC01LjQyLTEuMjMzLS42MTdhMSAxIDAgMDEuODk0LTEuNzg4bDEuNTk5Ljc5OUw5IDQuMzIzVjNhMSAxIDAgMDExLTF6bS01IDguMjc0bC0uODE4IDIuNTUyYy4yNS4xMTIuNTI2LjE3NC44MTguMTc0LjI5MiAwIC41NjktLjA2Mi44MTgtLjE3NEw1IDEwLjI3NHptMTAgMGwtLjgxOCAyLjU1MmMuMjUuMTEyLjUyNi4xNzQuODE4LjE3NC4yOTIgMCAuNTY5LS4wNjIuODE4LS4xNzRMMTUgMTAuMjc0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2Npc3NvcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01LjUgMmEzLjUgMy41IDAgMTAxLjY2NSA2LjU4TDguNTg1IDEwbC0xLjQyIDEuNDJhMy41IDMuNSAwIDEwMS40MTQgMS40MTRsOC4xMjgtOC4xMjdhMSAxIDAgMDAtMS40MTQtMS40MTRMMTAgOC41ODZsLTEuNDItMS40MkEzLjUgMy41IDAgMDA1LjUgMnpNNCA1LjVhMS41IDEuNSAwIDExMyAwIDEuNSAxLjUgMCAwMS0zIDB6bTAgOWExLjUgMS41IDAgMTEzIDAgMS41IDEuNSAwIDAxLTMgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjgyOCAxMS40MTRhMSAxIDAgMDAtMS40MTQgMS40MTRsMy44NzkgMy44OGExIDEgMCAwMDEuNDE0LTEuNDE1bC0zLjg3OS0zLjg3OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2VhcmNoQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDlhMiAyIDAgMTE0IDAgMiAyIDAgMDEtNCAwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnptMS0xM2E0IDQgMCAwMC0zLjQ0NiA2LjAzMmwtMi4yNjEgMi4yNmExIDEgMCAxMDEuNDE0IDEuNDE1bDIuMjYxLTIuMjYxQTQgNCAwIDEwMTEgNXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggNGE0IDQgMCAxMDAgOCA0IDQgMCAwMDAtOHpNMiA4YTYgNiAwIDExMTAuODkgMy40NzZsNC44MTcgNC44MTdhMSAxIDAgMDEtMS40MTQgMS40MTRsLTQuODE2LTQuODE2QTYgNiAwIDAxMiA4elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2VsZWN0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAzYTEgMSAwIDAxLjcwNy4yOTNsMyAzYTEgMSAwIDAxLTEuNDE0IDEuNDE0TDEwIDUuNDE0IDcuNzA3IDcuNzA3YTEgMSAwIDAxLTEuNDE0LTEuNDE0bDMtM0ExIDEgMCAwMTEwIDN6bS0zLjcwNyA5LjI5M2ExIDEgMCAwMTEuNDE0IDBMMTAgMTQuNTg2bDIuMjkzLTIuMjkzYTEgMSAwIDAxMS40MTQgMS40MTRsLTMgM2ExIDEgMCAwMS0xLjQxNCAwbC0zLTNhMSAxIDAgMDEwLTEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2VydmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMiA1YTIgMiAwIDAxMi0yaDEyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAySDRhMiAyIDAgMDEtMi0yVjV6bTE0IDFhMSAxIDAgMTEtMiAwIDEgMSAwIDAxMiAwek0yIDEzYTIgMiAwIDAxMi0yaDEyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAySDRhMiAyIDAgMDEtMi0ydi0yem0xNCAxYTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA4YTMgMyAwIDEwLTIuOTc3LTIuNjNsLTQuOTQgMi40N2EzIDMgMCAxMDAgNC4zMTlsNC45NCAyLjQ3YTMgMyAwIDEwLjg5NS0xLjc4OWwtNC45NC0yLjQ3YTMuMDI3IDMuMDI3IDAgMDAwLS43NGw0Ljk0LTIuNDdDMTMuNDU2IDcuNjggMTQuMTkgOCAxNSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlTaGllbGRDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIuMTY2IDQuOTk5QTExLjk1NCAxMS45NTQgMCAwMDEwIDEuOTQ0IDExLjk1NCAxMS45NTQgMCAwMDE3LjgzNCA1Yy4xMS42NS4xNjYgMS4zMi4xNjYgMi4wMDEgMCA1LjIyNS0zLjM0IDkuNjctOCAxMS4zMTdDNS4zNCAxNi42NyAyIDEyLjIyNSAyIDdjMC0uNjgyLjA1Ny0xLjM1LjE2Ni0yLjAwMXptMTEuNTQxIDMuNzA4YTEgMSAwIDAwLTEuNDE0LTEuNDE0TDkgMTAuNTg2IDcuNzA3IDkuMjkzYTEgMSAwIDAwLTEuNDE0IDEuNDE0bDIgMmExIDEgMCAwMDEuNDE0IDBsNC00elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU2hpZWxkRXhjbGFtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxLjk0NEExMS45NTQgMTEuOTU0IDAgMDEyLjE2NiA1QzIuMDU2IDUuNjQ5IDIgNi4zMTkgMiA3YzAgNS4yMjUgMy4zNCA5LjY3IDggMTEuMzE3QzE0LjY2IDE2LjY3IDE4IDEyLjIyNSAxOCA3YzAtLjY4Mi0uMDU3LTEuMzUtLjE2Ni0yLjAwMUExMS45NTQgMTEuOTU0IDAgMDExMCAxLjk0NHpNMTEgMTRhMSAxIDAgMTEtMiAwIDEgMSAwIDAxMiAwem0wLTdhMSAxIDAgMTAtMiAwdjNhMSAxIDAgMTAyIDBWN3pcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNob3BwaW5nQmFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMmE0IDQgMCAwMC00IDR2MUg1YTEgMSAwIDAwLS45OTQuODlsLTEgOUExIDEgMCAwMDQgMThoMTJhMSAxIDAgMDAuOTk0LTEuMTFsLTEtOUExIDEgMCAwMDE1IDdoLTFWNmE0IDQgMCAwMC00LTR6bTIgNVY2YTIgMiAwIDEwLTQgMHYxaDR6bS02IDNhMSAxIDAgMTEyIDAgMSAxIDAgMDEtMiAwem03LTFhMSAxIDAgMTAwIDIgMSAxIDAgMDAwLTJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlTaG9wcGluZ0NhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMWExIDEgMCAwMDAgMmgxLjIybC4zMDUgMS4yMjJhLjk5Ny45OTcgMCAwMC4wMS4wNDJsMS4zNTggNS40My0uODkzLjg5MkMzLjc0IDExLjg0NiA0LjYzMiAxNCA2LjQxNCAxNEgxNWExIDEgMCAwMDAtMkg2LjQxNGwxLTFIMTRhMSAxIDAgMDAuODk0LS41NTNsMy02QTEgMSAwIDAwMTcgM0g2LjI4bC0uMzEtMS4yNDNBMSAxIDAgMDA1IDFIM3pNMTYgMTYuNWExLjUgMS41IDAgMTEtMyAwIDEuNSAxLjUgMCAwMTMgMHpNNi41IDE4YTEuNSAxLjUgMCAxMDAtMyAxLjUgMS41IDAgMDAwIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNvcnRBc2NlbmRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM2ExIDEgMCAwMDAgMmgxMWExIDEgMCAxMDAtMkgzek0zIDdhMSAxIDAgMDAwIDJoNWExIDEgMCAwMDAtMkgzek0zIDExYTEgMSAwIDEwMCAyaDRhMSAxIDAgMTAwLTJIM3pNMTMgMTZhMSAxIDAgMTAyIDB2LTUuNTg2bDEuMjkzIDEuMjkzYTEgMSAwIDAwMS40MTQtMS40MTRsLTMtM2ExIDEgMCAwMC0xLjQxNCAwbC0zIDNhMSAxIDAgMTAxLjQxNCAxLjQxNEwxMyAxMC40MTRWMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNvcnREZXNjZW5kaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDNhMSAxIDAgMDAwIDJoMTFhMSAxIDAgMTAwLTJIM3pNMyA3YTEgMSAwIDAwMCAyaDdhMSAxIDAgMTAwLTJIM3pNMyAxMWExIDEgMCAxMDAgMmg0YTEgMSAwIDEwMC0ySDN6TTE1IDhhMSAxIDAgMTAtMiAwdjUuNTg2bC0xLjI5My0xLjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNGwzIDNhMSAxIDAgMDAxLjQxNCAwbDMtM2ExIDEgMCAwMC0xLjQxNC0xLjQxNEwxNSAxMy41ODZWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU3BhcmtsZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01IDJhMSAxIDAgMDExIDF2MWgxYTEgMSAwIDAxMCAySDZ2MWExIDEgMCAwMS0yIDBWNkgzYTEgMSAwIDAxMC0yaDFWM2ExIDEgMCAwMTEtMXptMCAxMGExIDEgMCAwMTEgMXYxaDFhMSAxIDAgMTEwIDJINnYxYTEgMSAwIDExLTIgMHYtMUgzYTEgMSAwIDExMC0yaDF2LTFhMSAxIDAgMDExLTF6TTEyIDJhMSAxIDAgMDEuOTY3Ljc0NEwxNC4xNDYgNy4yIDE3LjUgOS4xMzRhMSAxIDAgMDEwIDEuNzMybC0zLjM1NCAxLjkzNS0xLjE4IDQuNDU1YTEgMSAwIDAxLTEuOTMzIDBMOS44NTQgMTIuOCA2LjUgMTAuODY2YTEgMSAwIDAxMC0xLjczMmwzLjM1NC0xLjkzNSAxLjE4LTQuNDU1QTEgMSAwIDAxMTIgMnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVNwZWFrZXJwaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDNhMSAxIDAgMDAtMS40NDctLjg5NEw4Ljc2MyA2SDVhMyAzIDAgMDAwIDZoLjI4bDEuNzcxIDUuMzE2QTEgMSAwIDAwOCAxOGgxYTEgMSAwIDAwMS0xdi00LjM4Mmw2LjU1MyAzLjI3NkExIDEgMCAwMDE4IDE1VjN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlTdGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjA0OSAyLjkyN2MuMy0uOTIxIDEuNjAzLS45MjEgMS45MDIgMGwxLjA3IDMuMjkyYTEgMSAwIDAwLjk1LjY5aDMuNDYyYy45NjkgMCAxLjM3MSAxLjI0LjU4OCAxLjgxbC0yLjggMi4wMzRhMSAxIDAgMDAtLjM2NCAxLjExOGwxLjA3IDMuMjkyYy4zLjkyMS0uNzU1IDEuNjg4LTEuNTQgMS4xMThsLTIuOC0yLjAzNGExIDEgMCAwMC0xLjE3NSAwbC0yLjggMi4wMzRjLS43ODQuNTctMS44MzgtLjE5Ny0xLjUzOS0xLjExOGwxLjA3LTMuMjkyYTEgMSAwIDAwLS4zNjQtMS4xMThMMi45OCA4LjcyYy0uNzgzLS41Ny0uMzgtMS44MS41ODgtMS44MWgzLjQ2MWExIDEgMCAwMC45NTEtLjY5bDEuMDctMy4yOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVN0YXR1c09mZmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNzA3IDIuMjkzYTEgMSAwIDAwLTEuNDE0IDEuNDE0bDYuOTIxIDYuOTIyYy4wNS4wNjIuMTA1LjExOC4xNjguMTY3bDYuOTEgNi45MTFhMSAxIDAgMDAxLjQxNS0xLjQxNGwtLjY3NS0uNjc1YTkuMDAxIDkuMDAxIDAgMDAtLjY2OC0xMS45ODJBMSAxIDAgMTAxNC45NSA1LjA1YTcuMDAyIDcuMDAyIDAgMDEuNjU3IDkuMTQzbC0xLjQzNS0xLjQzNWE1LjAwMiA1LjAwMiAwIDAwLS42MzYtNi4yOTRBMSAxIDAgMDAxMi4xMiA3Ljg4Yy45MjQuOTIzIDEuMTIgMi4zLjU4NyAzLjQxNWwtMS45OTItMS45OTJhLjkyMi45MjIgMCAwMC0uMDE4LS4wMThsLTYuOTktNi45OTF6TTMuMjM4IDguMTg3YTEgMSAwIDAwLTEuOTMzLS41MTZjLS44IDMtLjAyNSA2LjMzNiAyLjMzMSA4LjY5M2ExIDEgMCAwMDEuNDE0LTEuNDE1IDYuOTk3IDYuOTk3IDAgMDEtMS44MTItNi43NjJ6TTcuNCAxMS41YTEgMSAwIDEwLTEuNzMgMWMuMjE0LjM3MS40OC43Mi43OTUgMS4wMzVhMSAxIDAgMDAxLjQxNC0xLjQxNGMtLjE5MS0uMTkxLS4zNS0uNC0uNDc4LS42MjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVN0YXR1c09ubGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUuMDUgMy42MzZhMSAxIDAgMDEwIDEuNDE0IDcgNyAwIDAwMCA5LjkgMSAxIDAgMTEtMS40MTQgMS40MTQgOSA5IDAgMDEwLTEyLjcyOCAxIDEgMCAwMTEuNDE0IDB6bTkuOSAwYTEgMSAwIDAxMS40MTQgMCA5IDkgMCAwMTAgMTIuNzI4IDEgMSAwIDExLTEuNDE0LTEuNDE0IDcgNyAwIDAwMC05LjkgMSAxIDAgMDEwLTEuNDE0ek03Ljg3OSA2LjQ2NGExIDEgMCAwMTAgMS40MTQgMyAzIDAgMDAwIDQuMjQzIDEgMSAwIDExLTEuNDE1IDEuNDE0IDUgNSAwIDAxMC03LjA3IDEgMSAwIDAxMS40MTUgMHptNC4yNDIgMGExIDEgMCAwMTEuNDE1IDAgNSA1IDAgMDEwIDcuMDcyIDEgMSAwIDAxLTEuNDE1LTEuNDE1IDMgMyAwIDAwMC00LjI0MiAxIDEgMCAwMTAtMS40MTV6TTEwIDlhMSAxIDAgMDExIDF2LjAxYTEgMSAwIDExLTIgMFYxMGExIDEgMCAwMTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVN0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2ek04IDdhMSAxIDAgMDAtMSAxdjRhMSAxIDAgMDAxIDFoNGExIDEgMCAwMDEtMVY4YTEgMSAwIDAwLTEtMUg4elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU3VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMmExIDEgMCAwMTEgMXYxYTEgMSAwIDExLTIgMFYzYTEgMSAwIDAxMS0xem00IDhhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwem0tLjQ2NCA0Ljk1bC43MDcuNzA3YTEgMSAwIDAwMS40MTQtMS40MTRsLS43MDctLjcwN2ExIDEgMCAwMC0xLjQxNCAxLjQxNHptMi4xMi0xMC42MDdhMSAxIDAgMDEwIDEuNDE0bC0uNzA2LjcwN2ExIDEgMCAxMS0xLjQxNC0xLjQxNGwuNzA3LS43MDdhMSAxIDAgMDExLjQxNCAwek0xNyAxMWExIDEgMCAxMDAtMmgtMWExIDEgMCAxMDAgMmgxem0tNyA0YTEgMSAwIDAxMSAxdjFhMSAxIDAgMTEtMiAwdi0xYTEgMSAwIDAxMS0xek01LjA1IDYuNDY0QTEgMSAwIDEwNi40NjUgNS4wNWwtLjcwOC0uNzA3YTEgMSAwIDAwLTEuNDE0IDEuNDE0bC43MDcuNzA3em0xLjQxNCA4LjQ4NmwtLjcwNy43MDdhMSAxIDAgMDEtMS40MTQtMS40MTRsLjcwNy0uNzA3YTEgMSAwIDAxMS40MTQgMS40MTR6TTQgMTFhMSAxIDAgMTAwLTJIM2ExIDEgMCAwMDAgMmgxelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpU3VwcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDEwYTggOCAwIDExLTE2IDAgOCA4IDAgMDExNiAwem0tMiAwYzAgLjk5My0uMjQxIDEuOTI5LS42NjggMi43NTRsLTEuNTI0LTEuNTI1YTMuOTk3IDMuOTk3IDAgMDAuMDc4LTIuMTgzbDEuNTYyLTEuNTYyQzE1LjgwMiA4LjI0OSAxNiA5LjEgMTYgMTB6bS01LjE2NSAzLjkxM2wxLjU4IDEuNThBNS45OCA1Ljk4IDAgMDExMCAxNmE1Ljk3NiA1Ljk3NiAwIDAxLTIuNTE2LS41NTJsMS41NjItMS41NjJhNC4wMDYgNC4wMDYgMCAwMDEuNzg5LjAyN3ptLTQuNjc3LTIuNzk2YTQuMDAyIDQuMDAyIDAgMDEtLjA0MS0yLjA4bC0uMDguMDgtMS41My0xLjUzM0E1Ljk4IDUuOTggMCAwMDQgMTBjMCAuOTU0LjIyMyAxLjg1Ni42MTkgMi42NTdsMS41NC0xLjU0em0xLjA4OC02LjQ1QTUuOTc0IDUuOTc0IDAgMDExMCA0Yy45NTQgMCAxLjg1Ni4yMjMgMi42NTcuNjE5bC0xLjU0IDEuNTRhNC4wMDIgNC4wMDIgMCAwMC0yLjM0Ni4wMzNMNy4yNDYgNC42Njh6TTEyIDEwYTIgMiAwIDExLTQgMCAyIDIgMCAwMTQgMHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVN3aXRjaEhvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNWExIDEgMCAxMDAgMmg1LjU4NmwtMS4yOTMgMS4yOTNhMSAxIDAgMDAxLjQxNCAxLjQxNGwzLTNhMSAxIDAgMDAwLTEuNDE0bC0zLTNhMSAxIDAgMTAtMS40MTQgMS40MTRMMTMuNTg2IDVIOHpNMTIgMTVhMSAxIDAgMTAwLTJINi40MTRsMS4yOTMtMS4yOTNhMSAxIDAgMTAtMS40MTQtMS40MTRsLTMgM2ExIDEgMCAwMDAgMS40MTRsMyAzYTEgMSAwIDAwMS40MTQtMS40MTRMNi40MTQgMTVIMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVN3aXRjaFZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEyYTEgMSAwIDEwMiAwVjYuNDE0bDEuMjkzIDEuMjkzYTEgMSAwIDAwMS40MTQtMS40MTRsLTMtM2ExIDEgMCAwMC0xLjQxNCAwbC0zIDNhMSAxIDAgMDAxLjQxNCAxLjQxNEw1IDYuNDE0VjEyek0xNSA4YTEgMSAwIDEwLTIgMHY1LjU4NmwtMS4yOTMtMS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMyAzYTEgMSAwIDAwMS40MTQgMGwzLTNhMSAxIDAgMDAtMS40MTQtMS40MTRMMTUgMTMuNTg2Vjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVRhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNSA0YTMgMyAwIDAwLTMgM3Y2YTMgMyAwIDAwMyAzaDEwYTMgMyAwIDAwMy0zVjdhMyAzIDAgMDAtMy0zSDV6bS0xIDl2LTFoNXYySDVhMSAxIDAgMDEtMS0xem03IDFoNGExIDEgMCAwMDEtMXYtMWgtNXYyem0wLTRoNVY4aC01djJ6TTkgOEg0djJoNVY4elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTcuNzA3IDkuMjkzYTEgMSAwIDAxMCAxLjQxNGwtNyA3YTEgMSAwIDAxLTEuNDE0IDBsLTctN0EuOTk3Ljk5NyAwIDAxMiAxMFY1YTMgMyAwIDAxMy0zaDVjLjI1NiAwIC41MTIuMDk4LjcwNy4yOTNsNyA3ek01IDZhMSAxIDAgMTAwLTIgMSAxIDAgMDAwIDJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlUZW1wbGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA0YTEgMSAwIDAxMS0xaDEyYTEgMSAwIDAxMSAxdjJhMSAxIDAgMDEtMSAxSDRhMSAxIDAgMDEtMS0xVjR6TTMgMTBhMSAxIDAgMDExLTFoNmExIDEgMCAwMTEgMXY2YTEgMSAwIDAxLTEgMUg0YTEgMSAwIDAxLTEtMXYtNnpNMTQgOWExIDEgMCAwMC0xIDF2NmExIDEgMCAwMDEgMWgyYTEgMSAwIDAwMS0xdi02YTEgMSAwIDAwLTEtMWgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVGVybWluYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDVhMiAyIDAgMDEyLTJoMTJhMiAyIDAgMDEyIDJ2MTBhMiAyIDAgMDEtMiAySDRhMiAyIDAgMDEtMi0yVjV6bTMuMjkzIDEuMjkzYTEgMSAwIDAxMS40MTQgMGwzIDNhMSAxIDAgMDEwIDEuNDE0bC0zIDNhMSAxIDAgMDEtMS40MTQtMS40MTRMNy41ODYgMTAgNS4yOTMgNy43MDdhMSAxIDAgMDEwLTEuNDE0ek0xMSAxMmExIDEgMCAxMDAgMmgzYTEgMSAwIDEwMC0yaC0zelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVGh1bWJEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5LjVhMS41IDEuNSAwIDExLTMgMHYtNmExLjUgMS41IDAgMDEzIDB2NnpNMTQgOS42Njd2LTUuNDNhMiAyIDAgMDAtMS4xMDUtMS43OWwtLjA1LS4wMjVBNCA0IDAgMDAxMS4wNTUgMkg1LjY0YTIgMiAwIDAwLTEuOTYyIDEuNjA4bC0xLjIgNkEyIDIgMCAwMDQuNDQgMTJIOHY0YTIgMiAwIDAwMiAyIDEgMSAwIDAwMS0xdi0uNjY3YTQgNCAwIDAxLjgtMi40bDEuNC0xLjg2NmE0IDQgMCAwMC44LTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVGh1bWJVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxMC41YTEuNSAxLjUgMCAxMTMgMHY2YTEuNSAxLjUgMCAwMS0zIDB2LTZ6TTYgMTAuMzMzdjUuNDNhMiAyIDAgMDAxLjEwNiAxLjc5bC4wNS4wMjVBNCA0IDAgMDA4Ljk0MyAxOGg1LjQxNmEyIDIgMCAwMDEuOTYyLTEuNjA4bDEuMi02QTIgMiAwIDAwMTUuNTYgOEgxMlY0YTIgMiAwIDAwLTItMiAxIDEgMCAwMC0xIDF2LjY2N2E0IDQgMCAwMS0uOCAyLjRMNi44IDcuOTMzYTQgNCAwIDAwLS44IDIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVGlja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDZhMiAyIDAgMDEyLTJoMTJhMiAyIDAgMDEyIDJ2MmEyIDIgMCAxMDAgNHYyYTIgMiAwIDAxLTIgMkg0YTIgMiAwIDAxLTItMnYtMmEyIDIgMCAxMDAtNFY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlUcmFuc2xhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03IDJhMSAxIDAgMDExIDF2MWgzYTEgMSAwIDExMCAySDkuNTc4YTE4Ljg3IDE4Ljg3IDAgMDEtMS43MjQgNC43OGMuMjkuMzU0LjU5Ni42OTYuOTE0IDEuMDI2YTEgMSAwIDExLTEuNDQgMS4zODljLS4xODgtLjE5Ni0uMzczLS4zOTYtLjU1NC0uNmExOS4wOTggMTkuMDk4IDAgMDEtMy4xMDcgMy41NjcgMSAxIDAgMDEtMS4zMzQtMS40OSAxNy4wODcgMTcuMDg3IDAgMDAzLjEzLTMuNzMzIDE4Ljk5MiAxOC45OTIgMCAwMS0xLjQ4Ny0yLjQ5NCAxIDEgMCAxMTEuNzktLjg5Yy4yMzQuNDcuNDg5LjkyOC43NjQgMS4zNzIuNDE3LS45MzQuNzUyLTEuOTEzLjk5Ny0yLjkyN0gzYTEgMSAwIDExMC0yaDNWM2ExIDEgMCAwMTEtMXptNiA2YTEgMSAwIDAxLjg5NC41NTNsMi45OTEgNS45ODJhLjg2OS44NjkgMCAwMS4wMi4wMzdsLjk5IDEuOThhMSAxIDAgMTEtMS43OS44OTVMMTUuMzgzIDE2aC00Ljc2NGwtLjcyNCAxLjQ0N2ExIDEgMCAxMS0xLjc4OC0uODk0bC45OS0xLjk4LjAxOS0uMDM4IDIuOTktNS45ODJBMSAxIDAgMDExMyA4em0tMS4zODIgNmgyLjc2NEwxMyAxMS4yMzYgMTEuNjE4IDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVHJhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk05IDJhMSAxIDAgMDAtLjg5NC41NTNMNy4zODIgNEg0YTEgMSAwIDAwMCAydjEwYTIgMiAwIDAwMiAyaDhhMiAyIDAgMDAyLTJWNmExIDEgMCAxMDAtMmgtMy4zODJsLS43MjQtMS40NDdBMSAxIDAgMDAxMSAySDl6TTcgOGExIDEgMCAwMTIgMHY2YTEgMSAwIDExLTIgMFY4em01LTFhMSAxIDAgMDAtMSAxdjZhMSAxIDAgMTAyIDBWOGExIDEgMCAwMC0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlUcmVuZGluZ0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMiAxM2ExIDEgMCAxMDAgMmg1YTEgMSAwIDAwMS0xVjlhMSAxIDAgMTAtMiAwdjIuNTg2bC00LjI5My00LjI5M2ExIDEgMCAwMC0xLjQxNCAwTDggOS41ODYgMy43MDcgNS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsNSA1YTEgMSAwIDAwMS40MTQgMEwxMSA5LjQxNCAxNC41ODYgMTNIMTJ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlUcmVuZGluZ1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTIgN2ExIDEgMCAxMTAtMmg1YTEgMSAwIDAxMSAxdjVhMSAxIDAgMTEtMiAwVjguNDE0bC00LjI5MyA0LjI5M2ExIDEgMCAwMS0xLjQxNCAwTDggMTAuNDE0bC00LjI5MyA0LjI5M2ExIDEgMCAwMS0xLjQxNC0xLjQxNGw1LTVhMSAxIDAgMDExLjQxNCAwTDExIDEwLjU4NiAxNC41ODYgN0gxMnpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVRydWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE2LjVhMS41IDEuNSAwIDExLTMgMCAxLjUgMS41IDAgMDEzIDB6TTE1IDE2LjVhMS41IDEuNSAwIDExLTMgMCAxLjUgMS41IDAgMDEzIDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNGExIDEgMCAwMC0xIDF2MTBhMSAxIDAgMDAxIDFoMS4wNWEyLjUgMi41IDAgMDE0LjkgMEgxMGExIDEgMCAwMDEtMVY1YTEgMSAwIDAwLTEtMUgzek0xNCA3YTEgMSAwIDAwLTEgMXY2LjA1QTIuNSAyLjUgMCAwMTE1Ljk1IDE2SDE3YTEgMSAwIDAwMS0xdi01YTEgMSAwIDAwLS4yOTMtLjcwN2wtMi0yQTEgMSAwIDAwMTUgN2gtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMyAxN2ExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXpNNi4yOTMgNi43MDdhMSAxIDAgMDEwLTEuNDE0bDMtM2ExIDEgMCAwMTEuNDE0IDBsMyAzYTEgMSAwIDAxLTEuNDE0IDEuNDE0TDExIDUuNDE0VjEzYTEgMSAwIDExLTIgMFY1LjQxNEw3LjcwNyA2LjcwN2ExIDEgMCAwMS0xLjQxNCAwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVXNlckFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA5YTMgMyAwIDEwMC02IDMgMyAwIDAwMCA2ek04IDExYTYgNiAwIDAxNiA2SDJhNiA2IDAgMDE2LTZ6TTE2IDdhMSAxIDAgMTAtMiAwdjFoLTFhMSAxIDAgMTAwIDJoMXYxYTEgMSAwIDEwMiAwdi0xaDFhMSAxIDAgMTAwLTJoLTFWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVXNlckNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDEwYTggOCAwIDExLTE2IDAgOCA4IDAgMDExNiAwem0tNi0zYTIgMiAwIDExLTQgMCAyIDIgMCAwMTQgMHptLTIgNGE1IDUgMCAwMC00LjU0NiAyLjkxNkE1Ljk4NiA1Ljk4NiAwIDAwMTAgMTZhNS45ODYgNS45ODYgMCAwMDQuNTQ2LTIuMDg0QTUgNSAwIDAwMTAgMTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlVc2VyR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDZhMyAzIDAgMTEtNiAwIDMgMyAwIDAxNiAwek0xOCA4YTIgMiAwIDExLTQgMCAyIDIgMCAwMTQgMHpNMTQgMTVhNCA0IDAgMDAtOCAwdjNoOHYtM3pNNiA4YTIgMiAwIDExLTQgMCAyIDIgMCAwMTQgMHpNMTYgMTh2LTNhNS45NzIgNS45NzIgMCAwMC0uNzUtMi45MDZBMy4wMDUgMy4wMDUgMCAwMTE5IDE1djNoLTN6TTQuNzUgMTIuMDk0QTUuOTczIDUuOTczIDAgMDA0IDE1djNIMXYtM2EzIDMgMCAwMTMuNzUtMi45MDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVVzZXJSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDZhMyAzIDAgMTEtNiAwIDMgMyAwIDAxNiAwek0xNCAxN2E2IDYgMCAwMC0xMiAwaDEyek0xMyA4YTEgMSAwIDEwMCAyaDRhMSAxIDAgMTAwLTJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCA5YTMgMyAwIDEwMC02IDMgMyAwIDAwMCA2em0tNyA5YTcgNyAwIDExMTQgMEgzelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVXNlcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNmEzIDMgMCAxMS02IDAgMyAzIDAgMDE2IDB6TTE3IDZhMyAzIDAgMTEtNiAwIDMgMyAwIDAxNiAwek0xMi45MyAxN2MuMDQ2LS4zMjcuMDctLjY2LjA3LTFhNi45NyA2Ljk3IDAgMDAtMS41LTQuMzNBNSA1IDAgMDExOSAxNnYxaC02LjA3ek02IDExYTUgNSAwIDAxNSA1djFIMXYtMWE1IDUgMCAwMTUtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVmFyaWFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00LjY0OSAzLjA4NEExIDEgMCAwMTUuMTYzIDQuNCAxMy45NSAxMy45NSAwIDAwNCAxMGMwIDEuOTkzLjQxNiAzLjg4NiAxLjE2NCA1LjZhMSAxIDAgMDEtMS44MzIuOEExNS45NSAxNS45NSAwIDAxMiAxMGMwLTIuMjc0LjQ3NS00LjQ0IDEuMzMyLTYuNGExIDEgMCAwMTEuMzE3LS41MTZ6TTEyLjk2IDdhMyAzIDAgMDAtMi4zNDIgMS4xMjZsLS4zMjguNDEtLjExMS0uMjc5QTIgMiAwIDAwOC4zMjMgN0g4YTEgMSAwIDAwMCAyaC4zMjNsLjUzMiAxLjMzLTEuMDM1IDEuMjk1YTEgMSAwIDAxLS43ODEuMzc1SDdhMSAxIDAgMTAwIDJoLjAzOWEzIDMgMCAwMDIuMzQyLTEuMTI2bC4zMjgtLjQxLjExMS4yNzlBMiAyIDAgMDAxMS42NzcgMTRIMTJhMSAxIDAgMTAwLTJoLS4zMjNsLS41MzItMS4zMyAxLjAzNS0xLjI5NUExIDEgMCAwMTEyLjk2MSA5SDEzYTEgMSAwIDEwMC0yaC0uMDM5em0xLjg3NC0yLjZhMSAxIDAgMDExLjgzMy0uOEExNS45NSAxNS45NSAwIDAxMTggMTBjMCAyLjI3NC0uNDc1IDQuNDQtMS4zMzIgNi40YTEgMSAwIDExLTEuODMyLS44QTEzLjk0OSAxMy45NDkgMCAwMDE2IDEwYzAtMS45OTMtLjQxNi0zLjg4Ni0xLjE2NS01LjZ6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlWaWRlb0NhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA2YTIgMiAwIDAxMi0yaDZhMiAyIDAgMDEyIDJ2OGEyIDIgMCAwMS0yIDJINGEyIDIgMCAwMS0yLTJWNnpNMTQuNTUzIDcuMTA2QTEgMSAwIDAwMTQgOHY0YTEgMSAwIDAwLjU1My44OTRsMiAxQTEgMSAwIDAwMTggMTNWN2ExIDEgMCAwMC0xLjQ0Ny0uODk0bC0yIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVZpZXdCb2FyZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNGExIDEgMCAwMTEtMWgyYTEgMSAwIDAxMSAxdjEyYTEgMSAwIDAxLTEgMUgzYTEgMSAwIDAxLTEtMVY0ek04IDRhMSAxIDAgMDExLTFoMmExIDEgMCAwMTEgMXYxMmExIDEgMCAwMS0xIDFIOWExIDEgMCAwMS0xLTFWNHpNMTUgM2ExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMmExIDEgMCAwMDEtMVY0YTEgMSAwIDAwLTEtMWgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVmlld0dyaWRBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgM2EyIDIgMCAwMC0yIDJ2MmEyIDIgMCAwMDIgMmgyYTIgMiAwIDAwMi0yVjVhMiAyIDAgMDAtMi0ySDV6TTUgMTFhMiAyIDAgMDAtMiAydjJhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMnYtMmEyIDIgMCAwMC0yLTJINXpNMTEgNWEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAyaC0yYTIgMiAwIDAxLTItMlY1ek0xNCAxMWExIDEgMCAwMTEgMXYxaDFhMSAxIDAgMTEwIDJoLTF2MWExIDEgMCAxMS0yIDB2LTFoLTFhMSAxIDAgMTEwLTJoMXYtMWExIDEgMCAwMTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVmlld0dyaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgM2EyIDIgMCAwMC0yIDJ2MmEyIDIgMCAwMDIgMmgyYTIgMiAwIDAwMi0yVjVhMiAyIDAgMDAtMi0ySDV6TTUgMTFhMiAyIDAgMDAtMiAydjJhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMnYtMmEyIDIgMCAwMC0yLTJINXpNMTEgNWEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAyaC0yYTIgMiAwIDAxLTItMlY1ek0xMSAxM2EyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAyaC0yYTIgMiAwIDAxLTItMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpVmlld0xpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zIDRhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6bTAgNGExIDEgMCAwMTEtMWgxMmExIDEgMCAxMTAgMkg0YTEgMSAwIDAxLTEtMXptMCA0YTEgMSAwIDAxMS0xaDEyYTEgMSAwIDExMCAySDRhMSAxIDAgMDEtMS0xem0wIDRhMSAxIDAgMDExLTFoMTJhMSAxIDAgMTEwIDJINGExIDEgMCAwMS0xLTF6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlWb2x1bWVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk05LjM4MyAzLjA3NkExIDEgMCAwMTEwIDR2MTJhMSAxIDAgMDEtMS43MDcuNzA3TDQuNTg2IDEzSDJhMSAxIDAgMDEtMS0xVjhhMSAxIDAgMDExLTFoMi41ODZsMy43MDctMy43MDdhMSAxIDAgMDExLjA5LS4yMTd6TTEyLjI5MyA3LjI5M2ExIDEgMCAwMTEuNDE0IDBMMTUgOC41ODZsMS4yOTMtMS4yOTNhMSAxIDAgMTExLjQxNCAxLjQxNEwxNi40MTQgMTBsMS4yOTMgMS4yOTNhMSAxIDAgMDEtMS40MTQgMS40MTRMMTUgMTEuNDE0bC0xLjI5MyAxLjI5M2ExIDEgMCAwMS0xLjQxNC0xLjQxNEwxMy41ODYgMTBsLTEuMjkzLTEuMjkzYTEgMSAwIDAxMC0xLjQxNHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVZvbHVtZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOS4zODMgMy4wNzZBMSAxIDAgMDExMCA0djEyYTEgMSAwIDAxLTEuNzA3LjcwN0w0LjU4NiAxM0gyYTEgMSAwIDAxLTEtMVY4YTEgMSAwIDAxMS0xaDIuNTg2bDMuNzA3LTMuNzA3YTEgMSAwIDAxMS4wOS0uMjE3ek0xNC42NTcgMi45MjlhMSAxIDAgMDExLjQxNCAwQTkuOTcyIDkuOTcyIDAgMDExOSAxMGE5Ljk3MiA5Ljk3MiAwIDAxLTIuOTI5IDcuMDcxIDEgMSAwIDAxLTEuNDE0LTEuNDE0QTcuOTcxIDcuOTcxIDAgMDAxNyAxMGMwLTIuMjEtLjg5NC00LjIwOC0yLjM0My01LjY1N2ExIDEgMCAwMTAtMS40MTR6bS0yLjgyOSAyLjgyOGExIDEgMCAwMTEuNDE1IDBBNS45ODMgNS45ODMgMCAwMTE1IDEwYTUuOTg0IDUuOTg0IDAgMDEtMS43NTcgNC4yNDMgMSAxIDAgMDEtMS40MTUtMS40MTVBMy45ODQgMy45ODQgMCAwMDEzIDEwYTMuOTgzIDMuOTgzIDAgMDAtMS4xNzItMi44MjggMSAxIDAgMDEwLTEuNDE1elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpV2lmaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjAgMjBcIixcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE3Ljc3OCA4LjIyMmMtNC4yOTYtNC4yOTYtMTEuMjYtNC4yOTYtMTUuNTU2IDBBMSAxIDAgMDEuODA4IDYuODA4YzUuMDc2LTUuMDc3IDEzLjMwOC01LjA3NyAxOC4zODQgMGExIDEgMCAwMS0xLjQxNCAxLjQxNHpNMTQuOTUgMTEuMDVhNyA3IDAgMDAtOS45IDAgMSAxIDAgMDEtMS40MTQtMS40MTQgOSA5IDAgMDExMi43MjggMCAxIDEgMCAwMS0xLjQxNCAxLjQxNHpNMTIuMTIgMTMuODhhMyAzIDAgMDAtNC4yNDIgMCAxIDEgMCAwMS0xLjQxNS0xLjQxNSA1IDUgMCAwMTcuMDcyIDAgMSAxIDAgMDEtMS40MTUgMS40MTV6TTkgMTZhMSAxIDAgMDExLTFoLjAxYTEgMSAwIDExMCAySDEwYTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVhDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2ek04LjcwNyA3LjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNEw4LjU4NiAxMGwtMS4yOTMgMS4yOTNhMSAxIDAgMTAxLjQxNCAxLjQxNEwxMCAxMS40MTRsMS4yOTMgMS4yOTNhMSAxIDAgMDAxLjQxNC0xLjQxNEwxMS40MTQgMTBsMS4yOTMtMS4yOTNhMSAxIDAgMDAtMS40MTQtMS40MTRMMTAgOC41ODYgOC43MDcgNy4yOTN6XCIsXCJjbGlwUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlYIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNC4yOTMgNC4yOTNhMSAxIDAgMDExLjQxNCAwTDEwIDguNTg2bDQuMjkzLTQuMjkzYTEgMSAwIDExMS40MTQgMS40MTRMMTEuNDE0IDEwbDQuMjkzIDQuMjkzYTEgMSAwIDAxLTEuNDE0IDEuNDE0TDEwIDExLjQxNGwtNC4yOTMgNC4yOTNhMSAxIDAgMDEtMS40MTQtMS40MTRMOC41ODYgMTAgNC4yOTMgNS43MDdhMSAxIDAgMDEwLTEuNDE0elwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpWm9vbUluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyMCAyMFwiLFwiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDhhMSAxIDAgMDExLTFoMVY2YTEgMSAwIDAxMiAwdjFoMWExIDEgMCAxMTAgMkg5djFhMSAxIDAgMTEtMiAwVjlINmExIDEgMCAwMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDhhNiA2IDAgMTExMC44OSAzLjQ3Nmw0LjgxNyA0LjgxN2ExIDEgMCAwMS0xLjQxNCAxLjQxNGwtNC44MTYtNC44MTZBNiA2IDAgMDEyIDh6bTYtNGE0IDQgMCAxMDAgOCA0IDQgMCAwMDAtOHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaVpvb21PdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDIwIDIwXCIsXCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04IDRhNCA0IDAgMTAwIDggNCA0IDAgMDAwLTh6TTIgOGE2IDYgMCAxMTEwLjg5IDMuNDc2bDQuODE3IDQuODE3YTEgMSAwIDAxLTEuNDE0IDEuNDE0bC00LjgxNi00LjgxNkE2IDYgMCAwMTIgOHpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01IDhhMSAxIDAgMDExLTFoNGExIDEgMCAxMTAgMkg2YTEgMSAwIDAxLTEtMXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBY2FkZW1pY0NhcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTRsOS01LTktNS05IDUgOSA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNGw2LjE2LTMuNDIyYTEyLjA4MyAxMi4wODMgMCAwMS42NjUgNi40NzlBMTEuOTUyIDExLjk1MiAwIDAwMTIgMjAuMDU1YTExLjk1MiAxMS45NTIgMCAwMC02LjgyNC0yLjk5OCAxMi4wNzggMTIuMDc4IDAgMDEuNjY1LTYuNDc5TDEyIDE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiAxNGw5LTUtOS01LTkgNSA5IDV6bTAgMGw2LjE2LTMuNDIyYTEyLjA4MyAxMi4wODMgMCAwMS42NjUgNi40NzlBMTEuOTUyIDExLjk1MiAwIDAwMTIgMjAuMDU1YTExLjk1MiAxMS45NTIgMCAwMC02LjgyNC0yLjk5OCAxMi4wNzggMTIuMDc4IDAgMDEuNjY1LTYuNDc5TDEyIDE0em0tNCA2di03LjVsNC0yLjIyMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQWRqdXN0bWVudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDZWNG0wIDJhMiAyIDAgMTAwIDRtMC00YTIgMiAwIDExMCA0bS02IDhhMiAyIDAgMTAwLTRtMCA0YTIgMiAwIDExMC00bTAgNHYybTAtNlY0bTYgNnYxMG02LTJhMiAyIDAgMTAwLTRtMCA0YTIgMiAwIDExMC00bTAgNHYybTAtNlY0XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBbm5vdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDhoMTBNNyAxMmg0bTEgOGwtNC00SDVhMiAyIDAgMDEtMi0yVjZhMiAyIDAgMDEyLTJoMTRhMiAyIDAgMDEyIDJ2OGEyIDIgMCAwMS0yIDJoLTNsLTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTUgOGgxNE01IDhhMiAyIDAgMTEwLTRoMTRhMiAyIDAgMTEwIDRNNSA4djEwYTIgMiAwIDAwMiAyaDEwYTIgMiAwIDAwMi0yVjhtLTkgNGg0XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd0NpcmNsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDEzbC0zIDNtMCAwbC0zLTNtMyAzVjhtMCAxM2E5IDkgMCAxMTAtMTggOSA5IDAgMDEwIDE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dDaXJjbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMSAxNWwtMy0zbTAgMGwzLTNtLTMgM2g4TTMgMTJhOSA5IDAgMTExOCAwIDkgOSAwIDAxLTE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd0NpcmNsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMyA5bDMgM20wIDBsLTMgM20zLTNIOG0xMyAwYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dDaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxMWwzLTNtMCAwbDMgM20tMy0zdjhtMC0xM2E5IDkgMCAxMTAgMTggOSA5IDAgMDEwLTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xOSAxNGwtNyA3bTAgMGwtNy03bTcgN1YzXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEwIDE5bC03LTdtMCAwbDctN20tNyA3aDE4XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd05hcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE2IDE3bC00IDRtMCAwbC00LTRtNCA0VjNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFycm93TmFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNyAxNmwtNC00bTAgMGw0LTRtLTQgNGgxOFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dOYXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcgOGw0IDRtMCAwbC00IDRtNC00SDNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFycm93TmFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggN2w0LTRtMCAwbDQgNG0tNC00djE4XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNCA1bDcgN20wIDBsLTcgN203LTdIM1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dTbURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE3IDEzbC01IDVtMCAwbC01LTVtNSA1VjZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFycm93U21MZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMSAxN2wtNS01bTAgMGw1LTVtLTUgNWgxMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dTbVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMyA3bDUgNW0wIDBsLTUgNW01LTVINlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dTbVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDExbDUtNW0wIDBsNSA1bS01LTV2MTJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTUgMTBsNy03bTAgMGw3IDdtLTctN3YxOFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQXJyb3dzRXhwYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00IDhWNG0wIDBoNE00IDRsNSA1bTExLTFWNG0wIDBoLTRtNCAwbC01IDVNNCAxNnY0bTAgMGg0bS00IDBsNS01bTExIDVsLTUtNW01IDV2LTRtMCA0aC00XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVBdFN5bWJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTYgMTJhNCA0IDAgMTAtOCAwIDQgNCAwIDAwOCAwem0wIDB2MS41YTIuNSAyLjUgMCAwMDUgMFYxMmE5IDkgMCAxMC05IDltNC41LTEuMjA2YTguOTU5IDguOTU5IDAgMDEtNC41IDEuMjA3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVCYWNrc3BhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDE0bDItMm0wIDBsMi0ybS0yIDJsLTItMm0yIDJsMiAyTTMgMTJsNi40MTQgNi40MTRhMiAyIDAgMDAxLjQxNC41ODZIMTlhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJoLTguMTcyYTIgMiAwIDAwLTEuNDE0LjU4NkwzIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQmFkZ2VDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxMmwyIDIgNC00TTcuODM1IDQuNjk3YTMuNDIgMy40MiAwIDAwMS45NDYtLjgwNiAzLjQyIDMuNDIgMCAwMTQuNDM4IDAgMy40MiAzLjQyIDAgMDAxLjk0Ni44MDYgMy40MiAzLjQyIDAgMDEzLjEzOCAzLjEzOCAzLjQyIDMuNDIgMCAwMC44MDYgMS45NDYgMy40MiAzLjQyIDAgMDEwIDQuNDM4IDMuNDIgMy40MiAwIDAwLS44MDYgMS45NDYgMy40MiAzLjQyIDAgMDEtMy4xMzggMy4xMzggMy40MiAzLjQyIDAgMDAtMS45NDYuODA2IDMuNDIgMy40MiAwIDAxLTQuNDM4IDAgMy40MiAzLjQyIDAgMDAtMS45NDYtLjgwNiAzLjQyIDMuNDIgMCAwMS0zLjEzOC0zLjEzOCAzLjQyIDMuNDIgMCAwMC0uODA2LTEuOTQ2IDMuNDIgMy40MiAwIDAxMC00LjQzOCAzLjQyIDMuNDIgMCAwMC44MDYtMS45NDYgMy40MiAzLjQyIDAgMDEzLjEzOC0zLjEzOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUJhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTguMzY0IDE4LjM2NEE5IDkgMCAwMDUuNjM2IDUuNjM2bTEyLjcyOCAxMi43MjhBOSA5IDAgMDE1LjYzNiA1LjYzNm0xMi43MjggMTIuNzI4TDUuNjM2IDUuNjM2XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVCZWFrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE5LjQyOCAxNS40MjhhMiAyIDAgMDAtMS4wMjItLjU0N2wtMi4zODctLjQ3N2E2IDYgMCAwMC0zLjg2LjUxN2wtLjMxOC4xNThhNiA2IDAgMDEtMy44Ni41MTdMNi4wNSAxNS4yMWEyIDIgMCAwMC0xLjgwNi41NDdNOCA0aDhsLTEgMXY1LjE3MmEyIDIgMCAwMC41ODYgMS40MTRsNSA1YzEuMjYgMS4yNi4zNjcgMy40MTQtMS40MTUgMy40MTRINC44MjhjLTEuNzgyIDAtMi42NzQtMi4xNTQtMS40MTQtMy40MTRsNS01QTIgMiAwIDAwOSAxMC4xNzJWNUw4IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVCZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNSAxN2g1bC0xLjQwNS0xLjQwNUEyLjAzMiAyLjAzMiAwIDAxMTggMTQuMTU4VjExYTYuMDAyIDYuMDAyIDAgMDAtNC01LjY1OVY1YTIgMiAwIDEwLTQgMHYuMzQxQzcuNjcgNi4xNjUgNiA4LjM4OCA2IDExdjMuMTU5YzAgLjUzOC0uMjE0IDEuMDU1LS41OTUgMS40MzZMNCAxN2g1bTYgMHYxYTMgMyAwIDExLTYgMHYtMW02IDBIOVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQm9va09wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDYuMjUzdjEzbTAtMTNDMTAuODMyIDUuNDc3IDkuMjQ2IDUgNy41IDVTNC4xNjggNS40NzcgMyA2LjI1M3YxM0M0LjE2OCAxOC40NzcgNS43NTQgMTggNy41IDE4czMuMzMyLjQ3NyA0LjUgMS4yNTNtMC0xM0MxMy4xNjggNS40NzcgMTQuNzU0IDUgMTYuNSA1YzEuNzQ3IDAgMy4zMzIuNDc3IDQuNSAxLjI1M3YxM0MxOS44MzIgMTguNDc3IDE4LjI0NyAxOCAxNi41IDE4Yy0xLjc0NiAwLTMuMzMyLjQ3Ny00LjUgMS4yNTNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUJvb2ttYXJrQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNiA0djEybC00LTItNCAyVjRNNiAyMGgxMmEyIDIgMCAwMDItMlY2YTIgMiAwIDAwLTItMkg2YTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUJvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk01IDVhMiAyIDAgMDEyLTJoMTBhMiAyIDAgMDEyIDJ2MTZsLTctMy41TDUgMjFWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUJyaWVmY2FzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMjEgMTMuMjU1QTIzLjkzMSAyMy45MzEgMCAwMTEyIDE1Yy0zLjE4MyAwLTYuMjItLjYyLTktMS43NDVNMTYgNlY0YTIgMiAwIDAwLTItMmgtNGEyIDIgMCAwMC0yIDJ2Mm00IDZoLjAxTTUgMjBoMTRhMiAyIDAgMDAyLTJWOGEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0yMSAxNS41NDZjLS41MjMgMC0xLjA0Ni4xNTEtMS41LjQ1NGEyLjcwNCAyLjcwNCAwIDAxLTMgMCAyLjcwNCAyLjcwNCAwIDAwLTMgMCAyLjcwNCAyLjcwNCAwIDAxLTMgMCAyLjcwNCAyLjcwNCAwIDAwLTMgMCAyLjcwNCAyLjcwNCAwIDAxLTMgMCAyLjcwMSAyLjcwMSAwIDAwLTEuNS0uNDU0TTkgNnYybTMtMnYybTMtMnYyTTkgM2guMDFNMTIgM2guMDFNMTUgM2guMDFNMjEgMjF2LTdhMiAyIDAgMDAtMi0ySDVhMiAyIDAgMDAtMiAydjdoMTh6bS0zLTl2LTJhMiAyIDAgMDAtMi0ySDhhMiAyIDAgMDAtMiAydjJoMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDYWxjdWxhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDdoNm0wIDEwdi0zbS0zIDNoLjAxTTkgMTdoLjAxTTkgMTRoLjAxTTEyIDE0aC4wMU0xNSAxMWguMDFNMTIgMTFoLjAxTTkgMTFoLjAxTTcgMjFoMTBhMiAyIDAgMDAyLTJWNWEyIDIgMCAwMC0yLTJIN2EyIDIgMCAwMC0yIDJ2MTRhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDYWxlbmRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOCA3VjNtOCA0VjNtLTkgOGgxME01IDIxaDE0YTIgMiAwIDAwMi0yVjdhMiAyIDAgMDAtMi0ySDVhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDlhMiAyIDAgMDEyLTJoLjkzYTIgMiAwIDAwMS42NjQtLjg5bC44MTItMS4yMkEyIDIgMCAwMTEwLjA3IDRoMy44NmEyIDIgMCAwMTEuNjY0Ljg5bC44MTIgMS4yMkEyIDIgMCAwMDE4LjA3IDdIMTlhMiAyIDAgMDEyIDJ2OWEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJWOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTUgMTNhMyAzIDAgMTEtNiAwIDMgMyAwIDAxNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2FzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcgOVY3YTIgMiAwIDAwLTItMkg1YTIgMiAwIDAwLTIgMnY2YTIgMiAwIDAwMiAyaDJtMiA0aDEwYTIgMiAwIDAwMi0ydi02YTIgMiAwIDAwLTItMkg5YTIgMiAwIDAwLTIgMnY2YTIgMiAwIDAwMiAyem03LTVhMiAyIDAgMTEtNCAwIDIgMiAwIDAxNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hhcnRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTl2LTZhMiAyIDAgMDAtMi0ySDVhMiAyIDAgMDAtMiAydjZhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMnptMCAwVjlhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMnYxMG0tNiAwYTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJtMCAwVjVhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMnYxNGEyIDIgMCAwMS0yIDJoLTJhMiAyIDAgMDEtMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hhcnRQaWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTExIDMuMDU1QTkuMDAxIDkuMDAxIDAgMTAyMC45NDUgMTNIMTFWMy4wNTV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIwLjQ4OCA5SDE1VjMuNTEyQTkuMDI1IDkuMDI1IDAgMDEyMC40ODggOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNoYXJ0U3F1YXJlQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNiA4djhtLTQtNXY1bS00LTJ2Mm0tMiA0aDEyYTIgMiAwIDAwMi0yVjZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hhdEFsdDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE3IDhoMmEyIDIgMCAwMTIgMnY2YTIgMiAwIDAxLTIgMmgtMnY0bC00LTRIOWExLjk5NCAxLjk5NCAwIDAxLTEuNDE0LS41ODZtMCAwTDExIDE0aDRhMiAyIDAgMDAyLTJWNmEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2NmEyIDIgMCAwMDIgMmgydjRsLjU4Ni0uNTg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hhdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOCAxMGguMDFNMTIgMTBoLjAxTTE2IDEwaC4wMU05IDE2SDVhMiAyIDAgMDEtMi0yVjZhMiAyIDAgMDEyLTJoMTRhMiAyIDAgMDEyIDJ2OGEyIDIgMCAwMS0yIDJoLTVsLTUgNXYtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNoYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggMTJoLjAxTTEyIDEyaC4wMU0xNiAxMmguMDFNMjEgMTJjMCA0LjQxOC00LjAzIDgtOSA4YTkuODYzIDkuODYzIDAgMDEtNC4yNTUtLjk0OUwzIDIwbDEuMzk1LTMuNzJDMy41MTIgMTUuMDQyIDMgMTMuNTc0IDMgMTJjMC00LjQxOCA0LjAzLTggOS04czkgMy41ODIgOSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hlY2tDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTJsMiAyIDQtNG02IDJhOSA5IDAgMTEtMTggMCA5IDkgMCAwMTE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNSAxM2w0IDRMMTkgN1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hldnJvbkRvdWJsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE5IDEzbC03IDctNy03bTE0LThsLTcgNy03LTdcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNoZXZyb25Eb3VibGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMSAxOWwtNy03IDctN204IDE0bC03LTcgNy03XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGV2cm9uRG91YmxlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEzIDVsNyA3LTcgN001IDVsNyA3LTcgN1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hldnJvbkRvdWJsZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk01IDExbDctNyA3IDdNNSAxOWw3LTcgNyA3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGV2cm9uRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTkgOWwtNyA3LTctN1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hldnJvbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDE5bC03LTcgNy03XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGV2cm9uUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgNWw3IDctNyA3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDaGV2cm9uVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTUgMTVsNy03IDcgN1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2hpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAzdjJtNi0ydjJNOSAxOXYybTYtMnYyTTUgOUgzbTIgNkgzbTE4LTZoLTJtMiA2aC0yTTcgMTloMTBhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJIN2EyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJ6TTkgOWg2djZIOVY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2xpcGJvYXJkQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgNUg3YTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMlY3YTIgMiAwIDAwLTItMmgtMk05IDVhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMk05IDVhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMm0tNiA5bDIgMiA0LTRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNsaXBib2FyZENvcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggNUg2YTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMnYtMU04IDVhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMk04IDVhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMm0wIDBoMmEyIDIgMCAwMTIgMnYzbTIgNEgxMG0wIDBsMy0zbS0zIDNsMyAzXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDbGlwYm9hcmRMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDVIN2EyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoMTBhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJoLTJNOSA1YTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJNOSA1YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJtLTMgN2gzbS0zIDRoM20tNi00aC4wMU05IDE2aC4wMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ2xpcGJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDVIN2EyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoMTBhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJoLTJNOSA1YTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJNOSA1YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiA4djRsMyAzbTYtM2E5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNsb3VkRG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTcgMTZhNCA0IDAgMDEtLjg4LTcuOTAzQTUgNSAwIDExMTUuOSA2TDE2IDZhNSA1IDAgMDExIDkuOU05IDE5bDMgM20wIDBsMy0zbS0zIDNWMTBcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNsb3VkVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDE2YTQgNCAwIDAxLS44OC03LjkwM0E1IDUgMCAxMTE1LjkgNkwxNiA2YTUgNSAwIDAxMSA5LjlNMTUgMTNsLTMtM20wIDBsLTMgM20zLTN2MTJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDE1YTQgNCAwIDAwNCA0aDlhNSA1IDAgMTAtLjEtOS45OTkgNS4wMDIgNS4wMDIgMCAxMC05Ljc4IDIuMDk2QTQuMDAxIDQuMDAxIDAgMDAzIDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTAgMjBsNC0xNm00IDRsNCA0LTQgNE02IDE2bC00LTQgNC00XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEwLjMyNSA0LjMxN2MuNDI2LTEuNzU2IDIuOTI0LTEuNzU2IDMuMzUgMGExLjcyNCAxLjcyNCAwIDAwMi41NzMgMS4wNjZjMS41NDMtLjk0IDMuMzEuODI2IDIuMzcgMi4zN2ExLjcyNCAxLjcyNCAwIDAwMS4wNjUgMi41NzJjMS43NTYuNDI2IDEuNzU2IDIuOTI0IDAgMy4zNWExLjcyNCAxLjcyNCAwIDAwLTEuMDY2IDIuNTczYy45NCAxLjU0My0uODI2IDMuMzEtMi4zNyAyLjM3YTEuNzI0IDEuNzI0IDAgMDAtMi41NzIgMS4wNjVjLS40MjYgMS43NTYtMi45MjQgMS43NTYtMy4zNSAwYTEuNzI0IDEuNzI0IDAgMDAtMi41NzMtMS4wNjZjLTEuNTQzLjk0LTMuMzEtLjgyNi0yLjM3LTIuMzdhMS43MjQgMS43MjQgMCAwMC0xLjA2NS0yLjU3MmMtMS43NTYtLjQyNi0xLjc1Ni0yLjkyNCAwLTMuMzVhMS43MjQgMS43MjQgMCAwMDEuMDY2LTIuNTczYy0uOTQtMS41NDMuODI2LTMuMzEgMi4zNy0yLjM3Ljk5Ni42MDggMi4yOTYuMDcgMi41NzItMS4wNjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDEyYTMgMyAwIDExLTYgMCAzIDMgMCAwMTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNvbGxlY3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE5IDExSDVtMTQgMGEyIDIgMCAwMTIgMnY2YTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMnYtNmEyIDIgMCAwMTItMm0xNCAwVjlhMiAyIDAgMDAtMi0yTTUgMTFWOWEyIDIgMCAwMTItMm0wIDBWNWEyIDIgMCAwMTItMmg2YTIgMiAwIDAxMiAydjJNNyA3aDEwXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDb2xvclN3YXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNyAyMWE0IDQgMCAwMS00LTRWNWEyIDIgMCAwMTItMmg0YTIgMiAwIDAxMiAydjEyYTQgNCAwIDAxLTQgNHptMCAwaDEyYTIgMiAwIDAwMi0ydi00YTIgMiAwIDAwLTItMmgtMi4zNDNNMTEgNy4zNDNsMS42NTctMS42NTdhMiAyIDAgMDEyLjgyOCAwbDIuODI5IDIuODI5YTIgMiAwIDAxMCAyLjgyOGwtOC40ODYgOC40ODVNNyAxN2guMDFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUNyZWRpdENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTMgMTBoMThNNyAxNWgxbTQgMGgxbS03IDRoMTJhMyAzIDAgMDAzLTNWOGEzIDMgMCAwMC0zLTNINmEzIDMgMCAwMC0zIDN2OGEzIDMgMCAwMDMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUN1YmVUcmFuc3BhcmVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTQgMTBsLTIgMW0wIDBsLTItMW0yIDF2Mi41TTIwIDdsLTIgMW0yLTFsLTItMW0yIDF2Mi41TTE0IDRsLTItMS0yIDFNNCA3bDItMU00IDdsMiAxTTQgN3YyLjVNMTIgMjFsLTItMW0yIDFsMi0xbS0yIDF2LTIuNU02IDE4bC0yLTF2LTIuNU0xOCAxOGwyLTF2LTIuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ3ViZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMjAgN2wtOC00LTggNG0xNiAwbC04IDRtOC00djEwbC04IDRtMC0xMEw0IDdtOCA0djEwTTQgN3YxMGw4IDRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUN1cnJlbmN5QmFuZ2xhZGVzaGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTExIDExVjlhMiAyIDAgMDAtMi0ybTIgNHY0YTIgMiAwIDEwNCAwdi0xbS00LTNIOW0yIDBoNG02IDFhOSA5IDAgMTEtMTggMCA5IDkgMCAwMTE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVDdXJyZW5jeURvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgOGMtMS42NTcgMC0zIC44OTUtMyAyczEuMzQzIDIgMyAyIDMgLjg5NSAzIDItMS4zNDMgMi0zIDJtMC04YzEuMTEgMCAyLjA4LjQwMiAyLjU5OSAxTTEyIDhWN20wIDF2OG0wIDB2MW0wLTFjLTEuMTEgMC0yLjA4LS40MDItMi41OTktMU0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUN1cnJlbmN5RXVybyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTQuMTIxIDE1LjUzNmMtMS4xNzEgMS45NTItMy4wNyAxLjk1Mi00LjI0MiAwLTEuMTcyLTEuOTUzLTEuMTcyLTUuMTE5IDAtNy4wNzIgMS4xNzEtMS45NTIgMy4wNy0xLjk1MiA0LjI0MiAwTTggMTAuNWg0bS00IDNoNG05LTEuNWE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUN1cnJlbmN5UG91bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDlhMiAyIDAgMTAtNCAwdjVhMiAyIDAgMDEtMiAyaDZtLTYtNGg0bTggMGE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUN1cnJlbmN5UnVwZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgOGg2bS01IDBhMyAzIDAgMTEwIDZIOWwzIDNtLTMtNmg2bTYgMWE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUN1cnJlbmN5WWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDhsMyA1bTAgMGwzLTVtLTMgNXY0bS0zLTVoNm0tNiAzaDZtNi0zYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lQ3Vyc29yQ2xpY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDE1bC0yIDVMOSA5bDExIDQtNSAyem0wIDBsNSA1TTcuMTg4IDIuMjM5bC43NzcgMi44OTdNNS4xMzYgNy45NjVsLTIuODk4LS43NzdNMTMuOTUgNC4wNWwtMi4xMjIgMi4xMjJtLTUuNjU3IDUuNjU2bC0yLjEyIDIuMTIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEYXRhYmFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCA3djEwYzAgMi4yMSAzLjU4MiA0IDggNHM4LTEuNzkgOC00VjdNNCA3YzAgMi4yMSAzLjU4MiA0IDggNHM4LTEuNzkgOC00TTQgN2MwLTIuMjEgMy41ODItNCA4LTRzOCAxLjc5IDggNG0wIDVjMCAyLjIxLTMuNTgyIDQtOCA0cy04LTEuNzktOC00XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEZXNrdG9wQ29tcHV0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkuNzUgMTdMOSAyMGwtMSAxaDhsLTEtMS0uNzUtM00zIDEzaDE4TTUgMTdoMTRhMiAyIDAgMDAyLTJWNWEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEZXZpY2VNb2JpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDE4aC4wMU04IDIxaDhhMiAyIDAgMDAyLTJWNWEyIDIgMCAwMC0yLTJIOGEyIDIgMCAwMC0yIDJ2MTRhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEZXZpY2VUYWJsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDE4aC4wMU03IDIxaDEwYTIgMiAwIDAwMi0yVjVhMiAyIDAgMDAtMi0ySDdhMiAyIDAgMDAtMiAydjE0YTIgMiAwIDAwMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRG9jdW1lbnRBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTNoNm0tMy0zdjZtNSA1SDdhMiAyIDAgMDEtMi0yVjVhMiAyIDAgMDEyLTJoNS41ODZhMSAxIDAgMDEuNzA3LjI5M2w1LjQxNCA1LjQxNGExIDEgMCAwMS4yOTMuNzA3VjE5YTIgMiAwIDAxLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZURvY3VtZW50RG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDEwdjZtMCAwbC0zLTNtMyAzbDMtM20yIDhIN2EyIDIgMCAwMS0yLTJWNWEyIDIgMCAwMTItMmg1LjU4NmExIDEgMCAwMS43MDcuMjkzbDUuNDE0IDUuNDE0YTEgMSAwIDAxLjI5My43MDdWMTlhMiAyIDAgMDEtMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRG9jdW1lbnREdXBsaWNhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggN3Y4YTIgMiAwIDAwMiAyaDZNOCA3VjVhMiAyIDAgMDEyLTJoNC41ODZhMSAxIDAgMDEuNzA3LjI5M2w0LjQxNCA0LjQxNGExIDEgMCAwMS4yOTMuNzA3VjE1YTIgMiAwIDAxLTIgMmgtMk04IDdINmEyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJoOGEyIDIgMCAwMDItMnYtMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRG9jdW1lbnRSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTNoNm0yIDhIN2EyIDIgMCAwMS0yLTJWNWEyIDIgMCAwMTItMmg1LjU4NmExIDEgMCAwMS43MDcuMjkzbDUuNDE0IDUuNDE0YTEgMSAwIDAxLjI5My43MDdWMTlhMiAyIDAgMDEtMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRG9jdW1lbnRSZXBvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTd2LTJtMyAydi00bTMgNHYtNm0yIDEwSDdhMiAyIDAgMDEtMi0yVjVhMiAyIDAgMDEyLTJoNS41ODZhMSAxIDAgMDEuNzA3LjI5M2w1LjQxNCA1LjQxNGExIDEgMCAwMS4yOTMuNzA3VjE5YTIgMiAwIDAxLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZURvY3VtZW50U2VhcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMCAyMWg3YTIgMiAwIDAwMi0yVjkuNDE0YTEgMSAwIDAwLS4yOTMtLjcwN2wtNS40MTQtNS40MTRBMSAxIDAgMDAxMi41ODYgM0g3YTIgMiAwIDAwLTIgMnYxMW0wIDVsNC44NzktNC44NzltMCAwYTMgMyAwIDEwNC4yNDMtNC4yNDIgMyAzIDAgMDAtNC4yNDMgNC4yNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEb2N1bWVudFRleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTJoNm0tNiA0aDZtMiA1SDdhMiAyIDAgMDEtMi0yVjVhMiAyIDAgMDEyLTJoNS41ODZhMSAxIDAgMDEuNzA3LjI5M2w1LjQxNCA1LjQxNGExIDEgMCAwMS4yOTMuNzA3VjE5YTIgMiAwIDAxLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZURvY3VtZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDIxaDEwYTIgMiAwIDAwMi0yVjkuNDE0YTEgMSAwIDAwLS4yOTMtLjcwN2wtNS40MTQtNS40MTRBMSAxIDAgMDAxMi41ODYgM0g3YTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZURvdHNDaXJjbGVIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04IDEyaC4wMU0xMiAxMmguMDFNMTYgMTJoLjAxTTIxIDEyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRG90c0hvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTUgMTJoLjAxTTEyIDEyaC4wMU0xOSAxMmguMDFNNiAxMmExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6bTcgMGExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6bTcgMGExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEb3RzVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDV2LjAxTTEyIDEydi4wMU0xMiAxOXYuMDFNMTIgNmExIDEgMCAxMTAtMiAxIDEgMCAwMTAgMnptMCA3YTEgMSAwIDExMC0yIDEgMSAwIDAxMCAyem0wIDdhMSAxIDAgMTEwLTIgMSAxIDAgMDEwIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCAxNnYxYTMgMyAwIDAwMyAzaDEwYTMgMyAwIDAwMy0zdi0xbS00LTRsLTQgNG0wIDBsLTQtNG00IDRWNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRHVwbGljYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04IDE2SDZhMiAyIDAgMDEtMi0yVjZhMiAyIDAgMDEyLTJoOGEyIDIgMCAwMTIgMnYybS02IDEyaDhhMiAyIDAgMDAyLTJ2LThhMiAyIDAgMDAtMi0yaC04YTIgMiAwIDAwLTIgMnY4YTIgMiAwIDAwMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRW1vamlIYXBweSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTQuODI4IDE0LjgyOGE0IDQgMCAwMS01LjY1NiAwTTkgMTBoLjAxTTE1IDEwaC4wMU0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUVtb2ppU2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05LjE3MiAxNi4xNzJhNCA0IDAgMDE1LjY1NiAwTTkgMTBoLjAxTTE1IDEwaC4wMU0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUV4Y2xhbWF0aW9uQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiA4djRtMCA0aC4wMU0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiA5djJtMCA0aC4wMW0tNi45MzggNGgxMy44NTZjMS41NCAwIDIuNTAyLTEuNjY3IDEuNzMyLTNMMTMuNzMyIDRjLS43Ny0xLjMzMy0yLjY5NC0xLjMzMy0zLjQ2NCAwTDMuMzQgMTZjLS43NyAxLjMzMy4xOTIgMyAxLjczMiAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRXh0ZXJuYWxMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMCA2SDZhMiAyIDAgMDAtMiAydjEwYTIgMiAwIDAwMiAyaDEwYTIgMiAwIDAwMi0ydi00TTE0IDRoNm0wIDB2Nm0wLTZMMTAgMTRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUV5ZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTMuODc1IDE4LjgyNUExMC4wNSAxMC4wNSAwIDAxMTIgMTljLTQuNDc4IDAtOC4yNjgtMi45NDMtOS41NDMtN2E5Ljk3IDkuOTcgMCAwMTEuNTYzLTMuMDI5bTUuODU4LjkwOGEzIDMgMCAxMTQuMjQzIDQuMjQzTTkuODc4IDkuODc4bDQuMjQyIDQuMjQyTTkuODggOS44OGwtMy4yOS0zLjI5bTcuNTMyIDcuNTMybDMuMjkgMy4yOU0zIDNsMy41OSAzLjU5bTAgMEE5Ljk1MyA5Ljk1MyAwIDAxMTIgNWM0LjQ3OCAwIDguMjY4IDIuOTQzIDkuNTQzIDdhMTAuMDI1IDEwLjAyNSAwIDAxLTQuMTMyIDUuNDExbTAgMEwyMSAyMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRXllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNSAxMmEzIDMgMCAxMS02IDAgMyAzIDAgMDE2IDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIuNDU4IDEyQzMuNzMyIDcuOTQzIDcuNTIzIDUgMTIgNWM0LjQ3OCAwIDguMjY4IDIuOTQzIDkuNTQyIDctMS4yNzQgNC4wNTctNS4wNjQgNy05LjU0MiA3LTQuNDc3IDAtOC4yNjgtMi45NDMtOS41NDItN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUZhc3RGb3J3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMS45MzMgMTIuOGExIDEgMCAwMDAtMS42TDYuNiA3LjJBMSAxIDAgMDA1IDh2OGExIDEgMCAwMDEuNi44bDUuMzMzLTR6TTE5LjkzMyAxMi44YTEgMSAwIDAwMC0xLjZsLTUuMzMzLTRBMSAxIDAgMDAxMyA4djhhMSAxIDAgMDAxLjYuOGw1LjMzMy00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRmlsbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNyA0djE2TTE3IDR2MTZNMyA4aDRtMTAgMGg0TTMgMTJoMThNMyAxNmg0bTEwIDBoNE00IDIwaDE2YTEgMSAwIDAwMS0xVjVhMSAxIDAgMDAtMS0xSDRhMSAxIDAgMDAtMSAxdjE0YTEgMSAwIDAwMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRmlsdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDRhMSAxIDAgMDExLTFoMTZhMSAxIDAgMDExIDF2Mi41ODZhMSAxIDAgMDEtLjI5My43MDdsLTYuNDE0IDYuNDE0YTEgMSAwIDAwLS4yOTMuNzA3VjE3bC00IDR2LTYuNTg2YTEgMSAwIDAwLS4yOTMtLjcwN0wzLjI5MyA3LjI5M0ExIDEgMCAwMTMgNi41ODZWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUZpbmdlclByaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiAxMWMwIDMuNTE3LTEuMDA5IDYuNzk5LTIuNzUzIDkuNTcxbS0zLjQ0LTIuMDRsLjA1NC0uMDlBMTMuOTE2IDEzLjkxNiAwIDAwOCAxMWE0IDQgMCAxMTggMGMwIDEuMDE3LS4wNyAyLjAxOS0uMjAzIDNtLTIuMTE4IDYuODQ0QTIxLjg4IDIxLjg4IDAgMDAxNS4xNzEgMTdtMy44MzkgMS4xMzJjLjY0NS0yLjI2Ni45OS00LjY1OS45OS03LjEzMkE4IDggMCAwMDggNC4wN00zIDE1LjM2NGMuNjQtMS4zMTkgMS0yLjggMS00LjM2NCAwLTEuNDU3LjM5LTIuODIzIDEuMDctNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRmlyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcuNjU3IDE4LjY1N0E4IDggMCAwMTYuMzQzIDcuMzQzUzcgOSA5IDEwYzAtMiAuNS01IDIuOTg2LTdDMTQgNSAxNi4wOSA1Ljc3NyAxNy42NTYgNy4zNDNBNy45NzUgNy45NzUgMCAwMTIwIDEzYTcuOTc1IDcuOTc1IDAgMDEtMi4zNDMgNS42NTd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkuODc5IDE2LjEyMUEzIDMgMCAxMDEyLjAxNSAxMUwxMSAxNEg5YzAgLjc2OC4yOTMgMS41MzYuODc5IDIuMTIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRmxhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyAyMXYtNG0wIDBWNWEyIDIgMCAwMTItMmg2LjVsMSAxSDIxbC0zIDYgMyA2aC04LjVsLTEtMUg1YTIgMiAwIDAwLTIgMnptOS0xMy41VjlcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUZvbGRlckFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxM2g2bS0zLTN2Nm0tOSAxVjdhMiAyIDAgMDEyLTJoNmwyIDJoNmEyIDIgMCAwMTIgMnY4YTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUZvbGRlckRvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiAxMHY2bTAgMGwtMy0zbTMgM2wzLTNNMyAxN1Y3YTIgMiAwIDAxMi0yaDZsMiAyaDZhMiAyIDAgMDEyIDJ2OGEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVGb2xkZXJPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk01IDE5YTIgMiAwIDAxLTItMlY3YTIgMiAwIDAxMi0yaDRsMiAyaDRhMiAyIDAgMDEyIDJ2MU01IDE5aDE0YTIgMiAwIDAwMi0ydi01YTIgMiAwIDAwLTItMkg5YTIgMiAwIDAwLTIgMnY1YTIgMiAwIDAxLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUZvbGRlclJlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxM2g2TTMgMTdWN2EyIDIgMCAwMTItMmg2bDIgMmg2YTIgMiAwIDAxMiAydjhhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lRm9sZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDd2MTBhMiAyIDAgMDAyIDJoMTRhMiAyIDAgMDAyLTJWOWEyIDIgMCAwMC0yLTJoLTZsLTItMkg1YTIgMiAwIDAwLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUdpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDh2MTNtMC0xM1Y2YTIgMiAwIDExMiAyaC0yem0wIDBWNS41QTIuNSAyLjUgMCAxMDkuNSA4SDEyem0tNyA0aDE0TTUgMTJhMiAyIDAgMTEwLTRoMTRhMiAyIDAgMTEwIDRNNSAxMnY3YTIgMiAwIDAwMiAyaDEwYTIgMiAwIDAwMi0ydi03XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVHbG9iZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMjEgMTJhOSA5IDAgMDEtOSA5bTktOWE5IDkgMCAwMC05LTltOSA5SDNtOSA5YTkgOSAwIDAxLTktOW05IDljMS42NTcgMCAzLTQuMDMgMy05cy0xLjM0My05LTMtOW0wIDE4Yy0xLjY1NyAwLTMtNC4wMy0zLTlzMS4zNDMtOSAzLTltLTkgOWE5IDkgMCAwMTktOVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lR2xvYmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTMuMDU1IDExSDVhMiAyIDAgMDEyIDJ2MWEyIDIgMCAwMDIgMiAyIDIgMCAwMTIgMnYyLjk0NU04IDMuOTM1VjUuNUEyLjUgMi41IDAgMDAxMC41IDhoLjVhMiAyIDAgMDEyIDIgMiAyIDAgMTA0IDAgMiAyIDAgMDEyLTJoMS4wNjRNMTUgMjAuNDg4VjE4YTIgMiAwIDAxMi0yaDMuMDY0TTIxIDEyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lSGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNyAxMS41VjE0bTAtMi41di02YTEuNSAxLjUgMCAxMTMgMG0tMyA2YTEuNSAxLjUgMCAwMC0zIDB2MmE3LjUgNy41IDAgMDAxNSAwdi01YTEuNSAxLjUgMCAwMC0zIDBtLTYtM1YxMW0wLTUuNXYtMWExLjUgMS41IDAgMDEzIDB2MW0wIDBWMTFtMC01LjVhMS41IDEuNSAwIDAxMyAwdjNtMCAwVjExXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVIYXNodGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDIwbDQtMTZtMiAxNmw0LTE2TTYgOWgxNE00IDE1aDE0XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNC4zMTggNi4zMThhNC41IDQuNSAwIDAwMCA2LjM2NEwxMiAyMC4zNjRsNy42ODItNy42ODJhNC41IDQuNSAwIDAwLTYuMzY0LTYuMzY0TDEyIDcuNjM2bC0xLjMxOC0xLjMxOGE0LjUgNC41IDAgMDAtNi4zNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUhvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTMgMTJsMi0ybTAgMGw3LTcgNyA3TTUgMTB2MTBhMSAxIDAgMDAxIDFoM20xMC0xMWwyIDJtLTItMnYxMGExIDEgMCAwMS0xIDFoLTNtLTYgMGExIDEgMCAwMDEtMXYtNGExIDEgMCAwMTEtMWgyYTEgMSAwIDAxMSAxdjRhMSAxIDAgMDAxIDFtLTYgMGg2XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVJZGVudGlmaWNhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTAgNkg1YTIgMiAwIDAwLTIgMnY5YTIgMiAwIDAwMiAyaDE0YTIgMiAwIDAwMi0yVjhhMiAyIDAgMDAtMi0yaC01bS00IDBWNWEyIDIgMCAxMTQgMHYxbS00IDBhMiAyIDAgMTA0IDBtLTUgOGEyIDIgMCAxMDAtNCAyIDIgMCAwMDAgNHptMCAwYzEuMzA2IDAgMi40MTcuODM1IDIuODMgMk05IDE0YTMuMDAxIDMuMDAxIDAgMDAtMi44MyAyTTE1IDExaDNtLTMgNGgyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVJbmJveEluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04IDRINmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoMTJhMiAyIDAgMDAyLTJWNmEyIDIgMCAwMC0yLTJoLTJtLTQtMXY4bTAgMGwzLTNtLTMgM0w5IDhtLTUgNWgyLjU4NmExIDEgMCAwMS43MDcuMjkzbDIuNDE0IDIuNDE0YTEgMSAwIDAwLjcwNy4yOTNoMy4xNzJhMSAxIDAgMDAuNzA3LS4yOTNsMi40MTQtMi40MTRhMSAxIDAgMDEuNzA3LS4yOTNIMjBcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0yMCAxM1Y2YTIgMiAwIDAwLTItMkg2YTIgMiAwIDAwLTIgMnY3bTE2IDB2NWEyIDIgMCAwMS0yIDJINmEyIDIgMCAwMS0yLTJ2LTVtMTYgMGgtMi41ODZhMSAxIDAgMDAtLjcwNy4yOTNsLTIuNDE0IDIuNDE0YTEgMSAwIDAxLS43MDcuMjkzaC0zLjE3MmExIDEgMCAwMS0uNzA3LS4yOTNsLTIuNDE0LTIuNDE0QTEgMSAwIDAwNi41ODYgMTNINFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lSW5mb3JtYXRpb25DaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEzIDE2aC0xdi00aC0xbTEtNGguMDFNMjEgMTJhOSA5IDAgMTEtMTggMCA5IDkgMCAwMTE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVLZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1IDdhMiAyIDAgMDEyIDJtNCAwYTYgNiAwIDAxLTcuNzQzIDUuNzQzTDExIDE3SDl2Mkg3djJINGExIDEgMCAwMS0xLTF2LTIuNTg2YTEgMSAwIDAxLjI5My0uNzA3bDUuOTY0LTUuOTY0QTYgNiAwIDExMjEgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUxpYnJhcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggMTR2M200LTN2M200LTN2M00zIDIxaDE4TTMgMTBoMThNMyA3bDktNCA5IDRNNCAxMGgxNnYxMUg0VjEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTGlnaHRCdWxiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05LjY2MyAxN2g0LjY3M00xMiAzdjFtNi4zNjQgMS42MzZsLS43MDcuNzA3TTIxIDEyaC0xTTQgMTJIM20zLjM0My01LjY1N2wtLjcwNy0uNzA3bTIuODI4IDkuOWE1IDUgMCAxMTcuMDcyIDBsLS41NDguNTQ3QTMuMzc0IDMuMzc0IDAgMDAxNCAxOC40NjlWMTlhMiAyIDAgMTEtNCAwdi0uNTMxYzAtLjg5NS0uMzU2LTEuNzU0LS45ODgtMi4zODZsLS41NDgtLjU0N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUxpZ2h0bmluZ0JvbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEzIDEwVjNMNCAxNGg3djdsOS0xMWgtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUxpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEzLjgyOCAxMC4xNzJhNCA0IDAgMDAtNS42NTYgMGwtNCA0YTQgNCAwIDEwNS42NTYgNS42NTZsMS4xMDItMS4xMDFtLS43NTgtNC44OTlhNCA0IDAgMDA1LjY1NiAwbDQtNGE0IDQgMCAwMC01LjY1Ni01LjY1NmwtMS4xIDEuMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTG9jYXRpb25NYXJrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE3LjY1NyAxNi42NTdMMTMuNDE0IDIwLjlhMS45OTggMS45OTggMCAwMS0yLjgyNyAwbC00LjI0NC00LjI0M2E4IDggMCAxMTExLjMxNCAwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNSAxMWEzIDMgMCAxMS02IDAgMyAzIDAgMDE2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVMb2NrQ2xvc2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiAxNXYybS02IDRoMTJhMiAyIDAgMDAyLTJ2LTZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjZhMiAyIDAgMDAyIDJ6bTEwLTEwVjdhNCA0IDAgMDAtOCAwdjRoOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZUxvY2tPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04IDExVjdhNCA0IDAgMTE4IDBtLTQgOHYybS02IDRoMTJhMiAyIDAgMDAyLTJ2LTZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjZhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVMb2dpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTEgMTZsLTQtNG0wIDBsNC00bS00IDRoMTRtLTUgNHYxYTMgMyAwIDAxLTMgM0g2YTMgMyAwIDAxLTMtM1Y3YTMgMyAwIDAxMy0zaDdhMyAzIDAgMDEzIDN2MVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTG9nb3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNyAxNmw0LTRtMCAwbC00LTRtNCA0SDdtNiA0djFhMyAzIDAgMDEtMyAzSDZhMyAzIDAgMDEtMy0zVjdhMyAzIDAgMDEzLTNoNGEzIDMgMCAwMTMgM3YxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNYWlsT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyAxOXYtOC45M2EyIDIgMCAwMS44OS0xLjY2NGw3LTQuNjY2YTIgMiAwIDAxMi4yMiAwbDcgNC42NjZBMiAyIDAgMDEyMSAxMC4wN1YxOU0zIDE5YTIgMiAwIDAwMiAyaDE0YTIgMiAwIDAwMi0yTTMgMTlsNi43NS00LjVNMjEgMTlsLTYuNzUtNC41TTMgMTBsNi43NSA0LjVNMjEgMTBsLTYuNzUgNC41bTAgMGwtMS4xNC43NmEyIDIgMCAwMS0yLjIyIDBsLTEuMTQtLjc2XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDhsNy44OSA1LjI2YTIgMiAwIDAwMi4yMiAwTDIxIDhNNSAxOWgxNGEyIDIgMCAwMDItMlY3YTIgMiAwIDAwLTItMkg1YTIgMiAwIDAwLTIgMnYxMGEyIDIgMCAwMDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZU1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAyMGwtNS40NDctMi43MjRBMSAxIDAgMDEzIDE2LjM4MlY1LjYxOGExIDEgMCAwMTEuNDQ3LS44OTRMOSA3bTAgMTNsNi0zbS02IDNWN202IDEwbDQuNTUzIDIuMjc2QTEgMSAwIDAwMjEgMTguMzgyVjcuNjE4YTEgMSAwIDAwLS41NTMtLjg5NEwxNSA0bTAgMTNWNG0wIDBMOSA3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNZW51QWx0MSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCA2aDE2TTQgMTJoOG0tOCA2aDE2XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNZW51QWx0MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCA2aDE2TTQgMTJoMTZNNCAxOGg3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNZW51QWx0MyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCA2aDE2TTQgMTJoMTZtLTcgNmg3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNZW51QWx0NCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNCA4aDE2TTQgMTZoMTZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZU1lbnUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTQgNmgxNk00IDEyaDE2TTQgMThoMTZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZU1pY3JvcGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE5IDExYTcgNyAwIDAxLTcgN20wIDBhNyA3IDAgMDEtNy03bTcgN3Y0bTAgMEg4bTQgMGg0bS00LThhMyAzIDAgMDEtMy0zVjVhMyAzIDAgMTE2IDB2NmEzIDMgMCAwMS0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVNaW51c0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTUgMTJIOW0xMiAwYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTWludXNTbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTggMTJINlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIwIDEySDRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZU1vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIwLjM1NCAxNS4zNTRBOSA5IDAgMDE4LjY0NiAzLjY0NiA5LjAwMyA5LjAwMyAwIDAwMTIgMjFhOS4wMDMgOS4wMDMgMCAwMDguMzU0LTUuNjQ2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTXVzaWNOb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk05IDE5VjZsMTItM3YxM005IDE5YzAgMS4xMDUtMS4zNDMgMi0zIDJzLTMtLjg5NS0zLTIgMS4zNDMtMiAzLTIgMyAuODk1IDMgMnptMTItM2MwIDEuMTA1LTEuMzQzIDItMyAycy0zLS44OTUtMy0yIDEuMzQzLTIgMy0yIDMgLjg5NSAzIDJ6TTkgMTBsMTItM1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lTmV3c3BhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xOSAyMEg1YTIgMiAwIDAxLTItMlY2YTIgMiAwIDAxMi0yaDEwYTIgMiAwIDAxMiAydjFtMiAxM2EyIDIgMCAwMS0yLTJWN20yIDEzYTIgMiAwIDAwMi0yVjlhMiAyIDAgMDAtMi0yaC0ybS00LTNIOU03IDE2aDZNNyA4aDZ2NEg3Vjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVPZmZpY2VCdWlsZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTkgMjFWNWEyIDIgMCAwMC0yLTJIN2EyIDIgMCAwMC0yIDJ2MTZtMTQgMGgybS0yIDBoLTVtLTkgMEgzbTIgMGg1TTkgN2gxbS0xIDRoMW00LTRoMW0tMSA0aDFtLTUgMTB2LTVhMSAxIDAgMDExLTFoMmExIDEgMCAwMTEgMXY1bS00IDBoNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUGFwZXJBaXJwbGFuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgMTlsOSAyLTktMTgtOSAxOCA5LTJ6bTAgMHYtOFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUGFwZXJDbGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNS4xNzIgN2wtNi41ODYgNi41ODZhMiAyIDAgMTAyLjgyOCAyLjgyOGw2LjQxNC02LjU4NmE0IDQgMCAwMC01LjY1Ni01LjY1NmwtNi40MTUgNi41ODVhNiA2IDAgMTA4LjQ4NiA4LjQ4NkwyMC41IDEzXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQYXVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTAgOXY2bTQtNnY2bTctM2E5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVBlbmNpbEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTEgNUg2YTIgMiAwIDAwLTIgMnYxMWEyIDIgMCAwMDIgMmgxMWEyIDIgMCAwMDItMnYtNW0tMS40MTQtOS40MTRhMiAyIDAgMTEyLjgyOCAyLjgyOEwxMS44MjggMTVIOXYtMi44MjhsOC41ODYtOC41ODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQZW5jaWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE1LjIzMiA1LjIzMmwzLjUzNiAzLjUzNm0tMi4wMzYtNS4wMzZhMi41IDIuNSAwIDExMy41MzYgMy41MzZMNi41IDIxLjAzNkgzdi0zLjU3MkwxNi43MzIgMy43MzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQaG9uZUluY29taW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0yMSAzbC02IDZtMCAwVjRtMCA1aDVNNSAzYTIgMiAwIDAwLTIgMnYxYzAgOC4yODQgNi43MTYgMTUgMTUgMTVoMWEyIDIgMCAwMDItMnYtMy4yOGExIDEgMCAwMC0uNjg0LS45NDhsLTQuNDkzLTEuNDk4YTEgMSAwIDAwLTEuMjEuNTAybC0xLjEzIDIuMjU3YTExLjA0MiAxMS4wNDIgMCAwMS01LjUxNi01LjUxN2wyLjI1Ny0xLjEyOGExIDEgMCAwMC41MDItMS4yMUw5LjIyOCAzLjY4M0ExIDEgMCAwMDguMjc5IDNINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVBob25lTWlzc2VkQ2FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTYgOGwyLTJtMCAwbDItMm0tMiAybC0yLTJtMiAybDIgMk01IDNhMiAyIDAgMDAtMiAydjFjMCA4LjI4NCA2LjcxNiAxNSAxNSAxNWgxYTIgMiAwIDAwMi0ydi0zLjI4YTEgMSAwIDAwLS42ODQtLjk0OGwtNC40OTMtMS40OThhMSAxIDAgMDAtMS4yMS41MDJsLTEuMTMgMi4yNTdhMTEuMDQyIDExLjA0MiAwIDAxLTUuNTE2LTUuNTE3bDIuMjU3LTEuMTI4YTEgMSAwIDAwLjUwMi0xLjIxTDkuMjI4IDMuNjgzQTEgMSAwIDAwOC4yNzkgM0g1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUGhvbmVPdXRnb2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTYgM2g1bTAgMHY1bTAtNWwtNiA2TTUgM2EyIDIgMCAwMC0yIDJ2MWMwIDguMjg0IDYuNzE2IDE1IDE1IDE1aDFhMiAyIDAgMDAyLTJ2LTMuMjhhMSAxIDAgMDAtLjY4NC0uOTQ4bC00LjQ5My0xLjQ5OGExIDEgMCAwMC0xLjIxLjUwMmwtMS4xMyAyLjI1N2ExMS4wNDIgMTEuMDQyIDAgMDEtNS41MTYtNS41MTdsMi4yNTctMS4xMjhhMSAxIDAgMDAuNTAyLTEuMjFMOS4yMjggMy42ODNBMSAxIDAgMDA4LjI3OSAzSDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyA1YTIgMiAwIDAxMi0yaDMuMjhhMSAxIDAgMDEuOTQ4LjY4NGwxLjQ5OCA0LjQ5M2ExIDEgMCAwMS0uNTAyIDEuMjFsLTIuMjU3IDEuMTNhMTEuMDQyIDExLjA0MiAwIDAwNS41MTYgNS41MTZsMS4xMy0yLjI1N2ExIDEgMCAwMTEuMjEtLjUwMmw0LjQ5MyAxLjQ5OGExIDEgMCAwMS42ODQuOTQ5VjE5YTIgMiAwIDAxLTIgMmgtMUM5LjcxNiAyMSAzIDE0LjI4NCAzIDZWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVBob3RvZ3JhcGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTQgMTZsNC41ODYtNC41ODZhMiAyIDAgMDEyLjgyOCAwTDE2IDE2bS0yLTJsMS41ODYtMS41ODZhMiAyIDAgMDEyLjgyOCAwTDIwIDE0bS02LTZoLjAxTTYgMjBoMTJhMiAyIDAgMDAyLTJWNmEyIDIgMCAwMC0yLTJINmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNC43NTIgMTEuMTY4bC0zLjE5Ny0yLjEzMkExIDEgMCAwMDEwIDkuODd2NC4yNjNhMSAxIDAgMDAxLjU1NS44MzJsMy4xOTctMi4xMzJhMSAxIDAgMDAwLTEuNjY0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVBsdXNDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyIDl2M20wIDB2M20wLTNoM20tMyAwSDltMTIgMGE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVBsdXNTbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgNnY2bTAgMHY2bTAtNmg2bS02IDBINlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgNHYxNm04LThINFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUHJlc2VudGF0aW9uQ2hhcnRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggMTN2LTFtNCAxdi0zbTQgM1Y4TTggMjFsNC00IDQgNE0zIDRoMThNNCA0aDE2djEyYTEgMSAwIDAxLTEgMUg1YTEgMSAwIDAxLTEtMVY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUHJlc2VudGF0aW9uQ2hhcnRMaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk03IDEybDMtMyAzIDMgNC00TTggMjFsNC00IDQgNE0zIDRoMThNNCA0aDE2djEyYTEgMSAwIDAxLTEgMUg1YTEgMSAwIDAxLTEtMVY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUHJpbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcgMTdoMmEyIDIgMCAwMDItMnYtNGEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2NGEyIDIgMCAwMDIgMmgybTIgNGg2YTIgMiAwIDAwMi0ydi00YTIgMiAwIDAwLTItMkg5YTIgMiAwIDAwLTIgMnY0YTIgMiAwIDAwMiAyem04LTEyVjVhMiAyIDAgMDAtMi0ySDlhMiAyIDAgMDAtMiAydjRoMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVQdXp6bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTExIDRhMiAyIDAgMTE0IDB2MWExIDEgMCAwMDEgMWgzYTEgMSAwIDAxMSAxdjNhMSAxIDAgMDEtMSAxaC0xYTIgMiAwIDEwMCA0aDFhMSAxIDAgMDExIDF2M2ExIDEgMCAwMS0xIDFoLTNhMSAxIDAgMDEtMS0xdi0xYTIgMiAwIDEwLTQgMHYxYTEgMSAwIDAxLTEgMUg3YTEgMSAwIDAxLTEtMXYtM2ExIDEgMCAwMC0xLTFINGEyIDIgMCAxMTAtNGgxYTEgMSAwIDAwMS0xVjdhMSAxIDAgMDExLTFoM2ExIDEgMCAwMDEtMVY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUXJjb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiA0djFtNiAxMWgybS02IDBoLTJ2NG0wLTExdjNtMCAwaC4wMU0xMiAxMmg0LjAxTTE2IDIwaDRNNCAxMmg0bTEyIDBoLjAxTTUgOGgyYTEgMSAwIDAwMS0xVjVhMSAxIDAgMDAtMS0xSDVhMSAxIDAgMDAtMSAxdjJhMSAxIDAgMDAxIDF6bTEyIDBoMmExIDEgMCAwMDEtMVY1YTEgMSAwIDAwLTEtMWgtMmExIDEgMCAwMC0xIDF2MmExIDEgMCAwMDEgMXpNNSAyMGgyYTEgMSAwIDAwMS0xdi0yYTEgMSAwIDAwLTEtMUg1YTEgMSAwIDAwLTEgMXYyYTEgMSAwIDAwMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUXVlc3Rpb25NYXJrQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04LjIyOCA5Yy41NDktMS4xNjUgMi4wMy0yIDMuNzcyLTIgMi4yMSAwIDQgMS4zNDMgNCAzIDAgMS40LTEuMjc4IDIuNTc1LTMuMDA2IDIuOTA3LS41NDIuMTA0LS45OTQuNTQtLjk5NCAxLjA5M20wIDNoLjAxTTIxIDEyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUmVjZWlwdFJlZnVuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTYgMTV2LTFhNCA0IDAgMDAtNC00SDhtMCAwbDMgM20tMy0zbDMtM205IDE0VjVhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjE2bDQtMiA0IDIgNC0yIDQgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVJlY2VpcHRUYXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTRsNi02bS01LjUuNWguMDFtNC45OSA1aC4wMU0xOSAyMVY1YTIgMiAwIDAwLTItMkg3YTIgMiAwIDAwLTIgMnYxNmwzLjUtMiAzLjUgMiAzLjUtMiAzLjUgMnpNMTAgOC41YS41LjUgMCAxMS0xIDAgLjUuNSAwIDAxMSAwem01IDVhLjUuNSAwIDExLTEgMCAuNS41IDAgMDExIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVSZWZyZXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00IDR2NWguNTgybTE1LjM1NiAyQTguMDAxIDguMDAxIDAgMDA0LjU4MiA5bTAgMEg5bTExIDExdi01aC0uNTgxbTAgMGE4LjAwMyA4LjAwMyAwIDAxLTE1LjM1Ny0ybTE1LjM1NyAySDE1XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVSZXBseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyAxMGgxMGE4IDggMCAwMTggOHYyTTMgMTBsNiA2bS02LTZsNi02XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVSZXdpbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEyLjA2NiAxMS4yYTEgMSAwIDAwMCAxLjZsNS4zMzQgNEExIDEgMCAwMDE5IDE2VjhhMSAxIDAgMDAtMS42LS44bC01LjMzMyA0ek00LjA2NiAxMS4yYTEgMSAwIDAwMCAxLjZsNS4zMzQgNEExIDEgMCAwMDExIDE2VjhhMSAxIDAgMDAtMS42LS44bC01LjMzNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lUnNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk02IDVjNy4xOCAwIDEzIDUuODIgMTMgMTNNNiAxMWE3IDcgMCAwMTcgN20tNiAwYTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNhdmVBcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcgMTZ2MmEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJ2LTdhMiAyIDAgMDEyLTJoMm0zLTRIOWEyIDIgMCAwMC0yIDJ2N2EyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMlY3YTIgMiAwIDAwLTItMmgtMW0tMSA0bC0zIDNtMCAwbC0zLTNtMyAzVjNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggN0g1YTIgMiAwIDAwLTIgMnY5YTIgMiAwIDAwMiAyaDE0YTIgMiAwIDAwMi0yVjlhMiAyIDAgMDAtMi0yaC0zbS0xIDRsLTMgM20wIDBsLTMtM20zIDNWNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU2NhbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTMgNmwzIDFtMCAwbC0zIDlhNS4wMDIgNS4wMDIgMCAwMDYuMDAxIDBNNiA3bDMgOU02IDdsNi0ybTYgMmwzLTFtLTMgMWwtMyA5YTUuMDAyIDUuMDAyIDAgMDA2LjAwMSAwTTE4IDdsMyA5bS0zLTlsLTYtMm0wLTJ2Mm0wIDE2VjVtMCAxNkg5bTMgMGgzXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTY2lzc29ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTQuMTIxIDE0LjEyMUwxOSAxOW0tNy03bDctN20tNyA3bC0yLjg3OSAyLjg3OU0xMiAxMkw5LjEyMSA5LjEyMW0wIDUuNzU4YTMgMyAwIDEwLTQuMjQzIDQuMjQzIDMgMyAwIDAwNC4yNDMtNC4yNDN6bTAtNS43NThhMyAzIDAgMTAtNC4yNDMtNC4yNDMgMyAzIDAgMDA0LjI0MyA0LjI0M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNlYXJjaENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOCAxNmwyLjg3OS0yLjg3OW0wIDBhMyAzIDAgMTA0LjI0My00LjI0MiAzIDMgMCAwMC00LjI0MyA0LjI0MnpNMjEgMTJhOSA5IDAgMTEtMTggMCA5IDkgMCAwMTE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIxIDIxbC02LTZtMi01YTcgNyAwIDExLTE0IDAgNyA3IDAgMDExNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU2VsZWN0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggOWw0LTQgNCA0bTAgNmwtNCA0LTQtNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU2VydmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk01IDEyaDE0TTUgMTJhMiAyIDAgMDEtMi0yVjZhMiAyIDAgMDEyLTJoMTRhMiAyIDAgMDEyIDJ2NGEyIDIgMCAwMS0yIDJNNSAxMmEyIDIgMCAwMC0yIDJ2NGEyIDIgMCAwMDIgMmgxNGEyIDIgMCAwMDItMnYtNGEyIDIgMCAwMC0yLTJtLTItNGguMDFNMTcgMTZoLjAxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTaGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOC42ODQgMTMuMzQyQzguODg2IDEyLjkzOCA5IDEyLjQ4MiA5IDEyYzAtLjQ4Mi0uMTE0LS45MzgtLjMxNi0xLjM0Mm0wIDIuNjg0YTMgMyAwIDExMC0yLjY4NG0wIDIuNjg0bDYuNjMyIDMuMzE2bS02LjYzMi02bDYuNjMyLTMuMzE2bTAgMGEzIDMgMCAxMDUuMzY3LTIuNjg0IDMgMyAwIDAwLTUuMzY3IDIuNjg0em0wIDkuMzE2YTMgMyAwIDEwNS4zNjggMi42ODQgMyAzIDAgMDAtNS4zNjgtMi42ODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTaGllbGRDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxMmwyIDIgNC00bTUuNjE4LTQuMDE2QTExLjk1NSAxMS45NTUgMCAwMTEyIDIuOTQ0YTExLjk1NSAxMS45NTUgMCAwMS04LjYxOCAzLjA0QTEyLjAyIDEyLjAyIDAgMDAzIDljMCA1LjU5MSAzLjgyNCAxMC4yOSA5IDExLjYyMiA1LjE3Ni0xLjMzMiA5LTYuMDMgOS0xMS42MjIgMC0xLjA0Mi0uMTMzLTIuMDUyLS4zODItMy4wMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTaGllbGRFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMjAuNjE4IDUuOTg0QTExLjk1NSAxMS45NTUgMCAwMTEyIDIuOTQ0YTExLjk1NSAxMS45NTUgMCAwMS04LjYxOCAzLjA0QTEyLjAyIDEyLjAyIDAgMDAzIDljMCA1LjU5MSAzLjgyNCAxMC4yOSA5IDExLjYyMiA1LjE3Ni0xLjMzMiA5LTYuMDMgOS0xMS42MjIgMC0xLjA0Mi0uMTMzLTIuMDUyLS4zODItMy4wMTZ6TTEyIDl2Mm0wIDRoLjAxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTaG9wcGluZ0JhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTYgMTFWN2E0IDQgMCAwMC04IDB2NE01IDloMTRsMSAxMkg0TDUgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNob3BwaW5nQ2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyAzaDJsLjQgMk03IDEzaDEwbDQtOEg1LjRNNyAxM0w1LjQgNU03IDEzbC0yLjI5MyAyLjI5M2MtLjYzLjYzLS4xODQgMS43MDcuNzA3IDEuNzA3SDE3bTAgMGEyIDIgMCAxMDAgNCAyIDIgMCAwMDAtNHptLTggMmEyIDIgMCAxMS00IDAgMiAyIDAgMDE0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTb3J0QXNjZW5kaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0zIDRoMTNNMyA4aDltLTkgNGg2bTQgMGw0LTRtMCAwbDQgNG0tNC00djEyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTb3J0RGVzY2VuZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyA0aDEzTTMgOGg5bS05IDRoOW01LTR2MTJtMCAwbC00LTRtNCA0bDQtNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU3BhcmtsZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTUgM3Y0TTMgNWg0TTYgMTd2NG0tMi0yaDRtNS0xNmwyLjI4NiA2Ljg1N0wyMSAxMmwtNS43MTQgMi4xNDNMMTMgMjFsLTIuMjg2LTYuODU3TDUgMTJsNS43MTQtMi4xNDNMMTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVNwZWFrZXJwaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTEgNS44ODJWMTkuMjRhMS43NiAxLjc2IDAgMDEtMy40MTcuNTkybC0yLjE0Ny02LjE1TTE4IDEzYTMgMyAwIDEwMC02TTUuNDM2IDEzLjY4M0E0LjAwMSA0LjAwMSAwIDAxNyA2aDEuODMyYzQuMSAwIDcuNjI1LTEuMjM0IDkuMTY4LTN2MTRjLTEuNTQzLTEuNzY2LTUuMDY3LTMtOS4xNjgtM0g3YTMuOTg4IDMuOTg4IDAgMDEtMS41NjQtLjMxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVN0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTExLjA0OSAyLjkyN2MuMy0uOTIxIDEuNjAzLS45MjEgMS45MDIgMGwxLjUxOSA0LjY3NGExIDEgMCAwMC45NS42OWg0LjkxNWMuOTY5IDAgMS4zNzEgMS4yNC41ODggMS44MWwtMy45NzYgMi44ODhhMSAxIDAgMDAtLjM2MyAxLjExOGwxLjUxOCA0LjY3NGMuMy45MjItLjc1NSAxLjY4OC0xLjUzOCAxLjExOGwtMy45NzYtMi44ODhhMSAxIDAgMDAtMS4xNzYgMGwtMy45NzYgMi44ODhjLS43ODMuNTctMS44MzgtLjE5Ny0xLjUzOC0xLjExOGwxLjUxOC00LjY3NGExIDEgMCAwMC0uMzYzLTEuMTE4bC0zLjk3Ni0yLjg4OGMtLjc4NC0uNTctLjM4LTEuODEuNTg4LTEuODFoNC45MTRhMSAxIDAgMDAuOTUxLS42OWwxLjUxOS00LjY3NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVN0YXR1c09mZmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE4LjM2NCA1LjYzNmE5IDkgMCAwMTAgMTIuNzI4bTAgMGwtMi44MjktMi44MjltMi44MjkgMi44MjlMMjEgMjFNMTUuNTM2IDguNDY0YTUgNSAwIDAxMCA3LjA3Mm0wIDBsLTIuODI5LTIuODI5bS00LjI0MyAyLjgyOWE0Ljk3OCA0Ljk3OCAwIDAxLTEuNDE0LTIuODNtLTEuNDE0IDUuNjU4YTkgOSAwIDAxLTIuMTY3LTkuMjM4bTcuODI0IDIuMTY3YTEgMSAwIDExMS40MTQgMS40MTRtLTEuNDE0LTEuNDE0TDMgM204LjI5MyA4LjI5M2wxLjQxNCAxLjQxNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU3RhdHVzT25saW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk01LjYzNiAxOC4zNjRhOSA5IDAgMDEwLTEyLjcyOG0xMi43MjggMGE5IDkgMCAwMTAgMTIuNzI4bS05LjktMi44MjlhNSA1IDAgMDEwLTcuMDdtNy4wNzIgMGE1IDUgMCAwMTAgNy4wN00xMyAxMmExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOSAxMGExIDEgMCAwMTEtMWg0YTEgMSAwIDAxMSAxdjRhMSAxIDAgMDEtMSAxaC00YTEgMSAwIDAxLTEtMXYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVN1biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTIgM3YxbTAgMTZ2MW05LTloLTFNNCAxMkgzbTE1LjM2NCA2LjM2NGwtLjcwNy0uNzA3TTYuMzQzIDYuMzQzbC0uNzA3LS43MDdtMTIuNzI4IDBsLS43MDcuNzA3TTYuMzQzIDE3LjY1N2wtLjcwNy43MDdNMTYgMTJhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU3VwcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTguMzY0IDUuNjM2bC0zLjUzNiAzLjUzNm0wIDUuNjU2bDMuNTM2IDMuNTM2TTkuMTcyIDkuMTcyTDUuNjM2IDUuNjM2bTMuNTM2IDkuMTkybC0zLjUzNiAzLjUzNk0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHptLTUgMGE0IDQgMCAxMS04IDAgNCA0IDAgMDE4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVTd2l0Y2hIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk04IDdoMTJtMCAwbC00LTRtNCA0bC00IDRtMCA2SDRtMCAwbDQgNG0tNC00bDQtNFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lU3dpdGNoVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTcgMTZWNG0wIDBMMyA4bTQtNGw0IDRtNiAwdjEybTAgMGw0LTRtLTQgNGwtNC00XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVUYWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyAxMGgxOE0zIDE0aDE4bS05LTR2OG0tNyAwaDE0YTIgMiAwIDAwMi0yVjhhMiAyIDAgMDAtMi0ySDVhMiAyIDAgMDAtMiAydjhhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVUYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTcgN2guMDFNNyAzaDVjLjUxMiAwIDEuMDI0LjE5NSAxLjQxNC41ODZsNyA3YTIgMiAwIDAxMCAyLjgyOGwtNyA3YTIgMiAwIDAxLTIuODI4IDBsLTctN0ExLjk5NCAxLjk5NCAwIDAxMyAxMlY3YTQgNCAwIDAxNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVGVtcGxhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTQgNWExIDEgMCAwMTEtMWgxNGExIDEgMCAwMTEgMXYyYTEgMSAwIDAxLTEgMUg1YTEgMSAwIDAxLTEtMVY1ek00IDEzYTEgMSAwIDAxMS0xaDZhMSAxIDAgMDExIDF2NmExIDEgMCAwMS0xIDFINWExIDEgMCAwMS0xLTF2LTZ6TTE2IDEzYTEgMSAwIDAxMS0xaDJhMSAxIDAgMDExIDF2NmExIDEgMCAwMS0xIDFoLTJhMSAxIDAgMDEtMS0xdi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVGVybWluYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTggOWwzIDMtMyAzbTUgMGgzTTUgMjBoMTRhMiAyIDAgMDAyLTJWNmEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVUaHVtYkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEwIDE0SDUuMjM2YTIgMiAwIDAxLTEuNzg5LTIuODk0bDMuNS03QTIgMiAwIDAxOC43MzYgM2g0LjAxOGEyIDIgMCAwMS40ODUuMDZsMy43Ni45NG0tNyAxMHY1YTIgMiAwIDAwMiAyaC4wOTZjLjUgMCAuOTA1LS40MDUuOTA1LS45MDQgMC0uNzE1LjIxMS0xLjQxMy42MDgtMi4wMDhMMTcgMTNWNG0tNyAxMGgybTUtMTBoMmEyIDIgMCAwMTIgMnY2YTIgMiAwIDAxLTIgMmgtMi41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVUaHVtYlVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNCAxMGg0Ljc2NGEyIDIgMCAwMTEuNzg5IDIuODk0bC0zLjUgN0EyIDIgMCAwMTE1LjI2MyAyMWgtNC4wMTdjLS4xNjMgMC0uMzI2LS4wMi0uNDg1LS4wNkw3IDIwbTctMTBWNWEyIDIgMCAwMC0yLTJoLS4wOTVjLS41IDAtLjkwNS40MDUtLjkwNS45MDUgMCAuNzE0LS4yMTEgMS40MTItLjYwOCAyLjAwNkw3IDExdjltNy0xMGgtMk03IDIwSDVhMiAyIDAgMDEtMi0ydi02YTIgMiAwIDAxMi0yaDIuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVGlja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNSA1djJtMCA0djJtMCA0djJNNSA1YTIgMiAwIDAwLTIgMnYzYTIgMiAwIDExMCA0djNhMiAyIDAgMDAyIDJoMTRhMiAyIDAgMDAyLTJ2LTNhMiAyIDAgMTEwLTRWN2EyIDIgMCAwMC0yLTJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVRyYW5zbGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMyA1aDEyTTkgM3YybTEuMDQ4IDkuNUExOC4wMjIgMTguMDIyIDAgMDE2LjQxMiA5bTYuMDg4IDloN00xMSAyMWw1LTEwIDUgMTBNMTIuNzUxIDVDMTEuNzgzIDEwLjc3IDguMDcgMTUuNjEgMyAxOC4xMjlcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVRyYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xOSA3bC0uODY3IDEyLjE0MkEyIDIgMCAwMTE2LjEzOCAyMUg3Ljg2MmEyIDIgMCAwMS0xLjk5NS0xLjg1OEw1IDdtNSA0djZtNC02djZtMS0xMFY0YTEgMSAwIDAwLTEtMWgtNGExIDEgMCAwMC0xIDF2M000IDdoMTZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVRyZW5kaW5nRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTMgMTdoOG0wIDBWOW0wIDhsLTgtOC00IDQtNi02XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVUcmVuZGluZ1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMyA3aDhtMCAwdjhtMC04bC04IDgtNC00LTYgNlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVHJ1Y2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTdhMiAyIDAgMTEtNCAwIDIgMiAwIDAxNCAwek0xOSAxN2EyIDIgMCAxMS00IDAgMiAyIDAgMDE0IDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEzIDE2VjZhMSAxIDAgMDAtMS0xSDRhMSAxIDAgMDAtMSAxdjEwYTEgMSAwIDAwMSAxaDFtOC0xYTEgMSAwIDAxLTEgMUg5bTQtMVY4YTEgMSAwIDAxMS0xaDIuNTg2YTEgMSAwIDAxLjcwNy4yOTNsMy40MTQgMy40MTRhMSAxIDAgMDEuMjkzLjcwN1YxNmExIDEgMCAwMS0xIDFoLTFtLTYtMWExIDEgMCAwMDEgMWgxTTUgMTdhMiAyIDAgMTA0IDBtLTQgMGEyIDIgMCAxMTQgMG02IDBhMiAyIDAgMTA0IDBtLTQgMGEyIDIgMCAxMTQgMFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00IDE2djFhMyAzIDAgMDAzIDNoMTBhMyAzIDAgMDAzLTN2LTFtLTQtOGwtNC00bTAgMEw4IDhtNC00djEyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVVc2VyQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xOCA5djNtMCAwdjNtMC0zaDNtLTMgMGgtM20tMi01YTQgNCAwIDExLTggMCA0IDQgMCAwMTggMHpNMyAyMGE2IDYgMCAwMTEyIDB2MUgzdi0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVXNlckNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNS4xMjEgMTcuODA0QTEzLjkzNyAxMy45MzcgMCAwMTEyIDE2YzIuNSAwIDQuODQ3LjY1NSA2Ljg3OSAxLjgwNE0xNSAxMGEzIDMgMCAxMS02IDAgMyAzIDAgMDE2IDB6bTYgMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVVzZXJHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcgMjBoNXYtMmEzIDMgMCAwMC01LjM1Ni0xLjg1N00xNyAyMEg3bTEwIDB2LTJjMC0uNjU2LS4xMjYtMS4yODMtLjM1Ni0xLjg1N003IDIwSDJ2LTJhMyAzIDAgMDE1LjM1Ni0xLjg1N003IDIwdi0yYzAtLjY1Ni4xMjYtMS4yODMuMzU2LTEuODU3bTAgMGE1LjAwMiA1LjAwMiAwIDAxOS4yODggME0xNSA3YTMgMyAwIDExLTYgMCAzIDMgMCAwMTYgMHptNiAzYTIgMiAwIDExLTQgMCAyIDIgMCAwMTQgMHpNNyAxMGEyIDIgMCAxMS00IDAgMiAyIDAgMDE0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVVc2VyUmVtb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMyA3YTQgNCAwIDExLTggMCA0IDQgMCAwMTggMHpNOSAxNGE2IDYgMCAwMC02IDZ2MWgxMnYtMWE2IDYgMCAwMC02LTZ6TTIxIDEyaC02XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNiA3YTQgNCAwIDExLTggMCA0IDQgMCAwMTggMHpNMTIgMTRhNyA3IDAgMDAtNyA3aDE0YTcgNyAwIDAwLTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVVzZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xMiA0LjM1NGE0IDQgMCAxMTAgNS4yOTJNMTUgMjFIM3YtMWE2IDYgMCAwMTEyIDB2MXptMCAwaDZ2LTFhNiA2IDAgMDAtOS01LjE5N00xMyA3YTQgNCAwIDExLTggMCA0IDQgMCAwMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVZhcmlhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00Ljg3MSA0QTE3LjkyNiAxNy45MjYgMCAwMDMgMTJjMCAyLjg3NC42NzMgNS41OSAxLjg3MSA4bTE0LjEzIDBhMTcuOTI2IDE3LjkyNiAwIDAwMS44Ny04YzAtMi44NzQtLjY3My01LjU5LTEuODctOE05IDloMS4yNDZhMSAxIDAgMDEuOTYxLjcyNWwxLjU4NiA1LjU1YTEgMSAwIDAwLjk2MS43MjVIMTVtMS03aC0uMDhhMiAyIDAgMDAtMS41MTkuNjk4TDkuNiAxNS4zMDJBMiAyIDAgMDE4LjA4IDE2SDhcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVZpZGVvQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk0xNSAxMGw0LjU1My0yLjI3NkExIDEgMCAwMTIxIDguNjE4djYuNzY0YTEgMSAwIDAxLTEuNDQ3Ljg5NEwxNSAxNE01IDE4aDhhMiAyIDAgMDAyLTJWOGEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2OGEyIDIgMCAwMDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVZpZXdCb2FyZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTkgMTdWN20wIDEwYTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMlY3YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJtMCAxMGEyIDIgMCAwMDIgMmgyYTIgMiAwIDAwMi0yTTkgN2EyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAybTAgMTBWN20wIDEwYTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJoLTJhMiAyIDAgMDAtMiAyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVWaWV3R3JpZEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTcgMTR2Nm0tMy0zaDZNNiAxMGgyYTIgMiAwIDAwMi0yVjZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjJhMiAyIDAgMDAyIDJ6bTEwIDBoMmEyIDIgMCAwMDItMlY2YTIgMiAwIDAwLTItMmgtMmEyIDIgMCAwMC0yIDJ2MmEyIDIgMCAwMDIgMnpNNiAyMGgyYTIgMiAwIDAwMi0ydi0yYTIgMiAwIDAwLTItMkg2YTIgMiAwIDAwLTIgMnYyYTIgMiAwIDAwMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lVmlld0dyaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTQgNmEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAySDZhMiAyIDAgMDEtMi0yVjZ6TTE0IDZhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMnYyYTIgMiAwIDAxLTIgMmgtMmEyIDIgMCAwMS0yLTJWNnpNNCAxNmEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAySDZhMiAyIDAgMDEtMi0ydi0yek0xNCAxNmEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAyaC0yYTIgMiAwIDAxLTItMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVZpZXdMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIixcImRcIjpcIk00IDZoMTZNNCAxMGgxNk00IDE0aDE2TTQgMThoMTZcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVZvbHVtZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNNS41ODYgMTVINGExIDEgMCAwMS0xLTF2LTRhMSAxIDAgMDExLTFoMS41ODZsNC43MDctNC43MDdDMTAuOTIzIDMuNjYzIDEyIDQuMTA5IDEyIDV2MTRjMCAuODkxLTEuMDc3IDEuMzM3LTEuNzA3LjcwN0w1LjU4NiAxNXpcIixcImNsaXBSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTE3IDE0bDItMm0wIDBsMi0ybS0yIDJsLTItMm0yIDJsMiAyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBIaU91dGxpbmVWb2x1bWVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMTUuNTM2IDguNDY0YTUgNSAwIDAxMCA3LjA3Mm0yLjgyOC05LjlhOSA5IDAgMDEwIDEyLjcyOE01LjU4NiAxNUg0YTEgMSAwIDAxLTEtMXYtNGExIDEgMCAwMTEtMWgxLjU4Nmw0LjcwNy00LjcwN0MxMC45MjMgMy42NjMgMTIgNC4xMDkgMTIgNXYxNGMwIC44OTEtMS4wNzcgMS4zMzctMS43MDcuNzA3TDUuNTg2IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSGlPdXRsaW5lV2lmaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNOC4xMTEgMTYuNDA0YTUuNSA1LjUgMCAwMTcuNzc4IDBNMTIgMjBoLjAxbS03LjA4LTcuMDcxYzMuOTA0LTMuOTA1IDEwLjIzNi0zLjkwNSAxNC4xNDEgME0xLjM5NCA5LjM5M2M1Ljg1Ny01Ljg1NyAxNS4zNTUtNS44NTcgMjEuMjEzIDBcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVhDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTEwIDE0bDItMm0wIDBsMi0ybS0yIDJsLTItMm0yIDJsMiAybTctMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTYgMThMMTggNk02IDZsMTIgMTJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVpvb21JbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCIsXCJkXCI6XCJNMjEgMjFsLTYtNm0yLTVhNyA3IDAgMTEtMTQgMCA3IDcgMCAwMTE0IDB6TTEwIDd2M20wIDB2M20wLTNoM20tMyAwSDdcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEhpT3V0bGluZVpvb21PdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwidmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwiLFwiZFwiOlwiTTIxIDIxbC02LTZtMi01YTcgNyAwIDExLTE0IDAgNyA3IDAgMDExNCAwek0xMyAxMEg3XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbiIsImNvbnN0IENMQVNTX1BBUlRfU0VQQVJBVE9SID0gJy0nO1xuZnVuY3Rpb24gY3JlYXRlQ2xhc3NHcm91cFV0aWxzKGNvbmZpZykge1xuICBjb25zdCBjbGFzc01hcCA9IGNyZWF0ZUNsYXNzTWFwKGNvbmZpZyk7XG4gIGNvbnN0IHtcbiAgICBjb25mbGljdGluZ0NsYXNzR3JvdXBzLFxuICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyc1xuICB9ID0gY29uZmlnO1xuICBmdW5jdGlvbiBnZXRDbGFzc0dyb3VwSWQoY2xhc3NOYW1lKSB7XG4gICAgY29uc3QgY2xhc3NQYXJ0cyA9IGNsYXNzTmFtZS5zcGxpdChDTEFTU19QQVJUX1NFUEFSQVRPUik7XG4gICAgLy8gQ2xhc3NlcyBsaWtlIGAtaW5zZXQtMWAgcHJvZHVjZSBhbiBlbXB0eSBzdHJpbmcgYXMgZmlyc3QgY2xhc3NQYXJ0LiBXZSBhc3N1bWUgdGhhdCBjbGFzc2VzIGZvciBuZWdhdGl2ZSB2YWx1ZXMgYXJlIHVzZWQgY29ycmVjdGx5IGFuZCByZW1vdmUgaXQgZnJvbSBjbGFzc1BhcnRzLlxuICAgIGlmIChjbGFzc1BhcnRzWzBdID09PSAnJyAmJiBjbGFzc1BhcnRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgY2xhc3NQYXJ0cy5zaGlmdCgpO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0R3JvdXBSZWN1cnNpdmUoY2xhc3NQYXJ0cywgY2xhc3NNYXApIHx8IGdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eShjbGFzc05hbWUpO1xuICB9XG4gIGZ1bmN0aW9uIGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyhjbGFzc0dyb3VwSWQsIGhhc1Bvc3RmaXhNb2RpZmllcikge1xuICAgIGNvbnN0IGNvbmZsaWN0cyA9IGNvbmZsaWN0aW5nQ2xhc3NHcm91cHNbY2xhc3NHcm91cElkXSB8fCBbXTtcbiAgICBpZiAoaGFzUG9zdGZpeE1vZGlmaWVyICYmIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyc1tjbGFzc0dyb3VwSWRdKSB7XG4gICAgICByZXR1cm4gWy4uLmNvbmZsaWN0cywgLi4uY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzW2NsYXNzR3JvdXBJZF1dO1xuICAgIH1cbiAgICByZXR1cm4gY29uZmxpY3RzO1xuICB9XG4gIHJldHVybiB7XG4gICAgZ2V0Q2xhc3NHcm91cElkLFxuICAgIGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkc1xuICB9O1xufVxuZnVuY3Rpb24gZ2V0R3JvdXBSZWN1cnNpdmUoY2xhc3NQYXJ0cywgY2xhc3NQYXJ0T2JqZWN0KSB7XG4gIGlmIChjbGFzc1BhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBjbGFzc1BhcnRPYmplY3QuY2xhc3NHcm91cElkO1xuICB9XG4gIGNvbnN0IGN1cnJlbnRDbGFzc1BhcnQgPSBjbGFzc1BhcnRzWzBdO1xuICBjb25zdCBuZXh0Q2xhc3NQYXJ0T2JqZWN0ID0gY2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LmdldChjdXJyZW50Q2xhc3NQYXJ0KTtcbiAgY29uc3QgY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0ID0gbmV4dENsYXNzUGFydE9iamVjdCA/IGdldEdyb3VwUmVjdXJzaXZlKGNsYXNzUGFydHMuc2xpY2UoMSksIG5leHRDbGFzc1BhcnRPYmplY3QpIDogdW5kZWZpbmVkO1xuICBpZiAoY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0KSB7XG4gICAgcmV0dXJuIGNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydDtcbiAgfVxuICBpZiAoY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBjbGFzc1Jlc3QgPSBjbGFzc1BhcnRzLmpvaW4oQ0xBU1NfUEFSVF9TRVBBUkFUT1IpO1xuICByZXR1cm4gY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMuZmluZCgoe1xuICAgIHZhbGlkYXRvclxuICB9KSA9PiB2YWxpZGF0b3IoY2xhc3NSZXN0KSk/LmNsYXNzR3JvdXBJZDtcbn1cbmNvbnN0IGFyYml0cmFyeVByb3BlcnR5UmVnZXggPSAvXlxcWyguKylcXF0kLztcbmZ1bmN0aW9uIGdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eShjbGFzc05hbWUpIHtcbiAgaWYgKGFyYml0cmFyeVByb3BlcnR5UmVnZXgudGVzdChjbGFzc05hbWUpKSB7XG4gICAgY29uc3QgYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUgPSBhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4LmV4ZWMoY2xhc3NOYW1lKVsxXTtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IGFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lPy5zdWJzdHJpbmcoMCwgYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUuaW5kZXhPZignOicpKTtcbiAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgIC8vIEkgdXNlIHR3byBkb3RzIGhlcmUgYmVjYXVzZSBvbmUgZG90IGlzIHVzZWQgYXMgcHJlZml4IGZvciBjbGFzcyBncm91cHMgaW4gcGx1Z2luc1xuICAgICAgcmV0dXJuICdhcmJpdHJhcnkuLicgKyBwcm9wZXJ0eTtcbiAgICB9XG4gIH1cbn1cbi8qKlxuICogRXhwb3J0ZWQgZm9yIHRlc3Rpbmcgb25seVxuICovXG5mdW5jdGlvbiBjcmVhdGVDbGFzc01hcChjb25maWcpIHtcbiAgY29uc3Qge1xuICAgIHRoZW1lLFxuICAgIHByZWZpeFxuICB9ID0gY29uZmlnO1xuICBjb25zdCBjbGFzc01hcCA9IHtcbiAgICBuZXh0UGFydDogbmV3IE1hcCgpLFxuICAgIHZhbGlkYXRvcnM6IFtdXG4gIH07XG4gIGNvbnN0IHByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMgPSBnZXRQcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzKE9iamVjdC5lbnRyaWVzKGNvbmZpZy5jbGFzc0dyb3VwcyksIHByZWZpeCk7XG4gIHByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMuZm9yRWFjaCgoW2NsYXNzR3JvdXBJZCwgY2xhc3NHcm91cF0pID0+IHtcbiAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KGNsYXNzR3JvdXAsIGNsYXNzTWFwLCBjbGFzc0dyb3VwSWQsIHRoZW1lKTtcbiAgfSk7XG4gIHJldHVybiBjbGFzc01hcDtcbn1cbmZ1bmN0aW9uIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoY2xhc3NHcm91cCwgY2xhc3NQYXJ0T2JqZWN0LCBjbGFzc0dyb3VwSWQsIHRoZW1lKSB7XG4gIGNsYXNzR3JvdXAuZm9yRWFjaChjbGFzc0RlZmluaXRpb24gPT4ge1xuICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgY2xhc3NQYXJ0T2JqZWN0VG9FZGl0ID0gY2xhc3NEZWZpbml0aW9uID09PSAnJyA/IGNsYXNzUGFydE9iamVjdCA6IGdldFBhcnQoY2xhc3NQYXJ0T2JqZWN0LCBjbGFzc0RlZmluaXRpb24pO1xuICAgICAgY2xhc3NQYXJ0T2JqZWN0VG9FZGl0LmNsYXNzR3JvdXBJZCA9IGNsYXNzR3JvdXBJZDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChpc1RoZW1lR2V0dGVyKGNsYXNzRGVmaW5pdGlvbikpIHtcbiAgICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShjbGFzc0RlZmluaXRpb24odGhlbWUpLCBjbGFzc1BhcnRPYmplY3QsIGNsYXNzR3JvdXBJZCwgdGhlbWUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5wdXNoKHtcbiAgICAgICAgdmFsaWRhdG9yOiBjbGFzc0RlZmluaXRpb24sXG4gICAgICAgIGNsYXNzR3JvdXBJZFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIE9iamVjdC5lbnRyaWVzKGNsYXNzRGVmaW5pdGlvbikuZm9yRWFjaCgoW2tleSwgY2xhc3NHcm91cF0pID0+IHtcbiAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoY2xhc3NHcm91cCwgZ2V0UGFydChjbGFzc1BhcnRPYmplY3QsIGtleSksIGNsYXNzR3JvdXBJZCwgdGhlbWUpO1xuICAgIH0pO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGdldFBhcnQoY2xhc3NQYXJ0T2JqZWN0LCBwYXRoKSB7XG4gIGxldCBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0ID0gY2xhc3NQYXJ0T2JqZWN0O1xuICBwYXRoLnNwbGl0KENMQVNTX1BBUlRfU0VQQVJBVE9SKS5mb3JFYWNoKHBhdGhQYXJ0ID0+IHtcbiAgICBpZiAoIWN1cnJlbnRDbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuaGFzKHBhdGhQYXJ0KSkge1xuICAgICAgY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5zZXQocGF0aFBhcnQsIHtcbiAgICAgICAgbmV4dFBhcnQ6IG5ldyBNYXAoKSxcbiAgICAgICAgdmFsaWRhdG9yczogW11cbiAgICAgIH0pO1xuICAgIH1cbiAgICBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0ID0gY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5nZXQocGF0aFBhcnQpO1xuICB9KTtcbiAgcmV0dXJuIGN1cnJlbnRDbGFzc1BhcnRPYmplY3Q7XG59XG5mdW5jdGlvbiBpc1RoZW1lR2V0dGVyKGZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmMuaXNUaGVtZUdldHRlcjtcbn1cbmZ1bmN0aW9uIGdldFByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMoY2xhc3NHcm91cEVudHJpZXMsIHByZWZpeCkge1xuICBpZiAoIXByZWZpeCkge1xuICAgIHJldHVybiBjbGFzc0dyb3VwRW50cmllcztcbiAgfVxuICByZXR1cm4gY2xhc3NHcm91cEVudHJpZXMubWFwKChbY2xhc3NHcm91cElkLCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgIGNvbnN0IHByZWZpeGVkQ2xhc3NHcm91cCA9IGNsYXNzR3JvdXAubWFwKGNsYXNzRGVmaW5pdGlvbiA9PiB7XG4gICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHByZWZpeCArIGNsYXNzRGVmaW5pdGlvbjtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGNsYXNzRGVmaW5pdGlvbikubWFwKChba2V5LCB2YWx1ZV0pID0+IFtwcmVmaXggKyBrZXksIHZhbHVlXSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNsYXNzRGVmaW5pdGlvbjtcbiAgICB9KTtcbiAgICByZXR1cm4gW2NsYXNzR3JvdXBJZCwgcHJlZml4ZWRDbGFzc0dyb3VwXTtcbiAgfSk7XG59XG5cbi8vIExSVSBjYWNoZSBpbnNwaXJlZCBmcm9tIGhhc2hscnUgKGh0dHBzOi8vZ2l0aHViLmNvbS9kb21pbmljdGFyci9oYXNobHJ1L2Jsb2IvdjEuMC40L2luZGV4LmpzKSBidXQgb2JqZWN0IHJlcGxhY2VkIHdpdGggTWFwIHRvIGltcHJvdmUgcGVyZm9ybWFuY2VcbmZ1bmN0aW9uIGNyZWF0ZUxydUNhY2hlKG1heENhY2hlU2l6ZSkge1xuICBpZiAobWF4Q2FjaGVTaXplIDwgMSkge1xuICAgIHJldHVybiB7XG4gICAgICBnZXQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgIHNldDogKCkgPT4ge31cbiAgICB9O1xuICB9XG4gIGxldCBjYWNoZVNpemUgPSAwO1xuICBsZXQgY2FjaGUgPSBuZXcgTWFwKCk7XG4gIGxldCBwcmV2aW91c0NhY2hlID0gbmV3IE1hcCgpO1xuICBmdW5jdGlvbiB1cGRhdGUoa2V5LCB2YWx1ZSkge1xuICAgIGNhY2hlLnNldChrZXksIHZhbHVlKTtcbiAgICBjYWNoZVNpemUrKztcbiAgICBpZiAoY2FjaGVTaXplID4gbWF4Q2FjaGVTaXplKSB7XG4gICAgICBjYWNoZVNpemUgPSAwO1xuICAgICAgcHJldmlvdXNDYWNoZSA9IGNhY2hlO1xuICAgICAgY2FjaGUgPSBuZXcgTWFwKCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgZ2V0KGtleSkge1xuICAgICAgbGV0IHZhbHVlID0gY2FjaGUuZ2V0KGtleSk7XG4gICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoKHZhbHVlID0gcHJldmlvdXNDYWNoZS5nZXQoa2V5KSkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cGRhdGUoa2V5LCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNldChrZXksIHZhbHVlKSB7XG4gICAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgICAgY2FjaGUuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXBkYXRlKGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbmNvbnN0IElNUE9SVEFOVF9NT0RJRklFUiA9ICchJztcbmZ1bmN0aW9uIGNyZWF0ZVBhcnNlQ2xhc3NOYW1lKGNvbmZpZykge1xuICBjb25zdCB7XG4gICAgc2VwYXJhdG9yLFxuICAgIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lXG4gIH0gPSBjb25maWc7XG4gIGNvbnN0IGlzU2VwYXJhdG9yU2luZ2xlQ2hhcmFjdGVyID0gc2VwYXJhdG9yLmxlbmd0aCA9PT0gMTtcbiAgY29uc3QgZmlyc3RTZXBhcmF0b3JDaGFyYWN0ZXIgPSBzZXBhcmF0b3JbMF07XG4gIGNvbnN0IHNlcGFyYXRvckxlbmd0aCA9IHNlcGFyYXRvci5sZW5ndGg7XG4gIC8vIHBhcnNlQ2xhc3NOYW1lIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS90YWlsd2luZGxhYnMvdGFpbHdpbmRjc3MvYmxvYi92My4yLjIvc3JjL3V0aWwvc3BsaXRBdFRvcExldmVsT25seS5qc1xuICBmdW5jdGlvbiBwYXJzZUNsYXNzTmFtZShjbGFzc05hbWUpIHtcbiAgICBjb25zdCBtb2RpZmllcnMgPSBbXTtcbiAgICBsZXQgYnJhY2tldERlcHRoID0gMDtcbiAgICBsZXQgbW9kaWZpZXJTdGFydCA9IDA7XG4gICAgbGV0IHBvc3RmaXhNb2RpZmllclBvc2l0aW9uO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjbGFzc05hbWUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBsZXQgY3VycmVudENoYXJhY3RlciA9IGNsYXNzTmFtZVtpbmRleF07XG4gICAgICBpZiAoYnJhY2tldERlcHRoID09PSAwKSB7XG4gICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSBmaXJzdFNlcGFyYXRvckNoYXJhY3RlciAmJiAoaXNTZXBhcmF0b3JTaW5nbGVDaGFyYWN0ZXIgfHwgY2xhc3NOYW1lLnNsaWNlKGluZGV4LCBpbmRleCArIHNlcGFyYXRvckxlbmd0aCkgPT09IHNlcGFyYXRvcikpIHtcbiAgICAgICAgICBtb2RpZmllcnMucHVzaChjbGFzc05hbWUuc2xpY2UobW9kaWZpZXJTdGFydCwgaW5kZXgpKTtcbiAgICAgICAgICBtb2RpZmllclN0YXJ0ID0gaW5kZXggKyBzZXBhcmF0b3JMZW5ndGg7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICcvJykge1xuICAgICAgICAgIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uID0gaW5kZXg7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSAnWycpIHtcbiAgICAgICAgYnJhY2tldERlcHRoKys7XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICddJykge1xuICAgICAgICBicmFja2V0RGVwdGgtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllciA9IG1vZGlmaWVycy5sZW5ndGggPT09IDAgPyBjbGFzc05hbWUgOiBjbGFzc05hbWUuc3Vic3RyaW5nKG1vZGlmaWVyU3RhcnQpO1xuICAgIGNvbnN0IGhhc0ltcG9ydGFudE1vZGlmaWVyID0gYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllci5zdGFydHNXaXRoKElNUE9SVEFOVF9NT0RJRklFUik7XG4gICAgY29uc3QgYmFzZUNsYXNzTmFtZSA9IGhhc0ltcG9ydGFudE1vZGlmaWVyID8gYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllci5zdWJzdHJpbmcoMSkgOiBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyO1xuICAgIGNvbnN0IG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gPSBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiAmJiBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA+IG1vZGlmaWVyU3RhcnQgPyBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiAtIG1vZGlmaWVyU3RhcnQgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZGlmaWVycyxcbiAgICAgIGhhc0ltcG9ydGFudE1vZGlmaWVyLFxuICAgICAgYmFzZUNsYXNzTmFtZSxcbiAgICAgIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb25cbiAgICB9O1xuICB9XG4gIGlmIChleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBwYXJzZUNsYXNzTmFtZUV4cGVyaW1lbnRhbChjbGFzc05hbWUpIHtcbiAgICAgIHJldHVybiBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSh7XG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgcGFyc2VDbGFzc05hbWVcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIHBhcnNlQ2xhc3NOYW1lO1xufVxuLyoqXG4gKiBTb3J0cyBtb2RpZmllcnMgYWNjb3JkaW5nIHRvIGZvbGxvd2luZyBzY2hlbWE6XG4gKiAtIFByZWRlZmluZWQgbW9kaWZpZXJzIGFyZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHlcbiAqIC0gV2hlbiBhbiBhcmJpdHJhcnkgdmFyaWFudCBhcHBlYXJzLCBpdCBtdXN0IGJlIHByZXNlcnZlZCB3aGljaCBtb2RpZmllcnMgYXJlIGJlZm9yZSBhbmQgYWZ0ZXIgaXRcbiAqL1xuZnVuY3Rpb24gc29ydE1vZGlmaWVycyhtb2RpZmllcnMpIHtcbiAgaWYgKG1vZGlmaWVycy5sZW5ndGggPD0gMSkge1xuICAgIHJldHVybiBtb2RpZmllcnM7XG4gIH1cbiAgY29uc3Qgc29ydGVkTW9kaWZpZXJzID0gW107XG4gIGxldCB1bnNvcnRlZE1vZGlmaWVycyA9IFtdO1xuICBtb2RpZmllcnMuZm9yRWFjaChtb2RpZmllciA9PiB7XG4gICAgY29uc3QgaXNBcmJpdHJhcnlWYXJpYW50ID0gbW9kaWZpZXJbMF0gPT09ICdbJztcbiAgICBpZiAoaXNBcmJpdHJhcnlWYXJpYW50KSB7XG4gICAgICBzb3J0ZWRNb2RpZmllcnMucHVzaCguLi51bnNvcnRlZE1vZGlmaWVycy5zb3J0KCksIG1vZGlmaWVyKTtcbiAgICAgIHVuc29ydGVkTW9kaWZpZXJzID0gW107XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuc29ydGVkTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xuICAgIH1cbiAgfSk7XG4gIHNvcnRlZE1vZGlmaWVycy5wdXNoKC4uLnVuc29ydGVkTW9kaWZpZXJzLnNvcnQoKSk7XG4gIHJldHVybiBzb3J0ZWRNb2RpZmllcnM7XG59XG5mdW5jdGlvbiBjcmVhdGVDb25maWdVdGlscyhjb25maWcpIHtcbiAgcmV0dXJuIHtcbiAgICBjYWNoZTogY3JlYXRlTHJ1Q2FjaGUoY29uZmlnLmNhY2hlU2l6ZSksXG4gICAgcGFyc2VDbGFzc05hbWU6IGNyZWF0ZVBhcnNlQ2xhc3NOYW1lKGNvbmZpZyksXG4gICAgLi4uY3JlYXRlQ2xhc3NHcm91cFV0aWxzKGNvbmZpZylcbiAgfTtcbn1cbmNvbnN0IFNQTElUX0NMQVNTRVNfUkVHRVggPSAvXFxzKy87XG5mdW5jdGlvbiBtZXJnZUNsYXNzTGlzdChjbGFzc0xpc3QsIGNvbmZpZ1V0aWxzKSB7XG4gIGNvbnN0IHtcbiAgICBwYXJzZUNsYXNzTmFtZSxcbiAgICBnZXRDbGFzc0dyb3VwSWQsXG4gICAgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzXG4gIH0gPSBjb25maWdVdGlscztcbiAgLyoqXG4gICAqIFNldCBvZiBjbGFzc0dyb3VwSWRzIGluIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAqIGB7aW1wb3J0YW50TW9kaWZpZXJ9e3ZhcmlhbnRNb2RpZmllcnN9e2NsYXNzR3JvdXBJZH1gXG4gICAqIEBleGFtcGxlICdmbG9hdCdcbiAgICogQGV4YW1wbGUgJ2hvdmVyOmZvY3VzOmJnLWNvbG9yJ1xuICAgKiBAZXhhbXBsZSAnbWQ6IXByJ1xuICAgKi9cbiAgY29uc3QgY2xhc3NHcm91cHNJbkNvbmZsaWN0ID0gbmV3IFNldCgpO1xuICByZXR1cm4gY2xhc3NMaXN0LnRyaW0oKS5zcGxpdChTUExJVF9DTEFTU0VTX1JFR0VYKS5tYXAob3JpZ2luYWxDbGFzc05hbWUgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG1vZGlmaWVycyxcbiAgICAgIGhhc0ltcG9ydGFudE1vZGlmaWVyLFxuICAgICAgYmFzZUNsYXNzTmFtZSxcbiAgICAgIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb25cbiAgICB9ID0gcGFyc2VDbGFzc05hbWUob3JpZ2luYWxDbGFzc05hbWUpO1xuICAgIGxldCBoYXNQb3N0Zml4TW9kaWZpZXIgPSBCb29sZWFuKG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24pO1xuICAgIGxldCBjbGFzc0dyb3VwSWQgPSBnZXRDbGFzc0dyb3VwSWQoaGFzUG9zdGZpeE1vZGlmaWVyID8gYmFzZUNsYXNzTmFtZS5zdWJzdHJpbmcoMCwgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbikgOiBiYXNlQ2xhc3NOYW1lKTtcbiAgICBpZiAoIWNsYXNzR3JvdXBJZCkge1xuICAgICAgaWYgKCFoYXNQb3N0Zml4TW9kaWZpZXIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpc1RhaWx3aW5kQ2xhc3M6IGZhbHNlLFxuICAgICAgICAgIG9yaWdpbmFsQ2xhc3NOYW1lXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjbGFzc0dyb3VwSWQgPSBnZXRDbGFzc0dyb3VwSWQoYmFzZUNsYXNzTmFtZSk7XG4gICAgICBpZiAoIWNsYXNzR3JvdXBJZCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlzVGFpbHdpbmRDbGFzczogZmFsc2UsXG4gICAgICAgICAgb3JpZ2luYWxDbGFzc05hbWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGhhc1Bvc3RmaXhNb2RpZmllciA9IGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB2YXJpYW50TW9kaWZpZXIgPSBzb3J0TW9kaWZpZXJzKG1vZGlmaWVycykuam9pbignOicpO1xuICAgIGNvbnN0IG1vZGlmaWVySWQgPSBoYXNJbXBvcnRhbnRNb2RpZmllciA/IHZhcmlhbnRNb2RpZmllciArIElNUE9SVEFOVF9NT0RJRklFUiA6IHZhcmlhbnRNb2RpZmllcjtcbiAgICByZXR1cm4ge1xuICAgICAgaXNUYWlsd2luZENsYXNzOiB0cnVlLFxuICAgICAgbW9kaWZpZXJJZCxcbiAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgIG9yaWdpbmFsQ2xhc3NOYW1lLFxuICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyXG4gICAgfTtcbiAgfSkucmV2ZXJzZSgpXG4gIC8vIExhc3QgY2xhc3MgaW4gY29uZmxpY3Qgd2lucywgc28gd2UgbmVlZCB0byBmaWx0ZXIgY29uZmxpY3RpbmcgY2xhc3NlcyBpbiByZXZlcnNlIG9yZGVyLlxuICAuZmlsdGVyKHBhcnNlZCA9PiB7XG4gICAgaWYgKCFwYXJzZWQuaXNUYWlsd2luZENsYXNzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3Qge1xuICAgICAgbW9kaWZpZXJJZCxcbiAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgIGhhc1Bvc3RmaXhNb2RpZmllclxuICAgIH0gPSBwYXJzZWQ7XG4gICAgY29uc3QgY2xhc3NJZCA9IG1vZGlmaWVySWQgKyBjbGFzc0dyb3VwSWQ7XG4gICAgaWYgKGNsYXNzR3JvdXBzSW5Db25mbGljdC5oYXMoY2xhc3NJZCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY2xhc3NHcm91cHNJbkNvbmZsaWN0LmFkZChjbGFzc0lkKTtcbiAgICBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMoY2xhc3NHcm91cElkLCBoYXNQb3N0Zml4TW9kaWZpZXIpLmZvckVhY2goZ3JvdXAgPT4gY2xhc3NHcm91cHNJbkNvbmZsaWN0LmFkZChtb2RpZmllcklkICsgZ3JvdXApKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSkucmV2ZXJzZSgpLm1hcChwYXJzZWQgPT4gcGFyc2VkLm9yaWdpbmFsQ2xhc3NOYW1lKS5qb2luKCcgJyk7XG59XG5cbi8qKlxuICogVGhlIGNvZGUgaW4gdGhpcyBmaWxlIGlzIGNvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeCBhbmQgbW9kaWZpZWQgdG8gc3VpdCB0aGUgbmVlZHMgb2YgdGFpbHdpbmQtbWVyZ2UgYmV0dGVyLlxuICpcbiAqIFNwZWNpZmljYWxseTpcbiAqIC0gUnVudGltZSBjb2RlIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL3NyYy9pbmRleC5qc1xuICogLSBUeXBlU2NyaXB0IHR5cGVzIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL2Nsc3guZC50c1xuICpcbiAqIE9yaWdpbmFsIGNvZGUgaGFzIE1JVCBsaWNlbnNlOiBDb3B5cmlnaHQgKGMpIEx1a2UgRWR3YXJkcyA8bHVrZS5lZHdhcmRzMDVAZ21haWwuY29tPiAobHVrZWVkLmNvbSlcbiAqL1xuZnVuY3Rpb24gdHdKb2luKCkge1xuICBsZXQgaW5kZXggPSAwO1xuICBsZXQgYXJndW1lbnQ7XG4gIGxldCByZXNvbHZlZFZhbHVlO1xuICBsZXQgc3RyaW5nID0gJyc7XG4gIHdoaWxlIChpbmRleCA8IGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICBpZiAoYXJndW1lbnQgPSBhcmd1bWVudHNbaW5kZXgrK10pIHtcbiAgICAgIGlmIChyZXNvbHZlZFZhbHVlID0gdG9WYWx1ZShhcmd1bWVudCkpIHtcbiAgICAgICAgc3RyaW5nICYmIChzdHJpbmcgKz0gJyAnKTtcbiAgICAgICAgc3RyaW5nICs9IHJlc29sdmVkVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHJpbmc7XG59XG5mdW5jdGlvbiB0b1ZhbHVlKG1peCkge1xuICBpZiAodHlwZW9mIG1peCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbWl4O1xuICB9XG4gIGxldCByZXNvbHZlZFZhbHVlO1xuICBsZXQgc3RyaW5nID0gJyc7XG4gIGZvciAobGV0IGsgPSAwOyBrIDwgbWl4Lmxlbmd0aDsgaysrKSB7XG4gICAgaWYgKG1peFtrXSkge1xuICAgICAgaWYgKHJlc29sdmVkVmFsdWUgPSB0b1ZhbHVlKG1peFtrXSkpIHtcbiAgICAgICAgc3RyaW5nICYmIChzdHJpbmcgKz0gJyAnKTtcbiAgICAgICAgc3RyaW5nICs9IHJlc29sdmVkVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHJpbmc7XG59XG5mdW5jdGlvbiBjcmVhdGVUYWlsd2luZE1lcmdlKGNyZWF0ZUNvbmZpZ0ZpcnN0LCAuLi5jcmVhdGVDb25maWdSZXN0KSB7XG4gIGxldCBjb25maWdVdGlscztcbiAgbGV0IGNhY2hlR2V0O1xuICBsZXQgY2FjaGVTZXQ7XG4gIGxldCBmdW5jdGlvblRvQ2FsbCA9IGluaXRUYWlsd2luZE1lcmdlO1xuICBmdW5jdGlvbiBpbml0VGFpbHdpbmRNZXJnZShjbGFzc0xpc3QpIHtcbiAgICBjb25zdCBjb25maWcgPSBjcmVhdGVDb25maWdSZXN0LnJlZHVjZSgocHJldmlvdXNDb25maWcsIGNyZWF0ZUNvbmZpZ0N1cnJlbnQpID0+IGNyZWF0ZUNvbmZpZ0N1cnJlbnQocHJldmlvdXNDb25maWcpLCBjcmVhdGVDb25maWdGaXJzdCgpKTtcbiAgICBjb25maWdVdGlscyA9IGNyZWF0ZUNvbmZpZ1V0aWxzKGNvbmZpZyk7XG4gICAgY2FjaGVHZXQgPSBjb25maWdVdGlscy5jYWNoZS5nZXQ7XG4gICAgY2FjaGVTZXQgPSBjb25maWdVdGlscy5jYWNoZS5zZXQ7XG4gICAgZnVuY3Rpb25Ub0NhbGwgPSB0YWlsd2luZE1lcmdlO1xuICAgIHJldHVybiB0YWlsd2luZE1lcmdlKGNsYXNzTGlzdCk7XG4gIH1cbiAgZnVuY3Rpb24gdGFpbHdpbmRNZXJnZShjbGFzc0xpc3QpIHtcbiAgICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZUdldChjbGFzc0xpc3QpO1xuICAgIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IG1lcmdlQ2xhc3NMaXN0KGNsYXNzTGlzdCwgY29uZmlnVXRpbHMpO1xuICAgIGNhY2hlU2V0KGNsYXNzTGlzdCwgcmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiBjYWxsVGFpbHdpbmRNZXJnZSgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb25Ub0NhbGwodHdKb2luLmFwcGx5KG51bGwsIGFyZ3VtZW50cykpO1xuICB9O1xufVxuZnVuY3Rpb24gZnJvbVRoZW1lKGtleSkge1xuICBjb25zdCB0aGVtZUdldHRlciA9IHRoZW1lID0+IHRoZW1lW2tleV0gfHwgW107XG4gIHRoZW1lR2V0dGVyLmlzVGhlbWVHZXR0ZXIgPSB0cnVlO1xuICByZXR1cm4gdGhlbWVHZXR0ZXI7XG59XG5jb25zdCBhcmJpdHJhcnlWYWx1ZVJlZ2V4ID0gL15cXFsoPzooW2Etei1dKyk6KT8oLispXFxdJC9pO1xuY29uc3QgZnJhY3Rpb25SZWdleCA9IC9eXFxkK1xcL1xcZCskLztcbmNvbnN0IHN0cmluZ0xlbmd0aHMgPSAvKiNfX1BVUkVfXyovbmV3IFNldChbJ3B4JywgJ2Z1bGwnLCAnc2NyZWVuJ10pO1xuY29uc3QgdHNoaXJ0VW5pdFJlZ2V4ID0gL14oXFxkKyhcXC5cXGQrKT8pPyh4c3xzbXxtZHxsZ3x4bCkkLztcbmNvbnN0IGxlbmd0aFVuaXRSZWdleCA9IC9cXGQrKCV8cHh8cj9lbXxbc2RsXT92KFtod2liXXxtaW58bWF4KXxwdHxwY3xpbnxjbXxtbXxjYXB8Y2h8ZXh8cj9saHxjcSh3fGh8aXxifG1pbnxtYXgpKXxcXGIoY2FsY3xtaW58bWF4fGNsYW1wKVxcKC4rXFwpfF4wJC87XG5jb25zdCBjb2xvckZ1bmN0aW9uUmVnZXggPSAvXihyZ2JhP3xoc2xhP3xod2J8KG9rKT8obGFifGxjaCkpXFwoLitcXCkkLztcbi8vIFNoYWRvdyBhbHdheXMgYmVnaW5zIHdpdGggeCBhbmQgeSBvZmZzZXQgc2VwYXJhdGVkIGJ5IHVuZGVyc2NvcmUgb3B0aW9uYWxseSBwcmVwZW5kZWQgYnkgaW5zZXRcbmNvbnN0IHNoYWRvd1JlZ2V4ID0gL14oaW5zZXRfKT8tPygoXFxkKyk/XFwuPyhcXGQrKVthLXpdK3wwKV8tPygoXFxkKyk/XFwuPyhcXGQrKVthLXpdK3wwKS87XG5jb25zdCBpbWFnZVJlZ2V4ID0gL14odXJsfGltYWdlfGltYWdlLXNldHxjcm9zcy1mYWRlfGVsZW1lbnR8KHJlcGVhdGluZy0pPyhsaW5lYXJ8cmFkaWFsfGNvbmljKS1ncmFkaWVudClcXCguK1xcKSQvO1xuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIGlzTnVtYmVyKHZhbHVlKSB8fCBzdHJpbmdMZW5ndGhzLmhhcyh2YWx1ZSkgfHwgZnJhY3Rpb25SZWdleC50ZXN0KHZhbHVlKTtcbn1cbmZ1bmN0aW9uIGlzQXJiaXRyYXJ5TGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnbGVuZ3RoJywgaXNMZW5ndGhPbmx5KTtcbn1cbmZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gIHJldHVybiBCb29sZWFuKHZhbHVlKSAmJiAhTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpO1xufVxuZnVuY3Rpb24gaXNBcmJpdHJhcnlOdW1iZXIodmFsdWUpIHtcbiAgcmV0dXJuIGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdudW1iZXInLCBpc051bWJlcik7XG59XG5mdW5jdGlvbiBpc0ludGVnZXIodmFsdWUpIHtcbiAgcmV0dXJuIEJvb2xlYW4odmFsdWUpICYmIE51bWJlci5pc0ludGVnZXIoTnVtYmVyKHZhbHVlKSk7XG59XG5mdW5jdGlvbiBpc1BlcmNlbnQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlLmVuZHNXaXRoKCclJykgJiYgaXNOdW1iZXIodmFsdWUuc2xpY2UoMCwgLTEpKTtcbn1cbmZ1bmN0aW9uIGlzQXJiaXRyYXJ5VmFsdWUodmFsdWUpIHtcbiAgcmV0dXJuIGFyYml0cmFyeVZhbHVlUmVnZXgudGVzdCh2YWx1ZSk7XG59XG5mdW5jdGlvbiBpc1RzaGlydFNpemUodmFsdWUpIHtcbiAgcmV0dXJuIHRzaGlydFVuaXRSZWdleC50ZXN0KHZhbHVlKTtcbn1cbmNvbnN0IHNpemVMYWJlbHMgPSAvKiNfX1BVUkVfXyovbmV3IFNldChbJ2xlbmd0aCcsICdzaXplJywgJ3BlcmNlbnRhZ2UnXSk7XG5mdW5jdGlvbiBpc0FyYml0cmFyeVNpemUodmFsdWUpIHtcbiAgcmV0dXJuIGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsIHNpemVMYWJlbHMsIGlzTmV2ZXIpO1xufVxuZnVuY3Rpb24gaXNBcmJpdHJhcnlQb3NpdGlvbih2YWx1ZSkge1xuICByZXR1cm4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ3Bvc2l0aW9uJywgaXNOZXZlcik7XG59XG5jb25zdCBpbWFnZUxhYmVscyA9IC8qI19fUFVSRV9fKi9uZXcgU2V0KFsnaW1hZ2UnLCAndXJsJ10pO1xuZnVuY3Rpb24gaXNBcmJpdHJhcnlJbWFnZSh2YWx1ZSkge1xuICByZXR1cm4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgaW1hZ2VMYWJlbHMsIGlzSW1hZ2UpO1xufVxuZnVuY3Rpb24gaXNBcmJpdHJhcnlTaGFkb3codmFsdWUpIHtcbiAgcmV0dXJuIGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICcnLCBpc1NoYWRvdyk7XG59XG5mdW5jdGlvbiBpc0FueSgpIHtcbiAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCBsYWJlbCwgdGVzdFZhbHVlKSB7XG4gIGNvbnN0IHJlc3VsdCA9IGFyYml0cmFyeVZhbHVlUmVnZXguZXhlYyh2YWx1ZSk7XG4gIGlmIChyZXN1bHQpIHtcbiAgICBpZiAocmVzdWx0WzFdKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGxhYmVsID09PSAnc3RyaW5nJyA/IHJlc3VsdFsxXSA9PT0gbGFiZWwgOiBsYWJlbC5oYXMocmVzdWx0WzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIHRlc3RWYWx1ZShyZXN1bHRbMl0pO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGlzTGVuZ3RoT25seSh2YWx1ZSkge1xuICAvLyBgY29sb3JGdW5jdGlvblJlZ2V4YCBjaGVjayBpcyBuZWNlc3NhcnkgYmVjYXVzZSBjb2xvciBmdW5jdGlvbnMgY2FuIGhhdmUgcGVyY2VudGFnZXMgaW4gdGhlbSB3aGljaCB3aGljaCB3b3VsZCBiZSBpbmNvcnJlY3RseSBjbGFzc2lmaWVkIGFzIGxlbmd0aHMuXG4gIC8vIEZvciBleGFtcGxlLCBgaHNsKDAgMCUgMCUpYCB3b3VsZCBiZSBjbGFzc2lmaWVkIGFzIGEgbGVuZ3RoIHdpdGhvdXQgdGhpcyBjaGVjay5cbiAgLy8gSSBjb3VsZCBhbHNvIHVzZSBsb29rYmVoaW5kIGFzc2VydGlvbiBpbiBgbGVuZ3RoVW5pdFJlZ2V4YCBidXQgdGhhdCBpc24ndCBzdXBwb3J0ZWQgd2lkZWx5IGVub3VnaC5cbiAgcmV0dXJuIGxlbmd0aFVuaXRSZWdleC50ZXN0KHZhbHVlKSAmJiAhY29sb3JGdW5jdGlvblJlZ2V4LnRlc3QodmFsdWUpO1xufVxuZnVuY3Rpb24gaXNOZXZlcigpIHtcbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gaXNTaGFkb3codmFsdWUpIHtcbiAgcmV0dXJuIHNoYWRvd1JlZ2V4LnRlc3QodmFsdWUpO1xufVxuZnVuY3Rpb24gaXNJbWFnZSh2YWx1ZSkge1xuICByZXR1cm4gaW1hZ2VSZWdleC50ZXN0KHZhbHVlKTtcbn1cbmNvbnN0IHZhbGlkYXRvcnMgPSAvKiNfX1BVUkVfXyovT2JqZWN0LmRlZmluZVByb3BlcnR5KHtcbiAgX19wcm90b19fOiBudWxsLFxuICBpc0FueSxcbiAgaXNBcmJpdHJhcnlJbWFnZSxcbiAgaXNBcmJpdHJhcnlMZW5ndGgsXG4gIGlzQXJiaXRyYXJ5TnVtYmVyLFxuICBpc0FyYml0cmFyeVBvc2l0aW9uLFxuICBpc0FyYml0cmFyeVNoYWRvdyxcbiAgaXNBcmJpdHJhcnlTaXplLFxuICBpc0FyYml0cmFyeVZhbHVlLFxuICBpc0ludGVnZXIsXG4gIGlzTGVuZ3RoLFxuICBpc051bWJlcixcbiAgaXNQZXJjZW50LFxuICBpc1RzaGlydFNpemVcbn0sIFN5bWJvbC50b1N0cmluZ1RhZywge1xuICB2YWx1ZTogJ01vZHVsZSdcbn0pO1xuZnVuY3Rpb24gZ2V0RGVmYXVsdENvbmZpZygpIHtcbiAgY29uc3QgY29sb3JzID0gZnJvbVRoZW1lKCdjb2xvcnMnKTtcbiAgY29uc3Qgc3BhY2luZyA9IGZyb21UaGVtZSgnc3BhY2luZycpO1xuICBjb25zdCBibHVyID0gZnJvbVRoZW1lKCdibHVyJyk7XG4gIGNvbnN0IGJyaWdodG5lc3MgPSBmcm9tVGhlbWUoJ2JyaWdodG5lc3MnKTtcbiAgY29uc3QgYm9yZGVyQ29sb3IgPSBmcm9tVGhlbWUoJ2JvcmRlckNvbG9yJyk7XG4gIGNvbnN0IGJvcmRlclJhZGl1cyA9IGZyb21UaGVtZSgnYm9yZGVyUmFkaXVzJyk7XG4gIGNvbnN0IGJvcmRlclNwYWNpbmcgPSBmcm9tVGhlbWUoJ2JvcmRlclNwYWNpbmcnKTtcbiAgY29uc3QgYm9yZGVyV2lkdGggPSBmcm9tVGhlbWUoJ2JvcmRlcldpZHRoJyk7XG4gIGNvbnN0IGNvbnRyYXN0ID0gZnJvbVRoZW1lKCdjb250cmFzdCcpO1xuICBjb25zdCBncmF5c2NhbGUgPSBmcm9tVGhlbWUoJ2dyYXlzY2FsZScpO1xuICBjb25zdCBodWVSb3RhdGUgPSBmcm9tVGhlbWUoJ2h1ZVJvdGF0ZScpO1xuICBjb25zdCBpbnZlcnQgPSBmcm9tVGhlbWUoJ2ludmVydCcpO1xuICBjb25zdCBnYXAgPSBmcm9tVGhlbWUoJ2dhcCcpO1xuICBjb25zdCBncmFkaWVudENvbG9yU3RvcHMgPSBmcm9tVGhlbWUoJ2dyYWRpZW50Q29sb3JTdG9wcycpO1xuICBjb25zdCBncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucyA9IGZyb21UaGVtZSgnZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMnKTtcbiAgY29uc3QgaW5zZXQgPSBmcm9tVGhlbWUoJ2luc2V0Jyk7XG4gIGNvbnN0IG1hcmdpbiA9IGZyb21UaGVtZSgnbWFyZ2luJyk7XG4gIGNvbnN0IG9wYWNpdHkgPSBmcm9tVGhlbWUoJ29wYWNpdHknKTtcbiAgY29uc3QgcGFkZGluZyA9IGZyb21UaGVtZSgncGFkZGluZycpO1xuICBjb25zdCBzYXR1cmF0ZSA9IGZyb21UaGVtZSgnc2F0dXJhdGUnKTtcbiAgY29uc3Qgc2NhbGUgPSBmcm9tVGhlbWUoJ3NjYWxlJyk7XG4gIGNvbnN0IHNlcGlhID0gZnJvbVRoZW1lKCdzZXBpYScpO1xuICBjb25zdCBza2V3ID0gZnJvbVRoZW1lKCdza2V3Jyk7XG4gIGNvbnN0IHNwYWNlID0gZnJvbVRoZW1lKCdzcGFjZScpO1xuICBjb25zdCB0cmFuc2xhdGUgPSBmcm9tVGhlbWUoJ3RyYW5zbGF0ZScpO1xuICBjb25zdCBnZXRPdmVyc2Nyb2xsID0gKCkgPT4gWydhdXRvJywgJ2NvbnRhaW4nLCAnbm9uZSddO1xuICBjb25zdCBnZXRPdmVyZmxvdyA9ICgpID0+IFsnYXV0bycsICdoaWRkZW4nLCAnY2xpcCcsICd2aXNpYmxlJywgJ3Njcm9sbCddO1xuICBjb25zdCBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkgPSAoKSA9PiBbJ2F1dG8nLCBpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nXTtcbiAgY29uc3QgZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkgPSAoKSA9PiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZ107XG4gIGNvbnN0IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSA9ICgpID0+IFsnJywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXTtcbiAgY29uc3QgZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkgPSAoKSA9PiBbJ2F1dG8nLCBpc051bWJlciwgaXNBcmJpdHJhcnlWYWx1ZV07XG4gIGNvbnN0IGdldFBvc2l0aW9ucyA9ICgpID0+IFsnYm90dG9tJywgJ2NlbnRlcicsICdsZWZ0JywgJ2xlZnQtYm90dG9tJywgJ2xlZnQtdG9wJywgJ3JpZ2h0JywgJ3JpZ2h0LWJvdHRvbScsICdyaWdodC10b3AnLCAndG9wJ107XG4gIGNvbnN0IGdldExpbmVTdHlsZXMgPSAoKSA9PiBbJ3NvbGlkJywgJ2Rhc2hlZCcsICdkb3R0ZWQnLCAnZG91YmxlJywgJ25vbmUnXTtcbiAgY29uc3QgZ2V0QmxlbmRNb2RlcyA9ICgpID0+IFsnbm9ybWFsJywgJ211bHRpcGx5JywgJ3NjcmVlbicsICdvdmVybGF5JywgJ2RhcmtlbicsICdsaWdodGVuJywgJ2NvbG9yLWRvZGdlJywgJ2NvbG9yLWJ1cm4nLCAnaGFyZC1saWdodCcsICdzb2Z0LWxpZ2h0JywgJ2RpZmZlcmVuY2UnLCAnZXhjbHVzaW9uJywgJ2h1ZScsICdzYXR1cmF0aW9uJywgJ2NvbG9yJywgJ2x1bWlub3NpdHknXTtcbiAgY29uc3QgZ2V0QWxpZ24gPSAoKSA9PiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmV0d2VlbicsICdhcm91bmQnLCAnZXZlbmx5JywgJ3N0cmV0Y2gnXTtcbiAgY29uc3QgZ2V0WmVyb0FuZEVtcHR5ID0gKCkgPT4gWycnLCAnMCcsIGlzQXJiaXRyYXJ5VmFsdWVdO1xuICBjb25zdCBnZXRCcmVha3MgPSAoKSA9PiBbJ2F1dG8nLCAnYXZvaWQnLCAnYWxsJywgJ2F2b2lkLXBhZ2UnLCAncGFnZScsICdsZWZ0JywgJ3JpZ2h0JywgJ2NvbHVtbiddO1xuICBjb25zdCBnZXROdW1iZXIgPSAoKSA9PiBbaXNOdW1iZXIsIGlzQXJiaXRyYXJ5TnVtYmVyXTtcbiAgY29uc3QgZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5ID0gKCkgPT4gW2lzTnVtYmVyLCBpc0FyYml0cmFyeVZhbHVlXTtcbiAgcmV0dXJuIHtcbiAgICBjYWNoZVNpemU6IDUwMCxcbiAgICBzZXBhcmF0b3I6ICc6JyxcbiAgICB0aGVtZToge1xuICAgICAgY29sb3JzOiBbaXNBbnldLFxuICAgICAgc3BhY2luZzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0sXG4gICAgICBibHVyOiBbJ25vbmUnLCAnJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXSxcbiAgICAgIGJyaWdodG5lc3M6IGdldE51bWJlcigpLFxuICAgICAgYm9yZGVyQ29sb3I6IFtjb2xvcnNdLFxuICAgICAgYm9yZGVyUmFkaXVzOiBbJ25vbmUnLCAnJywgJ2Z1bGwnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdLFxuICAgICAgYm9yZGVyU3BhY2luZzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgIGJvcmRlcldpZHRoOiBnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkoKSxcbiAgICAgIGNvbnRyYXN0OiBnZXROdW1iZXIoKSxcbiAgICAgIGdyYXlzY2FsZTogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICBodWVSb3RhdGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgaW52ZXJ0OiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgIGdhcDogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgIGdyYWRpZW50Q29sb3JTdG9wczogW2NvbG9yc10sXG4gICAgICBncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uczogW2lzUGVyY2VudCwgaXNBcmJpdHJhcnlMZW5ndGhdLFxuICAgICAgaW5zZXQ6IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSgpLFxuICAgICAgbWFyZ2luOiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSxcbiAgICAgIG9wYWNpdHk6IGdldE51bWJlcigpLFxuICAgICAgcGFkZGluZzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgIHNhdHVyYXRlOiBnZXROdW1iZXIoKSxcbiAgICAgIHNjYWxlOiBnZXROdW1iZXIoKSxcbiAgICAgIHNlcGlhOiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgIHNrZXc6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgc3BhY2U6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICB0cmFuc2xhdGU6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICB9LFxuICAgIGNsYXNzR3JvdXBzOiB7XG4gICAgICAvLyBMYXlvdXRcbiAgICAgIC8qKlxuICAgICAgICogQXNwZWN0IFJhdGlvXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYXNwZWN0LXJhdGlvXG4gICAgICAgKi9cbiAgICAgIGFzcGVjdDogW3tcbiAgICAgICAgYXNwZWN0OiBbJ2F1dG8nLCAnc3F1YXJlJywgJ3ZpZGVvJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBDb250YWluZXJcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250YWluZXJcbiAgICAgICAqL1xuICAgICAgY29udGFpbmVyOiBbJ2NvbnRhaW5lciddLFxuICAgICAgLyoqXG4gICAgICAgKiBDb2x1bW5zXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29sdW1uc1xuICAgICAgICovXG4gICAgICBjb2x1bW5zOiBbe1xuICAgICAgICBjb2x1bW5zOiBbaXNUc2hpcnRTaXplXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJyZWFrIEFmdGVyXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstYWZ0ZXJcbiAgICAgICAqL1xuICAgICAgJ2JyZWFrLWFmdGVyJzogW3tcbiAgICAgICAgJ2JyZWFrLWFmdGVyJzogZ2V0QnJlYWtzKClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCcmVhayBCZWZvcmVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1iZWZvcmVcbiAgICAgICAqL1xuICAgICAgJ2JyZWFrLWJlZm9yZSc6IFt7XG4gICAgICAgICdicmVhay1iZWZvcmUnOiBnZXRCcmVha3MoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJyZWFrIEluc2lkZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWluc2lkZVxuICAgICAgICovXG4gICAgICAnYnJlYWstaW5zaWRlJzogW3tcbiAgICAgICAgJ2JyZWFrLWluc2lkZSc6IFsnYXV0bycsICdhdm9pZCcsICdhdm9pZC1wYWdlJywgJ2F2b2lkLWNvbHVtbiddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm94IERlY29yYXRpb24gQnJlYWtcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtZGVjb3JhdGlvbi1icmVha1xuICAgICAgICovXG4gICAgICAnYm94LWRlY29yYXRpb24nOiBbe1xuICAgICAgICAnYm94LWRlY29yYXRpb24nOiBbJ3NsaWNlJywgJ2Nsb25lJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3ggU2l6aW5nXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LXNpemluZ1xuICAgICAgICovXG4gICAgICBib3g6IFt7XG4gICAgICAgIGJveDogWydib3JkZXInLCAnY29udGVudCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRGlzcGxheVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Rpc3BsYXlcbiAgICAgICAqL1xuICAgICAgZGlzcGxheTogWydibG9jaycsICdpbmxpbmUtYmxvY2snLCAnaW5saW5lJywgJ2ZsZXgnLCAnaW5saW5lLWZsZXgnLCAndGFibGUnLCAnaW5saW5lLXRhYmxlJywgJ3RhYmxlLWNhcHRpb24nLCAndGFibGUtY2VsbCcsICd0YWJsZS1jb2x1bW4nLCAndGFibGUtY29sdW1uLWdyb3VwJywgJ3RhYmxlLWZvb3Rlci1ncm91cCcsICd0YWJsZS1oZWFkZXItZ3JvdXAnLCAndGFibGUtcm93LWdyb3VwJywgJ3RhYmxlLXJvdycsICdmbG93LXJvb3QnLCAnZ3JpZCcsICdpbmxpbmUtZ3JpZCcsICdjb250ZW50cycsICdsaXN0LWl0ZW0nLCAnaGlkZGVuJ10sXG4gICAgICAvKipcbiAgICAgICAqIEZsb2F0c1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Zsb2F0XG4gICAgICAgKi9cbiAgICAgIGZsb2F0OiBbe1xuICAgICAgICBmbG9hdDogWydyaWdodCcsICdsZWZ0JywgJ25vbmUnLCAnc3RhcnQnLCAnZW5kJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBDbGVhclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NsZWFyXG4gICAgICAgKi9cbiAgICAgIGNsZWFyOiBbe1xuICAgICAgICBjbGVhcjogWydsZWZ0JywgJ3JpZ2h0JywgJ2JvdGgnLCAnbm9uZScsICdzdGFydCcsICdlbmQnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIElzb2xhdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2lzb2xhdGlvblxuICAgICAgICovXG4gICAgICBpc29sYXRpb246IFsnaXNvbGF0ZScsICdpc29sYXRpb24tYXV0byddLFxuICAgICAgLyoqXG4gICAgICAgKiBPYmplY3QgRml0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb2JqZWN0LWZpdFxuICAgICAgICovXG4gICAgICAnb2JqZWN0LWZpdCc6IFt7XG4gICAgICAgIG9iamVjdDogWydjb250YWluJywgJ2NvdmVyJywgJ2ZpbGwnLCAnbm9uZScsICdzY2FsZS1kb3duJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPYmplY3QgUG9zaXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vYmplY3QtcG9zaXRpb25cbiAgICAgICAqL1xuICAgICAgJ29iamVjdC1wb3NpdGlvbic6IFt7XG4gICAgICAgIG9iamVjdDogWy4uLmdldFBvc2l0aW9ucygpLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE92ZXJmbG93XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAqL1xuICAgICAgb3ZlcmZsb3c6IFt7XG4gICAgICAgIG92ZXJmbG93OiBnZXRPdmVyZmxvdygpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3ZlcmZsb3cgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgKi9cbiAgICAgICdvdmVyZmxvdy14JzogW3tcbiAgICAgICAgJ292ZXJmbG93LXgnOiBnZXRPdmVyZmxvdygpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3ZlcmZsb3cgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgKi9cbiAgICAgICdvdmVyZmxvdy15JzogW3tcbiAgICAgICAgJ292ZXJmbG93LXknOiBnZXRPdmVyZmxvdygpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAqL1xuICAgICAgb3ZlcnNjcm9sbDogW3tcbiAgICAgICAgb3ZlcnNjcm9sbDogZ2V0T3ZlcnNjcm9sbCgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvciBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICovXG4gICAgICAnb3ZlcnNjcm9sbC14JzogW3tcbiAgICAgICAgJ292ZXJzY3JvbGwteCc6IGdldE92ZXJzY3JvbGwoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE92ZXJzY3JvbGwgQmVoYXZpb3IgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAqL1xuICAgICAgJ292ZXJzY3JvbGwteSc6IFt7XG4gICAgICAgICdvdmVyc2Nyb2xsLXknOiBnZXRPdmVyc2Nyb2xsKClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQb3NpdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Bvc2l0aW9uXG4gICAgICAgKi9cbiAgICAgIHBvc2l0aW9uOiBbJ3N0YXRpYycsICdmaXhlZCcsICdhYnNvbHV0ZScsICdyZWxhdGl2ZScsICdzdGlja3knXSxcbiAgICAgIC8qKlxuICAgICAgICogVG9wIC8gUmlnaHQgLyBCb3R0b20gLyBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgIGluc2V0OiBbe1xuICAgICAgICBpbnNldDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFJpZ2h0IC8gTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICAnaW5zZXQteCc6IFt7XG4gICAgICAgICdpbnNldC14JzogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRvcCAvIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICAnaW5zZXQteSc6IFt7XG4gICAgICAgICdpbnNldC15JzogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgIHN0YXJ0OiBbe1xuICAgICAgICBzdGFydDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICBlbmQ6IFt7XG4gICAgICAgIGVuZDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRvcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICB0b3A6IFt7XG4gICAgICAgIHRvcDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgIHJpZ2h0OiBbe1xuICAgICAgICByaWdodDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICBib3R0b206IFt7XG4gICAgICAgIGJvdHRvbTogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAqL1xuICAgICAgbGVmdDogW3tcbiAgICAgICAgbGVmdDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFZpc2liaWxpdHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy92aXNpYmlsaXR5XG4gICAgICAgKi9cbiAgICAgIHZpc2liaWxpdHk6IFsndmlzaWJsZScsICdpbnZpc2libGUnLCAnY29sbGFwc2UnXSxcbiAgICAgIC8qKlxuICAgICAgICogWi1JbmRleFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3otaW5kZXhcbiAgICAgICAqL1xuICAgICAgejogW3tcbiAgICAgICAgejogWydhdXRvJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvLyBGbGV4Ym94IGFuZCBHcmlkXG4gICAgICAvKipcbiAgICAgICAqIEZsZXggQmFzaXNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWJhc2lzXG4gICAgICAgKi9cbiAgICAgIGJhc2lzOiBbe1xuICAgICAgICBiYXNpczogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBGbGV4IERpcmVjdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtZGlyZWN0aW9uXG4gICAgICAgKi9cbiAgICAgICdmbGV4LWRpcmVjdGlvbic6IFt7XG4gICAgICAgIGZsZXg6IFsncm93JywgJ3Jvdy1yZXZlcnNlJywgJ2NvbCcsICdjb2wtcmV2ZXJzZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRmxleCBXcmFwXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC13cmFwXG4gICAgICAgKi9cbiAgICAgICdmbGV4LXdyYXAnOiBbe1xuICAgICAgICBmbGV4OiBbJ3dyYXAnLCAnd3JhcC1yZXZlcnNlJywgJ25vd3JhcCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRmxleFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXhcbiAgICAgICAqL1xuICAgICAgZmxleDogW3tcbiAgICAgICAgZmxleDogWycxJywgJ2F1dG8nLCAnaW5pdGlhbCcsICdub25lJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBGbGV4IEdyb3dcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWdyb3dcbiAgICAgICAqL1xuICAgICAgZ3JvdzogW3tcbiAgICAgICAgZ3JvdzogZ2V0WmVyb0FuZEVtcHR5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBGbGV4IFNocmlua1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtc2hyaW5rXG4gICAgICAgKi9cbiAgICAgIHNocmluazogW3tcbiAgICAgICAgc2hyaW5rOiBnZXRaZXJvQW5kRW1wdHkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE9yZGVyXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3JkZXJcbiAgICAgICAqL1xuICAgICAgb3JkZXI6IFt7XG4gICAgICAgIG9yZGVyOiBbJ2ZpcnN0JywgJ2xhc3QnLCAnbm9uZScsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIFRlbXBsYXRlIENvbHVtbnNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXRlbXBsYXRlLWNvbHVtbnNcbiAgICAgICAqL1xuICAgICAgJ2dyaWQtY29scyc6IFt7XG4gICAgICAgICdncmlkLWNvbHMnOiBbaXNBbnldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBDb2x1bW4gU3RhcnQgLyBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICovXG4gICAgICAnY29sLXN0YXJ0LWVuZCc6IFt7XG4gICAgICAgIGNvbDogWydhdXRvJywge1xuICAgICAgICAgIHNwYW46IFsnZnVsbCcsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgICAgfSwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIENvbHVtbiBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgKi9cbiAgICAgICdjb2wtc3RhcnQnOiBbe1xuICAgICAgICAnY29sLXN0YXJ0JzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgQ29sdW1uIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgKi9cbiAgICAgICdjb2wtZW5kJzogW3tcbiAgICAgICAgJ2NvbC1lbmQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBUZW1wbGF0ZSBSb3dzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC10ZW1wbGF0ZS1yb3dzXG4gICAgICAgKi9cbiAgICAgICdncmlkLXJvd3MnOiBbe1xuICAgICAgICAnZ3JpZC1yb3dzJzogW2lzQW55XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgUm93IFN0YXJ0IC8gRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAqL1xuICAgICAgJ3Jvdy1zdGFydC1lbmQnOiBbe1xuICAgICAgICByb3c6IFsnYXV0bycsIHtcbiAgICAgICAgICBzcGFuOiBbaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgICB9LCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgUm93IFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAqL1xuICAgICAgJ3Jvdy1zdGFydCc6IFt7XG4gICAgICAgICdyb3ctc3RhcnQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBSb3cgRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAqL1xuICAgICAgJ3Jvdy1lbmQnOiBbe1xuICAgICAgICAncm93LWVuZCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIEF1dG8gRmxvd1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1mbG93XG4gICAgICAgKi9cbiAgICAgICdncmlkLWZsb3cnOiBbe1xuICAgICAgICAnZ3JpZC1mbG93JzogWydyb3cnLCAnY29sJywgJ2RlbnNlJywgJ3Jvdy1kZW5zZScsICdjb2wtZGVuc2UnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgQXV0byBDb2x1bW5zXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLWNvbHVtbnNcbiAgICAgICAqL1xuICAgICAgJ2F1dG8tY29scyc6IFt7XG4gICAgICAgICdhdXRvLWNvbHMnOiBbJ2F1dG8nLCAnbWluJywgJ21heCcsICdmcicsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBBdXRvIFJvd3NcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tcm93c1xuICAgICAgICovXG4gICAgICAnYXV0by1yb3dzJzogW3tcbiAgICAgICAgJ2F1dG8tcm93cyc6IFsnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZyJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHYXBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAqL1xuICAgICAgZ2FwOiBbe1xuICAgICAgICBnYXA6IFtnYXBdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR2FwIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAqL1xuICAgICAgJ2dhcC14JzogW3tcbiAgICAgICAgJ2dhcC14JzogW2dhcF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHYXAgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICovXG4gICAgICAnZ2FwLXknOiBbe1xuICAgICAgICAnZ2FwLXknOiBbZ2FwXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEp1c3RpZnkgQ29udGVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3RpZnktY29udGVudFxuICAgICAgICovXG4gICAgICAnanVzdGlmeS1jb250ZW50JzogW3tcbiAgICAgICAganVzdGlmeTogWydub3JtYWwnLCAuLi5nZXRBbGlnbigpXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEp1c3RpZnkgSXRlbXNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LWl0ZW1zXG4gICAgICAgKi9cbiAgICAgICdqdXN0aWZ5LWl0ZW1zJzogW3tcbiAgICAgICAgJ2p1c3RpZnktaXRlbXMnOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogSnVzdGlmeSBTZWxmXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1zZWxmXG4gICAgICAgKi9cbiAgICAgICdqdXN0aWZ5LXNlbGYnOiBbe1xuICAgICAgICAnanVzdGlmeS1zZWxmJzogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQWxpZ24gQ29udGVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLWNvbnRlbnRcbiAgICAgICAqL1xuICAgICAgJ2FsaWduLWNvbnRlbnQnOiBbe1xuICAgICAgICBjb250ZW50OiBbJ25vcm1hbCcsIC4uLmdldEFsaWduKCksICdiYXNlbGluZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQWxpZ24gSXRlbXNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1pdGVtc1xuICAgICAgICovXG4gICAgICAnYWxpZ24taXRlbXMnOiBbe1xuICAgICAgICBpdGVtczogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2Jhc2VsaW5lJywgJ3N0cmV0Y2gnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEFsaWduIFNlbGZcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1zZWxmXG4gICAgICAgKi9cbiAgICAgICdhbGlnbi1zZWxmJzogW3tcbiAgICAgICAgc2VsZjogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCcsICdiYXNlbGluZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGxhY2UgQ29udGVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLWNvbnRlbnRcbiAgICAgICAqL1xuICAgICAgJ3BsYWNlLWNvbnRlbnQnOiBbe1xuICAgICAgICAncGxhY2UtY29udGVudCc6IFsuLi5nZXRBbGlnbigpLCAnYmFzZWxpbmUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBsYWNlIEl0ZW1zXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2UtaXRlbXNcbiAgICAgICAqL1xuICAgICAgJ3BsYWNlLWl0ZW1zJzogW3tcbiAgICAgICAgJ3BsYWNlLWl0ZW1zJzogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2Jhc2VsaW5lJywgJ3N0cmV0Y2gnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBsYWNlIFNlbGZcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1zZWxmXG4gICAgICAgKi9cbiAgICAgICdwbGFjZS1zZWxmJzogW3tcbiAgICAgICAgJ3BsYWNlLXNlbGYnOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ11cbiAgICAgIH1dLFxuICAgICAgLy8gU3BhY2luZ1xuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICovXG4gICAgICBwOiBbe1xuICAgICAgICBwOiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHB4OiBbe1xuICAgICAgICBweDogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZyBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICovXG4gICAgICBweTogW3tcbiAgICAgICAgcHk6IFtwYWRkaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBhZGRpbmcgU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHBzOiBbe1xuICAgICAgICBwczogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZyBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHBlOiBbe1xuICAgICAgICBwZTogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZyBUb3BcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHB0OiBbe1xuICAgICAgICBwdDogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZyBSaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAqL1xuICAgICAgcHI6IFt7XG4gICAgICAgIHByOiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAqL1xuICAgICAgcGI6IFt7XG4gICAgICAgIHBiOiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHBsOiBbe1xuICAgICAgICBwbDogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgKi9cbiAgICAgIG06IFt7XG4gICAgICAgIG06IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbXg6IFt7XG4gICAgICAgIG14OiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpbiBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgKi9cbiAgICAgIG15OiBbe1xuICAgICAgICBteTogW21hcmdpbl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNYXJnaW4gU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbXM6IFt7XG4gICAgICAgIG1zOiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpbiBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbWU6IFt7XG4gICAgICAgIG1lOiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpbiBUb3BcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbXQ6IFt7XG4gICAgICAgIG10OiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpbiBSaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICovXG4gICAgICBtcjogW3tcbiAgICAgICAgbXI6IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICovXG4gICAgICBtYjogW3tcbiAgICAgICAgbWI6IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbWw6IFt7XG4gICAgICAgIG1sOiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNwYWNlIEJldHdlZW4gWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgKi9cbiAgICAgICdzcGFjZS14JzogW3tcbiAgICAgICAgJ3NwYWNlLXgnOiBbc3BhY2VdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU3BhY2UgQmV0d2VlbiBYIFJldmVyc2VcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICovXG4gICAgICAnc3BhY2UteC1yZXZlcnNlJzogWydzcGFjZS14LXJldmVyc2UnXSxcbiAgICAgIC8qKlxuICAgICAgICogU3BhY2UgQmV0d2VlbiBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAqL1xuICAgICAgJ3NwYWNlLXknOiBbe1xuICAgICAgICAnc3BhY2UteSc6IFtzcGFjZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTcGFjZSBCZXR3ZWVuIFkgUmV2ZXJzZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgKi9cbiAgICAgICdzcGFjZS15LXJldmVyc2UnOiBbJ3NwYWNlLXktcmV2ZXJzZSddLFxuICAgICAgLy8gU2l6aW5nXG4gICAgICAvKipcbiAgICAgICAqIFdpZHRoXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2lkdGhcbiAgICAgICAqL1xuICAgICAgdzogW3tcbiAgICAgICAgdzogWydhdXRvJywgJ21pbicsICdtYXgnLCAnZml0JywgJ3N2dycsICdsdncnLCAnZHZ3JywgaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNaW4tV2lkdGhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taW4td2lkdGhcbiAgICAgICAqL1xuICAgICAgJ21pbi13JzogW3tcbiAgICAgICAgJ21pbi13JzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWF4LVdpZHRoXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWF4LXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdtYXgtdyc6IFt7XG4gICAgICAgICdtYXgtdyc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbm9uZScsICdmdWxsJywgJ21pbicsICdtYXgnLCAnZml0JywgJ3Byb3NlJywge1xuICAgICAgICAgIHNjcmVlbjogW2lzVHNoaXJ0U2l6ZV1cbiAgICAgICAgfSwgaXNUc2hpcnRTaXplXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEhlaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2hlaWdodFxuICAgICAgICovXG4gICAgICBoOiBbe1xuICAgICAgICBoOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ2F1dG8nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1pbi1IZWlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taW4taGVpZ2h0XG4gICAgICAgKi9cbiAgICAgICdtaW4taCc6IFt7XG4gICAgICAgICdtaW4taCc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1heC1IZWlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXgtaGVpZ2h0XG4gICAgICAgKi9cbiAgICAgICdtYXgtaCc6IFt7XG4gICAgICAgICdtYXgtaCc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNpemVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zaXplXG4gICAgICAgKi9cbiAgICAgIHNpemU6IFt7XG4gICAgICAgIHNpemU6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZpdCddXG4gICAgICB9XSxcbiAgICAgIC8vIFR5cG9ncmFwaHlcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBTaXplXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zaXplXG4gICAgICAgKi9cbiAgICAgICdmb250LXNpemUnOiBbe1xuICAgICAgICB0ZXh0OiBbJ2Jhc2UnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5TGVuZ3RoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEZvbnQgU21vb3RoaW5nXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zbW9vdGhpbmdcbiAgICAgICAqL1xuICAgICAgJ2ZvbnQtc21vb3RoaW5nJzogWydhbnRpYWxpYXNlZCcsICdzdWJwaXhlbC1hbnRpYWxpYXNlZCddLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFN0eWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zdHlsZVxuICAgICAgICovXG4gICAgICAnZm9udC1zdHlsZSc6IFsnaXRhbGljJywgJ25vdC1pdGFsaWMnXSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBXZWlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXdlaWdodFxuICAgICAgICovXG4gICAgICAnZm9udC13ZWlnaHQnOiBbe1xuICAgICAgICBmb250OiBbJ3RoaW4nLCAnZXh0cmFsaWdodCcsICdsaWdodCcsICdub3JtYWwnLCAnbWVkaXVtJywgJ3NlbWlib2xkJywgJ2JvbGQnLCAnZXh0cmFib2xkJywgJ2JsYWNrJywgaXNBcmJpdHJhcnlOdW1iZXJdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBGYW1pbHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LWZhbWlseVxuICAgICAgICovXG4gICAgICAnZm9udC1mYW1pbHknOiBbe1xuICAgICAgICBmb250OiBbaXNBbnldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICovXG4gICAgICAnZnZuLW5vcm1hbCc6IFsnbm9ybWFsLW51bXMnXSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICovXG4gICAgICAnZnZuLW9yZGluYWwnOiBbJ29yZGluYWwnXSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICovXG4gICAgICAnZnZuLXNsYXNoZWQtemVybyc6IFsnc2xhc2hlZC16ZXJvJ10sXG4gICAgICAvKipcbiAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAqL1xuICAgICAgJ2Z2bi1maWd1cmUnOiBbJ2xpbmluZy1udW1zJywgJ29sZHN0eWxlLW51bXMnXSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICovXG4gICAgICAnZnZuLXNwYWNpbmcnOiBbJ3Byb3BvcnRpb25hbC1udW1zJywgJ3RhYnVsYXItbnVtcyddLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgKi9cbiAgICAgICdmdm4tZnJhY3Rpb24nOiBbJ2RpYWdvbmFsLWZyYWN0aW9ucycsICdzdGFja2VkLWZyYWN0b25zJ10sXG4gICAgICAvKipcbiAgICAgICAqIExldHRlciBTcGFjaW5nXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGV0dGVyLXNwYWNpbmdcbiAgICAgICAqL1xuICAgICAgdHJhY2tpbmc6IFt7XG4gICAgICAgIHRyYWNraW5nOiBbJ3RpZ2h0ZXInLCAndGlnaHQnLCAnbm9ybWFsJywgJ3dpZGUnLCAnd2lkZXInLCAnd2lkZXN0JywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBMaW5lIENsYW1wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGluZS1jbGFtcFxuICAgICAgICovXG4gICAgICAnbGluZS1jbGFtcCc6IFt7XG4gICAgICAgICdsaW5lLWNsYW1wJzogWydub25lJywgaXNOdW1iZXIsIGlzQXJiaXRyYXJ5TnVtYmVyXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIExpbmUgSGVpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGluZS1oZWlnaHRcbiAgICAgICAqL1xuICAgICAgbGVhZGluZzogW3tcbiAgICAgICAgbGVhZGluZzogWydub25lJywgJ3RpZ2h0JywgJ3NudWcnLCAnbm9ybWFsJywgJ3JlbGF4ZWQnLCAnbG9vc2UnLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBMaXN0IFN0eWxlIEltYWdlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGlzdC1zdHlsZS1pbWFnZVxuICAgICAgICovXG4gICAgICAnbGlzdC1pbWFnZSc6IFt7XG4gICAgICAgICdsaXN0LWltYWdlJzogWydub25lJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBMaXN0IFN0eWxlIFR5cGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLXR5cGVcbiAgICAgICAqL1xuICAgICAgJ2xpc3Qtc3R5bGUtdHlwZSc6IFt7XG4gICAgICAgIGxpc3Q6IFsnbm9uZScsICdkaXNjJywgJ2RlY2ltYWwnLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIExpc3QgU3R5bGUgUG9zaXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLXBvc2l0aW9uXG4gICAgICAgKi9cbiAgICAgICdsaXN0LXN0eWxlLXBvc2l0aW9uJzogW3tcbiAgICAgICAgbGlzdDogWydpbnNpZGUnLCAnb3V0c2lkZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGxhY2Vob2xkZXIgQ29sb3JcbiAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZWhvbGRlci1jb2xvclxuICAgICAgICovXG4gICAgICAncGxhY2Vob2xkZXItY29sb3InOiBbe1xuICAgICAgICBwbGFjZWhvbGRlcjogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQbGFjZWhvbGRlciBPcGFjaXR5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Vob2xkZXItb3BhY2l0eVxuICAgICAgICovXG4gICAgICAncGxhY2Vob2xkZXItb3BhY2l0eSc6IFt7XG4gICAgICAgICdwbGFjZWhvbGRlci1vcGFjaXR5JzogW29wYWNpdHldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBBbGlnbm1lbnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWFsaWduXG4gICAgICAgKi9cbiAgICAgICd0ZXh0LWFsaWdubWVudCc6IFt7XG4gICAgICAgIHRleHQ6IFsnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnLCAnanVzdGlmeScsICdzdGFydCcsICdlbmQnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWNvbG9yXG4gICAgICAgKi9cbiAgICAgICd0ZXh0LWNvbG9yJzogW3tcbiAgICAgICAgdGV4dDogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IE9wYWNpdHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LW9wYWNpdHlcbiAgICAgICAqL1xuICAgICAgJ3RleHQtb3BhY2l0eSc6IFt7XG4gICAgICAgICd0ZXh0LW9wYWNpdHknOiBbb3BhY2l0eV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IERlY29yYXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb25cbiAgICAgICAqL1xuICAgICAgJ3RleHQtZGVjb3JhdGlvbic6IFsndW5kZXJsaW5lJywgJ292ZXJsaW5lJywgJ2xpbmUtdGhyb3VnaCcsICduby11bmRlcmxpbmUnXSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBEZWNvcmF0aW9uIFN0eWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLXN0eWxlXG4gICAgICAgKi9cbiAgICAgICd0ZXh0LWRlY29yYXRpb24tc3R5bGUnOiBbe1xuICAgICAgICBkZWNvcmF0aW9uOiBbLi4uZ2V0TGluZVN0eWxlcygpLCAnd2F2eSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBEZWNvcmF0aW9uIFRoaWNrbmVzc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvbi10aGlja25lc3NcbiAgICAgICAqL1xuICAgICAgJ3RleHQtZGVjb3JhdGlvbi10aGlja25lc3MnOiBbe1xuICAgICAgICBkZWNvcmF0aW9uOiBbJ2F1dG8nLCAnZnJvbS1mb250JywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgVW5kZXJsaW5lIE9mZnNldFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtdW5kZXJsaW5lLW9mZnNldFxuICAgICAgICovXG4gICAgICAndW5kZXJsaW5lLW9mZnNldCc6IFt7XG4gICAgICAgICd1bmRlcmxpbmUtb2Zmc2V0JzogWydhdXRvJywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBEZWNvcmF0aW9uIENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICd0ZXh0LWRlY29yYXRpb24tY29sb3InOiBbe1xuICAgICAgICBkZWNvcmF0aW9uOiBbY29sb3JzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgVHJhbnNmb3JtXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC10cmFuc2Zvcm1cbiAgICAgICAqL1xuICAgICAgJ3RleHQtdHJhbnNmb3JtJzogWyd1cHBlcmNhc2UnLCAnbG93ZXJjYXNlJywgJ2NhcGl0YWxpemUnLCAnbm9ybWFsLWNhc2UnXSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBPdmVyZmxvd1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtb3ZlcmZsb3dcbiAgICAgICAqL1xuICAgICAgJ3RleHQtb3ZlcmZsb3cnOiBbJ3RydW5jYXRlJywgJ3RleHQtZWxsaXBzaXMnLCAndGV4dC1jbGlwJ10sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgV3JhcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtd3JhcFxuICAgICAgICovXG4gICAgICAndGV4dC13cmFwJzogW3tcbiAgICAgICAgdGV4dDogWyd3cmFwJywgJ25vd3JhcCcsICdiYWxhbmNlJywgJ3ByZXR0eSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBJbmRlbnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWluZGVudFxuICAgICAgICovXG4gICAgICBpbmRlbnQ6IFt7XG4gICAgICAgIGluZGVudDogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFZlcnRpY2FsIEFsaWdubWVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3ZlcnRpY2FsLWFsaWduXG4gICAgICAgKi9cbiAgICAgICd2ZXJ0aWNhbC1hbGlnbic6IFt7XG4gICAgICAgIGFsaWduOiBbJ2Jhc2VsaW5lJywgJ3RvcCcsICdtaWRkbGUnLCAnYm90dG9tJywgJ3RleHQtdG9wJywgJ3RleHQtYm90dG9tJywgJ3N1YicsICdzdXBlcicsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogV2hpdGVzcGFjZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3doaXRlc3BhY2VcbiAgICAgICAqL1xuICAgICAgd2hpdGVzcGFjZTogW3tcbiAgICAgICAgd2hpdGVzcGFjZTogWydub3JtYWwnLCAnbm93cmFwJywgJ3ByZScsICdwcmUtbGluZScsICdwcmUtd3JhcCcsICdicmVhay1zcGFjZXMnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFdvcmQgQnJlYWtcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93b3JkLWJyZWFrXG4gICAgICAgKi9cbiAgICAgIGJyZWFrOiBbe1xuICAgICAgICBicmVhazogWydub3JtYWwnLCAnd29yZHMnLCAnYWxsJywgJ2tlZXAnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEh5cGhlbnNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9oeXBoZW5zXG4gICAgICAgKi9cbiAgICAgIGh5cGhlbnM6IFt7XG4gICAgICAgIGh5cGhlbnM6IFsnbm9uZScsICdtYW51YWwnLCAnYXV0byddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQ29udGVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbnRlbnRcbiAgICAgICAqL1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgY29udGVudDogWydub25lJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLy8gQmFja2dyb3VuZHNcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBBdHRhY2htZW50XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1hdHRhY2htZW50XG4gICAgICAgKi9cbiAgICAgICdiZy1hdHRhY2htZW50JzogW3tcbiAgICAgICAgYmc6IFsnZml4ZWQnLCAnbG9jYWwnLCAnc2Nyb2xsJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIENsaXBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWNsaXBcbiAgICAgICAqL1xuICAgICAgJ2JnLWNsaXAnOiBbe1xuICAgICAgICAnYmctY2xpcCc6IFsnYm9yZGVyJywgJ3BhZGRpbmcnLCAnY29udGVudCcsICd0ZXh0J11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIE9wYWNpdHlcbiAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLW9wYWNpdHlcbiAgICAgICAqL1xuICAgICAgJ2JnLW9wYWNpdHknOiBbe1xuICAgICAgICAnYmctb3BhY2l0eSc6IFtvcGFjaXR5XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgT3JpZ2luXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1vcmlnaW5cbiAgICAgICAqL1xuICAgICAgJ2JnLW9yaWdpbic6IFt7XG4gICAgICAgICdiZy1vcmlnaW4nOiBbJ2JvcmRlcicsICdwYWRkaW5nJywgJ2NvbnRlbnQnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgUG9zaXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXBvc2l0aW9uXG4gICAgICAgKi9cbiAgICAgICdiZy1wb3NpdGlvbic6IFt7XG4gICAgICAgIGJnOiBbLi4uZ2V0UG9zaXRpb25zKCksIGlzQXJiaXRyYXJ5UG9zaXRpb25dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBSZXBlYXRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXJlcGVhdFxuICAgICAgICovXG4gICAgICAnYmctcmVwZWF0JzogW3tcbiAgICAgICAgYmc6IFsnbm8tcmVwZWF0Jywge1xuICAgICAgICAgIHJlcGVhdDogWycnLCAneCcsICd5JywgJ3JvdW5kJywgJ3NwYWNlJ11cbiAgICAgICAgfV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIFNpemVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXNpemVcbiAgICAgICAqL1xuICAgICAgJ2JnLXNpemUnOiBbe1xuICAgICAgICBiZzogWydhdXRvJywgJ2NvdmVyJywgJ2NvbnRhaW4nLCBpc0FyYml0cmFyeVNpemVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBJbWFnZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtaW1hZ2VcbiAgICAgICAqL1xuICAgICAgJ2JnLWltYWdlJzogW3tcbiAgICAgICAgYmc6IFsnbm9uZScsIHtcbiAgICAgICAgICAnZ3JhZGllbnQtdG8nOiBbJ3QnLCAndHInLCAncicsICdicicsICdiJywgJ2JsJywgJ2wnLCAndGwnXVxuICAgICAgICB9LCBpc0FyYml0cmFyeUltYWdlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdiZy1jb2xvcic6IFt7XG4gICAgICAgIGJnOiBbY29sb3JzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIEZyb20gUG9zaXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICovXG4gICAgICAnZ3JhZGllbnQtZnJvbS1wb3MnOiBbe1xuICAgICAgICBmcm9tOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVmlhIFBvc2l0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAqL1xuICAgICAgJ2dyYWRpZW50LXZpYS1wb3MnOiBbe1xuICAgICAgICB2aWE6IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBUbyBQb3NpdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgKi9cbiAgICAgICdncmFkaWVudC10by1wb3MnOiBbe1xuICAgICAgICB0bzogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIEZyb21cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICovXG4gICAgICAnZ3JhZGllbnQtZnJvbSc6IFt7XG4gICAgICAgIGZyb206IFtncmFkaWVudENvbG9yU3RvcHNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVmlhXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAqL1xuICAgICAgJ2dyYWRpZW50LXZpYSc6IFt7XG4gICAgICAgIHZpYTogW2dyYWRpZW50Q29sb3JTdG9wc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBUb1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgKi9cbiAgICAgICdncmFkaWVudC10byc6IFt7XG4gICAgICAgIHRvOiBbZ3JhZGllbnRDb2xvclN0b3BzXVxuICAgICAgfV0sXG4gICAgICAvLyBCb3JkZXJzXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgIHJvdW5kZWQ6IFt7XG4gICAgICAgIHJvdW5kZWQ6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtcyc6IFt7XG4gICAgICAgICdyb3VuZGVkLXMnOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1lJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtZSc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3BcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLXQnOiBbe1xuICAgICAgICAncm91bmRlZC10JzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1yJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtcic6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b21cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLWInOiBbe1xuICAgICAgICAncm91bmRlZC1iJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLWwnOiBbe1xuICAgICAgICAncm91bmRlZC1sJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0IFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1zcyc6IFt7XG4gICAgICAgICdyb3VuZGVkLXNzJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0IEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtc2UnOiBbe1xuICAgICAgICAncm91bmRlZC1zZSc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmQgRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1lZSc6IFt7XG4gICAgICAgICdyb3VuZGVkLWVlJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZCBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtZXMnOiBbe1xuICAgICAgICAncm91bmRlZC1lcyc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3AgTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtdGwnOiBbe1xuICAgICAgICAncm91bmRlZC10bCc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3AgUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLXRyJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtdHInOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgQm90dG9tIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1icic6IFt7XG4gICAgICAgICdyb3VuZGVkLWJyJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbSBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1ibCc6IFt7XG4gICAgICAgICdyb3VuZGVkLWJsJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgV2lkdGhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13JzogW3tcbiAgICAgICAgYm9yZGVyOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13LXgnOiBbe1xuICAgICAgICAnYm9yZGVyLXgnOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13LXknOiBbe1xuICAgICAgICAnYm9yZGVyLXknOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoIFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItdy1zJzogW3tcbiAgICAgICAgJ2JvcmRlci1zJzogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBXaWR0aCBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13LWUnOiBbe1xuICAgICAgICAnYm9yZGVyLWUnOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoIFRvcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXctdCc6IFt7XG4gICAgICAgICdib3JkZXItdCc6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgV2lkdGggUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13LXInOiBbe1xuICAgICAgICAnYm9yZGVyLXInOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXctYic6IFt7XG4gICAgICAgICdib3JkZXItYic6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgV2lkdGggTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXctbCc6IFt7XG4gICAgICAgICdib3JkZXItbCc6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgT3BhY2l0eVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1vcGFjaXR5XG4gICAgICAgKi9cbiAgICAgICdib3JkZXItb3BhY2l0eSc6IFt7XG4gICAgICAgICdib3JkZXItb3BhY2l0eSc6IFtvcGFjaXR5XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBTdHlsZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zdHlsZVxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXN0eWxlJzogW3tcbiAgICAgICAgYm9yZGVyOiBbLi4uZ2V0TGluZVN0eWxlcygpLCAnaGlkZGVuJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBEaXZpZGUgV2lkdGggWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICovXG4gICAgICAnZGl2aWRlLXgnOiBbe1xuICAgICAgICAnZGl2aWRlLXgnOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRGl2aWRlIFdpZHRoIFggUmV2ZXJzZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICovXG4gICAgICAnZGl2aWRlLXgtcmV2ZXJzZSc6IFsnZGl2aWRlLXgtcmV2ZXJzZSddLFxuICAgICAgLyoqXG4gICAgICAgKiBEaXZpZGUgV2lkdGggWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICovXG4gICAgICAnZGl2aWRlLXknOiBbe1xuICAgICAgICAnZGl2aWRlLXknOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRGl2aWRlIFdpZHRoIFkgUmV2ZXJzZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICovXG4gICAgICAnZGl2aWRlLXktcmV2ZXJzZSc6IFsnZGl2aWRlLXktcmV2ZXJzZSddLFxuICAgICAgLyoqXG4gICAgICAgKiBEaXZpZGUgT3BhY2l0eVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1vcGFjaXR5XG4gICAgICAgKi9cbiAgICAgICdkaXZpZGUtb3BhY2l0eSc6IFt7XG4gICAgICAgICdkaXZpZGUtb3BhY2l0eSc6IFtvcGFjaXR5XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIERpdmlkZSBTdHlsZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1zdHlsZVxuICAgICAgICovXG4gICAgICAnZGl2aWRlLXN0eWxlJzogW3tcbiAgICAgICAgZGl2aWRlOiBnZXRMaW5lU3R5bGVzKClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1jb2xvcic6IFt7XG4gICAgICAgIGJvcmRlcjogW2JvcmRlckNvbG9yXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBDb2xvciBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sb3IteCc6IFt7XG4gICAgICAgICdib3JkZXIteCc6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sb3IgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICovXG4gICAgICAnYm9yZGVyLWNvbG9yLXknOiBbe1xuICAgICAgICAnYm9yZGVyLXknOiBbYm9yZGVyQ29sb3JdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIENvbG9yIFRvcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICovXG4gICAgICAnYm9yZGVyLWNvbG9yLXQnOiBbe1xuICAgICAgICAnYm9yZGVyLXQnOiBbYm9yZGVyQ29sb3JdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIENvbG9yIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sb3Itcic6IFt7XG4gICAgICAgICdib3JkZXItcic6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sb3IgQm90dG9tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sb3ItYic6IFt7XG4gICAgICAgICdib3JkZXItYic6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sb3IgTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICovXG4gICAgICAnYm9yZGVyLWNvbG9yLWwnOiBbe1xuICAgICAgICAnYm9yZGVyLWwnOiBbYm9yZGVyQ29sb3JdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRGl2aWRlIENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdkaXZpZGUtY29sb3InOiBbe1xuICAgICAgICBkaXZpZGU6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPdXRsaW5lIFN0eWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1zdHlsZVxuICAgICAgICovXG4gICAgICAnb3V0bGluZS1zdHlsZSc6IFt7XG4gICAgICAgIG91dGxpbmU6IFsnJywgLi4uZ2V0TGluZVN0eWxlcygpXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE91dGxpbmUgT2Zmc2V0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1vZmZzZXRcbiAgICAgICAqL1xuICAgICAgJ291dGxpbmUtb2Zmc2V0JzogW3tcbiAgICAgICAgJ291dGxpbmUtb2Zmc2V0JzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE91dGxpbmUgV2lkdGhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdvdXRsaW5lLXcnOiBbe1xuICAgICAgICBvdXRsaW5lOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE91dGxpbmUgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdvdXRsaW5lLWNvbG9yJzogW3tcbiAgICAgICAgb3V0bGluZTogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaW5nIFdpZHRoXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy13aWR0aFxuICAgICAgICovXG4gICAgICAncmluZy13JzogW3tcbiAgICAgICAgcmluZzogZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaW5nIFdpZHRoIEluc2V0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy13aWR0aFxuICAgICAgICovXG4gICAgICAncmluZy13LWluc2V0JzogWydyaW5nLWluc2V0J10sXG4gICAgICAvKipcbiAgICAgICAqIFJpbmcgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdyaW5nLWNvbG9yJzogW3tcbiAgICAgICAgcmluZzogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaW5nIE9wYWNpdHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9wYWNpdHlcbiAgICAgICAqL1xuICAgICAgJ3Jpbmctb3BhY2l0eSc6IFt7XG4gICAgICAgICdyaW5nLW9wYWNpdHknOiBbb3BhY2l0eV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaW5nIE9mZnNldCBXaWR0aFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb2Zmc2V0LXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdyaW5nLW9mZnNldC13JzogW3tcbiAgICAgICAgJ3Jpbmctb2Zmc2V0JzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaW5nIE9mZnNldCBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb2Zmc2V0LWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdyaW5nLW9mZnNldC1jb2xvcic6IFt7XG4gICAgICAgICdyaW5nLW9mZnNldCc6IFtjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8vIEVmZmVjdHNcbiAgICAgIC8qKlxuICAgICAgICogQm94IFNoYWRvd1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaGFkb3dcbiAgICAgICAqL1xuICAgICAgc2hhZG93OiBbe1xuICAgICAgICBzaGFkb3c6IFsnJywgJ2lubmVyJywgJ25vbmUnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5U2hhZG93XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJveCBTaGFkb3cgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2hhZG93LWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdzaGFkb3ctY29sb3InOiBbe1xuICAgICAgICBzaGFkb3c6IFtpc0FueV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPcGFjaXR5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3BhY2l0eVxuICAgICAgICovXG4gICAgICBvcGFjaXR5OiBbe1xuICAgICAgICBvcGFjaXR5OiBbb3BhY2l0eV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNaXggQmxlbmQgTW9kZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21peC1ibGVuZC1tb2RlXG4gICAgICAgKi9cbiAgICAgICdtaXgtYmxlbmQnOiBbe1xuICAgICAgICAnbWl4LWJsZW5kJzogWy4uLmdldEJsZW5kTW9kZXMoKSwgJ3BsdXMtbGlnaHRlcicsICdwbHVzLWRhcmtlciddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBCbGVuZCBNb2RlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1ibGVuZC1tb2RlXG4gICAgICAgKi9cbiAgICAgICdiZy1ibGVuZCc6IFt7XG4gICAgICAgICdiZy1ibGVuZCc6IGdldEJsZW5kTW9kZXMoKVxuICAgICAgfV0sXG4gICAgICAvLyBGaWx0ZXJzXG4gICAgICAvKipcbiAgICAgICAqIEZpbHRlclxuICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZpbHRlclxuICAgICAgICovXG4gICAgICBmaWx0ZXI6IFt7XG4gICAgICAgIGZpbHRlcjogWycnLCAnbm9uZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmx1clxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JsdXJcbiAgICAgICAqL1xuICAgICAgYmx1cjogW3tcbiAgICAgICAgYmx1cjogW2JsdXJdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQnJpZ2h0bmVzc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyaWdodG5lc3NcbiAgICAgICAqL1xuICAgICAgYnJpZ2h0bmVzczogW3tcbiAgICAgICAgYnJpZ2h0bmVzczogW2JyaWdodG5lc3NdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQ29udHJhc3RcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250cmFzdFxuICAgICAgICovXG4gICAgICBjb250cmFzdDogW3tcbiAgICAgICAgY29udHJhc3Q6IFtjb250cmFzdF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBEcm9wIFNoYWRvd1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Ryb3Atc2hhZG93XG4gICAgICAgKi9cbiAgICAgICdkcm9wLXNoYWRvdyc6IFt7XG4gICAgICAgICdkcm9wLXNoYWRvdyc6IFsnJywgJ25vbmUnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JheXNjYWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JheXNjYWxlXG4gICAgICAgKi9cbiAgICAgIGdyYXlzY2FsZTogW3tcbiAgICAgICAgZ3JheXNjYWxlOiBbZ3JheXNjYWxlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEh1ZSBSb3RhdGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9odWUtcm90YXRlXG4gICAgICAgKi9cbiAgICAgICdodWUtcm90YXRlJzogW3tcbiAgICAgICAgJ2h1ZS1yb3RhdGUnOiBbaHVlUm90YXRlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEludmVydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ludmVydFxuICAgICAgICovXG4gICAgICBpbnZlcnQ6IFt7XG4gICAgICAgIGludmVydDogW2ludmVydF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTYXR1cmF0ZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NhdHVyYXRlXG4gICAgICAgKi9cbiAgICAgIHNhdHVyYXRlOiBbe1xuICAgICAgICBzYXR1cmF0ZTogW3NhdHVyYXRlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNlcGlhXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2VwaWFcbiAgICAgICAqL1xuICAgICAgc2VwaWE6IFt7XG4gICAgICAgIHNlcGlhOiBbc2VwaWFdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgRmlsdGVyXG4gICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtZmlsdGVyXG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1maWx0ZXInOiBbe1xuICAgICAgICAnYmFja2Ryb3AtZmlsdGVyJzogWycnLCAnbm9uZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgQmx1clxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWJsdXJcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLWJsdXInOiBbe1xuICAgICAgICAnYmFja2Ryb3AtYmx1cic6IFtibHVyXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIEJyaWdodG5lc3NcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1icmlnaHRuZXNzXG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1icmlnaHRuZXNzJzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLWJyaWdodG5lc3MnOiBbYnJpZ2h0bmVzc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZHJvcCBDb250cmFzdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWNvbnRyYXN0XG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1jb250cmFzdCc6IFt7XG4gICAgICAgICdiYWNrZHJvcC1jb250cmFzdCc6IFtjb250cmFzdF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZHJvcCBHcmF5c2NhbGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1ncmF5c2NhbGVcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLWdyYXlzY2FsZSc6IFt7XG4gICAgICAgICdiYWNrZHJvcC1ncmF5c2NhbGUnOiBbZ3JheXNjYWxlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIEh1ZSBSb3RhdGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1odWUtcm90YXRlXG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1odWUtcm90YXRlJzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLWh1ZS1yb3RhdGUnOiBbaHVlUm90YXRlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIEludmVydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWludmVydFxuICAgICAgICovXG4gICAgICAnYmFja2Ryb3AtaW52ZXJ0JzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLWludmVydCc6IFtpbnZlcnRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgT3BhY2l0eVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLW9wYWNpdHlcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLW9wYWNpdHknOiBbe1xuICAgICAgICAnYmFja2Ryb3Atb3BhY2l0eSc6IFtvcGFjaXR5XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIFNhdHVyYXRlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atc2F0dXJhdGVcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLXNhdHVyYXRlJzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLXNhdHVyYXRlJzogW3NhdHVyYXRlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIFNlcGlhXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atc2VwaWFcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLXNlcGlhJzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLXNlcGlhJzogW3NlcGlhXVxuICAgICAgfV0sXG4gICAgICAvLyBUYWJsZXNcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIENvbGxhcHNlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbGxhcHNlXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sbGFwc2UnOiBbe1xuICAgICAgICBib3JkZXI6IFsnY29sbGFwc2UnLCAnc2VwYXJhdGUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBTcGFjaW5nXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1zcGFjaW5nJzogW3tcbiAgICAgICAgJ2JvcmRlci1zcGFjaW5nJzogW2JvcmRlclNwYWNpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFNwYWNpbmcgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItc3BhY2luZy14JzogW3tcbiAgICAgICAgJ2JvcmRlci1zcGFjaW5nLXgnOiBbYm9yZGVyU3BhY2luZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgU3BhY2luZyBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1zcGFjaW5nLXknOiBbe1xuICAgICAgICAnYm9yZGVyLXNwYWNpbmcteSc6IFtib3JkZXJTcGFjaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRhYmxlIExheW91dFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RhYmxlLWxheW91dFxuICAgICAgICovXG4gICAgICAndGFibGUtbGF5b3V0JzogW3tcbiAgICAgICAgdGFibGU6IFsnYXV0bycsICdmaXhlZCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQ2FwdGlvbiBTaWRlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY2FwdGlvbi1zaWRlXG4gICAgICAgKi9cbiAgICAgIGNhcHRpb246IFt7XG4gICAgICAgIGNhcHRpb246IFsndG9wJywgJ2JvdHRvbSddXG4gICAgICB9XSxcbiAgICAgIC8vIFRyYW5zaXRpb25zIGFuZCBBbmltYXRpb25cbiAgICAgIC8qKlxuICAgICAgICogVHJhbmlzaXRpb24gUHJvcGVydHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLXByb3BlcnR5XG4gICAgICAgKi9cbiAgICAgIHRyYW5zaXRpb246IFt7XG4gICAgICAgIHRyYW5zaXRpb246IFsnbm9uZScsICdhbGwnLCAnJywgJ2NvbG9ycycsICdvcGFjaXR5JywgJ3NoYWRvdycsICd0cmFuc2Zvcm0nLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zaXRpb24gRHVyYXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLWR1cmF0aW9uXG4gICAgICAgKi9cbiAgICAgIGR1cmF0aW9uOiBbe1xuICAgICAgICBkdXJhdGlvbjogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUcmFuc2l0aW9uIFRpbWluZyBGdW5jdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uXG4gICAgICAgKi9cbiAgICAgIGVhc2U6IFt7XG4gICAgICAgIGVhc2U6IFsnbGluZWFyJywgJ2luJywgJ291dCcsICdpbi1vdXQnLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zaXRpb24gRGVsYXlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLWRlbGF5XG4gICAgICAgKi9cbiAgICAgIGRlbGF5OiBbe1xuICAgICAgICBkZWxheTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBBbmltYXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbmltYXRpb25cbiAgICAgICAqL1xuICAgICAgYW5pbWF0ZTogW3tcbiAgICAgICAgYW5pbWF0ZTogWydub25lJywgJ3NwaW4nLCAncGluZycsICdwdWxzZScsICdib3VuY2UnLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvLyBUcmFuc2Zvcm1zXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zZm9ybVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zZm9ybVxuICAgICAgICovXG4gICAgICB0cmFuc2Zvcm06IFt7XG4gICAgICAgIHRyYW5zZm9ybTogWycnLCAnZ3B1JywgJ25vbmUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjYWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAqL1xuICAgICAgc2NhbGU6IFt7XG4gICAgICAgIHNjYWxlOiBbc2NhbGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2NhbGUgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgKi9cbiAgICAgICdzY2FsZS14JzogW3tcbiAgICAgICAgJ3NjYWxlLXgnOiBbc2NhbGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2NhbGUgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgKi9cbiAgICAgICdzY2FsZS15JzogW3tcbiAgICAgICAgJ3NjYWxlLXknOiBbc2NhbGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUm90YXRlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvcm90YXRlXG4gICAgICAgKi9cbiAgICAgIHJvdGF0ZTogW3tcbiAgICAgICAgcm90YXRlOiBbaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zbGF0ZSBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNsYXRlXG4gICAgICAgKi9cbiAgICAgICd0cmFuc2xhdGUteCc6IFt7XG4gICAgICAgICd0cmFuc2xhdGUteCc6IFt0cmFuc2xhdGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVHJhbnNsYXRlIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2xhdGVcbiAgICAgICAqL1xuICAgICAgJ3RyYW5zbGF0ZS15JzogW3tcbiAgICAgICAgJ3RyYW5zbGF0ZS15JzogW3RyYW5zbGF0ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTa2V3IFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9za2V3XG4gICAgICAgKi9cbiAgICAgICdza2V3LXgnOiBbe1xuICAgICAgICAnc2tldy14JzogW3NrZXddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2tldyBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2tld1xuICAgICAgICovXG4gICAgICAnc2tldy15JzogW3tcbiAgICAgICAgJ3NrZXcteSc6IFtza2V3XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zZm9ybSBPcmlnaW5cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2Zvcm0tb3JpZ2luXG4gICAgICAgKi9cbiAgICAgICd0cmFuc2Zvcm0tb3JpZ2luJzogW3tcbiAgICAgICAgb3JpZ2luOiBbJ2NlbnRlcicsICd0b3AnLCAndG9wLXJpZ2h0JywgJ3JpZ2h0JywgJ2JvdHRvbS1yaWdodCcsICdib3R0b20nLCAnYm90dG9tLWxlZnQnLCAnbGVmdCcsICd0b3AtbGVmdCcsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8vIEludGVyYWN0aXZpdHlcbiAgICAgIC8qKlxuICAgICAgICogQWNjZW50IENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWNjZW50LWNvbG9yXG4gICAgICAgKi9cbiAgICAgIGFjY2VudDogW3tcbiAgICAgICAgYWNjZW50OiBbJ2F1dG8nLCBjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQXBwZWFyYW5jZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FwcGVhcmFuY2VcbiAgICAgICAqL1xuICAgICAgYXBwZWFyYW5jZTogW3tcbiAgICAgICAgYXBwZWFyYW5jZTogWydub25lJywgJ2F1dG8nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEN1cnNvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2N1cnNvclxuICAgICAgICovXG4gICAgICBjdXJzb3I6IFt7XG4gICAgICAgIGN1cnNvcjogWydhdXRvJywgJ2RlZmF1bHQnLCAncG9pbnRlcicsICd3YWl0JywgJ3RleHQnLCAnbW92ZScsICdoZWxwJywgJ25vdC1hbGxvd2VkJywgJ25vbmUnLCAnY29udGV4dC1tZW51JywgJ3Byb2dyZXNzJywgJ2NlbGwnLCAnY3Jvc3NoYWlyJywgJ3ZlcnRpY2FsLXRleHQnLCAnYWxpYXMnLCAnY29weScsICduby1kcm9wJywgJ2dyYWInLCAnZ3JhYmJpbmcnLCAnYWxsLXNjcm9sbCcsICdjb2wtcmVzaXplJywgJ3Jvdy1yZXNpemUnLCAnbi1yZXNpemUnLCAnZS1yZXNpemUnLCAncy1yZXNpemUnLCAndy1yZXNpemUnLCAnbmUtcmVzaXplJywgJ253LXJlc2l6ZScsICdzZS1yZXNpemUnLCAnc3ctcmVzaXplJywgJ2V3LXJlc2l6ZScsICducy1yZXNpemUnLCAnbmVzdy1yZXNpemUnLCAnbndzZS1yZXNpemUnLCAnem9vbS1pbicsICd6b29tLW91dCcsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQ2FyZXQgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0LWluLXRpbWUtbW9kZSNjYXJldC1jb2xvci11dGlsaXRpZXNcbiAgICAgICAqL1xuICAgICAgJ2NhcmV0LWNvbG9yJzogW3tcbiAgICAgICAgY2FyZXQ6IFtjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUG9pbnRlciBFdmVudHNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wb2ludGVyLWV2ZW50c1xuICAgICAgICovXG4gICAgICAncG9pbnRlci1ldmVudHMnOiBbe1xuICAgICAgICAncG9pbnRlci1ldmVudHMnOiBbJ25vbmUnLCAnYXV0byddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUmVzaXplXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmVzaXplXG4gICAgICAgKi9cbiAgICAgIHJlc2l6ZTogW3tcbiAgICAgICAgcmVzaXplOiBbJ25vbmUnLCAneScsICd4JywgJyddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIEJlaGF2aW9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtYmVoYXZpb3InOiBbe1xuICAgICAgICBzY3JvbGw6IFsnYXV0bycsICdzbW9vdGgnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBNYXJnaW5cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtbSc6IFt7XG4gICAgICAgICdzY3JvbGwtbSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgTWFyZ2luIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtbXgnOiBbe1xuICAgICAgICAnc2Nyb2xsLW14JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBNYXJnaW4gWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1teSc6IFt7XG4gICAgICAgICdzY3JvbGwtbXknOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIE1hcmdpbiBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1tcyc6IFt7XG4gICAgICAgICdzY3JvbGwtbXMnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIE1hcmdpbiBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtbWUnOiBbe1xuICAgICAgICAnc2Nyb2xsLW1lJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBNYXJnaW4gVG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLW10JzogW3tcbiAgICAgICAgJ3Njcm9sbC1tdCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgTWFyZ2luIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLW1yJzogW3tcbiAgICAgICAgJ3Njcm9sbC1tcic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgTWFyZ2luIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1tYic6IFt7XG4gICAgICAgICdzY3JvbGwtbWInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIE1hcmdpbiBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLW1sJzogW3tcbiAgICAgICAgJ3Njcm9sbC1tbCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZ1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtcCc6IFt7XG4gICAgICAgICdzY3JvbGwtcCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZyBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1weCc6IFt7XG4gICAgICAgICdzY3JvbGwtcHgnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmcgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtcHknOiBbe1xuICAgICAgICAnc2Nyb2xsLXB5JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1wcyc6IFt7XG4gICAgICAgICdzY3JvbGwtcHMnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmcgRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1wZSc6IFt7XG4gICAgICAgICdzY3JvbGwtcGUnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmcgVG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1wdCc6IFt7XG4gICAgICAgICdzY3JvbGwtcHQnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmcgUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICovXG4gICAgICAnc2Nyb2xsLXByJzogW3tcbiAgICAgICAgJ3Njcm9sbC1wcic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZyBCb3R0b21cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICovXG4gICAgICAnc2Nyb2xsLXBiJzogW3tcbiAgICAgICAgJ3Njcm9sbC1wYic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZyBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1wbCc6IFt7XG4gICAgICAgICdzY3JvbGwtcGwnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFNuYXAgQWxpZ25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC1hbGlnblxuICAgICAgICovXG4gICAgICAnc25hcC1hbGlnbic6IFt7XG4gICAgICAgIHNuYXA6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdhbGlnbi1ub25lJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgU25hcCBTdG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtc3RvcFxuICAgICAgICovXG4gICAgICAnc25hcC1zdG9wJzogW3tcbiAgICAgICAgc25hcDogWydub3JtYWwnLCAnYWx3YXlzJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgU25hcCBUeXBlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtdHlwZVxuICAgICAgICovXG4gICAgICAnc25hcC10eXBlJzogW3tcbiAgICAgICAgc25hcDogWydub25lJywgJ3gnLCAneScsICdib3RoJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgU25hcCBUeXBlIFN0cmljdG5lc3NcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC10eXBlXG4gICAgICAgKi9cbiAgICAgICdzbmFwLXN0cmljdG5lc3MnOiBbe1xuICAgICAgICBzbmFwOiBbJ21hbmRhdG9yeScsICdwcm94aW1pdHknXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRvdWNoIEFjdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICovXG4gICAgICB0b3VjaDogW3tcbiAgICAgICAgdG91Y2g6IFsnYXV0bycsICdub25lJywgJ21hbmlwdWxhdGlvbiddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVG91Y2ggQWN0aW9uIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAqL1xuICAgICAgJ3RvdWNoLXgnOiBbe1xuICAgICAgICAndG91Y2gtcGFuJzogWyd4JywgJ2xlZnQnLCAncmlnaHQnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRvdWNoIEFjdGlvbiBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgKi9cbiAgICAgICd0b3VjaC15JzogW3tcbiAgICAgICAgJ3RvdWNoLXBhbic6IFsneScsICd1cCcsICdkb3duJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUb3VjaCBBY3Rpb24gUGluY2ggWm9vbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICovXG4gICAgICAndG91Y2gtcHonOiBbJ3RvdWNoLXBpbmNoLXpvb20nXSxcbiAgICAgIC8qKlxuICAgICAgICogVXNlciBTZWxlY3RcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy91c2VyLXNlbGVjdFxuICAgICAgICovXG4gICAgICBzZWxlY3Q6IFt7XG4gICAgICAgIHNlbGVjdDogWydub25lJywgJ3RleHQnLCAnYWxsJywgJ2F1dG8nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFdpbGwgQ2hhbmdlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2lsbC1jaGFuZ2VcbiAgICAgICAqL1xuICAgICAgJ3dpbGwtY2hhbmdlJzogW3tcbiAgICAgICAgJ3dpbGwtY2hhbmdlJzogWydhdXRvJywgJ3Njcm9sbCcsICdjb250ZW50cycsICd0cmFuc2Zvcm0nLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvLyBTVkdcbiAgICAgIC8qKlxuICAgICAgICogRmlsbFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZpbGxcbiAgICAgICAqL1xuICAgICAgZmlsbDogW3tcbiAgICAgICAgZmlsbDogW2NvbG9ycywgJ25vbmUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFN0cm9rZSBXaWR0aFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3N0cm9rZS13aWR0aFxuICAgICAgICovXG4gICAgICAnc3Ryb2tlLXcnOiBbe1xuICAgICAgICBzdHJva2U6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGgsIGlzQXJiaXRyYXJ5TnVtYmVyXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFN0cm9rZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3N0cm9rZVxuICAgICAgICovXG4gICAgICBzdHJva2U6IFt7XG4gICAgICAgIHN0cm9rZTogW2NvbG9ycywgJ25vbmUnXVxuICAgICAgfV0sXG4gICAgICAvLyBBY2Nlc3NpYmlsaXR5XG4gICAgICAvKipcbiAgICAgICAqIFNjcmVlbiBSZWFkZXJzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NyZWVuLXJlYWRlcnNcbiAgICAgICAqL1xuICAgICAgc3I6IFsnc3Itb25seScsICdub3Qtc3Itb25seSddLFxuICAgICAgLyoqXG4gICAgICAgKiBGb3JjZWQgQ29sb3IgQWRqdXN0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9yY2VkLWNvbG9yLWFkanVzdFxuICAgICAgICovXG4gICAgICAnZm9yY2VkLWNvbG9yLWFkanVzdCc6IFt7XG4gICAgICAgICdmb3JjZWQtY29sb3ItYWRqdXN0JzogWydhdXRvJywgJ25vbmUnXVxuICAgICAgfV1cbiAgICB9LFxuICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cHM6IHtcbiAgICAgIG92ZXJmbG93OiBbJ292ZXJmbG93LXgnLCAnb3ZlcmZsb3cteSddLFxuICAgICAgb3ZlcnNjcm9sbDogWydvdmVyc2Nyb2xsLXgnLCAnb3ZlcnNjcm9sbC15J10sXG4gICAgICBpbnNldDogWydpbnNldC14JywgJ2luc2V0LXknLCAnc3RhcnQnLCAnZW5kJywgJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddLFxuICAgICAgJ2luc2V0LXgnOiBbJ3JpZ2h0JywgJ2xlZnQnXSxcbiAgICAgICdpbnNldC15JzogWyd0b3AnLCAnYm90dG9tJ10sXG4gICAgICBmbGV4OiBbJ2Jhc2lzJywgJ2dyb3cnLCAnc2hyaW5rJ10sXG4gICAgICBnYXA6IFsnZ2FwLXgnLCAnZ2FwLXknXSxcbiAgICAgIHA6IFsncHgnLCAncHknLCAncHMnLCAncGUnLCAncHQnLCAncHInLCAncGInLCAncGwnXSxcbiAgICAgIHB4OiBbJ3ByJywgJ3BsJ10sXG4gICAgICBweTogWydwdCcsICdwYiddLFxuICAgICAgbTogWydteCcsICdteScsICdtcycsICdtZScsICdtdCcsICdtcicsICdtYicsICdtbCddLFxuICAgICAgbXg6IFsnbXInLCAnbWwnXSxcbiAgICAgIG15OiBbJ210JywgJ21iJ10sXG4gICAgICBzaXplOiBbJ3cnLCAnaCddLFxuICAgICAgJ2ZvbnQtc2l6ZSc6IFsnbGVhZGluZyddLFxuICAgICAgJ2Z2bi1ub3JtYWwnOiBbJ2Z2bi1vcmRpbmFsJywgJ2Z2bi1zbGFzaGVkLXplcm8nLCAnZnZuLWZpZ3VyZScsICdmdm4tc3BhY2luZycsICdmdm4tZnJhY3Rpb24nXSxcbiAgICAgICdmdm4tb3JkaW5hbCc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICdmdm4tZmlndXJlJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAnZnZuLXNwYWNpbmcnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICdmdm4tZnJhY3Rpb24nOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICdsaW5lLWNsYW1wJzogWydkaXNwbGF5JywgJ292ZXJmbG93J10sXG4gICAgICByb3VuZGVkOiBbJ3JvdW5kZWQtcycsICdyb3VuZGVkLWUnLCAncm91bmRlZC10JywgJ3JvdW5kZWQtcicsICdyb3VuZGVkLWInLCAncm91bmRlZC1sJywgJ3JvdW5kZWQtc3MnLCAncm91bmRlZC1zZScsICdyb3VuZGVkLWVlJywgJ3JvdW5kZWQtZXMnLCAncm91bmRlZC10bCcsICdyb3VuZGVkLXRyJywgJ3JvdW5kZWQtYnInLCAncm91bmRlZC1ibCddLFxuICAgICAgJ3JvdW5kZWQtcyc6IFsncm91bmRlZC1zcycsICdyb3VuZGVkLWVzJ10sXG4gICAgICAncm91bmRlZC1lJzogWydyb3VuZGVkLXNlJywgJ3JvdW5kZWQtZWUnXSxcbiAgICAgICdyb3VuZGVkLXQnOiBbJ3JvdW5kZWQtdGwnLCAncm91bmRlZC10ciddLFxuICAgICAgJ3JvdW5kZWQtcic6IFsncm91bmRlZC10cicsICdyb3VuZGVkLWJyJ10sXG4gICAgICAncm91bmRlZC1iJzogWydyb3VuZGVkLWJyJywgJ3JvdW5kZWQtYmwnXSxcbiAgICAgICdyb3VuZGVkLWwnOiBbJ3JvdW5kZWQtdGwnLCAncm91bmRlZC1ibCddLFxuICAgICAgJ2JvcmRlci1zcGFjaW5nJzogWydib3JkZXItc3BhY2luZy14JywgJ2JvcmRlci1zcGFjaW5nLXknXSxcbiAgICAgICdib3JkZXItdyc6IFsnYm9yZGVyLXctcycsICdib3JkZXItdy1lJywgJ2JvcmRlci13LXQnLCAnYm9yZGVyLXctcicsICdib3JkZXItdy1iJywgJ2JvcmRlci13LWwnXSxcbiAgICAgICdib3JkZXItdy14JzogWydib3JkZXItdy1yJywgJ2JvcmRlci13LWwnXSxcbiAgICAgICdib3JkZXItdy15JzogWydib3JkZXItdy10JywgJ2JvcmRlci13LWInXSxcbiAgICAgICdib3JkZXItY29sb3InOiBbJ2JvcmRlci1jb2xvci10JywgJ2JvcmRlci1jb2xvci1yJywgJ2JvcmRlci1jb2xvci1iJywgJ2JvcmRlci1jb2xvci1sJ10sXG4gICAgICAnYm9yZGVyLWNvbG9yLXgnOiBbJ2JvcmRlci1jb2xvci1yJywgJ2JvcmRlci1jb2xvci1sJ10sXG4gICAgICAnYm9yZGVyLWNvbG9yLXknOiBbJ2JvcmRlci1jb2xvci10JywgJ2JvcmRlci1jb2xvci1iJ10sXG4gICAgICAnc2Nyb2xsLW0nOiBbJ3Njcm9sbC1teCcsICdzY3JvbGwtbXknLCAnc2Nyb2xsLW1zJywgJ3Njcm9sbC1tZScsICdzY3JvbGwtbXQnLCAnc2Nyb2xsLW1yJywgJ3Njcm9sbC1tYicsICdzY3JvbGwtbWwnXSxcbiAgICAgICdzY3JvbGwtbXgnOiBbJ3Njcm9sbC1tcicsICdzY3JvbGwtbWwnXSxcbiAgICAgICdzY3JvbGwtbXknOiBbJ3Njcm9sbC1tdCcsICdzY3JvbGwtbWInXSxcbiAgICAgICdzY3JvbGwtcCc6IFsnc2Nyb2xsLXB4JywgJ3Njcm9sbC1weScsICdzY3JvbGwtcHMnLCAnc2Nyb2xsLXBlJywgJ3Njcm9sbC1wdCcsICdzY3JvbGwtcHInLCAnc2Nyb2xsLXBiJywgJ3Njcm9sbC1wbCddLFxuICAgICAgJ3Njcm9sbC1weCc6IFsnc2Nyb2xsLXByJywgJ3Njcm9sbC1wbCddLFxuICAgICAgJ3Njcm9sbC1weSc6IFsnc2Nyb2xsLXB0JywgJ3Njcm9sbC1wYiddLFxuICAgICAgdG91Y2g6IFsndG91Y2gteCcsICd0b3VjaC15JywgJ3RvdWNoLXB6J10sXG4gICAgICAndG91Y2gteCc6IFsndG91Y2gnXSxcbiAgICAgICd0b3VjaC15JzogWyd0b3VjaCddLFxuICAgICAgJ3RvdWNoLXB6JzogWyd0b3VjaCddXG4gICAgfSxcbiAgICBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnM6IHtcbiAgICAgICdmb250LXNpemUnOiBbJ2xlYWRpbmcnXVxuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gYmFzZUNvbmZpZyBDb25maWcgd2hlcmUgb3RoZXIgY29uZmlnIHdpbGwgYmUgbWVyZ2VkIGludG8uIFRoaXMgb2JqZWN0IHdpbGwgYmUgbXV0YXRlZC5cbiAqIEBwYXJhbSBjb25maWdFeHRlbnNpb24gUGFydGlhbCBjb25maWcgdG8gbWVyZ2UgaW50byB0aGUgYGJhc2VDb25maWdgLlxuICovXG5mdW5jdGlvbiBtZXJnZUNvbmZpZ3MoYmFzZUNvbmZpZywge1xuICBjYWNoZVNpemUsXG4gIHByZWZpeCxcbiAgc2VwYXJhdG9yLFxuICBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSxcbiAgZXh0ZW5kID0ge30sXG4gIG92ZXJyaWRlID0ge31cbn0pIHtcbiAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnY2FjaGVTaXplJywgY2FjaGVTaXplKTtcbiAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAncHJlZml4JywgcHJlZml4KTtcbiAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnc2VwYXJhdG9yJywgc2VwYXJhdG9yKTtcbiAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUnLCBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSk7XG4gIGZvciAoY29uc3QgY29uZmlnS2V5IGluIG92ZXJyaWRlKSB7XG4gICAgb3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzKGJhc2VDb25maWdbY29uZmlnS2V5XSwgb3ZlcnJpZGVbY29uZmlnS2V5XSk7XG4gIH1cbiAgZm9yIChjb25zdCBrZXkgaW4gZXh0ZW5kKSB7XG4gICAgbWVyZ2VDb25maWdQcm9wZXJ0aWVzKGJhc2VDb25maWdba2V5XSwgZXh0ZW5kW2tleV0pO1xuICB9XG4gIHJldHVybiBiYXNlQ29uZmlnO1xufVxuZnVuY3Rpb24gb3ZlcnJpZGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBvdmVycmlkZUtleSwgb3ZlcnJpZGVWYWx1ZSkge1xuICBpZiAob3ZlcnJpZGVWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgYmFzZU9iamVjdFtvdmVycmlkZUtleV0gPSBvdmVycmlkZVZhbHVlO1xuICB9XG59XG5mdW5jdGlvbiBvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMoYmFzZU9iamVjdCwgb3ZlcnJpZGVPYmplY3QpIHtcbiAgaWYgKG92ZXJyaWRlT2JqZWN0KSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb3ZlcnJpZGVPYmplY3QpIHtcbiAgICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZU9iamVjdCwga2V5LCBvdmVycmlkZU9iamVjdFtrZXldKTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIG1lcmdlQ29uZmlnUHJvcGVydGllcyhiYXNlT2JqZWN0LCBtZXJnZU9iamVjdCkge1xuICBpZiAobWVyZ2VPYmplY3QpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBtZXJnZU9iamVjdCkge1xuICAgICAgY29uc3QgbWVyZ2VWYWx1ZSA9IG1lcmdlT2JqZWN0W2tleV07XG4gICAgICBpZiAobWVyZ2VWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGJhc2VPYmplY3Rba2V5XSA9IChiYXNlT2JqZWN0W2tleV0gfHwgW10pLmNvbmNhdChtZXJnZVZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGV4dGVuZFRhaWx3aW5kTWVyZ2UoY29uZmlnRXh0ZW5zaW9uLCAuLi5jcmVhdGVDb25maWcpIHtcbiAgcmV0dXJuIHR5cGVvZiBjb25maWdFeHRlbnNpb24gPT09ICdmdW5jdGlvbicgPyBjcmVhdGVUYWlsd2luZE1lcmdlKGdldERlZmF1bHRDb25maWcsIGNvbmZpZ0V4dGVuc2lvbiwgLi4uY3JlYXRlQ29uZmlnKSA6IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoKCkgPT4gbWVyZ2VDb25maWdzKGdldERlZmF1bHRDb25maWcoKSwgY29uZmlnRXh0ZW5zaW9uKSwgLi4uY3JlYXRlQ29uZmlnKTtcbn1cbmNvbnN0IHR3TWVyZ2UgPSAvKiNfX1BVUkVfXyovY3JlYXRlVGFpbHdpbmRNZXJnZShnZXREZWZhdWx0Q29uZmlnKTtcbmV4cG9ydCB7IGNyZWF0ZVRhaWx3aW5kTWVyZ2UsIGV4dGVuZFRhaWx3aW5kTWVyZ2UsIGZyb21UaGVtZSwgZ2V0RGVmYXVsdENvbmZpZywgbWVyZ2VDb25maWdzLCB0d0pvaW4sIHR3TWVyZ2UsIHZhbGlkYXRvcnMgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJ1bmRsZS1tanMubWpzLm1hcFxuIiwiZnVuY3Rpb24gaXNPYmplY3QoaXRlbSkge1xuICByZXR1cm4gaXRlbSAhPT0gbnVsbCAmJiB0eXBlb2YgaXRlbSA9PT0gXCJvYmplY3RcIiAmJiBpdGVtLmNvbnN0cnVjdG9yID09PSBPYmplY3Q7XG59XG5cbmV4cG9ydCB7IGlzT2JqZWN0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1vYmplY3QubWpzLm1hcFxuIiwiaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tICcuL2lzLW9iamVjdC5tanMnO1xuXG5mdW5jdGlvbiBjbG9uZURlZXAoc291cmNlKSB7XG4gIGlmICghaXNPYmplY3Qoc291cmNlKSkge1xuICAgIHJldHVybiBzb3VyY2U7XG4gIH1cbiAgY29uc3Qgb3V0cHV0ID0ge307XG4gIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgIG91dHB1dFtrZXldID0gY2xvbmVEZWVwKHNvdXJjZVtrZXldKTtcbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufVxuXG5leHBvcnQgeyBjbG9uZURlZXAgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNsb25lLWRlZXAubWpzLm1hcFxuIiwiaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnLi9jbG9uZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJy4vaXMtb2JqZWN0Lm1qcyc7XG5cbmZ1bmN0aW9uIG1lcmdlRGVlcCh0YXJnZXQsIHNvdXJjZSkge1xuICBpZiAoaXNPYmplY3Qoc291cmNlKSAmJiBPYmplY3Qua2V5cyhzb3VyY2UpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBjbG9uZURlZXAoeyAuLi50YXJnZXQsIC4uLnNvdXJjZSB9KTtcbiAgfVxuICBjb25zdCBvdXRwdXQgPSB7IC4uLnRhcmdldCwgLi4uc291cmNlIH07XG4gIGlmIChpc09iamVjdChzb3VyY2UpICYmIGlzT2JqZWN0KHRhcmdldCkpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzb3VyY2UpIHtcbiAgICAgIGlmIChpc09iamVjdChzb3VyY2Vba2V5XSkgJiYga2V5IGluIHRhcmdldCAmJiBpc09iamVjdCh0YXJnZXRba2V5XSkpIHtcbiAgICAgICAgb3V0cHV0W2tleV0gPSBtZXJnZURlZXAodGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dHB1dFtrZXldID0gaXNPYmplY3Qoc291cmNlW2tleV0pID8gY2xvbmVEZWVwKHNvdXJjZVtrZXldKSA6IHNvdXJjZVtrZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufVxuXG5leHBvcnQgeyBtZXJnZURlZXAgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1lcmdlLWRlZXAubWpzLm1hcFxuIiwiZnVuY3Rpb24gY3JlYXRlVGhlbWUoaW5wdXQpIHtcbiAgcmV0dXJuIGlucHV0O1xufVxuXG5leHBvcnQgeyBjcmVhdGVUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y3JlYXRlLXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgYWNjb3JkaW9uVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImRpdmlkZS15IGRpdmlkZS1ncmF5LTIwMCBib3JkZXItZ3JheS0yMDAgZGFyazpkaXZpZGUtZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS03MDBcIixcbiAgICBmbHVzaDoge1xuICAgICAgb2ZmOiBcInJvdW5kZWQtbGcgYm9yZGVyXCIsXG4gICAgICBvbjogXCJib3JkZXItYlwiXG4gICAgfVxuICB9LFxuICBjb250ZW50OiB7XG4gICAgYmFzZTogXCJwLTUgZmlyc3Q6cm91bmRlZC10LWxnIGxhc3Q6cm91bmRlZC1iLWxnIGRhcms6YmctZ3JheS05MDBcIlxuICB9LFxuICB0aXRsZToge1xuICAgIGFycm93OiB7XG4gICAgICBiYXNlOiBcImgtNiB3LTYgc2hyaW5rLTBcIixcbiAgICAgIG9wZW46IHtcbiAgICAgICAgb2ZmOiBcIlwiLFxuICAgICAgICBvbjogXCJyb3RhdGUtMTgwXCJcbiAgICAgIH1cbiAgICB9LFxuICAgIGJhc2U6IFwiZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwLTUgdGV4dC1sZWZ0IGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDAgZmlyc3Q6cm91bmRlZC10LWxnIGxhc3Q6cm91bmRlZC1iLWxnIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICAgIGZsdXNoOiB7XG4gICAgICBvZmY6IFwiaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JheS0yMDAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS04MDBcIixcbiAgICAgIG9uOiBcImJnLXRyYW5zcGFyZW50IGRhcms6YmctdHJhbnNwYXJlbnRcIlxuICAgIH0sXG4gICAgaGVhZGluZzogXCJcIixcbiAgICBvcGVuOiB7XG4gICAgICBvZmY6IFwiXCIsXG4gICAgICBvbjogXCJiZy1ncmF5LTEwMCB0ZXh0LWdyYXktOTAwIGRhcms6YmctZ3JheS04MDAgZGFyazp0ZXh0LXdoaXRlXCJcbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBhY2NvcmRpb25UaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBhbGVydFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBiYXNlOiBcImZsZXggZmxleC1jb2wgZ2FwLTIgcC00IHRleHQtc21cIixcbiAgYm9yZGVyQWNjZW50OiBcImJvcmRlci10LTRcIixcbiAgY2xvc2VCdXR0b246IHtcbiAgICBiYXNlOiBcIi1tLTEuNSBtbC1hdXRvIGlubGluZS1mbGV4IGgtOCB3LTggcm91bmRlZC1sZyBwLTEuNSBmb2N1czpyaW5nLTJcIixcbiAgICBpY29uOiBcImgtNSB3LTVcIixcbiAgICBjb2xvcjoge1xuICAgICAgaW5mbzogXCJiZy1jeWFuLTEwMCB0ZXh0LWN5YW4tNTAwIGhvdmVyOmJnLWN5YW4tMjAwIGZvY3VzOnJpbmctY3lhbi00MDAgZGFyazpiZy1jeWFuLTIwMCBkYXJrOnRleHQtY3lhbi02MDAgZGFyazpob3ZlcjpiZy1jeWFuLTMwMFwiLFxuICAgICAgZ3JheTogXCJiZy1ncmF5LTEwMCB0ZXh0LWdyYXktNTAwIGhvdmVyOmJnLWdyYXktMjAwIGZvY3VzOnJpbmctZ3JheS00MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS0zMDAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGVcIixcbiAgICAgIGZhaWx1cmU6IFwiYmctcmVkLTEwMCB0ZXh0LXJlZC01MDAgaG92ZXI6YmctcmVkLTIwMCBmb2N1czpyaW5nLXJlZC00MDAgZGFyazpiZy1yZWQtMjAwIGRhcms6dGV4dC1yZWQtNjAwIGRhcms6aG92ZXI6YmctcmVkLTMwMFwiLFxuICAgICAgc3VjY2VzczogXCJiZy1ncmVlbi0xMDAgdGV4dC1ncmVlbi01MDAgaG92ZXI6YmctZ3JlZW4tMjAwIGZvY3VzOnJpbmctZ3JlZW4tNDAwIGRhcms6YmctZ3JlZW4tMjAwIGRhcms6dGV4dC1ncmVlbi02MDAgZGFyazpob3ZlcjpiZy1ncmVlbi0zMDBcIixcbiAgICAgIHdhcm5pbmc6IFwiYmcteWVsbG93LTEwMCB0ZXh0LXllbGxvdy01MDAgaG92ZXI6YmcteWVsbG93LTIwMCBmb2N1czpyaW5nLXllbGxvdy00MDAgZGFyazpiZy15ZWxsb3ctMjAwIGRhcms6dGV4dC15ZWxsb3ctNjAwIGRhcms6aG92ZXI6YmcteWVsbG93LTMwMFwiLFxuICAgICAgcmVkOiBcImJnLXJlZC0xMDAgdGV4dC1yZWQtNTAwIGhvdmVyOmJnLXJlZC0yMDAgZm9jdXM6cmluZy1yZWQtNDAwIGRhcms6YmctcmVkLTIwMCBkYXJrOnRleHQtcmVkLTYwMCBkYXJrOmhvdmVyOmJnLXJlZC0zMDBcIixcbiAgICAgIGdyZWVuOiBcImJnLWdyZWVuLTEwMCB0ZXh0LWdyZWVuLTUwMCBob3ZlcjpiZy1ncmVlbi0yMDAgZm9jdXM6cmluZy1ncmVlbi00MDAgZGFyazpiZy1ncmVlbi0yMDAgZGFyazp0ZXh0LWdyZWVuLTYwMCBkYXJrOmhvdmVyOmJnLWdyZWVuLTMwMFwiLFxuICAgICAgeWVsbG93OiBcImJnLXllbGxvdy0xMDAgdGV4dC15ZWxsb3ctNTAwIGhvdmVyOmJnLXllbGxvdy0yMDAgZm9jdXM6cmluZy15ZWxsb3ctNDAwIGRhcms6YmcteWVsbG93LTIwMCBkYXJrOnRleHQteWVsbG93LTYwMCBkYXJrOmhvdmVyOmJnLXllbGxvdy0zMDBcIixcbiAgICAgIGJsdWU6IFwiYmctYmx1ZS0xMDAgdGV4dC1ibHVlLTUwMCBob3ZlcjpiZy1ibHVlLTIwMCBmb2N1czpyaW5nLWJsdWUtNDAwIGRhcms6YmctYmx1ZS0yMDAgZGFyazp0ZXh0LWJsdWUtNjAwIGRhcms6aG92ZXI6YmctYmx1ZS0zMDBcIixcbiAgICAgIGN5YW46IFwiYmctY3lhbi0xMDAgdGV4dC1jeWFuLTUwMCBob3ZlcjpiZy1jeWFuLTIwMCBmb2N1czpyaW5nLWN5YW4tNDAwIGRhcms6YmctY3lhbi0yMDAgZGFyazp0ZXh0LWN5YW4tNjAwIGRhcms6aG92ZXI6YmctY3lhbi0zMDBcIixcbiAgICAgIHBpbms6IFwiYmctcGluay0xMDAgdGV4dC1waW5rLTUwMCBob3ZlcjpiZy1waW5rLTIwMCBmb2N1czpyaW5nLXBpbmstNDAwIGRhcms6YmctcGluay0yMDAgZGFyazp0ZXh0LXBpbmstNjAwIGRhcms6aG92ZXI6YmctcGluay0zMDBcIixcbiAgICAgIGxpbWU6IFwiYmctbGltZS0xMDAgdGV4dC1saW1lLTUwMCBob3ZlcjpiZy1saW1lLTIwMCBmb2N1czpyaW5nLWxpbWUtNDAwIGRhcms6YmctbGltZS0yMDAgZGFyazp0ZXh0LWxpbWUtNjAwIGRhcms6aG92ZXI6YmctbGltZS0zMDBcIixcbiAgICAgIGRhcms6IFwiYmctZ3JheS0xMDAgdGV4dC1ncmF5LTUwMCBob3ZlcjpiZy1ncmF5LTIwMCBmb2N1czpyaW5nLWdyYXktNDAwIGRhcms6YmctZ3JheS0yMDAgZGFyazp0ZXh0LWdyYXktNjAwIGRhcms6aG92ZXI6YmctZ3JheS0zMDBcIixcbiAgICAgIGluZGlnbzogXCJiZy1pbmRpZ28tMTAwIHRleHQtaW5kaWdvLTUwMCBob3ZlcjpiZy1pbmRpZ28tMjAwIGZvY3VzOnJpbmctaW5kaWdvLTQwMCBkYXJrOmJnLWluZGlnby0yMDAgZGFyazp0ZXh0LWluZGlnby02MDAgZGFyazpob3ZlcjpiZy1pbmRpZ28tMzAwXCIsXG4gICAgICBwdXJwbGU6IFwiYmctcHVycGxlLTEwMCB0ZXh0LXB1cnBsZS01MDAgaG92ZXI6YmctcHVycGxlLTIwMCBmb2N1czpyaW5nLXB1cnBsZS00MDAgZGFyazpiZy1wdXJwbGUtMjAwIGRhcms6dGV4dC1wdXJwbGUtNjAwIGRhcms6aG92ZXI6YmctcHVycGxlLTMwMFwiLFxuICAgICAgdGVhbDogXCJiZy10ZWFsLTEwMCB0ZXh0LXRlYWwtNTAwIGhvdmVyOmJnLXRlYWwtMjAwIGZvY3VzOnJpbmctdGVhbC00MDAgZGFyazpiZy10ZWFsLTIwMCBkYXJrOnRleHQtdGVhbC02MDAgZGFyazpob3ZlcjpiZy10ZWFsLTMwMFwiLFxuICAgICAgbGlnaHQ6IFwiYmctZ3JheS01MCB0ZXh0LWdyYXktNTAwIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOnJpbmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS0yMDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGVcIlxuICAgIH1cbiAgfSxcbiAgY29sb3I6IHtcbiAgICBpbmZvOiBcImJvcmRlci1jeWFuLTUwMCBiZy1jeWFuLTEwMCB0ZXh0LWN5YW4tNzAwIGRhcms6YmctY3lhbi0yMDAgZGFyazp0ZXh0LWN5YW4tODAwXCIsXG4gICAgZ3JheTogXCJib3JkZXItZ3JheS01MDAgYmctZ3JheS0xMDAgdGV4dC1ncmF5LTcwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTMwMFwiLFxuICAgIGZhaWx1cmU6IFwiYm9yZGVyLXJlZC01MDAgYmctcmVkLTEwMCB0ZXh0LXJlZC03MDAgZGFyazpiZy1yZWQtMjAwIGRhcms6dGV4dC1yZWQtODAwXCIsXG4gICAgc3VjY2VzczogXCJib3JkZXItZ3JlZW4tNTAwIGJnLWdyZWVuLTEwMCB0ZXh0LWdyZWVuLTcwMCBkYXJrOmJnLWdyZWVuLTIwMCBkYXJrOnRleHQtZ3JlZW4tODAwXCIsXG4gICAgd2FybmluZzogXCJib3JkZXIteWVsbG93LTUwMCBiZy15ZWxsb3ctMTAwIHRleHQteWVsbG93LTcwMCBkYXJrOmJnLXllbGxvdy0yMDAgZGFyazp0ZXh0LXllbGxvdy04MDBcIixcbiAgICByZWQ6IFwiYm9yZGVyLXJlZC01MDAgYmctcmVkLTEwMCB0ZXh0LXJlZC03MDAgZGFyazpiZy1yZWQtMjAwIGRhcms6dGV4dC1yZWQtODAwXCIsXG4gICAgZ3JlZW46IFwiYm9yZGVyLWdyZWVuLTUwMCBiZy1ncmVlbi0xMDAgdGV4dC1ncmVlbi03MDAgZGFyazpiZy1ncmVlbi0yMDAgZGFyazp0ZXh0LWdyZWVuLTgwMFwiLFxuICAgIHllbGxvdzogXCJib3JkZXIteWVsbG93LTUwMCBiZy15ZWxsb3ctMTAwIHRleHQteWVsbG93LTcwMCBkYXJrOmJnLXllbGxvdy0yMDAgZGFyazp0ZXh0LXllbGxvdy04MDBcIixcbiAgICBibHVlOiBcImJvcmRlci1ibHVlLTUwMCBiZy1ibHVlLTEwMCB0ZXh0LWJsdWUtNzAwIGRhcms6YmctYmx1ZS0yMDAgZGFyazp0ZXh0LWJsdWUtODAwXCIsXG4gICAgY3lhbjogXCJib3JkZXItY3lhbi01MDAgYmctY3lhbi0xMDAgdGV4dC1jeWFuLTcwMCBkYXJrOmJnLWN5YW4tMjAwIGRhcms6dGV4dC1jeWFuLTgwMFwiLFxuICAgIHBpbms6IFwiYm9yZGVyLXBpbmstNTAwIGJnLXBpbmstMTAwIHRleHQtcGluay03MDAgZGFyazpiZy1waW5rLTIwMCBkYXJrOnRleHQtcGluay04MDBcIixcbiAgICBsaW1lOiBcImJvcmRlci1saW1lLTUwMCBiZy1saW1lLTEwMCB0ZXh0LWxpbWUtNzAwIGRhcms6YmctbGltZS0yMDAgZGFyazp0ZXh0LWxpbWUtODAwXCIsXG4gICAgZGFyazogXCJib3JkZXItZ3JheS02MDAgYmctZ3JheS04MDAgdGV4dC1ncmF5LTIwMCBkYXJrOmJnLWdyYXktOTAwIGRhcms6dGV4dC1ncmF5LTMwMFwiLFxuICAgIGluZGlnbzogXCJib3JkZXItaW5kaWdvLTUwMCBiZy1pbmRpZ28tMTAwIHRleHQtaW5kaWdvLTcwMCBkYXJrOmJnLWluZGlnby0yMDAgZGFyazp0ZXh0LWluZGlnby04MDBcIixcbiAgICBwdXJwbGU6IFwiYm9yZGVyLXB1cnBsZS01MDAgYmctcHVycGxlLTEwMCB0ZXh0LXB1cnBsZS03MDAgZGFyazpiZy1wdXJwbGUtMjAwIGRhcms6dGV4dC1wdXJwbGUtODAwXCIsXG4gICAgdGVhbDogXCJib3JkZXItdGVhbC01MDAgYmctdGVhbC0xMDAgdGV4dC10ZWFsLTcwMCBkYXJrOmJnLXRlYWwtMjAwIGRhcms6dGV4dC10ZWFsLTgwMFwiLFxuICAgIGxpZ2h0OiBcImJvcmRlci1ncmF5LTQwMCBiZy1ncmF5LTUwIHRleHQtZ3JheS02MDAgZGFyazpiZy1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS0yMDBcIlxuICB9LFxuICBpY29uOiBcIm1yLTMgaW5saW5lIGgtNSB3LTUgZmxleC1zaHJpbmstMFwiLFxuICByb3VuZGVkOiBcInJvdW5kZWQtbGdcIixcbiAgd3JhcHBlcjogXCJmbGV4IGl0ZW1zLWNlbnRlclwiXG59KTtcblxuZXhwb3J0IHsgYWxlcnRUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBhdmF0YXJUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc3BhY2UteC00IHJvdW5kZWRcIixcbiAgICBib3JkZXJlZDogXCJwLTEgcmluZy0yXCIsXG4gICAgcm91bmRlZDogXCJyb3VuZGVkLWZ1bGxcIixcbiAgICBjb2xvcjoge1xuICAgICAgZGFyazogXCJyaW5nLWdyYXktODAwIGRhcms6cmluZy1ncmF5LTgwMFwiLFxuICAgICAgZmFpbHVyZTogXCJyaW5nLXJlZC01MDAgZGFyazpyaW5nLXJlZC03MDBcIixcbiAgICAgIGdyYXk6IFwicmluZy1ncmF5LTUwMCBkYXJrOnJpbmctZ3JheS00MDBcIixcbiAgICAgIGluZm86IFwicmluZy1jeWFuLTQwMCBkYXJrOnJpbmctY3lhbi04MDBcIixcbiAgICAgIGxpZ2h0OiBcInJpbmctZ3JheS0zMDAgZGFyazpyaW5nLWdyYXktNTAwXCIsXG4gICAgICBwdXJwbGU6IFwicmluZy1wdXJwbGUtNTAwIGRhcms6cmluZy1wdXJwbGUtNjAwXCIsXG4gICAgICBzdWNjZXNzOiBcInJpbmctZ3JlZW4tNTAwIGRhcms6cmluZy1ncmVlbi01MDBcIixcbiAgICAgIHdhcm5pbmc6IFwicmluZy15ZWxsb3ctMzAwIGRhcms6cmluZy15ZWxsb3ctNTAwXCIsXG4gICAgICBwaW5rOiBcInJpbmctcGluay01MDAgZGFyazpyaW5nLXBpbmstNTAwXCJcbiAgICB9LFxuICAgIGltZzoge1xuICAgICAgYmFzZTogXCJyb3VuZGVkXCIsXG4gICAgICBvZmY6IFwicmVsYXRpdmUgb3ZlcmZsb3ctaGlkZGVuIGJnLWdyYXktMTAwIGRhcms6YmctZ3JheS02MDBcIixcbiAgICAgIG9uOiBcIlwiLFxuICAgICAgcGxhY2Vob2xkZXI6IFwiYWJzb2x1dGUgLWJvdHRvbS0xIGgtYXV0byB3LWF1dG8gdGV4dC1ncmF5LTQwMFwiXG4gICAgfSxcbiAgICBzaXplOiB7XG4gICAgICB4czogXCJoLTYgdy02XCIsXG4gICAgICBzbTogXCJoLTggdy04XCIsXG4gICAgICBtZDogXCJoLTEwIHctMTBcIixcbiAgICAgIGxnOiBcImgtMjAgdy0yMFwiLFxuICAgICAgeGw6IFwiaC0zNiB3LTM2XCJcbiAgICB9LFxuICAgIHN0YWNrZWQ6IFwicmluZy0yIHJpbmctZ3JheS0zMDAgZGFyazpyaW5nLWdyYXktNTAwXCIsXG4gICAgc3RhdHVzUG9zaXRpb246IHtcbiAgICAgIFwiYm90dG9tLWxlZnRcIjogXCItYm90dG9tLTEgLWxlZnQtMVwiLFxuICAgICAgXCJib3R0b20tY2VudGVyXCI6IFwiLWJvdHRvbS0xXCIsXG4gICAgICBcImJvdHRvbS1yaWdodFwiOiBcIi1ib3R0b20tMSAtcmlnaHQtMVwiLFxuICAgICAgXCJ0b3AtbGVmdFwiOiBcIi1sZWZ0LTEgLXRvcC0xXCIsXG4gICAgICBcInRvcC1jZW50ZXJcIjogXCItdG9wLTFcIixcbiAgICAgIFwidG9wLXJpZ2h0XCI6IFwiLXJpZ2h0LTEgLXRvcC0xXCIsXG4gICAgICBcImNlbnRlci1yaWdodFwiOiBcIi1yaWdodC0xXCIsXG4gICAgICBjZW50ZXI6IFwiXCIsXG4gICAgICBcImNlbnRlci1sZWZ0XCI6IFwiLWxlZnQtMVwiXG4gICAgfSxcbiAgICBzdGF0dXM6IHtcbiAgICAgIGF3YXk6IFwiYmcteWVsbG93LTQwMFwiLFxuICAgICAgYmFzZTogXCJhYnNvbHV0ZSBoLTMuNSB3LTMuNSByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLXdoaXRlIGRhcms6Ym9yZGVyLWdyYXktODAwXCIsXG4gICAgICBidXN5OiBcImJnLXJlZC00MDBcIixcbiAgICAgIG9mZmxpbmU6IFwiYmctZ3JheS00MDBcIixcbiAgICAgIG9ubGluZTogXCJiZy1ncmVlbi00MDBcIlxuICAgIH0sXG4gICAgaW5pdGlhbHM6IHtcbiAgICAgIHRleHQ6IFwiZm9udC1tZWRpdW0gdGV4dC1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS0zMDBcIixcbiAgICAgIGJhc2U6IFwicmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIG92ZXJmbG93LWhpZGRlbiBiZy1ncmF5LTEwMCBkYXJrOmJnLWdyYXktNjAwXCJcbiAgICB9XG4gIH0sXG4gIGdyb3VwOiB7XG4gICAgYmFzZTogXCJmbGV4IC1zcGFjZS14LTRcIlxuICB9LFxuICBncm91cENvdW50ZXI6IHtcbiAgICBiYXNlOiBcInJlbGF0aXZlIGZsZXggaC0xMCB3LTEwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWZ1bGwgYmctZ3JheS03MDAgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXdoaXRlIHJpbmctMiByaW5nLWdyYXktMzAwIGhvdmVyOmJnLWdyYXktNjAwIGRhcms6cmluZy1ncmF5LTUwMFwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBhdmF0YXJUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBiYWRnZVRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJmbGV4IGgtZml0IGl0ZW1zLWNlbnRlciBnYXAtMSBmb250LXNlbWlib2xkXCIsXG4gICAgY29sb3I6IHtcbiAgICAgIGluZm86IFwiYmctY3lhbi0xMDAgdGV4dC1jeWFuLTgwMCBncm91cC1ob3ZlcjpiZy1jeWFuLTIwMCBkYXJrOmJnLWN5YW4tMjAwIGRhcms6dGV4dC1jeWFuLTgwMCBkYXJrOmdyb3VwLWhvdmVyOmJnLWN5YW4tMzAwXCIsXG4gICAgICBncmF5OiBcImJnLWdyYXktMTAwIHRleHQtZ3JheS04MDAgZ3JvdXAtaG92ZXI6YmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS0zMDAgZGFyazpncm91cC1ob3ZlcjpiZy1ncmF5LTYwMFwiLFxuICAgICAgZmFpbHVyZTogXCJiZy1yZWQtMTAwIHRleHQtcmVkLTgwMCBncm91cC1ob3ZlcjpiZy1yZWQtMjAwIGRhcms6YmctcmVkLTIwMCBkYXJrOnRleHQtcmVkLTkwMCBkYXJrOmdyb3VwLWhvdmVyOmJnLXJlZC0zMDBcIixcbiAgICAgIHN1Y2Nlc3M6IFwiYmctZ3JlZW4tMTAwIHRleHQtZ3JlZW4tODAwIGdyb3VwLWhvdmVyOmJnLWdyZWVuLTIwMCBkYXJrOmJnLWdyZWVuLTIwMCBkYXJrOnRleHQtZ3JlZW4tOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctZ3JlZW4tMzAwXCIsXG4gICAgICB3YXJuaW5nOiBcImJnLXllbGxvdy0xMDAgdGV4dC15ZWxsb3ctODAwIGdyb3VwLWhvdmVyOmJnLXllbGxvdy0yMDAgZGFyazpiZy15ZWxsb3ctMjAwIGRhcms6dGV4dC15ZWxsb3ctOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmcteWVsbG93LTMwMFwiLFxuICAgICAgaW5kaWdvOiBcImJnLWluZGlnby0xMDAgdGV4dC1pbmRpZ28tODAwIGdyb3VwLWhvdmVyOmJnLWluZGlnby0yMDAgZGFyazpiZy1pbmRpZ28tMjAwIGRhcms6dGV4dC1pbmRpZ28tOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctaW5kaWdvLTMwMFwiLFxuICAgICAgcHVycGxlOiBcImJnLXB1cnBsZS0xMDAgdGV4dC1wdXJwbGUtODAwIGdyb3VwLWhvdmVyOmJnLXB1cnBsZS0yMDAgZGFyazpiZy1wdXJwbGUtMjAwIGRhcms6dGV4dC1wdXJwbGUtOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctcHVycGxlLTMwMFwiLFxuICAgICAgcGluazogXCJiZy1waW5rLTEwMCB0ZXh0LXBpbmstODAwIGdyb3VwLWhvdmVyOmJnLXBpbmstMjAwIGRhcms6YmctcGluay0yMDAgZGFyazp0ZXh0LXBpbmstOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctcGluay0zMDBcIixcbiAgICAgIGJsdWU6IFwiYmctYmx1ZS0xMDAgdGV4dC1ibHVlLTgwMCBncm91cC1ob3ZlcjpiZy1ibHVlLTIwMCBkYXJrOmJnLWJsdWUtMjAwIGRhcms6dGV4dC1ibHVlLTkwMCBkYXJrOmdyb3VwLWhvdmVyOmJnLWJsdWUtMzAwXCIsXG4gICAgICBjeWFuOiBcImJnLWN5YW4tMTAwIHRleHQtY3lhbi04MDAgZ3JvdXAtaG92ZXI6YmctY3lhbi0yMDAgZGFyazpiZy1jeWFuLTIwMCBkYXJrOnRleHQtY3lhbi05MDAgZGFyazpncm91cC1ob3ZlcjpiZy1jeWFuLTMwMFwiLFxuICAgICAgZGFyazogXCJiZy1ncmF5LTYwMCB0ZXh0LWdyYXktMTAwIGdyb3VwLWhvdmVyOmJnLWdyYXktNTAwIGRhcms6YmctZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktMjAwIGRhcms6Z3JvdXAtaG92ZXI6YmctZ3JheS03MDBcIixcbiAgICAgIGxpZ2h0OiBcImJnLWdyYXktMjAwIHRleHQtZ3JheS04MDAgZ3JvdXAtaG92ZXI6YmctZ3JheS0zMDAgZGFyazpiZy1ncmF5LTQwMCBkYXJrOnRleHQtZ3JheS05MDAgZGFyazpncm91cC1ob3ZlcjpiZy1ncmF5LTUwMFwiLFxuICAgICAgZ3JlZW46IFwiYmctZ3JlZW4tMTAwIHRleHQtZ3JlZW4tODAwIGdyb3VwLWhvdmVyOmJnLWdyZWVuLTIwMCBkYXJrOmJnLWdyZWVuLTIwMCBkYXJrOnRleHQtZ3JlZW4tOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctZ3JlZW4tMzAwXCIsXG4gICAgICBsaW1lOiBcImJnLWxpbWUtMTAwIHRleHQtbGltZS04MDAgZ3JvdXAtaG92ZXI6YmctbGltZS0yMDAgZGFyazpiZy1saW1lLTIwMCBkYXJrOnRleHQtbGltZS05MDAgZGFyazpncm91cC1ob3ZlcjpiZy1saW1lLTMwMFwiLFxuICAgICAgcmVkOiBcImJnLXJlZC0xMDAgdGV4dC1yZWQtODAwIGdyb3VwLWhvdmVyOmJnLXJlZC0yMDAgZGFyazpiZy1yZWQtMjAwIGRhcms6dGV4dC1yZWQtOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctcmVkLTMwMFwiLFxuICAgICAgdGVhbDogXCJiZy10ZWFsLTEwMCB0ZXh0LXRlYWwtODAwIGdyb3VwLWhvdmVyOmJnLXRlYWwtMjAwIGRhcms6YmctdGVhbC0yMDAgZGFyazp0ZXh0LXRlYWwtOTAwIGRhcms6Z3JvdXAtaG92ZXI6YmctdGVhbC0zMDBcIixcbiAgICAgIHllbGxvdzogXCJiZy15ZWxsb3ctMTAwIHRleHQteWVsbG93LTgwMCBncm91cC1ob3ZlcjpiZy15ZWxsb3ctMjAwIGRhcms6YmcteWVsbG93LTIwMCBkYXJrOnRleHQteWVsbG93LTkwMCBkYXJrOmdyb3VwLWhvdmVyOmJnLXllbGxvdy0zMDBcIlxuICAgIH0sXG4gICAgaHJlZjogXCJncm91cFwiLFxuICAgIHNpemU6IHtcbiAgICAgIHhzOiBcInAtMSB0ZXh0LXhzXCIsXG4gICAgICBzbTogXCJwLTEuNSB0ZXh0LXNtXCJcbiAgICB9XG4gIH0sXG4gIGljb246IHtcbiAgICBvZmY6IFwicm91bmRlZCBweC0yIHB5LTAuNVwiLFxuICAgIG9uOiBcInJvdW5kZWQtZnVsbCBwLTEuNVwiLFxuICAgIHNpemU6IHtcbiAgICAgIHhzOiBcImgtMyB3LTNcIixcbiAgICAgIHNtOiBcImgtMy41IHctMy41XCJcbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBiYWRnZVRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGJsb2NrcXVvdGVUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwidGV4dC14bCBmb250LXNlbWlib2xkIGl0YWxpYyB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBibG9ja3F1b3RlVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgYnJlYWRjcnVtYlRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJcIixcbiAgICBsaXN0OiBcImZsZXggaXRlbXMtY2VudGVyXCJcbiAgfSxcbiAgaXRlbToge1xuICAgIGJhc2U6IFwiZ3JvdXAgZmxleCBpdGVtcy1jZW50ZXJcIixcbiAgICBjaGV2cm9uOiBcIm14LTEgaC00IHctNCB0ZXh0LWdyYXktNDAwIGdyb3VwLWZpcnN0OmhpZGRlbiBtZDpteC0yXCIsXG4gICAgaHJlZjoge1xuICAgICAgb2ZmOiBcImZsZXggaXRlbXMtY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIixcbiAgICAgIG9uOiBcImZsZXggaXRlbXMtY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMCBob3Zlcjp0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC1ncmF5LTQwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGVcIlxuICAgIH0sXG4gICAgaWNvbjogXCJtci0yIGgtNCB3LTRcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgYnJlYWRjcnVtYlRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGJ1dHRvblRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBiYXNlOiBcImdyb3VwIHJlbGF0aXZlIGZsZXggaXRlbXMtc3RyZXRjaCBqdXN0aWZ5LWNlbnRlciBwLTAuNSB0ZXh0LWNlbnRlciBmb250LW1lZGl1bSB0cmFuc2l0aW9uLVtjb2xvcixiYWNrZ3JvdW5kLWNvbG9yLGJvcmRlci1jb2xvcix0ZXh0LWRlY29yYXRpb24tY29sb3IsZmlsbCxzdHJva2UsYm94LXNoYWRvd10gZm9jdXM6ei0xMCBmb2N1czpvdXRsaW5lLW5vbmVcIixcbiAgZnVsbFNpemVkOiBcInctZnVsbFwiLFxuICBjb2xvcjoge1xuICAgIGRhcms6IFwiYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCBiZy1ncmF5LTgwMCB0ZXh0LXdoaXRlIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyYXktMzAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JheS05MDAgZGFyazpib3JkZXItZ3JheS03MDAgZGFyazpiZy1ncmF5LTgwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS04MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLWdyYXktNzAwXCIsXG4gICAgZmFpbHVyZTogXCJib3JkZXIgYm9yZGVyLXRyYW5zcGFyZW50IGJnLXJlZC03MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1yZWQtMzAwIGVuYWJsZWQ6aG92ZXI6YmctcmVkLTgwMCBkYXJrOmJnLXJlZC02MDAgZGFyazpmb2N1czpyaW5nLXJlZC05MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLXJlZC03MDBcIixcbiAgICBncmF5OiBcIjpyaW5nLWN5YW4tNzAwIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgdGV4dC1ncmF5LTkwMCBmb2N1czp0ZXh0LWN5YW4tNzAwIGZvY3VzOnJpbmctNCBlbmFibGVkOmhvdmVyOmJnLWdyYXktMTAwIGVuYWJsZWQ6aG92ZXI6dGV4dC1jeWFuLTcwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLXRyYW5zcGFyZW50IGRhcms6dGV4dC1ncmF5LTQwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6YmctZ3JheS03MDAgZGFyazplbmFibGVkOmhvdmVyOnRleHQtd2hpdGVcIixcbiAgICBpbmZvOiBcImJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgYmctY3lhbi03MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1jeWFuLTMwMCBlbmFibGVkOmhvdmVyOmJnLWN5YW4tODAwIGRhcms6YmctY3lhbi02MDAgZGFyazpmb2N1czpyaW5nLWN5YW4tODAwIGRhcms6ZW5hYmxlZDpob3ZlcjpiZy1jeWFuLTcwMFwiLFxuICAgIGxpZ2h0OiBcImJvcmRlciBib3JkZXItZ3JheS0zMDAgYmctd2hpdGUgdGV4dC1ncmF5LTkwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1jeWFuLTMwMCBlbmFibGVkOmhvdmVyOmJnLWdyYXktMTAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctZ3JheS02MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1ncmF5LTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6Ym9yZGVyLWdyYXktNzAwIGRhcms6ZW5hYmxlZDpob3ZlcjpiZy1ncmF5LTcwMFwiLFxuICAgIHB1cnBsZTogXCJib3JkZXIgYm9yZGVyLXRyYW5zcGFyZW50IGJnLXB1cnBsZS03MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1wdXJwbGUtMzAwIGVuYWJsZWQ6aG92ZXI6YmctcHVycGxlLTgwMCBkYXJrOmJnLXB1cnBsZS02MDAgZGFyazpmb2N1czpyaW5nLXB1cnBsZS05MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLXB1cnBsZS03MDBcIixcbiAgICBzdWNjZXNzOiBcImJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgYmctZ3JlZW4tNzAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JlZW4tMzAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JlZW4tODAwIGRhcms6YmctZ3JlZW4tNjAwIGRhcms6Zm9jdXM6cmluZy1ncmVlbi04MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLWdyZWVuLTcwMFwiLFxuICAgIHdhcm5pbmc6IFwiYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCBiZy15ZWxsb3ctNDAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmcteWVsbG93LTMwMCBlbmFibGVkOmhvdmVyOmJnLXllbGxvdy01MDAgZGFyazpmb2N1czpyaW5nLXllbGxvdy05MDBcIixcbiAgICBibHVlOiBcImJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgYmctYmx1ZS03MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ibHVlLTMwMCBlbmFibGVkOmhvdmVyOmJnLWJsdWUtODAwIGRhcms6YmctYmx1ZS02MDAgZGFyazpob3ZlcjpiZy1ibHVlLTcwMCBkYXJrOmZvY3VzOnJpbmctYmx1ZS04MDBcIixcbiAgICBjeWFuOiBcImJvcmRlciBib3JkZXItY3lhbi0zMDAgYmctd2hpdGUgdGV4dC1jeWFuLTkwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1jeWFuLTMwMCBlbmFibGVkOmhvdmVyOmJnLWN5YW4tMTAwIGRhcms6Ym9yZGVyLWN5YW4tNjAwIGRhcms6YmctY3lhbi02MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1jeWFuLTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6Ym9yZGVyLWN5YW4tNzAwIGRhcms6ZW5hYmxlZDpob3ZlcjpiZy1jeWFuLTcwMFwiLFxuICAgIGdyZWVuOiBcImJvcmRlciBib3JkZXItZ3JlZW4tMzAwIGJnLXdoaXRlIHRleHQtZ3JlZW4tOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyZWVuLTMwMCBlbmFibGVkOmhvdmVyOmJnLWdyZWVuLTEwMCBkYXJrOmJvcmRlci1ncmVlbi02MDAgZGFyazpiZy1ncmVlbi02MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1ncmVlbi03MDAgZGFyazplbmFibGVkOmhvdmVyOmJvcmRlci1ncmVlbi03MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLWdyZWVuLTcwMFwiLFxuICAgIGluZGlnbzogXCJib3JkZXIgYm9yZGVyLWluZGlnby0zMDAgYmctd2hpdGUgdGV4dC1pbmRpZ28tOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWluZGlnby0zMDAgZW5hYmxlZDpob3ZlcjpiZy1pbmRpZ28tMTAwIGRhcms6Ym9yZGVyLWluZGlnby02MDAgZGFyazpiZy1pbmRpZ28tNjAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOnJpbmctaW5kaWdvLTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6Ym9yZGVyLWluZGlnby03MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLWluZGlnby03MDBcIixcbiAgICBsaW1lOiBcImJvcmRlciBib3JkZXItbGltZS0zMDAgYmctd2hpdGUgdGV4dC1saW1lLTkwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1saW1lLTMwMCBlbmFibGVkOmhvdmVyOmJnLWxpbWUtMTAwIGRhcms6Ym9yZGVyLWxpbWUtNjAwIGRhcms6YmctbGltZS02MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1saW1lLTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6Ym9yZGVyLWxpbWUtNzAwIGRhcms6ZW5hYmxlZDpob3ZlcjpiZy1saW1lLTcwMFwiLFxuICAgIHBpbms6IFwiYm9yZGVyIGJvcmRlci1waW5rLTMwMCBiZy13aGl0ZSB0ZXh0LXBpbmstOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXBpbmstMzAwIGVuYWJsZWQ6aG92ZXI6YmctcGluay0xMDAgZGFyazpib3JkZXItcGluay02MDAgZGFyazpiZy1waW5rLTYwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLXBpbmstNzAwIGRhcms6ZW5hYmxlZDpob3Zlcjpib3JkZXItcGluay03MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLXBpbmstNzAwXCIsXG4gICAgcmVkOiBcImJvcmRlciBib3JkZXItcmVkLTMwMCBiZy13aGl0ZSB0ZXh0LXJlZC05MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcmVkLTMwMCBlbmFibGVkOmhvdmVyOmJnLXJlZC0xMDAgZGFyazpib3JkZXItcmVkLTYwMCBkYXJrOmJnLXJlZC02MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1yZWQtNzAwIGRhcms6ZW5hYmxlZDpob3Zlcjpib3JkZXItcmVkLTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6YmctcmVkLTcwMFwiLFxuICAgIHRlYWw6IFwiYm9yZGVyIGJvcmRlci10ZWFsLTMwMCBiZy13aGl0ZSB0ZXh0LXRlYWwtOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXRlYWwtMzAwIGVuYWJsZWQ6aG92ZXI6YmctdGVhbC0xMDAgZGFyazpib3JkZXItdGVhbC02MDAgZGFyazpiZy10ZWFsLTYwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLXRlYWwtNzAwIGRhcms6ZW5hYmxlZDpob3Zlcjpib3JkZXItdGVhbC03MDAgZGFyazplbmFibGVkOmhvdmVyOmJnLXRlYWwtNzAwXCIsXG4gICAgeWVsbG93OiBcImJvcmRlciBib3JkZXIteWVsbG93LTMwMCBiZy13aGl0ZSB0ZXh0LXllbGxvdy05MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmcteWVsbG93LTMwMCBlbmFibGVkOmhvdmVyOmJnLXllbGxvdy0xMDAgZGFyazpib3JkZXIteWVsbG93LTYwMCBkYXJrOmJnLXllbGxvdy02MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy15ZWxsb3ctNzAwIGRhcms6ZW5hYmxlZDpob3Zlcjpib3JkZXIteWVsbG93LTcwMCBkYXJrOmVuYWJsZWQ6aG92ZXI6YmcteWVsbG93LTcwMFwiXG4gIH0sXG4gIGRpc2FibGVkOiBcImN1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTUwXCIsXG4gIGlzUHJvY2Vzc2luZzogXCJjdXJzb3Itd2FpdFwiLFxuICBzcGlubmVyU2xvdDogXCJhYnNvbHV0ZSB0b3AtMCBmbGV4IGgtZnVsbCBpdGVtcy1jZW50ZXJcIixcbiAgc3Bpbm5lckxlZnRQb3NpdGlvbjoge1xuICAgIHhzOiBcImxlZnQtMlwiLFxuICAgIHNtOiBcImxlZnQtM1wiLFxuICAgIG1kOiBcImxlZnQtNFwiLFxuICAgIGxnOiBcImxlZnQtNVwiLFxuICAgIHhsOiBcImxlZnQtNlwiXG4gIH0sXG4gIGdyYWRpZW50OiB7XG4gICAgY3lhbjogXCJiZy1ncmFkaWVudC10by1yIGZyb20tY3lhbi00MDAgdmlhLWN5YW4tNTAwIHRvLWN5YW4tNjAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctY3lhbi0zMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1iciBkYXJrOmZvY3VzOnJpbmctY3lhbi04MDBcIixcbiAgICBmYWlsdXJlOiBcImJnLWdyYWRpZW50LXRvLXIgZnJvbS1yZWQtNDAwIHZpYS1yZWQtNTAwIHRvLXJlZC02MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1yZWQtMzAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JhZGllbnQtdG8tYnIgZGFyazpmb2N1czpyaW5nLXJlZC04MDBcIixcbiAgICBpbmZvOiBcImJnLWdyYWRpZW50LXRvLXIgZnJvbS1jeWFuLTUwMCB2aWEtY3lhbi02MDAgdG8tY3lhbi03MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1jeWFuLTMwMCBlbmFibGVkOmhvdmVyOmJnLWdyYWRpZW50LXRvLWJyIGRhcms6Zm9jdXM6cmluZy1jeWFuLTgwMFwiLFxuICAgIGxpbWU6IFwiYmctZ3JhZGllbnQtdG8tciBmcm9tLWxpbWUtMjAwIHZpYS1saW1lLTQwMCB0by1saW1lLTUwMCB0ZXh0LWdyYXktOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWxpbWUtMzAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JhZGllbnQtdG8tYnIgZGFyazpmb2N1czpyaW5nLWxpbWUtODAwXCIsXG4gICAgcGluazogXCJiZy1ncmFkaWVudC10by1yIGZyb20tcGluay00MDAgdmlhLXBpbmstNTAwIHRvLXBpbmstNjAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcGluay0zMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1iciBkYXJrOmZvY3VzOnJpbmctcGluay04MDBcIixcbiAgICBwdXJwbGU6IFwiYmctZ3JhZGllbnQtdG8tciBmcm9tLXB1cnBsZS01MDAgdmlhLXB1cnBsZS02MDAgdG8tcHVycGxlLTcwMCB0ZXh0LXdoaXRlIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXB1cnBsZS0zMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1iciBkYXJrOmZvY3VzOnJpbmctcHVycGxlLTgwMFwiLFxuICAgIHN1Y2Nlc3M6IFwiYmctZ3JhZGllbnQtdG8tciBmcm9tLWdyZWVuLTQwMCB2aWEtZ3JlZW4tNTAwIHRvLWdyZWVuLTYwMCB0ZXh0LXdoaXRlIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyZWVuLTMwMCBlbmFibGVkOmhvdmVyOmJnLWdyYWRpZW50LXRvLWJyIGRhcms6Zm9jdXM6cmluZy1ncmVlbi04MDBcIixcbiAgICB0ZWFsOiBcImJnLWdyYWRpZW50LXRvLXIgZnJvbS10ZWFsLTQwMCB2aWEtdGVhbC01MDAgdG8tdGVhbC02MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy10ZWFsLTMwMCBlbmFibGVkOmhvdmVyOmJnLWdyYWRpZW50LXRvLWJyIGRhcms6Zm9jdXM6cmluZy10ZWFsLTgwMFwiXG4gIH0sXG4gIGdyYWRpZW50RHVvVG9uZToge1xuICAgIGN5YW5Ub0JsdWU6IFwiYmctZ3JhZGllbnQtdG8tciBmcm9tLWN5YW4tNTAwIHRvLWN5YW4tNTAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctY3lhbi0zMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1ibCBkYXJrOmZvY3VzOnJpbmctY3lhbi04MDBcIixcbiAgICBncmVlblRvQmx1ZTogXCJiZy1ncmFkaWVudC10by1iciBmcm9tLWdyZWVuLTQwMCB0by1jeWFuLTYwMCB0ZXh0LXdoaXRlIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyZWVuLTIwMCBlbmFibGVkOmhvdmVyOmJnLWdyYWRpZW50LXRvLWJsIGRhcms6Zm9jdXM6cmluZy1ncmVlbi04MDBcIixcbiAgICBwaW5rVG9PcmFuZ2U6IFwiYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1waW5rLTUwMCB0by1vcmFuZ2UtNDAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcGluay0yMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1ibCBkYXJrOmZvY3VzOnJpbmctcGluay04MDBcIixcbiAgICBwdXJwbGVUb0JsdWU6IFwiYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1wdXJwbGUtNjAwIHRvLWN5YW4tNTAwIHRleHQtd2hpdGUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctY3lhbi0zMDAgZW5hYmxlZDpob3ZlcjpiZy1ncmFkaWVudC10by1ibCBkYXJrOmZvY3VzOnJpbmctY3lhbi04MDBcIixcbiAgICBwdXJwbGVUb1Bpbms6IFwiYmctZ3JhZGllbnQtdG8tciBmcm9tLXB1cnBsZS01MDAgdG8tcGluay01MDAgdGV4dC13aGl0ZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1wdXJwbGUtMjAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JhZGllbnQtdG8tbCBkYXJrOmZvY3VzOnJpbmctcHVycGxlLTgwMFwiLFxuICAgIHJlZFRvWWVsbG93OiBcImJnLWdyYWRpZW50LXRvLXIgZnJvbS1yZWQtMjAwIHZpYS1yZWQtMzAwIHRvLXllbGxvdy0yMDAgdGV4dC1ncmF5LTkwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1yZWQtMTAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JhZGllbnQtdG8tYmwgZGFyazpmb2N1czpyaW5nLXJlZC00MDBcIixcbiAgICB0ZWFsVG9MaW1lOiBcImJnLWdyYWRpZW50LXRvLXIgZnJvbS10ZWFsLTIwMCB0by1saW1lLTIwMCB0ZXh0LWdyYXktOTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWxpbWUtMjAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JhZGllbnQtdG8tbCBlbmFibGVkOmhvdmVyOmZyb20tdGVhbC0yMDAgZW5hYmxlZDpob3Zlcjp0by1saW1lLTIwMCBlbmFibGVkOmhvdmVyOnRleHQtZ3JheS05MDAgZGFyazpmb2N1czpyaW5nLXRlYWwtNzAwXCJcbiAgfSxcbiAgaW5uZXI6IHtcbiAgICBiYXNlOiBcImZsZXggaXRlbXMtc3RyZXRjaCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDBcIixcbiAgICBwb3NpdGlvbjoge1xuICAgICAgbm9uZTogXCJcIixcbiAgICAgIHN0YXJ0OiBcInJvdW5kZWQtci1ub25lXCIsXG4gICAgICBtaWRkbGU6IFwicm91bmRlZC1ub25lXCIsXG4gICAgICBlbmQ6IFwicm91bmRlZC1sLW5vbmVcIlxuICAgIH0sXG4gICAgb3V0bGluZTogXCJib3JkZXIgYm9yZGVyLXRyYW5zcGFyZW50XCIsXG4gICAgaXNQcm9jZXNzaW5nUGFkZGluZzoge1xuICAgICAgeHM6IFwicGwtOFwiLFxuICAgICAgc206IFwicGwtMTBcIixcbiAgICAgIG1kOiBcInBsLTEyXCIsXG4gICAgICBsZzogXCJwbC0xNlwiLFxuICAgICAgeGw6IFwicGwtMjBcIlxuICAgIH1cbiAgfSxcbiAgbGFiZWw6IFwibWwtMiBpbmxpbmUtZmxleCBoLTQgdy00IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWZ1bGwgYmctY3lhbi0yMDAgdGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtY3lhbi04MDBcIixcbiAgb3V0bGluZToge1xuICAgIGNvbG9yOiB7XG4gICAgICBncmF5OiBcImJvcmRlciBib3JkZXItZ3JheS05MDAgZGFyazpib3JkZXItd2hpdGVcIixcbiAgICAgIGRlZmF1bHQ6IFwiYm9yZGVyLTBcIixcbiAgICAgIGxpZ2h0OiBcIlwiXG4gICAgfSxcbiAgICBvZmY6IFwiXCIsXG4gICAgb246IFwiZmxleCB3LWZ1bGwganVzdGlmeS1jZW50ZXIgYmctd2hpdGUgdGV4dC1ncmF5LTkwMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi03NSBlYXNlLWluIGdyb3VwLWVuYWJsZWQ6Z3JvdXAtaG92ZXI6Ymctb3BhY2l0eS0wIGdyb3VwLWVuYWJsZWQ6Z3JvdXAtaG92ZXI6dGV4dC1pbmhlcml0IGRhcms6YmctZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCIsXG4gICAgcGlsbDoge1xuICAgICAgb2ZmOiBcInJvdW5kZWQtbWRcIixcbiAgICAgIG9uOiBcInJvdW5kZWQtZnVsbFwiXG4gICAgfVxuICB9LFxuICBwaWxsOiB7XG4gICAgb2ZmOiBcInJvdW5kZWQtbGdcIixcbiAgICBvbjogXCJyb3VuZGVkLWZ1bGxcIlxuICB9LFxuICBzaXplOiB7XG4gICAgeHM6IFwicHgtMiBweS0xIHRleHQteHNcIixcbiAgICBzbTogXCJweC0zIHB5LTEuNSB0ZXh0LXNtXCIsXG4gICAgbWQ6IFwicHgtNCBweS0yIHRleHQtc21cIixcbiAgICBsZzogXCJweC01IHB5LTIuNSB0ZXh0LWJhc2VcIixcbiAgICB4bDogXCJweC02IHB5LTMgdGV4dC1iYXNlXCJcbiAgfVxufSk7XG5jb25zdCBidXR0b25Hcm91cFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBiYXNlOiBcImlubGluZS1mbGV4XCIsXG4gIHBvc2l0aW9uOiB7XG4gICAgbm9uZTogXCJcIixcbiAgICBzdGFydDogXCJyb3VuZGVkLXItbm9uZSBmb2N1czpyaW5nLTJcIixcbiAgICBtaWRkbGU6IFwicm91bmRlZC1ub25lIGJvcmRlci1sLTAgcGwtMCBmb2N1czpyaW5nLTJcIixcbiAgICBlbmQ6IFwicm91bmRlZC1sLW5vbmUgYm9yZGVyLWwtMCBwbC0wIGZvY3VzOnJpbmctMlwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBidXR0b25Hcm91cFRoZW1lLCBidXR0b25UaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBjYXJkVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImZsZXggcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWdyYXktMjAwIGJnLXdoaXRlIHNoYWRvdy1tZCBkYXJrOmJvcmRlci1ncmF5LTcwMCBkYXJrOmJnLWdyYXktODAwXCIsXG4gICAgY2hpbGRyZW46IFwiZmxleCBoLWZ1bGwgZmxleC1jb2wganVzdGlmeS1jZW50ZXIgZ2FwLTQgcC02XCIsXG4gICAgaG9yaXpvbnRhbDoge1xuICAgICAgb2ZmOiBcImZsZXgtY29sXCIsXG4gICAgICBvbjogXCJmbGV4LWNvbCBtZDptYXgtdy14bCBtZDpmbGV4LXJvd1wiXG4gICAgfSxcbiAgICBocmVmOiBcImhvdmVyOmJnLWdyYXktMTAwIGRhcms6aG92ZXI6YmctZ3JheS03MDBcIlxuICB9LFxuICBpbWc6IHtcbiAgICBiYXNlOiBcIlwiLFxuICAgIGhvcml6b250YWw6IHtcbiAgICAgIG9mZjogXCJyb3VuZGVkLXQtbGdcIixcbiAgICAgIG9uOiBcImgtOTYgdy1mdWxsIHJvdW5kZWQtdC1sZyBvYmplY3QtY292ZXIgbWQ6aC1hdXRvIG1kOnctNDggbWQ6cm91bmRlZC1ub25lIG1kOnJvdW5kZWQtbC1sZ1wiXG4gICAgfVxuICB9XG59KTtcblxuZXhwb3J0IHsgY2FyZFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGNhcm91c2VsVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcInJlbGF0aXZlIGgtZnVsbCB3LWZ1bGxcIixcbiAgICBsZWZ0Q29udHJvbDogXCJhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgZmxleCBoLWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB4LTQgZm9jdXM6b3V0bGluZS1ub25lXCIsXG4gICAgcmlnaHRDb250cm9sOiBcImFic29sdXRlIHJpZ2h0LTAgdG9wLTAgZmxleCBoLWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB4LTQgZm9jdXM6b3V0bGluZS1ub25lXCJcbiAgfSxcbiAgaW5kaWNhdG9yczoge1xuICAgIGFjdGl2ZToge1xuICAgICAgb2ZmOiBcImJnLXdoaXRlLzUwIGhvdmVyOmJnLXdoaXRlIGRhcms6YmctZ3JheS04MDAvNTAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMFwiLFxuICAgICAgb246IFwiYmctd2hpdGUgZGFyazpiZy1ncmF5LTgwMFwiXG4gICAgfSxcbiAgICBiYXNlOiBcImgtMyB3LTMgcm91bmRlZC1mdWxsXCIsXG4gICAgd3JhcHBlcjogXCJhYnNvbHV0ZSBib3R0b20tNSBsZWZ0LTEvMiBmbGV4IC10cmFuc2xhdGUteC0xLzIgc3BhY2UteC0zXCJcbiAgfSxcbiAgaXRlbToge1xuICAgIGJhc2U6IFwiYWJzb2x1dGUgbGVmdC0xLzIgdG9wLTEvMiBibG9jayB3LWZ1bGwgLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yXCIsXG4gICAgd3JhcHBlcjoge1xuICAgICAgb2ZmOiBcInctZnVsbCBmbGV4LXNocmluay0wIHRyYW5zZm9ybSBjdXJzb3ItZGVmYXVsdCBzbmFwLWNlbnRlclwiLFxuICAgICAgb246IFwidy1mdWxsIGZsZXgtc2hyaW5rLTAgdHJhbnNmb3JtIGN1cnNvci1ncmFiIHNuYXAtY2VudGVyXCJcbiAgICB9XG4gIH0sXG4gIGNvbnRyb2w6IHtcbiAgICBiYXNlOiBcImlubGluZS1mbGV4IGgtOCB3LTggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBiZy13aGl0ZS8zMCBncm91cC1ob3ZlcjpiZy13aGl0ZS81MCBncm91cC1mb2N1czpvdXRsaW5lLW5vbmUgZ3JvdXAtZm9jdXM6cmluZy00IGdyb3VwLWZvY3VzOnJpbmctd2hpdGUgZGFyazpiZy1ncmF5LTgwMC8zMCBkYXJrOmdyb3VwLWhvdmVyOmJnLWdyYXktODAwLzYwIGRhcms6Z3JvdXAtZm9jdXM6cmluZy1ncmF5LTgwMC83MCBzbTpoLTEwIHNtOnctMTBcIixcbiAgICBpY29uOiBcImgtNSB3LTUgdGV4dC13aGl0ZSBkYXJrOnRleHQtZ3JheS04MDAgc206aC02IHNtOnctNlwiXG4gIH0sXG4gIHNjcm9sbENvbnRhaW5lcjoge1xuICAgIGJhc2U6IFwiZmxleCBoLWZ1bGwgc25hcC1tYW5kYXRvcnkgb3ZlcmZsb3cteS1oaWRkZW4gb3ZlcmZsb3cteC1zY3JvbGwgc2Nyb2xsLXNtb290aCByb3VuZGVkLWxnXCIsXG4gICAgc25hcDogXCJzbmFwLXhcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgY2Fyb3VzZWxUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBjaGVja2JveFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJoLTQgdy00IHJvdW5kZWQgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTEwMCBmb2N1czpyaW5nLTIgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTcwMFwiLFxuICAgIGNvbG9yOiB7XG4gICAgICBkZWZhdWx0OiBcInRleHQtY3lhbi02MDAgZm9jdXM6cmluZy1jeWFuLTYwMCBkYXJrOnJpbmctb2Zmc2V0LWdyYXktODAwIGRhcms6Zm9jdXM6cmluZy1jeWFuLTYwMFwiLFxuICAgICAgZGFyazogXCJ0ZXh0LWdyYXktODAwIGZvY3VzOnJpbmctZ3JheS04MDAgZGFyazpyaW5nLW9mZnNldC1ncmF5LTgwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS04MDBcIixcbiAgICAgIGZhaWx1cmU6IFwidGV4dC1yZWQtOTAwIGZvY3VzOnJpbmctcmVkLTkwMCBkYXJrOnJpbmctb2Zmc2V0LXJlZC05MDAgZGFyazpmb2N1czpyaW5nLXJlZC05MDBcIixcbiAgICAgIGdyYXk6IFwidGV4dC1ncmF5LTkwMCBmb2N1czpyaW5nLWdyYXktOTAwIGRhcms6cmluZy1vZmZzZXQtZ3JheS05MDAgZGFyazpmb2N1czpyaW5nLWdyYXktOTAwXCIsXG4gICAgICBpbmZvOiBcInRleHQtY3lhbi04MDAgZm9jdXM6cmluZy1jeWFuLTgwMCBkYXJrOnJpbmctb2Zmc2V0LWdyYXktODAwIGRhcms6Zm9jdXM6cmluZy1jeWFuLTgwMFwiLFxuICAgICAgbGlnaHQ6IFwidGV4dC1ncmF5LTkwMCBmb2N1czpyaW5nLWdyYXktOTAwIGRhcms6cmluZy1vZmZzZXQtZ3JheS05MDAgZGFyazpmb2N1czpyaW5nLWdyYXktOTAwXCIsXG4gICAgICBwdXJwbGU6IFwidGV4dC1wdXJwbGUtNjAwIGZvY3VzOnJpbmctcHVycGxlLTYwMCBkYXJrOnJpbmctb2Zmc2V0LXB1cnBsZS02MDAgZGFyazpmb2N1czpyaW5nLXB1cnBsZS02MDBcIixcbiAgICAgIHN1Y2Nlc3M6IFwidGV4dC1ncmVlbi04MDAgZm9jdXM6cmluZy1ncmVlbi04MDAgZGFyazpyaW5nLW9mZnNldC1ncmVlbi04MDAgZGFyazpmb2N1czpyaW5nLWdyZWVuLTgwMFwiLFxuICAgICAgd2FybmluZzogXCJ0ZXh0LXllbGxvdy00MDAgZm9jdXM6cmluZy15ZWxsb3ctNDAwIGRhcms6cmluZy1vZmZzZXQteWVsbG93LTQwMCBkYXJrOmZvY3VzOnJpbmcteWVsbG93LTQwMFwiLFxuICAgICAgYmx1ZTogXCJ0ZXh0LWJsdWUtNzAwIGZvY3VzOnJpbmctYmx1ZS02MDAgZGFyazpyaW5nLW9mZnNldC1ibHVlLTcwMCBkYXJrOmZvY3VzOnJpbmctYmx1ZS03MDBcIixcbiAgICAgIGN5YW46IFwidGV4dC1jeWFuLTYwMCBmb2N1czpyaW5nLWN5YW4tNjAwIGRhcms6cmluZy1vZmZzZXQtY3lhbi02MDAgZGFyazpmb2N1czpyaW5nLWN5YW4tNjAwXCIsXG4gICAgICBncmVlbjogXCJ0ZXh0LWdyZWVuLTYwMCBmb2N1czpyaW5nLWdyZWVuLTYwMCBkYXJrOnJpbmctb2Zmc2V0LWdyZWVuLTYwMCBkYXJrOmZvY3VzOnJpbmctZ3JlZW4tNjAwXCIsXG4gICAgICBpbmRpZ286IFwidGV4dC1pbmRpZ28tNzAwIGZvY3VzOnJpbmctaW5kaWdvLTcwMCBkYXJrOnJpbmctb2Zmc2V0LWluZGlnby03MDAgZGFyazpmb2N1czpyaW5nLWluZGlnby03MDBcIixcbiAgICAgIGxpbWU6IFwidGV4dC1saW1lLTcwMCBmb2N1czpyaW5nLWxpbWUtNzAwIGRhcms6cmluZy1vZmZzZXQtbGltZS03MDAgZGFyazpmb2N1czpyaW5nLWxpbWUtNzAwXCIsXG4gICAgICBwaW5rOiBcInRleHQtcGluay02MDAgZm9jdXM6cmluZy1waW5rLTYwMCBkYXJrOnJpbmctb2Zmc2V0LXBpbmstNjAwIGRhcms6Zm9jdXM6cmluZy1waW5rLTYwMFwiLFxuICAgICAgcmVkOiBcInRleHQtcmVkLTYwMCBmb2N1czpyaW5nLXJlZC02MDAgZGFyazpyaW5nLW9mZnNldC1yZWQtNjAwIGRhcms6Zm9jdXM6cmluZy1yZWQtNjAwXCIsXG4gICAgICB0ZWFsOiBcInRleHQtdGVhbC02MDAgZm9jdXM6cmluZy10ZWFsLTYwMCBkYXJrOnJpbmctb2Zmc2V0LXRlYWwtNjAwIGRhcms6Zm9jdXM6cmluZy10ZWFsLTYwMFwiLFxuICAgICAgeWVsbG93OiBcInRleHQteWVsbG93LTQwMCBmb2N1czpyaW5nLXllbGxvdy00MDAgZGFyazpyaW5nLW9mZnNldC15ZWxsb3ctNDAwIGRhcms6Zm9jdXM6cmluZy15ZWxsb3ctNDAwXCJcbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBjaGVja2JveFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGNsaXBib2FyZFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBidXR0b246IHtcbiAgICBiYXNlOiBcImlubGluZS1mbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBiZy1ibHVlLTcwMCBweC01IHB5LTMgaG92ZXI6YmctYmx1ZS04MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWJsdWUtMzAwIGRhcms6YmctYmx1ZS02MDAgZGFyazpob3ZlcjpiZy1ibHVlLTcwMCBkYXJrOmZvY3VzOnJpbmctYmx1ZS04MDBcIixcbiAgICBsYWJlbDogXCJ0ZXh0LWNlbnRlciB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtd2hpdGUgc206dy1hdXRvXCJcbiAgfSxcbiAgd2l0aEljb246IHtcbiAgICBiYXNlOiBcImFic29sdXRlIGVuZC0yIHRvcC0xLzIgaW5saW5lLWZsZXggLXRyYW5zbGF0ZS15LTEvMiBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBwLTIgdGV4dC1ncmF5LTUwMCBob3ZlcjpiZy1ncmF5LTEwMCBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMFwiLFxuICAgIGljb246IHtcbiAgICAgIGRlZmF1bHRJY29uOiBcImgtNCB3LTRcIixcbiAgICAgIHN1Y2Nlc3NJY29uOiBcImgtNCB3LTQgdGV4dC1ibHVlLTcwMCBkYXJrOnRleHQtYmx1ZS01MDBcIlxuICAgIH1cbiAgfSxcbiAgd2l0aEljb25UZXh0OiB7XG4gICAgYmFzZTogXCJhYnNvbHV0ZSBlbmQtMi41IHRvcC0xLzIgaW5saW5lLWZsZXggLXRyYW5zbGF0ZS15LTEvMiBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWdyYXktMjAwIGJnLXdoaXRlIHB4LTIuNSBweS0yIHRleHQtZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTgwMCBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMFwiLFxuICAgIGljb246IHtcbiAgICAgIGRlZmF1bHRJY29uOiBcIm1lLTEuNSBoLTMgdy0zXCIsXG4gICAgICBzdWNjZXNzSWNvbjogXCJtZS0xLjUgaC0zIHctMyB0ZXh0LWJsdWUtNzAwIGRhcms6dGV4dC1ibHVlLTUwMFwiXG4gICAgfSxcbiAgICBsYWJlbDoge1xuICAgICAgYmFzZTogXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXJcIixcbiAgICAgIGRlZmF1bHRUZXh0OiBcInRleHQteHMgZm9udC1zZW1pYm9sZFwiLFxuICAgICAgc3VjY2Vzc1RleHQ6IFwidGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtYmx1ZS03MDAgZGFyazp0ZXh0LWJsdWUtNTAwXCJcbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBjbGlwYm9hcmRUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBkYXJrVGhlbWVUb2dnbGVUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwicm91bmRlZC1sZyBwLTIuNSB0ZXh0LXNtIHRleHQtZ3JheS01MDAgaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyYXktMjAwIGRhcms6dGV4dC1ncmF5LTQwMCBkYXJrOmhvdmVyOmJnLWdyYXktNzAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTcwMFwiLFxuICAgIGljb246IFwiaC01IHctNVwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBkYXJrVGhlbWVUb2dnbGVUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBkYXRlUGlja2VyVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcInJlbGF0aXZlXCJcbiAgfSxcbiAgcG9wdXA6IHtcbiAgICByb290OiB7XG4gICAgICBiYXNlOiBcImFic29sdXRlIHRvcC0xMCB6LTUwIGJsb2NrIHB0LTJcIixcbiAgICAgIGlubGluZTogXCJyZWxhdGl2ZSB0b3AtMCB6LWF1dG9cIixcbiAgICAgIGlubmVyOiBcImlubGluZS1ibG9jayByb3VuZGVkLWxnIGJnLXdoaXRlIHAtNCBzaGFkb3ctbGcgZGFyazpiZy1ncmF5LTcwMFwiXG4gICAgfSxcbiAgICBoZWFkZXI6IHtcbiAgICAgIGJhc2U6IFwiXCIsXG4gICAgICB0aXRsZTogXCJweC0yIHB5LTMgdGV4dC1jZW50ZXIgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiLFxuICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgIGJhc2U6IFwibWItMiBmbGV4IGp1c3RpZnktYmV0d2VlblwiLFxuICAgICAgICBidXR0b246IHtcbiAgICAgICAgICBiYXNlOiBcInJvdW5kZWQtbGcgYmctd2hpdGUgcHgtNSBweS0yLjUgdGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWdyYXktMjAwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS02MDBcIixcbiAgICAgICAgICBwcmV2OiBcIlwiLFxuICAgICAgICAgIG5leHQ6IFwiXCIsXG4gICAgICAgICAgdmlldzogXCJcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICB2aWV3OiB7XG4gICAgICBiYXNlOiBcInAtMVwiXG4gICAgfSxcbiAgICBmb290ZXI6IHtcbiAgICAgIGJhc2U6IFwibXQtMiBmbGV4IHNwYWNlLXgtMlwiLFxuICAgICAgYnV0dG9uOiB7XG4gICAgICAgIGJhc2U6IFwidy1mdWxsIHJvdW5kZWQtbGcgcHgtNSBweS0yIHRleHQtY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW0gZm9jdXM6cmluZy00IGZvY3VzOnJpbmctY3lhbi0zMDBcIixcbiAgICAgICAgdG9kYXk6IFwiYmctY3lhbi03MDAgdGV4dC13aGl0ZSBob3ZlcjpiZy1jeWFuLTgwMCBkYXJrOmJnLWN5YW4tNjAwIGRhcms6aG92ZXI6YmctY3lhbi03MDBcIixcbiAgICAgICAgY2xlYXI6IFwiYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy13aGl0ZSB0ZXh0LWdyYXktOTAwIGhvdmVyOmJnLWdyYXktMTAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS02MDBcIlxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgdmlld3M6IHtcbiAgICBkYXlzOiB7XG4gICAgICBoZWFkZXI6IHtcbiAgICAgICAgYmFzZTogXCJtYi0xIGdyaWQgZ3JpZC1jb2xzLTdcIixcbiAgICAgICAgdGl0bGU6IFwiaC02IHRleHQtY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW0gbGVhZGluZy02IHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCJcbiAgICAgIH0sXG4gICAgICBpdGVtczoge1xuICAgICAgICBiYXNlOiBcImdyaWQgdy02NCBncmlkLWNvbHMtN1wiLFxuICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgYmFzZTogXCJibG9jayBmbGV4LTEgY3Vyc29yLXBvaW50ZXIgcm91bmRlZC1sZyBib3JkZXItMCB0ZXh0LWNlbnRlciB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgbGVhZGluZy05IHRleHQtZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS02MDBcIixcbiAgICAgICAgICBzZWxlY3RlZDogXCJiZy1jeWFuLTcwMCB0ZXh0LXdoaXRlIGhvdmVyOmJnLWN5YW4tNjAwXCIsXG4gICAgICAgICAgZGlzYWJsZWQ6IFwidGV4dC1ncmF5LTUwMFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIG1vbnRoczoge1xuICAgICAgaXRlbXM6IHtcbiAgICAgICAgYmFzZTogXCJncmlkIHctNjQgZ3JpZC1jb2xzLTRcIixcbiAgICAgICAgaXRlbToge1xuICAgICAgICAgIGJhc2U6IFwiYmxvY2sgZmxleC0xIGN1cnNvci1wb2ludGVyIHJvdW5kZWQtbGcgYm9yZGVyLTAgdGV4dC1jZW50ZXIgdGV4dC1zbSBmb250LXNlbWlib2xkIGxlYWRpbmctOSB0ZXh0LWdyYXktOTAwIGhvdmVyOmJnLWdyYXktMTAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmhvdmVyOmJnLWdyYXktNjAwXCIsXG4gICAgICAgICAgc2VsZWN0ZWQ6IFwiYmctY3lhbi03MDAgdGV4dC13aGl0ZSBob3ZlcjpiZy1jeWFuLTYwMFwiLFxuICAgICAgICAgIGRpc2FibGVkOiBcInRleHQtZ3JheS01MDBcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICB5ZWFyczoge1xuICAgICAgaXRlbXM6IHtcbiAgICAgICAgYmFzZTogXCJncmlkIHctNjQgZ3JpZC1jb2xzLTRcIixcbiAgICAgICAgaXRlbToge1xuICAgICAgICAgIGJhc2U6IFwiYmxvY2sgZmxleC0xIGN1cnNvci1wb2ludGVyIHJvdW5kZWQtbGcgYm9yZGVyLTAgdGV4dC1jZW50ZXIgdGV4dC1zbSBmb250LXNlbWlib2xkIGxlYWRpbmctOSB0ZXh0LWdyYXktOTAwIGhvdmVyOmJnLWdyYXktMTAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmhvdmVyOmJnLWdyYXktNjAwXCIsXG4gICAgICAgICAgc2VsZWN0ZWQ6IFwiYmctY3lhbi03MDAgdGV4dC13aGl0ZSBob3ZlcjpiZy1jeWFuLTYwMFwiLFxuICAgICAgICAgIGRpc2FibGVkOiBcInRleHQtZ3JheS01MDBcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBkZWNhZGVzOiB7XG4gICAgICBpdGVtczoge1xuICAgICAgICBiYXNlOiBcImdyaWQgdy02NCBncmlkLWNvbHMtNFwiLFxuICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgYmFzZTogXCJibG9jayBmbGV4LTEgY3Vyc29yLXBvaW50ZXIgcm91bmRlZC1sZyBib3JkZXItMCB0ZXh0LWNlbnRlciB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgbGVhZGluZy05IHRleHQtZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS02MDBcIixcbiAgICAgICAgICBzZWxlY3RlZDogXCJiZy1jeWFuLTcwMCB0ZXh0LXdoaXRlIGhvdmVyOmJnLWN5YW4tNjAwXCIsXG4gICAgICAgICAgZGlzYWJsZWQ6IFwidGV4dC1ncmF5LTUwMFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBkYXRlUGlja2VyVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgZHJhd2VyVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImZpeGVkIHotNDAgb3ZlcmZsb3cteS1hdXRvIGJnLXdoaXRlIHAtNCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkYXJrOmJnLWdyYXktODAwXCIsXG4gICAgYmFja2Ryb3A6IFwiZml4ZWQgaW5zZXQtMCB6LTMwIGJnLWdyYXktOTAwLzUwIGRhcms6YmctZ3JheS05MDAvODBcIixcbiAgICBlZGdlOiBcImJvdHRvbS0xNlwiLFxuICAgIHBvc2l0aW9uOiB7XG4gICAgICB0b3A6IHtcbiAgICAgICAgb246IFwibGVmdC0wIHJpZ2h0LTAgdG9wLTAgdy1mdWxsIHRyYW5zZm9ybS1ub25lXCIsXG4gICAgICAgIG9mZjogXCJsZWZ0LTAgcmlnaHQtMCB0b3AtMCB3LWZ1bGwgLXRyYW5zbGF0ZS15LWZ1bGxcIlxuICAgICAgfSxcbiAgICAgIHJpZ2h0OiB7XG4gICAgICAgIG9uOiBcInJpZ2h0LTAgdG9wLTAgaC1zY3JlZW4gdy04MCB0cmFuc2Zvcm0tbm9uZVwiLFxuICAgICAgICBvZmY6IFwicmlnaHQtMCB0b3AtMCBoLXNjcmVlbiB3LTgwIHRyYW5zbGF0ZS14LWZ1bGxcIlxuICAgICAgfSxcbiAgICAgIGJvdHRvbToge1xuICAgICAgICBvbjogXCJib3R0b20tMCBsZWZ0LTAgcmlnaHQtMCB3LWZ1bGwgdHJhbnNmb3JtLW5vbmVcIixcbiAgICAgICAgb2ZmOiBcImJvdHRvbS0wIGxlZnQtMCByaWdodC0wIHctZnVsbCB0cmFuc2xhdGUteS1mdWxsXCJcbiAgICAgIH0sXG4gICAgICBsZWZ0OiB7XG4gICAgICAgIG9uOiBcImxlZnQtMCB0b3AtMCBoLXNjcmVlbiB3LTgwIHRyYW5zZm9ybS1ub25lXCIsXG4gICAgICAgIG9mZjogXCJsZWZ0LTAgdG9wLTAgaC1zY3JlZW4gdy04MCAtdHJhbnNsYXRlLXgtZnVsbFwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBoZWFkZXI6IHtcbiAgICBpbm5lcjoge1xuICAgICAgY2xvc2VCdXR0b246IFwiYWJzb2x1dGUgZW5kLTIuNSB0b3AtMi41IGZsZXggaC04IHctOCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBiZy10cmFuc3BhcmVudCB0ZXh0LXNtIHRleHQtZ3JheS00MDAgaG92ZXI6YmctZ3JheS0yMDAgaG92ZXI6dGV4dC1ncmF5LTkwMCBkYXJrOmhvdmVyOmJnLWdyYXktNjAwIGRhcms6aG92ZXI6dGV4dC13aGl0ZVwiLFxuICAgICAgY2xvc2VJY29uOiBcImgtNCB3LTRcIixcbiAgICAgIHRpdGxlSWNvbjogXCJtZS0yLjUgaC00IHctNFwiLFxuICAgICAgdGl0bGVUZXh0OiBcIm1iLTQgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHRleHQtYmFzZSBmb250LXNlbWlib2xkIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCJcbiAgICB9LFxuICAgIGNvbGxhcHNlZDoge1xuICAgICAgb246IFwiaGlkZGVuXCIsXG4gICAgICBvZmY6IFwiYmxvY2tcIlxuICAgIH1cbiAgfSxcbiAgaXRlbXM6IHtcbiAgICBiYXNlOiBcIlwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBkcmF3ZXJUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBkcm9wZG93blRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBhcnJvd0ljb246IFwibWwtMiBoLTQgdy00XCIsXG4gIGNvbnRlbnQ6IFwicHktMSBmb2N1czpvdXRsaW5lLW5vbmVcIixcbiAgZmxvYXRpbmc6IHtcbiAgICBhbmltYXRpb246IFwidHJhbnNpdGlvbi1vcGFjaXR5XCIsXG4gICAgYXJyb3c6IHtcbiAgICAgIGJhc2U6IFwiYWJzb2x1dGUgei0xMCBoLTIgdy0yIHJvdGF0ZS00NVwiLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZGFyazogXCJiZy1ncmF5LTkwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgICAgIGxpZ2h0OiBcImJnLXdoaXRlXCIsXG4gICAgICAgIGF1dG86IFwiYmctd2hpdGUgZGFyazpiZy1ncmF5LTcwMFwiXG4gICAgICB9LFxuICAgICAgcGxhY2VtZW50OiBcIi00cHhcIlxuICAgIH0sXG4gICAgYmFzZTogXCJ6LTEwIHctZml0IGRpdmlkZS15IGRpdmlkZS1ncmF5LTEwMCByb3VuZGVkIHNoYWRvdyBmb2N1czpvdXRsaW5lLW5vbmVcIixcbiAgICBjb250ZW50OiBcInB5LTEgdGV4dC1zbSB0ZXh0LWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTIwMFwiLFxuICAgIGRpdmlkZXI6IFwibXktMSBoLXB4IGJnLWdyYXktMTAwIGRhcms6YmctZ3JheS02MDBcIixcbiAgICBoZWFkZXI6IFwiYmxvY2sgcHgtNCBweS0yIHRleHQtc20gdGV4dC1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS0yMDBcIixcbiAgICBoaWRkZW46IFwiaW52aXNpYmxlIG9wYWNpdHktMFwiLFxuICAgIGl0ZW06IHtcbiAgICAgIGNvbnRhaW5lcjogXCJcIixcbiAgICAgIGJhc2U6IFwiZmxleCB3LWZ1bGwgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnQgcHgtNCBweS0yIHRleHQtc20gdGV4dC1ncmF5LTcwMCBob3ZlcjpiZy1ncmF5LTEwMCBmb2N1czpiZy1ncmF5LTEwMCBmb2N1czpvdXRsaW5lLW5vbmUgZGFyazp0ZXh0LWdyYXktMjAwIGRhcms6aG92ZXI6YmctZ3JheS02MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6YmctZ3JheS02MDAgZGFyazpmb2N1czp0ZXh0LXdoaXRlXCIsXG4gICAgICBpY29uOiBcIm1yLTIgaC00IHctNFwiXG4gICAgfSxcbiAgICBzdHlsZToge1xuICAgICAgZGFyazogXCJiZy1ncmF5LTkwMCB0ZXh0LXdoaXRlIGRhcms6YmctZ3JheS03MDBcIixcbiAgICAgIGxpZ2h0OiBcImJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgdGV4dC1ncmF5LTkwMFwiLFxuICAgICAgYXV0bzogXCJib3JkZXIgYm9yZGVyLWdyYXktMjAwIGJnLXdoaXRlIHRleHQtZ3JheS05MDAgZGFyazpib3JkZXItbm9uZSBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZVwiXG4gICAgfSxcbiAgICB0YXJnZXQ6IFwidy1maXRcIlxuICB9LFxuICBpbmxpbmVXcmFwcGVyOiBcImZsZXggaXRlbXMtY2VudGVyXCJcbn0pO1xuXG5leHBvcnQgeyBkcm9wZG93blRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGZpbGVJbnB1dFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJmbGV4XCJcbiAgfSxcbiAgZmllbGQ6IHtcbiAgICBiYXNlOiBcInJlbGF0aXZlIHctZnVsbFwiLFxuICAgIGlucHV0OiB7XG4gICAgICBiYXNlOiBcImJsb2NrIHctZnVsbCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1sZyBib3JkZXIgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTBcIixcbiAgICAgIHNpemVzOiB7XG4gICAgICAgIHNtOiBcInNtOnRleHQteHNcIixcbiAgICAgICAgbWQ6IFwidGV4dC1zbVwiLFxuICAgICAgICBsZzogXCJzbTp0ZXh0LWJhc2VcIlxuICAgICAgfSxcbiAgICAgIGNvbG9yczoge1xuICAgICAgICBncmF5OiBcImJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTUwIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGZvY3VzOnJpbmctY3lhbi01MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpwbGFjZWhvbGRlci1ncmF5LTQwMCBkYXJrOmZvY3VzOmJvcmRlci1jeWFuLTUwMCBkYXJrOmZvY3VzOnJpbmctY3lhbi01MDBcIixcbiAgICAgICAgaW5mbzogXCJib3JkZXItY3lhbi01MDAgYmctY3lhbi01MCB0ZXh0LWN5YW4tOTAwIHBsYWNlaG9sZGVyLWN5YW4tNzAwIGZvY3VzOmJvcmRlci1jeWFuLTUwMCBmb2N1czpyaW5nLWN5YW4tNTAwIGRhcms6Ym9yZGVyLWN5YW4tNDAwIGRhcms6YmctY3lhbi0xMDAgZGFyazpmb2N1czpib3JkZXItY3lhbi01MDAgZGFyazpmb2N1czpyaW5nLWN5YW4tNTAwXCIsXG4gICAgICAgIGZhaWx1cmU6IFwiYm9yZGVyLXJlZC01MDAgYmctcmVkLTUwIHRleHQtcmVkLTkwMCBwbGFjZWhvbGRlci1yZWQtNzAwIGZvY3VzOmJvcmRlci1yZWQtNTAwIGZvY3VzOnJpbmctcmVkLTUwMCBkYXJrOmJvcmRlci1yZWQtNDAwIGRhcms6YmctcmVkLTEwMCBkYXJrOmZvY3VzOmJvcmRlci1yZWQtNTAwIGRhcms6Zm9jdXM6cmluZy1yZWQtNTAwXCIsXG4gICAgICAgIHdhcm5pbmc6IFwiYm9yZGVyLXllbGxvdy01MDAgYmcteWVsbG93LTUwIHRleHQteWVsbG93LTkwMCBwbGFjZWhvbGRlci15ZWxsb3ctNzAwIGZvY3VzOmJvcmRlci15ZWxsb3ctNTAwIGZvY3VzOnJpbmcteWVsbG93LTUwMCBkYXJrOmJvcmRlci15ZWxsb3ctNDAwIGRhcms6YmcteWVsbG93LTEwMCBkYXJrOmZvY3VzOmJvcmRlci15ZWxsb3ctNTAwIGRhcms6Zm9jdXM6cmluZy15ZWxsb3ctNTAwXCIsXG4gICAgICAgIHN1Y2Nlc3M6IFwiYm9yZGVyLWdyZWVuLTUwMCBiZy1ncmVlbi01MCB0ZXh0LWdyZWVuLTkwMCBwbGFjZWhvbGRlci1ncmVlbi03MDAgZm9jdXM6Ym9yZGVyLWdyZWVuLTUwMCBmb2N1czpyaW5nLWdyZWVuLTUwMCBkYXJrOmJvcmRlci1ncmVlbi00MDAgZGFyazpiZy1ncmVlbi0xMDAgZGFyazpmb2N1czpib3JkZXItZ3JlZW4tNTAwIGRhcms6Zm9jdXM6cmluZy1ncmVlbi01MDBcIlxuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IGZpbGVJbnB1dFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGZsb2F0aW5nTGFiZWxUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgaW5wdXQ6IHtcbiAgICBkZWZhdWx0OiB7XG4gICAgICBmaWxsZWQ6IHtcbiAgICAgICAgc206IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtdC1sZyBib3JkZXItMCBib3JkZXItYi0yIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTUwIHB4LTIuNSBwYi0yLjUgcHQtNSB0ZXh0LXhzIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWJsdWUtNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIixcbiAgICAgICAgbWQ6IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtdC1sZyBib3JkZXItMCBib3JkZXItYi0yIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTUwIHB4LTIuNSBwYi0yLjUgcHQtNSB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWJsdWUtNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIlxuICAgICAgfSxcbiAgICAgIG91dGxpbmVkOiB7XG4gICAgICAgIHNtOiBcInBlZXIgYmxvY2sgdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0zMDAgYmctdHJhbnNwYXJlbnQgcHgtMi41IHBiLTIuNSBwdC00IHRleHQteHMgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItYmx1ZS02MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIixcbiAgICAgICAgbWQ6IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy10cmFuc3BhcmVudCBweC0yLjUgcGItMi41IHB0LTQgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGZvY3VzOmJvcmRlci1ibHVlLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1ibHVlLTUwMFwiXG4gICAgICB9LFxuICAgICAgc3RhbmRhcmQ6IHtcbiAgICAgICAgc206IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLWdyYXktMzAwIGJnLXRyYW5zcGFyZW50IHB4LTAgcHktMi41IHRleHQteHMgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItYmx1ZS02MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIixcbiAgICAgICAgbWQ6IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLWdyYXktMzAwIGJnLXRyYW5zcGFyZW50IHB4LTAgcHktMi41IHRleHQtc20gdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItYmx1ZS02MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIlxuICAgICAgfVxuICAgIH0sXG4gICAgc3VjY2Vzczoge1xuICAgICAgZmlsbGVkOiB7XG4gICAgICAgIHNtOiBcInBlZXIgYmxvY2sgdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSByb3VuZGVkLXQtbGcgYm9yZGVyLTAgYm9yZGVyLWItMiBib3JkZXItZ3JlZW4tNjAwIGJnLWdyYXktNTAgcHgtMi41IHBiLTIuNSBwdC01IHRleHQteHMgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItZ3JlZW4tNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItZ3JlZW4tNTAwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6Ym9yZGVyLWdyZWVuLTUwMFwiLFxuICAgICAgICBtZDogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgcm91bmRlZC10LWxnIGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLWdyZWVuLTYwMCBiZy1ncmF5LTUwIHB4LTIuNSBwYi0yLjUgcHQtNSB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWdyZWVuLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLWdyZWVuLTUwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1ncmVlbi01MDBcIlxuICAgICAgfSxcbiAgICAgIG91dGxpbmVkOiB7XG4gICAgICAgIHNtOiBcInBlZXIgYmxvY2sgdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JlZW4tNjAwIGJnLXRyYW5zcGFyZW50IHB4LTIuNSBwYi0yLjUgcHQtNCB0ZXh0LXhzIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWdyZWVuLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLWdyZWVuLTUwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItZ3JlZW4tNTAwXCIsXG4gICAgICAgIG1kOiBcInBlZXIgYmxvY2sgdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JlZW4tNjAwIGJnLXRyYW5zcGFyZW50IHB4LTIuNSBwYi0yLjUgcHQtNCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWdyZWVuLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLWdyZWVuLTUwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItZ3JlZW4tNTAwXCJcbiAgICAgIH0sXG4gICAgICBzdGFuZGFyZDoge1xuICAgICAgICBzbTogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgYm9yZGVyLTAgYm9yZGVyLWItMiBib3JkZXItZ3JlZW4tNjAwIGJnLXRyYW5zcGFyZW50IHB4LTAgcHktMi41IHRleHQteHMgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItZ3JlZW4tNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItZ3JlZW4tNTAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1ncmVlbi01MDBcIixcbiAgICAgICAgbWQ6IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLWdyZWVuLTYwMCBiZy10cmFuc3BhcmVudCBweC0wIHB5LTIuNSB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWdyZWVuLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLWdyZWVuLTUwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItZ3JlZW4tNTAwXCJcbiAgICAgIH1cbiAgICB9LFxuICAgIGVycm9yOiB7XG4gICAgICBmaWxsZWQ6IHtcbiAgICAgICAgc206IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtdC1sZyBib3JkZXItMCBib3JkZXItYi0yIGJvcmRlci1yZWQtNjAwIGJnLWdyYXktNTAgcHgtMi41IHBiLTIuNSBwdC01IHRleHQteHMgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItcmVkLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLXJlZC01MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpib3JkZXItcmVkLTUwMFwiLFxuICAgICAgICBtZDogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgcm91bmRlZC10LWxnIGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLXJlZC02MDAgYmctZ3JheS01MCBweC0yLjUgcGItMi41IHB0LTUgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGZvY3VzOmJvcmRlci1yZWQtNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZGFyazpib3JkZXItcmVkLTUwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1yZWQtNTAwXCJcbiAgICAgIH0sXG4gICAgICBvdXRsaW5lZDoge1xuICAgICAgICBzbTogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXJlZC02MDAgYmctdHJhbnNwYXJlbnQgcHgtMi41IHBiLTIuNSBwdC00IHRleHQteHMgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItcmVkLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLXJlZC01MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6Ym9yZGVyLXJlZC01MDBcIixcbiAgICAgICAgbWQ6IFwicGVlciBibG9jayB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1yZWQtNjAwIGJnLXRyYW5zcGFyZW50IHB4LTIuNSBwYi0yLjUgcHQtNCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLXJlZC02MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBkYXJrOmJvcmRlci1yZWQtNTAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1yZWQtNTAwXCJcbiAgICAgIH0sXG4gICAgICBzdGFuZGFyZDoge1xuICAgICAgICBzbTogXCJwZWVyIGJsb2NrIHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgYm9yZGVyLTAgYm9yZGVyLWItMiBib3JkZXItcmVkLTYwMCBiZy10cmFuc3BhcmVudCBweC0wIHB5LTIuNSB0ZXh0LXhzIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLXJlZC02MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBkYXJrOmJvcmRlci1yZWQtNTAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOmJvcmRlci1yZWQtNTAwXCIsXG4gICAgICAgIG1kOiBcInBlZXIgYmxvY2sgdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSBib3JkZXItMCBib3JkZXItYi0yIGJvcmRlci1yZWQtNjAwIGJnLXRyYW5zcGFyZW50IHB4LTAgcHktMi41IHRleHQtc20gdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItcmVkLTYwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGRhcms6Ym9yZGVyLXJlZC01MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6Ym9yZGVyLXJlZC01MDBcIlxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbGFiZWw6IHtcbiAgICBkZWZhdWx0OiB7XG4gICAgICBmaWxsZWQ6IHtcbiAgICAgICAgc206IFwiYWJzb2x1dGUgbGVmdC0yLjUgdG9wLTQgei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS00IHNjYWxlLTc1IHRleHQteHMgdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgcGVlci1wbGFjZWhvbGRlci1zaG93bjp0cmFuc2xhdGUteS0wIHBlZXItcGxhY2Vob2xkZXItc2hvd246c2NhbGUtMTAwIHBlZXItZm9jdXM6LXRyYW5zbGF0ZS15LTQgcGVlci1mb2N1czpzY2FsZS03NSBwZWVyLWZvY3VzOnRleHQtYmx1ZS02MDAgZGFyazp0ZXh0LWdyYXktNDAwIHBlZXItZm9jdXM6ZGFyazp0ZXh0LWJsdWUtNTAwXCIsXG4gICAgICAgIG1kOiBcImFic29sdXRlIGxlZnQtMi41IHRvcC00IHotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNCBzY2FsZS03NSB0ZXh0LXNtIHRleHQtZ3JheS01MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dHJhbnNsYXRlLXktMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS00IHBlZXItZm9jdXM6c2NhbGUtNzUgcGVlci1mb2N1czp0ZXh0LWJsdWUtNjAwIGRhcms6dGV4dC1ncmF5LTQwMCBwZWVyLWZvY3VzOmRhcms6dGV4dC1ibHVlLTUwMFwiXG4gICAgICB9LFxuICAgICAgb3V0bGluZWQ6IHtcbiAgICAgICAgc206IFwiYWJzb2x1dGUgbGVmdC0xIHRvcC0yIHotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNCBzY2FsZS03NSBiZy13aGl0ZSBweC0yIHRleHQteHMgdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgcGVlci1wbGFjZWhvbGRlci1zaG93bjp0b3AtMS8yIHBlZXItcGxhY2Vob2xkZXItc2hvd246LXRyYW5zbGF0ZS15LTEvMiBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOnRvcC0yIHBlZXItZm9jdXM6LXRyYW5zbGF0ZS15LTQgcGVlci1mb2N1czpzY2FsZS03NSBwZWVyLWZvY3VzOnB4LTIgcGVlci1mb2N1czp0ZXh0LWJsdWUtNjAwIGRhcms6YmctZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktNDAwIHBlZXItZm9jdXM6ZGFyazp0ZXh0LWJsdWUtNTAwXCIsXG4gICAgICAgIG1kOiBcImFic29sdXRlIGxlZnQtMSB0b3AtMiB6LTEwIG9yaWdpbi1bMF0gLXRyYW5zbGF0ZS15LTQgc2NhbGUtNzUgYmctd2hpdGUgcHgtMiB0ZXh0LXNtIHRleHQtZ3JheS01MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dG9wLTEvMiBwZWVyLXBsYWNlaG9sZGVyLXNob3duOi10cmFuc2xhdGUteS0xLzIgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czp0b3AtMiBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS00IHBlZXItZm9jdXM6c2NhbGUtNzUgcGVlci1mb2N1czpweC0yIHBlZXItZm9jdXM6dGV4dC1ibHVlLTYwMCBkYXJrOmJnLWdyYXktOTAwIGRhcms6dGV4dC1ncmF5LTQwMCBwZWVyLWZvY3VzOmRhcms6dGV4dC1ibHVlLTUwMFwiXG4gICAgICB9LFxuICAgICAgc3RhbmRhcmQ6IHtcbiAgICAgICAgc206IFwiYWJzb2x1dGUgdG9wLTMgLXotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNiBzY2FsZS03NSB0ZXh0LXhzIHRleHQtZ3JheS01MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dHJhbnNsYXRlLXktMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOmxlZnQtMCBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS02IHBlZXItZm9jdXM6c2NhbGUtNzUgcGVlci1mb2N1czp0ZXh0LWJsdWUtNjAwIGRhcms6dGV4dC1ncmF5LTQwMCBwZWVyLWZvY3VzOmRhcms6dGV4dC1ibHVlLTUwMFwiLFxuICAgICAgICBtZDogXCJhYnNvbHV0ZSB0b3AtMyAtei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS02IHNjYWxlLTc1IHRleHQtc20gdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgcGVlci1wbGFjZWhvbGRlci1zaG93bjp0cmFuc2xhdGUteS0wIHBlZXItcGxhY2Vob2xkZXItc2hvd246c2NhbGUtMTAwIHBlZXItZm9jdXM6bGVmdC0wIHBlZXItZm9jdXM6LXRyYW5zbGF0ZS15LTYgcGVlci1mb2N1czpzY2FsZS03NSBwZWVyLWZvY3VzOnRleHQtYmx1ZS02MDAgZGFyazp0ZXh0LWdyYXktNDAwIHBlZXItZm9jdXM6ZGFyazp0ZXh0LWJsdWUtNTAwXCJcbiAgICAgIH1cbiAgICB9LFxuICAgIHN1Y2Nlc3M6IHtcbiAgICAgIGZpbGxlZDoge1xuICAgICAgICBzbTogXCJhYnNvbHV0ZSBsZWZ0LTIuNSB0b3AtNCB6LTEwIG9yaWdpbi1bMF0gLXRyYW5zbGF0ZS15LTQgc2NhbGUtNzUgdGV4dC1zbSB0ZXh0LWdyZWVuLTYwMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgcGVlci1wbGFjZWhvbGRlci1zaG93bjp0cmFuc2xhdGUteS0wIHBlZXItcGxhY2Vob2xkZXItc2hvd246c2NhbGUtMTAwIHBlZXItZm9jdXM6LXRyYW5zbGF0ZS15LTQgcGVlci1mb2N1czpzY2FsZS03NSBkYXJrOnRleHQtZ3JlZW4tNTAwXCIsXG4gICAgICAgIG1kOiBcImFic29sdXRlIGxlZnQtMi41IHRvcC00IHotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNCBzY2FsZS03NSB0ZXh0LXNtIHRleHQtZ3JlZW4tNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRyYW5zbGF0ZS15LTAgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNCBwZWVyLWZvY3VzOnNjYWxlLTc1IGRhcms6dGV4dC1ncmVlbi01MDBcIlxuICAgICAgfSxcbiAgICAgIG91dGxpbmVkOiB7XG4gICAgICAgIHNtOiBcImFic29sdXRlIGxlZnQtMSB0b3AtMiB6LTEwIG9yaWdpbi1bMF0gLXRyYW5zbGF0ZS15LTQgc2NhbGUtNzUgYmctd2hpdGUgcHgtMiB0ZXh0LXNtIHRleHQtZ3JlZW4tNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRvcC0xLzIgcGVlci1wbGFjZWhvbGRlci1zaG93bjotdHJhbnNsYXRlLXktMS8yIHBlZXItcGxhY2Vob2xkZXItc2hvd246c2NhbGUtMTAwIHBlZXItZm9jdXM6dG9wLTIgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNCBwZWVyLWZvY3VzOnNjYWxlLTc1IHBlZXItZm9jdXM6cHgtMiBkYXJrOmJnLWdyYXktOTAwIGRhcms6dGV4dC1ncmVlbi01MDBcIixcbiAgICAgICAgbWQ6IFwiYWJzb2x1dGUgbGVmdC0xIHRvcC0yIHotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNCBzY2FsZS03NSBiZy13aGl0ZSBweC0yIHRleHQtc20gdGV4dC1ncmVlbi02MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dG9wLTEvMiBwZWVyLXBsYWNlaG9sZGVyLXNob3duOi10cmFuc2xhdGUteS0xLzIgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czp0b3AtMiBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS00IHBlZXItZm9jdXM6c2NhbGUtNzUgcGVlci1mb2N1czpweC0yIGRhcms6YmctZ3JheS05MDAgZGFyazp0ZXh0LWdyZWVuLTUwMFwiXG4gICAgICB9LFxuICAgICAgc3RhbmRhcmQ6IHtcbiAgICAgICAgc206IFwiYWJzb2x1dGUgdG9wLTMgLXotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNiBzY2FsZS03NSB0ZXh0LXhzIHRleHQtZ3JlZW4tNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRyYW5zbGF0ZS15LTAgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czpsZWZ0LTAgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNiBwZWVyLWZvY3VzOnNjYWxlLTc1IGRhcms6dGV4dC1ncmVlbi01MDBcIixcbiAgICAgICAgbWQ6IFwiYWJzb2x1dGUgdG9wLTMgLXotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNiBzY2FsZS03NSB0ZXh0LXNtIHRleHQtZ3JlZW4tNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRyYW5zbGF0ZS15LTAgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czpsZWZ0LTAgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNiBwZWVyLWZvY3VzOnNjYWxlLTc1IGRhcms6dGV4dC1ncmVlbi01MDBcIlxuICAgICAgfVxuICAgIH0sXG4gICAgZXJyb3I6IHtcbiAgICAgIGZpbGxlZDoge1xuICAgICAgICBzbTogXCJhYnNvbHV0ZSBsZWZ0LTIuNSB0b3AtNCB6LTEwIG9yaWdpbi1bMF0gLXRyYW5zbGF0ZS15LTQgc2NhbGUtNzUgdGV4dC14cyB0ZXh0LXJlZC02MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dHJhbnNsYXRlLXktMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS00IHBlZXItZm9jdXM6c2NhbGUtNzUgZGFyazp0ZXh0LXJlZC01MDBcIixcbiAgICAgICAgbWQ6IFwiYWJzb2x1dGUgbGVmdC0yLjUgdG9wLTQgei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS00IHNjYWxlLTc1IHRleHQteHMgdGV4dC1yZWQtNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRyYW5zbGF0ZS15LTAgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNCBwZWVyLWZvY3VzOnNjYWxlLTc1IGRhcms6dGV4dC1yZWQtNTAwXCJcbiAgICAgIH0sXG4gICAgICBvdXRsaW5lZDoge1xuICAgICAgICBzbTogXCJhYnNvbHV0ZSBsZWZ0LTEgdG9wLTIgei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS00IHNjYWxlLTc1IGJnLXdoaXRlIHB4LTIgdGV4dC14cyB0ZXh0LXJlZC02MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dG9wLTEvMiBwZWVyLXBsYWNlaG9sZGVyLXNob3duOi10cmFuc2xhdGUteS0xLzIgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czp0b3AtMiBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS00IHBlZXItZm9jdXM6c2NhbGUtNzUgcGVlci1mb2N1czpweC0yIGRhcms6YmctZ3JheS05MDAgZGFyazp0ZXh0LXJlZC01MDBcIixcbiAgICAgICAgbWQ6IFwiYWJzb2x1dGUgbGVmdC0xIHRvcC0yIHotMTAgb3JpZ2luLVswXSAtdHJhbnNsYXRlLXktNCBzY2FsZS03NSBiZy13aGl0ZSBweC0yIHRleHQteHMgdGV4dC1yZWQtNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRvcC0xLzIgcGVlci1wbGFjZWhvbGRlci1zaG93bjotdHJhbnNsYXRlLXktMS8yIHBlZXItcGxhY2Vob2xkZXItc2hvd246c2NhbGUtMTAwIHBlZXItZm9jdXM6dG9wLTIgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNCBwZWVyLWZvY3VzOnNjYWxlLTc1IHBlZXItZm9jdXM6cHgtMiBkYXJrOmJnLWdyYXktOTAwIGRhcms6dGV4dC1yZWQtNTAwXCJcbiAgICAgIH0sXG4gICAgICBzdGFuZGFyZDoge1xuICAgICAgICBzbTogXCJhYnNvbHV0ZSB0b3AtMyAtei0xMCBvcmlnaW4tWzBdIC10cmFuc2xhdGUteS02IHNjYWxlLTc1IHRleHQteHMgdGV4dC1yZWQtNjAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnRyYW5zbGF0ZS15LTAgcGVlci1wbGFjZWhvbGRlci1zaG93bjpzY2FsZS0xMDAgcGVlci1mb2N1czpsZWZ0LTAgcGVlci1mb2N1czotdHJhbnNsYXRlLXktNiBwZWVyLWZvY3VzOnNjYWxlLTc1IGRhcms6dGV4dC1yZWQtNTAwXCIsXG4gICAgICAgIG1kOiBcImFic29sdXRlIHRvcC0zIC16LTEwIG9yaWdpbi1bMF0gLXRyYW5zbGF0ZS15LTYgc2NhbGUtNzUgdGV4dC1zbSB0ZXh0LXJlZC02MDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIHBlZXItcGxhY2Vob2xkZXItc2hvd246dHJhbnNsYXRlLXktMCBwZWVyLXBsYWNlaG9sZGVyLXNob3duOnNjYWxlLTEwMCBwZWVyLWZvY3VzOmxlZnQtMCBwZWVyLWZvY3VzOi10cmFuc2xhdGUteS02IHBlZXItZm9jdXM6c2NhbGUtNzUgZGFyazp0ZXh0LXJlZC01MDBcIlxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgaGVscGVyVGV4dDoge1xuICAgIGRlZmF1bHQ6IFwibXQtMiB0ZXh0LXhzIHRleHQtZ3JheS02MDAgZGFyazp0ZXh0LWdyYXktNDAwXCIsXG4gICAgc3VjY2VzczogXCJtdC0yIHRleHQteHMgdGV4dC1ncmVlbi02MDAgZGFyazp0ZXh0LWdyZWVuLTQwMFwiLFxuICAgIGVycm9yOiBcIm10LTIgdGV4dC14cyB0ZXh0LXJlZC02MDAgZGFyazp0ZXh0LXJlZC00MDBcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgZmxvYXRpbmdMYWJlbFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGZvb3RlclRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJ3LWZ1bGwgcm91bmRlZC1sZyBiZy13aGl0ZSBzaGFkb3cgZGFyazpiZy1ncmF5LTgwMCBtZDpmbGV4IG1kOml0ZW1zLWNlbnRlciBtZDpqdXN0aWZ5LWJldHdlZW5cIixcbiAgICBjb250YWluZXI6IFwidy1mdWxsIHAtNlwiLFxuICAgIGJnRGFyazogXCJiZy1ncmF5LTgwMFwiXG4gIH0sXG4gIGdyb3VwTGluazoge1xuICAgIGJhc2U6IFwiZmxleCBmbGV4LXdyYXAgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC13aGl0ZVwiLFxuICAgIGxpbms6IHtcbiAgICAgIGJhc2U6IFwibWUtNCBsYXN0Om1yLTAgbWQ6bXItNlwiLFxuICAgICAgaHJlZjogXCJob3Zlcjp1bmRlcmxpbmVcIlxuICAgIH0sXG4gICAgY29sOiBcImZsZXgtY29sIHNwYWNlLXktNFwiXG4gIH0sXG4gIGljb246IHtcbiAgICBiYXNlOiBcInRleHQtZ3JheS01MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlXCIsXG4gICAgc2l6ZTogXCJoLTUgdy01XCJcbiAgfSxcbiAgdGl0bGU6IHtcbiAgICBiYXNlOiBcIm1iLTYgdGV4dC1zbSBmb250LXNlbWlib2xkIHVwcGVyY2FzZSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC13aGl0ZVwiXG4gIH0sXG4gIGRpdmlkZXI6IHtcbiAgICBiYXNlOiBcIm15LTYgdy1mdWxsIGJvcmRlci1ncmF5LTIwMCBkYXJrOmJvcmRlci1ncmF5LTcwMCBzbTpteC1hdXRvIGxnOm15LThcIlxuICB9LFxuICBjb3B5cmlnaHQ6IHtcbiAgICBiYXNlOiBcInRleHQtc20gdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDAgc206dGV4dC1jZW50ZXJcIixcbiAgICBocmVmOiBcIm1sLTEgaG92ZXI6dW5kZXJsaW5lXCIsXG4gICAgc3BhbjogXCJtbC0xXCJcbiAgfSxcbiAgYnJhbmQ6IHtcbiAgICBiYXNlOiBcIm1iLTQgZmxleCBpdGVtcy1jZW50ZXIgc206bWItMFwiLFxuICAgIGltZzogXCJtci0zIGgtOFwiLFxuICAgIHNwYW46IFwic2VsZi1jZW50ZXIgd2hpdGVzcGFjZS1ub3dyYXAgdGV4dC0yeGwgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktODAwIGRhcms6dGV4dC13aGl0ZVwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBmb290ZXJUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBoZWxwZXJUZXh0VGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcIm10LTIgdGV4dC1zbVwiLFxuICAgIGNvbG9yczoge1xuICAgICAgZ3JheTogXCJ0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICAgICAgaW5mbzogXCJ0ZXh0LWN5YW4tNzAwIGRhcms6dGV4dC1jeWFuLTgwMFwiLFxuICAgICAgc3VjY2VzczogXCJ0ZXh0LWdyZWVuLTYwMCBkYXJrOnRleHQtZ3JlZW4tNTAwXCIsXG4gICAgICBmYWlsdXJlOiBcInRleHQtcmVkLTYwMCBkYXJrOnRleHQtcmVkLTUwMFwiLFxuICAgICAgd2FybmluZzogXCJ0ZXh0LXllbGxvdy01MDAgZGFyazp0ZXh0LXllbGxvdy02MDBcIlxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IGhlbHBlclRleHRUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBoclRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJteS04IGgtcHggYm9yZGVyLTAgYmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTcwMFwiXG4gIH0sXG4gIHRyaW1tZWQ6IHtcbiAgICBiYXNlOiBcIm14LWF1dG8gbXktNCBoLTEgdy00OCByb3VuZGVkIGJvcmRlci0wIGJnLWdyYXktMTAwIGRhcms6YmctZ3JheS03MDAgbWQ6bXktMTBcIlxuICB9LFxuICBpY29uOiB7XG4gICAgYmFzZTogXCJpbmxpbmUtZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCIsXG4gICAgaHJMaW5lOiBcIm15LTggaC0xIHctNjQgcm91bmRlZCBib3JkZXItMCBiZy1ncmF5LTIwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgaWNvbjoge1xuICAgICAgYmFzZTogXCJhYnNvbHV0ZSBsZWZ0LTEvMiAtdHJhbnNsYXRlLXgtMS8yIGJnLXdoaXRlIHB4LTQgZGFyazpiZy1ncmF5LTkwMFwiLFxuICAgICAgaWNvbjogXCJoLTQgdy00IHRleHQtZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktMzAwXCJcbiAgICB9XG4gIH0sXG4gIHRleHQ6IHtcbiAgICBiYXNlOiBcImlubGluZS1mbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIixcbiAgICBockxpbmU6IFwibXktOCBoLXB4IHctNjQgYm9yZGVyLTAgYmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTcwMFwiLFxuICAgIHRleHQ6IFwiYWJzb2x1dGUgbGVmdC0xLzIgLXRyYW5zbGF0ZS14LTEvMiBiZy13aGl0ZSBweC0zIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazpiZy1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGVcIlxuICB9LFxuICBzcXVhcmU6IHtcbiAgICBiYXNlOiBcIm14LWF1dG8gbXktOCBoLTggdy04IHJvdW5kZWQgYm9yZGVyLTAgYmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTcwMCBtZDpteS0xMlwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBoclRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IGtiZFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJyb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctZ3JheS0xMDAgcHgtMiBweS0xLjUgdGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtZ3JheS04MDAgZGFyazpib3JkZXItZ3JheS01MDAgZGFyazpiZy1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS0xMDBcIixcbiAgICBpY29uOiBcImlubGluZS1ibG9ja1wiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBrYmRUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBsYWJlbFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJ0ZXh0LXNtIGZvbnQtbWVkaXVtXCIsXG4gICAgZGlzYWJsZWQ6IFwib3BhY2l0eS01MFwiLFxuICAgIGNvbG9yczoge1xuICAgICAgZGVmYXVsdDogXCJ0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiLFxuICAgICAgaW5mbzogXCJ0ZXh0LWN5YW4tNTAwIGRhcms6dGV4dC1jeWFuLTYwMFwiLFxuICAgICAgZmFpbHVyZTogXCJ0ZXh0LXJlZC03MDAgZGFyazp0ZXh0LXJlZC01MDBcIixcbiAgICAgIHdhcm5pbmc6IFwidGV4dC15ZWxsb3ctNTAwIGRhcms6dGV4dC15ZWxsb3ctNjAwXCIsXG4gICAgICBzdWNjZXNzOiBcInRleHQtZ3JlZW4tNzAwIGRhcms6dGV4dC1ncmVlbi01MDBcIlxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IGxhYmVsVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgbGlzdFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJsaXN0LWluc2lkZSBzcGFjZS15LTEgdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIixcbiAgICBvcmRlcmVkOiB7XG4gICAgICBvZmY6IFwibGlzdC1kaXNjXCIsXG4gICAgICBvbjogXCJsaXN0LWRlY2ltYWxcIlxuICAgIH0sXG4gICAgaG9yaXpvbnRhbDogXCJmbGV4IGxpc3Qtbm9uZSBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNwYWNlLXgtNCBzcGFjZS15LTBcIixcbiAgICB1bnN0eWxlZDogXCJsaXN0LW5vbmVcIixcbiAgICBuZXN0ZWQ6IFwibXQtMiBwcy01XCJcbiAgfSxcbiAgaXRlbToge1xuICAgIHdpdGhJY29uOiB7XG4gICAgICBvZmY6IFwiXCIsXG4gICAgICBvbjogXCJmbGV4IGl0ZW1zLWNlbnRlclwiXG4gICAgfSxcbiAgICBpY29uOiBcIm1lLTIgaC0zLjUgdy0zLjUgZmxleC1zaHJpbmstMFwiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBsaXN0VGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgbGlzdEdyb3VwVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImxpc3Qtbm9uZSByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgdGV4dC1sZWZ0IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZVwiXG4gIH0sXG4gIGl0ZW06IHtcbiAgICBiYXNlOiBcIlsmPipdOmZpcnN0OnJvdW5kZWQtdC1sZyBbJj4qXTpsYXN0OnJvdW5kZWQtYi1sZyBbJj4qXTpsYXN0OmJvcmRlci1iLTBcIixcbiAgICBsaW5rOiB7XG4gICAgICBiYXNlOiBcImZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBib3JkZXItYiBib3JkZXItZ3JheS0yMDAgcHgtNCBweS0yIGRhcms6Ym9yZGVyLWdyYXktNjAwXCIsXG4gICAgICBhY3RpdmU6IHtcbiAgICAgICAgb2ZmOiBcImhvdmVyOmJnLWdyYXktMTAwIGhvdmVyOnRleHQtY3lhbi03MDAgZm9jdXM6dGV4dC1jeWFuLTcwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctY3lhbi03MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpob3ZlcjpiZy1ncmF5LTYwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGUgZGFyazpmb2N1czp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1ncmF5LTUwMFwiLFxuICAgICAgICBvbjogXCJiZy1jeWFuLTcwMCB0ZXh0LXdoaXRlIGRhcms6YmctZ3JheS04MDBcIlxuICAgICAgfSxcbiAgICAgIGRpc2FibGVkOiB7XG4gICAgICAgIG9mZjogXCJcIixcbiAgICAgICAgb246IFwiY3Vyc29yLW5vdC1hbGxvd2VkIGJnLWdyYXktMTAwIHRleHQtZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDAgaG92ZXI6dGV4dC1ncmF5LTkwMCBmb2N1czp0ZXh0LWdyYXktOTAwXCJcbiAgICAgIH0sXG4gICAgICBocmVmOiB7XG4gICAgICAgIG9mZjogXCJcIixcbiAgICAgICAgb246IFwiXCJcbiAgICAgIH0sXG4gICAgICBpY29uOiBcIm1yLTIgaC00IHctNCBmaWxsLWN1cnJlbnRcIlxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IGxpc3RHcm91cFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IG5hdmJhclRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJiZy13aGl0ZSBweC0yIHB5LTIuNSBkYXJrOmJvcmRlci1ncmF5LTcwMCBkYXJrOmJnLWdyYXktODAwIHNtOnB4LTRcIixcbiAgICByb3VuZGVkOiB7XG4gICAgICBvbjogXCJyb3VuZGVkXCIsXG4gICAgICBvZmY6IFwiXCJcbiAgICB9LFxuICAgIGJvcmRlcmVkOiB7XG4gICAgICBvbjogXCJib3JkZXJcIixcbiAgICAgIG9mZjogXCJcIlxuICAgIH0sXG4gICAgaW5uZXI6IHtcbiAgICAgIGJhc2U6IFwibXgtYXV0byBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCIsXG4gICAgICBmbHVpZDoge1xuICAgICAgICBvbjogXCJcIixcbiAgICAgICAgb2ZmOiBcImNvbnRhaW5lclwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBicmFuZDoge1xuICAgIGJhc2U6IFwiZmxleCBpdGVtcy1jZW50ZXJcIlxuICB9LFxuICBjb2xsYXBzZToge1xuICAgIGJhc2U6IFwidy1mdWxsIG1kOmJsb2NrIG1kOnctYXV0b1wiLFxuICAgIGxpc3Q6IFwibXQtNCBmbGV4IGZsZXgtY29sIG1kOm10LTAgbWQ6ZmxleC1yb3cgbWQ6c3BhY2UteC04IG1kOnRleHQtc20gbWQ6Zm9udC1tZWRpdW1cIixcbiAgICBoaWRkZW46IHtcbiAgICAgIG9uOiBcImhpZGRlblwiLFxuICAgICAgb2ZmOiBcIlwiXG4gICAgfVxuICB9LFxuICBsaW5rOiB7XG4gICAgYmFzZTogXCJibG9jayBweS0yIHBsLTMgcHItNCBtZDpwLTBcIixcbiAgICBhY3RpdmU6IHtcbiAgICAgIG9uOiBcImJnLWN5YW4tNzAwIHRleHQtd2hpdGUgZGFyazp0ZXh0LXdoaXRlIG1kOmJnLXRyYW5zcGFyZW50IG1kOnRleHQtY3lhbi03MDBcIixcbiAgICAgIG9mZjogXCJib3JkZXItYiBib3JkZXItZ3JheS0xMDAgdGV4dC1ncmF5LTcwMCBob3ZlcjpiZy1ncmF5LTUwIGRhcms6Ym9yZGVyLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTQwMCBkYXJrOmhvdmVyOmJnLWdyYXktNzAwIGRhcms6aG92ZXI6dGV4dC13aGl0ZSBtZDpib3JkZXItMCBtZDpob3ZlcjpiZy10cmFuc3BhcmVudCBtZDpob3Zlcjp0ZXh0LWN5YW4tNzAwIG1kOmRhcms6aG92ZXI6YmctdHJhbnNwYXJlbnQgbWQ6ZGFyazpob3Zlcjp0ZXh0LXdoaXRlXCJcbiAgICB9LFxuICAgIGRpc2FibGVkOiB7XG4gICAgICBvbjogXCJ0ZXh0LWdyYXktNDAwIGhvdmVyOmN1cnNvci1ub3QtYWxsb3dlZCBkYXJrOnRleHQtZ3JheS02MDBcIixcbiAgICAgIG9mZjogXCJcIlxuICAgIH1cbiAgfSxcbiAgdG9nZ2xlOiB7XG4gICAgYmFzZTogXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1sZyBwLTIgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ncmF5LTIwMCBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS02MDAgbWQ6aGlkZGVuXCIsXG4gICAgaWNvbjogXCJoLTYgdy02IHNocmluay0wXCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IG5hdmJhclRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuaW1wb3J0IHsgZHJvcGRvd25UaGVtZSB9IGZyb20gJy4uL0Ryb3Bkb3duL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBuYXZiYXJUaGVtZSB9IGZyb20gJy4uL05hdmJhci90aGVtZS5tanMnO1xuXG5jb25zdCBtZWdhTWVudVRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICAuLi5uYXZiYXJUaGVtZSxcbiAgZHJvcGRvd246IHtcbiAgICBiYXNlOiBcIlwiLFxuICAgIHRvZ2dsZToge1xuICAgICAgLi4uZHJvcGRvd25UaGVtZSxcbiAgICAgIGZsb2F0aW5nOiB7XG4gICAgICAgIC4uLmRyb3Bkb3duVGhlbWUuZmxvYXRpbmcsXG4gICAgICAgIGJhc2U6IHR3TWVyZ2UoZHJvcGRvd25UaGVtZS5mbG9hdGluZy5iYXNlLCBcIm10LTIgYmxvY2tcIiksXG4gICAgICAgIGNvbnRlbnQ6IHR3TWVyZ2UoZHJvcGRvd25UaGVtZS5mbG9hdGluZy5jb250ZW50LCBcInRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCIpLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIC4uLmRyb3Bkb3duVGhlbWUuZmxvYXRpbmcuc3R5bGUsXG4gICAgICAgICAgYXV0bzogdHdNZXJnZShkcm9wZG93blRoZW1lLmZsb2F0aW5nLnN0eWxlLmF1dG8sIFwidGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIilcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGlubGluZVdyYXBwZXI6IHR3TWVyZ2UoZHJvcGRvd25UaGVtZS5pbmxpbmVXcmFwcGVyLCBcImZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIilcbiAgICB9XG4gIH0sXG4gIGRyb3Bkb3duVG9nZ2xlOiB7XG4gICAgYmFzZTogdHdNZXJnZShuYXZiYXJUaGVtZS5saW5rLmJhc2UsIG5hdmJhclRoZW1lLmxpbmsuYWN0aXZlLm9mZiwgXCJmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCIpXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBtZWdhTWVudVRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IG1vZGFsVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImZpeGVkIGluc2V0LXgtMCB0b3AtMCB6LTUwIGgtc2NyZWVuIG92ZXJmbG93LXktYXV0byBvdmVyZmxvdy14LWhpZGRlbiBtZDppbnNldC0wIG1kOmgtZnVsbFwiLFxuICAgIHNob3c6IHtcbiAgICAgIG9uOiBcImZsZXggYmctZ3JheS05MDAgYmctb3BhY2l0eS01MCBkYXJrOmJnLW9wYWNpdHktODBcIixcbiAgICAgIG9mZjogXCJoaWRkZW5cIlxuICAgIH0sXG4gICAgc2l6ZXM6IHtcbiAgICAgIHNtOiBcIm1heC13LXNtXCIsXG4gICAgICBtZDogXCJtYXgtdy1tZFwiLFxuICAgICAgbGc6IFwibWF4LXctbGdcIixcbiAgICAgIHhsOiBcIm1heC13LXhsXCIsXG4gICAgICBcIjJ4bFwiOiBcIm1heC13LTJ4bFwiLFxuICAgICAgXCIzeGxcIjogXCJtYXgtdy0zeGxcIixcbiAgICAgIFwiNHhsXCI6IFwibWF4LXctNHhsXCIsXG4gICAgICBcIjV4bFwiOiBcIm1heC13LTV4bFwiLFxuICAgICAgXCI2eGxcIjogXCJtYXgtdy02eGxcIixcbiAgICAgIFwiN3hsXCI6IFwibWF4LXctN3hsXCJcbiAgICB9LFxuICAgIHBvc2l0aW9uczoge1xuICAgICAgXCJ0b3AtbGVmdFwiOiBcIml0ZW1zLXN0YXJ0IGp1c3RpZnktc3RhcnRcIixcbiAgICAgIFwidG9wLWNlbnRlclwiOiBcIml0ZW1zLXN0YXJ0IGp1c3RpZnktY2VudGVyXCIsXG4gICAgICBcInRvcC1yaWdodFwiOiBcIml0ZW1zLXN0YXJ0IGp1c3RpZnktZW5kXCIsXG4gICAgICBcImNlbnRlci1sZWZ0XCI6IFwiaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnRcIixcbiAgICAgIGNlbnRlcjogXCJpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIixcbiAgICAgIFwiY2VudGVyLXJpZ2h0XCI6IFwiaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kXCIsXG4gICAgICBcImJvdHRvbS1yaWdodFwiOiBcIml0ZW1zLWVuZCBqdXN0aWZ5LWVuZFwiLFxuICAgICAgXCJib3R0b20tY2VudGVyXCI6IFwiaXRlbXMtZW5kIGp1c3RpZnktY2VudGVyXCIsXG4gICAgICBcImJvdHRvbS1sZWZ0XCI6IFwiaXRlbXMtZW5kIGp1c3RpZnktc3RhcnRcIlxuICAgIH1cbiAgfSxcbiAgY29udGVudDoge1xuICAgIGJhc2U6IFwicmVsYXRpdmUgaC1mdWxsIHctZnVsbCBwLTQgbWQ6aC1hdXRvXCIsXG4gICAgaW5uZXI6IFwicmVsYXRpdmUgZmxleCBtYXgtaC1bOTBkdmhdIGZsZXgtY29sIHJvdW5kZWQtbGcgYmctd2hpdGUgc2hhZG93IGRhcms6YmctZ3JheS03MDBcIlxuICB9LFxuICBib2R5OiB7XG4gICAgYmFzZTogXCJmbGV4LTEgb3ZlcmZsb3ctYXV0byBwLTZcIixcbiAgICBwb3B1cDogXCJwdC0wXCJcbiAgfSxcbiAgaGVhZGVyOiB7XG4gICAgYmFzZTogXCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiByb3VuZGVkLXQgYm9yZGVyLWIgcC01IGRhcms6Ym9yZGVyLWdyYXktNjAwXCIsXG4gICAgcG9wdXA6IFwiYm9yZGVyLWItMCBwLTJcIixcbiAgICB0aXRsZTogXCJ0ZXh0LXhsIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCIsXG4gICAgY2xvc2U6IHtcbiAgICAgIGJhc2U6IFwibWwtYXV0byBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1sZyBiZy10cmFuc3BhcmVudCBwLTEuNSB0ZXh0LXNtIHRleHQtZ3JheS00MDAgaG92ZXI6YmctZ3JheS0yMDAgaG92ZXI6dGV4dC1ncmF5LTkwMCBkYXJrOmhvdmVyOmJnLWdyYXktNjAwIGRhcms6aG92ZXI6dGV4dC13aGl0ZVwiLFxuICAgICAgaWNvbjogXCJoLTUgdy01XCJcbiAgICB9XG4gIH0sXG4gIGZvb3Rlcjoge1xuICAgIGJhc2U6IFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yIHJvdW5kZWQtYiBib3JkZXItZ3JheS0yMDAgcC02IGRhcms6Ym9yZGVyLWdyYXktNjAwXCIsXG4gICAgcG9wdXA6IFwiYm9yZGVyLXRcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgbW9kYWxUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCBwYWdpbmF0aW9uVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIGJhc2U6IFwiXCIsXG4gIGxheW91dDoge1xuICAgIHRhYmxlOiB7XG4gICAgICBiYXNlOiBcInRleHQtc20gdGV4dC1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS00MDBcIixcbiAgICAgIHNwYW46IFwiZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiXG4gICAgfVxuICB9LFxuICBwYWdlczoge1xuICAgIGJhc2U6IFwieHM6bXQtMCBtdC0yIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciAtc3BhY2UteC1weFwiLFxuICAgIHNob3dJY29uOiBcImlubGluZS1mbGV4XCIsXG4gICAgcHJldmlvdXM6IHtcbiAgICAgIGJhc2U6IFwibWwtMCByb3VuZGVkLWwtbGcgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy13aGl0ZSBweC0zIHB5LTIgbGVhZGluZy10aWdodCB0ZXh0LWdyYXktNTAwIGVuYWJsZWQ6aG92ZXI6YmctZ3JheS0xMDAgZW5hYmxlZDpob3Zlcjp0ZXh0LWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNzAwIGRhcms6YmctZ3JheS04MDAgZGFyazp0ZXh0LWdyYXktNDAwIGVuYWJsZWQ6ZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBlbmFibGVkOmRhcms6aG92ZXI6dGV4dC13aGl0ZVwiLFxuICAgICAgaWNvbjogXCJoLTUgdy01XCJcbiAgICB9LFxuICAgIG5leHQ6IHtcbiAgICAgIGJhc2U6IFwicm91bmRlZC1yLWxnIGJvcmRlciBib3JkZXItZ3JheS0zMDAgYmctd2hpdGUgcHgtMyBweS0yIGxlYWRpbmctdGlnaHQgdGV4dC1ncmF5LTUwMCBlbmFibGVkOmhvdmVyOmJnLWdyYXktMTAwIGVuYWJsZWQ6aG92ZXI6dGV4dC1ncmF5LTcwMCBkYXJrOmJvcmRlci1ncmF5LTcwMCBkYXJrOmJnLWdyYXktODAwIGRhcms6dGV4dC1ncmF5LTQwMCBlbmFibGVkOmRhcms6aG92ZXI6YmctZ3JheS03MDAgZW5hYmxlZDpkYXJrOmhvdmVyOnRleHQtd2hpdGVcIixcbiAgICAgIGljb246IFwiaC01IHctNVwiXG4gICAgfSxcbiAgICBzZWxlY3Rvcjoge1xuICAgICAgYmFzZTogXCJ3LTEyIGJvcmRlciBib3JkZXItZ3JheS0zMDAgYmctd2hpdGUgcHktMiBsZWFkaW5nLXRpZ2h0IHRleHQtZ3JheS01MDAgZW5hYmxlZDpob3ZlcjpiZy1ncmF5LTEwMCBlbmFibGVkOmhvdmVyOnRleHQtZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS03MDAgZGFyazpiZy1ncmF5LTgwMCBkYXJrOnRleHQtZ3JheS00MDAgZW5hYmxlZDpkYXJrOmhvdmVyOmJnLWdyYXktNzAwIGVuYWJsZWQ6ZGFyazpob3Zlcjp0ZXh0LXdoaXRlXCIsXG4gICAgICBhY3RpdmU6IFwiYmctY3lhbi01MCB0ZXh0LWN5YW4tNjAwIGhvdmVyOmJnLWN5YW4tMTAwIGhvdmVyOnRleHQtY3lhbi03MDAgZGFyazpib3JkZXItZ3JheS03MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGVcIixcbiAgICAgIGRpc2FibGVkOiBcImN1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTUwXCJcbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBwYWdpbmF0aW9uVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImNvbnN0IHBvcG92ZXJUaGVtZSA9IHtcbiAgYmFzZTogXCJhYnNvbHV0ZSB6LTIwIGlubGluZS1ibG9jayB3LW1heCBtYXgtdy1bMTAwdnddIGJnLXdoaXRlIG91dGxpbmUtbm9uZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtbGcgc2hhZG93LXNtIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctZ3JheS04MDBcIixcbiAgY29udGVudDogXCJ6LTEwIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLVs3cHhdXCIsXG4gIGFycm93OiB7XG4gICAgYmFzZTogXCJhYnNvbHV0ZSBoLTIgdy0yIHotMCByb3RhdGUtNDUgbWl4LWJsZW5kLWxpZ2h0ZW4gYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktODAwIGRhcms6bWl4LWJsZW5kLWNvbG9yXCIsXG4gICAgcGxhY2VtZW50OiBcIi00cHhcIlxuICB9XG59O1xuXG5leHBvcnQgeyBwb3BvdmVyVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgcHJvZ3Jlc3NUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgYmFzZTogXCJ3LWZ1bGwgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbCBiZy1ncmF5LTIwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gIGxhYmVsOiBcIm1iLTEgZmxleCBqdXN0aWZ5LWJldHdlZW4gZm9udC1tZWRpdW0gZGFyazp0ZXh0LXdoaXRlXCIsXG4gIGJhcjogXCJzcGFjZS14LTIgcm91bmRlZC1mdWxsIHRleHQtY2VudGVyIGZvbnQtbWVkaXVtIGxlYWRpbmctbm9uZSB0ZXh0LWN5YW4tMzAwIGRhcms6dGV4dC1jeWFuLTEwMFwiLFxuICBjb2xvcjoge1xuICAgIGRhcms6IFwiYmctZ3JheS02MDAgZGFyazpiZy1ncmF5LTMwMFwiLFxuICAgIGJsdWU6IFwiYmctYmx1ZS02MDBcIixcbiAgICByZWQ6IFwiYmctcmVkLTYwMCBkYXJrOmJnLXJlZC01MDBcIixcbiAgICBncmVlbjogXCJiZy1ncmVlbi02MDAgZGFyazpiZy1ncmVlbi01MDBcIixcbiAgICB5ZWxsb3c6IFwiYmcteWVsbG93LTQwMFwiLFxuICAgIGluZGlnbzogXCJiZy1pbmRpZ28tNjAwIGRhcms6YmctaW5kaWdvLTUwMFwiLFxuICAgIHB1cnBsZTogXCJiZy1wdXJwbGUtNjAwIGRhcms6YmctcHVycGxlLTUwMFwiLFxuICAgIGN5YW46IFwiYmctY3lhbi02MDBcIixcbiAgICBncmF5OiBcImJnLWdyYXktNTAwXCIsXG4gICAgbGltZTogXCJiZy1saW1lLTYwMFwiLFxuICAgIHBpbms6IFwiYmctcGluay01MDBcIixcbiAgICB0ZWFsOiBcImJnLXRlYWwtNjAwXCJcbiAgfSxcbiAgc2l6ZToge1xuICAgIHNtOiBcImgtMS41XCIsXG4gICAgbWQ6IFwiaC0yLjVcIixcbiAgICBsZzogXCJoLTRcIixcbiAgICB4bDogXCJoLTZcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgcHJvZ3Jlc3NUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCByYWRpb1RoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJoLTQgdy00IGJvcmRlciBib3JkZXItZ3JheS0zMDAgdGV4dC1jeWFuLTYwMCBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1jeWFuLTUwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6Zm9jdXM6YmctY3lhbi02MDAgZGFyazpmb2N1czpyaW5nLWN5YW4tNjAwXCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IHJhZGlvVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgcmFuZ2VTbGlkZXJUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcm9vdDoge1xuICAgIGJhc2U6IFwiZmxleFwiXG4gIH0sXG4gIGZpZWxkOiB7XG4gICAgYmFzZTogXCJyZWxhdGl2ZSB3LWZ1bGxcIixcbiAgICBpbnB1dDoge1xuICAgICAgYmFzZTogXCJ3LWZ1bGwgY3Vyc29yLXBvaW50ZXIgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtbGcgYmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTcwMFwiLFxuICAgICAgc2l6ZXM6IHtcbiAgICAgICAgc206IFwiaC0xXCIsXG4gICAgICAgIG1kOiBcImgtMlwiLFxuICAgICAgICBsZzogXCJoLTNcIlxuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IHJhbmdlU2xpZGVyVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgcmF0aW5nVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImZsZXggaXRlbXMtY2VudGVyXCJcbiAgfSxcbiAgc3Rhcjoge1xuICAgIGVtcHR5OiBcInRleHQtZ3JheS0zMDAgZGFyazp0ZXh0LWdyYXktNTAwXCIsXG4gICAgZmlsbGVkOiBcInRleHQteWVsbG93LTQwMFwiLFxuICAgIHNpemVzOiB7XG4gICAgICBzbTogXCJoLTUgdy01XCIsXG4gICAgICBtZDogXCJoLTcgdy03XCIsXG4gICAgICBsZzogXCJoLTEwIHctMTBcIlxuICAgIH1cbiAgfVxufSk7XG5jb25zdCByYXRpbmdBZHZhbmNlZFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBiYXNlOiBcImZsZXggaXRlbXMtY2VudGVyXCIsXG4gIGxhYmVsOiBcInRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1jeWFuLTYwMCBkYXJrOnRleHQtY3lhbi01MDBcIixcbiAgcHJvZ3Jlc3M6IHtcbiAgICBiYXNlOiBcIm14LTQgaC01IHctMi80IHJvdW5kZWQgYmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTcwMFwiLFxuICAgIGZpbGw6IFwiaC01IHJvdW5kZWQgYmcteWVsbG93LTQwMFwiLFxuICAgIGxhYmVsOiBcInRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1jeWFuLTYwMCBkYXJrOnRleHQtY3lhbi01MDBcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgcmF0aW5nQWR2YW5jZWRUaGVtZSwgcmF0aW5nVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3Qgc2VsZWN0VGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIGJhc2U6IFwiZmxleFwiLFxuICBhZGRvbjogXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1sLW1kIGJvcmRlciBib3JkZXItci0wIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTIwMCBweC0zIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNjAwIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICBmaWVsZDoge1xuICAgIGJhc2U6IFwicmVsYXRpdmUgdy1mdWxsXCIsXG4gICAgaWNvbjoge1xuICAgICAgYmFzZTogXCJwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIGluc2V0LXktMCBsZWZ0LTAgZmxleCBpdGVtcy1jZW50ZXIgcGwtM1wiLFxuICAgICAgc3ZnOiBcImgtNSB3LTUgdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIlxuICAgIH0sXG4gICAgc2VsZWN0OiB7XG4gICAgICBiYXNlOiBcImJsb2NrIHctZnVsbCBib3JkZXIgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTBcIixcbiAgICAgIHdpdGhJY29uOiB7XG4gICAgICAgIG9uOiBcInBsLTEwXCIsXG4gICAgICAgIG9mZjogXCJcIlxuICAgICAgfSxcbiAgICAgIHdpdGhBZGRvbjoge1xuICAgICAgICBvbjogXCJyb3VuZGVkLXItbGdcIixcbiAgICAgICAgb2ZmOiBcInJvdW5kZWQtbGdcIlxuICAgICAgfSxcbiAgICAgIHdpdGhTaGFkb3c6IHtcbiAgICAgICAgb246IFwic2hhZG93LXNtIGRhcms6c2hhZG93LXNtLWxpZ2h0XCIsXG4gICAgICAgIG9mZjogXCJcIlxuICAgICAgfSxcbiAgICAgIHNpemVzOiB7XG4gICAgICAgIHNtOiBcInAtMiBzbTp0ZXh0LXhzXCIsXG4gICAgICAgIG1kOiBcInAtMi41IHRleHQtc21cIixcbiAgICAgICAgbGc6IFwicC00IHNtOnRleHQtYmFzZVwiXG4gICAgICB9LFxuICAgICAgY29sb3JzOiB7XG4gICAgICAgIGdyYXk6IFwiYm9yZGVyLWdyYXktMzAwIGJnLWdyYXktNTAgdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItY3lhbi01MDAgZm9jdXM6cmluZy1jeWFuLTUwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOnBsYWNlaG9sZGVyLWdyYXktNDAwIGRhcms6Zm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGRhcms6Zm9jdXM6cmluZy1jeWFuLTUwMFwiLFxuICAgICAgICBpbmZvOiBcImJvcmRlci1jeWFuLTUwMCBiZy1jeWFuLTUwIHRleHQtY3lhbi05MDAgcGxhY2Vob2xkZXItY3lhbi03MDAgZm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGZvY3VzOnJpbmctY3lhbi01MDAgZGFyazpib3JkZXItY3lhbi00MDAgZGFyazpiZy1jeWFuLTEwMCBkYXJrOmZvY3VzOmJvcmRlci1jeWFuLTUwMCBkYXJrOmZvY3VzOnJpbmctY3lhbi01MDBcIixcbiAgICAgICAgZmFpbHVyZTogXCJib3JkZXItcmVkLTUwMCBiZy1yZWQtNTAgdGV4dC1yZWQtOTAwIHBsYWNlaG9sZGVyLXJlZC03MDAgZm9jdXM6Ym9yZGVyLXJlZC01MDAgZm9jdXM6cmluZy1yZWQtNTAwIGRhcms6Ym9yZGVyLXJlZC00MDAgZGFyazpiZy1yZWQtMTAwIGRhcms6Zm9jdXM6Ym9yZGVyLXJlZC01MDAgZGFyazpmb2N1czpyaW5nLXJlZC01MDBcIixcbiAgICAgICAgd2FybmluZzogXCJib3JkZXIteWVsbG93LTUwMCBiZy15ZWxsb3ctNTAgdGV4dC15ZWxsb3ctOTAwIHBsYWNlaG9sZGVyLXllbGxvdy03MDAgZm9jdXM6Ym9yZGVyLXllbGxvdy01MDAgZm9jdXM6cmluZy15ZWxsb3ctNTAwIGRhcms6Ym9yZGVyLXllbGxvdy00MDAgZGFyazpiZy15ZWxsb3ctMTAwIGRhcms6Zm9jdXM6Ym9yZGVyLXllbGxvdy01MDAgZGFyazpmb2N1czpyaW5nLXllbGxvdy01MDBcIixcbiAgICAgICAgc3VjY2VzczogXCJib3JkZXItZ3JlZW4tNTAwIGJnLWdyZWVuLTUwIHRleHQtZ3JlZW4tOTAwIHBsYWNlaG9sZGVyLWdyZWVuLTcwMCBmb2N1czpib3JkZXItZ3JlZW4tNTAwIGZvY3VzOnJpbmctZ3JlZW4tNTAwIGRhcms6Ym9yZGVyLWdyZWVuLTQwMCBkYXJrOmJnLWdyZWVuLTEwMCBkYXJrOmZvY3VzOmJvcmRlci1ncmVlbi01MDAgZGFyazpmb2N1czpyaW5nLWdyZWVuLTUwMFwiXG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcblxuZXhwb3J0IHsgc2VsZWN0VGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3Qgc2lkZWJhclRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJoLWZ1bGxcIixcbiAgICBjb2xsYXBzZWQ6IHtcbiAgICAgIG9uOiBcInctMTZcIixcbiAgICAgIG9mZjogXCJ3LTY0XCJcbiAgICB9LFxuICAgIGlubmVyOiBcImgtZnVsbCBvdmVyZmxvdy15LWF1dG8gb3ZlcmZsb3cteC1oaWRkZW4gcm91bmRlZCBiZy1ncmF5LTUwIHB4LTMgcHktNCBkYXJrOmJnLWdyYXktODAwXCJcbiAgfSxcbiAgY29sbGFwc2U6IHtcbiAgICBidXR0b246IFwiZ3JvdXAgZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIHJvdW5kZWQtbGcgcC0yIHRleHQtYmFzZSBmb250LW5vcm1hbCB0ZXh0LWdyYXktOTAwIHRyYW5zaXRpb24gZHVyYXRpb24tNzUgaG92ZXI6YmctZ3JheS0xMDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS03MDBcIixcbiAgICBpY29uOiB7XG4gICAgICBiYXNlOiBcImgtNiB3LTYgdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uIGR1cmF0aW9uLTc1IGdyb3VwLWhvdmVyOnRleHQtZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktNDAwIGRhcms6Z3JvdXAtaG92ZXI6dGV4dC13aGl0ZVwiLFxuICAgICAgb3Blbjoge1xuICAgICAgICBvZmY6IFwiXCIsXG4gICAgICAgIG9uOiBcInRleHQtZ3JheS05MDBcIlxuICAgICAgfVxuICAgIH0sXG4gICAgbGFiZWw6IHtcbiAgICAgIGJhc2U6IFwibWwtMyBmbGV4LTEgd2hpdGVzcGFjZS1ub3dyYXAgdGV4dC1sZWZ0XCIsXG4gICAgICBpY29uOiB7XG4gICAgICAgIGJhc2U6IFwiaC02IHctNiB0cmFuc2l0aW9uIGRlbGF5LTAgZWFzZS1pbi1vdXRcIixcbiAgICAgICAgb3Blbjoge1xuICAgICAgICAgIG9uOiBcInJvdGF0ZS0xODBcIixcbiAgICAgICAgICBvZmY6IFwiXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgbGlzdDogXCJzcGFjZS15LTIgcHktMlwiXG4gIH0sXG4gIGN0YToge1xuICAgIGJhc2U6IFwibXQtNiByb3VuZGVkLWxnIGJnLWdyYXktMTAwIHAtNCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgY29sb3I6IHtcbiAgICAgIGJsdWU6IFwiYmctY3lhbi01MCBkYXJrOmJnLWN5YW4tOTAwXCIsXG4gICAgICBkYXJrOiBcImJnLWRhcmstNTAgZGFyazpiZy1kYXJrLTkwMFwiLFxuICAgICAgZmFpbHVyZTogXCJiZy1yZWQtNTAgZGFyazpiZy1yZWQtOTAwXCIsXG4gICAgICBncmF5OiBcImJnLWFsdGVybmF0aXZlLTUwIGRhcms6YmctYWx0ZXJuYXRpdmUtOTAwXCIsXG4gICAgICBncmVlbjogXCJiZy1ncmVlbi01MCBkYXJrOmJnLWdyZWVuLTkwMFwiLFxuICAgICAgbGlnaHQ6IFwiYmctbGlnaHQtNTAgZGFyazpiZy1saWdodC05MDBcIixcbiAgICAgIHJlZDogXCJiZy1yZWQtNTAgZGFyazpiZy1yZWQtOTAwXCIsXG4gICAgICBwdXJwbGU6IFwiYmctcHVycGxlLTUwIGRhcms6YmctcHVycGxlLTkwMFwiLFxuICAgICAgc3VjY2VzczogXCJiZy1ncmVlbi01MCBkYXJrOmJnLWdyZWVuLTkwMFwiLFxuICAgICAgeWVsbG93OiBcImJnLXllbGxvdy01MCBkYXJrOmJnLXllbGxvdy05MDBcIixcbiAgICAgIHdhcm5pbmc6IFwiYmcteWVsbG93LTUwIGRhcms6YmcteWVsbG93LTkwMFwiXG4gICAgfVxuICB9LFxuICBpdGVtOiB7XG4gICAgYmFzZTogXCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIHAtMiB0ZXh0LWJhc2UgZm9udC1ub3JtYWwgdGV4dC1ncmF5LTkwMCBob3ZlcjpiZy1ncmF5LTEwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1ncmF5LTcwMFwiLFxuICAgIGFjdGl2ZTogXCJiZy1ncmF5LTEwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgY29sbGFwc2VkOiB7XG4gICAgICBpbnNpZGVDb2xsYXBzZTogXCJncm91cCB3LWZ1bGwgcGwtOCB0cmFuc2l0aW9uIGR1cmF0aW9uLTc1XCIsXG4gICAgICBub0ljb246IFwiZm9udC1ib2xkXCJcbiAgICB9LFxuICAgIGNvbnRlbnQ6IHtcbiAgICAgIGJhc2U6IFwiZmxleC0xIHdoaXRlc3BhY2Utbm93cmFwIHB4LTNcIlxuICAgIH0sXG4gICAgaWNvbjoge1xuICAgICAgYmFzZTogXCJoLTYgdy02IGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uIGR1cmF0aW9uLTc1IGdyb3VwLWhvdmVyOnRleHQtZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktNDAwIGRhcms6Z3JvdXAtaG92ZXI6dGV4dC13aGl0ZVwiLFxuICAgICAgYWN0aXZlOiBcInRleHQtZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktMTAwXCJcbiAgICB9LFxuICAgIGxhYmVsOiBcIlwiLFxuICAgIGxpc3RJdGVtOiBcIlwiXG4gIH0sXG4gIGl0ZW1zOiB7XG4gICAgYmFzZTogXCJcIlxuICB9LFxuICBpdGVtR3JvdXA6IHtcbiAgICBiYXNlOiBcIm10LTQgc3BhY2UteS0yIGJvcmRlci10IGJvcmRlci1ncmF5LTIwMCBwdC00IGZpcnN0Om10LTAgZmlyc3Q6Ym9yZGVyLXQtMCBmaXJzdDpwdC0wIGRhcms6Ym9yZGVyLWdyYXktNzAwXCJcbiAgfSxcbiAgbG9nbzoge1xuICAgIGJhc2U6IFwibWItNSBmbGV4IGl0ZW1zLWNlbnRlciBwbC0yLjVcIixcbiAgICBjb2xsYXBzZWQ6IHtcbiAgICAgIG9uOiBcImhpZGRlblwiLFxuICAgICAgb2ZmOiBcInNlbGYtY2VudGVyIHdoaXRlc3BhY2Utbm93cmFwIHRleHQteGwgZm9udC1zZW1pYm9sZCBkYXJrOnRleHQtd2hpdGVcIlxuICAgIH0sXG4gICAgaW1nOiBcIm1yLTMgaC02IHNtOmgtN1wiXG4gIH1cbn0pO1xuXG5leHBvcnQgeyBzaWRlYmFyVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3Qgc3Bpbm5lclRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBiYXNlOiBcImlubGluZSBhbmltYXRlLXNwaW4gdGV4dC1ncmF5LTIwMFwiLFxuICBjb2xvcjoge1xuICAgIGZhaWx1cmU6IFwiZmlsbC1yZWQtNjAwXCIsXG4gICAgZ3JheTogXCJmaWxsLWdyYXktNjAwXCIsXG4gICAgaW5mbzogXCJmaWxsLWN5YW4tNjAwXCIsXG4gICAgcGluazogXCJmaWxsLXBpbmstNjAwXCIsXG4gICAgcHVycGxlOiBcImZpbGwtcHVycGxlLTYwMFwiLFxuICAgIHN1Y2Nlc3M6IFwiZmlsbC1ncmVlbi01MDBcIixcbiAgICB3YXJuaW5nOiBcImZpbGwteWVsbG93LTQwMFwiXG4gIH0sXG4gIGxpZ2h0OiB7XG4gICAgb2ZmOiB7XG4gICAgICBiYXNlOiBcImRhcms6dGV4dC1ncmF5LTYwMFwiLFxuICAgICAgY29sb3I6IHtcbiAgICAgICAgZmFpbHVyZTogXCJcIixcbiAgICAgICAgZ3JheTogXCJkYXJrOmZpbGwtZ3JheS0zMDBcIixcbiAgICAgICAgaW5mbzogXCJcIixcbiAgICAgICAgcGluazogXCJcIixcbiAgICAgICAgcHVycGxlOiBcIlwiLFxuICAgICAgICBzdWNjZXNzOiBcIlwiLFxuICAgICAgICB3YXJuaW5nOiBcIlwiXG4gICAgICB9XG4gICAgfSxcbiAgICBvbjoge1xuICAgICAgYmFzZTogXCJcIixcbiAgICAgIGNvbG9yOiB7XG4gICAgICAgIGZhaWx1cmU6IFwiXCIsXG4gICAgICAgIGdyYXk6IFwiXCIsXG4gICAgICAgIGluZm86IFwiXCIsXG4gICAgICAgIHBpbms6IFwiXCIsXG4gICAgICAgIHB1cnBsZTogXCJcIixcbiAgICAgICAgc3VjY2VzczogXCJcIixcbiAgICAgICAgd2FybmluZzogXCJcIlxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgc2l6ZToge1xuICAgIHhzOiBcImgtMyB3LTNcIixcbiAgICBzbTogXCJoLTQgdy00XCIsXG4gICAgbWQ6IFwiaC02IHctNlwiLFxuICAgIGxnOiBcImgtOCB3LThcIixcbiAgICB4bDogXCJoLTEwIHctMTBcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgc3Bpbm5lclRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IHRhYmxlVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcInctZnVsbCB0ZXh0LWxlZnQgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICAgIHNoYWRvdzogXCJhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgLXotMTAgaC1mdWxsIHctZnVsbCByb3VuZGVkLWxnIGJnLXdoaXRlIGRyb3Atc2hhZG93LW1kIGRhcms6YmctYmxhY2tcIixcbiAgICB3cmFwcGVyOiBcInJlbGF0aXZlXCJcbiAgfSxcbiAgYm9keToge1xuICAgIGJhc2U6IFwiZ3JvdXAvYm9keVwiLFxuICAgIGNlbGw6IHtcbiAgICAgIGJhc2U6IFwicHgtNiBweS00IGdyb3VwLWZpcnN0L2JvZHk6Z3JvdXAtZmlyc3Qvcm93OmZpcnN0OnJvdW5kZWQtdGwtbGcgZ3JvdXAtZmlyc3QvYm9keTpncm91cC1maXJzdC9yb3c6bGFzdDpyb3VuZGVkLXRyLWxnIGdyb3VwLWxhc3QvYm9keTpncm91cC1sYXN0L3JvdzpmaXJzdDpyb3VuZGVkLWJsLWxnIGdyb3VwLWxhc3QvYm9keTpncm91cC1sYXN0L3JvdzpsYXN0OnJvdW5kZWQtYnItbGdcIlxuICAgIH1cbiAgfSxcbiAgaGVhZDoge1xuICAgIGJhc2U6IFwiZ3JvdXAvaGVhZCB0ZXh0LXhzIHVwcGVyY2FzZSB0ZXh0LWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICAgIGNlbGw6IHtcbiAgICAgIGJhc2U6IFwiYmctZ3JheS01MCBweC02IHB5LTMgZ3JvdXAtZmlyc3QvaGVhZDpmaXJzdDpyb3VuZGVkLXRsLWxnIGdyb3VwLWZpcnN0L2hlYWQ6bGFzdDpyb3VuZGVkLXRyLWxnIGRhcms6YmctZ3JheS03MDBcIlxuICAgIH1cbiAgfSxcbiAgcm93OiB7XG4gICAgYmFzZTogXCJncm91cC9yb3dcIixcbiAgICBob3ZlcmVkOiBcImhvdmVyOmJnLWdyYXktNTAgZGFyazpob3ZlcjpiZy1ncmF5LTYwMFwiLFxuICAgIHN0cmlwZWQ6IFwib2RkOmJnLXdoaXRlIGV2ZW46YmctZ3JheS01MCBvZGQ6ZGFyazpiZy1ncmF5LTgwMCBldmVuOmRhcms6YmctZ3JheS03MDBcIlxuICB9XG59KTtcblxuZXhwb3J0IHsgdGFibGVUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCB0YWJUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgYmFzZTogXCJmbGV4IGZsZXgtY29sIGdhcC0yXCIsXG4gIHRhYmxpc3Q6IHtcbiAgICBiYXNlOiBcImZsZXggdGV4dC1jZW50ZXJcIixcbiAgICB2YXJpYW50OiB7XG4gICAgICBkZWZhdWx0OiBcImZsZXgtd3JhcCBib3JkZXItYiBib3JkZXItZ3JheS0yMDAgZGFyazpib3JkZXItZ3JheS03MDBcIixcbiAgICAgIHVuZGVybGluZTogXCItbWItcHggZmxleC13cmFwIGJvcmRlci1iIGJvcmRlci1ncmF5LTIwMCBkYXJrOmJvcmRlci1ncmF5LTcwMFwiLFxuICAgICAgcGlsbHM6IFwiZmxleC13cmFwIHNwYWNlLXgtMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCIsXG4gICAgICBmdWxsV2lkdGg6IFwiZ3JpZCB3LWZ1bGwgZ3JpZC1mbG93LWNvbCBkaXZpZGUteCBkaXZpZGUtZ3JheS0yMDAgcm91bmRlZC1ub25lIHRleHQtc20gZm9udC1tZWRpdW0gc2hhZG93IGRhcms6ZGl2aWRlLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTQwMFwiXG4gICAgfSxcbiAgICB0YWJpdGVtOiB7XG4gICAgICBiYXNlOiBcImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtdC1sZyBwLTQgdGV4dC1zbSBmb250LW1lZGl1bSBmaXJzdDptbC0wIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1jeWFuLTMwMCBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6dGV4dC1ncmF5LTQwMCBkaXNhYmxlZDpkYXJrOnRleHQtZ3JheS01MDBcIixcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGJhc2U6IFwicm91bmRlZC10LWxnXCIsXG4gICAgICAgICAgYWN0aXZlOiB7XG4gICAgICAgICAgICBvbjogXCJiZy1ncmF5LTEwMCB0ZXh0LWN5YW4tNjAwIGRhcms6YmctZ3JheS04MDAgZGFyazp0ZXh0LWN5YW4tNTAwXCIsXG4gICAgICAgICAgICBvZmY6IFwidGV4dC1ncmF5LTUwMCBob3ZlcjpiZy1ncmF5LTUwIGhvdmVyOnRleHQtZ3JheS02MDAgZGFyazp0ZXh0LWdyYXktNDAwIGRhcms6aG92ZXI6YmctZ3JheS04MDAgZGFyazpob3Zlcjp0ZXh0LWdyYXktMzAwXCJcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHVuZGVybGluZToge1xuICAgICAgICAgIGJhc2U6IFwicm91bmRlZC10LWxnXCIsXG4gICAgICAgICAgYWN0aXZlOiB7XG4gICAgICAgICAgICBvbjogXCJhY3RpdmUgcm91bmRlZC10LWxnIGJvcmRlci1iLTIgYm9yZGVyLWN5YW4tNjAwIHRleHQtY3lhbi02MDAgZGFyazpib3JkZXItY3lhbi01MDAgZGFyazp0ZXh0LWN5YW4tNTAwXCIsXG4gICAgICAgICAgICBvZmY6IFwiYm9yZGVyLWItMiBib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1ncmF5LTUwMCBob3Zlcjpib3JkZXItZ3JheS0zMDAgaG92ZXI6dGV4dC1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpob3Zlcjp0ZXh0LWdyYXktMzAwXCJcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHBpbGxzOiB7XG4gICAgICAgICAgYmFzZTogXCJcIixcbiAgICAgICAgICBhY3RpdmU6IHtcbiAgICAgICAgICAgIG9uOiBcInJvdW5kZWQtbGcgYmctY3lhbi02MDAgdGV4dC13aGl0ZVwiLFxuICAgICAgICAgICAgb2ZmOiBcInJvdW5kZWQtbGcgaG92ZXI6YmctZ3JheS0xMDAgaG92ZXI6dGV4dC1ncmF5LTkwMCBkYXJrOmhvdmVyOmJnLWdyYXktODAwIGRhcms6aG92ZXI6dGV4dC13aGl0ZVwiXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBmdWxsV2lkdGg6IHtcbiAgICAgICAgICBiYXNlOiBcIm1sLTAgZmxleCB3LWZ1bGwgcm91bmRlZC1ub25lIGZpcnN0Om1sLTBcIixcbiAgICAgICAgICBhY3RpdmU6IHtcbiAgICAgICAgICAgIG9uOiBcImFjdGl2ZSByb3VuZGVkLW5vbmUgYmctZ3JheS0xMDAgcC00IHRleHQtZ3JheS05MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGVcIixcbiAgICAgICAgICAgIG9mZjogXCJyb3VuZGVkLW5vbmUgYmctd2hpdGUgaG92ZXI6YmctZ3JheS01MCBob3Zlcjp0ZXh0LWdyYXktNzAwIGRhcms6YmctZ3JheS04MDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGVcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGljb246IFwibXItMiBoLTUgdy01XCJcbiAgICB9XG4gIH0sXG4gIHRhYml0ZW1jb250YWluZXI6IHtcbiAgICBiYXNlOiBcIlwiLFxuICAgIHZhcmlhbnQ6IHtcbiAgICAgIGRlZmF1bHQ6IFwiXCIsXG4gICAgICB1bmRlcmxpbmU6IFwiXCIsXG4gICAgICBwaWxsczogXCJcIixcbiAgICAgIGZ1bGxXaWR0aDogXCJcIlxuICAgIH1cbiAgfSxcbiAgdGFicGFuZWw6IFwicHktM1wiXG59KTtcblxuZXhwb3J0IHsgdGFiVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgdGV4dGFyZWFUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgYmFzZTogXCJibG9jayB3LWZ1bGwgcm91bmRlZC1sZyBib3JkZXIgdGV4dC1zbSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MFwiLFxuICBjb2xvcnM6IHtcbiAgICBncmF5OiBcImJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTUwIHRleHQtZ3JheS05MDAgZm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGZvY3VzOnJpbmctY3lhbi01MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpwbGFjZWhvbGRlci1ncmF5LTQwMCBkYXJrOmZvY3VzOmJvcmRlci1jeWFuLTUwMCBkYXJrOmZvY3VzOnJpbmctY3lhbi01MDBcIixcbiAgICBpbmZvOiBcImJvcmRlci1jeWFuLTUwMCBiZy1jeWFuLTUwIHRleHQtY3lhbi05MDAgcGxhY2Vob2xkZXItY3lhbi03MDAgZm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGZvY3VzOnJpbmctY3lhbi01MDAgZGFyazpib3JkZXItY3lhbi00MDAgZGFyazpiZy1jeWFuLTEwMCBkYXJrOmZvY3VzOmJvcmRlci1jeWFuLTUwMCBkYXJrOmZvY3VzOnJpbmctY3lhbi01MDBcIixcbiAgICBmYWlsdXJlOiBcImJvcmRlci1yZWQtNTAwIGJnLXJlZC01MCB0ZXh0LXJlZC05MDAgcGxhY2Vob2xkZXItcmVkLTcwMCBmb2N1czpib3JkZXItcmVkLTUwMCBmb2N1czpyaW5nLXJlZC01MDAgZGFyazpib3JkZXItcmVkLTQwMCBkYXJrOmJnLXJlZC0xMDAgZGFyazpmb2N1czpib3JkZXItcmVkLTUwMCBkYXJrOmZvY3VzOnJpbmctcmVkLTUwMFwiLFxuICAgIHdhcm5pbmc6IFwiYm9yZGVyLXllbGxvdy01MDAgYmcteWVsbG93LTUwIHRleHQteWVsbG93LTkwMCBwbGFjZWhvbGRlci15ZWxsb3ctNzAwIGZvY3VzOmJvcmRlci15ZWxsb3ctNTAwIGZvY3VzOnJpbmcteWVsbG93LTUwMCBkYXJrOmJvcmRlci15ZWxsb3ctNDAwIGRhcms6YmcteWVsbG93LTEwMCBkYXJrOmZvY3VzOmJvcmRlci15ZWxsb3ctNTAwIGRhcms6Zm9jdXM6cmluZy15ZWxsb3ctNTAwXCIsXG4gICAgc3VjY2VzczogXCJib3JkZXItZ3JlZW4tNTAwIGJnLWdyZWVuLTUwIHRleHQtZ3JlZW4tOTAwIHBsYWNlaG9sZGVyLWdyZWVuLTcwMCBmb2N1czpib3JkZXItZ3JlZW4tNTAwIGZvY3VzOnJpbmctZ3JlZW4tNTAwIGRhcms6Ym9yZGVyLWdyZWVuLTQwMCBkYXJrOmJnLWdyZWVuLTEwMCBkYXJrOmZvY3VzOmJvcmRlci1ncmVlbi01MDAgZGFyazpmb2N1czpyaW5nLWdyZWVuLTUwMFwiXG4gIH0sXG4gIHdpdGhTaGFkb3c6IHtcbiAgICBvbjogXCJzaGFkb3ctc20gZGFyazpzaGFkb3ctc20tbGlnaHRcIixcbiAgICBvZmY6IFwiXCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IHRleHRhcmVhVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgdGV4dElucHV0VGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIGJhc2U6IFwiZmxleFwiLFxuICBhZGRvbjogXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1sLW1kIGJvcmRlciBib3JkZXItci0wIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTIwMCBweC0zIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNjAwIGRhcms6dGV4dC1ncmF5LTQwMFwiLFxuICBmaWVsZDoge1xuICAgIGJhc2U6IFwicmVsYXRpdmUgdy1mdWxsXCIsXG4gICAgaWNvbjoge1xuICAgICAgYmFzZTogXCJwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIGluc2V0LXktMCBsZWZ0LTAgZmxleCBpdGVtcy1jZW50ZXIgcGwtM1wiLFxuICAgICAgc3ZnOiBcImgtNSB3LTUgdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIlxuICAgIH0sXG4gICAgcmlnaHRJY29uOiB7XG4gICAgICBiYXNlOiBcInBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgaW5zZXQteS0wIHJpZ2h0LTAgZmxleCBpdGVtcy1jZW50ZXIgcHItM1wiLFxuICAgICAgc3ZnOiBcImgtNSB3LTUgdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIlxuICAgIH0sXG4gICAgaW5wdXQ6IHtcbiAgICAgIGJhc2U6IFwiYmxvY2sgdy1mdWxsIGJvcmRlciBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MFwiLFxuICAgICAgc2l6ZXM6IHtcbiAgICAgICAgc206IFwicC0yIHNtOnRleHQteHNcIixcbiAgICAgICAgbWQ6IFwicC0yLjUgdGV4dC1zbVwiLFxuICAgICAgICBsZzogXCJwLTQgc206dGV4dC1iYXNlXCJcbiAgICAgIH0sXG4gICAgICBjb2xvcnM6IHtcbiAgICAgICAgZ3JheTogXCJib3JkZXItZ3JheS0zMDAgYmctZ3JheS01MCB0ZXh0LWdyYXktOTAwIGZvY3VzOmJvcmRlci1jeWFuLTUwMCBmb2N1czpyaW5nLWN5YW4tNTAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6cGxhY2Vob2xkZXItZ3JheS00MDAgZGFyazpmb2N1czpib3JkZXItY3lhbi01MDAgZGFyazpmb2N1czpyaW5nLWN5YW4tNTAwXCIsXG4gICAgICAgIGluZm86IFwiYm9yZGVyLWN5YW4tNTAwIGJnLWN5YW4tNTAgdGV4dC1jeWFuLTkwMCBwbGFjZWhvbGRlci1jeWFuLTcwMCBmb2N1czpib3JkZXItY3lhbi01MDAgZm9jdXM6cmluZy1jeWFuLTUwMCBkYXJrOmJvcmRlci1jeWFuLTQwMCBkYXJrOmJnLWN5YW4tMTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWN5YW4tNTAwIGRhcms6Zm9jdXM6cmluZy1jeWFuLTUwMFwiLFxuICAgICAgICBmYWlsdXJlOiBcImJvcmRlci1yZWQtNTAwIGJnLXJlZC01MCB0ZXh0LXJlZC05MDAgcGxhY2Vob2xkZXItcmVkLTcwMCBmb2N1czpib3JkZXItcmVkLTUwMCBmb2N1czpyaW5nLXJlZC01MDAgZGFyazpib3JkZXItcmVkLTQwMCBkYXJrOmJnLXJlZC0xMDAgZGFyazpmb2N1czpib3JkZXItcmVkLTUwMCBkYXJrOmZvY3VzOnJpbmctcmVkLTUwMFwiLFxuICAgICAgICB3YXJuaW5nOiBcImJvcmRlci15ZWxsb3ctNTAwIGJnLXllbGxvdy01MCB0ZXh0LXllbGxvdy05MDAgcGxhY2Vob2xkZXIteWVsbG93LTcwMCBmb2N1czpib3JkZXIteWVsbG93LTUwMCBmb2N1czpyaW5nLXllbGxvdy01MDAgZGFyazpib3JkZXIteWVsbG93LTQwMCBkYXJrOmJnLXllbGxvdy0xMDAgZGFyazpmb2N1czpib3JkZXIteWVsbG93LTUwMCBkYXJrOmZvY3VzOnJpbmcteWVsbG93LTUwMFwiLFxuICAgICAgICBzdWNjZXNzOiBcImJvcmRlci1ncmVlbi01MDAgYmctZ3JlZW4tNTAgdGV4dC1ncmVlbi05MDAgcGxhY2Vob2xkZXItZ3JlZW4tNzAwIGZvY3VzOmJvcmRlci1ncmVlbi01MDAgZm9jdXM6cmluZy1ncmVlbi01MDAgZGFyazpib3JkZXItZ3JlZW4tNDAwIGRhcms6YmctZ3JlZW4tMTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWdyZWVuLTUwMCBkYXJrOmZvY3VzOnJpbmctZ3JlZW4tNTAwXCJcbiAgICAgIH0sXG4gICAgICB3aXRoUmlnaHRJY29uOiB7XG4gICAgICAgIG9uOiBcInByLTEwXCIsXG4gICAgICAgIG9mZjogXCJcIlxuICAgICAgfSxcbiAgICAgIHdpdGhJY29uOiB7XG4gICAgICAgIG9uOiBcInBsLTEwXCIsXG4gICAgICAgIG9mZjogXCJcIlxuICAgICAgfSxcbiAgICAgIHdpdGhBZGRvbjoge1xuICAgICAgICBvbjogXCJyb3VuZGVkLXItbGdcIixcbiAgICAgICAgb2ZmOiBcInJvdW5kZWQtbGdcIlxuICAgICAgfSxcbiAgICAgIHdpdGhTaGFkb3c6IHtcbiAgICAgICAgb246IFwic2hhZG93LXNtIGRhcms6c2hhZG93LXNtLWxpZ2h0XCIsXG4gICAgICAgIG9mZjogXCJcIlxuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCB7IHRleHRJbnB1dFRoZW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aGVtZS5tanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvY3JlYXRlLXRoZW1lLm1qcyc7XG5cbmNvbnN0IHRpbWVsaW5lVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBkaXJlY3Rpb246IHtcbiAgICAgIGhvcml6b250YWw6IFwic206ZmxleFwiLFxuICAgICAgdmVydGljYWw6IFwicmVsYXRpdmUgYm9yZGVyLWwgYm9yZGVyLWdyYXktMjAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCJcbiAgICB9XG4gIH0sXG4gIGl0ZW06IHtcbiAgICByb290OiB7XG4gICAgICBob3Jpem9udGFsOiBcInJlbGF0aXZlIG1iLTYgc206bWItMFwiLFxuICAgICAgdmVydGljYWw6IFwibWItMTAgbWwtNlwiXG4gICAgfSxcbiAgICBjb250ZW50OiB7XG4gICAgICByb290OiB7XG4gICAgICAgIGJhc2U6IFwiXCIsXG4gICAgICAgIGhvcml6b250YWw6IFwibXQtMyBzbTpwci04XCIsXG4gICAgICAgIHZlcnRpY2FsOiBcIlwiXG4gICAgICB9LFxuICAgICAgYm9keToge1xuICAgICAgICBiYXNlOiBcIm1iLTQgdGV4dC1iYXNlIGZvbnQtbm9ybWFsIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCJcbiAgICAgIH0sXG4gICAgICB0aW1lOiB7XG4gICAgICAgIGJhc2U6IFwibWItMSB0ZXh0LXNtIGZvbnQtbm9ybWFsIGxlYWRpbmctbm9uZSB0ZXh0LWdyYXktNDAwIGRhcms6dGV4dC1ncmF5LTUwMFwiXG4gICAgICB9LFxuICAgICAgdGl0bGU6IHtcbiAgICAgICAgYmFzZTogXCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGVcIlxuICAgICAgfVxuICAgIH0sXG4gICAgcG9pbnQ6IHtcbiAgICAgIGhvcml6b250YWw6IFwiZmxleCBpdGVtcy1jZW50ZXJcIixcbiAgICAgIGxpbmU6IFwiaGlkZGVuIGgtMC41IHctZnVsbCBiZy1ncmF5LTIwMCBkYXJrOmJnLWdyYXktNzAwIHNtOmZsZXhcIixcbiAgICAgIG1hcmtlcjoge1xuICAgICAgICBiYXNlOiB7XG4gICAgICAgICAgaG9yaXpvbnRhbDogXCJhYnNvbHV0ZSAtbGVmdC0xLjUgaC0zIHctMyByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci13aGl0ZSBiZy1ncmF5LTIwMCBkYXJrOmJvcmRlci1ncmF5LTkwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgICAgICAgdmVydGljYWw6IFwiYWJzb2x1dGUgLWxlZnQtMS41IG10LTEuNSBoLTMgdy0zIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLXdoaXRlIGJnLWdyYXktMjAwIGRhcms6Ym9yZGVyLWdyYXktOTAwIGRhcms6YmctZ3JheS03MDBcIlxuICAgICAgICB9LFxuICAgICAgICBpY29uOiB7XG4gICAgICAgICAgYmFzZTogXCJoLTMgdy0zIHRleHQtY3lhbi02MDAgZGFyazp0ZXh0LWN5YW4tMzAwXCIsXG4gICAgICAgICAgd3JhcHBlcjogXCJhYnNvbHV0ZSAtbGVmdC0zIGZsZXggaC02IHctNiBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIGJnLWN5YW4tMjAwIHJpbmctOCByaW5nLXdoaXRlIGRhcms6YmctY3lhbi05MDAgZGFyazpyaW5nLWdyYXktOTAwXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHZlcnRpY2FsOiBcIlwiXG4gICAgfVxuICB9XG59KTtcblxuZXhwb3J0IHsgdGltZWxpbmVUaGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NyZWF0ZS10aGVtZS5tanMnO1xuXG5jb25zdCB0b2FzdFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICByb290OiB7XG4gICAgYmFzZTogXCJmbGV4IHctZnVsbCBtYXgtdy14cyBpdGVtcy1jZW50ZXIgcm91bmRlZC1sZyBiZy13aGl0ZSBwLTQgdGV4dC1ncmF5LTUwMCBzaGFkb3cgZGFyazpiZy1ncmF5LTgwMCBkYXJrOnRleHQtZ3JheS00MDBcIixcbiAgICBjbG9zZWQ6IFwib3BhY2l0eS0wIGVhc2Utb3V0XCJcbiAgfSxcbiAgdG9nZ2xlOiB7XG4gICAgYmFzZTogXCItbS0xLjUgbWwtYXV0byBpbmxpbmUtZmxleCBoLTggdy04IHJvdW5kZWQtbGcgYmctd2hpdGUgcC0xLjUgdGV4dC1ncmF5LTQwMCBob3ZlcjpiZy1ncmF5LTEwMCBob3Zlcjp0ZXh0LWdyYXktOTAwIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWdyYXktMzAwIGRhcms6YmctZ3JheS04MDAgZGFyazp0ZXh0LWdyYXktNTAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlXCIsXG4gICAgaWNvbjogXCJoLTUgdy01IHNocmluay0wXCJcbiAgfVxufSk7XG5cbmV4cG9ydCB7IHRvYXN0VGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgdG9nZ2xlU3dpdGNoVGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHJvb3Q6IHtcbiAgICBiYXNlOiBcImdyb3VwIGZsZXggcm91bmRlZC1sZyBmb2N1czpvdXRsaW5lLW5vbmVcIixcbiAgICBhY3RpdmU6IHtcbiAgICAgIG9uOiBcImN1cnNvci1wb2ludGVyXCIsXG4gICAgICBvZmY6IFwiY3Vyc29yLW5vdC1hbGxvd2VkIG9wYWNpdHktNTBcIlxuICAgIH0sXG4gICAgbGFiZWw6IFwibXMtMyBtdC0wLjUgdGV4dC1zdGFydCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktMzAwXCJcbiAgfSxcbiAgdG9nZ2xlOiB7XG4gICAgYmFzZTogXCJyZWxhdGl2ZSByb3VuZGVkLWZ1bGwgYm9yZGVyIGFmdGVyOmFic29sdXRlIGFmdGVyOnJvdW5kZWQtZnVsbCBhZnRlcjpiZy13aGl0ZSBhZnRlcjp0cmFuc2l0aW9uLWFsbCBncm91cC1mb2N1czpyaW5nLTQgZ3JvdXAtZm9jdXM6cmluZy1jeWFuLTUwMC8yNVwiLFxuICAgIGNoZWNrZWQ6IHtcbiAgICAgIG9uOiBcImFmdGVyOnRyYW5zbGF0ZS14LWZ1bGwgYWZ0ZXI6Ym9yZGVyLXdoaXRlIHJ0bDphZnRlcjotdHJhbnNsYXRlLXgtZnVsbFwiLFxuICAgICAgb2ZmOiBcImJvcmRlci1ncmF5LTIwMCBiZy1ncmF5LTIwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNzAwXCIsXG4gICAgICBjb2xvcjoge1xuICAgICAgICBibHVlOiBcImJvcmRlci1jeWFuLTcwMCBiZy1jeWFuLTcwMFwiLFxuICAgICAgICBkYXJrOiBcImJnLWRhcmstNzAwIGJvcmRlci1kYXJrLTkwMFwiLFxuICAgICAgICBmYWlsdXJlOiBcImJvcmRlci1yZWQtOTAwIGJnLXJlZC03MDBcIixcbiAgICAgICAgZ3JheTogXCJib3JkZXItZ3JheS02MDAgYmctZ3JheS01MDBcIixcbiAgICAgICAgZ3JlZW46IFwiYm9yZGVyLWdyZWVuLTcwMCBiZy1ncmVlbi02MDBcIixcbiAgICAgICAgbGlnaHQ6IFwiYmctbGlnaHQtNzAwIGJvcmRlci1saWdodC05MDBcIixcbiAgICAgICAgcmVkOiBcImJvcmRlci1yZWQtOTAwIGJnLXJlZC03MDBcIixcbiAgICAgICAgcHVycGxlOiBcImJvcmRlci1wdXJwbGUtOTAwIGJnLXB1cnBsZS03MDBcIixcbiAgICAgICAgc3VjY2VzczogXCJib3JkZXItZ3JlZW4tNTAwIGJnLWdyZWVuLTUwMFwiLFxuICAgICAgICB5ZWxsb3c6IFwiYm9yZGVyLXllbGxvdy00MDAgYmcteWVsbG93LTQwMFwiLFxuICAgICAgICB3YXJuaW5nOiBcImJvcmRlci15ZWxsb3ctNjAwIGJnLXllbGxvdy02MDBcIixcbiAgICAgICAgY3lhbjogXCJib3JkZXItY3lhbi01MDAgYmctY3lhbi01MDBcIixcbiAgICAgICAgbGltZTogXCJib3JkZXItbGltZS00MDAgYmctbGltZS00MDBcIixcbiAgICAgICAgaW5kaWdvOiBcImJvcmRlci1pbmRpZ28tNDAwIGJnLWluZGlnby00MDBcIixcbiAgICAgICAgdGVhbDogXCJiZy1ncmFkaWVudC10by1yIGZyb20tdGVhbC00MDAgdmlhLXRlYWwtNTAwIHRvLXRlYWwtNjAwIGhvdmVyOmJnLWdyYWRpZW50LXRvLWJyIGZvY3VzOnJpbmctNFwiLFxuICAgICAgICBpbmZvOiBcImJvcmRlci1jeWFuLTYwMCBiZy1jeWFuLTYwMFwiLFxuICAgICAgICBwaW5rOiBcImJvcmRlci1waW5rLTYwMCBiZy1waW5rLTYwMFwiXG4gICAgICB9XG4gICAgfSxcbiAgICBzaXplczoge1xuICAgICAgc206IFwiaC01IHctOSBtaW4tdy05IGFmdGVyOmxlZnQtcHggYWZ0ZXI6dG9wLXB4IGFmdGVyOmgtNCBhZnRlcjp3LTQgcnRsOmFmdGVyOnJpZ2h0LXB4XCIsXG4gICAgICBtZDogXCJoLTYgdy0xMSBtaW4tdy0xMSBhZnRlcjpsZWZ0LXB4IGFmdGVyOnRvcC1weCBhZnRlcjpoLTUgYWZ0ZXI6dy01IHJ0bDphZnRlcjpyaWdodC1weFwiLFxuICAgICAgbGc6IFwiaC03IHctMTQgbWluLXctMTQgYWZ0ZXI6bGVmdC0xIGFmdGVyOnRvcC0wLjUgYWZ0ZXI6aC02IGFmdGVyOnctNiBydGw6YWZ0ZXI6cmlnaHQtMVwiXG4gICAgfVxuICB9XG59KTtcblxuZXhwb3J0IHsgdG9nZ2xlU3dpdGNoVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jcmVhdGUtdGhlbWUubWpzJztcblxuY29uc3QgdG9vbHRpcFRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICB0YXJnZXQ6IFwidy1maXRcIixcbiAgYW5pbWF0aW9uOiBcInRyYW5zaXRpb24tb3BhY2l0eVwiLFxuICBhcnJvdzoge1xuICAgIGJhc2U6IFwiYWJzb2x1dGUgei0xMCBoLTIgdy0yIHJvdGF0ZS00NVwiLFxuICAgIHN0eWxlOiB7XG4gICAgICBkYXJrOiBcImJnLWdyYXktOTAwIGRhcms6YmctZ3JheS03MDBcIixcbiAgICAgIGxpZ2h0OiBcImJnLXdoaXRlXCIsXG4gICAgICBhdXRvOiBcImJnLXdoaXRlIGRhcms6YmctZ3JheS03MDBcIlxuICAgIH0sXG4gICAgcGxhY2VtZW50OiBcIi00cHhcIlxuICB9LFxuICBiYXNlOiBcImFic29sdXRlIHotMTAgaW5saW5lLWJsb2NrIHJvdW5kZWQtbGcgcHgtMyBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gc2hhZG93LXNtXCIsXG4gIGhpZGRlbjogXCJpbnZpc2libGUgb3BhY2l0eS0wXCIsXG4gIHN0eWxlOiB7XG4gICAgZGFyazogXCJiZy1ncmF5LTkwMCB0ZXh0LXdoaXRlIGRhcms6YmctZ3JheS03MDBcIixcbiAgICBsaWdodDogXCJib3JkZXIgYm9yZGVyLWdyYXktMjAwIGJnLXdoaXRlIHRleHQtZ3JheS05MDBcIixcbiAgICBhdXRvOiBcImJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgdGV4dC1ncmF5LTkwMCBkYXJrOmJvcmRlci1ub25lIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LXdoaXRlXCJcbiAgfSxcbiAgY29udGVudDogXCJyZWxhdGl2ZSB6LTIwXCJcbn0pO1xuXG5leHBvcnQgeyB0b29sdGlwVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRoZW1lLm1qcy5tYXBcbiIsImltcG9ydCB7IGFjY29yZGlvblRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0FjY29yZGlvbi90aGVtZS5tanMnO1xuaW1wb3J0IHsgYWxlcnRUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9BbGVydC90aGVtZS5tanMnO1xuaW1wb3J0IHsgYXZhdGFyVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvQXZhdGFyL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBiYWRnZVRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0JhZGdlL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBibG9ja3F1b3RlVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvQmxvY2txdW90ZS90aGVtZS5tanMnO1xuaW1wb3J0IHsgYnJlYWRjcnVtYlRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0JyZWFkY3J1bWIvdGhlbWUubWpzJztcbmltcG9ydCB7IGJ1dHRvblRoZW1lLCBidXR0b25Hcm91cFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0J1dHRvbi90aGVtZS5tanMnO1xuaW1wb3J0IHsgY2FyZFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0NhcmQvdGhlbWUubWpzJztcbmltcG9ydCB7IGNhcm91c2VsVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2Fyb3VzZWwvdGhlbWUubWpzJztcbmltcG9ydCB7IGNoZWNrYm94VGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2hlY2tib3gvdGhlbWUubWpzJztcbmltcG9ydCB7IGNsaXBib2FyZFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0NsaXBib2FyZC90aGVtZS5tanMnO1xuaW1wb3J0IHsgZGFya1RoZW1lVG9nZ2xlVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvRGFya1RoZW1lVG9nZ2xlL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBkYXRlUGlja2VyVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvRGF0ZXBpY2tlci90aGVtZS5tanMnO1xuaW1wb3J0IHsgZHJhd2VyVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvRHJhd2VyL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBkcm9wZG93blRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0Ryb3Bkb3duL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBmaWxlSW5wdXRUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9GaWxlSW5wdXQvdGhlbWUubWpzJztcbmltcG9ydCB7IGZsb2F0aW5nTGFiZWxUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9GbG9hdGluZ0xhYmVsL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBmb290ZXJUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9Gb290ZXIvdGhlbWUubWpzJztcbmltcG9ydCB7IGhlbHBlclRleHRUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9IZWxwZXJUZXh0L3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBoclRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL0hSL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBrYmRUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9LYmQvdGhlbWUubWpzJztcbmltcG9ydCB7IGxhYmVsVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvTGFiZWwvdGhlbWUubWpzJztcbmltcG9ydCB7IGxpc3RUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9MaXN0L3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBsaXN0R3JvdXBUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9MaXN0R3JvdXAvdGhlbWUubWpzJztcbmltcG9ydCB7IG1lZ2FNZW51VGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvTWVnYU1lbnUvdGhlbWUubWpzJztcbmltcG9ydCB7IG1vZGFsVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvTW9kYWwvdGhlbWUubWpzJztcbmltcG9ydCB7IG5hdmJhclRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL05hdmJhci90aGVtZS5tanMnO1xuaW1wb3J0IHsgcGFnaW5hdGlvblRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1BhZ2luYXRpb24vdGhlbWUubWpzJztcbmltcG9ydCB7IHBvcG92ZXJUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9Qb3BvdmVyL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyBwcm9ncmVzc1RoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1Byb2dyZXNzL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyByYWRpb1RoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1JhZGlvL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyByYW5nZVNsaWRlclRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1JhbmdlU2xpZGVyL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyByYXRpbmdUaGVtZSwgcmF0aW5nQWR2YW5jZWRUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9SYXRpbmcvdGhlbWUubWpzJztcbmltcG9ydCB7IHNlbGVjdFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1NlbGVjdC90aGVtZS5tanMnO1xuaW1wb3J0IHsgc2lkZWJhclRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1NpZGViYXIvdGhlbWUubWpzJztcbmltcG9ydCB7IHNwaW5uZXJUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9TcGlubmVyL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyB0YWJsZVRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1RhYmxlL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyB0YWJUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9UYWJzL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyB0ZXh0YXJlYVRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1RleHRhcmVhL3RoZW1lLm1qcyc7XG5pbXBvcnQgeyB0ZXh0SW5wdXRUaGVtZSB9IGZyb20gJy4vY29tcG9uZW50cy9UZXh0SW5wdXQvdGhlbWUubWpzJztcbmltcG9ydCB7IHRpbWVsaW5lVGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvVGltZWxpbmUvdGhlbWUubWpzJztcbmltcG9ydCB7IHRvYXN0VGhlbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvVG9hc3QvdGhlbWUubWpzJztcbmltcG9ydCB7IHRvZ2dsZVN3aXRjaFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1RvZ2dsZVN3aXRjaC90aGVtZS5tanMnO1xuaW1wb3J0IHsgdG9vbHRpcFRoZW1lIH0gZnJvbSAnLi9jb21wb25lbnRzL1Rvb2x0aXAvdGhlbWUubWpzJztcblxuY29uc3QgdGhlbWUgPSB7XG4gIGFjY29yZGlvbjogYWNjb3JkaW9uVGhlbWUsXG4gIGFsZXJ0OiBhbGVydFRoZW1lLFxuICBhdmF0YXI6IGF2YXRhclRoZW1lLFxuICBiYWRnZTogYmFkZ2VUaGVtZSxcbiAgYmxvY2txdW90ZTogYmxvY2txdW90ZVRoZW1lLFxuICBicmVhZGNydW1iOiBicmVhZGNydW1iVGhlbWUsXG4gIGJ1dHRvbjogYnV0dG9uVGhlbWUsXG4gIGJ1dHRvbkdyb3VwOiBidXR0b25Hcm91cFRoZW1lLFxuICBjYXJkOiBjYXJkVGhlbWUsXG4gIGNhcm91c2VsOiBjYXJvdXNlbFRoZW1lLFxuICBjaGVja2JveDogY2hlY2tib3hUaGVtZSxcbiAgY2xpcGJvYXJkOiBjbGlwYm9hcmRUaGVtZSxcbiAgZGF0ZXBpY2tlcjogZGF0ZVBpY2tlclRoZW1lLFxuICBkYXJrVGhlbWVUb2dnbGU6IGRhcmtUaGVtZVRvZ2dsZVRoZW1lLFxuICBkcmF3ZXI6IGRyYXdlclRoZW1lLFxuICBkcm9wZG93bjogZHJvcGRvd25UaGVtZSxcbiAgZmlsZUlucHV0OiBmaWxlSW5wdXRUaGVtZSxcbiAgZmxvYXRpbmdMYWJlbDogZmxvYXRpbmdMYWJlbFRoZW1lLFxuICBmb290ZXI6IGZvb3RlclRoZW1lLFxuICBoZWxwZXJUZXh0OiBoZWxwZXJUZXh0VGhlbWUsXG4gIGhyOiBoclRoZW1lLFxuICBrYmQ6IGtiZFRoZW1lLFxuICBsYWJlbDogbGFiZWxUaGVtZSxcbiAgbGlzdEdyb3VwOiBsaXN0R3JvdXBUaGVtZSxcbiAgbGlzdDogbGlzdFRoZW1lLFxuICBtZWdhTWVudTogbWVnYU1lbnVUaGVtZSxcbiAgbW9kYWw6IG1vZGFsVGhlbWUsXG4gIG5hdmJhcjogbmF2YmFyVGhlbWUsXG4gIHBhZ2luYXRpb246IHBhZ2luYXRpb25UaGVtZSxcbiAgcG9wb3ZlcjogcG9wb3ZlclRoZW1lLFxuICBwcm9ncmVzczogcHJvZ3Jlc3NUaGVtZSxcbiAgcmFkaW86IHJhZGlvVGhlbWUsXG4gIHJhbmdlU2xpZGVyOiByYW5nZVNsaWRlclRoZW1lLFxuICByYXRpbmc6IHJhdGluZ1RoZW1lLFxuICByYXRpbmdBZHZhbmNlZDogcmF0aW5nQWR2YW5jZWRUaGVtZSxcbiAgc2VsZWN0OiBzZWxlY3RUaGVtZSxcbiAgdGV4dElucHV0OiB0ZXh0SW5wdXRUaGVtZSxcbiAgdGV4dGFyZWE6IHRleHRhcmVhVGhlbWUsXG4gIHRvZ2dsZVN3aXRjaDogdG9nZ2xlU3dpdGNoVGhlbWUsXG4gIHNpZGViYXI6IHNpZGViYXJUaGVtZSxcbiAgc3Bpbm5lcjogc3Bpbm5lclRoZW1lLFxuICB0YWJsZTogdGFibGVUaGVtZSxcbiAgdGFiczogdGFiVGhlbWUsXG4gIHRpbWVsaW5lOiB0aW1lbGluZVRoZW1lLFxuICB0b2FzdDogdG9hc3RUaGVtZSxcbiAgdG9vbHRpcDogdG9vbHRpcFRoZW1lXG59O1xuXG5leHBvcnQgeyB0aGVtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUubWpzLm1hcFxuIiwiaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnLi4vaGVscGVycy9jbG9uZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHRoZW1lIH0gZnJvbSAnLi4vdGhlbWUubWpzJztcblxuY29uc3Qgc3RvcmUgPSB7XG4gIHRoZW1lOiBjbG9uZURlZXAodGhlbWUpXG59O1xuZnVuY3Rpb24gc2V0VGhlbWVNb2RlKG1vZGUpIHtcbiAgc3RvcmUubW9kZSA9IG1vZGU7XG59XG5mdW5jdGlvbiBnZXRUaGVtZU1vZGUoKSB7XG4gIHJldHVybiBzdG9yZS5tb2RlO1xufVxuZnVuY3Rpb24gc2V0VGhlbWUodGhlbWUkMSkge1xuICBpZiAodGhlbWUkMSkgc3RvcmUudGhlbWUgPSBtZXJnZURlZXAodGhlbWUsIHRoZW1lJDEpO1xufVxuZnVuY3Rpb24gZ2V0VGhlbWUoKSB7XG4gIHJldHVybiBjbG9uZURlZXAoc3RvcmUudGhlbWUpO1xufVxuXG5leHBvcnQgeyBnZXRUaGVtZSwgZ2V0VGhlbWVNb2RlLCBzZXRUaGVtZSwgc2V0VGhlbWVNb2RlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBBY2NvcmRpb25QYW5lbENvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VBY2NvcmRpb25Db250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChBY2NvcmRpb25QYW5lbENvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VBY2NvcmRpb25Db250ZXh0IHNob3VsZCBiZSB1c2VkIHdpdGhpbiB0aGUgQWNjb3JkaW9uUGFuZWxDb250ZXh0IHByb3ZpZGVyIVwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cblxuZXhwb3J0IHsgQWNjb3JkaW9uUGFuZWxDb250ZXh0LCB1c2VBY2NvcmRpb25Db250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BY2NvcmRpb25QYW5lbENvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgdXNlQWNjb3JkaW9uQ29udGV4dCB9IGZyb20gJy4vQWNjb3JkaW9uUGFuZWxDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IEFjY29yZGlvbkNvbnRlbnQgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgeyBpc09wZW4gfSA9IHVzZUFjY29yZGlvbkNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5hY2NvcmRpb24uY29udGVudCwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLFxuICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWFjY29yZGlvbi1jb250ZW50XCIsXG4gICAgICBoaWRkZW46ICFpc09wZW4sXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApO1xufTtcblxuZXhwb3J0IHsgQWNjb3JkaW9uQ29udGVudCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QWNjb3JkaW9uQ29udGVudC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEFjY29yZGlvblBhbmVsQ29udGV4dCB9IGZyb20gJy4vQWNjb3JkaW9uUGFuZWxDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IEFjY29yZGlvblBhbmVsID0gKHsgY2hpbGRyZW4sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgeyBhbHdheXNPcGVuIH0gPSBwcm9wcztcbiAgY29uc3QgW2lzT3Blbiwgc2V0T3Blbl0gPSB1c2VTdGF0ZShwcm9wcy5pc09wZW4pO1xuICBjb25zdCBwcm92aWRlciA9IGFsd2F5c09wZW4gPyB7XG4gICAgLi4ucHJvcHMsXG4gICAgaXNPcGVuLFxuICAgIHNldE9wZW46ICgpID0+IHNldE9wZW4oIWlzT3BlbilcbiAgfSA6IHByb3BzO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChBY2NvcmRpb25QYW5lbENvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHByb3ZpZGVyLCBjaGlsZHJlbiB9KTtcbn07XG5cbmV4cG9ydCB7IEFjY29yZGlvblBhbmVsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BY2NvcmRpb25QYW5lbC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyB1c2VBY2NvcmRpb25Db250ZXh0IH0gZnJvbSAnLi9BY2NvcmRpb25QYW5lbENvbnRleHQubWpzJztcblxuY29uc3QgQWNjb3JkaW9uVGl0bGUgPSAoe1xuICBhczogSGVhZGluZyA9IFwiaDJcIixcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHsgYXJyb3dJY29uOiBBcnJvd0ljb24sIGZsdXNoLCBpc09wZW4sIHNldE9wZW4gfSA9IHVzZUFjY29yZGlvbkNvbnRleHQoKTtcbiAgY29uc3Qgb25DbGljayA9ICgpID0+IHR5cGVvZiBzZXRPcGVuICE9PSBcInVuZGVmaW5lZFwiICYmIHNldE9wZW4oKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5hY2NvcmRpb24udGl0bGUsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgIFwiYnV0dG9uXCIsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIHRoZW1lLmZsdXNoW2ZsdXNoID8gXCJvblwiIDogXCJvZmZcIl0sIHRoZW1lLm9wZW5baXNPcGVuID8gXCJvblwiIDogXCJvZmZcIl0sIGNsYXNzTmFtZSksXG4gICAgICBvbkNsaWNrLFxuICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChIZWFkaW5nLCB7IGNsYXNzTmFtZTogdGhlbWUuaGVhZGluZywgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWFjY29yZGlvbi1oZWFkaW5nXCIsIGNoaWxkcmVuIH0pLFxuICAgICAgICBBcnJvd0ljb24gJiYgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICBBcnJvd0ljb24sXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmFycm93LmJhc2UsIHRoZW1lLmFycm93Lm9wZW5baXNPcGVuID8gXCJvblwiIDogXCJvZmZcIl0pLFxuICAgICAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWFjY29yZGlvbi1hcnJvd1wiXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICBdXG4gICAgfVxuICApO1xufTtcblxuZXhwb3J0IHsgQWNjb3JkaW9uVGl0bGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFjY29yZGlvblRpdGxlLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VNZW1vLCBDaGlsZHJlbiwgY2xvbmVFbGVtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSGlDaGV2cm9uRG93biB9IGZyb20gJ3JlYWN0LWljb25zL2hpJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IEFjY29yZGlvbkNvbnRlbnQgfSBmcm9tICcuL0FjY29yZGlvbkNvbnRlbnQubWpzJztcbmltcG9ydCB7IEFjY29yZGlvblBhbmVsIH0gZnJvbSAnLi9BY2NvcmRpb25QYW5lbC5tanMnO1xuaW1wb3J0IHsgQWNjb3JkaW9uVGl0bGUgfSBmcm9tICcuL0FjY29yZGlvblRpdGxlLm1qcyc7XG5cbmNvbnN0IEFjY29yZGlvbkNvbXBvbmVudCA9ICh7XG4gIGFsd2F5c09wZW4gPSBmYWxzZSxcbiAgYXJyb3dJY29uID0gSGlDaGV2cm9uRG93bixcbiAgY2hpbGRyZW4sXG4gIGZsdXNoID0gZmFsc2UsXG4gIGNvbGxhcHNlQWxsID0gZmFsc2UsXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IFtpc09wZW4sIHNldE9wZW5dID0gdXNlU3RhdGUoY29sbGFwc2VBbGwgPyAtMSA6IDApO1xuICBjb25zdCBwYW5lbHMgPSB1c2VNZW1vKFxuICAgICgpID0+IENoaWxkcmVuLm1hcChcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgKGNoaWxkLCBpKSA9PiBjbG9uZUVsZW1lbnQoY2hpbGQsIHtcbiAgICAgICAgYWx3YXlzT3BlbixcbiAgICAgICAgYXJyb3dJY29uLFxuICAgICAgICBmbHVzaCxcbiAgICAgICAgaXNPcGVuOiBpc09wZW4gPT09IGksXG4gICAgICAgIHNldE9wZW46ICgpID0+IHNldE9wZW4oaXNPcGVuID09PSBpID8gLTEgOiBpKVxuICAgICAgfSlcbiAgICApLFxuICAgIFthbHdheXNPcGVuLCBhcnJvd0ljb24sIGNoaWxkcmVuLCBmbHVzaCwgaXNPcGVuXVxuICApO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmFjY29yZGlvbi5yb290LCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwiZGl2XCIsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIHRoZW1lLmZsdXNoW2ZsdXNoID8gXCJvblwiIDogXCJvZmZcIl0sIGNsYXNzTmFtZSksXG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYWNjb3JkaW9uXCIsXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuOiBwYW5lbHNcbiAgICB9XG4gICk7XG59O1xuQWNjb3JkaW9uQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJBY2NvcmRpb25cIjtcbkFjY29yZGlvblBhbmVsLmRpc3BsYXlOYW1lID0gXCJBY2NvcmRpb24uUGFuZWxcIjtcbkFjY29yZGlvblRpdGxlLmRpc3BsYXlOYW1lID0gXCJBY2NvcmRpb24uVGl0bGVcIjtcbkFjY29yZGlvbkNvbnRlbnQuZGlzcGxheU5hbWUgPSBcIkFjY29yZGlvbi5Db250ZW50XCI7XG5jb25zdCBBY2NvcmRpb24gPSBPYmplY3QuYXNzaWduKEFjY29yZGlvbkNvbXBvbmVudCwge1xuICBQYW5lbDogQWNjb3JkaW9uUGFuZWwsXG4gIFRpdGxlOiBBY2NvcmRpb25UaXRsZSxcbiAgQ29udGVudDogQWNjb3JkaW9uQ29udGVudFxufSk7XG5cbmV4cG9ydCB7IEFjY29yZGlvbiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QWNjb3JkaW9uLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgQXZhdGFyR3JvdXAgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmF2YXRhci5ncm91cCwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IFwiZGF0YS10ZXN0aWRcIjogXCJhdmF0YXItZ3JvdXAtZWxlbWVudFwiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcbkF2YXRhckdyb3VwLmRpc3BsYXlOYW1lID0gXCJBdmF0YXIuR3JvdXBcIjtcblxuZXhwb3J0IHsgQXZhdGFyR3JvdXAgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUF2YXRhckdyb3VwLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeHMgfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IEF2YXRhckdyb3VwQ291bnRlciA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgaHJlZixcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIHRvdGFsLFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmF2YXRhci5ncm91cENvdW50ZXIsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiYVwiLCB7IGhyZWYsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW46IFtcbiAgICBcIitcIixcbiAgICB0b3RhbFxuICBdIH0pO1xufTtcbkF2YXRhckdyb3VwQ291bnRlci5kaXNwbGF5TmFtZSA9IFwiQXZhdGFyLkdyb3VwQ291bnRlclwiO1xuXG5leHBvcnQgeyBBdmF0YXJHcm91cENvdW50ZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUF2YXRhckdyb3VwQ291bnRlci5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBBdmF0YXJHcm91cCB9IGZyb20gJy4vQXZhdGFyR3JvdXAubWpzJztcbmltcG9ydCB7IEF2YXRhckdyb3VwQ291bnRlciB9IGZyb20gJy4vQXZhdGFyR3JvdXBDb3VudGVyLm1qcyc7XG5cbmNvbnN0IEF2YXRhckNvbXBvbmVudCA9ICh7XG4gIGFsdCA9IFwiXCIsXG4gIGJvcmRlcmVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGNvbG9yID0gXCJsaWdodFwiLFxuICBpbWcsXG4gIHBsYWNlaG9sZGVySW5pdGlhbHMgPSBcIlwiLFxuICByb3VuZGVkID0gZmFsc2UsXG4gIHNpemUgPSBcIm1kXCIsXG4gIHN0YWNrZWQgPSBmYWxzZSxcbiAgc3RhdHVzLFxuICBzdGF0dXNQb3NpdGlvbiA9IFwidG9wLWxlZnRcIixcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuYXZhdGFyLCBjdXN0b21UaGVtZSk7XG4gIGNvbnN0IGltZ0NsYXNzTmFtZSA9IHR3TWVyZ2UoXG4gICAgdGhlbWUucm9vdC5pbWcuYmFzZSxcbiAgICBib3JkZXJlZCAmJiB0aGVtZS5yb290LmJvcmRlcmVkLFxuICAgIGJvcmRlcmVkICYmIHRoZW1lLnJvb3QuY29sb3JbY29sb3JdLFxuICAgIHJvdW5kZWQgJiYgdGhlbWUucm9vdC5yb3VuZGVkLFxuICAgIHN0YWNrZWQgJiYgdGhlbWUucm9vdC5zdGFja2VkLFxuICAgIHRoZW1lLnJvb3QuaW1nLm9uLFxuICAgIHRoZW1lLnJvb3Quc2l6ZVtzaXplXVxuICApO1xuICBjb25zdCBpbWdQcm9wcyA9IHtcbiAgICBjbGFzc05hbWU6IHR3TWVyZ2UoaW1nQ2xhc3NOYW1lLCB0aGVtZS5yb290LmltZy5vbiksXG4gICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWF2YXRhci1pbWdcIlxuICB9O1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCBjbGFzc05hbWUpLCBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYXZhdGFyXCIsIC4uLnByb3BzLCBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcInJlbGF0aXZlXCIsIGNoaWxkcmVuOiBbXG4gICAgICBpbWcgPyB0eXBlb2YgaW1nID09PSBcInN0cmluZ1wiID8gLyogQF9fUFVSRV9fICovIGpzeChcImltZ1wiLCB7IGFsdCwgc3JjOiBpbWcsIC4uLmltZ1Byb3BzIH0pIDogaW1nKHsgYWx0LCAuLi5pbWdQcm9wcyB9KSA6IHBsYWNlaG9sZGVySW5pdGlhbHMgPyAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgdGhlbWUucm9vdC5pbWcub2ZmLFxuICAgICAgICAgICAgdGhlbWUucm9vdC5pbml0aWFscy5iYXNlLFxuICAgICAgICAgICAgc3RhY2tlZCAmJiB0aGVtZS5yb290LnN0YWNrZWQsXG4gICAgICAgICAgICBib3JkZXJlZCAmJiB0aGVtZS5yb290LmJvcmRlcmVkLFxuICAgICAgICAgICAgYm9yZGVyZWQgJiYgdGhlbWUucm9vdC5jb2xvcltjb2xvcl0sXG4gICAgICAgICAgICB0aGVtZS5yb290LnNpemVbc2l6ZV0sXG4gICAgICAgICAgICByb3VuZGVkICYmIHRoZW1lLnJvb3Qucm91bmRlZFxuICAgICAgICAgICksXG4gICAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWF2YXRhci1pbml0aWFscy1wbGFjZWhvbGRlclwiLFxuICAgICAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmluaXRpYWxzLnRleHQpLCBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYXZhdGFyLWluaXRpYWxzLXBsYWNlaG9sZGVyLXRleHRcIiwgY2hpbGRyZW46IHBsYWNlaG9sZGVySW5pdGlhbHMgfSlcbiAgICAgICAgfVxuICAgICAgKSA6IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UoaW1nQ2xhc3NOYW1lLCB0aGVtZS5yb290LmltZy5vZmYpLCBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYXZhdGFyLWltZ1wiLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgXCJzdmdcIixcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogdGhlbWUucm9vdC5pbWcucGxhY2Vob2xkZXIsXG4gICAgICAgICAgZmlsbDogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgICB2aWV3Qm94OiBcIjAgMCAyMCAyMFwiLFxuICAgICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgICAgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJwYXRoXCIsIHsgZmlsbFJ1bGU6IFwiZXZlbm9kZFwiLCBkOiBcIk0xMCA5YTMgMyAwIDEwMC02IDMgMyAwIDAwMCA2em0tNyA5YTcgNyAwIDExMTQgMEgzelwiLCBjbGlwUnVsZTogXCJldmVub2RkXCIgfSlcbiAgICAgICAgfVxuICAgICAgKSB9KSxcbiAgICAgIHN0YXR1cyAmJiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICBcInNwYW5cIixcbiAgICAgICAge1xuICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1hdmF0YXItc3RhdHVzXCIsXG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgdGhlbWUucm9vdC5zdGF0dXMuYmFzZSxcbiAgICAgICAgICAgIHRoZW1lLnJvb3Quc3RhdHVzW3N0YXR1c10sXG4gICAgICAgICAgICB0aGVtZS5yb290LnN0YXR1c1Bvc2l0aW9uW3N0YXR1c1Bvc2l0aW9uXVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgKVxuICAgIF0gfSksXG4gICAgY2hpbGRyZW4gJiYgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNoaWxkcmVuIH0pXG4gIF0gfSk7XG59O1xuQXZhdGFyQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJBdmF0YXJcIjtcbmNvbnN0IEF2YXRhciA9IE9iamVjdC5hc3NpZ24oQXZhdGFyQ29tcG9uZW50LCB7XG4gIEdyb3VwOiBBdmF0YXJHcm91cCxcbiAgQ291bnRlcjogQXZhdGFyR3JvdXBDb3VudGVyXG59KTtcblxuZXhwb3J0IHsgQXZhdGFyIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BdmF0YXIubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4LCBqc3hzIH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBCYWRnZSA9ICh7XG4gIGNoaWxkcmVuLFxuICBjb2xvciA9IFwiaW5mb1wiLFxuICBocmVmLFxuICBpY29uOiBJY29uLFxuICBzaXplID0gXCJ4c1wiLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmJhZGdlLCBjdXN0b21UaGVtZSk7XG4gIGNvbnN0IENvbnRlbnQgPSAoKSA9PiAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICBcInNwYW5cIixcbiAgICB7XG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgIHRoZW1lLnJvb3QuYmFzZSxcbiAgICAgICAgdGhlbWUucm9vdC5jb2xvcltjb2xvcl0sXG4gICAgICAgIHRoZW1lLnJvb3Quc2l6ZVtzaXplXSxcbiAgICAgICAgdGhlbWUuaWNvbltJY29uID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKSxcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1iYWRnZVwiLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICBJY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuaWNvbi5zaXplW3NpemVdLCBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYmFkZ2UtaWNvblwiIH0pLFxuICAgICAgICBjaGlsZHJlbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNoaWxkcmVuIH0pXG4gICAgICBdXG4gICAgfVxuICApO1xuICByZXR1cm4gaHJlZiA/IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJhXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5yb290LmhyZWYsIGhyZWYsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KENvbnRlbnQsIHt9KSB9KSA6IC8qIEBfX1BVUkVfXyAqLyBqc3goQ29udGVudCwge30pO1xufTtcbkJhZGdlLmRpc3BsYXlOYW1lID0gXCJCYWRnZVwiO1xuXG5leHBvcnQgeyBCYWRnZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QmFkZ2UubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4LCBqc3hzIH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBTcGlubmVyID0gKHtcbiAgY2xhc3NOYW1lLFxuICBjb2xvciA9IFwiaW5mb1wiLFxuICBsaWdodCxcbiAgc2l6ZSA9IFwibWRcIixcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuc3Bpbm5lciwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyByb2xlOiBcInN0YXR1c1wiLCAuLi5wcm9wcywgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgIFwic3ZnXCIsXG4gICAge1xuICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICB2aWV3Qm94OiBcIjAgMCAxMDAgMTAxXCIsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgIHRoZW1lLmJhc2UsXG4gICAgICAgIHRoZW1lLmNvbG9yW2NvbG9yXSxcbiAgICAgICAgdGhlbWUubGlnaHRbbGlnaHQgPyBcIm9uXCIgOiBcIm9mZlwiXS5iYXNlLFxuICAgICAgICB0aGVtZS5saWdodFtsaWdodCA/IFwib25cIiA6IFwib2ZmXCJdLmNvbG9yW2NvbG9yXSxcbiAgICAgICAgdGhlbWUuc2l6ZVtzaXplXSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApLFxuICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICBcInBhdGhcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkOiBcIk0xMDAgNTAuNTkwOEMxMDAgNzguMjA1MSA3Ny42MTQyIDEwMC41OTEgNTAgMTAwLjU5MUMyMi4zODU4IDEwMC41OTEgMCA3OC4yMDUxIDAgNTAuNTkwOEMwIDIyLjk3NjYgMjIuMzg1OCAwLjU5MDgyIDUwIDAuNTkwODJDNzcuNjE0MiAwLjU5MDgyIDEwMCAyMi45NzY2IDEwMCA1MC41OTA4Wk05LjA4MTQ0IDUwLjU5MDhDOS4wODE0NCA3My4xODk1IDI3LjQwMTMgOTEuNTA5NCA1MCA5MS41MDk0QzcyLjU5ODcgOTEuNTA5NCA5MC45MTg2IDczLjE4OTUgOTAuOTE4NiA1MC41OTA4QzkwLjkxODYgMjcuOTkyMSA3Mi41OTg3IDkuNjcyMjYgNTAgOS42NzIyNkMyNy40MDEzIDkuNjcyMjYgOS4wODE0NCAyNy45OTIxIDkuMDgxNDQgNTAuNTkwOFpcIixcbiAgICAgICAgICAgIGZpbGw6IFwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICB9XG4gICAgICAgICksXG4gICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgXCJwYXRoXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZDogXCJNOTMuOTY3NiAzOS4wNDA5Qzk2LjM5MyAzOC40MDM4IDk3Ljg2MjQgMzUuOTExNiA5Ny4wMDc5IDMzLjU1MzlDOTUuMjkzMiAyOC44MjI3IDkyLjg3MSAyNC4zNjkyIDg5LjgxNjcgMjAuMzQ4Qzg1Ljg0NTIgMTUuMTE5MiA4MC44ODI2IDEwLjcyMzggNzUuMjEyNCA3LjQxMjg5QzY5LjU0MjIgNC4xMDE5NCA2My4yNzU0IDEuOTQwMjUgNTYuNzY5OCAxLjA1MTI0QzUxLjc2NjYgMC4zNjc1NDEgNDYuNjk3NiAwLjQ0Njg0MyA0MS43MzQ1IDEuMjc4NzNDMzkuMjYxMyAxLjY5MzI4IDM3LjgxMyA0LjE5Nzc4IDM4LjQ1MDEgNi42MjMyNkMzOS4wODczIDkuMDQ4NzQgNDEuNTY5NCAxMC40NzE3IDQ0LjA1MDUgMTAuMTA3MUM0Ny44NTExIDkuNTQ4NTUgNTEuNzE5MSA5LjUyNjg5IDU1LjU0MDIgMTAuMDQ5MUM2MC44NjQyIDEwLjc3NjYgNjUuOTkyOCAxMi41NDU3IDcwLjYzMzEgMTUuMjU1MkM3NS4yNzM1IDE3Ljk2NDggNzkuMzM0NyAyMS41NjE5IDgyLjU4NDkgMjUuODQxQzg0LjkxNzUgMjguOTEyMSA4Ni43OTk3IDMyLjI5MTMgODguMTgxMSAzNS44NzU4Qzg5LjA4MyAzOC4yMTU4IDkxLjU0MjEgMzkuNjc4MSA5My45Njc2IDM5LjA0MDlaXCIsXG4gICAgICAgICAgICBmaWxsOiBcImN1cnJlbnRGaWxsXCJcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIF1cbiAgICB9XG4gICkgfSk7XG59O1xuU3Bpbm5lci5kaXNwbGF5TmFtZSA9IFwiU3Bpbm5lclwiO1xuXG5leHBvcnQgeyBTcGlubmVyIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TcGlubmVyLm1qcy5tYXBcbiIsImltcG9ydCB7IGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IEJ1dHRvbkJhc2UgPSBmb3J3YXJkUmVmKFxuICAoeyBjaGlsZHJlbiwgYXM6IENvbXBvbmVudCwgaHJlZiwgdHlwZSA9IFwiYnV0dG9uXCIsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IEJhc2VDb21wb25lbnQgPSBDb21wb25lbnQgfHwgKGhyZWYgPyBcImFcIiA6IFwiYnV0dG9uXCIpO1xuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KEJhc2VDb21wb25lbnQsIHsgcmVmLCBocmVmLCB0eXBlLCAuLi5wcm9wcyB9LCBjaGlsZHJlbik7XG4gIH1cbik7XG5CdXR0b25CYXNlLmRpc3BsYXlOYW1lID0gXCJCdXR0b25CYXNlQ29tcG9uZW50XCI7XG5cbmV4cG9ydCB7IEJ1dHRvbkJhc2UgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJ1dHRvbkJhc2UubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdXNlTWVtbywgQ2hpbGRyZW4sIGlzVmFsaWRFbGVtZW50LCBjbG9uZUVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuL0J1dHRvbi5tanMnO1xuXG5jb25zdCBwcm9jZXNzQ2hpbGRyZW4gPSAoY2hpbGRyZW4sIG91dGxpbmUsIHBpbGwpID0+IHtcbiAgcmV0dXJuIENoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgIGlmIChpc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uSW5Hcm91cFByb3AgPSBjaGlsZC50eXBlID09IEJ1dHRvbiA/IHsgcG9zaXRpb25Jbkdyb3VwOiBkZXRlcm1pbmVQb3NpdGlvbihpbmRleCwgQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pKSB9IDoge307XG4gICAgICBpZiAoY2hpbGQucHJvcHMuY2hpbGRyZW4pIHtcbiAgICAgICAgcmV0dXJuIGNsb25lRWxlbWVudChjaGlsZCwge1xuICAgICAgICAgIC4uLmNoaWxkLnByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuOiBwcm9jZXNzQ2hpbGRyZW4oY2hpbGQucHJvcHMuY2hpbGRyZW4sIG91dGxpbmUsIHBpbGwpLFxuICAgICAgICAgIC4uLnBvc2l0aW9uSW5Hcm91cFByb3BcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICAgICAgb3V0bGluZSxcbiAgICAgICAgICBwaWxsLFxuICAgICAgICAgIC4uLnBvc2l0aW9uSW5Hcm91cFByb3BcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjaGlsZDtcbiAgfSk7XG59O1xuY29uc3QgZGV0ZXJtaW5lUG9zaXRpb24gPSAoaW5kZXgsIHRvdGFsQ2hpbGRyZW4pID0+IHtcbiAgcmV0dXJuIGluZGV4ID09PSAwID8gXCJzdGFydFwiIDogaW5kZXggPT09IHRvdGFsQ2hpbGRyZW4gLSAxID8gXCJlbmRcIiA6IFwibWlkZGxlXCI7XG59O1xuY29uc3QgQnV0dG9uR3JvdXAgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBvdXRsaW5lLFxuICBwaWxsLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgaXRlbXMgPSB1c2VNZW1vKCgpID0+IHByb2Nlc3NDaGlsZHJlbihjaGlsZHJlbiwgb3V0bGluZSwgcGlsbCksIFtjaGlsZHJlbiwgb3V0bGluZSwgcGlsbF0pO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmJ1dHRvbkdyb3VwLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIHJvbGU6IFwiZ3JvdXBcIiwgLi4ucHJvcHMsIGNoaWxkcmVuOiBpdGVtcyB9KTtcbn07XG5CdXR0b25Hcm91cC5kaXNwbGF5TmFtZSA9IFwiQnV0dG9uLkdyb3VwXCI7XG5cbmV4cG9ydCB7IEJ1dHRvbkdyb3VwIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1CdXR0b25Hcm91cC5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3gsIGpzeHMsIEZyYWdtZW50IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuLi9TcGlubmVyL1NwaW5uZXIubWpzJztcbmltcG9ydCB7IEJ1dHRvbkJhc2UgfSBmcm9tICcuL0J1dHRvbkJhc2UubWpzJztcbmltcG9ydCB7IEJ1dHRvbkdyb3VwIH0gZnJvbSAnLi9CdXR0b25Hcm91cC5tanMnO1xuXG5jb25zdCBCdXR0b25Db21wb25lbnQgPSBmb3J3YXJkUmVmKFxuICAoe1xuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgICBjb2xvciA9IFwiaW5mb1wiLFxuICAgIGRpc2FibGVkLFxuICAgIGZ1bGxTaXplZCxcbiAgICBpc1Byb2Nlc3NpbmcgPSBmYWxzZSxcbiAgICBwcm9jZXNzaW5nTGFiZWwgPSBcIkxvYWRpbmcuLi5cIixcbiAgICBwcm9jZXNzaW5nU3Bpbm5lcixcbiAgICBncmFkaWVudER1b1RvbmUsXG4gICAgZ3JhZGllbnRNb25vY2hyb21lLFxuICAgIGxhYmVsLFxuICAgIG91dGxpbmUgPSBmYWxzZSxcbiAgICBwaWxsID0gZmFsc2UsXG4gICAgcG9zaXRpb25Jbkdyb3VwID0gXCJub25lXCIsXG4gICAgc2l6ZSA9IFwibWRcIixcbiAgICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgICAuLi5wcm9wc1xuICB9LCByZWYpID0+IHtcbiAgICBjb25zdCB7IGJ1dHRvbkdyb3VwOiBncm91cFRoZW1lLCBidXR0b246IGJ1dHRvblRoZW1lIH0gPSBnZXRUaGVtZSgpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGJ1dHRvblRoZW1lLCBjdXN0b21UaGVtZSk7XG4gICAgY29uc3QgdGhlaXJQcm9wcyA9IHByb3BzO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgQnV0dG9uQmFzZSxcbiAgICAgIHtcbiAgICAgICAgcmVmLFxuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgIHRoZW1lLmJhc2UsXG4gICAgICAgICAgZGlzYWJsZWQgJiYgdGhlbWUuZGlzYWJsZWQsXG4gICAgICAgICAgIWdyYWRpZW50RHVvVG9uZSAmJiAhZ3JhZGllbnRNb25vY2hyb21lICYmIHRoZW1lLmNvbG9yW2NvbG9yXSxcbiAgICAgICAgICBncmFkaWVudER1b1RvbmUgJiYgIWdyYWRpZW50TW9ub2Nocm9tZSAmJiB0aGVtZS5ncmFkaWVudER1b1RvbmVbZ3JhZGllbnREdW9Ub25lXSxcbiAgICAgICAgICAhZ3JhZGllbnREdW9Ub25lICYmIGdyYWRpZW50TW9ub2Nocm9tZSAmJiB0aGVtZS5ncmFkaWVudFtncmFkaWVudE1vbm9jaHJvbWVdLFxuICAgICAgICAgIG91dGxpbmUgJiYgKHRoZW1lLm91dGxpbmUuY29sb3JbY29sb3JdID8/IHRoZW1lLm91dGxpbmUuY29sb3IuZGVmYXVsdCksXG4gICAgICAgICAgdGhlbWUucGlsbFtwaWxsID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgZnVsbFNpemVkICYmIHRoZW1lLmZ1bGxTaXplZCxcbiAgICAgICAgICBncm91cFRoZW1lLnBvc2l0aW9uW3Bvc2l0aW9uSW5Hcm91cF0sXG4gICAgICAgICAgY2xhc3NOYW1lXG4gICAgICAgICksXG4gICAgICAgIC4uLnRoZWlyUHJvcHMsXG4gICAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICAgICAgdGhlbWUuaW5uZXIuYmFzZSxcbiAgICAgICAgICAgICAgdGhlbWUub3V0bGluZVtvdXRsaW5lID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgICAgIHRoZW1lLm91dGxpbmUucGlsbFtvdXRsaW5lICYmIHBpbGwgPyBcIm9uXCIgOiBcIm9mZlwiXSxcbiAgICAgICAgICAgICAgdGhlbWUuc2l6ZVtzaXplXSxcbiAgICAgICAgICAgICAgb3V0bGluZSAmJiAhdGhlbWUub3V0bGluZS5jb2xvcltjb2xvcl0gJiYgdGhlbWUuaW5uZXIub3V0bGluZSxcbiAgICAgICAgICAgICAgaXNQcm9jZXNzaW5nICYmIHRoZW1lLmlzUHJvY2Vzc2luZyxcbiAgICAgICAgICAgICAgaXNQcm9jZXNzaW5nICYmIHRoZW1lLmlubmVyLmlzUHJvY2Vzc2luZ1BhZGRpbmdbc2l6ZV0sXG4gICAgICAgICAgICAgIHRoZW1lLmlubmVyLnBvc2l0aW9uW3Bvc2l0aW9uSW5Hcm91cF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeHMoRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgaXNQcm9jZXNzaW5nICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnNwaW5uZXJTbG90LCB0aGVtZS5zcGlubmVyTGVmdFBvc2l0aW9uW3NpemVdKSwgY2hpbGRyZW46IHByb2Nlc3NpbmdTcGlubmVyIHx8IC8qIEBfX1BVUkVfXyAqLyBqc3goU3Bpbm5lciwgeyBzaXplIH0pIH0pLFxuICAgICAgICAgICAgICB0eXBlb2YgY2hpbGRyZW4gIT09IFwidW5kZWZpbmVkXCIgPyBjaGlsZHJlbiA6IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWJ1dHRvbi1sYWJlbFwiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUubGFiZWwpLCBjaGlsZHJlbjogaXNQcm9jZXNzaW5nID8gcHJvY2Vzc2luZ0xhYmVsIDogbGFiZWwgfSlcbiAgICAgICAgICAgIF0gfSlcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIH1cbiAgICApO1xuICB9XG4pO1xuQnV0dG9uQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJCdXR0b25cIjtcbmNvbnN0IEJ1dHRvbiA9IE9iamVjdC5hc3NpZ24oQnV0dG9uQ29tcG9uZW50LCB7XG4gIEdyb3VwOiBCdXR0b25Hcm91cFxufSk7XG5cbmV4cG9ydCB7IEJ1dHRvbiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QnV0dG9uLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uL0J1dHRvbi9CdXR0b24ubWpzJztcbmltcG9ydCAnLi4vQnV0dG9uL0J1dHRvbkdyb3VwLm1qcyc7XG5cbmNvbnN0IEJhbm5lckNvbGxhcHNlQnV0dG9uID0gKHsgY2hpbGRyZW4sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3Qgb25DbGljayA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IGNvbGxhcHNlQnV0dG9uID0gZXZlbnQudGFyZ2V0O1xuICAgIGNvbnN0IHBhcmVudEJhbm5lciA9IGNvbGxhcHNlQnV0dG9uLmNsb3Nlc3QoJ1tyb2xlPVwiYmFubmVyXCJdJyk7XG4gICAgcGFyZW50QmFubmVyPy5yZW1vdmUoKTtcbiAgfTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goQnV0dG9uLCB7IG9uQ2xpY2ssIC4uLnByb3BzLCBjaGlsZHJlbiB9KTtcbn07XG5CYW5uZXJDb2xsYXBzZUJ1dHRvbi5kaXNwbGF5TmFtZSA9IFwiQmFubmVyLkNvbGxhcHNlQnV0dG9uXCI7XG5cbmV4cG9ydCB7IEJhbm5lckNvbGxhcHNlQnV0dG9uIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1CYW5uZXJDb2xsYXBzZUJ1dHRvbi5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBCYW5uZXJDb2xsYXBzZUJ1dHRvbiB9IGZyb20gJy4vQmFubmVyQ29sbGFwc2VCdXR0b24ubWpzJztcblxuY29uc3QgQmFubmVyQ29tcG9uZW50ID0gKHsgY2hpbGRyZW4sIC4uLnByb3BzIH0pID0+IHtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYmFubmVyXCIsIHJvbGU6IFwiYmFubmVyXCIsIHRhYkluZGV4OiAtMSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcbkJhbm5lckNvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiQmFubmVyXCI7XG5jb25zdCBCYW5uZXIgPSBPYmplY3QuYXNzaWduKEJhbm5lckNvbXBvbmVudCwge1xuICBDb2xsYXBzZUJ1dHRvbjogQmFubmVyQ29sbGFwc2VCdXR0b25cbn0pO1xuXG5leHBvcnQgeyBCYW5uZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJhbm5lci5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSGlPdXRsaW5lQ2hldnJvblJpZ2h0IH0gZnJvbSAncmVhY3QtaWNvbnMvaGknO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBCcmVhZGNydW1iSXRlbSA9IGZvcndhcmRSZWYoXG4gICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGhyZWYsIGljb246IEljb24sIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCBpc0xpbmsgPSB0eXBlb2YgaHJlZiAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgICBjb25zdCBDb21wb25lbnQgPSBpc0xpbmsgPyBcImFcIiA6IFwic3BhblwiO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuYnJlYWRjcnVtYi5pdGVtLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwibGlcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuOiBbXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KEhpT3V0bGluZUNoZXZyb25SaWdodCwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuY2hldnJvbiwgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWJyZWFkY3J1bWItc2VwYXJhdG9yXCIgfSksXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICAgICAgQ29tcG9uZW50LFxuICAgICAgICB7XG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIGNsYXNzTmFtZTogdGhlbWUuaHJlZltpc0xpbmsgPyBcIm9uXCIgOiBcIm9mZlwiXSxcbiAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtYnJlYWRjcnVtYi1pdGVtXCIsXG4gICAgICAgICAgaHJlZixcbiAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgSWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBjbGFzc05hbWU6IHRoZW1lLmljb24gfSksXG4gICAgICAgICAgICBjaGlsZHJlblxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKVxuICAgIF0gfSk7XG4gIH1cbik7XG5CcmVhZGNydW1iSXRlbS5kaXNwbGF5TmFtZSA9IFwiQnJlYWRjcnVtYi5JdGVtXCI7XG5cbmV4cG9ydCB7IEJyZWFkY3J1bWJJdGVtIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1CcmVhZGNydW1iSXRlbS5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBCcmVhZGNydW1iSXRlbSB9IGZyb20gJy4vQnJlYWRjcnVtYkl0ZW0ubWpzJztcblxuY29uc3QgQnJlYWRjcnVtYkNvbXBvbmVudCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmJyZWFkY3J1bWIucm9vdCwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcIm5hdlwiLCB7IFwiYXJpYS1sYWJlbFwiOiBcIkJyZWFkY3J1bWJcIiwgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIC4uLnByb3BzLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcIm9sXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5saXN0LCBjaGlsZHJlbiB9KSB9KTtcbn07XG5CcmVhZGNydW1iQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJCcmVhZGNydW1iXCI7XG5jb25zdCBCcmVhZGNydW1iID0gT2JqZWN0LmFzc2lnbihCcmVhZGNydW1iQ29tcG9uZW50LCB7XG4gIEl0ZW06IEJyZWFkY3J1bWJJdGVtXG59KTtcblxuZXhwb3J0IHsgQnJlYWRjcnVtYiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QnJlYWRjcnVtYi5tanMubWFwXG4iLCIvKiFcblx0Q29weXJpZ2h0IChjKSAyMDE4IEplZCBXYXRzb24uXG5cdExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAoTUlUKSwgc2VlXG5cdGh0dHA6Ly9qZWR3YXRzb24uZ2l0aHViLmlvL2NsYXNzbmFtZXNcbiovXG4vKiBnbG9iYWwgZGVmaW5lICovXG5cbihmdW5jdGlvbiAoKSB7XG5cdCd1c2Ugc3RyaWN0JztcblxuXHR2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cblx0ZnVuY3Rpb24gY2xhc3NOYW1lcyAoKSB7XG5cdFx0dmFyIGNsYXNzZXMgPSAnJztcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0aWYgKGFyZykge1xuXHRcdFx0XHRjbGFzc2VzID0gYXBwZW5kQ2xhc3MoY2xhc3NlcywgcGFyc2VWYWx1ZShhcmcpKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY2xhc3Nlcztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlVmFsdWUgKGFyZykge1xuXHRcdGlmICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuXHRcdFx0cmV0dXJuIGFyZztcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIGFyZyAhPT0gJ29iamVjdCcpIHtcblx0XHRcdHJldHVybiAnJztcblx0XHR9XG5cblx0XHRpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0XHRyZXR1cm4gY2xhc3NOYW1lcy5hcHBseShudWxsLCBhcmcpO1xuXHRcdH1cblxuXHRcdGlmIChhcmcudG9TdHJpbmcgIT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcgJiYgIWFyZy50b1N0cmluZy50b1N0cmluZygpLmluY2x1ZGVzKCdbbmF0aXZlIGNvZGVdJykpIHtcblx0XHRcdHJldHVybiBhcmcudG9TdHJpbmcoKTtcblx0XHR9XG5cblx0XHR2YXIgY2xhc3NlcyA9ICcnO1xuXG5cdFx0Zm9yICh2YXIga2V5IGluIGFyZykge1xuXHRcdFx0aWYgKGhhc093bi5jYWxsKGFyZywga2V5KSAmJiBhcmdba2V5XSkge1xuXHRcdFx0XHRjbGFzc2VzID0gYXBwZW5kQ2xhc3MoY2xhc3Nlcywga2V5KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY2xhc3Nlcztcblx0fVxuXG5cdGZ1bmN0aW9uIGFwcGVuZENsYXNzICh2YWx1ZSwgbmV3Q2xhc3MpIHtcblx0XHRpZiAoIW5ld0NsYXNzKSB7XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fVxuXHRcblx0XHRpZiAodmFsdWUpIHtcblx0XHRcdHJldHVybiB2YWx1ZSArICcgJyArIG5ld0NsYXNzO1xuXHRcdH1cblx0XG5cdFx0cmV0dXJuIHZhbHVlICsgbmV3Q2xhc3M7XG5cdH1cblxuXHRpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRjbGFzc05hbWVzLmRlZmF1bHQgPSBjbGFzc05hbWVzO1xuXHRcdG1vZHVsZS5leHBvcnRzID0gY2xhc3NOYW1lcztcblx0fSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09PSAnb2JqZWN0JyAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gcmVnaXN0ZXIgYXMgJ2NsYXNzbmFtZXMnLCBjb25zaXN0ZW50IHdpdGggbnBtIHBhY2thZ2UgbmFtZVxuXHRcdGRlZmluZSgnY2xhc3NuYW1lcycsIFtdLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gY2xhc3NOYW1lcztcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHR3aW5kb3cuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG5cdH1cbn0oKSk7XG4iLCJmdW5jdGlvbiBkZWJvdW5jZShmdW5jdGlvbl8sIHdhaXQgPSAxMDAsIG9wdGlvbnMgPSB7fSkge1xuXHRpZiAodHlwZW9mIGZ1bmN0aW9uXyAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYEV4cGVjdGVkIHRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8gYmUgYSBmdW5jdGlvbiwgZ290IFxcYCR7dHlwZW9mIGZ1bmN0aW9uX31cXGAuYCk7XG5cdH1cblxuXHRpZiAod2FpdCA8IDApIHtcblx0XHR0aHJvdyBuZXcgUmFuZ2VFcnJvcignYHdhaXRgIG11c3Qgbm90IGJlIG5lZ2F0aXZlLicpO1xuXHR9XG5cblx0Ly8gVE9ETzogRGVwcmVjYXRlIHRoZSBib29sZWFuIHBhcmFtZXRlciBhdCBzb21lIHBvaW50LlxuXHRjb25zdCB7aW1tZWRpYXRlfSA9IHR5cGVvZiBvcHRpb25zID09PSAnYm9vbGVhbicgPyB7aW1tZWRpYXRlOiBvcHRpb25zfSA6IG9wdGlvbnM7XG5cblx0bGV0IHN0b3JlZENvbnRleHQ7XG5cdGxldCBzdG9yZWRBcmd1bWVudHM7XG5cdGxldCB0aW1lb3V0SWQ7XG5cdGxldCB0aW1lc3RhbXA7XG5cdGxldCByZXN1bHQ7XG5cblx0ZnVuY3Rpb24gcnVuKCkge1xuXHRcdGNvbnN0IGNhbGxDb250ZXh0ID0gc3RvcmVkQ29udGV4dDtcblx0XHRjb25zdCBjYWxsQXJndW1lbnRzID0gc3RvcmVkQXJndW1lbnRzO1xuXHRcdHN0b3JlZENvbnRleHQgPSB1bmRlZmluZWQ7XG5cdFx0c3RvcmVkQXJndW1lbnRzID0gdW5kZWZpbmVkO1xuXHRcdHJlc3VsdCA9IGZ1bmN0aW9uXy5hcHBseShjYWxsQ29udGV4dCwgY2FsbEFyZ3VtZW50cyk7XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdGZ1bmN0aW9uIGxhdGVyKCkge1xuXHRcdGNvbnN0IGxhc3QgPSBEYXRlLm5vdygpIC0gdGltZXN0YW1wO1xuXG5cdFx0aWYgKGxhc3QgPCB3YWl0ICYmIGxhc3QgPj0gMCkge1xuXHRcdFx0dGltZW91dElkID0gc2V0VGltZW91dChsYXRlciwgd2FpdCAtIGxhc3QpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aW1lb3V0SWQgPSB1bmRlZmluZWQ7XG5cblx0XHRcdGlmICghaW1tZWRpYXRlKSB7XG5cdFx0XHRcdHJlc3VsdCA9IHJ1bigpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGNvbnN0IGRlYm91bmNlZCA9IGZ1bmN0aW9uICguLi5hcmd1bWVudHNfKSB7XG5cdFx0aWYgKHN0b3JlZENvbnRleHQgJiYgdGhpcyAhPT0gc3RvcmVkQ29udGV4dCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdEZWJvdW5jZWQgbWV0aG9kIGNhbGxlZCB3aXRoIGRpZmZlcmVudCBjb250ZXh0cy4nKTtcblx0XHR9XG5cblx0XHRzdG9yZWRDb250ZXh0ID0gdGhpczsgLy8gZXNsaW50LWRpc2FibGUtbGluZSB1bmljb3JuL25vLXRoaXMtYXNzaWdubWVudFxuXHRcdHN0b3JlZEFyZ3VtZW50cyA9IGFyZ3VtZW50c187XG5cdFx0dGltZXN0YW1wID0gRGF0ZS5ub3coKTtcblxuXHRcdGNvbnN0IGNhbGxOb3cgPSBpbW1lZGlhdGUgJiYgIXRpbWVvdXRJZDtcblxuXHRcdGlmICghdGltZW91dElkKSB7XG5cdFx0XHR0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0KTtcblx0XHR9XG5cblx0XHRpZiAoY2FsbE5vdykge1xuXHRcdFx0cmVzdWx0ID0gcnVuKCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fTtcblxuXHRkZWJvdW5jZWQuY2xlYXIgPSAoKSA9PiB7XG5cdFx0aWYgKCF0aW1lb3V0SWQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjbGVhclRpbWVvdXQodGltZW91dElkKTtcblx0XHR0aW1lb3V0SWQgPSB1bmRlZmluZWQ7XG5cdH07XG5cblx0ZGVib3VuY2VkLmZsdXNoID0gKCkgPT4ge1xuXHRcdGlmICghdGltZW91dElkKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0ZGVib3VuY2VkLnRyaWdnZXIoKTtcblx0fTtcblxuXHRkZWJvdW5jZWQudHJpZ2dlciA9ICgpID0+IHtcblx0XHRyZXN1bHQgPSBydW4oKTtcblxuXHRcdGRlYm91bmNlZC5jbGVhcigpO1xuXHR9O1xuXG5cdHJldHVybiBkZWJvdW5jZWQ7XG59XG5cbi8vIEFkZHMgY29tcGF0aWJpbGl0eSBmb3IgRVMgbW9kdWxlc1xubW9kdWxlLmV4cG9ydHMuZGVib3VuY2UgPSBkZWJvdW5jZTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWJvdW5jZTtcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2RlYm91bmNlJztcbmltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuXG52YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmTm9ybWFsUHJvcCA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3Aob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fcHVibGljRmllbGQgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBfX2RlZk5vcm1hbFByb3Aob2JqLCB0eXBlb2Yga2V5ICE9PSBcInN5bWJvbFwiID8ga2V5ICsgXCJcIiA6IGtleSwgdmFsdWUpO1xuY29uc3QgU0NST0xMX0VORF9ERUJPVU5DRSA9IDMwMDtcbmNvbnN0IExFRlRfQlVUVE9OID0gMDtcbmNsYXNzIFNjcm9sbENvbnRhaW5lciBleHRlbmRzIFB1cmVDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwiY29udGFpbmVyXCIpO1xuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJzY3JvbGxpbmdcIik7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcInN0YXJ0ZWRcIik7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcInByZXNzZWRcIik7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcImlzTW9iaWxlXCIsIGZhbHNlKTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwiaW50ZXJuYWxcIik7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcInNjcm9sbExlZnRcIik7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcInNjcm9sbFRvcFwiKTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwiY2xpZW50WFwiKTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwiY2xpZW50WVwiKTtcbiAgICAvLyBTaW11bGF0ZSAnb25FbmRTY3JvbGwnIGV2ZW50IHRoYXQgZmlyZXMgd2hlbiBzY3JvbGxpbmcgaXMgc3RvcHBlZFxuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJvbkVuZFNjcm9sbFwiLCAoKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbGluZyA9IGZhbHNlO1xuICAgICAgaWYgKCF0aGlzLnByZXNzZWQgJiYgdGhpcy5zdGFydGVkKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc0VuZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJvblNjcm9sbFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lci5jdXJyZW50O1xuICAgICAgaWYgKGNvbnRhaW5lci5zY3JvbGxMZWZ0ICE9PSB0aGlzLnNjcm9sbExlZnQgfHwgY29udGFpbmVyLnNjcm9sbFRvcCAhPT0gdGhpcy5zY3JvbGxUb3ApIHtcbiAgICAgICAgdGhpcy5zY3JvbGxpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnByb2Nlc3NTY3JvbGwoKTtcbiAgICAgICAgdGhpcy5vbkVuZFNjcm9sbCgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJvblRvdWNoU3RhcnRcIiwgKGUpID0+IHtcbiAgICAgIGNvbnN0IHsgbmF0aXZlTW9iaWxlU2Nyb2xsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgaWYgKHRoaXMuaXNEcmFnZ2FibGUoZS50YXJnZXQpKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWwgPSB0cnVlO1xuICAgICAgICBpZiAobmF0aXZlTW9iaWxlU2Nyb2xsICYmIHRoaXMuc2Nyb2xsaW5nKSB7XG4gICAgICAgICAgdGhpcy5wcmVzc2VkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB0b3VjaCA9IGUudG91Y2hlc1swXTtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NDbGljayh0b3VjaC5jbGllbnRYLCB0b3VjaC5jbGllbnRZKTtcbiAgICAgICAgICBpZiAoIW5hdGl2ZU1vYmlsZVNjcm9sbCAmJiB0aGlzLnByb3BzLnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwib25Ub3VjaEVuZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IG5hdGl2ZU1vYmlsZVNjcm9sbCB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGlmICh0aGlzLnByZXNzZWQpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhcnRlZCAmJiAoIXRoaXMuc2Nyb2xsaW5nIHx8ICFuYXRpdmVNb2JpbGVTY3JvbGwpKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzRW5kKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5wcmVzc2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJvblRvdWNoTW92ZVwiLCAoZSkgPT4ge1xuICAgICAgY29uc3QgeyBuYXRpdmVNb2JpbGVTY3JvbGwgfSA9IHRoaXMucHJvcHM7XG4gICAgICBpZiAodGhpcy5wcmVzc2VkICYmICghbmF0aXZlTW9iaWxlU2Nyb2xsIHx8ICF0aGlzLmlzTW9iaWxlKSkge1xuICAgICAgICBjb25zdCB0b3VjaCA9IGUudG91Y2hlc1swXTtcbiAgICAgICAgaWYgKHRvdWNoKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzTW92ZSh0b3VjaC5jbGllbnRYLCB0b3VjaC5jbGllbnRZKTtcbiAgICAgICAgfVxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwib25Nb3VzZURvd25cIiwgKGUpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzRHJhZ2dhYmxlKGUudGFyZ2V0KSAmJiB0aGlzLmlzU2Nyb2xsYWJsZSgpKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWwgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5wcm9wcz8uYnV0dG9ucz8uaW5kZXhPZihlLmJ1dHRvbikgIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzQ2xpY2soZS5jbGllbnRYLCBlLmNsaWVudFkpO1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBpZiAodGhpcy5wcm9wcy5zdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcIm9uTW91c2VNb3ZlXCIsIChlKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcmVzc2VkKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc01vdmUoZS5jbGllbnRYLCBlLmNsaWVudFkpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwib25Nb3VzZVVwXCIsIChlKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcmVzc2VkKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXJ0ZWQpIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NFbmQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmludGVybmFsID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5wcmVzc2VkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uQ2xpY2spIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25DbGljayhlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5zdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5jb250YWluZXIgPSBSZWFjdC5jcmVhdGVSZWYoKTtcbiAgICB0aGlzLm9uRW5kU2Nyb2xsID0gZGVib3VuY2UodGhpcy5vbkVuZFNjcm9sbCwgU0NST0xMX0VORF9ERUJPVU5DRSk7XG4gICAgdGhpcy5zY3JvbGxpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnN0YXJ0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnByZXNzZWQgPSBmYWxzZTtcbiAgICB0aGlzLmludGVybmFsID0gZmFsc2U7XG4gICAgdGhpcy5nZXRSZWYgPSB0aGlzLmdldFJlZi5iaW5kKHRoaXMpO1xuICB9XG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIGNvbnN0IHsgbmF0aXZlTW9iaWxlU2Nyb2xsIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyLmN1cnJlbnQ7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMub25Nb3VzZVVwKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLm9uTW91c2VNb3ZlKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCB0aGlzLm9uVG91Y2hNb3ZlLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIiwgdGhpcy5vblRvdWNoRW5kKTtcbiAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIiwgdGhpcy5vblRvdWNoU3RhcnQsIHtcbiAgICAgIHBhc3NpdmU6IGZhbHNlXG4gICAgfSk7XG4gICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgdGhpcy5vbk1vdXNlRG93biwge1xuICAgICAgcGFzc2l2ZTogZmFsc2VcbiAgICB9KTtcbiAgICBpZiAobmF0aXZlTW9iaWxlU2Nyb2xsKSB7XG4gICAgICB0aGlzLmlzTW9iaWxlID0gdGhpcy5pc01vYmlsZURldmljZSgpO1xuICAgICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgdGhpcy5vbk1vdXNlVXApO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMub25Nb3VzZU1vdmUpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIHRoaXMub25Ub3VjaE1vdmUpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIiwgdGhpcy5vblRvdWNoRW5kKTtcbiAgfVxuICBnZXRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRhaW5lci5jdXJyZW50O1xuICB9XG4gIGlzTW9iaWxlRGV2aWNlKCkge1xuICAgIHJldHVybiB0eXBlb2Ygd2luZG93Lm9yaWVudGF0aW9uICE9PSBcInVuZGVmaW5lZFwiIHx8IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihcIklFTW9iaWxlXCIpICE9PSAtMTtcbiAgfVxuICBpc0RyYWdnYWJsZSh0YXJnZXQpIHtcbiAgICBjb25zdCBpZ25vcmVFbGVtZW50cyA9IHRoaXMucHJvcHMuaWdub3JlRWxlbWVudHM7XG4gICAgaWYgKGlnbm9yZUVsZW1lbnRzKSB7XG4gICAgICBjb25zdCBjbG9zZXN0ID0gdGFyZ2V0LmNsb3Nlc3QoaWdub3JlRWxlbWVudHMpO1xuICAgICAgcmV0dXJuIGNsb3Nlc3QgPT09IG51bGwgfHwgY2xvc2VzdC5jb250YWlucyh0aGlzLmdldEVsZW1lbnQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBpc1Njcm9sbGFibGUoKSB7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jb250YWluZXIuY3VycmVudDtcbiAgICByZXR1cm4gY29udGFpbmVyICYmIChjb250YWluZXIuc2Nyb2xsV2lkdGggPiBjb250YWluZXIuY2xpZW50V2lkdGggfHwgY29udGFpbmVyLnNjcm9sbEhlaWdodCA+IGNvbnRhaW5lci5jbGllbnRIZWlnaHQpO1xuICB9XG4gIHByb2Nlc3NDbGljayhjbGllbnRYLCBjbGllbnRZKSB7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jb250YWluZXIuY3VycmVudDtcbiAgICB0aGlzLnNjcm9sbExlZnQgPSBjb250YWluZXI/LnNjcm9sbExlZnQ7XG4gICAgdGhpcy5zY3JvbGxUb3AgPSBjb250YWluZXI/LnNjcm9sbFRvcDtcbiAgICB0aGlzLmNsaWVudFggPSBjbGllbnRYO1xuICAgIHRoaXMuY2xpZW50WSA9IGNsaWVudFk7XG4gICAgdGhpcy5wcmVzc2VkID0gdHJ1ZTtcbiAgfVxuICBwcm9jZXNzU3RhcnQoY2hhbmdlQ3Vyc29yID0gdHJ1ZSkge1xuICAgIGNvbnN0IHsgb25TdGFydFNjcm9sbCB9ID0gdGhpcy5wcm9wcztcbiAgICB0aGlzLnN0YXJ0ZWQgPSB0cnVlO1xuICAgIGlmIChjaGFuZ2VDdXJzb3IpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChcImN1cnNvci1ncmFiXCIpO1xuICAgIH1cbiAgICBpZiAob25TdGFydFNjcm9sbCkge1xuICAgICAgb25TdGFydFNjcm9sbCh7XG4gICAgICAgIGV4dGVybmFsOiAhdGhpcy5pbnRlcm5hbFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcbiAgfVxuICAvLyBQcm9jZXNzIG5hdGl2ZSBzY3JvbGwgKHNjcm9sbGJhciwgbW9iaWxlIHNjcm9sbClcbiAgcHJvY2Vzc1Njcm9sbCgpIHtcbiAgICBpZiAodGhpcy5zdGFydGVkKSB7XG4gICAgICBjb25zdCB7IG9uU2Nyb2xsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgaWYgKG9uU2Nyb2xsKSB7XG4gICAgICAgIG9uU2Nyb2xsKHtcbiAgICAgICAgICBleHRlcm5hbDogIXRoaXMuaW50ZXJuYWxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvY2Vzc1N0YXJ0KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgLy8gUHJvY2VzcyBub24tbmF0aXZlIHNjcm9sbFxuICBwcm9jZXNzTW92ZShuZXdDbGllbnRYLCBuZXdDbGllbnRZKSB7XG4gICAgY29uc3QgeyBob3Jpem9udGFsLCB2ZXJ0aWNhbCwgYWN0aXZhdGlvbkRpc3RhbmNlLCBvblNjcm9sbCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lci5jdXJyZW50O1xuICAgIGlmICghdGhpcy5zdGFydGVkKSB7XG4gICAgICBpZiAoaG9yaXpvbnRhbCAmJiBNYXRoLmFicyhuZXdDbGllbnRYIC0gdGhpcy5jbGllbnRYKSA+IGFjdGl2YXRpb25EaXN0YW5jZSB8fCB2ZXJ0aWNhbCAmJiBNYXRoLmFicyhuZXdDbGllbnRZIC0gdGhpcy5jbGllbnRZKSA+IGFjdGl2YXRpb25EaXN0YW5jZSkge1xuICAgICAgICB0aGlzLmNsaWVudFggPSBuZXdDbGllbnRYO1xuICAgICAgICB0aGlzLmNsaWVudFkgPSBuZXdDbGllbnRZO1xuICAgICAgICB0aGlzLnByb2Nlc3NTdGFydCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaG9yaXpvbnRhbCkge1xuICAgICAgICBjb250YWluZXIuc2Nyb2xsTGVmdCAtPSBuZXdDbGllbnRYIC0gdGhpcy5jbGllbnRYO1xuICAgICAgfVxuICAgICAgaWYgKHZlcnRpY2FsKSB7XG4gICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgLT0gbmV3Q2xpZW50WSAtIHRoaXMuY2xpZW50WTtcbiAgICAgIH1cbiAgICAgIGlmIChvblNjcm9sbCkge1xuICAgICAgICBvblNjcm9sbCh7IGV4dGVybmFsOiAhdGhpcy5pbnRlcm5hbCB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2xpZW50WCA9IG5ld0NsaWVudFg7XG4gICAgICB0aGlzLmNsaWVudFkgPSBuZXdDbGllbnRZO1xuICAgICAgdGhpcy5zY3JvbGxMZWZ0ID0gY29udGFpbmVyLnNjcm9sbExlZnQ7XG4gICAgICB0aGlzLnNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XG4gICAgfVxuICB9XG4gIHByb2Nlc3NFbmQoKSB7XG4gICAgY29uc3QgeyBvbkVuZFNjcm9sbCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lci5jdXJyZW50O1xuICAgIGlmIChjb250YWluZXIgJiYgb25FbmRTY3JvbGwpIHtcbiAgICAgIG9uRW5kU2Nyb2xsKHtcbiAgICAgICAgZXh0ZXJuYWw6ICF0aGlzLmludGVybmFsXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5wcmVzc2VkID0gZmFsc2U7XG4gICAgdGhpcy5zdGFydGVkID0gZmFsc2U7XG4gICAgdGhpcy5zY3JvbGxpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmludGVybmFsID0gZmFsc2U7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKFwiY3Vyc29yLWdyYWJcIik7XG4gICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICB9XG4gIGdldFJlZihlbCkge1xuICAgIFt0aGlzLmNvbnRhaW5lciwgdGhpcy5wcm9wcy5pbm5lclJlZl0uZm9yRWFjaCgocmVmKSA9PiB7XG4gICAgICBpZiAocmVmKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcmVmID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICByZWYoZWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlZi5jdXJyZW50ID0gZWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBjaGlsZHJlbiwgZHJhZ2dpbmdDbGFzc05hbWUsIGNsYXNzTmFtZSwgc3R5bGUsIGhpZGVTY3JvbGxiYXJzIH0gPSB0aGlzLnByb3BzO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgXCJkaXZcIixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc25hbWVzKGNsYXNzTmFtZSwgdGhpcy5wcmVzc2VkICYmIGRyYWdnaW5nQ2xhc3NOYW1lLCB7XG4gICAgICAgICAgXCIhc2Nyb2xsLWF1dG8gWyY+Kl06cG9pbnRlci1ldmVudHMtbm9uZSBbJj4qXTpjdXJzb3ItZ3JhYlwiOiB0aGlzLnByZXNzZWQsXG4gICAgICAgICAgXCJvdmVyZmxvdy1hdXRvXCI6IHRoaXMuaXNNb2JpbGUsXG4gICAgICAgICAgXCJvdmVyZmxvdy1oaWRkZW4gIW92ZXJmbG93LXgtaGlkZGVuIFtvdmVyZmxvdzotbW96LXNjcm9sbGJhcnMtbm9uZV0gW3Njcm9sbGJhci13aWR0aDpub25lXVwiOiBoaWRlU2Nyb2xsYmFycyxcbiAgICAgICAgICBcIlsmOjotd2Via2l0LXNjcm9sbGJhcl06Wy13ZWJraXQtYXBwZWFyYW5jZTpub25lICFpbXBvcnRhbnRdIFsmOjotd2Via2l0LXNjcm9sbGJhcl06IWhpZGRlbiBbJjo6LXdlYmtpdC1zY3JvbGxiYXJdOiFoLTAgWyY6Oi13ZWJraXQtc2Nyb2xsYmFyXTohdy0wIFsmOjotd2Via2l0LXNjcm9sbGJhcl06IWJnLXRyYW5zcGFyZW50XCI6IGhpZGVTY3JvbGxiYXJzXG4gICAgICAgIH0pLFxuICAgICAgICBzdHlsZSxcbiAgICAgICAgcmVmOiB0aGlzLmdldFJlZixcbiAgICAgICAgb25TY3JvbGw6IHRoaXMub25TY3JvbGwsXG4gICAgICAgIGNoaWxkcmVuXG4gICAgICB9XG4gICAgKTtcbiAgfVxufVxuX19wdWJsaWNGaWVsZChTY3JvbGxDb250YWluZXIsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgbmF0aXZlTW9iaWxlU2Nyb2xsOiB0cnVlLFxuICBoaWRlU2Nyb2xsYmFyczogdHJ1ZSxcbiAgYWN0aXZhdGlvbkRpc3RhbmNlOiAxMCxcbiAgdmVydGljYWw6IHRydWUsXG4gIGhvcml6b250YWw6IHRydWUsXG4gIHN0b3BQcm9wYWdhdGlvbjogZmFsc2UsXG4gIHN0eWxlOiB7fSxcbiAgYnV0dG9uczogW0xFRlRfQlVUVE9OXVxufSk7XG5cbmV4cG9ydCB7IFNjcm9sbENvbnRhaW5lciBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBDaGVja2JveCA9IGZvcndhcmRSZWYoXG4gICh7IGNsYXNzTmFtZSwgY29sb3IgPSBcImRlZmF1bHRcIiwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuY2hlY2tib3gsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwiaW5wdXRcIixcbiAgICAgIHtcbiAgICAgICAgcmVmLFxuICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmJhc2UsIHRoZW1lLnJvb3QuY29sb3JbY29sb3JdLCBjbGFzc05hbWUpLFxuICAgICAgICAuLi5wcm9wc1xuICAgICAgfVxuICAgICk7XG4gIH1cbik7XG5DaGVja2JveC5kaXNwbGF5TmFtZSA9IFwiQ2hlY2tib3hcIjtcblxuZXhwb3J0IHsgQ2hlY2tib3ggfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNoZWNrYm94Lm1qcy5tYXBcbiIsImltcG9ydCB7IGlzU2hhZG93Um9vdCwgaXNIVE1MRWxlbWVudCB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuXG5mdW5jdGlvbiBhY3RpdmVFbGVtZW50KGRvYykge1xuICBsZXQgYWN0aXZlRWxlbWVudCA9IGRvYy5hY3RpdmVFbGVtZW50O1xuICB3aGlsZSAoKChfYWN0aXZlRWxlbWVudCA9IGFjdGl2ZUVsZW1lbnQpID09IG51bGwgfHwgKF9hY3RpdmVFbGVtZW50ID0gX2FjdGl2ZUVsZW1lbnQuc2hhZG93Um9vdCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hY3RpdmVFbGVtZW50LmFjdGl2ZUVsZW1lbnQpICE9IG51bGwpIHtcbiAgICB2YXIgX2FjdGl2ZUVsZW1lbnQ7XG4gICAgYWN0aXZlRWxlbWVudCA9IGFjdGl2ZUVsZW1lbnQuc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50O1xuICB9XG4gIHJldHVybiBhY3RpdmVFbGVtZW50O1xufVxuZnVuY3Rpb24gY29udGFpbnMocGFyZW50LCBjaGlsZCkge1xuICBpZiAoIXBhcmVudCB8fCAhY2hpbGQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3Qgcm9vdE5vZGUgPSBjaGlsZC5nZXRSb290Tm9kZSA9PSBudWxsID8gdm9pZCAwIDogY2hpbGQuZ2V0Um9vdE5vZGUoKTtcblxuICAvLyBGaXJzdCwgYXR0ZW1wdCB3aXRoIGZhc3RlciBuYXRpdmUgbWV0aG9kXG4gIGlmIChwYXJlbnQuY29udGFpbnMoY2hpbGQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyB0aGVuIGZhbGxiYWNrIHRvIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiB3aXRoIFNoYWRvdyBET00gc3VwcG9ydFxuICBpZiAocm9vdE5vZGUgJiYgaXNTaGFkb3dSb290KHJvb3ROb2RlKSkge1xuICAgIGxldCBuZXh0ID0gY2hpbGQ7XG4gICAgd2hpbGUgKG5leHQpIHtcbiAgICAgIGlmIChwYXJlbnQgPT09IG5leHQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBuZXh0ID0gbmV4dC5wYXJlbnROb2RlIHx8IG5leHQuaG9zdDtcbiAgICB9XG4gIH1cblxuICAvLyBHaXZlIHVwLCB0aGUgcmVzdWx0IGlzIGZhbHNlXG4gIHJldHVybiBmYWxzZTtcbn1cbi8vIEF2b2lkIENocm9tZSBEZXZUb29scyBibHVlIHdhcm5pbmcuXG5mdW5jdGlvbiBnZXRQbGF0Zm9ybSgpIHtcbiAgY29uc3QgdWFEYXRhID0gbmF2aWdhdG9yLnVzZXJBZ2VudERhdGE7XG4gIGlmICh1YURhdGEgIT0gbnVsbCAmJiB1YURhdGEucGxhdGZvcm0pIHtcbiAgICByZXR1cm4gdWFEYXRhLnBsYXRmb3JtO1xuICB9XG4gIHJldHVybiBuYXZpZ2F0b3IucGxhdGZvcm07XG59XG5mdW5jdGlvbiBnZXRVc2VyQWdlbnQoKSB7XG4gIGNvbnN0IHVhRGF0YSA9IG5hdmlnYXRvci51c2VyQWdlbnREYXRhO1xuICBpZiAodWFEYXRhICYmIEFycmF5LmlzQXJyYXkodWFEYXRhLmJyYW5kcykpIHtcbiAgICByZXR1cm4gdWFEYXRhLmJyYW5kcy5tYXAoX3JlZiA9PiB7XG4gICAgICBsZXQge1xuICAgICAgICBicmFuZCxcbiAgICAgICAgdmVyc2lvblxuICAgICAgfSA9IF9yZWY7XG4gICAgICByZXR1cm4gYnJhbmQgKyBcIi9cIiArIHZlcnNpb247XG4gICAgfSkuam9pbignICcpO1xuICB9XG4gIHJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50O1xufVxuXG4vLyBMaWNlbnNlOiBodHRwczovL2dpdGh1Yi5jb20vYWRvYmUvcmVhY3Qtc3BlY3RydW0vYmxvYi9iMzVkNWMwMmZlOTAwYmFkY2NkMGNmMWE4ZjIzYmI1OTM0MTlmMjM4L3BhY2thZ2VzL0ByZWFjdC1hcmlhL3V0aWxzL3NyYy9pc1ZpcnR1YWxFdmVudC50c1xuZnVuY3Rpb24gaXNWaXJ0dWFsQ2xpY2soZXZlbnQpIHtcbiAgLy8gRklYTUU6IEZpcmVmb3ggaXMgbm93IGVtaXR0aW5nIGEgZGVwcmVjYXRpb24gd2FybmluZyBmb3IgYG1veklucHV0U291cmNlYC5cbiAgLy8gVHJ5IHRvIGZpbmQgYSB3b3JrYXJvdW5kIGZvciB0aGlzLiBgcmVhY3QtYXJpYWAgc291cmNlIHN0aWxsIGhhcyB0aGUgY2hlY2suXG4gIGlmIChldmVudC5tb3pJbnB1dFNvdXJjZSA9PT0gMCAmJiBldmVudC5pc1RydXN0ZWQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoaXNBbmRyb2lkKCkgJiYgZXZlbnQucG9pbnRlclR5cGUpIHtcbiAgICByZXR1cm4gZXZlbnQudHlwZSA9PT0gJ2NsaWNrJyAmJiBldmVudC5idXR0b25zID09PSAxO1xuICB9XG4gIHJldHVybiBldmVudC5kZXRhaWwgPT09IDAgJiYgIWV2ZW50LnBvaW50ZXJUeXBlO1xufVxuZnVuY3Rpb24gaXNWaXJ0dWFsUG9pbnRlckV2ZW50KGV2ZW50KSB7XG4gIGlmIChpc0pTRE9NKCkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuICFpc0FuZHJvaWQoKSAmJiBldmVudC53aWR0aCA9PT0gMCAmJiBldmVudC5oZWlnaHQgPT09IDAgfHwgaXNBbmRyb2lkKCkgJiYgZXZlbnQud2lkdGggPT09IDEgJiYgZXZlbnQuaGVpZ2h0ID09PSAxICYmIGV2ZW50LnByZXNzdXJlID09PSAwICYmIGV2ZW50LmRldGFpbCA9PT0gMCAmJiBldmVudC5wb2ludGVyVHlwZSA9PT0gJ21vdXNlJyB8fFxuICAvLyBpT1MgVm9pY2VPdmVyIHJldHVybnMgMC4zMzPigKIgZm9yIHdpZHRoL2hlaWdodC5cbiAgZXZlbnQud2lkdGggPCAxICYmIGV2ZW50LmhlaWdodCA8IDEgJiYgZXZlbnQucHJlc3N1cmUgPT09IDAgJiYgZXZlbnQuZGV0YWlsID09PSAwICYmIGV2ZW50LnBvaW50ZXJUeXBlID09PSAndG91Y2gnO1xufVxuZnVuY3Rpb24gaXNTYWZhcmkoKSB7XG4gIC8vIENocm9tZSBEZXZUb29scyBkb2VzIG5vdCBjb21wbGFpbiBhYm91dCBuYXZpZ2F0b3IudmVuZG9yXG4gIHJldHVybiAvYXBwbGUvaS50ZXN0KG5hdmlnYXRvci52ZW5kb3IpO1xufVxuZnVuY3Rpb24gaXNBbmRyb2lkKCkge1xuICBjb25zdCByZSA9IC9hbmRyb2lkL2k7XG4gIHJldHVybiByZS50ZXN0KGdldFBsYXRmb3JtKCkpIHx8IHJlLnRlc3QoZ2V0VXNlckFnZW50KCkpO1xufVxuZnVuY3Rpb24gaXNNYWMoKSB7XG4gIHJldHVybiBnZXRQbGF0Zm9ybSgpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnbWFjJykgJiYgIW5hdmlnYXRvci5tYXhUb3VjaFBvaW50cztcbn1cbmZ1bmN0aW9uIGlzSlNET00oKSB7XG4gIHJldHVybiBnZXRVc2VyQWdlbnQoKS5pbmNsdWRlcygnanNkb20vJyk7XG59XG5mdW5jdGlvbiBpc01vdXNlTGlrZVBvaW50ZXJUeXBlKHBvaW50ZXJUeXBlLCBzdHJpY3QpIHtcbiAgLy8gT24gc29tZSBMaW51eCBtYWNoaW5lcyB3aXRoIENocm9taXVtLCBtb3VzZSBpbnB1dHMgcmV0dXJuIGEgYHBvaW50ZXJUeXBlYFxuICAvLyBvZiBcInBlblwiOiBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzIwMTVcbiAgY29uc3QgdmFsdWVzID0gWydtb3VzZScsICdwZW4nXTtcbiAgaWYgKCFzdHJpY3QpIHtcbiAgICB2YWx1ZXMucHVzaCgnJywgdW5kZWZpbmVkKTtcbiAgfVxuICByZXR1cm4gdmFsdWVzLmluY2x1ZGVzKHBvaW50ZXJUeXBlKTtcbn1cbmZ1bmN0aW9uIGlzUmVhY3RFdmVudChldmVudCkge1xuICByZXR1cm4gJ25hdGl2ZUV2ZW50JyBpbiBldmVudDtcbn1cbmZ1bmN0aW9uIGlzUm9vdEVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gZWxlbWVudC5tYXRjaGVzKCdodG1sLGJvZHknKTtcbn1cbmZ1bmN0aW9uIGdldERvY3VtZW50KG5vZGUpIHtcbiAgcmV0dXJuIChub2RlID09IG51bGwgPyB2b2lkIDAgOiBub2RlLm93bmVyRG9jdW1lbnQpIHx8IGRvY3VtZW50O1xufVxuZnVuY3Rpb24gaXNFdmVudFRhcmdldFdpdGhpbihldmVudCwgbm9kZSkge1xuICBpZiAobm9kZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICgnY29tcG9zZWRQYXRoJyBpbiBldmVudCkge1xuICAgIHJldHVybiBldmVudC5jb21wb3NlZFBhdGgoKS5pbmNsdWRlcyhub2RlKTtcbiAgfVxuXG4gIC8vIFRTIHRoaW5rcyBgZXZlbnRgIGlzIG9mIHR5cGUgbmV2ZXIgYXMgaXQgYXNzdW1lcyBhbGwgYnJvd3NlcnMgc3VwcG9ydCBjb21wb3NlZFBhdGgsIGJ1dCBicm93c2VycyB3aXRob3V0IHNoYWRvdyBkb20gZG9uJ3RcbiAgY29uc3QgZSA9IGV2ZW50O1xuICByZXR1cm4gZS50YXJnZXQgIT0gbnVsbCAmJiBub2RlLmNvbnRhaW5zKGUudGFyZ2V0KTtcbn1cbmZ1bmN0aW9uIGdldFRhcmdldChldmVudCkge1xuICBpZiAoJ2NvbXBvc2VkUGF0aCcgaW4gZXZlbnQpIHtcbiAgICByZXR1cm4gZXZlbnQuY29tcG9zZWRQYXRoKClbMF07XG4gIH1cblxuICAvLyBUUyB0aGlua3MgYGV2ZW50YCBpcyBvZiB0eXBlIG5ldmVyIGFzIGl0IGFzc3VtZXMgYWxsIGJyb3dzZXJzIHN1cHBvcnRcbiAgLy8gYGNvbXBvc2VkUGF0aCgpYCwgYnV0IGJyb3dzZXJzIHdpdGhvdXQgc2hhZG93IERPTSBkb24ndC5cbiAgcmV0dXJuIGV2ZW50LnRhcmdldDtcbn1cbmNvbnN0IFRZUEVBQkxFX1NFTEVDVE9SID0gXCJpbnB1dDpub3QoW3R5cGU9J2hpZGRlbiddKTpub3QoW2Rpc2FibGVkXSksXCIgKyBcIltjb250ZW50ZWRpdGFibGVdOm5vdChbY29udGVudGVkaXRhYmxlPSdmYWxzZSddKSx0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSlcIjtcbmZ1bmN0aW9uIGlzVHlwZWFibGVFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkgJiYgZWxlbWVudC5tYXRjaGVzKFRZUEVBQkxFX1NFTEVDVE9SKTtcbn1cbmZ1bmN0aW9uIHN0b3BFdmVudChldmVudCkge1xuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbn1cbmZ1bmN0aW9uIGlzVHlwZWFibGVDb21ib2JveChlbGVtZW50KSB7XG4gIGlmICghZWxlbWVudCkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3JvbGUnKSA9PT0gJ2NvbWJvYm94JyAmJiBpc1R5cGVhYmxlRWxlbWVudChlbGVtZW50KTtcbn1cblxuZXhwb3J0IHsgVFlQRUFCTEVfU0VMRUNUT1IsIGFjdGl2ZUVsZW1lbnQsIGNvbnRhaW5zLCBnZXREb2N1bWVudCwgZ2V0UGxhdGZvcm0sIGdldFRhcmdldCwgZ2V0VXNlckFnZW50LCBpc0FuZHJvaWQsIGlzRXZlbnRUYXJnZXRXaXRoaW4sIGlzSlNET00sIGlzTWFjLCBpc01vdXNlTGlrZVBvaW50ZXJUeXBlLCBpc1JlYWN0RXZlbnQsIGlzUm9vdEVsZW1lbnQsIGlzU2FmYXJpLCBpc1R5cGVhYmxlQ29tYm9ib3gsIGlzVHlwZWFibGVFbGVtZW50LCBpc1ZpcnR1YWxDbGljaywgaXNWaXJ0dWFsUG9pbnRlckV2ZW50LCBzdG9wRXZlbnQgfTtcbiIsIi8qIVxuKiB0YWJiYWJsZSA2LjIuMFxuKiBAbGljZW5zZSBNSVQsIGh0dHBzOi8vZ2l0aHViLmNvbS9mb2N1cy10cmFwL3RhYmJhYmxlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiovXG4vLyBOT1RFOiBzZXBhcmF0ZSBgOm5vdCgpYCBzZWxlY3RvcnMgaGFzIGJyb2FkZXIgYnJvd3NlciBzdXBwb3J0IHRoYW4gdGhlIG5ld2VyXG4vLyAgYDpub3QoW2luZXJ0XSwgW2luZXJ0XSAqKWAgKEZlYiAyMDIzKVxuLy8gQ0FSRUZVTDogSlNEb20gZG9lcyBub3Qgc3VwcG9ydCBgOm5vdChbaW5lcnRdICopYCBhcyBhIHNlbGVjdG9yOyB1c2luZyBpdCBjYXVzZXNcbi8vICB0aGUgZW50aXJlIHF1ZXJ5IHRvIGZhaWwsIHJlc3VsdGluZyBpbiBubyBub2RlcyBmb3VuZCwgd2hpY2ggd2lsbCBicmVhayBhIGxvdFxuLy8gIG9mIHRoaW5ncy4uLiBzbyB3ZSBoYXZlIHRvIHJlbHkgb24gSlMgdG8gaWRlbnRpZnkgbm9kZXMgaW5zaWRlIGFuIGluZXJ0IGNvbnRhaW5lclxudmFyIGNhbmRpZGF0ZVNlbGVjdG9ycyA9IFsnaW5wdXQ6bm90KFtpbmVydF0pJywgJ3NlbGVjdDpub3QoW2luZXJ0XSknLCAndGV4dGFyZWE6bm90KFtpbmVydF0pJywgJ2FbaHJlZl06bm90KFtpbmVydF0pJywgJ2J1dHRvbjpub3QoW2luZXJ0XSknLCAnW3RhYmluZGV4XTpub3Qoc2xvdCk6bm90KFtpbmVydF0pJywgJ2F1ZGlvW2NvbnRyb2xzXTpub3QoW2luZXJ0XSknLCAndmlkZW9bY29udHJvbHNdOm5vdChbaW5lcnRdKScsICdbY29udGVudGVkaXRhYmxlXTpub3QoW2NvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCJdKTpub3QoW2luZXJ0XSknLCAnZGV0YWlscz5zdW1tYXJ5OmZpcnN0LW9mLXR5cGU6bm90KFtpbmVydF0pJywgJ2RldGFpbHM6bm90KFtpbmVydF0pJ107XG52YXIgY2FuZGlkYXRlU2VsZWN0b3IgPSAvKiAjX19QVVJFX18gKi9jYW5kaWRhdGVTZWxlY3RvcnMuam9pbignLCcpO1xudmFyIE5vRWxlbWVudCA9IHR5cGVvZiBFbGVtZW50ID09PSAndW5kZWZpbmVkJztcbnZhciBtYXRjaGVzID0gTm9FbGVtZW50ID8gZnVuY3Rpb24gKCkge30gOiBFbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzIHx8IEVsZW1lbnQucHJvdG90eXBlLm1zTWF0Y2hlc1NlbGVjdG9yIHx8IEVsZW1lbnQucHJvdG90eXBlLndlYmtpdE1hdGNoZXNTZWxlY3RvcjtcbnZhciBnZXRSb290Tm9kZSA9ICFOb0VsZW1lbnQgJiYgRWxlbWVudC5wcm90b3R5cGUuZ2V0Um9vdE5vZGUgPyBmdW5jdGlvbiAoZWxlbWVudCkge1xuICB2YXIgX2VsZW1lbnQkZ2V0Um9vdE5vZGU7XG4gIHJldHVybiBlbGVtZW50ID09PSBudWxsIHx8IGVsZW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZWxlbWVudCRnZXRSb290Tm9kZSA9IGVsZW1lbnQuZ2V0Um9vdE5vZGUpID09PSBudWxsIHx8IF9lbGVtZW50JGdldFJvb3ROb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZWxlbWVudCRnZXRSb290Tm9kZS5jYWxsKGVsZW1lbnQpO1xufSA6IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50ID09PSBudWxsIHx8IGVsZW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVsZW1lbnQub3duZXJEb2N1bWVudDtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIG5vZGUgaXMgaW5lcnQgb3IgaW4gYW4gaW5lcnQgYW5jZXN0b3IuXG4gKiBAcGFyYW0ge0VsZW1lbnR9IFtub2RlXVxuICogQHBhcmFtIHtib29sZWFufSBbbG9va1VwXSBJZiB0cnVlIGFuZCBgbm9kZWAgaXMgbm90IGluZXJ0LCBsb29rcyB1cCBhdCBhbmNlc3RvcnMgdG9cbiAqICBzZWUgaWYgYW55IG9mIHRoZW0gYXJlIGluZXJ0LiBJZiBmYWxzZSwgb25seSBgbm9kZWAgaXRzZWxmIGlzIGNvbnNpZGVyZWQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBpbmVydCBpdHNlbGYgb3IgYnkgd2F5IG9mIGJlaW5nIGluIGFuIGluZXJ0IGFuY2VzdG9yLlxuICogIEZhbHNlIGlmIGBub2RlYCBpcyBmYWxzeS5cbiAqL1xudmFyIGlzSW5lcnQgPSBmdW5jdGlvbiBpc0luZXJ0KG5vZGUsIGxvb2tVcCkge1xuICB2YXIgX25vZGUkZ2V0QXR0cmlidXRlO1xuICBpZiAobG9va1VwID09PSB2b2lkIDApIHtcbiAgICBsb29rVXAgPSB0cnVlO1xuICB9XG4gIC8vIENBUkVGVUw6IEpTRG9tIGRvZXMgbm90IHN1cHBvcnQgaW5lcnQgYXQgYWxsLCBzbyB3ZSBjYW4ndCB1c2UgdGhlIGBIVE1MRWxlbWVudC5pbmVydGBcbiAgLy8gIEpTIEFQSSBwcm9wZXJ0eTsgd2UgaGF2ZSB0byBjaGVjayB0aGUgYXR0cmlidXRlLCB3aGljaCBjYW4gZWl0aGVyIGJlIGVtcHR5IG9yICd0cnVlJztcbiAgLy8gIGlmIGl0J3MgYG51bGxgIChub3Qgc3BlY2lmaWVkKSBvciAnZmFsc2UnLCBpdCdzIGFuIGFjdGl2ZSBlbGVtZW50XG4gIHZhciBpbmVydEF0dCA9IG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9ub2RlJGdldEF0dHJpYnV0ZSA9IG5vZGUuZ2V0QXR0cmlidXRlKSA9PT0gbnVsbCB8fCBfbm9kZSRnZXRBdHRyaWJ1dGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9ub2RlJGdldEF0dHJpYnV0ZS5jYWxsKG5vZGUsICdpbmVydCcpO1xuICB2YXIgaW5lcnQgPSBpbmVydEF0dCA9PT0gJycgfHwgaW5lcnRBdHQgPT09ICd0cnVlJztcblxuICAvLyBOT1RFOiB0aGlzIGNvdWxkIGFsc28gYmUgaGFuZGxlZCB3aXRoIGBub2RlLm1hdGNoZXMoJ1tpbmVydF0sIDppcyhbaW5lcnRdICopJylgXG4gIC8vICBpZiBpdCB3ZXJlbid0IGZvciBgbWF0Y2hlcygpYCBub3QgYmVpbmcgYSBmdW5jdGlvbiBvbiBzaGFkb3cgcm9vdHM7IHRoZSBmb2xsb3dpbmdcbiAgLy8gIGNvZGUgd29ya3MgZm9yIGFueSBraW5kIG9mIG5vZGVcbiAgLy8gQ0FSRUZVTDogSlNEb20gZG9lcyBub3QgYXBwZWFyIHRvIHN1cHBvcnQgY2VydGFpbiBzZWxlY3RvcnMgbGlrZSBgOm5vdChbaW5lcnRdICopYFxuICAvLyAgc28gaXQgbGlrZWx5IHdvdWxkIG5vdCBzdXBwb3J0IGA6aXMoW2luZXJ0XSAqKWAgZWl0aGVyLi4uXG4gIHZhciByZXN1bHQgPSBpbmVydCB8fCBsb29rVXAgJiYgbm9kZSAmJiBpc0luZXJ0KG5vZGUucGFyZW50Tm9kZSk7IC8vIHJlY3Vyc2l2ZVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgaWYgYSBub2RlJ3MgY29udGVudCBpcyBlZGl0YWJsZS5cbiAqIEBwYXJhbSB7RWxlbWVudH0gW25vZGVdXG4gKiBAcmV0dXJucyBUcnVlIGlmIGl0J3MgY29udGVudC1lZGl0YWJsZTsgZmFsc2UgaWYgaXQncyBub3Qgb3IgYG5vZGVgIGlzIGZhbHN5LlxuICovXG52YXIgaXNDb250ZW50RWRpdGFibGUgPSBmdW5jdGlvbiBpc0NvbnRlbnRFZGl0YWJsZShub2RlKSB7XG4gIHZhciBfbm9kZSRnZXRBdHRyaWJ1dGUyO1xuICAvLyBDQVJFRlVMOiBKU0RvbSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBgSFRNTEVsZW1lbnQuaXNDb250ZW50RWRpdGFibGVgIEFQSSBzbyB3ZSBoYXZlXG4gIC8vICB0byB1c2UgdGhlIGF0dHJpYnV0ZSBkaXJlY3RseSB0byBjaGVjayBmb3IgdGhpcywgd2hpY2ggY2FuIGVpdGhlciBiZSBlbXB0eSBvciAndHJ1ZSc7XG4gIC8vICBpZiBpdCdzIGBudWxsYCAobm90IHNwZWNpZmllZCkgb3IgJ2ZhbHNlJywgaXQncyBhIG5vbi1lZGl0YWJsZSBlbGVtZW50XG4gIHZhciBhdHRWYWx1ZSA9IG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9ub2RlJGdldEF0dHJpYnV0ZTIgPSBub2RlLmdldEF0dHJpYnV0ZSkgPT09IG51bGwgfHwgX25vZGUkZ2V0QXR0cmlidXRlMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX25vZGUkZ2V0QXR0cmlidXRlMi5jYWxsKG5vZGUsICdjb250ZW50ZWRpdGFibGUnKTtcbiAgcmV0dXJuIGF0dFZhbHVlID09PSAnJyB8fCBhdHRWYWx1ZSA9PT0gJ3RydWUnO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGVsIGNvbnRhaW5lciB0byBjaGVjayBpblxuICogQHBhcmFtIHtib29sZWFufSBpbmNsdWRlQ29udGFpbmVyIGFkZCBjb250YWluZXIgdG8gY2hlY2tcbiAqIEBwYXJhbSB7KG5vZGU6IEVsZW1lbnQpID0+IGJvb2xlYW59IGZpbHRlciBmaWx0ZXIgY2FuZGlkYXRlc1xuICogQHJldHVybnMge0VsZW1lbnRbXX1cbiAqL1xudmFyIGdldENhbmRpZGF0ZXMgPSBmdW5jdGlvbiBnZXRDYW5kaWRhdGVzKGVsLCBpbmNsdWRlQ29udGFpbmVyLCBmaWx0ZXIpIHtcbiAgLy8gZXZlbiBpZiBgaW5jbHVkZUNvbnRhaW5lcj1mYWxzZWAsIHdlIHN0aWxsIGhhdmUgdG8gY2hlY2sgaXQgZm9yIGluZXJ0bmVzcyBiZWNhdXNlXG4gIC8vICBpZiBpdCdzIGluZXJ0LCBhbGwgaXRzIGNoaWxkcmVuIGFyZSBpbmVydFxuICBpZiAoaXNJbmVydChlbCkpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgdmFyIGNhbmRpZGF0ZXMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoZWwucXVlcnlTZWxlY3RvckFsbChjYW5kaWRhdGVTZWxlY3RvcikpO1xuICBpZiAoaW5jbHVkZUNvbnRhaW5lciAmJiBtYXRjaGVzLmNhbGwoZWwsIGNhbmRpZGF0ZVNlbGVjdG9yKSkge1xuICAgIGNhbmRpZGF0ZXMudW5zaGlmdChlbCk7XG4gIH1cbiAgY2FuZGlkYXRlcyA9IGNhbmRpZGF0ZXMuZmlsdGVyKGZpbHRlcik7XG4gIHJldHVybiBjYW5kaWRhdGVzO1xufTtcblxuLyoqXG4gKiBAY2FsbGJhY2sgR2V0U2hhZG93Um9vdFxuICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IHRvIGNoZWNrIGZvciBzaGFkb3cgcm9vdFxuICogQHJldHVybnMge1NoYWRvd1Jvb3R8Ym9vbGVhbn0gU2hhZG93Um9vdCBpZiBhdmFpbGFibGUgb3IgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIGEgc2hhZG93Um9vdCBpcyBhdHRhY2hlZCBidXQgbm90IGF2YWlsYWJsZS5cbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBTaGFkb3dSb290RmlsdGVyXG4gKiBAcGFyYW0ge0VsZW1lbnR9IHNoYWRvd0hvc3ROb2RlIHRoZSBlbGVtZW50IHdoaWNoIGNvbnRhaW5zIHNoYWRvdyBjb250ZW50XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiBhIHNoYWRvdyByb290IGNvdWxkIHBvdGVudGlhbGx5IGNvbnRhaW4gdmFsaWQgY2FuZGlkYXRlcy5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENhbmRpZGF0ZVNjb3BlXG4gKiBAcHJvcGVydHkge0VsZW1lbnR9IHNjb3BlUGFyZW50IGNvbnRhaW5zIGlubmVyIGNhbmRpZGF0ZXNcbiAqIEBwcm9wZXJ0eSB7RWxlbWVudFtdfSBjYW5kaWRhdGVzIGxpc3Qgb2YgY2FuZGlkYXRlcyBmb3VuZCBpbiB0aGUgc2NvcGUgcGFyZW50XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBJdGVyYXRpdmVPcHRpb25zXG4gKiBAcHJvcGVydHkge0dldFNoYWRvd1Jvb3R8Ym9vbGVhbn0gZ2V0U2hhZG93Um9vdCB0cnVlIGlmIHNoYWRvdyBzdXBwb3J0IGlzIGVuYWJsZWQ7IGZhbHN5IGlmIG5vdDtcbiAqICBpZiBhIGZ1bmN0aW9uLCBpbXBsaWVzIHNoYWRvdyBzdXBwb3J0IGlzIGVuYWJsZWQgYW5kIGVpdGhlciByZXR1cm5zIHRoZSBzaGFkb3cgcm9vdCBvZiBhbiBlbGVtZW50XG4gKiAgb3IgYSBib29sZWFuIHN0YXRpbmcgaWYgaXQgaGFzIGFuIHVuZGlzY2xvc2VkIHNoYWRvdyByb290XG4gKiBAcHJvcGVydHkgeyhub2RlOiBFbGVtZW50KSA9PiBib29sZWFufSBmaWx0ZXIgZmlsdGVyIGNhbmRpZGF0ZXNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZmxhdHRlbiBpZiB0cnVlIHRoZW4gcmVzdWx0IHdpbGwgZmxhdHRlbiBhbnkgQ2FuZGlkYXRlU2NvcGUgaW50byB0aGUgcmV0dXJuZWQgbGlzdFxuICogQHByb3BlcnR5IHtTaGFkb3dSb290RmlsdGVyfSBzaGFkb3dSb290RmlsdGVyIGZpbHRlciBzaGFkb3cgcm9vdHM7XG4gKi9cblxuLyoqXG4gKiBAcGFyYW0ge0VsZW1lbnRbXX0gZWxlbWVudHMgbGlzdCBvZiBlbGVtZW50IGNvbnRhaW5lcnMgdG8gbWF0Y2ggY2FuZGlkYXRlcyBmcm9tXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluY2x1ZGVDb250YWluZXIgYWRkIGNvbnRhaW5lciBsaXN0IHRvIGNoZWNrXG4gKiBAcGFyYW0ge0l0ZXJhdGl2ZU9wdGlvbnN9IG9wdGlvbnNcbiAqIEByZXR1cm5zIHtBcnJheS48RWxlbWVudHxDYW5kaWRhdGVTY29wZT59XG4gKi9cbnZhciBnZXRDYW5kaWRhdGVzSXRlcmF0aXZlbHkgPSBmdW5jdGlvbiBnZXRDYW5kaWRhdGVzSXRlcmF0aXZlbHkoZWxlbWVudHMsIGluY2x1ZGVDb250YWluZXIsIG9wdGlvbnMpIHtcbiAgdmFyIGNhbmRpZGF0ZXMgPSBbXTtcbiAgdmFyIGVsZW1lbnRzVG9DaGVjayA9IEFycmF5LmZyb20oZWxlbWVudHMpO1xuICB3aGlsZSAoZWxlbWVudHNUb0NoZWNrLmxlbmd0aCkge1xuICAgIHZhciBlbGVtZW50ID0gZWxlbWVudHNUb0NoZWNrLnNoaWZ0KCk7XG4gICAgaWYgKGlzSW5lcnQoZWxlbWVudCwgZmFsc2UpKSB7XG4gICAgICAvLyBubyBuZWVkIHRvIGxvb2sgdXAgc2luY2Ugd2UncmUgZHJpbGxpbmcgZG93blxuICAgICAgLy8gYW55dGhpbmcgaW5zaWRlIHRoaXMgY29udGFpbmVyIHdpbGwgYWxzbyBiZSBpbmVydFxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChlbGVtZW50LnRhZ05hbWUgPT09ICdTTE9UJykge1xuICAgICAgLy8gYWRkIHNoYWRvdyBkb20gc2xvdCBzY29wZSAoc2xvdCBpdHNlbGYgY2Fubm90IGJlIGZvY3VzYWJsZSlcbiAgICAgIHZhciBhc3NpZ25lZCA9IGVsZW1lbnQuYXNzaWduZWRFbGVtZW50cygpO1xuICAgICAgdmFyIGNvbnRlbnQgPSBhc3NpZ25lZC5sZW5ndGggPyBhc3NpZ25lZCA6IGVsZW1lbnQuY2hpbGRyZW47XG4gICAgICB2YXIgbmVzdGVkQ2FuZGlkYXRlcyA9IGdldENhbmRpZGF0ZXNJdGVyYXRpdmVseShjb250ZW50LCB0cnVlLCBvcHRpb25zKTtcbiAgICAgIGlmIChvcHRpb25zLmZsYXR0ZW4pIHtcbiAgICAgICAgY2FuZGlkYXRlcy5wdXNoLmFwcGx5KGNhbmRpZGF0ZXMsIG5lc3RlZENhbmRpZGF0ZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FuZGlkYXRlcy5wdXNoKHtcbiAgICAgICAgICBzY29wZVBhcmVudDogZWxlbWVudCxcbiAgICAgICAgICBjYW5kaWRhdGVzOiBuZXN0ZWRDYW5kaWRhdGVzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBjaGVjayBjYW5kaWRhdGUgZWxlbWVudFxuICAgICAgdmFyIHZhbGlkQ2FuZGlkYXRlID0gbWF0Y2hlcy5jYWxsKGVsZW1lbnQsIGNhbmRpZGF0ZVNlbGVjdG9yKTtcbiAgICAgIGlmICh2YWxpZENhbmRpZGF0ZSAmJiBvcHRpb25zLmZpbHRlcihlbGVtZW50KSAmJiAoaW5jbHVkZUNvbnRhaW5lciB8fCAhZWxlbWVudHMuaW5jbHVkZXMoZWxlbWVudCkpKSB7XG4gICAgICAgIGNhbmRpZGF0ZXMucHVzaChlbGVtZW50KTtcbiAgICAgIH1cblxuICAgICAgLy8gaXRlcmF0ZSBvdmVyIHNoYWRvdyBjb250ZW50IGlmIHBvc3NpYmxlXG4gICAgICB2YXIgc2hhZG93Um9vdCA9IGVsZW1lbnQuc2hhZG93Um9vdCB8fFxuICAgICAgLy8gY2hlY2sgZm9yIGFuIHVuZGlzY2xvc2VkIHNoYWRvd1xuICAgICAgdHlwZW9mIG9wdGlvbnMuZ2V0U2hhZG93Um9vdCA9PT0gJ2Z1bmN0aW9uJyAmJiBvcHRpb25zLmdldFNoYWRvd1Jvb3QoZWxlbWVudCk7XG5cbiAgICAgIC8vIG5vIGluZXJ0IGxvb2sgdXAgYmVjYXVzZSB3ZSdyZSBhbHJlYWR5IGRyaWxsaW5nIGRvd24gYW5kIGNoZWNraW5nIGZvciBpbmVydG5lc3NcbiAgICAgIC8vICBvbiB0aGUgd2F5IGRvd24sIHNvIGFsbCBjb250YWluZXJzIHRvIHRoaXMgcm9vdCBub2RlIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlblxuICAgICAgLy8gIHZldHRlZCBhcyBub24taW5lcnRcbiAgICAgIHZhciB2YWxpZFNoYWRvd1Jvb3QgPSAhaXNJbmVydChzaGFkb3dSb290LCBmYWxzZSkgJiYgKCFvcHRpb25zLnNoYWRvd1Jvb3RGaWx0ZXIgfHwgb3B0aW9ucy5zaGFkb3dSb290RmlsdGVyKGVsZW1lbnQpKTtcbiAgICAgIGlmIChzaGFkb3dSb290ICYmIHZhbGlkU2hhZG93Um9vdCkge1xuICAgICAgICAvLyBhZGQgc2hhZG93IGRvbSBzY29wZSBJSUYgYSBzaGFkb3cgcm9vdCBub2RlIHdhcyBnaXZlbjsgb3RoZXJ3aXNlLCBhbiB1bmRpc2Nsb3NlZFxuICAgICAgICAvLyAgc2hhZG93IGV4aXN0cywgc28gbG9vayBhdCBsaWdodCBkb20gY2hpbGRyZW4gYXMgZmFsbGJhY2sgQlVUIGNyZWF0ZSBhIHNjb3BlIGZvciBhbnlcbiAgICAgICAgLy8gIGNoaWxkIGNhbmRpZGF0ZXMgZm91bmQgYmVjYXVzZSB0aGV5J3JlIGxpa2VseSBzbG90dGVkIGVsZW1lbnRzIChlbGVtZW50cyB0aGF0IGFyZVxuICAgICAgICAvLyAgY2hpbGRyZW4gb2YgdGhlIHdlYiBjb21wb25lbnQgZWxlbWVudCAod2hpY2ggaGFzIHRoZSBzaGFkb3cpLCBpbiB0aGUgbGlnaHQgZG9tLCBidXRcbiAgICAgICAgLy8gIHNsb3R0ZWQgc29tZXdoZXJlIF9pbnNpZGVfIHRoZSB1bmRpc2Nsb3NlZCBzaGFkb3cpIC0tIHRoZSBzY29wZSBpcyBjcmVhdGVkIGJlbG93LFxuICAgICAgICAvLyAgX2FmdGVyXyB3ZSByZXR1cm4gZnJvbSB0aGlzIHJlY3Vyc2l2ZSBjYWxsXG4gICAgICAgIHZhciBfbmVzdGVkQ2FuZGlkYXRlcyA9IGdldENhbmRpZGF0ZXNJdGVyYXRpdmVseShzaGFkb3dSb290ID09PSB0cnVlID8gZWxlbWVudC5jaGlsZHJlbiA6IHNoYWRvd1Jvb3QuY2hpbGRyZW4sIHRydWUsIG9wdGlvbnMpO1xuICAgICAgICBpZiAob3B0aW9ucy5mbGF0dGVuKSB7XG4gICAgICAgICAgY2FuZGlkYXRlcy5wdXNoLmFwcGx5KGNhbmRpZGF0ZXMsIF9uZXN0ZWRDYW5kaWRhdGVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goe1xuICAgICAgICAgICAgc2NvcGVQYXJlbnQ6IGVsZW1lbnQsXG4gICAgICAgICAgICBjYW5kaWRhdGVzOiBfbmVzdGVkQ2FuZGlkYXRlc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB0aGVyZSdzIG5vdCBzaGFkb3cgc28ganVzdCBkaWcgaW50byB0aGUgZWxlbWVudCdzIChsaWdodCBkb20pIGNoaWxkcmVuXG4gICAgICAgIC8vICBfX3dpdGhvdXRfXyBnaXZpbmcgdGhlIGVsZW1lbnQgc3BlY2lhbCBzY29wZSB0cmVhdG1lbnRcbiAgICAgICAgZWxlbWVudHNUb0NoZWNrLnVuc2hpZnQuYXBwbHkoZWxlbWVudHNUb0NoZWNrLCBlbGVtZW50LmNoaWxkcmVuKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbmRpZGF0ZXM7XG59O1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBub2RlIGhhcyBhbiBleHBsaWNpdGx5IHNwZWNpZmllZCBgdGFiaW5kZXhgIGF0dHJpYnV0ZS5cbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IG5vZGVcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHNvOyBmYWxzZSBpZiBub3QuXG4gKi9cbnZhciBoYXNUYWJJbmRleCA9IGZ1bmN0aW9uIGhhc1RhYkluZGV4KG5vZGUpIHtcbiAgcmV0dXJuICFpc05hTihwYXJzZUludChub2RlLmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKSwgMTApKTtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lIHRoZSB0YWIgaW5kZXggb2YgYSBnaXZlbiBub2RlLlxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gbm9kZVxuICogQHJldHVybnMge251bWJlcn0gVGFiIG9yZGVyIChuZWdhdGl2ZSwgMCwgb3IgcG9zaXRpdmUgbnVtYmVyKS5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBgbm9kZWAgaXMgZmFsc3kuXG4gKi9cbnZhciBnZXRUYWJJbmRleCA9IGZ1bmN0aW9uIGdldFRhYkluZGV4KG5vZGUpIHtcbiAgaWYgKCFub2RlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyBub2RlIHByb3ZpZGVkJyk7XG4gIH1cbiAgaWYgKG5vZGUudGFiSW5kZXggPCAwKSB7XG4gICAgLy8gaW4gQ2hyb21lLCA8ZGV0YWlscy8+LCA8YXVkaW8gY29udHJvbHMvPiBhbmQgPHZpZGVvIGNvbnRyb2xzLz4gZWxlbWVudHMgZ2V0IGEgZGVmYXVsdFxuICAgIC8vIGB0YWJJbmRleGAgb2YgLTEgd2hlbiB0aGUgJ3RhYmluZGV4JyBhdHRyaWJ1dGUgaXNuJ3Qgc3BlY2lmaWVkIGluIHRoZSBET00sXG4gICAgLy8geWV0IHRoZXkgYXJlIHN0aWxsIHBhcnQgb2YgdGhlIHJlZ3VsYXIgdGFiIG9yZGVyOyBpbiBGRiwgdGhleSBnZXQgYSBkZWZhdWx0XG4gICAgLy8gYHRhYkluZGV4YCBvZiAwOyBzaW5jZSBDaHJvbWUgc3RpbGwgcHV0cyB0aG9zZSBlbGVtZW50cyBpbiB0aGUgcmVndWxhciB0YWJcbiAgICAvLyBvcmRlciwgY29uc2lkZXIgdGhlaXIgdGFiIGluZGV4IHRvIGJlIDAuXG4gICAgLy8gQWxzbyBicm93c2VycyBkbyBub3QgcmV0dXJuIGB0YWJJbmRleGAgY29ycmVjdGx5IGZvciBjb250ZW50RWRpdGFibGUgbm9kZXM7XG4gICAgLy8gc28gaWYgdGhleSBkb24ndCBoYXZlIGEgdGFiaW5kZXggYXR0cmlidXRlIHNwZWNpZmljYWxseSBzZXQsIGFzc3VtZSBpdCdzIDAuXG4gICAgaWYgKCgvXihBVURJT3xWSURFT3xERVRBSUxTKSQvLnRlc3Qobm9kZS50YWdOYW1lKSB8fCBpc0NvbnRlbnRFZGl0YWJsZShub2RlKSkgJiYgIWhhc1RhYkluZGV4KG5vZGUpKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5vZGUudGFiSW5kZXg7XG59O1xuXG4vKipcbiAqIERldGVybWluZSB0aGUgdGFiIGluZGV4IG9mIGEgZ2l2ZW4gbm9kZSBfX2ZvciBzb3J0IG9yZGVyIHB1cnBvc2VzX18uXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBub2RlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1Njb3BlXSBUcnVlIGZvciBhIGN1c3RvbSBlbGVtZW50IHdpdGggc2hhZG93IHJvb3Qgb3Igc2xvdCB0aGF0LCBieSBkZWZhdWx0LFxuICogIGhhcyB0YWJJbmRleCAtMSwgYnV0IG5lZWRzIHRvIGJlIHNvcnRlZCBieSBkb2N1bWVudCBvcmRlciBpbiBvcmRlciBmb3IgaXRzIGNvbnRlbnQgdG8gYmVcbiAqICBpbnNlcnRlZCBpbnRvIHRoZSBjb3JyZWN0IHNvcnQgcG9zaXRpb24uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBUYWIgb3JkZXIgKG5lZ2F0aXZlLCAwLCBvciBwb3NpdGl2ZSBudW1iZXIpLlxuICovXG52YXIgZ2V0U29ydE9yZGVyVGFiSW5kZXggPSBmdW5jdGlvbiBnZXRTb3J0T3JkZXJUYWJJbmRleChub2RlLCBpc1Njb3BlKSB7XG4gIHZhciB0YWJJbmRleCA9IGdldFRhYkluZGV4KG5vZGUpO1xuICBpZiAodGFiSW5kZXggPCAwICYmIGlzU2NvcGUgJiYgIWhhc1RhYkluZGV4KG5vZGUpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgcmV0dXJuIHRhYkluZGV4O1xufTtcbnZhciBzb3J0T3JkZXJlZFRhYmJhYmxlcyA9IGZ1bmN0aW9uIHNvcnRPcmRlcmVkVGFiYmFibGVzKGEsIGIpIHtcbiAgcmV0dXJuIGEudGFiSW5kZXggPT09IGIudGFiSW5kZXggPyBhLmRvY3VtZW50T3JkZXIgLSBiLmRvY3VtZW50T3JkZXIgOiBhLnRhYkluZGV4IC0gYi50YWJJbmRleDtcbn07XG52YXIgaXNJbnB1dCA9IGZ1bmN0aW9uIGlzSW5wdXQobm9kZSkge1xuICByZXR1cm4gbm9kZS50YWdOYW1lID09PSAnSU5QVVQnO1xufTtcbnZhciBpc0hpZGRlbklucHV0ID0gZnVuY3Rpb24gaXNIaWRkZW5JbnB1dChub2RlKSB7XG4gIHJldHVybiBpc0lucHV0KG5vZGUpICYmIG5vZGUudHlwZSA9PT0gJ2hpZGRlbic7XG59O1xudmFyIGlzRGV0YWlsc1dpdGhTdW1tYXJ5ID0gZnVuY3Rpb24gaXNEZXRhaWxzV2l0aFN1bW1hcnkobm9kZSkge1xuICB2YXIgciA9IG5vZGUudGFnTmFtZSA9PT0gJ0RFVEFJTFMnICYmIEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShub2RlLmNoaWxkcmVuKS5zb21lKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHJldHVybiBjaGlsZC50YWdOYW1lID09PSAnU1VNTUFSWSc7XG4gIH0pO1xuICByZXR1cm4gcjtcbn07XG52YXIgZ2V0Q2hlY2tlZFJhZGlvID0gZnVuY3Rpb24gZ2V0Q2hlY2tlZFJhZGlvKG5vZGVzLCBmb3JtKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAobm9kZXNbaV0uY2hlY2tlZCAmJiBub2Rlc1tpXS5mb3JtID09PSBmb3JtKSB7XG4gICAgICByZXR1cm4gbm9kZXNbaV07XG4gICAgfVxuICB9XG59O1xudmFyIGlzVGFiYmFibGVSYWRpbyA9IGZ1bmN0aW9uIGlzVGFiYmFibGVSYWRpbyhub2RlKSB7XG4gIGlmICghbm9kZS5uYW1lKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIHJhZGlvU2NvcGUgPSBub2RlLmZvcm0gfHwgZ2V0Um9vdE5vZGUobm9kZSk7XG4gIHZhciBxdWVyeVJhZGlvcyA9IGZ1bmN0aW9uIHF1ZXJ5UmFkaW9zKG5hbWUpIHtcbiAgICByZXR1cm4gcmFkaW9TY29wZS5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPVwicmFkaW9cIl1bbmFtZT1cIicgKyBuYW1lICsgJ1wiXScpO1xuICB9O1xuICB2YXIgcmFkaW9TZXQ7XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LkNTUyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5DU1MuZXNjYXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmFkaW9TZXQgPSBxdWVyeVJhZGlvcyh3aW5kb3cuQ1NTLmVzY2FwZShub2RlLm5hbWUpKTtcbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgcmFkaW9TZXQgPSBxdWVyeVJhZGlvcyhub2RlLm5hbWUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0xvb2tzIGxpa2UgeW91IGhhdmUgYSByYWRpbyBidXR0b24gd2l0aCBhIG5hbWUgYXR0cmlidXRlIGNvbnRhaW5pbmcgaW52YWxpZCBDU1Mgc2VsZWN0b3IgY2hhcmFjdGVycyBhbmQgbmVlZCB0aGUgQ1NTLmVzY2FwZSBwb2x5ZmlsbDogJXMnLCBlcnIubWVzc2FnZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHZhciBjaGVja2VkID0gZ2V0Q2hlY2tlZFJhZGlvKHJhZGlvU2V0LCBub2RlLmZvcm0pO1xuICByZXR1cm4gIWNoZWNrZWQgfHwgY2hlY2tlZCA9PT0gbm9kZTtcbn07XG52YXIgaXNSYWRpbyA9IGZ1bmN0aW9uIGlzUmFkaW8obm9kZSkge1xuICByZXR1cm4gaXNJbnB1dChub2RlKSAmJiBub2RlLnR5cGUgPT09ICdyYWRpbyc7XG59O1xudmFyIGlzTm9uVGFiYmFibGVSYWRpbyA9IGZ1bmN0aW9uIGlzTm9uVGFiYmFibGVSYWRpbyhub2RlKSB7XG4gIHJldHVybiBpc1JhZGlvKG5vZGUpICYmICFpc1RhYmJhYmxlUmFkaW8obm9kZSk7XG59O1xuXG4vLyBkZXRlcm1pbmVzIGlmIGEgbm9kZSBpcyB1bHRpbWF0ZWx5IGF0dGFjaGVkIHRvIHRoZSB3aW5kb3cncyBkb2N1bWVudFxudmFyIGlzTm9kZUF0dGFjaGVkID0gZnVuY3Rpb24gaXNOb2RlQXR0YWNoZWQobm9kZSkge1xuICB2YXIgX25vZGVSb290O1xuICAvLyBUaGUgcm9vdCBub2RlIGlzIHRoZSBzaGFkb3cgcm9vdCBpZiB0aGUgbm9kZSBpcyBpbiBhIHNoYWRvdyBET007IHNvbWUgZG9jdW1lbnQgb3RoZXJ3aXNlXG4gIC8vICAoYnV0IE5PVCBfdGhlXyBkb2N1bWVudDsgc2VlIHNlY29uZCAnSWYnIGNvbW1lbnQgYmVsb3cgZm9yIG1vcmUpLlxuICAvLyBJZiByb290Tm9kZSBpcyBzaGFkb3cgcm9vdCwgaXQnbGwgaGF2ZSBhIGhvc3QsIHdoaWNoIGlzIHRoZSBlbGVtZW50IHRvIHdoaWNoIHRoZSBzaGFkb3dcbiAgLy8gIGlzIGF0dGFjaGVkLCBhbmQgdGhlIG9uZSB3ZSBuZWVkIHRvIGNoZWNrIGlmIGl0J3MgaW4gdGhlIGRvY3VtZW50IG9yIG5vdCAoYmVjYXVzZSB0aGVcbiAgLy8gIHNoYWRvdywgYW5kIGFsbCBub2RlcyBpdCBjb250YWlucywgaXMgbmV2ZXIgY29uc2lkZXJlZCBpbiB0aGUgZG9jdW1lbnQgc2luY2Ugc2hhZG93c1xuICAvLyAgYmVoYXZlIGxpa2Ugc2VsZi1jb250YWluZWQgRE9NczsgYnV0IGlmIHRoZSBzaGFkb3cncyBIT1NULCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBkb2N1bWVudCxcbiAgLy8gIGlzIGhpZGRlbiwgb3IgaXMgbm90IGluIHRoZSBkb2N1bWVudCBpdHNlbGYgYnV0IGlzIGRldGFjaGVkLCBpdCB3aWxsIGFmZmVjdCB0aGUgc2hhZG93J3NcbiAgLy8gIHZpc2liaWxpdHksIGluY2x1ZGluZyBhbGwgdGhlIG5vZGVzIGl0IGNvbnRhaW5zKS4gVGhlIGhvc3QgY291bGQgYmUgYW55IG5vcm1hbCBub2RlLFxuICAvLyAgb3IgYSBjdXN0b20gZWxlbWVudCAoaS5lLiB3ZWIgY29tcG9uZW50KS4gRWl0aGVyIHdheSwgdGhhdCdzIHRoZSBvbmUgdGhhdCBpcyBjb25zaWRlcmVkXG4gIC8vICBwYXJ0IG9mIHRoZSBkb2N1bWVudCwgbm90IHRoZSBzaGFkb3cgcm9vdCwgbm9yIGFueSBvZiBpdHMgY2hpbGRyZW4gKGkuZS4gdGhlIG5vZGUgYmVpbmdcbiAgLy8gIHRlc3RlZCkuXG4gIC8vIFRvIGZ1cnRoZXIgY29tcGxpY2F0ZSB0aGluZ3MsIHdlIGhhdmUgdG8gbG9vayBhbGwgdGhlIHdheSB1cCB1bnRpbCB3ZSBmaW5kIGEgc2hhZG93IEhPU1RcbiAgLy8gIHRoYXQgaXMgYXR0YWNoZWQgKG9yIGZpbmQgbm9uZSkgYmVjYXVzZSB0aGUgbm9kZSBtaWdodCBiZSBpbiBuZXN0ZWQgc2hhZG93cy4uLlxuICAvLyBJZiByb290Tm9kZSBpcyBub3QgYSBzaGFkb3cgcm9vdCwgaXQgd29uJ3QgaGF2ZSBhIGhvc3QsIGFuZCBzbyByb290Tm9kZSBzaG91bGQgYmUgdGhlXG4gIC8vICBkb2N1bWVudCAocGVyIHRoZSBkb2NzKSBhbmQgd2hpbGUgaXQncyBhIERvY3VtZW50LXR5cGUgb2JqZWN0LCB0aGF0IGRvY3VtZW50IGRvZXMgbm90XG4gIC8vICBhcHBlYXIgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIG5vZGUncyBgb3duZXJEb2N1bWVudGAgZm9yIHNvbWUgcmVhc29uLCBzbyBpdCdzIHNhZmVyXG4gIC8vICB0byBpZ25vcmUgdGhlIHJvb3ROb2RlIGF0IHRoaXMgcG9pbnQsIGFuZCB1c2UgYG5vZGUub3duZXJEb2N1bWVudGAuIE90aGVyd2lzZSxcbiAgLy8gIHVzaW5nIGByb290Tm9kZS5jb250YWlucyhub2RlKWAgd2lsbCBfYWx3YXlzXyBiZSB0cnVlIHdlJ2xsIGdldCBmYWxzZS1wb3NpdGl2ZXMgd2hlblxuICAvLyAgbm9kZSBpcyBhY3R1YWxseSBkZXRhY2hlZC5cbiAgLy8gTk9URTogSWYgYG5vZGVSb290SG9zdGAgb3IgYG5vZGVgIGhhcHBlbnMgdG8gYmUgdGhlIGBkb2N1bWVudGAgaXRzZWxmICh3aGljaCBpcyBwb3NzaWJsZVxuICAvLyAgaWYgYSB0YWJiYWJsZS9mb2N1c2FibGUgbm9kZSB3YXMgcXVpY2tseSBhZGRlZCB0byB0aGUgRE9NLCBmb2N1c2VkLCBhbmQgdGhlbiByZW1vdmVkXG4gIC8vICBmcm9tIHRoZSBET00gYXMgaW4gaHR0cHM6Ly9naXRodWIuY29tL2ZvY3VzLXRyYXAvZm9jdXMtdHJhcC1yZWFjdC9pc3N1ZXMvOTA1KSwgdGhlblxuICAvLyAgYG93bmVyRG9jdW1lbnRgIHdpbGwgYmUgYG51bGxgLCBoZW5jZSB0aGUgb3B0aW9uYWwgY2hhaW5pbmcgb24gaXQuXG4gIHZhciBub2RlUm9vdCA9IG5vZGUgJiYgZ2V0Um9vdE5vZGUobm9kZSk7XG4gIHZhciBub2RlUm9vdEhvc3QgPSAoX25vZGVSb290ID0gbm9kZVJvb3QpID09PSBudWxsIHx8IF9ub2RlUm9vdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX25vZGVSb290Lmhvc3Q7XG5cbiAgLy8gaW4gc29tZSBjYXNlcywgYSBkZXRhY2hlZCBub2RlIHdpbGwgcmV0dXJuIGl0c2VsZiBhcyB0aGUgcm9vdCBpbnN0ZWFkIG9mIGEgZG9jdW1lbnQgb3JcbiAgLy8gIHNoYWRvdyByb290IG9iamVjdCwgaW4gd2hpY2ggY2FzZSwgd2Ugc2hvdWxkbid0IHRyeSB0byBsb29rIGZ1cnRoZXIgdXAgdGhlIGhvc3QgY2hhaW5cbiAgdmFyIGF0dGFjaGVkID0gZmFsc2U7XG4gIGlmIChub2RlUm9vdCAmJiBub2RlUm9vdCAhPT0gbm9kZSkge1xuICAgIHZhciBfbm9kZVJvb3RIb3N0LCBfbm9kZVJvb3RIb3N0JG93bmVyRG8sIF9ub2RlJG93bmVyRG9jdW1lbnQ7XG4gICAgYXR0YWNoZWQgPSAhISgoX25vZGVSb290SG9zdCA9IG5vZGVSb290SG9zdCkgIT09IG51bGwgJiYgX25vZGVSb290SG9zdCAhPT0gdm9pZCAwICYmIChfbm9kZVJvb3RIb3N0JG93bmVyRG8gPSBfbm9kZVJvb3RIb3N0Lm93bmVyRG9jdW1lbnQpICE9PSBudWxsICYmIF9ub2RlUm9vdEhvc3Qkb3duZXJEbyAhPT0gdm9pZCAwICYmIF9ub2RlUm9vdEhvc3Qkb3duZXJEby5jb250YWlucyhub2RlUm9vdEhvc3QpIHx8IG5vZGUgIT09IG51bGwgJiYgbm9kZSAhPT0gdm9pZCAwICYmIChfbm9kZSRvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50KSAhPT0gbnVsbCAmJiBfbm9kZSRvd25lckRvY3VtZW50ICE9PSB2b2lkIDAgJiYgX25vZGUkb3duZXJEb2N1bWVudC5jb250YWlucyhub2RlKSk7XG4gICAgd2hpbGUgKCFhdHRhY2hlZCAmJiBub2RlUm9vdEhvc3QpIHtcbiAgICAgIHZhciBfbm9kZVJvb3QyLCBfbm9kZVJvb3RIb3N0MiwgX25vZGVSb290SG9zdDIkb3duZXJEO1xuICAgICAgLy8gc2luY2UgaXQncyBub3QgYXR0YWNoZWQgYW5kIHdlIGhhdmUgYSByb290IGhvc3QsIHRoZSBub2RlIE1VU1QgYmUgaW4gYSBuZXN0ZWQgc2hhZG93IERPTSxcbiAgICAgIC8vICB3aGljaCBtZWFucyB3ZSBuZWVkIHRvIGdldCB0aGUgaG9zdCdzIGhvc3QgYW5kIGNoZWNrIGlmIHRoYXQgcGFyZW50IGhvc3QgaXMgY29udGFpbmVkXG4gICAgICAvLyAgaW4gKGkuZS4gYXR0YWNoZWQgdG8pIHRoZSBkb2N1bWVudFxuICAgICAgbm9kZVJvb3QgPSBnZXRSb290Tm9kZShub2RlUm9vdEhvc3QpO1xuICAgICAgbm9kZVJvb3RIb3N0ID0gKF9ub2RlUm9vdDIgPSBub2RlUm9vdCkgPT09IG51bGwgfHwgX25vZGVSb290MiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX25vZGVSb290Mi5ob3N0O1xuICAgICAgYXR0YWNoZWQgPSAhISgoX25vZGVSb290SG9zdDIgPSBub2RlUm9vdEhvc3QpICE9PSBudWxsICYmIF9ub2RlUm9vdEhvc3QyICE9PSB2b2lkIDAgJiYgKF9ub2RlUm9vdEhvc3QyJG93bmVyRCA9IF9ub2RlUm9vdEhvc3QyLm93bmVyRG9jdW1lbnQpICE9PSBudWxsICYmIF9ub2RlUm9vdEhvc3QyJG93bmVyRCAhPT0gdm9pZCAwICYmIF9ub2RlUm9vdEhvc3QyJG93bmVyRC5jb250YWlucyhub2RlUm9vdEhvc3QpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGF0dGFjaGVkO1xufTtcbnZhciBpc1plcm9BcmVhID0gZnVuY3Rpb24gaXNaZXJvQXJlYShub2RlKSB7XG4gIHZhciBfbm9kZSRnZXRCb3VuZGluZ0NsaWUgPSBub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgIHdpZHRoID0gX25vZGUkZ2V0Qm91bmRpbmdDbGllLndpZHRoLFxuICAgIGhlaWdodCA9IF9ub2RlJGdldEJvdW5kaW5nQ2xpZS5oZWlnaHQ7XG4gIHJldHVybiB3aWR0aCA9PT0gMCAmJiBoZWlnaHQgPT09IDA7XG59O1xudmFyIGlzSGlkZGVuID0gZnVuY3Rpb24gaXNIaWRkZW4obm9kZSwgX3JlZikge1xuICB2YXIgZGlzcGxheUNoZWNrID0gX3JlZi5kaXNwbGF5Q2hlY2ssXG4gICAgZ2V0U2hhZG93Um9vdCA9IF9yZWYuZ2V0U2hhZG93Um9vdDtcbiAgLy8gTk9URTogdmlzaWJpbGl0eSB3aWxsIGJlIGB1bmRlZmluZWRgIGlmIG5vZGUgaXMgZGV0YWNoZWQgZnJvbSB0aGUgZG9jdW1lbnRcbiAgLy8gIChzZWUgbm90ZXMgYWJvdXQgdGhpcyBmdXJ0aGVyIGRvd24pLCB3aGljaCBtZWFucyB3ZSB3aWxsIGNvbnNpZGVyIGl0IHZpc2libGVcbiAgLy8gICh0aGlzIGlzIGxlZ2FjeSBiZWhhdmlvciBmcm9tIGEgdmVyeSBsb25nIHdheSBiYWNrKVxuICAvLyBOT1RFOiB3ZSBjaGVjayB0aGlzIHJlZ2FyZGxlc3Mgb2YgYGRpc3BsYXlDaGVjaz1cIm5vbmVcImAgYmVjYXVzZSB0aGlzIGlzIGFcbiAgLy8gIF92aXNpYmlsaXR5XyBjaGVjaywgbm90IGEgX2Rpc3BsYXlfIGNoZWNrXG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKG5vZGUpLnZpc2liaWxpdHkgPT09ICdoaWRkZW4nKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIGlzRGlyZWN0U3VtbWFyeSA9IG1hdGNoZXMuY2FsbChub2RlLCAnZGV0YWlscz5zdW1tYXJ5OmZpcnN0LW9mLXR5cGUnKTtcbiAgdmFyIG5vZGVVbmRlckRldGFpbHMgPSBpc0RpcmVjdFN1bW1hcnkgPyBub2RlLnBhcmVudEVsZW1lbnQgOiBub2RlO1xuICBpZiAobWF0Y2hlcy5jYWxsKG5vZGVVbmRlckRldGFpbHMsICdkZXRhaWxzOm5vdChbb3Blbl0pIConKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICghZGlzcGxheUNoZWNrIHx8IGRpc3BsYXlDaGVjayA9PT0gJ2Z1bGwnIHx8IGRpc3BsYXlDaGVjayA9PT0gJ2xlZ2FjeS1mdWxsJykge1xuICAgIGlmICh0eXBlb2YgZ2V0U2hhZG93Um9vdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gZmlndXJlIG91dCBpZiB3ZSBzaG91bGQgY29uc2lkZXIgdGhlIG5vZGUgdG8gYmUgaW4gYW4gdW5kaXNjbG9zZWQgc2hhZG93IGFuZCB1c2UgdGhlXG4gICAgICAvLyAgJ25vbi16ZXJvLWFyZWEnIGZhbGxiYWNrXG4gICAgICB2YXIgb3JpZ2luYWxOb2RlID0gbm9kZTtcbiAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgIHZhciBwYXJlbnRFbGVtZW50ID0gbm9kZS5wYXJlbnRFbGVtZW50O1xuICAgICAgICB2YXIgcm9vdE5vZGUgPSBnZXRSb290Tm9kZShub2RlKTtcbiAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQgJiYgIXBhcmVudEVsZW1lbnQuc2hhZG93Um9vdCAmJiBnZXRTaGFkb3dSb290KHBhcmVudEVsZW1lbnQpID09PSB0cnVlIC8vIGNoZWNrIGlmIHRoZXJlJ3MgYW4gdW5kaXNjbG9zZWQgc2hhZG93XG4gICAgICAgICkge1xuICAgICAgICAgIC8vIG5vZGUgaGFzIGFuIHVuZGlzY2xvc2VkIHNoYWRvdyB3aGljaCBtZWFucyB3ZSBjYW4gb25seSB0cmVhdCBpdCBhcyBhIGJsYWNrIGJveCwgc28gd2VcbiAgICAgICAgICAvLyAgZmFsbCBiYWNrIHRvIGEgbm9uLXplcm8tYXJlYSB0ZXN0XG4gICAgICAgICAgcmV0dXJuIGlzWmVyb0FyZWEobm9kZSk7XG4gICAgICAgIH0gZWxzZSBpZiAobm9kZS5hc3NpZ25lZFNsb3QpIHtcbiAgICAgICAgICAvLyBpdGVyYXRlIHVwIHNsb3RcbiAgICAgICAgICBub2RlID0gbm9kZS5hc3NpZ25lZFNsb3Q7XG4gICAgICAgIH0gZWxzZSBpZiAoIXBhcmVudEVsZW1lbnQgJiYgcm9vdE5vZGUgIT09IG5vZGUub3duZXJEb2N1bWVudCkge1xuICAgICAgICAgIC8vIGNyb3NzIHNoYWRvdyBib3VuZGFyeVxuICAgICAgICAgIG5vZGUgPSByb290Tm9kZS5ob3N0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGl0ZXJhdGUgdXAgbm9ybWFsIGRvbVxuICAgICAgICAgIG5vZGUgPSBwYXJlbnRFbGVtZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBub2RlID0gb3JpZ2luYWxOb2RlO1xuICAgIH1cbiAgICAvLyBlbHNlLCBgZ2V0U2hhZG93Um9vdGAgbWlnaHQgYmUgdHJ1ZSwgYnV0IGFsbCB0aGF0IGRvZXMgaXMgZW5hYmxlIHNoYWRvdyBET00gc3VwcG9ydFxuICAgIC8vICAoaS5lLiBpdCBkb2VzIG5vdCBhbHNvIHByZXN1bWUgdGhhdCBhbGwgbm9kZXMgbWlnaHQgaGF2ZSB1bmRpc2Nsb3NlZCBzaGFkb3dzKTsgb3JcbiAgICAvLyAgaXQgbWlnaHQgYmUgYSBmYWxzeSB2YWx1ZSwgd2hpY2ggbWVhbnMgc2hhZG93IERPTSBzdXBwb3J0IGlzIGRpc2FibGVkXG5cbiAgICAvLyBTaW5jZSB3ZSBkaWRuJ3QgZmluZCBpdCBzaXR0aW5nIGluIGFuIHVuZGlzY2xvc2VkIHNoYWRvdyAob3Igc2hhZG93cyBhcmUgZGlzYWJsZWQpXG4gICAgLy8gIG5vdyB3ZSBjYW4ganVzdCB0ZXN0IHRvIHNlZSBpZiBpdCB3b3VsZCBub3JtYWxseSBiZSB2aXNpYmxlIG9yIG5vdCwgcHJvdmlkZWQgaXQnc1xuICAgIC8vICBhdHRhY2hlZCB0byB0aGUgbWFpbiBkb2N1bWVudC5cbiAgICAvLyBOT1RFOiBXZSBtdXN0IGNvbnNpZGVyIGNhc2Ugd2hlcmUgbm9kZSBpcyBpbnNpZGUgYSBzaGFkb3cgRE9NIGFuZCBnaXZlbiBkaXJlY3RseSB0b1xuICAgIC8vICBgaXNUYWJiYWJsZSgpYCBvciBgaXNGb2N1c2FibGUoKWAgLS0gcmVnYXJkbGVzcyBvZiBgZ2V0U2hhZG93Um9vdGAgb3B0aW9uIHNldHRpbmcuXG5cbiAgICBpZiAoaXNOb2RlQXR0YWNoZWQobm9kZSkpIHtcbiAgICAgIC8vIHRoaXMgd29ya3Mgd2hlcmV2ZXIgdGhlIG5vZGUgaXM6IGlmIHRoZXJlJ3MgYXQgbGVhc3Qgb25lIGNsaWVudCByZWN0LCBpdCdzXG4gICAgICAvLyAgc29tZWhvdyBkaXNwbGF5ZWQ7IGl0IGFsc28gY292ZXJzIHRoZSBDU1MgJ2Rpc3BsYXk6IGNvbnRlbnRzJyBjYXNlIHdoZXJlIHRoZVxuICAgICAgLy8gIG5vZGUgaXRzZWxmIGlzIGhpZGRlbiBpbiBwbGFjZSBvZiBpdHMgY29udGVudHM7IGFuZCB0aGVyZSdzIG5vIG5lZWQgdG8gc2VhcmNoXG4gICAgICAvLyAgdXAgdGhlIGhpZXJhcmNoeSBlaXRoZXJcbiAgICAgIHJldHVybiAhbm9kZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvLyBFbHNlLCB0aGUgbm9kZSBpc24ndCBhdHRhY2hlZCB0byB0aGUgZG9jdW1lbnQsIHdoaWNoIG1lYW5zIHRoZSBgZ2V0Q2xpZW50UmVjdHMoKWBcbiAgICAvLyAgQVBJIHdpbGwgX19hbHdheXNfXyByZXR1cm4gemVybyByZWN0cyAodGhpcyBjYW4gaGFwcGVuLCBmb3IgZXhhbXBsZSwgaWYgUmVhY3RcbiAgICAvLyAgaXMgdXNlZCB0byByZW5kZXIgbm9kZXMgb250byBhIGRldGFjaGVkIHRyZWUsIGFzIGNvbmZpcm1lZCBpbiB0aGlzIHRocmVhZDpcbiAgICAvLyAgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy85MTE3I2lzc3VlY29tbWVudC0yODQyMjg4NzApXG4gICAgLy9cbiAgICAvLyBJdCBhbHNvIG1lYW5zIHRoYXQgZXZlbiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShub2RlKS5kaXNwbGF5IHdpbGwgcmV0dXJuIGB1bmRlZmluZWRgXG4gICAgLy8gIGJlY2F1c2Ugc3R5bGVzIGFyZSBvbmx5IGNvbXB1dGVkIGZvciBub2RlcyB0aGF0IGFyZSBpbiB0aGUgZG9jdW1lbnQuXG4gICAgLy9cbiAgICAvLyBOT1RFOiBUSElTIEhBUyBCRUVOIFRIRSBDQVNFIEZPUiBZRUFSUy4gSXQgaXMgbm90IG5ldywgbm9yIGlzIGl0IGNhdXNlZCBieSB0YWJiYWJsZVxuICAgIC8vICBzb21laG93LiBUaG91Z2ggaXQgd2FzIG5ldmVyIHN0YXRlZCBvZmZpY2lhbGx5LCBhbnlvbmUgd2hvIGhhcyBldmVyIHVzZWQgdGFiYmFibGVcbiAgICAvLyAgQVBJcyBvbiBub2RlcyBpbiBkZXRhY2hlZCBjb250YWluZXJzIGhhcyBhY3R1YWxseSBpbXBsaWNpdGx5IHVzZWQgdGFiYmFibGUgaW4gd2hhdFxuICAgIC8vICB3YXMgbGF0ZXIgKGFzIG9mIHY1LjIuMCBvbiBBcHIgOSwgMjAyMSkgY2FsbGVkIGBkaXNwbGF5Q2hlY2s9XCJub25lXCJgIG1vZGUgLS0gZXNzZW50aWFsbHlcbiAgICAvLyAgY29uc2lkZXJpbmcgX19ldmVyeXRoaW5nX18gdG8gYmUgdmlzaWJsZSBiZWNhdXNlIG9mIHRoZSBpbm5hYmlsaXR5IHRvIGRldGVybWluZSBzdHlsZXMuXG4gICAgLy9cbiAgICAvLyB2Ni4wLjA6IEFzIG9mIHRoaXMgbWFqb3IgcmVsZWFzZSwgdGhlIGRlZmF1bHQgJ2Z1bGwnIG9wdGlvbiBfX25vIGxvbmdlciB0cmVhdHMgZGV0YWNoZWRcbiAgICAvLyAgbm9kZXMgYXMgdmlzaWJsZSB3aXRoIHRoZSAnbm9uZScgZmFsbGJhY2suX19cbiAgICBpZiAoZGlzcGxheUNoZWNrICE9PSAnbGVnYWN5LWZ1bGwnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTsgLy8gaGlkZGVuXG4gICAgfVxuICAgIC8vIGVsc2UsIGZhbGxiYWNrIHRvICdub25lJyBtb2RlIGFuZCBjb25zaWRlciB0aGUgbm9kZSB2aXNpYmxlXG4gIH0gZWxzZSBpZiAoZGlzcGxheUNoZWNrID09PSAnbm9uLXplcm8tYXJlYScpIHtcbiAgICAvLyBOT1RFOiBFdmVuIHRob3VnaCB0aGlzIHRlc3RzIHRoYXQgdGhlIG5vZGUncyBjbGllbnQgcmVjdCBpcyBub24temVybyB0byBkZXRlcm1pbmVcbiAgICAvLyAgd2hldGhlciBpdCdzIGRpc3BsYXllZCwgYW5kIHRoYXQgYSBkZXRhY2hlZCBub2RlIHdpbGwgX19hbHdheXNfXyBoYXZlIGEgemVyby1hcmVhXG4gICAgLy8gIGNsaWVudCByZWN0LCB3ZSBkb24ndCBzcGVjaWFsLWNhc2UgZm9yIHdoZXRoZXIgdGhlIG5vZGUgaXMgYXR0YWNoZWQgb3Igbm90LiBJblxuICAgIC8vICB0aGlzIG1vZGUsIHdlIGRvIHdhbnQgdG8gY29uc2lkZXIgbm9kZXMgdGhhdCBoYXZlIGEgemVybyBhcmVhIHRvIGJlIGhpZGRlbiBhdCBhbGxcbiAgICAvLyAgdGltZXMsIGFuZCB0aGF0IGluY2x1ZGVzIGF0dGFjaGVkIG9yIG5vdC5cbiAgICByZXR1cm4gaXNaZXJvQXJlYShub2RlKTtcbiAgfVxuXG4gIC8vIHZpc2libGUsIGFzIGZhciBhcyB3ZSBjYW4gdGVsbCwgb3IgcGVyIGN1cnJlbnQgYGRpc3BsYXlDaGVjaz1ub25lYCBtb2RlLCB3ZSBhc3N1bWVcbiAgLy8gIGl0J3MgdmlzaWJsZVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vLyBmb3JtIGZpZWxkcyAobmVzdGVkKSBpbnNpZGUgYSBkaXNhYmxlZCBmaWVsZHNldCBhcmUgbm90IGZvY3VzYWJsZS90YWJiYWJsZVxuLy8gIHVubGVzcyB0aGV5IGFyZSBpbiB0aGUgX2ZpcnN0XyA8bGVnZW5kPiBlbGVtZW50IG9mIHRoZSB0b3AtbW9zdCBkaXNhYmxlZFxuLy8gIGZpZWxkc2V0XG52YXIgaXNEaXNhYmxlZEZyb21GaWVsZHNldCA9IGZ1bmN0aW9uIGlzRGlzYWJsZWRGcm9tRmllbGRzZXQobm9kZSkge1xuICBpZiAoL14oSU5QVVR8QlVUVE9OfFNFTEVDVHxURVhUQVJFQSkkLy50ZXN0KG5vZGUudGFnTmFtZSkpIHtcbiAgICB2YXIgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50RWxlbWVudDtcbiAgICAvLyBjaGVjayBpZiBgbm9kZWAgaXMgY29udGFpbmVkIGluIGEgZGlzYWJsZWQgPGZpZWxkc2V0PlxuICAgIHdoaWxlIChwYXJlbnROb2RlKSB7XG4gICAgICBpZiAocGFyZW50Tm9kZS50YWdOYW1lID09PSAnRklFTERTRVQnICYmIHBhcmVudE5vZGUuZGlzYWJsZWQpIHtcbiAgICAgICAgLy8gbG9vayBmb3IgdGhlIGZpcnN0IDxsZWdlbmQ+IGFtb25nIHRoZSBjaGlsZHJlbiBvZiB0aGUgZGlzYWJsZWQgPGZpZWxkc2V0PlxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmVudE5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgY2hpbGQgPSBwYXJlbnROb2RlLmNoaWxkcmVuLml0ZW0oaSk7XG4gICAgICAgICAgLy8gd2hlbiB0aGUgZmlyc3QgPGxlZ2VuZD4gKGluIGRvY3VtZW50IG9yZGVyKSBpcyBmb3VuZFxuICAgICAgICAgIGlmIChjaGlsZC50YWdOYW1lID09PSAnTEVHRU5EJykge1xuICAgICAgICAgICAgLy8gaWYgaXRzIHBhcmVudCA8ZmllbGRzZXQ+IGlzIG5vdCBuZXN0ZWQgaW4gYW5vdGhlciBkaXNhYmxlZCA8ZmllbGRzZXQ+LFxuICAgICAgICAgICAgLy8gcmV0dXJuIHdoZXRoZXIgYG5vZGVgIGlzIGEgZGVzY2VuZGFudCBvZiBpdHMgZmlyc3QgPGxlZ2VuZD5cbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVzLmNhbGwocGFyZW50Tm9kZSwgJ2ZpZWxkc2V0W2Rpc2FibGVkXSAqJykgPyB0cnVlIDogIWNoaWxkLmNvbnRhaW5zKG5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyB0aGUgZGlzYWJsZWQgPGZpZWxkc2V0PiBjb250YWluaW5nIGBub2RlYCBoYXMgbm8gPGxlZ2VuZD5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5wYXJlbnRFbGVtZW50O1xuICAgIH1cbiAgfVxuXG4gIC8vIGVsc2UsIG5vZGUncyB0YWJiYWJsZS9mb2N1c2FibGUgc3RhdGUgc2hvdWxkIG5vdCBiZSBhZmZlY3RlZCBieSBhIGZpZWxkc2V0J3NcbiAgLy8gIGVuYWJsZWQvZGlzYWJsZWQgc3RhdGVcbiAgcmV0dXJuIGZhbHNlO1xufTtcbnZhciBpc05vZGVNYXRjaGluZ1NlbGVjdG9yRm9jdXNhYmxlID0gZnVuY3Rpb24gaXNOb2RlTWF0Y2hpbmdTZWxlY3RvckZvY3VzYWJsZShvcHRpb25zLCBub2RlKSB7XG4gIGlmIChub2RlLmRpc2FibGVkIHx8XG4gIC8vIHdlIG11c3QgZG8gYW4gaW5lcnQgbG9vayB1cCB0byBmaWx0ZXIgb3V0IGFueSBlbGVtZW50cyBpbnNpZGUgYW4gaW5lcnQgYW5jZXN0b3JcbiAgLy8gIGJlY2F1c2Ugd2UncmUgbGltaXRlZCBpbiB0aGUgdHlwZSBvZiBzZWxlY3RvcnMgd2UgY2FuIHVzZSBpbiBKU0RvbSAoc2VlIHJlbGF0ZWRcbiAgLy8gIG5vdGUgcmVsYXRlZCB0byBgY2FuZGlkYXRlU2VsZWN0b3JzYClcbiAgaXNJbmVydChub2RlKSB8fCBpc0hpZGRlbklucHV0KG5vZGUpIHx8IGlzSGlkZGVuKG5vZGUsIG9wdGlvbnMpIHx8XG4gIC8vIEZvciBhIGRldGFpbHMgZWxlbWVudCB3aXRoIGEgc3VtbWFyeSwgdGhlIHN1bW1hcnkgZWxlbWVudCBnZXRzIHRoZSBmb2N1c1xuICBpc0RldGFpbHNXaXRoU3VtbWFyeShub2RlKSB8fCBpc0Rpc2FibGVkRnJvbUZpZWxkc2V0KG5vZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBpc05vZGVNYXRjaGluZ1NlbGVjdG9yVGFiYmFibGUgPSBmdW5jdGlvbiBpc05vZGVNYXRjaGluZ1NlbGVjdG9yVGFiYmFibGUob3B0aW9ucywgbm9kZSkge1xuICBpZiAoaXNOb25UYWJiYWJsZVJhZGlvKG5vZGUpIHx8IGdldFRhYkluZGV4KG5vZGUpIDwgMCB8fCAhaXNOb2RlTWF0Y2hpbmdTZWxlY3RvckZvY3VzYWJsZShvcHRpb25zLCBub2RlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgaXNWYWxpZFNoYWRvd1Jvb3RUYWJiYWJsZSA9IGZ1bmN0aW9uIGlzVmFsaWRTaGFkb3dSb290VGFiYmFibGUoc2hhZG93SG9zdE5vZGUpIHtcbiAgdmFyIHRhYkluZGV4ID0gcGFyc2VJbnQoc2hhZG93SG9zdE5vZGUuZ2V0QXR0cmlidXRlKCd0YWJpbmRleCcpLCAxMCk7XG4gIGlmIChpc05hTih0YWJJbmRleCkgfHwgdGFiSW5kZXggPj0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIC8vIElmIGEgY3VzdG9tIGVsZW1lbnQgaGFzIGFuIGV4cGxpY2l0IG5lZ2F0aXZlIHRhYmluZGV4LFxuICAvLyBicm93c2VycyB3aWxsIG5vdCBhbGxvdyB0YWIgdGFyZ2V0aW5nIHNhaWQgZWxlbWVudCdzIGNoaWxkcmVuLlxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7QXJyYXkuPEVsZW1lbnR8Q2FuZGlkYXRlU2NvcGU+fSBjYW5kaWRhdGVzXG4gKiBAcmV0dXJucyBFbGVtZW50W11cbiAqL1xudmFyIHNvcnRCeU9yZGVyID0gZnVuY3Rpb24gc29ydEJ5T3JkZXIoY2FuZGlkYXRlcykge1xuICB2YXIgcmVndWxhclRhYmJhYmxlcyA9IFtdO1xuICB2YXIgb3JkZXJlZFRhYmJhYmxlcyA9IFtdO1xuICBjYW5kaWRhdGVzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGkpIHtcbiAgICB2YXIgaXNTY29wZSA9ICEhaXRlbS5zY29wZVBhcmVudDtcbiAgICB2YXIgZWxlbWVudCA9IGlzU2NvcGUgPyBpdGVtLnNjb3BlUGFyZW50IDogaXRlbTtcbiAgICB2YXIgY2FuZGlkYXRlVGFiaW5kZXggPSBnZXRTb3J0T3JkZXJUYWJJbmRleChlbGVtZW50LCBpc1Njb3BlKTtcbiAgICB2YXIgZWxlbWVudHMgPSBpc1Njb3BlID8gc29ydEJ5T3JkZXIoaXRlbS5jYW5kaWRhdGVzKSA6IGVsZW1lbnQ7XG4gICAgaWYgKGNhbmRpZGF0ZVRhYmluZGV4ID09PSAwKSB7XG4gICAgICBpc1Njb3BlID8gcmVndWxhclRhYmJhYmxlcy5wdXNoLmFwcGx5KHJlZ3VsYXJUYWJiYWJsZXMsIGVsZW1lbnRzKSA6IHJlZ3VsYXJUYWJiYWJsZXMucHVzaChlbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3JkZXJlZFRhYmJhYmxlcy5wdXNoKHtcbiAgICAgICAgZG9jdW1lbnRPcmRlcjogaSxcbiAgICAgICAgdGFiSW5kZXg6IGNhbmRpZGF0ZVRhYmluZGV4LFxuICAgICAgICBpdGVtOiBpdGVtLFxuICAgICAgICBpc1Njb3BlOiBpc1Njb3BlLFxuICAgICAgICBjb250ZW50OiBlbGVtZW50c1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG9yZGVyZWRUYWJiYWJsZXMuc29ydChzb3J0T3JkZXJlZFRhYmJhYmxlcykucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHNvcnRhYmxlKSB7XG4gICAgc29ydGFibGUuaXNTY29wZSA/IGFjYy5wdXNoLmFwcGx5KGFjYywgc29ydGFibGUuY29udGVudCkgOiBhY2MucHVzaChzb3J0YWJsZS5jb250ZW50KTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSkuY29uY2F0KHJlZ3VsYXJUYWJiYWJsZXMpO1xufTtcbnZhciB0YWJiYWJsZSA9IGZ1bmN0aW9uIHRhYmJhYmxlKGNvbnRhaW5lciwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIGNhbmRpZGF0ZXM7XG4gIGlmIChvcHRpb25zLmdldFNoYWRvd1Jvb3QpIHtcbiAgICBjYW5kaWRhdGVzID0gZ2V0Q2FuZGlkYXRlc0l0ZXJhdGl2ZWx5KFtjb250YWluZXJdLCBvcHRpb25zLmluY2x1ZGVDb250YWluZXIsIHtcbiAgICAgIGZpbHRlcjogaXNOb2RlTWF0Y2hpbmdTZWxlY3RvclRhYmJhYmxlLmJpbmQobnVsbCwgb3B0aW9ucyksXG4gICAgICBmbGF0dGVuOiBmYWxzZSxcbiAgICAgIGdldFNoYWRvd1Jvb3Q6IG9wdGlvbnMuZ2V0U2hhZG93Um9vdCxcbiAgICAgIHNoYWRvd1Jvb3RGaWx0ZXI6IGlzVmFsaWRTaGFkb3dSb290VGFiYmFibGVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBjYW5kaWRhdGVzID0gZ2V0Q2FuZGlkYXRlcyhjb250YWluZXIsIG9wdGlvbnMuaW5jbHVkZUNvbnRhaW5lciwgaXNOb2RlTWF0Y2hpbmdTZWxlY3RvclRhYmJhYmxlLmJpbmQobnVsbCwgb3B0aW9ucykpO1xuICB9XG4gIHJldHVybiBzb3J0QnlPcmRlcihjYW5kaWRhdGVzKTtcbn07XG52YXIgZm9jdXNhYmxlID0gZnVuY3Rpb24gZm9jdXNhYmxlKGNvbnRhaW5lciwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIGNhbmRpZGF0ZXM7XG4gIGlmIChvcHRpb25zLmdldFNoYWRvd1Jvb3QpIHtcbiAgICBjYW5kaWRhdGVzID0gZ2V0Q2FuZGlkYXRlc0l0ZXJhdGl2ZWx5KFtjb250YWluZXJdLCBvcHRpb25zLmluY2x1ZGVDb250YWluZXIsIHtcbiAgICAgIGZpbHRlcjogaXNOb2RlTWF0Y2hpbmdTZWxlY3RvckZvY3VzYWJsZS5iaW5kKG51bGwsIG9wdGlvbnMpLFxuICAgICAgZmxhdHRlbjogdHJ1ZSxcbiAgICAgIGdldFNoYWRvd1Jvb3Q6IG9wdGlvbnMuZ2V0U2hhZG93Um9vdFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGNhbmRpZGF0ZXMgPSBnZXRDYW5kaWRhdGVzKGNvbnRhaW5lciwgb3B0aW9ucy5pbmNsdWRlQ29udGFpbmVyLCBpc05vZGVNYXRjaGluZ1NlbGVjdG9yRm9jdXNhYmxlLmJpbmQobnVsbCwgb3B0aW9ucykpO1xuICB9XG4gIHJldHVybiBjYW5kaWRhdGVzO1xufTtcbnZhciBpc1RhYmJhYmxlID0gZnVuY3Rpb24gaXNUYWJiYWJsZShub2RlLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBpZiAoIW5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIG5vZGUgcHJvdmlkZWQnKTtcbiAgfVxuICBpZiAobWF0Y2hlcy5jYWxsKG5vZGUsIGNhbmRpZGF0ZVNlbGVjdG9yKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGlzTm9kZU1hdGNoaW5nU2VsZWN0b3JUYWJiYWJsZShvcHRpb25zLCBub2RlKTtcbn07XG52YXIgZm9jdXNhYmxlQ2FuZGlkYXRlU2VsZWN0b3IgPSAvKiAjX19QVVJFX18gKi9jYW5kaWRhdGVTZWxlY3RvcnMuY29uY2F0KCdpZnJhbWUnKS5qb2luKCcsJyk7XG52YXIgaXNGb2N1c2FibGUgPSBmdW5jdGlvbiBpc0ZvY3VzYWJsZShub2RlLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBpZiAoIW5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIG5vZGUgcHJvdmlkZWQnKTtcbiAgfVxuICBpZiAobWF0Y2hlcy5jYWxsKG5vZGUsIGZvY3VzYWJsZUNhbmRpZGF0ZVNlbGVjdG9yKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGlzTm9kZU1hdGNoaW5nU2VsZWN0b3JGb2N1c2FibGUob3B0aW9ucywgbm9kZSk7XG59O1xuXG5leHBvcnQgeyBmb2N1c2FibGUsIGdldFRhYkluZGV4LCBpc0ZvY3VzYWJsZSwgaXNUYWJiYWJsZSwgdGFiYmFibGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmVzbS5qcy5tYXBcbiIsImltcG9ydCB7IGNvbXB1dGVQb3NpdGlvbiwgYXJyb3cgYXMgYXJyb3ckMiwgb2Zmc2V0IGFzIG9mZnNldCQxLCBzaGlmdCBhcyBzaGlmdCQxLCBsaW1pdFNoaWZ0IGFzIGxpbWl0U2hpZnQkMSwgZmxpcCBhcyBmbGlwJDEsIHNpemUgYXMgc2l6ZSQxLCBhdXRvUGxhY2VtZW50IGFzIGF1dG9QbGFjZW1lbnQkMSwgaGlkZSBhcyBoaWRlJDEsIGlubGluZSBhcyBpbmxpbmUkMSB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuZXhwb3J0IHsgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIHBsYXRmb3JtIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5cbnZhciBpbmRleCA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgPyB1c2VMYXlvdXRFZmZlY3QgOiB1c2VFZmZlY3Q7XG5cbi8vIEZvcmsgb2YgYGZhc3QtZGVlcC1lcXVhbGAgdGhhdCBvbmx5IGRvZXMgdGhlIGNvbXBhcmlzb25zIHdlIG5lZWQgYW5kIGNvbXBhcmVzXG4vLyBmdW5jdGlvbnNcbmZ1bmN0aW9uIGRlZXBFcXVhbChhLCBiKSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHR5cGVvZiBhICE9PSB0eXBlb2YgYikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodHlwZW9mIGEgPT09ICdmdW5jdGlvbicgJiYgYS50b1N0cmluZygpID09PSBiLnRvU3RyaW5nKCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBsZXQgbGVuZ3RoO1xuICBsZXQgaTtcbiAgbGV0IGtleXM7XG4gIGlmIChhICYmIGIgJiYgdHlwZW9mIGEgPT09ICdvYmplY3QnKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgIGxlbmd0aCA9IGEubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOykge1xuICAgICAgICBpZiAoIWRlZXBFcXVhbChhW2ldLCBiW2ldKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGtleXMgPSBPYmplY3Qua2V5cyhhKTtcbiAgICBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICBpZiAobGVuZ3RoICE9PSBPYmplY3Qua2V5cyhiKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KSB7XG4gICAgICBpZiAoIXt9Lmhhc093blByb3BlcnR5LmNhbGwoYiwga2V5c1tpXSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgICBpZiAoa2V5ID09PSAnX293bmVyJyAmJiBhLiQkdHlwZW9mKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFkZWVwRXF1YWwoYVtrZXldLCBiW2tleV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGEgIT09IGEgJiYgYiAhPT0gYjtcbn1cblxuZnVuY3Rpb24gZ2V0RFBSKGVsZW1lbnQpIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgY29uc3Qgd2luID0gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IHx8IHdpbmRvdztcbiAgcmV0dXJuIHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG59XG5cbmZ1bmN0aW9uIHJvdW5kQnlEUFIoZWxlbWVudCwgdmFsdWUpIHtcbiAgY29uc3QgZHByID0gZ2V0RFBSKGVsZW1lbnQpO1xuICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIGRwcikgLyBkcHI7XG59XG5cbmZ1bmN0aW9uIHVzZUxhdGVzdFJlZih2YWx1ZSkge1xuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWYodmFsdWUpO1xuICBpbmRleCgoKSA9PiB7XG4gICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZWY7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhIGZsb2F0aW5nIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdXNlRmxvYXRpbmdcbiAqL1xuZnVuY3Rpb24gdXNlRmxvYXRpbmcob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQgPSAnYm90dG9tJyxcbiAgICBzdHJhdGVneSA9ICdhYnNvbHV0ZScsXG4gICAgbWlkZGxld2FyZSA9IFtdLFxuICAgIHBsYXRmb3JtLFxuICAgIGVsZW1lbnRzOiB7XG4gICAgICByZWZlcmVuY2U6IGV4dGVybmFsUmVmZXJlbmNlLFxuICAgICAgZmxvYXRpbmc6IGV4dGVybmFsRmxvYXRpbmdcbiAgICB9ID0ge30sXG4gICAgdHJhbnNmb3JtID0gdHJ1ZSxcbiAgICB3aGlsZUVsZW1lbnRzTW91bnRlZCxcbiAgICBvcGVuXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBbZGF0YSwgc2V0RGF0YV0gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgeDogMCxcbiAgICB5OiAwLFxuICAgIHN0cmF0ZWd5LFxuICAgIHBsYWNlbWVudCxcbiAgICBtaWRkbGV3YXJlRGF0YToge30sXG4gICAgaXNQb3NpdGlvbmVkOiBmYWxzZVxuICB9KTtcbiAgY29uc3QgW2xhdGVzdE1pZGRsZXdhcmUsIHNldExhdGVzdE1pZGRsZXdhcmVdID0gUmVhY3QudXNlU3RhdGUobWlkZGxld2FyZSk7XG4gIGlmICghZGVlcEVxdWFsKGxhdGVzdE1pZGRsZXdhcmUsIG1pZGRsZXdhcmUpKSB7XG4gICAgc2V0TGF0ZXN0TWlkZGxld2FyZShtaWRkbGV3YXJlKTtcbiAgfVxuICBjb25zdCBbX3JlZmVyZW5jZSwgX3NldFJlZmVyZW5jZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW19mbG9hdGluZywgX3NldEZsb2F0aW5nXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBzZXRSZWZlcmVuY2UgPSBSZWFjdC51c2VDYWxsYmFjayhub2RlID0+IHtcbiAgICBpZiAobm9kZSAhPT0gcmVmZXJlbmNlUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJlZmVyZW5jZVJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgIF9zZXRSZWZlcmVuY2Uobm9kZSk7XG4gICAgfVxuICB9LCBbXSk7XG4gIGNvbnN0IHNldEZsb2F0aW5nID0gUmVhY3QudXNlQ2FsbGJhY2sobm9kZSA9PiB7XG4gICAgaWYgKG5vZGUgIT09IGZsb2F0aW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgIGZsb2F0aW5nUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgX3NldEZsb2F0aW5nKG5vZGUpO1xuICAgIH1cbiAgfSwgW10pO1xuICBjb25zdCByZWZlcmVuY2VFbCA9IGV4dGVybmFsUmVmZXJlbmNlIHx8IF9yZWZlcmVuY2U7XG4gIGNvbnN0IGZsb2F0aW5nRWwgPSBleHRlcm5hbEZsb2F0aW5nIHx8IF9mbG9hdGluZztcbiAgY29uc3QgcmVmZXJlbmNlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBmbG9hdGluZ1JlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgZGF0YVJlZiA9IFJlYWN0LnVzZVJlZihkYXRhKTtcbiAgY29uc3QgaGFzV2hpbGVFbGVtZW50c01vdW50ZWQgPSB3aGlsZUVsZW1lbnRzTW91bnRlZCAhPSBudWxsO1xuICBjb25zdCB3aGlsZUVsZW1lbnRzTW91bnRlZFJlZiA9IHVzZUxhdGVzdFJlZih3aGlsZUVsZW1lbnRzTW91bnRlZCk7XG4gIGNvbnN0IHBsYXRmb3JtUmVmID0gdXNlTGF0ZXN0UmVmKHBsYXRmb3JtKTtcbiAgY29uc3Qgb3BlblJlZiA9IHVzZUxhdGVzdFJlZihvcGVuKTtcbiAgY29uc3QgdXBkYXRlID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghcmVmZXJlbmNlUmVmLmN1cnJlbnQgfHwgIWZsb2F0aW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgcGxhY2VtZW50LFxuICAgICAgc3RyYXRlZ3ksXG4gICAgICBtaWRkbGV3YXJlOiBsYXRlc3RNaWRkbGV3YXJlXG4gICAgfTtcbiAgICBpZiAocGxhdGZvcm1SZWYuY3VycmVudCkge1xuICAgICAgY29uZmlnLnBsYXRmb3JtID0gcGxhdGZvcm1SZWYuY3VycmVudDtcbiAgICB9XG4gICAgY29tcHV0ZVBvc2l0aW9uKHJlZmVyZW5jZVJlZi5jdXJyZW50LCBmbG9hdGluZ1JlZi5jdXJyZW50LCBjb25maWcpLnRoZW4oZGF0YSA9PiB7XG4gICAgICBjb25zdCBmdWxsRGF0YSA9IHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgLy8gVGhlIGZsb2F0aW5nIGVsZW1lbnQncyBwb3NpdGlvbiBtYXkgYmUgcmVjb21wdXRlZCB3aGlsZSBpdCdzIGNsb3NlZFxuICAgICAgICAvLyBidXQgc3RpbGwgbW91bnRlZCAoc3VjaCBhcyB3aGVuIHRyYW5zaXRpb25pbmcgb3V0KS4gVG8gZW5zdXJlXG4gICAgICAgIC8vIGBpc1Bvc2l0aW9uZWRgIHdpbGwgYmUgYGZhbHNlYCBpbml0aWFsbHkgb24gdGhlIG5leHQgb3BlbiwgYXZvaWRcbiAgICAgICAgLy8gc2V0dGluZyBpdCB0byBgdHJ1ZWAgd2hlbiBgb3BlbiA9PT0gZmFsc2VgIChtdXN0IGJlIHNwZWNpZmllZCkuXG4gICAgICAgIGlzUG9zaXRpb25lZDogb3BlblJlZi5jdXJyZW50ICE9PSBmYWxzZVxuICAgICAgfTtcbiAgICAgIGlmIChpc01vdW50ZWRSZWYuY3VycmVudCAmJiAhZGVlcEVxdWFsKGRhdGFSZWYuY3VycmVudCwgZnVsbERhdGEpKSB7XG4gICAgICAgIGRhdGFSZWYuY3VycmVudCA9IGZ1bGxEYXRhO1xuICAgICAgICBSZWFjdERPTS5mbHVzaFN5bmMoKCkgPT4ge1xuICAgICAgICAgIHNldERhdGEoZnVsbERhdGEpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW2xhdGVzdE1pZGRsZXdhcmUsIHBsYWNlbWVudCwgc3RyYXRlZ3ksIHBsYXRmb3JtUmVmLCBvcGVuUmVmXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAob3BlbiA9PT0gZmFsc2UgJiYgZGF0YVJlZi5jdXJyZW50LmlzUG9zaXRpb25lZCkge1xuICAgICAgZGF0YVJlZi5jdXJyZW50LmlzUG9zaXRpb25lZCA9IGZhbHNlO1xuICAgICAgc2V0RGF0YShkYXRhID0+ICh7XG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIGlzUG9zaXRpb25lZDogZmFsc2VcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIFtvcGVuXSk7XG4gIGNvbnN0IGlzTW91bnRlZFJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpc01vdW50ZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlzTW91bnRlZFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgfTtcbiAgfSwgW10pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKHJlZmVyZW5jZUVsKSByZWZlcmVuY2VSZWYuY3VycmVudCA9IHJlZmVyZW5jZUVsO1xuICAgIGlmIChmbG9hdGluZ0VsKSBmbG9hdGluZ1JlZi5jdXJyZW50ID0gZmxvYXRpbmdFbDtcbiAgICBpZiAocmVmZXJlbmNlRWwgJiYgZmxvYXRpbmdFbCkge1xuICAgICAgaWYgKHdoaWxlRWxlbWVudHNNb3VudGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHdoaWxlRWxlbWVudHNNb3VudGVkUmVmLmN1cnJlbnQocmVmZXJlbmNlRWwsIGZsb2F0aW5nRWwsIHVwZGF0ZSk7XG4gICAgICB9XG4gICAgICB1cGRhdGUoKTtcbiAgICB9XG4gIH0sIFtyZWZlcmVuY2VFbCwgZmxvYXRpbmdFbCwgdXBkYXRlLCB3aGlsZUVsZW1lbnRzTW91bnRlZFJlZiwgaGFzV2hpbGVFbGVtZW50c01vdW50ZWRdKTtcbiAgY29uc3QgcmVmcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICByZWZlcmVuY2U6IHJlZmVyZW5jZVJlZixcbiAgICBmbG9hdGluZzogZmxvYXRpbmdSZWYsXG4gICAgc2V0UmVmZXJlbmNlLFxuICAgIHNldEZsb2F0aW5nXG4gIH0pLCBbc2V0UmVmZXJlbmNlLCBzZXRGbG9hdGluZ10pO1xuICBjb25zdCBlbGVtZW50cyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICByZWZlcmVuY2U6IHJlZmVyZW5jZUVsLFxuICAgIGZsb2F0aW5nOiBmbG9hdGluZ0VsXG4gIH0pLCBbcmVmZXJlbmNlRWwsIGZsb2F0aW5nRWxdKTtcbiAgY29uc3QgZmxvYXRpbmdTdHlsZXMgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsU3R5bGVzID0ge1xuICAgICAgcG9zaXRpb246IHN0cmF0ZWd5LFxuICAgICAgbGVmdDogMCxcbiAgICAgIHRvcDogMFxuICAgIH07XG4gICAgaWYgKCFlbGVtZW50cy5mbG9hdGluZykge1xuICAgICAgcmV0dXJuIGluaXRpYWxTdHlsZXM7XG4gICAgfVxuICAgIGNvbnN0IHggPSByb3VuZEJ5RFBSKGVsZW1lbnRzLmZsb2F0aW5nLCBkYXRhLngpO1xuICAgIGNvbnN0IHkgPSByb3VuZEJ5RFBSKGVsZW1lbnRzLmZsb2F0aW5nLCBkYXRhLnkpO1xuICAgIGlmICh0cmFuc2Zvcm0pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmluaXRpYWxTdHlsZXMsXG4gICAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoXCIgKyB4ICsgXCJweCwgXCIgKyB5ICsgXCJweClcIixcbiAgICAgICAgLi4uKGdldERQUihlbGVtZW50cy5mbG9hdGluZykgPj0gMS41ICYmIHtcbiAgICAgICAgICB3aWxsQ2hhbmdlOiAndHJhbnNmb3JtJ1xuICAgICAgICB9KVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHBvc2l0aW9uOiBzdHJhdGVneSxcbiAgICAgIGxlZnQ6IHgsXG4gICAgICB0b3A6IHlcbiAgICB9O1xuICB9LCBbc3RyYXRlZ3ksIHRyYW5zZm9ybSwgZWxlbWVudHMuZmxvYXRpbmcsIGRhdGEueCwgZGF0YS55XSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgLi4uZGF0YSxcbiAgICB1cGRhdGUsXG4gICAgcmVmcyxcbiAgICBlbGVtZW50cyxcbiAgICBmbG9hdGluZ1N0eWxlc1xuICB9KSwgW2RhdGEsIHVwZGF0ZSwgcmVmcywgZWxlbWVudHMsIGZsb2F0aW5nU3R5bGVzXSk7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogVGhpcyB3cmFwcyB0aGUgY29yZSBgYXJyb3dgIG1pZGRsZXdhcmUgdG8gYWxsb3cgUmVhY3QgcmVmcyBhcyB0aGUgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyQxID0gb3B0aW9ucyA9PiB7XG4gIGZ1bmN0aW9uIGlzUmVmKHZhbHVlKSB7XG4gICAgcmV0dXJuIHt9Lmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjdXJyZW50Jyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYXJyb3cnLFxuICAgIG9wdGlvbnMsXG4gICAgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZWxlbWVudCxcbiAgICAgICAgcGFkZGluZ1xuICAgICAgfSA9IHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nID8gb3B0aW9ucyhzdGF0ZSkgOiBvcHRpb25zO1xuICAgICAgaWYgKGVsZW1lbnQgJiYgaXNSZWYoZWxlbWVudCkpIHtcbiAgICAgICAgaWYgKGVsZW1lbnQuY3VycmVudCAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGFycm93JDIoe1xuICAgICAgICAgICAgZWxlbWVudDogZWxlbWVudC5jdXJyZW50LFxuICAgICAgICAgICAgcGFkZGluZ1xuICAgICAgICAgIH0pLmZuKHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gYXJyb3ckMih7XG4gICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICBwYWRkaW5nXG4gICAgICAgIH0pLmZuKHN0YXRlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSAob3B0aW9ucywgZGVwcykgPT4gKHtcbiAgLi4ub2Zmc2V0JDEob3B0aW9ucyksXG4gIG9wdGlvbnM6IFtvcHRpb25zLCBkZXBzXVxufSk7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IChvcHRpb25zLCBkZXBzKSA9PiAoe1xuICAuLi5zaGlmdCQxKG9wdGlvbnMpLFxuICBvcHRpb25zOiBbb3B0aW9ucywgZGVwc11cbn0pO1xuXG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gKG9wdGlvbnMsIGRlcHMpID0+ICh7XG4gIC4uLmxpbWl0U2hpZnQkMShvcHRpb25zKSxcbiAgb3B0aW9uczogW29wdGlvbnMsIGRlcHNdXG59KTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgZmxpcHBpbmcgdGhlIGBwbGFjZW1lbnRgXG4gKiBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcgd2hlbiB0aGUgcHJlZmVycmVkIHBsYWNlbWVudChzKSB3aWxsIG92ZXJmbG93IHRoZVxuICogY2xpcHBpbmcgYm91bmRhcnkuIEFsdGVybmF0aXZlIHRvIGBhdXRvUGxhY2VtZW50YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwXG4gKi9cbmNvbnN0IGZsaXAgPSAob3B0aW9ucywgZGVwcykgPT4gKHtcbiAgLi4uZmxpcCQxKG9wdGlvbnMpLFxuICBvcHRpb25zOiBbb3B0aW9ucywgZGVwc11cbn0pO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSAob3B0aW9ucywgZGVwcykgPT4gKHtcbiAgLi4uc2l6ZSQxKG9wdGlvbnMpLFxuICBvcHRpb25zOiBbb3B0aW9ucywgZGVwc11cbn0pO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBjaG9vc2luZyB0aGUgcGxhY2VtZW50XG4gKiB0aGF0IGhhcyB0aGUgbW9zdCBzcGFjZSBhdmFpbGFibGUgYXV0b21hdGljYWxseSwgd2l0aG91dCBuZWVkaW5nIHRvIHNwZWNpZnkgYVxuICogcHJlZmVycmVkIHBsYWNlbWVudC4gQWx0ZXJuYXRpdmUgdG8gYGZsaXBgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9QbGFjZW1lbnRcbiAqL1xuY29uc3QgYXV0b1BsYWNlbWVudCA9IChvcHRpb25zLCBkZXBzKSA9PiAoe1xuICAuLi5hdXRvUGxhY2VtZW50JDEob3B0aW9ucyksXG4gIG9wdGlvbnM6IFtvcHRpb25zLCBkZXBzXVxufSk7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gKG9wdGlvbnMsIGRlcHMpID0+ICh7XG4gIC4uLmhpZGUkMShvcHRpb25zKSxcbiAgb3B0aW9uczogW29wdGlvbnMsIGRlcHNdXG59KTtcblxuLyoqXG4gKiBQcm92aWRlcyBpbXByb3ZlZCBwb3NpdGlvbmluZyBmb3IgaW5saW5lIHJlZmVyZW5jZSBlbGVtZW50cyB0aGF0IGNhbiBzcGFuXG4gKiBvdmVyIG11bHRpcGxlIGxpbmVzLCBzdWNoIGFzIGh5cGVybGlua3Mgb3IgcmFuZ2Ugc2VsZWN0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9pbmxpbmVcbiAqL1xuY29uc3QgaW5saW5lID0gKG9wdGlvbnMsIGRlcHMpID0+ICh7XG4gIC4uLmlubGluZSQxKG9wdGlvbnMpLFxuICBvcHRpb25zOiBbb3B0aW9ucywgZGVwc11cbn0pO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIFRoaXMgd3JhcHMgdGhlIGNvcmUgYGFycm93YCBtaWRkbGV3YXJlIHRvIGFsbG93IFJlYWN0IHJlZnMgYXMgdGhlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSAob3B0aW9ucywgZGVwcykgPT4gKHtcbiAgLi4uYXJyb3ckMShvcHRpb25zKSxcbiAgb3B0aW9uczogW29wdGlvbnMsIGRlcHNdXG59KTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBzaGlmdCwgc2l6ZSwgdXNlRmxvYXRpbmcgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUxheW91dEVmZmVjdCwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBzdG9wRXZlbnQsIGdldERvY3VtZW50LCBpc01vdXNlTGlrZVBvaW50ZXJUeXBlLCBjb250YWlucywgYWN0aXZlRWxlbWVudCwgaXNTYWZhcmksIGlzVHlwZWFibGVDb21ib2JveCwgaXNWaXJ0dWFsQ2xpY2ssIGlzVmlydHVhbFBvaW50ZXJFdmVudCwgZ2V0VGFyZ2V0LCBnZXRQbGF0Zm9ybSwgaXNUeXBlYWJsZUVsZW1lbnQsIGlzUmVhY3RFdmVudCwgaXNSb290RWxlbWVudCwgaXNFdmVudFRhcmdldFdpdGhpbiwgaXNNYWMsIGdldFVzZXJBZ2VudCB9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdC91dGlscyc7XG5pbXBvcnQgeyBmbG9vciwgZXZhbHVhdGUgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgaXNFbGVtZW50LCBnZXROb2RlTmFtZSwgaXNIVE1MRWxlbWVudCwgZ2V0V2luZG93LCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGdldFBhcmVudE5vZGUgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcbmltcG9ydCB7IHRhYmJhYmxlLCBpc1RhYmJhYmxlIH0gZnJvbSAndGFiYmFibGUnO1xuaW1wb3J0ICogYXMgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB7IGdldE92ZXJmbG93QW5jZXN0b3JzLCB1c2VGbG9hdGluZyBhcyB1c2VGbG9hdGluZyQxLCBvZmZzZXQsIGRldGVjdE92ZXJmbG93IH0gZnJvbSAnQGZsb2F0aW5nLXVpL3JlYWN0LWRvbSc7XG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBwbGF0Zm9ybSwgc2hpZnQsIHNpemUgfSBmcm9tICdAZmxvYXRpbmctdWkvcmVhY3QtZG9tJztcblxuLyoqXG4gKiBNZXJnZXMgYW4gYXJyYXkgb2YgcmVmcyBpbnRvIGEgc2luZ2xlIG1lbW9pemVkIGNhbGxiYWNrIHJlZiBvciBgbnVsbGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvcmVhY3QtdXRpbHMjdXNlbWVyZ2VyZWZzXG4gKi9cbmZ1bmN0aW9uIHVzZU1lcmdlUmVmcyhyZWZzKSB7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBpZiAocmVmcy5ldmVyeShyZWYgPT4gcmVmID09IG51bGwpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlID0+IHtcbiAgICAgIHJlZnMuZm9yRWFjaChyZWYgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJlZih2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVmICE9IG51bGwpIHtcbiAgICAgICAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgcmVmcyk7XG59XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tdWkvbWF0ZXJpYWwtdWkvaXNzdWVzLzQxMTkwI2lzc3VlY29tbWVudC0yMDQwODczMzc5XG5jb25zdCBTYWZlUmVhY3QgPSB7XG4gIC4uLlJlYWN0XG59O1xuXG5jb25zdCB1c2VJbnNlcnRpb25FZmZlY3QgPSBTYWZlUmVhY3QudXNlSW5zZXJ0aW9uRWZmZWN0O1xuY29uc3QgdXNlU2FmZUluc2VydGlvbkVmZmVjdCA9IHVzZUluc2VydGlvbkVmZmVjdCB8fCAoZm4gPT4gZm4oKSk7XG5mdW5jdGlvbiB1c2VFZmZlY3RFdmVudChjYWxsYmFjaykge1xuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWYoKCkgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNhbGwgYW4gZXZlbnQgaGFuZGxlciB3aGlsZSByZW5kZXJpbmcuJyk7XG4gICAgfVxuICB9KTtcbiAgdXNlU2FmZUluc2VydGlvbkVmZmVjdCgoKSA9PiB7XG4gICAgcmVmLmN1cnJlbnQgPSBjYWxsYmFjaztcbiAgfSk7XG4gIHJldHVybiBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICByZXR1cm4gcmVmLmN1cnJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZi5jdXJyZW50KC4uLmFyZ3MpO1xuICB9LCBbXSk7XG59XG5cbmNvbnN0IEFSUk9XX1VQID0gJ0Fycm93VXAnO1xuY29uc3QgQVJST1dfRE9XTiA9ICdBcnJvd0Rvd24nO1xuY29uc3QgQVJST1dfTEVGVCA9ICdBcnJvd0xlZnQnO1xuY29uc3QgQVJST1dfUklHSFQgPSAnQXJyb3dSaWdodCc7XG5mdW5jdGlvbiBpc0RpZmZlcmVudFJvdyhpbmRleCwgY29scywgcHJldlJvdykge1xuICByZXR1cm4gTWF0aC5mbG9vcihpbmRleCAvIGNvbHMpICE9PSBwcmV2Um93O1xufVxuZnVuY3Rpb24gaXNJbmRleE91dE9mQm91bmRzKGxpc3RSZWYsIGluZGV4KSB7XG4gIHJldHVybiBpbmRleCA8IDAgfHwgaW5kZXggPj0gbGlzdFJlZi5jdXJyZW50Lmxlbmd0aDtcbn1cbmZ1bmN0aW9uIGdldE1pbkluZGV4KGxpc3RSZWYsIGRpc2FibGVkSW5kaWNlcykge1xuICByZXR1cm4gZmluZE5vbkRpc2FibGVkSW5kZXgobGlzdFJlZiwge1xuICAgIGRpc2FibGVkSW5kaWNlc1xuICB9KTtcbn1cbmZ1bmN0aW9uIGdldE1heEluZGV4KGxpc3RSZWYsIGRpc2FibGVkSW5kaWNlcykge1xuICByZXR1cm4gZmluZE5vbkRpc2FibGVkSW5kZXgobGlzdFJlZiwge1xuICAgIGRlY3JlbWVudDogdHJ1ZSxcbiAgICBzdGFydGluZ0luZGV4OiBsaXN0UmVmLmN1cnJlbnQubGVuZ3RoLFxuICAgIGRpc2FibGVkSW5kaWNlc1xuICB9KTtcbn1cbmZ1bmN0aW9uIGZpbmROb25EaXNhYmxlZEluZGV4KGxpc3RSZWYsIF90ZW1wKSB7XG4gIGxldCB7XG4gICAgc3RhcnRpbmdJbmRleCA9IC0xLFxuICAgIGRlY3JlbWVudCA9IGZhbHNlLFxuICAgIGRpc2FibGVkSW5kaWNlcyxcbiAgICBhbW91bnQgPSAxXG4gIH0gPSBfdGVtcCA9PT0gdm9pZCAwID8ge30gOiBfdGVtcDtcbiAgY29uc3QgbGlzdCA9IGxpc3RSZWYuY3VycmVudDtcbiAgbGV0IGluZGV4ID0gc3RhcnRpbmdJbmRleDtcbiAgZG8ge1xuICAgIGluZGV4ICs9IGRlY3JlbWVudCA/IC1hbW91bnQgOiBhbW91bnQ7XG4gIH0gd2hpbGUgKGluZGV4ID49IDAgJiYgaW5kZXggPD0gbGlzdC5sZW5ndGggLSAxICYmIGlzRGlzYWJsZWQobGlzdCwgaW5kZXgsIGRpc2FibGVkSW5kaWNlcykpO1xuICByZXR1cm4gaW5kZXg7XG59XG5mdW5jdGlvbiBnZXRHcmlkTmF2aWdhdGVkSW5kZXgoZWxlbWVudHNSZWYsIF9yZWYpIHtcbiAgbGV0IHtcbiAgICBldmVudCxcbiAgICBvcmllbnRhdGlvbixcbiAgICBsb29wLFxuICAgIGNvbHMsXG4gICAgZGlzYWJsZWRJbmRpY2VzLFxuICAgIG1pbkluZGV4LFxuICAgIG1heEluZGV4LFxuICAgIHByZXZJbmRleCxcbiAgICBzdG9wRXZlbnQ6IHN0b3AgPSBmYWxzZVxuICB9ID0gX3JlZjtcbiAgbGV0IG5leHRJbmRleCA9IHByZXZJbmRleDtcbiAgaWYgKGV2ZW50LmtleSA9PT0gQVJST1dfVVApIHtcbiAgICBzdG9wICYmIHN0b3BFdmVudChldmVudCk7XG4gICAgaWYgKHByZXZJbmRleCA9PT0gLTEpIHtcbiAgICAgIG5leHRJbmRleCA9IG1heEluZGV4O1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0SW5kZXggPSBmaW5kTm9uRGlzYWJsZWRJbmRleChlbGVtZW50c1JlZiwge1xuICAgICAgICBzdGFydGluZ0luZGV4OiBuZXh0SW5kZXgsXG4gICAgICAgIGFtb3VudDogY29scyxcbiAgICAgICAgZGVjcmVtZW50OiB0cnVlLFxuICAgICAgICBkaXNhYmxlZEluZGljZXNcbiAgICAgIH0pO1xuICAgICAgaWYgKGxvb3AgJiYgKHByZXZJbmRleCAtIGNvbHMgPCBtaW5JbmRleCB8fCBuZXh0SW5kZXggPCAwKSkge1xuICAgICAgICBjb25zdCBjb2wgPSBwcmV2SW5kZXggJSBjb2xzO1xuICAgICAgICBjb25zdCBtYXhDb2wgPSBtYXhJbmRleCAlIGNvbHM7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IG1heEluZGV4IC0gKG1heENvbCAtIGNvbCk7XG4gICAgICAgIGlmIChtYXhDb2wgPT09IGNvbCkge1xuICAgICAgICAgIG5leHRJbmRleCA9IG1heEluZGV4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5leHRJbmRleCA9IG1heENvbCA+IGNvbCA/IG9mZnNldCA6IG9mZnNldCAtIGNvbHM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzSW5kZXhPdXRPZkJvdW5kcyhlbGVtZW50c1JlZiwgbmV4dEluZGV4KSkge1xuICAgICAgbmV4dEluZGV4ID0gcHJldkluZGV4O1xuICAgIH1cbiAgfVxuICBpZiAoZXZlbnQua2V5ID09PSBBUlJPV19ET1dOKSB7XG4gICAgc3RvcCAmJiBzdG9wRXZlbnQoZXZlbnQpO1xuICAgIGlmIChwcmV2SW5kZXggPT09IC0xKSB7XG4gICAgICBuZXh0SW5kZXggPSBtaW5JbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dEluZGV4ID0gZmluZE5vbkRpc2FibGVkSW5kZXgoZWxlbWVudHNSZWYsIHtcbiAgICAgICAgc3RhcnRpbmdJbmRleDogcHJldkluZGV4LFxuICAgICAgICBhbW91bnQ6IGNvbHMsXG4gICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgfSk7XG4gICAgICBpZiAobG9vcCAmJiBwcmV2SW5kZXggKyBjb2xzID4gbWF4SW5kZXgpIHtcbiAgICAgICAgbmV4dEluZGV4ID0gZmluZE5vbkRpc2FibGVkSW5kZXgoZWxlbWVudHNSZWYsIHtcbiAgICAgICAgICBzdGFydGluZ0luZGV4OiBwcmV2SW5kZXggJSBjb2xzIC0gY29scyxcbiAgICAgICAgICBhbW91bnQ6IGNvbHMsXG4gICAgICAgICAgZGlzYWJsZWRJbmRpY2VzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNJbmRleE91dE9mQm91bmRzKGVsZW1lbnRzUmVmLCBuZXh0SW5kZXgpKSB7XG4gICAgICBuZXh0SW5kZXggPSBwcmV2SW5kZXg7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVtYWlucyBvbiB0aGUgc2FtZSByb3cvY29sdW1uLlxuICBpZiAob3JpZW50YXRpb24gPT09ICdib3RoJykge1xuICAgIGNvbnN0IHByZXZSb3cgPSBmbG9vcihwcmV2SW5kZXggLyBjb2xzKTtcbiAgICBpZiAoZXZlbnQua2V5ID09PSBBUlJPV19SSUdIVCkge1xuICAgICAgc3RvcCAmJiBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgaWYgKHByZXZJbmRleCAlIGNvbHMgIT09IGNvbHMgLSAxKSB7XG4gICAgICAgIG5leHRJbmRleCA9IGZpbmROb25EaXNhYmxlZEluZGV4KGVsZW1lbnRzUmVmLCB7XG4gICAgICAgICAgc3RhcnRpbmdJbmRleDogcHJldkluZGV4LFxuICAgICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGxvb3AgJiYgaXNEaWZmZXJlbnRSb3cobmV4dEluZGV4LCBjb2xzLCBwcmV2Um93KSkge1xuICAgICAgICAgIG5leHRJbmRleCA9IGZpbmROb25EaXNhYmxlZEluZGV4KGVsZW1lbnRzUmVmLCB7XG4gICAgICAgICAgICBzdGFydGluZ0luZGV4OiBwcmV2SW5kZXggLSBwcmV2SW5kZXggJSBjb2xzIC0gMSxcbiAgICAgICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGxvb3ApIHtcbiAgICAgICAgbmV4dEluZGV4ID0gZmluZE5vbkRpc2FibGVkSW5kZXgoZWxlbWVudHNSZWYsIHtcbiAgICAgICAgICBzdGFydGluZ0luZGV4OiBwcmV2SW5kZXggLSBwcmV2SW5kZXggJSBjb2xzIC0gMSxcbiAgICAgICAgICBkaXNhYmxlZEluZGljZXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoaXNEaWZmZXJlbnRSb3cobmV4dEluZGV4LCBjb2xzLCBwcmV2Um93KSkge1xuICAgICAgICBuZXh0SW5kZXggPSBwcmV2SW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChldmVudC5rZXkgPT09IEFSUk9XX0xFRlQpIHtcbiAgICAgIHN0b3AgJiYgc3RvcEV2ZW50KGV2ZW50KTtcbiAgICAgIGlmIChwcmV2SW5kZXggJSBjb2xzICE9PSAwKSB7XG4gICAgICAgIG5leHRJbmRleCA9IGZpbmROb25EaXNhYmxlZEluZGV4KGVsZW1lbnRzUmVmLCB7XG4gICAgICAgICAgc3RhcnRpbmdJbmRleDogcHJldkluZGV4LFxuICAgICAgICAgIGRlY3JlbWVudDogdHJ1ZSxcbiAgICAgICAgICBkaXNhYmxlZEluZGljZXNcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChsb29wICYmIGlzRGlmZmVyZW50Um93KG5leHRJbmRleCwgY29scywgcHJldlJvdykpIHtcbiAgICAgICAgICBuZXh0SW5kZXggPSBmaW5kTm9uRGlzYWJsZWRJbmRleChlbGVtZW50c1JlZiwge1xuICAgICAgICAgICAgc3RhcnRpbmdJbmRleDogcHJldkluZGV4ICsgKGNvbHMgLSBwcmV2SW5kZXggJSBjb2xzKSxcbiAgICAgICAgICAgIGRlY3JlbWVudDogdHJ1ZSxcbiAgICAgICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGxvb3ApIHtcbiAgICAgICAgbmV4dEluZGV4ID0gZmluZE5vbkRpc2FibGVkSW5kZXgoZWxlbWVudHNSZWYsIHtcbiAgICAgICAgICBzdGFydGluZ0luZGV4OiBwcmV2SW5kZXggKyAoY29scyAtIHByZXZJbmRleCAlIGNvbHMpLFxuICAgICAgICAgIGRlY3JlbWVudDogdHJ1ZSxcbiAgICAgICAgICBkaXNhYmxlZEluZGljZXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoaXNEaWZmZXJlbnRSb3cobmV4dEluZGV4LCBjb2xzLCBwcmV2Um93KSkge1xuICAgICAgICBuZXh0SW5kZXggPSBwcmV2SW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGxhc3RSb3cgPSBmbG9vcihtYXhJbmRleCAvIGNvbHMpID09PSBwcmV2Um93O1xuICAgIGlmIChpc0luZGV4T3V0T2ZCb3VuZHMoZWxlbWVudHNSZWYsIG5leHRJbmRleCkpIHtcbiAgICAgIGlmIChsb29wICYmIGxhc3RSb3cpIHtcbiAgICAgICAgbmV4dEluZGV4ID0gZXZlbnQua2V5ID09PSBBUlJPV19MRUZUID8gbWF4SW5kZXggOiBmaW5kTm9uRGlzYWJsZWRJbmRleChlbGVtZW50c1JlZiwge1xuICAgICAgICAgIHN0YXJ0aW5nSW5kZXg6IHByZXZJbmRleCAtIHByZXZJbmRleCAlIGNvbHMgLSAxLFxuICAgICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5leHRJbmRleCA9IHByZXZJbmRleDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5leHRJbmRleDtcbn1cblxuLyoqIEZvciBlYWNoIGNlbGwgaW5kZXgsIGdldHMgdGhlIGl0ZW0gaW5kZXggdGhhdCBvY2N1cGllcyB0aGF0IGNlbGwgKi9cbmZ1bmN0aW9uIGJ1aWxkQ2VsbE1hcChzaXplcywgY29scywgZGVuc2UpIHtcbiAgY29uc3QgY2VsbE1hcCA9IFtdO1xuICBsZXQgc3RhcnRJbmRleCA9IDA7XG4gIHNpemVzLmZvckVhY2goKF9yZWYyLCBpbmRleCkgPT4ge1xuICAgIGxldCB7XG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodFxuICAgIH0gPSBfcmVmMjtcbiAgICBpZiAod2lkdGggPiBjb2xzKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIltGbG9hdGluZyBVSV06IEludmFsaWQgZ3JpZCAtIGl0ZW0gd2lkdGggYXQgaW5kZXggXCIgKyBpbmRleCArIFwiIGlzIGdyZWF0ZXIgdGhhbiBncmlkIGNvbHVtbnNcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBpdGVtUGxhY2VkID0gZmFsc2U7XG4gICAgaWYgKGRlbnNlKSB7XG4gICAgICBzdGFydEluZGV4ID0gMDtcbiAgICB9XG4gICAgd2hpbGUgKCFpdGVtUGxhY2VkKSB7XG4gICAgICBjb25zdCB0YXJnZXRDZWxscyA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aWR0aDsgaSsrKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgaGVpZ2h0OyBqKyspIHtcbiAgICAgICAgICB0YXJnZXRDZWxscy5wdXNoKHN0YXJ0SW5kZXggKyBpICsgaiAqIGNvbHMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc3RhcnRJbmRleCAlIGNvbHMgKyB3aWR0aCA8PSBjb2xzICYmIHRhcmdldENlbGxzLmV2ZXJ5KGNlbGwgPT4gY2VsbE1hcFtjZWxsXSA9PSBudWxsKSkge1xuICAgICAgICB0YXJnZXRDZWxscy5mb3JFYWNoKGNlbGwgPT4ge1xuICAgICAgICAgIGNlbGxNYXBbY2VsbF0gPSBpbmRleDtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0ZW1QbGFjZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhcnRJbmRleCsrO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gY29udmVydCBpbnRvIGEgbm9uLXNwYXJzZSBhcnJheVxuICByZXR1cm4gWy4uLmNlbGxNYXBdO1xufVxuXG4vKiogR2V0cyBjZWxsIGluZGV4IG9mIGFuIGl0ZW0ncyBjb3JuZXIgb3IgLTEgd2hlbiBpbmRleCBpcyAtMS4gKi9cbmZ1bmN0aW9uIGdldENlbGxJbmRleE9mQ29ybmVyKGluZGV4LCBzaXplcywgY2VsbE1hcCwgY29scywgY29ybmVyKSB7XG4gIGlmIChpbmRleCA9PT0gLTEpIHJldHVybiAtMTtcbiAgY29uc3QgZmlyc3RDZWxsSW5kZXggPSBjZWxsTWFwLmluZGV4T2YoaW5kZXgpO1xuICBjb25zdCBzaXplSXRlbSA9IHNpemVzW2luZGV4XTtcbiAgc3dpdGNoIChjb3JuZXIpIHtcbiAgICBjYXNlICd0bCc6XG4gICAgICByZXR1cm4gZmlyc3RDZWxsSW5kZXg7XG4gICAgY2FzZSAndHInOlxuICAgICAgaWYgKCFzaXplSXRlbSkge1xuICAgICAgICByZXR1cm4gZmlyc3RDZWxsSW5kZXg7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmlyc3RDZWxsSW5kZXggKyBzaXplSXRlbS53aWR0aCAtIDE7XG4gICAgY2FzZSAnYmwnOlxuICAgICAgaWYgKCFzaXplSXRlbSkge1xuICAgICAgICByZXR1cm4gZmlyc3RDZWxsSW5kZXg7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmlyc3RDZWxsSW5kZXggKyAoc2l6ZUl0ZW0uaGVpZ2h0IC0gMSkgKiBjb2xzO1xuICAgIGNhc2UgJ2JyJzpcbiAgICAgIHJldHVybiBjZWxsTWFwLmxhc3RJbmRleE9mKGluZGV4KTtcbiAgfVxufVxuXG4vKiogR2V0cyBhbGwgY2VsbCBpbmRpY2VzIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgc3BlY2lmaWVkIGluZGljZXMgKi9cbmZ1bmN0aW9uIGdldENlbGxJbmRpY2VzKGluZGljZXMsIGNlbGxNYXApIHtcbiAgcmV0dXJuIGNlbGxNYXAuZmxhdE1hcCgoaW5kZXgsIGNlbGxJbmRleCkgPT4gaW5kaWNlcy5pbmNsdWRlcyhpbmRleCkgPyBbY2VsbEluZGV4XSA6IFtdKTtcbn1cbmZ1bmN0aW9uIGlzRGlzYWJsZWQobGlzdCwgaW5kZXgsIGRpc2FibGVkSW5kaWNlcykge1xuICBpZiAoZGlzYWJsZWRJbmRpY2VzKSB7XG4gICAgcmV0dXJuIGRpc2FibGVkSW5kaWNlcy5pbmNsdWRlcyhpbmRleCk7XG4gIH1cbiAgY29uc3QgZWxlbWVudCA9IGxpc3RbaW5kZXhdO1xuICByZXR1cm4gZWxlbWVudCA9PSBudWxsIHx8IGVsZW1lbnQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJykgPT09ICd0cnVlJztcbn1cblxubGV0IHJhZklkID0gMDtcbmZ1bmN0aW9uIGVucXVldWVGb2N1cyhlbCwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBwcmV2ZW50U2Nyb2xsID0gZmFsc2UsXG4gICAgY2FuY2VsUHJldmlvdXMgPSB0cnVlLFxuICAgIHN5bmMgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY2FuY2VsUHJldmlvdXMgJiYgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpO1xuICBjb25zdCBleGVjID0gKCkgPT4gZWwgPT0gbnVsbCA/IHZvaWQgMCA6IGVsLmZvY3VzKHtcbiAgICBwcmV2ZW50U2Nyb2xsXG4gIH0pO1xuICBpZiAoc3luYykge1xuICAgIGV4ZWMoKTtcbiAgfSBlbHNlIHtcbiAgICByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShleGVjKTtcbiAgfVxufVxuXG52YXIgaW5kZXggPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnID8gdXNlTGF5b3V0RWZmZWN0IDogdXNlRWZmZWN0O1xuXG5mdW5jdGlvbiBzb3J0QnlEb2N1bWVudFBvc2l0aW9uKGEsIGIpIHtcbiAgY29uc3QgcG9zaXRpb24gPSBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpO1xuICBpZiAocG9zaXRpb24gJiBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORyB8fCBwb3NpdGlvbiAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGlmIChwb3NpdGlvbiAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HIHx8IHBvc2l0aW9uICYgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlOUykge1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuZnVuY3Rpb24gYXJlTWFwc0VxdWFsKG1hcDEsIG1hcDIpIHtcbiAgaWYgKG1hcDEuc2l6ZSAhPT0gbWFwMi5zaXplKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIG1hcDEuZW50cmllcygpKSB7XG4gICAgaWYgKHZhbHVlICE9PSBtYXAyLmdldChrZXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuY29uc3QgRmxvYXRpbmdMaXN0Q29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgcmVnaXN0ZXI6ICgpID0+IHt9LFxuICB1bnJlZ2lzdGVyOiAoKSA9PiB7fSxcbiAgbWFwOiAvKiNfX1BVUkVfXyovbmV3IE1hcCgpLFxuICBlbGVtZW50c1JlZjoge1xuICAgIGN1cnJlbnQ6IFtdXG4gIH1cbn0pO1xuLyoqXG4gKiBQcm92aWRlcyBjb250ZXh0IGZvciBhIGxpc3Qgb2YgaXRlbXMgd2l0aGluIHRoZSBmbG9hdGluZyBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL0Zsb2F0aW5nTGlzdFxuICovXG5mdW5jdGlvbiBGbG9hdGluZ0xpc3QocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNoaWxkcmVuLFxuICAgIGVsZW1lbnRzUmVmLFxuICAgIGxhYmVsc1JlZlxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IFttYXAsIHNldE1hcF0gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PiBuZXcgTWFwKCkpO1xuICBjb25zdCByZWdpc3RlciA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIHNldE1hcChwcmV2TWFwID0+IG5ldyBNYXAocHJldk1hcCkuc2V0KG5vZGUsIG51bGwpKTtcbiAgfSwgW10pO1xuICBjb25zdCB1bnJlZ2lzdGVyID0gUmVhY3QudXNlQ2FsbGJhY2sobm9kZSA9PiB7XG4gICAgc2V0TWFwKHByZXZNYXAgPT4ge1xuICAgICAgY29uc3QgbWFwID0gbmV3IE1hcChwcmV2TWFwKTtcbiAgICAgIG1hcC5kZWxldGUobm9kZSk7XG4gICAgICByZXR1cm4gbWFwO1xuICAgIH0pO1xuICB9LCBbXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBjb25zdCBuZXdNYXAgPSBuZXcgTWFwKG1hcCk7XG4gICAgY29uc3Qgbm9kZXMgPSBBcnJheS5mcm9tKG5ld01hcC5rZXlzKCkpLnNvcnQoc29ydEJ5RG9jdW1lbnRQb3NpdGlvbik7XG4gICAgbm9kZXMuZm9yRWFjaCgobm9kZSwgaW5kZXgpID0+IHtcbiAgICAgIG5ld01hcC5zZXQobm9kZSwgaW5kZXgpO1xuICAgIH0pO1xuICAgIGlmICghYXJlTWFwc0VxdWFsKG1hcCwgbmV3TWFwKSkge1xuICAgICAgc2V0TWFwKG5ld01hcCk7XG4gICAgfVxuICB9LCBbbWFwXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChGbG9hdGluZ0xpc3RDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICAgIHJlZ2lzdGVyLFxuICAgICAgdW5yZWdpc3RlcixcbiAgICAgIG1hcCxcbiAgICAgIGVsZW1lbnRzUmVmLFxuICAgICAgbGFiZWxzUmVmXG4gICAgfSksIFtyZWdpc3RlciwgdW5yZWdpc3RlciwgbWFwLCBlbGVtZW50c1JlZiwgbGFiZWxzUmVmXSlcbiAgfSwgY2hpbGRyZW4pO1xufVxuLyoqXG4gKiBVc2VkIHRvIHJlZ2lzdGVyIGEgbGlzdCBpdGVtIGFuZCBpdHMgaW5kZXggKERPTSBwb3NpdGlvbikgaW4gdGhlXG4gKiBgRmxvYXRpbmdMaXN0YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9GbG9hdGluZ0xpc3QjdXNlbGlzdGl0ZW1cbiAqL1xuZnVuY3Rpb24gdXNlTGlzdEl0ZW0ocHJvcHMpIHtcbiAgaWYgKHByb3BzID09PSB2b2lkIDApIHtcbiAgICBwcm9wcyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBsYWJlbFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHtcbiAgICByZWdpc3RlcixcbiAgICB1bnJlZ2lzdGVyLFxuICAgIG1hcCxcbiAgICBlbGVtZW50c1JlZixcbiAgICBsYWJlbHNSZWZcbiAgfSA9IFJlYWN0LnVzZUNvbnRleHQoRmxvYXRpbmdMaXN0Q29udGV4dCk7XG4gIGNvbnN0IFtpbmRleCQxLCBzZXRJbmRleF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgY29tcG9uZW50UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCByZWYgPSBSZWFjdC51c2VDYWxsYmFjayhub2RlID0+IHtcbiAgICBjb21wb25lbnRSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgaWYgKGluZGV4JDEgIT09IG51bGwpIHtcbiAgICAgIGVsZW1lbnRzUmVmLmN1cnJlbnRbaW5kZXgkMV0gPSBub2RlO1xuICAgICAgaWYgKGxhYmVsc1JlZikge1xuICAgICAgICB2YXIgX25vZGUkdGV4dENvbnRlbnQ7XG4gICAgICAgIGNvbnN0IGlzTGFiZWxEZWZpbmVkID0gbGFiZWwgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgbGFiZWxzUmVmLmN1cnJlbnRbaW5kZXgkMV0gPSBpc0xhYmVsRGVmaW5lZCA/IGxhYmVsIDogKF9ub2RlJHRleHRDb250ZW50ID0gbm9kZSA9PSBudWxsID8gdm9pZCAwIDogbm9kZS50ZXh0Q29udGVudCkgIT0gbnVsbCA/IF9ub2RlJHRleHRDb250ZW50IDogbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpbmRleCQxLCBlbGVtZW50c1JlZiwgbGFiZWxzUmVmLCBsYWJlbF0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgY29uc3Qgbm9kZSA9IGNvbXBvbmVudFJlZi5jdXJyZW50O1xuICAgIGlmIChub2RlKSB7XG4gICAgICByZWdpc3Rlcihub2RlKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHVucmVnaXN0ZXIobm9kZSk7XG4gICAgICB9O1xuICAgIH1cbiAgfSwgW3JlZ2lzdGVyLCB1bnJlZ2lzdGVyXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBjb25zdCBpbmRleCA9IGNvbXBvbmVudFJlZi5jdXJyZW50ID8gbWFwLmdldChjb21wb25lbnRSZWYuY3VycmVudCkgOiBudWxsO1xuICAgIGlmIChpbmRleCAhPSBudWxsKSB7XG4gICAgICBzZXRJbmRleChpbmRleCk7XG4gICAgfVxuICB9LCBbbWFwXSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgcmVmLFxuICAgIGluZGV4OiBpbmRleCQxID09IG51bGwgPyAtMSA6IGluZGV4JDFcbiAgfSksIFtpbmRleCQxLCByZWZdKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVySnN4KHJlbmRlciwgY29tcHV0ZWRQcm9wcykge1xuICBpZiAodHlwZW9mIHJlbmRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiByZW5kZXIoY29tcHV0ZWRQcm9wcyk7XG4gIH1cbiAgaWYgKHJlbmRlcikge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KHJlbmRlciwgY29tcHV0ZWRQcm9wcyk7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIGNvbXB1dGVkUHJvcHMpO1xufVxuY29uc3QgQ29tcG9zaXRlQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgYWN0aXZlSW5kZXg6IDAsXG4gIG9uTmF2aWdhdGU6ICgpID0+IHt9XG59KTtcbmNvbnN0IGhvcml6b250YWxLZXlzID0gW0FSUk9XX0xFRlQsIEFSUk9XX1JJR0hUXTtcbmNvbnN0IHZlcnRpY2FsS2V5cyA9IFtBUlJPV19VUCwgQVJST1dfRE9XTl07XG5jb25zdCBhbGxLZXlzID0gWy4uLmhvcml6b250YWxLZXlzLCAuLi52ZXJ0aWNhbEtleXNdO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzaW5nbGUgdGFiIHN0b3Agd2hvc2UgaXRlbXMgYXJlIG5hdmlnYXRlZCBieSBhcnJvdyBrZXlzLCB3aGljaFxuICogcHJvdmlkZXMgbGlzdCBuYXZpZ2F0aW9uIG91dHNpZGUgb2YgZmxvYXRpbmcgZWxlbWVudCBjb250ZXh0cy5cbiAqXG4gKiBUaGlzIGlzIHVzZWZ1bCB0byBlbmFibGUgbmF2aWdhdGlvbiBvZiBhIGxpc3Qgb2YgaXRlbXMgdGhhdCBhcmVu4oCZdCBwYXJ0IG9mIGFcbiAqIGZsb2F0aW5nIGVsZW1lbnQuIEEgbWVudWJhciBpcyBhbiBleGFtcGxlIG9mIGEgY29tcG9zaXRlLCB3aXRoIGVhY2ggcmVmZXJlbmNlXG4gKiBlbGVtZW50IGJlaW5nIGFuIGl0ZW0uXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvQ29tcG9zaXRlXG4gKi9cbmNvbnN0IENvbXBvc2l0ZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIENvbXBvc2l0ZShwcm9wcywgZm9yd2FyZGVkUmVmKSB7XG4gIGNvbnN0IHtcbiAgICByZW5kZXIsXG4gICAgb3JpZW50YXRpb24gPSAnYm90aCcsXG4gICAgbG9vcCA9IHRydWUsXG4gICAgY29scyA9IDEsXG4gICAgZGlzYWJsZWRJbmRpY2VzLFxuICAgIGFjdGl2ZUluZGV4OiBleHRlcm5hbEFjdGl2ZUluZGV4LFxuICAgIG9uTmF2aWdhdGU6IGV4dGVybmFsU2V0QWN0aXZlSW5kZXgsXG4gICAgaXRlbVNpemVzLFxuICAgIGRlbnNlID0gZmFsc2UsXG4gICAgLi4uZG9tUHJvcHNcbiAgfSA9IHByb3BzO1xuICBjb25zdCBbaW50ZXJuYWxBY3RpdmVJbmRleCwgaW50ZXJuYWxTZXRBY3RpdmVJbmRleF0gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgY29uc3QgYWN0aXZlSW5kZXggPSBleHRlcm5hbEFjdGl2ZUluZGV4ICE9IG51bGwgPyBleHRlcm5hbEFjdGl2ZUluZGV4IDogaW50ZXJuYWxBY3RpdmVJbmRleDtcbiAgY29uc3Qgb25OYXZpZ2F0ZSA9IHVzZUVmZmVjdEV2ZW50KGV4dGVybmFsU2V0QWN0aXZlSW5kZXggIT0gbnVsbCA/IGV4dGVybmFsU2V0QWN0aXZlSW5kZXggOiBpbnRlcm5hbFNldEFjdGl2ZUluZGV4KTtcbiAgY29uc3QgZWxlbWVudHNSZWYgPSBSZWFjdC51c2VSZWYoW10pO1xuICBjb25zdCByZW5kZXJFbGVtZW50UHJvcHMgPSByZW5kZXIgJiYgdHlwZW9mIHJlbmRlciAhPT0gJ2Z1bmN0aW9uJyA/IHJlbmRlci5wcm9wcyA6IHt9O1xuICBjb25zdCBjb250ZXh0VmFsdWUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgYWN0aXZlSW5kZXgsXG4gICAgb25OYXZpZ2F0ZVxuICB9KSwgW2FjdGl2ZUluZGV4LCBvbk5hdmlnYXRlXSk7XG4gIGNvbnN0IGlzR3JpZCA9IGNvbHMgPiAxO1xuICBmdW5jdGlvbiBoYW5kbGVLZXlEb3duKGV2ZW50KSB7XG4gICAgaWYgKCFhbGxLZXlzLmluY2x1ZGVzKGV2ZW50LmtleSkpIHJldHVybjtcbiAgICBsZXQgbmV4dEluZGV4ID0gYWN0aXZlSW5kZXg7XG4gICAgY29uc3QgbWluSW5kZXggPSBnZXRNaW5JbmRleChlbGVtZW50c1JlZiwgZGlzYWJsZWRJbmRpY2VzKTtcbiAgICBjb25zdCBtYXhJbmRleCA9IGdldE1heEluZGV4KGVsZW1lbnRzUmVmLCBkaXNhYmxlZEluZGljZXMpO1xuICAgIGlmIChpc0dyaWQpIHtcbiAgICAgIGNvbnN0IHNpemVzID0gaXRlbVNpemVzIHx8IEFycmF5LmZyb20oe1xuICAgICAgICBsZW5ndGg6IGVsZW1lbnRzUmVmLmN1cnJlbnQubGVuZ3RoXG4gICAgICB9LCAoKSA9PiAoe1xuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgaGVpZ2h0OiAxXG4gICAgICB9KSk7XG4gICAgICAvLyBUbyBjYWxjdWxhdGUgbW92ZW1lbnRzIG9uIHRoZSBncmlkLCB3ZSB1c2UgaHlwb3RoZXRpY2FsIGNlbGwgaW5kaWNlc1xuICAgICAgLy8gYXMgaWYgZXZlcnkgaXRlbSB3YXMgMXgxLCB0aGVuIGNvbnZlcnQgYmFjayB0byByZWFsIGluZGljZXMuXG4gICAgICBjb25zdCBjZWxsTWFwID0gYnVpbGRDZWxsTWFwKHNpemVzLCBjb2xzLCBkZW5zZSk7XG4gICAgICBjb25zdCBtaW5HcmlkSW5kZXggPSBjZWxsTWFwLmZpbmRJbmRleChpbmRleCA9PiBpbmRleCAhPSBudWxsICYmICFpc0Rpc2FibGVkKGVsZW1lbnRzUmVmLmN1cnJlbnQsIGluZGV4LCBkaXNhYmxlZEluZGljZXMpKTtcbiAgICAgIC8vIGxhc3QgZW5hYmxlZCBpbmRleFxuICAgICAgY29uc3QgbWF4R3JpZEluZGV4ID0gY2VsbE1hcC5yZWR1Y2UoKGZvdW5kSW5kZXgsIGluZGV4LCBjZWxsSW5kZXgpID0+IGluZGV4ICE9IG51bGwgJiYgIWlzRGlzYWJsZWQoZWxlbWVudHNSZWYuY3VycmVudCwgaW5kZXgsIGRpc2FibGVkSW5kaWNlcykgPyBjZWxsSW5kZXggOiBmb3VuZEluZGV4LCAtMSk7XG4gICAgICBuZXh0SW5kZXggPSBjZWxsTWFwW2dldEdyaWROYXZpZ2F0ZWRJbmRleCh7XG4gICAgICAgIGN1cnJlbnQ6IGNlbGxNYXAubWFwKGl0ZW1JbmRleCA9PiBpdGVtSW5kZXggPyBlbGVtZW50c1JlZi5jdXJyZW50W2l0ZW1JbmRleF0gOiBudWxsKVxuICAgICAgfSwge1xuICAgICAgICBldmVudCxcbiAgICAgICAgb3JpZW50YXRpb24sXG4gICAgICAgIGxvb3AsXG4gICAgICAgIGNvbHMsXG4gICAgICAgIC8vIHRyZWF0IHVuZGVmaW5lZCAoZW1wdHkgZ3JpZCBzcGFjZXMpIGFzIGRpc2FibGVkIGluZGljZXMgc28gd2VcbiAgICAgICAgLy8gZG9uJ3QgZW5kIHVwIGluIHRoZW1cbiAgICAgICAgZGlzYWJsZWRJbmRpY2VzOiBnZXRDZWxsSW5kaWNlcyhbLi4uKGRpc2FibGVkSW5kaWNlcyB8fCBlbGVtZW50c1JlZi5jdXJyZW50Lm1hcCgoXywgaW5kZXgpID0+IGlzRGlzYWJsZWQoZWxlbWVudHNSZWYuY3VycmVudCwgaW5kZXgpID8gaW5kZXggOiB1bmRlZmluZWQpKSwgdW5kZWZpbmVkXSwgY2VsbE1hcCksXG4gICAgICAgIG1pbkluZGV4OiBtaW5HcmlkSW5kZXgsXG4gICAgICAgIG1heEluZGV4OiBtYXhHcmlkSW5kZXgsXG4gICAgICAgIHByZXZJbmRleDogZ2V0Q2VsbEluZGV4T2ZDb3JuZXIoYWN0aXZlSW5kZXggPiBtYXhJbmRleCA/IG1pbkluZGV4IDogYWN0aXZlSW5kZXgsIHNpemVzLCBjZWxsTWFwLCBjb2xzLFxuICAgICAgICAvLyB1c2UgYSBjb3JuZXIgbWF0Y2hpbmcgdGhlIGVkZ2UgY2xvc2VzdCB0byB0aGUgZGlyZWN0aW9uIHdlJ3JlXG4gICAgICAgIC8vIG1vdmluZyBpbiBzbyB3ZSBkb24ndCBlbmQgdXAgaW4gdGhlIHNhbWUgaXRlbS4gUHJlZmVyXG4gICAgICAgIC8vIHRvcC9sZWZ0IG92ZXIgYm90dG9tL3JpZ2h0LlxuICAgICAgICBldmVudC5rZXkgPT09IEFSUk9XX0RPV04gPyAnYmwnIDogZXZlbnQua2V5ID09PSBBUlJPV19SSUdIVCA/ICd0cicgOiAndGwnKVxuICAgICAgfSldOyAvLyBuYXZpZ2F0ZWQgY2VsbCB3aWxsIG5ldmVyIGJlIG51bGxpc2hcbiAgICB9XG4gICAgY29uc3QgdG9FbmRLZXlzID0ge1xuICAgICAgaG9yaXpvbnRhbDogW0FSUk9XX1JJR0hUXSxcbiAgICAgIHZlcnRpY2FsOiBbQVJST1dfRE9XTl0sXG4gICAgICBib3RoOiBbQVJST1dfUklHSFQsIEFSUk9XX0RPV05dXG4gICAgfVtvcmllbnRhdGlvbl07XG4gICAgY29uc3QgdG9TdGFydEtleXMgPSB7XG4gICAgICBob3Jpem9udGFsOiBbQVJST1dfTEVGVF0sXG4gICAgICB2ZXJ0aWNhbDogW0FSUk9XX1VQXSxcbiAgICAgIGJvdGg6IFtBUlJPV19MRUZULCBBUlJPV19VUF1cbiAgICB9W29yaWVudGF0aW9uXTtcbiAgICBjb25zdCBwcmV2ZW50ZWRLZXlzID0gaXNHcmlkID8gYWxsS2V5cyA6IHtcbiAgICAgIGhvcml6b250YWw6IGhvcml6b250YWxLZXlzLFxuICAgICAgdmVydGljYWw6IHZlcnRpY2FsS2V5cyxcbiAgICAgIGJvdGg6IGFsbEtleXNcbiAgICB9W29yaWVudGF0aW9uXTtcbiAgICBpZiAobmV4dEluZGV4ID09PSBhY3RpdmVJbmRleCAmJiBbLi4udG9FbmRLZXlzLCAuLi50b1N0YXJ0S2V5c10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgaWYgKGxvb3AgJiYgbmV4dEluZGV4ID09PSBtYXhJbmRleCAmJiB0b0VuZEtleXMuaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICBuZXh0SW5kZXggPSBtaW5JbmRleDtcbiAgICAgIH0gZWxzZSBpZiAobG9vcCAmJiBuZXh0SW5kZXggPT09IG1pbkluZGV4ICYmIHRvU3RhcnRLZXlzLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgbmV4dEluZGV4ID0gbWF4SW5kZXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXh0SW5kZXggPSBmaW5kTm9uRGlzYWJsZWRJbmRleChlbGVtZW50c1JlZiwge1xuICAgICAgICAgIHN0YXJ0aW5nSW5kZXg6IG5leHRJbmRleCxcbiAgICAgICAgICBkZWNyZW1lbnQ6IHRvU3RhcnRLZXlzLmluY2x1ZGVzKGV2ZW50LmtleSksXG4gICAgICAgICAgZGlzYWJsZWRJbmRpY2VzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobmV4dEluZGV4ICE9PSBhY3RpdmVJbmRleCAmJiAhaXNJbmRleE91dE9mQm91bmRzKGVsZW1lbnRzUmVmLCBuZXh0SW5kZXgpKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGlmIChwcmV2ZW50ZWRLZXlzLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICAgIG9uTmF2aWdhdGUobmV4dEluZGV4KTtcblxuICAgICAgLy8gV2FpdCBmb3IgRm9jdXNNYW5hZ2VyIGByZXR1cm5Gb2N1c2AgdG8gZXhlY3V0ZS5cbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgZW5xdWV1ZUZvY3VzKGVsZW1lbnRzUmVmLmN1cnJlbnRbbmV4dEluZGV4XSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgY29tcHV0ZWRQcm9wcyA9IHtcbiAgICAuLi5kb21Qcm9wcyxcbiAgICAuLi5yZW5kZXJFbGVtZW50UHJvcHMsXG4gICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgJ2FyaWEtb3JpZW50YXRpb24nOiBvcmllbnRhdGlvbiA9PT0gJ2JvdGgnID8gdW5kZWZpbmVkIDogb3JpZW50YXRpb24sXG4gICAgb25LZXlEb3duKGUpIHtcbiAgICAgIGRvbVByb3BzLm9uS2V5RG93biA9PSBudWxsIHx8IGRvbVByb3BzLm9uS2V5RG93bihlKTtcbiAgICAgIHJlbmRlckVsZW1lbnRQcm9wcy5vbktleURvd24gPT0gbnVsbCB8fCByZW5kZXJFbGVtZW50UHJvcHMub25LZXlEb3duKGUpO1xuICAgICAgaGFuZGxlS2V5RG93bihlKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb21wb3NpdGVDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IGNvbnRleHRWYWx1ZVxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChGbG9hdGluZ0xpc3QsIHtcbiAgICBlbGVtZW50c1JlZjogZWxlbWVudHNSZWZcbiAgfSwgcmVuZGVySnN4KHJlbmRlciwgY29tcHV0ZWRQcm9wcykpKTtcbn0pO1xuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvQ29tcG9zaXRlXG4gKi9cbmNvbnN0IENvbXBvc2l0ZUl0ZW0gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBDb21wb3NpdGVJdGVtKHByb3BzLCBmb3J3YXJkZWRSZWYpIHtcbiAgY29uc3Qge1xuICAgIHJlbmRlcixcbiAgICAuLi5kb21Qcm9wc1xuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHJlbmRlckVsZW1lbnRQcm9wcyA9IHJlbmRlciAmJiB0eXBlb2YgcmVuZGVyICE9PSAnZnVuY3Rpb24nID8gcmVuZGVyLnByb3BzIDoge307XG4gIGNvbnN0IHtcbiAgICBhY3RpdmVJbmRleCxcbiAgICBvbk5hdmlnYXRlXG4gIH0gPSBSZWFjdC51c2VDb250ZXh0KENvbXBvc2l0ZUNvbnRleHQpO1xuICBjb25zdCB7XG4gICAgcmVmLFxuICAgIGluZGV4XG4gIH0gPSB1c2VMaXN0SXRlbSgpO1xuICBjb25zdCBtZXJnZWRSZWYgPSB1c2VNZXJnZVJlZnMoW3JlZiwgZm9yd2FyZGVkUmVmLCByZW5kZXJFbGVtZW50UHJvcHMucmVmXSk7XG4gIGNvbnN0IGlzQWN0aXZlID0gYWN0aXZlSW5kZXggPT09IGluZGV4O1xuICBjb25zdCBjb21wdXRlZFByb3BzID0ge1xuICAgIC4uLmRvbVByb3BzLFxuICAgIC4uLnJlbmRlckVsZW1lbnRQcm9wcyxcbiAgICByZWY6IG1lcmdlZFJlZixcbiAgICB0YWJJbmRleDogaXNBY3RpdmUgPyAwIDogLTEsXG4gICAgJ2RhdGEtYWN0aXZlJzogaXNBY3RpdmUgPyAnJyA6IHVuZGVmaW5lZCxcbiAgICBvbkZvY3VzKGUpIHtcbiAgICAgIGRvbVByb3BzLm9uRm9jdXMgPT0gbnVsbCB8fCBkb21Qcm9wcy5vbkZvY3VzKGUpO1xuICAgICAgcmVuZGVyRWxlbWVudFByb3BzLm9uRm9jdXMgPT0gbnVsbCB8fCByZW5kZXJFbGVtZW50UHJvcHMub25Gb2N1cyhlKTtcbiAgICAgIG9uTmF2aWdhdGUoaW5kZXgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHJlbmRlckpzeChyZW5kZXIsIGNvbXB1dGVkUHJvcHMpO1xufSk7XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH07XG4gIHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuXG5sZXQgc2VydmVySGFuZG9mZkNvbXBsZXRlID0gZmFsc2U7XG5sZXQgY291bnQgPSAwO1xuY29uc3QgZ2VuSWQgPSAoKSA9PiAvLyBFbnN1cmUgdGhlIGlkIGlzIHVuaXF1ZSB3aXRoIG11bHRpcGxlIGluZGVwZW5kZW50IHZlcnNpb25zIG9mIEZsb2F0aW5nIFVJXG4vLyBvbiA8UmVhY3QgMThcblwiZmxvYXRpbmctdWktXCIgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA2KSArIGNvdW50Kys7XG5mdW5jdGlvbiB1c2VGbG9hdGluZ0lkKCkge1xuICBjb25zdCBbaWQsIHNldElkXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+IHNlcnZlckhhbmRvZmZDb21wbGV0ZSA/IGdlbklkKCkgOiB1bmRlZmluZWQpO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKGlkID09IG51bGwpIHtcbiAgICAgIHNldElkKGdlbklkKCkpO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtdKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXJ2ZXJIYW5kb2ZmQ29tcGxldGUgPSB0cnVlO1xuICB9LCBbXSk7XG4gIHJldHVybiBpZDtcbn1cbmNvbnN0IHVzZVJlYWN0SWQgPSBTYWZlUmVhY3QudXNlSWQ7XG5cbi8qKlxuICogVXNlcyBSZWFjdCAxOCdzIGJ1aWx0LWluIGB1c2VJZCgpYCB3aGVuIGF2YWlsYWJsZSwgb3IgZmFsbHMgYmFjayB0byBhXG4gKiBzbGlnaHRseSBsZXNzIHBlcmZvcm1hbnQgKHJlcXVpcmluZyBhIGRvdWJsZSByZW5kZXIpIGltcGxlbWVudGF0aW9uIGZvclxuICogZWFybGllciBSZWFjdCB2ZXJzaW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9yZWFjdC11dGlscyN1c2VpZFxuICovXG5jb25zdCB1c2VJZCA9IHVzZVJlYWN0SWQgfHwgdXNlRmxvYXRpbmdJZDtcblxubGV0IGRldk1lc3NhZ2VTZXQ7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gIGRldk1lc3NhZ2VTZXQgPSAvKiNfX1BVUkVfXyovbmV3IFNldCgpO1xufVxuZnVuY3Rpb24gd2FybigpIHtcbiAgdmFyIF9kZXZNZXNzYWdlU2V0O1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgbWVzc2FnZXMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgbWVzc2FnZXNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cbiAgY29uc3QgbWVzc2FnZSA9IFwiRmxvYXRpbmcgVUk6IFwiICsgbWVzc2FnZXMuam9pbignICcpO1xuICBpZiAoISgoX2Rldk1lc3NhZ2VTZXQgPSBkZXZNZXNzYWdlU2V0KSAhPSBudWxsICYmIF9kZXZNZXNzYWdlU2V0LmhhcyhtZXNzYWdlKSkpIHtcbiAgICB2YXIgX2Rldk1lc3NhZ2VTZXQyO1xuICAgIChfZGV2TWVzc2FnZVNldDIgPSBkZXZNZXNzYWdlU2V0KSA9PSBudWxsIHx8IF9kZXZNZXNzYWdlU2V0Mi5hZGQobWVzc2FnZSk7XG4gICAgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICB9XG59XG5mdW5jdGlvbiBlcnJvcigpIHtcbiAgdmFyIF9kZXZNZXNzYWdlU2V0MztcbiAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBtZXNzYWdlcyA9IG5ldyBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgIG1lc3NhZ2VzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gIH1cbiAgY29uc3QgbWVzc2FnZSA9IFwiRmxvYXRpbmcgVUk6IFwiICsgbWVzc2FnZXMuam9pbignICcpO1xuICBpZiAoISgoX2Rldk1lc3NhZ2VTZXQzID0gZGV2TWVzc2FnZVNldCkgIT0gbnVsbCAmJiBfZGV2TWVzc2FnZVNldDMuaGFzKG1lc3NhZ2UpKSkge1xuICAgIHZhciBfZGV2TWVzc2FnZVNldDQ7XG4gICAgKF9kZXZNZXNzYWdlU2V0NCA9IGRldk1lc3NhZ2VTZXQpID09IG51bGwgfHwgX2Rldk1lc3NhZ2VTZXQ0LmFkZChtZXNzYWdlKTtcbiAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICB9XG59XG5cbi8qKlxuICogUmVuZGVycyBhIHBvaW50aW5nIGFycm93IHRyaWFuZ2xlLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL0Zsb2F0aW5nQXJyb3dcbiAqL1xuY29uc3QgRmxvYXRpbmdBcnJvdyA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEZsb2F0aW5nQXJyb3cocHJvcHMsIHJlZikge1xuICBjb25zdCB7XG4gICAgY29udGV4dDoge1xuICAgICAgcGxhY2VtZW50LFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgZmxvYXRpbmdcbiAgICAgIH0sXG4gICAgICBtaWRkbGV3YXJlRGF0YToge1xuICAgICAgICBhcnJvd1xuICAgICAgfVxuICAgIH0sXG4gICAgd2lkdGggPSAxNCxcbiAgICBoZWlnaHQgPSA3LFxuICAgIHRpcFJhZGl1cyA9IDAsXG4gICAgc3Ryb2tlV2lkdGggPSAwLFxuICAgIHN0YXRpY09mZnNldCxcbiAgICBzdHJva2UsXG4gICAgZCxcbiAgICBzdHlsZToge1xuICAgICAgdHJhbnNmb3JtLFxuICAgICAgLi4ucmVzdFN0eWxlXG4gICAgfSA9IHt9LFxuICAgIC4uLnJlc3RcbiAgfSA9IHByb3BzO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgaWYgKCFyZWYpIHtcbiAgICAgIHdhcm4oJ1RoZSBgcmVmYCBwcm9wIGlzIHJlcXVpcmVkIGZvciBgRmxvYXRpbmdBcnJvd2AuJyk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGNsaXBQYXRoSWQgPSB1c2VJZCgpO1xuICBjb25zdCBbaXNSVEwsIHNldElzUlRMXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzI5MzJcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmICghZmxvYXRpbmcpIHJldHVybjtcbiAgICBjb25zdCBpc1JUTCA9IGdldENvbXB1dGVkU3R5bGUoZmxvYXRpbmcpLmRpcmVjdGlvbiA9PT0gJ3J0bCc7XG4gICAgaWYgKGlzUlRMKSB7XG4gICAgICBzZXRJc1JUTCh0cnVlKTtcbiAgICB9XG4gIH0sIFtmbG9hdGluZ10pO1xuICBpZiAoIWZsb2F0aW5nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBTdHJva2VzIG11c3QgYmUgZG91YmxlIHRoZSBib3JkZXIgd2lkdGgsIHRoaXMgZW5zdXJlcyB0aGUgc3Ryb2tlJ3Mgd2lkdGhcbiAgLy8gd29ya3MgYXMgeW91J2QgZXhwZWN0LlxuICBjb25zdCBjb21wdXRlZFN0cm9rZVdpZHRoID0gc3Ryb2tlV2lkdGggKiAyO1xuICBjb25zdCBoYWxmU3Ryb2tlV2lkdGggPSBjb21wdXRlZFN0cm9rZVdpZHRoIC8gMjtcbiAgY29uc3Qgc3ZnWCA9IHdpZHRoIC8gMiAqICh0aXBSYWRpdXMgLyAtOCArIDEpO1xuICBjb25zdCBzdmdZID0gaGVpZ2h0IC8gMiAqIHRpcFJhZGl1cyAvIDQ7XG4gIGNvbnN0IFtzaWRlLCBhbGlnbm1lbnRdID0gcGxhY2VtZW50LnNwbGl0KCctJyk7XG4gIGNvbnN0IGlzQ3VzdG9tU2hhcGUgPSAhIWQ7XG4gIGNvbnN0IGlzVmVydGljYWxTaWRlID0gc2lkZSA9PT0gJ3RvcCcgfHwgc2lkZSA9PT0gJ2JvdHRvbSc7XG4gIGNvbnN0IHlPZmZzZXRQcm9wID0gc3RhdGljT2Zmc2V0ICYmIGFsaWdubWVudCA9PT0gJ2VuZCcgPyAnYm90dG9tJyA6ICd0b3AnO1xuICBsZXQgeE9mZnNldFByb3AgPSBzdGF0aWNPZmZzZXQgJiYgYWxpZ25tZW50ID09PSAnZW5kJyA/ICdyaWdodCcgOiAnbGVmdCc7XG4gIGlmIChzdGF0aWNPZmZzZXQgJiYgaXNSVEwpIHtcbiAgICB4T2Zmc2V0UHJvcCA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyAnbGVmdCcgOiAncmlnaHQnO1xuICB9XG4gIGNvbnN0IGFycm93WCA9IChhcnJvdyA9PSBudWxsID8gdm9pZCAwIDogYXJyb3cueCkgIT0gbnVsbCA/IHN0YXRpY09mZnNldCB8fCBhcnJvdy54IDogJyc7XG4gIGNvbnN0IGFycm93WSA9IChhcnJvdyA9PSBudWxsID8gdm9pZCAwIDogYXJyb3cueSkgIT0gbnVsbCA/IHN0YXRpY09mZnNldCB8fCBhcnJvdy55IDogJyc7XG4gIGNvbnN0IGRWYWx1ZSA9IGQgfHwgJ00wLDAnICsgKFwiIEhcIiArIHdpZHRoKSArIChcIiBMXCIgKyAod2lkdGggLSBzdmdYKSArIFwiLFwiICsgKGhlaWdodCAtIHN2Z1kpKSArIChcIiBRXCIgKyB3aWR0aCAvIDIgKyBcIixcIiArIGhlaWdodCArIFwiIFwiICsgc3ZnWCArIFwiLFwiICsgKGhlaWdodCAtIHN2Z1kpKSArICcgWic7XG4gIGNvbnN0IHJvdGF0aW9uID0ge1xuICAgIHRvcDogaXNDdXN0b21TaGFwZSA/ICdyb3RhdGUoMTgwZGVnKScgOiAnJyxcbiAgICBsZWZ0OiBpc0N1c3RvbVNoYXBlID8gJ3JvdGF0ZSg5MGRlZyknIDogJ3JvdGF0ZSgtOTBkZWcpJyxcbiAgICBib3R0b206IGlzQ3VzdG9tU2hhcGUgPyAnJyA6ICdyb3RhdGUoMTgwZGVnKScsXG4gICAgcmlnaHQ6IGlzQ3VzdG9tU2hhcGUgPyAncm90YXRlKC05MGRlZyknIDogJ3JvdGF0ZSg5MGRlZyknXG4gIH1bc2lkZV07XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCBfZXh0ZW5kcyh7fSwgcmVzdCwge1xuICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSxcbiAgICByZWY6IHJlZixcbiAgICB3aWR0aDogaXNDdXN0b21TaGFwZSA/IHdpZHRoIDogd2lkdGggKyBjb21wdXRlZFN0cm9rZVdpZHRoLFxuICAgIGhlaWdodDogd2lkdGgsXG4gICAgdmlld0JveDogXCIwIDAgXCIgKyB3aWR0aCArIFwiIFwiICsgKGhlaWdodCA+IHdpZHRoID8gaGVpZ2h0IDogd2lkdGgpLFxuICAgIHN0eWxlOiB7XG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgIFt4T2Zmc2V0UHJvcF06IGFycm93WCxcbiAgICAgIFt5T2Zmc2V0UHJvcF06IGFycm93WSxcbiAgICAgIFtzaWRlXTogaXNWZXJ0aWNhbFNpZGUgfHwgaXNDdXN0b21TaGFwZSA/ICcxMDAlJyA6IFwiY2FsYygxMDAlIC0gXCIgKyBjb21wdXRlZFN0cm9rZVdpZHRoIC8gMiArIFwicHgpXCIsXG4gICAgICB0cmFuc2Zvcm06IFwiXCIgKyByb3RhdGlvbiArICh0cmFuc2Zvcm0gIT0gbnVsbCA/IHRyYW5zZm9ybSA6ICcnKSxcbiAgICAgIC4uLnJlc3RTdHlsZVxuICAgIH1cbiAgfSksIGNvbXB1dGVkU3Ryb2tlV2lkdGggPiAwICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgY2xpcFBhdGg6IFwidXJsKCNcIiArIGNsaXBQYXRoSWQgKyBcIilcIixcbiAgICBmaWxsOiBcIm5vbmVcIixcbiAgICBzdHJva2U6IHN0cm9rZVxuICAgIC8vIEFjY291bnQgZm9yIHRoZSBzdHJva2Ugb24gdGhlIGZpbGwgcGF0aCByZW5kZXJlZCBiZWxvdy5cbiAgICAsXG4gICAgc3Ryb2tlV2lkdGg6IGNvbXB1dGVkU3Ryb2tlV2lkdGggKyAoZCA/IDAgOiAxKSxcbiAgICBkOiBkVmFsdWVcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgc3Ryb2tlOiBjb21wdXRlZFN0cm9rZVdpZHRoICYmICFkID8gcmVzdC5maWxsIDogJ25vbmUnLFxuICAgIGQ6IGRWYWx1ZVxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJjbGlwUGF0aFwiLCB7XG4gICAgaWQ6IGNsaXBQYXRoSWRcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJyZWN0XCIsIHtcbiAgICB4OiAtaGFsZlN0cm9rZVdpZHRoLFxuICAgIHk6IGhhbGZTdHJva2VXaWR0aCAqIChpc0N1c3RvbVNoYXBlID8gLTEgOiAxKSxcbiAgICB3aWR0aDogd2lkdGggKyBjb21wdXRlZFN0cm9rZVdpZHRoLFxuICAgIGhlaWdodDogd2lkdGhcbiAgfSkpKTtcbn0pO1xuXG5mdW5jdGlvbiBjcmVhdGVQdWJTdWIoKSB7XG4gIGNvbnN0IG1hcCA9IG5ldyBNYXAoKTtcbiAgcmV0dXJuIHtcbiAgICBlbWl0KGV2ZW50LCBkYXRhKSB7XG4gICAgICB2YXIgX21hcCRnZXQ7XG4gICAgICAoX21hcCRnZXQgPSBtYXAuZ2V0KGV2ZW50KSkgPT0gbnVsbCB8fCBfbWFwJGdldC5mb3JFYWNoKGhhbmRsZXIgPT4gaGFuZGxlcihkYXRhKSk7XG4gICAgfSxcbiAgICBvbihldmVudCwgbGlzdGVuZXIpIHtcbiAgICAgIG1hcC5zZXQoZXZlbnQsIFsuLi4obWFwLmdldChldmVudCkgfHwgW10pLCBsaXN0ZW5lcl0pO1xuICAgIH0sXG4gICAgb2ZmKGV2ZW50LCBsaXN0ZW5lcikge1xuICAgICAgdmFyIF9tYXAkZ2V0MjtcbiAgICAgIG1hcC5zZXQoZXZlbnQsICgoX21hcCRnZXQyID0gbWFwLmdldChldmVudCkpID09IG51bGwgPyB2b2lkIDAgOiBfbWFwJGdldDIuZmlsdGVyKGwgPT4gbCAhPT0gbGlzdGVuZXIpKSB8fCBbXSk7XG4gICAgfVxuICB9O1xufVxuXG5jb25zdCBGbG9hdGluZ05vZGVDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5jb25zdCBGbG9hdGluZ1RyZWVDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcGFyZW50IG5vZGUgaWQgZm9yIG5lc3RlZCBmbG9hdGluZyBlbGVtZW50cywgaWYgYXZhaWxhYmxlLlxuICogUmV0dXJucyBgbnVsbGAgZm9yIHRvcC1sZXZlbCBmbG9hdGluZyBlbGVtZW50cy5cbiAqL1xuY29uc3QgdXNlRmxvYXRpbmdQYXJlbnROb2RlSWQgPSAoKSA9PiB7XG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dDtcbiAgcmV0dXJuICgoX1JlYWN0JHVzZUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KEZsb2F0aW5nTm9kZUNvbnRleHQpKSA9PSBudWxsID8gdm9pZCAwIDogX1JlYWN0JHVzZUNvbnRleHQuaWQpIHx8IG51bGw7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG5lYXJlc3QgZmxvYXRpbmcgdHJlZSBjb250ZXh0LCBpZiBhdmFpbGFibGUuXG4gKi9cbmNvbnN0IHVzZUZsb2F0aW5nVHJlZSA9ICgpID0+IFJlYWN0LnVzZUNvbnRleHQoRmxvYXRpbmdUcmVlQ29udGV4dCk7XG5cbi8qKlxuICogUmVnaXN0ZXJzIGEgbm9kZSBpbnRvIHRoZSBgRmxvYXRpbmdUcmVlYCwgcmV0dXJuaW5nIGl0cyBpZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9GbG9hdGluZ1RyZWVcbiAqL1xuZnVuY3Rpb24gdXNlRmxvYXRpbmdOb2RlSWQoY3VzdG9tUGFyZW50SWQpIHtcbiAgY29uc3QgaWQgPSB1c2VJZCgpO1xuICBjb25zdCB0cmVlID0gdXNlRmxvYXRpbmdUcmVlKCk7XG4gIGNvbnN0IHJlYWN0UGFyZW50SWQgPSB1c2VGbG9hdGluZ1BhcmVudE5vZGVJZCgpO1xuICBjb25zdCBwYXJlbnRJZCA9IGN1c3RvbVBhcmVudElkIHx8IHJlYWN0UGFyZW50SWQ7XG4gIGluZGV4KCgpID0+IHtcbiAgICBjb25zdCBub2RlID0ge1xuICAgICAgaWQsXG4gICAgICBwYXJlbnRJZFxuICAgIH07XG4gICAgdHJlZSA9PSBudWxsIHx8IHRyZWUuYWRkTm9kZShub2RlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdHJlZSA9PSBudWxsIHx8IHRyZWUucmVtb3ZlTm9kZShub2RlKTtcbiAgICB9O1xuICB9LCBbdHJlZSwgaWQsIHBhcmVudElkXSk7XG4gIHJldHVybiBpZDtcbn1cbi8qKlxuICogUHJvdmlkZXMgcGFyZW50IG5vZGUgY29udGV4dCBmb3IgbmVzdGVkIGZsb2F0aW5nIGVsZW1lbnRzLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL0Zsb2F0aW5nVHJlZVxuICovXG5mdW5jdGlvbiBGbG9hdGluZ05vZGUocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNoaWxkcmVuLFxuICAgIGlkXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgcGFyZW50SWQgPSB1c2VGbG9hdGluZ1BhcmVudE5vZGVJZCgpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRmxvYXRpbmdOb2RlQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgICBpZCxcbiAgICAgIHBhcmVudElkXG4gICAgfSksIFtpZCwgcGFyZW50SWRdKVxuICB9LCBjaGlsZHJlbik7XG59XG4vKipcbiAqIFByb3ZpZGVzIGNvbnRleHQgZm9yIG5lc3RlZCBmbG9hdGluZyBlbGVtZW50cyB3aGVuIHRoZXkgYXJlIG5vdCBjaGlsZHJlbiBvZlxuICogZWFjaCBvdGhlciBvbiB0aGUgRE9NLlxuICogVGhpcyBpcyBub3QgbmVjZXNzYXJ5IGluIGFsbCBjYXNlcywgZXhjZXB0IHdoZW4gdGhlcmUgbXVzdCBiZSBleHBsaWNpdCBjb21tdW5pY2F0aW9uIGJldHdlZW4gcGFyZW50IGFuZCBjaGlsZCBmbG9hdGluZyBlbGVtZW50cy4gSXQgaXMgbmVjZXNzYXJ5IGZvcjpcbiAqIC0gVGhlIGBidWJibGVzYCBvcHRpb24gaW4gdGhlIGB1c2VEaXNtaXNzKClgIEhvb2tcbiAqIC0gTmVzdGVkIHZpcnR1YWwgbGlzdCBuYXZpZ2F0aW9uXG4gKiAtIE5lc3RlZCBmbG9hdGluZyBlbGVtZW50cyB0aGF0IGVhY2ggb3BlbiBvbiBob3ZlclxuICogLSBDdXN0b20gY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHBhcmVudCBhbmQgY2hpbGQgZmxvYXRpbmcgZWxlbWVudHNcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9GbG9hdGluZ1RyZWVcbiAqL1xuZnVuY3Rpb24gRmxvYXRpbmdUcmVlKHByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICBjaGlsZHJlblxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IG5vZGVzUmVmID0gUmVhY3QudXNlUmVmKFtdKTtcbiAgY29uc3QgYWRkTm9kZSA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIG5vZGVzUmVmLmN1cnJlbnQgPSBbLi4ubm9kZXNSZWYuY3VycmVudCwgbm9kZV07XG4gIH0sIFtdKTtcbiAgY29uc3QgcmVtb3ZlTm9kZSA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIG5vZGVzUmVmLmN1cnJlbnQgPSBub2Rlc1JlZi5jdXJyZW50LmZpbHRlcihuID0+IG4gIT09IG5vZGUpO1xuICB9LCBbXSk7XG4gIGNvbnN0IGV2ZW50cyA9IFJlYWN0LnVzZVN0YXRlKCgpID0+IGNyZWF0ZVB1YlN1YigpKVswXTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEZsb2F0aW5nVHJlZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgICAgbm9kZXNSZWYsXG4gICAgICBhZGROb2RlLFxuICAgICAgcmVtb3ZlTm9kZSxcbiAgICAgIGV2ZW50c1xuICAgIH0pLCBbYWRkTm9kZSwgcmVtb3ZlTm9kZSwgZXZlbnRzXSlcbiAgfSwgY2hpbGRyZW4pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVBdHRyaWJ1dGUobmFtZSkge1xuICByZXR1cm4gXCJkYXRhLWZsb2F0aW5nLXVpLVwiICsgbmFtZTtcbn1cblxuZnVuY3Rpb24gdXNlTGF0ZXN0UmVmKHZhbHVlKSB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZih2YWx1ZSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuIHJlZjtcbn1cblxuY29uc3Qgc2FmZVBvbHlnb25JZGVudGlmaWVyID0gLyojX19QVVJFX18qL2NyZWF0ZUF0dHJpYnV0ZSgnc2FmZS1wb2x5Z29uJyk7XG5mdW5jdGlvbiBnZXREZWxheSh2YWx1ZSwgcHJvcCwgcG9pbnRlclR5cGUpIHtcbiAgaWYgKHBvaW50ZXJUeXBlICYmICFpc01vdXNlTGlrZVBvaW50ZXJUeXBlKHBvaW50ZXJUeXBlKSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gdm9pZCAwIDogdmFsdWVbcHJvcF07XG59XG4vKipcbiAqIE9wZW5zIHRoZSBmbG9hdGluZyBlbGVtZW50IHdoaWxlIGhvdmVyaW5nIG92ZXIgdGhlIHJlZmVyZW5jZSBlbGVtZW50LCBsaWtlXG4gKiBDU1MgYDpob3ZlcmAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdXNlSG92ZXJcbiAqL1xuZnVuY3Rpb24gdXNlSG92ZXIoY29udGV4dCwgcHJvcHMpIHtcbiAgaWYgKHByb3BzID09PSB2b2lkIDApIHtcbiAgICBwcm9wcyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBvcGVuLFxuICAgIG9uT3BlbkNoYW5nZSxcbiAgICBkYXRhUmVmLFxuICAgIGV2ZW50cyxcbiAgICBlbGVtZW50c1xuICB9ID0gY29udGV4dDtcbiAgY29uc3Qge1xuICAgIGVuYWJsZWQgPSB0cnVlLFxuICAgIGRlbGF5ID0gMCxcbiAgICBoYW5kbGVDbG9zZSA9IG51bGwsXG4gICAgbW91c2VPbmx5ID0gZmFsc2UsXG4gICAgcmVzdE1zID0gMCxcbiAgICBtb3ZlID0gdHJ1ZVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHRyZWUgPSB1c2VGbG9hdGluZ1RyZWUoKTtcbiAgY29uc3QgcGFyZW50SWQgPSB1c2VGbG9hdGluZ1BhcmVudE5vZGVJZCgpO1xuICBjb25zdCBoYW5kbGVDbG9zZVJlZiA9IHVzZUxhdGVzdFJlZihoYW5kbGVDbG9zZSk7XG4gIGNvbnN0IGRlbGF5UmVmID0gdXNlTGF0ZXN0UmVmKGRlbGF5KTtcbiAgY29uc3Qgb3BlblJlZiA9IHVzZUxhdGVzdFJlZihvcGVuKTtcbiAgY29uc3QgcG9pbnRlclR5cGVSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgY29uc3QgdGltZW91dFJlZiA9IFJlYWN0LnVzZVJlZigtMSk7XG4gIGNvbnN0IGhhbmRsZXJSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgY29uc3QgcmVzdFRpbWVvdXRSZWYgPSBSZWFjdC51c2VSZWYoLTEpO1xuICBjb25zdCBibG9ja01vdXNlTW92ZVJlZiA9IFJlYWN0LnVzZVJlZih0cnVlKTtcbiAgY29uc3QgcGVyZm9ybWVkUG9pbnRlckV2ZW50c011dGF0aW9uUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgdW5iaW5kTW91c2VNb3ZlUmVmID0gUmVhY3QudXNlUmVmKCgpID0+IHt9KTtcbiAgY29uc3QgaXNIb3Zlck9wZW4gPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdmFyIF9kYXRhUmVmJGN1cnJlbnQkb3BlbjtcbiAgICBjb25zdCB0eXBlID0gKF9kYXRhUmVmJGN1cnJlbnQkb3BlbiA9IGRhdGFSZWYuY3VycmVudC5vcGVuRXZlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZGF0YVJlZiRjdXJyZW50JG9wZW4udHlwZTtcbiAgICByZXR1cm4gKHR5cGUgPT0gbnVsbCA/IHZvaWQgMCA6IHR5cGUuaW5jbHVkZXMoJ21vdXNlJykpICYmIHR5cGUgIT09ICdtb3VzZWRvd24nO1xuICB9LCBbZGF0YVJlZl0pO1xuXG4gIC8vIFdoZW4gY2xvc2luZyBiZWZvcmUgb3BlbmluZywgY2xlYXIgdGhlIGRlbGF5IHRpbWVvdXRzIHRvIGNhbmNlbCBpdFxuICAvLyBmcm9tIHNob3dpbmcuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgZnVuY3Rpb24gb25PcGVuQ2hhbmdlKF9yZWYpIHtcbiAgICAgIGxldCB7XG4gICAgICAgIG9wZW5cbiAgICAgIH0gPSBfcmVmO1xuICAgICAgaWYgKCFvcGVuKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgICBjbGVhclRpbWVvdXQocmVzdFRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICAgIGJsb2NrTW91c2VNb3ZlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBldmVudHMub24oJ29wZW5jaGFuZ2UnLCBvbk9wZW5DaGFuZ2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBldmVudHMub2ZmKCdvcGVuY2hhbmdlJywgb25PcGVuQ2hhbmdlKTtcbiAgICB9O1xuICB9LCBbZW5hYmxlZCwgZXZlbnRzXSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgaWYgKCFoYW5kbGVDbG9zZVJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgaWYgKCFvcGVuKSByZXR1cm47XG4gICAgZnVuY3Rpb24gb25MZWF2ZShldmVudCkge1xuICAgICAgaWYgKGlzSG92ZXJPcGVuKCkpIHtcbiAgICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlLCBldmVudCwgJ2hvdmVyJyk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudChlbGVtZW50cy5mbG9hdGluZykuZG9jdW1lbnRFbGVtZW50O1xuICAgIGh0bWwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIG9uTGVhdmUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBodG1sLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBvbkxlYXZlKTtcbiAgICB9O1xuICB9LCBbZWxlbWVudHMuZmxvYXRpbmcsIG9wZW4sIG9uT3BlbkNoYW5nZSwgZW5hYmxlZCwgaGFuZGxlQ2xvc2VSZWYsIGlzSG92ZXJPcGVuXSk7XG4gIGNvbnN0IGNsb3NlV2l0aERlbGF5ID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50LCBydW5FbHNlQnJhbmNoLCByZWFzb24pIHtcbiAgICBpZiAocnVuRWxzZUJyYW5jaCA9PT0gdm9pZCAwKSB7XG4gICAgICBydW5FbHNlQnJhbmNoID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHJlYXNvbiA9PT0gdm9pZCAwKSB7XG4gICAgICByZWFzb24gPSAnaG92ZXInO1xuICAgIH1cbiAgICBjb25zdCBjbG9zZURlbGF5ID0gZ2V0RGVsYXkoZGVsYXlSZWYuY3VycmVudCwgJ2Nsb3NlJywgcG9pbnRlclR5cGVSZWYuY3VycmVudCk7XG4gICAgaWYgKGNsb3NlRGVsYXkgJiYgIWhhbmRsZXJSZWYuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICB0aW1lb3V0UmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiBvbk9wZW5DaGFuZ2UoZmFsc2UsIGV2ZW50LCByZWFzb24pLCBjbG9zZURlbGF5KTtcbiAgICB9IGVsc2UgaWYgKHJ1bkVsc2VCcmFuY2gpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlLCBldmVudCwgcmVhc29uKTtcbiAgICB9XG4gIH0sIFtkZWxheVJlZiwgb25PcGVuQ2hhbmdlXSk7XG4gIGNvbnN0IGNsZWFudXBNb3VzZU1vdmVIYW5kbGVyID0gdXNlRWZmZWN0RXZlbnQoKCkgPT4ge1xuICAgIHVuYmluZE1vdXNlTW92ZVJlZi5jdXJyZW50KCk7XG4gICAgaGFuZGxlclJlZi5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICB9KTtcbiAgY29uc3QgY2xlYXJQb2ludGVyRXZlbnRzID0gdXNlRWZmZWN0RXZlbnQoKCkgPT4ge1xuICAgIGlmIChwZXJmb3JtZWRQb2ludGVyRXZlbnRzTXV0YXRpb25SZWYuY3VycmVudCkge1xuICAgICAgY29uc3QgYm9keSA9IGdldERvY3VtZW50KGVsZW1lbnRzLmZsb2F0aW5nKS5ib2R5O1xuICAgICAgYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJyc7XG4gICAgICBib2R5LnJlbW92ZUF0dHJpYnV0ZShzYWZlUG9seWdvbklkZW50aWZpZXIpO1xuICAgICAgcGVyZm9ybWVkUG9pbnRlckV2ZW50c011dGF0aW9uUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIFJlZ2lzdGVyaW5nIHRoZSBtb3VzZSBldmVudHMgb24gdGhlIHJlZmVyZW5jZSBkaXJlY3RseSB0byBieXBhc3MgUmVhY3Qnc1xuICAvLyBkZWxlZ2F0aW9uIHN5c3RlbS4gSWYgdGhlIGN1cnNvciB3YXMgb24gYSBkaXNhYmxlZCBlbGVtZW50IGFuZCB0aGVuIGVudGVyZWRcbiAgLy8gdGhlIHJlZmVyZW5jZSAobm8gZ2FwKSwgYG1vdXNlZW50ZXJgIGRvZXNuJ3QgZmlyZSBpbiB0aGUgZGVsZWdhdGlvbiBzeXN0ZW0uXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgZnVuY3Rpb24gaXNDbGlja0xpa2VPcGVuRXZlbnQoKSB7XG4gICAgICByZXR1cm4gZGF0YVJlZi5jdXJyZW50Lm9wZW5FdmVudCA/IFsnY2xpY2snLCAnbW91c2Vkb3duJ10uaW5jbHVkZXMoZGF0YVJlZi5jdXJyZW50Lm9wZW5FdmVudC50eXBlKSA6IGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBvbk1vdXNlRW50ZXIoZXZlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgYmxvY2tNb3VzZU1vdmVSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgaWYgKG1vdXNlT25seSAmJiAhaXNNb3VzZUxpa2VQb2ludGVyVHlwZShwb2ludGVyVHlwZVJlZi5jdXJyZW50KSB8fCByZXN0TXMgPiAwICYmICFnZXREZWxheShkZWxheVJlZi5jdXJyZW50LCAnb3BlbicpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9wZW5EZWxheSA9IGdldERlbGF5KGRlbGF5UmVmLmN1cnJlbnQsICdvcGVuJywgcG9pbnRlclR5cGVSZWYuY3VycmVudCk7XG4gICAgICBpZiAob3BlbkRlbGF5KSB7XG4gICAgICAgIHRpbWVvdXRSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoIW9wZW5SZWYuY3VycmVudCkge1xuICAgICAgICAgICAgb25PcGVuQ2hhbmdlKHRydWUsIGV2ZW50LCAnaG92ZXInKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIG9wZW5EZWxheSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbk9wZW5DaGFuZ2UodHJ1ZSwgZXZlbnQsICdob3ZlcicpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBvbk1vdXNlTGVhdmUoZXZlbnQpIHtcbiAgICAgIGlmIChpc0NsaWNrTGlrZU9wZW5FdmVudCgpKSByZXR1cm47XG4gICAgICB1bmJpbmRNb3VzZU1vdmVSZWYuY3VycmVudCgpO1xuICAgICAgY29uc3QgZG9jID0gZ2V0RG9jdW1lbnQoZWxlbWVudHMuZmxvYXRpbmcpO1xuICAgICAgY2xlYXJUaW1lb3V0KHJlc3RUaW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgaWYgKGhhbmRsZUNsb3NlUmVmLmN1cnJlbnQgJiYgZGF0YVJlZi5jdXJyZW50LmZsb2F0aW5nQ29udGV4dCkge1xuICAgICAgICAvLyBQcmV2ZW50IGNsZWFyaW5nIGBvblNjcm9sbE1vdXNlTGVhdmVgIHRpbWVvdXQuXG4gICAgICAgIGlmICghb3Blbikge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGhhbmRsZXJSZWYuY3VycmVudCA9IGhhbmRsZUNsb3NlUmVmLmN1cnJlbnQoe1xuICAgICAgICAgIC4uLmRhdGFSZWYuY3VycmVudC5mbG9hdGluZ0NvbnRleHQsXG4gICAgICAgICAgdHJlZSxcbiAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgIHk6IGV2ZW50LmNsaWVudFksXG4gICAgICAgICAgb25DbG9zZSgpIHtcbiAgICAgICAgICAgIGNsZWFyUG9pbnRlckV2ZW50cygpO1xuICAgICAgICAgICAgY2xlYW51cE1vdXNlTW92ZUhhbmRsZXIoKTtcbiAgICAgICAgICAgIGNsb3NlV2l0aERlbGF5KGV2ZW50LCB0cnVlLCAnc2FmZS1wb2x5Z29uJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgaGFuZGxlciA9IGhhbmRsZXJSZWYuY3VycmVudDtcbiAgICAgICAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGhhbmRsZXIpO1xuICAgICAgICB1bmJpbmRNb3VzZU1vdmVSZWYuY3VycmVudCA9ICgpID0+IHtcbiAgICAgICAgICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgaGFuZGxlcik7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gQWxsb3cgaW50ZXJhY3Rpdml0eSB3aXRob3V0IGBzYWZlUG9seWdvbmAgb24gdG91Y2ggZGV2aWNlcy4gV2l0aCBhXG4gICAgICAvLyBwb2ludGVyLCBhIHNob3J0IGNsb3NlIGRlbGF5IGlzIGFuIGFsdGVybmF0aXZlLCBzbyBpdCBzaG91bGQgd29ya1xuICAgICAgLy8gY29uc2lzdGVudGx5LlxuICAgICAgY29uc3Qgc2hvdWxkQ2xvc2UgPSBwb2ludGVyVHlwZVJlZi5jdXJyZW50ID09PSAndG91Y2gnID8gIWNvbnRhaW5zKGVsZW1lbnRzLmZsb2F0aW5nLCBldmVudC5yZWxhdGVkVGFyZ2V0KSA6IHRydWU7XG4gICAgICBpZiAoc2hvdWxkQ2xvc2UpIHtcbiAgICAgICAgY2xvc2VXaXRoRGVsYXkoZXZlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEVuc3VyZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBjbG9zZXMgYWZ0ZXIgc2Nyb2xsaW5nIGV2ZW4gaWYgdGhlIHBvaW50ZXJcbiAgICAvLyBkaWQgbm90IG1vdmUuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2Rpc2N1c3Npb25zLzE2OTJcbiAgICBmdW5jdGlvbiBvblNjcm9sbE1vdXNlTGVhdmUoZXZlbnQpIHtcbiAgICAgIGlmIChpc0NsaWNrTGlrZU9wZW5FdmVudCgpKSByZXR1cm47XG4gICAgICBpZiAoIWRhdGFSZWYuY3VycmVudC5mbG9hdGluZ0NvbnRleHQpIHJldHVybjtcbiAgICAgIGhhbmRsZUNsb3NlUmVmLmN1cnJlbnQgPT0gbnVsbCB8fCBoYW5kbGVDbG9zZVJlZi5jdXJyZW50KHtcbiAgICAgICAgLi4uZGF0YVJlZi5jdXJyZW50LmZsb2F0aW5nQ29udGV4dCxcbiAgICAgICAgdHJlZSxcbiAgICAgICAgeDogZXZlbnQuY2xpZW50WCxcbiAgICAgICAgeTogZXZlbnQuY2xpZW50WSxcbiAgICAgICAgb25DbG9zZSgpIHtcbiAgICAgICAgICBjbGVhclBvaW50ZXJFdmVudHMoKTtcbiAgICAgICAgICBjbGVhbnVwTW91c2VNb3ZlSGFuZGxlcigpO1xuICAgICAgICAgIGNsb3NlV2l0aERlbGF5KGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfSkoZXZlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNFbGVtZW50KGVsZW1lbnRzLmRvbVJlZmVyZW5jZSkpIHtcbiAgICAgIHZhciBfZWxlbWVudHMkZmxvYXRpbmc7XG4gICAgICBjb25zdCByZWYgPSBlbGVtZW50cy5kb21SZWZlcmVuY2U7XG4gICAgICBvcGVuICYmIHJlZi5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgb25TY3JvbGxNb3VzZUxlYXZlKTtcbiAgICAgIChfZWxlbWVudHMkZmxvYXRpbmcgPSBlbGVtZW50cy5mbG9hdGluZykgPT0gbnVsbCB8fCBfZWxlbWVudHMkZmxvYXRpbmcuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIG9uU2Nyb2xsTW91c2VMZWF2ZSk7XG4gICAgICBtb3ZlICYmIHJlZi5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlRW50ZXIsIHtcbiAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgICByZWYuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIG9uTW91c2VFbnRlcik7XG4gICAgICByZWYuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIG9uTW91c2VMZWF2ZSk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB2YXIgX2VsZW1lbnRzJGZsb2F0aW5nMjtcbiAgICAgICAgb3BlbiAmJiByZWYucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIG9uU2Nyb2xsTW91c2VMZWF2ZSk7XG4gICAgICAgIChfZWxlbWVudHMkZmxvYXRpbmcyID0gZWxlbWVudHMuZmxvYXRpbmcpID09IG51bGwgfHwgX2VsZW1lbnRzJGZsb2F0aW5nMi5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgb25TY3JvbGxNb3VzZUxlYXZlKTtcbiAgICAgICAgbW92ZSAmJiByZWYucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZUVudGVyKTtcbiAgICAgICAgcmVmLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBvbk1vdXNlRW50ZXIpO1xuICAgICAgICByZWYucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIG9uTW91c2VMZWF2ZSk7XG4gICAgICB9O1xuICAgIH1cbiAgfSwgW2VsZW1lbnRzLCBlbmFibGVkLCBjb250ZXh0LCBtb3VzZU9ubHksIHJlc3RNcywgbW92ZSwgY2xvc2VXaXRoRGVsYXksIGNsZWFudXBNb3VzZU1vdmVIYW5kbGVyLCBjbGVhclBvaW50ZXJFdmVudHMsIG9uT3BlbkNoYW5nZSwgb3Blbiwgb3BlblJlZiwgdHJlZSwgZGVsYXlSZWYsIGhhbmRsZUNsb3NlUmVmLCBkYXRhUmVmXSk7XG5cbiAgLy8gQmxvY2sgcG9pbnRlci1ldmVudHMgb2YgZXZlcnkgZWxlbWVudCBvdGhlciB0aGFuIHRoZSByZWZlcmVuY2UgYW5kIGZsb2F0aW5nXG4gIC8vIHdoaWxlIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIG9wZW4gYW5kIGhhcyBhIGBoYW5kbGVDbG9zZWAgaGFuZGxlci4gQWxzb1xuICAvLyBoYW5kbGVzIG5lc3RlZCBmbG9hdGluZyBlbGVtZW50cy5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8xNzIyXG4gIGluZGV4KCgpID0+IHtcbiAgICB2YXIgX2hhbmRsZUNsb3NlUmVmJGN1cnJlO1xuICAgIGlmICghZW5hYmxlZCkgcmV0dXJuO1xuICAgIGlmIChvcGVuICYmIChfaGFuZGxlQ2xvc2VSZWYkY3VycmUgPSBoYW5kbGVDbG9zZVJlZi5jdXJyZW50KSAhPSBudWxsICYmIF9oYW5kbGVDbG9zZVJlZiRjdXJyZS5fX29wdGlvbnMuYmxvY2tQb2ludGVyRXZlbnRzICYmIGlzSG92ZXJPcGVuKCkpIHtcbiAgICAgIGNvbnN0IGJvZHkgPSBnZXREb2N1bWVudChlbGVtZW50cy5mbG9hdGluZykuYm9keTtcbiAgICAgIGJvZHkuc2V0QXR0cmlidXRlKHNhZmVQb2x5Z29uSWRlbnRpZmllciwgJycpO1xuICAgICAgYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuICAgICAgcGVyZm9ybWVkUG9pbnRlckV2ZW50c011dGF0aW9uUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgY29uc3QgZmxvYXRpbmdFbCA9IGVsZW1lbnRzLmZsb2F0aW5nO1xuICAgICAgaWYgKGlzRWxlbWVudChlbGVtZW50cy5kb21SZWZlcmVuY2UpICYmIGZsb2F0aW5nRWwpIHtcbiAgICAgICAgdmFyIF90cmVlJG5vZGVzUmVmJGN1cnJlbjtcbiAgICAgICAgY29uc3QgcmVmID0gZWxlbWVudHMuZG9tUmVmZXJlbmNlO1xuICAgICAgICBjb25zdCBwYXJlbnRGbG9hdGluZyA9IHRyZWUgPT0gbnVsbCB8fCAoX3RyZWUkbm9kZXNSZWYkY3VycmVuID0gdHJlZS5ub2Rlc1JlZi5jdXJyZW50LmZpbmQobm9kZSA9PiBub2RlLmlkID09PSBwYXJlbnRJZCkpID09IG51bGwgfHwgKF90cmVlJG5vZGVzUmVmJGN1cnJlbiA9IF90cmVlJG5vZGVzUmVmJGN1cnJlbi5jb250ZXh0KSA9PSBudWxsID8gdm9pZCAwIDogX3RyZWUkbm9kZXNSZWYkY3VycmVuLmVsZW1lbnRzLmZsb2F0aW5nO1xuICAgICAgICBpZiAocGFyZW50RmxvYXRpbmcpIHtcbiAgICAgICAgICBwYXJlbnRGbG9hdGluZy5zdHlsZS5wb2ludGVyRXZlbnRzID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmVmLnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnYXV0byc7XG4gICAgICAgIGZsb2F0aW5nRWwuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdhdXRvJztcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICByZWYuc3R5bGUucG9pbnRlckV2ZW50cyA9ICcnO1xuICAgICAgICAgIGZsb2F0aW5nRWwuc3R5bGUucG9pbnRlckV2ZW50cyA9ICcnO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2VuYWJsZWQsIG9wZW4sIHBhcmVudElkLCBlbGVtZW50cywgdHJlZSwgaGFuZGxlQ2xvc2VSZWYsIGlzSG92ZXJPcGVuXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoIW9wZW4pIHtcbiAgICAgIHBvaW50ZXJUeXBlUmVmLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICBjbGVhbnVwTW91c2VNb3ZlSGFuZGxlcigpO1xuICAgICAgY2xlYXJQb2ludGVyRXZlbnRzKCk7XG4gICAgfVxuICB9LCBbb3BlbiwgY2xlYW51cE1vdXNlTW92ZUhhbmRsZXIsIGNsZWFyUG9pbnRlckV2ZW50c10pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhbnVwTW91c2VNb3ZlSGFuZGxlcigpO1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICBjbGVhclRpbWVvdXQocmVzdFRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICBjbGVhclBvaW50ZXJFdmVudHMoKTtcbiAgICB9O1xuICB9LCBbZW5hYmxlZCwgZWxlbWVudHMuZG9tUmVmZXJlbmNlLCBjbGVhbnVwTW91c2VNb3ZlSGFuZGxlciwgY2xlYXJQb2ludGVyRXZlbnRzXSk7XG4gIGNvbnN0IHJlZmVyZW5jZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGZ1bmN0aW9uIHNldFBvaW50ZXJSZWYoZXZlbnQpIHtcbiAgICAgIHBvaW50ZXJUeXBlUmVmLmN1cnJlbnQgPSBldmVudC5wb2ludGVyVHlwZTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIG9uUG9pbnRlckRvd246IHNldFBvaW50ZXJSZWYsXG4gICAgICBvblBvaW50ZXJFbnRlcjogc2V0UG9pbnRlclJlZixcbiAgICAgIG9uTW91c2VNb3ZlKGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBuYXRpdmVFdmVudFxuICAgICAgICB9ID0gZXZlbnQ7XG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlTW92ZSgpIHtcbiAgICAgICAgICBpZiAoIWJsb2NrTW91c2VNb3ZlUmVmLmN1cnJlbnQgJiYgIW9wZW5SZWYuY3VycmVudCkge1xuICAgICAgICAgICAgb25PcGVuQ2hhbmdlKHRydWUsIG5hdGl2ZUV2ZW50LCAnaG92ZXInKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1vdXNlT25seSAmJiAhaXNNb3VzZUxpa2VQb2ludGVyVHlwZShwb2ludGVyVHlwZVJlZi5jdXJyZW50KSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3BlbiB8fCByZXN0TXMgPT09IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY2xlYXJUaW1lb3V0KHJlc3RUaW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgICBpZiAocG9pbnRlclR5cGVSZWYuY3VycmVudCA9PT0gJ3RvdWNoJykge1xuICAgICAgICAgIGhhbmRsZU1vdXNlTW92ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3RUaW1lb3V0UmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dChoYW5kbGVNb3VzZU1vdmUsIHJlc3RNcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LCBbbW91c2VPbmx5LCBvbk9wZW5DaGFuZ2UsIG9wZW4sIG9wZW5SZWYsIHJlc3RNc10pO1xuICBjb25zdCBmbG9hdGluZyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBvbk1vdXNlRW50ZXIoKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dFJlZi5jdXJyZW50KTtcbiAgICB9LFxuICAgIG9uTW91c2VMZWF2ZShldmVudCkge1xuICAgICAgY2xvc2VXaXRoRGVsYXkoZXZlbnQubmF0aXZlRXZlbnQsIGZhbHNlKTtcbiAgICB9XG4gIH0pLCBbY2xvc2VXaXRoRGVsYXldKTtcbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4gZW5hYmxlZCA/IHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmdcbiAgfSA6IHt9LCBbZW5hYmxlZCwgcmVmZXJlbmNlLCBmbG9hdGluZ10pO1xufVxuXG5jb25zdCBOT09QID0gKCkgPT4ge307XG5jb25zdCBGbG9hdGluZ0RlbGF5R3JvdXBDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQoe1xuICBkZWxheTogMCxcbiAgaW5pdGlhbERlbGF5OiAwLFxuICB0aW1lb3V0TXM6IDAsXG4gIGN1cnJlbnRJZDogbnVsbCxcbiAgc2V0Q3VycmVudElkOiBOT09QLFxuICBzZXRTdGF0ZTogTk9PUCxcbiAgaXNJbnN0YW50UGhhc2U6IGZhbHNlXG59KTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgYHVzZURlbGF5R3JvdXAoKWAgaW5zdGVhZC5cbiAqL1xuY29uc3QgdXNlRGVsYXlHcm91cENvbnRleHQgPSAoKSA9PiBSZWFjdC51c2VDb250ZXh0KEZsb2F0aW5nRGVsYXlHcm91cENvbnRleHQpO1xuLyoqXG4gKiBQcm92aWRlcyBjb250ZXh0IGZvciBhIGdyb3VwIG9mIGZsb2F0aW5nIGVsZW1lbnRzIHRoYXQgc2hvdWxkIHNoYXJlIGFcbiAqIGBkZWxheWAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvRmxvYXRpbmdEZWxheUdyb3VwXG4gKi9cbmZ1bmN0aW9uIEZsb2F0aW5nRGVsYXlHcm91cChwcm9wcykge1xuICBjb25zdCB7XG4gICAgY2hpbGRyZW4sXG4gICAgZGVsYXksXG4gICAgdGltZW91dE1zID0gMFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVdID0gUmVhY3QudXNlUmVkdWNlcigocHJldiwgbmV4dCkgPT4gKHtcbiAgICAuLi5wcmV2LFxuICAgIC4uLm5leHRcbiAgfSksIHtcbiAgICBkZWxheSxcbiAgICB0aW1lb3V0TXMsXG4gICAgaW5pdGlhbERlbGF5OiBkZWxheSxcbiAgICBjdXJyZW50SWQ6IG51bGwsXG4gICAgaXNJbnN0YW50UGhhc2U6IGZhbHNlXG4gIH0pO1xuICBjb25zdCBpbml0aWFsQ3VycmVudElkUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBzZXRDdXJyZW50SWQgPSBSZWFjdC51c2VDYWxsYmFjayhjdXJyZW50SWQgPT4ge1xuICAgIHNldFN0YXRlKHtcbiAgICAgIGN1cnJlbnRJZFxuICAgIH0pO1xuICB9LCBbXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoc3RhdGUuY3VycmVudElkKSB7XG4gICAgICBpZiAoaW5pdGlhbEN1cnJlbnRJZFJlZi5jdXJyZW50ID09PSBudWxsKSB7XG4gICAgICAgIGluaXRpYWxDdXJyZW50SWRSZWYuY3VycmVudCA9IHN0YXRlLmN1cnJlbnRJZDtcbiAgICAgIH0gZWxzZSBpZiAoIXN0YXRlLmlzSW5zdGFudFBoYXNlKSB7XG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICBpc0luc3RhbnRQaGFzZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHN0YXRlLmlzSW5zdGFudFBoYXNlKSB7XG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICBpc0luc3RhbnRQaGFzZTogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpbml0aWFsQ3VycmVudElkUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgIH1cbiAgfSwgW3N0YXRlLmN1cnJlbnRJZCwgc3RhdGUuaXNJbnN0YW50UGhhc2VdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEZsb2F0aW5nRGVsYXlHcm91cENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzZXRTdGF0ZSxcbiAgICAgIHNldEN1cnJlbnRJZFxuICAgIH0pLCBbc3RhdGUsIHNldEN1cnJlbnRJZF0pXG4gIH0sIGNoaWxkcmVuKTtcbn1cbi8qKlxuICogRW5hYmxlcyBncm91cGluZyB3aGVuIGNhbGxlZCBpbnNpZGUgYSBjb21wb25lbnQgdGhhdCdzIGEgY2hpbGQgb2YgYVxuICogYEZsb2F0aW5nRGVsYXlHcm91cGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvRmxvYXRpbmdEZWxheUdyb3VwXG4gKi9cbmZ1bmN0aW9uIHVzZURlbGF5R3JvdXAoY29udGV4dCwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBvcGVuLFxuICAgIG9uT3BlbkNoYW5nZSxcbiAgICBmbG9hdGluZ0lkXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgaWQ6IG9wdGlvbklkXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpZCA9IG9wdGlvbklkICE9IG51bGwgPyBvcHRpb25JZCA6IGZsb2F0aW5nSWQ7XG4gIGNvbnN0IGdyb3VwQ29udGV4dCA9IHVzZURlbGF5R3JvdXBDb250ZXh0KCk7XG4gIGNvbnN0IHtcbiAgICBjdXJyZW50SWQsXG4gICAgc2V0Q3VycmVudElkLFxuICAgIGluaXRpYWxEZWxheSxcbiAgICBzZXRTdGF0ZSxcbiAgICB0aW1lb3V0TXNcbiAgfSA9IGdyb3VwQ29udGV4dDtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmICghY3VycmVudElkKSByZXR1cm47XG4gICAgc2V0U3RhdGUoe1xuICAgICAgZGVsYXk6IHtcbiAgICAgICAgb3BlbjogMSxcbiAgICAgICAgY2xvc2U6IGdldERlbGF5KGluaXRpYWxEZWxheSwgJ2Nsb3NlJylcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoY3VycmVudElkICE9PSBpZCkge1xuICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICB9XG4gIH0sIFtpZCwgb25PcGVuQ2hhbmdlLCBzZXRTdGF0ZSwgY3VycmVudElkLCBpbml0aWFsRGVsYXldKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGZ1bmN0aW9uIHVuc2V0KCkge1xuICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgZGVsYXk6IGluaXRpYWxEZWxheSxcbiAgICAgICAgY3VycmVudElkOiBudWxsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKCFjdXJyZW50SWQpIHJldHVybjtcbiAgICBpZiAoIW9wZW4gJiYgY3VycmVudElkID09PSBpZCkge1xuICAgICAgaWYgKHRpbWVvdXRNcykge1xuICAgICAgICBjb25zdCB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQodW5zZXQsIHRpbWVvdXRNcyk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgdW5zZXQoKTtcbiAgICB9XG4gIH0sIFtvcGVuLCBzZXRTdGF0ZSwgY3VycmVudElkLCBpZCwgb25PcGVuQ2hhbmdlLCBpbml0aWFsRGVsYXksIHRpbWVvdXRNc10pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKHNldEN1cnJlbnRJZCA9PT0gTk9PUCB8fCAhb3BlbikgcmV0dXJuO1xuICAgIHNldEN1cnJlbnRJZChpZCk7XG4gIH0sIFtvcGVuLCBzZXRDdXJyZW50SWQsIGlkXSk7XG4gIHJldHVybiBncm91cENvbnRleHQ7XG59XG5cbmZ1bmN0aW9uIGdldEFuY2VzdG9ycyhub2RlcywgaWQpIHtcbiAgdmFyIF9ub2RlcyRmaW5kO1xuICBsZXQgYWxsQW5jZXN0b3JzID0gW107XG4gIGxldCBjdXJyZW50UGFyZW50SWQgPSAoX25vZGVzJGZpbmQgPSBub2Rlcy5maW5kKG5vZGUgPT4gbm9kZS5pZCA9PT0gaWQpKSA9PSBudWxsID8gdm9pZCAwIDogX25vZGVzJGZpbmQucGFyZW50SWQ7XG4gIHdoaWxlIChjdXJyZW50UGFyZW50SWQpIHtcbiAgICBjb25zdCBjdXJyZW50Tm9kZSA9IG5vZGVzLmZpbmQobm9kZSA9PiBub2RlLmlkID09PSBjdXJyZW50UGFyZW50SWQpO1xuICAgIGN1cnJlbnRQYXJlbnRJZCA9IGN1cnJlbnROb2RlID09IG51bGwgPyB2b2lkIDAgOiBjdXJyZW50Tm9kZS5wYXJlbnRJZDtcbiAgICBpZiAoY3VycmVudE5vZGUpIHtcbiAgICAgIGFsbEFuY2VzdG9ycyA9IGFsbEFuY2VzdG9ycy5jb25jYXQoY3VycmVudE5vZGUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYWxsQW5jZXN0b3JzO1xufVxuXG5mdW5jdGlvbiBnZXRDaGlsZHJlbihub2RlcywgaWQpIHtcbiAgbGV0IGFsbENoaWxkcmVuID0gbm9kZXMuZmlsdGVyKG5vZGUgPT4ge1xuICAgIHZhciBfbm9kZSRjb250ZXh0O1xuICAgIHJldHVybiBub2RlLnBhcmVudElkID09PSBpZCAmJiAoKF9ub2RlJGNvbnRleHQgPSBub2RlLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRjb250ZXh0Lm9wZW4pO1xuICB9KTtcbiAgbGV0IGN1cnJlbnRDaGlsZHJlbiA9IGFsbENoaWxkcmVuO1xuICB3aGlsZSAoY3VycmVudENoaWxkcmVuLmxlbmd0aCkge1xuICAgIGN1cnJlbnRDaGlsZHJlbiA9IG5vZGVzLmZpbHRlcihub2RlID0+IHtcbiAgICAgIHZhciBfY3VycmVudENoaWxkcmVuO1xuICAgICAgcmV0dXJuIChfY3VycmVudENoaWxkcmVuID0gY3VycmVudENoaWxkcmVuKSA9PSBudWxsID8gdm9pZCAwIDogX2N1cnJlbnRDaGlsZHJlbi5zb21lKG4gPT4ge1xuICAgICAgICB2YXIgX25vZGUkY29udGV4dDI7XG4gICAgICAgIHJldHVybiBub2RlLnBhcmVudElkID09PSBuLmlkICYmICgoX25vZGUkY29udGV4dDIgPSBub2RlLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRjb250ZXh0Mi5vcGVuKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGFsbENoaWxkcmVuID0gYWxsQ2hpbGRyZW4uY29uY2F0KGN1cnJlbnRDaGlsZHJlbik7XG4gIH1cbiAgcmV0dXJuIGFsbENoaWxkcmVuO1xufVxuZnVuY3Rpb24gZ2V0RGVlcGVzdE5vZGUobm9kZXMsIGlkKSB7XG4gIGxldCBkZWVwZXN0Tm9kZUlkO1xuICBsZXQgbWF4RGVwdGggPSAtMTtcbiAgZnVuY3Rpb24gZmluZERlZXBlc3Qobm9kZUlkLCBkZXB0aCkge1xuICAgIGlmIChkZXB0aCA+IG1heERlcHRoKSB7XG4gICAgICBkZWVwZXN0Tm9kZUlkID0gbm9kZUlkO1xuICAgICAgbWF4RGVwdGggPSBkZXB0aDtcbiAgICB9XG4gICAgY29uc3QgY2hpbGRyZW4gPSBnZXRDaGlsZHJlbihub2Rlcywgbm9kZUlkKTtcbiAgICBjaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcbiAgICAgIGZpbmREZWVwZXN0KGNoaWxkLmlkLCBkZXB0aCArIDEpO1xuICAgIH0pO1xuICB9XG4gIGZpbmREZWVwZXN0KGlkLCAwKTtcbiAgcmV0dXJuIG5vZGVzLmZpbmQobm9kZSA9PiBub2RlLmlkID09PSBkZWVwZXN0Tm9kZUlkKTtcbn1cblxuLy8gTW9kaWZpZWQgdG8gYWRkIGNvbmRpdGlvbmFsIGBhcmlhLWhpZGRlbmAgc3VwcG9ydDpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90aGVLYXNoZXkvYXJpYS1oaWRkZW4vYmxvYi85MjIwYzhmNGE0ZmQzNWY2M2JlZTU1MTBhOWY0MWEzNzI2NDM4MmQ0L3NyYy9pbmRleC50c1xubGV0IGNvdW50ZXJNYXAgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbmxldCB1bmNvbnRyb2xsZWRFbGVtZW50c1NldCA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha1NldCgpO1xubGV0IG1hcmtlck1hcCA9IHt9O1xubGV0IGxvY2tDb3VudCA9IDA7XG5jb25zdCBzdXBwb3J0c0luZXJ0ID0gKCkgPT4gdHlwZW9mIEhUTUxFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiAnaW5lcnQnIGluIEhUTUxFbGVtZW50LnByb3RvdHlwZTtcbmNvbnN0IHVud3JhcEhvc3QgPSBub2RlID0+IG5vZGUgJiYgKG5vZGUuaG9zdCB8fCB1bndyYXBIb3N0KG5vZGUucGFyZW50Tm9kZSkpO1xuY29uc3QgY29ycmVjdEVsZW1lbnRzID0gKHBhcmVudCwgdGFyZ2V0cykgPT4gdGFyZ2V0cy5tYXAodGFyZ2V0ID0+IHtcbiAgaWYgKHBhcmVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuICBjb25zdCBjb3JyZWN0ZWRUYXJnZXQgPSB1bndyYXBIb3N0KHRhcmdldCk7XG4gIGlmIChwYXJlbnQuY29udGFpbnMoY29ycmVjdGVkVGFyZ2V0KSkge1xuICAgIHJldHVybiBjb3JyZWN0ZWRUYXJnZXQ7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59KS5maWx0ZXIoeCA9PiB4ICE9IG51bGwpO1xuZnVuY3Rpb24gYXBwbHlBdHRyaWJ1dGVUb090aGVycyh1bmNvcnJlY3RlZEF2b2lkRWxlbWVudHMsIGJvZHksIGFyaWFIaWRkZW4sIGluZXJ0KSB7XG4gIGNvbnN0IG1hcmtlck5hbWUgPSAnZGF0YS1mbG9hdGluZy11aS1pbmVydCc7XG4gIGNvbnN0IGNvbnRyb2xBdHRyaWJ1dGUgPSBpbmVydCA/ICdpbmVydCcgOiBhcmlhSGlkZGVuID8gJ2FyaWEtaGlkZGVuJyA6IG51bGw7XG4gIGNvbnN0IGF2b2lkRWxlbWVudHMgPSBjb3JyZWN0RWxlbWVudHMoYm9keSwgdW5jb3JyZWN0ZWRBdm9pZEVsZW1lbnRzKTtcbiAgY29uc3QgZWxlbWVudHNUb0tlZXAgPSBuZXcgU2V0KCk7XG4gIGNvbnN0IGVsZW1lbnRzVG9TdG9wID0gbmV3IFNldChhdm9pZEVsZW1lbnRzKTtcbiAgY29uc3QgaGlkZGVuRWxlbWVudHMgPSBbXTtcbiAgaWYgKCFtYXJrZXJNYXBbbWFya2VyTmFtZV0pIHtcbiAgICBtYXJrZXJNYXBbbWFya2VyTmFtZV0gPSBuZXcgV2Vha01hcCgpO1xuICB9XG4gIGNvbnN0IG1hcmtlckNvdW50ZXIgPSBtYXJrZXJNYXBbbWFya2VyTmFtZV07XG4gIGF2b2lkRWxlbWVudHMuZm9yRWFjaChrZWVwKTtcbiAgZGVlcChib2R5KTtcbiAgZWxlbWVudHNUb0tlZXAuY2xlYXIoKTtcbiAgZnVuY3Rpb24ga2VlcChlbCkge1xuICAgIGlmICghZWwgfHwgZWxlbWVudHNUb0tlZXAuaGFzKGVsKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbGVtZW50c1RvS2VlcC5hZGQoZWwpO1xuICAgIGVsLnBhcmVudE5vZGUgJiYga2VlcChlbC5wYXJlbnROb2RlKTtcbiAgfVxuICBmdW5jdGlvbiBkZWVwKHBhcmVudCkge1xuICAgIGlmICghcGFyZW50IHx8IGVsZW1lbnRzVG9TdG9wLmhhcyhwYXJlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFtdLmZvckVhY2guY2FsbChwYXJlbnQuY2hpbGRyZW4sIG5vZGUgPT4ge1xuICAgICAgaWYgKGdldE5vZGVOYW1lKG5vZGUpID09PSAnc2NyaXB0JykgcmV0dXJuO1xuICAgICAgaWYgKGVsZW1lbnRzVG9LZWVwLmhhcyhub2RlKSkge1xuICAgICAgICBkZWVwKG5vZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgYXR0ciA9IGNvbnRyb2xBdHRyaWJ1dGUgPyBub2RlLmdldEF0dHJpYnV0ZShjb250cm9sQXR0cmlidXRlKSA6IG51bGw7XG4gICAgICAgIGNvbnN0IGFscmVhZHlIaWRkZW4gPSBhdHRyICE9PSBudWxsICYmIGF0dHIgIT09ICdmYWxzZSc7XG4gICAgICAgIGNvbnN0IGNvdW50ZXJWYWx1ZSA9IChjb3VudGVyTWFwLmdldChub2RlKSB8fCAwKSArIDE7XG4gICAgICAgIGNvbnN0IG1hcmtlclZhbHVlID0gKG1hcmtlckNvdW50ZXIuZ2V0KG5vZGUpIHx8IDApICsgMTtcbiAgICAgICAgY291bnRlck1hcC5zZXQobm9kZSwgY291bnRlclZhbHVlKTtcbiAgICAgICAgbWFya2VyQ291bnRlci5zZXQobm9kZSwgbWFya2VyVmFsdWUpO1xuICAgICAgICBoaWRkZW5FbGVtZW50cy5wdXNoKG5vZGUpO1xuICAgICAgICBpZiAoY291bnRlclZhbHVlID09PSAxICYmIGFscmVhZHlIaWRkZW4pIHtcbiAgICAgICAgICB1bmNvbnRyb2xsZWRFbGVtZW50c1NldC5hZGQobm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hcmtlclZhbHVlID09PSAxKSB7XG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUobWFya2VyTmFtZSwgJycpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYWxyZWFkeUhpZGRlbiAmJiBjb250cm9sQXR0cmlidXRlKSB7XG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoY29udHJvbEF0dHJpYnV0ZSwgJ3RydWUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGxvY2tDb3VudCsrO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGhpZGRlbkVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBjb25zdCBjb3VudGVyVmFsdWUgPSAoY291bnRlck1hcC5nZXQoZWxlbWVudCkgfHwgMCkgLSAxO1xuICAgICAgY29uc3QgbWFya2VyVmFsdWUgPSAobWFya2VyQ291bnRlci5nZXQoZWxlbWVudCkgfHwgMCkgLSAxO1xuICAgICAgY291bnRlck1hcC5zZXQoZWxlbWVudCwgY291bnRlclZhbHVlKTtcbiAgICAgIG1hcmtlckNvdW50ZXIuc2V0KGVsZW1lbnQsIG1hcmtlclZhbHVlKTtcbiAgICAgIGlmICghY291bnRlclZhbHVlKSB7XG4gICAgICAgIGlmICghdW5jb250cm9sbGVkRWxlbWVudHNTZXQuaGFzKGVsZW1lbnQpICYmIGNvbnRyb2xBdHRyaWJ1dGUpIHtcbiAgICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShjb250cm9sQXR0cmlidXRlKTtcbiAgICAgICAgfVxuICAgICAgICB1bmNvbnRyb2xsZWRFbGVtZW50c1NldC5kZWxldGUoZWxlbWVudCk7XG4gICAgICB9XG4gICAgICBpZiAoIW1hcmtlclZhbHVlKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG1hcmtlck5hbWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGxvY2tDb3VudC0tO1xuICAgIGlmICghbG9ja0NvdW50KSB7XG4gICAgICBjb3VudGVyTWFwID0gbmV3IFdlYWtNYXAoKTtcbiAgICAgIGNvdW50ZXJNYXAgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgdW5jb250cm9sbGVkRWxlbWVudHNTZXQgPSBuZXcgV2Vha1NldCgpO1xuICAgICAgbWFya2VyTWFwID0ge307XG4gICAgfVxuICB9O1xufVxuZnVuY3Rpb24gbWFya090aGVycyhhdm9pZEVsZW1lbnRzLCBhcmlhSGlkZGVuLCBpbmVydCkge1xuICBpZiAoYXJpYUhpZGRlbiA9PT0gdm9pZCAwKSB7XG4gICAgYXJpYUhpZGRlbiA9IGZhbHNlO1xuICB9XG4gIGlmIChpbmVydCA9PT0gdm9pZCAwKSB7XG4gICAgaW5lcnQgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBib2R5ID0gZ2V0RG9jdW1lbnQoYXZvaWRFbGVtZW50c1swXSkuYm9keTtcbiAgcmV0dXJuIGFwcGx5QXR0cmlidXRlVG9PdGhlcnMoYXZvaWRFbGVtZW50cy5jb25jYXQoQXJyYXkuZnJvbShib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thcmlhLWxpdmVdJykpKSwgYm9keSwgYXJpYUhpZGRlbiwgaW5lcnQpO1xufVxuXG5jb25zdCBnZXRUYWJiYWJsZU9wdGlvbnMgPSAoKSA9PiAoe1xuICBnZXRTaGFkb3dSb290OiB0cnVlLFxuICBkaXNwbGF5Q2hlY2s6XG4gIC8vIEpTRE9NIGRvZXMgbm90IHN1cHBvcnQgdGhlIGB0YWJiYWJsZWAgbGlicmFyeS4gVG8gc29sdmUgdGhpcyB3ZSBjYW5cbiAgLy8gY2hlY2sgaWYgYFJlc2l6ZU9ic2VydmVyYCBpcyBhIHJlYWwgZnVuY3Rpb24gKG5vdCBwb2x5ZmlsbGVkKSwgd2hpY2hcbiAgLy8gZGV0ZXJtaW5lcyBpZiB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBpcyBKU0RPTS1saWtlLlxuICB0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicgJiYgUmVzaXplT2JzZXJ2ZXIudG9TdHJpbmcoKS5pbmNsdWRlcygnW25hdGl2ZSBjb2RlXScpID8gJ2Z1bGwnIDogJ25vbmUnXG59KTtcbmZ1bmN0aW9uIGdldFRhYmJhYmxlSW4oY29udGFpbmVyLCBkaXJlY3Rpb24pIHtcbiAgY29uc3QgYWxsVGFiYmFibGUgPSB0YWJiYWJsZShjb250YWluZXIsIGdldFRhYmJhYmxlT3B0aW9ucygpKTtcbiAgaWYgKGRpcmVjdGlvbiA9PT0gJ3ByZXYnKSB7XG4gICAgYWxsVGFiYmFibGUucmV2ZXJzZSgpO1xuICB9XG4gIGNvbnN0IGFjdGl2ZUluZGV4ID0gYWxsVGFiYmFibGUuaW5kZXhPZihhY3RpdmVFbGVtZW50KGdldERvY3VtZW50KGNvbnRhaW5lcikpKTtcbiAgY29uc3QgbmV4dFRhYmJhYmxlRWxlbWVudHMgPSBhbGxUYWJiYWJsZS5zbGljZShhY3RpdmVJbmRleCArIDEpO1xuICByZXR1cm4gbmV4dFRhYmJhYmxlRWxlbWVudHNbMF07XG59XG5mdW5jdGlvbiBnZXROZXh0VGFiYmFibGUoKSB7XG4gIHJldHVybiBnZXRUYWJiYWJsZUluKGRvY3VtZW50LmJvZHksICduZXh0Jyk7XG59XG5mdW5jdGlvbiBnZXRQcmV2aW91c1RhYmJhYmxlKCkge1xuICByZXR1cm4gZ2V0VGFiYmFibGVJbihkb2N1bWVudC5ib2R5LCAncHJldicpO1xufVxuZnVuY3Rpb24gaXNPdXRzaWRlRXZlbnQoZXZlbnQsIGNvbnRhaW5lcikge1xuICBjb25zdCBjb250YWluZXJFbGVtZW50ID0gY29udGFpbmVyIHx8IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gIGNvbnN0IHJlbGF0ZWRUYXJnZXQgPSBldmVudC5yZWxhdGVkVGFyZ2V0O1xuICByZXR1cm4gIXJlbGF0ZWRUYXJnZXQgfHwgIWNvbnRhaW5zKGNvbnRhaW5lckVsZW1lbnQsIHJlbGF0ZWRUYXJnZXQpO1xufVxuZnVuY3Rpb24gZGlzYWJsZUZvY3VzSW5zaWRlKGNvbnRhaW5lcikge1xuICBjb25zdCB0YWJiYWJsZUVsZW1lbnRzID0gdGFiYmFibGUoY29udGFpbmVyLCBnZXRUYWJiYWJsZU9wdGlvbnMoKSk7XG4gIHRhYmJhYmxlRWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICBlbGVtZW50LmRhdGFzZXQudGFiaW5kZXggPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKSB8fCAnJztcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBlbmFibGVGb2N1c0luc2lkZShjb250YWluZXIpIHtcbiAgY29uc3QgZWxlbWVudHMgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdGFiaW5kZXhdJyk7XG4gIGVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgY29uc3QgdGFiaW5kZXggPSBlbGVtZW50LmRhdGFzZXQudGFiaW5kZXg7XG4gICAgZGVsZXRlIGVsZW1lbnQuZGF0YXNldC50YWJpbmRleDtcbiAgICBpZiAodGFiaW5kZXgpIHtcbiAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsIHRhYmluZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIGdldENsb3Nlc3RUYWJiYWJsZUVsZW1lbnQodGFiYmFibGVFbGVtZW50cywgZWxlbWVudCwgZmxvYXRpbmcpIHtcbiAgY29uc3QgZWxlbWVudEluZGV4ID0gdGFiYmFibGVFbGVtZW50cy5pbmRleE9mKGVsZW1lbnQpO1xuICBmdW5jdGlvbiB0cmF2ZXJzZVRhYmJhYmxlRWxlbWVudHMobmV4dCkge1xuICAgIGNvbnN0IGF0dHIgPSBjcmVhdGVBdHRyaWJ1dGUoJ2ZvY3VzLWd1YXJkJyk7XG4gICAgbGV0IGluZGV4ID0gZWxlbWVudEluZGV4ICsgKG5leHQgPyAxIDogMCk7XG4gICAgbGV0IGN1cnJlbnRFbGVtZW50ID0gdGFiYmFibGVFbGVtZW50c1tpbmRleF07XG4gICAgd2hpbGUgKGN1cnJlbnRFbGVtZW50ICYmICghY3VycmVudEVsZW1lbnQuaXNDb25uZWN0ZWQgfHwgY3VycmVudEVsZW1lbnQuaGFzQXR0cmlidXRlKGF0dHIpIHx8IGNvbnRhaW5zKGZsb2F0aW5nLCBjdXJyZW50RWxlbWVudCkpKSB7XG4gICAgICBpZiAobmV4dCkge1xuICAgICAgICBpbmRleCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5kZXgtLTtcbiAgICAgIH1cbiAgICAgIGN1cnJlbnRFbGVtZW50ID0gdGFiYmFibGVFbGVtZW50c1tpbmRleF07XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50RWxlbWVudDtcbiAgfVxuXG4gIC8vIEZpcnN0LCB0cnkgdG8gZmluZCB0aGUgbmV4dCB0YWJiYWJsZSBlbGVtZW50XG4gIGNvbnN0IG5leHQgPSB0cmF2ZXJzZVRhYmJhYmxlRWxlbWVudHModHJ1ZSk7XG4gIGlmIChuZXh0KSB7XG4gICAgcmV0dXJuIG5leHQ7XG4gIH1cblxuICAvLyBJZiB3ZSBjYW4ndCBmaW5kIGEgbmV4dCB0YWJiYWJsZSBlbGVtZW50LCB0cnkgdG8gZmluZCB0aGUgcHJldmlvdXMgb25lXG4gIHJldHVybiB0cmF2ZXJzZVRhYmJhYmxlRWxlbWVudHMoZmFsc2UpO1xufVxuXG4vLyBTZWUgRGllZ28gSGF6J3MgU2FuZGJveCBmb3IgbWFraW5nIHRoaXMgbG9naWMgd29yayB3ZWxsIG9uIFNhZmFyaS9pT1M6XG4vLyBodHRwczovL2NvZGVzYW5kYm94LmlvL3MvdGFiYmFibGUtcG9ydGFsLWY0dG5nP2ZpbGU9L3NyYy9Gb2N1c1RyYXAudHN4XG5cbmNvbnN0IEhJRERFTl9TVFlMRVMgPSB7XG4gIGJvcmRlcjogMCxcbiAgY2xpcDogJ3JlY3QoMCAwIDAgMCknLFxuICBoZWlnaHQ6ICcxcHgnLFxuICBtYXJnaW46ICctMXB4JyxcbiAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICBwYWRkaW5nOiAwLFxuICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gIHdpZHRoOiAnMXB4JyxcbiAgdG9wOiAwLFxuICBsZWZ0OiAwXG59O1xubGV0IHRpbWVvdXRJZDtcbmZ1bmN0aW9uIHNldEFjdGl2ZUVsZW1lbnRPblRhYihldmVudCkge1xuICBpZiAoZXZlbnQua2V5ID09PSAnVGFiJykge1xuICAgIGV2ZW50LnRhcmdldDtcbiAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgfVxufVxuY29uc3QgRm9jdXNHdWFyZCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEZvY3VzR3VhcmQocHJvcHMsIHJlZikge1xuICBjb25zdCBbcm9sZSwgc2V0Um9sZV0gPSBSZWFjdC51c2VTdGF0ZSgpO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKGlzU2FmYXJpKCkpIHtcbiAgICAgIC8vIFVubGlrZSBvdGhlciBzY3JlZW4gcmVhZGVycyBzdWNoIGFzIE5WREEgYW5kIEpBV1MsIHRoZSB2aXJ0dWFsIGN1cnNvclxuICAgICAgLy8gb24gVm9pY2VPdmVyIGRvZXMgdHJpZ2dlciB0aGUgb25Gb2N1cyBldmVudCwgc28gd2UgY2FuIHVzZSB0aGUgZm9jdXNcbiAgICAgIC8vIHRyYXAgZWxlbWVudC4gT24gU2FmYXJpLCBvbmx5IGJ1dHRvbnMgdHJpZ2dlciB0aGUgb25Gb2N1cyBldmVudC5cbiAgICAgIC8vIE5COiBcImdyb3VwXCIgcm9sZSBpbiB0aGUgU2FuZGJveCBubyBsb25nZXIgYXBwZWFycyB0byB3b3JrLCBtdXN0IGJlIGFcbiAgICAgIC8vIGJ1dHRvbiByb2xlLlxuICAgICAgc2V0Um9sZSgnYnV0dG9uJyk7XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBzZXRBY3RpdmVFbGVtZW50T25UYWIpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgc2V0QWN0aXZlRWxlbWVudE9uVGFiKTtcbiAgICB9O1xuICB9LCBbXSk7XG4gIGNvbnN0IHJlc3RQcm9wcyA9IHtcbiAgICByZWYsXG4gICAgdGFiSW5kZXg6IDAsXG4gICAgLy8gUm9sZSBpcyBvbmx5IGZvciBWb2ljZU92ZXJcbiAgICByb2xlLFxuICAgICdhcmlhLWhpZGRlbic6IHJvbGUgPyB1bmRlZmluZWQgOiB0cnVlLFxuICAgIFtjcmVhdGVBdHRyaWJ1dGUoJ2ZvY3VzLWd1YXJkJyldOiAnJyxcbiAgICBzdHlsZTogSElEREVOX1NUWUxFU1xuICB9O1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIF9leHRlbmRzKHt9LCBwcm9wcywgcmVzdFByb3BzKSk7XG59KTtcblxuY29uc3QgUG9ydGFsQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuY29uc3QgYXR0ciA9IC8qI19fUFVSRV9fKi9jcmVhdGVBdHRyaWJ1dGUoJ3BvcnRhbCcpO1xuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvRmxvYXRpbmdQb3J0YWwjdXNlZmxvYXRpbmdwb3J0YWxub2RlXG4gKi9cbmZ1bmN0aW9uIHVzZUZsb2F0aW5nUG9ydGFsTm9kZShwcm9wcykge1xuICBpZiAocHJvcHMgPT09IHZvaWQgMCkge1xuICAgIHByb3BzID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIHJvb3RcbiAgfSA9IHByb3BzO1xuICBjb25zdCB1bmlxdWVJZCA9IHVzZUlkKCk7XG4gIGNvbnN0IHBvcnRhbENvbnRleHQgPSB1c2VQb3J0YWxDb250ZXh0KCk7XG4gIGNvbnN0IFtwb3J0YWxOb2RlLCBzZXRQb3J0YWxOb2RlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBwb3J0YWxOb2RlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBpbmRleCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHBvcnRhbE5vZGUgPT0gbnVsbCB8fCBwb3J0YWxOb2RlLnJlbW92ZSgpO1xuICAgICAgLy8gQWxsb3cgdGhlIHN1YnNlcXVlbnQgbGF5b3V0IGVmZmVjdHMgdG8gY3JlYXRlIGEgbmV3IG5vZGUgb24gdXBkYXRlcy5cbiAgICAgIC8vIFRoZSBwb3J0YWwgbm9kZSB3aWxsIHN0aWxsIGJlIGNsZWFuZWQgdXAgb24gdW5tb3VudC5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjQ1NFxuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICBwb3J0YWxOb2RlUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfSwgW3BvcnRhbE5vZGVdKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIC8vIFdhaXQgZm9yIHRoZSB1bmlxdWVJZCB0byBiZSBnZW5lcmF0ZWQgYmVmb3JlIGNyZWF0aW5nIHRoZSBwb3J0YWwgbm9kZSBpblxuICAgIC8vIFJlYWN0IDwxOCAodXNpbmcgYHVzZUZsb2F0aW5nSWRgIGluc3RlYWQgb2YgdGhlIG5hdGl2ZSBgdXNlSWRgKS5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzI3NzhcbiAgICBpZiAoIXVuaXF1ZUlkKSByZXR1cm47XG4gICAgaWYgKHBvcnRhbE5vZGVSZWYuY3VycmVudCkgcmV0dXJuO1xuICAgIGNvbnN0IGV4aXN0aW5nSWRSb290ID0gaWQgPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkgOiBudWxsO1xuICAgIGlmICghZXhpc3RpbmdJZFJvb3QpIHJldHVybjtcbiAgICBjb25zdCBzdWJSb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgc3ViUm9vdC5pZCA9IHVuaXF1ZUlkO1xuICAgIHN1YlJvb3Quc2V0QXR0cmlidXRlKGF0dHIsICcnKTtcbiAgICBleGlzdGluZ0lkUm9vdC5hcHBlbmRDaGlsZChzdWJSb290KTtcbiAgICBwb3J0YWxOb2RlUmVmLmN1cnJlbnQgPSBzdWJSb290O1xuICAgIHNldFBvcnRhbE5vZGUoc3ViUm9vdCk7XG4gIH0sIFtpZCwgdW5pcXVlSWRdKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmICghdW5pcXVlSWQpIHJldHVybjtcbiAgICBpZiAocG9ydGFsTm9kZVJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgbGV0IGNvbnRhaW5lciA9IHJvb3QgfHwgKHBvcnRhbENvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IHBvcnRhbENvbnRleHQucG9ydGFsTm9kZSk7XG4gICAgaWYgKGNvbnRhaW5lciAmJiAhaXNFbGVtZW50KGNvbnRhaW5lcikpIGNvbnRhaW5lciA9IGNvbnRhaW5lci5jdXJyZW50O1xuICAgIGNvbnRhaW5lciA9IGNvbnRhaW5lciB8fCBkb2N1bWVudC5ib2R5O1xuICAgIGxldCBpZFdyYXBwZXIgPSBudWxsO1xuICAgIGlmIChpZCkge1xuICAgICAgaWRXcmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBpZFdyYXBwZXIuaWQgPSBpZDtcbiAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChpZFdyYXBwZXIpO1xuICAgIH1cbiAgICBjb25zdCBzdWJSb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgc3ViUm9vdC5pZCA9IHVuaXF1ZUlkO1xuICAgIHN1YlJvb3Quc2V0QXR0cmlidXRlKGF0dHIsICcnKTtcbiAgICBjb250YWluZXIgPSBpZFdyYXBwZXIgfHwgY29udGFpbmVyO1xuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChzdWJSb290KTtcbiAgICBwb3J0YWxOb2RlUmVmLmN1cnJlbnQgPSBzdWJSb290O1xuICAgIHNldFBvcnRhbE5vZGUoc3ViUm9vdCk7XG4gIH0sIFtpZCwgcm9vdCwgdW5pcXVlSWQsIHBvcnRhbENvbnRleHRdKTtcbiAgcmV0dXJuIHBvcnRhbE5vZGU7XG59XG4vKipcbiAqIFBvcnRhbHMgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaW50byBhIGdpdmVuIGNvbnRhaW5lciBlbGVtZW50IOKAlCBieSBkZWZhdWx0LFxuICogb3V0c2lkZSBvZiB0aGUgYXBwIHJvb3QgYW5kIGludG8gdGhlIGJvZHkuXG4gKiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgY2FuIGFwcGVhciBvdXRzaWRlIGFueVxuICogcG90ZW50aWFsIHBhcmVudCBjb250YWluZXJzIHRoYXQgY2F1c2UgY2xpcHBpbmcgKHN1Y2ggYXMgYG92ZXJmbG93OiBoaWRkZW5gKSxcbiAqIHdoaWxlIHJldGFpbmluZyBpdHMgbG9jYXRpb24gaW4gdGhlIFJlYWN0IHRyZWUuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvRmxvYXRpbmdQb3J0YWxcbiAqL1xuZnVuY3Rpb24gRmxvYXRpbmdQb3J0YWwocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNoaWxkcmVuLFxuICAgIGlkLFxuICAgIHJvb3QgPSBudWxsLFxuICAgIHByZXNlcnZlVGFiT3JkZXIgPSB0cnVlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgcG9ydGFsTm9kZSA9IHVzZUZsb2F0aW5nUG9ydGFsTm9kZSh7XG4gICAgaWQsXG4gICAgcm9vdFxuICB9KTtcbiAgY29uc3QgW2ZvY3VzTWFuYWdlclN0YXRlLCBzZXRGb2N1c01hbmFnZXJTdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgYmVmb3JlT3V0c2lkZVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgYWZ0ZXJPdXRzaWRlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBiZWZvcmVJbnNpZGVSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IGFmdGVySW5zaWRlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBzaG91bGRSZW5kZXJHdWFyZHMgPVxuICAvLyBUaGUgRm9jdXNNYW5hZ2VyIGFuZCB0aGVyZWZvcmUgZmxvYXRpbmcgZWxlbWVudCBhcmUgY3VycmVudGx5IG9wZW4vXG4gIC8vIHJlbmRlcmVkLlxuICAhIWZvY3VzTWFuYWdlclN0YXRlICYmXG4gIC8vIEd1YXJkcyBhcmUgb25seSBmb3Igbm9uLW1vZGFsIGZvY3VzIG1hbmFnZW1lbnQuXG4gICFmb2N1c01hbmFnZXJTdGF0ZS5tb2RhbCAmJlxuICAvLyBEb24ndCByZW5kZXIgaWYgdW5tb3VudCBpcyB0cmFuc2l0aW9uaW5nLlxuICBmb2N1c01hbmFnZXJTdGF0ZS5vcGVuICYmIHByZXNlcnZlVGFiT3JkZXIgJiYgISEocm9vdCB8fCBwb3J0YWxOb2RlKTtcblxuICAvLyBodHRwczovL2NvZGVzYW5kYm94LmlvL3MvdGFiYmFibGUtcG9ydGFsLWY0dG5nP2ZpbGU9L3NyYy9UYWJiYWJsZVBvcnRhbC50c3hcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXBvcnRhbE5vZGUgfHwgIXByZXNlcnZlVGFiT3JkZXIgfHwgZm9jdXNNYW5hZ2VyU3RhdGUgIT0gbnVsbCAmJiBmb2N1c01hbmFnZXJTdGF0ZS5tb2RhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIE1ha2Ugc3VyZSBlbGVtZW50cyBpbnNpZGUgdGhlIHBvcnRhbCBlbGVtZW50IGFyZSB0YWJiYWJsZSBvbmx5IHdoZW4gdGhlXG4gICAgLy8gcG9ydGFsIGhhcyBhbHJlYWR5IGJlZW4gZm9jdXNlZCwgZWl0aGVyIGJ5IHRhYmJpbmcgaW50byBhIGZvY3VzIHRyYXBcbiAgICAvLyBlbGVtZW50IG91dHNpZGUgb3IgdXNpbmcgdGhlIG1vdXNlLlxuICAgIGZ1bmN0aW9uIG9uRm9jdXMoZXZlbnQpIHtcbiAgICAgIGlmIChwb3J0YWxOb2RlICYmIGlzT3V0c2lkZUV2ZW50KGV2ZW50KSkge1xuICAgICAgICBjb25zdCBmb2N1c2luZyA9IGV2ZW50LnR5cGUgPT09ICdmb2N1c2luJztcbiAgICAgICAgY29uc3QgbWFuYWdlRm9jdXMgPSBmb2N1c2luZyA/IGVuYWJsZUZvY3VzSW5zaWRlIDogZGlzYWJsZUZvY3VzSW5zaWRlO1xuICAgICAgICBtYW5hZ2VGb2N1cyhwb3J0YWxOb2RlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gTGlzdGVuIHRvIHRoZSBldmVudCBvbiB0aGUgY2FwdHVyZSBwaGFzZSBzbyB0aGV5IHJ1biBiZWZvcmUgdGhlIGZvY3VzXG4gICAgLy8gdHJhcCBlbGVtZW50cyBvbkZvY3VzIHByb3AgaXMgY2FsbGVkLlxuICAgIHBvcnRhbE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIG9uRm9jdXMsIHRydWUpO1xuICAgIHBvcnRhbE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNvdXQnLCBvbkZvY3VzLCB0cnVlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcG9ydGFsTm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c2luJywgb25Gb2N1cywgdHJ1ZSk7XG4gICAgICBwb3J0YWxOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0Jywgb25Gb2N1cywgdHJ1ZSk7XG4gICAgfTtcbiAgfSwgW3BvcnRhbE5vZGUsIHByZXNlcnZlVGFiT3JkZXIsIGZvY3VzTWFuYWdlclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBmb2N1c01hbmFnZXJTdGF0ZS5tb2RhbF0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUG9ydGFsQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgICBwcmVzZXJ2ZVRhYk9yZGVyLFxuICAgICAgYmVmb3JlT3V0c2lkZVJlZixcbiAgICAgIGFmdGVyT3V0c2lkZVJlZixcbiAgICAgIGJlZm9yZUluc2lkZVJlZixcbiAgICAgIGFmdGVySW5zaWRlUmVmLFxuICAgICAgcG9ydGFsTm9kZSxcbiAgICAgIHNldEZvY3VzTWFuYWdlclN0YXRlXG4gICAgfSksIFtwcmVzZXJ2ZVRhYk9yZGVyLCBwb3J0YWxOb2RlXSlcbiAgfSwgc2hvdWxkUmVuZGVyR3VhcmRzICYmIHBvcnRhbE5vZGUgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRm9jdXNHdWFyZCwge1xuICAgIFwiZGF0YS10eXBlXCI6IFwib3V0c2lkZVwiLFxuICAgIHJlZjogYmVmb3JlT3V0c2lkZVJlZixcbiAgICBvbkZvY3VzOiBldmVudCA9PiB7XG4gICAgICBpZiAoaXNPdXRzaWRlRXZlbnQoZXZlbnQsIHBvcnRhbE5vZGUpKSB7XG4gICAgICAgIHZhciBfYmVmb3JlSW5zaWRlUmVmJGN1cnI7XG4gICAgICAgIChfYmVmb3JlSW5zaWRlUmVmJGN1cnIgPSBiZWZvcmVJbnNpZGVSZWYuY3VycmVudCkgPT0gbnVsbCB8fCBfYmVmb3JlSW5zaWRlUmVmJGN1cnIuZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHByZXZUYWJiYWJsZSA9IGdldFByZXZpb3VzVGFiYmFibGUoKSB8fCAoZm9jdXNNYW5hZ2VyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IGZvY3VzTWFuYWdlclN0YXRlLnJlZnMuZG9tUmVmZXJlbmNlLmN1cnJlbnQpO1xuICAgICAgICBwcmV2VGFiYmFibGUgPT0gbnVsbCB8fCBwcmV2VGFiYmFibGUuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pLCBzaG91bGRSZW5kZXJHdWFyZHMgJiYgcG9ydGFsTm9kZSAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgIFwiYXJpYS1vd25zXCI6IHBvcnRhbE5vZGUuaWQsXG4gICAgc3R5bGU6IEhJRERFTl9TVFlMRVNcbiAgfSksIHBvcnRhbE5vZGUgJiYgLyojX19QVVJFX18qL1JlYWN0RE9NLmNyZWF0ZVBvcnRhbChjaGlsZHJlbiwgcG9ydGFsTm9kZSksIHNob3VsZFJlbmRlckd1YXJkcyAmJiBwb3J0YWxOb2RlICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEZvY3VzR3VhcmQsIHtcbiAgICBcImRhdGEtdHlwZVwiOiBcIm91dHNpZGVcIixcbiAgICByZWY6IGFmdGVyT3V0c2lkZVJlZixcbiAgICBvbkZvY3VzOiBldmVudCA9PiB7XG4gICAgICBpZiAoaXNPdXRzaWRlRXZlbnQoZXZlbnQsIHBvcnRhbE5vZGUpKSB7XG4gICAgICAgIHZhciBfYWZ0ZXJJbnNpZGVSZWYkY3VycmU7XG4gICAgICAgIChfYWZ0ZXJJbnNpZGVSZWYkY3VycmUgPSBhZnRlckluc2lkZVJlZi5jdXJyZW50KSA9PSBudWxsIHx8IF9hZnRlckluc2lkZVJlZiRjdXJyZS5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbmV4dFRhYmJhYmxlID0gZ2V0TmV4dFRhYmJhYmxlKCkgfHwgKGZvY3VzTWFuYWdlclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBmb2N1c01hbmFnZXJTdGF0ZS5yZWZzLmRvbVJlZmVyZW5jZS5jdXJyZW50KTtcbiAgICAgICAgbmV4dFRhYmJhYmxlID09IG51bGwgfHwgbmV4dFRhYmJhYmxlLmZvY3VzKCk7XG4gICAgICAgIChmb2N1c01hbmFnZXJTdGF0ZSA9PSBudWxsID8gdm9pZCAwIDogZm9jdXNNYW5hZ2VyU3RhdGUuY2xvc2VPbkZvY3VzT3V0KSAmJiAoZm9jdXNNYW5hZ2VyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IGZvY3VzTWFuYWdlclN0YXRlLm9uT3BlbkNoYW5nZShmYWxzZSwgZXZlbnQubmF0aXZlRXZlbnQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pKTtcbn1cbmNvbnN0IHVzZVBvcnRhbENvbnRleHQgPSAoKSA9PiBSZWFjdC51c2VDb250ZXh0KFBvcnRhbENvbnRleHQpO1xuXG5jb25zdCBMSVNUX0xJTUlUID0gMjA7XG5sZXQgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50cyA9IFtdO1xuZnVuY3Rpb24gYWRkUHJldmlvdXNseUZvY3VzZWRFbGVtZW50KGVsZW1lbnQpIHtcbiAgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50cyA9IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudHMuZmlsdGVyKGVsID0+IGVsLmlzQ29ubmVjdGVkKTtcbiAgbGV0IHRhYmJhYmxlRWwgPSBlbGVtZW50O1xuICBpZiAoIXRhYmJhYmxlRWwgfHwgZ2V0Tm9kZU5hbWUodGFiYmFibGVFbCkgPT09ICdib2R5JykgcmV0dXJuO1xuICBpZiAoIWlzVGFiYmFibGUodGFiYmFibGVFbCwgZ2V0VGFiYmFibGVPcHRpb25zKCkpKSB7XG4gICAgY29uc3QgdGFiYmFibGVDaGlsZCA9IHRhYmJhYmxlKHRhYmJhYmxlRWwsIGdldFRhYmJhYmxlT3B0aW9ucygpKVswXTtcbiAgICBpZiAodGFiYmFibGVDaGlsZCkge1xuICAgICAgdGFiYmFibGVFbCA9IHRhYmJhYmxlQ2hpbGQ7XG4gICAgfVxuICB9XG4gIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudHMucHVzaCh0YWJiYWJsZUVsKTtcbiAgaWYgKHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudHMubGVuZ3RoID4gTElTVF9MSU1JVCkge1xuICAgIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudHMgPSBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnRzLnNsaWNlKC1MSVNUX0xJTUlUKTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0UHJldmlvdXNseUZvY3VzZWRFbGVtZW50KCkge1xuICByZXR1cm4gcHJldmlvdXNseUZvY3VzZWRFbGVtZW50cy5zbGljZSgpLnJldmVyc2UoKS5maW5kKGVsID0+IGVsLmlzQ29ubmVjdGVkKTtcbn1cbmNvbnN0IFZpc3VhbGx5SGlkZGVuRGlzbWlzcyA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIFZpc3VhbGx5SGlkZGVuRGlzbWlzcyhwcm9wcywgcmVmKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgIHJlZjogcmVmLFxuICAgIHRhYkluZGV4OiAtMSxcbiAgICBzdHlsZTogSElEREVOX1NUWUxFU1xuICB9KSk7XG59KTtcbi8qKlxuICogUHJvdmlkZXMgZm9jdXMgbWFuYWdlbWVudCBmb3IgdGhlIGZsb2F0aW5nIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvRmxvYXRpbmdGb2N1c01hbmFnZXJcbiAqL1xuZnVuY3Rpb24gRmxvYXRpbmdGb2N1c01hbmFnZXIocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNvbnRleHQsXG4gICAgY2hpbGRyZW4sXG4gICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICBvcmRlciA9IFsnY29udGVudCddLFxuICAgIGd1YXJkczogX2d1YXJkcyA9IHRydWUsXG4gICAgaW5pdGlhbEZvY3VzID0gMCxcbiAgICByZXR1cm5Gb2N1cyA9IHRydWUsXG4gICAgcmVzdG9yZUZvY3VzID0gZmFsc2UsXG4gICAgbW9kYWwgPSB0cnVlLFxuICAgIHZpc3VhbGx5SGlkZGVuRGlzbWlzcyA9IGZhbHNlLFxuICAgIGNsb3NlT25Gb2N1c091dCA9IHRydWVcbiAgfSA9IHByb3BzO1xuICBjb25zdCB7XG4gICAgb3BlbixcbiAgICByZWZzLFxuICAgIG5vZGVJZCxcbiAgICBvbk9wZW5DaGFuZ2UsXG4gICAgZXZlbnRzLFxuICAgIGRhdGFSZWYsXG4gICAgZmxvYXRpbmdJZCxcbiAgICBlbGVtZW50czoge1xuICAgICAgZG9tUmVmZXJlbmNlLFxuICAgICAgZmxvYXRpbmdcbiAgICB9XG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCBpZ25vcmVJbml0aWFsRm9jdXMgPSB0eXBlb2YgaW5pdGlhbEZvY3VzID09PSAnbnVtYmVyJyAmJiBpbml0aWFsRm9jdXMgPCAwO1xuICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIGEgY29tYm9ib3ggYW5kIGlzIHR5cGVhYmxlIChlLmcuIGlucHV0L3RleHRhcmVhKSxcbiAgLy8gdGhlcmUgYXJlIGRpZmZlcmVudCBmb2N1cyBzZW1hbnRpY3MuIFRoZSBndWFyZHMgc2hvdWxkIG5vdCBiZSByZW5kZXJlZCwgYnV0XG4gIC8vIGFyaWEtaGlkZGVuIHNob3VsZCBiZSBhcHBsaWVkIHRvIGFsbCBub2RlcyBzdGlsbC4gRnVydGhlciwgdGhlIHZpc3VhbGx5XG4gIC8vIGhpZGRlbiBkaXNtaXNzIGJ1dHRvbiBzaG91bGQgb25seSBhcHBlYXIgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCwgbm90IHRoZVxuICAvLyBzdGFydC5cbiAgY29uc3QgaXNVbnRyYXBwZWRUeXBlYWJsZUNvbWJvYm94ID0gaXNUeXBlYWJsZUNvbWJvYm94KGRvbVJlZmVyZW5jZSkgJiYgaWdub3JlSW5pdGlhbEZvY3VzO1xuXG4gIC8vIEZvcmNlIHRoZSBndWFyZHMgdG8gYmUgcmVuZGVyZWQgaWYgdGhlIGBpbmVydGAgYXR0cmlidXRlIGlzIG5vdCBzdXBwb3J0ZWQuXG4gIGNvbnN0IGd1YXJkcyA9IHN1cHBvcnRzSW5lcnQoKSA/IF9ndWFyZHMgOiB0cnVlO1xuICBjb25zdCBvcmRlclJlZiA9IHVzZUxhdGVzdFJlZihvcmRlcik7XG4gIGNvbnN0IGluaXRpYWxGb2N1c1JlZiA9IHVzZUxhdGVzdFJlZihpbml0aWFsRm9jdXMpO1xuICBjb25zdCByZXR1cm5Gb2N1c1JlZiA9IHVzZUxhdGVzdFJlZihyZXR1cm5Gb2N1cyk7XG4gIGNvbnN0IHRyZWUgPSB1c2VGbG9hdGluZ1RyZWUoKTtcbiAgY29uc3QgcG9ydGFsQ29udGV4dCA9IHVzZVBvcnRhbENvbnRleHQoKTtcbiAgY29uc3Qgc3RhcnREaXNtaXNzQnV0dG9uUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBlbmREaXNtaXNzQnV0dG9uUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBwcmV2ZW50UmV0dXJuRm9jdXNSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBjb25zdCBpc1BvaW50ZXJEb3duUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgdGFiYmFibGVJbmRleFJlZiA9IFJlYWN0LnVzZVJlZigtMSk7XG4gIGNvbnN0IGlzSW5zaWRlUG9ydGFsID0gcG9ydGFsQ29udGV4dCAhPSBudWxsO1xuICBjb25zdCBmaXJzdEVsZW1lbnRDaGlsZCA9IGZsb2F0aW5nID09IG51bGwgPyB2b2lkIDAgOiBmbG9hdGluZy5maXJzdEVsZW1lbnRDaGlsZDtcbiAgLy8gSWYgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXMgYWN0aW5nIGFzIGEgcG9zaXRpb25pbmcgd3JhcHBlciByYXRoZXIgdGhhbiB0aGVcbiAgLy8gZWxlbWVudCB0aGF0IHJlY2VpdmVzIGFyaWEgcHJvcHMsIHVzZSBpdCBhcyB0aGUgZm9jdXMgcm9vdCBpbnN0ZWFkLlxuICBjb25zdCBmbG9hdGluZ0ZvY3VzTm9kZSA9IChmaXJzdEVsZW1lbnRDaGlsZCA9PSBudWxsID8gdm9pZCAwIDogZmlyc3RFbGVtZW50Q2hpbGQuaWQpID09PSBmbG9hdGluZ0lkID8gZmlyc3RFbGVtZW50Q2hpbGQgOiBmbG9hdGluZztcbiAgY29uc3QgZ2V0VGFiYmFibGVDb250ZW50ID0gdXNlRWZmZWN0RXZlbnQoZnVuY3Rpb24gKGNvbnRhaW5lcikge1xuICAgIGlmIChjb250YWluZXIgPT09IHZvaWQgMCkge1xuICAgICAgY29udGFpbmVyID0gZmxvYXRpbmdGb2N1c05vZGU7XG4gICAgfVxuICAgIHJldHVybiBjb250YWluZXIgPyB0YWJiYWJsZShjb250YWluZXIsIGdldFRhYmJhYmxlT3B0aW9ucygpKSA6IFtdO1xuICB9KTtcbiAgY29uc3QgZ2V0VGFiYmFibGVFbGVtZW50cyA9IHVzZUVmZmVjdEV2ZW50KGNvbnRhaW5lciA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IGdldFRhYmJhYmxlQ29udGVudChjb250YWluZXIpO1xuICAgIHJldHVybiBvcmRlclJlZi5jdXJyZW50Lm1hcCh0eXBlID0+IHtcbiAgICAgIGlmIChkb21SZWZlcmVuY2UgJiYgdHlwZSA9PT0gJ3JlZmVyZW5jZScpIHtcbiAgICAgICAgcmV0dXJuIGRvbVJlZmVyZW5jZTtcbiAgICAgIH1cbiAgICAgIGlmIChmbG9hdGluZ0ZvY3VzTm9kZSAmJiB0eXBlID09PSAnZmxvYXRpbmcnKSB7XG4gICAgICAgIHJldHVybiBmbG9hdGluZ0ZvY3VzTm9kZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmZpbHRlcihCb29sZWFuKS5mbGF0KCk7XG4gIH0pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuO1xuICAgIGlmICghbW9kYWwpIHJldHVybjtcbiAgICBmdW5jdGlvbiBvbktleURvd24oZXZlbnQpIHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdUYWInKSB7XG4gICAgICAgIC8vIFRoZSBmb2N1cyBndWFyZHMgaGF2ZSBub3RoaW5nIHRvIGZvY3VzLCBzbyB3ZSBuZWVkIHRvIHN0b3AgdGhlIGV2ZW50LlxuICAgICAgICBpZiAoY29udGFpbnMoZmxvYXRpbmdGb2N1c05vZGUsIGFjdGl2ZUVsZW1lbnQoZ2V0RG9jdW1lbnQoZmxvYXRpbmdGb2N1c05vZGUpKSkgJiYgZ2V0VGFiYmFibGVDb250ZW50KCkubGVuZ3RoID09PSAwICYmICFpc1VudHJhcHBlZFR5cGVhYmxlQ29tYm9ib3gpIHtcbiAgICAgICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVscyA9IGdldFRhYmJhYmxlRWxlbWVudHMoKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGV2ZW50KTtcbiAgICAgICAgaWYgKG9yZGVyUmVmLmN1cnJlbnRbMF0gPT09ICdyZWZlcmVuY2UnICYmIHRhcmdldCA9PT0gZG9tUmVmZXJlbmNlKSB7XG4gICAgICAgICAgc3RvcEV2ZW50KGV2ZW50KTtcbiAgICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIGVucXVldWVGb2N1cyhlbHNbZWxzLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW5xdWV1ZUZvY3VzKGVsc1sxXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvcmRlclJlZi5jdXJyZW50WzFdID09PSAnZmxvYXRpbmcnICYmIHRhcmdldCA9PT0gZmxvYXRpbmdGb2N1c05vZGUgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgICAgIGVucXVldWVGb2N1cyhlbHNbMF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGRvYyA9IGdldERvY3VtZW50KGZsb2F0aW5nRm9jdXNOb2RlKTtcbiAgICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93bik7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25LZXlEb3duKTtcbiAgICB9O1xuICB9LCBbZGlzYWJsZWQsIGRvbVJlZmVyZW5jZSwgZmxvYXRpbmdGb2N1c05vZGUsIG1vZGFsLCBvcmRlclJlZiwgaXNVbnRyYXBwZWRUeXBlYWJsZUNvbWJvYm94LCBnZXRUYWJiYWJsZUNvbnRlbnQsIGdldFRhYmJhYmxlRWxlbWVudHNdKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVybjtcbiAgICBpZiAoIWZsb2F0aW5nKSByZXR1cm47XG4gICAgZnVuY3Rpb24gaGFuZGxlRm9jdXNJbihldmVudCkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGV2ZW50KTtcbiAgICAgIGNvbnN0IHRhYmJhYmxlQ29udGVudCA9IGdldFRhYmJhYmxlQ29udGVudCgpO1xuICAgICAgY29uc3QgdGFiYmFibGVJbmRleCA9IHRhYmJhYmxlQ29udGVudC5pbmRleE9mKHRhcmdldCk7XG4gICAgICBpZiAodGFiYmFibGVJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGFiYmFibGVJbmRleFJlZi5jdXJyZW50ID0gdGFiYmFibGVJbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgZmxvYXRpbmcuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIGhhbmRsZUZvY3VzSW4pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBmbG9hdGluZy5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c2luJywgaGFuZGxlRm9jdXNJbik7XG4gICAgfTtcbiAgfSwgW2Rpc2FibGVkLCBmbG9hdGluZywgZ2V0VGFiYmFibGVDb250ZW50XSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm47XG4gICAgaWYgKCFjbG9zZU9uRm9jdXNPdXQpIHJldHVybjtcblxuICAgIC8vIEluIFNhZmFyaSwgYnV0dG9ucyBsb3NlIGZvY3VzIHdoZW4gcHJlc3NpbmcgdGhlbS5cbiAgICBmdW5jdGlvbiBoYW5kbGVQb2ludGVyRG93bigpIHtcbiAgICAgIGlzUG9pbnRlckRvd25SZWYuY3VycmVudCA9IHRydWU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaXNQb2ludGVyRG93blJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlRm9jdXNPdXRzaWRlKGV2ZW50KSB7XG4gICAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0gZXZlbnQucmVsYXRlZFRhcmdldDtcbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgY29uc3QgbW92ZWRUb1VucmVsYXRlZE5vZGUgPSAhKGNvbnRhaW5zKGRvbVJlZmVyZW5jZSwgcmVsYXRlZFRhcmdldCkgfHwgY29udGFpbnMoZmxvYXRpbmcsIHJlbGF0ZWRUYXJnZXQpIHx8IGNvbnRhaW5zKHJlbGF0ZWRUYXJnZXQsIGZsb2F0aW5nKSB8fCBjb250YWlucyhwb3J0YWxDb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBwb3J0YWxDb250ZXh0LnBvcnRhbE5vZGUsIHJlbGF0ZWRUYXJnZXQpIHx8IHJlbGF0ZWRUYXJnZXQgIT0gbnVsbCAmJiByZWxhdGVkVGFyZ2V0Lmhhc0F0dHJpYnV0ZShjcmVhdGVBdHRyaWJ1dGUoJ2ZvY3VzLWd1YXJkJykpIHx8IHRyZWUgJiYgKGdldENoaWxkcmVuKHRyZWUubm9kZXNSZWYuY3VycmVudCwgbm9kZUlkKS5maW5kKG5vZGUgPT4ge1xuICAgICAgICAgIHZhciBfbm9kZSRjb250ZXh0LCBfbm9kZSRjb250ZXh0MjtcbiAgICAgICAgICByZXR1cm4gY29udGFpbnMoKF9ub2RlJGNvbnRleHQgPSBub2RlLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRjb250ZXh0LmVsZW1lbnRzLmZsb2F0aW5nLCByZWxhdGVkVGFyZ2V0KSB8fCBjb250YWlucygoX25vZGUkY29udGV4dDIgPSBub2RlLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRjb250ZXh0Mi5lbGVtZW50cy5kb21SZWZlcmVuY2UsIHJlbGF0ZWRUYXJnZXQpO1xuICAgICAgICB9KSB8fCBnZXRBbmNlc3RvcnModHJlZS5ub2Rlc1JlZi5jdXJyZW50LCBub2RlSWQpLmZpbmQobm9kZSA9PiB7XG4gICAgICAgICAgdmFyIF9ub2RlJGNvbnRleHQzLCBfbm9kZSRjb250ZXh0NDtcbiAgICAgICAgICByZXR1cm4gKChfbm9kZSRjb250ZXh0MyA9IG5vZGUuY29udGV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9ub2RlJGNvbnRleHQzLmVsZW1lbnRzLmZsb2F0aW5nKSA9PT0gcmVsYXRlZFRhcmdldCB8fCAoKF9ub2RlJGNvbnRleHQ0ID0gbm9kZS5jb250ZXh0KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkY29udGV4dDQuZWxlbWVudHMuZG9tUmVmZXJlbmNlKSA9PT0gcmVsYXRlZFRhcmdldDtcbiAgICAgICAgfSkpKTtcblxuICAgICAgICAvLyBSZXN0b3JlIGZvY3VzIHRvIHRoZSBwcmV2aW91cyB0YWJiYWJsZSBlbGVtZW50IGluZGV4IHRvIHByZXZlbnRcbiAgICAgICAgLy8gZm9jdXMgZnJvbSBiZWluZyBsb3N0IG91dHNpZGUgdGhlIGZsb2F0aW5nIHRyZWUuXG4gICAgICAgIGlmIChyZXN0b3JlRm9jdXMgJiYgbW92ZWRUb1VucmVsYXRlZE5vZGUgJiYgYWN0aXZlRWxlbWVudChnZXREb2N1bWVudChmbG9hdGluZ0ZvY3VzTm9kZSkpID09PSBnZXREb2N1bWVudChmbG9hdGluZ0ZvY3VzTm9kZSkuYm9keSkge1xuICAgICAgICAgIC8vIExldCBgRmxvYXRpbmdQb3J0YWxgIGVmZmVjdCBrbm93cyB0aGF0IGZvY3VzIGlzIHN0aWxsIGluc2lkZSB0aGVcbiAgICAgICAgICAvLyBmbG9hdGluZyB0cmVlLlxuICAgICAgICAgIGlmIChpc0hUTUxFbGVtZW50KGZsb2F0aW5nRm9jdXNOb2RlKSkge1xuICAgICAgICAgICAgZmxvYXRpbmdGb2N1c05vZGUgPT0gbnVsbCB8fCBmbG9hdGluZ0ZvY3VzTm9kZS5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBwcmV2VGFiYmFibGVJbmRleCA9IHRhYmJhYmxlSW5kZXhSZWYuY3VycmVudDtcbiAgICAgICAgICBjb25zdCB0YWJiYWJsZUNvbnRlbnQgPSBnZXRUYWJiYWJsZUNvbnRlbnQoKTtcbiAgICAgICAgICBjb25zdCBub2RlVG9Gb2N1cyA9IHRhYmJhYmxlQ29udGVudFtwcmV2VGFiYmFibGVJbmRleF0gfHwgdGFiYmFibGVDb250ZW50W3RhYmJhYmxlQ29udGVudC5sZW5ndGggLSAxXSB8fCBmbG9hdGluZ0ZvY3VzTm9kZTtcbiAgICAgICAgICBpZiAoaXNIVE1MRWxlbWVudChub2RlVG9Gb2N1cykpIHtcbiAgICAgICAgICAgIG5vZGVUb0ZvY3VzLmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRm9jdXMgZGlkIG5vdCBtb3ZlIGluc2lkZSB0aGUgZmxvYXRpbmcgdHJlZSwgYW5kIHRoZXJlIGFyZSBubyB0YWJiYWJsZVxuICAgICAgICAvLyBwb3J0YWwgZ3VhcmRzIHRvIGhhbmRsZSBjbG9zaW5nLlxuICAgICAgICBpZiAoKGlzVW50cmFwcGVkVHlwZWFibGVDb21ib2JveCA/IHRydWUgOiAhbW9kYWwpICYmIHJlbGF0ZWRUYXJnZXQgJiYgbW92ZWRUb1VucmVsYXRlZE5vZGUgJiYgIWlzUG9pbnRlckRvd25SZWYuY3VycmVudCAmJlxuICAgICAgICAvLyBGaXggUmVhY3QgMTggU3RyaWN0IE1vZGUgcmV0dXJuRm9jdXMgZHVlIHRvIGRvdWJsZSByZW5kZXJpbmcuXG4gICAgICAgIHJlbGF0ZWRUYXJnZXQgIT09IGdldFByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCgpKSB7XG4gICAgICAgICAgcHJldmVudFJldHVybkZvY3VzUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgIG9uT3BlbkNoYW5nZShmYWxzZSwgZXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGZsb2F0aW5nICYmIGlzSFRNTEVsZW1lbnQoZG9tUmVmZXJlbmNlKSkge1xuICAgICAgZG9tUmVmZXJlbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgaGFuZGxlRm9jdXNPdXRzaWRlKTtcbiAgICAgIGRvbVJlZmVyZW5jZS5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIGhhbmRsZVBvaW50ZXJEb3duKTtcbiAgICAgIGZsb2F0aW5nLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgaGFuZGxlRm9jdXNPdXRzaWRlKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGRvbVJlZmVyZW5jZS5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIGhhbmRsZUZvY3VzT3V0c2lkZSk7XG4gICAgICAgIGRvbVJlZmVyZW5jZS5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIGhhbmRsZVBvaW50ZXJEb3duKTtcbiAgICAgICAgZmxvYXRpbmcucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXNvdXQnLCBoYW5kbGVGb2N1c091dHNpZGUpO1xuICAgICAgfTtcbiAgICB9XG4gIH0sIFtkaXNhYmxlZCwgZG9tUmVmZXJlbmNlLCBmbG9hdGluZywgZmxvYXRpbmdGb2N1c05vZGUsIG1vZGFsLCBub2RlSWQsIHRyZWUsIHBvcnRhbENvbnRleHQsIG9uT3BlbkNoYW5nZSwgY2xvc2VPbkZvY3VzT3V0LCByZXN0b3JlRm9jdXMsIGdldFRhYmJhYmxlQ29udGVudCwgaXNVbnRyYXBwZWRUeXBlYWJsZUNvbWJvYm94XSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdmFyIF9wb3J0YWxDb250ZXh0JHBvcnRhbDtcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVybjtcblxuICAgIC8vIERvbid0IGhpZGUgcG9ydGFscyBuZXN0ZWQgd2l0aGluIHRoZSBwYXJlbnQgcG9ydGFsLlxuICAgIGNvbnN0IHBvcnRhbE5vZGVzID0gQXJyYXkuZnJvbSgocG9ydGFsQ29udGV4dCA9PSBudWxsIHx8IChfcG9ydGFsQ29udGV4dCRwb3J0YWwgPSBwb3J0YWxDb250ZXh0LnBvcnRhbE5vZGUpID09IG51bGwgPyB2b2lkIDAgOiBfcG9ydGFsQ29udGV4dCRwb3J0YWwucXVlcnlTZWxlY3RvckFsbChcIltcIiArIGNyZWF0ZUF0dHJpYnV0ZSgncG9ydGFsJykgKyBcIl1cIikpIHx8IFtdKTtcbiAgICBpZiAoZmxvYXRpbmcpIHtcbiAgICAgIGNvbnN0IGluc2lkZUVsZW1lbnRzID0gW2Zsb2F0aW5nLCAuLi5wb3J0YWxOb2Rlcywgc3RhcnREaXNtaXNzQnV0dG9uUmVmLmN1cnJlbnQsIGVuZERpc21pc3NCdXR0b25SZWYuY3VycmVudCwgb3JkZXJSZWYuY3VycmVudC5pbmNsdWRlcygncmVmZXJlbmNlJykgfHwgaXNVbnRyYXBwZWRUeXBlYWJsZUNvbWJvYm94ID8gZG9tUmVmZXJlbmNlIDogbnVsbF0uZmlsdGVyKHggPT4geCAhPSBudWxsKTtcbiAgICAgIGNvbnN0IGNsZWFudXAgPSBtb2RhbCB8fCBpc1VudHJhcHBlZFR5cGVhYmxlQ29tYm9ib3ggPyBtYXJrT3RoZXJzKGluc2lkZUVsZW1lbnRzLCBndWFyZHMsICFndWFyZHMpIDogbWFya090aGVycyhpbnNpZGVFbGVtZW50cyk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjbGVhbnVwKCk7XG4gICAgICB9O1xuICAgIH1cbiAgfSwgW2Rpc2FibGVkLCBkb21SZWZlcmVuY2UsIGZsb2F0aW5nLCBtb2RhbCwgb3JkZXJSZWYsIHBvcnRhbENvbnRleHQsIGlzVW50cmFwcGVkVHlwZWFibGVDb21ib2JveCwgZ3VhcmRzXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoZGlzYWJsZWQgfHwgIWlzSFRNTEVsZW1lbnQoZmxvYXRpbmdGb2N1c05vZGUpKSByZXR1cm47XG4gICAgY29uc3QgZG9jID0gZ2V0RG9jdW1lbnQoZmxvYXRpbmdGb2N1c05vZGUpO1xuICAgIGNvbnN0IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA9IGFjdGl2ZUVsZW1lbnQoZG9jKTtcblxuICAgIC8vIFdhaXQgZm9yIGFueSBsYXlvdXQgZWZmZWN0IHN0YXRlIHNldHRlcnMgdG8gZXhlY3V0ZSB0byBzZXQgYHRhYkluZGV4YC5cbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICBjb25zdCBmb2N1c2FibGVFbGVtZW50cyA9IGdldFRhYmJhYmxlRWxlbWVudHMoZmxvYXRpbmdGb2N1c05vZGUpO1xuICAgICAgY29uc3QgaW5pdGlhbEZvY3VzVmFsdWUgPSBpbml0aWFsRm9jdXNSZWYuY3VycmVudDtcbiAgICAgIGNvbnN0IGVsVG9Gb2N1cyA9ICh0eXBlb2YgaW5pdGlhbEZvY3VzVmFsdWUgPT09ICdudW1iZXInID8gZm9jdXNhYmxlRWxlbWVudHNbaW5pdGlhbEZvY3VzVmFsdWVdIDogaW5pdGlhbEZvY3VzVmFsdWUuY3VycmVudCkgfHwgZmxvYXRpbmdGb2N1c05vZGU7XG4gICAgICBjb25zdCBmb2N1c0FscmVhZHlJbnNpZGVGbG9hdGluZ0VsID0gY29udGFpbnMoZmxvYXRpbmdGb2N1c05vZGUsIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCk7XG4gICAgICBpZiAoIWlnbm9yZUluaXRpYWxGb2N1cyAmJiAhZm9jdXNBbHJlYWR5SW5zaWRlRmxvYXRpbmdFbCAmJiBvcGVuKSB7XG4gICAgICAgIGVucXVldWVGb2N1cyhlbFRvRm9jdXMsIHtcbiAgICAgICAgICBwcmV2ZW50U2Nyb2xsOiBlbFRvRm9jdXMgPT09IGZsb2F0aW5nRm9jdXNOb2RlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbZGlzYWJsZWQsIG9wZW4sIGZsb2F0aW5nRm9jdXNOb2RlLCBpZ25vcmVJbml0aWFsRm9jdXMsIGdldFRhYmJhYmxlRWxlbWVudHMsIGluaXRpYWxGb2N1c1JlZl0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKGRpc2FibGVkIHx8ICFmbG9hdGluZ0ZvY3VzTm9kZSkgcmV0dXJuO1xuICAgIGxldCBwcmV2ZW50UmV0dXJuRm9jdXNTY3JvbGwgPSBmYWxzZTtcbiAgICBjb25zdCBkb2MgPSBnZXREb2N1bWVudChmbG9hdGluZ0ZvY3VzTm9kZSk7XG4gICAgY29uc3QgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50ID0gYWN0aXZlRWxlbWVudChkb2MpO1xuICAgIGNvbnN0IGNvbnRleHREYXRhID0gZGF0YVJlZi5jdXJyZW50O1xuICAgIGxldCBvcGVuRXZlbnQgPSBjb250ZXh0RGF0YS5vcGVuRXZlbnQ7XG4gICAgY29uc3QgZG9tUmVmZXJlbmNlID0gcmVmcy5kb21SZWZlcmVuY2UuY3VycmVudDtcbiAgICBhZGRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQocHJldmlvdXNseUZvY3VzZWRFbGVtZW50KTtcblxuICAgIC8vIERpc21pc3NpbmcgdmlhIG91dHNpZGUgcHJlc3Mgc2hvdWxkIGFsd2F5cyBpZ25vcmUgYHJldHVybkZvY3VzYCB0b1xuICAgIC8vIHByZXZlbnQgdW53YW50ZWQgc2Nyb2xsaW5nLlxuICAgIGZ1bmN0aW9uIG9uT3BlbkNoYW5nZShfcmVmKSB7XG4gICAgICBsZXQge1xuICAgICAgICBvcGVuLFxuICAgICAgICByZWFzb24sXG4gICAgICAgIGV2ZW50LFxuICAgICAgICBuZXN0ZWRcbiAgICAgIH0gPSBfcmVmO1xuICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgb3BlbkV2ZW50ID0gZXZlbnQ7XG4gICAgICB9XG4gICAgICBpZiAocmVhc29uID09PSAnZXNjYXBlLWtleScgJiYgcmVmcy5kb21SZWZlcmVuY2UuY3VycmVudCkge1xuICAgICAgICBhZGRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQocmVmcy5kb21SZWZlcmVuY2UuY3VycmVudCk7XG4gICAgICB9XG4gICAgICBpZiAocmVhc29uID09PSAnaG92ZXInICYmIGV2ZW50LnR5cGUgPT09ICdtb3VzZWxlYXZlJykge1xuICAgICAgICBwcmV2ZW50UmV0dXJuRm9jdXNSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAocmVhc29uICE9PSAnb3V0c2lkZS1wcmVzcycpIHJldHVybjtcbiAgICAgIGlmIChuZXN0ZWQpIHtcbiAgICAgICAgcHJldmVudFJldHVybkZvY3VzUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgcHJldmVudFJldHVybkZvY3VzU2Nyb2xsID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByZXZlbnRSZXR1cm5Gb2N1c1JlZi5jdXJyZW50ID0gIShpc1ZpcnR1YWxDbGljayhldmVudCkgfHwgaXNWaXJ0dWFsUG9pbnRlckV2ZW50KGV2ZW50KSk7XG4gICAgICB9XG4gICAgfVxuICAgIGV2ZW50cy5vbignb3BlbmNoYW5nZScsIG9uT3BlbkNoYW5nZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGV2ZW50cy5vZmYoJ29wZW5jaGFuZ2UnLCBvbk9wZW5DaGFuZ2UpO1xuICAgICAgY29uc3QgYWN0aXZlRWwgPSBhY3RpdmVFbGVtZW50KGRvYyk7XG4gICAgICBjb25zdCBpc0ZvY3VzSW5zaWRlRmxvYXRpbmdUcmVlID0gY29udGFpbnMoZmxvYXRpbmcsIGFjdGl2ZUVsKSB8fCB0cmVlICYmIGdldENoaWxkcmVuKHRyZWUubm9kZXNSZWYuY3VycmVudCwgbm9kZUlkKS5zb21lKG5vZGUgPT4ge1xuICAgICAgICB2YXIgX25vZGUkY29udGV4dDU7XG4gICAgICAgIHJldHVybiBjb250YWlucygoX25vZGUkY29udGV4dDUgPSBub2RlLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRjb250ZXh0NS5lbGVtZW50cy5mbG9hdGluZywgYWN0aXZlRWwpO1xuICAgICAgfSk7XG4gICAgICBjb25zdCBzaG91bGRGb2N1c1JlZmVyZW5jZSA9IGlzRm9jdXNJbnNpZGVGbG9hdGluZ1RyZWUgfHwgb3BlbkV2ZW50ICYmIFsnY2xpY2snLCAnbW91c2Vkb3duJ10uaW5jbHVkZXMob3BlbkV2ZW50LnR5cGUpO1xuICAgICAgaWYgKHNob3VsZEZvY3VzUmVmZXJlbmNlICYmIHJlZnMuZG9tUmVmZXJlbmNlLmN1cnJlbnQpIHtcbiAgICAgICAgYWRkUHJldmlvdXNseUZvY3VzZWRFbGVtZW50KHJlZnMuZG9tUmVmZXJlbmNlLmN1cnJlbnQpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmV0dXJuQ29udGV4dEVsZW1lbnQgPSBkb21SZWZlcmVuY2UgfHwgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50O1xuICAgICAgY29uc3QgdGFiYmFibGVFbGVtZW50cyA9IHRhYmJhYmxlKGdldERvY3VtZW50KHJldHVybkNvbnRleHRFbGVtZW50KS5ib2R5LCBnZXRUYWJiYWJsZU9wdGlvbnMoKSk7XG5cbiAgICAgIC8vIFdhaXQgZm9yIHRoZSByZXR1cm4gZWxlbWVudCB0byBnZXQgcG90ZW50aWFsbHkgZGlzY29ubmVjdGVkIGJlZm9yZVxuICAgICAgLy8gY2hlY2tpbmcuXG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIGxldCByZXR1cm5FbGVtZW50ID0gZ2V0UHJldmlvdXNseUZvY3VzZWRFbGVtZW50KCk7XG4gICAgICAgIGlmICghcmV0dXJuRWxlbWVudCAmJiBpc0hUTUxFbGVtZW50KHJldHVybkNvbnRleHRFbGVtZW50KSAmJiBmbG9hdGluZykge1xuICAgICAgICAgIHJldHVybkVsZW1lbnQgPSBnZXRDbG9zZXN0VGFiYmFibGVFbGVtZW50KHRhYmJhYmxlRWxlbWVudHMsIHJldHVybkNvbnRleHRFbGVtZW50LCBmbG9hdGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgICAgIHJldHVybkZvY3VzUmVmLmN1cnJlbnQgJiYgIXByZXZlbnRSZXR1cm5Gb2N1c1JlZi5jdXJyZW50ICYmIGlzSFRNTEVsZW1lbnQocmV0dXJuRWxlbWVudCkgJiYgKFxuICAgICAgICAvLyBJZiB0aGUgZm9jdXMgbW92ZWQgc29tZXdoZXJlIGVsc2UgYWZ0ZXIgbW91bnQsIGF2b2lkIHJldHVybmluZyBmb2N1c1xuICAgICAgICAvLyBzaW5jZSBpdCBsaWtlbHkgZW50ZXJlZCBhIGRpZmZlcmVudCBlbGVtZW50IHdoaWNoIHNob3VsZCBiZVxuICAgICAgICAvLyByZXNwZWN0ZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjYwN1xuICAgICAgICByZXR1cm5FbGVtZW50ICE9PSBhY3RpdmVFbCAmJiBhY3RpdmVFbCAhPT0gZG9jLmJvZHkgPyBpc0ZvY3VzSW5zaWRlRmxvYXRpbmdUcmVlIDogdHJ1ZSkpIHtcbiAgICAgICAgICByZXR1cm5FbGVtZW50LmZvY3VzKHtcbiAgICAgICAgICAgIHByZXZlbnRTY3JvbGw6IHByZXZlbnRSZXR1cm5Gb2N1c1Njcm9sbFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICB9LCBbZGlzYWJsZWQsIGZsb2F0aW5nLCBmbG9hdGluZ0ZvY3VzTm9kZSwgcmV0dXJuRm9jdXNSZWYsIGRhdGFSZWYsIHJlZnMsIGV2ZW50cywgdHJlZSwgbm9kZUlkXSk7XG5cbiAgLy8gU3luY2hyb25pemUgdGhlIGBjb250ZXh0YCAmIGBtb2RhbGAgdmFsdWUgdG8gdGhlIEZsb2F0aW5nUG9ydGFsIGNvbnRleHQuXG4gIC8vIEl0IHdpbGwgZGVjaWRlIHdoZXRoZXIgb3Igbm90IGl0IG5lZWRzIHRvIHJlbmRlciBpdHMgb3duIGd1YXJkcy5cbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuO1xuICAgIGlmICghcG9ydGFsQ29udGV4dCkgcmV0dXJuO1xuICAgIHBvcnRhbENvbnRleHQuc2V0Rm9jdXNNYW5hZ2VyU3RhdGUoe1xuICAgICAgbW9kYWwsXG4gICAgICBjbG9zZU9uRm9jdXNPdXQsXG4gICAgICBvcGVuLFxuICAgICAgb25PcGVuQ2hhbmdlLFxuICAgICAgcmVmc1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBwb3J0YWxDb250ZXh0LnNldEZvY3VzTWFuYWdlclN0YXRlKG51bGwpO1xuICAgIH07XG4gIH0sIFtkaXNhYmxlZCwgcG9ydGFsQ29udGV4dCwgbW9kYWwsIG9wZW4sIG9uT3BlbkNoYW5nZSwgcmVmcywgY2xvc2VPbkZvY3VzT3V0XSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVybjtcbiAgICBpZiAoIWZsb2F0aW5nRm9jdXNOb2RlKSByZXR1cm47XG4gICAgaWYgKHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyICE9PSAnZnVuY3Rpb24nKSByZXR1cm47XG4gICAgaWYgKGlnbm9yZUluaXRpYWxGb2N1cykgcmV0dXJuO1xuICAgIGNvbnN0IGhhbmRsZU11dGF0aW9uID0gKCkgPT4ge1xuICAgICAgY29uc3QgdGFiSW5kZXggPSBmbG9hdGluZ0ZvY3VzTm9kZS5nZXRBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk7XG4gICAgICBjb25zdCB0YWJiYWJsZUNvbnRlbnQgPSBnZXRUYWJiYWJsZUNvbnRlbnQoKTtcbiAgICAgIGNvbnN0IGFjdGl2ZUVsID0gYWN0aXZlRWxlbWVudChnZXREb2N1bWVudChmbG9hdGluZykpO1xuICAgICAgY29uc3QgdGFiYmFibGVJbmRleCA9IHRhYmJhYmxlQ29udGVudC5pbmRleE9mKGFjdGl2ZUVsKTtcbiAgICAgIGlmICh0YWJiYWJsZUluZGV4ICE9PSAtMSkge1xuICAgICAgICB0YWJiYWJsZUluZGV4UmVmLmN1cnJlbnQgPSB0YWJiYWJsZUluZGV4O1xuICAgICAgfVxuICAgICAgaWYgKG9yZGVyUmVmLmN1cnJlbnQuaW5jbHVkZXMoJ2Zsb2F0aW5nJykgfHwgYWN0aXZlRWwgIT09IHJlZnMuZG9tUmVmZXJlbmNlLmN1cnJlbnQgJiYgdGFiYmFibGVDb250ZW50Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAodGFiSW5kZXggIT09ICcwJykge1xuICAgICAgICAgIGZsb2F0aW5nRm9jdXNOb2RlLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRhYkluZGV4ICE9PSAnLTEnKSB7XG4gICAgICAgIGZsb2F0aW5nRm9jdXNOb2RlLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGhhbmRsZU11dGF0aW9uKCk7XG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihoYW5kbGVNdXRhdGlvbik7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShmbG9hdGluZ0ZvY3VzTm9kZSwge1xuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIH07XG4gIH0sIFtkaXNhYmxlZCwgZmxvYXRpbmcsIGZsb2F0aW5nRm9jdXNOb2RlLCByZWZzLCBvcmRlclJlZiwgZ2V0VGFiYmFibGVDb250ZW50LCBpZ25vcmVJbml0aWFsRm9jdXNdKTtcbiAgZnVuY3Rpb24gcmVuZGVyRGlzbWlzc0J1dHRvbihsb2NhdGlvbikge1xuICAgIGlmIChkaXNhYmxlZCB8fCAhdmlzdWFsbHlIaWRkZW5EaXNtaXNzIHx8ICFtb2RhbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChWaXN1YWxseUhpZGRlbkRpc21pc3MsIHtcbiAgICAgIHJlZjogbG9jYXRpb24gPT09ICdzdGFydCcgPyBzdGFydERpc21pc3NCdXR0b25SZWYgOiBlbmREaXNtaXNzQnV0dG9uUmVmLFxuICAgICAgb25DbGljazogZXZlbnQgPT4gb25PcGVuQ2hhbmdlKGZhbHNlLCBldmVudC5uYXRpdmVFdmVudClcbiAgICB9LCB0eXBlb2YgdmlzdWFsbHlIaWRkZW5EaXNtaXNzID09PSAnc3RyaW5nJyA/IHZpc3VhbGx5SGlkZGVuRGlzbWlzcyA6ICdEaXNtaXNzJyk7XG4gIH1cbiAgY29uc3Qgc2hvdWxkUmVuZGVyR3VhcmRzID0gIWRpc2FibGVkICYmIGd1YXJkcyAmJiAobW9kYWwgPyAhaXNVbnRyYXBwZWRUeXBlYWJsZUNvbWJvYm94IDogdHJ1ZSkgJiYgKGlzSW5zaWRlUG9ydGFsIHx8IG1vZGFsKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBzaG91bGRSZW5kZXJHdWFyZHMgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRm9jdXNHdWFyZCwge1xuICAgIFwiZGF0YS10eXBlXCI6IFwiaW5zaWRlXCIsXG4gICAgcmVmOiBwb3J0YWxDb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBwb3J0YWxDb250ZXh0LmJlZm9yZUluc2lkZVJlZixcbiAgICBvbkZvY3VzOiBldmVudCA9PiB7XG4gICAgICBpZiAobW9kYWwpIHtcbiAgICAgICAgY29uc3QgZWxzID0gZ2V0VGFiYmFibGVFbGVtZW50cygpO1xuICAgICAgICBlbnF1ZXVlRm9jdXMob3JkZXJbMF0gPT09ICdyZWZlcmVuY2UnID8gZWxzWzBdIDogZWxzW2Vscy5sZW5ndGggLSAxXSk7XG4gICAgICB9IGVsc2UgaWYgKHBvcnRhbENvbnRleHQgIT0gbnVsbCAmJiBwb3J0YWxDb250ZXh0LnByZXNlcnZlVGFiT3JkZXIgJiYgcG9ydGFsQ29udGV4dC5wb3J0YWxOb2RlKSB7XG4gICAgICAgIHByZXZlbnRSZXR1cm5Gb2N1c1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIGlmIChpc091dHNpZGVFdmVudChldmVudCwgcG9ydGFsQ29udGV4dC5wb3J0YWxOb2RlKSkge1xuICAgICAgICAgIGNvbnN0IG5leHRUYWJiYWJsZSA9IGdldE5leHRUYWJiYWJsZSgpIHx8IGRvbVJlZmVyZW5jZTtcbiAgICAgICAgICBuZXh0VGFiYmFibGUgPT0gbnVsbCB8fCBuZXh0VGFiYmFibGUuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgX3BvcnRhbENvbnRleHQkYmVmb3JlO1xuICAgICAgICAgIChfcG9ydGFsQ29udGV4dCRiZWZvcmUgPSBwb3J0YWxDb250ZXh0LmJlZm9yZU91dHNpZGVSZWYuY3VycmVudCkgPT0gbnVsbCB8fCBfcG9ydGFsQ29udGV4dCRiZWZvcmUuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSksICFpc1VudHJhcHBlZFR5cGVhYmxlQ29tYm9ib3ggJiYgcmVuZGVyRGlzbWlzc0J1dHRvbignc3RhcnQnKSwgY2hpbGRyZW4sIHJlbmRlckRpc21pc3NCdXR0b24oJ2VuZCcpLCBzaG91bGRSZW5kZXJHdWFyZHMgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRm9jdXNHdWFyZCwge1xuICAgIFwiZGF0YS10eXBlXCI6IFwiaW5zaWRlXCIsXG4gICAgcmVmOiBwb3J0YWxDb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBwb3J0YWxDb250ZXh0LmFmdGVySW5zaWRlUmVmLFxuICAgIG9uRm9jdXM6IGV2ZW50ID0+IHtcbiAgICAgIGlmIChtb2RhbCkge1xuICAgICAgICBlbnF1ZXVlRm9jdXMoZ2V0VGFiYmFibGVFbGVtZW50cygpWzBdKTtcbiAgICAgIH0gZWxzZSBpZiAocG9ydGFsQ29udGV4dCAhPSBudWxsICYmIHBvcnRhbENvbnRleHQucHJlc2VydmVUYWJPcmRlciAmJiBwb3J0YWxDb250ZXh0LnBvcnRhbE5vZGUpIHtcbiAgICAgICAgaWYgKGNsb3NlT25Gb2N1c091dCkge1xuICAgICAgICAgIHByZXZlbnRSZXR1cm5Gb2N1c1JlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNPdXRzaWRlRXZlbnQoZXZlbnQsIHBvcnRhbENvbnRleHQucG9ydGFsTm9kZSkpIHtcbiAgICAgICAgICBjb25zdCBwcmV2VGFiYmFibGUgPSBnZXRQcmV2aW91c1RhYmJhYmxlKCkgfHwgZG9tUmVmZXJlbmNlO1xuICAgICAgICAgIHByZXZUYWJiYWJsZSA9PSBudWxsIHx8IHByZXZUYWJiYWJsZS5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBfcG9ydGFsQ29udGV4dCRhZnRlck87XG4gICAgICAgICAgKF9wb3J0YWxDb250ZXh0JGFmdGVyTyA9IHBvcnRhbENvbnRleHQuYWZ0ZXJPdXRzaWRlUmVmLmN1cnJlbnQpID09IG51bGwgfHwgX3BvcnRhbENvbnRleHQkYWZ0ZXJPLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pKTtcbn1cblxuY29uc3QgYWN0aXZlTG9ja3MgPSAvKiNfX1BVUkVfXyovbmV3IFNldCgpO1xuLyoqXG4gKiBQcm92aWRlcyBiYXNlIHN0eWxpbmcgZm9yIGEgZml4ZWQgb3ZlcmxheSBlbGVtZW50IHRvIGRpbSBjb250ZW50IG9yIGJsb2NrXG4gKiBwb2ludGVyIGV2ZW50cyBiZWhpbmQgYSBmbG9hdGluZyBlbGVtZW50LlxuICogSXQncyBhIHJlZ3VsYXIgYDxkaXY+YCwgc28gaXQgY2FuIGJlIHN0eWxlZCB2aWEgYW55IENTUyBzb2x1dGlvbiB5b3UgcHJlZmVyLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL0Zsb2F0aW5nT3ZlcmxheVxuICovXG5jb25zdCBGbG9hdGluZ092ZXJsYXkgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBGbG9hdGluZ092ZXJsYXkocHJvcHMsIHJlZikge1xuICBjb25zdCB7XG4gICAgbG9ja1Njcm9sbCA9IGZhbHNlLFxuICAgIC4uLnJlc3RcbiAgfSA9IHByb3BzO1xuICBjb25zdCBsb2NrSWQgPSB1c2VJZCgpO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKCFsb2NrU2Nyb2xsKSByZXR1cm47XG4gICAgYWN0aXZlTG9ja3MuYWRkKGxvY2tJZCk7XG4gICAgY29uc3QgaXNJT1MgPSAvaVAoaG9uZXxhZHxvZCl8aU9TLy50ZXN0KGdldFBsYXRmb3JtKCkpO1xuICAgIGNvbnN0IGJvZHlTdHlsZSA9IGRvY3VtZW50LmJvZHkuc3R5bGU7XG4gICAgLy8gUlRMIDxib2R5PiBzY3JvbGxiYXJcbiAgICBjb25zdCBzY3JvbGxiYXJYID0gTWF0aC5yb3VuZChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCkgKyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICBjb25zdCBwYWRkaW5nUHJvcCA9IHNjcm9sbGJhclggPyAncGFkZGluZ0xlZnQnIDogJ3BhZGRpbmdSaWdodCc7XG4gICAgY29uc3Qgc2Nyb2xsYmFyV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCAtIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICBjb25zdCBzY3JvbGxYID0gYm9keVN0eWxlLmxlZnQgPyBwYXJzZUZsb2F0KGJvZHlTdHlsZS5sZWZ0KSA6IHdpbmRvdy5zY3JvbGxYO1xuICAgIGNvbnN0IHNjcm9sbFkgPSBib2R5U3R5bGUudG9wID8gcGFyc2VGbG9hdChib2R5U3R5bGUudG9wKSA6IHdpbmRvdy5zY3JvbGxZO1xuICAgIGJvZHlTdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgIGlmIChzY3JvbGxiYXJXaWR0aCkge1xuICAgICAgYm9keVN0eWxlW3BhZGRpbmdQcm9wXSA9IHNjcm9sbGJhcldpZHRoICsgXCJweFwiO1xuICAgIH1cblxuICAgIC8vIE9ubHkgaU9TIGRvZXNuJ3QgcmVzcGVjdCBgb3ZlcmZsb3c6IGhpZGRlbmAgb24gZG9jdW1lbnQuYm9keSwgYW5kIHRoaXNcbiAgICAvLyB0ZWNobmlxdWUgaGFzIGZld2VyIHNpZGUgZWZmZWN0cy5cbiAgICBpZiAoaXNJT1MpIHtcbiAgICAgIHZhciBfd2luZG93JHZpc3VhbFZpZXdwb3IsIF93aW5kb3ckdmlzdWFsVmlld3BvcjI7XG4gICAgICAvLyBpT1MgMTIgZG9lcyBub3Qgc3VwcG9ydCBgdmlzdWFsVmlld3BvcnRgLlxuICAgICAgY29uc3Qgb2Zmc2V0TGVmdCA9ICgoX3dpbmRvdyR2aXN1YWxWaWV3cG9yID0gd2luZG93LnZpc3VhbFZpZXdwb3J0KSA9PSBudWxsID8gdm9pZCAwIDogX3dpbmRvdyR2aXN1YWxWaWV3cG9yLm9mZnNldExlZnQpIHx8IDA7XG4gICAgICBjb25zdCBvZmZzZXRUb3AgPSAoKF93aW5kb3ckdmlzdWFsVmlld3BvcjIgPSB3aW5kb3cudmlzdWFsVmlld3BvcnQpID09IG51bGwgPyB2b2lkIDAgOiBfd2luZG93JHZpc3VhbFZpZXdwb3IyLm9mZnNldFRvcCkgfHwgMDtcbiAgICAgIE9iamVjdC5hc3NpZ24oYm9keVN0eWxlLCB7XG4gICAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgICB0b3A6IC0oc2Nyb2xsWSAtIE1hdGguZmxvb3Iob2Zmc2V0VG9wKSkgKyBcInB4XCIsXG4gICAgICAgIGxlZnQ6IC0oc2Nyb2xsWCAtIE1hdGguZmxvb3Iob2Zmc2V0TGVmdCkpICsgXCJweFwiLFxuICAgICAgICByaWdodDogJzAnXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGFjdGl2ZUxvY2tzLmRlbGV0ZShsb2NrSWQpO1xuICAgICAgaWYgKGFjdGl2ZUxvY2tzLnNpemUgPT09IDApIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihib2R5U3R5bGUsIHtcbiAgICAgICAgICBvdmVyZmxvdzogJycsXG4gICAgICAgICAgW3BhZGRpbmdQcm9wXTogJydcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpc0lPUykge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24oYm9keVN0eWxlLCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogJycsXG4gICAgICAgICAgICB0b3A6ICcnLFxuICAgICAgICAgICAgbGVmdDogJycsXG4gICAgICAgICAgICByaWdodDogJydcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oc2Nyb2xsWCwgc2Nyb2xsWSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LCBbbG9ja0lkLCBsb2NrU2Nyb2xsXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgcmVmOiByZWZcbiAgfSwgcmVzdCwge1xuICAgIHN0eWxlOiB7XG4gICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgIG92ZXJmbG93OiAnYXV0bycsXG4gICAgICB0b3A6IDAsXG4gICAgICByaWdodDogMCxcbiAgICAgIGJvdHRvbTogMCxcbiAgICAgIGxlZnQ6IDAsXG4gICAgICAuLi5yZXN0LnN0eWxlXG4gICAgfVxuICB9KSk7XG59KTtcblxuZnVuY3Rpb24gaXNCdXR0b25UYXJnZXQoZXZlbnQpIHtcbiAgcmV0dXJuIGlzSFRNTEVsZW1lbnQoZXZlbnQudGFyZ2V0KSAmJiBldmVudC50YXJnZXQudGFnTmFtZSA9PT0gJ0JVVFRPTic7XG59XG5mdW5jdGlvbiBpc1NwYWNlSWdub3JlZChlbGVtZW50KSB7XG4gIHJldHVybiBpc1R5cGVhYmxlRWxlbWVudChlbGVtZW50KTtcbn1cbi8qKlxuICogT3BlbnMgb3IgY2xvc2VzIHRoZSBmbG9hdGluZyBlbGVtZW50IHdoZW4gY2xpY2tpbmcgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3VzZUNsaWNrXG4gKi9cbmZ1bmN0aW9uIHVzZUNsaWNrKGNvbnRleHQsIHByb3BzKSB7XG4gIGlmIChwcm9wcyA9PT0gdm9pZCAwKSB7XG4gICAgcHJvcHMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgb3BlbixcbiAgICBvbk9wZW5DaGFuZ2UsXG4gICAgZGF0YVJlZixcbiAgICBlbGVtZW50czoge1xuICAgICAgZG9tUmVmZXJlbmNlXG4gICAgfVxuICB9ID0gY29udGV4dDtcbiAgY29uc3Qge1xuICAgIGVuYWJsZWQgPSB0cnVlLFxuICAgIGV2ZW50OiBldmVudE9wdGlvbiA9ICdjbGljaycsXG4gICAgdG9nZ2xlID0gdHJ1ZSxcbiAgICBpZ25vcmVNb3VzZSA9IGZhbHNlLFxuICAgIGtleWJvYXJkSGFuZGxlcnMgPSB0cnVlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgcG9pbnRlclR5cGVSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgY29uc3QgZGlkS2V5RG93blJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHJlZmVyZW5jZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBvblBvaW50ZXJEb3duKGV2ZW50KSB7XG4gICAgICBwb2ludGVyVHlwZVJlZi5jdXJyZW50ID0gZXZlbnQucG9pbnRlclR5cGU7XG4gICAgfSxcbiAgICBvbk1vdXNlRG93bihldmVudCkge1xuICAgICAgY29uc3QgcG9pbnRlclR5cGUgPSBwb2ludGVyVHlwZVJlZi5jdXJyZW50O1xuXG4gICAgICAvLyBJZ25vcmUgYWxsIGJ1dHRvbnMgZXhjZXB0IGZvciB0aGUgXCJtYWluXCIgYnV0dG9uLlxuICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL01vdXNlRXZlbnQvYnV0dG9uXG4gICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwKSByZXR1cm47XG4gICAgICBpZiAoZXZlbnRPcHRpb24gPT09ICdjbGljaycpIHJldHVybjtcbiAgICAgIGlmIChpc01vdXNlTGlrZVBvaW50ZXJUeXBlKHBvaW50ZXJUeXBlLCB0cnVlKSAmJiBpZ25vcmVNb3VzZSkgcmV0dXJuO1xuICAgICAgaWYgKG9wZW4gJiYgdG9nZ2xlICYmIChkYXRhUmVmLmN1cnJlbnQub3BlbkV2ZW50ID8gZGF0YVJlZi5jdXJyZW50Lm9wZW5FdmVudC50eXBlID09PSAnbW91c2Vkb3duJyA6IHRydWUpKSB7XG4gICAgICAgIG9uT3BlbkNoYW5nZShmYWxzZSwgZXZlbnQubmF0aXZlRXZlbnQsICdjbGljaycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUHJldmVudCBzdGVhbGluZyBmb2N1cyBmcm9tIHRoZSBmbG9hdGluZyBlbGVtZW50XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9uT3BlbkNoYW5nZSh0cnVlLCBldmVudC5uYXRpdmVFdmVudCwgJ2NsaWNrJyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvbkNsaWNrKGV2ZW50KSB7XG4gICAgICBjb25zdCBwb2ludGVyVHlwZSA9IHBvaW50ZXJUeXBlUmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoZXZlbnRPcHRpb24gPT09ICdtb3VzZWRvd24nICYmIHBvaW50ZXJUeXBlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcG9pbnRlclR5cGVSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGlzTW91c2VMaWtlUG9pbnRlclR5cGUocG9pbnRlclR5cGUsIHRydWUpICYmIGlnbm9yZU1vdXNlKSByZXR1cm47XG4gICAgICBpZiAob3BlbiAmJiB0b2dnbGUgJiYgKGRhdGFSZWYuY3VycmVudC5vcGVuRXZlbnQgPyBkYXRhUmVmLmN1cnJlbnQub3BlbkV2ZW50LnR5cGUgPT09ICdjbGljaycgOiB0cnVlKSkge1xuICAgICAgICBvbk9wZW5DaGFuZ2UoZmFsc2UsIGV2ZW50Lm5hdGl2ZUV2ZW50LCAnY2xpY2snKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uT3BlbkNoYW5nZSh0cnVlLCBldmVudC5uYXRpdmVFdmVudCwgJ2NsaWNrJyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvbktleURvd24oZXZlbnQpIHtcbiAgICAgIHBvaW50ZXJUeXBlUmVmLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCB8fCAha2V5Ym9hcmRIYW5kbGVycyB8fCBpc0J1dHRvblRhcmdldChldmVudCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJyAnICYmICFpc1NwYWNlSWdub3JlZChkb21SZWZlcmVuY2UpKSB7XG4gICAgICAgIC8vIFByZXZlbnQgc2Nyb2xsaW5nXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGRpZEtleURvd25SZWYuY3VycmVudCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgIGlmIChvcGVuICYmIHRvZ2dsZSkge1xuICAgICAgICAgIG9uT3BlbkNoYW5nZShmYWxzZSwgZXZlbnQubmF0aXZlRXZlbnQsICdjbGljaycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uT3BlbkNoYW5nZSh0cnVlLCBldmVudC5uYXRpdmVFdmVudCwgJ2NsaWNrJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIG9uS2V5VXAoZXZlbnQpIHtcbiAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkIHx8ICFrZXlib2FyZEhhbmRsZXJzIHx8IGlzQnV0dG9uVGFyZ2V0KGV2ZW50KSB8fCBpc1NwYWNlSWdub3JlZChkb21SZWZlcmVuY2UpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5rZXkgPT09ICcgJyAmJiBkaWRLZXlEb3duUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgZGlkS2V5RG93blJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIGlmIChvcGVuICYmIHRvZ2dsZSkge1xuICAgICAgICAgIG9uT3BlbkNoYW5nZShmYWxzZSwgZXZlbnQubmF0aXZlRXZlbnQsICdjbGljaycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uT3BlbkNoYW5nZSh0cnVlLCBldmVudC5uYXRpdmVFdmVudCwgJ2NsaWNrJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pLCBbZGF0YVJlZiwgZG9tUmVmZXJlbmNlLCBldmVudE9wdGlvbiwgaWdub3JlTW91c2UsIGtleWJvYXJkSGFuZGxlcnMsIG9uT3BlbkNoYW5nZSwgb3BlbiwgdG9nZ2xlXSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IGVuYWJsZWQgPyB7XG4gICAgcmVmZXJlbmNlXG4gIH0gOiB7fSwgW2VuYWJsZWQsIHJlZmVyZW5jZV0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVWaXJ0dWFsRWxlbWVudChkb21FbGVtZW50LCBkYXRhKSB7XG4gIGxldCBvZmZzZXRYID0gbnVsbDtcbiAgbGV0IG9mZnNldFkgPSBudWxsO1xuICBsZXQgaXNBdXRvVXBkYXRlRXZlbnQgPSBmYWxzZTtcbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0RWxlbWVudDogZG9tRWxlbWVudCB8fCB1bmRlZmluZWQsXG4gICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkge1xuICAgICAgdmFyIF9kYXRhJGRhdGFSZWYkY3VycmVudDtcbiAgICAgIGNvbnN0IGRvbVJlY3QgPSAoZG9tRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogZG9tRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkgfHwge1xuICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwXG4gICAgICB9O1xuICAgICAgY29uc3QgaXNYQXhpcyA9IGRhdGEuYXhpcyA9PT0gJ3gnIHx8IGRhdGEuYXhpcyA9PT0gJ2JvdGgnO1xuICAgICAgY29uc3QgaXNZQXhpcyA9IGRhdGEuYXhpcyA9PT0gJ3knIHx8IGRhdGEuYXhpcyA9PT0gJ2JvdGgnO1xuICAgICAgY29uc3QgY2FuVHJhY2tDdXJzb3JPbkF1dG9VcGRhdGUgPSBbJ21vdXNlZW50ZXInLCAnbW91c2Vtb3ZlJ10uaW5jbHVkZXMoKChfZGF0YSRkYXRhUmVmJGN1cnJlbnQgPSBkYXRhLmRhdGFSZWYuY3VycmVudC5vcGVuRXZlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZGF0YSRkYXRhUmVmJGN1cnJlbnQudHlwZSkgfHwgJycpICYmIGRhdGEucG9pbnRlclR5cGUgIT09ICd0b3VjaCc7XG4gICAgICBsZXQgd2lkdGggPSBkb21SZWN0LndpZHRoO1xuICAgICAgbGV0IGhlaWdodCA9IGRvbVJlY3QuaGVpZ2h0O1xuICAgICAgbGV0IHggPSBkb21SZWN0Lng7XG4gICAgICBsZXQgeSA9IGRvbVJlY3QueTtcbiAgICAgIGlmIChvZmZzZXRYID09IG51bGwgJiYgZGF0YS54ICYmIGlzWEF4aXMpIHtcbiAgICAgICAgb2Zmc2V0WCA9IGRvbVJlY3QueCAtIGRhdGEueDtcbiAgICAgIH1cbiAgICAgIGlmIChvZmZzZXRZID09IG51bGwgJiYgZGF0YS55ICYmIGlzWUF4aXMpIHtcbiAgICAgICAgb2Zmc2V0WSA9IGRvbVJlY3QueSAtIGRhdGEueTtcbiAgICAgIH1cbiAgICAgIHggLT0gb2Zmc2V0WCB8fCAwO1xuICAgICAgeSAtPSBvZmZzZXRZIHx8IDA7XG4gICAgICB3aWR0aCA9IDA7XG4gICAgICBoZWlnaHQgPSAwO1xuICAgICAgaWYgKCFpc0F1dG9VcGRhdGVFdmVudCB8fCBjYW5UcmFja0N1cnNvck9uQXV0b1VwZGF0ZSkge1xuICAgICAgICB3aWR0aCA9IGRhdGEuYXhpcyA9PT0gJ3knID8gZG9tUmVjdC53aWR0aCA6IDA7XG4gICAgICAgIGhlaWdodCA9IGRhdGEuYXhpcyA9PT0gJ3gnID8gZG9tUmVjdC5oZWlnaHQgOiAwO1xuICAgICAgICB4ID0gaXNYQXhpcyAmJiBkYXRhLnggIT0gbnVsbCA/IGRhdGEueCA6IHg7XG4gICAgICAgIHkgPSBpc1lBeGlzICYmIGRhdGEueSAhPSBudWxsID8gZGF0YS55IDogeTtcbiAgICAgIH0gZWxzZSBpZiAoaXNBdXRvVXBkYXRlRXZlbnQgJiYgIWNhblRyYWNrQ3Vyc29yT25BdXRvVXBkYXRlKSB7XG4gICAgICAgIGhlaWdodCA9IGRhdGEuYXhpcyA9PT0gJ3gnID8gZG9tUmVjdC5oZWlnaHQgOiBoZWlnaHQ7XG4gICAgICAgIHdpZHRoID0gZGF0YS5heGlzID09PSAneScgPyBkb21SZWN0LndpZHRoIDogd2lkdGg7XG4gICAgICB9XG4gICAgICBpc0F1dG9VcGRhdGVFdmVudCA9IHRydWU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICB0b3A6IHksXG4gICAgICAgIHJpZ2h0OiB4ICsgd2lkdGgsXG4gICAgICAgIGJvdHRvbTogeSArIGhlaWdodCxcbiAgICAgICAgbGVmdDogeFxuICAgICAgfTtcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBpc01vdXNlQmFzZWRFdmVudChldmVudCkge1xuICByZXR1cm4gZXZlbnQgIT0gbnVsbCAmJiBldmVudC5jbGllbnRYICE9IG51bGw7XG59XG4vKipcbiAqIFBvc2l0aW9ucyB0aGUgZmxvYXRpbmcgZWxlbWVudCByZWxhdGl2ZSB0byBhIGNsaWVudCBwb2ludCAoaW4gdGhlIHZpZXdwb3J0KSxcbiAqIHN1Y2ggYXMgdGhlIG1vdXNlIHBvc2l0aW9uLiBCeSBkZWZhdWx0LCBpdCBmb2xsb3dzIHRoZSBtb3VzZSBjdXJzb3IuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdXNlQ2xpZW50UG9pbnRcbiAqL1xuZnVuY3Rpb24gdXNlQ2xpZW50UG9pbnQoY29udGV4dCwgcHJvcHMpIHtcbiAgaWYgKHByb3BzID09PSB2b2lkIDApIHtcbiAgICBwcm9wcyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBvcGVuLFxuICAgIGRhdGFSZWYsXG4gICAgZWxlbWVudHM6IHtcbiAgICAgIGZsb2F0aW5nLFxuICAgICAgZG9tUmVmZXJlbmNlXG4gICAgfSxcbiAgICByZWZzXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgZW5hYmxlZCA9IHRydWUsXG4gICAgYXhpcyA9ICdib3RoJyxcbiAgICB4ID0gbnVsbCxcbiAgICB5ID0gbnVsbFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGluaXRpYWxSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBjb25zdCBjbGVhbnVwTGlzdGVuZXJSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IFtwb2ludGVyVHlwZSwgc2V0UG9pbnRlclR5cGVdID0gUmVhY3QudXNlU3RhdGUoKTtcbiAgY29uc3QgW3JlYWN0aXZlLCBzZXRSZWFjdGl2ZV0gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gIGNvbnN0IHNldFJlZmVyZW5jZSA9IHVzZUVmZmVjdEV2ZW50KCh4LCB5KSA9PiB7XG4gICAgaWYgKGluaXRpYWxSZWYuY3VycmVudCkgcmV0dXJuO1xuXG4gICAgLy8gUHJldmVudCBzZXR0aW5nIGlmIHRoZSBvcGVuIGV2ZW50IHdhcyBub3QgYSBtb3VzZS1saWtlIG9uZVxuICAgIC8vIChlLmcuIGZvY3VzIHRvIG9wZW4sIHRoZW4gaG92ZXIgb3ZlciB0aGUgcmVmZXJlbmNlIGVsZW1lbnQpLlxuICAgIC8vIE9ubHkgYXBwbHkgaWYgdGhlIGV2ZW50IGV4aXN0cy5cbiAgICBpZiAoZGF0YVJlZi5jdXJyZW50Lm9wZW5FdmVudCAmJiAhaXNNb3VzZUJhc2VkRXZlbnQoZGF0YVJlZi5jdXJyZW50Lm9wZW5FdmVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmVmcy5zZXRQb3NpdGlvblJlZmVyZW5jZShjcmVhdGVWaXJ0dWFsRWxlbWVudChkb21SZWZlcmVuY2UsIHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgYXhpcyxcbiAgICAgIGRhdGFSZWYsXG4gICAgICBwb2ludGVyVHlwZVxuICAgIH0pKTtcbiAgfSk7XG4gIGNvbnN0IGhhbmRsZVJlZmVyZW5jZUVudGVyT3JNb3ZlID0gdXNlRWZmZWN0RXZlbnQoZXZlbnQgPT4ge1xuICAgIGlmICh4ICE9IG51bGwgfHwgeSAhPSBudWxsKSByZXR1cm47XG4gICAgaWYgKCFvcGVuKSB7XG4gICAgICBzZXRSZWZlcmVuY2UoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XG4gICAgfSBlbHNlIGlmICghY2xlYW51cExpc3RlbmVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIC8vIElmIHRoZXJlJ3Mgbm8gY2xlYW51cCwgdGhlcmUncyBubyBsaXN0ZW5lciwgYnV0IHdlIHdhbnQgdG8gZW5zdXJlXG4gICAgICAvLyB3ZSBhZGQgdGhlIGxpc3RlbmVyIGlmIHRoZSBjdXJzb3IgbGFuZGVkIG9uIHRoZSBmbG9hdGluZyBlbGVtZW50IGFuZFxuICAgICAgLy8gdGhlbiBiYWNrIG9uIHRoZSByZWZlcmVuY2UgKGkuZS4gaXQncyBpbnRlcmFjdGl2ZSkuXG4gICAgICBzZXRSZWFjdGl2ZShbXSk7XG4gICAgfVxuICB9KTtcblxuICAvLyBJZiB0aGUgcG9pbnRlciBpcyBhIG1vdXNlLWxpa2UgcG9pbnRlciwgd2Ugd2FudCB0byBjb250aW51ZSBmb2xsb3dpbmcgdGhlXG4gIC8vIG1vdXNlIGV2ZW4gaWYgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXMgdHJhbnNpdGlvbmluZyBvdXQuIE9uIHRvdWNoXG4gIC8vIGRldmljZXMsIHRoaXMgaXMgdW5kZXNpcmFibGUgYmVjYXVzZSB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aWxsIG1vdmUgdG9cbiAgLy8gdGhlIGRpc21pc3NhbCB0b3VjaCBwb2ludC5cbiAgY29uc3Qgb3BlbkNoZWNrID0gaXNNb3VzZUxpa2VQb2ludGVyVHlwZShwb2ludGVyVHlwZSkgPyBmbG9hdGluZyA6IG9wZW47XG4gIGNvbnN0IGFkZExpc3RlbmVyID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIEV4cGxpY2l0bHkgc3BlY2lmaWVkIGB4YC9geWAgY29vcmRpbmF0ZXMgc2hvdWxkbid0IGFkZCBhIGxpc3RlbmVyLlxuICAgIGlmICghb3BlbkNoZWNrIHx8ICFlbmFibGVkIHx8IHggIT0gbnVsbCB8fCB5ICE9IG51bGwpIHJldHVybjtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZmxvYXRpbmcpO1xuICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlTW92ZShldmVudCkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGV2ZW50KTtcbiAgICAgIGlmICghY29udGFpbnMoZmxvYXRpbmcsIHRhcmdldCkpIHtcbiAgICAgICAgc2V0UmVmZXJlbmNlKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2luLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGhhbmRsZU1vdXNlTW92ZSk7XG4gICAgICAgIGNsZWFudXBMaXN0ZW5lclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFkYXRhUmVmLmN1cnJlbnQub3BlbkV2ZW50IHx8IGlzTW91c2VCYXNlZEV2ZW50KGRhdGFSZWYuY3VycmVudC5vcGVuRXZlbnQpKSB7XG4gICAgICB3aW4uYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgaGFuZGxlTW91c2VNb3ZlKTtcbiAgICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XG4gICAgICAgIHdpbi5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBoYW5kbGVNb3VzZU1vdmUpO1xuICAgICAgICBjbGVhbnVwTGlzdGVuZXJSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICB9O1xuICAgICAgY2xlYW51cExpc3RlbmVyUmVmLmN1cnJlbnQgPSBjbGVhbnVwO1xuICAgICAgcmV0dXJuIGNsZWFudXA7XG4gICAgfVxuICAgIHJlZnMuc2V0UG9zaXRpb25SZWZlcmVuY2UoZG9tUmVmZXJlbmNlKTtcbiAgfSwgW29wZW5DaGVjaywgZW5hYmxlZCwgeCwgeSwgZmxvYXRpbmcsIGRhdGFSZWYsIHJlZnMsIGRvbVJlZmVyZW5jZSwgc2V0UmVmZXJlbmNlXSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuIGFkZExpc3RlbmVyKCk7XG4gIH0sIFthZGRMaXN0ZW5lciwgcmVhY3RpdmVdKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZW5hYmxlZCAmJiAhZmxvYXRpbmcpIHtcbiAgICAgIGluaXRpYWxSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgIH1cbiAgfSwgW2VuYWJsZWQsIGZsb2F0aW5nXSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkICYmIG9wZW4pIHtcbiAgICAgIGluaXRpYWxSZWYuY3VycmVudCA9IHRydWU7XG4gICAgfVxuICB9LCBbZW5hYmxlZCwgb3Blbl0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKGVuYWJsZWQgJiYgKHggIT0gbnVsbCB8fCB5ICE9IG51bGwpKSB7XG4gICAgICBpbml0aWFsUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIHNldFJlZmVyZW5jZSh4LCB5KTtcbiAgICB9XG4gIH0sIFtlbmFibGVkLCB4LCB5LCBzZXRSZWZlcmVuY2VdKTtcbiAgY29uc3QgcmVmZXJlbmNlID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgZnVuY3Rpb24gc2V0UG9pbnRlclR5cGVSZWYoX3JlZikge1xuICAgICAgbGV0IHtcbiAgICAgICAgcG9pbnRlclR5cGVcbiAgICAgIH0gPSBfcmVmO1xuICAgICAgc2V0UG9pbnRlclR5cGUocG9pbnRlclR5cGUpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgb25Qb2ludGVyRG93bjogc2V0UG9pbnRlclR5cGVSZWYsXG4gICAgICBvblBvaW50ZXJFbnRlcjogc2V0UG9pbnRlclR5cGVSZWYsXG4gICAgICBvbk1vdXNlTW92ZTogaGFuZGxlUmVmZXJlbmNlRW50ZXJPck1vdmUsXG4gICAgICBvbk1vdXNlRW50ZXI6IGhhbmRsZVJlZmVyZW5jZUVudGVyT3JNb3ZlXG4gICAgfTtcbiAgfSwgW2hhbmRsZVJlZmVyZW5jZUVudGVyT3JNb3ZlXSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IGVuYWJsZWQgPyB7XG4gICAgcmVmZXJlbmNlXG4gIH0gOiB7fSwgW2VuYWJsZWQsIHJlZmVyZW5jZV0pO1xufVxuXG5jb25zdCBidWJibGVIYW5kbGVyS2V5cyA9IHtcbiAgcG9pbnRlcmRvd246ICdvblBvaW50ZXJEb3duJyxcbiAgbW91c2Vkb3duOiAnb25Nb3VzZURvd24nLFxuICBjbGljazogJ29uQ2xpY2snXG59O1xuY29uc3QgY2FwdHVyZUhhbmRsZXJLZXlzID0ge1xuICBwb2ludGVyZG93bjogJ29uUG9pbnRlckRvd25DYXB0dXJlJyxcbiAgbW91c2Vkb3duOiAnb25Nb3VzZURvd25DYXB0dXJlJyxcbiAgY2xpY2s6ICdvbkNsaWNrQ2FwdHVyZSdcbn07XG5jb25zdCBub3JtYWxpemVQcm9wID0gbm9ybWFsaXphYmxlID0+IHtcbiAgdmFyIF9ub3JtYWxpemFibGUkZXNjYXBlSywgX25vcm1hbGl6YWJsZSRvdXRzaWRlO1xuICByZXR1cm4ge1xuICAgIGVzY2FwZUtleTogdHlwZW9mIG5vcm1hbGl6YWJsZSA9PT0gJ2Jvb2xlYW4nID8gbm9ybWFsaXphYmxlIDogKF9ub3JtYWxpemFibGUkZXNjYXBlSyA9IG5vcm1hbGl6YWJsZSA9PSBudWxsID8gdm9pZCAwIDogbm9ybWFsaXphYmxlLmVzY2FwZUtleSkgIT0gbnVsbCA/IF9ub3JtYWxpemFibGUkZXNjYXBlSyA6IGZhbHNlLFxuICAgIG91dHNpZGVQcmVzczogdHlwZW9mIG5vcm1hbGl6YWJsZSA9PT0gJ2Jvb2xlYW4nID8gbm9ybWFsaXphYmxlIDogKF9ub3JtYWxpemFibGUkb3V0c2lkZSA9IG5vcm1hbGl6YWJsZSA9PSBudWxsID8gdm9pZCAwIDogbm9ybWFsaXphYmxlLm91dHNpZGVQcmVzcykgIT0gbnVsbCA/IF9ub3JtYWxpemFibGUkb3V0c2lkZSA6IHRydWVcbiAgfTtcbn07XG4vKipcbiAqIENsb3NlcyB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aGVuIGEgZGlzbWlzc2FsIGlzIHJlcXVlc3RlZCDigJQgYnkgZGVmYXVsdCwgd2hlblxuICogdGhlIHVzZXIgcHJlc3NlcyB0aGUgYGVzY2FwZWAga2V5IG9yIG91dHNpZGUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdXNlRGlzbWlzc1xuICovXG5mdW5jdGlvbiB1c2VEaXNtaXNzKGNvbnRleHQsIHByb3BzKSB7XG4gIGlmIChwcm9wcyA9PT0gdm9pZCAwKSB7XG4gICAgcHJvcHMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgb3BlbixcbiAgICBvbk9wZW5DaGFuZ2UsXG4gICAgZWxlbWVudHMsXG4gICAgZGF0YVJlZlxuICB9ID0gY29udGV4dDtcbiAgY29uc3Qge1xuICAgIGVuYWJsZWQgPSB0cnVlLFxuICAgIGVzY2FwZUtleSA9IHRydWUsXG4gICAgb3V0c2lkZVByZXNzOiB1bnN0YWJsZV9vdXRzaWRlUHJlc3MgPSB0cnVlLFxuICAgIG91dHNpZGVQcmVzc0V2ZW50ID0gJ3BvaW50ZXJkb3duJyxcbiAgICByZWZlcmVuY2VQcmVzcyA9IGZhbHNlLFxuICAgIHJlZmVyZW5jZVByZXNzRXZlbnQgPSAncG9pbnRlcmRvd24nLFxuICAgIGFuY2VzdG9yU2Nyb2xsID0gZmFsc2UsXG4gICAgYnViYmxlcyxcbiAgICBjYXB0dXJlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgdHJlZSA9IHVzZUZsb2F0aW5nVHJlZSgpO1xuICBjb25zdCBvdXRzaWRlUHJlc3NGbiA9IHVzZUVmZmVjdEV2ZW50KHR5cGVvZiB1bnN0YWJsZV9vdXRzaWRlUHJlc3MgPT09ICdmdW5jdGlvbicgPyB1bnN0YWJsZV9vdXRzaWRlUHJlc3MgOiAoKSA9PiBmYWxzZSk7XG4gIGNvbnN0IG91dHNpZGVQcmVzcyA9IHR5cGVvZiB1bnN0YWJsZV9vdXRzaWRlUHJlc3MgPT09ICdmdW5jdGlvbicgPyBvdXRzaWRlUHJlc3NGbiA6IHVuc3RhYmxlX291dHNpZGVQcmVzcztcbiAgY29uc3QgaW5zaWRlUmVhY3RUcmVlUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgZW5kZWRPclN0YXJ0ZWRJbnNpZGVSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBjb25zdCB7XG4gICAgZXNjYXBlS2V5OiBlc2NhcGVLZXlCdWJibGVzLFxuICAgIG91dHNpZGVQcmVzczogb3V0c2lkZVByZXNzQnViYmxlc1xuICB9ID0gbm9ybWFsaXplUHJvcChidWJibGVzKTtcbiAgY29uc3Qge1xuICAgIGVzY2FwZUtleTogZXNjYXBlS2V5Q2FwdHVyZSxcbiAgICBvdXRzaWRlUHJlc3M6IG91dHNpZGVQcmVzc0NhcHR1cmVcbiAgfSA9IG5vcm1hbGl6ZVByb3AoY2FwdHVyZSk7XG4gIGNvbnN0IGNsb3NlT25Fc2NhcGVLZXlEb3duID0gdXNlRWZmZWN0RXZlbnQoZXZlbnQgPT4ge1xuICAgIHZhciBfZGF0YVJlZiRjdXJyZW50JGZsb2E7XG4gICAgaWYgKCFvcGVuIHx8ICFlbmFibGVkIHx8ICFlc2NhcGVLZXkgfHwgZXZlbnQua2V5ICE9PSAnRXNjYXBlJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBub2RlSWQgPSAoX2RhdGFSZWYkY3VycmVudCRmbG9hID0gZGF0YVJlZi5jdXJyZW50LmZsb2F0aW5nQ29udGV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kYXRhUmVmJGN1cnJlbnQkZmxvYS5ub2RlSWQ7XG4gICAgY29uc3QgY2hpbGRyZW4gPSB0cmVlID8gZ2V0Q2hpbGRyZW4odHJlZS5ub2Rlc1JlZi5jdXJyZW50LCBub2RlSWQpIDogW107XG4gICAgaWYgKCFlc2NhcGVLZXlCdWJibGVzKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCBzaG91bGREaXNtaXNzID0gdHJ1ZTtcbiAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XG4gICAgICAgICAgdmFyIF9jaGlsZCRjb250ZXh0O1xuICAgICAgICAgIGlmICgoX2NoaWxkJGNvbnRleHQgPSBjaGlsZC5jb250ZXh0KSAhPSBudWxsICYmIF9jaGlsZCRjb250ZXh0Lm9wZW4gJiYgIWNoaWxkLmNvbnRleHQuZGF0YVJlZi5jdXJyZW50Ll9fZXNjYXBlS2V5QnViYmxlcykge1xuICAgICAgICAgICAgc2hvdWxkRGlzbWlzcyA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghc2hvdWxkRGlzbWlzcykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBvbk9wZW5DaGFuZ2UoZmFsc2UsIGlzUmVhY3RFdmVudChldmVudCkgPyBldmVudC5uYXRpdmVFdmVudCA6IGV2ZW50LCAnZXNjYXBlLWtleScpO1xuICB9KTtcbiAgY29uc3QgY2xvc2VPbkVzY2FwZUtleURvd25DYXB0dXJlID0gdXNlRWZmZWN0RXZlbnQoZXZlbnQgPT4ge1xuICAgIHZhciBfZ2V0VGFyZ2V0MjtcbiAgICBjb25zdCBjYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIHZhciBfZ2V0VGFyZ2V0O1xuICAgICAgY2xvc2VPbkVzY2FwZUtleURvd24oZXZlbnQpO1xuICAgICAgKF9nZXRUYXJnZXQgPSBnZXRUYXJnZXQoZXZlbnQpKSA9PSBudWxsIHx8IF9nZXRUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGNhbGxiYWNrKTtcbiAgICB9O1xuICAgIChfZ2V0VGFyZ2V0MiA9IGdldFRhcmdldChldmVudCkpID09IG51bGwgfHwgX2dldFRhcmdldDIuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGNhbGxiYWNrKTtcbiAgfSk7XG4gIGNvbnN0IGNsb3NlT25QcmVzc091dHNpZGUgPSB1c2VFZmZlY3RFdmVudChldmVudCA9PiB7XG4gICAgdmFyIF9kYXRhUmVmJGN1cnJlbnQkZmxvYTI7XG4gICAgLy8gR2l2ZW4gZGV2ZWxvcGVycyBjYW4gc3RvcCB0aGUgcHJvcGFnYXRpb24gb2YgdGhlIHN5bnRoZXRpYyBldmVudCxcbiAgICAvLyB3ZSBjYW4gb25seSBiZSBjb25maWRlbnQgd2l0aCBhIHBvc2l0aXZlIHZhbHVlLlxuICAgIGNvbnN0IGluc2lkZVJlYWN0VHJlZSA9IGluc2lkZVJlYWN0VHJlZVJlZi5jdXJyZW50O1xuICAgIGluc2lkZVJlYWN0VHJlZVJlZi5jdXJyZW50ID0gZmFsc2U7XG5cbiAgICAvLyBXaGVuIGNsaWNrIG91dHNpZGUgaXMgbGF6eSAoYGNsaWNrYCBldmVudCksIGhhbmRsZSBkcmFnZ2luZy5cbiAgICAvLyBEb24ndCBjbG9zZSBpZjpcbiAgICAvLyAtIFRoZSBjbGljayBzdGFydGVkIGluc2lkZSB0aGUgZmxvYXRpbmcgZWxlbWVudC5cbiAgICAvLyAtIFRoZSBjbGljayBlbmRlZCBpbnNpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQuXG4gICAgY29uc3QgZW5kZWRPclN0YXJ0ZWRJbnNpZGUgPSBlbmRlZE9yU3RhcnRlZEluc2lkZVJlZi5jdXJyZW50O1xuICAgIGVuZGVkT3JTdGFydGVkSW5zaWRlUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICBpZiAob3V0c2lkZVByZXNzRXZlbnQgPT09ICdjbGljaycgJiYgZW5kZWRPclN0YXJ0ZWRJbnNpZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGluc2lkZVJlYWN0VHJlZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG91dHNpZGVQcmVzcyA9PT0gJ2Z1bmN0aW9uJyAmJiAhb3V0c2lkZVByZXNzKGV2ZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0YXJnZXQgPSBnZXRUYXJnZXQoZXZlbnQpO1xuICAgIGNvbnN0IGluZXJ0U2VsZWN0b3IgPSBcIltcIiArIGNyZWF0ZUF0dHJpYnV0ZSgnaW5lcnQnKSArIFwiXVwiO1xuICAgIGNvbnN0IG1hcmtlcnMgPSBnZXREb2N1bWVudChlbGVtZW50cy5mbG9hdGluZykucXVlcnlTZWxlY3RvckFsbChpbmVydFNlbGVjdG9yKTtcbiAgICBsZXQgdGFyZ2V0Um9vdEFuY2VzdG9yID0gaXNFbGVtZW50KHRhcmdldCkgPyB0YXJnZXQgOiBudWxsO1xuICAgIHdoaWxlICh0YXJnZXRSb290QW5jZXN0b3IgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZSh0YXJnZXRSb290QW5jZXN0b3IpKSB7XG4gICAgICBjb25zdCBuZXh0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZSh0YXJnZXRSb290QW5jZXN0b3IpO1xuICAgICAgaWYgKGlzTGFzdFRyYXZlcnNhYmxlTm9kZShuZXh0UGFyZW50KSB8fCAhaXNFbGVtZW50KG5leHRQYXJlbnQpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgdGFyZ2V0Um9vdEFuY2VzdG9yID0gbmV4dFBhcmVudDtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgY2xpY2sgb2NjdXJyZWQgb24gYSB0aGlyZC1wYXJ0eSBlbGVtZW50IGluamVjdGVkIGFmdGVyIHRoZVxuICAgIC8vIGZsb2F0aW5nIGVsZW1lbnQgcmVuZGVyZWQuXG4gICAgaWYgKG1hcmtlcnMubGVuZ3RoICYmIGlzRWxlbWVudCh0YXJnZXQpICYmICFpc1Jvb3RFbGVtZW50KHRhcmdldCkgJiZcbiAgICAvLyBDbGlja2VkIG9uIGEgZGlyZWN0IGFuY2VzdG9yIChlLmcuIEZsb2F0aW5nT3ZlcmxheSkuXG4gICAgIWNvbnRhaW5zKHRhcmdldCwgZWxlbWVudHMuZmxvYXRpbmcpICYmXG4gICAgLy8gSWYgdGhlIHRhcmdldCByb290IGVsZW1lbnQgY29udGFpbnMgbm9uZSBvZiB0aGUgbWFya2VycywgdGhlbiB0aGVcbiAgICAvLyBlbGVtZW50IHdhcyBpbmplY3RlZCBhZnRlciB0aGUgZmxvYXRpbmcgZWxlbWVudCByZW5kZXJlZC5cbiAgICBBcnJheS5mcm9tKG1hcmtlcnMpLmV2ZXJ5KG1hcmtlciA9PiAhY29udGFpbnModGFyZ2V0Um9vdEFuY2VzdG9yLCBtYXJrZXIpKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRoZSBjbGljayBvY2N1cnJlZCBvbiB0aGUgc2Nyb2xsYmFyXG4gICAgaWYgKGlzSFRNTEVsZW1lbnQodGFyZ2V0KSAmJiBmbG9hdGluZykge1xuICAgICAgLy8gSW4gRmlyZWZveCwgYHRhcmdldC5zY3JvbGxXaWR0aCA+IHRhcmdldC5jbGllbnRXaWR0aGAgZm9yIGlubGluZVxuICAgICAgLy8gZWxlbWVudHMuXG4gICAgICBjb25zdCBjYW5TY3JvbGxYID0gdGFyZ2V0LmNsaWVudFdpZHRoID4gMCAmJiB0YXJnZXQuc2Nyb2xsV2lkdGggPiB0YXJnZXQuY2xpZW50V2lkdGg7XG4gICAgICBjb25zdCBjYW5TY3JvbGxZID0gdGFyZ2V0LmNsaWVudEhlaWdodCA+IDAgJiYgdGFyZ2V0LnNjcm9sbEhlaWdodCA+IHRhcmdldC5jbGllbnRIZWlnaHQ7XG4gICAgICBsZXQgeENvbmQgPSBjYW5TY3JvbGxZICYmIGV2ZW50Lm9mZnNldFggPiB0YXJnZXQuY2xpZW50V2lkdGg7XG5cbiAgICAgIC8vIEluIHNvbWUgYnJvd3NlcnMgaXQgaXMgcG9zc2libGUgdG8gY2hhbmdlIHRoZSA8Ym9keT4gKG9yIHdpbmRvdylcbiAgICAgIC8vIHNjcm9sbGJhciB0byB0aGUgbGVmdCBzaWRlLCBidXQgaXMgdmVyeSByYXJlIGFuZCBpcyBkaWZmaWN1bHQgdG9cbiAgICAgIC8vIGNoZWNrIGZvci4gUGx1cywgZm9yIG1vZGFsIGRpYWxvZ3Mgd2l0aCBiYWNrZHJvcHMsIGl0IGlzIG1vcmVcbiAgICAgIC8vIGltcG9ydGFudCB0aGF0IHRoZSBiYWNrZHJvcCBpcyBjaGVja2VkIGJ1dCBub3Qgc28gbXVjaCB0aGUgd2luZG93LlxuICAgICAgaWYgKGNhblNjcm9sbFkpIHtcbiAgICAgICAgY29uc3QgaXNSVEwgPSBnZXRDb21wdXRlZFN0eWxlKHRhcmdldCkuZGlyZWN0aW9uID09PSAncnRsJztcbiAgICAgICAgaWYgKGlzUlRMKSB7XG4gICAgICAgICAgeENvbmQgPSBldmVudC5vZmZzZXRYIDw9IHRhcmdldC5vZmZzZXRXaWR0aCAtIHRhcmdldC5jbGllbnRXaWR0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHhDb25kIHx8IGNhblNjcm9sbFggJiYgZXZlbnQub2Zmc2V0WSA+IHRhcmdldC5jbGllbnRIZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBub2RlSWQgPSAoX2RhdGFSZWYkY3VycmVudCRmbG9hMiA9IGRhdGFSZWYuY3VycmVudC5mbG9hdGluZ0NvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfZGF0YVJlZiRjdXJyZW50JGZsb2EyLm5vZGVJZDtcbiAgICBjb25zdCB0YXJnZXRJc0luc2lkZUNoaWxkcmVuID0gdHJlZSAmJiBnZXRDaGlsZHJlbih0cmVlLm5vZGVzUmVmLmN1cnJlbnQsIG5vZGVJZCkuc29tZShub2RlID0+IHtcbiAgICAgIHZhciBfbm9kZSRjb250ZXh0O1xuICAgICAgcmV0dXJuIGlzRXZlbnRUYXJnZXRXaXRoaW4oZXZlbnQsIChfbm9kZSRjb250ZXh0ID0gbm9kZS5jb250ZXh0KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkY29udGV4dC5lbGVtZW50cy5mbG9hdGluZyk7XG4gICAgfSk7XG4gICAgaWYgKGlzRXZlbnRUYXJnZXRXaXRoaW4oZXZlbnQsIGVsZW1lbnRzLmZsb2F0aW5nKSB8fCBpc0V2ZW50VGFyZ2V0V2l0aGluKGV2ZW50LCBlbGVtZW50cy5kb21SZWZlcmVuY2UpIHx8IHRhcmdldElzSW5zaWRlQ2hpbGRyZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY2hpbGRyZW4gPSB0cmVlID8gZ2V0Q2hpbGRyZW4odHJlZS5ub2Rlc1JlZi5jdXJyZW50LCBub2RlSWQpIDogW107XG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBzaG91bGREaXNtaXNzID0gdHJ1ZTtcbiAgICAgIGNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xuICAgICAgICB2YXIgX2NoaWxkJGNvbnRleHQyO1xuICAgICAgICBpZiAoKF9jaGlsZCRjb250ZXh0MiA9IGNoaWxkLmNvbnRleHQpICE9IG51bGwgJiYgX2NoaWxkJGNvbnRleHQyLm9wZW4gJiYgIWNoaWxkLmNvbnRleHQuZGF0YVJlZi5jdXJyZW50Ll9fb3V0c2lkZVByZXNzQnViYmxlcykge1xuICAgICAgICAgIHNob3VsZERpc21pc3MgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKCFzaG91bGREaXNtaXNzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgb25PcGVuQ2hhbmdlKGZhbHNlLCBldmVudCwgJ291dHNpZGUtcHJlc3MnKTtcbiAgfSk7XG4gIGNvbnN0IGNsb3NlT25QcmVzc091dHNpZGVDYXB0dXJlID0gdXNlRWZmZWN0RXZlbnQoZXZlbnQgPT4ge1xuICAgIHZhciBfZ2V0VGFyZ2V0NDtcbiAgICBjb25zdCBjYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIHZhciBfZ2V0VGFyZ2V0MztcbiAgICAgIGNsb3NlT25QcmVzc091dHNpZGUoZXZlbnQpO1xuICAgICAgKF9nZXRUYXJnZXQzID0gZ2V0VGFyZ2V0KGV2ZW50KSkgPT0gbnVsbCB8fCBfZ2V0VGFyZ2V0My5yZW1vdmVFdmVudExpc3RlbmVyKG91dHNpZGVQcmVzc0V2ZW50LCBjYWxsYmFjayk7XG4gICAgfTtcbiAgICAoX2dldFRhcmdldDQgPSBnZXRUYXJnZXQoZXZlbnQpKSA9PSBudWxsIHx8IF9nZXRUYXJnZXQ0LmFkZEV2ZW50TGlzdGVuZXIob3V0c2lkZVByZXNzRXZlbnQsIGNhbGxiYWNrKTtcbiAgfSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFvcGVuIHx8ICFlbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGRhdGFSZWYuY3VycmVudC5fX2VzY2FwZUtleUJ1YmJsZXMgPSBlc2NhcGVLZXlCdWJibGVzO1xuICAgIGRhdGFSZWYuY3VycmVudC5fX291dHNpZGVQcmVzc0J1YmJsZXMgPSBvdXRzaWRlUHJlc3NCdWJibGVzO1xuICAgIGZ1bmN0aW9uIG9uU2Nyb2xsKGV2ZW50KSB7XG4gICAgICBvbk9wZW5DaGFuZ2UoZmFsc2UsIGV2ZW50LCAnYW5jZXN0b3Itc2Nyb2xsJyk7XG4gICAgfVxuICAgIGNvbnN0IGRvYyA9IGdldERvY3VtZW50KGVsZW1lbnRzLmZsb2F0aW5nKTtcbiAgICBlc2NhcGVLZXkgJiYgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBlc2NhcGVLZXlDYXB0dXJlID8gY2xvc2VPbkVzY2FwZUtleURvd25DYXB0dXJlIDogY2xvc2VPbkVzY2FwZUtleURvd24sIGVzY2FwZUtleUNhcHR1cmUpO1xuICAgIG91dHNpZGVQcmVzcyAmJiBkb2MuYWRkRXZlbnRMaXN0ZW5lcihvdXRzaWRlUHJlc3NFdmVudCwgb3V0c2lkZVByZXNzQ2FwdHVyZSA/IGNsb3NlT25QcmVzc091dHNpZGVDYXB0dXJlIDogY2xvc2VPblByZXNzT3V0c2lkZSwgb3V0c2lkZVByZXNzQ2FwdHVyZSk7XG4gICAgbGV0IGFuY2VzdG9ycyA9IFtdO1xuICAgIGlmIChhbmNlc3RvclNjcm9sbCkge1xuICAgICAgaWYgKGlzRWxlbWVudChlbGVtZW50cy5kb21SZWZlcmVuY2UpKSB7XG4gICAgICAgIGFuY2VzdG9ycyA9IGdldE92ZXJmbG93QW5jZXN0b3JzKGVsZW1lbnRzLmRvbVJlZmVyZW5jZSk7XG4gICAgICB9XG4gICAgICBpZiAoaXNFbGVtZW50KGVsZW1lbnRzLmZsb2F0aW5nKSkge1xuICAgICAgICBhbmNlc3RvcnMgPSBhbmNlc3RvcnMuY29uY2F0KGdldE92ZXJmbG93QW5jZXN0b3JzKGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gICAgICB9XG4gICAgICBpZiAoIWlzRWxlbWVudChlbGVtZW50cy5yZWZlcmVuY2UpICYmIGVsZW1lbnRzLnJlZmVyZW5jZSAmJiBlbGVtZW50cy5yZWZlcmVuY2UuY29udGV4dEVsZW1lbnQpIHtcbiAgICAgICAgYW5jZXN0b3JzID0gYW5jZXN0b3JzLmNvbmNhdChnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50cy5yZWZlcmVuY2UuY29udGV4dEVsZW1lbnQpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZ25vcmUgdGhlIHZpc3VhbCB2aWV3cG9ydCBmb3Igc2Nyb2xsaW5nIGRpc21pc3NhbCAoYWxsb3cgcGluY2gtem9vbSlcbiAgICBhbmNlc3RvcnMgPSBhbmNlc3RvcnMuZmlsdGVyKGFuY2VzdG9yID0+IHtcbiAgICAgIHZhciBfZG9jJGRlZmF1bHRWaWV3O1xuICAgICAgcmV0dXJuIGFuY2VzdG9yICE9PSAoKF9kb2MkZGVmYXVsdFZpZXcgPSBkb2MuZGVmYXVsdFZpZXcpID09IG51bGwgPyB2b2lkIDAgOiBfZG9jJGRlZmF1bHRWaWV3LnZpc3VhbFZpZXdwb3J0KTtcbiAgICB9KTtcbiAgICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgICBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbCwge1xuICAgICAgICBwYXNzaXZlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZXNjYXBlS2V5ICYmIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXNjYXBlS2V5Q2FwdHVyZSA/IGNsb3NlT25Fc2NhcGVLZXlEb3duQ2FwdHVyZSA6IGNsb3NlT25Fc2NhcGVLZXlEb3duLCBlc2NhcGVLZXlDYXB0dXJlKTtcbiAgICAgIG91dHNpZGVQcmVzcyAmJiBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcihvdXRzaWRlUHJlc3NFdmVudCwgb3V0c2lkZVByZXNzQ2FwdHVyZSA/IGNsb3NlT25QcmVzc091dHNpZGVDYXB0dXJlIDogY2xvc2VPblByZXNzT3V0c2lkZSwgb3V0c2lkZVByZXNzQ2FwdHVyZSk7XG4gICAgICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgICAgIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsKTtcbiAgICAgIH0pO1xuICAgIH07XG4gIH0sIFtkYXRhUmVmLCBlbGVtZW50cywgZXNjYXBlS2V5LCBvdXRzaWRlUHJlc3MsIG91dHNpZGVQcmVzc0V2ZW50LCBvcGVuLCBvbk9wZW5DaGFuZ2UsIGFuY2VzdG9yU2Nyb2xsLCBlbmFibGVkLCBlc2NhcGVLZXlCdWJibGVzLCBvdXRzaWRlUHJlc3NCdWJibGVzLCBjbG9zZU9uRXNjYXBlS2V5RG93biwgZXNjYXBlS2V5Q2FwdHVyZSwgY2xvc2VPbkVzY2FwZUtleURvd25DYXB0dXJlLCBjbG9zZU9uUHJlc3NPdXRzaWRlLCBvdXRzaWRlUHJlc3NDYXB0dXJlLCBjbG9zZU9uUHJlc3NPdXRzaWRlQ2FwdHVyZV0pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGluc2lkZVJlYWN0VHJlZVJlZi5jdXJyZW50ID0gZmFsc2U7XG4gIH0sIFtvdXRzaWRlUHJlc3MsIG91dHNpZGVQcmVzc0V2ZW50XSk7XG4gIGNvbnN0IHJlZmVyZW5jZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBvbktleURvd246IGNsb3NlT25Fc2NhcGVLZXlEb3duLFxuICAgIFtidWJibGVIYW5kbGVyS2V5c1tyZWZlcmVuY2VQcmVzc0V2ZW50XV06IGV2ZW50ID0+IHtcbiAgICAgIGlmIChyZWZlcmVuY2VQcmVzcykge1xuICAgICAgICBvbk9wZW5DaGFuZ2UoZmFsc2UsIGV2ZW50Lm5hdGl2ZUV2ZW50LCAncmVmZXJlbmNlLXByZXNzJyk7XG4gICAgICB9XG4gICAgfVxuICB9KSwgW2Nsb3NlT25Fc2NhcGVLZXlEb3duLCBvbk9wZW5DaGFuZ2UsIHJlZmVyZW5jZVByZXNzLCByZWZlcmVuY2VQcmVzc0V2ZW50XSk7XG4gIGNvbnN0IGZsb2F0aW5nID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIG9uS2V5RG93bjogY2xvc2VPbkVzY2FwZUtleURvd24sXG4gICAgb25Nb3VzZURvd24oKSB7XG4gICAgICBlbmRlZE9yU3RhcnRlZEluc2lkZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9LFxuICAgIG9uTW91c2VVcCgpIHtcbiAgICAgIGVuZGVkT3JTdGFydGVkSW5zaWRlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgIH0sXG4gICAgW2NhcHR1cmVIYW5kbGVyS2V5c1tvdXRzaWRlUHJlc3NFdmVudF1dOiAoKSA9PiB7XG4gICAgICBpbnNpZGVSZWFjdFRyZWVSZWYuY3VycmVudCA9IHRydWU7XG4gICAgfVxuICB9KSwgW2Nsb3NlT25Fc2NhcGVLZXlEb3duLCBvdXRzaWRlUHJlc3NFdmVudF0pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiBlbmFibGVkID8ge1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZ1xuICB9IDoge30sIFtlbmFibGVkLCByZWZlcmVuY2UsIGZsb2F0aW5nXSk7XG59XG5cbmZ1bmN0aW9uIHVzZUZsb2F0aW5nUm9vdENvbnRleHQob3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgb3BlbiA9IGZhbHNlLFxuICAgIG9uT3BlbkNoYW5nZTogb25PcGVuQ2hhbmdlUHJvcCxcbiAgICBlbGVtZW50czogZWxlbWVudHNQcm9wXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBmbG9hdGluZ0lkID0gdXNlSWQoKTtcbiAgY29uc3QgZGF0YVJlZiA9IFJlYWN0LnVzZVJlZih7fSk7XG4gIGNvbnN0IFtldmVudHNdID0gUmVhY3QudXNlU3RhdGUoKCkgPT4gY3JlYXRlUHViU3ViKCkpO1xuICBjb25zdCBuZXN0ZWQgPSB1c2VGbG9hdGluZ1BhcmVudE5vZGVJZCgpICE9IG51bGw7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICBjb25zdCBvcHRpb25Eb21SZWZlcmVuY2UgPSBlbGVtZW50c1Byb3AucmVmZXJlbmNlO1xuICAgIGlmIChvcHRpb25Eb21SZWZlcmVuY2UgJiYgIWlzRWxlbWVudChvcHRpb25Eb21SZWZlcmVuY2UpKSB7XG4gICAgICBlcnJvcignQ2Fubm90IHBhc3MgYSB2aXJ0dWFsIGVsZW1lbnQgdG8gdGhlIGBlbGVtZW50cy5yZWZlcmVuY2VgIG9wdGlvbiwnLCAnYXMgaXQgbXVzdCBiZSBhIHJlYWwgRE9NIGVsZW1lbnQuIFVzZSBgcmVmcy5zZXRQb3NpdGlvblJlZmVyZW5jZSgpYCcsICdpbnN0ZWFkLicpO1xuICAgIH1cbiAgfVxuICBjb25zdCBbcG9zaXRpb25SZWZlcmVuY2UsIHNldFBvc2l0aW9uUmVmZXJlbmNlXSA9IFJlYWN0LnVzZVN0YXRlKGVsZW1lbnRzUHJvcC5yZWZlcmVuY2UpO1xuICBjb25zdCBvbk9wZW5DaGFuZ2UgPSB1c2VFZmZlY3RFdmVudCgob3BlbiwgZXZlbnQsIHJlYXNvbikgPT4ge1xuICAgIGRhdGFSZWYuY3VycmVudC5vcGVuRXZlbnQgPSBvcGVuID8gZXZlbnQgOiB1bmRlZmluZWQ7XG4gICAgZXZlbnRzLmVtaXQoJ29wZW5jaGFuZ2UnLCB7XG4gICAgICBvcGVuLFxuICAgICAgZXZlbnQsXG4gICAgICByZWFzb24sXG4gICAgICBuZXN0ZWRcbiAgICB9KTtcbiAgICBvbk9wZW5DaGFuZ2VQcm9wID09IG51bGwgfHwgb25PcGVuQ2hhbmdlUHJvcChvcGVuLCBldmVudCwgcmVhc29uKTtcbiAgfSk7XG4gIGNvbnN0IHJlZnMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgc2V0UG9zaXRpb25SZWZlcmVuY2VcbiAgfSksIFtdKTtcbiAgY29uc3QgZWxlbWVudHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgcmVmZXJlbmNlOiBwb3NpdGlvblJlZmVyZW5jZSB8fCBlbGVtZW50c1Byb3AucmVmZXJlbmNlIHx8IG51bGwsXG4gICAgZmxvYXRpbmc6IGVsZW1lbnRzUHJvcC5mbG9hdGluZyB8fCBudWxsLFxuICAgIGRvbVJlZmVyZW5jZTogZWxlbWVudHNQcm9wLnJlZmVyZW5jZVxuICB9KSwgW3Bvc2l0aW9uUmVmZXJlbmNlLCBlbGVtZW50c1Byb3AucmVmZXJlbmNlLCBlbGVtZW50c1Byb3AuZmxvYXRpbmddKTtcbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBkYXRhUmVmLFxuICAgIG9wZW4sXG4gICAgb25PcGVuQ2hhbmdlLFxuICAgIGVsZW1lbnRzLFxuICAgIGV2ZW50cyxcbiAgICBmbG9hdGluZ0lkLFxuICAgIHJlZnNcbiAgfSksIFtvcGVuLCBvbk9wZW5DaGFuZ2UsIGVsZW1lbnRzLCBldmVudHMsIGZsb2F0aW5nSWQsIHJlZnNdKTtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGEgZmxvYXRpbmcgZWxlbWVudCBhbmQgY29udGV4dCB0byBhZGQgaW50ZXJhY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3VzZUZsb2F0aW5nXG4gKi9cbmZ1bmN0aW9uIHVzZUZsb2F0aW5nKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgbm9kZUlkXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpbnRlcm5hbFJvb3RDb250ZXh0ID0gdXNlRmxvYXRpbmdSb290Q29udGV4dCh7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBlbGVtZW50czoge1xuICAgICAgcmVmZXJlbmNlOiBudWxsLFxuICAgICAgZmxvYXRpbmc6IG51bGwsXG4gICAgICAuLi5vcHRpb25zLmVsZW1lbnRzXG4gICAgfVxuICB9KTtcbiAgY29uc3Qgcm9vdENvbnRleHQgPSBvcHRpb25zLnJvb3RDb250ZXh0IHx8IGludGVybmFsUm9vdENvbnRleHQ7XG4gIGNvbnN0IGNvbXB1dGVkRWxlbWVudHMgPSByb290Q29udGV4dC5lbGVtZW50cztcbiAgY29uc3QgW19kb21SZWZlcmVuY2UsIHNldERvbVJlZmVyZW5jZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW3Bvc2l0aW9uUmVmZXJlbmNlLCBfc2V0UG9zaXRpb25SZWZlcmVuY2VdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IG9wdGlvbkRvbVJlZmVyZW5jZSA9IGNvbXB1dGVkRWxlbWVudHMgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbXB1dGVkRWxlbWVudHMucmVmZXJlbmNlO1xuICBjb25zdCBkb21SZWZlcmVuY2UgPSBvcHRpb25Eb21SZWZlcmVuY2UgfHwgX2RvbVJlZmVyZW5jZTtcbiAgY29uc3QgZG9tUmVmZXJlbmNlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCB0cmVlID0gdXNlRmxvYXRpbmdUcmVlKCk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAoZG9tUmVmZXJlbmNlKSB7XG4gICAgICBkb21SZWZlcmVuY2VSZWYuY3VycmVudCA9IGRvbVJlZmVyZW5jZTtcbiAgICB9XG4gIH0sIFtkb21SZWZlcmVuY2VdKTtcbiAgY29uc3QgcG9zaXRpb24gPSB1c2VGbG9hdGluZyQxKHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGVsZW1lbnRzOiB7XG4gICAgICAuLi5jb21wdXRlZEVsZW1lbnRzLFxuICAgICAgLi4uKHBvc2l0aW9uUmVmZXJlbmNlICYmIHtcbiAgICAgICAgcmVmZXJlbmNlOiBwb3NpdGlvblJlZmVyZW5jZVxuICAgICAgfSlcbiAgICB9XG4gIH0pO1xuICBjb25zdCBzZXRQb3NpdGlvblJlZmVyZW5jZSA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIGNvbnN0IGNvbXB1dGVkUG9zaXRpb25SZWZlcmVuY2UgPSBpc0VsZW1lbnQobm9kZSkgPyB7XG4gICAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3Q6ICgpID0+IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICBjb250ZXh0RWxlbWVudDogbm9kZVxuICAgIH0gOiBub2RlO1xuICAgIC8vIFN0b3JlIHRoZSBwb3NpdGlvblJlZmVyZW5jZSBpbiBzdGF0ZSBpZiB0aGUgRE9NIHJlZmVyZW5jZSBpcyBzcGVjaWZpZWQgZXh0ZXJuYWxseSB2aWEgdGhlXG4gICAgLy8gYGVsZW1lbnRzLnJlZmVyZW5jZWAgb3B0aW9uLiBUaGlzIGVuc3VyZXMgdGhhdCBpdCB3b24ndCBiZSBvdmVycmlkZGVuIG9uIGZ1dHVyZSByZW5kZXJzLlxuICAgIF9zZXRQb3NpdGlvblJlZmVyZW5jZShjb21wdXRlZFBvc2l0aW9uUmVmZXJlbmNlKTtcbiAgICBwb3NpdGlvbi5yZWZzLnNldFJlZmVyZW5jZShjb21wdXRlZFBvc2l0aW9uUmVmZXJlbmNlKTtcbiAgfSwgW3Bvc2l0aW9uLnJlZnNdKTtcbiAgY29uc3Qgc2V0UmVmZXJlbmNlID0gUmVhY3QudXNlQ2FsbGJhY2sobm9kZSA9PiB7XG4gICAgaWYgKGlzRWxlbWVudChub2RlKSB8fCBub2RlID09PSBudWxsKSB7XG4gICAgICBkb21SZWZlcmVuY2VSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICBzZXREb21SZWZlcmVuY2Uobm9kZSk7XG4gICAgfVxuXG4gICAgLy8gQmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZm9yIHBhc3NpbmcgYSB2aXJ0dWFsIGVsZW1lbnQgdG8gYHJlZmVyZW5jZWBcbiAgICAvLyBhZnRlciBpdCBoYXMgc2V0IHRoZSBET00gcmVmZXJlbmNlLlxuICAgIGlmIChpc0VsZW1lbnQocG9zaXRpb24ucmVmcy5yZWZlcmVuY2UuY3VycmVudCkgfHwgcG9zaXRpb24ucmVmcy5yZWZlcmVuY2UuY3VycmVudCA9PT0gbnVsbCB8fFxuICAgIC8vIERvbid0IGFsbG93IHNldHRpbmcgdmlydHVhbCBlbGVtZW50cyB1c2luZyB0aGUgb2xkIHRlY2huaXF1ZSBiYWNrIHRvXG4gICAgLy8gYG51bGxgIHRvIHN1cHBvcnQgYHBvc2l0aW9uUmVmZXJlbmNlYCArIGFuIHVuc3RhYmxlIGByZWZlcmVuY2VgXG4gICAgLy8gY2FsbGJhY2sgcmVmLlxuICAgIG5vZGUgIT09IG51bGwgJiYgIWlzRWxlbWVudChub2RlKSkge1xuICAgICAgcG9zaXRpb24ucmVmcy5zZXRSZWZlcmVuY2Uobm9kZSk7XG4gICAgfVxuICB9LCBbcG9zaXRpb24ucmVmc10pO1xuICBjb25zdCByZWZzID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIC4uLnBvc2l0aW9uLnJlZnMsXG4gICAgc2V0UmVmZXJlbmNlLFxuICAgIHNldFBvc2l0aW9uUmVmZXJlbmNlLFxuICAgIGRvbVJlZmVyZW5jZTogZG9tUmVmZXJlbmNlUmVmXG4gIH0pLCBbcG9zaXRpb24ucmVmcywgc2V0UmVmZXJlbmNlLCBzZXRQb3NpdGlvblJlZmVyZW5jZV0pO1xuICBjb25zdCBlbGVtZW50cyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICAuLi5wb3NpdGlvbi5lbGVtZW50cyxcbiAgICBkb21SZWZlcmVuY2U6IGRvbVJlZmVyZW5jZVxuICB9KSwgW3Bvc2l0aW9uLmVsZW1lbnRzLCBkb21SZWZlcmVuY2VdKTtcbiAgY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICAuLi5wb3NpdGlvbixcbiAgICAuLi5yb290Q29udGV4dCxcbiAgICByZWZzLFxuICAgIGVsZW1lbnRzLFxuICAgIG5vZGVJZFxuICB9KSwgW3Bvc2l0aW9uLCByZWZzLCBlbGVtZW50cywgbm9kZUlkLCByb290Q29udGV4dF0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgcm9vdENvbnRleHQuZGF0YVJlZi5jdXJyZW50LmZsb2F0aW5nQ29udGV4dCA9IGNvbnRleHQ7XG4gICAgY29uc3Qgbm9kZSA9IHRyZWUgPT0gbnVsbCA/IHZvaWQgMCA6IHRyZWUubm9kZXNSZWYuY3VycmVudC5maW5kKG5vZGUgPT4gbm9kZS5pZCA9PT0gbm9kZUlkKTtcbiAgICBpZiAobm9kZSkge1xuICAgICAgbm9kZS5jb250ZXh0ID0gY29udGV4dDtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIC4uLnBvc2l0aW9uLFxuICAgIGNvbnRleHQsXG4gICAgcmVmcyxcbiAgICBlbGVtZW50c1xuICB9KSwgW3Bvc2l0aW9uLCByZWZzLCBlbGVtZW50cywgY29udGV4dF0pO1xufVxuXG4vKipcbiAqIE9wZW5zIHRoZSBmbG9hdGluZyBlbGVtZW50IHdoaWxlIHRoZSByZWZlcmVuY2UgZWxlbWVudCBoYXMgZm9jdXMsIGxpa2UgQ1NTXG4gKiBgOmZvY3VzYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VGb2N1c1xuICovXG5mdW5jdGlvbiB1c2VGb2N1cyhjb250ZXh0LCBwcm9wcykge1xuICBpZiAocHJvcHMgPT09IHZvaWQgMCkge1xuICAgIHByb3BzID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIG9wZW4sXG4gICAgb25PcGVuQ2hhbmdlLFxuICAgIGV2ZW50cyxcbiAgICBkYXRhUmVmLFxuICAgIGVsZW1lbnRzXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgZW5hYmxlZCA9IHRydWUsXG4gICAgdmlzaWJsZU9ubHkgPSB0cnVlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgYmxvY2tGb2N1c1JlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHRpbWVvdXRSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgY29uc3Qga2V5Ym9hcmRNb2RhbGl0eVJlZiA9IFJlYWN0LnVzZVJlZih0cnVlKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudHMuZG9tUmVmZXJlbmNlKTtcblxuICAgIC8vIElmIHRoZSByZWZlcmVuY2Ugd2FzIGZvY3VzZWQgYW5kIHRoZSB1c2VyIGxlZnQgdGhlIHRhYi93aW5kb3csIGFuZCB0aGVcbiAgICAvLyBmbG9hdGluZyBlbGVtZW50IHdhcyBub3Qgb3BlbiwgdGhlIGZvY3VzIHNob3VsZCBiZSBibG9ja2VkIHdoZW4gdGhleVxuICAgIC8vIHJldHVybiB0byB0aGUgdGFiL3dpbmRvdy5cbiAgICBmdW5jdGlvbiBvbkJsdXIoKSB7XG4gICAgICBpZiAoIW9wZW4gJiYgaXNIVE1MRWxlbWVudChlbGVtZW50cy5kb21SZWZlcmVuY2UpICYmIGVsZW1lbnRzLmRvbVJlZmVyZW5jZSA9PT0gYWN0aXZlRWxlbWVudChnZXREb2N1bWVudChlbGVtZW50cy5kb21SZWZlcmVuY2UpKSkge1xuICAgICAgICBibG9ja0ZvY3VzUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBvbktleURvd24oKSB7XG4gICAgICBrZXlib2FyZE1vZGFsaXR5UmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgIH1cbiAgICB3aW4uYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIG9uQmx1cik7XG4gICAgd2luLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbktleURvd24sIHRydWUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW4ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmx1cicsIG9uQmx1cik7XG4gICAgICB3aW4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93biwgdHJ1ZSk7XG4gICAgfTtcbiAgfSwgW2VsZW1lbnRzLmRvbVJlZmVyZW5jZSwgb3BlbiwgZW5hYmxlZF0pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZW5hYmxlZCkgcmV0dXJuO1xuICAgIGZ1bmN0aW9uIG9uT3BlbkNoYW5nZShfcmVmKSB7XG4gICAgICBsZXQge1xuICAgICAgICByZWFzb25cbiAgICAgIH0gPSBfcmVmO1xuICAgICAgaWYgKHJlYXNvbiA9PT0gJ3JlZmVyZW5jZS1wcmVzcycgfHwgcmVhc29uID09PSAnZXNjYXBlLWtleScpIHtcbiAgICAgICAgYmxvY2tGb2N1c1JlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZXZlbnRzLm9uKCdvcGVuY2hhbmdlJywgb25PcGVuQ2hhbmdlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZXZlbnRzLm9mZignb3BlbmNoYW5nZScsIG9uT3BlbkNoYW5nZSk7XG4gICAgfTtcbiAgfSwgW2V2ZW50cywgZW5hYmxlZF0pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dFJlZi5jdXJyZW50KTtcbiAgICB9O1xuICB9LCBbXSk7XG4gIGNvbnN0IHJlZmVyZW5jZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBvblBvaW50ZXJEb3duKGV2ZW50KSB7XG4gICAgICBpZiAoaXNWaXJ0dWFsUG9pbnRlckV2ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KSkgcmV0dXJuO1xuICAgICAga2V5Ym9hcmRNb2RhbGl0eVJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgfSxcbiAgICBvbk1vdXNlTGVhdmUoKSB7XG4gICAgICBibG9ja0ZvY3VzUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9LFxuICAgIG9uRm9jdXMoZXZlbnQpIHtcbiAgICAgIGlmIChibG9ja0ZvY3VzUmVmLmN1cnJlbnQpIHJldHVybjtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGdldFRhcmdldChldmVudC5uYXRpdmVFdmVudCk7XG4gICAgICBpZiAodmlzaWJsZU9ubHkgJiYgaXNFbGVtZW50KHRhcmdldCkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBNYWMgU2FmYXJpIHVucmVsaWFibHkgbWF0Y2hlcyBgOmZvY3VzLXZpc2libGVgIG9uIHRoZSByZWZlcmVuY2VcbiAgICAgICAgICAvLyBpZiBmb2N1cyB3YXMgb3V0c2lkZSB0aGUgcGFnZSBpbml0aWFsbHkgLSB1c2UgdGhlIGZhbGxiYWNrXG4gICAgICAgICAgLy8gaW5zdGVhZC5cbiAgICAgICAgICBpZiAoaXNTYWZhcmkoKSAmJiBpc01hYygpKSB0aHJvdyBFcnJvcigpO1xuICAgICAgICAgIGlmICghdGFyZ2V0Lm1hdGNoZXMoJzpmb2N1cy12aXNpYmxlJykpIHJldHVybjtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIE9sZCBicm93c2VycyB3aWxsIHRocm93IGFuIGVycm9yIHdoZW4gdXNpbmcgYDpmb2N1cy12aXNpYmxlYC5cbiAgICAgICAgICBpZiAoIWtleWJvYXJkTW9kYWxpdHlSZWYuY3VycmVudCAmJiAhaXNUeXBlYWJsZUVsZW1lbnQodGFyZ2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgb25PcGVuQ2hhbmdlKHRydWUsIGV2ZW50Lm5hdGl2ZUV2ZW50LCAnZm9jdXMnKTtcbiAgICB9LFxuICAgIG9uQmx1cihldmVudCkge1xuICAgICAgYmxvY2tGb2N1c1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0gZXZlbnQucmVsYXRlZFRhcmdldDtcbiAgICAgIGNvbnN0IG5hdGl2ZUV2ZW50ID0gZXZlbnQubmF0aXZlRXZlbnQ7XG5cbiAgICAgIC8vIEhpdCB0aGUgbm9uLW1vZGFsIGZvY3VzIG1hbmFnZW1lbnQgcG9ydGFsIGd1YXJkLiBGb2N1cyB3aWxsIGJlXG4gICAgICAvLyBtb3ZlZCBpbnRvIHRoZSBmbG9hdGluZyBlbGVtZW50IGltbWVkaWF0ZWx5IGFmdGVyLlxuICAgICAgY29uc3QgbW92ZWRUb0ZvY3VzR3VhcmQgPSBpc0VsZW1lbnQocmVsYXRlZFRhcmdldCkgJiYgcmVsYXRlZFRhcmdldC5oYXNBdHRyaWJ1dGUoY3JlYXRlQXR0cmlidXRlKCdmb2N1cy1ndWFyZCcpKSAmJiByZWxhdGVkVGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS10eXBlJykgPT09ICdvdXRzaWRlJztcblxuICAgICAgLy8gV2FpdCBmb3IgdGhlIHdpbmRvdyBibHVyIGxpc3RlbmVyIHRvIGZpcmUuXG4gICAgICB0aW1lb3V0UmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHZhciBfZGF0YVJlZiRjdXJyZW50JGZsb2E7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUVsID0gYWN0aXZlRWxlbWVudChlbGVtZW50cy5kb21SZWZlcmVuY2UgPyBlbGVtZW50cy5kb21SZWZlcmVuY2Uub3duZXJEb2N1bWVudCA6IGRvY3VtZW50KTtcblxuICAgICAgICAvLyBGb2N1cyBsZWZ0IHRoZSBwYWdlLCBrZWVwIGl0IG9wZW4uXG4gICAgICAgIGlmICghcmVsYXRlZFRhcmdldCAmJiBhY3RpdmVFbCA9PT0gZWxlbWVudHMuZG9tUmVmZXJlbmNlKSByZXR1cm47XG5cbiAgICAgICAgLy8gV2hlbiBmb2N1c2luZyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQgKGUuZy4gcmVndWxhciBjbGljayksIHRoZW5cbiAgICAgICAgLy8gY2xpY2tpbmcgaW50byB0aGUgZmxvYXRpbmcgZWxlbWVudCwgcHJldmVudCBpdCBmcm9tIGhpZGluZy5cbiAgICAgICAgLy8gTm90ZTogaXQgbXVzdCBiZSBmb2N1c2FibGUsIGUuZy4gYHRhYmluZGV4PVwiLTFcImAuXG4gICAgICAgIC8vIFdlIGNhbiBub3QgcmVseSBvbiByZWxhdGVkVGFyZ2V0IHRvIHBvaW50IHRvIHRoZSBjb3JyZWN0IGVsZW1lbnRcbiAgICAgICAgLy8gYXMgaXQgd2lsbCBvbmx5IHBvaW50IHRvIHRoZSBzaGFkb3cgaG9zdCBvZiB0aGUgbmV3bHkgZm9jdXNlZCBlbGVtZW50XG4gICAgICAgIC8vIGFuZCBub3QgdGhlIGVsZW1lbnQgdGhhdCBhY3R1YWxseSBoYXMgcmVjZWl2ZWQgZm9jdXMgaWYgaXQgaXMgbG9jYXRlZFxuICAgICAgICAvLyBpbnNpZGUgYSBzaGFkb3cgcm9vdC5cbiAgICAgICAgaWYgKGNvbnRhaW5zKChfZGF0YVJlZiRjdXJyZW50JGZsb2EgPSBkYXRhUmVmLmN1cnJlbnQuZmxvYXRpbmdDb250ZXh0KSA9PSBudWxsID8gdm9pZCAwIDogX2RhdGFSZWYkY3VycmVudCRmbG9hLnJlZnMuZmxvYXRpbmcuY3VycmVudCwgYWN0aXZlRWwpIHx8IGNvbnRhaW5zKGVsZW1lbnRzLmRvbVJlZmVyZW5jZSwgYWN0aXZlRWwpIHx8IG1vdmVkVG9Gb2N1c0d1YXJkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIG9uT3BlbkNoYW5nZShmYWxzZSwgbmF0aXZlRXZlbnQsICdmb2N1cycpO1xuICAgICAgfSk7XG4gICAgfVxuICB9KSwgW2RhdGFSZWYsIGVsZW1lbnRzLmRvbVJlZmVyZW5jZSwgb25PcGVuQ2hhbmdlLCB2aXNpYmxlT25seV0pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiBlbmFibGVkID8ge1xuICAgIHJlZmVyZW5jZVxuICB9IDoge30sIFtlbmFibGVkLCByZWZlcmVuY2VdKTtcbn1cblxuY29uc3QgQUNUSVZFX0tFWSA9ICdhY3RpdmUnO1xuY29uc3QgU0VMRUNURURfS0VZID0gJ3NlbGVjdGVkJztcbmZ1bmN0aW9uIG1lcmdlUHJvcHModXNlclByb3BzLCBwcm9wc0xpc3QsIGVsZW1lbnRLZXkpIHtcbiAgY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuICBjb25zdCBpc0l0ZW0gPSBlbGVtZW50S2V5ID09PSAnaXRlbSc7XG4gIGxldCBkb21Vc2VyUHJvcHMgPSB1c2VyUHJvcHM7XG4gIGlmIChpc0l0ZW0gJiYgdXNlclByb3BzKSB7XG4gICAgY29uc3Qge1xuICAgICAgW0FDVElWRV9LRVldOiBfLFxuICAgICAgW1NFTEVDVEVEX0tFWV06IF9fLFxuICAgICAgLi4udmFsaWRQcm9wc1xuICAgIH0gPSB1c2VyUHJvcHM7XG4gICAgZG9tVXNlclByb3BzID0gdmFsaWRQcm9wcztcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLihlbGVtZW50S2V5ID09PSAnZmxvYXRpbmcnICYmIHtcbiAgICAgIHRhYkluZGV4OiAtMVxuICAgIH0pLFxuICAgIC4uLmRvbVVzZXJQcm9wcyxcbiAgICAuLi5wcm9wc0xpc3QubWFwKHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IHByb3BzT3JHZXRQcm9wcyA9IHZhbHVlID8gdmFsdWVbZWxlbWVudEtleV0gOiBudWxsO1xuICAgICAgaWYgKHR5cGVvZiBwcm9wc09yR2V0UHJvcHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHVzZXJQcm9wcyA/IHByb3BzT3JHZXRQcm9wcyh1c2VyUHJvcHMpIDogbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9wc09yR2V0UHJvcHM7XG4gICAgfSkuY29uY2F0KHVzZXJQcm9wcykucmVkdWNlKChhY2MsIHByb3BzKSA9PiB7XG4gICAgICBpZiAoIXByb3BzKSB7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9XG4gICAgICBPYmplY3QuZW50cmllcyhwcm9wcykuZm9yRWFjaChfcmVmID0+IHtcbiAgICAgICAgbGV0IFtrZXksIHZhbHVlXSA9IF9yZWY7XG4gICAgICAgIGlmIChpc0l0ZW0gJiYgW0FDVElWRV9LRVksIFNFTEVDVEVEX0tFWV0uaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5LmluZGV4T2YoJ29uJykgPT09IDApIHtcbiAgICAgICAgICBpZiAoIW1hcC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgbWFwLnNldChrZXksIFtdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdmFyIF9tYXAkZ2V0O1xuICAgICAgICAgICAgKF9tYXAkZ2V0ID0gbWFwLmdldChrZXkpKSA9PSBudWxsIHx8IF9tYXAkZ2V0LnB1c2godmFsdWUpO1xuICAgICAgICAgICAgYWNjW2tleV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIHZhciBfbWFwJGdldDI7XG4gICAgICAgICAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICAgICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIChfbWFwJGdldDIgPSBtYXAuZ2V0KGtleSkpID09IG51bGwgPyB2b2lkIDAgOiBfbWFwJGdldDIubWFwKGZuID0+IGZuKC4uLmFyZ3MpKS5maW5kKHZhbCA9PiB2YWwgIT09IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhY2Nba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pXG4gIH07XG59XG4vKipcbiAqIE1lcmdlcyBhbiBhcnJheSBvZiBpbnRlcmFjdGlvbiBob29rcycgcHJvcHMgaW50byBwcm9wIGdldHRlcnMsIGFsbG93aW5nXG4gKiBldmVudCBoYW5kbGVyIGZ1bmN0aW9ucyB0byBiZSBjb21wb3NlZCB0b2dldGhlciB3aXRob3V0IG92ZXJ3cml0aW5nIG9uZVxuICogYW5vdGhlci5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VJbnRlcmFjdGlvbnNcbiAqL1xuZnVuY3Rpb24gdXNlSW50ZXJhY3Rpb25zKHByb3BzTGlzdCkge1xuICBpZiAocHJvcHNMaXN0ID09PSB2b2lkIDApIHtcbiAgICBwcm9wc0xpc3QgPSBbXTtcbiAgfVxuICBjb25zdCByZWZlcmVuY2VEZXBzID0gcHJvcHNMaXN0Lm1hcChrZXkgPT4ga2V5ID09IG51bGwgPyB2b2lkIDAgOiBrZXkucmVmZXJlbmNlKTtcbiAgY29uc3QgZmxvYXRpbmdEZXBzID0gcHJvcHNMaXN0Lm1hcChrZXkgPT4ga2V5ID09IG51bGwgPyB2b2lkIDAgOiBrZXkuZmxvYXRpbmcpO1xuICBjb25zdCBpdGVtRGVwcyA9IHByb3BzTGlzdC5tYXAoa2V5ID0+IGtleSA9PSBudWxsID8gdm9pZCAwIDoga2V5Lml0ZW0pO1xuICBjb25zdCBnZXRSZWZlcmVuY2VQcm9wcyA9IFJlYWN0LnVzZUNhbGxiYWNrKHVzZXJQcm9wcyA9PiBtZXJnZVByb3BzKHVzZXJQcm9wcywgcHJvcHNMaXN0LCAncmVmZXJlbmNlJyksXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgcmVmZXJlbmNlRGVwcyk7XG4gIGNvbnN0IGdldEZsb2F0aW5nUHJvcHMgPSBSZWFjdC51c2VDYWxsYmFjayh1c2VyUHJvcHMgPT4gbWVyZ2VQcm9wcyh1c2VyUHJvcHMsIHByb3BzTGlzdCwgJ2Zsb2F0aW5nJyksXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgZmxvYXRpbmdEZXBzKTtcbiAgY29uc3QgZ2V0SXRlbVByb3BzID0gUmVhY3QudXNlQ2FsbGJhY2sodXNlclByb3BzID0+IG1lcmdlUHJvcHModXNlclByb3BzLCBwcm9wc0xpc3QsICdpdGVtJyksXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgaXRlbURlcHMpO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGdldFJlZmVyZW5jZVByb3BzLFxuICAgIGdldEZsb2F0aW5nUHJvcHMsXG4gICAgZ2V0SXRlbVByb3BzXG4gIH0pLCBbZ2V0UmVmZXJlbmNlUHJvcHMsIGdldEZsb2F0aW5nUHJvcHMsIGdldEl0ZW1Qcm9wc10pO1xufVxuXG5sZXQgaXNQcmV2ZW50U2Nyb2xsU3VwcG9ydGVkID0gZmFsc2U7XG5mdW5jdGlvbiBkb1N3aXRjaChvcmllbnRhdGlvbiwgdmVydGljYWwsIGhvcml6b250YWwpIHtcbiAgc3dpdGNoIChvcmllbnRhdGlvbikge1xuICAgIGNhc2UgJ3ZlcnRpY2FsJzpcbiAgICAgIHJldHVybiB2ZXJ0aWNhbDtcbiAgICBjYXNlICdob3Jpem9udGFsJzpcbiAgICAgIHJldHVybiBob3Jpem9udGFsO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdmVydGljYWwgfHwgaG9yaXpvbnRhbDtcbiAgfVxufVxuZnVuY3Rpb24gaXNNYWluT3JpZW50YXRpb25LZXkoa2V5LCBvcmllbnRhdGlvbikge1xuICBjb25zdCB2ZXJ0aWNhbCA9IGtleSA9PT0gQVJST1dfVVAgfHwga2V5ID09PSBBUlJPV19ET1dOO1xuICBjb25zdCBob3Jpem9udGFsID0ga2V5ID09PSBBUlJPV19MRUZUIHx8IGtleSA9PT0gQVJST1dfUklHSFQ7XG4gIHJldHVybiBkb1N3aXRjaChvcmllbnRhdGlvbiwgdmVydGljYWwsIGhvcml6b250YWwpO1xufVxuZnVuY3Rpb24gaXNNYWluT3JpZW50YXRpb25Ub0VuZEtleShrZXksIG9yaWVudGF0aW9uLCBydGwpIHtcbiAgY29uc3QgdmVydGljYWwgPSBrZXkgPT09IEFSUk9XX0RPV047XG4gIGNvbnN0IGhvcml6b250YWwgPSBydGwgPyBrZXkgPT09IEFSUk9XX0xFRlQgOiBrZXkgPT09IEFSUk9XX1JJR0hUO1xuICByZXR1cm4gZG9Td2l0Y2gob3JpZW50YXRpb24sIHZlcnRpY2FsLCBob3Jpem9udGFsKSB8fCBrZXkgPT09ICdFbnRlcicgfHwga2V5ID09PSAnICcgfHwga2V5ID09PSAnJztcbn1cbmZ1bmN0aW9uIGlzQ3Jvc3NPcmllbnRhdGlvbk9wZW5LZXkoa2V5LCBvcmllbnRhdGlvbiwgcnRsKSB7XG4gIGNvbnN0IHZlcnRpY2FsID0gcnRsID8ga2V5ID09PSBBUlJPV19MRUZUIDoga2V5ID09PSBBUlJPV19SSUdIVDtcbiAgY29uc3QgaG9yaXpvbnRhbCA9IGtleSA9PT0gQVJST1dfRE9XTjtcbiAgcmV0dXJuIGRvU3dpdGNoKG9yaWVudGF0aW9uLCB2ZXJ0aWNhbCwgaG9yaXpvbnRhbCk7XG59XG5mdW5jdGlvbiBpc0Nyb3NzT3JpZW50YXRpb25DbG9zZUtleShrZXksIG9yaWVudGF0aW9uLCBydGwpIHtcbiAgY29uc3QgdmVydGljYWwgPSBydGwgPyBrZXkgPT09IEFSUk9XX1JJR0hUIDoga2V5ID09PSBBUlJPV19MRUZUO1xuICBjb25zdCBob3Jpem9udGFsID0ga2V5ID09PSBBUlJPV19VUDtcbiAgcmV0dXJuIGRvU3dpdGNoKG9yaWVudGF0aW9uLCB2ZXJ0aWNhbCwgaG9yaXpvbnRhbCk7XG59XG4vKipcbiAqIEFkZHMgYXJyb3cga2V5LWJhc2VkIG5hdmlnYXRpb24gb2YgYSBsaXN0IG9mIGl0ZW1zLCBlaXRoZXIgdXNpbmcgcmVhbCBET01cbiAqIGZvY3VzIG9yIHZpcnR1YWwgZm9jdXMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdXNlTGlzdE5hdmlnYXRpb25cbiAqL1xuZnVuY3Rpb24gdXNlTGlzdE5hdmlnYXRpb24oY29udGV4dCwgcHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIG9wZW4sXG4gICAgb25PcGVuQ2hhbmdlLFxuICAgIGVsZW1lbnRzXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgbGlzdFJlZixcbiAgICBhY3RpdmVJbmRleCxcbiAgICBvbk5hdmlnYXRlOiB1bnN0YWJsZV9vbk5hdmlnYXRlID0gKCkgPT4ge30sXG4gICAgZW5hYmxlZCA9IHRydWUsXG4gICAgc2VsZWN0ZWRJbmRleCA9IG51bGwsXG4gICAgYWxsb3dFc2NhcGUgPSBmYWxzZSxcbiAgICBsb29wID0gZmFsc2UsXG4gICAgbmVzdGVkID0gZmFsc2UsXG4gICAgcnRsID0gZmFsc2UsXG4gICAgdmlydHVhbCA9IGZhbHNlLFxuICAgIGZvY3VzSXRlbU9uT3BlbiA9ICdhdXRvJyxcbiAgICBmb2N1c0l0ZW1PbkhvdmVyID0gdHJ1ZSxcbiAgICBvcGVuT25BcnJvd0tleURvd24gPSB0cnVlLFxuICAgIGRpc2FibGVkSW5kaWNlcyA9IHVuZGVmaW5lZCxcbiAgICBvcmllbnRhdGlvbiA9ICd2ZXJ0aWNhbCcsXG4gICAgY29scyA9IDEsXG4gICAgc2Nyb2xsSXRlbUludG9WaWV3ID0gdHJ1ZSxcbiAgICB2aXJ0dWFsSXRlbVJlZixcbiAgICBpdGVtU2l6ZXMsXG4gICAgZGVuc2UgPSBmYWxzZVxuICB9ID0gcHJvcHM7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICBpZiAoYWxsb3dFc2NhcGUpIHtcbiAgICAgIGlmICghbG9vcCkge1xuICAgICAgICB3YXJuKCdgdXNlTGlzdE5hdmlnYXRpb25gIGxvb3BpbmcgbXVzdCBiZSBlbmFibGVkIHRvIGFsbG93IGVzY2FwaW5nLicpO1xuICAgICAgfVxuICAgICAgaWYgKCF2aXJ0dWFsKSB7XG4gICAgICAgIHdhcm4oJ2B1c2VMaXN0TmF2aWdhdGlvbmAgbXVzdCBiZSB2aXJ0dWFsIHRvIGFsbG93IGVzY2FwaW5nLicpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgJiYgY29scyA+IDEpIHtcbiAgICAgIHdhcm4oJ0luIGdyaWQgbGlzdCBuYXZpZ2F0aW9uIG1vZGUgKGBjb2xzYCA+IDEpLCB0aGUgYG9yaWVudGF0aW9uYCBzaG91bGQnLCAnYmUgZWl0aGVyIFwiaG9yaXpvbnRhbFwiIG9yIFwiYm90aFwiLicpO1xuICAgIH1cbiAgfVxuICBjb25zdCBwYXJlbnRJZCA9IHVzZUZsb2F0aW5nUGFyZW50Tm9kZUlkKCk7XG4gIGNvbnN0IHRyZWUgPSB1c2VGbG9hdGluZ1RyZWUoKTtcbiAgY29uc3Qgb25OYXZpZ2F0ZSA9IHVzZUVmZmVjdEV2ZW50KHVuc3RhYmxlX29uTmF2aWdhdGUpO1xuICBjb25zdCBmb2N1c0l0ZW1Pbk9wZW5SZWYgPSBSZWFjdC51c2VSZWYoZm9jdXNJdGVtT25PcGVuKTtcbiAgY29uc3QgaW5kZXhSZWYgPSBSZWFjdC51c2VSZWYoc2VsZWN0ZWRJbmRleCAhPSBudWxsID8gc2VsZWN0ZWRJbmRleCA6IC0xKTtcbiAgY29uc3Qga2V5UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBpc1BvaW50ZXJNb2RhbGl0eVJlZiA9IFJlYWN0LnVzZVJlZih0cnVlKTtcbiAgY29uc3QgcHJldmlvdXNPbk5hdmlnYXRlUmVmID0gUmVhY3QudXNlUmVmKG9uTmF2aWdhdGUpO1xuICBjb25zdCBwcmV2aW91c01vdW50ZWRSZWYgPSBSZWFjdC51c2VSZWYoISFlbGVtZW50cy5mbG9hdGluZyk7XG4gIGNvbnN0IHByZXZpb3VzT3BlblJlZiA9IFJlYWN0LnVzZVJlZihvcGVuKTtcbiAgY29uc3QgZm9yY2VTeW5jRm9jdXMgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBjb25zdCBmb3JjZVNjcm9sbEludG9WaWV3UmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgZGlzYWJsZWRJbmRpY2VzUmVmID0gdXNlTGF0ZXN0UmVmKGRpc2FibGVkSW5kaWNlcyk7XG4gIGNvbnN0IGxhdGVzdE9wZW5SZWYgPSB1c2VMYXRlc3RSZWYob3Blbik7XG4gIGNvbnN0IHNjcm9sbEl0ZW1JbnRvVmlld1JlZiA9IHVzZUxhdGVzdFJlZihzY3JvbGxJdGVtSW50b1ZpZXcpO1xuICBjb25zdCBmbG9hdGluZ1JlZiA9IHVzZUxhdGVzdFJlZihlbGVtZW50cy5mbG9hdGluZyk7XG4gIGNvbnN0IHNlbGVjdGVkSW5kZXhSZWYgPSB1c2VMYXRlc3RSZWYoc2VsZWN0ZWRJbmRleCk7XG4gIGNvbnN0IFthY3RpdmVJZCwgc2V0QWN0aXZlSWRdID0gUmVhY3QudXNlU3RhdGUoKTtcbiAgY29uc3QgW3ZpcnR1YWxJZCwgc2V0VmlydHVhbElkXSA9IFJlYWN0LnVzZVN0YXRlKCk7XG4gIGNvbnN0IGZvY3VzSXRlbSA9IHVzZUVmZmVjdEV2ZW50KGZ1bmN0aW9uIChsaXN0UmVmLCBpbmRleFJlZiwgZm9yY2VTY3JvbGxJbnRvVmlldykge1xuICAgIGlmIChmb3JjZVNjcm9sbEludG9WaWV3ID09PSB2b2lkIDApIHtcbiAgICAgIGZvcmNlU2Nyb2xsSW50b1ZpZXcgPSBmYWxzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcnVuRm9jdXMoaXRlbSkge1xuICAgICAgaWYgKHZpcnR1YWwpIHtcbiAgICAgICAgc2V0QWN0aXZlSWQoaXRlbS5pZCk7XG4gICAgICAgIHRyZWUgPT0gbnVsbCB8fCB0cmVlLmV2ZW50cy5lbWl0KCd2aXJ0dWFsZm9jdXMnLCBpdGVtKTtcbiAgICAgICAgaWYgKHZpcnR1YWxJdGVtUmVmKSB7XG4gICAgICAgICAgdmlydHVhbEl0ZW1SZWYuY3VycmVudCA9IGl0ZW07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVucXVldWVGb2N1cyhpdGVtLCB7XG4gICAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZSxcbiAgICAgICAgICAvLyBNYWMgU2FmYXJpIGRvZXMgbm90IG1vdmUgdGhlIHZpcnR1YWwgY3Vyc29yIHVubGVzcyB0aGUgZm9jdXMgY2FsbFxuICAgICAgICAgIC8vIGlzIHN5bmMuIEhvd2V2ZXIsIGZvciB0aGUgdmVyeSBmaXJzdCBmb2N1cyBjYWxsLCB3ZSBuZWVkIHRvIHdhaXRcbiAgICAgICAgICAvLyBmb3IgdGhlIHBvc2l0aW9uIHRvIGJlIHJlYWR5IGluIG9yZGVyIHRvIHByZXZlbnQgdW53YW50ZWRcbiAgICAgICAgICAvLyBzY3JvbGxpbmcuIFRoaXMgbWVhbnMgdGhlIHZpcnR1YWwgY3Vyc29yIHdpbGwgbm90IG1vdmUgdG8gdGhlIGZpcnN0XG4gICAgICAgICAgLy8gaXRlbSB3aGVuIGZpcnN0IG9wZW5pbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQsIGJ1dCB3aWxsIG9uXG4gICAgICAgICAgLy8gc3Vic2VxdWVudCBjYWxscy4gYHByZXZlbnRTY3JvbGxgIGlzIHN1cHBvcnRlZCBpbiBtb2Rlcm4gU2FmYXJpLFxuICAgICAgICAgIC8vIHNvIHdlIGNhbiB1c2UgdGhhdCBpbnN0ZWFkLlxuICAgICAgICAgIC8vIGlPUyBTYWZhcmkgbXVzdCBiZSBhc3luYyBvciB0aGUgZmlyc3QgaXRlbSB3aWxsIG5vdCBiZSBmb2N1c2VkLlxuICAgICAgICAgIHN5bmM6IGlzTWFjKCkgJiYgaXNTYWZhcmkoKSA/IGlzUHJldmVudFNjcm9sbFN1cHBvcnRlZCB8fCBmb3JjZVN5bmNGb2N1cy5jdXJyZW50IDogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGluaXRpYWxJdGVtID0gbGlzdFJlZi5jdXJyZW50W2luZGV4UmVmLmN1cnJlbnRdO1xuICAgIGlmIChpbml0aWFsSXRlbSkge1xuICAgICAgcnVuRm9jdXMoaW5pdGlhbEl0ZW0pO1xuICAgIH1cbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgY29uc3Qgd2FpdGVkSXRlbSA9IGxpc3RSZWYuY3VycmVudFtpbmRleFJlZi5jdXJyZW50XSB8fCBpbml0aWFsSXRlbTtcbiAgICAgIGlmICghd2FpdGVkSXRlbSkgcmV0dXJuO1xuICAgICAgaWYgKCFpbml0aWFsSXRlbSkge1xuICAgICAgICBydW5Gb2N1cyh3YWl0ZWRJdGVtKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNjcm9sbEludG9WaWV3T3B0aW9ucyA9IHNjcm9sbEl0ZW1JbnRvVmlld1JlZi5jdXJyZW50O1xuICAgICAgY29uc3Qgc2hvdWxkU2Nyb2xsSW50b1ZpZXcgPSBzY3JvbGxJbnRvVmlld09wdGlvbnMgJiYgaXRlbSAmJiAoZm9yY2VTY3JvbGxJbnRvVmlldyB8fCAhaXNQb2ludGVyTW9kYWxpdHlSZWYuY3VycmVudCk7XG4gICAgICBpZiAoc2hvdWxkU2Nyb2xsSW50b1ZpZXcpIHtcbiAgICAgICAgLy8gSlNET00gZG9lc24ndCBzdXBwb3J0IGAuc2Nyb2xsSW50b1ZpZXcoKWAgYnV0IGl0J3Mgd2lkZWx5IHN1cHBvcnRlZFxuICAgICAgICAvLyBieSBhbGwgYnJvd3NlcnMuXG4gICAgICAgIHdhaXRlZEl0ZW0uc2Nyb2xsSW50b1ZpZXcgPT0gbnVsbCB8fCB3YWl0ZWRJdGVtLnNjcm9sbEludG9WaWV3KHR5cGVvZiBzY3JvbGxJbnRvVmlld09wdGlvbnMgPT09ICdib29sZWFuJyA/IHtcbiAgICAgICAgICBibG9jazogJ25lYXJlc3QnLFxuICAgICAgICAgIGlubGluZTogJ25lYXJlc3QnXG4gICAgICAgIH0gOiBzY3JvbGxJbnRvVmlld09wdGlvbnMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLmZvY3VzKHtcbiAgICAgIGdldCBwcmV2ZW50U2Nyb2xsKCkge1xuICAgICAgICBpc1ByZXZlbnRTY3JvbGxTdXBwb3J0ZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIFtdKTtcblxuICAvLyBTeW5jIGBzZWxlY3RlZEluZGV4YCB0byBiZSB0aGUgYGFjdGl2ZUluZGV4YCB1cG9uIG9wZW5pbmcgdGhlIGZsb2F0aW5nXG4gIC8vIGVsZW1lbnQuIEFsc28sIHJlc2V0IGBhY3RpdmVJbmRleGAgdXBvbiBjbG9zaW5nIHRoZSBmbG9hdGluZyBlbGVtZW50LlxuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgaWYgKG9wZW4gJiYgZWxlbWVudHMuZmxvYXRpbmcpIHtcbiAgICAgIGlmIChmb2N1c0l0ZW1Pbk9wZW5SZWYuY3VycmVudCAmJiBzZWxlY3RlZEluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgLy8gUmVnYXJkbGVzcyBvZiB0aGUgcG9pbnRlciBtb2RhbGl0eSwgd2Ugd2FudCB0byBlbnN1cmUgdGhlIHNlbGVjdGVkXG4gICAgICAgIC8vIGl0ZW0gY29tZXMgaW50byB2aWV3IHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXMgb3BlbmVkLlxuICAgICAgICBmb3JjZVNjcm9sbEludG9WaWV3UmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICBpbmRleFJlZi5jdXJyZW50ID0gc2VsZWN0ZWRJbmRleDtcbiAgICAgICAgb25OYXZpZ2F0ZShzZWxlY3RlZEluZGV4KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByZXZpb3VzTW91bnRlZFJlZi5jdXJyZW50KSB7XG4gICAgICAvLyBTaW5jZSB0aGUgdXNlciBjYW4gc3BlY2lmeSBgb25OYXZpZ2F0ZWAgY29uZGl0aW9uYWxseVxuICAgICAgLy8gKG9uTmF2aWdhdGU6IG9wZW4gPyBzZXRBY3RpdmVJbmRleCA6IHNldFNlbGVjdGVkSW5kZXgpLFxuICAgICAgLy8gd2Ugc3RvcmUgYW5kIGNhbGwgdGhlIHByZXZpb3VzIGZ1bmN0aW9uLlxuICAgICAgaW5kZXhSZWYuY3VycmVudCA9IC0xO1xuICAgICAgcHJldmlvdXNPbk5hdmlnYXRlUmVmLmN1cnJlbnQobnVsbCk7XG4gICAgfVxuICB9LCBbZW5hYmxlZCwgb3BlbiwgZWxlbWVudHMuZmxvYXRpbmcsIHNlbGVjdGVkSW5kZXgsIG9uTmF2aWdhdGVdKTtcblxuICAvLyBTeW5jIGBhY3RpdmVJbmRleGAgdG8gYmUgdGhlIGZvY3VzZWQgaXRlbSB3aGlsZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBpc1xuICAvLyBvcGVuLlxuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgaWYgKG9wZW4gJiYgZWxlbWVudHMuZmxvYXRpbmcpIHtcbiAgICAgIGlmIChhY3RpdmVJbmRleCA9PSBudWxsKSB7XG4gICAgICAgIGZvcmNlU3luY0ZvY3VzLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXhSZWYuY3VycmVudCAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVzZXQgd2hpbGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgd2FzIG9wZW4gKGUuZy4gdGhlIGxpc3QgY2hhbmdlZCkuXG4gICAgICAgIGlmIChwcmV2aW91c01vdW50ZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgIGluZGV4UmVmLmN1cnJlbnQgPSAtMTtcbiAgICAgICAgICBmb2N1c0l0ZW0obGlzdFJlZiwgaW5kZXhSZWYpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5pdGlhbCBzeW5jLlxuICAgICAgICBpZiAoKCFwcmV2aW91c09wZW5SZWYuY3VycmVudCB8fCAhcHJldmlvdXNNb3VudGVkUmVmLmN1cnJlbnQpICYmIGZvY3VzSXRlbU9uT3BlblJlZi5jdXJyZW50ICYmIChrZXlSZWYuY3VycmVudCAhPSBudWxsIHx8IGZvY3VzSXRlbU9uT3BlblJlZi5jdXJyZW50ID09PSB0cnVlICYmIGtleVJlZi5jdXJyZW50ID09IG51bGwpKSB7XG4gICAgICAgICAgbGV0IHJ1bnMgPSAwO1xuICAgICAgICAgIGNvbnN0IHdhaXRGb3JMaXN0UG9wdWxhdGVkID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGxpc3RSZWYuY3VycmVudFswXSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgIC8vIEF2b2lkIGxldHRpbmcgdGhlIGJyb3dzZXIgcGFpbnQgaWYgcG9zc2libGUgb24gdGhlIGZpcnN0IHRyeSxcbiAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIHVzZSByQUYuIERvbid0IHRyeSBtb3JlIHRoYW4gdHdpY2UsIHNpbmNlIHNvbWV0aGluZ1xuICAgICAgICAgICAgICAvLyBpcyB3cm9uZyBvdGhlcndpc2UuXG4gICAgICAgICAgICAgIGlmIChydW5zIDwgMikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjaGVkdWxlciA9IHJ1bnMgPyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgOiBxdWV1ZU1pY3JvdGFzaztcbiAgICAgICAgICAgICAgICBzY2hlZHVsZXIod2FpdEZvckxpc3RQb3B1bGF0ZWQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJ1bnMrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGluZGV4UmVmLmN1cnJlbnQgPSBrZXlSZWYuY3VycmVudCA9PSBudWxsIHx8IGlzTWFpbk9yaWVudGF0aW9uVG9FbmRLZXkoa2V5UmVmLmN1cnJlbnQsIG9yaWVudGF0aW9uLCBydGwpIHx8IG5lc3RlZCA/IGdldE1pbkluZGV4KGxpc3RSZWYsIGRpc2FibGVkSW5kaWNlc1JlZi5jdXJyZW50KSA6IGdldE1heEluZGV4KGxpc3RSZWYsIGRpc2FibGVkSW5kaWNlc1JlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAga2V5UmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgICBvbk5hdmlnYXRlKGluZGV4UmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgd2FpdEZvckxpc3RQb3B1bGF0ZWQoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghaXNJbmRleE91dE9mQm91bmRzKGxpc3RSZWYsIGFjdGl2ZUluZGV4KSkge1xuICAgICAgICBpbmRleFJlZi5jdXJyZW50ID0gYWN0aXZlSW5kZXg7XG4gICAgICAgIGZvY3VzSXRlbShsaXN0UmVmLCBpbmRleFJlZiwgZm9yY2VTY3JvbGxJbnRvVmlld1JlZi5jdXJyZW50KTtcbiAgICAgICAgZm9yY2VTY3JvbGxJbnRvVmlld1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9LCBbZW5hYmxlZCwgb3BlbiwgZWxlbWVudHMuZmxvYXRpbmcsIGFjdGl2ZUluZGV4LCBzZWxlY3RlZEluZGV4UmVmLCBuZXN0ZWQsIGxpc3RSZWYsIG9yaWVudGF0aW9uLCBydGwsIG9uTmF2aWdhdGUsIGZvY3VzSXRlbSwgZGlzYWJsZWRJbmRpY2VzUmVmXSk7XG5cbiAgLy8gRW5zdXJlIHRoZSBwYXJlbnQgZmxvYXRpbmcgZWxlbWVudCBoYXMgZm9jdXMgd2hlbiBhIG5lc3RlZCBjaGlsZCBjbG9zZXNcbiAgLy8gdG8gYWxsb3cgYXJyb3cga2V5IG5hdmlnYXRpb24gdG8gd29yayBhZnRlciB0aGUgcG9pbnRlciBsZWF2ZXMgdGhlIGNoaWxkLlxuICBpbmRleCgoKSA9PiB7XG4gICAgdmFyIF9ub2RlcyRmaW5kO1xuICAgIGlmICghZW5hYmxlZCB8fCBlbGVtZW50cy5mbG9hdGluZyB8fCAhdHJlZSB8fCB2aXJ0dWFsIHx8ICFwcmV2aW91c01vdW50ZWRSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBub2RlcyA9IHRyZWUubm9kZXNSZWYuY3VycmVudDtcbiAgICBjb25zdCBwYXJlbnQgPSAoX25vZGVzJGZpbmQgPSBub2Rlcy5maW5kKG5vZGUgPT4gbm9kZS5pZCA9PT0gcGFyZW50SWQpKSA9PSBudWxsIHx8IChfbm9kZXMkZmluZCA9IF9ub2RlcyRmaW5kLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZXMkZmluZC5lbGVtZW50cy5mbG9hdGluZztcbiAgICBjb25zdCBhY3RpdmVFbCA9IGFjdGl2ZUVsZW1lbnQoZ2V0RG9jdW1lbnQoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgICBjb25zdCB0cmVlQ29udGFpbnNBY3RpdmVFbCA9IG5vZGVzLnNvbWUobm9kZSA9PiBub2RlLmNvbnRleHQgJiYgY29udGFpbnMobm9kZS5jb250ZXh0LmVsZW1lbnRzLmZsb2F0aW5nLCBhY3RpdmVFbCkpO1xuICAgIGlmIChwYXJlbnQgJiYgIXRyZWVDb250YWluc0FjdGl2ZUVsICYmIGlzUG9pbnRlck1vZGFsaXR5UmVmLmN1cnJlbnQpIHtcbiAgICAgIHBhcmVudC5mb2N1cyh7XG4gICAgICAgIHByZXZlbnRTY3JvbGw6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2VuYWJsZWQsIGVsZW1lbnRzLmZsb2F0aW5nLCB0cmVlLCBwYXJlbnRJZCwgdmlydHVhbF0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgaWYgKCF0cmVlKSByZXR1cm47XG4gICAgaWYgKCF2aXJ0dWFsKSByZXR1cm47XG4gICAgaWYgKHBhcmVudElkKSByZXR1cm47XG4gICAgZnVuY3Rpb24gaGFuZGxlVmlydHVhbEZvY3VzKGl0ZW0pIHtcbiAgICAgIHNldFZpcnR1YWxJZChpdGVtLmlkKTtcbiAgICAgIGlmICh2aXJ0dWFsSXRlbVJlZikge1xuICAgICAgICB2aXJ0dWFsSXRlbVJlZi5jdXJyZW50ID0gaXRlbTtcbiAgICAgIH1cbiAgICB9XG4gICAgdHJlZS5ldmVudHMub24oJ3ZpcnR1YWxmb2N1cycsIGhhbmRsZVZpcnR1YWxGb2N1cyk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRyZWUuZXZlbnRzLm9mZigndmlydHVhbGZvY3VzJywgaGFuZGxlVmlydHVhbEZvY3VzKTtcbiAgICB9O1xuICB9LCBbZW5hYmxlZCwgdHJlZSwgdmlydHVhbCwgcGFyZW50SWQsIHZpcnR1YWxJdGVtUmVmXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBwcmV2aW91c09uTmF2aWdhdGVSZWYuY3VycmVudCA9IG9uTmF2aWdhdGU7XG4gICAgcHJldmlvdXNNb3VudGVkUmVmLmN1cnJlbnQgPSAhIWVsZW1lbnRzLmZsb2F0aW5nO1xuICB9KTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmICghb3Blbikge1xuICAgICAga2V5UmVmLmN1cnJlbnQgPSBudWxsO1xuICAgIH1cbiAgfSwgW29wZW5dKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIHByZXZpb3VzT3BlblJlZi5jdXJyZW50ID0gb3BlbjtcbiAgfSwgW29wZW5dKTtcbiAgY29uc3QgaGFzQWN0aXZlSW5kZXggPSBhY3RpdmVJbmRleCAhPSBudWxsO1xuICBjb25zdCBpdGVtID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgZnVuY3Rpb24gc3luY0N1cnJlbnRUYXJnZXQoY3VycmVudFRhcmdldCkge1xuICAgICAgaWYgKCFvcGVuKSByZXR1cm47XG4gICAgICBjb25zdCBpbmRleCA9IGxpc3RSZWYuY3VycmVudC5pbmRleE9mKGN1cnJlbnRUYXJnZXQpO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBvbk5hdmlnYXRlKGluZGV4KTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICBvbkZvY3VzKF9yZWYpIHtcbiAgICAgICAgbGV0IHtcbiAgICAgICAgICBjdXJyZW50VGFyZ2V0XG4gICAgICAgIH0gPSBfcmVmO1xuICAgICAgICBzeW5jQ3VycmVudFRhcmdldChjdXJyZW50VGFyZ2V0KTtcbiAgICAgIH0sXG4gICAgICBvbkNsaWNrOiBfcmVmMiA9PiB7XG4gICAgICAgIGxldCB7XG4gICAgICAgICAgY3VycmVudFRhcmdldFxuICAgICAgICB9ID0gX3JlZjI7XG4gICAgICAgIHJldHVybiBjdXJyZW50VGFyZ2V0LmZvY3VzKHtcbiAgICAgICAgICBwcmV2ZW50U2Nyb2xsOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIC8vIFNhZmFyaVxuICAgICAgLi4uKGZvY3VzSXRlbU9uSG92ZXIgJiYge1xuICAgICAgICBvbk1vdXNlTW92ZShfcmVmMykge1xuICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICBjdXJyZW50VGFyZ2V0XG4gICAgICAgICAgfSA9IF9yZWYzO1xuICAgICAgICAgIHN5bmNDdXJyZW50VGFyZ2V0KGN1cnJlbnRUYXJnZXQpO1xuICAgICAgICB9LFxuICAgICAgICBvblBvaW50ZXJMZWF2ZShfcmVmNCkge1xuICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICBwb2ludGVyVHlwZVxuICAgICAgICAgIH0gPSBfcmVmNDtcbiAgICAgICAgICBpZiAoIWlzUG9pbnRlck1vZGFsaXR5UmVmLmN1cnJlbnQgfHwgcG9pbnRlclR5cGUgPT09ICd0b3VjaCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5kZXhSZWYuY3VycmVudCA9IC0xO1xuICAgICAgICAgIGZvY3VzSXRlbShsaXN0UmVmLCBpbmRleFJlZik7XG4gICAgICAgICAgb25OYXZpZ2F0ZShudWxsKTtcbiAgICAgICAgICBpZiAoIXZpcnR1YWwpIHtcbiAgICAgICAgICAgIGVucXVldWVGb2N1cyhmbG9hdGluZ1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICAgIHByZXZlbnRTY3JvbGw6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9O1xuICAgIHJldHVybiBwcm9wcztcbiAgfSwgW29wZW4sIGZsb2F0aW5nUmVmLCBmb2N1c0l0ZW0sIGZvY3VzSXRlbU9uSG92ZXIsIGxpc3RSZWYsIG9uTmF2aWdhdGUsIHZpcnR1YWxdKTtcbiAgY29uc3QgY29tbW9uT25LZXlEb3duID0gdXNlRWZmZWN0RXZlbnQoZXZlbnQgPT4ge1xuICAgIGlzUG9pbnRlck1vZGFsaXR5UmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICBmb3JjZVN5bmNGb2N1cy5jdXJyZW50ID0gdHJ1ZTtcblxuICAgIC8vIElmIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIGFuaW1hdGluZyBvdXQsIGlnbm9yZSBuYXZpZ2F0aW9uLiBPdGhlcndpc2UsXG4gICAgLy8gdGhlIGBhY3RpdmVJbmRleGAgZ2V0cyBzZXQgdG8gMCBkZXNwaXRlIG5vdCBiZWluZyBvcGVuIHNvIHRoZSBuZXh0IHRpbWVcbiAgICAvLyB0aGUgdXNlciBBcnJvd0Rvd25zLCB0aGUgZmlyc3QgaXRlbSB3b24ndCBiZSBmb2N1c2VkLlxuICAgIGlmICghbGF0ZXN0T3BlblJlZi5jdXJyZW50ICYmIGV2ZW50LmN1cnJlbnRUYXJnZXQgPT09IGZsb2F0aW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKG5lc3RlZCAmJiBpc0Nyb3NzT3JpZW50YXRpb25DbG9zZUtleShldmVudC5rZXksIG9yaWVudGF0aW9uLCBydGwpKSB7XG4gICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlLCBldmVudC5uYXRpdmVFdmVudCwgJ2xpc3QtbmF2aWdhdGlvbicpO1xuICAgICAgaWYgKGlzSFRNTEVsZW1lbnQoZWxlbWVudHMuZG9tUmVmZXJlbmNlKSAmJiAhdmlydHVhbCkge1xuICAgICAgICBlbGVtZW50cy5kb21SZWZlcmVuY2UuZm9jdXMoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gaW5kZXhSZWYuY3VycmVudDtcbiAgICBjb25zdCBtaW5JbmRleCA9IGdldE1pbkluZGV4KGxpc3RSZWYsIGRpc2FibGVkSW5kaWNlcyk7XG4gICAgY29uc3QgbWF4SW5kZXggPSBnZXRNYXhJbmRleChsaXN0UmVmLCBkaXNhYmxlZEluZGljZXMpO1xuICAgIGlmIChldmVudC5rZXkgPT09ICdIb21lJykge1xuICAgICAgc3RvcEV2ZW50KGV2ZW50KTtcbiAgICAgIGluZGV4UmVmLmN1cnJlbnQgPSBtaW5JbmRleDtcbiAgICAgIG9uTmF2aWdhdGUoaW5kZXhSZWYuY3VycmVudCk7XG4gICAgfVxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbmQnKSB7XG4gICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgaW5kZXhSZWYuY3VycmVudCA9IG1heEluZGV4O1xuICAgICAgb25OYXZpZ2F0ZShpbmRleFJlZi5jdXJyZW50KTtcbiAgICB9XG5cbiAgICAvLyBHcmlkIG5hdmlnYXRpb24uXG4gICAgaWYgKGNvbHMgPiAxKSB7XG4gICAgICBjb25zdCBzaXplcyA9IGl0ZW1TaXplcyB8fCBBcnJheS5mcm9tKHtcbiAgICAgICAgbGVuZ3RoOiBsaXN0UmVmLmN1cnJlbnQubGVuZ3RoXG4gICAgICB9LCAoKSA9PiAoe1xuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgaGVpZ2h0OiAxXG4gICAgICB9KSk7XG4gICAgICAvLyBUbyBjYWxjdWxhdGUgbW92ZW1lbnRzIG9uIHRoZSBncmlkLCB3ZSB1c2UgaHlwb3RoZXRpY2FsIGNlbGwgaW5kaWNlc1xuICAgICAgLy8gYXMgaWYgZXZlcnkgaXRlbSB3YXMgMXgxLCB0aGVuIGNvbnZlcnQgYmFjayB0byByZWFsIGluZGljZXMuXG4gICAgICBjb25zdCBjZWxsTWFwID0gYnVpbGRDZWxsTWFwKHNpemVzLCBjb2xzLCBkZW5zZSk7XG4gICAgICBjb25zdCBtaW5HcmlkSW5kZXggPSBjZWxsTWFwLmZpbmRJbmRleChpbmRleCA9PiBpbmRleCAhPSBudWxsICYmICFpc0Rpc2FibGVkKGxpc3RSZWYuY3VycmVudCwgaW5kZXgsIGRpc2FibGVkSW5kaWNlcykpO1xuICAgICAgLy8gbGFzdCBlbmFibGVkIGluZGV4XG4gICAgICBjb25zdCBtYXhHcmlkSW5kZXggPSBjZWxsTWFwLnJlZHVjZSgoZm91bmRJbmRleCwgaW5kZXgsIGNlbGxJbmRleCkgPT4gaW5kZXggIT0gbnVsbCAmJiAhaXNEaXNhYmxlZChsaXN0UmVmLmN1cnJlbnQsIGluZGV4LCBkaXNhYmxlZEluZGljZXMpID8gY2VsbEluZGV4IDogZm91bmRJbmRleCwgLTEpO1xuICAgICAgaW5kZXhSZWYuY3VycmVudCA9IGNlbGxNYXBbZ2V0R3JpZE5hdmlnYXRlZEluZGV4KHtcbiAgICAgICAgY3VycmVudDogY2VsbE1hcC5tYXAoaXRlbUluZGV4ID0+IGl0ZW1JbmRleCAhPSBudWxsID8gbGlzdFJlZi5jdXJyZW50W2l0ZW1JbmRleF0gOiBudWxsKVxuICAgICAgfSwge1xuICAgICAgICBldmVudCxcbiAgICAgICAgb3JpZW50YXRpb24sXG4gICAgICAgIGxvb3AsXG4gICAgICAgIGNvbHMsXG4gICAgICAgIC8vIHRyZWF0IHVuZGVmaW5lZCAoZW1wdHkgZ3JpZCBzcGFjZXMpIGFzIGRpc2FibGVkIGluZGljZXMgc28gd2VcbiAgICAgICAgLy8gZG9uJ3QgZW5kIHVwIGluIHRoZW1cbiAgICAgICAgZGlzYWJsZWRJbmRpY2VzOiBnZXRDZWxsSW5kaWNlcyhbLi4uKGRpc2FibGVkSW5kaWNlcyB8fCBsaXN0UmVmLmN1cnJlbnQubWFwKChfLCBpbmRleCkgPT4gaXNEaXNhYmxlZChsaXN0UmVmLmN1cnJlbnQsIGluZGV4KSA/IGluZGV4IDogdW5kZWZpbmVkKSksIHVuZGVmaW5lZF0sIGNlbGxNYXApLFxuICAgICAgICBtaW5JbmRleDogbWluR3JpZEluZGV4LFxuICAgICAgICBtYXhJbmRleDogbWF4R3JpZEluZGV4LFxuICAgICAgICBwcmV2SW5kZXg6IGdldENlbGxJbmRleE9mQ29ybmVyKGluZGV4UmVmLmN1cnJlbnQgPiBtYXhJbmRleCA/IG1pbkluZGV4IDogaW5kZXhSZWYuY3VycmVudCwgc2l6ZXMsIGNlbGxNYXAsIGNvbHMsXG4gICAgICAgIC8vIHVzZSBhIGNvcm5lciBtYXRjaGluZyB0aGUgZWRnZSBjbG9zZXN0IHRvIHRoZSBkaXJlY3Rpb25cbiAgICAgICAgLy8gd2UncmUgbW92aW5nIGluIHNvIHdlIGRvbid0IGVuZCB1cCBpbiB0aGUgc2FtZSBpdGVtLiBQcmVmZXJcbiAgICAgICAgLy8gdG9wL2xlZnQgb3ZlciBib3R0b20vcmlnaHQuXG4gICAgICAgIGV2ZW50LmtleSA9PT0gQVJST1dfRE9XTiA/ICdibCcgOiBldmVudC5rZXkgPT09IEFSUk9XX1JJR0hUID8gJ3RyJyA6ICd0bCcpLFxuICAgICAgICBzdG9wRXZlbnQ6IHRydWVcbiAgICAgIH0pXTsgLy8gbmF2aWdhdGVkIGNlbGwgd2lsbCBuZXZlciBiZSBudWxsaXNoXG5cbiAgICAgIG9uTmF2aWdhdGUoaW5kZXhSZWYuY3VycmVudCk7XG4gICAgICBpZiAob3JpZW50YXRpb24gPT09ICdib3RoJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc01haW5PcmllbnRhdGlvbktleShldmVudC5rZXksIG9yaWVudGF0aW9uKSkge1xuICAgICAgc3RvcEV2ZW50KGV2ZW50KTtcblxuICAgICAgLy8gUmVzZXQgdGhlIGluZGV4IGlmIG5vIGl0ZW0gaXMgZm9jdXNlZC5cbiAgICAgIGlmIChvcGVuICYmICF2aXJ0dWFsICYmIGFjdGl2ZUVsZW1lbnQoZXZlbnQuY3VycmVudFRhcmdldC5vd25lckRvY3VtZW50KSA9PT0gZXZlbnQuY3VycmVudFRhcmdldCkge1xuICAgICAgICBpbmRleFJlZi5jdXJyZW50ID0gaXNNYWluT3JpZW50YXRpb25Ub0VuZEtleShldmVudC5rZXksIG9yaWVudGF0aW9uLCBydGwpID8gbWluSW5kZXggOiBtYXhJbmRleDtcbiAgICAgICAgb25OYXZpZ2F0ZShpbmRleFJlZi5jdXJyZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGlzTWFpbk9yaWVudGF0aW9uVG9FbmRLZXkoZXZlbnQua2V5LCBvcmllbnRhdGlvbiwgcnRsKSkge1xuICAgICAgICBpZiAobG9vcCkge1xuICAgICAgICAgIGluZGV4UmVmLmN1cnJlbnQgPSBjdXJyZW50SW5kZXggPj0gbWF4SW5kZXggPyBhbGxvd0VzY2FwZSAmJiBjdXJyZW50SW5kZXggIT09IGxpc3RSZWYuY3VycmVudC5sZW5ndGggPyAtMSA6IG1pbkluZGV4IDogZmluZE5vbkRpc2FibGVkSW5kZXgobGlzdFJlZiwge1xuICAgICAgICAgICAgc3RhcnRpbmdJbmRleDogY3VycmVudEluZGV4LFxuICAgICAgICAgICAgZGlzYWJsZWRJbmRpY2VzXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5kZXhSZWYuY3VycmVudCA9IE1hdGgubWluKG1heEluZGV4LCBmaW5kTm9uRGlzYWJsZWRJbmRleChsaXN0UmVmLCB7XG4gICAgICAgICAgICBzdGFydGluZ0luZGV4OiBjdXJyZW50SW5kZXgsXG4gICAgICAgICAgICBkaXNhYmxlZEluZGljZXNcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChsb29wKSB7XG4gICAgICAgICAgaW5kZXhSZWYuY3VycmVudCA9IGN1cnJlbnRJbmRleCA8PSBtaW5JbmRleCA/IGFsbG93RXNjYXBlICYmIGN1cnJlbnRJbmRleCAhPT0gLTEgPyBsaXN0UmVmLmN1cnJlbnQubGVuZ3RoIDogbWF4SW5kZXggOiBmaW5kTm9uRGlzYWJsZWRJbmRleChsaXN0UmVmLCB7XG4gICAgICAgICAgICBzdGFydGluZ0luZGV4OiBjdXJyZW50SW5kZXgsXG4gICAgICAgICAgICBkZWNyZW1lbnQ6IHRydWUsXG4gICAgICAgICAgICBkaXNhYmxlZEluZGljZXNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbmRleFJlZi5jdXJyZW50ID0gTWF0aC5tYXgobWluSW5kZXgsIGZpbmROb25EaXNhYmxlZEluZGV4KGxpc3RSZWYsIHtcbiAgICAgICAgICAgIHN0YXJ0aW5nSW5kZXg6IGN1cnJlbnRJbmRleCxcbiAgICAgICAgICAgIGRlY3JlbWVudDogdHJ1ZSxcbiAgICAgICAgICAgIGRpc2FibGVkSW5kaWNlc1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzSW5kZXhPdXRPZkJvdW5kcyhsaXN0UmVmLCBpbmRleFJlZi5jdXJyZW50KSkge1xuICAgICAgICBvbk5hdmlnYXRlKG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25OYXZpZ2F0ZShpbmRleFJlZi5jdXJyZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBjb25zdCBhcmlhQWN0aXZlRGVzY2VuZGFudFByb3AgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdmlydHVhbCAmJiBvcGVuICYmIGhhc0FjdGl2ZUluZGV4ICYmIHtcbiAgICAgICdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnOiB2aXJ0dWFsSWQgfHwgYWN0aXZlSWRcbiAgICB9O1xuICB9LCBbdmlydHVhbCwgb3BlbiwgaGFzQWN0aXZlSW5kZXgsIHZpcnR1YWxJZCwgYWN0aXZlSWRdKTtcbiAgY29uc3QgZmxvYXRpbmcgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2FyaWEtb3JpZW50YXRpb24nOiBvcmllbnRhdGlvbiA9PT0gJ2JvdGgnID8gdW5kZWZpbmVkIDogb3JpZW50YXRpb24sXG4gICAgICAuLi4oIWlzVHlwZWFibGVDb21ib2JveChlbGVtZW50cy5kb21SZWZlcmVuY2UpICYmIGFyaWFBY3RpdmVEZXNjZW5kYW50UHJvcCksXG4gICAgICBvbktleURvd246IGNvbW1vbk9uS2V5RG93bixcbiAgICAgIG9uUG9pbnRlck1vdmUoKSB7XG4gICAgICAgIGlzUG9pbnRlck1vZGFsaXR5UmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFthcmlhQWN0aXZlRGVzY2VuZGFudFByb3AsIGNvbW1vbk9uS2V5RG93biwgZWxlbWVudHMuZG9tUmVmZXJlbmNlLCBvcmllbnRhdGlvbl0pO1xuICBjb25zdCByZWZlcmVuY2UgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBmdW5jdGlvbiBjaGVja1ZpcnR1YWxNb3VzZShldmVudCkge1xuICAgICAgaWYgKGZvY3VzSXRlbU9uT3BlbiA9PT0gJ2F1dG8nICYmIGlzVmlydHVhbENsaWNrKGV2ZW50Lm5hdGl2ZUV2ZW50KSkge1xuICAgICAgICBmb2N1c0l0ZW1Pbk9wZW5SZWYuY3VycmVudCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNoZWNrVmlydHVhbFBvaW50ZXIoZXZlbnQpIHtcbiAgICAgIC8vIGBwb2ludGVyZG93bmAgZmlyZXMgZmlyc3QsIHJlc2V0IHRoZSBzdGF0ZSB0aGVuIHBlcmZvcm0gdGhlIGNoZWNrcy5cbiAgICAgIGZvY3VzSXRlbU9uT3BlblJlZi5jdXJyZW50ID0gZm9jdXNJdGVtT25PcGVuO1xuICAgICAgaWYgKGZvY3VzSXRlbU9uT3BlbiA9PT0gJ2F1dG8nICYmIGlzVmlydHVhbFBvaW50ZXJFdmVudChldmVudC5uYXRpdmVFdmVudCkpIHtcbiAgICAgICAgZm9jdXNJdGVtT25PcGVuUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgLi4uYXJpYUFjdGl2ZURlc2NlbmRhbnRQcm9wLFxuICAgICAgb25LZXlEb3duKGV2ZW50KSB7XG4gICAgICAgIGlzUG9pbnRlck1vZGFsaXR5UmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgaXNBcnJvd0tleSA9IGV2ZW50LmtleS5pbmRleE9mKCdBcnJvdycpID09PSAwO1xuICAgICAgICBjb25zdCBpc0Nyb3NzT3BlbktleSA9IGlzQ3Jvc3NPcmllbnRhdGlvbk9wZW5LZXkoZXZlbnQua2V5LCBvcmllbnRhdGlvbiwgcnRsKTtcbiAgICAgICAgY29uc3QgaXNDcm9zc0Nsb3NlS2V5ID0gaXNDcm9zc09yaWVudGF0aW9uQ2xvc2VLZXkoZXZlbnQua2V5LCBvcmllbnRhdGlvbiwgcnRsKTtcbiAgICAgICAgY29uc3QgaXNNYWluS2V5ID0gaXNNYWluT3JpZW50YXRpb25LZXkoZXZlbnQua2V5LCBvcmllbnRhdGlvbik7XG4gICAgICAgIGNvbnN0IGlzTmF2aWdhdGlvbktleSA9IChuZXN0ZWQgPyBpc0Nyb3NzT3BlbktleSA6IGlzTWFpbktleSkgfHwgZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleS50cmltKCkgPT09ICcnO1xuICAgICAgICBpZiAodmlydHVhbCAmJiBvcGVuKSB7XG4gICAgICAgICAgY29uc3Qgcm9vdE5vZGUgPSB0cmVlID09IG51bGwgPyB2b2lkIDAgOiB0cmVlLm5vZGVzUmVmLmN1cnJlbnQuZmluZChub2RlID0+IG5vZGUucGFyZW50SWQgPT0gbnVsbCk7XG4gICAgICAgICAgY29uc3QgZGVlcGVzdE5vZGUgPSB0cmVlICYmIHJvb3ROb2RlID8gZ2V0RGVlcGVzdE5vZGUodHJlZS5ub2Rlc1JlZi5jdXJyZW50LCByb290Tm9kZS5pZCkgOiBudWxsO1xuICAgICAgICAgIGlmIChpc0Fycm93S2V5ICYmIGRlZXBlc3ROb2RlICYmIHZpcnR1YWxJdGVtUmVmKSB7XG4gICAgICAgICAgICBjb25zdCBldmVudE9iamVjdCA9IG5ldyBLZXlib2FyZEV2ZW50KCdrZXlkb3duJywge1xuICAgICAgICAgICAgICBrZXk6IGV2ZW50LmtleSxcbiAgICAgICAgICAgICAgYnViYmxlczogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoaXNDcm9zc09wZW5LZXkgfHwgaXNDcm9zc0Nsb3NlS2V5KSB7XG4gICAgICAgICAgICAgIHZhciBfZGVlcGVzdE5vZGUkY29udGV4dCwgX2RlZXBlc3ROb2RlJGNvbnRleHQyO1xuICAgICAgICAgICAgICBjb25zdCBpc0N1cnJlbnRUYXJnZXQgPSAoKF9kZWVwZXN0Tm9kZSRjb250ZXh0ID0gZGVlcGVzdE5vZGUuY29udGV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kZWVwZXN0Tm9kZSRjb250ZXh0LmVsZW1lbnRzLmRvbVJlZmVyZW5jZSkgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgICAgIGNvbnN0IGRpc3BhdGNoSXRlbSA9IGlzQ3Jvc3NDbG9zZUtleSAmJiAhaXNDdXJyZW50VGFyZ2V0ID8gKF9kZWVwZXN0Tm9kZSRjb250ZXh0MiA9IGRlZXBlc3ROb2RlLmNvbnRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfZGVlcGVzdE5vZGUkY29udGV4dDIuZWxlbWVudHMuZG9tUmVmZXJlbmNlIDogaXNDcm9zc09wZW5LZXkgPyBsaXN0UmVmLmN1cnJlbnQuZmluZChpdGVtID0+IChpdGVtID09IG51bGwgPyB2b2lkIDAgOiBpdGVtLmlkKSA9PT0gYWN0aXZlSWQpIDogbnVsbDtcbiAgICAgICAgICAgICAgaWYgKGRpc3BhdGNoSXRlbSkge1xuICAgICAgICAgICAgICAgIHN0b3BFdmVudChldmVudCk7XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2hJdGVtLmRpc3BhdGNoRXZlbnQoZXZlbnRPYmplY3QpO1xuICAgICAgICAgICAgICAgIHNldFZpcnR1YWxJZCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNNYWluS2V5ICYmIGRlZXBlc3ROb2RlLmNvbnRleHQpIHtcbiAgICAgICAgICAgICAgaWYgKGRlZXBlc3ROb2RlLmNvbnRleHQub3BlbiAmJiBkZWVwZXN0Tm9kZS5wYXJlbnRJZCAmJiBldmVudC5jdXJyZW50VGFyZ2V0ICE9PSBkZWVwZXN0Tm9kZS5jb250ZXh0LmVsZW1lbnRzLmRvbVJlZmVyZW5jZSkge1xuICAgICAgICAgICAgICAgIHZhciBfZGVlcGVzdE5vZGUkY29udGV4dCQ7XG4gICAgICAgICAgICAgICAgc3RvcEV2ZW50KGV2ZW50KTtcbiAgICAgICAgICAgICAgICAoX2RlZXBlc3ROb2RlJGNvbnRleHQkID0gZGVlcGVzdE5vZGUuY29udGV4dC5lbGVtZW50cy5kb21SZWZlcmVuY2UpID09IG51bGwgfHwgX2RlZXBlc3ROb2RlJGNvbnRleHQkLmRpc3BhdGNoRXZlbnQoZXZlbnRPYmplY3QpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY29tbW9uT25LZXlEb3duKGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIGEgZmxvYXRpbmcgZWxlbWVudCBzaG91bGQgbm90IG9wZW4gb24gYXJyb3cga2V5IGRvd24sIGF2b2lkXG4gICAgICAgIC8vIHNldHRpbmcgYGFjdGl2ZUluZGV4YCB3aGlsZSBpdCdzIGNsb3NlZC5cbiAgICAgICAgaWYgKCFvcGVuICYmICFvcGVuT25BcnJvd0tleURvd24gJiYgaXNBcnJvd0tleSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOYXZpZ2F0aW9uS2V5KSB7XG4gICAgICAgICAga2V5UmVmLmN1cnJlbnQgPSBuZXN0ZWQgJiYgaXNNYWluS2V5ID8gbnVsbCA6IGV2ZW50LmtleTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmVzdGVkKSB7XG4gICAgICAgICAgaWYgKGlzQ3Jvc3NPcGVuS2V5KSB7XG4gICAgICAgICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgICAgICAgaW5kZXhSZWYuY3VycmVudCA9IGdldE1pbkluZGV4KGxpc3RSZWYsIGRpc2FibGVkSW5kaWNlc1JlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgb25OYXZpZ2F0ZShpbmRleFJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG9uT3BlbkNoYW5nZSh0cnVlLCBldmVudC5uYXRpdmVFdmVudCwgJ2xpc3QtbmF2aWdhdGlvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTWFpbktleSkge1xuICAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGluZGV4UmVmLmN1cnJlbnQgPSBzZWxlY3RlZEluZGV4O1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgICAgIGlmICghb3BlbiAmJiBvcGVuT25BcnJvd0tleURvd24pIHtcbiAgICAgICAgICAgIG9uT3BlbkNoYW5nZSh0cnVlLCBldmVudC5uYXRpdmVFdmVudCwgJ2xpc3QtbmF2aWdhdGlvbicpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb21tb25PbktleURvd24oZXZlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAob3Blbikge1xuICAgICAgICAgICAgb25OYXZpZ2F0ZShpbmRleFJlZi5jdXJyZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBvbkZvY3VzKCkge1xuICAgICAgICBpZiAob3BlbiAmJiAhdmlydHVhbCkge1xuICAgICAgICAgIG9uTmF2aWdhdGUobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBvblBvaW50ZXJEb3duOiBjaGVja1ZpcnR1YWxQb2ludGVyLFxuICAgICAgb25Nb3VzZURvd246IGNoZWNrVmlydHVhbE1vdXNlLFxuICAgICAgb25DbGljazogY2hlY2tWaXJ0dWFsTW91c2VcbiAgICB9O1xuICB9LCBbYWN0aXZlSWQsIGFyaWFBY3RpdmVEZXNjZW5kYW50UHJvcCwgY29tbW9uT25LZXlEb3duLCBkaXNhYmxlZEluZGljZXNSZWYsIGZvY3VzSXRlbU9uT3BlbiwgbGlzdFJlZiwgbmVzdGVkLCBvbk5hdmlnYXRlLCBvbk9wZW5DaGFuZ2UsIG9wZW4sIG9wZW5PbkFycm93S2V5RG93biwgb3JpZW50YXRpb24sIHJ0bCwgc2VsZWN0ZWRJbmRleCwgdHJlZSwgdmlydHVhbCwgdmlydHVhbEl0ZW1SZWZdKTtcbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4gZW5hYmxlZCA/IHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmcsXG4gICAgaXRlbVxuICB9IDoge30sIFtlbmFibGVkLCByZWZlcmVuY2UsIGZsb2F0aW5nLCBpdGVtXSk7XG59XG5cbmNvbnN0IGNvbXBvbmVudFJvbGVUb0FyaWFSb2xlTWFwID0gLyojX19QVVJFX18qL25ldyBNYXAoW1snc2VsZWN0JywgJ2xpc3Rib3gnXSwgWydjb21ib2JveCcsICdsaXN0Ym94J10sIFsnbGFiZWwnLCBmYWxzZV1dKTtcblxuLyoqXG4gKiBBZGRzIGJhc2Ugc2NyZWVuIHJlYWRlciBwcm9wcyB0byB0aGUgcmVmZXJlbmNlIGFuZCBmbG9hdGluZyBlbGVtZW50cyBmb3IgYVxuICogZ2l2ZW4gZmxvYXRpbmcgZWxlbWVudCBgcm9sZWAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdXNlUm9sZVxuICovXG5mdW5jdGlvbiB1c2VSb2xlKGNvbnRleHQsIHByb3BzKSB7XG4gIHZhciBfY29tcG9uZW50Um9sZVRvQXJpYVI7XG4gIGlmIChwcm9wcyA9PT0gdm9pZCAwKSB7XG4gICAgcHJvcHMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgb3BlbixcbiAgICBmbG9hdGluZ0lkXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgZW5hYmxlZCA9IHRydWUsXG4gICAgcm9sZSA9ICdkaWFsb2cnXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgYXJpYVJvbGUgPSAoX2NvbXBvbmVudFJvbGVUb0FyaWFSID0gY29tcG9uZW50Um9sZVRvQXJpYVJvbGVNYXAuZ2V0KHJvbGUpKSAhPSBudWxsID8gX2NvbXBvbmVudFJvbGVUb0FyaWFSIDogcm9sZTtcbiAgY29uc3QgcmVmZXJlbmNlSWQgPSB1c2VJZCgpO1xuICBjb25zdCBwYXJlbnRJZCA9IHVzZUZsb2F0aW5nUGFyZW50Tm9kZUlkKCk7XG4gIGNvbnN0IGlzTmVzdGVkID0gcGFyZW50SWQgIT0gbnVsbDtcbiAgY29uc3QgcmVmZXJlbmNlID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGFyaWFSb2xlID09PSAndG9vbHRpcCcgfHwgcm9sZSA9PT0gJ2xhYmVsJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW1wiYXJpYS1cIiArIChyb2xlID09PSAnbGFiZWwnID8gJ2xhYmVsbGVkYnknIDogJ2Rlc2NyaWJlZGJ5JyldOiBvcGVuID8gZmxvYXRpbmdJZCA6IHVuZGVmaW5lZFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICdhcmlhLWV4cGFuZGVkJzogb3BlbiA/ICd0cnVlJyA6ICdmYWxzZScsXG4gICAgICAnYXJpYS1oYXNwb3B1cCc6IGFyaWFSb2xlID09PSAnYWxlcnRkaWFsb2cnID8gJ2RpYWxvZycgOiBhcmlhUm9sZSxcbiAgICAgICdhcmlhLWNvbnRyb2xzJzogb3BlbiA/IGZsb2F0aW5nSWQgOiB1bmRlZmluZWQsXG4gICAgICAuLi4oYXJpYVJvbGUgPT09ICdsaXN0Ym94JyAmJiB7XG4gICAgICAgIHJvbGU6ICdjb21ib2JveCdcbiAgICAgIH0pLFxuICAgICAgLi4uKGFyaWFSb2xlID09PSAnbWVudScgJiYge1xuICAgICAgICBpZDogcmVmZXJlbmNlSWRcbiAgICAgIH0pLFxuICAgICAgLi4uKGFyaWFSb2xlID09PSAnbWVudScgJiYgaXNOZXN0ZWQgJiYge1xuICAgICAgICByb2xlOiAnbWVudWl0ZW0nXG4gICAgICB9KSxcbiAgICAgIC4uLihyb2xlID09PSAnc2VsZWN0JyAmJiB7XG4gICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdub25lJ1xuICAgICAgfSksXG4gICAgICAuLi4ocm9sZSA9PT0gJ2NvbWJvYm94JyAmJiB7XG4gICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdsaXN0J1xuICAgICAgfSlcbiAgICB9O1xuICB9LCBbYXJpYVJvbGUsIGZsb2F0aW5nSWQsIGlzTmVzdGVkLCBvcGVuLCByZWZlcmVuY2VJZCwgcm9sZV0pO1xuICBjb25zdCBmbG9hdGluZyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGZsb2F0aW5nUHJvcHMgPSB7XG4gICAgICBpZDogZmxvYXRpbmdJZCxcbiAgICAgIC4uLihhcmlhUm9sZSAmJiB7XG4gICAgICAgIHJvbGU6IGFyaWFSb2xlXG4gICAgICB9KVxuICAgIH07XG4gICAgaWYgKGFyaWFSb2xlID09PSAndG9vbHRpcCcgfHwgcm9sZSA9PT0gJ2xhYmVsJykge1xuICAgICAgcmV0dXJuIGZsb2F0aW5nUHJvcHM7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAuLi5mbG9hdGluZ1Byb3BzLFxuICAgICAgLi4uKGFyaWFSb2xlID09PSAnbWVudScgJiYge1xuICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogcmVmZXJlbmNlSWRcbiAgICAgIH0pXG4gICAgfTtcbiAgfSwgW2FyaWFSb2xlLCBmbG9hdGluZ0lkLCByZWZlcmVuY2VJZCwgcm9sZV0pO1xuICBjb25zdCBpdGVtID0gUmVhY3QudXNlQ2FsbGJhY2soX3JlZiA9PiB7XG4gICAgbGV0IHtcbiAgICAgIGFjdGl2ZSxcbiAgICAgIHNlbGVjdGVkXG4gICAgfSA9IF9yZWY7XG4gICAgY29uc3QgY29tbW9uUHJvcHMgPSB7XG4gICAgICByb2xlOiAnb3B0aW9uJyxcbiAgICAgIC4uLihhY3RpdmUgJiYge1xuICAgICAgICBpZDogZmxvYXRpbmdJZCArIFwiLW9wdGlvblwiXG4gICAgICB9KVxuICAgIH07XG5cbiAgICAvLyBGb3IgYG1lbnVgLCB3ZSBhcmUgdW5hYmxlIHRvIHRlbGwgaWYgdGhlIGl0ZW0gaXMgYSBgbWVudWl0ZW1yYWRpb2BcbiAgICAvLyBvciBgbWVudWl0ZW1jaGVja2JveGAuIEZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSByZWFzb25zLCBhbHNvXG4gICAgLy8gYXZvaWQgZGVmYXVsdGluZyB0byBgbWVudWl0ZW1gIGFzIGl0IG1heSBvdmVyd3JpdGUgY3VzdG9tIHJvbGUgcHJvcHMuXG4gICAgc3dpdGNoIChyb2xlKSB7XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmNvbW1vblByb3BzLFxuICAgICAgICAgICdhcmlhLXNlbGVjdGVkJzogYWN0aXZlICYmIHNlbGVjdGVkXG4gICAgICAgIH07XG4gICAgICBjYXNlICdjb21ib2JveCc6XG4gICAgICAgIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY29tbW9uUHJvcHMsXG4gICAgICAgICAgICAuLi4oYWN0aXZlICYmIHtcbiAgICAgICAgICAgICAgJ2FyaWEtc2VsZWN0ZWQnOiB0cnVlXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9LCBbZmxvYXRpbmdJZCwgcm9sZV0pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiBlbmFibGVkID8ge1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZyxcbiAgICBpdGVtXG4gIH0gOiB7fSwgW2VuYWJsZWQsIHJlZmVyZW5jZSwgZmxvYXRpbmcsIGl0ZW1dKTtcbn1cblxuLy8gQ29udmVydHMgYSBKUyBzdHlsZSBrZXkgbGlrZSBgYmFja2dyb3VuZENvbG9yYCB0byBhIENTUyB0cmFuc2l0aW9uLXByb3BlcnR5XG4vLyBsaWtlIGBiYWNrZ3JvdW5kLWNvbG9yYC5cbmNvbnN0IGNhbWVsQ2FzZVRvS2ViYWJDYXNlID0gc3RyID0+IHN0ci5yZXBsYWNlKC9bQS1aXSsoPyFbYS16XSl8W0EtWl0vZywgKCQsIG9mcykgPT4gKG9mcyA/ICctJyA6ICcnKSArICQudG9Mb3dlckNhc2UoKSk7XG5mdW5jdGlvbiBleGVjV2l0aEFyZ3NPclJldHVybih2YWx1ZU9yRm4sIGFyZ3MpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZU9yRm4gPT09ICdmdW5jdGlvbicgPyB2YWx1ZU9yRm4oYXJncykgOiB2YWx1ZU9yRm47XG59XG5mdW5jdGlvbiB1c2VEZWxheVVubW91bnQob3BlbiwgZHVyYXRpb25Ncykge1xuICBjb25zdCBbaXNNb3VudGVkLCBzZXRJc01vdW50ZWRdID0gUmVhY3QudXNlU3RhdGUob3Blbik7XG4gIGlmIChvcGVuICYmICFpc01vdW50ZWQpIHtcbiAgICBzZXRJc01vdW50ZWQodHJ1ZSk7XG4gIH1cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW9wZW4gJiYgaXNNb3VudGVkKSB7XG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiBzZXRJc01vdW50ZWQoZmFsc2UpLCBkdXJhdGlvbk1zKTtcbiAgICAgIHJldHVybiAoKSA9PiBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgfVxuICB9LCBbb3BlbiwgaXNNb3VudGVkLCBkdXJhdGlvbk1zXSk7XG4gIHJldHVybiBpc01vdW50ZWQ7XG59XG4vKipcbiAqIFByb3ZpZGVzIGEgc3RhdHVzIHN0cmluZyB0byBhcHBseSBDU1MgdHJhbnNpdGlvbnMgdG8gYSBmbG9hdGluZyBlbGVtZW50LFxuICogY29ycmVjdGx5IGhhbmRsaW5nIHBsYWNlbWVudC1hd2FyZSB0cmFuc2l0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VUcmFuc2l0aW9uI3VzZXRyYW5zaXRpb25zdGF0dXNcbiAqL1xuZnVuY3Rpb24gdXNlVHJhbnNpdGlvblN0YXR1cyhjb250ZXh0LCBwcm9wcykge1xuICBpZiAocHJvcHMgPT09IHZvaWQgMCkge1xuICAgIHByb3BzID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIG9wZW4sXG4gICAgZWxlbWVudHM6IHtcbiAgICAgIGZsb2F0aW5nXG4gICAgfVxuICB9ID0gY29udGV4dDtcbiAgY29uc3Qge1xuICAgIGR1cmF0aW9uID0gMjUwXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgaXNOdW1iZXJEdXJhdGlvbiA9IHR5cGVvZiBkdXJhdGlvbiA9PT0gJ251bWJlcic7XG4gIGNvbnN0IGNsb3NlRHVyYXRpb24gPSAoaXNOdW1iZXJEdXJhdGlvbiA/IGR1cmF0aW9uIDogZHVyYXRpb24uY2xvc2UpIHx8IDA7XG4gIGNvbnN0IFtzdGF0dXMsIHNldFN0YXR1c10gPSBSZWFjdC51c2VTdGF0ZSgndW5tb3VudGVkJyk7XG4gIGNvbnN0IGlzTW91bnRlZCA9IHVzZURlbGF5VW5tb3VudChvcGVuLCBjbG9zZUR1cmF0aW9uKTtcbiAgaWYgKCFpc01vdW50ZWQgJiYgc3RhdHVzID09PSAnY2xvc2UnKSB7XG4gICAgc2V0U3RhdHVzKCd1bm1vdW50ZWQnKTtcbiAgfVxuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKCFmbG9hdGluZykgcmV0dXJuO1xuICAgIGlmIChvcGVuKSB7XG4gICAgICBzZXRTdGF0dXMoJ2luaXRpYWwnKTtcbiAgICAgIGNvbnN0IGZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgc2V0U3RhdHVzKCdvcGVuJyk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lKTtcbiAgICAgIH07XG4gICAgfVxuICAgIHNldFN0YXR1cygnY2xvc2UnKTtcbiAgfSwgW29wZW4sIGZsb2F0aW5nXSk7XG4gIHJldHVybiB7XG4gICAgaXNNb3VudGVkLFxuICAgIHN0YXR1c1xuICB9O1xufVxuLyoqXG4gKiBQcm92aWRlcyBzdHlsZXMgdG8gYXBwbHkgQ1NTIHRyYW5zaXRpb25zIHRvIGEgZmxvYXRpbmcgZWxlbWVudCwgY29ycmVjdGx5XG4gKiBoYW5kbGluZyBwbGFjZW1lbnQtYXdhcmUgdHJhbnNpdGlvbnMuIFdyYXBwZXIgYXJvdW5kIGB1c2VUcmFuc2l0aW9uU3RhdHVzYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VUcmFuc2l0aW9uI3VzZXRyYW5zaXRpb25zdHlsZXNcbiAqL1xuZnVuY3Rpb24gdXNlVHJhbnNpdGlvblN0eWxlcyhjb250ZXh0LCBwcm9wcykge1xuICBpZiAocHJvcHMgPT09IHZvaWQgMCkge1xuICAgIHByb3BzID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIGluaXRpYWw6IHVuc3RhYmxlX2luaXRpYWwgPSB7XG4gICAgICBvcGFjaXR5OiAwXG4gICAgfSxcbiAgICBvcGVuOiB1bnN0YWJsZV9vcGVuLFxuICAgIGNsb3NlOiB1bnN0YWJsZV9jbG9zZSxcbiAgICBjb21tb246IHVuc3RhYmxlX2NvbW1vbixcbiAgICBkdXJhdGlvbiA9IDI1MFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHBsYWNlbWVudCA9IGNvbnRleHQucGxhY2VtZW50O1xuICBjb25zdCBzaWRlID0gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG4gIGNvbnN0IGZuQXJncyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBzaWRlLFxuICAgIHBsYWNlbWVudFxuICB9KSwgW3NpZGUsIHBsYWNlbWVudF0pO1xuICBjb25zdCBpc051bWJlckR1cmF0aW9uID0gdHlwZW9mIGR1cmF0aW9uID09PSAnbnVtYmVyJztcbiAgY29uc3Qgb3BlbkR1cmF0aW9uID0gKGlzTnVtYmVyRHVyYXRpb24gPyBkdXJhdGlvbiA6IGR1cmF0aW9uLm9wZW4pIHx8IDA7XG4gIGNvbnN0IGNsb3NlRHVyYXRpb24gPSAoaXNOdW1iZXJEdXJhdGlvbiA/IGR1cmF0aW9uIDogZHVyYXRpb24uY2xvc2UpIHx8IDA7XG4gIGNvbnN0IFtzdHlsZXMsIHNldFN0eWxlc10gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PiAoe1xuICAgIC4uLmV4ZWNXaXRoQXJnc09yUmV0dXJuKHVuc3RhYmxlX2NvbW1vbiwgZm5BcmdzKSxcbiAgICAuLi5leGVjV2l0aEFyZ3NPclJldHVybih1bnN0YWJsZV9pbml0aWFsLCBmbkFyZ3MpXG4gIH0pKTtcbiAgY29uc3Qge1xuICAgIGlzTW91bnRlZCxcbiAgICBzdGF0dXNcbiAgfSA9IHVzZVRyYW5zaXRpb25TdGF0dXMoY29udGV4dCwge1xuICAgIGR1cmF0aW9uXG4gIH0pO1xuICBjb25zdCBpbml0aWFsUmVmID0gdXNlTGF0ZXN0UmVmKHVuc3RhYmxlX2luaXRpYWwpO1xuICBjb25zdCBvcGVuUmVmID0gdXNlTGF0ZXN0UmVmKHVuc3RhYmxlX29wZW4pO1xuICBjb25zdCBjbG9zZVJlZiA9IHVzZUxhdGVzdFJlZih1bnN0YWJsZV9jbG9zZSk7XG4gIGNvbnN0IGNvbW1vblJlZiA9IHVzZUxhdGVzdFJlZih1bnN0YWJsZV9jb21tb24pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFN0eWxlcyA9IGV4ZWNXaXRoQXJnc09yUmV0dXJuKGluaXRpYWxSZWYuY3VycmVudCwgZm5BcmdzKTtcbiAgICBjb25zdCBjbG9zZVN0eWxlcyA9IGV4ZWNXaXRoQXJnc09yUmV0dXJuKGNsb3NlUmVmLmN1cnJlbnQsIGZuQXJncyk7XG4gICAgY29uc3QgY29tbW9uU3R5bGVzID0gZXhlY1dpdGhBcmdzT3JSZXR1cm4oY29tbW9uUmVmLmN1cnJlbnQsIGZuQXJncyk7XG4gICAgY29uc3Qgb3BlblN0eWxlcyA9IGV4ZWNXaXRoQXJnc09yUmV0dXJuKG9wZW5SZWYuY3VycmVudCwgZm5BcmdzKSB8fCBPYmplY3Qua2V5cyhpbml0aWFsU3R5bGVzKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICBhY2Nba2V5XSA9ICcnO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gICAgaWYgKHN0YXR1cyA9PT0gJ2luaXRpYWwnKSB7XG4gICAgICBzZXRTdHlsZXMoc3R5bGVzID0+ICh7XG4gICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0eTogc3R5bGVzLnRyYW5zaXRpb25Qcm9wZXJ0eSxcbiAgICAgICAgLi4uY29tbW9uU3R5bGVzLFxuICAgICAgICAuLi5pbml0aWFsU3R5bGVzXG4gICAgICB9KSk7XG4gICAgfVxuICAgIGlmIChzdGF0dXMgPT09ICdvcGVuJykge1xuICAgICAgc2V0U3R5bGVzKHtcbiAgICAgICAgdHJhbnNpdGlvblByb3BlcnR5OiBPYmplY3Qua2V5cyhvcGVuU3R5bGVzKS5tYXAoY2FtZWxDYXNlVG9LZWJhYkNhc2UpLmpvaW4oJywnKSxcbiAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uOiBvcGVuRHVyYXRpb24gKyBcIm1zXCIsXG4gICAgICAgIC4uLmNvbW1vblN0eWxlcyxcbiAgICAgICAgLi4ub3BlblN0eWxlc1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChzdGF0dXMgPT09ICdjbG9zZScpIHtcbiAgICAgIGNvbnN0IHN0eWxlcyA9IGNsb3NlU3R5bGVzIHx8IGluaXRpYWxTdHlsZXM7XG4gICAgICBzZXRTdHlsZXMoe1xuICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHk6IE9iamVjdC5rZXlzKHN0eWxlcykubWFwKGNhbWVsQ2FzZVRvS2ViYWJDYXNlKS5qb2luKCcsJyksXG4gICAgICAgIHRyYW5zaXRpb25EdXJhdGlvbjogY2xvc2VEdXJhdGlvbiArIFwibXNcIixcbiAgICAgICAgLi4uY29tbW9uU3R5bGVzLFxuICAgICAgICAuLi5zdHlsZXNcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2Nsb3NlRHVyYXRpb24sIGNsb3NlUmVmLCBpbml0aWFsUmVmLCBvcGVuUmVmLCBjb21tb25SZWYsIG9wZW5EdXJhdGlvbiwgc3RhdHVzLCBmbkFyZ3NdKTtcbiAgcmV0dXJuIHtcbiAgICBpc01vdW50ZWQsXG4gICAgc3R5bGVzXG4gIH07XG59XG5cbi8qKlxuICogUHJvdmlkZXMgYSBtYXRjaGluZyBjYWxsYmFjayB0aGF0IGNhbiBiZSB1c2VkIHRvIGZvY3VzIGFuIGl0ZW0gYXMgdGhlIHVzZXJcbiAqIHR5cGVzLCBvZnRlbiB1c2VkIGluIHRhbmRlbSB3aXRoIGB1c2VMaXN0TmF2aWdhdGlvbigpYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VUeXBlYWhlYWRcbiAqL1xuZnVuY3Rpb24gdXNlVHlwZWFoZWFkKGNvbnRleHQsIHByb3BzKSB7XG4gIHZhciBfcmVmO1xuICBjb25zdCB7XG4gICAgb3BlbixcbiAgICBkYXRhUmVmXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgbGlzdFJlZixcbiAgICBhY3RpdmVJbmRleCxcbiAgICBvbk1hdGNoOiB1bnN0YWJsZV9vbk1hdGNoLFxuICAgIG9uVHlwaW5nQ2hhbmdlOiB1bnN0YWJsZV9vblR5cGluZ0NoYW5nZSxcbiAgICBlbmFibGVkID0gdHJ1ZSxcbiAgICBmaW5kTWF0Y2ggPSBudWxsLFxuICAgIHJlc2V0TXMgPSA3NTAsXG4gICAgaWdub3JlS2V5cyA9IFtdLFxuICAgIHNlbGVjdGVkSW5kZXggPSBudWxsXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgdGltZW91dElkUmVmID0gUmVhY3QudXNlUmVmKCk7XG4gIGNvbnN0IHN0cmluZ1JlZiA9IFJlYWN0LnVzZVJlZignJyk7XG4gIGNvbnN0IHByZXZJbmRleFJlZiA9IFJlYWN0LnVzZVJlZigoX3JlZiA9IHNlbGVjdGVkSW5kZXggIT0gbnVsbCA/IHNlbGVjdGVkSW5kZXggOiBhY3RpdmVJbmRleCkgIT0gbnVsbCA/IF9yZWYgOiAtMSk7XG4gIGNvbnN0IG1hdGNoSW5kZXhSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IG9uTWF0Y2ggPSB1c2VFZmZlY3RFdmVudCh1bnN0YWJsZV9vbk1hdGNoKTtcbiAgY29uc3Qgb25UeXBpbmdDaGFuZ2UgPSB1c2VFZmZlY3RFdmVudCh1bnN0YWJsZV9vblR5cGluZ0NoYW5nZSk7XG4gIGNvbnN0IGZpbmRNYXRjaFJlZiA9IHVzZUxhdGVzdFJlZihmaW5kTWF0Y2gpO1xuICBjb25zdCBpZ25vcmVLZXlzUmVmID0gdXNlTGF0ZXN0UmVmKGlnbm9yZUtleXMpO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKG9wZW4pIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWRSZWYuY3VycmVudCk7XG4gICAgICBtYXRjaEluZGV4UmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgc3RyaW5nUmVmLmN1cnJlbnQgPSAnJztcbiAgICB9XG4gIH0sIFtvcGVuXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICAvLyBTeW5jIGFycm93IGtleSBuYXZpZ2F0aW9uIGJ1dCBub3QgdHlwZWFoZWFkIG5hdmlnYXRpb24uXG4gICAgaWYgKG9wZW4gJiYgc3RyaW5nUmVmLmN1cnJlbnQgPT09ICcnKSB7XG4gICAgICB2YXIgX3JlZjI7XG4gICAgICBwcmV2SW5kZXhSZWYuY3VycmVudCA9IChfcmVmMiA9IHNlbGVjdGVkSW5kZXggIT0gbnVsbCA/IHNlbGVjdGVkSW5kZXggOiBhY3RpdmVJbmRleCkgIT0gbnVsbCA/IF9yZWYyIDogLTE7XG4gICAgfVxuICB9LCBbb3Blbiwgc2VsZWN0ZWRJbmRleCwgYWN0aXZlSW5kZXhdKTtcbiAgY29uc3Qgc2V0VHlwaW5nQ2hhbmdlID0gdXNlRWZmZWN0RXZlbnQodmFsdWUgPT4ge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgaWYgKCFkYXRhUmVmLmN1cnJlbnQudHlwaW5nKSB7XG4gICAgICAgIGRhdGFSZWYuY3VycmVudC50eXBpbmcgPSB2YWx1ZTtcbiAgICAgICAgb25UeXBpbmdDaGFuZ2UodmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZGF0YVJlZi5jdXJyZW50LnR5cGluZykge1xuICAgICAgICBkYXRhUmVmLmN1cnJlbnQudHlwaW5nID0gdmFsdWU7XG4gICAgICAgIG9uVHlwaW5nQ2hhbmdlKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBjb25zdCBvbktleURvd24gPSB1c2VFZmZlY3RFdmVudChldmVudCA9PiB7XG4gICAgZnVuY3Rpb24gZ2V0TWF0Y2hpbmdJbmRleChsaXN0LCBvcmRlcmVkTGlzdCwgc3RyaW5nKSB7XG4gICAgICBjb25zdCBzdHIgPSBmaW5kTWF0Y2hSZWYuY3VycmVudCA/IGZpbmRNYXRjaFJlZi5jdXJyZW50KG9yZGVyZWRMaXN0LCBzdHJpbmcpIDogb3JkZXJlZExpc3QuZmluZCh0ZXh0ID0+ICh0ZXh0ID09IG51bGwgPyB2b2lkIDAgOiB0ZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5kZXhPZihzdHJpbmcudG9Mb2NhbGVMb3dlckNhc2UoKSkpID09PSAwKTtcbiAgICAgIHJldHVybiBzdHIgPyBsaXN0LmluZGV4T2Yoc3RyKSA6IC0xO1xuICAgIH1cbiAgICBjb25zdCBsaXN0Q29udGVudCA9IGxpc3RSZWYuY3VycmVudDtcbiAgICBpZiAoc3RyaW5nUmVmLmN1cnJlbnQubGVuZ3RoID4gMCAmJiBzdHJpbmdSZWYuY3VycmVudFswXSAhPT0gJyAnKSB7XG4gICAgICBpZiAoZ2V0TWF0Y2hpbmdJbmRleChsaXN0Q29udGVudCwgbGlzdENvbnRlbnQsIHN0cmluZ1JlZi5jdXJyZW50KSA9PT0gLTEpIHtcbiAgICAgICAgc2V0VHlwaW5nQ2hhbmdlKGZhbHNlKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgICAgc3RvcEV2ZW50KGV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGxpc3RDb250ZW50ID09IG51bGwgfHwgaWdub3JlS2V5c1JlZi5jdXJyZW50LmluY2x1ZGVzKGV2ZW50LmtleSkgfHxcbiAgICAvLyBDaGFyYWN0ZXIga2V5LlxuICAgIGV2ZW50LmtleS5sZW5ndGggIT09IDEgfHxcbiAgICAvLyBNb2RpZmllciBrZXkuXG4gICAgZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5IHx8IGV2ZW50LmFsdEtleSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAob3BlbiAmJiBldmVudC5rZXkgIT09ICcgJykge1xuICAgICAgc3RvcEV2ZW50KGV2ZW50KTtcbiAgICAgIHNldFR5cGluZ0NoYW5nZSh0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBCYWlsIG91dCBpZiB0aGUgbGlzdCBjb250YWlucyBhIHdvcmQgbGlrZSBcImxsYW1hXCIgb3IgXCJhYXJvblwiLiBUT0RPOlxuICAgIC8vIGFsbG93IGl0IGluIHRoaXMgY2FzZSwgdG9vLlxuICAgIGNvbnN0IGFsbG93UmFwaWRTdWNjZXNzaW9uT2ZGaXJzdExldHRlciA9IGxpc3RDb250ZW50LmV2ZXJ5KHRleHQgPT4ge1xuICAgICAgdmFyIF90ZXh0JCwgX3RleHQkMjtcbiAgICAgIHJldHVybiB0ZXh0ID8gKChfdGV4dCQgPSB0ZXh0WzBdKSA9PSBudWxsID8gdm9pZCAwIDogX3RleHQkLnRvTG9jYWxlTG93ZXJDYXNlKCkpICE9PSAoKF90ZXh0JDIgPSB0ZXh0WzFdKSA9PSBudWxsID8gdm9pZCAwIDogX3RleHQkMi50b0xvY2FsZUxvd2VyQ2FzZSgpKSA6IHRydWU7XG4gICAgfSk7XG5cbiAgICAvLyBBbGxvd3MgdGhlIHVzZXIgdG8gY3ljbGUgdGhyb3VnaCBpdGVtcyB0aGF0IHN0YXJ0IHdpdGggdGhlIHNhbWUgbGV0dGVyXG4gICAgLy8gaW4gcmFwaWQgc3VjY2Vzc2lvbi5cbiAgICBpZiAoYWxsb3dSYXBpZFN1Y2Nlc3Npb25PZkZpcnN0TGV0dGVyICYmIHN0cmluZ1JlZi5jdXJyZW50ID09PSBldmVudC5rZXkpIHtcbiAgICAgIHN0cmluZ1JlZi5jdXJyZW50ID0gJyc7XG4gICAgICBwcmV2SW5kZXhSZWYuY3VycmVudCA9IG1hdGNoSW5kZXhSZWYuY3VycmVudDtcbiAgICB9XG4gICAgc3RyaW5nUmVmLmN1cnJlbnQgKz0gZXZlbnQua2V5O1xuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWRSZWYuY3VycmVudCk7XG4gICAgdGltZW91dElkUmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHN0cmluZ1JlZi5jdXJyZW50ID0gJyc7XG4gICAgICBwcmV2SW5kZXhSZWYuY3VycmVudCA9IG1hdGNoSW5kZXhSZWYuY3VycmVudDtcbiAgICAgIHNldFR5cGluZ0NoYW5nZShmYWxzZSk7XG4gICAgfSwgcmVzZXRNcyk7XG4gICAgY29uc3QgcHJldkluZGV4ID0gcHJldkluZGV4UmVmLmN1cnJlbnQ7XG4gICAgY29uc3QgaW5kZXggPSBnZXRNYXRjaGluZ0luZGV4KGxpc3RDb250ZW50LCBbLi4ubGlzdENvbnRlbnQuc2xpY2UoKHByZXZJbmRleCB8fCAwKSArIDEpLCAuLi5saXN0Q29udGVudC5zbGljZSgwLCAocHJldkluZGV4IHx8IDApICsgMSldLCBzdHJpbmdSZWYuY3VycmVudCk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgb25NYXRjaChpbmRleCk7XG4gICAgICBtYXRjaEluZGV4UmVmLmN1cnJlbnQgPSBpbmRleDtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSAhPT0gJyAnKSB7XG4gICAgICBzdHJpbmdSZWYuY3VycmVudCA9ICcnO1xuICAgICAgc2V0VHlwaW5nQ2hhbmdlKGZhbHNlKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCByZWZlcmVuY2UgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgb25LZXlEb3duXG4gIH0pLCBbb25LZXlEb3duXSk7XG4gIGNvbnN0IGZsb2F0aW5nID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIG9uS2V5VXAoZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICAgICAgc2V0VHlwaW5nQ2hhbmdlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH0sIFtvbktleURvd24sIHNldFR5cGluZ0NoYW5nZV0pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiBlbmFibGVkID8ge1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZ1xuICB9IDoge30sIFtlbmFibGVkLCByZWZlcmVuY2UsIGZsb2F0aW5nXSk7XG59XG5cbmZ1bmN0aW9uIGdldEFyZ3NXaXRoQ3VzdG9tRmxvYXRpbmdIZWlnaHQoc3RhdGUsIGhlaWdodCkge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHJlY3RzOiB7XG4gICAgICAuLi5zdGF0ZS5yZWN0cyxcbiAgICAgIGZsb2F0aW5nOiB7XG4gICAgICAgIC4uLnN0YXRlLnJlY3RzLmZsb2F0aW5nLFxuICAgICAgICBoZWlnaHRcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG4vKipcbiAqIFBvc2l0aW9ucyB0aGUgZmxvYXRpbmcgZWxlbWVudCBzdWNoIHRoYXQgYW4gaW5uZXIgZWxlbWVudCBpbnNpZGUgb2YgaXQgaXNcbiAqIGFuY2hvcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9pbm5lclxuICovXG5jb25zdCBpbm5lciA9IHByb3BzID0+ICh7XG4gIG5hbWU6ICdpbm5lcicsXG4gIG9wdGlvbnM6IHByb3BzLFxuICBhc3luYyBmbihzdGF0ZSkge1xuICAgIGNvbnN0IHtcbiAgICAgIGxpc3RSZWYsXG4gICAgICBvdmVyZmxvd1JlZixcbiAgICAgIG9uRmFsbGJhY2tDaGFuZ2UsXG4gICAgICBvZmZzZXQ6IGlubmVyT2Zmc2V0ID0gMCxcbiAgICAgIGluZGV4ID0gMCxcbiAgICAgIG1pbkl0ZW1zVmlzaWJsZSA9IDQsXG4gICAgICByZWZlcmVuY2VPdmVyZmxvd1RocmVzaG9sZCA9IDAsXG4gICAgICBzY3JvbGxSZWYsXG4gICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICB9ID0gZXZhbHVhdGUocHJvcHMsIHN0YXRlKTtcbiAgICBjb25zdCB7XG4gICAgICByZWN0cyxcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIGZsb2F0aW5nXG4gICAgICB9XG4gICAgfSA9IHN0YXRlO1xuICAgIGNvbnN0IGl0ZW0gPSBsaXN0UmVmLmN1cnJlbnRbaW5kZXhdO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIGlmICghc3RhdGUucGxhY2VtZW50LnN0YXJ0c1dpdGgoJ2JvdHRvbScpKSB7XG4gICAgICAgIHdhcm4oJ2BwbGFjZW1lbnRgIHNpZGUgbXVzdCBiZSBcImJvdHRvbVwiIHdoZW4gdXNpbmcgdGhlIGBpbm5lcmAnLCAnbWlkZGxld2FyZS4nKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IG5leHRBcmdzID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICAuLi4oYXdhaXQgb2Zmc2V0KC1pdGVtLm9mZnNldFRvcCAtIGZsb2F0aW5nLmNsaWVudFRvcCAtIHJlY3RzLnJlZmVyZW5jZS5oZWlnaHQgLyAyIC0gaXRlbS5vZmZzZXRIZWlnaHQgLyAyIC0gaW5uZXJPZmZzZXQpLmZuKHN0YXRlKSlcbiAgICB9O1xuICAgIGNvbnN0IGVsID0gKHNjcm9sbFJlZiA9PSBudWxsID8gdm9pZCAwIDogc2Nyb2xsUmVmLmN1cnJlbnQpIHx8IGZsb2F0aW5nO1xuICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coZ2V0QXJnc1dpdGhDdXN0b21GbG9hdGluZ0hlaWdodChuZXh0QXJncywgZWwuc2Nyb2xsSGVpZ2h0KSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICBjb25zdCByZWZPdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KG5leHRBcmdzLCB7XG4gICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnMsXG4gICAgICBlbGVtZW50Q29udGV4dDogJ3JlZmVyZW5jZSdcbiAgICB9KTtcbiAgICBjb25zdCBkaWZmWSA9IE1hdGgubWF4KDAsIG92ZXJmbG93LnRvcCk7XG4gICAgY29uc3QgbmV4dFkgPSBuZXh0QXJncy55ICsgZGlmZlk7XG4gICAgY29uc3QgbWF4SGVpZ2h0ID0gTWF0aC5tYXgoMCwgZWwuc2Nyb2xsSGVpZ2h0IC0gZGlmZlkgLSBNYXRoLm1heCgwLCBvdmVyZmxvdy5ib3R0b20pKTtcbiAgICBlbC5zdHlsZS5tYXhIZWlnaHQgPSBtYXhIZWlnaHQgKyBcInB4XCI7XG4gICAgZWwuc2Nyb2xsVG9wID0gZGlmZlk7XG5cbiAgICAvLyBUaGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlLCBmYWxsYmFjayB0byBzdGFuZGFyZCBhbmNob3JlZCBwb3NpdGlvbmluZ1xuICAgIGlmIChvbkZhbGxiYWNrQ2hhbmdlKSB7XG4gICAgICBpZiAoZWwub2Zmc2V0SGVpZ2h0IDwgaXRlbS5vZmZzZXRIZWlnaHQgKiBNYXRoLm1pbihtaW5JdGVtc1Zpc2libGUsIGxpc3RSZWYuY3VycmVudC5sZW5ndGggLSAxKSAtIDEgfHwgcmVmT3ZlcmZsb3cudG9wID49IC1yZWZlcmVuY2VPdmVyZmxvd1RocmVzaG9sZCB8fCByZWZPdmVyZmxvdy5ib3R0b20gPj0gLXJlZmVyZW5jZU92ZXJmbG93VGhyZXNob2xkKSB7XG4gICAgICAgIFJlYWN0RE9NLmZsdXNoU3luYygoKSA9PiBvbkZhbGxiYWNrQ2hhbmdlKHRydWUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFJlYWN0RE9NLmZsdXNoU3luYygoKSA9PiBvbkZhbGxiYWNrQ2hhbmdlKGZhbHNlKSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChvdmVyZmxvd1JlZikge1xuICAgICAgb3ZlcmZsb3dSZWYuY3VycmVudCA9IGF3YWl0IGRldGVjdE92ZXJmbG93KGdldEFyZ3NXaXRoQ3VzdG9tRmxvYXRpbmdIZWlnaHQoe1xuICAgICAgICAuLi5uZXh0QXJncyxcbiAgICAgICAgeTogbmV4dFlcbiAgICAgIH0sIGVsLm9mZnNldEhlaWdodCksIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB5OiBuZXh0WVxuICAgIH07XG4gIH1cbn0pO1xuLyoqXG4gKiBDaGFuZ2VzIHRoZSBgaW5uZXJgIG1pZGRsZXdhcmUncyBgb2Zmc2V0YCB1cG9uIGEgYHdoZWVsYCBldmVudCB0b1xuICogZXhwYW5kIHRoZSBmbG9hdGluZyBlbGVtZW50J3MgaGVpZ2h0LCByZXZlYWxpbmcgbW9yZSBsaXN0IGl0ZW1zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubmVyXG4gKi9cbmZ1bmN0aW9uIHVzZUlubmVyT2Zmc2V0KGNvbnRleHQsIHByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICBvcGVuLFxuICAgIGVsZW1lbnRzXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgZW5hYmxlZCA9IHRydWUsXG4gICAgb3ZlcmZsb3dSZWYsXG4gICAgc2Nyb2xsUmVmLFxuICAgIG9uQ2hhbmdlOiB1bnN0YWJsZV9vbkNoYW5nZVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IG9uQ2hhbmdlID0gdXNlRWZmZWN0RXZlbnQodW5zdGFibGVfb25DaGFuZ2UpO1xuICBjb25zdCBjb250cm9sbGVkU2Nyb2xsaW5nUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgcHJldlNjcm9sbFRvcFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgaW5pdGlhbE92ZXJmbG93UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZW5hYmxlZCkgcmV0dXJuO1xuICAgIGZ1bmN0aW9uIG9uV2hlZWwoZSkge1xuICAgICAgaWYgKGUuY3RybEtleSB8fCAhZWwgfHwgb3ZlcmZsb3dSZWYuY3VycmVudCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRZID0gZS5kZWx0YVk7XG4gICAgICBjb25zdCBpc0F0VG9wID0gb3ZlcmZsb3dSZWYuY3VycmVudC50b3AgPj0gLTAuNTtcbiAgICAgIGNvbnN0IGlzQXRCb3R0b20gPSBvdmVyZmxvd1JlZi5jdXJyZW50LmJvdHRvbSA+PSAtMC41O1xuICAgICAgY29uc3QgcmVtYWluaW5nU2Nyb2xsID0gZWwuc2Nyb2xsSGVpZ2h0IC0gZWwuY2xpZW50SGVpZ2h0O1xuICAgICAgY29uc3Qgc2lnbiA9IGRZIDwgMCA/IC0xIDogMTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IGRZIDwgMCA/ICdtYXgnIDogJ21pbic7XG4gICAgICBpZiAoZWwuc2Nyb2xsSGVpZ2h0IDw9IGVsLmNsaWVudEhlaWdodCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIWlzQXRUb3AgJiYgZFkgPiAwIHx8ICFpc0F0Qm90dG9tICYmIGRZIDwgMCkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIFJlYWN0RE9NLmZsdXNoU3luYygoKSA9PiB7XG4gICAgICAgICAgb25DaGFuZ2UoZCA9PiBkICsgTWF0aFttZXRob2RdKGRZLCByZW1haW5pbmdTY3JvbGwgKiBzaWduKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICgvZmlyZWZveC9pLnRlc3QoZ2V0VXNlckFnZW50KCkpKSB7XG4gICAgICAgIC8vIE5lZWRlZCB0byBwcm9wYWdhdGUgc2Nyb2xsaW5nIGR1cmluZyBtb21lbnR1bSBzY3JvbGxpbmcgcGhhc2Ugb25jZVxuICAgICAgICAvLyBpdCBnZXRzIGxpbWl0ZWQgYnkgdGhlIGJvdW5kYXJ5LiBVWCBpbXByb3ZlbWVudCwgbm90IGNyaXRpY2FsLlxuICAgICAgICBlbC5zY3JvbGxUb3AgKz0gZFk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGVsID0gKHNjcm9sbFJlZiA9PSBudWxsID8gdm9pZCAwIDogc2Nyb2xsUmVmLmN1cnJlbnQpIHx8IGVsZW1lbnRzLmZsb2F0aW5nO1xuICAgIGlmIChvcGVuICYmIGVsKSB7XG4gICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIG9uV2hlZWwpO1xuXG4gICAgICAvLyBXYWl0IGZvciB0aGUgcG9zaXRpb24gdG8gYmUgcmVhZHkuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBwcmV2U2Nyb2xsVG9wUmVmLmN1cnJlbnQgPSBlbC5zY3JvbGxUb3A7XG4gICAgICAgIGlmIChvdmVyZmxvd1JlZi5jdXJyZW50ICE9IG51bGwpIHtcbiAgICAgICAgICBpbml0aWFsT3ZlcmZsb3dSZWYuY3VycmVudCA9IHtcbiAgICAgICAgICAgIC4uLm92ZXJmbG93UmVmLmN1cnJlbnRcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHByZXZTY3JvbGxUb3BSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgIGluaXRpYWxPdmVyZmxvd1JlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBvbldoZWVsKTtcbiAgICAgIH07XG4gICAgfVxuICB9LCBbZW5hYmxlZCwgb3BlbiwgZWxlbWVudHMuZmxvYXRpbmcsIG92ZXJmbG93UmVmLCBzY3JvbGxSZWYsIG9uQ2hhbmdlXSk7XG4gIGNvbnN0IGZsb2F0aW5nID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIG9uS2V5RG93bigpIHtcbiAgICAgIGNvbnRyb2xsZWRTY3JvbGxpbmdSZWYuY3VycmVudCA9IHRydWU7XG4gICAgfSxcbiAgICBvbldoZWVsKCkge1xuICAgICAgY29udHJvbGxlZFNjcm9sbGluZ1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgfSxcbiAgICBvblBvaW50ZXJNb3ZlKCkge1xuICAgICAgY29udHJvbGxlZFNjcm9sbGluZ1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgfSxcbiAgICBvblNjcm9sbCgpIHtcbiAgICAgIGNvbnN0IGVsID0gKHNjcm9sbFJlZiA9PSBudWxsID8gdm9pZCAwIDogc2Nyb2xsUmVmLmN1cnJlbnQpIHx8IGVsZW1lbnRzLmZsb2F0aW5nO1xuICAgICAgaWYgKCFvdmVyZmxvd1JlZi5jdXJyZW50IHx8ICFlbCB8fCAhY29udHJvbGxlZFNjcm9sbGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChwcmV2U2Nyb2xsVG9wUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsRGlmZiA9IGVsLnNjcm9sbFRvcCAtIHByZXZTY3JvbGxUb3BSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKG92ZXJmbG93UmVmLmN1cnJlbnQuYm90dG9tIDwgLTAuNSAmJiBzY3JvbGxEaWZmIDwgLTEgfHwgb3ZlcmZsb3dSZWYuY3VycmVudC50b3AgPCAtMC41ICYmIHNjcm9sbERpZmYgPiAxKSB7XG4gICAgICAgICAgUmVhY3RET00uZmx1c2hTeW5jKCgpID0+IG9uQ2hhbmdlKGQgPT4gZCArIHNjcm9sbERpZmYpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBbRmlyZWZveF0gV2FpdCBmb3IgdGhlIGhlaWdodCBjaGFuZ2UgdG8gaGF2ZSBiZWVuIGFwcGxpZWQuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBwcmV2U2Nyb2xsVG9wUmVmLmN1cnJlbnQgPSBlbC5zY3JvbGxUb3A7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pLCBbZWxlbWVudHMuZmxvYXRpbmcsIG9uQ2hhbmdlLCBvdmVyZmxvd1JlZiwgc2Nyb2xsUmVmXSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IGVuYWJsZWQgPyB7XG4gICAgZmxvYXRpbmdcbiAgfSA6IHt9LCBbZW5hYmxlZCwgZmxvYXRpbmddKTtcbn1cblxuZnVuY3Rpb24gaXNQb2ludEluUG9seWdvbihwb2ludCwgcG9seWdvbikge1xuICBjb25zdCBbeCwgeV0gPSBwb2ludDtcbiAgbGV0IGlzSW5zaWRlID0gZmFsc2U7XG4gIGNvbnN0IGxlbmd0aCA9IHBvbHlnb24ubGVuZ3RoO1xuICBmb3IgKGxldCBpID0gMCwgaiA9IGxlbmd0aCAtIDE7IGkgPCBsZW5ndGg7IGogPSBpKyspIHtcbiAgICBjb25zdCBbeGksIHlpXSA9IHBvbHlnb25baV0gfHwgWzAsIDBdO1xuICAgIGNvbnN0IFt4aiwgeWpdID0gcG9seWdvbltqXSB8fCBbMCwgMF07XG4gICAgY29uc3QgaW50ZXJzZWN0ID0geWkgPj0geSAhPT0geWogPj0geSAmJiB4IDw9ICh4aiAtIHhpKSAqICh5IC0geWkpIC8gKHlqIC0geWkpICsgeGk7XG4gICAgaWYgKGludGVyc2VjdCkge1xuICAgICAgaXNJbnNpZGUgPSAhaXNJbnNpZGU7XG4gICAgfVxuICB9XG4gIHJldHVybiBpc0luc2lkZTtcbn1cbmZ1bmN0aW9uIGlzSW5zaWRlKHBvaW50LCByZWN0KSB7XG4gIHJldHVybiBwb2ludFswXSA+PSByZWN0LnggJiYgcG9pbnRbMF0gPD0gcmVjdC54ICsgcmVjdC53aWR0aCAmJiBwb2ludFsxXSA+PSByZWN0LnkgJiYgcG9pbnRbMV0gPD0gcmVjdC55ICsgcmVjdC5oZWlnaHQ7XG59XG4vKipcbiAqIEdlbmVyYXRlcyBhIHNhZmUgcG9seWdvbiBhcmVhIHRoYXQgdGhlIHVzZXIgY2FuIHRyYXZlcnNlIHdpdGhvdXQgY2xvc2luZyB0aGVcbiAqIGZsb2F0aW5nIGVsZW1lbnQgb25jZSBsZWF2aW5nIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy91c2VIb3ZlciNzYWZlcG9seWdvblxuICovXG5mdW5jdGlvbiBzYWZlUG9seWdvbihvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIGJ1ZmZlciA9IDAuNSxcbiAgICBibG9ja1BvaW50ZXJFdmVudHMgPSBmYWxzZSxcbiAgICByZXF1aXJlSW50ZW50ID0gdHJ1ZVxuICB9ID0gb3B0aW9ucztcbiAgbGV0IHRpbWVvdXRJZDtcbiAgbGV0IGhhc0xhbmRlZCA9IGZhbHNlO1xuICBsZXQgbGFzdFggPSBudWxsO1xuICBsZXQgbGFzdFkgPSBudWxsO1xuICBsZXQgbGFzdEN1cnNvclRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgZnVuY3Rpb24gZ2V0Q3Vyc29yU3BlZWQoeCwgeSkge1xuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgY29uc3QgZWxhcHNlZFRpbWUgPSBjdXJyZW50VGltZSAtIGxhc3RDdXJzb3JUaW1lO1xuICAgIGlmIChsYXN0WCA9PT0gbnVsbCB8fCBsYXN0WSA9PT0gbnVsbCB8fCBlbGFwc2VkVGltZSA9PT0gMCkge1xuICAgICAgbGFzdFggPSB4O1xuICAgICAgbGFzdFkgPSB5O1xuICAgICAgbGFzdEN1cnNvclRpbWUgPSBjdXJyZW50VGltZTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBkZWx0YVggPSB4IC0gbGFzdFg7XG4gICAgY29uc3QgZGVsdGFZID0geSAtIGxhc3RZO1xuICAgIGNvbnN0IGRpc3RhbmNlID0gTWF0aC5zcXJ0KGRlbHRhWCAqIGRlbHRhWCArIGRlbHRhWSAqIGRlbHRhWSk7XG4gICAgY29uc3Qgc3BlZWQgPSBkaXN0YW5jZSAvIGVsYXBzZWRUaW1lOyAvLyBweCAvIG1zXG5cbiAgICBsYXN0WCA9IHg7XG4gICAgbGFzdFkgPSB5O1xuICAgIGxhc3RDdXJzb3JUaW1lID0gY3VycmVudFRpbWU7XG4gICAgcmV0dXJuIHNwZWVkO1xuICB9XG4gIGNvbnN0IGZuID0gX3JlZiA9PiB7XG4gICAgbGV0IHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgcGxhY2VtZW50LFxuICAgICAgZWxlbWVudHMsXG4gICAgICBvbkNsb3NlLFxuICAgICAgbm9kZUlkLFxuICAgICAgdHJlZVxuICAgIH0gPSBfcmVmO1xuICAgIHJldHVybiBmdW5jdGlvbiBvbk1vdXNlTW92ZShldmVudCkge1xuICAgICAgZnVuY3Rpb24gY2xvc2UoKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICBvbkNsb3NlKCk7XG4gICAgICB9XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgIGlmICghZWxlbWVudHMuZG9tUmVmZXJlbmNlIHx8ICFlbGVtZW50cy5mbG9hdGluZyB8fCBwbGFjZW1lbnQgPT0gbnVsbCB8fCB4ID09IG51bGwgfHwgeSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY2xpZW50WCxcbiAgICAgICAgY2xpZW50WVxuICAgICAgfSA9IGV2ZW50O1xuICAgICAgY29uc3QgY2xpZW50UG9pbnQgPSBbY2xpZW50WCwgY2xpZW50WV07XG4gICAgICBjb25zdCB0YXJnZXQgPSBnZXRUYXJnZXQoZXZlbnQpO1xuICAgICAgY29uc3QgaXNMZWF2ZSA9IGV2ZW50LnR5cGUgPT09ICdtb3VzZWxlYXZlJztcbiAgICAgIGNvbnN0IGlzT3ZlckZsb2F0aW5nRWwgPSBjb250YWlucyhlbGVtZW50cy5mbG9hdGluZywgdGFyZ2V0KTtcbiAgICAgIGNvbnN0IGlzT3ZlclJlZmVyZW5jZUVsID0gY29udGFpbnMoZWxlbWVudHMuZG9tUmVmZXJlbmNlLCB0YXJnZXQpO1xuICAgICAgY29uc3QgcmVmUmVjdCA9IGVsZW1lbnRzLmRvbVJlZmVyZW5jZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHJlY3QgPSBlbGVtZW50cy5mbG9hdGluZy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHNpZGUgPSBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbiAgICAgIGNvbnN0IGN1cnNvckxlYXZlRnJvbVJpZ2h0ID0geCA+IHJlY3QucmlnaHQgLSByZWN0LndpZHRoIC8gMjtcbiAgICAgIGNvbnN0IGN1cnNvckxlYXZlRnJvbUJvdHRvbSA9IHkgPiByZWN0LmJvdHRvbSAtIHJlY3QuaGVpZ2h0IC8gMjtcbiAgICAgIGNvbnN0IGlzT3ZlclJlZmVyZW5jZVJlY3QgPSBpc0luc2lkZShjbGllbnRQb2ludCwgcmVmUmVjdCk7XG4gICAgICBjb25zdCBpc0Zsb2F0aW5nV2lkZXIgPSByZWN0LndpZHRoID4gcmVmUmVjdC53aWR0aDtcbiAgICAgIGNvbnN0IGlzRmxvYXRpbmdUYWxsZXIgPSByZWN0LmhlaWdodCA+IHJlZlJlY3QuaGVpZ2h0O1xuICAgICAgY29uc3QgbGVmdCA9IChpc0Zsb2F0aW5nV2lkZXIgPyByZWZSZWN0IDogcmVjdCkubGVmdDtcbiAgICAgIGNvbnN0IHJpZ2h0ID0gKGlzRmxvYXRpbmdXaWRlciA/IHJlZlJlY3QgOiByZWN0KS5yaWdodDtcbiAgICAgIGNvbnN0IHRvcCA9IChpc0Zsb2F0aW5nVGFsbGVyID8gcmVmUmVjdCA6IHJlY3QpLnRvcDtcbiAgICAgIGNvbnN0IGJvdHRvbSA9IChpc0Zsb2F0aW5nVGFsbGVyID8gcmVmUmVjdCA6IHJlY3QpLmJvdHRvbTtcbiAgICAgIGlmIChpc092ZXJGbG9hdGluZ0VsKSB7XG4gICAgICAgIGhhc0xhbmRlZCA9IHRydWU7XG4gICAgICAgIGlmICghaXNMZWF2ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzT3ZlclJlZmVyZW5jZUVsKSB7XG4gICAgICAgIGhhc0xhbmRlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGlzT3ZlclJlZmVyZW5jZUVsICYmICFpc0xlYXZlKSB7XG4gICAgICAgIGhhc0xhbmRlZCA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gUHJldmVudCBvdmVybGFwcGluZyBmbG9hdGluZyBlbGVtZW50IGZyb20gYmVpbmcgc3R1Y2sgaW4gYW4gb3Blbi1jbG9zZVxuICAgICAgLy8gbG9vcDogaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8xOTEwXG4gICAgICBpZiAoaXNMZWF2ZSAmJiBpc0VsZW1lbnQoZXZlbnQucmVsYXRlZFRhcmdldCkgJiYgY29udGFpbnMoZWxlbWVudHMuZmxvYXRpbmcsIGV2ZW50LnJlbGF0ZWRUYXJnZXQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgYW55IG5lc3RlZCBjaGlsZCBpcyBvcGVuLCBhYm9ydC5cbiAgICAgIGlmICh0cmVlICYmIGdldENoaWxkcmVuKHRyZWUubm9kZXNSZWYuY3VycmVudCwgbm9kZUlkKS5zb21lKF9yZWYyID0+IHtcbiAgICAgICAgbGV0IHtcbiAgICAgICAgICBjb250ZXh0XG4gICAgICAgIH0gPSBfcmVmMjtcbiAgICAgICAgcmV0dXJuIGNvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbnRleHQub3BlbjtcbiAgICAgIH0pKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlIHBvaW50ZXIgaXMgbGVhdmluZyBmcm9tIHRoZSBvcHBvc2l0ZSBzaWRlLCB0aGUgXCJidWZmZXJcIiBsb2dpY1xuICAgICAgLy8gY3JlYXRlcyBhIHBvaW50IHdoZXJlIHRoZSBmbG9hdGluZyBlbGVtZW50IHJlbWFpbnMgb3BlbiwgYnV0IHNob3VsZCBiZVxuICAgICAgLy8gaWdub3JlZC5cbiAgICAgIC8vIEEgY29uc3RhbnQgb2YgMSBoYW5kbGVzIGZsb2F0aW5nIHBvaW50IHJvdW5kaW5nIGVycm9ycy5cbiAgICAgIGlmIChzaWRlID09PSAndG9wJyAmJiB5ID49IHJlZlJlY3QuYm90dG9tIC0gMSB8fCBzaWRlID09PSAnYm90dG9tJyAmJiB5IDw9IHJlZlJlY3QudG9wICsgMSB8fCBzaWRlID09PSAnbGVmdCcgJiYgeCA+PSByZWZSZWN0LnJpZ2h0IC0gMSB8fCBzaWRlID09PSAncmlnaHQnICYmIHggPD0gcmVmUmVjdC5sZWZ0ICsgMSkge1xuICAgICAgICByZXR1cm4gY2xvc2UoKTtcbiAgICAgIH1cblxuICAgICAgLy8gSWdub3JlIHdoZW4gdGhlIGN1cnNvciBpcyB3aXRoaW4gdGhlIHJlY3Rhbmd1bGFyIHRyb3VnaCBiZXR3ZWVuIHRoZVxuICAgICAgLy8gdHdvIGVsZW1lbnRzLiBTaW5jZSB0aGUgdHJpYW5nbGUgaXMgY3JlYXRlZCBmcm9tIHRoZSBjdXJzb3IgcG9pbnQsXG4gICAgICAvLyB3aGljaCBjYW4gc3RhcnQgYmV5b25kIHRoZSByZWYgZWxlbWVudCdzIGVkZ2UsIHRyYXZlcnNpbmcgYmFjayBhbmRcbiAgICAgIC8vIGZvcnRoIGZyb20gdGhlIHJlZiB0byB0aGUgZmxvYXRpbmcgZWxlbWVudCBjYW4gY2F1c2UgaXQgdG8gY2xvc2UuIFRoaXNcbiAgICAgIC8vIGVuc3VyZXMgaXQgYWx3YXlzIHJlbWFpbnMgb3BlbiBpbiB0aGF0IGNhc2UuXG4gICAgICBsZXQgcmVjdFBvbHkgPSBbXTtcbiAgICAgIHN3aXRjaCAoc2lkZSkge1xuICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgIHJlY3RQb2x5ID0gW1tsZWZ0LCByZWZSZWN0LnRvcCArIDFdLCBbbGVmdCwgcmVjdC5ib3R0b20gLSAxXSwgW3JpZ2h0LCByZWN0LmJvdHRvbSAtIDFdLCBbcmlnaHQsIHJlZlJlY3QudG9wICsgMV1dO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgIHJlY3RQb2x5ID0gW1tsZWZ0LCByZWN0LnRvcCArIDFdLCBbbGVmdCwgcmVmUmVjdC5ib3R0b20gLSAxXSwgW3JpZ2h0LCByZWZSZWN0LmJvdHRvbSAtIDFdLCBbcmlnaHQsIHJlY3QudG9wICsgMV1dO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICByZWN0UG9seSA9IFtbcmVjdC5yaWdodCAtIDEsIGJvdHRvbV0sIFtyZWN0LnJpZ2h0IC0gMSwgdG9wXSwgW3JlZlJlY3QubGVmdCArIDEsIHRvcF0sIFtyZWZSZWN0LmxlZnQgKyAxLCBib3R0b21dXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgIHJlY3RQb2x5ID0gW1tyZWZSZWN0LnJpZ2h0IC0gMSwgYm90dG9tXSwgW3JlZlJlY3QucmlnaHQgLSAxLCB0b3BdLCBbcmVjdC5sZWZ0ICsgMSwgdG9wXSwgW3JlY3QubGVmdCArIDEsIGJvdHRvbV1dO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gZ2V0UG9seWdvbihfcmVmMykge1xuICAgICAgICBsZXQgW3gsIHldID0gX3JlZjM7XG4gICAgICAgIHN3aXRjaCAoc2lkZSkge1xuICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvaW50T25lID0gW2lzRmxvYXRpbmdXaWRlciA/IHggKyBidWZmZXIgLyAyIDogY3Vyc29yTGVhdmVGcm9tUmlnaHQgPyB4ICsgYnVmZmVyICogNCA6IHggLSBidWZmZXIgKiA0LCB5ICsgYnVmZmVyICsgMV07XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvaW50VHdvID0gW2lzRmxvYXRpbmdXaWRlciA/IHggLSBidWZmZXIgLyAyIDogY3Vyc29yTGVhdmVGcm9tUmlnaHQgPyB4ICsgYnVmZmVyICogNCA6IHggLSBidWZmZXIgKiA0LCB5ICsgYnVmZmVyICsgMV07XG4gICAgICAgICAgICAgIGNvbnN0IGNvbW1vblBvaW50cyA9IFtbcmVjdC5sZWZ0LCBjdXJzb3JMZWF2ZUZyb21SaWdodCA/IHJlY3QuYm90dG9tIC0gYnVmZmVyIDogaXNGbG9hdGluZ1dpZGVyID8gcmVjdC5ib3R0b20gLSBidWZmZXIgOiByZWN0LnRvcF0sIFtyZWN0LnJpZ2h0LCBjdXJzb3JMZWF2ZUZyb21SaWdodCA/IGlzRmxvYXRpbmdXaWRlciA/IHJlY3QuYm90dG9tIC0gYnVmZmVyIDogcmVjdC50b3AgOiByZWN0LmJvdHRvbSAtIGJ1ZmZlcl1dO1xuICAgICAgICAgICAgICByZXR1cm4gW2N1cnNvclBvaW50T25lLCBjdXJzb3JQb2ludFR3bywgLi4uY29tbW9uUG9pbnRzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb25zdCBjdXJzb3JQb2ludE9uZSA9IFtpc0Zsb2F0aW5nV2lkZXIgPyB4ICsgYnVmZmVyIC8gMiA6IGN1cnNvckxlYXZlRnJvbVJpZ2h0ID8geCArIGJ1ZmZlciAqIDQgOiB4IC0gYnVmZmVyICogNCwgeSAtIGJ1ZmZlcl07XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvaW50VHdvID0gW2lzRmxvYXRpbmdXaWRlciA/IHggLSBidWZmZXIgLyAyIDogY3Vyc29yTGVhdmVGcm9tUmlnaHQgPyB4ICsgYnVmZmVyICogNCA6IHggLSBidWZmZXIgKiA0LCB5IC0gYnVmZmVyXTtcbiAgICAgICAgICAgICAgY29uc3QgY29tbW9uUG9pbnRzID0gW1tyZWN0LmxlZnQsIGN1cnNvckxlYXZlRnJvbVJpZ2h0ID8gcmVjdC50b3AgKyBidWZmZXIgOiBpc0Zsb2F0aW5nV2lkZXIgPyByZWN0LnRvcCArIGJ1ZmZlciA6IHJlY3QuYm90dG9tXSwgW3JlY3QucmlnaHQsIGN1cnNvckxlYXZlRnJvbVJpZ2h0ID8gaXNGbG9hdGluZ1dpZGVyID8gcmVjdC50b3AgKyBidWZmZXIgOiByZWN0LmJvdHRvbSA6IHJlY3QudG9wICsgYnVmZmVyXV07XG4gICAgICAgICAgICAgIHJldHVybiBbY3Vyc29yUG9pbnRPbmUsIGN1cnNvclBvaW50VHdvLCAuLi5jb21tb25Qb2ludHNdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb25zdCBjdXJzb3JQb2ludE9uZSA9IFt4ICsgYnVmZmVyICsgMSwgaXNGbG9hdGluZ1RhbGxlciA/IHkgKyBidWZmZXIgLyAyIDogY3Vyc29yTGVhdmVGcm9tQm90dG9tID8geSArIGJ1ZmZlciAqIDQgOiB5IC0gYnVmZmVyICogNF07XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvaW50VHdvID0gW3ggKyBidWZmZXIgKyAxLCBpc0Zsb2F0aW5nVGFsbGVyID8geSAtIGJ1ZmZlciAvIDIgOiBjdXJzb3JMZWF2ZUZyb21Cb3R0b20gPyB5ICsgYnVmZmVyICogNCA6IHkgLSBidWZmZXIgKiA0XTtcbiAgICAgICAgICAgICAgY29uc3QgY29tbW9uUG9pbnRzID0gW1tjdXJzb3JMZWF2ZUZyb21Cb3R0b20gPyByZWN0LnJpZ2h0IC0gYnVmZmVyIDogaXNGbG9hdGluZ1RhbGxlciA/IHJlY3QucmlnaHQgLSBidWZmZXIgOiByZWN0LmxlZnQsIHJlY3QudG9wXSwgW2N1cnNvckxlYXZlRnJvbUJvdHRvbSA/IGlzRmxvYXRpbmdUYWxsZXIgPyByZWN0LnJpZ2h0IC0gYnVmZmVyIDogcmVjdC5sZWZ0IDogcmVjdC5yaWdodCAtIGJ1ZmZlciwgcmVjdC5ib3R0b21dXTtcbiAgICAgICAgICAgICAgcmV0dXJuIFsuLi5jb21tb25Qb2ludHMsIGN1cnNvclBvaW50T25lLCBjdXJzb3JQb2ludFR3b107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb25zdCBjdXJzb3JQb2ludE9uZSA9IFt4IC0gYnVmZmVyLCBpc0Zsb2F0aW5nVGFsbGVyID8geSArIGJ1ZmZlciAvIDIgOiBjdXJzb3JMZWF2ZUZyb21Cb3R0b20gPyB5ICsgYnVmZmVyICogNCA6IHkgLSBidWZmZXIgKiA0XTtcbiAgICAgICAgICAgICAgY29uc3QgY3Vyc29yUG9pbnRUd28gPSBbeCAtIGJ1ZmZlciwgaXNGbG9hdGluZ1RhbGxlciA/IHkgLSBidWZmZXIgLyAyIDogY3Vyc29yTGVhdmVGcm9tQm90dG9tID8geSArIGJ1ZmZlciAqIDQgOiB5IC0gYnVmZmVyICogNF07XG4gICAgICAgICAgICAgIGNvbnN0IGNvbW1vblBvaW50cyA9IFtbY3Vyc29yTGVhdmVGcm9tQm90dG9tID8gcmVjdC5sZWZ0ICsgYnVmZmVyIDogaXNGbG9hdGluZ1RhbGxlciA/IHJlY3QubGVmdCArIGJ1ZmZlciA6IHJlY3QucmlnaHQsIHJlY3QudG9wXSwgW2N1cnNvckxlYXZlRnJvbUJvdHRvbSA/IGlzRmxvYXRpbmdUYWxsZXIgPyByZWN0LmxlZnQgKyBidWZmZXIgOiByZWN0LnJpZ2h0IDogcmVjdC5sZWZ0ICsgYnVmZmVyLCByZWN0LmJvdHRvbV1dO1xuICAgICAgICAgICAgICByZXR1cm4gW2N1cnNvclBvaW50T25lLCBjdXJzb3JQb2ludFR3bywgLi4uY29tbW9uUG9pbnRzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzUG9pbnRJblBvbHlnb24oW2NsaWVudFgsIGNsaWVudFldLCByZWN0UG9seSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGhhc0xhbmRlZCAmJiAhaXNPdmVyUmVmZXJlbmNlUmVjdCkge1xuICAgICAgICByZXR1cm4gY2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNMZWF2ZSAmJiByZXF1aXJlSW50ZW50KSB7XG4gICAgICAgIGNvbnN0IGN1cnNvclNwZWVkID0gZ2V0Q3Vyc29yU3BlZWQoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XG4gICAgICAgIGNvbnN0IGN1cnNvclNwZWVkVGhyZXNob2xkID0gMC4xO1xuICAgICAgICBpZiAoY3Vyc29yU3BlZWQgIT09IG51bGwgJiYgY3Vyc29yU3BlZWQgPCBjdXJzb3JTcGVlZFRocmVzaG9sZCkge1xuICAgICAgICAgIHJldHVybiBjbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWlzUG9pbnRJblBvbHlnb24oW2NsaWVudFgsIGNsaWVudFldLCBnZXRQb2x5Z29uKFt4LCB5XSkpKSB7XG4gICAgICAgIGNsb3NlKCk7XG4gICAgICB9IGVsc2UgaWYgKCFoYXNMYW5kZWQgJiYgcmVxdWlyZUludGVudCkge1xuICAgICAgICB0aW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dChjbG9zZSwgNDApO1xuICAgICAgfVxuICAgIH07XG4gIH07XG4gIGZuLl9fb3B0aW9ucyA9IHtcbiAgICBibG9ja1BvaW50ZXJFdmVudHNcbiAgfTtcbiAgcmV0dXJuIGZuO1xufVxuXG5leHBvcnQgeyBDb21wb3NpdGUsIENvbXBvc2l0ZUl0ZW0sIEZsb2F0aW5nQXJyb3csIEZsb2F0aW5nRGVsYXlHcm91cCwgRmxvYXRpbmdGb2N1c01hbmFnZXIsIEZsb2F0aW5nTGlzdCwgRmxvYXRpbmdOb2RlLCBGbG9hdGluZ092ZXJsYXksIEZsb2F0aW5nUG9ydGFsLCBGbG9hdGluZ1RyZWUsIGlubmVyLCBzYWZlUG9seWdvbiwgdXNlQ2xpY2ssIHVzZUNsaWVudFBvaW50LCB1c2VEZWxheUdyb3VwLCB1c2VEZWxheUdyb3VwQ29udGV4dCwgdXNlRGlzbWlzcywgdXNlRmxvYXRpbmcsIHVzZUZsb2F0aW5nTm9kZUlkLCB1c2VGbG9hdGluZ1BhcmVudE5vZGVJZCwgdXNlRmxvYXRpbmdQb3J0YWxOb2RlLCB1c2VGbG9hdGluZ1Jvb3RDb250ZXh0LCB1c2VGbG9hdGluZ1RyZWUsIHVzZUZvY3VzLCB1c2VIb3ZlciwgdXNlSWQsIHVzZUlubmVyT2Zmc2V0LCB1c2VJbnRlcmFjdGlvbnMsIHVzZUxpc3RJdGVtLCB1c2VMaXN0TmF2aWdhdGlvbiwgdXNlTWVyZ2VSZWZzLCB1c2VSb2xlLCB1c2VUcmFuc2l0aW9uU3RhdHVzLCB1c2VUcmFuc2l0aW9uU3R5bGVzLCB1c2VUeXBlYWhlYWQgfTtcbiIsImltcG9ydCB7IG9mZnNldCwgYXV0b1BsYWNlbWVudCwgZmxpcCwgc2hpZnQsIGFycm93IH0gZnJvbSAnQGZsb2F0aW5nLXVpL3JlYWN0JztcblxuY29uc3QgZ2V0TWlkZGxld2FyZSA9ICh7XG4gIGFycm93UmVmLFxuICBwbGFjZW1lbnRcbn0pID0+IHtcbiAgY29uc3QgbWlkZGxld2FyZSA9IFtdO1xuICBtaWRkbGV3YXJlLnB1c2gob2Zmc2V0KDgpKTtcbiAgbWlkZGxld2FyZS5wdXNoKHBsYWNlbWVudCA9PT0gXCJhdXRvXCIgPyBhdXRvUGxhY2VtZW50KCkgOiBmbGlwKCkpO1xuICBtaWRkbGV3YXJlLnB1c2goc2hpZnQoeyBwYWRkaW5nOiA4IH0pKTtcbiAgaWYgKGFycm93UmVmPy5jdXJyZW50KSB7XG4gICAgbWlkZGxld2FyZS5wdXNoKGFycm93KHsgZWxlbWVudDogYXJyb3dSZWYuY3VycmVudCB9KSk7XG4gIH1cbiAgcmV0dXJuIG1pZGRsZXdhcmU7XG59O1xuY29uc3QgZ2V0UGxhY2VtZW50ID0gKHsgcGxhY2VtZW50IH0pID0+IHtcbiAgcmV0dXJuIHBsYWNlbWVudCA9PT0gXCJhdXRvXCIgPyB2b2lkIDAgOiBwbGFjZW1lbnQ7XG59O1xuY29uc3QgZ2V0QXJyb3dQbGFjZW1lbnQgPSAoeyBwbGFjZW1lbnQgfSkgPT4ge1xuICByZXR1cm4ge1xuICAgIHRvcDogXCJib3R0b21cIixcbiAgICByaWdodDogXCJsZWZ0XCIsXG4gICAgYm90dG9tOiBcInRvcFwiLFxuICAgIGxlZnQ6IFwicmlnaHRcIlxuICB9W3BsYWNlbWVudC5zcGxpdChcIi1cIilbMF1dO1xufTtcblxuZXhwb3J0IHsgZ2V0QXJyb3dQbGFjZW1lbnQsIGdldE1pZGRsZXdhcmUsIGdldFBsYWNlbWVudCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVscGVycy5tanMubWFwXG4iLCJpbXBvcnQgeyB1c2VGbG9hdGluZywgYXV0b1VwZGF0ZSwgdXNlSW50ZXJhY3Rpb25zLCB1c2VDbGljaywgdXNlSG92ZXIsIHNhZmVQb2x5Z29uLCB1c2VEaXNtaXNzLCB1c2VSb2xlIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3JlYWN0JztcbmltcG9ydCB7IGdldFBsYWNlbWVudCwgZ2V0TWlkZGxld2FyZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvRmxvYXRpbmcvaGVscGVycy5tanMnO1xuXG5jb25zdCB1c2VCYXNlRkxvYXRpbmcgPSAoe1xuICBvcGVuLFxuICBhcnJvd1JlZixcbiAgcGxhY2VtZW50ID0gXCJ0b3BcIixcbiAgc2V0T3BlblxufSkgPT4ge1xuICByZXR1cm4gdXNlRmxvYXRpbmcoe1xuICAgIHBsYWNlbWVudDogZ2V0UGxhY2VtZW50KHsgcGxhY2VtZW50IH0pLFxuICAgIG9wZW4sXG4gICAgb25PcGVuQ2hhbmdlOiBzZXRPcGVuLFxuICAgIHdoaWxlRWxlbWVudHNNb3VudGVkOiBhdXRvVXBkYXRlLFxuICAgIG1pZGRsZXdhcmU6IGdldE1pZGRsZXdhcmUoeyBwbGFjZW1lbnQsIGFycm93UmVmIH0pXG4gIH0pO1xufTtcbmNvbnN0IHVzZUZsb2F0aW5nSW50ZXJhY3Rpb25zID0gKHtcbiAgY29udGV4dCxcbiAgdHJpZ2dlcixcbiAgcm9sZSA9IFwidG9vbHRpcFwiLFxuICBpbnRlcmFjdGlvbnMgPSBbXVxufSkgPT4ge1xuICByZXR1cm4gdXNlSW50ZXJhY3Rpb25zKFtcbiAgICB1c2VDbGljayhjb250ZXh0LCB7IGVuYWJsZWQ6IHRyaWdnZXIgPT09IFwiY2xpY2tcIiB9KSxcbiAgICB1c2VIb3Zlcihjb250ZXh0LCB7XG4gICAgICBlbmFibGVkOiB0cmlnZ2VyID09PSBcImhvdmVyXCIsXG4gICAgICBoYW5kbGVDbG9zZTogc2FmZVBvbHlnb24oKVxuICAgIH0pLFxuICAgIHVzZURpc21pc3MoY29udGV4dCksXG4gICAgdXNlUm9sZShjb250ZXh0LCB7IHJvbGUgfSksXG4gICAgLi4uaW50ZXJhY3Rpb25zXG4gIF0pO1xufTtcblxuZXhwb3J0IHsgdXNlQmFzZUZMb2F0aW5nLCB1c2VGbG9hdGluZ0ludGVyYWN0aW9ucyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlLWZsb2F0aW5nLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIEZyYWdtZW50LCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VGb2N1cywgYXV0b1VwZGF0ZSB9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdCc7XG5pbXBvcnQgeyB1c2VSZWYsIHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgdXNlQmFzZUZMb2F0aW5nLCB1c2VGbG9hdGluZ0ludGVyYWN0aW9ucyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZS1mbG9hdGluZy5tanMnO1xuaW1wb3J0IHsgZ2V0QXJyb3dQbGFjZW1lbnQgfSBmcm9tICcuL2hlbHBlcnMubWpzJztcblxuY29uc3QgRmxvYXRpbmcgPSAoe1xuICBhbmltYXRpb24gPSBcImR1cmF0aW9uLTMwMFwiLFxuICBhcnJvdyA9IHRydWUsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGNvbnRlbnQsXG4gIHBsYWNlbWVudCA9IFwidG9wXCIsXG4gIHN0eWxlID0gXCJkYXJrXCIsXG4gIHRoZW1lLFxuICB0cmlnZ2VyID0gXCJob3ZlclwiLFxuICBtaW5XaWR0aCxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgYXJyb3dSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZmxvYXRpbmdQcm9wZXJ0aWVzID0gdXNlQmFzZUZMb2F0aW5nKHtcbiAgICBvcGVuLFxuICAgIHBsYWNlbWVudCxcbiAgICBhcnJvd1JlZixcbiAgICBzZXRPcGVuXG4gIH0pO1xuICBjb25zdCB7XG4gICAgY29udGV4dCxcbiAgICBtaWRkbGV3YXJlRGF0YTogeyBhcnJvdzogeyB4OiBhcnJvd1gsIHk6IGFycm93WSB9ID0ge30gfSxcbiAgICByZWZzLFxuICAgIHN0cmF0ZWd5LFxuICAgIHVwZGF0ZSxcbiAgICB4LFxuICAgIHlcbiAgfSA9IGZsb2F0aW5nUHJvcGVydGllcztcbiAgY29uc3QgZm9jdXMgPSB1c2VGb2N1cyhjb250ZXh0KTtcbiAgY29uc3QgeyBnZXRGbG9hdGluZ1Byb3BzLCBnZXRSZWZlcmVuY2VQcm9wcyB9ID0gdXNlRmxvYXRpbmdJbnRlcmFjdGlvbnMoe1xuICAgIGNvbnRleHQsXG4gICAgcm9sZTogXCJ0b29sdGlwXCIsXG4gICAgdHJpZ2dlcixcbiAgICBpbnRlcmFjdGlvbnM6IFtmb2N1c11cbiAgfSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZnMucmVmZXJlbmNlLmN1cnJlbnQgJiYgcmVmcy5mbG9hdGluZy5jdXJyZW50ICYmIG9wZW4pIHtcbiAgICAgIHJldHVybiBhdXRvVXBkYXRlKHJlZnMucmVmZXJlbmNlLmN1cnJlbnQsIHJlZnMuZmxvYXRpbmcuY3VycmVudCwgdXBkYXRlKTtcbiAgICB9XG4gIH0sIFtvcGVuLCByZWZzLmZsb2F0aW5nLCByZWZzLnJlZmVyZW5jZSwgdXBkYXRlXSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhGcmFnbWVudCwgeyBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImRpdlwiLFxuICAgICAge1xuICAgICAgICByZWY6IHJlZnMuc2V0UmVmZXJlbmNlLFxuICAgICAgICBjbGFzc05hbWU6IHRoZW1lLnRhcmdldCxcbiAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLXRvb2x0aXAtdGFyZ2V0XCIsXG4gICAgICAgIC4uLmdldFJlZmVyZW5jZVByb3BzKCksXG4gICAgICAgIGNoaWxkcmVuXG4gICAgICB9XG4gICAgKSxcbiAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICAgIFwiZGl2XCIsXG4gICAgICB7XG4gICAgICAgIHJlZjogcmVmcy5zZXRGbG9hdGluZyxcbiAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLXRvb2x0aXBcIixcbiAgICAgICAgLi4uZ2V0RmxvYXRpbmdQcm9wcyh7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgdGhlbWUuYmFzZSxcbiAgICAgICAgICAgIGFuaW1hdGlvbiAmJiBgJHt0aGVtZS5hbmltYXRpb259ICR7YW5pbWF0aW9ufWAsXG4gICAgICAgICAgICAhb3BlbiAmJiB0aGVtZS5oaWRkZW4sXG4gICAgICAgICAgICB0aGVtZS5zdHlsZVtzdHlsZV0sXG4gICAgICAgICAgICBjbGFzc05hbWVcbiAgICAgICAgICApLFxuICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogc3RyYXRlZ3ksXG4gICAgICAgICAgICB0b3A6IHkgPz8gXCIgXCIsXG4gICAgICAgICAgICBsZWZ0OiB4ID8/IFwiIFwiLFxuICAgICAgICAgICAgbWluV2lkdGhcbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLnByb3BzXG4gICAgICAgIH0pLFxuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmNvbnRlbnQsIGNoaWxkcmVuOiBjb250ZW50IH0pLFxuICAgICAgICAgIGFycm93ICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgICAgICAgdGhlbWUuYXJyb3cuYmFzZSxcbiAgICAgICAgICAgICAgICBzdHlsZSA9PT0gXCJkYXJrXCIgJiYgdGhlbWUuYXJyb3cuc3R5bGUuZGFyayxcbiAgICAgICAgICAgICAgICBzdHlsZSA9PT0gXCJsaWdodFwiICYmIHRoZW1lLmFycm93LnN0eWxlLmxpZ2h0LFxuICAgICAgICAgICAgICAgIHN0eWxlID09PSBcImF1dG9cIiAmJiB0aGVtZS5hcnJvdy5zdHlsZS5hdXRvXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS10b29sdGlwLWFycm93XCIsXG4gICAgICAgICAgICAgIHJlZjogYXJyb3dSZWYsXG4gICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgdG9wOiBhcnJvd1kgPz8gXCIgXCIsXG4gICAgICAgICAgICAgICAgbGVmdDogYXJyb3dYID8/IFwiIFwiLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBcIiBcIixcbiAgICAgICAgICAgICAgICBib3R0b206IFwiIFwiLFxuICAgICAgICAgICAgICAgIFtnZXRBcnJvd1BsYWNlbWVudCh7IHBsYWNlbWVudDogZmxvYXRpbmdQcm9wZXJ0aWVzLnBsYWNlbWVudCB9KV06IHRoZW1lLmFycm93LnBsYWNlbWVudFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBjaGlsZHJlbjogXCJcXHhBMFwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICBdXG4gICAgICB9XG4gICAgKVxuICBdIH0pO1xufTtcblxuZXhwb3J0IHsgRmxvYXRpbmcgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZsb2F0aW5nLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgRmxvYXRpbmcgfSBmcm9tICcuLi9GbG9hdGluZy9GbG9hdGluZy5tanMnO1xuXG5jb25zdCBUb29sdGlwID0gKHtcbiAgYW5pbWF0aW9uID0gXCJkdXJhdGlvbi0zMDBcIixcbiAgYXJyb3cgPSB0cnVlLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBjb250ZW50LFxuICBwbGFjZW1lbnQgPSBcInRvcFwiLFxuICBzdHlsZSA9IFwiZGFya1wiLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgdHJpZ2dlciA9IFwiaG92ZXJcIixcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS50b29sdGlwLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIEZsb2F0aW5nLFxuICAgIHtcbiAgICAgIGFuaW1hdGlvbixcbiAgICAgIGFycm93LFxuICAgICAgY29udGVudCxcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIHN0eWxlLFxuICAgICAgdGhlbWUsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlblxuICAgIH1cbiAgKTtcbn07XG5Ub29sdGlwLmRpc3BsYXlOYW1lID0gXCJUb29sdGlwXCI7XG5cbmV4cG9ydCB7IFRvb2x0aXAgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRvb2x0aXAubWpzLm1hcFxuIiwiLy8gVEhJUyBGSUxFIElTIEFVVE8gR0VORVJBVEVEXG5pbXBvcnQgeyBHZW5JY29uIH0gZnJvbSAnLi4vbGliL2luZGV4Lm1qcyc7XG5leHBvcnQgZnVuY3Rpb24gRmE0Mkdyb3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA5NlY0MTZDMzQxLjAxMSA0MTYgMzYxLjgxOCA0MTEuODYxIDM4MS4yMyA0MDMuODIxQzQwMC42NDEgMzk1Ljc4IDQxOC4yOCAzODMuOTk1IDQzMy4xMzggMzY5LjEzOEM0NDcuOTk1IDM1NC4yOCA0NTkuNzggMzM2LjY0MSA0NjcuODIxIDMxNy4yM0M0NzUuODYxIDI5Ny44MTggNDgwIDI3Ny4wMTEgNDgwIDI1NkM0ODAgMjM0Ljk4OSA0NzUuODYxIDIxNC4xODIgNDY3LjgyMSAxOTQuNzcxQzQ1OS43OCAxNzUuMzU5IDQ0Ny45OTUgMTU3LjcyIDQzMy4xMzggMTQyLjg2M0M0MTguMjggMTI4LjAwNSA0MDAuNjQxIDExNi4yMiAzODEuMjMgMTA4LjE3OUMzNjEuODE4IDEwMC4xMzkgMzQxLjAxMSA5NiAzMjAgOTZaTTAgMjU2TDE2MC4wMDIgNDE2TDMyMC4wMDMgMjU2TDE2MC4wMDIgOTZMMCAyNTZaTTQ4MCAyNTZDNDgwIDI3Ny4wMTEgNDg0LjEzOCAyOTcuODE4IDQ5Mi4xNzkgMzE3LjIzQzUwMC4yMTkgMzM2LjY0MyA1MTIuMDA1IDM1NC4yOCA1MjYuODYyIDM2OS4xMzhDNTQxLjcyIDM4My45OTUgNTU5LjM1NyAzOTUuNzgxIDU3OC43NyA0MDMuODIxQzU5OC4xODIgNDExLjg2MiA2MTguOTg5IDQxNiA2NDAgNDE2Vjk2QzU5Ny41NjUgOTYgNTU2Ljg2OSAxMTIuODU4IDUyNi44NjIgMTQyLjg2M0M0OTYuODU3IDE3Mi44NjkgNDgwIDIxMy41NjUgNDgwIDI1NlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhNTAwUHggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAzLjMgMzQ0LjNjLTYuNS0xNC4yLTYuOS0xOC4zIDcuNC0yMy4xIDI1LjYtOCA4IDkuMiA0My4yIDQ5LjJoLjN2LTkzLjljMS4yLTUwLjIgNDQtOTIuMiA5Ny43LTkyLjIgNTMuOSAwIDk3LjcgNDMuNSA5Ny43IDk2LjggMCA2My40LTYwLjggMTEzLjItMTI4LjUgOTMuMy0xMC41LTQuMi0yLjEtMzEuNyA4LjUtMjguNiA1MyAwIDg5LjQtMTAuMSA4OS40LTY0LjQgMC02MS03Ny4xLTg5LjYtMTE2LjktNDQuNi0yMy41IDI2LjQtMTcuNiA0Mi4xLTE3LjYgMTU3LjYgNTAuNyAzMSAxMTguMyAyMiAxNjAuNC0yMC4xIDI0LjgtMjQuOCAzOC41LTU4IDM4LjUtOTMgMC0zNS4yLTEzLjgtNjguMi0zOC44LTkzLjMtMjQuOC0yNC44LTU3LjgtMzguNS05My4zLTM4LjVzLTY4LjggMTMuOC05My41IDM4LjVjLS4zLjMtMTYgMTYuNS0yMS4yIDIzLjlsLS41LjZjLTMuMyA0LjctNi4zIDkuMS0yMC4xIDYuMS02LjktMS43LTE0LjMtNS44LTE0LjMtMTEuOFYyMGMwLTUgMy45LTEwLjUgMTAuNS0xMC41aDI0MS4zYzguMyAwIDguMyAxMS42IDguMyAxNS4xIDAgMy45IDAgMTUuMS04LjMgMTUuMUgxMzAuM3YxMzIuOWguM2MxMDQuMi0xMDkuOCAyODIuOC0zNiAyODIuOCAxMDguOSAwIDE3OC4xLTI0NC44IDIyMC4zLTMxMC4xIDYyLjh6bTYzLjMtMjYwLjhjLS41IDQuMiA0LjYgMjQuNSAxNC42IDIwLjZDMzA2IDU2LjYgMzg0IDE0NC41IDM5MC42IDE0NC41YzQuOCAwIDIyLjgtMTUuMyAxNC4zLTIyLjgtOTMuMi04OS0yMzQuNS01Ny0yMzguMy0zOC4yek0zOTMgNDE0LjdDMjgzIDUyNC42IDk0IDQ3NS41IDYxIDMxMC41YzAtMTIuMi0zMC40LTcuNC0yOC45IDMuMyAyNCAxNzMuNCAyNDYgMjU2LjkgMzgxLjYgMTIxLjMgNi45LTcuOC0xMi42LTI4LjQtMjAuNy0yMC40ek0yMTMuNiAzMDYuNmMwIDQgNC4zIDcuMyA1LjUgOC41IDMgMyA2LjEgNC40IDguNSA0LjQgMy44IDAgMi42LjIgMjIuMy0xOS41IDE5LjYgMTkuMyAxOS4xIDE5LjUgMjIuMyAxOS41IDUuNCAwIDE4LjUtMTAuNCAxMC43LTE4LjJMMjY1LjYgMjg0bDE4LjItMTguMmM2LjMtNi44LTEwLjEtMjEuOC0xNi4yLTE1LjdMMjQ5LjcgMjY4Yy0xOC42LTE4LjgtMTguNC0xOS41LTIxLjUtMTkuNS01IDAtMTggMTEuNy0xMi40IDE3LjNMMjM0IDI4NGMtMTguMSAxNy45LTIwLjQgMTkuMi0yMC40IDIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFjY2Vzc2libGVJY29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyMy45IDI1NS44TDQxMSA0MTMuMWMtMy4zIDQwLjctNjMuOSAzNS4xLTYwLjYtNC45bDEwLTEyMi41LTQxLjEgMi4zYzEwLjEgMjAuNyAxNS44IDQzLjkgMTUuOCA2OC41IDAgNDEuMi0xNi4xIDc4LjctNDIuMyAxMDYuNWwtMzkuMy0zOS4zYzU3LjktNjMuNyAxMy4xLTE2Ny4yLTc0LTE2Ny4yLTI1LjkgMC00OS41IDkuOS02Ny4yIDI2TDczIDI0My4yYzIyLTIwLjcgNTAuMS0zNS4xIDgxLjQtNDAuMmw3NS4zLTg1LjctNDIuNi0yNC44LTUxLjYgNDZjLTMwIDI2LjgtNzAuNi0xOC41LTQwLjUtNDUuNGw2OC02MC43YzkuOC04LjggMjQuMS0xMC4yIDM1LjUtMy42IDAgMCAxMzkuMyA4MC45IDEzOS41IDgxLjEgMTYuMiAxMC4xIDIwLjcgMzYgNi4xIDUyLjZMMjg1LjcgMjI5bDEwNi4xLTUuOWMxOC41LTEuMSAzMy42IDE0LjQgMzIuMSAzMi43em0tNjQuOS0xNTRjMjguMSAwIDUwLjktMjIuOCA1MC45LTUwLjlDNDA5LjkgMjIuOCAzODcuMSAwIDM1OSAwYy0yOC4xIDAtNTAuOSAyMi44LTUwLjkgNTAuOSAwIDI4LjEgMjIuOCA1MC45IDUwLjkgNTAuOXpNMTc5LjYgNDU2LjVjLTgwLjYgMC0xMjcuNC05MC42LTgyLjctMTU2LjFsLTM5LjctMzkuN0MzNi40IDI4NyAyNCAzMjAuMyAyNCAzNTYuNGMwIDEzMC43IDE1MC43IDIwMS40IDI1MS40IDEyMi41bC0zOS43LTM5LjdjLTE2IDEwLjktMzUuMyAxNy4zLTU2LjEgMTcuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWNjdXNvZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIyLjEgMjUydi0xbC01MS4yLTY1LjhzLTEyIDEuNi0yNSAxNS4xYy05IDkuMy0yNDIuMSAyMzkuMS0yNDMuNCAyNDAuOS03IDEwIDEuNiA2LjggMTUuNyAxLjcuOCAwIDExNC41LTM2LjYgMTE0LjUtMzYuNi41LS42LS4xLS4xLjYtLjYtLjQtNS4xLS44LTI2LjItMS0yNy43LS42LTUuMiAyLjItNi45IDctOC45bDkyLjYtMzMuOGMuNi0uOCA4OC41LTgxLjcgOTAuMi04My4zem0xNjAuMSAxMjAuMWMxMy4zIDE2LjEgMjAuNyAxMy4zIDMwLjggOS4zIDMuMi0xLjIgMTE1LjQtNDcuNiAxMTcuOC00OC45IDgtNC4zLTEuNy0xNi43LTcuMi0yMy40LTIuMS0yLjUtMjA1LjEtMjQ1LjYtMjA3LjItMjQ4LjMtOS43LTEyLjItMTQuMy0xMi45LTM4LjQtMTIuOC0xMC4yIDAtMTA2LjguNS0xMTYuNS42LTE5LjIuMS0zMi45LS4zLTE5LjIgMTYuOUMyNTAgNzUgNDc2LjUgMzY1LjIgNDgyLjIgMzcyLjF6bTE1Mi43IDEuNmMtMi4zLS4zLTI0LjYtNC43LTM4LTcuMiAwIDAtMTE1IDUwLjQtMTE3LjUgNTEuNi0xNiA3LjMtMjYuOS0zLjItMzYuNy0xNC42bC01Ny4xLTc0Yy01LjQtLjktNjAuNC05LjYtNjUuMy05LjMtMy4xLjItOS42LjgtMTQuNCAyLjktNC45IDIuMS0xNDUuMiA1Mi44LTE1MC4yIDU0LjctNS4xIDItMTEuNCAzLjYtMTEuMSA3LjYuMiAyLjUgMiAyLjYgNC42IDMuNSAyLjcuOCAzMDAuOSA2Ny42IDMwOCA2OS4xIDE1LjYgMy4zIDM4LjUgMTAuNSA1My42IDEuNyAyLjEtMS4yIDEyMy44LTc2LjQgMTI1LjgtNzcuOCA1LjQtNCA0LjMtNi44LTEuNy04LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFkbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggMTY3LjVsNjQuOSA5OC44SDE4My4xbDY0LjktOTguOHpNNDk2IDI1NmMwIDEzNi45LTExMS4xIDI0OC0yNDggMjQ4UzAgMzkyLjkgMCAyNTYgMTExLjEgOCAyNDggOHMyNDggMTExLjEgMjQ4IDI0OHptLTk5LjggODIuN0wyNDggMTE1LjUgOTkuOCAzMzguN2gzMC40bDMzLjYtNTEuN2gxNjguNmwzMy42IDUxLjdoMzAuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWR2ZXJzYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgyLjEgMzJIMjguN0M1LjggMzIgMCAzNy45IDAgNjAuOXYzOTAuMkMwIDQ3NC40IDUuOCA0ODAgMjguNyA0ODBoNDUzLjRjMjQuNCAwIDI5LjktNS4yIDI5LjktMjkuN1Y2Mi4yYzAtMjQuNi01LjQtMzAuMi0yOS45LTMwLjJ6TTE3OC40IDIyMC4zYy0yNy41LTIwLjItNzIuMS04LjctODQuMiAyMy40LTQuMyAxMS4xLTkuMyA5LjUtMTcuNSA4LjMtOS43LTEuNS0xNy4yLTMuMi0yMi41LTUuNS0yOC44LTExLjQgOC42LTU1LjMgMjQuOS02NC4zIDQxLjEtMjEuNCA4My40LTIyLjIgMTI1LjMtNC44IDQwLjkgMTYuOCAzNC41IDU5LjIgMzQuNSAxMjguNSAyLjcgMjUuOC00LjMgNTguMyA5LjMgODguOCAxLjkgNC40LjQgNy45LTIuNyAxMC43LTguNCA2LjctMzkuMyAyLjItNDYuNi03LjQtMS45LTIuMi0xLjgtMy42LTMuOS02LjItMy42LTMuOS03LjMtMi4yLTExLjkgMS01Ny40IDM2LjQtMTQwLjMgMjEuNC0xNDctNDMuMy0zLjEtMjkuMyAxMi40LTU3LjEgMzkuNi03MSAzOC4yLTE5LjUgMTEyLjItMTEuOCAxMTQtMzAuOSAxLjEtMTAuMi0xLjktMjAuMS0xMS4zLTI3LjN6bTI4Ni43IDIyMmMwIDE1LjEtMTEuMSA5LjktMTcuOCA5LjlINTIuNGMtNy40IDAtMTguMiA0LjgtMTcuOC0xMC43LjQtMTMuOSAxMC41LTkuMSAxNy4xLTkuMSAxMzIuMy0uNCAyNjQuNS0uNCAzOTYuOCAwIDYuOCAwIDE2LjYtNC40IDE2LjYgOS45em0zLjgtMzQwLjV2MjkxYzAgNS43LS43IDEzLjktOC4xIDEzLjktMTIuNC0uNC0yNy41IDcuMS0zNi4xLTUuNi01LjgtOC43LTcuOC00LTEyLjQtMS4yLTUzLjQgMjkuNy0xMjguMSA3LjEtMTQ0LjQtODUuMi02LjEtMzMuNC0uNy02Ny4xIDE1LjctMTAwIDExLjgtMjMuOSA1Ni45LTc2LjEgMTM2LjEtMzAuNXYtNzFjMC0yNi4yLS4xLTI2LjIgMjYtMjYuMiAzLjEgMCA2LjYuNCA5LjcgMCAxMC4xLS44IDEzLjYgNC40IDEzLjYgMTQuMy0uMS4yLS4xLjMtLjEuNXptLTUxLjUgMjMyLjNjLTE5LjUgNDcuNi03Mi45IDQzLjMtOTAgNS4yLTE1LjEtMzMuMy0xNS41LTY4LjIuNC0xMDEuNSAxNi4zLTM0LjEgNTkuNy0zNS43IDgxLjUtNC44IDIwLjYgMjguOCAxNC45IDg0LjYgOC4xIDEwMS4xem0tMjk0LjggMzUuM2MtNy41LTEuMy0zMy0zLjMtMzMuNy0yNy44LS40LTEzLjkgNy44LTIzIDE5LjgtMjUuOCAyNC40LTUuOSA0OS4zLTkuOSA3My43LTE0LjcgOC45LTIgNy40IDQuNCA3LjggOS41IDEuNCAzMy0yNi4xIDU5LjItNjcuNiA1OC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBZmZpbGlhdGV0aGVtZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTkuNyAyMzcuNEMxMDguNCAzMDguMyA0My4xIDM0OC4yIDE0IDMyNi42LTE1LjIgMzA0LjkgMi44IDIzMCA1NC4yIDE1OS4xYzUxLjMtNzAuOSAxMTYuNi0xMTAuOCAxNDUuNy04OS4yIDI5LjEgMjEuNiAxMS4xIDk2LjYtNDAuMiAxNjcuNXptMzUxLjItNTcuM0M0MzcuMSAzMDMuNSAzMTkgMzY3LjggMjQ2LjQgMzIzLjdjLTI1LTE1LjItNDEuMy00MS4yLTQ5LTczLjgtMzMuNiA2NC44LTkyLjggMTEzLjgtMTY0LjEgMTMzLjIgNDkuOCA1OS4zIDEyNC4xIDk2LjkgMjA3IDk2LjkgMTUwIDAgMjcxLjYtMTIzLjEgMjcxLjYtMjc0LjkuMS04LjUtLjMtMTYuOC0xLTI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBaXJibmIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDM3My4xMmMtMjUuMjQtMzEuNjctNDAuMDgtNTkuNDMtNDUtODMuMTgtMjIuNTUtODggMTEyLjYxLTg4IDkwLjA2IDAtNS40NSAyNC4yNS0yMC4yOSA1Mi00NSA4My4xOHptMTM4LjE1IDczLjIzYy00Mi4wNiAxOC4zMS04My42Ny0xMC44OC0xMTkuMy01MC40NyAxMDMuOS0xMzAuMDcgNDYuMTEtMjAwLTE4Ljg1LTIwMC01NC45MiAwLTg1LjE2IDQ2LjUxLTczLjI4IDEwMC41IDYuOTMgMjkuMTkgMjUuMjMgNjIuMzkgNTQuNDMgOTkuNS0zMi41MyAzNi4wNS02MC41NSA1Mi42OS04NS4xNSA1NC45Mi01MCA3LjQzLTg5LjExLTQxLjA2LTcxLjMtOTEuMDkgMTUuMS0zOS4xNiAxMTEuNzItMjMxLjE4IDExNS44Ny0yNDEuNTYgMTUuNzUtMzAuMDcgMjUuNTYtNTcuNCA1OS4zOC01Ny40IDMyLjM0IDAgNDMuNCAyNS45NCA2MC4zNyA1OS44NyAzNiA3MC42MiA4OS4zNSAxNzcuNDggMTE0Ljg0IDIzOS4wOSAxMy4xNyAzMy4wNy0xLjM3IDcxLjI5LTM3LjAxIDg2LjY0em00Ny0xMzYuMTJDMjgwLjI3IDM1LjkzIDI3My4xMyAzMiAyMjQgMzJjLTQ1LjUyIDAtNjQuODcgMzEuNjctODQuNjYgNzIuNzlDMzMuMTggMzE3LjEgMjIuODkgMzQ3LjE5IDIyIDM0OS44MS0zLjIyIDQxOS4xNCA0OC43NCA0ODAgMTExLjYzIDQ4MGMyMS43MSAwIDYwLjYxLTYuMDYgMTEyLjM3LTYyLjQgNTguNjggNjMuNzggMTAxLjI2IDYyLjQgMTEyLjM3IDYyLjQgNjIuODkuMDUgMTE0Ljg1LTYwLjg2IDg5LjYxLTEzMC4xOS4wMi0zLjg5LTE2LjgyLTM4LjktMTYuODItMzkuNTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFsZ29saWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBDMTE2LjEgMCAyIDExMi43IDAgMjUyLjFDLTIgMzkzLjYgMTEyLjkgNTEwLjggMjU0LjUgNTExLjZjNDMuNyAuMyA4NS45LTEwLjQgMTIzLjMtMzAuN2MzLjYtMiA0LjItNyAxLjEtOS43bC0yNC0yMS4yYy00LjktNC4zLTExLjgtNS41LTE3LjgtM2MtMjYuMSAxMS4xLTU0LjUgMTYuOC04My43IDE2LjRDMTM5IDQ2MS45IDQ2LjUgMzY2LjggNDguMyAyNTIuNEM1MC4xIDEzOS41IDE0Mi42IDQ4LjIgMjU2IDQ4LjJINDYzLjdWNDE3LjJMMzQ1LjkgMzEyLjVjLTMuOC0zLjQtOS43LTIuNy0xMi43IDEuM2MtMTguOSAyNS00OS43IDQwLjYtODMuOSAzOC4yYy00Ny41LTMuMy04NS45LTQxLjUtODkuNS04OC45Yy00LjItNTYuNiA0MC42LTEwMy45IDk2LjMtMTAzLjljNTAuNCAwIDkxLjkgMzguOCA5Ni4yIDg4Yy40IDQuNCAyLjQgOC41IDUuNyAxMS40bDMwLjcgMjcuMmMzLjUgMy4xIDkgMS4yIDkuOS0zLjRjMi4yLTExLjggMy0yNC4yIDIuMS0zNi44Yy00LjktNzItNjMuMy0xMzAtMTM1LjQtMTM0LjRjLTgyLjctNS4xLTE1MS44IDU5LjUtMTU0IDE0MC42Yy0yLjEgNzguOSA2Mi42IDE0NyAxNDEuNiAxNDguN2MzMyAuNyA2My42LTkuNiA4OC4zLTI3LjZMNDk1IDUwOS40YzYuNiA1LjggMTcgMS4yIDE3LTcuN1Y5LjdjMC01LjQtNC40LTkuNy05LjctOS43SDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpcGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3Ny43NCAzMkg3MC4yNkMzMS40MSAzMiAwIDYzLjQxIDAgMTAyLjI2djMwNy40OEMwIDQ0OC41OSAzMS40MSA0ODAgNzAuMjYgNDgwaDMwNy40OGMzOC41MiAwIDY5Ljc2LTMxLjA4IDcwLjI2LTY5LjYtNDUuOTYtMjUuNjItMTEwLjU5LTYwLjM0LTE3MS42LTg4LjQ0LTMyLjA3IDQzLjk3LTg0LjE0IDgxLTE0OC42MiA4MS03MC41OSAwLTkzLjczLTQ1LjMtOTcuMDQtNzYuMzctMy45Ny0zOS4wMSAxNC44OC04MS41IDk5LjUyLTgxLjUgMzUuMzggMCA3OS4zNSAxMC4yNSAxMjcuMTMgMjQuOTYgMTYuNTMtMzAuMDkgMjYuNDUtNjAuMzQgMjYuNDUtNjAuMzRoLTE3OC4ydi0xNi43aDkyLjA4di0zMS4yNEg4OC4yOHYtMTkuMDFoMTA5LjQ0VjkyLjM0aDUwLjkydjUwLjQyaDEwOS40NHYxOS4wMUgyNDguNjN2MzEuMjRoODguNzdzLTE1LjIxIDQ2LjYyLTM4LjM1IDkwLjkyYzQ4LjkzIDE2LjcgMTAwLjAxIDM2LjA0IDE0OC42MiA1Mi43NFYxMDIuMjZDNDQ3LjgzIDYzLjU3IDQxNi40MyAzMiAzNzcuNzQgMzJ6TTQ3LjI4IDMyMi45NWMuOTkgMjAuMTcgMTAuMjUgNTMuNzMgNjkuOTMgNTMuNzMgNTIuMDcgMCA5Mi41OC0zOS42OCAxMTcuODctNzIuOS00NC42My0xOC42OC04NC40OC0zMS40MS0xMDkuNDQtMzEuNDEtNjcuNDUgMC03OS4zNSAzMy4wNi03OC4zNiA1MC41OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW1hem9uUGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDMyNS4zYzIuMy00LjIgNS4yLTQuOSA5LjctMi41IDEwLjQgNS42IDIwLjYgMTEuNCAzMS4yIDE2LjdhNTk1Ljg4IDU5NS44OCAwIDAgMCAxMjcuNCA0Ni4zIDYxNi42MSA2MTYuNjEgMCAwIDAgNjMuMiAxMS44IDYwMy4zMyA2MDMuMzMgMCAwIDAgOTUgNS4yYzE3LjQtLjQgMzQuOC0xLjggNTIuMS0zLjhhNjAzLjY2IDYwMy42NiAwIDAgMCAxNjMuMy00Mi44YzIuOS0xLjIgNS45LTIgOS4xLTEuMiA2LjcgMS44IDkgOSA0LjEgMTMuOWE3MCA3MCAwIDAgMS05LjYgNy40Yy0zMC43IDIxLjEtNjQuMiAzNi40LTk5LjYgNDcuOWE0NzMuMzEgNDczLjMxIDAgMCAxLTc1LjEgMTcuNiA0MzEgNDMxIDAgMCAxLTUzLjIgNC44IDIxLjMgMjEuMyAwIDAgMC0yLjUuM0gzMDhhMjEuMyAyMS4zIDAgMCAwLTIuNS0uM2MtMy42LS4yLTcuMi0uMy0xMC43LS40YTQyNi4zIDQyNi4zIDAgMCAxLTUwLjQtNS4zQTQ0OC40IDQ0OC40IDAgMCAxIDE2NCA0MjBhNDQzLjMzIDQ0My4zMyAwIDAgMS0xNDUuNi04N2MtMS44LTEuNi0zLTMuOC00LjQtNS43ek0xNzIgNjUuMWwtNC4zLjZhODAuOTIgODAuOTIgMCAwIDAtMzggMTUuMWMtMi40IDEuNy00LjYgMy41LTcuMSA1LjRhNC4yOSA0LjI5IDAgMCAxLS40LTEuNGMtLjQtMi43LS44LTUuNS0xLjMtOC4yLS43LTQuNi0zLTYuNi03LjYtNi42aC0xMS41Yy02LjkgMC04LjIgMS4zLTguMiA4LjJ2MjA5LjNjMCAxIDAgMiAuMSAzIC4yIDMgMiA0LjkgNC45IDUgNyAuMSAxNC4xLjEgMjEuMSAwIDIuOSAwIDQuNy0yIDUtNSAuMS0xIC4xLTIgLjEtM3YtNzIuNGMxLjEuOSAxLjcgMS40IDIuMiAxLjkgMTcuOSAxNC45IDM4LjUgMTkuOCA2MSAxNS40IDIwLjQtNCAzNC42LTE2LjUgNDMuOC0zNC45IDctMTMuOSA5LjktMjguNyAxMC4zLTQ0LjEuNS0xNy4xLTEuMi0zMy45LTguMS00OS44LTguNS0xOS42LTIyLjYtMzIuNS00My45LTM2LjktMy4yLS43LTYuNS0xLTkuOC0xLjUtMi44LS4xLTUuNS0uMS04LjMtLjF6TTEyNC42IDEwN2EzLjQ4IDMuNDggMCAwIDEgMS43LTMuM2MxMy43LTkuNSAyOC44LTE0LjUgNDUuNi0xMy4yIDE0LjkgMS4xIDI3LjEgOC40IDMzLjUgMjUuOSAzLjkgMTAuNyA0LjkgMjEuOCA0LjkgMzMgMCAxMC40LS44IDIwLjYtNCAzMC42LTYuOCAyMS4zLTIyLjQgMjkuNC00Mi42IDI4LjUtMTQtLjYtMjYuMi02LTM3LjQtMTMuOWEzLjU3IDMuNTcgMCAwIDEtMS43LTMuM2MuMS0xNC4xIDAtMjguMSAwLTQyLjJzLjEtMjggMC00Mi4xem0yMDUuNy00MS45Yy0xIC4xLTIgLjMtMi45LjRhMTQ4IDE0OCAwIDAgMC0yOC45IDQuMWMtNi4xIDEuNi0xMiAzLjgtMTcuOSA1LjgtMy42IDEuMi01LjQgMy44LTUuMyA3LjcuMSAzLjMtLjEgNi42IDAgOS45LjEgNC44IDIuMSA2LjEgNi44IDQuOSA3LjgtMiAxNS42LTQuMiAyMy41LTUuNyAxMi4zLTIuMyAyNC43LTMuMyAzNy4yLTEuNCA2LjUgMSAxMi42IDIuOSAxNi44IDguNCAzLjcgNC44IDUuMSAxMC41IDUuMyAxNi40LjMgOC4zLjIgMTYuNi4zIDI0LjlhNy44NCA3Ljg0IDAgMCAxLS4yIDEuNGMtLjUtLjEtLjkgMC0xLjMtLjFhMTgwLjU2IDE4MC41NiAwIDAgMC0zMi00LjljLTExLjMtLjYtMjIuNS4xLTMzLjMgMy45LTEyLjkgNC41LTIzLjMgMTIuMy0yOS40IDI0LjktNC43IDkuOC01LjQgMjAuMi0zLjkgMzAuNyAyIDE0IDkgMjQuOCAyMS40IDMxLjcgMTEuOSA2LjYgMjQuOCA3LjQgMzcuOSA1LjQgMTUuMS0yLjMgMjguNS04LjcgNDAuMy0xOC40YTcuMzYgNy4zNiAwIDAgMSAxLjYtMS4xYy42IDMuOCAxLjEgNy40IDEuOCAxMSAuNiAzLjEgMi41IDUuMSA1LjQgNS4yIDUuNC4xIDEwLjkuMSAxNi4zIDBhNC44NCA0Ljg0IDAgMCAwIDQuOC00LjcgMjYuMiAyNi4yIDAgMCAwIC4xLTIuOHYtMTA2YTgwIDgwIDAgMCAwLS45LTEyLjljLTEuOS0xMi45LTcuNC0yMy41LTE5LTMwLjQtNi43LTQtMTQuMS02LTIxLjgtNy4xLTMuNi0uNS03LjItLjgtMTAuOC0xLjMtMy45LjEtNy45LjEtMTEuOS4xem0zNSAxMjcuN2EzLjMzIDMuMzMgMCAwIDEtMS41IDNjLTExLjIgOC4xLTIzLjUgMTMuNS0zNy40IDE0LjktNS43LjYtMTEuNC40LTE2LjgtMS44YTIwLjA4IDIwLjA4IDAgMCAxLTEyLjQtMTMuMyAzMi45IDMyLjkgMCAwIDEtLjEtMTkuNGMyLjUtOC4zIDguNC0xMyAxNi40LTE1LjZhNjEuMzMgNjEuMzMgMCAwIDEgMjQuOC0yLjJjOC40LjcgMTYuNiAyLjMgMjUgMy40IDEuNi4yIDIuMSAxIDIuMSAyLjYtLjEgNC44IDAgOS41IDAgMTQuM3MtLjIgOS40LS4xIDE0LjF6bTI1OS45IDEyOS40Yy0xLTUtNC44LTYuOS05LjEtOC4zYTg4LjQyIDg4LjQyIDAgMCAwLTIxLTMuOSAxNDcuMzIgMTQ3LjMyIDAgMCAwLTM5LjIgMS45Yy0xNC4zIDIuNy0yNy45IDcuMy00MCAxNS42YTEzLjc1IDEzLjc1IDAgMCAwLTMuNyAzLjUgNS4xMSA1LjExIDAgMCAwLS41IDRjLjQgMS41IDIuMSAxLjkgMy42IDEuOGExNi4yIDE2LjIgMCAwIDAgMi4yLS4xYzcuOC0uOCAxNS41LTEuNyAyMy4zLTIuNSAxMS40LTEuMSAyMi45LTEuOCAzNC4zLS45YTcxLjY0IDcxLjY0IDAgMCAxIDE0LjQgMi43YzUuMSAxLjQgNy40IDUuMiA3LjYgMTAuNC40IDgtMS40IDE1LjctMy41IDIzLjMtNC4xIDE1LjQtMTAgMzAuMy0xNS44IDQ1LjFhMTcuNiAxNy42IDAgMCAwLTEgM2MtLjUgMi45IDEuMiA0LjggNC4xIDQuMWExMC41NiAxMC41NiAwIDAgMCA0LjgtMi41IDE0NS45MSAxNDUuOTEgMCAwIDAgMTIuNy0xMy40YzEyLjgtMTYuNCAyMC4zLTM1LjMgMjQuNy01NS42LjgtMy42IDEuNC03LjMgMi4xLTEwLjl2LTE3LjN6TTQ5My4xIDE5OXEtMTkuMzUtNTMuNTUtMzguNy0xMDcuMmMtMi01LjctNC4yLTExLjMtNi4zLTE2LjktMS4xLTIuOS0zLjItNC44LTYuNC00LjgtNy42LS4xLTE1LjItLjItMjIuOS0uMS0yLjUgMC0zLjcgMi0zLjIgNC41YTQzLjEgNDMuMSAwIDAgMCAxLjkgNi4xcTI5LjQgNzIuNzUgNTkuMSAxNDUuNWMxLjcgNC4xIDIuMSA3LjYuMiAxMS44LTMuMyA3LjMtNS45IDE1LTkuMyAyMi4zLTMgNi41LTggMTEuNC0xNS4yIDEzLjNhNDIuMTMgNDIuMTMgMCAwIDEtMTUuNCAxLjFjLTIuNS0uMi01LS44LTcuNS0xLTMuNC0uMi01LjEgMS4zLTUuMiA0LjhxLS4xNSA1IDAgOS45Yy4xIDUuNSAyIDggNy40IDguOWExMDguMTggMTA4LjE4IDAgMCAwIDE2LjkgMmMxNy4xLjQgMzAuNy02LjUgMzkuNS0yMS40YTEzMS42MyAxMzEuNjMgMCAwIDAgOS4yLTE4LjRxMzUuNTUtODkuNyA3MC42LTE3OS42YTI2LjYyIDI2LjYyIDAgMCAwIDEuNi01LjVjLjQtMi44LS45LTQuNC0zLjctNC40LTYuNi0uMS0xMy4zIDAtMTkuOSAwYTcuNTQgNy41NCAwIDAgMC03LjcgNS4yYy0uNSAxLjQtMS4xIDIuNy0xLjYgNC4xbC0zNC44IDEwMGMtMi41IDcuMi01LjEgMTQuNS03LjcgMjIuMi0uNC0xLjEtLjYtMS43LS45LTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW1hem9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ny4yIDE2Mi43Yy00OC43IDEuOC0xNjkuNSAxNS41LTE2OS41IDExNy41IDAgMTA5LjUgMTM4LjMgMTE0IDE4My41IDQzLjIgNi41IDEwLjIgMzUuNCAzNy41IDQ1LjMgNDYuOGw1Ni44LTU2UzM0MSAyODguOSAzNDEgMjYxLjRWMTE0LjNDMzQxIDg5IDMxNi41IDMyIDIyOC43IDMyIDE0MC43IDMyIDk0IDg3IDk0IDEzNi4zbDczLjUgNi44YzE2LjMtNDkuNSA1NC4yLTQ5LjUgNTQuMi00OS41IDQwLjctLjEgMzUuNSAyOS44IDM1LjUgNjkuMXptMCA4Ni44YzAgODAtODQuMiA2OC04NC4yIDE3LjIgMC00Ny4yIDUwLjUtNTYuNyA4NC4yLTU3Ljh2NDAuNnptMTM2IDE2My41Yy03LjcgMTAtNzAgNjctMTc0LjUgNjdTMzQuMiA0MDguNSA5LjcgMzc5Yy02LjgtNy43IDEtMTEuMyA1LjUtOC4zQzg4LjUgNDE1LjIgMjAzIDQ4OC41IDM4Ny43IDQwMWM3LjUtMy43IDEzLjMgMiA1LjUgMTJ6bTM5LjggMi4yYy02LjUgMTUuOC0xNiAyNi44LTIxLjIgMzEtNS41IDQuNS05LjUgMi43LTYuNS0zLjhzMTkuMy00Ni41IDEyLjctNTVjLTYuNS04LjMtMzctNC4zLTQ4LTMuMi0xMC44IDEtMTMgMi0xNC0uMy0yLjMtNS43IDIxLjctMTUuNSAzNy41LTE3LjUgMTUuNy0xLjggNDEtLjggNDYgNS43IDMuNyA1LjEgMCAyNy4xLTYuNSA0My4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbWlsaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwLjEgMzJjLTYxLjkgMC0xMzEuNSAxNi45LTE4NC4yIDU1LjQtNS4xIDMuMS05LjEgOS4yLTcuMiAxOS40IDEuMSA1LjEgNS4xIDI3LjQgMTAuMiAzOS42IDQuMSAxMC4yIDE0LjIgMTAuMiAyMC4zIDYuMSAzMi41LTIyLjMgOTYuNS00Ny43IDE1Mi4zLTQ3LjcgNTcuOSAwIDU4LjkgMjguNCA1OC45IDczLjF2MzguNUMyMDMgMjI3LjcgNzguMiAyNTEgNDYuNyAyNjQuMiAxMS4yIDI4MC41IDE2LjMgMzU3LjcgMTYuMyAzNzZzMTUuMiAxMDQgMTI0LjkgMTA0YzQ3LjggMCAxMTMuNy0yMC43IDE1My4zLTQyLjF2MjUuNGMwIDMgMi4xIDguMiA2LjEgOS4xIDMuMSAxIDUwLjcgMiA1OS45IDJzNjIuNS4zIDY2LjUtLjdjNC4xLTEgNS4xLTYuMSA1LjEtOS4xVjE2OGMtLjEtODAuMy01Ny45LTEzNi0xOTItMTM2em01MC4yIDM0OGMtMjEuNCAxMy4yLTQ4LjcgMjQuNC03OS4xIDI0LjQtNTIuOCAwLTU4LjktMzMuNS01OS00NC43IDAtMTIuMi0zLTQyLjcgMTguMy01Mi45IDI0LjMtMTMuMiA3NS4xLTI5LjQgMTE5LjgtMzMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5kcm9pZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjAuNTUsMzAxLjkzYTI0LDI0LDAsMSwxLDI0LTI0LDI0LDI0LDAsMCwxLTI0LDI0bS0yNjUuMSwwYTI0LDI0LDAsMSwxLDI0LTI0LDI0LDI0LDAsMCwxLTI0LDI0bTI3My43LTE0NC40OCw0Ny45NC04M2ExMCwxMCwwLDEsMC0xNy4yNy0xMGgwbC00OC41NCw4NC4wN2EzMDEuMjUsMzAxLjI1LDAsMCwwLTI0Ni41NiwwTDExNi4xOCw2NC40NWExMCwxMCwwLDEsMC0xNy4yNywxMGgwbDQ3Ljk0LDgzQzY0LjUzLDIwMi4yMiw4LjI0LDI4NS41NSwwLDM4NEg1NzZjLTguMjQtOTguNDUtNjQuNTQtMTgxLjc4LTE0Ni44NS0yMjYuNTVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nZWxsaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Ny4xIDIxNS40YzExLjctMzIuNiA0NS40LTEyNi45IDQ1LjQtMTU3LjEgMC0yNi42LTE1LjctNDguOS00My43LTQ4LjktNDQuNiAwLTg0LjYgMTMxLjctOTcuMSAxNjMuMUMyNDIgMTQ0IDE5Ni42IDAgMTU2LjYgMGMtMzEuMSAwLTQ1LjcgMjIuOS00NS43IDUxLjcgMCAzNS4zIDM0LjIgMTI2LjggNDYuNiAxNjItNi4zLTIuMy0xMy4xLTQuMy0yMC00LjMtMjMuNCAwLTQ4LjMgMjkuMS00OC4zIDUyLjYgMCA4LjkgNC45IDIxLjQgOCAyOS43LTM2LjkgMTAtNTEuMSAzNC42LTUxLjEgNzEuN0M0NiA0MzUuNiAxMTQuNCA1MTIgMjEwLjYgNTEyYzExOCAwIDE5MS40LTg4LjYgMTkxLjQtMjAyLjkgMC00My4xLTYuOS04Mi01NC45LTkzLjd6TTMxMS43IDEwOGM0LTEyLjMgMjEuMS02NC4zIDM3LjEtNjQuMyA4LjYgMCAxMC45IDguOSAxMC45IDE2IDAgMTkuMS0zOC42IDEyNC42LTQ3LjEgMTQ4bC0zNC02IDMzLjEtOTMuN3pNMTQyLjMgNDguM2MwLTExLjkgMTQuNS00NS43IDQ2LjMgNDcuMWwzNC42IDEwMC4zYy0xNS42LTEuMy0yNy43LTMtMzUuNCAxLjQtMTAuOS0yOC44LTQ1LjUtMTE5LjctNDUuNS0xNDguOHpNMTQwIDI0NGMyOS4zIDAgNjcuMSA5NC42IDY3LjEgMTA3LjQgMCA1LjEtNC45IDExLjQtMTAuNiAxMS40LTIwLjkgMC03Ni45LTc2LjktNzYuOS05Ny43LjEtNy43IDEyLjctMjEuMSAyMC40LTIxLjF6bTE4NC4zIDE4Ni4zYy0yOS4xIDMyLTY2LjMgNDguNi0xMDkuNyA0OC42LTU5LjQgMC0xMDYuMy0zMi42LTEyOC45LTg4LjMtMTcuMS00My40IDMuOC02OC4zIDIwLjYtNjguMyAxMS40IDAgNTQuMyA2MC4zIDU0LjMgNzMuMSAwIDQuOS03LjcgOC4zLTExLjcgOC4zLTE2LjEgMC0yMi40LTE1LjUtNTEuMS01MS40LTI5LjcgMjkuNyAyMC41IDg2LjkgNTguMyA4Ni45IDI2LjEgMCA0My4xLTI0LjIgMzgtNDIgMy43IDAgOC4zLjMgMTEuNy0uNiAxLjEgMjcuMSA5LjEgNTkuNCA0MS43IDYxLjcgMC0uOSAyLTcuMSAyLTcuNCAwLTE3LjQtMTAuNi0zMi42LTEwLjYtNTAuMyAwLTI4LjMgMjEuNy01NS43IDQzLjctNzEuNyA4LTYgMTcuNy05LjcgMjcuMS0xMy4xIDkuNy0zLjcgMjAtOCAyNy40LTE1LjQtMS4xLTExLjItNS43LTIxLjEtMTYuOS0yMS4xLTI3LjcgMC0xMjAuNiA0LTEyMC42LTM5LjcgMC02LjcuMS0xMy4xIDE3LjQtMTMuMSAzMi4zIDAgMTE0LjMgOCAxMzguMyAyOS4xIDE4LjEgMTYuMSAyNC4zIDExMy4yLTMxIDE3NC43em0tOTguNi0xMjZjOS43IDMuMSAxOS43IDQgMjkuNyA2LTcuNCA1LjQtMTQgMTItMjAuMyAxOS4xLTIuOC04LjUtNi4yLTE2LjgtOS40LTI1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ3J5Y3JlYXRpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQwIDIzOC4ybC0zLjIgMjguMi0zNC41IDIuMy0yIDE4LjEgMzQuNS0yLjMtMy4yIDI4LjItMzQuNCAyLjItMi4zIDIwLjEgMzQuNC0yLjItMyAyNi4xLTY0LjcgNC4xIDEyLjctMTEzLjJMNTI3IDM2NS4ybC0zMS45IDItMjMuOC0xMTcuOCAzMC4zLTIgMTMuNiA3OS40IDMxLjctODIuNCA5My4xLTYuMnpNNDI2LjggMzcxLjVsMjguMy0xLjhMNDY4IDI0OS42bC0yOC40IDEuOS0xMi44IDEyMHpNMTYyIDM4OC4xbC0xOS40LTM2LTMuNSAzNy40LTI4LjIgMS43IDIuNy0yOS4xYy0xMSAxOC0zMiAzNC4zLTU2LjkgMzUuOEMyMy45IDM5OS45LTMgMzc3IC4zIDMzOS43YzIuNi0yOS4zIDI2LjctNjIuOCA2Ny41LTY1LjQgMzcuNy0yLjQgNDcuNiAyMy4yIDUxLjMgMjguOGwyLjgtMzAuOCAzOC45LTIuNWMyMC4xLTEuMyAzOC43IDMuNyA0Mi41IDIzLjdsMi42LTI2LjYgNjQuOC00LjItMi43IDI3LjktMzYuNCAyLjQtMS43IDE3LjkgMzYuNC0yLjMtMi43IDI3LjktMzYuNCAyLjMtMS45IDE5LjkgMzYuMy0yLjMtMi4xIDIwLjggNTUtMTE3LjIgMjMuOC0xLjZMMzcwLjQgMzY5bDguOS04NS42LTIyLjMgMS40IDIuOS0yNy45IDc1LTQuOS0zIDI4LTI0LjMgMS42LTkuNyA5MS45LTU4IDMuNy00LjMtMTUuNi0zOS40IDIuNS04IDE2LjMtMTI2LjIgNy43em0tNDQuMy03MC4ybC0yNi40IDEuN0M4NC42IDMwNy4yIDc2LjkgMzAzIDY1IDMwMy44Yy0xOSAxLjItMzMuMyAxNy41LTM0LjYgMzMuMy0xLjQgMTYgNy4zIDMyLjUgMjguNyAzMS4yIDEyLjgtLjggMjEuMy04LjYgMjguOS0xOC45bDI3LTEuNyAyLjctMjkuOHptNTYuMS03LjdjMS4yLTEyLjktNy42LTEzLjYtMjYuMS0xMi40bC0yLjcgMjguNWMxNC4yLS45IDI3LjUtMi4xIDI4LjgtMTYuMXptMjEuMSA3MC44bDUuOC02MGMtNSAxMy41LTE0LjcgMjEuMS0yNy45IDI2LjZsMjIuMSAzMy40em0xMzUuNC00NWwtNy45LTM3LjgtMTUuOCAzOS4zIDIzLjctMS41em0tMTcwLjEtNzQuNmwtNC4zLTE3LjUtMzkuNiAyLjYtOC4xIDE4LjItMzEuOSAyLjEgNTctMTIxLjkgMjMuOS0xLjYgMzAuNyAxMDIgOS45LTEwNC43IDI3LTEuOCAzNy44IDYzLjYgNi41LTY2LjYgMjguNS0xLjktNCA0MS4yYzcuNC0xMy41IDIyLjktNDQuNyA2My42LTQ3LjUgNDAuNS0yLjggNTIuNCAyOS4zIDUzLjQgMzAuM2wzLjMtMzIgMzkuMy0yLjdjMTIuNy0uOSAyNy44LjMgMzYuMyA5LjdsLTQuNC0xMS45IDMyLjItMi4yIDEyLjkgNDMuMiAyMy00NS43IDMxLTIuMi00My42IDc4LjQtNC44IDQ0LjMtMjguNCAxLjkgNC44LTQ0LjMtMTUuOC00M2MxIDIyLjMtOS4yIDQwLjEtMzIgNDkuNmwyNS4yIDM4LjgtMzYuNCAyLjQtMTkuMi0zNi44LTQgMzguMy0yOC40IDEuOSAzLjMtMzEuNWMtNi43IDkuMy0xOS43IDM1LjQtNTkuNiAzOC0yNi4yIDEuNy00NS42LTEwLjMtNTUuNC0zOS4ybC00IDQwLjMtMjUgMS42LTM3LjYtNjMuMy02LjMgNjYuMi01Ni44IDMuN3ptMjc2LjYtODIuMWMxMC4yLS43IDE3LjUtMi4xIDIxLjYtNC4zIDQuNS0yLjQgNy02LjQgNy42LTEyLjEuNi01LjMtLjYtOC44LTMuNC0xMC40LTMuNi0yLjEtMTAuNi0yLjgtMjIuOS0ybC0yLjkgMjguOHpNMzI3LjcgMjE0YzUuNiA1LjkgMTIuNyA4LjUgMjEuMyA3LjkgNC43LS4zIDkuMS0xLjggMTMuMy00LjEgNS41LTMgMTAuNi04IDE1LjEtMTQuM2wtMzQuMiAyLjMgMi40LTIzLjkgNjMuMS00LjMgMS4yLTEyLTMxLjIgMi4xYy00LjEtMy43LTcuOC02LjYtMTEuMS04LjEtNC0xLjctOC4xLTIuOC0xMi4yLTIuNS04IC41LTE1LjMgMy42LTIyIDkuMi03LjcgNi40LTEyIDE0LjUtMTIuOSAyNC40LTEuMSA5LjYgMS40IDE3LjMgNy4yIDIzLjN6bS0yMDEuMyA4LjJsMjMuOC0xLjYtOC4zLTM3LjYtMTUuNSAzOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmd1bGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4NS43IDI2OC4xaDc2LjJsLTM4LjEtOTEuNi0zOC4xIDkxLjZ6TTIyMy44IDMyTDE2IDEwNi40bDMxLjggMjc1LjcgMTc2IDk3LjkgMTc2LTk3LjkgMzEuOC0yNzUuN3pNMzU0IDM3My44aC00OC42bC0yNi4yLTY1LjRIMTY4LjZsLTI2LjIgNjUuNEg5My43TDIyMy44IDgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFwcFN0b3JlSW9zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTEyNyAzODQuNWMtNS41IDkuNi0xNy44IDEyLjgtMjcuMyA3LjMtOS42LTUuNS0xMi44LTE3LjgtNy4zLTI3LjNsMTQuMy0yNC43YzE2LjEtNC45IDI5LjMtMS4xIDM5LjYgMTEuNEwxMjcgMzg0LjV6bTEzOC45LTUzLjlIODRjLTExIDAtMjAtOS0yMC0yMHM5LTIwIDIwLTIwaDUxbDY1LjQtMTEzLjItMjAuNS0zNS40Yy01LjUtOS42LTIuMi0yMS44IDcuMy0yNy4zIDkuNi01LjUgMjEuOC0yLjIgMjcuMyA3LjNsOC45IDE1LjQgOC45LTE1LjRjNS41LTkuNiAxNy44LTEyLjggMjcuMy03LjMgOS42IDUuNSAxMi44IDE3LjggNy4zIDI3LjNsLTg1LjggMTQ4LjZoNjIuMWMyMC4yIDAgMzEuNSAyMy43IDIyLjcgNDB6bTk4LjEgMGgtMjlsMTkuNiAzMy45YzUuNSA5LjYgMi4yIDIxLjgtNy4zIDI3LjMtOS42IDUuNS0yMS44IDIuMi0yNy4zLTcuMy0zMi45LTU2LjktNTcuNS05OS43LTc0LTEyOC4xLTE2LjctMjktNC44LTU4IDcuMS02Ny44IDEzLjEgMjIuNyAzMi43IDU2LjcgNTguOSAxMDJoNTJjMTEgMCAyMCA5IDIwIDIwIDAgMTEuMS05IDIwLTIwIDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBTdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTUuOSAxMjAuOWw5LjEtMTUuN2M1LjYtOS44IDE4LjEtMTMuMSAyNy45LTcuNSA5LjggNS42IDEzLjEgMTguMSA3LjUgMjcuOWwtODcuNSAxNTEuNWg2My4zYzIwLjUgMCAzMiAyNC4xIDIzLjEgNDAuOEgxMTMuOGMtMTEuMyAwLTIwLjQtOS4xLTIwLjQtMjAuNCAwLTExLjMgOS4xLTIwLjQgMjAuNC0yMC40aDUybDY2LjYtMTE1LjQtMjAuOC0zNi4xYy01LjYtOS44LTIuMy0yMi4yIDcuNS0yNy45IDkuOC01LjYgMjIuMi0yLjMgMjcuOSA3LjVsOC45IDE1Ljd6bS03OC43IDIxOGwtMTkuNiAzNGMtNS42IDkuOC0xOC4xIDEzLjEtMjcuOSA3LjUtOS44LTUuNi0xMy4xLTE4LjEtNy41LTI3LjlsMTQuNi0yNS4yYzE2LjQtNS4xIDI5LjgtMS4yIDQwLjQgMTEuNnptMTY4LjktNjEuN2g1My4xYzExLjMgMCAyMC40IDkuMSAyMC40IDIwLjQgMCAxMS4zLTkuMSAyMC40LTIwLjQgMjAuNGgtMjkuNWwxOS45IDM0LjVjNS42IDkuOCAyLjMgMjIuMi03LjUgMjcuOS05LjggNS42LTIyLjIgMi4zLTI3LjktNy41LTMzLjUtNTguMS01OC43LTEwMS42LTc1LjQtMTMwLjYtMTcuMS0yOS41LTQuOS01OS4xIDcuMi02OS4xIDEzLjQgMjMgMzMuNCA1Ny43IDYwLjEgMTA0ek0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0yMTYgMjQ4YzAgMTE4LjctOTYuMSAyMTYtMjE2IDIxNi0xMTguNyAwLTIxNi05Ni4xLTIxNi0yMTYgMC0xMTguNyA5Ni4xLTIxNiAyMTYtMjE2IDExOC43IDAgMjE2IDk2LjEgMjE2IDIxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXBwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIuMSAyMzkuMWMyMi4yIDAgMjkgMi44IDMzLjUgMTQuNmguOHYtMjIuOWMwLTExLjMtNC44LTE1LjQtMTcuOS0xNS40LTExLjMgMC0xNC40IDIuNS0xNS4xIDEyLjhINC44Yy4zLTEzLjkgMS41LTE5LjEgNS44LTI0LjRDMTcuOSAxOTUgMjkuNSAxOTIgNTYuNyAxOTJjMzMgMCA0Ny4xIDUgNTMuOSAxOC45IDIgNC4zIDQgMTUuNiA0IDIzLjd2NzYuM0g3Ni4zbDEuMy0xOS4xaC0xYy01LjMgMTUuNi0xMy42IDIwLjQtMzUuNSAyMC40LTMwLjMgMC00MS4xLTEwLjEtNDEuMS0zNy4zIDAtMjUuMiAxMi4zLTM1LjggNDIuMS0zNS44em0xNy4xIDQ4LjFjMTMuMSAwIDE2LjktMyAxNi45LTEzLjQgMC05LjEtNC4zLTExLjYtMTkuNi0xMS42LTEzLjEgMC0xNy45IDMtMTcuOSAxMi4xLS4xIDEwLjQgMy43IDEyLjkgMjAuNiAxMi45em03Ny44LTk0LjloMzguM2wtMS41IDIwLjZoLjhjOS4xLTE3LjEgMTUuOS0yMC45IDM3LjUtMjAuOSAxNC40IDAgMjQuNyAzIDMxLjUgOS4xIDkuOCA4LjYgMTIuOCAyMC40IDEyLjggNDguMSAwIDMwLTMgNDMuMS0xMi4xIDUyLjktNi44IDcuMy0xNi40IDEwLjEtMzMuMiAxMC4xLTIwLjQgMC0yOS4yLTUuNS0zMy44LTIxLjJoLS44djcwLjNIMTM3di0xNjl6bTgwLjkgNjAuN2MwLTI3LjUtMy4zLTMyLjUtMjAuNy0zMi41LTE2LjkgMC0yMC43IDUtMjAuNyAyOC43IDAgMjggMy41IDMzLjUgMjEuMiAzMy41IDE2LjQgMCAyMC4yLTUuNiAyMC4yLTI5Ljd6bTU3LjktNjAuN2gzOC4zbC0xLjUgMjAuNmguOGM5LjEtMTcuMSAxNS45LTIwLjkgMzcuNS0yMC45IDE0LjQgMCAyNC43IDMgMzEuNSA5LjEgOS44IDguNiAxMi44IDIwLjQgMTIuOCA0OC4xIDAgMzAtMyA0My4xLTEyLjEgNTIuOS02LjggNy4zLTE2LjQgMTAuMS0zMy4zIDEwLjEtMjAuNCAwLTI5LjItNS41LTMzLjgtMjEuMmgtLjh2NzAuM2gtMzkuNXYtMTY5em04MC45IDYwLjdjMC0yNy41LTMuMy0zMi41LTIwLjctMzIuNS0xNi45IDAtMjAuNyA1LTIwLjcgMjguNyAwIDI4IDMuNSAzMy41IDIxLjIgMzMuNSAxNi40IDAgMjAuMi01LjYgMjAuMi0yOS43em01My44LTMuOGMwLTI1LjQgMy4zLTM3LjggMTIuMy00NS44IDguOC04LjEgMjIuMi0xMS4zIDQ1LjEtMTEuMyA0Mi44IDAgNTUuNyAxMi44IDU1LjcgNTUuN3YxMS4xaC03NS4zYy0uMyAyLS4zIDQtLjMgNC44IDAgMTYuOSA0LjUgMjEuOSAyMC4xIDIxLjkgMTMuOSAwIDE3LjktMyAxNy45LTEzLjloMzcuNXYyLjNjMCA5LjgtMi41IDE4LjktNi44IDI0LjctNy4zIDkuOC0xOS42IDEzLjYtNDQuMyAxMy42LTI3LjUgMC00MS42LTMuMy01MC42LTEyLjMtOC41LTguNS0xMS4zLTIxLjMtMTEuMy01MC44em03Ni40LTExLjZjLS4zLTEuOC0uMy0zLjMtLjMtMy44IDAtMTIuMy0zLjMtMTQuNi0xOS42LTE0LjYtMTQuNCAwLTE3LjEgMy0xOC4xIDE1LjFsLS4zIDMuM2gzOC4zem01NS42LTQ1LjNoMzguM2wtMS44IDE5LjloLjdjNi44LTE0LjkgMTQuNC0yMC4yIDI5LjctMjAuMiAxMC44IDAgMTkuMSAzLjMgMjMuNCA5LjMgNS4zIDcuMyA2LjggMTQuNCA2LjggMzQgMCAxLjUgMCA1IC4yIDkuM2gtMzVjLjMtMS44LjMtMy4zLjMtNCAwLTE1LjQtMi0xOS40LTEwLjMtMTkuNC02LjMgMC0xMC44IDMuMy0xMy4xIDkuMy0xIDMtMSA0LjMtMSAxMi4zdjY4aC0zOC4zVjE5Mi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBsZVBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTYuOSAxNTguNWMtNy41IDguOS0xOS41IDE1LjktMzEuNSAxNC45LTEuNS0xMiA0LjQtMjQuOCAxMS4zLTMyLjYgNy41LTkuMSAyMC42LTE1LjYgMzEuMy0xNi4xIDEuMiAxMi40LTMuNyAyNC43LTExLjEgMzMuOG0xMC45IDE3LjJjLTE3LjQtMS0zMi4zIDkuOS00MC41IDkuOS04LjQgMC0yMS05LjQtMzQuOC05LjEtMTcuOS4zLTM0LjUgMTAuNC00My42IDI2LjUtMTguOCAzMi4zLTQuOSA4MCAxMy4zIDEwNi4zIDguOSAxMyAxOS41IDI3LjMgMzMuNSAyNi44IDEzLjMtLjUgMTguNS04LjYgMzQuNS04LjYgMTYuMSAwIDIwLjggOC42IDM0LjggOC40IDE0LjUtLjMgMjMuNi0xMyAzMi41LTI2IDEwLjEtMTQuOCAxNC4zLTI5LjEgMTQuNS0yOS45LS4zLS4zLTI4LTEwLjktMjguMy00Mi45LS4zLTI2LjggMjEuOS0zOS41IDIyLjktNDAuMy0xMi41LTE4LjYtMzItMjAuNi0zOC44LTIxLjFtMTAwLjQtMzYuMnYxOTQuOWgzMC4zdi02Ni42aDQxLjljMzguMyAwIDY1LjEtMjYuMyA2NS4xLTY0LjNzLTI2LjQtNjQtNjQuMS02NGgtNzMuMnptMzAuMyAyNS41aDM0LjljMjYuMyAwIDQxLjMgMTQgNDEuMyAzOC42cy0xNSAzOC44LTQxLjQgMzguOGgtMzQuOFYxNjV6bTE2Mi4yIDE3MC45YzE5IDAgMzYuNi05LjYgNDQuNi0yNC45aC42djIzLjRoMjh2LTk3YzAtMjguMS0yMi41LTQ2LjMtNTcuMS00Ni4zLTMyLjEgMC01NS45IDE4LjQtNTYuOCA0My42aDI3LjNjMi4zLTEyIDEzLjQtMTkuOSAyOC42LTE5LjkgMTguNSAwIDI4LjkgOC42IDI4LjkgMjQuNXYxMC44bC0zNy44IDIuM2MtMzUuMSAyLjEtNTQuMSAxNi41LTU0LjEgNDEuNS4xIDI1LjIgMTkuNyA0MiA0Ny44IDQyem04LjItMjMuMWMtMTYuMSAwLTI2LjQtNy44LTI2LjQtMTkuNiAwLTEyLjMgOS45LTE5LjQgMjguOC0yMC41bDMzLjYtMi4xdjExYzAgMTguMi0xNS41IDMxLjItMzYgMzEuMnptMTAyLjUgNzQuNmMyOS41IDAgNDMuNC0xMS4zIDU1LjUtNDUuNEw2NDAgMTkzaC0zMC44bC0zNS42IDExNS4xaC0uNkw1MzcuNCAxOTNoLTMxLjZMNTU3IDMzNC45bC0yLjggOC42Yy00LjYgMTQuNi0xMi4xIDIwLjMtMjUuNSAyMC4zLTIuNCAwLTctLjMtOC45LS41djIzLjRjMS44LjQgOS4zLjcgMTEuNi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguNyAyNjguN2MtLjItMzYuNyAxNi40LTY0LjQgNTAtODQuOC0xOC44LTI2LjktNDcuMi00MS43LTg0LjctNDQuNi0zNS41LTIuOC03NC4zIDIwLjctODguNSAyMC43LTE1IDAtNDkuNC0xOS43LTc2LjQtMTkuN0M2My4zIDE0MS4yIDQgMTg0LjggNCAyNzMuNXEwIDM5LjMgMTQuNCA4MS4yYzEyLjggMzYuNyA1OSAxMjYuNyAxMDcuMiAxMjUuMiAyNS4yLS42IDQzLTE3LjkgNzUuOC0xNy45IDMxLjggMCA0OC4zIDE3LjkgNzYuNCAxNy45IDQ4LjYtLjcgOTAuNC04Mi41IDEwMi42LTExOS4zLTY1LjItMzAuNy02MS43LTkwLTYxLjctOTEuOXptLTU2LjYtMTY0LjJjMjcuMy0zMi40IDI0LjgtNjEuOSAyNC03Mi41LTI0LjEgMS40LTUyIDE2LjQtNjcuOSAzNC45LTE3LjUgMTkuOC0yNy44IDQ0LjMtMjUuNiA3MS45IDI2LjEgMiA0OS45LTExLjQgNjkuNS0zNC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnRzdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMzc3LjRsNDMgNzQuM0E1MS4zNSA1MS4zNSAwIDAgMCA5MC45IDQ4MGgyODUuNGwtNTkuMi0xMDIuNnpNNTAxLjggMzUwTDMzNS42IDU5LjNBNTEuMzggNTEuMzggMCAwIDAgMjkwLjIgMzJoLTg4LjRsMjU3LjMgNDQ3LjYgNDAuNy03MC41YzEuOS0zLjIgMjEtMjkuNyAyLTU5LjF6TTI3NSAzMDQuNWwtMTE1LjUtMjAwTDQ0IDMwNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBc3ltbWV0cmlrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxNy41IDMwOS4yYzM4LjgtNDAgNTguMS04MCA1OC41LTExNi4xLjgtNjUuNS01OS40LTExOC4yLTE2OS40LTEzNUMyNzcuOSAzOC40IDExOC4xIDczLjYgMCAxNDAuNSA1MiAxMTQgMTEwLjYgOTIuMyAxNzAuNyA4Mi4zYzc0LjUtMjAuNSAxNTMtMjUuNCAyMjEuMy0xNC44QzU0NC41IDkxLjMgNTg4LjggMTk1IDQ5MC44IDI5OS4yYy0xMC4yIDEwLjgtMjIgMjEuMS0zNSAzMC42TDMwNC45IDEwMy40IDExNC43IDM4OC45Yy02NS42LTI5LjQtNzYuNS05MC4yLTE5LjEtMTUxLjIgMjAuOC0yMi4yIDQ4LjMtNDEuOSA3OS41LTU4LjEgMjAtMTIuMiAzOS43LTIyLjYgNjItMzAuNy02NS4xIDIwLjMtMTIyLjcgNTIuOS0xNjEuNiA5Mi45LTI3LjcgMjguNi00MS40IDU3LjEtNDEuNyA4Mi45LS41IDM1LjEgMjMuNCA2NS4xIDY4LjQgODNsLTM0LjUgNTEuN2gxMDEuNmwyMi0zNC40YzIyLjIgMSA0NS4zIDAgNjguNi0yLjdsLTIyLjggMzcuMWgxMzUuNUwzNDAgNDA2LjNjMTguNi01LjMgMzYuOS0xMS41IDU0LjUtMTguN2w0NS45IDcxLjhINTQyTDQ2OC42IDM0OWMxOC41LTEyLjEgMzUtMjUuNSA0OC45LTM5Ljh6bS0xODcuNiA4MC41bC0yNS00MC42LTMyLjcgNTMuM2MtMjMuNCAzLjUtNDYuNyA1LjEtNjkuMiA0LjRsMTAxLjktMTU5LjMgNzguNyAxMjNjLTE3LjIgNy40LTM1LjMgMTMuOS01My43IDE5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF0bGFzc2lhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTIuMiAyMzYuNGMtNy43LTguMi0xOS43LTcuNy0yNC44IDIuOEwxLjYgNDkwLjJjLTUgMTAgMi40IDIxLjcgMTMuNCAyMS43aDE3NWM1LjguMSAxMS0zLjIgMTMuNC04LjQgMzcuOS03Ny44IDE1LjEtMTk2LjMtNTEuMi0yNjcuMXpNMjQ0LjQgOC4xYy0xMjIuMyAxOTMuNC04LjUgMzQ4LjYgNjUgNDk1LjUgMi41IDUuMSA3LjcgOC40IDEzLjQgOC40SDQ5N2MxMS4yIDAgMTguNC0xMS44IDEzLjQtMjEuNyAwIDAtMjM0LjUtNDcwLjYtMjQwLjQtNDgyLjMtNS4zLTEwLjYtMTguOC0xMC44LTI1LjYuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXVkaWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMTk5Ljl2NTRsLTMyMCAyMDBMMCAyNTR2LTU0bDMyMCAyMDAgMzIwLTIwMC4xem0tMTk0LjUgNzJsNDcuMS0yOS40Yy0zNy4yLTU1LjgtMTAwLjctOTIuNi0xNzIuNy05Mi42LTcyIDAtMTM1LjUgMzYuNy0xNzIuNiA5Mi40aC4zYzIuNS0yLjMgNS4xLTQuNSA3LjctNi43IDg5LjctNzQuNCAyMTkuNC01OC4xIDI5MC4yIDM2LjN6bS0yMjAuMSAxOC44YzE2LjktMTEuOSAzNi41LTE4LjcgNTcuNC0xOC43IDM0LjQgMCA2NS4yIDE4LjQgODYuNCA0Ny42bDQ1LjQtMjguNGMtMjAuOS0yOS45LTU1LjYtNDkuNS05NC44LTQ5LjUtMzguOSAwLTczLjQgMTkuNC05NC40IDQ5ek0xMDMuNiAxNjEuMWMxMzEuOC0xMDQuMyAzMTguMi03Ni40IDQxNy41IDYyLjFsLjcgMSA0OC44LTMwLjRDNTE3LjEgMTEyLjEgNDI0LjggNTguMSAzMTkuOSA1OC4xYy0xMDMuNSAwLTE5Ni42IDUzLjUtMjUwLjUgMTM1LjYgOS45LTEwLjUgMjIuNy0yMy41IDM0LjItMzIuNnptNDY3IDMyLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF1dG9wcmVmaXhlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguNCAxNmwtMTYxIDQ4MGg3Ny41bDI1LjQtODEuNGgxMTkuNUw0MDUgNDk2aDc3LjVMMzE4LjQgMTZ6bS00MC4zIDM0MS45bDQxLjItMTMwLjRoMS41bDQwLjkgMTMwLjRoLTgzLjZ6TTY0MCA0MDVsLTEwLTMxLjRMNDYyLjEgMzU4bDE5LjQgNTYuNUw2NDAgNDA1em0tNDYyLjEtNDdMMTAgMzczLjcgMCA0MDVsMTU4LjUgOS40IDE5LjQtNTYuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXZpYW5leCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTMuMSAzMmgtMzEyYy0zOC45IDAtNzYuMiAzMS4yLTgzLjMgNjkuN0wxLjIgNDEwLjNDLTUuOSA0NDguOCAxOS45IDQ4MCA1OC45IDQ4MGgzMTJjMzguOSAwIDc2LjItMzEuMiA4My4zLTY5LjdsNTYuNy0zMDguNWM3LTM4LjYtMTguOC02OS44LTU3LjgtNjkuOHptLTU4LjIgMzQ3LjNsLTMyIDEzLjUtMTE1LjQtMTEwYy0xNC43IDEwLTI5LjIgMTkuNS00MS43IDI3LjFsMjIuMSA2NC4yLTE3LjkgMTIuNy00MC42LTYxLTUyLjQtNDguMSAxNS43LTE1LjQgNTggMzEuMWM5LjMtMTAuNSAyMC44LTIyLjYgMzIuOC0zNC45TDIwMyAyMjguOWwtNjguOC05OS44IDE4LjgtMjguOSA4LjktNC44TDI2NSAyMDcuOGw0LjkgNC41YzE5LjQtMTguOCAzMy44LTMyLjQgMzMuOC0zMi40IDcuNy02LjUgMjEuNS0yLjkgMzAuNyA3LjkgOSAxMC41IDEwLjYgMjQuNyAyLjcgMzEuMy0xLjggMS4zLTE1LjUgMTEuNC0zNS4zIDI1LjZsNC41IDcuMyA5NC45IDExOS40LTYuMyA3Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF2aWF0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDcuMiAyODMuNWwtMTktNDEuOEgzNi4xbC0xOSA0MS44SDBsNjIuMi0xMzEuNCA2Mi4yIDEzMS40aC0xNy4yem0tNDUtOTguMWwtMTkuNiA0Mi41aDM5LjJsLTE5LjYtNDIuNXptMTEyLjcgMTAyLjRsLTYyLjItMTMxLjRoMTcuMWw0NS4xIDk2IDQ1LjEtOTZoMTdsLTYyLjEgMTMxLjR6bTgwLjYtNC4zVjE1Ni40SDI3MXYxMjcuMWgtMTUuNXptMjA5LjEtMTE1LjZ2MTE1LjZoLTE3LjNWMTY3LjloLTQxLjJ2LTExLjVoOTkuNnYxMS41aC00MS4xek02NDAgMjE4LjhjMCA5LjItMS43IDE3LjgtNS4xIDI1LjgtMy40IDgtOC4yIDE1LjEtMTQuMiAyMS4xLTYgNi0xMy4xIDEwLjgtMjEuMSAxNC4yLTggMy40LTE2LjYgNS4xLTI1LjggNS4xcy0xNy44LTEuNy0yNS44LTUuMWMtOC0zLjQtMTUuMS04LjItMjEuMS0xNC4yLTYtNi0xMC44LTEzLTE0LjItMjEuMS0zLjQtOC01LjEtMTYuNi01LjEtMjUuOHMxLjctMTcuOCA1LjEtMjUuOGMzLjQtOCA4LjItMTUuMSAxNC4yLTIxLjEgNi02IDEzLTguNCAyMS4xLTExLjkgOC0zLjQgMTYuNi01LjEgMjUuOC01LjFzMTcuOCAxLjcgMjUuOCA1LjFjOCAzLjQgMTUuMSA1LjggMjEuMSAxMS45IDYgNiAxMC43IDEzLjEgMTQuMiAyMS4xIDMuNCA4IDUuMSAxNi42IDUuMSAyNS44em0tMTUuNSAwYzAtNy4zLTEuMy0xNC0zLjktMjAuMy0yLjYtNi4zLTYuMi0xMS43LTEwLjgtMTYuMy00LjYtNC42LTEwLTguMi0xNi4yLTEwLjktNi4yLTIuNy0xMi44LTQtMTkuOC00cy0xMy42IDEuMy0xOS44IDRjLTYuMiAyLjctMTEuNiA2LjMtMTYuMiAxMC45LTQuNiA0LjYtOC4yIDEwLTEwLjggMTYuMy0yLjYgNi4zLTMuOSAxMy4xLTMuOSAyMC4zIDAgNy4zIDEuMyAxNCAzLjkgMjAuMyAyLjYgNi4zIDYuMiAxMS43IDEwLjggMTYuMyA0LjYgNC42IDEwIDguMiAxNi4yIDEwLjkgNi4yIDIuNyAxMi44IDQgMTkuOCA0czEzLjYtMS4zIDE5LjgtNGM2LjItMi43IDExLjYtNi4zIDE2LjItMTAuOSA0LjYtNC42IDguMi0xMCAxMC44LTE2LjMgMi42LTYuMyAzLjktMTMuMSAzLjktMjAuM3ptLTk0LjggOTYuN3YtNi4zbDg4LjktMTAtMjQyLjkgMTMuNGMuNi0yLjIgMS4xLTQuNiAxLjQtNy4yLjMtMiAuNS00LjIuNi02LjVsNjQuOC04LjEtNjQuOSAxLjljMC0uNC0uMS0uNy0uMS0xLjEtMi44LTE3LjItMjUuNS0yMy43LTI1LjUtMjMuN2wtMS4xLTI2LjNoMjMuOGwxOSA0MS44aDE3LjFMMzQ4LjYgMTUybC02Mi4yIDEzMS40aDE3LjFsMTktNDEuOGgyMy42TDM0NSAyNjhzLTIyLjcgNi41LTI1LjUgMjMuN2MtLjEuMy0uMS43LS4xIDEuMWwtNjQuOS0xLjkgNjQuOCA4LjFjLjEgMi4zLjMgNC40LjYgNi41LjMgMi42LjggNSAxLjQgNy4yTDc4LjQgMjk5LjJsODguOSAxMHY2LjNjLTUuOS45LTEwLjUgNi0xMC41IDEyLjIgMCA2LjggNS42IDEyLjQgMTIuNCAxMi40IDYuOCAwIDEyLjQtNS42IDEyLjQtMTIuNCAwLTYuMi00LjYtMTEuMy0xMC41LTEyLjJ2LTUuOGw4MC4zIDl2NS40Yy01LjcgMS4xLTkuOSA2LjItOS45IDEyLjEgMCA2LjggNS42IDEwLjIgMTIuNCAxMC4yIDYuOCAwIDEyLjQtMy40IDEyLjQtMTAuMiAwLTYtNC4zLTExLTkuOS0xMi4xdi00LjlsMjguNCAzLjJ2MjMuN2gtNS45VjM2MGg1Ljl2LTYuNmg1djYuNmg1Ljl2LTEzLjhoLTUuOVYzMjNsMzguMyA0LjNjOC4xIDExLjQgMTkgMTMuNiAxOSAxMy42bC0uMSA2LjctNS4xLjItLjEgMTIuMWg0LjFsLjEtNWg1LjJsLjEgNWg0LjFsLS4xLTEyLjEtNS4xLS4yLS4xLTYuN3MxMC45LTIuMSAxOS0xMy42bDM4LjMtNC4zdjIzLjJoLTUuOVYzNjBoNS45di02LjZoNXY2LjZoNS45di0xMy44aC01Ljl2LTIzLjdsMjguNC0zLjJ2NC45Yy01LjcgMS4xLTkuOSA2LjItOS45IDEyLjEgMCA2LjggNS42IDEwLjIgMTIuNCAxMC4yIDYuOCAwIDEyLjQtMy40IDEyLjQtMTAuMiAwLTYtNC4zLTExLTkuOS0xMi4xdi01LjRsODAuMy05djUuOGMtNS45LjktMTAuNSA2LTEwLjUgMTIuMiAwIDYuOCA1LjYgMTIuNCAxMi40IDEyLjQgNi44IDAgMTIuNC01LjYgMTIuNC0xMi40LS4yLTYuMy00LjctMTEuNC0xMC43LTEyLjN6bS0yMDAuOC04Ny42bDE5LjYtNDIuNSAxOS42IDQyLjVoLTE3LjlsLTEuNy00MC4zLTEuNyA0MC4zaC0xNy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgwLjQxIDIwMy4wMWMtLjcyIDIyLjY1IDEwLjYgMzIuNjggMTAuODggMzkuMDVhOC4xNjQgOC4xNjQgMCAwIDEtNC4xIDYuMjdsLTEyLjggOC45NmExMC42NiAxMC42NiAwIDAgMS01LjYzIDEuOTJjLS40My0uMDItOC4xOSAxLjgzLTIwLjQ4LTI1LjYxYTc4LjYwOCA3OC42MDggMCAwIDEtNjIuNjEgMjkuNDVjLTE2LjI4Ljg5LTYwLjQtOS4yNC01OC4xMy01Ni4yMS0xLjU5LTM4LjI4IDM0LjA2LTYyLjA2IDcwLjkzLTYwLjA1IDcuMS4wMiAyMS42LjM3IDQ2Ljk5IDYuMjd2LTE1LjYyYzIuNjktMjYuNDYtMTQuNy00Ni45OS00NC44MS00My45MS0yLjQuMDEtMTkuNC0uNS00NS44NCAxMC4xMS03LjM2IDMuMzgtOC4zIDIuODItMTAuNzUgMi44Mi03LjQxIDAtNC4zNi0yMS40OC0yLjk0LTI0LjIgNS4yMS02LjQgMzUuODYtMTguMzUgNjUuOTQtMTguMThhNzYuODU3IDc2Ljg1NyAwIDAgMSA1NS42OSAxNy4yOCA3MC4yODUgNzAuMjg1IDAgMCAxIDE3LjY3IDUyLjM2bC0uMDEgNjkuMjl6TTkzLjk5IDIzNS40YzMyLjQzLS40NyA0Ni4xNi0xOS45NyA0OS4yOS0zMC40NyAyLjQ2LTEwLjA1IDIuMDUtMTYuNDEgMi4wNS0yNy40LTkuNjctMi4zMi0yMy41OS00Ljg1LTM5LjU2LTQuODctMTUuMTUtMS4xNC00Mi44MiA1LjYzLTQxLjc0IDMyLjI2LTEuMjQgMTYuNzkgMTEuMTIgMzEuNCAyOS45NiAzMC40OHptMTcwLjkyIDIzLjA1Yy03Ljg2LjcyLTExLjUyLTQuODYtMTIuNjgtMTAuMzdsLTQ5LjgtMTY0LjY1Yy0uOTctMi43OC0xLjYxLTUuNjUtMS45Mi04LjU4YTQuNjEgNC42MSAwIDAgMSAzLjg2LTUuMjVjLjI0LS4wNC0yLjEzIDAgMjIuMjUgMCA4Ljc4LS44OCAxMS42NCA2LjAzIDEyLjU1IDEwLjM3bDM1LjcyIDE0MC44MyAzMy4xNi0xNDAuODNjLjUzLTMuMjIgMi45NC0xMS4wNyAxMi44LTEwLjI0aDE3LjE2YzIuMTctLjE4IDExLjExLS41IDEyLjY4IDEwLjM3bDMzLjQyIDE0Mi42M0w0MjAuOTggODAuMWMuNDgtMi4xOCAyLjcyLTExLjM3IDEyLjY4LTEwLjM3aDE5LjcyYy44NS0uMTMgNi4xNS0uODEgNS4yNSA4LjU4LS40MyAxLjg1IDMuNDEtMTAuNjYtNTIuNzUgMTY5LjktMS4xNSA1LjUxLTQuODIgMTEuMDktMTIuNjggMTAuMzdoLTE4LjY5Yy0xMC45NCAxLjE1LTEyLjUxLTkuNjYtMTIuNjgtMTAuNzVMMzI4LjY3IDExMC43bC0zMi43OCAxMzYuOTljLS4xNiAxLjA5LTEuNzMgMTEuOS0xMi42OCAxMC43NWgtMTguM3ptMjczLjQ4IDUuNjNjLTUuODguMDEtMzMuOTItLjMtNTcuMzYtMTIuMjlhMTIuODAyIDEyLjgwMiAwIDAgMS03LjgxLTExLjkxdi0xMC43NWMwLTguNDUgNi4yLTYuOSA4LjgzLTUuODkgMTAuMDQgNC4wNiAxNi40OCA3LjE0IDI4LjgxIDkuNiAzNi42NSA3LjUzIDUyLjc3LTIuMyA1Ni43Mi00LjQ4IDEzLjE1LTcuODEgMTQuMTktMjUuNjggNS4yNS0zNC45NS0xMC40OC04Ljc5LTE1LjQ4LTkuMTItNTMuMTMtMjEtNC42NC0xLjI5LTQzLjctMTMuNjEtNDMuNzktNTIuMzYtLjYxLTI4LjI0IDI1LjA1LTU2LjE4IDY5LjUyLTU1Ljk1IDEyLjY3LS4wMSA0Ni40MyA0LjEzIDU1LjU3IDE1LjYyIDEuMzUgMi4wOSAyLjAyIDQuNTUgMS45MiA3LjA0djEwLjExYzAgNC40NC0xLjYyIDYuNjYtNC44NyA2LjY2LTcuNzEtLjg2LTIxLjM5LTExLjE3LTQ5LjE2LTEwLjc1LTYuODktLjM2LTM5Ljg5LjkxLTM4LjQxIDI0Ljk3LS40MyAxOC45NiAyNi42MSAyNi4wNyAyOS43IDI2Ljg5IDM2LjQ2IDEwLjk3IDQ4LjY1IDEyLjc5IDYzLjEyIDI5LjU4IDE3LjE0IDIyLjI1IDcuOSA0OC4zIDQuMzUgNTUuNDQtMTkuMDggMzcuNDktNjguNDIgMzQuNDQtNjkuMjYgMzQuNDJ6bTQwLjIgMTA0Ljg2Yy03MC4wMyA1MS43Mi0xNzEuNjkgNzkuMjUtMjU4LjQ5IDc5LjI1QTQ2OS4xMjcgNDY5LjEyNyAwIDAgMSAyLjgzIDMyNy40NmMtNi41My01Ljg5LS43Ny0xMy45NiA3LjE3LTkuNDdhNjM3LjM3IDYzNy4zNyAwIDAgMCAzMTYuODggODQuMTIgNjMwLjIyIDYzMC4yMiAwIDAgMCAyNDEuNTktNDkuNTVjMTEuNzgtNSAyMS43NyA3LjggMTAuMTIgMTYuMzh6bTI5LjE5LTMzLjI5Yy04Ljk2LTExLjUyLTU5LjI4LTUuMzgtODEuODEtMi42OS02Ljc5Ljc3LTcuOTQtNS4xMi0xLjc5LTkuNDcgNDAuMDctMjguMTcgMTA1Ljg4LTIwLjEgMTEzLjQ0LTEwLjYzIDcuNTUgOS40Ny0yLjA1IDc1LjQxLTM5LjU2IDEwNi45MS01Ljc2IDQuODctMTEuMjcgMi4zLTguNzEtNC4xIDguNDQtMjEuMjUgMjcuMzktNjguNDkgMTguNDMtODAuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbmRjYW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Niw4QzExOSw4LDgsMTE5LDgsMjU2UzExOSw1MDQsMjU2LDUwNCw1MDQsMzkzLDUwNCwyNTYsMzkzLDgsMjU2LDhabTQ4LjIsMzI2LjFoLTE4MUwyMDcuOSwxNzhoMTgxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXR0bGVOZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4LjYxIDIyNS42MmMyNi44Ny4xOCAzNS41Ny03LjQzIDM4LjkyLTEyLjM3IDEyLjQ3LTE2LjMyLTcuMDYtNDcuNi01Mi44NS03MS4zMyAxNy43Ni0zMy41OCAzMC4xMS02My42OCAzNi4zNC04NS4zIDMuMzgtMTEuODMgMS4wOS0xOSAuNDUtMjAuMjUtMS43MiAxMC41Mi0xNS44NSA0OC40Ni00OC4yIDEwMC4wNS0yNS0xMS4yMi01Ni41Mi0yMC4xLTkzLjc3LTIzLjgtOC45NC0xNi45NC0zNC44OC02My44Ni02MC40OC04OC45M0MyNTIuMTggNy4xNCAyMzguNyAxLjA3IDIyOC4xOC4yMmgtLjA1Yy0xMy44My0xLjU1LTIyLjY3IDUuODUtMjcuNCAxMS0xNy4yIDE4LjUzLTI0LjMzIDQ4Ljg3LTI1IDg0LjA3LTcuMjQtMTIuMzUtMTcuMTctMjQuNjMtMjguNS0yNS45M2gtLjE4Yy0yMC42Ni0zLjQ4LTM4LjM5IDI5LjIyLTM2IDgxLjI5LTM4LjM2IDEuMzgtNzEgNS43NS05MyAxMS4yMy05LjkgMi40NS0xNi4yMiA3LjI3LTE3Ljc2IDkuNzIgMS0uMzggMjIuNC05LjIyIDExMS41Ni05LjIyIDUuMjIgNTMgMjkuNzUgMTAxLjgyIDI2IDkzLjE5LTkuNzMgMTUuNC0zOC4yNCA2Mi4zNi00Ny4zMSA5Ny43LTUuODcgMjIuODgtNC4zNyAzNy42MS4xNSA0Ny4xNCA1LjU3IDEyLjc1IDE2LjQxIDE2LjcyIDIzLjIgMTguMjYgMjUgNS43MSA1NS4zOC0zLjYzIDg2LjctMjEuMTQtNy41MyAxMi44NC0xMy45IDI4LjUxLTkuMDYgMzkuMzQgNy4zMSAxOS42NSA0NC40OSAxOC42NiA4OC40NC05LjQ1IDIwLjE4IDMyLjE4IDQwLjA3IDU3Ljk0IDU1LjcgNzQuMTJhMzkuNzkgMzkuNzkgMCAwIDAgOC43NSA3LjA5YzUuMTQgMy4yMSA4LjU4IDMuMzcgOC41OCAzLjM3LTguMjQtNi43NS0zNC0zOC02Mi41NC05MS43OCAyMi4yMi0xNiA0NS42NS0zOC44NyA2Ny40Ny02OS4yNyAxMjIuODIgNC42IDE0My4yOS0yNC43NiAxNDgtMzEuNjQgMTQuNjctMTkuODggMy40My01Ny40NC01Ny4zMi05My42OXptLTc3Ljg1IDEwNi4yMmMyMy44MS0zNy43MSAzMC4zNC02Ny43NyAyOS40NS05Mi4zMyAyNy44NiAxNy41NyA0Ny4xOCAzNy41OCA0OS4wNiA1OC44MyAxLjE0IDEyLjkzLTguMSAyOS4xMi03OC41MSAzMy41ek0yMTYuOSAzODcuNjljOS43Ni02LjIzIDE5LjUzLTEzLjEyIDI5LjItMjAuNDkgNi42OCAxMy4zMyAxMy42IDI2LjEgMjAuNiAzOC4xOS00MC42IDIxLjg2LTY4Ljg0IDEyLjc2LTQ5LjgtMTcuN3ptMjE1LTE3MS4zNWMtMTAuMjktNS4zNC0yMS4xNi0xMC4zNC0zMi4zOC0xNS4wNWE3MjIuNDU5IDcyMi40NTkgMCAwIDAgMjIuNzQtMzYuOWMzOS4wNiAyNC4xIDQ1LjkgNTMuMTggOS42NCA1MS45NXpNMjc5LjE4IDM5OGMtNS41MS0xMS4zNS0xMS0yMy41LTE2LjUtMzYuNDQgNDMuMjUgMS4yNyA2Mi40Mi0xOC43MyA2My4yOC0yMC40MSAwIC4wNy0yNSAxNS42NC02Mi41MyAxMi4yNWE3MTguNzggNzE4Ljc4IDAgMCAwIDg1LjA2LTg0cTEzLjA2LTE1LjMxIDI0LjkzLTMxLjExYy0uMzYtLjI5LTEuNTQtMy0xNi41MS0xMi01MS43IDYwLjI3LTEwMi4zNCA5OC0xMzIuNzUgMTE1LjkyLTIwLjU5LTExLjE4LTQwLjg0LTMxLjc4LTU1LjcxLTYxLjQ5LTIwLTM5LjkyLTMwLTgyLjM5LTMxLjU3LTExNi4wNyAxMi4zLjkxIDI1LjI3IDIuMTcgMzguODUgMy44OC0yMi4yOSAzNi44LTE0LjM5IDYzLTEzLjQ3IDY0LjIzIDAtLjA3LS45NS0yOS4xNyAyMC4xNC01OS41N2E2OTUuMjMgNjk1LjIzIDAgMCAwIDQ0LjY3IDE1Mi44NGMuOTMtLjM4IDEuODQuODggMTguNjctOC4yNS0yNi4zMy03NC40Ny0zMy43Ni0xMzguMTctMzQtMTczLjQzIDIwLTEyLjQyIDQ4LjE4LTE5LjggODEuNjMtMTcuODEgNDQuNTcgMi42NyA4Ni4zNiAxNS4yNSAxMTYuMzIgMzAuNzFxLTEwLjY5IDE1LjY2LTIzLjMzIDMyLjQ3QzM2NS42MyAxNTIgMzM5LjEgMTQ1Ljg0IDMzNy41IDE0NmMuMTEgMCAyNS45IDE0LjA3IDQxLjUyIDQ3LjIyYTcxNy42MyA3MTcuNjMgMCAwIDAtMTE1LjM0LTMxLjcxIDY0Ni42MDggNjQ2LjYwOCAwIDAgMC0zOS4zOS02LjA1Yy0uMDcuNDUtMS44MSAxLjg1LTIuMTYgMjAuMzNDMzAwIDE5MC4yOCAzNTguNzggMjE1LjY4IDM4OS4zNiAyMzNjLjc0IDIzLjU1LTYuOTUgNTEuNjEtMjUuNDEgNzkuNTctMjQuNiAzNy4zMS01Ni4zOSA2Ny4yMy04NC43NyA4NS40M3ptMjcuNC0yODdjLTQ0LjU2LTEuNjYtNzMuNTggNy40My05NC42OSAyMC42NyAyLTUyLjMgMjEuMzEtNzYuMzggMzguMjEtNzUuMjhDMjY3IDUyLjE1IDMwNSAxMDguNTUgMzA2LjU4IDExMXptLTEzMC42NSAzLjFjLjQ4IDEyLjExIDEuNTkgMjQuNjIgMy4yMSAzNy4yOC0xNC41NS0uODUtMjguNzQtMS4yNS00Mi40LTEuMjYtLjA4IDMuMjQtLjEyLTUxIDI0LjY3LTQ5LjU5aC4wOWM1Ljc2IDEuMDkgMTAuNjMgNi44OCAxNC40MyAxMy41N3ptLTI4LjA2IDE2MmMyMC43NiAzOS43IDQzLjMgNjAuNTcgNjUuMjUgNzIuMzEtNDYuNzkgMjQuNzYtNzcuNTMgMjAtODQuOTIgNC41MS0uMi0uMjEtMTEuMTMtMTUuMyAxOS42Ny03Ni44MXptMjEwLjA2IDc0LjhcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVoYW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzIgMjM3LjJjMzEuOC0xNS4yIDQ4LjQtMzguMiA0OC40LTc0IDAtNzAuNi01Mi42LTg3LjgtMTEzLjMtODcuOEgwdjM1NC40aDE3MS44YzY0LjQgMCAxMjQuOS0zMC45IDEyNC45LTEwMi45IDAtNDQuNS0yMS4xLTc3LjQtNjQuNy04OS43ek03Ny45IDEzNS45SDE1MWMyOC4xIDAgNTMuNCA3LjkgNTMuNCA0MC41IDAgMzAuMS0xOS43IDQyLjItNDcuNSA0Mi4yaC03OXYtODIuN3ptODMuMyAyMzMuN0g3Ny45VjI3Mmg4NC45YzM0LjMgMCA1NiAxNC4zIDU2IDUwLjYgMCAzNS44LTI1LjkgNDctNTcuNiA0N3ptMzU4LjUtMjQwLjdIMzc2Vjk0aDE0My43djM0Ljl6TTU3NiAzMDUuMmMwLTc1LjktNDQuNC0xMzkuMi0xMjQuOS0xMzkuMi03OC4yIDAtMTMxLjMgNTguOC0xMzEuMyAxMzUuOCAwIDc5LjkgNTAuMyAxMzQuNyAxMzEuMyAxMzQuNyA2MS4zIDAgMTAxLTI3LjYgMTIwLjEtODYuM0g1MDljLTYuNyAyMS45LTM0LjMgMzMuNS01NS43IDMzLjUtNDEuMyAwLTYzLTI0LjItNjMtNjUuM2gxODUuMWMuMy00LjIuNi04LjcuNi0xMy4yek0zOTAuNCAyNzRjMi4zLTMzLjcgMjQuNy01NC44IDU4LjUtNTQuOCAzNS40IDAgNTMuMiAyMC44IDU2LjIgNTQuOEgzOTAuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmlsaWJpbGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4LjYgMTA0LjFDNTA1LjMgMTIyLjIgNTEzIDE0My44IDUxMS45IDE2OS44VjM3Mi4yQzUxMS41IDM5OC42IDUwMi43IDQyMC4zIDQ4NS40IDQzNy4zQzQ2OC4yIDQ1NC4zIDQ0Ni4zIDQ2My4yIDQxOS45IDQ2NEg5Mi4wMkM2NS41NyA0NjMuMiA0My44MSA0NTQuMiAyNi43NCA0MzYuOEM5LjY4MiA0MTkuNCAuNzY2NyAzOTYuNSAwIDM2OC4yVjE2OS44Qy43NjY3IDE0My44IDkuNjgyIDEyMi4yIDI2Ljc0IDEwNC4xQzQzLjgxIDg3Ljc1IDY1LjU3IDc4Ljc3IDkyLjAyIDc4SDEyMS40TDk2LjA1IDUyLjE5QzkwLjMgNDYuNDYgODcuNDIgMzkuMTkgODcuNDIgMzAuNEM4Ny40MiAyMS42IDkwLjMgMTQuMzQgOTYuMDUgOC42MDNDMTAxLjggMi44NjggMTA5LjEgMCAxMTcuOSAwQzEyNi43IDAgMTM0IDIuODY4IDEzOS44IDguNjAzTDIxMy4xIDc4SDMwMS4xTDM3NS42IDguNjAzQzM4MS43IDIuODY4IDM4OS4yIDAgMzk4IDBDNDA2LjggMCA0MTQuMSAyLjg2OCA0MTkuOSA4LjYwM0M0MjUuNiAxNC4zNCA0MjguNSAyMS42IDQyOC41IDMwLjRDNDI4LjUgMzkuMTkgNDI1LjYgNDYuNDYgNDE5LjkgNTIuMTlMMzk0LjYgNzhMNDIzLjkgNzhDNDUwLjMgNzguNzcgNDcxLjkgODcuNzUgNDg4LjYgMTA0LjFINDg4LjZ6TTQ0OS44IDE3My44QzQ0OS40IDE2NC4yIDQ0Ni4xIDE1Ni40IDQzOS4xIDE1MC4zQzQzMy45IDE0NC4yIDQyNS4xIDE0MC45IDQxNi40IDE0MC41SDk2LjA1Qzg2LjQ2IDE0MC45IDc4LjYgMTQ0LjIgNzIuNDcgMTUwLjNDNjYuMzMgMTU2LjQgNjMuMDcgMTY0LjIgNjIuNjkgMTczLjhWMzY4LjJDNjIuNjkgMzc3LjQgNjUuOTUgMzg1LjIgNzIuNDcgMzkxLjdDNzguOTkgMzk4LjIgODYuODUgNDAxLjUgOTYuMDUgNDAxLjVINDE2LjRDNDI1LjYgNDAxLjUgNDMzLjQgMzk4LjIgNDM5LjcgMzkxLjdDNDQ2IDM4NS4yIDQ0OS40IDM3Ny40IDQ0OS44IDM2OC4yTDQ0OS44IDE3My44ek0xODUuNSAyMTYuNUMxOTEuOCAyMjIuOCAxOTUuMiAyMzAuNiAxOTUuNiAyMzkuN1YyNzNDMTk1LjIgMjgyLjIgMTkxLjkgMjg5LjkgMTg1LjggMjk2LjJDMTc5LjYgMzAyLjUgMTcxLjggMzA1LjcgMTYyLjIgMzA1LjdDMTUyLjYgMzA1LjcgMTQ0LjcgMzAyLjUgMTM4LjYgMjk2LjJDMTMyLjUgMjg5LjkgMTI5LjIgMjgyLjIgMTI4LjggMjczVjIzOS43QzEyOS4yIDIzMC42IDEzMi42IDIyMi44IDEzOC45IDIxNi41QzE0NS4yIDIxMC4yIDE1Mi4xIDIwNi45IDE2Mi4yIDIwNi41QzE3MS40IDIwNi45IDE3OS4yIDIxMC4yIDE4NS41IDIxNi41SDE4NS41ek0zNzcgMjE2LjVDMzgzLjMgMjIyLjggMzg2LjcgMjMwLjYgMzg3LjEgMjM5LjdWMjczQzM4Ni43IDI4Mi4yIDM4My40IDI4OS45IDM3Ny4zIDI5Ni4yQzM3MS4yIDMwMi41IDM2My4zIDMwNS43IDM1My43IDMwNS43QzM0NC4xIDMwNS43IDMzNi4zIDMwMi41IDMzMC4xIDI5Ni4yQzMyMy4xIDI4OS45IDMyMC43IDI4Mi4yIDMyMC40IDI3M1YyMzkuN0MzMjAuNyAyMzAuNiAzMjQuMSAyMjIuOCAzMzAuNCAyMTYuNUMzMzYuNyAyMTAuMiAzNDQuNSAyMDYuOSAzNTMuNyAyMDYuNUMzNjIuOSAyMDYuOSAzNzAuNyAyMTAuMiAzNzcgMjE2LjVIMzc3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaW1vYmplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDMySDMyQzE0LjQgMzIgMCA0Ni40IDAgNjR2Mzg0YzAgMTcuNiAxNC40IDMyIDMyIDMyaDM4NGMxNy42IDAgMzItMTQuNCAzMi0zMlY2NGMwLTE3LjYtMTQuNC0zMi0zMi0zMnptLTY0IDI1Ny40YzAgNDkuNC0xMS40IDgyLjYtMTAzLjggODIuNmgtMTYuOWMtNDQuMSAwLTYyLjQtMTQuOS03MC40LTM4LjhoLS45VjM2OEg5NlYxMzZoNjR2NzQuN2gxLjFjNC42LTMwLjUgMzkuNy0zOC44IDY5LjctMzguOGgxNy4zYzkyLjQgMCAxMDMuOCAzMy4xIDEwMy44IDgyLjV2MzV6bS02NC0yOC45djIyLjljMCAyMS43LTMuNCAzMy44LTM4LjQgMzMuOGgtNDUuM2MtMjguOSAwLTQ0LjEtNi41LTQ0LjEtMzUuN3YtMTljMC0yOS4zIDE1LjItMzUuNyA0NC4xLTM1LjdoNDUuM2MzNS0uMiAzOC40IDEyIDM4LjQgMzMuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQml0YnVja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjIgMzJBMTYgMTYgMCAwIDAgNiA0Ny44YTI2LjM1IDI2LjM1IDAgMCAwIC4yIDIuOGw2Ny45IDQxMi4xYTIxLjc3IDIxLjc3IDAgMCAwIDIxLjMgMTguMmgzMjUuN2ExNiAxNiAwIDAgMCAxNi0xMy40TDUwNSA1MC43YTE2IDE2IDAgMCAwLTEzLjItMTguMyAyNC41OCAyNC41OCAwIDAgMC0yLjgtLjJMMjIuMiAzMnptMjg1LjkgMjk3LjhoLTEwNGwtMjguMS0xNDdoMTU3LjNsLTI1LjIgMTQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaXRjb2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNCAyNTZjMCAxMzYuOTY3LTExMS4wMzMgMjQ4LTI0OCAyNDhTOCAzOTIuOTY3IDggMjU2IDExOS4wMzMgOCAyNTYgOHMyNDggMTExLjAzMyAyNDggMjQ4em0tMTQxLjY1MS0zNS4zM2M0LjkzNy0zMi45OTktMjAuMTkxLTUwLjczOS01NC41NS02Mi41NzNsMTEuMTQ2LTQ0LjcwMi0yNy4yMTMtNi43ODEtMTAuODUxIDQzLjUyNGMtNy4xNTQtMS43ODMtMTQuNTAyLTMuNDY0LTIxLjgwMy01LjEzbDEwLjkyOS00My44MS0yNy4xOTgtNi43ODEtMTEuMTUzIDQ0LjY4NmMtNS45MjItMS4zNDktMTEuNzM1LTIuNjgyLTE3LjM3Ny00LjA4NGwuMDMxLS4xNC0zNy41My05LjM3LTcuMjM5IDI5LjA2MnMyMC4xOTEgNC42MjcgMTkuNzY1IDQuOTEzYzExLjAyMiAyLjc1MSAxMy4wMTQgMTAuMDQ0IDEyLjY4IDE1LjgyNWwtMTIuNjk2IDUwLjkyNWMuNzYuMTk0IDEuNzQ0LjQ3MyAyLjgyOS45MDctLjkwNy0uMjI1LTEuODc2LS40NzMtMi44NzYtLjcxM2wtMTcuNzk2IDcxLjMzOGMtMS4zNDkgMy4zNDgtNC43NjcgOC4zNy0xMi40NzEgNi40NjQuMjcxLjM5NS0xOS43OC00LjkzNy0xOS43OC00LjkzN2wtMTMuNTEgMzEuMTQ3IDM1LjQxNCA4LjgyN2M2LjU4OCAxLjY1MSAxMy4wNDUgMy4zNzkgMTkuNCA1LjAwNmwtMTEuMjYyIDQ1LjIxMyAyNy4xODIgNi43ODEgMTEuMTUzLTQ0LjczM2ExMDM4LjIwOSAxMDM4LjIwOSAwIDAgMCAyMS42ODcgNS42MjdsLTExLjExNSA0NC41MjMgMjcuMjEzIDYuNzgxIDExLjI2Mi00NS4xMjhjNDYuNDA0IDguNzgxIDgxLjI5OSA1LjIzOSA5NS45ODYtMzYuNzI3IDExLjgzNi0zMy43OS0uNTg5LTUzLjI4MS0yNS4wMDQtNjUuOTkxIDE3Ljc4LTQuMDk4IDMxLjE3NC0xNS43OTIgMzQuNzQ3LTM5Ljk0OXptLTYyLjE3NyA4Ny4xNzljLTguNDEgMzMuNzktNjUuMzA4IDE1LjUyMy04My43NTUgMTAuOTQzbDE0Ljk0NC01OS44OTljMTguNDQ2IDQuNjAzIDc3LjYgMTMuNzE3IDY4LjgxMSA0OC45NTZ6bTguNDE3LTg3LjY2N2MtNy42NzMgMzAuNzM2LTU1LjAzMSAxNS4xMi03MC4zOTMgMTEuMjkybDEzLjU0OC01NC4zMjdjMTUuMzYzIDMuODI4IDY0LjgzNiAxMC45NzMgNTYuODQ1IDQzLjAzNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03OC40IDY3LjJDMTczLjgtMjIgMzI0LjUtMjQgNDIxLjUgNzFjMTQuMyAxNC4xLTYuNCAzNy4xLTIyLjQgMjEuNS04NC44LTgyLjQtMjE1LjgtODAuMy0yOTguOS0zLjItMTYuMyAxNS4xLTM2LjUtOC4zLTIxLjgtMjIuMXptOTguOSA0MTguNmMxOS4zIDUuNyAyOS4zLTIzLjYgNy45LTMwQzczIDQyMS45IDkuNCAzMDYuMSAzNy43IDE5NC44YzUtMTkuNi0yNC45LTI4LjEtMzAuMi03LjEtMzIuMSAxMjcuNCA0MS4xIDI1OS44IDE2OS44IDI5OC4xem0xNDguMS0yYzEyMS45LTQwLjIgMTkyLjktMTY2LjkgMTY0LjQtMjkxLTQuNS0xOS43LTM0LjktMTMuOC0zMCA3LjkgMjQuMiAxMDcuNy0zNy4xIDIxNy45LTE0My4yIDI1My40LTIxLjIgNy0xMC40IDM2IDguOCAyOS43em0tNjIuOS03OWwuMi03MS44YzAtOC4yLTYuNi0xNC44LTE0LjgtMTQuOC04LjIgMC0xNC44IDYuNy0xNC44IDE0LjhsLS4yIDcxLjhjMCA4LjIgNi42IDE0LjggMTQuOCAxNC44czE0LjgtNi42IDE0LjgtMTQuOHptNzEtMjY5YzIuMSA5MC45IDQuNyAxMzEuOS04NS41IDEzMi41LTkyLjUtLjctODYuOS00NC4zLTg1LjUtMTMyLjUgMC0yMS44LTMyLjUtMTkuNi0zMi41IDB2NzEuNmMwIDY5LjMgNjAuNyA5MC45IDExOCA5MC4xIDU3LjMuOCAxMTgtMjAuOCAxMTgtOTAuMXYtNzEuNmMwLTE5LjYtMzIuNS0yMS44LTMyLjUgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxhY2tUaWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMySDB6bTMxNi41IDMyNS4yTDIyNCA0NDUuOWwtOTIuNS04OC43IDY0LjUtMTg0LTY0LjUtODYuNmgxODQuOUwyNTIgMTczLjJsNjQuNSAxODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsYWNrYmVycnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY2IDExNi45YzAgMjMuNC0xNi40IDQ5LjEtNzIuNSA0OS4xSDIzLjRsMjEtODguOGg2Ny44YzQyLjEgMCA1My44IDIzLjMgNTMuOCAzOS43em0xMjYuMi0zOS43aC02Ny44TDIwNS43IDE2Nmg3MC4xYzUzLjggMCA3MC4xLTI1LjcgNzAuMS00OS4xLjEtMTYuNC0xMS42LTM5LjctNTMuNy0zOS43ek04OC44IDIwOC4xSDIxTDAgMjk2LjloNzAuMWM1Ni4xIDAgNzIuNS0yMy40IDcyLjUtNDkuMSAwLTE2LjMtMTEuNy0zOS43LTUzLjgtMzkuN3ptMTgwLjEgMGgtNjcuOGwtMTguNyA4OC44aDcwLjFjNTMuOCAwIDcwLjEtMjMuNCA3MC4xLTQ5LjEgMC0xNi4zLTExLjctMzkuNy01My43LTM5Ljd6bTE4OS4zLTUzLjhoLTY3LjhsLTE4LjcgODguOGg3MC4xYzUzLjggMCA3MC4xLTIzLjQgNzAuMS00OS4xLjEtMTYuMy0xMS42LTM5LjctNTMuNy0zOS43em0tMjggMTM3LjloLTY3LjhMMzQzLjcgMzgxaDcwLjFjNTYuMSAwIDcwLjEtMjMuNCA3MC4xLTQ5LjEgMC0xNi4zLTExLjYtMzkuNy01My43LTM5Ljd6TTI0MC44IDM0NkgxNzNsLTE4LjcgODguOGg3MC4xYzU2LjEgMCA3MC4xLTI1LjcgNzAuMS00OS4xLjEtMTYuMy0xMS42LTM5LjctNTMuNy0zOS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbG9nZ2VyQiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDYuNiAyMjIuN2MtMS44LTgtNi44LTE1LjQtMTIuNS0xOC41LTEuOC0xLTEzLTIuMi0yNS0yLjctMjAuMS0uOS0yMi4zLTEuMy0yOC43LTUtMTAuMS01LjktMTIuOC0xMi4zLTEyLjktMjkuNS0uMS0zMy0xMy44LTYzLjctNDAuOS05MS4zLTE5LjMtMTkuNy00MC45LTMzLTY1LjUtNDAuNS01LjktMS44LTE5LjEtMi40LTYzLjMtMi45LTY5LjQtLjgtODQuOC42LTEwOC40IDEwQzQ1LjkgNTkuNSAxNC43IDk2LjEgMy4zIDE0Mi45IDEuMiAxNTEuNy43IDE2NS44LjIgMjQ2LjhjLS42IDEwMS41LjEgMTE2LjQgNi40IDEzNi41IDE1LjYgNDkuNiA1OS45IDg2LjMgMTA0LjQgOTQuMyAxNC44IDIuNyAxOTcuMyAzLjMgMjE2IC44IDMyLjUtNC40IDU4LTE3LjUgODEuOS00MS45IDE3LjMtMTcuNyAyOC4xLTM2LjggMzUuMi02Mi4xIDQuOS0xNy42IDQuNS0xNDIuOCAyLjUtMTUxLjd6bS0zMjIuMS02My42YzcuOC03LjkgMTAtOC4yIDU4LjgtOC4yIDQzLjkgMCA0NS40LjEgNTEuOCAzLjQgOS4zIDQuNyAxMy40IDExLjMgMTMuNCAyMS45IDAgOS41LTMuOCAxNi4yLTEyLjMgMjEuNi00LjYgMi45LTcuMyAzLjEtNTAuMyAzLjMtMjYuNS4yLTQ3LjctLjQtNTAuOC0xLjItMTYuNi00LjctMjIuOC0yOC41LTEwLjYtNDAuOHptMTkxLjggMTk5LjhsLTE0LjkgMi40LTc3LjUuOWMtNjguMS44LTg3LjMtLjQtOTAuOS0yLTcuMS0zLjEtMTMuOC0xMS43LTE0LjktMTkuNC0xLjEtNy4zIDIuNi0xNy4zIDguMi0yMi40IDcuMS02LjQgMTAuMi02LjYgOTcuMy02LjcgODkuNi0uMSA4OS4xLS4xIDk3LjYgNy44IDEyLjEgMTEuMyA5LjUgMzEuMi00LjkgMzkuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxvZ2dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjIuNCAxOTZjNC44LTQuOSA2LjItNS4xIDM2LjQtNS4xIDI3LjIgMCAyOC4xLjEgMzIuMSAyLjEgNS44IDIuOSA4LjMgNyA4LjMgMTMuNiAwIDUuOS0yLjQgMTAtNy42IDEzLjQtMi44IDEuOC00LjUgMS45LTMxLjEgMi4xLTE2LjQuMS0yOS41LS4yLTMxLjUtLjgtMTAuMy0yLjktMTQuMS0xNy43LTYuNi0yNS4zem02MS40IDk0LjVjLTUzLjkgMC01NS44LjItNjAuMiA0LjEtMy41IDMuMS01LjcgOS40LTUuMSAxMy45LjcgNC43IDQuOCAxMC4xIDkuMiAxMiAyLjIgMSAxNC4xIDEuNyA1Ni4zIDEuMmw0Ny45LS42IDkuMi0xLjVjOS01LjEgMTAuNS0xNy40IDMuMS0yNC40LTUuMy00LjctNS00LjctNjAuNC00Ljd6bTIyMy40IDEzMC4xYy0zLjUgMjguNC0yMyA1MC40LTUxLjEgNTcuNS03LjIgMS44LTkuNyAxLjktMTcyLjkgMS44LTE1Ny44IDAtMTY1LjktLjEtMTcyLTEuOC04LjQtMi4yLTE1LjYtNS41LTIyLjMtMTAtNS42LTMuOC0xMy45LTExLjgtMTctMTYuNC0zLjgtNS42LTguMi0xNS4zLTEwLTIyQy4xIDQyMyAwIDQyMC4zIDAgMjU2LjMgMCA5My4yIDAgODkuNyAxLjggODIuNiA4LjEgNTcuOSAyNy43IDM5IDUzIDMzLjRjNy4zLTEuNiAzMzIuMS0xLjkgMzQwLS4zIDIxLjIgNC4zIDM3LjkgMTcuMSA0Ny42IDM2LjQgNy43IDE1LjMgNy0xLjUgNy4zIDE4MC42LjIgMTE1LjggMCAxNjQuNS0uNyAxNzAuNXptLTg1LjQtMTg1LjJjLTEuMS01LTQuMi05LjYtNy43LTExLjUtMS4xLS42LTgtMS4zLTE1LjUtMS43LTEyLjQtLjYtMTMuOC0uOC0xNy44LTMuMS02LjItMy42LTcuOS03LjYtOC0xOC4zIDAtMjAuNC04LjUtMzkuNC0yNS4zLTU2LjUtMTItMTIuMi0yNS4zLTIwLjUtNDAuNi0yNS4xLTMuNi0xLjEtMTEuOC0xLjUtMzkuMi0xLjgtNDIuOS0uNS01Mi41LjQtNjcuMSA2LjItMjcgMTAuNy00Ni4zIDMzLjQtNTMuNCA2Mi40LTEuMyA1LjQtMS42IDE0LjItMS45IDY0LjMtLjQgNjIuOCAwIDcyLjEgNCA4NC41IDkuNyAzMC43IDM3LjEgNTMuNCA2NC42IDU4LjQgOS4yIDEuNyAxMjIuMiAyLjEgMTMzLjcuNSAyMC4xLTIuNyAzNS45LTEwLjggNTAuNy0yNS45IDEwLjctMTAuOSAxNy40LTIyLjggMjEuOC0zOC41IDMuMi0xMC45IDIuOS04OC40IDEuNy05My45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbHVlc2t5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNy44IDI5NC43Yy0zLjMtLjQtNi43LS44LTEwLTEuM2MzLjQgLjQgNi43IC45IDEwIDEuM3pNMjg4IDIyNy4xQzI2MS45IDE3Ni40IDE5MC45IDgxLjkgMTI0LjkgMzUuM0M2MS42LTkuNCAzNy41LTEuNyAyMS42IDUuNUMzLjMgMTMuOCAwIDQxLjkgMCA1OC40UzkuMSAxOTQgMTUgMjEzLjljMTkuNSA2NS43IDg5LjEgODcuOSAxNTMuMiA4MC43YzMuMy0uNSA2LjYtLjkgMTAtMS40Yy0zLjMgLjUtNi42IDEtMTAgMS40Qzc0LjMgMzA4LjYtOS4xIDM0Mi44IDEwMC4zIDQ2NC41QzIyMC42IDU4OS4xIDI2NS4xIDQzNy44IDI4OCAzNjEuMWMyMi45IDc2LjcgNDkuMiAyMjIuNSAxODUuNiAxMDMuNGMxMDIuNC0xMDMuNCAyOC4xLTE1Ni02NS44LTE2OS45Yy0zLjMtLjQtNi43LS44LTEwLTEuM2MzLjQgLjQgNi43IC45IDEwIDEuM2M2NC4xIDcuMSAxMzMuNi0xNS4xIDE1My4yLTgwLjdDNTY2LjkgMTk0IDU3NiA3NSA1NzYgNTguNHMtMy4zLTQ0LjctMjEuNi01Mi45Yy0xNS44LTcuMS00MC0xNC45LTEwMy4yIDI5LjhDMzg1LjEgODEuOSAzMTQuMSAxNzYuNCAyODggMjI3LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsdWV0b290aEIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTk2LjQ4IDI2MC4wMjNsOTIuNjI2LTEwMy4zMzNMMTQzLjEyNSAwdjIwNi4zM2wtODYuMTExLTg2LjExMS0zMS40MDYgMzEuNDA1IDEwOC4wNjEgMTA4LjM5OUwyNS42MDggMzY4LjQyMmwzMS40MDYgMzEuNDA1IDg2LjExMS04Ni4xMTFMMTQ1Ljg0IDUxMmwxNDguNTUyLTE0OC42NDQtOTcuOTEyLTEwMy4zMzN6bTQwLjg2LTEwMi45OTZsLTQ5Ljk3NyA0OS45NzgtLjMzOC0xMDAuMjk1IDUwLjMxNSA1MC4zMTd6TTE4Ny4zNjMgMzEzLjA0bDQ5Ljk3NyA0OS45NzgtNTAuMzE1IDUwLjMxNi4zMzgtMTAwLjI5NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmx1ZXRvb3RoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5Mi42IDE3MS4xTDI0OS43IDIxNGwtLjMtODYgNDMuMiA0My4xbS00My4yIDIxOS44bDQzLjEtNDMuMS00Mi45LTQyLjktLjIgODZ6TTQxNiAyNTkuNEM0MTYgNDY1IDM0NC4xIDUxMiAyMzAuOSA1MTJTMzIgNDY1IDMyIDI1OS40IDExNS40IDAgMjI4LjYgMCA0MTYgNTMuOSA0MTYgMjU5LjR6bS0xNTguNSAwbDc5LjQtODguNkwyMTEuOCAzNi41djE3Ni45TDEzOCAxMzkuNmwtMjcgMjYuOSA5Mi43IDkzLTkyLjcgOTMgMjYuOSAyNi45IDczLjgtNzMuOCAyLjMgMTcwIDEyNy40LTEyNy41LTgzLjktODguN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9vdHN0cmFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzMy41LDIwMS40YzAtMjIuMS0xNS42LTM0LjMtNDMtMzQuM2gtNTAuNHY3MS4yaDQyLjVDMzE1LjQsMjM4LjIsMzMzLjUsMjI1LDMzMy41LDIwMS40eiBNNTE3LDE4OC42IGMtOS41LTMwLjktMTAuOS02OC44LTkuOC05OC4xYzEuMS0zMC41LTIyLjctNTguNS01NC43LTU4LjVIMTIzLjdjLTMyLjEsMC01NS44LDI4LjEtNTQuNyw1OC41YzEsMjkuMy0wLjMsNjcuMi05LjgsOTguMSBjLTkuNiwzMS0yNS43LDUwLjYtNTIuMiw1My4xdjI4LjVjMjYuNCwyLjUsNDIuNiwyMi4xLDUyLjIsNTMuMWM5LjUsMzAuOSwxMC45LDY4LjgsOS44LDk4LjFjLTEuMSwzMC41LDIyLjcsNTguNSw1NC43LDU4LjVoMzI4LjcgYzMyLjEsMCw1NS44LTI4LjEsNTQuNy01OC41Yy0xLTI5LjMsMC4zLTY3LjIsOS44LTk4LjFjOS42LTMxLDI1LjctNTAuNiw1Mi4xLTUzLjF2LTI4LjVDNTQyLjcsMjM5LjIsNTI2LjUsMjE5LjYsNTE3LDE4OC42eiBNMzAwLjIsMzc1LjFoLTk3LjlWMTM2LjhoOTcuNGM0My4zLDAsNzEuNywyMy40LDcxLjcsNTkuNGMwLDI1LjMtMTkuMSw0Ny45LTQzLjUsNTEuOHYxLjNjMzMuMiwzLjYsNTUuNSwyNi42LDU1LjUsNTguMyBDMzgzLjQsMzQ5LjcsMzUyLjEsMzc1LjEsMzAwLjIsMzc1LjF6IE0yOTAuMiwyNjYuNGgtNTAuMXY3OC40aDUyLjNjMzQuMiwwLDUyLjMtMTMuNyw1Mi4zLTM5LjUgQzM0NC43LDI3OS42LDMyNi4xLDI2Ni40LDI5MC4yLDI2Ni40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg2LjM0NCwxOTcuODM0YTUxLjc2Nyw1MS43NjcsMCwwLDAtNDEuNTcsMjAuMDU4VjE1Ni4wMThhOC4xOSw4LjE5LDAsMCwwLTguMTktOC4xOUg4LjE5QTguMTksOC4xOSwwLDAsMCwwLDE1Ni4wMThWMzMzLjU1MWE4LjE4OSw4LjE4OSwwLDAsMCw4LjE5LDguMTg5SDM2LjU4NGE4LjE4OSw4LjE4OSwwLDAsMCw4LjE5LTguMTg5di04LjA4OGMxMS42MjgsMTMuMzczLDI1Ljg3NCwxOS43NjksNDEuNTczLDE5Ljc2OSwzNC42LDAsNjEuOTIyLTI2LjE2NCw2MS45MjItNzMuODQzQzE0OC4yNjYsMjI1LjQ1MiwxMjEuMjI5LDE5Ny44MzQsODYuMzQ0LDE5Ny44MzRaTTcxLjUxNiwzMDUuNjkxYy05LjU5MywwLTIxLjIyMS00Ljk0Mi0yNi43NDUtMTIuNVYyNTAuMTY0YzUuNTI4LTcuNTU4LDE3LjE1Mi0xMi43OTEsMjYuNzQ1LTEyLjc5MSwxNy43MzQsMCwzMS4xMDcsMTMuMDgyLDMxLjEwNywzNC4wMTNDMTAyLjYyMywyOTIuNjA5LDg5LjI1LDMwNS42OTEsNzEuNTE2LDMwNS42OTFabTE1Ni4zNzItNTkuMDMyYTE3LjQsMTcuNCwwLDEsMCwxNy40LDE3LjRBMTcuNCwxNy40LDAsMCwwLDIyNy44ODgsMjQ2LjY1OVpNMjczLjk1NiwxNTYuN1YxMTIuMDM5YTEzLjMwOCwxMy4zMDgsMCwxLDAtMTAuMjM3LDBWMTU2LjdhMTA3LjQ5LDEwNy40OSwwLDEsMCwxMC4yMzcsMFptODUuOTkzLDEwNy4zNjdjMCwzMC41MzEtNDAuNzkyLDU1LjI4MS05MS4xMTIsNTUuMjgxcy05MS4xMTEtMjQuNzUtOTEuMTExLTU1LjI4MSw0MC43OTItNTUuMjgxLDkxLjExMS01NS4yODFTMzU5Ljk0OSwyMzMuNTMyLDM1OS45NDksMjY0LjA2MlptLTUwLjE2MywxNy40YTE3LjQsMTcuNCwwLDEsMC0xNy40LTE3LjRoMEExNy40LDE3LjQsMCwwLDAsMzA5Ljc4NiwyODEuNDY2Wk01ODAuNywyNTAuNDU1Yy0xNC44MjgtMi42MTctMjIuMzg3LTMuNzgtMjIuMzg3LTkuODg1LDAtNS41MjMsNy4yNjgtOS44ODQsMTcuNzM1LTkuODg0YTY1LjU2LDY1LjU2LDAsMCwxLDM0LjQ4NCwxMC4xLDguMTcxLDguMTcxLDAsMCwwLDExLjI4OC0yLjQ2OGMuMDctLjExLjEzOC0uMjIxLjItLjMzM2w4LjYxMS0xNC44ODZhOC4yLDguMiwwLDAsMC0yLjg2Ny0xMS4xMjMsOTkuODYzLDk5Ljg2MywwLDAsMC01Mi4wMTQtMTQuMTM4Yy0zOC45NTYsMC02MC4xNzksMjEuNTE0LTYwLjE3OSw0Ni4yMjUsMCwzNi4zNDIsMzMuNzI1LDQxLjg2NCw1Ny41NjMsNDUuNjQyLDEzLjM3MywyLjMyNiwyNC4xMyw0LjM2MSwyNC4xMywxMS4wNDgsMCw2LjQtNS41MjMsMTAuNzU3LTE4LjksMTAuNzU3LTEzLjU1MiwwLTMwLjk5NC02LjIyMi00Mi42MjMtMTMuNTc5YTguMjA2LDguMjA2LDAsMCwwLTExLjMzNSwyLjQ5MWMtLjAzNS4wNTQtLjA2OS4xMDgtLjEuMTY0bC0xMC4yLDE2Ljg5MWE4LjIyMiw4LjIyMiwwLDAsMCwyLjQ5MSwxMS4wNjZjMTUuMjI0LDEwLjMsMzcuNjYzLDE2LjY5Miw1OS40NDEsMTYuNjkyLDQwLjQwOSwwLDYzLjk1Ny0xOS43NjksNjMuOTU3LTQ2LjUxNUM2NDAsMjYwLjYzLDYwNC41MzcsMjU0LjgxNiw1ODAuNywyNTAuNDU1Wm0tOTUuOTI4LDYwLjc4N2E4LjIxMSw4LjIxMSwwLDAsMC05LjUyMS01LjkzOCwyMy4xNjgsMjMuMTY4LDAsMCwxLTQuMTU1LjM4N2MtNy44NDksMC0xMi41LTYuMTA2LTEyLjUtMTQuMjQ1VjI0MC4yOGgyMC4zNDlhOC4xNDMsOC4xNDMsMCwwLDAsOC4xNDEtOC4xNDNWMjA5LjQ2NmE4LjE0Myw4LjE0MywwLDAsMC04LjE0MS04LjE0M0g0NTguNTk0VjE3MS4wOTFhOC4xNDMsOC4xNDMsMCwwLDAtOC4xNDMtOC4xNDNINDIyLjI1N2E4LjE0Myw4LjE0MywwLDAsMC04LjE0Myw4LjE0M2gwdjMwLjIzMkgzOTlhOC4xNDMsOC4xNDMsMCwwLDAtOC4xNDMsOC4xNDNoMHYyMi42NzFBOC4xNDMsOC4xNDMsMCwwLDAsMzk5LDI0MC4yOGgxNS4xMTV2NjMuNjY3YzAsMjcuMDM3LDE1LjQwOCw0MS4yODIsNDMuOSw0MS4yODIsMTIuMTgzLDAsMjEuMzgzLTIuMiwyNy42LTUuNDQ2YTguMTYxLDguMTYxLDAsMCwwLDQuMTQ1LTkuMjc4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmF2ZVJldmVyc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk4IDBjMyAwIDUuOCAxLjMgNy44IDMuNmwzOC4xIDQ0Yy41LS4xIDEtLjIgMS41LS4zYzkuMi0xLjYgMTguNi0yLjIgMjcuNy0xLjJjMTEuNiAxLjQgMjEuNSA1LjQgMjguOSAxMi45YzcuNyA3LjggMTUuNCAxNS44IDIyLjYgMjMuNmMyLjUgMi43IDQuOSA1LjIgNi45IDcuNGMuNyAuOCAxLjQgMS41IDEuOSAyYzMuNCAzLjcgNC4yIDguMSAyLjcgMTEuOWwtOS44IDI0LjYgMTMuMSAzOC4xYy43IDIgLjggNC4xIC4yIDYuMmMtLjEgLjQtLjEgLjQtLjUgMi4xYy0uNiAyLjMtLjYgMi4zLTEuNSA1LjhjLTEuNiA2LjMtMy41IDEzLjMtNS40IDIwLjljLTUuNiAyMS42LTExLjIgNDMuMi0xNi40IDYzLjRjLTEyLjkgNDkuOS0yMS40IDgyLjctMjMuNCA5MC45Yy0xMS4xIDQ0LjUtMTkuOSA2MC00OC4zIDgwLjNjLTI0LjkgMTcuOC03Ni44IDUzLjYtODYuOCA2MGMtMSAuNi0yIDEuMy0zLjQgMi4zYy0uNSAuNC0zLjIgMi4yLTMuOSAyLjdjLTQuOSAzLjMtOC4zIDUuNS0xMi4xIDcuM2MtNC43IDIuMi05LjMgMy41LTEzLjkgMy41cy05LjEtMS4yLTEzLjktMy41Yy0zLjctMS44LTcuMi0zLjktMTIuMS03LjNjLS44LS41LTMuNC0yLjQtMy45LTIuN2MtMS40LTEtMi41LTEuNy0zLjQtMi4zYy0xMC02LjQtNjEuOS00Mi4xLTg2LjgtNjBjLTI4LjQtMjAuNC0zNy4yLTM1LjgtNDguMy04MC4zYy0yLTguMi0xMC41LTQxLTIzLjMtOTAuNWMtNS4zLTIwLjYtMTAuOS00Mi4yLTE2LjUtNjMuOGMtMi03LjYtMy44LTE0LjYtNS40LTIwLjljLS45LTMuNS0uOS0zLjUtMS41LTUuOGMtLjQtMS43LS40LTEuNy0uNS0yLjFjLS41LTItLjQtNC4yIC4yLTYuMmwxMy4xLTM4LjFMMTEuOCAxMDRjLTEuNS0zLjgtLjctOC4yIDItMTEuMmMxLjItMS4zIDEuOC0yIDIuNi0yLjhjMi0yLjIgNC40LTQuNyA2LjktNy40QzMwLjYgNzQuOSAzOC4zIDY2LjkgNDYgNTkuMWM3LjQtNy41IDE3LjMtMTEuNiAyOC45LTEyLjljOS4xLTEuMSAxOC41LS41IDI3LjcgMS4yYy41IC4xIDEgLjIgMS41IC4zbDM4LjEtNDRDMTQ0LjIgMS4zIDE0NyAwIDE1MCAwSDI5OHptLTQuNyAyMS4xSDE1NC43TDExNS42IDY2LjJjLTIuNiAzLTYuNyA0LjMtMTAuNiAzLjJjLS4yLS4xLS43LS4yLTEuNS0uNGMtMS4zLS4zLTIuOS0uNi00LjUtLjljLTcuNC0xLjMtMTQuOS0xLjgtMjEuNy0xQzcwIDY4IDY0LjMgNzAuMyA2MC43IDc0Yy03LjYgNy43LTE1LjIgMTUuNi0yMi4zIDIzLjNjLTEuNyAxLjgtMy4zIDMuNS00LjggNS4xbDguOCAyMmMxIDIuNCAxIDUgLjIgNy41TDI5LjIgMTcwLjZjLjQgMS40IC41IDEuOSAxLjIgNC44YzEuNiA2LjMgMy41IDEzLjMgNS40IDIwLjljNS42IDIxLjYgMTEuMiA0My4yIDE2LjQgNjMuNGMxMi45IDUwIDIxLjQgODIuOCAyMy40IDkxQzg1LjcgMzkwLjggOTIgNDAyIDExNS44IDQxOWMyNC42IDE3LjYgNzYuMyA1My4yIDg1LjkgNTkuM2MxLjIgLjggMi41IDEuNiA0IDIuN2MuNiAuNCAzLjIgMi4yIDMuOSAyLjdjNCAyLjggNi43IDQuNCA5LjIgNS42YzIuMiAxIDMuOSAxLjUgNS4xIDEuNXMyLjktLjUgNS4xLTEuNWMyLjUtMS4yIDUuMi0yLjggOS4yLTUuNmMuNy0uNSAzLjMtMi4zIDMuOS0yLjdjMS42LTEuMSAyLjgtMS45IDQtMi43YzkuNi02LjEgNjEuMy00MS43IDg1LjktNTkuM2MyMy44LTE3LjEgMzAuMi0yOC4yIDQwLjEtNjguM2MyLjEtOC4zIDEwLjUtNDEuMSAyMy4zLTkwLjdjNS4zLTIwLjYgMTAuOS00Mi4yIDE2LjUtNjMuOGMyLTcuNiAzLjgtMTQuNiA1LjQtMjAuOWMuNy0yLjkgLjktMy40IDEuMi00LjhsLTEzLjMtMzguOGMtLjgtMi40LS44LTUuMSAuMi03LjVsOC44LTIyYy0xLjUtMS42LTMuMS0zLjMtNC44LTUuMWMtNy4yLTcuNi0xNC43LTE1LjUtMjIuMy0yMy4zYy0zLjctMy43LTkuMy02LTE2LjYtNi45Yy02LjgtLjgtMTQuNC0uMy0yMS43IDFjLTEuNyAuMy0zLjIgLjYtNC41IC45Yy0uOCAuMi0xLjMgLjMtMS41IC40Yy0zLjggMS4xLTcuOS0uMi0xMC42LTMuMkwyOTMuMyAyMS4xek0yMjQgMzE2YzIuOCAwIDIwLjkgNi41IDM1LjQgMTQuMXMyNSAxMyAyOC4zIDE1LjJzMS4zIDYuMi0xLjcgOC40cy00NC4xIDM0LjYtNDguMSAzOC4ycy05LjggOS41LTEzLjggOS41cy05LjgtNS45LTEzLjgtOS41cy00NS4xLTM2LTQ4LjEtMzguMnMtNS4xLTYuMi0xLjctOC40czEzLjktNy41IDI4LjMtMTUuMnMzMi41LTE0LjEgMzUuNC0xNC4xem0uMS0yMzAuN2MuNyAwIDguOCAuMiAyMC41IDQuMmMxMi4zIDQuMiAyNS43IDkuNCAzMS45IDkuNHM1MS45LTguOSA1MS45LTguOXM1NC4yIDY2LjcgNTQuMiA4MXMtNi44IDE4LTEzLjcgMjUuNHMtMzYuOCAzOS44LTQwLjcgNDMuOXMtMTEuOSAxMC41LTcuMSAyMS44czExLjcgMjUuOCAzLjkgNDAuNHMtMjEgMjQuNC0yOS40IDIyLjhzLTI4LjQtMTIuMi0zNS43LTE3LjFzLTMwLjUtMjQuMy0zMC41LTMxLjhzMjQtMjAuOCAyOC40LTIzLjlzMjQuNy0xNC44IDI1LjEtMTkuNHMuMy02LTUuNy0xNy40cy0xNi43LTI2LjctMTQuOS0zNi44czE5LjEtMTUuNCAzMS41LTIwLjJzMzYuMi0xMy43IDM5LjItMTUuMXMyLjItMi43LTYuOC0zLjZzLTM0LjYtNC4zLTQ2LjEtMS4xcy0zMS4yIDguMi0zMi44IDEwLjlzLTMgMi43LTEuNCAxMS44czEwLjEgNTIuOCAxMC45IDYwLjZzMi40IDEyLjktNS44IDE0LjhzLTIyLjEgNS4yLTI2LjggNS4ycy0xOC42LTMuMy0yNi44LTUuMnMtNi42LTctNS44LTE0LjhzOS4zLTUxLjUgMTAuOS02MC42cy4yLTkuMi0xLjQtMTEuOHMtMjEuMy03LjYtMzIuOC0xMC45cy0zNy4xIC4yLTQ2LjEgMS4xcy05LjggMi4yLTYuOCAzLjZzMjYuOCAxMC40IDM5LjIgMTUuMXMyOS43IDEwIDMxLjUgMjAuMnMtOSAyNS40LTE0LjkgMzYuOHMtNi4xIDEyLjgtNS43IDE3LjRzMjAuNiAxNi40IDI1LjEgMTkuNHMyOC40IDE2LjQgMjguNCAyMy45cy0yMy4yIDI3LTMwLjUgMzEuOHMtMjcuMiAxNS40LTM1LjcgMTcuMXMtMjEuNy04LjItMjkuNC0yMi44cy0uOC0yOS4xIDMuOS00MC40cy0zLjMtMTcuNy03LjEtMjEuOHMtMzMuOC0zNi41LTQwLjctNDMuOXMtMTMuNy0xMS4yLTEzLjctMjUuNHM1NC4yLTgxIDU0LjItODFzNDUuOCA4LjkgNTEuOSA4LjlzMTkuNS01LjIgMzEuOS05LjRzMjAuNi00LjIgMjAuNi00LjJsLjEgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ1LjUgMEgyMjRoNzguNWw0NC43IDUwLjhzMzkuMy0xMC45IDU3LjggNy42czMzLjggMzQuOSAzMy44IDM0LjlsLTEyIDI5LjUgMTUuMyA0My43cy00NC45IDE3MC4yLTUwLjEgMTkxYy0xMC40IDQwLjktMTcuNCA1Ni44LTQ2LjkgNzcuNXMtODIuOSA1Ni44LTkxLjYgNjIuMmMtMS45IDEuMi0zLjkgMi41LTUuOSAzLjljLTcuNSA1LjEtMTUuOCAxMC44LTIzLjUgMTAuOGwwIDAgMCAwYy03LjcgMC0xNi4xLTUuNy0yMy41LTEwLjhjLTItMS40LTQtMi44LTUuOS0zLjljLTguNy01LjUtNjIuMS00MS41LTkxLjYtNjIuMnMtMzYuNS0zNi42LTQ2LjktNzcuNWMtNS4zLTIwLjgtNTAuMS0xOTEtNTAuMS0xOTFsMTUuMy00My43TDkuMiA5My4zczE1LjMtMTYuNCAzMy44LTM0LjlzNTcuOC03LjYgNTcuOC03LjZMMTQ1LjUgMHpNMjI0IDQwNy42bDAgMGMzLjcgMCA4LjktNC43IDEzLTguNGMuNi0uNSAxLjItMS4xIDEuNy0xLjVjNC4yLTMuNyA0Ny44LTM3LjUgNTEtMzkuOHM1LjQtNi41IDEuOS04LjdjLTIuOC0xLjctMTAtNS41LTIwLjMtMTAuOGMtMy0xLjYtNi4zLTMuMi05LjctNWMtMTUuNC04LTM0LjUtMTQuNy0zNy41LTE0LjdsMCAwIDAgMGMtMyAwLTIyLjEgNi44LTM3LjUgMTQuN2MtMy41IDEuOC02LjcgMy41LTkuNyA1Yy0xMC4zIDUuMy0xNy42IDkuMS0yMC4zIDEwLjhjLTMuNiAyLjItMS40IDYuNCAxLjkgOC43czQ2LjggMzYuMSA1MSAzOS44Yy41IC41IDEuMSAxIDEuNyAxLjVjNC4xIDMuNyA5LjMgOC40IDEzIDguNGwwIDB6bTAtMTY1LjdsMCAwYzQuNyAwIDE3LjYtMyAyNi40LTVsMCAwIDItLjVjNy44LTEuOCA3LjMtNi4zIDYuNC0xM2MtLjEtLjgtLjItMS42LS4zLTIuNGMtLjYtNi4xLTUuOC0zMy4xLTkuMS01MC4zYy0xLjEtNS44LTItMTAuNS0yLjQtMTIuOWMtMS41LTguMS0uNi05LjQgLjctMTEuM2MuMi0uMyAuNS0uNyAuNy0xLjFjMS40LTIuMyAxNi02LjIgMjcuOS05LjVsMCAwYzIuNS0uNyA0LjgtMS4zIDYuOS0xLjljMTAuNi0zIDMyLjQtLjYgNDQuMiAuNmMxLjggLjIgMy40IC40IDQuNyAuNWM5LjYgLjkgMTAuNCAyLjMgNy4yIDMuOGMtMi4zIDEuMS0xNi4yIDYuMy0yOC43IDEwLjlsMCAwIDAgMGMtNC43IDEuOC05LjIgMy41LTEyLjggNC44Yy0xLjUgLjUtMyAxLjEtNC41IDEuN2MtMTIuNSA0LjYtMjcuMiAxMC0yOC45IDE5LjRjLTEuNSA4LjMgNS4yIDE5LjkgMTEuMyAzMC4zbDAgMGMxLjYgMi44IDMuMiA1LjUgNC42IDguMWM2LjMgMTEuOSA2LjUgMTMuMyA2LjEgMTguMWMtLjQgMy45LTE0LjUgMTIuNy0yMi40IDE3LjZsMCAwYy0xLjggMS4xLTMuMyAyLjEtNC4yIDIuN2MtLjggLjUtMi4xIDEuNC0zLjggMi40Yy04LjYgNS4yLTI2LjMgMTYtMjYuMyAyMi41YzAgNy44IDI0LjYgMjguMSAzMi40IDMzLjJzMjguOSAxNi4xIDM3LjkgMTcuOHMyMy04LjUgMzEuMi0yMy44YzcuNy0xNC40IDEuNy0yOC41LTMuMi00MGwtLjktMi4yYy00LjUtMTAuNiAxLjktMTcgNi4yLTIxLjNsMCAwYy41LS41IDEtMSAxLjQtMS40TDM3Ny43IDE5NGMxLjMtMS4zIDIuNS0yLjYgMy43LTMuOGwwIDBjNS44LTUuNyAxMC44LTEwLjUgMTAuOC0yMi44YzAtMTQuOS01Ny41LTg0LjUtNTcuNS04NC41cy00OC41IDkuMy01NS4xIDkuM2MtNS4yIDAtMTUuMy0zLjUtMjUuOC03LjFsMCAwYy0yLjctLjktNS40LTEuOS04LTIuN0MyMzIuOCA3OC4xIDIyNCA3OCAyMjQgNzhsMCAwIDAgMHMtOC43IDAtMjEuOCA0LjRjLTIuNyAuOS01LjQgMS44LTggMi43bDAgMGMtMTAuNSAzLjYtMjAuNiA3LjEtMjUuOCA3LjFjLTYuNSAwLTU1LjEtOS4zLTU1LjEtOS4zcy01Ny41IDY5LjYtNTcuNSA4NC41YzAgMTIuMyA0LjkgMTcuMSAxMC44IDIyLjhsMCAwYzEuMiAxLjIgMi41IDIuNCAzLjcgMy44bDQzLjEgNDUuOGMuNCAuNSAuOSAuOSAxLjQgMS40bDAgMGM0LjMgNC4zIDEwLjYgMTAuNyA2LjIgMjEuM2wtLjkgMi4yYy00LjkgMTEuNS0xMSAyNS42LTMuMiA0MGM4LjIgMTUuMyAyMi4yIDI1LjUgMzEuMiAyMy44czMwLjEtMTIuNyAzNy45LTE3LjhzMzIuNC0yNS40IDMyLjQtMzMuMmMwLTYuNS0xNy43LTE3LjMtMjYuMy0yMi41Yy0xLjctMS0zLjEtMS45LTMuOC0yLjRjLS45LS42LTIuNC0xLjUtNC4yLTIuN2MtNy45LTQuOS0yMi0xMy43LTIyLjQtMTcuNmMtLjQtNC44LS4zLTYuMiA2LjEtMTguMWMxLjMtMi41IDIuOS01LjMgNC42LTguMWM2LTEwLjQgMTIuOC0yMiAxMS4zLTMwLjNjLTEuNy05LjQtMTYuNC0xNC44LTI4LjktMTkuNGMtMS42LS42LTMuMS0xLjEtNC41LTEuN2MtMy42LTEuNC04LjEtMy4xLTEyLjgtNC44bC0uMSAwYy0xMi41LTQuNy0yNi40LTkuOS0yOC43LTEwLjljLTMuMi0xLjUtMi4zLTIuOCA3LjItMy44YzEuMy0uMSAyLjktLjMgNC43LS41YzExLjgtMS4zIDMzLjYtMy42IDQ0LjItLjZjMi4xIC42IDQuNCAxLjIgNi45IDEuOWMxMS45IDMuMiAyNi41IDcuMiAyNy45IDkuNWMuMiAuNCAuNSAuNyAuNyAxLjFjMS4zIDEuOSAyLjIgMy4yIC43IDExLjNjLS40IDIuNC0xLjMgNy4xLTIuNCAxMi45Yy0zLjMgMTcuMi04LjUgNDQuMi05LjEgNTAuM2MtLjEgLjgtLjIgMS43LS4zIDIuNGMtLjggNi43LTEuNCAxMS4yIDYuNCAxM2wyIC41IDAgMGM4LjggMiAyMS44IDUgMjYuNCA1bDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnRjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMC4yMDQgMjQyLjYzOGMyNy43My0xNC4xOCA0NS4zNzctMzkuMzkgNDEuMjgtODEuMy01LjM1OC01Ny4zNTEtNTIuNDU4LTc2LjU3My0xMTQuODUtODEuOTI5VjBoLTQ4LjUyOHY3Ny4yMDNjLTEyLjYwNSAwLTI1LjUyNS4zMTUtMzguNDQ0LjYzVjBoLTQ4LjUyOHY3OS40MDljLTE3Ljg0Mi41MzktMzguNjIyLjI3Ni05Ny4zNyAwdjUxLjY3OGMzOC4zMTQtLjY3OCA1OC40MTctMy4xNCA2My4wMjMgMjEuNDI3djIxNy40MjljLTIuOTI1IDE5LjQ5Mi0xOC41MjQgMTYuNjg1LTUzLjI1NSAxNi4wNzFMMy43NjUgNDQzLjY4Yzg4LjQ4MSAwIDk3LjM3LjMxNSA5Ny4zNy4zMTVWNTEyaDQ4LjUyOHYtNjcuMDZjMTMuMjM0LjMxNSAyNi4xNTQuMzE1IDM4LjQ0NC4zMTVWNTEyaDQ4LjUyOHYtNjguMDA1YzgxLjI5OS00LjQxMiAxMzUuNjQ3LTI0Ljg5NCAxNDIuODk1LTEwMS40NjcgNS42NzEtNjEuNDQ2LTIzLjMyLTg4Ljg2Mi02OS4zMjYtOTkuODl6TTE1MC42MDggMTM0LjU1M2MyNy40MTUgMCAxMTMuMTI2LTguNTA3IDExMy4xMjYgNDguNTI4IDAgNTQuNTE1LTg1LjcxIDQ4LjIxMi0xMTMuMTI2IDQ4LjIxMnYtOTYuNzR6bTAgMjUxLjc3NlYyNzkuODIxYzMyLjc3MiAwIDEzMy4xMjctOS4xMzggMTMzLjEyNyA1My4yNTUtLjAwMSA2MC4xODYtMTAwLjM1NSA1My4yNTMtMTMzLjEyNyA1My4yNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1ZmZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjcuODQgMzgwLjY3bC0xOTYuNSA5Ny44MmExOC42IDE4LjYgMCAwIDEtMTQuNjcgMEwyMC4xNiAzODAuNjdjLTQtMi00LTUuMjggMC03LjI5TDY3LjIyIDM1MGExOC42NSAxOC42NSAwIDAgMSAxNC42OSAwbDEzNC43NiA2N2ExOC41MSAxOC41MSAwIDAgMCAxNC42NyAwbDEzNC43Ni02N2ExOC42MiAxOC42MiAwIDAgMSAxNC42OCAwbDQ3LjA2IDIzLjQzYzQuMDUgMS45NiA0LjA1IDUuMjQgMCA3LjI0em0wLTEzNi41M2wtNDcuMDYtMjMuNDNhMTguNjIgMTguNjIgMCAwIDAtMTQuNjggMGwtMTM0Ljc2IDY3LjA4YTE4LjY4IDE4LjY4IDAgMCAxLTE0LjY3IDBMODEuOTEgMjIwLjcxYTE4LjY1IDE4LjY1IDAgMCAwLTE0LjY5IDBsLTQ3LjA2IDIzLjQzYy00IDItNCA1LjI5IDAgNy4zMWwxOTYuNTEgOTcuOGExOC42IDE4LjYgMCAwIDAgMTQuNjcgMGwxOTYuNS05Ny44YzQuMDUtMi4wMiA0LjA1LTUuMyAwLTcuMzF6TTIwLjE2IDEzMC40MmwxOTYuNSA5MC4yOWEyMC4wOCAyMC4wOCAwIDAgMCAxNC42NyAwbDE5Ni41MS05MC4yOWM0LTEuODYgNC00Ljg5IDAtNi43NEwyMzEuMzMgMzMuNGExOS44OCAxOS44OCAwIDAgMC0xNC42NyAwbC0xOTYuNSA5MC4yOGMtNC4wNSAxLjg1LTQuMDUgNC44OCAwIDYuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1cm9tb2JlbGV4cGVydGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnYxMjhoMTI4VjMySDB6bTEyMCAxMjBIOFY0MGgxMTJ2MTEyem00MC0xMjB2MTI4aDEyOFYzMkgxNjB6bTEyMCAxMjBIMTY4VjQwaDExMnYxMTJ6bTQwLTEyMHYxMjhoMTI4VjMySDMyMHptMTIwIDEyMEgzMjhWNDBoMTEydjExMnpNMCAxOTJ2MTI4aDEyOFYxOTJIMHptMTIwIDEyMEg4VjIwMGgxMTJ2MTEyem00MC0xMjB2MTI4aDEyOFYxOTJIMTYwem0xMjAgMTIwSDE2OFYyMDBoMTEydjExMnptNDAtMTIwdjEyOGgxMjhWMTkySDMyMHptMTIwIDEyMEgzMjhWMjAwaDExMnYxMTJ6TTAgMzUydjEyOGgxMjhWMzUySDB6bTEyMCAxMjBIOFYzNjBoMTEydjExMnptNDAtMTIwdjEyOGgxMjhWMzUySDE2MHptMTIwIDEyMEgxNjhWMzYwaDExMnYxMTJ6bTQwLTEyMHYxMjhoMTI4VjM1MkgzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1eU5MYXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJDMTMzLjI3IDMyIDcuNzkgMTMyLjMyIDcuNzkgMjU2UzEzMy4yNyA0ODAgMjg4IDQ4MHMyODAuMjEtMTAwLjMyIDI4MC4yMS0yMjRTNDQyLjczIDMyIDI4OCAzMnptLTg1LjM5IDM1Ny4xOUw2NC4xIDM5MC41NWw3Ny4yNS0yOTAuNzRoMTMzLjQ0YzYzLjE1IDAgODQuOTMgMjguNjUgNzggNzIuODRhNjAuMjQgNjAuMjQgMCAwIDEtMS41IDYuODUgNzcuMzkgNzcuMzkgMCAwIDAtMTcuMjEtMS45M2MtNDIuMzUgMC03Ni42OSAzMy44OC03Ni42OSA3NS42NSAwIDM3LjE0IDI3LjE0IDY4IDYyLjkzIDc0LjQ1LTE4LjI0IDM3LjE2LTU2LjE2IDYwLjkyLTExNy43MSA2MS41MnpNMzU4IDIwNy4xMWgzMmwtMjIuMTYgOTAuMzFoLTM1LjQxbC0xMS4xOS0zNS42My03LjgzIDM1LjYzaC0zNy44M2wyNi42My05MC4zMWgzMS4zNGwxNSAzNi43NXptMTQ1Ljg2IDE4Mi4wOEgzMDYuNzlMMzIyLjYzIDMyOGE3OC44IDc4LjggMCAwIDAgMTEuNDcuODNjNDIuMzQgMCA3Ni42OS0zMy44NyA3Ni42OS03NS42NSAwLTMyLjY1LTIxLTYwLjQ2LTUwLjM4LTcxLjA2bDIxLjMzLTgyLjM1aDkyLjVsLTUzLjA1IDIwNS4zNmgxMDMuODd6TTIxMS43IDI2OS4zOUgxODdsLTEzLjggNTYuNDdoMjQuN2MxNi4xNCAwIDMyLjExLTMuMTggMzcuOTQtMjYuNjUgNS41Ni0yMi4zMS03Ljk5LTI5LjgyLTI0LjE0LTI5Ljgyek0yMzMgMTcwaC0yMS4zNEwyMDAgMjE3LjcxaDIxLjM3YzE4IDAgMzUuMzgtMTQuNjQgMzkuMjEtMzAuMTRDMjY1LjIzIDE2OC43MSAyNTEuMDcgMTcwIDIzMyAxNzB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1eXNlbGxhZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDE1MC43bDQyLjkgMTYwLjdoLTg1LjhMMjI0IDE1MC43ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS02NS4zIDMyNS4zbC05NC41LTI5OC43SDE1OS44TDY1LjMgNDA1LjNIMTU2bDExMS43LTkxLjYgMjQuMiA5MS42aDkwLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbmFkaWFuTWFwbGVMZWFmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4My44IDM1MS43YzIuNS0yLjUgMTA1LjItOTIuNCAxMDUuMi05Mi40bC0xNy41LTcuNWMtMTAtNC45LTcuNC0xMS41LTUtMTcuNCAyLjQtNy42IDIwLjEtNjcuMyAyMC4xLTY3LjNzLTQ3LjcgMTAtNTcuNyAxMi41Yy03LjUgMi40LTEwLTIuNS0xMi41LTcuNXMtMTUtMzIuNC0xNS0zMi40LTUyLjYgNTkuOS01NS4xIDYyLjNjLTEwIDcuNS0yMC4xIDAtMTcuNi0xMCAwLTEwIDI3LjYtMTI5LjYgMjcuNi0xMjkuNnMtMzAuMSAxNy40LTQwLjEgMjIuNGMtNy41IDUtMTIuNiA1LTE3LjYtNUMyOTMuNSA3Mi4zIDI1NS45IDAgMjU1LjkgMHMtMzcuNSA3Mi4zLTQyLjUgNzkuOGMtNSAxMC0xMCAxMC0xNy42IDUtMTAtNS00MC4xLTIyLjQtNDAuMS0yMi40UzE4My4zIDE4MiAxODMuMyAxOTJjMi41IDEwLTcuNSAxNy41LTE3LjYgMTAtMi41LTIuNS01NS4xLTYyLjMtNTUuMS02Mi4zUzk4LjEgMTY3IDk1LjYgMTcycy01IDkuOS0xMi41IDcuNUM3MyAxNzcgMjUuNCAxNjcgMjUuNCAxNjdzMTcuNiA1OS43IDIwLjEgNjcuM2MyLjQgNiA1IDEyLjUtNSAxNy40TDIzIDI1OS4zczEwMi42IDg5LjkgMTA1LjIgOTIuNGM1LjEgNSAxMCA3LjUgNS4xIDIyLjUtNS4xIDE1LTEwLjEgMzUuMS0xMC4xIDM1LjFzOTUuMi0yMC4xIDEwNS4zLTIyLjZjOC43LS45IDE4LjMgMi41IDE4LjMgMTIuNVMyNDEgNTEyIDI0MSA1MTJoMzBzLTUuOC0xMDIuNy01LjgtMTEyLjggOS41LTEzLjQgMTguNC0xMi41YzEwIDIuNSAxMDUuMiAyMi42IDEwNS4yIDIyLjZzLTUtMjAuMS0xMC0zNS4xIDAtMTcuNSA1LTIyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjQW1hem9uUGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyNC43IDIwMS44Yy4xLTExLjggMC0yMy41IDAtMzUuM3YtMzUuM2MwLTEuMy40LTIgMS40LTIuNyAxMS41LTggMjQuMS0xMi4xIDM4LjItMTEuMSAxMi41LjkgMjIuNyA3IDI4LjEgMjEuNyAzLjMgOC45IDQuMSAxOC4yIDQuMSAyNy43IDAgOC43LS43IDE3LjMtMy40IDI1LjYtNS43IDE3LjgtMTguNyAyNC43LTM1LjcgMjMuOS0xMS43LS41LTIxLjktNS0zMS40LTExLjctLjktLjgtMS40LTEuNi0xLjMtMi44em0xNTQuOSAxNC42YzQuNiAxLjggOS4zIDIgMTQuMSAxLjUgMTEuNi0xLjIgMjEuOS01LjcgMzEuMy0xMi41LjktLjYgMS4zLTEuMyAxLjMtMi41LS4xLTMuOSAwLTcuOSAwLTExLjggMC00LS4xLTggMC0xMiAwLTEuNC0uNC0yLTEuOC0yLjItNy0uOS0xMy45LTIuMi0yMC45LTIuOS03LS42LTE0LS4zLTIwLjggMS45LTYuNyAyLjItMTEuNyA2LjItMTMuNyAxMy4xLTEuNiA1LjQtMS42IDEwLjguMSAxNi4yIDEuNiA1LjUgNS4yIDkuMiAxMC40IDExLjJ6TTU3NiA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHptLTIwNy41IDIzLjljLjQgMS43LjkgMy40IDEuNiA1LjEgMTYuNSA0MC42IDMyLjkgODEuMyA0OS41IDEyMS45IDEuNCAzLjUgMS43IDYuNC4yIDkuOS0yLjggNi4yLTQuOSAxMi42LTcuOCAxOC43LTIuNiA1LjUtNi43IDkuNS0xMi43IDExLjItNC4yIDEuMS04LjUgMS4zLTEyLjkuOS0yLjEtLjItNC4yLS43LTYuMy0uOC0yLjgtLjItNC4yIDEuMS00LjMgNC0uMSAyLjgtLjEgNS42IDAgOC4zLjEgNC42IDEuNiA2LjcgNi4yIDcuNSA0LjcuOCA5LjQgMS42IDE0LjIgMS43IDE0LjMuMyAyNS43LTUuNCAzMy4xLTE3LjkgMi45LTQuOSA1LjYtMTAuMSA3LjctMTUuNCAxOS44LTUwLjEgMzkuNS0xMDAuMyA1OS4yLTE1MC41LjYtMS41IDEuMS0zIDEuMy00LjYuNC0yLjQtLjctMy42LTMuMS0zLjctNS42LS4xLTExLjEgMC0xNi43IDAtMy4xIDAtNS4zIDEuNC02LjQgNC4zLS40IDEuMS0uOSAyLjMtMS4zIDMuNGwtMjkuMSA4My43Yy0yLjEgNi4xLTQuMiAxMi4xLTYuNSAxOC42LS40LS45LS42LTEuNC0uOC0xLjktMTAuOC0yOS45LTIxLjYtNTkuOS0zMi40LTg5LjgtMS43LTQuNy0zLjUtOS41LTUuMy0xNC4yLS45LTIuNS0yLjctNC01LjQtNC02LjQtLjEtMTIuOC0uMi0xOS4yLS4xLTIuMiAwLTMuMyAxLjYtMi44IDMuN3pNMjQyLjQgMjA2YzEuNyAxMS43IDcuNiAyMC44IDE4IDI2LjYgOS45IDUuNSAyMC43IDYuMiAzMS43IDQuNiAxMi43LTEuOSAyMy45LTcuMyAzMy44LTE1LjUuNC0uMy44LS42IDEuNC0xIC41IDMuMi45IDYuMiAxLjUgOS4yLjUgMi42IDIuMSA0LjMgNC41IDQuNCA0LjYuMSA5LjEuMSAxMy43IDAgMi4zLS4xIDMuOC0xLjYgNC0zLjkuMS0uOC4xLTEuNi4xLTIuM3YtODguOGMwLTMuNi0uMi03LjItLjctMTAuOC0xLjYtMTAuOC02LjItMTkuNy0xNS45LTI1LjQtNS42LTMuMy0xMS44LTUtMTguMi01LjktMy0uNC02LS43LTkuMS0xLjFoLTEwYy0uOC4xLTEuNi4zLTIuNS4zLTguMi40LTE2LjMgMS40LTI0LjIgMy41LTUuMSAxLjMtMTAgMy4yLTE1IDQuOS0zIDEtNC41IDMuMi00LjQgNi41LjEgMi44LS4xIDUuNiAwIDguMy4xIDQuMSAxLjggNS4yIDUuNyA0LjEgNi41LTEuNyAxMy4xLTMuNSAxOS43LTQuOCAxMC4zLTEuOSAyMC43LTIuNyAzMS4xLTEuMiA1LjQuOCAxMC41IDIuNCAxNC4xIDcgMy4xIDQgNC4yIDguOCA0LjQgMTMuNy4zIDYuOS4yIDEzLjkuMyAyMC44IDAgLjQtLjEuNy0uMiAxLjItLjQgMC0uOCAwLTEuMS0uMS04LjgtMi4xLTE3LjctMy42LTI2LjgtNC4xLTkuNS0uNS0xOC45LjEtMjcuOSAzLjItMTAuOCAzLjgtMTkuNSAxMC4zLTI0LjYgMjAuOC00LjEgOC4zLTQuNiAxNy0zLjQgMjUuOHpNOTguNyAxMDYuOXYxNzUuM2MwIC44IDAgMS43LjEgMi41LjIgMi41IDEuNyA0LjEgNC4xIDQuMiA1LjkuMSAxMS44LjEgMTcuNyAwIDIuNSAwIDQtMS43IDQuMS00LjEuMS0uOC4xLTEuNy4xLTIuNXYtNjAuN2MuOS43IDEuNCAxLjIgMS45IDEuNiAxNSAxMi41IDMyLjIgMTYuNiA1MS4xIDEyLjkgMTcuMS0zLjQgMjguOS0xMy45IDM2LjctMjkuMiA1LjgtMTEuNiA4LjMtMjQuMSA4LjctMzcgLjUtMTQuMy0xLTI4LjQtNi44LTQxLjctNy4xLTE2LjQtMTguOS0yNy4zLTM2LjctMzAuOS0yLjctLjYtNS41LS44LTguMi0xLjJoLTdjLTEuMi4yLTIuNC4zLTMuNi41LTExLjcgMS40LTIyLjMgNS44LTMxLjggMTIuNy0yIDEuNC0zLjkgMy01LjkgNC41LS4xLS41LS4zLS44LS40LTEuMi0uNC0yLjMtLjctNC42LTEuMS02LjktLjYtMy45LTIuNS01LjUtNi40LTUuNmgtOS43Yy01LjktLjEtNi45IDEtNi45IDYuOHpNNDkzLjYgMzM5Yy0yLjctLjctNS4xIDAtNy42IDEtNDMuOSAxOC40LTg5LjUgMzAuMi0xMzYuOCAzNS44LTE0LjUgMS43LTI5LjEgMi44LTQzLjcgMy4yLTI2LjYuNy01My4yLS44LTc5LjYtNC4zLTE3LjgtMi40LTM1LjUtNS43LTUzLTkuOS0zNy04LjktNzIuNy0yMS43LTEwNi43LTM4LjgtOC44LTQuNC0xNy40LTkuMy0yNi4xLTE0LTMuOC0yLjEtNi4yLTEuNS04LjIgMi4xdjEuN2MxLjIgMS42IDIuMiAzLjQgMy43IDQuOCAzNiAzMi4yIDc2LjYgNTYuNSAxMjIgNzIuOSAyMS45IDcuOSA0NC40IDEzLjcgNjcuMyAxNy41IDE0IDIuMyAyOCAzLjggNDIuMiA0LjUgMyAuMSA2IC4yIDkgLjQuNyAwIDEuNC4yIDIuMS4zaDE3LjdjLjctLjEgMS40LS4zIDIuMS0uMyAxNC45LS40IDI5LjgtMS44IDQ0LjYtNCAyMS40LTMuMiA0Mi40LTguMSA2Mi45LTE0LjcgMjkuNi05LjYgNTcuNy0yMi40IDgzLjQtNDAuMSAyLjgtMS45IDUuNy0zLjggOC02LjIgNC4zLTQuNCAyLjMtMTAuNC0zLjMtMTEuOXptNTAuNC0yNy43Yy0uOC00LjItNC01LjgtNy42LTctNS43LTEuOS0xMS42LTIuOC0xNy42LTMuMy0xMS0uOS0yMi0uNC0zMi44IDEuNi0xMiAyLjItMjMuNCA2LjEtMzMuNSAxMy4xLTEuMi44LTIuNCAxLjgtMy4xIDMtLjYuOS0uNyAyLjMtLjUgMy40LjMgMS4zIDEuNyAxLjYgMyAxLjUuNiAwIDEuMiAwIDEuOC0uMWwxOS41LTIuMWM5LjYtLjkgMTkuMi0xLjUgMjguOC0uOCA0LjEuMyA4LjEgMS4yIDEyIDIuMiA0LjMgMS4xIDYuMiA0LjQgNi40IDguNy4zIDYuNy0xLjIgMTMuMS0yLjkgMTkuNS0zLjUgMTIuOS04LjMgMjUuNC0xMy4zIDM3LjgtLjMuOC0uNyAxLjctLjggMi41LS40IDIuNSAxIDQgMy40IDMuNSAxLjQtLjMgMy0xLjEgNC0yLjEgMy43LTMuNiA3LjUtNy4yIDEwLjYtMTEuMiAxMC43LTEzLjggMTctMjkuNiAyMC43LTQ2LjYuNy0zIDEuMi02LjEgMS43LTkuMS4yLTQuNy4yLTkuNi4yLTE0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjQW1leCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OEg1MjhjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTEuMUg1MTQuM2wtMzEuOS0zNS4xLTMxLjkgMzUuMUgyNDYuOFYyNjcuMUgxODFMMjYyLjcgODIuNGg3OC42bDI4LjEgNjMuMlY4Mi40aDk3LjJMNDgzLjUgMTMwbDE3LTQ3LjZINTc2VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4QzIxLjUgMzIgMCA1My41IDAgODBWNDMyem00NDAuNC0yMS43TDQ4Mi42IDM2NGw0MiA0Ni4zSDU3NmwtNjgtNzIuMSA2OC03Mi4xSDUyNS40bC00MiA0Ni43LTQxLjUtNDYuN0gzOTAuNUw0NTggMzM4LjZsLTY3LjQgNzEuNlYzNzcuMWgtODNWMzU0LjloODAuOVYzMjIuNkgzMDcuNlYzMDAuMmg4M1YyNjcuMWgtMTIyVjQxMC4zSDQ0MC40em05Ni4zLTcyTDU3NiAzODAuMlYyOTYuOWwtMzkuMyA0MS40em0tMzYuMy05MmwzNi45LTEwMC42VjI0Ni4zSDU3NlYxMDNINTE1LjhsLTMyLjIgODkuM0w0NTEuNyAxMDNIMzkwLjVWMjQ2LjFMMzI3LjMgMTAzSDI3Ni4xTDIxMy43IDI0Ni4zaDQzbDExLjktMjguN2g2NS45bDEyIDI4LjdoODIuN1YxNDZMNDY2IDI0Ni4zaDM0LjR6TTI4MiAxODUuNGwxOS41LTQ2LjkgMTkuNCA0Ni45SDI4MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NBcHBsZVBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDIuMiAyMTguNGMwIDE3LjItMTAuNSAyNy4xLTI5IDI3LjFoLTI0LjN2LTU0LjJoMjQuNGMxOC40IDAgMjguOSA5LjggMjguOSAyNy4xem00Ny41IDYyLjZjMCA4LjMgNy4yIDEzLjcgMTguNSAxMy43IDE0LjQgMCAyNS4yLTkuMSAyNS4yLTIxLjl2LTcuN2wtMjMuNSAxLjVjLTEzLjMuOS0yMC4yIDUuOC0yMC4yIDE0LjR6TTU3NiA3OXYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4Vjc5YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTI3LjggMTk3LjJjOC40LjcgMTYuOC00LjIgMjIuMS0xMC40IDUuMi02LjQgOC42LTE1IDcuNy0yMy43LTcuNC4zLTE2LjYgNC45LTIxLjkgMTEuMy00LjggNS41LTguOSAxNC40LTcuOSAyMi44em02MC42IDc0LjVjLS4yLS4yLTE5LjYtNy42LTE5LjgtMzAtLjItMTguNyAxNS4zLTI3LjcgMTYtMjguMi04LjgtMTMtMjIuNC0xNC40LTI3LjEtMTQuNy0xMi4yLS43LTIyLjYgNi45LTI4LjQgNi45LTUuOSAwLTE0LjctNi42LTI0LjMtNi40LTEyLjUuMi0yNC4yIDcuMy0zMC41IDE4LjYtMTMuMSAyMi42LTMuNCA1NiA5LjMgNzQuNCA2LjIgOS4xIDEzLjcgMTkuMSAyMy41IDE4LjcgOS4zLS40IDEzLTYgMjQuMi02IDExLjMgMCAxNC41IDYgMjQuMyA1LjkgMTAuMi0uMiAxNi41LTkuMSAyMi44LTE4LjIgNi45LTEwLjQgOS44LTIwLjQgMTAtMjF6bTEzNS40LTUzLjRjMC0yNi42LTE4LjUtNDQuOC00NC45LTQ0LjhoLTUxLjJ2MTM2LjRoMjEuMnYtNDYuNmgyOS4zYzI2LjggMCA0NS42LTE4LjQgNDUuNi00NXptOTAgMjMuN2MwLTE5LjctMTUuOC0zMi40LTQwLTMyLjQtMjIuNSAwLTM5LjEgMTIuOS0zOS43IDMwLjVoMTkuMWMxLjYtOC40IDkuNC0xMy45IDIwLTEzLjkgMTMgMCAyMC4yIDYgMjAuMiAxNy4ydjcuNWwtMjYuNCAxLjZjLTI0LjYgMS41LTM3LjkgMTEuNi0zNy45IDI5LjEgMCAxNy43IDEzLjcgMjkuNCAzMy40IDI5LjQgMTMuMyAwIDI1LjYtNi43IDMxLjItMTcuNGguNFYzMTBoMTkuNnYtNjh6TTUxNiAyMTAuOWgtMjEuNWwtMjQuOSA4MC42aC0uNGwtMjQuOS04MC42SDQyMmwzNS45IDk5LjMtMS45IDZjLTMuMiAxMC4yLTguNSAxNC4yLTE3LjkgMTQuMi0xLjcgMC00LjktLjItNi4yLS4zdjE2LjRjMS4yLjQgNi41LjUgOC4xLjUgMjAuNyAwIDMwLjQtNy45IDM4LjktMzEuOEw1MTYgMjEwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjRGluZXJzQ2x1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzkuNyA3OS45Yy05Ni45IDAtMTc1LjggNzguNi0xNzUuOCAxNzUuOCAwIDk2LjkgNzguOSAxNzUuOCAxNzUuOCAxNzUuOCA5Ny4yIDAgMTc1LjgtNzguOSAxNzUuOC0xNzUuOCAwLTk3LjItNzguNi0xNzUuOC0xNzUuOC0xNzUuOHptLTM5LjkgMjc5LjZjLTQxLjctMTUuOS03MS40LTU2LjQtNzEuNC0xMDMuOHMyOS43LTg3LjkgNzEuNC0xMDQuMXYyMDcuOXptNzkuOC4zVjE1MS42YzQxLjcgMTYuMiA3MS40IDU2LjcgNzEuNCAxMDQuMXMtMjkuNyA4Ny45LTcxLjQgMTA0LjF6TTUyOCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTMyOS43IDQ0OGgtOTAuM2MtMTA2LjIgMC0xOTMuOC04NS41LTE5My44LTE5MC4yQzQ1LjYgMTQzLjIgMTMzLjIgNjQgMjM5LjQgNjRoOTAuM2MxMDUgMCAyMDAuNyA3OS4yIDIwMC43IDE5My44IDAgMTA0LjctOTUuNyAxOTAuMi0yMDAuNyAxOTAuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NEaXNjb3ZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjAuNCAxOTYuMWMwLTcuOS01LjUtMTIuMS0xNS42LTEyLjFoLTQuOXYyNC45aDQuN2MxMC4zIDAgMTUuOC00LjQgMTUuOC0xMi44ek01MjggMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tNDQuMSAxMzguOWMyMi42IDAgNTIuOS00LjEgNTIuOSAyNC40IDAgMTIuNi02LjYgMjAuNy0xOC43IDIzLjJsMjUuOCAzNC40aC0xOS42bC0yMi4yLTMyLjhoLTIuMnYzMi44aC0xNnptLTU1LjkuMWg0NS4zdjE0SDQ0NHYxOC4yaDI4LjNWMjE3SDQ0NHYyMi4yaDI5LjNWMjUzSDQyOHptLTY4LjcgMGwyMS45IDU1LjIgMjIuMi01NS4yaDE3LjVsLTM1LjUgODQuMmgtOC42bC0zNS04NC4yem0tNTUuOS0zYzI0LjcgMCA0NC42IDIwIDQ0LjYgNDQuNiAwIDI0LjctMjAgNDQuNi00NC42IDQ0LjYtMjQuNyAwLTQ0LjYtMjAtNDQuNi00NC42IDAtMjQuNyAyMC00NC42IDQ0LjYtNDQuNnptLTQ5LjMgNi4xdjE5Yy0yMC4xLTIwLjEtNDYuOC00LjctNDYuOCAxOSAwIDI1IDI3LjUgMzguNSA0Ni44IDE5LjJ2MTljLTI5LjcgMTQuMy02My4zLTUuNy02My4zLTM4LjIgMC0zMS4yIDMzLjEtNTMgNjMuMy0zOHptLTk3LjIgNjYuM2MxMS40IDAgMjIuNC0xNS4zLTMuMy0yNC40LTE1LTUuNS0yMC4yLTExLjQtMjAuMi0yMi43IDAtMjMuMiAzMC42LTMxLjQgNDkuNy0xNC4zbC04LjQgMTAuOGMtMTAuNC0xMS42LTI0LjktNi4yLTI0LjkgMi41IDAgNC40IDIuNyA2LjkgMTIuMyAxMC4zIDE4LjIgNi42IDIzLjYgMTIuNSAyMy42IDI1LjYgMCAyOS41LTM4LjggMzcuNC01Ni42IDExLjNsMTAuMy05LjljMy43IDcuMSA5LjkgMTAuOCAxNy41IDEwLjh6TTU1LjQgMjUzSDMydi04MmgyMy40YzI2LjEgMCA0NC4xIDE3IDQ0LjEgNDEuMSAwIDE4LjUtMTMuMiA0MC45LTQ0LjEgNDAuOXptNjcuNSAwaC0xNnYtODJoMTZ6TTU0NCA0MzNjMCA4LjItNi44IDE1LTE1IDE1SDEyOGMxODkuNi0zNS42IDM4Mi43LTEzOS4yIDQxNi0xNjB6TTc0LjEgMTkxLjZjLTUuMi00LjktMTEuNi02LjYtMjEuOS02LjZINDh2NTQuMmg0LjJjMTAuMyAwIDE3LTIgMjEuOS02LjQgNS43LTUuMiA4LjktMTIuOCA4LjktMjAuN3MtMy4yLTE1LjUtOC45LTIwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjSmNiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMS41IDI0NC4zVjIxMmM0MS4yIDAgMzguNS4yIDM4LjUuMiA3LjMgMS4zIDEzLjMgNy4zIDEzLjMgMTYgMCA4LjgtNiAxNC41LTEzLjMgMTUuOC0xLjIuNC0zLjMuMy0zOC41LjN6bTQyLjggMjAuMmMtMi44LS43LTMuMy0uNS00Mi44LS41djM1YzM5LjYgMCA0MCAuMiA0Mi44LS41IDcuNS0xLjUgMTMuNS04IDEzLjUtMTcgMC04LjctNi0xNS41LTEzLjUtMTd6TTU3NiA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTgyIDE5Mi4zaC01N2MwIDY3LjEgMTAuNyAxMDkuNy0zNS44IDEwOS43LTE5LjUgMC0zOC44LTUuNy01Ny4yLTE0Ljh2MjhjMzAgOC4zIDY4IDguMyA2OCA4LjMgOTcuOSAwIDgyLTQ3LjcgODItMTMxLjJ6bTE3OC41IDQuNWMtNjMuNC0xNi0xNjUtMTQuOS0xNjUgNTkuMyAwIDc3LjEgMTA4LjIgNzMuNiAxNjUgNTkuMlYyODdDMzEyLjkgMzExLjcgMjUzIDMwOSAyNTMgMjU2czU5LjgtNTUuNiAxMDcuNS0zMS4ydi0yOHpNNTQ0IDI4Ni41YzAtMTguNS0xNi41LTMwLjUtMzgtMzJ2LS44YzE5LjUtMi43IDMwLjMtMTUuNSAzMC4zLTMwLjIgMC0xOS0xNS43LTMwLTM3LTMxIDAgMCA2LjMtLjMtMTIwLjMtLjN2MTI3LjVoMTIyLjdjMjQuMy4xIDQyLjMtMTIuOSA0Mi4zLTMzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjTWFzdGVyY2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODIuOSA0MTAuM2MwIDYuOC00LjYgMTEuNy0xMS4yIDExLjctNi44IDAtMTEuMi01LjItMTEuMi0xMS43IDAtNi41IDQuNC0xMS43IDExLjItMTEuNyA2LjYgMCAxMS4yIDUuMiAxMS4yIDExLjd6bS0zMTAuOC0xMS43Yy03LjEgMC0xMS4yIDUuMi0xMS4yIDExLjcgMCA2LjUgNC4xIDExLjcgMTEuMiAxMS43IDYuNSAwIDEwLjktNC45IDEwLjktMTEuNy0uMS02LjUtNC40LTExLjctMTAuOS0xMS43em0xMTcuNS0uM2MtNS40IDAtOC43IDMuNS05LjUgOC43aDE5LjFjLS45LTUuNy00LjQtOC43LTkuNi04Ljd6bTEwNy44LjNjLTYuOCAwLTEwLjkgNS4yLTEwLjkgMTEuNyAwIDYuNSA0LjEgMTEuNyAxMC45IDExLjcgNi44IDAgMTEuMi00LjkgMTEuMi0xMS43IDAtNi41LTQuNC0xMS43LTExLjItMTEuN3ptMTA1LjkgMjYuMWMwIC4zLjMuNS4zIDEuMSAwIC4zLS4zLjUtLjMgMS4xLS4zLjMtLjMuNS0uNS44LS4zLjMtLjUuNS0xLjEuNS0uMy4zLS41LjMtMS4xLjMtLjMgMC0uNSAwLTEuMS0uMy0uMyAwLS41LS4zLS44LS41LS4zLS4zLS41LS41LS41LS44LS4zLS41LS4zLS44LS4zLTEuMSAwLS41IDAtLjguMy0xLjEgMC0uNS4zLS44LjUtMS4xLjMtLjMuNS0uMy44LS41LjUtLjMuOC0uMyAxLjEtLjMuNSAwIC44IDAgMS4xLjMuNS4zLjguMyAxLjEuNXMuMi42LjUgMS4xem0tMi4yIDEuNGMuNSAwIC41LS4zLjgtLjMuMy0uMy4zLS41LjMtLjggMC0uMyAwLS41LS4zLS44LS4zIDAtLjUtLjMtMS4xLS4zaC0xLjZ2My41aC44VjQyNmguM2wxLjEgMS40aC44bC0xLjEtMS4zek01NzYgODF2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MWMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTY0IDIyMC42YzAgNzYuNSA2Mi4xIDEzOC41IDEzOC41IDEzOC41IDI3LjIgMCA1My45LTguMiA3Ni41LTIzLjEtNzIuOS01OS4zLTcyLjQtMTcxLjIgMC0yMzAuNS0yMi42LTE1LTQ5LjMtMjMuMS03Ni41LTIzLjEtNzYuNC0uMS0xMzguNSA2Mi0xMzguNSAxMzguMnptMjI0IDEwOC44YzcwLjUtNTUgNzAuMi0xNjIuMiAwLTIxNy41LTcwLjIgNTUuMy03MC41IDE2Mi42IDAgMjE3LjV6bS0xNDIuMyA3Ni4zYzAtOC43LTUuNy0xNC40LTE0LjctMTQuNy00LjYgMC05LjUgMS40LTEyLjggNi41LTIuNC00LjEtNi41LTYuNS0xMi4yLTYuNS0zLjggMC03LjYgMS40LTEwLjYgNS40VjM5MmgtOC4ydjM2LjdoOC4yYzAtMTguOS0yLjUtMzAuMiA5LTMwLjIgMTAuMiAwIDguMiAxMC4yIDguMiAzMC4yaDcuOWMwLTE4LjMtMi41LTMwLjIgOS0zMC4yIDEwLjIgMCA4LjIgMTAgOC4yIDMwLjJoOC4ydi0yM3ptNDQuOS0xMy43aC03Ljl2NC40Yy0yLjctMy4zLTYuNS01LjQtMTEuNy01LjQtMTAuMyAwLTE4LjIgOC4yLTE4LjIgMTkuMyAwIDExLjIgNy45IDE5LjMgMTguMiAxOS4zIDUuMiAwIDktMS45IDExLjctNS40djQuNmg3LjlWMzkyem00MC41IDI1LjZjMC0xNS0yMi45LTguMi0yMi45LTE1LjIgMC01LjcgMTEuOS00LjggMTguNS0xLjFsMy4zLTYuNWMtOS40LTYuMS0zMC4yLTYtMzAuMiA4LjIgMCAxNC4zIDIyLjkgOC4zIDIyLjkgMTUgMCA2LjMtMTMuNSA1LjgtMjAuNy44bC0zLjUgNi4zYzExLjIgNy42IDMyLjYgNiAzMi42LTcuNXptMzUuNCA5LjNsLTIuMi02LjhjLTMuOCAyLjEtMTIuMiA0LjQtMTIuMi00LjF2LTE2LjZoMTMuMVYzOTJoLTEzLjF2LTExLjJoLTguMlYzOTJoLTcuNnY3LjNoNy42VjQxNmMwIDE3LjYgMTcuMyAxNC40IDIyLjYgMTAuOXptMTMuMy0xMy40aDI3LjVjMC0xNi4yLTcuNC0yMi42LTE3LjQtMjIuNi0xMC42IDAtMTguMiA3LjktMTguMiAxOS4zIDAgMjAuNSAyMi42IDIzLjkgMzMuOCAxNC4ybC0zLjgtNmMtNy44IDYuNC0xOS42IDUuOC0yMS45LTQuOXptNTkuMS0yMS41Yy00LjYtMi0xMS42LTEuOC0xNS4yIDQuNFYzOTJoLTguMnYzNi43aDguMlY0MDhjMC0xMS42IDkuNS0xMC4xIDEyLjgtOC40bDIuNC03LjZ6bTEwLjYgMTguM2MwLTExLjQgMTEuNi0xNS4xIDIwLjctOC40bDMuOC02LjVjLTExLjYtOS4xLTMyLjctNC4xLTMyLjcgMTUgMCAxOS44IDIyLjQgMjMuOCAzMi43IDE1bC0zLjgtNi41Yy05LjIgNi41LTIwLjcgMi42LTIwLjctOC42em02Ni43LTE4LjNINDA4djQuNGMtOC4zLTExLTI5LjktNC44LTI5LjkgMTMuOSAwIDE5LjIgMjIuNCAyNC43IDI5LjkgMTMuOXY0LjZoOC4yVjM5MnptMzMuNyAwYy0yLjQtMS4yLTExLTIuOS0xNS4yIDQuNFYzOTJoLTcuOXYzNi43aDcuOVY0MDhjMC0xMSA5LTEwLjMgMTIuOC04LjRsMi40LTcuNnptNDAuMy0xNC45aC03Ljl2MTkuM2MtOC4yLTEwLjktMjkuOS01LjEtMjkuOSAxMy45IDAgMTkuNCAyMi41IDI0LjYgMjkuOSAxMy45djQuNmg3Ljl2LTUxLjd6bTcuNi03NS4xdjQuNmguOFYzMDJoMS45di0uOGgtNC42di44aDEuOXptNi42IDEyMy44YzAtLjUgMC0xLjEtLjMtMS42LS4zLS4zLS41LS44LS44LTEuMS0uMy0uMy0uOC0uNS0xLjEtLjgtLjUgMC0xLjEtLjMtMS42LS4zLS4zIDAtLjguMy0xLjQuMy0uNS4zLS44LjUtMS4xLjgtLjUuMy0uOC44LS44IDEuMS0uMy41LS4zIDEuMS0uMyAxLjYgMCAuMyAwIC44LjMgMS40IDAgLjMuMy44LjggMS4xLjMuMy41LjUgMS4xLjguNS4zIDEuMS4zIDEuNC4zLjUgMCAxLjEgMCAxLjYtLjMuMy0uMy44LS41IDEuMS0uOC4zLS4zLjUtLjguOC0xLjEuMy0uNi4zLTEuMS4zLTEuNHptMy4yLTEyNC43aC0xLjRsLTEuNiAzLjUtMS42LTMuNWgtMS40djUuNGguOHYtNC4xbDEuNiAzLjVoMS4xbDEuNC0zLjV2NC4xaDEuMXYtNS40em00LjQtODAuNWMwLTc2LjItNjIuMS0xMzguMy0xMzguNS0xMzguMy0yNy4yIDAtNTMuOSA4LjItNzYuNSAyMy4xIDcyLjEgNTkuMyA3My4yIDE3MS41IDAgMjMwLjUgMjIuNiAxNSA0OS41IDIzLjEgNzYuNSAyMy4xIDc2LjQuMSAxMzguNS02MS45IDEzOC41LTEzOC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY1BheXBhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODYuMyAyNTguMmMwIDEyLjItOS43IDIxLjUtMjIgMjEuNS05LjIgMC0xNi01LjItMTYtMTUgMC0xMi4yIDkuNS0yMiAyMS43LTIyIDkuMyAwIDE2LjMgNS43IDE2LjMgMTUuNXpNODAuNSAyMDkuN2gtNC43Yy0xLjUgMC0zIDEtMy4yIDIuN2wtNC4zIDI2LjcgOC4yLS4zYzExIDAgMTkuNS0xLjUgMjEuNS0xNC4yIDIuMy0xMy40LTYuMi0xNC45LTE3LjUtMTQuOXptMjg0IDBIMzYwYy0xLjggMC0zIDEtMy4yIDIuN2wtNC4yIDI2LjcgOC0uM2MxMyAwIDIyLTMgMjItMTgtLjEtMTAuNi05LjYtMTEuMS0xOC4xLTExLjF6TTU3NiA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTI4LjMgMjE1LjRjMC0yMS0xNi4yLTI4LTM0LjctMjhoLTQwYy0yLjUgMC01IDItNS4yIDQuN0wzMiAyOTQuMmMtLjMgMiAxLjIgNCAzLjIgNGgxOWMyLjcgMCA1LjItMi45IDUuNS01LjdsNC41LTI2LjZjMS03LjIgMTMuMi00LjcgMTgtNC43IDI4LjYgMCA0Ni4xLTE3IDQ2LjEtNDUuOHptODQuMiA4LjhoLTE5Yy0zLjggMC00IDUuNS00LjIgOC4yLTUuOC04LjUtMTQuMi0xMC0yMy43LTEwLTI0LjUgMC00My4yIDIxLjUtNDMuMiA0NS4yIDAgMTkuNSAxMi4yIDMyLjIgMzEuNyAzMi4yIDkgMCAyMC4yLTQuOSAyNi41LTExLjktLjUgMS41LTEgNC43LTEgNi4yIDAgMi4zIDEgNCAzLjIgNEgyMDBjMi43IDAgNS0yLjkgNS41LTUuN2wxMC4yLTY0LjNjLjMtMS45LTEuMi0zLjktMy4yLTMuOXptNDAuNSA5Ny45bDYzLjctOTIuNmMuNS0uNS41LTEgLjUtMS43IDAtMS43LTEuNS0zLjUtMy4yLTMuNWgtMTkuMmMtMS43IDAtMy41IDEtNC41IDIuNWwtMjYuNSAzOS0xMS0zNy41Yy0uOC0yLjItMy00LTUuNS00aC0xOC43Yy0xLjcgMC0zLjIgMS44LTMuMiAzLjUgMCAxLjIgMTkuNSA1Ni44IDIxLjIgNjIuMS0yLjcgMy44LTIwLjUgMjguNi0yMC41IDMxLjYgMCAxLjggMS41IDMuMiAzLjIgMy4yaDE5LjJjMS44LS4xIDMuNS0xLjEgNC41LTIuNnptMTU5LjMtMTA2LjdjMC0yMS0xNi4yLTI4LTM0LjctMjhoLTM5LjdjLTIuNyAwLTUuMiAyLTUuNSA0LjdsLTE2LjIgMTAyYy0uMiAyIDEuMyA0IDMuMiA0aDIwLjVjMiAwIDMuNS0xLjUgNC0zLjJsNC41LTI5YzEtNy4yIDEzLjItNC43IDE4LTQuNyAyOC40IDAgNDUuOS0xNyA0NS45LTQ1Ljh6bTg0LjIgOC44aC0xOWMtMy44IDAtNCA1LjUtNC4zIDguMi01LjUtOC41LTE0LTEwLTIzLjctMTAtMjQuNSAwLTQzLjIgMjEuNS00My4yIDQ1LjIgMCAxOS41IDEyLjIgMzIuMiAzMS43IDMyLjIgOS4zIDAgMjAuNS00LjkgMjYuNS0xMS45LS4zIDEuNS0xIDQuNy0xIDYuMiAwIDIuMyAxIDQgMy4yIDRINDg0YzIuNyAwIDUtMi45IDUuNS01LjdsMTAuMi02NC4zYy4zLTEuOS0xLjItMy45LTMuMi0zLjl6bTQ3LjUtMzMuM2MwLTItMS41LTMuNS0zLjItMy41aC0xOC41Yy0xLjUgMC0zIDEuMi0zLjIgMi43bC0xNi4yIDEwNC0uMy41YzAgMS44IDEuNSAzLjUgMy41IDMuNWgxNi41YzIuNSAwIDUtMi45IDUuMi01LjdMNTQ0IDE5MS4ydi0uM3ptLTkwIDUxLjhjLTEyLjIgMC0yMS43IDkuNy0yMS43IDIyIDAgOS43IDcgMTUgMTYuMiAxNSAxMiAwIDIxLjctOS4yIDIxLjctMjEuNS4xLTkuOC02LjktMTUuNS0xNi4yLTE1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjU3RyaXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5Mi40IDIyMC44Yy04LjkgMC0xOC43IDYuNy0xOC43IDIyLjdoMzYuN2MwLTE2LTkuMy0yMi43LTE4LTIyLjd6TTM3NSAyMjMuNGMtOC4yIDAtMTMuMyAyLjktMTcgN2wuMiA1Mi44YzMuNSAzLjcgOC41IDYuNyAxNi44IDYuNyAxMy4xIDAgMjEuOS0xNC4zIDIxLjktMzMuNCAwLTE4LjYtOS0zMy4yLTIxLjktMzMuMXpNNTI4IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MGMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTIyLjIgMjgxLjFjMCAyNS42LTIwLjMgNDAuMS00OS45IDQwLjMtMTIuMiAwLTI1LjYtMi40LTM4LjgtOC4xdi0zMy45YzEyIDYuNCAyNy4xIDExLjMgMzguOSAxMS4zIDcuOSAwIDEzLjYtMi4xIDEzLjYtOC43IDAtMTctNTQtMTAuNi01NC00OS45IDAtMjUuMiAxOS4yLTQwLjIgNDgtNDAuMiAxMS44IDAgMjMuNSAxLjggMzUuMyA2LjV2MzMuNGMtMTAuOC01LjgtMjQuNS05LjEtMzUuMy05LjEtNy41IDAtMTIuMSAyLjItMTIuMSA3LjcgMCAxNiA1NC4zIDguNCA1NC4zIDUwLjd6bTY4LjgtNTYuNmgtMjdWMjc1YzAgMjAuOSAyMi41IDE0LjQgMjcgMTIuNnYyOC45Yy00LjcgMi42LTEzLjMgNC43LTI0LjkgNC43LTIxLjEgMC0zNi45LTE1LjUtMzYuOS0zNi41bC4yLTExMy45IDM0LjctNy40djMwLjhIMTkxem03NCAyLjRjLTQuNS0xLjUtMTguNy0zLjYtMjcuMSA3LjR2ODQuNGgtMzUuNVYxOTQuMmgzMC43bDIuMiAxMC41YzguMy0xNS4zIDI0LjktMTIuMiAyOS42LTEwLjVoLjF6bTQ0LjEgOTEuOGgtMzUuN1YxOTQuMmgzNS43em0wLTE0Mi45bC0zNS43IDcuNnYtMjguOWwzNS43LTcuNnptNzQuMSAxNDUuNWMtMTIuNCAwLTIwLTUuMy0yNS4xLTlsLS4xIDQwLjItMzUuNSA3LjVWMTk0LjJoMzEuM2wxLjggOC44YzQuOS00LjUgMTMuOS0xMS4xIDI3LjgtMTEuMSAyNC45IDAgNDguNCAyMi41IDQ4LjQgNjMuOCAwIDQ1LjEtMjMuMiA2NS41LTQ4LjYgNjUuNnptMTYwLjQtNTEuNWgtNjkuNWMxLjYgMTYuNiAxMy44IDIxLjUgMjcuNiAyMS41IDE0LjEgMCAyNS4yLTMgMzQuOS03LjlWMzEyYy05LjcgNS4zLTIyLjQgOS4yLTM5LjQgOS4yLTM0LjYgMC01OC44LTIxLjctNTguOC02NC41IDAtMzYuMiAyMC41LTY0LjkgNTQuMy02NC45IDMzLjcgMCA1MS4zIDI4LjcgNTEuMyA2NS4xIDAgMy41LS4zIDEwLjktLjQgMTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NWaXNhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3MC4xIDIzMS4zczcuNiAzNy4yIDkuMyA0NUg0NDZjMy4zLTguOSAxNi00My41IDE2LTQzLjUtLjIuMyAzLjMtOS4xIDUuMy0xNC45bDIuOCAxMy40ek01NzYgODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTE1Mi41IDMzMS4yTDIxNS43IDE3NmgtNDIuNWwtMzkuMyAxMDYtNC4zLTIxLjUtMTQtNzEuNGMtMi4zLTkuOS05LjQtMTIuNy0xOC4yLTEzLjFIMzIuN2wtLjcgMy4xYzE1LjggNCAyOS45IDkuOCA0Mi4yIDE3LjFsMzUuOCAxMzVoNDIuNXptOTQuNC4yTDI3Mi4xIDE3NmgtNDAuMmwtMjUuMSAxNTUuNGg0MC4xem0xMzkuOS01MC44Yy4yLTE3LjctMTAuNi0zMS4yLTMzLjctNDIuMy0xNC4xLTcuMS0yMi43LTExLjktMjIuNy0xOS4yLjItNi42IDcuMy0xMy40IDIzLjEtMTMuNCAxMy4xLS4zIDIyLjcgMi44IDI5LjkgNS45bDMuNiAxLjcgNS41LTMzLjZjLTcuOS0zLjEtMjAuNS02LjYtMzYtNi42LTM5LjcgMC02Ny42IDIxLjItNjcuOCA1MS40LS4zIDIyLjMgMjAgMzQuNyAzNS4yIDQyLjIgMTUuNSA3LjYgMjAuOCAxMi42IDIwLjggMTkuMy0uMiAxMC40LTEyLjYgMTUuMi0yNC4xIDE1LjItMTYgMC0yNC42LTIuNS0zNy43LTguM2wtNS4zLTIuNS01LjYgMzQuOWM5LjQgNC4zIDI2LjggOC4xIDQ0LjggOC4zIDQyLjIuMSA2OS43LTIwLjggNzAtNTN6TTUyOCAzMzEuNEw0OTUuNiAxNzZoLTMxLjFjLTkuNiAwLTE2LjkgMi44LTIxIDEyLjlsLTU5LjcgMTQyLjVINDI2czYuOS0xOS4yIDguNC0yMy4zSDQ4NmMxLjIgNS41IDQuOCAyMy4zIDQuOCAyMy4zSDUyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2VudGVyY29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjkuMiAyNjguNmMtMy44IDM1LjItMzUuNCA2MC42LTcwLjYgNTYuOC0zNS4yLTMuOC02MC42LTM1LjQtNTYuOC03MC42IDMuOC0zNS4yIDM1LjQtNjAuNiA3MC42LTU2LjggMzUuMSAzLjggNjAuNiAzNS40IDU2LjggNzAuNnptLTg1LjggMjM1LjFDOTYuNyA0OTYtOC4yIDM2NS41IDEwLjEgMjI0LjNjMTEuMi04Ni42IDY1LjgtMTU2LjkgMTM5LjEtMTkyIDE2MS03Ny4xIDM0OS43IDM3LjQgMzU0LjcgMjE2LjYgNC4xIDE0Ny0xMTguNCAyNjIuMi0yNjAuNSAyNTQuOHptMTc5LjktMTgwYzI3LjktMTE4LTE2MC41LTIwNS45LTIzNy4yLTIzNC4yLTU3LjUgNTYuMy02OS4xIDE4OC42LTMzLjggMzQ0LjQgNjguOCAxNS44IDE2OS4xLTI2LjQgMjcxLTExMC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDZW50b3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg5LjYgOTcuNWwzMS42IDMxLjctNzYuMyA3Ni41Vjk3LjV6bS0xNjIuNCAzMS43bDc2LjMgNzYuNVY5Ny41aC00NC43em00MS41LTQxLjZoNDQuN3YxMjcuOWwxMC44IDEwLjggMTAuOC0xMC44Vjg3LjZoNDQuN0wyMjQuMiAzMnptMjYuMiAxNjguMWwtMTAuOC0xMC44SDU1LjV2LTQ0LjhMMCAyNTUuN2w1NS41IDU1LjZ2LTQ0LjhoMTI4LjZsMTAuOC0xMC44em03OS4zLTIwLjdoMTA3Ljl2LTQ0LjhsLTMxLjYtMzEuN3ptMTczLjMgMjAuN0wzOTIgMjAwLjF2NDQuOEgyNjQuM2wtMTAuOCAxMC44IDEwLjggMTAuOEgzOTJ2NDQuOGw1NS41LTU1LjZ6TTY1LjQgMTc2LjJsMzIuNS0zMS43IDkwLjMgOTAuNWgxNS4zdi0xNS4zbC05MC4zLTkwLjUgMzEuNi0zMS43SDY1LjR6bTMxNi43LTc4LjdoLTc4LjVsMzEuNiAzMS43LTkwLjMgOTAuNVYyMzVoMTUuM2w5MC4zLTkwLjUgMzEuNiAzMS43ek0yMDMuNSA0MTMuOVYzMDUuOGwtNzYuMyA3Ni41IDMxLjYgMzEuN2g0NC43ek02NS40IDIzNWgxMDguOGwtNzYuMy03Ni41LTMyLjUgMzEuN3ptMzE2LjcgMTAwLjJsLTMxLjYgMzEuNy05MC4zLTkwLjVoLTE1LjN2MTUuM2w5MC4zIDkwLjUtMzEuNiAzMS43aDc4LjV6bTAtNTguOEgyNzQuMmw3Ni4zIDc2LjUgMzEuNi0zMS43em0tNjAuOSAxMDUuOGwtNzYuMy03Ni41djEwOC4xaDQ0Ljd6TTk3LjkgMzUyLjlsNzYuMy03Ni41SDY1LjR2NDQuOHptMTgxLjggNzAuOUgyMzVWMjk1LjlsLTEwLjgtMTAuOC0xMC44IDEwLjh2MTI3LjloLTQ0LjdsNTUuNSA1NS42em0tMTY2LjUtNDEuNmw5MC4zLTkwLjV2LTE1LjNoLTE1LjNsLTkwLjMgOTAuNS0zMi41LTMxLjd2NzguN2g3OS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaHJvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZDMCAyMDkuNCAxMi40NyAxNjUuNiAzNC4yNyAxMjcuMUwxNDQuMSAzMTguM0MxNjYgMzU3LjUgMjA3LjkgMzg0IDI1NiAzODRDMjcwLjMgMzg0IDI4My4xIDM4MS43IDI5Ni44IDM3Ny40TDIyMC41IDUwOS42Qzk1LjkgNDkyLjMgMCAzODUuMyAwIDI1NnpNMzY1LjEgMzIxLjZDMzc3LjQgMzAyLjQgMzg0IDI3OS4xIDM4NCAyNTZDMzg0IDIxNy44IDM2Ny4yIDE4My41IDM0MC43IDE2MEg0OTMuNEM1MDUuNCAxODkuNiA1MTIgMjIyLjEgNTEyIDI1NkM1MTIgMzk3LjQgMzk3LjQgNTExLjEgMjU2IDUxMkwzNjUuMSAzMjEuNnpNNDc3LjggMTI4SDI1NkMxOTMuMSAxMjggMTQyLjMgMTcyLjEgMTMwLjUgMjMwLjdMNTQuMTkgOTguNDdDMTAxIDM4LjUzIDE3NCAwIDI1NiAwQzM1MC44IDAgNDMzLjUgNTEuNDggNDc3LjggMTI4VjEyOHpNMTY4IDI1NkMxNjggMjA3LjQgMjA3LjQgMTY4IDI1NiAxNjhDMzA0LjYgMTY4IDM0NCAyMDcuNCAzNDQgMjU2QzM0NCAzMDQuNiAzMDQuNiAzNDQgMjU2IDM0NEMyMDcuNCAzNDQgMTY4IDMwNC42IDE2OCAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNocm9tZWNhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ3LjgsNjRINjRjLTIzLjYsMC00Mi43LDE5LjEtNDIuNyw0Mi43djYzLjlINjR2LTYzLjloMzgzLjh2Mjk4LjZIMjk4LjZWNDQ4SDQ0OGMyMy42LDAsNDIuNy0xOS4xLDQyLjctNDIuN1YxMDYuNyBDNDkwLjcsODMuMSw0NzEuNCw2NCw0NDcuOCw2NHogTTIxLjMsMzgzLjZMMjEuMywzODMuNmwwLDYzLjloNjMuOUM4NS4yLDQxMi4yLDU2LjYsMzgzLjYsMjEuMywzODMuNkwyMS4zLDM4My42eiBNMjEuMywyOTguNlYzNDEgYzU4LjksMCwxMDYuNiw0OC4xLDEwNi42LDEwN2g0Mi43QzE3MC43LDM2NS42LDEwMy43LDI5OC43LDIxLjMsMjk4LjZ6IE0yMTMuNCw0NDhoNDIuN2MtMC41LTEyOS41LTEwNS4zLTIzNC4zLTIzNC44LTIzNC42bDAsNDIuNCBDMTI3LjMsMjU1LjYsMjEzLjMsMzQyLDIxMy40LDQ0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRmbGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcuOTA2LDMxOS45MTNsLTIzMC44LTIuOTI4YTQuNTgsNC41OCwwLDAsMS0zLjYzMi0xLjkyNiw0LjY0OCw0LjY0OCwwLDAsMS0uNDk0LTQuMTQ3LDYuMTQzLDYuMTQzLDAsMCwxLDUuMzYxLTQuMDc2TDQxMS4yODEsMzAzLjljMjcuNjMxLTEuMjYsNTcuNTQ2LTIzLjU3NCw2OC4wMjItNTAuNzg0bDEzLjI4Ni0zNC41NDJhNy45NDQsNy45NDQsMCwwLDAsLjUyNC0yLjkzNiw3LjczNSw3LjczNSwwLDAsMC0uMTY0LTEuNjMxQTE1MS45MSwxNTEuOTEsMCwwLDAsMjAxLjI1NywxOTguNCw2OC4xMiw2OC4xMiwwLDAsMCw5NC4yLDI2OS41OUM0MS45MjQsMjcxLjEwNiwwLDMxMy43MjgsMCwzNjYuMTJhOTYuMDU0LDk2LjA1NCwwLDAsMCwxLjAyOSwxMy45NTgsNC41MDgsNC41MDgsMCwwLDAsNC40NDUsMy44NzFsNDI2LjEuMDUxYy4wNDMsMCwuMDgtLjAxOS4xMjItLjAyYTUuNjA2LDUuNjA2LDAsMCwwLDUuMjcxLTRsMy4yNzMtMTEuMjY1YzMuOS0xMy40LDIuNDQ4LTI1LjgtNC4xLTM0LjlDNDMwLjEyNCwzMjUuNDIzLDQyMC4wOSwzMjAuNDg3LDQwNy45MDYsMzE5LjkxM1pNNTEzLjg1NiwyMjEuMWMtMi4xNDEsMC00LjI3MS4wNjItNi4zOTEuMTY0YTMuNzcxLDMuNzcxLDAsMCwwLTMuMzI0LDIuNjUzbC05LjA3NywzMS4xOTNjLTMuOSwxMy40LTIuNDQ5LDI1Ljc4Niw0LjEsMzQuODksNi4wMiw4LjQsMTYuMDU0LDEzLjMyMywyOC4yMzgsMTMuOWw0OS4yLDIuOTM5YTQuNDkxLDQuNDkxLDAsMCwxLDMuNTEsMS44OTQsNC42NCw0LjY0LDAsMCwxLC41MTQsNC4xNjksNi4xNTMsNi4xNTMsMCwwLDEtNS4zNTEsNC4wNzVsLTUxLjEyNSwyLjkzOWMtMjcuNzU0LDEuMjctNTcuNjY5LDIzLjU3NC02OC4xNDUsNTAuNzg0bC0zLjY5NSw5LjYwNmEyLjcxNiwyLjcxNiwwLDAsMCwyLjQyNywzLjY4Yy4wNDYsMCwuMDg4LjAxNy4xMzYuMDE3aDE3NS45MWE0LjY5LDQuNjksMCwwLDAsNC41MzktMy4zNywxMjQuODA3LDEyNC44MDcsMCwwLDAsNC42ODItMzRDNjQwLDI3Ny4zLDU4My41MjQsMjIxLjEsNTEzLjg1NiwyMjEuMVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRzY2FsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguMSAxNTRsLTkuNCA3LjZjLTIyLjUtMTkuMy01MS41LTMzLjYtODMuMy0zMy42QzE1My44IDEyOCA5NiAxODguOCA5NiAyNjAuM2MwIDYuNi40IDEzLjEgMS40IDE5LjQtMi01NiA0MS44LTk3LjQgOTIuNi05Ny40IDI0LjIgMCA0Ni4yIDkuNCA2Mi42IDI0LjdsLTI1LjIgMjAuNGMtOC4zLS45LTE2LjggMS44LTIzLjEgOC4xLTExLjEgMTEtMTEuMSAyOC45IDAgNDAgMTEuMSAxMSAyOC45IDExIDQwIDAgNi4zLTYuMyA5LTE0LjkgOC4xLTIzLjFsNzUuMi04OC44YzYuMy02LjUtMy4zLTE1LjktOS41LTkuNnptLTgzLjggMTExLjVjLTUuNiA1LjUtMTQuNiA1LjUtMjAuMiAwLTUuNi01LjYtNS42LTE0LjYgMC0yMC4yczE0LjYtNS42IDIwLjIgMCA1LjYgMTQuNyAwIDIwLjJ6TTIyNCAzMkMxMDAuNSAzMiAwIDEzMi41IDAgMjU2czEwMC41IDIyNCAyMjQgMjI0IDIyNC0xMDAuNSAyMjQtMjI0UzM0Ny41IDMyIDIyNCAzMnptMCAzODRjLTg4LjIgMC0xNjAtNzEuOC0xNjAtMTYwUzEzNS44IDk2IDIyNCA5NnMxNjAgNzEuOCAxNjAgMTYwLTcxLjggMTYwLTE2MCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3Vkc21pdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDIyNy42djU2LjlMMjg0LjQgNTEySDIyNy42TDAgMjg0LjRWMjI3LjZMMjI3LjYgMGg1Ni45TDUxMiAyMjcuNnptLTI1NiAxNjJhMTMzLjYgMTMzLjYgMCAxIDAgMC0yNjcuMSAxMzMuNiAxMzMuNiAwIDEgMCAwIDI2Ny4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZHZlcnNpZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDYxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ4LjYgMzA0YzguMiA2OC41IDY3LjQgMTE1LjUgMTQ2IDExMS4zIDUxLjIgNDMuMyAxMzYuOCA0NS44IDE4Ni40LTUuNiA2OS4yIDEuMSAxMTguNS00NC42IDEzMS41LTk5LjUgMTQuOC02Mi41LTE4LjItMTMyLjUtOTIuMS0xNTUuMS0zMy04OC4xLTEzMS40LTEwMS41LTE4Ni41LTg1LTU3LjMgMTcuMy04NC4zIDUzLjItOTkuMyAxMDkuNy03LjggMi43LTI2LjUgOC45LTQ1IDI0LjEgMTEuNyAwIDE1LjIgOC45IDE1LjIgMTkuNXYyMC40YzAgMTAuNy04LjcgMTkuNS0xOS41IDE5LjVoLTIwLjJjLTEwLjcgMC0xOS41LTYtMTkuNS0xNi43VjI0MEg5OC44Qzk1IDI0MCA4OCAyNDQuMyA4OCAyNTEuOXY0MC40YzAgNi40IDUuMyAxMS44IDExLjcgMTEuOGg0OC45em0yMjcuNCA4Yy0xMC43IDQ2LjMgMjEuNyA3Mi40IDU1LjMgODYuOEMzMjQuMSA0MzIuNiAyNTkuNyAzNDggMjk2IDI4OGMtMzMuMiAyMS42LTMzLjcgNzEuMi0yOS4yIDkyLjktMTcuOS0xMi40LTUzLjgtMzIuNC01Ny40LTc5LjgtMy0zOS45IDIxLjUtNzUuNyA1Ny05My45QzI5NyAxOTEuNCAzNjkuOSAxOTguNyA0MDAgMjQ4Yy0xNC4xLTQ4LTUzLjgtNzAuMS0xMDEuOC03NC44IDMwLjktMzAuNyA2NC40LTUwLjMgMTE0LjItNDMuNyA2OS44IDkuMyAxMzMuMiA4Mi44IDY3LjcgMTUwLjUgMzUtMTYuMyA0OC43LTU0LjQgNDcuNS03Ni45bDEwLjUgMTkuNmMxMS44IDIyIDE1LjIgNDcuNiA5LjQgNzItOS4yIDM5LTQwLjYgNjguOC03OS43IDc2LjUtMzIuMSA2LjMtODMuMS01LjEtOTEuOC01OS4yek0xMjggMjA4SDg4LjJjLTguOSAwLTE2LjItNy4zLTE2LjItMTYuMnYtMzkuNmMwLTguOSA3LjMtMTYuMiAxNi4yLTE2LjJIMTI4YzguOSAwIDE2LjIgNy4zIDE2LjIgMTYuMnYzOS42YzAgOC45LTcuMyAxNi4yLTE2LjIgMTYuMnpNMTAuMSAxNjhDNC41IDE2OCAwIDE2My41IDAgMTU3Ljl2LTI3LjhjMC01LjYgNC41LTEwLjEgMTAuMS0xMC4xaDI3LjdjNS41IDAgMTAuMSA0LjUgMTAuMSAxMC4xdjI3LjhjMCA1LjYtNC41IDEwLjEtMTAuMSAxMC4xSDEwLjF6TTE2OCAxNDIuN3YtMjEuNGMwLTUuMSA0LjItOS4zIDkuMy05LjNoMjEuNGM1LjEgMCA5LjMgNC4yIDkuMyA5LjN2MjEuNGMwIDUuMS00LjIgOS4zLTkuMyA5LjNoLTIxLjRjLTUuMSAwLTkuMy00LjItOS4zLTkuM3pNNTYgMjM1LjV2MjVjMCA2LjMtNS4xIDExLjUtMTEuNCAxMS41SDE5LjRDMTMuMSAyNzIgOCAyNjYuOCA4IDI2MC41di0yNWMwLTYuMyA1LjEtMTEuNSAxMS40LTExLjVoMjUuMWM2LjQgMCAxMS41IDUuMiAxMS41IDExLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNtcGxpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjYuMTE5LDM4OC4xNjVhMy44MTYsMy44MTYsMCwwLDAtMi4yOTQtMy41LDMuOTQ2LDMuOTQ2LDAsMCwwLTEuNjI5LS4zODVMNzIuNiwzODQuM2ExOS4yNDMsMTkuMjQzLDAsMCwxLTE3LjkyNC0yNi4wMjVMODEuNTg1LDI1NS42OTJhMzUuNzIsMzUuNzIsMCwwLDEsMzIuMzczLTI2SDI2Mi41MjVhNy4wNyw3LjA3LDAsMCwwLDYuMzkyLTUuMTk0bDEwLjc2OS00MS4xMzFhMy44NDksMy44NDksMCwwLDAtMi4yMzctNC45MzcsMy43NTUsMy43NTUsMCwwLDAtMS4zNzctLjI2MWMtLjA2MywwLS4xMjYsMC0uMTg5LjAwNUgxMjcuMzhhMTA2LjgsMTA2LjgsMCwwLDAtOTYuOTksNzcuMUwzLjQ4MywzNTguODI0QTU3LjQ2OSw1Ny40NjksMCwwLDAsNTcuMzE0LDQzNnExLjQzLDAsMi44Ni0uMDcySDIwOC43NDJhNy4xMzEsNy4xMzEsMCwwLDAsNi4zOTEtNS4xOTNMMjI1LjgzOSwzODkuNkEzLjgyLDMuODIsMCwwLDAsMjI2LjExOSwzODguMTY1Wk0zMDYuNjU4LDgxLjJhMy44NjEsMy44NjEsMCwwLDAsLjI1MS0xLjM2N0EzLjgxMywzLjgxMywwLDAsMCwzMDMuMDc5LDc2Yy0uMDY0LDAtLjEyOCwwLS4xOTIsMGgtNDFBNy4wMzQsNy4wMzQsMCwwLDAsMjU1LjUsODEuMmwtMjEuMzQ3LDgwLjkxNWg1MS4xMzFaTTE4MC4zNjQsMzY4LjI0OUgyMzEuNUwyNjMuNDUyLDI0NS42OUgyMTIuMzIxWk01MTEuODUzLDc5LjcyM2EzLjgwOSwzLjgwOSwwLDAsMC0zLjgtMy42NjFjLS4wNTgsMC0uMTM3LDAtLjIzLjAwN2gtNDFhNy4xLDcuMSwwLDAsMC02LjU4NCw1LjEyOUwzNjguOTEsNDMwLjYzNGEzLjU0LDMuNTQsMCwwLDAtLjI2MiwxLjMzNSwzLjg3MywzLjg3MywwLDAsMCwzLjg2NCwzLjg2M2MuMDU2LDAsLjExMiwwLC4xNjksMGg0MWE3LjA2OCw3LjA2OCwwLDAsMCw2LjM5Mi01LjE5M0w1MTEuNTMzLDgxLjJBMy42MjQsMy42MjQsMCwwLDAsNTExLjg1Myw3OS43MjNaTTMyNC42NDksMzg0LjQ3aC00MWE3LjIsNy4yLDAsMCwwLTYuMzkyLDUuMTk0TDI2Ni41Miw0MzAuOGEzLjY2MiwzLjY2MiwwLDAsMC0uMjY4LDEuMzc0QTMuNzgzLDMuNzgzLDAsMCwwLDI3MC4wMjMsNDM2Yy4wNiwwLC4xNjYsMCwuMy0uMDEyaDQwLjkwNWE3LjAzNiw3LjAzNiwwLDAsMCw2LjM5MS01LjE5M2wxMC43NjktNDEuMTMxYTMuNzUsMy43NSwwLDAsMC0zLjQ0NS01LjIwOGMtLjEwOCwwLS4yMTcsMC0uMzI2LjAxNFptMzExLjMyNC0zMDguNGgtNDFhNy4wNjYsNy4wNjYsMCwwLDAtNi4zOTIsNS4xMjlsLTkxLjQ2LDM0OS40MzZhNC4wNzMsNC4wNzMsMCwwLDAtLjIyOSwxLjM0NywzLjg3MiwzLjg3MiwwLDAsMCwzLjg2MywzLjg1MWMuMDU2LDAsLjExMiwwLC4xNjksMGg0MC45NjhhNy4xLDcuMSwwLDAsMCw2LjM5Mi01LjE5M0w2MzkuNjgsODEuMmEzLjYyNCwzLjYyNCwwLDAsMCwuMzItMS40NzUsMy44NDEsMy44NDEsMCwwLDAtMy44MjEtMy41NjRjLS4wNjgsMC0uMTM3LDAtLjIwNi4wMDZaTTM3MS41NjIsMjI1LjIzNmwxMC44LTQxLjFhNC4zNjksNC4zNjksMCwwLDAsLjIyNy0xLjM4OCwzLjg2OSwzLjg2OSwwLDAsMC0zLjg2MS0zLjg0MmMtLjA1NywwLS4xMTMsMC0uMTY5LDBoLTQxLjFhNy4yOTIsNy4yOTIsMCwwLDAtNi4zOTEsNS4yMjZsLTEwLjgzNCw0MS4xYTQuNDE3LDQuNDE3LDAsMCwwLS4yNiwxLjQ5M2MwLC4wNjksMCwuMTM4LDAsLjIwNmEzLjc3NiwzLjc3NiwwLDAsMCwzLjc1NywzLjUwN2MuMDc2LDAsLjE4LDAsLjMtLjAxMmg0MS4xMjlBNy4wMzQsNy4wMzQsMCwwLDAsMzcxLjU2MiwyMjUuMjM2WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2RlcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi4yODUgMTU5LjcwNGwtMjM0LTE1NmMtNy45ODctNC45MTUtMTYuNTExLTQuOTYtMjQuNTcxIDBsLTIzNCAxNTZDMy43MTQgMTYzLjcwMyAwIDE3MC44NDcgMCAxNzcuOTg5djE1NS45OTljMCA3LjE0MyAzLjcxNCAxNC4yODYgOS43MTUgMTguMjg2bDIzNCAxNTYuMDIyYzcuOTg3IDQuOTE1IDE2LjUxMSA0Ljk2IDI0LjU3MSAwbDIzNC0xNTYuMDIyYzYtMy45OTkgOS43MTUtMTEuMTQzIDkuNzE1LTE4LjI4NlYxNzcuOTg5Yy0uMDAxLTcuMTQyLTMuNzE1LTE0LjI4Ni05LjcxNi0xOC4yODV6TTI3OCA2My4xMzFsMTcyLjI4NiAxMTQuODU4LTc2Ljg1NyA1MS40MjlMMjc4IDE2NS43MDNWNjMuMTMxem0tNDQgMHYxMDIuNTcybC05NS40MjkgNjMuNzE1LTc2Ljg1Ny01MS40MjlMMjM0IDYzLjEzMXpNNDQgMjE5LjEzMmw1NS4xNDMgMzYuODU3TDQ0IDI5Mi44NDZ2LTczLjcxNHptMTkwIDIyOS43MTVMNjEuNzE0IDMzMy45ODlsNzYuODU3LTUxLjQyOUwyMzQgMzQ2LjI3NXYxMDIuNTcyem0yMi0xNDAuODU4bC03Ny43MTUtNTIgNzcuNzE1LTUyIDc3LjcxNSA1Mi03Ny43MTUgNTJ6bTIyIDE0MC44NThWMzQ2LjI3NWw5NS40MjktNjMuNzE1IDc2Ljg1NyA1MS40MjlMMjc4IDQ0OC44NDd6bTE5MC0xNTYuMDAxbC01NS4xNDMtMzYuODU3TDQ2OCAyMTkuMTMydjczLjcxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29kaWVwaWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ3MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIyLjUgMjAyLjljMzAuNyAwIDMzLjUgNTMuMS0uMyA1My4xaC0xMC44djQ0LjNoLTI2LjZ2LTk3LjRoMzcuN3pNNDcyIDM1Mi42QzQyOS45IDQ0NC41IDM1MC40IDUwNCAyNDggNTA0IDExMSA1MDQgMCAzOTMgMCAyNTZTMTExIDggMjQ4IDhjOTcuNCAwIDE3Mi44IDUzLjcgMjE4LjIgMTM4LjRsLTE4NiAxMDguOEw0NzIgMzUyLjZ6bS0zOC41IDEyLjVsLTYwLjMtMzAuN2MtMjcuMSA0NC4zLTcwLjQgNzEuNC0xMjIuNCA3MS40LTgyLjUgMC0xNDkuMi02Ni43LTE0OS4yLTE0OC45IDAtODIuNSA2Ni43LTE0OS4yIDE0OS4yLTE0OS4yIDQ4LjQgMCA4OC45IDIzLjUgMTE2LjkgNjMuNGw1OS41LTM0LjZjLTQwLjctNjIuNi0xMDQuNy0xMDAtMTc5LjItMTAwLTEyMS4yIDAtMjE5LjUgOTguMy0yMTkuNSAyMTkuNVMxMjYuOCA0NzUuNSAyNDggNDc1LjVjNzguNiAwIDE0Ni41LTQyLjEgMTg1LjUtMTEwLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbmZsdWVuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi4zIDQxMi4yYy00LjUgNy42LTIuMSAxNy41IDUuNSAyMi4ybDEwNS45IDY1LjJjNy43IDQuNyAxNy43IDIuNCAyMi40LTUuMyAwLS4xLjEtLjIuMS0uMiA2Ny4xLTExMi4yIDgwLjUtOTUuOSAyODAuOS0uNyA4LjEgMy45IDE3LjguNCAyMS43LTcuNy4xLS4xLjEtLjMuMi0uNGw1MC40LTExNC4xYzMuNi04LjEtLjEtMTcuNi04LjEtMjEuMy0yMi4yLTEwLjQtNjYuMi0zMS4yLTEwNS45LTUwLjNDMTI3LjUgMTc5IDQ0LjYgMzQ1LjMgMi4zIDQxMi4yem01MDcuNC0zMTIuMWM0LjUtNy42IDIuMS0xNy41LTUuNS0yMi4yTDM5OC40IDEyLjhjLTcuNS01LTE3LjYtMy4xLTIyLjYgNC40LS4yLjMtLjQuNi0uNiAxLTY3LjMgMTEyLjYtODEuMSA5NS42LTI4MC42LjktOC4xLTMuOS0xNy44LS40LTIxLjcgNy43LS4xLjEtLjEuMy0uMi40TDIyLjIgMTQxLjNjLTMuNiA4LjEuMSAxNy42IDguMSAyMS4zIDIyLjIgMTAuNCA2Ni4zIDMxLjIgMTA2IDUwLjQgMjQ4IDEyMCAzMzAuOC00NS40IDM3My40LTExMi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb25uZWN0ZGV2ZWxvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NTAuNSAyNDFsLTUwLjA4OS04Ni43ODZjMS4wNzEtMi4xNDIgMS44NzUtNC41NTMgMS44NzUtNy4yMzIgMC04LjAzNi02LjY5Ni0xNC43MzMtMTQuNzMyLTE1LjAwMWwtNTUuNDQ3LTk1Ljg5M2MuNTM2LTEuNjA3IDEuMDcxLTMuMjE0IDEuMDcxLTQuODIxIDAtOC41NzEtNi45NjQtMTUuMjY4LTE1LjI2OC0xNS4yNjgtNC44MjEgMC04LjgzOSAyLjE0My0xMS43ODYgNS42MjVIMjk5LjUxOEMyOTYuODM5IDE4LjE0MyAyOTIuODIxIDE2IDI4OCAxNnMtOC44MzkgMi4xNDMtMTEuNTE4IDUuNjI1SDE3MC40MTFDMTY3LjQ2NCAxOC4xNDMgMTYzLjQ0NyAxNiAxNTguNjI1IDE2Yy04LjMwMyAwLTE1LjI2OCA2LjY5Ni0xNS4yNjggMTUuMjY4IDAgMS42MDcuNTM2IDMuNDgyIDEuMDcyIDQuODIxbC01NS45ODMgOTcuMjMzYy01LjM1NiAyLjQxLTkuMTA3IDcuNS05LjEwNyAxMy42NjEgMCAuNTM1LjI2OCAxLjA3MS4yNjggMS42MDdsLTUzLjMwNCA5Mi4xNDNjLTcuMjMyIDEuMzM5LTEyLjU5IDcuNS0xMi41OSAxNSAwIDcuMjMyIDUuMDg5IDEzLjM5MyAxMi4wNTQgMTVsNTUuMTc5IDk1LjM1OGMtLjUzNiAxLjYwNy0uODA0IDIuOTQ2LS44MDQgNC44MjEgMCA3LjIzMiA1LjA4OSAxMy4zOTMgMTIuMDU0IDE0LjczMmw1MS42OTcgODkuNzMyYy0uNTM2IDEuNjA3LTEuMDcxIDMuNDgyLTEuMDcxIDUuMzU3IDAgOC41NzEgNi45NjQgMTUuMjY4IDE1LjI2OCAxNS4yNjggNC44MjEgMCA4LjgzOS0yLjE0MyAxMS41MTgtNS4zNTdoMTA2Ljg3NUMyNzkuMTYxIDQ5My44NTcgMjgzLjQ0NyA0OTYgMjg4IDQ5NnM4LjgzOS0yLjE0MyAxMS41MTgtNS4zNTdoMTA3LjE0M2MyLjY3OCAyLjk0NiA2LjY5NiA0LjgyMSAxMC45ODIgNC44MjEgOC41NzEgMCAxNS4yNjgtNi45NjQgMTUuMjY4LTE1LjI2OCAwLTEuNjA3LS4yNjctMi45NDYtLjgwMy00LjI4NWw1MS42OTctOTAuMjY4YzYuOTY0LTEuMzM5IDEyLjA1NC03LjUgMTIuMDU0LTE0LjczMiAwLTEuNjA3LS4yNjgtMy4yMTQtLjgwNC00LjgyMWw1NC45MTEtOTUuMzU4YzYuOTY0LTEuMzM5IDEyLjMyMi03LjUgMTIuMzIyLTE1LS4wMDItNy4yMzItNS4wOTItMTMuMzkzLTExLjc4OC0xNC43MzJ6TTE1My41MzUgNDUwLjczMmwtNDMuNjYtNzUuODAzaDQzLjY2djc1LjgwM3ptMC04My44MzloLTQzLjY2Yy0uMjY4LTEuMDcxLS44MDQtMi4xNDItMS4zMzktMy4yMTRsNDQuOTk5LTQ3LjQxdjUwLjYyNHptMC02Mi40MTFsLTUwLjM1NyA1My4zMDRjLTEuMzM5LS41MzYtMi42NzktMS4zNC00LjAxOC0xLjYwN0w0My40NDcgMjU5Ljc1Yy41MzUtMS4zMzkuNTM1LTIuNjc5LjUzNS00LjAxOHMwLTIuNDEtLjI2OC0zLjQ4Mmw1MS45NjUtOTBjMi42NzktLjI2OCA1LjM1Ny0xLjA3MiA3Ljc2OC0yLjY3OWw1MC4wODkgNTEuOTY1djkyLjk0NnptMC0xMDIuMzIybC00NS44MDMtNDcuNDFjMS4zMzktMi4xNDMgMi4xNDMtNC44MjEgMi4xNDMtNy43NjcgMC0uMjY4LS4yNjgtLjgwNC0uMjY4LTEuMDcybDQzLjkyOC0xNS44MDR2NzIuMDUzem0wLTgwLjYyNWwtNDMuNjYgMTUuODA0IDQzLjY2LTc1LjUzNnY1OS43MzJ6bTMyNi41MTkgMzkuMTA4bC44MDQgMS4zMzlMNDQ1LjUgMzI5LjEyNWwtNjMuNzUtNjcuMjMyIDk4LjAzNi0xMDEuNTE4LjI2OC4yNjh6TTI5MS43NSAzNTUuMTA3bDExLjUxOCAxMS43ODZIMjgwLjVsMTEuMjUtMTEuNzg2em0tLjI2OC0xMS4yNWwtODMuMzAzLTg1LjQ0NiA3OS41NTMtODQuMzc1IDgzLjAzNiA4Ny41ODktNzkuMjg2IDgyLjIzMnptNS4zNTcgNS44OTNsNzkuMjg2LTgyLjIzMiA2Ny41IDcxLjI1LTUuODkyIDI4LjEyNUgzMTMuNzE0bC0xNi44NzUtMTcuMTQzek00MTAuNDExIDQ0LjM5M2MxLjA3MS41MzYgMi4xNDIgMS4wNzIgMy40ODIgMS4zNGw1Ny44NTcgMTAwLjcxNHYuNTM2YzAgMi45NDYuODAzIDUuNjI0IDIuMTQzIDcuNzY3TDM3Ni4zOTMgMjU2bC04My4wMzUtODcuNTg5TDQxMC40MTEgNDQuMzkzem0tOS4xMDctMi4xNDNMMjg3LjczMiAxNjIuNTE4bC01Ny4wNTQtNjAuMjY4IDE2Ni4zMzktNjBoNC4yODd6bS0xMjMuNDgzIDBjMi42NzggMi42NzggNi4xNiA0LjI4NSAxMC4xNzkgNC4yODVzNy41LTEuNjA3IDEwLjE3OS00LjI4NWg3NUwyMjQuNzg2IDk1LjgyMSAxNzMuODkzIDQyLjI1aDEwMy45Mjh6bS0xMTYuMjQ5IDUuNjI1bDEuMDcxLTIuMTQyYTMzLjgzNCAzMy44MzQgMCAwIDAgMi42NzktLjgwNGw1MS4xNjEgNTMuODQtNTQuOTExIDE5LjgyMVY0Ny44NzV6bTAgNzkuMjg2bDYwLjgwMy0yMS45NjQgNTkuNzMyIDYzLjIxNC03OS41NTMgODQuMTA3LTQwLjk4Mi00Mi4wNTN2LTgzLjMwNHptMCA5Mi42NzhMMTk4IDI1Ny42MDdsLTM2LjQyOCAzOC4zMDR2LTc2LjA3MnptMCA4Ny44NThsNDIuMDUzLTQ0LjQ2NCA4Mi43NjggODUuOTgyLTE3LjE0MyAxNy42NzhIMTYxLjU3MnYtNTkuMTk2em02Ljk2NCAxNjIuMDUzYy0xLjYwNy0xLjYwNy0zLjQ4Mi0yLjY3OC01Ljg5My0zLjQ4MmwtMS4wNzEtMS42MDd2LTg5LjczMmg5OS45MWwtOTEuNjA3IDk0LjgyMWgtMS4zMzl6bTEyOS45MTEgMGMtMi42NzktMi40MS02LjQyOC00LjI4NS0xMC40NDctNC4yODVzLTcuNzY3IDEuODc1LTEwLjQ0NyA0LjI4NWgtOTYuNDI5bDkxLjYwNy05NC44MjFoMzguMzA0bDkxLjYwNyA5NC44MjFIMjk4LjQ0N3ptMTIwLTExLjc4NmwtNC4yODYgNy41Yy0xLjMzOS4yNjgtMi40MS44MDMtMy40ODIgMS4zMzlsLTg5LjE5Ni05MS44NzVoMTE0LjM3NmwtMTcuNDEyIDgzLjAzNnptMTIuODU2LTIyLjIzMmwxMi44NTgtNjAuODAzaDIxLjk2NGwtMzQuODIyIDYwLjgwM3ptMzQuODIyLTY4LjgzOWgtMjAuMzU3bDQuNTUzLTIxLjE2IDE3LjE0MyAxOC4yMTRjLS41MzUuODAzLTEuMDcxIDEuODc0LTEuMzM5IDIuOTQ2em02Ni4xNjEtMTA3LjQxMWwtNTUuNDQ3IDk2LjY5N2MtMS4zMzkuNTM1LTIuNjc5IDEuMDcxLTQuMDE4IDEuODc0bC0yMC42MjUtMjEuOTY0IDM0LjU1NC0xNjMuOTI4IDQ1LjgwMyA3OS4yODZjLS4yNjcgMS4zMzktLjgwMyAyLjY3OC0uODAzIDQuMjg1IDAgMS4zMzkuMjY4IDIuNDExLjUzNiAzLjc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb250YW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDUuNCAzMDVjMTQuNCA2Ny4xIDI2LjQgMTI5IDY4LjIgMTc1SDM0Yy0xOC43IDAtMzQtMTUuMi0zNC0zNFY2NmMwLTE4LjcgMTUuMi0zNCAzNC0zNGg1Ny43Qzc3LjkgNDQuNiA2NS42IDU5LjIgNTQuOCA3NS42Yy00NS40IDcwLTI3IDE0Ni44LTkuNCAyMjkuNHpNNDc4IDMyaC05MC4yYzIxLjQgMjEuNCAzOS4yIDQ5LjUgNTIuNyA4NC4xbC0xMzcuMSAyOS4zYy0xNC45LTI5LTM3LjgtNTMuMy04Mi42LTQzLjktMjQuNiA1LjMtNDEgMTkuMy00OC4zIDM0LjYtOC44IDE4LjctMTMuMiAzOS44IDguMiAxNDAuMyAyMS4xIDEwMC4yIDMzLjcgMTE3LjcgNDkuNSAxMzEuMiAxMi45IDExLjEgMzMuNCAxNyA1OC4zIDExLjcgNDQuNS05LjQgNTUuNy00MC43IDU3LjQtNzMuMmwxMzcuNC0yOS42YzMuMiA3MS41LTE4LjcgMTI1LjItNTcuNCAxNjMuNkg0NzhjMTguNyAwIDM0LTE1LjIgMzQtMzRWNjZjMC0xOC44LTE1LjItMzQtMzQtMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvdHRvbkJ1cmVhdSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzQuMzEgMzMwLjQxYy0yMy42NiA5MS44NS05NC4yMyAxNDQuNTktMjAxLjkgMTQ4LjM1VjQyOS42YzAtNDggMjYuNDEtNzQuMzkgNzQuMzktNzQuMzkgNjIgMCA5OS4yLTM3LjIgOTkuMi05OS4yMSAwLTYxLjM3LTM2LjUzLTk4LjI4LTk3LjM4LTk5LjA2LTMzLTY5LjMyLTE0Ni41LTY0LjY1LTE3Ny4yNCAwQzExMC41MiAxNTcuNzIgNzQgMTk0LjYzIDc0IDI1NmMwIDYyLjEzIDM3LjI3IDk5LjQxIDk5LjQgOTkuNDEgNDggMCA3NC41NSAyNi4yMyA3NC41NSA3NC4zOVY0NzljLTEzNC40My01LTIxMS4xLTg1LjA3LTIxMS4xLTIyMyAwLTE0MS44MiA4MS4zNS0yMjMuMiAyMjMuMi0yMjMuMiAxMTQuNzcgMCAxODkuODQgNTMuMiAyMTQuNjkgMTQ4LjgxSDUwMEM0NzMuODggNzEuNTEgMzg4LjIyIDggMjU5LjgyIDggMTA1IDggMTIgMTAxLjE5IDEyIDI1NS44MiAxMiA0MTEuMTQgMTA1LjE5IDUwNC4zNCAyNTkuODIgNTA0YzEyOC4yNyAwIDIxMy44Ny02My44MSAyMzkuNjctMTczLjU5ek0zNTcgMTgyLjMzYzQxLjM3IDMuNDUgNjQuMiAyOSA2NC4yIDczLjY3IDAgNDgtMjYuNDMgNzQuNDEtNzQuNCA3NC40MS0yOC42MSAwLTQ5LjMzLTkuNTktNjEuNTktMjcuMzMgODMuMDYtMTYuNTUgNzUuNTktOTkuNjcgNzEuNzktMTIwLjc1em0tODEuNjggOTcuMzZjLTIuNDYtMTAuMzQtMTYuMzMtODcgNTYuMjMtOTcgMi4yNyAxMC4wOSAxNi41MiA4Ny4xMS01Ni4yNiA5N3pNMjYwIDEzMmMyOC42MSAwIDQ5IDkuNjcgNjEuNDQgMjcuNjEtMjguMzYgNS40OC00OS4zNiAyMC41OS02MS41OSA0My40NS0xMi4yMy0yMi44Ni0zMy4yMy0zOC02MS42LTQzLjQ1IDEyLjQxLTE3LjY5IDMzLjI3LTI3LjM1IDYxLjU3LTI3LjM1em0tNzEuNTIgNTAuNzJjNzMuMTcgMTAuNTcgNTguOTEgODYuODEgNTYuNDkgOTctNzIuNDEtOS44NC01OS04Ni45NS01Ni4yNS05N3pNMTczLjIgMzMwLjQxYy00OCAwLTc0LjQtMjYuNC03NC40LTc0LjQxIDAtNDQuMzYgMjIuODYtNzAgNjQuMjItNzMuNjctNi43NSAzNy4yLTEuMzggMTA2LjUzIDcxLjY1IDEyMC43NS0xMi4xNCAxNy42My0zMi44NCAyNy4zLTYxLjE0IDI3LjN6bTUzLjIxIDEyLjM5QTgwLjggODAuOCAwIDAgMCAyNjAgMzA5LjI1YzcuNzcgMTQuNDkgMTkuMzMgMjUuNTQgMzMuODIgMzMuNTVhODAuMjggODAuMjggMCAwIDAtMzMuNTggMzMuODNjLTgtMTQuNS0xOS4wNy0yNi4yMy0zMy41Ni0zMy44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3BhbmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMC4zIDIyMC4yYy01LjYtMjQuOC0yNi45LTQxLjItNTEtNDEuMmgtMzdjLTcuMSAwLTEyLjUgNC41LTE0LjMgMTAuOUw3My4xIDMyMGwyNC43LS4xYzYuOCAwIDEyLjMtNC41IDE0LjItMTAuN2wyNS44LTk1LjdoMTkuOGM4LjQgMCAxNi4yIDUuNiAxOC4zIDE0LjggMi41IDEwLjktNS45IDIyLjYtMTguMyAyMi42aC0xMC4zYy03IDAtMTIuNSA0LjYtMTQuMyAxMC44bC02LjQgMjMuOGgzMmMzNy4yIDAgNTguMy0zNi4yIDUxLjctNjUuM3ptLTE1Ni41IDI4aDE4LjZjNi45IDAgMTIuNC00LjQgMTQuMy0xMC45bDYuMi0yMy42aC00MEMzMCAyMTMuNyA5IDIyNy44IDEuNyAyNTQuOC03IDI4OC42IDE4LjUgMzIwIDUyIDMyMGgxMi40bDcuMS0yNi4xYzEuMi00LjQtMi4yLTguMy02LjQtOC4zSDUzLjhjLTI0LjcgMC0yNC45LTM3LjQgMC0zNy40em0yNDcuNS0zNC44aC03Ny45bC0zLjUgMTMuNGMtMi40IDkuNiA0LjUgMTguNSAxNC4yIDE4LjVoNTcuNWM0IDAgMi40IDQuMyAyLjEgNS4zbC04LjYgMzEuOGMtLjQgMS40LS45IDUuMy01LjUgNS4zaC0zNC45Yy01LjMgMC01LjMtNy45IDAtNy45aDIxLjZjNi44IDAgMTIuMy00LjYgMTQuMi0xMC44bDMuNS0xMy4yaC00OC40Yy0zOS4yIDAtNDMuNiA2My44LS43IDYzLjhsNTcuNS4yYzExLjIgMCAyMC42LTcuMiAyMy40LTE3LjhsMTQtNTEuOGM0LjgtMTkuMi05LjctMzYuOC0yOC41LTM2Ljh6TTYzMy4xIDE3OWgtMTguOWMtNC45IDAtOS4yIDMuMi0xMC40IDcuOUw1NjguMiAzMjBjMjAuNyAwIDM5LjgtMTMuOCA0NC45LTM0LjVsMjYuNS05OC4yYzEuMi00LjMtMi04LjMtNi41LTguM3ptLTIzNi4zIDM0Ljd2LjFoLTQ4LjNsLTI2LjIgOThjLTEuMiA0LjQgMi4yIDguMyA2LjQgOC4zaDE4LjljNC44IDAgOS4yLTMgMTAuNC03LjhsMTcuMi02NEgzOTVjMTIuNSAwIDIxLjQgMTEuOCAxOC4xIDIzLjRsLTEwLjYgNDBjLTEuMiA0LjMgMS45IDguMyA2LjQgOC4zSDQyOGM0LjYgMCA5LjEtMi45IDEwLjMtNy44bDguOC0zMy4xYzktMzMuMS0xNS45LTY1LjQtNTAuMy02NS40em05OC4zIDc0LjZjLTMuNiAwLTYtMy40LTUuMS02LjdsOC0zMGMuOS0zLjkgMy43LTYgNy44LTZoMzIuOWMyLjYgMCA0LjYgMi40IDMuOSA1LjFsLS43IDIuNmMtLjYgMi0xLjkgMy0zLjkgM2gtMjEuNmMtNyAwLTEyLjYgNC42LTE0LjIgMTAuOGwtMy41IDEzaDUzLjRjMTAuNSAwIDIwLjMtNi42IDIzLjItMTcuNmwzLjItMTJjNC45LTE5LjEtOS4zLTM2LjgtMjguMy0zNi44aC00Ny4zYy0xNy45IDAtMzMuOCAxMi0zOC42IDI5LjZsLTEwLjggNDBjLTUgMTcuNyA4LjMgMzYuNyAyOC4zIDM2LjdoNjYuN2M2LjggMCAxMi4zLTQuNSAxNC4yLTEwLjdsNS43LTIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNCeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTQuOSAxOTQuNHYxMDEuNGgtMjguM3YxMjAuNWgtNzcuMVYyOTUuOWgtMjguM1YxOTQuNGMwLTQuNCAxLjYtOC4yIDQuNi0xMS4zIDMuMS0zLjEgNi45LTQuNyAxMS4zLTQuN0gyOTljNC4xIDAgNy44IDEuNiAxMS4xIDQuNyAzLjEgMy4yIDQuOCA2LjkgNC44IDExLjN6bS0xMDEuNS02My43YzAtMjMuMyAxMS41LTM1IDM0LjUtMzVzMzQuNSAxMS43IDM0LjUgMzVjMCAyMy0xMS41IDM0LjUtMzQuNSAzNC41cy0zNC41LTExLjUtMzQuNS0zNC41ek0yNDcuNiA4QzM4OS40IDggNDk2IDExOC4xIDQ5NiAyNTZjMCAxNDcuMS0xMTguNSAyNDgtMjQ4LjQgMjQ4QzExMy42IDUwNCAwIDM5NC41IDAgMjU2IDAgMTIzLjEgMTA0LjcgOCAyNDcuNiA4em0uOCA0NC43QzEzMC4yIDUyLjcgNDQuNyAxNTAuNiA0NC43IDI1NmMwIDEwOS44IDkxLjIgMjAyLjggMjAzLjcgMjAyLjggMTAzLjIgMCAyMDIuOC04MS4xIDIwMi44LTIwMi44LjEtMTEzLjgtOTAuMi0yMDMuMy0yMDIuOC0yMDMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zTmNFdSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNyA4QzEwMy42IDggMCAxMjQuOCAwIDI1NmMwIDEzNi4zIDExMS43IDI0OCAyNDcuNyAyNDhDMzc3LjkgNTA0IDQ5NiA0MDMuMSA0OTYgMjU2IDQ5NiAxMTcgMzg4LjQgOCAyNDcuNyA4em0uNiA0NTAuN2MtMTEyIDAtMjAzLjYtOTIuNS0yMDMuNi0yMDIuNyAwLTIzLjIgMy43LTQ1LjIgMTAuOS02Nmw2NS43IDI5LjFoLTQuN3YyOS41aDIzLjNjMCA2LjItLjQgMy4yLS40IDE5LjVoLTIyLjh2MjkuNWgyN2MxMS40IDY3IDY3LjIgMTAxLjMgMTI0LjYgMTAxLjMgMjYuNiAwIDUwLjYtNy45IDY0LjgtMTUuOGwtMTAtNDYuMWMtOC43IDQuNi0yOC4yIDEwLjgtNDcuMyAxMC44LTI4LjIgMC01OC4xLTEwLjktNjcuMy01MC4yaDkwLjNsMTI4LjMgNTYuOGMtMS41IDIuMS01Ni4yIDEwNC4zLTE3OC44IDEwNC4zem0tMTYuNy0xOTAuNmwtLjUtLjQuOS40aC0uNHptNzcuMi0xOS41aDMuN3YtMjkuNWgtNzAuM2wtMjguNi0xMi42YzIuNS01LjUgNS40LTEwLjUgOC44LTE0LjMgMTIuOS0xNS44IDMxLjEtMjIuNCA1MS4xLTIyLjQgMTguMyAwIDM1LjMgNS40IDQ2LjEgMTBsMTEuNi00Ny4zYy0xNS02LjYtMzctMTIuNC02Mi4zLTEyLjQtMzkgMC03Mi4yIDE1LjgtOTUuOSA0Mi4zLTUuMyA2LjEtOS44IDEyLjktMTMuOSAyMC4xbC04MS42LTM2LjFjNjQuNi05Ni44IDE1Ny43LTkzLjYgMTcwLjctOTMuNiAxMTMgMCAyMDMgOTAuMiAyMDMgMjAzLjQgMCAxOC43LTIuMSAzNi4zLTYuMyA1Mi45bC0xMzYuMS02MC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNOY0pwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny43IDhDMTAzLjYgOCAwIDEyNC44IDAgMjU2YzAgMTM2LjQgMTExLjggMjQ4IDI0Ny43IDI0OEMzNzcuOSA1MDQgNDk2IDQwMy4yIDQ5NiAyNTYgNDk2IDExNy4yIDM4OC41IDggMjQ3LjcgOHptLjYgNDUwLjdjLTExMiAwLTIwMy42LTkyLjUtMjAzLjYtMjAyLjcgMC0yMS4xIDMtNDEuMiA5LTYwLjNsMTI3IDU2LjVoLTI3Ljl2MzguNmg1OC4xbDUuNyAxMS44djE4LjdoLTYzLjhWMzYwaDYzLjh2NTZoNjEuN3YtNTZoNjQuMnYtMzUuN2w4MSAzNi4xYy0xLjUgMi4yLTU3LjEgOTguMy0xNzUuMiA5OC4zem04Ny42LTEzNy4zaC01Ny42di0xOC43bDIuOS01LjYgNTQuNyAyNC4zem02LjUtNTEuNHYtMTcuOGgtMzguNmw2My0xMTZIMzAxbC00My40IDk2LTIzLTEwLjItMzkuNi04NS43aC02NS44bDI3LjMgNTEtODEuOS0zNi41YzI3LjgtNDQuMSA4Mi42LTk4LjEgMTczLjctOTguMSAxMTIuOCAwIDIwMyA5MCAyMDMgMjAzLjQgMCAyMS0yLjcgNDAuNi03LjkgNTlsLTEwMS00NS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNOYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNiA4QzM4Ny40IDggNDk2IDExNS45IDQ5NiAyNTZjMCAxNDcuMi0xMTguNSAyNDgtMjQ4LjQgMjQ4QzExMy4xIDUwNCAwIDM5My4yIDAgMjU2IDAgMTIzLjEgMTA0LjcgOCAyNDcuNiA4ek01NS44IDE4OS4xYy03LjQgMjAuNC0xMS4xIDQyLjctMTEuMSA2Ni45IDAgMTEwLjkgOTIuMSAyMDIuNCAyMDMuNyAyMDIuNCAxMjIuNCAwIDE3Ny4yLTEwMS44IDE3OC41LTEwNC4xbC05My40LTQxLjZjLTcuNyAzNy4xLTQxLjIgNTMtNjguMiA1NS40djM4LjFoLTI4LjhWMzY4Yy0yNy41LS4zLTUyLjYtMTAuMi03NS4zLTI5LjdsMzQuMS0zNC41YzMxLjcgMjkuNCA4Ni40IDMxLjggODYuNC0yLjIgMC02LjItMi4yLTExLjItNi42LTE1LjEtMTQuMi02LTEuOC0uMS0yMTkuMy05Ny40ek0yNDguNCA1Mi4zYy0zOC40IDAtMTEyLjQgOC43LTE3MC41IDkzbDk0LjggNDIuNWMxMC0zMS4zIDQwLjQtNDIuOSA2My44LTQ0LjN2LTM4LjFoMjguOHYzOC4xYzIyLjcgMS4yIDQzLjQgOC45IDYyIDIzTDI5NSAxOTkuN2MtNDIuNy0yOS45LTgzLjUtOC03MCAxMS4xIDUzLjQgMjQuMSA0My44IDE5LjggOTMgNDEuNmwxMjcuMSA1Ni43YzQuMS0xNy40IDYuMi0zNS4xIDYuMi01My4xIDAtNTctMTkuOC0xMDUtNTkuMy0xNDMuOS0zOS4zLTM5LjktODcuMi01OS44LTE0My42LTU5Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc05kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem05NCAxNDQuM3Y0Mi41SDE2Mi4xVjE5N2gxODAuM3ptMCA3OS44djQyLjVIMTYyLjF2LTQyLjVoMTgwLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1BkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMTA0LjcgOCAwIDEyMy4xIDAgMjU2YzAgMTM4LjUgMTEzLjYgMjQ4IDI0Ny42IDI0OEMzNzcuNSA1MDQgNDk2IDQwMy4xIDQ5NiAyNTYgNDk2IDExOC4xIDM4OS40IDggMjQ3LjYgOHptLjggNDUwLjhjLTExMi41IDAtMjAzLjctOTMtMjAzLjctMjAyLjggMC0xMDUuNCA4NS41LTIwMy4zIDIwMy43LTIwMy4zIDExMi42IDAgMjAyLjkgODkuNSAyMDIuOCAyMDMuMyAwIDEyMS43LTk5LjYgMjAyLjgtMjAyLjggMjAyLjh6TTMxNi43IDE4NmgtNTMuMnYxMzcuMmg1My4yYzIxLjQgMCA3MC01LjEgNzAtNjguNiAwLTYzLjQtNDguNi02OC42LTcwLTY4LjZ6bS44IDEwOC41aC0xOS45di03OS43bDE5LjQtLjFjMy44IDAgMzUtMi4xIDM1IDM5LjkgMCAyNC42LTEwLjUgMzkuOS0zNC41IDM5Ljl6TTIwMy43IDE4NmgtNjguMnYxMzcuM2gzNC42VjI3OWgyN2M1NC4xIDAgNTcuMS0zNy41IDU3LjEtNDYuNSAwLTMxLTE2LjgtNDYuNS01MC41LTQ2LjV6bS00LjkgNjcuM2gtMjkuMnYtNDEuNmgyOC4zYzMwLjkgMCAyOC44IDQxLjYuOSA0MS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNQZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOS4xIDAgMjU2YzAgMTM3IDExMSAyNDggMjQ4IDI0OHMyNDgtMTExIDI0OC0yNDhDNDk2IDExOS4xIDM4NSA4IDI0OCA4em0wIDQ0OS41Yy0xMzkuMiAwLTIzNS44LTEzOC0xOTAuMi0yNjcuOWw3OC44IDM1LjFjLTIuMSAxMC41LTMuMyAyMS41LTMuMyAzMi45IDAgOTkgNzMuOSAxMjYuOSAxMjAuNCAxMjYuOSAyMi45IDAgNTMuNS02LjcgNzkuNC0yOS41TDI5NyAzMTEuMWMtNS41IDYuMy0xNy42IDE2LjctMzYuMyAxNi43LTM3LjggMC01My43LTM5LjktNTMuOS03MS45IDIzMC40IDEwMi42IDIxNi41IDk2LjUgMjE3LjkgOTYuOC0zNC4zIDYyLjQtMTAwLjYgMTA0LjgtMTc2LjcgMTA0Ljh6bTE5NC4yLTE1MGwtMjI0LTEwMGMxOC44LTM0IDU0LjktMzAuNyA3NC43LTExbDQwLjQtNDEuNmMtMjcuMS0yMy4zLTU4LTI3LjUtNzguMS0yNy41LTQ3LjQgMC04MC45IDIwLjUtMTAwLjcgNTEuNmwtNzQuOS0zMy40YzM2LjEtNTQuOSA5OC4xLTkxLjIgMTY4LjUtOTEuMiAxMTEuMSAwIDIwMS41IDkwLjQgMjAxLjUgMjAxLjUgMCAxOC0yLjQgMzUuNC02LjggNTItLjMtLjEtLjQtLjItLjYtLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1JlbWl4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem0xNjEuNyAyMDcuN2w0LjkgMi4ydjcwYy03LjIgMy42LTYzLjQgMjcuNS02Ny4zIDI4LjgtNi41LTEuOC0xMTMuNy00Ni44LTEzNy4zLTU2LjJsLTY0LjIgMjYuNi02My4zLTI3LjV2LTYzLjhsNTkuMy0yNC44Yy0uNy0uNy0uNCA1LS40LTcwLjRsNjcuMy0yOS43TDM2MSAxNzguNXY2MS42bDQ5LjEgMjAuM3ptLTcwLjQgODEuNXYtNDMuOGgtLjR2LTEuOGwtMTEzLjgtNDYuNVYyOTVsMTEzLjggNDYuOXYtLjRsLjQuNHptNy41LTU3LjZsMzkuOS0xNi40LTM2LjgtMTUuNS0zOSAxNi40IDM1LjkgMTUuNXptNTIuMyAzOC4xdi00M0wzNTUuMiAyOTh2NDMuNGw0NC4zLTE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNTYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNiA4QzM4OS40IDggNDk2IDExOC4xIDQ5NiAyNTZjMCAxNDcuMS0xMTguNSAyNDgtMjQ4LjQgMjQ4QzExMy42IDUwNCAwIDM5NC41IDAgMjU2IDAgMTIzLjEgMTA0LjcgOCAyNDcuNiA4em0uOCA0NC43QzEzMC4yIDUyLjcgNDQuNyAxNTAuNiA0NC43IDI1NmMwIDEwOS44IDkxLjIgMjAyLjggMjAzLjcgMjAyLjggMTAzLjIgMCAyMDIuOC04MS4xIDIwMi44LTIwMi44LjEtMTEzLjgtOTAuMi0yMDMuMy0yMDIuOC0yMDMuM3pNMTM3LjcgMjIxYzEzLTgzLjkgODAuNS05NS43IDEwOC45LTk1LjcgOTkuOCAwIDEyNy41IDgyLjUgMTI3LjUgMTM0LjIgMCA2My42LTQxIDEzMi45LTEyOC45IDEzMi45LTM4LjkgMC05OS4xLTIwLTEwOS40LTk3aDYyLjVjMS41IDMwLjEgMTkuNiA0NS4yIDU0LjUgNDUuMiAyMy4zIDAgNTgtMTguMiA1OC04Mi44IDAtODIuNS00OS4xLTgwLjYtNTYuNy04MC42LTMzLjEgMC01MS43IDE0LjYtNTUuOCA0My44aDE4LjJsLTQ5LjIgNDkuMi00OS00OS4yaDE5LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1NhbXBsaW5nUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNiA4QzM4OS40IDggNDk2IDExOC4xIDQ5NiAyNTZjMCAxNDcuMS0xMTguNSAyNDgtMjQ4LjQgMjQ4QzExMy42IDUwNCAwIDM5NC41IDAgMjU2IDAgMTIzLjEgMTA0LjcgOCAyNDcuNiA4em0uOCA0NC43QzEzMC4yIDUyLjcgNDQuNyAxNTAuNiA0NC43IDI1NmMwIDEwOS44IDkxLjIgMjAyLjggMjAzLjcgMjAyLjggMTAzLjIgMCAyMDIuOC04MS4xIDIwMi44LTIwMi44LjEtMTEzLjgtOTAuMi0yMDMuMy0yMDIuOC0yMDMuM3ptMTA3IDIwNS42Yy00LjcgMC05IDIuOC0xMC43IDcuMmwtNCA5LjUtMTEtOTIuOGMtMS43LTEzLjktMjItMTMuNC0yMy4xLjRsLTQuMyA1MS40LTUuMi02OC44Yy0xLjEtMTQuMy0yMi4xLTE0LjItMjMuMiAwbC0zLjUgNDQuOS01LjktOTQuM2MtLjktMTQuNS0yMi4zLTE0LjQtMjMuMiAwbC01LjEgODMuNy00LjMtNjYuM2MtLjktMTQuNC0yMi4yLTE0LjQtMjMuMiAwbC01LjMgODAuMi00LjEtNTdjLTEuMS0xNC4zLTIyLTE0LjMtMjMuMi0uMmwtNy43IDg5LjgtMS44LTEyLjJjLTEuNy0xMS40LTE3LjEtMTMuNi0yMi0zLjNsLTEzLjIgMjcuN0g4Ny41djIzLjJoNTEuM2M0LjQgMCA4LjQtMi41IDEwLjQtNi40bDEwLjcgNzMuMWMyIDEzLjUgMjEuOSAxMyAyMy4xLS43bDMuOC00My42IDUuNyA3OC4zYzEuMSAxNC40IDIyLjMgMTQuMiAyMy4yLS4xbDQuNi03MC40IDQuOCA3My4zYy45IDE0LjQgMjIuMyAxNC40IDIzLjItLjFsNC45LTgwLjUgNC41IDcxLjhjLjkgMTQuMyAyMi4xIDE0LjUgMjMuMi4ybDQuNi01OC42IDQuOSA2NC40YzEuMSAxNC4zIDIyIDE0LjIgMjMuMS4xbDYuOC04MyAyLjcgMjIuM2MxLjQgMTEuOCAxNy43IDE0LjEgMjIuMyAzLjFsMTgtNDMuNGg1MC41VjI1OGwtNTguNC4zem0tNzggNS4yaC0yMS45djIxLjljMCA0LjEtMy4zIDcuNS03LjUgNy41LTQuMSAwLTcuNS0zLjMtNy41LTcuNXYtMjEuOWgtMjEuOWMtNC4xIDAtNy41LTMuMy03LjUtNy41IDAtNC4xIDMuNC03LjUgNy41LTcuNWgyMS45di0yMS45YzAtNC4xIDMuNC03LjUgNy41LTcuNXM3LjUgMy4zIDcuNSA3LjV2MjEuOWgyMS45YzQuMSAwIDcuNSAzLjMgNy41IDcuNSAwIDQuMS0zLjQgNy41LTcuNSA3LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1NhbXBsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem0zLjYgNTMuMmMyLjgtLjMgMTEuNSAxIDExLjUgMTEuNWw2LjYgMTA3LjIgNC45LTU5LjNjMC02IDQuNy0xMC42IDEwLjYtMTAuNiA1LjkgMCAxMC42IDQuNyAxMC42IDEwLjYgMCAyLjUtLjUtNS43IDUuNyA4MS41bDUuOC02NC4yYy4zLTIuOSAyLjktOS4zIDEwLjItOS4zIDMuOCAwIDkuOSAyLjMgMTAuNiA4LjlsMTEuNSA5Ni41IDUuMy0xMi44YzEuOC00LjQgNS4yLTYuNiAxMC4yLTYuNmg1OHYyMS4zaC01MC45bC0xOC4yIDQ0LjNjLTMuOSA5LjktMTkuNSA5LjEtMjAuOC0zLjFsLTQtMzEuOS03LjUgOTIuNmMtLjMgMy0zIDkuMy0xMC4yIDkuMy0zIDAtOS44LTIuMS0xMC42LTkuMyAwLTEuOS42IDUuOC02LjItNzcuOWwtNS4zIDcyLjJjLTEuMSA0LjgtNC44IDkuMy0xMC42IDkuMy0yLjkgMC05LjgtMi0xMC42LTkuMyAwLTEuOS41IDYuNy01LjgtODcuN2wtNS44IDk0LjhjMCA2LjMtMy42IDEyLjQtMTAuNiAxMi40LTUuMiAwLTEwLjYtNC4xLTEwLjYtMTJsLTUuOC04Ny43Yy01LjggOTIuNS01LjMgODQtNS4zIDg1LjktMS4xIDQuOC00LjggOS4zLTEwLjYgOS4zLTMgMC05LjgtMi4xLTEwLjYtOS4zIDAtLjctLjQtMS4xLS40LTIuNmwtNi4yLTg4LjZMMTgyIDM0OGMtLjcgNi41LTYuNyA5LjMtMTAuNiA5LjMtNS44IDAtOS42LTQuMS0xMC42LTguOUwxNDkuNyAyNzJjLTIgNC0zLjUgOC40LTExLjEgOC40SDg3LjJ2LTIxLjNIMTMybDEzLjctMjcuOWM0LjQtOS45IDE4LjItNy4yIDE5LjkgMi43bDMuMSAyMC40IDguNC05Ny45YzAtNiA0LjgtMTAuNiAxMC42LTEwLjYuNSAwIDEwLjYtLjIgMTAuNiAxMi40bDQuOSA2OS4xIDYuNi05Mi42YzAtMTAuMSA5LjUtMTAuNiAxMC4yLTEwLjYuNiAwIDEwLjYuNyAxMC42IDEwLjZsNS4zIDgwLjYgNi4yLTk3LjljLjEtMS4xLS42LTEwLjMgOS45LTExLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1NoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem0xMDEgMTMyLjRjNy44IDAgMTMuNyA2LjEgMTMuNyAxMy43djE4Mi41YzAgNy43LTYuMSAxMy43LTEzLjcgMTMuN0gyMTQuM2MtNy43IDAtMTMuNy02LTEzLjctMTMuN3YtNTRoLTU0Yy03LjggMC0xMy43LTYtMTMuNy0xMy43VjEzMS4xYzAtOC4yIDYuNi0xMi43IDEyLjQtMTMuN2gxMzYuNGM3LjcgMCAxMy43IDYgMTMuNyAxMy43djU0aDU0ek0xNTkuOSAzMDAuM2g0MC43VjE5OC45YzAtNy40IDUuOC0xMi42IDEyLTEzLjdoNTUuOHYtNDAuM0gxNTkuOXYxNTUuNHptMTc2LjItODguMUgyMjcuNnYxNTUuNGgxMDguNVYyMTIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zWmVybyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNiA4QzM4OS40IDggNDk2IDExOC4xIDQ5NiAyNTZjMCAxNDcuMS0xMTguNSAyNDgtMjQ4LjQgMjQ4QzExMy42IDUwNCAwIDM5NC41IDAgMjU2IDAgMTIzLjEgMTA0LjcgOCAyNDcuNiA4em0uOCA0NC43QzEzMC4yIDUyLjcgNDQuNyAxNTAuNiA0NC43IDI1NmMwIDEwOS44IDkxLjIgMjAyLjggMjAzLjcgMjAyLjggMTAzLjIgMCAyMDIuOC04MS4xIDIwMi44LTIwMi44LjEtMTEzLjgtOTAuMi0yMDMuMy0yMDIuOC0yMDMuM3ptLS40IDYwLjVjLTgxLjkgMC0xMDIuNSA3Ny4zLTEwMi41IDE0Mi44IDAgNjUuNSAyMC42IDE0Mi44IDEwMi41IDE0Mi44UzM1MC41IDMyMS41IDM1MC41IDI1NmMwLTY1LjUtMjAuNi0xNDIuOC0xMDIuNS0xNDIuOHptMCA1My45YzMuMyAwIDYuNC41IDkuMiAxLjIgNS45IDUuMSA4LjggMTIuMSAzLjEgMjEuOWwtNTQuNSAxMDAuMmMtMS43LTEyLjctMS45LTI1LjEtMS45LTM0LjQgMC0yOC44IDItODguOSA0NC4xLTg4Ljl6bTQwLjggNDYuMmMyLjkgMTUuNCAzLjMgMzEuNCAzLjMgNDIuNyAwIDI4LjktMiA4OC45LTQ0LjEgODguOS0xMy41IDAtMzIuNi03LjctMjAuMS0yNi40bDYwLjktMTA1LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDUuODMgMjE0Ljg3bC0zMy4yMiAxNy4yOGMtOS40My0xOS41OC0yNS4yNC0xOS45My0yNy40Ni0xOS45My0yMi4xMyAwLTMzLjIyIDE0LjYxLTMzLjIyIDQzLjg0IDAgMjMuNTcgOS4yMSA0My44NCAzMy4yMiA0My44NCAxNC40NyAwIDI0LjY1LTcuMDkgMzAuNTctMjEuMjZsMzAuNTUgMTUuNWMtNi4xNyAxMS41MS0yNS42OSAzOC45OC02NS4xIDM4Ljk4LTIyLjYgMC03My45Ni0xMC4zMi03My45Ni03Ny4wNSAwLTU4LjY5IDQzLTc3LjA2IDcyLjYzLTc3LjA2IDMwLjcyLS4wMSA1Mi43IDExLjk1IDY1Ljk5IDM1Ljg2em0xNDMuMDUgMGwtMzIuNzggMTcuMjhjLTkuNS0xOS43Ny0yNS43Mi0xOS45My0yNy45LTE5LjkzLTIyLjE0IDAtMzMuMjIgMTQuNjEtMzMuMjIgNDMuODQgMCAyMy41NSA5LjIzIDQzLjg0IDMzLjIyIDQzLjg0IDE0LjQ1IDAgMjQuNjUtNy4wOSAzMC41NC0yMS4yNmwzMSAxNS41Yy0yLjEgMy43NS0yMS4zOSAzOC45OC02NS4wOSAzOC45OC0yMi42OSAwLTczLjk2LTkuODctNzMuOTYtNzcuMDUgMC01OC42NyA0Mi45Ny03Ny4wNiA3Mi42My03Ny4wNiAzMC43MS0uMDEgNTIuNTggMTEuOTUgNjUuNTYgMzUuODZ6TTI0Ny41NiA4LjA1QzEwNC43NCA4LjA1IDAgMTIzLjExIDAgMjU2LjA1YzAgMTM4LjQ5IDExMy42IDI0OCAyNDcuNTYgMjQ4IDEyOS45MyAwIDI0OC40NC0xMDAuODcgMjQ4LjQ0LTI0OCAwLTEzNy44Ny0xMDYuNjItMjQ4LTI0OC40NC0yNDh6bS44NyA0NTAuODFjLTExMi41NCAwLTIwMy43LTkzLjA0LTIwMy43LTIwMi44MSAwLTEwNS40MiA4NS40My0yMDMuMjcgMjAzLjcyLTIwMy4yNyAxMTIuNTMgMCAyMDIuODIgODkuNDYgMjAyLjgyIDIwMy4yNi0uMDEgMTIxLjY5LTk5LjY4IDIwMi44Mi0yMDIuODQgMjAyLjgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcml0aWNhbFJvbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI1LjgyIDBjLjI2LjE1IDIxNi41NyAxMjQuNTEgMjE3LjEyIDEyNC43MiAzIDEuMTggMy43IDMuNDYgMy43IDYuNTZxLS4xMSAxMjUuMTcgMCAyNTAuMzZhNS44OCA1Ljg4IDAgMCAxLTMuMzggNS43OGMtMjEuMzcgMTItMjA3Ljg2IDExOC4yOS0yMTguOTMgMTI0LjU4aC0zQzE0MiA0NjYuMzQgMy4wOCAzODYuNTYgMi45MyAzODYuNDhhMy4yOSAzLjI5IDAgMCAxLTEuODgtMy4yNGMwLS44NyAwLTIyNS45NC0uMDUtMjUzLjFhNSA1IDAgMCAxIDIuOTMtNC45M0MyNy4xOSAxMTIuMTEgMjEzLjIgNiAyMjQuMDcgMHpNMjE1LjQgMjAuNDJsLS4yMi0uMTZRMTE4LjA2IDc1LjU1IDIxIDEzMC44N2MwIC4xMi4wOC4yMy4xMy4zNWwzMC44NiAxMS42NGMtNy43MSA2LTguMzIgNi0xMC42NSA1LjEzLS4xIDAtMjQuMTctOS4yOC0yNi44LTEwdjIzMC40M2MuODgtMS40MSA2NC4wNy0xMTAuOTEgNjQuMTMtMTExIDEuNjItMi44MiAzLTEuOTIgOS4xMi0xLjUyIDEuNC4wOSAxLjQ4LjIyLjc4IDEuNDItNDEuMTkgNzEuMzMtMzYuNCA2My02Ny40OCAxMTYuOTQtLjgxIDEuNC0uNjEgMS4xMyAxLjI1IDEuMTNoMTg2LjVjMS40NCAwIDEuNjktLjIzIDEuNy0xLjY0di04Ljg4YzAtMS4zNCAyLjM2LS44MS0xOC4zNy0xLTcuNDYtLjA3LTE0LjE0LTMuMjItMjEuMzgtMTIuNy03LjM4LTkuNjYtMTQuNjItMTkuNDMtMjEuODUtMjkuMjEtMi4yOC0zLjA4LTMuNDUtMi4zOC0xNi43Ni0yLjM4LTEuNzUgMC0xLjc4IDAtMS43NiAxLjgyLjI5IDI2LjIxLjE1IDI1LjI3IDEgMzIuNjYuNTIgNC4zNyAyLjE2IDQuMiA5LjY5IDQuODEgMy4xNC4yNiAzLjg4IDQuMDguNTIgNC45Mi0xLjU3LjM5LTMxLjYuNTEtMzMuNjctLjFhMi40MiAyLjQyIDAgMCAxIC4zLTQuNzNjMy4yOS0uNzYgNi4xNi44MSA2LjY2LTQuNDQgMS4zLTEzLjY2IDEuMTctOSAxLjEtNzkuNDIgMC0xMC44Mi0uMzUtMTIuNTgtNS4zNi0xMy41NS0xLjIyLS4yNC0zLjU0LS4xNi00LjY5LS41NS0yLjg4LTEtMi00Ljg0IDEuNzctNC44NSAzMy42NyAwIDQ2LjA4LTEuMDcgNTYuMDYgNC44NiA3Ljc0IDQuNjEgMTIgMTEuNDggMTIuNTEgMjAuNC44OCAxNC41OS02LjUxIDIyLjM1LTE1IDMyLjU5YTEuNDYgMS40NiAwIDAgMCAwIDIuMjJjMi42IDMuMjUgNSA2LjYzIDcuNzEgOS44MyAyNy41NiAzMy4yMyAyNC4xMSAzMC41NCA0MS4yOCAzMy4wNi44OS4xMyAxLS40MiAxLTEuMTV2LTExYzAtMSAuMzItMS40MyAxLjQxLTEuMjZhNzIuMzcgNzIuMzcgMCAwIDAgMjMuNTgtLjNjMS4wOC0uMTUgMS41LjIgMS40OCAxLjMzIDAgLjExLjg4IDI2LjY5Ljg3IDI2LjgtLjA1IDEuNTIuNjcgMS42MiAxLjg5IDEuNjJoMTg2LjcxUTM4Ni41MSAzMDQuNiAzNDYgMjM0LjMzYzIuMjYtLjY2LS40IDAgNi42OS0xLjM5IDItLjM5IDIuMDUtLjQxIDMuMTEgMS40NCA3LjMxIDEyLjY0IDc3LjMxIDEzNCA3Ny4zNyAxMzQuMDZWMTM4Yy0xLjcyLjUtMTAzLjMgMzguNzItMTA1Ljc2IDM5LjY4LTEuMDguNDItMS41NS4yLTEuOTEtLjg4LS42My0xLjktMS4zNC0zLjc2LTIuMDktNS42Mi0uMzItLjc5LS4wOS0xLjEzLjY1LTEuMzkuMSAwIDk1LjUzLTM1Ljg1IDEwMy0zOC43Ny02NS40Mi0zNy41Ny0xMzAuNTYtNzUtMTk2LTExMi42bDg2LjgyIDE1MC4zOS0uMjguMzNjLTkuNTctLjktMTAuNDYtMS42LTExLjgtMy45NC0xLTEuNjktNzMuNS0xMjcuNzEtODItMTQyLjE2LTkuMSAxNC42Ny04My41NiAxNDYuMjEtODUuMzcgMTQ2LjMyLTIuOTMuMTctNS44OC4wOC05LjI1LjA4cTQzLjI1LTc0Ljc0IDg2LjE4LTE0OXptNTEuOTMgMTI5LjkyYTM3LjY4IDM3LjY4IDAgMCAwIDUuNTQtLjg1YzEuNjktLjMgMi41My4yIDIuNiAxLjkyIDAgLjExLjA3IDE5LjA2LS44NiAyMC40NXMtMS44OCAxLjIyLTIuNi0uMTljLTUtOS42OSA2LjIyLTkuNjYtMzkuMTItMTItLjcgMC0xIC4yMy0xIC45MyAwIC4xMyAzLjcyIDEyMiAzLjczIDEyMi4xMSAwIC44OS41MiAxLjIgMS4yMSAxLjUxYTgzLjkyIDgzLjkyIDAgMCAxIDguNyA0LjA1YzcuMzEgNC4zMyAxMS4zOCAxMC44NCAxMi40MSAxOS4zMSAxLjQ0IDExLjgtMi43NyAzNS43Ny0zMi4yMSAzNy4xNC0yLjc1LjEzLTI4LjI2IDEuMDgtMzQuMTQtMjMuMjUtNC42Ni0xOS4yNiA4LjI2LTMyLjcgMTkuODktMzYuNGEyLjQ1IDIuNDUgMCAwIDAgMi0yLjY2Yy4xLTUuNjMgMy0xMDcuMSAzLjcxLTEyMS4zNS4wNS0xLjA4LS42Mi0xLjE2LTEuMzUtMS4xNS0zMi4zNS41Mi0zNi43NS0uMzQtNDAuMjIgOC41Mi0yLjQyIDYuMTgtNC4xNCAxLjMyLTMuOTUuMjNxMS41OS05IDMuMzEtMThjLjQtMi4xMSAxLjQzLTIuNjEgMy40My0xLjg2IDUuNTkgMi4xMSA2LjcyIDEuNyAzNy4yNSAxLjkyIDEuNzMgMCAxLjc4LS4wOCAxLjgyLTEuODUuNjgtMjcuNDkuNTgtMjIuNTkgMS0yOS41NWEyLjY5IDIuNjkgMCAwIDAtMS42My0yLjhjLTUuNi0yLjkxLTguNzUtNy41NS04LjktMTMuODctLjM1LTE0LjgxIDE3LjcyLTIxLjY3IDI3LjM4LTExLjUxIDYuODQgNy4xOSA1LjggMTguOTEtMi40NSAyNC4xNWE0LjM1IDQuMzUgMCAwIDAtMi4yMiA0LjM0YzAgLjU5LS4xMS00LjMxIDEgMzAuMDUgMCAuOS40MyAxLjEyIDEuMjQgMS4xMS4xIDAgMjMtLjA5IDM0LjQ3LS4zN3pNNjguMjcgMTQxLjdjMTkuODQtNC41MSAzMi42OC0uNTYgNTIuNDkgMS42OSAyLjc2LjMxIDMuNzQgMS4yMiAzLjYyIDQtLjIxIDUtMS4xNiAyMi4zMy0xLjI0IDIzLjE1YTIuNjUgMi42NSAwIDAgMS0xLjYzIDIuMzRjLTQuMDYgMS43LTMuNjEtNC40NS00LTcuMjktMy4xMy0yMi40My03My44Ny0zMi43LTc0LjYzIDI1LjQtLjMxIDIzLjkyIDE3IDUzLjYzIDU0LjA4IDUwLjg4IDI3LjI0LTIgMTktMjAuMTkgMjQuODQtMjAuNDdhMi43MiAyLjcyIDAgMCAxIDMgMy4zNmMtMS44MyAxMC44NS0zLjQyIDE4Ljk1LTMuNDUgMTkuMTUtMS41NCA5LjE3LTg2LjcgMjIuMDktOTMuMzUtNDIuMDYtMi43MS0yNS44NSAxMC40NC01My4zNyA0MC4yNy02MC4xNXptODAgODcuNjdoLTE5LjQ5YTIuNTcgMi41NyAwIDAgMS0yLjY2LTEuNzljMi4zOC0zLjc1IDUuODkuOTIgNS44Ni02LjE0LS4wOC0yNS43NS4yMS0zOCAuMjMtNDAuMSAwLTMuNDItLjUzLTQuNjUtMy4zMi00Ljk0LTctLjcyLTMuMTEtMy4zNy0xLjExLTMuMzggMTEuODQtLjEgMjIuNjItLjE4IDMwLjA1LjcyIDguNzcgMS4wNyAxNi43MSAxMi42MyA3LjkzIDIyLjYyLTIgMi4yNS00IDQuNDItNi4xNCA2LjczLjk1IDEuMTUgNi45IDguODIgMTcuMjggMTkuNjggMi42NiAyLjc4IDYuMTUgMy41MSA5Ljg4IDMuMTNhMi4yMSAyLjIxIDAgMCAwIDIuMjMtMi4xMmMuMy0zLjQyLjI2IDQuNzMuNDUtNDAuNTggMC01LjY1LS4zNC02LjU4LTMuMjMtNi44My0zLjk1LS4zNS00LTIuMjYtLjY5LTMuMzdsMTkuMDktLjA5Yy4zMiAwIDQuNDkuNTMgMSAzLjM4IDAgLjA1LS4xNiAwLS4yNCAwLTMuNjEuMjYtMy45NCAxLTQgNC42Mi0uMjcgNDMuOTMuMDcgNDAuMjMuNDEgNDIuODIuMTEuODQuMjcgMi4yMyA1LjEgMi4xNCAyLjQ5IDAgMy44NiAzLjM3IDAgMy40LTEwLjM3LjA4LTIwLjc0IDAtMzEuMTEuMDctMTAuNjcgMC0xMy40Ny02LjItMjQuMjEtMjAuODItMS42LTIuMTgtOC4zMS0yLjM2LTguMi0uMzcuODggMTYuNDcgMCAxNy43OCA0IDE3LjY3IDQuNzUtLjEgNC43MyAzLjU3LjgzIDMuNTV6bTI3NS0xMC4xNWMtMS4yMSA3LjEzLjE3IDEwLjM4LTUuMyAxMC4zNC02MS41NS0uNDItNDcuODItLjIyLTUwLjcyLS4zMWExOC40IDE4LjQgMCAwIDEtMy42My0uNzNjLTIuNTMtLjYgMS40OC0xLjIzLS4zOC01LjYtMS40My0zLjM3LTIuNzgtNi43OC00LjExLTEwLjE5YTEuOTQgMS45NCAwIDAgMC0yLTEuNDQgMTM4IDEzOCAwIDAgMC0xNC41OC4wNyAyLjIzIDIuMjMgMCAwIDAtMS42MiAxLjA2Yy0xLjU4IDMuNjItMy4wNyA3LjI5LTQuNTEgMTEtMS4yNyAzLjIzIDcuODYgMS4zMiAxMi4xOSAyLjE2IDMgLjU3IDQuNTMgMy43Mi42NiAzLjczSDMyMi45Yy0yLjkyIDAtMy4wOS0zLjE1LS43NC0zLjIxYTYuMyA2LjMgMCAwIDAgNS45Mi0zLjQ3YzEuNS0zIDIuOC02IDQuMTEtOS4wOSAxOC4xOC00Mi4xNCAxNy4wNi00MC4xNyAxOC40Mi00MS42MWExLjgzIDEuODMgMCAwIDEgMyAwYzIuOTMgMy4zNCAxOC40IDQ0LjcxIDIzLjYyIDUxLjkyIDIgMi43IDUuNzQgMiA2LjM2IDIgMy42MS4xMyA0LTEuMTEgNC4xMy00LjI5LjA5LTEuODcuMDggMS4xNy4wNy00MS4yNCAwLTQuNDYtMi4zNi0zLjc0LTUuNTUtNC4yNy0uMjYgMC0yLjU2LS42My0uMDgtMy4wNi4yMS0uMi0uODktLjI0IDIxLjctLjE1IDIuMzIgMCA1LjMyIDIuNzUtMS4yMSAzLjQ1YTIuNTYgMi41NiAwIDAgMC0yLjY2IDIuODNjLS4wNyAxLjYzLS4xOSAzOC44OS4yOSA0MS4yMWEzLjA2IDMuMDYgMCAwIDAgMy4yMyAyLjQzYzEzLjI1LjQzIDE0LjkyLjQ0IDE2LTMuNDEgMS42Ny01Ljc4IDQuMTMtMi41MiAzLjczLS4xOXptLTEwNC43MiA2NC4zN2MtNC4yNCAwLTQuNDItMy4zOS0uNjEtMy40MSAzNS45MS0uMTYgMjguMTEuMzggMzcuMTktLjY1IDEuNjgtLjE5IDIuMzguMjQgMi4yNSAxLjg5LS4yNiAzLjM5LS42NCA2Ljc4LTEgMTAuMTYtLjI1IDIuMTYtMy4yIDIuNjEtMy40LS4xNS0uMzgtNS4zMS0yLjE1LTQuNDUtMTUuNjMtNS4wOC0xLjU4LS4wNy0xLjY0IDAtMS42NCAxLjUyVjMwNGMwIDEuNjUgMCAxLjYgMS42MiAxLjQ3IDMuMTItLjI1IDEwLjMxLjM0IDE1LjY5LTEuNTIuNDctLjE2IDMuMy0xLjc5IDMuMDcgMS43NiAwIC4yMS0uNzYgMTAuMzUtMS4xOCAxMS4zOS0uNTMgMS4yOS0xLjg4IDEuNTEtMi41OC4zMi0xLjE3LTIgMC01LjA4LTMuNzEtNS4zLTE1LjQyLS45LTEyLjkxLTIuNTUtMTIuOTEgNiAwIDEyLjI1LS43NiAxNi4xMSAzLjg5IDE2LjI0IDE2LjY0LjQ4IDE0LjQgMCAxNi40My01LjcxLjg0LTIuMzcgMy41LTEuNzcgMy4xOC41OC0uNDQgMy4yMS0uODUgNi40My0xLjIzIDkuNjQgMCAuMzYtLjE2IDIuNC00LjY2IDIuMzktMzcuMTYtLjA4LTM0LjU0LS4xOS0zNS4yMS0uMzEtMi43Mi0uNTEtMi4yLTMgLjIyLTMuNDUgMS4xLS4xOSA0IC41NCA0LjE2LTIuNTYgMi40NC01Ni4yMi0uMDctNTEuMzQtMy45MS01MS4zM3ptLS40MS0xMDkuNTJjMi40Ni42MSAzLjEzIDEuNzYgMi45NSA0LjY1LS4zMyA1LjMtLjM0IDktLjU1IDkuNjktLjY2IDIuMjMtMy4xNSAyLjEyLTMuMzQtLjI3LS4zOC00LjgxLTMuMDUtNy44Mi03LjU3LTkuMTUtMjYuMjgtNy43My0zMi44MSAxNS40Ni0yNy4xNyAzMC4yMiA1Ljg4IDE1LjQxIDIyIDE1LjkyIDI4Ljg2IDEzLjc4IDUuOTItMS44NSA1Ljg4LTYuNSA2LjkxLTcuNTggMS4yMy0xLjMgMi4yNS0xLjg0IDMuMTIgMS4xIDAgLjEuNTcgMTEuODktNiAxMi43NS0xLjYuMjEtMTkuMzggMy42OS0zMi42OC0zLjM5LTIxLTExLjE5LTE2Ljc0LTM1LjQ3LTYuODgtNDUuMzMgMTQtMTQuMDYgMzkuOTEtNy4wNiA0Mi4zMi02LjQ3ek0yODkuOCAyODAuMTRjMy4yOCAwIDMuNjYgMyAuMTYgMy40My0yLjYxLjMyLTUtLjQyLTUgNS40NiAwIDItLjE5IDI5LjA1LjQgNDEuNDUuMTEgMi4yOSAxLjE1IDMuNTIgMy40NCAzLjY1IDIyIDEuMjEgMTQuOTUtMS42NSAxOC43OS02LjM0IDEuODMtMi4yNCAyLjc2Ljg0IDIuNzYgMS4wOC4zNSAxMy42Mi00IDEyLjM5LTUuMTkgMTIuNGwtMzguMTYtLjE5Yy0xLjkzLS4yMy0yLjA2LTMtLjQyLTMuMzggMi0uNDggNC45NC40IDUuMTMtMi44IDEtMTUuODcuNTctNDQuNjUuMzQtNDcuODEtLjI3LTMuNzctMi44LTMuMjctNS42OC0zLjcxLTIuNDctLjM4LTItMy4yMi4zNC0zLjIyIDEuNDUtLjAyIDE3Ljk3LS4wMyAyMy4wOS0uMDJ6bS0zMS42My01Ny43OWMuMDcgNC4wOCAyLjg2IDMuNDYgNiAzLjU4IDIuNjEuMSAyLjUzIDMuNDEtLjA3IDMuNDMtNi40OCAwLTEzLjcgMC0yMS42MS0uMDYtMy44NCAwLTMuMzgtMy4zNSAwLTMuMzcgNC40OSAwIDMuMjQgMS42MSAzLjQxLTQ1LjU0IDAtNS4wOC0zLjI3LTMuNTQtNC43Mi00LjIzLTIuNTgtMS4yMy0xLjM2LTMuMDkuNDEtMy4xNSAxLjI5IDAgMjAuMTktLjQxIDIxLjE3LjIxczEuODcgMS42NS0uNDIgMi44NmMtMSAuNTItMy44Ni0uMjgtNC4xNSAyLjQ3IDAgLjIxLS44MiAxLjYzLS4wNyA0My44em0tMzYuOTEgMjc0LjI3YTIuOTMgMi45MyAwIDAgMCAzLjI2IDBjMTctOS43OSAxODItMTAzLjU3IDE5Ny40Mi0xMTIuNTEtLjE0LS40MyAxMS4yNi0uMTgtMTgxLjUyLS4yNy0xLjIyIDAtMS41Ny4zNy0xLjUzIDEuNTYgMCAuMSAxLjI1IDQ0LjUxIDEuMjIgNTAuMzhhMjguMzMgMjguMzMgMCAwIDEtMS4zNiA3LjcxYy0uNTUgMS44My4zOC0uNS0xMy41IDMyLjIzLS43MyAxLjcyLTEgMi4yMS0yLS4wOC00LjE5LTEwLjM0LTguMjgtMjAuNzItMTIuNTctMzFhMjMuNiAyMy42IDAgMCAxLTItMTAuNzljLjE2LTIuNDYuOC0xNi4xMiAxLjUxLTQ4IDAtMS45NSAwLTItMi0yaC0xODNjMi41OCAxLjYzIDE3OC4zMiAxMDIuNTcgMTk2IDExMi43NnptLTkwLjktMTg4Ljc1YzAgMi40LjM2IDIuNzkgMi43NiAzIDExLjU0IDEuMTcgMjEgMy43NCAyNS42NC03LjMyIDYtMTQuNDYgMi42Ni0zNC40MS0xMi40OC0zOC44NC0yLS41OS0xNi0yLjc2LTE1Ljk0IDEuNTEuMDUgOC4wNC4wMSAxMS42MS4wMiA0MS42NXptMTA1Ljc1LTE1LjA1YzAgMi4xMyAxLjA3IDM4LjY4IDEuMDkgMzkuMTMuMzQgOS45NC0yNS41OCA1Ljc3LTI1LjIzLTIuNTkuMDgtMiAxLjM3LTM3LjQyIDEuMS0zOS40My0xNC4xIDcuNDQtMTQuNDIgNDAuMjEgNi40NCA0OC44YTE3LjkgMTcuOSAwIDAgMCAyMi4zOS03LjA3YzQuOTEtNy43NiA2Ljg0LTI5LjQ3LTUuNDMtMzlhMi41MyAyLjUzIDAgMCAxLS4zNi4xMnptLTEyLjI4LTE5OGMtOS44MyAwLTkuNzMgMTQuNzUtLjA3IDE0Ljg3czEwLjEtMTQuODguMDctMTQuOTF6bS04MC4xNSAxMDMuODNjMCAxLjguNDEgMi40IDIuMTcgMi41OCAxMy42MiAxLjM5IDEyLjUxLTExIDEyLjE2LTEzLjM2LTEuNjktMTEuMjItMTQuMzgtMTAuMi0xNC4zNS03LjgxLjA1IDQuNS0uMDMgMTMuNjguMDIgMTguNTl6bTIxMi4zMiA2LjRsLTYuMS0xNS44NGMtMi4xNiA1LjQ4LTQuMTYgMTAuNTctNi4yMyAxNS44NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3NzM0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMybDM0LjkgMzk1LjhMMTkyIDQ4MGwxNTcuMS01Mi4yTDM4NCAzMkgwem0zMTMuMSA4MGwtNC44IDQ3LjNMMTkzIDIwOC42bC0uMy4xaDExMS41bC0xMi44IDE0Ni42LTk4LjIgMjguNy05OC44LTI5LjItNi40LTczLjloNDguOWwzLjIgMzguMyA1Mi42IDEzLjMgNTQuNy0xNS40IDMuNy02MS42LTE2Ni4zLS41di0uMWwtLjIuMS0zLjYtNDYuM0wxOTMuMSAxNjJsNi41LTIuN0g3Ni43TDcwLjkgMTEyaDI0Mi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDc3MzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAzMmwtNjQgMzY4LTIyMy4zIDgwTDAgNDAwbDE5LjYtOTQuOGg4MmwtOCA0MC42TDIxMCAzOTAuMmwxMzQuMS00NC40IDE4LjgtOTcuMUgyOS41bDE2LTgyaDMzMy43bDEwLjUtNTIuN0g1Ni4zbDE2LjMtODJINDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDdXR0bGVmaXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0NCAzMDUuNWMtMTcuNSAzMS42LTU3LjQgNTQuNS05NiA1NC41LTU2LjYgMC0xMDQtNDcuNC0xMDQtMTA0czQ3LjQtMTA0IDEwNC0xMDRjMzguNiAwIDc4LjUgMjIuOSA5NiA1NC41IDEzLjctNTAuOSA0MS43LTkzLjMgODctMTE3LjhDMzg1LjcgMzkuMSAzMjAuNSA4IDI0OCA4IDExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OGM3Mi41IDAgMTM3LjctMzEuMSAxODMtODAuNy00NS4zLTI0LjUtNzMuMy02Ni45LTg3LTExNy44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEQW5kREJleW9uZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuOCAyNDEuNWMxMy44IDAgMjEtMTAuMSAyNC44LTE3LjktMS0xLjEtNS00LjItNy40LTYuNi0yLjQgNC4zLTguMiAxMC43LTEzLjkgMTAuNy0xMC4yIDAtMTUuNC0xNC43LTMuMi0yNi42LS41LS4yLTQuMy0xLjgtOCAyLjQgMC0zIDEtNS4xIDIuMS02LjYtMy41IDEuMy05LjggNS42LTExLjQgNy45LjItNS44IDEuNi03LjUuNi05bC0uMi0uMnMtOC41IDUuNi05LjMgMTQuN2MwIDAgMS4xLTEuNiAyLjEtMS45LjYtLjMgMS4zIDAgLjYgMS45LS4yLjYtNS44IDE1LjcgNS4xIDI2LS42LTEuNi0xLjktNy42IDIuNC0xLjktLjMuMSA1LjggNy4xIDE1LjcgNy4xem01Mi40LTIxLjFjMC00LTQuOS00LjQtNS42LTQuNSAyIDMuOS45IDcuNS4yIDkgMi41LS40IDUuNC0xLjYgNS40LTQuNXptMTAuMyA1LjJjMC02LjQtNi4yLTExLjQtMTMuNS0xMC43IDggMS4zIDUuNiAxMy44LTUgMTEuNCAzLjctMi42IDMuMi05LjktMS4zLTEyLjUgMS40IDQuMi0zIDguMi03LjQgNC42LTIuNC0xLjktOC02LjYtMTAuNi04LjYtMi40LTIuMS01LjUtMS02LjYtMS44LTEuMy0xLjEtLjUtMy44LTIuMi01LTEuNi0uOC0zLS4zLTQuOC0xLTEuNi0uNi0yLjctMS45LTIuNi0zLjUtMi41IDQuNCAzLjQgNi4zIDQuNSA4LjUgMSAxLjktLjggNC44IDQgOC41IDE0LjggMTEuNiA5LjEgOCAxMC40IDE4LjEuNiA0LjMgNC4yIDYuNyA2LjQgNy40LTIuMS0xLjktMi45LTYuNCAwLTkuMyAwIDEzLjkgMTkuMiAxMy4zIDIzLjEgNi40LTIuNCAxLjEtNy0uMi05LTEuOSA3LjcgMSAxNC4yLTQuMSAxNC42LTEwLjZ6bS0zOS40LTE4LjRjMiAuOCAxLjYuNyA2LjQgNC41IDEwLjItMjQuNSAyMS43LTE1LjcgMjItMTUuNSAyLjItMS45IDkuOC0zLjggMTMuOC0yLjctMi40LTIuNy03LjUtNi4yLTEzLjMtNi4yLTQuNyAwLTcuNCAyLjItOCAxLjMtLjgtMS40IDMuMi0zLjQgMy4yLTMuNC01LjQuMi05LjYgNi43LTExLjIgNS45LTEuMS0uNSAxLjQtMy43IDEuNC0zLjctNS4xIDIuOS05LjMgOS4xLTEwLjIgMTMgNC42LTUuOCAxMy44LTkuOCAxOS43LTktMTAuNS41LTE5LjUgOS43LTIzLjggMTUuOHptMjQyLjUgNTEuOWMtMjAuNyAwLTQwIDEuMy01MC4zIDIuMWw3LjQgOC4ydjc3LjJsLTcuNCA4LjJjMTAuNC44IDMwLjkgMi4xIDUxLjYgMi4xIDQyLjEgMCA1OS4xLTIwLjcgNTkuMS00OC45IDAtMjkuMy0yMy4yLTQ4LjktNjAuNC00OC45em0tMTUuMSA3NS42di01My4zYzMwLjEtMy4zIDQ2LjggMy44IDQ2LjggMjYuMyAwIDI1LjYtMjEuNCAzMC4yLTQ2LjggMjd6TTMwMS42IDE4MWMtMS0zLjQtLjItNi45IDEuMS05LjQgMSAzIDIuNiA2LjQgNy41IDktLjUtMi40LS4yLTUuNi41LTgtMS40LTUuNCAyLjEtOS45IDYuNC05LjkgNi45IDAgOC41IDguOCA0LjcgMTQuNCAyLjEgMy4yIDUuNSA1LjYgNy43IDcuOCAzLjItMy43IDUuNS05LjUgNS41LTEzLjggMC04LjItNS41LTE1LjktMTYuNy0xNi41LTIwLS45LTIwLjIgMTYuNi0yMCAxOC45LjUgNS4yIDMuNCA3LjggMy4zIDcuNXptLS40IDZjLS41IDEuOC03IDMuNy0xMC4yIDYuOSA0LjgtMSA3LS4yIDcuOCAxLjguNSAxLjQtLjIgMy40LS41IDUuNiAxLjYtMS44IDctNS41IDExLTYuMi0xLS4zLTMuNC0uOC00LjMtLjggMi45LTMuNCA5LjMtNC41IDEyLjgtMy43LTIuMi0uMi02LjcgMS4xLTguNSAyLjYgMS42LjMgMyAuNiA0LjMgMS4xLTIuMS44LTQuOCAzLjQtNS44IDYuMSA3LTUgMTMuMSA1LjIgNyA4LjIuOC4yIDIuNyAwIDMuNS0uNS0uMyAxLjEtMS45IDMtMyAzLjQgMi45IDAgNy0xLjkgOC4yLTQuNiAwIDAtMS44LjYtMi42LS4ycy4zLTQuMy4zLTQuM2MtMi4zIDIuOS0zLjQtMS4zLTEuMy00LjItMS0uMy0zLjUtLjYtNC42LS41IDMuMi0xLjEgMTAuNC0xLjggMTEuMi0uMy42IDEuMS0xIDMuNC0xIDMuNCA0LS41IDguMyAxLjEgNi43IDUuMSAyLjktMS40IDUuNS01LjkgNC44LTEwLjQtLjMgMS0xLjYgMi40LTIuOSAyLjcuMi0xLjQtMS0yLjItMS45LTIuNiAxLjctOS42LTE0LjYtMTQuMi0xNC4xLTIzLjktMSAxLjMtMS44IDUtLjggNy4xIDIuNyAzLjIgOC43IDYuNyAxMC4xIDEyLjItMi42LTYuNC0xNS4xLTExLjQtMTQuNi0yMC4yLTEuNiAxLjYtMi42IDcuOC0xLjMgMTEgMi40IDEuNCA0LjUgMy44IDQuOCA2LjEtMi4yLTUuMS0xMS40LTYuMS0xMy45LTEyLjItLjYgMi4yLS4zIDUgMSA2LjcgMCAwLTIuMi0uOC03LS42IDEuNy42IDUuMSAzLjUgNC44IDUuMnptMjUuOSA3LjRjLTIuNyAwLTMuNS0yLjEtNC4yLTQuMyAzLjMgMS4zIDQuMiA0LjMgNC4yIDQuM3ptMzguOSAzLjdsLTEtLjZjLTEuMS0xLTIuOS0xLjQtNC43LTEuNC0yLjkgMC01LjggMS4zLTcuNSAzLjQtLjguOC0xLjQgMS44LTIuMSAyLjZ2MTUuN2MzLjUgMi42IDcuMS0yLjkgMy03LjIgMS41LjMgNC42IDIuNyA1LjEgMy4yIDAgMCAyLjYtLjUgNS0uNSAyLjEgMCAzLjkuMyA1LjYgMS4xVjE5NmMtMS4xLjUtMi4yIDEtMi43IDEuNHpNNzkuOSAzMDUuOWMxNy4yLTQuNiAxNi4yLTE4IDE2LjItMTkuOSAwLTIwLjYtMjQuMS0yNS0zNy0yNUgzbDguMyA4LjZ2MjkuNUgwbDExLjQgMTQuNlYzNDZMMyAzNTQuNmM2MS43IDAgNzMuOCAxLjUgODYuNC01LjkgNi43LTQgOS45LTkuOCA5LjktMTcuNiAwLTUuMSAyLjYtMTguOC0xOS40LTI1LjJ6bS00MS4zLTI3LjVjMjAgMCAyOS42LS44IDI5LjYgOS4xdjNjMCAxMi4xLTE5IDguOC0yOS42IDguOHptMCA1OS4yVjMxNWMxMi4yIDAgMzIuNy0yLjMgMzIuNyA4Ljh2NC41aC4yYzAgMTEuMi0xMi41IDkuMy0zMi45IDkuM3ptMTAxLjItMTkuM2wyMy4xLjJ2LS4ybDE0LjEtMjEuMmgtMzcuMnYtMTQuOWg1Mi40bC0xNC4xLTIxdi0uMmwtNzMuNS4yIDcuNCA4LjJ2NzcuMWwtNy40IDguMmg4MS4ybDE0LjEtMjEuMi02MC4xLjJ6bTIxNC43LTYwLjFjLTczLjkgMC03Ny41IDk5LjMtLjMgOTkuMyA3Ny45IDAgNzQuMS05OS4zLjMtOTkuM3ptLS4zIDc3LjVjLTM3LjQgMC0zNi45LTU1LjMuMi01NS4zIDM2LjguMSAzOC44IDU1LjMtLjIgNTUuM3ptLTkxLjMtOC4zbDQ0LjEtNjYuMmgtNDEuN2w2LjEgNy4yLTIwLjUgMzcuMmgtLjNsLTIxLTM3LjIgNi40LTcuMmgtNDQuOWw0NC4xIDY1LjguMiAxOS40LTcuNyA4LjJoNDIuNmwtNy4yLTguMnptLTI4LjQtMTUxLjNjMS42IDEuMyAyLjkgMi40IDIuOSA2LjZ2MzguOGMwIDQuMi0uOCA1LjMtMi43IDYuNC0uMS4xLTcuNSA0LjUtNy45IDQuNmgzNS4xYzEwIDAgMTcuNC0xLjUgMjYtOC42LS42LTUgLjItOS41LjgtMTIgMC0uMi0xLjggMS40LTIuNyAzLjUgMC01LjcgMS42LTE1LjQgOS42LTIwLjUtLjEgMC0zLjctLjgtOSAxLjEgMi0zLjEgMTAtNy45IDEwLjQtNy45LTguMi0yNi0zOC0yMi45LTMyLjItMjIuOS0zMC45IDAtMzIuNi4zLTM5LjktNCAuMS44LjUgOC4yIDkuNiAxNC45em0yMS41IDUuNWM0LjYgMCAyMy4xLTMuMyAyMy4xIDE3LjMgMCAyMC43LTE4LjQgMTcuMy0yMy4xIDE3LjN6bTIyOC45IDc5LjZsNyA4LjNWMzEyaC0uM2MtNS40LTE0LjQtNDIuMy00MS41LTQ1LjItNTAuOWgtMzEuNmw3LjQgOC41djc2LjlsLTcuMiA4LjNoMzlsLTcuNC04LjJ2LTQ3LjRoLjNjMy43IDEwLjYgNDQuNSA0Mi45IDQ4LjUgNTUuNmgyMS4zdi04NS4ybDcuNC04LjN6bS0xMDYuNy05Ni4xYy0zMi4yIDAtMzIuOC4yLTM5LjktNCAuMS43LjUgOC4zIDkuNiAxNC45IDMuMSAyIDIuOSA0LjMgMi45IDkuNSAxLjgtMS4xIDMuOC0yLjIgNi4xLTMtMS4xIDEuMS0yLjcgMi43LTMuNSA0LjUgMS0xLjEgNy41LTUuMSAxNC42LTMuNS0xLjYuMy00IDEuMS02LjEgMi45LjEgMCAyLjEtMS4xIDcuNS0uM3YtNC4zYzQuNyAwIDIzLjEtMy40IDIzLjEgMTcuMyAwIDIwLjUtMTguNSAxNy4zLTE5LjcgMTcuMyA1LjcgNC40IDUuOCAxMiAyLjIgMTYuM2guM2MzMy40IDAgMzYuNy0yNy4zIDM2LjctMzQgMC0zLjgtMS4xLTMyLTMzLjgtMzMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhREFuZEQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODIuNSA5OC45Yy0uNi0xNy4yIDItMzMuOCAxMi43LTQ4LjIuMyA3LjQgMS4yIDE0LjUgNC4yIDIxLjYgNS45LTI3LjUgMTkuNy00OS4zIDQyLjMtNjUuNS0xLjkgNS45LTMuNSAxMS44LTMgMTcuNyA4LjctNy40IDE4LjgtMTcuOCA0NC40LTIyLjcgMTQuNy0yLjggMjkuNy0yIDQyLjEgMSAzOC41IDkuMyA2MSAzNC4zIDY5LjcgNzIuMyA1LjMgMjMuMS43IDQ1LTguMyA2Ni40LTUuMiAxMi40LTEyIDI0LjQtMjAuNyAzNS4xLTItMS45LTMuOS0zLjgtNS44LTUuNi00Mi44LTQwLjgtMjYuOC0yNS4yLTM3LjQtMzcuNC0xLjEtMS4yLTEtMi4yLS4xLTMuNiA4LjMtMTMuNSAxMS44LTI4LjIgMTAtNDQtMS4xLTkuOC00LjMtMTguOS0xMS4zLTI2LjItMTQuNS0xNS4zLTM5LjItMTUtNTMuNS42LTExLjQgMTIuNS0xNC4xIDI3LjQtMTAuOSA0My42LjIgMS4zLjQgMi43IDAgMy45LTMuNCAxMy43LTQuNiAyNy42LTIuNSA0MS42LjEuNS4xIDEuMS4xIDEuNiAwIC4zLS4xLjUtLjIgMS4xLTIxLjgtMTEtMzYtMjguMy00My4yLTUyLjItOC4zIDE3LjgtMTEuMSAzNS41LTYuNiA1NC4xLTE1LjYtMTUuMi0yMS4zLTM0LjMtMjItNTUuMnptNDY5LjYgMTIzLjJjLTExLjYtMTEuNi0yNS0yMC40LTQwLjEtMjYuNi0xMi44LTUuMi0yNi03LjktMzkuOS03LjEtMTAgLjYtMTkuNiAzLjEtMjkgNi40LTIuNS45LTUuMSAxLjYtNy43IDIuMi00LjkgMS4yLTcuMy0zLjEtNC43LTYuOCAzLjItNC42IDMuNC00LjIgMTUtMTIgLjYtLjQgMS4yLS44IDIuMi0xLjVoLTIuNWMtLjYgMC0xLjIuMi0xLjkuMy0xOS4zIDMuMy0zMC43IDE1LjUtNDguOSAyOS42LTEwLjQgOC4xLTEzLjggMy44LTEyLS41IDEuNC0zLjUgMy4zLTYuNyA1LjEtMTAgMS0xLjggMi4zLTMuNCAzLjUtNS4xLS4yLS4yLS41LS4zLS43LS41LTI3IDE4LjMtNDYuNyA0Mi40LTU3LjcgNzMuMy4zLjMuNy42IDEgLjkuMy0uNi41LTEuMi45LTEuNyAxMC40LTEyLjEgMjIuOC0yMS44IDM2LjYtMjkuOCAxOC4yLTEwLjYgMzcuNS0xOC4zIDU4LjctMjAuMiA0LjMtLjQgOC43LS4xIDEzLjEtLjEtMS44LjctMy41LjktNS4zIDEuMS0xOC41IDIuNC0zNS41IDktNTEuNSAxOC41LTMwLjIgMTcuOS01NC41IDQyLjItNzUuMSA3MC40LS4zLjQtLjQuOS0uNyAxLjMgMTQuNSA1LjMgMjQgMTcuMyAzNi4xIDI1LjYuMi0uMS4zLS4yLjQtLjRsMS4yLTIuN2MxMi4yLTI2LjkgMjctNTIuMyA0Ni43LTc0LjUgMTYuNy0xOC44IDM4LTI1LjMgNjIuNS0yMCA1LjkgMS4zIDExLjQgNC40IDE3LjIgNi44IDIuMy0xLjQgNS4xLTMuMiA4LTQuNyA4LjQtNC4zIDE3LjQtNyAyNi43LTkgMTQuNy0zLjEgMjkuNS00LjkgNDQuNS0xLjN2LS41Yy0uNS0uNC0xLjItLjgtMS43LTEuNHpNMzE2LjcgMzk3LjZjLTM5LjQtMzMtMjIuOC0xOS41LTQyLjctMzUuNi0uOC45IDAtLjItMS45IDMtMTEuMiAxOS4xLTI1LjUgMzUuMy00NCA0Ny42LTEwLjMgNi44LTIxLjUgMTEuOC0zNC4xIDExLjgtMjEuNiAwLTM4LjItOS41LTQ5LjQtMjcuOC0xMi0xOS41LTEzLjMtNDAuNy04LjItNjIuNiA3LjgtMzMuOCAzMC4xLTU1LjIgMzguNi02NC4zLTE4LjctNi4yLTMzIDEuNy00Ni40IDEzLjkuOC0xMy45IDQuMy0yNi4yIDExLjgtMzcuMy0yNC4zIDEwLjYtNDUuOSAyNS02NC44IDQzLjktLjMtNS44IDUuNC00My43IDUuNi00NC43LjMtMi43LS42LTUuMy0zLTcuNC0yNC4yIDI0LjctNDQuNSA1MS44LTU2LjEgODQuNiA3LjQtNS45IDE0LjktMTEuNCAyMy42LTE2LjItOC4zIDIyLjMtMTkuNiA1Mi44LTcuOCAxMDEuMSA0LjYgMTkgMTEuOSAzNi44IDI0LjEgNTIuMyAyLjkgMy43IDYuMyA2LjkgOS41IDEwLjMuMi0uMi40LS4zLjYtLjUtMS40LTctMi4yLTE0LjEtMS41LTIxLjkgMi4yIDMuMiAzLjkgNiA1LjkgOC42IDEyLjYgMTYgMjguNyAyNy40IDQ3LjIgMzUuNiAyNSAxMS4zIDUxLjEgMTMuMyA3Ny45IDguNiA1NC45LTkuNyA5MC43LTQ4LjYgMTE2LTk4LjggMS0xLjguNi0yLjktLjktNC4yem0xNzItNDYuNGMtOS41LTMuMS0yMi4yLTQuMi0yOC43LTIuOSA5LjkgNCAxNC4xIDYuNiAxOC44IDEyIDEyLjYgMTQuNCAxMC40IDM0LjctNS40IDQ1LjYtMTEuNyA4LjEtMjQuOSAxMC41LTM4LjkgOS4xLTEuMi0uMS0yLjMtLjQtMy0uNiAyLjgtMy43IDYtNyA4LjEtMTAuOCA5LjQtMTYuOCA1LjQtNDIuMS04LjctNTYuMS0yLjEtMi4xLTQuNi0zLjktNy01LjktLjMgMS4zLS4xIDIuMS4xIDIuOCA0LjIgMTYuNi04LjEgMzIuNC0yNC44IDMxLjgtNy42LS4zLTEzLjktMy44LTE5LjYtOC41LTE5LjUtMTYuMS0zOS4xLTMyLjEtNTguNS00OC4zLTUuOS00LjktMTIuNS04LjEtMjAuMS04LjctNC42LS40LTkuMy0uNi0xMy45LS45LTUuOS0uNC04LjgtMi44LTEwLjQtOC40LS45LTMuNC0xLjUtNi44LTIuMi0xMC4yLTEuNS04LjEtNi4yLTEzLTE0LjMtMTQuMi00LjQtLjctOC45LTEtMTMuMy0xLjUtMTMtMS40LTE5LjgtNy40LTIyLjYtMjAuMy01IDExLTEuNiAyMi40IDcuMyAyOS45IDQuNSAzLjggOS4zIDcuMyAxMy44IDExLjIgNC42IDMuOCA3LjQgOC43IDcuOSAxNC44LjQgNC43LjggOS41IDEuOCAxNC4xIDIuMiAxMC42IDguOSAxOC40IDE3IDI1LjEgMTYuNSAxMy43IDMzIDI3LjMgNDkuNSA0MS4xIDE3LjkgMTUgMTMuOSAzMi44IDEzIDU2LS45IDIyLjkgMTIuMiA0Mi45IDMzLjUgNTEuMiAxIC40IDIgLjYgMy42IDEuMS0xNS43LTE4LjItMTAuMS00NC4xLjctNTIuMy4zIDIuMi40IDQuMy45IDYuNCA5LjQgNDQuMSA0NS40IDY0LjIgODUgNTYuOSAxNi0yLjkgMzAuNi04LjkgNDIuOS0xOS44IDItMS44IDMuNy00LjEgNS45LTYuNS0xOS4zIDQuNi0zNS44LjEtNTAuOS0xMC42LjctLjMgMS4zLS4zIDEuOS0uMyAyMS4zIDEuOCA0MC42LTMuNCA1Ny0xNy40IDE5LjUtMTYuNiAyNi42LTQyLjkgMTcuNC02Ni04LjMtMjAuMS0yMy42LTMyLjMtNDMuOC0zOC45ek05OS40IDE3OS4zYy01LjMtOS4yLTEzLjItMTUuNi0yMi4xLTIxLjMgMTMuNy0uNSAyNi42LjIgMzkuNiAzLjctNy0xMi4yLTguNS0yNC43LTUtMzguNyA1LjMgMTEuOSAxMy43IDIwLjEgMjMuNiAyNi44IDE5LjcgMTMuMiAzNS43IDE5LjYgNDYuNyAzMC4yIDMuNCAzLjMgNi4zIDcuMSA5LjYgMTAuOS0uOC0yLjEtMS40LTQuMS0yLjItNi01LTEwLjYtMTMtMTguNi0yMi42LTI1LTEuOC0xLjItMi44LTIuNS0zLjQtNC41LTMuMy0xMi41LTMtMjUuMS0uNy0zNy42IDEtNS41IDIuOC0xMC45IDQuNS0xNi4zLjgtMi40IDIuMy00LjYgNC02LjYuNiA2LjkgMCAyNS41IDE5LjYgNDYgMTAuOCAxMS4zIDIyLjQgMjEuOSAzMy45IDMyLjcgOSA4LjUgMTguMyAxNi43IDI1LjUgMjYuOCAxLjEgMS42IDIuMiAzLjMgMy44IDQuNy01LTEzLTE0LjItMjQuMS0yNC4yLTMzLjgtOS42LTkuMy0xOS40LTE4LjQtMjkuMi0yNy40LTMuMy0zLTQuNi02LjctNS4xLTEwLjktMS4yLTEwLjQgMC0yMC42IDQuMy0zMC4yLjUtMSAxLjEtMiAxLjktMy4zLjUgNC4yLjYgNy45IDEuNCAxMS42IDQuOCAyMy4xIDIwLjQgMzYuMyA0OS4zIDYzLjUgMTAgOS40IDE5LjMgMTkuMiAyNS42IDMxLjYgNC44IDkuMyA3LjMgMTkgNS43IDI5LjYtLjEuNi41IDEuNyAxLjEgMiA2LjIgMi42IDEwIDYuOSA5LjcgMTQuMyA3LjctMi42IDEyLjUtOCAxNi40LTE0LjUgNC4yIDIwLjItOS4xIDUwLjMtMjcuMiA1OC43LjQtNC41IDUtMjMuNC0xNi41LTI3LjctNi44LTEuMy0xMi44LTEuMy0yMi45LTIuMSA0LjctOSAxMC40LTIwLjYuNS0yMi40LTI0LjktNC42LTUyLjggMS45LTU3LjggNC42IDguMi40IDE2LjMgMSAyMy41IDMuMy0yIDYuNS00IDEyLjctNS44IDE4LjktMS45IDYuNSAyLjEgMTQuNiA5LjMgOS42IDEuMi0uOSAyLjMtMS45IDMuMy0yLjctMy4xIDE3LjktMi45IDE1LjktMi44IDE4LjMuMyAxMC4yIDkuNSA3LjggMTUuNyA3LjMtMi41IDExLjgtMjkuNSAyNy4zLTQ1LjQgMjUuOCA3LTQuNyAxMi43LTEwLjMgMTUuOS0xNy45LTYuNS44LTEyLjkgMS42LTE5LjIgMi40bC0uMy0uOWM0LjctMy40IDgtNy44IDEwLjItMTMuMSA4LjctMjEuMS0zLjYtMzgtMjUtMzkuOS05LjEtLjgtMTcuOC44LTI1LjkgNS41IDYuMi0xNS42IDE3LjItMjYuNiAzMi42LTM0LjUtMTUuMi00LjMtOC45LTIuNy0yNC42LTYuMyAxNC42LTkuMyAzMC4yLTEzLjIgNDYuNS0xNC42LTUuMi0zLjItNDguMS0zLjYtNzAuMiAyMC45IDcuOSAxLjQgMTUuNSAyLjggMjMuMiA0LjItMjMuOCA3LTQ0IDE5LjctNjIuNCAzNS42IDEuMS00LjggMi43LTkuNSAzLjMtMTQuMy42LTQuNS44LTkuMi4xLTEzLjYtMS41LTkuNC04LjktMTUuMS0xOS43LTE2LjMtNy45LS45LTE1LjYuMS0yMy4zIDEuMy0uOS4xLTEuNy4zLTIuOSAwIDE1LjgtMTQuOCAzNi0yMS43IDUzLjEtMzMuNSA2LTQuNSA2LjgtOC4yIDMtMTQuOXptMTI4LjQgMjYuOGMzLjMgMTYgMTIuNiAyNS41IDIzLjggMjQuMy00LjYtMTEuMy0xMi4xLTE5LjUtMjMuOC0yNC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEYWlseW1vdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTguOTMsMjY3YTQ4LjQsNDguNCwwLDAsMC0yNC4zNi02LjIxcS0xOS44MywwLTMzLjQ0LDEzLjI3dC0xMy42MSwzMy40MnEwLDIxLjE2LDEzLjI4LDM0LjZ0MzMuNDMsMTMuNDRxMjAuNSwwLDM0LjExLTEzLjc4VDMyMiwzMDcuNDdBNDcuMTMsNDcuMTMsMCwwLDAsMzE1LjksMjg0LDQ0LjEzLDQ0LjEzLDAsMCwwLDI5OC45MywyNjdaTTAsMzJWNDgwSDQ0OFYzMlpNMzc0LjcxLDQwNS4yNmgtNTMuMVYzODEuMzdoLS42N3EtMTUuNzksMjYuMi01NS43OCwyNi4yLTI3LjU2LDAtNDguODktMTMuMWE4OC4yOSw4OC4yOSwwLDAsMS0zMi45NC0zNS43N3EtMTEuNi0yMi42OC0xMS41OS01MC44OSwwLTI3LjU2LDExLjc2LTUwLjIyYTg5LjksODkuOSwwLDAsMSwzMi45My0zNS43OHEyMS4xOC0xMy4wOSw0Ny43Mi0xMy4xYTgwLjg3LDgwLjg3LDAsMCwxLDI5Ljc0LDUuMjFxMTMuMjgsNS4yMSwyNSwxN1YxNTNsNTUuNzktMTIuMDlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURhc2hjdWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNi42IDEwNEgxMTAuNGMtNTEuMSAwLTkxLjIgNDMuMy05MS4yIDkzLjVWNDI3YzAgNTAuNSA0MC4xIDg1IDkxLjIgODVoMjI3LjJjNTEuMSAwIDkxLjItMzQuNSA5MS4yLTg1VjBMMzI2LjYgMTA0ek0xNTMuOSA0MTYuNWMtMTcuNyAwLTMyLjQtMTUuMS0zMi40LTMyLjhWMjQwLjhjMC0xNy43IDE0LjctMzIuNSAzMi40LTMyLjVoMTQwLjdjMTcuNyAwIDMyIDE0LjggMzIgMzIuNXYxMjMuNWw1MS4xIDUyLjNIMTUzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURlYmlhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODAuMiAyNDUuNmMzLTcuNiA1LjUtMTQgNS4yLTI0LjRsLTQuMyA5YzQuNC0xMy4yIDQtMjcuMSAzLjYtNDAuNGMtLjItNi0uMy0xMS44IDAtMTcuNGwtMS44LS41Yy0xLjUtNDUuMi00MC42LTkzLjEtNzUuMy0xMDkuNGMtMzAtMTMuOC03Ni4xLTE2LjItOTcuMy01LjhjMS4zLTEuMSA0LjItMiA2LjgtMi43bC4zLS4xYzMuMy0xIDYtMS43IDQtMi45Yy0xOS4yIDEuOS0yNC45IDUuNS0zMS4xIDkuNGwtLjEgMGMtNC42IDIuOS05LjUgNi0yMC4zIDguN2MtMy41IDMuNCAxLjcgMiA1LjggLjlsMCAwYzQuMS0xLjEgNy4yLTEuOS0uMSAyLjRjLTMuNSAxLTYuNiAxLjMtOS42IDEuNmwtLjEgMGMtOC4zIC44LTE1LjggMS42LTMwLjcgMTdjLjggMS4zIDMuNC0uMiA1LjMtMS4zbC4xLS4xYzIuMy0xLjQgMy40LTItMS43IDQuNGMtMTkuMS0yLjQtNjAuMyA0My43LTY5LjEgNTlsNC42IC44Yy0zLjIgOC02LjggMTQuOC0xMCAyMC44Yy00LjMgOC4xLTcuOSAxNC45LTguNyAyMS4zYy0uMyA1LjEtMSAxMS0xLjcgMTcuM2wwIDBjLS4xIDEtLjIgMi0uMyAzbC0uMSAuNmMtMyAyNy4zLTYuNyA2MC44IDMuOSA3M2wtMS4zIDEzYy42IDEuMiAxLjEgMi4zIDEuNiAzLjVjLjIgLjQgLjQgLjggLjUgMS4xbDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMGMxIDIuMSAyIDQuMiAzLjMgNi4ybC0zIC4yYzcgMjIuMSAxMC44IDIyLjUgMTUuMSAyMi45bDAgMGM0LjQgLjQgOS4zIC45IDE4LjcgMjQuMmMtMi43LS45LTUuNS0xLjktOS40LTcuMmMtLjUgNC4xIDUuOCAxNi4zIDEzLjEgMjUuOGwtMy4xIDMuNmMyLjEgMy43IDQuOCA2LjIgNy42IDguOGwwIDAgMCAwYzEgLjkgMi4xIDEuOSAzLjEgMi45Yy0xMS45LTYuNSAzLjIgMTMuNyAxMS45IDI1LjJjLjggMS4xIDEuNSAyIDIuMiAyLjlsMCAwIDAgMCAwIDAgMCAwIDAgMGMxLjQgMS45IDIuNSAzLjQgMi45IDQuMWwyLjQtNC4yYy0uMyA2LjEgNC4zIDEzLjkgMTMuMSAyNC43bDcuMy0uM2MzIDYgMTQgMTYuNyAyMC43IDE3LjJsLTQuNCA1LjhjOC4xIDIuNiAxMC4zIDQuMyAxMi43IDYuMmMyLjYgMi4xIDUuNCA0LjMgMTYuMSA4LjFsLTQuMi03LjRjMy41IDMgNi4yIDUuOSA4LjggOC43bC4xIC4xYzUuMiA1LjYgOS45IDEwLjYgMTkuNyAxNS4zYzEwLjcgMy43IDE2LjYgNC43IDIyLjcgNS44Yy4zIDAgLjYgLjEgLjkgLjFjNS40IC44IDExLjIgMS44IDIwLjggNC41Yy0xLjEtLjEtMi4yLS4xLTMuMy0uMWgwYy0yLjMtLjEtNC43LS4xLTctLjFsMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwYy0xNC40LS4yLTI5LjItLjQtNDIuNy01LjJDMTA3LjggNDgwLjUgMTkuNSAzNjcuMiAyNiAyNTAuNmMtLjYtOS45LS4zLTIwLjkgMC0zMC43Yy40LTEzLjUgLjctMjQuOC0xLjYtMjguM2wxLTMuMWM1LjMtMTcuNCAxMS43LTM4LjIgMjMuOC02Mi44bC0uMS0uMnYtLjFjLjQgLjQgMy40IDMuNCA4LjgtNS44Yy44LTEuOCAxLjYtMy43IDIuNC01LjZjLjUtMS4xIC45LTIuMiAxLjQtMy4yYzIuNS02LjEgNS4xLTEyLjMgOC40LTE3LjlsMi42LS42YzEuNy0xMC4xIDE3LTIzLjggMjkuOC0zNS4ybDEuMS0xYzUuNy01LjEgMTAuNy05LjcgMTMuNi0xMy4xbC43IDQuNGMxNy0xNS45IDQ0LjYtMjcuNSA2NS42LTM2LjRsLjUtLjJjNC44LTIgOS4zLTMuOSAxMy4zLTUuN2MtMy40IDMuOCAyLjIgMi43IDEwIDFjNC44LTEgMTAuNC0yLjEgMTUuMy0yLjRsLTMuOSAyLjFjLTIuNyAxLjQtNS40IDIuOC04IDQuNmM4LjEtMiAxMS43LTEuNCAxNS43LS44bC4zIDBjMy41IC42IDcuMyAxLjIgMTQuNiAuMmMtNS42IC44LTEyLjMgMy0xMS4yIDMuOGM3LjkgLjkgMTIuOC0uMSAxNy4yLTFsLjIgMGM1LjUtMS4xIDEwLjMtMiAxOS4zIC45bC0xLTQuOGM3LjMgMi42IDEyLjcgNC4zIDE3LjUgNS44bC41IC4xYzEwIDMgMTcuNiA1LjMgMzQuMiAxNC4xYzMuMiAuMiA1LjMtLjUgNy40LTEuMmwuMSAwYzMuNi0xLjEgNy0yLjEgMTUuMiAxLjJjLjMgLjUgLjUgMSAuNyAxLjRjLjEgLjIgLjIgLjUgLjMgLjdsMCAuMWMxIDIuNiAxLjggNC42IDE0LjYgMTIuMWMxLjctLjctMi43LTQuNy02LjQtOC4yYzAgMCAwIDAtLjEtLjFjLS4yLS4xLS4zLS4zLS41LS40YzMyLjIgMTcuMyA2Ny4zIDU0LjEgNzggOTMuNWMtNi0xMS4xLTUuMi01LjUtNC4zIC41Yy42IDQgMS4yIDguMS0uMiA3LjVjNC41IDEyLjEgOC4xIDI0LjUgMTAuNCAzNy40bC0uOC0yLjktLjEtLjNjLTMuMy0xMS45LTkuNi0zNC4zLTE5LjktNDkuM2MtLjQgNC4zLTIuOCAzLjktNS4yIDMuNWwtLjEgMCAwIDBjLTMuMy0uNi02LjItMS4xLTEuOSAxMi42YzIuNiAzLjggMy4xIDIuNCAzLjUgMS4xbDAgMGMuNS0xLjUgLjktMi43IDQuNyA1LjJjLjEgNC4xIDEgOC4yIDIuMSAxMi43bDAgMCAwIDAgLjEgLjZjLjEgLjMgLjEgLjUgLjIgLjhsLjEgLjZjLjYgMi42IDEuMyA1LjQgMS44IDguNGMtMS4xLS4yLTIuMy0yLjItMy40LTQuMmMtMS40LTIuNC0yLjgtNC43LTMuNy0zLjJjMi40IDExLjUgNi41IDE3LjQgOCAxOC4zYy0uMyAuNi0uNiAuNy0xLjEgLjdjLS44IDAtMS44IC4xLTEuOSA1LjNjLjcgMTMuNyAzLjMgMTIuNSA1LjMgMTEuNmwwIDBjLjYtLjMgMS4yLS42IDEuNy0uNGMtLjYgMi41LTEuNiA1LjEtMi43IDcuOWMtMi44IDcuMS02IDE1LjQtMy40IDI2LjFjLS44LTMtMi02LTMuMS04LjlsLS4xLS40Yy0uMi0uNS0uNC0xLS42LTEuNWwwIDBjLS4zLS44LS42LTEuNi0uOS0yLjNjLS42IDQuNC0uMyA3LjctLjEgMTAuNmMwIC4yIDAgLjUgMCAuN2MuNCA1LjMgLjcgMTAtMyAxOS45YzQuMy0xNC4yIDMuOC0yNi45LS4yLTIwLjhjMSAxMC45LTMuNyAyMC40LTggMjguOWwtLjEgLjJjLTMuNiA3LjEtNi44IDEzLjUtNS45IDE5LjNsLTUuMi03LjFjLTcuNSAxMC45LTcgMTMuMy02LjUgMTUuNWwwIC4xYy41IDEuOSAxIDMuOC0zLjQgMTAuOGMxLjctMi45IDEuMy0zLjYgMS00LjJsMCAwYy0uNC0uOC0uNy0xLjUgMS43LTUuMWMtMS42IC4xLTUuNSAzLjktMTAuMSA4LjVjLTMuOSAzLjktOC41IDguNC0xMi44IDExLjhjLTM3LjUgMzAuMS04Mi4zIDM0LTEyNS42IDE3LjhjLjItMS0uMi0yLjEtMy4xLTQuMWMtMzYuOC0yOC4yLTU4LjUtNTIuMS01MC45LTEwNy41YzIuMS0xLjYgMy42LTUuOCA1LjMtMTAuOGwwIDAgMCAwIC4yLS40IC4xLS4zIDAtLjFjMi45LTguNCA2LjUtMTguOCAxNC4zLTIzLjhjNy44LTE3LjMgMzEuMy0zMy4zIDU2LjQtMzMuN2MyNS42LTEuNCA0Ny4yIDEzLjcgNTguMSAyNy45Yy0xOS44LTE4LjQtNTIuMS0yNC03OS43LTEwLjRjLTI4LjIgMTIuNy00NSA0My44LTQyLjUgNzQuN2MuMy0uNCAuNi0uNiAuOS0uOGwwIDBzMCAwIDAgMGMwIDAgLjEtLjEgLjEtLjFsLjEtLjFjLjYtLjUgMS4xLS45IDEuNC0zLjNjLS45IDYwLjIgNjQuOCAxMDQuMyAxMTIuMSA4MmwuNiAxLjNjMTIuNy0zLjUgMTUuOS02LjUgMjAuMy0xMC43bC4xLS4xIDAgMGMyLjItMi4xIDQuNy00LjUgOC45LTcuM2MtLjMgLjctMS4zIDEuNy0yLjQgMi43Yy0yLjIgMi4xLTQuNiA0LjUtMS42IDQuNmM1LTEuMyAxOC41LTEzLjQgMjguNS0yMi4zbDAgMCAwIDBjLjYtLjUgMS4yLTEgMS43LTEuNWMxLjUtMS4zIDIuOC0yLjUgNC0zLjZsMCAwIC4zLS4zYzEuOS00LjIgMS42LTUuNiAxLjMtN2wwLS4xYy0uNC0xLjYtLjgtMy4zIDIuNC05LjZsNy4zLTMuN2MuOC0yLjEgMS41LTQuMSAyLjItNmMuMi0uNiAuNS0xLjIgLjctMS44bC0uNC0uMnpNMzQ5LjMgMzQuM2wtLjItLjEgLjIgLjEgMCAwek0yNDcuOCAzMzQuMWMtNi0zLTEzLjctOC45LTE0LjgtMTEuNGwtLjQgLjNjLS4zIC42LS41IDEuMy0uMiAyLjJjLTEyLjItNS43LTIzLjQtMTQuMy0zMi42LTI0LjljNC45IDcuMSAxMC4xIDE0LjEgMTcgMTkuNWMtNi45LTIuMy0xNS4xLTExLjgtMjEuNi0xOS4zbC0uMS0uMWMtNC4zLTUtNy45LTkuMS05LjctOS41YzE5LjggMzUuNSA4MC41IDYyLjMgMTEyLjMgNDljLTE0LjcgLjUtMzMuNCAuMy00OS45LTUuOHptNzkuMy0xMTkuN2wtLjEtLjJjLS41LTEuNS0xLjEtMy4xLTEuNy0zLjRjMS40LTUuOCA1LjQtMTAuNyA0LjQgNC42Yy0xIDMuOC0xLjggMS41LTIuNi0xem0tNC4yIDIyLjJjLTEuMyA3LjktNSAxNS41LTEwLjEgMjIuNWMuMi0yLTEuMi0yLjQtMi42LTIuOGwwIDBjLTIuOS0uOC01LjktMS42IDUuNi0xNi4xYy0uNSAxLjktMi4xIDQuNi0zLjcgNy4zbDAgMCAwIDAtLjMgLjRjLTMuNiA1LjktNi43IDExIDQgNC4zbDEtMS44YzIuNi00LjUgNS04LjggNi0xMy44aC4xem0tNTUuNiAzMy45YzcuMSAuNiAxNC4xIC42IDIxLTEuMWMtMi41IDIuNC01LjIgNC44LTguMyA3LjJjLTExLjEtMS43LTIxLjItNi0xMi43LTYuMXptLTkyLjYgMTEuNmMzLjYgNy4xIDYuNCAxMS41IDkgMTUuN2wuMSAuMmMyLjMgMy43IDQuNCA3LjEgNi44IDExLjdjLTUuMS00LjItOC43LTkuNS0xMi41LTE1bC0uMy0uNWMtMS40LTIuMS0yLjgtNC4yLTQuNC02LjJsMS4yLTUuOWguMXptNy41LTkuNmMxLjYgMy4zIDMuMiA2LjQgNS43IDkuMWwyLjYgNy43LTEuMy0yLjFjLTMuMi01LjMtNi4zLTEwLjYtOC0xNi43bC44IDEuNiAuMiAuNHptMjM4LjktNDEuNmMtMi4zIDE3LjQtNy43IDM0LjYtMTYgNTAuM2M3LjYtMTQuOSAxMi41LTMwLjkgMTQuOC00Ny4ybDEuMi0zLjF6TTM1LjYgMTEwLjZjLjQgLjggMS40IC41IDIuMyAuM2MxLjktLjUgMy42LS45LS4xIDcuNmMtLjUgLjMtMSAuNy0xLjUgMWwwIDAgMCAwYy0xLjQgLjktMi44IDEuOS0zLjkgM2MxLjktMy44IDMuNS03LjQgMy4yLTExLjl6TTI1LjMgMTUyLjNjLS43IDMuNy0xLjUgNy45LTMuNCAxMy45Yy4yLTEuOSAwLTMuNS0uMi00LjlsMC0uMWMtLjQtMy40LS43LTYuMyA0LjMtMTIuOGMtLjMgMS4yLS41IDIuNS0uNyAzLjh2LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURlZXplciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTEuNDYsMjQ0LjcxSDU3NlYxNzJINDUxLjQ2Wm0wLTE3My44OXY3Mi42N0g1NzZWNzAuODJabTAsMjc1LjA2SDU3NlYyNzMuMkg0NTEuNDZaTTAsNDQ3LjA5SDEyNC41NFYzNzQuNDJIMFptMTUwLjQ3LDBIMjc1VjM3NC40MkgxNTAuNDdabTE1MC41MiwwSDQyNS41M1YzNzQuNDJIMzAxWm0xNTAuNDcsMEg1NzZWMzc0LjQySDQ1MS40NlpNMzAxLDM0NS44OEg0MjUuNTNWMjczLjJIMzAxWm0tMTUwLjUyLDBIMjc1VjI3My4ySDE1MC40N1ptMC0xMDEuMTdIMjc1VjE3MkgxNTAuNDdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURlbGljaW91cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDYuNSA2OGMtLjQtMS41LS45LTMtMS40LTQuNS0uOS0yLjUtMi00LjgtMy4zLTcuMS0xLjQtMi40LTMtNC44LTQuNy02LjktMi4xLTIuNS00LjQtNC44LTYuOS02LjgtMS4xLS45LTIuMi0xLjctMy4zLTIuNS0xLjMtLjktMi42LTEuNy00LTIuNC0xLjgtMS0zLjYtMS44LTUuNS0yLjUtMS43LS43LTMuNS0xLjMtNS40LTEuNy0zLjgtMS03LjktMS41LTEyLTEuNUg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDQuMS41IDguMiAxLjUgMTIgMiA3LjcgNS44IDE0LjYgMTEgMjAuMyAxIDEuMSAyLjEgMi4yIDMuMyAzLjMgNS43IDUuMiAxMi42IDkgMjAuMyAxMSAzLjggMSA3LjkgMS41IDEyIDEuNWgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjLS4xLTQuMS0uNi04LjItMS42LTEyek00MTYgNDMyYzAgOC44LTcuMiAxNi0xNiAxNkgyMjRWMjU2SDMyVjgwYzAtOC44IDcuMi0xNiAxNi0xNmgxNzZ2MTkyaDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGVwbG95ZG9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4Mi4yIDEzNmg1MS43djIzOS42aC01MS43di0yMC43Yy0xOS44IDI0LjgtNTIuOCAyNC4xLTczLjggMTQuNy0yNi4yLTExLjctNDQuMy0zOC4xLTQ0LjMtNzEuOCAwLTI5LjggMTQuOC01Ny45IDQzLjMtNzAuOCAyMC4yLTkuMSA1Mi43LTEwLjYgNzQuOCAxMi45VjEzNnptLTY0LjcgMTYxLjhjMCAxOC4yIDEzLjYgMzMuNSAzMy4yIDMzLjUgMTkuOCAwIDMzLjItMTYuNCAzMy4yLTMyLjkgMC0xNy4xLTEzLjctMzMuMi0zMy4yLTMzLjItMTkuNiAwLTMzLjIgMTYuNC0zMy4yIDMyLjZ6TTE4OC41IDEzNmg1MS43djIzOS42aC01MS43di0yMC43Yy0xOS44IDI0LjgtNTIuOCAyNC4xLTczLjggMTQuNy0yNi4yLTExLjctNDQuMy0zOC4xLTQ0LjMtNzEuOCAwLTI5LjggMTQuOC01Ny45IDQzLjMtNzAuOCAyMC4yLTkuMSA1Mi43LTEwLjYgNzQuOCAxMi45VjEzNnptLTY0LjcgMTYxLjhjMCAxOC4yIDEzLjYgMzMuNSAzMy4yIDMzLjUgMTkuOCAwIDMzLjItMTYuNCAzMy4yLTMyLjkgMC0xNy4xLTEzLjctMzMuMi0zMy4yLTMzLjItMTkuNyAwLTMzLjIgMTYuNC0zMy4yIDMyLjZ6TTQ0OCA5NmMxNy41IDAgMzIgMTQuNCAzMiAzMnYyNTZjMCAxNy41LTE0LjQgMzItMzIgMzJINjRjLTE3LjUgMC0zMi0xNC40LTMyLTMyVjEyOGMwLTE3LjUgMTQuNC0zMiAzMi0zMmgzODRtMC0zMkg2NEMyOC44IDY0IDAgOTIuOCAwIDEyOHYyNTZjMCAzNS4yIDI4LjggNjQgNjQgNjRoMzg0YzM1LjIgMCA2NC0yOC44IDY0LTY0VjEyOGMwLTM1LjItMjguOC02NC02NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGVza3BybyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDUuOSA1MTJsMzEuMS0zOC40YzEyLjMtLjIgMjUuNi0xLjQgMzYuNS02LjYgMzguOS0xOC42IDM4LjQtNjEuOSAzOC4zLTYzLjgtLjEtNS0uOC00LjQtMjguOS0zNy40SDM2MmMtLjIgNTAuMS03LjMgNjguNS0xMC4yIDc1LjctOS40IDIzLjctNDMuOSA2Mi44LTk1LjIgNjkuNC04LjcgMS4xLTMyLjggMS4yLTUwLjcgMS4xem0yMDAuNC0xNjcuN2MzOC42IDAgNTguNS0xMy42IDczLjctMzAuOWwtMTc1LjUtLjMtMTcuNCAzMS4zIDExOS4yLS4xem0tNDMuNi0yMjMuOXYxNjguM2gtNzMuNWwtMzIuNyA1NS41SDI1MGMtNTIuMyAwLTU4LjEtNTYuNS01OC4zLTU4LjktMS4yLTEzLjItMjEuMy0xMS42LTIwLjEgMS44IDEuNCAxNS44IDguOCA0MCAyNi40IDU3LjFoLTkxYy0yNS41IDAtMTEwLjgtMjYuOC0xMDctMTE0VjE2LjlDMCAuOSA5LjcuMyAxNSAuMWg4MmMuMiAwIC4zLjEuNS4xIDQuMy0uNCA1MC4xLTIuMSA1MC4xIDQzLjcgMCAxMy4zIDIwLjIgMTMuNCAyMC4yIDAgMC0xOC4yLTUuNS0zMi44LTE1LjgtNDMuN2g4NC4yYzEwOC43LS40IDEyNi41IDc5LjQgMTI2LjUgMTIwLjJ6bS0xMzIuNSA1Nmw2NCAyOS4zYzEzLjMtNDUuNS00Mi4yLTcxLjctNjQtMjkuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGV2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyMC4xMiAyMDguMjljLTMuODgtMi45LTcuNzctNC4zNS0xMS42NS00LjM1SDkxLjAzdjEwNC40N2gxNy40NWMzLjg4IDAgNy43Ny0xLjQ1IDExLjY1LTQuMzUgMy44OC0yLjkgNS44Mi03LjI1IDUuODItMTMuMDZ2LTY5LjY1Yy0uMDEtNS44LTEuOTYtMTAuMTYtNS44My0xMy4wNnpNNDA0LjEgMzJINDMuOUMxOS43IDMyIC4wNiA1MS41OSAwIDc1Ljh2MzYwLjRDLjA2IDQ2MC40MSAxOS43IDQ4MCA0My45IDQ4MGgzNjAuMmMyNC4yMSAwIDQzLjg0LTE5LjU5IDQzLjktNDMuOFY3NS44Yy0uMDYtMjQuMjEtMTkuNy00My44LTQzLjktNDMuOHpNMTU0LjIgMjkxLjE5YzAgMTguODEtMTEuNjEgNDcuMzEtNDguMzYgNDcuMjVoLTQ2LjRWMTcyLjk4aDQ3LjM4YzM1LjQ0IDAgNDcuMzYgMjguNDYgNDcuMzcgNDcuMjhsLjAxIDcwLjkzem0xMDAuNjgtODguNjZIMjAxLjZ2MzguNDJoMzIuNTd2MjkuNTdIMjAxLjZ2MzguNDFoNTMuMjl2MjkuNTdoLTYyLjE4Yy0xMS4xNi4yOS0yMC40NC04LjUzLTIwLjcyLTE5LjY5VjE5My43Yy0uMjctMTEuMTUgOC41Ni0yMC40MSAxOS43MS0yMC42OWg2My4xOWwtLjAxIDI5LjUyem0xMDMuNjQgMTE1LjI5Yy0xMy4yIDMwLjc1LTM2Ljg1IDI0LjYzLTQ3LjQ0IDBsLTM4LjUzLTE0NC44aDMyLjU3bDI5LjcxIDExMy43MiAyOS41Ny0xMTMuNzJoMzIuNThsLTM4LjQ2IDE0NC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZXZpYW50YXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA5My4ybC05OC4yIDE3OS4xIDcuNCA5LjVIMzIwdjEyNy43SDE1OS4xbC0xMy41IDkuMi00My43IDg0Yy0uMyAwLTguNiA4LjYtOS4yIDkuMkgwdi05My4ybDkzLjItMTc5LjQtNy40LTkuMkgwVjEwMi41aDE1NmwxMy41LTkuMiA0My43LTg0Yy4zIDAgOC42LTguNiA5LjItOS4ySDMyMHY5My4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjM4IDMwMS4yaDU4LjdMMzE5IDI3MWgtNTguN0wyMzggMzAxLjJ6TTAgMjgyLjl2Ni40aDgxLjhsNC43LTYuNEgwek0xNzIuOSAyNzFjLTguNyAwLTYtMy42LTQuNi01LjUgMi44LTMuOCA3LjYtMTAuNCAxMC40LTE0LjEgMi44LTMuNyAyLjgtNS45LTIuOC01LjloLTUxbC00MS4xIDU1LjhoMTAwLjFjMzMuMSAwIDUxLjUtMjIuNSA1Ny4yLTMwLjNoLTY4LjJ6bTMxNy41LTYuOWwzOS4zLTUzLjRoLTYyLjJsLTM5LjMgNTMuNGg2Mi4yek05NS4zIDI3MUgwdjYuNGg5MC42bDQuNy02LjR6bTExMS0yNi42Yy0yLjggMy44LTcuNSAxMC40LTEwLjMgMTQuMi0xLjQgMi00LjEgNS41IDQuNiA1LjVoNDUuNnM3LjMtMTAgMTMuNS0xOC40YzguNC0xMS40LjctMzUtMjkuMi0zNUgxMTIuNmwtMjAuNCAyNy44aDExMS40YzUuNiAwIDUuNSAyLjIgMi43IDUuOXpNMCAzMDEuMmg3My4xbDQuNy02LjRIMHY2LjR6bTMyMyAwaDU4LjdMNDA0IDI3MWgtNTguN2MtLjEgMC0yMi4zIDMwLjItMjIuMyAzMC4yem0yMjIgLjFoOTV2LTYuNGgtOTAuM2wtNC43IDYuNHptMjIuMy0zMC4zbC00LjcgNi40SDY0MFYyNzFoLTcyLjd6bS0xMy41IDE4LjNINjQwdi02LjRoLTgxLjVsLTQuNyA2LjR6bS0xNjQuMi03OC42bC0yMi41IDMwLjZoLTI2LjJsMjIuNS0zMC42aC01OC43bC0zOS4zIDUzLjRINDA5bDM5LjMtNTMuNGgtNTguN3ptMzMuNSA2MC4zcy00LjMgNS45LTYuNCA4LjdjLTcuNCAxMC0uOSAyMS42IDIzLjIgMjEuNmg5NC4zbDIyLjMtMzAuM0g0MjMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlhc3BvcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjUxLjY0IDM1NC41NWMtMS40IDAtODggMTE5LjktODguNyAxMTkuOVM3Ni4zNCA0MTQgNzYgNDEzLjI1czg2LjYtMTI1LjcgODYuNi0xMjcuNGMwLTIuMi0xMjkuNi00NC0xMzcuNi00Ny4xLTEuMy0uNSAzMS40LTEwMS44IDMxLjctMTAyLjEuNi0uNyAxNDQuNCA0NyAxNDUuNSA0NyAuNCAwIC45LS42IDEtMS4zLjQtMiAxLTE0OC42IDEuNy0xNDkuNi44LTEuMiAxMDQuNS0uNyAxMDUuMS0uMyAxLjUgMSAzLjUgMTU2LjEgNi4xIDE1Ni4xIDEuNCAwIDEzOC43LTQ3IDEzOS4zLTQ2LjMuOC45IDMxLjkgMTAyLjIgMzEuNSAxMDIuNi0uOS45LTE0MC4yIDQ3LjEtMTQwLjYgNDguOC0uMyAxLjQgODIuOCAxMjIuMSA4Mi41IDEyMi45cy04NS41IDYzLjUtODYuMyA2My41Yy0xLS4yLTg5LTEyNS41LTkwLjktMTI1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpZ2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODEuNyAxNzIuM0gwdjE3NC40aDEzMi43Vjk2aC01MXY3Ni4zem0wIDEzMy40SDUwLjl2LTkyLjNoMzAuOHY5Mi4zem0yOTcuMi0xMzMuNHYxNzQuNGg4MS44djI4LjVoLTgxLjhWNDE2SDUxMlYxNzIuM0gzNzguOXptODEuOCAxMzMuNGgtMzAuOHYtOTIuM2gzMC44djkyLjN6bS0yMzUuNiA0MWg4Mi4xdjI4LjVoLTgyLjFWNDE2aDEzMy4zVjE3Mi4zSDIyNS4xdjE3NC40em01MS4yLTEzMy4zaDMwLjh2OTIuM2gtMzAuOHYtOTIuM3pNMTUzLjMgOTZoNTEuM3Y1MWgtNTEuM1Y5NnptMCA3Ni4zaDUxLjN2MTc0LjRoLTUxLjNWMTcyLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpZ2l0YWxPY2VhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04NyA0ODEuOGg3My43di03My42SDg3ek0yNS40IDM0Ni42djYxLjZIODd2LTYxLjZ6bTQ2Ni4yLTE2OS43Yy0yMy03NC4yLTgyLjQtMTMzLjMtMTU2LjYtMTU2LjZDMTY0LjktMzIuOCA4IDkzLjcgOCAyNTUuOWg5NS44YzAtMTAxLjggMTAxLTE4MC41IDIwOC4xLTE0MS43IDM5LjcgMTQuMyA3MS41IDQ2LjEgODUuOCA4NS43IDM5LjEgMTA3LTM5LjcgMjA3LjgtMTQxLjQgMjA4di4zaC0uM1Y1MDRjMTYyLjYgMCAyODguOC0xNTYuOCAyMzUuNi0zMjcuMXptLTIzNS4zIDIzMXYtOTUuM2gtOTUuNnY5NS42SDI1NnYtLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpc2NvcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI0LjUzMSw2OS44MzZhMS41LDEuNSwwLDAsMC0uNzY0LS43QTQ4NS4wNjUsNDg1LjA2NSwwLDAsMCw0MDQuMDgxLDMyLjAzYTEuODE2LDEuODE2LDAsMCwwLTEuOTIzLjkxLDMzNy40NjEsMzM3LjQ2MSwwLDAsMC0xNC45LDMwLjYsNDQ3Ljg0OCw0NDcuODQ4LDAsMCwwLTEzNC40MjYsMCwzMDkuNTQxLDMwOS41NDEsMCwwLDAtMTUuMTM1LTMwLjYsMS44OSwxLjg5LDAsMCwwLTEuOTI0LS45MUE0ODMuNjg5LDQ4My42ODksMCwwLDAsMTE2LjA4NSw2OS4xMzdhMS43MTIsMS43MTIsMCwwLDAtLjc4OC42NzZDMzkuMDY4LDE4My42NTEsMTguMTg2LDI5NC42OSwyOC40Myw0MDQuMzU0YTIuMDE2LDIuMDE2LDAsMCwwLC43NjUsMS4zNzVBNDg3LjY2Niw0ODcuNjY2LDAsMCwwLDE3Ni4wMiw0NzkuOTE4YTEuOSwxLjksMCwwLDAsMi4wNjMtLjY3NkEzNDguMiwzNDguMiwwLDAsMCwyMDguMTIsNDMwLjRhMS44NiwxLjg2LDAsMCwwLTEuMDE5LTIuNTg4LDMyMS4xNzMsMzIxLjE3MywwLDAsMS00NS44NjgtMjEuODUzLDEuODg1LDEuODg1LDAsMCwxLS4xODUtMy4xMjZjMy4wODItMi4zMDksNi4xNjYtNC43MTEsOS4xMDktNy4xMzdhMS44MTksMS44MTksMCwwLDEsMS45LS4yNTZjOTYuMjI5LDQzLjkxNywyMDAuNDEsNDMuOTE3LDI5NS41LDBhMS44MTIsMS44MTIsMCwwLDEsMS45MjQuMjMzYzIuOTQ0LDIuNDI2LDYuMDI3LDQuODUxLDkuMTMyLDcuMTZhMS44ODQsMS44ODQsMCwwLDEtLjE2MiwzLjEyNiwzMDEuNDA3LDMwMS40MDcsMCwwLDEtNDUuODksMjEuODMsMS44NzUsMS44NzUsMCwwLDAtMSwyLjYxMSwzOTEuMDU1LDM5MS4wNTUsMCwwLDAsMzAuMDE0LDQ4LjgxNSwxLjg2NCwxLjg2NCwwLDAsMCwyLjA2My43QTQ4Ni4wNDgsNDg2LjA0OCwwLDAsMCw2MTAuNyw0MDUuNzI5YTEuODgyLDEuODgyLDAsMCwwLC43NjUtMS4zNTJDNjIzLjcyOSwyNzcuNTk0LDU5MC45MzMsMTY3LjQ2NSw1MjQuNTMxLDY5LjgzNlpNMjIyLjQ5MSwzMzcuNThjLTI4Ljk3MiwwLTUyLjg0NC0yNi41ODctNTIuODQ0LTU5LjIzOVMxOTMuMDU2LDIxOS4xLDIyMi40OTEsMjE5LjFjMjkuNjY1LDAsNTMuMzA2LDI2LjgyLDUyLjg0Myw1OS4yMzlDMjc1LjMzNCwzMTAuOTkzLDI1MS45MjQsMzM3LjU4LDIyMi40OTEsMzM3LjU4Wm0xOTUuMzgsMGMtMjguOTcxLDAtNTIuODQzLTI2LjU4Ny01Mi44NDMtNTkuMjM5UzM4OC40MzcsMjE5LjEsNDE3Ljg3MSwyMTkuMWMyOS42NjcsMCw1My4zMDcsMjYuODIsNTIuODQ0LDU5LjIzOUM0NzAuNzE1LDMxMC45OTMsNDQ3LjUzOCwzMzcuNTgsNDE3Ljg3MSwzMzcuNThaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpc2NvdXJzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjUuOSAzMkMxMDMuMyAzMiAwIDEzMC41IDAgMjUyLjEgMCAyNTYgLjEgNDgwIC4xIDQ4MGwyMjUuOC0uMmMxMjIuNyAwIDIyMi4xLTEwMi4zIDIyMi4xLTIyMy45QzQ0OCAxMzQuMyAzNDguNiAzMiAyMjUuOSAzMnpNMjI0IDM4NGMtMTkuNCAwLTM3LjktNC4zLTU0LjQtMTIuMUw4OC41IDM5MmwyMi45LTc1Yy05LjgtMTguMS0xNS40LTM4LjktMTUuNC02MSAwLTcwLjcgNTcuMy0xMjggMTI4LTEyOHMxMjggNTcuMyAxMjggMTI4LTU3LjMgMTI4LTEyOCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvY2h1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDE2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTcuOSAxNjBIMjU2VjE5LjZMMzk3LjkgMTYwek0zMDQgMTkydjEzMGMwIDY2LjgtMzYuNSAxMDAuMS0xMTMuMyAxMDAuMUg5NlY4NC44aDk0LjdjMTIgMCAyMy4xLjggMzMuMSAyLjV2LTg0QzIxMi45IDEuMSAyMDEuNCAwIDE4OS4yIDBIMHY1MTJoMTg5LjJDMzI5LjcgNTEyIDQwMCA0NDcuNCA0MDAgMzE4LjFWMTkyaC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9ja2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0OS45IDIzNi4zaC02Ni4xdi01OS40aDY2LjF2NTkuNHptMC0yMDQuM2gtNjYuMXY2MC43aDY2LjFWMzJ6bTc4LjIgMTQ0LjhIMzYydjU5LjRoNjYuMXYtNTkuNHptLTE1Ni4zLTcyLjFoLTY2LjF2NjAuMWg2Ni4xdi02MC4xem03OC4xIDBoLTY2LjF2NjAuMWg2Ni4xdi02MC4xem0yNzYuOCAxMDBjLTE0LjQtOS43LTQ3LjYtMTMuMi03My4xLTguNC0zLjMtMjQtMTYuNy00NC45LTQxLjEtNjMuN2wtMTQtOS4zLTkuMyAxNGMtMTguNCAyNy44LTIzLjQgNzMuNi0zLjcgMTAzLjgtOC43IDQuNy0yNS44IDExLjEtNDguNCAxMC43SDIuNGMtOC43IDUwLjggNS44IDExNi44IDQ0IDE2Mi4xIDM3LjEgNDMuOSA5Mi43IDY2LjIgMTY1LjQgNjYuMiAxNTcuNCAwIDI3My45LTcyLjUgMzI4LjQtMjA0LjIgMjEuNC40IDY3LjYuMSA5MS4zLTQ1LjIgMS41LTIuNSA2LjYtMTMuMiA4LjUtMTcuMWwtMTMuMy04Ljl6bS01MTEuMS0yNy45aC02NnY1OS40aDY2LjF2LTU5LjR6bTc4LjEgMGgtNjYuMXY1OS40aDY2LjF2LTU5LjR6bTc4LjEgMGgtNjYuMXY1OS40aDY2LjF2LTU5LjR6bS03OC4xLTcyLjFoLTY2LjF2NjAuMWg2Ni4xdi02MC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcmFmdDJEaWdpdGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAzOTguMWwtMTQ0LTgyLjJ2NjQuN2gtOTEuM2MzMC44LTM1IDgxLjgtOTUuOSAxMTEuOC0xNDkuMyAzNS4yLTYyLjYgMTYuMS0xMjMuNC0xMi44LTE1My4zLTQuNC00LjYtNjIuMi02Mi45LTE2Ni00MS4yLTU5LjEgMTIuNC04OS40IDQzLjQtMTA0LjMgNjcuMy0xMy4xIDIwLjktMTcgMzkuOC0xOC4yIDQ3LjctNS41IDMzIDE5LjQgNjcuMSA1Ni43IDY3LjEgMzEuNyAwIDU3LjMtMjUuNyA1Ny4zLTU3LjQgMC0yNy4xLTE5LjctNTIuMS00OC01Ni44IDEuOC03LjMgMTcuNy0yMS4xIDI2LjMtMjQuNyA0MS4xLTE3LjMgNzggNS4yIDgzLjMgMzMuNSA4LjMgNDQuMy0zNy4xIDkwLjQtNjkuNyAxMjcuNkM4NC41IDMyOC4xIDE4LjMgMzk2LjggMCA0MTUuOWwzMzYtLjFWNDgwek0zNjkuOSAzNzFsNDcuMSAyNy4yLTQ3LjEgMjcuMnpNMTM0LjIgMTYxLjRjMCAxMi40LTEwIDIyLjQtMjIuNCAyMi40cy0yMi40LTEwLTIyLjQtMjIuNCAxMC0yMi40IDIyLjQtMjIuNCAyMi40IDEwLjEgMjIuNCAyMi40ek04Mi41IDM4MC41YzI1LjYtMjcuNCA5Ny43LTEwNC43IDE1MC44LTE2OS45IDM1LjEtNDMuMSA0MC4zLTgyLjQgMjguNC0xMTIuNy03LjQtMTguOC0xNy41LTMwLjItMjQuMy0zNS43IDQ1LjMgMi4xIDY4IDIzLjQgODIuMiAzOC4zIDAgMCA0Mi40IDQ4LjIgNS44IDExMy4zLTM3IDY1LjktMTEwLjkgMTQ3LjUtMTI4LjUgMTY2Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyaWJiYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4yNTIgOCA4IDExOS4yNTIgOCAyNTZzMTExLjI1MiAyNDggMjQ4IDI0OCAyNDgtMTExLjI1MiAyNDgtMjQ4UzM5Mi43NDggOCAyNTYgOHptMTYzLjk3IDExNC4zNjZjMjkuNTAzIDM2LjA0NiA0Ny4zNjkgODEuOTU3IDQ3LjgzNSAxMzEuOTU1LTYuOTg0LTEuNDc3LTc3LjAxOC0xNS42ODItMTQ3LjUwMi02LjgxOC01Ljc1Mi0xNC4wNDEtMTEuMTgxLTI2LjM5My0xOC42MTctNDEuNjE0IDc4LjMyMS0zMS45NzcgMTEzLjgxOC03Ny40ODIgMTE4LjI4NC04My41MjN6TTM5Ni40MjEgOTcuODdjLTMuODEgNS40MjctMzUuNjk3IDQ4LjI4Ni0xMTEuMDIxIDc2LjUxOS0zNC43MTItNjMuNzc2LTczLjE4NS0xMTYuMTY4LTc5LjA0LTEyNC4wMDggNjcuMTc2LTE2LjE5MyAxMzcuOTY2IDEuMjcgMTkwLjA2MSA0Ny40ODl6bS0yMzAuNDgtMzMuMjVjNS41ODUgNy42NTkgNDMuNDM4IDYwLjExNiA3OC41MzcgMTIyLjUwOS05OS4wODcgMjYuMzEzLTE4Ni4zNiAyNS45MzQtMTk1LjgzNCAyNS44MDlDNjIuMzggMTQ3LjIwNSAxMDYuNjc4IDkyLjU3MyAxNjUuOTQxIDY0LjYyek00NC4xNyAyNTYuMzIzYzAtMi4xNjYuMDQzLTQuMzIyLjEwOC02LjQ3MyA5LjI2OC4xOSAxMTEuOTIgMS41MTMgMjE3LjcwNi0zMC4xNDYgNi4wNjQgMTEuODY4IDExLjg1NyAyMy45MTUgMTcuMTc0IDM1Ljk0OS03Ni41OTkgMjEuNTc1LTE0Ni4xOTQgODMuNTI3LTE4MC41MzEgMTQyLjMwNkM2NC43OTQgMzYwLjQwNSA0NC4xNyAzMTAuNzMgNDQuMTcgMjU2LjMyM3ptODEuODA3IDE2Ny4xMTNjMjIuMTI3LTQ1LjIzMyA4Mi4xNzgtMTAzLjYyMiAxNjcuNTc5LTEzMi43NTYgMjkuNzQgNzcuMjgzIDQyLjAzOSAxNDIuMDUzIDQ1LjE4OSAxNjAuNjM4LTY4LjExMiAyOS4wMTMtMTUwLjAxNSAyMS4wNTMtMjEyLjc2OC0yNy44ODJ6bTI0OC4zOCA4LjQ4OWMtMi4xNzEtMTIuODg2LTEzLjQ0Ni03NC44OTctNDEuMTUyLTE1MS4wMzMgNjYuMzgtMTAuNjI2IDEyNC43IDYuNzY4IDEzMS45NDcgOS4wNTUtOS40NDIgNTguOTQxLTQzLjI3MyAxMDkuODQ0LTkwLjc5NSAxNDEuOTc4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcm9wYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MjggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2NC40IDExNi4zbC0xMzIgODQuMyAxMzIgODQuMy0xMzIgODQuM0wwIDI4NC4xbDEzMi4zLTg0LjNMMCAxMTYuMyAxMzIuMyAzMmwxMzIuMSA4NC4zek0xMzEuNiAzOTUuN2wxMzItODQuMyAxMzIgODQuMy0xMzIgODQuMy0xMzItODQuM3ptMTMyLjgtMTExLjZsMTMyLTg0LjMtMTMyLTgzLjZMMzk1LjcgMzIgNTI4IDExNi4zbC0xMzIuMyA4NC4zTDUyOCAyODQuOGwtMTMyLjMgODQuMy0xMzEuMy04NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJ1cGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMy45NzMsMTA4LjEzNkMyNjguMiw3Mi40NTksMjM0LjE4NywzOC4zNSwyMjQuMDQ3LDBjLTkuOTU3LDM4LjM1LTQ0LjI1LDcyLjQ1OS04MC4wMTksMTA4LjEzNkM5MC40NjcsMTYxLjcsMjkuNzE2LDIyMi4zNTYsMjkuNzE2LDMxMy40MzZjLTIuMzM3LDEwNy4zLDgyLjc1MiwxOTYuMTgsMTkwLjA1MywxOTguNTE3UzQxNS45NDgsNDI5LjIsNDE4LjI4NSwzMjEuOXEuMDkxLTQuMjMxLDAtOC40NjRDNDE4LjI4NSwyMjIuMzU2LDM1Ny41MzQsMTYxLjcsMzAzLjk3MywxMDguMTM2Wm0tMTc0LjMyNiwyMjNhMTMwLjI4MiwxMzAuMjgyLDAsMCwwLTE1LjIxMSwyNC4xNTMsNC45NzgsNC45NzgsMCwwLDEtMy4zMTksMi43NjZoLTEuNjU5Yy00LjMzMywwLTkuMjE5LTguNDgxLTkuMjE5LTguNDgxaDBjLTEuMjktMi4wMjgtMi40ODktNC4xNDktMy42ODctNi4zNjFsLS44My0xLjc1MmMtMTEuMjQ3LTI1LjcyLTEuNDc1LTYyLjMxOC0xLjQ3NS02Mi4zMThoMGExNjAuNTg1LDE2MC41ODUsMCwwLDEsMjMuMjMxLTQ5Ljg3M0EyOTAuOCwyOTAuOCwwLDAsMSwxMzguNSwyMDEuNjEzbDkuMjE5LDkuMjE5LDQzLjUxMiw0NC40MzRhNC45NzksNC45NzksMCwwLDEsMCw2LjYzOEwxNDUuNzgsMzEyLjMzaDBabTk2LjYxMiwxMjcuMzExYTY3LjIsNjcuMiwwLDAsMS00OS43ODEtMTExLjkxNWMxNC4yLTE2Ljg3MSwzMS41MjgtMzMuNDY0LDUwLjMzNC01NS4zMTMsMjIuMzA5LDIzLjc4NSwzNi44NzUsNDAuMSw1MS4xNjQsNTcuOTg2YTI4LjQxMywyOC40MTMsMCwwLDEsMi45NSw0LjQyNSw2NS45MDUsNjUuOTA1LDAsMCwxLDExLjk4NCwzNy45ODEsNjYuNjUxLDY2LjY1MSwwLDAsMS02Ni40NjYsNjYuODM2Wk0zNTIuMzcxLDM1MS42aDBhNy43NDMsNy43NDMsMCwwLDEtNi4xNzYsNS4zNDdIMzQ0LjlhMTEuMjQ5LDExLjI0OSwwLDAsMS02LjI2OS01LjA3aDBhMzQ4LjIxLDM0OC4yMSwwLDAsMC0zOS40NTYtNDguOTUyTDI4MS4zODcsMjg0LjQ5LDIyMi4zLDIyMy4xODVhNDk3Ljg4OCw0OTcuODg4LDAsMCwxLTM1LjQtMzYuMzIyLDEyLjAzMywxMi4wMzMsMCwwLDAtLjkyMi0xLjM4MiwzNS40LDM1LjQsMCwwLDEtNC43LTkuMjE5VjE3NC41MWEzMS4zNDYsMzEuMzQ2LDAsMCwxLDkuMjE4LTI3LjY1NmMxMS40MzItMTEuNDMxLDIyLjk1NS0yMi45NTQsMzMuODMzLTM0LjkzOSwxMS45ODQsMTMuMjc1LDI0LjgsMjYsMzcuNDI4LDM4LjYyN2gwYTUzMC45OTEsNTMwLjk5MSwwLDAsMSw2OS42LDc5LjEsMTQ3LjQ5NCwxNDcuNDk0LDAsMCwxLDI3LjAxMSw4My44QTEzNC4xMDksMTM0LjEwOSwwLDAsMSwzNTIuMzcxLDM1MS42WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEeWFsb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnYxMTkuMmg2NFY5NmgxMDcuMkMyODQuNiA5NiAzNTIgMTc2LjIgMzUyIDI1NS45IDM1MiAzMzIgMjkzLjQgNDE2IDE3MS4yIDQxNkgwdjY0aDE3MS4yQzMzMS45IDQ4MCA0MTYgMzY3LjMgNDE2IDI1NS45YzAtNTguNy0yMi4xLTExMy40LTYyLjMtMTU0LjNDMzA4LjkgNTYgMjQ1LjcgMzIgMTcxLjIgMzJIMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWFybHliaXJkcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuMiA0Ny41YzEuMi0xMyAyMS4zLTE0IDM2LjYtOC43LjkuMyAyNi4yIDkuNyAxOSAxNS4yLTI3LjktNy40LTU2LjQgMTguMi01NS42LTYuNXptLTIwMSA2LjljMzAuNy04LjEgNjIgMjAgNjEuMS03LjEtMS4zLTE0LjItMjMuNC0xNS4zLTQwLjItOS42LTEgLjMtMjguNyAxMC41LTIwLjkgMTYuN3pNMzE5LjQgMTYwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2IDE2LTcuMiAxNi0xNi03LjItMTYtMTYtMTZ6bS0xNTkuNyAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2IDE2LTcuMiAxNi0xNi03LjItMTYtMTYtMTZ6bTMxOC41IDE2My4yYy05LjkgMjQtNDAuNyAxMS02My45LTEuMi0xMy41IDY5LjEtNTguMSAxMTEuNC0xMjYuMyAxMjQuMi4zLjktMi0uMSAyNCAxIDMzLjYgMS40IDYzLjgtMy4xIDk3LjQtOC0xOS44LTEzLjgtMTEuNC0zNy4xLTkuOC0zOC4xIDEuNC0uOSAxNC43IDEuNyAyMS42IDExLjUgOC42LTEyLjUgMjguNC0xNC44IDMwLjItMTMuNiAxLjYgMS4xIDYuNiAyMC45LTYuOSAzNC42IDQuNy0uOSA4LjItMS42IDkuOC0yLjEgMi42LS44IDE3LjcgMTEuMyAzLjEgMTMuMy0xNC4zIDIuMy0yMi42IDUuMS00Ny4xIDEwLjgtNDUuOSAxMC43LTg1LjkgMTEuOC0xMTcuNyAxMi44bDEgMTEuNmMzLjggMTguMS0yMy40IDI0LjMtMjcuNiA2LjIuOCAxNy45LTI3LjEgMjEuOC0yOC40LTFsLS41IDUuM2MtLjcgMTguNC0yOC40IDE3LjktMjguMy0uNi03LjUgMTMuNS0yOC4xIDYuOC0yNi40LTguNWwxLjItMTIuNGMtMzYuNy45LTU5LjcgMy4xLTYxLjggMy4xLTIwLjkgMC0yMC45LTMxLjYgMC0zMS42IDIuNCAwIDI3LjcgMS4zIDYzLjIgMi44LTYxLjEtMTUuNS0xMDMuNy01NS0xMTQuOS0xMTguMi0yNSAxMi44LTU3LjUgMjYuOC02OC4yLjgtMTAuNS0yNS40IDIxLjUtNDIuNiA2Ni44LTczLjQuNy02LjYgMS42LTEzLjMgMi43LTE5LjgtMTQuNC0xOS42LTExLjYtMzYuMy0xNi4xLTYwLjQtMTYuOCAyLjQtMjMuMi05LjEtMjMuNi0yMy4xLjMtNy4zIDIuMS0xNC45IDIuNC0xNS40IDEuMS0xLjggMTAuMS0yIDEyLjctMi42IDYtMzEuNyA1MC42LTMzLjIgOTAuOS0zNC41IDE5LjctMjEuOCA0NS4yLTQxLjUgODAuOS00OC4zQzIwMy4zIDI5IDIxNS4yIDguNSAyMTYuMiA4YzEuNy0uOCAyMS4yIDQuMyAyNi4zIDIzLjIgNS4yLTguOCAxOC4zLTExLjQgMTkuNi0xMC43IDEuMS42IDYuNCAxNS00LjkgMjUuOSA0MC4zIDMuNSA3Mi4yIDI0LjcgOTYgNTAuNyAzNi4xIDEuNSA3MS44IDUuOSA3Ny4xIDM0IDIuNy42IDExLjYuOCAxMi43IDIuNi4zLjUgMi4xIDguMSAyLjQgMTUuNC0uNSAxMy45LTYuOCAyNS40LTIzLjYgMjMuMS0zLjIgMTcuMy0yLjcgMzIuOS04LjcgNDcuNyAyLjQgMTEuNyA0IDIzLjggNC44IDM2LjQgMzcgMjUuNCA3MC4zIDQyLjUgNjAuMyA2Ni45ek0yMDcuNCAxNTkuOWMuOS00NC0zNy45LTQyLjItNzguNi00MC4zLTIxLjcgMS0zOC45IDEuOS00NS41IDEzLjktMTEuNCAyMC45IDUuOSA5Mi45IDIzLjIgMTAxLjIgOS44IDQuNyA3My40IDcuOSA4Ni4zLTcuMSA4LjItOS40IDE1LTQ5LjQgMTQuNi02Ny43em01MiA1OC4zYy00LjMtMTIuNC02LTMwLjEtMTUuMy0zMi43LTItLjUtOS0uNS0xMSAwLTEwIDIuOC0xMC44IDIyLjEtMTcgMzcuMiAxNS40IDAgMTkuMyA5LjcgMjMuNyA5LjcgNC4zIDAgNi4zLTExLjMgMTkuNi0xNC4yem0xMzUuNy04NC43Yy02LjYtMTIuMS0yNC44LTEyLjktNDYuNS0xMy45LTQwLjItMS45LTc4LjItMy44LTc3LjMgNDAuMy0uNSAxOC4zIDUgNTguMyAxMy4yIDY3LjggMTMgMTQuOSA3Ni42IDExLjggODYuMyA3LjEgMTUuOC03LjYgMzYuNS03OC45IDI0LjMtMTAxLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUViYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjA2IDE4OS41bC01NC44IDEwOS45LTU0LjktMTA5LjloLTM3LjVsMTAuOSAyMC42Yy0xMS41LTE5LTM1LjktMjYtNjMuMy0yNi0zMS44IDAtNjcuOSA4LjctNzEuNSA0My4xaDMzLjdjMS40LTEzLjggMTUuNy0yMS44IDM1LTIxLjggMjYgMCA0MSA5LjYgNDEgMzN2My40Yy0xMi43IDAtMjggLjEtNDEuNy40LTQyLjQuOS02OS42IDEwLTc2LjcgMzQuNCAxLTUuMiAxLjUtMTAuNiAxLjUtMTYuMiAwLTUyLjEtMzkuNy03Ni4yLTc1LjQtNzYuMi0yMS4zIDAtNDMgNS41LTU4LjcgMjQuMnYtODAuNmgtMzIuMXYxNjkuNWMwIDEwLjMtLjYgMjIuOS0xLjEgMzMuMWgzMS41Yy43LTYuMyAxLjEtMTIuOSAxLjEtMTkuNSAxMy42IDE2LjYgMzUuNCAyNC45IDU4LjcgMjQuOSAzNi45IDAgNjQuOS0yMS45IDczLjMtNTQuMi0uNSAyLjgtLjcgNS44LS43IDkgMCAyNC4xIDIxLjEgNDUgNjAuNiA0NSAyNi42IDAgNDUuOC01LjcgNjEuOS0yNS41IDAgNi42LjMgMTMuMyAxLjEgMjAuMmgyOS44Yy0uNy04LjItMS0xNy41LTEtMjYuOHYtNjUuNmMwLTkuMy0xLjctMTcuMi00LjgtMjMuOGw2MS41IDExNi4xLTI4LjUgNTQuMWgzNS45TDY0MCAxODkuNXpNMjQzLjcgMzEzLjhjLTI5LjYgMC01MC4yLTIxLjUtNTAuMi01My44IDAtMzIuNCAyMC42LTUzLjggNTAuMi01My44IDI5LjggMCA1MC4yIDIxLjQgNTAuMiA1My44IDAgMzIuMy0yMC40IDUzLjgtNTAuMiA1My44em0yMDAuOS00Ny4zYzAgMzAtMTcuOSA0OC40LTUxLjYgNDguNC0yNS4xIDAtMzUtMTMuNC0zNS0yNS44IDAtMTkuMSAxOC4xLTI0LjQgNDcuMi0yNS4zIDEzLjEtLjUgMjcuNi0uNiAzOS40LS42em0tNDExLjkgMS42aDEyOC44di04LjVjMC01MS43LTMzLjEtNzUuNC03OC40LTc1LjQtNTYuOCAwLTgzIDMwLjgtODMgNzcuNiAwIDQyLjUgMjUuMyA3NCA4Mi41IDc0IDMxLjQgMCA2OC0xMS43IDc0LjQtNDYuMWgtMzMuMWMtMTIgMzUuOC04Ny43IDM2LjctOTEuMi0yMS42em05NS0yMS40SDMzLjNjNi45LTU2LjYgOTIuMS01NC43IDk0LjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWRnZUxlZ2FjeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNS43MSwyMjguMTZsLjM1LS40OGMwLC4xNiwwLC4zMi0uMDcuNDhabTQ2MC41OCwxNS41MWMwLTQ0LTcuNzYtODQuNDYtMjguODEtMTIyLjRDNDE2LjUsNDcuODgsMzQzLjkxLDgsMjU4Ljg5LDgsMTE5LDcuNzIsNDAuNjIsMTEzLjIxLDI2LjA2LDIyNy42OGM0Mi40Mi02MS4zMSwxMTcuMDctMTIxLjM4LDIyMC4zNy0xMjUsMCwwLDEwOS42NywwLDk5LjQyLDEwNUgxNzBjNi4zNy0zNy4zOSwxOC41NS01OSwzNC4zNC03OC45My03NS4wNSwzNC45LTEyMS44NSw5Ni4xLTEyMC43NSwxODguMzIuODMsNzEuNDUsNTAuMTMsMTQ0Ljg0LDEyMC43NSwxNzIsODMuMzUsMzEuODQsMTkyLjc3LDcuMiwyNDAuMTMtMjEuMzNWMzYzLjMxQzM2My42LDQxOS44LDE3My42LDQyNC4yMywxNzIuMjEsMjk1Ljc0SDQ4Ni4yOVYyNDMuNjdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVkZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIwLjEgMzcuNDRDMTYxLjEgMTIuMjMgMjA3LjctLjc3NTMgMjU1IC4wMDE2QzQyMyAuMDAxNiA1MTIgMTIzLjggNTEyIDIxOS41QzUxMS45IDI1Mi4yIDQ5OSAyODMuNCA0NzYuMSAzMDYuN0M0NTMuMiAzMjkuOSA0MjIuMSAzNDMuMiAzODkuNCAzNDMuN0MzMTQuMiAzNDMuNyAyOTcuOSAzMjAuNiAyOTcuOSAzMTEuN0MyOTcuOSAzMDcuOSAyOTkuMSAzMDUuNSAzMDIuNyAzMDIuM0wzMDMuNyAzMDEuMUwzMDQuMSAyOTkuNUMzMTQuNiAyODggMzIwIDI3My4zIDMyMCAyNTcuOUMzMjAgMTc5LjIgMjM3LjggMTE1LjIgMTM2IDExNS4yQzk4LjQ2IDExNC45IDYxLjQ2IDEyNC4xIDI4LjQ4IDE0Mi4xQzU1LjQ4IDg0LjU4IDExMS4yIDQ0LjUgMTE5LjggMzguMjhDMTIwLjYgMzcuNzMgMTIwLjEgMzcuNDQgMTIwLjEgMzcuNDRWMzcuNDR6TTEzNS43IDM1NS41QzEzNC4zIDM4NS41IDE0MC4zIDQxNS41IDE1Mi4xIDQ0Mi43QzE2NS43IDQ2OS4xIDE4NC44IDQ5My43IDIwOC42IDUxMkMxNDkuMSA1MDAuNSA5Ny4xMSA0NjguMSA1OS4yIDQyMi43QzIxLjEyIDM3Ni4zIDAgMzE4LjQgMCAyNTcuOUMwIDIwNi43IDYyLjQgMTYzLjUgMTM2IDE2My41QzE3Mi42IDE2Mi45IDIwOC40IDE3NC40IDIzNy44IDE5Ni4yTDIzNC4yIDE5Ny40QzE4Mi43IDIxNSAxMzUuNyAyODguMSAxMzUuNyAzNTUuNVYzNTUuNXpNNDY5LjggNDAwTDQ2OS4xIDQwMC4xQzQ1Ny4zIDQxOC45IDQ0My4yIDQzNS4yIDQyNi45IDQ0OS42QzM5Ni4xIDQ3Ny42IDM1OC44IDQ5NS4xIDMxOC4xIDQ5OS41QzI5OS41IDQ5OS44IDI4MS4zIDQ5Ni4zIDI2NC4zIDQ4OC4xQzIzOC43IDQ3Ny44IDIxNy4yIDQ1OC4xIDIwMi43IDQzNS4xQzE4OC4zIDQxMS4yIDE4MS42IDM4My40IDE4My43IDM1NS41QzE4My4xIDMzNS40IDE4OS4xIDMxNS4yIDE5OC43IDI5Ny4zQzIxMi42IDMzMC40IDIzNi4yIDM1OC42IDI2Ni4zIDM3OC4xQzI5Ni40IDM5Ny42IDMzMS44IDQwNy42IDM2Ny43IDQwNi43QzM5OC43IDQwNyA0MjkuOCA0MDAgNDU3LjkgMzg2LjJMNDU5LjggMzg1LjNDNDYzLjcgMzgzIDQ2Ny41IDM4MS40IDQ3MS40IDM4NS4zQzQ3NS45IDM5MC4yIDQ3My4yIDM5NC41IDQ3MC4yIDM5OS4zQzQ3MCAzOTkuNSA0NjkuOSAzOTkuOCA0NjkuOCA0MDBWNDAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbGVtZW50b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjM2MSAyNTZDLjM2MSAzOTcgMTE0IDUxMSAyNTUgNTExQzM5NyA1MTEgNTExIDM5NyA1MTEgMjU2QzUxMSAxMTYgMzk3IDIuMDUgMjU1IDIuMDVDMTE0IDIuMDUgLjM2MSAxMTYgLjM2MSAyNTZ6TTE5MiAxNTBWMzYzSDE0OVYxNTBIMTkyek0yMzQgMTUwSDM2MlYxOTNIMjM0VjE1MHpNMzYyIDIzNVYyNzhIMjM0VjIzNUgzNjJ6TTIzNCAzMjBIMzYyVjM2M0gyMzRWMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbGxvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTE0My44NCAyODUuMkMzNzUuMzEgMzU4LjUxIDMxNS43OSA0MDQuOCAyNDggNDA0LjhzLTEyNy4zMS00Ni4yOS0xNDMuODQtMTExLjZjLTEuNjUtNy40NCAyLjQ4LTE1LjcxIDkuOTItMTcuMzYgNy40NC0xLjY1IDE1LjcxIDIuNDggMTcuMzYgOS45MiAxNC4wNSA1Mi45MSA2MiA5MC4xMSAxMTYuNTYgOTAuMTFzMTAyLjUxLTM3LjIgMTE2LjU2LTkwLjExYzEuNjUtNy40NCA5LjkyLTEyLjQgMTcuMzYtOS45MiA3LjQ0IDEuNjUgMTIuNCA5LjkyIDkuOTIgMTcuMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVtYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzOS45IDI1NC42Yy0xLjEtMTAuNy0xMC43LTYuOC0xMC43LTYuOHMtMTUuNiAxMi4xLTI5LjMgMTAuN2MtMTMuNy0xLjMtOS40LTMyLTkuNC0zMnMzLTI4LjEtNS4xLTMwLjRjLTguMS0yLjQtMTggNy4zLTE4IDcuM3MtMTIuNCAxMy43LTE4LjMgMzEuMmwtMS42LjVzMS45LTMwLjYtLjMtMzcuNmMtMS42LTMuNS0xNi40LTMuMi0xOC44IDNzLTE0LjIgNDkuMi0xNSA2Ny4yYzAgMC0yMy4xIDE5LjYtNDMuMyAyMi44cy0yNS05LjQtMjUtOS40IDU0LjgtMTUuMyA1Mi45LTU5LjEtNDQuMi0yNy42LTQ5LTI0Yy00LjYgMy41LTI5LjQgMTguNC0zNi42IDU5LjctLjIgMS40LS43IDcuNS0uNyA3LjVzLTIxLjIgMTQuMi0zMyAxOGMwIDAgMzMtNTUuNi03LjMtODAuOS0xMS40LTYuOC0yMS4zLS41LTI3LjIgNS4zIDEzLjYtMTcuMyA0Ni40LTY0LjIgMzYuOS0xMDUuMi01LjgtMjQuNC0xOC0yNy4xLTI5LjItMjMuMS0xNyA2LjctMjMuNSAxNi43LTIzLjUgMTYuN3MtMjIgMzItMjcuMSA3OS41LTEyLjYgMTA1LjEtMTIuNiAxMDUuMS0xMC41IDEwLjItMjAuMiAxMC43LTUuNC0yOC43LTUuNC0yOC43IDcuNS00NC42IDctNTIuMS0xLjEtMTEuNi05LjktMTQuMmMtOC45LTIuNy0xOC41IDguNi0xOC41IDguNnMtMjUuNSAzOC43LTI3LjcgNDQuNmwtMS4zIDIuNC0xLjMtMS42czE4LTUyLjcuOC01My41LTI4LjUgMTguOC0yOC41IDE4LjgtMTkuNiAzMi44LTIwLjQgMzYuNWwtMS4zLTEuNnM4LjEtMzguMiA2LjQtNDcuNmMtMS42LTkuNC0xMC41LTcuNS0xMC41LTcuNXMtMTEuMy0xLjMtMTQuMiA1LjktMTMuNyA1NS4zLTE1IDcwLjdjMCAwLTI4LjIgMjAuMi00Ni44IDIwLjQtMTguNS4zLTE2LjctMTEuOC0xNi43LTExLjhzNjgtMjMuMyA0OS40LTY5LjJjLTguMy0xMS44LTE4LTE1LjUtMzEuNy0xNS4zLTEzLjcuMy0zMC4zIDguNi00MS4zIDMzLjMtNS4zIDExLjgtNi44IDIzLTcuOCAzMS41IDAgMC0xMi4zIDIuNC0xOC44LTIuOXMtMTAgMC0xMCAwLTExLjIgMTQtLjEgMTguMyAyOC4xIDYuMSAyOC4xIDYuMWMxLjYgNy41IDYuMiAxOS41IDE5LjYgMjkuNyAyMC4yIDE1LjMgNTguOC0xLjMgNTguOC0xLjNsMTUuOS04LjhzLjUgMTQuNiAxMi4xIDE2LjcgMTYuNCAxIDM2LjUtNDcuOWMxMS44LTI1IDEyLjYtMjMuNiAxMi42LTIzLjZsMS4zLS4zcy05LjEgNDYuOC01LjYgNTkuN0MxODcuNyAzMTkuNCAyMDMgMzE4IDIwMyAzMThzOC4zIDIuNCAxNS0yMS4yIDE5LjYtNDkuOSAxOS42LTQ5LjloMS42cy01LjYgNDguMSAzIDYzLjcgMzAuOSA1LjMgMzAuOSA1LjMgMTUuNi03LjggMTgtMTAuMmMwIDAgMTguNSAxNS44IDQ0LjYgMTIuOSA1OC4zLTExLjUgNzkuMS0yNS45IDc5LjEtMjUuOXMxMCAyNC40IDQxLjEgMjYuN2MzNS41IDIuNyA1NC44LTE4LjYgNTQuOC0xOC42cy0uMyAxMy41IDEyLjEgMTguNiAyMC43LTIyLjggMjAuNy0yMi44bDIwLjctNTcuMmgxLjlzMS4xIDM3LjMgMjEuNSA0My4yIDQ3LTEzLjcgNDctMTMuNyA2LjQtMy41IDUuMy0xNC4zem0tNTc4IDUuM2MuOC0zMiAyMS44LTQ1LjkgMjktMzkgNy4zIDcgNC42IDIyLTkuMSAzMS40LTEzLjcgOS41LTE5LjkgNy42LTE5LjkgNy42em0yNzIuOC0xMjMuOHMxOS4xLTQ5LjcgMjMuNi0yNS41LTQwIDk2LjItNDAgOTYuMmMuNS0xNi4yIDE2LjQtNzAuNyAxNi40LTcwLjd6bTIyLjggMTM4LjRjLTEyLjYgMzMtNDMuMyAxOS42LTQzLjMgMTkuNnMtMy41LTExLjggNi40LTQ0LjkgMzMuMy0yMC4yIDMzLjMtMjAuMiAxNi4yIDEyLjQgMy42IDQ1LjV6bTg0LjYtMTQuNnMtMy0xMC41IDguMS0zMC42YzExLTIwLjIgMTkuNi05LjEgMTkuNi05LjFzOS40IDEwLjItMS4zIDI1LjUtMjYuNCAxNC4yLTI2LjQgMTQuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW1waXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4Ny42IDU0LjJjLTEwLjgtMi4yLTIyLjEtMy4zLTMzLjUtMy42VjMyLjRjNzguMSAyLjIgMTQ2LjEgNDQgMTg0LjYgMTA2LjZsLTE1LjggOS4xYy02LjEtOS43LTEyLjctMTguOC0yMC4yLTI3LjFsLTE4IDE1LjVjLTI2LTI5LjYtNjEuNC01MC43LTEwMS45LTU4LjRsNC44LTIzLjl6TTUzLjQgMzIyLjRsMjMtNy43Yy02LjQtMTguMy0xMC0zOC4yLTEwLTU4LjdzMy4zLTQwLjQgOS43LTU4LjdsLTIyLjctNy43YzMuNi0xMC44IDguMy0yMS4zIDEzLjYtMzFsLTE1LjgtOS4xQzM0IDE4MSAyNC4xIDIxNy41IDI0LjEgMjU2czEwIDc1IDI3LjEgMTA2LjZsMTUuOC05LjFjLTUuMy0xMC05LjctMjAuMy0xMy42LTMxLjF6TTIxMy4xIDQzNGMtNDAuNC04LTc1LjgtMjkuMS0xMDEuOS01OC43bC0xOCAxNS44Yy03LjUtOC42LTE0LjQtMTcuNy0yMC4yLTI3LjRsLTE2IDkuNGMzOC41IDYyLjMgMTA2LjggMTA0LjMgMTg0LjkgMTA2LjZ2LTE4LjNjLTExLjMtLjMtMjIuNy0xLjctMzMuNS0zLjZsNC43LTIzLjh6TTkzLjMgMTIwLjlsMTggMTUuNWMyNi0yOS42IDYxLjQtNTAuNyAxMDEuOS01OC40bC00LjctMjMuOGMxMC44LTIuMiAyMi4xLTMuMyAzMy41LTMuNlYzMi40QzE2My45IDM0LjYgOTUuOSA3Ni40IDU3LjQgMTM5bDE1LjggOS4xYzYtOS43IDEyLjYtMTguOSAyMC4xLTI3LjJ6bTMwOS40IDI3MC4ybC0xOC0xNS44Yy0yNiAyOS42LTYxLjQgNTAuNy0xMDEuOSA1OC43bDQuNyAyMy44Yy0xMC44IDEuOS0yMi4xIDMuMy0zMy41IDMuNnYxOC4zYzc4LjEtMi4yIDE0Ni40LTQ0LjMgMTg0LjktMTA2LjZsLTE2LjEtOS40Yy01LjcgOS43LTEyLjYgMTguOC0yMC4xIDI3LjR6TTQ5NiAyNTZjMCAxMzctMTExIDI0OC0yNDggMjQ4UzAgMzkzIDAgMjU2IDExMSA4IDI0OCA4czI0OCAxMTEgMjQ4IDI0OHptLTEyLjIgMGMwLTEzMC4xLTEwNS43LTIzNS44LTIzNS44LTIzNS44UzEyLjIgMTI1LjkgMTIuMiAyNTYgMTE3LjkgNDkxLjggMjQ4IDQ5MS44IDQ4My44IDM4Ni4xIDQ4My44IDI1NnptLTM5LTEwNi42bC0xNS44IDkuMWM1LjMgOS43IDEwIDIwLjIgMTMuNiAzMWwtMjIuNyA3LjdjNi40IDE4LjMgOS43IDM4LjIgOS43IDU4LjdzLTMuNiA0MC40LTEwIDU4LjdsMjMgNy43Yy0zLjkgMTAuOC04LjMgMjEtMTMuNiAzMWwxNS44IDkuMUM0NjIgMzMxIDQ3MS45IDI5NC41IDQ3MS45IDI1NnMtOS45LTc1LTI3LjEtMTA2LjZ6bS0xODMgMTc3LjdjMTYuMy0zLjMgMzAuNC0xMS42IDQwLjctMjMuNWw1MS4yIDQ0LjhjMTEuOS0xMy42IDIxLjMtMjkuMyAyNy4xLTQ2LjhsLTY0LjItMjIuMWMyLjUtNy41IDMuOS0xNS4yIDMuOS0yMy41cy0xLjQtMTYuMS0zLjktMjMuNWw2NC41LTIyLjFjLTYuMS0xNy40LTE1LjUtMzMuMi0yNy40LTQ2LjhsLTUxLjIgNDQuOGMtMTAuMi0xMS45LTI0LjQtMjAuNS00MC43LTIzLjhsMTMuMy02Ni40Yy04LjYtMS45LTE3LjctMi44LTI3LjEtMi44LTkuNCAwLTE4LjUuOC0yNy4xIDIuOGwxMy4zIDY2LjRjLTE2LjMgMy4zLTMwLjQgMTEuOS00MC43IDIzLjhsLTUxLjItNDQuOGMtMTEuOSAxMy42LTIxLjMgMjkuMy0yNy40IDQ2LjhsNjQuNSAyMi4xYy0yLjUgNy41LTMuOSAxNS4yLTMuOSAyMy41czEuNCAxNi4xIDMuOSAyMy41bC02NC4yIDIyLjFjNS44IDE3LjQgMTUuMiAzMy4yIDI3LjEgNDYuOGw1MS4yLTQ0LjhjMTAuMiAxMS45IDI0LjQgMjAuMiA0MC43IDIzLjVsLTEzLjMgNjYuN2M4LjYgMS43IDE3LjcgMi44IDI3LjEgMi44IDkuNCAwIDE4LjUtMS4xIDI3LjEtMi44bC0xMy4zLTY2Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVudmlyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyYzQ3Ny42IDAgMzY2LjYgMzE3LjMgMzY3LjEgMzY2LjNMNDQ4IDQ4MGgtMjZsLTcwLjQtNzEuMmMtMzkgNC4yLTEyNC40IDM0LjUtMjE0LjQtMzdDNDcgMzAwLjMgNTIgMjE0LjcgMCAzMnptNzkuNyA0NmMtNDkuNy0yMy41LTUuMiA5LjItNS4yIDkuMiA0NS4yIDMxLjIgNjYgNzMuNyA5MC4yIDExOS45IDMxLjUgNjAuMiA3OSAxMzkuNyAxNDQuMiAxNjcuNyA2NSAyOCAzNC4yIDEyLjUgNi04LjUtMjguMi0yMS4yLTY4LjItODctOTEtMTMwLjItMzEuNy02MC02MS0xMTguNi0xNDQuMi0xNTguMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXJsYW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg3LjIgNTMuNUgwdjQwNWgxMDAuNGMtNDkuNy01Mi42LTc4LjgtMTI1LjMtNzguNy0yMTIuMS0uMS03Ni43IDI0LTE0Mi43IDY1LjUtMTkyLjl6bTIzOC4yIDkuN2MtNDUuOS4xLTg1LjEgMzMuNS04OS4yIDgzLjJoMTY5LjljLTEuMS00OS43LTM0LjUtODMuMS04MC43LTgzLjJ6bTIzMC43LTkuNmguM2wtLjEtLjF6bS4zIDBjMzEuNCA0Mi43IDQ4LjcgOTcuNSA0Ni4yIDE2Mi43LjUgNiAuNSAxMS43IDAgMjQuMUgyMzAuMmMtLjIgMTA5LjcgMzguOSAxOTQuOSAxMzguNiAxOTUuMyA2OC41LS4zIDExOC01MSAxNTEuOS0xMDYuMWw5Ni40IDQ4LjJjLTE3LjQgMzAuOS0zNi41IDU3LjgtNTcuOSA4MC44SDY0MHYtNDA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFdGhlcmV1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTEuOSAyNjAuOEwxNjAgMzUzLjYgOCAyNjAuOCAxNjAgMGwxNTEuOSAyNjAuOHpNMTYwIDM4My40TDggMjkwLjYgMTYwIDUxMmwxNTItMjIxLjQtMTUyIDkyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV0c3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDM0OGMtMS43NSAxMC43NS0xMy43NSAxMTAtMTUuNSAxMzItMTE3Ljg3OS00LjI5OS0yMTkuODk1LTQuNzQzLTM2OC41IDB2LTI1LjVjNDUuNDU3LTguOTQ4IDYwLjYyNy04LjAxOSA2MS0zNS4yNSAxLjc5My03Mi4zMjIgMy41MjQtMjQ0LjE0MyAwLTMyMi0xLjAyOS0yOC40Ni0xMi4xMy0yNi43NjUtNjEtMzZ2LTI1LjVjNzMuODg2IDIuMzU4IDI1NS45MzMgOC41NTEgMzYyLjk5OS0zLjc1LTMuNSAzOC4yNS03Ljc1IDEyNi41LTcuNzUgMTI2LjVIMzMyQzMyMC45NDcgMTE1LjY2NSAzMTMuMjQxIDY4IDI3Ny4yNSA2OGgtMTM3Yy0xMC4yNSAwLTEwLjc1IDMuNS0xMC43NSA5Ljc1VjI0MS41YzU4IC41IDg4LjUtMi41IDg4LjUtMi41IDI5Ljc3LS45NTEgMjcuNTYtOC41MDIgNDAuNzUtNjUuMjUxaDI1Ljc1Yy00LjQwNyAxMDEuMzUxLTMuOTEgNjEuODI5LTEuNzUgMTYwLjI1SDI1N2MtOS4xNTUtNDAuMDg2LTkuMDY1LTYxLjA0NS0zOS41MDEtNjEuNSAwIDAtMjEuNS0yLTg4LTJ2MTM5YzAgMjYgMTQuMjUgMzguMjUgNDQuMjUgMzguMjVIMjYzYzYzLjYzNiAwIDY2LjU2NC0yNC45OTYgOTguNzUxLTk5Ljc1SDM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXZlcm5vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIwLjgyIDEzMi4yMWMxLjYgMjIuMzEtMTcuNTUgMjEuNTktMjEuNjEgMjEuNTktNjguOTMgMC03My42NC0xLTgzLjU4IDMuMzQtLjU2LjIyLS43NCAwLS4zNy0uMzdMMTIzLjc5IDQ2LjQ1Yy4zOC0uMzcuNi0uMjIuMzguMzctNC4zNSA5Ljk5LTMuMzUgMTUuMDktMy4zNSA4NS4zOXptNzkgMzA4Yy0xNC42OC0zNy4wOCAxMy03Ni45MyA1Mi41Mi03Ni42MiAxNy40OSAwIDIyLjYgMjMuMjEgNy45NSAzMS40Mi02LjE5IDMuMy0yNC45NSAxLjc0LTI1LjE0IDE5LjItLjA1IDE3LjA5IDE5LjY3IDI1IDMxLjIgMjQuODlBNDUuNjQgNDUuNjQgMCAwIDAgMzEyIDM5My40NXYtLjA4YzAtMTEuNjMtNy43OS00Ny4yMi00Ny41NC01NS4zNC03LjcyLTEuNTQtNjUtNi4zNS02OC4zNS01MC41Mi0zLjc0IDE2LjkzLTE3LjQgNjMuNDktNDMuMTEgNjkuMDktOC43NCAxLjk0LTY5LjY4IDcuNjQtMTEyLjkyLTM2Ljc3IDAgMC0xOC41Ny0xNS4yMy0yOC4yMy01Ny45NS0zLjM4LTE1Ljc1LTkuMjgtMzkuNy0xMS4xNC02MiAwLTE4IDExLjE0LTMwLjQ1IDI1LjA3LTMyLjIgODEgMCA5MCAyLjMyIDEwMS03LjggOS44Mi05LjI0IDcuOC0xNS41IDcuOC0xMDIuNzggMS04LjMgNy43OS0zMC44MSA1My40MS0yNC4xNCA2IC44NiAzMS45MSA0LjE4IDM3LjQ4IDMwLjY0bDY0LjI2IDExLjE1YzIwLjQzIDMuNzEgNzAuOTQgNyA4MC42IDU3Ljk0IDIyLjY2IDEyMS4wOSA4LjkxIDIzOC40NiA3LjggMjM4LjQ2QzM2Mi4xNSA0ODUuNTMgMjY3LjA2IDQ4MCAyNjcuMDYgNDgwYy0xOC45NS0uMjMtNTQuMjUtOS40LTY3LjI3LTM5Ljgzem04MC45NC0yMDQuODRjLTEgMS45Mi0yLjIgNiAuODUgNyAxNC4wOSA0LjkzIDM5Ljc1IDYuODQgNDUuODggNS41MyAzLjExLS4yNSAzLjA1LTQuNDMgMi40OC02LjY1LTMuNTMtMjEuODUtNDAuODMtMjYuNS00OS4yNC01LjkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeHBlZGl0ZWRzc2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDQzLjRDMTMwLjYgNDMuNCAzNS40IDEzOC42IDM1LjQgMjU2UzEzMC42IDQ2OC42IDI0OCA0NjguNiA0NjAuNiAzNzMuNCA0NjAuNiAyNTYgMzY1LjQgNDMuNCAyNDggNDMuNHptLTk3LjQgMTMyLjljMC01My43IDQzLjctOTcuNCA5Ny40LTk3LjRzOTcuNCA0My43IDk3LjQgOTcuNHYyNi42YzAgNS0zLjkgOC45LTguOSA4LjloLTE3LjdjLTUgMC04LjktMy45LTguOS04Ljl2LTI2LjZjMC04Mi4xLTEyNC04Mi4xLTEyNCAwdjI2LjZjMCA1LTMuOSA4LjktOC45IDguOWgtMTcuN2MtNSAwLTguOS0zLjktOC45LTguOXYtMjYuNnpNMzg5LjcgMzgwYzAgOS43LTggMTcuNy0xNy43IDE3LjdIMTI0Yy05LjcgMC0xNy43LTgtMTcuNy0xNy43VjIzOC4zYzAtOS43IDgtMTcuNyAxNy43LTE3LjdoMjQ4YzkuNyAwIDE3LjcgOCAxNy43IDE3LjdWMzgwem0tMjQ4LTEzNy4zdjEzMi45YzAgMi41LTEuOSA0LjQtNC40IDQuNGgtOC45Yy0yLjUgMC00LjQtMS45LTQuNC00LjRWMjQyLjdjMC0yLjUgMS45LTQuNCA0LjQtNC40aDguOWMyLjUgMCA0LjQgMS45IDQuNCA0LjR6bTE0MS43IDQ4LjdjMCAxMy03LjIgMjQuNC0xNy43IDMwLjR2MzEuNmMwIDUtMy45IDguOS04LjkgOC45aC0xNy43Yy01IDAtOC45LTMuOS04LjktOC45di0zMS42Yy0xMC41LTYuMS0xNy43LTE3LjQtMTcuNy0zMC40IDAtMTkuNyAxNS44LTM1LjQgMzUuNC0zNS40czM1LjUgMTUuOCAzNS41IDM1LjR6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDc4LjNDMTIxIDQ4Ni4zIDE3LjcgMzgzIDE3LjcgMjU2UzEyMSAyNS43IDI0OCAyNS43IDQ3OC4zIDEyOSA0NzguMyAyNTYgMzc1IDQ4Ni4zIDI0OCA0ODYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZWJvb2tGIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwIDI5OS4zVjUxMkgxOTZWMjk5LjNoODYuNWwxOC05Ny44SDE5NlYxNjYuOWMwLTUxLjcgMjAuMy03MS41IDcyLjctNzEuNWMxNi4zIDAgMjkuNCAuNCAzNyAxLjJWNy45QzI5MS40IDQgMjU2LjQgMCAyMzYuMiAwQzEyOS4zIDAgODAgNTAuNSA4MCAxNTkuNHY0Mi4xSDE0djk3LjhIODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2Vib29rTWVzc2VuZ2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ni41NSA4QzExNi41MiA4IDggMTEwLjM0IDggMjQ4LjU3YzAgNzIuMyAyOS43MSAxMzQuNzggNzguMDcgMTc3Ljk0IDguMzUgNy41MSA2LjYzIDExLjg2IDguMDUgNTguMjNBMTkuOTIgMTkuOTIgMCAwIDAgMTIyIDUwMi4zMWM1Mi45MS0yMy4zIDUzLjU5LTI1LjE0IDYyLjU2LTIyLjdDMzM3Ljg1IDUyMS44IDUwNCA0MjMuNyA1MDQgMjQ4LjU3IDUwNCAxMTAuMzQgMzk2LjU5IDggMjU2LjU1IDh6bTE0OS4yNCAxODUuMTNsLTczIDExNS41N2EzNy4zNyAzNy4zNyAwIDAgMS01My45MSA5LjkzbC01OC4wOC00My40N2ExNSAxNSAwIDAgMC0xOCAwbC03OC4zNyA1OS40NGMtMTAuNDYgNy45My0yNC4xNi00LjYtMTcuMTEtMTUuNjdsNzMtMTE1LjU3YTM3LjM2IDM3LjM2IDAgMCAxIDUzLjkxLTkuOTNsNTguMDYgNDMuNDZhMTUgMTUgMCAwIDAgMTggMGw3OC40MS01OS4zOGMxMC40NC03Ljk4IDI0LjE0IDQuNTQgMTcuMDkgMTUuNjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2Vib29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAyNTZDNTEyIDExNC42IDM5Ny40IDAgMjU2IDBTMCAxMTQuNiAwIDI1NkMwIDM3NiA4Mi43IDQ3Ni44IDE5NC4yIDUwNC41VjMzNC4ySDE0MS40VjI1Nmg1Mi44VjIyMi4zYzAtODcuMSAzOS40LTEyNy41IDEyNS0xMjcuNWMxNi4yIDAgNDQuMiAzLjIgNTUuNyA2LjRWMTcyYy02LS42LTE2LjUtMS0yOS42LTFjLTQyIDAtNTguMiAxNS45LTU4LjIgNTcuMlYyNTZoODMuNmwtMTQuNCA3OC4ySDI4N1Y1MTAuMUM0MTMuOCA0OTQuOCA1MTIgMzg2LjkgNTEyIDI1NmgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYW50YXN5RmxpZ2h0R2FtZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyLjg2TDMyLjg2IDI1NiAyNTYgNDc5LjE0IDQ3OS4xNCAyNTYgMjU2IDMyLjg2ek04OC4zNCAyNTUuODNjMS45Ni0yIDExLjkyLTEyLjMgOTYuNDktOTcuNDggNDEuNDUtNDEuNzUgODYuMTktNDMuNzcgMTE5Ljc3LTE4LjY5IDI0LjYzIDE4LjQgNjIuMDYgNTguOSA2Mi4xNSA1OSAuNjguNzQgMS4wNyAyLjg2LjU4IDMuMzgtMTEuMjcgMTEuODQtMjIuNjggMjMuNTQtMzMuNSAzNC42OS0zNC4yMS0zMi4zMS00MC41Mi0zOC4yNC00OC41MS00My45NS0xNy43Ny0xMi42OS00MS40LTEwLjEzLTU2Ljk4IDUuMS0yLjE3IDIuMTMtMS43OSAzLjQzLjEyIDUuMzUgMi45NCAyLjk1IDI4LjEgMjguMzMgMzUuMDkgMzUuNzgtMTEuOTUgMTEuNi0yMy42NiAyMi45Ny0zNS42OSAzNC42Ni0xMi4wMi0xMi41NC0yNC40OC0yNS41My0zNi41NC0zOC4xMS0yMS4zOSAyMS4wOS00MS42OSA0MS4xMS02MS44NSA2MC45OXptMjM0LjgyIDEwMS42Yy0zNS40OSAzNS40My03OC4wOSAzOC4xNC0xMDYuOTkgMjAuNDctMjIuMDgtMTMuNS0zOS4zOC0zMi4wOC03Mi45My02Ni44NCAxMi4wNS0xMi4zNyAyMy43OS0yNC40MiAzNS4zNy0zNi4zMSAzMy4wMiAzMS45MSAzNy4wNiAzNi4wMSA0NC42OCA0Mi4wOSAxOC40OCAxNC43NCA0Mi41MiAxMy42NyA1OS4zMi0xLjggMy42OC0zLjM5IDMuNjktMy42NC4xNC03LjI0LTEwLjU5LTEwLjczLTIxLjE5LTIxLjQ0LTMxLjc3LTMyLjE4LTEuMzItMS4zNC0zLjAzLTIuNDgtLjgtNC42OSAxMC43OS0xMC43MSAyMS40OC0yMS41MiAzMi4yMS0zMi4yOS4yNi0uMjYuNjUtLjM4IDEuOTEtMS4wNyAxMi4zNyAxMi44NyAyNC45MiAyNS45MiAzNy4yNSAzOC43NSAyMS4wMS0yMC43MyA0MS4yNC00MC42OCA2MS4yNS02MC40MiAxMy42OCAxMy40IDI3LjEzIDI2LjU4IDQwLjg2IDQwLjAzLTIwLjE3IDIwLjg2LTgxLjY4IDgyLjcxLTEwMC41IDEwMS41ek0yNTYgMEwwIDI1NmwyNTYgMjU2IDI1Ni0yNTZMMjU2IDB6TTE2IDI1NkwyNTYgMTZsMjQwIDI0MC0yNDAgMjQwTDE2IDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmVkZXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTg2IDI4NC41bDUzLjMtNTkuOWgtNjIuNGwtMjEuNyAyNC44LTIyLjUtMjQuOEg0MTR2LTE2aDU2LjF2LTQ4LjFIMzE4LjlWMjM2aC0uNWMtOS42LTExLTIxLjUtMTQuOC0zNS40LTE0LjgtMjguNCAwLTQ5LjggMTkuNC01Ny4zIDQ0LjktMTgtNTkuNC05Ny40LTU3LjYtMTIxLjktMTR2LTI0LjJINDl2LTI2LjJoNjB2LTQxLjFIMFYzNDVoNDl2LTc3LjVoNDguOWMtMS41IDUuNy0yLjMgMTEuOC0yLjMgMTguMiAwIDczLjEgMTAyLjYgOTEuNCAxMzAuMiAyMy43aC00MmMtMTQuNyAyMC45LTQ1LjggOC45LTQ1LjgtMTQuNmg4NS41YzMuNyAzMC41IDI3LjQgNTYuOSA2MC4xIDU2LjkgMTQuMSAwIDI3LTYuOSAzNC45LTE4LjZoLjVWMzQ1aDIxMi4ybDIyLjEtMjUgMjIuMyAyNUg2NDBsLTU0LTYwLjV6bS00NDYuNy0xNi42YzYuMS0yNi4zIDQxLjctMjUuNiA0Ni41IDBoLTQ2LjV6bTE1My40IDQ4LjljLTM0LjYgMC0zNC02Mi44IDAtNjIuOCAzMi42IDAgMzQuNSA2Mi44IDAgNjIuOHptMTY3LjggMTkuMWgtOTQuNFYxNjkuNGg5NXYzMC4ySDQwNXYzMy45aDU1LjV2MjguMWgtNTYuMXY0NC43aDU2LjF2MjkuNnptLTQ1LjktMzkuOHYtMjQuNGg1Ni4xdi00NGw1MC43IDU3LTUwLjcgNTd2LTQ1LjZoLTU2LjF6bTEzOC42IDEwLjNsLTI2LjEgMjkuNUg0ODlsNDUuNi01MS4yLTQ1LjYtNTEuMmgzOS43bDI2LjYgMjkuMyAyNS42LTI5LjNoMzguNWwtNDUuNCA1MSA0NiA1MS40aC00MC41bC0yNi4zLTI5LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlZG9yYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uMDQxMyAyNTUuOEMuMTIxOSAxMzIuMiAxMDAuMyAzMiAyMjQgMzJDMzQ3LjcgMzIgNDQ4IDEzMi4zIDQ0OCAyNTZDNDQ4IDM3OS43IDM0Ny44IDQ3OS45IDIyNC4xIDQ4MEg1MC45M0MyMi44NCA0ODAgLjA4MzIgNDU3LjMgLjA0MTYgNDI5LjJIMFYyNTUuOEguMDQxM3pNMzQyLjYgMTkyLjdDMzQyLjYgMTUzIDMwNyAxMjQuMiAyNjkuNCAxMjQuMkMyMzQuNSAxMjQuMiAyMDMuNiAxNTAuNSAxOTkuMyAxODQuMUMxOTkuMSAxODcuOSAxOTguOSAxODkuMSAxOTguOSAxOTIuNkMxOTguOCAyMTMuNyAxOTguOSAyMzUuNCAxOTguMSAyNTdDMTk5IDI4My4xIDE5OS4xIDMwOS4xIDE5OC4xIDMzMy42QzE5OC4xIDM2MC43IDE3OC43IDM3OS4xIDE1My40IDM3OS4xQzEyOC4xIDM3OS4xIDEwNy42IDM1OC45IDEwNy42IDMzMy42QzEwOC4xIDMwNS45IDEzMC4yIDI4OC4zIDE1Ni4xIDI4Ny41SDE1Ni4zTDE4Mi42IDI4Ny4zVjI1MEwxNTYuMyAyNTAuMkMxMDkuMiAyNDkuOCA3MS43MiAyODYuNyA3MC4zNiAzMzMuNkM3MC4zNiAzNzkuMiAxMDcuOSA0MTYuNSAxNTMuNCA0MTYuNUMxOTYuNCA0MTYuNSAyMzIuMSAzODIuOSAyMzYgMzQwLjlMMjM2LjIgMjg3LjRMMjY4LjggMjg3LjFDMjk0LjEgMjg3LjMgMjkzLjggMjQ5LjMgMjY4LjYgMjQ5LjhMMjM2LjIgMjUwLjFDMjM2LjIgMjQzLjcgMjM2LjMgMjM3LjMgMjM2LjMgMjMwLjlDMjM2LjQgMjE4LjIgMjM2LjQgMjA1LjUgMjM2LjIgMTkyLjdDMjM2LjMgMTc2LjIgMjUyIDE2MS41IDI2OS40IDE2MS41QzI4Ni45IDE2MS41IDMwNS4zIDE3MC4yIDMwNS4zIDE5Mi43QzMwNS4zIDE5NS45IDMwNS4yIDE5Ny44IDMwNSAxOTlDMzAzLjEgMjA5LjUgMzEwLjIgMjE5LjQgMzIwLjcgMjIwLjlDMzMxLjMgMjIyLjQgMzQwLjkgMjE0LjggMzQxLjkgMjA0LjNDMzQyLjUgMjAwLjEgMzQyLjYgMTk2LjQgMzQyLjYgMTkyLjdIMzQyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpZ21hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDk1Ljc5MjRDMTQgNDIuODg3NyA1Ni44ODc4IDAgMTA5Ljc5MyAwSDI3NC4xNjFDMzI3LjA2NiAwIDM2OS45NTQgNDIuODg3NyAzNjkuOTU0IDk1Ljc5MjRDMzY5Ljk1NCAxMjkuMjkyIDM1Mi43NTggMTU4Ljc3NiAzMjYuNzExIDE3NS44OTdDMzUyLjc1OCAxOTMuMDE5IDM2OS45NTQgMjIyLjUwMiAzNjkuOTU0IDI1Ni4wMDJDMzY5Ljk1NCAzMDguOTA3IDMyNy4wNjYgMzUxLjc5NSAyNzQuMTYxIDM1MS43OTVIMjcyLjA4MUMyNDcuMjc5IDM1MS43OTUgMjI0LjY3OCAzNDIuMzY5IDIwNy42NjYgMzI2LjkwNFY0MTUuMTY3QzIwNy42NjYgNDY4Ljc3NyAxNjMuNjU3IDUxMiAxMTAuMzA5IDUxMkM1Ny41MzYxIDUxMiAxNCA0NjkuMjQzIDE0IDQxNi4yMDdDMTQgMzgyLjcwOSAzMS4xOTQ1IDM1My4yMjcgNTcuMjM5MiAzMzYuMTA1QzMxLjE5NDUgMzE4Ljk4MyAxNCAyODkuNSAxNCAyNTYuMDAyQzE0IDIyMi41MDIgMzEuMTk2IDE5My4wMTkgNTcuMjQyNSAxNzUuODk3QzMxLjE5NiAxNTguNzc2IDE0IDEyOS4yOTIgMTQgOTUuNzkyNFpNMTc2LjI4OCAxOTEuNTg3SDEwOS43OTNDNzQuMjE3MiAxOTEuNTg3IDQ1LjM3NzggMjIwLjQyNyA0NS4zNzc4IDI1Ni4wMDJDNDUuMzc3OCAyOTEuNDQgNzMuOTk0OCAzMjAuMTk0IDEwOS4zODEgMzIwLjQxNkMxMDkuNTE4IDMyMC40MTUgMTA5LjY1NSAzMjAuNDE1IDEwOS43OTMgMzIwLjQxNUgxNzYuMjg4VjE5MS41ODdaTTIwNy42NjYgMjU2LjAwMkMyMDcuNjY2IDI5MS41NzcgMjM2LjUwNSAzMjAuNDE3IDI3Mi4wODEgMzIwLjQxN0gyNzQuMTYxQzMwOS43MzcgMzIwLjQxNyAzMzguNTc2IDI5MS41NzcgMzM4LjU3NiAyNTYuMDAyQzMzOC41NzYgMjIwLjQyNyAzMDkuNzM3IDE5MS41ODcgMjc0LjE2MSAxOTEuNTg3SDI3Mi4wODFDMjM2LjUwNSAxOTEuNTg3IDIwNy42NjYgMjIwLjQyNyAyMDcuNjY2IDI1Ni4wMDJaTTEwOS43OTMgMzUxLjc5NUMxMDkuNjU1IDM1MS43OTUgMTA5LjUxOCAzNTEuNzk0IDEwOS4zODEgMzUxLjc5NEM3My45OTQ4IDM1Mi4wMTUgNDUuMzc3OCAzODAuNzY5IDQ1LjM3NzggNDE2LjIwN0M0NS4zNzc4IDQ1MS42NTIgNzQuNjAyNSA0ODAuNjIyIDExMC4zMDkgNDgwLjYyMkMxNDYuNTkxIDQ4MC42MjIgMTc2LjI4OCA0NTEuMTg2IDE3Ni4yODggNDE1LjE2N1YzNTEuNzk1SDEwOS43OTNaTTEwOS43OTMgMzEuMzc3OEM3NC4yMTcyIDMxLjM3NzggNDUuMzc3OCA2MC4yMTczIDQ1LjM3NzggOTUuNzkyNEM0NS4zNzc4IDEzMS4zNjggNzQuMjE3MiAxNjAuMjA3IDEwOS43OTMgMTYwLjIwN0gxNzYuMjg4VjMxLjM3NzhIMTA5Ljc5M1pNMjA3LjY2NiAxNjAuMjA3SDI3NC4xNjFDMzA5LjczNyAxNjAuMjA3IDMzOC41NzYgMTMxLjM2OCAzMzguNTc2IDk1Ljc5MjRDMzM4LjU3NiA2MC4yMTczIDMwOS43MzcgMzEuMzc3OCAyNzQuMTYxIDMxLjM3NzhIMjA3LjY2NlYxNjAuMjA3WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJlZm94QnJvd3NlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzAuMjIgMTI3LjU0OEMxMzAuMzggMTI3LjU1OCAxMzAuMyAxMjcuNTU4IDEzMC4yMiAxMjcuNTQ4VjEyNy41NDhaTTQ4MS42NCAxNzIuODk4QzQ3MS4wMyAxNDcuMzk4IDQ0OS41NiAxMTkuODk4IDQzMi43IDExMS4xNjhDNDQ2LjQyIDEzOC4wNTggNDU0LjM3IDE2NS4wNDggNDU3LjQgMTg1LjE2OEM0NTcuNDA1IDE4NS4zMDYgNDU3LjQyMiAxODUuNDQzIDQ1Ny40NSAxODUuNTc4QzQyOS44NyAxMTYuODI4IDM4My4wOTggODkuMTA4OSAzNDQuOSAyOC43NDc5QzMyOS45MDggNS4wNTc5MiAzMzMuOTc2IDMuNTE3OTIgMzMxLjgyIDQuMDg3OTJMMzMxLjcgNC4xNTc5MkMyODQuOTkgMzAuMTEwOSAyNTYuMzY1IDgyLjUyODkgMjQ5LjEyIDEyNi44OThDMjMyLjUwMyAxMjcuNzcxIDIxNi4yMTkgMTMxLjg5NSAyMDEuMTkgMTM5LjAzNUMxOTkuODM4IDEzOS42NDkgMTk4LjczNiAxNDAuNzA2IDE5OC4wNjYgMTQyLjAzMUMxOTcuMzk2IDE0My4zNTYgMTk3LjE5OSAxNDQuODcgMTk3LjUwNiAxNDYuMzIzQzE5Ny43IDE0Ny4xNjIgMTk4LjA2OCAxNDcuOTUxIDE5OC41ODYgMTQ4LjYzOUMxOTkuMTAzIDE0OS4zMjcgMTk5Ljc2IDE0OS44OTkgMjAwLjUxMiAxNTAuMzE4QzIwMS4yNjQgMTUwLjczNyAyMDIuMDk2IDE1MC45OTMgMjAyLjk1NCAxNTEuMDcxQzIwMy44MTEgMTUxLjE0OCAyMDQuNjc2IDE1MS4wNDUgMjA1LjQ5MSAxNTAuNzY4TDIwNi4wMTEgMTUwLjU1OEMyMjEuNTExIDE0My4yNTUgMjM4LjQwOCAxMzkuMzkzIDI1NS41NDEgMTM5LjIzOEMzMTguMzY5IDEzOC42NjkgMzUyLjY5OCAxODMuMjYyIDM2My4xNjEgMjAxLjUyOEMzNTAuMTYxIDE5Mi4zNzggMzI2LjgxMSAxODMuMzM4IDMwNC4zNDEgMTg3LjI0OEMzOTIuMDgxIDIzMS4xMDggMzY4LjU0MSAzODEuNzg0IDI0Ni45NTEgMzc2LjQ0OEMxODcuNDg3IDM3My44MzggMTQ5Ljg4MSAzMjUuNDY3IDE0Ni40MjEgMjg1LjY0OEMxNDYuNDIxIDI4NS42NDggMTU3LjY3MSAyNDMuNjk4IDIyNy4wNDEgMjQzLjY5OEMyMzQuNTQxIDI0My42OTggMjU1Ljk3MSAyMjIuNzc4IDI1Ni4zNzEgMjE2LjY5OEMyNTYuMjgxIDIxNC42OTggMjEzLjgzNiAxOTcuODIyIDE5Ny4yODEgMTgxLjUxOEMxODguNDM0IDE3Mi44MDUgMTg0LjIyOSAxNjguNjExIDE4MC41MTEgMTY1LjQ1OEMxNzguNDk5IDE2My43NSAxNzYuMzkyIDE2Mi4xNTggMTc0LjIwMSAxNjAuNjg4QzE2OC42MzggMTQxLjIzMSAxNjguMzk5IDEyMC42MzggMTczLjUxIDEwMS4wNThDMTQ4LjQ1IDExMi40NjggMTI4Ljk2IDEzMC41MDggMTE0LjggMTQ2LjQyOEgxMTQuNjhDMTA1LjAxIDEzNC4xNzggMTA1LjY4IDkzLjc3NzkgMTA2LjI1IDg1LjM0NzlDMTA2LjEzIDg0LjgxNzkgOTkuMDIyIDg5LjAxNTkgOTguMSA4OS42NTc5Qzg5LjUzNDIgOTUuNzEwMyA4MS41NTI4IDEwMi41NSA3NC4yNiAxMTAuMDg4QzU3Ljk2OSAxMjYuNjg4IDMwLjEyOCAxNjAuMjQyIDE4Ljc2IDIxMS4zMThDMTQuMjI0IDIzMS43MDEgMTIgMjU1LjczOSAxMiAyNjMuNjE4QzEyIDM5OC4zMTggMTIxLjIxIDUwNy41MDggMjU1LjkyIDUwNy41MDhDMzc2LjU2IDUwNy41MDggNDc4LjkzOSA0MjAuMjgxIDQ5Ni4zNSAzMDQuODg4QzUwNy45MjIgMjI4LjE5MiA0ODEuNjQgMTczLjgyIDQ4MS42NCAxNzIuODk4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJlZm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMy41MiwyNDEuNDhjLS4xMi0xLjU2LS4yNC0zLjEyLS4yNC00LjY4di0uMTJsLS4zNi00LjY4di0uMTJhMjQ1Ljg2LDI0NS44NiwwLDAsMC03LjMyLTQxLjE1YzAtLjEyLDAtLjEyLS4xMi0uMjRsLTEuMDgtNGMtLjEyLS4yNC0uMTItLjQ4LS4yNC0uNi0uMzYtMS4yLS43Mi0yLjUyLTEuMDgtMy43Mi0uMTItLjI0LS4xMi0uNi0uMjQtLjg0LS4zNi0xLjItLjcyLTIuNC0xLjA4LTMuNDgtLjEyLS4zNi0uMjQtLjYtLjM2LTEtLjM2LTEuMi0uNzItMi4yOC0xLjItMy40OGwtLjM2LTEuMDhjLS4zNi0xLjA4LS44NC0yLjI4LTEuMi0zLjM2YTguMjcsOC4yNywwLDAsMC0uMzYtMWMtLjQ4LTEuMDgtLjg0LTIuMjgtMS4zMi0zLjM2LS4xMi0uMjQtLjI0LS42LS4zNi0uODQtLjQ4LTEuMi0xLTIuMjgtMS40NC0zLjQ4LDAtLjEyLS4xMi0uMjQtLjEyLS4zNi0xLjU2LTMuODQtMy4yNC03LjY4LTUtMTEuNGwtLjM2LS43MmMtLjQ4LTEtLjg0LTEuOC0xLjMyLTIuNjQtLjI0LS40OC0uNDgtMS4wOC0uNzItMS41Ni0uMzYtLjg0LS44NC0xLjU2LTEuMi0yLjQtLjM2LS42LS42LTEuMi0xLTEuOHMtLjg0LTEuNDQtMS4yLTIuMjhjLS4zNi0uNi0uNzItMS4zMi0xLjA4LTEuOTJzLS44NC0xLjQ0LTEuMi0yLjE2YTE4LjA3LDE4LjA3LDAsMCwwLTEuMi0yYy0uMzYtLjcyLS44NC0xLjMyLTEuMi0ycy0uODQtMS4zMi0xLjItMi0uODQtMS4zMi0xLjItMS45Mi0uODQtMS40NC0xLjMyLTIuMTZhMTUuNjMsMTUuNjMsMCwwLDAtMS4yLTEuOEw0NjMuMiwxMTlhMTUuNjMsMTUuNjMsMCwwLDAtMS4yLTEuOGMtLjQ4LS43Mi0xLjA4LTEuNTYtMS41Ni0yLjI4LS4zNi0uNDgtLjcyLTEuMDgtMS4wOC0xLjU2bC0xLjgtMi41MmMtLjM2LS40OC0uNi0uODQtMS0xLjMyLTEtMS4zMi0xLjgtMi41Mi0yLjc2LTMuNzJhMjQ4Ljc2LDI0OC43NiwwLDAsMC0yMy41MS0yNi42NEExODYuODIsMTg2LjgyLDAsMCwwLDQxMiw2Mi40NmMtNC0zLjQ4LTguMTYtNi43Mi0xMi40OC05Ljg0YTE2Mi40OSwxNjIuNDksMCwwLDAtMjQuNi0xNS4xMmMtMi40LTEuMzItNC44LTIuNTItNy4yLTMuNzJhMjU0LDI1NCwwLDAsMC01NS40My0xOS41NmMtMS45Mi0uMzYtMy44NC0uODQtNS42NC0xLjJoLS4xMmMtMS0uMTItMS44LS4zNi0yLjc2LS40OGEyMzYuMzUsMjM2LjM1LDAsMCwwLTM4LTRIMjU1LjE0YTIzNC42MiwyMzQuNjIsMCwwLDAtNDUuNDgsNWMtMzMuNTksNy4wOC02My4yMywyMS4yNC04Mi45MSwzOS0xLjA4LDEtMS45MiwxLjY4LTIuNCwyLjE2bC0uNDguNDhIMTI0bC0uMTIuMTIuMTItLjEyYS4xMi4xMiwwLDAsMCwuMTItLjEybC0uMTIuMTJhLjQyLjQyLDAsMCwxLC4yNC0uMTJjMTQuNjQtOC43NiwzNC45Mi0xNiw0OS40NC0xOS41Nmw1Ljg4LTEuNDRjLjM2LS4xMi44NC0uMTIsMS4yLS4yNCwxLjY4LS4zNiwzLjM2LS43Miw1LjE2LTEuMDguMjQsMCwuNi0uMTIuODQtLjEyQzI1MC45NCwyMC45NCwzMTkuMzQsNDAuMTQsMzY3LDg1LjYxYTE3MS40OSwxNzEuNDksMCwwLDEsMjYuODgsMzIuNzZjMzAuMzYsNDkuMiwyNy40OCwxMTEuMTEsMy44NCwxNDcuNTktMzQuNDQsNTMtMTExLjM1LDcxLjI3LTE1OSwyNC44NGE4NC4xOSw4NC4xOSwwLDAsMS0yNS41Ni01OSw3NC4wNSw3NC4wNSwwLDAsMSw2LjI0LTMxYzEuNjgtMy44NCwxMy4wOC0yNS42NywxOC4yNC0yNC41OS0xMy4wOC0yLjc2LTM3LjU1LDIuNjQtNTQuNzEsMjguMTktMTUuMzYsMjIuOTItMTQuNTIsNTguMi01LDgzLjI4YTEzMi44NSwxMzIuODUsMCwwLDEtMTIuMTItMzkuMjRjLTEyLjI0LTgyLjU1LDQzLjMxLTE1Myw5NC4zMS0xNzAuNTEtMjcuNDgtMjQtOTYuNDctMjIuMzEtMTQ3LjcxLDE1LjM2LTI5Ljg4LDIyLTUxLjIzLDUzLjE2LTYyLjUxLDkwLjM2LDEuNjgtMjAuODgsOS42LTUyLjA4LDI1LjgtODMuODgtMTcuMTYsOC44OC0zOSwzNy00OS44LDYyLjg4LTE1LjYsMzcuNDMtMjEsODIuMTktMTYuMDgsMTI0Ljc5LjM2LDMuMjQuNzIsNi4zNiwxLjA4LDkuNiwxOS45MiwxMTcuMTEsMTIyLDIwNi4zOCwyNDQuNzgsMjA2LjM4QzM5Mi43Nyw1MDMuNDIsNTA0LDM5Mi4xOSw1MDQsMjU1LDUwMy44OCwyNTAuNDgsNTAzLjc2LDI0NS45Miw1MDMuNTIsMjQxLjQ4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJzdE9yZGVyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTAgNDg4LjIxQzExNS4zNCA0OTYuMjEgNy43OSAzODguNjYgNy43OSAyNTZTMTE1LjM0IDE1Ljc5IDI0OCAxNS43OSA0ODguMjEgMTIzLjM0IDQ4OC4yMSAyNTYgMzgwLjY2IDQ5Ni4yMSAyNDggNDk2LjIxem0wLTQ1OS45MkMxMjYuNjYgMzYuMjkgMjguMjkgMTM0LjY2IDI4LjI5IDI1NlMxMjYuNjYgNDc1LjcxIDI0OCA0NzUuNzEgNDY3LjcxIDM3Ny4zNCA0NjcuNzEgMjU2IDM2OS4zNCAzNi4yOSAyNDggMzYuMjl6bTAgNDMxLjIyYy0xMTYuODEgMC0yMTEuNTEtOTQuNjktMjExLjUxLTIxMS41MVMxMzEuMTkgNDQuNDkgMjQ4IDQ0LjQ5IDQ1OS41MSAxMzkuMTkgNDU5LjUxIDI1NiAzNjQuODEgNDY3LjUxIDI0OCA0NjcuNTF6bTE4Ni4yMy0xNjIuOThhMTkxLjYxMyAxOTEuNjEzIDAgMCAxLTIwLjEzIDQ4LjY5bC03NC4xMy0zNS44OCA2MS40OCA1NC44MmExOTMuNTE1IDE5My41MTUgMCAwIDEtMzcuMiAzNy4yOWwtNTQuOC02MS41NyAzNS44OCA3NC4yN2ExOTAuOTQ0IDE5MC45NDQgMCAwIDEtNDguNjMgMjAuMjNsLTI3LjI5LTc4LjQ3IDQuNzkgODIuOTNjLTguNjEgMS4xOC0xNy40IDEuOC0yNi4zMyAxLjhzLTE3LjcyLS42Mi0yNi4zMy0xLjhsNC43Ni04Mi40Ni0yNy4xNSA3OC4wM2ExOTEuMzY1IDE5MS4zNjUgMCAwIDEtNDguNjUtMjAuMmwzNS45My03NC4zNC01NC44NyA2MS42NGExOTMuODUgMTkzLjg1IDAgMCAxLTM3LjIyLTM3LjI4bDYxLjU5LTU0LjktNzQuMjYgMzUuOTNhMTkxLjYzOCAxOTEuNjM4IDAgMCAxLTIwLjE0LTQ4LjY5bDc3Ljg0LTI3LjExLTgyLjIzIDQuNzZjLTEuMTYtOC41Ny0xLjc4LTE3LjMyLTEuNzgtMjYuMjEgMC05IC42My0xNy44NCAxLjgyLTI2LjUxbDgyLjM4IDQuNzctNzcuOTQtMjcuMTZhMTkxLjcyNiAxOTEuNzI2IDAgMCAxIDIwLjIzLTQ4LjY3bDc0LjIyIDM1LjkyLTYxLjUyLTU0Ljg2YTE5My44NSAxOTMuODUgMCAwIDEgMzcuMjgtMzcuMjJsNTQuNzYgNjEuNTMtMzUuODMtNzQuMTdhMTkxLjQ5IDE5MS40OSAwIDAgMSA0OC42NS0yMC4xM2wyNi44NyA3Ny4yNS00LjcxLTgxLjYxYzguNjEtMS4xOCAxNy4zOS0xLjggMjYuMzItMS44czE3LjcxLjYyIDI2LjMyIDEuOGwtNC43NCA4Mi4xNiAyNy4wNS03Ny43NmMxNy4yNyA0LjUgMzMuNiAxMS4zNSA0OC42MyAyMC4xN2wtMzUuODIgNzQuMTIgNTQuNzItNjEuNDdhMTkzLjEzIDE5My4xMyAwIDAgMSAzNy4yNCAzNy4yM2wtNjEuNDUgNTQuNzcgNzQuMTItMzUuODZhMTkxLjUxNSAxOTEuNTE1IDAgMCAxIDIwLjIgNDguNjVsLTc3LjgxIDI3LjEgODIuMjQtNC43NWMxLjE5IDguNjYgMS44MiAxNy41IDEuODIgMjYuNDkgMCA4Ljg4LS42MSAxNy42My0xLjc4IDI2LjE5bC04Mi4xMi00Ljc1IDc3LjcyIDI3LjA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJzdE9yZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjkgMjI5LjJjLjEtLjEuMi0uMy4zLS40IDAgLjEgMCAuMy0uMS40aC0uMnpNMjI0IDk2LjZjLTcuMSAwLTE0LjYuNi0yMS40IDEuN2wzLjcgNjcuNC0yMi02NGMtMTQuMyAzLjctMjcuNyA5LjQtNDAgMTYuNmwyOS40IDYxLjQtNDUuMS01MC45Yy0xMS40IDguOS0yMS43IDE5LjEtMzAuNiAzMC45bDUwLjYgNDUuNC02MS4xLTI5LjdjLTcuMSAxMi4zLTEyLjkgMjUuNy0xNi42IDQwbDY0LjMgMjIuNi02OC00Yy0uOSA3LjEtMS40IDE0LjYtMS40IDIycy42IDE0LjYgMS40IDIxLjdsNjcuNy00LTY0IDIyLjZjMy43IDE0LjMgOS40IDI3LjcgMTYuNiA0MC4zbDYxLjEtMjkuN0w5Ny43IDM1MmM4LjkgMTEuNyAxOS4xIDIyLjMgMzAuOSAzMC45bDQ0LjktNTAuOS0yOS41IDYxLjRjMTIuMyA3LjQgMjUuNyAxMy4xIDQwIDE2LjlsMjIuMy02NC42LTQgNjhjNy4xIDEuMSAxNC42IDEuNyAyMS43IDEuNyA3LjQgMCAxNC42LS42IDIxLjctMS43bC00LTY4LjYgMjIuNiA2NS4xYzE0LjMtNCAyNy43LTkuNCA0MC0xNi45TDI3NC45IDMzMmw0NC45IDUwLjljMTEuNy04LjkgMjItMTkuMSAzMC42LTMwLjlsLTUwLjYtNDUuMSA2MS4xIDI5LjRjNy4xLTEyLjMgMTIuOS0yNS43IDE2LjYtNDAuM2wtNjQtMjIuMyA2Ny40IDRjMS4xLTcuMSAxLjQtMTQuMyAxLjQtMjEuN3MtLjMtMTQuOS0xLjQtMjJsLTY3LjcgNCA2NC0yMi4zYy0zLjctMTQuMy05LjEtMjgtMTYuNi00MC4zbC02MC45IDI5LjcgNTAuNi00NS40Yy04LjktMTEuNy0xOS4xLTIyLTMwLjYtMzAuOWwtNDUuMSA1MC45IDI5LjQtNjEuMWMtMTIuMy03LjQtMjUuNy0xMy4xLTQwLTE2LjlMMjQxLjcgMTY2bDQtNjcuN2MtNy4xLTEuMi0xNC4zLTEuNy0yMS43LTEuN3pNNDQzLjQgMTI4djI1NkwyMjQgNTEyIDQuNiAzODRWMTI4TDIyNCAwbDIxOS40IDEyOHptLTE3LjEgMTAuM0wyMjQgMjAuOSAyMS43IDEzOC4zdjIzNS4xTDIyNCA0OTEuMWwyMDIuMy0xMTcuN1YxMzguM3pNMjI0IDM3LjFsMTg3LjcgMTA5LjR2MjE4LjlMMjI0IDQ3NC45IDM2LjMgMzY1LjRWMTQ2LjZMMjI0IDM3LjF6bTAgNTAuOWMtOTIuMyAwLTE2Ni45IDc1LjEtMTY2LjkgMTY4IDAgOTIuNiA3NC42IDE2Ny43IDE2Ni45IDE2Ny43IDkyIDAgMTY2LjktNzUuMSAxNjYuOS0xNjcuNyAwLTkyLjktNzQuOS0xNjgtMTY2LjktMTY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJzdGRyYWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxOTJoLTY0djEyOEgxOTJ2MTI4SDB2LTI1LjZoMTY2LjR2LTEyOGgxMjh2LTEyOEgzODRWMTkyem0tMjUuNiAzOC40djEyOGgtMTI4djEyOEg2NFY1MTJoMTkyVjM4NGgxMjhWMjMwLjRoLTI1LjZ6bTI1LjYgMTkyaC04OS42VjUxMkgzMjB2LTY0aDY0di0yNS42ek0wIDB2Mzg0aDEyOFYyNTZoMTI4VjEyOGgxMjhWMEgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGlja3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTQ0LjUgMzE5Yy0zNS4xIDAtNjMuNS0yOC40LTYzLjUtNjMuNXMyOC40LTYzLjUgNjMuNS02My41IDYzLjUgMjguNCA2My41IDYzLjUtMjguNCA2My41LTYzLjUgNjMuNXptMTU5IDBjLTM1LjEgMC02My41LTI4LjQtNjMuNS02My41czI4LjQtNjMuNSA2My41LTYzLjUgNjMuNSAyOC40IDYzLjUgNjMuNS0yOC40IDYzLjUtNjMuNSA2My41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGlwYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMySDB6bTM1OC40IDE3OS4yaC04OS42djg5LjZoLTg5LjZ2ODkuNkg4OS42VjEyMS42aDI2OC44djg5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTcuOCA0MjcuOGMxMi45IDExLjcgMzMuNyAzMy4zIDMzLjIgNTAuNyAwIC44LS4xIDEuNi0uMSAyLjUtMS44IDE5LjgtMTguOCAzMS4xLTM5LjEgMzEtMjUtLjEtMzkuOS0xNi44LTM4LjctMzUuOCAxLTE2LjIgMjAuNS0zNi43IDMyLjQtNDcuNiAyLjMtMi4xIDIuNy0yLjcgNS42LTMuNiAzLjQgMCAzLjkuMyA2LjcgMi44ek0zMzEuOSA2Ny4zYy0xNi4zLTI1LjctMzguNi00MC42LTYzLjMtNTIuMUMyNDMuMSA0LjUgMjE0LS4yIDE5MiAwYy00NC4xIDAtNzEuMiAxMy4yLTgxLjEgMTcuM0M1Ny4zIDQ1LjIgMjYuNSA4Ny4yIDI4IDE1OC42YzcuMSA4Mi4yIDk3IDE3NiAxNTUuOCAyMzMuOCAxLjcgMS42IDQuNSA0LjUgNi4yIDUuMWwzLjMuMWMyLjEtLjcgMS44LS41IDMuNS0yLjEgNTIuMy00OS4yIDE0MC43LTE0NS44IDE1NS45LTIxNS43IDctMzkuMiAzLjEtNzIuNS0yMC44LTExMi41ek0xODYuOCAzNTEuOWMtMjgtNTEuMS02NS4yLTEzMC43LTY5LjMtMTg5LTMuNC00Ny41IDExLjQtMTMxLjIgNjkuMy0xMzYuN3YzMjUuN3pNMzI4LjcgMTgwYy0xNi40IDU2LjgtNzcuMyAxMjgtMTE4LjkgMTcwLjNDMjM3LjYgMjk4LjQgMjc1IDIxNyAyNzcgMTU4LjRjMS42LTQ1LjktOS44LTEwNS44LTQ4LTEzMS40IDg4LjggMTguMyAxMTUuNSA5OC4xIDk5LjcgMTUzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250QXdlc29tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05MS43IDk2QzEwNi4zIDg2LjggMTE2IDcwLjUgMTE2IDUyQzExNiAyMy4zIDkyLjcgMCA2NCAwUzEyIDIzLjMgMTIgNTJjMCAxNi43IDcuOCAzMS41IDIwIDQxbDAgMyAwIDM1MiAwIDY0IDY0IDAgMC02NCAzNzMuNiAwYzE0LjYgMCAyNi40LTExLjggMjYuNC0yNi40YzAtMy43LS44LTcuMy0yLjMtMTAuN0w0MzIgMjcybDYxLjctMTM4LjljMS41LTMuNCAyLjMtNyAyLjMtMTAuN2MwLTE0LjYtMTEuOC0yNi40LTI2LjQtMjYuNEw5MS43IDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250aWNvbnNGaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTQuNCAyMjRoOTIuNGwtMTUuMiA1MS4yaC03Ni40VjQzM2MwIDgtMi44IDkuMiA0LjQgMTBsNTkuNiA1LjZWNDgzSDB2LTM1LjJsMjkuMi0yLjhjNy4yLS44IDkuMi0zLjIgOS4yLTEwLjhWMjc4LjRjMC0zLjItNC0zLjItOC0zLjJIMFYyMjRoMzguNHYtMjguOGMwLTY4IDM2LjQtOTYgMTA2LTk2IDQ2LjggMCA4OC44IDExLjIgODguOCA3Mi40bC02OS42IDguNGMuNC0yNS42LTYtMzEuNi0yMi40LTMxLjYtMjUuMiAwLTI2IDEzLjYtMjYgMzcuNnYzMmMwIDMuMi00LjggNi0uOCA2ek0zODQgNDgzSDI0My4ydi0zNC40bDI4LTMuNmM3LjItLjggMTAuNC0yLjQgMTAuNC0xMFYyODdjMC01LjYtNC05LjItOS4yLTEwLjhsLTMzLjItOC44IDkuMi00MC40aDExMHYyMDhjMCA4LTMuNiA4LjggNCAxMGwyMS42IDMuNlY0ODN6bS0zMC0zNDcuMmwxMi40IDQ1LjYtMTAgMTAtNDIuOC0yMi44LTQyLjggMjIuOC0xMC0xMCAxMi40LTQ1LjYtMzAtMzYuNCA0LjgtMTBoMzhMMzA3LjIgNTFIMzIwbDIxLjIgMzguNGgzOGw0LjggMTMuMi0zMCAzMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250aWNvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMyem0xODcgMTQwLjljLTE4LjQgMC0xOSA5LjktMTkgMjcuNHYyMy4zYzAgMi40LTMuNSA0LjQtLjYgNC40aDY3LjRsLTExLjEgMzcuM0gxNjh2MTEyLjljMCA1LjgtMiA2LjcgMy4yIDcuM2w0My41IDQuMXYyNS4xSDg0VjM4OWwyMS4zLTJjNS4yLS42IDYuNy0yLjMgNi43LTcuOVYyNjcuN2MwLTIuMy0yLjktMi4zLTUuOC0yLjNIODRWMjI4aDI4di0yMWMwLTQ5LjYgMjYuNS03MCA3Ny4zLTcwIDM0LjEgMCA2NC43IDguMiA2NC43IDUyLjhsLTUwLjcgNi4xYy4zLTE4LjctNC40LTIzLTE2LjMtMjN6bTc0LjMgMjQxLjh2LTI1LjFsMjAuNC0yLjZjNS4yLS42IDcuNi0xLjcgNy42LTcuM1YyNzEuOGMwLTQuMS0yLjktNi43LTYuNy03LjlsLTI0LjItNi40IDYuNy0yOS41aDgwLjJ2MTUxLjdjMCA1LjgtMi42IDYuNCAyLjkgNy4zbDE1LjcgMi42djI1LjF6bTgwLjgtMjU1LjVsOSAzMy4yLTcuMyA3LjMtMzEuMi0xNi42LTMxLjIgMTYuNi03LjMtNy4zIDktMzMuMi0yMS44LTI0LjIgMy41LTkuNmgyNy43bDE1LjUtMjhoOS4zbDE1LjUgMjhoMjcuN2wzLjUgOS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb3J0QXdlc29tZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggMjM3LjRoLTIyLjJjLTIuMSAwLTMuNyAxLjYtMy43IDMuN3Y1MS43YzAgMi4xIDEuNiAzLjcgMy43IDMuN0gyMDhjMi4xIDAgMy43LTEuNiAzLjctMy43di01MS43YzAtMi4xLTEuNi0zLjctMy43LTMuN3ptMTE4LjIgMEgzMDRjLTIuMSAwLTMuNyAxLjYtMy43IDMuN3Y1MS43YzAgMi4xIDEuNiAzLjcgMy43IDMuN2gyMi4yYzIuMSAwIDMuNy0xLjYgMy43LTMuN3YtNTEuN2MtLjEtMi4xLTEuNy0zLjctMy43LTMuN3ptMTMyLTEyNS4xYy0yLjMtMy4yLTQuNi02LjQtNy4xLTkuNS05LjgtMTIuNS0yMC44LTI0LTMyLjgtMzQuNC00LjUtMy45LTkuMS03LjYtMTMuOS0xMS4yLTEuNi0xLjItMy4yLTIuMy00LjgtMy41QzM3MiAzNC4xIDM0MC4zIDIwIDMwNiAxM2MtMTYuMi0zLjMtMzIuOS01LTUwLTVzLTMzLjkgMS43LTUwIDVjLTM0LjMgNy4xLTY2IDIxLjItOTMuMyA0MC44LTEuNiAxLjEtMy4yIDIuMy00LjggMy41LTQuOCAzLjYtOS40IDcuMy0xMy45IDExLjItMyAyLjYtNS45IDUuMy04LjggOHMtNS43IDUuNS04LjQgOC40Yy01LjUgNS43LTEwLjcgMTEuOC0xNS42IDE4LTIuNCAzLjEtNC44IDYuMy03LjEgOS41QzI1LjIgMTUzIDguMyAyMDIuNSA4LjMgMjU2YzAgMiAuMSA0IC4xIDYgLjEuNy4xIDEuMy4xIDIgLjEgMS4zLjEgMi43LjIgNCAwIC44LjEgMS41LjEgMi4zIDAgMS4zLjEgMi41LjIgMy43LjEuOC4xIDEuNi4yIDIuNC4xIDEuMS4yIDIuMy4zIDMuNSAwIC44LjEgMS42LjIgMi40LjEgMS4yLjMgMi40LjQgMy42LjEuOC4yIDEuNS4zIDIuMy4xIDEuMy4zIDIuNi41IDMuOS4xLjYuMiAxLjMuMyAxLjlsLjkgNS43Yy4xLjYuMiAxLjEuMyAxLjcuMyAxLjMuNSAyLjcuOCA0IC4yLjguMyAxLjYuNSAyLjQuMiAxIC41IDIuMS43IDMuMi4yLjkuNCAxLjcuNiAyLjYuMiAxIC40IDIgLjcgMyAuMi45LjUgMS44LjcgMi43LjMgMSAuNSAxLjkuOCAyLjkuMy45LjUgMS44LjggMi43LjIuOS41IDEuOS44IDIuOHMuNSAxLjguOCAyLjdjLjMgMSAuNiAxLjkuOSAyLjguNiAxLjYgMS4xIDMuMyAxLjcgNC45LjQgMSAuNyAxLjkgMSAyLjguMyAxIC43IDIgMS4xIDMgLjMuOC42IDEuNS45IDIuM2wxLjIgM2MuMy43LjYgMS41LjkgMi4yLjQgMSAuOSAyIDEuMyAzbC45IDIuMWMuNSAxIC45IDIgMS40IDMgLjMuNy42IDEuMy45IDIgLjUgMSAxIDIuMSAxLjUgMy4xLjIuNi41IDEuMS44IDEuNy42IDEuMSAxLjEgMi4yIDEuNyAzLjMuMS4yLjIuMy4zLjUgMi4yIDQuMSA0LjQgOC4yIDYuOCAxMi4yLjIuNC41LjguNyAxLjIuNyAxLjEgMS4zIDIuMiAyIDMuMy4zLjUuNi45LjkgMS40LjYgMS4xIDEuMyAyLjEgMiAzLjIuMy41LjYuOS45IDEuNC43IDEuMSAxLjQgMi4xIDIuMSAzLjIuMi40LjUuOC44IDEuMi43IDEuMSAxLjUgMi4yIDIuMyAzLjMuMi4yLjMuNS41LjcgMzcuNSA1MS43IDk0LjQgODguNSAxNjAgOTkuNC45LjEgMS43LjMgMi42LjQgMSAuMiAyLjEuNCAzLjEuNXMxLjkuMyAyLjguNGMxIC4yIDIgLjMgMyAuNC45LjEgMS45LjIgMi45LjNzMS45LjIgMi45LjMgMi4xLjIgMy4xLjNjLjkuMSAxLjguMSAyLjcuMiAxLjEuMSAyLjMuMSAzLjQuMi44IDAgMS43LjEgMi41LjEgMS4zIDAgMi42LjEgMy45LjEuNy4xIDEuNC4xIDIuMS4xIDIgLjEgNCAuMSA2IC4xczQtLjEgNi0uMWMuNyAwIDEuNC0uMSAyLjEtLjEgMS4zIDAgMi42IDAgMy45LS4xLjggMCAxLjctLjEgMi41LS4xIDEuMS0uMSAyLjMtLjEgMy40LS4yLjkgMCAxLjgtLjEgMi43LS4yIDEtLjEgMi4xLS4yIDMuMS0uM3MxLjktLjIgMi45LS4zYy45LS4xIDEuOS0uMiAyLjktLjNzMi0uMyAzLS40IDEuOS0uMyAyLjgtLjRjMS0uMiAyLjEtLjMgMy4xLS41LjktLjEgMS43LS4zIDIuNi0uNCA2NS42LTExIDEyMi41LTQ3LjcgMTYwLjEtMTAyLjQuMi0uMi4zLS41LjUtLjcuOC0xLjEgMS41LTIuMiAyLjMtMy4zLjItLjQuNS0uOC44LTEuMi43LTEuMSAxLjQtMi4xIDIuMS0zLjIuMy0uNS42LS45LjktMS40LjYtMS4xIDEuMy0yLjEgMi0zLjIuMy0uNS42LS45LjktMS40LjctMS4xIDEuMy0yLjIgMi0zLjMuMi0uNC41LS44LjctMS4yIDIuNC00IDQuNi04LjEgNi44LTEyLjIuMS0uMi4yLS4zLjMtLjUuNi0xLjEgMS4xLTIuMiAxLjctMy4zLjItLjYuNS0xLjEuOC0xLjcuNS0xIDEtMi4xIDEuNS0zLjEuMy0uNy42LTEuMy45LTIgLjUtMSAxLTIgMS40LTNsLjktMi4xYy41LTEgLjktMiAxLjMtMyAuMy0uNy42LTEuNS45LTIuMmwxLjItM2MuMy0uOC42LTEuNS45LTIuMy40LTEgLjctMiAxLjEtM3MuNy0xLjkgMS0yLjhjLjYtMS42IDEuMi0zLjMgMS43LTQuOS4zLTEgLjYtMS45LjktMi44cy41LTEuOC44LTIuN2MuMi0uOS41LTEuOS44LTIuOHMuNi0xLjguOC0yLjdjLjMtMSAuNS0xLjkuOC0yLjkuMi0uOS41LTEuOC43LTIuNy4yLTEgLjUtMiAuNy0zIC4yLS45LjQtMS43LjYtMi42LjItMSAuNS0yLjEuNy0zLjIuMi0uOC4zLTEuNi41LTIuNC4zLTEuMy42LTIuNy44LTQgLjEtLjYuMi0xLjEuMy0xLjdsLjktNS43Yy4xLS42LjItMS4zLjMtMS45LjEtMS4zLjMtMi42LjUtMy45LjEtLjguMi0xLjUuMy0yLjMuMS0xLjIuMy0yLjQuNC0zLjYgMC0uOC4xLTEuNi4yLTIuNC4xLTEuMS4yLTIuMy4zLTMuNS4xLS44LjEtMS42LjItMi40LjEgMS43LjEuNS4yLS43IDAtLjguMS0xLjUuMS0yLjMuMS0xLjMuMi0yLjcuMi00IC4xLS43LjEtMS4zLjEtMiAuMS0yIC4xLTQgLjEtNiAwLTUzLjUtMTYuOS0xMDMtNDUuOC0xNDMuN3pNNDQ4IDM3MS41Yy05LjQgMTUuNS0yMC42IDI5LjktMzMuNiA0Mi45LTIwLjYgMjAuNi00NC41IDM2LjctNzEuMiA0OC0xMy45IDUuOC0yOC4yIDEwLjMtNDIuOSAxMy4ydi03NS44YzAtNTguNi04OC42LTU4LjYtODguNiAwdjc1LjhjLTE0LjctMi45LTI5LTcuMy00Mi45LTEzLjItMjYuNy0xMS4zLTUwLjYtMjcuNC03MS4yLTQ4LTEzLTEzLTI0LjItMjcuNC0zMy42LTQyLjl2LTcxLjNjMC0yLjEgMS42LTMuNyAzLjctMy43aDIyLjFjMi4xIDAgMy43IDEuNiAzLjcgMy43VjMyNmgyOS42VjE4MmMwLTIuMSAxLjYtMy43IDMuNy0zLjdoMjIuMWMyLjEgMCAzLjcgMS42IDMuNyAzLjd2MjUuOWgyOS41VjE4MmMwLTIuMSAxLjYtMy43IDMuNy0zLjdIMjA4YzIuMSAwIDMuNyAxLjYgMy43IDMuN3YyNS45aDI5LjVWMTgyYzAtNC44IDYuNS0zLjcgOS41LTMuN1Y4OC4xYy00LjQtMi03LjQtNi43LTcuNC0xMS41IDAtMTYuOCAyNS40LTE2LjggMjUuNCAwIDAgNC44LTMgOS40LTcuNCAxMS41VjkyYzYuMy0xLjQgMTIuNy0yLjMgMTkuMi0yLjMgOS40IDAgMTguNCAzLjUgMjYuMyAzLjUgNy4yIDAgMTUuMi0zLjUgMTkuNC0zLjUgMi4xIDAgMy43IDEuNiAzLjcgMy43djQ4LjRjMCA1LjYtMTguNyA2LjUtMjIuNCA2LjUtOC42IDAtMTYuNi0zLjUtMjUuNC0zLjUtNyAwLTE0LjEgMS4yLTIwLjggMi44djMwLjdjMyAwIDkuNS0xLjEgOS41IDMuN3YyNS45aDI5LjVWMTgyYzAtMi4xIDEuNi0zLjcgMy43LTMuN2gyMi4yYzIuMSAwIDMuNyAxLjYgMy43IDMuN3YyNS45aDI5LjVWMTgyYzAtMi4xIDEuNi0zLjcgMy43LTMuN2gyMi4xYzIuMSAwIDMuNyAxLjYgMy43IDMuN3YxNDRoMjkuNXYtMjUuOGMwLTIuMSAxLjYtMy43IDMuNy0zLjdoMjIuMmMyLjEgMCAzLjcgMS42IDMuNyAzLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvcnRBd2Vzb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OS4yIDI4Ny45aC0yNy40Yy0yLjYgMC00LjYgMi00LjYgNC42djMyaC0zNi42VjE0Ni4yYzAtMi42LTItNC42LTQuNi00LjZoLTI3LjRjLTIuNiAwLTQuNiAyLTQuNiA0LjZ2MzJoLTM2LjZ2LTMyYzAtMi42LTItNC42LTQuNi00LjZoLTI3LjRjLTIuNiAwLTQuNiAyLTQuNiA0LjZ2MzJoLTM2LjZ2LTMyYzAtNi04LTQuNi0xMS43LTQuNnYtMzhjOC4zLTIgMTcuMS0zLjQgMjUuNy0zLjQgMTAuOSAwIDIwLjkgNC4zIDMxLjQgNC4zIDQuNiAwIDI3LjctMS4xIDI3LjctOHYtNjBjMC0yLjYtMi00LjYtNC42LTQuNi01LjEgMC0xNS4xIDQuMy0yNCA0LjMtOS43IDAtMjAuOS00LjMtMzIuNi00LjMtOCAwLTE2IDEuMS0yMy43IDIuOXYtNC45YzUuNC0yLjYgOS4xLTguMyA5LjEtMTQuMyAwLTIwLjctMzEuNC0yMC44LTMxLjQgMCAwIDYgMy43IDExLjcgOS4xIDE0LjN2MTExLjdjLTMuNyAwLTExLjctMS40LTExLjcgNC42djMyaC0zNi42di0zMmMwLTIuNi0yLTQuNi00LjYtNC42aC0yNy40Yy0yLjYgMC00LjYgMi00LjYgNC42djMySDEyOHYtMzJjMC0yLjYtMi00LjYtNC42LTQuNkg5NmMtMi42IDAtNC42IDItNC42IDQuNnYxNzguM0g1NC44di0zMmMwLTIuNi0yLTQuNi00LjYtNC42SDIyLjhjLTIuNiAwLTQuNiAyLTQuNiA0LjZWNTEyaDE4Mi45di05NmMwLTcyLjYgMTA5LjctNzIuNiAxMDkuNyAwdjk2aDE4Mi45VjI5Mi41Yy4xLTIuNi0xLjktNC42LTQuNS00LjZ6bS0yODguMS00LjVjMCAyLjYtMiA0LjYtNC42IDQuNmgtMjcuNGMtMi42IDAtNC42LTItNC42LTQuNnYtNjRjMC0yLjYgMi00LjYgNC42LTQuNmgyNy40YzIuNiAwIDQuNiAyIDQuNiA0LjZ2NjR6bTE0Ni40IDBjMCAyLjYtMiA0LjYtNC42IDQuNmgtMjcuNGMtMi42IDAtNC42LTItNC42LTQuNnYtNjRjMC0yLjYgMi00LjYgNC42LTQuNmgyNy40YzIuNiAwIDQuNiAyIDQuNiA0LjZ2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvcnVtYmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuOCAzMDkuN0MyIDI5Mi43IDAgMjc1LjUgMCAyNTguMyAwIDEzNSA5OS44IDM1IDIyMy4xIDM1YzE2LjYgMCAzMy4zIDIgNDkuMyA1LjVDMTQ5IDg3LjUgNTEuOSAxODYgNS44IDMwOS43em0zOTIuOS0xODkuMkMzODUgMTAzIDM2OSA4Ny44IDM1MC45IDc1LjJjLTE0OS42IDQ0LjMtMjY2LjMgMTYyLjEtMzA5LjcgMzEyIDEyLjUgMTguMSAyOCAzNS42IDQ1LjIgNDkgNDMuMS0xNTEuMyAxNjEuMi0yNzEuNyAzMTIuMy0zMTUuN3ptMTUuOCAyNTIuN2MxNS4yLTI1LjEgMjUuNC01My43IDI5LjUtODIuOC03OS40IDQyLjktMTQ1IDExMC42LTE4Ny42IDE5MC4zIDMwLTQuNCA1OC45LTE1LjMgODQuNi0zMS4zIDM1IDEzLjEgNzAuOSAyNC4zIDEwNyAzMy42LTkuMy0zNi41LTIwLjQtNzQuNS0zMy41LTEwOS44em0yOS43LTE0NS41Yy0yLjYtMTkuNS03LjktMzguNy0xNS44LTU2LjhDMjkwLjUgMjE2LjcgMTgyIDMyNy41IDEzNy4xIDQ2NmMxOC4xIDcuNiAzNyAxMi41IDU2LjYgMTUuMkMyNDAgMzY3LjEgMzMwLjUgMjc0LjQgNDQ0LjIgMjI3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvdXJzcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM2OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIzLjEgM0g0OS45QzEyLjQgMyAwIDMxLjMgMCA0OS4xdjQzMy44YzAgMjAuMyAxMi4xIDI3LjcgMTguMiAzMC4xIDYuMiAyLjUgMjIuOCA0LjYgMzIuOS03LjFDMTgwIDM1Ni41IDE4Mi4yIDM1NCAxODIuMiAzNTRjMy4xLTMuNCAzLjQtMy4xIDYuOC0zLjFoODMuNGMzNS4xIDAgNDAuNi0yNS4yIDQ0LjMtMzkuN2w0OC42LTI0M0MzNzMuOCAyNS44IDM2My4xIDMgMzIzLjEgM3ptLTE2LjMgNzMuOGwtMTEuNCA1OS43Yy0xLjIgNi41LTkuNSAxMy4yLTE2LjkgMTMuMkgxNzIuMWMtMTIgMC0yMC42IDguMy0yMC42IDIwLjN2MTNjMCAxMiA4LjYgMjAuNiAyMC42IDIwLjZoOTAuNGM4LjMgMCAxNi42IDkuMiAxNC44IDE4LjItMS44IDguOS0xMC41IDUzLjgtMTEuNCA1OC44LS45IDQuOS02LjggMTMuNS0xNi45IDEzLjVoLTczLjVjLTEzLjUgMC0xNy4yIDEuOC0yNi41IDEyLjYgMCAwLTguOSAxMS40LTg5LjUgMTA4LjMtLjkuOS0xLjguNi0xLjgtLjNWNzUuOWMwLTcuNyA2LjgtMTYuNiAxNi42LTE2LjZoMjE5YzguMiAwIDE1LjYgNy43IDEzLjUgMTcuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnJlZUNvZGVDYW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk3LjIyLDk2LjIxYzEwLjM2LTEwLjY1LDE2LTE3LjEyLDE2LTIxLjksMC0yLjc2LTEuOTItNS41MS0zLjgzLTcuNDJBMTQuODEsMTQuODEsMCwwLDAsMTAxLDY0LjA1Yy04LjQ4LDAtMjAuOTIsOC43OS0zNS44NCwyNS42OUMyMy42OCwxMzcsMi41MSwxODIuODEsMy4zNywyNTAuMzRzMTcuNDcsMTE3LDU0LjA2LDE2MS44N0M3Ni4yMiw0MzUuODYsOTAuNjIsNDQ4LDEwMC45LDQ0OGExMy41NSwxMy41NSwwLDAsMCw4LjM3LTMuODRjMS45MS0yLjc2LDMuODEtNS42MywzLjgxLTguMzgsMC01LjYzLTMuODYtMTIuMi0xMy4yLTIwLjU1LTQ0LjQ1LTQyLjMzLTY3LjMyLTk3LTY3LjQ4LTE2NUMzMi4yNSwxODguOCw1NCwxMzcuODMsOTcuMjIsOTYuMjFaTTIzOS40Nyw0MjAuMDdjLjU4LjM3LjkxLjU1LjkxLjU1Wm05My43OS41NS4xNy0uMTNDMzMzLjI0LDQyMC42MiwzMzMuMTcsNDIwLjY3LDMzMy4yNiw0MjAuNjJabTMuMTMtMTU4LjE4Yy0xNi4yNC00LjE1LDUwLjQxLTgyLjg5LTY4LjA1LTE3Ny4xNywwLDAsMTUuNTQsNDkuMzgtNjIuODMsMTU5LjU3LTc0LjI3LDEwNC4zNSwyMy40NiwxNjguNzMsMzQsMTc1LjIzLTYuNzMtNC4zNS00Ny40LTM1LjcsOS41NS0xMjguNjQsMTEtMTguMywyNS41My0zNC44Nyw0My41LTcyLjE2LDAsMCwxNS45MSwyMi40NSw3LjYsNzEuMTNDMjg3LjcsMzY0LDM1NCwzNDIuOTEsMzU1LDM0My45NGMyMi43NSwyNi43OC0xNy43Miw3My41MS0yMS41OCw3Ni41NSw1LjQ5LTMuNjUsMTE3LjcxLTc4LDMzLTE4OC4xQzM2MC40MywyMzguNCwzNTIuNjIsMjY2LjU5LDMzNi4zOSwyNjIuNDRaTTUxMC44OCw4OS42OUM0OTYsNzIuNzksNDgzLjUyLDY0LDQ3NSw2NGExNC44MSwxNC44MSwwLDAsMC04LjM5LDIuODRjLTEuOTEsMS45MS0zLjgzLDQuNjYtMy44Myw3LjQyLDAsNC43OCw1LjYsMTEuMjYsMTYsMjEuOSw0My4yMyw0MS42MSw2NSw5Mi41OSw2NC44MiwxNTQuMDYtLjE2LDY4LTIzLDEyMi42My02Ny40OCwxNjUtOS4zNCw4LjM1LTEzLjE4LDE0LjkyLTEzLjIsMjAuNTUsMCwyLjc1LDEuOSw1LjYyLDMuODEsOC4zOEExMy42MSwxMy42MSwwLDAsMCw0NzUuMSw0NDhjMTAuMjgsMCwyNC42OC0xMi4xMyw0My40Ny0zNS43OSwzNi41OS00NC44NSw1My4xNC05NC4zOCw1NC4wNi0xNjEuODdTNTUyLjMyLDEzNyw1MTAuODgsODkuNjlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZyZWVic2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAzLjcgOTYuMmMxMS4xLTExLjEgMTE1LjUtNzcgMTM5LjItNTMuMiAyMy43IDIzLjctNDIuMSAxMjguMS01My4yIDEzOS4yLTExLjEgMTEuMS0zOS40LjktNjMuMS0yMi45LTIzLjgtMjMuNy0zNC4xLTUyLTIyLjktNjMuMXpNMTA5LjkgNjguMUM3My42IDQ3LjUgMjIgMjQuNiA1LjYgNDEuMWMtMTYuNiAxNi42IDcuMSA2OS40IDI3LjkgMTA1LjcgMTguNS0zMi4yIDQ0LjgtNTkuMyA3Ni40LTc4Ljd6TTQwNi43IDE3NGMzLjMgMTEuMyAyLjcgMjAuNy0yLjcgMjYuMS0yMC4zIDIwLjMtODcuNS0yNy0xMDkuMy03MC4xLTE4LTMyLjMtMTEuMS01My40IDE0LjktNDguNyA1LjctMy42IDEyLjMtNy42IDE5LjYtMTEuNi0yOS44LTE1LjUtNjMuNi0yNC4zLTk5LjUtMjQuMy0xMTkuMSAwLTIxNS42IDk2LjUtMjE1LjYgMjE1LjYgMCAxMTkgOTYuNSAyMTUuNiAyMTUuNiAyMTUuNlM0NDUuMyAzODAuMSA0NDUuMyAyNjFjMC0zOC40LTEwLjEtNzQuNS0yNy43LTEwNS44LTMuOSA3LTcuNiAxMy4zLTEwLjkgMTguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnVsY3J1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NS43NSAxNjQuMTRsLTM1LjM4IDQzLjU1TDI1IDE2NC4xNGwzNS4zOC00My41NXpNMTQ0LjIzIDBsLTIwLjU0IDE5OC4xOEw3Mi43MiAyNTZsNTEgNTcuODJMMTQ0LjIzIDUxMlYzMDAuODlMMTAzLjE1IDI1Nmw0MS4wOC00NC44OXptNzkuNjcgMTY0LjE0bDM1LjM4IDQzLjU1IDM1LjM4LTQzLjU1LTM1LjM4LTQzLjU1em0tNDguNDggNDdMMjE2LjUgMjU2bC00MS4wOCA0NC44OVY1MTJMMTk2IDMxMy44MiAyNDcgMjU2bC01MS01Ny44MkwxNzUuNDIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2FsYWN0aWNSZXB1YmxpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggNTA0QzExMS4yNSA1MDQgMCAzOTIuNzUgMCAyNTZTMTExLjI1IDggMjQ4IDhzMjQ4IDExMS4yNSAyNDggMjQ4LTExMS4yNSAyNDgtMjQ4IDI0OHptMC00NzkuNDdDMTIwLjM3IDI0LjUzIDE2LjUzIDEyOC4zNyAxNi41MyAyNTZTMTIwLjM3IDQ4Ny40NyAyNDggNDg3LjQ3IDQ3OS40NyAzODMuNjMgNDc5LjQ3IDI1NiAzNzUuNjMgMjQuNTMgMjQ4IDI0LjUzem0yNy42MiAyMS44MXYyNC42MmExODUuOTMzIDE4NS45MzMgMCAwIDEgODMuNTcgMzQuNTRsMTcuMzktMTcuMzZjLTI4Ljc1LTIyLjA2LTYzLjMtMzYuODktMTAwLjk2LTQxLjh6bS01NS4zNy4wN2MtMzcuNjQgNC45NC03Mi4xNiAxOS44LTEwMC44OCA0MS44NWwxNy4yOCAxNy4zNmguMDhjMjQuMDctMTcuODQgNTIuNTUtMzAuMDYgODMuNTItMzQuNjdWNDYuNDF6bTEyLjI1IDUwLjE3djgyLjg3Yy0xMC4wNCAyLjAzLTE5LjQyIDUuOTQtMjcuNjcgMTEuNDJsLTU4LjYyLTU4LjU5LTIxLjkzIDIxLjkzIDU4LjY3IDU4LjY3Yy01LjQ3IDguMjMtOS40NSAxNy41OS0xMS40NyAyNy42MmgtODIuOXYzMWg4Mi45YzIuMDIgMTAuMDIgNi4wMSAxOS4zMSAxMS40NyAyNy41NGwtNTguNjcgNTguNjkgMjEuOTMgMjEuOTMgNTguNjItNTguNjJhNzcuODczIDc3Ljg3MyAwIDAgMCAyNy42NyAxMS40N3Y4Mi45aDMxdi04Mi45YzEwLjA1LTIuMDMgMTkuMzctNi4wNiAyNy42Mi0xMS41NWw1OC42NyA1OC42OSAyMS45My0yMS45My01OC42Ny01OC42OWM1LjQ2LTguMjMgOS40Ny0xNy41MiAxMS41LTI3LjU0aDgyLjg3di0zMWgtODIuODdjLTIuMDItMTAuMDItNi4wMy0xOS4zOC0xMS41LTI3LjYybDU4LjY3LTU4LjY3LTIxLjkzLTIxLjkzLTU4LjY3IDU4LjY3Yy04LjI1LTUuNDktMTcuNTctOS40Ny0yNy42Mi0xMS41Vjk2LjU4aC0zMXptMTgzLjI0IDMwLjcybC0xNy4zNiAxNy4zNmExODYuMzM3IDE4Ni4zMzcgMCAwIDEgMzQuNjcgODMuNjdoMjQuNjJjLTQuOTUtMzcuNjktMTkuODMtNzIuMjktNDEuOTMtMTAxLjAzem0tMzM1LjU1LjEzYy0yMi4wNiAyOC43Mi0zNi45MSA2My4yNi00MS44NSAxMDAuOTFoMjQuNjVjNC42LTMwLjk2IDE2Ljc2LTU5LjQ1IDM0LjU5LTgzLjUybC0xNy4zOS0xNy4zOXpNMzguMzQgMjgzLjY3YzQuOTIgMzcuNjQgMTkuNzUgNzIuMTggNDEuOCAxMDAuOWwxNy4zNi0xNy4zOWMtMTcuODEtMjQuMDctMjkuOTItNTIuNTctMzQuNTEtODMuNTJIMzguMzR6bTM5NC43IDBjLTQuNjEgMzAuOTktMTYuOCA1OS41LTM0LjY3IDgzLjZsMTcuMzYgMTcuMzZjMjIuMDgtMjguNzQgMzYuOTgtNjMuMjkgNDEuOTMtMTAwLjk2aC0yNC42MnpNMTM2LjY2IDQwNi4zOGwtMTcuMzYgMTcuMzZjMjguNzMgMjIuMDkgNjMuMyAzNi45OCAxMDAuOTYgNDEuOTN2LTI0LjY0Yy0zMC45OS00LjYzLTU5LjUzLTE2Ljc5LTgzLjYtMzQuNjV6bTIyMi41My4wNWMtMjQuMDkgMTcuODQtNTIuNTggMzAuMDgtODMuNTcgMzQuNjd2MjQuNTdjMzcuNjctNC45MiA3Mi4yMS0xOS43OSAxMDAuOTYtNDEuODVsLTE3LjMxLTE3LjM5aC0uMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdhbGFjdGljU2VuYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OS44NiAzMy40OHYyNi4wN0MyMzYuMjggODAuMTcgMjI2IDE2OC4xNCAyMjUuMzkgMjc0LjljMTEuNzQtMTUuNjIgMTkuMTMtMzMuMzMgMTkuMTMtNDguMjR2LTE2Ljg4Yy0uMDMtNS4zMi43NS0xMC41MyAyLjE5LTE1LjY1LjY1LTIuMTQgMS4zOS00LjA4IDIuNjItNS44MiAxLjIzLTEuNzUgMy40My0zLjc5IDYuNjgtMy43OSAzLjI0IDAgNS40NSAyLjA1IDYuNjggMy43OSAxLjIzIDEuNzUgMS45NyAzLjY4IDIuNjIgNS44MiAxLjQ0IDUuMTIgMi4yMiAxMC4zMyAyLjE5IDE1LjY1djE2Ljg4YzAgMTQuOTEgNy4zOSAzMi42MiAxOS4xMyA0OC4yNC0uNjMtMTA2Ljc2LTEwLjkxLTE5NC43My0yNC40OS0yMTUuMzVWMzMuNDhoLTEyLjI4em0tMjYuMzQgMTQ3Ljc3Yy05LjUyIDIuMTUtMTguNyA1LjE5LTI3LjQ2IDkuMDggOC45IDE2LjEyIDkuNzYgMzIuNjQgMS43MSAzNy4yOS04IDQuNjItMjEuODUtNC4yMy0zMS4zNi0xOS44Mi0xMS41OCA4Ljc5LTIxLjg4IDE5LjMyLTMwLjU2IDMxLjA5IDE0LjczIDkuNjIgMjIuODkgMjIuOTIgMTguMzIgMzAuNjYtNC41NCA3LjctMjAuMDMgNy4xNC0zNS40Ny0uOTYtNS43OCAxMy4yNS05Ljc1IDI3LjUxLTExLjY1IDQyLjQyIDkuNjguMTggMTguNjcgMi4zOCAyNi4xOCA2LjA0IDE3Ljc4LS4zIDMyLjc3LTEuOTYgNDAuNDktNC4yMiA1LjU1LTI2LjM1IDIzLjAyLTQ4LjIzIDQ2LjMyLTU5LjUxLjczLTI1LjU1IDEuODgtNDkuNjcgMy40OC03Mi4wN3ptNjQuOTYgMGMxLjU5IDIyLjQgMi43NSA0Ni41MiAzLjQ3IDcyLjA3IDIzLjI5IDExLjI4IDQwLjc3IDMzLjE2IDQ2LjMyIDU5LjUxIDcuNzIgMi4yNiAyMi43MSAzLjkyIDQwLjQ5IDQuMjIgNy41MS0zLjY2IDE2LjUtNS44NSAyNi4xOC02LjA0LTEuOS0xNC45MS01Ljg2LTI5LjE3LTExLjY1LTQyLjQyLTE1LjQ0IDguMS0zMC45MyA4LjY2LTM1LjQ3Ljk2LTQuNTctNy43NCAzLjYtMjEuMDUgMTguMzItMzAuNjYtOC42OC0xMS43Ny0xOC45OC0yMi4zLTMwLjU2LTMxLjA5LTkuNTEgMTUuNTktMjMuMzYgMjQuNDQtMzEuMzYgMTkuODItOC4wNS00LjY1LTcuMTktMjEuMTYgMS43MS0zNy4yOWExNDcuNDkgMTQ3LjQ5IDAgMCAwLTI3LjQ1LTkuMDh6bS0zMi40OCA4LjZjLTMuMjMgMC01Ljg2IDguODEtNi4wOSAxOS45M2gtLjA1djE2Ljg4YzAgNDEuNDItNDkuMDEgOTUuMDQtOTMuNDkgOTUuMDQtNTIgMC0xMjIuNzUtMS40NS0xNTYuMzcgMjkuMTd2Mi41MWM5LjQyIDE3LjEyIDIwLjU4IDMzLjE3IDMzLjE4IDQ3Ljk3QzQ1LjcgMzgwLjI2IDg0Ljc3IDM2MC40IDE0MS4yIDM2MGM0NS42OCAxLjAyIDc5LjAzIDIwLjMzIDkwLjc2IDQwLjg3LjAxLjAxLS4wMS4wNCAwIC4wNSA3LjY3IDIuMTQgMTUuODUgMy4yMyAyNC4wNCAzLjIxIDguMTkuMDIgMTYuMzctMS4wNyAyNC4wNC0zLjIxLjAxLS4wMS0uMDEtLjA0IDAtLjA1IDExLjc0LTIwLjU0IDQ1LjA4LTM5Ljg1IDkwLjc2LTQwLjg3IDU2LjQzLjM5IDk1LjQ5IDIwLjI2IDEwOC4wMiA0MS4zNSAxMi42LTE0LjggMjMuNzYtMzAuODYgMzMuMTgtNDcuOTd2LTIuNTFjLTMzLjYxLTMwLjYyLTEwNC4zNy0yOS4xNy0xNTYuMzctMjkuMTctNDQuNDggMC05My40OS01My42Mi05My40OS05NS4wNHYtMTYuODhoLS4wNWMtLjIzLTExLjEyLTIuODYtMTkuOTMtNi4wOS0xOS45M3ptMCA5Ni41OWMyMi40MiAwIDQwLjYgMTguMTggNDAuNiA0MC42cy0xOC4xOCA0MC42NS00MC42IDQwLjY1LTQwLjYtMTguMjMtNDAuNi00MC42NWMwLTIyLjQyIDE4LjE4LTQwLjYgNDAuNi00MC42em0wIDcuNjRjLTE4LjE5IDAtMzIuOTYgMTQuNzctMzIuOTYgMzIuOTZTMjM3LjgxIDM2MCAyNTYgMzYwczMyLjk2LTE0Ljc3IDMyLjk2LTMyLjk2LTE0Ljc3LTMyLjk2LTMyLjk2LTMyLjk2em0wIDYuMTRjMTQuODEgMCAyNi44MiAxMi4wMSAyNi44MiAyNi44MnMtMTIuMDEgMjYuODItMjYuODIgMjYuODItMjYuODItMTIuMDEtMjYuODItMjYuODIgMTIuMDEtMjYuODIgMjYuODItMjYuODJ6bS0xMTQuOCA2Ni42N2MtMTAuMTkuMDctMjEuNi4zNi0zMC41IDEuNjYuNDMgNC40MiAxLjUxIDE4LjYzIDcuMTEgMjkuNzYgOS4xMS0yLjU2IDE4LjM2LTMuOSAyNy42Mi0zLjkgNDEuMjguOTQgNzEuNDggMzQuMzUgNzguMjYgNzQuNDdsLjExIDQuN2MxMC40IDEuOTEgMjEuMTkgMi45NCAzMi4yMSAyLjk0IDExLjAzIDAgMjEuODEtMS4wMiAzMi4yMS0yLjk0bC4xMS00LjdjNi43OC00MC4xMiAzNi45OC03My41MyA3OC4yNi03NC40NyA5LjI2IDAgMTguNTEgMS4zNCAyNy42MiAzLjkgNS42LTExLjEzIDYuNjgtMjUuMzQgNy4xMS0yOS43Ni04LjktMS4zLTIwLjMyLTEuNTgtMzAuNS0xLjY2LTE4Ljc2LjQyLTM1LjE5IDQuMTctNDguNjEgOS42Ny0xMi41NCAxNi4wMy0yOS4xNiAzMC4wMy00OS41OCAzMy4wNy0uMDkuMDItLjE3LjA0LS4yNy4wNS0uMDUuMDEtLjExLjA0LS4xNi4wNS01LjI0IDEuMDctMTAuNjMgMS42LTE2LjE5IDEuNi01LjU1IDAtMTAuOTUtLjUzLTE2LjE5LTEuNi0uMDUtLjAxLS4xMS0uMDQtLjE2LS4wNS0uMS0uMDItLjE3LS4wNC0uMjctLjA1LTIwLjQyLTMuMDMtMzcuMDMtMTcuMDQtNDkuNTgtMzMuMDctMTMuNDItNS40OS0yOS44Ni05LjI1LTQ4LjYxLTkuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdldFBvY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcuNiA2NGgtMzY3QzE4LjUgNjQgMCA4Mi41IDAgMTA0LjZ2MTM1LjJDMCAzNjQuNSA5OS43IDQ2NCAyMjQuMiA0NjRjMTI0IDAgMjIzLjgtOTkuNSAyMjMuOC0yMjQuMlYxMDQuNmMwLTIyLjQtMTcuNy00MC42LTQwLjQtNDAuNnptLTE2MiAyNjguNWMtMTIuNCAxMS44LTMxLjQgMTEuMS00Mi40IDBDODkuNSAyMjMuNiA4OC4zIDIyNy40IDg4LjMgMjA5LjNjMC0xNi45IDEzLjgtMzAuNyAzMC43LTMwLjcgMTcgMCAxNi4xIDMuOCAxMDUuMiA4OS4zIDkwLjYtODYuOSA4OC42LTg5LjMgMTA1LjUtODkuMyAxNi45IDAgMzAuNyAxMy44IDMwLjcgMzAuNyAwIDE3LjgtMi45IDE1LjctMTE0LjggMTIzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdnQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NyA4QzEyMCA4IDkgMTE5IDkgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzk0IDggMjU3IDh6bS00OS41IDM3NC44TDgxLjggMjU3LjFsMTI1LjctMTI1LjcgMzUuMiAzNS40LTI0LjIgMjQuMi0xMS4xLTExLjEtNzcuMiA3Ny4yIDc3LjIgNzcuMiAyNi42LTI2LjYtNTMuMS01Mi45IDI0LjQtMjQuNCA3Ny4yIDc3LjItNzUgNzUuMnptOTktMi4ybC0zNS4yLTM1LjIgMjQuMS0yNC40IDExLjEgMTEuMSA3Ny4yLTc3LjItNzcuMi03Ny4yLTI2LjUgMjYuNSA1My4xIDUyLjktMjQuNCAyNC40LTc3LjItNzcuMiA3NS03NUw0MzIuMiAyNTUgMzA2LjUgMzgwLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3OS4yIDIzMC40bDEwMi40IDEwMi40LTEwMi40IDEwMi40TDAgMjU2IDE3OS4yIDc2LjhsNDQuOCA0NC44LTI1LjYgMjUuNi0xOS4yLTE5LjItMTI4IDEyOCAxMjggMTI4IDUxLjUtNTEuNS03Ny4xLTc2LjUgMjUuNi0yNS42ek0zMzIuOCA3Ni44TDIzMC40IDE3OS4ybDEwMi40IDEwMi40IDI1LjYtMjUuNi03Ny4xLTc2LjUgNTEuNS01MS41IDEyOCAxMjgtMTI4IDEyOC0xOS4yLTE5LjItMjUuNiAyNS42IDQ0LjggNDQuOEw1MTIgMjU2IDMzMi44IDc2Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzkuNTUgMjM2LjA1TDI0NCA0MC40NWEyOC44NyAyOC44NyAwIDAgMC00MC44MSAwbC00MC42NiA0MC42MyA1MS41MiA1MS41MmMyNy4wNi05LjE0IDUyLjY4IDE2Ljc3IDQzLjM5IDQzLjY4bDQ5LjY2IDQ5LjY2YzM0LjIzLTExLjggNjEuMTggMzEgMzUuNDcgNTYuNjktMjYuNDkgMjYuNDktNzAuMjEtMi44Ny01Ni0zNy4zNEwyNDAuMjIgMTk5djEyMS44NWMyNS4zIDEyLjU0IDIyLjI2IDQxLjg1IDkuMDggNTVhMzQuMzQgMzQuMzQgMCAwIDEtNDguNTUgMGMtMTcuNTctMTcuNi0xMS4wNy00Ni45MSAxMS4yNS01NnYtMTIzYy0yMC44LTguNTEtMjQuNi0zMC43NC0xOC42NC00NUwxNDIuNTcgMTAxIDguNDUgMjM1LjE0YTI4Ljg2IDI4Ljg2IDAgMCAwIDAgNDAuODFsMTk1LjYxIDE5NS42YTI4Ljg2IDI4Ljg2IDAgMCAwIDQwLjggMGwxOTQuNjktMTk0LjY5YTI4Ljg2IDI4Ljg2IDAgMCAwIDAtNDAuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYuMjkgMTU4LjM5SDEzN0M5NyAxNDcuOSA2LjUxIDE1MC42MyA2LjUxIDIzMy4xOGMwIDMwLjA5IDE1IDUxLjIzIDM1IDYxLTI1LjEgMjMtMzcgMzMuODUtMzcgNDkuMjEgMCAxMSA0LjQ3IDIxLjE0IDE3Ljg5IDI2LjgxQzguMTMgMzgzLjYxIDAgMzkzLjM1IDAgNDExLjY1YzAgMzIuMTEgMjguMDUgNTAuODIgMTAxLjYzIDUwLjgyIDcwLjc1IDAgMTExLjc5LTI2LjQyIDExMS43OS03My4xOCAwLTU4LjY2LTQ1LjE2LTU2LjUtMTUxLjYzLTYzbDEzLjQzLTIxLjU1YzI3LjI3IDcuNTggMTE4LjcgMTAgMTE4LjctNjcuODkgMC0xOC43LTcuNzMtMzEuNzEtMTUtNDEuMDdsMzcuNDEtMi44NHptLTYzLjQyIDI0MS45YzAgMzIuMDYtMTA0Ljg5IDMyLjEtMTA0Ljg5IDIuNDMgMC04LjE0IDUuMjctMTUgMTAuNTctMjEuNTQgNzcuNzEgNS4zIDk0LjMyIDMuMzcgOTQuMzIgMTkuMTF6bS01MC44MS0xMzQuNThjLTUyLjggMC01MC40Ni03MS4xNiAxLjItNzEuMTYgNDkuNTQgMCA1MC44MiA3MS4xNi0xLjIgNzEuMTZ6bTEzMy4zIDEwMC41MXYtMzIuMWMyNi43NS0zLjY2IDI3LjI0LTIgMjcuMjQtMTFWMjAzLjYxYzAtOC41LTIuMDUtNy4zOC0yNy4yNC0xNi4yNmw0LjQ3LTMyLjkySDMyNHYxNjguNzFjMCA2LjUxLjQgNy4zMiA2LjUxIDguMTRsMjAuNzMgMi44NHYzMi4xem01Mi40NS0yNDQuMzFjLTIzLjE3IDAtMzYuNTktMTMuNDMtMzYuNTktMzYuNjFzMTMuNDItMzUuNzcgMzYuNTktMzUuNzdjMjMuNTggMCAzNyAxMi42MiAzNyAzNS43N3MtMTMuNDIgMzYuNjEtMzcgMzYuNjF6TTUxMiAzNTAuNDZjLTE3LjQ5IDguNTMtNDMuMSAxNi4yNi02Ni4yOCAxNi4yNi00OC4zOCAwLTY2LjY3LTE5LjUtNjYuNjctNjUuNDZWMTk0Ljc1YzAtNS40MiAxLjA1LTQuMDYtMzEuNzEtNC4wNlYxNTQuNWMzNS43OC00LjA3IDUwLTIyIDU0LjQ3LTY2LjI3aDM4LjYzYzAgNjUuODMtMS4zNCA2MS44MSAzLjI2IDYxLjgxSDUwMXY0MC42NWgtNjAuNTZ2OTcuMTVjMCA2LjkyLTQuOTIgNTEuNDEgNjAuNTcgMjYuODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdGh1YkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODYuMSAzMjguN2MwIDIwLjktMTAuOSA1NS4xLTM2LjcgNTUuMXMtMzYuNy0zNC4yLTM2LjctNTUuMSAxMC45LTU1LjEgMzYuNy01NS4xIDM2LjcgMzQuMiAzNi43IDU1LjF6TTQ4MCAyNzguMmMwIDMxLjktMy4yIDY1LjctMTcuNSA5NS0zNy45IDc2LjYtMTQyLjEgNzQuOC0yMTYuNyA3NC44LTc1LjggMC0xODYuMiAyLjctMjI1LjYtNzQuOC0xNC42LTI5LTIwLjItNjMuMS0yMC4yLTk1IDAtNDEuOSAxMy45LTgxLjUgNDEuNS0xMTMuNi01LjItMTUuOC03LjctMzIuNC03LjctNDguOCAwLTIxLjUgNC45LTMyLjMgMTQuNi01MS44IDQ1LjMgMCA3NC4zIDkgMTA4LjggMzYgMjktNi45IDU4LjgtMTAgODguNy0xMCAyNyAwIDU0LjIgMi45IDgwLjQgOS4yIDM0LTI2LjcgNjMtMzUuMiAxMDcuOC0zNS4yIDkuOCAxOS41IDE0LjYgMzAuMyAxNC42IDUxLjggMCAxNi40LTIuNiAzMi43LTcuNyA0OC4yIDI3LjUgMzIuNCAzOSA3Mi4zIDM5IDExNC4yem0tNjQuMyA1MC41YzAtNDMuOS0yNi43LTgyLjYtNzMuNS04Mi42LTE4LjkgMC0zNyAzLjQtNTYgNi0xNC45IDIuMy0yOS44IDMuMi00NS4xIDMuMi0xNS4yIDAtMzAuMS0uOS00NS4xLTMuMi0xOC43LTIuNi0zNy02LTU2LTYtNDYuOCAwLTczLjUgMzguNy03My41IDgyLjYgMCA4Ny44IDgwLjQgMTAxLjMgMTUwLjQgMTAxLjNoNDguMmM3MC4zIDAgMTUwLjYtMTMuNCAxNTAuNi0xMDEuM3ptLTgyLjYtNTUuMWMtMjUuOCAwLTM2LjcgMzQuMi0zNi43IDU1LjFzMTAuOSA1NS4xIDM2LjcgNTUuMSAzNi43LTM0LjIgMzYuNy01NS4xLTEwLjktNTUuMS0zNi43LTU1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdGh1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjUuOSAzOTcuNGMwIDItMi4zIDMuNi01LjIgMy42LTMuMy4zLTUuNi0xLjMtNS42LTMuNiAwLTIgMi4zLTMuNiA1LjItMy42IDMtLjMgNS42IDEuMyA1LjYgMy42em0tMzEuMS00LjVjLS43IDIgMS4zIDQuMyA0LjMgNC45IDIuNiAxIDUuNiAwIDYuMi0ycy0xLjMtNC4zLTQuMy01LjJjLTIuNi0uNy01LjUuMy02LjIgMi4zem00NC4yLTEuN2MtMi45LjctNC45IDIuNi00LjYgNC45LjMgMiAyLjkgMy4zIDUuOSAyLjYgMi45LS43IDQuOS0yLjYgNC42LTQuNi0uMy0xLjktMy0zLjItNS45LTIuOXpNMjQ0LjggOEMxMDYuMSA4IDAgMTEzLjMgMCAyNTJjMCAxMTAuOSA2OS44IDIwNS44IDE2OS41IDIzOS4yIDEyLjggMi4zIDE3LjMtNS42IDE3LjMtMTIuMSAwLTYuMi0uMy00MC40LS4zLTYxLjQgMCAwLTcwIDE1LTg0LjctMjkuOCAwIDAtMTEuNC0yOS4xLTI3LjgtMzYuNiAwIDAtMjIuOS0xNS43IDEuNi0xNS40IDAgMCAyNC45IDIgMzguNiAyNS44IDIxLjkgMzguNiA1OC42IDI3LjUgNzIuOSAyMC45IDIuMy0xNiA4LjgtMjcuMSAxNi0zMy43LTU1LjktNi4yLTExMi4zLTE0LjMtMTEyLjMtMTEwLjUgMC0yNy41IDcuNi00MS4zIDIzLjYtNTguOS0yLjYtNi41LTExLjEtMzMuMyAyLjYtNjcuOSAyMC45LTYuNSA2OSAyNyA2OSAyNyAyMC01LjYgNDEuNS04LjUgNjIuOC04LjVzNDIuOCAyLjkgNjIuOCA4LjVjMCAwIDQ4LjEtMzMuNiA2OS0yNyAxMy43IDM0LjcgNS4yIDYxLjQgMi42IDY3LjkgMTYgMTcuNyAyNS44IDMxLjUgMjUuOCA1OC45IDAgOTYuNS01OC45IDEwNC4yLTExNC44IDExMC41IDkuMiA3LjkgMTcgMjIuOSAxNyA0Ni40IDAgMzMuNy0uMyA3NS40LS4zIDgzLjYgMCA2LjUgNC42IDE0LjQgMTcuMyAxMi4xQzQyOC4yIDQ1Ny44IDQ5NiAzNjIuOSA0OTYgMjUyIDQ5NiAxMTMuMyAzODMuNSA4IDI0NC44IDh6TTk3LjIgMzUyLjljLTEuMyAxLTEgMy4zLjcgNS4yIDEuNiAxLjYgMy45IDIuMyA1LjIgMSAxLjMtMSAxLTMuMy0uNy01LjItMS42LTEuNi0zLjktMi4zLTUuMi0xem0tMTAuOC04LjFjLS43IDEuMy4zIDIuOSAyLjMgMy45IDEuNiAxIDMuNi43IDQuMy0uNy43LTEuMy0uMy0yLjktMi4zLTMuOS0yLS42LTMuNi0uMy00LjMuN3ptMzIuNCAzNS42Yy0xLjYgMS4zLTEgNC4zIDEuMyA2LjIgMi4zIDIuMyA1LjIgMi42IDYuNSAxIDEuMy0xLjMuNy00LjMtMS4zLTYuMi0yLjItMi4zLTUuMi0yLjYtNi41LTF6bS0xMS40LTE0LjdjLTEuNiAxLTEuNiAzLjYgMCA1LjkgMS42IDIuMyA0LjMgMy4zIDUuNiAyLjMgMS42LTEuMyAxLjYtMy45IDAtNi4yLTEuNC0yLjMtNC0zLjMtNS42LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdGtyYWtlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjUuNyAxMTguMWMtMi4zLTYuMS05LjMtOS4yLTE1LjMtNi42LTUuNyAyLjQtOC41IDguOS02LjMgMTQuNiAxMC45IDI5IDE2LjkgNjAuNSAxNi45IDkzLjMgMCAxMzQuNi0xMDAuMyAyNDUuNy0yMzAuMiAyNjIuN1YzNTguNGM3LjktMS41IDE1LjUtMy42IDIzLTYuMnYxMDRjMTA2LjctMjUuOSAxODUuOS0xMjIuMSAxODUuOS0yMzYuOCAwLTkxLjgtNTAuOC0xNzEuOC0xMjUuOC0yMTMuMy01LjctMy4yLTEzLS45LTE1LjkgNS0yLjcgNS41LS42IDEyLjIgNC43IDE1LjEgNjcuOSAzNy42IDExMy45IDExMCAxMTMuOSAxOTMuMiAwIDkzLjMtNTcuOSAxNzMuMS0xMzkuOCAyMDUuNHYtOTIuMmMxNC4yLTQuNSAyNC45LTE3LjcgMjQuOS0zMy41IDAtMTMuMS02LjgtMjQuNC0xNy4zLTMwLjUgOC4zLTc5LjUgNDQuNS01OC42IDQ0LjUtODMuOVYxNzBjMC0zOC04Ny45LTE2MS44LTEyOS0xNjQuNy0yLjUtLjItNS0uMi03LjYgMEMyNTEuMSA4LjMgMTYzLjIgMTMyIDE2My4yIDE3MHYxNC44YzAgMjUuMyAzNi4zIDQuMyA0NC41IDgzLjktMTAuNiA2LjEtMTcuMyAxNy40LTE3LjMgMzAuNSAwIDE1LjggMTAuNiAyOSAyNC44IDMzLjV2OTIuMmMtODEuOS0zMi4yLTEzOS44LTExMi0xMzkuOC0yMDUuNCAwLTgzLjEgNDYtMTU1LjUgMTEzLjktMTkzLjIgNS40LTMgNy40LTkuNiA0LjctMTUuMS0yLjktNS45LTEwLjEtOC4yLTE1LjktNS03NSA0MS41LTEyNS44IDEyMS41LTEyNS44IDIxMy4zIDAgMTE0LjcgNzkuMiAyMTAuOCAxODUuOSAyMzYuOHYtMTA0YzcuNiAyLjUgMTUuMSA0LjYgMjMgNi4ydjEyMy43QzEzMS40IDQ2NS4yIDMxIDM1NC4xIDMxIDIxOS41YzAtMzIuOCA2LTY0LjMgMTYuOS05My4zIDIuMi01LjgtLjYtMTIuMi02LjMtMTQuNi02LTIuNi0xMyAuNC0xNS4zIDYuNkMxNC41IDE0OS43IDggMTgzLjggOCAyMTkuNWMwIDE1NS4xIDEyMi42IDI4MS42IDI3Ni4zIDI4Ny44VjM2MS40YzYuOC40IDE1IC41IDIzLjQgMHYxNDUuOEM0NjEuNCA1MDEuMSA1ODQgMzc0LjYgNTg0IDIxOS41YzAtMzUuNy02LjUtNjkuOC0xOC4zLTEwMS40ek0zNjUuOSAyNzUuNWMxMyAwIDIzLjcgMTAuNSAyMy43IDIzLjcgMCAxMy4xLTEwLjYgMjMuNy0yMy43IDIzLjctMTMgMC0yMy43LTEwLjUtMjMuNy0yMy43IDAtMTMuMSAxMC42LTIzLjcgMjMuNy0yMy43em0tMTM5LjggNDcuM2MtMTMuMiAwLTIzLjctMTAuNy0yMy43LTIzLjdzMTAuNS0yMy43IDIzLjctMjMuN2MxMy4xIDAgMjMuNyAxMC42IDIzLjcgMjMuNyAwIDEzLTEwLjUgMjMuNy0yMy43IDIzLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdGxhYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDMuNSAyMDQuNkw1MDIuOCAyMDIuOEw0MzMuMSAyMS4wMkM0MzEuNyAxNy40NSA0MjkuMiAxNC40MyA0MjUuOSAxMi4zOEM0MjMuNSAxMC44MyA0MjAuOCA5Ljg2NSA0MTcuOSA5LjU3QzQxNSA5LjI3NSA0MTIuMiA5LjY1MyA0MDkuNSAxMC42OEM0MDYuOCAxMS43IDQwNC40IDEzLjM0IDQwMi40IDE1LjQ2QzQwMC41IDE3LjU4IDM5OS4xIDIwLjEzIDM5OC4zIDIyLjlMMzUxLjMgMTY2LjlIMTYwLjhMMTEzLjcgMjIuOUMxMTIuOSAyMC4xMyAxMTEuNSAxNy41OSAxMDkuNiAxNS40N0MxMDcuNiAxMy4zNSAxMDUuMiAxMS43MiAxMDIuNSAxMC43Qzk5Ljg2IDkuNjc1IDk2Ljk4IDkuMjk1IDk0LjEyIDkuNTg3QzkxLjI2IDkuODc4IDg4LjUxIDEwLjgzIDg2LjA4IDEyLjM4QzgyLjg0IDE0LjQzIDgwLjMzIDE3LjQ1IDc4LjkyIDIxLjAyTDkuMjY3IDIwMi44TDguNTQzIDIwNC42Qy0xLjQ4NCAyMzAuOC0yLjcyIDI1OS42IDUuMDIzIDI4Ni42QzEyLjc3IDMxMy41IDI5LjA3IDMzNy4zIDUxLjQ3IDM1NC4yTDUxLjc0IDM1NC40TDUyLjMzIDM1NC44TDE1OC4zIDQzNC4zTDIxMC45IDQ3NEwyNDIuOSA0OTguMkMyNDYuNiA1MDAuMSAyNTEuMiA1MDIuNSAyNTUuOSA1MDIuNUMyNjAuNiA1MDIuNSAyNjUuMiA1MDAuMSAyNjguOSA0OTguMkwzMDAuOSA0NzRMMzUzLjUgNDM0LjNMNDYwLjIgMzU0LjRMNDYwLjUgMzU0LjFDNDgyLjkgMzM3LjIgNDk5LjIgMzEzLjUgNTA2LjEgMjg2LjZDNTE0LjcgMjU5LjYgNTEzLjUgMjMwLjggNTAzLjUgMjA0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02Ni40IDMyMi41SDE2VjBoNTAuNHYzMjIuNXpNMTY2LjkgNzYuMWgtNTAuNFY1MTJoNTAuNFY3Ni4xem0xMDAuNiAwaC01MC40VjUxMmg1MC40Vjc2LjF6TTM2OCA3NmgtNTAuNHYyNDdIMzY4Vjc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbGlkZUcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA3LjEgMjExLjJjLTMuNS0xLjQtMTEuNi0zLjgtMTUuNC0zLjgtMzcuMSAwLTYyLjIgMTYuOC05My41IDM0LjVsLS45LS45YzctNDcuMyAyMy41LTkxLjkgMjMuNS0xNDAuNEMzMjAuOCAyOS4xIDI4Mi42IDAgMjEyLjQgMCA5Ny4zIDAgMzkgMTEzLjcgMzkgMTk4LjQgMzkgMjg2LjMgOTAuMyAzMzUgMTc3LjYgMzM1YzEyIDAgMTEtMSAxMSAzLjgtMTYuOSAxMjguOS05MC44IDEzMy4xLTkwLjggOTQuNiAwLTM5LjIgNDUtNTguNiA0NS41LTYxLS4zLTEyLjItNDctMjcuNi01OC45LTI3LjYtMzMuOS4xLTUyLjQgNTEuMi01Mi40IDc5LjNDMzIgNDc2IDY0LjggNTEyIDExNy41IDUxMmM3Ny40IDAgMTM0LTc3LjggMTUxLjQtMTQ1LjQgMTUuMS02MC41IDExLjItNjMuMyAxOS43LTY3LjYgMzIuMi0xNi4yIDU3LjUtMjcgOTMuOC0yNyAxNy44IDAgMzAuNSAzLjcgNTguOSA4LjQgMi45IDAgNi43LTIuOSA2LjctNS44IDAtOC0zMy40LTYwLjUtNDAuOS02My40em0tMTc1LjMtODQuNGMtOS4zIDQ0LjctMTguNiA4OS42LTI3LjggMTM0LjMtMi4zIDEwLjItMTMuMyA3LjgtMjIgNy44LTM4LjMgMC00OS00MS44LTQ5LTczLjEgMC00NyAxOC0xMDkuMyA2MS44LTEzMy40IDctNC4xIDE0LjgtNi43IDIyLjYtNi43IDE4LjYgMCAyMCAxMy4zIDIwIDI4LjctLjEgMTQuMy0yLjcgMjguNS01LjYgNDIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjUyLjggMTQ4LjZjMCA4LjgtMS42IDE3LjctMy40IDI2LjQtNS44IDI3LjgtMTEuNiA1NS44LTE3LjMgODMuNi0xLjQgNi4zLTguMyA0LjktMTMuNyA0LjktMjMuOCAwLTMwLjUtMjYtMzAuNS00NS41IDAtMjkuMyAxMS4yLTY4LjEgMzguNS04My4xIDQuMy0yLjUgOS4yLTQuMiAxNC4xLTQuMiAxMS40IDAgMTIuMyA4LjMgMTIuMyAxNy45ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS02NCAxODdjMC01LjEtMjAuOC0zNy43LTI1LjUtMzkuNS0yLjItLjktNy4yLTIuMy05LjYtMi4zLTIzLjEgMC0zOC43IDEwLjUtNTguMiAyMS41bC0uNS0uNWM0LjMtMjkuNCAxNC42LTU3LjIgMTQuNi04Ny40IDAtNDQuNi0yMy44LTYyLjctNjcuNS02Mi43LTcxLjcgMC0xMDggNzAuOC0xMDggMTIzLjUgMCA1NC43IDMyIDg1IDg2LjMgODUgNy41IDAgNi45LS42IDYuOSAyLjMtMTAuNSA4MC4zLTU2LjUgODIuOS01Ni41IDU4LjkgMC0yNC40IDI4LTM2LjUgMjguMy0zOC0uMi03LjYtMjkuMy0xNy4yLTM2LjctMTcuMi0yMS4xIDAtMzIuNyAzMy0zMi43IDUwLjYgMCAzMi4zIDIwLjQgNTQuNyA1My4zIDU0LjcgNDguMiAwIDgzLjQtNDkuNyA5NC4zLTkxLjcgOS40LTM3LjcgNy0zOS40IDEyLjMtNDIuMSAyMC0xMC4xIDM1LjgtMTYuOCA1OC40LTE2LjggMTEuMSAwIDE5IDIuMyAzNi43IDUuMiAxLjguMSA0LjEtMS43IDQuMS0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvZm9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDAwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjQgMzE5LjhoLTEzLjJ2MzQuN2MtMjQuNSAyMy4xLTU2LjMgMzUuOC04OS45IDM1LjgtNzMuMiAwLTEzMi40LTYwLjItMTMyLjQtMTM0LjQgMC03NC4xIDU5LjItMTM0LjQgMTMyLjQtMTM0LjQgMzUuMyAwIDY4LjYgMTQgOTMuNiAzOS40bDYyLjMtNjMuM0MzMzUgNTUuMyAyNzkuNyAzMiAyMjAuNyAzMiA5OCAzMiAwIDEzMi42IDAgMjU2YzAgMTIyLjUgOTcgMjI0IDIyMC43IDIyNCA2My4yIDAgMTI0LjUtMjYuMiAxNzEtODIuNS0yLTI3LjYtMTMuNC03Ny43LTY3LjctNzcuN3ptLTEyLjEtMTEyLjVIMjA1LjZ2ODlIMzI0YzMzLjUgMCA2MC41IDE1LjEgNzYgNDEuOHYtMzAuNmMwLTY1LjItNDAuNC0xMDAuMi04OC4xLTEwMC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb2xhbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwLjEgMTk0LjhDMzg5LjIgMTk3LjYgMzgwLjIgMTk5LjEgMzcxIDIwMi40QzM2My43IDIwNC4zIDM1Ni4zIDIwNi4zIDM0Ny44IDIwOC41TDM0Ny4yIDIwOC42QzM0MyAyMDkuOCAzNDIuNiAyMDkuOSAzMzguNyAyMDUuNEMzMzQgMjAwLjEgMzMwLjYgMTk2LjcgMzI0LjEgMTkzLjVDMzA0LjQgMTgzLjkgMjg1LjQgMTg2LjcgMjY3LjcgMTk4LjJDMjQ2LjUgMjExLjkgMjM1LjYgMjMyLjIgMjM1LjkgMjU3LjRDMjM2LjIgMjgyLjQgMjUzLjMgMzAyLjkgMjc3LjEgMzA2LjNDMjk5LjEgMzA5LjEgMzE2LjkgMzAxLjcgMzMwLjkgMjg1LjhDMzMzIDI4My4yIDMzNC45IDI4MC41IDMzNyAyNzcuNVYyNzcuNUwzMzcgMjc3LjVDMzM3LjggMjc2LjUgMzM4LjUgMjc1LjQgMzM5LjMgMjc0LjJIMjc5LjJDMjcyLjcgMjc0LjIgMjcxLjEgMjcwLjIgMjczLjMgMjY0LjlDMjc3LjMgMjU1LjIgMjg0LjggMjM5IDI4OS4yIDIzMC45QzI5MC4xIDIyOS4xIDI5Mi4zIDIyNS4xIDI5Ni4xIDIyNS4xSDM5Ny4yQzQwMS43IDIxMS43IDQwOSAxOTguMiA0MTguOCAxODUuNEM0NDEuNSAxNTUuNSA0NjguMSAxMzkuOSA1MDYgMTMzLjRDNTM3LjggMTI3LjggNTY3LjcgMTMwLjkgNTk0LjkgMTQ5LjNDNjE5LjUgMTY2LjEgNjM0LjcgMTg4LjkgNjM4LjggMjE4LjhDNjQ0LjEgMjYwLjkgNjMxLjkgMjk1LjEgNjAyLjEgMzI0LjRDNTgyLjQgMzQ1LjMgNTU3LjIgMzU4LjQgNTI4LjIgMzY0LjNDNTIyLjYgMzY1LjMgNTE3LjEgMzY1LjggNTExLjcgMzY2LjNDNTA4LjggMzY2LjUgNTA2IDM2Ni44IDUwMy4yIDM2Ny4xQzQ3NC45IDM2Ni41IDQ0OSAzNTguNCA0MjcuMiAzMzkuN0M0MTEuOSAzMjYuNCA0MDEuMyAzMTAuMSAzOTYuMSAyOTEuMkMzOTIuNCAyOTguNSAzODguMSAzMDUuNiAzODIuMSAzMTIuM0MzNjAuNSAzNDEuOSAzMzEuMiAzNjAuMyAyOTQuMiAzNjUuMkMyNjMuNiAzNjkuMyAyMzUuMyAzNjMuNCAyMTAuMyAzNDQuN0MxODcuMyAzMjcuMiAxNzQuMiAzMDQuMiAxNzAuOCAyNzUuNUMxNjYuNyAyNDEuNSAxNzYuNyAyMTAuMSAxOTcuMiAxODQuMkMyMTkuNCAxNTUuMiAyNDguNyAxMzYuOCAyODQuNSAxMzAuM0MzMTMuOCAxMjQuMSAzNDEuOCAxMjguNCAzNjcuMSAxNDUuNkMzODMuNiAxNTYuNSAzOTUuNCAxNzEuNCA0MDMuMiAxODkuNUM0MDUuMSAxOTIuMyA0MDMuOCAxOTMuOSA0MDAuMSAxOTQuOHpNNDguMyAyMDAuNEM0Ny4wNSAyMDAuNCA0Ni43NCAxOTkuOCA0Ny4zNiAxOTguOEw1My45MSAxOTAuNEM1NC41MyAxODkuNSA1Ni4wOSAxODguOSA1Ny4zNCAxODguOUgxNjguNkMxNjkuOCAxODguOSAxNzAuMSAxODkuOCAxNjkuNSAxOTAuN0wxNjQuMiAxOTguOEMxNjMuNiAxOTkuOCAxNjIgMjAwLjcgMTYxLjEgMjAwLjdMNDguMyAyMDAuNHpNMS4yNDYgMjI5LjFDMCAyMjkuMS0uMzExNiAyMjguNCAuMzExNiAyMjcuNUw2Ljg1NSAyMTkuMUM3LjQ3OSAyMTguMiA5LjAzNyAyMTcuNSAxMC4yOCAyMTcuNUgxNTIuNEMxNTMuNiAyMTcuNSAxNTQuMiAyMTguNSAxNTMuOSAyMTkuNEwxNTEuNCAyMjYuOUMxNTEuMSAyMjguMSAxNDkuOSAyMjguOCAxNDguNiAyMjguOEwxLjI0NiAyMjkuMXpNNzUuNzIgMjU1LjlDNzUuMSAyNTYuOCA3NS40MSAyNTcuNyA3Ni42NSAyNTcuN0wxNDQuNiAyNThDMTQ1LjUgMjU4IDE0Ni44IDI1Ny4xIDE0Ni44IDI1NS45TDE0Ny40IDI0OC40QzE0Ny40IDI0Ny4xIDE0Ni44IDI0Ni4yIDE0NS41IDI0Ni4ySDgzLjJDODEuOTUgMjQ2LjIgODAuNzEgMjQ3LjEgODAuMDggMjQ4LjFMNzUuNzIgMjU1Ljl6TTU3Ny4yIDIzNy45QzU3NyAyMzUuMyA1NzYuOSAyMzMuMSA1NzYuNSAyMzAuOUM1NzAuOSAyMDAuMSA1NDIuNSAxODIuNiA1MTIuOSAxODkuNUM0ODMuOSAxOTYgNDY1LjIgMjE0LjQgNDU4LjQgMjQzLjdDNDUyLjggMjY4IDQ2NC42IDI5Mi42IDQ4NyAzMDIuNkM1MDQuMiAzMTAuMSA1MjEuMyAzMDkuMiA1MzcuOCAzMDAuN0M1NjIuNCAyODcuMSA1NzUuOCAyNjggNTc3LjQgMjQxLjJDNTc3LjMgMjQwIDU3Ny4zIDIzOC45IDU3Ny4yIDIzNy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29kcmVhZHNHIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyLjYgNDAzLjNoMi44YzEyLjcgMCAyNS41IDAgMzguMi4xIDEuNiAwIDMuMS0uNCAzLjYgMi4xIDcuMSAzNC45IDMwIDU0LjYgNjIuOSA2My45IDI2LjkgNy42IDU0LjEgNy44IDgxLjMgMS44IDMzLjgtNy40IDU2LTI4LjMgNjgtNjAuNCA4LTIxLjUgMTAuNy00My44IDExLTY2LjUuMS01LjguMy00Ny0uMi01Mi44bC0uOS0uM2MtLjggMS41LTEuNyAyLjktMi41IDQuNC0yMi4xIDQzLjEtNjEuMyA2Ny40LTEwNS40IDY5LjEtMTAzIDQtMTY5LjQtNTctMTcyLTE3Ni4yLS41LTIzLjcgMS44LTQ2LjkgOC4zLTY5LjdDNTguMyA0Ny43IDExMi4zLjYgMTkxLjYgMGM2MS4zLS40IDEwMS41IDM4LjcgMTE2LjIgNzAuMy41IDEuMSAxLjMgMi4zIDIuNCAxLjlWMTAuNmg0NC4zYzAgMjgwLjMuMSAzMzIuMi4xIDMzMi4yLS4xIDc4LjUtMjYuNyAxNDMuNy0xMDMgMTYyLjItNjkuNSAxNi45LTE1OSA0LjgtMTk2LTU3LjItOC0xMy41LTExLjgtMjguMy0xMy00NC41ek0xODguOSAzNi41Yy01Mi41LS41LTEwOC41IDQwLjctMTE1IDEzMy44LTQuMSA1OSAxNC44IDEyMi4yIDcxLjUgMTQ4LjYgMjcuNiAxMi45IDc0LjMgMTUgMTA4LjMtOC43IDQ3LjYtMzMuMiA2Mi43LTk3IDU0LjgtMTU0LTkuNy03MS4xLTQ3LjgtMTIwLTExOS42LTExOS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29kcmVhZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk5LjkgMTkxLjJjNS4xIDM3LjMtNC43IDc5LTM1LjkgMTAwLjctMjIuMyAxNS41LTUyLjggMTQuMS03MC44IDUuNy0zNy4xLTE3LjMtNDkuNS01OC42LTQ2LjgtOTcuMiA0LjMtNjAuOSA0MC45LTg3LjkgNzUuMy04Ny41IDQ2LjktLjIgNzEuOCAzMS44IDc4LjIgNzguM3pNNDQ4IDg4djMzNmMwIDMwLjktMjUuMSA1Ni01NiA1Nkg1NmMtMzAuOSAwLTU2LTI1LjEtNTYtNTZWODhjMC0zMC45IDI1LjEtNTYgNTYtNTZoMzM2YzMwLjkgMCA1NiAyNS4xIDU2IDU2ek0zMzAgMzEzLjJzLS4xLTM0LS4xLTIxNy4zaC0yOXY0MC4zYy0uOC4zLTEuMi0uNS0xLjYtMS4yLTkuNi0yMC43LTM1LjktNDYuMy03Ni00Ni01MS45LjQtODcuMiAzMS4yLTEwMC42IDc3LjgtNC4zIDE0LjktNS44IDMwLjEtNS41IDQ1LjYgMS43IDc3LjkgNDUuMSAxMTcuOCAxMTIuNCAxMTUuMiAyOC45LTEuMSA1NC41LTE3IDY5LTQ1LjIuNS0xIDEuMS0xLjkgMS43LTIuOS4yLjEuNC4xLjYuMi4zIDMuOC4yIDMwLjcuMSAzNC41LS4yIDE0LjgtMiAyOS41LTcuMiA0My41LTcuOCAyMS0yMi4zIDM0LjctNDQuNSAzOS41LTE3LjggMy45LTM1LjYgMy44LTUzLjItMS4yLTIxLjUtNi4xLTM2LjUtMTktNDEuMS00MS44LS4zLTEuNi0xLjMtMS4zLTIuMy0xLjNoLTI2LjhjLjggMTAuNiAzLjIgMjAuMyA4LjUgMjkuMiAyNC4yIDQwLjUgODIuNyA0OC41IDEyOC4yIDM3LjQgNDkuOS0xMi4zIDY3LjMtNTQuOSA2Ny40LTEwNi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVEcml2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzkgMzE0LjlMMTc1LjQgMzJoMTYxLjJsMTYzLjYgMjgyLjlIMzM5em0tMTM3LjUgMjMuNkwxMjAuOSA0ODBoMzEwLjVMNTEyIDMzOC41SDIwMS41ek0xNTQuMSA2Ny40TDAgMzM4LjUgODAuNiA0ODAgMjM3IDIwOC44IDE1NC4xIDY3LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDUuNzIsMjE1djQxLjI1aDU3LjFhNDkuNjYsNDkuNjYsMCwwLDEtMjEuMTQsMzIuNmMtOS41NCw2LjU1LTIxLjcyLDEwLjI4LTM2LDEwLjI4LTI3LjYsMC01MC45My0xOC45MS01OS4zLTQ0LjIyYTY1LjYxLDY1LjYxLDAsMCwxLDAtNDFsMCwwYzguMzctMjUuNDYsMzEuNy00NC4zNyw1OS4zLTQ0LjM3YTU2LjQzLDU2LjQzLDAsMCwxLDQwLjUxLDE2LjA4TDE3Ni40NywxNTVhMTAxLjI0LDEwMS4yNCwwLDAsMC03MC43NS0yNy44NCwxMDUuNTUsMTA1LjU1LDAsMCwwLTk0LjM4LDU5LjExLDEwNy42NCwxMDcuNjQsMCwwLDAsMCw5Ni4xOHYuMTVhMTA1LjQxLDEwNS40MSwwLDAsMCw5NC4zOCw1OWMyOC40NywwLDUyLjU1LTkuNTMsNzAtMjUuOTEsMjAtMTguNjEsMzEuNDEtNDYuMTUsMzEuNDEtNzguOTFBMTMzLjc2LDEzMy43NiwwLDAsMCwyMDUuMzgsMjE1Wm0zODkuNDEtNGMtMTAuMTMtOS4zOC0yMy45My0xNC4xNC00MS4zOS0xNC4xNC0yMi40NiwwLTM5LjM0LDguMzQtNTAuNSwyNC44NmwyMC44NSwxMy4yNnExMS40NS0xNywzMS4yNi0xN2EzNC4wNSwzNC4wNSwwLDAsMSwyMi43NSw4Ljc5QTI4LjE0LDI4LjE0LDAsMCwxLDQ4Ny43OSwyNDh2NS41MWMtOS4xLTUuMDctMjAuNTUtNy43NS0zNC42NC03Ljc1LTE2LjQ0LDAtMjkuNjUsMy44OC0zOS40OSwxMS43N3MtMTQuODIsMTguMzEtMTQuODIsMzEuNTZhMzkuNzQsMzkuNzQsMCwwLDAsMTMuOTQsMzEuMjdjOS4yNSw4LjM0LDIxLDEyLjUxLDM0Ljc5LDEyLjUxLDE2LjI5LDAsMjkuMjEtNy4zLDM5LTIxLjg5aDF2MTcuNzJoMjIuNjFWMjUwQzUxMC4yNSwyMzMuNDUsNTA1LjI2LDIyMC4zNCw0OTUuMTMsMjExWk00NzUuOSwzMDAuM2EzNy4zMiwzNy4zMiwwLDAsMS0yNi41NywxMS4xNkEyOC42MSwyOC42MSwwLDAsMSw0MzEsMzA1LjIxYTE5LjQxLDE5LjQxLDAsMCwxLTcuNzctMTUuNjNjMC03LDMuMjItMTIuODEsOS41NC0xNy40MnMxNC41My03LDI0LjA3LTdDNDcwLDI2NSw0ODAuMywyNjgsNDg3LjY0LDI3My45NCw0ODcuNjQsMjg0LjA3LDQ4My42OCwyOTIuODUsNDc1LjksMzAwLjNabS05My42NS0xNDJBNTUuNzEsNTUuNzEsMCwwLDAsMzQxLjc0LDE0MkgyNzkuMDdWMzI4Ljc0SDMwMi43VjI1My4xaDM5YzE2LDAsMjkuNS01LjM2LDQwLjUxLTE1LjkzLjg4LS44OSwxLjc2LTEuNzksMi42NS0yLjY4QTU0LjQ1LDU0LjQ1LDAsMCwwLDM4Mi4yNSwxNTguMjZabS0xNi41OCw2Mi4yM2EzMC42NSwzMC42NSwwLDAsMS0yMy4zNCw5LjY4SDMwMi43VjE2NWgzOS42M2EzMiwzMiwwLDAsMSwyMi42LDkuMjNBMzMuMTgsMzMuMTgsMCwwLDEsMzY1LjY3LDIyMC40OVpNNjE0LjMxLDIwMSw1NzcuNzcsMjkyLjdoLS40NUw1MzkuOSwyMDFINTE0LjIxTDU2NiwzMjAuNTVsLTI5LjM1LDY0LjMySDU2MUw2NDAsMjAxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNS4zIDIzNC4zTDEwNC42IDEzbDI4MC44IDE2MS4yLTYwLjEgNjAuMXpNNDcgMEMzNCA2LjggMjUuMyAxOS4yIDI1LjMgMzUuM3Y0NDEuM2MwIDE2LjEgOC43IDI4LjUgMjEuNyAzNS4zbDI1Ni42LTI1Nkw0NyAwem00MjUuMiAyMjUuNmwtNTguOS0zNC4xLTY1LjcgNjQuNSA2NS43IDY0LjUgNjAuMS0zNC4xYzE4LTE0LjMgMTgtNDYuNS0xLjItNjAuOHpNMTA0LjYgNDk5bDI4MC44LTE2MS4yLTYwLjEtNjAuMUwxMDQuNiA0OTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVBsdXNHIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4Ni4wNjEgMjI4LjQ5NmMxLjgzNCA5LjY5MiAzLjE0MyAxOS4zODQgMy4xNDMgMzEuOTU2QzM4OS4yMDQgMzcwLjIwNSAzMTUuNTk5IDQ0OCAyMDQuOCA0NDhjLTEwNi4wODQgMC0xOTItODUuOTE1LTE5Mi0xOTJzODUuOTE2LTE5MiAxOTItMTkyYzUxLjg2NCAwIDk1LjA4MyAxOC44NTkgMTI4LjYxMSA1MC4yOTJsLTUyLjEyNiA1MC4wM2MtMTQuMTQ1LTEzLjYyMS0zOS4wMjgtMjkuNTk5LTc2LjQ4NS0yOS41OTktNjUuNDg0IDAtMTE4LjkyIDU0LjIyMS0xMTguOTIgMTIxLjI3NyAwIDY3LjA1NiA1My40MzYgMTIxLjI3NyAxMTguOTIgMTIxLjI3NyA3NS45NjEgMCAxMDQuNTEzLTU0Ljc0NSAxMDguOTY1LTgyLjc3M0gyMDQuOHYtNjYuMDA5aDE4MS4yNjF6bTE4NS40MDYgNi40MzdWMTc5LjJoLTU2LjAwMXY1NS43MzNoLTU1LjczM3Y1Ni4wMDFoNTUuNzMzdjU1LjczM2g1Ni4wMDF2LTU1LjczM0g2MjcuMnYtNTYuMDAxaC01NS43MzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2LDhDMTE5LjEsOCw4LDExOS4xLDgsMjU2UzExOS4xLDUwNCwyNTYsNTA0LDUwNCwzOTIuOSw1MDQsMjU2LDM5Mi45LDgsMjU2LDhaTTE4NS4zLDM4MGExMjQsMTI0LDAsMCwxLDAtMjQ4YzMxLjMsMCw2MC4xLDExLDgzLDMyLjNsLTMzLjYsMzIuNmMtMTMuMi0xMi45LTMxLjMtMTkuMS00OS40LTE5LjEtNDIuOSwwLTc3LjIsMzUuNS03Ny4yLDc4LjFTMTQyLjMsMzM0LDE4NS4zLDMzNGMzMi42LDAsNjQuOS0xOS4xLDcwLjEtNTMuM0gxODUuM1YyMzguMUgzMDIuMmExMDkuMiwxMDkuMiwwLDAsMSwxLjksMjAuN2MwLDcwLjgtNDcuNSwxMjEuMi0xMTguOCwxMjEuMlpNNDE1LjUsMjczLjh2MzUuNUgzODBWMjczLjhIMzQ0LjVWMjM4LjNIMzgwVjIwMi44aDM1LjV2MzUuNWgzNS4ydjM1LjVaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVNjaG9sYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkwLjkgMjk4LjVjMCAwIDAgLjEgLjEgLjFjOS4yIDE5LjQgMTQuNCA0MS4xIDE0LjQgNjRDNDA1LjMgNDQ1LjEgMzM4LjUgNTEyIDI1NiA1MTJzLTE0OS4zLTY2LjktMTQ5LjMtMTQ5LjNjMC0yMi45IDUuMi00NC42IDE0LjQtNjRoMGMxLjctMy42IDMuNi03LjIgNS42LTEwLjdjNC40LTcuNiA5LjQtMTQuNyAxNS0yMS4zYzI3LjQtMzIuNiA2OC41LTUzLjMgMTE0LjQtNTMuM2MzMy42IDAgNjQuNiAxMS4xIDg5LjYgMjkuOWM5LjEgNi45IDE3LjQgMTQuNyAyNC44IDIzLjVjNS42IDYuNiAxMC42IDEzLjggMTUgMjEuM2MyIDMuNCAzLjggNyA1LjUgMTAuNXptMjYuNC0xOC44Yy0zMC4xLTU4LjQtOTEtOTguNC0xNjEuMy05OC40cy0xMzEuMiA0MC0xNjEuMyA5OC40TDAgMjAyLjcgMjU2IDAgNTEyIDIwMi43bC05NC43IDc3LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVdhbGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTYuOCAxMjYuOGMzNy42IDYwLjYgNjQuMiAxMTMuMSA4NC4zIDE2Mi41LTguMyAzMy44LTE4LjggNjYuNS0zMS4zIDk4LjMtMTMuMi01Mi4zLTI2LjUtMTAxLjMtNTYtMTQ4LjUgNi41LTM2LjQgMi4zLTczLjYgMy0xMTIuM3pNMTA5LjMgMjAwSDE2LjFjLTYuNSAwLTEwLjUgNy41LTYuNSAxMi43QzUxLjggMjY3IDgxLjMgMzMwLjUgMTAxLjMgNDAwaDEwMy41Yy0xNi4yLTY5LjctMzguNy0xMzMuNy04Mi41LTE5My41LTMtNC04LTYuNS0xMy02LjV6bTQ3LjgtODhjNjguNSAxMDggMTMwIDIzNC41IDEzOC4yIDM2OEg0MDljLTEyLTEzOC02OC40LTI2NS0xNDMuMi0zNjhIMTU3LjF6bTI1MS44LTY4LjVjLTEuOC02LjgtOC4yLTExLjUtMTUuMi0xMS41aC04OC4zYy01LjMgMC05IDUtNy44IDEwLjMgMTMuMiA0Ni41IDIyLjMgOTUuNSAyNi41IDE0NiA0OC4yIDg2LjIgNzkuNyAxNzguMyA5MC42IDI3MC44IDE1LjgtNjAuNSAyNS4zLTEzMy41IDI1LjMtMjAzIDAtNzMuNi0xMi4xLTE0NS4xLTMxLjEtMjEyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDg4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODggMjYxLjhDNDg4IDQwMy4zIDM5MS4xIDUwNCAyNDggNTA0IDExMC44IDUwNCAwIDM5My4yIDAgMjU2UzExMC44IDggMjQ4IDhjNjYuOCAwIDEyMyAyNC41IDE2Ni4zIDY0LjlsLTY3LjUgNjQuOUMyNTguNSA1Mi42IDk0LjMgMTE2LjYgOTQuMyAyNTZjMCA4Ni41IDY5LjEgMTU2LjYgMTUzLjcgMTU2LjYgOTguMiAwIDEzNS03MC40IDE0MC44LTEwNi45SDI0OHYtODUuM2gyMzYuMWMyLjMgMTIuNyAzLjkgMjQuOSAzLjkgNDEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JhdGlwYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjEgOCAwIDExOS4xIDAgMjU2czExMS4xIDI0OCAyNDggMjQ4IDI0OC0xMTEuMSAyNDgtMjQ4UzM4NC45IDggMjQ4IDh6bTExNC42IDIyNi40bC0xMTMgMTUyLjctMTEyLjctMTUyLjdjLTguNy0xMS45LTE5LjEtNTAuNCAxMy42LTcyIDI4LjEtMTguMSA1NC42LTQuMiA2OC41IDExLjkgMTUuOSAxNy45IDQ2LjYgMTYuOSA2MS43IDAgMTMuOS0xNi4xIDQwLjQtMzAgNjguMS0xMS45IDMyLjkgMjEuNiAyMi42IDYwIDEzLjggNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyYXYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAxLjEgMjEyYzQuNCA0LjQgNC40IDExLjkgMCAxNi4zbC05LjcgOS43Yy00LjQgNC43LTExLjkgNC43LTE2LjYgMGwtMTAuNS0xMC41Yy00LjQtNC43LTQuNC0xMS45IDAtMTYuNmw5LjctOS43YzQuNC00LjQgMTEuOS00LjQgMTYuNiAwbDEwLjUgMTAuOHptLTMwLjItMTkuN2MzLTMgMy03LjggMC0xMC41LTIuOC0zLTcuNS0zLTEwLjUgMC0yLjggMi44LTIuOCA3LjUgMCAxMC41IDMuMSAyLjggNy44IDIuOCAxMC41IDB6bS0yNiA1LjNjLTMgMi44LTMgNy41IDAgMTAuMiAyLjggMyA3LjUgMyAxMC41IDAgMi44LTIuOCAyLjgtNy41IDAtMTAuMi0zLTMtNy43LTMtMTAuNSAwem03Mi41LTEzLjNjLTE5LjktMTQuNC0zMy44LTQzLjItMTEuOS02OC4xIDIxLjYtMjQuOSA0MC43LTE3LjIgNTkuOC44IDExLjkgMTEuMyAyOS4zIDI0LjkgMTcuMiA0OC4yLTEyLjUgMjMuNS00NS4xIDMzLjItNjUuMSAxOS4xem00Ny43LTQ0LjVjLTguOS0xMC0yMy4zIDYuOS0xNS41IDE2LjEgNy40IDkgMzIuMSAyLjQgMTUuNS0xNi4xek01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6bS02Ni4yIDQyLjZjMi41LTE2LjEtMjAuMi0xNi42LTI1LjItMjUuNy0xMy42LTI0LjEtMjcuNy0zNi44LTU0LjUtMzAuNCAxMS42LTggMjMuNS02LjEgMjMuNS02LjEuMy02LjQgMC0xMy05LjQtMjQuOSAzLjktMTIuNS4zLTIyLjQuMy0yMi40IDE1LjUtOC42IDI2LjgtMjQuNCAyOS4xLTQzLjIgMy42LTMxLTE4LjgtNTkuMi00OS44LTYyLjgtMjIuMS0yLjUtNDMuNyA3LjctNTQuMyAyNS43LTIzLjIgNDAuMSAxLjQgNzAuOSAyMi40IDgxLjQtMTQuNC0xLjQtMzQuMy0xMS45LTQwLjEtMzQuMy02LjYtMjUuNyAyLjgtNDkuOCA4LjktNjEuNCAwIDAtNC40LTUuOC04LTguOSAwIDAtMTMuOCAwLTI0LjYgNS4zIDExLjktMTUuMiAyNS4yLTE0LjQgMjUuMi0xNC40IDAtNi40LS42LTE0LjktMy42LTIxLjYtNS40LTExLTIzLjgtMTIuOS0zMS43IDIuOC4xLS4yLjMtLjQuNC0uNS01IDExLjktMS4xIDU1LjkgMTYuOSA4Ny4yLTIuNSAxLjQtOS4xIDYuMS0xMyAxMC0yMS42IDkuNy01Ni4yIDYwLjMtNTYuMiA2MC4zLTI4LjIgMTAuOC03Ny4yIDUwLjktNzAuNiA3OS43LjMgMyAxLjQgNS41IDMgNy41LTIuOCAyLjItNS41IDUtOC4zIDguMy0xMS45IDEzLjgtNS4zIDM1LjIgMTcuNyAyNC40IDE1LjgtNy4yIDI5LjYtMjAuMiAzNi4zLTMwLjQgMCAwLTUuNS01LTE2LjMtNC40IDI3LjctNi42IDM0LjMtOS40IDQ2LjItOS4xIDggMy45IDgtMzQuMyA4LTM0LjMgMC0xNC43LTIuMi0zMS0xMS4xLTQxLjUgMTIuNSAxMi4yIDI5LjEgMzIuNyAyOCA2MC42LS44IDE4LjMtMTUuMiAyMy0xNS4yIDIzLTkuMSAxNi42LTQzLjIgNjUuOS0zMC40IDEwNiAwIDAtOS43LTE0LjktMTAuMi0yMi4xLTE3LjQgMTkuNC00Ni41IDUyLjMtMjQuNiA2NC41IDI2LjYgMTQuNyAxMDguOC04OC42IDEyNi4yLTE0Mi4zIDM0LjYtMjAuOCA1NS40LTQ3LjMgNjMuOS02NSAyMiA0My41IDk1LjMgOTQuNSAxMDEuMSA1OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpcGZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyLjUgMzAxLjRjMC03My44IDEwNS4xLTEyMi41IDEwNS4xLTIwMyAwLTQ3LjEtMzQtODgtMzkuMS05MC40LjQgMy4zLjYgNi43LjYgMTBDMTc5LjEgMTEwLjEgMzIgMTcxLjkgMzIgMjg2LjZjMCA0OS44IDMyLjIgNzkuMiA2Ni41IDEwOC4zIDY1LjEgNDYuNyA3OC4xIDcxLjQgNzguMSA4Ni42IDAgMTAuMS00LjggMTctNC44IDIyLjMgMTMuMS0xNi43IDE3LjQtMzEuOSAxNy41LTQ2LjQgMC0yOS42LTIxLjctNTYuMy00NC4yLTg2LjUtMTYtMjIuMy0zMi42LTQyLjYtMzIuNi02OS41em0yMDUuMy0zOWMtMTIuMS02Ni44LTc4LTEyNC40LTk0LjctMTMwLjlsNCA3LjJjMi40IDUuMSAzLjQgMTAuOSAzLjQgMTcuMSAwIDQ0LjctNTQuMiAxMTEuMi01Ni42IDExNi43LTIuMiA1LjEtMy4yIDEwLjUtMy4yIDE1LjggMCAyMC4xIDE1LjIgNDIuMSAxNy45IDQyLjEgMi40IDAgNTYuNi01NS40IDU4LjEtODcuNyA2LjQgMTEuNyA5LjEgMjIuNiA5LjEgMzMuNCAwIDQxLjItNDEuOCA5Ni45LTQxLjggOTYuOSAwIDExLjYgMzEuOSA1My4yIDM1LjUgNTMuMiAxIDAgMi4yLTEuNCAzLjItMi40IDM3LjktMzkuMyA2Ny4zLTg1IDY3LjMtMTM2LjggMC04LS43LTE2LjItMi4yLTI0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdydW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxLjMgMTg5LjNjLTEuMSAxMCA1LjIgMTkuMSA1LjIgMTkuMS43LTcuNSAyLjItMTIuOCA0LTE2LjYuNCAxMC4zIDMuMiAyMy41IDEyLjggMzQuMSA2LjkgNy42IDM1LjYgMjMuMyA1NC45IDYuMSAxIDIuNCAyLjEgNS4zIDMgOC41IDIuOSAxMC4zLTIuNyAyNS4zLTIuNyAyNS4zczE1LjEtMTcuMSAxMy45LTMyLjVjMTAuOC0uNSAyMS40LTguNCAyMS4xLTE5LjUgMCAwLTE4LjkgMTAuNC0zNS41LTguOC05LjctMTEuMi00MC45LTQyLTgzLjEtMzEuOCA0LjMgMSA4LjkgMi40IDEzLjUgNC4xaC0uMWMtNC4yIDItNi41IDcuMS03IDEyem0yOC4zLTEuOGMxOS41IDExIDM3LjQgMjUuNyA0NC45IDM3LTUuNyAzLjMtMjEuNyAxMC40LTM4LTEuNy0xMC4zLTcuNi05LjgtMjYuMi02LjktMzUuM3ptMTQyLjEgNDUuOGMtMS4yIDE1LjUgMTMuOSAzMi41IDEzLjkgMzIuNXMtNS42LTE1LTIuNy0yNS4zYy45LTMuMiAyLTYgMy04LjUgMTkuMyAxNy4zIDQ4IDEuNSA1NC44LTYuMSA5LjYtMTAuNiAxMi4zLTIzLjggMTIuOC0zNC4xIDEuOCAzLjggMy40IDkuMSA0IDE2LjYgMCAwIDYuNC05LjEgNS4yLTE5LjEtLjYtNS0yLjktMTAtNy0xMS44aC0uMWM0LjYtMS44IDkuMi0zLjIgMTMuNS00LjEtNDIuMy0xMC4yLTczLjQgMjAuNi04My4xIDMxLjgtMTYuNyAxOS4yLTM1LjUgOC44LTM1LjUgOC44LS4yIDEwLjkgMTAuNCAxOC45IDIxLjIgMTkuM3ptNjIuNy00NS44YzMgOS4xIDMuNCAyNy43LTcgMzUuNC0xNi4zIDEyLjEtMzIuMiA1LTM3LjkgMS42IDcuNS0xMS40IDI1LjQtMjYgNDQuOS0zN3pNMTYwIDQxOC41aC0yOS40Yy01LjUgMC04LjIgMS42LTkuNSAyLjktMS45IDItMi4yIDQuNy0uOSA4LjEgMy41IDkuMSAxMS40IDE2LjUgMTMuNyAxOC42IDMuMSAyLjcgNy41IDQuMyAxMS44IDQuMyA0LjQgMCA4LjMtMS43IDExLTQuNiA3LjUtOC4yIDExLjktMTcuMSAxMy0xOS44LjYtMS41IDEuMy00LjUtLjktNi44LTEuOC0xLjgtNC43LTIuNy04LjgtMi43em0xODkuMi0xMDEuMmMtMi40IDE3LjktMTMgMzMuOC0yNC42IDQzLjctMy4xLTIyLjctMy43LTU1LjUtMy43LTYyLjQgMC0xNC43IDkuNS0yNC41IDEyLjItMjYuMSAyLjUtMS41IDUuNC0zIDguMy00LjYgMTgtOS42IDQwLjQtMjEuNiA0MC40LTQzLjcgMC0xNi4yLTkuMy0yMy4yLTE1LjQtMjcuOC0uOC0uNi0xLjUtMS4xLTIuMi0xLjctMi4xLTEuNy0zLjctMy00LjMtNC40LTQuNC05LjgtMy42LTM0LjItMS43LTM3LjYuNi0uNiAxNi43LTIwLjkgMTEuOC0zOS4yLTItNy40LTYuOS0xMy4zLTE0LjEtMTctNS4zLTIuNy0xMS45LTQuMi0xOS41LTQuNS0uMS0yLS41LTMuOS0uOS01LjktLjYtMi42LTEuMS01LjMtLjktOC4xLjQtNC43LjgtOSAyLjItMTEuMyA4LjQtMTMuMyAyOC44LTE3LjYgMjktMTcuNmwxMi4zLTIuNC04LjEtOS41Yy0uMS0uMi0xNy4zLTE3LjUtNDYuMy0xNy41LTcuOSAwLTE2IDEuMy0yNC4xIDMuOS0yNC4yIDcuOC00Mi45IDMwLjUtNDkuNCAzOS4zLTMuMS0xLTYuMy0xLjktOS42LTIuNy00LjItMTUuOCA5LTM4LjUgOS0zOC41cy0xMy42LTMtMzMuNyAxNS4yYy0yLjYtNi41LTguMS0yMC41LTEuOC0zNy4yQzE4NC42IDEwLjEgMTc3LjIgMjYgMTc1IDQwLjRjLTcuNi01LjQtNi43LTIzLjEtNy4yLTI3LjYtNy41LjktMjkuMiAyMS45LTI4LjIgNDguMy0yIC41LTMuOSAxLjEtNS45IDEuNy02LjUtOC44LTI1LjEtMzEuNS00OS40LTM5LjMtNy45LTIuMi0xNi0zLjUtMjMuOS0zLjUtMjkgMC00Ni4xIDE3LjMtNDYuMyAxNy41TDYgNDYuOWwxMi4zIDIuNGMuMiAwIDIwLjYgNC4zIDI5IDE3LjYgMS40IDIuMiAxLjggNi42IDIuMiAxMS4zLjIgMi44LS40IDUuNS0uOSA4LjEtLjQgMS45LS44IDMuOS0uOSA1LjktNy43LjMtMTQuMiAxLjgtMTkuNSA0LjUtNy4yIDMuNy0xMi4xIDkuNi0xNC4xIDE3LTUgMTguMiAxMS4yIDM4LjUgMTEuOCAzOS4yIDEuOSAzLjQgMi43IDI3LjgtMS43IDM3LjYtLjYgMS40LTIuMiAyLjctNC4zIDQuNC0uNy41LTEuNCAxLjEtMi4yIDEuNy02LjEgNC42LTE1LjQgMTEuNy0xNS40IDI3LjggMCAyMi4xIDIyLjQgMzQuMSA0MC40IDQzLjcgMyAxLjYgNS44IDMuMSA4LjMgNC42IDIuNyAxLjYgMTIuMiAxMS40IDEyLjIgMjYuMSAwIDYuOS0uNiAzOS43LTMuNyA2Mi40LTExLjYtOS45LTIyLjItMjUuOS0yNC42LTQzLjggMCAwLTI5LjIgMjIuNi0yMC42IDcwLjggNS4yIDI5LjUgMjMuMiA0Ni4xIDQ3IDU0LjcgOC44IDE5LjEgMjkuNCA0NS43IDY3LjMgNDkuNkMxNDMgNTA0LjMgMTYzIDUxMiAxOTIuMiA1MTJoLjJjMjkuMSAwIDQ5LjEtNy43IDYzLjYtMTkuNSAzNy45LTMuOSA1OC41LTMwLjUgNjcuMy00OS42IDIzLjgtOC43IDQxLjctMjUuMiA0Ny01NC43IDguMi00OC40LTIxLjEtNzAuOS0yMS4xLTcwLjl6TTMwNS43IDM3LjdjNS42LTEuOCAxMS42LTIuNyAxNy43LTIuNyAxMSAwIDE5LjkgMyAyNC43IDUtMy4xIDEuNC02LjQgMy4yLTkuNyA1LjMtMi40LS40LTUuNi0uOC05LjItLjgtMTAuNSAwLTIwLjUgMy4xLTI4LjcgOC45LTEyLjMgOC43LTE4IDE2LjktMjAuNyAyMi40LTIuMi0xLjMtNC41LTIuNS03LjEtMy43LTEuNi0uOC0zLjEtMS41LTQuNy0yLjIgNi4xLTkuMSAxOS45LTI2LjUgMzcuNy0zMi4yem0yMSAxOC4yYy0uOCAxLTEuNiAyLjEtMi4zIDMuMi0zLjMgNS4yLTMuOSAxMS42LTQuNCAxNy44LS41IDYuNC0xLjEgMTIuNS00LjQgMTctNC4yLjgtOC4xIDEuNy0xMS41IDIuNy0yLjMtMy4xLTUuNi03LTEwLjUtMTEuMiAxLjQtNC44IDUuNS0xNi4xIDEzLjUtMjIuNSA1LjYtNC4zIDEyLjItNi43IDE5LjYtN3pNNDUuNiA0NS4zYy0zLjMtMi4yLTYuNi00LTkuNy01LjMgNC44LTIgMTMuNy01IDI0LjctNSA2LjEgMCAxMiAuOSAxNy43IDIuNyAxNy44IDUuOCAzMS42IDIzLjIgMzcuNyAzMi4xLTEuNi43LTMuMiAxLjQtNC44IDIuMi0yLjUgMS4yLTQuOSAyLjUtNy4xIDMuNy0yLjYtNS40LTguMy0xMy43LTIwLjctMjIuNC04LjMtNS44LTE4LjItOC45LTI4LjgtOC45LTMuNC4xLTYuNi41LTkgLjl6bTQ0LjcgNDAuMWMtNC45IDQuMi04LjMgOC0xMC41IDExLjItMy40LS45LTcuMy0xLjktMTEuNS0yLjdDNjUgODkuNSA2NC41IDgzLjQgNjQgNzdjLS41LTYuMi0xLjEtMTIuNi00LjQtMTcuOC0uNy0xLjEtMS41LTIuMi0yLjMtMy4yIDcuNC4zIDE0IDIuNiAxOS41IDcgOCA2LjMgMTIuMSAxNy42IDEzLjUgMjIuNHpNNTguMSAyNTkuOWMtMi43LTEuNi01LjYtMy4xLTguNC00LjYtMTQuOS04LTMwLjItMTYuMy0zMC4yLTMwLjUgMC0xMS4xIDQuMy0xNC42IDguOS0xOC4ybC41LS40Yy43LS42IDEuNC0xLjIgMi4yLTEuOC0uOSA3LjItMS45IDEzLjMtMi43IDE0LjkgMCAwIDEyLjEtMTUgMTUuNy00NC4zIDEuNC0xMS41LTEuMS0zNC4zLTUuMS00MyAuMiA0LjkgMCA5LjgtLjMgMTQuNC0uNC0uOC0uOC0xLjYtMS4zLTIuMi0zLjItNC0xMS44LTE3LjUtOS40LTI2LjYuOS0zLjUgMy4xLTYgNi43LTcuOCAzLjgtMS45IDguOC0yLjkgMTUuMS0yLjkgMTIuMyAwIDI1LjkgMy43IDMyLjkgNiAyNS4xIDggNTUuNCAzMC45IDY0LjEgMzcuNy4yLjIuNC4zLjQuM2w1LjYgMy45LTMuNS01LjhjLS4yLS4zLTE5LjEtMzEuNC01My4yLTQ2LjUgMi0yLjkgNy40LTguMSAyMS42LTE1LjEgMjEuNC0xMC41IDQ2LjUtMTUuOCA3NC4zLTE1LjggMjcuOSAwIDUyLjkgNS4zIDc0LjMgMTUuOCAxNC4yIDYuOSAxOS42IDEyLjIgMjEuNiAxNS4xLTM0IDE1LjEtNTIuOSA0Ni4yLTUzLjEgNDYuNWwtMy41IDUuOCA1LjYtMy45cy4yLS4xLjQtLjNjOC43LTYuOCAzOS0yOS44IDY0LjEtMzcuNyA3LTIuMiAyMC42LTYgMzIuOS02IDYuMyAwIDExLjMgMSAxNS4xIDIuOSAzLjUgMS44IDUuNyA0LjQgNi43IDcuOCAyLjUgOS4xLTYuMSAyMi42LTkuNCAyNi42LS41LjYtLjkgMS4zLTEuMyAyLjItLjMtNC42LS41LTkuNS0uMy0xNC40LTQgOC44LTYuNSAzMS41LTUuMSA0MyAzLjYgMjkuMyAxNS43IDQ0LjMgMTUuNyA0NC4zLS44LTEuNi0xLjgtNy43LTIuNy0xNC45LjcuNiAxLjUgMS4yIDIuMiAxLjhsLjUuNGM0LjYgMy43IDguOSA3LjEgOC45IDE4LjIgMCAxNC4yLTE1LjQgMjIuNS0zMC4yIDMwLjUtMi45IDEuNS01LjcgMy4xLTguNCA0LjYtOC43IDUtMTggMTYuNy0xOS4xIDM0LjItLjkgMTQuNi45IDQ5LjkgMy40IDc1LjktMTIuNCA0LjgtMjYuNyA2LjQtMzkuNyA2LjgtMi00LjEtMy45LTguNS01LjUtMTMuMS0uNy0yLTE5LjYtNTEuMS0yNi40LTYyLjIgNS41IDM5IDE3LjUgNzMuNyAyMy41IDg5LjYtMy41LS41LTcuMy0uNy0xMS43LS43aC0xMTdjLTQuNCAwLTguMy4zLTExLjcuNyA2LTE1LjkgMTguMS01MC42IDIzLjUtODkuNi02LjggMTEuMi0yNS43IDYwLjMtMjYuNCA2Mi4yLTEuNiA0LjYtMy41IDktNS41IDEzLjEtMTMtLjQtMjcuMi0yLTM5LjctNi44IDIuNS0yNiA0LjMtNjEuMiAzLjQtNzUuOS0uOS0xNy40LTEwLjMtMjkuMi0xOS0zNC4yek0zNC44IDQwNC42Yy0xMi4xLTIwLTguNy01NC4xLTMuNy01OS4xIDEwLjkgMzQuNCA0Ny4yIDQ0LjMgNzQuNCA0NS40LTIuNyA0LjItNS4yIDcuNi03IDEwbC0xLjQgMS40Yy03LjIgNy44LTguNiAxOC41LTQuMSAzMS44LTIyLjctLjEtNDYuMy05LjgtNTguMi0yOS41em00NS43IDQzLjVjNiAxLjEgMTIuMiAxLjkgMTguNiAyLjQgMy41IDggNy40IDE1LjkgMTIuMyAyMy4xLTE0LjQtNS45LTI0LjQtMTYtMzAuOS0yNS41ek0xOTIgNDk4LjJjLTYwLjYtLjEtNzguMy00NS44LTg0LjktNjQuNy0zLjctMTAuNS0zLjQtMTguMi45LTIzLjEgMi45LTMuMyA5LjUtNy4yIDI0LjYtNy4yaDExOC44YzE1LjEgMCAyMS44IDMuOSAyNC42IDcuMiA0LjIgNC44IDQuNSAxMi42LjkgMjMuMS02LjYgMTguOC0yNC4zIDY0LjYtODQuOSA2NC43em04MC42LTI0LjZjNC45LTcuMiA4LjgtMTUuMSAxMi4zLTIzLjEgNi40LS41IDEyLjYtMS4zIDE4LjYtMi40LTYuNSA5LjUtMTYuNSAxOS42LTMwLjkgMjUuNXptNzYuNi02OWMtMTIgMTkuNy0zNS42IDI5LjMtNTguMSAyOS43IDQuNS0xMy4zIDMuMS0yNC4xLTQuMS0zMS44LS40LS41LS45LTEtMS40LTEuNS0xLjgtMi40LTQuMy01LjgtNy0xMCAyNy4yLTEuMiA2My41LTExIDc0LjQtNDUuNCA1IDUgOC40IDM5LjEtMy44IDU5ek0xOTEuOSAxODcuN2guMmMxMi43LS4xIDI3LjItMTcuOCAyNy4yLTE3LjgtOS45IDYtMTguOCA4LjEtMjcuMyA4LjMtOC41LS4yLTE3LjQtMi4zLTI3LjMtOC4zIDAgMCAxNC41IDE3LjYgMjcuMiAxNy44em02MS43IDIzMC43aC0yOS40Yy00LjIgMC03LjIuOS04LjkgMi43LTIuMiAyLjMtMS41IDUuMi0uOSA2LjcgMSAyLjYgNS41IDExLjMgMTMgMTkuMyAyLjcgMi45IDYuNiA0LjUgMTEgNC41czguNy0xLjYgMTEuOC00LjJjMi4zLTIgMTAuMi05LjIgMTMuNy0xOC4xIDEuMy0zLjMgMS02LS45LTcuOS0xLjMtMS4zLTQtMi45LTkuNC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHdWlsZGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0My40MjcsNjRINC41NzFjMCwxMDMuMjYsMjIuMTkyLDE4MC4wNiw0My40MTgsMjIyLjM1OEMxMTIuMDQ2LDQxNC4xMzUsMjI0LDQ0OCwyMjUuMjU2LDQ0OGEzMTIuODI0LDMxMi44MjQsMCwwLDAsMTQwLjU1LTEwMy40NzdjMjUuOTA3LTMzLjkyMyw1My4xLTg3LjE5LDY1LjkxNi0xNDUuNzYxSDE3MS44MzNjNC4xNCwzNi40MjksMjIuMTc3LDY3Ljk0Niw0NS4xLDg2Ljk0NGg4OC41ODljLTE3LjAxMiwyOC4yMTMtNDguMTg2LDU0LjQtODAuNDU2LDY5LjQ4Mi0zMS4yMzItMTMuMjU5LTY5LjA5LTQ2LjU0NC05Ni41NDgtOTguMzYyLTI2LjcyNi01My44MzMtMjcuMDkyLTEwNS44ODMtMjcuMDkyLTEwNS44ODNINDM3LjU3M0E2MjUuOTEsNjI1LjkxLDAsMCwwLDQ0My40MjcsNjRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUd1bHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA5LjggMzkxLjFsLTE0LjEgMjQuNi00LjYgODAuMmMwIDguOS0yOC4zIDE2LjEtNjMuMSAxNi4xcy02My4xLTcuMi02My4xLTE2LjFsLTUuOC03OS40LTE0LjktMjUuNGM0MS4yIDE3LjMgMTI2IDE2LjcgMTY1LjYgMHptLTE5Ni0yNTMuM2wxMy42IDEyNS41YzUuOS0yMCAyMC44LTQ3IDQwLTU1LjIgNi4zLTIuNyAxMi43LTIuNyAxOC43LjkgNS4yIDMgOS42IDkuMyAxMC4xIDExLjggMS4yIDYuNS0yIDkuMS00LjUgOS4xLTMgMC01LjMtNC42LTYuOC03LjMtNC4xLTcuMy0xMC4zLTcuNi0xNi45LTIuOC02LjkgNS0xMi45IDEzLjQtMTcuMSAyMC43LTUuMSA4LjgtOS40IDE4LjUtMTIgMjguMi0xLjUgNS42LTIuOSAxNC42LS42IDE5LjkgMSAyLjIgMi41IDMuNiA0LjkgMy42IDUgMCAxMi4zLTYuNiAxNS44LTEwLjEgNC41LTQuNSAxMC4zLTExLjUgMTIuNS0xNmw1LjItMTUuNWMyLjYtNi44IDkuOS01LjYgOS45IDAgMCAxMC4yLTMuNyAxMy42LTEwIDM0LjctNS44IDE5LjUtNy42IDI1LjgtNy42IDI1LjgtLjcgMi44LTMuNCA3LjUtNi4zIDcuNS0xLjIgMC0yLjEtLjQtMi42LTEuMi0xLTEuNC0uOS01LjMtLjgtNi4zLjItMy4yIDYuMy0yMi4yIDcuMy0yNS4yLTIgMi4yLTQuMSA0LjQtNi40IDYuNi01LjQgNS4xLTE0LjEgMTEuOC0yMS41IDExLjgtMy40IDAtNS42LS45LTcuNy0yLjRsNy42IDc5LjZjMiA1IDM5LjIgMTcuMSA4OC4yIDE3LjEgNDkuMSAwIDg2LjMtMTIuMiA4OC4yLTE3LjFsMTAuOS05NC42Yy01LjcgNS4yLTEyLjMgMTEuNi0xOS42IDE0LjgtNS40IDIuMy0xNy40IDMuOC0xNy40LTUuNyAwLTUuMiA5LjEtMTQuOCAxNC40LTIxLjUgMS40LTEuNyA0LjctNS45IDQuNy04LjEgMC0yLjktNi0yLjItMTEuNyAyLjUtMy4yIDIuNy02LjIgNi4zLTguNyA5LjctNC4zIDYtNi42IDExLjItOC41IDE1LjUtNi4yIDE0LjItNC4xIDguNi05LjEgMjItNSAxMy4zLTQuMiAxMS44LTUuMiAxNC0uOSAxLjktMi4yIDMuNS00IDQuNS0xLjkgMS00LjUuOS02LjEtLjMtLjktLjYtMS4zLTEuOS0xLjMtMy43IDAtLjkuMS0xLjguMy0yLjcgMS41LTYuMSA3LjgtMTguMSAxNS0zNC4zIDEuNi0zLjcgMS0yLjYuOC0yLjMtNi4yIDYtMTAuOSA4LjktMTQuNCAxMC41LTUuOCAyLjYtMTMgMi42LTE0LjUtNC4xLS4xLS40LS4xLS44LS4yLTEuMi0xMS44IDkuMi0yNC4zIDExLjctMjAtOC4xLTQuNiA4LjItMTIuNiAxNC45LTIyLjQgMTQuOS00LjEgMC03LjEtMS40LTguNi01LjEtMi4zLTUuNSAxLjMtMTQuOSA0LjYtMjMuOCAxLjctNC41IDQtOS45IDcuMS0xNi4yIDEuNi0zLjQgNC4yLTUuNCA3LjYtNC41LjYuMiAxLjEuNCAxLjYuNyAyLjYgMS44IDEuNiA0LjUuMyA3LjItMy44IDcuNS03LjEgMTMtOS4zIDIwLjgtLjkgMy4zLTIgOSAxLjUgOSAyLjQgMCA0LjctLjggNi45LTIuNCA0LjYtMy40IDguMy04LjUgMTEuMS0xMy41IDItMy42IDQuNC04LjMgNS42LTEyLjMuNS0xLjcgMS4xLTMuMyAxLjgtNC44IDEuMS0yLjUgMi42LTUuMSA1LjItNS4xIDEuMyAwIDIuNC41IDMuMiAxLjUgMS43IDIuMiAxLjMgNC41LjQgNi45LTIgNS42LTQuNyAxMC42LTYuOSAxNi43LTEuMyAzLjUtMi43IDgtMi43IDExLjcgMCAzLjQgMy43IDIuNiA2LjggMS4yIDIuNC0xLjEgNC44LTIuOCA2LjgtNC41IDEuMi00LjkuOS0zLjggMjYuNC02OC4yIDEuMy0zLjMgMy43LTQuNyA2LjEtNC43IDEuMiAwIDIuMi40IDMuMiAxLjEgMS43IDEuMyAxLjcgNC4xIDEgNi4yLS43IDEuOS0uNiAxLjMtNC41IDEwLjUtNS4yIDEyLjEtOC42IDIwLjgtMTMuMiAzMS45LTEuOSA0LjYtNy43IDE4LjktOC43IDIyLjMtLjYgMi4yLTEuMyA1LjggMSA1LjggNS40IDAgMTkuMy0xMy4xIDIzLjEtMTcgLjItLjMuNS0uNC45LS42LjYtMS45IDEuMi0zLjcgMS43LTUuNSAxLjQtMy44IDIuNy04LjIgNS4zLTExLjMuOC0xIDEuNy0xLjYgMi43LTEuNiAyLjggMCA0LjIgMS4yIDQuMiA0IDAgMS4xLS43IDUuMS0xLjEgNi4yIDEuNC0xLjUgMi45LTMgNC41LTQuNSAxNS0xMy45IDI1LjctNi44IDI1LjcuMiAwIDcuNC04LjkgMTcuNy0xMy44IDIzLjQtMS42IDEuOS00LjkgNS40LTUgNi40IDAgMS4zLjkgMS44IDIuMiAxLjggMiAwIDYuNC0zLjUgOC00LjcgNS0zLjkgMTEuOC05LjkgMTYuNi0xNC4xbDE0LjgtMTM2LjhjLTMwLjUgMTcuMS0xOTcuNiAxNy4yLTIyOC4zLjJ6bTIyOS43LTguNWMwIDIxLTIzMS4yIDIxLTIzMS4yIDAgMC04LjggNTEuOC0xNS45IDExNS42LTE1LjkgOSAwIDE3LjguMSAyNi4zLjRsMTIuNi00OC43TDIyOC4xLjZjMS40LTEuNCA1LjgtLjIgOS45IDMuNXM2LjYgNy45IDUuMyA5LjNsLS4xLjFMMTg1LjkgNzRsLTEwIDQwLjdjMzkuOSAyLjYgNjcuNiA4LjEgNjcuNiAxNC42em0tNjkuNCA0LjZjMC0uOC0uOS0xLjUtMi41LTIuMWwtLjIuOGMwIDEuMy01IDIuNC0xMS4xIDIuNHMtMTEuMS0xLjEtMTEuMS0yLjRjMC0uMSAwLS4yLjEtLjNsLjItLjdjLTEuOC42LTMgMS40LTMgMi4zIDAgMi4xIDYuMiAzLjcgMTMuNyAzLjcgNy43LjEgMTMuOS0xLjYgMTMuOS0zLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhY2tlck5ld3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMySDB6bTIxLjIgMTk3LjJIMjFjLjEtLjEuMi0uMy4zLS40IDAgLjEgMCAuMy0uMS40em0yMTggNTMuOVYzODRoLTMxLjRWMjgxLjNMMTI4IDEyOGgzNy4zYzUyLjUgOTguMyA0OS4yIDEwMS4yIDU5LjMgMTI1LjYgMTIuMy0yNyA1LjgtMjQuNCA2MC42LTEyNS42SDMyMGwtODAuOCAxNTUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFja2VycmFuayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzcuNSAxMjhDNDYzIDEwMy4wNSAyODUuMTMgMCAyNTYuMTYgMFM0OS4yNSAxMDIuNzkgMzQuODQgMTI4cy0xNC40OSAyMzAuOCAwIDI1NiAxOTIuMzggMTI4IDIyMS4zMiAxMjhTNDYzIDQwOS4wOCA0NzcuNDkgMzg0czE0LjUxLTIzMSAuMDEtMjU2ek0zMTYuMTMgNDE0LjIyYy00IDAtNDAuOTEtMzUuNzctMzgtMzguNjkuODctLjg3IDYuMjYtMS40OCAxNy41NS0xLjgzIDAtMjYuMjMuNTktNjguNTkuOTQtODYuMzIgMC0yLS40NC0zLjQzLS40NC01Ljg1aC03OS45M2MwIDcuMS0uNDYgMzYuMiAxLjM3IDcyLjg4LjIzIDQuNTQtMS41OCA2LTUuNzQgNS45NC0xMC4xMyAwLTIwLjI3LS4xMS0zMC40MS0uMDgtNC4xIDAtNS44Ny0xLjUzLTUuNzQtNi4xMS45Mi0zMy40NCAzLTg0LS4xNS0yMTIuNjd2LTMuMTdjLTkuNjctLjM1LTE2LjM4LTEtMTcuMjYtMS44NC0yLjkyLTIuOTIgMzQuNTQtMzguNjkgMzguNDktMzguNjlzNDEuMTcgMzUuNzggMzguMjcgMzguNjljLS44Ny44Ny03LjkgMS40OS0xNi43NyAxLjg0djMuMTZjLTIuNDIgMjUuNzUtMiA3OS41OS0yLjYzIDEwNS4zOWg4MC4yNmMwLTQuNTUuMzktMzQuNzQtMS4yLTgzLjY0LS4xLTMuMzkuOTUtNS4xNyA0LjIxLTUuMiAxMS4wNy0uMDggMjIuMTUtLjEzIDMzLjIzLS4wNiAzLjQ2IDAgNC41NyAxLjcyIDQuNSA1LjM4QzMzMyAzNTQuNjQgMzM2IDM0MS4yOSAzMzYgMzczLjY5YzguODcuMzUgMTYuODIgMSAxNy42OSAxLjg0IDIuODggMi45MS0zMy42MiAzOC42OS0zNy41OCAzOC42OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFzaG5vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUuMTkgMTcxLjFDLTExLjcyIDIxNy4xLTExLjcyIDI5NCAzNS4xOSAzNDAuOUwxNzEuMSA0NzYuOEMyMTcuMSA1MjMuNyAyOTQgNTIzLjcgMzQwLjkgNDc2LjhMNDc2LjggMzQwLjlDNTIzLjcgMjk0IDUyMy43IDIxNy4xIDQ3Ni44IDE3MS4xTDM0MC45IDM1LjE5QzI5NC0xMS43MiAyMTcuMS0xMS43MiAxNzEuMSAzNS4xOUwzNS4xOSAxNzEuMXpNMzE1LjUgMzE1LjVDMjgyLjYgMzQ4LjMgMjI5LjQgMzQ4LjMgMTk2LjYgMzE1LjVDMTYzLjcgMjgyLjYgMTYzLjcgMjI5LjQgMTk2LjYgMTk2LjZDMjI5LjQgMTYzLjcgMjgyLjYgMTYzLjcgMzE1LjUgMTk2LjZDMzQ4LjMgMjI5LjQgMzQ4LjMgMjgyLjYgMzE1LjUgMzE1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjUxLjYgMTU3LjZjMC0xLjktLjktMi44LTIuOC0yLjhoLTQwLjljLTEuNiAwLTIuNyAxLjQtMi43IDIuOHYyMDEuOGMwIDEuNCAxLjEgMi44IDIuNyAyLjhoNDAuOWMxLjkgMCAyLjgtLjkgMi44LTIuOHpNMTU2LjUgMTY4Yy0xNi4xLTExLjgtMzYuMy0xNy45LTYwLjMtMTgtMTguMS0uMS0zNC42IDMuNy00OS44IDExLjRWODAuMmMwLTEuOC0uOS0yLjctMi44LTIuN0gyLjdjLTEuOCAwLTIuNy45LTIuNyAyLjd2Mjc5LjJjMCAxLjkuOSAyLjggMi43IDIuOGg0MWMxLjkgMCAyLjgtLjkgMi44LTIuOFYyMjMuM2MwLS44LTIuOC0yNyA0NS44LTI3IDQ4LjUgMCA0NS44IDI2LjEgNDUuOCAyN3YxMjIuNmMwIDkgNy4zIDE2LjMgMTYuNCAxNi4zaDI3LjNjMS44IDAgMi43LS45IDIuNy0yLjhWMjIzLjNjMC0yMy40LTkuMy00MS44LTI4LTU1LjN6bTQ3OC40IDExMC4xYy02LjgtMTUuNy0xOC40LTI3LTM0LjktMzQuMWwtNTcuNi0yNS4zYy04LjYtMy42LTkuMi0xMS4yLTIuNi0xNi4xIDcuNC01LjUgNDQuMy0xMy45IDg0IDYuOCAxLjcgMSA0LS4zIDQtMi40di00NC43YzAtMS4zLS42LTIuMS0xLjktMi42LTE3LjctNi42LTM2LjEtOS45LTU1LjEtOS45LTI2LjUgMC00NS4zIDUuOC01OC41IDE1LjQtLjUuNC0yOC40IDIwLTIyLjcgNTMuNyAzLjQgMTkuNiAxNS44IDM0LjIgMzcuMiA0My42bDUzLjYgMjMuNWMxMS42IDUuMSAxNS4yIDEzLjMgMTIuMiAyMS4yLTMuNyA5LjEtMTMuMiAxMy42LTM2LjUgMTMuNi0yNC4zIDAtNDQuNy04LjktNTguNC0xOS4xLTIuMS0xLjQtNC40LjItNC40IDIuM3YzNC40YzAgMTAuNCA0LjkgMTcuMyAxNC42IDIwLjcgMTUuNiA1LjUgMzEuNiA4LjIgNDguMiA4LjIgMTIuNyAwIDI1LjgtMS4yIDM2LjMtNC4zLjctLjMgMzYtOC45IDQ1LjYtNDUuOCAzLjUtMTMuNSAyLjQtMjYuNS0zLjEtMzkuMXpNMzc2LjIgMTQ5LjhjLTMxLjcgMC0xMDQuMiAyMC4xLTEwNC4yIDEwMy41djE4My41YzAgLjguNiAyLjcgMi43IDIuN2g0MC45YzEuOSAwIDIuOC0uOSAyLjgtMi43VjM0OGMxNi41IDEyLjcgMzUuOCAxOS4xIDU3LjcgMTkuMSA2MC41IDAgMTA4LjctNDguNSAxMDguNy0xMDguNy4xLTYwLjMtNDguMi0xMDguNi0xMDguNi0xMDguNnptMCAxNzAuOWMtMTcuMiAwLTMxLjktNi4xLTQ0LTE4LjItMTIuMi0xMi4yLTE4LjItMjYuOC0xOC4yLTQ0IDAtMzQuNSAyNy42LTYyLjIgNjIuMi02Mi4yIDM0LjUgMCA2Mi4yIDI3LjYgNjIuMiA2Mi4yLjEgMzQuMy0yNy4zIDYyLjItNjIuMiA2Mi4yek0yMjguMyA3Mi41Yy0xNS45IDAtMjguOCAxMi45LTI4LjkgMjguOSAwIDE1LjYgMTIuNyAyOC45IDI4LjkgMjguOXMyOC45LTEzLjEgMjguOS0yOC45YzAtMTYuMi0xMy0yOC45LTI4LjktMjguOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGlyZUFIZWxwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQzLjEgMEg3MS45QzY3LjkgMzcuMyAzNy40IDY3LjggMCA3MS43djM3MS41YzM3LjQgNC45IDY2IDMyLjQgNzEuOSA2OC44aDM3Mi4yYzMtMzYuNCAzMi41LTY1LjggNjcuOS02OS44VjcxLjdjLTM2LjQtNS45LTY1LTM1LjMtNjguOS03MS43em0tMzcgNDA0LjljLTM2LjMgMC0xOC44LTItNTUuMS0yLTM1LjggMC0yMSAyLTU2LjEgMi01LjkgMC00LjktOC4yIDAtOS44IDIyLjgtNy42IDIyLjktMTAuMiAyNC42LTEyLjggMTAuNC0xNS42IDUuOS04MyA1LjktMTEzIDAtNS4zLTYuNC0xMi44LTEzLjgtMTIuOEgyMDAuNGMtNy40IDAtMTMuOCA3LjUtMTMuOCAxMi44IDAgMzAtNC41IDk3LjQgNS45IDExMyAxLjcgMi41IDEuOCA1LjIgMjQuNiAxMi44IDQuOSAxLjYgNiA5LjggMCA5LjgtMzUuMSAwLTIwLjMtMi01Ni4xLTItMzYuMyAwLTE4LjggMi01NS4xIDItNy45IDAtNS44LTEwLjggMC0xMC44IDEwLjItMy40IDEzLjUtMy41IDIxLjctMTMuOCA3LjctMTIuOSA3LjktNDQuNCA3LjktMTI3LjhWMTUxLjNjMC0yMi4yLTEyLjItMjguMy0yOC42LTMyLjQtOC44LTIuMi00LTExLjggMS0xMS44IDM2LjUgMCAyMC42IDIgNTcuMSAyIDMyLjcgMCAxNi41LTIgNDkuMi0yIDMuMyAwIDguNSA4LjMgMSAxMC44LTQuOSAxLjYtMjcuNiAzLjctMjcuNiAzOS4zIDAgNDUuNi0uMiA1NS44IDEgNjguOCAwIDEuMyAyLjMgMTIuOCAxMi44IDEyLjhoMTA5LjJjMTAuNSAwIDEyLjgtMTEuNSAxMi44LTEyLjggMS4yLTEzIDEtMjMuMiAxLTY4LjggMC0zNS42LTIyLjctMzcuNy0yNy42LTM5LjMtNy41LTIuNS0yLjMtMTAuOCAxLTEwLjggMzIuNyAwIDE2LjUgMiA0OS4yIDIgMzYuNSAwIDIwLjYtMiA1Ny4xLTIgNC45IDAgOS45IDkuNiAxIDExLjgtMTYuNCA0LjEtMjguNiAxMC4zLTI4LjYgMzIuNHYxMDEuMmMwIDgzLjQuMSAxMTQuOSA3LjkgMTI3LjggOC4yIDEwLjIgMTEuNCAxMC40IDIxLjcgMTMuOCA1LjggMCA3LjggMTAuOCAwIDEwLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjYwLjM1MywyNTQuODc4LDEzMS41MzgsMzMuMWEyLjIwOCwyLjIwOCwwLDAsMC0zLjgyOS4wMDlMLjMsMjU0Ljg4N0EyLjIzNCwyLjIzNCwwLDAsMCwuMywyNTcuMTIyTDEyOS4xMTYsNDc4LjlhMi4yMDgsMi4yMDgsMCwwLDAsMy44My0uMDA5TDI2MC4zNTgsMjU3LjExM0EyLjIzOSwyLjIzOSwwLDAsMCwyNjAuMzUzLDI1NC44NzhabTM5LjA3OC0yNS43MTNhMi4xOSwyLjE5LDAsMCwwLDEuOSwxLjExMWg2Ni41MDlhMi4yMjYsMi4yMjYsMCwwLDAsMS45LTMuMzQxTDI1OS4xMTUsMzMuMTExYTIuMTg3LDIuMTg3LDAsMCwwLTEuOS0xLjExMUgxOTAuNzA3YTIuMjI2LDIuMjI2LDAsMCwwLTEuOSwzLjM0MVpNNTExLjcsMjU0Ljg4NiwzODQuOSwzMy4xMTJBMi4yLDIuMiwwLDAsMCwzODIuOTksMzJoLTY2LjZhMi4yMjYsMi4yMjYsMCwwLDAtMS45MDYsMy4zNEw0NDAuNjUyLDI1NiwzMTQuNDgxLDQ3Ni42NmEyLjIyNiwyLjIyNiwwLDAsMCwxLjkwNiwzLjM0aDY2LjZhMi4yLDIuMiwwLDAsMCwxLjkwNi0xLjExMkw1MTEuNywyNTcuMTE0QTIuMjQzLDIuMjQzLDAsMCwwLDUxMS43LDI1NC44ODZaTTM2Ni4wMTYsMjg0LjkxN0gyOTkuNTA4YTIuMTg3LDIuMTg3LDAsMCwwLTEuOSwxLjExMWwtMTA4LjgsMTkwLjYzMWEyLjIyNiwyLjIyNiwwLDAsMCwxLjksMy4zNDFoNjYuNTA5YTIuMTg3LDIuMTg3LDAsMCwwLDEuOS0xLjExMWwxMDguOC0xOTAuNjMxQTIuMjI2LDIuMjI2LDAsMCwwLDM2Ni4wMTYsMjg0LjkxN1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9vbGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0LjUgMzUybDM4LjMuOGMtMTMuMi00LjYtMjYtMTAuMi0zOC4zLTE2Ljh6bTU3LjctNS4zdjUuM2wtMTkuNC44YzM2LjUgMTIuNSA2OS45IDE0LjIgOTQuNyA3LjItMTkuOS4yLTQ1LjgtMi42LTc1LjMtMTMuM3ptNDA4LjktMTE1LjJjMTUuOSAwIDI4LjktMTIuOSAyOC45LTI4LjlzLTEyLjktMjQuNS0yOC45LTI0LjVjLTE1LjkgMC0yOC45IDguNi0yOC45IDI0LjVzMTIuOSAyOC45IDI4LjkgMjguOXptLTI5IDEyMC41SDY0MFYyNDEuNWgtNTcuOXptLTczLjcgMGg1Ny45VjE1Ni43TDUwOC40IDE4NHptLTMxLTExOS40Yy0xOC4yLTE4LjItNTAuNC0xNy4xLTUwLjQtMTcuMXMtMzIuMy0xLjEtNTAuNCAxNy4xYy0xOC4yIDE4LjItMTYuOCAzMy45LTE2LjggNTIuNnMtMS40IDM0LjMgMTYuOCA1Mi41IDUwLjQgMTcuMSA1MC40IDE3LjEgMzIuMyAxLjEgNTAuNC0xNy4xYzE4LjItMTguMiAxNi44LTMzLjggMTYuOC01Mi41LS4xLTE4LjggMS4zLTM0LjUtMTYuOC01Mi42em0tMzkuOCA3MS45YzAgMy42LTEuOCAxMi41LTEwLjcgMTIuNXMtMTAuNy04LjktMTAuNy0xMi41di00MC40YzAtOC43IDcuMy0xMC45IDEwLjctMTAuOXMxMC43IDIuMSAxMC43IDEwLjl6bS0xMDYuMi03MS45Yy0xOC4yLTE4LjItNTAuNC0xNy4xLTUwLjQtMTcuMXMtMzIuMi0xLjEtNTAuNCAxNy4xYy0xLjkgMS45LTMuNyAzLjktNS4zIDYtMzguMi0yOS42LTcyLjUtNDYuNS0xMDIuMS02MS4xdi0yMC43bC0yMi41IDEwLjZjLTU0LjQtMjIuMS04OS0xOC4yLTk3LjMuMSAwIDAtMjQuOSAzMi44IDYxLjggMTEwLjhWMzUyaDU3Ljl2LTI4LjZjLTYuNS00LjItMTMtOC43LTE5LjQtMTMuNi0xNC44LTExLjItMjcuNC0yMS42LTM4LjQtMzEuNHYtMzFjMTMuMSAxNC43IDMwLjUgMzEuNCA1My40IDUwLjNsNC41IDMuNnYtMjkuOGMwLTYuOSAxLjctMTguMiAxMC44LTE4LjJzMTAuNiA2LjkgMTAuNiAxNVYzMTdjMTggMTIuMiAzNy4zIDIyLjEgNTcuNyAyOS42di05My45YzAtMTguNy0xMy40LTM3LjQtNDAuNi0zNy40LTE1LjgtLjEtMzAuNSA4LjItMzguNSAyMS45di01NC4zYzQxLjkgMjAuOSA4My45IDQ2LjUgOTkuOSA1OC4zLTEwLjIgMTQuNi05LjMgMjguMS05LjMgNDMuNyAwIDE4LjctMS40IDM0LjMgMTYuOCA1Mi41czUwLjQgMTcuMSA1MC40IDE3LjEgMzIuMyAxLjEgNTAuNC0xNy4xYzE4LjItMTguMiAxNi43LTMzLjggMTYuNy01Mi41IDAtMTguNSAxLjUtMzQuMi0xNi43LTUyLjN6TTY1LjIgMTg0djYzLjNjLTQ4LjctNTQuNS0zOC45LTc2LTM1LjItNzkuMSAxMy41LTExLjQgMzcuNS04IDY0LjQgMi4xem0yMjYuNSAxMjAuNWMwIDMuNi0xLjggMTIuNS0xMC43IDEyLjVzLTEwLjctOC45LTEwLjctMTIuNXYtNDAuNGMwLTguNyA3LjMtMTAuOSAxMC43LTEwLjlzMTAuNyAyLjEgMTAuNyAxMC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3JuYmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ni4zOCAzNzAuM2EzNy44IDM3LjggMCAxIDEtMzIuMDctMzIuNDJjLTc4LjI4LTExMS4zNSA1Mi0xOTAuNTMgNTItMTkwLjUzLTUuODYgNDMtOC4yNCA5MS4xNi04LjI0IDkxLjE2LTY3LjMxIDQxLjQ5LjkzIDY0LjA2IDM5LjgxIDcyLjg3YTE0MC4zOCAxNDAuMzggMCAwIDAgMTMxLjY2IDkxLjk0YzEuOTIgMCAzLjc3LS4yMSA1LjY3LS4yOGwuMTEgMTguODZjLTk5LjIyIDEuMzktMTU4LjctMjkuMTQtMTg4Ljk0LTUxLjZ6bTEwOC0zMjcuN0EzNy41NyAzNy41NyAwIDAgMCAxODEgMjEuNDVhMzcuOTUgMzcuOTUgMCAxIDAtMzEuMTcgNTQuMjJjLTIyLjU1IDI5LjkxLTUzLjgzIDg5LjU3LTUyLjQyIDE5MGwyMS44NC0uMTVjMC0uOS0uMTQtMS43Ny0uMTQtMi42OEExNDAuNDIgMTQwLjQyIDAgMCAxIDIwNyAxMzIuNzFjOC0zNy43MSAzMC43LTExNC4zIDczLjgtNDQuMjkgMCAwIDQ4LjE0IDIuMzggOTEuMTggOC4yNCAwIDAtNzcuODQtMTI4LTE4Ny41OS01NC4wNnptMzA0LjE5IDEzNC4xN2EzNy45NCAzNy45NCAwIDEgMC01My44NC0yOC43QzQwMyAxMjYuMTMgMzQ0Ljg5IDk5IDI1MS4yOCAxMDAuMzNsLjE0IDIyLjVjMi43LS4xNSA1LjM5LS40MSA4LjE0LS40MWExNDAuMzcgMTQwLjM3IDAgMCAxIDEzMC40OSA4OC43NmMzOS4xIDkgMTA1LjA2IDMxLjU4IDM4LjQ2IDcyLjU0IDAgMC0yLjM0IDQ4LjEzLTguMjEgOTEuMTYgMCAwIDEzMy40NS04MS4xNiA0OS0xOTQuNjFhMzcuNDUgMzcuNDUgMCAwIDAgMTkuMzEtMy41ek0zNzQuMDYgNDM2LjI0YzIxLjQzLTMyLjQ2IDQ2LjQyLTg5LjY5IDQ1LjE0LTE3OS42NmwtMTkuNTIuMTRjLjA4IDIuMDYuMyA0LjA3LjMgNi4xNWExNDAuMzQgMTQwLjM0IDAgMCAxLTkxLjM5IDEzMS40NWMtOC44NSAzOC45NS0zMS40NCAxMDYuNjYtNzIuNzcgMzkuNDkgMCAwLTQ4LjEyLTIuMzQtOTEuMTktOC4yMiAwIDAgNzkuOTIgMTMxLjM0IDE5MS45IDUxYTM3LjUgMzcuNSAwIDAgMCAzLjY0IDE0IDM3LjkzIDM3LjkzIDAgMSAwIDMzLjg5LTU0LjI5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3RqYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzYxLjUgMGMwIDEzMS42LTgwLjcgMTc2LjgtMTQwLjIgMjA5LjRjLS42IC4zLTEuMSAuNi0xLjYgLjljLTUzLjggMzAuMi04OC43IDQ5LjgtODkuNiAxMjJIMzJDMzIgMjAwLjggMTEyLjcgMTU1LjYgMTcyLjIgMTIzQzIyNyA5My4yIDI2Mi41IDczIDI2Mi41IDBoOTguOXpNMzAxIDMwMi42YzU0LjgtMjkuOCA5MC4zLTUwIDkwLjMtMTIzaDk4YzAgMTMxLjYtODAuNyAxNzYuNy0xNDAuMiAyMDkuNGMtNTQuOCAyOS44LTkwLjMgNTAtOTAuMyAxMjNoLTk4YzAtMTMxLjYgODAuNy0xNzYuOCAxNDAuMi0yMDkuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91enogKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc1LjkgMzMwLjdIMTcxLjNWNDgwSDE3VjMyaDEwOS41djEwNC41bDMwNS4xIDg1LjZWNDgwSDI3NS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIdG1sNSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMybDM0LjkgMzk1LjhMMTkxLjUgNDgwbDE1Ny42LTUyLjJMMzg0IDMySDB6bTMwOC4yIDEyNy45SDEyNC40bDQuMSA0OS40aDE3NS42bC0xMy42IDE0OC40LTk3LjkgMjd2LjNoLTEuMWwtOTguNy0yNy4zLTYtNzUuOGg0Ny43TDEzOCAzMjBsNTMuNSAxNC41IDUzLjctMTQuNSA2LTYyLjJIODQuM0w3MS41IDExMi4yaDI0MS4xbC00LjQgNDcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSHVic3BvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjcuNCAyMTEuNmMtMjUuMSAyMy43LTQwLjggNTcuMy00MC44IDk0LjYgMCAyOS4zIDkuNyA1Ni4zIDI2IDc4TDIwMy4xIDQzNGMtNC40LTEuNi05LjEtMi41LTE0LTIuNS0xMC44IDAtMjAuOSA0LjItMjguNSAxMS44LTcuNiA3LjYtMTEuOCAxNy44LTExLjggMjguNnM0LjIgMjAuOSAxMS44IDI4LjVjNy42IDcuNiAxNy44IDExLjYgMjguNSAxMS42IDEwLjggMCAyMC45LTMuOSAyOC42LTExLjYgNy42LTcuNiAxMS44LTE3LjggMTEuOC0yOC41IDAtNC4yLS42LTguMi0xLjktMTIuMWw1MC01MC4yYzIyIDE2LjkgNDkuNCAyNi45IDc5LjMgMjYuOSA3MS45IDAgMTMwLTU4LjMgMTMwLTEzMC4yIDAtNjUuMi00Ny43LTExOS4yLTExMC4yLTEyOC43VjExNmMxNy41LTcuNCAyOC4yLTIzLjggMjguMi00Mi45IDAtMjYuMS0yMC45LTQ3LjktNDctNDcuOVMzMTEuMiA0NyAzMTEuMiA3My4xYzAgMTkuMSAxMC43IDM1LjUgMjguMiA0Mi45djYxLjJjLTE1LjIgMi4xLTI5LjYgNi43LTQyLjcgMTMuNi0yNy42LTIwLjktMTE3LjUtODUuNy0xNjguOS0xMjQuOCAxLjItNC40IDItOSAyLTEzLjhDMTI5LjggMjMuNCAxMDYuMyAwIDc3LjQgMCA0OC42IDAgMjUuMiAyMy40IDI1LjIgNTIuMmMwIDI4LjkgMjMuNCA1Mi4zIDUyLjIgNTIuMyA5LjggMCAxOC45LTIuOSAyNi44LTcuNmwxNjMuMiAxMTQuN3ptODkuNSAxNjMuNmMtMzguMSAwLTY5LTMwLjktNjktNjlzMzAuOS02OSA2OS02OSA2OSAzMC45IDY5IDY5LTMwLjkgNjktNjkgNjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUlkZWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyNS42MSwxNjUuNDhhNDkuMDcsNDkuMDcsMCwxLDAsNDkuMDYsNDkuMDZBNDkuMDgsNDkuMDgsMCwwLDAsMTI1LjYxLDE2NS40OFpNODYuMTUsNDI1Ljg0aDc4Ljk0VjI4NS4zMkg4Ni4xNVptMTUxLjQ2LTIxMS42YzAtMjAtMTAtMjIuNTMtMTguNzQtMjIuNTNIMjA0LjgyVjIzNy41aDE0LjA1QzIyOC42MiwyMzcuNSwyMzcuNjEsMjM0LjY5LDIzNy42MSwyMTQuMjRabTIwMS42OSw0NlYxNjguOTNoMjIuNzVWMjM3LjVoMzMuNjlDNDg2LjUsMTEzLjA4LDM4OC42MSw4Ni4xOSwyOTkuNjcsODYuMTlIMjA0Ljg0VjE2OWgxNGMyNS42LDAsNDEuNSwxNy4zNSw0MS41LDQ1LjI2LDAsMjguODEtMTUuNTIsNDYtNDEuNSw0NmgtMTRWNDI1Ljg4aDk0LjgzYzE0NC42MSwwLDE5NC45NC02Ny4xNiwxOTYuNzItMTY1LjY0Wm0tMTA5Ljc1LDBIMjczLjNWMTY5aDU0LjQzdjIyLjczSDI5NnYxMC41OGgzMFYyMjVIMjk2VjIzNy41aDMzLjUxWm03NC42NiwwLTUuMTYtMTcuNjdIMzY5LjMxbC01LjE4LDE3LjY3SDM0MC40N0wzNjgsMTY4LjkyaDMyLjM1bDI3LjUzLDkxLjM0Wk0yOTkuNjUsMzJIMzJWNDgwSDI5OS42NWMxNjEuODUsMCwyNTEtNzkuNzMsMjUxLTIyNC41MkM1NTAuNjIsMTcyLDUxOCwzMiwyOTkuNjUsMzJabTAsNDI2LjkySDUzLjA3VjUzLjA3SDI5OS42NWMxNDIuMSwwLDIyOS45LDY0LjYxLDIyOS45LDIwMi40MUM1MjkuNTUsMzg5LjU3LDQ0OC41NSw0NTguOTIsMjk5LjY1LDQ1OC45MlptODMuODYtMjY0Ljg1TDM3NiwyMTkuODhIMzkyLjRsLTcuNTItMjUuODFaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUltZGIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODkuNSAzMjMuNkg1My45M1YxODYuMkg4OS41VjMyMy42ek0xNTYuMSAyNTAuNUwxNjUuMiAxODYuMkgyMTEuNVYzMjMuNkgxODAuNVYyMzAuOUwxNjcuMSAzMjMuNkgxNDUuOEwxMzIuOCAyMzIuOUwxMzIuNyAzMjMuNkgxMDEuNVYxODYuMkgxNDcuNkMxNDguMSAxOTQuNSAxNTAuNCAyMDQuMyAxNTEuOSAyMTUuNkwxNTYuMSAyNTAuNXpNMjIzLjcgMzIzLjZWMTg2LjJIMjUwLjNDMjY3LjMgMTg2LjIgMjc3LjMgMTg3LjEgMjgzLjMgMTg4LjZDMjg5LjQgMTkwLjMgMjk0IDE5Mi44IDI5Ny4yIDE5Ni41QzMwMC4zIDE5OS44IDMwMi4zIDIwMy4xIDMwMyAyMDguNUMzMDMuOSAyMTIuOSAzMDQuNCAyMjEuNiAzMDQuNCAyMzQuN1YyODIuOUMzMDQuNCAyOTUuMiAzMDMuNyAzMDMuNCAzMDIuNSAzMDcuNkMzMDEuNCAzMTEuNyAyOTkuNCAzMTUgMjk2LjUgMzE3LjNDMjkzLjcgMzE5LjcgMjkwLjEgMzIxLjQgMjg1LjggMzIyLjNDMjgxLjYgMzIzLjEgMjc1LjIgMzIzLjYgMjY2LjcgMzIzLjZIMjIzLjd6TTI1OS4yIDIwOS43VjI5OS4xQzI2NC4zIDI5OS4xIDI2Ny41IDI5OC4xIDI2OC42IDI5Ni44QzI2OS43IDI5NC44IDI3MC40IDI4OS4yIDI3MC40IDI4MC4xVjIyNi44QzI3MC40IDIyMC42IDI3MC4zIDIxNi42IDI2OS43IDIxNC44QzI2OS40IDIxMyAyNjguNSAyMTEuOCAyNjcuMSAyMTAuMUMyNjUuNyAyMTAuMSAyNjMgMjA5LjcgMjU5LjIgMjA5LjdWMjA5Ljd6TTMxNi41IDMyMy42VjE4Ni4ySDM1MC42VjIzMC4xQzM1My41IDIyNy43IDM1Ni43IDIyNS4yIDM2MC4xIDIyMy41QzM2My43IDIyMiAzNjguOSAyMjEuMSAzNzIuOSAyMjEuMUMzNzcuNyAyMjEuMSAzODEuOCAyMjEuOSAzODUuMiAyMjMuM0MzODguNiAyMjQuOCAzOTEuMiAyMjYuOCAzOTMuMiAyMjkuNUMzOTQuOSAyMzIuMSAzOTUuOSAyMzQuOCAzOTYuMyAyMzcuM0MzOTYuNyAyMzkuOSAzOTYuMSAyNDUuMyAzOTYuMSAyNTMuNVYyOTIuMUMzOTYuMSAzMDAuMyAzOTYuMyAzMDYuNCAzOTUuMyAzMTAuNUMzOTQuMiAzMTQuNSAzOTEuNSAzMTguMSAzODcuNSAzMjAuMUMzODMuNCAzMjQgMzc4LjYgMzI1LjQgMzcyLjkgMzI1LjRDMzY4LjkgMzI1LjQgMzYzLjcgMzI0LjUgMzYwLjIgMzIyLjlDMzU2LjcgMzIxLjEgMzUzLjUgMzE4LjQgMzUwLjYgMzE0LjlMMzQ4LjUgMzIzLjZMMzE2LjUgMzIzLjZ6TTM2MS42IDMwMi45QzM2Mi4zIDMwMS4xIDM2Mi42IDI5Ni45IDM2Mi42IDI5MC40VjI1NUMzNjIuNiAyNDkuNCAzNjIuMyAyNDUuNSAzNjEuNSAyNDMuOEMzNjAuOCAyNDEuOSAzNTcuOCAyNDEuMSAzNTUuNyAyNDEuMUMzNTMuNyAyNDEuMSAzNTIuMyAyNDEuOSAzNTEuNiAyNDMuNEMzNTEgMjQ0LjkgMzUwLjYgMjQ4LjggMzUwLjYgMjU1VjI5MS40QzM1MC42IDI5Ny41IDM1MSAzMDEuNCAzNTEuOCAzMDNDMzUyLjQgMzA0LjcgMzUzLjkgMzA1LjUgMzU1LjkgMzA1LjVDMzU4LjEgMzA1LjUgMzYwLjEgMzA0LjcgMzYxLjYgMzAyLjlMMzYxLjYgMzAyLjl6TTQxOC40IDMyLjA0QzQzNC4xIDMzLjI3IDQ0Ny4xIDQ3LjI4IDQ0Ny4xIDYzLjkyVjQ0OC4xQzQ0Ny4xIDQ2NC41IDQzNS4yIDQ3OC41IDQxOC45IDQ3OS4xQzQxOC42IDQ3OS4xIDQxOC40IDQ4MCA0MTguMSA0ODBIMjkuODhDMjkuNiA0ODAgMjkuMzIgNDc5LjEgMjkuMDQgNDc5LjlDMTMuMzEgNDc4LjUgMS4wOTMgNDY2LjEgMCA0NDkuN0wuMDE4NiA2MS43OEMxLjA4MSA0NS44OCAxMy44MiAzMy4wOSAzMC4yNiAzMS4xSDQxNy43QzQxNy45IDMxLjEgNDE4LjIgMzIuMDEgNDE4LjQgMzIuMDRMNDE4LjQgMzIuMDR6TTMwLjI3IDQxLjI2QzE5IDQyLjAxIDEwLjAyIDUxLjAxIDkuMjU3IDYyLjRWNDQ5LjdDOS42MyA0NTUuMSAxMS45MSA0NjAuMiAxNS43IDQ2NEMxOS40OCA0NjcuOSAyNC41MSA0NzAuMyAyOS44OSA0NzAuN0g0MTguMUM0MjkuNiA0NjkuNyA0MzguNyA0NTkuMSA0MzguNyA0NDguMVY2My45MUM0MzguNyA1OC4xNyA0MzYuNiA1Mi42NSA0MzIuNyA0OC40NUM0MjguOCA0NC4yNCA0MjMuNCA0MS42NyA0MTcuNyA0MS4yNkwzMC4yNyA0MS4yNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW5zdGFncmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNC4xIDE0MWMtNjMuNiAwLTExNC45IDUxLjMtMTE0LjkgMTE0LjlzNTEuMyAxMTQuOSAxMTQuOSAxMTQuOVMzMzkgMzE5LjUgMzM5IDI1NS45IDI4Ny43IDE0MSAyMjQuMSAxNDF6bTAgMTg5LjZjLTQxLjEgMC03NC43LTMzLjUtNzQuNy03NC43czMzLjUtNzQuNyA3NC43LTc0LjcgNzQuNyAzMy41IDc0LjcgNzQuNy0zMy42IDc0LjctNzQuNyA3NC43em0xNDYuNC0xOTQuM2MwIDE0LjktMTIgMjYuOC0yNi44IDI2LjgtMTQuOSAwLTI2LjgtMTItMjYuOC0yNi44czEyLTI2LjggMjYuOC0yNi44IDI2LjggMTIgMjYuOCAyNi44em03Ni4xIDI3LjJjLTEuNy0zNS45LTkuOS02Ny43LTM2LjItOTMuOS0yNi4yLTI2LjItNTgtMzQuNC05My45LTM2LjItMzctMi4xLTE0Ny45LTIuMS0xODQuOSAwLTM1LjggMS43LTY3LjYgOS45LTkzLjkgMzYuMXMtMzQuNCA1OC0zNi4yIDkzLjljLTIuMSAzNy0yLjEgMTQ3LjkgMCAxODQuOSAxLjcgMzUuOSA5LjkgNjcuNyAzNi4yIDkzLjlzNTggMzQuNCA5My45IDM2LjJjMzcgMi4xIDE0Ny45IDIuMSAxODQuOSAwIDM1LjktMS43IDY3LjctOS45IDkzLjktMzYuMiAyNi4yLTI2LjIgMzQuNC01OCAzNi4yLTkzLjkgMi4xLTM3IDIuMS0xNDcuOCAwLTE4NC44ek0zOTguOCAzODhjLTcuOCAxOS42LTIyLjkgMzQuNy00Mi42IDQyLjYtMjkuNSAxMS43LTk5LjUgOS0xMzIuMSA5cy0xMDIuNyAyLjYtMTMyLjEtOWMtMTkuNi03LjgtMzQuNy0yMi45LTQyLjYtNDIuNi0xMS43LTI5LjUtOS05OS41LTktMTMyLjFzLTIuNi0xMDIuNyA5LTEzMi4xYzcuOC0xOS42IDIyLjktMzQuNyA0Mi42LTQyLjYgMjkuNS0xMS43IDk5LjUtOSAxMzIuMS05czEwMi43LTIuNiAxMzIuMSA5YzE5LjYgNy44IDM0LjcgMjIuOSA0Mi42IDQyLjYgMTEuNyAyOS41IDkgOTkuNSA5IDEzMi4xczIuNyAxMDIuNy05IDEzMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbnN0YWxvZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTMuMzg0LDQ4MEgzODcuMTEzTDUwMi41NTQsMjc1Ljc2NSwyMDQuMjI5LDMzMy4yMTFaTTUwNC43MjYsMjQwLjA3OCwzODcuMTEzLDMySDE1NS42NjlMMzYwLjIzLDI2Ny45Wk0xMjQuMzg2LDQ4LjgwOSw3LjI3NCwyNTYsMTIzLjIzNiw0NjEuMTU0LDIyNS42MjcsMTY1LjU2MVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW50ZXJjb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkyIDMySDU2QzI1LjEgMzIgMCA1Ny4xIDAgODh2MzM2YzAgMzAuOSAyNS4xIDU2IDU2IDU2aDMzNmMzMC45IDAgNTYtMjUuMSA1Ni01NlY4OGMwLTMwLjktMjUuMS01Ni01Ni01NnptLTEwOC4zIDgyLjFjMC0xOS44IDI5LjktMTkuOCAyOS45IDB2MTk5LjVjMCAxOS44LTI5LjkgMTkuOC0yOS45IDBWMTE0LjF6bS03NC42LTcuNWMwLTE5LjggMjkuOS0xOS44IDI5LjkgMHYyMTYuNWMwIDE5LjgtMjkuOSAxOS44LTI5LjkgMFYxMDYuNnptLTc0LjcgNy41YzAtMTkuOCAyOS45LTE5LjggMjkuOSAwdjE5OS41YzAgMTkuOC0yOS45IDE5LjgtMjkuOSAwVjExNC4xek01OS43IDE0NGMwLTE5LjggMjkuOS0xOS44IDI5LjkgMHYxMzQuM2MwIDE5LjgtMjkuOSAxOS44LTI5LjkgMFYxNDR6bTMyMy40IDIyNy44Yy03Mi44IDYzLTI0MS43IDY1LjQtMzE4LjEgMC0xNS0xMi44IDQuNC0zNS41IDE5LjQtMjIuNyA2NS45IDU1LjMgMjE2LjEgNTMuOSAyNzkuMyAwIDE0LjktMTIuOSAzNC4zIDkuOCAxOS40IDIyLjd6bTUuMi05My41YzAgMTkuOC0yOS45IDE5LjgtMjkuOSAwVjE0NGMwLTE5LjggMjkuOS0xOS44IDI5LjkgMHYxMzQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW50ZXJuZXRFeHBsb3JlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODMuMDQ5IDE1OS43MDZjMTAuODU1LTI0LjU3NSAyMS40MjQtNjAuNDM4IDIxLjQyNC04Ny44NzEgMC03Mi43MjItNzkuNjQxLTk4LjM3MS0yMDkuNjczLTM4LjU3Ny0xMDcuNjMyLTcuMTgxLTIxMS4yMjEgNzMuNjctMjM3LjA5OCAxODYuNDU3IDMwLjg1Mi0zNC44NjIgNzguMjcxLTgyLjI5OCAxMjEuOTc3LTEwMS4xNThDMTI1LjQwNCAxNjYuODUgNzkuMTI4IDIyOC4wMDIgNDMuOTkyIDI5MS43MjUgMjMuMjQ2IDMyOS42NTEgMCAzOTAuOTQgMCA0MzYuNzQ3YzAgOTguNTc1IDkyLjg1NCA4Ni41IDE4MC4yNTEgNDIuMDA2IDMxLjQyMyAxNS40MyA2Ni41NTkgMTUuNTczIDEwMS42OTUgMTUuNTczIDk3LjEyNCAwIDE4NC4yNDktNTQuMjk0IDIxNi44MTQtMTQ2LjAyMkgzNzcuOTI3Yy01Mi41MDkgODguNTkzLTE5Ni44MTkgNTIuOTk2LTE5Ni44MTktNDcuNDM2SDUwOS45YzYuNDA3LTQzLjU4MS0xLjY1NS05NS43MTUtMjYuODUxLTE0MS4xNjJ6TTY0LjU1OSAzNDYuODc3YzE3LjcxMSA1MS4xNSA1My43MDMgOTUuODcxIDEwMC4yNjYgMTIzLjMwNC04OC43NDEgNDguOTQtMTczLjI2NyAyOS4wOTYtMTAwLjI2Ni0xMjMuMzA0em0xMTUuOTc3LTEwOC44NzNjMi01NS4xNTEgNTAuMjc2LTk0Ljg3MSAxMDMuOTgtOTQuODcxIDUzLjQxOCAwIDEwMS45ODEgMzkuNzIgMTAzLjk4MSA5NC44NzFIMTgwLjUzNnptMTg0LjUzNi0xODcuNmMyMS40MjUtMTAuMjg3IDQ4LjU2My0yMi4wMDMgNzIuNTU4LTIyLjAwMyAzMS40MjIgMCA1NC4yNzQgMjEuNzE3IDU0LjI3NCA1My43MjIgMCAyMC4wMDMtNy40MjcgNDkuMDA3LTE0LjU2OSA2Ny44NjctMjYuMjgtNDIuMjkyLTY1Ljk4Ni04MS41ODQtMTEyLjI2My05OS41ODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUludmlzaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNy40IDMySDQwLjZDMTguMiAzMiAwIDUwLjIgMCA3Mi42djM2Ni44QzAgNDYxLjggMTguMiA0ODAgNDAuNiA0ODBoMzY2LjhjMjIuNCAwIDQwLjYtMTguMiA0MC42LTQwLjZWNzIuNmMwLTIyLjQtMTguMi00MC42LTQwLjYtNDAuNnpNMTc2LjEgMTQ1LjZjLjQgMjMuNC0yMi40IDI3LjMtMjYuNiAyNy40LTE0LjkgMC0yNy4xLTEyLTI3LjEtMjcgLjEtMzUuMiA1My4xLTM1LjUgNTMuNy0uNHpNMzMyLjggMzc3Yy02NS42IDAtMzQuMS03NC0yNS0xMDYuNiAxNC4xLTQ2LjQtNDUuMi01OS01OS45LjdsLTI1LjggMTAzLjNIMTc3bDguMS0zMi41Yy0zMS41IDUxLjgtOTQuNiA0NC40LTk0LjYtNC4zLjEtMTQuMy45LTE0IDIzLTEwNC4xSDgxLjdsOS43LTM1LjZoNzYuNGMtMzMuNiAxMzMuNy0zMi42IDEyNi45LTMyLjkgMTM4LjIgMCAyMC45IDQwLjkgMTMuNSA1Ny40LTIzLjJsMTkuOC03OS40aC0zMi4zbDkuNy0zNS42aDY4LjhsLTguOSA0MC41YzQwLjUtNzUuNSAxMjcuOS00Ny44IDEwMS44IDM4LTE0LjIgNTEuMS0xNC42IDUwLjctMTQuOSA1OC44IDAgMTUuNSAxNy41IDIyLjYgMzEuOC0xNi45TDM4NiAzMjVjLTEwLjUgMzYuNy0yOS40IDUyLTUzLjIgNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUlveGhvc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjE2IDE2MGgtNjcuM0M1MTEuMiA3MC43IDQyMi45IDggMzIwIDggMTgzIDggNzIgMTE5IDcyIDI1NmMwIDE2LjQgMS42IDMyLjUgNC43IDQ4SDI0Yy0xMy4zIDAtMjQgMTAuOC0yNCAyNCAwIDEzLjMgMTAuNyAyNCAyNCAyNGg2Ny4zYzM3LjUgODkuMyAxMjUuOCAxNTIgMjI4LjcgMTUyIDEzNyAwIDI0OC0xMTEgMjQ4LTI0OCAwLTE2LjQtMS42LTMyLjUtNC43LTQ4SDYxNmMxMy4zIDAgMjQtMTAuOCAyNC0yNCAwLTEzLjMtMTAuNy0yNC0yNC0yNHptLTk2IDk2YzAgMTEwLjUtODkuNSAyMDAtMjAwIDIwMC03NS43IDAtMTQxLjYtNDItMTc1LjUtMTA0SDQyNGMxMy4zIDAgMjQtMTAuOCAyNC0yNCAwLTEzLjMtMTAuNy0yNC0yNC0yNEgxMjUuOGMtMy44LTE1LjQtNS44LTMxLjQtNS44LTQ4IDAtMTEwLjUgODkuNS0yMDAgMjAwLTIwMCA3NS43IDAgMTQxLjYgNDIgMTc1LjUgMTA0SDIxNmMtMTMuMyAwLTI0IDEwLjgtMjQgMjQgMCAxMy4zIDEwLjcgMjQgMjQgMjRoMjk4LjJjMy44IDE1LjQgNS44IDMxLjQgNS44IDQ4em0tMzA0LTI0aDIwOGMxMy4zIDAgMjQgMTAuNyAyNCAyNCAwIDEzLjItMTAuNyAyNC0yNCAyNEgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0IDAtMTMuMiAxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJdGNoSW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzEuOTIgMzQuNzdDNTAuMiA0Ny42NyA3LjQgOTYuODQgNyAxMDkuNzN2MjEuMzRjMCAyNy4wNiAyNS4yOSA1MC44NCA0OC4yNSA1MC44NCAyNy41NyAwIDUwLjU0LTIyLjg1IDUwLjU0LTUwIDAgMjcuMTIgMjIuMTggNTAgNDkuNzYgNTBzNDktMjIuODUgNDktNTBjMCAyNy4xMiAyMy41OSA1MCA1MS4xNiA1MGguNWMyNy41NyAwIDUxLjE2LTIyLjg1IDUxLjE2LTUwIDAgMjcuMTIgMjEuNDcgNTAgNDkgNTBzNDkuNzYtMjIuODUgNDkuNzYtNTBjMCAyNy4xMiAyMyA1MCA1MC41NCA1MCAyMyAwIDQ4LjI1LTIzLjc4IDQ4LjI1LTUwLjg0di0yMS4zNGMtLjQtMTIuOS00My4yLTYyLjA3LTY0LjkyLTc1QzM3Mi41NiAzMi40IDMyNS43NiAzMiAyNTYgMzJTOTEuMTQgMzMuMSA3MS45MiAzNC43N3ptMTMyLjMyIDEzNC4zOWMtMjIgMzguNC03Ny45IDM4LjcxLTk5Ljg1LjI1LTEzLjE3IDIzLjE0LTQzLjE3IDMyLjA3LTU2IDI3LjY2LTMuODcgNDAuMTUtMTMuNjcgMjM3LjEzIDE3LjczIDI2OS4xNSA4MCAxOC42NyAzMDIuMDggMTguMTIgMzc5Ljc2IDAgMzEuNjUtMzIuMjcgMjEuMzItMjMyIDE3Ljc1LTI2OS4xNS0xMi45MiA0LjQ0LTQyLjg4LTQuNi01Ni0yNy42Ni0yMiAzOC41Mi03Ny44NSAzOC4xLTk5Ljg1LS4yNC03LjEgMTIuNDktMjMuMDUgMjguOTQtNTEuNzYgMjguOTRhNTcuNTQgNTcuNTQgMCAwIDEtNTEuNzUtMjguOTR6bS00MS41OCA1My43N2MxNi40NyAwIDMxLjA5IDAgNDkuMjIgMTkuNzhhNDM2LjkxIDQzNi45MSAwIDAgMSA4OC4xOCAwQzMxOC4yMiAyMjMgMzMyLjg1IDIyMyAzNDkuMzEgMjIzYzUyLjMzIDAgNjUuMjIgNzcuNTMgODMuODcgMTQ0LjQ1IDE3LjI2IDYyLjE1LTUuNTIgNjMuNjctMzMuOTUgNjMuNzMtNDIuMTUtMS41Ny02NS40OS0zMi4xOC02NS40OS02Mi43OS0zOS4yNSA2LjQzLTEwMS45MyA4Ljc5LTE1NS41NSAwIDAgMzAuNjEtMjMuMzQgNjEuMjItNjUuNDkgNjIuNzktMjguNDItLjA2LTUxLjItMS41OC0zMy45NC02My43MyAxOC42Ny02NyAzMS41Ni0xNDQuNDUgODMuODgtMTQ0LjQ1ek0yNTYgMjcwLjc5cy00NC4zOCA0MC43Ny01Mi4zNSA1NS4yMWwyOS0xLjE3djI1LjMyYzAgMS41NSAyMS4zNC4xNiAyMy4zMy4xNiAxMS42NS41NCAyMy4zMSAxIDIzLjMxLS4xNnYtMjUuMjhsMjkgMS4xN2MtOC0xNC40OC01Mi4zNS01NS4yNC01Mi4zNS01NS4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSXR1bmVzTm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODEuOSAzODguMmMtNi40IDI3LjQtMjcuMiA0Mi44LTU1LjEgNDgtMjQuNSA0LjUtNDQuOSA1LjYtNjQuNS0xMC4yLTIzLjktMjAuMS0yNC4yLTUzLjQtMi43LTc0LjQgMTctMTYuMiA0MC45LTE5LjUgNzYuOC0yNS44IDYtMS4xIDExLjItMi41IDE1LjYtNy40IDYuNC03LjIgNC40LTQuMSA0LjQtMTYzLjIgMC0xMS4yLTUuNS0xNC4zLTE3LTEyLjMtOC4yIDEuNC0xODUuNyAzNC42LTE4NS43IDM0LjYtMTAuMiAyLjItMTMuNCA1LjItMTMuNCAxNi43IDAgMjM0LjcgMS4xIDIyMy45LTIuNSAyMzkuNS00LjIgMTguMi0xNS40IDMxLjktMzAuMiAzOS41LTE2LjggOS4zLTQ3LjIgMTMuNC02My40IDEwLjQtNDMuMi04LjEtNTguNC01OC0yOS4xLTg2LjYgMTctMTYuMiA0MC45LTE5LjUgNzYuOC0yNS44IDYtMS4xIDExLjItMi41IDE1LjYtNy40IDEwLjEtMTEuNSAxLjgtMjU2LjYgNS4yLTI3MC4yLjgtNS4yIDMtOS42IDcuMS0xMi45IDQuMi0zLjUgMTEuOC01LjUgMTMuNC01LjUgMjA0LTM4LjIgMjI4LjktNDMuMSAyMzIuNC00My4xIDExLjUtLjggMTguMSA2IDE4LjEgMTcuNi4yIDM0NC41IDEuMSAzMjYtMS44IDMzOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJdHVuZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIzLjYgODAuM0MxMjkgODAuMyA1Mi41IDE1NyA1Mi41IDI1MS41UzEyOSA0MjIuOCAyMjMuNiA0MjIuOHMxNzEuMi03Ni43IDE3MS4yLTE3MS4yYzAtOTQuNi03Ni43LTE3MS4zLTE3MS4yLTE3MS4zem03OS40IDI0MGMtMy4yIDEzLjYtMTMuNSAyMS4yLTI3LjMgMjMuOC0xMi4xIDIuMi0yMi4yIDIuOC0zMS45LTUtMTEuOC0xMC0xMi0yNi40LTEuNC0zNi44IDguNC04IDIwLjMtOS42IDM4LTEyLjggMy0uNSA1LjYtMS4yIDcuNy0zLjcgMy4yLTMuNiAyLjItMiAyLjItODAuOCAwLTUuNi0yLjctNy4xLTguNC02LjEtNCAuNy05MS45IDE3LjEtOTEuOSAxNy4xLTUgMS4xLTYuNyAyLjYtNi43IDguMyAwIDExNi4xLjUgMTEwLjgtMS4yIDExOC41LTIuMSA5LTcuNiAxNS44LTE0LjkgMTkuNi04LjMgNC42LTIzLjQgNi42LTMxLjQgNS4yLTIxLjQtNC0yOC45LTI4LjctMTQuNC00Mi45IDguNC04IDIwLjMtOS42IDM4LTEyLjggMy0uNSA1LjYtMS4yIDcuNy0zLjcgNS01LjcuOS0xMjcgMi42LTEzMy43LjQtMi42IDEuNS00LjggMy41LTYuNCAyLjEtMS43IDUuOC0yLjcgNi43LTIuNyAxMDEtMTkgMTEzLjMtMjEuNCAxMTUuMS0yMS40IDUuNy0uNCA5IDMgOSA4LjctLjEgMTcwLjYuNCAxNjEuNC0xIDE2Ny42ek0zNDUuMiAzMkgxMDIuOEM0NS45IDMyIDAgNzcuOSAwIDEzNC44djI0Mi40QzAgNDM0LjEgNDUuOSA0ODAgMTAyLjggNDgwaDI0Mi40YzU3IDAgMTAyLjgtNDUuOSAxMDIuOC0xMDIuOFYxMzQuOEM0NDggNzcuOSA0MDIuMSAzMiAzNDUuMiAzMnpNMjIzLjYgNDQ0Yy0xMDYuMyAwLTE5Mi41LTg2LjItMTkyLjUtMTkyLjVTMTE3LjMgNTkgMjIzLjYgNTlzMTkyLjUgODYuMiAxOTIuNSAxOTIuNVMzMjkuOSA0NDQgMjIzLjYgNDQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKYXZhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3Ny43NCAzMTIuOWM5LjgtNi43IDIzLjQtMTIuNSAyMy40LTEyLjVzLTM4LjcgNy03Ny4yIDEwLjJjLTQ3LjEgMy45LTk3LjcgNC43LTEyMy4xIDEuMy02MC4xLTggMzMtMzAuMSAzMy0zMC4xcy0zNi4xLTIuNC04MC42IDE5Yy01Mi41IDI1LjQgMTMwIDM3IDIyNC41IDEyLjF6bS04NS40LTMyLjFjLTE5LTQyLjctODMuMS04MC4yIDAtMTQ1LjhDMjk2IDUzLjIgMjQyLjg0IDAgMjQyLjg0IDBjMjEuNSA4NC41LTc1LjYgMTEwLjEtMTEwLjcgMTYyLjYtMjMuOSAzNS45IDExLjcgNzQuNCA2MC4yIDExOC4yem0xMTQuNi0xNzYuMmMuMSAwLTE3NS4yIDQzLjgtOTEuNSAxNDAuMiAyNC43IDI4LjQtNi41IDU0LTYuNSA1NHM2Mi43LTMyLjQgMzMuOS03Mi45Yy0yNi45LTM3LjgtNDcuNS01Ni42IDY0LjEtMTIxLjN6bS02LjEgMjcwLjVhMTIuMTkgMTIuMTkgMCAwIDEtMiAyLjZjMTI4LjMtMzMuNyA4MS4xLTExOC45IDE5LjgtOTcuM2ExNy4zMyAxNy4zMyAwIDAgMC04LjIgNi4zIDcwLjQ1IDcwLjQ1IDAgMCAxIDExLTNjMzEtNi41IDc1LjUgNDEuNS0yMC42IDkxLjR6TTM0OCA0MzcuNHMxNC41IDExLjktMTUuOSAyMS4yYy01Ny45IDE3LjUtMjQwLjggMjIuOC0yOTEuNi43LTE4LjMtNy45IDE2LTE5IDI2LjgtMjEuMyAxMS4yLTIuNCAxNy43LTIgMTcuNy0yLTIwLjMtMTQuMy0xMzEuMyAyOC4xLTU2LjQgNDAuMkMyMzIuODQgNTA5LjQgNDAxIDQ2MS4zIDM0OCA0MzcuNHpNMTI0LjQ0IDM5NmMtNzguNyAyMiA0Ny45IDY3LjQgMTQ4LjEgMjQuNWExODUuODkgMTg1Ljg5IDAgMCAxLTI4LjItMTMuOGMtNDQuNyA4LjUtNjUuNCA5LjEtMTA2IDQuNS0zMy41LTMuOC0xMy45LTE1LjItMTMuOS0xNS4yem0xNzkuOCA5Ny4yYy03OC43IDE0LjgtMTc1LjggMTMuMS0yMzMuMyAzLjYgMC0uMSAxMS44IDkuNyA3Mi40IDEzLjYgOTIuMiA1LjkgMjMzLjgtMy4zIDIzNy4xLTQ2LjkgMCAwLTYuNCAxNi41LTc2LjIgMjkuN3pNMjYwLjY0IDM1M2MtNTkuMiAxMS40LTkzLjUgMTEuMS0xMzYuOCA2LjYtMzMuNS0zLjUtMTEuNi0xOS43LTExLjYtMTkuNy04Ni44IDI4LjggNDguMiA2MS40IDE2OS41IDI1LjlhNjAuMzcgNjAuMzcgMCAwIDEtMjEuMS0xMi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKZWRpT3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk4LjUgMzczLjZjOTUuOS0xMjIuMSAxNy4yLTIzMy4xIDE3LjItMjMzLjEgNDUuNCA4NS44LTQxLjQgMTcwLjUtNDEuNCAxNzAuNSAxMDUtMTcxLjUtNjAuNS0yNzEuNS02MC41LTI3MS41IDk2LjkgNzIuNy0xMC4xIDE5MC43LTEwLjEgMTkwLjcgODUuOCAxNTguNC02OC42IDIzMC4xLTY4LjYgMjMwLjFzLS40LTE2LjktMi4yLTg1LjdjNC4zIDQuNSAzNC41IDM2LjIgMzQuNSAzNi4ybC0yNC4yLTQ3LjQgNjIuNi05LjEtNjIuNi05LjEgMjAuMi01NS41LTMxLjQgNDUuOWMtMi4yLTg3LjctNy44LTMwNS4xLTcuOS0zMDYuOXYtMi40IDEtMSAyLjRjMCAxLTUuNiAyMTktNy45IDMwNi45bC0zMS40LTQ1LjkgMjAuMiA1NS41LTYyLjYgOS4xIDYyLjYgOS4xLTI0LjIgNDcuNCAzNC41LTM2LjJjLTEuOCA2OC44LTIuMiA4NS43LTIuMiA4NS43cy0xNTQuNC03MS43LTY4LjYtMjMwLjFjMCAwLTEwNy0xMTguMS0xMC4xLTE5MC43IDAgMC0xNjUuNSA5OS45LTYwLjUgMjcxLjUgMCAwLTg2LjgtODQuOC00MS40LTE3MC41IDAgMC03OC43IDExMSAxNy4yIDIzMy4xIDAgMC0yNi4yLTE2LjEtNDkuNC03Ny43IDAgMCAxNi45IDE4My4zIDIyMiAxODUuN2g0LjFjMjA1LTIuNCAyMjItMTg1LjcgMjIyLTE4NS43LTIzLjYgNjEuNS00OS45IDc3LjctNDkuOSA3Ny43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKZW5raW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4Ny4xIDQyNWMtMS40LTExLjItMTktMjMuMS0yOC4yLTMxLjktNS4xLTUtMjktMjMuMS0zMC40LTI5LjktMS40LTYuNiA5LjctMjEuNSAxMy4zLTI4LjkgNS4xLTEwLjcgOC44LTIzLjcgMTEuMy0zMi42IDE4LjgtNjYuMSAyMC43LTE1Ni45LTYuMi0yMTEuMi0xMC4yLTIwLjYtMzguNi00OS01Ni40LTYyLjUtNDItMzEuNy0xMTkuNi0zNS4zLTE3MC4xLTE2LjYtMTQuMSA1LjItMjcuOCA5LjgtNDAuMSAxNy4xLTMzLjEgMTkuNC02OC4zIDMyLjUtNzguMSA3MS42LTI0LjIgMTAuOC0zMS41IDQxLjgtMzAuMyA3Ny44LjIgNyA0LjEgMTUuOCAyLjcgMjIuNC0uNyAzLjMtNS4yIDcuNi02LjEgOS44LTExLjYgMjcuNy0yLjMgNjQgMTEuMSA4My43IDguMSAxMS45IDIxLjUgMjIuNCAzOS4yIDI1LjIuNyAxMC42IDMuMyAxOS43IDguMiAzMC40IDMuMSA2LjggMTQuNyAxOSAxMC40IDI3LjctMi4yIDQuNC0yMSAxMy44LTI3LjMgMTcuNkM4OSA0MDcuMiA3My43IDQxNSA1NC4yIDQyOWMtMTIuNiA5LTMyLjMgMTAuMi0yOS4yIDMxLjEgMi4xIDE0LjEgMTAuMSAzMS42IDE0LjcgNDUuOC43IDIgMS40IDQuMSAyLjEgNmg0MjJjNC45LTE1LjMgOS43LTMwLjkgMTQuNi00Ny4yIDMuNC0xMS40IDEwLjItMjcuOCA4LjctMzkuN3pNMjA1LjkgMzMuN2MxLjgtLjUgMy40LjcgNC45IDIuNC0uMiA1LjItNS40IDUuMS04LjkgNi44LTUuNCA2LjctMTMuNCA5LjgtMjAgMTcuMi02LjggNy41LTE0LjQgMjcuNy0yMy40IDMwLTQuNSAxLjEtOS43LS44LTEzLjYtLjUtMTAuNC43LTE3LjcgNi0yOC4zIDcuNSAxMy42LTI5LjkgNTYuMS01NCA4OS4zLTYzLjR6bS0xMDQuOCA5My42YzEzLjUtMTQuOSAzMi4xLTI0LjEgNTQuOC0yNS45IDExLjcgMjkuNy04LjQgNjUtLjkgOTcuNiAyLjMgOS45IDEwLjIgMjUuNC0yLjQgMjUuNy4zLTI4LjMtMzQuOC00Ni4zLTYxLjMtMjkuNi0xLjgtMjEuNS00LjktNTEuNyA5LjgtNjcuOHptMzYuNyAyMDAuMmMtMS00LjEtMi43LTEyLjktMi4zLTE1LjEgMS42LTguNyAxNy4xLTEyLjUgMTEtMjQuNy0xMS4zLS4xLTEzLjggMTAuMi0yNC4xIDExLjMtMjYuNyAyLjYtNDUuNi0zNS40LTQ0LjQtNTguNCAxLTE5LjUgMTcuNi0zOC4yIDQwLjEtMzUuOCAxNiAxLjggMjEuNCAxOS4yIDI0LjUgMzQuNyA5LjIuNSAyMi41LS40IDI2LjktNy42LS42LTE3LjUtOC44LTMxLjYtOC4yLTQ3LjcgMS0zMC4zIDE3LjUtNTcuNiA0LjgtODcuNCAxMy42LTMwLjkgNTMuNS01NS4zIDgzLjEtNzAgMzYuNi0xOC4zIDk0LjktMy43IDEyOS4zIDE1LjggMTkuNyAxMS4xIDM0LjQgMzIuNyA0OC4zIDUwLjctMTkuNS01LjgtMzYuMSA0LjItMzMuMSAyMC4zIDE2LjMtMTQuOSA0NC4yLS4yIDUyLjUgMTYuNCA3LjkgMTUuOCA3LjggMzkuMyA5IDYyLjggMi45IDU3LTEwLjQgMTE1LjktMzkuMSAxNTcuMS03LjcgMTEtMTQuMSAyMy0yNC45IDMwLjYtMjYgMTguMi02NS40IDM0LjctOTkuMiAyMy40LTQ0LjctMTUtNjUtNDQuOC04OS41LTc4LjguNyAxOC43IDEzLjggMzQuMSAyNi44IDQ4LjQgMTEuMyAxMi41IDI1IDI2LjYgMzkuNyAzMi40LTEyLjMtMi45LTMxLjEtMy44LTM2LjIgNy4yLTI4LjYtMS45LTU1LjEtNC44LTY4LjctMjQuMi0xMC42LTE1LjQtMjEuNC00MS40LTI2LjMtNjEuNHptMjIyIDEyNC4xYzQuMS0zIDExLjEtMi45IDE3LjQtMy42LTUuNC0yLjctMTMtMy43LTE5LjMtMi4yLS4xLTQuMi0yLTYuOC0zLjItMTAuMiAxMC42LTMuOCAzNS41LTI4LjUgNDkuNi0yMC4zIDYuNyAzLjkgOS41IDI2LjIgMTAuMSAzNyAuNCA5LS44IDE4LTQuNSAyMi44LTE4LjgtLjYtMzUuOC0yLjgtNTAuNy03IC45LTYuMS0xLTEyLjEuNi0xNi41em0tMTcuMi0yMGMtMTYuOC44LTI2LTEuMi0zOC4zLTEwLjguMi0uOCAxLjQtLjUgMS41LTEuNCAxOCA4IDQwLjgtMy4zIDU5LTQuOS03LjkgNS4xLTE0LjYgMTEuNi0yMi4yIDE3LjF6bS0xMi4xIDMzLjJjLTEuNi05LjQtMy41LTEyLTIuOC0yMC4yIDI1LTE2LjYgMjkuNyAyOC42IDIuOCAyMC4yek0yMjYgNDM4LjZjLTExLjYtLjctNDguMS0xNC0zOC41LTIzLjcgOS40IDYuNSAyNy41IDQuOSA0MS4zIDcuMy44IDQuNC0yLjggMTAuMi0yLjggMTYuNHpNNTcuNyA0OTcuMWMtNC4zLTEyLjctOS4yLTI1LjEtMTQuOC0zNi45IDMwLjgtMjMuOCA2NS4zLTQ4LjkgMTAyLjItNjMuNSAyLjgtMS4xIDIzLjIgMjUuNCAyNi4yIDI3LjYgMTYuNSAxMS43IDM3IDIxIDU2LjIgMzAuMiAxLjIgOC44IDMuOSAyMC4yIDguNyAzNS41LjcgMi4zIDEuNCA0LjcgMi4yIDcuMkg1Ny43em0yNDAuNiA1LjdoLS44Yy4zLS4yLjUtLjQuOC0uNXYuNXptNy41LTUuN2MyLjEtMS40IDQuMy0yLjggNi40LTQuMyAxLjEgMS40IDIuMiAyLjggMy4yIDQuM2gtOS42em0xNS4xLTI0LjdjLTEwLjggNy4zLTIwLjYgMTguMy0zMy4zIDI1LjItNiAzLjMtMjcgMTEuNy0zMy40IDEwLjItMy42LS44LTMuOS01LjMtNS40LTkuNS0zLjEtOS0xMC4xLTIzLjQtMTAuOC0zNy0uOC0xNy4yLTIuNS00NiAxNi00Mi40IDE0LjkgMi45IDMyLjMgOS43IDQzLjkgMTYuMSA3LjEgMy45IDExLjEgOC42IDIxLjkgOS41LS4xIDEuNC0uMSAyLjgtLjIgNC4zLTUuOSAzLjktMTUuMyAzLjgtMjEuOCA3LjEgOS41LjQgMTcgMi43IDIzLjUgNS45LS4xIDMuNC0uMyA3LS40IDEwLjZ6bTUzLjQgMjQuN2gtMTRjLS4xLTMuMi0yLjgtNS44LTYuMS01LjhzLTUuOSAyLjYtNi4xIDUuOGgtMTcuNGMtMi44LTQuNC01LjctOC42LTguOS0xMi41IDIuMS0yLjIgNC00LjcgNi02LjkgOSAzLjcgMTQuOC00LjkgMjEuNy00LjIgNy45LjggMTQuMiAxMS43IDI1LjQgMTFsLS42IDEyLjZ6bTguNyAwYy4yLTQgLjQtNy44LjYtMTEuNSAxNS42LTcuMyAyOSAxLjMgMzUuNyAxMS41SDM4M3ptODMuNC0zN2MtMi4zIDExLjItNS44IDI0LTkuOSAzNy4xLS4yLS4xLS40LS4xLS42LS4xSDQyOGMuNi0xLjEgMS4yLTIuMiAxLjktMy4zLTIuNi02LjEtOS04LjctMTAuOS0xNS41IDEyLjEtMjIuNyA2LjUtOTMuNC0yNC4yLTc4LjUgNC4zLTYuMyAxNS42LTExLjUgMjAuOC0xOS4zIDEzIDEwLjQgMjAuOCAyMC4zIDMzLjIgMzEuNCA2LjggNiAyMCAxMy4zIDIxLjQgMjMuMS44IDUuNS0yLjYgMTguOS0zLjggMjUuMXpNMjIyLjIgMTMwLjVjNS40LTE0LjkgMjcuMi0zNC43IDQ1LTMyIDcuNyAxLjIgMTggOC4yIDEyLjIgMTcuNy0zMC4yLTctNDUuMiAxMi42LTU0LjQgMzMuMS04LjEtMi00LjktMTMuMS0yLjgtMTguOHptMTg0LjEgNjMuMWM4LjItMy42IDIyLjQtLjcgMjkuNi01LjMtNC4yLTExLjUtMTAuMy0yMS40LTkuMy0zNy43LjUgMCAxIDAgMS40LjEgNi44IDE0LjIgMTIuNyAyOS4yIDIxLjQgNDEuNy01LjcgMTMuNS00My42IDI1LjQtNDMuMSAxLjJ6bTIwLjQtNDN6bS0xMTcuMiA0NS43Yy02LjgtMTAuOS0xOS0zMi41LTE0LjUtNDUuMyA2LjUgMTEuOSA4LjYgMjQuNCAxNy44IDMzLjMgNC4xIDQgMTIuMiA5IDguMiAyMC4yLS45IDIuNy03LjggOC42LTExLjcgOS43LTE0LjQgNC4zLTQ3LjkuOS0zNi42LTE3LjEgMTEuOS43IDI3LjkgNy44IDM2LjgtLjh6bTI3LjMgNzBjMy44IDYuNiAxLjQgMTguNyAxMi4xIDIwLjYgMjAuMiAzLjQgNDMuNi0xMi4zIDU4LjEtMTcuOCA5LTE1LjItLjgtMjAuNy04LjktMzAuNS0xNi42LTIwLTM4LjgtNDQuOC0zOC03NC43IDYuNy00LjkgNy4zIDcuNCA4LjIgOS43IDguNyAyMC4zIDMwLjQgNDYuMiA0Ni4zIDYzLjUgMy45IDQuMyAxMC4zIDguNCAxMSAxMS4yIDIuMSA4LjItNS40IDE4LTQuNSAyMy41LTIxLjcgMTMuOS00NS44IDI5LjEtODEuNCAyNS42LTcuNC02LjctMTAuMy0yMS40LTIuOS0zMS4xem0tMjAxLjMtOS4yYy02LjgtMy45LTguNC0yMS0xNi40LTIxLjQtMTEuNC0uNy05LjMgMjIuMi05LjMgMzUuNS03LjgtNy4xLTkuMi0yOS4xLTMuNS00MC4zLTYuNi0zLjItOS41IDMuNi0xMy4xIDUuOSA0LjctMzQuMSA0OS44LTE1LjggNDIuMyAyMC4zem0yOTkuNiAyOC44Yy0xMC4xIDE5LjItMjQuNCA0MC40LTU0IDQxLS42LTYuMi0xLjEtMTUuNiAwLTE5LjQgMjIuNy0yLjIgMzYuNi0xMy43IDU0LTIxLjZ6bS0xNDEuOSAxMi40YzE4LjkgOS45IDUzLjYgMTEgNzkuMyAxMC4yIDEuNCA1LjYgMS4zIDEyLjYgMS40IDE5LjQtMzMgMS44LTcyLTYuNC04MC43LTI5LjZ6bTkyLjIgNDYuN2MtMS43IDQuMy01LjMgOS4zLTkuOCAxMS4xLTEyLjEgNC45LTQ1LjYgOC43LTYyLjQtLjMtMTAuNy01LjctMTcuNS0xOC41LTIzLjQtMjYtMi44LTMuNi0xNi45LTEyLjktLjItMTIuOSAxMy4xIDMyLjcgNTggMjkgOTUuOCAyOC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKaXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5MCAyNDEuN0M0MTcuMSAxNjkgMzIwLjYgNzEuOCAyNDguNSAwIDgzIDE2NC45IDYgMjQxLjcgNiAyNDEuN2MtNy45IDcuOS03LjkgMjAuNyAwIDI4LjdDMTM4LjggNDAyLjcgNjcuOCAzMzEuOSAyNDguNSA1MTJjMzc5LjQtMzc4IDE1LjctMTYuNyAyNDEuNS0yNDEuNyA4LTcuOSA4LTIwLjcgMC0yOC42em0tMjQxLjUgOTBsLTc2LTc1LjcgNzYtNzUuNyA3NiA3NS43LTc2IDc1Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpvZ2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3OC4xIDQ1QzMzNy42IDE5LjkgMjkyLjYgOCAyNDguMiA4IDE2NSA4IDgzLjggNDkuOSAzNi45IDEyNS45Yy03MS45IDExNi42LTM1LjYgMjY5LjMgODEgMzQxLjJzMjY5LjMgMzUuNiAzNDEuMi04MC45YzcxLjktMTE2LjYgMzUuNi0yNjkuNC04MS0zNDEuMnptNTEuOCAzMjMuMmMtNDAuNCA2NS41LTExMC40IDEwMS41LTE4MiAxMDEuNS02LjggMC0xMy42LS40LTIwLjQtMS05LTEzLjYtMTkuOS0zMy4zLTIzLjctNDIuNC01LjctMTMuNy0yNy4yLTQ1LjYgMzEuMi02Ny4xIDUxLjctMTkuMSAxNzYuNy0xNi41IDIwOC44LTE3LjYtNCA5LTguNiAxNy45LTEzLjkgMjYuNnptLTIwMC44LTg2LjNjLTU1LjUtMS40LTgxLjctMjAuOC01OC41LTQ4LjJzNTEuMS00MC43IDY4LjktNTEuMmMxNy45LTEwLjUgMjcuMy0zMy43LTIzLjYtMjkuN0M4Ny4zIDE2MS41IDQ4LjYgMjUyLjEgMzcuNiAyOTNjLTguOC00OS43LS4xLTEwMi43IDI4LjUtMTQ5LjFDMTI4IDQzLjQgMjU5LjYgMTIuMiAzNjAuMSA3NC4xYzc0LjggNDYuMSAxMTEuMiAxMzAuOSA5OS4zIDIxMi43LTI0LjktLjUtMTc5LjMtMy42LTIzMC4zLTQuOXptMTgzLjgtNTQuOGMtMjIuNy02LTU3IDExLjMtODYuNyAyNy4yLTI5LjcgMTUuOC0zMS4xIDguMi0zMS4xIDguMnM0MC4yLTI4LjEgNTAuNy0zNC41IDMxLjktMTQgMTMuNC0yNC42Yy0zLjItMS44LTYuNy0yLjctMTAuNC0yLjctMTcuOCAwLTQxLjUgMTguNy02Ny41IDM1LjYtMzEuNSAyMC41LTY1LjMgMzEuMy02NS4zIDMxLjNsMTY5LjUtMS42IDQ2LjUtMjMuNHMzLjYtOS41LTE5LjEtMTUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSm9vbWxhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS42IDkyLjFDLjYgNTguOCAyNy40IDMyIDYwLjQgMzJjMzAgMCA1NC41IDIxLjkgNTkuMiA1MC4yIDMyLjYtNy42IDY3LjEuNiA5Ni41IDMwbC00NC4zIDQ0LjNjLTIwLjUtMjAuNS00Mi42LTE2LjMtNTUuNC0zLjUtMTQuMyAxNC4zLTE0LjMgMzcuOSAwIDUyLjJsOTkuNSA5OS41LTQ0IDQ0LjNjLTg3LjctODcuMi00OS43LTQ5LjctOTkuOC05OS43LTI2LjgtMjYuNS0zNS02NC44LTI0LjgtOTguOUMyMC40IDE0NC42LjYgMTIwLjcuNiA5Mi4xem0xMjkuNSAxMTYuNGw0NC4zIDQ0LjNjMTAtMTAgODkuNy04OS43IDk5LjctOTkuOCAxNC4zLTE0LjMgMzcuNi0xNC4zIDUxLjkgMCAxMi44IDEyLjggMTcgMzUtMy41IDU1LjRsNDQgNDQuM2MzMS4yLTMxLjIgMzguNS02Ny42IDI4LjktMTAxLjIgMjkuMi00LjEgNTEuOS0yOS4yIDUxLjktNTkuNSAwLTMzLjItMjYuOC02MC4xLTU5LjgtNjAuMS0zMC4zIDAtNTUuNCAyMi41LTU5LjUgNTEuNi0zMy44LTkuOS03MS43LTEuNS05OC4zIDI1LjEtMTguMyAxOS4xLTcxLjEgNzEuNS05OS42IDk5Ljl6bTI2Ni4zIDE1Mi4yYzguMi0zMi43LS45LTY4LjUtMjYuMy05My45LTExLjgtMTIuMiA1IDQuNy05OS41LTk5LjdsLTQ0LjMgNDQuMyA5OS43IDk5LjdjMTQuMyAxNC4zIDE0LjMgMzcuNiAwIDUxLjktMTIuOCAxMi44LTM1IDE3LTU1LjQtMy41bC00NCA0NC4zYzI3LjYgMzAuMiA2OCAzOC44IDEwMi43IDI4IDUuNSAyNy40IDI5LjcgNDguMSA1OC45IDQ4LjEgMzMgMCA1OS44LTI2LjggNTkuOC02MC4xIDAtMzAuMi0yMi41LTU1LTUxLjYtNTkuMXptLTg0LjMtNTMuMWwtNDQtNDQuM2MtODcgODYuNC01MC40IDUwLjQtOTkuNyA5OS44LTE0LjMgMTQuMy0zNy42IDE0LjMtNTEuOSAwLTEzLjEtMTMuNC0xNi45LTM1LjMgMy4yLTU1LjRsLTQ0LTQ0LjNjLTMwLjIgMzAuMi0zOCA2NS4yLTI5LjUgOTguMy0yNi43IDYtNDYuMiAyOS45LTQ2LjIgNTguMkMwIDQ1My4yIDI2LjggNDgwIDU5LjggNDgwYzI4LjYgMCA1Mi41LTE5LjggNTguNi00Ni43IDMyLjcgOC4yIDY4LjUtLjYgOTQuMi0yNiAzMi4xLTMyIDEyLjItMTIuNCA5OS41LTk5Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJ2NDQ4aDQ0OFYzMkgwem0yNDMuOCAzNDkuNGMwIDQzLjYtMjUuNiA2My41LTYyLjkgNjMuNS0zMy43IDAtNTMuMi0xNy40LTYzLjItMzguNWwzNC4zLTIwLjdjNi42IDExLjcgMTIuNiAyMS42IDI3LjEgMjEuNiAxMy44IDAgMjIuNi01LjQgMjIuNi0yNi41VjIzNy43aDQyLjF2MTQzLjd6bTk5LjYgNjMuNWMtMzkuMSAwLTY0LjQtMTguNi03Ni43LTQzbDM0LjMtMTkuOGM5IDE0LjcgMjAuOCAyNS42IDQxLjUgMjUuNiAxNy40IDAgMjguNi04LjcgMjguNi0yMC44IDAtMTQuNC0xMS40LTE5LjUtMzAuNy0yOGwtMTAuNS00LjVjLTMwLjQtMTIuOS01MC41LTI5LjItNTAuNS02My41IDAtMzEuNiAyNC4xLTU1LjYgNjEuNi01NS42IDI2LjggMCA0NiA5LjMgNTkuOCAzMy43TDM2OCAyOTBjLTcuMi0xMi45LTE1LTE4LTI3LjEtMTgtMTIuMyAwLTIwLjEgNy44LTIwLjEgMTggMCAxMi42IDcuOCAxNy43IDI1LjkgMjUuNmwxMC41IDQuNWMzNS44IDE1LjMgNTUuOSAzMSA1NS45IDY2LjIgMCAzNy44LTI5LjggNTguNi02OS43IDU4LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpzZmlkZGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMC42MzQgMjM3LjQ2MmMtNC43MjctMi42MjEtNS42NjQtNS43NDgtNi4zODEtMTAuNzc2LTIuMzUyLTE2LjQ4OC0zLjUzOS0zMy42MTktOS4wOTctNDkuMDk1LTM1Ljg5NS05OS45NTctMTUzLjk5LTE0My4zODYtMjQ2Ljg0OS05MS42NDYtMjcuMzcgMTUuMjUtNDguOTcxIDM2LjM2OS02NS40OTMgNjMuOTAzLTMuMTg0LTEuNTA4LTUuNDU4LTIuNzEtNy44MjQtMy42ODYtMzAuMTAyLTEyLjQyMS01OS4wNDktMTAuMTIxLTg1LjMzMSA5LjE2Ny0yNS41MzEgMTguNzM3LTM2LjQyMiA0NC41NDgtMzIuNjc2IDc2LjQwOC4zNTUgMy4wMjUtMS45NjcgNy42MjEtNC41MTQgOS41NDUtMzkuNzEyIDI5Ljk5Mi01Ni4wMzEgNzguMDY1LTQxLjkwMiAxMjQuNjE1IDEzLjgzMSA0NS41NjkgNTcuNTE0IDc5Ljc5NiAxMDUuNjA4IDgxLjQzMyAzMC4yOTEgMS4wMzEgNjAuNjM3LjU0NiA5MC45NTkuNTM5IDg0LjA0MS0uMDIxIDE2OC4wOS41MzEgMjUyLjEyLS40OCA1Mi42NjQtLjYzNCA5Ni4xMDgtMzYuODczIDEwOC4yMTItODcuMjkzIDExLjU0LTQ4LjA3NC0xMS4xNDQtOTcuMy01Ni44MzItMTIyLjYzNHptMjEuMTA3IDE1Ni44OGMtMTguMjMgMjIuNDMyLTQyLjM0MyAzNS4yNTMtNzEuMjggMzUuNjUtNTYuODc0Ljc4MS0xMTMuNzY3LjIzLTE3MC42NTIuMjMgMCAuNy0xNjMuMDI4LjE1OS0xNjMuNzI4LjE1NC00My44NjEtLjMzMi03Ni43MzktMTkuNzY2LTk1LjE3NS01OS45OTUtMTguOTAyLTQxLjI0NS00LjAwNC05MC44NDggMzQuMTg2LTExNi4xMDYgOS4xODItNi4wNzMgMTIuNTA1LTExLjU2NiAxMC4wOTYtMjMuMTM2LTUuNDktMjYuMzYxIDQuNDUzLTQ3Ljk1NiAyNi40Mi02Mi45ODEgMjIuOTg3LTE1LjcyMyA0Ny40MjItMTYuMTQ2IDcyLjAzNC0zLjA4MyAxMC4yNjkgNS40NSAxNC42MDcgMTEuNTY0IDIyLjE5OC0yLjUyNyAxNC4yMjItMjYuMzk5IDM0LjU1Ny00Ni43MjcgNjAuNjcxLTYxLjI5NCA5Ny40Ni01NC4zNjYgMjI4LjM3IDcuNTY4IDIzMC4yNCAxMzIuNjk3LjEyMiA4LjE1IDIuNDEyIDEyLjQyOCA5Ljg0OCAxNS44OTQgNTcuNTYgMjYuODI5IDc0LjQ1NiA5Ni4xMjIgMzUuMTQyIDE0NC40OTd6bS04Ny43ODktODAuNDk5Yy01Ljg0OCAzMS4xNTctMzQuNjIyIDU1LjA5Ni02Ni42NjYgNTUuMDk1LTE2Ljk1My0uMDAxLTMyLjA1OC02LjU0NS00NC4wNzktMTcuNzA1LTI3LjY5Ny0yNS43MTMtNzEuMTQxLTc0Ljk4LTk1LjkzNy05My4zODctMjAuMDU2LTE0Ljg4OC00MS45OS0xMi4zMzMtNjAuMjcyIDMuNzgyLTQ5Ljk5NiA0NC4wNzEgMTUuODU5IDEyMS43NzUgNjcuMDYzIDc3LjE4OCA0LjU0OC0zLjk2IDcuODQtOS41NDMgMTIuNzQ0LTEyLjg0NCA4LjE4NC01LjUwOSAyMC43NjYtLjg4NCAxMy4xNjggMTAuNjIyLTE3LjM1OCAyNi4yODQtNDkuMzMgMzguMTk3LTc4Ljg2MyAyOS4zMDEtMjguODk3LTguNzA0LTQ4Ljg0LTM1Ljk2OC00OC42MjYtNzAuMTc5IDEuMjI1LTIyLjQ4NSAxMi4zNjQtNDMuMDYgMzUuNDE0LTU1Ljk2NSAyMi41NzUtMTIuNjM4IDQ2LjM2OS0xMy4xNDYgNjYuOTkxIDIuNDc0QzI5NS42OCAyODAuNyAzMjAuNDY3IDMyMy45NyAzNTIuMTg1IDM0My40N2MyNC41NTggMTUuMDk5IDU0LjI1NCA3LjM2MyA2OC44MjMtMTcuNTA2IDI4LjgzLTQ5LjIwOS0zNC41OTItMTA1LjAxNi03OC44NjgtNjMuNDYtMy45ODkgMy43NDQtNi45MTcgOC45MzItMTEuNDEgMTEuNzItMTAuOTc1IDYuODExLTE3LjMzMy00LjExMy0xMi44MDktMTAuMzUzIDIwLjcwMy0yOC41NTQgNTAuNDY0LTQwLjQ0IDgzLjI3MS0yOC4yMTQgMzEuNDI5IDExLjcxNCA0OS4xMDggNDQuMzY2IDQyLjc2IDc4LjE4NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSnhsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxMi4yIDMySDM1LjhDMTYgMzIgMCA0OCAwIDY3LjhWNDQ0LjJDMCA0NjQgMTYgNDgwIDM1LjggNDgwSDQxMi4yYzE5LjggMCAzNS44LTE2IDM1LjgtMzUuOFY2Ny44QzQ0OCA0OCA0MzIgMzIgNDEyLjIgMzJ6TTM3OC42IDMzMy43YzAgNDAuMi0zMi42IDcyLjgtNzIuOCA3Mi44SDcwLjJjMC00MC4yIDMyLjYtNzIuOCA3Mi44LTcyLjhIMzc4LjZ6bTAtMTEzLjljMCA0MC4yLTMyLjYgNzIuOC03Mi44IDcyLjhINzAuMmMwLTQwLjIgMzIuNi03Mi44IDcyLjgtNzIuOEgzNzguNnptMC0xMTMuOWMwIDQwLjItMzIuNiA3Mi44LTcyLjggNzIuOEg3MC4yYzAtNDAuMiAzMi42LTcyLjggNzIuOC03Mi44SDM3OC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLYWdnbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0LjIgNTAxLjVMMTU4LjQgMzIwLjMgMjk4LjIgMTg1YzIuNi0yLjcgMS43LTEwLjUtNS4zLTEwLjVoLTY5LjJjLTMuNSAwLTcgMS44LTEwLjUgNS4zTDgwLjkgMzEzLjVWNy41cTAtNy41LTcuNS03LjVIMjEuNVExNCAwIDE0IDcuNXY0OTdxMCA3LjUgNy41IDcuNWg1MS45cTcuNSAwIDcuNS03LjV2LTEwOWwzMC44LTI5LjMgMTEwLjUgMTQwLjZjMyAzLjUgNi41IDUuMyAxMC41IDUuM2g2Ni45cTUuMjUgMCA2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtleWJhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg2LjE3IDQxOWExOCAxOCAwIDEgMCAxOCAxOCAxOCAxOCAwIDAgMC0xOC0xOHptMTExLjkyLTE0Ny42Yy05LjUtMTQuNjItMzkuMzctNTIuNDUtODcuMjYtNzMuNzFxLTkuMS00LjA2LTE4LjM4LTcuMjdhNzguNDMgNzguNDMgMCAwIDAtNDcuODgtMTA0LjEzYy0xMi40MS00LjEtMjMuMzMtNi0zMi40MS01Ljc3LS42LTItMS44OS0xMSA5LjQtMzVMMTk4LjY2IDMybC01LjQ4IDcuNTZjLTguNjkgMTIuMDYtMTYuOTIgMjMuNTUtMjQuMzQgMzQuODlhNTEgNTEgMCAwIDAtOC4yOS0xLjI1Yy00MS41My0yLjQ1LTM5LTIuMzMtNDEuMDYtMi4zMy01MC42MSAwLTUwLjc1IDUyLjEyLTUwLjc1IDQ1Ljg4bC0yLjM2IDM2LjY4Yy0xLjYxIDI3IDE5Ljc1IDUwLjIxIDQ3LjYzIDUxLjg1bDguOTMuNTRhMjE0IDIxNCAwIDAgMC00Ni4yOSAzNS41NEMxNCAzMDQuNjYgMTQgMzc0IDE0IDQyOS43N3YzMy42NGwyMy4zMi0yOS44YTE0OC42IDE0OC42IDAgMCAwIDE0LjU2IDM3LjU2YzUuNzggMTAuMTMgMTQuODcgOS40NSAxOS42NCA3LjMzIDQuMjEtMS44NyAxMC02LjkyIDMuNzUtMjAuMTFhMTc4LjI5IDE3OC4yOSAwIDAgMS0xNS43Ni01My4xM2w0Ni44Mi01OS44My0yNC42NiA3NC4xMWM1OC4yMy00Mi40IDE1Ny4zOC02MS43NiAyMzYuMjUtMzguNTkgMzQuMiAxMC4wNSA2Ny40NS42OSA4NC43NC0yMy44NC43Mi0xIDEuMi0yLjE2IDEuODUtMy4yMmExNTYuMDkgMTU2LjA5IDAgMCAxIDIuOCAyOC40M2MwIDIzLjMtMy42OSA1Mi45My0xNC44OCA4MS42NC0yLjUyIDYuNDYgMS43NiAxNC41IDguNiAxNS43NCA3LjQyIDEuNTcgMTUuMzMtMy4xIDE4LjM3LTExLjE1QzQyOSA0NDMgNDM0IDQxNCA0MzQgMzgyLjMyYzAtMzguNTgtMTMtNzcuNDYtMzUuOTEtMTEwLjkyek0xNDIuMzcgMTI4LjU4bC0xNS43LS45My0xLjM5IDIxLjc5IDEzLjEzLjc4YTkzIDkzIDAgMCAwIC4zMiAxOS41N2wtMjIuMzgtMS4zNGExMi4yOCAxMi4yOCAwIDAgMS0xMS43Ni0xMi43OUwxMDcgMTE5YzEtMTIuMTcgMTMuODctMTEuMjcgMTMuMjYtMTEuMzJsMjkuMTEgMS43M2ExNDQuMzUgMTQ0LjM1IDAgMCAwLTcgMTkuMTd6bTE0OC40MiAxNzIuMThhMTAuNTEgMTAuNTEgMCAwIDEtMTQuMzUtMS4zOWwtOS42OC0xMS40OS0zNC40MiAyN2E4LjA5IDguMDkgMCAwIDEtMTEuMTMtMS4wOGwtMTUuNzgtMTguNjRhNy4zOCA3LjM4IDAgMCAxIDEuMzQtMTAuMzRsMzQuNTctMjcuMTgtMTQuMTQtMTYuNzQtMTcuMDkgMTMuNDVhNy43NSA3Ljc1IDAgMCAxLTEwLjU5LTFzLTMuNzItNC40Mi0zLjgtNC41M2E3LjM4IDcuMzggMCAwIDEgMS4zNy0xMC4zNEwyMTQgMjI1LjE5cy0xOC41MS0yMi0xOC42LTIyLjE0YTkuNTYgOS41NiAwIDAgMSAxLjc0LTEzLjQyIDEwLjM4IDEwLjM4IDAgMCAxIDE0LjMgMS4zN2w4MS4wOSA5Ni4zMmE5LjU4IDkuNTggMCAwIDEtMS43NCAxMy40NHpNMTg3LjQ0IDQxOWExOCAxOCAwIDEgMCAxOCAxOCAxOCAxOCAwIDAgMC0xOC0xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2V5Y2RuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzLjggNDA5LjNsNjAuNS01OWMzMi4xIDQyLjggNzEuMSA2NiAxMjYuNiA2Ny40IDMwLjUuNyA2MC4zLTcgODYuNC0yMi40IDUuMSA1LjMgMTguNSAxOS41IDIwLjkgMjItMzIuMiAyMC43LTY5LjYgMzEuMS0xMDguMSAzMC4yLTQzLjMtMS4xLTg0LjYtMTYuNy0xMTcuNy00NC40LjMtLjYtMzguMiAzNy41LTM4LjYgMzcuOSA5LjUgMjkuOC0xMy4xIDYyLjQtNDYuMyA2Mi40QzIwLjcgNTAzLjMgMCA0ODEuNyAwIDQ1NC45YzAtMzQuMyAzMy4xLTU2LjYgNjMuOC00NS42em0zNTQuOS0yNTIuNGMxOS4xIDMxLjMgMjkuNiA2Ny40IDI4LjcgMTA0LTEuMSA0NC44LTE5IDg3LjUtNDguNiAxMjEgLjMuMyAyMy44IDI1LjIgMjQuMSAyNS41IDkuNi0xLjMgMTkuMiAyIDI1LjkgOS4xIDExLjMgMTIgMTAuOSAzMC45LTEuMSA0Mi40LTEyIDExLjMtMzAuOSAxMC45LTQyLjQtMS4xLTYuNy03LTkuNC0xNi44LTcuNi0yNi4zLTI0LjktMjYuNi00NC40LTQ3LjItNDQuNC00Ny4yIDQyLjctMzQuMSA2My4zLTc5LjYgNjQuNC0xMjQuMi43LTI4LjktNy4yLTU3LjItMjEuMS04Mi4ybDIyLjEtMjF6TTEwNCA1My4xYzYuNyA3IDkuNCAxNi44IDcuNiAyNi4zbDQ1LjkgNDguMWMtNC43IDMuOC0xMy4zIDEwLjQtMjIuOCAyMS4zLTI1LjQgMjguNS0zOS42IDY0LjgtNDAuNyAxMDIuOS0uNyAyOC45IDYuMSA1Ny4yIDIwIDgyLjRsLTIyIDIxLjVDNzIuNyAzMjQgNjMuMSAyODcuOSA2NC4yIDI1MC45YzEtNDQuNiAxOC4zLTg3LjYgNDcuNS0xMjEuMWwtMjUuMy0yNi40Yy05LjYgMS4zLTE5LjItMi0yNS45LTkuMS0xMS4zLTEyLTEwLjktMzAuOSAxLjEtNDIuNEM3My41IDQwLjcgOTIuMiA0MSAxMDQgNTMuMXpNNDY0LjkgOGMyNiAwIDQ3LjEgMjIuNCA0Ny4xIDQ4LjNTNDkwLjkgMTA0IDQ2NC45IDEwNGMtNi4zLjEtMTQtMS4xLTE1LjktMS44bC02Mi45IDU5LjdjLTMyLjctNDMuNi03Ni43LTY1LjktMTI2LjktNjcuMi0zMC41LS43LTYwLjMgNi44LTg2LjIgMjIuNGwtMjEuMS0yMkMxODQuMSA3NC4zIDIyMS41IDY0IDI2MCA2NC45YzQzLjMgMS4xIDg0LjYgMTYuNyAxMTcuNyA0NC42bDQxLjEtMzguNmMtMS41LTQuNy0yLjItOS42LTIuMi0xNC41QzQxNi41IDI5LjcgNDM4LjkgOCA0NjQuOSA4ek0yNTYuNyAxMTMuNGM1LjUgMCAxMC45LjQgMTYuNCAxLjEgNzguMSA5LjggMTMzLjQgODEuMSAxMjMuOCAxNTkuMS05LjggNzguMS04MS4xIDEzMy40LTE1OS4xIDEyMy44LTc4LjEtOS44LTEzMy40LTgxLjEtMTIzLjgtMTU5LjIgOS4zLTcyLjQgNzAuMS0xMjQuNiAxNDIuNy0xMjQuOHptLTU5IDExOS40Yy42IDIyLjcgMTIuMiA0MS44IDMyLjQgNTIuMmwtMTEgNTEuN2g3My43bC0xMS01MS43YzIwLjEtMTAuOSAzMi4xLTI5IDMyLjQtNTIuMi0uNC0zMi44LTI1LjgtNTcuNS01OC4zLTU4LjMtMzIuMS44LTU3LjMgMjQuOC01OC4yIDU4LjN6TTI1NiAxNjBcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2lja3N0YXJ0ZXJLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1Ni42IDI1Ni4ybDQwLjgtNDAuNWM0Mi4yLTQxLjkgNDIuMi0xMTAuMyAwLTE1Mi4xcy0xMTEtNDEuOS0xNTMuMiAwTDIyOS4zIDc4LjRDMjA5LjYgNTAuMyAxNzcuMSAzMiAxNDAuMiAzMkM4MC41IDMyIDMyIDgwLjIgMzIgMTM5LjVWMzcyLjVDMzIgNDMxLjkgODAuNSA0ODAgMTQwLjIgNDgwYzM3LjEgMCA2OS4zLTE4LjMgODktNDYuNGwxNC45IDE0LjdjNDIuMiA0MS45IDExMSA0MS45IDE1My4yIDBzNDIuMi0xMTAuMyAwLTE1Mi4xbC00MC44LTQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaWNrc3RhcnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek0zMjAuOCAyMzNsLTIzLjMgMjMuMUwzMjAuOCAyNzljMjQuMSAyMy45IDI0LjEgNjMgMCA4Ni45cy02My40IDIzLjktODcuNiAwbC04LjUtOC40Yy0xMS4zIDE2LTI5LjcgMjYuNS01MC45IDI2LjVjLTM0LjEgMC02MS45LTI3LjUtNjEuOS02MS40bDAtMTMzLjJjMC0zMy44IDI3LjctNjEuNCA2MS45LTYxLjRjMjEuMSAwIDM5LjYgMTAuNSA1MC45IDI2LjVsOC41LTguNGMyNC4xLTIzLjkgNjMuNC0yMy45IDg3LjYgMHMyNC4xIDYzIDAgODYuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS29ydnVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4Ni41IDM0aC0zMjdDMjYuOCAzNCAwIDYwLjggMCA5My41djMyNy4xQzAgNDUzLjIgMjYuOCA0ODAgNTkuNSA0ODBoMzI3LjFjMzMgMCA1OS41LTI2LjggNTkuNS01OS41di0zMjdDNDQ2IDYwLjggNDE5LjIgMzQgMzg2LjUgMzR6TTg3LjEgMTIwLjhoOTZ2MTE2bDYxLjgtMTE2aDExMC45bC04MS4yIDEzMkg4Ny4xdi0xMzJ6bTE2MS44IDI3Mi4xbC02NS43LTExMy42djExMy42aC05NlYyNjIuMWgxOTEuNWw4OC42IDEzMC44SDI0OC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXJhdmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNC40LDExNS44M2E1LjcyLDUuNzIsMCwwLDAtLjI4LS42OCw4LjUyLDguNTIsMCwwLDAtLjUzLTEuMjUsNiw2LDAsMCwwLS41NC0uNzEsOS4zNiw5LjM2LDAsMCwwLS43Mi0uOTRjLS4yMy0uMjItLjUyLS40LS43Ny0uNmE4Ljg0LDguODQsMCwwLDAtLjktLjY4TDQwNC40LDU1LjU1YTgsOCwwLDAsMC04LDBMMzAwLjEyLDExMWgwYTguMDcsOC4wNywwLDAsMC0uODguNjksNy42OCw3LjY4LDAsMCwwLS43OC42LDguMjMsOC4yMywwLDAsMC0uNzIuOTNjLS4xNy4yNC0uMzkuNDUtLjU0LjcxYTkuNyw5LjcsMCwwLDAtLjUyLDEuMjVjLS4wOC4yMy0uMjEuNDQtLjI4LjY4YTguMDgsOC4wOCwwLDAsMC0uMjgsMi4wOFYyMjMuMThsLTgwLjIyLDQ2LjE5VjYzLjQ0YTcuOCw3LjgsMCwwLDAtLjI4LTIuMDljLS4wNi0uMjQtLjItLjQ1LS4yOC0uNjhhOC4zNSw4LjM1LDAsMCwwLS41Mi0xLjI0Yy0uMTQtLjI2LS4zNy0uNDctLjU0LS43MmE5LjM2LDkuMzYsMCwwLDAtLjcyLS45NCw5LjQ2LDkuNDYsMCwwLDAtLjc4LS42LDkuOCw5LjgsMCwwLDAtLjg4LS42OGgwTDExNS42MSwxLjA3YTgsOCwwLDAsMC04LDBMMTEuMzQsNTYuNDloMGE2LjUyLDYuNTIsMCwwLDAtLjg4LjY5LDcuODEsNy44MSwwLDAsMC0uNzkuNiw4LjE1LDguMTUsMCwwLDAtLjcxLjkzYy0uMTguMjUtLjQuNDYtLjU1LjcyYTcuODgsNy44OCwwLDAsMC0uNTEsMS4yNCw2LjQ2LDYuNDYsMCwwLDAtLjI5LjY3LDguMTgsOC4xOCwwLDAsMC0uMjgsMi4xdjMyOS43YTgsOCwwLDAsMCw0LDYuOTVsMTkyLjUsMTEwLjg0YTguODMsOC44MywwLDAsMCwxLjMzLjU0Yy4yMS4wOC40MS4yLjYzLjI2YTcuOTIsNy45MiwwLDAsMCw0LjEsMGMuMi0uMDUuMzctLjE2LjU1LS4yMmE4LjYsOC42LDAsMCwwLDEuNC0uNThMNDA0LjQsNDAwLjA5YTgsOCwwLDAsMCw0LTYuOTVWMjg3Ljg4bDkyLjI0LTUzLjExYTgsOCwwLDAsMCw0LTdWMTE3LjkyQTguNjMsOC42MywwLDAsMCw1MDQuNCwxMTUuODNaTTExMS42LDE3LjI4aDBsODAuMTksNDYuMTUtODAuMiw0Ni4xOEwzMS40MSw2My40NFptODguMjUsNjBWMjc4LjZsLTQ2LjUzLDI2Ljc5LTMzLjY5LDE5LjRWMTIzLjVsNDYuNTMtMjYuNzlabTAsNDEyLjc4TDIzLjM3LDM4OC41Vjc3LjMyTDU3LjA2LDk2LjdsNDYuNTIsMjYuOFYzMzguNjhhNi45NCw2Ljk0LDAsMCwwLC4xMi45LDgsOCwwLDAsMCwuMTYsMS4xOGgwYTUuOTIsNS45MiwwLDAsMCwuMzguOSw2LjM4LDYuMzgsMCwwLDAsLjQyLDF2MGE4LjU0LDguNTQsMCwwLDAsLjYuNzgsNy42Miw3LjYyLDAsMCwwLC42Ni44NGwwLDBjLjIzLjIyLjUyLjM4Ljc3LjU4YTguOTMsOC45MywwLDAsMCwuODYuNjZsMCwwLDAsMCw5Mi4xOSw1Mi4xOFptOC0xMDYuMTctODAuMDYtNDUuMzIsODQuMDktNDguNDEsOTIuMjYtNTMuMTEsODAuMTMsNDYuMTMtNTguOCwzMy41NlptMTg0LjUyLDQuNTdMMjE1Ljg4LDQ5MC4xMVYzOTcuOEwzNDYuNiwzMjMuMmw0NS43Ny0yNi4xNVptMC0xMTkuMTNMMzU4LjY4LDI1MGwtNDYuNTMtMjYuNzlWMTMxLjc5bDMzLjY5LDE5LjRMMzkyLjM3LDE3OFptOC0xMDUuMjgtODAuMi00Ni4xNyw4MC4yLTQ2LjE2LDgwLjE4LDQ2LjE1Wm04LDEwNS4yOFYxNzhMNDU1LDE1MS4xOWwzMy42OC0xOS40djkxLjM5aDBaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhc3RmbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjUuOCAzNjcuMWwtMTguOC01MXMtMzAuNSAzNC03Ni4yIDM0Yy00MC41IDAtNjkuMi0zNS4yLTY5LjItOTEuNSAwLTcyLjEgMzYuNC05Ny45IDcyLjEtOTcuOSA2Ni41IDAgNzQuOCA1My4zIDEwMC45IDEzNC45IDE4LjggNTYuOSA1NCAxMDIuNiAxNTUuNCAxMDIuNiA3Mi43IDAgMTIyLTIyLjMgMTIyLTgwLjkgMC03Mi45LTYyLjctODAuNi0xMTUtOTIuMS0yNS44LTUuOS0zMy40LTE2LjQtMzMuNC0zNCAwLTE5LjkgMTUuOC0zMS43IDQxLjYtMzEuNyAyOC4yIDAgNDMuNCAxMC42IDQ1LjcgMzUuOGw1OC42LTdjLTQuNy01Mi44LTQxLjEtNzQuNS0xMDAuOS03NC41LTUyLjggMC0xMDQuNCAxOS45LTEwNC40IDgzLjkgMCAzOS45IDE5LjQgNjUuMSA2OCA3Ni44IDQ0LjkgMTAuNiA3OS44IDEzLjggNzkuOCA0NS43IDAgMjEuNy0yMS4xIDMwLjUtNjEgMzAuNS01OS4yIDAtODMuOS0zMS4xLTk3LjktNzMuOS0zMi05Ni44LTQzLjYtMTYzLTE2MS4zLTE2M0M0NS43IDExMy44IDAgMTY4LjMgMCAyNjFjMCA4OS4xIDQ1LjcgMTM3LjIgMTI3LjkgMTM3LjIgNjYuMiAwIDk3LjktMzEuMSA5Ny45LTMxLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlYW5wdWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg2LjUzOSAxMTEuNDg1bDE1LjA5NiAyNDguOTU1LTEwLjk3OS0uMjc1Yy0zNi4yMzItLjgyNC03MS42NCA4Ljc4My0xMDIuNjU3IDI3Ljk5Ny0zMS4wMTYtMTkuMjE0LTY2LjQyNC0yNy45OTctMTAyLjY1Ny0yNy45OTctNDUuNTY0IDAtODIuMDcgMTAuNzA1LTEyMy41MTYgMjcuNzIzTDkzLjExNyAxMjkuNmMyOC41NDYtMTEuODAzIDYxLjQ4NC0xOC4xMTUgOTIuMjI2LTE4LjExNSA0MS4xNzMgMCA3My44MzYgMTMuMTc1IDEwMi42NTcgNDIuNTQ0IDI3LjcyMy0yOC4yNzEgNTkuMDEzLTQxLjcyMSA5OC41MzktNDIuNTQ0ek01NjkuMDcgNDQ4Yy0yNS41MjYgMC00Ny40ODUtNS4yMTUtNzAuNTQyLTE1LjY0NS0zNC4zMS0xNS42NDUtNjkuOTkzLTI0Ljk3OC0xMDcuODcxLTI0Ljk3OC0zOC45NzcgMC03NC45MzQgMTIuOTAxLTEwMi42NTcgNDAuNjIzLTI3LjcyMy0yNy43MjMtNjMuNjgtNDAuNjIzLTEwMi42NTctNDAuNjIzLTM3Ljg3OCAwLTczLjU2MSA5LjMzMy0xMDcuODcxIDI0Ljk3OEM1NS4yMzkgNDQyLjIzNiAzMi43MzEgNDQ4IDguMzAzIDQ0OEg2LjkzTDQ5LjQ3NSA5OC44NTlDODguNzI2IDc2LjYyNiAxMzYuNDg2IDY0IDE4MS43NzUgNjQgMjE4LjgzIDY0IDI1Ni45ODQgNzEuNjg1IDI4OCA5My4wOTUgMzE5LjAxNiA3MS42ODUgMzU3LjE3IDY0IDM5NC4yMjUgNjRjNDUuMjg5IDAgOTMuMDQ5IDEyLjYyNiAxMzIuMyAzNC44NTlMNTY5LjA3IDQ0OHptLTQzLjM2OC00NC43NDFsLTM0LjAzNi0yODAuMjQ2Yy0zMC43NDItMTMuOTk5LTY3LjI0OC0yMS40MS0xMDEuMDA5LTIxLjQxLTM4LjQyOCAwLTc0LjM4NSAxMi4wNzctMTAyLjY1NyAzOC43MDItMjguMjcyLTI2LjYyNS02NC4yMjgtMzguNzAyLTEwMi42NTctMzguNzAyLTMzLjc2MSAwLTcwLjI2NyA3LjQxMS0xMDEuMDA5IDIxLjQxTDUwLjI5OCA0MDMuMjU5YzQ3LjIxMS0xOS40ODcgODIuODk0LTMzLjQ4NiAxMzUuMDQ1LTMzLjQ4NiAzNy42MDQgMCA3MC44MTcgOS42MDYgMTAyLjY1NyAyOS42NDQgMzEuODQtMjAuMDM4IDY1LjA1Mi0yOS42NDQgMTAyLjY1Ny0yOS42NDQgNTIuMTUxIDAgODcuODM0IDEzLjk5OSAxMzUuMDQ1IDMzLjQ4NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MTIuNyAyMTljMC0yMC41IDMuMi0zMi42IDMuMi01NC42IDAtMzQuMi0xMi42LTQ1LjItNDAuNS00NS4yaC0yMC41djI0LjJoNi4zYzE0LjIgMCAxNy4zIDQuNyAxNy4zIDIyLjEgMCAxNi4zLTEuNiAzMi42LTEuNiA1MS41IDAgMjQuMiA3LjkgMzMuNiAyMy42IDM3LjN2MS42Yy0xNS44IDMuNy0yMy42IDEzLjEtMjMuNiAzNy4zIDAgMTguOSAxLjYgMzQuMiAxLjYgNTEuNSAwIDE3LjktMy43IDIyLjYtMTcuMyAyMi42di41aC02LjNWMzkzaDIwLjVjMjcuOCAwIDQwLjUtMTEgNDAuNS00NS4yIDAtMjIuNi0zLjItMzQuMi0zLjItNTQuNiAwLTExIDYuOC0yMi42IDI3LjMtMjMuNnYtMjcuM2MtMjAuNS0uNy0yNy4zLTEyLjMtMjcuMy0yMy4zem0tMTA1LjYgMzJjLTE1LjgtNi4zLTMwLjUtMTAtMzAuNS0yMC41IDAtNy45IDYuMy0xMi42IDE3LjktMTIuNnMyMi4xIDQuNyAzMy42IDEzLjFsMjEtMjcuOGMtMTMuMS0xMC0zMS0yMC41LTU1LjItMjAuNS0zNS43IDAtNTkuOSAyMC41LTU5LjkgNDkuNCAwIDI1LjcgMjIuNiAzOC45IDQxLjUgNDYuMiAxNi4zIDYuMyAzMi4xIDExLjYgMzIuMSAyMi4xIDAgNy45LTYuMyAxMy4xLTIwLjUgMTMuMS0xMy4xIDAtMjYuMy01LjMtNDAuNS0xNi4zbC0yMSAzMC41YzE1LjggMTMuMSAzOS45IDIyLjEgNTkuOSAyMi4xIDQyIDAgNjQuNi0yMi4xIDY0LjYtNTFzLTIyLjUtNDEtNDMtNDcuOHptLTM1OC45IDU5LjRjLTMuNyAwLTguNC0zLjItOC40LTEzLjFWMTE5LjFINjUuMmMtMjguNCAwLTQxIDExLTQxIDQ1LjIgMCAyMi42IDMuMiAzNS4yIDMuMiA1NC42IDAgMTEtNi44IDIyLjYtMjcuMyAyMy42djI3LjNjMjAuNS41IDI3LjMgMTIuMSAyNy4zIDIzLjEgMCAxOS40LTMuMiAzMS0zLjIgNTMuNiAwIDM0LjIgMTIuNiA0NS4yIDQwLjUgNDUuMmgyMC41di0yNC4yaC02LjNjLTEzLjEgMC0xNy4zLTUuMy0xNy4zLTIyLjZzMS42LTMyLjEgMS42LTUxLjVjMC0yNC4yLTcuOS0zMy42LTIzLjYtMzcuM3YtMS42YzE1LjgtMy43IDIzLjYtMTMuMSAyMy42LTM3LjMgMC0xOC45LTEuNi0zNC4yLTEuNi01MS41czMuNy0yMi4xIDE3LjMtMjIuMUg5M3YxNTAuOGMwIDMyLjEgMTEgNTMuMSA0My4xIDUzLjEgMTAgMCAxNy45LTEuNiAyMy42LTMuN2wtNS4zLTM0LjJjLTMuMS44LTQuNi44LTYuMi44ek0zNzkuOSAyNTFjLTE2LjMtNi4zLTMxLTEwLTMxLTIwLjUgMC03LjkgNi4zLTEyLjYgMTcuOS0xMi42IDExLjYgMCAyMi4xIDQuNyAzMy42IDEzLjFsMjEtMjcuOGMtMTMuMS0xMC0zMS0yMC41LTU1LjItMjAuNS0zNS43IDAtNTkuOSAyMC41LTU5LjkgNDkuNCAwIDI1LjcgMjIuNiAzOC45IDQxLjUgNDYuMiAxNi4zIDYuMyAzMi4xIDExLjYgMzIuMSAyMi4xIDAgNy45LTYuMyAxMy4xLTIwLjUgMTMuMS0xMy4xIDAtMjYuMy01LjMtNDAuNS0xNi4zbC0yMC41IDMwLjVjMTUuOCAxMy4xIDM5LjkgMjIuMSA1OS45IDIyLjEgNDIgMCA2NC42LTIyLjEgNjQuNi01MSAuMS0yOC45LTIyLjUtNDEtNDMtNDcuOHptLTE1NS02OC44Yy0zOC40IDAtNzUuMSAzMi4xLTc0LjEgODIuNSAwIDUyIDM0LjIgODIuNSA3OS4zIDgyLjUgMTguOSAwIDM5LjktNi44IDU2LjItMTcuOWwtMTUuOC0yNy44Yy0xMS42IDYuOC0yMi42IDEwLTM0LjIgMTAtMjEgMC0zNy4zLTEwLTQxLjUtMzQuMkgyOTBjLjUtMy43IDEuNi0xMSAxLjYtMTkuNC42LTQyLjYtMjIuNi03NS43LTY2LjctNzUuN3ptLTMwIDY2LjJjMy4yLTIxIDE1LjgtMzEgMzAuNS0zMSAxOC45IDAgMjYuMyAxMy4xIDI2LjMgMzFoLTU2Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxldHRlcmJveGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTIxLjMgMTI4QzU4Ni45IDEyOCA2NDAgMTgxLjEgNjQwIDI0Ni42cy01My4xIDExOC42LTExOC43IDExOC42Yy00Mi41IDAtNzkuNy0yMi4zLTEwMC43LTU1LjhjMTEuNC0xOC4yIDE4LTM5LjcgMTgtNjIuOHMtNi42LTQ0LjYtMTgtNjIuOGwwIDAgLjgtMS4yYzIwLjgtMzIuMyA1Ni44LTUzLjkgOTcuOS01NC42bDIgMHpNMzIwIDEyOGM0Mi41IDAgNzkuNyAyMi4zIDEwMC43IDU1LjhjLTExLjQgMTguMi0xOCAzOS43LTE4IDYyLjhzNi42IDQ0LjYgMTggNjIuOGwwIDAtLjggMS4yYy0yMC44IDMyLjMtNTYuOCA1My45LTk3LjkgNTQuNmwtMiAwYy00Mi41IDAtNzkuNy0yMi4zLTEwMC43LTU1LjhjMTEuNC0xOC4yIDE4LTM5LjcgMTgtNjIuOHMtNi42LTQ0LjYtMTgtNjIuOGwwIDAgLjgtMS4yYzIwLjgtMzIuMyA1Ni44LTUzLjkgOTcuOS01NC42bDIgMHptLTIwMS4zIDBjNDIuNSAwIDc5LjcgMjIuMyAxMDAuNyA1NS44Yy0xMS40IDE4LjItMTggMzkuNy0xOCA2Mi44czYuNiA0NC42IDE4IDYyLjhsMCAwLS44IDEuMmMtMjAuOCAzMi4zLTU2LjggNTMuOS05Ny45IDU0LjZsLTIgMEM1My4xIDM2NS4xIDAgMzEyLjEgMCAyNDYuNlM1My4xIDEyOCAxMTguNyAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzExIDE5Ni44djgxLjNjMCAyLjEtMS42IDMuNy0zLjcgMy43aC0xM2MtMS4zIDAtMi40LS43LTMtMS41bC0zNy4zLTUwLjN2NDguMmMwIDIuMS0xLjYgMy43LTMuNyAzLjdoLTEzYy0yLjEgMC0zLjctMS42LTMuNy0zLjdWMTk2LjljMC0yLjEgMS42LTMuNyAzLjctMy43aDEyLjljMS4xIDAgMi40IC42IDMgMS42bDM3LjMgNTAuM1YxOTYuOWMwLTIuMSAxLjYtMy43IDMuNy0zLjdoMTNjMi4xLS4xIDMuOCAxLjYgMy44IDMuNXptLTkzLjctMy43aC0xM2MtMi4xIDAtMy43IDEuNi0zLjcgMy43djgxLjNjMCAyLjEgMS42IDMuNyAzLjcgMy43aDEzYzIuMSAwIDMuNy0xLjYgMy43LTMuN1YxOTYuOGMwLTEuOS0xLjYtMy43LTMuNy0zLjd6bS0zMS40IDY4LjFIMTUwLjNWMTk2LjhjMC0yLjEtMS42LTMuNy0zLjctMy43aC0xM2MtMi4xIDAtMy43IDEuNi0zLjcgMy43djgxLjNjMCAxIC4zIDEuOCAxIDIuNWMuNyAuNiAxLjUgMSAyLjUgMWg1Mi4yYzIuMSAwIDMuNy0xLjYgMy43LTMuN3YtMTNjMC0xLjktMS42LTMuNy0zLjUtMy43em0xOTMuNy02OC4xSDMyNy4zYy0xLjkgMC0zLjcgMS42LTMuNyAzLjd2ODEuM2MwIDEuOSAxLjYgMy43IDMuNyAzLjdoNTIuMmMyLjEgMCAzLjctMS42IDMuNy0zLjdWMjY1YzAtMi4xLTEuNi0zLjctMy43LTMuN0gzNDRWMjQ3LjdoMzUuNWMyLjEgMCAzLjctMS42IDMuNy0zLjdWMjMwLjljMC0yLjEtMS42LTMuNy0zLjctMy43SDM0NFYyMTMuNWgzNS41YzIuMSAwIDMuNy0xLjYgMy43LTMuN3YtMTNjLS4xLTEuOS0xLjctMy43LTMuNy0zLjd6TTUxMiA5My40VjQxOS40Yy0uMSA1MS4yLTQyLjEgOTIuNy05My40IDkyLjZIOTIuNkM0MS40IDUxMS45LS4xIDQ2OS44IDAgNDE4LjZWOTIuNkMuMSA0MS40IDQyLjItLjEgOTMuNCAwSDQxOS40YzUxLjIgLjEgOTIuNyA0Mi4xIDkyLjYgOTMuNHpNNDQxLjYgMjMzLjVjMC04My40LTgzLjctMTUxLjMtMTg2LjQtMTUxLjNzLTE4Ni40IDY3LjktMTg2LjQgMTUxLjNjMCA3NC43IDY2LjMgMTM3LjQgMTU1LjkgMTQ5LjNjMjEuOCA0LjcgMTkuMyAxMi43IDE0LjQgNDIuMWMtLjggNC43LTMuOCAxOC40IDE2LjEgMTAuMXMxMDcuMy02My4yIDE0Ni41LTEwOC4yYzI3LTI5LjcgMzkuOS01OS44IDM5LjktOTMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlua2VkaW5JbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDAuMjggNDQ4SDcuNFYxNDguOWg5Mi44OHpNNTMuNzkgMTA4LjFDMjQuMDkgMTA4LjEgMCA4My41IDAgNTMuOGE1My43OSA1My43OSAwIDAgMSAxMDcuNTggMGMwIDI5LjctMjQuMSA1NC4zLTUzLjc5IDU0LjN6TTQ0Ny45IDQ0OGgtOTIuNjhWMzAyLjRjMC0zNC43LS43LTc5LjItNDguMjktNzkuMi00OC4yOSAwLTU1LjY5IDM3LjctNTUuNjkgNzYuN1Y0NDhoLTkyLjc4VjE0OC45aDg5LjA4djQwLjhoMS4zYzEyLjQtMjMuNSA0Mi42OS00OC4zIDg3Ljg4LTQ4LjMgOTQgMCAxMTEuMjggNjEuOSAxMTEuMjggMTQyLjNWNDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW5rZWRpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMzJIMzEuOUMxNC4zIDMyIDAgNDYuNSAwIDY0LjN2MzgzLjRDMCA0NjUuNSAxNC4zIDQ4MCAzMS45IDQ4MEg0MTZjMTcuNiAwIDMyLTE0LjUgMzItMzIuM1Y2NC4zYzAtMTcuOC0xNC40LTMyLjMtMzItMzIuM3pNMTM1LjQgNDE2SDY5VjIwMi4yaDY2LjVWNDE2em0tMzMuMi0yNDNjLTIxLjMgMC0zOC41LTE3LjMtMzguNS0zOC41UzgwLjkgOTYgMTAyLjIgOTZjMjEuMiAwIDM4LjUgMTcuMyAzOC41IDM4LjUgMCAyMS4zLTE3LjIgMzguNS0zOC41IDM4LjV6bTI4Mi4xIDI0M2gtNjYuNFYzMTJjMC0yNC44LS41LTU2LjctMzQuNS01Ni43LTM0LjYgMC0zOS45IDI3LTM5LjkgNTQuOVY0MTZoLTY2LjRWMjAyLjJoNjMuN3YyOS4yaC45YzguOS0xNi44IDMwLjYtMzQuNSA2Mi45LTM0LjUgNjcuMiAwIDc5LjcgNDQuMyA3OS43IDEwMS45VjQxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlub2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2Ni4wMzYsMTg2Ljg2N2wtNTkuNSwzNi44NzEtLjgzOCwzNi44NzEtMjkuMzI5LTE5LjI3My0zOS4zODQsMjQuM2MyLjIzOCw1NS4yMTEsMi40ODMsNTkuMjcxLDIuNTEsNTkuNWwtOTcuMiw2NS4zNTlMMTI3LjIxNCwyODUuNzQ4bDEwOC4xLTYyLjAxTDE5NS4wOSwxOTcuNzYxbC03NS40MTcsMzguNTQ3TDk4LjcyMyw5My4wMTUsMjI3Ljc3MSw0My41NzQsMTM2LjQzMiwwLDEwLjczNywzOS4zODUsMzguMzksMTc0LjNsNDEuOSwzMi42ODFMNDguNDQ1LDIyMi4wNjIsNjkuMzk0LDMyMy40NTcsOTguNzIzLDM1MS4xMSw3Ny43NzQsMzYzLjY3OWwxNi43Niw3OC43NjlMMTYwLjczMyw1MTJjLTEwLjgtNzQuODQyLTExLjY1OC03OC42NDEtMTEuNzI1LTc4Ljc3M2w3Ny45MjUtNTUuM2MxNi43NTktMTIuNTcsMTUuMDgzLTEwLjg5NCwxNS4wODMtMTAuODk0bC44MzgsMjQuMywzMy41MTksMjguNDkxLS44MzgtNzcuMDkzLDQ2LjkyNy0zMy41MTksMjYuODE1LTE4LjQzNS0yLjUxNCwzNi4wMzMsMjUuMTM5LDE3LjYsNi43LTc0LjU3OSw1OC42NTctNDMuNTc1WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW51eCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjAuOCAxMjMuM2MxIC41IDEuOCAxLjcgMyAxLjcgMS4xIDAgMi44LS40IDIuOS0xLjUuMi0xLjQtMS45LTIuMy0zLjItMi45LTEuNy0uNy0zLjktMS01LjUtLjEtLjQuMi0uOC43LS42IDEuMS4zIDEuMyAyLjMgMS4xIDMuNCAxLjd6bS0yMS45IDEuN2MxLjIgMCAyLTEuMiAzLTEuNyAxLjEtLjYgMy4xLS40IDMuNS0xLjYuMi0uNC0uMi0uOS0uNi0xLjEtMS42LS45LTMuOC0uNi01LjUuMS0xLjMuNi0zLjQgMS41LTMuMiAyLjkuMSAxIDEuOCAxLjUgMi44IDEuNHpNNDIwIDQwMy44Yy0zLjYtNC01LjMtMTEuNi03LjItMTkuNy0xLjgtOC4xLTMuOS0xNi44LTEwLjUtMjIuNC0xLjMtMS4xLTIuNi0yLjEtNC0yLjktMS4zLS44LTIuNy0xLjUtNC4xLTIgOS4yLTI3LjMgNS42LTU0LjUtMy43LTc5LjEtMTEuNC0zMC4xLTMxLjMtNTYuNC00Ni41LTc0LjQtMTcuMS0yMS41LTMzLjctNDEuOS0zMy40LTcyQzMxMS4xIDg1LjQgMzE1LjcuMSAyMzQuOCAwIDEzMi40LS4yIDE1OCAxMDMuNCAxNTYuOSAxMzUuMmMtMS43IDIzLjQtNi40IDQxLjgtMjIuNSA2NC43LTE4LjkgMjIuNS00NS41IDU4LjgtNTguMSA5Ni43LTYgMTcuOS04LjggMzYuMS02LjIgNTMuMy02LjUgNS44LTExLjQgMTQuNy0xNi42IDIwLjItNC4yIDQuMy0xMC4zIDUuOS0xNyA4LjNzLTE0IDYtMTguNSAxNC41Yy0yLjEgMy45LTIuOCA4LjEtMi44IDEyLjQgMCAzLjkuNiA3LjkgMS4yIDExLjggMS4yIDguMSAyLjUgMTUuNy44IDIwLjgtNS4yIDE0LjQtNS45IDI0LjQtMi4yIDMxLjcgMy44IDcuMyAxMS40IDEwLjUgMjAuMSAxMi4zIDE3LjMgMy42IDQwLjggMi43IDU5LjMgMTIuNSAxOS44IDEwLjQgMzkuOSAxNC4xIDU1LjkgMTAuNCAxMS42LTIuNiAyMS4xLTkuNiAyNS45LTIwLjIgMTIuNS0uMSAyNi4zLTUuNCA0OC4zLTYuNiAxNC45LTEuMiAzMy42IDUuMyA1NS4xIDQuMS42IDIuMyAxLjQgNC42IDIuNSA2Ljd2LjFjOC4zIDE2LjcgMjMuOCAyNC4zIDQwLjMgMjMgMTYuNi0xLjMgMzQuMS0xMSA0OC4zLTI3LjkgMTMuNi0xNi40IDM2LTIzLjIgNTAuOS0zMi4yIDcuNC00LjUgMTMuNC0xMC4xIDEzLjktMTguMy40LTguMi00LjQtMTcuMy0xNS41LTI5Ljd6TTIyMy43IDg3LjNjOS44LTIyLjIgMzQuMi0yMS44IDQ0LS40IDYuNSAxNC4yIDMuNiAzMC45LTQuMyA0MC40LTEuNi0uOC01LjktMi42LTEyLjYtNC45IDEuMS0xLjIgMy4xLTIuNyAzLjktNC42IDQuOC0xMS44LS4yLTI3LTkuMS0yNy4zLTcuMy0uNS0xMy45IDEwLjgtMTEuOCAyMy00LjEtMi05LjQtMy41LTEzLTQuNC0xLTYuOS0uMy0xNC42IDIuOS0yMS44ek0xODMgNzUuOGMxMC4xIDAgMjAuOCAxNC4yIDE5LjEgMzMuNS0zLjUgMS03LjEgMi41LTEwLjIgNC42IDEuMi04LjktMy4zLTIwLjEtOS42LTE5LjYtOC40LjctOS44IDIxLjItMS44IDI4LjEgMSAuOCAxLjktLjItNS45IDUuNS0xNS42LTE0LjYtMTAuNS01Mi4xIDguNC01Mi4xem0tMTMuNiA2MC43YzYuMi00LjYgMTMuNi0xMCAxNC4xLTEwLjUgNC43LTQuNCAxMy41LTE0LjIgMjcuOS0xNC4yIDcuMSAwIDE1LjYgMi4zIDI1LjkgOC45IDYuMyA0LjEgMTEuMyA0LjQgMjIuNiA5LjMgOC40IDMuNSAxMy43IDkuNyAxMC41IDE4LjItMi42IDcuMS0xMSAxNC40LTIyLjcgMTguMS0xMS4xIDMuNi0xOS44IDE2LTM4LjIgMTQuOS0zLjktLjItNy0xLTkuNi0yLjEtOC0zLjUtMTIuMi0xMC40LTIwLTE1LTguNi00LjgtMTMuMi0xMC40LTE0LjctMTUuMy0xLjQtNC45IDAtOSA0LjItMTIuM3ptMy4zIDMzNGMtMi43IDM1LjEtNDMuOSAzNC40LTc1LjMgMTgtMjkuOS0xNS44LTY4LjYtNi41LTc2LjUtMjEuOS0yLjQtNC43LTIuNC0xMi43IDIuNi0yNi40di0uMmMyLjQtNy42LjYtMTYtLjYtMjMuOS0xLjItNy44LTEuOC0xNSAuOS0yMCAzLjUtNi43IDguNS05LjEgMTQuOC0xMS4zIDEwLjMtMy43IDExLjgtMy40IDE5LjYtOS45IDUuNS01LjcgOS41LTEyLjkgMTQuMy0xOCA1LjEtNS41IDEwLTguMSAxNy43LTYuOSA4LjEgMS4yIDE1LjEgNi44IDIxLjkgMTZsMTkuNiAzNS42YzkuNSAxOS45IDQzLjEgNDguNCA0MSA2OC45em0tMS40LTI1LjljLTQuMS02LjYtOS42LTEzLjYtMTQuNC0xOS42IDcuMSAwIDE0LjItMi4yIDE2LjctOC45IDIuMy02LjIgMC0xNC45LTcuNC0yNC45LTEzLjUtMTguMi0zOC4zLTMyLjUtMzguMy0zMi41LTEzLjUtOC40LTIxLjEtMTguNy0yNC42LTI5LjlzLTMtMjMuMy0uMy0zNS4yYzUuMi0yMi45IDE4LjYtNDUuMiAyNy4yLTU5LjIgMi4zLTEuNy44IDMuMi04LjcgMjAuOC04LjUgMTYuMS0yNC40IDUzLjMtMi42IDgyLjQuNi0yMC43IDUuNS00MS44IDEzLjgtNjEuNSAxMi0yNy40IDM3LjMtNzQuOSAzOS4zLTExMi43IDEuMS44IDQuNiAzLjIgNi4yIDQuMSA0LjYgMi43IDguMSA2LjcgMTIuNiAxMC4zIDEyLjQgMTAgMjguNSA5LjIgNDIuNCAxLjIgNi4yLTMuNSAxMS4yLTcuNSAxNS45LTkgOS45LTMuMSAxNy44LTguNiAyMi4zLTE1IDcuNyAzMC40IDI1LjcgNzQuMyAzNy4yIDk1LjcgNi4xIDExLjQgMTguMyAzNS41IDIzLjYgNjQuNiAzLjMtLjEgNyAuNCAxMC45IDEuNCAxMy44LTM1LjctMTEuNy03NC4yLTIzLjMtODQuOS00LjctNC42LTQuOS02LjYtMi42LTYuNSAxMi42IDExLjIgMjkuMiAzMy43IDM1LjIgNTkgMi44IDExLjYgMy4zIDIzLjcuNCAzNS43IDE2LjQgNi44IDM1LjkgMTcuOSAzMC43IDM0LjgtMi4yLS4xLTMuMiAwLTQuMiAwIDMuMi0xMC4xLTMuOS0xNy42LTIyLjgtMjYuMS0xOS42LTguNi0zNi04LjYtMzguMyAxMi41LTEyLjEgNC4yLTE4LjMgMTQuNy0yMS40IDI3LjMtMi44IDExLjItMy42IDI0LjctNC40IDM5LjktLjUgNy43LTMuNiAxOC02LjggMjktMzIuMSAyMi45LTc2LjcgMzIuOS0xMTQuMyA3LjJ6bTI1Ny40LTExLjVjLS45IDE2LjgtNDEuMiAxOS45LTYzLjIgNDYuNS0xMy4yIDE1LjctMjkuNCAyNC40LTQzLjYgMjUuNXMtMjYuNS00LjgtMzMuNy0xOS4zYy00LjctMTEuMS0yLjQtMjMuMSAxLjEtMzYuMyAzLjctMTQuMiA5LjItMjguOCA5LjktNDAuNi44LTE1LjIgMS43LTI4LjUgNC4yLTM4LjcgMi42LTEwLjMgNi42LTE3LjIgMTMuNy0yMS4xLjMtLjIuNy0uMyAxLS41LjggMTMuMiA3LjMgMjYuNiAxOC44IDI5LjUgMTIuNiAzLjMgMzAuNy03LjUgMzguNC0xNi4zIDktLjMgMTUuNy0uOSAyMi42IDUuMSA5LjkgOC41IDcuMSAzMC4zIDE3LjEgNDEuNiAxMC42IDExLjYgMTQgMTkuNSAxMy43IDI0LjZ6TTE3My4zIDE0OC43YzIgMS45IDQuNyA0LjUgOCA3LjEgNi42IDUuMiAxNS44IDEwLjYgMjcuMyAxMC42IDExLjYgMCAyMi41LTUuOSAzMS44LTEwLjggNC45LTIuNiAxMC45LTcgMTQuOC0xMC40czUuOS02LjMgMy4xLTYuNi0yLjYgMi42LTYgNS4xYy00LjQgMy4yLTkuNyA3LjQtMTMuOSA5LjgtNy40IDQuMi0xOS41IDEwLjItMjkuOSAxMC4ycy0xOC43LTQuOC0yNC45LTkuN2MtMy4xLTIuNS01LjctNS03LjctNi45LTEuNS0xLjQtMS45LTQuNi00LjMtNC45LTEuNC0uMS0xLjggMy43IDEuNyA2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUx5ZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4MS4xaDc3Ljh2MjA4LjdjMCAzMy4xIDE1IDUyLjggMjcuMiA2MS0xMi43IDExLjEtNTEuMiAyMC45LTgwLjItMi44QzcuOCAzMzQgMCAzMTAuNyAwIDI4OVY4MS4xem00ODUuOSAxNzMuNXYtMjJoMjMuOHYtNzYuOGgtMjYuMWMtMTAuMS00Ni4zLTUxLjItODAuNy0xMDAuMy04MC43LTU2LjYgMC0xMDIuNyA0Ni0xMDIuNyAxMDIuN1YzNTdjMTYgMi4zIDM1LjQtLjMgNTEuNy0xNCAxNy4xLTE0IDI0LjgtMzcuMiAyNC44LTU5di02LjdoMzguOHYtNzYuOGgtMzguOHYtMjMuM2MwLTM0LjYgNTIuMi0zNC42IDUyLjIgMHY3Ny4xYzAgNTYuNiA0NiAxMDIuNyAxMDIuNyAxMDIuN3YtNzYuNWMtMTQuNSAwLTI2LjEtMTEuNy0yNi4xLTI1Ljl6bS0yOTQuMy05OXYxMTNjMCAxNS40LTIzLjggMTUuNC0yMy44IDB2LTExM0g5MXYxMzIuN2MwIDIzLjggOCA1NCA0NSA2My45IDM3IDkuOCA1OC4yLTEwLjYgNTguMi0xMC42LTIuMSAxMy40LTE0LjUgMjMuMy0zNC45IDI1LjMtMTUuNSAxLjYtMzUuMi0zLjYtNDUtNy44djcwLjNjMjUuMSA3LjUgNTEuNSA5LjggNzcuNiA0LjcgNDcuMS05LjEgNzYuOC00OC40IDc2LjgtMTAwLjhWMTU1LjFoLTc3LjF2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hZ2VudG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ1LjcgMTI3LjlWMzg0bC02My40IDM2LjVWMTY0LjdMMjIzLjggNzMuMSA2NS4yIDE2NC43bC40IDI1NS45TDIuMyAzODRWMTI4LjFMMjI0LjIgMGwyMjEuNSAxMjcuOXpNMjU1LjYgNDIwLjVMMjI0IDQzOC45bC0zMS44LTE4LjJ2LTI1NmwtNjMuMyAzNi42LjEgMjU1LjkgOTQuOSA1NC45IDk1LjEtNTQuOXYtMjU2bC02My40LTM2LjZ2MjU1Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1haWxjaGltcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzAuNjEgMjQzLjUyYTM2LjE1IDM2LjE1IDAgMCAxIDkuMyAwYzEuNjYtMy44MyAxLjk1LTEwLjQzLjQ1LTE3LjYxLTIuMjMtMTAuNjctNS4yNS0xNy4xNC0xMS40OC0xNi4xM3MtNi40NyA4Ljc0LTQuMjQgMTkuNDJjMS4yNiA2IDMuNDkgMTEuMTQgNiAxNC4zMnpNMjc3LjA1IDI1MmM0LjQ3IDIgNy4yIDMuMjYgOC4yOCAyLjEzIDEuODktMS45NC0zLjQ4LTkuMzktMTIuMTItMTMuMDlhMzEuNDQgMzEuNDQgMCAwIDAtMzAuNjEgMy42OGMtMyAyLjE4LTUuODEgNS4yMi01LjQxIDcuMDYuODUgMy43NCAxMC0yLjcxIDIyLjYtMy40OCA3LS40NCAxMi44IDEuNzUgMTcuMjYgMy43MXptLTkgNS4xM2MtOS4wNyAxLjQyLTE1IDYuNTMtMTMuNDcgMTAuMS45LjM0IDEuMTcuODEgNS4yMS0uODFhMzcgMzcgMCAwIDEgMTguNzItMS45NWMyLjkyLjM0IDQuMzEuNTIgNC45NC0uNDkgMS40Ni0yLjIyLTUuNzEtOC0xNS4zOS02Ljg1em01NC4xNyAxNy4xYzMuMzgtNi44Ny0xMC45LTEzLjkzLTE0LjMtN3MxMC45MiAxMy44OCAxNC4zMiA2Ljk3em0xNS42Ni0yMC40N2MtNy42Ni0uMTMtNy45NSAxNS44LS4yNiAxNS45M3M3Ljk4LTE1LjgxLjI4LTE1Ljk2em0tMjE4Ljc5IDc4LjljLTEuMzIuMzEtNiAxLjQ1LTguNDctMi4zNS01LjItOCAxMS4xMS0yMC4zOCAzLTM1Ljc3LTkuMS0xNy40Ny0yNy44Mi0xMy41NC0zNS4wNS01LjU0LTguNzEgOS42LTguNzIgMjMuNTQtNSAyNC4wOCA0LjI3LjU3IDQuMDgtNi40NyA3LjM4LTExLjYzYTEyLjgzIDEyLjgzIDAgMCAxIDE3Ljg1LTMuNzJjMTEuNTkgNy41OSAxLjM3IDE3Ljc2IDIuMjggMjguNjIgMS4zOSAxNi42OCAxOC40MiAxNi4zNyAyMS41OCA5YTIuMDggMi4wOCAwIDAgMC0uMi0yLjMzYy4wMy44OS42OC0xLjMtMy4zNS0uMzl6bTI5OS43Mi0xNy4wN2MtMy4zNS0xMS43My0yLjU3LTkuMjItNi43OC0yMC41MiAyLjQ1LTMuNjcgMTUuMjktMjQtMy4wNy00My4yNS0xMC40LTEwLjkyLTMzLjktMTYuNTQtNDEuMS0xOC41NC0xLjUtMTEuMzkgNC42NS01OC43LTIxLjUyLTgzIDIwLjc5LTIxLjU1IDMzLjc2LTQ1LjI5IDMzLjczLTY1LjY1LS4wNi0zOS4xNi00OC4xNS01MS0xMDcuNDItMjYuNDdsLTEyLjU1IDUuMzNjLS4wNi0uMDUtMjIuNzEtMjIuMjctMjMuMDUtMjIuNTdDMTY5LjUtMTgtNDEuNzcgMjE2LjgxIDI1Ljc4IDI3My44NWwxNC43NiAxMi41MWE3Mi40OSA3Mi40OSAwIDAgMC00LjEgMzMuNWMzLjM2IDMzLjQgMzYgNjAuNDIgNjcuNTMgNjAuMzggNTcuNzMgMTMzLjA2IDI2Ny45IDEzMy4yOCAzMjIuMjkgMyAxLjc0LTQuNDcgOS4xMS0yNC42MSA5LjExLTQyLjM4cy0xMC4wOS0yNS4yNy0xNi41My0yNS4yN3ptLTMxNiA0OC4xNmMtMjIuODItLjYxLTQ3LjQ2LTIxLjE1LTQ5LjkxLTQ1LjUxLTYuMTctNjEuMzEgNzQuMjYtNzUuMjcgODQtMTIuMzMgNC41NCAyOS42NC00LjY3IDU4LjQ5LTM0LjEyIDU3Ljgxek04NC4zIDI0OS41NUM2OS4xNCAyNTIuNSA1NS43OCAyNjEuMDkgNDcuNiAyNzNjLTQuODgtNC4wNy0xNC0xMi0xNS41OS0xNS0xMy4wMS0yNC44NSAxNC4yNC03MyAzMy4zLTEwMC4yMUMxMTIuNDIgOTAuNTYgMTg2LjE5IDM5LjY4IDIyMC4zNiA0OC45MWM1LjU1IDEuNTcgMjMuOTQgMjIuODkgMjMuOTQgMjIuODlzLTM0LjE1IDE4Ljk0LTY1LjggNDUuMzVjLTQyLjY2IDMyLjg1LTc0Ljg5IDgwLjU5LTk0LjIgMTMyLjR6TTMyMy4xOCAzNTAuN3MtMzUuNzQgNS4zLTY5LjUxLTcuMDdjNi4yMS0yMC4xNiAyNyA2LjEgOTYuNC0xMy44MSAxNS4yOS00LjM4IDM1LjM3LTEzIDUxLTI1LjM1YTEwMi44NSAxMDIuODUgMCAwIDEgNy4xMiAyNC4yOGMzLjY2LS42NiAxNC4yNS0uNTIgMTEuNDQgMTguMS0zLjI5IDE5Ljg3LTExLjczIDM2LTI1LjkzIDUwLjg0QTEwNi44NiAxMDYuODYgMCAwIDEgMzYyLjU1IDQyMWExMzIuNDUgMTMyLjQ1IDAgMCAxLTIwLjM0IDguNThjLTUzLjUxIDE3LjQ4LTEwOC4zLTEuNzQtMTI2LTQzYTY2LjMzIDY2LjMzIDAgMCAxLTMuNTUtOS43NGMtNy41My0yNy4yLTEuMTQtNTkuODMgMTguODQtODAuMzcgMS4yMy0xLjMxIDIuNDgtMi44NSAyLjQ4LTQuNzlhOC40NSA4LjQ1IDAgMCAwLTEuOTItNC41NGMtNy0xMC4xMy0zMS4xOS0yNy40LTI2LjMzLTYwLjgzIDMuNS0yNCAyNC40OS00MC45MSA0NC4wNy0zOS45MWw1IC4yOWM4LjQ4LjUgMTUuODkgMS41OSAyMi44OCAxLjg4IDExLjY5LjUgMjIuMi0xLjE5IDM0LjY0LTExLjU2IDQuMi0zLjUgNy41Ny02LjU0IDEzLjI2LTcuNTFhMTcuNDUgMTcuNDUgMCAwIDEgMTMuNiAyLjI0YzEwIDYuNjQgMTEuNCAyMi43MyAxMS45MiAzNC40OS4yOSA2LjcyIDEuMSAyMyAxLjM4IDI3LjYzLjYzIDEwLjY3IDMuNDMgMTIuMTcgOS4xMSAxNCAzLjE5IDEuMDUgNi4xNSAxLjgzIDEwLjUxIDMuMDYgMTMuMjEgMy43MSAyMSA3LjQ4IDI2IDEyLjMxYTE2LjM4IDE2LjM4IDAgMCAxIDQuNzQgOS4yOWMxLjU2IDExLjM3LTguODIgMjUuNC0zNi4zMSAzOC4xNi00Ni43MSAyMS42OC05My42OCAxNC40NS0xMDAuNDggMTMuNjgtMjAuMTUtMi43MS0zMS42MyAyMy4zMi0xOS41NSA0MS4xNSAyMi42NCAzMy40MSAxMjIuNCAyMCAxNTEuMzctMjEuMzUuNjktMSAuMTItMS41OS0uNzMtMS00MS43NyAyOC41OC05Ny4wNiAzOC4yMS0xMjguNDYgMjYtNC43Ny0xLjg1LTE0LjczLTYuNDQtMTUuOTQtMTYuNjcgNDMuNiAxMy40OSA3MSAuNzQgNzEgLjc0czIuMDMtMi43OS0uNTYtMi41M3ptLTY4LjQ3LTUuN3ptLTgzLjQtMTg3LjVjMTYuNzQtMTkuMzUgMzcuMzYtMzYuMTggNTUuODMtNDUuNjNhLjczLjczIDAgMCAxIDEgMWMtMS40NiAyLjY2LTQuMjkgOC4zNC01LjE5IDEyLjY1YS43NS43NSAwIDAgMCAxLjE2Ljc5YzExLjQ5LTcuODMgMzEuNDgtMTYuMjIgNDktMTcuM2EuNzcuNzcgMCAwIDEgLjUyIDEuMzggNDEuODYgNDEuODYgMCAwIDAtNy43MSA3Ljc0Ljc1Ljc1IDAgMCAwIC41OSAxLjE5YzEyLjMxLjA5IDI5LjY2IDQuNCA0MSAxMC43NC43Ni40My4yMiAxLjkxLS42NCAxLjcyLTY5LjU1LTE1Ljk0LTEyMy4wOCAxOC41My0xMzQuNSAyNi44M2EuNzYuNzYgMCAwIDEtMS0xLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYW5kYWxvcmlhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzIuMjcgNTExLjg5Yy0xLTMuMjYtMS42OS0xNS44My0xLjM5LTI0LjU4LjU1LTE1Ljg5IDEtMjQuNzIgMS40LTI4Ljc2LjY0LTYuMiAyLjg3LTIwLjcyIDMuMjgtMjEuMzguNi0xIC40LTI3Ljg3LS4yNC0zMy4xMy0uMzEtMi41OC0uNjMtMTEuOS0uNjktMjAuNzMtLjEzLTE2LjQ3LS41My0yMC4xMi0yLjczLTI0Ljc2LTEuMS0yLjMyLTEuMjMtMy44NC0xLTExLjQzYTkyLjM4IDkyLjM4IDAgMCAwLS4zNC0xMi43MWMtMi0xMy0zLjQ2LTI3LjctMy4yNS0zMy45cy40My03LjE1IDIuMDYtOS42N2MzLjA1LTQuNzEgNi41MS0xNCA4LjYyLTIzLjI3IDIuMjYtOS44NiAzLjg4LTE3LjE4IDQuNTktMjAuNzRhMTA5LjU0IDEwOS41NCAwIDAgMSA0LjQyLTE1LjA1YzIuMjctNi4yNSAyLjQ5LTE1LjM5LjM3LTE1LjM5LS4zIDAtMS4zOCAxLjIyLTIuNDEgMi43MXMtNC43NiA0LjgtOC4yOSA3LjM2Yy04LjM3IDYuMDgtMTEuNyA5LjM5LTEyLjY2IDEyLjU4cy0xIDcuMjMtLjE2IDcuNzZjLjM0LjIxIDEuMjkgMi40IDIuMTEgNC44OGEyOC44MyAyOC44MyAwIDAgMSAuNzIgMTUuMzZjLS4zOSAxLjc3LTEgNS40Ny0xLjQ2IDguMjNzLTEgNi40Ni0xLjI1IDguMjJhOS44NSA5Ljg1IDAgMCAxLTEuNTUgNC4yNmMtMSAxLTEuMTQuOTEtMi4wNS0uNTNhMTQuODcgMTQuODcgMCAwIDEtMS40NC00Ljc1Yy0uMjUtMS43NC0xLjYzLTcuMTEtMy4wOC0xMS45My0zLjI4LTEwLjktMy41Mi0xNi4xNS0xLTIxYTE0LjI0IDE0LjI0IDAgMCAwIDEuNjctNC42MWMwLTIuMzktMi4yLTUuMzItNy40MS05Ljg5LTctNi4xOC04LjYzLTcuOTItMTAuMjMtMTEuMy0xLjcxLTMuNi0zLjA2LTQuMDYtNC41NC0xLjU0LTEuNzggMy0yLjYgOS4xMS0zIDIybC0uMzQgMTIuMTkgMiAyLjI1YzMuMjEgMy43IDEyLjA3IDE2LjQ1IDEzLjc4IDE5LjgzIDMuNDEgNi43NCA0LjM0IDExLjY5IDQuNDEgMjMuNTZzLjk1IDIyLjc1IDIgMjQuNzFjLjM2LjY2LjUxIDEuMzUuMzQgMS41MnMuNDEgMi4wOSAxLjI5IDQuMjdhMzguMTQgMzguMTQgMCAwIDEgMi4wNiA5IDkxIDkxIDAgMCAwIDEuNzEgMTAuMzdjMi4yMyA5LjU2IDIuNzcgMTQuMDggMi4zOSAyMC4xNC0uMiAzLjI3LS41MyAxMS4wNy0uNzMgMTcuMzItMS4zMSA0MS43Ni0xLjg1IDU4LTIgNjEuMjEtLjEyIDItLjM5IDExLjUxLS42IDIxLjA3LS4zNiAxNi4zLTEuMyAyNy4zNy0yLjQyIDI4LjY1LS42NC43My04LjA3LTQuOTEtMTIuNTItOS40OS0zLjc1LTMuODctNC00Ljc5LTIuODMtOS45NS43LTMgMi4yNi0xOC4yOSAzLjMzLTMyLjYyLjM2LTQuNzguODEtMTAuNSAxLTEyLjcxLjgzLTkuMzcgMS42Ni0yMC4zNSAyLjYxLTM0Ljc4LjU2LTguNDYgMS4zMy0xNi40NCAxLjcyLTE3Ljczcy44OS05Ljg5IDEuMTMtMTkuMTFsLjQzLTE2Ljc3LTIuMjYtNC4zYy0xLjcyLTMuMjgtNC44Ny02Ljk0LTEzLjIyLTE1LjM0LTYtNi4wNy0xMS44NC0xMi4zLTEyLjkxLTEzLjg1bC0xLjk1LTIuODEuNzUtMTAuOWMxLjA5LTE1LjcxIDEuMS00OC41NyAwLTU5LjA2bC0uODktOC43LTMuMjgtNC41MmMtNS44Ni04LjA4LTUuOC03Ljc1LTYuMjItMzMuMjctLjEtNi4wNy0uMzgtMTEuNS0uNjMtMTIuMDYtLjgzLTEuODctMy4wNS0yLjY2LTguNTQtMy4wNS04Ljg2LS42Mi0xMS0xLjktMjMuODUtMTQuNTUtNi4xNS02LTEyLjM0LTEyLTEzLjc1LTEzLjE5LTIuODEtMi40Mi0yLjc5LTItLjU2LTkuNjNsMS4zNS00LjY1LTEuNjktM2EzMi4yMiAzMi4yMiAwIDAgMC0yLjU5LTQuMDdjLTEuMzMtMS41MS01LjUtMTAuODktNi0xMy40OWE0LjI0IDQuMjQgMCAwIDEgLjg3LTMuOWMyLjIzLTIuODYgMy40LTUuNjggNC40NS0xMC43MyAyLjMzLTExLjE5IDcuNzQtMjYuMDkgMTAuNi0yOS4yMiAzLjE4LTMuNDcgNy43LTEgOS40MSA1IDEuMzQgNC43OSAxLjM3IDkuNzkuMSAxOC41NWExMDEuMiAxMDEuMiAwIDAgMC0xIDExLjExYzAgNCAuMTkgNC42OSAyLjI1IDcuMzkgMy4zMyA0LjM3IDcuNzMgNy40MSAxNS4yIDEwLjUyYTE4LjY3IDE4LjY3IDAgMCAxIDQuNzIgMi44NWMxMS4xNyAxMC43MiAxOC42MiAxNi4xOCAyMi45NSAxNi44NSA1LjE4LjggOCA0LjU0IDEwIDEzLjM5IDEuMzEgNS42NSA0IDExLjE0IDUuNDYgMTEuMTRhOS4zOCA5LjM4IDAgMCAwIDMuMzMtMS4zOWMyLTEuMjIgMi4yNS0xLjczIDIuMjUtNC4xOGExMzIuODggMTMyLjg4IDAgMCAwLTItMTcuODRjLS4zNy0xLjY2LS43OC00LjA2LS45My01LjM1cy0uNjEtMy44NS0xLTUuNjljLTIuNTUtMTEuMTYtMy42NS0xNS40Ni00LjEtMTYtMS41NS0yLTQuMDgtMTAuMi00LjkzLTE1LjkyLTEuNjQtMTEuMTEtNC0xNC4yMy0xMi45MS0xNy4zOUE0My4xNSA0My4xNSAwIDAgMSAxNjUuMjQgNzhjLTEuMTUtMS00LTMuMjItNi4zNS01LjA2cy00LjQxLTMuNTMtNC42LTMuNzZhMjIuNyAyMi43IDAgMCAwLTIuNjktMmMtNi4yNC00LjIyLTguODQtNy0xMS4yNi0xMmwtMi40NC01LS4yMi0xMy0uMjItMTMgNi45MS02LjU1YzMuOTUtMy43NSA4LjQ4LTcuMzUgMTAuNTktOC40MyAzLjMxLTEuNjkgNC40NS0xLjg5IDExLjM3LTIgOC41My0uMTkgMTAuMTIgMCAxMS42NiAxLjU2czEuMzYgNi40LS4yOSA4LjVhNi42NiA2LjY2IDAgMCAwLTEuMzQgMi4zMmMwIC41OC0yLjYxIDQuOTEtNS40MiA5YTMwLjM5IDMwLjM5IDAgMCAwLTIuMzcgNi44MmMyMC40NCAxMy4zOSAyMS41NSAzLjc3IDE0LjA3IDI5TDE5NCA2Ni45MmMzLjExLTguNjYgNi40Ny0xNy4yNiA4LjYxLTI2LjIyLjI5LTcuNjMtMTItNC4xOS0xNS40LTguNjgtMi4zMy01LjkzIDMuMTMtMTQuMTggNi4wNi0xOS4yIDEuNi0yLjM0IDYuNjItNC43IDguODItNC4xNS44OC4yMiA0LjE2LS4zNSA3LjM3LTEuMjhhNDUuMyA0NS4zIDAgMCAxIDcuNTUtMS42OCAyOS41NyAyOS41NyAwIDAgMCA2LTEuMjljMy42NS0xLjExIDQuNS0xLjE3IDYuMzUtLjRhMjkuNTQgMjkuNTQgMCAwIDAgNS44MiAxLjM2IDE4LjE4IDE4LjE4IDAgMCAxIDYgMS45MSAyMi42NyAyMi42NyAwIDAgMCA1IDIuMTdjMi41MS42OCAzIC41NyA3LjA1LTEuNjdsNC4zNS0yLjRMMjY4LjMyIDVjMTAuNDQtLjQgMTAuODEtLjQ3IDE1LjI2LTIuNjhMMjg4LjE2IDBsMi40NiAxLjQzYzEuNzYgMSAzLjE0IDIuNzMgNC44NSA2IDIuMzYgNC41MSAyLjM4IDQuNTggMS4zNyA3LjM3LS44OCAyLjQ0LS44OSAzLjMtLjEgNi4zOWEzNS43NiAzNS43NiAwIDAgMCAyLjEgNS45MSAxMy41NSAxMy41NSAwIDAgMSAxLjMxIDRjLjMxIDQuMzMgMCA1LjMtMi40MSA2LjkyLTIuMTcgMS40Ny03IDcuOTEtNyA5LjM0YTE0Ljc3IDE0Ljc3IDAgMCAxLTEuMDcgM2MtNSAxMS41MS02Ljc2IDEzLjU2LTE0LjI2IDE3LTkuMiA0LjItMTIuMyA1LjE5LTE2LjIxIDUuMTktMy4xIDAtNCAuMjUtNC41NCAxLjI2YTE4LjMzIDE4LjMzIDAgMCAxLTQuMDkgMy43MSAxMy42MiAxMy42MiAwIDAgMC00LjM4IDQuNzggNS44OSA1Ljg5IDAgMCAxLTIuNDkgMi45MSA2Ljg4IDYuODggMCAwIDAtMi40NSAxLjcxIDY3LjYyIDY3LjYyIDAgMCAxLTcgNS4zOGMtMy4zMyAyLjM0LTYuODcgNS03Ljg3IDZBNy4yNyA3LjI3IDAgMCAxIDIyNCAxMDBhNS43NiA1Ljc2IDAgMCAwLTIuMTMgMS42NWMtMS4zMSAxLjM5LTEuNDkgMi4xMS0xLjE0IDQuNmEzNi40NSAzNi40NSAwIDAgMCAxLjQyIDUuODhjMS4zMiAzLjggMS4zMSA3Ljg2IDAgMTAuNTdzLS44OSA2LjY1IDEuMzUgOS41OWMyIDIuNjMgMi4xNiA0LjU2LjcxIDguODRhMzMuNDUgMzMuNDUgMCAwIDAtMS4wNiA4LjkxYzAgNC44OC4yMiA2LjI4IDEuNDYgOC4zOHMxLjgyIDIuNDggMy4yNCAyLjMyYzItLjIzIDIuMy0xLjA1IDQuNzEtMTIuMTIgMi4xOC0xMCAzLjcxLTExLjkyIDEzLjc2LTE3LjA4IDIuOTQtMS41MSA3LjQ2LTQgMTAtNS40NHM2Ljc5LTMuNjkgOS4zNy00LjkxYTQwLjA5IDQwLjA5IDAgMCAwIDE1LjIyLTExLjY3YzcuMTEtOC43OSAxMC0xNi4yMiAxMi44NS0zMy4zYTE4LjM3IDE4LjM3IDAgMCAxIDIuODYtNy43MyAyMC4zOSAyMC4zOSAwIDAgMCAyLjg5LTcuMzFjMS01LjMgMi44NS05LjA4IDUuNTgtMTEuNTEgNC43LTQuMTggNi0xLjA5IDQuNTkgMTAuODctLjQ2IDMuODYtMS4xIDEwLjMzLTEuNDQgMTQuMzhsLS42MSA3LjM2IDQuNDUgNC4wOSA0LjQ1IDQuMDkuMTEgOC40MmMuMDYgNC42My40NyA5LjUzLjkyIDEwLjg5bC44MiAyLjQ3LTYuNDMgNi4yOGMtOC41NCA4LjMzLTEyLjg4IDEzLjkzLTE2Ljc2IDIxLjYxLTEuNzcgMy40OS0zLjc0IDcuMTEtNC4zOCA4LTIuMTggMy4xMS02LjQ2IDEzLTguNzYgMjAuMjZsLTIuMjkgNy4yMi03IDYuNDljLTMuODMgMy41Ny04IDcuMjUtOS4xNyA4LjE3LTMuMDUgMi4zMi00LjI2IDUuMTUtNC4yNiAxMGExNC42MiAxNC42MiAwIDAgMCAxLjU5IDcuMjYgNDIgNDIgMCAwIDEgMi4wOSA0LjgzIDkuMjggOS4yOCAwIDAgMCAxLjU3IDIuODljMS40IDEuNTkgMS45MiAxNi4xMi44MyAyMy4yMi0uNjggNC40OC0zLjYzIDEyLTQuNyAxMi0xLjc5IDAtNC4wNiA5LjI3LTUuMDcgMjAuNzQtLjE4IDItLjYyIDUuOTQtMSA4LjdzLTEgMTAtMS4zNSAxNi4wNWMtLjc3IDEyLjIyLS4xOSAxOC43NyAyIDIzLjE1IDMuNDEgNi42OS41MiAxMi42OS0xMSAyMi44NGwtNCAzLjQ5LjA3IDUuMTlhNDAuODEgNDAuODEgMCAwIDAgMS4xNCA4Ljg3YzQuNjEgMTYgNC43MyAxNi45MiA0LjM4IDM3LjEzLS40NiAyNi40LS4yNiA0MC4yNy42MyA0NC4xNWE2MS4zMSA2MS4zMSAwIDAgMSAxLjA4IDdjLjE3IDIgLjY2IDUuMzMgMS4wOCA3LjM2LjQ3IDIuMjYuNzggMTEgLjc5IDIyLjc0djE5LjA2bC0xLjgxIDIuNjNjLTIuNzEgMy45MS0xNS4xMSAxMy41NC0xNS40OSAxMi4yOXptMjkuNTMtNDUuMTFjLS4xOC0uMy0uMzMtNi44Ny0uMzMtMTQuNTkgMC0xNC4wNi0uODktMjcuNTQtMi4yNi0zNC40NS0uNC0yLS44MS05LjctLjktMTcuMDYtLjE1LTExLjkzLTEuNC0yNC4zNy0yLjY0LTI2LjM4LS42Ni0xLjA3LTMtMTcuNjYtMy0yMS4zIDAtNC4yMyAxLTYgNS4yOC05LjEzczQuODYtMy4xNCA1LjQ4LS43MmMuMjggMS4xIDEuNDUgNS42MiAyLjYgMTAgMy45MyAxNS4xMiA0LjE0IDE2LjI3IDQuMDUgMjEuNzQtLjEgNS43OC0uMTMgNi4xMy0xLjc0IDE3LjczLTEgNy4wNy0xLjE3IDEyLjM5LTEgMjguNDMuMTcgMTkuNC0uNjQgMzUuNzMtMiA0MS4yNy0uNzEgMi43OC0yLjggNS40OC0zLjQzIDQuNDN6bS03MS0zNy41OGExMDEgMTAxIDAgMCAxLTEuNzMtMTAuNzkgMTAwLjUgMTAwLjUgMCAwIDAtMS43My0xMC43OSAzNy41MyAzNy41MyAwIDAgMS0xLTYuNDljLS4zMS0zLjE5LS45MS03LjQ2LTEuMzMtOS40OC0xLTQuNzktMy4zNS0xOS4zNS0zLjQyLTIxLjA3IDAtLjc0LS4zNC00LjA1LS43LTcuMzYtLjY3LTYuMjEtLjg0LTI3LjY3LS4yMi0yOC4yOSAxLTEgNi42MyAyLjc2IDExLjMzIDcuNDNsNS4yOCA1LjI1LS40NSA2LjQ3Yy0uMjUgMy41Ni0uNiAxMC4yMy0uNzggMTQuODNzLS40OSA5Ljg3LS42NyAxMS43MS0uNjEgOS4zNi0uOTQgMTYuNzJjLS43OSAxNy40MS0xLjk0IDMxLjI5LTIuNjUgMzJhLjYyLjYyIDAgMCAxLTEtLjE0em0tODcuMTgtMjY2LjU5YzIxLjA3IDEyLjc5IDE3Ljg0IDE0LjE1IDI4LjQ5IDE3LjY2IDEzIDQuMjkgMTguODcgNy4xMyAyMy4xNSAxNi44N0MxMTEuNiAyMzMuMjggODYuMjUgMjU1IDc4LjU1IDI2OGMtMzEgNTItNiAxMDEuNTkgNjIuNzUgODcuMjEtMTQuMTggMjkuMjMtNzggMjguNjMtOTguNjgtNC45LTI0LjY4LTM5Ljk1LTIyLjA5LTExOC4zIDYxLTE4Ny42NnptMjEwLjc5IDE3OWM1Ni42NiA2Ljg4IDgyLjMyLTM3Ljc0IDQ2LjU0LTg5LjIzIDAgMC0yNi44Ny0yOS4zNC02NC4yOC02OCAzLTE1LjQ1IDkuNDktMzIuMTIgMzAuNTctNTMuODIgODkuMiA2My41MSA5MiAxNDEuNjEgOTIuNDYgMTQ5LjM2IDQuMyA3MC42NC03OC43IDkxLjE4LTEwNS4yOSA2MS43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFya2Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTkzLjggNTkuMUg0Ni4yQzIwLjcgNTkuMSAwIDc5LjggMCAxMDUuMnYzMDEuNWMwIDI1LjUgMjAuNyA0Ni4yIDQ2LjIgNDYuMmg1NDcuN2MyNS41IDAgNDYuMi0yMC43IDQ2LjEtNDYuMVYxMDUuMmMwLTI1LjQtMjAuNy00Ni4xLTQ2LjItNDYuMXpNMzM4LjUgMzYwLjZIMjc3di0xMjBsLTYxLjUgNzYuOS02MS41LTc2Ljl2MTIwSDkyLjNWMTUxLjRoNjEuNWw2MS41IDc2LjkgNjEuNS03Ni45aDYxLjV2MjA5LjJ6bTEzNS4zIDMuMUwzODEuNSAyNTZINDQzVjE1MS40aDYxLjVWMjU2SDU2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFzdG9kb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMzIDE3OS4xMWMwLTk3LjItNjMuNzEtMTI1LjctNjMuNzEtMTI1LjctNjIuNTItMjguNy0yMjguNTYtMjguNC0yOTAuNDggMCAwIDAtNjMuNzIgMjguNS02My43MiAxMjUuNyAwIDExNS43LTYuNiAyNTkuNCAxMDUuNjMgMjg5LjEgNDAuNTEgMTAuNyA3NS4zMiAxMyAxMDMuMzMgMTEuNCA1MC44MS0yLjggNzkuMzItMTguMSA3OS4zMi0xOC4xbC0xLjctMzYuOXMtMzYuMzEgMTEuNC03Ny4xMiAxMC4xYy00MC40MS0xLjQtODMtNC40LTg5LjYzLTU0YTEwMi41NCAxMDIuNTQgMCAwIDEtLjktMTMuOWM4NS42MyAyMC45IDE1OC42NSA5LjEgMTc4Ljc1IDYuNyA1Ni4xMi02LjcgMTA1LTQxLjMgMTExLjIzLTcyLjkgOS44LTQ5LjggOS0xMjEuNSA5LTEyMS41em0tNzUuMTIgMTI1LjJoLTQ2LjYzdi0xMTQuMmMwLTQ5LjctNjQtNTEuNi02NCA2Ljl2NjIuNWgtNDYuMzNWMTk3YzAtNTguNS02NC01Ni42LTY0LTYuOXYxMTQuMkg5MC4xOWMwLTEyMi4xLTUuMi0xNDcuOSAxOC40MS0xNzUgMjUuOS0yOC45IDc5LjgyLTMwLjggMTAzLjgzIDYuMWwxMS42IDE5LjUgMTEuNi0xOS41YzI0LjExLTM3LjEgNzguMTItMzQuOCAxMDMuODMtNi4xIDIzLjcxIDI3LjMgMTguNCA1MyAxOC40IDE3NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWF4Y2RuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2MS4xIDQ0Mi43aC05Ny40TDQxNS42IDIwMGMyLjMtMTAuMi45LTE5LjUtNC40LTI1LjctNS02LjEtMTMuNy05LjYtMjQuMi05LjZoLTQ5LjNsLTU5LjUgMjc4aC05Ny40bDU5LjUtMjc4aC04My40bC01OS41IDI3OEgwbDU5LjUtMjc4LTQ0LjYtOTUuNEgzODdjMzkuNCAwIDc1LjMgMTYuMyA5OC4zIDQ0LjkgMjMuMyAyOC42IDMxLjggNjcuNCAyMy42IDEwNS45bC00Ny44IDIyMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZGIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMzcgMTYwLjQxTDcgMzUyaDQzLjkxbDUuNTktNzkuODNMODQuNDMgMzUyaDQ0LjcxbDI1LjU0LTc3LjQzIDQuNzkgNzcuNDNIMjA1bC0xMi43OS0xOTEuNTlIMTQ2LjdMMTA2IDI3Ny43NCA2My42NyAxNjAuNDF6bTI4MSAwaC00Ny45VjM1Mmg0Ny45czk1IC44IDk0LjItOTUuNzljLS43OC05NC4yMS05NC4xOC05NS43OC05NC4xOC05NS43OHptLTEuMiAxNDYuNDZWMjA0Ljc4czQ2IDQuMjcgNDYuOCA1MC41Ny00Ni43OCA1MS41NC00Ni43OCA1MS41NHptMjM4LjI5LTc0LjI0YTU2LjE2IDU2LjE2IDAgMCAwIDgtMzguMzFjLTUuMzQtMzUuNzYtNTUuMDgtMzQuMzItNTUuMDgtMzQuMzJoLTUxLjl2MTkxLjU4SDQ4MnM4NyA0Ljc5IDg3LTYzLjg1YzAtNDMuMTQtMzMuNTItNTUuMDgtMzMuNTItNTUuMDh6bS01MS45LTMxLjk0czEzLjU3LTEuNTkgMTYgOS41OWMxLjQzIDYuNjYtNCAxMi00IDEyaC0xMnYtMjEuNTd6bS0uMSAxMDkuNDZsLjEtMjQuOTJWMjY3aC4wOHM0MS41OC00LjczIDQxLjE5IDIyLjQzYy0uMzMgMjUuNjUtNDEuMzUgMjAuNzQtNDEuMzUgMjAuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZGFwcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE4LjMgMjM4LjRjMy41LTEyLjUgNi45LTMzLjYgMTMuMi0zMy42IDguMyAxLjggOS42IDIzLjQgMTguNiAzNi42IDQuNi0yMy41IDUuMy04NS4xIDE0LjEtODYuNyA5LS43IDE5LjcgNjYuNSAyMiA3Ny41IDkuOSA0LjEgNDguOSA2LjYgNDguOSA2LjYgMS45IDcuMy0yNCA3LjYtNDAgNy44LTQuNiAxNC44LTUuNCAyNy43LTExLjQgMjgtNC43LjItOC4yLTI4LjgtMTcuNS00OS42bC05LjQgNjUuNWMtNC40IDEzLTE1LjUtMjIuNS0yMS45LTM5LjMtMy4zLS4xLTYyLjQtMS42LTQ3LjYtNy44bDMxLTV6TTIyOCA0NDhjMjEuMiAwIDIxLjItMzIgMC0zMkg5MmMtMjEuMiAwLTIxLjIgMzIgMCAzMmgxMzZ6bS0yNCA2NGMyMS4yIDAgMjEuMi0zMiAwLTMyaC04OGMtMjEuMiAwLTIxLjIgMzIgMCAzMmg4OHptMzQuMi0xNDEuNWMzLjItMTguOSA1LjItMzYuNCAxMS45LTQ4LjggNy45LTE0LjcgMTYuMS0yOC4xIDI0LTQxIDI0LjYtNDAuNCA0NS45LTc1LjIgNDUuOS0xMjUuNUMzMjAgNjkuNiAyNDguMiAwIDE2MCAwUzAgNjkuNiAwIDE1NS4yYzAgNTAuMiAyMS4zIDg1LjEgNDUuOSAxMjUuNSA3LjkgMTIuOSAxNiAyNi4zIDI0IDQxIDYuNyAxMi41IDguNyAyOS44IDExLjkgNDguOSAzLjUgMjEgMzYuMSAxNS43IDMyLjYtNS4xLTMuNi0yMS43LTUuNi00MC43LTE1LjMtNTguNkM2Ni41IDI0Ni41IDMzIDIxMS4zIDMzIDE1NS4yIDMzIDg3LjMgOTAgMzIgMTYwIDMyczEyNyA1NS4zIDEyNyAxMjMuMmMwIDU2LjEtMzMuNSA5MS4zLTY2LjEgMTUxLjYtOS43IDE4LTExLjcgMzcuNC0xNS4zIDU4LjYtMy40IDIwLjYgMjkgMjYuNCAzMi42IDUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVkaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4MC41LDc0LjI2MkM4MC44MTMsNzQuMjYyLDAsMTU1LjYzMywwLDI1NlM4MC44MTksNDM3LjczOCwxODAuNSw0MzcuNzM4LDM2MSwzNTYuMzczLDM2MSwyNTYsMjgwLjE5MSw3NC4yNjIsMTgwLjUsNzQuMjYyWm0yODguMjUsMTAuNjQ2Yy00OS44NDUsMC05MC4yNDUsNzYuNjE5LTkwLjI0NSwxNzEuMDk1czQwLjQwNiwxNzEuMSw5MC4yNTEsMTcxLjEsOTAuMjUxLTc2LjYxOSw5MC4yNTEtMTcxLjFINTU5QzU1OSwxNjEuNSw1MTguNiw4NC45MDgsNDY4Ljc1Miw4NC45MDhabTEzOS41MDYsMTcuODIxYy0xNy41MjYsMC0zMS43MzUsNjguNjI4LTMxLjczNSwxNTMuMjc0czE0LjIsMTUzLjI3NCwzMS43MzUsMTUzLjI3NFM2NDAsMzQwLjYzMSw2NDAsMjU2QzY0MCwxNzEuMzUxLDYyNS43ODUsMTAyLjcyOSw2MDguMjU4LDEwMi43MjlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZHJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NDQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMy43IDI1NmMwIDEyMS44IDgzLjkgMjIyLjggMTkzLjUgMjQxLjEtMTguNyA0LjUtMzguMiA2LjktNTguMiA2LjlDMTExLjQgNTA0IDAgMzkzIDAgMjU2UzExMS40IDggMjQ4LjkgOGMyMC4xIDAgMzkuNiAyLjQgNTguMiA2LjlDMTk3LjUgMzMuMiAxMTMuNyAxMzQuMiAxMTMuNyAyNTZtMjk3LjQgMTAwLjNjLTc3LjcgNTUuNC0xNzkuNiA0Ny41LTI0MC40LTE0LjYgNS41IDE0LjEgMTIuNyAyNy43IDIxLjcgNDAuNSA2MS42IDg4LjIgMTgyLjQgMTA5LjMgMjY5LjcgNDcgODcuMy02Mi4zIDEwOC4xLTE4NC4zIDQ2LjUtMjcyLjYtOS0xMi45LTE5LjMtMjQuMy0zMC41LTM0LjIgMzcuNCA3OC44IDEwLjcgMTc4LjUtNjcgMjMzLjltLTIxOC44LTI0NGMtMS40IDEtMi43IDIuMS00IDMuMSA2NC4zLTE3LjggMTM1LjkgNCAxNzguOSA2MC41IDM1LjcgNDcgNDIuOSAxMDYuNiAyNC40IDE1OCA1Ni43LTU2LjIgNjcuNi0xNDIuMSAyMi4zLTIwMS44LTUwLTY1LjUtMTQ5LjEtNzQuNC0yMjEuNi0xOS44TTI5NiAyMjRjLTQuNCAwLTgtMy42LTgtOHYtNDBjMC00LjQtMy42LTgtOC04aC00OGMtNC40IDAtOCAzLjYtOCA4djQwYzAgNC40LTMuNiA4LTggOGgtNDBjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDhoNDBjNC40IDAgOCAzLjYgOCA4djQwYzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LTh2LTQwYzAtNC40IDMuNi04IDgtOGg0MGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOGgtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZXR1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05OSA0MTQuM2MxLjEgNS43LTIuMyAxMS4xLTggMTIuMy01LjQgMS4xLTEwLjktMi4zLTEyLTgtMS4xLTUuNCAyLjMtMTEuMSA3LjctMTIuMyA1LjQtMS4yIDExLjEgMi4zIDEyLjMgOHptMTQzLjEgNzEuNGMtNi4zIDQuNi04IDEzLjQtMy43IDIwIDQuNiA2LjYgMTMuNCA4LjMgMjAgMy43IDYuMy00LjYgOC0xMy40IDMuNC0yMC00LjItNi41LTEzLjEtOC4zLTE5LjctMy43em0tODYtNDYyLjNjNi4zLTEuNCAxMC4zLTcuNyA4LjktMTQtMS4xLTYuNi03LjQtMTAuNi0xMy43LTkuMS02LjMgMS40LTEwLjMgNy43LTkuMSAxNCAxLjQgNi42IDcuNiAxMC42IDEzLjkgOS4xek0zNC40IDIyNi4zYy0xMC02LjktMjMuNy00LjMtMzAuNiA2LTYuOSAxMC00LjMgMjQgNS43IDMwLjkgMTAgNy4xIDIzLjcgNC42IDMwLjYtNS43IDYuOS0xMC40IDQuMy0yNC4xLTUuNy0zMS4yem0yNzItMTcwLjljMTAuNi02LjMgMTMuNy0yMCA3LjctMzAuMy02LjMtMTAuNi0xOS43LTE0LTMwLTcuN3MtMTMuNyAyMC03LjQgMzAuNmM2IDEwLjMgMTkuNCAxMy43IDI5LjcgNy40em0tMTkxLjEgNThjNy43LTUuNCA5LjQtMTYgNC4zLTIzLjdzLTE1LjctOS40LTIzLjEtNC4zYy03LjcgNS40LTkuNCAxNi00LjMgMjMuNyA1LjEgNy44IDE1LjYgOS41IDIzLjEgNC4zem0zNzIuMyAxNTZjLTcuNCAxLjctMTIuMyA5LjEtMTAuNiAxNi45IDEuNCA3LjQgOC45IDEyLjMgMTYuMyAxMC42IDcuNC0xLjQgMTIuMy04LjkgMTAuNi0xNi42LTEuNS03LjQtOC45LTEyLjMtMTYuMy0xMC45em0zOS43LTU2LjhjLTEuMS01LjctNi42LTkuMS0xMi04LTUuNyAxLjEtOS4xIDYuOS04IDEyLjYgMS4xIDUuNCA2LjYgOS4xIDEyLjMgOCA1LjQtMS41IDkuMS02LjkgNy43LTEyLjZ6TTQ0NyAxMzguOWMtOC42IDYtMTAuNiAxNy43LTQuOSAyNi4zIDUuNyA4LjYgMTcuNCAxMC42IDI2IDQuOSA4LjMtNiAxMC4zLTE3LjcgNC42LTI2LjMtNS43LTguNy0xNy40LTEwLjktMjUuNy00Ljl6bS02LjMgMTM5LjRjMjYuMyA0My4xIDE1LjEgMTAwLTI2LjMgMTI5LjEtMTcuNCAxMi4zLTM3LjEgMTcuNy01Ni45IDE3LjEtMTIgNDcuMS02OS40IDY0LjYtMTA1LjEgMzIuNi0xLjEuOS0yLjYgMS43LTMuNyAyLjktMzkuMSAyNy4xLTkyLjMgMTcuNC0xMTkuNC0yMi4zLTkuNy0xNC4zLTE0LjYtMzAuNi0xNS4xLTQ2LjktNjUuNC0xMC45LTkwLTk0LTQxLjEtMTM5LjctMjguMy00Ni45LjYtMTA3LjQgNTMuNC0xMTQuOUMxNTEuNiA3MCAyMzQuMSAzOC42IDI5MC4xIDgyYzY3LjQtMjIuMyAxMzYuMyAyOS40IDEzMC45IDEwMS4xIDQxLjEgMTIuNiA1Mi44IDY2LjkgMTkuNyA5NS4yem0tNzAgNzQuM2MtMy4xLTIwLjYtNDAuOS00LjYtNDMuMS0yNy4xLTMuMS0zMiA0My43LTEwMS4xIDQwLTEyOC0zLjQtMjQtMTkuNC0yOS4xLTMzLjQtMjkuNC0xMy40LS4zLTE2LjkgMi0yMS40IDQuNi0yLjkgMS43LTYuNiA0LjktMTEuNy0uMy02LjMtNi0xMS4xLTExLjctMTkuNC0xMi45LTEyLjMtMi0xNy43IDItMjYuNiA5LjctMy40IDIuOS0xMiAxMi45LTIwIDkuMS0zLjQtMS43LTE1LjQtNy43LTI0LTExLjQtMTYuMy03LjEtNDAgNC42LTQ4LjYgMjAtMTIuOSAyMi45LTM4IDExMy4xLTQxLjcgMTI1LjEtOC42IDI2LjYgMTAuOSA0OC42IDM2LjkgNDcuMSAxMS4xLS42IDE4LjMtNC42IDI1LjQtMTcuNCA0LTcuNCA0MS43LTEwNy43IDQ0LjYtMTEyLjYgMi0zLjQgOC45LTggMTQuNi01LjEgNS43IDMuMSA2LjkgOS40IDYgMTUuMS0xLjEgOS43LTI4IDcwLjktMjguOSA3Ny43LTMuNCAyMi45IDI2LjkgMjYuNiAzOC42IDQgMy43LTcuMSA0NS43LTkyLjYgNDkuNC05OC4zIDQuMy02LjMgNy40LTguMyAxMS43LTggMy4xIDAgOC4zLjkgNy4xIDEwLjktMS40IDkuNC0zNS4xIDcyLjMtMzguOSA4Ny43LTQuNiAyMC42IDYuNiA0MS40IDI0LjkgNTAuNiAxMS40IDUuNyA2Mi41IDE1LjcgNTguNS0xMS4xem01LjcgOTIuM2MtMTAuMyA3LjQtMTIuOSAyMi01LjcgMzIuNiA3LjEgMTAuNiAyMS40IDEzLjEgMzIgNiAxMC42LTcuNCAxMy4xLTIyIDYtMzIuNi03LjQtMTAuNi0yMS43LTEzLjUtMzIuMy02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWdhcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTQuNSAyMDkuNnY2Ni4ybDMzLjUgMzMuNSAzMy4zLTMzLjN2LTY2LjRsLTMzLjQtMzMuNHpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMTQ1LjEgNDE0LjRMMzY3IDQ0MS42bC0yNi0xOS4ydi02NS41bC0zMy40LTMzLjQtMzMuNCAzMy40djY1LjVMMjQ4IDQ0MS42bC0yNi4xLTE5LjJ2LTY1LjVsLTMzLjQtMzMuNC0zMy41IDMzLjR2NjUuNWwtMjYuMSAxOS4yLTI2LjEtMTkuMnYtODdsNTkuNS01OS41VjE4OGw1OS41LTU5LjVWNTIuOWwyNi4xLTE5LjJMMjc0IDUyLjl2NzUuNmw1OS41IDU5LjV2ODcuNmw1OS43IDU5Ljd2ODcuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVuZGVsZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0LjYgMzI1LjJjLTEyLjMtMTIuNC0yOS43LTE5LjItNDguNC0xNy4yLTQzLjMtMS00OS43LTM0LjktMzcuNS05OC44IDIyLjgtNTcuNS0xNC45LTEzMS41LTg3LjQtMTMwLjgtNzcuNC43LTgxLjcgODItMTMwLjkgODItNDguMSAwLTU0LTgxLjMtMTMwLjktODItNzIuOS0uOC0xMTAuMSA3My4zLTg3LjQgMTMwLjggMTIuMiA2My45IDUuOCA5Ny44LTM3LjUgOTguOC0yMS4yLTIuMy0zNyA2LjUtNTMgMjIuNS0xOS45IDE5LjctMTkuMyA5NC44IDQyLjYgMTAyLjYgNDcuMSA1LjkgODEuNi00Mi45IDYxLjItODcuOC00Ny4zLTEwMy43IDE4NS45LTEwNi4xIDE0Ni41LTguMi0uMS4xLS4yLjItLjMuNC0yNi44IDQyLjggNi44IDk3LjQgNTguOCA5NS4yIDUyLjEgMi4xIDg1LjQtNTIuNiA1OC44LTk1LjItLjEtLjItLjItLjMtLjMtLjQtMzkuNC05Ny45IDE5My44LTk1LjUgMTQ2LjUgOC4yLTQuNiAxMC02LjcgMjEuMy01LjcgMzMgNC45IDUzLjQgNjguNyA3NC4xIDEwNC45IDM1LjIgMTcuOC0xNC44IDIzLjEtNjUuNiAwLTg4LjN6bS0zMDMuOS0xOS4xaC0uNmMtNDMuNCAwLTYyLjgtMzcuNS02Mi44LTYyLjggMC0zNC43IDI4LjItNjIuOCA2Mi44LTYyLjhoLjZjMzQuNyAwIDYyLjggMjguMSA2Mi44IDYyLjggMCAyNS0xOS4yIDYyLjgtNjIuOCA2Mi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAzMTcuOUM2NDAgNDA5LjIgNjAwLjYgNDY2LjQgNTI5LjcgNDY2LjRDNDY3LjEgNDY2LjQgNDMzLjkgNDMxLjggMzcyLjggMzI5LjhMMzQxLjQgMjc3LjJDMzMzLjEgMjY0LjcgMzI2LjkgMjUzIDMyMC4yIDI0Mi4yQzMwMC4xIDI3NiAyNzMuMSAzMjUuMiAyNzMuMSAzMjUuMkMyMDYuMSA0NDEuOCAxNjguNSA0NjYuNCAxMTYuMiA0NjYuNEM0My40MiA0NjYuNCAwIDQwOS4xIDAgMzIwLjVDMCAxNzcuNSA3OS43OCA0Mi40IDE4My45IDQyLjRDMjM0LjEgNDIuNCAyNzcuNyA2Ny4wOCAzMjguNyAxMzEuOUMzNjUuOCA4MS44IDQwNi44IDQyLjQgNDU5LjMgNDIuNEM1NTguNCA0Mi40IDY0MCAxNjguMSA2NDAgMzE3LjlINjQwek0yODcuNCAxOTIuMkMyNDQuNSAxMzAuMSAyMTYuNSAxMTEuNyAxODMgMTExLjdDMTIxLjEgMTExLjcgNjkuMjIgMjE3LjggNjkuMjIgMzIxLjdDNjkuMjIgMzcwLjIgODcuNyAzOTcuNCAxMTguOCAzOTcuNEMxNDkgMzk3LjQgMTY3LjggMzc4LjQgMjIyIDI5My42QzIyMiAyOTMuNiAyNDYuNyAyNTQuNSAyODcuNCAxOTIuMlYxOTIuMnpNNTMxLjIgMzk3LjRDNTYzLjQgMzk3LjQgNTc4LjEgMzY5LjkgNTc4LjEgMzIyLjVDNTc4LjEgMTk4LjMgNTIzLjggOTcuMDggNDU0LjkgOTcuMDhDNDIxLjcgOTcuMDggMzkzLjggMTIzIDM2MCAxNzUuMUMzNjkuNCAxODguOSAzNzkuMSAyMDQuMSAzODkuMyAyMjAuNUw0MjYuOCAyODIuOUM0ODUuNSAzNzcgNTAwLjMgMzk3LjQgNTMxLjIgMzk3LjRMNTMxLjIgMzk3LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvYmxvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTkuMzYsMzYyLjIzYzI5LjQ5LTM0LjY5LDQ3LjEtNzguMzQsNDcuMS0xMjUuNzlDNDQ2LjQ2LDEyMy40OSwzNDYuODYsMzIsMjI0LDMyUzEuNTQsMTIzLjQ5LDEuNTQsMjM2LjQ0LDEwMS4xNCw0NDAuODcsMjI0LDQ0MC44N2EyMzkuMjgsMjM5LjI4LDAsMCwwLDc5LjQ0LTEzLjQ0LDcuMTgsNy4xOCwwLDAsMSw4LjEyLDIuNTZjMTguNTgsMjUuMDksNDcuNjEsNDIuNzQsNzkuODksNDkuOTJhNC40Miw0LjQyLDAsMCwwLDUuMjItMy40Myw0LjM3LDQuMzcsMCwwLDAtLjg1LTMuNjIsODcsODcsMCwwLDEsMy42OS0xMTAuNjlaTTMyOS41MiwyMTIuNGwtNTcuMyw0My40OUwyOTMsMzI0Ljc1YTYuNSw2LjUsMCwwLDEtOS45NCw3LjIyTDIyNCwyOTAuOTIsMTY0Ljk0LDMzMmE2LjUxLDYuNTEsMCwwLDEtOS45NS03LjIybDIwLjc5LTY4Ljg2LTU3LjMtNDMuNDlhNi41LDYuNSwwLDAsMSwzLjgtMTEuNjhsNzEuODgtMS41MSwyMy42Ni02Ny45MmE2LjUsNi41LDAsMCwxLDEyLjI4LDBsMjMuNjYsNjcuOTIsNzEuODgsMS41MWE2LjUsNi41LDAsMCwxLDMuODgsMTEuNjhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3Jvc29mdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyaDIxNC42djIxNC42SDBWMzJ6bTIzMy40IDBINDQ4djIxNC42SDIzMy40VjMyek0wIDI2NS40aDIxNC42VjQ4MEgwVjI2NS40em0yMzMuNCAwSDQ0OFY0ODBIMjMzLjRWMjY1LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pbnRiaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzMuMiA1MTJWNDM4LjlIMzY1LjdWMzY1LjdoNzMuMlYyMTkuNEg1MTJWMEgyOTIuNlY3My4xSDE0Ni4zdjczLjJINzMuMlY0MzguOUgwVjUxMkg3My4yem03My4xLTIxOS40aDczLjJ2NzMuMUgxNDYuM1YyOTIuNnptNzMuMi03My4xaDczLjF2NzMuMUgyMTkuNFYyMTkuNHptNzMuMSAwVjE0Ni4zaDczLjJ2NzMuMUgyOTIuNnpNMzY1LjcgNzMuMWg3My4ydjczLjJIMzY1LjdWNzMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWl4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjR2MzQ4LjljMCA1Ni4yIDg4IDU4LjEgODggMFYxNzQuM2M3LjktNTIuOSA4OC01MC40IDg4IDYuNXYxNzUuM2MwIDU3LjkgOTYgNTggOTYgMFYyNDBjNS4zLTU0LjcgODgtNTIuNSA4OCA0LjN2MjMuOGMwIDU5LjkgODggNTYuNiA4OCAwVjY0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1peGNsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMi45OCAzNDYuNTY2SDE3OS43ODlWMTk1LjExNEwxODUuOTczIDE3My40N0gxNzUuMjYyTDEzNy4xMjcgMzQ2LjU2Nkg3Ni4xMDY5TDM3LjczMjMgMTczLjQ3SDI3LjI3NkwzMy4xOTEzIDE5NS4xMTRWMzQ2LjU2NkgwVjE2NUg2NS42NTA2TDEwMi4yNDggMzM4LjA5NkgxMTAuNzQ3TDE0Ny4zMjkgMTY1SDIxMi45OEwyMTIuOTggMzQ2LjU2NlpNNTQ0LjQ1OSAyODMuNTg5TDQ1OC40MzQgMzQ1LjY1NVYzMDcuNTM0TDUzMS4zMjkgMjU1Ljc3Nkw0NTguNDM0IDIwNC4wMTdWMTY1Ljg5Nkw1NDQuNDU5IDIyOC4yMzFINTUzLjcyMUw2NDAgMTY1Ljg5NlYyMDQuMDE3TDU2Ni44NjYgMjU1Ljc3Nkw2NDAgMzA3LjU0OVYzNDUuNjU1TDU1My43MjEgMjgzLjU4OUg1NDQuNDU5Wk00MzAuMTU3IDI3Mi4zMTFIMjQ4LjExM1YyMzkuMjU1SDQzMC4xNTdWMjcyLjMxMVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWl4ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE0LjU3LDc2LjA3YTQ1LjcxLDQ1LjcxLDAsMCwwLTY3LjUxLTYuNDFjLTE3LjU4LDE2LjE4LTE5LDQzLjUyLTQuNzUsNjIuNzdsOTEuNzgsMTIzTDQxLjc2LDM3OS41OGMtMTQuMjMsMTkuMjUtMTMuMTEsNDYuNTksNC43NCw2Mi43N0E0NS43MSw0NS43MSwwLDAsMCwxMTQsNDM1Ljk0TDI0Mi44OSwyNjIuN2ExMi4xNCwxMi4xNCwwLDAsMCwwLTE0LjIzWk00NzAuMjQsMzc5LjU4LDM3Ny45MSwyNTUuNDVsOTEuNzgtMTIzYzE0LjIyLTE5LjI1LDEyLjgzLTQ2LjU5LTQuNzUtNjIuNzdhNDUuNzEsNDUuNzEsMCwwLDAtNjcuNTEsNi40MWwtMTI4LDE3Mi4xMmExMi4xNCwxMi4xNCwwLDAsMCwwLDE0LjIzTDM5OCw0MzUuOTRhNDUuNzEsNDUuNzEsMCwwLDAsNjcuNTEsNi40MUM0ODMuMzUsNDI2LjE3LDQ4NC40NywzOTguODMsNDcwLjI0LDM3OS41OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWl6dW5pIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5LjEgMCAyNTZjMCAxMzcgMTExIDI0OCAyNDggMjQ4czI0OC0xMTEgMjQ4LTI0OEM0OTYgMTE5LjEgMzg1IDggMjQ4IDh6bS04MCAzNTEuOWMtMzEuNCAxMC42LTU4LjggMjcuMy04MCA0OC4yVjEzNmMwLTIyLjEgMTcuOS00MCA0MC00MHM0MCAxNy45IDQwIDQwdjIyMy45em0xMjAtOS45Yy0xMi45LTItMjYuMi0zLjEtMzkuOC0zLjEtMTMuOCAwLTI3LjIgMS4xLTQwLjIgMy4xVjEzNmMwLTIyLjEgMTcuOS00MCA0MC00MHM0MCAxNy45IDQwIDQwdjIxNHptMTIwIDU3LjdjLTIxLjItMjAuOC00OC42LTM3LjQtODAtNDhWMTM2YzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDB2MjcxLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vZHggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzU2IDI0MS44bDM2LjcgMjMuN1Y0ODBsLTEzMy04My44TDM1NiAyNDEuOHpNNDQwIDc1SDIyNi4zbC0yMyAzNy44IDE1My41IDk2LjVMNDQwIDc1em0tODkgMTQyLjhMNTUuMiAzMnYyMTQuNWw0NiAyOUwzNTEgMjE3Ljh6TTk3IDI5NC4yTDggNDM3aDIxMy43bDEyNS0yMDAuNUw5NyAyOTQuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAzODRoMTA4LjRDNDE3IDQ1NS45IDMzOC4xIDUwNCAyNDggNTA0Uzc5IDQ1NS45IDM1LjYgMzg0SDE0NFYyNTYuMkwyNDggMzYxbDEwNC0xMDV2MTI4ek04OCAzMzZWMTI4bDE1OS40IDE1OS40TDQwOCAxMjh2MjA4aDc0LjhjOC41LTI1LjEgMTMuMi01MiAxMy4yLTgwQzQ5NiAxMTkgMzg1IDggMjQ4IDhTMCAxMTkgMCAyNTZjMCAyOCA0LjYgNTQuOSAxMy4yIDgwSDg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOYXBzdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5OC4zIDM3My42Yy0xNC4yIDEzLjYtMzEuMyAyNC4xLTUwLjQgMzAuNS0xOS02LjQtMzYuMi0xNi45LTUwLjMtMzAuNWgxMDAuN3ptNDQtMTk5LjZjMjAtMTYuOSA0My42LTI5LjIgNjkuNi0zNi4yVjI5OWMwIDIxOS40LTMyOCAyMTcuNi0zMjggLjNWMTM3LjdjMjUuOSA2LjkgNDkuNiAxOS42IDY5LjUgMzYuNCA1Ni44LTQwIDEzMi41LTM5LjkgMTg4LjktLjF6bS0yMDguOC01OC41YzY0LjQtNjAgMTY0LjMtNjAuMSAyMjguOS0uMi03LjEgMy41LTEzLjkgNy4zLTIwLjYgMTEuNS01OC43LTMwLjUtMTI5LjItMzAuNC0xODcuOS4xLTYuMy00LTEzLjktOC4yLTIwLjQtMTEuNHpNNDMuOCA5My4ydjY5LjNjLTU4LjQgMzYuNS01OC40IDEyMS4xLjEgMTU4LjMgMjYuNCAyNDUuMSAzODEuNyAyNDAuMyA0MDcuNiAxLjVsLjMtMS43YzU4LjctMzYuMyA1OC45LTEyMS43LjItMTU4LjJWOTMuMmMtMTcuMy41LTM0IDMtNTAuMSA3LjQtODItOTEuNS0yMjUuNS05MS41LTMwNy41LjEtMTYuMy00LjQtMzMuMS03LTUwLjYtNy41ek0yNTkuMiAzNTJzMzYtLjMgNjEuMy0xLjVjMTAuMi0uNSAyMS4xLTQgMjUuNS02LjUgMjYuMy0xNS4xIDI1LjQtMzkuMiAyNi4yLTQ3LjQtNzkuNS0uNi05OS45LTMuOS0xMTMgNTUuNHptLTEzNS41LTU1LjNjLjggOC4yLS4xIDMyLjMgMjYuMiA0Ny40IDQuNCAyLjUgMTUuMiA2IDI1LjUgNi41IDI1LjMgMS4xIDYxLjMgMS41IDYxLjMgMS41LTEzLjItNTkuNC0zMy43LTU2LjEtMTEzLTU1LjR6bTE2OS4xIDEyMy40Yy0zLjItNS4zLTYuOS03LjMtNi45LTcuMy0yNC44IDcuMy01Mi4yIDYuOS03NS45IDAgMCAwLTIuOSAxLjUtNi40IDYuNi0yLjggNC4xLTMuNyA5LjYtMy43IDkuNiAyOS4xIDE3LjYgNjcuMSAxNy42IDk2LjIgMC0uMS0uMS0uMy00LTMuMy04Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5lb3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE1LjQ0IDUxMmgtOTUuMTFMMjEyLjEyIDM1Ny40NnY5MS4xTDEyNS42OSA1MTJIMjhWMjkuODJMNjguNDcgMGgxMDguMDVsMTIzLjc0IDE3Ni4xM1Y2My40NUwzODYuNjkgMGg5Ny42OXY0NjEuNXpNMzguNzcgMzUuMjdWNDk2bDcyLTUyLjg4VjE5NGwyMTUuNSAzMDcuNjRoODQuNzlsNTIuMzUtMzguMTdoLTc4LjI3TDY5IDEzem04Mi41NCA0NjYuNjFsODAtNTguNzh2LTEwMWwtNzkuNzYtMTE0LjR2MjIwLjk0TDQ5IDUwMS44OWg3Mi4zNHpNODAuNjMgMTAuNzdsMzEwLjYgNDQyLjU3aDgyLjM3VjEwLjc3aC03OS43NXYzMTcuNTZMMTcwLjkxIDEwLjc3ek0zMTEgMTkxLjY1bDcyIDEwMi44MVYxNS45M2wtNzIgNTN2MTIyLjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOZmNEaXJlY3Rpb25hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTEuOCA0ODguNkMyMTMuNCA0OTEuMSAyMTMuOSA0OTQuMiAyMTMuMiA0OTcuMUMyMTIuNiA1MDAgMjEwLjggNTAyLjYgMjA4LjMgNTA0LjJDMjA1LjcgNTA1LjggMjAyLjcgNTA2LjMgMTk5LjcgNTA1LjdDMTM4LjMgNDkxLjggODQuMSA0NTUuOCA0Ny41MyA0MDQuNUMxMC45NyAzNTMuMi01LjM5NSAyOTAuMyAxLjU3IDIyNy43QzguNTM2IDE2NSAzOC4zNCAxMDcuMiA4NS4yOSA2NS4yMUMxMzIuMiAyMy4yIDE5My0uMDEzMSAyNTYgMEMyNTcuNSAwIDI1OC4xIC4yOTMxIDI2MC4zIC44NjI3QzI2MS43IDEuNDMyIDI2Mi4xIDIuMjY3IDI2NCAzLjMxOUMyNjUuMSA0LjM3MSAyNjUuOSA1LjYxOSAyNjYuNSA2Ljk5M0MyNjcgOC4zNjcgMjY3LjMgOS44MzkgMjY3LjMgMTEuMzJWMTEyLjNMMjkxLjggODYuMzlDMjkyLjggODUuMzEgMjk0IDg0LjQ0IDI5NS40IDgzLjg0QzI5Ni43IDgzLjIzIDI5OC4yIDgyLjkgMjk5LjcgODIuODZDMzAxLjIgODIuODEgMzAyLjYgODMuMDYgMzA0IDgzLjU5QzMwNS40IDg0LjEyIDMwNi43IDg0LjkyIDMwNy44IDg1Ljk0QzMwOC44IDg2Ljk2IDMwOS43IDg4LjE4IDMxMC4zIDg5LjU0QzMxMC45IDkwLjg5IDMxMS4zIDkyLjM1IDMxMS4zIDkzLjg0QzMxMS4zIDk1LjMyIDMxMS4xIDk2LjggMzEwLjYgOTguMThDMzEwIDk5LjU3IDMwOS4yIDEwMC44IDMwOC4yIDEwMS45TDI2NC4yIDE0OC41QzI2My4xIDE0OS42IDI2MS45IDE1MC41IDI2MC41IDE1MS4xQzI1OSAxNTEuNyAyNTcuNSAxNTIgMjU1LjEgMTUyQzI1NC41IDE1MiAyNTIuOSAxNTEuNyAyNTEuNSAxNTEuMUMyNTAuMSAxNTAuNSAyNDguOCAxNDkuNiAyNDcuOCAxNDguNUwyMDMuNyAxMDEuOUMyMDEuNyA5OS43NCAyMDAuNiA5Ni44MyAyMDAuNyA5My44NEMyMDAuNyA5MC44NCAyMDIgODcuMSAyMDQuMiA4NS45NEMyMDYuNCA4My44OCAyMDkuMyA4Mi43NyAyMTIuMyA4Mi44NkMyMTUuMyA4Mi45NCAyMTguMSA4NC4yMSAyMjAuMiA4Ni4zOUwyNDQuNyAxMTIuNFYyMi44OUMxODguMyAyNS42NCAxMzQuOSA0OC43MyA5NC4yMyA4Ny44N0M1My41OCAxMjcgMjguNDkgMTc5LjYgMjMuNjEgMjM1LjhDMTguNzMgMjkyIDM0LjM4IDM0OC4xIDY3LjY4IDM5My43QzEwMC4xIDQzOS4yIDE0OS43IDQ3MS4yIDIwNC43IDQ4My42QzIwNy42IDQ4NC4zIDIxMC4yIDQ4Ni4xIDIxMS44IDQ4OC42TDIxMS44IDQ4OC42ek0xNzEuNCAxMjYuMUMxNzAuNiAxMjcuNCAxNjkuNSAxMjguNSAxNjguMyAxMjkuM0MxNDcuOCAxNDMuMiAxMzEuMSAxNjEuOSAxMTkuNSAxODMuOEMxMDcuOSAyMDUuNyAxMDEuOCAyMzAuMSAxMDEuOCAyNTQuOUMxMDEuOCAyNzkuNyAxMDcuOSAzMDQuMSAxMTkuNSAzMjUuMUMxMzEuMSAzNDcuOSAxNDcuOCAzNjYuNiAxNjguMyAzODAuNUMxNzAuOCAzODIuMiAxNzIuNSAzODQuOCAxNzMgMzg3LjhDMTczLjYgMzkwLjcgMTcyLjEgMzkzLjggMTcxLjMgMzk2LjJDMTY5LjYgMzk4LjcgMTY2LjEgNDAwLjQgMTY0IDQwMC4xQzE2MS4xIDQwMS41IDE1OCA0MDAuOSAxNTUuNiAzOTkuMkMxMzIgMzgzLjIgMTEyLjggMzYxLjcgOTkuNDYgMzM2LjVDODYuMTUgMzExLjQgNzkuMTkgMjgzLjQgNzkuMTkgMjU0LjlDNzkuMTkgMjI2LjUgODYuMTUgMTk4LjQgOTkuNDYgMTczLjNDMTEyLjggMTQ4LjEgMTMyIDEyNi42IDE1NS42IDExMC42QzE1Ni44IDEwOS44IDE1OC4yIDEwOS4yIDE1OS42IDEwOC44QzE2MS4xIDEwOC41IDE2Mi42IDEwOC41IDE2NC4xIDEwOC44QzE2NS41IDEwOSAxNjYuOSAxMDkuNiAxNjguMiAxMTAuNEMxNjkuNSAxMTEuMiAxNzAuNSAxMTIuMyAxNzEuNCAxMTMuNUMxNzIuMiAxMTQuNyAxNzIuOCAxMTYuMSAxNzMuMSAxMTcuNkMxNzMuNCAxMTkuMSAxNzMuNCAxMjAuNiAxNzMuMSAxMjJDMTcyLjggMTIzLjUgMTcyLjMgMTI0LjkgMTcxLjQgMTI2LjFIMTcxLjR6TTM0MC45IDM4My41QzM0MS43IDM4Mi4zIDM0Mi44IDM4MS4yIDM0My4xIDM4MC40VjM4MC4zQzM2NC40IDM2Ni4zIDM4MS4xIDM0Ny42IDM5Mi43IDMyNS43QzQwNC4yIDMwMy45IDQxMC4yIDI3OS41IDQxMC4yIDI1NC44QzQxMC4yIDIzMC4xIDQwNC4yIDIwNS43IDM5Mi43IDE4My44QzM4MS4xIDE2MS4xIDM2NC40IDE0My4zIDM0My4xIDEyOS4zQzM0Mi44IDEyOC41IDM0MS43IDEyNy40IDM0MC45IDEyNi4yQzM0MC4xIDEyNC45IDMzOS41IDEyMy41IDMzOS4zIDEyMi4xQzMzOC4xIDEyMC42IDMzOSAxMTkuMSAzMzkuMyAxMTcuN0MzMzkuNiAxMTYuMiAzNDAuMiAxMTQuOCAzNDEgMTEzLjZDMzQxLjkgMTEyLjQgMzQyLjEgMTExLjMgMzQ0LjIgMTEwLjVDMzQ1LjQgMTA5LjcgMzQ2LjggMTA5LjIgMzQ4LjMgMTA4LjlDMzQ5LjggMTA4LjYgMzUxLjIgMTA4LjYgMzUyLjcgMTA4LjlDMzU0LjIgMTA5LjIgMzU1LjUgMTA5LjggMzU2LjggMTEwLjdDMzgwLjIgMTI2LjcgMzk5LjUgMTQ4LjIgNDEyLjcgMTczLjNDNDI2IDE5OC40IDQzMi4xIDIyNi40IDQzMi4xIDI1NC44QzQzMi4xIDI4My4zIDQyNiAzMTEuMyA0MTIuNyAzMzYuNEMzOTkuNSAzNjEuNSAzODAuMiAzODMgMzU2LjggMzk5QzM1NS41IDM5OS45IDM1NC4yIDQwMC41IDM1Mi43IDQwMC44QzM1MS4yIDQwMS4xIDM0OS44IDQwMS4xIDM0OC4zIDQwMC44QzM0Ni44IDQwMC41IDM0NS40IDM5OS4xIDM0NC4yIDM5OS4yQzM0Mi4xIDM5OC40IDM0MS45IDM5Ny4zIDM0MSAzOTYuMUMzNDAuMiAzOTQuOSAzMzkuNiAzOTMuNSAzMzkuMyAzOTJDMzM5IDM5MC42IDMzOC4xIDM4OS4xIDMzOS4zIDM4Ny42QzMzOS41IDM4Ni4yIDM0MC4xIDM4NC44IDM0MC45IDM4My41VjM4My41ek0zMTIuMyA2LjMwN0MzNjguNSAxOS4wNCA0MTguNyA1MC4yOCA0NTUgOTUuMDFDNDg1LjQgMTMyLjYgNTA0LjYgMTc4IDUxMC4zIDIyNkM1MTUuOSAyNzQgNTA3LjkgMzIyLjcgNDg3LjEgMzY2LjNDNDY2LjIgNDA5LjkgNDMzLjUgNDQ2LjggMzkyLjYgNDcyLjZDMzUxLjcgNDk4LjMgMzA0LjQgNTEyIDI1NiA1MTJDMjU0LjUgNTEyIDI1My4xIDUxMS43IDI1MS43IDUxMS4xQzI1MC4zIDUxMC42IDI0OS4xIDUwOS43IDI0OCA1MDguN0MyNDYuMSA1MDcuNiAyNDYuMSA1MDYuNCAyNDUuNiA1MDVDMjQ1IDUwMy42IDI0NC43IDUwMi4yIDI0NC43IDUwMC43VjQwMS41TDIyMC4yIDQyNy41QzIxOC4xIDQyOS43IDIxNS4zIDQzMC4xIDIxMi4zIDQzMS4xQzIwOS4zIDQzMS4yIDIwNi40IDQzMCAyMDQuMiA0MjcuMUMyMDIgNDI1LjkgMjAwLjcgNDIzLjEgMjAwLjcgNDIwLjFDMjAwLjYgNDE3LjEgMjAxLjcgNDE0LjIgMjAzLjcgNDEyTDI0Ny44IDM2NS40QzI0OS4xIDM2My4yIDI1Mi45IDM2MiAyNTUuMSAzNjJDMjU5LjEgMzYyIDI2MiAzNjMuMiAyNjQuMiAzNjUuNEwzMDguMiA0MTJDMzEwLjMgNDE0LjIgMzExLjQgNDE3LjEgMzExLjMgNDIwLjFDMzExLjIgNDIzLjEgMzA5LjkgNDI1LjkgMzA3LjggNDI3LjFDMzA1LjYgNDMwIDMwMi43IDQzMS4yIDI5OS43IDQzMS4xQzI5Ni43IDQzMC4xIDI5My44IDQyOS43IDI5MS44IDQyNy41TDI2Ny4zIDQwMS42VjQ4OS4xQzMyMy43IDQ4Ni4zIDM3Ny4xIDQ2My4zIDQxNy44IDQyNC4xQzQ1OC41IDM4NC4xIDQ4My42IDMzMi40IDQ4OC41IDI3Ni4yQzQ5My4zIDIxOS4xIDQ3Ny43IDE2My45IDQ0NC40IDExOC4zQzQxMS4xIDcyLjc1IDM2Mi40IDQwLjc5IDMwNy40IDI4LjM2QzMwNS45IDI4LjAzIDMwNC42IDI3LjQyIDMwMy4zIDI2LjU3QzMwMi4xIDI1LjcxIDMwMS4xIDI0LjYzIDMwMC4zIDIzLjM3QzI5OS41IDIyLjEyIDI5OC4xIDIwLjcyIDI5OC43IDE5LjI2QzI5OC41IDE3LjggMjk4LjUgMTYuMyAyOTguOCAxNC44NUMyOTkuMiAxMy40MSAyOTkuOCAxMi4wNCAzMDAuNiAxMC44MkMzMDEuNSA5LjYxIDMwMi42IDguNTc3IDMwMy44IDcuNzg0QzMwNS4xIDYuOTkgMzA2LjUgNi40NTEgMzA3LjkgNi4xOThDMzA5LjQgNS45NDUgMzEwLjkgNS45ODIgMzEyLjMgNi4zMDdMMzEyLjMgNi4zMDd6TTM1My4xIDI1Ni4xQzM1My4xIDI4Ny41IDMzNS42IDMxNy4yIDMwMy44IDMzOS42QzMwMS43IDM0MS4xIDI5OSAzNDEuOSAyOTYuNCAzNDEuNkMyOTMuNyAzNDEuNCAyOTEuMiAzNDAuMyAyODkuNCAzMzguNEwyMTkuMyAyNjguNkMyMTcuMSAyNjYuNSAyMTUuMSAyNjMuNiAyMTUuOSAyNjAuNkMyMTUuOSAyNTcuNiAyMTcuMSAyNTQuNyAyMTkuMiAyNTIuNkMyMjEuNCAyNTAuNSAyMjQuMiAyNDkuMyAyMjcuMiAyNDkuM0MyMzAuMiAyNDkuMyAyMzMuMSAyNTAuNSAyMzUuMiAyNTIuNkwyOTguMyAzMTUuNEMzMTkuMSAyOTguMyAzMzAuNSAyNzcuNSAzMzAuNSAyNTYuMUMzMzAuNSAyMzIuMiAzMTYuNCAyMDkuMSAyOTAuOCAxOTFDMjg4LjMgMTg5LjMgMjg2LjcgMTg2LjcgMjg2LjIgMTgzLjdDMjg1LjcgMTgwLjggMjg2LjMgMTc3LjcgMjg4LjEgMTc1LjNDMjg5LjggMTcyLjggMjkyLjQgMTcxLjIgMjk1LjQgMTcwLjdDMjk4LjMgMTcwLjIgMzAxLjQgMTcwLjggMzAzLjggMTcyLjZDMzM1LjYgMTk1IDM1My4xIDIyNC43IDM1My4xIDI1Ni4xVjI1Ni4xek0yMTYuNyAzNDEuNUMyMTMuNyAzNDIgMjEwLjcgMzQxLjMgMjA4LjIgMzM5LjZDMTc2LjUgMzE3LjIgMTU4LjEgMjg3LjUgMTU4LjEgMjU2LjFDMTU4LjEgMjI0LjcgMTc2LjUgMTk1IDIwOC4yIDE3Mi42QzIxMC40IDE3MSAyMTMuMSAxNzAuMyAyMTUuNyAxNzAuNUMyMTguNCAxNzAuOCAyMjAuOCAxNzEuOSAyMjIuNyAxNzMuOEwyOTIuOCAyNDMuNkMyOTQuOSAyNDUuNyAyOTYuMSAyNDguNiAyOTYuMSAyNTEuNkMyOTYuMSAyNTQuNiAyOTQuMSAyNTcuNCAyOTIuOCAyNTkuNkMyOTAuNyAyNjEuNyAyODcuOCAyNjIuOSAyODQuOSAyNjIuOUMyODEuOSAyNjIuOSAyNzguMSAyNjEuNyAyNzYuOSAyNTkuNkwyMTMuOCAxOTYuN0MxOTIuOSAyMTQgMTgxLjYgMjM0LjcgMTgxLjYgMjU2LjFDMTgxLjYgMjc5LjEgMTk1LjcgMzAzLjEgMjIxLjMgMzIxLjFDMjIzLjcgMzIyLjkgMjI1LjQgMzI1LjUgMjI1LjkgMzI4LjVDMjI2LjQgMzMxLjQgMjI1LjcgMzM0LjQgMjI0IDMzNi45QzIyMi4zIDMzOS4zIDIxOS42IDM0MSAyMTYuNyAzNDEuNUwyMTYuNyAzNDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmZjU3ltYm9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5Mi45IDMyLjQzQzQwMC42IDMxLjEgNDA4LjYgMzIuODkgNDE0LjEgMzcuNDFDNDk4LjIgOTYuMTQgNTQ0IDE3My43IDU0NCAyNTUuMUM1NDQgMzM4LjIgNDk4LjIgNDE1LjkgNDE0LjEgNDc0LjZDNDA5LjMgNDc4LjYgNDAyLjQgNDgwLjUgMzk1LjUgNDc5LjlDMzg4LjUgNDc5LjMgMzgyIDQ3Ni4zIDM3Ny4xIDQ3MS40TDE5My43IDI4OC43QzE4OC4xIDI4My4yIDE4NSAyNzUuNyAxODQuMSAyNjcuOEMxODQuMSAyNjAgMTg4LjEgMjUyLjUgMTkzLjYgMjQ2LjlDMTk5LjIgMjQxLjQgMjA2LjcgMjM4LjIgMjE0LjUgMjM4LjJDMjIyLjQgMjM4LjIgMjI5LjkgMjQxLjMgMjM1LjQgMjQ2LjhMNDAwLjUgNDExLjJDNDU1LjEgMzY2LjUgNDg0LjggMzEyIDQ4NC44IDI1NS4xQzQ4NC44IDE5My41IDQ0Ny45IDEzMi45IDM4MC45IDg1Ljc2QzM3NC41IDgxLjI0IDM3MC4xIDc0LjM1IDM2OC44IDY2LjYyQzM2Ny40IDU4Ljg5IDM2OS4yIDUwLjk0IDM3My44IDQ0LjUzQzM3OC4zIDM4LjEyIDM4NS4yIDMzLjc3IDM5Mi45IDMyLjQzVjMyLjQzek0xODYuOSA0NzkuNkMxNzkuMiA0ODAuOSAxNzEuMyA0NzkuMSAxNjQuOCA0NzQuNkM4MS42NyA0MTUuOSAzNS44NCAzMzguMiAzNS44NCAyNTUuMUMzNS44NCAxNzMuNyA4MS42NyA5Ni4xNCAxNjQuOCAzNy40MUMxNzAuNSAzMy40IDE3Ny40IDMxLjUzIDE4NC40IDMyLjEyQzE5MS4zIDMyLjcxIDE5Ny44IDM1LjcyIDIwMi43IDQwLjYzTDM4Ni4xIDIyMy4zQzM5MS43IDIyOC44IDM5NC44IDIzNi4zIDM5NC44IDI0NC4yQzM5NC45IDI1MS4xIDM5MS44IDI1OS41IDM4Ni4yIDI2NS4xQzM4MC43IDI3MC42IDM3My4yIDI3My44IDM2NS4zIDI3My44QzM1Ny41IDI3My44IDM0OS4xIDI3MC43IDM0NC40IDI2NS4yTDE3OS4zIDEwMC43QzEyNC43IDE0NS45IDk1LjAzIDE5OS45IDk1LjAzIDI1NS4xQzk1LjAzIDMxOC41IDEzMS45IDM3OS4xIDE5OC4xIDQyNi4yQzIwNS40IDQzMC44IDIwOS43IDQzNy42IDIxMS4xIDQ0NS40QzIxMi40IDQ1My4xIDIxMC42IDQ2MS4xIDIwNi4xIDQ2Ny41QzIwMS42IDQ3My45IDE5NC43IDQ3OC4yIDE4Ni45IDQ3OS42VjQ3OS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOaW1ibHIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ2LjYgMjk5LjI5YzE1LjU3IDAgMjcuMTUgMTEuNDYgMjcuMTUgMjdzLTExLjYyIDI3LTI3LjE1IDI3Yy0xNS43IDAtMjcuMTUtMTEuNTctMjcuMTUtMjdzMTEuNTUtMjcgMjcuMTUtMjd6TTExMyAzMjYuMjVjMC0xNS42MSAxMS42OC0yNyAyNy4xNS0yN3MyNy4xNSAxMS40NiAyNy4xNSAyNy0xMS40NyAyNy0yNy4xNSAyN2MtMTUuNDQgMC0yNy4xNS0xMS4zMS0yNy4xNS0yN00xOTEuNzYgMTU5QzE1NyAxNTkgODkuNDUgMTc4Ljc3IDU5LjI1IDIyN0wxNCAwdjMzNS40OEMxNCA0MzMuMTMgOTMuNjEgNTEyIDE5MS43NiA1MTJzMTc3Ljc2LTc4Ljk1IDE3Ny43Ni0xNzYuNTJTMjkwLjEzIDE1OSAxOTEuNzYgMTU5em0wIDMwOC4xMmMtNzMuMjcgMC0xMzIuNTEtNTguOS0xMzIuNTEtMTMxLjU5czU5LjI0LTEzMS41OSAxMzIuNTEtMTMxLjU5IDEzMi41MSA1OC44NiAxMzIuNTEgMTMxLjU0UzI2NSA0NjcuMDcgMTkxLjc2IDQ2Ny4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTm9kZUpzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA1MDhjLTYuNyAwLTEzLjUtMS44LTE5LjQtNS4ybC02MS43LTM2LjVjLTkuMi01LjItNC43LTctMS43LTggMTIuMy00LjMgMTQuOC01LjIgMjcuOS0xMi43IDEuNC0uOCAzLjItLjUgNC42LjRsNDcuNCAyOC4xYzEuNyAxIDQuMSAxIDUuNyAwbDE4NC43LTEwNi42YzEuNy0xIDIuOC0zIDIuOC01VjE0OS4zYzAtMi4xLTEuMS00LTIuOS01LjFMMjI2LjggMzcuN2MtMS43LTEtNC0xLTUuNyAwTDM2LjYgMTQ0LjNjLTEuOCAxLTIuOSAzLTIuOSA1LjF2MjEzLjFjMCAyIDEuMSA0IDIuOSA0LjlsNTAuNiAyOS4yYzI3LjUgMTMuNyA0NC4zLTIuNCA0NC4zLTE4LjdWMTY3LjVjMC0zIDIuNC01LjMgNS40LTUuM2gyMy40YzIuOSAwIDUuNCAyLjMgNS40IDUuM1YzNzhjMCAzNi42LTIwIDU3LjYtNTQuNyA1Ny42LTEwLjcgMC0xOS4xIDAtNDIuNS0xMS42bC00OC40LTI3LjlDOC4xIDM4OS4yLjcgMzc2LjMuNyAzNjIuNFYxNDkuM2MwLTEzLjggNy40LTI2LjggMTkuNC0zMy43TDIwNC42IDljMTEuNy02LjYgMjcuMi02LjYgMzguOCAwbDE4NC43IDEwNi43YzEyIDYuOSAxOS40IDE5LjggMTkuNCAzMy43djIxMy4xYzAgMTMuOC03LjQgMjYuNy0xOS40IDMzLjdMMjQzLjQgNTAyLjhjLTUuOSAzLjQtMTIuNiA1LjItMTkuNCA1LjJ6bTE0OS4xLTIxMC4xYzAtMzkuOS0yNy01MC41LTgzLjctNTgtNTcuNC03LjYtNjMuMi0xMS41LTYzLjItMjQuOSAwLTExLjEgNC45LTI1LjkgNDcuNC0yNS45IDM3LjkgMCA1MS45IDguMiA1Ny43IDMzLjguNSAyLjQgMi43IDQuMiA1LjIgNC4yaDI0YzEuNSAwIDIuOS0uNiAzLjktMS43czEuNS0yLjYgMS40LTQuMWMtMy43LTQ0LjEtMzMtNjQuNi05Mi4yLTY0LjYtNTIuNyAwLTg0LjEgMjIuMi04NC4xIDU5LjUgMCA0MC40IDMxLjMgNTEuNiA4MS44IDU2LjYgNjAuNSA1LjkgNjUuMiAxNC44IDY1LjIgMjYuNyAwIDIwLjYtMTYuNiAyOS40LTU1LjUgMjkuNC00OC45IDAtNTkuNi0xMi4zLTYzLjItMzYuNi0uNC0yLjYtMi42LTQuNS01LjMtNC41aC0yMy45Yy0zIDAtNS4zIDIuNC01LjMgNS4zIDAgMzEuMSAxNi45IDY4LjIgOTcuOCA2OC4yIDU4LjQtLjEgOTItMjMuMiA5Mi02My40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxNi4zIDQ1MmMtMi4xIDAtNC4yLS42LTYuMS0xLjZMMjkxIDQzOWMtMi45LTEuNi0xLjUtMi4yLS41LTIuNSAzLjgtMS4zIDQuNi0xLjYgOC43LTQgLjQtLjIgMS0uMSAxLjQuMWwxNC44IDguOGMuNS4zIDEuMy4zIDEuOCAwTDM3NSA0MDhjLjUtLjMuOS0uOS45LTEuNnYtNjYuN2MwLS43LS4zLTEuMy0uOS0xLjZsLTU3LjgtMzMuM2MtLjUtLjMtMS4yLS4zLTEuOCAwbC01Ny44IDMzLjNjLS42LjMtLjkgMS0uOSAxLjZ2NjYuN2MwIC42LjQgMS4yLjkgMS41bDE1LjggOS4xYzguNiA0LjMgMTMuOS0uOCAxMy45LTUuOHYtNjUuOWMwLS45LjctMS43IDEuNy0xLjdoNy4zYy45IDAgMS43LjcgMS43IDEuN3Y2NS45YzAgMTEuNS02LjIgMTgtMTcuMSAxOC0zLjMgMC02IDAtMTMuMy0zLjZsLTE1LjItOC43Yy0zLjctMi4yLTYuMS02LjItNi4xLTEwLjV2LTY2LjdjMC00LjMgMi4zLTguNCA2LjEtMTAuNWw1Ny44LTMzLjRjMy43LTIuMSA4LjUtMi4xIDEyLjEgMGw1Ny44IDMzLjRjMy43IDIuMiA2LjEgNi4yIDYuMSAxMC41djY2LjdjMCA0LjMtMi4zIDguNC02LjEgMTAuNWwtNTcuOCAzMy40Yy0xLjcgMS4xLTMuOCAxLjctNiAxLjd6bTQ2LjctNjUuOGMwLTEyLjUtOC40LTE1LjgtMjYuMi0xOC4yLTE4LTIuNC0xOS44LTMuNi0xOS44LTcuOCAwLTMuNSAxLjUtOC4xIDE0LjgtOC4xIDExLjkgMCAxNi4zIDIuNiAxOC4xIDEwLjYuMi44LjggMS4zIDEuNiAxLjNoNy41Yy41IDAgLjktLjIgMS4yLS41LjMtLjQuNS0uOC40LTEuMy0xLjItMTMuOC0xMC4zLTIwLjItMjguOC0yMC4yLTE2LjUgMC0yNi4zIDctMjYuMyAxOC42IDAgMTIuNyA5LjggMTYuMSAyNS42IDE3LjcgMTguOSAxLjkgMjAuNCA0LjYgMjAuNCA4LjMgMCA2LjUtNS4yIDkuMi0xNy40IDkuMi0xNS4zIDAtMTguNy0zLjgtMTkuOC0xMS40LS4xLS44LS44LTEuNC0xLjctMS40aC03LjVjLS45IDAtMS43LjctMS43IDEuNyAwIDkuNyA1LjMgMjEuMyAzMC42IDIxLjMgMTguNSAwIDI5LTcuMiAyOS0xOS44em01NC41LTUwLjFjMCA2LjEtNSAxMS4xLTExLjEgMTEuMXMtMTEuMS01LTExLjEtMTEuMWMwLTYuMyA1LjItMTEuMSAxMS4xLTExLjEgNi0uMSAxMS4xIDQuOCAxMS4xIDExLjF6bS0xLjggMGMwLTUuMi00LjItOS4zLTkuNC05LjMtNS4xIDAtOS4zIDQuMS05LjMgOS4zIDAgNS4yIDQuMiA5LjQgOS4zIDkuNCA1LjItLjEgOS40LTQuMyA5LjQtOS40em0tNC41IDYuMmgtMi42Yy0uMS0uNi0uNS0zLjgtLjUtMy45LS4yLS43LS40LTEuMS0xLjMtMS4xaC0yLjJ2NWgtMi40di0xMi41aDQuM2MxLjUgMCA0LjQgMCA0LjQgMy4zIDAgMi4zLTEuNSAyLjgtMi40IDMuMSAxLjcuMSAxLjggMS4yIDIuMSAyLjguMSAxIC4zIDIuNy42IDMuM3ptLTIuOC04LjhjMC0xLjctMS4yLTEuNy0xLjgtMS43aC0ydjMuNWgxLjljMS42IDAgMS45LTEuMSAxLjktMS44ek0xMzcuMyAxOTFjMC0yLjctMS40LTUuMS0zLjctNi40bC02MS4zLTM1LjNjLTEtLjYtMi4yLS45LTMuNC0xaC0uNmMtMS4yIDAtMi4zLjQtMy40IDFMMy43IDE4NC42QzEuNCAxODUuOSAwIDE4OC40IDAgMTkxbC4xIDk1YzAgMS4zLjcgMi41IDEuOCAzLjIgMS4xLjcgMi41LjcgMy43IDBMNDIgMjY4LjNjMi4zLTEuNCAzLjctMy44IDMuNy02LjR2LTQ0LjRjMC0yLjYgMS40LTUuMSAzLjctNi40bDE1LjUtOC45YzEuMi0uNyAyLjQtMSAzLjctMSAxLjMgMCAyLjYuMyAzLjcgMWwxNS41IDguOWMyLjMgMS4zIDMuNyAzLjggMy43IDYuNHY0NC40YzAgMi42IDEuNCA1LjEgMy43IDYuNGwzNi40IDIwLjljMS4xLjcgMi42LjcgMy43IDAgMS4xLS42IDEuOC0xLjkgMS44LTMuMmwuMi05NXpNNDcyLjUgODcuM3YxNzYuNGMwIDIuNi0xLjQgNS4xLTMuNyA2LjRsLTYxLjMgMzUuNGMtMi4zIDEuMy01LjEgMS4zLTcuNCAwbC02MS4zLTM1LjRjLTIuMy0xLjMtMy43LTMuOC0zLjctNi40di03MC44YzAtMi42IDEuNC01LjEgMy43LTYuNGw2MS4zLTM1LjRjMi4zLTEuMyA1LjEtMS4zIDcuNCAwbDE1LjMgOC44YzEuNyAxIDMuOS0uMyAzLjktMi4ydi05NGMwLTIuOCAzLTQuNiA1LjUtMy4ybDM2LjUgMjAuNGMyLjMgMS4yIDMuOCAzLjcgMy44IDYuNHptLTQ2IDEyOC45YzAtLjctLjQtMS4zLS45LTEuNmwtMjEtMTIuMmMtLjYtLjMtMS4zLS4zLTEuOSAwbC0yMSAxMi4yYy0uNi4zLS45LjktLjkgMS42djI0LjNjMCAuNy40IDEuMy45IDEuNmwyMSAxMi4xYy42LjMgMS4zLjMgMS44IDBsMjEtMTIuMWMuNi0uMy45LS45LjktMS42di0yNC4zem0yMDkuOC0uN2MyLjMtMS4zIDMuNy0zLjggMy43LTYuNFYxOTJjMC0yLjYtMS40LTUuMS0zLjctNi40bC02MC45LTM1LjRjLTIuMy0xLjMtNS4xLTEuMy03LjQgMGwtNjEuMyAzNS40Yy0yLjMgMS4zLTMuNyAzLjgtMy43IDYuNHY3MC44YzAgMi43IDEuNCA1LjEgMy43IDYuNGw2MC45IDM0LjdjMi4yIDEuMyA1IDEuMyA3LjMgMGwzNi44LTIwLjVjMi41LTEuNCAyLjUtNSAwLTYuNEw1NTAgMjQxLjZjLTEuMi0uNy0xLjktMS45LTEuOS0zLjJ2LTIyLjJjMC0xLjMuNy0yLjUgMS45LTMuMmwxOS4yLTExLjFjMS4xLS43IDIuNi0uNyAzLjcgMGwxOS4yIDExLjFjMS4xLjcgMS45IDEuOSAxLjkgMy4ydjE3LjRjMCAyLjggMy4xIDQuNiA1LjYgMy4ybDM2LjctMjEuM3pNNTU5IDIxOWMtLjQuMy0uNy43LS43IDEuMnYxMy42YzAgLjUuMyAxIC43IDEuMmwxMS44IDYuOGMuNC4zIDEgLjMgMS40IDBMNTg0IDIzNWMuNC0uMy43LS43LjctMS4ydi0xMy42YzAtLjUtLjMtMS0uNy0xLjJsLTExLjgtNi44Yy0uNC0uMy0xLS4zLTEuNCAwTDU1OSAyMTl6bS0yNTQuMiA0My41di03MC40YzAtMi42LTEuNi01LjEtMy45LTYuNGwtNjEuMS0zNS4yYy0yLjEtMS4yLTUtMS40LTcuNCAwbC02MS4xIDM1LjJjLTIuMyAxLjMtMy45IDMuNy0zLjkgNi40djcwLjRjMCAyLjggMS45IDUuMiA0IDYuNGw2MS4yIDM1LjJjMi40IDEuNCA1LjIgMS4zIDcuNCAwbDYxLTM1LjJjMS44LTEgMy4xLTIuNyAzLjYtNC43LjEtLjUuMi0xLjEuMi0xLjd6bS03NC4zLTEyNC45bC0uOC41aDEuMWwtLjMtLjV6bTc2LjIgMTMwLjJsLS40LS43di45bC40LS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOcG0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDI4OGgtMzJ2LTY0aDMydjY0em0yODgtMTI4djE5MkgyODh2MzJIMTYwdi0zMkgwVjE2MGg1NzZ6bS00MTYgMzJIMzJ2MTI4aDY0di05NmgzMnY5NmgzMlYxOTJ6bTE2MCAwSDE5MnYxNjBoNjR2LTMyaDY0VjE5MnptMjI0IDBIMzUydjEyOGg2NHYtOTZoMzJ2OTZoMzJ2LTk2aDMydjk2aDMyVjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTnM4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwNC4zMjQsMjY5LjE3MmgyNi4wNjdWMjQyLjk5NEgxMDQuMzI0Wm01Mi40NjYtMjYuMTc4LS4wNTUtMjYuMTc4di0uOTQxYTM5LjMyNSwzOS4zMjUsMCwwLDAtNzguNjQ0Ljk0MXYuMTY2aDI2LjR2LS4xNjZhMTIuOTgsMTIuOTgsMCwwLDEsMjUuOTU2LDB2MjYuMTc4Wm01Mi4zNTYsMjUuODQ2YTkxLjEsOTEuMSwwLDAsMS05MS4xLDkxLjFoLS42MDlhOTEuMSw5MS4xLDAsMCwxLTkxLjEtOTEuMUgwdi4xNjZBMTE3LjMzLDExNy4zMywwLDAsMCwxMTcuNDQsMzg2LjI4aC43NzVBMTE3LjMzMSwxMTcuMzMxLDAsMCwwLDIzNS40OSwyNjguODRWMjQyLjgyOEgyMDkuMTQ2Wm0tMTU3LjIzMywwYTY1LjM2Miw2NS4zNjIsMCwwLDAsMTMwLjcyMywwSDE1Ni4yOTJhMzkuMDIzLDM5LjAyMywwLDAsMS03OC4wMzUsMFYyNDIuODgzSDUxLjk2OHYtMjYuNjJBNjUuNDIsNjUuNDIsMCwwLDEsMTgyLjgsMjE3LjQ4djI1LjI5M2gyNi4zNDRWMjE3LjQ4YTkxLjc2MSw5MS43NjEsMCwwLDAtMTgzLjUyMiwwdjI1LjRINTEuOTEzWm00MTguNC03MS4xNzNjMTMuNjcsMCwyNC41NzMsNi42NDIsMzAuMDUyLDE4LjI2NGwuNzE5LDEuNTQ5LDIzLjI0NS0xMS41MTEtLjYwOS0xLjQzOWMtOC4wMjUtMTkuMjYtMjguNS0zMS4yNy01My40MDctMzEuMjctMjMuMTM0LDAtNDMuNjExLDExLjQtNTAuOTcyLDI4LjQ0Ny0uMTIzLDI2Ljg3Ni0uMTU4LDIzLjksMCwyNC44NSw0LjcsMTEuMDEzLDE0LjU1NSwxOS4zNywyOC42NjgsMjQuMjQxYTEwMi4wMzMsMTAyLjAzMywwLDAsMCwxOS44MTMsMy45ODRjNS40NzkuNzIsMTAuNjI2LDEuMzg0LDE1LjgyOSwzLjEsNi4zNjQsMi4xLDEwLjQ2LDUuMjU3LDEyLjg0LDkuODUxdjkuODUxYy0zLjcwOCw3LjUyNy0xMy43ODEsMTIuMzQyLTI1Ljc5MSwxMi4zNDItMTQuMzM0LDAtMjUuOTU2LTYuOTE4LTMxLjkzMy0xOS4wMzlsLS43Mi0xLjQ5NEw0MTUuMDI2LDI4MC45bC41NTMsMS40MzljNy45MTUsMTkuNDI2LDI5LjYwOSwzMi4wNDQsNTUuMjg5LDMyLjA0NCwyMy42MzIsMCw0NC42MDgtMTEuNCw1Mi4zLTI4LjQ0N2wuMTY2LTI1LjktLjE2Ni0uNjY0Yy00Ljg3LTExLjAxNC0xNS4yMTktMTkuNjQ3LTI4Ljk0NC0yNC4yNDEtNy42OTMtMi43MTItMTQuMzM1LTMuNi0yMC43LTQuNDI3YTgzLjc3Nyw4My43NzcsMCwwLDEtMTQuODMyLTIuODc4Yy02LjMxLTEuOTM3LTEwLjQtNS4wOTItMTIuNjE5LTkuNjN2LTguNDEyQzQ0OS40NSwyMDIuNDI3LDQ1OC45NjksMTk3LjY2Nyw0NzAuMzE1LDE5Ny42NjdaTTI4Ny41NjgsMzExLjM0NGgyNi4wNjd2LTY4LjRIMjg3LjU2OFptMzUyLjI2Ni01My4zYy0yLjkzMy02LjI1NC04LjMtMTIuMDEtMTUuNDQxLTE2LjcxNEEzNy45OSwzNy45OSwwLDAsMCw2MzcuNCwyMjZsLjE2Ni0yNS4zNDctLjE2Ni0uNjY0QzYzMC4wMzgsMTg0LDYxMC42NjcsMTczLjI2LDU4OS4yNSwxNzMuMjZTNTQ4LjQ2MSwxODQsNTQxLjEsMTk5Ljk5MmwtLjE2NiwyNS4zNDcuMTY2LjY2NGEzOS42NDMsMzkuNjQzLDAsMCwwLDEzLjAwNiwxNS4zMzFjLTcuMiw0LjctMTIuNTA4LDEwLjQ2LTE1LjQ0MSwxNi43MTRsLS4xNjYsMjguODg5LjE2Ni43MmM3LjU4MiwxNS45OTQsMjcuODkzLDI2LjczMSw1MC41ODUsMjYuNzMxczQzLjA1Ny0xMC43MzcsNTAuNTg0LTI2LjczMWwuMTY2LTI4Ljg5Wm0tNzMuMjItNTAuODA2YzMuNi02LjMxLDEyLjU2My0xMC41MTYsMjIuNTgtMTAuNTE2czE5LjAzOCw0LjIwNiwyMi42MzYsMTAuNTE2djEzLjcyNWMtMy41NDIsNi4yLTEyLjU2MywxMC4zNDktMjIuNjM2LDEwLjM0OXMtMTkuMDk0LTQuMTUtMjIuNTgtMTAuMzQ5Wm00Ny4zMTksNzIuMTY5Yy0zLjc2NCw2LjY0MS0xMy4zMzgsMTAuOS0yNC42ODMsMTAuOS0xMS4xMjUsMC0yMC45NzYtNC4zNzItMjQuNjg0LTEwLjlWMjYzLjI1YzMuNzA4LTYuMzA5LDEzLjUtMTAuNTE1LDI0LjY4NC0xMC41MTUsMTEuMzQ1LDAsMjAuOTE5LDQuMTUsMjQuNjgzLDEwLjUxNVpNMzc2LjQsMjY1Ljk2MmwtNTkuODI3LTg5LjcxM2gtMjl2NDAuNjIzaDI2LjUxdi4zODdsNjIuNTM5LDk0LjA4NUg0MDIuM1YxNzYuMjQ5SDM3Ni40WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOdXRyaXRpb25peCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDAwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04OCA4LjFTMjIxLjQtLjEgMjA5IDExMi41YzAgMCAxOS4xLTc0LjkgMTAzLTQwLjYgMCAwLTE3LjcgNzQtODggNTYgMCAwIDE0LjYtNTQuNiA2Ni4xLTU2LjYgMCAwLTM5LjktMTAuMy04Mi4xIDQ4LjggMCAwLTE5LjgtOTQuNS05My42LTk5LjcgMCAwIDc1LjIgMTkuNCA3Ny42IDEwNy41IDAgLjEtMTA2LjQgNy0xMDQtMTE5Ljh6bTMxMiAzMTUuNmMwIDQ4LjUtOS43IDk1LjMtMzIgMTMyLjMtNDIuMiAzMC45LTEwNSA0OC0xNjggNDgtNjIuOSAwLTEyNS44LTE3LjEtMTY4LTQ4QzkuNyA0MTkgMCAzNzIuMiAwIDMyMy43IDAgMjc1LjMgMTcuNyAyMjkgNDAgMTkyYzQyLjItMzAuOSA5Ny4xLTQ4LjYgMTYwLTQ4LjYgNjMgMCAxMTcuOCAxNy42IDE2MCA0OC42IDIyLjMgMzcgNDAgODMuMyA0MCAxMzEuN3pNMTIwIDQyOGMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6TTE5MiA0MjhjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4em0wLTY2LjJjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4em0wLTY2LjJjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4ek0yNjQgNDI4YzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHpNMzM2IDQyOGMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTI0LTM5LjZjLTQuOC0yMi4zLTcuNC0zNi45LTE2LTU2LTM4LjgtMTkuOS05MC41LTMyLTE0NC0zMlM5NC44IDE4MC4xIDU2IDIwMGMtOC44IDE5LjUtMTEuMiAzMy45LTE2IDU2IDQyLjItNy45IDk4LjctMTQuOCAxNjAtMTQuOHMxMTcuOCA2LjkgMTYwIDE0Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9jdG9wdXNEZXBsb3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU1LjYsMzQ5LjJjLTQ1Ljg5MS0zOS4wOS0zNi42Ny03Ny44NzctMTYuMDk1LTEyOC4xMUM0NzUuMTYsMTM0LjA0LDQxNS45NjcsMzQuMTQsMzI5LjkzLDguMywyMzcuMDQtMTkuNiwxMzQuMjUyLDI0LjM0MSw5OS42NzcsMTE3LjE0N2ExODAuODYyLDE4MC44NjIsMCwwLDAtMTAuOTg4LDczLjU0NGMxLjczMywyOS41NDMsMTQuNzE3LDUyLjk3LDI0LjA5LDgwLjMsMTcuMiw1MC4xNjEtMjguMSw5Mi43NDMtNjYuNjYyLDExNy41ODItNDYuODA2LDMwLjItMzYuMzE5LDM5Ljg1Ny04LjQyOCw0MS44NTgsMjMuMzc4LDEuNjgsNDQuNDc4LTQuNTQ4LDY1LjI2NS0xNS4wNDUsOS4yLTQuNjQ3LDQwLjY4Ny0xOC45MzEsNDUuMTMtMjguNTg4QzEzNS45LDQxMy4zODgsMTExLjEyMiw0NTkuNSwxMjYuNjIxLDQ4OC45YzE5LjEsMzYuMjI5LDY3LjExMi0zMS43Nyw3Ni43MDktNDUuODEyLDguNTkxLTEyLjU3Miw0Mi45NjMtODEuMjc5LDYzLjYyNy00Ni45MjYsMTguODY1LDMxLjM2MSw4LjYsNzYuMzkxLDM1LjczOCwxMDQuNjIyLDMyLjg1NCwzNC4yLDUxLjE1NS0xOC4zMTIsNTEuNDEyLTQ0LjIyMS4xNjMtMTYuNDExLTYuMS05NS44NTIsMjkuOS01OS45NDRDNDA1LjQyOCw0MTgsNDM2LjkxMiw0NjcuOCw0NzIuNTY4LDQ2My42NDJjMzguNzM2LTQuNTE2LTIyLjEyMy02Ny45NjctMjguMjYyLTc4LjY5NSw1LjM5Myw0LjI3OSw1My42NjUsMzQuMTI4LDUzLjgxOCw5LjUyQzQ5OC4yMzQsMzc1LjY3OCw0NjguMDM5LDM1OS44LDQ1NS42LDM0OS4yWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPZG5va2xhc3NuaWtpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3NS4xIDMzNGMtMjcuNCAxNy40LTY1LjEgMjQuMy05MCAyNi45bDIwLjkgMjAuNiA3Ni4zIDc2LjNjMjcuOSAyOC42LTE3LjUgNzMuMy00NS43IDQ1LjctMTkuMS0xOS40LTQ3LjEtNDcuNC03Ni4zLTc2LjZMODQgNTAzLjRjLTI4LjIgMjcuNS03My42LTE3LjYtNDUuNC00NS43IDE5LjQtMTkuNCA0Ny4xLTQ3LjQgNzYuMy03Ni4zbDIwLjYtMjAuNmMtMjQuNi0yLjYtNjIuOS05LjEtOTAuNi0yNi45LTMyLjYtMjEtNDYuOS0zMy4zLTM0LjMtNTkgNy40LTE0LjYgMjcuNy0yNi45IDU0LjYtNS43IDAgMCAzNi4zIDI4LjkgOTQuOSAyOC45czk0LjktMjguOSA5NC45LTI4LjljMjYuOS0yMS4xIDQ3LjEtOC45IDU0LjYgNS43IDEyLjQgMjUuNy0xLjkgMzgtMzQuNSA1OS4xek0zMC4zIDEyOS43QzMwLjMgNTggODguNiAwIDE2MCAwczEyOS43IDU4IDEyOS43IDEyOS43YzAgNzEuNC01OC4zIDEyOS40LTEyOS43IDEyOS40cy0xMjkuNy01OC0xMjkuNy0xMjkuNHptNjYgMGMwIDM1LjEgMjguNiA2My43IDYzLjcgNjMuN3M2My43LTI4LjYgNjMuNy02My43YzAtMzUuNC0yOC42LTY0LTYzLjctNjRzLTYzLjcgMjguNi02My43IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPZHlzZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA2LjcgNDYzYy00Mi4zIDMwLjgtOTQuNCA0OS0xNTAuNyA0OUMxNDQuOSA1MTIgNTAuMyA0NDEuMiAxNC45IDM0Mi4yYzIuNCAxLjcgNS45IDMuNiA3LjkgNC40YzE2LjMgNy40IDQwLjEtNS40IDYyLjktMjguN2M2LjktNi45IDE0LjQtMTIuNCAyMi44LTE3LjNjMTguMy0xMS45IDM3LjYtMjAuOCA1OC40LTI3LjJjMCAwIDIyLjMgMzQuMiA0My4xIDc0LjhzLTIyLjMgNTQtMjcuMiA1NGMtLjMgMC0uOCAwLTEuNS0uMWMtMTEtLjUtNzAtMy01NiA1MS4xYzE0LjkgNTcuNCA5Ny41IDM2LjYgMTM5LjYgOC45czMxLjctMTE4LjMgMzEuNy0xMTguM2M0MS4xLTYuNCA1NCAzNy4xIDU3LjkgNTkuNGMuOCA0LjYgMS4xIDkuOSAxLjQgMTUuNWMxLjEgMjEuMiAyLjMgNDUuNiAzNS4zIDQ2LjRjNS4zIDAgMTAuNi0uOCAxNS41LTJ6bS05NS4zLTIzLjdjLTItLjUtMy41LTIuNS0zLTVjMS0yLjUgMy0zLjUgNS0zczMuNSAzIDMgNXMtMi41IDMuNS01IDN6bS0yMDctOTUuNmMxLjUtLjUgMy41IDEgNCAzYzAgMi0xIDQtMyA0Yy0xLjUgLjUtMy41LTEtNC0zYy0uNS0xLjUgMS0zLjUgMy00ek00NTEuOCA0MjFDNDg5LjMgMzc2LjQgNTEyIDMxOC44IDUxMiAyNTZjMC02Ny41LTI2LjEtMTI4LjktNjguOC0xNzQuN2MtLjEgMjMuNS02LjEgNDguMi0xNi44IDY5LjJjLTExLjkgMjAuMy00OSA1OC45LTY5LjggNzguN2MtLjcgLjMtMS4xIC45LTEuNSAxLjRjLS4yIC4yLS4zIC40LS41IC42Yy01IDYuOS00IDE2LjggMyAyMS44YzIxLjMgMTUuOCA1Ni40IDQ1LjYgNTkuNCA3Mi44YzMuNSAzNC45IDI3LjkgNzUuNiAzNC4yIDg2LjJsMCAwYy44IDEuMyAxLjMgMi4xIDEuNCAyLjRjMCAyLjItLjQgNC4zLS44IDYuNXpNMzkwLjcgMjUxYy0uNSAzIDEgNS45IDQgNi40czUuOS0xIDYuNC00cy0xLTUuOS00LTYuNGMtMy0xLTUuOSAxLTYuNCA0em02MS40LTYwLjlsLTExLjQgNS40LTMgMTIuOS01LjQtMTEuNC0xMi45LTMgMTEuNC01LjQgMy0xMi45IDUuNCAxMS40IDEyLjkgM3pNMzk1LjUgNDEuM2MtMTYuMiA4LjItMjIuMSAzMi44LTI5IDYxLjRsMCAwYy0uMyAxLjQtLjcgMi44LTEgNC4yYy05LjUgMzguNS0zMC42IDM3LjYtNDEuNyAzNy4yYy0xLjEgMC0yLS4xLTIuOS0uMWMtNS4xIDAtNi00LTguOS0xNy4xYy0yLjYtMTIuMS02LjktMzItMTcuOS02My42QzI3MS40LTIuNSAyMTEuNCAxMy45IDE2NS45IDQxLjFDMTEwLjYgNzQuMiAxMzEuNSAxNDMgMTQ2LjEgMTkwLjVjLjcgMi4yIDEuNCA0LjQgMiA2LjZjLTQgNC0xMy44IDcuNS0yNiAxMS45Yy0xMi4xIDQuMy0yNi42IDkuNS00MC4zIDE2LjlDNDcuOSAyNDMuOSAxMS41IDI3NC45IDIgMjg4LjVDLjcgMjc3LjggMCAyNjcgMCAyNTZDMCAxMTQuNiAxMTQuNiAwIDI1NiAwYzUxLjQgMCA5OS40IDE1LjIgMTM5LjUgNDEuM3pNNTguOSAxODkuNmMtMS41LTItNC41LTMtNi40LTEuNXMtMyA0LjUtMS41IDYuNHM0LjUgMyA2LjQgMS41YzIuNS0xLjUgMy00LjUgMS41LTYuNHpNMzI3LjMgNjQuOWMyLTEuNSA1LS41IDYuNCAxLjVjMS41IDIuNSAxIDUuNC0xLjUgNi40Yy0yIDEuNS01IC41LTYuNC0xLjVzLS41LTUgMS41LTYuNHpNOTUuMSAxMDVjLS41IDEuNSAuNSAzIDIgM2MxLjUgLjUgMy0uNSAzLTJjLjUtMS41LS41LTMtMi0zcy0zIC41LTMgMnptODQuNy0uNWMtMy41LTQzLjEgMzcuMS01NCAzNy4xLTU0YzQ0LjEtMTUuNCA1NiA1LjkgNjYuNCAzNy42czMgNDIuNi0zOC42IDU4LjlzLTYxLjktNC41LTY0LjktNDIuNnptODkuNiAxNC45aDFjMi41IDAgNS0yIDUtNWMyLTYuOSAxLTE0LjQtMi0yMC44Yy0xLjUtMi00LTMuNS02LjQtMi41Yy0zIDEtNC41IDQtMy41IDYuOWMyIDQuNSAzIDkuOSAxLjUgMTQuOWMtLjUgMyAxLjUgNS45IDQuNSA2LjR6bS05LjktNDEuNmMtMiAwLTQtMS01LTNzLTItMy41LTMtNWMtMi0yLTItNS40IDAtNy40czUuNC0yIDcuNCAwYzIgMi41IDMuNSA1IDUgNy40cy41IDUuOS0yLjUgNy40Yy0uNiAwLTEgLjItMS4zIC4zYy0uMiAuMS0uNCAuMi0uNiAuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2xkUmVwdWJsaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjM1Ljc2IDEwLjIzYzcuNS0uMzEgMTUtLjI4IDIyLjUtLjA5IDMuNjEuMTQgNy4yLjQgMTAuNzkuNzMgNC45Mi4yNyA5Ljc5IDEuMDMgMTQuNjcgMS42MiAyLjkzLjQzIDUuODMuOTggOC43NSAxLjQ2IDcuOSAxLjMzIDE1LjY3IDMuMjggMjMuMzkgNS40IDEyLjI0IDMuNDcgMjQuMTkgNy45MiAzNS43NiAxMy4yMSAyNi41NiAxMi4yNCA1MC45NCAyOS4yMSA3MS42MyA0OS44OCAyMC4wMyAyMC4wOSAzNi43MiA0My41NSA0OC44OSA2OS4xOSAxLjEzIDIuNTkgMi40NCA1LjEgMy40NyA3Ljc0IDIuODEgNi40MyA1LjM5IDEyLjk3IDcuNTggMTkuNjMgNC4xNCAxMi4zMyA3LjM0IDI0Ljk5IDkuNDIgMzcuODMuNTcgMy4xNCAxLjA0IDYuMyAxLjQgOS40Ny41NSAzLjgzLjk0IDcuNjkgMS4xOCAxMS41Ni44MyA4LjM0Ljg0IDE2LjczLjc3IDI1LjEtLjA3IDQuOTctLjI2IDkuOTQtLjc1IDE0Ljg5LS4yNCAzLjM4LS41MSA2Ljc2LS45OCAxMC4xMi0uMzkgMi43Mi0uNjMgNS40Ni0xLjExIDguMTctLjkgNS4xNS0xLjcgMTAuMzEtMi44NyAxNS40MS00LjEgMTguNS0xMC4zIDM2LjU1LTE4LjUxIDUzLjYzLTE1Ljc3IDMyLjgzLTM4LjgzIDYyLjE3LTY3LjEyIDg1LjEyYTI0Ni41MDMgMjQ2LjUwMyAwIDAgMS01Ni45MSAzNC44NmMtNi4yMSAyLjY4LTEyLjQ2IDUuMjUtMTguODcgNy40MS0zLjUxIDEuMTYtNy4wMSAyLjM4LTEwLjU3IDMuMzktNi42MiAxLjg4LTEzLjI5IDMuNjQtMjAuMDQgNS00LjY2LjkxLTkuMzQgMS43My0xNC4wMyAyLjQ4LTUuMjUuNjYtMTAuNSAxLjQ0LTE1Ljc5IDEuNzQtNi42OS42Ni0xMy40MS44NC0yMC4xMi44MS02LjgyLjAzLTEzLjY1LS4xMi0yMC40NS0uNzktMy4yOS0uMjMtNi41Ny0uNS05LjgzLS45NS0yLjcyLS4zOS01LjQ2LS42My04LjE3LTEuMTEtNC4xMi0uNzItOC4yNS0xLjM3LTEyLjM1LTIuMjItNC4yNS0uOTQtOC40OS0xLjg5LTEyLjY5LTMuMDItOC42My0yLjE3LTE3LjA4LTUuMDEtMjUuNDEtOC4xMy0xMC40OS00LjEyLTIwLjc5LTguNzUtMzAuNjQtMTQuMjUtMi4xNC0xLjE1LTQuMjgtMi4yOS02LjM1LTMuNTctMTEuMjItNi41OC0yMS44Ni0xNC4xLTMxLjkyLTIyLjM0LTM0LjY4LTI4LjQxLTYxLjQxLTY2LjQzLTc2LjM1LTEwOC43LTMuMDktOC43NC01LjcxLTE3LjY1LTcuOC0yNi42OC0xLjQ4LTYuMTYtMi41Mi0xMi40Mi0zLjU4LTE4LjY2LS40LTIuMzUtLjYxLTQuNzMtLjk1LTcuMDktLjYtMy45Ni0uNzUtNy45Ni0xLjE3LTExLjk0LS44LTkuNDctLjcxLTE4Ljk5LS41MS0yOC40OS4xNC0zLjUxLjM0LTcuMDEuNy0xMC41MS4zMS0zLjE3LjQ2LTYuMzcuOTItOS41Mi40MS0yLjgxLjY1LTUuNjUgMS4xNi04LjQ0LjctMy45NCAxLjMtNy45IDIuMTItMTEuODIgMy40My0xNi41MiA4LjQ3LTMyLjczIDE1LjI2LTQ4LjE4IDEuMTUtMi45MiAyLjU5LTUuNzIgMy44Ni04LjU5IDguMDUtMTYuNzEgMTcuOS0zMi41NiAyOS40OS00Ny4wNiAyMC0yNS4zOCA0NS4xLTQ2LjY4IDczLjI3LTYyLjQ3IDcuNS00LjE1IDE1LjE2LTguMDUgMjMuMDctMTEuMzcgMTUuODItNi44OCAzMi40MS0xMS45NSA0OS4zMS0xNS4zOCAzLjUxLS42NyA3LjA0LTEuMjQgMTAuNTYtMS44NSAyLjYyLS40NyA1LjI4LS43IDcuOTEtMS4wOCAzLjUzLS41MyA3LjEtLjY4IDEwLjY1LTEuMDQgMi40Ni0uMjQgNC45MS0uMzYgNy4zNi0uNTFtOC42NCAyNC40MWMtOS4yMy4xLTE4LjQzLjk5LTI3LjU3IDIuMjMtNy4zIDEuMDgtMTQuNTMgMi42LTIxLjcxIDQuMy0xMy45MSAzLjUtMjcuNDggOC4zNC00MC40NiAxNC40Mi0xMC40NiA0Ljk5LTIwLjU5IDEwLjctMzAuMTggMTcuMjItNC4xOCAyLjkyLTguNCA1LjgtMTIuMzQgOS4wMy01LjA4IDMuOTctOS45OCA4LjE3LTE0LjY4IDEyLjU5LTIuNTEgMi4yNC00LjgxIDQuNy03LjIyIDcuMDYtMjguMjIgMjguNzktNDguNDQgNjUuMzktNTcuNSAxMDQuNjktMi4wNCA4LjQ0LTMuNTQgMTcuMDItNC40NCAyNS42NS0xLjEgOC44OS0xLjQ0IDE3Ljg1LTEuNDEgMjYuOC4xMSA3LjE0LjM4IDE0LjI4IDEuMjIgMjEuMzcuNjIgNy4xMiAxLjg3IDE0LjE2IDMuMiAyMS4xOCAxLjA3IDQuNjUgMi4wMyA5LjMyIDMuMzMgMTMuOTEgNi4yOSAyMy4zOCAxNi41IDQ1LjcgMzAuMDcgNjUuNzUgOC42NCAxMi45OCAxOC43OCAyNC45MyAyOS45OCAzNS43NyAxNi4yOCAxNS44MiAzNS4wNSAyOS4wNCA1NS4zNCAzOS4yMiA3LjI4IDMuNTIgMTQuNjYgNi44NyAyMi4yNyA5LjYzIDUuMDQgMS43NiAxMC4wNiAzLjU3IDE1LjIyIDQuOTggMTEuMjYgMy4yMyAyMi43NyA1LjYgMzQuMzkgNy4wNiAyLjkxLjI5IDUuODEuNjEgOC43Mi45IDEzLjgyIDEuMDggMjcuNzQgMSA0MS41NC0uNDMgNC40NS0uNiA4LjkyLS45OSAxMy4zNS0xLjc4IDMuNjMtLjY3IDcuMjgtMS4yNSAxMC44Ny0yLjEgNC4xMy0uOTggOC4yOC0xLjkxIDEyLjM2LTMuMDcgMjYuNS03LjM0IDUxLjU4LTE5LjcxIDczLjU4LTM2LjIgMTUuNzgtMTEuODIgMjkuOTYtMjUuNzYgNDIuMTItNDEuMjggMy4yNi00LjAyIDYuMTctOC4zMSA5LjEzLTEyLjU1IDMuMzktNS4wNiA2LjU4LTEwLjI1IDkuNi0xNS41NCAyLjQtNC40NCA0Ljc0LTguOTEgNi45NS0xMy40NSA1LjY5LTEyLjA1IDEwLjI4LTI0LjYyIDEzLjc1LTM3LjQ5IDIuNTktMTAuMDEgNC43NS0yMC4xNiA1LjktMzAuNDUgMS43Ny0xMy40NyAxLjk0LTI3LjEgMS4yOS00MC42NS0uMjktMy44OS0uNjctNy43Ny0xLTExLjY2LTIuMjMtMTkuMDgtNi43OS0zNy45MS0xMy44Mi01NS44LTUuOTUtMTUuMTMtMTMuNTMtMjkuNjMtMjIuNjEtNDMuMTMtMTIuNjktMTguOC0yOC4yNC0zNS42OC00NS45Ny00OS44My0yNS4wNS0yMC01NC40Ny0zNC41NS04NS42NS00Mi4wOC03Ljc4LTEuOTMtMTUuNjktMy4zNC0yMy42My00LjQ1LTMuOTEtLjU5LTcuODUtLjgyLTExLjc3LTEuMjQtNy4zOS0uNTctMTQuODEtLjcyLTIyLjIyLS41OHpNMTM5LjI2IDgzLjUzYzEzLjMtOC44OSAyOC4wOC0xNS4zOCA0My4zLTIwLjE4LTMuMTcgMS43Ny02LjQ0IDMuMzgtOS41MyA1LjI5LTExLjIxIDYuNjgtMjEuNTIgMTQuOS0zMC4zOCAyNC40OS02LjggNy40My0xMi43NiAxNS43My0xNy4wMSAyNC44OS0zLjI5IDYuODYtNS42NCAxNC4xOS02Ljg2IDIxLjcxLS45MyA0Ljg1LTEuMyA5LjgxLTEuMTcgMTQuNzUuMTMgMTMuNjYgNC40NCAyNy4wOCAxMS4yOSAzOC44MiA1LjkyIDEwLjIyIDEzLjYzIDE5LjMzIDIyLjM2IDI3LjI2IDQuODUgNC4zNiAxMC4yNCA4LjA5IDE0Ljk1IDEyLjYgMi4yNiAyLjE5IDQuNDkgNC40MiA2LjQzIDYuOTEgMi42MiAzLjMxIDQuODkgNi45OSA1Ljk5IDExLjEuOSAzLjAyLjY2IDYuMi42OSA5LjMxLjAyIDQuMS0uMDQgOC4yLjAzIDEyLjMuMTQgMy41NC0uMDIgNy4wOS4xMSAxMC42My4wOCAyLjM4LjAyIDQuNzYuMDUgNy4xNC4xNiA1Ljc3LjA2IDExLjUzLjE1IDE3LjMuMTEgMi45MS4wMiA1LjgyLjEzIDguNzQuMDMgMS42My4xMyAzLjI4LS4wMyA0LjkxLS45MS4xMi0xLjgyLjE4LTIuNzMuMTYtMTAuOTkgMC0yMS44OC0yLjYzLTMxLjk1LTYuOTMtNi0yLjctMTEuODEtNS44OS0xNy4wOS05LjgzLTUuNzUtNC4xOS0xMS4wOS04Ljk2LTE1Ljc5LTE0LjMxLTYuNTMtNy4yNC0xMS45OC0xNS4zOS0xNi42Mi0yMy45NS0xLjA3LTIuMDMtMi4yNC00LjAyLTMuMTgtNi4xMi0xLjE2LTIuNjQtMi42Mi01LjE0LTMuNjctNy44Mi00LjA1LTkuNjgtNi41Ny0xOS45NC04LjA4LTMwLjMxLS40OS00LjQ0LTEuMDktOC44OC0xLjItMTMuMzUtLjctMTUuNzMuODQtMzEuNTUgNC42Ny00Ni44MiAyLjEyLTguMTUgNC43Ny0xNi4xOCA4LjMxLTIzLjgzIDYuMzItMTQuMiAxNS4zNC0yNy4xOCAyNi4zLTM4LjE5IDYuMjgtNi4yIDEzLjEzLTExLjg0IDIwLjUzLTE2LjY3em0xNzUuMzctMjAuMTJjMi43NC43NCA1LjQxIDEuNzQgOC4wOSAyLjY4IDYuMzYgMi4zMyAxMi42OCA0Ljg0IDE4LjcxIDcuOTYgMTMuMTEgNi40NCAyNS4zMSAxNC44MSAzNS44MiAyNC45NyAxMC4yIDkuOTUgMTguNzQgMjEuNiAyNS4xNCAzNC4zNCAxLjI4IDIuNzUgMi42NCA1LjQ2IDMuODEgOC4yNiA2LjMxIDE1LjEgMTAgMzEuMjYgMTEuMjMgNDcuNTcuNDEgNC41NC40NCA5LjA5LjQ1IDEzLjY0LjA3IDExLjY0LTEuNDkgMjMuMjUtNC4zIDM0LjUzLTEuOTcgNy4yNy00LjM1IDE0LjQ5LTcuODYgMjEuMTgtMy4xOCA2LjY0LTYuNjggMTMuMTYtMTAuODQgMTkuMjQtNi45NCAxMC40Ny0xNS42IDE5Ljg3LTI1LjgyIDI3LjIyLTEwLjQ4IDcuNjQtMjIuNjQgMTMuMDItMzUuNCAxNS4zOC0zLjUxLjY5LTcuMDggMS4wOC0xMC42NiAxLjIxLTEuODUuMDYtMy43Mi4xNi01LjU2LS4xLS4yOC0yLjE1IDAtNC4zMS0uMDEtNi40Ni0uMDMtMy43My4xNC03LjQ1LjEtMTEuMTcuMTktNy4wMi4wMi0xNC4wNS4yMS0yMS4wNy4wMy0yLjM4LS4wMy00Ljc2LjAzLTcuMTQuMTctNS4wNy0uMDQtMTAuMTQuMTQtMTUuMjEuMS0yLjk5LS4yNC02LjA0LjUxLTguOTYuNjYtMi41IDEuNzgtNC44NiAzLjA5LTcuMDggNC40Ni03LjMxIDExLjA2LTEyLjk2IDE3LjY4LTE4LjI2IDUuMzgtNC4xOCAxMC40Ny04Ljc3IDE1LjAyLTEzLjg0IDcuNjgtOC4zNyAxNC4xNy0xNy44OCAxOC43OC0yOC4yNyAyLjUtNS45MyA0LjUyLTEyLjEgNS41NS0xOC40Ni44Ni00LjM3IDEuMDYtOC44MyAxLjAxLTEzLjI3LS4wMi03Ljg1LTEuNC0xNS42NS0zLjY0LTIzLjE3LTEuNzUtNS43My00LjI3LTExLjE4LTcuMDktMTYuNDUtMy44Ny02LjkzLTguNjUtMTMuMzEtMTMuOTYtMTkuMi05Ljk0LTEwLjg1LTIxLjc1LTE5Ljk0LTM0LjYtMjcuMS0xLjg1LTEuMDItMy44NC0xLjgyLTUuNjMtMi45N3ptLTEwMC44IDU4LjQ1Yy45OC0xLjE4IDEuOTktMi4zMyAzLjEyLTMuMzgtLjYxLjkzLTEuMjcgMS44MS0xLjk1IDIuNjgtMy4xIDMuODgtNS41NCA4LjMxLTcuMDMgMTMuMDYtLjg3IDMuMjctMS42OCA2LjYtMS43MyAxMC0uMDcgMi41Mi0uMDggNS4wNy4zMiA3LjU3IDEuMTMgNy42MyA0LjMzIDE0Ljg1IDguNzcgMjEuMTIgMiAyLjcgNC4yNSA1LjI3IDYuOTIgNy4zMyAxLjYyIDEuMjcgMy41MyAyLjA5IDUuMzQgMy4wNSAzLjExIDEuNjggNi4zMiAzLjIzIDkuMDcgNS40OCAyLjY3IDIuMDkgNC41NSA1LjMzIDQuNCA4Ljc5LS4wMSA3My42NyAwIDE0Ny4zNC0uMDEgMjIxLjAyIDAgMS4zNS0uMDggMi43LjA0IDQuMDQuMTMgMS40OC44MiAyLjgzIDEuNDcgNC4xNS44NiAxLjY2IDEuNzggMy4zNCAzLjE4IDQuNjIuODUuNzcgMS45NyAxLjQgMy4xNSAxLjI0IDEuNS0uMiAyLjY2LTEuMzUgMy40NS0yLjU3Ljk2LTEuNTEgMS42OC0zLjE2IDIuMjgtNC44NS43Ni0yLjEzLjQ0LTQuNDIuNTQtNi42My4xNC00LjAzLS4wMi04LjA2LjE0LTEyLjA5LjAzLTUuODkuMDMtMTEuNzcuMDYtMTcuNjYuMTQtMy42Mi4wMy03LjI0LjExLTEwLjg2LjE1LTQuMDMtLjAyLTguMDYuMTQtMTIuMDkuMDMtNS45OS4wMy0xMS45OC4wNy0xNy45Ny4xNC0zLjYyLjAyLTcuMjQuMTEtMTAuODYuMTQtMy45My0uMDItNy44Ni4xNC0xMS43OC4wMy01Ljk5LjAzLTExLjk4LjA2LTE3Ljk3LjE2LTMuOTQtLjAxLTcuODguMTktMTEuODIuMjkgMS40NC4xMyAyLjkyLjIyIDQuMzguMTkgMy42MS40MiA3LjIzLjc2IDEwLjg0LjMyIDMuNDQuNDQgNi44OS44NiAxMC4zMi4zNyAzLjEuNTEgNi4yMi45NSA5LjMxLjU3IDQuMDkuODcgOC4yMSAxLjU0IDEyLjI5IDEuNDYgOS4wNCAyLjgzIDE4LjExIDUuMDkgMjYuOTkgMS4xMyA0LjgyIDIuNCA5LjYxIDQgMTQuMyAyLjU0IDcuOSA1LjcyIDE1LjY3IDEwLjMxIDIyLjYyIDEuNzMgMi42NCAzLjg3IDQuOTggNi4xIDcuMjEuMjcuMjUuNTUuNTEuODguNzEuNi4yNSAxLjMxLS4wNyAxLjctLjU3LjcxLS44OCAxLjE3LTEuOTQgMS43LTIuOTMgNC4wNS03LjggOC4xOC0xNS41NiAxMi4zNC0yMy4zMS43LTEuMzEgMS40NC0yLjYyIDIuNTYtMy42MSAxLjc1LTEuNTcgMy44NC0yLjY5IDUuOTgtMy42MyAyLjg4LTEuMjIgNS45LTIuMTkgOS4wMy0yLjQyIDYuNTgtLjYyIDEzLjExLjc1IDE5LjU2IDEuODUgMy42OS41OCA3LjQgMS4xNyAxMS4xMyAxLjQxIDMuNzQuMSA3LjQ4LjA1IDExLjIxLS4yOCA4LjU1LS45MiAxNi45OS0yLjk2IDI0Ljk0LTYuMjUgNS4zLTIuMjQgMTAuNDYtNC44MyAxNS4zMS03LjkzIDExLjQ2LTcuMjEgMjEuNDYtMTYuNTcgMzAuMDQtMjcuMDEgMS4xNy0xLjQyIDIuMjUtMi45IDMuNDYtNC4yOC0xLjIgMy4yNC0yLjY3IDYuMzctNC4xNiA5LjQ4LTEuMjUgMi45LTIuODQgNS42MS00LjI3IDguNDItNS4xNiA5LjYzLTExLjAyIDE4LjkxLTE3Ljc1IDI3LjUyLTQuMDMgNS4yMS04LjUzIDEwLjA1LTEzLjMzIDE0LjU3LTYuNjQgNi4wNS0xNC4wNyAxMS4zNy0yMi40MyAxNC43Ni04LjIxIDMuMzctMTcuMzEgNC42My0yNi4wOSAzLjI5LTMuNTYtLjU4LTcuMDEtMS42OS0xMC40MS0yLjg4LTIuNzktLjk3LTUuMzktMi4zOC04LjAzLTMuNjktMy40My0xLjcxLTYuNjQtMy44MS05LjcxLTYuMDggMi43MSAzLjA2IDUuNjkgNS44NiA4LjcgOC42MSA0LjI3IDMuNzYgOC43NCA3LjMxIDEzLjYzIDEwLjIzIDMuOTggMi40NSA4LjI5IDQuNCAxMi44NCA1LjUxIDEuNDYuMzcgMi45Ni40NiA0LjQ1LjYtMS4yNSAxLjEtMi42MyAyLjA0LTMuOTkgMi45OC05LjYxIDYuNTQtMjAuMDEgMTEuODYtMzAuNjkgMTYuNDMtMjAuODYgOC43LTQzLjE3IDEzLjk3LTY1Ljc0IDE1LjM0LTQuNjYuMjQtOS4zMi4zNi0xMy45OC4zNi00Ljk4LS4xMS05Ljk3LS4xMy0xNC45Mi0uNjUtMTEuMi0uNzYtMjIuMjktMi43My0zMy4xNy01LjQzLTEwLjM1LTIuNzEtMjAuNTUtNi4xMi0zMC4zLTEwLjU1LTguNzEtMy44Ni0xNy4xMi04LjQyLTI0Ljk5LTEzLjc5LTEuODMtMS4zMS0zLjc0LTIuNTMtNS4zNy00LjA4IDYuNi0xLjE5IDEzLjAzLTMuMzkgMTguOTktNi40OCA1Ljc0LTIuODYgMTAuOTktNi42NiAxNS42My0xMS4wNyAyLjI0LTIuMTkgNC4yOS00LjU5IDYuMTktNy4wOS0zLjQzIDIuMTMtNi45MyA0LjE1LTEwLjYyIDUuNzgtNC40MSAyLjE2LTkuMDcgMy43Ny0xMy44MSA1LjAyLTUuNzMgMS41Mi0xMS43NCAxLjczLTE3LjYxIDEuMTQtOC4xMy0uOTUtMTUuODYtNC4yNy0yMi41MS04Ljk4LTQuMzItMi45NC04LjIyLTYuNDMtMTEuOTYtMTAuMDYtOS45My0xMC4xNi0xOC4yLTIxLjgxLTI1LjY2LTMzLjg2LTMuOTQtNi4yNy03LjUzLTEyLjc1LTExLjEyLTE5LjIyLTEuMDUtMi4wNC0yLjE1LTQuMDUtMy4xOC02LjEgMi44NSAyLjkyIDUuNTcgNS45NyA4LjQzIDguODggOC45OSA4Ljk3IDE4LjU2IDE3LjQ0IDI5LjE2IDI0LjQ4IDcuNTUgNC45IDE1LjY3IDkuMjMgMjQuNTYgMTEuMDMgMy4xMS43MyA2LjMyLjQ3IDkuNDcuODEgMi43Ny4yOCA1LjU2LjIgOC4zNC4zIDUuMDUuMDYgMTAuMTEuMDQgMTUuMTYtLjE2IDMuNjUtLjE2IDcuMjctLjY2IDEwLjg5LTEuMDkgMi4wNy0uMjUgNC4xMS0uNzEgNi4xNC0xLjIgMy44OC0uOTUgOC4xMS0uOTYgMTEuODMuNjEgNC43NiAxLjg1IDguNDQgNS42NCAxMS4zOCA5LjcxIDIuMTYgMy4wMiA0LjA2IDYuMjIgNS42NiA5LjU4IDEuMTYgMi40MyAyLjQ2IDQuNzkgMy41NSA3LjI2IDEgMi4yNCAyLjE1IDQuNDIgMy40MiA2LjUyLjY3IDEuMDIgMS40IDIuMTUgMi42MiAyLjU1IDEuMDYtLjc1IDEuNzEtMS45MSAyLjI4LTMuMDMgMi4xLTQuMTYgMy40Mi04LjY1IDQuODktMTMuMDUgMi4wMi02LjU5IDMuNzgtMTMuMjcgNS4xOS0yMC4wMiAyLjIxLTkuMjUgMy4yNS0xOC43MiA0LjU0LTI4LjEzLjU2LTMuOTguODMtNy45OSAxLjMxLTExLjk3Ljg3LTEwLjY0IDEuOS0yMS4yNyAyLjI0LTMxLjk0LjA4LTEuODYuMjQtMy43MS4yNS01LjU3LjAxLTQuMzUuMjUtOC42OS4yMi0xMy4wMy0uMDEtMi4zOC0uMDEtNC43NiAwLTcuMTMuMDUtNS4wNy0uMi0xMC4xNC0uMjItMTUuMjEtLjItNi42MS0uNzEtMTMuMi0xLjI5LTE5Ljc4LS43My01Ljg4LTEuNTUtMTEuNzgtMy4xMi0xNy41MS0yLjA1LTcuNzUtNS41OS0xNS4wMy05LjgtMjEuODItMy4xNi01LjA3LTYuNzktOS44OC0xMS4wOS0xNC4wMy0zLjg4LTMuODYtOC41OC03LjA4LTEzLjk0LTguNDUtMS41LS40MS0zLjA2LS40NS00LjU5LS42NC4wNy0yLjk5LjctNS45MyAxLjI2LTguODUgMS41OS03LjcxIDMuOC0xNS4zIDYuNzYtMjIuNiAxLjUyLTQuMDMgMy40MS03LjkgNS4zOS0xMS43MiAzLjQ1LTYuNTYgNy42Mi0xMi43OSAxMi40Ni0xOC40NnptMzEuMjcgMS43Yy4zNS0uMDYuNzEtLjEyIDEuMDctLjE5LjE5IDEuNzkuMDkgMy41OC4xIDUuMzd2MzguMTNjLS4wMSAxLjc0LjEzIDMuNDktLjE1IDUuMjItLjM2LS4wMy0uNzEtLjA1LTEuMDYtLjA1LS45NS0zLjc1LTEuNzItNy41NS0yLjYyLTExLjMxLS4zOC0xLjUzLS41OC0zLjA5LTEuMDctNC41OS0xLjctLjI0LTMuNDMtLjE3LTUuMTUtLjItNS4wNi0uMDEtMTAuMTMgMC0xNS4xOS0uMDEtMS42Ni0uMDEtMy4zMi4wOS00Ljk4LS4wMy0uMDMtLjM5LS4yNi0uOTEuMTYtMS4xOCAxLjI4LS42NSAyLjcyLS44OCA0LjA2LTEuMzUgMy40My0xLjE0IDYuODgtMi4xNiAxMC4zMS0zLjMxIDEuMzktLjQ4IDIuOS0uNzIgNC4xNi0xLjU0LjA0LS41Ni4wMi0xLjEzLS4wNS0xLjY4LTEuMjMtLjU1LTIuNTMtLjg3LTMuODEtMS4yOC0zLjEzLTEuMDMtNi4yOS0xLjk2LTkuNDEtMy4wMi0xLjc5LS42Mi0zLjY3LTEtNS40MS0xLjc5LS4wMy0uMzctLjA3LS43My0uMTEtMS4wOSA1LjA5LS4xOSAxMC4yLjA2IDE1LjMtLjEyIDMuMzYtLjEzIDYuNzMuMDggMTAuMDktLjA3LjEyLS4zOS4yNi0uNzcuMzctMS4xNiAxLjA4LTQuOTQgMi4zMy05LjgzIDMuMzktMTQuNzV6bTUuOTctLjJjLjM2LjA1LjcyLjEyIDEuMDguMi45OCAzLjg1IDEuNzMgNy43NiAyLjcxIDExLjYxLjM2IDEuNDIuNTYgMi44OCAxLjAzIDQuMjcgMi41My4xOCA1LjA3LS4wMSA3LjYxLjA1IDUuMTYuMTIgMTAuMzMuMTIgMTUuNDkuMDcuNzYtLjAxIDEuNTIuMDMgMi4yOC4wOC0uMDQuMzYtLjA3LjcyLS4xIDEuMDgtMS44Mi44My0zLjc4IDEuMjUtNS42NyAxLjg5LTMuNzMgMS4yMy03LjQ4IDIuMzktMTEuMjIgMy41Ny0uNTcuMTctMS4xMi40Mi0xLjY3LjY0LS4xNS41NS0uMTggMS4xMi0uMTIgMS42OS44Ny40OCAxLjgyLjgxIDIuNzcgMS4wOSA0Ljg4IDEuNTIgOS43MyAzLjE0IDE0LjYzIDQuNi4zOC4xMy43OC4yNyAxLjEzLjQ5LjQuMjcuMjMuNzkuMTUgMS4xOC0xLjY2LjEzLTMuMzEuMDMtNC45Ny4wNC01LjE3LjAxLTEwLjMzLS4wMS0xNS41LjAxLTEuNjEuMDMtMy4yMi0uMDItNC44Mi4yMS0uNTIgMS42Ny0uNzIgMy40Mi0xLjE3IDUuMTEtLjk0IDMuNTctMS41MiA3LjI0LTIuNTQgMTAuNzgtLjM2LjAxLS43MS4wMi0xLjA2LjA2LS4yOS0xLjczLS4xNS0zLjQ4LS4xNS01LjIydi0zOC4xM2MuMDItMS43OC0uMDgtMy41OC4xMS01LjM3ek02NS4wNSAxNjguMzNjMS4xMi0yLjE1IDIuMDgtNC40IDMuMzctNi40Ni0xLjgyIDcuNTYtMi45MSAxNS4yNy0zLjYyIDIzLS44IDcuNzEtLjg1IDE1LjQ5LS41NCAyMy4yMyAxLjA1IDE5Ljk0IDUuNTQgMzkuODMgMTQuMjMgNTcuODggMi45OSA1Ljk5IDYuMzUgMTEuODMgMTAuNSAxNy4xMSA2LjEyIDcuNDcgMTIuNTMgMTQuNzYgMTkuODQgMjEuMDkgNC44IDQuMSA5Ljk5IDcuNzggMTUuNTQgMTAuOCAzLjI3IDEuNjUgNi41MSAzLjM5IDkuOTQgNC42OCA1LjAxIDIuMDMgMTAuMTkgMy42MSAxNS40MiA0Ljk0IDMuODMuOTYgNy43OCAxLjQxIDExLjUyIDIuNzEgNSAxLjU3IDkuNDcgNC42MSAxMy4wMyA4LjQzIDQuOTMgNS4yMyA4LjA5IDExLjg3IDEwLjIgMTguNjcuOTkgMi45IDEuNTkgNS45MSAyLjE3IDguOTIuMTUuNzUuMjIgMS41Mi4xNiAyLjI5LTYuNSAyLjc4LTEzLjI2IDUuMDYtMjAuMjYgNi4xOC00LjExLjc4LTguMjkuOTktMTIuNDYgMS4wOC0xMC4yNS4yNC0yMC40Ny0xLjc2LTMwLjEyLTUuMTItMy43NC0xLjQyLTcuNDktMi44NS0xMS4wMy00LjcyLTguMDYtMy44NC0xNS42NC04LjctMjIuNDYtMTQuNDYtMi45Mi0yLjU1LTUuODMtNS4xMy04LjQtOC4wMy05LjE2LTkuODMtMTYuMy0yMS40MS0yMS43OS0zMy42NS0yLjM5LTUuNTUtNC42MS0xMS4xOC02LjM3LTE2Ljk2LTEuMTctMy45NC0yLjM2LTcuODktMy4yNi0xMS45MS0uNzUtMi45NC0xLjIyLTUuOTUtMS44Ny04LjkyLS40Ni0yLjE0LS42OS00LjMyLTEuMDMtNi40OC0uODUtNS40My0xLjI4LTEwLjkzLTEuMzMtMTYuNDMuMTEtNi4xOC4yNS0xMi4zNyAxLjA3LTE4LjUuNC0yLjg2LjY3LTUuNzQgMS4xNS04LjYuOTgtNS43IDIuMTQtMTEuMzcgMy43MS0xNi45MyAzLjA5LTExLjY1IDcuNDgtMjIuOTUgMTIuNjktMzMuODR6bTM2My43My02LjQ0YzEuMSAxLjY2IDEuOTEgMy40OCAyLjc4IDUuMjYgMi4xIDQuNDUgNC4yNCA4LjkgNi4wMiAxMy40OSA3LjYxIDE4Ljc2IDEyLjMgMzguNzkgMTMuMDQgNTkuMDUuMDIgMS43Ni4wNyAzLjUyLjExIDUuMjkuMTMgOS41Ny0xLjI3IDE5LjA5LTMuMTggMjguNDUtLjczIDMuNTktMS41NCA3LjE3LTIuNTggMTAuNjktNC4wNCAxNC43Mi0xMCAyOS0xOC40MSA0MS43OC04LjIxIDEyLjU3LTE5LjAxIDIzLjU1LTMxLjg0IDMxLjQxLTUuNzMgMy41OS0xMS43OSA2LjY0LTE4LjA1IDkuMTktNS43OCAyLjE5LTExLjcxIDQuMDMtMTcuOCA1LjExLTYuNCAxLjA1LTEyLjkxIDEuNTItMTkuNCAxLjIzLTcuOTItLjQ4LTE1Ljc4LTIuMDctMjMuMjEtNC44NS0xLjk0LS44LTMuOTQtMS40Ni01Ljg0LTIuMzMtLjIxLTEuNTEuMjUtMi45OS41My00LjQ2IDEuMTYtNS43NCAzLjAzLTExLjM2IDUuNy0xNi41OCAyLjM3LTQuNTEgNS41Mi04LjY1IDkuNDYtMTEuOSAyLjQzLTIuMDUgNS4yNC0zLjYxIDguMTYtNC44MyAzLjU4LTEuNSA3LjQ3LTEuOTcgMTEuMjQtMi44MyA3LjIzLTEuNzEgMTQuMzctMy45MyAyMS4xNS03IDEwLjM1LTQuNjUgMTkuNzEtMTEuMzggMjcuNjUtMTkuNDYgMS41OS0xLjYxIDMuMjMtMy4xOCA0Ljc0LTQuODcgMy4zNy0zLjc2IDYuNzEtNy41NyA5Ljg1LTExLjUzIDcuNDgtMTAuMDcgMTIuODItMjEuNTkgMTYuNzEtMzMuNDggMS41OC01LjMgMy4yMS0xMC42IDQuMjEtMTYuMDUuNjMtMi44NyAxLjA0LTUuNzggMS41Mi04LjY4Ljg3LTYuMDkgMS41OS0xMi4yMiAxLjY4LTE4LjM4LjEyLTYuNjUuMTQtMTMuMzItLjUzLTE5Ljk0LS43My03Ljk5LTEuODctMTUuOTYtMy43MS0yMy43OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT3BlbmNhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIzLjMgNDQwLjdjMCAyNS4zLTIwLjMgNDUuNi00NS42IDQ1LjZzLTQ1LjgtMjAuMy00NS44LTQ1LjYgMjAuNi00NS44IDQ1LjgtNDUuOGMyNS40IDAgNDUuNiAyMC41IDQ1LjYgNDUuOHptLTI1My45LTQ1LjhjLTI1LjMgMC00NS42IDIwLjYtNDUuNiA0NS44czIwLjMgNDUuNiA0NS42IDQ1LjYgNDUuOC0yMC4zIDQ1LjgtNDUuNi0yMC41LTQ1LjgtNDUuOC00NS44em0yOTEuNy0yNzBDMTU4LjkgMTI0LjkgODEuOSAxMTIuMSAwIDI1LjdjMzQuNCA1MS43IDUzLjMgMTQ4LjkgMzczLjEgMTQ0LjIgMzMzLjMtNSAxMzAgODYuMSA3MC44IDE4OC45IDE4Ni43LTE2Ni43IDMxOS40LTIzMy45IDE3LjItMjMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9wZW5pZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzEuNSA0MzJsLTY4IDMyQzg4LjUgNDUzLjcgMCAzOTIuNSAwIDMxOC4yYzAtNzEuNSA4Mi41LTEzMSAxOTEuNy0xNDQuM3Y0M2MtNzEuNSAxMi41LTEyNCA1My0xMjQgMTAxLjMgMCA1MSA1OC41IDkzLjMgMTM1LjcgMTAzdi0zNDBsNjgtMzMuMnYzODR6TTQ0OCAyOTFsLTEzMS4zLTI4LjUgMzYuOC0yMC43Yy0xOS41LTExLjUtNDMuNS0yMC03MC0yNC44di00M2M0Ni4yIDUuNSA4Ny43IDE5LjUgMTIwLjMgMzkuM2wzNS0xOS44TDQ0OCAyOTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9wZW5zdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3MS4xIDEwMi43cy0uMyAxOC4zLS4zIDIwLjNjLTkuMS0zLTc0LjQtMjQuMS0xMzUuNy0yNi4zYy01MS45LTEuOC0xMjIuOC00LjMtMjIzIDU3LjNjLTE5LjQgMTIuNC03My45IDQ2LjEtOTkuNiAxMDkuN0M3IDI3Ny0uMSAzMDcgNyAzMzUuMWMzLjMgMTIuOCA4LjkgMjQuOSAxNi41IDM1LjdjMTcuNCAyNSA0Ni42IDQxLjYgNzguMSA0NC40YzQ0LjQgMy45IDc4LjEtMTYgOTAtNTMuM2M4LjItMjUuOCAwLTYzLjYtMzEuNS04Mi45Yy0yNS42LTE1LjctNTMuMy0xMi4xLTY5LjItMS42Yy0xMy45IDkuMi0yMS44IDIzLjUtMjEuNiAzOS4yYy4zIDI3LjggMjQuMyA0Mi42IDQxLjUgNDIuNmM1LjQgMCAxMC43LS45IDE1LjgtMi43YzYuNS0xLjggMTMuMy02LjUgMTMuMy0xNC45YzAtMTIuMS0xMS42LTE0LjgtMTYuOC0xMy45Yy0yLjkgLjUtNC41IDItMTEuOCAyLjRjLTItLjItMTItMy4xLTEyLTE0VjMxNmMuMi0xMi4zIDEzLjItMTggMjUuNS0xNi45YzMyLjMgMi44IDQ3LjcgNDAuNyAyOC41IDY1LjdDMTM1IDM4OC41IDc2LjcgMzg4IDUzLjYgMzQ0LjRjLTI2LTQ5LjIgMTIuNy0xMTEuMiA4Ny05OC40YzMzLjIgNS43IDgzLjYgMzUuNSAxMDIuNCAxMDQuM2g0NS45Yy01LjctMTcuNi04LjktNjguMyA0Mi43LTY4LjNjNTYuNyAwIDYzLjkgMzkuOSA3OS44IDY4LjNINDYwYy0xMi44LTE4LjMtMjEuNy0zOC43LTE4LjktNTUuOGM1LjYtMzMuOCAzOS43LTE4LjQgODIuNC0xNy40YzY2LjUgLjQgMTAyLjEtMjcgMTAzLjEtMjhjMy43LTMuMSA2LjUtMTUuOCA3LTE3LjdjMS4zLTUuMS0zLjItMi40LTMuMi0yLjRjLTguNyA1LjItMzAuNSAxNS4yLTUwLjkgMTUuNmMtMjUuMyAuNS03Ni4yLTI1LjQtODEuNi0yOC4yYy0uMy0uNCAuMSAxLjItMTEtMjUuNWM4OC40IDU4LjMgMTE4LjMgNDAuNSAxNDUuMiAyMS43Yy44LS42IDQuMy0yLjkgMy42LTUuN2MtMTMuOC00OC4xLTIyLjQtNjIuNy0zNC41LTY5LjZjLTM3LTIxLjYtMTI1LTM0LjctMTI5LjItMzUuM2MuMS0uMS0uOS0uMy0uOSAuN2wwIDB6bTEzNS42IDc1LjRhMzcuNiAzNy42IDAgMSAxIC03NS4yLTIuNiAzNy42IDM3LjYgMCAxIDEgNzUuMiAyLjZ6bS0zNi42LTI3LjlhMjYuMyAyNi4zIDAgMSAwIC0xLjcgNTIuNSAyNi4zIDI2LjMgMCAxIDAgMS43LTUyLjV6bTQuMyAyOC44Yy0xNS40IDAtMTUuNC0xNS42IDAtMTUuNnMxNS40IDE1LjYgMCAxNS42djB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9wZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy45IDMyLjdjLTE3MC4yIDAtMjUyLjYgMjIzLjgtMTQ3LjUgMzU1LjEgMzYuNSA0NS40IDg4LjYgNzUuNiAxNDcuNSA3NS42IDM2LjMgMCA3MC4zLTExLjEgOTkuNC0zMC40LTQzLjggMzkuMi0xMDEuOSA2My0xNjUuMyA2My0zLjkgMC04IDAtMTEuOS0uM0MxMDQuNiA0ODkuNiAwIDM4MS4xIDAgMjQ4IDAgMTExIDExMSAwIDI0OCAwaC44YzYzLjEuMyAxMjAuNyAyNC4xIDE2NC40IDYzLjEtMjktMTkuNC02My4xLTMwLjQtOTkuMy0zMC40em0xMDEuOCAzOTcuN2MtNDAuOSAyNC43LTkwLjcgMjMuNi0xMzItNS44IDU2LjItMjAuNSA5Ny43LTkxLjYgOTcuNy0xNzYuNiAwLTg0LjctNDEuMi0xNTUuOC05Ny40LTE3Ni42IDQxLjgtMjkuMiA5MS4yLTMwLjMgMTMyLjktNSAxMDUuOSA5OC43IDEwNS41IDI2NS43LTEuMiAzNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9wdGluTW9uc3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzIuNiA0MjEuNGM1LjYtOS41IDQuNy0xNS4yLTUuNC0xMS42LTMtNC45LTctOS41LTExLjEtMTMuOCAyLjktOS43LS43LTE0LjItMTAuOC05LjItNC42LTMuMi0xMC4zLTYuNS0xNS45LTkuMiAwLTE1LjEtMTEuNi0xMS42LTE3LjYtNS43LTEwLjQtMS41LTE4LjctLjMtMjYuOCA1LjcuMy02LjUuMy0xMyAuMy0xOS43IDEyLjYgMCA0MC4yLTExIDQ1LjktMzYuMiAxLjQtNi44IDEuNi0xMy44LS4zLTIxLjktMy0xMy41LTE0LjMtMjEuMy0yNS4xLTI1LjctLjgtNS45LTcuNi0xNC4zLTE0LjktMTUuOXMtMTIuNCA0LjktMTQuMSAxMC4zYy04LjUgMC0xOS4yIDIuOC0yMS4xIDguNC01LjQtLjUtMTEuMS0xLjQtMTYuOC0xLjkgMi43LTEuOSA1LjQtMy41IDguNC00LjYgNS40LTkuMiAxNC42LTExLjQgMjUuNy0xMS42VjI1NmMxOS41LS41IDQzLTUuOSA1My44LTE4LjEgMTIuNy0xMy44IDE0LjYtMzcuMyAxMi40LTU1LjEtMi40LTE3LjMtOS43LTM3LjYtMjQuNi00OC4xLTguNC01LjktMjEuNi0uOC0yMi43IDkuNS0yLjIgMTkuNiAxLjIgMzAtMzguNiAyNS4xLTEwLjMtMjMuOC0yNC42LTQ0LjYtNDIuNy02MEMzNDEgNDkuNiAyNDIuOSA1NS41IDE2Ni40IDcxLjdjMTkuNyA0LjYgNDEuMSA4LjYgNTkuNyAxNi41LTI2LjIgMi40LTUyLjcgMTEuMy03Ni4yIDIzLjItMzIuOCAxNy00NCAyOS45LTU2LjcgNDIuNCAxNC45LTIuMiAyOC45LTUuMSA0My44LTMuOC05LjcgNS40LTE4LjQgMTIuMi0yNi41IDIwLTI1LjguOS0yMy44LTUuMy0yNi4yLTI1LjktMS4xLTEwLjUtMTQuMy0xNS40LTIyLjctOS43LTI4LjEgMTkuOS0zMy41IDc5LjktMTIuMiAxMDMuNSAxMC44IDEyLjIgMzUuMSAxNy4zIDU0LjkgMTcuOC0uMyAxLjEtLjMgMS45LS4zIDIuNyAxMC44LjUgMTkuNSAyLjcgMjQuNiAxMS42IDMgMS4xIDUuNyAyLjcgOC4xIDQuNi01LjQuNS0xMS4xIDEuNC0xNi41IDEuOS0zLjMtNi42LTEzLjctOC4xLTIxLjEtOC4xLTEuNi01LjctNi41LTEyLjItMTQuMS0xMC4zLTYuOCAxLjktMTQuMSAxMC0xNC45IDE1LjktMjIuNSA5LjUtMzAuMSAyNi44LTI1LjEgNDcuNiA1LjMgMjQuOCAzMyAzNi4yIDQ1LjkgMzYuMnYxOS43Yy02LjYtNS0xNC4zLTcuNS0yNi44LTUuNy01LjUtNS41LTE3LjMtMTAuMS0xNy4zIDUuNy01LjkgMi43LTExLjQgNS45LTE1LjkgOS4yLTkuOC00LjktMTMuNi0xLjctMTEuMSA5LjItNC4xIDQuMy03LjggOC42LTExLjEgMTMuOC0xMC4yLTMuNy0xMSAyLjItNS40IDExLjYtMS4xIDMuNS0xLjYgNy0xLjkgMTAuOC0uNSAzMS42IDQ0LjYgNjQgNzMuNSA2NS4xIDE3LjMuNSAzNC42LTguNCA0My0yMy41IDExMy4yIDQuOSAyMjYuNyA0LjEgMzQwLjIgMCA4LjEgMTUuMSAyNS40IDI0LjMgNDIuNyAyMy41IDI5LjItMS4xIDc0LjMtMzMuNSA3My41LTY1LjEuMi0zLjctLjctNy4yLTEuNy0xMC43em0tNzMuOC0yNTRjMS4xLTMgMi40LTguNCAyLjQtMTQuNiAwLTUuOSA2LjgtOC4xIDE0LjEtLjggMTEuMSAxMS42IDE0LjkgNDAuNSAxMy44IDUxLjEtNC4xLTEzLjYtMTMtMjktMzAuMy0zNS43em0tNC42IDYuN2MxOS41IDYuMiAyOC42IDI3LjYgMjkuNyA0OC45LTEuMSAyLjctMyA1LjQtNC45IDcuNi01LjcgNS45LTE1LjQgMTAtMjYuMiAxMi4yIDQuMy0yMS4zLjMtNDcuMy0xMi43LTYzIDQuOS0uOCAxMC45LTIuNCAxNC4xLTUuN3ptLTI0LjEgNi44YzEzLjggMTEuOSAyMCAzOS4yIDE0LjEgNjMuNS00LjEuNS04LjEuOC0xMS42LjgtMS45LTIxLjktNi44LTQ0LTE0LjMtNjQuNiAzLjcuMyA4LjEuMyAxMS44LjN6TTQ3LjUgMjAzYy0xLjEtMTAuNSAyLjQtMzkuNSAxMy44LTUxLjEgNy03LjMgMTQuMS01LjEgMTQuMS44IDAgNi4yIDEuNCAxMS42IDIuNCAxNC42LTE3LjMgNi44LTI2LjIgMjIuMi0zMC4zIDM1Ljd6bTkuNyAyNy42Yy0xLjktMi4yLTMuNS00LjktNC45LTcuNiAxLjQtMjEuMyAxMC4zLTQyLjcgMjkuNy00OC45IDMuMiAzLjIgOS4yIDQuOSAxNC4xIDUuNy0xMyAxNS43LTE3IDQxLjYtMTIuNyA2My0xMC44LTIuMi0yMC41LTYtMjYuMi0xMi4yem00Ny45IDE0LjZjLTQuMSAwLTguMS0uMy0xMi43LS44LTQuNi0xOC42LTEuOS0zOC45IDUuNC01M3YuM2wxMi4yLTUuMWM0LjktMS45IDkuNy0zLjggMTQuOS00LjktMTAuNyAxOS43LTE3LjQgNDEuMy0xOS44IDYzLjV6bTE4NC0xNjIuN2M0MS45IDAgNzYuMiAzNCA3Ni4yIDc1LjkgMCA0Mi4yLTM0LjMgNzYuMi03Ni4yIDc2LjJzLTc2LjItMzQtNzYuMi03Ni4yYzAtNDEuOCAzNC4zLTc1LjkgNzYuMi03NS45em0xMTUuNiAxNzQuM2MtLjMgMTcuOC03IDQ4LjktMjMgNTctMTMuMiA2LjYtNi41LTcuNS0xNi41LTU4LjEgMTMuMy4zIDI2LjYuMyAzOS41IDEuMXptLTU0LTEuNmMuOCA0LjkgMy44IDQwLjMtMS42IDQxLjktMTEuNiAzLjUtNDAgNC4zLTUxLjEtMS4xLTQuMS0zLTQuNi0zNS45LTQuMy00MS4xdi4zYzE4LjktLjMgMzguMS0uMyA1NyAwek0yNzguMyAzMDljLTEzIDMuNS00MS42IDQuMS01NC42LTEuNi02LjUtMi43LTMuOC00Mi40LTEuOS01MS42IDE5LjItLjUgMzguNC0uNSA1Ny44LS44di4zYzEuMSA4LjMgMy4zIDUxLjItMS4zIDUzLjd6bS0xMDYuNS01MS4xYzEyLjItLjggMjQuNi0xLjQgMzYuOC0xLjYtMi40IDE1LjQtMyA0My41LTQuOSA1Mi4yLTEuMSA2LjgtNC4zIDYuOC05LjcgNC4zLTIxLjktOS44LTI3LjYtMzUuMi0yMi4yLTU0Ljl6bS0zNS40IDMxLjNjNy44LTEuMSAxNS43LTEuOSAyMy41LTIuNyAxLjYgNi4yIDMuOCAxMS45IDcgMTcuNiAxMCAxNyA0NCAzNS43IDQ1LjEgNyA2LjIgMTQuOSA0MC44IDEyLjIgNTQuOSAxMC44IDE1LjctMS40IDIzLjgtMS40IDI2LjgtMTQuMyAxMi40IDQuMyAzMC44IDQuMSA0NCAzIDExLjMtLjggMjAuOC0uNSAyNC42LTguOSAxLjEgNS4xIDEuOSAxMS42IDQuNiAxNi44IDEwLjggMjEuMyAzNy4zIDEuNCA0Ni44LTMxLjYgOC42LjggMTcuNiAxLjkgMjYuNSAyLjctLjQgMS4zLTMuOCA3LjMgNy4zIDExLjYtNDcuNiA0Ny05NS43IDg3LjgtMTYzLjIgMTA3LTYzLjItMjAuOC0xMTIuMS01OS41LTE1NS45LTEwNi41IDkuNi0zLjQgMTAuNC04LjggOC0xMi41em0tMjEuNiAxNzIuNWMtMy44IDE3LjgtMjEuOSAyOS43LTM5LjcgMjguOS0xOS4yLS44LTQ2LjUtMTctNTkuMi0zNi41LTIuNy0zMS4xIDQzLjgtNjEuMyA2Ni4yLTU0LjYgMTQuOSA0LjMgMjcuOCAzMC44IDMzLjUgNTQgMCAzLS4zIDUuNy0uOCA4LjJ6bS04LjctNjZjLS41LTEzLjUtLjUtMjctLjMtNDAuNWguM2MyLjctMS42IDUuNy0zLjggNy44LTYuNSA2LjUtMS42IDEzLTUuMSAxNS4xLTkuMiAzLjMtNy4xLTctNy41LTUuNC0xMi40IDIuNy0xLjEgNS43LTIuMiA3LjgtMy41IDI5LjIgMjkuMiA1OC42IDU2LjUgOTcuMyA3Ny0zNi44IDExLjMtNzIuNCAyNy42LTEwNS45IDQ3LTEuMi0xOC42LTcuNy0zNS45LTE2LjctNTEuOXptMzM3LjYgNjQuNmMtMTAzIDMuNS0yMDYuMiA0LjEtMzA5LjQgMCAwIC4zIDAgLjMtLjMuM3YtLjNoLjNjMzUuMS0yMS42IDcyLjItMzkuMiAxMTIuNC01MC44IDExLjYgNS4xIDIzIDkuNSAzNC45IDEzLjIgMi4yLjggMi4yLjggNC4zIDAgMTQuMy00LjEgMjguNC05LjIgNDIuMi0xNS40IDQxLjUgMTEuNyA3OC44IDMxLjcgMTE1LjYgNTN6bTEwLjUtMTIuNGMtMzUuOS0xOS41LTczLTM1LjktMTExLjktNDcuNiAzOC4xLTIwIDcxLjktNDcuMyAxMDMuNS03Ni43IDIuMiAxLjQgNC42IDIuNCA3LjYgMy4yIDAgLjguMyAxLjkuNSAyLjQtNC42IDIuNy03LjggNi4yLTUuOSAxMC4zIDIuMiAzLjggOC42IDcuNiAxNS4xIDguOSAyLjQgMi43IDUuMSA1LjEgOC4xIDYuOCAwIDEzLjgtLjMgMjcuNi0uOCA0MS4zbC4zLS4zYy05LjMgMTUuOS0xNS41IDM3LTE2LjUgNTEuN3ptMTA1LjkgNi4yYy0xMi43IDE5LjUtNDAgMzUuNy01OS4yIDM2LjUtMTkuMy45LTQwLjUtMTMuMi00MC41LTM3IDUuNy0yMy4yIDE4LjktNDkuNyAzMy41LTU0IDIyLjctNi45IDY5LjIgMjMuNCA2Ni4yIDU0LjV6TTM3Mi45IDc1LjJjLTMuOC03Mi4xLTEwMC44LTc5LjctMTI2LTIzLjUgNDQuNi0yNC4zIDkwLjMtMTUuNyAxMjYgMjMuNXpNNzQuOCA0MDcuMWMtMTUuNyAxLjYtNDkuNSAyNS40LTQ5LjUgNDMuMiAwIDExLjYgMTUuNyAxOS41IDMyLjIgMTQuOSAxMi4yLTMuMiAzMS4xLTE3LjYgMzUuOS0yNy4zIDYtMTEuNi0zLjctMzIuNy0xOC42LTMwLjh6bTIxNS45LTE3Ni4yYzI4LjYgMCA1MS45LTIxLjYgNTEuOS00OC40IDAtMzYuMS00MC41LTU4LjEtNzIuMi00NC4zIDkuNSAzIDE2LjUgMTEuNiAxNi41IDIxLjYgMCAyMy4zLTMzLjMgMzItNDYuNSAxMS4zLTcuMyAzNC4xIDE5LjQgNTkuOCA1MC4zIDU5Ljh6TTY4IDQ3NC4xYy41IDYuNSAxMi4yIDEyLjcgMjEuNiA5LjUgNi44LTIuNyAxNC42LTEwLjUgMTcuMy0xNi4yIDMtNy0xLjEtMjAtOS43LTE4LjQtOC45IDEuNi0yOS43IDE2LjctMjkuMiAyNS4xem00MzMuMi02N2MtMTQuOS0xLjktMjQuNiAxOS4yLTE4LjkgMzAuOCA0LjkgOS43IDI0LjEgMjQuMSAzNi4yIDI3LjMgMTYuNSA0LjYgMzIuMi0zLjIgMzIuMi0xNC45IDAtMTcuOC0zMy44LTQxLjYtNDkuNS00My4yek00NzguOCA0NDljLTguNC0xLjYtMTIuNCAxMS4zLTkuNSAxOC40IDIuNCA1LjcgMTAuMyAxMy41IDE3LjMgMTYuMiA5LjIgMy4yIDIxLjEtMyAyMS4zLTkuNS45LTguNC0yMC4yLTIzLjUtMjkuMS0yNS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPcmNpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTQuNzUgMTg4LjE5aC00NS45MlYzNDJoNDcuNDdjNjcuNjIgMCA4My4xMi01MS4zNCA4My4xMi03Ni45MSAwLTQxLjY0LTI2LjU0LTc2LjktODQuNjctNzYuOXpNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptLTgwLjc5IDM2MC43NmgtMjkuODR2LTIwNy41aDI5Ljg0em0tMTQuOTItMjMxLjE0YTE5LjU3IDE5LjU3IDAgMSAxIDE5LjU3LTE5LjU3IDE5LjY0IDE5LjY0IDAgMCAxLTE5LjU3IDE5LjU3ek0zMDAgMzY5aC04MVYxNjEuMjZoODAuNmM3Ni43MyAwIDExMC40NCA1NC44MyAxMTAuNDQgMTAzLjg1QzQxMCAzMTguMzkgMzY4LjM4IDM2OSAzMDAgMzY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPc2kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyNjYuNDRDMTAuMyAxMzAuNjQgMTA1LjQgMzQgMjIxLjggMTguMzRjMTM4LjgtMTguNiAyNTUuNiA3NS44IDI3OCAyMDEuMSAyMS4zIDExOC44LTQ0IDIzMC0xNTEuNiAyNzQtOS4zIDMuOC0xNC40IDEuNy0xOC03LjdxLTI2LjctNjkuNDUtNTMuNC0xMzljLTMuMS04LjEtMS0xMy4yIDctMTYuOCAyNC4yLTExIDM5LjMtMjkuNCA0My4zLTU1LjhhNzEuNDcgNzEuNDcgMCAwIDAtNjQuNS04Mi4yYy0zOS0zLjQtNzEuOCAyMy43LTc3LjUgNTkuNy01LjIgMzMgMTEuMSA2My43IDQxLjkgNzcuNyA5LjYgNC40IDExLjUgOC42IDcuOCAxOC40cS0yNi44NSA2OS45LTUzLjcgMTM5LjljLTIuNiA2LjktOC4zIDkuMy0xNS41IDYuNS01Mi42LTIwLjMtMTAxLjQtNjEtMTMwLjgtMTE5LTI0LjktNDkuMi0yNS4yLTg3LjctMjYuOC0xMDguN3ptMjAuOS0xLjljLjQgNi42LjYgMTQuMyAxLjMgMjIuMSA2LjMgNzEuOSA0OS42IDE0My41IDEzMSAxODMuMSAzLjIgMS41IDQuNC44IDUuNi0yLjNxMjIuMzUtNTguNjUgNDUtMTE3LjNjMS4zLTMuMy42LTQuOC0yLjQtNi43LTMxLjYtMTkuOS00Ny4zLTQ4LjUtNDUuNi04NiAxLTIxLjYgOS4zLTQwLjUgMjMuOC01Ni4zIDMwLTMyLjcgNzctMzkuOCAxMTUuNS0xNy42YTkxLjY0IDkxLjY0IDAgMCAxIDQ1LjIgOTAuNGMtMy42IDMwLjYtMTkuMyA1My45LTQ1LjcgNjkuOC0yLjcgMS42LTMuNSAyLjktMi4zIDZxMjIuOCA1OC44IDQ1LjIgMTE3LjdjMS4yIDMuMSAyLjQgMy44IDUuNiAyLjMgMzUuNS0xNi42IDY1LjItNDAuMyA4OC4xLTcyIDM0LjgtNDguMiA0OS4xLTEwMS45IDQyLjMtMTYxLTEzLjctMTE3LjUtMTE5LjQtMjE0LjgtMjU1LjUtMTk4LTEwNi4xIDEzLTE5NS4zIDEwMi41LTE5Ny4xIDIyNS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWRsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk3LjkgMEwyOTggLjAwMUMzMDUuNiAuMTA3OCAzMTIuNCA0LjcyIDMxNS41IDExLjc4TDQ0Ny41IDMyMC4zTDQ0Ny44IDMyMC4yTDQ0OCAzMjAuNkw0NDUuMiAzMzAuNkw0MDIuMyA0ODguNkMzOTguNiA1MDQuOCAzODIuNiA1MTQuOSAzNjYuNSA1MTEuMkwyOTguMSA0OTUuNkwyMjkuNiA1MTEuMkMyMTMuNSA1MTQuOSAxOTcuNSA1MDQuOCAxOTMuOCA0ODguNkwxNTAuOSAzMzAuNkwxNDguMiAzMjAuNkwxNDguMyAzMjAuMkwyODAuNCAxMS43OEMyODMuNCA0Ljc5NyAyOTAuMyAuMTgzNyAyOTcuOSAuMDAwNkwyOTcuOSAwek0xNjAuMSAzMjIuMUwyOTEuMSAzNjEuMkwyOTggNDgzLjdMMzA1LjkgMzYyLjJMNDM2LjUgMzIyLjlMNDM2LjcgMzIyLjhMMzA1LjcgMzQ3LjlMMjk3LjEgMjcuNzJMMjkxLjkgMzQ3LjlMMTYwLjEgMzIyLjF6TTQyNiAyMjIuNkw1MjAuNCAxODEuNkg1OTQuMkw0MzcuMiA0MjkuMkw0NjguOCAzMjAuMkw0MjYgMjIyLjZ6TTU5Ny41IDE4MS40TDYzOC45IDI1Ny42QzY0Mi45IDI2NS4xIDYzNSAyNzMuNSA2MjcuMyAyNjkuOEw1NzkuNyAyNDcuMUw1OTcuNSAxODEuNHpNMTI3LjMgMzE4LjVMMTU4LjcgNDMwTDEuNjEgMTU0LjVDLTQuMjkyIDE0NC4xIDcuMTI4IDEzMi41IDE3LjU1IDEzOC4zTDE2OS40IDIyMi41TDEyNy4zIDMxOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWdlNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggNTA0QzExMSA1MDQgMCAzOTMgMCAyNTZTMTExIDggMjQ4IDhjMjAuOSAwIDQxLjMgMi42IDYwLjcgNy41TDQyLjMgMzkySDI0OHYxMTJ6bTAtMTQzLjZWMTQ2LjhMOTguNiAzNjAuNEgyNDh6bTk2IDMxLjZ2OTIuN2M0NS43LTE5LjIgODQuNS01MS43IDExMS40LTkyLjdIMzQ0em01Ny40LTEzOC4ybC0yMS4yIDguNCAyMS4yIDguM3YtMTYuN3ptLTIwLjMgNTQuNWMtNi43IDAtOCA2LjMtOCAxMi45djcuN2gxNi4ydi0xMGMwLTUuOS0yLjMtMTAuNi04LjItMTAuNnpNNDk2IDI1NmMwIDM3LjMtOC4yIDcyLjctMjMgMTA0LjRIMzQ0VjI3LjNDNDMzLjMgNjQuOCA0OTYgMTUzLjEgNDk2IDI1NnpNMzYwLjQgMTQzLjZoNjguMlY5NmgtMTMuOXYzMi42aC0xMy45Vjk5aC0xMy45djI5LjZoLTEyLjdWOTZoLTEzLjl2NDcuNnptNjguMSAxODUuM0g0MDJ2LTExYzAtMTUuNC01LjYtMjUuMi0yMC45LTI1LjItMTUuNCAwLTIwLjcgMTAuNi0yMC43IDI1Ljl2MjUuM2g2OC4ydi0xNXptMC0xMDNsLTY4LjIgMjkuN1YyNjhsNjguMiAyOS41di0xNi42bC0xNC40LTUuN3YtMjYuNWwxNC40LTUuOXYtMTYuOXptLTQuOC02OC41aC0zNS42VjE4NEg0MDJ2LTEyLjJoMTFjOC42IDE1LjggMS4zIDM1LjMtMTguNiAzNS4zLTIyLjUgMC0yOC4zLTI1LjMtMTUuNS0zNy43bC0xMS42LTEwLjZjLTE2LjIgMTcuNS0xMi4yIDYzLjkgMjcuMSA2My45IDM0IDAgNDQuNy0zNS45IDI5LjMtNjUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFnZWxpbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMTIuN2MtNTUuMSAxMzYuNy0xODcuMSA1NC0xODcuMSA1NC00MC41IDgxLjgtMTA3LjQgMTM0LjQtMTg0LjYgMTM0LjctMTYuMSAwLTE2LjYtMjQuNCAwLTI0LjQgNjQuNC0uMyAxMjAuNS00Mi43IDE1Ny4yLTExMC4xLTQxLjEgMTUuOS0xMTguNiAyNy45LTE2MS42LTgyLjIgMTA5LTQ0LjkgMTU5LjEgMTEuMiAxNzguMyA0NS41IDkuOS0yNC40IDE3LTUwLjkgMjEuNi03OS43IDAgMC0xMzkuNyAyMS45LTE0OS41LTk4LjEgMTE5LjEtNDcuOSAxNTIuNiA3Ni43IDE1Mi42IDc2LjcgMS42LTE2LjcgMy4zLTUyLjYgMy4zLTUzLjQgMCAwLTEwNi4zLTczLjctMzguMS0xNjUuMiAxMjQuNiA0MyA2MS40IDE2Mi40IDYxLjQgMTYyLjQuNSAxLjYuNSAyMy44IDAgMzMuNCAwIDAgNDUuMi04OSAxMzYuNC01Ny41LTQuMiAxMzQtMTQxLjkgMTA2LjQtMTQxLjkgMTA2LjQtNC40IDI3LjQtMTEuMiA1My40LTIwIDc3LjUgMCAwIDgzLTkxLjggMTcyLTIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWxmZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0LjkgMTkzLjljMC00Ny40LTU1LjItNDQuMi05NS40LTI5LjgtMS4zIDM5LjQtMi41IDgwLjctMyAxMTkuOC43IDIuOCAyLjYgNi4yIDE1LjEgNi4yIDM2LjggMCA4My40LTQyLjggODMuMy05Ni4yem0tMTk0LjUgNzIuMmMuMiAwIDYuNS0yLjcgMTEuMi0yLjcgMjYuNiAwIDIwLjcgNDQuMS0xNC40IDQ0LjEtMjEuNSAwLTM3LjEtMTguMS0zNy4xLTQzIDAtNDIgNDIuOS05NS42IDEwMC43LTEyNi41IDEtMTIuNCAzLTIyIDEwLjUtMjguMiAxMS4yLTkgMjYuNi0zLjUgMjkuNSAxMS4xIDcyLjItMjIuMiAxMzUuMiAxIDEzNS4yIDcyIDAgNzcuOS03OS4zIDE1Mi42LTE0MC4xIDEzOC4yLS4xIDM5LjQuOSA3NC40IDIuNyAxMDB2LjJjLjIgMy40LjYgMTIuNS01LjMgMTkuMS05LjYgMTAuNi0zMy40IDEwLTM2LjQtMjIuMy00LjEtNDQuNC4yLTIwNi4xIDEuNC0yNDIuNS0yMS41IDE1LTU4LjUgNTAuMy01OC41IDc1LjkuMiAyLjUuNCA0IC42IDQuNnpNOCAxODEuMXMtLjEgMzcuNCAzOC40IDM3LjRoMzBsMjIuNCAyMTcuMnMwIDQ0LjMgNDQuNyA0NC4zaDI4OC45czQ0LjctLjQgNDQuNy00NC4zbDIyLjQtMjE3LjJoMzBzMzguNCAxLjIgMzguNC0zNy40YzAgMCAuMS0zNy40LTM4LjQtMzcuNGgtMzAuMWMtNy4zLTI1LjYtMzAuMi03NC4zLTExOS40LTc0LjNoLTI4VjUwLjNzLTIuNy0xOC40LTIxLjEtMTguNGgtODUuOHMtMjEuMSAwLTIxLjEgMTguNHYxOS4xaC0yOC4xcy0xMDUgNC4yLTEyMC41IDc0LjNoLTI5UzggMTQyLjUgOCAxODEuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGF0cmVvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODkuNyAxNTMuOGMtLjEtNjUuNC01MS0xMTktMTEwLjctMTM4LjNDMzA0LjgtOC41IDIwNy01IDEzNi4xIDI4LjRDNTAuMyA2OC45IDIzLjMgMTU3LjcgMjIuMyAyNDYuMkMyMS41IDMxOSAyOC43IDUxMC42IDEzNi45IDUxMmM4MC4zIDEgOTIuMy0xMDIuNSAxMjkuNS0xNTIuM2MyNi40LTM1LjUgNjAuNS00NS41IDEwMi40LTU1LjljNzItMTcuOCAxMjEuMS03NC43IDEyMS0xNTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBheXBhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTEuNCAyOTUuOWMtMy41IDE5LjItMTcuNCAxMDguNy0yMS41IDEzNC0uMyAxLjgtMSAyLjUtMyAyLjVIMTIuM2MtNy42IDAtMTMuMS02LjYtMTIuMS0xMy45TDU4LjggNDYuNmMxLjUtOS42IDEwLjEtMTYuOSAyMC0xNi45IDE1Mi4zIDAgMTY1LjEtMy43IDIwNCAxMS40IDYwLjEgMjMuMyA2NS42IDc5LjUgNDQgMTQwLjMtMjEuNSA2Mi42LTcyLjUgODkuNS0xNDAuMSA5MC4zLTQzLjQuNy02OS41LTctNzUuMyAyNC4yek0zNTcuMSAxNTJjLTEuOC0xLjMtMi41LTEuOC0zIDEuMy0yIDExLjQtNS4xIDIyLjUtOC44IDMzLjYtMzkuOSAxMTMuOC0xNTAuNSAxMDMuOS0yMDQuNSAxMDMuOS02LjEgMC0xMC4xIDMuMy0xMC45IDkuNC0yMi42IDE0MC40LTI3LjEgMTY5LjctMjcuMSAxNjkuNy0xIDcuMSAzLjUgMTIuOSAxMC42IDEyLjloNjMuNWM4LjYgMCAxNS43LTYuMyAxNy40LTE0LjkuNy01LjQtMS4xIDYuMSAxNC40LTkxLjMgNC42LTIyIDE0LjMtMTkuNyAyOS4zLTE5LjcgNzEgMCAxMjYuNC0yOC44IDE0Mi45LTExMi4zIDYuNS0zNC44IDQuNi03MS40LTIzLjgtOTIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyYnl0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDUuMzE0LDI4NC41NzhIMjQ2LjZWMzgzLjNoNTguNzExcTI0LjQyMywwLDM4LjE5My0xMy43N3QxMy43Ny0zNi4xMXEwLTIxLjgyNi0xNC4wMzItMzUuMzM1VDMwNS4zMTQsMjg0LjU3OFpNMTQ5LjQzNSwxMjguN0g5MC43MjR2OTguNzIzaDU4LjcxMXEyNC40MiwwLDM4LjE5LTEzLjc3M3QxMy43Ny0zNi4xMDdxMC0yMS44MjYtMTQuMDI5LTM1LjMzOFQxNDkuNDM1LDEyOC43Wk0zNjYuNjQ3LDMySDgxLjM1M0E4MS40NDUsODEuNDQ1LDAsMCwwLDAsMTEzLjM1MlYzOTguNjQ3QTgxLjQ0NSw4MS40NDUsMCwwLDAsODEuMzUzLDQ4MEgzNjYuNjQ3QTgxLjQ0NSw4MS40NDUsMCwwLDAsNDQ4LDM5OC42NDdWMTEzLjM1MkE4MS40NDUsODEuNDQ1LDAsMCwwLDM2Ni42NDcsMzJabTYzLjYzNSwzNjYuNjQ3YTYzLjcwNiw2My43MDYsMCwwLDEtNjMuNjM1LDYzLjYzNUg4MS4zNTNhNjMuNzA2LDYzLjcwNiwwLDAsMS02My42MzUtNjMuNjM1VjExMy4zNTJBNjMuNzA2LDYzLjcwNiwwLDAsMSw4MS4zNTMsNDkuNzE4SDM2Ni42NDdhNjMuNzA2LDYzLjcwNiwwLDAsMSw2My42MzUsNjMuNjM0Wk0zMDUuMzE0LDEyOC43SDI0Ni42djk4LjcyM2g1OC43MTFxMjQuNDIzLDAsMzguMTkzLTEzLjc3M3QxMy43Ny0zNi4xMDdxMC0yMS44MjYtMTQuMDMyLTM1LjMzOFQzMDUuMzE0LDEyOC43WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJpc2NvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcwIDYzLjZDMzMxLjQgMjIuNiAyODAuNSAwIDIyNi42IDAgMTExLjkgMCAxOC41IDk2LjIgMTguNSAyMTQuNGMwIDc1LjEgNTcuOCAxNTkuOCA4Mi43IDE5Mi43QzEzNy44IDQ1NS41IDE5Mi42IDUxMiAyMjYuNiA1MTJjNDEuNiAwIDExMi45LTk0LjIgMTIwLjktMTA1IDI0LjYtMzMuMSA4Mi0xMTguMyA4Mi0xOTIuNiAwLTU2LjUtMjEuMS0xMTAuMS01OS41LTE1MC44ek0yMjYuNiA0OTMuOWMtNDIuNSAwLTE5MC0xNjcuMy0xOTAtMjc5LjQgMC0xMDcuNCA4My45LTE5Ni4zIDE5MC0xOTYuMyAxMDAuOCAwIDE4NC43IDg5IDE4NC43IDE5Ni4zLjEgMTEyLjEtMTQ3LjQgMjc5LjQtMTg0LjcgMjc5LjR6TTMzOCAyMDYuOGMwIDU5LjEtNTEuMSAxMDkuNy0xMTAuOCAxMDkuNy0xMDAuNiAwLTE1MC43LTEwOC4yLTkyLjktMTgxLjh2LjRjMCAyNC41IDIwLjEgNDQuNCA0NC44IDQ0LjQgMjQuNyAwIDQ0LjgtMTkuOSA0NC44LTQ0LjQgMC0xOC4yLTExLjEtMzMuOC0yNi45LTQwLjcgNzYuNi0xOS4yIDE0MSAzOS4zIDE0MSAxMTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhhYnJpY2F0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIzIDI2Mi4xbC0uMS0xM3MyMS43LTE5LjggMjEuMS0yMS4ybC05LjUtMjBjLS42LTEuNC0yOS41LS41LTI5LjUtLjVsLTkuNC05LjNzLjItMjguNS0xLjItMjkuMWwtMjAuMS05LjJjLTEuNC0uNi0yMC43IDIxLTIwLjcgMjFsLTEzLjEtLjJzLTIwLjUtMjEuNC0yMS45LTIwLjhsLTIwIDguM2MtMS40LjUuMiAyOC45LjIgMjguOWwtOS4xIDkuMXMtMjkuMi0uOS0yOS43LjRsLTguMSAxOS44Yy0uNiAxLjQgMjEgMjEgMjEgMjFsLjEgMTIuOXMtMjEuNyAxOS44LTIxLjEgMjEuMmw5LjUgMjBjLjYgMS40IDI5LjUuNSAyOS41LjVsOS40IDkuM3MtLjIgMzEuOCAxLjIgMzIuM2wyMC4xIDguM2MxLjQuNiAyMC43LTIzLjUgMjAuNy0yMy41bDEzLjEuMnMyMC41IDIzLjggMjEuOCAyMy4zbDIwLTcuNWMxLjQtLjYtLjItMzIuMS0uMi0zMi4xbDkuMS05LjFzMjkuMi45IDI5LjctLjVsOC4xLTE5LjhjLjctMS4xLTIwLjktMjAuNy0yMC45LTIwLjd6bS00NC45LTguN2MuNyAxNy4xLTEyLjggMzEuNi0zMC4xIDMyLjQtMTcuMy44LTMyLjEtMTIuNS0zMi44LTI5LjYtLjctMTcuMSAxMi44LTMxLjYgMzAuMS0zMi4zIDE3LjMtLjggMzIuMSAxMi41IDMyLjggMjkuNXptMjAxLjItMzcuOWwtOTctOTctLjEuMWMtNzUuMS03My4zLTE5NS40LTcyLjgtMjY5LjggMS42LTUwLjkgNTEtMjcuOCAyNy45LTk1LjcgOTUuMy0yMi4zIDIyLjMtMjIuMyA1OC43IDAgODEgNjkuOSA2OS40IDQ2LjQgNDYgOTcuNCA5N2wuMS0uMWM3NS4xIDczLjMgMTk1LjQgNzIuOSAyNjkuOC0xLjYgNTEtNTAuOSAyNy45LTI3LjkgOTUuMy05NS4zIDIyLjMtMjIuMyAyMi4zLTU4LjcgMC04MXpNMTQwLjQgMzYzLjhjLTU5LjYtNTkuNS01OS42LTE1NiAwLTIxNS41IDU5LjUtNTkuNiAxNTYtNTkuNSAyMTUuNiAwIDU5LjUgNTkuNSA1OS42IDE1NiAwIDIxNS42LTU5LjYgNTkuNS0xNTYgNTkuNC0yMTUuNi0uMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvZW5peEZyYW1ld29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTIuOSAzNDQuM2MzLjgtLjEgMjIuOC0xLjQgMjUuNi0yLjItMi40LTIuNi00My42LTEtNjgtNDkuNi00LjMtOC42LTcuNS0xNy42LTYuNC0yNy42IDIuOS0yNS41IDMyLjktMzAgNTItMTguNSAzNiAyMS42IDYzLjMgOTEuMyAxMTMuNyA5Ny41IDM3IDQuNSA4NC42LTE3IDEwOC4yLTQ1LjQtLjYtLjEtLjgtLjItMS0uMS0uNC4xLS44LjItMS4xLjMtMzMuMyAxMi4xLTk0LjMgOS43LTEzNC43LTE0LjgtMzcuNi0yMi44LTUzLjEtNTguNy01MS44LTc0LjYgMS44LTIxLjMgMjIuOS0yMy4yIDM1LjktMTkuNiAxNC40IDMuOSAyNC40IDE3LjYgMzguOSAyNy40IDE1LjYgMTAuNCAzMi45IDEzLjcgNTEuMyAxMC4zIDE0LjktMi43IDM0LjQtMTIuMyAzNi41LTE0LjUtMS4xLS4xLTEuOC0uMS0yLjUtLjItNi4yLS42LTEyLjQtLjgtMTguNS0xLjdDMjc5LjggMTk0LjUgMjYyLjEgNDcuNCAxMzguNSAzNy45IDk0LjIgMzQuNSAzOS4xIDQ2IDIuMiA3Mi45Yy0uOC42LTEuNSAxLjItMi4yIDEuOC4xLjIuMS4zLjIuNS44IDAgMS42LS4xIDIuNC0uMiA2LjMtMSAxMi41LS44IDE4LjcuMyAyMy44IDQuMyA0Ny43IDIzLjEgNTUuOSA3Ni41IDUuMyAzNC4zLS43IDUwLjggOCA4Ni4xIDE5IDc3LjEgOTEgMTA3LjYgMTI3LjcgMTA2LjR6TTc1LjMgNjQuOWMtLjktMS0uOS0xLjItMS4zLTIgMTIuMS0yLjYgMjQuMi00LjEgMzYuNi00LjgtMS4xIDE0LjctMjIuMiAyMS4zLTM1LjMgNi44em0xOTYuOSAzNTAuNWMtNDIuOCAxLjItOTItMjYuNy0xMjMuNS02MS40LTQuNi01LTE2LjgtMjAuMi0xOC42LTIzLjRsLjQtLjRjNi42IDQuMSAyNS43IDE4LjYgNTQuOCAyNyAyNC4yIDcgNDguMSA2LjMgNzEuNi0zLjMgMjIuNy05LjMgNDEtLjUgNDMuMSAyLjktMTguNSAzLjgtMjAuMSA0LjQtMjQgNy45LTUuMSA0LjQtNC42IDExLjcgNyAxNy4yIDI2LjIgMTIuNCA2My0yLjggOTcuMiAyNS40IDIuNCAyIDguMSA3LjggMTAuMSAxMC43LS4xLjItLjMuMy0uNC41LTQuOC0xLjUtMTYuNC03LjUtNDAuMi05LjMtMjQuNy0yLTQ2LjMgNS4zLTc3LjUgNi4yem0xNzQuOC0yNTJjMTYuNC01LjIgNDEuMy0xMy40IDY2LjUtMy4zIDE2LjEgNi41IDI2LjIgMTguNyAzMi4xIDM0LjYgMy41IDkuNCA1LjEgMTkuNyA1LjEgMjguNy0uMiAwLS40IDAtLjYuMS0uMi0uNC0uNC0uOS0uNS0xLjMtNS0yMi0yOS45LTQzLjgtNjcuNi0yOS45LTUwLjIgMTguNi0xMzAuNCA5LjctMTc2LjktNDgtLjctLjktMi40LTEuNy0xLjMtMy4yLjEtLjIgMi4xLjYgMyAxLjMgMTguMSAxMy40IDM4LjMgMjEuOSA2MC4zIDI2LjIgMzAuNSA2LjEgNTQuNiAyLjkgNzkuOS01LjJ6bTEwMi43IDExNy41Yy0zMi40LjItMzMuOCA1MC4xLTEwMy42IDY0LjQtMTguMiAzLjctMzguNyA0LjYtNDQuOSA0LjJ2LS40YzIuOC0xLjUgMTQuNy0yLjYgMjkuNy0xNi42IDcuOS03LjMgMTUuMy0xNS4xIDIyLjgtMjIuOSAxOS41LTIwLjIgNDEuNC00Mi4yIDgxLjktMzkgMjMuMSAxLjggMjkuMyA4LjIgMzYuMSAxMi43LjMuMi40LjUuNy45LS41IDAtLjcuMS0uOSAwLTctMi43LTE0LjMtMy4zLTIxLjgtMy4zem0tMTIuMy0yNC4xYy0uMS4yLS4xLjQtLjIuNi0yOC45LTQuNC00OC03LjktNjguNSA0LTE3IDkuOS0zMS40IDIwLjUtNjIgMjQuNC0yNy4xIDMuNC00NS4xIDIuNC02Ni4xLTgtLjMtLjItLjYtLjQtMS0uNiAwLS4yLjEtLjMuMS0uNSAyNC45IDMuOCAzNi40IDUuMSA1NS41LTUuOCAyMi4zLTEyLjkgNDAuMS0yNi42IDcxLjMtMzEgMjkuNi00LjEgNTEuMyAyLjUgNzAuOSAxNi45ek0yNjguNiA5Ny4zYy0uNi0uNi0xLjEtMS4yLTIuMS0yLjMgNy42IDAgMjkuNy0xLjIgNTMuNCA4LjQgMTkuNyA4IDMyLjIgMjEgNTAuMiAzMi45IDExLjEgNy4zIDIzLjQgOS4zIDM2LjQgOC4xIDQuMy0uNCA4LjUtMS4yIDEyLjgtMS43LjQtLjEuOSAwIDEuNS4zLS42LjQtMS4yLjktMS44IDEuMi04LjEgNC0xNi43IDYuMy0yNS42IDcuMS0yNi4xIDIuNi01MC4zLTMuNy03My40LTE1LjQtMTkuMy05LjktMzYuNC0yMi45LTUxLjQtMzguNnpNNjQwIDMzNS43Yy0zLjUgMy4xLTIyLjcgMTEuNi00Mi43IDUuMy0xMi4zLTMuOS0xOS41LTE0LjktMzEuNi0yNC4xLTEwLTcuNi0yMC45LTcuOS0yOC4xLTguNC42LS44LjktMS4yIDEuMi0xLjQgMTQuOC05LjIgMzAuNS0xMi4yIDQ3LjMtNi41IDEyLjUgNC4yIDE5LjIgMTMuNSAzMC40IDI0LjIgMTAuOCAxMC40IDIxIDkuOSAyMy4xIDEwLjUuMS0uMS4yIDAgLjQuNHptLTIxMi41IDEzN2MyLjIgMS4yIDEuNiAxLjUgMS41IDItMTguNS0xLjQtMzMuOS03LjYtNDYuOC0yMi4yLTIxLjgtMjQuNy00MS43LTI3LjktNDguNi0yOS43LjUtLjIuOC0uNCAxLjEtLjQgMTMuMS4xIDI2LjEuNyAzOC45IDMuOSAyNS4zIDYuNCAzNSAyNS40IDQxLjYgMzUuMyAzLjIgNC44IDcuMyA4LjMgMTIuMyAxMS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9lbml4U3F1YWRyb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNjMuMzhDMTQyLjQ5IDI3LjI1IDIwMS41NSA3LjMxIDI2MC41MSA4LjgxYzI5LjU4LS4zOCA1OS4xMSA1LjM3IDg2LjkxIDE1LjMzLTI0LjEzLTQuNjMtNDktNi4zNC03My4zOC0yLjQ1QzIzMS4xNyAyNyAxOTEgNDguODQgMTYyLjIxIDgwLjg3YzUuNjctMSAxMC43OC0zLjY3IDE2LTUuODYgMTguMTQtNy44NyAzNy40OS0xMy4yNiA1Ny4yMy0xNC44MyAxOS43NC0yLjEzIDM5LjY0LS40MyA1OS4yOCAxLjkyLTE0LjQyIDIuNzktMjkuMTIgNC41Ny00MyA5LjU5LTM0LjQzIDExLjA3LTY1LjI3IDMzLjE2LTg2LjMgNjIuNjMtMTMuOCAxOS43MS0yMy42MyA0Mi44Ni0yNC42NyA2Ny4xMy0uMzUgMTYuNDkgNS4yMiAzNC44MSAxOS44MyA0NGE1My4yNyA1My4yNyAwIDAgMCAzNy41MiA2Ljc0YzE1LjQ1LTIuNDYgMzAuMDctOC42NCA0My42LTE2LjMzIDExLjUyLTYuODIgMjIuNjctMTQuNTUgMzItMjQuMjUgMy43OS0zLjIyIDIuNTMtOC40NSAyLjYyLTEyLjc5LTIuMTItLjM0LTQuMzgtMS4xMS02LjMuM2EyMDMgMjAzIDAgMCAxLTM1LjgyIDE1LjM3Yy0yMCA2LjE3LTQyLjE2IDguNDYtNjIuMS43OCAxMi43OSAxLjczIDI2LjA2LjMxIDM3Ljc0LTUuNDQgMjAuMjMtOS43MiAzNi44MS0yNS4yIDU0LjQ0LTM4Ljc3YTUyNi41NyA1MjYuNTcgMCAwIDEgODguOS01NS4zMWMyNS43MS0xMiA1Mi45NC0yMi43OCA4MS41Ny0yNC4xMi0xNS42MyAxMy43Mi0zMi4xNSAyNi41Mi00Ni43OCA0MS4zOC0xNC41MSAxNC0yNy40NiAyOS41LTQwLjExIDQ1LjE4LTMuNTIgNC42LTguOTUgNi45NC0xMy41OCAxMC4xNmExNTAuNyAxNTAuNyAwIDAgMC01MS44OSA2MC4xYy05LjMzIDE5LjY4LTE0LjUgNDEuODUtMTEuNzcgNjMuNjUgMS45NCAxMy42OSA4LjcxIDI3LjU5IDIwLjkgMzQuOTEgMTIuOSA4IDI5LjA1IDguMDcgNDMuNDggNS4xIDMyLjgtNy40NSA2MS40My0yOC44OSA4MS01NS44NCAyMC40NC0yNy41MiAzMC41Mi02Mi4yIDI5LjE2LTk2LjM1LS41Mi03LjUtMS41Ny0xNS0xLjY2LTIyLjQ5IDggMTkuNDggMTQuODIgMzkuNzEgMTYuNjUgNjAuODMgMiAxNC4yOC43NSAyOC43Ni0xLjYyIDQyLjktMS45MSAxMS01LjY3IDIxLjUxLTcuNzggMzIuNDNhMTY1IDE2NSAwIDAgMCAzOS4zNC04MS4wNyAxODMuNjQgMTgzLjY0IDAgMCAwLTE0LjIxLTEwNC42NGMyMC43OCAzMiAzMi4zNCA2OS41OCAzNS43MSAxMDcuNDguNDkgMTIuNzMuNDkgMjUuNTEgMCAzOC4yM0EyNDMuMjEgMjQzLjIxIDAgMCAxIDQ4MiAzNzEuMzRjLTI2LjEyIDQ3LjM0LTY4IDg1LjYzLTExNy4xOSAxMDgtNzguMjkgMzYuMjMtMTc0LjY4IDMxLjMyLTI0OC0xNC42OEEyNDguMzQgMjQ4LjM0IDAgMCAxIDI1LjM2IDM2NiAyMzguMzQgMjM4LjM0IDAgMCAxIDAgMjczLjA4di0zMS4zNEMzLjkzIDE3MiA0MC44NyAxMDUuODIgOTYgNjMuMzhtMjIyIDgwLjMzYTc5LjEzIDc5LjEzIDAgMCAwIDE2LTQuNDhjNS0xLjc3IDkuMjQtNS45NCAxMC4zMi0xMS4yMi04Ljk2IDQuOTktMTcuOTggOS45Mi0yNi4zMiAxNS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDEwNC41YzE3MS40IDAgMzAzLjIgNzIuMiAzMDMuMiAxNTEuNVM0OTEuMyA0MDcuNSAzMjAgNDA3LjVjLTE3MS40IDAtMzAzLjItNzIuMi0zMDMuMi0xNTEuNVMxNDguNyAxMDQuNSAzMjAgMTA0LjVtMC0xNi44QzE0My4zIDg3LjcgMCAxNjMgMCAyNTZzMTQzLjMgMTY4LjMgMzIwIDE2OC4zUzY0MCAzNDkgNjQwIDI1NiA0OTYuNyA4Ny43IDMyMCA4Ny43ek0yMTguMiAyNDIuNWMtNy45IDQwLjUtMzUuOCAzNi4zLTcwLjEgMzYuM2wxMy43LTcwLjZjMzggMCA2My44LTQuMSA1Ni40IDM0LjN6TTk3LjQgMzUwLjNoMzYuN2w4LjctNDQuOGM0MS4xIDAgNjYuNiAzIDkwLjItMTkuMSAyNi4xLTI0IDMyLjktNjYuNyAxNC4zLTg4LjEtOS43LTExLjItMjUuMy0xNi43LTQ2LjUtMTYuN2gtNzAuN0w5Ny40IDM1MC4zem0xODUuNy0yMTMuNmgzNi41bC04LjcgNDQuOGMzMS41IDAgNjAuNy0yLjMgNzQuOCAxMC43IDE0LjggMTMuNiA3LjcgMzEtOC4zIDExMy4xaC0zN2MxNS40LTc5LjQgMTguMy04NiAxMi43LTkyLTUuNC01LjgtMTcuNy00LjYtNDcuNC00LjZsLTE4LjggOTYuNmgtMzYuNWwzMi43LTE2OC42ek01MDUgMjQyLjVjLTggNDEuMS0zNi43IDM2LjMtNzAuMSAzNi4zbDEzLjctNzAuNmMzOC4yIDAgNjMuOC00LjEgNTYuNCAzNC4zek0zODQuMiAzNTAuM0g0MjFsOC43LTQ0LjhjNDMuMiAwIDY3LjEgMi41IDkwLjItMTkuMSAyNi4xLTI0IDMyLjktNjYuNyAxNC4zLTg4LjEtOS43LTExLjItMjUuMy0xNi43LTQ2LjUtMTYuN0g0MTdsLTMyLjggMTY4Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDQgMjQ2Yy0zLjItMi02LjMtMi45LTEwLjEtMi45LTYuNiAwLTEyLjYgMy4yLTE5LjMgMy43bDEuNyA0Ljl6bTEzNS45IDE5Ny45Yy0xOSAwLTY0LjEgOS41LTc5LjkgMTkuOGw2LjkgNDUuMWMzNS43IDYuMSA3MC4xIDMuNiAxMDYtOS44LTQuOC0xMC0yMy41LTU1LjEtMzMtNTUuMXpNMzQwLjggMTc3YzYuNiAyLjggMTEuNSA5LjIgMjIuNyAyMi4xIDItMS40IDcuNS01LjIgNy41LTguNiAwLTQuOS0xMS44LTEzLjItMTMuMi0yMyAxMS4yLTUuNyAyNS4yLTYgMzcuNi04LjkgNjguMS0xNi40IDExNi4zLTUyLjkgMTQ2LjgtMTE2LjdDNTQ4LjMgMjkuMyA1NTQgMTYuMSA1NTQuNiAybC0yIDIuNmMtMjguNCA1MC0zMyA2My4yLTgxLjMgMTAwLTMxLjkgMjQuNC02OS4yIDQwLjItMTA2LjYgNTQuNmwtNi4zLS4zdi0yMS44Yy0xOS42IDEuNi0xOS43LTE0LjYtMzEuNi0yMy0xOC43IDIwLjYtMzEuNiA0MC44LTU4LjkgNTEuMS0xMi43IDQuOC0xOS42IDEwLTI1LjkgMjEuOCAzNC45LTE2LjQgOTEuMi0xMy41IDk4LjgtMTB6TTU1NS41IDBsLS42IDEuMS0uMy45LjYtLjZ6bS01OS4yIDM4Mi4xYy0zMy45LTU2LjktNzUuMy0xMTguNC0xNTAtMTE1LjVsLS4zLTZjLTEuMS0xMy41IDMyLjggMy4yIDM1LjEtMzFsLTE0LjQgNy4yYy0xOS44LTQ1LjctOC42LTU0LjMtNjUuNS01NC4zLTE0LjcgMC0yNi43IDEuNy00MS40IDQuNiAyLjkgMTguNiAyLjIgMzYuNy0xMC45IDUwLjNsMTkuNSA1LjVjLTEuNyAzLjItMi45IDYuMy0yLjkgOS44IDAgMjEgNDIuOCAyLjkgNDIuOCAzMy42IDAgMTguNC0zNi44IDYwLjEtNTQuOSA2MC4xLTggMC01My43LTUwLTUzLjQtNjAuMWwuMy00LjYgNTIuMy0xMS41YzEzLTIuNiAxMi4zLTIyLjctMi45LTIyLjctMy43IDAtNDMuMSA5LjItNDkuNCAxMC42LTItNS4yLTcuNS0xNC4xLTEzLjgtMTQuMS0zLjIgMC02LjMgMy4yLTkuNSA0LTkuMiAyLjYtMzEgMi45LTIxLjUgMjAuMUwxNS45IDI5OC41Yy01LjUgMS4xLTguOSA2LjMtOC45IDExLjggMCA2IDUuNSAxMC45IDExLjUgMTAuOSA4IDAgMTMxLjMtMjguNCAxNDcuNC0zMi4yIDIuNiAzLjIgNC42IDYuMyA3LjggOC42IDIwLjEgMTQuNCA1OS44IDg1LjkgNzYuNCA4NS45IDI0LjEgMCA1OC0yMi40IDcxLjMtNDEuOSAzLjItNC4zIDYuOS03LjUgMTIuNC02LjkuNiAxMy44LTMxLjYgMzQuMi0zMyA0My43LTEuNCAxMC4yLTEgMzUuMi0uMyA0MS4xIDI2LjcgOC4xIDUyLTMuNiA3Ny45LTIuOSA0LjMtMjEgMTAuNi00MS45IDkuOC02My41bC0uMy05LjVjLTEuNC0zNC4yLTEwLjktMzguNS0zNC44LTU4LjYtMS4xLTEuMS0yLjYtMi42LTMuNy00IDIuMi0xLjQgMS4xLTEgNC42LTEuNyA4OC41IDAgNTYuMyAxODMuNiAxMTEuNSAyMjkuOSAzMy4xLTE1IDcyLjUtMjcuOSAxMDMuNS00Ny4yLTI5LTI1LjYtNTIuNi00NS43LTcyLjctNzkuOXptLTE5Ni4yIDQ2LjF2MjcuMmwxMS44LTMuNC0yLjktMjMuOHptLTY4LjctMTUwLjRsMjQuMSA2MS4yIDIxLTEzLjgtMzEuMy01MC45em04NC40IDE1NC45bDIgMTIuNGM5LTEuNSA1OC40LTYuNiA1OC40LTE0LjEgMC0xLjQtLjYtMy4yLS45LTQuNi0yNi44IDAtMzYuOSAzLjgtNTkuNSA2LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlckhhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMjQuOWMtODAuOCA1My42LTg5LjQgOTIuNS05Ni40IDEwNC40LTYuNyAxMi4yLTExLjcgNjAuMy0yMy4zIDgzLjYtMTEuNyAyMy42LTU0LjIgNDIuMi02Ni4xIDUwLTExLjcgNy44LTI4LjMgMzguMS00MS45IDY0LjItMTA4LjEtNC40LTE2Ny40IDM4LjgtMjU5LjIgOTMuNiAyOS40LTkuNyA0My4zLTE2LjcgNDMuMy0xNi43IDk0LjItMzYgMTM5LjMtNjguMyAyODEuMS00OS4yIDEuMSAwIDEuOS42IDIuOC44IDMuOSAyLjIgNS4zIDYuOSAzLjEgMTAuOGwtNTMuOSA5NS44Yy0yLjUgNC43LTcuOCA3LjItMTMuMSA2LjEtMTI2LjgtMjMuOC0yMjYuOSAxNy4zLTMxOC45IDE4LjZDMjQuMSA0ODggMCA0NTMuNCAwIDQ1MS44YzAtMS4xLjYtMS43IDEuNy0xLjcgMCAwIDM4LjMgMCAxMDMuMS0xNS4zQzE3OC40IDI5NC41IDI0NCAyNDUuNCAzMTUuNCAyNDUuNGMwIDAgNzEuNyAwIDkwLjYgNjEuOSAyMi44LTM5LjcgMjguMy00OS4yIDI4LjMtNDkuMiA1LjMtOS40IDM1LTc3LjIgODYuNC0xNDEuNCA1MS41LTY0IDkwLjQtNzkuOSAxMTkuMy05MS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaWVkUGlwZXJQcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDUuMyAxNzQuNmMwIDIxLjEtMTQuMiAzOC4xLTMxLjcgMzguMS03LjEgMC0xMi44LTEuMi0xNy4yLTMuN3YtNjhjNC40LTIuNyAxMC4xLTQuMiAxNy4yLTQuMiAxNy41IDAgMzEuNyAxNi45IDMxLjcgMzcuOHptNTIuNiA2N2MtNy4xIDAtMTIuOCAxLjUtMTcuMiA0LjJ2NjhjNC40IDIuNSAxMC4xIDMuNyAxNy4yIDMuNyAxNy40IDAgMzEuNy0xNi45IDMxLjctMzcuOCAwLTIxLjEtMTQuMy0zOC4xLTMxLjctMzguMXpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0xODUgMjU1LjFjNDEgMCA3NC4yLTM1LjYgNzQuMi03OS42IDAtNDQtMzMuMi03OS42LTc0LjItNzkuNi0xMiAwLTI0LjEgMy4yLTM0LjYgOC44aC00NS43VjMxMWw1MS44LTEwLjF2LTUwLjZjOC42IDMuMSAxOC4xIDQuOCAyOC41IDQuOHptMTU4LjQgMjUuM2MwLTQ0LTMzLjItNzkuNi03My45LTc5LjYtMy4yIDAtNi40LjItOS42LjctMy43IDEyLjUtMTAuMSAyMy44LTE5LjIgMzMuNC0xMy44IDE1LTMyLjIgMjMuOC01MS44IDI0LjhWNDE2bDUxLjgtMTAuMXYtNTAuNmM4LjYgMy4yIDE4LjIgNC43IDI4LjcgNC43IDQwLjggMCA3NC0zNS42IDc0LTc5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTUuOTMsMjMuMkM0MjkuMjMsMzAsMzg3Ljc5LDUxLjY5LDM0MS4zNSw5MC42NkEyMDYsMjA2LDAsMCwwLDI0MCw2NEMxMjUuMTMsNjQsMzIsMTU3LjEyLDMyLDI3MnM5My4xMywyMDgsMjA4LDIwOCwyMDgtOTMuMTMsMjA4LTIwOGEyMDcuMjUsMjA3LjI1LDAsMCwwLTU4Ljc1LTE0NC44MSwxNTUuMzUsMTU1LjM1LDAsMCwwLTE3LDI3LjRBMTc2LjE2LDE3Ni4xNiwwLDAsMSw0MTcuMSwyNzJjMCw5Ny42Ni03OS40NCwxNzcuMTEtMTc3LjA5LDE3Ny4xMWExNzUuODEsMTc1LjgxLDAsMCwxLTg3LjYzLTIzLjRjODIuOTQtMTA3LjMzLDE1MC43OS0zNy43NywxODQuMzEtMjI2LjY1LDUuNzktMzIuNjIsMjgtOTQuMjYsMTI2LjIzLTE2MC4xOEM0NzEsMzMuNDUsNDY1LjM1LDIwLjgsNDU1LjkzLDIzLjJaTTEyNSw0MDYuNEExNzYuNjYsMTc2LjY2LDAsMCwxLDYyLjksMjcyQzYyLjksMTc0LjM0LDE0Mi4zNSw5NC45LDI0MCw5NC45YTE3NCwxNzQsMCwwLDEsNzYuNjMsMTcuNzVDMjUwLjY0LDE3NC43NiwxODkuNzcsMjY1LjUyLDEyNSw0MDYuNFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGludGVyZXN0UCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDQgNi41QzEwMS40IDYuNSAwIDc0LjkgMCAxODUuNiAwIDI1NiAzOS42IDI5NiA2My42IDI5NmM5LjkgMCAxNS42LTI3LjYgMTUuNi0zNS40IDAtOS4zLTIzLjctMjkuMS0yMy43LTY3LjggMC04MC40IDYxLjItMTM3LjQgMTQwLjQtMTM3LjQgNjguMSAwIDExOC41IDM4LjcgMTE4LjUgMTA5LjggMCA1My4xLTIxLjMgMTUyLjctOTAuMyAxNTIuNy0yNC45IDAtNDYuMi0xOC00Ni4yLTQzLjggMC0zNy44IDI2LjQtNzQuNCAyNi40LTExMy40IDAtNjYuMi05My45LTU0LjItOTMuOSAyNS44IDAgMTYuOCAyLjEgMzUuNCA5LjYgNTAuNy0xMy44IDU5LjQtNDIgMTQ3LjktNDIgMjA5LjEgMCAxOC45IDIuNyAzNy41IDQuNSA1Ni40IDMuNCAzLjggMS43IDMuNCA2LjkgMS41IDUwLjQtNjkgNDguNi04Mi41IDcxLjQtMTcyLjggMTIuMyAyMy40IDQ0LjEgMzYgNjkuMyAzNiAxMDYuMiAwIDE1My45LTEwMy41IDE1My45LTE5Ni44QzM4NCA3MS4zIDI5OC4yIDYuNSAyMDQgNi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaW50ZXJlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDI1NmMwIDEzNy0xMTEgMjQ4LTI0OCAyNDgtMjUuNiAwLTUwLjItMy45LTczLjQtMTEuMSAxMC4xLTE2LjUgMjUuMi00My41IDMwLjgtNjUgMy0xMS42IDE1LjQtNTkgMTUuNC01OSA4LjEgMTUuNCAzMS43IDI4LjUgNTYuOCAyOC41IDc0LjggMCAxMjguNy02OC44IDEyOC43LTE1NC4zIDAtODEuOS02Ni45LTE0My4yLTE1Mi45LTE0My4yLTEwNyAwLTE2My45IDcxLjgtMTYzLjkgMTUwLjEgMCAzNi40IDE5LjQgODEuNyA1MC4zIDk2LjEgNC43IDIuMiA3LjIgMS4yIDguMy0zLjMuOC0zLjQgNS0yMC4zIDYuOS0yOC4xLjYtMi41LjMtNC43LTEuNy03LjEtMTAuMS0xMi41LTE4LjMtMzUuMy0xOC4zLTU2LjYgMC01NC43IDQxLjQtMTA3LjYgMTEyLTEwNy42IDYwLjkgMCAxMDMuNiA0MS41IDEwMy42IDEwMC45IDAgNjcuMS0zMy45IDExMy42LTc4IDExMy42LTI0LjMgMC00Mi42LTIwLjEtMzYuNy00NC44IDctMjkuNSAyMC41LTYxLjMgMjAuNS04Mi42IDAtMTktMTAuMi0zNC45LTMxLjQtMzQuOS0yNC45IDAtNDQuOSAyNS43LTQ0LjkgNjAuMiAwIDIyIDcuNCAzNi44IDcuNCAzNi44cy0yNC41IDEwMy44LTI5IDEyMy4yYy01IDIxLjQtMyA1MS42LS45IDcxLjJDNjUuNCA0NTAuOSAwIDM2MS4xIDAgMjU2IDAgMTE5IDExMSA4IDI0OCA4czI0OCAxMTEgMjQ4IDI0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGl4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Mi40IDI5Mi41QzI0Ny44IDI4Ny4xIDI1Ny4xIDI4Ny4xIDI2Mi41IDI5Mi41TDMzOS41IDM2OS41QzM1My43IDM4My43IDM3Mi42IDM5MS41IDM5Mi42IDM5MS41SDQwNy43TDMxMC42IDQ4OC42QzI4MC4zIDUxOC4xIDIzMS4xIDUxOC4xIDIwMC44IDQ4OC42TDEwMy4zIDM5MS4ySDExMi42QzEzMi42IDM5MS4yIDE1MS41IDM4My40IDE2NS43IDM2OS4yTDI0Mi40IDI5Mi41ek0yNjIuNSAyMTguOUMyNTYuMSAyMjQuNCAyNDcuOSAyMjQuNSAyNDIuNCAyMTguOUwxNjUuNyAxNDIuMkMxNTEuNSAxMjcuMSAxMzIuNiAxMjAuMiAxMTIuNiAxMjAuMkgxMDMuM0wyMDAuNyAyMi43NkMyMzEuMS03LjU4NiAyODAuMy03LjU4NiAzMTAuNiAyMi43Nkw0MDcuOCAxMTkuOUgzOTIuNkMzNzIuNiAxMTkuOSAzNTMuNyAxMjcuNyAzMzkuNSAxNDEuOUwyNjIuNSAyMTguOXpNMTEyLjYgMTQyLjdDMTI2LjQgMTQyLjcgMTM5LjEgMTQ4LjMgMTQ5LjcgMTU4LjFMMjI2LjQgMjM0LjhDMjMzLjYgMjQxLjEgMjQzIDI0NS42IDI1Mi41IDI0NS42QzI2MS45IDI0NS42IDI3MS4zIDI0MS4xIDI3OC41IDIzNC44TDM1NS41IDE1Ny44QzM2NS4zIDE0OC4xIDM3OC44IDE0Mi41IDM5Mi42IDE0Mi41SDQzMC4zTDQ4OC42IDIwMC44QzUxOC45IDIzMS4xIDUxOC45IDI4MC4zIDQ4OC42IDMxMC42TDQzMC4zIDM2OC45SDM5Mi42QzM3OC44IDM2OC45IDM2NS4zIDM2My4zIDM1NS41IDM1My41TDI3OC41IDI3Ni41QzI2NC42IDI2Mi42IDI0MC4zIDI2Mi42IDIyNi40IDI3Ni42TDE0OS43IDM1My4yQzEzOS4xIDM2MyAxMjYuNCAzNjguNiAxMTIuNiAzNjguNkg4MC43OEwyMi43NiAzMTAuNkMtNy41ODYgMjgwLjMtNy41ODYgMjMxLjEgMjIuNzYgMjAwLjhMODAuNzggMTQyLjdIMTEyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpeGl2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHptMTcxLjUgODRjNDEgMCA3Ni4zIDEyLjkgMTAxLjQgMzUuMmwwIDBjMjUuMiAyMi4yIDM5LjggNTQuMSAzOS44IDg4LjhjLjEgMzUuMy0xNi42IDY2LjMtNDIuNCA4N2MtMjUuOSAyMC44LTYwLjYgMzIuNC05OC44IDMyLjRjLTQzLjUgMC04My44LTE2LjEtODMuOC0xNi4xdjUxLjhjNy40IDIuMiAxOS43IDcgMTEuOSAxNC44SDEwNC44Yy03LjctNy44IDMuNi0xMi40IDEyLjEtMTQuOFYxNzUuNUM5Ny4xIDE5MC45IDg3IDIwNC4zIDgxLjggMjE0LjJjNiAxOS40LTUuMyAxOC41LTUuMyAxOC41TDU2IDE5OS43czcyLjctODMuNyAxNzkuNS04My43em0tMy42IDIyMi45YzMwIDAgNTYtMTEuMyA3My45LTI5LjJjMTcuOS0xOC4xIDI3LjktNDEuNiAyOC03MC4yYy0uMS0yOS4zLTkuNS01NC42LTI2LjctNzMuNmMtMTcuMi0xOC45LTQyLjctMzEuMy03NS4yLTMxLjRjLTI2LjctLjEtNTkuOCA5LTgwLjIgMjMuN1YzMjMuMWMxOC42IDkuMyA0Ni44IDE1LjkgODAuMiAxNS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGF5c3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzAuOSAzNzIuM2MtMTEuMyAxNC4yLTM4LjggMjQuMy0zOC44IDI0LjNMMzI3IDQ3MC4ydi01NC4zbDE1MC45LTUzLjhjMTcuMS02LjEgMTkuOC0xNC44IDUuOC0xOS40LTEzLjktNC42LTM5LjEtMy4zLTU2LjIgMi45TDMyNyAzODEuMXYtNTYuNGMyMy4yLTcuOCA0Ny4xLTEzLjYgNzUuNy0xNi44IDQwLjktNC41IDkwLjkuNiAxMzAuMiAxNS41IDQ0LjIgMTQgNDkuMiAzNC43IDM4IDQ4Ljl6bS0yMjQuNC05Mi41di0xMzljMC0xNi4zLTMtMzEuMy0xOC4zLTM1LjYtMTEuNy0zLjgtMTkgNy4xLTE5IDIzLjR2MzQ3LjlsLTkzLjgtMjkuOFYzMmMzOS45IDcuNCA5OCAyNC45IDEyOS4yIDM1LjRDNDI0LjEgOTQuNyA0NTEgMTI4LjcgNDUxIDIwNS4yYzAgNzQuNS00NiAxMDIuOC0xMDQuNSA3NC42ek00My4yIDQxMC4yYy00NS40LTEyLjgtNTMtMzkuNS0zMi4zLTU0LjggMTkuMS0xNC4yIDUxLjctMjQuOSA1MS43LTI0LjlsMTM0LjUtNDcuOHY1NC41bC05Ni44IDM0LjZjLTE3LjEgNi4xLTE5LjcgMTQuOC01LjggMTkuNCAxMy45IDQuNiAzOS4xIDMuMyA1Ni4yLTIuOWw0Ni40LTE2Ljl2NDguOGMtNTEuNiA5LjMtMTAxLjQgNy4zLTE1My45LTEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQcm9kdWN0SHVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjYuMyAyMTguOGMwIDIwLjUtMTYuNyAzNy4yLTM3LjIgMzcuMmgtNzAuM3YtNzQuNGg3MC4zYzIwLjUgMCAzNy4yIDE2LjcgMzcuMiAzNy4yek01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6bS0xMjguMS0zNy4yYzAtNDcuOS0zOC45LTg2LjgtODYuOC04Ni44SDE2OS4ydjI0OGg0OS42di03NC40aDcwLjNjNDcuOSAwIDg2LjgtMzguOSA4Ni44LTg2Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVB1c2hlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDMyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcgMTExLjlsLTk4LjUtOSAxNC0zMy40YzEwLjQtMjMuNS0xMC44LTQwLjQtMjguNy0zN0wyMi41IDc2LjljLTE1LjEgMi43LTI2IDE4LjMtMjEuNCAzNi42bDEwNS4xIDM0OC4zYzYuNSAyMS4zIDM2LjcgMjQuMiA0Ny43IDdsMzUuMy04MC44IDIzNS4yLTIzMS4zYzE2LjQtMTYuOCA0LjMtNDIuOS0xNy40LTQ0Ljh6TTI5Ny42IDUzLjZjNS4xLS43IDcuNSAyLjUgNS4yIDcuNEwyODYgMTAwLjkgMTA4LjYgODQuNmwxODktMzF6TTIyLjcgMTA3LjljLTMuMS01LjEgMS0xMCA2LjEtOS4xbDI0OC43IDIyLjctOTYuOSAyMzAuN0wyMi43IDEwNy45ek0xMzYgNDU2LjRjLTIuNiA0LTcuOSAzLjEtOS40LTEuMkw0My41IDE3OS43bDEyNy43IDE5Ny42Yy03IDE1LTM1LjIgNzkuMS0zNS4yIDc5LjF6bTI3Mi44LTMxNC41TDIxMC4xIDMzNy4zbDg5LjctMjEzLjcgMTA2LjQgOS43YzQgMS4xIDUuNyA1LjMgMi42IDguNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHl0aG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOS44IDIwMC41Yy03LjctMzAuOS0yMi4zLTU0LjItNTMuNC01NC4yaC00MC4xdjQ3LjRjMCAzNi44LTMxLjIgNjcuOC02Ni44IDY3LjhIMTcyLjdjLTI5LjIgMC01My40IDI1LTUzLjQgNTQuM3YxMDEuOGMwIDI5IDI1LjIgNDYgNTMuNCA1NC4zIDMzLjggOS45IDY2LjMgMTEuNyAxMDYuOCAwIDI2LjktNy44IDUzLjQtMjMuNSA1My40LTU0LjN2LTQwLjdIMjI2LjJ2LTEzLjZoMTYwLjJjMzEuMSAwIDQyLjYtMjEuNyA1My40LTU0LjIgMTEuMi0zMy41IDEwLjctNjUuNyAwLTEwOC42ek0yODYuMiA0MDRjMTEuMSAwIDIwLjEgOS4xIDIwLjEgMjAuMyAwIDExLjMtOSAyMC40LTIwLjEgMjAuNC0xMSAwLTIwLjEtOS4yLTIwLjEtMjAuNC4xLTExLjMgOS4xLTIwLjMgMjAuMS0yMC4zek0xNjcuOCAyNDguMWgxMDYuOGMyOS43IDAgNTMuNC0yNC41IDUzLjQtNTQuM1Y5MS45YzAtMjktMjQuNC01MC43LTUzLjQtNTUuNi0zNS44LTUuOS03NC43LTUuNi0xMDYuOC4xLTQ1LjIgOC01My40IDI0LjctNTMuNCA1NS42djQwLjdoMTA2Ljl2MTMuNmgtMTQ3Yy0zMS4xIDAtNTguMyAxOC43LTY2LjggNTQuMi05LjggNDAuNy0xMC4yIDY2LjEgMCAxMDguNiA3LjYgMzEuNiAyNS43IDU0LjIgNTYuOCA1NC4ySDEwMXYtNDguOGMwLTM1LjMgMzAuNS02Ni40IDY2LjgtNjYuNHptLTYuNy0xNDIuNmMtMTEuMSAwLTIwLjEtOS4xLTIwLjEtMjAuMy4xLTExLjMgOS0yMC40IDIwLjEtMjAuNCAxMSAwIDIwLjEgOS4yIDIwLjEgMjAuNHMtOSAyMC4zLTIwLjEgMjAuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMzLjc1NCA0MjAuNDQ1Yy0xMS41MjYgMS4zOTMtNDQuODYtNTIuNzQxLTQ0Ljg2LTUyLjc0MSAwIDMxLjM0NS0xNi4xMzYgNzIuMjQ3LTUxLjA1MSAxMDEuNzg2IDE2Ljg0MiA1LjE5MiA1NC44NDMgMTkuMTY3IDQ1LjgwMyAzNC40MjEtNy4zMTYgMTIuMzQzLTEyNS41MSA3Ljg4MS0xNTkuNjMyIDQuMDM3LTM0LjEyMiAzLjg0NC0xNTIuMzE2IDguMzA2LTE1OS42MzItNC4wMzctOS4wNDUtMTUuMjUgMjguOTE4LTI5LjIxNCA0NS43ODMtMzQuNDE1LTM0LjkyLTI5LjUzOS01MS4wNTktNzAuNDQ1LTUxLjA1OS0xMDEuNzkyIDAgMC0zMy4zMzQgNTQuMTM0LTQ0Ljg1OSA1Mi43NDEtNS4zNy0uNjUtMTIuNDI0LTI5LjY0NCA5LjM0Ny05OS43MDQgMTAuMjYxLTMzLjAyNCAyMS45OTUtNjAuNDc4IDQwLjE0NC0xMDUuNzc5QzYwLjY4MyA5OC4wNjMgMTA4Ljk4Mi4wMDYgMjI0IDBjMTEzLjczNy4wMDYgMTYzLjE1NiA5Ni4xMzMgMTYwLjI2NCAyMTQuOTYzIDE4LjExOCA0NS4yMjMgMjkuOTEyIDcyLjg1IDQwLjE0NCAxMDUuNzc4IDIxLjc2OCA3MC4wNiAxNC43MTYgOTkuMDUzIDkuMzQ2IDk5LjcwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVpbnNjYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy42IDQ3NC42aC0xYTE1OC4xIDE1OC4xIDAgMCAxIDAtMzE2LjJjOTQuOSAwIDE2OC4yIDgzLjEgMTU3IDE3Ni42IDQgNS4xIDguMiA5LjYgMTEuMiAxNS4zIDEzLjQtMzAuMyAyMC4zLTYyLjQgMjAuMy05Ny43QzUwMS4xIDExNy41IDM5MS42IDggMjU2LjUgOFMxMiAxMTcuNSAxMiAyNTIuNnMxMDkuNSAyNDQuNiAyNDQuNSAyNDQuNmEyMzcuMzYgMjM3LjM2IDAgMCAwIDcwLjQtMTAuMWMtNS4yLTMuNS04LjktOC4xLTEzLjMtMTIuNXptLS4xLS4xbC40LjF6bTc4LjQtMTY4LjlhOTkuMiA5OS4yIDAgMSAwIDk5LjIgOTkuMiA5OS4xOCA5OS4xOCAwIDAgMC05OS4yLTk5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVF1b3JhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC41IDM4Ni43aC0yOS4zYy0xLjUgMTMuNS0xMC41IDMwLjgtMzMgMzAuOC0yMC41IDAtMzUuMy0xNC4yLTQ5LjUtMzUuOCA0NC4yLTM0LjIgNzQuNy04Ny41IDc0LjctMTUzQzQwMy41IDExMS4yIDMwNi44IDMyIDIwNSAzMiAxMDUuMyAzMiA3LjMgMTExLjcgNy4zIDIyOC43YzAgMTM0LjEgMTMxLjMgMjIxLjYgMjQ5IDE4OUMyNzYgNDUxLjMgMzAyIDQ4MCAzNTEuNSA0ODBjODEuOCAwIDkwLjgtNzUuMyA4OS05My4zek0yOTcgMzI5LjJDMjc3LjUgMzAwIDI1My4zIDI3NyAyMDUuNSAyNzdjLTMwLjUgMC01NC4zIDEwLTY5IDIyLjhsMTIuMiAyNC4zYzYuMi0zIDEzLTQgMTkuOC00IDM1LjUgMCA1My43IDMwLjggNjkuMiA2MS4zLTEwIDMtMjAuNyA0LjItMzIuNyA0LjItNzUgMC0xMDcuNS01My0xMDcuNS0xNTYuN0M5Ny41IDEyNC41IDEzMCA3MSAyMDUgNzFjNzYuMiAwIDEwOC43IDUzLjUgMTA4LjcgMTU3LjcuMSA0MS44LTUuNCA3NS42LTE2LjcgMTAwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJQcm9qZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1ODEgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU4MSAyMjYuNkM1ODEgMTE5LjEgNDUwLjkgMzIgMjkwLjUgMzJTMCAxMTkuMSAwIDIyNi42QzAgMzIyLjQgMTAzLjMgNDAyIDIzOS40IDQxOC4xVjQ4MGg5OS4xdi02MS41YzI0LjMtMi43IDQ3LjYtNy40IDY5LjQtMTMuOUw0NDggNDgwaDExMmwtNjcuNC0xMTMuN2M1NC41LTM1LjQgODguNC04NC45IDg4LjQtMTM5Ljd6bS00NjYuOCAxNC41YzAtNzMuNSA5OC45LTEzMyAyMjAuOC0xMzNzMjExLjkgNDAuNyAyMTEuOSAxMzNjMCA1MC4xLTI2LjUgODUtNzAuMyAxMDYuNC0yLjQtMS42LTQuNy0yLjktNi40LTMuNy0xMC4yLTUuMi0yNy44LTEwLjUtMjcuOC0xMC41czg2LjYtNi40IDg2LjYtOTIuNy05MC42LTg3LjktOTAuNi04Ny45aC0xOTlWMzYxYy03NC4xLTIxLjUtMTI1LjItNjcuMS0xMjUuMi0xMTkuOXptMjI1LjEgMzguM3YtNTUuNmM1Ny44IDAgODcuOC02LjggODcuOCAyNy4zIDAgMzYuNS0zOC4yIDI4LjMtODcuOCAyOC4zem0tLjkgNzIuNUgzNjVjMTAuOCAwIDE4LjkgMTEuNyAyNCAxOS4yLTE2LjEgMS45LTMzIDIuOC01MC42IDIuOXYtMjIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmFzcGJlcnJ5UGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQwNyA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyIDIzMi41bC0zLjctNi41Yy4xLTQ2LjQtMjEuNC02NS4zLTQ2LjUtNzkuNyA3LjYtMiAxNS40LTMuNiAxNy42LTEzLjIgMTMuMS0zLjMgMTUuOC05LjQgMTcuMS0xNS44IDMuNC0yLjMgMTQuOC04LjcgMTMuNi0xOS43IDYuNC00LjQgMTAtMTAuMSA4LjEtMTguMSA2LjktNy41IDguNy0xMy43IDUuOC0xOS40IDguMy0xMC4zIDQuNi0xNS42IDEuMS0yMC45IDYuMi0xMS4yLjctMjMuMi0xNi42LTIxLjItNi45LTEwLjEtMjEuOS03LjgtMjQuMi03LjgtMi42LTMuMi02LTYtMTYuNS00LjctNi44LTYuMS0xNC40LTUtMjIuMy0yLjEtOS4zLTcuMy0xNS41LTEuNC0yMi42LjhDMjcxLjYuNiAyNjkgNS41IDI2My41IDcuNmMtMTIuMy0yLjYtMTYuMSAzLTIyIDguOWwtNi45LS4xYy0xOC42IDEwLjgtMjcuOCAzMi44LTMxLjEgNDQuMS0zLjMtMTEuMy0xMi41LTMzLjMtMzEuMS00NC4xbC02LjkuMWMtNS45LTUuOS05LjctMTEuNS0yMi04LjktNS42LTItOC4xLTctMTkuNC0zLjQtNC42LTEuNC04LjktNC40LTEzLjktNC4zLTIuNi4xLTUuNSAxLTguNyAzLjUtNy45LTMtMTUuNS00LTIyLjMgMi4xLTEwLjUtMS4zLTE0IDEuNC0xNi41IDQuNy0yLjMgMC0xNy4zLTIuMy0yNC4yIDcuOEMyMS4yIDE2IDE1LjggMjggMjIgMzkuMmMtMy41IDUuNC03LjIgMTAuNyAxLjEgMjAuOS0yLjkgNS43LTEuMSAxMS45IDUuOCAxOS40LTEuOCA4IDEuOCAxMy43IDguMSAxOC4xLTEuMiAxMSAxMC4yIDE3LjQgMTMuNiAxOS43IDEuMyA2LjQgNCAxMi40IDE3LjEgMTUuOCAyLjIgOS41IDEwIDExLjIgMTcuNiAxMy4yLTI1LjEgMTQuNC00Ni42IDMzLjMtNDYuNSA3OS43bC0zLjcgNi41Yy0yOC44IDE3LjItNTQuNyA3Mi43LTE0LjIgMTE3LjcgMi42IDE0LjEgNy4xIDI0LjIgMTEgMzUuNCA1LjkgNDUuMiA0NC41IDY2LjMgNTQuNiA2OC44IDE0LjkgMTEuMiAzMC44IDIxLjggNTIuMiAyOS4yQzE1OSA1MDQuMiAxODEgNTEyIDIwMyA1MTJoMWMyMi4xIDAgNDQtNy44IDY0LjItMjguNCAyMS41LTcuNCAzNy4zLTE4IDUyLjItMjkuMiAxMC4yLTIuNSA0OC43LTIzLjYgNTQuNi02OC44IDMuOS0xMS4yIDguNC0yMS4zIDExLTM1LjQgNDAuNi00NS4xIDE0LjctMTAwLjUtMTQtMTE3Ljd6bS0yMi4yLThjLTEuNSAxOC43LTk4LjktNjUuMS04Mi4xLTY3LjkgNDUuNy03LjUgODMuNiAxOS4yIDgyLjEgNjcuOXptLTQzIDkzLjFjLTI0LjUgMTUuOC01OS44IDUuNi03OC44LTIyLjhzLTE0LjYtNjQuMiA5LjktODBjMjQuNS0xNS44IDU5LjgtNS42IDc4LjggMjIuOHMxNC42IDY0LjItOS45IDgwek0yMzguOSAyOS4zYy44IDQuMiAxLjggNi44IDIuOSA3LjYgNS40LTUuOCA5LjgtMTEuNyAxNi44LTE3LjMgMCAzLjMtMS43IDYuOCAyLjUgOS40IDMuNy01IDguOC05LjUgMTUuNS0xMy4zLTMuMiA1LjYtLjYgNy4zIDEuMiA5LjYgNS4xLTQuNCAxMC04LjggMTkuNC0xMi4zLTIuNiAzLjEtNi4yIDYuMi0yLjQgOS44IDUuMy0zLjMgMTAuNi02LjYgMjMuMS04LjktMi44IDMuMS04LjcgNi4zLTUuMSA5LjQgNi42LTIuNSAxNC00LjQgMjIuMS01LjQtMy45IDMuMi03LjEgNi4zLTMuOSA4LjggNy4xLTIuMiAxNi45LTUuMSAyNi40LTIuNmwtNiA2LjFjLS43LjggMTQuMS42IDIzLjkuOC0zLjYgNS03LjIgOS43LTkuMyAxOC4yIDEgMSA1LjguNCAxMC40IDAtNC43IDkuOS0xMi44IDEyLjMtMTQuNyAxNi42IDIuOSAyLjIgNi44IDEuNiAxMS4yLjEtMy40IDYuOS0xMC40IDExLjctMTYgMTcuMyAxLjQgMSAzLjkgMS42IDkuNy45LTUuMiA1LjUtMTEuNCAxMC41LTE4LjggMTUgMS4zIDEuNSA1LjggMS41IDEwIDEuNi02LjcgNi41LTE1LjMgOS45LTIzLjQgMTQuMiA0IDIuNyA2LjkgMi4xIDEwIDIuMS01LjcgNC43LTE1LjQgNy4xLTI0LjQgMTAgMS43IDIuNyAzLjQgMy40IDcuMSA0LjEtOS41IDUuMy0yMy4yIDIuOS0yNyA1LjYuOSAyLjcgMy42IDQuNCA2LjcgNS44LTE1LjQuOS01Ny4zLS42LTY1LjQtMzIuMyAxNS43LTE3LjMgNDQuNC0zNy41IDkzLjctNjIuNi0zOC40IDEyLjgtNzMgMzAtMTAyIDUzLjUtMzQuMy0xNS45LTEwLjgtNTUuOSA1LjgtNzEuOHptLTM0LjQgMTE0LjZjMjQuMi0uMyA1NC4xIDE3LjggNTQgMzQuNy0uMSAxNS0yMSAyNy4xLTUzLjggMjYuOS0zMi4xLS40LTUzLjctMTUuMi01My42LTI5LjggMC0xMS45IDI2LjItMzIuNSA1My40LTMxLjh6bS0xMjMtMTIuOGMzLjctLjcgNS40LTEuNSA3LjEtNC4xLTktMi44LTE4LjctNS4zLTI0LjQtMTAgMy4xIDAgNiAuNyAxMC0yLjEtOC4xLTQuMy0xNi43LTcuNy0yMy40LTE0LjIgNC4yLS4xIDguNyAwIDEwLTEuNi03LjQtNC41LTEzLjYtOS41LTE4LjgtMTUgNS44LjcgOC4zLjEgOS43LS45LTUuNi01LjYtMTIuNy0xMC40LTE2LTE3LjMgNC4zIDEuNSA4LjMgMiAxMS4yLS4xLTEuOS00LjItMTAtNi43LTE0LjctMTYuNiA0LjYuNCA5LjQgMSAxMC40IDAtMi4xLTguNS01LjgtMTMuMy05LjMtMTguMiA5LjgtLjEgMjQuNiAwIDIzLjktLjhsLTYtNi4xYzkuNS0yLjUgMTkuMy40IDI2LjQgMi42IDMuMi0yLjUtLjEtNS42LTMuOS04LjggOC4xIDEuMSAxNS40IDIuOSAyMi4xIDUuNCAzLjUtMy4xLTIuMy02LjMtNS4xLTkuNCAxMi41IDIuMyAxNy44IDUuNiAyMy4xIDguOSAzLjgtMy42LjItNi43LTIuNC05LjggOS40IDMuNCAxNC4zIDcuOSAxOS40IDEyLjMgMS43LTIuMyA0LjQtNCAxLjItOS42IDYuNyAzLjggMTEuOCA4LjMgMTUuNSAxMy4zIDQuMS0yLjYgMi41LTYuMiAyLjUtOS40IDcgNS42IDExLjQgMTEuNSAxNi44IDE3LjMgMS4xLS44IDItMy40IDIuOS03LjYgMTYuNiAxNS45IDQwLjEgNTUuOSA2IDcxLjgtMjktMjMuNS02My42LTQwLjctMTAyLTUzLjUgNDkuMyAyNSA3OCA0NS4zIDkzLjcgNjIuNi04IDMxLjgtNTAgMzMuMi02NS40IDMyLjMgMy4xLTEuNCA1LjgtMy4yIDYuNy01LjgtNC0yLjgtMTcuNi0uNC0yNy4yLTUuNnptNjAuMSAyNC4xYzE2LjggMi44LTgwLjYgODYuNS04Mi4xIDY3LjktMS41LTQ4LjcgMzYuNS03NS41IDgyLjEtNjcuOXpNMzguMiAzNDJjLTIzLjctMTguOC0zMS4zLTczLjcgMTIuNi05OC4zIDI2LjUtNyA5IDEwNy44LTEyLjYgOTguM3ptOTEgOTguMmMtMTMuMyA3LjktNDUuOCA0LjctNjguOC0yNy45LTE1LjUtMjcuNC0xMy41LTU1LjItMi42LTYzLjQgMTYuMy05LjggNDEuNSAzLjQgNjAuOSAyNS42IDE2LjkgMjAgMjQuNiA1NS4zIDEwLjUgNjUuN3ptLTI2LjQtMTE5LjdjLTI0LjUtMTUuOC0yOC45LTUxLjYtOS45LTgwczU0LjMtMzguNiA3OC44LTIyLjggMjguOSA1MS42IDkuOSA4MGMtMTkuMSAyOC40LTU0LjQgMzguNi03OC44IDIyLjh6TTIwNSA0OTZjLTI5LjQgMS4yLTU4LjItMjMuNy01Ny44LTMyLjMtLjQtMTIuNyAzNS44LTIyLjYgNTkuMy0yMiAyMy43LTEgNTUuNiA3LjUgNTUuNyAxOC45LjUgMTEtMjguOCAzNS45LTU3LjIgMzUuNHptNTguOS0xMjQuOWMuMiAyOS43LTI2LjIgNTMuOC01OC44IDU0LTMyLjYuMi01OS4yLTIzLjgtNTkuNC01My40di0uNmMtLjItMjkuNyAyNi4yLTUzLjggNTguOC01NCAzMi42LS4yIDU5LjIgMjMuOCA1OS40IDUzLjR2LjZ6bTgyLjIgNDIuN2MtMjUuMyAzNC42LTU5LjYgMzUuOS03Mi4zIDI2LjMtMTMuMy0xMi40LTMuMi01MC45IDE1LjEtNzIgMjAuOS0yMy4zIDQzLjMtMzguNSA1OC45LTI2LjYgMTAuNSAxMC4zIDE2LjcgNDkuMS0xLjcgNzIuM3ptMjIuOS03My4yYy0yMS41IDkuNC0zOS0xMDUuMy0xMi42LTk4LjMgNDMuOSAyNC43IDM2LjMgNzkuNiAxMi42IDk4LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJhdmVscnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk4LjI1MiwyMzQuMjIzYy0xLjIwOC0xMC4zNC0xLjctMjAuODI2LTMuNzQ2LTMxYTMxMC4zMDYsMzEwLjMwNiwwLDAsMC05LjYyMi0zNi42LDE4NC4wNjgsMTg0LjA2OCwwLDAsMC0zMC44NzQtNTcuNSwyNTEuMTU0LDI1MS4xNTQsMCwwLDAtMTguODE4LTIxLjY4OSwyMzcuMzYyLDIzNy4zNjIsMCwwLDAtNDcuMTEzLTM2LjExNkEyNDAuOCwyNDAuOCwwLDAsMCwzMzEuMzU2LDI2LjY1Yy0xMS4wMTgtMy4xLTIyLjI3Mi01LjQzMS0zMy41MTUtNy42MTUtNi43OC0xLjMxNC0xMy43NDktMS42NjctMjAuNjI3LTIuNDgyLS4zMTYtLjAzNi0uNi0uMzU4LS45LS41NTNxLTE2LjE0My4wMDktMzIuMjg4LjAwNmMtMi40MS4zODktNC44MDguOTI1LTcuMjM2LDEuMTVhMTc5LjMzMSwxNzkuMzMxLDAsMCwwLTM0LjI1Niw3LjEsMjIxLjUsMjIxLjUsMCwwLDAtMzkuNzY4LDE2LjM1NSwyODEuMzg1LDI4MS4zODUsMCwwLDAtMzguMDgsMjQuMTU4Yy02LjE2Nyw0LjYxLTEyLjI2OCw5LjM2LTE3Ljk3NCwxNC41MThDOTYuNTM5LDg4LjQ5NCw4Ni4zNCw5Ny43Miw3Ni43ODUsMTA3LjU1NWEyNDMuODc4LDI0My44NzgsMCwwLDAtMzMuNjQ4LDQzLjk1LDIwNi40ODgsMjA2LjQ4OCwwLDAsMC0yMC40OTQsNDQuNiwxOTguMiwxOTguMiwwLDAsMC03LjY5MSwzNC43NTlBMjAxLjEzLDIwMS4xMywwLDAsMCwxMy40LDI2Ni4zODVhMjk5LjcxNiwyOTkuNzE2LDAsMCwwLDQuNDI1LDQwLjI0LDIyNi44NjUsMjI2Ljg2NSwwLDAsMCwxNi43Myw1My4zLDIxMC41NDMsMjEwLjU0MywwLDAsMCwyNCwzOS41MjgsMjEzLjU4OSwyMTMuNTg5LDAsMCwwLDI2LjM1OCwyOC40MTZBMjUxLjMxMywyNTEuMzEzLDAsMCwwLDEyNi43LDQ1OC40NTVhMjg3LjgzMSwyODcuODMxLDAsMCwwLDU1LjksMjUuMjc3LDI2OS41LDI2OS41LDAsMCwwLDQwLjY0MSw5LjgzNWM2LjA3MSwxLjAxLDEyLjI3NSwxLjI1MywxOC40MTIsMS44NzNhNC4xNDksNC4xNDksMCwwLDEsMS4xOS41NmgzMi4yODljMi41MDctLjM4OSw1LS45MzcsNy41MjctMS4xNDMsMTYuMzM2LTEuMzMyLDMyLjEwNy01LjMzNSw0Ny40ODktMTAuNzE3QTIxOS45OTIsMjE5Ljk5MiwwLDAsMCwzNzkuMSw0NjAuMzIyYzkuNzQ5LTYuNDQ3LDE5LjM5NS0xMy4wNzcsMjguNzM3LTIwLjEsNS43ODUtNC4zNDgsMTAuOTg4LTkuNSwxNi4zLTE0LjQ1NywzLjk2NC0zLjcsNy43NjQtNy41NzgsMTEuNTEtMTEuNWEyMzIuMTYyLDIzMi4xNjIsMCwwLDAsMzEuNDI3LTQxLjYzOWM5LjU0Mi0xNi4wNDUsMTcuMzU1LTMyLjkwNSwyMi4zLTUwLjkyNiwyLjg1OS0xMC40MTMsNC45NDctMjEuMDQ1LDcuMDE3LTMxLjY1MiwxLjAzMi01LjI3OSwxLjI1MS0xMC43MjMsMS44Ny0xNi4wODcuMDM2LS4zMTcuMzU4LS42LjU1Mi0uOVYyMzYuMDA1QTkuNzU3LDkuNzU3LDAsMCwxLDQ5OC4yNTIsMjM0LjIyM1ptLTE2MS4xMTctMS4xNXMtMTYuNTcyLTIuOTgtMjguNDctMi45OGMtMjcuMiwwLTMzLjU3LDE0LjktMzMuNTcsMzcuMDRWMzYwLjhIMjAxLjU4MlYxNzAuMDYySDI3NS4xdjMxLjkzMWM4LjkyNC0yNi44MjIsMjYuNzcxLTM2LjE4OSw2Mi4wNC0zNi4xODlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlYWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxOC4yIDE3Ny4yYy01LjQtMS44LTEwLjgtMy41LTE2LjItNS4xLjktMy43IDEuNy03LjQgMi41LTExLjEgMTIuMy01OS42IDQuMi0xMDcuNS0yMy4xLTEyMy4zLTI2LjMtMTUuMS02OS4yLjYtMTEyLjYgMzguNC00LjMgMy43LTguNSA3LjYtMTIuNSAxMS41LTIuNy0yLjYtNS41LTUuMi04LjMtNy43LTQ1LjUtNDAuNC05MS4xLTU3LjQtMTE4LjQtNDEuNS0yNi4yIDE1LjItMzQgNjAuMy0yMyAxMTYuNyAxLjEgNS42IDIuMyAxMS4xIDMuNyAxNi43LTYuNCAxLjgtMTIuNyAzLjgtMTguNiA1LjlDMzguMyAxOTYuMiAwIDIyNS40IDAgMjU1LjZjMCAzMS4yIDQwLjggNjIuNSA5Ni4zIDgxLjUgNC41IDEuNSA5IDMgMTMuNiA0LjMtMS41IDYtMi44IDExLjktNCAxOC0xMC41IDU1LjUtMi4zIDk5LjUgMjMuOSAxMTQuNiAyNyAxNS42IDcyLjQtLjQgMTE2LjYtMzkuMSAzLjUtMy4xIDctNi4zIDEwLjUtOS43IDQuNCA0LjMgOSA4LjQgMTMuNiAxMi40IDQyLjggMzYuOCA4NS4xIDUxLjcgMTExLjIgMzYuNiAyNy0xNS42IDM1LjgtNjIuOSAyNC40LTEyMC41LS45LTQuNC0xLjktOC45LTMtMTMuNSAzLjItLjkgNi4zLTEuOSA5LjQtMi45IDU3LjctMTkuMSA5OS41LTUwIDk5LjUtODEuNyAwLTMwLjMtMzkuNC01OS43LTkzLjgtNzguNHpNMjgyLjkgOTIuM2MzNy4yLTMyLjQgNzEuOS00NS4xIDg3LjctMzYgMTYuOSA5LjcgMjMuNCA0OC45IDEyLjggMTAwLjQtLjcgMy40LTEuNCA2LjctMi4zIDEwLTIyLjItNS00NC43LTguNi02Ny4zLTEwLjYtMTMtMTguNi0yNy4yLTM2LjQtNDIuNi01My4xIDMuOS0zLjcgNy43LTcuMiAxMS43LTEwLjd6TTE2Ny4yIDMwNy41YzUuMSA4LjcgMTAuMyAxNy40IDE1LjggMjUuOS0xNS42LTEuNy0zMS4xLTQuMi00Ni40LTcuNSA0LjQtMTQuNCA5LjktMjkuMyAxNi4zLTQ0LjUgNC42IDguOCA5LjMgMTcuNSAxNC4zIDI2LjF6bS0zMC4zLTEyMC4zYzE0LjQtMy4yIDI5LjctNS44IDQ1LjYtNy44LTUuMyA4LjMtMTAuNSAxNi44LTE1LjQgMjUuNC00LjkgOC41LTkuNyAxNy4yLTE0LjIgMjYtNi4zLTE0LjktMTEuNi0yOS41LTE2LTQzLjZ6bTI3LjQgNjguOWM2LjYtMTMuOCAxMy44LTI3LjMgMjEuNC00MC42czE1LjgtMjYuMiAyNC40LTM4LjljMTUtMS4xIDMwLjMtMS43IDQ1LjktMS43czMxIC42IDQ1LjkgMS43YzguNSAxMi42IDE2LjYgMjUuNSAyNC4zIDM4LjdzMTQuOSAyNi43IDIxLjcgNDAuNGMtNi43IDEzLjgtMTMuOSAyNy40LTIxLjYgNDAuOC03LjYgMTMuMy0xNS43IDI2LjItMjQuMiAzOS0xNC45IDEuMS0zMC40IDEuNi00Ni4xIDEuNnMtMzAuOS0uNS00NS42LTEuNGMtOC43LTEyLjctMTYuOS0yNS43LTI0LjYtMzlzLTE0LjgtMjYuOC0yMS41LTQwLjZ6bTE4MC42IDUxLjJjNS4xLTguOCA5LjktMTcuNyAxNC42LTI2LjcgNi40IDE0LjUgMTIgMjkuMiAxNi45IDQ0LjMtMTUuNSAzLjUtMzEuMiA2LjItNDcgOCA1LjQtOC40IDEwLjUtMTcgMTUuNS0yNS42em0xNC40LTc2LjVjLTQuNy04LjgtOS41LTE3LjYtMTQuNS0yNi4yLTQuOS04LjUtMTAtMTYuOS0xNS4zLTI1LjIgMTYuMSAyIDMxLjUgNC43IDQ1LjkgOC00LjYgMTQuOC0xMCAyOS4yLTE2LjEgNDMuNHpNMjU2LjIgMTE4LjNjMTAuNSAxMS40IDIwLjQgMjMuNCAyOS42IDM1LjgtMTkuOC0uOS0zOS43LS45LTU5LjUgMCA5LjgtMTIuOSAxOS45LTI0LjkgMjkuOS0zNS44ek0xNDAuMiA1N2MxNi44LTkuOCA1NC4xIDQuMiA5My40IDM5IDIuNSAyLjIgNSA0LjYgNy42IDctMTUuNSAxNi43LTI5LjggMzQuNS00Mi45IDUzLjEtMjIuNiAyLTQ1IDUuNS02Ny4yIDEwLjQtMS4zLTUuMS0yLjQtMTAuMy0zLjUtMTUuNS05LjQtNDguNC0zLjItODQuOSAxMi42LTk0em0tMjQuNSAyNjMuNmMtNC4yLTEuMi04LjMtMi41LTEyLjQtMy45LTIxLjMtNi43LTQ1LjUtMTcuMy02My0zMS4yLTEwLjEtNy0xNi45LTE3LjgtMTguOC0yOS45IDAtMTguMyAzMS42LTQxLjcgNzcuMi01Ny42IDUuNy0yIDExLjUtMy44IDE3LjMtNS41IDYuOCAyMS43IDE1IDQzIDI0LjUgNjMuNi05LjYgMjAuOS0xNy45IDQyLjUtMjQuOCA2NC41em0xMTYuNiA5OGMtMTYuNSAxNS4xLTM1LjYgMjcuMS01Ni40IDM1LjMtMTEuMSA1LjMtMjMuOSA1LjgtMzUuMyAxLjMtMTUuOS05LjItMjIuNS00NC41LTEzLjUtOTIgMS4xLTUuNiAyLjMtMTEuMiAzLjctMTYuNyAyMi40IDQuOCA0NSA4LjEgNjcuOSA5LjggMTMuMiAxOC43IDI3LjcgMzYuNiA0My4yIDUzLjQtMy4yIDMuMS02LjQgNi4xLTkuNiA4Ljl6bTI0LjUtMjQuM2MtMTAuMi0xMS0yMC40LTIzLjItMzAuMy0zNi4zIDkuNi40IDE5LjUuNiAyOS41LjYgMTAuMyAwIDIwLjQtLjIgMzAuNC0uNy05LjIgMTIuNy0xOS4xIDI0LjgtMjkuNiAzNi40em0xMzAuNyAzMGMtLjkgMTIuMi02LjkgMjMuNi0xNi41IDMxLjMtMTUuOSA5LjItNDkuOC0yLjgtODYuNC0zNC4yLTQuMi0zLjYtOC40LTcuNS0xMi43LTExLjUgMTUuMy0xNi45IDI5LjQtMzQuOCA0Mi4yLTUzLjYgMjIuOS0xLjkgNDUuNy01LjQgNjguMi0xMC41IDEgNC4xIDEuOSA4LjIgMi43IDEyLjIgNC45IDIxLjYgNS43IDQ0LjEgMi41IDY2LjN6bTE4LjItMTA3LjVjLTIuOC45LTUuNiAxLjgtOC41IDIuNi03LTIxLjgtMTUuNi00My4xLTI1LjUtNjMuOCA5LjYtMjAuNCAxNy43LTQxLjQgMjQuNS02Mi45IDUuMiAxLjUgMTAuMiAzLjEgMTUgNC43IDQ2LjYgMTYgNzkuMyAzOS44IDc5LjMgNTggMCAxOS42LTM0LjkgNDQuOS04NC44IDYxLjR6bS0xNDkuNy0xNWMyNS4zIDAgNDUuOC0yMC41IDQ1LjgtNDUuOHMtMjAuNS00NS44LTQ1LjgtNDUuOGMtMjUuMyAwLTQ1LjggMjAuNS00NS44IDQ1LjhzMjAuNSA0NS44IDQ1LjggNDUuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVhY3RldXJvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjUwLjYgMjExLjc0bDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjMtNy4xLS4xLTIuMy02LjgtMi4zIDYuOC03LjIuMSA1LjcgNC4zem02My43IDBsNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuMy03LjItLjEtMi4zLTYuOC0yLjMgNi44LTcuMi4xIDUuNyA0LjN6bS05MS4zIDUwLjVoLTMuNGMtNC44IDAtMy44IDQtMy44IDEyLjEgMCA0LjctMi4zIDYuMS01LjggNi4xcy01LjgtMS40LTUuOC02LjF2LTM2LjZjMC00LjcgMi4zLTYuMSA1LjgtNi4xczUuOCAxLjQgNS44IDYuMWMwIDcuMi0uNyAxMC41IDMuOCAxMC41aDMuNGM0LjctLjEgMy44LTMuOSAzLjgtMTIuMyAwLTkuOS02LjctMTQuMS0xNi44LTE0LjFoLS4yYy0xMC4xIDAtMTYuOCA0LjItMTYuOCAxNC4xVjI3NmMwIDEwLjQgNi43IDE0LjEgMTYuOCAxNC4xaC4yYzEwLjEgMCAxNi44LTMuOCAxNi44LTE0LjEgMC05Ljg2IDEuMS0xMy43Ni0zLjgtMTMuNzZ6bS04MC43IDE3LjRoLTE0Ljd2LTE5LjNIMTM5YzIuNSAwIDMuOC0xLjMgMy44LTMuOHYtMi4xYzAtMi41LTEuMy0zLjgtMy44LTMuOGgtMTEuNHYtMTguM0gxNDJjMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44aC0yMS43Yy0yLjQtLjEtMy43IDEuMy0zLjcgMy44djU5LjFjMCAyLjUgMS4zIDMuOCAzLjggMy44aDIxLjljMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44em0tNDItMTguNWM0LjYtMiA3LjMtNiA3LjMtMTIuNHYtMTEuOWMwLTEwLjEtNi43LTE0LjEtMTYuOC0xNC4xSDc3LjRjLTIuNSAwLTMuOCAxLjMtMy44IDMuOHY1OS4xYzAgMi41IDEuMyAzLjggMy44IDMuOGgzLjRjMi41IDAgMy44LTEuMyAzLjgtMy44di0yMi45aDUuNmw3LjQgMjMuNWE0LjEgNC4xIDAgMCAwIDQuMyAzLjJoMy4zYzIuOCAwIDQtMS44IDMuMi00LjR6bS0zLjgtMTRjMCA0LjgtMi41IDYuMS02LjEgNi4xaC01Ljh2LTIwLjloNS44YzMuNiAwIDYuMSAxLjMgNi4xIDYuMXpNMTc2IDIyNmEzLjgyIDMuODIgMCAwIDAtNC4yLTMuNGgtNi45YTMuNjggMy42OCAwIDAgMC00IDMuNGwtMTEgNTkuMmMtLjUgMi43LjkgNC4xIDMuNCA0LjFoM2EzLjc0IDMuNzQgMCAwIDAgNC4xLTMuNWwxLjgtMTEuM2gxMi4ybDEuOCAxMS4zYTMuNzQgMy43NCAwIDAgMCA0LjEgMy41aDMuNWMyLjYgMCAzLjktMS40IDMuNC00LjF6bS0xMi4zIDM5LjNsNC43LTI5LjcgNC43IDI5Ljd6bTg5LjMgMjAuMnYtNTMuMmg3LjVjMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44aC0yNS44Yy0yLjUgMC0zLjggMS4zLTMuOCAzLjh2Mi4xYzAgMi41IDEuMyAzLjggMy44IDMuOGg3LjN2NTMuMmMwIDIuNSAxLjMgMy44IDMuOCAzLjhoMy40YzIuNS4wNCAzLjgtMS4zIDMuOC0zLjc2em0yNDgtLjhoLTE5LjRWMjU4aDE2LjFhMS44OSAxLjg5IDAgMCAwIDItMnYtLjhhMS44OSAxLjg5IDAgMCAwLTItMmgtMTYuMXYtMjUuOGgxOS4xYTEuODkgMS44OSAwIDAgMCAyLTJ2LS44YTEuNzcgMS43NyAwIDAgMC0yLTEuOWgtMjIuMmExLjYyIDEuNjIgMCAwIDAtMiAxLjh2NjNhMS44MSAxLjgxIDAgMCAwIDIgMS45SDUwMWExLjgxIDEuODEgMCAwIDAgMi0xLjl2LS44YTEuODQgMS44NCAwIDAgMC0yLTEuOTZ6bS05My4xLTYyLjloLS44Yy0xMC4xIDAtMTUuMyA0LjctMTUuMyAxNC4xVjI3NmMwIDkuMyA1LjIgMTQuMSAxNS4zIDE0LjFoLjhjMTAuMSAwIDE1LjMtNC44IDE1LjMtMTQuMXYtNDAuMWMwLTkuMzYtNS4yLTE0LjA2LTE1LjMtMTQuMDZ6bTEwLjIgNTIuNGMtLjEgOC0zIDExLjEtMTAuNSAxMS4xcy0xMC41LTMuMS0xMC41LTExLjF2LTM2LjZjMC03LjkgMy0xMS4xIDEwLjUtMTEuMXMxMC41IDMuMiAxMC41IDExLjF6bS00Ni41LTE0LjVjNi4xLTEuNiA5LjItNi4xIDkuMi0xMy4zdi05LjdjMC05LjQtNS4yLTE0LjEtMTUuMy0xNC4xaC0xMy43YTEuODEgMS44MSAwIDAgMC0yIDEuOXY2M2ExLjgxIDEuODEgMCAwIDAgMiAxLjloMS4yYTEuNzQgMS43NCAwIDAgMCAxLjktMS45di0yNi45aDExLjZsMTAuNCAyNy4yYTIuMzIgMi4zMiAwIDAgMCAyLjMgMS41aDEuNWMxLjQgMCAyLTEgMS41LTIuM3ptLTYuNC0zLjlIMzU1di0yOC41aDEwLjJjNy41IDAgMTAuNSAzLjEgMTAuNSAxMS4xdjYuNGMwIDcuODQtMyAxMS4wNC0xMC41IDExLjA0em04NS45LTMzLjFoLTEzLjdhMS42MiAxLjYyIDAgMCAwLTIgMS44djYzYTEuODEgMS44MSAwIDAgMCAyIDEuOWgxLjJhMS43NCAxLjc0IDAgMCAwIDEuOS0xLjl2LTI2LjFoMTAuNmMxMC4xIDAgMTUuMy00LjggMTUuMy0xNC4xdi0xMC41YzAtOS40LTUuMi0xNC4xLTE1LjMtMTQuMXptMTAuMiAyMi44YzAgNy45LTMgMTEuMS0xMC41IDExLjFoLTEwLjJ2LTI5LjJoMTAuMmM3LjUtLjEgMTAuNSAzLjEgMTAuNSAxMXpNMjU5LjUgMzA4bC0yLjMtNi44LTIuMyA2LjgtNy4xLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjN6bTIyNy42LTEzNi4xYTM2NC40MiAzNjQuNDIgMCAwIDAtMzUuNi0xMS4zYzE5LjYtNzggMTEuNi0xMzQuNy0yMi4zLTE1My45QzM5NC43LTEyLjY2IDM0My4zIDExIDI5MSA2MS45NHE1LjEgNC45NSAxMC4yIDEwLjJjODIuNS04MCAxMTkuNi01My41IDEyMC45LTUyLjggMjIuNCAxMi43IDM2IDU1LjggMTUuNSAxMzcuOGE1ODcuODMgNTg3LjgzIDAgMCAwLTg0LjYtMTNDMjgxLjEgNDMuNjQgMjEyLjQgMiAxNzAuOCAyIDE0MCAyIDEyNyAyMyAxMjMuMiAyOS43NGMtMTguMSAzMi0xMy4zIDg0LjIuMSAxMzMuOC03MC41IDIwLjMtMTIwLjcgNTQuMS0xMjAuMyA5NSAuNSA1OS42IDEwMy4yIDg3LjggMTIyLjEgOTIuOC0yMC41IDgxLjktMTAuMSAxMzUuNiAyMi4zIDE1My45IDI4IDE1LjggNzUuMSA2IDEzOC4yLTU1LjJxLTUuMS00Ljk1LTEwLjItMTAuMmMtODIuNSA4MC0xMTkuNyA1My41LTEyMC45IDUyLjgtMjIuMy0xMi42LTM2LTU1LjYtMTUuNS0xMzcuOSAxMi40IDIuOSA0MS44IDkuNSA4NC42IDEzIDcxLjkgMTAwLjQgMTQwLjYgMTQyIDE4Mi4xIDE0MiAzMC44IDAgNDMuOC0yMSA0Ny42LTI3LjcgMTgtMzEuOSAxMy4zLTg0LjEtLjEtMTMzLjggMTUyLjMtNDMuOCAxNTYuMi0xMzAuMiAzMy45LTE3Ni4zek0xMzUuOSAzNi44NGMyLjktNS4xIDExLjktMjAuMyAzNC45LTIwLjMgMzYuOCAwIDk4LjggMzkuNiAxNjMuMyAxMjYuMmE3MTQgNzE0IDAgMCAwLTkzLjkuOSA1NDcuNzYgNTQ3Ljc2IDAgMCAxIDQyLjItNTIuNFEyNzcuMyA4NiAyNzIuMiA4MWE1OTguMjUgNTk4LjI1IDAgMCAwLTUwLjcgNjQuMiA1NjkuNjkgNTY5LjY5IDAgMCAwLTg0LjQgMTQuNmMtLjItMS40LTI0LjMtODIuMi0xLjItMTIzem0zMDQuOCA0MzguM2MtMi45IDUuMS0xMS44IDIwLjMtMzQuOSAyMC4zLTM2LjcgMC05OC43LTM5LjQtMTYzLjMtMTI2LjJhNjk1LjM4IDY5NS4zOCAwIDAgMCA5My45LS45IDU0Ny43NiA1NDcuNzYgMCAwIDEtNDIuMiA1Mi40cTUuMSA1LjI1IDEwLjIgMTAuMmE1ODguNDcgNTg4LjQ3IDAgMCAwIDUwLjctNjQuMmM0Ny4zLTQuNyA4MC4zLTEzLjUgODQuNC0xNC42IDIyLjcgODQuNCA0LjUgMTE3IDEuMiAxMjN6bTkuMS0xMzguNmMtMy42LTExLjktNy43LTI0LjEtMTIuNC0zNi40YTEyLjY3IDEyLjY3IDAgMCAxLTEwLjctNS43bC0uMS4xYTE5LjYxIDE5LjYxIDAgMCAxLTUuNCAzLjZjNS43IDE0LjMgMTAuNiAyOC40IDE0LjcgNDIuMmE1MzUuMyA1MzUuMyAwIDAgMS03MiAxM2MzLjUtNS4zIDE3LjItMjYuMiAzMi4yLTU0LjJhMjQuNiAyNC42IDAgMCAxLTYtMy4yYy0xLjEgMS4yLTMuNiA0LjItMTAuOSA0LjItNi4yIDExLjItMTcuNCAzMC45LTMzLjkgNTUuMmE3MTEuOTEgNzExLjkxIDAgMCAxLTExMi40IDFjLTcuOS0xMS4yLTIxLjUtMzEuMS0zNi44LTU3LjhhMjEgMjEgMCAwIDEtMy0xLjVjLTEuOSAxLjYtMy45IDMuMi0xMi42IDMuMiA2LjMgMTEuMiAxNy41IDMwLjcgMzMuOCA1NC42YTU0OC44MSA1NDguODEgMCAwIDEtNzIuMi0xMS43cTUuODUtMjEgMTQuMS00Mi45Yy0zLjIgMC01LjQuMi04LjQtMWExNy41OCAxNy41OCAwIDAgMS02LjkgMWMtNC45IDEzLjQtOS4xIDI2LjUtMTIuNyAzOS40Qy0zMS43IDI5Ny0xMi4xIDIxNiAxMjYuNyAxNzUuNjRjMy42IDExLjkgNy43IDI0LjEgMTIuNCAzNi40IDEwLjQgMCAxMi45IDMuNCAxNC40IDUuM2ExMiAxMiAwIDAgMSAyLjMtMi4yYy01LjgtMTQuNy0xMC45LTI5LjItMTUuMi00My4zIDctMS44IDMyLjQtOC40IDcyLTEzLTE1LjkgMjQuMy0yNi43IDQzLjktMzIuOCA1NS4zYTE0LjIyIDE0LjIyIDAgMCAxIDYuNCA4IDIzLjQyIDIzLjQyIDAgMCAxIDEwLjItOC40YzYuNS0xMS43IDE3LjktMzEuOSAzNC44LTU2LjlhNzExLjcyIDcxMS43MiAwIDAgMSAxMTIuNC0xYzMxLjUgNDQuNiAyOC45IDQ4LjEgNDIuNSA2NC41YTIxLjQyIDIxLjQyIDAgMCAxIDEwLjQtNy40Yy02LjQtMTEuNC0xNy42LTMxLTM0LjMtNTUuNSA0MC40IDQuMSA2NSAxMCA3Mi4yIDExLjctNCAxNC40LTguOSAyOS4yLTE0LjYgNDQuMmEyMC43NCAyMC43NCAwIDAgMSA2LjggNC4zbC4xLjFhMTIuNzIgMTIuNzIgMCAwIDEgOC45LTUuNmM0LjktMTMuNCA5LjItMjYuNiAxMi44LTM5LjVhMzU5LjcxIDM1OS43MSAwIDAgMSAzNC41IDExYzEwNi4xIDM5LjkgNzQgODcuOSA3Mi42IDkwLjQtMTkuOCAzNS4xLTgwLjEgNTUuMi0xMDUuNyA2Mi41em0tMTE0LjQtMTE0aC0xLjJhMS43NCAxLjc0IDAgMCAwLTEuOSAxLjl2NDkuOGMwIDcuOS0yLjYgMTEuMS0xMC4xIDExLjFzLTEwLjEtMy4xLTEwLjEtMTEuMXYtNDkuOGExLjY5IDEuNjkgMCAwIDAtMS45LTEuOUgzMDlhMS44MSAxLjgxIDAgMCAwLTIgMS45djUxLjVjMCA5LjYgNSAxNC4xIDE1LjEgMTQuMWguNGMxMC4xIDAgMTUuMS00LjYgMTUuMS0xNC4xdi01MS41YTIgMiAwIDAgMC0yLjItMS45ek0zMjEuNyAzMDhsLTIuMy02LjgtMi4zIDYuOC03LjEuMSA1LjcgNC4zLTIuMSA2LjggNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuM3ptLTMxLjEgNy40bC0yLjMtNi44LTIuMyA2LjgtNy4xLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjN6bTUuMS0zMC44aC0xOS40di0yNi43aDE2LjFhMS44OSAxLjg5IDAgMCAwIDItMnYtLjhhMS44OSAxLjg5IDAgMCAwLTItMmgtMTYuMXYtMjUuOGgxOS4xYTEuODkgMS44OSAwIDAgMCAyLTJ2LS44YTEuNzcgMS43NyAwIDAgMC0yLTEuOWgtMjIuMmExLjgxIDEuODEgMCAwIDAtMiAxLjl2NjNhMS44MSAxLjgxIDAgMCAwIDIgMS45aDIyLjVhMS43NyAxLjc3IDAgMCAwIDItMS45di0uOGExLjgzIDEuODMgMCAwIDAtMi0yLjA2em0tNy40LTk5LjRMMjg2IDE5MmwtNy4xLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjMtNy4xLS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWFkbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4LjMgNDYuNUgzODguNWMtNDguMSAwLTg5LjkgMzMuMy0xMDAuNCA4MC4zLTEwLjYtNDctNTIuMy04MC4zLTEwMC40LTgwLjNINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djI0NS44YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDg5LjdjMTAyLjIgMCAxMzIuNyAyNC40IDE0Ny4zIDc1IC43IDIuOCA1LjIgMi44IDYgMCAxNC43LTUwLjYgNDUuMi03NSAxNDcuMy03NUg1MjhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWOTQuNmMwLTI2LjQtMjEuMy00Ny45LTQ3LjctNDguMXpNMjQyIDMxMS45YzAgMS45LTEuNSAzLjUtMy41IDMuNUg3OC4yYy0xLjkgMC0zLjUtMS41LTMuNS0zLjVWMjg5YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjV2MjIuOXptMC02MC45YzAgMS45LTEuNSAzLjUtMy41IDMuNUg3OC4yYy0xLjkgMC0zLjUtMS41LTMuNS0zLjV2LTIyLjljMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNVYyNTF6bTAtNjAuOWMwIDEuOS0xLjUgMy41LTMuNSAzLjVINzguMmMtMS45IDAtMy41LTEuNS0zLjUtMy41di0yMi45YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjV2MjIuOXptMjU5LjMgMTIxLjdjMCAxLjktMS41IDMuNS0zLjUgMy41SDMzNy41Yy0xLjkgMC0zLjUtMS41LTMuNS0zLjV2LTIyLjljMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNXYyMi45em0wLTYwLjljMCAxLjktMS41IDMuNS0zLjUgMy41SDMzNy41Yy0xLjkgMC0zLjUtMS41LTMuNS0zLjVWMjI4YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjV2MjIuOXptMC02MC45YzAgMS45LTEuNSAzLjUtMy41IDMuNUgzMzcuNWMtMS45IDAtMy41LTEuNS0zLjUtMy41di0yMi44YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjVWMTkwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWJlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYuNSA1MDRDMTE3LjIgNTA0IDkgMzg3LjggMTMuMiAyNDkuOSAxNiAxNzAuNyA1Ni40IDk3LjcgMTI5LjcgNDkuNWMuMyAwIDEuOS0uNiAxLjEuOC01LjggNS41LTExMS4zIDEyOS44LTE0LjEgMjI2LjQgNDkuOCA0OS41IDkwIDIuNSA5MCAyLjUgMzguNS01MC4xLS42LTEyNS45LS42LTEyNS45LTEwLTI0LjktNDUuNy00MC4xLTQ1LjctNDAuMWwyOC44LTMxLjhjMjQuNCAxMC41IDQzLjIgMzguNyA0My4yIDM4LjcuOC0yOS42LTIxLjktNjEuNC0yMS45LTYxLjRMMjU1LjEgOGw0NC4zIDUwLjFjLTIwLjUgMjguOC0yMS45IDYyLjYtMjEuOSA2Mi42IDEzLjgtMjMgNDMuNS0zOS4zIDQzLjUtMzkuM2wyOC41IDMxLjhjLTI3LjQgOC45LTQ1LjQgMzkuOS00NS40IDM5LjktMTUuOCAyOC41LTI3LjEgODkuNC42IDEyNy4zIDMyLjQgNDQuNiA4Ny43LTIuOCA4Ny43LTIuOCAxMDIuNy05MS45LTEwLjUtMjI1LTEwLjUtMjI1LTYuMS01LjUuOC0yLjguOC0yLjggNTAuMSAzNi41IDExNC42IDg0LjQgMTE2LjIgMjA0LjhDNTAwLjkgNDAwLjIgMzk5IDUwNCAyNTYuNSA1MDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZFJpdmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1My4yIDMySDk0LjhDNDIuNCAzMiAwIDc0LjQgMCAxMjYuOHYyNTguNEMwIDQzNy42IDQyLjQgNDgwIDk0LjggNDgwaDI1OC40YzUyLjQgMCA5NC44LTQyLjQgOTQuOC05NC44VjEyNi44YzAtNTIuNC00Mi40LTk0LjgtOTQuOC05NC44ek0xNDQuOSAyMDAuOXY1Ni4zYzAgMjctMjEuOSA0OC45LTQ4LjkgNDguOVYxNTEuOWMwLTEzLjIgMTAuNy0yMy45IDIzLjktMjMuOWgxNTQuMmMwIDI3LTIxLjkgNDguOS00OC45IDQ4LjloLTU2LjNjLTEyLjMtLjYtMjQuNiAxMS42LTI0IDI0em0xNzYuMyA3MmgtNTYuM2MtMTIuMy0uNi0yNC42IDExLjYtMjQgMjR2NTYuM2MwIDI3LTIxLjkgNDguOS00OC45IDQ4LjlWMjQ3LjljMC0xMy4yIDEwLjctMjMuOSAyMy45LTIzLjloMTU0LjJjMCAyNy0yMS45IDQ4LjktNDguOSA0OC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWRkaXRBbGllbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzMgMTM4LjZjLTI1LjIgMC00Ni4zLTE3LjUtNTEuOS00MWwwIDBjLTMwLjYgNC4zLTU0LjIgMzAuNy01NC4yIDYyLjRsMCAuMmM0Ny40IDEuOCA5MC42IDE1LjEgMTI0LjkgMzYuM2MxMi42LTkuNyAyOC40LTE1LjUgNDUuNS0xNS41YzQxLjMgMCA3NC43IDMzLjQgNzQuNyA3NC43YzAgMjkuOC0xNy40IDU1LjUtNDIuNyA2Ny41Yy0yLjQgODYuOC05NyAxNTYuNi0yMTMuMiAxNTYuNlM0NS41IDQxMC4xIDQzIDMyMy40QzE3LjYgMzExLjUgMCAyODUuNyAwIDI1NS43YzAtNDEuMyAzMy40LTc0LjcgNzQuNy03NC43YzE3LjIgMCAzMyA1LjggNDUuNyAxNS42YzM0LTIxLjEgNzYuOC0zNC40IDEyMy43LTM2LjRsMC0uM2MwLTQ0LjMgMzMuNy04MC45IDc2LjgtODUuNUMzMjUuOCA1MC4yIDM0Ny4yIDMyIDM3MyAzMmMyOS40IDAgNTMuMyAyMy45IDUzLjMgNTMuM3MtMjMuOSA1My4zLTUzLjMgNTMuM3pNMTU3LjUgMjU1LjNjLTIwLjkgMC0zOC45IDIwLjgtNDAuMiA0Ny45czE3LjEgMzguMSAzOCAzOC4xczM2LjYtOS44IDM3LjgtMzYuOXMtMTQuNy00OS4xLTM1LjctNDkuMXpNMzk1IDMwMy4xYy0xLjItMjcuMS0xOS4yLTQ3LjktNDAuMi00Ny45cy0zNi45IDIyLTM1LjcgNDkuMWMxLjIgMjcuMSAxNi45IDM2LjkgMzcuOCAzNi45czM5LjMtMTEgMzgtMzguMXptLTYwLjEgNzAuOGMxLjUtMy42LTEtNy43LTQuOS04LjFjLTIzLTIuMy00Ny45LTMuNi03My44LTMuNnMtNTAuOCAxLjMtNzMuOCAzLjZjLTMuOSAuNC02LjQgNC41LTQuOSA4LjFjMTIuOSAzMC44IDQzLjMgNTIuNCA3OC43IDUyLjRzNjUuOC0yMS42IDc4LjctNTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2QzAgMTE0LjYgMTE0LjYgMCAyNTYgMFM1MTIgMTE0LjYgNTEyIDI1NnMtMTE0LjYgMjU2LTI1NiAyNTZMMzcuMSA1MTJjLTEzLjcgMC0yMC41LTE2LjUtMTAuOS0yNi4yTDc1IDQzN0MyOC43IDM5MC43IDAgMzI2LjcgMCAyNTZ6TTM0OS42IDE1My42YzIzLjYgMCA0Mi43LTE5LjEgNDIuNy00Mi43cy0xOS4xLTQyLjctNDIuNy00Mi43Yy0yMC42IDAtMzcuOCAxNC42LTQxLjggMzRjLTM0LjUgMy43LTYxLjQgMzMtNjEuNCA2OC40bDAgLjJjLTM3LjUgMS42LTcxLjggMTIuMy05OSAyOS4xYy0xMC4xLTcuOC0yMi44LTEyLjUtMzYuNS0xMi41Yy0zMyAwLTU5LjggMjYuOC01OS44IDU5LjhjMCAyNCAxNC4xIDQ0LjYgMzQuNCA1NC4xYzIgNjkuNCA3Ny42IDEyNS4yIDE3MC42IDEyNS4yczE2OC43LTU1LjkgMTcwLjYtMTI1LjNjMjAuMi05LjYgMzQuMS0zMC4yIDM0LjEtNTRjMC0zMy0yNi44LTU5LjgtNTkuOC01OS44Yy0xMy43IDAtMjYuMyA0LjYtMzYuNCAxMi40Yy0yNy40LTE3LTYyLjEtMjcuNy0xMDAtMjkuMWwwLS4yYzAtMjUuNCAxOC45LTQ2LjUgNDMuNC00OS45bDAgMGM0LjQgMTguOCAyMS4zIDMyLjggNDEuNSAzMi44ek0xNzcuMSAyNDYuOWMxNi43IDAgMjkuNSAxNy42IDI4LjUgMzkuM3MtMTMuNSAyOS42LTMwLjMgMjkuNnMtMzEuNC04LjgtMzAuNC0zMC41czE1LjQtMzguMyAzMi4xLTM4LjN6bTE5MC4xIDM4LjNjMSAyMS43LTEzLjcgMzAuNS0zMC40IDMwLjVzLTI5LjMtNy45LTMwLjMtMjkuNmMtMS0yMS43IDExLjgtMzkuMyAyOC41LTM5LjNzMzEuMiAxNi42IDMyLjEgMzguM3ptLTQ4LjEgNTYuN2MtMTAuMyAyNC42LTM0LjYgNDEuOS02MyA0MS45cy01Mi43LTE3LjMtNjMtNDEuOWMtMS4yLTIuOSAuOC02LjIgMy45LTYuNWMxOC40LTEuOSAzOC4zLTIuOSA1OS4xLTIuOXM0MC43IDEgNTkuMSAyLjljMy4xIC4zIDUuMSAzLjYgMy45IDYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0MS41MiAyODUuNTZjMzMuNjUgMCA4Mi4zNC02Ljk0IDgyLjM0LTQ3IC4yMi02Ljc0Ljg2LTEuODItMjAuODgtOTYuMjQtNC42Mi0xOS4xNS04LjY4LTI3Ljg0LTQyLjMxLTQ0LjY1LTI2LjA5LTEzLjM0LTgyLjkyLTM1LjM3LTk5LjczLTM1LjM3LTE1LjY2IDAtMjAuMiAyMC4xNy0zOC44NyAyMC4xNy0xOCAwLTMxLjMxLTE1LjA2LTQ4LjEyLTE1LjA2LTE2LjE0IDAtMjYuNjYgMTEtMzQuNzggMzMuNjItMjcuNSA3Ny41NS0yNi4yOCA3NC4yNy0yNi4xMiA3OC4yNyAwIDI0LjggOTcuNjQgMTA2LjExIDIyOC40NyAxMDYuMTFNNDI5IDI1NC44NGM0LjY1IDIyIDQuNjUgMjQuMzUgNC42NSAyNy4yNSAwIDM3LjY2LTQyLjMzIDU4LjU2LTk4IDU4LjU2LTEyNS43NC4wOC0yMzUuOTEtNzMuNjUtMjM1LjkxLTEyMi4zM2E0OS41NSA0OS41NSAwIDAgMSA0LjA2LTE5LjcyQzU4LjU2IDIwMC44NiAwIDIwOC45MyAwIDI2MC42M2MwIDg0LjY3IDIwMC42MyAxODkgMzU5LjQ5IDE4OSAxMjEuNzkgMCAxNTIuNTEtNTUuMDggMTUyLjUxLTk4LjU4IDAtMzQuMjEtMjkuNTktNzMuMDUtODIuOTMtOTYuMjRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVucmVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNCAxNjkuMWMwIDExMC40LTYxIDIwNS40LTE0Ny42IDI0Ny40QzMwIDM3My4yIDggMzE3LjcgOCAyNTYuNiA4IDEzMy45IDk3LjEgMzIuMiAyMTQgMTIuNXYxNTYuNnpNMjU1IDUwNGMtNDIuOSAwLTgzLjMtMTEtMTE4LjUtMzAuNEMxOTMuNyA0MzcuNSAyMzkuOSAzODIuOSAyNTUgMzE5YzE1LjUgNjMuOSA2MS43IDExOC41IDExOC44IDE1NC43QzMzOC43IDQ5MyAyOTguMyA1MDQgMjU1IDUwNHptMTkwLjYtODcuNUMzNTkgMzc0LjUgMjk4IDI3OS42IDI5OCAxNjkuMVYxMi41YzExNi45IDE5LjcgMjA2IDEyMS40IDIwNiAyNDQuMSAwIDYxLjEtMjIgMTE2LjYtNTguNCAxNTkuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVwbHlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA0ODBIMTI4QzU3LjYgNDgwIDAgNDIyLjQgMCAzNTJWMTYwQzAgODkuNiA1Ny42IDMyIDEyOCAzMmgxOTJjNzAuNCAwIDEyOCA1Ny42IDEyOCAxMjh2MTkyYzAgNzAuNC01Ny42IDEyOC0xMjggMTI4ek0xOTMuNCAyNzMuMmMtNi4xLTItMTEuNi0zLjEtMTYuNC0zLjEtNy4yIDAtMTMuNSAxLjktMTguOSA1LjYtNS40IDMuNy05LjYgOS0xMi44IDE1LjhoLTEuMWwtNC4yLTE4LjNoLTI4djEzOC45aDM2LjF2LTg5LjdjMS41LTUuNCA0LjQtOS44IDguNy0xMy4yIDQuMy0zLjQgOS44LTUuMSAxNi4yLTUuMSA0LjYgMCA5LjggMSAxNS42IDMuMWw0LjgtMzR6bTExNS4yIDEwMy40Yy0zLjIgMi40LTcuNyA0LjgtMTMuNyA3LjEtNiAyLjMtMTIuOCAzLjUtMjAuNCAzLjUtMTIuMiAwLTIxLjEtMy0yNi41LTguOS01LjUtNS45LTguNS0xNC43LTktMjYuNGg4My4zYy45LTQuOCAxLjYtOS40IDIuMS0xMy45LjUtNC40LjctOC42LjctMTIuNSAwLTEwLjctMS42LTE5LjctNC43LTI2LjktMy4yLTcuMi03LjMtMTMtMTIuNS0xNy4yLTUuMi00LjMtMTEuMS03LjMtMTcuOC05LjItNi43LTEuOC0xMy41LTIuOC0yMC42LTIuOC0yMS4xIDAtMzcuNSA2LjEtNDkuMiAxOC4zcy0xNy41IDMwLjUtMTcuNSA1NWMwIDIyLjggNS4yIDQwLjcgMTUuNiA1My43IDEwLjQgMTMuMSAyNi44IDE5LjYgNDkuMiAxOS42IDEwLjcgMCAyMC45LTEuNSAzMC40LTQuNiA5LjUtMy4xIDE3LjEtNi44IDIyLjYtMTEuMmwtMTItMjMuNnptLTIxLjgtNzAuM2MzLjggNS40IDUuMyAxMy4xIDQuNiAyMy4xaC01MS43Yy45LTkuNCAzLjctMTcgOC4yLTIyLjYgNC41LTUuNiAxMS41LTguNSAyMS04LjUgOC4yLS4xIDE0LjEgMi42IDE3LjkgOHptNzkuOSAyLjVjNC4xIDMuOSA5LjQgNS44IDE2LjEgNS44IDcgMCAxMi42LTEuOSAxNi43LTUuOHM2LjEtOS4xIDYuMS0xNS42LTItMTEuNi02LjEtMTUuNGMtNC4xLTMuOC05LjYtNS43LTE2LjctNS43LTYuNyAwLTEyIDEuOS0xNi4xIDUuNy00LjEgMy44LTYuMSA4LjktNi4xIDE1LjRzMiAxMS43IDYuMSAxNS42em0wIDEwMC41YzQuMSAzLjkgOS40IDUuOCAxNi4xIDUuOCA3IDAgMTIuNi0xLjkgMTYuNy01LjhzNi4xLTkuMSA2LjEtMTUuNi0yLTExLjYtNi4xLTE1LjRjLTQuMS0zLjgtOS42LTUuNy0xNi43LTUuNy02LjcgMC0xMiAxLjktMTYuMSA1LjctNC4xIDMuOC02LjEgOC45LTYuMSAxNS40IDAgNi42IDIgMTEuNyA2LjEgMTUuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVzZWFyY2hnYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJ2NDQ4aDQ0OFYzMkgwem0yNjIuMiAzMzQuNGMtNi42IDMtMzMuMiA2LTUwLTE0LjItOS4yLTEwLjYtMjUuMy0zMy4zLTQyLjItNjMuNi04LjkgMC0xNC43IDAtMjEuNC0uNnY0Ni40YzAgMjMuNSA2IDIxLjIgMjUuOCAyMy45djguMWMtNi45LS4zLTIzLjEtLjgtMzUuNi0uOC0xMy4xIDAtMjYuMS42LTMzLjYuOHYtOC4xYzE1LjUtMi45IDIyLTEuMyAyMi0yMy45VjIyNWMwLTIyLjYtNi40LTIxLTIyLTIzLjlWMTkzYzI1LjggMSA1My4xLS42IDcwLjktLjYgMzEuNyAwIDU1LjkgMTQuNCA1NS45IDQ1LjYgMCAyMS4xLTE2LjcgNDIuMi0zOS4yIDQ3LjUgMTMuNiAyNC4yIDMwIDQ1LjYgNDIuMiA1OC45IDcuMiA3LjggMTcuMiAxNC43IDI3LjIgMTQuN3Y3LjN6bTIyLjktMTM1Yy0yMy4zIDAtMzIuMi0xNS43LTMyLjItMzIuMlYxNjdjMC0xMi4yIDguOC0zMC40IDM0LTMwLjRzMzAuNCAxNy45IDMwLjQgMTcuOWwtMTAuNyA3LjJzLTUuNS0xMi41LTE5LjctMTIuNWMtNy45IDAtMTkuNyA3LjMtMTkuNyAxOS43djI2LjhjMCAxMy40IDYuNiAyMy4zIDE3LjkgMjMuMyAxNC4xIDAgMjEuNS0xMC45IDIxLjUtMjYuOGgtMTcuOXYtMTAuN2gzMC40YzAgMjAuNSA0LjcgNDkuOS0zNCA0OS45em0tMTE2LjUgNDQuN2MtOS40IDAtMTMuNi0uMy0yMC0uOHYtNjkuN2M2LjQtLjYgMTUtLjYgMjIuNS0uNiAyMy4zIDAgMzcuMiAxMi4yIDM3LjIgMzQuNSAwIDIxLjktMTUgMzYuNi0zOS43IDM2LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlc29sdmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODEuMiAyNzguMmM0Ni0xMy4zIDQ5LjYtMjMuNSA0NC00My40TDMxNCAxOTUuNWMtNi4xLTIwLjktMTguNC0yOC4xLTcxLjEtMTIuOEw1NC43IDIzNi44bDI4LjYgOTguNiAxOTcuOS01Ny4yek0yNDguNSA4QzEzMS40IDggMzMuMiA4OC43IDcuMiAxOTcuNWwyMjEuOS02My45YzM0LjgtMTAuMiA1NC4yLTExLjcgNzkuMy04LjIgMzYuMyA2LjEgNTIuNyAyNSA2MS40IDU1LjJsMTAuNyAzNy44YzguMiAyOC4xIDEgNTAuNi0yMy41IDczLjYtMTkuNCAxNy40LTMxLjIgMjQuNS02MS40IDMzLjJMMjAzIDM1MS44bDIyMC40IDI3LjEgOS43IDM0LjItNDguMSAxMy4zLTI4Ni44LTM3LjMgMjMgODAuMmMzNi44IDIyIDgwLjMgMzQuNyAxMjYuMyAzNC43IDEzNyAwIDI0OC41LTExMS40IDI0OC41LTI0OC4zQzQ5NyAxMTkuNCAzODUuNSA4IDI0OC41IDh6TTM4LjMgMzg4LjZMMCAyNTYuOGMwIDQ4LjUgMTQuMyA5My40IDM4LjMgMTMxLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJldiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODkuNjcgMjc0Ljg5YTY1LjU3IDY1LjU3IDAgMSAxLTY1LjU2LTY1LjU2IDY1LjY0IDY1LjY0IDAgMCAxIDY1LjU2IDY1LjU2em0xMzkuNTUtNS4wNWgtLjEzYTIwNC42OSAyMDQuNjkgMCAwIDAtNzQuMzItMTUzbC00NS4zOCAyNi4yYTE1Ny4wNyAxNTcuMDcgMCAwIDEgNzEuODEgMTMxLjg0QzM4MS4yIDM2MS41IDMxMC43MyA0MzIgMjI0LjExIDQzMlM2NyAzNjEuNSA2NyAyNzQuODhjMC04MS44OCA2My0xNDkuMjcgMTQzLTE1Ni40M3YzOS4xMmwxMDguNzctNjIuNzlMMjEwIDMydjM4LjMyYy0xMDYuNyA3LjI1LTE5MSA5Ni0xOTEgMjA0LjU3IDAgMTExLjU5IDg5LjEyIDIwMi4yOSAyMDAuMDYgMjA1di4xMWgyMTAuMTZWMjY5Ljg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2NrZXRjaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4NC4wNDYsMjI0LjhhMzQuMTE0LDM0LjExNCwwLDEsMCwzNC4zMTcsMzQuMTEzQTM0LjIxNywzNC4yMTcsMCwwLDAsMjg0LjA0NiwyMjQuOFptLTExMC40NSwwYTM0LjExNCwzNC4xMTQsMCwxLDAsMzQuMzE3LDM0LjExM0EzNC4yMTcsMzQuMjE3LDAsMCwwLDE3My42LDIyNC44Wm0yMjAuOTIzLDBhMzQuMTE0LDM0LjExNCwwLDEsMCwzNC4zMTcsMzQuMTEzQTM0LjIxNSwzNC4yMTUsMCwwLDAsMzk0LjUxOSwyMjQuOFptMTUzLjgwNy01NS4zMTljLTE1LjUzNS0yNC4xNzItMzcuMzEtNDUuNTctNjQuNjgxLTYzLjYxOC01Mi44ODYtMzQuODE3LTEyMi4zNzQtNTQtMTk1LjY2Ni01NGE0MDUuOTc1LDQwNS45NzUsMCwwLDAtNzIuMDMyLDYuMzU3LDIzOC41MjQsMjM4LjUyNCwwLDAsMC00OS41MS0zNi41ODhDOTkuNjg0LTExLjcsNDAuODU5LjcxMSwxMS4xMzUsMTEuNDIxQTE0LjI5MSwxNC4yOTEsMCwwLDAsNS41OCwzNC43ODJDMjYuNTQyLDU2LjQ1OCw2MS4yMjIsOTkuMyw1Mi43LDEzOC4yNTJjLTMzLjE0MiwzMy45LTUxLjExMiw3NC43NzYtNTEuMTEyLDExNy4zMzcsMCw0My4zNzIsMTcuOTcsODQuMjQ4LDUxLjExMiwxMTguMTQ4LDguNTI2LDM4Ljk1Ni0yNi4xNTQsODEuODE2LTQ3LjExNiwxMDMuNDkxYTE0LjI4NCwxNC4yODQsMCwwLDAsNS41NTUsMjMuMzRjMjkuNzI0LDEwLjcwOSw4OC41NDksMjMuMTQ3LDE1NS4zMjQtMTAuMmEyMzguNjc5LDIzOC42NzksMCwwLDAsNDkuNTEtMzYuNTg5QTQwNS45NzIsNDA1Ljk3MiwwLDAsMCwyODgsNDYwLjE0YzczLjMxMywwLDE0Mi44LTE5LjE1OSwxOTUuNjY3LTUzLjk3NSwyNy4zNzEtMTguMDQ5LDQ5LjE0NS0zOS40MjYsNjQuNjc5LTYzLjYxOSwxNy4zMDktMjYuOTIzLDI2LjA3LTU1LjkxNiwyNi4wNy04Ni4xMjVDNTc0LjM5NCwyMjUuNCw1NjUuNjM0LDE5Ni40Myw1NDguMzI2LDE2OS40ODVaTTI4NC45ODcsNDA5LjlhMzQ1LjY1LDM0NS42NSwwLDAsMS04OS40NDYtMTEuNWwtMjAuMTI5LDE5LjM5M2ExODQuMzY2LDE4NC4zNjYsMCwwLDEtMzcuMTM4LDI3LjU4NSwxNDUuNzY3LDE0NS43NjcsMCwwLDEtNTIuNTIyLDE0Ljg3Yy45ODMtMS43NzEsMS44ODEtMy41NjMsMi44NDItNS4zNTZxMzAuMjU4LTU1LjY4LDE2LjMyNS0xMDAuMDc4Yy0zMi45OTItMjUuOTYyLTUyLjc3OC01OS4yLTUyLjc3OC05NS40LDAtODMuMSwxMDQuMjU0LTE1MC40NjksMjMyLjg0Ni0xNTAuNDY5czIzMi44NjcsNjcuMzczLDIzMi44NjcsMTUwLjQ2OUM1MTcuODU0LDM0Mi41MjUsNDEzLjYsNDA5LjksMjg0Ljk4Nyw0MDkuOVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9ja3JtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0xNTcuNCA0MTkuNWgtOTBsLTExMi0xMzEuM2MtMTcuOS0yMC40LTMuOS01Ni4xIDI2LjYtNTYuMWg3NS4zbC04NC42LTk5LjMtODQuMyA5OC45aC05MEwxOTMuNSA2Ny4yYzE0LjQtMTguNCA0MS4zLTE3LjMgNTQuNSAwbDE1Ny43IDE4NS4xYzE5IDIyLjggMiA1Ny4yLTI3LjYgNTYuMS0uNiAwLTc0LjIuMi03NC4yLjJsMTAxLjUgMTE4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1c3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA4LjUyLDI0OS43NSw0ODYuNywyMzYuMjRjLS4xNy0yLS4zNC0zLjkzLS41NS01Ljg4bDE4LjcyLTE3LjVhNy4zNSw3LjM1LDAsMCwwLTIuNDQtMTIuMjVsLTI0LTljLS41NC0xLjg4LTEuMDgtMy43OC0xLjY3LTUuNjRsMTUtMjAuODNhNy4zNSw3LjM1LDAsMCwwLTQuNzktMTEuNTRsLTI1LjQyLTQuMTVjLS45LTEuNzMtMS43OS0zLjQ1LTIuNzMtNS4xNWwxMC42OC0yMy40MmE3LjM1LDcuMzUsMCwwLDAtNi45NS0xMC4zOWwtMjUuODIuOTFxLTEuNzktMi4yMi0zLjYxLTQuNEw0MzksODEuODRBNy4zNiw3LjM2LDAsMCwwLDQzMC4xNiw3M0w0MDUsNzguOTNxLTIuMTctMS44My00LjQtMy42MWwuOTEtMjUuODJhNy4zNSw3LjM1LDAsMCwwLTEwLjM5LTdMMzY3LjcsNTMuMjNjLTEuNy0uOTQtMy40My0xLjg0LTUuMTUtMi43M0wzNTguNCwyNS4wOGE3LjM1LDcuMzUsMCwwLDAtMTEuNTQtNC43OUwzMjYsMzUuMjZjLTEuODYtLjU5LTMuNzUtMS4xMy01LjY0LTEuNjdsLTktMjRhNy4zNSw3LjM1LDAsMCwwLTEyLjI1LTIuNDRsLTE3LjUsMTguNzJjLTEuOTUtLjIxLTMuOTEtLjM4LTUuODgtLjU1TDI2Mi4yNSwzLjQ4YTcuMzUsNy4zNSwwLDAsMC0xMi41LDBMMjM2LjI0LDI1LjNjLTIsLjE3LTMuOTMuMzQtNS44OC41NUwyMTIuODYsNy4xM2E3LjM1LDcuMzUsMCwwLDAtMTIuMjUsMi40NGwtOSwyNGMtMS44OS41NS0zLjc5LDEuMDgtNS42NiwxLjY4bC0yMC44Mi0xNWE3LjM1LDcuMzUsMCwwLDAtMTEuNTQsNC43OWwtNC4xNSwyNS40MWMtMS43My45LTMuNDUsMS43OS01LjE2LDIuNzNMMTIwLjg4LDQyLjU1YTcuMzUsNy4zNSwwLDAsMC0xMC4zOSw3bC45MiwyNS44MWMtMS40OSwxLjE5LTMsMi4zOS00LjQyLDMuNjFMODEuODQsNzNBNy4zNiw3LjM2LDAsMCwwLDczLDgxLjg0TDc4LjkzLDEwN2MtMS4yMywxLjQ1LTIuNDMsMi45My0zLjYyLDQuNDFsLTI1LjgxLS45MWE3LjQyLDcuNDIsMCwwLDAtNi4zNywzLjI2LDcuMzUsNy4zNSwwLDAsMC0uNTcsNy4xM2wxMC42NiwyMy40MWMtLjk0LDEuNy0xLjgzLDMuNDMtMi43Myw1LjE2TDI1LjA4LDE1My42YTcuMzUsNy4zNSwwLDAsMC00Ljc5LDExLjU0bDE1LDIwLjgyYy0uNTksMS44Ny0xLjEzLDMuNzctMS42OCw1LjY2bC0yNCw5YTcuMzUsNy4zNSwwLDAsMC0yLjQ0LDEyLjI1bDE4LjcyLDE3LjVjLS4yMSwxLjk1LS4zOCwzLjkxLS41NSw1Ljg4TDMuNDgsMjQ5Ljc1YTcuMzUsNy4zNSwwLDAsMCwwLDEyLjVMMjUuMywyNzUuNzZjLjE3LDIsLjM0LDMuOTIuNTUsNS44N0w3LjEzLDI5OS4xM2E3LjM1LDcuMzUsMCwwLDAsMi40NCwxMi4yNWwyNCw5Yy41NSwxLjg5LDEuMDgsMy43OCwxLjY4LDUuNjVsLTE1LDIwLjgzYTcuMzUsNy4zNSwwLDAsMCw0Ljc5LDExLjU0bDI1LjQyLDQuMTVjLjksMS43MiwxLjc5LDMuNDUsMi43Myw1LjE0TDQyLjU2LDM5MS4xMmE3LjM1LDcuMzUsMCwwLDAsLjU3LDcuMTMsNy4xMyw3LjEzLDAsMCwwLDYuMzcsMy4yNmwyNS44My0uOTFxMS43NywyLjIyLDMuNiw0LjRMNzMsNDMwLjE2QTcuMzYsNy4zNiwwLDAsMCw4MS44NCw0MzlMMTA3LDQzMy4wN3EyLjE4LDEuODMsNC40MSwzLjYxbC0uOTIsMjUuODJhNy4zNSw3LjM1LDAsMCwwLDEwLjM5LDYuOTVsMjMuNDMtMTAuNjhjMS42OS45NCwzLjQyLDEuODMsNS4xNCwyLjczbDQuMTUsMjUuNDJhNy4zNCw3LjM0LDAsMCwwLDExLjU0LDQuNzhsMjAuODMtMTVjMS44Ni42LDMuNzYsMS4xMyw1LjY1LDEuNjhsOSwyNGE3LjM2LDcuMzYsMCwwLDAsMTIuMjUsMi40NGwxNy41LTE4LjcyYzEuOTUuMjEsMy45Mi4zOCw1Ljg4LjU1bDEzLjUxLDIxLjgyYTcuMzUsNy4zNSwwLDAsMCwxMi41LDBsMTMuNTEtMjEuODJjMi0uMTcsMy45My0uMzQsNS44OC0uNTZsMTcuNSwxOC43M2E3LjM2LDcuMzYsMCwwLDAsMTIuMjUtMi40NGw5LTI0YzEuODktLjU1LDMuNzgtMS4wOCw1LjY1LTEuNjhsMjAuODIsMTVhNy4zNCw3LjM0LDAsMCwwLDExLjU0LTQuNzhsNC4xNS0yNS40MmMxLjcyLS45LDMuNDUtMS43OSw1LjE1LTIuNzNsMjMuNDIsMTAuNjhhNy4zNSw3LjM1LDAsMCwwLDEwLjM5LTYuOTVsLS45MS0yNS44MnEyLjIyLTEuNzksNC40LTMuNjFMNDMwLjE2LDQzOWE3LjM2LDcuMzYsMCwwLDAsOC44NC04Ljg0TDQzMy4wNyw0MDVxMS44My0yLjE3LDMuNjEtNC40bDI1LjgyLjkxYTcuMjMsNy4yMywwLDAsMCw2LjM3LTMuMjYsNy4zNSw3LjM1LDAsMCwwLC41OC03LjEzTDQ1OC43NywzNjcuN2MuOTQtMS43LDEuODMtMy40MywyLjczLTUuMTVsMjUuNDItNC4xNWE3LjM1LDcuMzUsMCwwLDAsNC43OS0xMS41NGwtMTUtMjAuODNjLjU5LTEuODcsMS4xMy0zLjc2LDEuNjctNS42NWwyNC05YTcuMzUsNy4zNSwwLDAsMCwyLjQ0LTEyLjI1bC0xOC43Mi0xNy41Yy4yMS0xLjk1LjM4LTMuOTEuNTUtNS44N2wyMS44Mi0xMy41MWE3LjM1LDcuMzUsMCwwLDAsMC0xMi41Wm0tMTUxLDEyOS4wOEExMy45MSwxMy45MSwwLDAsMCwzNDEsMzg5LjUxbC03LjY0LDM1LjY3QTE4Ny41MSwxODcuNTEsMCwwLDEsMTc3LDQyNC40NGwtNy42NC0zNS42NmExMy44NywxMy44NywwLDAsMC0xNi40Ni0xMC42OGwtMzEuNTEsNi43NmExODcuMzgsMTg3LjM4LDAsMCwxLTE2LjI2LTE5LjIxSDI1OC4zYzEuNzIsMCwyLjg5LS4yOSwyLjg5LTEuOTFWMzA5LjU1YzAtMS41Ny0xLjE3LTEuOTEtMi44OS0xLjkxSDIxMy40N2wuMDUtMzQuMzVIMjYyYzQuNDEsMCwyMy42NiwxLjI4LDI5Ljc5LDI1Ljg3LDEuOTEsNy41NSw2LjE3LDMyLjE0LDkuMDYsNDAsMi44OSw4LjgyLDE0LjYsMjYuNDYsMjcuMSwyNi40Nkg0MDdhMTg3LjMsMTg3LjMsMCwwLDEtMTcuMzQsMjAuMDlabTI1Ljc3LDM0LjQ5QTE1LjI0LDE1LjI0LDAsMSwxLDM2OCwzOTguMDhoLjQ0QTE1LjIzLDE1LjIzLDAsMCwxLDM4My4yNCw0MTMuMzJabS0yMjUuNjItLjY4YTE1LjI0LDE1LjI0LDAsMSwxLTE1LjI1LTE1LjI1aC40NUExNS4yNSwxNS4yNSwwLDAsMSwxNTcuNjIsNDEyLjY0Wk02OS41NywyMzQuMTVsMzIuODMtMTQuNmExMy44OCwxMy44OCwwLDAsMCw3LjA2LTE4LjMzTDEwMi42OSwxODZoMjYuNTZWMzA1LjczSDc1LjY1QTE4Ny42NSwxODcuNjUsMCwwLDEsNjkuNTcsMjM0LjE1Wk01OC4zMSwxOTguMDlhMTUuMjQsMTUuMjQsMCwwLDEsMTUuMjMtMTUuMjVINzRhMTUuMjQsMTUuMjQsMCwxLDEtMTUuNjcsMTUuMjRabTE1NS4xNiwyNC40OS4wNS0zNS4zMmg2My4yNmMzLjI4LDAsMjMuMDcsMy43NywyMy4wNywxOC42MiwwLDEyLjI5LTE1LjE5LDE2LjctMjcuNjgsMTYuN1pNMzk5LDMwNi43MWMtOS44LDEuMTMtMjAuNjMtNC4xMi0yMi0xMC4wOS01Ljc4LTMyLjQ5LTE1LjM5LTM5LjQtMzAuNTctNTEuNCwxOC44Ni0xMS45NSwzOC40Ni0yOS42NCwzOC40Ni01My4yNiwwLTI1LjUyLTE3LjQ5LTQxLjU5LTI5LjQtNDkuNDgtMTYuNzYtMTEtMzUuMjgtMTMuMjMtNDAuMjctMTMuMjNIMTE2LjMyQTE4Ny40OSwxODcuNDksMCwwLDEsMjIxLjIxLDcwLjA2bDIzLjQ3LDI0LjZhMTMuODIsMTMuODIsMCwwLDAsMTkuNi40NGwyNi4yNi0yNWExODcuNTEsMTg3LjUxLDAsMCwxLDEyOC4zNyw5MS40M2wtMTgsNDAuNTdBMTQsMTQsMCwwLDAsNDA4LDIyMC40M2wzNC41OSwxNS4zM2ExODcuMTIsMTg3LjEyLDAsMCwxLC40LDMyLjU0SDQyMy43MWMtMS45MSwwLTIuNjksMS4yNy0yLjY5LDMuMTN2OC44MkM0MjEsMzAxLDQwOS4zMSwzMDUuNTgsMzk5LDMwNi43MVpNMjQwLDYwLjIxQTE1LjI0LDE1LjI0LDAsMCwxLDI1NS4yMSw0NWguNDVBMTUuMjQsMTUuMjQsMCwxLDEsMjQwLDYwLjIxWk00MzYuODQsMjE0YTE1LjI0LDE1LjI0LDAsMSwxLDAtMzAuNDhoLjQ0YTE1LjI0LDE1LjI0LDAsMCwxLS40NCwzMC40OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2FmYXJpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3NC42OSwyNzQuNjlsLTM3LjM4LTM3LjM4TDE2NiwzNDZaTTI1Niw4QzExOSw4LDgsMTE5LDgsMjU2UzExOSw1MDQsMjU2LDUwNCw1MDQsMzkzLDUwNCwyNTYsMzkzLDgsMjU2LDhaTTQxMS44NSwxODIuNzlsMTQuNzgtNi4xM0E4LDgsMCwwLDEsNDM3LjA4LDE4MWgwYTgsOCwwLDAsMS00LjMzLDEwLjQ2TDQxOCwxOTcuNTdhOCw4LDAsMCwxLTEwLjQ1LTQuMzNoMEE4LDgsMCwwLDEsNDExLjg1LDE4Mi43OVpNMzE0LjQzLDk0bDYuMTItMTQuNzhBOCw4LDAsMCwxLDMzMSw3NC45MmgwYTgsOCwwLDAsMSw0LjMzLDEwLjQ1bC02LjEzLDE0Ljc4YTgsOCwwLDAsMS0xMC40NSw0LjMzaDBBOCw4LDAsMCwxLDMxNC40Myw5NFpNMjU2LDYwaDBhOCw4LDAsMCwxLDgsOFY4NGE4LDgsMCwwLDEtOCw4aDBhOCw4LDAsMCwxLTgtOFY2OEE4LDgsMCwwLDEsMjU2LDYwWk0xODEsNzQuOTJhOCw4LDAsMCwxLDEwLjQ2LDQuMzNMMTk3LjU3LDk0YTgsOCwwLDEsMS0xNC43OCw2LjEybC02LjEzLTE0Ljc4QTgsOCwwLDAsMSwxODEsNzQuOTJabS02My41OCw0Mi40OWgwYTgsOCwwLDAsMSwxMS4zMSwwTDE0MCwxMjguNzJBOCw4LDAsMCwxLDE0MCwxNDBoMGE4LDgsMCwwLDEtMTEuMzEsMGwtMTEuMzEtMTEuMzFBOCw4LDAsMCwxLDExNy40MSwxMTcuNDFaTTYwLDI1NmgwYTgsOCwwLDAsMSw4LThIODRhOCw4LDAsMCwxLDgsOGgwYTgsOCwwLDAsMS04LDhINjhBOCw4LDAsMCwxLDYwLDI1NlptNDAuMTUsNzMuMjEtMTQuNzgsNi4xM0E4LDgsMCwwLDEsNzQuOTIsMzMxaDBhOCw4LDAsMCwxLDQuMzMtMTAuNDZMOTQsMzE0LjQzYTgsOCwwLDAsMSwxMC40NSw0LjMzaDBBOCw4LDAsMCwxLDEwMC4xNSwzMjkuMjFabTQuMzMtMTM2aDBBOCw4LDAsMCwxLDk0LDE5Ny41N2wtMTQuNzgtNi4xMkE4LDgsMCwwLDEsNzQuOTIsMTgxaDBhOCw4LDAsMCwxLDEwLjQ1LTQuMzNsMTQuNzgsNi4xM0E4LDgsMCwwLDEsMTA0LjQ4LDE5My4yNFpNMTk3LjU3LDQxOGwtNi4xMiwxNC43OGE4LDgsMCwwLDEtMTQuNzktNi4xMmw2LjEzLTE0Ljc4QTgsOCwwLDEsMSwxOTcuNTcsNDE4Wk0yNjQsNDQ0YTgsOCwwLDAsMS04LDhoMGE4LDgsMCwwLDEtOC04VjQyOGE4LDgsMCwwLDEsOC04aDBhOCw4LDAsMCwxLDgsOFptNjctNi45MmgwYTgsOCwwLDAsMS0xMC40Ni00LjMzTDMxNC40Myw0MThhOCw4LDAsMCwxLDQuMzMtMTAuNDVoMGE4LDgsMCwwLDEsMTAuNDUsNC4zM2w2LjEzLDE0Ljc4QTgsOCwwLDAsMSwzMzEsNDM3LjA4Wm02My41OC00Mi40OWgwYTgsOCwwLDAsMS0xMS4zMSwwTDM3MiwzODMuMjhBOCw4LDAsMCwxLDM3MiwzNzJoMGE4LDgsMCwwLDEsMTEuMzEsMGwxMS4zMSwxMS4zMUE4LDgsMCwwLDEsMzk0LjU5LDM5NC41OVpNMjg2LjI1LDI4Ni4yNSwxMTAuMzQsNDAxLjY2LDIyNS43NSwyMjUuNzUsNDAxLjY2LDExMC4zNFpNNDM3LjA4LDMzMWgwYTgsOCwwLDAsMS0xMC40NSw0LjMzbC0xNC43OC02LjEzYTgsOCwwLDAsMS00LjMzLTEwLjQ1aDBBOCw4LDAsMCwxLDQxOCwzMTQuNDNsMTQuNzgsNi4xMkE4LDgsMCwwLDEsNDM3LjA4LDMzMVpNNDQ0LDI2NEg0MjhhOCw4LDAsMCwxLTgtOGgwYTgsOCwwLDAsMSw4LThoMTZhOCw4LDAsMCwxLDgsOGgwQTgsOCwwLDAsMSw0NDQsMjY0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYWxlc2ZvcmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OC44OSAyNDUuNjRoLTI2LjM1Yy42OS01LjE2IDMuMzItMTQuMTIgMTMuNjQtMTQuMTIgNi43NSAwIDExLjk3IDMuODIgMTIuNzEgMTQuMTJ6bTEzNi42Ni0xMy44OGMtLjQ3IDAtMTQuMTEtMS43Ny0xNC4xMSAyMHMxMy42MyAyMCAxNC4xMSAyMGMxMyAwIDE0LjExLTEzLjU0IDE0LjExLTIwIDAtMjEuNzYtMTMuNjYtMjAtMTQuMTEtMjB6bS0yNDMuMjIgMjMuNzZhOC42MyA4LjYzIDAgMCAwLTMuMjkgNy4yOWMwIDQuNzggMi4wOCA2LjA1IDMuMjkgNy4wNSA0LjcgMy43IDE1LjA3IDIuMTIgMjAuOTMuOTV2LTE2Ljk0Yy01LjMyLTEuMDctMTYuNzMtMS45Ni0yMC45MyAxLjY1ek02NDAgMjMyYzAgODcuNTgtODAgMTU0LjM5LTE2NS4zNiAxMzYuNDMtMTguMzcgMzMtNzAuNzMgNzAuNzUtMTMyLjIgNDEuNjMtNDEuMTYgOTYuMDUtMTc3Ljg5IDkyLjE4LTIxMy44MS01LjE3QzguOTEgNDI4Ljc4LTUwLjE5IDI2Ni41MiA1My4zNiAyMDUuNjEgMTguNjEgMTI2LjE4IDc2IDMyIDE2Ny42NyAzMmExMjQuMjQgMTI0LjI0IDAgMCAxIDk4LjU2IDQ4LjdjMjAuNy0yMS40IDQ5LjQtMzQuODEgODEuMTUtMzQuODEgNDIuMzQgMCA3OSAyMy41MiA5OC44IDU4LjU3QzUzOSA2My43OCA2NDAgMTMyLjY5IDY0MCAyMzJ6bS01MTkuNTUgMzEuOGMwLTExLjc2LTExLjY5LTE1LjE3LTE3Ljg3LTE3LjE3LTUuMjctMi4xMS0xMy40MS0zLjUxLTEzLjQxLTguOTQgMC05LjQ2IDE3LTYuNjYgMjUuMTctMi4xMiAwIDAgMS4xNy43MSAxLjY0LS40Ny4yNC0uNyAyLjM2LTYuNTggMi41OS03LjI5YTEuMTMgMS4xMyAwIDAgMC0uNy0xLjQxYy0xMi4zMy03LjYzLTQwLjctOC41MS00MC43IDEyLjcgMCAxMi40NiAxMS40OSAxNS40NCAxNy44OCAxNy4xNyA0LjcyIDEuNTggMTMuMTcgMyAxMy4xNyA4LjcgMCA0LTMuNTMgNy4wNi05LjE3IDcuMDZhMzEuNzYgMzEuNzYgMCAwIDEtMTktNi4zNWMtLjQ3LS4yMy0xLjQyLS43MS0xLjY1LjcxbC0yLjQgNy40N2MtLjQ3Ljk0LjIzIDEuMTguMjMgMS40MSAxLjc1IDEuNCAxMC4zIDYuNTkgMjIuODIgNi41OSAxMy4xNyAwIDIxLjQtNy4wNiAyMS40LTE4LjExem0zMi00Mi41OGMtMTAuMTMgMC0xOC42NiAzLjE3LTIxLjQgNS4xOGExIDEgMCAwIDAtLjI0IDEuNDFsMi41OSA3LjA2YTEgMSAwIDAgMCAxLjE4LjdjLjY1IDAgNi44LTQgMTYuOTMtNCA0IDAgNy4wNi43MSA5LjE4IDIuMzYgMy42IDIuOCAzLjA2IDguMjkgMy4wNiAxMC41OC00Ljc5LS4zLTE5LjExLTMuNDQtMjkuNDEgMy43NmExNi45MiAxNi45MiAwIDAgMC03LjM0IDE0LjU0YzAgNS45IDEuNTEgMTAuNCA2LjU5IDE0LjM1IDEyLjI0IDguMTYgMzYuMjggMiAzOC4xIDEuNDEgMS41OC0uMzIgMy41My0uNjYgMy41My0xLjg4di0zMy44OGMuMDQtNC42MS4zMi0yMS42NC0yMi43OC0yMS42NHpNMTk5IDIwMC4yNGExLjExIDEuMTEgMCAwIDAtMS4xOC0xLjE4SDE4OGExLjExIDEuMTEgMCAwIDAtMS4xNyAxLjE4djc5YTEuMTEgMS4xMSAwIDAgMCAxLjE3IDEuMThoOS44OGExLjExIDEuMTEgMCAwIDAgMS4xOC0xLjE4em01NS43NSAyOC45M2MtMi4xLTIuMzEtNi43OS03LjUzLTE3LjY1LTcuNTMtMy41MSAwLTE0LjE2LjIzLTIwLjcgOC45NC02LjM1IDcuNjMtNi41OCAxOC4xMS02LjU4IDIxLjQxIDAgMy4xMi4xNSAxNC4yNiA3LjA2IDIxLjE3IDIuNjQgMi45MSA5LjA2IDguMjMgMjIuODEgOC4yMyAxMC44MiAwIDE2LjQ3LTIuMzUgMTguNTgtMy43Ni40Ny0uMjQuNzEtLjcxLjI0LTEuODhsLTIuMzUtNi44M2ExLjI2IDEuMjYgMCAwIDAtMS40MS0uN2MtMi41OS45NC02LjM1IDIuODItMTUuMjkgMi44Mi0xNy40MiAwLTE2Ljg1LTE0Ljc0LTE2Ljk0LTE2LjdoMzcuMTdhMS4yMyAxLjIzIDAgMCAwIDEuMTctLjk0Yy0uMjkgMCAyLjA3LTE0LjctNi4wOS0yNC4yM3ptMzYuNjkgNTIuNjljMTMuMTcgMCAyMS40MS03LjA2IDIxLjQxLTE4LjExIDAtMTEuNzYtMTEuNy0xNS4xNy0xNy44OC0xNy4xNy00LjE0LTEuNjYtMTMuNDEtMy4zOC0xMy40MS04Ljk0IDAtMy43NiAzLjI5LTYuMzUgOC40Ny02LjM1YTM4LjExIDM4LjExIDAgMCAxIDE2LjcgNC4yM3MxLjE4LjcxIDEuNjUtLjQ3Yy4yMy0uNyAyLjM1LTYuNTggMi41OC03LjI5YTEuMTMgMS4xMyAwIDAgMC0uNy0xLjQxYy03LjkxLTQuOS0xNi43NC00Ljk0LTIwLjIzLTQuOTQtMTIgMC0yMC40NiA3LjI5LTIwLjQ2IDE3LjY0IDAgMTIuNDYgMTEuNDggMTUuNDQgMTcuODcgMTcuMTcgNi4xMSAyIDEzLjE3IDMuMjYgMTMuMTcgOC43IDAgNC0zLjUyIDcuMDYtOS4xNyA3LjA2YTMxLjggMzEuOCAwIDAgMS0xOS02LjM1IDEgMSAwIDAgMC0xLjY1LjcxbC0yLjM1IDcuNTJjLS40Ny45NC4yMyAxLjE4LjIzIDEuNDEgMS43MiAxLjQgMTAuMzMgNi41OSAyMi43OSA2LjU5ek0zNTcuMDkgMjI0YzAtLjcxLS4yNC0xLjE4LTEuMTgtMS4xOGgtMTEuNzZjMC0uMTQuOTQtOC45NCA0LjQ3LTEyLjQ3IDQuMTYtNC4xNSAxMS43Ni0xLjY0IDEyLTEuNjQgMS4xNy40NyAxLjQxIDAgMS42NC0uNDdsMi44My03Ljc3Yy43LS45NCAwLTEuMTctLjI0LTEuNDEtNS4wOS0yLTE3LjM1LTIuODctMjQuNDYgNC4yNC01LjQ4IDUuNDgtNyAxMy45Mi04IDE5LjUyaC04LjQ3YTEuMjggMS4yOCAwIDAgMC0xLjE3IDEuMThsLTEuNDIgNy43NmMwIC43LjI0IDEuMTcgMS4xOCAxLjE3aDguMjNjLTguNTEgNDcuOS04Ljc1IDUwLjIxLTEwLjM1IDU1LjUyLTEuMDggMy42Mi0zLjI5IDYuOS01Ljg4IDcuNzYtLjA5IDAtMy44OCAxLjY4LTkuNjQtLjI0IDAgMC0uOTQtLjQ3LTEuNDEuNzEtLjI0LjcxLTIuNTkgNi44Mi0yLjgzIDcuNTNzMCAxLjQxLjQ3IDEuNDFjNS4xMSAyIDEzIDEuNzcgMTcuODggMCA2LjI4LTIuMjggOS43Mi03Ljg5IDExLjUzLTEyLjk0IDIuNzUtNy43MSAyLjgxLTkuNzkgMTEuNzYtNTkuNzRoMTIuMjNhMS4yOSAxLjI5IDAgMCAwIDEuMTgtMS4xOHptNTMuMzkgMTZjLS41Ni0xLjY4LTUuMS0xOC4xMS0yNS4xNy0xOC4xMS0xNS4yNSAwLTIzIDEwLTI1LjE2IDE4LjExLTEgMy0zLjE4IDE0IDAgMjMuNTIuMDkuMyA0LjQxIDE4LjEyIDI1LjE2IDE4LjEyIDE0Ljk1IDAgMjIuOS05LjYxIDI1LjE3LTE4LjEyIDMuMjEtOS42MSAxLjAxLTIwLjUyIDAtMjMuNTJ6bTQ1LjQtMTYuN2MtNS0xLjY1LTE2LjYyLTEuOS0yMi4xMSA1LjQxdi00LjQ3YTEuMTEgMS4xMSAwIDAgMC0xLjE4LTEuMTdoLTkuNGExLjExIDEuMTEgMCAwIDAtMS4xOCAxLjE3djU1LjI4YTEuMTIgMS4xMiAwIDAgMCAxLjE4IDEuMThoOS42NGExLjEyIDEuMTIgMCAwIDAgMS4xOC0xLjE4di0yNy43N2MwLTIuOTEuMDUtMTEuMzcgNC40Ni0xNS4wNSA0LjktNC45IDEyLTMuMzYgMTMuNDEtMy4wNmExLjU3IDEuNTcgMCAwIDAgMS40MS0uOTQgNzQgNzQgMCAwIDAgMy4wNi04IDEuMTYgMS4xNiAwIDAgMC0uNDctMS40MXptNDYuODEgNTQuMWwtMi4xMi03LjI5Yy0uNDctMS4xOC0xLjQxLS43MS0xLjQxLS43MS00LjIzIDEuODItMTAuMTUgMS44OS0xMS4yOSAxLjg5LTQuNjQgMC0xNy4xNy0xLjEzLTE3LjE3LTE5Ljc2IDAtNi4yMyAxLjg1LTE5Ljc2IDE2LjQ3LTE5Ljc2YTM0Ljg1IDM0Ljg1IDAgMCAxIDExLjUyIDEuNjVzLjk0LjQ3IDEuMTgtLjcxYy45NC0yLjU5IDEuNjQtNC40NyAyLjU5LTcuNTMuMjMtLjk0LS40Ny0xLjE3LS43MS0xLjE3LTExLjU5LTMuODctMjIuMzQtMi41My0yNy43NiAwLTEuNTkuNzQtMTYuMjMgNi40OS0xNi4yMyAyNy41MiAwIDIuOS0uNTggMzAuMTEgMjguOTQgMzAuMTFhNDQuNDUgNDQuNDUgMCAwIDAgMTUuNTItMi44MyAxLjMgMS4zIDAgMCAwIC40Ny0xLjQyem01My44Ny0zOS41MmMtLjgtMy01LjM3LTE2LjIzLTIyLjM1LTE2LjIzLTE2IDAtMjMuNTIgMTAuMTEtMjUuNjQgMTguNTlhMzguNTggMzguNTggMCAwIDAtMS42NSAxMS43NmMwIDI1Ljg3IDE4Ljg0IDI5LjQgMjkuODggMjkuNCAxMC44MiAwIDE2LjQ2LTIuMzUgMTguNTgtMy43Ni40Ny0uMjQuNzEtLjcxLjI0LTEuODhsLTIuMzYtNi44M2ExLjI2IDEuMjYgMCAwIDAtMS40MS0uN2MtMi41OS45NC02LjM1IDIuODItMTUuMjkgMi44Mi0xNy40MiAwLTE2Ljg1LTE0Ljc0LTE2LjkzLTE2LjdoMzcuMTZhMS4yNSAxLjI1IDAgMCAwIDEuMTgtLjk0Yy0uMjQtLjAxLjk0LTcuMDctMS40MS0xNS41NHptLTIzLjI5LTYuMzVjLTEwLjMzIDAtMTMgOS0xMy42NCAxNC4xMkg1NDZjLS44OC0xMS45Mi03LjYyLTE0LjEzLTEyLjczLTE0LjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMS44NCAzNzguOTJjLS4zLjYtLjYgMS4wOCAwIDB6bTI0OS4xMy04N2ExMzEuMTYgMTMxLjE2IDAgMCAwLTU4IDEzLjVjLTUuOS0xMS45LTEyLTIyLjMtMTMtMzAuMS0xLjItOS4xLTIuNS0xNC41LTEuMS0yNS4zczcuNy0yNi4xIDcuNi0yNy4yLTEuNC02LjYtMTQuMy02LjctMjQgMi41LTI1LjI5IDUuOWExMjIuODMgMTIyLjgzIDAgMCAwLTUuMyAxOS4xYy0yLjMgMTEuNy0yNS43OSA1My41LTM5LjA5IDc1LjMtNC40LTguNS04LjEtMTYtOC45LTIyLTEuMi05LjEtMi41LTE0LjUtMS4xLTI1LjNzNy43LTI2LjEgNy42LTI3LjItMS40LTYuNi0xNC4yOS02LjctMjQgMi41LTI1LjMgNS45LTIuNyAxMS40LTUuMyAxOS4xLTMzLjg5IDc3LjMtNDIuMDggOTUuNGMtNC4yIDkuMi03LjggMTYuNi0xMC40IDIxLjYtLjQuOC0uNyAxLjMtLjkgMS43LjMtLjUuNS0xIC41LS44LTIuMiA0LjMtMy41IDYuNy0zLjUgNi43di4xYy0xLjcgMy4yLTMuNiA2LjEtNC41IDYuMS0uNiAwLTEuOS04LjQuMy0xOS45IDQuNy0yNC4yIDE1LjgtNjEuOCAxNS43LTYzLjEtLjEtLjcgMi4xLTcuMi03LjMtMTAuNy05LjEtMy4zLTEyLjQgMi4yLTEzLjIgMi4ycy0xLjQgMi0xLjQgMiAxMC4xLTQyLjQtMTkuMzktNDIuNGMtMTguNCAwLTQ0IDIwLjItNTYuNTggMzguNS03LjkgNC4zLTI1IDEzLjYtNDMgMjMuNS02LjkgMy44LTE0IDcuNy0yMC43IDExLjQtLjUtLjUtLjktMS0xLjQtMS41LTM1Ljc5LTM4LjItMTAxLjg3LTY1LjItOTkuMDctMTE2LjUgMS0xOC43IDcuNS02Ny44IDEyNy4wNy0xMjcuNCA5OC00OC44IDE3Ni4zNS0zNS40IDE4OS44NC01LjYgMTkuNCA0Mi41LTQxLjg5IDEyMS42LTE0My42NiAxMzMtMzguNzkgNC4zLTU5LjE4LTEwLjctNjQuMjgtMTYuMy01LjMtNS45LTYuMS02LjItOC4xLTUuMS0zLjMgMS44LTEuMiA3IDAgMTAuMSAzIDcuOSAxNS41IDIxLjkgMzYuNzkgMjguOSAxOC43IDYuMSA2NC4xOCA5LjUgMTE5LjE3LTExLjggNjEuNzgtMjMuOCAxMDkuODctOTAuMSA5NS43Ny0xNDUuNkMzODYuNTIgMTguMzIgMjkzLS4xOCAyMDQuNTcgMzEuMjJjLTUyLjY5IDE4LjctMTA5LjY3IDQ4LjEtMTUwLjY2IDg2LjQtNDguNjkgNDUuNi01Ni40OCA4NS4zLTUzLjI4IDEwMS45IDExLjM5IDU4LjkgOTIuNTcgOTcuMyAxMjUuMDYgMTI1LjctMS42LjktMy4xIDEuNy00LjUgMi41LTE2LjI5IDguMS03OC4xOCA0MC41LTkzLjY3IDc0LjctMTcuNSAzOC44IDIuOSA2Ni42IDE2LjI5IDcwLjQgNDEuNzkgMTEuNiA4NC41OC05LjMgMTA3LjU3LTQzLjZzMjAuMi03OS4xIDkuNi05OS41Yy0uMS0uMy0uMy0uNS0uNC0uOCA0LjItMi41IDguNS01IDEyLjgtNy41IDguMjktNC45IDE2LjM5LTkuNCAyMy40OS0xMy4zLTQgMTAuOC02LjkgMjMuOC04LjQgNDIuNi0xLjggMjIgNy4zIDUwLjUgMTkuMSA2MS43IDUuMiA0LjkgMTEuNDkgNSAxNS4zOSA1IDEzLjggMCAyMC0xMS40IDI2Ljg5LTI1IDguNS0xNi42IDE2LTM1LjkgMTYtMzUuOXMtOS40IDUyLjIgMTYuMyA1Mi4yYzkuMzkgMCAxOC43OS0xMi4xIDIzLTE4LjN2LjFzLjItLjQuNy0xLjJjMS0xLjUgMS41LTIuNCAxLjUtMi40di0uM2MzLjgtNi41IDEyLjEtMjEuNCAyNC41OS00NiAxNi4yLTMxLjggMzEuNjktNzEuNSAzMS42OS03MS41YTIwMS4yNCAyMDEuMjQgMCAwIDAgNi4yIDI1LjhjMi44IDkuNSA4LjcgMTkuOSAxMy40IDMwLTMuOCA1LjItNi4xIDguMi02LjEgOC4yYS4zMS4zMSAwIDAgMCAuMS4yYy0zIDQtNi40IDguMy05LjkgMTIuNS0xMi43OSAxNS4yLTI4IDMyLjYtMzAgMzcuNi0yLjQgNS45LTEuOCAxMC4zIDIuOCAxMy43IDMuNCAyLjYgOS40IDMgMTUuNjkgMi41IDExLjUtLjggMTkuNi0zLjYgMjMuNS01LjRhODIuMiA4Mi4yIDAgMCAwIDIwLjE5LTEwLjZjMTIuNS05LjIgMjAuMS0yMi40IDE5LjQtMzkuOC0uNC05LjYtMy41LTE5LjItNy4zLTI4LjIgMS4xLTEuNiAyLjMtMy4zIDMuNC01QzQzNC44IDMwMS43MiA0NTAuMSAyNzAgNDUwLjEgMjcwYTIwMS4yNCAyMDEuMjQgMCAwIDAgNi4yIDI1LjhjMi40IDguMSA3LjA5IDE3IDExLjM5IDI1LjctMTguNTkgMTUuMS0zMC4wOSAzMi42LTM0LjA5IDQ0LjEtNy40IDIxLjMtMS42IDMwLjkgOS4zIDMzLjEgNC45IDEgMTEuOS0xLjMgMTcuMS0zLjVhNzkuNDYgNzkuNDYgMCAwIDAgMjEuNTktMTEuMWMxMi41LTkuMiAyNC41OS0yMi4xIDIzLjc5LTM5LjYtLjMtNy45LTIuNS0xNS44LTUuNC0yMy40IDE1LjctNi42IDM2LjA5LTEwLjIgNjIuMDktNy4yIDU1LjY4IDYuNSA2Ni41OCA0MS4zIDY0LjQ4IDU1LjhzLTEzLjggMjIuNi0xNy43IDI1LTUuMSAzLjMtNC44IDUuMWMuNSAyLjYgMi4zIDIuNSA1LjYgMS45IDQuNi0uOCAyOS4xOS0xMS44IDMwLjI5LTM4LjcgMS42LTM0LTMxLjA5LTcxLjQtODktNzEuMXptLTQyOS4xOCAxNDQuN2MtMTguMzkgMjAuMS00NC4xOSAyNy43LTU1LjI4IDIxLjNDNTQuNjEgNDUxIDU5LjMxIDQyMS40MiA4MiA0MDBjMTMuOC0xMyAzMS41OS0yNSA0My4zOS0zMi40IDIuNy0xLjYgNi42LTQgMTEuNC02LjkuOC0uNSAxLjItLjcgMS4yLS43LjktLjYgMS45LTEuMSAyLjktMS43IDguMjkgMzAuNC4zIDU3LjItMTkuMSA3OC4zem0xMzQuMzYtOTEuNGMtNi40IDE1LjctMTkuODkgNTUuNy0yOC4wOSA1My42LTctMS44LTExLjMtMzIuMy0xLjQtNjIuMyA1LTE1LjEgMTUuNi0zMy4xIDIxLjktNDAuMSAxMC4wOS0xMS4zIDIxLjE5LTE0LjkgMjMuNzktMTAuNCAzLjUgNS45LTEyLjIgNDkuNC0xNi4yIDU5LjJ6bTExMSA1M2MtMi43IDEuNC01LjIgMi4zLTYuNCAxLjYtLjktLjUgMS4xLTIuNCAxLjEtMi40czEzLjktMTQuOSAxOS40LTIxLjdjMy4yLTQgNi45LTguNyAxMC44OS0xMy45IDAgLjUuMSAxIC4xIDEuNi0uMTMgMTcuOS0xNy4zMiAzMC0yNS4xMiAzNC44em04NS41OC0xOS41Yy0yLTEuNC0xLjctNi4xIDUtMjAuNyAyLjYtNS43IDguNTktMTUuMyAxOS0yNC41YTM2LjE4IDM2LjE4IDAgMCAxIDEuOSAxMC44Yy0uMSAyMi41LTE2LjIgMzAuOS0yNS44OSAzNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2hsaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUwLjUgMTU3LjdsLTU0LjItNDYuMSA3My40LTM5IDc4LjMgNDQuMi05Ny41IDQwLjl6TTE5MiAxMjIuMWw0NS43LTI4LjIgMzQuNyAzNC42LTU1LjQgMjktMjUtMzUuNHptLTY1LjEgNi42bDMxLjktMjIuMUwxNzYgMTM1bC0zNi43IDIyLjUtMTIuNC0yOC44em0tMjMuMyA4OC4ybC04LjgtMzQuOCAyOS42LTE4LjMgMTMuMSAzNS4zLTMzLjkgMTcuOHptLTIxLjItODMuN2wyMy45LTE4LjEgOC45IDI0LTI2LjcgMTguMy02LjEtMjQuMnpNNTkgMjA2LjVsLTMuNi0yOC40IDIyLjMtMTUuNSA2LjEgMjguN0w1OSAyMDYuNXptLTMwLjYgMTYuNmwyMC44LTEyLjggMy4zIDMzLjQtMjIuOSAxMi0xLjItMzIuNnpNMS40IDI2OGwxOS4yLTEwLjIuNCAzOC4yLTIxIDguOEwxLjQgMjY4em01OS4xIDU5LjNsLTI4LjMgOC4zLTEuNi00Ni44IDI1LjEtMTAuNyA0LjggNDkuMnpNOTkgMjYzLjJsLTMxLjEgMTMtNS4yLTQwLjhMOTAuMSAyMjFsOC45IDQyLjJ6TTEyMy4yIDM3N2wtNDEuNiA1LjktOC4xLTYzLjUgMzUuMi0xMC44IDE0LjUgNjguNHptMjguNS0xMzkuOWwyMS4yIDU3LjEtNDYuMiAxMy42LTEzLjctNTQuMSAzOC43LTE2LjZ6bTg1LjcgMjMwLjVsLTcwLjktMy4zLTI0LjMtOTUuOCA1NS4yLTguNiA0MCAxMDcuN3ptLTg0LjktMjc5LjdsNDIuMi0yMi40IDI4IDQ1LjktNTAuOCAyMS4zLTE5LjQtNDQuOHptNDEgOTQuOWw2MS4zLTE4LjcgNTIuOCA4Ni42LTc5LjggMTEuMy0zNC4zLTc5LjJ6bTUxLjQtODUuNmw2Ny4zLTI4LjggNjUuNSA2NS40LTg4LjYgMjYuMi00NC4yLTYyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjcmVlbnBhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzMuNSAyMi40OUMyMzMuNSAxMC4wNyAyNDMuNiAwIDI1NiAwQzI2OC40IDAgMjc4LjUgMTAuMDcgMjc4LjUgMjIuNDlDMjc4LjUgMzQuOTEgMjY4LjQgNDQuOTggMjU2IDQ0Ljk4QzI0My42IDQ0Ljk4IDIzMy41IDM0LjkxIDIzMy41IDIyLjQ5ek0zMTMuNCAyNTlDMzEzLjQgMjkwLjcgMjg3LjcgMzE2LjQgMjU2IDMxNi40QzIyNC4zIDMxNi40IDE5OC42IDI5MC43IDE5OC42IDI1OUMxOTguNiAyMjcuMyAyMjQuMyAyMDEuNiAyNTYgMjAxLjZDMjg3LjcgMjAxLjYgMzEzLjQgMjI3LjMgMzEzLjQgMjU5ek0zMzcuMiAzNTBDMzU5LjUgMzMwLjEgMzczLjcgMzAyLjcgMzc3LjEgMjczSDQ5Ni42QzQ5My4xIDMzNC40IDQ2Ni4yIDM5Mi4yIDQyMS40IDQzNC40QzM3Ni43IDQ3Ni42IDMxNy41IDUwMC4yIDI1NiA1MDAuMkMxOTQuNSA1MDAuMiAxMzUuMyA0NzYuNiA5MC41NiA0MzQuNEM0NS44MyAzOTIuMiAxOC45NCAzMzQuNCAxNS4zOSAyNzNIMTM1LjFDMTM4LjUgMzAyLjcgMTUyLjcgMzMwLjEgMTc1IDM1MEMxOTcuMyAzNjkuOSAyMjYuMiAzODAuOSAyNTYuMSAzODAuOUMyODUuMSAzODAuOSAzMTQuOCAzNjkuOSAzMzcuMiAzNTB6TTczLjE0IDE0MC4zQzczLjU0IDE1Mi43IDYzLjgxIDE2My4xIDUxLjM5IDE2My41QzM4Ljk3IDE2My45IDI4LjU5IDE1NC4yIDI4LjE4IDE0MS44QzI3Ljc4IDEyOS4zIDM3LjUyIDExOC45IDQ5Ljk0IDExOC41QzYyLjM1IDExOC4xIDcyLjc0IDEyNy45IDczLjE0IDE0MC4zek00MzguOSAxNDFDNDM4LjkgMTI4LjYgNDQ4LjkgMTE4LjUgNDYxLjQgMTE4LjVDNDczLjggMTE4LjUgNDgzLjggMTI4LjYgNDgzLjggMTQxQzQ4My44IDE1My41IDQ3My44IDE2My41IDQ2MS40IDE2My41QzQ0OC45IDE2My41IDQzOC45IDE1My41IDQzOC45IDE0MXpNMzE3LjkgOTUuMjdDMzAwLjYgMTA5LjEgMjc4LjcgMTE4LjEgMjU2IDExOC4xQzIzMy4zIDExOC4xIDIxMS40IDEwOS4xIDE5NC4xIDk1LjI3QzE3Ni44IDgwLjU1IDE2NS4zIDYwLjE4IDE2MS43IDM3Ljc4QzE3Ni44IDMxLjM3IDE5Mi41IDI2LjUyIDIwOC42IDIzLjMxQzIwOC42IDM1Ljg4IDIxMy42IDQ3LjkzIDIyMi41IDU2LjgyQzIzMS40IDY1LjcgMjQzLjQgNzAuNyAyNTYgNzAuN0MyNjguNiA3MC43IDI4MC42IDY1LjcgMjg5LjUgNTYuODJDMjk4LjQgNDcuOTMgMzAzLjQgMzUuODggMzAzLjQgMjMuMzFDMzE5LjUgMjYuNTIgMzM1LjIgMzEuMzcgMzUwLjMgMzcuNzhDMzQ2LjcgNjAuMTggMzM1LjIgODAuNTUgMzE3LjkgOTUuMjdIMzE3Ljl6TTgyLjc4IDIzMUM2MS40MiAyMzguNiAzOC4wNiAyMzguNCAxNi44NiAyMzAuNEMxOC44MiAyMTQuMSAyMi40NiAxOTguMSAyNy43MSAxODIuNUMzMy4xIDE4NS42IDM5LjA1IDE4Ny42IDQ1LjIyIDE4OC41QzUxLjM5IDE4OS4zIDU3LjY3IDE4OC45IDYzLjY4IDE4Ny4zQzY5LjY5IDE4NS42IDc1LjMzIDE4Mi45IDgwLjI3IDE3OS4xQzg1LjIxIDE3NS4zIDg5LjM2IDE3MC42IDkyLjQ3IDE2NS4yQzk1LjU4IDE1OS44IDk3LjYxIDE1My44IDk4LjQyIDE0Ny43Qzk5LjIzIDE0MS41IDk4LjgzIDEzNS4yIDk3LjIyIDEyOS4yQzk1LjYxIDEyMy4yIDkyLjgzIDExNy42IDg5LjA0IDExMi42Qzg1LjI1IDEwNy43IDgwLjUzIDEwMy41IDc1LjE0IDEwMC40Qzg1Ljk2IDg4LjExIDk4LjAxIDc2Ljk0IDExMS4xIDY3LjA3QzEyOC43IDgxLjQyIDE0MC42IDEwMS42IDE0NC43IDEyMy45QzE0OC44IDE0Ni4yIDE0NC44IDE2OS4zIDEzMy41IDE4OC45QzEyMi4xIDIwOC41IDEwNC4xIDIyMy40IDgyLjc4IDIzMVYyMzF6TTQyOS4yIDIzMS4xQzQwNy45IDIyMy41IDM4OS45IDIwOC41IDM3OC41IDE4OC45QzM2Ny4yIDE2OS4zIDM2My4zIDE0Ni4yIDM2Ny40IDEyMy45QzM3MS41IDEwMS43IDM4My40IDgxLjU0IDQwMC45IDY3LjE5QzQxNCA3Ny4wNCA0MjYuMSA4OC4yMSA0MzYuOSAxMDAuNUM0MjYuMiAxMDYuOSA0MTguNSAxMTcuMiA0MTUuNCAxMjkuM0M0MTIuMiAxNDEuMyA0MTMuMSAxNTQuMSA0MjAuMiAxNjQuOUM0MjYuNCAxNzUuNyA0MzYuNiAxODMuNiA0NDguNiAxODYuOUM0NjAuNiAxOTAuMiA0NzMuNSAxODguNiA0ODQuMyAxODIuNkM0ODkuNiAxOTguMSA0OTMuMiAyMTQuMiA0OTUuMiAyMzAuNEM0NzMuMSAyMzguNSA0NTAuNiAyMzguNyA0MjkuMiAyMzEuMUw0MjkuMiAyMzEuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NyaWJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyLjMgMjUyLjdjLTE2LjEtMTktMjQuNy00NS45LTI0LjgtNzkuOSAwLTEwMC40IDc1LjItMTUzLjEgMTY3LjItMTUzLjEgOTguNi0xLjYgMTU2LjggNDkgMTg0LjMgNzAuNmwtNTAuNSA3Mi4xLTM3LjMtMjQuNiAyNi45LTM4LjZjLTM2LjUtMjQtNzkuNC0zNi41LTEyMy0zNS44LTUwLjctLjgtMTExLjcgMjcuMi0xMTEuNyA3Ni4yIDAgMTguNyAxMS4yIDIwLjcgMjguNiAxNS42IDIzLjMtNS4zIDQxLjkuNiA1NS44IDE0IDI2LjQgMjQuMyAyMy4yIDY3LjYtLjcgOTEuOS0yOS4yIDI5LjUtODUuMiAyNy4zLTExNC44LTguNHptMzE3LjcgNS45Yy0xNS41LTE4LjgtMzguOS0yOS40LTYzLjItMjguNi0zOC4xLTItNzEuMSAyOC03MC41IDY3LjItLjcgMTYuOCA2IDMzIDE4LjQgNDQuMyAxNC4xIDEzLjkgMzMgMTkuNyA1Ni4zIDE0LjQgMTcuNC01LjEgMjguNi0zLjEgMjguNiAxNS42IDAgNC4zLS41IDguNS0xLjQgMTIuNy0xNi43IDQwLjktNTkuNSA2NC40LTEyMS40IDY0LjQtNTEuOS4yLTEwMi40LTE2LjQtMTQ0LjEtNDcuM2wzMy43LTM5LjQtMzUuNi0yNy40TDAgNDA2LjNsMTUuNCAxMy44YzUyLjUgNDYuOCAxMjAuNCA3Mi41IDE5MC43IDcyLjIgNTEuNCAwIDk0LjQtMTAuNSAxMzMuNi00NC4xIDU3LjEtNTEuNCA1NC4yLTE0OS4yIDIwLjMtMTg5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlYXJjaGVuZ2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyMC42IDEzMC4zbC02Ny4yIDI4LjJWNDMuMkw5OC43IDIzMy41bDU0LjctMjQuMnYxMzAuM2w2Ny4yLTIwOS4zem0tODMuMi05Ni43bC0xLjMgNC43LTE1LjIgNTIuOUM4MC42IDEwNi43IDUyIDE0NS44IDUyIDE5MS41YzAgNTIuMyAzNC4zIDk1LjkgODMuNCAxMDUuNXY1My42QzU3LjUgMzQwLjEgMCAyNzIuNCAwIDE5MS42YzAtODAuNSA1OS44LTE0Ny4yIDEzNy40LTE1OHptMzExLjQgNDQ3LjJjLTExLjIgMTEuMi0yMy4xIDEyLjMtMjguNiAxMC41LTUuNC0xLjgtMjcuMS0xOS45LTYwLjQtNDQuNC0zMy4zLTI0LjYtMzMuNi0zNS43LTQzLTU2LjctOS40LTIwLjktMzAuNC00Mi42LTU3LjUtNTIuNGwtOS43LTE0LjdjLTI0LjcgMTYuOS01MyAyNi45LTgxLjMgMjguN2wyLjEtNi42IDE1LjktNDkuNWM0Ni41LTExLjkgODAuOS01NCA4MC45LTEwNC4yIDAtNTQuNS0zOC40LTEwMi4xLTk2LTEwNy4xVjMyLjNDMjU0LjQgMzcuNCAzMjAgMTA2LjggMzIwIDE5MS42YzAgMzMuNi0xMS4yIDY0LjctMjkgOTAuNGwxNC42IDkuNmM5LjggMjcuMSAzMS41IDQ4IDUyLjQgNTcuNHMzMi4yIDkuNyA1Ni44IDQzYzI0LjYgMzMuMiA0Mi43IDU0LjkgNDQuNSA2MC4zcy43IDE3LjMtMTAuNSAyOC41em0tOS45LTE3LjljMC00LjQtMy42LTgtOC04cy04IDMuNi04IDggMy42IDggOCA4IDgtMy42IDgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VsbGNhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUzLjQgMzJIOTQuN0M0Mi42IDMyIDAgNzQuNiAwIDEyNi42djI1OC43QzAgNDM3LjQgNDIuNiA0ODAgOTQuNyA0ODBoMjU4LjdjNTIuMSAwIDk0LjctNDIuNiA5NC43LTk0LjZWMTI2LjZjMC01Mi00Mi42LTk0LjYtOTQuNy05NC42em0tNTAgMzE2LjRjLTI3LjkgNDguMi04OS45IDY0LjktMTM4LjIgMzcuMi0yMi45IDM5LjgtNTQuOSA4LjYtNDIuMy0xMy4ybDE1LjctMjcuMmM1LjktMTAuMyAxOS4yLTEzLjkgMjkuNS03LjkgMTguNiAxMC44LS4xLS4xIDE4LjUgMTAuNyAyNy42IDE1LjkgNjMuNCA2LjMgNzkuNC0yMS4zIDE1LjktMjcuNiA2LjMtNjMuNC0yMS4zLTc5LjQtMTcuOC0xMC4yLS42LS40LTE4LjYtMTAuNi0yNC42LTE0LjItMy40LTUxLjkgMjEuNi0zNy41IDE4LjYgMTAuOC0uMS0uMSAxOC41IDEwLjcgNDguNCAyOCA2NS4xIDkwLjMgMzcuMiAxMzguNXptMjEuOC0yMDguOGMtMTcgMjkuNS0xNi4zIDI4LjgtMTkgMzEuNS02LjUgNi41LTE2LjMgOC43LTI2LjUgMy42LTE4LjYtMTAuOC4xLjEtMTguNS0xMC43LTI3LjYtMTUuOS02My40LTYuMy03OS40IDIxLjNzLTYuMyA2My40IDIxLjMgNzkuNGMwIDAgMTguNSAxMC42IDE4LjYgMTAuNiAyNC42IDE0LjIgMy40IDUxLjktMjEuNiAzNy41LTE4LjYtMTAuOC4xLjEtMTguNS0xMC43LTQ4LjItMjcuOC02NC45LTkwLjEtMzcuMS0xMzguNCAyNy45LTQ4LjIgODkuOS02NC45IDEzOC4yLTM3LjJsNC44LTguNGMxNC4zLTI0LjkgNTItMy4zIDM3LjcgMjEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VsbHN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUzOS43MSAyMzcuMzA4YzMuMDY0LTEyLjI1NyA0LjI5LTI0LjgyMSA0LjI5LTM3LjM4NEM1NDQgMTA3LjM4MiA0NjguNjE4IDMyIDM3Ni4wNzYgMzJjLTc3LjIyIDAtMTQ0LjYzNCA1My4wMTItMTYzLjAyIDEyNy43ODEtMTUuMzIyLTEzLjE3Ni0zNC45MzQtMjAuNTMtNTUuMTU3LTIwLjUzLTQ2LjI3MSAwLTgzLjk2MiAzNy42OS04My45NjIgODMuOTYxIDAgNy4zNTQuOTIgMTUuMDE1IDMuMDY1IDIyLjM2OS00Mi45IDIwLjIyNS03MC43ODUgNjMuNzM4LTcwLjc4NSAxMTEuMjM0QzYuMjE2IDQyNC44NDMgNjEuNjggNDgwIDEyOS40MDEgNDgwaDM4MS4xOThjNjcuNzIgMCAxMjMuMTg0LTU1LjE1NyAxMjMuMTg0LTEyMy4xODQuMDAxLTU2LjM4NC0zOC45MTYtMTA2LjAyNS05NC4wNzMtMTE5LjUwOHpNMTk5Ljg4IDQwMS41NTRjMCA4LjI3NC03LjA0OCAxNS4zMjEtMTUuMzIxIDE1LjMyMUgxNTMuNjFjLTguMjc0IDAtMTUuMzIxLTcuMDQ4LTE1LjMyMS0xNS4zMjFWMjkwLjYyNmMwLTguMjczIDcuMDQ4LTE1LjMyMSAxNS4zMjEtMTUuMzIxaDMwLjk0OWM4LjI3NCAwIDE1LjMyMSA3LjA0OCAxNS4zMjEgMTUuMzIxdjExMC45Mjh6bTg5LjQ3NyAwYzAgOC4yNzQtNy4wNDggMTUuMzIxLTE1LjMyMiAxNS4zMjFoLTMwLjk0OWMtOC4yNzQgMC0xNS4zMjEtNy4wNDgtMTUuMzIxLTE1LjMyMVYyNzAuMDk2YzAtOC4yNzQgNy4wNDgtMTUuMzIxIDE1LjMyMS0xNS4zMjFoMzAuOTQ5YzguMjc0IDAgMTUuMzIyIDcuMDQ4IDE1LjMyMiAxNS4zMjF2MTMxLjQ1OHptODkuNDc3IDBjMCA4LjI3NC03LjA0NyAxNS4zMjEtMTUuMzIxIDE1LjMyMWgtMzAuOTQ5Yy04LjI3NCAwLTE1LjMyMi03LjA0OC0xNS4zMjItMTUuMzIxVjIzOC44NGMwLTguMjc0IDcuMDQ4LTE1LjMyMSAxNS4zMjItMTUuMzIxaDMwLjk0OWM4LjI3NCAwIDE1LjMyMSA3LjA0OCAxNS4zMjEgMTUuMzIxdjE2Mi43MTR6bTg3LjAyNyAwYzAgOC4yNzQtNy4wNDggMTUuMzIxLTE1LjMyMiAxNS4zMjFoLTI4LjQ5N2MtOC4yNzQgMC0xNS4zMjEtNy4wNDgtMTUuMzIxLTE1LjMyMVYxNzYuOTQxYzAtOC41NzkgNy4wNDctMTUuNjI4IDE1LjMyMS0xNS42MjhoMjguNDk3YzguMjc0IDAgMTUuMzIyIDcuMDQ4IDE1LjMyMiAxNS42Mjh2MjI0LjYxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VydmljZXN0YWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg4IDIxNmM4MS43IDEwLjIgMjczLjcgMTAyLjMgMzA0IDIzMkgwYzk5LjUtOC4xIDE4NC41LTEzNyA4OC0yMzJ6bTMyLTE1MmMzMi4zIDM1LjYgNDcuNyA4My45IDQ2LjQgMTMzLjZDMjQ5LjMgMjMxLjMgMzczLjcgMzIxLjMgNDAwIDQ0OGg5NkM0NTUuMyAyMzEuOSAyMjIuOCA3OS41IDEyMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hpcnRzaW5idWxrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwMCA0MTAuM2wzMC42IDEzLjQgNC40LTkuOS0zMC42LTEzLjR6bTM5LjQgMTcuNWwzMC42IDEzLjQgNC40LTkuOS0zMC42LTEzLjR6bTE3Mi4xLTE0bDQuNCA5LjkgMzAuNi0xMy40LTQuNC05Ljl6TTE3OS4xIDQ0NWwzMC4zIDEzLjcgNC40LTkuOS0zMC4zLTEzLjR6TTYwLjQgMzkyLjhMOTEgNDA2LjJsNC40LTkuNi0zMC42LTEzLjd6bTIxMS40IDM4LjVsNC40IDkuOSAzMC42LTEzLjQtNC40LTkuOXptLTM5LjMgMTcuNWw0LjQgOS45IDMwLjYtMTMuNy00LjQtOS42em0xMTguNC01Mi4ybDQuNCA5LjYgMzAuNi0xMy40LTQuNC05Ljl6TTE3MCA0Ni42aC0zMy41djEwLjVIMTcwem0tNDcuMiAwSDg5LjJ2MTAuNWgzMy41em0tNDcuMyAwSDQyLjN2MTAuNWgzMy4zem0xNDEuNSAwaC0zMy4ydjEwLjVIMjE3em05NC41IDBIMjc4djEwLjVoMzMuNXptNDcuMyAwaC0zMy41djEwLjVoMzMuNXptLTk0LjYgMEgyMzF2MTAuNWgzMy4yem0xNDEuNSAwaC0zMy4zdjEwLjVoMzMuM3pNNTIuOCAzNTEuMUg0MnYzMy41aDEwLjh6bTcwLTIxNS45SDg5LjJ2MTAuNWgzMy41em0tNzAgMTAuNmgyMi44di0xMC41SDQydjMzLjVoMTAuOHptMTY4LjkgMjI4LjZjNTAuNSAwIDkxLjMtNDAuOCA5MS4zLTkxLjMgMC01MC4yLTQwLjgtOTEuMy05MS4zLTkxLjMtNTAuMiAwLTkxLjMgNDEuMS05MS4zIDkxLjMgMCA1MC41IDQxLjEgOTEuMyA5MS4zIDkxLjN6bS00OC4yLTExMS4xYzAtMjUuNCAyOS41LTMxLjggNDkuNi0zMS44IDE2LjkgMCAyOS4yIDUuOCA0NC4zIDEybC04LjggMTYuOWgtLjljLTYuNC05LjktMjQuOC0xMy4xLTM1LjYtMTMuMS05IDAtMjkuOCAxLjgtMjkuOCAxNC45IDAgMjEuNiA3OC41LTEwLjIgNzguNSAzNy45IDAgMjUuNC0zMS41IDMxLjItNTEgMzEuMi0xOC4xIDAtMzIuNC0yLjktNDcuMi0xMi4ybDktMTguNGguOWM2LjEgMTIuMiAyMy42IDE0LjkgMzUuOSAxNC45IDguNyAwIDMyLjctMS4yIDMyLjctMTQuMyAwLTI2LjEtNzcuNiA2LjMtNzcuNi0zOHpNNTIuOCAxNzguNEg0MlYyMTJoMTAuOHptMzQyLjQgMjA2LjJINDA2di0zMy41aC0xMC44ek01Mi44IDMwNy45SDQydjMzLjVoMTAuOHpNMCAzLjd2NDA2bDIyMS43IDk4LjZMNDQ4IDQwOS43VjMuN3ptNDE4LjggMzg3LjFMMjIyIDQ3Ni41IDI5LjIgMzkwLjhWMTIwLjdoMzg5Ljd2MjcwLjF6bTAtMjk5LjNIMjkuMlYzMi45aDM4OS43djU4LjZ6bS0zNjYgMTMwLjFINDJ2MzMuNWgxMC44em0wIDQzLjJINDJ2MzMuNWgxMC44ek0xNzAgMTM1LjJoLTMzLjV2MTAuNUgxNzB6bTIyNS4yIDE2My4xSDQwNnYtMzMuNWgtMTAuOHptMC00My4ySDQwNnYtMzMuNWgtMTAuOHpNMjE3IDEzNS4yaC0zMy4ydjEwLjVIMjE3ek0zOTUuMiAyMTJINDA2di0zMy41aC0xMC44em0wIDEyOS41SDQwNlYzMDhoLTEwLjh6bS0xMzEtMjA2LjNIMjMxdjEwLjVoMzMuMnptNDcuMyAwSDI3OHYxMC41aDMzLjV6bTgzLjcgMzMuNkg0MDZ2LTMzLjVoLTMzLjV2MTAuNWgyMi44em0tMzYuNC0zMy42aC0zMy41djEwLjVoMzMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hvZWxhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA0LjkgMzMxYzIuMi0xLjEgNC40LTIuMyA2LjUtMy43bDguMy00LjhjMS41LTEuMSA0LjQtMy40IDguNy02LjdsLjUtLjVjMy40LTMuNCA3LjItNSAxMS4zLTQuOWMxLjggMCAzLjkgLjUgNi40IDEuNWwzMS0yNy41Yy45LS43IDEuNy0xLjMgMi42LTEuOGguMmMzLjMtMS45IDYtMS44IDguMiAuNGMzLjkgMi4xIDQuMiA1LjYgLjkgMTAuNkw0NTYuOSAzMjJjLjIgLjUgLjQgMSAuNCAxLjVjLjUgMi4yIC4zIDQuNC0uNSA2LjZjLS43IDEuNS0xLjggMi45LTMuMSA0LjJjLTEuNCAxLjQtMi43IDIuOC00LjIgNC4ybC0xOC44IDEzLjdjLTEuNyAxLjItMy40IDIuMy01LjEgMy4zYy0yLjEgMS4zLTQuMyAyLjUtNi42IDMuNmMtMSAuNC0xLjkgLjktMi45IDEuM2MtNS45IDIuNS0xMS45IDQuMi0xOC4yIDVjLTIuOSAyNC41LTExLjMgNDcuMS0yNS4xIDY3LjhjLTE3LjUgMjUuNy00MS40IDQ1LjQtNzEuOCA1OC44Yy0zMC4yIDEzLjUtNjMgMjAuMi05OC4yIDIwLjJjLTQ4LjYtLjUtODgtMTEuNC0xMTguMi0zMi44QzQ5LjUgNDU0LjQgMzIgNDIxLjUgMzIgMzgwLjN2LTUuNmMxLjItMjguMSA5LjUtNTQuNiAyNC44LTc5LjhjMTUuMS0yNC45IDM3LjEtNDEuNyA2Ni4xLTUwLjVjMTQuOS00LjQgMjkuOS02LjYgNDUtNi42YzE1LjUgMCAzMS42IDIuOSA0OC4xIDguNnMzNS4yIDE1LjUgNTUuOSAyOS41TDMyNiAzMTIuMmMxNS4xIDkuOCAyOC44IDE2LjUgNDEuMiAyMGMtMi42LTI1LjEtMTEuNy00Ni42LTI3LjMtNjQuNWMtMTUuNy0xOC4xLTM1LjYtMzEuMy01OS45LTM5LjdsLTIzLjMtOGMtMjEuNC03LjUtMzcuMy0xNC45LTQ3LjctMjIuMmMtMjguMi0xOS4xLTQzLjgtNDUuMi00Ny03OC41bC0uNS05LjhjMC0zMi4xIDEzLTU4LjkgMzktODAuNUMyMjMuNSA5LjcgMjUxLjEgMCAyODMgMGMyNCAwIDQ1LjYgNi45IDY0LjcgMjAuOGMxOS4yIDE0IDMwLjEgMzMuOCAzMi42IDU5LjRsLjUgMTBjMCAxOC42LTQuOCAzNC41LTE0LjQgNDcuN2MtOS44IDEzLjItMTguNSAxOS45LTI2IDE5LjljLTEuNi0uMS0zLjEtLjMtNC41LS42bC0zNCAzMmMtNS41IDMtOS4yIDIuNS0xMS4xLTEuNmMtMS45LTIuMi0xLjgtNC45IC41LTguMmwuMi0uMmMuNS0uNyAxLjItMS41IDItMi40bDMxLjYtMzBjLS40LTEuNS0uNi0zLjEtLjYtNC44YzAtNC4xIDEuNi03LjYgNC45LTEwLjRjMTMuOC0xMi40IDIwLjgtMjYuNyAyMC44LTQyLjhjMC0xNi02LjEtMjkuNS0xOC4yLTQwLjRzLTI4LjctMTYuNS00OS43LTE2LjhjLTI2LjIgMC00Ny44IDcuOS02NC43IDIzLjdTMTkyLjMgODkuOSAxOTIuMyAxMTJjMCAxNy44IDYuOSAzMy45IDIwLjYgNDguM2MxMy42IDE0LjIgMzQuNiAyNS40IDYzIDMzLjVjMzkuOCAxMS41IDcwLjIgMzEgOTEuMyA1OC4zYzE4LjcgMjQuMiAyOS4xIDUxLjMgMzEuMyA4MS40YzIuMi0uNyA0LjMtMS41IDYuNS0yLjZ6TTI5NC4xIDE3OC43YzAgMS4xIC42IDEuNiAxLjggMS42Yy4xIDAgOS43LTguOSAyOC44LTI2LjZjMC0yLjQtNS4xIC45LTE1LjMgMTBjLTEwLjIgOS4yLTE1LjMgMTQuMi0xNS4zIDE0Ljl6bTggNi40YzAtMS0uNS0xLjUtMS41LTEuNWMtMS4xIDAtMi4xIC41LTIuOSAxLjZjLTEuOS0uMS0zLjMgLjEtNC4yIC43Yy0uNCAuMi0uNSAuNS0uNSAuN2MwIC43IC41IDEuMyAxLjUgMS42aDMuM2MyLjktMS4xIDQuNC0yLjIgNC40LTMuM3ptMjIuNi0xOS45YzAtMi44LTEuNi0yLjgtNC45IDBjLTEuNiAxLjUtMy42IDMuNS02IDYuMmMtLjggLjYtMi42IDIuMi01LjMgNC45Yy0yLjggMi45LTQuMiA0LjctNC4yIDUuM2wuMiAxLjNjLjcgLjIgMS4yIC40IDEuNSAuNGMuMSAwIDMuMy0yLjkgOS41LTguN3M5LjMtOC45IDkuMy05LjN6bTE1OS43IDEyMGwtMzAuNiAyN2MxLjggMSAzLjIgMi40IDQgNC4ybDMwLjItMjdjLjItMS4yIC4xLTIuMi0uNS0yLjljLS42LS41LTEuNi0uOS0zLjEtMS4zem0tMS42LS45bC0uNy0uNy0yNyAyMS45IDEuNiAyIDI2LTIzLjF6TTM2Ni42IDM2My45Yy04LTIuMS0xNS40LTQuNi0yMi4yLTcuNWMtMTUuMy02LjItMzQuMy0xNy01Ny0zMi40TDI1MCAyOTguN2MtMTUuOC0xMC4xLTMwLjItMTcuNi00My4yLTIyLjZjLTEzLjEtNC45LTI2LTcuMy0zOC42LTcuM2gtNS41Yy0zMi4yIDEuNy01Ny4yIDEzLjgtNzUgMzYuMmMtMTYuNiAyMC44LTI1IDQ1LjMtMjUgNzMuNmMwIDMxLjggMTIuOCA1Ni43IDM4LjIgNzQuN2MyNS40IDE4LjEgNjAuMiAyNy4xIDEwNC40IDI3LjFjMzQuNyAwIDY0LTYuMiA4Ny44LTE4LjZjMjMuNy0xMi40IDQyLjEtMjguOCA1NS4yLTQ5LjJjOS44LTE1LjUgMTUuOS0zMS44IDE4LjItNDguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hvcGlmeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODguMzIsMTA0LjFhNC42Niw0LjY2LDAsMCwwLTQuNC00Yy0yLDAtMzcuMjMtLjgtMzcuMjMtLjhzLTIxLjYxLTIwLjgyLTI5LjYyLTI4LjgzVjUwMy4yTDQ0Mi43Niw0NzJTMzg4LjcyLDEwNi41LDM4OC4zMiwxMDQuMVpNMjg4LjY1LDcwLjQ3YTExNi42NywxMTYuNjcsMCwwLDAtNy4yMS0xNy42MUMyNzEsMzIuODUsMjU1LjQyLDIyLDIzNywyMmExNSwxNSwwLDAsMC00LC40Yy0uNC0uOC0xLjItMS4yLTEuNi0yQzIyMy40LDExLjYzLDIxMyw3LjYzLDIwMC41OCw4Yy0yNCwuOC00OCwxOC02Ny4yNSw0OC44My0xMy42MSwyMS42Mi0yNCw0OC44NC0yNi44Miw3MC4wNi0yNy42Miw4LjQtNDYuODMsMTQuNDEtNDcuMjMsMTQuODEtMTQsNC40LTE0LjQxLDQuOC0xNiwxOC0xLjIsMTAtMzgsMjkxLjgyLTM4LDI5MS44MkwzMDcuODYsNTA0VjY1LjY3YTQxLjY2LDQxLjY2LDAsMCwwLTQuNC40UzI5Ny44Niw2Ny42NywyODguNjUsNzAuNDdaTTIzMy40MSw4Ny42OWMtMTYsNC44LTMzLjYzLDEwLjQtNTAuODQsMTUuNjEsNC44LTE4LjgyLDE0LjQxLTM3LjYzLDI1LjYyLTUwLDQuNC00LjQsMTAuNDEtOS42MSwxNy4yMS0xMi44MUMyMzIuMjEsNTQuODYsMjMzLjgxLDc0LjQ4LDIzMy40MSw4Ny42OVpNMjAwLjU4LDI0LjQ0QTI3LjQ5LDI3LjQ5LDAsMCwxLDIxNSwyOGMtNi40LDMuMi0xMi44MSw4LjQxLTE4LjgxLDE0LjQxLTE1LjIxLDE2LjQyLTI2LjgyLDQyLTMxLjYyLDY2LjQ1LTE0LjQyLDQuNDEtMjguODMsOC44MS00MiwxMi44MUMxMzEuMzMsODMuMjgsMTYzLjc1LDI1LjI0LDIwMC41OCwyNC40NFpNMTU0LjE1LDI0NC42MWMxLjYsMjUuNjEsNjkuMjUsMzEuMjIsNzMuMjUsOTEuNjYsMi44LDQ3LjY0LTI1LjIyLDgwLjA2LTY1LjY1LDgyLjQ3LTQ4LjgzLDMuMi03NS42NS0yNS42Mi03NS42NS0yNS42MmwxMC40LTQ0czI2LjgyLDIwLjQyLDQ4LjQ0LDE4LjgyYzE0LS44LDE5LjIyLTEyLjQxLDE4LjgxLTIwLjQyLTItMzMuNjItNTcuMjQtMzEuNjItNjAuODQtODYuODYtMy4yLTQ2LjQ0LDI3LjIyLTkzLjI3LDk0LjQ3LTk3LjY4LDI2LTEuNiwzOS4yMyw0LjgxLDM5LjIzLDQuODFMMjIxLjQsMjI1LjM5cy0xNy4yMS04LTM3LjYzLTYuNEMxNTQuMTUsMjIxLDE1My43NSwyMzkuOCwxNTQuMTUsMjQ0LjYxWk0yNDkuNDIsODIuODhjMC0xMi0xLjYtMjkuMjItNy4yMS00My42MywxOC40MiwzLjYsMjcuMjIsMjQsMzEuMjMsMzYuNDNRMjYyLjYzLDc4LjY4LDI0OS40Miw4Mi44OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hvcHdhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAzLjUgNDU1LjQxQTI0Ni4xNyAyNDYuMTcgMCAwIDEgMjU2IDUwNEMxMTguODEgNTA0IDggMzkzIDggMjU2IDggMTE4LjgxIDExOSA4IDI1NiA4YTI0Ny4zOSAyNDcuMzkgMCAwIDEgMTY1LjcgNjMuNSAzLjU3IDMuNTcgMCAwIDEtMi44NiA2LjE4QTQxOC42MiA0MTguNjIgMCAwIDAgMzYyLjEzIDc0Yy0xMjkuMzYgMC0yMjIuNCA1My40Ny0yMjIuNCAxNTUuMzUgMCAxMDkgOTIuMTMgMTQ1Ljg4IDE3Ni44MyAxNzguNzMgMzMuNjQgMTMgNjUuNCAyNS4zNiA4NyA0MS41OWEzLjU4IDMuNTggMCAwIDEgMCA1Ljcyek01MDMgMjMzLjA5YTMuNjQgMy42NCAwIDAgMC0xLjI3LTIuNDRjLTUxLjc2LTQzLTkzLjYyLTYwLjQ4LTE0NC40OC02MC40OC04NC4xMyAwLTgwLjI1IDUyLjE3LTgwLjI1IDUzLjYzIDAgNDIuNiA1Mi4wNiA2MiAxMTIuMzQgODQuNDkgMzEuMDcgMTEuNTkgNjMuMTkgMjMuNTcgOTIuNjggMzkuOTNhMy41NyAzLjU3IDAgMCAwIDUtMS44MkEyNDkgMjQ5IDAgMCAwIDUwMyAyMzMuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25hbE1lc3NlbmdlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTQuNiA3LjVsNS44IDIzLjNDMTc3LjcgMzYuMyAxNTYgNDUuMyAxMzYgNTcuNEwxMjMuNyAzNi44YzIyLTEzLjMgNDUuOS0yMy4yIDcwLjktMjkuM3ptMTIyLjkgMGwtNS44IDIzLjNDMzM0LjMgMzYuMyAzNTYgNDUuMyAzNzYgNTcuNGwxMi40LTIwLjZjLTIyLTEzLjMtNDYtMjMuMi03MS0yOS4zek0zNi44IDEyMy43Yy0xMy4zIDIyLTIzLjIgNDUuOS0yOS4zIDcwLjlsMjMuMyA1LjhDMzYuMyAxNzcuNyA0NS4zIDE1NiA1Ny40IDEzNkwzNi44IDEyMy43ek0yNCAyNTZjMC0xMS42IC45LTIzLjMgMi42LTM0LjhMMi45IDIxNy42Yy0zLjggMjUuNC0zLjggNTEuMyAwIDc2LjdsMjMuNy0zLjZDMjQuOSAyNzkuMyAyNCAyNjcuNiAyNCAyNTZ6TTM4OC4zIDQ3NS4yTDM3NiA0NTQuNmMtMjAgMTIuMS00MS42IDIxLTY0LjIgMjYuNmw1LjggMjMuM2MyNC45LTYuMiA0OC44LTE2IDcwLjgtMjkuM3pNNDg4IDI1NmMwIDExLjYtLjkgMjMuMy0yLjYgMzQuOGwyMy43IDMuNmMzLjgtMjUuNCAzLjgtNTEuMyAwLTc2LjdsLTIzLjcgMy42YzEuNyAxMS41IDIuNiAyMy4xIDIuNiAzNC44em0xNi41IDYxLjRsLTIzLjMtNS44Yy01LjYgMjIuNy0xNC41IDQ0LjMtMjYuNiA2NC4zbDIwLjYgMTIuNGMxMy4zLTIyIDIzLjItNDYgMjkuMy03MXptLTIxMy44IDE2OGMtMjMgMy41LTQ2LjUgMy41LTY5LjUgMGwtMy42IDIzLjdjMjUuNCAzLjggNTEuMyAzLjggNzYuNyAwbC0zLjYtMjMuN3ptMTUyLTkxLjhjLTEzLjggMTguNy0zMC40IDM1LjMtNDkuMiA0OS4xbDE0LjIgMTkuM2MyMC43LTE1LjIgMzktMzMuNCA1NC4yLTU0LjFsLTE5LjMtMTQuNHpNMzkzLjYgNjkuMmMxOC44IDEzLjggMzUuMyAzMC40IDQ5LjIgNDkuMkw0NjIuMSAxMDRDNDQ2LjkgODMuNCA0MjguNiA2NS4xIDQwOCA0OS45TDM5My42IDY5LjJ6TTY5LjIgMTE4LjRjMTMuOC0xOC44IDMwLjQtMzUuMyA0OS4yLTQ5LjJMMTA0IDQ5LjlDODMuNCA2NS4xIDY1LjEgODMuNCA0OS45IDEwNGwxOS4zIDE0LjR6bTQwNiA1LjNMNDU0LjYgMTM2YzEyLjEgMjAgMjEgNDEuNiAyNi42IDY0LjJsMjMuMy01LjhjLTYuMi0yNC45LTE2LTQ4LjgtMjkuMy03MC44em0tMjU0LTk3LjFjMjMtMy41IDQ2LjUtMy41IDY5LjUgMGwzLjYtMjMuN0MyNjguOS0xIDI0My4xLTEgMjE3LjYgMi45bDMuNiAyMy43ek04MS42IDQ2OC40TDMyIDQ4MGwxMS42LTQ5LjZMMjAuMiA0MjUgOC42IDQ3NC41Yy0uOSA0LS44IDguMSAuMyAxMi4xczMuMiA3LjUgNi4xIDEwLjRzNi41IDUgMTAuNCA2LjFzOC4xIDEuMiAxMi4xIC4zTDg3IDQ5MmwtNS40LTIzLjZ6TTI1LjIgNDAzLjZMNDguNiA0MDlsOC0zNC40Yy0xMS43LTE5LjYtMjAuNC00MC44LTI1LjgtNjNMNy41IDMxNy40YzUuMiAyMS4yIDEzLjIgNDEuNyAyMy42IDYwLjhsLTUuOSAyNS4zem0xMTIgNTJsLTM0LjQgOCA1LjQgMjMuNCAyNS4zLTUuOWMxOS4yIDEwLjQgMzkuNiAxOC40IDYwLjggMjMuNmw1LjgtMjMuM2MtMjIuMS01LjUtNDMuMy0xNC4zLTYyLjgtMjZsLS4yIC4yek0yNTYgNDhjLTM3LjIgMC03My42IDEwLTEwNS42IDI4LjlzLTU4LjQgNDYtNzYuMyA3OC42cy0yNi45IDY5LjMtMjUuOCAxMDYuNHMxMiA3My4zIDMxLjggMTA0LjhMNjAgNDUybDg1LjMtMjBjMjcuMyAxNy4yIDU4LjIgMjcuOCA5MC4zIDMxczY0LjUtMS4xIDk0LjYtMTIuNnM1Ny4yLTI5LjggNzktNTMuNnMzNy44LTUyLjIgNDYuOC04My4yczEwLjUtNjMuNiA0LjctOTUuM3MtMTktNjEuNi0zOC40LTg3LjRzLTQ0LjUtNDYuNy03My40LTYxUzI4OC4zIDQ4IDI1NiA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2ltcGx5YnVpbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgxLjIgNjRoLTEwNmMtMTQuNSAwLTI2LjYgMTEuOC0yNi42IDI2LjN2MzkuNkgxNjMuM1Y5MC4zYzAtMTQuNS0xMi0yNi4zLTI2LjYtMjYuM2gtMTA2QzE2LjEgNjQgNC4zIDc1LjggNC4zIDkwLjN2MzMxLjRjMCAxNC41IDExLjggMjYuMyAyNi42IDI2LjNoNDUwLjRjMTQuOCAwIDI2LjYtMTEuOCAyNi42LTI2LjNWOTAuM2MtLjItMTQuNS0xMi0yNi4zLTI2LjctMjYuM3pNMTQ5LjggMzU1LjhjLTM2LjYgMC02Ni40LTI5LjctNjYuNC02Ni40IDAtMzYuOSAyOS43LTY2LjYgNjYuNC02Ni42IDM2LjkgMCA2Ni42IDI5LjcgNjYuNiA2Ni42IDAgMzYuNy0yOS43IDY2LjQtNjYuNiA2Ni40em0yMTIuNCAwYy0zNi45IDAtNjYuNi0yOS43LTY2LjYtNjYuNiAwLTM2LjYgMjkuNy02Ni40IDY2LjYtNjYuNCAzNi42IDAgNjYuNCAyOS43IDY2LjQgNjYuNCAwIDM2LjktMjkuOCA2Ni42LTY2LjQgNjYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2lzdHJpeCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNDQ5TDMwMS4yIDMwMC4yYzIwLTI3LjkgMzEuOS02Mi4yIDMxLjktOTkuMiAwLTkzLjEtNzQuNy0xNjguOS0xNjYuNS0xNjguOUM3NC43IDMyIDAgMTA3LjggMCAyMDAuOXM3NC43IDE2OC45IDE2Ni41IDE2OC45YzM5LjggMCA3Ni4zLTE0LjIgMTA1LTM3LjlsMTQ2IDE0OC4xIDMwLjUtMzF6TTE2Ni41IDMzMC44Yy03MC42IDAtMTI4LjEtNTguMy0xMjguMS0xMjkuOVM5NS45IDcxIDE2Ni41IDcxczEyOC4xIDU4LjMgMTI4LjEgMTI5LjktNTcuNCAxMjkuOS0xMjguMSAxMjkuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2l0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMybDY5LjcxIDExOC43NS01OC44Ni0xMS41MiA2OS44NCA5MS4wM2ExNDYuNzQxIDE0Ni43NDEgMCAwIDAgMCA1MS40NWwtNjkuODQgOTEuMDMgNTguODYtMTEuNTJMMCA0ODBsMTE4Ljc1LTY5LjcxLTExLjUyIDU4Ljg2IDkxLjAzLTY5Ljg0YzE3LjAyIDMuMDQgMzQuNDcgMy4wNCA1MS40OCAwbDkxLjAzIDY5Ljg0LTExLjUyLTU4Ljg2TDQ0OCA0ODBsLTY5LjcxLTExOC43OCA1OC44NiAxMS41Mi02OS44NC05MS4wM2MzLjAzLTE3LjAxIDMuMDQtMzQuNDQgMC01MS40NWw2OS44NC05MS4wMy01OC44NiAxMS41Mkw0NDggMzJsLTExOC43NSA2OS43MSAxMS41Mi01OC45LTkxLjA2IDY5Ljg3Yy04LjUtMS41Mi0xNy4xLTIuMjktMjUuNzEtMi4yOXMtMTcuMjEuNzgtMjUuNzEgMi4yOWwtOTEuMDYtNjkuODcgMTEuNTIgNTguOUwwIDMyem0yMjQgOTkuNzhjMzEuOCAwIDYzLjYgMTIuMTIgODcuODUgMzYuMzcgNDguNSA0OC41IDQ4LjQ5IDEyNy4yMSAwIDE3NS43cy0xMjcuMiA0OC40Ni0xNzUuNy0uMDNjLTQ4LjUtNDguNS00OC40OS0xMjcuMjEgMC0xNzUuNyAyNC4yNC0yNC4yNSA1Ni4wNS0zNi4zNCA4Ny44NS0zNi4zNHptMCAzNi42NmMtMjIuNDIgMC00NC44MyA4LjUyLTYxLjkyIDI1LjYxLTM0LjE4IDM0LjE4LTM0LjE5IDg5LjY4IDAgMTIzLjg3czg5LjY1IDM0LjE4IDEyMy44NCAwYzM0LjE4LTM0LjE4IDM0LjE5LTg5LjY4IDAtMTIzLjg3LTE3LjA5LTE3LjA5LTM5LjUtMjUuNjEtNjEuOTItMjUuNjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpdHJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTIuNDM5IDAuMDA4NDYxMjhWMEg0NDhWMTI4SDY0QzY0IDU3LjYwMDggMTQxLjc1NSAwLjQ3NTMzOCAyMTIuNDM5IDAuMDA4NDYxMjhaTTIzNy4yNTYgMTkyVjE5Mi4wMDdDMzA3LjEzNSAxOTIuNDc1IDM4NCAyNDkuNiAzODQgMzIwSDIxMC44MDlWMzE5Ljk5NUMxNDAuOTE1IDMxOS41NjMgNjQgMjYyLjQyNCA2NCAxOTJIMjM3LjI1NlpNMjM1LjU2NSA1MTEuOTkzQzMwNi4yNTEgNTExLjUyMSAzODQgNDU0LjM5OSAzODQgMzg0SDBWNTEySDIzNS41NjVWNTExLjk5M1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2tldGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3LjUgMTYyLjJMOSAxODcuMWg5MC41bDYuOS0xMzAuNy03OC45IDEwNS44ek0zOTYuMyA0NS43TDI2Ny43IDMybDEzNS43IDE0Ny4yLTcuMS0xMzMuNXpNMTEyLjIgMjE4LjNsLTExLjItMjJIOS45TDIzNC44IDQ1OHptMi0zMS4yaDI4NGwtODEuNS04OC41TDI1Ni4zIDMzem0yOTcuMyA5LjFMMjc3LjYgNDU4bDIyNC44LTI2MS43aC05MC45ek00MTUuNCA2OUw0MDYgNTYuNGwuOSAxNy4zIDYuMSAxMTMuNGg5MC4zek0xMTMuNSA5My41bC00LjYgODUuNkwyNDQuNyAzMiAxMTYuMSA0NS43em0yODcuNyAxMDIuN2gtMjkwbDQyLjQgODIuOUwyNTYuMyA0ODBsMTQ0LjktMjgzLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNreWF0bGFzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAzMjkuM2MwIDY1LjktNTIuNSAxMTQuNC0xMTcuNSAxMTQuNC0xNjUuOSAwLTE5Ni42LTI0OS43LTM1OS43LTI0OS43LTE0Ni45IDAtMTQ3LjEgMjEyLjIgNS42IDIxMi4yIDQyLjUgMCA5MC45LTE3LjggMTI1LjMtNDIuNSA1LjYtNC4xIDE2LjktMTYuMyAyMi44LTE2LjNzMTAuOSA1IDEwLjkgMTAuOWMwIDcuOC0xMy4xIDE5LjEtMTguNyAyNC4xLTQwLjkgMzUuNi0xMDAuMyA2MS4yLTE1NC43IDYxLjItODMuNC4xLTE1NC01OS0xNTQtMTQ0LjlzNjcuNS0xNDkuMSAxNTIuOC0xNDkuMWMxODUuMyAwIDIyMi41IDI0NS45IDM2MS45IDI0NS45IDk5LjkgMCA5NC44LTEzOS43IDMuNC0xMzkuNy0xNy41IDAtMzUgMTEuNi00Ni45IDExLjYtOC40IDAtMTUuOS03LjItMTUuOS0xNS42IDAtMTEuNiA1LjMtMjMuNyA1LjMtMzYuMyAwLTY2LjYtNTAuOS0xMTQuNy0xMTYuOS0xMTQuNy01My4xIDAtODAgMzYuOS04OC44IDM2LjktNi4yIDAtMTEuMi01LTExLjItMTEuMiAwLTUuNiA0LjEtMTAuMyA3LjgtMTQuNCAyNS4zLTI4LjggNjQuNy00My43IDEwMi44LTQzLjcgNzkuNCAwIDEzOS4xIDU4LjQgMTM5LjEgMTM3LjggMCA2LjktLjMgMTMuNy0xLjIgMjAuNiAxMS45LTMuMSAyNC4xLTQuNyAzNS45LTQuNyA2MC43IDAgMTExLjkgNDUuMyAxMTEuOSAxMDcuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2t5cGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI0LjcgMjk5LjhjMi45LTE0IDQuNy0yOC45IDQuNy00My44IDAtMTEzLjUtOTEuOS0yMDUuMy0yMDUuMy0yMDUuMy0xNC45IDAtMjkuNyAxLjctNDMuOCA0LjdDMTYxLjMgNDAuNyAxMzcuNyAzMiAxMTIgMzIgNTAuMiAzMiAwIDgyLjIgMCAxNDRjMCAyNS43IDguNyA0OS4zIDIzLjMgNjguMi0yLjkgMTQtNC43IDI4LjktNC43IDQzLjggMCAxMTMuNSA5MS45IDIwNS4zIDIwNS4zIDIwNS4zIDE0LjkgMCAyOS43LTEuNyA0My44LTQuNyAxOSAxNC42IDQyLjYgMjMuMyA2OC4yIDIzLjMgNjEuOCAwIDExMi01MC4yIDExMi0xMTIgLjEtMjUuNi04LjYtNDkuMi0yMy4yLTY4LjF6bS0xOTQuNiA5MS41Yy02NS42IDAtMTIwLjUtMjkuMi0xMjAuNS02NSAwLTE2IDktMzAuNiAyOS41LTMwLjYgMzEuMiAwIDM0LjEgNDQuOSA4OC4xIDQ0LjkgMjUuNyAwIDQyLjMtMTEuNCA0Mi4zLTI2LjMgMC0xOC43LTE2LTIxLjYtNDItMjgtNjIuNS0xNS40LTExNy44LTIyLTExNy44LTg3LjIgMC01OS4yIDU4LjYtODEuMSAxMDkuMS04MS4xIDU1LjEgMCAxMTAuOCAyMS45IDExMC44IDU1LjQgMCAxNi45LTExLjQgMzEuOC0zMC4zIDMxLjgtMjguMyAwLTI5LjItMzMuNS03NS0zMy41LTI1LjcgMC00MiA3LTQyIDIyLjUgMCAxOS44IDIwLjggMjEuOCA2OS4xIDMzIDQxLjQgOS4zIDkwLjcgMjYuOCA5MC43IDc3LjYgMCA1OS4xLTU3LjEgODYuNS0xMTIgODYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2xhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTQuMTIgMzE1LjFjMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2UzAgMzQxIDAgMzE1LjFjMC0yNS45IDIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2aDQ3LjA2djQ3LjA2em0yMy43MiAwYzAtMjUuOSAyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNnM0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNnYxMTcuODRjMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2cy00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNlYzMTUuMXptNDcuMDYtMTg4Ljk4Yy0yNS45IDAtNDcuMDYtMjEuMTYtNDcuMDYtNDcuMDZTMTM5IDMyIDE2NC45IDMyczQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2djQ3LjA2SDE2NC45em0wIDIzLjcyYzI1LjkgMCA0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNnMtMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZINDcuMDZDMjEuMTYgMjQzLjk2IDAgMjIyLjggMCAxOTYuOXMyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNkgxNjQuOXptMTg4Ljk4IDQ3LjA2YzAtMjUuOSAyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNiAyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZzLTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2aC00Ny4wNlYxOTYuOXptLTIzLjcyIDBjMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2LTI1LjkgMC00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNlY3OS4wNmMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDYgMjUuOSAwIDQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2VjE5Ni45ek0yODMuMSAzODUuODhjMjUuOSAwIDQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2IDAgMjUuOS0yMS4xNiA0Ny4wNi00Ny4wNiA0Ny4wNi0yNS45IDAtNDcuMDYtMjEuMTYtNDcuMDYtNDcuMDZ2LTQ3LjA2aDQ3LjA2em0wLTIzLjcyYy0yNS45IDAtNDcuMDYtMjEuMTYtNDcuMDYtNDcuMDYgMC0yNS45IDIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2aDExNy44NGMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDYgMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2SDI4My4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbGlkZXNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ny43IDE1My43Yy0zNCAwLTYxLjcgMjUuNy02MS43IDU3LjcgMCAzMS43IDI3LjcgNTcuNyA2MS43IDU3LjdzNjEuNy0yNiA2MS43LTU3LjdjMC0zMi0yNy43LTU3LjctNjEuNy01Ny43em0xNDMuNCAwYy0zNCAwLTYxLjcgMjUuNy02MS43IDU3LjcgMCAzMS43IDI3LjcgNTcuNyA2MS43IDU3LjcgMzQuMyAwIDYxLjctMjYgNjEuNy01Ny43LjEtMzItMjcuNC01Ny43LTYxLjctNTcuN3ptMTU2LjYgOTBsLTYgNC4zVjQ5LjdjMC0yNy40LTIwLjYtNDkuNy00Ni00OS43SDc2LjZjLTI1LjQgMC00NiAyMi4zLTQ2IDQ5LjdWMjQ4Yy0yLTEuNC00LjMtMi45LTYuMy00LjMtMTUuMS0xMC42LTI1LjEgNC0xNiAxNy43IDE4LjMgMjIuNiA1My4xIDUwLjMgMTA2LjMgNzJDNTguMyA1MjUuMSAyNTIgNTU1LjcgMjQ4LjkgNDU3LjVjMC0uNy4zLTU2LjYuMy05Ni42IDUuMSAxLjEgOS40IDIuMyAxMy43IDMuMSAwIDM5LjcuMyA5Mi44LjMgOTMuNS0zLjEgOTguMyAxOTAuNiA2Ny43IDEzNC4zLTEyNCA1My4xLTIxLjcgODgtNDkuNCAxMDYuMy03MiA5LjEtMTMuOC0uOS0yOC4zLTE2LjEtMTcuOHptLTMwLjUgMTkuMmMtNjguOSAzNy40LTEyOC4zIDMxLjEtMTYwLjYgMjkuNy0yMy43LS45LTMyLjYgOS4xLTMzLjcgMjQuOS0xMC4zLTcuNy0xOC42LTE1LjUtMjAuMy0xNy4xLTUuMS01LjQtMTMuNy04LTI3LjEtNy43LTMxLjcgMS4xLTg5LjcgNy40LTE1Ny40LTI4VjcyLjNjMC0zNC45IDguOS00NS43IDQwLjYtNDUuN2gzMTcuN2MzMC4zIDAgNDAuOSAxMi45IDQwLjkgNDUuN3YxOTAuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU25hcGNoYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2LjkyNiwzNjYuNmMtMy4zNzMtOS4xNzYtOS44LTE0LjA4Ni0xNy4xMTItMTguMTUzLTEuMzc2LS44MDYtMi42NDEtMS40NTEtMy43Mi0xLjk0Ny0yLjE4Mi0xLjEyOC00LjQxNC0yLjIyLTYuNjM0LTMuMzczLTIyLjgtMTIuMDktNDAuNjA5LTI3LjM0MS01Mi45NTktNDUuNDJhMTAyLjg4OSwxMDIuODg5LDAsMCwxLTkuMDg5LTE2LjEyYy0xLjA1NC0zLjAxMy0xLTQuNzI0LS4yNDgtNi4yODdhMTAuMjIxLDEwLjIyMSwwLDAsMSwyLjkxNC0zLjAzOGMzLjkxOC0yLjU5MSw3Ljk2LTUuMjIsMTAuNy02Ljk5Myw0Ljg4NS0zLjE2Miw4Ljc1NC01LjY2NywxMS4yNDYtNy40NCw5LjM2Mi02LjU0NywxNS45MDktMTMuNSwyMC0yMS4yNzhhNDIuMzcxLDQyLjM3MSwwLDAsMCwyLjEtMzUuMTkxYy02LjItMTYuMzE4LTIxLjYxMy0yNi40NDktNDAuMjg3LTI2LjQ0OWE1NS41NDMsNTUuNTQzLDAsMCwwLTExLjcxOCwxLjI0Yy0xLjAyOS4yMjQtMi4wNTkuNDU5LTMuMDYzLjcyLjE3NC0xMS4xNi0uMDc0LTIyLjk0LTEuMDY2LTM0LjUzNC0zLjUyMi00MC43NTgtMTcuNzk0LTYyLjEyMy0zMi42NzQtNzkuMTZBMTMwLjE2NywxMzAuMTY3LDAsMCwwLDMzMi4xLDM2LjQ0M0MzMDkuNTE1LDIzLjU0NywyODMuOTEsMTcsMjU2LDE3UzIwMi42LDIzLjU0NywxODAsMzYuNDQzYTEyOS43MzUsMTI5LjczNSwwLDAsMC0zMy4yODEsMjYuNzgzYy0xNC44OCwxNy4wMzgtMjkuMTUyLDM4LjQ0LTMyLjY3Myw3OS4xNjEtLjk5MiwxMS41OTQtMS4yNCwyMy40MzUtMS4wNzksMzQuNTMzLTEtLjI2LTIuMDIxLS41LTMuMDUxLS43MTlhNTUuNDYxLDU1LjQ2MSwwLDAsMC0xMS43MTctMS4yNGMtMTguNjg3LDAtMzQuMTI1LDEwLjEzMS00MC4zLDI2LjQ0OWE0Mi40MjMsNDIuNDIzLDAsMCwwLDIuMDQ2LDM1LjIyOGM0LjEwNSw3Ljc3NCwxMC42NTIsMTQuNzMxLDIwLjAxNCwyMS4yNzgsMi40OCwxLjczNiw2LjM2MSw0LjI0LDExLjI0Niw3LjQ0LDIuNjQxLDEuNzExLDYuNSw0LjIxNiwxMC4yOCw2LjcyYTExLjA1NCwxMS4wNTQsMCwwLDEsMy4zLDMuMzExYy43OTQsMS42MjQuODE4LDMuMzczLS4zNiw2LjZhMTAyLjAyLDEwMi4wMiwwLDAsMS04Ljk0LDE1Ljc4NWMtMTIuMDc3LDE3LjY2OS0yOS4zNjMsMzIuNjQ4LTUxLjQzNCw0NC42MzlDMzIuMzU1LDM0OC42MDgsMjAuMiwzNTIuNzUsMTUuMDY5LDM2Ni43Yy0zLjg2OCwxMC41MjgtMS4zMzksMjIuNTA2LDguNDk0LDMyLjZhNDkuMTM3LDQ5LjEzNywwLDAsMCwxMi40LDkuMzg3LDEzNC4zMzcsMTM0LjMzNywwLDAsMCwzMC4zNDIsMTIuMTM5LDIwLjAyNCwyMC4wMjQsMCwwLDEsNi4xMjYsMi43NDFjMy41ODMsMy4xMzcsMy4wNzUsNy44NjEsNy44NDksMTQuNzhhMzQuNDY4LDM0LjQ2OCwwLDAsMCw4Ljk3Nyw5LjEyN2MxMC4wMTksNi45MTksMjEuMjc4LDcuMzUzLDMzLjIwNyw3LjgxMSwxMC43NzYuNDEsMjIuOTg5Ljg4MSwzNi45MzksNS40ODEsNS43NzgsMS45MSwxMS43OCw1LjYwNSwxOC43MzYsOS45MkMxOTQuODQyLDQ4MC45NTEsMjE3LjcwNyw0OTUsMjU1Ljk3Myw0OTVzNjEuMjkyLTE0LjEyMyw3OC4xMTgtMjQuNDI4YzYuOTA3LTQuMjQsMTIuODcyLTcuOSwxOC40ODktOS43NTgsMTMuOTQ5LTQuNjEzLDI2LjE2My01LjA3MiwzNi45MzktNS40ODEsMTEuOTI4LS40NTksMjMuMTg3LS44OTMsMzMuMjA2LTcuODEyYTM0LjU4NCwzNC41ODQsMCwwLDAsMTAuMjE4LTExLjE2YzMuNDM0LTUuODQsMy4zNDgtOS45MTksNi41NzItMTIuNzcxYTE4Ljk3MSwxOC45NzEsMCwwLDEsNS43NTMtMi42MjlBMTM0Ljg5MywxMzQuODkzLDAsMCwwLDQ3Ni4wMiw0MDguNzFhNDguMzQ0LDQ4LjM0NCwwLDAsMCwxMy4wMTktMTAuMTkzbC4xMjQtLjE0OUM0OTguMzg5LDM4OC41LDUwMC43MDgsMzc2Ljg2Nyw0OTYuOTI2LDM2Ni42Wm0tMzQuMDEzLDE4LjI3N2MtMjAuNzQ1LDExLjQ1OC0zNC41MzMsMTAuMjMtNDUuMjU5LDE3LjEzNy05LjExNCw1Ljg2NS0zLjcyLDE4LjUxMy0xMC4zNDIsMjMuMDc2LTguMTM0LDUuNjE3LTMyLjE3Ny0uNC02My4yMzksOS44NTgtMjUuNjE4LDguNDY5LTQxLjk2MSwzMi44MjItODguMDM4LDMyLjgyMnMtNjIuMDM2LTI0LjMtODguMDc2LTMyLjg4NGMtMzEtMTAuMjU1LTU1LjA5Mi00LjI0MS02My4yMzktOS44NTgtNi42MDktNC41NjMtMS4yNC0xNy4yMTEtMTAuMzQxLTIzLjA3Ni0xMC43MzktNi45MDctMjQuNTI3LTUuNjc5LTQ1LjI2LTE3LjA3NS0xMy4yMDYtNy4yOTEtNS43MTYtMTEuOC0xLjMxNC0xMy45MzcsNzUuMTQzLTM2LjM4MSw4Ny4xMzMtOTIuNTUyLDg3LjY2Ni05Ni43MTkuNjQ1LTUuMDQ2LDEuMzY0LTkuMDE0LTQuMTkxLTE0LjE0OC01LjM2OS00Ljk2LTI5LjE4OS0xOS43LTM1LjgtMjQuMzE2LTEwLjkzNy03LjYzOC0xNS43NDgtMTUuMjY0LTEyLjItMjQuNjM4LDIuNDgtNi40ODUsOC41MzEtOC45MjgsMTQuODc5LTguOTI4YTI3LjY0MywyNy42NDMsMCwwLDEsNS45NjUuNjdjMTIsMi42LDIzLjY1OSw4LjYxNywzMC4zOTIsMTAuMjQyYTEwLjc0OSwxMC43NDksMCwwLDAsMi40OC4zMzVjMy42LDAsNC44Ni0xLjgxMSw0LjYxMi01LjkyNy0uNzY4LTEzLjEzMi0yLjYyOC0zOC43MjUtLjU1OC02Mi42NDQsMi44NC0zMi45MDksMTMuNDQyLTQ5LjIxNSwyNi4wNC02My42MzYsNi4wNTEtNi45MzIsMzQuNDg0LTM2Ljk3Niw4OC44NTctMzYuOTc2czgyLjg4LDI5LjkyLDg4LjkzMSwzNi44MjdjMTIuNjExLDE0LjQyMSwyMy4yMjUsMzAuNzI3LDI2LjA0LDYzLjYzNiwyLjA3MSwyMy45MTkuMjg1LDQ5LjUyNS0uNTU4LDYyLjY0NC0uMjg1LDQuMzI3LDEuMDE3LDUuOTI3LDQuNjEzLDUuOTI3YTEwLjY0OCwxMC42NDgsMCwwLDAsMi40OC0uMzM1YzYuNzQ1LTEuNjI0LDE4LjQtNy42MzgsMzAuNC0xMC4yNDJhMjcuNjQxLDI3LjY0MSwwLDAsMSw1Ljk2NC0uNjdjNi4zODYsMCwxMi40LDIuNDgsMTQuODgsOC45MjgsMy41NDYsOS4zNzQtMS4yNCwxNy0xMi4xODksMjQuNjM5LTYuNjA5LDQuNjEyLTMwLjQyOSwxOS4zNDMtMzUuOCwyNC4zMTUtNS41NjgsNS4xMzQtNC44MzYsOS4xLTQuMTkxLDE0LjE0OS41MzMsNC4yMjgsMTIuNTExLDYwLjQsODcuNjY2LDk2LjcxOEM0NjguNjI5LDM3My4wMTEsNDc2LjExOSwzNzcuNTI0LDQ2Mi45MTMsMzg0Ljg3N1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU291bmRjbG91ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTEuNCAyNTYuM2w1LjggNjUtNS44IDY4LjNjLS4zIDIuNS0yLjIgNC40LTQuNCA0LjRzLTQuMi0xLjktNC4yLTQuNGwtNS42LTY4LjMgNS42LTY1YzAtMi4yIDEuOS00LjIgNC4yLTQuMiAyLjIgMCA0LjEgMiA0LjQgNC4yem0yMS40LTQ1LjZjLTIuOCAwLTQuNyAyLjItNSA1bC01IDEwNS42IDUgNjguM2MuMyAyLjggMi4yIDUgNSA1IDIuNSAwIDQuNy0yLjIgNC43LTVsNS44LTY4LjMtNS44LTEwNS42YzAtMi44LTIuMi01LTQuNy01em0yNS41LTI0LjFjLTMuMSAwLTUuMyAyLjItNS42IDUuM2wtNC40IDEzMCA0LjQgNjcuOGMuMyAzLjEgMi41IDUuMyA1LjYgNS4zIDIuOCAwIDUuMy0yLjIgNS4zLTUuM2w1LjMtNjcuOC01LjMtMTMwYzAtMy4xLTIuNS01LjMtNS4zLTUuM3pNNy4yIDI4My4yYy0xLjQgMC0yLjIgMS4xLTIuNSAyLjVMMCAzMjEuM2w0LjcgMzVjLjMgMS40IDEuMSAyLjUgMi41IDIuNXMyLjItMS4xIDIuNS0yLjVsNS42LTM1LTUuNi0zNS42Yy0uMy0xLjQtMS4xLTIuNS0yLjUtMi41em0yMy42LTIxLjljLTEuNCAwLTIuNSAxLjEtMi41IDIuNWwtNi40IDU3LjUgNi40IDU2LjFjMCAxLjcgMS4xIDIuOCAyLjUgMi44czIuNS0xLjEgMi44LTIuNWw3LjItNTYuNC03LjItNTcuNWMtLjMtMS40LTEuNC0yLjUtMi44LTIuNXptMjUuMy0xMS40Yy0xLjcgMC0zLjEgMS40LTMuMyAzLjNMNDcgMzIxLjNsNS44IDY1LjhjLjMgMS43IDEuNyAzLjEgMy4zIDMuMSAxLjcgMCAzLjEtMS40IDMuMS0zLjFsNi45LTY1LjgtNi45LTY4LjFjMC0xLjktMS40LTMuMy0zLjEtMy4zem0yNS4zLTIuMmMtMS45IDAtMy42IDEuNC0zLjYgMy42bC01LjggNzAgNS44IDY3LjhjMCAyLjIgMS43IDMuNiAzLjYgMy42czMuNi0xLjQgMy45LTMuNmw2LjQtNjcuOC02LjQtNzBjLS4zLTIuMi0yLTMuNi0zLjktMy42em0yNDEuNC0xMTAuOWMtMS4xLS44LTIuOC0xLjQtNC4yLTEuNC0yLjIgMC00LjIuOC01LjYgMS45LTEuOSAxLjctMy4xIDQuMi0zLjMgNi43di44bC0zLjMgMTc2LjcgMS43IDMyLjUgMS43IDMxLjdjLjMgNC43IDQuMiA4LjYgOC45IDguNnM4LjYtMy45IDguNi04LjZsMy45LTY0LjItMy45LTE3Ny41Yy0uNC0zLTItNS44LTQuNS03LjJ6bS0yNi43IDE1LjNjLTEuNC0uOC0yLjgtMS40LTQuNC0xLjRzLTMuMS42LTQuNCAxLjRjLTIuMiAxLjQtMy42IDMuOS0zLjYgNi43bC0uMyAxLjctMi44IDE2MC44czAgLjMgMy4xIDY1LjZ2LjNjMCAxLjcuNiAzLjMgMS43IDQuNyAxLjcgMS45IDMuOSAzLjEgNi40IDMuMSAyLjIgMCA0LjItMS4xIDUuNi0yLjUgMS43LTEuNCAyLjUtMy4zIDIuNS01LjZsLjMtNi43IDMuMS01OC42LTMuMy0xNjIuOGMtLjMtMi44LTEuNy01LjMtMy45LTYuN3ptLTExMS40IDIyLjVjLTMuMSAwLTUuOCAyLjgtNS44IDYuMWwtNC40IDE0MC42IDQuNCA2Ny4yYy4zIDMuMyAyLjggNS44IDUuOCA1LjggMy4zIDAgNS44LTIuNSA2LjEtNS44bDUtNjcuMi01LTE0MC42Yy0uMi0zLjMtMi43LTYuMS02LjEtNi4xem0zNzYuNyA2Mi44Yy0xMC44IDAtMjEuMSAyLjItMzAuNiA2LjEtNi40LTcwLjgtNjUuOC0xMjYuNC0xMzguMy0xMjYuNC0xNy44IDAtMzUgMy4zLTUwLjMgOS40LTYuMSAyLjItNy44IDQuNC03LjggOS4ydjI0OS43YzAgNSAzLjkgOC42IDguNiA5LjJoMjE4LjNjNDMuMyAwIDc4LjYtMzUgNzguNi03OC4zLjEtNDMuNi0zNS4yLTc4LjktNzguNS03OC45em0tMjk2LjctNjAuM2MtNC4yIDAtNy41IDMuMy03LjggNy44bC0zLjMgMTM2LjcgMy4zIDY1LjZjLjMgNC4yIDMuNiA3LjUgNy44IDcuNSA0LjIgMCA3LjUtMy4zIDcuNS03LjVsMy45LTY1LjYtMy45LTEzNi43Yy0uMy00LjUtMy4zLTcuOC03LjUtNy44em0tNTMuNi03LjhjLTMuMyAwLTYuNCAzLjEtNi40IDYuN2wtMy45IDE0NS4zIDMuOSA2Ni45Yy4zIDMuNiAzLjEgNi40IDYuNCA2LjQgMy42IDAgNi40LTIuOCA2LjctNi40bDQuNC02Ni45LTQuNC0xNDUuM2MtLjMtMy42LTMuMS02LjctNi43LTYuN3ptMjYuNyAzLjRjLTMuOSAwLTYuOSAzLjEtNi45IDYuOUwyMjcgMzIxLjNsMy45IDY2LjRjLjMgMy45IDMuMSA2LjkgNi45IDYuOXM2LjktMy4xIDYuOS02LjlsNC4yLTY2LjQtNC4yLTE0MS43YzAtMy45LTMtNi45LTYuOS02Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvdXJjZXRyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI3LjIgMjAzYzAtMTEyLjEtOTAuOS0yMDMtMjAzLTIwM0MxMTIuMS0uMiAyMS4yIDkwLjYgMjEgMjAyLjZBMjAyLjg2IDIwMi44NiAwIDAgMCAxNjEuNSAzOTZ2MTAxLjdhMTQuMyAxNC4zIDAgMCAwIDE0LjMgMTQuM2g5Ni40YTE0LjMgMTQuMyAwIDAgMCAxNC4zLTE0LjNWMzk2LjFBMjAzLjE4IDIwMy4xOCAwIDAgMCA0MjcuMiAyMDN6bS0yNzEuNiAwYzAtOTAuOCAxMzcuMy05MC44IDEzNy4zIDAtLjEgODkuOS0xMzcuMyA5MS0xMzcuMyAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGFjZUF3ZXNvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMjU2SDEyOFY1MTJIMFYzNTJIMzJWMzIwSDY0VjI4OEg5NlYyNTZ6TTUxMiAzNTJWNTEySDM4NFYyNTZINDE2VjI4OEg0NDhWMzIwSDQ4MFYzNTJINTEyek0zMjAgNjRIMzUyVjQ0OEgzMjBWNDE2SDE5MlY0NDhIMTYwVjY0SDE5MlYzMkgyMjRWMEgyODhWMzJIMzIwVjY0ek0yODggMTI4SDIyNFYxOTJIMjg4VjEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BlYWthcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzOTEuNzhDLTE1LjQxIDMwMy41OS04IDE2Ny40MiA4MC42NCA4Ny42NHMyMjQuOC03MyAzMDQuMjEgMTUuMjQgNzIgMjI0LjM2LTE2LjY0IDMwNC4xNGMtMTguNzQgMTYuODcgNjQgNDMuMDkgNDIgNTIuMjYtODIuMDYgMzQuMjEtMjUzLjkxIDM1LTM0Ni4yMy02Ny41em0yMTMuMzEtMjExLjZsMzguNS00MC44NmMtOS42MS04Ljg5LTMyLTI2LjgzLTc2LjE3LTI3LjYtNTIuMzMtLjkxLTk1Ljg2IDI4LjMtOTYuNzcgODAtLjIgMTEuMzMuMjkgMzYuNzIgMjkuNDIgNTQuODMgMzQuNDYgMjEuNDIgODYuNTIgMjEuNTEgODYgNTIuMjYtLjM3IDIxLjI4LTI2LjQyIDI1LjgxLTM4LjU5IDI1LjYtMy0uMDUtMzAuMjMtLjQ2LTQ3LjYxLTI0LjYybC00MCA0Mi42MWMyOC4xNiAyNyA1OSAzMi42MiA4My40OSAzMy4wNSAxMC4yMy4xOCA5Ni40Mi4zMyA5Ny44NC04MSAuMjgtMTUuODEtMi4wNy0zOS43Mi0yOC44Ni01Ni41OS0zNC4zNi0yMS42NC04NS0xOS40NS04NC40My00OS43NS40MS0yMy4yNSAzMS0yNS4zNyAzNy41My0yNS4yNi40MyAwIDI2LjYyLjI2IDM5LjYyIDE3LjM3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGVha2VyRGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTMuODYgMjk2SDEwMGExMDAgMTAwIDAgMCAxIDAtMjAwaDEzMi44NGE0MCA0MCAwIDAgMSAwIDgwSDk4Yy0yNi40NyAwLTI2LjQ1IDQwIDAgNDBoMTEzLjgyYTEwMCAxMDAgMCAwIDEgMCAyMDBINDBhNDAgNDAgMCAwIDEgMC04MGgxNzMuODZjMjYuNDggMCAyNi40Ni00MCAwLTQwek0yOTggNDE2YTEyMC4yMSAxMjAuMjEgMCAwIDAgNTEuMTEtODBoNjQuNTVhMTkuODMgMTkuODMgMCAwIDAgMTkuNjYtMjBWMTk2YTE5LjgzIDE5LjgzIDAgMCAwLTE5LjY2LTIwSDI5Ni40MmE2MC43NyA2MC43NyAwIDAgMCAwLTgwaDEzNi45M2M0My40NCAwIDc4LjY1IDM1LjgyIDc4LjY1IDgwdjE2MGMwIDQ0LjE4LTM1LjIxIDgwLTc4LjY1IDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcG90aWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4xIDggMCAxMTkuMSAwIDI1NnMxMTEuMSAyNDggMjQ4IDI0OCAyNDgtMTExLjEgMjQ4LTI0OFMzODQuOSA4IDI0OCA4em0xMDAuNyAzNjQuOWMtNC4yIDAtNi44LTEuMy0xMC43LTMuNi02Mi40LTM3LjYtMTM1LTM5LjItMjA2LjctMjQuNS0zLjkgMS05IDIuNi0xMS45IDIuNi05LjcgMC0xNS44LTcuNy0xNS44LTE1LjggMC0xMC4zIDYuMS0xNS4yIDEzLjYtMTYuOCA4MS45LTE4LjEgMTY1LjYtMTYuNSAyMzcgMjYuMiA2LjEgMy45IDkuNyA3LjQgOS43IDE2LjVzLTcuMSAxNS40LTE1LjIgMTUuNHptMjYuOS02NS42Yy01LjIgMC04LjctMi4zLTEyLjMtNC4yLTYyLjUtMzctMTU1LjctNTEuOS0yMzguNi0yOS40LTQuOCAxLjMtNy40IDIuNi0xMS45IDIuNi0xMC43IDAtMTkuNC04LjctMTkuNC0xOS40czUuMi0xNy44IDE1LjUtMjAuN2MyNy44LTcuOCA1Ni4yLTEzLjYgOTcuOC0xMy42IDY0LjkgMCAxMjcuNiAxNi4xIDE3NyA0NS41IDguMSA0LjggMTEuMyAxMSAxMS4zIDE5LjctLjEgMTAuOC04LjUgMTkuNS0xOS40IDE5LjV6bTMxLTc2LjJjLTUuMiAwLTguNC0xLjMtMTIuOS0zLjktNzEuMi00Mi41LTE5OC41LTUyLjctMjgwLjktMjkuNy0zLjYgMS04LjEgMi42LTEyLjkgMi42LTEzLjIgMC0yMy4zLTEwLjMtMjMuMy0yMy42IDAtMTMuNiA4LjQtMjEuMyAxNy40LTIzLjkgMzUuMi0xMC4zIDc0LjYtMTUuMiAxMTcuNS0xNS4yIDczIDAgMTQ5LjUgMTUuMiAyMDUuNCA0Ny44IDcuOCA0LjUgMTIuOSAxMC43IDEyLjkgMjIuNiAwIDEzLjYtMTEgMjMuMy0yMy4yIDIzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUJlaGFuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU1LjMgMzE4LjRjMTcuMiAwIDMxLjItNi4xIDMxLjItMjUuNGMwLTE5LjctMTEuNy0yNy40LTMwLjMtMjcuNWgtNDZ2NTIuOWg0NS4xem0tNS40LTEyOS42SDExMC4zdjQ0LjhIMTUzYzE1LjEgMCAyNS44LTYuNiAyNS44LTIyLjljMC0xNy43LTEzLjctMjEuOS0yOC45LTIxLjl6bTEyOS41IDc0LjhoNjIuMmMtMS43LTE4LjUtMTEuMy0yOS43LTMwLjUtMjkuN2MtMTguMyAwLTMwLjUgMTEuNC0zMS43IDI5Ljd6TTM4NCAzMkg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTM0OS41IDE4NUgyNzEuN1YxNjYuMWg3Ny44VjE4NXpNMTkzLjcgMjQzLjdjMjMuNiA2LjcgMzUgMjcuNSAzNSA1MS42YzAgMzktMzIuNyA1NS43LTY3LjYgNTUuOUg2OHYtMTkyaDkwLjVjMzIuOSAwIDYxLjQgOS4zIDYxLjQgNDcuNWMwIDE5LjMtOSAyOC44LTI2LjIgMzd6bTExOC43LTM4LjZjNDMuNSAwIDY3LjYgMzQuMyA2Ny42IDc1LjRjMCAxLjYtLjEgMy4zLS4yIDVjMCAuOC0uMSAxLjUtLjEgMi4ySDI3OS41YzAgMjIuMiAxMS43IDM1LjMgMzQuMSAzNS4zYzExLjYgMCAyNi41LTYuMiAzMC4yLTE4LjFoMzMuN2MtMTAuNCAzMS45LTMxLjkgNDYuOC02NS4xIDQ2LjhjLTQzLjggMC03MS4xLTI5LjctNzEuMS03M2MwLTQxLjggMjguNy03My42IDcxLjEtNzMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlRHJpYmJibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY1LjkgMTMyLjVjLTM4LjMgMTgtNjYuOCA1My4zLTc1LjcgOTUuN2M2LjEgLjEgNjIuNCAuMyAxMjYuNC0xNi43Yy0yMi43LTQwLjItNDcuMS03NC4xLTUwLjctNzl6bTI2LjEtOS4xYzMuOCA1LjEgMjguNiAzOC45IDUxIDgwYzQ4LjYtMTguMyA2OS4xLTQ1LjkgNzEuNi00OS40QzI4MSAxMjQuMiAyMzUuMyAxMTIuOSAxOTIgMTIzLjR6TTI3Ny40IDM4MmMtMi0xMi0xMC01My44LTI5LjItMTAzLjZjLTU1LjEgMTguOC05My44IDU2LjQtMTA4LjEgODUuNmM0MC41IDMxLjYgOTMuMyAzNi43IDEzNy4zIDE4ek0yMjcuOCAyMzIuNkMxNTkuNiAyNTMgOTMuNCAyNTIuMiA4Ny40IDI1MmMwIC43IDAgMS40IDAgMi4xczAgMS40IDAgMi4xYzAgMzUuMSAxMy4zIDY3LjEgMzUuMSA5MS40YzIyLjItMzcuOSA2Ny4xLTc3LjkgMTE2LjUtOTEuOGMtMy40LTcuOC03LjItMTUuNS0xMS4xLTIzLjJ6bTcyLjUgMTM2LjljMzAuNy0yMC43IDUyLjUtNTMuNiA1OC42LTkxLjZjLTQuNi0xLjUtNDIuMy0xMi43LTg1LjEtNS44YzE3LjkgNDkuMSAyNS4xIDg5LjEgMjYuNSA5Ny40em0tMzQuOC0xMTljNDUuNS01LjcgOTAuNyAzLjQgOTUuMiA0LjRjLS4zLTMyLjMtMTEuOC02MS45LTMwLjktODUuMWMtMi45IDMuOS0yNS44IDMzLjItNzYuMyA1My45YzQuOCA5LjggOC4zIDE3LjggMTIgMjYuOHpNMzg0IDMySDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NHpNMjI0IDQxNmExNjAgMTYwIDAgMSAxIDAtMzIwIDE2MCAxNjAgMCAxIDEgMCAzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUZhY2Vib29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0aDk4LjJWMzM0LjJIMTA5LjRWMjU2aDUyLjhWMjIyLjNjMC04Ny4xIDM5LjQtMTI3LjUgMTI1LTEyNy41YzE2LjIgMCA0NC4yIDMuMiA1NS43IDYuNFYxNzJjLTYtLjYtMTYuNS0xLTI5LjYtMWMtNDIgMC01OC4yIDE1LjktNTguMiA1Ny4yVjI1Nmg4My42bC0xNC40IDc4LjJIMjU1VjQ4MEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUZvbnRBd2Vzb21lU3Ryb2tlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDY0QzQ2LjMgNjQgMzIgNzguMyAzMiA5NmwwIDMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwzMjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTMyMGMwLTE3LjctMTQuMy0zMi0zMi0zMkw2NCA2NHpNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZ6bTE1NCA1OGMwIDkuMy00LjggMTcuNC0xMi4xIDIybDE4OC45IDBjNy4zIDAgMTMuMiA1LjkgMTMuMiAxMy4yYzAgMS44LS40IDMuNy0xLjEgNS40TDMxMiAyNjRsMzAuOSA2OS40Yy44IDEuNyAxLjEgMy41IDEuMSA1LjRjMCA3LjMtNS45IDEzLjItMTMuMiAxMy4yTDE0NCAzNTJsMCAzMi0zMiAwIDAtMzIgMC0xNzYgMC0xLjVjLTYuMS00LjgtMTAtMTIuMi0xMC0yMC41YzAtMTQuNCAxMS42LTI2IDI2LTI2czI2IDExLjYgMjYgMjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUZvbnRBd2Vzb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6bTkwIDEyMmMwIDkuMy00LjggMTcuNC0xMi4xIDIybDE4OC45IDBjNy4zIDAgMTMuMiA1LjkgMTMuMiAxMy4yYzAgMS44LS40IDMuNy0xLjEgNS40TDMxMiAyNjRsMzAuOSA2OS40Yy43IDEuNyAxLjEgMy41IDEuMSA1LjRjMCA3LjMtNS45IDEzLjItMTMuMiAxMy4yTDE0NCAzNTJsMCAzMi0zMiAwIDAtMzIgMC0xNzYgMC0xLjVjLTYuMS00LjgtMTAtMTIuMi0xMC0yMC41YzAtMTQuNCAxMS42LTI2IDI2LTI2czI2IDExLjYgMjYgMjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUdpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjAuOCAzMzUuNWMtNS45LS40LTEyLjYtLjgtMjAuMi0xLjNjLTMuMyA0LjEtNi42IDguNC02LjYgMTMuNWMwIDE4LjUgNjUuNSAxOC41IDY1LjUtMS41YzAtOC4zLTcuNC04LjctMzguOC0xMC43em03LjgtMTE3LjljLTMyLjMgMC0zMy43IDQ0LjUtLjcgNDQuNWMzMi41IDAgMzEuNy00NC41IC43LTQ0LjV6TTM4NCAzMkg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTI0My45IDE3Mi4yYy0xNC41IDAtMjIuOS04LjQtMjIuOS0yMi45YzAtMTQuNSA4LjQtMjIuMyAyMi45LTIyLjNjMTQuNyAwIDIzLjEgNy44IDIzLjEgMjIuM3MtOC40IDIyLjktMjMuMSAyMi45ek0xNDkuNiAxOTVoNDkuNWwwIDIxLjYtMjMuNCAxLjhjNC42IDUuOCA5LjQgMTQgOS40IDI1LjdjMCA0OC43LTU3LjIgNDcuMi03NC4yIDQyLjRsLTguNCAxMy40YzUgLjMgOS44IC42IDE0LjMgLjhjNTYuMyAzLjIgODAuNSA0LjYgODAuNSAzOC41YzAgMjkuMi0yNS43IDQ1LjctNjkuOSA0NS43Yy00NiAwLTYzLjUtMTEuNi02My41LTMxLjdjMC0xMS40IDUuMS0xNy41IDE0LTI1LjljLTguNC0zLjUtMTEuMi05LjktMTEuMi0xNi44YzAtOS42IDcuNC0xNi4zIDIzLTMwLjZsLjItLjJjLTEyLjQtNi4xLTIxLjgtMTkuMy0yMS44LTM4LjFjMC01MS42IDU2LjYtNTMuMyA4MS42LTQ2Ljh6TTI3MC41IDMwMy4xbDEzIDEuOCAwIDIwLjFIMjExLjFWMzA0LjljMi43LS40IDUtLjcgNi45LS45YzkuOS0xLjIgMTAuMS0xLjMgMTAuMS02VjIyMy4zYzAtNC40LS45LTQuNy0xMC4xLTcuOGMtMS45LS43LTQuMi0xLjQtNi45LTIuNGwyLjgtMjAuNmg1Mi42VjI5OGMwIDQuMSAuMiA0LjYgNC4xIDUuMXptMTA2LjYtMTAuNEwzODQgMzE1Yy0xMC45IDUuNC0yNi45IDEwLjItNDEuNCAxMC4yYy0zMC4yIDAtNDEuNy0xMi4yLTQxLjctNDAuOVYyMTcuN2MwLS44IDAtMS40LS4yLTEuOGMtLjgtMS4yLTQuMi0uNy0xOS42LS43VjE5Mi42YzIyLjMtMi41IDMxLjItMTMuNyAzNC00MS40aDI0LjJjMCAzMy4zLS42IDM4IC43IDM4LjZjLjMgLjEgLjcgMCAxLjMgMGgzNS44djI1LjRIMzM5LjN2NjAuN2MwIC4yIDAgLjUgMCAuOWMtLjIgNi4zLS45IDMwLjQgMzcuOSAxNS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVHaXRodWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NnpNMjY1LjggNDA3LjdjMC0xLjggMC02IC4xLTExLjZjLjEtMTEuNCAuMS0yOC44IC4xLTQzLjdjMC0xNS42LTUuMi0yNS41LTExLjMtMzAuN2MzNy00LjEgNzYtOS4yIDc2LTczLjFjMC0xOC4yLTYuNS0yNy4zLTE3LjEtMzljMS43LTQuMyA3LjQtMjItMS43LTQ1Yy0xMy45LTQuMy00NS43IDE3LjktNDUuNyAxNy45Yy0xMy4yLTMuNy0yNy41LTUuNi00MS42LTUuNnMtMjguNCAxLjktNDEuNiA1LjZjMCAwLTMxLjgtMjIuMi00NS43LTE3LjljLTkuMSAyMi45LTMuNSA0MC42LTEuNyA0NWMtMTAuNiAxMS43LTE1LjYgMjAuOC0xNS42IDM5YzAgNjMuNiAzNy4zIDY5IDc0LjMgNzMuMWMtNC44IDQuMy05LjEgMTEuNy0xMC42IDIyLjNjLTkuNSA0LjMtMzMuOCAxMS43LTQ4LjMtMTMuOWMtOS4xLTE1LjgtMjUuNS0xNy4xLTI1LjUtMTcuMWMtMTYuMi0uMi0xLjEgMTAuMi0xLjEgMTAuMmMxMC44IDUgMTguNCAyNC4yIDE4LjQgMjQuMmM5LjcgMjkuNyA1Ni4xIDE5LjcgNTYuMSAxOS43YzAgOSAuMSAyMS43IC4xIDMwLjZjMCA0LjggLjEgOC42IC4xIDEwYzAgNC4zLTMgOS41LTExLjUgOEMxMDYgMzkzLjYgNTkuOCAzMzAuOCA1OS44IDI1Ny40YzAtOTEuOCA3MC4yLTE2MS41IDE2Mi0xNjEuNXMxNjYuMiA2OS43IDE2Ni4yIDE2MS41Yy4xIDczLjQtNDQuNyAxMzYuMy0xMTAuNyAxNTguM2MtOC40IDEuNS0xMS41LTMuNy0xMS41LTh6bS05MC41LTU0LjhjLS4yLTEuNSAxLjEtMi44IDMtMy4yYzEuOS0uMiAzLjcgLjYgMy45IDEuOWMuMyAxLjMtMSAyLjYtMyAzYy0xLjkgLjQtMy43LS40LTMuOS0xLjd6bS05LjEgMy4yYy0yLjIgLjItMy43LS45LTMuNy0yLjRjMC0xLjMgMS41LTIuNCAzLjUtMi40YzEuOS0uMiAzLjcgLjkgMy43IDIuNGMwIDEuMy0xLjUgMi40LTMuNSAyLjR6bS0xNC4zLTIuMmMtMS45LS40LTMuMi0xLjktMi44LTMuMnMyLjQtMS45IDQuMS0xLjVjMiAuNiAzLjMgMi4xIDIuOCAzLjRjLS40IDEuMy0yLjQgMS45LTQuMSAxLjN6bS0xMi41LTcuM2MtMS41LTEuMy0xLjktMy4yLS45LTQuMWMuOS0xLjEgMi44LS45IDQuMyAuNmMxLjMgMS4zIDEuOCAzLjMgLjkgNC4xYy0uOSAxLjEtMi44IC45LTQuMy0uNnptLTguNS0xMGMtMS4xLTEuNS0xLjEtMy4yIDAtMy45YzEuMS0uOSAyLjgtLjIgMy43IDEuM2MxLjEgMS41IDEuMSAzLjMgMCA0LjFjLS45IC42LTIuNiAwLTMuNy0xLjV6bS02LjMtOC44Yy0xLjEtMS4zLTEuMy0yLjgtLjQtMy41Yy45LS45IDIuNC0uNCAzLjUgLjZjMS4xIDEuMyAxLjMgMi44IC40IDMuNWMtLjkgLjktMi40IC40LTMuNS0uNnptLTYtNi40Yy0xLjMtLjYtMS45LTEuNy0xLjUtMi42Yy40LS42IDEuNS0uOSAyLjgtLjRjMS4zIC43IDEuOSAxLjggMS41IDIuNmMtLjQgLjktMS43IDEuMS0yLjggLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUdpdGxhYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NnptMzM3LjUgMTIuNWw0NC42IDExNi40IC40IDEuMmM1LjYgMTYuOCA3LjIgMzUuMiAyLjMgNTIuNWMtNSAxNy4yLTE1LjQgMzIuNC0yOS44IDQzLjNsLS4yIC4xLTY4LjQgNTEuMi01NC4xIDQwLjljLS41IC4yLTEuMSAuNS0xLjcgLjhjLTIgMS00LjQgMi02LjcgMmMtMyAwLTYuOC0xLjgtOC4zLTIuOGwtNTQuMi00MC45TDkzLjUgMzIyLjNsLS40LS4zLS4yLS4xYy0xNC4zLTEwLjgtMjQuOC0yNi0yOS43LTQzLjNzLTQuMi0zNS43IDIuMi01Mi41bC41LTEuMiA0NC43LTExNi40Yy45LTIuMyAyLjUtNC4zIDQuNS01LjZjMS42LTEgMy40LTEuNiA1LjItMS44YzEuMy0uNyAyLjEtLjQgMy40IC4xYy42IC4yIDEuMiAuNSAyIC43YzEgLjQgMS42IC45IDIuNCAxLjVjLjYgLjQgMS4yIDEgMi4xIDEuNWMxLjIgMS40IDIuMiAzIDIuNyA0LjhsMjkuMiA5Mi4ySDI4NWwzMC4yLTkyLjJjLjUtMS44IDEuNC0zLjQgMi42LTQuOHMyLjgtMi40IDQuNS0zLjFjMS43LS42IDMuNi0uOSA1LjQtLjdzMy42IC44IDUuMiAxLjhjMiAxLjMgMy43IDMuMyA0LjYgNS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVHb29nbGVQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZ6TTY0IDI1NmMwLTU1LjMgNDQuNy0xMDAgMTAwLTEwMGMyNyAwIDQ5LjUgOS44IDY3IDI2LjJsLTI3LjEgMjYuMWMtNy40LTcuMS0yMC4zLTE1LjQtMzkuOC0xNS40Yy0zNC4xIDAtNjEuOSAyOC4yLTYxLjkgNjMuMmMwIDM0LjkgMjcuOCA2My4yIDYxLjkgNjMuMmMzOS42IDAgNTQuNC0yOC41IDU2LjgtNDMuMUgxNjRWMjQxLjhoOTQuNGMxIDUgMS42IDEwLjEgMS42IDE2LjZjMCA1Ny4xLTM4LjMgOTcuNi05NiA5Ny42Yy01NS4zIDAtMTAwLTQ0LjctMTAwLTEwMHptMjkxIDE4LjJ2MjlIMzI1Ljh2LTI5aC0yOVYyNDVoMjlWMjE2SDM1NXYyOWgyOXYyOS4ySDM1NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlSGFja2VyTmV3cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0yMSAyMjkuMmMwIDAgLjEtLjEgLjEtLjJzLjEtLjIgLjItLjJjMCAuMSAwIC4zLS4xIC40SDIxek0yMzkuMiAzODRIMjA3LjhWMjgxLjNMMTI4IDEyOGgzNy4zYzQxLjUgNzcuNyA0OC4xIDk1LjggNTQuMSAxMTJjMS42IDQuMyAzLjEgOC41IDUuMiAxMy42YzMuMi03IDUuMS0xMS45IDcuMS0xNy4zYzUuOS0xNS4zIDEyLjgtMzMuMiA1My41LTEwOC4zSDMyMEwyMzkuMiAyODMuMVYzODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUluc3RhZ3JhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTQuNCAyMTEuN2E1My4zIDUzLjMgMCAxIDAgNTkuMyA4OC43IDUzLjMgNTMuMyAwIDEgMCAtNTkuMy04OC43em0xNDIuMy02OC40Yy01LjItNS4yLTExLjUtOS4zLTE4LjQtMTJjLTE4LjEtNy4xLTU3LjYtNi44LTgzLjEtNi41Yy00LjEgMC03LjkgLjEtMTEuMiAuMWMtMy4zIDAtNy4yIDAtMTEuNC0uMWMtMjUuNS0uMy02NC44LS43LTgyLjkgNi41Yy02LjkgMi43LTEzLjEgNi44LTE4LjQgMTJzLTkuMyAxMS41LTEyIDE4LjRjLTcuMSAxOC4xLTYuNyA1Ny43LTYuNSA4My4yYzAgNC4xIC4xIDcuOSAuMSAxMS4xczAgNy0uMSAxMS4xYy0uMiAyNS41LS42IDY1LjEgNi41IDgzLjJjMi43IDYuOSA2LjggMTMuMSAxMiAxOC40czExLjUgOS4zIDE4LjQgMTJjMTguMSA3LjEgNTcuNiA2LjggODMuMSA2LjVjNC4xIDAgNy45LS4xIDExLjItLjFjMy4zIDAgNy4yIDAgMTEuNCAuMWMyNS41IC4zIDY0LjggLjcgODIuOS02LjVjNi45LTIuNyAxMy4xLTYuOCAxOC40LTEyczkuMy0xMS41IDEyLTE4LjRjNy4yLTE4IDYuOC01Ny40IDYuNS04M2MwLTQuMi0uMS04LjEtLjEtMTEuNHMwLTcuMSAuMS0xMS40Yy4zLTI1LjUgLjctNjQuOS02LjUtODNsMCAwYy0yLjctNi45LTYuOC0xMy4xLTEyLTE4LjR6bS02Ny4xIDQ0LjVBODIgODIgMCAxIDEgMTc4LjQgMzI0LjJhODIgODIgMCAxIDEgOTEuMS0xMzYuNHptMjkuMi0xLjNjLTMuMS0yLjEtNS42LTUuMS03LjEtOC42cy0xLjgtNy4zLTEuMS0xMS4xczIuNi03LjEgNS4yLTkuOHM2LjEtNC41IDkuOC01LjJzNy42LS40IDExLjEgMS4xczYuNSAzLjkgOC42IDdzMy4yIDYuOCAzLjIgMTAuNmMwIDIuNS0uNSA1LTEuNCA3LjNzLTIuNCA0LjQtNC4xIDYuMnMtMy45IDMuMi02LjIgNC4ycy00LjggMS41LTcuMyAxLjVsMCAwYy0zLjggMC03LjUtMS4xLTEwLjYtMy4yek00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0zNTcgMzg5Yy0xOC43IDE4LjctNDEuNCAyNC42LTY3IDI1LjljLTI2LjQgMS41LTEwNS42IDEuNS0xMzIgMGMtMjUuNi0xLjMtNDguMy03LjItNjctMjUuOXMtMjQuNi00MS40LTI1LjgtNjdjLTEuNS0yNi40LTEuNS0xMDUuNiAwLTEzMmMxLjMtMjUuNiA3LjEtNDguMyAyNS44LTY3czQxLjUtMjQuNiA2Ny0yNS44YzI2LjQtMS41IDEwNS42LTEuNSAxMzIgMGMyNS42IDEuMyA0OC4zIDcuMSA2NyAyNS44czI0LjYgNDEuNCAyNS44IDY3YzEuNSAyNi4zIDEuNSAxMDUuNCAwIDEzMS45Yy0xLjMgMjUuNi03LjEgNDguMy0yNS44IDY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVKcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0xODAuOSA0NDQuOWMtMzMuNyAwLTUzLjItMTcuNC02My4yLTM4LjVMMTUyIDM4NS43YzYuNiAxMS43IDEyLjYgMjEuNiAyNy4xIDIxLjZjMTMuOCAwIDIyLjYtNS40IDIyLjYtMjYuNVYyMzcuN2g0Mi4xVjM4MS40YzAgNDMuNi0yNS42IDYzLjUtNjIuOSA2My41em04NS44LTQzTDMwMSAzODIuMWM5IDE0LjcgMjAuOCAyNS42IDQxLjUgMjUuNmMxNy40IDAgMjguNi04LjcgMjguNi0yMC44YzAtMTQuNC0xMS40LTE5LjUtMzAuNy0yOGwtMTAuNS00LjVjLTMwLjQtMTIuOS01MC41LTI5LjItNTAuNS02My41YzAtMzEuNiAyNC4xLTU1LjYgNjEuNi01NS42YzI2LjggMCA0NiA5LjMgNTkuOCAzMy43TDM2OCAyOTBjLTcuMi0xMi45LTE1LTE4LTI3LjEtMThjLTEyLjMgMC0yMC4xIDcuOC0yMC4xIDE4YzAgMTIuNiA3LjggMTcuNyAyNS45IDI1LjZsMTAuNSA0LjVjMzUuOCAxNS4zIDU1LjkgMzEgNTUuOSA2Ni4yYzAgMzcuOC0yOS44IDU4LjYtNjkuNyA1OC42Yy0zOS4xIDAtNjQuNC0xOC42LTc2LjctNDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUxhc3RmbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0yMTAuNyAyODAuOGMtMS44LTUuNS0zLjQtMTAuOC01LTE1LjljLTEyLjktNDEuOS0yMS02OC40LTU4LTY4LjRjLTIyLjQgMC00NS4xIDE2LjEtNDUuMSA2MS4yYzAgMzUuMiAxOCA1Ny4yIDQzLjMgNTcuMmMyOC42IDAgNDcuNi0yMS4zIDQ3LjYtMjEuM2wxMS43IDMxLjlzLTE5LjggMTkuNC02MS4yIDE5LjRjLTUxLjMgMC03OS45LTMwLjEtNzkuOS04NS44YzAtNTcuOSAyOC42LTkyIDgyLjUtOTJjNjcuOSAwIDc5LjMgMzUuMyA5Ni40IDg4LjRjMS40IDQuNCAyLjkgOC45IDQuNCAxMy41YzguOCAyNi44IDI0LjIgNDYuMiA2MS4yIDQ2LjJjMjQuOSAwIDM4LjEtNS41IDM4LjEtMTkuMWMwLTE3LjUtMTYuOS0yMS4yLTQwLTI2LjRjLTMuMi0uNy02LjUtMS40LTkuOS0yLjJjLTMwLjQtNy4zLTQyLjUtMjMuMS00Mi41LTQ4YzAtNDAgMzIuMy01Mi40IDY1LjItNTIuNGMzNy40IDAgNjAuMSAxMy42IDYzIDQ2LjZsLTM2LjcgNC40Yy0xLjUtMTUuOC0xMS0yMi40LTI4LjYtMjIuNGMtMTYuMSAwLTI2IDcuMy0yNiAxOS44YzAgMTEgNC44IDE3LjYgMjAuOSAyMS4zYzIuMiAuNSA0LjUgMSA2LjcgMS40YzMxLjEgNi41IDY1LjEgMTMuNyA2NS4xIDU2LjFjLjEgMzYuNy0zMC43IDUwLjYtNzYuMSA1MC42Yy02My40IDAtODUuNC0yOC42LTk3LjEtNjQuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlTGV0dGVyYm94ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgzODR6TTEwNS4xIDE4N0M2Ni40IDE4NyAzNSAyMTguMyAzNSAyNTdzMzEuNCA3MCA3MC4xIDcwYzI0LjggMCA0Ni41LTEyLjggNTktMzIuMmwuNS0uNy0uNC0uNmMtNi41LTEwLjYtMTAuMi0yMy4xLTEwLjItMzYuNWMwLTEzLjYgMy45LTI2LjMgMTAuNi0zNy4xYy0xMi40LTE5LjgtMzQuNC0zMi45LTU5LjUtMzIuOXpNMjI0IDE4N2MtMjQuOCAwLTQ2LjUgMTIuOC01OSAzMi4ybC0uNSAuNyAuNCAuNmM2LjUgMTAuNiAxMC4yIDIzLjEgMTAuMiAzNi41YzAgMTMuNi0zLjkgMjYuMy0xMC42IDM3LjFDMTc2LjkgMzEzLjggMTk4LjkgMzI3IDIyNCAzMjdjMjQuOCAwIDQ2LjUtMTIuOCA1OS0zMi4ybC41LS43LS40LS42Yy02LjUtMTAuNi0xMC4yLTIzLjEtMTAuMi0zNi41YzAtMTMuNiAzLjktMjYuMyAxMC42LTM3LjFDMjcxLjEgMjAwLjIgMjQ5LjEgMTg3IDIyNCAxODd6bTExOC45IDBjLTI0LjggMC00Ni41IDEyLjgtNTkgMzIuMmwtLjUgLjcgLjQgLjZjNi41IDEwLjYgMTAuMiAyMy4xIDEwLjIgMzYuNWMwIDEzLjYtMy45IDI2LjMtMTAuNiAzNy4xYzEyLjQgMTkuOCAzNC40IDMyLjkgNTkuNSAzMi45YzM4LjcgMCA3MC4xLTMxLjMgNzAuMS03MHMtMzEuNC03MC03MC4xLTcwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVPZG5va2xhc3NuaWtpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzcuMWEzOS45IDM5LjkgMCAxIDAgMCA3OS43IDM5LjkgMzkuOSAwIDEgMCAwLTc5Ljd6TTM4NCAzMkg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTIyNCA5NS45QTgxIDgxIDAgMSAxIDIyNCAyNThhODEgODEgMCAxIDEgMC0xNjIuMXptNTkuMyAxNjguM2MxNi44LTEzLjIgMjkuNS01LjUgMzQuMSAzLjZjNy44IDE2LTEuMSAyMy43LTIxLjUgMzdjLTE3LjEgMTAuOS00MC43IDE1LjItNTYuMiAxNi44bDEzIDEyLjkgNDcuNyA0Ny43YzE3LjQgMTcuOS0xMSA0NS44LTI4LjYgMjguNmMtMTItMTIuMi0yOS41LTI5LjctNDcuNy00Ny45bDAgMC00Ny43IDQ3LjljLTE3LjcgMTcuMi00Ni0xMS0yOC40LTI4LjZjMy43LTMuNyA3LjktNy45IDEyLjUtMTIuNWMxMC40LTEwLjQgMjIuNi0yMi43IDM1LjItMzUuMmwxMi45LTEyLjljLTE1LjQtMS42LTM5LjMtNS43LTU2LjYtMTYuOGMtMjAuMy0xMy4zLTI5LjMtMjAuOS0yMS40LTM3YzQuNi05LjEgMTcuMy0xNi44IDM0LjEtMy42YzAgMCAyMi43IDE4IDU5LjMgMThzNTkuMy0xOCA1OS4zLTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVQaWVkUGlwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNDE5TDAgNDc5LjJsLjgtMzI4Qy44IDg1LjMgNTQgMzIgMTIwIDMyaDMyNy4yYy05MyAyOC45LTE4OS45IDk0LjItMjUzLjkgMTY4LjZDMTIyLjcgMjgyIDgyLjYgMzM4IDMyIDQxOU00NDggMzJTMzA1LjIgOTguOCAyNjEuNiAxOTkuMWMtMjMuMiA1My42LTI4LjkgMTE4LjEtNzEgMTU4LjYtMjguOSAyNy44LTY5LjggMzguMi0xMDUuMyA1Ni4zLTIzLjIgMTItNjYuNCA0MC41LTg0LjkgNjZoMzI4LjRjNjYgMCAxMTkuMy01My4zIDExOS4zLTExOS4yLS4xIDAtLjEtMzI4LjgtLjEtMzI4Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVBpbnRlcmVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzJINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRoNzIuNmwtMi4yLS44Yy01LjQtNDguMS0zLjEtNTcuNSAxNS43LTEzNC43YzMuOS0xNiA4LjUtMzUgMTMuOS01Ny45YzAgMC03LjMtMTQuOC03LjMtMzYuNWMwLTcwLjcgNzUuNS03OCA3NS41LTI1YzAgMTMuNS01LjQgMzEuMS0xMS4yIDQ5LjhjLTMuMyAxMC42LTYuNiAyMS41LTkuMSAzMmMtNS43IDI0LjUgMTIuMyA0NC40IDM2LjQgNDQuNGM0My43IDAgNzcuMi00NiA3Ny4yLTExMi40YzAtNTguOC00Mi4zLTk5LjktMTAyLjYtOTkuOUMxNTMgMTM5IDExMiAxOTEuNCAxMTIgMjQ1LjZjMCAyMS4xIDguMiA0My43IDE4LjMgNTZjMiAyLjQgMi4zIDQuNSAxLjcgN2MtMS4xIDQuNy0zLjEgMTIuOS00LjcgMTkuMmMtMSA0LTEuOCA3LjMtMi4xIDguNmMtMS4xIDQuNS0zLjUgNS41LTguMiAzLjNjLTMwLjYtMTQuMy00OS44LTU5LjEtNDkuOC05NS4xQzY3LjIgMTY3LjEgMTIzLjQgOTYgMjI5LjQgOTZjODUuMiAwIDE1MS40IDYwLjcgMTUxLjQgMTQxLjhjMCA4NC42LTUzLjMgMTUyLjctMTI3LjQgMTUyLjdjLTI0LjkgMC00OC4zLTEyLjktNTYuMy0yOC4yYzAgMC0xMi4zIDQ2LjktMTUuMyA1OC40Yy01IDE5LjMtMTcuNiA0Mi45LTI3LjQgNTkuM0gzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVJlZGRpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMmwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJ6TTMwNS45IDE2Ni40YzIwLjYgMCAzNy4zLTE2LjcgMzcuMy0zNy4zcy0xNi43LTM3LjMtMzcuMy0zNy4zYy0xOCAwLTMzLjEgMTIuOC0zNi42IDI5LjhjLTMwLjIgMy4yLTUzLjggMjguOC01My44IDU5LjlsMCAuMmMtMzIuOCAxLjQtNjIuOCAxMC43LTg2LjYgMjUuNWMtOC44LTYuOC0xOS45LTEwLjktMzItMTAuOWMtMjguOSAwLTUyLjMgMjMuNC01Mi4zIDUyLjNjMCAyMSAxMi4zIDM5IDMwLjEgNDcuNGMxLjcgNjAuNyA2Ny45IDEwOS42IDE0OS4zIDEwOS42czE0Ny42LTQ4LjkgMTQ5LjMtMTA5LjdjMTcuNy04LjQgMjkuOS0yNi40IDI5LjktNDcuM2MwLTI4LjktMjMuNC01Mi4zLTUyLjMtNTIuM2MtMTIgMC0yMyA0LTMxLjkgMTAuOGMtMjQtMTQuOS01NC4zLTI0LjItODcuNS0yNS40bDAtLjFjMC0yMi4yIDE2LjUtNDAuNyAzNy45LTQzLjdsMCAwYzMuOSAxNi41IDE4LjcgMjguNyAzNi4zIDI4Ljd6TTE1NSAyNDguMWMxNC42IDAgMjUuOCAxNS40IDI1IDM0LjRzLTExLjggMjUuOS0yNi41IDI1LjlzLTI3LjUtNy43LTI2LjYtMjYuN3MxMy41LTMzLjUgMjguMS0zMy41em0xNjYuNCAzMy41Yy45IDE5LTEyIDI2LjctMjYuNiAyNi43cy0yNS42LTYuOS0yNi41LTI1LjljLS45LTE5IDEwLjMtMzQuNCAyNS0zNC40czI3LjMgMTQuNiAyOC4xIDMzLjV6bS00Mi4xIDQ5LjZjLTkgMjEuNS0zMC4zIDM2LjctNTUuMSAzNi43cy00Ni4xLTE1LjEtNTUuMS0zNi43Yy0xLjEtMi42IC43LTUuNCAzLjQtNS43YzE2LjEtMS42IDMzLjUtMi41IDUxLjctMi41czM1LjYgLjkgNTEuNyAyLjVjMi43IC4zIDQuNSAzLjEgMy40IDUuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlU25hcGNoYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0LDMySDY0QTY0LDY0LDAsMCwwLDAsOTZWNDE2YTY0LDY0LDAsMCwwLDY0LDY0SDM4NGE2NCw2NCwwLDAsMCw2NC02NFY5NkE2NCw2NCwwLDAsMCwzODQsMzJabS0zLjkwNywzMTkuMzA5LS4wODMuMWEzMi4zNjQsMzIuMzY0LDAsMCwxLTguNzE3LDYuODIzLDkwLjI2LDkwLjI2LDAsMCwxLTIwLjU4Niw4LjIsMTIuNjk0LDEyLjY5NCwwLDAsMC0zLjg1MiwxLjc2Yy0yLjE1OCwxLjkwOS0yLjEsNC42NC00LjQsOC41NWEyMy4xMzcsMjMuMTM3LDAsMCwxLTYuODQsNy40NzFjLTYuNzA3LDQuNjMyLTE0LjI0NCw0LjkyMy0yMi4yMyw1LjIzLTcuMjE0LjI3NC0xNS4zOS41ODEtMjQuNzI5LDMuNjY5LTMuNzYxLDEuMjQ1LTcuNzUzLDMuNjk0LTEyLjM3Nyw2LjUzMy0xMS4yNjUsNi45LTI2LjY4LDE2LjM1My01Mi4zLDE2LjM1M3MtNDAuOTI1LTkuNC01Mi4xMDYtMTYuMjc5Yy00LjY1Ny0yLjg4OC04LjY3NS01LjM2Mi0xMi41NDMtNi42NC05LjMzOS0zLjA4LTE3LjUxNi0zLjQtMjQuNzI5LTMuNjctNy45ODYtLjMwNy0xNS41MjMtLjYtMjIuMjMxLTUuMjI5YTIzLjA4NSwyMy4wODUsMCwwLDEtNi4wMS02LjExYy0zLjItNC42MzItMi44NTUtNy44LTUuMjU0LTkuODk1YTEzLjQyOCwxMy40MjgsMCwwLDAtNC4xLTEuODM0LDg5Ljk4Niw4OS45ODYsMCwwLDEtMjAuMzEzLTguMTI3LDMyLjkwNSwzMi45MDUsMCwwLDEtOC4zLTYuMjg0Yy02LjU4My02Ljc1Ny04LjI3Ni0xNC43NzYtNS42ODYtMjEuODI0LDMuNDM2LTkuMzM4LDExLjU3MS0xMi4xMTEsMTkuNC0xNi4yNjIsMTQuNzc2LTguMDI3LDI2LjM0OC0xOC4wNTUsMzQuNDMzLTI5Ljg4NGE2OC4yMzYsNjguMjM2LDAsMCwwLDUuOTg1LTEwLjU2N2MuNzg5LTIuMTU4Ljc3Mi0zLjMyOS4yNDEtNC40MTZhNy4zODYsNy4zODYsMCwwLDAtMi4yMDgtMi4yMTdjLTIuNTMyLTEuNjc2LTUuMTEzLTMuMzUzLTYuODgyLTQuNS0zLjI3LTIuMTQxLTUuODY4LTMuODE4LTcuNTI5LTQuOTgtNi4yNjctNC4zODMtMTAuNjUtOS4wNC0xMy40LTE0LjI0NWEyOC40LDI4LjQsMCwwLDEtMS4zNjktMjMuNTg0YzQuMTM0LTEwLjkyNCwxNC40NjktMTcuNzA2LDI2Ljk3OC0xNy43MDZhMzcuMTQxLDM3LjE0MSwwLDAsMSw3Ljg0NS44M2MuNjg5LjE1LDEuMzcuMzA3LDIuMDQyLjQ4Mi0uMTA4LTcuNDMuMDU4LTE1LjM1Ny43MjItMjMuMTE5LDIuMzU4LTI3LjI2MSwxMS45MTItNDEuNTg5LDIxLjg3NC01Mi45OTRhODYuODM2LDg2LjgzNiwwLDAsMSwyMi4yOC0xNy45MzFDMTg4LjI1NCwxMDAuMzgzLDIwNS4zMTIsOTYsMjI0LDk2czM1LjgyOCw0LjM4Myw1MC45NDQsMTMuMDE2YTg3LjE2OSw4Ny4xNjksMCwwLDEsMjIuMjM5LDE3LjljOS45NjEsMTEuNDA2LDE5LjUxNiwyNS43MDksMjEuODc0LDUyLjk5NWEyMzEuMTk0LDIzMS4xOTQsMCwwLDEsLjcxMywyMy4xMThjLjY3My0uMTc0LDEuMzYyLS4zMzIsMi4wNTEtLjQ4MWEzNy4xMzEsMzcuMTMxLDAsMCwxLDcuODQ0LS44M2MxMi41LDAsMjIuODIsNi43ODIsMjYuOTcxLDE3LjcwNmEyOC4zNywyOC4zNywwLDAsMS0xLjQsMjMuNTU5Yy0yLjc0LDUuMi03LjEyMyw5Ljg2MS0xMy4zOSwxNC4yNDQtMS42NjgsMS4xODctNC4yNTgsMi44NjQtNy41MjksNC45ODEtMS44MzUsMS4xODctNC41NDEsMi45NDctNy4xNjQsNC42ODJhNi44NTYsNi44NTYsMCwwLDAtMS45NTEsMi4wMzRjLS41MDYsMS4wNDYtLjUzOSwyLjE5MS4xNjYsNC4yMDhhNjkuMDE1LDY5LjAxNSwwLDAsMCw2LjA4NSwxMC43OTJjOC4yNjgsMTIuMSwyMC4xODgsMjIuMzEzLDM1LjQ1NCwzMC40MDcsMS40ODYuNzcyLDIuOTgsMS41LDQuNDQxLDIuMjU4LjcyMi4zMzIsMS41NjkuNzYzLDIuNDkxLDEuMyw0LjksMi43MjMsOS4yLDYuMDEsMTEuNDU1LDEyLjE1M0MzODcuODIxLDMzNi45MTUsMzg2LjI2OSwzNDQuNywzODAuMDkzLDM1MS4zMDlabS0xNi43MTktMTguNDYxYy01MC4zMTMtMjQuMzE0LTU4LjMzMi02MS45MTgtNTguNjg5LTY0Ljc0OS0uNDMxLTMuMzc5LS45MjEtNi4wMzUsMi44MDYtOS40NzIsMy41OTQtMy4zMjgsMTkuNTQxLTEzLjE5LDIzLjk2NS0xNi4yNzgsNy4zMy01LjExNCwxMC41MzQtMTAuMjE5LDguMTYtMTYuNDk1LTEuNjYtNC4zMTYtNS42ODYtNS45NzYtOS45NjEtNS45NzZhMTguNSwxOC41LDAsMCwwLTMuOTkzLjQ0OGMtOC4wMzUsMS43NDMtMTUuODM4LDUuNzY5LTIwLjM1NCw2Ljg1N2E3LjEsNy4xLDAsMCwxLTEuNjYuMjI0Yy0yLjQwOCwwLTMuMjc5LTEuMDcxLTMuMDg4LTMuOTY4LjU2NC04Ljc4MywxLjc1OS0yNS45MjUuMzczLTQxLjkzNy0xLjg4NC0yMi4wMzItOC45OS0zMi45NDgtMTcuNDMyLTQyLjYtNC4wNTEtNC42MjQtMjMuMTM1LTI0LjY1NC01OS41MzYtMjQuNjU0UzE2OC41MywxMzQuMzU5LDE2NC40NzksMTM5Yy04LjQzNCw5LjY1NC0xNS41MzEsMjAuNTctMTcuNDMyLDQyLjYtMS4zODYsMTYuMDEzLS4xNDEsMzMuMTQ3LjM3Myw0MS45MzcuMTY2LDIuNzU2LS42OCwzLjk2OC0zLjA4OCwzLjk2OGE3LjEsNy4xLDAsMCwxLTEuNjYtLjIyNGMtNC41MDctMS4wODctMTIuMzEtNS4xMTMtMjAuMzQ2LTYuODU2YTE4LjQ5NCwxOC40OTQsMCwwLDAtMy45OTMtLjQ0OWMtNC4yNSwwLTguMywxLjYzNi05Ljk2MSw1Ljk3Ny0yLjM3NCw2LjI3Ni44NDcsMTEuMzgxLDguMTY4LDE2LjQ5NCw0LjQyNSwzLjA4OCwyMC4zNzEsMTIuOTU4LDIzLjk2NiwxNi4yNzksMy43MTksMy40MzcsMy4yMzcsNi4wOTMsMi44MDUsOS40NzEtLjM1NiwyLjc5LTguMzg0LDQwLjM5NC01OC42ODksNjQuNzQ5LTIuOTQ2LDEuNDI4LTcuOTYsNC40NS44OCw5LjMzMSwxMy44OCw3LjYyOCwyMy4xMTEsNi44MDcsMzAuMywxMS40Myw2LjA5MywzLjkyNywyLjUsMTIuMzk0LDYuOTIzLDE1LjQ0OSw1LjQ1NCwzLjc2LDIxLjU4My0uMjY2LDQyLjMzNSw2LjYsMTcuNDMzLDUuNzQ0LDI4LjExNiwyMi4wMTUsNTguOTYzLDIyLjAxNXM0MS43ODgtMTYuMyw1OC45MzgtMjEuOTczYzIwLjc5NS02Ljg2NSwzNi44OS0yLjgzOSw0Mi4zMzYtNi42LDQuNDMzLTMuMDU1LjgyMi0xMS41MjIsNi45MjMtMTUuNDQ4LDcuMTgxLTQuNjI0LDE2LjQxMS0zLjgsMzAuMy0xMS40NzJDMzcxLjM2LDMzNy4zNTUsMzY2LjM0NiwzMzQuMzMzLDM2My4zNzQsMzMyLjg0OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlU3RlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY1LjYgMzA5LjFjMTguNiA3LjcgMjcuMyAyOC45IDE5LjYgNDcuNHMtMjkgMjcuMi00Ny42IDE5LjRsLTI4LjUtMTEuOGM1IDEwLjYgMTMuOCAxOS40IDI1LjQgMjQuMmMyNS4yIDEwLjUgNTQuMS0xLjQgNjQuNi0yNi41YzUuMS0xMi4xIDUuMS0yNS41IC4xLTM3LjdjLTUuMS0xMi4xLTE0LjUtMjEuNi0yNi43LTI2LjdjLTEyLjEtNS0yNS00LjgtMzYuNC0uNWwyOS41IDEyLjJ6TTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjI0MC43bDExNi42IDQ4LjFjMTItOC4yIDI2LjItMTIuMSA0MC43LTExLjNsNTUuNC04MC4ydi0xLjFjMC00OC4yIDM5LjMtODcuNSA4Ny42LTg3LjVzODcuNiAzOS4zIDg3LjYgODcuNWMwIDQ5LjItNDAuOSA4OC43LTg5LjYgODcuNWwtNzkgNTYuM2MxLjYgMzguNS0yOS4xIDY4LjgtNjUuNyA2OC44Yy0zMS44IDAtNTguNS0yMi43LTY0LjUtNTIuN0wwIDMxOS4yVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZ6TTI0MS45IDE5Ni4yYTU4LjQgNTguNCAwIDEgMCAxMTYuOCAwIDU4LjQgNTguNCAwIDEgMCAtMTE2LjggMHptMTQuNi0uMWE0My45IDQzLjkgMCAxIDEgODcuOCAwIDQzLjkgNDMuOSAwIDEgMSAtODcuOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVUaHJlYWRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjk0LjIgMjQ0LjNjMTkuNSA5LjMgMzMuNyAyMy41IDQxLjIgNDAuOWMxMC40IDI0LjMgMTEuNCA2My45LTIwLjIgOTUuNGMtMjQuMiAyNC4xLTUzLjUgMzUtOTUuMSAzNS4zaC0uMmMtNDYuOC0uMy04Mi44LTE2LjEtMTA2LjktNDYuOEM5MS41IDM0MS44IDgwLjQgMzAzLjcgODAgMjU2di0uMS0uMWMuNC00Ny43IDExLjUtODUuNyAzMy0xMTMuMWMyNC4yLTMwLjcgNjAuMi00Ni41IDEwNi45LTQ2LjhoLjJjNDYuOSAuMyA4My4zIDE2IDEwOC4yIDQ2LjZjMTIuMyAxNS4xIDIxLjMgMzMuMyAyNyA1NC40bC0yNi45IDcuMmMtNC43LTE3LjItMTEuOS0zMS45LTIxLjQtNDMuNmMtMTkuNC0yMy45LTQ4LjctMzYuMS04Ny0zNi40Yy0zOCAuMy02Ni44IDEyLjUtODUuNSAzNi4yYy0xNy41IDIyLjMtMjYuNiA1NC40LTI2LjkgOTUuNWMuMyA0MS4xIDkuNCA3My4zIDI2LjkgOTUuNWMxOC43IDIzLjggNDcuNCAzNiA4NS41IDM2LjJjMzQuMy0uMyA1Ni45LTguNCA3NS44LTI3LjNjMjEuNS0yMS41IDIxLjEtNDcuOSAxNC4yLTY0Yy00LTkuNC0xMS40LTE3LjMtMjEuMy0yMy4zYy0yLjQgMTgtNy45IDMyLjItMTYuNSA0My4yYy0xMS40IDE0LjUtMjcuNyAyMi40LTQ4LjQgMjMuNWMtMTUuNyAuOS0zMC44LTIuOS00Mi42LTEwLjdjLTEzLjktOS4yLTIyLTIzLjItMjIuOS0zOS41Yy0xLjctMzIuMiAyMy44LTU1LjMgNjMuNS01Ny42YzE0LjEtLjggMjcuMy0uMiAzOS41IDEuOWMtMS42LTkuOS00LjktMTcuNy05LjgtMjMuNGMtNi43LTcuOC0xNy4xLTExLjgtMzAuOC0xMS45aC0uNGMtMTEgMC0yNiAzLjEtMzUuNiAxNy42bC0yMy0xNS44YzEyLjgtMTkuNCAzMy42LTMwLjEgNTguNS0zMC4xaC42YzQxLjggLjMgNjYuNiAyNi4zIDY5LjEgNzEuOGMxLjQgLjYgMi44IDEuMiA0LjIgMS45bC4xIC41em0tNzEuOCA2Ny41YzE3LS45IDM2LjQtNy42IDM5LjctNDguOGMtOC44LTEuOS0xOC42LTIuOS0yOS0yLjljLTMuMiAwLTYuNCAuMS05LjYgLjNjLTI4LjYgMS42LTM4LjEgMTUuNS0zNy40IDI3LjljLjkgMTYuNyAxOSAyNC41IDM2LjQgMjMuNmwtLjEtLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVR1bWJsciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0yNTYuOCA0MTZjLTc1LjUgMC05MS45LTU1LjUtOTEuOS04Ny45di05MEgxMzUuMmMtMy40IDAtNi4yLTIuOC02LjItNi4yVjE4OS40YzAtNC41IDIuOC04LjUgNy4xLTEwYzM4LjgtMTMuNyA1MC45LTQ3LjUgNTIuNy03My4yYy41LTYuOSA0LjEtMTAuMiAxMC0xMC4yaDQ0LjNjMy40IDAgNi4yIDIuOCA2LjIgNi4ydjcyaDUxLjljMy40IDAgNi4yIDIuOCA2LjIgNi4ydjUxLjFjMCAzLjQtMi44IDYuMi02LjIgNi4ySDI0OS4xVjMyMWMwIDIxLjQgMTQuOCAzMy41IDQyLjUgMjIuNGMzLTEuMiA1LjYtMiA4LTEuNGMyLjIgLjUgMy42IDIuMSA0LjYgNC45TDMxOCAzODcuMWMxIDMuMiAyIDYuNy0uMyA5LjFjLTguNSA5LjEtMzEuMiAxOS44LTYwLjkgMTkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlVHdpdHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTM1MS4zIDE5OS4zdjBjMCA4Ni43LTY2IDE4Ni42LTE4Ni42IDE4Ni42Yy0zNy4yIDAtNzEuNy0xMC44LTEwMC43LTI5LjRjNS4zIC42IDEwLjQgLjggMTUuOCAuOGMzMC43IDAgNTguOS0xMC40IDgxLjQtMjhjLTI4LjgtLjYtNTMtMTkuNS02MS4zLTQ1LjVjMTAuMSAxLjUgMTkuMiAxLjUgMjkuNi0xLjJjLTMwLTYuMS01Mi41LTMyLjUtNTIuNS02NC40di0uOGM4LjcgNC45IDE4LjkgNy45IDI5LjYgOC4zYy05LTYtMTYuNC0xNC4xLTIxLjUtMjMuNnMtNy44LTIwLjItNy43LTMxYzAtMTIuMiAzLjItMjMuNCA4LjktMzMuMWMzMi4zIDM5LjggODAuOCA2NS44IDEzNS4yIDY4LjZjLTkuMy00NC41IDI0LTgwLjYgNjQtODAuNmMxOC45IDAgMzUuOSA3LjkgNDcuOSAyMC43YzE0LjgtMi44IDI5LTguMyA0MS42LTE1LjhjLTQuOSAxNS4yLTE1LjIgMjgtMjguOCAzNi4xYzEzLjItMS40IDI2LTUuMSAzNy44LTEwLjJjLTguOSAxMy4xLTIwLjEgMjQuNy0zMi45IDM0Yy4yIDIuOCAuMiA1LjcgLjIgOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVVcHdvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTYgMzJsMzM2IDBjMzAuOSAwIDU2IDI1LjEgNTYgNTZsMCAzMzZjMCAzMC45LTI1LjEgNTYtNTYgNTZMNTYgNDgwYy0zMC45IDAtNTYtMjUuMS01Ni01NkwwIDg4QzAgNTcuMSAyNS4xIDMyIDU2IDMyek0yNzAuOSAyNzQuMmM2LjYtNTIuOSAyNS45LTY5LjUgNTEuNC02OS41YzI1LjMgMCA0NC45IDIwLjIgNDQuOSA0OS43cy0xOS43IDQ5LjctNDQuOSA0OS43Yy0yNy45IDAtNDYuMy0yMS41LTUxLjQtMjkuOXptLTI2LjctNDEuOGMtOC4yLTE1LjUtMTQuMy0zNi4zLTE5LjItNTUuNmwtMjkuNyAwLTMzLjIgMCAwIDc4LjFjMCAyOC40LTEyLjkgNDkuNC0zOC4yIDQ5LjRzLTM5LjgtMjAuOS0zOS44LTQ5LjNsLjMtNzguMS0zNi4yIDAgMCA3OC4xYzAgMjIuOCA3LjQgNDMuNSAyMC45IDU4LjJjMTMuOSAxNS4yIDMyLjggMjMuMiA1NC44IDIzLjJjNDMuNyAwIDc0LjItMzMuNSA3NC4yLTgxLjVsMC01Mi41YzQuNiAxNy4zIDE1LjQgNTAuNSAzNi4yIDc5LjdMMjE1IDM5Mi42bDM2LjggMCAxMi44LTc4LjRjNC4yIDMuNSA4LjcgNi42IDEzLjQgOS40YzEyLjMgNy44IDI2LjQgMTIuMiA0MC45IDEyLjZsLjEgMGMuNSAwIDEuMSAwIDEuNiAwYy42IDAgMS4xIDAgMS43IDBjNDUuMSAwIDgwLjktMzQuOSA4MC45LTgxLjlzLTM1LjktODIuMi04MC45LTgyLjJjLTQ1LjQgMC03MC45IDI5LjctNzguMSA2MC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVWaWFkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NnpNMTE4LjMgMzgxLjJjLTY4LTczLjYtMTkuOC0xOTYuMSA4MS4yLTE5Ni4xYzEzLjMgMCAyNi42IDIuMSAzOS4xIDYuN2MtNC4zIDguNC03LjMgMTcuNi04LjQgMjcuMWMtOS43LTQuMS0yMC4yLTYtMzAuNy02Yy00OC44IDAtODQuNiA0MS43LTg0LjYgODguOWMwIDQzIDI4LjUgNzguNyA2OS41IDg1LjljNjEuNS0yNCA3Mi45LTExNy42IDcyLjktMTc1djBjMC03LjMgMC0xNC44LS42LTIyLjFjLTExLjItMzIuOS0yNi42LTY0LjYtNDQuMi05NC41YzI3LjEgMTguMyA0MS45IDYyLjUgNDQuMiA5NC4xdi40YzcuNyAyMi41IDExLjggNDYuMiAxMS44IDcwYzAgNTQuMS0yMS45IDk5LTY4LjMgMTI4LjJsLTIuNCAuMmM1MCAxIDg2LjItMzguNiA4Ni4yLTg3LjJjMC0xMi4yLTIuMS0yNC4zLTYuOS0zNS43YzkuNS0xLjkgMTguNS01LjYgMjYuNC0xMC41YzE1LjMgMzYuNiAxMi42IDg3LjMtMjIuOCAxMjUuNmMtNDIuNCA0Ni4yLTEyMCA0Ni42LTE2Mi40IDB6TTI3NC42IDIxNy42YzIxLjktMTIgNDkuNi0zMC43IDYyLjMtNTNjMS41LTMgNC4xLTguNiA0LjUtMTJjLTEyLjUgMjcuOS00NC4yIDQ5LjgtNzMuOSA1Ni43Yy00LjctNy4zLTcuNS0xNS41LTcuNS0yNC4zYzAtMTAuMyA1LjItMjQuMSAxMi45LTMxLjZjOC4zLTcuOSAxOC0xMC45IDI3LjktMTQuMWMxNi01LjEgMzIuNS0xMC4zIDQ0LjUtMzUuOWMzMi41IDQ2LjIgMTMuMSAxMzAuMy0zNi4zIDEzMC4zYy0xMy4zIDAtMjUuMS03LjEtMzQuNC0xNi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVWaW1lbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0zMTguNSAzMDkuNUMyNzUgMzY2IDIzOC4yIDM5NC4zIDIwOC4xIDM5NC4zYy0xOC43IDAtMzQuNC0xNy4yLTQ3LjMtNTEuNmMtMy44LTEzLjktNy4zLTI2LjktMTAuNS0zOWMtMTguMi02OC4zLTI4LjYtMTA3LjQtNDYuMi0xMDcuNGMtMi40IDAtMTAuOCA1LTI1LjEgMTUuMUw2NCAxOTJjNy02LjEgMTMuOS0xMi40IDIwLjYtMTguNWMyOS4xLTI2LjMgNTUuNi01MC4zIDczLjUtNTEuOWMyNC45LTIuNCA0MC4yIDE0LjYgNDYgNTEuMWMyMC41IDEyOS42IDI5LjYgMTQ5LjIgNjYuOCA5MC41YzEzLjQtMjEuMiAyMC42LTM3LjIgMjEuNS00OC4zYzMuNC0zMi44LTI1LjYtMzAuNi00NS4yLTIyLjJjMTUuNy01MS41IDQ1LjgtNzYuNSA5MC4xLTc1LjFjMzIuOSAxIDQ4LjQgMjIuNCA0Ni41IDY0Yy0xLjQgMzEuMS0yMy4yIDczLjgtNjUuMyAxMjcuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlV2ViQXdlc29tZVN0cm9rZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NEM0Ni4zIDY0IDMyIDc4LjMgMzIgOTZsMCAzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0zMjBjMC0xNy43LTE0LjMtMzItMzItMzJMNjQgNjR6TTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzIwIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzMjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2em0yMzUgODEuNkwyODggMjI0bDUyLjItMTAuNGMtMi42LTMuOS00LjItOC41LTQuMi0xMy42YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRjMCAxMy0xMC4zIDIzLjYtMjMuMiAyNEwzMDQuNSAzNDkuMWMtNS4yIDExLjUtMTYuNiAxOC45LTI5LjIgMTguOWwtMTAyLjYgMGMtMTIuNiAwLTI0LTcuNC0yOS4yLTE4LjlMODcuMiAyMjRDNzQuMyAyMjMuNiA2NCAyMTMgNjQgMjAwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRjMCA1LTEuNSA5LjctNC4yIDEzLjZMMTYwIDIyNGw1My4xLTQ2LjRjLTguOS00LjEtMTUtMTMuMS0xNS0yMy42YzAtMTQuNCAxMS42LTI2IDI2LTI2czI2IDExLjYgMjYgMjZjMCAxMC41LTYuMiAxOS41LTE1LjEgMjMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlV2ViQXdlc29tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek0yMzUgMTc3LjZMMjg4IDIyNGw1Mi4yLTEwLjRjLTIuNi0zLjktNC4yLTguNS00LjItMTMuNmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0YzAgMTMtMTAuMyAyMy42LTIzLjIgMjRMMzA0LjUgMzQ5LjFjLTUuMiAxMS41LTE2LjYgMTguOS0yOS4yIDE4LjlsLTEwMi42IDBjLTEyLjYgMC0yNC03LjQtMjkuMi0xOC45TDg3LjIgMjI0Qzc0LjMgMjIzLjYgNjQgMjEzIDY0IDIwMGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0YzAgNS0xLjUgOS43LTQuMiAxMy42TDE2MCAyMjRsNTMuMS00Ni40Yy04LjktNC4xLTE1LTEzLjEtMTUtMjMuNmMwLTE0LjQgMTEuNi0yNiAyNi0yNnMyNiAxMS42IDI2IDI2YzAgMTAuNS02LjIgMTkuNS0xNS4xIDIzLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVdoYXRzYXBwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkyLjEgMjU0LjZjMCAyNC45IDcgNDkuMiAyMC4yIDcwLjFsMy4xIDUtMTMuMyA0OC42TDE1MiAzNjUuMmw0LjggMi45YzIwLjIgMTIgNDMuNCAxOC40IDY3LjEgMTguNGguMWM3Mi42IDAgMTMzLjMtNTkuMSAxMzMuMy0xMzEuOGMwLTM1LjItMTUuMi02OC4zLTQwLjEtOTMuMmMtMjUtMjUtNTgtMzguNy05My4yLTM4LjdjLTcyLjcgMC0xMzEuOCA1OS4xLTEzMS45IDEzMS44ek0yNzQuOCAzMzBjLTEyLjYgMS45LTIyLjQgLjktNDcuNS05LjljLTM2LjgtMTUuOS02MS44LTUxLjUtNjYuOS01OC43Yy0uNC0uNi0uNy0uOS0uOC0xLjFjLTItMi42LTE2LjItMjEuNS0xNi4yLTQxYzAtMTguNCA5LTI3LjkgMTMuMi0zMi4zYy4zLS4zIC41LS41IC43LS44YzMuNi00IDcuOS01IDEwLjYtNWMyLjYgMCA1LjMgMCA3LjYgLjFjLjMgMCAuNSAwIC44IDBjMi4zIDAgNS4yIDAgOC4xIDYuOGMxLjIgMi45IDMgNy4zIDQuOSAxMS44YzMuMyA4IDYuNyAxNi4zIDcuMyAxNy42YzEgMiAxLjcgNC4zIC4zIDYuOWMtMy40IDYuOC02LjkgMTAuNC05LjMgMTNjLTMuMSAzLjItNC41IDQuNy0yLjMgOC42YzE1LjMgMjYuMyAzMC42IDM1LjQgNTMuOSA0Ny4xYzQgMiA2LjMgMS43IDguNi0xYzIuMy0yLjYgOS45LTExLjYgMTIuNS0xNS41YzIuNi00IDUuMy0zLjMgOC45LTJzMjMuMSAxMC45IDI3LjEgMTIuOWMuOCAuNCAxLjUgLjcgMi4xIDFjMi44IDEuNCA0LjcgMi4zIDUuNSAzLjZjLjkgMS45IC45IDkuOS0yLjQgMTkuMWMtMy4zIDkuMy0xOS4xIDE3LjctMjYuNyAxOC44ek00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2ek0xNDguMSAzOTMuOUw2NCA0MTZsMjIuNS04Mi4yYy0xMy45LTI0LTIxLjItNTEuMy0yMS4yLTc5LjNDNjUuNCAxNjcuMSAxMzYuNSA5NiAyMjMuOSA5NmM0Mi40IDAgODIuMiAxNi41IDExMi4yIDQ2LjVjMjkuOSAzMCA0Ny45IDY5LjggNDcuOSAxMTIuMmMwIDg3LjQtNzIuNyAxNTguNS0xNjAuMSAxNTguNWMtMjYuNiAwLTUyLjctNi43LTc1LjgtMTkuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlWFR3aXR0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em0yOTcuMSA4NEwyNTcuMyAyMzQuNiAzNzkuNCAzOTZIMjgzLjhMMjA5IDI5OC4xIDEyMy4zIDM5Nkg3NS44bDExMS0xMjYuOUw2OS43IDExNmg5OGw2Ny43IDg5LjVMMzEzLjYgMTE2aDQ3LjV6TTMyMy4zIDM2Ny42TDE1My40IDE0Mi45SDEyNS4xTDI5Ni45IDM2Ny42aDI2LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVhpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NnpNOTMuOCAzMjAuMmMtNS41IDAtOC43LTUuMy02LTEwLjNsNDkuMy04Ni43Yy4xIDAgLjEtLjEgMC0uMmwtMzEuNC01NGMtMy01LjYgLjItMTAuMSA2LTEwLjFoNDYuNmM1LjIgMCA5LjUgMi45IDEyLjkgOC43bDMxLjkgNTUuM2MtMS4zIDIuMy0xOCAzMS43LTUwLjEgODguMmMtMy41IDYuMi03LjcgOS4xLTEyLjYgOS4xSDkzLjh6bTE2My41LTMzLjR2LjJsNjUuNSAxMTljMi44IDUuMSAuMSAxMC4xLTYgMTAuMUgyNzAuMmMtNS41IDAtOS43LTIuOS0xMi45LTguN2wtNjYtMTIwLjNjMS44LTMuMiAyMi45LTQwLjQgNjMuMy0xMTEuNmMxMS43LTIwLjcgMjUuMS00NC4zIDQwLjEtNzAuOGMzLjMtNS44IDcuNC04LjcgMTIuNS04LjdoNDYuOWM1LjctLjEgOC44IDQuNyA2IDEwTDI1Ny4zIDI4Ni44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVZb3V0dWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4MiAyNTYuMmwtOTUuMi01NC4xVjMxMC4zTDI4MiAyNTYuMnpNMzg0IDMySDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NHptMTQuNCAxMzYuMWM3LjYgMjguNiA3LjYgODguMiA3LjYgODguMnMwIDU5LjYtNy42IDg4LjFjLTQuMiAxNS44LTE2LjUgMjcuNy0zMi4yIDMxLjlDMzM3LjkgMzg0IDIyNCAzODQgMjI0IDM4NHMtMTEzLjkgMC0xNDIuMi03LjZjLTE1LjctNC4yLTI4LTE2LjEtMzIuMi0zMS45QzQyIDMxNS45IDQyIDI1Ni4zIDQyIDI1Ni4zczAtNTkuNyA3LjYtODguMmM0LjItMTUuOCAxNi41LTI4LjIgMzIuMi0zMi40QzExMC4xIDEyOCAyMjQgMTI4IDIyNCAxMjhzMTEzLjkgMCAxNDIuMiA3LjdjMTUuNyA0LjIgMjggMTYuNiAzMi4yIDMyLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZXNwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni4xMiAzNDMuMzRjLTkuNjUgOS42NS05LjY1IDI1LjI5IDAgMzQuOTQgOS42NSA5LjY1IDI1LjI5IDkuNjUgMzQuOTQgMEwzNzguMjQgMjIxLjFjMTkuMjktMTkuMjkgNTAuNTctMTkuMjkgNjkuODYgMHMxOS4yOSA1MC41NyAwIDY5Ljg2TDI5My45NSA0NDUuMWMxOS4yNyAxOS4yOSA1MC41MyAxOS4zMSA2OS44Mi4wNGwuMDQtLjA0IDExOS4yNS0xMTkuMjRjMzguNTktMzguNTkgMzguNTktMTAxLjE0IDAtMTM5LjcyLTM4LjU5LTM4LjU5LTEwMS4xNS0zOC41OS0xMzkuNzIgMGwtMTU3LjIyIDE1Ny4yem0yNDQuNTMtMTA0LjhjLTkuNjUtOS42NS0yNS4yOS05LjY1LTM0LjkzIDBsLTE1Ny4yIDE1Ny4xOGMtMTkuMjcgMTkuMjktNTAuNTMgMTkuMzEtNjkuODIuMDVsLS4wNS0uMDVjLTkuNjQtOS42NC0yNS4yNy05LjY1LTM0LjkyLS4wMWwtLjAxLjAxYy05LjY1IDkuNjQtOS42NiAyNS4yOC0uMDIgMzQuOTNsLjAyLjAyYzM4LjU4IDM4LjU3IDEwMS4xNCAzOC41NyAxMzkuNzIgMGwxNTcuMi0xNTcuMmM5LjY1LTkuNjUgOS42NS0yNS4yOS4wMS0zNC45M3ptLTI2MS45OSA4Ny4zM2wxNTcuMTgtMTU3LjE4YzkuNjQtOS42NSA5LjY0LTI1LjI5IDAtMzQuOTQtOS42NC05LjY0LTI1LjI3LTkuNjQtMzQuOTEgMEwxMzMuNzIgMjkwLjkzYy0xOS4yOCAxOS4yOS01MC41NiAxOS4zLTY5Ljg1LjAxbC0uMDEtLjAxYy0xOS4yOS0xOS4yOC0xOS4zMS01MC41NC0uMDMtNjkuODRsLjAzLS4wM0wyMTguMDMgNjYuODljLTE5LjI4LTE5LjI5LTUwLjU1LTE5LjMtNjkuODUtLjAybC0uMDIuMDJMMjguOTMgMTg2LjE0Yy0zOC41OCAzOC41OS0zOC41OCAxMDEuMTQgMCAxMzkuNzIgMzguNiAzOC41OSAxMDEuMTMgMzguNTkgMTM5LjczLjAxem0tODcuMzMtNTIuNGM5LjY0IDkuNjQgMjUuMjcgOS42NCAzNC45MSAwbDE1Ny4yMS0xNTcuMTljMTkuMjgtMTkuMjkgNTAuNTUtMTkuMyA2OS44NC0uMDJsLjAyLjAyYzkuNjUgOS42NSAyNS4yOSA5LjY1IDM0LjkzIDAgOS42NS05LjY1IDkuNjUtMjUuMjkgMC0zNC45My0zOC41OS0zOC41OS0xMDEuMTMtMzguNTktMTM5LjcyIDBMODEuMzMgMjM4LjU0Yy05LjY1IDkuNjQtOS42NSAyNS4yOC0uMDEgMzQuOTNoLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFja0V4Y2hhbmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjcgMzMyLjNoNDEyLjd2MjJjMCAzNy43LTI5LjMgNjgtNjUuMyA2OGgtMTlMMjU5LjMgNTEydi04OS43SDgzYy0zNiAwLTY1LjMtMzAuMy02NS4zLTY4di0yMnptMC0yMy42aDQxMi43di04NUgxNy43djg1em0wLTEwOS40aDQxMi43di04NUgxNy43djg1ek0zNjUgMEg4M0M0NyAwIDE3LjcgMzAuMyAxNy43IDY3LjdWOTBoNDEyLjdWNjcuN0M0MzAuMyAzMC4zIDQwMSAwIDM2NSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFja092ZXJmbG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5MC43IDMxMUw5NSAyNjkuNyA4Ni44IDMwOWwxOTUuNyA0MXptNTEtODdMMTg4LjIgOTUuN2wtMjUuNSAzMC44IDE1My41IDEyOC4zem0tMzEuMiAzOS43TDEyOS4yIDE3OWwtMTYuNyAzNi41TDI5My43IDMwMHpNMjYyIDMybC0zMiAyNCAxMTkuMyAxNjAuMyAzMi0yNHptMjAuNSAzMjhoLTIwMHYzOS43aDIwMHptMzkuNyA4MEg0Mi43VjMyMGgtNDB2MTYwaDM1OS41VjMyMGgtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YWNrcGF0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDQuNiAyMzIuNGMwIDguNS00LjI2IDIwLjQ5LTIxLjM0IDIwLjQ5aC0xOS42MXYtNDEuNDdoMTkuNjFjMTcuMTMgMCAyMS4zNCAxMi4zNiAyMS4zNCAyMC45OHpNNDQ4IDMydjQ0OEgwVjMyek0xNTEuMyAyODcuODRjMC0yMS4yNC0xMi4xMi0zNC41NC00Ni43Mi00NC44NS0yMC41Ny03LjQxLTI2LTEwLjkxLTI2LTE4LjYzczctMTQuNjEgMjAuNDEtMTQuNjFjMTQuMDkgMCAyMC43OSA4LjQ1IDIwLjc5IDE4LjM1aDMwLjdsLjE5LS41N2MuNS0xOS41Ny0xNS4wNi00MS42NS01MS4xMi00MS42NS0yMy4zNyAwLTUyLjU1IDEwLjc1LTUyLjU1IDM4LjI5IDAgMTkuNCA5LjI1IDMxLjI5IDUwLjc0IDQ0LjM3IDE3LjI2IDYuMTUgMjEuOTEgMTAuNCAyMS45MSAxOS40OCAwIDE1LjItMTkuMTMgMTQuMjMtMTkuNDcgMTQuMjMtMjAuNCAwLTI1LjY1LTkuMS0yNS42NS0yMS45aC0zMC44bC0uMTguNTZjLS42OCAzMS4zMiAyOC4zOCA0NS4yMiA1Ni42MyA0NS4yMiAyOS45OCAwIDUxLjEyLTEzLjU1IDUxLjEyLTM4LjI5em0xMjUuMzgtNTUuNjNjMC0yNS4zLTE4LjQzLTQ1LjQ2LTUzLjQyLTQ1LjQ2aC01MS43OHYxMzguMThoMzIuMTd2LTQ3LjM2aDE5LjYxYzMwLjI1IDAgNTMuNDItMTUuOTUgNTMuNDItNDUuMzZ6TTI5Ny45NCAzMjVMMzQ3IDE4Ni43OGgtMzEuMDlMMjY4IDMyNXptMTA2LjUyLTEzOC4yMmgtMzEuMDlMMzI1LjQ2IDMyNWgyOS45NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RheWxpbmtlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODIuNyAyOTIuNWwyLjcgMi43LTE3MC0xNjcuM2MtMy41LTMuNS05LjctMy43LTEzLjgtLjVMMTQ0LjMgMTcxYy00LjIgMy4yLTQuNiA4LjctMS4xIDEyLjJsNjguMSA2NC4zYzMuNiAzLjUgOS45IDMuNyAxNCAuNWwuMS0uMWM0LjEtMy4yIDEwLjQtMyAxNCAuNWw4NCA4MS4zYzMuNiAzLjUgMy4yIDktLjkgMTIuMmwtOTMuMiA3NGMtNC4yIDMuMy0xMC41IDMuMS0xNC4yLS40TDYzLjIgMjY4Yy0zLjUtMy41LTkuNy0zLjctMTMuOS0uNUwzLjUgMzAyLjRjLTQuMiAzLjItNC43IDguNy0xLjIgMTIuMkwyMTEgNTEwLjdzNy40IDYuOCAxNy4zLS44bDE5OC0xNjMuOWM0LTMuMiA0LjQtOC43LjctMTIuMnptNTQuNS04My40TDIyNi43IDIuNWMtMS41LTEuMi04LTUuNS0xNi4zIDEuMUwzLjYgMTY1LjdjLTQuMiAzLjItNC44IDguNy0xLjIgMTIuMmw0Mi4zIDQxLjcgMTcxLjcgMTY1LjFjMy43IDMuNSAxMC4xIDMuNyAxNC4zLjRsNTAuMi0zOC44LS4zLS4zIDcuNy02YzQuMi0zLjIgNC42LTguNy45LTEyLjJsLTU3LjEtNTQuNGMtMy42LTMuNS0xMC0zLjctMTQuMi0uNWwtLjEuMWMtNC4yIDMuMi0xMC41IDMuMS0xNC4yLS40TDEwOSAxODAuOGMtMy42LTMuNS0zLjEtOC45IDEuMS0xMi4ybDkyLjItNzEuNWM0LjEtMy4yIDEwLjMtMyAxMy45LjVsMTYwLjQgMTU5YzMuNyAzLjUgMTAgMy43IDE0LjEuNWw0NS44LTM1LjhjNC4xLTMuMiA0LjQtOC43LjctMTIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RlYW1TeW1ib2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk1LjUgMTc3LjVjMCAzMy44LTI3LjUgNjEtNjEgNjEtMzMuOCAwLTYxLTI3LjMtNjEtNjFzMjcuMy02MSA2MS02MWMzMy41IDAgNjEgMjcuMiA2MSA2MXptNTIuNS4yYzAgNjMtNTEgMTEzLjgtMTEzLjcgMTEzLjhMMjI1IDM3MS4zYy00IDQzLTQwLjUgNzYuOC04NC41IDc2LjgtNDAuNSAwLTc0LjctMjguOC04My02N0wwIDM1OFYyNTAuN0w5Ny4yIDI5MGMxNS4xLTkuMiAzMi4yLTEzLjMgNTItMTEuNWw3MS0xMDEuN2MuNS02Mi4zIDUxLjUtMTEyLjggMTE0LTExMi44QzM5NyA2NCA0NDggMTE1IDQ0OCAxNzcuN3pNMjAzIDM2M2MwLTM0LjctMjcuOC02Mi41LTYyLjUtNjIuNS00LjUgMC05IC41LTEzLjUgMS41bDI2IDEwLjVjMjUuNSAxMC4yIDM4IDM5IDI3LjcgNjQuNS0xMC4yIDI1LjUtMzkuMiAzOC02NC43IDI3LjUtMTAuMi00LTIwLjUtOC4zLTMwLjctMTIuMiAxMC41IDE5LjcgMzEuMiAzMy4yIDU1LjIgMzMuMiAzNC43IDAgNjIuNS0yNy44IDYyLjUtNjIuNXptMjA3LjUtMTg1LjNjMC00Mi0zNC4zLTc2LjItNzYuMi03Ni4yLTQyLjMgMC03Ni41IDM0LjItNzYuNSA3Ni4yIDAgNDIuMiAzNC4zIDc2LjIgNzYuNSA3Ni4yIDQxLjkuMSA3Ni4yLTMzLjkgNzYuMi03Ni4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMjU2YzAgMTM3LTExMS4yIDI0OC0yNDguNCAyNDgtMTEzLjggMC0yMDkuNi03Ni4zLTIzOS0xODAuNGw5NS4yIDM5LjNjNi40IDMyLjEgMzQuOSA1Ni40IDY4LjkgNTYuNCAzOS4yIDAgNzEuOS0zMi40IDcwLjItNzMuNWw4NC41LTYwLjJjNTIuMSAxLjMgOTUuOC00MC45IDk1LjgtOTMuNSAwLTUxLjYtNDItOTMuNS05My43LTkzLjVzLTkzLjcgNDItOTMuNyA5My41djEuMkwxNzYuNiAyNzljLTE1LjUtLjktMzAuNyAzLjQtNDMuNSAxMi4xTDAgMjM2LjFDMTAuMiAxMDguNCAxMTcuMSA4IDI0Ny42IDggMzg0LjggOCA0OTYgMTE5IDQ5NiAyNTZ6TTE1NS43IDM4NC4zbC0zMC41LTEyLjZhNTIuNzkgNTIuNzkgMCAwIDAgMjcuMiAyNS44YzI2LjkgMTEuMiA1Ny44LTEuNiA2OS0yOC40IDUuNC0xMyA1LjUtMjcuMy4xLTQwLjMtNS40LTEzLTE1LjUtMjMuMi0yOC41LTI4LjYtMTIuOS01LjQtMjYuNy01LjItMzguOS0uNmwzMS41IDEzYzE5LjggOC4yIDI5LjIgMzAuOSAyMC45IDUwLjctOC4zIDE5LjktMzEgMjkuMi01MC44IDIxem0xNzMuOC0xMjkuOWMtMzQuNCAwLTYyLjQtMjgtNjIuNC02Mi4zczI4LTYyLjMgNjIuNC02Mi4zIDYyLjQgMjggNjIuNCA2Mi4zLTI3LjkgNjIuMy02Mi40IDYyLjN6bS4xLTE1LjZjMjUuOSAwIDQ2LjktMjEgNDYuOS00Ni44IDAtMjUuOS0yMS00Ni44LTQ2LjktNDYuOHMtNDYuOSAyMS00Ni45IDQ2LjhjLjEgMjUuOCAyMS4xIDQ2LjggNDYuOSA0Ni44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGlja2VyTXVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjEuNyAxOTkuNmMtMS4zLjMuMyAwIDAgMHptLTYuMi03Ny40Yy03LjctMjIuMy01LjEtNy4yLTEzLjQtMzYuOS0xLjYtNi41LTMuNi0xNC41LTYuMi0yMC00LjQtOC43LTQuNi03LjUtNC42LTkuNSAwLTUuMyAzMC43LTQ1LjMgMTktNDYuOS01LjctLjYtMTIuMiAxMS42LTIwLjYgMTctOC42IDQuMi04IDUtMTAuMyA1LTIuNiAwLTUuNy0zLTYuMi01LTItNS43IDEuOS0yNS45LTMuNi0yNS45LTMuNiAwLTEyLjMgMjQuOC0xNyAyNS44LTUuMiAxLjMtMjcuOS0xMS40LTc1LjEgMTgtMjUuMyAxMy4yLTg2LjkgNjUuMi04NyA2NS4zLTYuNyA0LjctMjAgNC43LTM1LjUgMTYtNDQuNCAzMC4xLTEwOS42IDkuNC0xMTAuNyA5LTExMC42LTI2LjgtMTI4LTE1LjItMTU5IDExLjUtMjAuOCAxNy45LTIzLjcgMzYuNS0yNC4yIDM4LjktNC4yIDIwLjQgNS4yIDQ4LjMgNi43IDY0LjMgMS44IDE5LjMtMi43IDE3LjcgNy43IDk4LjMuNSAxIDQuMSAwIDUuMSAxLjUgMCA4LjQtMy44IDEyLjEtNC4xIDEzLTEuNSA0LjUtMS41IDEwLjUgMCAxNiAyLjMgOC4yIDguMiAzNy4yIDguMiA0Ni45IDAgNDEuOC40IDQ0IDIuNiA0OS40IDMuOSAxMCAxMi41IDkuMSAxNyAxMiAzLjEgMy41LS41IDguNSAxIDEyLjUuNSAyIDMuNiA0IDYuMiA1IDkuMiAzLjYgMjcgLjMgMjkuOS0yLjUgMS42LTEuNS41LTQuNSAzLjEtNSA1LjEgMCAxMC44LS41IDE0LjQtMi41IDUuMS0yLjUgNC4xLTYgMS41LTEwLjUtLjQtLjgtNy0xMy4zLTkuOC0xNi0yLjEtMi01LjEtMy03LjItNC41LTUuOC00LjktMTAuMy0xOS40LTEwLjMtMTkuNS00LjYtMTkuNC0xMC4zLTQ2LjMtNC4xLTY2LjggNC42LTE3LjIgMzkuNS04Ny43IDM5LjYtODcuOCA0LjEtNi41IDE3LTExLjUgMjcuMy03IDYgMS45IDE5LjMgMjIgNjUuNCAzMC45IDQ3LjkgOC43IDk3LjQtMiAxMTIuMi0yIDIuOCAyLTEuOSAxMy0uNSAzOC45IDAgMjYuNC0uNCAxMy43LTQuMSAyOS45LTIuMiA5LjcgMy40IDIzLjItMS41IDQ2LjktMS40IDkuOC05LjkgMzIuNy04LjIgNDMuNC41IDEgMSAyIDEuNSAzLjUuNSA0LjUgMS41IDguNSA0LjYgMTAgNy4zIDMuNiAxMi0zLjUgOS44IDExLjUtLjcgMy4xLTIuNiAxMiAxLjUgMTUgNC40IDMuNyAzMC42IDMuNCAzNi41LjUgMi42LTEuNSAxLjYtNC41IDYuNC03LjQgMS45LS45IDExLjMtLjQgMTEuMy02LjUuMy0xLjgtOS4yLTE5LjktOS4zLTIwLTIuNi0zLjUtOS4yLTQuNS0xMS4zLTgtNi45LTEwLjEtMS43LTUyLjYuNS01OS40IDMtMTEgNS42LTIyLjQgOC43LTMyLjQgMTEtNDIuNSAxMC4zLTUwLjYgMTYuNS02OC4zLjgtMS44IDYuNC0yMy4xIDEwLjMtMjkuOSA5LjMtMTcgMjEuNy0zMi40IDMzLjUtNDcuNCAxOC0yMi45IDM0LTQ2LjkgNTItNjkuOCA2LjEtNyA4LjItMTMuNyAxOC04IDEwLjggNS43IDIxLjYgNyAzMS45IDE3IDE0LjYgMTIuOCAxMC4yIDE4LjIgMTEuOCAyMi45IDEuNSA1IDcuNyAxMC41IDE0LjkgOS41IDEwLjQtMiAxMy0yLjUgMTMuNC0yLjUgMi42LS41IDUuNy01IDcuMi04IDMuMS01LjUgNy4yLTkgNy4yLTE2LjUgMC03LjctLjQtMi44LTIwLjYtNTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RyYXZhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1OC40IDBMNyAyOTJoODkuMmw2Mi4yLTExNi4xTDIyMC4xIDI5Mmg4OC41em0xNTAuMiAyOTJsLTQzLjkgODguMi00NC42LTg4LjJoLTY3LjZsMTEyLjIgMjIwIDExMS41LTIyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RyaXBlUyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTUuMyAxNTQuNmMwLTIyLjMgMTguNi0zMC45IDQ4LjQtMzAuOSA0My40IDAgOTguNSAxMy4zIDE0MS45IDM2LjdWMjYuMUMyOTguMyA3LjIgMjUxLjEgMCAyMDMuOCAwIDg4LjEgMCAxMSA2MC40IDExIDE2MS40YzAgMTU3LjkgMjE2LjggMTMyLjMgMjE2LjggMjAwLjQgMCAyNi40LTIyLjkgMzQuOS01NC43IDM0LjktNDcuMiAwLTEwOC4yLTE5LjUtMTU2LjEtNDUuNXYxMjguNWEzOTYuMDkgMzk2LjA5IDAgMCAwIDE1NiAzMi40YzExOC42IDAgMjAwLjMtNTEgMjAwLjMtMTUzLjYgMC0xNzAuMi0yMTgtMTM5LjctMjE4LTIwMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHJpcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY1IDE0NC43bC00My4zIDkuMi0uMiAxNDIuNGMwIDI2LjMgMTkuOCA0My4zIDQ2LjEgNDMuMyAxNC42IDAgMjUuMy0yLjcgMzEuMi01Ljl2LTMzLjhjLTUuNyAyLjMtMzMuNyAxMC41LTMzLjctMTUuN1YyMjFoMzMuN3YtMzcuOGgtMzMuN3ptODkuMSA1MS42bC0yLjctMTMuMUgyMTN2MTUzLjJoNDQuM1YyMzMuM2MxMC41LTEzLjggMjguMi0xMS4xIDMzLjktOS4zdi00MC44Yy02LTIuMS0yNi43LTYtMzcuMSAxMy4xem05Mi4zLTcyLjNsLTQ0LjYgOS41djM2LjJsNDQuNi05LjV6TTQ0LjkgMjI4LjNjMC02LjkgNS44LTkuNiAxNS4xLTkuNyAxMy41IDAgMzAuNyA0LjEgNDQuMiAxMS40di00MS44Yy0xNC43LTUuOC0yOS40LTguMS00NC4xLTguMS0zNiAwLTYwIDE4LjgtNjAgNTAuMiAwIDQ5LjIgNjcuNSA0MS4yIDY3LjUgNjIuNCAwIDguMi03LjEgMTAuOS0xNyAxMC45LTE0LjcgMC0zMy43LTYuMS00OC42LTE0LjJ2NDBjMTYuNSA3LjEgMzMuMiAxMC4xIDQ4LjUgMTAuMSAzNi45IDAgNjIuMy0xNS44IDYyLjMtNDcuOCAwLTUyLjktNjcuOS00My40LTY3LjktNjMuNHpNNjQwIDI2MS42YzAtNDUuNS0yMi04MS40LTY0LjItODEuNHMtNjcuOSAzNS45LTY3LjkgODEuMWMwIDUzLjUgMzAuMyA3OC4yIDczLjUgNzguMiAyMS4yIDAgMzcuMS00LjggNDkuMi0xMS41di0zMy40Yy0xMi4xIDYuMS0yNiA5LjgtNDMuNiA5LjgtMTcuMyAwLTMyLjUtNi4xLTM0LjUtMjYuOWg4Ni45Yy4yLTIuMy42LTExLjYuNi0xNS45em0tODcuOS0xNi44YzAtMjAgMTIuMy0yOC40IDIzLjQtMjguNCAxMC45IDAgMjIuNSA4LjQgMjIuNSAyOC40em0tMTEyLjktNjQuNmMtMTcuNCAwLTI4LjYgOC4yLTM0LjggMTMuOWwtMi4zLTExSDM2M3YyMDQuOGw0NC40LTkuNC4xLTUwLjJjNi40IDQuNyAxNS45IDExLjIgMzEuNCAxMS4yIDMxLjggMCA2MC44LTIzLjIgNjAuOC03OS42LjEtNTEuNi0yOS4zLTc5LjctNjAuNS03OS43em0tMTAuNiAxMjIuNWMtMTAuNCAwLTE2LjYtMy44LTIwLjktOC40bC0uMy02NmM0LjYtNS4xIDExLTguOCAyMS4yLTguOCAxNi4yIDAgMjcuNCAxOC4yIDI3LjQgNDEuNC4xIDIzLjktMTAuOSA0MS44LTI3LjQgNDEuOHptLTEyNi43IDMzLjdoNDQuNlYxODMuMmgtNDQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3R1YmJlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzYuNSAyOTQuMmw1OC44IDIyLjljOS4xLTM2LjggMjUuNC02MS4xIDU1LTYxLjFjNDkuNCAwIDcxLjQgNjMuNiAxNDIuNCA2My42YzE1LjYgMCAzNS45LTIuOCA1NS4zLTEzLjNWMzY4YzAgNjEuOC01MC40IDExMi0xMTIuMyAxMTJIMGw0MS44LTU2TDAgMzY4bDQxLjctNTZMMCAyNTYuMWw0MS44LTU2TDAgMTQ0LjEgNDEuOCA4OCAwIDMySDMzNS43QzM5Ny42IDMyIDQ0OCA4Mi4zIDQ0OCAxNDQuMXY1MS4zYy05LjIgMzYuMy0yNS45IDYwLjYtNTUgNjAuNmMtNDkuNiAwLTcxLjYtNjMuNS0xNDIuNC02My41Yy0zNS45IDAtOTUuMiAxNC42LTExNC4xIDEwMS42aDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0dWRpb3ZpbmFyaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAuMyAxODcuN2w0LjIgMjh2MjhsLTI1LjEgNDQuMS0zOS44IDc4LjQtNTYuMSA2Ny41LTc5LjEgMzcuOC0xNy43IDI0LjUtNy43IDEyLTkuNiA0czE3LjMtNjMuNiAxOS40LTYzLjZjMi4xIDAgMjAuMy43IDIwLjMuN2w2Ni43LTM4LjYtOTIuNSAyNi4xLTU1LjkgMzYuOC0yMi44IDI4LTYuNiAxLjQgMjAuOC03My42IDYuOS01LjUgMjAuNyAxMi45IDg4LjMtNDUuMiA1Ni44LTUxLjUgMTQuOC02OC40LTEyNS40IDIzLjMgMTUuMi0xOC4yLTE3My40LTUzLjMgODEuOS0xMC41LTE2Ni0xMjIuOUwxMzMuNSAxMDggMzIuMiAwbDI1Mi45IDEyNi42LTMxLjUtMzhMMzc4IDE2MyAyMzQuNyA2NGwxOC43IDM4LjQtNDkuNi0xOC4xTDE1OC4zIDBsMTk0LjYgMTIyTDMxMCA2Ni4ybDEwOCA5Ni40IDEyLTguOS0yMS0xNi40IDQuMi0zNy44TDQ1MSA4OS4xbDI5LjIgMjQuNyAxMS41IDQuMi03IDYuMiA4LjUgMTItMTMuMSA3LjQtMTAuMyAyMC4yIDEwLjUgMjMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3R1bWJsZXVwb25DaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMCAxNzcuNWMtOS44IDAtMTcuOCA4LTE3LjggMTcuOHYxMDYuOWMwIDQwLjktMzMuOSA3My45LTc0LjkgNzMuOS00MS40IDAtNzQuOS0zMy41LTc0LjktNzQuOXYtNDYuNWg1Ny4zdjQ1LjhjMCAxMCA4IDE3LjggMTcuOCAxNy44czE3LjgtNy45IDE3LjgtMTcuOFYyMDAuMWMwLTQwIDM0LjItNzIuMSA3NC43LTcyLjEgNDAuNyAwIDc0LjcgMzIuMyA3NC43IDcyLjZ2MjMuN2wtMzQuMSAxMC4xLTIyLjktMTAuN3YtMjAuNmMuMS05LjYtNy45LTE3LjYtMTcuNy0xNy42em0xNjcuNiAxMjMuNmMwIDQxLjQtMzMuNSA3NC45LTc0LjkgNzQuOS00MS4yIDAtNzQuOS0zMy4yLTc0LjktNzQuMlYyNjNsMjIuOSAxMC43IDM0LjEtMTAuMXY0Ny4xYzAgOS44IDggMTcuNiAxNy44IDE3LjZzMTcuOC03LjkgMTcuOC0xNy42di00OGg1Ny4zYy0uMSA0NS45LS4xIDQ2LjQtLjEgNDYuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3R1bWJsZXVwb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAyLjkgMjY2djY5LjdjMCA2Mi4xLTUwLjMgMTEyLjQtMTEyLjQgMTEyLjQtNjEuOCAwLTExMi40LTQ5LjgtMTEyLjQtMTExLjN2LTcwLjJsMzQuMyAxNiA1MS4xLTE1LjJWMzM4YzAgMTQuNyAxMiAyNi41IDI2LjcgMjYuNVM0MTcgMzUyLjcgNDE3IDMzOHYtNzJoODUuOXptLTIyNC43LTU4LjJsMzQuMyAxNiA1MS4xLTE1LjJWMTczYzAtNjAuNS01MS4xLTEwOS0xMTIuMS0xMDktNjAuOCAwLTExMi4xIDQ4LjItMTEyLjEgMTA4LjJ2MTYyLjRjMCAxNC45LTEyIDI2LjctMjYuNyAyNi43Uzg2IDM0OS41IDg2IDMzNC42VjI2NkgwdjY5LjdDMCAzOTcuNyA1MC4zIDQ0OCAxMTIuNCA0NDhjNjEuNiAwIDExMi40LTQ5LjUgMTEyLjQtMTEwLjhWMTc2LjljMC0xNC43IDEyLTI2LjcgMjYuNy0yNi43czI2LjcgMTIgMjYuNyAyNi43djMwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1cGVycG93ZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzMmMtODMuMyAxMS0xNjYuOCAyMi0yNTAgMzMtOTIgMTIuNS0xNjMuMyA4Ni43LTE2OSAxODAtMy4zIDU1LjUgMTggMTA5LjUgNTcuOCAxNDguMkwwIDQ4MGM4My4zLTExIDE2Ni41LTIyIDI0OS44LTMzIDkxLjgtMTIuNSAxNjMuMy04Ni44IDE2OC43LTE3OS44IDMuNS01NS41LTE4LTEwOS41LTU3LjctMTQ4LjJMNDQ4IDMyem0tNzkuNyAyMzIuM2MtNC4yIDc5LjUtNzQgMTM5LjItMTUyLjggMTM0LjUtNzkuNS00LjctMTQwLjctNzEtMTM2LjMtMTUxIDQuNS03OS4yIDc0LjMtMTM5LjMgMTUzLTEzNC41IDc5LjMgNC43IDE0MC41IDcxIDEzNi4xIDE1MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VwcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAyNjIuNWMwIDY0LjEtMTA5IDExNi4xLTI0My41IDExNi4xLTI0LjggMC00OC42LTEuOC03MS4xLTUgNy43LjQgMTUuNS42IDIzLjQuNiAxMzQuNSAwIDI0My41LTU2LjkgMjQzLjUtMTI3LjEgMC0yOS40LTE5LjEtNTYuNC01MS4yLTc4IDYwIDIxLjEgOTguOSA1NS4xIDk4LjkgOTMuNHpNNDcuNyAyMjcuOWMtLjEtNzAuMiAxMDguOC0xMjcuMyAyNDMuMy0xMjcuNiA3LjkgMCAxNS42LjIgMjMuMy41LTIyLjUtMy4yLTQ2LjMtNC45LTcxLTQuOUMxMDguOCA5Ni4zLS4xIDE0OC41IDAgMjEyLjZjLjEgMzguMyAzOS4xIDcyLjMgOTkuMyA5My4zLTMyLjMtMjEuNS01MS41LTQ4LjYtNTEuNi03OHptNjAuMiAzOS45czEwLjUgMTMuMiAyOS4zIDEzLjJjMTcuOSAwIDI4LjQtMTEuNSAyOC40LTI1LjEgMC0yOC00MC4yLTI1LjEtNDAuMi0zOS43IDAtNS40IDUuMy05LjEgMTIuNS05LjEgNS43IDAgMTEuMyAyLjYgMTEuMyA2LjZ2My45aDE0LjJ2LTcuOWMwLTEyLjEtMTUuNC0xNi44LTI1LjQtMTYuOC0xNi41IDAtMjguNSAxMC4yLTI4LjUgMjQuMSAwIDI2LjYgNDAuMiAyNS40IDQwLjIgMzkuOSAwIDYuNi01LjggMTAuMS0xMi4zIDEwLjEtMTEuOSAwLTIwLjctMTAuMS0yMC43LTEwLjFsLTguOCAxMC45em0xMjAuOC03My42djU0LjRjMCAxMS4zLTcuMSAxNy44LTE3LjggMTcuOC0xMC43IDAtMTcuOC02LjUtMTcuOC0xNy43di01NC41aC0xNS44djU1YzAgMTguOSAxMy40IDMxLjkgMzMuNyAzMS45IDIwLjEgMCAzMy40LTEzIDMzLjQtMzEuOXYtNTVoLTE1Ljd6bTM0LjQgODUuNGgxNS44di0yOS41aDE1LjVjMTYgMCAyNy4yLTExLjUgMjcuMi0yOC4xcy0xMS4yLTI3LjgtMjcuMi0yNy44aC0zOS4xdjEzLjRoNy44djcyem0xNS44LTQzdi0yOS4xaDEyLjljOC43IDAgMTMuNyA1LjcgMTMuNyAxNC40IDAgOC45LTUuMSAxNC43LTE0IDE0LjdoLTEyLjZ6bTU3IDQzaDE1Ljh2LTI5LjVoMTUuNWMxNiAwIDI3LjItMTEuNSAyNy4yLTI4LjFzLTExLjItMjcuOC0yNy4yLTI3LjhoLTM5LjF2MTMuNGg3Ljh2NzJ6bTE1LjctNDN2LTI5LjFoMTIuOWM4LjcgMCAxMy43IDUuNyAxMy43IDE0LjQgMCA4LjktNSAxNC43LTE0IDE0LjdoLTEyLjZ6bTU3LjEgMzQuOGMwIDUuOCAyLjQgOC4yIDguMiA4LjJoMzcuNmM1LjggMCA4LjItMi40IDguMi04LjJ2LTEzaC0xNC4zdjUuMmMwIDEuNy0xIDIuNi0yLjYgMi42aC0xOC42Yy0xLjcgMC0yLjYtMS0yLjYtMi42di02MS4yYzAtNS43LTIuNC04LjItOC4yLTguMkg0MDF2MTMuNGg1LjJjMS43IDAgMi42IDEgMi42IDIuNnY2MS4yem02My40IDBjMCA1LjggMi40IDguMiA4LjIgOC4ySDUxOWM1LjcgMCA4LjItMi40IDguMi04LjJ2LTEzaC0xNC4zdjUuMmMwIDEuNy0xIDIuNi0yLjYgMi42aC0xOS43Yy0xLjcgMC0yLjYtMS0yLjYtMi42di0yMC4zaDI3Ljd2LTEzLjRINDg4di0yMi40aDE5LjJjMS43IDAgMi42IDEgMi42IDIuNnY1LjJINTI0di0xM2MwLTUuNy0yLjUtOC4yLTguMi04LjJoLTUxLjZ2MTMuNGg3Ljh2NjMuOXptNTguOS03NnY1LjloMS42di01LjloMi43di0xLjJoLTd2MS4yaDIuN3ptNS43LTEuMnY3LjFoMS41di01LjdsMi4zIDUuN2gxLjNsMi4zLTUuN3Y1LjdoMS41di03LjFoLTIuM2wtMi4xIDUuMS0yLjEtNS4xaC0yLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTkzLjEgMTkyLjZBMTAuNCAxMC40IDAgMSAxIDYwNC41IDIxMGExMC40IDEwLjQgMCAxIDEgLTExLjQtMTcuNHptLTQ3LjEgMTIuMmEzOC41IDM4LjUgMCAxIDEgNzUtMTcuNiAzOC41IDM4LjUgMCAxIDEgLTc1IDE3LjZ6TTQzMy43IDMzNi43YzMuMiA0LjYgNS44IDkgNy4zIDEzLjRjMSAzLjEgMi40IDcuMyA1LjUgOC45Yy4yIC4xIC4zIC4yIC41IC4yYzUuNyAyLjEgMjAuMyAxLjcgMjAuMyAxLjdoMjYuOGMyLjMgMCAyMi40IDAgMjEuOS0yLjNjLTIuNC0xMC44LTE0LjktMTIuNy0yNC40LTE4LjNjLTguNy01LjItMTctMTEuMS0yMC44LTIxLjNjLTItNS4yLS44LTE3LjQgMi42LTIxLjhjMi41LTMuMiA2LjEtNS4zIDEwLTYuMmM0LjMtLjkgOC44LS4xIDEzLjEgLjNjNS4zIC41IDEwLjYgMS41IDE1LjkgMi4yYzEwLjMgMS4zIDIwLjYgMS45IDMxIDEuNmMxNy4xLS41IDM0LjItMy4yIDUwLjQtOC43YzExLjMtMy44IDIyLjQtOC45IDMyLTE2LjFjMTAuOS04LjEgOC4xLTcuNC0zLTYuMmMtMTMuMyAxLjQtMjYuNiAxLjYtMzkuOSAuOGMtMTIuNC0uNy0yNC43LTIuMi0zNS45LTcuOWMtOC44LTQuNi0xNi40LTkuMS0yMy40LTE2LjJjLTEtMS4xLTEuNy00LjIgLjItNi4yYzEuOS0xLjkgNS44LS44IDcgLjJjMTIuMiAxMC4yIDMwLjUgMTguNiA0OS4zIDE5LjVjMTAuMiAuNSAyMC4xIC43IDMwLjQgLjNjNS4xLS4yIDEyLjgtLjIgMTcuOS0uM2MyLjYgMCA5LjggLjcgMTEuMi0yLjFjLjQtLjggLjQtMS44IC4zLTIuN2MtMS41LTQwLjktNC41LTg2LjktNDcuMy0xMDYuNWMtMzEuOS0xNC42LTc5LjctMzcuMi05OS45LTQ2LjZjLTQuNy0yLjItMTAuMiAxLjMtMTAuMiA2LjVjMCAxMy42IC43IDMzLjMgLjcgNTEuMWMtOS43LTkuOS0yNi0xNi4xLTM4LjQtMjEuOGMtMTQuMS02LjUtMjguNy0xMi00My41LTE2LjZjLTI5LjgtOS4yLTYwLjctMTQuOS05MS43LTE4Yy0zNS4yLTMuNS03MS0xLjgtMTA1LjcgNS4zQzE0NyAxMTUuMSA5MC44IDE0Mi42IDQ4LjIgMTgyLjdDMjIuMSAyMDcuMyAxLjYgMjQyLjQgLjIgMjc3LjljLTIgNTAuMyAxMi4xIDc3LjMgMzggMTA1LjJjNDEuMyA0NC40IDEzMC4yIDUwLjYgMTY2LjItMmMxNi4yLTIzLjcgMTkuNy01NS44IDgtODJjLTExLjgtMjYuMi0zOC44LTQ1LjEtNjcuNC00NmMtMjIuMi0uNy00NS45IDEwLjYtNTQuNSAzMS4xYy02LjUgMTUuNy0yLjggMzUuMSA5IDQ3LjNjNC42IDQuOCAxMC45IDguNyAxNy43IDcuMWM0LS45IDcuNC0zLjkgOC04Yy45LTYtNC40LTkuOS03LjYtMTQuNWMtNS44LTguMy00LjctMjAuOSAyLjctMjcuOWM2LjItNiAxNS4zLTcuOCAyMy45LTcuN2M4IDAgMTYuMiAxLjQgMjMuMSA1LjVjOS43IDUuNyAxNi4yIDE2LjIgMTguNCAyNy4yYzYuNyAzMy0yMC4yIDU5LjktNTYuNiA2MmMtMTguNiAxLjEtMzcuNi0zLjgtNTIuMS0xNS41QzQwLjEgMzI5LjkgMzEuMSAyNjkuNCA3My4yIDIzN2M0MC0zMC43IDkwLjQtMjIuOCAxMjAuMi02LjhjMjMuOCAxMi44IDQxLjUgMzMuNiA1NSA1Ni43YzYuNyAxMS42IDEyLjUgMjMuNyAxNy44IDM2LjFjNS4xIDExLjggOS45IDIzLjggMjAuMiAzMi41YzYuOCA1LjggMTUuMiA1LjYgMjQuMSA1LjZoNTAuOGM2LjkgMCA1LjItNC42IDIuMi03LjdjLTYuNy02LjktMTYuNC04LjQtMjUuNC0xMC45Yy0yMC41LTUuNi0xOC40LTMyLjgtMTIuNy0zMi44YzE4LjMgMCAxOC45IC42IDM0LjkgLjNjMjMuMi0uMyAzMC4yLTEuNyA0OC4zIDVjOS43IDMuNiAxOSAxMy4xIDI1LjEgMjEuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3dpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDE1Ni4wOWMwLTQuNTEtLjA4LTktLjItMTMuNTJhMTk2LjMxIDE5Ni4zMSAwIDAgMC0yLjU4LTI5LjQyIDk5LjYyIDk5LjYyIDAgMCAwLTkuMjItMjhBOTQuMDggOTQuMDggMCAwIDAgMzk0Ljg0IDQ0YTk5LjE3IDk5LjE3IDAgMCAwLTI4LTkuMjIgMTk1IDE5NSAwIDAgMC0yOS40My0yLjU5Yy00LjUxLS4xMi05LS4xNy0xMy41Mi0uMkgxMjQuMTRjLTQuNTEgMC05IC4wOC0xMy41Mi4yLTIuNDUuMDctNC45MS4xNS03LjM3LjI3YTE3MS42OCAxNzEuNjggMCAwIDAtMjIuMDYgMi4zMiAxMDMuMDYgMTAzLjA2IDAgMCAwLTIxLjIxIDYuMXEtMy40NiAxLjQ1LTYuODEgMy4xMmE5NC42NiA5NC42NiAwIDAgMC0xOC4zOSAxMi4zMmMtMS44OCAxLjYxLTMuNjkgMy4yOC01LjQzIDVBOTMuODYgOTMuODYgMCAwIDAgMTIgODUuMTdhOTkuNDUgOTkuNDUgMCAwIDAtOS4yMiAyOCAxOTYuMzEgMTk2LjMxIDAgMCAwLTIuNTQgMjkuNGMtLjEzIDQuNTEtLjE4IDktLjIxIDEzLjUydjE5OS44M2MwIDQuNTEuMDggOSAuMjEgMTMuNTFhMTk2LjA4IDE5Ni4wOCAwIDAgMCAyLjU4IDI5LjQyIDk5LjMgOTkuMyAwIDAgMCA5LjIyIDI4QTk0LjMxIDk0LjMxIDAgMCAwIDUzLjE3IDQ2OGE5OS40NyA5OS40NyAwIDAgMCAyOCA5LjIxIDE5NSAxOTUgMCAwIDAgMjkuNDMgMi41OWM0LjUuMTIgOSAuMTcgMTMuNTIuMkgzMjMuOTFjNC41MSAwIDktLjA4IDEzLjUyLS4yYTE5Ni41OSAxOTYuNTkgMCAwIDAgMjkuNDQtMi41OSA5OS41NyA5OS41NyAwIDAgMCAyOC05LjIxQTk0LjIyIDk0LjIyIDAgMCAwIDQzNiA0MjYuODRhOTkuMyA5OS4zIDAgMCAwIDkuMjItMjggMTk0Ljc5IDE5NC43OSAwIDAgMCAyLjU5LTI5LjQyYy4xMi00LjUuMTctOSAuMi0xMy41MVYxNzIuMTRjLS4wMS01LjM1LS4wMS0xMC43LS4wMS0xNi4wNXptLTY5Ljg4IDI0MWMtMjAtMzguOTMtNTcuMjMtMjkuMjctNzYuMzEtMTkuNDctMS43MiAxLTMuNDggMi01LjI1IDNsLS40Mi4yNWMtMzkuNSAyMS05Mi41MyAyMi41NC0xNDUuODUtLjM4QTIzNC42NCAyMzQuNjQgMCAwIDEgNDUgMjkwLjEyYTIzMC42MyAyMzAuNjMgMCAwIDAgMzkuMTcgMjMuMzdjNTYuMzYgMjYuNCAxMTMgMjQuNDkgMTUzIDAtNTctNDMuODUtMTA0LjYtMTAxLTE0MS4wOS0xNDcuMjJhMTk3LjA5IDE5Ny4wOSAwIDAgMS0xOC43OC0yNS45YzQzLjcgNDAgMTEyLjcgOTAuMjIgMTM3LjQ4IDEwNC4xMi01Mi41Ny01NS40OS05OC44OS0xMjMuOTQtOTYuNzItMTIxLjc0IDgyLjc5IDgzLjQyIDE1OS4xOCAxMzAuNTkgMTU5LjE4IDEzMC41OSAyLjg4IDEuNTggNSAyLjg1IDYuNzMgNGExMjcuNDQgMTI3LjQ0IDAgMCAwIDQuMTYtMTIuNDdjMTMuMjItNDguMzMtMS42Ni0xMDMuNTgtMzUuMzEtMTQ5LjJDMzI5LjYxIDE0MS43NSAzNzUgMjI5LjM0IDM1Ni40IDMwMy40MmMtLjQ0IDEuNzMtLjk1IDMuNC0xLjQ0IDUuMDkgMzguNTIgNDcuNCAyOC4wNCA5OC4xNyAyMy4xMyA4OC41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3ltZm9ueSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0xMzMuNzQgMTQzLjU0Yy0xMS40Ny40MS0xOS40LTYuNDUtMTkuNzctMTYuODctLjI3LTkuMTggNi42OC0xMy40NCA2LjUzLTE4Ljg1LS4yMy02LjU1LTEwLjE2LTYuODItMTIuODctNi42Ny0zOS43OCAxLjI5LTQ4LjU5IDU3LTU4Ljg5IDExMy44NSAyMS40MyAzLjE1IDM2LjY1LS43MiA0NS4xNC02LjIyIDEyLTcuNzUtMy4zNC0xNS43Mi0xLjQyLTI0LjU2IDQtMTguMTYgMzIuNTUtMTkgMzIgNS4zLS4zNiAxNy44Ni0yNS45MiA0MS44MS03Ny42IDM1LjctMTAuNzYgNTkuNTItMTguMzUgMTE1LTU4LjIgMTYxLjcyLTI5IDM0LjQ2LTU4LjQgMzkuODItNzEuNTggNDAuMjYtMjQuNjUuODUtNDEtMTIuMzEtNDEuNTgtMjkuODQtLjU2LTE3IDE0LjQ1LTI2LjI2IDI0LjMxLTI2LjU5IDIxLjg5LS43NSAzMC4xMiAyNS42NyAxNC44OCAzNC0xMi4wOSA5LjcxLjExIDEyLjYxIDIuMDUgMTIuNTUgMTAuNDItLjM2IDE3LjM0LTUuNTEgMjIuMTgtOSAyNC0yMCAzMy4yNC01NC44NiA0NS4zNS0xMTguMzUgOC4xOS00OS42NiAxNy03OCAxOC4yMy04Mi0xNi45My0xMi43NS0yNy4wOC0yOC41NS00OS44NS0zNC43Mi0xNS42MS00LjIzLTI1LjEyLS42My0zMS44MSA3LjgzLTcuOTIgMTAtNS4yOSAyMyAyLjM3IDMwLjdsMTIuNjMgMTRjMTUuNTEgMTcuOTMgMjQgMzEuODcgMjAuOCA1MC42Mi01LjA2IDI5LjkzLTQwLjcyIDUyLjktODIuODggMzkuOTQtMzYtMTEuMTEtNDIuNy0zNi41Ni0zOC4zOC01MC42MiA3LjUxLTI0LjE1IDQyLjM2LTExLjcyIDM0LjYyIDEzLjYtMi43OSA4LjYtNC45MiA4LjY4LTYuMjggMTMuMDctNC41NiAxNC43NyA0MS44NSAyOC40IDUxLTEuMzkgNC40Ny0xNC41Mi01LjMtMjEuNzEtMjIuMjUtMzkuODUtMjguNDctMzEuNzUtMTYtNjUuNDkgMi45NS03OS42N0MyMDQuMjMgMTQwLjEzIDI1MS45NCAxOTcgMjYyIDIwNS4yOWMzNy4xNy0xMDkgMTAwLjUzLTEwNS40NiAxMDIuNDMtMTA1LjUzIDI1LjE2LS44MSA0NC4xOSAxMC41OSA0NC44MyAyOC42NS4yNSA3LjY5LTQuMTcgMjIuNTktMTkuNTIgMjMuMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlYW1zcGVhayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTIuOCAzNy4yYy0zMi4yIDM4LjEtNTYuMSA4Mi42LTY5LjkgMTMwLjVjMCAuMi0uMSAuMy0uMSAuNUM0My41IDE4NC40IDE2IDIyMyAxNiAyNjhjMCA1OS42IDQ4LjQgMTA4IDEwOCAxMDhzMTA4LTQ4LjQgMTA4LTEwOGMwLTUzLjUtMzguOS05Ny45LTkwLTEwNi41YzE1LjctNDEuOCA0MC40LTc5LjYgNzIuMy0xMTAuN2MxLjgtMS42IDQtMi42IDYuMy0zLjFjMzcuMi0xMS41IDc2LjctMTMuMyAxMTQuOC01LjJDNDU0LjcgNjcuNiA1MzQgMTgwLjcgNTE3LjEgMzAxLjNjLTguNCA2Mi42LTM4LjYgMTEyLjctODcuNyAxNTEuNGMtNTAuMSAzOS43LTEwNy41IDU0LjMtMTcwLjIgNTIuMmwtMjQtMWMxMi40IDIuOCAyNSA0LjkgMzcuNiA2LjNjNDAuNyA0LjIgODEuNCAyLjEgMTIwLjEtMTIuNWM5NC0zNS41IDE0OS4zLTEwMi4zIDE2Mi45LTIwMi41YzQuOC01Mi42LTUuOC0xMDUuNC0zMC44LTE1MkM0NTQuNiAxMS4zIDI5MC44LTM4LjQgMTU5IDMyYy0yLjQgMS40LTQuNSAzLjEtNi4zIDUuMnpNMzA5LjQgNDMzLjljLTIuMSAxMS41LTQuMiAyMS45LTE0LjYgMzEuM2M1My4yLTEgMTIzLjItMjkuMiAxNjEuOC05Ny4xYzM5LjctNjkuOSAzNy42LTEzOS45LTYuMy0yMDcuOEM0MTMuOCAxMDUgMzYwLjUgNzcuOSAyOTMuNyA3My43YzEuNSAyLjMgMy4yIDQuNCA1LjIgNi4zbDUuMiA2LjNjMjUuMSAzMS4zIDM3LjYgNjcuOSA0Mi44IDEwNy41YzIuMSAxNS43LTEgMzAuMy0xMy42IDQxLjhjLTQuMiAzLjEtNS4yIDYuMy00LjIgMTAuNGw3LjMgMTcuN0wzNjUuNyAzMThjNS4yIDExLjUgNC4yIDE5LjgtNi4zIDI4LjJjLTMuMiAyLjUtNi43IDQuNi0xMC40IDYuM2wtMTguOCA4LjQgMy4xIDEzLjZjMy4xIDYuMyAxIDEyLjUtMy4xIDE3LjdjLTIuNSAyLjQtMy44IDUuOS0zLjEgOS40YzIuMSAxMS41LTIuMSAxOS44LTEyLjUgMjUuMWMtMi4xIDEtNC4yIDUuMi01LjIgNy4zem0tMTMzLjYtMy4xYzE2LjcgMTEuNSAzNC41IDIwLjkgNTMuMiAyNi4xYzI0IDUuMiA0MS44LTYuMyA0NC45LTMwLjNjMS04LjQgNS4yLTE0LjYgMTIuNS0xNy43YzcuMy00LjIgOC40LTcuMyAyLjEtMTMuNmwtOS40LTguNCAxMy42LTQuMmM2LjMtMi4xIDcuMy01LjIgNS4yLTExLjVjLTEuNC0zLTIuNC02LjItMy4xLTkuNGMtMy4xLTE0LjYtMi4xLTE1LjcgMTEuNS0xOC44YzguNC0zLjEgMTUuNy02LjMgMjEuOS0xMi41YzMuMS0yLjEgMy4xLTQuMiAxLTguNGwtMTYuNy0zMC4zYy0xLTEuOS0yLjEtMy44LTMuMS01LjdjLTYuNC0xMS43LTEzLTIzLjYtMTUuNy0zNy4xYy0yLjEtOS40LTEtMTcuNyA4LjQtMjRjNS4yLTQuMiA4LjQtOS40IDguNC0xNi43Yy0uNC0xMC4xLTEuNS0yMC4zLTMuMS0zMC4zYy02LjMtMzcuNi0yMy02OC45LTUxLjItOTVjLTUuMi00LjItOS40LTYuMy0xNi43LTQuMkwyMDMuOSA5MS41YzIgMS4yIDQgMi40IDYgMy42bDAgMGM2LjMgMy43IDEyLjIgNy4zIDE3IDEyLjFjMzAuMyAyNi4xIDQxLjggNjEuNiA0NS45IDEwMC4yYzEgOC40IDAgMTYuNy03LjMgMjEuOWMtOC40IDUuMi0xMC40IDEyLjUtNy4zIDIwLjljNC45IDEzLjIgMTAuNCAyNiAxNi43IDM4LjZMMjkxLjYgMzE4Yy02LjMgOC40LTEzLjYgMTEuNS0yMS45IDE0LjZjLTEyLjUgMy4xLTE0LjYgNy4zLTEwLjQgMjAuOWMuNiAxLjUgMS40IDIuOCAyLjEgNC4yYzIuMSA1LjIgMSA4LjQtNC4yIDEwLjRsLTEyLjUgMy4xIDUuMiA0LjIgNC4yIDQuMmM0LjIgNS4yIDQuMiA4LjQtMi4xIDEwLjRjLTcuMyA0LjItMTEuNSA5LjQtMTEuNSAxNy43YzAgMTIuNS03LjMgMTkuOC0xOC44IDI0Yy0zLjggMS03LjYgMS41LTExLjUgMWwtMzQuNS0yLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbGVncmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCw4QzExMS4wMzMsOCwwLDExOS4wMzMsMCwyNTZTMTExLjAzMyw1MDQsMjQ4LDUwNCw0OTYsMzkyLjk2Nyw0OTYsMjU2LDM4NC45NjcsOCwyNDgsOFpNMzYyLjk1MiwxNzYuNjZjLTMuNzMyLDM5LjIxNS0xOS44ODEsMTM0LjM3OC0yOC4xLDE3OC4zLTMuNDc2LDE4LjU4NC0xMC4zMjIsMjQuODE2LTE2Ljk0OCwyNS40MjUtMTQuNCwxLjMyNi0yNS4zMzgtOS41MTctMzkuMjg3LTE4LjY2MS0yMS44MjctMTQuMzA4LTM0LjE1OC0yMy4yMTUtNTUuMzQ2LTM3LjE3Ny0yNC40ODUtMTYuMTM1LTguNjEyLTI1LDUuMzQyLTM5LjUsMy42NTItMy43OTMsNjcuMTA3LTYxLjUxLDY4LjMzNS02Ni43NDYuMTUzLS42NTUuMy0zLjEtMS4xNTQtNC4zODRzLTMuNTktLjg0OS01LjEzNS0uNXEtMy4yODMuNzQ2LTEwNC42MDgsNjkuMTQyLTE0Ljg0NSwxMC4xOTQtMjYuODk0LDkuOTM0Yy04Ljg1NS0uMTkxLTI1Ljg4OC01LjAwNi0zOC41NTEtOS4xMjMtMTUuNTMxLTUuMDQ4LTI3Ljg3NS03LjcxNy0yNi44LTE2LjI5MXEuODQtNi43LDE4LjQ1LTEzLjcsMTA4LjQ0Ni00Ny4yNDgsMTQ0LjYyOC02Mi4zYzY4Ljg3Mi0yOC42NDcsODMuMTgzLTMzLjYyMyw5Mi41MTEtMzMuNzg5LDIuMDUyLS4wMzQsNi42MzkuNDc0LDkuNjEsMi44ODVhMTAuNDUyLDEwLjQ1MiwwLDAsMSwzLjUzLDYuNzE2QTQzLjc2NSw0My43NjUsMCwwLDEsMzYyLjk1MiwxNzYuNjZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbmNlbnRXZWlibyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Mi4zIDQ5NS44YzEuNCAxOS45LTI3LjYgMjIuMi0yOS43IDIuOUMzMSAzNjguOCA3My43IDI1OS4yIDE0NCAxODUuNWMtMTUuNi0zNCA5LjItNzcuMSA1MC42LTc3LjEgMzAuMyAwIDU1LjEgMjQuNiA1NS4xIDU1LjEgMCA0NC00OS41IDcwLjgtODYuOSA0NS4xLTY1LjcgNzEuMy0xMDEuNCAxNjkuOC05MC41IDI4Ny4yek0xOTIgLjFDNjYuMS4xLTEyLjMgMTM0LjMgNDMuNyAyNDIuNCA1Mi40IDI1OS44IDc5IDI0Ni45IDcwIDIyOSAyMy43IDEzNi40IDkxIDI5LjggMTkyIDI5LjhjNzUuNCAwIDEzNi45IDYxLjQgMTM2LjkgMTM2LjkgMCA5MC44LTg2LjkgMTUzLjktMTY3LjcgMTMzLjEtMTkuMS00LjEtMjUuNiAyNC40LTYuNiAyOS4xIDExMC43IDIzLjIgMjA0LTYwIDIwNC0xNjIuM0MzNTguNiA3NC43IDI4NCAuMSAxOTIgLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZVJlZFlldGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4LjIzIDI0MS43bDIwLjcgNy4xYy05LjYtMjMuOS0yMy45LTM3LTMxLjctNDQuOGw3LjEtMTguMmMuMiAwIDEyLjMtMjcuOC0yLjUtMzAuNy0uNi0xMS4zLTYuNi0yNy0xOC40LTI3LTcuNi0xMC42LTE3LjctMTIuMy0zMC43LTUuOWExMjIuMiAxMjIuMiAwIDAgMC0yNS4zIDE2LjVjLTUuMy02LjQtMyAuNC0zLTI5LjgtMzcuMS0yNC4zLTQ1LjQtMTEuNy03NC44IDNsLjUuNWEyMzkuMzYgMjM5LjM2IDAgMCAwLTY4LjQtMTMuM2MtNS41LTguNy0xOC42LTE5LjEtMjUuMS0yNS4xbDI0LjggNy4xYy01LjUtNS41LTI2LjgtMTIuOS0zNC4yLTE1LjIgMTguMi00LjEgMjkuOC0yMC44IDQyLjUtMzMtMzQuOS0xMC4xLTY3LjktNS45LTk3LjkgMTEuOGwxMi00NC4yTDE4MiAwYy0zMS42IDI0LjItMzMgNDEuOS0zMy43IDQ1LjUtLjktMi40LTYuMy0xOS42LTE1LjItMjdhMzUuMTIgMzUuMTIgMCAwIDAtLjUgMjUuM2MzIDguNCA1LjkgMTQuOCA4LjQgMTguOS0xNi0zLjMtMjguMy00LjktNDkuMiAwaC0zLjdsMzMgMTQuM2ExOTQuMjYgMTk0LjI2IDAgMCAwLTQ2LjcgNjcuNGwtMS43IDguNCAxLjcgMS43IDcuNi00LjdjLTMuMyAxMS42LTUuMyAxOS40LTYuNiAyNS44YTIwMC4xOCAyMDAuMTggMCAwIDAtMjcuOCA0MC4zYy0xNSAxLTMxLjggMTAuOC00MC4zIDE0LjNsMyAzLjQgMjguOCAxYy0uNSAxLS43IDIuMi0xLjIgMy4yLTcuMyA2LjQtMzkuOCAzNy43LTMzIDgwLjdsMjAuMi0yMi40Yy41IDEuNy43IDMuNCAxLjIgNS4yIDAgMjUuNS40IDg5LjYgNjQuOSAxNTAuNSA0My42IDQwIDk2IDYwLjIgMTU3LjUgNjAuMiAxMjEuNyAwIDIyMy04Ny4zIDIyMy0yMTEuNSA2LjgtOS43LTEuMiAzIDE2LjctMjUuMWwxMyAxNC4zIDIuNS0uNUExODEuODQgMTgxLjg0IDAgMCAwIDQ5NSAyNTVhNDQuNzQgNDQuNzQgMCAwIDAtNi44LTEzLjN6TTM5OCAxMTEuMmwtLjUgMjEuOWM1LjUgMTguMSAxNi45IDE3LjIgMjIuNCAxNy4ybC0zLjQtNC43IDIyLjQtNS40YTI0Mi40NCAyNDIuNDQgMCAwIDEtMjcgMGMxMi44LTIuMSAzMy4zLTI5IDQzLTExLjMgMy40IDcuNiA2LjQgMTcuMiA5LjMgMjcuOGwxLjctNS45YTU2LjM4IDU2LjM4IDAgMCAxLTEuNy0xNS4yYzUuNC41IDguOCAzLjQgOS4zIDEwLjEuNSA2LjQgMS43IDE0LjggMy40IDI1LjNsNC43LTExLjNjNC42IDAgNC41LTMuNi0yLjUgMjAuNy0yMC45LTguNy0zNS4xLTguNC00Ni41LTguNGwxOC4yLTE2Yy0yNS4zIDguMi0zMyAxMC44LTU0LjggMjAuOS0xLjEtNS40LTUtMTMuNS0xNi0xOS45LTMuMiAzLjgtMi44LjktLjcgMTQuOGgtMi41YTYyLjMyIDYyLjMyIDAgMCAwLTguNC0yMy4xbDQuMi0zLjRjOC40LTcuMSAxMS44LTE0LjMgMTAuNi0yMS45LS41LTYuNC01LjQtMTMuNS0xMy41LTIwLjcgNS42LTMuNCAxNS4yLS40IDI4LjMgOC41em0tMzkuNi0xMC4xYzIuNyAxLjkgMTEuNCA1LjQgMTguOSAxNy4yIDQuMiA4LjQgNCA5LjggMy40IDExLjEtLjUgMi40LS41IDQuMy0zIDcuMS0xLjcgMi41LTUuNCA0LjctMTEuOCA3LjYtNy42LTEzLTE2LjUtMjMuNi0yNy44LTMxLjJ6TTkxIDE0My4xbDEuMi0xLjdjMS4yLTIuOSA0LjItNy42IDkuMy0xNS4ybDIuNS0zLjQtMTMgMTIuMyA1LjQtNC43LTEwLjEgOS4zLTQuMiAxLjJjMTIuMy0yNC4xIDIzLjEtNDEuMyAzMi41LTUwLjIgOS4zLTkuMyAxNi0xNiAyMC4yLTE5LjRsLTYuNCAxLjJjLTExLjMtNC4yLTE5LjQtNy4xLTI0LjgtOC40IDIuNS0uNSAzLjctLjUgMy4yLS41IDEwLjMgMCAxNy41LjUgMjAuOSAxLjJhNTIuMzUgNTIuMzUgMCAwIDAgMTYgMi41bC41LTEuNy04LjQtMzUuOCAxMy41IDI5YTQyLjg5IDQyLjg5IDAgMCAwIDUuOS0xNC4zYzEuNy02LjQgNS40LTEzIDEwLjEtMTkuNHM3LjYtMTAuNiA5LjMtMTEuM2EyMzQuNjggMjM0LjY4IDAgMCAwLTYuNCAyNS4zbC0xLjcgNy4xLS41IDQuNyAyLjUgMi41QzE5MC40IDM5LjkgMjE0IDM0IDIzOS44IDM0LjVsMjEuMS41Yy0xMS44IDEzLjUtMjcuOCAyMS45LTQ4LjUgMjQuOGEyMDEuMjYgMjAxLjI2IDAgMCAxLTIzLjQgMi45bC0uMi0uNS0yLjUtMS4yYTIwLjc1IDIwLjc1IDAgMCAwLTE0IDJjLTIuNS0uMi00LjktLjUtNy4xLS43bC0yLjUgMS43LjUgMS4yYzIgLjIgMy45LjUgNi4yLjdsLTIgMy40IDMuNC0uNS0xMC42IDExLjNjLTQuMiAzLTUuNCA2LjQtNC4yIDkuM2w1LjQtMy40aDEuMmEzOS40IDM5LjQgMCAwIDEgMjUuMy0xNS4ydi0zYzYuNC41IDEzIDEgMTkuNCAxLjIgNi40IDAgOC40LjUgNS40IDEuMmExODkuNiAxODkuNiAwIDAgMSAyMC43IDEzLjVjMTMuNSAxMC4xIDIzLjYgMjEuOSAzMCAzNS40IDguOCAxOC4yIDEzLjUgMzcuMSAxMy41IDU2LjZhMTQxLjEzIDE0MS4xMyAwIDAgMS0zIDI4LjMgMjA5LjkxIDIwOS45MSAwIDAgMS0xNiA0NmwyLjUuNWMxOC4yLTE5LjcgNDEuOS0xNiA0OS4yLTE2bC02LjQgNS45IDIyLjQgMTcuNy0xLjcgMzAuN2MtNS40LTEyLjMtMTYuNS0yMS4xLTMzLTI3LjggMTYuNSAxNC44IDIzLjYgMjEuMSAyMS45IDIwLjItNC44LTIuOC0zLjUtMS45LTEwLjgtMy43IDQuMSA0LjEgMTcuNSAxOC44IDE4LjIgMjAuN2wuMi4yLS4yLjJjMCAxLjggMS42LTEuMi0xNCAyMi45LTc1LjItMTUuMy0xMDYuMjctNDIuNy0xNDEuMi02My4ybDExLjggMS4yYy0xMS44LTE4LjUtMTUuNi0xNy43LTM4LjQtMjYuMUwxNDkgMjI1Yy04LjgtMy0xOC4yLTMtMjguMy41bDcuNi0xMC42LTEuMi0xLjdjLTE0LjkgNC4zLTE5LjggOS4yLTIyLjYgMTEuMy0xLjEtNS41LTIuOC0xMi40LTEyLjMtMjguOGwtMS4yIDI3LTEzLjItNWMxLjUtMjUuMiA1LjQtNTAuNSAxMy4yLTc0LjZ6bTI3Ni41IDMzMGMtNDkuOSAyNS01Ni4xIDIyLjQtNTkgMjMuOS0yOS44LTExLjgtNTAuOS0zMS43LTYzLjUtNTguOGwzMCAxNi41Yy05LjgtOS4zLTE4LjMtMTYuNS0zOC40LTQ0LjNsMTEuOCAyMy4xLTE3LjctNy42YzE0LjIgMjEuMSAyMy41IDUxLjcgNjYuNiA3My41LTEyMC44IDI0LjItMTk5LTcyLjEtMjAwLjktNzQuM2EyNjIuNTcgMjYyLjU3IDAgMCAwIDM1LjQgMjQuOGMzLjQgMS43IDcuMSAyLjUgMTAuMSAxLjJsLTE2LTIwLjdjOS4yIDQuMiA5LjUgNC41IDY5LjEgMjktNDIuNS0yMC43LTczLjgtNDAuOC05My4yLTYwLjItLjUgNi40LTEuMiAxMC4xLTEuMiAxMC4xYTgwLjI1IDgwLjI1IDAgMCAxIDIwLjcgMjYuNmMtMzktMTguOS01Ny42LTQ3LjYtNzEuMy04Mi42IDQ5LjkgNTUuMSAxMTguOSAzNy41IDEyMC41IDM3LjEgMzQuOCAxNi40IDY5LjkgMjMuNiAxMTMuOSAxMC42IDMuMyAwIDIwLjMgMTcgMjUuMyAzOS4xbDQuMi0zLTIuNS0yMy42YzkgOSAyNC45IDIyLjYgMzQuNCAxMy0xNS42LTUuMy0yMy41LTkuNS0yOS41LTMxLjcgNC42IDQuMiA3LjYgOSAyNy44IDE1bDEuMi0xLjItMTAuNS0xNC4yYzExLjctNC44LTMuNSAxIDMyLTEwLjggNC4zIDM0LjMgOSA0OS4yLjcgODkuNXptMTE1LjMtMjE0LjRsLTIuNS41IDMgOS4zYy0zLjUgNS45LTIzLjcgNDQuMy03MS42IDc5LjctMzkuNSAyOS44LTc2LjYgMzkuMS04MC45IDQwLjNsLTcuNi03LjEtMS4yIDMgMTQuMyAxNi03LjEtNC43IDMuNCA0LjJoLTEuMmwtMjEuOS0xMy41IDkuMyAyNi42LTE5LTI3LjktMS4yIDIuNSA3LjYgMjljLTYuMS04LjItMjEtMzIuNi01Ni44LTM5LjZsMzIuNSAyMS4yYTIxNC44MiAyMTQuODIgMCAwIDEtOTMuMi02LjRjLTQuMi0xLjItOC45LTIuNS0xMy41LTQuMmwxLjItMy00NC44LTIyLjQgMjYuMSAyMi40Yy01Ny43IDkuMS0xMTMtMjUuNC0xMjYuNC04My40bC0yLjUtMTYuNC0yMi4yNyAyMi4zYzE5LjUtNTcuNSAyNS42LTU3LjkgNTEuNC03MC4xLTkuMS01LjMtMS42LTMuMy0zOC40LTkuMyAxNS44LTUuOCAzMy0xNS40IDczIDUuMmExOC41IDE4LjUgMCAwIDEgMy43LTEuN2MuNi0zLjIuNC0uOCAxLTExLjggMy45IDEwIDMuNiA4LjcgMyA5LjNsMS43LjVjMTIuNy02LjUgOC45LTQuNSAxNy04LjlsLTUuNCAxMy41IDIyLjMtNS44LTguNCA4LjQgMi41IDIuNWM0LjUtMS44IDMwLjMgMy40IDQwLjggMTZsLTIzLjYtMi41YzM5LjQgMjMgNTEuNSA1NCA1NS44IDY5LjZsMS43LTEuMmMtMi44LTIyLjMtMTIuNC0zMy45LTE2LTQwLjEgNC4yIDUgMzkuMiAzNC42IDExMC40IDQ2LTExLjMtLjUtMjMuMSA1LjQtMzQuOSAxOC45bDQ2LjctMjAuMi05LjMgMjEuOWM3LjYtMTAuMSAxNC44LTIzLjYgMjEuMi0zOS42di0uNWwxLjItMy0xLjIgMTZjMTMuNS00MS44IDI1LjMtNzguNSAzNS40LTEwOS43bDEzLjUtMjcuOHYtMmwtNS40LTQuMmgxMC4xbDUuOSA0LjIgMi41LTEuMi0zLjQtMTYgMTIuMyAxOC45IDQxLjgtMjAuMi0xNC44IDEzIC41IDIuOSAxNy43LS41YTE4NCAxODQgMCAwIDEgMzMgNC4ybC0yMy42IDIuNS0xLjIgMyAyNi42IDIzLjFhMjU0LjIxIDI1NC4yMSAwIDAgMSAyNyAzMmMtMTEuMi0zLjMtMTAuMy0zLjQtMjEuMi0zLjRsMTIuMyAzMi41em0tNi4xLTcxLjNsLTMuOSAxMy0xNC4zLTExLjh6bS0yNTQuOCA3LjFjMS43IDEwLjYgNC43IDE3LjcgOC44IDIxLjktOS4zIDYuNi0yNy41IDEzLjktNDYuNSAxNmwuNSAxLjJhNTAuMjIgNTAuMjIgMCAwIDAgMjQuOC0yLjVsLTcuMSAxM2M0LjItMS43IDEwLjEtNy4xIDE3LjctMTQuOCAxMS45LTUuNSAxMi43LTUuMSAyMC4yLTE2LTEyLjctNi40LTE1LjctMTMuNy0xOC40LTE4Ljh6bTMuNy0xMDIuM2MtNi40LTMuNC0xMC42IDMtMTIuMyAxOC45czIuNSAyOS41IDExLjggMzkuNiAxOC4yIDEwLjYgMjYuMSAzIDMuNC0yMy42LTExLjMtNDcuN2EzOS41NyAzOS41NyAwIDAgMC0xNC4yNy0xMy44em0tNC43IDQ2LjNjNS40IDIuMiAxMC41IDEuOSAxMi4zLTEwLjZ2LTQuN2wtMS4yLjVjLTQuMy0zLjEtMi41LTQuNS0xLjctNi4ybC41LS41Yy0uOS0xLjItNS04LjEtMTIuNSA0LjctLjUtMTMuNS41LTIxLjkgMy0yNC44IDEuMi0yLjUgNC43LTEuMiAxMS4zIDQuMiA2LjQgNS40IDExLjMgMTYgMTUuMiAzMi41IDYuNSAyOC0xOS44IDI2LjItMjYuOSA0Ljl6bS00NS01LjVjMS42LjMgOS4zLTEuMSA5LjMtMTQuOGgtLjVjLTUuNC0xLjEtMi4yLTUuNS0uNy01LjktMS43LTMtMy40LTQuMi01LjQtNC43LTguMSAwLTExLjYgMTIuNy04LjEgMjEuMmE3LjUxIDcuNTEgMCAwIDAgNS40MyA0LjJ6TTIxNiA4Mi45bC0yLjUuNS41IDNhNDguOTQgNDguOTQgMCAwIDEgMjYuMSA1LjljLTIuNS01LjUtMTAtMTQuMy0yOC4zLTE0LjNsLjUgMi41em0tNzEuOCA0OS40YzIxLjcgMTYuOCAxNi41IDIxLjQgNDYuNSAyMy42bC0yLjktNC43YTQyLjY3IDQyLjY3IDAgMCAwIDE0LjgtMjguM2MxLjctMTYtMS4yLTI5LjUtOC44LTQxLjNsMTMtNy42YTIuMjYgMi4yNiAwIDAgMC0uNS0xLjcgMTQuMjEgMTQuMjEgMCAwIDAtMTMuNSAxLjdjLTEyLjcgNi43LTI4IDIwLjktMjkgMjIuNC0xLjcgMS43LTMuNCA1LjktNS40IDEzLjVhOTkuNjEgOTkuNjEgMCAwIDAtMi45IDIzLjZjLTQuNy04LTEwLjUtNi40LTE5LjktNS45bDcuMSA3LjZjLTE2LjUgMC0yMy4zIDE1LjQtMjMuNiAxNiA2LjggMCA0LjYtNy42IDMwLTEyLjMtNC4zLTYuMy0zLjMtNS00LjktNi42em0xOC43LTE4LjdjMS4yLTcuNiAzLjQtMTMgNi40LTE3LjIgNS40LTYuNCAxMC42LTEwLjEgMTYtMTEuOCA0LjItMS43IDcuMSAxLjIgMTAuMSA5LjNhNzIuMTQgNzIuMTQgMCAwIDEgMyAyNS4zYy0uNSA5LjMtMy40IDE3LjItOC40IDIzLjEtMi45IDMuNC01LjQgNS45LTYuNCA3LjZhMzkuMjEgMzkuMjEgMCAwIDEtMTEuMy0uNWwtNy4xLTMuNC01LjQtNi40Yy44LTEwIDEuMy0xOC44IDMuMS0yNnptNDIgNTYuMWMtMzQuOCAxNC40LTM0LjcgMTQtMzYuMSAxNC4zLTIwLjggNC43LTE5LTI0LjQtMTguOS0yNC44bDUuOS0xLjItLjUtMi41Yy0yMC4yLTIuNi0zMSA0LjItMzIuNSA0LjkuNS41IDMgMy40IDUuOSA5LjMgNC4yLTYuNCA4LjgtMTAuMSAxNS4yLTEwLjZhODMuNDcgODMuNDcgMCAwIDAgMS43IDMzLjdjLjEuNSAyLjYgMTcuNCAyNy41IDI0LjEgMTEuMyAzIDI3IDEuMiA0OC45LTUuNGwtOS4yLjVjLTQuMi0xNC44LTYuNC0yNC44LTUuOS0yOS41IDExLjMtOC44IDIxLjktMTEuMyAzMC43LTcuNmgyLjVsLTExLjgtNy42LTcuMS41Yy01LjkgMS4yLTEyLjMgNC4yLTE5LjQgOC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVtZWNvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMi45IDguNDNjOS45LTUuNzMgMjYtNS44MiAzNS45NS0uMjFMNDMwIDExNS44NWMxMCA1LjYgMTggMTkuNDQgMTggMzAuODZWMzY0YzAgMTEuNDQtOC4wNiAyNS4yOS0xOCAzMUwyMzguODEgNTAzLjc0Yy05LjkzIDUuNjYtMjYgNS41Ny0zNS44NS0uMjFMMTcuODYgMzk1LjEyQzggMzg5LjM0IDAgMzc1LjM4IDAgMzY0VjE0Ni43MWMwLTExLjQ0IDgtMjUuMzYgMTcuOTEtMzEuMDh6bS03Ny40IDE5OS44M2MtMTUuOTQgMC0zMS44OS4xNC00Ny44My4xNHYxMDEuNDVIOTYuOFYyODBoMjguN2M0OS43MSAwIDQ5LjU2LTcxLjc0IDAtNzEuNzR6bTE0MC4xNCAxMDAuMjlsLTMwLjczLTM0LjY0YzM3LTcuNTEgMzQuOC02NS4yMy0xMC44Ny02NS41MS0xNi4wOSAwLTMyLjE3LS4xNC00OC4yNi0uMTR2MTAxLjU5aDE5LjEzdi0zMy45MWgxOC40MWwyOS41NiAzMy45MWgyMi43NnptLTQxLjU5LTgyLjMyYzIzLjM0IDAgMjMuMjYgMzIuNDYgMCAzMi40NmgtMjkuMTN2LTMyLjQ2em0tOTUuNTYtMS42YzIxLjE4IDAgMjEuMTEgMzguODUgMCAzOC44NUg5Ni4xOHYtMzguODR6bTE5Mi42NS0xOC4yNWMtNjguNDYgMC03MSAxMDUuOCAwIDEwNS44IDY5LjQ4LS4wMSA2OS40MS0xMDUuOCAwLTEwNS44em0wIDE3LjM5YzQ0LjEyIDAgNDQuOCA3MC44NiAwIDcwLjg2cy00NC40My03MC44NiAwLTcwLjg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVtZWlzbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDg4LjI4NmMwLTEwIDYuMjg2LTIxLjcxNCAxNy43MTUtMjEuNzE0IDExLjE0MiAwIDE3LjcxNCAxMS43MTQgMTcuNzE0IDIxLjcxNCAwIDEwLjI4NS02LjU3MiAyMS43MTQtMTcuNzE0IDIxLjcxNEMyMTQuMjg2IDExMCAyMDggOTguNTcxIDIwOCA4OC4yODZ6bTMwNCAxNjBjMCAzNi4wMDEtMTEuNDI5IDEwMi4yODYtMzYuMjg2IDEyOS43MTQtMjIuODU4IDI0Ljg1OC04Ny40MjggNjEuMTQzLTEyMC44NTcgNzAuNTcybC0xLjE0My4yODZ2MzIuNTcxYzAgMTYuMjg2LTEyLjU3MiAzMC41NzEtMjkuMTQzIDMwLjU3MS0xMCAwLTE5LjQyOS01LjcxNC0yNC41NzItMTQuMjg2LTUuNDI3IDguNTcyLTE0Ljg1NiAxNC4yODYtMjQuODU2IDE0LjI4Ni0xMCAwLTE5LjQyOS01LjcxNC0yNC44NTgtMTQuMjg2LTUuMTQyIDguNTcyLTE0LjU3MSAxNC4yODYtMjQuNTcgMTQuMjg2LTEwLjI4NiAwLTE5LjQyOS01LjcxNC0yNC44NTgtMTQuMjg2LTUuMTQzIDguNTcyLTE0LjU3MSAxNC4yODYtMjQuNTcxIDE0LjI4Ni0xOC44NTcgMC0yOS40MjktMTUuNzE0LTI5LjQyOS0zMi44NTctMTYuMjg2IDEyLjI4NS0zNS43MTUgMTkuNDI4LTU2LjU3MSAxOS40MjgtMjIgMC00My40MjktOC4yODUtNjAuMjg2LTIyLjg1NyAxMC4yODUtLjI4NiAyMC41NzEtMi4yODYgMzAuMjg1LTUuNzE0LTIwLjg1Ny01LjcxNC0zOS40MjgtMTguODU3LTUyLTM2LjI4NiAyMS4zNyA0LjY0NSA0Ni4yMDkgMS42NzMgNjcuMTQzLTExLjE0My0yMi0yMi01Ni41NzEtNTguODU3LTY4LjU3Mi04Ny40MjhDMS4xNDMgMzIxLjcxNCAwIDMwMy43MTQgMCAyODkuNDI5YzAtNDkuNzE0IDIwLjI4Ni0xNjAgODYuMjg2LTE2MCAxMC41NzEgMCAxOC44NTcgNC44NTggMjMuMTQzIDE0Ljg1N2ExNTguNzkyIDE1OC43OTIgMCAwIDEgMTItMTUuNDI4YzItMi41NzIgNS43MTQtNS40MjkgNy4xNDMtOC4yODYgNy45OTktMTIuNTcxIDExLjcxNC0yMS4xNDIgMjEuNzE0LTM0QzE4Mi41NzEgNDUuNDI4IDIzMiAxNy4xNDMgMjg1LjE0MyAxNy4xNDNjNiAwIDEyIC4yODUgMTcuNzE0IDEuMTQzQzMxMy43MTQgNi41NzEgMzI4Ljg1NyAwIDM0NC41NzIgMGMxNC41NzEgMCAyOS43MTQgNiA0MCAxNi4yODYuODU3Ljg1OCAxLjQyOCAyLjI4NiAxLjQyOCAzLjQyOCAwIDMuNzE0LTEwLjI4NSAxMy40MjktMTIuODU3IDE2LjI4NiA0LjI4NiAxLjQyOSAxNS43MTQgNi44NTggMTUuNzE0IDEyIDAgMi44NTctMi44NTcgNS4xNDMtNC41NzEgNy4xNDMgMzEuNDI5IDI3LjcxNCA0OS40MjkgNjcuMTQzIDU2LjI4NiAxMDggNC4yODYtNS4xNDMgMTAuMjg1LTguNTcyIDE3LjE0My04LjU3MiAxMC41NzEgMCAyMC44NTcgNy4xNDQgMjguNTcxIDE0LjAwMUM1MDcuMTQzIDE4Ny4xNDMgNTEyIDIyMS43MTQgNTEyIDI0OC4yODZ6TTE4OCA4OS40MjhjMCAxOC4yODYgMTIuNTcxIDM3LjE0MyAzMi4yODYgMzcuMTQzIDE5LjcxNCAwIDMyLjI4NS0xOC44NTcgMzIuMjg1LTM3LjE0MyAwLTE4LTEyLjU3MS0zNi44NTctMzIuMjg1LTM2Ljg1Ny0xOS43MTUgMC0zMi4yODYgMTguODU4LTMyLjI4NiAzNi44NTd6TTIzNy43MTQgMTk0YzAtMTkuNzE0IDMuNzE0LTM5LjE0MyA4LjU3MS01OC4yODYtNTIuMDM5IDc5LjUzNC0xMy41MzEgMTg0LjU3MSA2OC44NTggMTg0LjU3MSAyMS40MjggMCA0Mi41NzEtNy43MTQgNjAtMjAgMi03LjQyOSAzLjcxNC0xNC44NTcgMy43MTQtMjIuNTcyIDAtMTQuMjg2LTYuMjg2LTIxLjQyOC0yMC41NzItMjEuNDI4LTQuNTcxIDAtOS4xNDMuODU3LTEzLjQyOSAxLjcxNC02My4zNDMgMTIuNjY4LTEwNy4xNDIgMy42NjktMTA3LjE0Mi02My45OTl6bS00MS4xNDIgMjU0Ljg1OGMwLTExLjE0My04Ljg1OC0yMC44NTctMjAuMjg2LTIwLjg1Ny0xMS40MjkgMC0yMCA5LjcxNS0yMCAyMC44NTd2MzIuNTcxYzAgMTEuMTQzIDguNTcxIDIxLjE0MiAyMCAyMS4xNDIgMTEuNDI4IDAgMjAuMjg2LTkuNzE1IDIwLjI4Ni0yMS4xNDJ2LTMyLjU3MXptNDkuMTQzIDBjMC0xMS4xNDMtOC41NzItMjAuODU3LTIwLTIwLjg1Ny0xMS40MjkgMC0yMC4yODYgOS43MTUtMjAuMjg2IDIwLjg1N3YzMi41NzFjMCAxMS4xNDMgOC44NTcgMjEuMTQyIDIwLjI4NiAyMS4xNDIgMTEuNDI4IDAgMjAtMTAgMjAtMjEuMTQydi0zMi41NzF6bTQ5LjcxMyAwYzAtMTEuMTQzLTguODU3LTIwLjg1Ny0yMC4yODUtMjAuODU3LTExLjQyOSAwLTIwLjI4NiA5LjcxNS0yMC4yODYgMjAuODU3djMyLjU3MWMwIDExLjE0MyA4Ljg1NyAyMS4xNDIgMjAuMjg2IDIxLjE0MiAxMS40MjggMCAyMC4yODUtOS43MTUgMjAuMjg1LTIxLjE0MnYtMzIuNTcxem00OS43MTUgMGMwLTExLjE0My04Ljg1Ny0yMC44NTctMjAuMjg2LTIwLjg1Ny0xMS40MjggMC0yMC4yODYgOS43MTUtMjAuMjg2IDIwLjg1N3YzMi41NzFjMCAxMS4xNDMgOC44NTggMjEuMTQyIDIwLjI4NiAyMS4xNDIgMTEuNDI5IDAgMjAuMjg2LTEwIDIwLjI4Ni0yMS4xNDJ2LTMyLjU3MXpNNDIxLjcxNCAyODZjLTMwLjg1NyA1OS4xNDItOTAuMjg1IDEwMi41NzItMTU4LjU3MSAxMDIuNTcyLTk2LjU3MSAwLTE2MC41NzEtODQuNTcyLTE2MC41NzEtMTc2LjU3MiAwLTE2Ljg1NyAyLTMzLjQyOSA2LTQ5LjcxNC0yMCAzMy43MTUtMjkuNzE0IDcyLjU3Mi0yOS43MTQgMTExLjQyOSAwIDYwLjI4NiAyNC44NTcgMTIxLjcxNSA3MS40MjkgMTYwLjg1NyA1LjE0My05LjcxNCAxNC44NTctMTYuMjg2IDI2LTE2LjI4NiAxMCAwIDE5LjQyOCA1LjcxNCAyNC41NzEgMTQuMjg2IDUuNDI5LTguNTcxIDE0LjU3MS0xNC4yODYgMjQuODU4LTE0LjI4NiAxMCAwIDE5LjQyOCA1LjcxNCAyNC41NzEgMTQuMjg2IDUuNDI5LTguNTcxIDE0Ljg1Ny0xNC4yODYgMjQuODU4LTE0LjI4NiAxMCAwIDE5LjQyOCA1LjcxNCAyNC44NTcgMTQuMjg2IDUuMTQzLTguNTcxIDE0LjU3MS0xNC4yODYgMjQuNTcyLTE0LjI4NiAxMC44NTcgMCAyMC44NTcgNi41NzIgMjUuNzE0IDE2IDQzLjQyNy0zNi4yODYgNjguNTY5LTkyIDcxLjQyNi0xNDguMjg2em0xMC41NzItOTkuNzE0YzAtNTMuNzE0LTM0LjU3MS0xMDUuNzE0LTkyLjU3Mi0xMDUuNzE0LTMwLjI4NSAwLTU4LjU3MSAxNS4xNDMtNzguODU3IDM2Ljg1N0MyNDAuODYyIDE4My44MTIgMjMzLjQxIDI1NCAzMDIuMjg2IDI1NGMyOC44MDUgMCA5Ny4zNTctMjguNTM4IDg0LjI4NiAzNi44NTcgMjguODU3LTI2IDQ1LjcxNC02NS43MTQgNDUuNzE0LTEwNC41NzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoaW5rUGVha3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY1LjQgNDA5LjRsODcuMS0xNTAuMi0zMi0uMy01NS4xIDk1TDI1OS4yIDAgMjMgNDA3LjRsMzIgLjNMMjU5LjIgNTUuNnptLTM1NS4zLTQ0LjFoMzIuMWwxMTcuNC0yMDIuNUw0NjMgNTExLjlsMzIuNS4xLTIzNS44LTQwNC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaHJlYWRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzMS41IDIzNS43YzIuMiAuOSA0LjIgMS45IDYuMyAyLjhjMjkuMiAxNC4xIDUwLjYgMzUuMiA2MS44IDYxLjRjMTUuNyAzNi41IDE3LjIgOTUuOC0zMC4zIDE0My4yYy0zNi4yIDM2LjItODAuMyA1Mi41LTE0Mi42IDUzaC0uM2MtNzAuMi0uNS0xMjQuMS0yNC4xLTE2MC40LTcwLjJjLTMyLjMtNDEtNDguOS05OC4xLTQ5LjUtMTY5LjZWMjU2di0uMkMxNyAxODQuMyAzMy42IDEyNy4yIDY1LjkgODYuMkMxMDIuMiA0MC4xIDE1Ni4yIDE2LjUgMjI2LjQgMTZoLjNjNzAuMyAuNSAxMjQuOSAyNCAxNjIuMyA2OS45YzE4LjQgMjIuNyAzMiA1MCA0MC42IDgxLjdsLTQwLjQgMTAuOGMtNy4xLTI1LjgtMTcuOC00Ny44LTMyLjItNjUuNGMtMjkuMi0zNS44LTczLTU0LjItMTMwLjUtNTQuNmMtNTcgLjUtMTAwLjEgMTguOC0xMjguMiA1NC40QzcyLjEgMTQ2LjEgNTguNSAxOTQuMyA1OCAyNTZjLjUgNjEuNyAxNC4xIDEwOS45IDQwLjMgMTQzLjNjMjggMzUuNiA3MS4yIDUzLjkgMTI4LjIgNTQuNGM1MS40LS40IDg1LjQtMTIuNiAxMTMuNy00MC45YzMyLjMtMzIuMiAzMS43LTcxLjggMjEuNC05NS45Yy02LjEtMTQuMi0xNy4xLTI2LTMxLjktMzQuOWMtMy43IDI2LjktMTEuOCA0OC4zLTI0LjcgNjQuOGMtMTcuMSAyMS44LTQxLjQgMzMuNi03Mi43IDM1LjNjLTIzLjYgMS4zLTQ2LjMtNC40LTYzLjktMTZjLTIwLjgtMTMuOC0zMy0zNC44LTM0LjMtNTkuM2MtMi41LTQ4LjMgMzUuNy04MyA5NS4yLTg2LjRjMjEuMS0xLjIgNDAuOS0uMyA1OS4yIDIuOGMtMi40LTE0LjgtNy4zLTI2LjYtMTQuNi0zNS4yYy0xMC0xMS43LTI1LjYtMTcuNy00Ni4yLTE3LjhIMjI3Yy0xNi42IDAtMzkgNC42LTUzLjMgMjYuM2wtMzQuNC0yMy42YzE5LjItMjkuMSA1MC4zLTQ1LjEgODcuOC00NS4xaC44YzYyLjYgLjQgOTkuOSAzOS41IDEwMy43IDEwNy43bC0uMiAuMnptLTE1NiA2OC44YzEuMyAyNS4xIDI4LjQgMzYuOCA1NC42IDM1LjNjMjUuNi0xLjQgNTQuNi0xMS40IDU5LjUtNzMuMmMtMTMuMi0yLjktMjcuOC00LjQtNDMuNC00LjRjLTQuOCAwLTkuNiAuMS0xNC40IC40Yy00Mi45IDIuNC01Ny4yIDIzLjItNTYuMiA0MS44bC0uMSAuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGlrdG9rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCwyMDkuOTFhMjEwLjA2LDIxMC4wNiwwLDAsMS0xMjIuNzctMzkuMjVWMzQ5LjM4QTE2Mi41NSwxNjIuNTUsMCwxLDEsMTg1LDE4OC4zMVYyNzguMmE3NC42Miw3NC42MiwwLDEsMCw1Mi4yMyw3MS4xOFYwbDg4LDBhMTIxLjE4LDEyMS4xOCwwLDAsMCwxLjg2LDIyLjE3aDBBMTIyLjE4LDEyMi4xOCwwLDAsMCwzODEsMTAyLjM5YTEyMS40MywxMjEuNDMsMCwwLDAsNjcsMjAuMTRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYWRlRmVkZXJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOC44Yy0xMzcgMC0yNDggMTExLTI0OCAyNDhzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OC0xMTEtMjQ4LTI0OC0yNDh6bTAgNDgyLjhjLTEyOS43IDAtMjM0LjgtMTA1LjEtMjM0LjgtMjM0LjhTMTE4LjMgMjIgMjQ4IDIyczIzNC44IDEwNS4xIDIzNC44IDIzNC44UzM3Ny43IDQ5MS42IDI0OCA0OTEuNnptMTU1LjEtMzI4LjV2LTQ2LjhIMjA5LjNWMTk4SDU0LjJsMzYuNyA0NmgxMTcuN3YxOTYuOGg0OC44VjI0NWg4My4zdi00N2gtODMuM3YtMzQuOGgxNDUuN3ptLTczLjMgNDUuMXYyMy45aC04Mi45djE5Ny40aC0yNi44VjIzMi4xSDk2LjNsLTIwLjEtMjMuOWgxNDMuOXYtODAuNmgxNzEuOFYxNTJoLTE0NXY1Ni4yem0tMTYxLjMtNjlsLTEyLjQtMjAuNyAyLjEgMjMuOC0yMy41IDUuNCAyMy4zIDUuNC0yLjEgMjQgMTIuMy0yMC41IDIyLjIgOS41LTE1LjctMTguMSAxNS44LTE4LjF6bS0yOS42LTE5LjdsOS4zLTExLjUtMTIuNyA1LjktOC0xMi40IDEuNyAxMy45LTE0LjMgMy44IDEzLjcgMi43LS44IDE0LjcgNi44LTEyLjIgMTMuOCA1LjN6bTE2NS40IDE0NS4ybC0xMy4xIDUuNi03LjMtMTIuMiAxLjMgMTQuMi0xMy45IDMuMiAxMy45IDMuMi0xLjIgMTQuMiA3LjMtMTIuMiAxMy4xIDUuNS05LjQtMTAuN3ptMTA2LjktNzcuMmwtMjAuOSA5LjEtMTItMTkuNiAyLjIgMjIuNy0yMi4zIDUuNCAyMi4yIDQuOS0xLjggMjIuOSAxMS41LTE5LjYgMjEuMiA4LjgtMTUuMS0xN3pNMjQ4IDI5LjljLTEyNS4zIDAtMjI2LjkgMTAxLjYtMjI2LjkgMjI2LjlTMTIyLjcgNDgzLjcgMjQ4IDQ4My43czIyNi45LTEwMS42IDIyNi45LTIyNi45UzM3My4zIDI5LjkgMjQ4IDI5Ljl6TTM0Mi42IDE5NnY1MWgtODMuM3YxOTUuN2gtNTIuN1YyNDUuOUg4OS45bC00MC00OS45aDE1Ny40di04MS42aDE5Ny44djUwLjdIMjU5LjRWMTk2ek0yNDggNDMuMmM2MC4zIDAgMTE0LjggMjUgMTUzLjYgNjUuMkgyMDIuNVYxOTBINDUuMUM3My4xIDEwNC44IDE1My40IDQzLjIgMjQ4IDQzLjJ6bTAgNDI3LjFjLTExNy45IDAtMjEzLjYtOTUuNi0yMTMuNi0yMTMuNSAwLTIxLjIgMy4xLTQxLjggOC45LTYxLjFMODcuMSAyNTJoMTE0Ljd2MTk2LjhoNjQuNlYyNTNoODMuM3YtNjIuN2gtODMuMnYtMTkuMmgxNDUuNnYtNTAuOGMzMC44IDM3IDQ5LjMgODQuNiA0OS4zIDEzNi41LjEgMTE3LjktOTUuNSAyMTMuNS0yMTMuNCAyMTMuNXpNMTc4LjggMjc1bC0xMS0yMS40IDEuNyAyNC41LTIzLjcgMy45IDIzLjggNS45LTMuNyAyMy44IDEzLTIwLjkgMjEuNSAxMC44LTE1LjgtMTguOCAxNi45LTE3LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyZWxsbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTIuMyAzMkg1Ni4xQzI1LjEgMzIgMCA1Ny4xIDAgODhjLS4xIDAgMC00IDAgMzM2IDAgMzAuOSAyNS4xIDU2IDU2IDU2aDMzNi4yYzMwLjgtLjIgNTUuNy0yNS4yIDU1LjctNTZWODhjLjEtMzAuOC0yNC44LTU1LjgtNTUuNi01NnpNMTk3IDM3MS4zYy0uMiAxNC43LTEyLjEgMjYuNi0yNi45IDI2LjZIODcuNGMtMTQuOC4xLTI2LjktMTEuOC0yNy0yNi42VjExNy4xYzAtMTQuOCAxMi0yNi45IDI2LjktMjYuOWg4Mi45YzE0LjggMCAyNi45IDEyIDI2LjkgMjYuOXYyNTQuMnptMTkzLjEtMTEyYzAgMTQuOC0xMiAyNi45LTI2LjkgMjYuOWgtODFjLTE0LjggMC0yNi45LTEyLTI2LjktMjYuOVYxMTcuMmMwLTE0LjggMTItMjYuOSAyNi44LTI2LjloODEuMWMxNC44IDAgMjYuOSAxMiAyNi45IDI2Ljl2MTQyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR1bWJsciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDkuOCA0ODAuM2MtMTMuNiAxNC41LTUwIDMxLjctOTcuNCAzMS43LTEyMC44IDAtMTQ3LTg4LjgtMTQ3LTE0MC42di0xNDRIMTcuOWMtNS41IDAtMTAtNC41LTEwLTEwdi02OGMwLTcuMiA0LjUtMTMuNiAxMS4zLTE2IDYyLTIxLjggODEuNS03NiA4NC4zLTExNy4xLjgtMTEgNi41LTE2LjMgMTYuMS0xNi4zaDcwLjljNS41IDAgMTAgNC41IDEwIDEwdjExNS4yaDgzYzUuNSAwIDEwIDQuNCAxMCA5Ljl2ODEuN2MwIDUuNS00LjUgMTAtMTAgMTBoLTgzLjRWMzYwYzAgMzQuMiAyMy43IDUzLjYgNjggMzUuOCA0LjgtMS45IDktMy4yIDEyLjctMi4yIDMuNS45IDUuOCAzLjQgNy40IDcuOWwyMiA2NC4zYzEuOCA1IDMuMyAxMC42LS40IDE0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR3aXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTEuMTcsMTAzLjQ3SDM1Mi41NHYxMDkuN2gzOC42M1pNMjg1LDEwM0gyNDYuMzdWMjEyLjc1SDI4NVpNMTIwLjgzLDAsMjQuMzEsOTEuNDJWNDIwLjU4SDE0MC4xNFY1MTJsOTYuNTMtOTEuNDJoNzcuMjVMNDg3LjY5LDI1NlYwWk00NDkuMDcsMjM3Ljc1bC03Ny4yMiw3My4xMkgyOTQuNjFsLTY3LjYsNjR2LTY0SDE0MC4xNFYzNi41OEg0NDkuMDdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR3aXR0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU5LjM3IDE1MS43MTZjLjMyNSA0LjU0OC4zMjUgOS4wOTcuMzI1IDEzLjY0NSAwIDEzOC43Mi0xMDUuNTgzIDI5OC41NTgtMjk4LjU1OCAyOTguNTU4LTU5LjQ1MiAwLTExNC42OC0xNy4yMTktMTYxLjEzNy00Ny4xMDYgOC40NDcuOTc0IDE2LjU2OCAxLjI5OSAyNS4zNCAxLjI5OSA0OS4wNTUgMCA5NC4yMTMtMTYuNTY4IDEzMC4yNzQtNDQuODMyLTQ2LjEzMi0uOTc1LTg0Ljc5Mi0zMS4xODgtOTguMTEyLTcyLjc3MiA2LjQ5OC45NzQgMTIuOTk1IDEuNjI0IDE5LjgxOCAxLjYyNCA5LjQyMSAwIDE4Ljg0My0xLjMgMjcuNjE0LTMuNTczLTQ4LjA4MS05Ljc0Ny04NC4xNDMtNTEuOTgtODQuMTQzLTEwMi45ODV2LTEuMjk5YzEzLjk2OSA3Ljc5NyAzMC4yMTQgMTIuNjcgNDcuNDMxIDEzLjMxOS0yOC4yNjQtMTguODQzLTQ2Ljc4MS01MS4wMDUtNDYuNzgxLTg3LjM5MSAwLTE5LjQ5MiA1LjE5Ny0zNy4zNiAxNC4yOTQtNTIuOTU0IDUxLjY1NSA2My42NzUgMTI5LjMgMTA1LjI1OCAyMTYuMzY1IDEwOS44MDctMS42MjQtNy43OTctMi41OTktMTUuOTE4LTIuNTk5LTI0LjA0IDAtNTcuODI4IDQ2Ljc4Mi0xMDQuOTM0IDEwNC45MzQtMTA0LjkzNCAzMC4yMTMgMCA1Ny41MDIgMTIuNjcgNzYuNjcgMzMuMTM3IDIzLjcxNS00LjU0OCA0Ni40NTYtMTMuMzIgNjYuNTk5LTI1LjM0LTcuNzk4IDI0LjM2Ni0yNC4zNjYgNDQuODMzLTQ2LjEzMiA1Ny44MjcgMjEuMTE3LTIuMjczIDQxLjU4NC04LjEyMiA2MC40MjYtMTYuMjQzLTE0LjI5MiAyMC43OTEtMzIuMTYxIDM5LjMwOC01Mi42MjggNTQuMjUzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUeXBvMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzguNyA3OC40YzAtMjQuNyA1LjQtMzIuNCAxMy45LTM5LjQtNjkuNSA4LjUtMTQ5LjMgMzQtMTc2LjMgNjYuNC01LjQgNy43LTkuMyAyMC44LTkuMyAzNy4xQzcgMjQ2IDExMy44IDQ4MCAxOTEuMSA0ODBjMzYuMyAwIDk3LjMtNTkuNSAxNDYuNy0xMzktNyAyLjMtMTEuNiAyLjMtMTguNSAyLjMtNTcuMiAwLTE0MC42LTE5OC41LTE0MC42LTI2NC45ek0zMDEuNSAzMmMtMzAuMSAwLTQxLjcgNS40LTQxLjcgMzYuMyAwIDY2LjQgNTMuOCAxOTguNSAxMDEuNyAxOTguNSAyNi4zIDAgNzguOC05OS43IDc4LjgtMTgyLjMgMC00MC45LTY3LTUyLjUtMTM4LjgtNTIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVWJlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTQuMSAzMkgzMy45QzE1LjIgMzIgMCA0Ny4yIDAgNjUuOVY0NDZjMCAxOC44IDE1LjIgMzQgMzMuOSAzNEg0MTRjMTguNyAwIDMzLjktMTUuMiAzMy45LTMzLjlWNjUuOUM0NDggNDcuMiA0MzIuOCAzMiA0MTQuMSAzMnpNMjM3LjYgMzkxLjFDMTYzIDM5OC42IDk2LjQgMzQ0LjIgODguOSAyNjkuNmg5NC40VjI5MGMwIDMuNyAzIDYuOCA2LjggNi44SDI1OGMzLjcgMCA2LjgtMyA2LjgtNi44di02Ny45YzAtMy43LTMtNi44LTYuOC02LjhoLTY3LjljLTMuNyAwLTYuOCAzLTYuOCA2Ljh2MjAuNEg4OC45YzctNjkuNCA2NS40LTEyMi4yIDEzNS4xLTEyMi4yIDY5LjcgMCAxMjguMSA1Mi44IDEzNS4xIDEyMi4yIDcuNSA3NC41LTQ2LjkgMTQxLjEtMTIxLjUgMTQ4LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVidW50dSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjkuMiA3NUE3NS42IDc1LjYgMCAxIDAgMzE3LjkgNzVhNzUuNiA3NS42IDAgMSAwIDE1MS4yIDB6TTE1NC4yIDI0MC43QTc1LjYgNzUuNiAwIDEgMCAzIDI0MC43YTc1LjYgNzUuNiAwIDEgMCAxNTEuMiAwek01NyAzNDZDNzUuNiAzOTIuOSAxMDggNDMzIDE1MCA0NjEuMXM5MS41IDQyLjYgMTQyIDQxLjdjLTE0LjctMTguNi0yMi45LTQxLjUtMjMuMi02NS4yYy02LjgtLjktMTMuMy0yLjEtMTkuNS0zLjRjLTI2LjgtNS43LTUxLjktMTcuMy03My42LTM0cy0zOS4zLTM4LjEtNTEuNy02Mi41Yy0yMC45IDkuOS00NC41IDEyLjgtNjcuMSA4LjJ6bTM5NS4xIDg5LjhhNzUuNiA3NS42IDAgMSAwIC0xNTEuMiAwIDc1LjYgNzUuNiAwIDEgMCAxNTEuMiAwek00NDQgMzUxLjZjMTguNSAxNC44IDMxLjYgMzUuMiAzNy4yIDU4LjJjMzMuMy00MS4zIDUyLjYtOTIuMiA1NC44LTE0NS4ycy0xMi41LTEwNS40LTQyLjItMTQ5LjRjLTguNiAyMS41LTI0IDM5LjYtNDMuOCA1MS42YzE1LjQgMjguNiAyMi45IDYwLjggMjEuOSA5My4ycy0xMC43IDY0LTI4IDkxLjZ6TTEwMS4xIDEzNS40YzEyLjQgMi43IDI0LjMgNy41IDM1LjEgMTQuM2MxNi42LTI0LjIgMzguOS00NC4xIDY0LjgtNThTMjU1LjggNzAuNCAyODUuMiA3MGMuMi01LjkgLjktMTEuOSAyLTE3LjdjMy42LTE2LjcgMTEuMS0zMi4zIDIxLjgtNDUuNWMtNDcuNy0zLjgtOTUuNCA2LTEzNy42IDI4LjVTOTQuMyA5MS43IDcwLjggMTMzLjRjMi43LS4yIDUuMy0uMyA4LS4zYzcuNSAwIDE1IC44IDIyLjQgMi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVaWtpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDMuOSAxMjh2MjU2TDIxOCA1MTIgMCAzODRWMTY5LjdsODcuNiA0NS4xdjExN2wxMzMuNSA3NS41IDEzNS44LTc1LjV2LTE1MWwtMTAxLjEtNTcuNiA4Ny42LTUzLjFMNDQzLjkgMTI4ek0zMDguNiA0OS4xTDIyMy44IDBsLTg4LjYgNTQuOCA4NiA0Ny4zIDg3LjQtNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVtYnJhY28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU1LjM1IDhDMTE4LjM2IDcuODMgNy4xNCAxMTguNzIgNyAyNTUuNjhjLS4wNyAxMzcgMTExIDI0OC4yIDI0OCAyNDguMjcgMTM2Ljg1IDAgMjQ3LjgyLTExMC43IDI0OC0yNDcuNjdTMzkyLjM0IDguMTcgMjU1LjM1IDh6bTE0NSAyNjZxLTEuMTQgNDAuNjgtMTQgNjV0LTQzLjUxIDM1cS0zMC42MSAxMC43LTg1LjQ1IDEwLjQ3aC00LjZxLTU0Ljc4LjIyLTg1LjQ0LTEwLjQ3dC00My41Mi0zNXEtMTIuODUtMjQuMzYtMTQtNjVhMjI0LjgxIDIyNC44MSAwIDAgMSAwLTMwLjcxIDQxOC4zNyA0MTguMzcgMCAwIDEgMy42LTQzLjg4YzEuODgtMTMuMzkgMy41Ny0yMi41OCA1LjQtMzIgMS00Ljg4IDEuMjgtNi40MiAxLjgyLTguNDVhNS4wOSA1LjA5IDAgMCAxIDQuOS0zLjg5aC42OWwzMiA1YTUuMDcgNS4wNyAwIDAgMSA0LjE2IDUgNSA1IDAgMCAxIDAgLjc3bC0xLjcgOC43OHEtMi40MSAxMy4yNS00Ljg0IDMzLjY4YTM4MC42MiAzODAuNjIgMCAwIDAtMi42NCA0Mi4xNXEtLjI4IDQwLjQzIDguMTMgNTkuODNhNDMuODcgNDMuODcgMCAwIDAgMzEuMzEgMjUuMThBMjQzIDI0MyAwIDAgMCAyNTAgMzQwLjZoMTAuMjVhMjQyLjY0IDI0Mi42NCAwIDAgMCA1Ny4yNy01LjE2IDQzLjg2IDQzLjg2IDAgMCAwIDMxLjE1LTI1LjIzcTguNTMtMTkuNDIgOC4xMy01OS43OGEzODggMzg4IDAgMCAwLTIuNi00Mi4xNXEtMi40OC0yMC4zOC00Ljg5LTMzLjY4bC0xLjY5LTguNzhhNSA1IDAgMCAxIDAtLjc3IDUgNSAwIDAgMSA0LjItNWwzMi01aC44MmE1IDUgMCAwIDEgNC45IDMuODljLjU1IDIuMDUuODEgMy41NyAxLjgzIDguNDUgMS44MiA5LjYyIDMuNTIgMTguNzggNS4zOSAzMmE0MTUuNzEgNDE1LjcxIDAgMCAxIDMuNjEgNDMuODggMjI4LjA2IDIyOC4wNiAwIDAgMS0uMDQgMzAuNzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuY2hhcnRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzEuNzMsMjMyLjgxM0E1LjM4MSw1LjM4MSwwLDAsMCwxNzYuNywyMjkuNSw0OC4wODEsNDguMDgxLDAsMCwxLDE5MS42LDIwNC4yNDRjMS4yNDMtLjgyOCwxLjY1Ny0yLjQ4NCwxLjY1Ny00LjE0MWE0LjIyLDQuMjIsMCwwLDAtMi4wNzEtMy4zMTJMNzQuNDI5LDEyOC40NzMsMTQ4Ljk1OCw4NWE5Ljk0MSw5Ljk0MSwwLDAsMCw0Ljk2OC04LjI4MSw5LjEwOCw5LjEwOCwwLDAsMC00Ljk2OC04LjI4MUwxMjYuNiw1NS42YTkuNzQ4LDkuNzQ4LDAsMCwwLTkuNTIzLDBsLTEwMC4yLDU3Ljk2NmE5Ljk0Myw5Ljk0MywwLDAsMC00Ljk2OSw4LjI4MVYyMzYuOTU0YTkuMTA5LDkuMTA5LDAsMCwwLDQuOTY5LDguMjgxTDM5LjIzNSwyNTguMDdhOC44MjksOC44MjksMCwwLDAsNC45NjgsMS4yNDIsOS40LDkuNCwwLDAsMCw2LjYyNS0yLjQ4NCwxMC44LDEwLjgsMCwwLDAsMi45LTcuMDM5VjE2NC41TDE2OS42NiwyMzIuNEE0LjUsNC41LDAsMCwwLDE3MS43MywyMzIuODEzWk0zMjMuMjcyLDM3Ny43M2ExMi40NzgsMTIuNDc4LDAsMCwwLTQuOTY5LDEuMjQybC03NC41MjgsNDMuMDYyVjI4Ny44ODJjMC0yLjktMi45LTUuOC02LjIxMS00LjU1NWE1My4wMzYsNTMuMDM2LDAsMCwxLTI4Ljk4NC40MTQsNC44Niw0Ljg2LDAsMCwwLTYuMjEsNC41NTVWNDIxLjYxOWwtNzQuNTI5LTQzLjA2MWE4LjgzLDguODMsMCwwLDAtNC45NjktMS4yNDIsOS42MzEsOS42MzEsMCwwLDAtOS41MjMsOS41MjN2MjYuMDg1YTkuMTA3LDkuMTA3LDAsMCwwLDQuOTY5LDguMjgxbDEwMC4yLDU3LjU1M0E4LjgyOSw4LjgyOSwwLDAsMCwyMjMuNDg2LDQ4MGExMS4wMjcsMTEuMDI3LDAsMCwwLDQuOTY5LTEuMjQybDEwMC4yLTU3LjU1M2E5Ljk0MSw5Ljk0MSwwLDAsMCw0Ljk2OC04LjI4MVYzODYuODM5QzMzMi44LDM4Mi4yODUsMzI4LjI0LDM3Ny43MywzMjMuMjcyLDM3Ny43M1pNMjg2LjAwNyw3OGEyMywyMywwLDEsMC0yMy0yM0EyMywyMywwLDAsMCwyODYuMDA3LDc4Wm02My42MjctMTAuMDg2YTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDM0OS42MzQsNjcuOTE0Wk00MTIuODE2LDE1MS42YTIzLDIzLDAsMSwwLTIzLTIzQTIzLDIzLDAsMCwwLDQxMi44MTYsMTUxLjZabS02My4xODItOS4yYTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDM0OS42MzQsMTQyLjRabS02My42MjcsODMuMjQ0YTIzLDIzLDAsMSwwLTIzLTIzQTIzLDIzLDAsMCwwLDI4Ni4wMDcsMjI1LjY0OFptLTYyLjA3NCwzNi4zNThhMjMsMjMsMCwxLDAtMjMtMjNBMjMsMjMsMCwwLDAsMjIzLjkzMywyNjIuMDA2Wm0xODguODgzLTgyLjM1OGEyMywyMywwLDEsMCwyMywyM0EyMywyMywwLDAsMCw0MTIuODE2LDE3OS42NDhabTAsNzIuMjcyYTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDQxMi44MTYsMjUxLjkyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmlyZWdpc3RyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNDgwYzM5LjUgMCA3Ni4yLTExLjggMTA2LjgtMzIuMkg4NS4zQzExNS44IDQ2OC4yIDE1Mi41IDQ4MCAxOTIgNDgwem0tODkuMS0xOTMuMXYtMTIuNEgwdjEyLjRjMCAyLjUgMCA1IC4xIDcuNGgxMDMuMWMtLjItMi40LS4zLTQuOS0uMy03LjR6bTIwLjUgNTdIOC41YzIuNiA4LjUgNS44IDE2LjggOS42IDI0LjhoMTM4LjNjLTEyLjktNS43LTI0LjEtMTQuMi0zMy0yNC44em0tMTcuNy0zNC43SDEuM2MuOSA3LjYgMi4yIDE1IDMuOSAyMi4zaDEwOS43Yy00LTYuOS03LjItMTQuNC05LjItMjIuM3ptLTIuOC02OS4zSDB2MTcuM2gxMDIuOXptMC0xNzMuMkgwdjQuOWgxMDIuOXptMC0zNC43SDB2Mi41aDEwMi45em0wIDY5LjNIMHY3LjRoMTAyLjl6bTAgMTA0SDB2MTQuOGgxMDIuOXptMC02OS4zSDB2OS45aDEwMi45em0wIDM0LjZIMFYxODNoMTAyLjl6bTE2Ni4yIDE2MC45aDEwOS43YzEuOC03LjMgMy4xLTE0LjcgMy45LTIyLjNIMjc4LjNjLTIuMSA3LjktNS4yIDE1LjQtOS4yIDIyLjN6bTEyLTE4NS43SDM4NFYxMzZIMjgxLjF6bTAgMzcuMkgzODR2LTEyLjRIMjgxLjF6bTAtNzQuM0gzODR2LTcuNEgyODEuMXptMC03Ni43djIuNUgzODRWMzJ6bS0yMDMgNDEwLjloMjI3LjdjMTEuOC04LjcgMjIuNy0xOC42IDMyLjItMjkuN0g0NC45YzkuNiAxMSAyMS40IDIxIDMzLjIgMjkuN3ptMjAzLTM3MS4zSDM4NHYtNC45SDI4MS4xem0wIDE0OC41SDM4NHYtMTQuOEgyODEuMXpNMzguOCA0MDUuN2gzMDUuM2M2LjctOC41IDEyLjYtMTcuNiAxNy44LTI3LjJIMjNjNS4yIDkuNiA5LjIgMTguNyAxNS44IDI3LjJ6bTE4OC44LTM3LjFIMzY3YzMuNy04IDUuOC0xNi4yIDguNS0yNC44aC0xMTVjLTguOCAxMC43LTIwLjEgMTkuMi0zMi45IDI0Ljh6bTUzLjUtODEuN2MwIDIuNS0uMSA1LS40IDcuNGgxMDMuMWMuMS0yLjUuMi00LjkuMi03LjR2LTEyLjRIMjgxLjF6bTAtMjkuN0gzODR2LTE3LjNIMjgxLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0My41ODMgOTEuNjAyN0wzMjMuNjk1IDEzOC4zODRDMzI2LjU3NSAxNDAuMDI2IDMyNi42OCAxNDQuNTgzIDMyMy42OTUgMTQ2LjIyNUwyMjguNTAzIDIwMS44NTRDMjI1LjYyMyAyMDMuNTUgMjIyLjIyIDIwMy40NDQgMjE5LjU0OSAyMDEuODU0TDEyNC4zNTcgMTQ2LjIyNUMxMjEuNDI1IDE0NC42MzYgMTIxLjM3MyAxMzkuOTczIDEyNC4zNTcgMTM4LjM4NEwyMDQuNDE3IDkxLjYwMjdWMEwwIDExOS40MTdWMzU4LjI1Mkw3OC4zODQzIDMxMi40NzdWMjE4LjkxNEM3OC4zMzE5IDIxNS41NzYgODIuMjA2NiAyMTMuMTkyIDg1LjA4NjUgMjE0Ljk5M0wxODAuMjc5IDI3MC42MjJDMTgzLjE1OSAyNzIuMzE4IDE4NC43ODIgMjc1LjMzOCAxODQuNzgyIDI3OC40NjRWMzg5LjY2OUMxODQuODM0IDM5My4wMDcgMTgwLjk1OSAzOTUuMzkxIDE3OC4wNzkgMzkzLjU4OUw5Ny45NjczIDM0Ni44MDhMMTkuNTgzIDM5Mi41ODNMMjI0IDUxMkw0MjguNDE3IDM5Mi41ODNMMzUwLjAzMyAzNDYuODA4TDI2OS45MjEgMzkzLjU4OUMyNjcuMDkzIDM5NS4zMzggMjYzLjExNCAzOTMuMDYgMjYzLjIxOCAzODkuNjY5VjI3OC40NjRDMjYzLjIxOCAyNzUuMTI2IDI2NS4wNTEgMjcyLjE1OSAyNjcuNzIxIDI3MC42MjJMMzYyLjkxNCAyMTQuOTkzQzM2NS43NDEgMjEzLjI0NSAzNjkuNzIgMjE1LjQ3IDM2OS42MTYgMjE4LjkxNFYzMTIuNDc3TDQ0OCAzNTguMjUyVjExOS40MTdMMjQzLjU4MyAwVjkxLjYwMjdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuc3BsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCwyMzAuMTdWNDgwSDBWMjMwLjE3SDE0MS4xM1YzNTUuMDlIMzA2Ljg3VjIzMC4xN1pNMzA2Ljg3LDMySDE0MS4xM1YxNTYuOTFIMzA2Ljg3WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbnRhcHBkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMS4zIDQ5LjljLTc5LjggMTYwLjEtODQuNiAxNTIuNS04Ny45IDE3My4ybC01LjIgMzIuOGMtMS45IDEyLTYuNiAyMy41LTEzLjcgMzMuNEwxNDUuNiA0OTcuMWMtNy42IDEwLjYtMjAuNCAxNi4yLTMzLjQgMTQuNi00MC4zLTUtNzcuOC0zMi4yLTk1LjMtNjguNS01LjctMTEuOC00LjUtMjUuOCAzLjEtMzYuNGwxNDguOS0yMDcuOWM3LjEtOS45IDE2LjQtMTggMjcuMi0yMy43bDI5LjMtMTUuNWMxOC41LTkuOCA5LjctMTEuOSAxMzUuNi0xMzguOSAxLTQuOCAxLTcuMyAzLjYtOCAzLS43IDYuNi0xIDYuMy00LjZsLS40LTQuNmMtLjItMS45IDEuMy0zLjYgMy4yLTMuNiA0LjUtLjEgMTMuMiAxLjIgMjUuNiAxMCAxMi4zIDguOSAxNi40IDE2LjggMTcuNyAyMS4xLjYgMS44LS42IDMuNy0yLjQgNC4ybC00LjUgMS4xYy0zLjQuOS0yLjUgNC40LTIuMyA3LjQuMSAyLjgtMi4zIDMuNi02LjUgNi4xek0yMzAuMSAzNi40YzMuNC45IDIuNSA0LjQgMi4zIDcuNC0uMiAyLjcgMi4xIDMuNSA2LjQgNiA3LjkgMTUuOSAxNS4zIDMwLjUgMjIuMiA0NCAuNyAxLjMgMi4zIDEuNSAzLjMuNSAxMS4yLTEyIDI0LjYtMjYuMiA0MC41LTQyLjYgMS4zLTEuNCAxLjQtMy41LjEtNC45LTgtOC4yLTE2LjUtMTYuOS0yNS42LTI2LjEtMS00LjctMS03LjMtMy42LTgtMy0uOC02LjYtMS02LjMtNC42LjMtMy4zIDEuNC04LjEtMi44LTguMi00LjUtLjEtMTMuMiAxLjEtMjUuNiAxMC0xMi4zIDguOS0xNi40IDE2LjgtMTcuNyAyMS4xLTEuNCA0LjIgMy42IDQuNiA2LjggNS40ek02MjAgNDA2LjdMNDcxLjIgMTk4LjhjLTEzLjItMTguNS0yNi42LTIzLjQtNTYuNC0zOS4xLTExLjItNS45LTE0LjItMTAuOS0zMC41LTI4LjktMS0xLjEtMi45LS45LTMuNi41LTQ2LjMgODguOC00Ny4xIDgyLjgtNDkgOTQuOC0xLjcgMTAuNy0xLjMgMjAgLjMgMjkuOCAxLjkgMTIgNi42IDIzLjUgMTMuNyAzMy40bDE0OC45IDIwNy45YzcuNiAxMC42IDIwLjIgMTYuMiAzMy4xIDE0LjcgNDAuMy00LjkgNzgtMzIgOTUuNy02OC42IDUuNC0xMS45IDQuMy0yNS45LTMuNC0zNi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAzLjIgMzAzYy01LjIgMy42LTMyLjYgMTMuMS0zMi42LTE5VjE4MEgzNy45djEwMi42YzAgNzQuOSA4MC4yIDUxLjEgOTcuOSAzOVYxODBoLTMyLjZ6TTQgNzQuODJ2MjIwLjljMCAxMDMuNyA3NC45IDEzNS4yIDE4Ny43IDE4NC4xIDExMi40LTQ4LjkgMTg3LjctODAuMiAxODcuNy0xODQuMVY3NC44MmMtMTE2LjMtNjEuNi0yODEuOC00OS42LTM3NS40IDB6bTM1OC4xIDIyMC45YzAgODYuNi01My4yIDExMy42LTE3MC40IDE2NS4zLTExNy41LTUxLjgtMTcwLjUtNzguNy0xNzAuNS0xNjUuM3YtMTI2LjRjMTAyLjMtOTMuOCAyMzEuNi0xMDAgMzQwLjktODkuOHptLTIwOS42LTEwNy40djIxMi44aDMyLjd2LTY4LjdjMjQuNCA3LjMgNzEuNy0yLjYgNzEuNy03OC41IDAtOTcuNC04MC43LTgwLjkyLTEwNC40LTY1LjZ6bTMyLjcgMTE3LjN2LTEwMC4zYzguNC00LjIgMzguNC0xMi43IDM4LjQgNDkuMyAwIDY3LjktMzYuNCA1MS44LTM4LjQgNTF6bTc5LjEtODYuNGMuMSA0Ny4zIDUxLjYgNDIuNSA1Mi4yIDcwLjQuNiAyMy41LTMwLjQgMjMtNTAuOCA0Ljl2MzAuMWMzNi4yIDIxLjUgODEuOSA4LjEgODMuMi0zMy41IDEuNy01MS41LTU0LjEtNDYuNi01My40LTczLjIuNi0yMC4zIDMwLjYtMjAuNSA0OC41LTIuMnYtMjguNGMtMjguNS0yMi03OS45LTkuMi03OS43IDMxLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVwd29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQxIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTQuNyAyOTUuNmMtNTAuMyAwLTgzLjUtMzguOS05Mi44LTUzLjljMTEuOS05NS4zIDQ2LjgtMTI1LjQgOTIuOC0xMjUuNGM0NS41IDAgODAuOSAzNi40IDgwLjkgODkuN3MtMzUuNCA4OS43LTgwLjkgODkuN3ptMC0yMzcuOGMtODEuOSAwLTEyNy44IDUzLjQtMTQxIDEwOC40Yy0xNC45LTI4LTI1LjktNjUuNS0zNC41LTEwMC4zSDIwNnYxNDFjMCA1MS4xLTIzLjMgODktNjguOCA4OXMtNzEuNi0zNy44LTcxLjYtODlsLjUtMTQxSC44djE0MWMwIDQxLjEgMTMuMyA3OC40IDM3LjYgMTA1LjFjMjUgMjcuNSA1OS4yIDQxLjggOTguOCA0MS44Yzc4LjggMCAxMzMuOC02MC40IDEzMy44LTE0Ni45VjExMi4xYzguMiAzMS4yIDI3LjggOTEuMSA2NS4zIDE0My42bC0zNSAxOTkuNGg2Ni40bDIzLjEtMTQxLjNjNy42IDYuMyAxNS43IDEyIDI0LjIgMTdjMjIuMiAxNCA0Ny43IDIxLjkgNzMuOSAyMi44YzAgMCA0IC4yIDYuMSAuMmM4MS4yIDAgMTQ1LjktNjIuOSAxNDUuOS0xNDcuOHMtNjQuOC0xNDguMS0xNDYtMTQ4LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDEuNSAyNTZjMCAzLjEtMS43IDYuMS00LjUgNy41TDU0Ny45IDMxN2MtMS40LjgtMi44IDEuNC00LjUgMS40LTEuNCAwLTMuMS0uMy00LjUtMS4xLTIuOC0xLjctNC41LTQuNS00LjUtNy44di0zNS42SDI5NS43YzI1LjMgMzkuNiA0MC41IDEwNi45IDY5LjYgMTA2LjlIMzkyVjM1NGMwLTUgMy45LTguOSA4LjktOC45SDQ5MGM1IDAgOC45IDMuOSA4LjkgOC45djg5LjFjMCA1LTMuOSA4LjktOC45IDguOWgtODkuMWMtNSAwLTguOS0zLjktOC45LTguOXYtMjYuN2gtMjYuN2MtNzUuNCAwLTgxLjEtMTQyLjUtMTI0LjctMTQyLjVIMTQwLjNjLTguMSAzMC42LTM1LjkgNTMuNS02OSA1My41QzMyIDMyNy4zIDAgMjk1LjMgMCAyNTZzMzItNzEuMyA3MS4zLTcxLjNjMzMuMSAwIDYxIDIyLjggNjkgNTMuNSAzOS4xIDAgNDMuOSA5LjUgNzQuNi02MC40QzI1NSA4OC43IDI3MyA5NS43IDMyMy44IDk1LjdjNy41LTIwLjkgMjctMzUuNiA1MC40LTM1LjYgMjkuNSAwIDUzLjUgMjMuOSA1My41IDUzLjVzLTIzLjkgNTMuNS01My41IDUzLjVjLTIzLjQgMC00Mi45LTE0LjgtNTAuNC0zNS42SDI5NGMtMjkuMSAwLTQ0LjMgNjcuNC02OS42IDEwNi45aDMxMC4xdi0zNS42YzAtMy4zIDEuNy02LjEgNC41LTcuOCAyLjgtMS43IDYuNC0xLjQgOC45LjNsODkuMSA1My41YzIuOCAxLjEgNC41IDQuMSA0LjUgNy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc3BzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2MC4zIDI0MS43YzI1LjgtNDEuMyAxNS4yLTQ4LjgtMTEuNy00OC44aC0yN2MtLjEgMC0xLjUtMS40LTEwLjkgOC0xMS4yIDUuNi0zNy45IDYuMy0zNy45IDguNyAwIDQuNSA3MC4zLTMuMSA4OC4xIDAgOS41IDEuNS0xLjUgMjAuNC00LjQgMzItLjUgNC41IDIuNCAyLjMgMy44LjF6bS0xMTIuMSAyMi42YzY0LTIxLjMgOTcuMy0yMy45IDEwMi0yNi4yIDQuNC0yLjktNC40LTYuNi0yNi4yLTUuOC01MS43IDIuMi0xMzcuNiAzNy4xLTE3Mi42IDUzLjlsLTMwLjctOTMuM2gxOTYuNmMtMi43LTI4LjItMTUyLjktMjIuNi0zMzcuOS0yMi42TDI3IDQxNS44YzE5Ni40LTk3LjMgMjU4LjktMTMwLjMgMzIxLjItMTUxLjV6TTk0LjcgOTZjMjUzLjMgNTMuNyAzMzAgNjUuNyAzMzIuMSA4NS4yIDM2LjQgMCA0NS45IDAgNTIuNCA2LjYgMjEuMSAxOS43LTE0LjYgNjcuNy0xNC42IDY3LjctNC40IDIuOS00MDYuNCAxNjAuMi00MDYuNCAxNjAuMmg0MjMuMUw1NDkgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzc3VubmFoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MS45IDI2OC4xQTI0MC45IDI0MC45IDAgMSAxIC4xIDI2OGEyNDAuOSAyNDAuOSAwIDEgMSA0ODEuOSAwek0yNC41IDI2OGEyMTYuNSAyMTYuNSAwIDEgMCA0MzIuOSAwQTIxNi41IDIxNi41IDAgMSAwIDI0LjUgMjY4em0zODUuOSA2My4zYy0xMi43IDAtMjEuNi0xLjktMjYuNy01LjljLTUuNS00LjMtOC4yLTEyLjMtOC4yLTIzLjhWMjA1LjFjMC02LjUtNS4yLTIwLjItMTUuNy00MS4yYzcgMCAxNy05LjEgMzAtMjcuMlYyODQuNWMwIDExIDIuNCAxOS40IDcgMjUuM2MzLjcgNC43IDEwLjEgOC45IDE5IDEyLjZjMS4yIC40IDIuNiAuOSA0LjEgMS40YzIuOSAuOSA2LjMgMi4xIDEwLjMgMy41Yy0xLjggMi43LTguMyA0LTE5LjkgNHptLTIxOSAwYy0xLjMgMi40LTMuNiA1LjUtNi44IDkuNGwtMTguNSAyMi41Yy0xLTYuMS00LTEzLTkuMy0yMC42cy05LjctMTEuNC0xMy40LTExLjRoLTguM0g1My42YzMuMy01LjMgNC45LTguOCA0LjktMTAuOGMwLTItLjgtNS4zLTIuNC05LjdjLTEuNS00LjQtMi40LTguNS0yLjQtMTIuNGMwLTcuNCAyLjEtMTMuOSA2LjMtMTkuM0w4MCAyNTMuNGwtNy4xLTE3LjdMODkgMjE1LjlsNi43IDE2LjggOC0xMC4zYy0xLjggNi40LTIuNiAxMi4zLTIuNiAxNy43YzAgNC4yIDIuOCAxMy4zIDguMyAyNy4zbDE2LjIgNDAuN0gxMzVoOCAuM2MyLjggLjQgNy43IDUgMTQuNiAxMy45YzEuOCAyLjQgNC4zIDUuOCA3LjcgMTAuMmMxLjQgMS45IDIuOSAzLjkgNC42IDYuMWMxLjMtMi4zIDItNC42IDItNy4xYzAtMi0xLjMtNi42LTQtMTMuNEwxNjMgMzA0LjFjLTQtMTAuNi02LjEtMTcuNy02LjEtMjEuM2MwLTYuMyAxLjktMTIuMyA1LjgtMTcuOWMuNS0uNiAxLTEuMyAxLjUtMS45YzQuNC01LjYgOC44LTExLjEgMTMuMy0xNi41Yy0xLjEgNC42LTEuNyA4LjctMS43IDEyYzAgMy43IDEuNyA5LjkgNS4xIDE4LjhsNy45IDIwLjRjMS45IDQuNyAzIDguMiAzLjcgMTAuM2gxNy42IDguM2wtLjktMi42Yy0xLjQtMy45LTQtNy03LjctOS4zbDE1LjYtMjAuMSAxMi4zIDMyaDEzLjRMMjQ1IDI5Mi4yYy0xLjUtMy45LTQtNy03LjctOS4zTDI1MyAyNjIuOCAyNzAuMyAzMDhoMTMuNGwtMTEuNC0yOS40Yy0xLjUtMy45LTQtNy03LjctOS4zbDE1LjYtMjBMMzAyLjYgMzA4aDEwLjMgOC4zIDcuNmMxLjUgMCAzLTEuMSA0LjUtMy4xczIuMi00LjEgMi4yLTYuM1YyMDUuMWMwLTYuNS00LjUtMjAuMy0xMy43LTQxLjJjNS40IDAgMTQuMS05LjEgMjYuMi0yNy4yVjMwMC4yYzAgNy4yIC42IDEyIDEuNyAxNC42YzEuNiAzLjQgNS4zIDYuMiAxMS4xIDguMmMtMy45IDUuNi04LjcgOC41LTE0LjUgOC41SDMyMS4xaC04LjNIMjEwLjVoLTE5ek05My40IDI4Ny4zYy0yLjctNi43LTQtMTEuNy00LTE1Yy0uNiAxLjItMi40IDMuNy01LjQgNy42Yy0xLjQgMS45LTIuMiAzLjctMi4yIDUuM2MwIDIuNiAuOCA1LjcgMi4yIDkuM2w1LjYgMTMuOWgwYzUgMCA5IDAgMTEuOS0uMWwtOC4yLTIwLjl6bTEzLjUtNzIuNGMtMy01LjItNy05LjMtMTEuOS0xMS45Yy0zLjUtMS45LTUuMy00LjMtNS4zLTcuNGMwLTIuNCA0LjYtOC42IDE0LTE4LjNjLjIgMy44IDEuOSA3LjYgNC45IDExLjJjMy4xIDMuNiA0LjYgNyA0LjYgMTAuMWMwIDIuNi0yLjEgOC02LjIgMTYuM3ptLTI3LjYgMGMtMy01LjItNy05LjMtMTEuOS0xMS45Yy0zLjUtMS45LTUuMy00LjMtNS4zLTcuNGMwLTIuNCA0LjYtOC42IDE0LTE4LjNjLjIgMy44IDEuOSA3LjYgNC45IDExLjJjMy4xIDMuNiA0LjYgNyA0LjYgMTAuMWMwIDIuNi0yLjEgOC02LjIgMTYuM3ptODcgMjcuNWMtMy01LjItNy05LjMtMTEuOS0xMS45Yy0zLjUtMS45LTUuMy00LjMtNS4zLTcuNGMwLTIuNCA0LjYtOC42IDE0LTE4LjNjLjIgMy44IDEuOSA3LjYgNC45IDExLjJjMy4xIDMuNiA0LjYgNyA0LjYgMTAuMWMwIDIuNi0yLjEgOC02LjIgMTYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmFhZGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNC41IDE0MC43YzEuNS0xNy42IDQuOS01Mi43IDQ5LjgtNTIuN2g5OC42YzIwLjcgMCAzMi4xLTcuOCAzMi4xLTIxLjZWNTQuMWMwLTEyLjIgOS4zLTIyLjEgMjEuNS0yMi4xUzQ0OCA0MS45IDQ0OCA1NC4xdjM2LjVjMCA0Mi45LTIxLjUgNjItNjYuOCA2MkgyODAuN2MtMzAuMSAwLTMzIDE0LjctMzMgMjcuMSAwIDEuMy0uMSAyLjUtLjIgMy43LS43IDEyLjMtMTAuOSAyMi4yLTIzLjQgMjIuMnMtMjIuNy05LjgtMjMuNC0yMi4yYy0uMS0xLjItLjItMi40LS4yLTMuNyAwLTEyLjMtMy0yNy4xLTMzLTI3LjFINjYuOGMtNDUuMyAwLTY2LjgtMTkuMS02Ni44LTYyVjU0LjFDMCA0MS45IDkuNCAzMiAyMS42IDMyczIxLjUgOS45IDIxLjUgMjIuMXYxMi4zQzQzLjEgODAuMiA1NC41IDg4IDc1LjIgODhoOTguNmM0NC44IDAgNDguMyAzNS4xIDQ5LjggNTIuN2guOXpNMjI0IDQ1NmMxMS41IDAgMjEuNC03IDI1LjctMTYuMyAxLjEtMS44IDk3LjEtMTY5LjYgOTguMi0xNzEuNCAxMS45LTE5LjYtMy4yLTQ0LjMtMjcuMi00NC4zLTEzLjkgMC0yMy4zIDYuNC0yOS44IDIwLjNMMjI0IDM2MmwtNjYuOS0xMTcuN2MtNi40LTEzLjktMTUuOS0yMC4zLTI5LjgtMjAuMy0yNCAwLTM5LjEgMjQuNi0yNy4yIDQ0LjMgMS4xIDEuOSA5Ny4xIDE2OS42IDk4LjIgMTcxLjQgNC4zIDkuMyAxNC4yIDE2LjMgMjUuNyAxNi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWFjb2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMmgtNjRsLTgwLjcgMTkyaC05NC41TDY0IDMySDBsNDggMTEySDB2NDhoNjguNWwxMy44IDMySDB2NDhoMTAyLjhMMTkyIDQ4MGw4OS4yLTIwOEgzODR2LTQ4aC04Mi4zbDEzLjgtMzJIMzg0di00OGgtNDhsNDgtMTEyek0xOTIgMzM2bC0yNy02NGg1NGwtMjcgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpYWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzYuMiAxNTAuNXYuN0MyNTguMyA5OC42IDIzMy42IDQ3LjggMjA1LjQgMGM0My4zIDI5LjIgNjcgMTAwIDcwLjggMTUwLjV6bTMyLjcgMTIxLjdjNy42IDE4LjIgMTEgMzcuNSAxMSA1NyAwIDc3LjctNTcuOCAxNDEtMTM3LjggMTM5LjRsMy44LS4zYzc0LjItNDYuNyAxMDkuMy0xMTguNiAxMDkuMy0yMDUuMSAwLTM4LjEtNi41LTc1LjktMTguOS0xMTIgMSAxMS43IDEgMjMuNyAxIDM1LjQgMCA5MS44LTE4LjEgMjQxLjYtMTE2LjYgMjgwQzk1IDQ1NS4yIDQ5LjQgMzk4IDQ5LjQgMzI5LjJjMC03NS42IDU3LjQtMTQyLjMgMTM1LjQtMTQyLjMgMTYuOCAwIDMzLjcgMy4xIDQ5LjEgOS42IDEuNy0xNS4xIDYuNS0yOS45IDEzLjQtNDMuMy0xOS45LTcuMi00MS4yLTEwLjctNjIuNS0xMC43LTE2MS41IDAtMjM4LjcgMTk1LjktMTI5LjkgMzEzLjcgNjcuOSA3NC42IDE5MiA3My45IDI1OS44IDAgNTYuNi02MS4zIDYwLjktMTQyLjQgMzYuNC0yMDEtMTIuNyA4LTI3LjEgMTMuOS00Mi4yIDE3ek00MTguMSAxMS43Yy0zMSA2Ni41LTgxLjMgNDcuMi0xMTUuOCA4MC4xLTEyLjQgMTItMjAuNiAzNC0yMC42IDUwLjUgMCAxNC4xIDQuNSAyNy4xIDEyIDM4LjggNDcuNC0xMSA5OC4zLTQ2IDExOC4yLTkwLjctLjcgNS41LTQuOCAxNC40LTcuMiAxOS4yLTIwLjMgMzUuNy02NC42IDY1LjYtOTkuNyA4NC45IDE0LjggMTQuNCAzMy43IDI1LjggNTUgMjUuOCA3OSAwIDExMC4xLTEzNC42IDU4LjEtMjA4LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0NCA0OS45QzQzMS4zIDM4LjIgMzc5LjkuOSAyNjUuMy40YzAgMC0xMzUuMS04LjEtMjAwLjkgNTIuM0MyNy44IDg5LjMgMTQuOSAxNDMgMTMuNSAyMDkuNWMtMS40IDY2LjUtMy4xIDE5MS4xIDExNyAyMjQuOWguMWwtLjEgNTEuNnMtLjggMjAuOSAxMyAyNS4xYzE2LjYgNS4yIDI2LjQtMTAuNyA0Mi4zLTI3LjggOC43LTkuNCAyMC43LTIzLjIgMjkuOC0zMy43IDgyLjIgNi45IDE0NS4zLTguOSAxNTIuNS0xMS4yIDE2LjYtNS40IDExMC41LTE3LjQgMTI1LjctMTQyIDE1LjgtMTI4LjYtNy42LTIwOS44LTQ5LjgtMjQ2LjV6TTQ1Ny45IDI4N2MtMTIuOSAxMDQtODkgMTEwLjYtMTAzIDExNS4xLTYgMS45LTYxLjUgMTUuNy0xMzEuMiAxMS4yIDAgMC01MiA2Mi43LTY4LjIgNzktNS4zIDUuMy0xMS4xIDQuOC0xMS01LjcgMC02LjkuNC04NS43LjQtODUuNy0uMSAwLS4xIDAgMCAwLTEwMS44LTI4LjItOTUuOC0xMzQuMy05NC43LTE4OS44IDEuMS01NS41IDExLjYtMTAxIDQyLjYtMTMxLjYgNTUuNy01MC41IDE3MC40LTQzIDE3MC40LTQzIDk2LjkuNCAxNDMuMyAyOS42IDE1NC4xIDM5LjQgMzUuNyAzMC42IDUzLjkgMTAzLjggNDAuNiAyMTEuMXptLTEzOS04MC44Yy40IDguNi0xMi41IDkuMi0xMi45LjYtMS4xLTIyLTExLjQtMzIuNy0zMi42LTMzLjktOC42LS41LTcuOC0xMy40LjctMTIuOSAyNy45IDEuNSA0My40IDE3LjUgNDQuOCA0Ni4yem0yMC4zIDExLjNjMS00Mi40LTI1LjUtNzUuNi03NS44LTc5LjMtOC41LS42LTcuNi0xMy41LjktMTIuOSA1OCA0LjIgODguOSA0NC4xIDg3LjggOTIuNS0uMSA4LjYtMTMuMSA4LjItMTIuOS0uM3ptNDcgMTMuNGMuMSA4LjYtMTIuOSA4LjctMTIuOS4xLS42LTgxLjUtNTQuOS0xMjUuOS0xMjAuOC0xMjYuNC04LjUtLjEtOC41LTEyLjkgMC0xMi45IDczLjcuNSAxMzMgNTEuNCAxMzMuNyAxMzkuMnpNMzc0LjkgMzI5di4yYy0xMC44IDE5LTMxIDQwLTUxLjggMzMuM2wtLjItLjNjLTIxLjEtNS45LTcwLjgtMzEuNS0xMDIuMi01Ni41LTE2LjItMTIuOC0zMS0yNy45LTQyLjQtNDIuNC0xMC4zLTEyLjktMjAuNy0yOC4yLTMwLjgtNDYuNi0yMS4zLTM4LjUtMjYtNTUuNy0yNi01NS43LTYuNy0yMC44IDE0LjItNDEgMzMuMy01MS44aC4yYzkuMi00LjggMTgtMy4yIDIzLjkgMy45IDAgMCAxMi40IDE0LjggMTcuNyAyMi4xIDUgNi44IDExLjcgMTcuNyAxNS4yIDIzLjggNi4xIDEwLjkgMi4zIDIyLTMuNyAyNi42bC0xMiA5LjZjLTYuMSA0LjktNS4zIDE0LTUuMyAxNHMxNy44IDY3LjMgODQuMyA4NC4zYzAgMCA5LjEuOCAxNC01LjNsOS42LTEyYzQuNi02IDE1LjctOS44IDI2LjYtMy43IDE0LjcgOC4zIDMzLjQgMjEuMiA0NS44IDMyLjkgNyA1LjcgOC42IDE0LjQgMy44IDIzLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpbWVvViAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDcuOCAxNTMuNmMtMiA0My42LTMyLjQgMTAzLjMtOTEuNCAxNzkuMS02MC45IDc5LjItMTEyLjQgMTE4LjgtMTU0LjYgMTE4LjgtMjYuMSAwLTQ4LjItMjQuMS02Ni4zLTcyLjNDMTAwLjMgMjUwIDg1LjMgMTc0LjMgNTYuMiAxNzQuM2MtMy40IDAtMTUuMSA3LjEtMzUuMiAyMS4xTDAgMTY4LjJjNTEuNi00NS4zIDEwMC45LTk1LjcgMTMxLjgtOTguNSAzNC45LTMuNCA1Ni4zIDIwLjUgNjQuNCA3MS41IDI4LjcgMTgxLjUgNDEuNCAyMDguOSA5My42IDEyNi43IDE4LjctMjkuNiAyOC44LTUyLjEgMzAuMi02Ny42IDQuOC00NS45LTM1LjgtNDIuOC02My4zLTMxIDIyLTcyLjEgNjQuMS0xMDcuMSAxMjYuMi0xMDUuMSA0NS44IDEuMiA2Ny41IDMxLjEgNjQuOSA4OS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaW1lbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDMuMiAzMkg0NC44QzIwLjEgMzIgMCA1Mi4xIDAgNzYuOHYzNTguNEMwIDQ1OS45IDIwLjEgNDgwIDQ0LjggNDgwaDM1OC40YzI0LjcgMCA0NC44LTIwLjEgNDQuOC00NC44Vjc2LjhjMC0yNC43LTIwLjEtNDQuOC00NC44LTQ0Ljh6TTM3NyAxODAuOGMtMS40IDMxLjUtMjMuNCA3NC43LTY2IDEyOS40LTQ0IDU3LjItODEuMyA4NS44LTExMS43IDg1LjgtMTguOSAwLTM0LjgtMTcuNC00Ny45LTUyLjMtMjUuNS05My4zLTM2LjQtMTQ4LTU3LjQtMTQ4LTIuNCAwLTEwLjkgNS4xLTI1LjQgMTUuMmwtMTUuMi0xOS42YzM3LjMtMzIuOCA3Mi45LTY5LjIgOTUuMi03MS4yIDI1LjItMi40IDQwLjcgMTQuOCA0Ni41IDUxLjcgMjAuNyAxMzEuMiAyOS45IDE1MSA2Ny42IDkxLjYgMTMuNS0yMS40IDIwLjgtMzcuNyAyMS44LTQ4LjkgMy41LTMzLjItMjUuOS0zMC45LTQ1LjgtMjIuNCAxNS45LTUyLjEgNDYuMy03Ny40IDkxLjItNzYgMzMuMy45IDQ5IDIyLjUgNDcuMSA2NC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAyNTQuN3Y1Mi4xYy0xOC40IDQuMi0zNi45IDYuMS01Mi4xIDYuMS0zNi45IDc3LjQtMTAzIDE0My44LTEyNS4xIDE1Ni4yLTE0IDcuOS0yNy4xIDguNC00Mi43LS44QzEzNyA0NTIgMzQuMiAzNjcuNyAwIDEwMi43aDc0LjVDOTMuMiAyNjEuOCAxMzkgMzQzLjQgMTg5LjMgNDA0LjVjMjcuOS0yNy45IDU0LjgtNjUuMSA3NS42LTEwNi45LTQ5LjgtMjUuMy04MC4xLTgwLjktODAuMS0xNDUuNiAwLTY1LjYgMzcuNy0xMTUuMSAxMDIuMi0xMTUuMSAxMTQuOSAwIDEwNi4yIDEyNy45IDgxLjYgMTgxLjUgMCAwLTQ2LjQgOS4yLTYzLjUtMjAuNSAzLjQtMTEuMyA4LjItMzAuOCA4LjItNDguNSAwLTMxLjMtMTEuMy00Ni42LTI4LjQtNDYuNi0xOC4yIDAtMzAuOCAxNy4xLTMwLjggNTAgLjEgNzkuMiA1OS40IDExOC43IDEyOS45IDEwMS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMS40OTA3IDYzLjQ5MDdDMCA5NC45ODEzIDAgMTQ1LjY3MSAwIDI0Ny4wNFYyNjQuOTZDMCAzNjYuMzI5IDAgNDE3LjAxOSAzMS40OTA3IDQ0OC41MDlDNjIuOTgxMyA0ODAgMTEzLjY3MSA0ODAgMjE1LjA0IDQ4MEgyMzIuOTZDMzM0LjMyOSA0ODAgMzg1LjAxOSA0ODAgNDE2LjUwOSA0NDguNTA5QzQ0OCA0MTcuMDE5IDQ0OCAzNjYuMzI5IDQ0OCAyNjQuOTZWMjQ3LjA0QzQ0OCAxNDUuNjcxIDQ0OCA5NC45ODEzIDQxNi41MDkgNjMuNDkwN0MzODUuMDE5IDMyIDMzNC4zMjkgMzIgMjMyLjk2IDMySDIxNS4wNEMxMTMuNjcxIDMyIDYyLjk4MTMgMzIgMzEuNDkwNyA2My40OTA3Wk03NS42IDE2OC4yNjdIMTI2Ljc0N0MxMjguNDI3IDI1My43NiAxNjYuMTMzIDI4OS45NzMgMTk2IDI5Ny40NFYxNjguMjY3SDI0NC4xNlYyNDJDMjczLjY1MyAyMzguODI3IDMwNC42NCAyMDUuMjI3IDMxNS4wOTMgMTY4LjI2N0gzNjMuMjUzQzM1OS4zMTMgMTg3LjQzNSAzNTEuNDYgMjA1LjU4MyAzNDAuMTg2IDIyMS41NzlDMzI4LjkxMyAyMzcuNTc0IDMxNC40NjEgMjUxLjA3MSAyOTcuNzMzIDI2MS4yMjdDMzE2LjQxIDI3MC40OTkgMzMyLjkwNyAyODMuNjMgMzQ2LjEzMiAyOTkuNzUxQzM1OS4zNTcgMzE1Ljg3MyAzNjkuMDEgMzM0LjYxOCAzNzQuNDUzIDM1NC43NDdIMzIxLjQ0QzMxNi41NTUgMzM3LjI2MiAzMDYuNjE0IDMyMS42MSAyOTIuODY1IDMwOS43NTRDMjc5LjExNyAyOTcuODk5IDI2Mi4xNzMgMjkwLjM2OCAyNDQuMTYgMjg4LjEwN1YzNTQuNzQ3SDIzOC4zNzNDMTM2LjI2NyAzNTQuNzQ3IDc4LjAyNjcgMjg0Ljc0NyA3NS42IDE2OC4yNjdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZudiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDQuOSAzNTJjLTM0LjEgMC00Ni40LTMwLjQtNDYuNC0zMC40TDIuNiAyMTAuMVMtNy44IDE5MiAxMyAxOTJoMzIuOGMxMC40IDAgMTMuMiA4LjcgMTguOCAxOC4xbDM2LjcgNzQuNXM1LjIgMTMuMSAyMS4xIDEzLjEgMjEuMS0xMy4xIDIxLjEtMTMuMWwzNi43LTc0LjVjNS42LTkuNSA4LjQtMTguMSAxOC44LTE4LjFoMzIuOGMyMC44IDAgMTAuNCAxOC4xIDEwLjQgMTguMWwtNTUuOCAxMTEuNVMxNzQuMiAzNTIgMTQwIDM1MmgtMzUuMXptMzk1IDBjLTM0LjEgMC00Ni40LTMwLjQtNDYuNC0zMC40bC01NS45LTExMS41UzM4Ny4yIDE5MiA0MDggMTkyaDMyLjhjMTAuNCAwIDEzLjIgOC43IDE4LjggMTguMWwzNi43IDc0LjVzNS4yIDEzLjEgMjEuMSAxMy4xIDIxLjEtMTMuMSAyMS4xLTEzLjFsMzYuOC03NC41YzUuNi05LjUgOC40LTE4LjEgMTguOC0xOC4xSDYyN2MyMC44IDAgMTAuNCAxOC4xIDEwLjQgMTguMWwtNTUuOSAxMTEuNVM1NjkuMyAzNTIgNTM1LjEgMzUyaC0zNS4yek0zMzcuNiAxOTJjMzQuMSAwIDQ2LjQgMzAuNCA0Ni40IDMwLjRsNTUuOSAxMTEuNXMxMC40IDE4LjEtMTAuNCAxOC4xaC0zMi44Yy0xMC40IDAtMTMuMi04LjctMTguOC0xOC4xbC0zNi43LTc0LjVzLTUuMi0xMy4xLTIxLjEtMTMuMWMtMTUuOSAwLTIxLjEgMTMuMS0yMS4xIDEzLjFsLTM2LjcgNzQuNWMtNS42IDkuNC04LjQgMTguMS0xOC44IDE4LjFoLTMyLjljLTIwLjggMC0xMC40LTE4LjEtMTAuNC0xOC4xbDU1LjktMTExLjVzMTIuMi0zMC40IDQ2LjQtMzAuNGgzNS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWdWVqcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTYuOSA2NC4zSDI4MGwtNTYgODguNi00OC04OC42SDBMMjI0IDQ0OCA0NDggNjQuM2gtOTEuMXptLTMwMS4yIDMyaDUzLjhMMjI0IDI5NC41IDMzOC40IDk2LjNoNTMuOEwyMjQgMzg0LjUgNTUuNyA5Ni4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYXRjaG1hbk1vbml0b3JpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2LDE2QzEyMy40NTIsMTYsMTYsMTIzLjQ1MiwxNiwyNTZTMTIzLjQ1Miw0OTYsMjU2LDQ5Niw0OTYsMzg4LjU0OCw0OTYsMjU2LDM4OC41NDgsMTYsMjU2LDE2Wk0xMjEuNjksNDI5LjEyMkM3MC4wNTYsMzg4Ljk3MiwzNi43NDEsMzI2LjMyMiwzNi43NDEsMjU2YTIxOC41MTksMjE4LjUxOSwwLDAsMSw5LjU4Ny02NC4xMjJsMTAyLjktMTcuODk1LS4xMjEsMTAuOTY3LTEzLjk0MywyLjAxM3MtLjE0NCwxMi41LS4xNDQsMTkuNTQ5YTEyLjc3OCwxMi43NzgsMCwwLDAsNC44ODcsMTAuMzQ5bDkuNDY4LDcuNFptMTA1LjY5Mi0yODMuMjcsOC40OC03LjYxOHM2LjkzNC01LjM4LS4xNDMtOS4zNDRjLTcuMTg4LTQuMDI0LTM5LjUzLTM0LjUtMzkuNTMtMzQuNS01LjM0OC01LjQ3Ny04LjI1Ny03LjM0Ny0xNS40NiwwLDAsMC0zMi4zNDIsMzAuNDc0LTM5LjUyOSwzNC41LTcuMDc4LDMuOTY0LS4xNDQsOS4zNDQtLjE0NCw5LjM0NGw4LjQ4MSw3LjYxOC0uMDQ4LDQuMzY5TDc1Ljk4MiwxMzEuMDQ1YzM5LjY0NC01Ni45MzgsMTA1LjUzMi05NC4zLDE4MC4wMTgtOTQuM0EyMTguNzU0LDIxOC43NTQsMCwwLDEsNDIwLjkzNCwxMTEuNzdsLTE5My41MTIsMzcuN1ptMzQuMDYzLDMyOS4yNjktMzMuOS0yNTAuODU3LDkuNDY3LTcuNGExMi43NzgsMTIuNzc4LDAsMCwwLDQuODg4LTEwLjM0OWMwLTcuMDQ0LS4xNDQtMTkuNTQ5LS4xNDQtMTkuNTQ5bC0xMy45NDMtMi4wMTMtLjExNi0xMC40NzQsMjQxLjcxMSwzMS4zOTFBMjE4Ljg3MiwyMTguODcyLDAsMCwxLDQ3NS4yNTksMjU2QzQ3NS4yNTksMzc1LjA3NCwzNzkuODMxLDQ3Mi4yMTIsMjYxLjQ0NSw0NzUuMTIxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi4xNyAyMDEuNjdDNTE2LjY5IDI4Ny41MyA0NzEuMjMgMzY5LjU5IDM4OSA0MDkuOGMxMyAzNC4xLTEyLjQgNzAuMi00OC4zMiA3MC4yYTUxLjY4IDUxLjY4IDAgMCAxLTUxLjU3LTQ5Yy02LjQ0LjE5LTY0LjIgMC03Ni4zMy0uNjRBNTEuNjkgNTEuNjkgMCAwIDEgMTU5IDQ3OS45MmMtMzMuODYtMS4zNi01Ny45NS0zNC44NC00Ny02Ny45Mi0zNy4yMS0xMy4xMS03Mi41NC0zNC44Ny05OS42Mi03MC44LTEzLTE3LjI4LS40OC00MS44IDIwLjg0LTQxLjggNDYuMzEgMCAzMi4yMi01NC4xNyA0My4xNS0xMTAuMjZDOTQuOCA5NS4yIDE5My4xMiAzMiAyODguMDkgMzJjMTAyLjQ4IDAgMTk3LjE1IDcwLjY3IDIxNC4wOCAxNjkuNjd6TTM3My41MSAzODguMjhjNDItMTkuMTggODEuMzMtNTYuNzEgOTYuMjktMTAyLjE0IDQwLjQ4LTEyMy4wOS02NC4xNS0yMjgtMTgxLjcxLTIyOC04My40NSAwLTE3MC4zMiA1NS40Mi0xODYuMDcgMTM2LTkuNTMgNDguOTEgNSAxMzEuMzUtNjguNzUgMTMxLjM1QzU4LjIxIDM1OC42IDkxLjYgMzc4LjExIDEyNyAzODkuNTRjMjQuNjYtMjEuOCA2My44Ny0xNS40NyA3OS44MyAxNC4zNCAxNC4yMiAxIDc5LjE5IDEuMTggODcuOS44MmE1MS42OSA1MS42OSAwIDAgMSA3OC43OC0xNi40MnpNMjA1LjEyIDE4Ny4xM2MwLTM0Ljc0IDUwLjg0LTM0Ljc1IDUwLjg0IDBzLTUwLjg0IDM0Ljc0LTUwLjg0IDB6bTExNi41NyAwYzAtMzQuNzQgNTAuODYtMzQuNzUgNTAuODYgMHMtNTAuODYgMzQuNzUtNTAuODYgMHptLTEyMi42MSA3MC42OWMtMy40NC0xNi45NCAyMi4xOC0yMi4xOCAyNS42Mi01LjIxbC4wNi4yOGM0LjE0IDIxLjQyIDI5Ljg1IDQ0IDY0LjEyIDQzLjA3IDM1LjY4LS45NCA1OS4yNS0yMi4yMSA2NC4xMS00Mi43NyA0LjQ2LTE2LjA1IDI4LjYtMTAuMzYgMjUuNDcgNi01LjIzIDIyLjE4LTMxLjIxIDYyLTkxLjQ2IDYyLjktNDIuNTUgMC04MC44OC0yNy44NC04Ny45LTY0LjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWJBd2Vzb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3Mi4yIDUyYzAgMjAuOS0xMi40IDM5LTMwLjIgNDcuMkw0NDggMTkybDEwNC40LTIwLjljLTUuMy03LjctOC40LTE3LjEtOC40LTI3LjFjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OGMwIDI2LTIwLjYgNDcuMS00Ni40IDQ4TDQ4MSA0NDIuM2MtMTAuMyAyMy0zMy4yIDM3LjctNTguNCAzNy43bC0yMDUuMiAwYy0yNS4yIDAtNDgtMTQuOC01OC40LTM3LjdMNDYuNCAxOTJDMjAuNiAxOTEuMSAwIDE3MCAwIDE0NGMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4YzAgMTAuMS0zLjEgMTkuNC04LjQgMjcuMUwxOTIgMTkyIDI5OC4xIDk5LjFjLTE3LjctOC4zLTMwLTI2LjMtMzAtNDcuMWMwLTI4LjcgMjMuMy01MiA1Mi01MnM1MiAyMy4zIDUyIDUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWJmbG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCA2NEw0MzUuOCA0NjMuMkgyNDRsODUuNS0xNjUuNWgtMy44QzI1NS4xIDM4OS4zIDE0OS45IDQ0OS41IDAgNDYzLjJWMzAwLjFzOTUuOS01LjcgMTUyLjMtNjQuOUgwVjY0SDE3MS4xVjIwNC44bDMuOCAwTDI0NC45IDY0SDM3NC4zVjIwMy45bDMuOCAwTDQ1MC43IDY0SDY0MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2VlYmx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyNS4wOSA2NS44M2MtMzkuODggMC03My4yOCAyNS43My04My42NiA2NC4zMy0xOC4xNi01OC4wNi02NS41LTY0LjMzLTg0Ljk1LTY0LjMzLTE5Ljc4IDAtNjYuOCA2LjI4LTg1LjI4IDY0LjMzLTEwLjM4LTM4LjYtNDMuNDUtNjQuMzMtODMuNjYtNjQuMzNDMzguNTkgNjUuODMgMCA5OS43MiAwIDE0My4wM2MwIDI4Ljk2IDQuMTggMzMuMjcgNzcuMTcgMjMzLjQ4IDIyLjM3IDYwLjU3IDY3Ljc3IDY5LjM1IDkyLjc0IDY5LjM1IDM5LjIzIDAgNzAuMDQtMTkuNDYgODUuOTMtNTMuOTggMTUuODkgMzQuODMgNDYuNjkgNTQuMjkgODUuOTMgNTQuMjkgMjQuOTcgMCA3MC4zNi05LjEgOTIuNzQtNjkuNjcgNzYuNTUtMjA4LjY1IDc3LjUtMjA1LjU4IDc3LjUtMjI3LjIuNjMtNDguMzItMzYuMDEtODMuNDctODYuOTItODMuNDd6bTI2LjM0IDExNC44MWwtNjUuNTcgMTc2LjQ0Yy03LjkyIDIxLjQ5LTIxLjIyIDM3LjIyLTQ2LjI0IDM3LjIyLTIzLjQ0IDAtMzcuMzgtMTIuNDEtNDQuMDMtMzMuOWwtMzkuMjgtMTE3LjQyaC0uOTVMMjE2LjA4IDM2MC40Yy02Ljk2IDIxLjUtMjAuOSAzMy42LTQ0LjAyIDMzLjYtMjUuMDIgMC0zOC4zMy0xNS43NC00Ni4yNC0zNy4yMkw2MC44OCAxODEuNTVjLTUuMzgtMTQuODMtNy45Mi0yMy45MS03LjkyLTM0LjUgMC0xNi4zNCAxNS44NC0yOS4zNiAzOC4zMy0yOS4zNiAxOC42OSAwIDMxLjk5IDExLjggMzYuMTEgMjkuMDVsNDQuMDMgMTM5LjgyaC45NWw0NC42Ni0xMzYuNzljNi4wMi0xOS42NyAxNi40Ny0zMi4wOCAzOC45Ni0zMi4wOHMzMi45NCAxMi4xMSAzOC45NiAzMi4wOGw0NC42NiAxMzYuNzloLjk1bDQ0LjAzLTEzOS44MmM0LjEyLTE3LjI1IDE3LjQyLTI5LjA1IDM2LjExLTI5LjA1IDIyLjE3IDAgMzguMzMgMTMuMzIgMzguMzMgMzUuNzEtLjMyIDcuODctNC4xMiAxNi4wNC03LjYxIDI3LjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWlibyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcgMTc3LjZjNy42LTI0LTEzLjQtNDYuOC0zNy40LTQxLjctMjIgNC44LTI4LjgtMjguMS03LjEtMzIuOCA1MC4xLTEwLjkgOTIuMyAzNy4xIDc2LjUgODQuOC02LjggMjEuMi0zOC44IDEwLjgtMzItMTAuM3pNMjE0LjggNDQ2LjdDMTA4LjUgNDQ2LjcgMCAzOTUuMyAwIDMxMC40YzAtNDQuMyAyOC05NS40IDc2LjMtMTQzLjdDMTc2IDY3IDI3OS41IDY1LjggMjQ5LjkgMTYxYy00IDEzLjEgMTIuMyA1LjcgMTIuMyA2IDc5LjUtMzMuNiAxNDAuNS0xNi44IDExNCA1MS40LTMuNyA5LjQgMS4xIDEwLjkgOC4zIDEzLjEgMTM1LjcgNDIuMyAzNC44IDIxNS4yLTE2OS43IDIxNS4yem0xNDMuNy0xNDYuM2MtNS40LTU1LjctNzguNS05NC0xNjMuNC04NS43LTg0LjggOC42LTE0OC44IDYwLjMtMTQzLjQgMTE2czc4LjUgOTQgMTYzLjQgODUuN2M4NC44LTguNiAxNDguOC02MC4zIDE0My40LTExNnpNMzQ3LjkgMzUuMWMtMjUuOSA1LjYtMTYuOCA0My43IDguMyAzOC4zIDcyLjMtMTUuMiAxMzQuOCA1Mi44IDExMS43IDEyNC03LjQgMjQuMiAyOS4xIDM3IDM3LjQgMTIgMzEuOS05OS44LTU1LjEtMTk1LjktMTU3LjQtMTc0LjN6bS03OC41IDMxMWMtMTcuMSAzOC44LTY2LjggNjAtMTA5LjEgNDYuMy00MC44LTEzLjEtNTgtNTMuNC00MC4zLTg5LjcgMTcuNy0zNS40IDYzLjEtNTUuNCAxMDMuNC00NS4xIDQyIDEwLjggNjMuMSA1MC4yIDQ2IDg4LjV6bS04Ni4zLTMwYy0xMi45LTUuNC0zMCAuMy0zOCAxMi45LTguMyAxMi45LTQuMyAyOCA4LjYgMzQgMTMuMSA2IDMwLjguMyAzOS4xLTEyLjkgOC0xMy4xIDMuNy0yOC4zLTkuNy0zNHptMzIuNi0xMy40Yy01LjEtMS43LTExLjQuNi0xNC4zIDUuNC0yLjkgNS4xLTEuNCAxMC42IDMuNyAxMi45IDUuMSAyIDExLjctLjMgMTQuNi01LjQgMi44LTUuMiAxLjEtMTAuOS00LTEyLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdlaXhpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODUuMiAxNjcuNmM2LjQgMCAxMi42LjMgMTguOCAxLjFDMzg3LjQgOTAuMyAzMDMuMyAzMiAyMDcuNyAzMiAxMDAuNSAzMiAxMyAxMDQuOCAxMyAxOTcuNGMwIDUzLjQgMjkuMyA5Ny41IDc3LjkgMTMxLjZsLTE5LjMgNTguNiA2OC0zNC4xYzI0LjQgNC44IDQzLjggOS43IDY4LjIgOS43IDYuMiAwIDEyLjEtLjMgMTguMy0uOC00LTEyLjktNi4yLTI2LjYtNi4yLTQwLjgtLjEtODQuOSA3Mi45LTE1NCAxNjUuMy0xNTR6bS0xMDQuNS01Mi45YzE0LjUgMCAyNC4yIDkuNyAyNC4yIDI0LjQgMCAxNC41LTkuNyAyNC4yLTI0LjIgMjQuMi0xNC44IDAtMjkuMy05LjctMjkuMy0yNC4yLjEtMTQuNyAxNC42LTI0LjQgMjkuMy0yNC40em0tMTM2LjQgNDguNmMtMTQuNSAwLTI5LjMtOS43LTI5LjMtMjQuMiAwLTE0LjggMTQuOC0yNC40IDI5LjMtMjQuNCAxNC44IDAgMjQuNCA5LjcgMjQuNCAyNC40IDAgMTQuNi05LjYgMjQuMi0yNC40IDI0LjJ6TTU2MyAzMTkuNGMwLTc3LjktNzcuOS0xNDEuMy0xNjUuNC0xNDEuMy05Mi43IDAtMTY1LjQgNjMuNC0xNjUuNCAxNDEuM1MzMDUgNDYwLjcgMzk3LjYgNDYwLjdjMTkuMyAwIDM4LjktNS4xIDU4LjYtOS45bDUzLjQgMjkuMy0xNC44LTQ4LjZDNTM0IDQwMi4xIDU2MyAzNjMuMiA1NjMgMzE5LjR6bS0yMTkuMS0yNC41Yy05LjcgMC0xOS4zLTkuNy0xOS4zLTE5LjYgMC05LjcgOS43LTE5LjMgMTkuMy0xOS4zIDE0LjggMCAyNC40IDkuNyAyNC40IDE5LjMgMCAxMC05LjcgMTkuNi0yNC40IDE5LjZ6bTEwNy4xIDBjLTkuNyAwLTE5LjMtOS43LTE5LjMtMTkuNiAwLTkuNyA5LjctMTkuMyAxOS4zLTE5LjMgMTQuNSAwIDI0LjQgOS43IDI0LjQgMTkuMy4xIDEwLTkuOSAxOS42LTI0LjQgMTkuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2hhdHNhcHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgwLjkgOTcuMUMzMzkgNTUuMSAyODMuMiAzMiAyMjMuOSAzMmMtMTIyLjQgMC0yMjIgOTkuNi0yMjIgMjIyIDAgMzkuMSAxMC4yIDc3LjMgMjkuNiAxMTFMMCA0ODBsMTE3LjctMzAuOWMzMi40IDE3LjcgNjguOSAyNyAxMDYuMSAyN2guMWMxMjIuMyAwIDIyNC4xLTk5LjYgMjI0LjEtMjIyIDAtNTkuMy0yNS4yLTExNS02Ny4xLTE1N3ptLTE1NyAzNDEuNmMtMzMuMiAwLTY1LjctOC45LTk0LTI1LjdsLTYuNy00LTY5LjggMTguM0w3MiAzNTkuMmwtNC40LTdjLTE4LjUtMjkuNC0yOC4yLTYzLjMtMjguMi05OC4yIDAtMTAxLjcgODIuOC0xODQuNSAxODQuNi0xODQuNSA0OS4zIDAgOTUuNiAxOS4yIDEzMC40IDU0LjEgMzQuOCAzNC45IDU2LjIgODEuMiA1Ni4xIDEzMC41IDAgMTAxLjgtODQuOSAxODQuNi0xODYuNiAxODQuNnptMTAxLjItMTM4LjJjLTUuNS0yLjgtMzIuOC0xNi4yLTM3LjktMTgtNS4xLTEuOS04LjgtMi44LTEyLjUgMi44LTMuNyA1LjYtMTQuMyAxOC0xNy42IDIxLjgtMy4yIDMuNy02LjUgNC4yLTEyIDEuNC0zMi42LTE2LjMtNTQtMjkuMS03NS41LTY2LTUuNy05LjggNS43LTkuMSAxNi4zLTMwLjMgMS44LTMuNy45LTYuOS0uNS05LjctMS40LTIuOC0xMi41LTMwLjEtMTcuMS00MS4yLTQuNS0xMC44LTkuMS05LjMtMTIuNS05LjUtMy4yLS4yLTYuOS0uMi0xMC42LS4yLTMuNyAwLTkuNyAxLjQtMTQuOCA2LjktNS4xIDUuNi0xOS40IDE5LTE5LjQgNDYuMyAwIDI3LjMgMTkuOSA1My43IDIyLjYgNTcuNCAyLjggMy43IDM5LjEgNTkuNyA5NC44IDgzLjggMzUuMiAxNS4yIDQ5IDE2LjUgNjYuNiAxMy45IDEwLjctMS42IDMyLjgtMTMuNCAzNy40LTI2LjQgNC42LTEzIDQuNi0yNC4xIDMuMi0yNi40LTEuMy0yLjUtNS0zLjktMTAuNS02LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdobWNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAxNjF2LTIxLjNsLTI4LjUtOC44LTIuMi0xMC40IDIwLjEtMjAuN0w0MjcgODAuNGwtMjkgNy41LTcuMi03LjUgNy41LTI4LjItMTkuMS0xMS42LTIxLjMgMjEtMTAuNy0zLjItNy0yNi40aC0yMi42bC02LjIgMjYuNC0xMi4xIDMuMi0xOS43LTIxLTE5LjQgMTEgOC4xIDI3LjctOC4xIDguNC0yOC41LTcuNS0xMSAxOS4xIDIwLjcgMjEtMi45IDEwLjQtMjguNSA3LjgtLjMgMjEuNyAyOC44IDcuNSAyLjQgMTIuMS0yMC4xIDE5LjkgMTAuNCAxOC41IDI5LjYtNy41IDcuMiA4LjYtOC4xIDI2LjkgMTkuOSAxMS42IDE5LjQtMjAuNCAxMS42IDIuOSA2LjcgMjguNSAyMi42LjMgNi43LTI4LjggMTEuNi0zLjUgMjAuNyAyMS42IDIwLjQtMTIuMS04LjgtMjggNy44LTguMSAyOC44IDguOCAxMC4zLTIwLjEtMjAuOS0xOC44IDIuMi0xMi4xIDI5LjEtN3ptLTExOS4yIDQ1LjJjLTMxLjMgMC01Ni44LTI1LjQtNTYuOC01Ni44czI1LjQtNTYuOCA1Ni44LTU2LjggNTYuOCAyNS40IDU2LjggNTYuOGMwIDMxLjUtMjUuNCA1Ni44LTU2LjggNTYuOHptNzIuMyAxNi40bDQ2LjkgMTQuNVYyNzdsLTU1LjEgMTMuNC00LjEgMjIuNyAzOC45IDM1LjMtMTkuMiAzNy45LTU0LTE2LjctMTQuNiAxNS4yIDE2LjcgNTIuNS0zOC4zIDIyLjctMzguOS00MC41LTIxLjcgNi42LTEyLjYgNTQtNDIuNC0uNS0xMi42LTUzLjYtMjEuNy01LjYtMzYuNCAzOC40LTM3LjQtMjEuNyAxNS4yLTUwLjUtMTMuNy0xNi4xLTU1LjUgMTQuMS0xOS43LTM0LjggMzcuOS0zNy40LTQuOC0yMi44LTU0LTE0LjEuNS00MC45TDU0IDIxOS45bDUuNy0xOS43LTM4LjktMzkuNEw0MS41IDEyNWw1My42IDE0LjEgMTUuMi0xNS43LTE1LjItNTIgMzYuNC0yMC43IDM2LjggMzkuNEwxOTEgODRsMTEuNi01MkgyNDVsMTEuNiA0NS45TDIzNCA3MmwtNi4zLTEuNy0zLjMgNS43LTExIDE5LjEtMy4zIDUuNiA0LjYgNC42IDE3LjIgMTcuNC0uMyAxLTIzLjggNi41LTYuMiAxLjctLjEgNi40LS4yIDEyLjlDMTUzLjggMTYxLjYgMTE4IDIwNCAxMTggMjU0LjdjMCA1OC4zIDQ3LjMgMTA1LjcgMTA1LjcgMTA1LjcgNTAuNSAwIDkyLjctMzUuNCAxMDMuMi04Mi44bDEzLjIuMiA2LjkuMSAxLjYtNi43IDUuNi0yNCAxLjktLjYgMTcuMSAxNy44IDQuNyA0LjkgNS44LTMuNCAyMC40LTEyLjEgNS44LTMuNS0yLTYuNS02LjgtMjEuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2lraXBlZGlhVyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgNTEuMmwtLjMgMTIuMmMtMjguMS44LTQ1IDE1LjgtNTUuOCA0MC4zLTI1IDU3LjgtMTAzLjMgMjQwLTE1NS4zIDM1OC42SDQxNWwtODEuOS0xOTMuMWMtMzIuNSA2My42LTY4LjMgMTMwLTk5LjIgMTkzLjEtLjMuMy0xNSAwLTE1LS4zQzE3MiAzNTIuMyAxMjIuOCAyNDMuNCA3NS44IDEzMy40IDY0LjQgMTA2LjcgMjYuNCA2My40LjIgNjMuN2MwLTMuMS0uMy0xMC0uMy0xNC4yaDE2MS45djEzLjljLTE5LjIgMS4xLTUyLjggMTMuMy00My4zIDM0LjIgMjEuOSA0OS43IDEwMy42IDI0MC4zIDEyNS42IDI4OC42IDE1LTI5LjcgNTcuOC0xMDkuMiA3NS4zLTE0Mi44LTEzLjktMjguMy01OC42LTEzMy45LTcyLjgtMTYwLTkuNy0xNy44LTM2LjEtMTkuNC01NS44LTE5LjdWNDkuOGwxNDIuNS4zdjEzLjFjLTE5LjQuNi0zOC4xIDcuOC0yOS40IDI2LjEgMTguOSA0MCAzMC42IDY4LjEgNDguMSAxMDQuNyA1LjYtMTAuOCAzNC43LTY5LjQgNDguMS0xMDAuOCA4LjktMjAuNi0zLjktMjguNi0zOC42LTI5LjQuMy0zLjYgMC0xMC4zLjMtMTMuNiA0NC40LS4zIDExMS4xLS4zIDEyMy4xLS42djEzLjZjLTIyLjUuOC00NS44IDEyLjgtNTguMSAzMS43bC01OS4yIDEyMi44YzYuNCAxNi4xIDYzLjMgMTQyLjggNjkuMiAxNTYuN0w1NTkuMiA5MS44Yy04LjYtMjMuMS0zNi40LTI4LjEtNDcuMi0yOC4zVjQ5LjZsMTI3LjggMS4xLjIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZG93cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDkzLjdsMTgzLjYtMjUuM3YxNzcuNEgwVjkzLjd6bTAgMzI0LjZsMTgzLjYgMjUuM1YyNjguNEgwdjE0OS45em0yMDMuOCAyOEw0NDggNDgwVjI2OC40SDIwMy44djE3Ny45em0wLTM4MC42djE4MC4xSDQ0OFYzMkwyMDMuOCA2NS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaXJzaW5kaGFuZHdlcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAuNzcxNjEsNDc5LjgxMjEzaDgzLjM2MDcxVjM2Ny44NDc0MWwtODMuMzYwNzEsNDcuMDA5Wm0zMjkuMDQ2NzUsMGg4Mi4zNTAyMlY0MTQuODU2NDVsLTgyLjM1MDIyLTQ3LjAwOVptLjAwNTY4LTQ0OFYyNTEuNTY4TDI1Ni4xNzU5LDE3OS4xODYxLDEzNC41MDM3OCwyNTEuNTY4VjMxLjgxMjEzSDUwLjc3MTYxVjM5Mi42MDU2NUwyNTYuMTc1OSwyNzAuMzE5MDksNDYyLjE2ODU4LDM5Mi42MDU2NVYzMS44MTIxM1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2l4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5My4zOCAxMzEuNjljMCAxMy4wMyAyLjA4IDMyLjY5LTI4LjY4IDQzLjgzLTkuNTIgMy40NS0xNS45NSA5LjY2LTE1Ljk1IDkuNjYgMC0zMSA0LjcyLTQyLjIyIDE3LjQtNDguODYgOS43NS01LjExIDI3LjIzLTQuNjMgMjcuMjMtNC42M3ptLTExNS44IDM1LjU0bC0zNC4yNCAxMzIuNjYtMjguNDgtMTA4LjU3Yy03LjY5LTMxLjk5LTIwLjgxLTQ4LjUzLTQ4LjQzLTQ4LjUzLTI3LjM3IDAtNDAuNjYgMTYuMTgtNDguNDMgNDguNTNMODkuNTIgMjk5Ljg5IDU1LjI4IDE2Ny4yM0M0OS43MyAxNDAuNTEgMjMuODYgMTI4Ljk2IDAgMTMxLjk2bDY1LjU3IDI0Ny45M3MyMS42MyAxLjU2IDMyLjQ2LTMuOTZjMTQuMjItNy4yNSAyMC45OC0xMi44NCAyOS41OS00Ni41NyA3LjY3LTMwLjA3IDI5LjExLTExOC40MSAzMS4xMi0xMjQuNyA0Ljc2LTE0Ljk0IDExLjA5LTEzLjgxIDE1LjQgMCAxLjk3IDYuMyAyMy40NSA5NC42MyAzMS4xMiAxMjQuNyA4LjYgMzMuNzMgMTUuMzcgMzkuMzIgMjkuNTkgNDYuNTcgMTAuODIgNS41MiAzMi40NiAzLjk2IDMyLjQ2IDMuOTZsNjUuNTctMjQ3LjkzYy0yNC40Mi0zLjA3LTQ5LjgyIDguOTMtNTUuMyAzNS4yN3ptMTE1Ljc4IDUuMjFzLTQuMSA2LjM0LTEzLjQ2IDExLjU3Yy02LjAxIDMuMzYtMTEuNzggNS42NC0xNy45NyA4LjYxLTE1LjE0IDcuMjYtMTMuMTggMTMuOTUtMTMuMTggMzUuMnYxNTIuMDdzMTYuNTUgMi4wOSAyNy4zNy0zLjQzYzEzLjkzLTcuMSAxNy4xMy0xMy45NSAxNy4yNi00NC43OFYxODEuNDFsLS4wMi4wMXYtOC45OHptMTYzLjQ0IDg0LjA4TDY0MCAxMzIuNzhzLTM1LjExLTUuOTgtNTIuNSA5Ljg1Yy0xMy4zIDEyLjEtMjQuNDEgMjkuNTUtNTQuMTggNzIuNDctLjQ3LjczLTYuMjUgMTAuNTQtMTMuMDcgMC0yOS4yOS00Mi4yMy00MC44LTYwLjI5LTU0LjE4LTcyLjQ3LTE3LjM5LTE1LjgzLTUyLjUtOS44NS01Mi41LTkuODVsODMuMiAxMjMuNzQtODIuOTcgMTIzLjM2czM2LjU3IDQuNjIgNTMuOTUtMTEuMjFjMTEuNDktMTAuNDYgMTcuNTgtMjAuMzcgNTIuNTEtNzAuNzIgNi44MS0xMC41MiAxMi41Ny0uNzcgMTMuMDcgMCAyOS40IDQyLjM4IDM5LjIzIDU4LjA2IDUzLjE0IDcwLjcyIDE3LjM5IDE1LjgzIDUzLjMyIDExLjIxIDUzLjMyIDExLjIxTDU1Ni44IDI1Ni41MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2l6YXJkc09mVGhlQ29hc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE5LjE5IDM0NS42OWMtMS45IDEuMzgtMTEuMDcgOC40NC0uMjYgMjMuNTcgNC42NCA2LjQyIDE0LjExIDEyLjc5IDIxLjczIDYuNTUgNi41LTQuODggNy4zNS0xMi45Mi4yNi0yMy4wNC01LjQ3LTcuNzYtMTQuMjgtMTIuODgtMjEuNzMtNy4wOHptMzM2Ljc1IDc1Ljk0Yy0uMzQgMS43LS41NSAxLjY3Ljc5IDAgMi4wOS00LjE5IDQuMTktMTAuMjEgNC45OC0xOS45IDMuMTQtMzguNDktNDAuMzMtNzEuNDktMTAxLjM0LTc4LjAzLTU0LjczLTYuMDItMTI0LjM4IDkuMTctMTg4LjggNjAuNDlsLS4yNiAxLjU3YzIuNjIgNC45OCA0Ljk4IDEwLjc0IDMuNCAyMS4yMWwuNzkuMjZjNjMuODktNTguNCAxMzEuMTktNzcuMjUgMTg0LjM1LTczLjg1IDU4LjQgMy42NyAxMDAuMDMgMzQuMDQgMTAwLjAzIDY4LjA4LS4wMSA5Ljk2LTIuNjMgMTUuNzItMy45NCAyMC4xN3pNMzkyLjI4IDI0MC40MmMuNzkgNy4wNyA0LjE5IDEwLjIxIDkuMTcgMTAuNDcgNS41LjI2IDkuNDMtMi42MiAxMC40Ny02LjU1Ljc5LTMuNCAyLjA5LTI5Ljg1IDIuMDktMjkuODVzLTExLjI2IDYuNTUtMTQuOTMgMTAuNDdjLTMuNjYgMy42OC03LjMzIDguMzktNi44IDE1LjQ2em0tNTAuMDItMTUxLjFDMTM3Ljc1IDg5LjMyIDEzLjEgMjI2LjguNzkgMjQxLjJjLTEuMDUuNTItMS4zMS43OS43OSAxLjMxIDYwLjQ5IDE2LjUgMTU1LjgxIDgxLjE4IDE5Ni4xMyAyMDIuMTZsMS4wNS4yNmM1NS4yNS02OS45MiAxNDAuODgtMTI4LjA1IDIzNi45OS0xMjguMDUgODAuOTIgMCAxMzAuMTUgNDIuMTYgMTMwLjE1IDgwLjM5IDAgMTguMzMtNi41NSAzMy41Mi0yMi4yNiA0Ni4zNSAwIC45Ni0uMi43OS43OS43OSAxNC42Ni0xMC43NCAyNy41LTI4LjggMjcuNS00OC4xOCAwLTIyLjc4LTEyLjA1LTM4LjIzLTEyLjA1LTM4LjIzIDcuMDcgNy4wNyAxMC43NCAxNi4yNCAxMC43NCAxNi4yNCA1Ljc2LTQwLjg1IDI2Ljk3LTYyLjMyIDI2Ljk3LTYyLjMyLTIuMzYtOS42OS02LjgxLTE3LjgxLTYuODEtMTcuODEgNy41OSA4LjEyIDE0LjQgMjcuNSAxNC40IDQxLjM3IDAgMTAuNDctMy40IDIyLjc4LTEyLjU3IDMxLjk1bC4yNi41MmM4LjEyLTQuOTggMTYuNS0xNi43NiAxNi41LTM3Ljk3IDAtMTUuNzEtNC43MS0yNS45Mi00LjcxLTI1LjkyIDUuNzYtNS4yNCAxMS4yNi05LjE3IDE1Ljk3LTExLjc4Ljc5IDMuNCAyLjA5IDkuNjkgMi4zNiAxNC45MyAwIDEuMDUuNzkgMS44MyAxLjA1IDAgLjc5LTUuNzYtLjI2LTE2LjI0LS4yNi0xNi41IDYuMDItMy4xNCA5LjY5LTQuNDUgOS42OS00LjQ1QzYxNy43NCAxNzYgNDg5LjQzIDg5LjMyIDM0Mi4yNiA4OS4zMnptLTk5LjI0IDI4OS42MmMtMTEuMDYgOC45OS0yNC4yIDQuMDgtMzAuNjQtNC4xOS03LjQ1LTkuNTgtNi43Ni0yNC4wOSA0LjE5LTMyLjQ3IDE0Ljg1LTExLjM1IDI3LjA4LS40OSAzMS4xNiA1LjUuMjguMzkgMTIuMTMgMTYuNTctNC43MSAzMS4xNnptMi4wOS0xMzYuNDNsOS40My0xNy44MSAxMS43OCA3MC45Ni0xMi41NyA2LjAyLTI0LjYyLTI4LjggMTQuMTQtMjYuNzEgMy42NyA0LjQ1LTEuODMtOC4xMXptMTguNTkgMTE3LjU4bC0uMjYtLjI2YzIuMDUtNC4xLTIuNS02LjYxLTE3LjU0LTMxLjY5LTEuMzEtMi4zNi0zLjE0LTIuODgtNC40NS0yLjYybC0uMjYtLjUyYzcuODYtNS43NiAxNS40NS0xMC4yMSAyNS40LTE1LjcxbC41Mi4yNmMxLjMxIDEuODMgMi4wOSAyLjg4IDMuNCA0LjcxbC0uMjYuNTJjLTEuMDUtLjI2LTIuMzYtLjc5LTUuMjQuMjYtMi4wOS43OS03Ljg2IDMuNjctMTIuMzEgNy41OXYxLjMxYzEuNTcgMi4zNiAzLjkzIDYuNTUgNS43NiA5LjY5aC4yNmMxMC4wNS02LjI4IDcuNTYtNC41NSAxMS41Mi03Ljg2aC4yNmMuNTIgMS44My41MiAxLjgzIDEuODMgNS41bC0uMjYuMjZjLTMuMDYuNjEtNC42NS4zNC0xMS41MiA1LjV2LjI2YzkuNDYgMTcuMDIgMTEuMDEgMTYuNzUgMTIuNTcgMTUuOTdsLjI2LjI2Yy0yLjM0IDEuNTktNi4yNyA0LjIxLTkuNjggNi41N3ptNTUuMjYtMzIuNDdjLTMuMTQgMS41Ny02LjAyIDIuODgtOS45NSA0Ljk4bC0uMjYtLjI2YzEuMjktMi41OSAxLjE2LTIuNzEtMTEuNzgtMzIuNDdsLS4yNi0uMjZjLS4xNSAwLTguOSAzLjY1LTkuOTUgNy4zM2gtLjUybC0xLjA1LTUuNzYuMjYtLjUyYzcuMjktNC41NiAyNS41My0xMS42NCAyNy43Ni0xMi41N2wuNTIuMjYgMy4xNCA0Ljk4LS4yNi41MmMtMy41My0xLjc2LTcuMzUuNzYtMTIuMzEgMi42MnYuMjZjMTIuMzEgMzIuMDEgMTIuNjcgMzAuNjQgMTQuNjYgMzAuNjR2LjI1em00NC43Ny0xNi41Yy00LjE5IDEuMDUtNS4yNCAxLjMxLTkuNjkgMi44OGwtLjI2LS4yNi41Mi00LjQ1Yy0xLjA1LTMuNC0zLjE0LTExLjUyLTMuNjctMTMuNjJsLS4yNi0uMjZjLTMuNC43OS04LjkgMi42Mi0xMi44MyAzLjkzbC0uMjYuMjZjLjc5IDIuNjIgMy4xNCA5Ljk1IDQuMTkgMTMuODguNzkgMi4zNiAxLjgzIDIuODggMi44OCAzLjE0di41MmMtMy42NyAxLjA1LTcuMDcgMi42Mi0xMC4yMSAzLjkzbC0uMjYtLjI2YzEuMDUtMS4zMSAxLjA1LTIuODguMjYtNC45OC0xLjA1LTMuMTQtOC4xMi0yMy44My05LjE3LTI3LjIzLS41Mi0xLjgzLTEuNTctMy4xNC0yLjYyLTMuMTR2LS41MmMzLjE0LTEuMDUgNi4wMi0yLjA5IDEwLjc0LTMuNGwuMjYuMjYtLjI2IDQuNzFjMS4zMSAzLjkzIDIuMzYgNy41OSAzLjE0IDkuNjloLjI2YzMuOTMtMS4zMSA5LjQzLTIuODggMTIuODMtMy45M2wuMjYtLjI2LTIuNjItOS40M2MtLjUyLTEuODMtMS4wNS0zLjQtMi42Mi0zLjkzdi0uMjZjNC40NS0xLjA1IDcuMzMtMS44MyAxMC43NC0yLjM2bC4yNi4yNmMtMS4wNSAxLjMxLTEuMDUgMi44OC0uNTIgNC40NSAxLjU3IDYuMjggNC43MSAyMC40MyA2LjI4IDI2LjQ1LjU0IDIuNjIgMS44NSAzLjQxIDIuNjMgMy45M3ptMzIuMjEtNi44MWwtLjI2LjI2Yy00LjcxLjUyLTE0LjE0IDIuMzYtMjIuNTIgNC4xOWwtLjI2LS4yNi43OS00LjE5Yy0xLjU3LTcuODYtMy40LTE4LjU5LTQuOTgtMjYuMTktLjI2LTEuODMtLjc5LTIuODgtMi42Mi0zLjY3bC43OS0uNTJjOS4xNy0xLjU3IDIwLjE2LTIuMzYgMjQuODgtMi42MmwuMjYuMjZjLjUyIDIuMzYuNzkgMy4xNCAxLjU3IDUuNWwtLjI2LjI2Yy0xLjE0LTEuMTQtMy4zNC0zLjItMTYuMjQtLjc5bC0uMjYuMjZjLjI2IDEuNTcgMS4wNSA2LjU1IDEuNTcgOS45NWwuMjYuMjZjOS41Mi0xLjY4IDQuNzYtLjA2IDEwLjc0LTIuMzZoLjI2YzAgMS41Ny0uMjYgMS44My0uMjYgNS4yNGgtLjI2Yy00LjgxLTEuMDMtMi4xNS0uOS0xMC4yMSAwbC0uMjYuMjZjLjI2IDIuMDkgMS41NyA5LjQzIDIuMDkgMTIuNTdsLjI2LjI2YzEuMTUuMzggMTQuMjEtLjY1IDE2LjI0LTQuNzFoLjI2Yy0uNTMgMi4zOC0xLjA1IDQuMjEtMS41OCA2LjA0em0xMC43NC00NC41MWMtNC40NSAyLjM2LTguMTIgMi44OC0xMSAyLjg4LS4yNS4wMi0xMS40MSAxLjA5LTE3LjU0LTkuOTUtNi43NC0xMC43OS0uOTgtMjUuMiA1LjUtMzEuNjkgOC44LTguMTIgMjMuMzUtMTAuMSAyOC41NC0xNy4wMiA4LjAzLTEwLjMzLTEzLjA0LTIyLjMxLTI5LjU5LTUuNzZsLTIuNjItMi44OCA1LjI0LTE2LjI0YzI1LjU5LTEuNTcgNDUuMi0zLjA0IDUwLjAyIDE2LjI0Ljc5IDMuMTQgMCA5LjQzLS4yNiAxMi4wNSAwIDIuNjItMS44MyAxOC44NS0yLjA5IDIzLjA0LS41MiA0LjE5LS43OSAxOC4zMy0uNzkgMjAuNjkuMjYgMi4zNi41MiA0LjE5IDEuNTcgNS41IDEuNTcgMS44MyA1Ljc2IDEuODMgNS43NiAxLjgzbC0uNzkgNC43MWMtMTEuODItMS4wNy0xMC4yOC0uNTktMjAuNDMtMS4wNS0zLjIyLTUuMTUtMi4yMy0zLjI4LTQuMTktNy44NiAwIC4wMS00LjE5IDMuOTQtNy4zMyA1LjUxem0zNy4xOCAyMS4yMWMtNi4zNS0xMC41OC0xOS44Mi03LjE2LTIxLjczIDUuNS0yLjYzIDE3LjA4IDE0LjMgMTkuNzkgMjAuNjkgMTAuMjFsLjI2LjI2Yy0uNTIgMS44My0xLjgzIDYuMDItMS44MyA2LjI4bC0uNTIuNTJjLTEwLjMgNi44Ny0yOC41LTIuNS0yNS42Ni0xOC41OSAxLjk0LTEwLjg3IDE0LjQ0LTE4LjkzIDI4LjgtOS45NWwuMjYuNTJjMCAxLjA2LS4yNyAzLjQxLS4yNyA1LjI1em01Ljc3LTg3Ljczdi02LjU1Yy42OSAwIDE5LjY1IDMuMjggMjcuNzYgNy4zM2wtMS41NyAxNy41NHMxMC4yMS05LjQzIDE1LjQ1LTEwLjc0YzUuMjQtMS41NyAxNC45MyA3LjMzIDE0LjkzIDcuMzNsLTExLjI2IDExLjI2Yy0xMi4wNy02LjM1LTE5LjU5LS4wOC0yMC42OS43OS01LjI5IDM4LjcyLTguNiA0Mi4xNyA0LjQ1IDQ2LjA5bC0uNTIgNC43MWMtMTcuNTUtNC4yOS0xOC41My00LjUtMzYuOTItNy4zM2wuNzktNC43MWM3LjI1IDAgNy40OC01LjMyIDcuNTktNi44MSAwIDAgNC45OC01My4xNiA0Ljk4LTU1LjI1LS4wMi0yLjg3LTQuOTktMy42Ni00Ljk5LTMuNjZ6bTEwLjk5IDExNC40NGMtOC4xMi0yLjA5LTE0LjE0LTExLTEwLjc0LTIwLjY5IDMuMTQtOS40MyAxMi4zMS0xMi4zMSAxOC44NS0xMC4yMSA5LjE3IDIuNjIgMTIuODMgMTEuNzggMTAuNzQgMTkuMzgtMi42MSA4LjktOS40MiAxMy44Ny0xOC44NSAxMS41MnptNDIuMTYgOS42OWMtMi4zNi0uNTItNy4wNy0yLjM2LTguNjQtMi44OHYtLjI2bDEuNTctMS44M2MuNTktOC4yNC41OS03LjI3LjI2LTcuNTktNC44Mi0xLjgxLTYuNjYtMi4zNi03LjA3LTIuMzYtMS4zMSAxLjgzLTIuODggNC40NS0zLjY3IDUuNWwtLjc5IDMuNHYuMjZjLTEuMzEtLjI2LTMuOTMtMS4zMS02LjAyLTEuNTd2LS4yNmwyLjYyLTEuODNjMy40LTQuNzEgOS45NS0xNC4xNCAxMy44OC0yMC4xNnYtMi4wOWwuNTItLjI2YzIuMDkuNzkgNS41IDIuMDkgNy41OSAyLjg4LjQ4LjQ4LjE4LTEuODctMS4wNSAyNS4xNC0uMjQgMS44MS4wMiAyLjYuOCAzLjkxem0tNC43MS04OS44MmMxMS4yNS0xOC4yNyAzMC43Ni0xNi4xOSAzNC4wNC0zLjRMNTM5LjcgMTk4YzIuMzQtNi4yNS0yLjgyLTkuOS00LjQ1LTExLjI2bDEuODMtMy42N2MxMi4yMiAxMC4zNyAxNi4zOCAxMy45NyAyMi41MiAyMC40My0yNS45MSA3My4wNy0zMC43NiA4MC44MS0yNC42MiA4NC4zMmwtMS44MyA0LjQ1Yy02LjM3LTMuMzUtOC45LTQuNDItMTcuODEtOC42NGwyLjA5LTYuODFjLS4yNi0uMjYtMy45MyAzLjkzLTkuNjkgMy42Ny0xOS4wNi0xLjMtMjIuODktMzEuNzUtOS42Ny01Mi45em0yOS4zMyA3OS4zNGMwLTUuNzEtNi4zNC03Ljg5LTcuODYtNS4yNC0xLjMxIDIuMDkgMS4wNSA0Ljk4IDIuODggOC4zOCAxLjU3IDIuNjIgMi42MiA2LjI4IDEuMDUgOS40My0yLjY0IDYuMzQtMTIuNCA1LjMxLTE1LjQ1LS43OSAwLS43LS4yNy4wOSAxLjgzLTQuNzFsLjc5LS4yNmMtLjU3IDUuNjYgNi4wNiA5LjYxIDguMzggNC45OCAxLjA1LTIuMDktLjUyLTUuNS0yLjA5LTguMzgtMS41Ny0yLjYyLTMuNjctNi4yOC0xLjgzLTkuNjkgMi43Mi01LjA2IDExLjI1LTQuNDcgMTQuNjYgMi4zNnYuNTJsLTIuMzYgMy40em0yMS4yMSAxMy4zNmMtMS45Ni0zLjI3LS45MS0yLjE0LTQuNDUtNC43MWgtLjI2Yy0yLjM2IDQuMTktNS43NiAxMC40Ny04LjY0IDE2LjI0LTEuMzEgMi4zNi0xLjA1IDMuNC0uNzkgMy45M2wtLjI2LjI2LTUuNzYtNC40NS4yNi0uMjYgMi4wOS0xLjMxYzMuMTQtNS43NiA2LjU1LTEyLjA1IDkuMTctMTcuMDJ2LS4yNmMtMi42NC0xLjk4LTEuMjItMS41MS02LjAyLTEuODN2LS4yNmwzLjE0LTMuNGguMjZjMy42NyAyLjM2IDkuOTUgNi44MSAxMi4zMSA4LjlsLjI2LjI2LTEuMzEgMy45MXptMjcuMjMtNDQuMjZsLTIuODgtMi44OGMuNzktMi4zNiAxLjgzLTQuOTggMi4wOS03LjU5Ljc1LTkuNzQtMTEuNTItMTEuODQtMTEuNTItNC45OCAwIDQuOTggNy44NiAxOS4zOCA3Ljg2IDI3Ljc2IDAgMTAuMjEtNS43NiAxNS43MS0xMy44OCAxNi41LTguMzguNzktMjAuMTYtMTAuNDctMjAuMTYtMTAuNDdsNC45OC0xNC40IDIuODggMi4wOWMtMi45NyAxNy44IDE3LjY4IDIwLjM3IDEzLjM1IDUuMjQtMS4wNi00LjAyLTE4Ljc1LTM0LjIgMi4wOS0zOC4yMyAxMy42Mi0yLjM2IDIzLjA0IDE2LjUgMjMuMDQgMTYuNWwtNy44NSAxMC40NnptMzUuNjItMTAuMjFjLTExLTMwLjM4LTYwLjQ5LTEyNy41My0xOTEuOTUtMTI5LjYyLTUzLjQyLTEuMDUtOTQuMjcgMTUuNDUtMTMyLjc2IDM3Ljk3bDg1LjYzLTkuMTctOTEuMzkgMjAuNjkgMjUuMTQgMTkuNjQtMy45My0xNi41YzcuNS0xLjcxIDM5LjE1LTguNDUgNjYuNzctOC45bC0yMi4yNiA4MC4zOWMxMy42MS0uNyAxOC45Ny04Ljk4IDE5LjY0LTIyLjc4bDQuOTgtMS4wNS4yNiAyNi43MWMtMjIuNDYgMy4yMS0zNy4zIDYuNjktNDkuNDkgOS45NWwxMy4wOS00My4yMS02MS41NC0zNi42NiAyLjM2IDguMTIgMTAuMjEgNC45OGM2LjI4IDE4LjU5IDE5LjM4IDU2LjU2IDIwLjQzIDU4LjY2IDEuOTUgNC4yOCAzLjE2IDUuNzggMTIuMDUgNC40NWwxLjA1IDQuOThjLTE2LjA4IDQuODYtMjMuNjYgNy42MS0zOS4wMiAxNC40bC0yLjM2LTQuNzFjNC40LTIuOTQgOC43My0zLjk0IDUuNS0xMi44My0yMy43LTYyLjUtMjEuNDgtNTguMTQtMjIuNzgtNTkuNDRsMi4zNi00LjQ1IDMzLjUyIDY3LjNjLTMuODQtMTEuODcgMS42OCAxLjY5LTMyLjk5LTc4LjgybC00MS45IDg4LjUxIDQuNzEtMTMuODgtMzUuODgtNDIuMTYgMjcuNzYgOTMuNDgtMTEuNzggOC4zOEM5NSAyMjguNTggMTAxLjA1IDIzMS44NyA5My4yMyAyMzEuNTJjLTUuNS0uMjYtMTMuNjIgNS41LTEzLjYyIDUuNUw3NC42MyAyMzFjMzAuNTYtMjMuNTMgMzEuNjItMjQuMzMgNTguNC00Mi42OGw0LjE5IDcuMDdzLTUuNzYgNC4xOS03Ljg2IDcuMDdjLTUuOSA5LjI4IDEuNjcgMTMuMjggNjEuOCA3NS42OGwtMTguODUtNTguOTIgMzkuOC0xMC4yMSAyNS42NiAzMC42NCA0LjQ1LTEyLjMxLTQuOTgtMjQuNjIgMTMuMDktMy40LjUyIDMuMTQgMy42Ny0xMC40Ny05NC4yNyAyOS4zMyAxMS4yNi00Ljk4LTEzLjYyLTQyLjQyIDE3LjI4LTkuMTcgMzAuMTEgMzYuMTQgMjguNTQtMTMuMDljLTEuNDEtNy40Ny0yLjQ3LTE0LjUtNC43MS0xOS42NGwxNy4yOCAxMy44OCA0LjcxLTIuMDktNTkuMTgtNDIuNjggMjMuMDggMTEuNWMxOC45OC02LjA3IDI1LjIzLTcuNDcgMzIuMjEtOS42OWwyLjYyIDExYy0xMi41NSAxMi41NSAxLjQzIDE2LjgyIDYuNTUgMTkuMzhsLTEzLjYyLTYxLjAxIDEyLjA1IDI4LjI4YzQuMTktMS4zMSA3LjMzLTIuMDkgNy4zMy0yLjA5bDIuNjIgOC42NHMtMy4xNCAxLjA1LTYuMjggMi4wOWw4LjkgMjAuOTUgMzMuNzgtNjUuNzMtMjAuNjkgNjEuMDFjNDIuNDItMjQuMDkgODEuNDQtMzYuNjYgMTMxLjk4LTM1Ljg4IDY3LjA0IDEuMDUgMTY3LjMzIDQwLjg1IDE5OS44IDEzOS44My43OCAyLjEtLjAxIDIuNjMtLjc5LjI3ek0yMDMuNDggMTUyLjQzczEuODMtLjUyIDQuMTktMS4zMWw5LjQzIDcuNTljLS40IDAtMy40NC0uMjUtMTEuMjYgMi4zNmwtMi4zNi04LjY0em0xNDMuNzYgMzguNWMtMS41Ny0uNi0yNi40Ni00LjgxLTMzLjI2IDIwLjY5bDIxLjczIDE3LjAyIDExLjUzLTM3Ljcxek0zMTguNDMgNjcuMDdjLTU4LjQgMC0xMDYuMDUgMTIuMDUtMTE0Ljk2IDE0LjR2Ljc5YzguMzggMi4wOSAxNC40IDQuMTkgMjEuMjEgMTEuNzhsMS41Ny4yNmM2LjU1LTEuODMgNDguOTctMTMuODggMTEwLjI0LTEzLjg4IDE4MC4xNiAwIDMwMS42NyAxMTYuNzkgMzAxLjY3IDIyMy4zN3Y5Ljk1YzAgMS4zMS43OSAyLjYyIDEuMDUuNTIuNTItMi4wOS43OS04LjY0Ljc5LTE5LjY0LjI2LTgzLjc5LTk2LjYzLTIyNy41NS0zMjEuNTctMjI3LjU1em0yMTEuMDYgMTY5LjY4YzEuMzEtNS43NiAwLTEyLjMxLTcuMzMtMTMuMDktOS42Mi0xLjEzLTE2LjE0IDIzLjc5LTE3LjAyIDMzLjUyLS43OSA1LjUtMS4zMSAxNC45MyA2LjAyIDE0LjkzIDQuNjgtLjAxIDkuNzItLjkxIDE4LjMzLTM1LjM2em0tNjEuNTMgNDIuOTVjLTIuNjItLjc5LTkuNDMtLjc5LTEyLjU3IDEwLjQ3LTEuODMgNi44MS41MiAxMy4zNSA2LjAyIDE0LjY2IDMuNjcgMS4wNSA4LjkuNTIgMTEuNzgtMTAuNzQgMi42Mi05Ljk0LTEuODMtMTMuNjEtNS4yMy0xNC4zOXpNNDkxIDMwMC42NWMxLjgzLjUyIDMuMTQgMS4wNSA1Ljc2IDEuODMgMC0xLjgzLjUyLTguMzguNzktMTIuMDUtMS4wNSAxLjMxLTUuNSA4LjEyLTYuNTUgOS45NXYuMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvZHUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc4LjQxNCAzMzkuNzA2SDE0MS4xTDExMi4xNjYgMjIzLjQ3NWgtLjQ3OEw4My4yMjggMzM5LjcwNkg0NS4yTDAgMTY4Ljk0NkgzNy41NDhMNjQuNTc0IDI4NS4xNzdoLjQ3OEw5NC43MDcgMTY4Ljk0NmgzNS4xNTdsMjkuMTc4IDExNy42NjdoLjQ3OUwxODcuNSAxNjguOTQ2aDM2LjgzMXpNMjcxLjQgMjEyLjcxM2MzOC45ODQgMCA2NC4xIDI1LjgyOCA2NC4xIDY1LjI5MSAwIDM5LjIyMi0yNS4xMTEgNjUuMDUtNjQuMSA2NS4wNS0zOC43NDMgMC02My44NTUtMjUuODI4LTYzLjg1NS02NS4wNUMyMDcuNTQ3IDIzOC41NDEgMjMyLjY1OSAyMTIuNzEzIDI3MS40IDIxMi43MTN6bTAgMTA0Ljc1M2MyMy4yIDAgMzAuMTMzLTE5Ljg1MiAzMC4xMzMtMzkuNDYyIDAtMTkuODUyLTYuOTM0LTM5LjctMzAuMTMzLTM5LjctMjcuNyAwLTI5Ljg5NCAxOS44NS0yOS44OTQgMzkuN0MyNDEuNTA4IDI5Ny42MTQgMjQ4LjQ0MyAzMTcuNDY2IDI3MS40IDMxNy40NjZ6TTQzNS4wODQgMzIzLjkyMmgtLjQ3OGMtNy44OTMgMTMuMzkyLTIxLjc2NSAxOS4xMzItMzcuNTQ4IDE5LjEzMi0zNy4zMSAwLTU1LjQ4NS0zMi4wNDUtNTUuNDg1LTY2LjI0NiAwLTMzLjI0MyAxOC40MTUtNjQuMDk1IDU0Ljc2Ny02NC4wOTUgMTQuNTg5IDAgMjguOTM4IDYuMjE4IDM2LjgzMSAxOC40MTZoLjI0VjE2OC45NDZoMzMuOTZ2MTcwLjc2SDQzNS4wODR6TTQwNS40MjggMjM4LjNjLTIyLjI0IDAtMjkuODk0IDE5LjEzNC0yOS44OTQgMzkuNDYzIDAgMTkuMzcxIDguODQ4IDM5LjcgMjkuODk0IDM5LjcgMjIuNDgyIDAgMjkuMTc4LTE5LjYxMyAyOS4xNzgtMzkuOTRDNDM0LjYwNiAyNTcuNDM2IDQyNy40MzIgMjM4LjMgNDA1LjQyOCAyMzguM3pNNTkyLjk2IDMzOS43MDZINTYwLjY3M1YzMjIuNDg3aC0uNzE4Yy04LjYwOSAxMy44Ny0yMy40MzYgMjAuNTY3LTM3Ljc4NiAyMC41NjctMzYuMTEzIDAtNDUuMi0yMC4zMjgtNDUuMi01MC45NDFWMjE2LjA2MWgzMy45NTlWMjg1LjljMCAyMC4zMjkgNS45NzkgMzAuMzcyIDIxLjc2NSAzMC4zNzIgMTguNDE1IDAgMjYuMzA2LTEwLjI4MyAyNi4zMDYtMzUuMzkzVjIxNi4wNjFINTkyLjk2ek02MDIuNDUzIDMwMi44NzZINjQwdjM2LjgzSDYwMi40NTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvbGZQYWNrQmF0dGFsaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2Ny43MyA0NzEuNTNsMTAuNTYgMTUuODQgNS4yOC0xMi4zMiA1LjI4IDdWNTEyYzIxLjA2LTcuOTIgMjEuMTEtNjYuODYgMjUuNTEtOTcuMjEgNC42Mi0zMS44OS0uODgtOTIuODEgODEuMzctMTQ5LjExLTguODgtMjMuNjEtMTItNDkuNDMtMi42NC04MC4wNUM0MjEgMTg5IDQ0NyAxOTYuMjEgNDU2LjQzIDIzOS43M2wtMzAuMzUgOC4zNmMxMS4xNSAyMyAxNyA0Ni43NiAxMy4yIDcyLjE0TDQxMiAzMTMuMThsLTYuMTYgMzMuNDMtMTguNDctNy04LjggMzMuMzktMTkuMzUtNyAyNi4zOSAyMS4xMSA4LjgtMjguMTVMNDE5IDM2NC4ybDctMzUuNjMgMjYuMzkgMTQuNTJjLjI1LTIwIDctNTguMDYtOC44LTg0LjQ1bDI2LjM5IDUuMjhjNC0yMi4wNy0yLjM4LTM5LjIxLTcuOTItNTYuNzRsMjIuNDMgOS42OGMtLjQ0LTI1LjA3LTI5Ljk0LTU2Ljc5LTYxLjU4LTU4LjUtMjAuMjItMS4wOS01Ni43NC0yNS4xNy01NC4xLTUxLjkgMi0xOS44NyAxNy40NS00Mi42MiA0My4xMS00OS43LTQ0IDM2LjUxLTkuNjggNjcuMyA1LjI4IDczLjQ2IDQuNC0xMS40NCAxNy41NC02OS4wOCAwLTEzMC4yLTQwLjM5IDIyLjg3LTg5LjY1IDY1LjEtOTMuMiAxNDcuNzlsLTU4IDM4LjcxLTMuNTIgOTMuMjVMMzY5Ljc4IDIyMGw3IDctMTcuNTkgMy41Mi00NCAzOC43MS0xNS44NC01LjI4LTI4LjEgNDkuMjUtMy41MiAxMTkuNjQgMjEuMTEgMTUuODQtMzIuNTUgMTUuODQtMzIuNTUtMTUuODQgMjEuMTEtMTUuODQtMy41Mi0xMTkuNjQtMjguMTUtNDkuMjYtMTUuODQgNS4yOC00NC0zOC43MS0xNy41OC0zLjUxIDctNyAxMDcuMzMgNTkuODItMy41Mi05My4yNS01OC4wNi0zOC43MUMxODUgNjUuMSAxMzUuNzcgMjIuODcgOTUuMyAwYy0xNy41NCA2MS4xMi00LjQgMTE4Ljc2IDAgMTMwLjIgMTUtNi4xNiA0OS4yNi0zNi45NSA1LjI4LTczLjQ2IDI1LjY2IDcuMDggNDEuMTUgMjkuODMgNDMuMTEgNDkuNyAyLjYzIDI2Ljc0LTMzLjg4IDUwLjgxLTU0LjEgNTEuOS0zMS42NSAxLjcyLTYxLjE1IDMzLjQ0LTYxLjU5IDU4LjUxbDIyLjQzLTkuNjhjLTUuNTQgMTcuNTMtMTEuOTEgMzQuNjctNy45MiA1Ni43NGwyNi4zOS01LjI4Yy0xNS43NiAyNi4zOS05LjA1IDY0LjQzLTguOCA4NC40NWwyNi4zOS0xNC41MiA3IDM1LjYzIDI0LjYzLTUuMjggOC44IDI4LjE1TDE1My4zNSAzNjYgMTM0IDM3M2wtOC44LTMzLjQzLTE4LjQ3IDctNi4xNi0zMy40My0yNy4yNyA3Yy0zLjgyLTI1LjM4IDItNDkuMSAxMy4yLTcyLjE0bC0zMC4zNS04LjM2YzkuNC00My41MiAzNS40Ny01MC43NyA2My4zNC01NC4xIDkuMzYgMzAuNjIgNi4yNCA1Ni40NS0yLjY0IDgwLjA1IDgyLjI1IDU2LjMgNzYuNzUgMTE3LjIzIDgxLjM3IDE0OS4xMSA0LjQgMzAuMzUgNC40NSA4OS4yOSAyNS41MSA5Ny4yMXYtMjkuODNsNS4yOC03IDUuMjggMTIuMzIgMTAuNTYtMTUuODQgMTEuNDQgMjEuMTEgMTEuNDMtMjEuMXptNzkuMTctOTVMMzMxLjA2IDM2NmM3LjQ3LTQuMzYgMTMuNzYtOC40MiAxOS4zNS0xMi4zMi0uNiA3LjIyLS4yNyAxMy44NC0zLjUxIDIyLjg0em0yOC4xNS00OS4yNmMtLjQgMTAuOTQtLjkgMjEuNjYtMS43NiAzMS42Ny03Ljg1LTEuODYtMTUuNTctMy44LTIxLjExLTcgOC4yNC03Ljk0IDE1LjU1LTE2LjMyIDIyLjg3LTI0LjY4em0yNC42MyA1LjI4YzAtMTMuNDMtMi4wNS0yNC4yMS01LjI4LTMzLjQzYTIzNSAyMzUgMCAwIDEtMTguNDcgMjcuMjd6bTMuNTItODAuOTRjMTkuNDQgMTIuODEgMjcuOCAzMy42NiAyOS45MSA1Ni4zLTEyLjMyLTQuNTMtMjQuNjMtOS4zMS0zNi45NS0xMC41NiA1LjA2LTEyIDYuNjUtMjguMTQgNy00NS43NHptLTEuNzYtNDUuNzRjLjgxIDE0LjMgMS44NCAyOC44MiAxLjc2IDQyLjIzIDE5LjIyLTguMTEgMjkuNzgtOS43MiA0NC0xNC4wOC0xMC42MS0xOC45Ni0yNy4yLTI1LjUzLTQ1Ljc2LTI4LjE2ek0xNjUuNjggMzc2LjUyTDE4MS41MiAzNjZjLTcuNDctNC4zNi0xMy43Ni04LjQyLTE5LjM1LTEyLjMyLjYgNy4yNi4yNyAxMy44OCAzLjUxIDIyLjg4em0tMjguMTUtNDkuMjZjLjQgMTAuOTQuOSAyMS42NiAxLjc2IDMxLjY3IDcuODUtMS44NiAxNS41Ny0zLjggMjEuMTEtNy04LjI0LTcuOTMtMTUuNTUtMTYuMzEtMjIuODctMjQuNjd6bS0yNC42NCA1LjI4YzAtMTMuNDMgMi0yNC4yMSA1LjI4LTMzLjQzYTIzNSAyMzUgMCAwIDAgMTguNDcgMjcuMjd6bS0zLjUyLTgwLjk0Yy0xOS40NCAxMi44MS0yNy44IDMzLjY2LTI5LjkxIDU2LjMgMTIuMzItNC41MyAyNC42My05LjMxIDM3LTEwLjU2LTUtMTItNi42NS0yOC4xNC03LTQ1Ljc0em0xLjc2LTQ1Ljc0Yy0uODEgMTQuMy0xLjg0IDI4LjgyLTEuNzYgNDIuMjMtMTkuMjItOC4xMS0yOS43OC05LjcyLTQ0LTE0LjA4IDEwLjYzLTE4Ljk1IDI3LjIzLTI1LjUyIDQ1Ljc2LTI4LjE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXb3JkcHJlc3NTaW1wbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5LjMgOCA4IDExOS4yIDggMjU2YzAgMTM2LjcgMTExLjMgMjQ4IDI0OCAyNDhzMjQ4LTExMS4zIDI0OC0yNDhDNTA0IDExOS4yIDM5Mi43IDggMjU2IDh6TTMzIDI1NmMwLTMyLjMgNi45LTYzIDE5LjMtOTAuN2wxMDYuNCAyOTEuNEM4NC4zIDQyMC41IDMzIDM0NC4yIDMzIDI1NnptMjIzIDIyM2MtMjEuOSAwLTQzLTMuMi02My05LjFsNjYuOS0xOTQuNCA2OC41IDE4Ny44Yy41IDEuMSAxIDIuMSAxLjYgMy4xLTIzLjEgOC4xLTQ4IDEyLjYtNzQgMTIuNnptMzAuNy0zMjcuNWMxMy40LS43IDI1LjUtMi4xIDI1LjUtMi4xIDEyLTEuNCAxMC42LTE5LjEtMS40LTE4LjQgMCAwLTM2LjEgMi44LTU5LjQgMi44LTIxLjkgMC01OC43LTIuOC01OC43LTIuOC0xMi0uNy0xMy40IDE3LjctMS40IDE4LjQgMCAwIDExLjQgMS40IDIzLjQgMi4xbDM0LjcgOTUuMkwyMDAuNiAzOTNsLTgxLjItMjQxLjVjMTMuNC0uNyAyNS41LTIuMSAyNS41LTIuMSAxMi0xLjQgMTAuNi0xOS4xLTEuNC0xOC40IDAgMC0zNi4xIDIuOC01OS40IDIuOC00LjIgMC05LjEtLjEtMTQuNC0uM0MxMDkuNiA3MyAxNzguMSAzMyAyNTYgMzNjNTggMCAxMTAuOSAyMi4yIDE1MC42IDU4LjUtMS0uMS0xLjktLjItMi45LS4yLTIxLjkgMC0zNy40IDE5LjEtMzcuNCAzOS42IDAgMTguNCAxMC42IDMzLjkgMjEuOSA1Mi4zIDguNSAxNC44IDE4LjQgMzMuOSAxOC40IDYxLjUgMCAxOS4xLTcuMyA0MS4yLTE3IDcyLjFsLTIyLjIgNzQuMy04MC43LTIzOS42em04MS40IDI5Ny4ybDY4LjEtMTk2LjljMTIuNy0zMS44IDE3LTU3LjIgMTctNzkuOSAwLTguMi0uNS0xNS44LTEuNS0yMi45IDE3LjQgMzEuOCAyNy4zIDY4LjIgMjcuMyAxMDcgMCA4Mi4zLTQ0LjYgMTU0LjEtMTEwLjkgMTkyLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvcmRwcmVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MS43IDE2OS40bDEwMS41IDI3OEM5Mi4yIDQxMyA0My4zIDM0MC4yIDQzLjMgMjU2YzAtMzAuOSA2LjYtNjAuMSAxOC40LTg2LjZ6bTMzNy45IDc1LjljMC0yNi4zLTkuNC00NC41LTE3LjUtNTguNy0xMC44LTE3LjUtMjAuOS0zMi40LTIwLjktNDkuOSAwLTE5LjYgMTQuOC0zNy44IDM1LjctMzcuOC45IDAgMS44LjEgMi44LjItMzcuOS0zNC43LTg4LjMtNTUuOS0xNDMuNy01NS45LTc0LjMgMC0xMzkuNyAzOC4xLTE3Ny44IDk1LjkgNSAuMiA5LjcuMyAxMy43LjMgMjIuMiAwIDU2LjctMi43IDU2LjctMi43IDExLjUtLjcgMTIuOCAxNi4yIDEuNCAxNy41IDAgMC0xMS41IDEuMy0yNC4zIDJsNzcuNSAyMzAuNEwyNDkuOCAyNDdsLTMzLjEtOTAuOGMtMTEuNS0uNy0yMi4zLTItMjIuMy0yLTExLjUtLjctMTAuMS0xOC4yIDEuMy0xNy41IDAgMCAzNS4xIDIuNyA1NiAyLjcgMjIuMiAwIDU2LjctMi43IDU2LjctMi43IDExLjUtLjcgMTIuOCAxNi4yIDEuNCAxNy41IDAgMC0xMS41IDEuMy0yNC4zIDJsNzYuOSAyMjguNyAyMS4yLTcwLjljOS0yOS40IDE2LTUwLjUgMTYtNjguN3ptLTEzOS45IDI5LjNsLTYzLjggMTg1LjVjMTkuMSA1LjYgMzkuMiA4LjcgNjAuMSA4LjcgMjQuOCAwIDQ4LjUtNC4zIDcwLjYtMTIuMS0uNi0uOS0xLjEtMS45LTEuNS0yLjlsLTY1LjQtMTc5LjJ6bTE4My0xMjAuN2MuOSA2LjggMS40IDE0IDEuNCAyMS45IDAgMjEuNi00IDQ1LjgtMTYuMiA3Ni4ybC02NSAxODcuOUM0MjYuMiA0MDMgNDY4LjcgMzM0LjUgNDY4LjcgMjU2YzAtMzctOS40LTcxLjgtMjYtMTAyLjF6TTUwNCAyNTZjMCAxMzYuOC0xMTEuMyAyNDgtMjQ4IDI0OEMxMTkuMiA1MDQgOCAzOTIuNyA4IDI1NiA4IDExOS4yIDExOS4yIDggMjU2IDhjMTM2LjcgMCAyNDggMTExLjIgMjQ4IDI0OHptLTExLjQgMGMwLTEzMC41LTEwNi4yLTIzNi42LTIzNi42LTIzNi42QzEyNS41IDE5LjQgMTkuNCAxMjUuNSAxOS40IDI1NlMxMjUuNiA0OTIuNiAyNTYgNDkyLjZjMTMwLjUgMCAyMzYuNi0xMDYuMSAyMzYuNi0yMzYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV3BiZWdpbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjIuNzk5IDMyMi4zNzRDNTE5LjAxIDM4Ni42ODIgNDY2Ljk2MSA0ODAgMzcwLjk0NCA0ODBjLTM5LjYwMiAwLTc4LjgyNC0xNy42ODctMTAwLjE0Mi01MC4wNC02Ljg4Ny4zNTYtMjIuNzAyLjM1Ni0yOS41OSAwQzIxOS44NDggNDYyLjM4MSAxODAuNTg4IDQ4MCAxNDEuMDY5IDQ4MGMtOTUuNDkgMC0xNDguMzQ4LTkyLjk5Ni05MS44NTUtMTU3LjYyNkMtMjkuOTI1IDE5MC41MjMgODAuNDc5IDMyIDI1Ni4wMDYgMzJjMTc1LjYzMiAwIDI4NS44NyAxNTguNjI2IDIwNi43OTMgMjkwLjM3NHptLTMzOS42NDctODIuOTcyaDQxLjUyOXYtNTguMDc1aC00MS41Mjl2NTguMDc1em0yMTcuMTggODYuMDcydi0yMy44MzljLTYwLjUwNiAyMC45MTUtMTMyLjM1NSA5LjE5OC0xODcuNTg5LTMzLjk3MWwuMjQ2IDI0Ljg5N2M1MS4xMDEgNDYuMzY3IDEzMS43NDYgNTcuODc1IDE4Ny4zNDMgMzIuOTEzem0tMTUwLjc1My04Ni4wNzJoMTY2LjA1OHYtNTguMDc1SDE4OS41Nzl2NTguMDc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXcGV4cGxvcmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAyNTZjMCAxNDEuMi0xMTQuNyAyNTYtMjU2IDI1NkMxMTQuOCA1MTIgMCAzOTcuMyAwIDI1NlMxMTQuNyAwIDI1NiAwczI1NiAxMTQuNyAyNTYgMjU2em0tMzIgMGMwLTEyMy4yLTEwMC4zLTIyNC0yMjQtMjI0QzEzMi41IDMyIDMyIDEzMi41IDMyIDI1NnMxMDAuNSAyMjQgMjI0IDIyNCAyMjQtMTAwLjUgMjI0LTIyNHpNMTYwLjkgMTI0LjZsODYuOSAzNy4xLTM3LjEgODYuOS04Ni45LTM3LjEgMzcuMS04Ni45em0xMTAgMTY5LjFsNDYuNiA5NGgtMTQuNmwtNTAtMTAwLTQ4LjkgMTAwaC0xNGw1MS4xLTEwNi45LTIyLjMtOS40IDYtMTQgNjguNiAyOS4xLTYgMTQuMy0xNi41LTcuMXptLTExLjgtMTE2LjNsNjguNiAyOS40LTI5LjQgNjguM0wyMzAgMjQ2bDI5LjEtNjguNnptODAuMyA0Mi45bDU0LjYgMjMuMS0yMy40IDU0LjMtNTQuMy0yMy4xIDIzLjEtNTQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV3Bmb3JtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNzUuMnYzNjEuN2MwIDI0LjMtMTkgNDMuMi00My4yIDQzLjJINDMuMkMxOS4zIDQ4MCAwIDQ2MS40IDAgNDM2LjhWNzUuMkMwIDUxLjEgMTguOCAzMiA0My4yIDMyaDM2MS43YzI0IDAgNDMuMSAxOC44IDQzLjEgNDMuMnptLTM3LjMgMzYxLjZWNzUuMmMwLTMtMi42LTUuOC01LjgtNS44aC05LjNMMjg1LjMgMTQ0IDIyNCA5NC4xIDE2Mi44IDE0NCA1Mi41IDY5LjNoLTkuM2MtMy4yIDAtNS44IDIuOC01LjggNS44djM2MS43YzAgMyAyLjYgNS44IDUuOCA1LjhoMzYxLjdjMy4yLjEgNS44LTIuNyA1LjgtNS44ek0xNTAuMiAxODZ2MzdINzYuN3YtMzdoNzMuNXptMCA3NC40djM3LjNINzYuN3YtMzcuM2g3My41em0xMS4xLTE0Ny4zbDU0LTQzLjdIOTYuOGw2NC41IDQzLjd6bTIxMCA3Mi45djM3aC0xOTZ2LTM3aDE5NnptMCA3NC40djM3LjNoLTE5NnYtMzcuM2gxOTZ6bS04NC42LTE0Ny4zbDY0LjUtNDMuN0gyMzIuOGw1My45IDQzLjd6TTM3MS4zIDMzNXYzNy4zaC05OS40VjMzNWg5OS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXcHJlc3NyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTE3MS4zMyAxNTguNmMtMTUuMTggMzQuNTEtMzAuMzcgNjkuMDItNDUuNjMgMTAzLjUtMi40NCA1LjUxLTYuODkgOC4yNC0xMi45NyA4LjI0LTIzLjAyLS4wMS00Ni4wMy4wNi02OS4wNS0uMDUtNS4xMi0uMDMtOC4yNSAxLjg5LTEwLjM0IDYuNzItMTAuMTkgMjMuNTYtMjAuNjMgNDctMzAuOTUgNzAuNS0xLjU0IDMuNTEtNC4wNiA1LjI5LTcuOTIgNS4yOS00NS45NC0uMDEtOTEuODctLjAyLTEzNy44MSAwLTMuMTMgMC01LjYzLTEuMTUtNy43Mi0zLjQ1LTExLjIxLTEyLjMzLTIyLjQ2LTI0LjYzLTMzLjY4LTM2Ljk0LTIuNjktMi45NS0yLjc5LTYuMTgtMS4yMS05LjczIDguNjYtMTkuNTQgMTcuMjctMzkuMSAyNS44OS01OC42NiAxMi45My0yOS4zNSAyNS44OS01OC42OSAzOC43NS04OC4wOCAxLjctMy44OCA0LjI4LTUuNjggOC41NC01LjY1IDE0LjI0LjEgMjguNDguMDIgNDIuNzIuMDUgNi4yNC4wMSA5LjIgNC44NCA2LjY2IDEwLjU5LTEzLjYgMzAuNzctMjcuMTcgNjEuNTUtNDAuNzQgOTIuMzMtNS43MiAxMi45OS0xMS40MiAyNS45OS0xNy4wOSAzOS0zLjkxIDguOTUgNy4wOCAxMS45NyAxMC45NSA1LjYuMjMtLjM3LTEuNDIgNC4xOCAzMC4wMS02Ny42OSAxLjM2LTMuMSAzLjQxLTQuNCA2Ljc3LTQuMzkgMTUuMjEuMDggMzAuNDMuMDIgNDUuNjQuMDQgNS41Ni4wMSA3LjkxIDMuNjQgNS42NiA4Ljc1LTguMzMgMTguOTYtMTYuNzEgMzcuOS0yNC45OCA1Ni44OS00Ljk4IDExLjQzIDguMDggMTIuNDkgMTEuMjggNS4zMy4wNC0uMDggMjcuODktNjMuMzMgMzIuMTktNzMuMTYgMi4wMi00LjYxIDUuNDQtNi41MSAxMC4zNS02LjUgMjYuNDMuMDUgNTIuODYgMCA3OS4yOS4wNSAxMi40NC4wMiAxMy45My0xMy42NSAzLjktMTMuNjQtMjUuMjYuMDMtNTAuNTIuMDItNzUuNzguMDItNi4yNyAwLTcuODQtMi40Ny01LjI3LTguMjcgNS43OC0xMy4wNiAxMS41OS0yNi4xMSAxNy4zLTM5LjIxIDEuNzMtMy45NiA0LjUyLTUuNzkgOC44NC01Ljc4IDIzLjA5LjA2IDI1Ljk4LjAyIDEzMC43OC4wMyA2LjA4LS4wMSA4LjAzIDIuNzkgNS42MiA4LjI3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYVHdpdHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODkuMiA0OGg3MC42TDMwNS42IDIyNC4yIDQ4NyA0NjRIMzQ1TDIzMy43IDMxOC42IDEwNi41IDQ2NEgzNS44TDIwMC43IDI3NS41IDI2LjggNDhIMTcyLjRMMjcyLjkgMTgwLjkgMzg5LjIgNDh6TTM2NC40IDQyMS44aDM5LjFMMTUxLjEgODhoLTQyTDM2NC40IDQyMS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OS45IDMxOC4yYzQ0LjMgNTQuMyA2NC43IDk4LjggNTQuNCAxMTguNy03LjkgMTUuMS01Ni43IDQ0LjYtOTIuNiA1NS45LTI5LjYgOS4zLTY4LjQgMTMuMy0xMDAuNCAxMC4yLTM4LjItMy43LTc2LjktMTcuNC0xMTAuMS0zOUM5My4zIDQ0NS44IDg3IDQzOC4zIDg3IDQyMy40YzAtMjkuOSAzMi45LTgyLjMgODkuMi0xNDIuMSAzMi0zMy45IDc2LjUtNzMuNyA4MS40LTcyLjYgOS40IDIuMSA4NC4zIDc1LjEgMTEyLjMgMTA5LjV6TTE4OC42IDE0My44Yy0yOS43LTI2LjktNTguMS01My45LTg2LjQtNjMuNC0xNS4yLTUuMS0xNi4zLTQuOC0yOC43IDguMS0yOS4yIDMwLjQtNTMuNSA3OS43LTYwLjMgMTIyLjQtNS40IDM0LjItNi4xIDQzLjgtNC4yIDYwLjUgNS42IDUwLjUgMTcuMyA4NS40IDQwLjUgMTIwLjkgOS41IDE0LjYgMTIuMSAxNy4zIDkuMyA5LjktNC4yLTExLS4zLTM3LjUgOS41LTY0IDE0LjMtMzkgNTMuOS0xMTIuOSAxMjAuMy0xOTQuNHptMzExLjYgNjMuNUM0ODMuMyAxMjcuMyA0MzIuNyA3NyA0MjUuNiA3N2MtNy4zIDAtMjQuMiA2LjUtMzYgMTMuOS0yMy4zIDE0LjUtNDEgMzEuNC02NC4zIDUyLjhDMzY3LjcgMTk3IDQyNy41IDI4My4xIDQ0OC4yIDM0NmM2LjggMjAuNyA5LjcgNDEuMSA3LjQgNTIuMy0xLjcgOC41LTEuNyA4LjUgMS40IDQuNiA2LjEtNy43IDE5LjktMzEuMyAyNS40LTQzLjUgNy40LTE2LjIgMTUtNDAuMiAxOC42LTU4LjcgNC4zLTIyLjUgMy45LTcwLjgtLjgtOTMuNHpNMTQxLjMgNDNDMTg5IDQwLjUgMjUxIDc3LjUgMjU1LjYgNzguNGMuNy4xIDEwLjQtNC4yIDIxLjYtOS43IDYzLjktMzEuMSA5NC0yNS44IDEwNy40LTI1LjItNjMuOS0zOS4zLTE1Mi43LTUwLTIzMy45LTExLjctMjMuNCAxMS4xLTI0IDExLjktOS40IDExLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVhpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYyLjcgMjEwYy0xLjggMy4zLTI1LjIgNDQuNC03MC4xIDEyMy41LTQuOSA4LjMtMTAuOCAxMi41LTE3LjcgMTIuNUg5LjhjLTcuNyAwLTEyLjEtNy41LTguNS0xNC40bDY5LTEyMS4zYy4yIDAgLjItLjEgMC0uM2wtNDMuOS03NS42Yy00LjMtNy44LjMtMTQuMSA4LjUtMTQuMUgxMDBjNy4zIDAgMTMuMyA0LjEgMTggMTIuMmw0NC43IDc3LjV6TTM4Mi42IDQ2LjFsLTE0NCAyNTN2LjNMMzMwLjIgNDY2YzMuOSA3LjEuMiAxNC4xLTguNSAxNC4xaC02NS4yYy03LjYgMC0xMy42LTQtMTgtMTIuMmwtOTIuNC0xNjguNWMzLjMtNS44IDUxLjUtOTAuOCAxNDQuOC0yNTUuMiA0LjYtOC4xIDEwLjQtMTIuMiAxNy41LTEyLjJoNjUuN2M4IDAgMTIuMyA2LjcgOC41IDE0LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlDb21iaW5hdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzMnY0NDhIMFYzMmg0NDh6TTIzNiAyODcuNUwzMTMuNSAxNDJoLTMyLjdMMjM1IDIzM2MtNC43IDkuMy05IDE4LjMtMTIuOCAyNi44TDIxMCAyMzNsLTQ1LjItOTFoLTM1bDc2LjcgMTQzLjh2OTQuNUgyMzZ2LTkyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlhaG9vIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyMy42OSwxNDEuMDYsMTY3LDI4NC4yMywxMTEsMTQxLjA2SDE0LjkzTDEyMC43NiwzOTAuMTksODIuMTksNDgwaDk0LjE3TDMxNy4yNywxNDEuMDZabTEwNS40LDEzNS43OWE1OC4yMiw1OC4yMiwwLDEsMCw1OC4yMiw1OC4yMkE1OC4yMiw1OC4yMiwwLDAsMCwzMjkuMDksMjc2Ljg1Wk0zOTQuNjUsMzJsLTkzLDIyMy40N0g0MDYuNDRMNDk5LjA3LDMyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZYW1tZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAwLjY3NiwxNTkuNDg2YTEyLjc3OSwxMi43NzksMCwwLDAtNi40LTguMjgyLDEzLjk1NCwxMy45NTQsMCwwLDAtMTAuMDc4LTEuMTI1TDQ1Ny44LDE1Ni43bC0uMDQzLS4yLTIyLjMsNS43ODUtMS4yNDMuMzMzLS42MDgtMi4xN0EzNjkuMDM3LDM2OS4wMzcsMCwwLDAsMzQ3LjUzOCw0LjI4OWExNC4xLDE0LjEsMCwwLDAtMTkuNzg0LS40NjNsLTEwMi45LDEwMi43NDdIMjQuOTQ3QTI0LjksMjQuOSwwLDAsMCwwLDEzMS40MTdWMzgwLjM4YTI0Ljk2MywyNC45NjMsMCwwLDAsMjQuOTE4LDI0LjlIMjI0Ljk4NkwzMjguMDcyLDUwOGExMy42NjcsMTMuNjY3LDAsMCwwLDE5LjMyNywwYy4xMjYtLjEyNi4yNDktLjI1NS4zNy0uMzg1YTM2OC4wMjUsMzY4LjAyNSwwLDAsMCw2OS41NzctMTA3LjM3NCw0MDMuNDUsNDAzLjQ1LDAsMCwwLDE3LjMtNTAuOHYtLjAyOGwyMC40MDYsNS4zMzYuMDI5LS4wNzNMNDgzLjM0NSwzNjJhMjAuMjUzLDIwLjI1MywwLDAsMCwyLjYxOS41LDEzLjM1OSwxMy4zNTksMCwwLDAsNC4xMzktLjA3MiwxMy41LDEzLjUsMCwwLDAsMTAuNTE1LTkuOTI0LDQxNS44NTUsNDE1Ljg1NSwwLDAsMCwuMDU4LTE5My4wMTNaTTMzNy4xMjUsMjQuNjVsLjAxMy4wMTRoLS4wMTNabS0xMTAuMiwxNjUuMTYxTDE3NC4zMTEsMjgxLjFhMTEuMzM4LDExLjMzOCwwLDAsMC0xLjQ4OSw1LjY1NXY0Ni4xODlhMjIuMDQsMjIuMDQsMCwwLDEtMjIuMDQxLDIyaC0zLjRBMjIuMDY4LDIyLjA2OCwwLDAsMSwxMjUuMywzMzIuOTYyVjI4Ny4yOTRhMTEuNTMyLDExLjUzMiwwLDAsMC0xLjM4OC01LjUxbC01MS42LTkyLjJhMjEuOTg4LDIxLjk4OCwwLDAsMSwxOS4yNjQtMzIuNzI2aDMuMjY4YTIyLjA1OSwyMi4wNTksMCwwLDEsMTkuNjExLDExLjkxNmwzNi4zNTcsNzAuMjgxLDM3LjUxNS03MC41MTJhMjIuMDY2LDIyLjA2NiwwLDAsMSwzOC41NTYtLjY5NSwyMS43LDIxLjcsMCwwLDEsMCwyMS45NjdaTTMzNy4xNDUsMjQuNjczYTM0OC4xNDcsMzQ4LjE0NywwLDAsMSw3NS44LDE0MS4zMzVsLjU2NCwxLjk1Mi0xMTQuMTM0LDI5LjZWMTMxLjQxN2EyNS4wMDYsMjUuMDA2LDAsMCwwLTI0Ljk0Ny0yNC45SDI1NS4wNjdabTYwLjUsMzY3LjMwNXYtLjA0M2wtLjAxNC4wMTRhMzQ3LjE5LDM0Ny4xOSwwLDAsMS02MC4xNzcsOTUuMjI3bC04Mi4yLTgxLjg5M2gxOS4xNzdhMjQuOTc4LDI0Ljk3OCwwLDAsMCwyNC45NDctMjQuOXYtNjYuMmwxMTQuNiwyOS44NjJBMzg1LjE5MSwzODUuMTkxLDAsMCwxLDM5Ny42NDgsMzkxLjk3OFptODQtNTIuNDUuMDE1LjAxNC01MC42MTgtMTMuMTMxTDI5OS4zNzksMjkyLjFWMjE5LjU3MmwxMTkuNzQ2LTMwLjk5LDQuNDY4LTEuMTU3LDM5LjU0LTEwLjI1MywxOC41MTEtNC44MTZBMzkzLDM5MywwLDAsMSw0ODEuNjQ0LDMzOS41MjhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlhbmRleEludGVybmF0aW9uYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI5LjUgNTEyVjM0NS45TDE4LjUgNDhoNTUuOGw4MS44IDIyOS43TDI1MC4yIDBoNTEuM0wxODAuOCAzNDcuOFY1MTJoLTUxLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlhbmRleCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTMuMSAzMTUuOEw2NS43IDUxMkgybDk2LTIwOS44Yy00NS4xLTIyLjktNzUuMi02NC40LTc1LjItMTQxLjFDMjIuNyA1My43IDkwLjggMCAxNzEuNyAwSDI1NHY1MTJoLTU1LjFWMzE1LjhoLTQ1Ljh6bTQ1LjgtMjY5LjNoLTI5LjRjLTQ0LjQgMC04Ny40IDI5LjQtODcuNCAxMTQuNiAwIDgyLjMgMzkuNCAxMDguOCA4Ny40IDEwOC44aDI5LjRWNDYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWFybiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTMuOSAzNDUuMmMtMzkgOS4zLTQ4LjQgMzIuMS0xMDQgNDcuNCAwIDAtMi43IDQtMTAuNCA1LjgtMTMuNCAzLjMtNjMuOSA2LTY4LjUgNi4xLTEyLjQuMS0xOS45LTMuMi0yMi04LjItNi40LTE1LjMgOS4yLTIyIDkuMi0yMi04LjEtNS05LTkuOS05LjgtOC4xLTIuNCA1LjgtMy42IDIwLjEtMTAuMSAyNi41LTguOCA4LjktMjUuNSA1LjktMzUuMy44LTEwLjgtNS43LjgtMTkuMi44LTE5LjJzLTUuOCAzLjQtMTAuNS0zLjZjLTYtOS4zLTE3LjEtMzcuMyAxMS41LTYyLTEuMy0xMC4xLTQuNi01My43IDQwLjYtODUuNiAwIDAtMjAuNi0yMi44LTEyLjktNDMuMyA1LTEzLjQgNy0xMy4zIDguNi0xMy45IDUuNy0yLjIgMTEuMy00LjYgMTUuNC05LjEgMjAuNi0yMi4yIDQ2LjgtMTggNDYuOC0xOHMxMi40LTM3LjggMjMuOS0zMC40YzMuNSAyLjMgMTYuMyAzMC42IDE2LjMgMzAuNnMxMy42LTcuOSAxNS4xLTVjOC4yIDE2IDkuMiA0Ni41IDUuNiA2NS4xLTYuMSAzMC42LTIxLjQgNDcuMS0yNy42IDU3LjUtMS40IDIuNCAxNi41IDEwIDI3LjggNDEuMyAxMC40IDI4LjYgMS4xIDUyLjcgMi44IDU1LjMuOCAxLjQgMTMuNy44IDM2LjQtMTMuMiAxMi44LTcuOSAyOC4xLTE2LjkgNDUuNC0xNyAxNi43LS41IDE3LjYgMTkuMiA0LjkgMjIuMnpNNDk2IDI1NmMwIDEzNi45LTExMS4xIDI0OC0yNDggMjQ4UzAgMzkyLjkgMCAyNTYgMTExLjEgOCAyNDggOHMyNDggMTExLjEgMjQ4IDI0OHptLTc5LjMgNzUuMmMtMS43LTEzLjYtMTMuMi0yMy0yOC0yMi44LTIyIC4zLTQwLjUgMTEuNy01Mi44IDE5LjItNC44IDMtOC45IDUuMi0xMi40IDYuOCAzLjEtNDQuNS0yMi41LTczLjEtMjguNy03OS40IDcuOC0xMS4zIDE4LjQtMjcuOCAyMy40LTUzLjIgNC4zLTIxLjcgMy01NS41LTYuOS03NC41LTEuNi0zLjEtNy40LTExLjItMjEtNy40LTkuNy0yMC0xMy0yMi4xLTE1LjYtMjMuOC0xLjEtLjctMjMuNi0xNi40LTQxLjQgMjgtMTIuMi45LTMxLjMgNS4zLTQ3LjUgMjIuOC0yIDIuMi01LjkgMy44LTEwLjEgNS40aC4xYy04LjQgMy0xMi4zIDkuOS0xNi45IDIyLjMtNi41IDE3LjQuMiAzNC42IDYuOCA0NS43LTE3LjggMTUuOS0zNyAzOS44LTM1LjcgODIuNS0zNCAzNi0xMS44IDczLTUuNiA3OS42LTEuNiAxMS4xIDMuNyAxOS40IDEyIDIzLjggMTIuNiA2LjcgMzAuMyA5LjYgNDMuOSAyLjggNC45IDUuMiAxMy44IDEwLjEgMzAgMTAuMSA2LjggMCA1OC0yLjkgNzIuNi02LjUgNi44LTEuNiAxMS41LTQuNSAxNC42LTcuMSA5LjgtMy4xIDM2LjgtMTIuMyA2Mi4yLTI4LjcgMTgtMTEuNyAyNC4yLTE0LjIgMzcuNi0xNy40IDEyLjktMy4yIDIxLTE1LjEgMTkuNC0yOC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZZWxwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyLjkgMjQwLjMybDk5LjYyIDQ4LjYxYzE5LjIgOS40IDE2LjIgMzcuNTEtNC41IDQyLjcxTDMwLjUgMzU4LjQ1YTIyLjc5IDIyLjc5IDAgMCAxLTI4LjIxLTE5LjYgMTk3LjE2IDE5Ny4xNiAwIDAgMSA5LTg1LjMyIDIyLjggMjIuOCAwIDAgMSAzMS42MS0xMy4yMXptNDQgMjM5LjI1YTE5OS40NSAxOTkuNDUgMCAwIDAgNzkuNDIgMzIuMTFBMjIuNzggMjIuNzggMCAwIDAgMTkyLjk0IDQ5MGwzLjktMTEwLjgyYy43LTIxLjMtMjUuNS0zMS45MS0zOS44MS0xNi4xbC03NC4yMSA4Mi40YTIyLjgyIDIyLjgyIDAgMCAwIDQuMDkgMzQuMDl6bTE0NS4zNC0xMDkuOTJsNTguODEgOTRhMjIuOTMgMjIuOTMgMCAwIDAgMzQgNS41IDE5OC4zNiAxOTguMzYgMCAwIDAgNTIuNzEtNjcuNjFBMjMgMjMgMCAwIDAgMzY0LjE3IDM3MGwtMTA1LjQyLTM0LjI2Yy0yMC4zMS02LjUtMzcuODEgMTUuOC0yNi41MSAzMy45MXptMTQ4LjMzLTEzMi4yM2ExOTcuNDQgMTk3LjQ0IDAgMCAwLTUwLjQxLTY5LjMxIDIyLjg1IDIyLjg1IDAgMCAwLTM0IDQuNGwtNjIgOTEuOTJjLTExLjkgMTcuNyA0LjcgNDAuNjEgMjUuMiAzNC43MUwzNjYgMjY4LjYzYTIzIDIzIDAgMCAwIDE0LjYxLTMxLjIxek02Mi4xMSAzMC4xOGEyMi44NiAyMi44NiAwIDAgMC05LjkgMzJsMTA0LjEyIDE4MC40NGMxMS43IDIwLjIgNDIuNjEgMTEuOSA0Mi42MS0xMS40VjIyLjg4YTIyLjY3IDIyLjY3IDAgMCAwLTI0LjUtMjIuOCAzMjAuMzcgMzIwLjM3IDAgMCAwLTExMi4zMyAzMC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZb2FzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05MS4zIDc2aDE4NmwtNyAxOC45aC0xNzljLTM5LjcgMC03MS45IDMxLjYtNzEuOSA3MC4zdjIwNS40YzAgMzUuNCAyNC45IDcwLjMgODQgNzAuM1Y0NjBIOTEuM0M0MS4yIDQ2MCAwIDQxOS44IDAgMzcwLjVWMTY1LjJDMCAxMTUuOSA0MC43IDc2IDkxLjMgNzZ6bTIyOS4xLTU2aDY2LjVDMjQzLjEgMzk4LjEgMjQxLjIgNDE4LjkgMjAyLjIgNDU5LjNjLTIwLjggMjEuNi00OS4zIDMxLjctNzguMyAzMi43di01MS4xYzQ5LjItNy43IDY0LjYtNDkuOSA2NC42LTc1LjMgMC0yMC4xLjYtMTIuNi04Mi4xLTIyMy4yaDYxLjRMMjE4LjIgMjk5IDMyMC40IDIwek00NDggMTYxLjVWNDYwSDIzNGM2LjYtOS42IDEwLjctMTYuMyAxMi4xLTE5LjRoMTgyLjVWMTYxLjVjMC0zMi41LTE3LjEtNTEuOS00OC4yLTYyLjlsNi43LTE3LjZjNDEuNyAxMy42IDYwLjkgNDMuMSA2MC45IDgwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlvdXR1YmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ5LjY1NSAxMjQuMDgzYy02LjI4MS0yMy42NS0yNC43ODctNDIuMjc2LTQ4LjI4NC00OC41OTdDNDU4Ljc4MSA2NCAyODggNjQgMjg4IDY0UzExNy4yMiA2NCA3NC42MjkgNzUuNDg2Yy0yMy40OTcgNi4zMjItNDIuMDAzIDI0Ljk0Ny00OC4yODQgNDguNTk3LTExLjQxMiA0Mi44NjctMTEuNDEyIDEzMi4zMDUtMTEuNDEyIDEzMi4zMDVzMCA4OS40MzggMTEuNDEyIDEzMi4zMDVjNi4yODEgMjMuNjUgMjQuNzg3IDQxLjUgNDguMjg0IDQ3LjgyMUMxMTcuMjIgNDQ4IDI4OCA0NDggMjg4IDQ0OHMxNzAuNzggMCAyMTMuMzcxLTExLjQ4NmMyMy40OTctNi4zMjEgNDIuMDAzLTI0LjE3MSA0OC4yODQtNDcuODIxIDExLjQxMi00Mi44NjcgMTEuNDEyLTEzMi4zMDUgMTEuNDEyLTEzMi4zMDVzMC04OS40MzgtMTEuNDEyLTEzMi4zMDV6bS0zMTcuNTEgMjEzLjUwOFYxNzUuMTg1bDE0Mi43MzkgODEuMjA1LTE0Mi43MzkgODEuMjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFaaGlodSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzAuNTQgMTQ4LjEzdjIxNy41NGwyMy40My4wMSA3LjcxIDI2LjM3IDQyLjAxLTI2LjM3aDQ5LjUzVjE0OC4xM0gxNzAuNTR6bTk3Ljc1IDE5My45M2gtMjcuOTRsLTI3LjkgMTcuNTEtNS4wOC0xNy40Ny0xMS45LS4wNFYxNzEuNzVoNzIuODJ2MTcwLjMxem0tMTE4LjQ2LTk0LjM5SDk3LjVjMS43NC0yNy4xIDIuMi01MS41OSAyLjItNzMuNDZoNTEuMTZzMS45Ny0yMi41Ni04LjU4LTIyLjMxaC04OC41YzMuNDktMTMuMTIgNy44Ny0yNi42NiAxMy4xMi00MC42NyAwIDAtMjQuMDcgMC0zMi4yNyAyMS41Ny0zLjM5IDguOS0xMy4yMSA0My4xNC0zMC43IDc4LjEyIDUuODktLjY0IDI1LjM3LTEuMTggMzYuODQtMjIuMjEgMi4xMS01Ljg5IDIuNTEtNi42NiA1LjE0LTE0LjUzaDI4Ljg3YzAgMTAuNS0xLjIgNjYuODgtMS42OCA3My40NEgyMC44M2MtMTEuNzQgMC0xNS41NiAyMy42Mi0xNS41NiAyMy42Mmg2NS41OEM2Ni40NSAzMjEuMSA0Mi44MyAzNjMuMTIgMCAzOTYuMzRjMjAuNDkgNS44NSA0MC45MS0uOTMgNTEtOS45IDAgMCAyMi45OC0yMC45IDM1LjU5LTY5LjI1bDUzLjk2IDY0Ljk0czcuOTEtMjYuODktMS4yNC0zOS45OWMtNy41OC04LjkyLTI4LjA2LTMzLjA2LTM2Ljc5LTQxLjgxTDg3LjkgMzExLjk1YzQuMzYtMTMuOTggNi45OS0yNy41NSA3Ljg3LTQwLjY3aDYxLjY1cy0uMDktMjMuNjItNy41OS0yMy42MnYuMDF6bTQxMi4wMi0xLjZjMjAuODMtMjUuNjQgNDQuOTgtNTguNTcgNDQuOTgtNTguNTdzLTE4LjY1LTE0LjgtMjcuMzgtNC4wNmMtNiA4LjE1LTM2LjgzIDQ4LjItMzYuODMgNDguMmwxOS4yMyAxNC40M3ptLTE1MC4wOS01OS4wOWMtOS4wMS04LjI1LTI1LjkxIDIuMTMtMjUuOTEgMi4xM3MzOS41MiA1NS4wNCA0MS4xMiA1Ny40NWwxOS40Ni0xMy43M3MtMjUuNjctMzcuNjEtMzQuNjYtNDUuODZoLS4wMXpNNjQwIDI1OC4zNWMtMTkuNzggMC0xMzAuOTEuOTMtMTMxLjA2Ljkzdi0xMDFjNC44MSAwIDEyLjQyLS40IDIyLjg1LTEuMiA0MC44OC0yLjQxIDcwLjEzLTQgODcuNzctNC44MSAwIDAgMTIuMjItMjcuMTktLjU5LTMzLjQ0LTMuMDctMS4xOC0yMy4xNyA0LjU4LTIzLjE3IDQuNThzLTE2NS4yMiAxNi40OS0yMzIuMzYgMTguMDVjMS42IDguODIgNy42MiAxNy4wOCAxNS43OCAxOS41NSAxMy4zMSAzLjQ4IDIyLjY5IDEuNyA0OS4xNS44OSAyNC44My0xLjYgNDMuNjgtMi40MyA1Ni41MS0yLjQzdjk5LjgxSDM1MS40MXMyLjgyIDIyLjMxIDI1LjUxIDIyLjg1aDEwNy45NHY3MC45MmMwIDEzLjk3LTExLjE5IDIxLjk5LTI0LjQ4IDIxLjEyLTE0LjA4LjExLTI2LjA4LTEuMTUtNDEuNjktMS44MSAxLjk5IDMuOTcgNi4zMyAxNC4zOSAxOS4zMSAyMS44NCA5Ljg4IDQuODEgMTYuMTcgNi41NyAyNi4wMiA2LjU3IDI5LjU2IDAgNDUuNjctMTcuMjggNDQuODktNDUuMzF2LTczLjMyaDEyMi4zNmM5LjY4IDAgOC43LTIzLjc4IDguNy0yMy43OGwuMDMtLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmEwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTkyQzAgMTAzLjYgNzEuNiAzMiAxNjAgMzJzMTYwIDcxLjYgMTYwIDE2MFYzMjBjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBTMCA0MDguNCAwIDMyMFYxOTJ6TTE2MCA5NmMtNTMgMC05NiA0My05NiA5NlYzMjBjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NlYxOTJjMC01My00My05Ni05Ni05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgNjRjMC0xMS44LTYuNS0yMi42LTE2LjktMjguMnMtMjMtNS0zMi44IDEuNmwtOTYgNjRDLS41IDExMS4yLTQuNCAxMzEgNS40IDE0NS44czI5LjcgMTguNyA0NC40IDguOUw5NiAxMjMuOFY0MTZIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoOTYgOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTYwVjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmEyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0Mi45IDk2Yy0yMS41IDAtNDIuMiA4LjUtNTcuNCAyMy44TDU0LjYgMTUwLjZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDQwLjIgNzQuNUM2Ny41IDQ3LjMgMTA0LjQgMzIgMTQyLjkgMzJDMjIzIDMyIDI4OCA5NyAyODggMTc3LjFjMCAzOC41LTE1LjMgNzUuNC00Mi41IDEwMi42TDEwOS4zIDQxNkgyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTEyLjkgMC0yNC42LTcuOC0yOS42LTE5LjhzLTIuMi0yNS43IDYuOS0zNC45TDIwMC4yIDIzNC41YzE1LjItMTUuMiAyMy44LTM1LjkgMjMuOC01Ny40YzAtNDQuOC0zNi4zLTgxLjEtODEuMS04MS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmEzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJIMjcyYzEzLjIgMCAyNSA4LjEgMjkuOCAyMC40czEuNSAyNi4zLTguMiAzNS4yTDE2Mi4zIDIwOEgxODRjNzUuMSAwIDEzNiA2MC45IDEzNiAxMzZzLTYwLjkgMTM2LTEzNiAxMzZIMTA1LjRDNjMgNDgwIDI0LjIgNDU2IDUuMyA0MTguMWwtMS45LTMuOGMtNy45LTE1LjgtMS41LTM1IDE0LjMtNDIuOXMzNS0xLjUgNDIuOSAxNC4zbDEuOSAzLjhjOC4xIDE2LjMgMjQuOCAyNi41IDQyLjkgMjYuNUgxODRjMzkuOCAwIDcyLTMyLjIgNzItNzJzLTMyLjItNzItNzItNzJIODBjLTEzLjIgMC0yNS04LjEtMjkuOC0yMC40cy0xLjUtMjYuMyA4LjItMzUuMkwxODkuNyA5NkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmE0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4OSA3Ny42YzcuNS0xNiAuNy0zNS4xLTE1LjMtNDIuNnMtMzUuMS0uNy00Mi42IDE1LjNMMyAzMjIuNGMtNC43IDkuOS0zLjkgMjEuNSAxLjkgMzAuOFMyMSAzNjggMzIgMzY4SDI1NnY4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM2OGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjBWMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjMwNEg4Mi40TDE4OSA3Ny42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmE1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyLjUgNTguM0MzNS4zIDQzLjEgNDguNSAzMiA2NCAzMkgyNTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIOTAuN0w3MC4zIDIwOEgxODRjNzUuMSAwIDEzNiA2MC45IDEzNiAxMzZzLTYwLjkgMTM2LTEzNiAxMzZIMTAwLjVjLTM5LjQgMC03NS40LTIyLjMtOTMtNTcuNWwtNC4xLTguMmMtNy45LTE1LjgtMS41LTM1IDE0LjMtNDIuOXMzNS0xLjUgNDIuOSAxNC4zbDQuMSA4LjJjNi44IDEzLjYgMjAuNiAyMi4xIDM1LjggMjIuMUgxODRjMzkuOCAwIDcyLTMyLjIgNzItNzJzLTMyLjItNzItNzItNzJIMzJjLTkuNSAwLTE4LjUtNC4yLTI0LjYtMTEuNXMtOC42LTE2LjktNi45LTI2LjJsMzItMTc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmE2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMi40IDg0LjdjMTEuNC0xMy41IDkuNy0zMy43LTMuOC00NS4xcy0zMy43LTkuNy00NS4xIDMuOEwzOC42IDIxNC43QzE0LjcgMjQyLjkgMS4xIDI3OC40IC4xIDMxNS4yYzAgMS40LS4xIDIuOS0uMSA0LjNjMCAuMiAwIC4zIDAgLjVjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjBzMTYwLTcxLjYgMTYwLTE2MGMwLTg1LjUtNjcuMS0xNTUuNC0xNTEuNS0xNTkuOGw2My45LTc1LjZ6TTI1NiAzMjBBOTYgOTYgMCAxIDEgNjQgMzIwYTk2IDk2IDAgMSAxIDE5MiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmE3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJIMjg4YzExLjUgMCAyMiA2LjEgMjcuNyAxNi4xczUuNyAyMi4yLS4xIDMyLjFsLTIyNCAzODRjLTguOSAxNS4zLTI4LjUgMjAuNC00My44IDExLjVzLTIwLjQtMjguNS0xMS41LTQzLjhMMjMyLjMgOTZIMzJDMTQuMyA5NiAwIDgxLjcgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhOCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgMTYwYzAtNzAuNy01Ny4zLTEyOC0xMjgtMTI4SDE0NEM3My4zIDMyIDE2IDg5LjMgMTYgMTYwYzAgMzQuNiAxMy43IDY2IDM2IDg5QzIwLjUgMjcyLjMgMCAzMDkuOCAwIDM1MmMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOGg2NGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOGMwLTQyLjItMjAuNS03OS43LTUyLTEwM2MyMi4zLTIzIDM2LTU0LjQgMzYtODl6TTE3Ni4xIDI4OEgxOTJjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjRIMTI4Yy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0aDE1LjljMCAwIC4xIDAgLjEgMGgzMmMwIDAgLjEgMCAuMSAwem0wLTY0YzAgMCAwIDAgMCAwSDE0NGMwIDAgMCAwIDAgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRoMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjRjMCAzNS4zLTI4LjYgNjQtNjQgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYTkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMTkyYTk2IDk2IDAgMSAwIDE5MiAwQTk2IDk2IDAgMSAwIDY0IDE5MnptODcuNSAxNTkuOEM2Ny4xIDM0Ny40IDAgMjc3LjUgMCAxOTJDMCAxMDMuNiA3MS42IDMyIDE2MCAzMnMxNjAgNzEuNiAxNjAgMTYwYzAgMi42LS4xIDUuMy0uMiA3LjljLTEuNyAzNS43LTE1LjIgNzAtMzguNCA5Ny40bC0xNDUgMTcxLjRjLTExLjQgMTMuNS0zMS42IDE1LjItNDUuMSAzLjhzLTE1LjItMzEuNi0zLjgtNDUuMWw2My45LTc1LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIxLjUgNTEuN0MyMTYuNiAzOS44IDIwNC45IDMyIDE5MiAzMnMtMjQuNiA3LjgtMjkuNSAxOS43bC0xMjAgMjg4LTQwIDk2Yy02LjggMTYuMyAuOSAzNSAxNy4yIDQxLjhzMzUtLjkgNDEuOC0xNy4yTDkzLjMgMzg0SDI5MC43bDMxLjggNzYuM2M2LjggMTYuMyAyNS41IDI0IDQxLjggMTcuMnMyNC0yNS41IDE3LjItNDEuOGwtNDAtOTYtMTIwLTI4OHpNMjY0IDMyMEgxMjBsNzItMTcyLjhMMjY0IDMyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWRkcmVzc0Jvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM2MC43IDAgMzIgMjguNyAzMiA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDk2ek0yMDggMjg4aDY0YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgOC44LTcuMiAxNi0xNiAxNkgxNDRjLTguOCAwLTE2LTcuMi0xNi0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MHptLTMyLTk2YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNNTEyIDgwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWODB6TTQ5NiAxOTJjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjIwOGMwLTguOC03LjItMTYtMTYtMTZ6bTE2IDE0NGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjMzNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWRkcmVzc0NhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em04MCAyNTZoNjRjNDQuMiAwIDgwIDM1LjggODAgODBjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZjMC00NC4yIDM1LjgtODAgODAtODB6bS0zMi05NmE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6bTI1Ni0zMkg0OTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em0wIDY0SDQ5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRINDk2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpZ25DZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJ6bTk2IDEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJ6TTAgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTM1MiAzMjBjMC0xNy43LTE0LjMtMzItMzItMzJIMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpZ25KdXN0aWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyem0wIDI1NmMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJ6TTAgMTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTQ0OCA0NDhjMC0xNy43LTE0LjMtMzItMzItMzJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbGlnbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyQzE0LjMgOTYgMCA4MS43IDAgNjRTMTQuMyAzMiAzMiAzMkgyNTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6bTAgMjU2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDI1NmMxNy43IDAgMzIgMTQuMyAzMiAzMnpNMCAxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNNDQ4IDQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFsaWduUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6bTAgMjU2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6TTAgMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTQ0OCA0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmNob3JDaXJjbGVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgOTZhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHptMjEuMSA4MEMzNjcgMTU4LjggMzg0IDEyOS40IDM4NCA5NmMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmMwIDMzLjQgMTcgNjIuOCA0Mi45IDgwSDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmgzMlY0NDhIMjA4Yy01MyAwLTk2LTQzLTk2LTk2di02LjFsNyA3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUw5NyAyNjNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDcgMzE5Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNy03VjM1MmMwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MGg4MCA4MGM4LjIgMCAxNi4zLS42IDI0LjItMS44Yy0yMi4yLTE2LjItNDAuNC0zNy41LTUzLTYyLjJIMzIwVjM2OCAyNDBoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzQxLjF6TTY0MCAzNjhhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTc2LjctNDMuM2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNmwtNzIgNzJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwbC00MC00MGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ4MCAzODUuNGw2MC43LTYwLjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuY2hvckNpcmNsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA5NmEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwem0yMS4xIDgwQzM2NyAxNTguOCAzODQgMTI5LjQgMzg0IDk2YzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMzMuNCAxNyA2Mi44IDQyLjkgODBIMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDMyVjQ0OEgyMDhjLTUzIDAtOTYtNDMtOTYtOTZ2LTYuMWw3IDdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDk3IDI2M2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMNyAzMTljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw3LTdWMzUyYzAgODguNCA3MS42IDE2MCAxNjAgMTYwaDgwIDgwYzguMiAwIDE2LjMtLjYgMjQuMi0xLjhjLTIyLjItMTYuMi00MC40LTM3LjUtNTMtNjIuMkgzMjBWMzY4IDI0MGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzNDEuMXpNNDk2IDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTAtOTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0wLTE0NGM4LjggMCAxNiA3LjIgMTYgMTZ2ODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjg4YzAtOC44IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5jaG9yQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDk2YTMyIDMyIDAgMSAxIC02NCAwIDMyIDMyIDAgMSAxIDY0IDB6bTIxLjEgODBDMzY3IDE1OC44IDM4NCAxMjkuNCAzODQgOTZjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAzMy40IDE3IDYyLjggNDIuOSA4MEgyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzJWNDQ4SDIwOGMtNTMgMC05Ni00My05Ni05NnYtNi4xbDcgN2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlMOTcgMjYzYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEw3IDMxOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDctN1YzNTJjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjBoODAgODBjOC4yIDAgMTYuMy0uNiAyNC4yLTEuOGMtMjIuMi0xNi4yLTQwLjQtMzcuNS01My02Mi4ySDMyMFYzNjggMjQwaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM0MS4xek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptNTkuMy0xODAuN0w1MTguNiAzNjhsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBMNDk2IDM5MC42bC0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMNDczLjQgMzY4bC0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0OTYgMzQ1LjRsMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5jaG9yTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgOTZhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHptMjEuMSA4MEMzNjcgMTU4LjggMzg0IDEyOS40IDM4NCA5NmMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmMwIDMzLjQgMTcgNjIuOCA0Mi45IDgwSDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmgzMlY0NDhIMjA4Yy01MyAwLTk2LTQzLTk2LTk2di02LjFsNyA3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUw5NyAyNjNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDcgMzE5Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNy03VjM1MmMwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MGg4MCA4MGM4IDAgMTUuOS0uNiAyMy42LTEuN2MtNC44LTktNy42LTE5LjMtNy42LTMwLjNWNDQ2LjdjLTUuMiAuOS0xMC41IDEuMy0xNiAxLjNIMzIwVjI0MGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzNDEuMXpNNTI4IDI0MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OEg0OTZWMjcyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tODAgMzJ2NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMyVjI3MmMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5jaG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA5NmEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwem0yMS4xIDgwQzM2NyAxNTguOCAzODQgMTI5LjQgMzg0IDk2YzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMzMuNCAxNyA2Mi44IDQyLjkgODBIMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDMyVjQ0OEgyMDhjLTUzIDAtOTYtNDMtOTYtOTZ2LTYuMWw3IDdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDk3IDI2M2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMNyAzMTljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw3LTdWMzUyYzAgODguNCA3MS42IDE2MCAxNjAgMTYwaDgwIDgwYzg4LjQgMCAxNjAtNzEuNiAxNjAtMTYwdi02LjFsNyA3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtNTYtNTZjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC01NiA1NmMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDctN1YzNTJjMCA1My00MyA5Ni05NiA5NkgzMjBWMjQwaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM0MS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAxLjQgMzc0LjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTYwLTE2MGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwyMjQgMzA2LjcgODYuNiAxNjkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTYwIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxLjQgMjMzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wxMDkuMyAyNTYgMjQ2LjYgMTE4LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTE2MCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc4LjYgMjMzLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTE2MCAxNjBjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDIxMC43IDI1NiA3My40IDExOC42Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwbDE2MCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAxLjQgMTM3LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTYwIDE2MGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwyMjQgMjA1LjMgODYuNiAzNDIuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsMTYwLTE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVzRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDYuNiA0NzAuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBsLTE2MC0xNjBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBMMjI0IDQwMi43IDM2MS40IDI2NS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNsLTE2MCAxNjB6bTE2MC0zNTJsLTE2MCAxNjBjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwbC0xNjAtMTYwYy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwTDIyNCAyMTAuNyAzNjEuNCA3My40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlc0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDEuNCAyMzMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsMTYwIDE2MGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDEwOS4zIDI1NiAyNDYuNiAxMTguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMTYwIDE2MHptMzUyLTE2MGwtMTYwIDE2MGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsMTYwIDE2MGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDMwMS4zIDI1NiA0MzguNiAxMTguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVzUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDcwLjYgMjc4LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTE2MC0xNjBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDQwMi43IDI1NiAyNjUuNCAzOTMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwem0tMzUyIDE2MGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xNjAtMTYwYy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0wyMTAuNyAyNTYgNzMuNCAzOTMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVzVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ2LjYgNDEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTE2MCAxNjBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMjI0IDEwOS4zIDM2MS40IDI0Ni42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTE2MC0xNjB6bTE2MCAzNTJsLTE2MC0xNjBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xNjAgMTYwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDIyNCAzMDEuMyAzNjEuNCA0MzguNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmtoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDEyOGMwLTM1LjMgMjguNy02NCA2NC02NHM2NCAyOC43IDY0IDY0YzAgNDEuNi0yMC43IDc2LjYtNDYuNiAxMDQuMWMtNS45IDYuMi0xMS44IDExLjgtMTcuNCAxNi43Yy01LjYtNC45LTExLjUtMTAuNS0xNy40LTE2LjdDMTE2LjcgMjA0LjYgOTYgMTY5LjYgOTYgMTI4ek0xNjAgMEM4OS4zIDAgMzIgNTcuMyAzMiAxMjhjMCA1Mi40IDIxLjUgOTUuNSA0Ni44IDEyOEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMjBoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjQxLjJjMjUuNC0zMi41IDQ2LjgtNzUuNiA0Ni44LTEyOEMyODggNTcuMyAyMzAuNyAwIDE2MCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBsZVdob2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMTJjLTguOCAwLTE2LTcuMi0xNi0xNlY4MGMwLTQ0LjIgMzUuOC04MCA4MC04MGgxNmM4LjggMCAxNiA3LjIgMTYgMTZWMzJjMCA0NC4yLTM1LjggODAtODAgODBIMjI0ek0wIDI4OGMwLTc2LjMgMzUuNy0xNjAgMTEyLTE2MGMyNy4zIDAgNTkuNyAxMC4zIDgyLjcgMTkuM2MxOC44IDcuMyAzOS45IDcuMyA1OC43IDBjMjIuOS04LjkgNTUuNC0xOS4zIDgyLjctMTkuM2M3Ni4zIDAgMTEyIDgzLjcgMTEyIDE2MGMwIDEyOC04MCAyMjQtMTYwIDIyNGMtMTYuNSAwLTM4LjEtNi42LTUxLjUtMTEuM2MtOC4xLTIuOC0xNi45LTIuOC0yNSAwYy0xMy40IDQuNy0zNSAxMS4zLTUxLjUgMTEuM0M4MCA1MTIgMCA0MTYgMCAyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFyY2h3YXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2SDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnptMCAzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIOTZoNjRWMzUyYzAtNTMgNDMtOTYgOTYtOTZzOTYgNDMgOTYgOTZWNDgwaDY0IDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjEyOEgzMlY0MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93RG93bjE5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1MC43IDM4Yy04LjMtNi0xOS4xLTcuNy0yOC44LTQuNGwtNDggMTZjLTE2LjggNS42LTI1LjggMjMuNy0yMC4yIDQwLjVzMjMuNyAyNS44IDQwLjUgMjAuMmw1LjktMlYxNjBIMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDQ4IDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ2NFY2NGMwLTEwLjMtNC45LTE5LjktMTMuMy0yNnpNMTYwIDQ4MGM5IDAgMTcuNS0zLjggMjMuNi0xMC40bDg4LTk2YzExLjktMTMgMTEuMS0zMy4zLTItNDUuMnMtMzMuMy0xMS4xLTQ1LjIgMkwxOTIgMzY1LjdWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMzY1LjdMOTUuNiAzMzAuNGMtMTEuOS0xMy0zMi4yLTEzLjktNDUuMi0ycy0xMy45IDMyLjItMiA0NS4ybDg4IDk2QzE0Mi41IDQ3Ni4yIDE1MSA0ODAgMTYwIDQ4MHpNNDE4LjMgMzA3YTMyIDMyIDAgMSAxIDI3LjQgNTcuOUEzMiAzMiAwIDEgMSA0MTguMyAzMDd6TTQwNS4xIDQxOS44bC02LjggOS4yYy0xMC41IDE0LjItNy41IDM0LjIgNi43IDQ0LjhzMzQuMiA3LjUgNDQuOC02LjdsNDguOC02NS44YzE0LTE4LjkgMjEuNS00MS43IDIxLjUtNjUuMmMwLTQ4LjYtMzkuNC04OC04OC04OHMtODggMzkuNC04OCA4OGMwIDM5LjIgMjUuNiA3Mi40IDYxLjEgODMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dEb3duOTEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDQ4MGM5IDAgMTcuNS0zLjggMjMuNi0xMC40bDg4LTk2YzExLjktMTMgMTEuMS0zMy4zLTItNDUuMnMtMzMuMy0xMS4xLTQ1LjIgMkwxOTIgMzY1LjdWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMzY1LjdMOTUuNiAzMzAuNGMtMTEuOS0xMy0zMi4yLTEzLjktNDUuMi0ycy0xMy45IDMyLjItMiA0NS4ybDg4IDk2QzE0Mi41IDQ3Ni4yIDE1MSA0ODAgMTYwIDQ4MHpNNDUwLjcgMjk0Yy04LjMtNi0xOS4xLTcuNy0yOC44LTQuNGwtNDggMTZjLTE2LjggNS42LTI1LjggMjMuNy0yMC4yIDQwLjVzMjMuNyAyNS44IDQwLjUgMjAuMmw1LjktMlY0MTZIMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDQ4IDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ2NFYzMjBjMC0xMC4zLTQuOS0xOS45LTEzLjMtMjZ6TTQxOC4zIDkxYTMyIDMyIDAgMSAxIDI3LjQgNTcuOUEzMiAzMiAwIDEgMSA0MTguMyA5MXpNNDA1LjEgMjAzLjhsLTYuOCA5LjJjLTEwLjUgMTQuMi03LjUgMzQuMiA2LjcgNDQuOHMzNC4yIDcuNSA0NC44LTYuN2w0OC44LTY1LjhjMTQtMTguOSAyMS41LTQxLjcgMjEuNS02NS4yYzAtNDguNi0zOS40LTg4LTg4LTg4cy04OCAzOS40LTg4IDg4YzAgMzkuMiAyNS42IDcyLjQgNjEuMSA4My44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0Rvd25BWiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODMuNiA0NjkuNkMxNzcuNSA0NzYuMiAxNjkgNDgwIDE2MCA0ODBzLTE3LjUtMy44LTIzLjYtMTAuNGwtODgtOTZjLTExLjktMTMtMTEuMS0zMy4zIDItNDUuMnMzMy4zLTExLjEgNDUuMiAyTDEyOCAzNjUuN1Y2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjM2NS43bDMyLjQtMzUuNGMxMS45LTEzIDMyLjItMTMuOSA0NS4yLTJzMTMuOSAzMi4yIDIgNDUuMmwtODggOTZ6TTMyMCAzMjBjMC0xNy43IDE0LjMtMzIgMzItMzJINDgwYzEyLjkgMCAyNC42IDcuOCAyOS42IDE5LjhzMi4yIDI1LjctNi45IDM0LjlMNDI5LjMgNDE2SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzNTJjLTEyLjkgMC0yNC42LTcuOC0yOS42LTE5LjhzLTIuMi0yNS43IDYuOS0zNC45TDQwMi43IDM1MkgzNTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek00MTYgMzJjMTIuMSAwIDIzLjIgNi44IDI4LjYgMTcuN2w2NCAxMjggMTYgMzJjNy45IDE1LjggMS41IDM1LTE0LjMgNDIuOXMtMzUgMS41LTQyLjktMTQuM0w0NjAuMiAyMjRIMzcxLjhsLTcuMiAxNC4zYy03LjkgMTUuOC0yNy4xIDIyLjItNDIuOSAxNC4zcy0yMi4yLTI3LjEtMTQuMy00Mi45bDE2LTMyIDY0LTEyOEMzOTIuOCAzOC44IDQwMy45IDMyIDQxNiAzMnpNMzk1LjggMTc2aDQwLjRMNDE2IDEzNS42IDM5NS44IDE3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dEb3duTG9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjkuNCA1MDIuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxMjgtMTI4YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCA0MDIuNyAyMjQgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAzNzAuN0w4Ni42IDMyOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxMjggMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0Rvd25TaG9ydFdpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUxLjYgNDY5LjZDMTQ1LjUgNDc2LjIgMTM3IDQ4MCAxMjggNDgwcy0xNy41LTMuOC0yMy42LTEwLjRsLTg4LTk2Yy0xMS45LTEzLTExLjEtMzMuMyAyLTQ1LjJzMzMuMy0xMS4xIDQ1LjIgMkw5NiAzNjUuN1Y2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjM2NS43bDMyLjQtMzUuNGMxMS45LTEzIDMyLjItMTMuOSA0NS4yLTJzMTMuOSAzMi4yIDIgNDUuMmwtODggOTZ6TTMyMCAzMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTAgMTI4aDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCAxMjhINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCAxMjhINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dEb3duVXBBY3Jvc3NMaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzNy40IDUwMi42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDk2LTk2YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDE5MiA0MDIuN1YyODhINTQ0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ0OFYxMDkuM2w0MS40IDQxLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC05NiA5NmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwzODQgMTA5LjNWMjI0SDE5MiAxMjggMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoOTZWNDAyLjdMODYuNiAzNjEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsOTYgOTZ6TTEyOCAxOTJoNjRWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMTkyek00NDggMzIwSDM4NFY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93RG93blVwTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTAuNiA1MDIuNmw5Ni05NmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwxNjAgNDAyLjdWMjg4SDQxNlYyNzJjMC0xNy4yIDMuOS0zMy41IDEwLjgtNDhIMzUyVjEwOS4zbDQxLjQgNDEuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC05Ni05NmMtNi02LTE0LjEtOS40LTIyLjYtOS40cy0xNi42IDMuNC0yMi42IDkuNGwtOTYgOTZjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMjg4IDEwOS4zVjIyNGwtMTI4IDBIOTZsLTY0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIOTZWNDAyLjdMNTQuNiAzNjEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsOTYgOTZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDB6TTE2MCAxOTJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMTkyaDY0ek0yODggMzIwVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyMEgyODh6bTI0MC04MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OEg0OTZWMjcyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tODAgMzJ2NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMyVjI3MmMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dEb3duV2lkZVNob3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MS42IDQ2OS42QzE0NS41IDQ3Ni4yIDEzNyA0ODAgMTI4IDQ4MHMtMTcuNS0zLjgtMjMuNi0xMC40bC04OC05NmMtMTEuOS0xMy0xMS4xLTMzLjMgMi00NS4yczMzLjMtMTEuMSA0NS4yIDJMOTYgMzY1LjdWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlYzNjUuN2wzMi40LTM1LjRjMTEuOS0xMyAzMi4yLTEzLjkgNDUuMi0yczEzLjkgMzIuMiAyIDQ1LjJsLTg4IDk2ek0zMjAgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMHptMC0xMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzIwem0wLTEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzIwem0wLTEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0Rvd25aQSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODMuNiA0NjkuNkMxNzcuNSA0NzYuMiAxNjkgNDgwIDE2MCA0ODBzLTE3LjUtMy44LTIzLjYtMTAuNGwtODgtOTZjLTExLjktMTMtMTEuMS0zMy4zIDItNDUuMnMzMy4zLTExLjEgNDUuMiAyTDEyOCAzNjUuN1Y2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjM2NS43bDMyLjQtMzUuNGMxMS45LTEzIDMyLjItMTMuOSA0NS4yLTJzMTMuOSAzMi4yIDIgNDUuMmwtODggOTZ6TTMyMCA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0ODBjMTIuOSAwIDI0LjYgNy44IDI5LjYgMTkuOHMyLjIgMjUuNy02LjkgMzQuOUw0MjkuMyAxNjBINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM1MmMtMTIuOSAwLTI0LjYtNy44LTI5LjYtMTkuOHMtMi4yLTI1LjcgNi45LTM0LjlMNDAyLjcgOTZIMzUyYy0xNy43IDAtMzItMTQuMy0zMi0zMnptOTYgMTkyYzEyLjEgMCAyMy4yIDYuOCAyOC42IDE3LjdsNjQgMTI4IDE2IDMyYzcuOSAxNS44IDEuNSAzNS0xNC4zIDQyLjlzLTM1IDEuNS00Mi45LTE0LjNMNDYwLjIgNDQ4SDM3MS44bC03LjIgMTQuM2MtNy45IDE1LjgtMjcuMSAyMi4yLTQyLjkgMTQuM3MtMjIuMi0yNy4xLTE0LjMtNDIuOWwxNi0zMiA2NC0xMjhjNS40LTEwLjggMTYuNS0xNy43IDI4LjYtMTcuN3pNMzk1LjggNDAwaDQwLjRMNDE2IDM1OS42IDM5NS44IDQwMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2OS40IDQ3MC42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjBjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMjI0IDM3MC44IDIyNCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDMwNi43TDU0LjYgMjY1LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93TGVmdExvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40IDIzMy40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxMjggMTI4YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMTA5LjMgMjg4IDQ4MCAyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTM3MC43IDAgNzMuNC03My40YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC0xMjggMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40IDIzMy40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMTA5LjIgMjg4IDQxNiAyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMwNi43IDBMMjE0LjYgMTE4LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTE2MCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93UG9pbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDU1LjJWNDI2YzAgMTIuMiA5LjkgMjIgMjIgMjJjNi4zIDAgMTIuNC0yLjcgMTYuNi03LjVMMTIxLjIgMzQ2bDU4LjEgMTE2LjNjNy45IDE1LjggMjcuMSAyMi4yIDQyLjkgMTQuM3MyMi4yLTI3LjEgMTQuMy00Mi45TDE3OS44IDMyMEgyOTcuOWMxMi4yIDAgMjIuMS05LjkgMjIuMS0yMi4xYzAtNi4zLTIuNy0xMi4zLTcuNC0xNi41TDM4LjYgMzcuOUMzNC4zIDM0LjEgMjguOSAzMiAyMy4yIDMyQzEwLjQgMzIgMCA0Mi40IDAgNTUuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dSaWdodEFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzguNiAxNTAuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDMzOC43IDk2IDMyIDk2QzE0LjMgOTYgMCAxMTAuMyAwIDEyOHMxNC4zIDMyIDMyIDMybDMwNi43IDAtNDEuNCA0MS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDk2LTk2em0tMzMzLjMgMzUyYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMTA5LjMgNDE2IDQxNiA0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMwNi43IDAgNDEuNC00MS40YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC05NiA5NmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsOTYgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93UmlnaHRGcm9tQnJhY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuNiAyNzguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTI4LTEyOGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMNDAyLjcgMjI0IDE5MiAyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMjEwLjcgMC03My40IDczLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsMTI4LTEyOHpNMTYwIDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDk2IDMyQzQzIDMyIDAgNzUgMCAxMjhMMCAzODRjMCA1MyA0MyA5NiA5NiA5Nmw2NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTI1NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmw2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1JpZ2h0TG9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuNiAyNzguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTI4LTEyOGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMNDAyLjcgMjI0IDMyIDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzNzAuNyAwLTczLjQgNzMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGwxMjgtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1JpZ2h0VG9CcmFja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiA5Nmw2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMjU2YzAgMTcuNy0xNC4zIDMyLTMyIDMybC02NCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDY0IDBjNTMgMCA5Ni00MyA5Ni05NmwwLTI1NmMwLTUzLTQzLTk2LTk2LTk2bC02NCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyem0tOS40IDE4Mi42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xMjgtMTI4Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0wyNDIuNyAyMjQgMzIgMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDIxMC43IDAtNzMuNCA3My40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDEyOC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93UmlnaHRUb0NpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDk2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjE5Mmg0MFYxMjBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY3MmgyNGMyNi41IDAgNDggMjEuNSA0OCA0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDMyIDMzNmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDh6bTY0IDMydjMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWODBjMC04LjgtNy4yLTE2LTE2LTE2SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNiA4MGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTc2YzAtOC44LTcuMi0xNi0xNi0xNkgzNjh6TTM1MiAyNzJ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNzYtMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI3MmMwLTguOC03LjItMTYtMTYtMTZINTI4ek01MTIgMzY4djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNkg1MjhjLTguOCAwLTE2IDcuMi0xNiAxNnpNMTY2LjYgMTUzLjRsODAgODBjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTgwIDgwYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wxNDYuNyAyODhIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIMTQ2LjdsLTI1LjQtMjUuNGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzguNiAyNzguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTYwLTE2MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMMzM4LjggMjI0IDMyIDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMDYuNyAwTDIzMy40IDM5My40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93Um90YXRlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjUuNyAxNjBIMTc2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjUxLjJMOTcuNiA5Ny42Yzg3LjUtODcuNSAyMjkuMy04Ny41IDMxNi44IDBzODcuNSAyMjkuMyAwIDMxNi44cy0yMjkuMyA4Ny41LTMxNi44IDBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBjNjIuNSA2Mi41IDE2My44IDYyLjUgMjI2LjMgMHM2Mi41LTE2My44IDAtMjI2LjNzLTE2My44LTYyLjUtMjI2LjMgMEwxMjUuNyAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93Um90YXRlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg2LjMgMTYwSDMzNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0NjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NTEuMkw0MTQuNCA5Ny42Yy04Ny41LTg3LjUtMjI5LjMtODcuNS0zMTYuOCAwcy04Ny41IDIyOS4zIDAgMzE2LjhzMjI5LjMgODcuNSAzMTYuOCAwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwYy02Mi41IDYyLjUtMTYzLjggNjIuNS0yMjYuMyAwcy02Mi41LTE2My44IDAtMjI2LjNzMTYzLjgtNjIuNSAyMjYuMyAwTDM4Ni4zIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dUcmVuZERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDM1MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjgyLjdMMzQyLjYgMTM3LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwTDE5MiAyNDIuNyA1NC42IDEwNS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwTDMyMCAyMDUuMyA0NjYuNyAzNTJIMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1RyZW5kVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMjg4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIwNS4zTDM0Mi42IDM3NC42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMEwxOTIgMjY5LjMgNTQuNiA0MDYuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsMTYwLTE2MGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMEwzMjAgMzA2LjcgNDY2LjcgMTYwSDM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dUdXJuRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA2NEMxNC4zIDY0IDAgNDkuNyAwIDMyUzE0LjMgMCAzMiAwbDk2IDBjNTMgMCA5NiA0MyA5NiA5NmwwIDMwNi43IDczLjQtNzMuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zbC0xMjggMTI4Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtMTI4LTEyOGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMEwxNjAgNDAyLjcgMTYwIDk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDMyIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1R1cm5VcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsOTYgMGM1MyAwIDk2LTQzIDk2LTk2bDAtMzA2LjcgNzMuNCA3My40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTEyOC0xMjhjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xMjggMTI4Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDE2MCAxMDkuMyAxNjAgNDE2YzAgMTcuNy0xNC4zIDMyLTMyIDMybC05NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1VwMTkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDUwLjcgMzhjOC4zIDYgMTMuMyAxNS43IDEzLjMgMjZ2OTZoMTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDMyIDM4NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgxNlYxMDguNGwtNS45IDJjLTE2LjggNS42LTM0LjktMy41LTQwLjUtMjAuMnMzLjUtMzQuOSAyMC4yLTQwLjVsNDgtMTZjOS44LTMuMyAyMC41LTEuNiAyOC44IDQuNHpNMTYwIDMyYzkgMCAxNy41IDMuOCAyMy42IDEwLjRsODggOTZjMTEuOSAxMyAxMS4xIDMzLjMtMiA0NS4ycy0zMy4zIDExLjEtNDUuMi0yTDE5MiAxNDYuM1Y0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTQ2LjNMOTUuNiAxODEuNmMtMTEuOSAxMy0zMi4yIDEzLjktNDUuMiAycy0xMy45LTMyLjItMi00NS4ybDg4LTk2QzE0Mi41IDM1LjggMTUxIDMyIDE2MCAzMnpNNDQ1LjcgMzY0LjlBMzIgMzIgMCAxIDAgNDE4LjMgMzA3YTMyIDMyIDAgMSAwIDI3LjQgNTcuOXptLTQwLjcgNTQuOUMzNjkuNiA0MDguNCAzNDQgMzc1LjIgMzQ0IDMzNmMwLTQ4LjYgMzkuNC04OCA4OC04OHM4OCAzOS40IDg4IDg4YzAgMjMuNS03LjUgNDYuMy0yMS41IDY1LjJMNDQ5LjcgNDY3Yy0xMC41IDE0LjItMzAuNiAxNy4yLTQ0LjggNi43cy0xNy4yLTMwLjYtNi43LTQ0LjhsNi44LTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dVcDkxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCAzMmM5IDAgMTcuNSAzLjggMjMuNiAxMC40bDg4IDk2YzExLjkgMTMgMTEuMSAzMy4zLTIgNDUuMnMtMzMuMyAxMS4xLTQ1LjItMkwxOTIgMTQ2LjNWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE0Ni4zTDk1LjYgMTgxLjZjLTExLjkgMTMtMzIuMiAxMy45LTQ1LjIgMnMtMTMuOS0zMi4yLTItNDUuMmw4OC05NkMxNDIuNSAzNS44IDE1MSAzMiAxNjAgMzJ6TTQ1MC43IDI5NGM4LjMgNiAxMy4zIDE1LjcgMTMuMyAyNnY5NmgxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0MzIgMzg0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDE2VjM2NC40bC01LjkgMmMtMTYuOCA1LjYtMzQuOS0zLjUtNDAuNS0yMC4yczMuNS0zNC45IDIwLjItNDAuNWw0OC0xNmM5LjgtMy4zIDIwLjUtMS42IDI4LjggNC40em0tNS0xNDUuMUEzMiAzMiAwIDEgMCA0MTguMyA5MWEzMiAzMiAwIDEgMCAyNy40IDU3Ljl6bS00MC43IDU0LjlDMzY5LjYgMTkyLjQgMzQ0IDE1OS4yIDM0NCAxMjBjMC00OC42IDM5LjQtODggODgtODhzODggMzkuNCA4OCA4OGMwIDIzLjUtNy41IDQ2LjMtMjEuNSA2NS4yTDQ0OS43IDI1MWMtMTAuNSAxNC4yLTMwLjYgMTcuMi00NC44IDYuN3MtMTcuMi0zMC42LTYuNy00NC44bDYuOC05LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VXBBWiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODMuNiA0Mi40QzE3Ny41IDM1LjggMTY5IDMyIDE2MCAzMnMtMTcuNSAzLjgtMjMuNiAxMC40bC04OCA5NmMtMTEuOSAxMy0xMS4xIDMzLjMgMiA0NS4yczMzLjMgMTEuMSA0NS4yLTJMMTI4IDE0Ni4zVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE0Ni4zbDMyLjQgMzUuNGMxMS45IDEzIDMyLjIgMTMuOSA0NS4yIDJzMTMuOS0zMi4yIDItNDUuMmwtODgtOTZ6TTMyMCAzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNTAuN2wtNzMuNCA3My40Yy05LjIgOS4yLTExLjkgMjIuOS02LjkgMzQuOXMxNi42IDE5LjggMjkuNiAxOS44SDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0MjkuM2w3My40LTczLjRjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlzLTE2LjYtMTkuOC0yOS42LTE5LjhIMzUyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNNDE2IDMyYy0xMi4xIDAtMjMuMiA2LjgtMjguNiAxNy43bC02NCAxMjgtMTYgMzJjLTcuOSAxNS44LTEuNSAzNSAxNC4zIDQyLjlzMzUgMS41IDQyLjktMTQuM2w3LjItMTQuM2g4OC40bDcuMiAxNC4zYzcuOSAxNS44IDI3LjEgMjIuMiA0Mi45IDE0LjNzMjIuMi0yNy4xIDE0LjMtNDIuOWwtMTYtMzItNjQtMTI4QzQzOS4yIDM4LjggNDI4LjEgMzIgNDE2IDMyek0zOTUuOCAxNzZMNDE2IDEzNS42IDQzNi4yIDE3NkgzOTUuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dVcEZyb21CcmFja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ni42IDkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTEyOCAxMjhjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTkyIDEwOS4zIDE5MiAzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTIxMC43IDczLjQgNzMuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC0xMjgtMTI4ek02NCAzNTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA2NGMwIDUzIDQzIDk2IDk2IDk2bDI1NiAwYzUzIDAgOTYtNDMgOTYtOTZsMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDk2IDQ0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dVcEZyb21Hcm91bmRXYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjEwOS4zbDI1LjQgMjUuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC04MC04MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTgwIDgwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDI1NiAxMDkuM1YzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJ6bS0xOC41IDY5LjlDMjQ3IDQzNy40IDIxOS41IDQ0OCAxOTIgNDQ4Yy0yNi45IDAtNTUuMy0xMC44LTc3LjQtMjYuMWwwIDBjLTExLjktOC41LTI4LjEtNy44LTM5LjIgMS43Yy0xNC40IDExLjktMzIuNSAyMS01MC42IDI1LjJjLTE3LjIgNC0yNy45IDIxLjItMjMuOSAzOC40czIxLjIgMjcuOSAzOC40IDIzLjljMjQuNS01LjcgNDQuOS0xNi41IDU4LjItMjVDMTI2LjUgNTAxLjcgMTU5IDUxMiAxOTIgNTEyYzMxLjkgMCA2MC42LTkuOSA4MC40LTE4LjljNS44LTIuNyAxMS4xLTUuMyAxNS42LTcuN2M0LjUgMi40IDkuNyA1LjEgMTUuNiA3LjdjMTkuOCA5IDQ4LjUgMTguOSA4MC40IDE4LjljMzMgMCA2NS41LTEwLjMgOTQuNS0yNS44YzEzLjQgOC40IDMzLjcgMTkuMyA1OC4yIDI1YzE3LjIgNCAzNC40LTYuNyAzOC40LTIzLjlzLTYuNy0zNC40LTIzLjktMzguNGMtMTguMS00LjItMzYuMi0xMy4zLTUwLjYtMjUuMmMtMTEuMS05LjQtMjcuMy0xMC4xLTM5LjItMS43bDAgMEM0MzkuNCA0MzcuMiA0MTAuOSA0NDggMzg0IDQ0OGMtMjcuNSAwLTU1LTEwLjYtNzcuNS0yNi4xYy0xMS4xLTcuOS0yNS45LTcuOS0zNyAwek0xOTIgMTkySDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OFY0MjVjNS4zLTMuMSAxMS4yLTUuNCAxNy41LTYuOWMxMy4xLTMuMSAyNi43LTkuOCAzNy4zLTE4LjZjMjIuMi0xOC43IDU0LjMtMjAuMSA3OC4xLTMuNGMxOCAxMi40IDQwLjEgMjAuMyA1OS4xIDIwLjNWMTkyem0zODQgNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzg0VjQxNi41aDBjMTkgMCA0MS4yLTcuOSA1OS4yLTIwLjNjMjMuOC0xNi43IDU1LjgtMTUuMyA3OC4xIDMuNGMxMC42IDguOCAyNC4yIDE1LjYgMzcuMyAxOC42YzYuMyAxLjUgMTIuMSAzLjggMTcuNSA2LjlWMjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1VwRnJvbVdhdGVyUHVtcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgMEM4NS41IDAgNjQgMjEuNSA2NCA0OFYyNTZINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djk2YzAgOCAyIDE1LjYgNS40IDIyLjJjMy44LTEuNyA3LjgtMy4xIDEyLTQuMWMxMy4xLTMuMSAyNi43LTkuOCAzNy4zLTE4LjZjMjIuMi0xOC43IDU0LjMtMjAuMSA3OC4xLTMuNGMxOCAxMi40IDQwLjEgMjAuMyA1OS4yIDIwLjNjMjEuMSAwIDQyLTguNSA1OS4yLTIwLjNjMjIuMS0xNS41IDUxLjYtMTUuNSA3My43IDBjMTguNCAxMi43IDM5LjYgMjAuMyA1OS4yIDIwLjNjMTkgMCA0MS4yLTcuOSA1OS4yLTIwLjNjMjMuOC0xNi43IDU1LjgtMTUuMyA3OC4xIDMuNGMxMC42IDguOCAyNC4yIDE1LjYgMzcuMyAxOC42YzQuMiAxIDguMiAyLjQgMTIgNC4xQzU3NCA0MTUuNiA1NzYgNDA4IDU3NiA0MDBWMzA0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4MGwwLTE0Ni43IDI1LjQgMjUuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC04MC04MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTgwIDgwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDQxNiAxMDkuMyA0MTYgMjU2SDI4OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEgxMTJ6TTMwNi41IDQyMS45Yy0xMS4xLTcuOS0yNS45LTcuOS0zNyAwQzI0NyA0MzcuNCAyMTkuNSA0NDggMTkyIDQ0OGMtMjYuOSAwLTU1LjMtMTAuOC03Ny40LTI2LjFsMCAwYy0xMS45LTguNS0yOC4xLTcuOC0zOS4yIDEuN2MtMTQuNCAxMS45LTMyLjUgMjEtNTAuNiAyNS4yYy0xNy4yIDQtMjcuOSAyMS4yLTIzLjkgMzguNHMyMS4yIDI3LjkgMzguNCAyMy45YzI0LjUtNS43IDQ0LjktMTYuNSA1OC4yLTI1QzEyNi41IDUwMS43IDE1OSA1MTIgMTkyIDUxMmMzMS45IDAgNjAuNi05LjkgODAuNC0xOC45YzUuOC0yLjcgMTEuMS01LjMgMTUuNi03LjdjNC41IDIuNCA5LjcgNS4xIDE1LjYgNy43YzE5LjggOSA0OC41IDE4LjkgODAuNCAxOC45YzMzIDAgNjUuNS0xMC4zIDk0LjUtMjUuOGMxMy40IDguNCAzMy43IDE5LjMgNTguMiAyNWMxNy4yIDQgMzQuNC02LjcgMzguNC0yMy45cy02LjctMzQuNC0yMy45LTM4LjRjLTE4LjEtNC4yLTM2LjItMTMuMy01MC42LTI1LjJjLTExLjEtOS40LTI3LjMtMTAuMS0zOS4yLTEuN2wwIDBDNDM5LjQgNDM3LjIgNDEwLjkgNDQ4IDM4NCA0NDhjLTI3LjUgMC01NS0xMC42LTc3LjUtMjYuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dVcExvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE0LjYgOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTI4IDEyOGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwxNjAgMTA5LjNWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTA5LjNsNzMuNCA3My40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTEyOC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VXBSaWdodERvdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoNTAuN0w5LjQgMjY1LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMjU2IDEwOS4zVjE2MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDE2MHpNNTc2IDgwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTQ0OCAyMDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNNDAwIDM4NGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTQ4IDgwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6bTEyOCAwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTI3MiAzODRhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em00OCA4MGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0xNDQgNTEyYTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNNTc2IDMzNmE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwem0tNDgtODBhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1VwUmlnaHRGcm9tU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDgyLjdMMjAxLjQgMjY1LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMNDQ4IDEwOS4zVjE5MmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyMHpNODAgMzJDMzUuOCAzMiAwIDY3LjggMCAxMTJWNDMyYzAgNDQuMiAzNS44IDgwIDgwIDgwSDQwMGM0NC4yIDAgODAtMzUuOCA4MC04MFYzMjBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWNDMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZIMTkyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1VwU2hvcnRXaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MS42IDQyLjRDMTQ1LjUgMzUuOCAxMzcgMzIgMTI4IDMycy0xNy41IDMuOC0yMy42IDEwLjRsLTg4IDk2Yy0xMS45IDEzLTExLjEgMzMuMyAyIDQ1LjJzMzMuMyAxMS4xIDQ1LjItMkw5NiAxNDYuM1Y0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxNDYuM2wzMi40IDM1LjRjMTEuOSAxMyAzMi4yIDEzLjkgNDUuMiAyczEzLjktMzIuMiAyLTQ1LjJsLTg4LTk2ek0zMjAgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwem0wIDEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjB6bTAgMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjB6bTAgMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VXBXaWRlU2hvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUxLjYgNDIuNEMxNDUuNSAzNS44IDEzNyAzMiAxMjggMzJzLTE3LjUgMy44LTIzLjYgMTAuNGwtODggOTZjLTExLjkgMTMtMTEuMSAzMy4zIDIgNDUuMnMzMy4zIDExLjEgNDUuMi0yTDk2IDE0Ni4zVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE0Ni4zbDMyLjQgMzUuNGMxMS45IDEzIDMyLjIgMTMuOSA0NS4yIDJzMTMuOS0zMi4yIDItNDUuMmwtODgtOTZ6TTMyMCA0ODBoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyem0wLTEyOGg5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6bTAtMTI4SDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6bTAtMTI4SDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VXBaQSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODMuNiA0Mi40QzE3Ny41IDM1LjggMTY5IDMyIDE2MCAzMnMtMTcuNSAzLjgtMjMuNiAxMC40bC04OCA5NmMtMTEuOSAxMy0xMS4xIDMzLjMgMiA0NS4yczMzLjMgMTEuMSA0NS4yLTJMMTI4IDE0Ni4zVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE0Ni4zbDMyLjQgMzUuNGMxMS45IDEzIDMyLjIgMTMuOSA0NS4yIDJzMTMuOS0zMi4yIDItNDUuMmwtODgtOTZ6TTMyMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg1MC43bC03My40IDczLjRjLTkuMiA5LjItMTEuOSAyMi45LTYuOSAzNC45czE2LjYgMTkuOCAyOS42IDE5LjhINDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQyOS4zbDczLjQtNzMuNGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOXMtMTYuNi0xOS44LTI5LjYtMTkuOEgzNTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem05NiAxOTJjLTEyLjEgMC0yMy4yIDYuOC0yOC42IDE3LjdsLTY0IDEyOC0xNiAzMmMtNy45IDE1LjgtMS41IDM1IDE0LjMgNDIuOXMzNSAxLjUgNDIuOS0xNC4zbDcuMi0xNC4zaDg4LjRsNy4yIDE0LjNjNy45IDE1LjggMjcuMSAyMi4yIDQyLjkgMTQuM3MyMi4yLTI3LjEgMTQuMy00Mi45bC0xNi0zMi02NC0xMjhDNDM5LjIgMjYyLjggNDI4LjEgMjU2IDQxNiAyNTZ6TTM5NS44IDQwMEw0MTYgMzU5LjYgNDM2LjIgNDAwSDM5NS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNC42IDQxLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xNjAgMTYwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDE2MCAxNDEuMlY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxNDEuMkwzMjkuNCAyNDYuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC0xNjAtMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NEb3duVG9MaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCA0MTZMMzIgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDUxMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyem0yMi42LTEzNy40YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDQ4MCAyNzQuNyA0ODAgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAyMTAuNy00MS40LTQxLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDk2IDk2YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDk2LTk2em0tMzIwLTQ1LjNjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwTDE2MCAyNzQuNyAxNjAgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAyMTAuN0w1NC42IDIzMy40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2w5NiA5NmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw5Ni05NmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzRG93blRvUGVvcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNFYxNDIuMUw5NyAxMTljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNjQgNjRjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsNjQtNjRjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtMjMgMjNWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjR6TTM2MCAyMDBhNDAgNDAgMCAxIDAgLTgwIDAgNDAgNDAgMCAxIDAgODAgMHpNMTg0IDI5NmE0MCA0MCAwIDEgMCAtODAgMCA0MCA0MCAwIDEgMCA4MCAwem0zMTIgNDBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwek0yMDAgNDQxLjVsMjYuOSA0OS45YzYuMyAxMS43IDIwLjggMTYgMzIuNSA5LjhzMTYtMjAuOCA5LjgtMzIuNWwtMzYuMy02Ny41YzEuNy0xLjcgMy4yLTMuNiA0LjMtNS44TDI2NCAzNDUuNVY0MDBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzQ1LjVsMjYuOSA0OS45YzEuMiAyLjIgMi42IDQuMSA0LjMgNS44bC0zNi4zIDY3LjVjLTYuMyAxMS43LTEuOSAyNi4yIDkuOCAzMi41czI2LjIgMS45IDMyLjUtOS44TDQ0MCA0NDEuNVY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDQxLjVsMjYuOSA0OS45YzYuMyAxMS43IDIwLjggMTYgMzIuNSA5LjhzMTYtMjAuOCA5LjgtMzIuNWwtMzcuOS03MC4zYy0xNS4zLTI4LjUtNDUuMS00Ni4zLTc3LjUtNDYuM0g0ODYuMmMtMTYuMyAwLTMxLjkgNC41LTQ1LjQgMTIuNmwtMzMuNi02Mi4zYy0xNS4zLTI4LjUtNDUuMS00Ni4zLTc3LjUtNDYuM0gzMTAuMmMtMzIuNCAwLTYyLjEgMTcuOC03Ny41IDQ2LjNsLTMzLjYgNjIuM2MtMTMuNS04LjEtMjkuMS0xMi42LTQ1LjQtMTIuNkgxMzQuMmMtMzIuNCAwLTYyLjEgMTcuOC03Ny41IDQ2LjNMMTguOSA0NjguNmMtNi4zIDExLjctMS45IDI2LjIgOS44IDMyLjVzMjYuMiAxLjkgMzIuNS05LjhMODggNDQxLjVWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjQ0MS41ek00MTUgMTUzbDY0IDY0YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDY0LTY0YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTIzIDIzVjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjE0Mi4xbC0yMy0yM2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzTGVmdFJpZ2h0VG9MaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMzIwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjk2QzAgNzguMyAxNC4zIDY0IDMyIDY0em0yMTQuNiA3My40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zTDIwNS4zIDIyNGwyMjkuNSAwLTQxLjQtNDEuNGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMGw5NiA5NmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtOTYgOTZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDQzNC43IDI4OGwtMjI5LjUgMCA0MS40IDQxLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBsLTk2LTk2Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM2w5Ni05NmMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHpNNjQwIDk2VjQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NMZWZ0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA2LjYgMzc0LjZsOTYtOTZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTk2LTk2Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0w0MDIuNyAyMjRsLTI5My41IDAgNDEuNC00MS40YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC05NiA5NmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsOTYgOTZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wxMDkuMyAyODhsMjkzLjUgMC00MS40IDQxLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c1JvdGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDUuMSAyMDIuNmM3LjctMjEuOCAyMC4yLTQyLjMgMzcuOC01OS44YzYyLjUtNjIuNSAxNjMuOC02Mi41IDIyNi4zIDBMMzg2LjMgMTYwSDM1MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0NjMuNWMwIDAgMCAwIDAgMGguNGMxNy43IDAgMzItMTQuMyAzMi0zMlY4MGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnYzNS4yTDQxNC40IDk3LjZjLTg3LjUtODcuNS0yMjkuMy04Ny41LTMxNi44IDBDNzMuMiAxMjIgNTUuNiAxNTAuNyA0NC44IDE4MS40Yy01LjkgMTYuNyAyLjkgMzQuOSAxOS41IDQwLjhzMzQuOS0yLjkgNDAuOC0xOS41ek0zOSAyODkuM2MtNSAxLjUtOS44IDQuMi0xMy43IDguMmMtNCA0LTYuNyA4LjgtOC4xIDE0Yy0uMyAxLjItLjYgMi41LS44IDMuOGMtLjMgMS43LS40IDMuNC0uNCA1LjFWNDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzk2LjlsMTcuNiAxNy41IDAgMGM4Ny41IDg3LjQgMjI5LjMgODcuNCAzMTYuNyAwYzI0LjQtMjQuNCA0Mi4xLTUzLjEgNTIuOS04My43YzUuOS0xNi43LTIuOS0zNC45LTE5LjUtNDAuOHMtMzQuOSAyLjktNDAuOCAxOS41Yy03LjcgMjEuOC0yMC4yIDQyLjMtMzcuOCA1OS44Yy02Mi41IDYyLjUtMTYzLjggNjIuNS0yMjYuMyAwbC0uMS0uMUwxMjUuNiAzNTJIMTYwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ4LjRjLTEuNiAwLTMuMiAuMS00LjggLjNzLTMuMSAuNS00LjYgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzU3BpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOTZjMzguNCAwIDczLjcgMTMuNSAxMDEuMyAzNi4xbC0zMi42IDMyLjZjLTQuNiA0LjYtNS45IDExLjUtMy41IDE3LjRzOC4zIDkuOSAxNC44IDkuOUg0NDhjOC44IDAgMTYtNy4yIDE2LTE2VjY0YzAtNi41LTMuOS0xMi4zLTkuOS0xNC44cy0xMi45LTEuMS0xNy40IDMuNWwtMzQgMzRDMzYzLjQgNTIuNiAzMTIuMSAzMiAyNTYgMzJjLTEwLjkgMC0yMS41IC44LTMyIDIuM1Y5OS4yYzEwLjMtMi4xIDIxLTMuMiAzMi0zLjJ6TTEzMi4xIDE1NC43bDMyLjYgMzIuNmM0LjYgNC42IDExLjUgNS45IDE3LjQgMy41czkuOS04LjMgOS45LTE0LjhWNjRjMC04LjgtNy4yLTE2LTE2LTE2SDY0Yy02LjUgMC0xMi4zIDMuOS0xNC44IDkuOXMtMS4xIDEyLjkgMy41IDE3LjRsMzQgMzRDNTIuNiAxNDguNiAzMiAxOTkuOSAzMiAyNTZjMCAxMC45IC44IDIxLjUgMi4zIDMySDk5LjJjLTIuMS0xMC4zLTMuMi0yMS0zLjItMzJjMC0zOC40IDEzLjUtNzMuNyAzNi4xLTEwMS4zek00NzcuNyAyMjRINDEyLjhjMi4xIDEwLjMgMy4yIDIxIDMuMiAzMmMwIDM4LjQtMTMuNSA3My43LTM2LjEgMTAxLjNsLTMyLjYtMzIuNmMtNC42LTQuNi0xMS41LTUuOS0xNy40LTMuNXMtOS45IDguMy05LjkgMTQuOFY0NDhjMCA4LjggNy4yIDE2IDE2IDE2SDQ0OGM2LjUgMCAxMi4zLTMuOSAxNC44LTkuOXMxLjEtMTIuOS0zLjUtMTcuNGwtMzQtMzRDNDU5LjQgMzYzLjQgNDgwIDMxMi4xIDQ4MCAyNTZjMC0xMC45LS44LTIxLjUtMi4zLTMyek0yNTYgNDE2Yy0zOC40IDAtNzMuNy0xMy41LTEwMS4zLTM2LjFsMzIuNi0zMi42YzQuNi00LjYgNS45LTExLjUgMy41LTE3LjRzLTguMy05LjktMTQuOC05LjlINjRjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDExMmMwIDYuNSAzLjkgMTIuMyA5LjkgMTQuOHMxMi45IDEuMSAxNy40LTMuNWwzNC0zNEMxNDguNiA0NTkuNCAxOTkuOSA0ODAgMjU2IDQ4MGMxMC45IDAgMjEuNS0uOCAzMi0yLjNWNDEyLjhjLTEwLjMgMi4xLTIxIDMuMi0zMiAzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c1NwbGl0VXBBbmRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ni42IDE1MC42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2w5Ni05NmMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGw5NiA5NmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzNTIgMTA5LjNWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0aDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQxNmMtNzAuNyAwLTEyOC01Ny4zLTEyOC0xMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMTA5LjNsNDEuNCA0MS40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwbC05Ni05NmMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNsOTYtOTZjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM0wxMDkuMyAyNTZIMjI0YzIzLjMgMCA0NS4yIDYuMiA2NCAxNy4xVjEwOS4zbC00MS40IDQxLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c1RvQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNCA5LjRDMjEuOS0zLjEgNDIuMS0zLjEgNTQuNiA5LjRMMTYwIDExNC43Vjk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2OTZjMCA0LjMtLjkgOC41LTIuNCAxMi4yYy0xLjYgMy43LTMuOCA3LjMtNi45IDEwLjNsLS4xIC4xYy0zLjEgMy02LjYgNS4zLTEwLjMgNi45Yy0zLjggMS42LTcuOSAyLjQtMTIuMiAyLjRIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoMTguN0w5LjQgNTQuNkMtMy4xIDQyLjEtMy4xIDIxLjkgOS40IDkuNHpNMjU2IDI1NmE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTExNC43IDM1Mkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg5NiAwbC4xIDBjOC44IDAgMTYuNyAzLjYgMjIuNSA5LjNsLjEgLjFjMyAzLjEgNS4zIDYuNiA2LjkgMTAuM2MxLjYgMy44IDIuNCA3LjkgMi40IDEyLjJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzk3LjNMNTQuNiA1MDIuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMTE0LjcgMzUyek00MTYgOTZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnYxOC43TDU4NS40IDkuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zTDUyNS4zIDE2MEg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDQ4Yy04LjggMC0xNi44LTMuNi0yMi42LTkuM2wtLjEtLjFjLTMtMy4xLTUuMy02LjYtNi45LTEwLjNzLTIuNC03LjgtMi40LTEyLjJsMC0uMXYwVjk2ek01MjUuMyAzNTJMNjMwLjYgNDU3LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMNDgwIDM5Ny4zVjQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMjB2MGMwIDAgMC0uMSAwLS4xYzAtNC4zIC45LTguNCAyLjQtMTIuMmMxLjYtMy44IDMuOS03LjMgNi45LTEwLjRjNS44LTUuOCAxMy43LTkuMyAyMi41LTkuNGMwIDAgLjEgMCAuMSAwaDAgOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINTI1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c1RvRG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY0aDMyYzEyLjkgMCAyNC42IDcuOCAyOS42IDE5LjhzMi4yIDI1LjctNi45IDM0LjlsLTY0IDY0Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtNjQtNjRjLTkuMi05LjItMTEuOS0yMi45LTYuOS0zNC45czE2LjYtMTkuOCAyOS42LTE5LjhoMzJWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTE2OS40IDM5My40bDY0LTY0YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDY0IDY0YzkuMiA5LjIgMTEuOSAyMi45IDYuOSAzNC45cy0xNi42IDE5LjgtMjkuNiAxOS44SDI4OHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDhIMTkyYy0xMi45IDAtMjQuNi03LjgtMjkuNi0xOS44cy0yLjItMjUuNyA2LjktMzQuOXpNMzIgMjI0SDY0VjE5MmMwLTEyLjkgNy44LTI0LjYgMTkuOC0yOS42czI1LjctMi4yIDM0LjkgNi45bDY0IDY0YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC02NCA2NGMtOS4yIDkuMi0yMi45IDExLjktMzQuOSA2LjlzLTE5LjgtMTYuNi0xOS44LTI5LjZWMjg4SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyem0yOTcuNCA1NC42Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM2w2NC02NGM5LjItOS4yIDIyLjktMTEuOSAzNC45LTYuOXMxOS44IDE2LjYgMTkuOCAyOS42djMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQ0OHYzMmMwIDEyLjktNy44IDI0LjYtMTkuOCAyOS42cy0yNS43IDIuMi0zNC45LTYuOWwtNjQtNjR6TTI1NiAyMjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NUb0V5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxNUMyNC40IDUuNyAzOS42IDUuNyA0OSAxNWw2MyA2M1Y0MGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djk2YzAgMTMuMy0xMC43IDI0LTI0IDI0SDQwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0SDc4LjFMMTUgNDlDNS43IDM5LjYgNS43IDI0LjQgMTUgMTV6TTEzMy41IDI0My45QzE1OC42IDE5My42IDIyMi43IDExMiAzMjAgMTEyczE2MS40IDgxLjYgMTg2LjUgMTMxLjljMy44IDcuNiAzLjggMTYuNSAwIDI0LjJDNDgxLjQgMzE4LjQgNDE3LjMgNDAwIDMyMCA0MDBzLTE2MS40LTgxLjYtMTg2LjUtMTMxLjljLTMuOC03LjYtMy44LTE2LjUgMC0yNC4yek0zMjAgMzIwYTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4ek01OTEgMTVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC02MyA2M0g2MDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINTA0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFY0MGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0Vjc4LjFsNjMtNjN6TTE1IDQ5N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsNjMtNjNINDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjR2OTZjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWNDMzLjlMNDkgNDk3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHptNTc2IDBsLTYzLTYzVjQ3MmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYzNzZjMC0xMy4zIDEwLjctMjQgMjQtMjRoOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINTYxLjlsNjMgNjNjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzVHVyblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5Ny40IDkuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGw5NiA5NmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtOTYgOTZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDMzOC43IDE2MEgxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0djMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIyNEMwIDE1My4zIDU3LjMgOTYgMTI4IDk2SDMzOC43TDI5Ny40IDU0LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zem0tOTYgMjU2YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDk2IDk2YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC05NiA5NmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMjQyLjcgNDE2SDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDhjMC01MyA0My05NiA5Ni05NkgyNDIuN2wtNDEuNC00MS40Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzVHVyblRvRG90cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDkuNCAyNS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNMMjY5LjMgOTYgNDE2IDk2YzUzIDAgOTYgNDMgOTYgOTZ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMybC0xNDYuNyAwIDI1LjQgMjUuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMGwtODAtODBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDgwLTgwem0xMy4zIDI1Nmw4MCA4MGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtODAgODBjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDI0Mi43IDQxNiA5NiA0MTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OGMwLTUzIDQzLTk2IDk2LTk2bDE0Ni43IDAtMjUuNC0yNS40Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwek0zODQgMzg0YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNNjQgMTkyQTY0IDY0IDAgMSAxIDY0IDY0YTY0IDY0IDAgMSAxIDAgMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NVcERvd25MZWZ0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc4LjYgOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtNjQgNjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsOS40LTkuNFYyMjRIMTA5LjNsOS40LTkuNGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtNjQgNjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDY0IDY0YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTkuNC05LjRIMjI0VjQwMi43bC05LjQtOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2w2NCA2NGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw2NC02NGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtOS40IDkuNFYyODhINDAyLjdsLTkuNCA5LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsNjQtNjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTY0LTY0Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2w5LjQgOS40SDI4OFYxMDkuM2w5LjQgOS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NVcERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgyLjYgOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtOTYgOTZjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTI4IDEwOS4zVjQwMi43TDg2LjYgMzYxLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDk2IDk2YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDk2LTk2YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDE5MiA0MDIuN1YxMDkuM2w0MS40IDQxLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93c1VwVG9MaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDk2bDUxMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRTMTQuMyA5NiAzMiA5NnpNOS40IDIzMy40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDk2IDIzNy4zIDk2IDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjEwLjcgNDEuNCA0MS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTk2LTk2Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtOTYgOTZ6bTMyMCA0NS4zYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwTDQxNiAyMzcuMyA0MTYgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yMTAuNyA0MS40IDQxLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC05NiA5NmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFzdGVyaXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlYxOTkuNWwxMTEuNS02Ni45YzE1LjItOS4xIDM0LjgtNC4yIDQzLjkgMTFzNC4yIDM0LjgtMTEgNDMuOUwyNTQuMiAyNTZsMTE0LjMgNjguNmMxNS4yIDkuMSAyMC4xIDI4LjcgMTEgNDMuOXMtMjguNyAyMC4xLTQzLjkgMTFMMjI0IDMxMi41VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMTIuNUw0OC41IDM3OS40Yy0xNS4yIDkuMS0zNC44IDQuMi00My45LTExcy00LjItMzQuOCAxMS00My45TDEyOS44IDI1NiAxNS41IDE4Ny40Yy0xNS4yLTkuMS0yMC4xLTI4LjctMTEtNDMuOXMyOC43LTIwLjEgNDMuOS0xMUwxNjAgMTk5LjVWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA2NEMxNTAgNjQgNjQgMTUwIDY0IDI1NnM4NiAxOTIgMTkyIDE5MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkMxMTQuNiA1MTIgMCAzOTcuNCAwIDI1NlMxMTQuNiAwIDI1NiAwUzUxMiAxMTQuNiA1MTIgMjU2djMyYzAgNTMtNDMgOTYtOTYgOTZjLTI5LjMgMC01NS42LTEzLjItNzMuMi0zMy45QzMyMCAzNzEuMSAyODkuNSAzODQgMjU2IDM4NGMtNzAuNyAwLTEyOC01Ny4zLTEyOC0xMjhzNTcuMy0xMjggMTI4LTEyOGMyNy45IDAgNTMuNyA4LjkgNzQuNyAyNC4xYzUuNy01IDEzLjEtOC4xIDIxLjMtOC4xYzE3LjcgMCAzMiAxNC4zIDMyIDMydjgwIDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjU2YzAtMTA2LTg2LTE5Mi0xOTItMTkyem02NCAxOTJhNjQgNjQgMCAxIDAgLTEyOCAwIDY0IDY0IDAgMSAwIDEyOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdG9tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAzOTguOGMtMTEuOCA1LjEtMjMuNCA5LjctMzQuOSAxMy41YzE2LjcgMzMuOCAzMSAzNS43IDM0LjkgMzUuN3MxOC4xLTEuOSAzNC45LTM1LjdjLTExLjQtMy45LTIzLjEtOC40LTM0LjktMTMuNXpNNDQ2IDI1NmMzMyA0NS4yIDQ0LjMgOTAuOSAyMy42IDEyOGMtMjAuMiAzNi4zLTYyLjUgNDkuMy0xMTUuMiA0My4yYy0yMiA1Mi4xLTU1LjYgODQuOC05OC40IDg0LjhzLTc2LjQtMzIuNy05OC40LTg0LjhjLTUyLjcgNi4xLTk1LTYuOC0xMTUuMi00My4yQzIxLjcgMzQ2LjkgMzMgMzAxLjIgNjYgMjU2Yy0zMy00NS4yLTQ0LjMtOTAuOS0yMy42LTEyOGMyMC4yLTM2LjMgNjIuNS00OS4zIDExNS4yLTQzLjJDMTc5LjYgMzIuNyAyMTMuMiAwIDI1NiAwczc2LjQgMzIuNyA5OC40IDg0LjhjNTIuNy02LjEgOTUgNi44IDExNS4yIDQzLjJjMjAuNyAzNy4xIDkuNCA4Mi44LTIzLjYgMTI4em0tNjUuOCA2Ny40Yy0xLjcgMTQuMi0zLjkgMjgtNi43IDQxLjJjMzEuOCAxLjQgMzguNi04LjcgNDAuMi0xMS43YzIuMy00LjIgNy0xNy45LTExLjktNDguMWMtNi44IDYuMy0xNCAxMi41LTIxLjYgMTguNnptLTYuNy0xNzUuOWMyLjggMTMuMSA1IDI2LjkgNi43IDQxLjJjNy42IDYuMSAxNC44IDEyLjMgMjEuNiAxOC42YzE4LjktMzAuMiAxNC4yLTQ0IDExLjktNDguMWMtMS42LTIuOS04LjQtMTMtNDAuMi0xMS43ek0yOTAuOSA5OS43QzI3NC4xIDY1LjkgMjU5LjkgNjQgMjU2IDY0cy0xOC4xIDEuOS0zNC45IDM1LjdjMTEuNCAzLjkgMjMuMSA4LjQgMzQuOSAxMy41YzExLjgtNS4xIDIzLjQtOS43IDM0LjktMTMuNXptLTE1OSA4OC45YzEuNy0xNC4zIDMuOS0yOCA2LjctNDEuMmMtMzEuOC0xLjQtMzguNiA4LjctNDAuMiAxMS43Yy0yLjMgNC4yLTcgMTcuOSAxMS45IDQ4LjFjNi44LTYuMyAxNC0xMi41IDIxLjYtMTguNnpNMTEwLjIgMzA0LjhDOTEuNCAzMzUgOTYgMzQ4LjcgOTguMyAzNTIuOWMxLjYgMi45IDguNCAxMyA0MC4yIDExLjdjLTIuOC0xMy4xLTUtMjYuOS02LjctNDEuMmMtNy42LTYuMS0xNC44LTEyLjMtMjEuNi0xOC42ek0zMzYgMjU2YTgwIDgwIDAgMSAwIC0xNjAgMCA4MCA4MCAwIDEgMCAxNjAgMHptLTgwLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXVkaW9EZXNjcmlwdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTIxMy41IDE3My4zbDcyIDE0NGM1LjkgMTEuOSAxLjEgMjYuMy0xMC43IDMyLjJzLTI2LjMgMS4xLTMyLjItMTAuN2wtOS40LTE4LjlIMTUwLjlsLTkuNCAxOC45Yy01LjkgMTEuOS0yMC4zIDE2LjctMzIuMiAxMC43cy0xNi43LTIwLjMtMTAuNy0zMi4ybDcyLTE0NGM0LjEtOC4xIDEyLjQtMTMuMyAyMS41LTEzLjNzMTcuNCA1LjEgMjEuNSAxMy4zem0tLjQgMTA2LjZMMTkyIDIzNy43bC0yMS4xIDQyLjJoNDIuMnpNMzA0IDE4NGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg1NmM1MyAwIDk2IDQzIDk2IDk2cy00MyA5Ni05NiA5NkgzMjhjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE4NHptNDggMjR2OTZoMzJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDhIMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdXN0cmFsU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTMuNSA1MS43QzI0OC42IDM5LjggMjM2LjkgMzIgMjI0IDMycy0yNC42IDcuOC0yOS41IDE5LjdMMTIyLjcgMjI0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDk2TDgyLjcgMzIwSDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDU2TDM0LjUgNDM1LjdjLTYuOCAxNi4zIC45IDM1IDE3LjIgNDEuOHMzNS0uOSA0MS44LTE3LjJMMTI1LjMgMzg0SDMyMi43bDMxLjggNzYuM2M2LjggMTYuMyAyNS41IDI0IDQxLjggMTcuMnMyNC0yNS41IDE3LjItNDEuOEwzOTIgMzg0aDI0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM2NS4zTDM1MiAyODhoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzI1LjNMMjUzLjUgNTEuN3pNMjU2IDIyNEgxOTJsMzItNzYuOEwyNTYgMjI0em0tOTAuNyA2NEgyODIuN0wyOTYgMzIwSDE1MmwxMy4zLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzMuOCA1LjVjMTEtNy4zIDI1LjQtNy4zIDM2LjQgMEwyMjggMTcuMmM2IDMuOSAxMyA1LjggMjAuMSA1LjRsMjEuMy0xLjNjMTMuMi0uOCAyNS42IDYuNCAzMS41IDE4LjJsOS42IDE5LjFjMy4yIDYuNCA4LjQgMTEuNSAxNC43IDE0LjdMMzQ0LjUgODNjMTEuOCA1LjkgMTkgMTguMyAxOC4yIDMxLjVsLTEuMyAyMS4zYy0uNCA3LjEgMS41IDE0LjIgNS40IDIwLjFsMTEuOCAxNy44YzcuMyAxMSA3LjMgMjUuNCAwIDM2LjRMMzY2LjggMjI4Yy0zLjkgNi01LjggMTMtNS40IDIwLjFsMS4zIDIxLjNjLjggMTMuMi02LjQgMjUuNi0xOC4yIDMxLjVsLTE5LjEgOS42Yy02LjQgMy4yLTExLjUgOC40LTE0LjcgMTQuN0wzMDEgMzQ0LjVjLTUuOSAxMS44LTE4LjMgMTktMzEuNSAxOC4ybC0yMS4zLTEuM2MtNy4xLS40LTE0LjIgMS41LTIwLjEgNS40bC0xNy44IDExLjhjLTExIDcuMy0yNS40IDcuMy0zNi40IDBMMTU2IDM2Ni44Yy02LTMuOS0xMy01LjgtMjAuMS01LjRsLTIxLjMgMS4zYy0xMy4yIC44LTI1LjYtNi40LTMxLjUtMTguMmwtOS42LTE5LjFjLTMuMi02LjQtOC40LTExLjUtMTQuNy0xNC43TDM5LjUgMzAxYy0xMS44LTUuOS0xOS0xOC4zLTE4LjItMzEuNWwxLjMtMjEuM2MuNC03LjEtMS41LTE0LjItNS40LTIwLjFMNS41IDIxMC4yYy03LjMtMTEtNy4zLTI1LjQgMC0zNi40TDE3LjIgMTU2YzMuOS02IDUuOC0xMyA1LjQtMjAuMWwtMS4zLTIxLjNjLS44LTEzLjIgNi40LTI1LjYgMTguMi0zMS41bDE5LjEtOS42QzY1IDcwLjIgNzAuMiA2NSA3My40IDU4LjZMODMgMzkuNWM1LjktMTEuOCAxOC4zLTE5IDMxLjUtMTguMmwyMS4zIDEuM2M3LjEgLjQgMTQuMi0xLjUgMjAuMS01LjRMMTczLjggNS41ek0yNzIgMTkyYTgwIDgwIDAgMSAwIC0xNjAgMCA4MCA4MCAwIDEgMCAxNjAgMHpNMS4zIDQ0MS44TDQ0LjQgMzM5LjNjLjIgLjEgLjMgLjIgLjQgLjRsOS42IDE5LjFjMTEuNyAyMy4yIDM2IDM3LjMgNjIgMzUuOGwyMS4zLTEuM2MuMiAwIC41IDAgLjcgLjJsMTcuOCAxMS44YzUuMSAzLjMgMTAuNSA1LjkgMTYuMSA3LjdsLTM3LjYgODkuM2MtMi4zIDUuNS03LjQgOS4yLTEzLjMgOS43cy0xMS42LTIuMi0xNC44LTcuMkw3NC40IDQ1NS41bC01Ni4xIDguM2MtNS43IC44LTExLjQtMS41LTE1LTZzLTQuMy0xMC43LTIuMS0xNnptMjQ4IDYwLjRMMjExLjcgNDEzYzUuNi0xLjggMTEtNC4zIDE2LjEtNy43bDE3LjgtMTEuOGMuMi0uMSAuNC0uMiAuNy0uMmwyMS4zIDEuM2MyNiAxLjUgNTAuMy0xMi42IDYyLTM1LjhsOS42LTE5LjFjLjEtLjIgLjItLjMgLjQtLjRsNDMuMiAxMDIuNWMyLjIgNS4zIDEuNCAxMS40LTIuMSAxNnMtOS4zIDYuOS0xNSA2bC01Ni4xLTguMy0zMi4yIDQ5LjJjLTMuMiA1LTguOSA3LjctMTQuOCA3LjJzLTExLTQuMy0xMy4zLTkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjI1NiA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMTkyYzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4YzAtNDYuNS0yNC44LTg3LjMtNjItMTA5LjdjMTguNy0yMi4zIDMwLTUxIDMwLTgyLjNjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhINjR6bTk2IDE5Mkg2NFY5Nmg5NmMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NHpNNjQgMjg4aDk2IDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0SDY0VjI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFieUNhcnJpYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAxOTJILjFDMi43IDExNy45IDQxLjMgNTIuOSA5OSAxNC4xYzEzLjMtOC45IDMwLjgtNC4zIDM5LjkgOC44TDI1NiAxOTJ6bTEyOC0zMmMwLTM1LjMgMjguNy02NCA2NC02NGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIgMHY2NGMwIDI1LjItNS44IDUwLjItMTcgNzMuNXMtMjcuOCA0NC41LTQ4LjYgNjIuM3MtNDUuNSAzMi03Mi43IDQxLjZTMjUzLjQgNDE2IDIyNCA0MTZzLTU4LjUtNS04NS43LTE0LjZzLTUxLjktMjMuOC03Mi43LTQxLjZzLTM3LjMtMzktNDguNi02Mi4zUzAgMjQ5LjIgMCAyMjRsMjI0IDAgMTYwIDBWMTYwek04MCA0MTZhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2em0yNDAgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFieSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTIgODhhNzIgNzIgMCAxIDEgMTQ0IDBBNzIgNzIgMCAxIDEgMTUyIDg4ek0zOS43IDE0NC41YzEzLTE3LjkgMzgtMjEuOCA1NS45LTguOEwxMzEuOCAxNjJjMjYuOCAxOS41IDU5LjEgMzAgOTIuMiAzMHM2NS40LTEwLjUgOTIuMi0zMGwzNi4yLTI2LjRjMTcuOS0xMyA0Mi45LTkgNTUuOSA4LjhzOSA0Mi45LTguOCA1NS45bC0zNi4yIDI2LjRjLTEzLjYgOS45LTI4LjEgMTguMi00My4zIDI1VjI4OEgxMjhWMjUxLjdjLTE1LjItNi43LTI5LjctMTUuMS00My4zLTI1TDQ4LjUgMjAwLjNjLTE3LjktMTMtMjEuOC0zOC04LjgtNTUuOXptODkuOCAxODQuOGw2MC42IDUzLTI2IDM3LjIgMjQuMyAyNC4zYzE1LjYgMTUuNiAxNS42IDQwLjkgMCA1Ni42cy00MC45IDE1LjYtNTYuNiAwbC00OC00OEM3MCA0MzguNiA2OC4xIDQxNyA3OS4yIDQwMS4xbDUwLjItNzEuOHptMTI4LjUgNTNsNjAuNi01MyA1MC4yIDcxLjhjMTEuMSAxNS45IDkuMiAzNy41LTQuNSA1MS4ybC00OCA0OGMtMTUuNiAxNS42LTQwLjkgMTUuNi01Ni42IDBzLTE1LjYtNDAuOSAwLTU2LjZMMjg0IDQxOS40bC0yNi0zNy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWNrd2FyZEZhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDkzLjYgNDQ1Yy0xMS4yIDUuMy0yNC41IDMuNi0zNC4xLTQuNEwyODggMjk3LjdWNDE2YzAgMTIuNC03LjIgMjMuNy0xOC40IDI5cy0yNC41IDMuNi0zNC4xLTQuNEw2NCAyOTcuN1Y0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWOTZDMCA3OC4zIDE0LjMgNjQgMzIgNjRzMzIgMTQuMyAzMiAzMlYyMTQuM0wyMzUuNSA3MS40YzkuNS03LjkgMjIuOC05LjcgMzQuMS00LjRTMjg4IDgzLjYgMjg4IDk2VjIxNC4zTDQ1OS41IDcxLjRjOS41LTcuOSAyMi44LTkuNyAzNC4xLTQuNFM1MTIgODMuNiA1MTIgOTZWNDE2YzAgMTIuNC03LjIgMjMuNy0xOC40IDI5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWNrd2FyZFN0ZXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY3LjUgNDQwLjZjOS41IDcuOSAyMi44IDkuNyAzNC4xIDQuNHMxOC40LTE2LjYgMTguNC0yOVY5NmMwLTEyLjQtNy4yLTIzLjctMTguNC0yOXMtMjQuNS0zLjYtMzQuMSA0LjRsLTE5MiAxNjBMNjQgMjQxVjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNzguMyAwIDk2VjQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI3MWwxMS41IDkuNiAxOTIgMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWNrd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTkuNSA0NDAuNmM5LjUgNy45IDIyLjggOS43IDM0LjEgNC40czE4LjQtMTYuNiAxOC40LTI5Vjk2YzAtMTIuNC03LjItMjMuNy0xOC40LTI5cy0yNC41LTMuNi0zNC4xIDQuNEwyODggMjE0LjNWMjU2djQxLjdMNDU5LjUgNDQwLjZ6TTI1NiAzNTJWMjU2IDEyOCA5NmMwLTEyLjQtNy4yLTIzLjctMTguNC0yOXMtMjQuNS0zLjYtMzQuMSA0LjRsLTE5MiAxNjBDNC4yIDIzNy41IDAgMjQ2LjUgMCAyNTZzNC4yIDE4LjUgMTEuNSAyNC42bDE5MiAxNjBjOS41IDcuOSAyMi44IDkuNyAzNC4xIDQuNHMxOC40LTE2LjYgMTguNC0yOVYzNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhY29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOS4yIDEuMmMxMS4yLTMuMiAyMy4yLS4xIDMxLjQgOC4xTDUxOCA1Ni43bC0yNi41IDcuOWMtNTggMTYuNi05OC4xIDM5LjYtMTI5LjYgNjcuNGMtMzEuMiAyNy41LTUzLjIgNTkuMS03NS4xIDkwLjlsLTIuMyAzLjNDMjQxLjYgMjg4LjcgMTk1IDM1Ni42IDcyLjggNDE3LjdMMzcuOSA0MzUuMiA5LjQgNDA2LjZjLTcuMy03LjMtMTAuNi0xNy42LTktMjcuOHM4LjEtMTguOSAxNy4zLTIzLjVDMTM2LjEgMjk2LjIgMTgwLjkgMjMxIDIyMy4zIDE2OS4zbDIuMy0zLjRjMjEuOC0zMS44IDQ0LjktNjQuOSA3Ny43LTkzLjljMzMuNC0yOS41IDc1LjgtNTMuNiAxMzUuOS03MC44ek02MS44IDQ1OWwyNS40LTEyLjdjMTI5LjUtNjQuNyAxNzkuOS0xMzguMSAyMjMuOC0yMDJsMi4yLTMuM2MyMi4xLTMyLjEgNDIuMS02MC41IDY5LjktODUuMWMyNy41LTI0LjMgNjMuNC00NS4yIDExNy4zLTYwLjZsMCAwIC4yLS4xIDQzLjEtMTIuOSAyMyAyM2M4IDggMTEuMiAxOS43IDguMyAzMC43cy0xMS4zIDE5LjYtMjIuMiAyMi43Yy01MS45IDE0LjgtODUuNiAzNC43LTExMS4xIDU3LjJjLTI2LjEgMjMtNDUuMSA0OS45LTY3LjMgODIuMWwtMi4yIDMuMkMzMjcuOCAzNjUuOSAyNzUuNSA0NDIgMTQyLjMgNTA4LjZjLTEyLjMgNi4yLTI3LjIgMy43LTM2LjktNkw2MS44IDQ1OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFjdGVyaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0LjkgLjdjLTkuNi0yLjctMTkuNSAyLjgtMjIuMyAxMi40bC00LjMgMTUuMmMtOC4zLS42LTE2LjggMC0yNS4yIDEuOWMtNy4zIDEuNy0xNC4zIDMuNS0yMS4xIDUuNWwtNS41LTEyLjdjLTMuOS05LjEtMTQuNS0xMy40LTIzLjYtOS41cy0xMy40IDE0LjUtOS41IDIzLjZsNC40IDEwLjRjLTE2LjYgNi43LTMxLjcgMTQuNC00NS40IDIyLjhMMTQ3IDYyYy01LjUtOC4zLTE2LjctMTAuNS0yNS01cy0xMC41IDE2LjctNSAyNWw2IDljLTEzLjcgMTEtMjUuNSAyMi44LTM1LjggMzQuOWwtMTAtOGMtNy44LTYuMi0xOS4xLTUtMjUuMyAyLjhzLTUgMTkuMSAyLjggMjUuM0w2NS45IDE1NWMtMS44IDIuOC0zLjUgNS43LTUuMSA4LjVjLTYuNiAxMS40LTExLjggMjIuNi0xNiAzM2wtOC0zLjJjLTkuMi0zLjctMTkuNyAuOC0yMy40IDEwcy44IDE5LjcgMTAgMjMuNGwxMC40IDQuMmMtLjIgLjgtLjQgMS41LS41IDIuM2MtMi4yIDkuMy0zLjQgMTcuMy00LjEgMjMuNGMtLjQgMy4xLS42IDUuNy0uOCA3LjhjLS4xIDEuMS0uMSAyLS4yIDIuOGwtLjEgMS4xIDAgLjUgMCAuMiAwIC4xYzAgMCAwIC4xIDI5LjEgMWwtLjEgMEwyOCAyNjkuM2MtLjEgMy4xIDAgNi4xIC4yIDkuMWwtMTUuMiA0LjNDMy41IDI4NS40LTIgMjk1LjQgLjcgMzA0LjlzMTIuNyAxNS4xIDIyLjMgMTIuNGwxNS42LTQuNWM3LjYgMTMuNiAxOC45IDI1IDMyLjYgMzIuNkw2Ni43IDM2MWMtMi43IDkuNiAyLjggMTkuNSAxMi40IDIyLjNzMTkuNS0yLjggMjIuMy0xMi40bDQuMy0xNS4yYzEuMiAuMSAyLjQgLjIgMy42IC4yYzE1LjYgLjUgMzAuMy0zLjMgNDMtMTAuMmw5IDljNyA3IDE4LjQgNyAyNS41IDBzNy0xOC40IDAtMjUuNWwtNy4yLTcuMmM5LjMtMTIuNiAxNS4yLTI3LjggMTYuMy00NC41bDcuMSAzYzkuMSAzLjkgMTkuNy0uMyAyMy42LTkuNXMtLjMtMTkuNy05LjUtMjMuNmwtOC42LTMuN2M2LjQtOS45IDE3LjMtMjIuNCAzNi45LTMzLjNsMS4zIDQuNGMyLjcgOS42IDEyLjcgMTUuMSAyMi4zIDEyLjRzMTUuMS0xMi43IDEyLjQtMjIuM2wtMi4zLTguMWMzLjgtMS4xIDcuNy0yLjEgMTEuOS0zLjFjMTEuNi0yLjcgMjIuMS03LjcgMzEuMS0xNC40bDcuMiA3LjJjNyA3IDE4LjQgNyAyNS41IDBzNy0xOC40IDAtMjUuNWwtOS05YzcuNi0xMy45IDExLjMtMzAuMSAxMC4xLTQ2LjZsMTUuMi00LjNjOS42LTIuNyAxNS4xLTEyLjcgMTIuNC0yMi4zUzM3MC42IDY0IDM2MSA2Ni43bC0xNS42IDQuNWMtNy43LTEzLjktMTkuMS0yNS4xLTMyLjYtMzIuNmw0LjUtMTUuNmMyLjctOS42LTIuOC0xOS41LTEyLjQtMjIuM3pNMTEyIDI3MmwtNDgtMS41IDAgMGMxMS43IC40IDI3LjMgLjkgNDggMS42em0xNi04MGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTY0LTQ4YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6TTMyMi43IDQ4OWMtMi43IDkuNiAyLjggMTkuNSAxMi40IDIyLjNzMTkuNS0yLjggMjIuMi0xMi40bDQuMy0xNS4yYzguMyAuNiAxNi44IDAgMjUuMi0xLjljNy4zLTEuNyAxNC4zLTMuNSAyMS4xLTUuNWw1LjUgMTIuN2MzLjkgOS4xIDE0LjUgMTMuNCAyMy42IDkuNXMxMy40LTE0LjUgOS41LTIzLjZsLTQuNC0xMC40YzE2LjYtNi43IDMxLjctMTQuNCA0NS40LTIyLjhMNDkzIDQ1MGM1LjUgOC4zIDE2LjcgMTAuNSAyNSA1czEwLjUtMTYuNyA1LTI1bC02LTljMTMuNy0xMSAyNS41LTIyLjggMzUuOC0zNC45bDEwIDhjNy44IDYuMiAxOS4xIDUgMjUuMy0yLjhzNS0xOS4xLTIuOC0yNS4zTDU3NC4xIDM1N2MxLjgtMi44IDMuNS01LjcgNS4xLTguNWM2LjYtMTEuNCAxMS44LTIyLjYgMTYtMzNsOCAzLjJjOS4yIDMuNyAxOS43LS44IDIzLjQtMTBzLS44LTE5LjctMTAtMjMuNGwtMTAuNC00LjJjLjItLjggLjQtMS41IC41LTIuM2MyLjItOS4zIDMuNC0xNy4zIDQuMS0yMy40Yy40LTMuMSAuNi01LjcgLjgtNy44Yy4xLTEuMSAuMS0yIC4yLTIuOGwuMS0xLjEgMC0uNSAwLS4yIDAtLjFjMCAwIDAtLjEtMjkuMS0xbC4xIDAgMjkuMSAuOWMuMS0zLjEgMC02LjEtLjItOS4xbDE1LjItNC4zYzkuNi0yLjcgMTUuMS0xMi43IDEyLjQtMjIuM3MtMTIuNy0xNS4xLTIyLjMtMTIuNGwtMTUuNiA0LjVjLTcuNi0xMy42LTE4LjktMjUtMzIuNi0zMi42bDQuNS0xNS42YzIuNy05LjYtMi44LTE5LjUtMTIuNC0yMi4zcy0xOS41IDIuOC0yMi4zIDEyLjRsLTQuMyAxNS4yYy0xLjItLjEtMi40LS4yLTMuNi0uMmMtMTUuNi0uNS0zMC4zIDMuMy00MyAxMC4ybC05LTljLTctNy0xOC40LTctMjUuNSAwcy03IDE4LjQgMCAyNS41bDcuMiA3LjJjLTkuMyAxMi42LTE1LjIgMjcuOC0xNi4zIDQ0LjVsLTcuMS0zYy05LjEtMy45LTE5LjcgLjMtMjMuNiA5LjVzLjMgMTkuNyA5LjUgMjMuNmw4LjYgMy43Yy02LjQgOS45LTE3LjMgMjIuNC0zNi45IDMzLjNsLTEuMy00LjRjLTIuNy05LjYtMTIuNy0xNS4xLTIyLjMtMTIuNHMtMTUuMSAxMi43LTEyLjQgMjIuM2wyLjMgOC4xYy0zLjggMS4xLTcuNyAyLjEtMTEuOSAzLjFjLTExLjYgMi43LTIyLjEgNy43LTMxLjEgMTQuNGwtNy4yLTcuMmMtNy03LTE4LjQtNy0yNS41IDBzLTcgMTguNCAwIDI1LjVsOSA5Yy03LjYgMTMuOS0xMS4zIDMwLjEtMTAuMSA0Ni42bC0xNS4yIDQuM2MtOS42IDIuNy0xNS4xIDEyLjctMTIuNCAyMi4yczEyLjcgMTUuMSAyMi4zIDEyLjRsMTUuNi00LjVjNy43IDEzLjkgMTkuMSAyNS4xIDMyLjYgMzIuNkwzMjIuNyA0ODl6TTU3NiAyNDEuNWwwIDBjLTExLjctLjQtMjcuMy0uOS00OC0xLjZsNDggMS41ek00NDggMzg0YTMyIDMyIDAgMSAxIC02NCAwIDMyIDMyIDAgMSAxIDY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhY3Rlcml1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjMuMSAzMC42YzMuNi0xMi43LTMuNy0yNi0xNi41LTI5LjdzLTI2IDMuNy0yOS43IDE2LjVsLTQuMiAxNC43Yy05LjgtLjQtMTkuOSAuNS0yOS45IDIuOGMtMTIuMSAyLjgtMjMuNyA1LjktMzQuOSA5LjRsLTUuOS0xMy43Yy01LjItMTIuMi0xOS4zLTE3LjgtMzEuNS0xMi42cy0xNy44IDE5LjMtMTIuNiAzMS41bDQuOSAxMS4zYy0yMiA5LjQtNDIgMjAuMS02MC4yIDMxLjhMMTk2IDgyLjdjLTcuNC0xMS0yMi4zLTE0LTMzLjMtNi43cy0xNCAyMi4zLTYuNyAzMy4zbDcuOCAxMS42Yy0xOCAxNS0zMy43IDMwLjgtNDcuMyA0Ny4xTDEwMyAxNTcuM2MtMTAuNC04LjMtMjUuNS02LjYtMzMuNyAzLjdzLTYuNiAyNS41IDMuNyAzMy43bDE1IDEyYy0yLjEgMy4yLTQuMSA2LjUtNiA5LjdjLTkuNCAxNS43LTE3IDMxLTIzLjIgNDUuM2wtOS45LTMuOWMtMTIuMy00LjktMjYuMyAxLjEtMzEuMiAxMy40czEuMSAyNi4zIDEzLjQgMzEuMmwxMS42IDQuNmMtLjMgMS4xLS42IDIuMS0uOSAzLjFjLTMuNSAxMi41LTUuNyAyMy4yLTcuMSAzMS4zYy0uNyA0LjEtMS4yIDcuNS0xLjYgMTAuM2MtLjIgMS40LS4zIDIuNi0uNCAzLjZsLS4xIDEuNC0uMSAuNiAwIC4zIDAgLjFjMCAwIDAgLjEgMzkuMiAzLjdsMCAwLTM5LjItMy42Yy0uNSA1LS42IDEwLS40IDE0LjlsLTE0LjcgNC4yQzQuNyAzODAuNi0yLjcgMzkzLjggLjkgNDA2LjZzMTYuOSAyMC4xIDI5LjcgMTYuNWwxMy44LTMuOWMxMC42IDIwLjcgMjcuNiAzNy44IDQ4LjUgNDguNWwtMy45IDEzLjdjLTMuNiAxMi43IDMuNyAyNiAxNi41IDI5LjdzMjYtMy43IDI5LjctMTYuNWw0LjItMTQuN2MyMy44IDEgNDYuMy01LjUgNjUuMS0xNy42TDIxNSA0NzNjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC0xMC42LTEwLjZjOS4xLTE0LjEgMTUuMS0zMC41IDE3LTQ4LjNsLjEtLjhjLjMtMS43IDEtNS4xIDIuMy05LjhsLjItLjggMTIuNiA1LjRjMTIuMiA1LjIgMjYuMy0uNCAzMS41LTEyLjZzLS40LTI2LjMtMTIuNi0zMS41bC0xMS4zLTQuOGM5LjktMTQuOSAyNC45LTMxLjYgNDguNi00NmwyLjEgNy41YzMuNiAxMi43IDE2LjkgMjAuMSAyOS43IDE2LjVzMjAuMS0xNi45IDE2LjUtMjkuN0wzNzEgMjU5LjJjNi45LTIuMiAxNC4zLTQuMyAyMi4yLTYuMWMxMi45LTMgMjQuNy04IDM1LjItMTQuOEw0MzkgMjQ5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtMTAuNi0xMC42YzEyLjItMTkgMTguNi00MS42IDE3LjYtNjUuMWwxNC43LTQuMmMxMi43LTMuNiAyMC4xLTE2LjkgMTYuNS0yOS43cy0xNi45LTIwLjEtMjkuNy0xNi41bC0xMy43IDMuOWMtMTAuOC0yMS4yLTI4LTM4LTQ4LjUtNDguNWwzLjktMTMuOHpNOTIuMSAzNjMuM2wwIDBMMTQ0IDM2OGwtNTEuOS00Ljd6TTExMiAzMjBhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMjQwIDE4NGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhZ1Nob3BwaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCAxMTJjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHY0OEgxNjBWMTEyem0tNDggNDhINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjQxNmMwIDUzIDQzIDk2IDk2IDk2SDM1MmM1MyAwIDk2LTQzIDk2LTk2VjIwOGMwLTI2LjUtMjEuNS00OC00OC00OEgzMzZWMTEyQzMzNiA1MC4xIDI4NS45IDAgMjI0IDBTMTEyIDUwLjEgMTEyIDExMnY0OHptMjQgNDhhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0xNTIgMjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFoYWkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBjMTQuNSAwIDI3LjIgOS43IDMwLjkgMjMuOGwyMy45IDg5LjYgNzUuOS01My4zYzExLjktOC4zIDI3LjgtNy42IDM5IDEuN3MxNC42IDI0LjkgOC40IDM4LjFsLTM5LjMgODQgOTIuNCA4YzE0LjQgMS4yIDI2LjIgMTIgMjguOCAyNi4zcy00LjkgMjguNS0xOCAzNC42bC04NC4xIDM5LjEgNjUuNyA2NS41YzEwLjMgMTAuMiAxMi40IDI2LjEgNS4xIDM4LjdzLTIyIDE4LjctMzYgMTQuOUwzOTEgMzg2LjhsOC4yIDkyLjRjMS4zIDE0LjQtNy4zIDI3LjktMjAuOSAzMi45cy0yOC45IC4xLTM3LjItMTEuN2wtNTMuMS03Ni01My4xIDc2Yy04LjMgMTEuOS0yMy42IDE2LjctMzcuMiAxMS43cy0yMi4yLTE4LjUtMjAuOS0zMi45bDguMi05Mi40TDk1LjQgNDEwLjljLTE0IDMuOC0yOC44LTIuMy0zNi0xNC45cy01LjItMjguNCA1LjEtMzguN2w2NS43LTY1LjVMNDYgMjUyLjdjLTEzLjEtNi4xLTIwLjUtMjAuMy0xOC0zNC42czE0LjMtMjUuMSAyOC44LTI2LjNsOTIuNC04LTM5LjMtODRjLTYuMS0xMy4xLTIuNy0yOC44IDguNC0zOC4xczI3LjEtMTAgMzktMS43bDc1LjkgNTMuMyAyMy45LTg5LjZDMjYwLjggOS43IDI3My41IDAgMjg4IDB6bTAgMTU2LjJsLTQuOCAxOGMtMi43IDEwLjEtMTAuMiAxOC4yLTIwIDIxLjhzLTIwLjggMi4xLTI5LjMtMy45bC0xNS4yLTEwLjcgNy45IDE2LjhjNC40IDkuNSA0IDIwLjUtMS4zIDI5LjZzLTE0LjUgMTUtMjUgMTUuOWwtMTguNSAxLjYgMTYuOCA3LjhjOS41IDQuNCAxNi4yIDEzLjIgMTggMjMuNXMtMS41IDIwLjgtOC45IDI4LjJsLTEzLjIgMTMuMSAxNy45LTQuOGMxMC4xLTIuNyAyMC45LS4zIDI4LjkgNi40czEyLjIgMTYuOSAxMS4zIDI3LjNsLTEuNiAxOC41IDEwLjYtMTUuMmM2LTguNiAxNS44LTEzLjcgMjYuMi0xMy43czIwLjIgNS4xIDI2LjIgMTMuN2wxMC42IDE1LjItMS42LTE4LjVjLS45LTEwLjQgMy4zLTIwLjYgMTEuMy0yNy4zczE4LjgtOS4xIDI4LjktNi40bDE3LjkgNC44LTEzLjItMTMuMWMtNy40LTcuNC0xMC43LTE3LjktOC45LTI4LjJzOC41LTE5LjEgMTgtMjMuNWwxNi44LTcuOC0xOC41LTEuNmMtMTAuNC0uOS0xOS43LTYuOC0yNS0xNS45cy01LjctMjAuMS0xLjMtMjkuNmw3LjktMTYuOC0xNS4yIDEwLjdjLTguNiA2LTE5LjUgNy41LTI5LjMgMy45cy0xNy4zLTExLjctMjAtMjEuOGwtNC44LTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWh0U2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNjRIMzcuNkMxNi44IDY0IDAgODAuOCAwIDEwMS42VjIyNHY0MS43VjI4OCA0MDYuM2MwIDIzIDE4LjcgNDEuNyA0MS43IDQxLjdIMTEydjMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDQ4aDMyYzYxLjkgMCAxMTItNTAuMSAxMTItMTEyYzAtNDAuMS0yMS4xLTc1LjMtNTIuNy05NS4xQzI4MC4zIDIyMi42IDI4OCAyMDAuMiAyODggMTc2YzAtNjEuOS01MC4xLTExMi0xMTItMTEyVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0xMTIgMTI4djk2SDY0VjEyOGg0OHptNjQgOTZWMTI4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4em0tNjQgNjR2OTZINjRWMjg4aDQ4em02NCA5NlYyODhoMzJjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDhIMTc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYW5TbW9raW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk5LjUgMTQ0LjhMMTc4LjcgMjI0bDk2IDk2IDkyLjUgOTIuNUMzMzUuOSA0MzQuOSAyOTcuNSA0NDggMjU2IDQ0OEMxNTAgNDQ4IDY0IDM2MiA2NCAyNTZjMC00MS41IDEzLjEtNzkuOSAzNS41LTExMS4yek0zMzMuMyAyODhsLTMyLTMySDM4NHYzMkgzMzMuM3ptMzIgMzJINDAwYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDI2OS4zTDE0NC44IDk5LjVDMTc2LjEgNzcuMSAyMTQuNSA2NCAyNTYgNjRjMTA2IDAgMTkyIDg2IDE5MiAxOTJjMCA0MS41LTEzLjEgNzkuOS0zNS41IDExMS4yTDM2NS4zIDMyMHpNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTI3MiA5NmMtOC44IDAtMTYgNy4yLTE2IDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDMyYzguOCAwIDE2IDcuMiAxNiAxNnM3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDMwNGMtOC44IDAtMTYtNy4yLTE2LTE2cy03LjItMTYtMTYtMTZ6TTIyOS41IDMyMGwtOTYtOTZIMTEyYy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2SDIyOS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY3LjIgNDEyLjVMOTkuNSAxNDQuOEM3Ny4xIDE3Ni4xIDY0IDIxNC41IDY0IDI1NmMwIDEwNiA4NiAxOTIgMTkyIDE5MmM0MS41IDAgNzkuOS0xMy4xIDExMS4yLTM1LjV6bTQ1LjMtNDUuM0M0MzQuOSAzMzUuOSA0NDggMjk3LjUgNDQ4IDI1NmMwLTEwNi04Ni0xOTItMTkyLTE5MmMtNDEuNSAwLTc5LjkgMTMuMS0xMTEuMiAzNS41TDQxMi41IDM2Ny4yek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbmRhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDQxNmg5NmMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBjMC0zNS4zLTI4LjctNjQtNjQtNjRINDgwVjQxNnpNNDQ4IDk2SDE5MlY0MTZINDQ4Vjk2ek02NCA5NkMyOC43IDk2IDAgMTI0LjcgMCAxNjBWMzUyYzAgMzUuMyAyOC43IDY0IDY0IDY0aDk2Vjk2SDY0ek0yNDggMjA4YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6bTEyMC0yNGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6TTI0OCAzMDRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTIwLTI0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFuZ2xhZGVzaGlUYWthU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNiAzMi4yQzE4LjQgMzAuMSAyLjQgNDIuNSAuMiA2MFMxMC41IDkzLjYgMjggOTUuOGw3LjkgMWMxNiAyIDI4IDE1LjYgMjggMzEuOFYxNjBIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjRWMzg0YzAgNTMgNDMgOTYgOTYgOTZoMzJjMTA2IDAgMTkyLTg2IDE5Mi0xOTJWMjU2YzAtNTMtNDMtOTYtOTYtOTZIMjcyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjMyYzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4SDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjI0aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDEyOFYxMjguNWMwLTQ4LjQtMzYuMS04OS4zLTg0LjEtOTUuM2wtNy45LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhcmNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgMzJDMTAuNyAzMiAwIDQyLjcgMCA1NlY0NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRINDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjR6bTg4IDBjLTguOCAwLTE2IDcuMi0xNiAxNlY0NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlY0OGMwLTguOC03LjItMTYtMTYtMTZ6bTcyIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0VjQ1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgxODR6bTk2IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0VjQ1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgyODB6TTQ0OCA1NlY0NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRINDcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptLTY0LThWNDY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWNDhjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhcnNQcm9ncmVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMTYwSDMyMFYxMjhINDQ4djMyek00OCA2NEMyMS41IDY0IDAgODUuNSAwIDExMnY2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0NjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek00NDggMzUydjMySDE5MlYzNTJINDQ4ek00OCAyODhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDQ2NGMyNi41IDAgNDgtMjEuNSA0OC00OFYzMzZjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhcnNTdGFnZ2VyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDc4LjMgMTQuMyA2NCAzMiA2NEg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJDMTQuMyAxMjggMCAxMTMuNyAwIDk2ek02NCAyNTZjMC0xNy43IDE0LjMtMzIgMzItMzJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnpNNDQ4IDQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDc4LjMgMTQuMyA2NCAzMiA2NEg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJDMTQuMyAxMjggMCAxMTMuNyAwIDk2ek0wIDI1NmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek00NDggNDE2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFzZWJhbGxCYXRCYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyNCAwYy0xMi40IDAtMjQuMiA0LjktMzMgMTMuN0wyMzMuNSAxNzEuMmMtMTAuNSAxMC41LTE5LjggMjIuMS0yNy43IDM0LjZMMTMyLjcgMzIxLjZjLTcuMyAxMS41LTE1LjggMjIuMi0yNS41IDMxLjlMNjkuOSAzOTAuN2w1MS4zIDUxLjMgMzcuMy0zNy4zYzkuNi05LjYgMjAuMy0xOC4yIDMxLjktMjUuNWwxMTUuOC03My4xYzEyLjUtNy45IDI0LjEtMTcuMiAzNC42LTI3LjdMNDk4LjMgMTIxYzguNy04LjcgMTMuNy0yMC42IDEzLjctMzNzLTQuOS0yNC4yLTEzLjctMzNMNDU3IDEzLjdDNDQ4LjIgNC45IDQzNi40IDAgNDI0IDB6bTg4IDQzMmE4MCA4MCAwIDEgMCAtMTYwIDAgODAgODAgMCAxIDAgMTYwIDB6TTE1IDM5OWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsNjQgNjRjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDQ5IDM5OWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhc2ViYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyLjcgMjIzLjRjLTQuOCAuNC05LjcgLjYtMTQuNyAuNmMtMTUuNiAwLTMwLjgtMi00NS4yLTUuOUMxOS4yIDEwNy4xIDEwNy4xIDE5LjIgMjE4LjEgMi44QzIyMiAxNy4yIDIyNCAzMi40IDIyNCA0OGMwIDQuOS0uMiA5LjgtLjYgMTQuN2MtLjcgOC44IDUuOCAxNi41IDE0LjYgMTcuM3MxNi41LTUuOCAxNy4zLTE0LjZjLjUtNS43IC43LTExLjUgLjctMTcuM2MwLTE2LjUtMS45LTMyLjYtNS42LTQ3LjljMS44IDAgMy43LS4xIDUuNi0uMUMzOTcuNCAwIDUxMiAxMTQuNiA1MTIgMjU2YzAgMS45IDAgMy43LS4xIDUuNmMtMTUuNC0zLjYtMzEuNC01LjYtNDcuOS01LjZjLTUuOCAwLTExLjYgLjItMTcuMyAuN2MtOC44IC43LTE1LjQgOC41LTE0LjYgMTcuM3M4LjUgMTUuNCAxNy4zIDE0LjZjNC44LS40IDkuNy0uNiAxNC43LS42YzE1LjYgMCAzMC44IDIgNDUuMiA1LjlDNDkyLjggNDA0LjkgNDA0LjkgNDkyLjggMjkzLjkgNTA5LjJDMjkwIDQ5NC44IDI4OCA0NzkuNiAyODggNDY0YzAtNC45IC4yLTkuOCAuNi0xNC43Yy43LTguOC01LjgtMTYuNS0xNC42LTE3LjNzLTE2LjUgNS44LTE3LjMgMTQuNmMtLjUgNS43LS43IDExLjUtLjcgMTcuM2MwIDE2LjUgMS45IDMyLjYgNS42IDQ3LjljLTEuOCAwLTMuNyAuMS01LjYgLjFDMTE0LjYgNTEyIDAgMzk3LjQgMCAyNTZjMC0xLjkgMC0zLjcgLjEtNS42QzE1LjQgMjU0LjEgMzEuNSAyNTYgNDggMjU2YzUuOCAwIDExLjYtLjIgMTcuMy0uN2M4LjgtLjcgMTUuNC04LjUgMTQuNi0xNy4zcy04LjUtMTUuNC0xNy4zLTE0LjZ6TTEyMS4zIDIwOGMtOCAzLjctMTEuNiAxMy4yLTcuOSAyMS4yczEzLjIgMTEuNiAyMS4yIDcuOWM0NS4yLTIwLjggODEuNy01Ny4yIDEwMi41LTEwMi41YzMuNy04IC4yLTE3LjUtNy45LTIxLjJzLTE3LjUtLjItMjEuMiA3LjljLTE3LjYgMzguMy00OC41IDY5LjItODYuNyA4Ni43em0yNzcuMiA3NC43Yy0zLjctOC0xMy4yLTExLjYtMjEuMi03LjljLTQ1LjIgMjAuOC04MS43IDU3LjItMTAyLjUgMTAyLjVjLTMuNyA4LS4yIDE3LjUgNy45IDIxLjJzMTcuNSAuMiAyMS4yLTcuOWMxNy42LTM4LjMgNDguNS02OS4yIDg2LjctODYuN2M4LTMuNyAxMS42LTEzLjIgNy45LTIxLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhc2tldFNob3BwaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1My4zIDM1LjFjNi4xLTExLjggMS41LTI2LjMtMTAuMi0zMi40cy0yNi4zLTEuNS0zMi40IDEwLjJMMTE3LjYgMTkySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyTDgzLjkgNDYzLjVDOTEgNDkyIDExNi42IDUxMiAxNDYgNTEySDQzMGMyOS40IDAgNTUtMjAgNjIuMS00OC41TDU0NCAyNTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDU4LjRMMzY1LjMgMTIuOUMzNTkuMiAxLjIgMzQ0LjctMy40IDMzMi45IDIuN3MtMTYuMyAyMC42LTEwLjIgMzIuNEw0MDQuMyAxOTJIMTcxLjdMMjUzLjMgMzUuMXpNMTkyIDMwNHY5NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzMDRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnptOTYtMTZjOC44IDAgMTYgNy4yIDE2IDE2djk2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjMwNGMwLTguOCA3LjItMTYgMTYtMTZ6bTEyOCAxNnY5NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzMDRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFza2V0YmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04Ni42IDY0bDg1LjIgODUuMkMxOTQuNSAxMjEuNyAyMDggODYuNCAyMDggNDhjMC0xNC43LTItMjguOS01LjctNDIuNEMxNTguNiAxNSAxMTkgMzUuNSA4Ni42IDY0ek02NCA4Ni42QzM1LjUgMTE5IDE1IDE1OC42IDUuNiAyMDIuM0MxOS4xIDIwNiAzMy4zIDIwOCA0OCAyMDhjMzguNCAwIDczLjctMTMuNSAxMDEuMy0zNi4xTDY0IDg2LjZ6TTI1NiAwYy03LjMgMC0xNC42IC4zLTIxLjggLjlDMjM4IDE2IDI0MCAzMS44IDI0MCA0OGMwIDQ3LjMtMTcuMSA5MC41LTQ1LjQgMTI0TDI1NiAyMzMuNCA0MjUuNCA2NEMzODAuMiAyNC4yIDMyMC45IDAgMjU2IDB6TTQ4IDI0MGMtMTYuMiAwLTMyLTItNDcuMS01LjhDLjMgMjQxLjQgMCAyNDguNyAwIDI1NmMwIDY0LjkgMjQuMiAxMjQuMiA2NCAxNjkuNEwyMzMuNCAyNTYgMTcyIDE5NC42QzEzOC41IDIyMi45IDk1LjMgMjQwIDQ4IDI0MHptNDYzLjEgMzcuOGMuNi03LjIgLjktMTQuNSAuOS0yMS44YzAtNjQuOS0yNC4yLTEyNC4yLTY0LTE2OS40TDI3OC42IDI1NiAzNDAgMzE3LjRjMzMuNC0yOC4zIDc2LjctNDUuNCAxMjQtNDUuNGMxNi4yIDAgMzIgMiA0Ny4xIDUuOHptLTQuNyAzMS45QzQ5Mi45IDMwNiA0NzguNyAzMDQgNDY0IDMwNGMtMzguNCAwLTczLjcgMTMuNS0xMDEuMyAzNi4xTDQ0OCA0MjUuNGMyOC41LTMyLjMgNDkuMS03MS45IDU4LjQtMTE1Ljd6TTM0MC4xIDM2Mi43QzMxNy41IDM5MC4zIDMwNCA0MjUuNiAzMDQgNDY0YzAgMTQuNyAyIDI4LjkgNS43IDQyLjRDMzUzLjQgNDk3IDM5MyA0NzYuNSA0MjUuNCA0NDhsLTg1LjItODUuMnpNMzE3LjQgMzQwTDI1NiAyNzguNiA4Ni42IDQ0OGM0NS4xIDM5LjggMTA0LjQgNjQgMTY5LjQgNjRjNy4zIDAgMTQuNi0uMyAyMS44LS45QzI3NCA0OTYgMjcyIDQ4MC4yIDI3MiA0NjRjMC00Ny4zIDE3LjEtOTAuNSA0NS40LTEyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmF0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA3Ny4zYzAtNy4zIDUuOS0xMy4zIDEzLjMtMTMuM2MzLjUgMCA2LjkgMS40IDkuNCAzLjlsMTQuOSAxNC45QzEzMCA5MS44IDEyOCAxMDEuNyAxMjggMTEyYzAgMTkuOSA3LjIgMzggMTkuMiA1MmMtNS4zIDkuMi00IDIxLjEgMy44IDI5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDI4OSA4OWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOWMtNy45LTcuOS0xOS44LTkuMS0yOS0zLjhDMjQ2IDM5LjIgMjI3LjkgMzIgMjA4IDMyYy0xMC4zIDAtMjAuMiAyLTI5LjIgNS41TDE2My45IDIyLjZDMTQ5LjQgOC4xIDEyOS43IDAgMTA5LjMgMEM2Ni42IDAgMzIgMzQuNiAzMiA3Ny4zVjI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIOTZWNzcuM3pNMzIgMzUydjE2YzAgMjguNCAxMi40IDU0IDMyIDcxLjZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDY0SDM4NHYxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQzOS42YzE5LjYtMTcuNiAzMi00My4xIDMyLTcxLjZWMzUySDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXR0ZXJ5RW1wdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgMTYwYy04LjggMC0xNiA3LjItMTYgMTZWMzM2YzAgOC44IDcuMiAxNiAxNiAxNkg0NjRjOC44IDAgMTYtNy4yIDE2LTE2VjE3NmMwLTguOC03LjItMTYtMTYtMTZIODB6TTAgMTc2YzAtNDQuMiAzNS44LTgwIDgwLTgwSDQ2NGM0NC4yIDAgODAgMzUuOCA4MCA4MHYxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnYxNmMwIDQ0LjItMzUuOCA4MC04MCA4MEg4MGMtNDQuMiAwLTgwLTM1LjgtODAtODBWMTc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXR0ZXJ5RnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMTYwYzguOCAwIDE2IDcuMiAxNiAxNlYzMzZjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMTc2YzAtOC44IDcuMi0xNiAxNi0xNkg0NjR6TTgwIDk2QzM1LjggOTYgMCAxMzEuOCAwIDE3NlYzMzZjMCA0NC4yIDM1LjggODAgODAgODBINDY0YzQ0LjIgMCA4MC0zNS44IDgwLTgwVjMyMGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJWMTc2YzAtNDQuMi0zNS44LTgwLTgwLTgwSDgwem0zNjggOTZIOTZWMzIwSDQ0OFYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAxNjBjOC44IDAgMTYgNy4yIDE2IDE2VjMzNmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2SDQ2NHpNODAgOTZDMzUuOCA5NiAwIDEzMS44IDAgMTc2VjMzNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MEg0NjRjNDQuMiAwIDgwLTM1LjggODAtODBWMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMlYxNzZjMC00NC4yLTM1LjgtODAtODAtODBIODB6bTIwOCA5Nkg5NlYzMjBIMjg4VjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmF0dGVyeVF1YXJ0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDE2MGM4LjggMCAxNiA3LjIgMTYgMTZWMzM2YzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZINDY0ek04MCA5NkMzNS44IDk2IDAgMTMxLjggMCAxNzZWMzM2YzAgNDQuMiAzNS44IDgwIDgwIDgwSDQ2NGM0NC4yIDAgODAtMzUuOCA4MC04MFYzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMyVjE3NmMwLTQ0LjItMzUuOC04MC04MC04MEg4MHptMTEyIDk2SDk2VjMyMGg5NlYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlUaHJlZVF1YXJ0ZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAxNjBjOC44IDAgMTYgNy4yIDE2IDE2VjMzNmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2SDQ2NHpNODAgOTZDMzUuOCA5NiAwIDEzMS44IDAgMTc2VjMzNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MEg0NjRjNDQuMiAwIDgwLTM1LjggODAtODBWMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMlYxNzZjMC00NC4yLTM1LjgtODAtODAtODBIODB6bTI3MiA5Nkg5NlYzMjBIMzUyVjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVkUHVsc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgzLjIgOS42TDUyNCA2NGg5MmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1MTJjLTcuNiAwLTE0LjctMy42LTE5LjItOS42TDQ2OC43IDcwLjNsLTQ3IDk5LjljLTMuNyA3LjgtMTEuMyAxMy4xLTE5LjkgMTMuN3MtMTYuOS0zLjQtMjEuNy0xMC42TDMzOS4yIDExMkgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRIMzUyYzggMCAxNS41IDQgMjAgMTAuN2wyNC40IDM2LjYgNDUuOS05Ny41QzQ0NS45IDYuMiA0NTMuMiAxIDQ2MS42IC4xczE2LjYgMi43IDIxLjYgOS41ek0zMjAgMTYwaDEyLjdsMjAuNyAzMS4xYzExLjIgMTYuOCAzMC42IDI2LjMgNTAuNyAyNC44czM3LjktMTMuNyA0Ni41LTMyTDQ2MS45IDE2MEg1NDRjNTMgMCA5NiA0MyA5NiA5NlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ4SDM1MiAzMjAgNjR2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWOTZDMCA3OC4zIDE0LjMgNjQgMzIgNjRzMzIgMTQuMyAzMiAzMlYzNTJIMjg4VjE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptLTE0NCAwYTgwIDgwIDAgMSAxIDAgMTYwIDgwIDgwIDAgMSAxIDAtMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzIwSDI4OFYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJINTQ0YzUzIDAgOTYgNDMgOTYgOTZWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQxNkgzNTIgMzIwIDY0djMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyem0xNDQgOTZhODAgODAgMCAxIDEgMCAxNjAgODAgODAgMCAxIDEgMC0xNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlZXJNdWdFbXB0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMkgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWOTZoNTEuMmM0Mi40IDAgNzYuOCAzNC40IDc2LjggNzYuOFYyNzQuOWMwIDMwLjQtMTcuOSA1Ny45LTQ1LjYgNzAuMkwzODQgMzgxLjdWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDk2Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMzg0IDMxMS42bDU2LjQtMjUuMWM0LjYtMi4xIDcuNi02LjYgNy42LTExLjdWMTcyLjhjMC03LjEtNS43LTEyLjgtMTIuOC0xMi44SDM4NFYzMTEuNnpNMTYwIDE0NGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNlYzNjhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYxNDR6bTY0IDBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWMzY4YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMTQ0em02NCAwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjM2OGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVsbENvbmNpZXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYgNjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMTZ2MzMuM0MxMTkuNiAxNTcuMiAzMiAyNTIuNCAzMiAzNjhINDgwYzAtMTE1LjYtODcuNi0yMTAuOC0yMDAtMjIyLjdWMTEyaDE2YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDI1NiAyMTZ6TTI0IDQwMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg0ODhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlbGxTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43bC05MC4yLTcwLjdjLjItLjQgLjQtLjkgLjYtMS4zYzUuMi0xMS41IDMuMS0yNS01LjMtMzQuNGwtNy40LTguM0M0OTcuMyAzMTkuMiA0ODAgMjczLjkgNDgwIDIyNi44VjIwOGMwLTc3LjQtNTUtMTQyLTEyOC0xNTYuOFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY1MS4yYy00Mi42IDguNi03OSAzNC4yLTEwMiA2OS4zTDM4LjggNS4xek00MDYuMiA0MTZMMTYwIDIyMi4xdjQuOGMwIDQ3LTE3LjMgOTIuNC00OC41IDEyNy42bC03LjQgOC4zYy04LjQgOS40LTEwLjQgMjIuOS01LjMgMzQuNFMxMTUuNCA0MTYgMTI4IDQxNkg0MDYuMnptLTQwLjkgNzcuM2MxMi0xMiAxOC43LTI4LjMgMTguNy00NS4zSDMyMCAyNTZjMCAxNyA2LjcgMzMuMyAxOC43IDQ1LjNzMjguMyAxOC43IDQ1LjMgMTguN3MzMy4zLTYuNyA0NS4zLTE4Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjUxLjJDMTE5IDY2IDY0IDEzMC42IDY0IDIwOHYxOC44YzAgNDctMTcuMyA5Mi40LTQ4LjUgMTI3LjZsLTcuNCA4LjNjLTguNCA5LjQtMTAuNCAyMi45LTUuMyAzNC40UzE5LjQgNDE2IDMyIDQxNkg0MTZjMTIuNiAwIDI0LTcuNCAyOS4yLTE4LjlzMy4xLTI1LTUuMy0zNC40bC03LjQtOC4zQzQwMS4zIDMxOS4yIDM4NCAyNzMuOSAzODQgMjI2LjhWMjA4YzAtNzcuNC01NS0xNDItMTI4LTE1Ni44VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem00NS4zIDQ5My4zYzEyLTEyIDE4LjctMjguMyAxOC43LTQ1LjNIMjI0IDE2MGMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM3MyOC4zIDE4LjcgNDUuMyAxOC43czMzLjMtNi43IDQ1LjMtMTguN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmV6aWVyQ3VydmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk2IDEzNlY4OGg0OHY0OEgyOTZ6TTI4OCAzMmMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2NEgxMjEuNkMxMTEuMiA2Mi43IDg5LjMgNDggNjQgNDhDMjguNyA0OCAwIDc2LjcgMCAxMTJzMjguNyA2NCA2NCA2NGMyNS4zIDAgNDcuMi0xNC43IDU3LjYtMzZoNjYuOWMtNTguOSAzOS42LTk4LjkgMTA1LTEwNCAxODBIODBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM2OGMwLTI2LjUtMjEuNS00OC00OC00OGgtMy4zYzUuOS02NyA0OC41LTEyMy40IDEwNy41LTE0OS4xYzguNiAxMi43IDIzLjIgMjEuMSAzOS44IDIxLjFoNjRjMTYuNiAwIDMxLjEtOC40IDM5LjgtMjEuMWM1OSAyNS43IDEwMS42IDgyLjEgMTA3LjUgMTQ5LjFINDk2Yy0yNi41IDAtNDggMjEuNS00OCA0OHY2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg2NGMyNi41IDAgNDgtMjEuNSA0OC00OFYzNjhjMC0yNi41LTIxLjUtNDgtNDgtNDhoLTQuNWMtNS03NS00NS4xLTE0MC40LTEwNC0xODBoNjYuOWMxMC40IDIxLjMgMzIuMyAzNiA1Ny42IDM2YzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0Yy0yNS4zIDAtNDcuMiAxNC43LTU3LjYgMzZINDAwVjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDI4OHpNODggMzc2aDQ4djQ4SDg4VjM3NnptNDE2IDQ4VjM3Nmg0OHY0OEg1MDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpY3ljbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEyIDMyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDI1LjdsMzQuNiA2NEgyMjIuOWwtMjcuNC0zOEMxOTEgOTkuNyAxODMuNyA5NiAxNzYgOTZIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDQzLjdsMjIuMSAzMC43LTI2LjYgNTMuMWMtMTAtMi41LTIwLjUtMy44LTMxLjItMy44QzU3LjMgMjI0IDAgMjgxLjMgMCAzNTJzNTcuMyAxMjggMTI4IDEyOGM2NS4zIDAgMTE5LjEtNDguOSAxMjctMTEyaDQ5YzguNSAwIDE2LjMtNC41IDIwLjctMTEuOGw4NC44LTE0My41IDIxLjcgNDAuMUM0MDIuNCAyNzYuMyAzODQgMzEyIDM4NCAzNTJjMCA3MC43IDU3LjMgMTI4IDEyOCAxMjhzMTI4LTU3LjMgMTI4LTEyOHMtNTcuMy0xMjgtMTI4LTEyOGMtMTMuNSAwLTI2LjUgMi4xLTM4LjcgNkwzNzUuNCA0OC44QzM2OS44IDM4LjQgMzU5IDMyIDM0Ny4yIDMySDMxMnpNNDU4LjYgMzAzLjdsMzIuMyA1OS43YzYuMyAxMS43IDIwLjkgMTYgMzIuNSA5LjdzMTYtMjAuOSA5LjctMzIuNWwtMzIuMy01OS43YzMuNi0uNiA3LjQtLjkgMTEuMi0uOWMzOS44IDAgNzIgMzIuMiA3MiA3MnMtMzIuMiA3Mi03MiA3MnMtNzItMzIuMi03Mi03MmMwLTE4LjYgNy0zNS41IDE4LjYtNDguM3pNMTMzLjIgMzY4aDY1Yy03LjMgMzIuMS0zNiA1Ni03MC4yIDU2Yy0zOS44IDAtNzItMzIuMi03Mi03MnMzMi4yLTcyIDcyLTcyYzEuNyAwIDMuNCAuMSA1LjEgLjJsLTI0LjIgNDguNWMtOSAxOC4xIDQuMSAzOS40IDI0LjMgMzkuNHptMzMuNy00OGw1MC43LTEwMS4zIDcyLjkgMTAxLjItLjEgLjFIMTY2Ljh6bTkwLjYtMTI4SDM2NS45TDMxNyAyNzQuOCAyNTcuNCAxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpbm9jdWxhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjk2SDk2VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyem02NCA5NlY0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4OC45YzAtMzQuNiA5LjQtNjguNiAyNy4yLTk4LjNDNDAuOSAyNjcuOCA0OS43IDI0Mi40IDUzIDIxNkw2MC41IDE1NmMyLTE2IDE1LjYtMjggMzEuOC0yOEgxOTJ6bTIyNy44IDBjMTYuMSAwIDI5LjggMTIgMzEuOCAyOEw0NTkgMjE2YzMuMyAyNi40IDEyLjEgNTEuOCAyNS44IDc0LjZjMTcuOCAyOS43IDI3LjIgNjMuNyAyNy4yIDk4LjNWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMySDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTI4aDk5Ljh6TTMyMCA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlY5NkgzMjBWNjR6bS0zMiA2NFYyODhIMjI0VjEyOGg2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmlvaGF6YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3My4yIDBjLTEuOCAwLTMuNSAuNy00LjggMkMxMzguNSAzMi4zIDEyMCA3NCAxMjAgMTIwYzAgMjYuMiA2IDUwLjkgMTYuNiA3M2MtMjIgMi40LTQzLjggOS4xLTY0LjIgMjAuNUMzNy45IDIzMi44IDEzLjMgMjYyLjQgLjQgMjk2Yy0uNyAxLjctLjUgMy43IC41IDUuMmMyLjIgMy43IDcuNCA0LjMgMTAuNiAxLjNDNjQuMiAyNTQuMyAxNTggMjQ1LjEgMjA1IDMyNHMtOC4xIDE1My4xLTc3LjYgMTczLjJjLTQuMiAxLjItNi4zIDUuOS00LjEgOS42YzEgMS42IDIuNiAyLjcgNC41IDNjMzYuNSA1LjkgNzUuMiAuMSAxMDkuNy0xOS4yYzIwLjQtMTEuNCAzNy40LTI2LjUgNTAuNS00My44YzEzLjEgMTcuMyAzMC4xIDMyLjQgNTAuNSA0My44YzM0LjUgMTkuMyA3My4zIDI1LjIgMTA5LjcgMTkuMmMxLjktLjMgMy41LTEuNCA0LjUtM2MyLjItMy43IC4xLTguNC00LjEtOS42QzM3OS4xIDQ3Ny4xIDMyNCA0MDMgMzcxIDMyNHMxNDAuNy02OS44IDE5My41LTIxLjRjMy4yIDIuOSA4LjQgMi4zIDEwLjYtMS4zYzEtMS42IDEuMS0zLjUgLjUtNS4yYy0xMi45LTMzLjYtMzcuNS02My4yLTcyLjEtODIuNWMtMjAuNC0xMS40LTQyLjItMTguMS02NC4yLTIwLjVDNDUwIDE3MC45IDQ1NiAxNDYuMiA0NTYgMTIwYzAtNDYtMTguNS04Ny43LTQ4LjQtMTE4Yy0xLjMtMS4zLTMtMi00LjgtMmMtNSAwLTguNCA1LjItNi43IDkuOUM0MjEuNyA4MC41IDM4NS42IDE3NiAyODggMTc2UzE1NC4zIDgwLjUgMTc5LjkgOS45YzEuNy00LjctMS42LTkuOS02LjctOS45ek0yNDAgMjcyYTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTE4MS43IDQxNy42YzYuMy0xMS44IDkuOC0yNS4xIDguNi0zOS44Yy0xOS41LTE4LTM0LTQxLjQtNDEuMi02Ny44Yy0xMi41LTguMS0yNi4yLTExLjgtNDAtMTIuNGMtOS0uNC0xOC4xIC42LTI3LjEgMi43YzcuOCA1Ny4xIDM4LjcgMTA2LjggODIuOSAxMzkuNGM2LjgtNi43IDEyLjYtMTQuMSAxNi44LTIyLjF6TTI4OCA2NGMtMjguOCAwLTU2LjMgNS45LTgxLjIgMTYuNWMyIDguMyA1IDE2LjIgOSAyMy41YzYuOCAxMi40IDE2LjcgMjMuMSAzMC4xIDMwLjNjMTMuMy00LjEgMjcuNS02LjMgNDIuMi02LjNzMjguOCAyLjIgNDIuMiA2LjNjMTMuNC03LjIgMjMuMy0xNy45IDMwLjEtMzAuM2M0LTcuMyA3LTE1LjIgOS0yMy41QzM0NC4zIDY5LjkgMzE2LjggNjQgMjg4IDY0ek00MjYuOSAzMTBjLTcuMiAyNi40LTIxLjcgNDkuNy00MS4yIDY3LjhjLTEuMiAxNC43IDIuMiAyOC4xIDguNiAzOS44YzQuMyA4IDEwIDE1LjQgMTYuOCAyMi4xYzQ0LjMtMzIuNiA3NS4yLTgyLjMgODIuOS0xMzkuNGMtOS0yLjItMTguMS0zLjEtMjcuMS0yLjdjLTEzLjggLjYtMjcuNSA0LjQtNDAgMTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQml0Y29pblNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMzJDNDggMTQuMyA2Mi4zIDAgODAgMHMzMiAxNC4zIDMyIDMyVjY0aDMyVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNjRjMCAxLjUtLjEgMy4xLS4zIDQuNUMyNTQuMSA4Mi4yIDI4OCAxMjUuMSAyODggMTc2YzAgMjQuMi03LjcgNDYuNi0yMC43IDY0LjljMzEuNyAxOS44IDUyLjcgNTUgNTIuNyA5NS4xYzAgNjEuOS01MC4xIDExMi0xMTIgMTEydjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OEgxMTJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ4SDQxLjdDMTguNyA0NDggMCA0MjkuMyAwIDQwNi4zVjI4OCAyNjUuNyAyMjQgMTAxLjZDMCA4MC44IDE2LjggNjQgMzcuNiA2NEg0OFYzMnpNNjQgMjI0SDE3NmMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OEg2NHY5NnptMTEyIDY0SDY0djk2SDIwOGMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OEgxNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsZW5kZXJQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMzUyTDE5Ni44IDUyLjNDMTk0LjIgMjQuMiAyMTYuMyAwIDI0NC42IDBINTM0LjFjMjEuMSAwIDM2LjQgMjAuMSAzMC45IDQwLjRMNTU4LjUgNjRINDAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDU0OS44bC0xNy41IDY0SDQwMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg1MjMuNmwtMTcuNSA2NEg0MDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoOTcuNUw0ODAgMzUySDIyNHptLTE2IDMySDQ5NmMyNi41IDAgNDggMjEuNSA0OCA0OHYzMmMwIDI2LjUtMjEuNSA0OC00OCA0OEgyMDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQzMmMwLTI2LjUgMjEuNS00OCA0OC00OHptMTQ0IDk2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNMTQ3LjUgMzAuN2MxMC44IDYuNyAxNS4zIDIxIDEwLjYgMzMuNGwtMjIgNTcuOGMtNC4yIDEwLjktMTQuNSAxNy42LTI1LjMgMTYuNGwtMzMuMy0zLjZjLTEzLjYgNDIuMi0xMy42IDg4LjQgMCAxMzAuN2wzMy4zLTMuNmMxMC45LTEuMiAyMS4yIDUuNSAyNS4zIDE2LjRsMjIgNTcuOGM0LjcgMTIuNCAuMiAyNi43LTEwLjYgMzMuNGwtNDQgMjcuMmMtOS43IDYtMjEuOSA0LjItMjkuOC00LjNDLTI0LjYgMjg2LTI0LjYgMTE0IDczLjcgNy44QzgxLjYtLjcgOTMuOC0yLjUgMTAzLjUgMy41bDQ0IDI3LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsZW5kZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBoNjQgMzJINDcwLjFjMjEuMSAwIDM2LjQgMjAuMSAzMC45IDQwLjRMNDk0LjUgNjRIMzM2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDQ4NS44bC0xNy41IDY0SDMzNmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg0NTkuNmwtMTcuNSA2NEgzMzZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoOTcuNUw0MTYgMzUySDE2MGwtOC43LTk2SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMTQ1LjUgMTkyTDEzMy44IDY0SDY0VjE5Mmg4MS41ek0xNDQgMzg0SDQzMmMyNi41IDAgNDggMjEuNSA0OCA0OHYzMmMwIDI2LjUtMjEuNSA0OC00OCA0OEgxNDRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQzMmMwLTI2LjUgMjEuNS00OCA0OC00OHptMTQ0IDk2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJjMTIzLjcgMCAyMjQgMTAwLjMgMjI0IDIyNGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyQzUxMiAxMjguOSAzODMuMSAwIDIyNCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnptMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmM3MC43IDAgMTI4IDU3LjMgMTI4IDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtMTA2LTg2LTE5Mi0xOTItMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNOTYgMTQ0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4UzAgMTE3LjUgMCAxNDRWMzY4YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0czE0NC02NC41IDE0NC0xNDRzLTY0LjUtMTQ0LTE0NC0xNDRIMTI4djk2aDE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4VjE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9sZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMySDgwIDk2IDIyNGM3MC43IDAgMTI4IDU3LjMgMTI4IDEyOGMwIDMxLjMtMTEuMyA2MC4xLTMwIDgyLjNjMzcuMSAyMi40IDYyIDYzLjEgNjIgMTA5LjdjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhIOTYgODAgMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDhWMjU2IDk2SDMyQzE0LjMgOTYgMCA4MS43IDAgNjR6TTIyNCAyMjRjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjRIMTEyVjIyNEgyMjR6TTExMiAyODhWNDE2SDI1NmMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NEgyMjQgMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb2x0TGlnaHRuaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2TDI4LjUgMjhjMi0xNiAxNS42LTI4IDMxLjgtMjhIMjI4LjljMTUgMCAyNy4xIDEyLjEgMjcuMSAyNy4xYzAgMy4yLS42IDYuNS0xLjcgOS41TDIwOCAxNjBIMzQ3LjNjMjAuMiAwIDM2LjcgMTYuNCAzNi43IDM2LjdjMCA3LjQtMi4yIDE0LjYtNi40IDIwLjdsLTE5Mi4yIDI4MWMtNS45IDguNi0xNS42IDEzLjctMjUuOSAxMy43aC0yLjljLTE1LjcgMC0yOC41LTEyLjgtMjguNS0yOC41YzAtMi4zIC4zLTQuNiAuOS02LjlMMTc2IDI4OEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ5LjQgNDQuNmM1LjktMTMuNyAxLjUtMjkuNy0xMC42LTM4LjVzLTI4LjYtOC0zOS45IDEuOGwtMjU2IDIyNGMtMTAgOC44LTEzLjYgMjIuOS04LjkgMzUuM1M1MC43IDI4OCA2NCAyODhIMTc1LjVMOTguNiA0NjcuNGMtNS45IDEzLjctMS41IDI5LjcgMTAuNiAzOC41czI4LjYgOCAzOS45LTEuOGwyNTYtMjI0YzEwLTguOCAxMy42LTIyLjkgOC45LTM1LjNzLTE2LjYtMjAuNy0zMC0yMC43SDI3Mi41TDM0OS40IDQ0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvbWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU5LjEgNTIuNEw0NDIuNiA2LjVDNDQwLjcgMi42IDQzNi41IDAgNDMyLjEgMHMtOC41IDIuNi0xMC40IDYuNUw0MDUuMiA1Mi40bC00NiAxNi44Yy00LjMgMS42LTcuMyA1LjktNy4yIDEwLjRjMCA0LjUgMyA4LjcgNy4yIDEwLjJsNDUuNyAxNi44IDE2LjggNDUuOGMxLjUgNC40IDUuOCA3LjUgMTAuNCA3LjVzOC45LTMuMSAxMC40LTcuNWwxNi41LTQ1LjggNDUuNy0xNi44YzQuMi0xLjUgNy4yLTUuNyA3LjItMTAuMmMwLTQuNi0zLTguOS03LjItMTAuNEw0NTkuMSA1Mi40em0tMTMyLjQgNTNjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0yLjkgMi45QzI1Ni41IDEwMC4zIDIzMi43IDk2IDIwOCA5NkM5My4xIDk2IDAgMTg5LjEgMCAzMDRTOTMuMSA1MTIgMjA4IDUxMnMyMDgtOTMuMSAyMDgtMjA4YzAtMjQuNy00LjMtNDguNS0xMi4yLTcwLjVsMi45LTIuOWMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtODAtODB6TTIwMCAxOTJjLTU3LjQgMC0xMDQgNDYuNi0xMDQgMTA0djhjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZ2LThjMC03NS4xIDYwLjktMTM2IDEzNi0xMzZoOGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTMuNyAxNDQuOGM2LjkgMTYuMyAyMC42IDMxLjIgMzguMyAzMS4ySDM4NGMxNy43IDAgMzEuNC0xNC45IDM4LjMtMzEuMkM0MzQuNCAxMTYuMSA0NjIuOSA5NiA0OTYgOTZjNDQuMiAwIDgwIDM1LjggODAgODBjMCAzMC40LTE3IDU2LjktNDIgNzAuNGMtMy42IDEuOS02IDUuNS02IDkuNnMyLjQgNy43IDYgOS42YzI1IDEzLjUgNDIgNDAgNDIgNzAuNGMwIDQ0LjItMzUuOCA4MC04MCA4MGMtMzMuMSAwLTYxLjYtMjAuMS03My43LTQ4LjhDNDE1LjQgMzUwLjkgNDAxLjcgMzM2IDM4NCAzMzZIMTkyYy0xNy43IDAtMzEuNCAxNC45LTM4LjMgMzEuMkMxNDEuNiAzOTUuOSAxMTMuMSA0MTYgODAgNDE2Yy00NC4yIDAtODAtMzUuOC04MC04MGMwLTMwLjQgMTctNTYuOSA0Mi03MC40YzMuNi0xLjkgNi01LjUgNi05LjZzLTIuNC03LjctNi05LjZDMTcgMjMyLjkgMCAyMDYuNCAwIDE3NmMwLTQ0LjIgMzUuOC04MCA4MC04MGMzMy4xIDAgNjEuNiAyMC4xIDczLjcgNDguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMjA4LjVjMCAyOS4xLTE1LjYgNTMuOS0zNy4yIDY3LjhjLTE3LjIgMTEuMS0zMS41IDI2LjEtNDEuNyA0My43SDMwMi45Yy0xMC4yLTE3LjYtMjQuNS0zMi42LTQxLjctNDMuN2MtMjEuNi0xMy45LTM3LjItMzguNy0zNy4yLTY3LjhWNjRIMTYwVjIwOC41ek0yODggNjRWMjA4LjVjMCA1LjcgMy4xIDEwLjkgNy45IDE0YzExLjIgNy4yIDIxLjUgMTUuNSAzMC45IDI0LjhMMzY2LjEgMjA4bC03LTdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwyNCAyNCAyNCAyNGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC03LTctNDMuMyA0My4zQzM3NCAzMTQuMSAzODQgMzQ3LjkgMzg0IDM4NGMwIDM5LjQtMTEuOSA3Ni4xLTMyLjIgMTA2LjVjLTkuNiAxNC40LTI2LjUgMjEuNS00My44IDIxLjVINzYuMWMtMTcuMyAwLTM0LjItNy4xLTQzLjgtMjEuNUMxMS45IDQ2MC4xIDAgNDIzLjQgMCAzODRjMC02Ny44IDM1LjEtMTI3LjMgODguMS0xNjEuNWM0LjgtMy4xIDcuOS04LjMgNy45LTE0VjY0Qzc4LjMgNjQgNjQgNDkuNyA2NCAzMlM3OC4zIDAgOTYgMGgxNkgyNzJoMTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2tBdGxhcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNDMgNDMgMCA5NiAwSDM4NGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlYzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJ2NjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0IDk2Yy01MyAwLTk2LTQzLTk2LTk2Vjk2ek02NCA0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzUyVjM4NEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTI0Ny40IDI4My44Yy0zLjcgMy43LTYuMiA0LjItNy40IDQuMnMtMy43LS41LTcuNC00LjJjLTMuOC0zLjctOC0xMC0xMS44LTE4LjljLTYuMi0xNC41LTEwLjgtMzQuMy0xMi4yLTU2LjloNjNjLTEuNSAyMi42LTYgNDIuNC0xMi4yIDU2LjljLTMuOCA4LjktOCAxNS4yLTExLjggMTguOXptNDIuNy05LjljNy4zLTE4LjMgMTItNDEuMSAxMy40LTY1LjloMzEuMWMtNC43IDI3LjktMjEuNCA1MS43LTQ0LjUgNjUuOXptMC0xNjMuOGMyMy4yIDE0LjIgMzkuOSAzOCA0NC41IDY1LjlIMzAzLjVjLTEuNC0yNC43LTYuMS00Ny41LTEzLjQtNjUuOXpNMzY4IDE5MmExMjggMTI4IDAgMSAwIC0yNTYgMCAxMjggMTI4IDAgMSAwIDI1NiAwek0xNDUuMyAyMDhoMzEuMWMxLjQgMjQuNyA2LjEgNDcuNSAxMy40IDY1LjljLTIzLjItMTQuMi0zOS45LTM4LTQ0LjUtNjUuOXptMzEuMS0zMkgxNDUuM2M0LjctMjcuOSAyMS40LTUxLjcgNDQuNS02NS45Yy03LjMgMTguMy0xMiA0MS4xLTEzLjQgNjUuOXptNTYuMS03NS44YzMuNy0zLjcgNi4yLTQuMiA3LjQtNC4yczMuNyAuNSA3LjQgNC4yYzMuOCAzLjcgOCAxMCAxMS44IDE4LjljNi4yIDE0LjUgMTAuOCAzNC4zIDEyLjIgNTYuOWgtNjNjMS41LTIyLjYgNi00Mi40IDEyLjItNTYuOWMzLjgtOC45IDgtMTUuMiAxMS44LTE4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2tCaWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwQzQzIDAgMCA0MyAwIDk2VjQxNmMwIDUzIDQzIDk2IDk2IDk2SDM4NGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMlYzODRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMzg0IDk2em0wIDM4NEgzNTJ2NjRIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6TTIwOCA4MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djQ4aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyVjMwNGMwIDguOC03LjIgMTYtMTYgMTZIMjI0Yy04LjggMC0xNi03LjItMTYtMTZWMTkySDE2MGMtOC44IDAtMTYtNy4yLTE2LTE2VjE0NGMwLTguOCA3LjItMTYgMTYtMTZoNDhWODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2tCb29rbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNDMgNDMgMCA5NiAwaDk2VjE5MC43YzAgMTMuNCAxNS41IDIwLjkgMjYgMTIuNUwyNzIgMTYwbDU0IDQzLjJjMTAuNSA4LjQgMjYgLjkgMjYtMTIuNVYwaDMyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMnY2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzODQgOTZjLTUzIDAtOTYtNDMtOTYtOTZWOTZ6TTY0IDQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzNTJWMzg0SDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va0pvdXJuYWxXaGlsbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDQzIDQzIDAgOTYgMEgzODRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMydjY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM4NCA5NmMtNTMgMC05Ni00My05Ni05NlY5NnpNNjQgNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM1MlYzODRIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem05MC40LTIzNC40bC0yMS4yLTIxLjJjLTMgMTAuMS01LjEgMjAuNi01LjEgMzEuNmMwIC4yIDAgLjUgLjEgLjhzLjEgLjUgLjEgLjhMMTY1LjIgMjI2YzIuNSAyLjEgMy40IDUuOCAyLjMgOC45Yy0xLjMgMy00LjEgNS4xLTcuNSA1LjFjLTEuOS0uMS0zLjgtLjgtNS4yLTJsLTIzLjYtMjAuNkMxNDIuOCAyNjcgMTg2LjkgMzA0IDI0MCAzMDRzOTcuMy0zNyAxMDguOS04Ni42TDMyNS4zIDIzOGMtMS40IDEuMi0zLjMgMi01LjMgMmMtMi4yLS4xLTQuNC0xLjEtNi0yLjhjLTEuMi0xLjUtMS45LTMuNC0yLTUuMmMuMS0yLjIgMS4xLTQuNCAyLjgtNmwzNy4xLTMyLjVjMC0uMyAwLS41IC4xLS44cy4xLS41IC4xLS44YzAtMTEtMi4xLTIxLjUtNS4xLTMxLjZsLTIxLjIgMjEuMmMtMy4xIDMuMS04LjEgMy4xLTExLjMgMHMtMy4xLTguMSAwLTExLjJsMjYuNC0yNi41Yy04LjItMTctMjAuNS0zMS43LTM1LjktNDIuNmMtMi43LTEuOS02LjIgMS40LTUgNC41YzguNSAyMi40IDMuNiA0OC0xMyA2NS42Yy0zLjIgMy40LTMuNiA4LjktLjkgMTIuN2M5LjggMTQgMTIuNyAzMS45IDcuNSA0OC41Yy01LjkgMTkuNC0yMiAzNC4xLTQxLjkgMzguM2wtMS40LTM0LjMgMTIuNiA4LjZjLjYgLjQgMS41IC42IDIuMyAuNmMxLjUgMCAyLjctLjggMy41LTJzLjYtMi44LS4xLTRMMjYwIDIyNS40bDE4LTMuNmMxLjgtLjQgMy4xLTIuMSAzLjEtNHMtMS40LTMuNS0zLjEtMy45bC0xOC0zLjcgOC41LTE0LjNjLjgtMS4yIC45LTIuOSAuMS00LjFzLTItMi0zLjUtMmwtLjEgMGMtLjcgLjEtMS41IC4zLTIuMSAuN2wtMTQuMSA5LjZMMjQ0IDg3LjljLS4xLTIuMi0xLjktMy45LTQtMy45cy0zLjkgMS42LTQgMy45bC00LjYgMTEwLjgtMTItOC4xYy0xLjUtMS4xLTMuNi0uOS01IC40cy0xLjYgMy40LS44IDVsOC42IDE0LjMtMTggMy43Yy0xLjggLjQtMy4xIDItMy4xIDMuOXMxLjQgMy42IDMuMSA0bDE4IDMuOC04LjYgMTQuMmMtLjIgLjYtLjUgMS40LS41IDJjMCAxLjEgLjUgMi4xIDEuMiAzYy44IC42IDEuOCAxIDIuOCAxYy43IDAgMS42LS4yIDIuMi0uNmwxMC40LTcuMS0xLjQgMzIuOGMtMTkuOS00LjEtMzYtMTguOS00MS45LTM4LjNjLTUuMS0xNi42LTIuMi0zNC40IDcuNi00OC41YzIuNy0zLjkgMi4zLTkuMy0uOS0xMi43Yy0xNi42LTE3LjUtMjEuNi00My4xLTEzLjEtNjUuNWMxLjItMy4xLTIuMy02LjQtNS00LjVjLTE1LjMgMTAuOS0yNy42IDI1LjYtMzUuOCA0Mi42bDI2LjQgMjYuNWMzLjEgMy4xIDMuMSA4LjEgMCAxMS4ycy04LjEgMy4xLTExLjIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va01lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDQzIDQzIDAgOTYgMEgzODRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMydjY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM4NCA5NmMtNTMgMC05Ni00My05Ni05NlY5NnpNNjQgNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM1MlYzODRIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek0yMDggMTEydjQ4SDE2MGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjIyNGg0OGM4LjggMCAxNi03LjIgMTYtMTZWMTc2YzAtOC44LTcuMi0xNi0xNi0xNkgyNzJWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgyMjRjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va09wZW5SZWFkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDk2YTk2IDk2IDAgMSAxIDE5MiAwQTk2IDk2IDAgMSAxIDE2MCA5NnptODAgMTUyVjUxMmwtNDguNC0yNC4yYy0yMC45LTEwLjQtNDMuNS0xNy02Ni44LTE5LjNsLTk2LTkuNkMxMi41IDQ1Ny4yIDAgNDQzLjUgMCA0MjdWMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDYyLjNjNjMuNiAwIDEyNS42IDE5LjYgMTc3LjcgNTZ6bTMyIDI2NFYyNDhjNTIuMS0zNi40IDExNC4xLTU2IDE3Ny43LTU2SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0MjdjMCAxNi40LTEyLjUgMzAuMi0yOC44IDMxLjhsLTk2IDkuNmMtMjMuMiAyLjMtNDUuOSA4LjktNjYuOCAxOS4zTDI3MiA1MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2tPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OS42IDQ3MS41YzEwLjggMy44IDIyLjQtNC4xIDIyLjQtMTUuNVY3OC42YzAtNC4yLTEuNi04LjQtNS0xMUMyNDcuNCA1MiAyMDIuNCAzMiAxNDQgMzJDOTMuNSAzMiA0Ni4zIDQ1LjMgMTguMSA1Ni4xQzYuOCA2MC41IDAgNzEuNyAwIDgzLjhWNDU0LjFjMCAxMS45IDEyLjggMjAuMiAyNC4xIDE2LjVDNTUuNiA0NjAuMSAxMDUuNSA0NDggMTQ0IDQ0OGMzMy45IDAgNzkgMTQgMTA1LjYgMjMuNXptNzYuOCAwQzM1MyA0NjIgMzk4LjEgNDQ4IDQzMiA0NDhjMzguNSAwIDg4LjQgMTIuMSAxMTkuOSAyMi42YzExLjMgMy44IDI0LjEtNC42IDI0LjEtMTYuNVY4My44YzAtMTIuMS02LjgtMjMuMy0xOC4xLTI3LjZDNTI5LjcgNDUuMyA0ODIuNSAzMiA0MzIgMzJjLTU4LjQgMC0xMDMuNCAyMC0xMjMgMzUuNmMtMy4zIDIuNi01IDYuOC01IDExVjQ1NmMwIDExLjQgMTEuNyAxOS4zIDIyLjQgMTUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va1F1cmFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAwYzUzIDAgOTYgNDMgOTYgOTZWNDE2YzAgNTMtNDMgOTYtOTYgOTZINjQgMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJWMzg0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzMkMwIDE0LjMgMTQuMyAwIDMyIDBINjQgMzUyem0wIDM4NEg5NnY2NEgzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJ6TTI3NC4xIDE1MC4ybC04LjkgMjEuNC0yMy4xIDEuOWMtNS43IC41LTggNy41LTMuNyAxMS4yTDI1NiAxOTkuOGwtNS40IDIyLjZjLTEuMyA1LjUgNC43IDkuOSA5LjYgNi45TDI4MCAyMTcuMmwxOS44IDEyLjFjNC45IDMgMTAuOS0xLjQgOS42LTYuOUwzMDQgMTk5LjhsMTcuNi0xNS4xYzQuMy0zLjcgMi0xMC44LTMuNy0xMS4ybC0yMy4xLTEuOS04LjktMjEuNGMtMi4yLTUuMy05LjYtNS4zLTExLjggMHpNOTYgMTkyYzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4YzI1LjYgMCA0OS41LTcuNSA2OS41LTIwLjVjMy4yLTIuMSA0LjUtNi4yIDMuMS05LjdzLTUuMi01LjYtOS00LjhjLTYuMSAxLjItMTIuNSAxLjktMTkgMS45Yy01Mi40IDAtOTQuOS00Mi41LTk0LjktOTQuOXM0Mi41LTk0LjkgOTQuOS05NC45YzYuNSAwIDEyLjggLjcgMTkgMS45YzMuOCAuOCA3LjUtMS4zIDktNC44cy4yLTcuNi0zLjEtOS43QzI3My41IDcxLjUgMjQ5LjYgNjQgMjI0IDY0QzE1My4zIDY0IDk2IDEyMS4zIDk2IDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va1NrdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA0MyA0MyAwIDk2IDBIMzg0aDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMnY2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzODQgOTZjLTUzIDAtOTYtNDMtOTYtOTZWOTZ6TTY0IDQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzNTJWMzg0SDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMzIwIDExMmMwLTM1LjMtMzUuOC02NC04MC02NHMtODAgMjguNy04MCA2NGMwIDIwLjkgMTIuNiAzOS41IDMyIDUxLjJWMTc2YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZWMTYzLjJjMTkuNC0xMS43IDMyLTMwLjMgMzItNTEuMnpNMjA4IDk2YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnptNDggMTZhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHpNMTM0LjMgMjA5LjNjLTguMS0zLjUtMTcuNSAuMy0yMSA4LjRzLjMgMTcuNSA4LjQgMjFMMTk5LjQgMjcybC03Ny43IDMzLjNjLTguMSAzLjUtMTEuOSAxMi45LTguNCAyMXMxMi45IDExLjkgMjEgOC40TDI0MCAyODkuNGwxMDUuNyA0NS4zYzguMSAzLjUgMTcuNS0uMyAyMS04LjRzLS4zLTE3LjUtOC40LTIxTDI4MC42IDI3Mmw3Ny43LTMzLjNjOC4xLTMuNSAxMS45LTEyLjkgOC40LTIxcy0xMi45LTExLjktMjEtOC40TDI0MCAyNTQuNiAxMzQuMyAyMDkuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va1RhbmFraCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMGM1MyAwIDk2IDQzIDk2IDk2VjQxNmMwIDUzLTQzIDk2LTk2IDk2SDY0IDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyVjM4NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzJDMCAxNC4zIDE0LjMgMCAzMiAwSDY0IDM1MnptMCAzODRIOTZ2NjRIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyek0xMzguNyAyMDhsMTMuOSAyNEgxMjQuOWwxMy45LTI0em0tMTMuOS0yNEw5Ny4xIDIzMmMtNi4yIDEwLjcgMS41IDI0IDEzLjkgMjRoNTUuNGwyNy43IDQ4YzYuMiAxMC43IDIxLjYgMTAuNyAyNy43IDBsMjcuNy00OEgzMDVjMTIuMyAwIDIwLTEzLjMgMTMuOS0yNGwtMjcuNy00OCAyNy43LTQ4YzYuMi0xMC43LTEuNS0yNC0xMy45LTI0SDI0OS42TDIyMS45IDY0Yy02LjItMTAuNy0yMS42LTEwLjctMjcuNyAwbC0yNy43IDQ4SDExMWMtMTIuMyAwLTIwIDEzLjMtMTMuOSAyNGwyNy43IDQ4em0yNy43IDBsMjcuNy00OGg1NS40bDI3LjcgNDgtMjcuNyA0OEgxODAuM2wtMjcuNy00OHptMC00OGwtMTMuOSAyNC0xMy45LTI0aDI3Ljd6bTQxLjYtMjRMMjA4IDg4bDEzLjkgMjRIMTk0LjF6bTY5LjMgMjRoMjcuN2wtMTMuOSAyNC0xMy45LTI0em0xMy45IDcybDEzLjkgMjRIMjYzLjRsMTMuOS0yNHptLTU1LjQgNDhMMjA4IDI4MGwtMTMuOS0yNGgyNy43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBDNDMgMCAwIDQzIDAgOTZWNDE2YzAgNTMgNDMgOTYgOTYgOTZIMzg0aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjM4NGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkgzODQgOTZ6bTAgMzg0SDM1MnY2NEg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMzItMjQwYzAtOC44IDcuMi0xNiAxNi0xNkgzMzZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTQ0Yy04LjggMC0xNi03LjItMTYtMTZ6bTE2IDQ4SDMzNmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxNDRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDhWNDg3LjdDMCA1MDEuMSAxMC45IDUxMiAyNC4zIDUxMmM1IDAgOS45LTEuNSAxNC00LjRMMTkyIDQwMCAzNDUuNyA1MDcuNmM0LjEgMi45IDkgNC40IDE0IDQuNGMxMy40IDAgMjQuMy0xMC45IDI0LjMtMjQuM1Y0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OEMyMS41IDAgMCAyMS41IDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvcmRlckFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgOTZWMjI0SDI1NlY5NkgzODR6bTAgMTkyVjQxNkgyNTZWMjg4SDM4NHpNMTkyIDIyNEg2NFY5NkgxOTJWMjI0ek02NCAyODhIMTkyVjQxNkg2NFYyODh6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9yZGVyTm9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0ODBhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em05Ni02NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTAtMzg0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMCAyNTZhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0ek0zMjAgNDE2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMC0zMjBhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em0wIDEyOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTIyNCA0ODBhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em0wLTQ0OGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTAgMjU2YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHpNNDE2IDQxNmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTAtMzg0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMzIgOTZhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0ek00MTYgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMzIgMjg4YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHptMTkyIDMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTkyIDY0YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHpNMzIgMzIwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNNDE2IDE5MmEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6TTMyIDEyOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTE5MiA2NGEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvcmRlclRvcExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTMzNmMwLTguOCA3LjItMTYgMTYtMTZsMzM2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMODAgMzJDMzUuOCAzMiAwIDY3LjggMCAxMTJMMCA0NDh6bTE2MCAwYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTE5MiAwYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bS05NiAwYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTE5MiAwYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTQxNiAyODhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0wIDMyYTMyIDMyIDAgMSAwIDAgNjQgMzIgMzIgMCAxIDAgMC02NHptMC0xMjhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3JlSG9sZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWMjk2LjZjLTE5LjEgMTEuMS0zMiAzMS43LTMyIDU1LjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NGMwLTIzLjctMTIuOS00NC40LTMyLTU1LjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTQ4IDEyOGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDQ2NGMyNi41IDAgNDgtMjEuNSA0OC00OFYxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMlYzNTJjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZWMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMySDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3R0bGVEcm9wbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBDODIuNyAwIDcyIDEwLjcgNzIgMjRzMTAuNyAyNCAyNCAyNGM0LjQgMCA4IDMuNiA4IDh2NjQuOWMwIDEyLjItNy4yIDIzLjEtMTcuMiAzMC4xQzUzLjcgMTc0LjEgMzIgMjEyLjUgMzIgMjU2VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgyMjRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjU2YzAtNDMuNS0yMS43LTgxLjktNTQuOC0xMDVjLTEwLTctMTcuMi0xNy45LTE3LjItMzAuMVY1NmMwLTQuNCAzLjYtOCA4LThjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTggMCAwIDAgMCAwSDEwNGwwIDAgMCAwTDk2IDB6bTY0IDM4MmMtMjYuNSAwLTQ4LTIwLjEtNDgtNDVjMC0xNi44IDIyLjEtNDguMSAzNi4zLTY2LjRjNi03LjggMTcuNS03LjggMjMuNSAwQzE4NS45IDI4OC45IDIwOCAzMjAuMiAyMDggMzM3YzAgMjQuOS0yMS41IDQ1LTQ4IDQ1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3R0bGVXYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjAgMGw4MCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgNDBMOTYgNjRsMC00MGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNMzIgMTY3LjVjMC0xOS41IDEwLTM3LjYgMjYuNi00Ny45bDE1LjgtOS45Qzg4LjcgMTAwLjcgMTA1LjIgOTYgMTIyLjEgOTZsNzUuOCAwYzE2LjkgMCAzMy40IDQuNyA0Ny43IDEzLjdsMTUuOCA5LjlDMjc4IDEyOS45IDI4OCAxNDggMjg4IDE2Ny41YzAgMTctNy41IDMyLjMtMTkuNCA0Mi42QzI4MC42IDIyMS43IDI4OCAyMzggMjg4IDI1NmMwIDE5LjEtOC40IDM2LjMtMjEuNyA0OGMxMy4zIDExLjcgMjEuNyAyOC45IDIxLjcgNDhzLTguNCAzNi4zLTIxLjcgNDhjMTMuMyAxMS43IDIxLjcgMjguOSAyMS43IDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0TDk2IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRjMC0xOS4xIDguNC0zNi4zIDIxLjctNDhDNDAuNCAzODguMyAzMiAzNzEuMSAzMiAzNTJzOC40LTM2LjMgMjEuNy00OEM0MC40IDI5Mi4zIDMyIDI3NS4xIDMyIDI1NmMwLTE4IDcuNC0zNC4zIDE5LjQtNDUuOUMzOS41IDE5OS43IDMyIDE4NC41IDMyIDE2Ny41ek05NiAyNDBjMCA4LjggNy4yIDE2IDE2IDE2bDk2IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTk2IDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMTYgMTEyYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDk2IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTk2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvd2xGb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTkyYzAtMzUuMyAyOC43LTY0IDY0LTY0Yy41IDAgMS4xIDAgMS42IDBDNzMgOTEuNSAxMDUuMyA2NCAxNDQgNjRjMTUgMCAyOSA0LjEgNDAuOSAxMS4yQzE5OC4yIDQ5LjYgMjI1LjEgMzIgMjU2IDMyczU3LjggMTcuNiA3MS4xIDQzLjJDMzM5IDY4LjEgMzUzIDY0IDM2OCA2NGMzOC43IDAgNzEgMjcuNSA3OC40IDY0Yy41IDAgMS4xIDAgMS42IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRjMCAxMS43LTMuMSAyMi42LTguNiAzMkg4LjZDMy4xIDIxNC42IDAgMjAzLjcgMCAxOTJ6bTAgOTEuNEMwIDI2OC4zIDEyLjMgMjU2IDI3LjQgMjU2SDQ4NC42YzE1LjEgMCAyNy40IDEyLjMgMjcuNCAyNy40YzAgNzAuNS00NC40IDEzMC43LTEwNi43IDE1NC4xTDQwMy41IDQ1MmMtMiAxNi0xNS42IDI4LTMxLjggMjhIMTQwLjJjLTE2LjEgMC0yOS44LTEyLTMxLjgtMjhsLTEuOC0xNC40QzQ0LjQgNDE0LjEgMCAzNTMuOSAwIDI4My40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3dsUmljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgNTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptMjQgNDhoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0ek01NiAxNzZINzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6TTAgMjgzLjRDMCAyNjguMyAxMi4zIDI1NiAyNy40IDI1Nkg0ODQuNmMxNS4xIDAgMjcuNCAxMi4zIDI3LjQgMjcuNGMwIDcwLjUtNDQuNCAxMzAuNy0xMDYuNyAxNTQuMUw0MDMuNSA0NTJjLTIgMTYtMTUuNiAyOC0zMS44IDI4SDE0MC4yYy0xNi4xIDAtMjkuOC0xMi0zMS44LTI4bC0xLjgtMTQuNEM0NC40IDQxNC4xIDAgMzUzLjkgMCAyODMuNHpNMjI0IDIwMGMwLTEzLjMgMTAuNy0yNCAyNC0yNGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNDhjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0tOTYgMGMwLTEzLjMgMTAuNy0yNCAyNC0yNGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgxNTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0tMjQtOTZoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMTA0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0em0yMTYgOTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMzQ0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptLTI0LTk2aDE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI5NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptMTIwIDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0aDE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDQ0MGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bS0yNC05NmgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgzOTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6TTI5NiAzMmgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyOTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvd2xpbmdCYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0yNDAgODBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0yMDggMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bS02NC02NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJveEFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyQzE0LjMgMTI4IDAgMTEzLjcgMCA5NlY2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMnptMCAxMjhINDgwVjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg5NmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTYwem0xMjggODBjMCA4LjggNy4yIDE2IDE2IDE2SDMzNmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm94T3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01OC45IDQyLjFjMy02LjEgOS42LTkuNiAxNi4zLTguN0wzMjAgNjQgNTY0LjggMzMuNGM2LjctLjggMTMuMyAyLjcgMTYuMyA4LjdsNDEuNyA4My40YzkgMTcuOS0uNiAzOS42LTE5LjggNDUuMUw0MzkuNiAyMTcuM2MtMTMuOSA0LTI4LjgtMS45LTM2LjItMTQuM0wzMjAgNjQgMjM2LjYgMjAzYy03LjQgMTIuNC0yMi4zIDE4LjMtMzYuMiAxNC4zTDM3LjEgMTcwLjZjLTE5LjMtNS41LTI4LjgtMjcuMi0xOS44LTQ1LjFMNTguOSA0Mi4xek0zMjEuMSAxMjhsNTQuOSA5MS40YzE0LjkgMjQuOCA0NC42IDM2LjYgNzIuNSAyOC42TDU3NiAyMTEuNnYxNjdjMCAyMi0xNSA0MS4yLTM2LjQgNDYuNmwtMjA0LjEgNTFjLTEwLjIgMi42LTIwLjkgMi42LTMxIDBsLTIwNC4xLTUxQzc5IDQxOS43IDY0IDQwMC41IDY0IDM3OC41di0xNjdMMTkxLjYgMjQ4YzI3LjggOCA1Ny42LTMuOCA3Mi41LTI4LjZMMzE4LjkgMTI4aDIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm94VGlzc3VlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkyLjUgMEgyMDhjNDAgMCA1MiAyNCA2NCA0OHMyNCA0OCA2NCA0OGg4NS4yQzQzNiA5NiA0NDggMTA4IDQ0OCAxMjIuOGMwIDMuNC0uNyA2LjgtMS45IDEwTDQwOS42IDIyNCAzODQgMjg4SDEyOGwtMTYtNjRMNjQuOSAzNS40Yy0uNi0yLjMtLjktNC42LS45LTYuOUM2NCAxMi44IDc2LjggMCA5Mi41IDB6TTc5IDIyNGwxNiA2NEg4MGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg0OEgzODRoNDhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZINDE4LjVsMjUuNi02NEg0NjRjMjYuNSAwIDQ4IDIxLjUgNDggNDhWMzg0SDBWMjcyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDc5ek0wIDQxNkg1MTJ2NDhjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwLjcgNTguNUwwIDE2MEgyMDhWMzJIOTMuN0M3NS41IDMyIDU4LjkgNDIuMyA1MC43IDU4LjV6TTI0MCAxNjBINDQ4TDM5Ny4zIDU4LjVDMzg5LjEgNDIuMyAzNzIuNSAzMiAzNTQuMyAzMkgyNDBWMTYwem0yMDggMzJIMFY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm94ZXNQYWNraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGMwLTI2LjUgMjEuNS00OCA0OC00OEg1OTJjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDM4MS4zYzEuOC01IDIuNy0xMC40IDIuNy0xNlYyNTMuM2MxOC42LTYuNiAzMi0yNC40IDMyLTQ1LjNWMTc2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDI1NlY0OHpNNTcxLjMgMzQ3LjNjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTY0LTY0Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMGwtNjQgNjRjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMEw0ODAgMzEwLjZWNDMyYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzEwLjZsMzYuNyAzNi43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwek0wIDE3NmMwLTguOCA3LjItMTYgMTYtMTZIMzY4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZ6bTM1MiA4MFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJINjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjI1NkgzNTJ6TTE0NCAzMjBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoOTZjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMTQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3hlc1N0YWNrZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDBIMjA4Yy0yNi41IDAtNDggMjEuNS00OCA0OFYxNjBjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzUyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDMyOFY4MGMwIDguOC03LjIgMTYtMTYgMTZIMjY0Yy04LjggMC0xNi03LjItMTYtMTZWMHpNNjQgMjU2Yy0zNS4zIDAtNjQgMjguNy02NCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMjI0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjMyMGMwLTM1LjMtMjguNy02NC02NC02NEgxODR2ODBjMCA4LjgtNy4yIDE2LTE2IDE2SDEyMGMtOC44IDAtMTYtNy4yLTE2LTE2VjI1Nkg2NHpNMzUyIDUxMkg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDQ3MnY4MGMwIDguOC03LjIgMTYtMTYgMTZINDA4Yy04LjggMC0xNi03LjItMTYtMTZWMjU2SDM1MmMtMTUgMC0yOC44IDUuMS0zOS43IDEzLjhjNC45IDEwLjQgNy43IDIyIDcuNyAzNC4yVjQ2NGMwIDEyLjItMi44IDIzLjgtNy43IDM0LjJDMzIzLjIgNTA2LjkgMzM3IDUxMiAzNTIgNTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmFpbGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgMCA5NnpNMjI0IDI3MmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bTAtODBhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6TTgwIDQxNmExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwek0wIDQxNmE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSAwIDQxNnptMjQwIDBhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptLTgwIDBhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwek02NCAxOTJhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6TTIyNCAzMmE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNMzUyIDk2YTY0IDY0IDAgMSAxIDEyOCAwQTY0IDY0IDAgMSAxIDM1MiA5NnptMjQwIDBhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptLTgwIDBhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgNTEyIDk2em02NCAxNzZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0wLTgwYTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4em0xNiAyMjRhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptLTgwIDBhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwek00MTYgMjcyYTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnptMC04MGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHptMTYgMjI0YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bS04MCAwYTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg0IDBjMzAuOSAwIDU2IDI1LjEgNTYgNTZWNDU2YzAgMzAuOS0yNS4xIDU2LTU2IDU2Yy0yOC45IDAtNTIuNy0yMS45LTU1LjctNTAuMWMtNS4yIDEuNC0xMC43IDIuMS0xNi4zIDIuMWMtMzUuMyAwLTY0LTI4LjctNjQtNjRjMC03LjQgMS4zLTE0LjYgMy42LTIxLjJDMjEuNCAzNjcuNCAwIDMzOC4yIDAgMzA0YzAtMzEuOSAxOC43LTU5LjUgNDUuOC03Mi4zQzM3LjEgMjIwLjggMzIgMjA3IDMyIDE5MmMwLTMwLjcgMjEuNi01Ni4zIDUwLjQtNjIuNkM4MC44IDEyMy45IDgwIDExOCA4MCAxMTJjMC0yOS45IDIwLjYtNTUuMSA0OC4zLTYyLjFDMTMxLjMgMjEuOSAxNTUuMSAwIDE4NCAwek0zMjggMGMyOC45IDAgNTIuNiAyMS45IDU1LjcgNDkuOWMyNy44IDcgNDguMyAzMi4xIDQ4LjMgNjIuMWMwIDYtLjggMTEuOS0yLjQgMTcuNGMyOC44IDYuMiA1MC40IDMxLjkgNTAuNCA2Mi42YzAgMTUtNS4xIDI4LjgtMTMuOCAzOS43QzQ5My4zIDI0NC41IDUxMiAyNzIuMSA1MTIgMzA0YzAgMzQuMi0yMS40IDYzLjQtNTEuNiA3NC44YzIuMyA2LjYgMy42IDEzLjggMy42IDIxLjJjMCAzNS4zLTI4LjcgNjQtNjQgNjRjLTUuNiAwLTExLjEtLjctMTYuMy0yLjFjLTMgMjguMi0yNi44IDUwLjEtNTUuNyA1MC4xYy0zMC45IDAtNTYtMjUuMS01Ni01NlY1NmMwLTMwLjkgMjUuMS01NiA1Ni01NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJhemlsaWFuUmVhbFNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNTAuMmMxMi41IDIuMyAyNC43IDYuNCAzNi4yIDEyLjFsMTAuMSA1LjFjMTUuOCA3LjkgMjIuMiAyNy4xIDE0LjMgNDIuOXMtMjcuMSAyMi4yLTQyLjkgMTQuM2wtMTAuMi01LjFjLTkuOS01LTIwLjktNy41LTMyLTcuNWgtMS43Yy0yOS44IDAtNTMuOSAyNC4xLTUzLjkgNTMuOWMwIDIyIDEzLjQgNDEuOCAzMy45IDUwbDUyIDIwLjhjNDQuNyAxNy45IDc0LjEgNjEuMiA3NC4xIDEwOS40djMuNGMwIDUxLjItMzMuNiA5NC42LTgwIDEwOS4yVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NjAuNmMtMTUtMy41LTI5LjQtOS43LTQyLjMtMTguM2wtMjMuNC0xNS42Yy0xNC43LTkuOC0xOC43LTI5LjctOC45LTQ0LjRzMjkuNy0xOC43IDQ0LjQtOC45TDM2MS4yIDM4OWMxMC44IDcuMiAyMy40IDExIDM2LjMgMTFjMjcuOSAwIDUwLjUtMjIuNiA1MC41LTUwLjV2LTMuNGMwLTIyLTEzLjQtNDEuOC0zMy45LTUwbC01Mi0yMC44QzMxNy4zIDI1Ny40IDI4OCAyMTQuMSAyODggMTY1LjlDMjg4IDExNCAzMjEuNSA3MCAzNjggNTQuMlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMmg4MGM3OS41IDAgMTQ0IDY0LjUgMTQ0IDE0NGMwIDU4LjgtMzUuMiAxMDkuMy04NS43IDEzMS43bDUxLjQgMTI4LjRjNi42IDE2LjQtMS40IDM1LTE3LjggNDEuNnMtMzUtMS40LTQxLjYtMTcuOEwxMDYuMyAzMjBINjRWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI4OCA2NHpNNjQgMjU2aDQ4YzQ0LjIgMCA4MC0zNS44IDgwLTgwcy0zNS44LTgwLTgwLTgwSDY0VjI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJlYWRTbGljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJDMTkyIDMyIDAgNjQgMCAxOTJjMCAzNS4zIDI4LjcgNjQgNjQgNjRWNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDQwMGMyNi41IDAgNDgtMjEuNSA0OC00OFYyNTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRDNTEyIDY0IDMyMCAzMiAyNTYgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyaWRnZUNpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzQ2LjMgMzIgMzIgNDYuMyAzMiA2NHMxNC4zIDMyIDMyIDMyaDQwdjY0SDMyVjI4OGM1MyAwIDk2IDQzIDk2IDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTUzIDQzLTk2IDk2LTk2YzYuMyAwIDEyLjQgLjYgMTguMyAxLjdDMzY3LjEgMjMxLjggNDI2LjkgMTkyIDQ5NiAxOTJjNDIuNSAwIDgxLjYgMTUuMSAxMTIgNDAuMlYxNjBINTM2Vjk2aDQwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDY0ek00ODggOTZ2NjRINDA4Vjk2aDgwek0zNjAgOTZ2NjRIMjgwVjk2aDgwek0yMzIgOTZ2NjRIMTUyVjk2aDgwek02NDAgMzY4YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS03Ni43LTQzLjNjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZsLTcyIDcyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMGwtNDAtNDBjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0ODAgMzg1LjRsNjAuNy02MC43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmlkZ2VDaXJjbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkM0Ni4zIDMyIDMyIDQ2LjMgMzIgNjRzMTQuMyAzMiAzMiAzMmg0MHY2NEgzMlYyODhjNTMgMCA5NiA0MyA5NiA5NnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMlYzODRjMC01MyA0My05NiA5Ni05NmM2LjMgMCAxMi40IC42IDE4LjMgMS43QzM2Ny4xIDIzMS44IDQyNi45IDE5MiA0OTYgMTkyYzQyLjUgMCA4MS42IDE1LjEgMTEyIDQwLjJWMTYwSDUzNlY5Nmg0MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg2NHpNNDg4IDk2djY0SDQwOFY5Nmg4MHpNMzYwIDk2djY0SDI4MFY5Nmg4MHpNMjMyIDk2djY0SDE1MlY5Nmg4MHpNNDk2IDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTAtOTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0wLTE0NGM4LjggMCAxNiA3LjIgMTYgMTZ2ODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjg4YzAtOC44IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJpZGdlQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDNDYuMyAzMiAzMiA0Ni4zIDMyIDY0czE0LjMgMzIgMzIgMzJoNDB2NjRIMzJWMjg4YzUzIDAgOTYgNDMgOTYgOTZ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzg0YzAtNTMgNDMtOTYgOTYtOTZjNi4zIDAgMTIuNCAuNiAxOC4zIDEuN0MzNjcuMSAyMzEuOCA0MjYuOSAxOTIgNDk2IDE5MmM0Mi41IDAgODEuNiAxNS4xIDExMiA0MC4yVjE2MEg1MzZWOTZoNDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjR6TTQ4OCA5NnY2NEg0MDhWOTZoODB6TTM2MCA5NnY2NEgyODBWOTZoODB6TTIzMiA5NnY2NEgxNTJWOTZoODB6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em01OS4zLTE4MC43TDUxOC42IDM2OGwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEw0OTYgMzkwLjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkw0NzMuNCAzNjhsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ5NiAzNDUuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmlkZ2VMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDU3NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg1MzZ2NjRoLThjLTYxLjkgMC0xMTIgNTAuMS0xMTIgMTEydjI0LjZjLTkuOSA1LjgtMTguMiAxNC4xLTIzLjggMjQuMWMtMTcuNi0yMC00My40LTMyLjctNzIuMi0zMi43Yy01MyAwLTk2IDQzLTk2IDk2djY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzg0YzAtNTMtNDMtOTYtOTYtOTZWMTYwaDcyVjk2SDY0QzQ2LjMgOTYgMzIgODEuNyAzMiA2NHpNNDA4IDk2djY0aDgwVjk2SDQwOHptLTQ4IDY0Vjk2SDI4MHY2NGg4MHpNMTUyIDk2djY0aDgwVjk2SDE1MnpNNTI4IDI0MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NDhoNjRWMjcyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tODAgMzJjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MHY0OGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJINDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNTJjMC0xNy43IDE0LjMtMzIgMzItMzJWMjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmlkZ2VXYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNzguMyAxNC4zIDY0IDMyIDY0SDU0NGMxNy43IDAgMzIgMTQuMyAzMiAzMnYzNS42YzAgMTUuNy0xMi43IDI4LjQtMjguNCAyOC40Yy0zNy4zIDAtNjcuNiAzMC4yLTY3LjYgNjcuNlYzNTIuNWMtMTIuOSAwLTI1LjggMy45LTM2LjggMTEuN2MtMTggMTIuNC00MC4xIDIwLjMtNTkuMiAyMC4zaDBsMC0uNVYyNTZjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZWMzg0bDAgLjVjLTE5IDAtNDEuMi03LjktNTkuMS0yMC4zYy0xMS4xLTcuOC0yNC0xMS43LTM2LjktMTEuN1YyMjcuNkM5NiAxOTAuMiA2NS44IDE2MCAyOC40IDE2MEMxMi43IDE2MCAwIDE0Ny4zIDAgMTMxLjZWOTZ6TTMwNi41IDM4OS45QzMyOSA0MDUuNCAzNTYuNSA0MTYgMzg0IDQxNmMyNi45IDAgNTUuNC0xMC44IDc3LjQtMjYuMWwwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSA0NjkuNyA0MTcgNDgwIDM4NCA0ODBjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40YzE4LjEtNC4yIDM2LjItMTMuMyA1MC42LTI1LjJjMTEuMS05LjQgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyA0MDUuMiAxNjUuMSA0MTYgMTkyIDQxNmMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJpZGdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRTMTQuMyA5NiAzMiA5Nkg3MnY2NEgwVjI4OGM1MyAwIDk2IDQzIDk2IDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTUzIDQzLTk2IDk2LTk2VjE2MEg1MDRWOTZoNDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJ6TTQ1NiA5NnY2NEgzNzZWOTZoODB6TTMyOCA5NnY2NEgyNDhWOTZoODB6TTIwMCA5NnY2NEgxMjBWOTZoODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyaWVmY2FzZU1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg0IDQ4SDMyOGM0LjQgMCA4IDMuNiA4IDhWOTZIMTc2VjU2YzAtNC40IDMuNi04IDgtOHptLTU2IDhWOTZINjRDMjguNyA5NiAwIDEyNC43IDAgMTYwVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDM4NFY1NmMwLTMwLjktMjUuMS01Ni01Ni01NkgxODRjLTMwLjkgMC01NiAyNS4xLTU2IDU2em05NiAxNTJjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY0OGg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI4OHY0OGMwIDguOC03LjIgMTYtMTYgMTZIMjQwYy04LjggMC0xNi03LjItMTYtMTZWMzIwSDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MmMwLTguOCA3LjItMTYgMTYtMTZoNDhWMjA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmllZmNhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg0IDQ4SDMyOGM0LjQgMCA4IDMuNiA4IDhWOTZIMTc2VjU2YzAtNC40IDMuNi04IDgtOHptLTU2IDhWOTZINjRDMjguNyA5NiAwIDEyNC43IDAgMTYwdjk2SDE5MiAzMjAgNTEyVjE2MGMwLTM1LjMtMjguNy02NC02NC02NEgzODRWNTZjMC0zMC45LTI1LjEtNTYtNTYtNTZIMTg0Yy0zMC45IDAtNTYgMjUuMS01NiA1NnpNNTEyIDI4OEgzMjB2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJIMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyODhIMFY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJvb21CYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2Ni42IDkuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtMTkyIDE5MiAzNC43IDM0LjdjNC4yIDQuMiA2LjYgMTAgNi42IDE2YzAgMTIuNS0xMC4xIDIyLjYtMjIuNiAyMi42SDM2NC4zTDI1NiAyMTEuN1YxODIuNmMwLTEyLjUgMTAuMS0yMi42IDIyLjYtMjIuNmM2IDAgMTEuOCAyLjQgMTYgNi42bDM0LjcgMzQuNyAxOTItMTkyYzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwem0tMzQ0IDIyNS41TDM0MS4xIDM1My40YzMuNyA0Mi43LTExLjcgODUuMi00Mi4zIDExNS44QzI3MS40IDQ5Ni42IDIzNC4yIDUxMiAxOTUuNSA1MTJMMjIuMSA1MTJDOS45IDUxMiAwIDUwMi4xIDAgNDg5LjljMC02LjMgMi43LTEyLjMgNy4zLTE2LjVMMTMzLjcgMzU5LjdjNC4yLTMuNy0uNC0xMC40LTUuNC03LjlMNzcuMiAzNzcuNGMtNi4xIDMtMTMuMi0xLjQtMTMuMi04LjJjMC0zMS41IDEyLjUtNjEuNyAzNC44LTg0bDgtOGMzMC42LTMwLjYgNzMuMS00NS45IDExNS44LTQyLjN6TTQ2NCAzNTJhODAgODAgMCAxIDEgMCAxNjAgODAgODAgMCAxIDEgMC0xNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2Ni42IDU0LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTE5MiAxOTItMzQuNy0zNC43Yy00LjItNC4yLTEwLTYuNi0xNi02LjZjLTEyLjUgMC0yMi42IDEwLjEtMjIuNiAyMi42djI5LjFMMzY0LjMgMzIwaDI5LjFjMTIuNSAwIDIyLjYtMTAuMSAyMi42LTIyLjZjMC02LTIuNC0xMS44LTYuNi0xNmwtMzQuNy0zNC43IDE5Mi0xOTJ6TTM0MS4xIDM1My40TDIyMi42IDIzNC45Yy00Mi43LTMuNy04NS4yIDExLjctMTE1LjggNDIuM2wtOCA4Qzc2LjUgMzA3LjUgNjQgMzM3LjcgNjQgMzY5LjJjMCA2LjggNy4xIDExLjIgMTMuMiA4LjJsNTEuMS0yNS41YzUtMi41IDkuNSA0LjEgNS40IDcuOUw3LjMgNDczLjRDMi43IDQ3Ny42IDAgNDgzLjYgMCA0ODkuOUMwIDUwMi4xIDkuOSA1MTIgMjIuMSA1MTJsMTczLjMgMGMzOC44IDAgNzUuOS0xNS40IDEwMy40LTQyLjhjMzAuNi0zMC42IDQ1LjktNzMuMSA0Mi4zLTExNS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcnVzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjIuNCA2Yy0xLjUtMy42LTUtNi04LjktNmgtMTljLTMuOSAwLTcuNSAyLjQtOC45IDZMMTA0LjkgNTcuN2MtMy4yIDgtMTQuNiA4LTE3LjggMEw2Ni40IDZjLTEuNS0zLjYtNS02LTguOS02SDQ4QzIxLjUgMCAwIDIxLjUgMCA0OFYyMjR2MjIuNFYyNTZIOS42IDM3NC40IDM4NHYtOS42VjIyNCA0OGMwLTI2LjUtMjEuNS00OC00OC00OEgyMzAuNWMtMy45IDAtNy41IDIuNC04LjkgNkwyMDAuOSA1Ny43Yy0zLjIgOC0xNC42IDgtMTcuOCAwTDE2Mi40IDZ6TTAgMjg4djMyYzAgMzUuMyAyOC43IDY0IDY0IDY0aDY0djY0YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjRWMzg0aDY0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjI4OEgwek0xOTIgNDMyYTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDE1MnY4SDQ4di04QzQ4IDY4LjEgMTE2LjEgMCAyMDAgMGg0OGM4My45IDAgMTUyIDY4LjEgMTUyIDE1MnY4SDM1MnYtOGMwLTU3LjQtNDYuNi0xMDQtMTA0LTEwNEgyMDBDMTQyLjYgNDggOTYgOTQuNiA5NiAxNTJ6TTAgMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmgtNS4xTDM4OC41IDQ2OWMtMi42IDI0LjQtMjMuMiA0My00Ny43IDQzSDEwNy4yYy0yNC42IDAtNDUuMi0xOC41LTQ3LjctNDNMMzcuMSAyNTZIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWdTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDQ3Ny40IDM0OC45YzEuNy05LjQgMi42LTE5IDIuNi0yOC45aDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ3OS43Yy0xLjEtMTQuMS01LTI3LjUtMTEuMS0zOS41Yy43LS42IDEuNC0xLjIgMi4xLTEuOWw2NC02NGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtNjQgNjRjLS43IC43LTEuMyAxLjQtMS45IDIuMUM0MDkuMiAxNjQuMSAzOTMuMSAxNjAgMzc2IDE2MEgyNjRjLTguMyAwLTE2LjMgMS0yNCAyLjhMMzguOCA1LjF6bTM5MiA0MzAuM0wzMzYgMzYwLjdWNDc5LjJjMzYuNi0zLjYgNjkuNy0xOS42IDk0LjgtNDMuOHpNMTY2LjcgMjI3LjNjLTMuNCA5LTUuNiAxOC43LTYuNCAyOC43SDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDY0YzAgMjQuNiA1LjUgNDcuOCAxNS40IDY4LjZjLTIuMiAxLjMtNC4yIDIuOS02IDQuOGwtNjQgNjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsNjMuMS02My4xYzI0LjUgMjEuOCA1NS44IDM2LjIgOTAuMyAzOS42VjMzNS41TDE2Ni43IDIyNy4zek0zMjAgMGMtNTMgMC05NiA0My05NiA5NnYzLjZjMCAxNS43IDEyLjcgMjguNCAyOC40IDI4LjRIMzg3LjZjMTUuNyAwIDI4LjQtMTIuNyAyOC40LTI4LjRWOTZjMC01My00My05Ni05Ni05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYzUzIDAgOTYgNDMgOTYgOTZ2My42YzAgMTUuNy0xMi43IDI4LjQtMjguNCAyOC40SDE4OC40Yy0xNS43IDAtMjguNC0xMi43LTI4LjQtMjguNFY5NmMwLTUzIDQzLTk2IDk2LTk2ek00MS40IDEwNS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDY0IDY0Yy43IC43IDEuMyAxLjQgMS45IDIuMWMxNC4yLTcuMyAzMC40LTExLjQgNDcuNS0xMS40SDMxMmMxNy4xIDAgMzMuMiA0LjEgNDcuNSAxMS40Yy42LS43IDEuMi0xLjQgMS45LTIuMWw2NC02NGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zbC02NCA2NGMtLjcgLjctMS40IDEuMy0yLjEgMS45YzYuMiAxMiAxMC4xIDI1LjMgMTEuMSAzOS41SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0MTZjMCAyNC42LTUuNSA0Ny44LTE1LjQgNjguNmMyLjIgMS4zIDQuMiAyLjkgNiA0LjhsNjQgNjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBsLTYzLjEtNjMuMWMtMjQuNSAyMS44LTU1LjggMzYuMi05MC4zIDM5LjZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjQ3OS4yYy0zNC41LTMuNC02NS44LTE3LjgtOTAuMy0zOS42TDg2LjYgNTAyLjZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zbDY0LTY0YzEuOS0xLjkgMy45LTMuNCA2LTQuOEMxMDEuNSAzNjcuOCA5NiAzNDQuNiA5NiAzMjBIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIOTYuM2MxLjEtMTQuMSA1LTI3LjUgMTEuMS0zOS41Yy0uNy0uNi0xLjQtMS4yLTIuMS0xLjlsLTY0LTY0Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjQuNSAxMDcuNGwzMy40LTczLjVjNS41LTEyLjEgLjEtMjYuMy0xMS45LTMxLjhzLTI2LjMtLjEtMzEuOCAxMS45TDEyOCA3MS43IDEwMS45IDE0LjFDOTYuNCAyIDgyLjEtMy4zIDcwLjEgMi4xUzUyLjcgMjEuOSA1OC4xIDMzLjlsMzMuNCA3My41Yy0xMC4yIDcuMS0xOC4yIDE3LTIyLjkgMjguNmgtMTdsLTQuMS0yMC43Yy0yLjYtMTMtMTUuMi0yMS40LTI4LjItMTguOFMtMi4xIDExMS43IC41IDEyNC43bDggNDBDMTAuNyAxNzUuOSAyMC42IDE4NCAzMiAxODRINjR2MjMuM2wtMzcuOCA5LjVjLTkuNSAyLjQtMTYuNiAxMC4yLTE3LjkgMTkuOWwtOCA1NmMtMS45IDEzLjEgNy4yIDI1LjMgMjAuNCAyNy4yczI1LjMtNy4yIDI3LjItMjAuNGw1LjctNDAgMTguNC00LjZDODIuNyAyNzQuNiAxMDMuOCAyODggMTI4IDI4OHM0NS4zLTEzLjQgNTYuMS0zMy4ybDE4LjQgNC42IDUuNyA0MGMxLjkgMTMuMSAxNCAyMi4yIDI3LjIgMjAuNHMyMi4yLTE0IDIwLjQtMjcuMmwtOC01NmMtMS40LTkuNy04LjUtMTcuNS0xNy45LTE5LjlMMTkyIDIwNy4zVjE4NGgzMmMxMS40IDAgMjEuMy04LjEgMjMuNS0xOS4zbDgtNDBjMi42LTEzLTUuOC0yNS42LTE4LjgtMjguMnMtMjUuNiA1LjgtMjguMiAxOC44TDIwNC4zIDEzNmgtMTdjLTQuNy0xMS42LTEyLjctMjEuNS0yMi45LTI4LjZ6TTQ5NiAyODYuNWw2NS42LTQ3YzEwLjgtNy43IDEzLjMtMjIuNyA1LjYtMzMuNXMtMjIuNy0xMy4zLTMzLjUtNS42bC01MS40IDM2LjggNi4xLTYyLjljMS4zLTEzLjItOC40LTI0LjktMjEuNi0yNi4ycy0yNC45IDguNC0yNi4yIDIxLjZMNDMyLjggMjUwYy0xMi4zIDEtMjQuMiA1LjYtMzQuMSAxMy4zTDM4NCAyNTQuOGw2LjgtMjBjNC4yLTEyLjYtMi41LTI2LjItMTUtMzAuNHMtMjYuMiAyLjUtMzAuNCAxNWwtMTMuMSAzOC42Yy0zLjcgMTAuOCAuOCAyMi44IDEwLjcgMjguNWwyNy43IDE2TDM1OSAzMjIuNyAzMjEuNSAzMTJjLTkuNC0yLjctMTkuNSAuNi0yNS41IDguM2wtMzQuOSA0NC41Yy04LjIgMTAuNC02LjQgMjUuNSA0LjEgMzMuN3MyNS41IDYuNCAzMy43LTQuMWwyNS0zMS44IDE4LjIgNS4yYy0uNSAyMi42IDExIDQ0LjcgMzIgNTYuOHM0NS45IDExIDY1LjItLjdsMTMuNiAxMy4yLTE1LjEgMzcuNWMtNC45IDEyLjMgMSAyNi4zIDEzLjMgMzEuMnMyNi4zLTEgMzEuMi0xMy4zTDUwMy41IDQ0MGMzLjYtOS4xIDEuNC0xOS40LTUuNi0yNi4ybC0yOC0yNy4xIDExLjYtMjAuMSAyNy43IDE2YzkuOSA1LjcgMjIuNSAzLjcgMzAtNC45TDU2Ni4yIDM0N2M4LjctMTAgNy44LTI1LjEtMi4yLTMzLjlzLTI1LjEtNy44LTMzLjkgMi4ybC0xMy45IDE1LjktMTQuNy04LjVjMS43LTEyLjQtLjItMjUtNS41LTM2LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nQ2lyY2xlQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQ4QzAgMjEuNSAyMS41IDAgNDggMEgzMzZjMjYuNSAwIDQ4IDIxLjUgNDggNDhWMjMyLjJjLTM5LjEgMzIuMy02NCA4MS4xLTY0IDEzNS44YzAgNDkuNSAyMC40IDk0LjIgNTMuMyAxMjYuMkMzNjQuNSA1MDUuMSAzNTEuMSA1MTIgMzM2IDUxMkgyNDBWNDMyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4djgwSDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY0OHpNODAgMjI0Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDgwem04MCAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZIMTc2Yy04LjggMC0xNiA3LjItMTYgMTZ6bTExMi0xNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkgyNzJ6TTY0IDExMnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZIODBjLTguOCAwLTE2IDcuMi0xNiAxNnpNMTc2IDk2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDE3NnptODAgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2em05NiAyNTZhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMTQwLjctNjcuM2MtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZMNTIxLjQgMzUySDQzMmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg4OS40bC0yOC43IDI4LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGw1Ni01NmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtNTYtNTZjLTYuMi02LjItMTYuNC02LjItMjIuNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWlsZGluZ0NpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NlY0MzJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY4MGg5NmMxNS4xIDAgMjguNS02LjkgMzcuMy0xNy44QzM0MC40IDQ2Mi4yIDMyMCA0MTcuNSAzMjAgMzY4YzAtNTQuNyAyNC45LTEwMy41IDY0LTEzNS44VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek02NCAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6bTExMi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MGMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHpNODAgOTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMnpNMjcyIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnpNNjQwIDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNzYuNy00My4zYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC03MiA3MmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDgwIDM4NS40bDYwLjctNjAuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVpbGRpbmdDaXJjbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoOTZWNDMyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2ODBoOTZjMTUuMSAwIDI4LjUtNi45IDM3LjMtMTcuOEMzNDAuNCA0NjIuMiAzMjAgNDE3LjUgMzIwIDM2OGMwLTU0LjcgMjQuOS0xMDMuNSA2NC0xMzUuOFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMjQwem0xMTItMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTgwIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJ6TTI3MiA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTk2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMC0xNDRjOC44IDAgMTYgNy4yIDE2IDE2djgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI4OGMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMEMyMS41IDAgMCAyMS41IDAgNDhWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDk2VjQzMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djgwaDk2YzE1LjEgMCAyOC41LTYuOSAzNy4zLTE3LjhDMzQwLjQgNDYyLjIgMzIwIDQxNy41IDMyMCAzNjhjMC01NC43IDI0LjktMTAzLjUgNjQtMTM1LjhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTY0IDI0MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHptMTEyLTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMjQwek04MCA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMTEyek0yNzIgOTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2ek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptNTkuMy0xODAuN0w1MTguNiAzNjhsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBMNDk2IDM5MC42bC0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMNDczLjQgMzY4bC0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0OTYgMzQ1LjRsMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVpbGRpbmdDb2x1bW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0My40IDIuNmwtMjI0IDk2Yy0xNCA2LTIxLjggMjEtMTguNyAzNS44UzE2LjggMTYwIDMyIDE2MHY4YzAgMTMuMyAxMC43IDI0IDI0IDI0SDQ1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtOGMxNS4yIDAgMjguMy0xMC43IDMxLjMtMjUuNnMtNC44LTI5LjktMTguNy0zNS44bC0yMjQtOTZjLTgtMy40LTE3LjItMy40LTI1LjIgMHpNMTI4IDIyNEg2NFY0MjAuM2MtLjYgLjMtMS4yIC43LTEuOCAxLjFsLTQ4IDMyYy0xMS43IDcuOC0xNyAyMi40LTEyLjkgMzUuOVMxNy45IDUxMiAzMiA1MTJINDgwYzE0LjEgMCAyNi41LTkuMiAzMC42LTIyLjdzLTEuMS0yOC4xLTEyLjktMzUuOWwtNDgtMzJjLS42LS40LTEuMi0uNy0xLjgtMS4xVjIyNEgzODRWNDE2SDM0NFYyMjRIMjgwVjQxNkgyMzJWMjI0SDE2OFY0MTZIMTI4VjIyNHpNMjU2IDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVpbGRpbmdGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NlY0MzJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY4MGg5NmMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMjQwem0xMTItMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTgwIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJ6TTI3MiA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6TTQ0OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY1MTJoNjRWMTkySDYyNGM4LjggMCAxNi03LjIgMTYtMTZWNDhjMC04LjgtNy4yLTE2LTE2LTE2SDQ4MGMwLTE3LjctMTQuMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVpbGRpbmdMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NlY0MzJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY4MGg4OC42Yy01LjQtOS40LTguNi0yMC4zLTguNi0zMlYzNTJjMC0yMy43IDEyLjktNDQuNCAzMi01NS40VjI3MmMwLTMwLjUgMTIuMi01OC4yIDMyLTc4LjRWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTY0IDI0MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHptMTEyLTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMjQwek04MCA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMTEyek0yNzIgOTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2ek00NjQgMjQwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjQ4SDQzMlYyNzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6bS04MCAzMnY0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNTJjMC0xNy43LTE0LjMtMzItMzItMzJWMjcyYzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWlsZGluZ05nbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoOTZWNDMyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2ODBoOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTY0IDI0MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHptMTEyLTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMjQwek0xNjggNjRoNDhjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTg0djY0aDE2VjE0NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djI0YzAgMTMuMy0xMC43IDI0LTI0IDI0SDE3NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRWODBjMC04LjggNy4yLTE2IDE2LTE2ek0zMDQgOTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZ6bS00OCAxNmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djMyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4VjExMnpNNjEuMyA3MS4xbDM0LjcgNTJWODBjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY5NmMwIDcuMS00LjYgMTMuMy0xMS40IDE1LjNzLTE0LS42LTE3LjktNi40TDY0IDEzMi44VjE3NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlY4MGMwLTcuMSA0LjYtMTMuMyAxMS40LTE1LjNzMTQgLjYgMTcuOSA2LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nU2hpZWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwSDMzNmMyNi41IDAgNDggMjEuNSA0OCA0OFYyMDdsLTQyLjQgMTdIMzA0IDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2djMyIDI0LjJWMzA0YzAgLjkgLjEgMS43IC4yIDIuNmMyLjMgNTguMSAyNC4xIDE0NC44IDk4LjcgMjAxLjVjLTUuOCAyLjUtMTIuMiAzLjktMTguOSAzLjlIMjQwVjQzMmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHY4MEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDh6TTgwIDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkg4MHptODAgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2ek02NCAxMTJ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDgwYy04LjggMC0xNiA3LjItMTYgMTZ6TTE3NiA5NmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgxNzZ6bTgwIDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnpNNDIzLjEgMjI1LjdjNS43LTIuMyAxMi4xLTIuMyAxNy44IDBsMTIwIDQ4QzU3MCAyNzcuNCA1NzYgMjg2LjIgNTc2IDI5NmMwIDYzLjMtMjUuOSAxNjguOC0xMzQuOCAyMTQuMmMtNS45IDIuNS0xMi42IDIuNS0xOC41IDBDMzEzLjkgNDY0LjggMjg4IDM1OS4zIDI4OCAyOTZjMC05LjggNi0xOC42IDE1LjEtMjIuM2wxMjAtNDh6TTUyNy40IDMxMkw0MzIgMjczLjhWNDYxLjdjNjguMi0zMyA5MS41LTk5IDk1LjQtMTQ5Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nVW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMEMyMS41IDAgMCAyMS41IDAgNDhWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDk2VjQzMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djgwaDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek02NCAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6bTExMi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MGMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHpNMjM3LjMgNzEuMWwzNC43IDUyVjgwYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2OTZjMCA3LjEtNC42IDEzLjMtMTEuNCAxNS4zcy0xNC0uNi0xNy45LTYuNGwtMzQuNy01MlYxNzZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWODBjMC03LjEgNC42LTEzLjMgMTEuNC0xNS4zczE0IC42IDE3LjkgNi40ek0xMTIgODB2NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlY4MGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4VjgwYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoOTZWNDMyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2ODBoODkuOWMtNi4zLTEwLjItOS45LTIyLjItOS45LTM1LjFjMC00Ni45IDI1LjgtODcuOCA2NC0xMDkuMlYyNzEuOCA0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMjQwem0xMTItMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTgwIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJ6TTI3MiA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6TTU3NiAyNzJhODAgODAgMCAxIDAgLTE2MCAwIDgwIDgwIDAgMSAwIDE2MCAwek0zNTIgNDc3LjFjMCAxOS4zIDE1LjYgMzQuOSAzNC45IDM0LjlINjA1LjFjMTkuMyAwIDM0LjktMTUuNiAzNC45LTM0LjljMC01MS40LTQxLjctOTMuMS05My4xLTkzLjFINDQ1LjFjLTUxLjQgMC05My4xIDQxLjctOTMuMSA5My4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWlsZGluZ1doZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwSDMzNmMyNi41IDAgNDggMjEuNSA0OCA0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMjQwVjQzMmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHY4MEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDh6TTgwIDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkg4MHptODAgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2em0xMTItMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZIMjcyek02NCAxMTJ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDgwYy04LjggMC0xNiA3LjItMTYgMTZ6TTE3NiA5NmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgxNzZ6bTgwIDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnptMzg0IDgwdjE2YzAgNDQuMi0zNS44IDgwLTgwIDgwSDU0NFYyNzJjMC00NC4yIDM1LjgtODAgODAtODBoMTZ6bTAgMTI4YzAgNDQuMi0zNS44IDgwLTgwIDgwSDU0NFYzODRjMC00NC4yIDM1LjgtODAgODAtODBoMTZ2MTZ6bTAgMTEyYzAgNDQuMi0zNS44IDgwLTgwIDgwSDU0NFY0OTZjMC00NC4yIDM1LjgtODAgODAtODBoMTZ2MTZ6TTUxMiA0OTZ2MTZINDk2Yy00NC4yIDAtODAtMzUuOC04MC04MFY0MTZoMTZjNDQuMiAwIDgwIDM1LjggODAgODB6bTAtOTZINDk2Yy00NC4yIDAtODAtMzUuOC04MC04MFYzMDRoMTZjNDQuMiAwIDgwIDM1LjggODAgODB2MTZ6bTAtMTI4djE2SDQ5NmMtNDQuMiAwLTgwLTM1LjgtODAtODBWMTkyaDE2YzQ0LjIgMCA4MCAzNS44IDgwIDgwek01MjggMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRWMTYwYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjU2YzAtMTMuMyAxMC43LTI0IDI0LTI0em05NiA2NHYzMmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY5NmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0ek00NTYgNzJjMTMuMyAwIDI0IDEwLjcgMjQgMjR2MzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWOTZjMC0xMy4zIDEwLjctMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NlY0MzJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY4MGg5NmMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMjQwem0xMTItMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTgwIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJ6TTI3MiA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1bGxob3JuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAzMmMwLTEyLjktNy44LTI0LjYtMTkuOC0yOS42cy0yNS43LTIuMi0zNC45IDYuOUwzODEuNyA1M2MtNDggNDgtMTEzLjEgNzUtMTgxIDc1SDE5MiAxNjAgNjRjLTM1LjMgMC02NCAyOC43LTY0IDY0djk2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM1Mmw4LjcgMGM2Ny45IDAgMTMzIDI3IDE4MSA3NWw0My42IDQzLjZjOS4yIDkuMiAyMi45IDExLjkgMzQuOSA2LjlzMTkuOC0xNi42IDE5LjgtMjkuNlYzMDAuNGMxOC42LTguOCAzMi0zMi41IDMyLTYwLjRzLTEzLjQtNTEuNi0zMi02MC40VjMyem0tNjQgNzYuN1YyNDAgMzcxLjNDMzU3LjIgMzE3LjggMjgwLjUgMjg4IDIwMC43IDI4OEgxOTJWMTkyaDguN2M3OS44IDAgMTU2LjUtMjkuOCAyMTUuMy04My4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWxsc2V5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMjU2QTE5MiAxOTIgMCAxIDAgNjQgMjU2YTE5MiAxOTIgMCAxIDAgMzg0IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMjU2IDgwYTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwem0wLTIyNGExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6TTIyNCAyNTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVyZ2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxLjEgMjI0QzQ1IDIyNCAzMiAyMTEgMzIgMTk0LjljMC0xLjkgLjItMy43IC42LTUuNkMzNy45IDE2OC4zIDc4LjggMzIgMjU2IDMyczIxOC4xIDEzNi4zIDIyMy40IDE1Ny4zYy41IDEuOSAuNiAzLjcgLjYgNS42YzAgMTYuMS0xMyAyOS4xLTI5LjEgMjkuMUg2MS4xek0xNDQgMTI4YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bTI0MCAxNmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6TTI3MiA5NmExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwek0xNiAzMDRjMC0yNi41IDIxLjUtNDggNDgtNDhINDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4SDY0Yy0yNi41IDAtNDgtMjEuNS00OC00OHptMTYgOTZjMC04LjggNy4yLTE2IDE2LTE2SDQ2NGM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRIOTZjLTM1LjMgMC02NC0yOC43LTY0LTY0VjQwMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVyc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcuNiA0LjJDMjgtMi4zIDE1LjItMS4xIDcgN3MtOS40IDIxLTIuOCAzMC41bDExMiAxNjMuM0wxNi42IDIzMy4yQzYuNyAyMzYuNCAwIDI0NS42IDAgMjU2czYuNyAxOS42IDE2LjYgMjIuOGwxMDMuMSAzMy40TDY2LjggNDEyLjhjLTQuOSA5LjMtMy4yIDIwLjcgNC4zIDI4LjFzMTguOCA5LjIgMjguMSA0LjNsMTAwLjYtNTIuOSAzMy40IDEwMy4xYzMuMiA5LjkgMTIuNCAxNi42IDIyLjggMTYuNnMxOS42LTYuNyAyMi44LTE2LjZsMzMuNC0xMDMuMSAxMDAuNiA1Mi45YzkuMyA0LjkgMjAuNyAzLjIgMjguMS00LjNzOS4yLTE4LjggNC4zLTI4LjFMMzkyLjMgMzEyLjJsMTAzLjEtMzMuNGM5LjktMy4yIDE2LjYtMTIuNCAxNi42LTIyLjhzLTYuNy0xOS42LTE2LjYtMjIuOEwzODguOSAxOTguN2wyNS43LTcwLjRjMy4yLTguOCAxLTE4LjYtNS42LTI1LjJzLTE2LjQtOC44LTI1LjItNS42bC03MC40IDI1LjdMMjc4LjggMTYuNkMyNzUuNiA2LjcgMjY2LjQgMCAyNTYgMHMtMTkuNiA2LjctMjIuOCAxNi42bC0zMi4zIDk5LjZMMzcuNiA0LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1c1NpbXBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMEMzNDguOCAwIDQ0OCAzNS4yIDQ0OCA4MFY5NiA0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJIMzUyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0NDhIMTI4djMyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY5NiA4MEMwIDM1LjIgOTkuMiAwIDIyNCAwek02NCAxMjhWMjU2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMlYxMjhjMC0xNy43LTE0LjMtMzItMzItMzJIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek04MCA0MDBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0yODggMGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMEM0MjIuNCAwIDUxMiAzNS4yIDUxMiA4MFY5NmwwIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMybDAgMTYwYzAgMTcuNy0xNC4zIDMyLTMyIDMydjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDQxNmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDQ4SDE5MnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJoMFY5NmgwVjgwQzY0IDM1LjIgMTUzLjYgMCAyODggMHpNMTI4IDE2MHY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgyNzJWMTI4SDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTMwNCAyODhINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMDRWMjg4ek0xNDQgNDAwYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMjg4IDBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0ek0zODQgODBjMC04LjgtNy4yLTE2LTE2LTE2SDIwOGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkgzNjhjOC44IDAgMTYtNy4yIDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdXNpbmVzc1RpbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg0IDQ4SDMyOGM0LjQgMCA4IDMuNiA4IDhWOTZIMTc2VjU2YzAtNC40IDMuNi04IDgtOHptLTU2IDhWOTZINjRDMjguNyA5NiAwIDEyNC43IDAgMTYwdjk2SDE5MiAzNTJoOC4yYzMyLjMtMzkuMSA4MS4xLTY0IDEzNS44LTY0YzUuNCAwIDEwLjcgLjIgMTYgLjdWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDM4NFY1NmMwLTMwLjktMjUuMS01Ni01Ni01NkgxODRjLTMwLjkgMC01NiAyNS4xLTU2IDU2ek0zMjAgMzUySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjg4SDBWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM2MC4yQzMzNS4xIDQ0OS42IDMyMCA0MTAuNSAzMjAgMzY4YzAtNS40IC4yLTEwLjcgLjctMTZsLS43IDB6bTMyMCAxNmExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwek00OTYgMjg4YzguOCAwIDE2IDcuMiAxNiAxNnY0OGgzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg0OTZjLTguOCAwLTE2LTcuMi0xNi0xNlYzMDRjMC04LjggNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyOS4xIDE0Mi45Yy02Mi41LTYyLjUtMTU1LjgtNjIuNS0yMTguMyAwcy02Mi41IDE2My44IDAgMjI2LjNzMTU1LjggNjIuNSAyMTguMyAwYzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNjLTg3LjUgODcuNS0yMjEuMyA4Ny41LTMwOC44IDBzLTg3LjUtMjI5LjMgMC0zMTYuOHMyMjEuMy04Ny41IDMwOC44IDBjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhYmxlQ2FyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMTYwIDU2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTMyIDI4OGMwLTM1LjMgMjguNy02NCA2NC02NEgyMzJWMTU3LjVsLTIwMy4xIDQyYy0xMyAyLjctMjUuNy01LjctMjguNC0xOC42czUuNy0yNS43IDE4LjYtMjguNGwyMzItNDggMjMyLTQ4YzEzLTIuNyAyNS43IDUuNyAyOC40IDE4LjZzLTUuNyAyNS43LTE4LjYgMjguNEwyODAgMTQ3LjVWMjI0SDQxNmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIOTZjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI4OHptNjQgMGMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNkg5NnptMTEyIDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNkgyMjRjLTguOCAwLTE2IDcuMi0xNiAxNnptMTQ0LTE2Yy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNlYzMDRjMC04LjgtNy4yLTE2LTE2LTE2SDM1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FrZUNhbmRsZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODYuNCA1LjVMNjEuOCA0Ny42QzU4IDU0LjEgNTYgNjEuNiA1NiA2OS4yVjcyYzAgMjIuMSAxNy45IDQwIDQwIDQwczQwLTE3LjkgNDAtNDBWNjkuMmMwLTcuNi0yLTE1LTUuOC0yMS42TDEwNS42IDUuNUMxMDMuNiAyLjEgMTAwIDAgOTYgMHMtNy42IDIuMS05LjYgNS41em0xMjggMEwxODkuOCA0Ny42Yy0zLjggNi41LTUuOCAxNC01LjggMjEuNlY3MmMwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwVjY5LjJjMC03LjYtMi0xNS01LjgtMjEuNkwyMzMuNiA1LjVDMjMxLjYgMi4xIDIyOCAwIDIyNCAwcy03LjYgMi4xLTkuNiA1LjV6TTMxNy44IDQ3LjZjLTMuOCA2LjUtNS44IDE0LTUuOCAyMS42VjcyYzAgMjIuMSAxNy45IDQwIDQwIDQwczQwLTE3LjkgNDAtNDBWNjkuMmMwLTcuNi0yLTE1LTUuOC0yMS42TDM2MS42IDUuNUMzNTkuNiAyLjEgMzU2IDAgMzUyIDBzLTcuNiAyLjEtOS42IDUuNUwzMTcuOCA0Ny42ek0xMjggMTc2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjQ4Yy0zNS4zIDAtNjQgMjguNy02NCA2NHY3MWM4LjMgNS4yIDE4LjEgOSAyOC44IDljMTMuNSAwIDI3LjItNi4xIDM4LjQtMTMuNGM1LjQtMy41IDkuOS03LjEgMTMtOS43YzEuNS0xLjMgMi43LTIuNCAzLjUtMy4xYy40LS40IC43LS42IC44LS44bC4xLS4xIDAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwYzMuMS0zLjIgNy40LTQuOSAxMS45LTQuOHM4LjYgMi4xIDExLjYgNS40bDAgMCAwIDAgLjEgLjFjLjEgLjEgLjQgLjQgLjcgLjdjLjcgLjcgMS43IDEuNyAzLjEgM2MyLjggMi42IDYuOCA2LjEgMTEuOCA5LjVjMTAuMiA3LjEgMjMgMTMuMSAzNi4zIDEzLjFzMjYuMS02IDM2LjMtMTMuMWM1LTMuNSA5LTYuOSAxMS44LTkuNWMxLjQtMS4zIDIuNC0yLjMgMy4xLTNjLjMtLjMgLjYtLjYgLjctLjdsLjEtLjFjMy0zLjUgNy40LTUuNCAxMi01LjRzOSAyIDEyIDUuNGwuMSAuMWMuMSAuMSAuNCAuNCAuNyAuN2MuNyAuNyAxLjcgMS43IDMuMSAzYzIuOCAyLjYgNi44IDYuMSAxMS44IDkuNWMxMC4yIDcuMSAyMyAxMy4xIDM2LjMgMTMuMXMyNi4xLTYgMzYuMy0xMy4xYzUtMy41IDktNi45IDExLjgtOS41YzEuNC0xLjMgMi40LTIuMyAzLjEtM2MuMy0uMyAuNi0uNiAuNy0uN2wuMS0uMWMyLjktMy40IDcuMS01LjMgMTEuNi01LjRzOC43IDEuNiAxMS45IDQuOGwwIDAgMCAwIDAgMCAuMSAuMWMuMiAuMiAuNCAuNCAuOCAuOGMuOCAuNyAxLjkgMS44IDMuNSAzLjFjMy4xIDIuNiA3LjUgNi4yIDEzIDkuN2MxMS4yIDcuMyAyNC45IDEzLjQgMzguNCAxMy40YzEwLjcgMCAyMC41LTMuOSAyOC44LTlWMjg4YzAtMzUuMy0yOC43LTY0LTY0LTY0VjE3NmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY0OEgyNTZWMTc2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjQ4SDEyOFYxNzZ6TTQ0OCAzOTQuNmMtOC41IDMuMy0xOC4yIDUuNC0yOC44IDUuNGMtMjIuNSAwLTQyLjQtOS45LTU1LjgtMTguNmMtNC4xLTIuNy03LjgtNS40LTEwLjktNy44Yy0yLjggMi40LTYuMSA1LTkuOCA3LjVDMzI5LjggMzkwIDMxMC42IDQwMCAyODggNDAwcy00MS44LTEwLTU0LjYtMTguOWMtMy41LTIuNC02LjctNC45LTkuNC03LjJjLTIuNyAyLjMtNS45IDQuNy05LjQgNy4yQzIwMS44IDM5MCAxODIuNiA0MDAgMTYwIDQwMHMtNDEuOC0xMC01NC42LTE4LjljLTMuNy0yLjYtNy01LjItOS44LTcuNWMtMy4xIDIuNC02LjggNS4xLTEwLjkgNy44QzcxLjIgMzkwLjEgNTEuMyA0MDAgMjguOCA0MDBjLTEwLjYgMC0yMC4zLTIuMi0yOC44LTUuNFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM5NC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxjdWxhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTk2IDY0SDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWOTZjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTMyIDE2MGEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwek05NiAzNTJhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0ek02NCA0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJoOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek0xOTIgMjU2YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHptMzIgNjRhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHptNjQtNjRhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em0zMiA2NGEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwek0yODggNDQ4YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FsZW5kYXJDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY2NEgyODhWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlY2NGg0OGMyNi41IDAgNDggMjEuNSA0OCA0OHY0OEgwVjExMkMwIDg1LjUgMjEuNSA2NCA0OCA2NEg5NlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMCAxOTJINDQ4VjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTkyek0zMjkgMzA1YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTk1IDk1LTQ3LTQ3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDY0IDY0YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDMyOSAzMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbGVuZGFyRGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY0SDI4OFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjY0aDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djQ4SDBWMTEyQzAgODUuNSAyMS41IDY0IDQ4IDY0SDk2VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0wIDE5Mkg0NDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxOTJ6bTgwIDY0Yy04LjggMC0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2aDk2YzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhckRheXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRIMjg4VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNjRoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NDhIMFYxMTJDMCA4NS41IDIxLjUgNjQgNDggNjRIOTZWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTAgMTkySDQ0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjE5MnptNjQgODB2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDgwYy04LjggMC0xNiA3LjItMTYgMTZ6bTEyOCAwdjMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjcyYzAtOC44LTcuMi0xNi0xNi0xNkgyMDhjLTguOCAwLTE2IDcuMi0xNiAxNnptMTQ0LTE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDMzNnpNNjQgNDAwdjMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWNDAwYzAtOC44LTcuMi0xNi0xNi0xNkg4MGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNDQtMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjQwMGMwLTguOC03LjItMTYtMTYtMTZIMjA4em0xMTIgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlY0MDBjMC04LjgtNy4yLTE2LTE2LTE2SDMzNmMtOC44IDAtMTYgNy4yLTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY0SDI4OFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjY0aDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djQ4SDBWMTEyQzAgODUuNSAyMS41IDY0IDQ4IDY0SDk2VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0wIDE5Mkg0NDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxOTJ6TTMxMiAzNzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTM2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDMxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FsZW5kYXJQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDMyVjY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjQ4SDQ0OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzUyVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjY0SDE2MFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMlM5NiAxNC4zIDk2IDMyek00NDggMTkySDBWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDQwMGMyNi41IDAgNDgtMjEuNSA0OC00OFYxOTJ6TTIyNCAyNDhjMTMuMyAwIDI0IDEwLjcgMjQgMjR2NTZoNTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjQ4djU2YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjM3NkgxNDRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoNTZWMjcyYzAtMTMuMyAxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhcldlZWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRIMjg4VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNjRoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NDhIMFYxMTJDMCA4NS41IDIxLjUgNjQgNDggNjRIOTZWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTAgMTkySDQ0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjE5MnptODAgNjRjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZIMzY4YzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhclhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY0SDI4OFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjY0aDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djQ4SDBWMTEyQzAgODUuNSAyMS41IDY0IDQ4IDY0SDk2VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0wIDE5Mkg0NDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxOTJ6TTMwNSAzMDVjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtNDcgNDctNDctNDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNDcgNDctNDcgNDdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw0Ny00NyA0NyA0N2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTQ3LTQ3IDQ3LTQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAzMlY2NEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnY0OEg0NDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDM1MlYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY2NEgxNjBWMzJjMC0xNy43LTE0LjMtMzItMzItMzJTOTYgMTQuMyA5NiAzMnpNNDQ4IDE5MkgwVjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0MDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYW1lcmFSZXRybyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjAuNiAxMjEuMkwyNzEuMSA5NiA0NDggOTZ2OTZIMzMzLjJjLTIxLjktMTUuMS00OC41LTI0LTc3LjItMjRzLTU1LjIgOC45LTc3LjIgMjRINjRWMTI4SDE5MmM5LjkgMCAxOS43LTIuMyAyOC42LTYuOHpNMCAxMjhWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEgyNzEuMWMtOS45IDAtMTkuNyAyLjMtMjguNiA2LjhMMTkyIDY0SDE2MFY0OGMwLTguOC03LjItMTYtMTYtMTZIODBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDE2QzI4LjcgNjQgMCA5Mi43IDAgMTI4ek0xNjggMzA0YTg4IDg4IDAgMSAxIDE3NiAwIDg4IDg4IDAgMSAxIC0xNzYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FtZXJhUm90YXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMy4xIDY0LjhMMjAyLjcgOTZIMTI4Yy0zNS4zIDAtNjQgMjguNy02NCA2NFY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MGMwLTM1LjMtMjguNy02NC02NC02NEg0MzcuM0w0MjYuOSA2NC44QzQyMC40IDQ1LjIgNDAyLjEgMzIgMzgxLjQgMzJIMjU4LjZjLTIwLjcgMC0zOSAxMy4yLTQ1LjUgMzIuOHpNNDQ4IDI1NmMwIDguOC03LjIgMTYtMTYgMTZIMzU1LjNjLTYuMiAwLTExLjMtNS4xLTExLjMtMTEuM2MwLTMgMS4yLTUuOSAzLjMtOEwzNzEgMjI5Yy0xMy42LTEzLjQtMzEuOS0yMS01MS0yMWMtMTkuMiAwLTM3LjcgNy42LTUxLjMgMjEuM0wyNDkgMjQ5Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDE5LjctMTkuN0MyNTcuNCAxNzIuNyAyODggMTYwIDMyMCAxNjBjMzEuOCAwIDYyLjQgMTIuNiA4NSAzNWwyMy43LTIzLjdjMi4xLTIuMSA1LTMuMyA4LTMuM2M2LjIgMCAxMS4zIDUuMSAxMS4zIDExLjNWMjU2ek0xOTIgMzIwYzAtOC44IDcuMi0xNiAxNi0xNmg3Ni43YzYuMiAwIDExLjMgNS4xIDExLjMgMTEuM2MwIDMtMS4yIDUuOS0zLjMgOEwyNjkgMzQ3YzEzLjYgMTMuNCAzMS45IDIxIDUxIDIxYzE5LjIgMCAzNy43LTcuNiA1MS4zLTIxLjNMMzkxIDMyN2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTE5LjcgMTkuN0MzODIuNiA0MDMuMyAzNTIgNDE2IDMyMCA0MTZjLTMxLjggMC02Mi40LTEyLjYtODUtMzVsLTIzLjcgMjMuN2MtMi4xIDIuMS01IDMuMy04IDMuM2MtNi4yIDAtMTEuMy01LjEtMTEuMy0xMS4zVjMyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0OS4xIDY0LjhMMTM4LjcgOTZINjRDMjguNyA5NiAwIDEyNC43IDAgMTYwVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDM3My4zTDM2Mi45IDY0LjhDMzU2LjQgNDUuMiAzMzguMSAzMiAzMTcuNCAzMkgxOTQuNmMtMjAuNyAwLTM5IDEzLjItNDUuNSAzMi44ek0yNTYgMTkyYTk2IDk2IDAgMSAxIDAgMTkyIDk2IDk2IDAgMSAxIDAtMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYW1wZ3JvdW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3NyA1MmMxMS0xMy44IDguOC0zMy45LTUtNDVzLTMzLjktOC44LTQ1IDVMMjg4IDYwLjggMjQ5IDEyYy0xMS0xMy44LTMxLjItMTYtNDUtNXMtMTYgMzEuMi01IDQ1bDQ4IDYwTDEyLjMgNDA1LjRDNC4zIDQxNS40IDAgNDI3LjcgMCA0NDAuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhIMjg4IDUyOGMyNi41IDAgNDgtMjEuNSA0OC00OFY0NDAuNGMwLTEyLjctNC4zLTI1LjEtMTIuMy0zNUwzMjkgMTEybDQ4LTYwek0yODggNDQ4SDE2OC41TDI4OCAyOTEuNyA0MDcuNSA0NDhIMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYW5keUNhbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ4LjggMTMxLjVjMy43LTIuMyA3LjktMy41IDEyLjItMy41YzEyLjcgMCAyMyAxMC4zIDIzIDIzdjUuNmMwIDkuOS01LjEgMTkuMS0xMy41IDI0LjNMMzAuMSAzOTMuN0MuMSA0MTIuNS05IDQ1MS45IDkuNyA0ODEuOXM1OC4yIDM5LjEgODguMiAyMC40TDQzOC40IDI4OS41YzQ1LjgtMjguNiA3My42LTc4LjggNzMuNi0xMzIuOFYxNTFDNTEyIDY3LjYgNDQ0LjQgMCAzNjEgMGMtMjguMyAwLTU2IDgtODAuMSAyM0wyNTQuMSAzOS43Yy0zMCAxOC43LTM5LjEgNTguMi0yMC40IDg4LjJzNTguMiAzOS4xIDg4LjIgMjAuNGwyNi44LTE2Ljh6TTI5OC40IDQ5LjhjOS4yLTUuNyAxOS4xLTEwLjEgMjkuNC0xMy4xTDM0OCA5Ny41Yy01LjcgMS40LTExLjIgMy43LTE2LjMgNi44bC0xMi42IDcuOUwyOTguNCA0OS44em04OC41IDUyLjdsNDYuMi00Ni4yYzguNSA2LjUgMTYuMSAxNC4xIDIyLjYgMjIuNmwtNDYuMiA0Ni4yYy01LjEtOS42LTEzLTE3LjUtMjIuNi0yMi42em0yOC45IDU5LjNsNjEuNiAyMC41Yy0yLjIgMTAuNS01LjggMjAuNy0xMC41IDMwLjJsLTYyLTIwLjdjNi4yLTguOCAxMC4xLTE5LjEgMTEtMzAuMXptLTg2LjEgODIuNWw2MC40IDM3LjctMzAuMiAxOC45LTYwLjQtMzcuNyAzMC4yLTE4Ljl6bS0xMDcuMiA2N2w2MC40IDM3LjctMzAuMiAxOC45LTYwLjQtMzcuNyAzMC4yLTE4Ljl6TTExOS4zIDM3NS43bDYwLjQgMzcuNy0zMC4yIDE4LjlMODkuMSAzOTQuNmwzMC4yLTE4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbm5hYmlzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYzUuMyAwIDEwLjMgMi43IDEzLjMgNy4xYzE1LjggMjMuNSAzNi43IDYzLjcgNDkuMiAxMDljNy4yIDI2LjQgMTEuOCA1NS4yIDEwLjQgODRjMTEuNS04LjggMjMuNy0xNi43IDM1LjgtMjMuNmM0MS0yMy4zIDg0LjQtMzYuOSAxMTIuMi00Mi41YzUuMi0xIDEwLjcgLjYgMTQuNCA0LjRzNS40IDkuMiA0LjQgMTQuNWMtNS42IDI3LjctMTkuMyA3MC45LTQyLjcgMTExLjdjLTkuMSAxNS45LTE5LjkgMzEuNy0zMi40IDQ2LjNjMjcuOCA2LjYgNTIuNCAxNy4zIDY3LjIgMjUuNWM1LjEgMi44IDguMiA4LjIgOC4yIDE0cy0zLjIgMTEuMi04LjIgMTRjLTE1LjIgOC40LTQwLjkgMTkuNS02OS44IDI2LjFjLTIwLjIgNC42LTQyLjkgNy4yLTY1LjIgNC42bDguMyAzMy4xYzEuNSA2LjEtLjYgMTIuNC01LjUgMTYuNHMtMTEuNiA0LjYtMTcuMiAxLjlMMjgwIDQxNy4yVjQ4OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY0MTcuMmwtNTguNSAyOS4xYy01LjYgMi44LTEyLjMgMi4xLTE3LjItMS45cy03LTEwLjMtNS41LTE2LjRsOC4zLTMzLjFjLTIyLjIgMi42LTQ1IDAtNjUuMi00LjZjLTI4LjktNi42LTU0LjYtMTcuNi02OS44LTI2LjFjLTUuMS0yLjgtOC4yLTguMi04LjItMTRzMy4yLTExLjIgOC4yLTE0YzE0LjgtOC4yIDM5LjQtMTguOCA2Ny4yLTI1LjVDNzguOSAyOTYuMyA2OC4xIDI4MC41IDU5IDI2NC42Yy0yMy40LTQwLjgtMzcuMS04NC00Mi43LTExMS43Yy0xLjEtNS4yIC42LTEwLjcgNC40LTE0LjVzOS4yLTUuNCAxNC40LTQuNGMyNy45IDUuNSA3MS4yIDE5LjIgMTEyLjIgNDIuNWMxMi4xIDYuOSAyNC4zIDE0LjcgMzUuOCAyMy42Yy0xLjQtMjguNyAzLjEtNTcuNiAxMC40LTg0YzEyLjUtNDUuMyAzMy40LTg1LjUgNDkuMi0xMDljMy00LjQgOC03LjEgMTMuMy03LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcHN1bGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDE0NGMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4VjI1Nkg2NFYxNDR6TTAgMTQ0VjM2OGMwIDYxLjkgNTAuMSAxMTIgMTEyIDExMnMxMTItNTAuMSAxMTItMTEyVjE4OS42YzEuOCAxOS4xIDguMiAzOCAxOS44IDU0LjhMMzcyLjMgNDMxLjdjMzUuNSA1MS43IDEwNS4zIDY0LjMgMTU2IDI4LjFzNjMtMTA3LjUgMjcuNS0xNTkuMkw0MjcuMyAxMTMuM0MzOTEuOCA2MS41IDMyMS45IDQ5IDI3MS4zIDg1LjJjLTI4IDIwLTQ0LjMgNTAuOC00Ny4zIDgzVjE0NGMwLTYxLjktNTAuMS0xMTItMTEyLTExMlMwIDgyLjEgMCAxNDR6bTI5Ni42IDY0LjJjLTE2LTIzLjMtMTAtNTUuMyAxMS45LTcxYzIxLjItMTUuMSA1MC41LTEwLjMgNjYgMTIuMmw2NyA5Ny42TDM2MS42IDMwM2wtNjUtOTQuOHpNNDkxIDQwNy43Yy0uOCAuNi0xLjYgMS4xLTIuNCAxLjZsNC0yLjhjLS41IC40LTEgLjgtMS42IDEuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyQmF0dGVyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMmw5NiAwYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMyaDE2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTYwYzAtMzUuMyAyOC43LTY0IDY0LTY0bDE2IDB6bTMwNCA5NmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnYzMkgzMjBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoMzJ2MzJjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyNTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzg0VjE5MnpNODAgMjQwYzAgOC44IDcuMiAxNiAxNiAxNmg5NmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg5NmMtOC44IDAtMTYgNy4yLTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJCdXJzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgOGMtNi42IDAtMTIuNCA0LTE0LjkgMTAuMWwtMjkuNCA3NEw1NS42IDY4LjljLTYuMy0xLjktMTMuMSAuMi0xNy4yIDUuM3MtNC42IDEyLjItMS40IDE3LjlsMzkuNSA2OS4xTDEwLjkgMjA2LjRjLTUuNCAzLjctOCAxMC4zLTYuNSAxNi43czYuNyAxMS4yIDEzLjEgMTIuMmw3OC43IDEyLjJMOTAuNiAzMjdjLS41IDYuNSAzLjEgMTIuNyA5IDE1LjVzMTIuOSAxLjggMTcuOC0yLjZsMzUuMy0zMi41IDkuNS0zNS40IDEwLjQtMzguNmM4LTI5LjkgMzAuNS01Mi4xIDU3LjktNjAuOWw0MS01OS4yYzExLjMtMTYuMyAyNi40LTI4LjkgNDMuNS0zNy4yYy0uNC0uNi0uOC0xLjItMS4zLTEuOGMtNC4xLTUuMS0xMC45LTcuMi0xNy4yLTUuM0wyMjAuMyA5Mi4xbC0yOS40LTc0QzE4OC40IDEyIDE4Mi42IDggMTc2IDh6TTM2Ny43IDE2MS41bDEzNS42IDM2LjNjNi41IDEuOCAxMS4zIDcuNCAxMS44IDE0LjJsNC42IDU2LjUtMjAxLjUtNTQgMzIuMi00Ni42YzMuOC01LjYgMTAuOC04LjEgMTcuMy02LjR6bS02OS45LTMwbC00Ny45IDY5LjNjLTIxLjYgMy00MC4zIDE4LjYtNDYuMyA0MWwtMTAuNCAzOC42LTE2LjYgNjEuOC04LjMgMzAuOWMtNC42IDE3LjEgNS42IDM0LjYgMjIuNiAzOS4ybDE1LjUgNC4xYzE3LjEgNC42IDM0LjYtNS42IDM5LjItMjIuNmw4LjMtMzAuOSAyNDcuMyA2Ni4zLTguMyAzMC45Yy00LjYgMTcuMSA1LjYgMzQuNiAyMi42IDM5LjJsMTUuNSA0LjFjMTcuMSA0LjYgMzQuNi01LjYgMzkuMi0yMi42bDguMy0zMC45TDU5NSAzODhsMTAuNC0zOC42YzYtMjIuNC0yLjUtNDUuMi0xOS42LTU4LjdsLTYuOC04NGMtMi43LTMzLjctMjYuNC02Mi01OS03MC44TDM4NC4yIDk5LjdjLTMyLjctOC44LTY3LjMgNC04Ni41IDMxLjh6bS0xNyAxMzFhMjQgMjQgMCAxIDEgLTEyLjQgNDYuNCAyNCAyNCAwIDEgMSAxMi40LTQ2LjR6bTIxNy45IDgzLjJBMjQgMjQgMCAxIDEgNTQ1IDM1OC4xYTI0IDI0IDAgMSAxIC00Ni40LTEyLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhck9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4MCAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI0ek0xODUuOCAyMjRIMzI2LjJjNi44IDAgMTIuOCA0LjMgMTUuMSAxMC42TDM2MC4zIDI4OEgxNTEuN2wxOS4xLTUzLjRjMi4zLTYuNCA4LjMtMTAuNiAxNS4xLTEwLjZ6bS03NS4zLTEwLjlMODIuMiAyOTIuNEM2Mi4xIDMwMC45IDQ4IDMyMC44IDQ4IDM0NHY0MCA2NCAzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMkg5NmMxNy43IDAgMzItMTQuMyAzMi0zMlY0NDhIMzg0djMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjQ0OCAzODQgMzQ0YzAtMjMuMi0xNC4xLTQzLjEtMzQuMi01MS42bC0yOC4zLTc5LjNDMzkwLjEgMTgxLjMgMzYwIDE2MCAzMjYuMiAxNjBIMTg1LjhjLTMzLjggMC02NCAyMS4zLTc1LjMgNTMuMXpNMTI4IDM0NGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTIzMiAyNGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwek0zOSAzOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsNDggNDhjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDczIDM5Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHptNDAwIDBMMzkxIDg3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNDgtNDhjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyUmVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjUuNCA5NkgzNDYuNmMxMy42IDAgMjUuNyA4LjYgMzAuMiAyMS40TDQwMi45IDE5MkgxMDkuMWwyNi4xLTc0LjZjNC41LTEyLjggMTYuNi0yMS40IDMwLjItMjEuNHptLTkwLjYgLjNMMzkuNiAxOTYuOEMxNi40IDIwNi40IDAgMjI5LjMgMCAyNTZ2ODBjMCAyMy43IDEyLjkgNDQuNCAzMiA1NS40VjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg5NmMxNy43IDAgMzItMTQuMyAzMi0zMlY0MDBIMzg0djQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM5MS40YzE5LjEtMTEuMSAzMi0zMS43IDMyLTU1LjRWMjU2YzAtMjYuNy0xNi40LTQ5LjYtMzkuNi01OS4yTDQzNy4yIDk2LjNDNDIzLjcgNTcuOCAzODcuNCAzMiAzNDYuNiAzMkgxNjUuNGMtNDAuOCAwLTc3LjEgMjUuOC05MC42IDY0LjN6TTIwOCAyNzJoOTZjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyMDhjLTguOCAwLTE2LTcuMi0xNi0xNlYyODhjMC04LjggNy4yLTE2IDE2LTE2ek00OCAyODBjMC0xMy4zIDEwLjctMjQgMjQtMjRoMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINzJjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0zNjAtMjRoMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINDA4Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJTaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3MS4zIDk2SDIyNHY5NkgxMTEuM2wzMC40LTc1LjlDMTQ2LjUgMTA0IDE1OC4yIDk2IDE3MS4zIDk2ek0yNzIgMTkyVjk2aDgxLjJjOS43IDAgMTguOSA0LjQgMjUgMTJsNjcuMiA4NEgyNzJ6bTI1Ni4yIDFMNDI4LjIgNjhjLTE4LjItMjIuOC00NS44LTM2LTc1LTM2SDE3MS4zYy0zOS4zIDAtNzQuNiAyMy45LTg5LjEgNjAuM0w0MC42IDE5Ni40QzE2LjggMjA1LjggMCAyMjguOSAwIDI1NlYzNjhjMCAxNy43IDE0LjMgMzIgMzIgMzJINjUuM2M3LjYgNDUuNCA0Ny4xIDgwIDk0LjcgODBzODcuMS0zNC42IDk0LjctODBIMzg1LjNjNy42IDQ1LjQgNDcuMSA4MCA5NC43IDgwczg3LjEtMzQuNiA5NC43LTgwSDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMjBjMC02NS4yLTQ4LjgtMTE5LTExMS44LTEyN3pNNDM0LjcgMzY4YTQ4IDQ4IDAgMSAxIDkwLjUgMzIgNDggNDggMCAxIDEgLTkwLjUtMzJ6TTE2MCAzMzZhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJUdW5uZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBDMTE0LjYgMCAwIDExNC42IDAgMjU2VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGg0Mi44Yy02LjYtNS45LTEwLjgtMTQuNC0xMC44LTI0VjM3NmMwLTIwLjggMTEuMy0zOC45IDI4LjEtNDguNmwyMS02NC43YzcuNS0yMy4xIDI5LTM4LjcgNTMuMy0zOC43SDMxMy42YzI0LjMgMCA0NS44IDE1LjYgNTMuMyAzOC43bDIxIDY0LjdjMTYuOCA5LjcgMjguMiAyNy44IDI4LjIgNDguNlY0ODhjMCA5LjYtNC4yIDE4LjEtMTAuOCAyNEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjU2QzUxMiAxMTQuNiAzOTcuNCAwIDI1NiAwek0zNjIuOCA1MTJjLTYuNi01LjktMTAuOC0xNC40LTEwLjgtMjRWNDQ4SDE2MHY0MGMwIDkuNi00LjIgMTguMS0xMC44IDI0SDM2Mi44ek0xOTAuOCAyNzcuNUwxNzcgMzIwSDMzNWwtMTMuOC00Mi41Yy0xLjEtMy4zLTQuMS01LjUtNy42LTUuNUgxOTguNGMtMy41IDAtNi41IDIuMi03LjYgNS41ek0xNjggNDA4YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMjAwLTI0YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzUuMiAxMTcuNEwxMDkuMSAxOTJINDAyLjlsLTI2LjEtNzQuNkMzNzIuMyAxMDQuNiAzNjAuMiA5NiAzNDYuNiA5NkgxNjUuNGMtMTMuNiAwLTI1LjcgOC42LTMwLjIgMjEuNHpNMzkuNiAxOTYuOEw3NC44IDk2LjNDODguMyA1Ny44IDEyNC42IDMyIDE2NS40IDMySDM0Ni42YzQwLjggMCA3Ny4xIDI1LjggOTAuNiA2NC4zbDM1LjIgMTAwLjVjMjMuMiA5LjYgMzkuNiAzMi41IDM5LjYgNTkuMlY0MDB2NDhjMCAxNy43LTE0LjMgMzItMzIgMzJINDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDBIOTZ2NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQwMCAyNTZjMC0yNi43IDE2LjQtNDkuNiAzOS42LTU5LjJ6TTEyOCAyODhhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMjg4IDMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyYXZhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDExMkMwIDY3LjggMzUuOCAzMiA4MCAzMkg0MTZjODguNCAwIDE2MCA3MS42IDE2MCAxNjBWMzUyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMiAwSDI4OGMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05Nkg4MGMtNDQuMiAwLTgwLTM1LjgtODAtODBWMTEyek0zMjAgMzUySDQ0OFYyNTZINDE2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDMyVjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzNTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjM1MnpNOTYgMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMySDk2em05NiAzMzZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJldERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTM3LjQgMzc0LjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTI4LTEyOGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOXMtMTYuNi0xOS44LTI5LjYtMTkuOEwzMiAxOTJjLTEyLjkgMC0yNC42IDcuOC0yOS42IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45bDEyOCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmV0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjQgMjc4LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDEyOC0xMjhjOS4yLTkuMiAyMi45LTExLjkgMzQuOS02LjlzMTkuOCAxNi42IDE5LjggMjkuNmwwIDI1NmMwIDEyLjktNy44IDI0LjYtMTkuOCAyOS42cy0yNS43IDIuMi0zNC45LTYuOWwtMTI4LTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyZXRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDYuNiAyNzguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTI4LTEyOGMtOS4yLTkuMi0yMi45LTExLjktMzQuOS02LjlzLTE5LjggMTYuNi0xOS44IDI5LjZsMCAyNTZjMCAxMi45IDcuOCAyNC42IDE5LjggMjkuNnMyNS43IDIuMiAzNC45LTYuOWwxMjgtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJldFVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Mi42IDEzNy40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTI4IDEyOGMtOS4yIDkuMi0xMS45IDIyLjktNi45IDM0LjlzMTYuNiAxOS44IDI5LjYgMTkuOEgyODhjMTIuOSAwIDI0LjYtNy44IDI5LjYtMTkuOHMyLjItMjUuNy02LjktMzQuOWwtMTI4LTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2Fycm90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Ni43IDZDMzM3LjYgMTcgMzIwIDQyLjMgMzIwIDcyYzAgNDAgMTUuMyA1NS4zIDQwIDgwczQwIDQwIDgwIDQwYzI5LjcgMCA1NS0xNy42IDY2LTI2LjdjNC0zLjMgNi04LjIgNi0xMy4zcy0yLTEwLTYtMTMuMmMtMTEuNC05LjEtMzguMy0yNi44LTc0LTI2LjhjLTMyIDAtNDAgOC00MCA4czgtOCA4LTQwYzAtMzUuNy0xNy43LTYyLjYtMjYuOC03NEMzNzAgMiAzNjUuMSAwIDM2MCAwcy0xMCAyLTEzLjMgNnpNMjQ0LjYgMTM2Yy00MCAwLTc3LjEgMTguMS0xMDEuNyA0OC4ybDYwLjUgNjAuNWM2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwbC01NS4zLTU1LjMgMCAuMUwyLjIgNDc3LjlDLTIgNDg3LS4xIDQ5Ny44IDcgNTA1czE3LjkgOSAyNy4xIDQuOGwxMzQuNy02Mi40LTUyLjEtNTIuMWMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDE5OS43IDQzM2wxMDAuMi00Ni40YzQ2LjQtMjEuNSA3Ni4yLTY4IDc2LjItMTE5LjJDMzc2IDE5NC44IDMxNy4yIDEzNiAyNDQuNiAxMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcnRBcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgMEMxMC43IDAgMCAxMC43IDAgMjRTMTAuNyA0OCAyNCA0OEg2OS41YzMuOCAwIDcuMSAyLjcgNy45IDYuNWw1MS42IDI3MWM2LjUgMzQgMzYuMiA1OC41IDcwLjcgNTguNUg0ODhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTk5LjdjLTExLjUgMC0yMS40LTguMi0yMy42LTE5LjVMMTcwLjcgMjg4SDQ1OS4yYzMyLjYgMCA2MS4xLTIxLjggNjkuNS01My4zbDQxLTE1Mi4zQzU3Ni42IDU3IDU1Ny40IDMyIDUzMS4xIDMySDM2MFYxMzQuMWwyMy0yM2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTY0IDY0Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtNjQtNjRjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwyMyAyM1YzMkgxMjAuMUMxMTEgMTIuOCA5MS42IDAgNjkuNSAwSDI0ek0xNzYgNTEyYTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptMzM2LTQ4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcnRGbGF0YmVkU3VpdGNhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMkMwIDE0LjMgMTQuMyAwIDMyIDBINDhjNDQuMiAwIDgwIDM1LjggODAgODBWMzY4YzAgOC44IDcuMiAxNiAxNiAxNkg2MDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINTQxLjNjMS44IDUgMi43IDEwLjQgMi43IDE2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4YzAtNS42IDEtMTEgMi43LTE2SDI1My4zYzEuOCA1IDIuNyAxMC40IDIuNyAxNmMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OGMwLTUuNiAxLTExIDIuNy0xNkgxNDRjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjgwYzAtOC44LTcuMi0xNi0xNi0xNkgzMkMxNC4zIDY0IDAgNDkuNyAwIDMyek00MzIgOTZWNTZjMC00LjQtMy42LTgtOC04SDM0NGMtNC40IDAtOCAzLjYtOCA4Vjk2aDk2ek0yODggOTZWNTZjMC0zMC45IDI1LjEtNTYgNTYtNTZoODBjMzAuOSAwIDU2IDI1LjEgNTYgNTZWOTYgMzIwSDI4OFY5NnpNNTEyIDMyMFY5NmgxNmMyNi41IDAgNDggMjEuNSA0OCA0OFYyNzJjMCAyNi41LTIxLjUgNDgtNDggNDhINTEyek0yNDAgOTZoMTZWMzIwSDI0MGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJ0RmxhdGJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAwQzE0LjMgMCAwIDE0LjMgMCAzMlMxNC4zIDY0IDMyIDY0SDQ4YzguOCAwIDE2IDcuMiAxNiAxNlYzNjhjMCA0NC4yIDM1LjggODAgODAgODBoMTguN2MtMS44IDUtMi43IDEwLjQtMi43IDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4czQ4LTIxLjUgNDgtNDhjMC01LjYtMS0xMS0yLjctMTZINDUwLjdjLTEuOCA1LTIuNyAxMC40LTIuNyAxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4YzAtNS42LTEtMTEtMi43LTE2SDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxNDRjLTguOCAwLTE2LTcuMi0xNi0xNlY4MEMxMjggMzUuOCA5Mi4yIDAgNDggMEgzMnpNMTkyIDgwVjI3MmMwIDI2LjUgMjEuNSA0OCA0OCA0OEg1NjBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhINDY0VjE3NmMwIDUuOS0zLjIgMTEuMy04LjUgMTQuMXMtMTEuNSAyLjUtMTYuNC0uOEw0MDAgMTYzLjJsLTM5LjEgMjYuMWMtNC45IDMuMy0xMS4yIDMuNi0xNi40IC44cy04LjUtOC4yLTguNS0xNC4xVjMySDI0MGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcnRQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjRDMCAxMC43IDEwLjcgMCAyNCAwSDY5LjVjMjIgMCA0MS41IDEyLjggNTAuNiAzMmg0MTFjMjYuMyAwIDQ1LjUgMjUgMzguNiA1MC40bC00MSAxNTIuM2MtOC41IDMxLjQtMzcgNTMuMy02OS41IDUzLjNIMTcwLjdsNS40IDI4LjVjMi4yIDExLjMgMTIuMSAxOS41IDIzLjYgMTkuNUg0ODhjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMTk5LjdjLTM0LjYgMC02NC4zLTI0LjYtNzAuNy01OC41TDc3LjQgNTQuNWMtLjctMy44LTQtNi41LTcuOS02LjVIMjRDMTAuNyA0OCAwIDM3LjMgMCAyNHpNMTI4IDQ2NGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem0zMzYtNDhhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2ek0yNTIgMTYwYzAgMTEgOSAyMCAyMCAyMGg0NHY0NGMwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMFYxODBoNDRjMTEgMCAyMC05IDIwLTIwcy05LTIwLTIwLTIwSDM1NlY5NmMwLTExLTktMjAtMjAtMjBzLTIwIDktMjAgMjB2NDRIMjcyYy0xMSAwLTIwIDktMjAgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcnRTaG9wcGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI0QzAgMTAuNyAxMC43IDAgMjQgMEg2OS41YzIyIDAgNDEuNSAxMi44IDUwLjYgMzJoNDExYzI2LjMgMCA0NS41IDI1IDM4LjYgNTAuNGwtNDEgMTUyLjNjLTguNSAzMS40LTM3IDUzLjMtNjkuNSA1My4zSDE3MC43bDUuNCAyOC41YzIuMiAxMS4zIDEyLjEgMTkuNSAyMy42IDE5LjVINDg4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDE5OS43Yy0zNC42IDAtNjQuMy0yNC42LTcwLjctNTguNUw3Ny40IDU0LjVjLS43LTMuOC00LTYuNS03LjktNi41SDI0QzEwLjcgNDggMCAzNy4zIDAgMjR6TTEyOCA0NjRhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptMzM2LTQ4YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FzaFJlZ2lzdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDNDYuMyAwIDMyIDE0LjMgMzIgMzJWOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoODB2MzJIODdjLTMxLjYgMC01OC41IDIzLjEtNjMuMyA1NC40TDEuMSAzNjQuMUMuNCAzNjguOCAwIDM3My42IDAgMzc4LjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYzNzguNGMwLTQuOC0uNC05LjYtMS4xLTE0LjRMNDg4LjIgMjE0LjRDNDgzLjUgMTgzLjEgNDU2LjYgMTYwIDQyNSAxNjBIMjA4VjEyOGg4MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkg2NHpNOTYgNDhIMjU2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2ek02NCA0MzJjMC04LjggNy4yLTE2IDE2LTE2SDQzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2em00OC0xNjhhMjQgMjQgMCAxIDEgMC00OCAyNCAyNCAwIDEgMSAwIDQ4em0xMjAtMjRhMjQgMjQgMCAxIDEgLTQ4IDAgMjQgMjQgMCAxIDEgNDggMHpNMTYwIDM0NGEyNCAyNCAwIDEgMSAwLTQ4IDI0IDI0IDAgMSAxIDAgNDh6TTMyOCAyNDBhMjQgMjQgMCAxIDEgLTQ4IDAgMjQgMjQgMCAxIDEgNDggMHpNMjU2IDM0NGEyNCAyNCAwIDEgMSAwLTQ4IDI0IDI0IDAgMSAxIDAgNDh6TTQyNCAyNDBhMjQgMjQgMCAxIDEgLTQ4IDAgMjQgMjQgMCAxIDEgNDggMHpNMzUyIDM0NGEyNCAyNCAwIDEgMSAwLTQ4IDI0IDI0IDAgMSAxIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMTkyaDE3LjFjMjIuMSAzOC4zIDYzLjUgNjQgMTEwLjkgNjRjMTEgMCAyMS44LTEuNCAzMi00djQgMzJWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjMzOS4yTDI4MCA0NDhoNTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTkyYy01MyAwLTk2LTQzLTk2LTk2VjE5Mi41YzAtMTYuMS0xMi0yOS44LTI4LTMxLjhsLTcuOS0xYy0xNy41LTIuMi0zMC0xOC4yLTI3LjgtMzUuN3MxOC4yLTMwIDM1LjctMjcuOGw3LjkgMWM0OCA2IDg0LjEgNDYuOCA4NC4xIDk1LjN2ODUuM2MzNC40LTUxLjcgOTMuMi04NS44IDE2MC04NS44em0xNjAgMjYuNXYwYy0xMCAzLjUtMjAuOCA1LjUtMzIgNS41Yy0yOC40IDAtNTQtMTIuNC03MS42LTMyaDBjLTMuNy00LjEtNy04LjUtOS45LTEzLjJDMzU3LjMgMTY0IDM1MiAxNDYuNiAzNTIgMTI4djBWMzIgMTIgMTAuN0MzNTIgNC44IDM1Ni43IC4xIDM2Mi42IDBoLjJjMy4zIDAgNi40IDEuNiA4LjQgNC4ybDAgLjFMMzg0IDIxLjNsMjcuMiAzNi4zTDQxNiA2NGg2NGw0LjgtNi40TDUxMiAyMS4zIDUyNC44IDQuM2wwLS4xYzItMi42IDUuMS00LjIgOC40LTQuMmguMkM1MzkuMyAuMSA1NDQgNC44IDU0NCAxMC43VjEyIDMydjk2YzAgMTcuMy00LjYgMzMuNi0xMi42IDQ3LjZjLTExLjMgMTkuOC0yOS42IDM1LjItNTEuNCA0Mi45ek00MzIgMTI4YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bTQ4IDE2YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2VkaVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjY2LjdDMTAxLjIgODEuOSAzMiAxNjAuOSAzMiAyNTZzNjkuMiAxNzQuMSAxNjAgMTg5LjNWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDQ1LjNjMzAuOS01LjIgNTkuMi0xNy43IDgzLjItMzUuOGMxNC4xLTEwLjYgMTctMzAuNyA2LjQtNDQuOHMtMzAuNy0xNy00NC44LTYuNGMtMTMuMiA5LjktMjguMyAxNy4zLTQ0LjggMjEuNlYxMzJjMTYuNCA0LjIgMzEuNiAxMS42IDQ0LjggMjEuNmMxNC4xIDEwLjYgMzQuMiA3LjggNDQuOC02LjRzNy44LTM0LjItNi40LTQ0LjhjLTI0LTE4LTUyLjQtMzAuNi04My4yLTM1LjhWMzJ6TTE5MiAxMzJWMzgwYy01NS4yLTE0LjItOTYtNjQuMy05Ni0xMjRzNDAuOC0xMDkuOCA5Ni0xMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNlbnRTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY2LjdjMzAuOSA1LjIgNTkuMiAxNy43IDgzLjIgMzUuOGMxNC4xIDEwLjYgMTcgMzAuNyA2LjQgNDQuOHMtMzAuNyAxNy00NC44IDYuNEMyNzkuNCAxMzcuNSAyNTIuOSAxMjggMjI0IDEyOGMtNzAuNyAwLTEyOCA1Ny4zLTEyOCAxMjhzNTcuMyAxMjggMTI4IDEyOGMyOC45IDAgNTUuNC05LjUgNzYuOC0yNS42YzE0LjEtMTAuNiAzNC4yLTcuOCA0NC44IDYuNHM3LjggMzQuMi02LjQgNDQuOGMtMjQgMTgtNTIuNCAzMC42LTgzLjIgMzUuOFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ1LjNDMTAxLjIgNDMwLjEgMzIgMzUxLjEgMzIgMjU2czY5LjItMTc0LjEgMTYwLTE4OS4zVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDZXJ0aWZpY2F0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTEgNy4zQzIwNSAxIDE5Ni0xLjQgMTg3LjYgLjhzLTE0LjkgOC45LTE3LjEgMTcuM0wxNTQuNyA4MC42bC02Mi0xNy41Yy04LjQtMi40LTE3LjQgMC0yMy41IDYuMXMtOC41IDE1LjEtNi4xIDIzLjVsMTcuNSA2MkwxOC4xIDE3MC42Yy04LjQgMi4xLTE1IDguNy0xNy4zIDE3LjFTMSAyMDUgNy4zIDIxMWw0Ni4yIDQ1TDcuMyAzMDFDMSAzMDctMS40IDMxNiAuOCAzMjQuNHM4LjkgMTQuOSAxNy4zIDE3LjFsNjIuNSAxNS44LTE3LjUgNjJjLTIuNCA4LjQgMCAxNy40IDYuMSAyMy41czE1LjEgOC41IDIzLjUgNi4xbDYyLTE3LjUgMTUuOCA2Mi41YzIuMSA4LjQgOC43IDE1IDE3LjEgMTcuM3MxNy4zLS4yIDIzLjQtNi40bDQ1LTQ2LjIgNDUgNDYuMmM2LjEgNi4yIDE1IDguNyAyMy40IDYuNHMxNC45LTguOSAxNy4xLTE3LjNsMTUuOC02Mi41IDYyIDE3LjVjOC40IDIuNCAxNy40IDAgMjMuNS02LjFzOC41LTE1LjEgNi4xLTIzLjVsLTE3LjUtNjIgNjIuNS0xNS44YzguNC0yLjEgMTUtOC43IDE3LjMtMTcuMXMtLjItMTcuNC02LjQtMjMuNGwtNDYuMi00NSA0Ni4yLTQ1YzYuMi02LjEgOC43LTE1IDYuNC0yMy40cy04LjktMTQuOS0xNy4zLTE3LjFsLTYyLjUtMTUuOCAxNy41LTYyYzIuNC04LjQgMC0xNy40LTYuMS0yMy41cy0xNS4xLTguNS0yMy41LTYuMWwtNjIgMTcuNUwzNDEuNCAxOC4xYy0yLjEtOC40LTguNy0xNS0xNy4xLTE3LjNTMzA3IDEgMzAxIDcuM0wyNTYgNTMuNSAyMTEgNy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFpciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggNDhWMjU2aDQ4VjU4LjdjMjMuOSAxMy44IDQwIDM5LjcgNDAgNjkuM1YyNTZoNDhWMTI4QzM4NCA1Ny4zIDMyNi43IDAgMjU2IDBIMTkyQzEyMS4zIDAgNjQgNTcuMyA2NCAxMjhWMjU2aDQ4VjEyOGMwLTI5LjYgMTYuMS01NS41IDQwLTY5LjNWMjU2aDQ4VjQ4aDQ4ek00OCAyODhjLTEyLjEgMC0yMy4yIDYuOC0yOC42IDE3LjdsLTE2IDMyYy01IDkuOS00LjQgMjEuNyAxLjQgMzEuMVMyMC45IDM4NCAzMiAzODRsMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NEgzNTJ2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzODRjMTEuMSAwIDIxLjQtNS43IDI3LjItMTUuMnM2LjQtMjEuMiAxLjQtMzEuMWwtMTYtMzJDNDIzLjIgMjk0LjggNDEyLjEgMjg4IDQwMCAyODhINDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYWxrYm9hcmRVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCA2NGMwLTM1LjMgMjguNy02NCA2NC02NEg1NzZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzUyYzAgMzUuMy0yOC43IDY0LTY0IDY0SDMzNi44Yy0xMS44LTI1LjUtMjkuOS00Ny41LTUyLjQtNjRIMzg0VjMyMGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnYzMmg2NFY2NEwyMjQgNjR2NDkuMUMyMDUuMiAxMDIuMiAxODMuMyA5NiAxNjAgOTZWNjR6bTAgNjRhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6TTEzMy4zIDM1Mmg1My4zQzI2MC4zIDM1MiAzMjAgNDExLjcgMzIwIDQ4NS4zYzAgMTQuNy0xMS45IDI2LjctMjYuNyAyNi43SDI2LjdDMTEuOSA1MTIgMCA1MDAuMSAwIDQ4NS4zQzAgNDExLjcgNTkuNyAzNTIgMTMzLjMgMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFsa2JvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDMyQzYwLjcgMzIgMzIgNjAuNyAzMiA5NlYzODRIOTZWOTZsMzg0IDBWMzg0aDY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDk2ek0yMjQgMzg0djMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0MTZWMzg0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYW1wYWduZUdsYXNzZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU1LjYgMTcuM0MxNjMgMyAxNzkuOS0zLjYgMTk1IDEuOUwzMjAgNDcuNWwxMjUtNDUuNmMxNS4xLTUuNSAzMiAxLjEgMzkuNCAxNS40bDc4LjggMTUyLjljMjguOCA1NS44IDEwLjMgMTIyLjMtMzguNSAxNTYuNkw1NTYuMSA0MTNsNDEtMTVjMTYuNi02IDM1IDIuNSA0MSAxOS4xcy0yLjUgMzUtMTkuMSA0MWwtNzEuMSAyNS45TDQ3Ni44IDUxMGMtMTYuNiA2LjEtMzUtMi41LTQxLTE5LjFzMi41LTM1IDE5LjEtNDFsNDEtMTUtMzEuMy04Ni4yYy01OS40IDUuMi0xMTYuMi0zNC0xMzAtOTUuMkwzMjAgMTg4LjhsLTE0LjYgNjQuN2MtMTMuOCA2MS4zLTcwLjYgMTAwLjQtMTMwIDk1LjJsLTMxLjMgODYuMiA0MSAxNWMxNi42IDYgMjUuMiAyNC40IDE5LjEgNDFzLTI0LjQgMjUuMi00MSAxOS4xTDkyLjIgNDg0LjEgMjEuMSA0NTguMmMtMTYuNi02LjEtMjUuMi0yNC40LTE5LjEtNDFzMjQuNC0yNS4yIDQxLTE5LjFsNDEgMTUgMzEuMy04Ni4yQzY2LjUgMjkyLjUgNDguMSAyMjYgNzYuOSAxNzAuMkwxNTUuNiAxNy4zem00NCA1NC40bC0yNy4yIDUyLjhMMjYxLjYgMTU3bDEzLjEtNTcuOUwxOTkuNiA3MS43em0yNDAuOSAwTDM2NS40IDk5LjEgMzc4LjUgMTU3bDg5LjItMzIuNUw0NDAuNSA3MS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFyZ2luZ1N0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM2MC43IDAgMzIgMjguNyAzMiA2NFY0NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjMwNGgxNmMyMi4xIDAgNDAgMTcuOSA0MCA0MHYzMmMwIDM5LjggMzIuMiA3MiA3MiA3MnM3Mi0zMi4yIDcyLTcyVjI1Mi4zYzMyLjUtMTAuMiA1Ni00MC41IDU2LTc2LjNWMTQ0YzAtOC44LTcuMi0xNi0xNi0xNkg1NDRWODBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2NDhINDgwVjgwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djQ4SDQzMmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgMzUuOCAyMy41IDY2LjEgNTYgNzYuM1YzNzZjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMzQ0YzAtNDguNi0zOS40LTg4LTg4LTg4SDMyMFY2NGMwLTM1LjMtMjguNy02NC02NC02NEg5NnpNMjE2LjkgODIuN2M2IDQgOC41IDExLjUgNi4zIDE4LjNsLTI1IDc0LjlIMjU2YzYuNyAwIDEyLjcgNC4yIDE1IDEwLjRzLjUgMTMuMy00LjYgMTcuN2wtMTEyIDk2Yy01LjUgNC43LTEzLjQgNS4xLTE5LjMgMS4xcy04LjUtMTEuNS02LjMtMTguM2wyNS03NC45SDk2Yy02LjcgMC0xMi43LTQuMi0xNS0xMC40cy0uNS0xMy4zIDQuNi0xNy43bDExMi05NmM1LjUtNC43IDEzLjQtNS4xIDE5LjMtMS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFydEFyZWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNjRjMC0xNy43LTE0LjMtMzItMzItMzJTMCA0Ni4zIDAgNjRWNDAwYzAgNDQuMiAzNS44IDgwIDgwIDgwSDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjY0em05NiAyODhINDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1MS44YzAtNy42LTIuNy0xNS03LjctMjAuOGwtNjUuOC03Ni44Yy0xMi4xLTE0LjItMzMuNy0xNS00Ni45LTEuOGwtMjEgMjFjLTEwIDEwLTI2LjQgOS4yLTM1LjQtMS42bC0zOS4yLTQ3Yy0xMi42LTE1LjEtMzUuNy0xNS40LTQ4LjctLjZMMTM1LjkgMjE1Yy01LjEgNS44LTcuOSAxMy4zLTcuOSAyMS4xdjg0YzAgMTcuNyAxNC4zIDMyIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFydEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlY0MDBjMCA4LjggNy4yIDE2IDE2IDE2SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg4MGMtNDQuMiAwLTgwLTM1LjgtODAtODBWNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJ6bTk2IDk2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDE5MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xOTIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6bTMyIDY0SDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTAgOTZINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hhcnRDb2x1bW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDAwYzAgOC44IDcuMiAxNiAxNiAxNkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIODBjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyek0xNjAgMjI0YzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI1NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMTI4LTY0VjMyMGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnptNjQgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMyek00ODAgOTZWMzIwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYXJ0R2FudHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDAwYzAgOC44IDcuMiAxNiAxNiAxNkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIODBjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyem05NiA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmw5NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6bTk2IDY0SDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTE2MCA5Nmg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzODRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYXJ0TGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMlMwIDQ2LjMgMCA2NFY0MDBjMCA0NC4yIDM1LjggODAgODAgODBINDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDgwYy04LjggMC0xNi03LjItMTYtMTZWNjR6bTQwNi42IDg2LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMzIwIDIxMC43bC01Ny40LTU3LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xMTIgMTEyYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDI0MCAyMjEuM2w1Ny40IDU3LjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTI4LTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hhcnRQaWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDI0MFYxNi42YzAtOSA3LTE2LjYgMTYtMTYuNkM0NDMuNyAwIDU0NCAxMDAuMyA1NDQgMjI0YzAgOS03LjYgMTYtMTYuNiAxNkgzMDR6TTMyIDI3MkMzMiAxNTAuNyAxMjIuMSA1MC4zIDIzOSAzNC4zYzkuMi0xLjMgMTcgNi4xIDE3IDE1LjRWMjg4TDQxMi41IDQ0NC41YzYuNyA2LjcgNi4yIDE3LjctMS41IDIzLjFDMzcxLjggNDk1LjYgMzIzLjggNTEyIDI3MiA1MTJDMTM5LjUgNTEyIDMyIDQwNC42IDMyIDI3MnptNTI2LjQgMTZjOS4zIDAgMTYuNiA3LjggMTUuNCAxN2MtNy43IDU1LjktMzQuNiAxMDUuNi03My45IDE0Mi4zYy02IDUuNi0xNS40IDUuMi0yMS4yLS43TDMyMCAyODhINTU4LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYXJ0U2ltcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCA4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzMmMyNi41IDAgNDggMjEuNSA0OCA0OFY0MzJjMCAyNi41LTIxLjUgNDgtNDggNDhIMjA4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MHpNMCAyNzJjMC0yNi41IDIxLjUtNDggNDgtNDhIODBjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDMyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyNzJ6TTM2OCA5NmgzMmMyNi41IDAgNDggMjEuNSA0OCA0OFY0MzJjMCAyNi41LTIxLjUgNDgtNDggNDhIMzY4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxNDRjMC0yNi41IDIxLjUtNDggNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZWNrRG91YmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Mi42IDg2LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMTYwIDE3OC43bC01Ny40LTU3LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDgwIDgwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjB6bTk2IDEyOGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwxNjAgNDAyLjcgNTQuNiAyOTcuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTI4IDEyOGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwyNTYtMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVja1RvU2xvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA4MGMwLTI2LjUgMjEuNS00OCA0OC00OEg0MzJjMjYuNSAwIDQ4IDIxLjUgNDggNDhWMzg0SDk2Vjgwem0zMTMgNDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC0xMTEgMTExLTQ3LTQ3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDY0IDY0YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDQwOSAxNjFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjl6TTAgMzM2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDY0VjQxNkg1MTJWMjg4aDE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djk2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOC42IDEwNS40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC0yNTYgMjU2Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtMTI4LTEyOGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMEwxNjAgMzM4LjcgMzkzLjQgMTA1LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZWVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMjQwLjJWMjU2SDBjMC0yMCAxMC0zOC43IDI2LjYtNDkuOEwyNzQuOSA0MC43YzguNi01LjcgMTguNi04LjcgMjguOS04LjdDNDE4LjggMzIgNTEyIDEyNS4yIDUxMiAyNDAuMnptMCA0Ny44VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjg4SDUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3NCaXNob3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDBDMTEwLjMgMCA5NiAxNC4zIDk2IDMyYzAgMTYuMSAxMS45IDI5LjQgMjcuNCAzMS43Qzc4LjQgMTA2LjggOCAxOTAgOCAyODhjMCA0Ny40IDMwLjggNzIuMyA1NiA4NC43VjQwMEgyNTZWMzcyLjdjMjUuMi0xMi41IDU2LTM3LjQgNTYtODQuN2MwLTM3LjMtMTAuMi03Mi40LTI1LjMtMTA0LjFsLTk5LjQgOTkuNGMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkwyNzAuOCAxNTQuNmMtMjMuMi0zOC4xLTUxLjgtNjkuNS03NC4yLTkwLjlDMjEyLjEgNjEuNCAyMjQgNDguMSAyMjQgMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMTI4ek00OCA0MzJMNi42IDQ3My40Yy00LjIgNC4yLTYuNiAxMC02LjYgMTZDMCA1MDEuOSAxMC4xIDUxMiAyMi42IDUxMkgyOTcuNGMxMi41IDAgMjIuNi0xMC4xIDIyLjYtMjIuNmMwLTYtMi40LTExLjgtNi42LTE2TDI3MiA0MzJINDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzQm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em02NCA2NHY2NGg2NFY5Nmg2NHY2NGg2NFY5Nmg2NHY2NEgzMjB2NjRoNjR2NjRIMzIwdjY0aDY0djY0SDMyMFYzNTJIMjU2djY0SDE5MlYzNTJIMTI4djY0SDY0VjM1Mmg2NFYyODhINjRWMjI0aDY0VjE2MEg2NFY5Nmg2NHptNjQgMTI4aDY0VjE2MEgxOTJ2NjR6bTAgNjRWMjI0SDEyOHY2NGg2NHptNjQgMEgxOTJ2NjRoNjRWMjg4em0wIDBoNjRWMjI0SDI1NnY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3NLaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ4aDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI1NnY0OEg0MDhjMjIuMSAwIDQwIDE3LjkgNDAgNDBjMCA1LjMtMSAxMC41LTMuMSAxNS40TDM2OCA0MDBIODBMMy4xIDIxNS40QzEgMjEwLjUgMCAyMDUuMyAwIDIwMGMwLTIyLjEgMTcuOS00MCA0MC00MEgxOTJWMTEySDE3NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgxNlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMzguNiA0NzMuNEw4MCA0MzJIMzY4bDQxLjQgNDEuNGM0LjIgNC4yIDYuNiAxMCA2LjYgMTZjMCAxMi41LTEwLjEgMjIuNi0yMi42IDIyLjZINTQuNkM0Mi4xIDUxMiAzMiA1MDEuOSAzMiA0ODkuNGMwLTYgMi40LTExLjggNi42LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc0tuaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA0OEw4Mi43IDYxLjNDNzAuNyA3My4zIDY0IDg5LjUgNjQgMTA2LjVWMjM4LjljMCAxMC43IDUuMyAyMC43IDE0LjIgMjYuNmwxMC42IDdjMTQuMyA5LjYgMzIuNyAxMC43IDQ4LjEgM2wzLjItMS42YzIuNi0xLjMgNS0yLjggNy4zLTQuNWw0OS40LTM3YzYuNi01IDE1LjctNSAyMi4zIDBjMTAuMiA3LjcgOS45IDIzLjEtLjcgMzAuM0w5MC40IDM1MEM3My45IDM2MS4zIDY0IDM4MCA2NCA0MDBIMzg0bDI4LjktMTU5YzIuMS0xMS4zIDMuMS0yMi44IDMuMS0zNC4zVjE5MkM0MTYgODYgMzMwIDAgMjI0IDBIODMuOEM3Mi45IDAgNjQgOC45IDY0IDE5LjhjMCA3LjUgNC4yIDE0LjMgMTAuOSAxNy43TDk2IDQ4em0yNCA2OGEyMCAyMCAwIDEgMSA0MCAwIDIwIDIwIDAgMSAxIC00MCAwek0yMi42IDQ3My40Yy00LjIgNC4yLTYuNiAxMC02LjYgMTZDMTYgNTAxLjkgMjYuMSA1MTIgMzguNiA1MTJINDA5LjRjMTIuNSAwIDIyLjYtMTAuMSAyMi42LTIyLjZjMC02LTIuNC0xMS44LTYuNi0xNkwzODQgNDMySDY0TDIyLjYgNDczLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzUGF3biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTUuNSAyMjRjMjkuMi0xOC40IDQ4LjUtNTAuOSA0OC41LTg4YzAtNTcuNC00Ni42LTEwNC0xMDQtMTA0UzU2IDc4LjYgNTYgMTM2YzAgMzcuMSAxOS40IDY5LjYgNDguNSA4OEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJjMCAxNi41IDEyLjUgMzAgMjguNSAzMS44TDgwIDQwMEgyNDBMMjI3LjUgMjg3LjhjMTYtMS44IDI4LjUtMTUuMyAyOC41LTMxLjhjMC0xNy43LTE0LjMtMzItMzItMzJoLTguNXpNMjIuNiA0NzMuNGMtNC4yIDQuMi02LjYgMTAtNi42IDE2QzE2IDUwMS45IDI2LjEgNTEyIDM4LjYgNTEySDI4MS40YzEyLjUgMCAyMi42LTEwLjEgMjIuNi0yMi42YzAtNi0yLjQtMTEuOC02LjYtMTZMMjU2IDQzMkg2NEwyMi42IDQ3My40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc1F1ZWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYTU2IDU2IDAgMSAxIDAgMTEyQTU2IDU2IDAgMSAxIDI1NiAwek0xMzQuMSAxNDMuOGMzLjMtMTMgMTUtMjMuOCAzMC4yLTIzLjhjMTIuMyAwIDIyLjYgNy4yIDI3LjcgMTdjMTIgMjMuMiAzNi4yIDM5IDY0IDM5czUyLTE1LjggNjQtMzljNS4xLTkuOCAxNS40LTE3IDI3LjctMTdjMTUuMyAwIDI3IDEwLjggMzAuMiAyMy44YzcgMjcuOCAzMi4yIDQ4LjMgNjIuMSA0OC4zYzEwLjggMCAyMS0yLjcgMjkuOC03LjRjOC40LTQuNCAxOC45LTQuNSAyNy42IC45YzEzIDggMTcuMSAyNSA5LjIgMzhMMzk5LjcgNDAwSDM4NCAzNDMuNiAxNjguNCAxMjggMTEyLjNMNS40IDIyMy42Yy03LjktMTMtMy44LTMwIDkuMi0zOGM4LjctNS4zIDE5LjItNS4zIDI3LjYtLjljOC45IDQuNyAxOSA3LjQgMjkuOCA3LjRjMjkuOSAwIDU1LjEtMjAuNSA2Mi4xLTQ4LjN6TTI1NiAyMjRsMCAwIDAgMGgwek0xMTIgNDMySDQwMGw0MS40IDQxLjRjNC4yIDQuMiA2LjYgMTAgNi42IDE2YzAgMTIuNS0xMC4xIDIyLjYtMjIuNiAyMi42SDg2LjZDNzQuMSA1MTIgNjQgNTAxLjkgNjQgNDg5LjRjMC02IDIuNC0xMS44IDYuNi0xNkwxMTIgNDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc1Jvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMTkyVjQ4YzAtOC44IDcuMi0xNiAxNi0xNmg2NGM4LjggMCAxNiA3LjIgMTYgMTZWODhjMCA0LjQgMy42IDggOCA4aDMyYzQuNCAwIDgtMy42IDgtOFY0OGMwLTguOCA3LjItMTYgMTYtMTZoNjRjOC44IDAgMTYgNy4yIDE2IDE2Vjg4YzAgNC40IDMuNiA4IDggOGgzMmM0LjQgMCA4LTMuNiA4LThWNDhjMC04LjggNy4yLTE2IDE2LTE2aDY0YzguOCAwIDE2IDcuMiAxNiAxNlYxOTJjMCAxMC4xLTQuNyAxOS42LTEyLjggMjUuNkwzNTIgMjU2bDE2IDE0NEg4MEw5NiAyNTYgNDQuOCAyMTcuNkMzNi43IDIxMS42IDMyIDIwMi4xIDMyIDE5MnptMTc2IDk2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NDhjMCA4LjggNy4yIDE2IDE2IDE2ek0yMi42IDQ3My40TDY0IDQzMkgzODRsNDEuNCA0MS40YzQuMiA0LjIgNi42IDEwIDYuNiAxNmMwIDEyLjUtMTAuMSAyMi42LTIyLjYgMjIuNkgzOC42QzI2LjEgNTEyIDE2IDUwMS45IDE2IDQ4OS40YzAtNiAyLjQtMTEuOCA2LjYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAxNmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNlYzMkg5NmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmgxNlY5Nkg2MC4yQzQ5LjEgOTYgNDAgMTA1LjEgNDAgMTE2LjJjMCAyLjUgLjUgNC45IDEuMyA3LjNMNzMuOCAyMDhINzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNEw2MCAzODRIMTk2TDE4MCAyNTZoNGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGgtMS44bDMyLjUtODQuNWMuOS0yLjMgMS4zLTQuOCAxLjMtNy4zYzAtMTEuMi05LjEtMjAuMi0yMC4yLTIwLjJIMTQ0VjY0aDE2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDE0NFYxNnpNNDggNDE2TDQuOCA0NzMuNkMxLjcgNDc3LjggMCA0ODIuOCAwIDQ4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNEgyMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjRjMC01LjItMS43LTEwLjItNC44LTE0LjRMMjA4IDQxNkg0OHptMjg4IDBsLTQzLjIgNTcuNmMtMy4xIDQuMi00LjggOS4yLTQuOCAxNC40YzAgMTMuMyAxMC43IDI0IDI0IDI0SDQ4OGMxMy4zIDAgMjQtMTAuNyAyNC0yNGMwLTUuMi0xLjctMTAuMi00LjgtMTQuNEw0NjQgNDE2SDMzNnpNMzA0IDIwOHY1MS45YzAgNy44IDIuOCAxNS4zIDggMjEuMUwzMzkuMiAzMTIgMzM3IDM4NEg0NjIuNWwtMy4zLTcyIDI4LjMtMzAuOGM1LjQtNS45IDguNS0xMy42IDguNS0yMS43VjIwOGMwLTguOC03LjItMTYtMTYtMTZINDY0Yy04LjggMC0xNiA3LjItMTYgMTZ2MTZINDI0VjIwOGMwLTguOC03LjItMTYtMTYtMTZIMzkyYy04LjggMC0xNiA3LjItMTYgMTZ2MTZIMzUyVjIwOGMwLTguOC03LjItMTYtMTYtMTZIMzIwYy04LjggMC0xNiA3LjItMTYgMTZ6bTgwIDk2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2MzJIMzg0VjMwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMzLjQgNDA2LjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTkyLTE5MmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwyNTYgMzM4LjcgODYuNiAxNjkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTkyIDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40IDIzMy40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxOTIgMTkyYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMNzcuMyAyNTYgMjQ2LjYgODYuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMTkyIDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMC42IDIzMy40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC0xOTIgMTkyYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wyNDIuNyAyNTYgNzMuNCA4Ni42Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwbDE5MiAxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXZyb25VcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzMuNCAxMDUuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGwxOTIgMTkyYzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDI1NiAxNzMuMyA4Ni42IDM0Mi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2wxOTItMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGlsZENvbWJhdGFudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgMTI4QTY0IDY0IDAgMSAwIDE3NiAwYTY0IDY0IDAgMSAwIDAgMTI4em0tOCAzNTJWMzUyaDE2VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMwMC41TDI2MC45IDMyMWM5LjQgMTUgMjkuMiAxOS40IDQ0LjEgMTBzMTkuNC0yOS4yIDEwLTQ0LjFsLTUxLjctODIuMWMtMTcuNi0yNy45LTQ4LjMtNDQuOS04MS4yLTQ0LjlIMTY5LjhjLTMzIDAtNjMuNyAxNi45LTgxLjIgNDQuOUwzNi45IDI4N2MtOS40IDE1LTQuOSAzNC43IDEwIDQ0LjFzMzQuNyA0LjkgNDQuMS0xMEwxMDQgMzAwLjVWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ6TTQ0OCAwSDQzMiA0MTZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZWMTMyLjNjLTkuNiA1LjUtMTYgMTUuOS0xNiAyNy43djMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMlYzNjhjMCAxNy43IDE0LjMgMzIgMzIgMzJoMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2aDU5LjVjMTAuNCAwIDE4LTkuOCAxNS41LTE5LjlMNDg0IDQwMGg0NGM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNkg0ODBWMzI1LjNsNTMuMS0xNy43YzYuNS0yLjIgMTAuOS04LjMgMTAuOS0xNS4yVjIwOGMwLTguOC03LjItMTYtMTYtMTZINTEyYy04LjggMC0xNiA3LjItMTYgMTZ2NTZsLTE2IDUuM1YxNjBjMC0xMS44LTYuNC0yMi4yLTE2LTI3LjdWMTZjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGlsZERyZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA2NEE2NCA2NCAwIDEgMCA5NiA2NGE2NCA2NCAwIDEgMCAxMjggMHpNODggNDAwdjgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDAwaDE2djgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDAwaDE3LjhjMTAuOSAwIDE4LjYtMTAuNyAxNS4yLTIxLjFsLTMxLjEtOTMuNCAyOC42IDM3LjhjMTAuNyAxNC4xIDMwLjggMTYuOCA0NC44IDYuMnMxNi44LTMwLjcgNi4yLTQ0LjhMMjU0LjYgMjA3Yy0yMi40LTI5LjYtNTcuNS00Ny05NC42LTQ3cy03Mi4yIDE3LjQtOTQuNiA0N0w2LjUgMjg0LjdjLTEwLjcgMTQuMS03LjkgMzQuMiA2LjIgNDQuOHMzNC4yIDcuOSA0NC44LTYuMmwyOC43LTM3LjhMNTUgMzc4LjlDNTEuNiAzODkuMyA1OS4zIDQwMCA3MC4yIDQwMEg4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hpbGRSZWFjaGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNjRBNjQgNjQgMCAxIDAgMTI4IDY0YTY0IDY0IDAgMSAwIDEyOCAwek0xNTIuOSAxNjkuM2MtMjMuNy04LjQtNDQuNS0yNC4zLTU4LjgtNDUuOEw3NC42IDk0LjJDNjQuOCA3OS41IDQ1IDc1LjYgMzAuMiA4NS40cy0xOC43IDI5LjctOC45IDQ0LjRMNDAuOSAxNTljMTguMSAyNy4xIDQyLjggNDguNCA3MS4xIDYyLjRWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzg0aDMydjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjIxLjZjMjkuMS0xNC4yIDU0LjQtMzYuMiA3Mi43LTY0LjJsMTguMi0yNy45YzkuNi0xNC44IDUuNC0zNC42LTkuNC00NC4zcy0zNC42LTUuNS00NC4zIDkuNEwyOTEgMTIyLjRjLTIxLjggMzMuNC01OC45IDUzLjYtOTguOCA1My42Yy0xMi42IDAtMjQuOS0yLTM2LjYtNS44Yy0uOS0uMy0xLjgtLjctMi43LS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGlsZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA2NGE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSA5NiA2NHptNDggMzIwdjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI4Ny44TDU5LjEgMzIxYy05LjQgMTUtMjkuMiAxOS40LTQ0LjEgMTBTLTQuNSAzMDEuOSA0LjkgMjg3bDM5LjktNjMuM0M2OS43IDE4NCAxMTMuMiAxNjAgMTYwIDE2MHM5MC4zIDI0IDExNS4yIDYzLjZMMzE1LjEgMjg3YzkuNCAxNSA0LjkgMzQuNy0xMCA0NC4xcy0zNC43IDQuOS00NC4xLTEwTDI0MCAyODcuOFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzg0SDE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hpbGRyZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDBhNjQgNjQgMCAxIDEgMCAxMjhBNjQgNjQgMCAxIDEgMTYwIDB6TTg4IDQ4MFY0MDBINzAuMmMtMTAuOSAwLTE4LjYtMTAuNy0xNS4yLTIxLjFsMzEuMS05My40TDU3LjUgMzIzLjNjLTEwLjcgMTQuMS0zMC44IDE2LjgtNDQuOCA2LjJzLTE2LjgtMzAuNy02LjItNDQuOEw2NS40IDIwN2MyMi40LTI5LjYgNTcuNS00NyA5NC42LTQ3czcyLjIgMTcuNCA5NC42IDQ3bDU4LjkgNzcuN2MxMC43IDE0LjEgNy45IDM0LjItNi4yIDQ0LjhzLTM0LjIgNy45LTQ0LjgtNi4ybC0yOC42LTM3LjhMMjY1IDM3OC45YzMuNSAxMC40LTQuMyAyMS4xLTE1LjIgMjEuMUgyMzJ2ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDAwSDE1MnY4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMnpNNDgwIDBhNjQgNjQgMCAxIDEgMCAxMjhBNjQgNjQgMCAxIDEgNDgwIDB6bS04IDM4NHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMDAuNUwzOTUuMSAzMjFjLTkuNCAxNS0yOS4yIDE5LjQtNDQuMSAxMHMtMTkuNC0yOS4yLTEwLTQ0LjFsNTEuNy04Mi4xYzE3LjYtMjcuOSA0OC4zLTQ0LjkgODEuMi00NC45aDEyLjNjMzMgMCA2My43IDE2LjkgODEuMiA0NC45TDYxOS4xIDI4N2M5LjQgMTUgNC45IDM0LjctMTAgNDQuMXMtMzQuNyA0LjktNDQuMS0xMEw1NTIgMzAwLjVWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM4NEg0NzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNodXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDQgMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWNDhIMjY0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDMydjQ2LjRMMTgzLjMgMjEwYy0xNC41IDguNy0yMy4zIDI0LjMtMjMuMyA0MS4yVjUxMmg5NlY0MTZjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHY5Nmg5NlYyNTEuMmMwLTE2LjktOC44LTMyLjUtMjMuMy00MS4yTDM0NCAxNDIuNFY5NmgzMmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgzNDRWMjR6TTI0LjkgMzMwLjNDOS41IDMzOC44IDAgMzU0LjkgMCAzNzIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoODBWMjczLjZMMjQuOSAzMzAuM3pNNTkyIDUxMmMyNi41IDAgNDgtMjEuNSA0OC00OFYzNzIuNGMwLTE3LjUtOS41LTMzLjYtMjQuOS00Mi4xTDUxMiAyNzMuNlY1MTJoODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZUFycm93RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDB6TTEyNyAyODFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw3MSA3MUwyMzIgMTM2YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCAxODIuMSA3MS03MWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlMMjczIDM5M2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMTI3IDI4MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlQXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAyNTZBMjU2IDI1NiAwIDEgMCAwIDI1NmEyNTYgMjU2IDAgMSAwIDUxMiAwek0yMzEgMTI3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNzEgNzFMMzc2IDIzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTgyLjEgMCA3MSA3MWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDExOSAyNzNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45TDIzMSAxMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZUFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMEEyNTYgMjU2IDAgMSAwIDAgMjU2ek0yODEgMzg1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDcxLTcxTDEzNiAyODBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsMTgyLjEgMC03MS03MWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwTDM5MyAyMzljOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMMjgxIDM4NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzg1IDIzMWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC03MS03MVYzNzZjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMTkzLjlsLTcxIDcxYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45TDIzOSAxMTljOS40LTkuNCAyNC42LTkuNCAzMy45IDBMMzg1IDIzMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTM2OSAyMDlMMjQxIDMzN2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTY0LTY0Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsNDcgNDdMMzM1IDE3NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZUNoZXZyb25Eb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMHpNMTM1IDI0MWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDg3IDg3IDg3LTg3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOUwyNzMgMzQ1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwxMzUgMjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVDaGV2cm9uTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMjU2QTI1NiAyNTYgMCAxIDAgMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMHpNMjcxIDEzNWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTg3IDg3IDg3IDg3YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBMMTY3IDI3M2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlMMjcxIDEzNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlQ2hldnJvblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2YTI1NiAyNTYgMCAxIDAgNTEyIDBBMjU2IDI1NiAwIDEgMCAwIDI1NnpNMjQxIDM3N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw4Ny04Ny04Ny04N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwTDM0NSAyMzljOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMMjQxIDM3N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlQ2hldnJvblVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zNzcgMjcxYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTg3LTg3LTg3IDg3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45TDIzOSAxNjdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBMMzc3IDI3MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlRG9sbGFyVG9TbG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNi43IDQwMy43Yy0yMi4xIDgtNDUuOSAxMi4zLTcwLjcgMTIuM3MtNDguNy00LjQtNzAuNy0xMi4zYy0uMy0uMS0uNS0uMi0uOC0uM2MtMzAtMTEtNTYuOC0yOC43LTc4LjYtNTEuNEM3MCAzMTQuNiA0OCAyNjMuOSA0OCAyMDhDNDggOTMuMSAxNDEuMSAwIDI1NiAwUzQ2NCA5My4xIDQ2NCAyMDhjMCA1NS45LTIyIDEwNi42LTU3LjkgMTQ0Yy0xIDEtMiAyLjEtMyAzLjFjLTIxLjQgMjEuNC00Ny40IDM4LjEtNzYuMyA0OC42ek0yNTYgODRjLTExIDAtMjAgOS0yMCAyMHYxNGMtNy42IDEuNy0xNS4yIDQuNC0yMi4yIDguNWMtMTMuOSA4LjMtMjUuOSAyMi44LTI1LjggNDMuOWMuMSAyMC4zIDEyIDMzLjEgMjQuNyA0MC43YzExIDYuNiAyNC43IDEwLjggMzUuNiAxNGwxLjcgLjVjMTIuNiAzLjggMjEuOCA2LjggMjggMTAuN2M1LjEgMy4yIDUuOCA1LjQgNS45IDguMmMuMSA1LTEuOCA4LTUuOSAxMC41Yy01IDMuMS0xMi45IDUtMjEuNCA0LjdjLTExLjEtLjQtMjEuNS0zLjktMzUuMS04LjVjLTIuMy0uOC00LjctMS42LTcuMi0yLjRjLTEwLjUtMy41LTIxLjggMi4yLTI1LjMgMTIuNnMyLjIgMjEuOCAxMi42IDI1LjNjMS45IC42IDQgMS4zIDYuMSAyLjFsMCAwIDAgMGM4LjMgMi45IDE3LjkgNi4yIDI4LjIgOC40VjMxMmMwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMFYyOTguMmM4LTEuNyAxNi00LjUgMjMuMi05YzE0LjMtOC45IDI1LjEtMjQuMSAyNC44LTQ1Yy0uMy0yMC4zLTExLjctMzMuNC0yNC42LTQxLjZjLTExLjUtNy4yLTI1LjktMTEuNi0zNy4xLTE1bC0uNy0uMmMtMTIuOC0zLjktMjEuOS02LjctMjguMy0xMC41Yy01LjItMy4xLTUuMy00LjktNS4zLTYuN2MwLTMuNyAxLjQtNi41IDYuMi05LjNjNS40LTMuMiAxMy42LTUuMSAyMS41LTVjOS42IC4xIDIwLjIgMi4yIDMxLjIgNS4yYzEwLjcgMi44IDIxLjYtMy41IDI0LjUtMTQuMnMtMy41LTIxLjYtMTQuMi0yNC41Yy02LjUtMS43LTEzLjctMy40LTIxLjEtNC43VjEwNGMwLTExLTktMjAtMjAtMjB6TTQ4IDM1Mkg2NGMxOS41IDI1LjkgNDQgNDcuNyA3Mi4yIDY0SDY0djMySDI1NiA0NDhWNDE2SDM3NS44YzI4LjItMTYuMyA1Mi44LTM4LjEgNzIuMi02NGgxNmMyNi41IDAgNDggMjEuNSA0OCA0OHY2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDAwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVEb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTAtMzUyYTk2IDk2IDAgMSAxIDAgMTkyIDk2IDk2IDAgMSAxIDAtMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMHpNMzc2LjkgMjk0LjZMMjY5LjggMzk0LjVjLTMuOCAzLjUtOC43IDUuNS0xMy44IDUuNXMtMTAuMS0yLTEzLjgtNS41TDEzNS4xIDI5NC42Yy00LjUtNC4yLTcuMS0xMC4xLTcuMS0xNi4zYzAtMTIuMyAxMC0yMi4zIDIyLjMtMjIuM2w1Ny43IDAgMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmwzMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTYgNTcuNyAwYzEyLjMgMCAyMi4zIDEwIDIyLjMgMjIuM2MwIDYuMi0yLjYgMTIuMS03LjEgMTYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlRXhjbGFtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTAtMzg0YzEzLjMgMCAyNCAxMC43IDI0IDI0VjI2NGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYxNTJjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTIyNCAzNTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlSCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzY4IDE1MlYyNTYgMzYwYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjI4MEgxOTJsMCA4MGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTIwOGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djgwSDMyMFYxNTJjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlSGFsZlN0cm9rZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMjU2YzAtMTA2LTg2LTE5Mi0xOTItMTkyVjQ0OGMxMDYgMCAxOTItODYgMTkyLTE5MnpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVJbmZvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0yMTYgMzM2aDI0VjI3MkgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoNDhjMTMuMyAwIDI0IDEwLjcgMjQgMjR2ODhoOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6bTQwLTIwOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDI1NkEyNTYgMjU2IDAgMSAwIDAgMjU2YTI1NiAyNTYgMCAxIDAgNTEyIDB6TTIxNy40IDM3Ni45TDExNy41IDI2OS44Yy0zLjUtMy44LTUuNS04LjctNS41LTEzLjhzMi0xMC4xIDUuNS0xMy44bDk5LjktMTA3LjFjNC4yLTQuNSAxMC4xLTcuMSAxNi4zLTcuMWMxMi4zIDAgMjIuMyAxMCAyMi4zIDIyLjNsMCA1Ny43IDk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtOTYgMCAwIDU3LjdjMCAxMi4zLTEwIDIyLjMtMjIuMyAyMi4zYy02LjIgMC0xMi4xLTIuNi0xNi4zLTcuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE4NCAyMzJIMzI4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDE4NGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlTm9kZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE4LjQgMTU3LjljMzUuMy04LjMgNjEuNi00MCA2MS42LTc3LjljMC00NC4yLTM1LjgtODAtODAtODBjLTQzLjQgMC03OC43IDM0LjUtODAgNzcuNUwxMzYuMiAxNTEuMUMxMjEuNyAxMzYuOCAxMDEuOSAxMjggODAgMTI4Yy00NC4yIDAtODAgMzUuOC04MCA4MHMzNS44IDgwIDgwIDgwYzEyLjIgMCAyMy44LTIuNyAzNC4xLTcuNkwyNTkuNyA0MDcuOGMtMi40IDcuNi0zLjcgMTUuOC0zLjcgMjQuMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMjcuNy0xNC01Mi4xLTM1LjQtNjYuNGwzNy44LTIwNy43ek0xNTYuMyAyMzIuMmMyLjItNi45IDMuNS0xNC4yIDMuNy0yMS43bDE4My44LTczLjVjMy42IDMuNSA3LjQgNi43IDExLjYgOS41TDMxNy42IDM1NC4xYy01LjUgMS4zLTEwLjggMy4xLTE1LjggNS41TDE1Ni4zIDIzMi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVOb3RjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjIuNyAzMi4xYzUgMTYuOS00LjYgMzQuOC0yMS41IDM5LjhDMTIxLjggOTUuNiA2NCAxNjkuMSA2NCAyNTZjMCAxMDYgODYgMTkyIDE5MiAxOTJzMTkyLTg2IDE5Mi0xOTJjMC04Ni45LTU3LjgtMTYwLjQtMTM3LjEtMTg0LjFjLTE2LjktNS0yNi42LTIyLjktMjEuNS0zOS44czIyLjktMjYuNiAzOS44LTIxLjVDNDM0LjkgNDIuMSA1MTIgMTQwIDUxMiAyNTZjMCAxNDEuNC0xMTQuNiAyNTYtMjU2IDI1NlMwIDM5Ny40IDAgMjU2QzAgMTQwIDc3LjEgNDIuMSAxODIuOSAxMC42YzE2LjktNSAzNC44IDQuNiAzOS44IDIxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZVBhdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0yMjQgMTkyVjMyMGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnptMTI4IDBWMzIwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpNMTg4LjMgMTQ3LjFjLTcuNiA0LjItMTIuMyAxMi4zLTEyLjMgMjAuOVYzNDRjMCA4LjcgNC43IDE2LjcgMTIuMyAyMC45czE2LjggNC4xIDI0LjMtLjVsMTQ0LTg4YzcuMS00LjQgMTEuNS0xMi4xIDExLjUtMjAuNXMtNC40LTE2LjEtMTEuNS0yMC41bC0xNDQtODhjLTcuNC00LjUtMTYuNy00LjctMjQuMy0uNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMjMyIDM0NFYyODBIMTY4Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDY0VjE2OGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djY0aDY0YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI4MHY2NGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlUXVlc3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE2OS44IDE2NS4zYzcuOS0yMi4zIDI5LjEtMzcuMyA1Mi44LTM3LjNoNTguM2MzNC45IDAgNjMuMSAyOC4zIDYzLjEgNjMuMWMwIDIyLjYtMTIuMSA0My41LTMxLjcgNTQuOEwyODAgMjY0LjRjLS4yIDEzLTEwLjkgMjMuNi0yNCAyMy42Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYyNTAuNWMwLTguNiA0LjYtMTYuNSAxMi4xLTIwLjhsNDQuMy0yNS40YzQuNy0yLjcgNy42LTcuNyA3LjYtMTMuMWMwLTguNC02LjgtMTUuMS0xNS4xLTE1LjFIMjIyLjZjLTMuNCAwLTYuNCAyLjEtNy41IDUuM2wtLjQgMS4yYy00LjQgMTIuNS0xOC4yIDE5LTMwLjYgMTQuNnMtMTktMTguMi0xNC42LTMwLjZsLjQtMS4yek0yMjQgMzUyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZVJhZGlhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNjRhMTkyIDE5MiAwIDEgMSAwIDM4NCAxOTIgMTkyIDAgMSAxIDAtMzg0em0wIDQ0OEEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTIwMCAyNTZjMC0yMC43IDExLjMtMzguOCAyOC00OC41bC0zNi02Mi4zYy04LjgtMTUuMy0yOC43LTIwLjgtNDItOWMtMjUuNiAyMi42LTQzLjkgNTMuMy01MC45IDg4LjFDOTUuNyAyNDEuNSAxMTAuMyAyNTYgMTI4IDI1Nmw3MiAwem0yOCA0OC41bC0zNiA2Mi40Yy04LjggMTUuMy0zLjYgMzUuMiAxMy4xIDQwLjhjMTYgNS40IDMzLjEgOC4zIDUwLjkgOC4zczM0LjktMi45IDUwLjktOC4zYzE2LjctNS42IDIxLjktMjUuNSAxMy4xLTQwLjhsLTM2LTYyLjRjLTguMiA0LjgtMTcuOCA3LjUtMjggNy41cy0xOS44LTIuNy0yOC03LjV6TTMxMiAyNTZsNzIgMGMxNy43IDAgMzIuMy0xNC41IDI4LjgtMzEuOGMtNy0zNC44LTI1LjMtNjUuNS01MC45LTg4LjFjLTEzLjItMTEuNy0zMy4xLTYuMy00MiA5bC0zNiA2Mi4zYzE2LjcgOS43IDI4IDI3LjggMjggNDguNXptLTU2IDMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMEEyNTYgMjU2IDAgMSAwIDAgMjU2ek0yOTQuNiAxMzUuMWw5OS45IDEwNy4xYzMuNSAzLjggNS41IDguNyA1LjUgMTMuOHMtMiAxMC4xLTUuNSAxMy44TDI5NC42IDM3Ni45Yy00LjIgNC41LTEwLjEgNy4xLTE2LjMgNy4xQzI2NiAzODQgMjU2IDM3NCAyNTYgMzYxLjdsMC01Ny43LTk2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJsOTYgMCAwLTU3LjdjMC0xMi4zIDEwLTIyLjMgMjIuMy0yMi4zYzYuMiAwIDEyLjEgMi42IDE2LjMgNy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVTdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xOTIgMTYwSDMyMGMxNy43IDAgMzIgMTQuMyAzMiAzMlYzMjBjMCAxNy43LTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xMzUuMSAyMTcuNGwxMDcuMS05OS45YzMuOC0zLjUgOC43LTUuNSAxMy44LTUuNXMxMC4xIDIgMTMuOCA1LjVsMTA3LjEgOTkuOWM0LjUgNC4yIDcuMSAxMC4xIDcuMSAxNi4zYzAgMTIuMy0xMCAyMi4zLTIyLjMgMjIuM0gzMDR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMjQwYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyNTZIMTUwLjNDMTM4IDI1NiAxMjggMjQ2IDEyOCAyMzMuN2MwLTYuMiAyLjYtMTIuMSA3LjEtMTYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2lyY2xlVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTkgMzg0LjJDMzc2LjkgMzQ1LjggMzM1LjQgMzIwIDI4OCAzMjBIMjI0Yy00Ny40IDAtODguOSAyNS44LTExMSA2NC4yYzM1LjIgMzkuMiA4Ni4yIDYzLjggMTQzIDYzLjhzMTA3LjgtMjQuNyAxNDMtNjMuOHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yNTYgMTZhNzIgNzIgMCAxIDAgMC0xNDQgNzIgNzIgMCAxIDAgMCAxNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZVhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNzUgMTc1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDQ3IDQ3IDQ3LTQ3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNDcgNDcgNDcgNDdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDctNDctNDcgNDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDctNDctNDctNDdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDMzNmMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWOTZIMjI0VjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0Vjk2SDExMlYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNFM2NCAxMC43IDY0IDI0Vjk2SDQ4QzIxLjUgOTYgMCAxMTcuNSAwIDE0NHY5NlY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhIMzA0aDMyIDk2SDU5MmMyNi41IDAgNDgtMjEuNSA0OC00OFYyNDBjMC0yNi41LTIxLjUtNDgtNDgtNDhINDgwVjQ4em05NiAzMjB2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDUyOGMtOC44IDAtMTYtNy4yLTE2LTE2VjM2OGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2ek0yNDAgNDE2SDIwOGMtOC44IDAtMTYtNy4yLTE2LTE2VjM2OGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNnpNMTI4IDQwMGMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYzNjhjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMnpNNTYwIDI1NmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDUyOGMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MmMwLTguOCA3LjItMTYgMTYtMTZoMzJ6TTI1NiAxNzZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDIwOGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2ek0xMTIgMTYwYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDMyek0yNTYgMzA0YzAgOC44LTcuMiAxNi0xNiAxNkgyMDhjLTguOCAwLTE2LTcuMi0xNi0xNlYyNzJjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMnpNMTEyIDMyMEg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNnptMzA0LTQ4djMyYzAgOC44LTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNlYyNzJjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnpNNDAwIDY0YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZWODBjMC04LjggNy4yLTE2IDE2LTE2aDMyem0xNiAxMTJ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbGFwcGVyYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDMySDM2MS45bC0xIDEtMTI3IDEyN2g5Mi4xbDEtMUw0NTMuOCAzMi4zYy0xLjktLjItMy44LS4zLTUuOC0uM3ptNjQgMTI4Vjk2YzAtMTUuMS01LjMtMjkuMS0xNC00MGwtMTA0IDEwNEg1MTJ6TTI5NC4xIDMySDIwMS45bC0xIDFMNzMuOSAxNjBoOTIuMWwxLTEgMTI3LTEyN3pNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NnY2NEg2LjFsMS0xIDEyNy0xMjdINjR6TTUxMiAxOTJIMFY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xpcGJvYXJkQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBjLTQxLjggMC03Ny40IDI2LjctOTAuNSA2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEgyODIuNUMyNjkuNCAyNi43IDIzMy44IDAgMTkyIDB6bTAgNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0zMDUgMjczTDE3NyA0MDFjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDc5IDMzN2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDQ3IDQ3TDI3MSAyMzljOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbGlwYm9hcmRMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAwYy00MS44IDAtNzcuNCAyNi43LTkwLjUgNjRINjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMjgyLjVDMjY5LjQgMjYuNyAyMzMuOCAwIDE5MiAwem0wIDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNNzIgMjcyYTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6bTEwNC0xNkgzMDRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2ek03MiAzNjhhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptODggMGMwLTguOCA3LjItMTYgMTYtMTZIMzA0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbGlwYm9hcmRRdWVzdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMGMtNDEuOCAwLTc3LjQgMjYuNy05MC41IDY0SDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDI4Mi41QzI2OS40IDI2LjcgMjMzLjggMCAxOTIgMHptMCA2NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTEwNS44IDIyOS4zYzcuOS0yMi4zIDI5LjEtMzcuMyA1Mi44LTM3LjNoNTguM2MzNC45IDAgNjMuMSAyOC4zIDYzLjEgNjMuMWMwIDIyLjYtMTIuMSA0My41LTMxLjcgNTQuOEwyMTYgMzI4LjRjLS4yIDEzLTEwLjkgMjMuNi0yNCAyMy42Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYzMTQuNWMwLTguNiA0LjYtMTYuNSAxMi4xLTIwLjhsNDQuMy0yNS40YzQuNy0yLjcgNy42LTcuNyA3LjYtMTMuMWMwLTguNC02LjgtMTUuMS0xNS4xLTE1LjFIMTU4LjZjLTMuNCAwLTYuNCAyLjEtNy41IDUuM2wtLjQgMS4yYy00LjQgMTIuNS0xOC4yIDE5LTMwLjYgMTQuNnMtMTktMTguMi0xNC42LTMwLjZsLjQtMS4yek0xNjAgNDE2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsaXBib2FyZFVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBjLTQxLjggMC03Ny40IDI2LjctOTAuNSA2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEgyODIuNUMyNjkuNCAyNi43IDIzMy44IDAgMTkyIDB6bTAgNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xMjggMjU2YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNODAgNDMyYzAtNDQuMiAzNS44LTgwIDgwLTgwaDY0YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgOC44LTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbGlwYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBjLTQxLjggMC03Ny40IDI2LjctOTAuNSA2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEgyODIuNUMyNjkuNCAyNi43IDIzMy44IDAgMTkyIDB6bTAgNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xMTIgMTkySDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb2NrUm90YXRlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03NSA3NUw0MSA0MUMyNS45IDI1LjkgMCAzNi42IDAgNTcuOVYxNjhjMCAxMy4zIDEwLjcgMjQgMjQgMjRIMTM0LjFjMjEuNCAwIDMyLjEtMjUuOSAxNy00MWwtMzAuOC0zMC44QzE1NSA4NS41IDIwMyA2NCAyNTYgNjRjMTA2IDAgMTkyIDg2IDE5MiAxOTJzLTg2IDE5Mi0xOTIgMTkyYy00MC44IDAtNzguNi0xMi43LTEwOS43LTM0LjRjLTE0LjUtMTAuMS0zNC40LTYuNi00NC42IDcuOXMtNi42IDM0LjQgNy45IDQ0LjZDMTUxLjIgNDk1IDIwMS43IDUxMiAyNTYgNTEyYzE0MS40IDAgMjU2LTExNC42IDI1Ni0yNTZTMzk3LjQgMCAyNTYgMEMxODUuMyAwIDEyMS4zIDI4LjcgNzUgNzV6bTE4MSA1M2MtMTMuMyAwLTI0IDEwLjctMjQgMjRWMjU2YzAgNi40IDIuNSAxMi41IDcgMTdsNzIgNzJjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC02NS02NVYxNTJjMC0xMy4zLTEwLjctMjQtMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYTI1NiAyNTYgMCAxIDEgMCA1MTJBMjU2IDI1NiAwIDEgMSAyNTYgMHpNMjMyIDEyMFYyNTZjMCA4IDQgMTUuNSAxMC43IDIwbDk2IDY0YzExIDcuNCAyNS45IDQuNCAzMy4zLTYuN3M0LjQtMjUuOS02LjctMzMuM0wyODAgMjQzLjJWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggNDQ4SDY0VjIyNGg2NFYxNjBINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgyODhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMzg0SDI4OHY2NHptLTY0LTk2SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NEgyMjRjLTM1LjMgMC02NCAyOC43LTY0IDY0VjI4OGMwIDM1LjMgMjguNyA2NCA2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvc2VkQ2FwdGlvbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDUxMmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2ek0yMDAgMjA4YzE0LjIgMCAyNyA2LjEgMzUuOCAxNmM4LjggOS45IDI0IDEwLjcgMzMuOSAxLjlzMTAuNy0yNCAxLjktMzMuOWMtMTcuNS0xOS42LTQzLjEtMzItNzEuNS0zMmMtNTMgMC05NiA0My05NiA5NnM0MyA5NiA5NiA5NmMyOC40IDAgNTQtMTIuNCA3MS41LTMyYzguOC05LjkgOC0yNS0xLjktMzMuOXMtMjUtOC0zMy45IDEuOWMtOC44IDkuOS0yMS42IDE2LTM1LjggMTZjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDh6bTE0NCA0OGMwLTI2LjUgMjEuNS00OCA0OC00OGMxNC4yIDAgMjcgNi4xIDM1LjggMTZjOC44IDkuOSAyNCAxMC43IDMzLjkgMS45czEwLjctMjQgMS45LTMzLjljLTE3LjUtMTkuNi00My4xLTMyLTcxLjUtMzJjLTUzIDAtOTYgNDMtOTYgOTZzNDMgOTYgOTYgOTZjMjguNCAwIDU0LTEyLjQgNzEuNS0zMmM4LjgtOS45IDgtMjUtMS45LTMzLjlzLTI1LTgtMzMuOSAxLjljLTguOCA5LjktMjEuNiAxNi0zNS44IDE2Yy0yNi41IDAtNDgtMjEuNS00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRBcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0IDQ4MEM2NC41IDQ4MCAwIDQxNS41IDAgMzM2YzAtNjIuOCA0MC4yLTExNi4yIDk2LjItMTM1LjljLS4xLTIuNy0uMi01LjQtLjItOC4xYzAtODguNCA3MS42LTE2MCAxNjAtMTYwYzU5LjMgMCAxMTEgMzIuMiAxMzguNyA4MC4yQzQwOS45IDEwMiA0MjguMyA5NiA0NDggOTZjNTMgMCA5NiA0MyA5NiA5NmMwIDEyLjItMi4zIDIzLjgtNi40IDM0LjZDNTk2IDIzOC40IDY0MCAyOTAuMSA2NDAgMzUyYzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4SDE0NHptNzktMTY3bDgwIDgwYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDgwLTgwYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTM5IDM5VjE4NGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFYzMTguMWwtMzktMzljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgNDgwQzY0LjUgNDgwIDAgNDE1LjUgMCAzMzZjMC02Mi44IDQwLjItMTE2LjIgOTYuMi0xMzUuOWMtLjEtMi43LS4yLTUuNC0uMi04LjFjMC04OC40IDcxLjYtMTYwIDE2MC0xNjBjNTkuMyAwIDExMSAzMi4yIDEzOC43IDgwLjJDNDA5LjkgMTAyIDQyOC4zIDk2IDQ0OCA5NmM1MyAwIDk2IDQzIDk2IDk2YzAgMTIuMi0yLjMgMjMuOC02LjQgMzQuNkM1OTYgMjM4LjQgNjQwIDI5MC4xIDY0MCAzNTJjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhIMTQ0em03OS0yMTdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGwzOS0zOVYzOTJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYyNTcuOWwzOSAzOWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTgwLTgwYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMGwtODAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkQm9sdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDIyNGMwIDUzIDQzIDk2IDk2IDk2aDQ3LjJMMjkwIDIwMi41YzE3LjYtMTQuMSA0Mi42LTE0IDYwLjIgLjJzMjIuOCAzOC42IDEyLjggNTguOEwzMzMuNyAzMjBIMzUyaDY0YzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2Yy0uNSAwLTEuMSAwLTEuNiAwYzEuMS01LjIgMS42LTEwLjUgMS42LTE2YzAtNDQuMi0zNS44LTgwLTgwLTgwYy0yNC4zIDAtNDYuMSAxMC45LTYwLjggMjhDMjU2LjUgMjQuMyAyMTkuMSAwIDE3NiAwQzExNC4xIDAgNjQgNTAuMSA2NCAxMTJjMCA3LjEgLjcgMTQuMSAxLjkgMjAuOEMyNy42IDE0NS40IDAgMTgxLjUgMCAyMjR6bTMzMC4xIDMuNmMtNS44LTQuNy0xNC4yLTQuNy0yMC4xLS4xbC0xNjAgMTI4Yy01LjMgNC4yLTcuNCAxMS40LTUuMSAxNy44czguMyAxMC43IDE1LjEgMTAuN2g3MC4xTDE3Ny43IDQ4OC44Yy0zLjQgNi43LTEuNiAxNC45IDQuMyAxOS42czE0LjIgNC43IDIwLjEgLjFsMTYwLTEyOGM1LjMtNC4yIDcuNC0xMS40IDUuMS0xNy44cy04LjMtMTAuNy0xNS4xLTEwLjdIMjgxLjlsNTIuNC0xMDQuOGMzLjQtNi43IDEuNi0xNC45LTQuMi0xOS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZE1lYXRiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjI0YzAgNTMgNDMgOTYgOTYgOTZoNDQuN2M5LjUtMjMuNSAzMi41LTQwIDU5LjMtNDBjMiAwIDMuOSAuMSA1LjggLjNDMjE3LjYgMjY1LjUgMjM1LjcgMjU2IDI1NiAyNTZzMzguNCA5LjUgNTAuMiAyNC4zYzEuOS0uMiAzLjktLjMgNS44LS4zYzI2LjkgMCA0OS45IDE2LjUgNTkuMyA0MEg0MTZjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZjLS41IDAtMS4xIDAtMS42IDBjMS4xLTUuMiAxLjYtMTAuNSAxLjYtMTZjMC00NC4yLTM1LjgtODAtODAtODBjLTI0LjMgMC00Ni4xIDEwLjktNjAuOCAyOEMyNTYuNSAyNC4zIDIxOS4xIDAgMTc2IDBDMTE0LjEgMCA2NCA1MC4xIDY0IDExMmMwIDcuMSAuNyAxNC4xIDEuOSAyMC44QzI3LjYgMTQ1LjQgMCAxODEuNSAwIDIyNHptMjg4IDk2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyYzAgMSAuMSAyLjEgLjEgMy4xYy0uNy0uOC0xLjQtMS42LTIuMS0yLjNjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zYy43IC43IDEuNSAxLjQgMi4zIDIuMWMtMS0uMS0yLjEtLjEtMy4xLS4xYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyYzEgMCAyLjEtLjEgMy4xLS4xYy0uOCAuNy0xLjYgMS4zLTIuMyAyLjFjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBjLjctLjcgMS40LTEuNSAyLjEtMi4zYy0uMSAxLS4xIDIuMS0uMSAzLjFjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTEtLjEtMi4xLS4xLTMuMWMuNyAuOCAxLjMgMS42IDIuMSAyLjNjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2MtLjctLjctMS41LTEuNC0yLjMtMi4xYzEgLjEgMi4xIC4xIDMuMSAuMWMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmMtMSAwLTIuMSAuMS0zLjEgLjFjLjgtLjcgMS42LTEuMyAyLjMtMi4xYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwYy0uNyAuNy0xLjQgMS41LTIuMSAyLjNjLjEtMSAuMS0yLjEgLjEtMy4xek00OCA0NDhhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em00MTYgMGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkTW9vblJhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgxLjIgMEM0MTcgMCAzNjMuNSA0Ni41IDM1My43IDEwNy42YzM1LjQgMTcuNiA2MC4yIDUzLjMgNjIuMSA5NS4xYzIzLjIgMTEgNDIgMjkuNyA1My4xIDUyLjdjNCAuNCA4LjEgLjYgMTIuMyAuNmMzNC45IDAgNjYuNy0xMy44IDg5LjktMzYuMWM1LjEtNC45IDYuNC0xMi41IDMuMi0xOC43cy0xMC4xLTkuNy0xNy04LjZjLTQuOSAuOC0xMCAxLjMtMTUuMiAxLjNjLTQ5IDAtODguNC0zOS4zLTg4LjQtODcuNGMwLTMyLjYgMTgtNjEuMSA0NC45LTc2LjFjNi4xLTMuNCA5LjMtMTAuNSA3LjgtMTcuNHMtNy4zLTEyLTE0LjMtMTIuNmMtMy42LS4zLTcuMy0uNS0xMC45LS41ek0zNjcuOSAzODMuOWM0NC4yIDAgODAtMzUuOCA4MC04MGMwLTM5LjMtMjguNC03Mi4xLTY1LjgtNzguN2MxLjItNS42IDEuOS0xMS4zIDEuOS0xNy4yYzAtNDQuMi0zNS44LTgwLTgwLTgwYy0xNyAwLTMyLjggNS4zLTQ1LjggMTQuNEMyNDEuMyAxMTQuNiAyMTAuOCA5NiAxNzYgOTZjLTUzIDAtOTYgNDMtOTYgOTZsMCAxLjNjLTQ1LjQgNy42LTgwIDQ3LjEtODAgOTQuNmMwIDUzIDQzIDk2IDk2IDk2SDM2Ny45ek04NS40IDQyMC4xYy0xMS03LjQtMjUuOS00LjQtMzMuMyA2LjdsLTMyIDQ4Yy03LjQgMTEtNC40IDI1LjkgNi43IDMzLjNzMjUuOSA0LjQgMzMuMy02LjdsMzItNDhjNy40LTExIDQuNC0yNS45LTYuNy0zMy4zem05NiAwYy0xMS03LjQtMjUuOS00LjQtMzMuMyA2LjdsLTMyIDQ4Yy03LjQgMTEtNC40IDI1LjkgNi43IDMzLjNzMjUuOSA0LjQgMzMuMy02LjdsMzItNDhjNy40LTExIDQuNC0yNS45LTYuNy0zMy4zem05NiAwYy0xMS03LjQtMjUuOS00LjQtMzMuMyA2LjdsLTMyIDQ4Yy03LjQgMTEtNC40IDI1LjkgNi43IDMzLjNzMjUuOSA0LjQgMzMuMy02LjdsMzItNDhjNy40LTExIDQuNC0yNS45LTYuNy0zMy4zem05NiAwYy0xMS03LjQtMjUuOS00LjQtMzMuMyA2LjdsLTMyIDQ4Yy03LjQgMTEtNC40IDI1LjkgNi43IDMzLjNzMjUuOSA0LjQgMzMuMy02LjdsMzItNDhjNy40LTExIDQuNC0yNS45LTYuNy0zMy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZE1vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk1LjggMGM1LjUgMCAxMC45IC4yIDE2LjMgLjdjNyAuNiAxMi44IDUuNyAxNC4zIDEyLjVzLTEuNiAxMy45LTcuNyAxNy4zYy00NC40IDI1LjItNzQuNCA3My03NC40IDEyNy44YzAgODEgNjUuNSAxNDYuNiAxNDYuMiAxNDYuNmM4LjYgMCAxNy0uNyAyNS4xLTIuMWM2LjktMS4yIDEzLjggMi4yIDE3IDguNXMxLjkgMTMuOC0zLjEgMTguN2MtMzQuNSAzMy42LTgxLjcgNTQuNC0xMzMuNiA1NC40Yy05LjMgMC0xOC40LS43LTI3LjQtMS45Yy0xMS4yLTIyLjYtMjkuOC00MC45LTUyLjYtNTEuN2MtMi43LTU4LjUtNTAuMy0xMDUuMy0xMDkuMi0xMDYuN2MtMS43LTEwLjQtMi42LTIxLTIuNi0zMS44QzMwNCA4Ni4xIDM4OS44IDAgNDk1LjggMHpNNDQ3LjkgNDMxLjljMCA0NC4yLTM1LjggODAtODAgODBIOTZjLTUzIDAtOTYtNDMtOTYtOTZjMC00Ny42IDM0LjYtODcgODAtOTQuNmwwLTEuM2MwLTUzIDQzLTk2IDk2LTk2YzM0LjkgMCA2NS40IDE4LjYgODIuMiA0Ni40YzEzLTkuMSAyOC44LTE0LjQgNDUuOC0xNC40YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgNS45LS42IDExLjctMS45IDE3LjJjMzcuNCA2LjcgNjUuOCAzOS40IDY1LjggNzguN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRSYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDMyMGMtNTMgMC05Ni00My05Ni05NmMwLTQyLjUgMjcuNi03OC42IDY1LjktOTEuMkM2NC43IDEyNi4xIDY0IDExOS4xIDY0IDExMkM2NCA1MC4xIDExNC4xIDAgMTc2IDBjNDMuMSAwIDgwLjUgMjQuMyA5OS4yIDYwYzE0LjctMTcuMSAzNi41LTI4IDYwLjgtMjhjNDQuMiAwIDgwIDM1LjggODAgODBjMCA1LjUtLjYgMTAuOC0xLjYgMTZjLjUgMCAxLjEgMCAxLjYgMGM1MyAwIDk2IDQzIDk2IDk2cy00MyA5Ni05NiA5Nkg5NnptLTYuOCA1MmMxLjMtMi41IDMuOS00IDYuOC00czUuNCAxLjUgNi44IDRsMzUuMSA2NC42YzQuMSA3LjUgNi4yIDE1LjggNi4yIDI0LjN2M2MwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OHYtM2MwLTguNSAyLjEtMTYuOSA2LjItMjQuM0w4OS4yIDM3MnptMTYwIDBjMS4zLTIuNSAzLjktNCA2LjgtNHM1LjQgMS41IDYuOCA0bDM1LjEgNjQuNmM0LjEgNy41IDYuMiAxNS44IDYuMiAyNC4zdjNjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDh2LTNjMC04LjUgMi4xLTE2LjkgNi4yLTI0LjNMMjQ5LjIgMzcyem0xMjQuOSA2NC42TDQwOS4yIDM3MmMxLjMtMi41IDMuOS00IDYuOC00czUuNCAxLjUgNi44IDRsMzUuMSA2NC42YzQuMSA3LjUgNi4yIDE1LjggNi4yIDI0LjN2M2MwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OHYtM2MwLTguNSAyLjEtMTYuOSA2LjItMjQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRTaG93ZXJzSGVhdnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzIwYy01MyAwLTk2LTQzLTk2LTk2YzAtNDIuNSAyNy42LTc4LjYgNjUuOS05MS4yQzY0LjcgMTI2LjEgNjQgMTE5LjEgNjQgMTEyQzY0IDUwLjEgMTE0LjEgMCAxNzYgMGM0My4xIDAgODAuNSAyNC4zIDk5LjIgNjBjMTQuNy0xNy4xIDM2LjUtMjggNjAuOC0yOGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDUuNS0uNiAxMC44LTEuNiAxNmMuNSAwIDEuMSAwIDEuNiAwYzUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2SDk2ek04MS41IDM1My45YzEyLjIgNS4yIDE3LjggMTkuMyAxMi42IDMxLjVsLTQ4IDExMmMtNS4yIDEyLjItMTkuMyAxNy44LTMxLjUgMTIuNlMtMy4zIDQ5MC43IDEuOSA0NzguNWw0OC0xMTJjNS4yLTEyLjIgMTkuMy0xNy44IDMxLjUtMTIuNnptMTIwIDBjMTIuMiA1LjIgMTcuOCAxOS4zIDEyLjYgMzEuNWwtNDggMTEyYy01LjIgMTIuMi0xOS4zIDE3LjgtMzEuNSAxMi42cy0xNy44LTE5LjMtMTIuNi0zMS41bDQ4LTExMmM1LjItMTIuMiAxOS4zLTE3LjggMzEuNS0xMi42em0yNDQuNiAzMS41bC00OCAxMTJjLTUuMiAxMi4yLTE5LjMgMTcuOC0zMS41IDEyLjZzLTE3LjgtMTkuMy0xMi42LTMxLjVsNDgtMTEyYzUuMi0xMi4yIDE5LjMtMTcuOCAzMS41LTEyLjZzMTcuOCAxOS4zIDEyLjYgMzEuNXpNMzEzLjUgMzUzLjljMTIuMiA1LjIgMTcuOCAxOS4zIDEyLjYgMzEuNWwtNDggMTEyYy01LjIgMTIuMi0xOS4zIDE3LjgtMzEuNSAxMi42cy0xNy44LTE5LjMtMTIuNi0zMS41bDQ4LTExMmM1LjItMTIuMiAxOS4zLTE3LjggMzEuNS0xMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZFNob3dlcnNXYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMGMzOC42IDAgNzEuOSAyMi44IDg3LjIgNTUuN0MzMjUuNyA0MS4xIDM0NS44IDMyIDM2OCAzMmMzOC43IDAgNzEgMjcuNSA3OC40IDY0SDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NEgxMjhjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjRjMC01MyA0My05NiA5Ni05NnpNMTQwLjYgMjkyLjNsLTQ4IDgwYy02LjggMTEuNC0yMS42IDE1LTMyLjkgOC4ycy0xNS4xLTIxLjYtOC4yLTMyLjlsNDgtODBjNi44LTExLjQgMjEuNi0xNS4xIDMyLjktOC4yczE1LjEgMjEuNiA4LjIgMzIuOXptMzI3LjgtMzIuOWMxMS40IDYuOCAxNSAyMS42IDguMiAzMi45bC00OCA4MGMtNi44IDExLjQtMjEuNiAxNS0zMi45IDguMnMtMTUtMjEuNi04LjItMzIuOWw0OC04MGM2LjgtMTEuNCAyMS42LTE1LjEgMzIuOS04LjJ6TTI1Mi42IDI5Mi4zbC00OCA4MGMtNi44IDExLjQtMjEuNiAxNS0zMi45IDguMnMtMTUuMS0yMS42LTguMi0zMi45bDQ4LTgwYzYuOC0xMS40IDIxLjYtMTUuMSAzMi45LTguMnMxNS4xIDIxLjYgOC4yIDMyLjl6bTEwMy44LTMyLjljMTEuNCA2LjggMTUgMjEuNiA4LjIgMzIuOWwtNDggODBjLTYuOCAxMS40LTIxLjYgMTUtMzIuOSA4LjJzLTE1LjEtMjEuNi04LjItMzIuOWw0OC04MGM2LjgtMTEuNCAyMS42LTE1LjEgMzIuOS04LjJ6TTMwNi41IDQyMS45QzMyOSA0MzcuNCAzNTYuNSA0NDggMzg0IDQ0OGMyNi45IDAgNTUuNC0xMC44IDc3LjQtMjYuMWwwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSA1MDEuNyA0MTcgNTEyIDM4NCA1MTJjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40YzE4LjEtNC4yIDM2LjItMTMuMyA1MC42LTI1LjJjMTEuMS05LjQgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyA0MzcuMiAxNjUuMSA0NDggMTkyIDQ0OGMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRTdW5SYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5NC4yIDEuMmM1LjEgMi4xIDguNyA2LjcgOS42IDEyLjFsMTAuNCA2Mi40Yy0yMy4zIDEwLjgtNDIuOSAyOC40LTU2IDUwLjNjLTE0LjYtOS0zMS44LTE0LjEtNTAuMi0xNC4xYy01MyAwLTk2IDQzLTk2IDk2YzAgMzUuNSAxOS4zIDY2LjYgNDggODMuMmMuOCAzMS44IDEzLjIgNjAuNyAzMy4xIDgyLjdsLTU2IDM5LjJjLTQuNSAzLjItMTAuMyAzLjgtMTUuNCAxLjZzLTguNy02LjctOS42LTEyLjFMOTguMSAzMTcuOSAxMy40IDMwMy44Yy01LjQtLjktMTAtNC41LTEyLjEtOS42cy0xLjUtMTAuOSAxLjYtMTUuNEw1Mi41IDIwOCAyLjkgMTM3LjJjLTMuMi00LjUtMy44LTEwLjMtMS42LTE1LjRzNi43LTguNyAxMi4xLTkuNkw5OC4xIDk4LjFsMTQuMS04NC43Yy45LTUuNCA0LjUtMTAgOS42LTEyLjFzMTAuOS0xLjUgMTUuNCAxLjZMMjA4IDUyLjUgMjc4LjggMi45YzQuNS0zLjIgMTAuMy0zLjggMTUuNC0xLjZ6TTIwOCAxNDRjMTMuOCAwIDI2LjcgNC40IDM3LjEgMTEuOWMtMS4yIDQuMS0yLjIgOC4zLTMgMTIuNmMtMzcuOSAxNC42LTY3LjIgNDYuNi03Ny44IDg2LjRDMTUxLjggMjQzLjEgMTQ0IDIyNi41IDE0NCAyMDhjMC0zNS4zIDI4LjctNjQgNjQtNjR6bTY5LjQgMjc2YzExIDcuNCAxNCAyMi4zIDYuNyAzMy4zbC0zMiA0OGMtNy40IDExLTIyLjMgMTQtMzMuMyA2LjdzLTE0LTIyLjMtNi43LTMzLjNsMzItNDhjNy40LTExIDIyLjMtMTQgMzMuMy02Ljd6bTk2IDBjMTEgNy40IDE0IDIyLjMgNi43IDMzLjNsLTMyIDQ4Yy03LjQgMTEtMjIuMyAxNC0zMy4zIDYuN3MtMTQtMjIuMy02LjctMzMuM2wzMi00OGM3LjQtMTEgMjIuMy0xNCAzMy4zLTYuN3ptOTYgMGMxMSA3LjQgMTQgMjIuMyA2LjcgMzMuM2wtMzIgNDhjLTcuNCAxMS0yMi4zIDE0LTMzLjMgNi43cy0xNC0yMi4zLTYuNy0zMy4zbDMyLTQ4YzcuNC0xMSAyMi4zLTE0IDMzLjMtNi43em05NiAwYzExIDcuNCAxNCAyMi4zIDYuNyAzMy4zbC0zMiA0OGMtNy40IDExLTIyLjMgMTQtMzMuMyA2LjdzLTE0LTIyLjMtNi43LTMzLjNsMzItNDhjNy40LTExIDIyLjMtMTQgMzMuMy02Ljd6bTc0LjUtMTE2LjFjMCA0NC4yLTM1LjggODAtODAgODBIMjg4Yy01MyAwLTk2LTQzLTk2LTk2YzAtNDcuNiAzNC42LTg3IDgwLTk0LjZsMC0xLjNjMC01MyA0My05NiA5Ni05NmMzNC45IDAgNjUuNCAxOC42IDgyLjIgNDYuNGMxMy05LjEgMjguOC0xNC40IDQ1LjgtMTQuNGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDUuOS0uNiAxMS43LTEuOSAxNy4yYzM3LjQgNi43IDY1LjggMzkuNCA2NS44IDc4Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkU3VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5NC4yIDEuMmM1LjEgMi4xIDguNyA2LjcgOS42IDEyLjFsMTQuMSA4NC43IDg0LjcgMTQuMWM1LjQgLjkgMTAgNC41IDEyLjEgOS42czEuNSAxMC45LTEuNiAxNS40bC0zOC41IDU1Yy0yLjItLjEtNC40LS4yLTYuNy0uMmMtMjMuMyAwLTQ1LjEgNi4yLTY0IDE3LjFsMC0xLjFjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZzNDMgOTYgOTYgOTZjOC4xIDAgMTUuOS0xIDIzLjQtMi45Yy0zNi42IDE4LjEtNjMuMyA1My4xLTY5LjggOTQuOWwtMjQuNCAxN2MtNC41IDMuMS0xMC4zIDMuOC0xNS40IDEuNnMtOC43LTYuNy05LjYtMTIuMUw5OC4xIDMxNy45IDEzLjQgMzAzLjhjLTUuNC0uOS0xMC00LjUtMTIuMS05LjZzLTEuNS0xMC45IDEuNi0xNS40TDUyLjUgMjA4IDIuOSAxMzcuMmMtMy4yLTQuNS0zLjgtMTAuMy0xLjYtMTUuNHM2LjctOC43IDEyLjEtOS42TDk4LjEgOTguMWwxNC4xLTg0LjdjLjktNS40IDQuNS0xMCA5LjYtMTIuMXMxMC45LTEuNSAxNS40IDEuNkwyMDggNTIuNSAyNzguOCAyLjljNC41LTMuMiAxMC4zLTMuOCAxNS40LTEuNnpNMTQ0IDIwOGE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTYzOS45IDQzMS45YzAgNDQuMi0zNS44IDgwLTgwIDgwSDI4OGMtNTMgMC05Ni00My05Ni05NmMwLTQ3LjYgMzQuNi04NyA4MC05NC42bDAtMS4zYzAtNTMgNDMtOTYgOTYtOTZjMzQuOSAwIDY1LjQgMTguNiA4Mi4yIDQ2LjRjMTMtOS4xIDI4LjgtMTQuNCA0NS44LTE0LjRjNDQuMiAwIDgwIDM1LjggODAgODBjMCA1LjktLjYgMTEuNy0xLjkgMTcuMmMzNy40IDYuNyA2NS44IDM5LjQgNjUuOCA3OC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMzNmMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NEg1MTJjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhjMC02MS45LTQ0LTExMy42LTEwMi40LTEyNS40YzQuMS0xMC43IDYuNC0yMi40IDYuNC0zNC42YzAtNTMtNDMtOTYtOTYtOTZjLTE5LjcgMC0zOC4xIDYtNTMuMyAxNi4yQzM2NyA2NC4yIDMxNS4zIDMyIDI1NiAzMkMxNjcuNiAzMiA5NiAxMDMuNiA5NiAxOTJjMCAyLjcgLjEgNS40IC4yIDguMUM0MC4yIDIxOS44IDAgMjczLjIgMCAzMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3ZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYuNiA0OS45QzIwNS4xIDM4LjUgMTg5LjUgMzIgMTczLjMgMzJDMTM5LjQgMzIgMTEyIDU5LjQgMTEyIDkzLjN2NC45YzAgMTIgMy4zIDIzLjcgOS40IDM0bDE4LjggMzEuM2MxLjEgMS44IDEuMiAzLjEgMSA0LjJjLS4yIDEuMi0uOCAyLjUtMiAzLjZzLTIuNCAxLjgtMy42IDJjLTEgLjItMi40IC4xLTQuMi0xbC0zMS4zLTE4LjhjLTEwLjMtNi4yLTIyLTkuNC0zNC05LjRINjEuM0MyNy40IDE0NCAwIDE3MS40IDAgMjA1LjNjMCAxNi4yIDYuNSAzMS44IDE3LjkgNDMuM2wxLjIgMS4yYzMuNCAzLjQgMy40IDkgMCAxMi40bC0xLjIgMS4yQzYuNSAyNzQuOSAwIDI5MC41IDAgMzA2LjdDMCAzNDAuNiAyNy40IDM2OCA2MS4zIDM2OGg0LjljMTIgMCAyMy43LTMuMyAzNC05LjRsMzEuMy0xOC44YzEuOC0xLjEgMy4xLTEuMiA0LjItMWMxLjIgLjIgMi41IC44IDMuNiAyczEuOCAyLjQgMiAzLjZjLjIgMSAuMSAyLjQtMSA0LjJsLTE4LjggMzEuM2MtNi4yIDEwLjMtOS40IDIyLTkuNCAzNHY0LjljMCAzMy44IDI3LjQgNjEuMyA2MS4zIDYxLjNjMTYuMiAwIDMxLjgtNi41IDQzLjMtMTcuOWwxLjItMS4yYzMuNC0zLjQgOS0zLjQgMTIuNCAwbDEuMiAxLjJjMTEuNSAxMS41IDI3LjEgMTcuOSA0My4zIDE3LjljMzMuOCAwIDYxLjMtMjcuNCA2MS4zLTYxLjN2LTQuOWMwLTEyLTMuMy0yMy43LTkuNC0zNGwtMTguOC0zMS4zYy0xLjEtMS44LTEuMi0zLjEtMS00LjJjLjItMS4yIC44LTIuNSAyLTMuNnMyLjQtMS44IDMuNi0yYzEtLjIgMi40LS4xIDQuMiAxbDMxLjMgMTguOGMxMC4zIDYuMiAyMiA5LjQgMzQgOS40aDQuOWMzMy44IDAgNjEuMy0yNy40IDYxLjMtNjEuM2MwLTE2LjItNi41LTMxLjgtMTcuOS00My4zbC0xLjItMS4yYy0zLjQtMy40LTMuNC05IDAtMTIuNGwxLjItMS4yYzExLjUtMTEuNSAxNy45LTI3LjEgMTcuOS00My4zYzAtMzMuOC0yNy40LTYxLjMtNjEuMy02MS4zaC00LjljLTEyIDAtMjMuNyAzLjMtMzQgOS40bC0zMS4zIDE4LjhjLTEuOCAxLjEtMy4xIDEuMi00LjIgMWMtMS4yLS4yLTIuNS0uOC0zLjYtMnMtMS44LTIuNC0yLTMuNmMtLjItMS0uMS0yLjQgMS00LjJsMTguOC0zMS4zYzYuMi0xMC4zIDkuNC0yMiA5LjQtMzRWOTMuM0MzMzYgNTkuNCAzMDguNiAzMiAyNzQuNyAzMmMtMTYuMiAwLTMxLjggNi41LTQzLjMgMTcuOWwtMS4yIDEuMmMtMy40IDMuNC05IDMuNC0xMi40IDBsLTEuMi0xLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGVCcmFuY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgMTA0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptODAtMjRjMCAzMi44LTE5LjcgNjEtNDggNzMuM3Y4Ny44YzE4LjgtMTAuOSA0MC43LTE3LjEgNjQtMTcuMWg5NmMzNS4zIDAgNjQtMjguNyA2NC02NHYtNi43QzMwNy43IDE0MSAyODggMTEyLjggMjg4IDgwYzAtNDQuMiAzNS44LTgwIDgwLTgwczgwIDM1LjggODAgODBjMCAzMi44LTE5LjcgNjEtNDggNzMuM1YxNjBjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhIMTc2Yy0zNS4zIDAtNjQgMjguNy02NCA2NHY2LjdjMjguMyAxMi4zIDQ4IDQwLjUgNDggNzMuM2MwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTMyLjggMTkuNy02MSA0OC03My4zVjM1MiAxNTMuM0MxOS43IDE0MSAwIDExMi44IDAgODBDMCAzNS44IDM1LjggMCA4MCAwczgwIDM1LjggODAgODB6bTIzMiAwYTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6TTgwIDQ1NmEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGVDb21taXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDMzNmE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHptMTU2LjgtNDhDNDYyIDM2MSAzOTcuNCA0MTYgMzIwIDQxNnMtMTQyLTU1LTE1Ni44LTEyOEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgxNjMuMkMxNzggMTUxIDI0Mi42IDk2IDMyMCA5NnMxNDIgNTUgMTU2LjggMTI4SDYwOGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0NzYuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29kZUNvbXBhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDQ4OGMwIDkuNS01LjYgMTguMS0xNC4yIDIxLjlzLTE4LjggMi4zLTI1LjgtNC4xbC04MC03MmMtNS4xLTQuNi03LjktMTEtNy45LTE3LjhzMi45LTEzLjMgNy45LTE3LjhsODAtNzJjNy02LjMgMTcuMi03LjkgMjUuOC00LjFzMTQuMiAxMi40IDE0LjIgMjEuOXY0MGgxNmMzNS4zIDAgNjQtMjguNyA2NC02NFYxNTMuM0MzNzEuNyAxNDEgMzUyIDExMi44IDM1MiA4MGMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwYzAgMzIuOC0xOS43IDYxLTQ4IDczLjNWMzIwYzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4SDMyMHY0MHpNNDU2IDgwYTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6TTE5MiAyNGMwLTkuNSA1LjYtMTguMSAxNC4yLTIxLjlzMTguOC0yLjMgMjUuOCA0LjFsODAgNzJjNS4xIDQuNiA3LjkgMTEgNy45IDE3LjhzLTIuOSAxMy4zLTcuOSAxNy44bC04MCA3MmMtNyA2LjMtMTcuMiA3LjktMjUuOCA0LjFzLTE0LjItMTIuNC0xNC4yLTIxLjlWMTI4SDE3NmMtMzUuMyAwLTY0IDI4LjctNjQgNjRWMzU4LjdjMjguMyAxMi4zIDQ4IDQwLjUgNDggNzMuM2MwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTMyLjggMTkuNy02MSA0OC03My4zVjE5MmMwLTcwLjcgNTcuMy0xMjggMTI4LTEyOGgxNlYyNHpNNTYgNDMyYTI0IDI0IDAgMSAwIDQ4IDAgMjQgMjQgMCAxIDAgLTQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGVGb3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwIDEwNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTgwLTI0YzAgMzIuOC0xOS43IDYxLTQ4IDczLjNWMTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDMwNGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNTMuM0MzMDcuNyAxNDEgMjg4IDExMi44IDI4OCA4MGMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwYzAgMzIuOC0xOS43IDYxLTQ4IDczLjNWMTkyYzAgNTMtNDMgOTYtOTYgOTZIMjU2djcwLjdjMjguMyAxMi4zIDQ4IDQwLjUgNDggNzMuM2MwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTMyLjggMTkuNy02MSA0OC03My4zVjI4OEgxNDRjLTUzIDAtOTYtNDMtOTYtOTZWMTUzLjNDMTkuNyAxNDEgMCAxMTIuOCAwIDgwQzAgMzUuOCAzNS44IDAgODAgMHM4MCAzNS44IDgwIDgwem0yMDggMjRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4ek0yNDggNDMyYTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGVNZXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCA1NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTMyLjQgOTcuMmMyOC0xMi40IDQ3LjYtNDAuNSA0Ny42LTczLjJjMC00NC4yLTM1LjgtODAtODAtODBTMCAzNS44IDAgODBjMCAzMi44IDE5LjcgNjEgNDggNzMuM1YzNTguN0MxOS43IDM3MSAwIDM5OS4yIDAgNDMyYzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0zMi44LTE5LjctNjEtNDgtNzMuM1YyNzJjMjYuNyAyMC4xIDYwIDMyIDk2IDMyaDg2LjdjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OGM0NC4yIDAgODAtMzUuOCA4MC04MHMtMzUuOC04MC04MC04MGMtMzIuOCAwLTYxIDE5LjctNzMuMyA0OEgyMDhjLTQ5LjkgMC05MS0zOC4xLTk1LjYtODYuOHpNODAgNDA4YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNMzQ0IDI3MmEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2RlUHVsbFJlcXVlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA1LjggMi4xQzMxNC40IDUuOSAzMjAgMTQuNSAzMjAgMjRWNjRoMTZjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhWMzU4LjdjMjguMyAxMi4zIDQ4IDQwLjUgNDggNzMuM2MwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTMyLjggMTkuNy02MSA0OC03My4zVjE5MmMwLTM1LjMtMjguNy02NC02NC02NEgzMjB2NDBjMCA5LjUtNS42IDE4LjEtMTQuMiAyMS45cy0xOC44IDIuMy0yNS44LTQuMWwtODAtNzJjLTUuMS00LjYtNy45LTExLTcuOS0xNy44czIuOS0xMy4zIDcuOS0xNy44bDgwLTcyYzctNi4zIDE3LjItNy45IDI1LjgtNC4xek0xMDQgODBBMjQgMjQgMCAxIDAgNTYgODBhMjQgMjQgMCAxIDAgNDggMHptOCA3My4zVjM1OC43YzI4LjMgMTIuMyA0OCA0MC41IDQ4IDczLjNjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBjMC0zMi44IDE5LjctNjEgNDgtNzMuM1YxNTMuM0MxOS43IDE0MSAwIDExMi44IDAgODBDMCAzNS44IDM1LjggMCA4MCAwczgwIDM1LjggODAgODBjMCAzMi44LTE5LjcgNjEtNDggNzMuM3pNMTA0IDQzMmEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwem0zMjggMjRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5Mi44IDEuMmMtMTctNC45LTM0LjcgNS0zOS42IDIybC0xMjggNDQ4Yy00LjkgMTcgNSAzNC43IDIyIDM5LjZzMzQuNy01IDM5LjYtMjJsMTI4LTQ0OGM0LjktMTctNS0zNC43LTIyLTM5LjZ6bTgwLjYgMTIwLjFjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zTDU2Mi43IDI1NmwtODkuNCA4OS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDExMi0xMTJjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTExMi0xMTJjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwem0tMzA2LjcgMGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTExMiAxMTJjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDExMiAxMTJjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0w3Ny4zIDI1Nmw4OS40LTg5LjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvaW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiA4MGMwIDE4LTE0LjMgMzQuNi0zOC40IDQ4Yy0yOS4xIDE2LjEtNzIuNSAyNy41LTEyMi4zIDMwLjljLTMuNy0xLjgtNy40LTMuNS0xMS4zLTVDMzAwLjYgMTM3LjQgMjQ4LjIgMTI4IDE5MiAxMjhjLTguMyAwLTE2LjQgLjItMjQuNSAuNmwtMS4xLS42QzE0Mi4zIDExNC42IDEyOCA5OCAxMjggODBjMC00NC4yIDg2LTgwIDE5Mi04MFM1MTIgMzUuOCA1MTIgODB6TTE2MC43IDE2MS4xYzEwLjItLjcgMjAuNy0xLjEgMzEuMy0xLjFjNjIuMiAwIDExNy40IDEyLjMgMTUyLjUgMzEuNEMzNjkuMyAyMDQuOSAzODQgMjIxLjcgMzg0IDI0MGMwIDQtLjcgNy45LTIuMSAxMS43Yy00LjYgMTMuMi0xNyAyNS4zLTM1IDM1LjVjMCAwIDAgMCAwIDBjLS4xIC4xLS4zIC4xLS40IC4ybDAgMCAwIDBjLS4zIC4yLS42IC4zLS45IC41Yy0zNSAxOS40LTkwLjggMzItMTUzLjYgMzJjLTU5LjYgMC0xMTIuOS0xMS4zLTE0OC4yLTI5LjFjLTEuOS0uOS0zLjctMS45LTUuNS0yLjlDMTQuMyAyNzQuNiAwIDI1OCAwIDI0MGMwLTM0LjggNTMuNC02NC41IDEyOC03NS40YzEwLjUtMS41IDIxLjQtMi43IDMyLjctMy41ek00MTYgMjQwYzAtMjEuOS0xMC42LTM5LjktMjQuMS01My40YzI4LjMtNC40IDU0LjItMTEuNCA3Ni4yLTIwLjVjMTYuMy02LjggMzEuNS0xNS4yIDQzLjktMjUuNVYxNzZjMCAxOS4zLTE2LjUgMzcuMS00My44IDUwLjljLTE0LjYgNy40LTMyLjQgMTMuNy01Mi40IDE4LjVjLjEtMS44IC4yLTMuNSAuMi01LjN6bS0zMiA5NmMwIDE4LTE0LjMgMzQuNi0zOC40IDQ4Yy0xLjggMS0zLjYgMS45LTUuNSAyLjlDMzA0LjkgNDA0LjcgMjUxLjYgNDE2IDE5MiA0MTZjLTYyLjggMC0xMTguNi0xMi42LTE1My42LTMyQzE0LjMgMzcwLjYgMCAzNTQgMCAzMzZWMzAwLjZjMTIuNSAxMC4zIDI3LjYgMTguNyA0My45IDI1LjVDODMuNCAzNDIuNiAxMzUuOCAzNTIgMTkyIDM1MnMxMDguNi05LjQgMTQ4LjEtMjUuOWM3LjgtMy4yIDE1LjMtNi45IDIyLjQtMTAuOWM2LjEtMy40IDExLjgtNy4yIDE3LjItMTEuMmMxLjUtMS4xIDIuOS0yLjMgNC4zLTMuNFYzMDR2NS43VjMzNnptMzIgMFYzMDQgMjc4LjFjMTktNC4yIDM2LjUtOS41IDUyLjEtMTZjMTYuMy02LjggMzEuNS0xNS4yIDQzLjktMjUuNVYyNzJjMCAxMC41LTUgMjEtMTQuOSAzMC45Yy0xNi4zIDE2LjMtNDUgMjkuNy04MS4zIDM4LjRjLjEtMS43IC4yLTMuNSAuMi01LjN6TTE5MiA0NDhjNTYuMiAwIDEwOC42LTkuNCAxNDguMS0yNS45YzE2LjMtNi44IDMxLjUtMTUuMiA0My45LTI1LjVWNDMyYzAgNDQuMi04NiA4MC0xOTIgODBTMCA0NzYuMiAwIDQzMlYzOTYuNmMxMi41IDEwLjMgMjcuNiAxOC43IDQzLjkgMjUuNUM4My40IDQzOC42IDEzNS44IDQ0OCAxOTIgNDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2xvblNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU1IDM5LjhjNC4zLTE3LjEtNi4xLTM0LjUtMjMuMy0zOC44UzE5Ny4yIDcuMSAxOTMgMjQuMkwxODEuOSA2OC42Qzk2LjEgODcuOCAzMiAxNjQuNCAzMiAyNTZjMCA1OC4xIDI1LjggMTEwLjIgNjYuNyAxNDUuNEw4MSA0NzIuMmMtNC4zIDE3LjEgNi4xIDM0LjUgMjMuMyAzOC44czM0LjUtNi4xIDM4LjgtMjMuM2wxMy01Mi4xYzkgMy40IDE4LjQgNi4yIDI4IDguMkwxNzcgNDcyLjJjLTQuMyAxNy4xIDYuMSAzNC41IDIzLjMgMzguOHMzNC41LTYuMSAzOC44LTIzLjNsMTAuNC00MS40YzMzLjQtNC40IDY0LjEtMTcuNCA4OS44LTM2LjdjMTQuMS0xMC42IDE3LTMwLjcgNi40LTQ0LjhzLTMwLjctMTctNDQuOC02LjRjLTEwLjIgNy43LTIxLjcgMTMuOS0zNCAxOC4zTDMyMSAxNjBjOS40LS4zIDE4LjUtNC43IDI0LjYtMTIuOGMxMC42LTE0LjEgNy44LTM0LjItNi40LTQ0LjhjLTEuMS0uOC0yLjItMS42LTMuMy0yLjRMMzUxIDM5LjhjNC4zLTE3LjEtNi4xLTM0LjUtMjMuMy0zOC44UzI5My4yIDcuMSAyODkgMjQuMkwyNzcuMiA3MS41Yy05LjMtMi43LTE4LjgtNC42LTI4LjYtNS45TDI1NSAzOS44ek0xNjMuMiAxNDMuM0wxMTcuMyAzMjYuOEMxMDMuOSAzMDYuNSA5NiAyODIuMiA5NiAyNTZjMC00OC43IDI3LjItOTEgNjcuMi0xMTIuN3ptOC42IDIyOS41bDYxLjEtMjQ0LjZjOS45IC43IDE5LjUgMi41IDI4LjcgNS4zbC02MiAyNDguMWMtOS43LTEuOS0xOS00LjgtMjcuOC04Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnREb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ0OGMxNDEuNCAwIDI1Ni05My4xIDI1Ni0yMDhTMzk3LjQgMzIgMjU2IDMyUzAgMTI1LjEgMCAyNDBjMCA0NS4xIDE3LjcgODYuOCA0Ny43IDEyMC45Yy0xLjkgMjQuNS0xMS40IDQ2LjMtMjEuNCA2Mi45Yy01LjUgOS4yLTExLjEgMTYuNi0xNS4yIDIxLjZjLTIuMSAyLjUtMy43IDQuNC00LjkgNS43Yy0uNiAuNi0xIDEuMS0xLjMgMS40bC0uMyAuMyAwIDAgMCAwIDAgMCAwIDBjLTQuNiA0LjYtNS45IDExLjQtMy40IDE3LjRjMi41IDYgOC4zIDkuOSAxNC44IDkuOWMyOC43IDAgNTcuNi04LjkgODEuNi0xOS4zYzIyLjktMTAgNDIuNC0yMS45IDU0LjMtMzAuNmMzMS44IDExLjUgNjcgMTcuOSAxMDQuMSAxNy45em0yMC0zMTJ2MTMuOWM3LjUgMS4yIDE0LjYgMi45IDIxLjEgNC43YzEwLjcgMi44IDE3IDEzLjggMTQuMiAyNC41cy0xMy44IDE3LTI0LjUgMTQuMmMtMTEtMi45LTIxLjYtNS0zMS4yLTUuMmMtNy45LS4xLTE2IDEuOC0yMS41IDVjLTQuOCAyLjgtNi4yIDUuNi02LjIgOS4zYzAgMS44IC4xIDMuNSA1LjMgNi43YzYuMyAzLjggMTUuNSA2LjcgMjguMyAxMC41bC43IC4yYzExLjIgMy40IDI1LjYgNy43IDM3LjEgMTVjMTIuOSA4LjEgMjQuMyAyMS4zIDI0LjYgNDEuNmMuMyAyMC45LTEwLjUgMzYuMS0yNC44IDQ1Yy03LjIgNC41LTE1LjIgNy4zLTIzLjIgOVYzNDRjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwVjMyOS40Yy0xMC4zLTIuMi0yMC01LjUtMjguMi04LjRsMCAwIDAgMGMtMi4xLS43LTQuMS0xLjQtNi4xLTIuMWMtMTAuNS0zLjUtMTYuMS0xNC44LTEyLjYtMjUuM3MxNC44LTE2LjEgMjUuMy0xMi42YzIuNSAuOCA0LjkgMS43IDcuMiAyLjRjMTMuNiA0LjYgMjQgOC4xIDM1LjEgOC41YzguNiAuMyAxNi41LTEuNiAyMS40LTQuN2M0LjEtMi41IDYtNS41IDUuOS0xMC41YzAtMi45LS44LTUtNS45LTguMmMtNi4zLTQtMTUuNC02LjktMjgtMTAuN2wtMS43LS41Yy0xMC45LTMuMy0yNC42LTcuNC0zNS42LTE0Yy0xMi43LTcuNy0yNC42LTIwLjUtMjQuNy00MC43Yy0uMS0yMS4xIDExLjgtMzUuNyAyNS44LTQzLjljNi45LTQuMSAxNC41LTYuOCAyMi4yLTguNVYxMzZjMC0xMSA5LTIwIDIwLTIwczIwIDkgMjAgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnREb3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0NDhjMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMlMwIDEyNS4xIDAgMjQwYzAgNDUuMSAxNy43IDg2LjggNDcuNyAxMjAuOWMtMS45IDI0LjUtMTEuNCA0Ni4zLTIxLjQgNjIuOWMtNS41IDkuMi0xMS4xIDE2LjYtMTUuMiAyMS42Yy0yLjEgMi41LTMuNyA0LjQtNC45IDUuN2MtLjYgLjYtMSAxLjEtMS4zIDEuNGwtLjMgLjMgMCAwIDAgMCAwIDAgMCAwYy00LjYgNC42LTUuOSAxMS40LTMuNCAxNy40YzIuNSA2IDguMyA5LjkgMTQuOCA5LjljMjguNyAwIDU3LjYtOC45IDgxLjYtMTkuM2MyMi45LTEwIDQyLjQtMjEuOSA1NC4zLTMwLjZjMzEuOCAxMS41IDY3IDE3LjkgMTA0LjEgMTcuOXpNMTI4IDIwOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTEyOCAwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptOTYgMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudE1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ0OGMxNDEuNCAwIDI1Ni05My4xIDI1Ni0yMDhTMzk3LjQgMzIgMjU2IDMyUzAgMTI1LjEgMCAyNDBjMCA0NS4xIDE3LjcgODYuOCA0Ny43IDEyMC45Yy0xLjkgMjQuNS0xMS40IDQ2LjMtMjEuNCA2Mi45Yy01LjUgOS4yLTExLjEgMTYuNi0xNS4yIDIxLjZjLTIuMSAyLjUtMy43IDQuNC00LjkgNS43Yy0uNiAuNi0xIDEuMS0xLjMgMS40bC0uMyAuMyAwIDAgMCAwIDAgMCAwIDBjLTQuNiA0LjYtNS45IDExLjQtMy40IDE3LjRjMi41IDYgOC4zIDkuOSAxNC44IDkuOWMyOC43IDAgNTcuNi04LjkgODEuNi0xOS4zYzIyLjktMTAgNDIuNC0yMS45IDU0LjMtMzAuNmMzMS44IDExLjUgNjcgMTcuOSAxMDQuMSAxNy45ek0yMjQgMTYwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NDhoNDhjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyODh2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDI0MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyMjRjMC04LjggNy4yLTE2IDE2LTE2aDQ4VjE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNTEyLjkgMzc2LjdDNTUyLjIgMzQwLjIgNTc2IDI5Mi4zIDU3NiAyNDBDNTc2IDEyNS4xIDQ2MS40IDMyIDMyMCAzMmMtNjcuNyAwLTEyOS4zIDIxLjQtMTc1LjEgNTYuM0wzOC44IDUuMXptMzg1LjIgNDI1TDgyLjkgMTYxLjNDNzAuNyAxODUuNiA2NCAyMTIuMiA2NCAyNDBjMCA0NS4xIDE3LjcgODYuOCA0Ny43IDEyMC45Yy0xLjkgMjQuNS0xMS40IDQ2LjMtMjEuNCA2Mi45Yy01LjUgOS4yLTExLjEgMTYuNi0xNS4yIDIxLjZjLTIuMSAyLjUtMy43IDQuNC00LjkgNS43Yy0uNiAuNi0xIDEuMS0xLjMgMS40bC0uMyAuMyAwIDAgMCAwIDAgMCAwIDBjLTQuNiA0LjYtNS45IDExLjQtMy40IDE3LjRjMi41IDYgOC4zIDkuOSAxNC44IDkuOWMyOC43IDAgNTcuNi04LjkgODEuNi0xOS4zYzIyLjktMTAgNDIuNC0yMS45IDU0LjMtMzAuNmMzMS44IDExLjUgNjcgMTcuOSAxMDQuMSAxNy45YzM3IDAgNzIuMy02LjQgMTA0LjEtMTcuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudFNtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDQ4YzE0MS40IDAgMjU2LTkzLjEgMjU2LTIwOFMzOTcuNCAzMiAyNTYgMzJTMCAxMjUuMSAwIDI0MGMwIDQ1LjEgMTcuNyA4Ni44IDQ3LjcgMTIwLjljLTEuOSAyNC41LTExLjQgNDYuMy0yMS40IDYyLjljLTUuNSA5LjItMTEuMSAxNi42LTE1LjIgMjEuNmMtMi4xIDIuNS0zLjcgNC40LTQuOSA1LjdjLS42IC42LTEgMS4xLTEuMyAxLjRsLS4zIC4zIDAgMCAwIDAgMCAwIDAgMGMtNC42IDQuNi01LjkgMTEuNC0zLjQgMTcuNGMyLjUgNiA4LjMgOS45IDE0LjggOS45YzI4LjcgMCA1Ny42LTguOSA4MS42LTE5LjNjMjIuOS0xMCA0Mi40LTIxLjkgNTQuMy0zMC42YzMxLjggMTEuNSA2NyAxNy45IDEwNC4xIDE3Ljl6TTk2IDIxMi44YzAtMjAuMyAxNi41LTM2LjggMzYuOC0zNi44SDE1MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMzIuOGMtMi43IDAtNC44IDIuMi00LjggNC44YzAgMS42IC44IDMuMSAyLjIgNGwyOS40IDE5LjZjMTAuMyA2LjggMTYuNCAxOC4zIDE2LjQgMzAuN2MwIDIwLjMtMTYuNSAzNi44LTM2LjggMzYuOEgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoMjcuMmMyLjcgMCA0LjgtMi4yIDQuOC00LjhjMC0xLjYtLjgtMy4xLTIuMi00bC0yOS40LTE5LjZDMTAyLjIgMjM2LjcgOTYgMjI1LjIgOTYgMjEyLjh6TTM3Mi44IDE3NkgzOTJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzcyLjhjLTIuNyAwLTQuOCAyLjItNC44IDQuOGMwIDEuNiAuOCAzLjEgMi4yIDRsMjkuNCAxOS42YzEwLjIgNi44IDE2LjQgMTguMyAxNi40IDMwLjdjMCAyMC4zLTE2LjUgMzYuOC0zNi44IDM2LjhIMzUyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDI3LjJjMi43IDAgNC44LTIuMiA0LjgtNC44YzAtMS42LS44LTMuMS0yLjItNGwtMjkuNC0xOS42Yy0xMC4yLTYuOC0xNi40LTE4LjMtMTYuNC0zMC43YzAtMjAuMyAxNi41LTM2LjggMzYuOC0zNi44em0tMTUyIDYuNEwyNTYgMjI5LjNsMzUuMi00Ni45YzQuMS01LjUgMTEuMy03LjggMTcuOS01LjZzMTAuOSA4LjMgMTAuOSAxNS4ydjk2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI0MGwtMTkuMiAyNS42Yy0zIDQtNy44IDYuNC0xMi44IDYuNHMtOS44LTIuNC0xMi44LTYuNEwyMjQgMjQwdjQ4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjE5MmMwLTYuOSA0LjQtMTMgMTAuOS0xNS4yczEzLjcgLjEgMTcuOSA1LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDI0MGMwIDExNC45LTExNC42IDIwOC0yNTYgMjA4Yy0zNy4xIDAtNzIuMy02LjQtMTA0LjEtMTcuOWMtMTEuOSA4LjctMzEuMyAyMC42LTU0LjMgMzAuNkM3My42IDQ3MS4xIDQ0LjcgNDgwIDE2IDQ4MGMtNi41IDAtMTIuMy0zLjktMTQuOC05LjljLTIuNS02LTEuMS0xMi44IDMuNC0xNy40bDAgMCAwIDAgMCAwIDAgMCAuMy0uM2MuMy0uMyAuNy0uNyAxLjMtMS40YzEuMS0xLjIgMi44LTMuMSA0LjktNS43YzQuMS01IDkuNi0xMi40IDE1LjItMjEuNmMxMC0xNi42IDE5LjUtMzguNCAyMS40LTYyLjlDMTcuNyAzMjYuOCAwIDI4NS4xIDAgMjQwQzAgMTI1LjEgMTE0LjYgMzIgMjU2IDMyczI1NiA5My4xIDI1NiAyMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnRzRG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAxNzZjMCA5Ny4yLTkzLjEgMTc2LTIwOCAxNzZjLTM4LjIgMC03My45LTguNy0xMDQuNy0yMy45Yy03LjUgNC0xNiA3LjktMjUuMiAxMS40QzU5LjggMzQ2LjQgMzcuOCAzNTIgMTYgMzUyYy02LjkgMC0xMy4xLTQuNS0xNS4yLTExLjFzLjItMTMuOCA1LjgtMTcuOWwwIDAgMCAwIC4yLS4yYy4yLS4yIC42LS40IDEuMS0uOGMxLS44IDIuNS0yIDQuMy0zLjdjMy42LTMuMyA4LjUtOC4xIDEzLjMtMTQuM2M1LjUtNyAxMC43LTE1LjQgMTQuMi0yNC43QzE0LjcgMjUwLjMgMCAyMTQuNiAwIDE3NkMwIDc4LjggOTMuMSAwIDIwOCAwUzQxNiA3OC44IDQxNiAxNzZ6TTIzMS41IDM4M0MzNDguOSAzNzIuOSA0NDggMjg4LjMgNDQ4IDE3NmMwLTUuMi0uMi0xMC40LS42LTE1LjVDNTU1LjEgMTY3LjEgNjQwIDI0My4yIDY0MCAzMzZjMCAzOC42LTE0LjcgNzQuMy0zOS42IDEwMy40YzMuNSA5LjQgOC43IDE3LjcgMTQuMiAyNC43YzQuOCA2LjIgOS43IDExIDEzLjMgMTQuM2MxLjggMS42IDMuMyAyLjkgNC4zIDMuN2MuNSAuNCAuOSAuNyAxLjEgLjhsLjIgLjIgMCAwIDAgMGM1LjYgNC4xIDcuOSAxMS4zIDUuOCAxNy45Yy0yLjEgNi42LTguMyAxMS4xLTE1LjIgMTEuMWMtMjEuOCAwLTQzLjgtNS42LTYyLjEtMTIuNWMtOS4yLTMuNS0xNy44LTcuNC0yNS4yLTExLjRDNTA1LjkgNTAzLjMgNDcwLjIgNTEyIDQzMiA1MTJjLTk1LjYgMC0xNzYuMi01NC42LTIwMC41LTEyOXpNMjI4IDcyYzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMFY4NmMtNy42IDEuNy0xNS4yIDQuNC0yMi4yIDguNWMtMTMuOSA4LjMtMjUuOSAyMi44LTI1LjggNDMuOWMuMSAyMC4zIDEyIDMzLjEgMjQuNyA0MC43YzExIDYuNiAyNC43IDEwLjggMzUuNiAxNGwxLjcgLjVjMTIuNiAzLjggMjEuOCA2LjggMjggMTAuN2M1LjEgMy4yIDUuOCA1LjQgNS45IDguMmMuMSA1LTEuOCA4LTUuOSAxMC41Yy01IDMuMS0xMi45IDUtMjEuNCA0LjdjLTExLjEtLjQtMjEuNS0zLjktMzUuMS04LjVjLTIuMy0uOC00LjctMS42LTcuMi0yLjRjLTEwLjUtMy41LTIxLjggMi4yLTI1LjMgMTIuNnMyLjIgMjEuOCAxMi42IDI1LjNjMS45IC42IDQgMS4zIDYuMSAyLjFsMCAwIDAgMGM4LjMgMi45IDE3LjkgNi4yIDI4LjIgOC40VjI4MGMwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMFYyNjYuMmM4LTEuNyAxNi00LjUgMjMuMi05YzE0LjMtOC45IDI1LjEtMjQuMSAyNC44LTQ1Yy0uMy0yMC4zLTExLjctMzMuNC0yNC42LTQxLjZjLTExLjUtNy4yLTI1LjktMTEuNi0zNy4xLTE1bC0uNy0uMmMtMTIuOC0zLjktMjEuOS02LjctMjguMy0xMC41Yy01LjItMy4xLTUuMy00LjktNS4zLTYuN2MwLTMuNyAxLjQtNi41IDYuMi05LjNjNS40LTMuMiAxMy42LTUuMSAyMS41LTVjOS42IC4xIDIwLjIgMi4yIDMxLjIgNS4yYzEwLjcgMi44IDIxLjYtMy41IDI0LjUtMTQuMnMtMy41LTIxLjYtMTQuMi0yNC41Yy02LjUtMS43LTEzLjctMy40LTIxLjEtNC43VjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21tZW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggMzUyYzExNC45IDAgMjA4LTc4LjggMjA4LTE3NlMzMjIuOSAwIDIwOCAwUzAgNzguOCAwIDE3NmMwIDM4LjYgMTQuNyA3NC4zIDM5LjYgMTAzLjRjLTMuNSA5LjQtOC43IDE3LjctMTQuMiAyNC43Yy00LjggNi4yLTkuNyAxMS0xMy4zIDE0LjNjLTEuOCAxLjYtMy4zIDIuOS00LjMgMy43Yy0uNSAuNC0uOSAuNy0xLjEgLjhsLS4yIC4yIDAgMCAwIDBDMSAzMjcuMi0xLjQgMzM0LjQgLjggMzQwLjlTOS4xIDM1MiAxNiAzNTJjMjEuOCAwIDQzLjgtNS42IDYyLjEtMTIuNWM5LjItMy41IDE3LjgtNy40IDI1LjMtMTEuNEMxMzQuMSAzNDMuMyAxNjkuOCAzNTIgMjA4IDM1MnpNNDQ4IDE3NmMwIDExMi4zLTk5LjEgMTk2LjktMjE2LjUgMjA3QzI1NS44IDQ1Ny40IDMzNi40IDUxMiA0MzIgNTEyYzM4LjIgMCA3My45LTguNyAxMDQuNy0yMy45YzcuNSA0IDE2IDcuOSAyNS4yIDExLjRjMTguMyA2LjkgNDAuMyAxMi41IDYyLjEgMTIuNWM2LjkgMCAxMy4xLTQuNSAxNS4yLTExLjFjMi4xLTYuNi0uMi0xMy44LTUuOC0xNy45bDAgMCAwIDAtLjItLjJjLS4yLS4yLS42LS40LTEuMS0uOGMtMS0uOC0yLjUtMi00LjMtMy43Yy0zLjYtMy4zLTguNS04LjEtMTMuMy0xNC4zYy01LjUtNy0xMC43LTE1LjQtMTQuMi0yNC43YzI0LjktMjkgMzkuNi02NC43IDM5LjYtMTAzLjRjMC05Mi44LTg0LjktMTY4LjktMTkyLjYtMTc1LjVjLjQgNS4xIC42IDEwLjMgLjYgMTUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tcGFjdERpc2MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yNTYgMzJhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em0tOTYtMzJhOTYgOTYgMCAxIDAgMTkyIDAgOTYgOTYgMCAxIDAgLTE5MiAwek05NiAyNDBjMC0zNSAxNy41LTcxLjEgNDUuMi05OC44UzIwNSA5NiAyNDAgOTZjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZjLTQ1LjQgMC04OS4yIDIyLjMtMTIxLjUgNTQuNVM2NCAxOTQuNiA2NCAyNDBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tcGFzc0RyYWZ0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiA5NmMwIDE0LjMtMy4xIDI3LjktOC44IDQwLjJMMzk2IDIyNy40Yy0yMy43IDI1LjMtNTQuMiA0NC4xLTg4LjUgNTMuNkwyNTYgMTkyaDAgMGwtNjggMTE3LjVjMjEuNSA2LjggNDQuMyAxMC41IDY4LjEgMTAuNWM3MC43IDAgMTMzLjgtMzIuNyAxNzQuOS04NGMxMS4xLTEzLjggMzEuMi0xNiA0NS01czE2IDMxLjIgNSA0NUM0MjguMSAzNDEuOCAzNDcgMzg0IDI1NiAzODRjLTM1LjQgMC02OS40LTYuNC0xMDAuNy0xOC4xTDk4LjcgNDYzLjdDOTQgNDcxLjggODcgNDc4LjQgNzguNiA0ODIuNkwyMy4yIDUxMC4zYy01IDIuNS0xMC45IDIuMi0xNS42LS43UzAgNTAxLjUgMCA0OTZWNDQwLjZjMC04LjQgMi4yLTE2LjcgNi41LTI0LjFsNjAtMTAzLjdDNTMuNyAzMDEuNiA0MS44IDI4OS4zIDMxLjIgMjc2Yy0xMS4xLTEzLjgtOC44LTMzLjkgNS00NXMzMy45LTguOCA0NSA1YzUuNyA3LjEgMTEuOCAxMy44IDE4LjIgMjAuMWw2OS40LTExOS45Yy01LjYtMTIuMi04LjgtMjUuOC04LjgtNDAuMmMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2em0yMSAyOTcuOWMzMi42LTEyLjggNjIuNS0zMC44IDg4LjktNTIuOWw0My43IDc1LjVjNC4yIDcuMyA2LjUgMTUuNiA2LjUgMjQuMVY0OTZjMCA1LjUtMi45IDEwLjctNy42IDEzLjZzLTEwLjYgMy4yLTE1LjYgLjdsLTU1LjQtMjcuN2MtOC40LTQuMi0xNS40LTEwLjgtMjAuMS0xOC45TDM3MyAzOTMuOXpNMjU2IDEyOGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbXBhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTUwLjctMTg2LjlMMTYyLjQgMzgwLjZjLTE5LjQgNy41LTM4LjUtMTEuNi0zMS0zMWw1NS41LTE0NC4zYzMuMy04LjUgOS45LTE1LjEgMTguNC0xOC40bDE0NC4zLTU1LjVjMTkuNC03LjUgMzguNSAxMS42IDMxIDMxTDMyNS4xIDMwNi43Yy0zLjIgOC41LTkuOSAxNS4xLTE4LjQgMTguNHpNMjg4IDI1NmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21wcmVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjR6TTMyIDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg5NnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM1MmMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMnpNMzUyIDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM1MlY2NHpNMzIwIDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzODRoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21wdXRlck1vdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTkySDE3NlYwSDE2MEM3MS42IDAgMCA3MS42IDAgMTYwdjMyem0wIDMyVjM1MmMwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MGg2NGM4OC40IDAgMTYwLTcxLjYgMTYwLTE2MFYyMjRIMTkyIDB6bTM4NC0zMlYxNjBDMzg0IDcxLjYgMzEyLjQgMCAyMjQgMEgyMDhWMTkySDM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tcHV0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDk2VjMyMEg2NEw2NCA5NkgzODR6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWMzIwYzAgMzUuMyAyOC43IDY0IDY0IDY0SDE4MS4zbC0xMC43IDMySDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNzcuM2wtMTAuNy0zMkgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTQ2NCAwYy0yNi41IDAtNDggMjEuNS00OCA0OFY0MzJjMCAyNi41IDIxLjUgNDggNDggNDhoNjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhINTI4em0xNiA2NGgzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg1NDRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bS0xNiA4MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZINTQ0Yy04LjggMC0xNi03LjItMTYtMTZ6bTMyIDE2MGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvb2tpZUJpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU3LjUgMjcuNmMtLjgtNS40LTQuOS05LjgtMTAuMy0xMC42djBjLTIyLjEtMy4xLTQ0LjYgLjktNjQuNCAxMS40bC03NCAzOS41Qzg5LjEgNzguNCA3My4yIDk0LjkgNjMuNCAxMTVMMjYuNyAxOTAuNmMtOS44IDIwLjEtMTMgNDIuOS05LjEgNjQuOWwxNC41IDgyLjhjMy45IDIyLjEgMTQuNiA0Mi4zIDMwLjcgNTcuOWw2MC4zIDU4LjRjMTYuMSAxNS42IDM2LjYgMjUuNiA1OC43IDI4LjdsODMgMTEuN2MyMi4xIDMuMSA0NC42LS45IDY0LjQtMTEuNGw3NC0zOS41YzE5LjctMTAuNSAzNS42LTI3IDQ1LjQtNDcuMmwzNi43LTc1LjVjOS44LTIwLjEgMTMtNDIuOSA5LjEtNjQuOXYwYy0uOS01LjMtNS4zLTkuMy0xMC42LTEwLjFjLTUxLjUtOC4yLTkyLjgtNDcuMS0xMDQuNS05Ny40Yy0xLjgtNy42LTgtMTMuNC0xNS43LTE0LjZjLTU0LjYtOC43LTk3LjctNTItMTA2LjItMTA2Ljh6TTIwOCAxNDRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xNDQgMzM2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTIyNC02NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvb2tpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuMiAxN2MtMjIuMS0zLjEtNDQuNiAuOS02NC40IDExLjRsLTc0IDM5LjVDODkuMSA3OC40IDczLjIgOTQuOSA2My40IDExNUwyNi43IDE5MC42Yy05LjggMjAuMS0xMyA0Mi45LTkuMSA2NC45bDE0LjUgODIuOGMzLjkgMjIuMSAxNC42IDQyLjMgMzAuNyA1Ny45bDYwLjMgNTguNGMxNi4xIDE1LjYgMzYuNiAyNS42IDU4LjcgMjguN2w4MyAxMS43YzIyLjEgMy4xIDQ0LjYtLjkgNjQuNC0xMS40bDc0LTM5LjVjMTkuNy0xMC41IDM1LjYtMjcgNDUuNC00Ny4ybDM2LjctNzUuNWM5LjgtMjAuMSAxMy00Mi45IDkuMS02NC45bC0xNC42LTgyLjhjLTMuOS0yMi4xLTE0LjYtNDIuMy0zMC43LTU3LjlMMzg4LjkgNTcuNWMtMTYuMS0xNS42LTM2LjYtMjUuNi01OC43LTI4LjdMMjQ3LjIgMTd6TTIwOCAxNDRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xNDQgMzM2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTIyNC02NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDBIMzMyLjFjMTIuNyAwIDI0LjkgNS4xIDMzLjkgMTQuMWw2Ny45IDY3LjljOSA5IDE0LjEgMjEuMiAxNC4xIDMzLjlWMzM2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDIwOGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDhjMC0yNi41IDIxLjUtNDggNDgtNDh6TTQ4IDEyOGg4MHY2NEg2NFY0NDhIMjU2VjQxNmg2NHY0OGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTc2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb3B5cmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE5OS40IDMxMi42YzMxLjIgMzEuMiA4MS45IDMxLjIgMTEzLjEgMGM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjljLTUwIDUwLTEzMSA1MC0xODEgMHMtNTAtMTMxIDAtMTgxczEzMS01MCAxODEgMGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwYy0zMS4yLTMxLjItODEuOS0zMS4yLTExMy4xIDBzLTMxLjIgODEuOSAwIDExMy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb3VjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAxNjBDNjQgODkuMyAxMjEuMyAzMiAxOTIgMzJINDQ4YzcwLjcgMCAxMjggNTcuMyAxMjggMTI4djMzLjZjLTM2LjUgNy40LTY0IDM5LjctNjQgNzguNHY0OEgxMjhWMjcyYzAtMzguNy0yNy41LTcxLTY0LTc4LjRWMTYwek01NDQgMjcyYzAtMjAuOSAxMy40LTM4LjcgMzItNDUuM2M1LTEuOCAxMC40LTIuNyAxNi0yLjdjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMySDU3NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJIOTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjI3MmMwLTI2LjUgMjEuNS00OCA0OC00OGM1LjYgMCAxMSAxIDE2IDIuN2MxOC42IDYuNiAzMiAyNC40IDMyIDQ1LjN2NDggMzJoMzJINTEyaDMyVjMyMCAyNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAyMjR2MzJWNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMyNy44YzkuOSA2LjYgMjAuNiAxMiAzMiAxNi4xVjM2OGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjM1MS4xYzUuMyAuNiAxMC42IC45IDE2IC45czEwLjctLjMgMTYtLjlWMzY4YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzQzLjhjMTEuNC00IDIyLjEtOS40IDMyLTE2LjFWNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1NmwzMiAzMnY0OS41YzAgOS41IDIuOCAxOC43IDguMSAyNi42TDUzMCA0MjdjOC44IDEzLjEgMjMuNSAyMSAzOS4zIDIxYzIyLjUgMCA0MS45LTE1LjkgNDYuMy0zOGwyMC4zLTEwMS42YzIuNi0xMy0uMy0yNi41LTgtMzcuM2wtMy45LTUuNVYxODRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2MTQuNGwtNTIuOS03NC4xQzQ5NiA4Ni41IDQ1Mi40IDY0IDQwNS45IDY0SDI3MiAyNTYgMTkyIDE0NEM3Ny43IDY0IDI0IDExNy43IDI0IDE4NHY1NEM5LjQgMjQ5LjggMCAyNjcuOCAwIDI4OHYxNy42YzAgOCA2LjQgMTQuNCAxNC40IDE0LjRDNDYuMiAzMjAgNzIgMjk0LjIgNzIgMjYyLjRWMjU2IDIyNCAxODRjMC0yNC4zIDEyLjEtNDUuOCAzMC41LTU4LjlDOTguMyAxMzUuOSA5NiAxNDcuNyA5NiAxNjB2NjR6TTU2MCAzMzZhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHpNMTY2LjYgMTY2LjZjLTQuMi00LjItNi42LTEwLTYuNi0xNmMwLTEyLjUgMTAuMS0yMi42IDIyLjYtMjIuNkgzNjEuNGMxMi41IDAgMjIuNiAxMC4xIDIyLjYgMjIuNmMwIDYtMi40IDExLjgtNi42IDE2bC0yMy40IDIzLjRDMzMyLjIgMjExLjggMzAyLjcgMjI0IDI3MiAyMjRzLTYwLjItMTIuMi04MS45LTMzLjlsLTIzLjQtMjMuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlZGl0Q2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2djMySDU3NlY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNNTc2IDIyNEgwVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjI0ek0xMTIgMzUyaDY0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMTEyIDE2YzAtOC44IDcuMi0xNiAxNi0xNkgzNjhjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMjQwYy04LjggMC0xNi03LjItMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyb3BTaW1wbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyUzY0IDE0LjMgNjQgMzJWNjRIMzJDMTQuMyA2NCAwIDc4LjMgMCA5NnMxNC4zIDMyIDMyIDMySDY0VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzNTJWMzg0SDEyOFYzMnpNMzg0IDQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQ0OGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0NDhsMC0yNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRMMTYwIDY0djY0bDIyNCAwIDAgMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAxMDkuM2w1NC42LTU0LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMNDAyLjcgNjQgMTYwIDY0djY0bDE3OC43IDBMMTI4IDMzOC43VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyUzY0IDE0LjMgNjQgMzJWNjRIMzJDMTQuMyA2NCAwIDc4LjMgMCA5NnMxNC4zIDMyIDMyIDMySDY0VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzNTJWMzg0SDE3My4zTDM4NCAxNzMuMyAzODQgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDQ4aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ0OGwwLTI3NC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm9zcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2ODBINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDgwVjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzMmMyNi41IDAgNDgtMjEuNSA0OC00OFYyNTZoODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTc2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDI1NlY0OGMwLTI2LjUtMjEuNS00OC00OC00OEgxNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyb3NzaGFpcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDIuNGM5My43IDEzLjkgMTY3LjcgODggMTgxLjYgMTgxLjZINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQ2OS42Yy0xMy45IDkzLjctODggMTY3LjctMTgxLjYgMTgxLjZWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ2OS42QzEzMC4zIDQ1NS43IDU2LjMgMzgxLjcgNDIuNCAyODhIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDIuNEM1Ni4zIDEzMC4zIDEzMC4zIDU2LjMgMjI0IDQyLjRWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTEwNy40IDI4OGMxMi41IDU4LjMgNTguNCAxMDQuMSAxMTYuNiAxMTYuNlYzODRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnYyMC42YzU4LjMtMTIuNSAxMDQuMS01OC40IDExNi42LTExNi42SDM4NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgyMC42QzM5Mi4xIDE2NS43IDM0Ni4zIDExOS45IDI4OCAxMDcuNFYxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTA3LjRDMTY1LjcgMTE5LjkgMTE5LjkgMTY1LjcgMTA3LjQgMjI0SDEyOGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgxMDcuNHpNMjU2IDIyNGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU2IDBjLTQ4LjYgMC04OCAzOS40LTg4IDg4djI5LjJMMTIuNSAzOTAuNmMtMTQgMTAuOC0xNi42IDMwLjktNS45IDQ0LjlzMzAuOSAxNi42IDQ0LjkgNS45TDEyNi4xIDM4NEgyNTkuMmw0Ni42IDExMy4xYzUgMTIuMyAxOS4xIDE4LjEgMzEuMyAxMy4xczE4LjEtMTkuMSAxMy4xLTMxLjNMMzExLjEgMzg0SDM1MmMxLjEgMCAyLjEgMCAzLjIgMGw0Ni42IDExMy4yYzUgMTIuMyAxOS4xIDE4LjEgMzEuMyAxMy4xczE4LjEtMTkuMSAxMy4xLTMxLjNsLTQyLTEwMkM0ODQuOSAzNTQuMSA1NDQgMjgwIDU0NCAxOTJWMTI4di04bDgwLjUtMjAuMWM4LjYtMi4xIDEzLjgtMTAuOCAxMS42LTE5LjRDNjI5IDUyIDYwMy40IDMyIDU3NCAzMkg1MjMuOUM1MDcuNyAxMi41IDQ4My4zIDAgNDU2IDB6bTAgNjRhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDkgMTA2YzExLjQtNyAxOS0xOS43IDE5LTM0YzAtMjIuMS0xNy45LTQwLTQwLTQwcy00MCAxNy45LTQwIDQwYzAgMTQuNCA3LjYgMjcgMTkgMzRMMjA5LjcgMjIwLjZjLTkuMSAxOC4yLTMyLjcgMjMuNC00OC42IDEwLjdMNzIgMTYwYzUtNi43IDgtMTUgOC0yNGMwLTIyLjEtMTcuOS00MC00MC00MFMwIDExMy45IDAgMTM2czE3LjkgNDAgNDAgNDBjLjIgMCAuNSAwIC43IDBMODYuNCA0MjcuNGM1LjUgMzAuNCAzMiA1Mi42IDYzIDUyLjZINDI2LjZjMzAuOSAwIDU3LjQtMjIuMSA2My01Mi42TDUzNS4zIDE3NmMuMiAwIC41IDAgLjcgMGMyMi4xIDAgNDAtMTcuOSA0MC00MHMtMTcuOS00MC00MC00MHMtNDAgMTcuOS00MCA0MGMwIDkgMyAxNy4zIDggMjRsLTg5LjEgNzEuM2MtMTUuOSAxMi43LTM5LjUgNy41LTQ4LjYtMTAuN0wzMDkgMTA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcnV0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk3LjQgOS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTE2MC0xNjBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwem0tOTYgMTQ0bC0zNC44IDM0LjhjLTEyLjkgMTIuOS0yMS45IDI5LjItMjUuOCA0Ny4xTDExNi44IDM0Mi45Yy0xLjMgNS45LTQuMyAxMS40LTguNiAxNS43TDkuNCA0NTcuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw5OC44LTk4LjhjNC4zLTQuMyA5LjctNy4zIDE1LjctOC42bDEwNy42LTIzLjljMTcuOC00IDM0LjEtMTIuOSA0Ny4xLTI1LjhsMzQuNy0zNC43YzAgMCAuMS0uMSAuMS0uMXMuMS0uMSAuMS0uMWw3NC42LTc0LjYtNDUuMy00NS4zTDMzNiAyNDIuNyAyNjkuMyAxNzZsNTIuMS01Mi4xTDI3Ni4xIDc4LjZsLTc0LjcgNzQuN3pNMjI0IDIyMS4zTDI5MC43IDI4OGwtMTIuMiAxMi4yYy00LjMgNC4zLTkuNyA3LjMtMTUuNyA4LjZsLTc2LjcgMTcgMTctNzYuN2MxLjMtNS45IDQuMy0xMS40IDguNi0xNS43TDIyNCAyMjEuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3J1emVpcm9TaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDI1NmMwLTg4LjQgNzEuNi0xNjAgMTYwLTE2MGM0MSAwIDc4LjMgMTUuNCAxMDYuNyA0MC43YzEzLjIgMTEuOCAzMy40IDEwLjcgNDUuMi0yLjVzMTAuNy0zMy40LTIuNS00NS4yYy0zOS42LTM1LjUtOTItNTctMTQ5LjMtNTdDMTMyLjMgMzIgMzIgMTMyLjMgMzIgMjU2czEwMC4zIDIyNCAyMjQgMjI0YzU3LjQgMCAxMDkuNy0yMS42IDE0OS4zLTU3YzEzLjItMTEuOCAxNC4zLTMyIDIuNS00NS4ycy0zMi0xNC4zLTQ1LjItMi41QzMzNC4zIDQwMC42IDI5NyA0MTYgMjU2IDQxNlYzMjB2LTguN2MwLTEyLjggMTAuNC0yMy4zIDIzLjMtMjMuM2M0LjYgMCA5LjEgMS40IDEyLjkgMy45bDEwLjEgNi43YzE0LjcgOS44IDM0LjYgNS44IDQ0LjQtOC45czUuOC0zNC42LTguOS00NC40bC0xMC4xLTYuN2MtMTQuMy05LjYtMzEuMi0xNC43LTQ4LjQtMTQuN2MtMTIuNCAwLTI0LjIgMi42LTM0LjkgNy4zYy01LjUtNC41LTEyLjYtNy4zLTIwLjMtNy4zYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY1NS4zVjMyMHY4Mi43QzEzNS41IDM3OCA5NiAzMjEuNiA5NiAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUN1YmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjM0LjUgNS43YzEzLjktNSAyOS4xLTUgNDMuMSAwbDE5MiA2OC42QzQ5NSA4My40IDUxMiAxMDcuNSA1MTIgMTM0LjZWMzc3LjRjMCAyNy0xNyA1MS4yLTQyLjUgNjAuM2wtMTkyIDY4LjZjLTEzLjkgNS0yOS4xIDUtNDMuMSAwbC0xOTItNjguNkMxNyA0MjguNiAwIDQwNC41IDAgMzc3LjRWMTM0LjZjMC0yNyAxNy01MS4yIDQyLjUtNjAuM2wxOTItNjguNnpNMjU2IDY2TDgyLjMgMTI4IDI1NiAxOTBsMTczLjctNjJMMjU2IDY2em0zMiAzNjguNmwxNjAtNTcuMXYtMTg4TDI4OCAyNDYuNnYxODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUN1YmVzU3RhY2tlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNjR2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJIMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNODIuNyAyMDdjLTE1LjMgOC44LTIwLjUgMjguNC0xMS43IDQzLjdsMzIgNTUuNGM4LjggMTUuMyAyOC40IDIwLjUgNDMuNyAxMS43bDU1LjQtMzJjMTUuMy04LjggMjAuNS0yOC40IDExLjctNDMuN2wtMzItNTUuNGMtOC44LTE1LjMtMjguNC0yMC41LTQzLjctMTEuN0w4Mi43IDIwN3pNMjg4IDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDI4OHptNjQgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NGMxNy43IDAgMzItMTQuMyAzMi0zMlYzODRjMC0xNy43LTE0LjMtMzItMzItMzJIMzUyek0xNjAgMzg0djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek0zMiAzNTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3ViZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjkwLjggNDguNmw3OC40IDI5LjdMMjg4IDEwOS41IDIwNi44IDc4LjNsNzguNC0yOS43YzEuOC0uNyAzLjgtLjcgNS43IDB6TTEzNiA5Mi41VjIwNC43Yy0xLjMgLjQtMi42IC44LTMuOSAxLjNsLTk2IDM2LjRDMTQuNCAyNTAuNiAwIDI3MS41IDAgMjk0LjdWNDEzLjljMCAyMi4yIDEzLjEgNDIuMyAzMy41IDUxLjNsOTYgNDIuMmMxNC40IDYuMyAzMC43IDYuMyA0NS4xIDBMMjg4IDQ1Ny41bDExMy41IDQ5LjljMTQuNCA2LjMgMzAuNyA2LjMgNDUuMSAwbDk2LTQyLjJjMjAuMy04LjkgMzMuNS0yOS4xIDMzLjUtNTEuM1YyOTQuN2MwLTIzLjMtMTQuNC00NC4xLTM2LjEtNTIuNGwtOTYtMzYuNGMtMS4zLS41LTIuNi0uOS0zLjktMS4zVjkyLjVjMC0yMy4zLTE0LjQtNDQuMS0zNi4xLTUyLjRsLTk2LTM2LjRjLTEyLjgtNC44LTI2LjktNC44LTM5LjcgMGwtOTYgMzYuNEMxNTAuNCA0OC40IDEzNiA2OS4zIDEzNiA5Mi41ek0zOTIgMjEwLjZsLTgyLjQgMzEuMlYxNTIuNkwzOTIgMTIxdjg5LjZ6TTE1NC44IDI1MC45bDc4LjQgMjkuN0wxNTIgMzExLjcgNzAuOCAyODAuNmw3OC40LTI5LjdjMS44LS43IDMuOC0uNyA1LjcgMHptMTguOCAyMDQuNFYzNTQuOEwyNTYgMzIzLjJ2OTUuOWwtODIuNCAzNi4yek00MjEuMiAyNTAuOWMxLjgtLjcgMy44LS43IDUuNyAwbDc4LjQgMjkuN0w0MjQgMzExLjdsLTgxLjItMzEuMSA3OC40LTI5Ljd6TTUyMy4yIDQyMS4ybC03Ny42IDM0LjFWMzU0LjhMNTI4IDMyMy4ydjkwLjdjMCAzLjItMS45IDYtNC44IDcuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMyaDk2YzEyMy43IDAgMjI0IDEwMC4zIDIyNCAyMjRzLTEwMC4zIDIyNC0yMjQgMjI0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NnptMTYwIDBINjRWNDE2aDk2Yzg4LjQgMCAxNjAtNzEuNiAxNjAtMTYwcy03MS42LTE2MC0xNjAtMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEYXRhYmFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggODB2NDhjMCA0NC4yLTEwMC4zIDgwLTIyNCA4MFMwIDE3Mi4yIDAgMTI4VjgwQzAgMzUuOCAxMDAuMyAwIDIyNCAwUzQ0OCAzNS44IDQ0OCA4MHpNMzkzLjIgMjE0LjdjMjAuOC03LjQgMzkuOS0xNi45IDU0LjgtMjguNlYyODhjMCA0NC4yLTEwMC4zIDgwLTIyNCA4MFMwIDMzMi4yIDAgMjg4VjE4Ni4xYzE0LjkgMTEuOCAzNCAyMS4yIDU0LjggMjguNkM5OS43IDIzMC43IDE1OS41IDI0MCAyMjQgMjQwczEyNC4zLTkuMyAxNjkuMi0yNS4zek0wIDM0Ni4xYzE0LjkgMTEuOCAzNCAyMS4yIDU0LjggMjguNkM5OS43IDM5MC43IDE1OS41IDQwMCAyMjQgNDAwczEyNC4zLTkuMyAxNjkuMi0yNS4zYzIwLjgtNy40IDM5LjktMTYuOSA1NC44LTI4LjZWNDMyYzAgNDQuMi0xMDAuMyA4MC0yMjQgODBTMCA0NzYuMiAwIDQzMlYzNDYuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGVsZXRlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzYgMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDIwNS4zYy0xNyAwLTMzLjMgNi43LTQ1LjMgMTguN0w5LjQgMjMzLjRjLTYgNi05LjQgMTQuMS05LjQgMjIuNnMzLjQgMTYuNiA5LjQgMjIuNkwxNjAgNDI5LjNjMTIgMTIgMjguMyAxOC43IDQ1LjMgMTguN0g1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4ek0yNzEgMTc1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDQ3IDQ3IDQ3LTQ3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNDcgNDcgNDcgNDdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDctNDctNDcgNDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDctNDctNDctNDdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZW1vY3JhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMmMwLTguOSAzLjgtMjAuOSA2LjItMjcuM0M3MS4yIDEuOCA3NCAwIDc3IDBjMS45IDAgMy44IC43IDUuMiAyLjFMMTI4IDQ1LjcgMTczLjggMi4xQzE3NS4yIC43IDE3Ny4xIDAgMTc5IDBjMyAwIDUuOCAxLjggNi44IDQuN2MyLjQgNi41IDYuMiAxOC40IDYuMiAyNy4zYzAgMjYuNS0yMS45IDQyLTI5LjUgNDYuNmw3Ni4yIDcyLjZjNiA1LjcgMTMuOSA4LjggMjIuMSA4LjhINDgwbDMyIDBjNDAuMyAwIDc4LjIgMTkgMTAyLjQgNTEuMmwxOS4yIDI1LjZjMTAuNiAxNC4xIDcuNyAzNC4yLTYuNCA0NC44cy0zNC4yIDcuNy00NC44LTYuNGwtMTkuMi0yNS42Yy01LjMtNy0xMS44LTEyLjgtMTkuMi0xN1YzMjBIMTkybC00MC40LTk0LjNjLTMuOS05LjItMTUuMy0xMi42LTIzLjYtN2wtNDIuMSAyOGMtOS4xIDYuMS0xOS43IDkuMy0zMC43IDkuM2gtMkMyMy45IDI1NiAwIDIzMi4xIDAgMjAyLjdjMC0xMi4xIDQuMS0yMy44IDExLjctMzMuM0w4Ny42IDc0LjZDNzguMSA2Ny40IDY0IDUzLjIgNjQgMzJ6TTQ0OCAzNTJoOTZ2NjQgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJINDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MTZIMjg4djY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDE2IDM1Mmg5Nkg0NDh6TTI2MC45IDIxMC45Yy0uOS0xLjgtMi44LTIuOS00LjgtMi45cy0zLjkgMS4xLTQuOCAyLjlsLTEwLjUgMjAuNS0yMy41IDMuM2MtMiAuMy0zLjcgMS42LTQuMyAzLjVzLS4xIDMuOSAxLjMgNS4zbDE3IDE2LTQgMjIuNmMtLjMgMS45IC41IDMuOSAyLjEgNXMzLjggMS4zIDUuNiAuNGwyMS0xMC43IDIxIDEwLjdjMS44IC45IDQgLjggNS42LS40czIuNS0zLjEgMi4xLTVsLTQtMjIuNiAxNy0xNmMxLjUtMS40IDItMy40IDEuMy01LjNzLTIuMy0zLjItNC4zLTMuNWwtMjMuNS0zLjMtMTAuNS0yMC41ek0zNjguMSAyMDhjLTIgMC0zLjkgMS4xLTQuOCAyLjlsLTEwLjUgMjAuNS0yMy41IDMuM2MtMiAuMy0zLjcgMS42LTQuMyAzLjVzLS4xIDMuOSAxLjMgNS4zbDE3IDE2LTQgMjIuNmMtLjMgMS45IC41IDMuOSAyLjEgNXMzLjggMS4zIDUuNiAuNGwyMS0xMC43IDIxIDEwLjdjMS44IC45IDQgLjggNS42LS40czIuNS0zLjEgMi4xLTVsLTQtMjIuNiAxNy0xNmMxLjUtMS40IDItMy40IDEuNC01LjNzLTIuMy0zLjItNC4zLTMuNWwtMjMuNS0zLjMtMTAuNS0yMC41Yy0uOS0xLjgtMi44LTIuOS00LjgtMi45em0xMTYuOCAyLjljLS45LTEuOC0yLjgtMi45LTQuOC0yLjlzLTMuOSAxLjEtNC44IDIuOWwtMTAuNSAyMC41LTIzLjUgMy4zYy0yIC4zLTMuNyAxLjYtNC4zIDMuNXMtLjEgMy45IDEuMyA1LjNsMTcgMTYtNCAyMi42Yy0uMyAxLjkgLjUgMy45IDIuMSA1czMuOCAxLjMgNS42IC40bDIxLTEwLjcgMjEgMTAuN2MxLjggLjkgNCAuOCA1LjYtLjRzMi41LTMuMSAyLjEtNWwtNC0yMi42IDE3LTE2YzEuNS0xLjQgMi0zLjQgMS40LTUuM3MtMi4zLTMuMi00LjMtMy41bC0yMy41LTMuMy0xMC41LTIwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURlc2t0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWMzUyYzAgMzUuMyAyOC43IDY0IDY0IDY0SDI0MGwtMTAuNyAzMkgxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM0Ni43TDMzNiA0MTZINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek01MTIgNjRWMjg4SDY0VjY0SDUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGhhcm1hY2hha3JhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNy44IDIwNS43bDQ4LjYtNDIuNWMxMy44IDE5LjMgMjMuNCA0MS45IDI3LjQgNjYuMmwtNjQuNCA0LjNjLTIuNC0xMC4xLTYuNC0xOS41LTExLjYtMjh6bTE0MC4xIDE5LjVjLTUuMy0zOC44LTIwLjYtNzQuNS00My4yLTEwNC4zbC44LS43QzQ0OSAxMDguNCA0NDkuNyA4Ny42IDQzNyA3NXMtMzMuNC0xMi00NS4yIDEuNWwtLjcgLjhjLTI5LjgtMjIuNi02NS41LTM3LjktMTA0LjMtNDMuMmwuMS0xLjFjMS4yLTE3LjktMTMtMzMtMzAuOS0zM3MtMzIuMSAxNS4yLTMwLjkgMzNsLjEgMS4xYy0zOC44IDUuMy03NC41IDIwLjYtMTA0LjMgNDMuMmwtLjctLjhDMTA4LjQgNjMgODcuNiA2Mi4zIDc1IDc1cy0xMiAzMy40IDEuNSA0NS4ybC44IC43Yy0yMi42IDI5LjgtMzcuOSA2NS41LTQzLjIgMTA0LjNsLTEuMS0uMWMtMTcuOS0xLjItMzMgMTMtMzMgMzAuOXMxNS4yIDMyLjEgMzMgMzAuOWwxLjEtLjFjNS4zIDM4LjggMjAuNiA3NC41IDQzLjIgMTA0LjNsLS44IC43QzYzIDQwMy42IDYyLjMgNDI0LjQgNzUgNDM3czMzLjQgMTIgNDUuMi0xLjVsLjctLjhjMjkuOCAyMi42IDY1LjUgMzcuOSAxMDQuMyA0My4ybC0uMSAxLjFjLTEuMiAxNy45IDEzIDMzIDMwLjkgMzNzMzIuMS0xNS4yIDMwLjktMzNsLS4xLTEuMWMzOC44LTUuMyA3NC41LTIwLjYgMTA0LjMtNDMuMmwuNyAuOGMxMS44IDEzLjUgMzIuNSAxNC4yIDQ1LjIgMS41czEyLTMzLjQtMS41LTQ1LjJsLS44LS43YzIyLjYtMjkuOCAzNy45LTY1LjUgNDMuMi0xMDQuM2wxLjEgLjFjMTcuOSAxLjIgMzMtMTMgMzMtMzAuOXMtMTUuMi0zMi4xLTMzLTMwLjlsLTEuMSAuMXpNMTYzLjIgMTI1LjZjMTkuMy0xMy44IDQxLjktMjMuNCA2Ni4yLTI3LjVsNC4zIDY0LjRjLTEwIDIuNC0xOS41IDYuNC0yOCAxMS42bC00Mi41LTQ4LjZ6bS02NSAxMDMuOGM0LjEtMjQuNCAxMy43LTQ2LjkgMjcuNS02Ni4ybDQ4LjYgNDIuNWMtNS4zIDguNS05LjIgMTgtMTEuNiAyOGwtNjQuNC00LjN6bTI3LjUgMTE5LjRjLTEzLjgtMTkuMy0yMy40LTQxLjktMjcuNS02Ni4ybDY0LjQtNC4zYzIuNCAxMCA2LjQgMTkuNSAxMS42IDI4bC00OC42IDQyLjV6bTEwMy44IDY1Yy0yNC40LTQuMS00Ni45LTEzLjctNjYuMi0yNy40bDQyLjUtNDguNmM4LjUgNS4zIDE4IDkuMiAyOCAxMS42bC00LjMgNjQuNHptMTE5LjQtMjcuNGMtMTkuMyAxMy44LTQxLjkgMjMuNC02Ni4yIDI3LjRsLTQuMy02NC40YzEwLTIuNCAxOS41LTYuNCAyOC0xMS42bDQyLjUgNDguNnptNjUtMTAzLjhjLTQuMSAyNC40LTEzLjcgNDYuOS0yNy40IDY2LjJsLTQ4LjYtNDIuNWM1LjMtOC41IDkuMi0xOCAxMS42LTI4bDY0LjQgNC4zem0tNjUtMTU2LjlsLTQyLjUgNDguNmMtOC41LTUuMy0xOC05LjItMjgtMTEuNmw0LjMtNjQuNGMyNC40IDQuMSA0Ni45IDEzLjcgNjYuMiAyNy41ek0yNTYgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlhZ3JhbU5leHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDE2MGMwIDM1LjMtMjguNyA2NC02NCA2NEgyODB2NjRoNDYuMWMyMS40IDAgMzIuMSAyNS45IDE3IDQxTDI3MyAzOTljLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDE2OSAzMjljLTE1LjEtMTUuMS00LjQtNDEgMTctNDFIMjMyVjIyNEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0djY0ek00NDggNDE2VjM1MkgzNjUuM2wuNC0uNGMxOC40LTE4LjQgMjAuNC00My43IDExLTYzLjZsNzEuMyAwYzM1LjMgMCA2NCAyOC43IDY0IDY0djY0YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMzUyYzAtMzUuMyAyOC43LTY0IDY0LTY0bDcxLjMgMGMtOS40IDE5LjktNy40IDQ1LjIgMTEgNjMuNmwuNCAuNEg2NHY2NEgyMTAuN2w1LjcgNS43YzIxLjkgMjEuOSA1Ny4zIDIxLjkgNzkuMiAwbDUuNy01LjdINDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWFncmFtUHJlZGVjZXNzb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDQxNmwwLTY0TDY0IDM1MmwwIDY0IDM4NCAwem0wIDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC02NGMwLTM1LjMgMjguNy02NCA2NC02NGwzODQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0ek0yODggMTYwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDIyNGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwxNDQgMCAxNiAwIDE0NCAwYzQ0LjIgMCA4MCAzNS44IDgwIDgwbDAgMTYgMzguMSAwYzIxLjQgMCAzMi4xIDI1LjkgMTcgNDFMNDMzIDIzOWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMzI5IDE2OWMtMTUuMS0xNS4xLTQuNC00MSAxNy00MWwzOC4xIDAgMC0xNmMwLTguOC03LjItMTYtMTYtMTZsLTgwIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlhZ3JhbVByb2plY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4MEMwIDUzLjUgMjEuNSAzMiA0OCAzMmg5NmMyNi41IDAgNDggMjEuNSA0OCA0OFY5NkgzODRWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoOTZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2OTZjMCAyNi41LTIxLjUgNDgtNDggNDhINDMyYy0yNi41IDAtNDgtMjEuNS00OC00OFYxNjBIMTkydjE2YzAgMS43LS4xIDMuNC0uMyA1TDI3MiAyODhoOTZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2OTZjMCAyNi41LTIxLjUgNDgtNDggNDhIMjcyYy0yNi41IDAtNDgtMjEuNS00OC00OFYzMzZjMC0xLjcgLjEtMy40IC4zLTVMMTQ0IDIyNEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpYWdyYW1TdWNjZXNzb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDQxNmwwLTY0YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDI4OGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCA2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NHpNNjQgMTYwbDAtNjQgMTQ0IDAgMTYgMCAwIDY0TDY0IDE2MHptMjI0IDBsMC02NCA4MCAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDE2LTM4LjEgMGMtMjEuNCAwLTMyLjEgMjUuOS0xNyA0MUwzOTkgMjM5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDUwMyAxNjljMTUuMS0xNS4xIDQuNC00MS0xNy00MUw0NDggMTI4bDAtMTZjMC00NC4yLTM1LjgtODAtODAtODBMMjI0IDMybC0xNiAwTDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZsMCA2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwxNjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlhbW9uZFR1cm5SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjcuNyAxMS43YzE1LjYtMTUuNiA0MC45LTE1LjYgNTYuNiAwbDIxNiAyMTZjMTUuNiAxNS42IDE1LjYgNDAuOSAwIDU2LjZsLTIxNiAyMTZjLTE1LjYgMTUuNi00MC45IDE1LjYtNTYuNiAwbC0yMTYtMjE2Yy0xNS42LTE1LjYtMTUuNi00MC45IDAtNTYuNmwyMTYtMjE2em04Ny42IDEzN2MtNC42LTQuNi0xMS41LTUuOS0xNy40LTMuNXMtOS45IDguMy05LjkgMTQuOHY1NkgyMjRjLTM1LjMgMC02NCAyOC43LTY0IDY0djQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjgwYzAtOC44IDcuMi0xNiAxNi0xNmg2NHY1NmMwIDYuNSAzLjkgMTIuMyA5LjkgMTQuOHMxMi45IDEuMSAxNy40LTMuNWw4MC04MGM2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpYW1vbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg0LjMgMTEuN2MtMTUuNi0xNS42LTQwLjktMTUuNi01Ni42IDBsLTIxNiAyMTZjLTE1LjYgMTUuNi0xNS42IDQwLjkgMCA1Ni42bDIxNiAyMTZjMTUuNiAxNS42IDQwLjkgMTUuNiA1Ni42IDBsMjE2LTIxNmMxNS42LTE1LjYgMTUuNi00MC45IDAtNTYuNmwtMjE2LTIxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZUQyMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OC43IDEyNS44bDUzLjIgMzEuOWM3LjggNC43IDE3LjggMiAyMi4yLTUuOUwyMDEuNiAxMi4xYzMtNS40LS45LTEyLjEtNy4xLTEyLjFjLTEuNiAwLTMuMiAuNS00LjYgMS40TDQ3LjkgOTguOGMtOS42IDYuNi05LjIgMjAuOSAuOCAyNi45ek0xNiAxNzEuN1YyOTUuM2MwIDggMTAuNCAxMSAxNC43IDQuNGw2MC05MmM1LTcuNiAyLjYtMTcuOC01LjItMjIuNUw0MC4yIDE1OEMyOS42IDE1MS42IDE2IDE1OS4zIDE2IDE3MS43ek0zMTAuNCAxMi4xbDc3LjYgMTM5LjZjNC40IDcuOSAxNC41IDEwLjYgMjIuMiA1LjlsNTMuMi0zMS45YzEwLTYgMTAuNC0yMC4zIC44LTI2LjlMMzIyLjEgMS40Yy0xLjQtLjktMy0xLjQtNC42LTEuNGMtNi4yIDAtMTAuMSA2LjctNy4xIDEyLjF6TTQ5NiAxNzEuN2MwLTEyLjQtMTMuNi0yMC4xLTI0LjItMTMuN2wtNDUuMyAyNy4yYy03LjggNC43LTEwLjEgMTQuOS01LjIgMjIuNWw2MCA5MmM0LjMgNi43IDE0LjcgMy42IDE0LjctNC40VjE3MS43em0tNDkuMyAyNDZMMjg2LjEgNDM2LjZjLTguMSAuOS0xNC4xIDcuOC0xNC4xIDE1Ljl2NTIuOGMwIDMuNyAzIDYuOCA2LjggNi44Yy44IDAgMS42LS4xIDIuNC0uNGwxNzIuNy02NGM2LjEtMi4yIDEwLjEtOCAxMC4xLTE0LjVjMC05LjMtOC4xLTE2LjUtMTcuMy0xNS40ek0yMzMuMiA1MTJjMy43IDAgNi44LTMgNi44LTYuOFY0NTIuNmMwLTguMS02LjEtMTQuOS0xNC4xLTE1LjlsLTE2MC42LTE5Yy05LjItMS4xLTE3LjMgNi4xLTE3LjMgMTUuNGMwIDYuNSA0IDEyLjMgMTAuMSAxNC41bDE3Mi43IDY0Yy44IC4zIDEuNiAuNCAyLjQgLjR6TTQxLjcgMzgyLjlsMTcwLjkgMjAuMmM3LjggLjkgMTMuNC03LjUgOS41LTE0LjNsLTg1LjctMTUwYy01LjktMTAuNC0yMC43LTEwLjgtMjcuMy0uOEwzMC4yIDM1OC4yYy02LjUgOS45LS4zIDIzLjMgMTEuNSAyNC43em00MzkuNi0yNC44TDQwMi45IDIzOC4xYy02LjUtMTAtMjEuNC05LjYtMjcuMyAuOEwyOTAuMiAzODguNWMtMy45IDYuOCAxLjYgMTUuMiA5LjUgMTQuM2wxNzAuMS0yMGMxMS44LTEuNCAxOC0xNC43IDExLjUtMjQuNnptLTIxNi45IDExbDc4LjQtMTM3LjJjNi4xLTEwLjctMS42LTIzLjktMTMuOS0yMy45SDE4My4xYy0xMi4zIDAtMjAgMTMuMy0xMy45IDIzLjlsNzguNCAxMzcuMmMzLjcgNi40IDEzIDYuNCAxNi43IDB6TTE3NC40IDE3NkgzMzcuNmMxMi4yIDAgMTkuOS0xMy4xIDE0LTIzLjhsLTgwLTE0NGMtMi44LTUuMS04LjItOC4yLTE0LTguMmgtMy4yYy01LjggMC0xMS4yIDMuMi0xNCA4LjJsLTgwIDE0NGMtNS45IDEwLjcgMS44IDIzLjggMTQgMjMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZUQ2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMSAxMC4zYzE0LjMtNy44IDMxLjYtNy44IDQ2IDBMNDIyLjMgMTA2YzUuMSAyLjggOC4zIDguMiA4LjMgMTRzLTMuMiAxMS4yLTguMyAxNEwyMzEuNyAyMzhjLTQuOCAyLjYtMTAuNSAyLjYtMTUuMyAwTDI1LjcgMTM0Yy01LjEtMi44LTguMy04LjItOC4zLTE0czMuMi0xMS4yIDguMy0xNEwyMDEgMTAuM3pNMjMuNyAxNzBsMTc2IDk2YzUuMSAyLjggOC4zIDguMiA4LjMgMTRWNDk2YzAgNS42LTMgMTAuOS03LjggMTMuOHMtMTAuOSAzLTE1LjggLjNMMjUgNDIzLjFDOS42IDQxNC43IDAgMzk4LjYgMCAzODFWMTg0YzAtNS42IDMtMTAuOSA3LjgtMTMuOHMxMC45LTMgMTUuOC0uM3ptNDAwLjcgMGM1LTIuNyAxMS0yLjYgMTUuOCAuM3M3LjggOC4xIDcuOCAxMy44VjM4MWMwIDE3LjYtOS42IDMzLjctMjUgNDIuMUwyNjMuNyA1MTBjLTUgMi43LTExIDIuNi0xNS44LS4zcy03LjgtOC4xLTcuOC0xMy44VjI4MGMwLTUuOSAzLjItMTEuMiA4LjMtMTRsMTc2LTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlRml2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTY0IDk2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNOTYgMzUyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTIyNCAyMjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em02NC02NGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0zMiAxNjBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlRm91ciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2em0xNjAgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMTI4IDM4NGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTM1MiAxNjBhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMzIwIDM4NGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpY2VPbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yMjQgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZVNpeCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2em0xNjAgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMTI4IDI4OGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTMyIDY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTMyMCAxOTJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0zMiA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek0zMjAgMzg0YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZVRocmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHptNjQgOTZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em02NCAxMjhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTI4IDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZVR3byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2ek0zNTIgMzUyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTEyOCAxOTJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3NC45IDM0LjNjLTI4LjEtMjguMS03My43LTI4LjEtMTAxLjggMEwzNC4zIDE3My4xYy0yOC4xIDI4LjEtMjguMSA3My43IDAgMTAxLjhMMTczLjEgNDEzLjdjMjguMSAyOC4xIDczLjcgMjguMSAxMDEuOCAwTDQxMy43IDI3NC45YzI4LjEtMjguMSAyOC4xLTczLjcgMC0xMDEuOEwyNzQuOSAzNC4zek0yMDAgMjI0YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6TTk2IDIwMGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6TTIyNCAzNzZhMjQgMjQgMCAxIDEgMC00OCAyNCAyNCAwIDEgMSAwIDQ4ek0zNTIgMjAwYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNMjI0IDEyMGEyNCAyNCAwIDEgMSAwLTQ4IDI0IDI0IDAgMSAxIDAgNDh6bTk2IDMyOGMwIDM1LjMgMjguNyA2NCA2NCA2NEg1NzZjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDQ2MS43YzExLjYgMzYgMy4xIDc3LTI1LjQgMTA1LjVMMzIwIDQxMy44VjQ0OHpNNDgwIDMyOGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpc2Vhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjM2LjQgNjEuNEwyMjcgNzUuNWMtMjEuMyAzMi01OS40IDQ4LjUtOTcuMyA0Mi4xbC01OS42LTkuOUMzMy40IDEwMS42IDAgMTI5LjkgLjEgMTY3LjFjMCAxNS45IDYuNCAzMS4yIDE3LjYgNDIuNWwyOS4yIDI5LjJjMTEgMTEgMTcuMiAyNS45IDE3LjIgNDEuNWMwIDE1LjgtNi40IDMwLjktMTcuNyA0MkwzMy4zIDMzNS4xQzIyLjIgMzQ1LjkgMTYgMzYwLjcgMTYgMzc2LjJjMCAzNi44IDM0LjEgNjQuMiA3MC4xIDU2LjJsNjIuMy0xMy44YzcuNy0xLjcgMTUuNy0yLjYgMjMuNi0yLjZoMTBjMjcuMiAwIDUzLjcgOS4zIDc1IDI2LjNMMjg3LjggNDY3YzEwLjUgOC40IDIzLjYgMTMgMzcgMTNjMzIuNyAwIDU5LjMtMjYuNSA1OS4zLTU5LjNsMC0yNS4yYzAtMzQuOSAyMS40LTY2LjIgNTMuOS03OC44bDM2LjktMTQuM2MyMi40LTguNyAzNy4yLTMwLjMgMzcuMi01NC4zYzAtMjguMS0yMC4xLTUyLjMtNDcuOC01Ny4zbC0yOC01LjFjLTM2LjUtNi43LTY1LjQtMzQuNS03My42LTcwLjdsLTcuMS0zMS41QzM0OC45IDUzLjQgMzIyLjEgMzIgMjkxLjMgMzJjLTIyIDAtNDIuNiAxMS01NC45IDI5LjR6TTE2MCAxOTJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMTZhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHptMCA4MGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpc3BsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWMzUyYzAgMzUuMyAyOC43IDY0IDY0IDY0SDI0MGwtMTAuNyAzMkgxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM0Ni43TDMzNiA0MTZINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek01MTIgNjRWMzUySDY0VjY0SDUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGl2aWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiA5NmE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwem0wIDMyMGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek00MDAgMjg4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQwMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG5hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyYzAgNTkuOC0zMC4zIDEwNy41LTY5LjQgMTQ2LjZjLTI4IDI4LTYyLjUgNTMuNS05Ny4zIDc3LjRsLTIuNSAxLjdjLTExLjkgOC4xLTIzLjggMTYuMS0zNS41IDIzLjlsMCAwIDAgMCAwIDAtMS42IDFjLTYgNC0xMS45IDcuOS0xNy44IDExLjljLTIwLjkgMTQtNDAuOCAyNy43LTU5LjMgNDEuNUgyODMuM2MtOS44LTcuNC0yMC4xLTE0LjctMzAuNy0yMi4xbDctNC43IDMtMmMxNS4xLTEwLjEgMzAuOS0yMC42IDQ2LjctMzEuNmMyNSAxOC4xIDQ4LjkgMzcuMyA2OS40IDU3LjdDNDE3LjcgMzcyLjUgNDQ4IDQyMC4yIDQ0OCA0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJINjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJjMC01OS44IDMwLjMtMTA3LjUgNjkuNC0xNDYuNmMyOC0yOCA2Mi41LTUzLjUgOTcuMy03Ny40Yy0zNC44LTIzLjktNjkuMy00OS4zLTk3LjMtNzcuNEMzMC4zIDEzOS41IDAgOTEuOCAwIDMyQzAgMTQuMyAxNC4zIDAgMzIgMFM2NCAxNC4zIDY0IDMySDM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMzM4LjYgMzg0SDEwOS40Yy0xMC4xIDEwLjYtMTguNiAyMS4zLTI1LjUgMzJIMzY0LjFjLTYuOC0xMC43LTE1LjMtMjEuNC0yNS41LTMyek0xMDkuNCAxMjhIMzM4LjZjMTAuMS0xMC43IDE4LjYtMjEuMyAyNS41LTMySDgzLjljNi44IDEwLjcgMTUuMyAyMS4zIDI1LjUgMzJ6bTU1LjQgNDhjMTguNCAxMy44IDM4LjQgMjcuNSA1OS4zIDQxLjVjMjAuOS0xNCA0MC44LTI3LjcgNTkuMy00MS41SDE2NC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA5LjYgMTU4LjVMMzMyLjcgMTkuOEMzMzQuNiA4LjQgMzQ0LjUgMCAzNTYuMSAwYzcuNSAwIDE0LjUgMy41IDE5IDkuNUwzOTIgMzJoNTIuMWMxMi43IDAgMjQuOSA1LjEgMzMuOSAxNC4xTDQ5NiA2NGg1NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHYyNGMwIDQ0LjItMzUuOCA4MC04MCA4MEg0NjQgNDQ4IDQyNi43bC01LjEgMzAuNS0xMTItNjR6TTQxNiAyNTYuMUw0MTYgNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzY0LjhjLTI0IDEyLjMtNTEuMiAxOS4yLTgwIDE5LjJzLTU2LTYuOS04MC0xOS4yVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjQ5LjhjLTI4LjgtMTAuOS01MS40LTM1LjMtNTkuMi02Ni41TDEgMTY3LjhjLTQuMy0xNy4xIDYuMS0zNC41IDIzLjMtMzguOHMzNC41IDYuMSAzOC44IDIzLjNsMy45IDE1LjVDNzAuNSAxODIgODMuMyAxOTIgOTggMTkyaDMwIDE2SDMwMy44TDQxNiAyNTYuMXpNNDY0IDgwYTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvbGxhclNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjcuN2MxLjYgLjIgMy4xIC40IDQuNyAuN2MuNCAuMSAuNyAuMSAxLjEgLjJsNDggOC44YzE3LjQgMy4yIDI4LjkgMTkuOSAyNS43IDM3LjJzLTE5LjkgMjguOS0zNy4yIDI1LjdsLTQ3LjUtOC43Yy0zMS4zLTQuNi01OC45LTEuNS03OC4zIDYuMnMtMjcuMiAxOC4zLTI5IDI4LjFjLTIgMTAuNy0uNSAxNi43IDEuMiAyMC40YzEuOCAzLjkgNS41IDguMyAxMi44IDEzLjJjMTYuMyAxMC43IDQxLjMgMTcuNyA3My43IDI2LjNsMi45IC44YzI4LjYgNy42IDYzLjYgMTYuOCA4OS42IDMzLjhjMTQuMiA5LjMgMjcuNiAyMS45IDM1LjkgMzkuNWM4LjUgMTcuOSAxMC4zIDM3LjkgNi40IDU5LjJjLTYuOSAzOC0zMy4xIDYzLjQtNjUuNiA3Ni43Yy0xMy43IDUuNi0yOC42IDkuMi00NC40IDExVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDUuMWMtLjQtLjEtLjktLjEtMS4zLS4ybC0uMiAwIDAgMGMtMjQuNC0zLjgtNjQuNS0xNC4zLTkxLjUtMjYuM2MtMTYuMS03LjItMjMuNC0yNi4xLTE2LjItNDIuMnMyNi4xLTIzLjQgNDIuMi0xNi4yYzIwLjkgOS4zIDU1LjMgMTguNSA3NS4yIDIxLjZjMzEuOSA0LjcgNTguMiAyIDc2LTUuM2MxNi45LTYuOSAyNC42LTE2LjkgMjYuOC0yOC45YzEuOS0xMC42IC40LTE2LjctMS4zLTIwLjRjLTEuOS00LTUuNi04LjQtMTMtMTMuM2MtMTYuNC0xMC43LTQxLjUtMTcuNy03NC0yNi4zbC0yLjgtLjcgMCAwQzExOS40IDI3OS4zIDg0LjQgMjcwIDU4LjQgMjUzYy0xNC4yLTkuMy0yNy41LTIyLTM1LjgtMzkuNmMtOC40LTE3LjktMTAuMS0zNy45LTYuMS01OS4yQzIzLjcgMTE2IDUyLjMgOTEuMiA4NC44IDc4LjNjMTMuMy01LjMgMjcuOS04LjkgNDMuMi0xMVYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9sbHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMkMwIDE0LjMgMTQuMyAwIDMyIDBoNzIuOWMyNy41IDAgNTIgMTcuNiA2MC43IDQzLjhMMjU3LjcgMzIwYzMwLjEgLjUgNTYuOCAxNC45IDc0IDM3bDIwMi4xLTY3LjRjMTYuOC01LjYgMzQuOSAzLjUgNDAuNSAyMC4ycy0zLjUgMzQuOS0yMC4yIDQwLjVMMzUyIDQxNy43Yy0uOSA1Mi4yLTQzLjUgOTQuMy05NiA5NC4zYy01MyAwLTk2LTQzLTk2LTk2YzAtMzAuOCAxNC41LTU4LjIgMzctNzUuOEwxMDQuOSA2NEgzMkMxNC4zIDY0IDAgNDkuNyAwIDMyek0yNDQuOCAxMzQuNWMtNS41LTE2LjggMy43LTM0LjkgMjAuNS00MC4zTDMxMSA3OS40bDE5LjggNjAuOSA2MC45LTE5LjhMMzcxLjggNTkuNmw0NS43LTE0LjhjMTYuOC01LjUgMzQuOSAzLjcgNDAuMyAyMC41bDQ5LjQgMTUyLjJjNS41IDE2LjgtMy43IDM0LjktMjAuNSA0MC4zTDMzNC41IDMwNy4yYy0xNi44IDUuNS0zNC45LTMuNy00MC4zLTIwLjVMMjQ0LjggMTM0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvbmdTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsLTMyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzJ2NDkuMWMtMTguOC0xMC45LTQwLjctMTcuMS02NC0xNy4xYy03MC43IDAtMTI4IDU3LjMtMTI4IDEyOHM1Ny4zIDEyOCAxMjggMTI4YzI0LjUgMCA0Ny40LTYuOSA2Ni44LTE4LjhjNSAxMS4xIDE2LjIgMTguOCAyOS4yIDE4LjhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjg4IDEyOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMTI4IDI4OGE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTMyIDQ0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvb3JDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRINDE2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0MzIgMTQ0IDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDk2VjY0ek0zODQgMjg4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9vck9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDMyYzAtOS45LTQuNS0xOS4yLTEyLjMtMjUuMlMyODkuOC0xLjQgMjgwLjIgMWwtMTc5LjkgNDVDNzkgNTEuMyA2NCA3MC41IDY0IDkyLjVWNDQ4SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDk2IDI4OGgzMlY0ODAgMzJ6TTI1NiAyNTZjMCAxNy43LTEwLjcgMzItMjQgMzJzLTI0LTE0LjMtMjQtMzJzMTAuNy0zMiAyNC0zMnMyNCAxNC4zIDI0IDMyem05Ni0xMjhoOTZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDUxMlYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzUydjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MC44IDk2LjVjMTQgMTcgMzEgMzAuOSA0OS41IDQyLjJjMjUuOSAxNS44IDUzLjcgMjUuOSA3Ny43IDMxLjZWMTM4LjhDMjY1LjggMTA4LjUgMjUwIDcxLjUgMjQ4LjYgMjhjLS40LTExLjMtNy41LTIxLjUtMTguNC0yNC40Yy03LjYtMi0xNS44LS4yLTIxIDUuOGMtMTMuMyAxNS40LTMyLjcgNDQuNi00OC40IDg3LjJ6TTMyMCAxNDR2MzAuNmwwIDB2MS4zbDAgMCAwIDMyLjFjLTYwLjgtNS4xLTE4NS00My44LTIxOS4zLTE1Ny4yQzk3LjQgNDAgODcuOSAzMiA3Ni42IDMyYy03LjkgMC0xNS4zIDMuOS0xOC44IDExQzQ2LjggNjUuOSAzMiAxMTIuMSAzMiAxNzZjMCAxMTYuOSA4MC4xIDE4MC41IDExOC40IDIwMi44TDExLjggNDE2LjZDNi43IDQxOCAyLjYgNDIxLjggLjkgNDI2LjhzLS44IDEwLjYgMi4zIDE0LjhDMjEuNyA0NjYuMiA3Ny4zIDUxMiAxNjAgNTEyYzMuNiAwIDcuMi0xLjIgMTAtMy41TDI0NS42IDQ0OEgzMjBjODguNCAwIDE2MC03MS42IDE2MC0xNjBWMTI4bDI5LjktNDQuOWMxLjMtMiAyLjEtNC40IDIuMS02LjhjMC02LjgtNS41LTEyLjMtMTIuMy0xMi4zSDQwMGMtNDQuMiAwLTgwIDM1LjgtODAgODB6bTgwLTE2YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG93bkxlZnRBbmRVcFJpZ2h0VG9DZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM5IDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMzIgMzJjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTg3IDg3IDM5IDM5YzYuOSA2LjkgOC45IDE3LjIgNS4yIDI2LjJzLTEyLjUgMTQuOC0yMi4yIDE0LjhIMjk2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFY3MmMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJzMTkuMy0xLjcgMjYuMiA1LjJsMzkgMzlMNDM5IDd6TTcyIDI3MkgyMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRWNDQwYzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTM5LTM5TDczIDUwNWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMNyA0NzNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDg3LTg3TDU1IDMxM2MtNi45LTYuOS04LjktMTcuMi01LjItMjYuMnMxMi41LTE0LjggMjIuMi0xNC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb3duTG9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDMzNC41Yy0zLjggOC44LTIgMTkgNC42IDI2bDEzNiAxNDRjNC41IDQuOCAxMC44IDcuNSAxNy40IDcuNXMxMi45LTIuNyAxNy40LTcuNWwxMzYtMTQ0YzYuNi03IDguNC0xNy4yIDQuNi0yNnMtMTIuNS0xNC41LTIyLTE0LjVsLTcyIDAgMC0yODhjMC0xNy43LTE0LjMtMzItMzItMzJMMTI4IDBDMTEwLjMgMCA5NiAxNC4zIDk2IDMybDAgMjg4LTcyIDBjLTkuNiAwLTE4LjIgNS43LTIyIDE0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYyNzQuN2wtNzMuNC03My40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxMjggMTI4YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDEyOC0xMjhjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMjg4IDI3NC43VjMyek02NCAzNTJjLTM1LjMgMC02NCAyOC43LTY0IDY0djMyYzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFY0MTZjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzQ2LjVsLTQ1LjMgNDUuM2MtMjUgMjUtNjUuNSAyNS05MC41IDBMMTY1LjUgMzUySDY0em0zNjggNTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcmFnb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDEyNC41bC01MS45LTEzYy02LjUtMS42LTExLjMtNy4xLTEyLTEzLjhzMi44LTEzLjEgOC43LTE2LjFsNDAuOC0yMC40TDI5NC40IDI4LjhjLTUuNS00LjEtNy44LTExLjMtNS42LTE3LjlTMjk3LjEgMCAzMDQgMEg0MTZoMzIgMTZjMzAuMiAwIDU4LjcgMTQuMiA3Ni44IDM4LjRsNTcuNiA3Ni44YzYuMiA4LjMgOS42IDE4LjQgOS42IDI4LjhjMCAyNi41LTIxLjUgNDgtNDggNDhINTM4LjVjLTE3IDAtMzMuMy02LjctNDUuMy0xOC43TDQ4MCAxNjBINDQ4djIxLjVjMCAyNC44IDEyLjggNDcuOSAzMy44IDYxLjFsMTA2LjYgNjYuNmMzMi4xIDIwLjEgNTEuNiA1NS4yIDUxLjYgOTMuMUM2NDAgNDYyLjkgNTkwLjkgNTEyIDUzMC4yIDUxMkg0OTYgNDMyIDMyLjNjLTMuMyAwLTYuNi0uNC05LjYtMS40QzEzLjUgNTA3LjggNiA1MDEgMi40IDQ5Mi4xQzEgNDg4LjcgLjIgNDg1LjIgMCA0ODEuNGMtLjItMy43IC4zLTcuMyAxLjMtMTAuN2MyLjgtOS4yIDkuNi0xNi43IDE4LjYtMjAuNGMzLTEuMiA2LjItMiA5LjUtMi4yTDQzMy4zIDQxMmM4LjMtLjcgMTQuNy03LjcgMTQuNy0xNi4xYzAtNC4zLTEuNy04LjQtNC43LTExLjRsLTQ0LjQtNDQuNGMtMzAtMzAtNDYuOS03MC43LTQ2LjktMTEzLjFWMTgxLjV2LTU3ek01MTIgNzIuM2MwLS4xIDAtLjIgMC0uM3MwLS4yIDAtLjN2LjZ6bS0xLjMgNy40TDQ2NC4zIDY4LjFjLS4yIDEuMy0uMyAyLjYtLjMgMy45YzAgMTMuMyAxMC43IDI0IDI0IDI0YzEwLjYgMCAxOS41LTYuOCAyMi43LTE2LjN6TTEzMC45IDExNi41YzE2LjMtMTQuNSA0MC40LTE2LjIgNTguNS00LjFsMTMwLjYgODdWMjI3YzAgMzIuOCA4LjQgNjQuOCAyNCA5M0gxMTJjLTYuNyAwLTEyLjctNC4yLTE1LTEwLjRzLS41LTEzLjMgNC42LTE3LjdMMTcxIDIzMi4zIDE4LjQgMjU1LjhjLTcgMS4xLTEzLjktMi42LTE2LjktOXMtMS41LTE0LjEgMy44LTE4LjhMMTMwLjkgMTE2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyYXdQb2x5Z29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDE1MS40VjM2MC42YzkuNyA1LjYgMTcuOCAxMy43IDIzLjQgMjMuNEgzMjguNmMwLS4xIC4xLS4yIC4xLS4zbC00LjUtNy45LTMyLTU2IDAgMGMtMS40IC4xLTIuOCAuMS00LjIgLjFjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjRjMS40IDAgMi44IDAgNC4yIC4xbDAgMCAzMi01NiA0LjUtNy45LS4xLS4zSDExOS40Yy01LjYgOS43LTEzLjcgMTcuOC0yMy40IDIzLjR6TTM4NC4zIDM1MmMzNS4yIC4yIDYzLjcgMjguNyA2My43IDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0Yy0yMy43IDAtNDQuNC0xMi45LTU1LjQtMzJIMTE5LjRjLTExLjEgMTkuMS0zMS43IDMyLTU1LjQgMzJjLTM1LjMgMC02NC0yOC43LTY0LTY0YzAtMjMuNyAxMi45LTQ0LjQgMzItNTUuNFYxNTEuNEMxMi45IDE0MC40IDAgMTE5LjcgMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmMyMy43IDAgNDQuNCAxMi45IDU1LjQgMzJIMzI4LjZjMTEuMS0xOS4xIDMxLjctMzIgNTUuNC0zMmMzNS4zIDAgNjQgMjguNyA2NCA2NGMwIDM1LjMtMjguNSA2My44LTYzLjcgNjRsLTQuNSA3LjktMzIgNTYtMi4zIDRjNC4yIDguNSA2LjUgMTggNi41IDI4LjFzLTIuMyAxOS42LTYuNSAyOC4xbDIuMyA0IDMyIDU2IDQuNSA3Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyb3BsZXRTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNTEyYzUzLjIgMCAxMDEuNC0yMS42IDEzNi4xLTU2LjZsLTI5OC4zLTIzNUMxNDAgMjU3LjEgMTI4IDI5Mi4zIDEyOCAzMjBjMCAxMDYgODYgMTkyIDE5MiAxOTJ6TTUwNS4yIDM3MC43YzQuNC0xNi4xIDYuOC0zMy4xIDYuOC01MC43YzAtOTEuMi0xMzAuMi0yNjIuMy0xNjYuNi0zMDguM0MzMzkuNCA0LjIgMzMwLjUgMCAzMjAuOSAwaC0xLjhjLTkuNiAwLTE4LjUgNC4yLTI0LjUgMTEuN0MyNzcuOCAzMyAyNDAuNyA4MS4zIDIwNS44IDEzNkwzOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDUwNS4yIDM3MC43ek0yMjQgMzM2YzAgNDQuMiAzNS44IDgwIDgwIDgwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2Yy02MS45IDAtMTEyLTUwLjEtMTEyLTExMmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcm9wbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA1MTJDODYgNTEyIDAgNDI2IDAgMzIwQzAgMjI4LjggMTMwLjIgNTcuNyAxNjYuNiAxMS43QzE3Mi42IDQuMiAxODEuNSAwIDE5MS4xIDBoMS44YzkuNiAwIDE4LjUgNC4yIDI0LjUgMTEuN0MyNTMuOCA1Ny43IDM4NCAyMjguOCAzODQgMzIwYzAgMTA2LTg2IDE5Mi0xOTIgMTkyek05NiAzMzZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZjMCA2MS45IDUwLjEgMTEyIDExMiAxMTJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZjLTQ0LjIgMC04MC0zNS44LTgwLTgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcnVtU3RlZWxwYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDMyYzE1OS4xIDAgMjg4IDQ4IDI4OCAxMjhWMzUyYzAgODAtMTI4LjkgMTI4LTI4OCAxMjhTMCA0MzIgMCAzNTJWMTYwQzAgODAgMTI4LjkgMzIgMjg4IDMyek01MjggMTYwYzAtOS45LTgtMjkuOS01NS00OS44Yy0xOC42LTcuOS00MC45LTE0LjQtNjYtMTkuNGwtMjcuOCA0My42Yy03LjMgMTEuNS0xMS4yIDI0LjgtMTEuMiAzOC40YzAgMTcuNSA2LjQgMzQuNCAxOC4xIDQ3LjVsOS44IDExYzI5LjgtNS4yIDU1LjktMTIuNSA3Ny4yLTIxLjVjNDcuMS0xOS45IDU1LTM5LjkgNTUtNDkuOHpNMzQ5LjIgMjM3LjNjLTgtMjYuMi0zMi40LTQ1LjMtNjEuMi00NS4zcy01My4zIDE5LjEtNjEuMiA0NS4zYzE5LjQgMS43IDM5LjkgMi43IDYxLjIgMi43czQxLjgtLjkgNjEuMi0yLjd6TTE2OSA5MC44Yy0yNS4yIDUtNDcuNCAxMS42LTY2IDE5LjRDNTYgMTMwLjEgNDggMTUwLjEgNDggMTYwczggMjkuOSA1NSA0OS44YzIxLjMgOSA0Ny40IDE2LjMgNzcuMiAyMS41bDkuOC0xMWMxMS42LTEzLjEgMTguMS0zMCAxOC4xLTQ3LjVjMC0xMy42LTMuOS0yNi45LTExLjItMzguNEwxNjkgOTAuOHptNTYuMy04QzIyNC41IDg3IDIyNCA5MS41IDIyNCA5NmMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0YzAtNC41LS41LTktMS40LTEzLjJDMzMwLjggODEgMzA5LjggODAgMjg4IDgwcy00Mi44IDEtNjIuNiAyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURydW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAxLjIgNzYuMWMxMS4xLTcuMyAxNC4yLTIyLjEgNi45LTMzLjJzLTIyLjEtMTQuMi0zMy4yLTYuOUwzNzAuMiAxMDQuNUMzMzUuOCA5OC43IDI5NyA5NiAyNTYgOTZDMTE0LjYgOTYgMCAxMjggMCAyMDhWMzY4YzAgMzEuMyAyNy40IDU4LjggNzIgNzguN1YzNDRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNFY0NjMuNGMzMyA4LjkgNzEuMSAxNC41IDExMiAxNi4xVjM3NmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0VjQ3OS41YzQwLjktMS42IDc5LTcuMiAxMTItMTYuMVYzNDRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNFY0NDYuN2M0NC42LTE5LjkgNzItNDcuNCA3Mi03OC43VjIwOGMwLTQxLjEtMzAuMi02OS41LTc4LjgtODcuNGw2Ny45LTQ0LjV6TTMwNy40IDE0NS42bC02NC42IDQyLjNjLTExLjEgNy4zLTE0LjIgMjIuMS02LjkgMzMuMnMyMi4xIDE0LjIgMzMuMiA2LjlsMTExLjEtNzIuOGMxNC43IDMuMiAyNy45IDcgMzkuNCAxMS41QzQ1OC40IDE4MS44IDQ2NCAxOTcuNCA0NjQgMjA4YzAgLjgtMi43IDE3LjItNDYgMzUuOUMzNzkuMSAyNjAuNyAzMjIgMjcyIDI1NiAyNzJzLTEyMy4xLTExLjMtMTYyLTI4LjFDNTAuNyAyMjUuMiA0OCAyMDguOCA0OCAyMDhjMC0xMC42IDUuNi0yNi4yIDQ0LjQtNDEuM0MxMzAuNiAxNTEuOSAxODcuOCAxNDQgMjU2IDE0NGMxOCAwIDM1LjEgLjUgNTEuNCAxLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURydW1zdGlja0JpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDI2NS4yYzAgOC41LTMuNCAxNi42LTkuNCAyMi42bC0yNi44IDI2LjhjLTEyLjMgMTIuMy0zMi41IDExLjQtNDkuNCA3LjJDNjkuOCAzMjAuNiA2NSAzMjAgNjAgMzIwYy0zMy4xIDAtNjAgMjYuOS02MCA2MHMyNi45IDYwIDYwIDYwYzYuMyAwIDEyIDUuNyAxMiAxMmMwIDMzLjEgMjYuOSA2MCA2MCA2MHM2MC0yNi45IDYwLTYwYzAtNS0uNi05LjgtMS44LTE0LjVjLTQuMi0xNi45LTUuMi0zNy4xIDcuMi00OS40bDI2LjgtMjYuOGM2LTYgMTQuMS05LjQgMjIuNi05LjRIMzM2YzYuMyAwIDEyLjQtLjMgMTguNS0xYzExLjktMS4yIDE2LjQtMTUuNSAxMC44LTI2Yy04LjUtMTUuOC0xMy4zLTMzLjgtMTMuMy01M2MwLTYxLjkgNTAuMS0xMTIgMTEyLTExMmM4IDAgMTUuNyAuOCAyMy4yIDIuNGMxMS43IDIuNSAyNC4xLTUuOSAyMi0xNy42QzQ5NC41IDYyLjUgNDIyLjUgMCAzMzYgMEMyMzguOCAwIDE2MCA3OC44IDE2MCAxNzZ2ODkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHVtYmJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMjI0djY0VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4NEg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjg4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg5NlY2NHptNDQ4IDB2NjRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJINTQ0djY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjg4IDIyNCA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnpNNDE2IDIyNHY2NEgyMjRWMjI0SDQxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHVtcHN0ZXJGaXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5LjcgMzJsOTAuOCAwTDExNC45IDE2MGwtOTQgMEM5LjMgMTYwIDAgMTUwLjcgMCAxMzkuMWMwLTIuMSAuMy00LjEgLjktNi4xTDI2LjggNDguOUMyOS45IDM4LjkgMzkuMiAzMiA0OS43IDMyek0yNzIgMTYwbC0xMjQuNSAwTDE3My4xIDMyIDI3MiAzMmwwIDEyOHptMzIgMGwwLTEyOCA5OC45IDAgMTQuNCA3Mi4xYy0xLjcgMS4xLTMuMyAyLjQtNC44IDMuOGMtMTguNCAxNi40LTM1LjQgMzQtNTAuNSA1Mi4xbC01OCAwem0yMDkuOS0yMy43Yy0xLjcgMS42LTMuNCAzLjItNSA0LjhDNDk4IDEyOS42IDQ4Ni43IDExOC42IDQ3NSAxMDhjLTcuNi02LjktMTctMTAuOC0yNi42LTExLjhMNDM1LjUgMzJsOTAuOCAwYzEwLjUgMCAxOS44IDYuOSAyMi45IDE2LjlMNTc1LjEgMTMzYy4yIC43IC40IDEuNCAuNSAyLjFjLTE3LjgtMTUtNDQuMy0xNC42LTYxLjcgMS4yek0zMjUuMiAyMTAuN0MzMDQuMyAyNDQuNSAyODggMjgyLjkgMjg4IDMxOC4xYzAgNDkuMyAxOC42IDk1LjIgNDkuNiAxMjkuOUwxMjggNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyTDQ0IDI4OGwtMTIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw0IDAtNC0zMiAzMDUuNSAwYy00LjQgNi4yLTguNSAxMi41LTEyLjMgMTguN3ptMTgwLjYtMzQuNUw1MTggMTYyLjVjNS40LTYuMSAxMy4zLTguOCAyMC45LTguOWM3LjIgMCAxNC4zIDIuNiAxOS45IDcuOGMxOS43IDE4LjMgMzkuOCA0My4yIDU1IDcwLjZDNjI5IDI1OS4yIDY0MCAyOTAuMiA2NDAgMzIwLjJDNjQwIDQwOC44IDU2OC43IDQ4MCA0ODAgNDgwYy04OS42IDAtMTYwLTcxLjMtMTYwLTE1OS44YzAtMzcuMyAxNi03My40IDM2LjgtMTA0LjVjMjAuOS0zMS4zIDQ3LjUtNTkgNzAuOS04MC4yYzUuNy01LjIgMTMuMS03LjcgMjAuMy03LjVjMTQuMSAuMyAyMy44IDExLjQgMzIuNyAyMS42YzAgMCAwIDAgMCAwYzIgMi4zIDQgNC42IDYgNi43bDE5IDE5Ljl6TTU0NCAzNjguMmMwLTM2LjUtMzctNzMtNTQuOC04OC40Yy01LjQtNC43LTEzLjEtNC43LTE4LjUgMEM0NTMgMjk1LjEgNDE2IDMzMS42IDQxNiAzNjguMmMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEdW1wc3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OS43IDMyYy0xMC41IDAtMTkuOCA2LjktMjIuOSAxNi45TC45IDEzM2MtLjYgMi0uOSA0LjEtLjkgNi4xQzAgMTUwLjcgOS4zIDE2MCAyMC45IDE2MGg5NEwxNDAuNSAzMkg0OS43ek0yNzIgMTYwVjMySDE3My4xTDE0Ny41IDE2MEgyNzJ6bTMyIDBINDI4LjVMNDAyLjkgMzJIMzA0VjE2MHptMTU3LjEgMGg5NGMxMS41IDAgMjAuOS05LjMgMjAuOS0yMC45YzAtMi4xLS4zLTQuMS0uOS02LjFMNTQ5LjIgNDguOUM1NDYuMSAzOC45IDUzNi44IDMyIDUyNi4zIDMySDQzNS41bDI1LjYgMTI4ek0zMiAxOTJsNCAzMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0NEw2NCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMkg0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwyMC0xNjBoMTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJoLTRsNC0zMkgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHVuZ2VvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYuNiAxNTYuNWMxLjMgMS4xIDIuNyAyLjIgMy45IDMuM2M5LjMgOC4yIDIzIDEwLjUgMzMuNCAzLjZsNjcuNi00NS4xYzExLjQtNy42IDE0LjItMjMuMiA1LjEtMzMuNEM0MzAgNjYuNiA0MTAuOSA1MC42IDM4OS43IDM3LjZjLTExLjktNy4zLTI2LjktMS40LTMyLjEgMTEuNmwtMzAuNSA3Ni4yYy00LjUgMTEuMSAuMiAyMy42IDkuNSAzMS4yek0zMjggMzYuOGM1LjEtMTIuOC0xLjYtMjcuNC0xNS0zMC41QzI5NC43IDIuMiAyNzUuNiAwIDI1NiAwcy0zOC43IDIuMi01NyA2LjRDMTg1LjUgOS40IDE3OC44IDI0IDE4NCAzNi44bDMwLjMgNzUuOGM0LjUgMTEuMyAxNi44IDE3LjIgMjkgMTZjNC4yLS40IDguNC0uNiAxMi43LS42czguNiAuMiAxMi43IC42YzEyLjEgMS4yIDI0LjQtNC43IDI5LTE2TDMyOCAzNi44ek02NS41IDg1Yy05LjEgMTAuMi02LjMgMjUuOCA1LjEgMzMuNGw2Ny42IDQ1LjFjMTAuMyA2LjkgMjQuMSA0LjYgMzMuNC0zLjZjMS4zLTEuMSAyLjYtMi4zIDQtMy4zYzkuMy03LjUgMTMuOS0yMC4xIDkuNS0zMS4yTDE1NC40IDQ5LjJjLTUuMi0xMi45LTIwLjMtMTguOC0zMi4xLTExLjZDMTAxLjEgNTAuNiA4MiA2Ni42IDY1LjUgODV6bTMxNCAxMzcuMWMuOSAzLjMgMS43IDYuNiAyLjMgMTBjMi41IDEzIDEzIDIzLjkgMjYuMiAyMy45aDgwYzEzLjMgMCAyNC4xLTEwLjggMjIuOS0yNGMtMi41LTI3LjItOS4zLTUzLjItMTkuNy03Ny4zYy01LjUtMTIuOS0yMS40LTE2LjYtMzMuMS04LjlsLTY4LjYgNDUuN2MtOS44IDYuNS0xMy4yIDE5LjItMTAgMzAuNXpNNTMuOSAxNDUuOGMtMTEuNi03LjgtMjcuNi00LTMzLjEgOC45QzEwLjQgMTc4LjggMy42IDIwNC44IDEuMSAyMzJjLTEuMiAxMy4yIDkuNiAyNCAyMi45IDI0aDgwYzEzLjMgMCAyMy44LTEwLjggMjYuMi0yMy45Yy42LTMuNCAxLjQtNi43IDIuMy0xMGMzLjEtMTEuNC0uMi0yNC0xMC0zMC41TDUzLjkgMTQ1Ljh6TTEwNCAyODhIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0djQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0VjMxMmMwLTEzLjMtMTAuNy0yNC0yNC0yNHptMzA0IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0djQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0VjMxMmMwLTEzLjMtMTAuNy0yNC0yNC0yNEg0MDh6TTI0IDQxNmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNDQwYzAtMTMuMy0xMC43LTI0LTI0LTI0SDI0em0zODQgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNDQwYzAtMTMuMy0xMC43LTI0LTI0LTI0SDQwOHpNMjcyIDE5MmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNlY0NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYxOTJ6bS02NCAzMmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNlY0NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyMjR6bTEyOCAwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjIyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjI1NiA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMjg4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDY0VjI4OEgyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjRWOTZIMjg4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFYXJEZWFmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi42IDU0LjZsLTQwIDQwYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2w0MC00MGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zem0tMzIwIDMyMGwtMTI4IDEyOGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsMTI4LTEyOGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zek0yNDAgMTI4Yy01Ny42IDAtMTA1LjEgNDMuNi0xMTEuMyA5OS41Yy0xLjkgMTcuNi0xNy44IDMwLjItMzUuMyAyOC4zcy0zMC4yLTE3LjgtMjguMy0zNS4zQzc0LjggMTMyLjUgMTQ5LjQgNjQgMjQwIDY0Yzk3LjIgMCAxNzYgNzguOCAxNzYgMTc2YzAgNDYtMTcuNyA4Ny45LTQ2LjYgMTE5LjNjLTEyIDEzLTE3LjQgMjQuOC0xNy40IDM0LjdWNDAwYzAgNjEuOS01MC4xIDExMi0xMTIgMTEyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di02LjFjMC0zMi45IDE3LjQtNTkuNiAzNC40LTc4YzE4LjQtMjAgMjkuNi00Ni42IDI5LjYtNzUuOWMwLTYxLjktNTAuMS0xMTItMTEyLTExMnptMCA4MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTE3LjctMTQuMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWFyTGlzdGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5OC4zIDMuNGMtMTUuOC03LjktMzUtMS41LTQyLjkgMTQuM2MtNy45IDE1LjgtMS41IDM0LjkgMTQuMiA0Mi45bC40IC4yYy40IC4yIDEuMSAuNiAyLjEgMS4yYzIgMS4yIDUgMyA4LjcgNS42YzcuNSA1LjIgMTcuNiAxMy4yIDI3LjcgMjQuMkM0MjguNSAxMTMuNCA0NDggMTQ2IDQ0OCAxOTJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTY2LTI4LjUtMTEzLjQtNTYuNS0xNDMuN0M0NDEuNiAzMy4yIDQyNy43IDIyLjIgNDE3LjMgMTVjLTUuMy0zLjctOS43LTYuNC0xMy04LjNjLTEuNi0xLTMtMS43LTQtMi4yYy0uNS0uMy0uOS0uNS0xLjItLjdsLS40LS4yLS4yLS4xLS4xIDAgMCAwYzAgMCAwIDAtMTQuMyAyOC42TDM5OC4zIDMuNHpNMTI4LjcgMjI3LjVjNi4yLTU2IDUzLjctOTkuNSAxMTEuMy05OS41YzYxLjkgMCAxMTIgNTAuMSAxMTIgMTEyYzAgMjkuMy0xMS4yIDU1LjktMjkuNiA3NS45Yy0xNyAxOC40LTM0LjQgNDUuMS0zNC40IDc4VjQwMGMwIDI2LjUtMjEuNSA0OC00OCA0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmM2MS45IDAgMTEyLTUwLjEgMTEyLTExMnYtNi4xYzAtOS44IDUuNC0yMS43IDE3LjQtMzQuN0MzOTguMyAzMjcuOSA0MTYgMjg2IDQxNiAyNDBjMC05Ny4yLTc4LjgtMTc2LTE3Ni0xNzZDMTQ5LjQgNjQgNzQuOCAxMzIuNSA2NS4xIDIyMC41Yy0xLjkgMTcuNiAxMC43IDMzLjQgMjguMyAzNS4zczMzLjQtMTAuNyAzNS4zLTI4LjN6TTMyIDUxMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTE5MiAzNTJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNNDEuNCAzNjEuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtNjQtNjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwek0yMDggMjQwYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFYXJ0aEFmcmljYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzcuOCA2My4ybDEwIDE3LjRjMi44IDQuOCA0LjIgMTAuMyA0LjIgMTUuOXY0MS40YzAgMy45IDEuNiA3LjcgNC4zIDEwLjRjNi4yIDYuMiAxNi41IDUuNyAyMi0xLjJsMTMuNi0xN2M0LjctNS45IDEyLjktNy43IDE5LjYtNC4zbDE1LjIgNy42YzMuNCAxLjcgNy4yIDIuNiAxMSAyLjZjNi41IDAgMTIuOC0yLjYgMTcuNC03LjJsMy45LTMuOWMyLjktMi45IDcuMy0zLjYgMTEtMS44bDI5LjIgMTQuNmM3LjggMy45IDEyLjYgMTEuOCAxMi42IDIwLjVjMCAxMC41LTcuMSAxOS42LTE3LjMgMjIuMmwtMzUuNCA4LjhjLTcuNCAxLjgtMTUuMSAxLjUtMjIuNC0uOWwtMzItMTAuN2MtMy4zLTEuMS02LjctMS43LTEwLjItMS43Yy03IDAtMTMuOCAyLjMtMTkuNCA2LjVMMTc2IDIxMmMtMTAuMSA3LjYtMTYgMTkuNC0xNiAzMnYyOGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJjMTAuMSAwIDE5LjYtNC43IDI1LjYtMTIuOGwyNS42LTM0LjFjOC4zLTExLjEgMTIuOC0yNC42IDEyLjgtMzguNFYzMTguNmMwLTMuOSAyLjYtNy4zIDYuNC04LjJsNS4zLTEuM2MxMS45LTMgMjAuMy0xMy43IDIwLjMtMjZjMC03LjEtMi44LTEzLjktNy44LTE4LjlsLTMzLjUtMzMuNWMtMy43LTMuNy0zLjctOS43IDAtMTMuNGM1LjctNS43IDE0LjEtNy43IDIxLjgtNS4xbDE0LjEgNC43YzEyLjMgNC4xIDI1LjctMS41IDMxLjUtMTNjMy41LTcgMTEuMi0xMC44IDE4LjktOS4ybDI3LjQgNS41QzQzMiAxMTIuNCAzNTEuNSA0OCAyNTYgNDhjLTI3LjcgMC01NCA1LjQtNzguMiAxNS4yek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVhcnRoQW1lcmljYXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTcuNyAxOTNsOS40IDE2LjRjOC4zIDE0LjUgMjEuOSAyNS4yIDM4IDI5LjhMMTYzIDI1NS43YzE3LjIgNC45IDI5IDIwLjYgMjkgMzguNXYzOS45YzAgMTEgNi4yIDIxIDE2IDI1LjlzMTYgMTQuOSAxNiAyNS45djM5YzAgMTUuNiAxNC45IDI2LjkgMjkuOSAyMi42YzE2LjEtNC42IDI4LjYtMTcuNSAzMi43LTMzLjhsMi44LTExLjJjNC4yLTE2LjkgMTUuMi0zMS40IDMwLjMtNDBsOC4xLTQuNmMxNS04LjUgMjQuMi0yNC41IDI0LjItNDEuN3YtOC4zYzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlsLTMuOS0zLjljLTktOS0yMS4yLTE0LjEtMzMuOS0xNC4xSDI1N2MtMTEuMSAwLTIyLjEtMi45LTMxLjgtOC40bC0zNC41LTE5LjdjLTQuMy0yLjUtNy42LTYuNS05LjItMTEuMmMtMy4yLTkuNiAxLjEtMjAgMTAuMi0yNC41bDUuOS0zYzYuNi0zLjMgMTQuMy0zLjkgMjEuMy0xLjVsMjMuMiA3LjdjOC4yIDIuNyAxNy4yLS40IDIxLjktNy41YzQuNy03IDQuMi0xNi4zLTEuMi0yMi44bC0xMy42LTE2LjNjLTEwLTEyLTkuOS0yOS41IC4zLTQxLjNsMTUuNy0xOC4zYzguOC0xMC4zIDEwLjItMjUgMy41LTM2LjdsLTIuNC00LjJjLTMuNS0uMi02LjktLjMtMTAuNC0uM0MxNjMuMSA0OCA4NC40IDEwOC45IDU3LjcgMTkzek00NjQgMjU2YzAtMzYuOC05LjYtNzEuNC0yNi40LTEwMS41TDQxMiAxNjQuOGMtMTUuNyA2LjMtMjMuOCAyMy44LTE4LjUgMzkuOGwxNi45IDUwLjdjMy41IDEwLjQgMTIgMTguMyAyMi42IDIwLjlsMjkuMSA3LjNjMS4yLTkgMS44LTE4LjIgMS44LTI3LjV6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWFydGhBc2lhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxLjcgMjk1LjFsMzEuNyA2LjNjNy45IDEuNiAxNi0uOSAyMS43LTYuNmwxNS40LTE1LjRjMTEuNi0xMS42IDMxLjEtOC40IDM4LjQgNi4ybDkuMyAxOC41YzQuOCA5LjYgMTQuNiAxNS43IDI1LjQgMTUuN2MxNS4yIDAgMjYuMS0xNC42IDIxLjctMjkuMmwtNi0xOS45Yy00LjYtMTUuNCA2LjktMzAuOSAyMy0zMC45aDIuM2MxMy40IDAgMjUuOS02LjcgMzMuMy0xNy44bDEwLjctMTYuMWM1LjYtOC41IDUuMy0xOS42LS44LTI3LjdsLTE2LjEtMjEuNWMtMTAuMy0xMy43LTMuMy0zMy41IDEzLjQtMzcuN2wxNy00LjNjNy41LTEuOSAxMy42LTcuMiAxNi41LTE0LjRsMTYuNC00MC45QzMwMy40IDUyLjEgMjgwLjIgNDggMjU2IDQ4QzE0MS4xIDQ4IDQ4IDE0MS4xIDQ4IDI1NmMwIDEzLjQgMS4zIDI2LjUgMy43IDM5LjF6bTQwNy43IDQuNmMtMy0uMy02LS4xLTkgLjhsLTE1LjggNC40Yy02LjcgMS45LTEzLjgtLjktMTcuNS02LjdsLTItMy4xYy02LTkuNC0xNi40LTE1LjEtMjcuNi0xNS4xcy0yMS42IDUuNy0yNy42IDE1LjFsLTYuMSA5LjVjLTEuNCAyLjItMy40IDQuMS01LjcgNS4zTDMxMiAzMzAuMWMtMTguMSAxMC4xLTI1LjUgMzIuNC0xNyA1MS4zbDUuNSAxMi40YzguNiAxOS4yIDMwLjcgMjguNSA1MC41IDIxLjFsMi42LTFjMTAtMy43IDIxLjMtMi4yIDI5LjkgNC4xbDEuNSAxLjFjMzcuMi0yOS41IDY0LjEtNzEuNCA3NC40LTExOS41ek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTE0NC41IDkyLjFjLTIuMSA4LjYgMy4xIDE3LjMgMTEuNiAxOS40bDMyIDhjOC42IDIuMSAxNy4zLTMuMSAxOS40LTExLjZzLTMuMS0xNy4zLTExLjYtMTkuNGwtMzItOGMtOC42LTIuMS0xNy4zIDMuMS0xOS40IDExLjZ6bTkyLTIwYy0yLjEgOC42IDMuMSAxNy4zIDExLjYgMTkuNHMxNy4zLTMuMSAxOS40LTExLjZsOC0zMmMyLjEtOC42LTMuMS0xNy4zLTExLjYtMTkuNHMtMTcuMyAzLjEtMTkuNCAxMS42bC04IDMyek0zNDMuMiAxMTMuN2MtNy45LTQtMTcuNS0uNy0yMS41IDcuMmwtMTYgMzJjLTQgNy45LS43IDE3LjUgNy4yIDIxLjVzMTcuNSAuNyAyMS41LTcuMmwxNi0zMmM0LTcuOSAuNy0xNy41LTcuMi0yMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFYXJ0aEV1cm9wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjYuMyA0OC4zTDIzMi41IDczLjZjLTUuNCA0LTguNSAxMC40LTguNSAxNy4xdjkuMWMwIDYuOCA1LjUgMTIuMyAxMi4zIDEyLjNjMi40IDAgNC44LS43IDYuOC0yLjFsNDEuOC0yNy45YzItMS4zIDQuNC0yLjEgNi44LTIuMWgxYzYuMiAwIDExLjMgNS4xIDExLjMgMTEuM2MwIDMtMS4yIDUuOS0zLjMgOGwtMTkuOSAxOS45Yy01LjggNS44LTEyLjkgMTAuMi0yMC43IDEyLjhsLTI2LjUgOC44Yy01LjggMS45LTkuNiA3LjMtOS42IDEzLjRjMCAzLjctMS41IDcuMy00LjEgMTBsLTE3LjkgMTcuOWMtNi40IDYuNC05LjkgMTUtOS45IDI0djQuM2MwIDE2LjQgMTMuNiAyOS43IDI5LjkgMjkuN2MxMSAwIDIxLjItNi4yIDI2LjEtMTZsNC04LjFjMi40LTQuOCA3LjQtNy45IDEyLjgtNy45YzQuNSAwIDguNyAyLjEgMTEuNCA1LjdsMTYuMyAyMS43YzIuMSAyLjkgNS41IDQuNSA5LjEgNC41YzguNCAwIDEzLjktOC45IDEwLjEtMTYuNGwtMS4xLTIuM2MtMy41LTcgMC0xNS41IDcuNS0xOGwyMS4yLTcuMWM3LjYtMi41IDEyLjctOS42IDEyLjctMTcuNmMwLTEwLjMgOC4zLTE4LjYgMTguNi0xOC42SDQwMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgzNzkuM2MtNy4yIDAtMTQuMiAyLjktMTkuMyA4bC00LjcgNC43Yy0yLjEgMi4xLTMuMyA1LTMuMyA4YzAgNi4yIDUuMSAxMS4zIDExLjMgMTEuM2gxMS4zYzYgMCAxMS44IDIuNCAxNiA2LjZsNi41IDYuNWMxLjggMS44IDIuOCA0LjMgMi44IDYuOHMtMSA1LTIuOCA2LjhsLTcuNSA3LjVDMzg2IDI2MiAzODQgMjY2LjkgMzg0IDI3MnMyIDEwIDUuNyAxMy43TDQwOCAzMDRjMTAuMiAxMC4yIDI0LjEgMTYgMzguNiAxNkg0NTRjNi41LTIwLjIgMTAtNDEuNyAxMC02NGMwLTExMS40LTg3LjYtMjAyLjQtMTk3LjctMjA3Ljd6bTE3MiAzMDcuOWMtMy43LTIuNi04LjItNC4xLTEzLTQuMWMtNiAwLTExLjgtMi40LTE2LTYuNkwzOTYgMzMyYy03LjctNy43LTE4LTEyLTI4LjktMTJjLTkuNyAwLTE5LjItMy41LTI2LjYtOS44TDMxNCAyODcuNGMtMTEuNi05LjktMjYuNC0xNS40LTQxLjctMTUuNEgyNTEuNGMtMTIuNiAwLTI1IDMuNy0zNS41IDEwLjdMMTg4LjUgMzAxYy0xNy44IDExLjktMjguNSAzMS45LTI4LjUgNTMuM3YzLjJjMCAxNyA2LjcgMzMuMyAxOC43IDQ1LjNsMTYgMTZjOC41IDguNSAyMCAxMy4zIDMyIDEzLjNIMjQ4YzEzLjMgMCAyNCAxMC43IDI0IDI0YzAgMi41IC40IDUgMS4xIDcuM2M3MS4zLTUuOCAxMzIuNS00Ny42IDE2NS4yLTEwNy4yek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6TTE4Ny4zIDEwMC43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMGwtMzIgMzJjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGwzMi0zMmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWFydGhPY2VhbmlhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0yMDguNiAzNTcuM2wtMzktMTMuNWMtNi41LTIuMi0xMy42LTIuMy0yMC4xLS4zbC0xNS4zIDQuOWMtMTguNSA1LjktMzguNS0yLjQtNDcuNS0xOS41bC0zLjMtNi4yYy0xMC42LTIwLjEtMi4zLTQ1IDE4LjItNTQuN2wzNS4zLTE2LjhjMi4zLTEuMSA0LjQtMi44IDUuOS00LjhsNS4zLTdjNy4yLTkuNiAxOC42LTE1LjMgMzAuNi0xNS4zczIzLjQgNS43IDMwLjYgMTUuM2w0LjYgNi4xYzIgMi42IDQuOSA0LjUgOC4xIDUuMWM3LjggMS42IDE1LjctMS41IDIwLjQtNy45bDEwLjQtMTQuMmMyLTIuOCA1LjMtNC40IDguNy00LjRjNC40IDAgOC40IDIuNyAxMCA2LjhsMTAuMSAyNS45YzIuOCA3LjIgNi43IDE0IDExLjUgMjAuMkwzMTEgMjk5LjhjNS44IDcuNCA5IDE2LjYgOSAyNnMtMy4yIDE4LjYtOSAyNkwyOTkgMzY3LjJjLTguMyAxMC42LTIxIDE2LjgtMzQuNCAxNi44Yy04LjQgMC0xNi42LTIuNC0yMy43LTdsLTI1LjQtMTYuNGMtMi4yLTEuNC00LjUtMi41LTYuOS0zLjR6bTY1LjItMjE0LjhMMjk2IDE2NC43YzEwLjEgMTAuMSAyLjkgMjcuMy0xMS4zIDI3LjNIMjU0LjhjLTUuNiAwLTExLjEtMS4yLTE2LjItMy40bC00Mi44LTE5Yy0xNC4zLTYuMy0xMS45LTI3LjMgMy40LTMwLjNsMzguNS03LjdjMTMuMS0yLjYgMjYuNyAxLjUgMzYuMSAxMC45ek0yNDggNDMyYzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyNjRjLTguOCAwLTE2LTcuMi0xNi0xNnpNNDMxLjIgMjk4LjlsOCAyNGMyLjggOC40LTEuNyAxNy40LTEwLjEgMjAuMnMtMTcuNC0xLjctMjAuMi0xMC4xbC04LTI0Yy0yLjgtOC40IDEuNy0xNy40IDEwLjEtMjAuMnMxNy40IDEuNyAyMC4yIDEwLjF6bS0xOS45IDgwLjRsLTMyIDMyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42bDMyLTMyYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWdnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA0OTZDODYgNDk2IDAgMzk0IDAgMjg4QzAgMTc2IDY0IDE2IDE5MiAxNnMxOTIgMTYwIDE5MiAyNzJjMCAxMDYtODYgMjA4LTE5MiAyMDh6TTE1NC44IDEzNGM2LjUtNiA3LTE2LjEgMS0yMi42cy0xNi4xLTctMjIuNi0xYy0yMy45IDIxLjgtNDEuMSA1Mi43LTUyLjMgODQuMkM2OS43IDIyNi4xIDY0IDI1OS43IDY0IDI4OGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2YzAtMjQuNSA1LTU0LjQgMTUuMS04Mi44YzEwLjEtMjguNSAyNS01NC4xIDQzLjctNzEuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDMyYzEzLjUgMCAyNi4zIDUuNiAzNS40IDE1LjZsMTc2IDE5MmMxMi45IDE0IDE2LjIgMzQuMyA4LjYgNTEuOFM0MTkgMzIwIDQwMCAzMjBINDhjLTE5IDAtMzYuMy0xMS4yLTQzLjktMjguN3MtNC4zLTM3LjcgOC42LTUxLjhsMTc2LTE5MkMxOTcuNyAzNy42IDIxMC41IDMyIDIyNCAzMnpNMCA0MzJjMC0yNi41IDIxLjUtNDggNDgtNDhINDAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWxldmF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMyLjcgNC43bC02NCA2NGMtNC42IDQuNi01LjkgMTEuNS0zLjUgMTcuNHM4LjMgOS45IDE0LjggOS45SDIwOGM2LjUgMCAxMi4zLTMuOSAxNC44LTkuOXMxLjEtMTIuOS0zLjUtMTcuNGwtNjQtNjRjLTYuMi02LjItMTYuNC02LjItMjIuNiAwek02NCAxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTkyYzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em05NiA5NmE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6TTgwIDQwMGMwLTI2LjUgMjEuNS00OCA0OC00OGg2NGMyNi41IDAgNDggMjEuNSA0OCA0OHYxNmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQwMHptMTkyIDBjMC0yNi41IDIxLjUtNDggNDgtNDhoNjRjMjYuNSAwIDQ4IDIxLjUgNDggNDh2MTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMzA0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDB6bTMyLTEyOGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwek0zNTYuNyA5MS4zYzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDY0LTY0YzQuNi00LjYgNS45LTExLjUgMy41LTE3LjRTNDM4LjUgMCA0MzIgMEgzMDRjLTYuNSAwLTEyLjMgMy45LTE0LjggOS45cy0xLjEgMTIuOSAzLjUgMTcuNGw2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWxsaXBzaXNWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMTI4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzNjBhNTYgNTYgMCAxIDAgMCAxMTIgNTYgNTYgMCAxIDAgMC0xMTJ6bTAtMTYwYTU2IDU2IDAgMSAwIDAgMTEyIDU2IDU2IDAgMSAwIDAtMTEyek0xMjAgOTZBNTYgNTYgMCAxIDAgOCA5NmE1NiA1NiAwIDEgMCAxMTIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWxsaXBzaXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyNTZhNTYgNTYgMCAxIDEgMTEyIDBBNTYgNTYgMCAxIDEgOCAyNTZ6bTE2MCAwYTU2IDU2IDAgMSAxIDExMiAwIDU2IDU2IDAgMSAxIC0xMTIgMHptMjE2LTU2YTU2IDU2IDAgMSAxIDAgMTEyIDU2IDU2IDAgMSAxIDAtMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbnZlbG9wZUNpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDY0QzIxLjUgNjQgMCA4NS41IDAgMTEyYzAgMTUuMSA3LjEgMjkuMyAxOS4yIDM4LjRMMjM2LjggMzEzLjZjMTEuNCA4LjUgMjcgOC41IDM4LjQgMGw1Ny40LTQzYzIzLjktNTkuOCA3OS43LTEwMy4zIDE0Ni4zLTEwOS44bDEzLjktMTAuNGMxMi4xLTkuMSAxOS4yLTIzLjMgMTkuMi0zOC40YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek0yOTQuNCAzMzkuMmMtMjIuOCAxNy4xLTU0IDE3LjEtNzYuOCAwTDAgMTc2VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzNjAuMkMzMzUuMSA0MTcuNiAzMjAgMzc4LjUgMzIwIDMzNmMwLTUuNiAuMy0xMS4xIC44LTE2LjZsLTI2LjQgMTkuOHpNNjQwIDMzNmExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNzYuNy00My4zYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC03MiA3MmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDgwIDM1My40bDYwLjctNjAuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW52ZWxvcGVPcGVuVGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTUuNCA5NkgxNDQgMTA3LjggOTZ2OC44VjE0NHY0MC40IDg5TC4yIDIwMi41YzEuNi0xOC4xIDEwLjktMzQuOSAyNS43LTQ1LjhMNDggMTQwLjNWOTZjMC0yNi41IDIxLjUtNDggNDgtNDhoNzYuNmw0OS45LTM2LjlDMjMyLjIgMy45IDI0My45IDAgMjU2IDBzMjMuOCAzLjkgMzMuNSAxMUwzMzkuNCA0OEg0MTZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NDQuM2wyMi4xIDE2LjRjMTQuOCAxMC45IDI0LjEgMjcuNyAyNS43IDQ1LjhMNDE2IDI3My40di04OVYxNDQgMTA0LjggOTZINDA0LjIgMzY4IDI5Ni42IDIxNS40ek0wIDQ0OFYyNDIuMUwyMTcuNiA0MDMuM2MxMS4xIDguMiAyNC42IDEyLjcgMzguNCAxMi43czI3LjMtNC40IDM4LjQtMTIuN0w1MTIgMjQyLjFWNDQ4djBjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0djB6TTE3NiAxNjBIMzM2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMCA2NEgzMzZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbnZlbG9wZU9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMjA4LjFMMjU2IDY1LjkgNDQ4IDIwOC4xdjQ3LjRMMjg5LjUgMzczYy05LjcgNy4yLTIxLjQgMTEtMzMuNSAxMXMtMjMuOC0zLjktMzMuNS0xMUw2NCAyNTUuNVYyMDguMXpNMjU2IDBjLTEyLjEgMC0yMy44IDMuOS0zMy41IDExTDI1LjkgMTU2LjdDOS42IDE2OC44IDAgMTg3LjggMCAyMDguMVY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjIwOC4xYzAtMjAuMy05LjYtMzkuNC0yNS45LTUxLjRMMjg5LjUgMTFDMjc5LjggMy45IDI2OC4xIDAgMjU2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVudmVsb3BlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDY0QzIxLjUgNjQgMCA4NS41IDAgMTEyYzAgMTUuMSA3LjEgMjkuMyAxOS4yIDM4LjRMMjM2LjggMzEzLjZjMTEuNCA4LjUgMjcgOC41IDM4LjQgMEw0OTIuOCAxNTAuNGMxMi4xLTkuMSAxOS4yLTIzLjMgMTkuMi0zOC40YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek0wIDE3NlYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE3NkwyOTQuNCAzMzkuMmMtMjIuOCAxNy4xLTU0IDE3LjEtNzYuOCAwTDAgMTc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbnZlbG9wZXNCdWxrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwQzExMC4zIDAgOTYgMTQuMyA5NiAzMlYyMjRoOTZWMTkyYzAtMzUuMyAyOC43LTY0IDY0LTY0SDQ4MFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkgxMjh6TTI1NiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMyaDk2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNkg1NzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDI1NnptMjQwIDY0aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZINDk2Yy04LjggMC0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNnpNNjQgMjU2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYxM0wxODcuMSA0MTUuOWMxLjQgMSAzLjEgMS42IDQuOSAxLjZzMy41LS42IDQuOS0xLjZMMzUyIDMwMVYyODhjMC0xNy43LTE0LjMtMzItMzItMzJINjR6bTI4OCA4NC44TDIxNiA0NDEuNmMtNi45IDUuMS0xNS4zIDcuOS0yNCA3LjlzLTE3LTIuOC0yNC03LjlMMzIgMzQwLjhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNDAuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXF1YWxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDh6bTAgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQwMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXJhc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5MC43IDU3LjRMNTcuNCAyOTAuN2MtMjUgMjUtMjUgNjUuNSAwIDkwLjVsODAgODBjMTIgMTIgMjguMyAxOC43IDQ1LjMgMTguN0gyODhoOS40SDUxMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzODcuOUw1MTguNiAyODUuM2MyNS0yNSAyNS02NS41IDAtOTAuNUwzODEuMyA1Ny40Yy0yNS0yNS02NS41LTI1LTkwLjUgMHpNMjk3LjQgNDE2SDI4OGwtMTA1LjQgMC04MC04MEwyMjcuMyAyMTEuMyAzNjQuNyAzNDguNyAyOTcuNCA0MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV0aGVybmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjI0VjQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMkg5NlYzMzZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNlY0NDhoNjRWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZWNDQ4aDY0VjMzNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2VjQ0OGg2NFYzMzZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNlY0NDhoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDQ0OFYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJIMzg0Vjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzJIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXVyb1NpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDguMSAyNDBjLS4xIDIuNy0uMSA1LjMtLjEgOHYxNmMwIDIuNyAwIDUuMyAuMSA4SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDYwLjNDODkuOSA0MTkuOSAxNzAgNDgwIDI2NCA0ODBoMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjY0Yy01Ny45IDAtMTA4LjItMzIuNC0xMzMuOS04MEgyNTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTEyLjJjLS4xLTIuNi0uMi01LjMtLjItOFYyNDhjMC0yLjcgLjEtNS40IC4yLThIMjU2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDEzMC4xYzI1LjctNDcuNiA3Ni04MCAxMzMuOS04MGgyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNjRDMTcwIDMyIDg5LjkgOTIuMSA2MC4zIDE3NkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0OC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNDYuMyAwIDY0VjMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjY0ek0zMiA0ODBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeHBhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NHY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjk2aDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyek02NCAzNTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjRWMzUyek0zMjAgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoNjR2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMjB6TTQ0OCAzNTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NjRIMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXhwbG9zaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5OS42IDExLjNjNi43LTEwLjcgMjAuNS0xNC41IDMxLjctOC41czE1LjggMTkuNSAxMC42IDMxTDQwNC44IDMzOC42YzIuMiAyLjMgNC4zIDQuNyA2LjMgNy4xbDk3LjItNTQuN2MxMC41LTUuOSAyMy42LTMuMSAzMC45IDYuNHM2LjMgMjMtMi4yIDMxLjVsLTg3IDg3SDM3OC41Yy0xMy4yLTM3LjMtNDguNy02NC05MC41LTY0cy03Ny40IDI2LjctOTAuNSA2NEgxMTcuOEw0Mi4zIDM2My43Yy05LjctNi43LTEzLjEtMTkuNi03LjktMzAuM3MxNy40LTE1LjkgMjguNy0xMi40bDk3LjIgMzAuNGMzLTMuOSA2LjEtNy43IDkuNC0xMS4zTDEwNy40IDIzNi4zYy02LjEtMTAuMS0zLjktMjMuMSA1LjEtMzAuN3MyMi4yLTcuNSAzMS4xIC4xTDI0NiAyOTMuNmMxLjUtLjQgMy0uOCA0LjUtMS4xbDEzLjYtMTQyLjdjMS4yLTEyLjMgMTEuNS0yMS43IDIzLjktMjEuN3MyMi43IDkuNCAyMy45IDIxLjdsMTMuNSAxNDEuOUw0OTkuNiAxMS4zek02NCA0NDh2MEg1MTJ2MGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg2NHpNMjg4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRWNzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV5ZURyb3BwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQxLjYgMjkuMkwyNDAuMSAxMzAuOGwtOS40LTkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTYwIDE2MGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC05LjQtOS40TDQ4Mi44IDE3MC40YzM5LTM5IDM5LTEwMi4yIDAtMTQxLjFzLTEwMi4yLTM5LTE0MS4xIDB6TTU1LjQgMzIzLjNjLTE1IDE1LTIzLjQgMzUuNC0yMy40IDU2LjZ2NDIuNEw1LjQgNDYyLjJjLTguNSAxMi43LTYuOCAyOS42IDQgNDAuNHMyNy43IDEyLjUgNDAuNCA0TDg5LjcgNDgwaDQyLjRjMjEuMiAwIDQxLjYtOC40IDU2LjYtMjMuNEwzMDkuNCAzMzUuOWwtNDUuMy00NS4zTDE0My40IDQxMS4zYy0zIDMtNy4xIDQuNy0xMS4zIDQuN0g5NlYzNzkuOWMwLTQuMiAxLjctOC4zIDQuNy0xMS4zTDIyMS40IDI0Ny45bC00NS4zLTQ1LjNMNTUuNCAzMjMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXllTG93VmlzaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNTI1LjYgMzg2LjdjMzkuNi00MC42IDY2LjQtODYuMSA3OS45LTExOC40YzMuMy03LjkgMy4zLTE2LjcgMC0yNC42Yy0xNC45LTM1LjctNDYuMi04Ny43LTkzLTEzMS4xQzQ2NS41IDY4LjggNDAwLjggMzIgMzIwIDMyYy02OC4yIDAtMTI1IDI2LjMtMTY5LjMgNjAuOEwzOC44IDUuMXpNMjIzIDE0OS41YzQ4LjYtNDQuMyAxMjMtNTAuOCAxNzkuMy0xMS43YzYwLjggNDIuNCA3OC45IDEyMy4yIDQ0LjIgMTg2LjlMNDA4IDI5NC41YzguNC0xOS4zIDEwLjYtNDEuNCA0LjgtNjMuM2MtMTEuMS00MS41LTQ3LjgtNjkuNC04OC42LTcxLjFjLTUuOC0uMi05LjIgNi4xLTcuNCAxMS43YzIuMSA2LjQgMy4zIDEzLjIgMy4zIDIwLjNjMCAxMC4yLTIuNCAxOS44LTYuNiAyOC4zTDIyMyAxNDkuNXptLTEzOS45IDEyYy0xMSAxNC40LTIwLjUgMjguNy0yOC40IDQyLjJsMzM5IDI2NS43YzE4LjctNS41IDM2LjItMTMgNTIuNi0yMS44TDgzLjEgMTYxLjV6bS01MCA4Ni4zYy0xLjggNi44LTEuMyAxNCAxLjQgMjAuNWMxNC45IDM1LjcgNDYuMiA4Ny43IDkzIDEzMS4xQzE3NC41IDQ0My4yIDIzOS4yIDQ4MCAzMjAgNDgwYzMuMSAwIDYuMS0uMSA5LjItLjJMMzMuMSAyNDcuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXllU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN0w1MjUuNiAzODYuN2MzOS42LTQwLjYgNjYuNC04Ni4xIDc5LjktMTE4LjRjMy4zLTcuOSAzLjMtMTYuNyAwLTI0LjZjLTE0LjktMzUuNy00Ni4yLTg3LjctOTMtMTMxLjFDNDY1LjUgNjguOCA0MDAuOCAzMiAzMjAgMzJjLTY4LjIgMC0xMjUgMjYuMy0xNjkuMyA2MC44TDM4LjggNS4xek0yMjMuMSAxNDkuNUMyNDguNiAxMjYuMiAyODIuNyAxMTIgMzIwIDExMmM3OS41IDAgMTQ0IDY0LjUgMTQ0IDE0NGMwIDI0LjktNi4zIDQ4LjMtMTcuNCA2OC43TDQwOCAyOTQuNWM4LjQtMTkuMyAxMC42LTQxLjQgNC44LTYzLjNjLTExLjEtNDEuNS00Ny44LTY5LjQtODguNi03MS4xYy01LjgtLjItOS4yIDYuMS03LjQgMTEuN2MyLjEgNi40IDMuMyAxMy4yIDMuMyAyMC4zYzAgMTAuMi0yLjQgMTkuOC02LjYgMjguM2wtOTAuMy03MC44ek0zNzMgMzg5LjljLTE2LjQgNi41LTM0LjMgMTAuMS01MyAxMC4xYy03OS41IDAtMTQ0LTY0LjUtMTQ0LTE0NGMwLTYuOSAuNS0xMy42IDEuNC0yMC4yTDgzLjEgMTYxLjVDNjAuMyAxOTEuMiA0NCAyMjAuOCAzNC41IDI0My43Yy0zLjMgNy45LTMuMyAxNi43IDAgMjQuNmMxNC45IDM1LjcgNDYuMiA4Ny43IDkzIDEzMS4xQzE3NC41IDQ0My4yIDIzOS4yIDQ4MCAzMjAgNDgwYzQ3LjggMCA4OS45LTEyLjkgMTI2LjItMzIuNUwzNzMgMzg5Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJjLTgwLjggMC0xNDUuNSAzNi44LTE5Mi42IDgwLjZDNDguNiAxNTYgMTcuMyAyMDggMi41IDI0My43Yy0zLjMgNy45LTMuMyAxNi43IDAgMjQuNkMxNy4zIDMwNCA0OC42IDM1NiA5NS40IDM5OS40QzE0Mi41IDQ0My4yIDIwNy4yIDQ4MCAyODggNDgwczE0NS41LTM2LjggMTkyLjYtODAuNmM0Ni44LTQzLjUgNzguMS05NS40IDkzLTEzMS4xYzMuMy03LjkgMy4zLTE2LjcgMC0yNC42Yy0xNC45LTM1LjctNDYuMi04Ny43LTkzLTEzMS4xQzQzMy41IDY4LjggMzY4LjggMzIgMjg4IDMyek0xNDQgMjU2YTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTE0NC02NGMwIDM1LjMtMjguNyA2NC02NCA2NGMtNy4xIDAtMTMuOS0xLjItMjAuMy0zLjNjLTUuNS0xLjgtMTEuOSAxLjYtMTEuNyA3LjRjLjMgNi45IDEuMyAxMy44IDMuMiAyMC43YzEzLjcgNTEuMiA2Ni40IDgxLjYgMTE3LjYgNjcuOXM4MS42LTY2LjQgNjcuOS0xMTcuNmMtMTEuMS00MS41LTQ3LjgtNjkuNC04OC42LTcxLjFjLTUuOC0uMi05LjIgNi4xLTcuNCAxMS43YzIuMSA2LjQgMy4zIDEzLjIgMy4zIDIwLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlYyNTYgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjg4SDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg2NFY5NkgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VBbmdyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6TTMzOC43IDM5NS45YzYuNi01LjkgNy4xLTE2IDEuMi0yMi42QzMyMy44IDM1NS40IDI5NS43IDMzNiAyNTYgMzM2cy02Ny44IDE5LjQtODMuOSAzNy4zYy01LjkgNi42LTUuNCAxNi43IDEuMiAyMi42czE2LjcgNS40IDIyLjYtMS4yYzExLjctMTMgMzEuNi0yNi43IDYwLjEtMjYuN3M0OC40IDEzLjcgNjAuMSAyNi43YzUuOSA2LjYgMTYgNy4xIDIyLjYgMS4yek0xNzYuNCAyNzJjMTcuNyAwIDMyLTE0LjMgMzItMzJjMC0xLjUtLjEtMy0uMy00LjRsMTAuOSAzLjZjOC40IDIuOCAxNy40LTEuNyAyMC4yLTEwLjFzLTEuNy0xNy40LTEwLjEtMjAuMmwtOTYtMzJjLTguNC0yLjgtMTcuNCAxLjctMjAuMiAxMC4xczEuNyAxNy40IDEwLjEgMjAuMmwzMC43IDEwLjJjLTUuOCA1LjgtOS4zIDEzLjgtOS4zIDIyLjZjMCAxNy43IDE0LjMgMzIgMzIgMzJ6bTE5Mi0zMmMwLTguOS0zLjYtMTctOS41LTIyLjhsMzAuMi0xMC4xYzguNC0yLjggMTIuOS0xMS45IDEwLjEtMjAuMnMtMTEuOS0xMi45LTIwLjItMTAuMWwtOTYgMzJjLTguNCAyLjgtMTIuOSAxMS45LTEwLjEgMjAuMnMxMS45IDEyLjkgMjAuMiAxMC4xbDExLjctMy45Yy0uMiAxLjUtLjMgMy4xLS4zIDQuN2MwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlRGl6enkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTAtMjI0YTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4ek0xMDAuNyAxMzIuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMEwxNjAgMTY5LjRsMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNkwxODIuNiAxOTJsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBMMTYwIDIxNC42bC0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMMTM3LjQgMTkybC0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42em0xOTIgMGM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMEwzNTIgMTY5LjRsMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNkwzNzQuNiAxOTJsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBMMzUyIDIxNC42bC0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMMzI5LjQgMTkybC0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlRmx1c2hlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6TTE3NiAzODRjMCA4LjggNy4yIDE2IDE2IDE2SDMyMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxOTJjLTguOCAwLTE2IDcuMi0xNiAxNnptLTE2LTg4YTcyIDcyIDAgMSAwIDAtMTQ0IDcyIDcyIDAgMSAwIDAgMTQ0em0yNjQtNzJhNzIgNzIgMCAxIDAgLTE0NCAwIDcyIDcyIDAgMSAwIDE0NCAwem0tMjg4IDBhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTkyIDBhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUZyb3duT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTc2LjQgMTc2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTI4IDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bS0xMjIgMTc0LjVjLTEyLjQgNS4yLTI2LjUtNC4xLTIxLjEtMTYuNGMxNi0zNi42IDUyLjQtNjIuMSA5NC44LTYyLjFzNzguOCAyNS42IDk0LjggNjIuMWM1LjQgMTIuMy04LjcgMjEuNi0yMS4xIDE2LjRjLTIyLjQtOS41LTQ3LjQtMTQuOC03My43LTE0LjhzLTUxLjMgNS4zLTczLjcgMTQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUZyb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNTkuMyAzODguN2MtMi42IDguNC0xMS42IDEzLjItMjAgMTAuNXMtMTMuMi0xMS42LTEwLjUtMjBDMTQ1LjIgMzI2LjEgMTk2LjMgMjg4IDI1NiAyODhzMTEwLjggMzguMSAxMjcuMyA5MS4zYzIuNiA4LjQtMi4xIDE3LjQtMTAuNSAyMHMtMTcuNC0yLjEtMjAtMTAuNUMzNDAuNSAzNDkuNCAzMDIuMSAzMjAgMjU2IDMyMHMtODQuNSAyOS40LTk2LjcgNjguN3pNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmltYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyem05Ni0xMTJoLThWMzYwbDU1LjMgMGMtMy44IDIyLjctMjMuNiA0MC00Ny4zIDQwem00Ny4zLTU2TDM0NCAzNDRWMzA0aDhjMjMuOCAwIDQzLjUgMTcuMyA0Ny4zIDQwek0zMjggMzQ0SDI2NFYzMDRoNjR2NDB6bTAgNTZIMjY0VjM2MGg2NHY0MHptLTgwLTk2djQwbC02NCAwVjMwNGg2NHptMCA1NnY0MEgxODRWMzYwbDY0IDB6bS04MC0xNkgxMTIuN2MzLjgtMjIuNyAyMy42LTQwIDQ3LjMtNDBoOHY0MHptMCA1NmgtOGMtMjMuOCAwLTQzLjUtMTcuMy00Ny4zLTQwSDE2OHY0MHpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluQmVhbVN3ZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3Ni44IDEyNi4zYy00LjEgMS4xLTguNCAxLjctMTIuOCAxLjdjLTI2LjUgMC00OC0yMS00OC00N2MwLTUgMS44LTExLjMgNC42LTE4LjFjLjMtLjcgLjYtMS40IC45LTIuMWM5LTIwLjIgMjYuNS00NC45IDM2LTU3LjVjMy4yLTQuNCA5LjYtNC40IDEyLjggMEM0ODMuNCAyMC42IDUxMiA2MSA1MTIgODFjMCAyMS43LTE0LjkgMzkuOC0zNS4yIDQ1LjN6TTI1NiAwYzUxLjQgMCA5OS4zIDE1LjIgMTM5LjQgNDEuMmMtMS41IDMuMS0zIDYuMi00LjMgOS4zYy0zLjQgOC03LjEgMTktNy4xIDMwLjVjMCA0NC4zIDM2LjYgNzkgODAgNzljOS42IDAgMTguOC0xLjcgMjcuNC00LjhjMTMuMyAzMC45IDIwLjYgNjUgMjAuNiAxMDAuOGMwIDE0MS40LTExNC42IDI1Ni0yNTYgMjU2UzAgMzk3LjQgMCAyNTZTMTE0LjYgMCAyNTYgMHpNMzg4LjEgMzEyLjhjLTM5LjcgMTIuMi04NC41IDE5LTEzMS44IDE5cy05Mi4xLTYuOC0xMzEuOC0xOWMtMTIuMy0zLjgtMjQuMyA2LjktMTkuMyAxOC43YzI1IDU5LjEgODMuMiAxMDAuNSAxNTEuMSAxMDAuNXMxMjYuMi00MS40IDE1MS4xLTEwMC41YzUtMTEuOC03LTIyLjUtMTkuMy0xOC43em0tMTcwLjUtODRsMCAwIDAgMGMyLjEgMi44IDUuNyAzLjkgOC45IDIuOHM1LjUtNC4xIDUuNS03LjZjMC0xNy45LTYuNy0zNS42LTE2LjYtNDguOGMtOS44LTEzLTIzLjktMjMuMi0zOS40LTIzLjJzLTI5LjYgMTAuMi0zOS40IDIzLjJDMTI2LjcgMTg4LjQgMTIwIDIwNi4xIDEyMCAyMjRjMCAzLjQgMi4yIDYuNSA1LjUgNy42czYuOSAwIDguOS0yLjhsMCAwIDAgMCAwIDAgLjItLjJjLjItLjIgLjQtLjUgLjctLjljLjYtLjggMS42LTIgMi44LTMuNGMyLjUtMi44IDYtNi42IDEwLjItMTAuM2M4LjgtNy44IDE4LjgtMTQgMjcuNy0xNHMxOC45IDYuMiAyNy43IDE0YzQuMiAzLjcgNy43IDcuNSAxMC4yIDEwLjNjMS4yIDEuNCAyLjIgMi42IDIuOCAzLjRjLjMgLjQgLjYgLjcgLjcgLjlsLjIgLjIgMCAwIDAgMHptMTYwIDBsMCAwIDAgMCAwIDBjMi4xIDIuOCA1LjcgMy45IDguOSAyLjhzNS41LTQuMSA1LjUtNy42YzAtMTcuOS02LjctMzUuNi0xNi42LTQ4LjhjLTkuOC0xMy0yMy45LTIzLjItMzkuNC0yMy4ycy0yOS42IDEwLjItMzkuNCAyMy4yQzI4Ni43IDE4OC40IDI4MCAyMDYuMSAyODAgMjI0YzAgMy40IDIuMiA2LjUgNS41IDcuNnM2LjkgMCA4LjktMi44bDAgMCAwIDAgMCAwIC4yLS4yYy4yLS4yIC40LS41IC43LS45Yy42LS44IDEuNi0yIDIuOC0zLjRjMi41LTIuOCA2LTYuNiAxMC4yLTEwLjNjOC44LTcuOCAxOC44LTE0IDI3LjctMTRzMTguOSA2LjIgMjcuNyAxNGM0LjIgMy43IDcuNyA3LjUgMTAuMiAxMC4zYzEuMiAxLjQgMi4yIDIuNiAyLjggMy40Yy4zIC40IC42IC43IC43IC45bC4yIC4yIDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUdyaW5CZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zODguMSAzMTIuOGMxMi4zLTMuOCAyNC4zIDYuOSAxOS4zIDE4LjdDMzgyLjQgMzkwLjYgMzI0LjIgNDMyIDI1Ni4zIDQzMnMtMTI2LjItNDEuNC0xNTEuMS0xMDAuNWMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTl6bS0xNzAuNS04NGwwIDAgMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwem0xNjAgMGwwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDAgMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlR3JpbkhlYXJ0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzg4LjEgMzEyLjhjMTIuMy0zLjggMjQuMyA2LjkgMTkuMyAxOC43QzM4Mi40IDM5MC42IDMyNC4yIDQzMiAyNTYuMyA0MzJzLTEyNi4yLTQxLjQtMTUxLjEtMTAwLjVjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5ek0xOTkuMyAxMjkuMWMxNy44IDQuOCAyOC40IDIzLjEgMjMuNiA0MC44bC0xNy40IDY1Yy0yLjMgOC41LTExLjEgMTMuNi0xOS42IDExLjNsLTY1LjEtMTcuNGMtMTcuOC00LjgtMjguNC0yMy4xLTIzLjYtNDAuOHMyMy4xLTI4LjQgNDAuOC0yMy42bDE2LjEgNC4zIDQuMy0xNi4xYzQuOC0xNy44IDIzLjEtMjguNCA0MC44LTIzLjZ6bTE1NC4zIDIzLjZsNC4zIDE2LjEgMTYuMS00LjNjMTcuOC00LjggMzYuMSA1LjggNDAuOCAyMy42cy01LjggMzYuMS0yMy42IDQwLjhsLTY1LjEgMTcuNGMtOC41IDIuMy0xNy4zLTIuOC0xOS42LTExLjNsLTE3LjQtNjVjLTQuOC0xNy44IDUuOC0zNi4xIDIzLjYtNDAuOHMzNi4xIDUuOCA0MC45IDIzLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluU3F1aW50VGVhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI2LjggMTQuMkM0NDYtNSA0NzcuNS00LjYgNDk3LjEgMTQuOXMyMCA1MSAuNyA3MC4zYy02LjggNi44LTIxLjQgMTIuNC0zNy40IDE2LjdjLTE2LjMgNC40LTM0LjEgNy41LTQ2LjMgOS4zYy0xLjYgLjItMy4xIC41LTQuNiAuNmMtNS42IC45LTEwLjMtMy45LTkuNS05LjVjMS42LTExLjIgNC42LTI5LjYgOS00N2MuMy0xLjMgLjctMi42IDEtMy45YzQuMy0xNS45IDkuOC0zMC41IDE2LjctMzcuNHptLTQ0LjcgMTljLTEuNSA0LjgtMi45IDkuNi00LjEgMTQuM2MtNC44IDE4LjktOCAzOC41LTkuNyA1MC4zYy00IDI2LjggMTguOSA0OS43IDQ1LjcgNDUuOGMxMS45LTEuNiAzMS41LTQuOCA1MC40LTkuN2M0LjctMS4yIDkuNS0yLjUgMTQuMy00LjFDNTM0LjIgMjI3LjUgNTIwLjIgMzUzLjggNDM3IDQzN2MtODMuMiA4My4yLTIwOS41IDk3LjItMzA3LjIgNDEuOGMxLjUtNC44IDIuOC05LjYgNC0xNC4zYzQuOC0xOC45IDgtMzguNSA5LjctNTAuM2M0LTI2LjgtMTguOS00OS43LTQ1LjctNDUuOGMtMTEuOSAxLjYtMzEuNSA0LjgtNTAuNCA5LjdjLTQuNyAxLjItOS41IDIuNS0xNC4zIDQuMUMtMjIuMiAyODQuNS04LjIgMTU4LjIgNzUgNzVDMTU4LjItOC4zIDI4NC41LTIyLjIgMzgyLjIgMzMuMnpNNTEuNSA0MTAuMWMxOC41LTUgMzguOC04LjMgNTAuOS0xMGM1LjYtLjkgMTAuMyAzLjkgOS41IDkuNWMtMS43IDEyLjEtNSAzMi40LTEwIDUwLjlDOTcuNiA0NzYuNCA5MiA0OTEgODUuMiA0OTcuOEM2NiA1MTcgMzQuNSA1MTYuNiAxNC45IDQ5Ny4xcy0yMC01MS0uNy03MC4zYzYuOC02LjggMjEuNC0xMi40IDM3LjQtMTYuN3pNNDE2LjQgMjAyLjNjLTQuOC0xMS45LTIwLjktMTAuOS0yNi45IC40Yy0xOS40IDM2LjctNDYuMyA3My4yLTc5LjggMTA2LjdzLTcwIDYwLjMtMTA2LjcgNzkuOGMtMTEuMyA2LTEyLjMgMjIuMS0uNCAyNi45YzU5LjQgMjQuMSAxMjkuOSAxMi4yIDE3Ny45LTM1LjhzNTkuOS0xMTguNSAzNS44LTE3Ny45ek04Ny4xIDI4NS4xYzIgMiA0LjYgMy4yIDcuMyAzLjRsNTYuMSA1LjEgNS4xIDU2LjFjLjMgMi44IDEuNSA1LjQgMy40IDcuM2M2LjMgNi4zIDE3LjIgMy42IDE5LjgtNC45bDI5LjctOTcuNGMzLjUtMTEuNi03LjMtMjIuNS0xOS0xOUw5MiAyNjUuM2MtOC42IDIuNi0xMS4zIDEzLjQtNC45IDE5Ljh6TTI2NS4zIDkybC0yOS43IDk3LjRjLTMuNSAxMS42IDcuMyAyMi41IDE5IDE5bDk3LjQtMjkuN2M4LjYtMi42IDExLjMtMTMuNCA0LjktMTkuOGMtMi0yLTQuNi0zLjItNy4zLTMuNGwtNTYuMS01LjEtNS4xLTU2LjFjLS4zLTIuOC0xLjUtNS40LTMuNC03LjNjLTYuMy02LjMtMTcuMi0zLjYtMTkuOCA0Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluU3F1aW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zODguMSAzMTIuOGMxMi4zLTMuOCAyNC4zIDYuOSAxOS4zIDE4LjdDMzgyLjQgMzkwLjYgMzI0LjIgNDMyIDI1Ni4zIDQzMnMtMTI2LjItNDEuNC0xNTEuMS0xMDAuNWMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTl6TTEzMy41IDE0Ni43bDg5LjkgNDcuOWMxMC43IDUuNyAxMC43IDIxLjEgMCAyNi44bC04OS45IDQ3LjljLTcuOSA0LjItMTcuNS0xLjUtMTcuNS0xMC41YzAtMi44IDEtNS41IDIuOC03LjZsMzYtNDMuMi0zNi00My4yYy0xLjgtMi4xLTIuOC00LjgtMi44LTcuNmMwLTkgOS42LTE0LjcgMTcuNS0xMC41ek0zOTYgMTU3LjFjMCAyLjgtMSA1LjUtMi44IDcuNmwtMzYgNDMuMiAzNiA0My4yYzEuOCAyLjEgMi44IDQuOCAyLjggNy42YzAgOS05LjYgMTQuNy0xNy41IDEwLjVsLTg5LjktNDcuOWMtMTAuNy01LjctMTAuNy0yMS4xIDAtMjYuOGw4OS45LTQ3LjljNy45LTQuMiAxNy41IDEuNSAxNy41IDEwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluU3RhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em00MDcuNCA3NS41YzUtMTEuOC03LTIyLjUtMTkuMy0xOC43Yy0zOS43IDEyLjItODQuNSAxOS0xMzEuOCAxOXMtOTIuMS02LjgtMTMxLjgtMTljLTEyLjMtMy44LTI0LjMgNi45LTE5LjMgMTguN2MyNSA1OS4xIDgzLjIgMTAwLjUgMTUxLjEgMTAwLjVzMTI2LjItNDEuNCAxNTEuMS0xMDAuNXpNMTYwIDEyMGMtMy4xIDAtNS45IDEuOC03LjIgNC42bC0xNi42IDM0LjctMzguMSA1Yy0zLjEgLjQtNS42IDIuNS02LjYgNS41cy0uMSA2LjIgMi4xIDguM2wyNy45IDI2LjUtNyAzNy44Yy0uNiAzIC43IDYuMSAzLjIgNy45czUuOCAyIDguNSAuNkwxNjAgMjMyLjVsMzMuOCAxOC4zYzIuNyAxLjUgNiAxLjMgOC41LS42czMuNy00LjkgMy4yLTcuOWwtNy0zNy44TDIyNi40IDE3OGMyLjItMi4xIDMuMS01LjMgMi4xLTguM3MtMy41LTUuMS02LjYtNS41bC0zOC4xLTUtMTYuNi0zNC43Yy0xLjMtMi44LTQuMS00LjYtNy4yLTQuNnptMTkyIDBjLTMuMSAwLTUuOSAxLjgtNy4yIDQuNmwtMTYuNiAzNC43LTM4LjEgNWMtMy4xIC40LTUuNiAyLjUtNi42IDUuNXMtLjEgNi4yIDIuMSA4LjNsMjcuOSAyNi41LTcgMzcuOGMtLjYgMyAuNyA2LjEgMy4yIDcuOXM1LjggMiA4LjUgLjZMMzUyIDIzMi41bDMzLjggMTguM2MyLjcgMS41IDYgMS4zIDguNS0uNnMzLjctNC45IDMuMi03LjlsLTctMzcuOEw0MTguNCAxNzhjMi4yLTIuMSAzLjEtNS4zIDIuMS04LjNzLTMuNS01LjEtNi42LTUuNWwtMzguMS01LTE2LjYtMzQuN2MtMS4zLTIuOC00LjEtNC42LTcuMi00LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluVGVhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ4LjYgMzcxLjRDNTA2LjQgNDU0LjggNDE5LjkgNTEyIDMyMCA1MTJzLTE4Ni40LTU3LjItMjI4LjYtMTQwLjZjNC41LTIuOSA4LjctNi4zIDEyLjctMTAuM2M4LjEtOC4xIDEzLjItMTguNiAxNi41LTI2LjZjMy42LTguOCA2LjUtMTguNCA4LjgtMjcuNWM0LjYtMTguMiA3LjctMzcgOS4zLTQ4LjJjMy45LTI2LjUtMTguOC00OS4yLTQ1LjItNDUuNGMtNi44IC45LTE2LjIgMi40LTI2LjYgNC40Qzg1LjMgOTQuNSAxOTEuNiAwIDMyMCAwUzU1NC43IDk0LjUgNTczLjIgMjE3LjdjLTEwLjMtMi0xOS44LTMuNS0yNi42LTQuNGMtMjYuNS0zLjktNDkuMiAxOC44LTQ1LjIgNDUuNGMxLjYgMTEuMyA0LjYgMzAgOS4zIDQ4LjJjMi4zIDkuMSA1LjIgMTguOCA4LjggMjcuNWMzLjMgOC4xIDguNCAxOC41IDE2LjUgMjYuNmMzLjkgMy45IDguMiA3LjQgMTIuNyAxMC4zek0xMDcgMjU0LjFjLTMuMSAyMS41LTExLjQgNzAuMi0yNS41IDg0LjRjLS45IDEtMS45IDEuOC0yLjkgMi43QzYwIDM1Ni43IDMyIDM1NS41IDE0LjMgMzM3LjdjLTE4LjctMTguNy0xOS4xLTQ4LjgtLjctNjcuMmM4LjYtOC42IDMwLjEtMTUuMSA1MC41LTE5LjZjMTMtMi44IDI1LjUtNC44IDMzLjktNmM1LjQtLjggOS45IDMuNyA5IDl6bTQ1NC41IDg3LjFjLS44LS42LTEuNS0xLjMtMi4zLTJjLS4yLS4yLS41LS40LS43LS43Yy0xNC4xLTE0LjEtMjIuNS02Mi45LTI1LjUtODQuNGMtLjgtNS40IDMuNy05LjkgOS05YzEgLjEgMi4yIC4zIDMuMyAuNWM4LjIgMS4yIDE5LjIgMyAzMC42IDUuNWMyMC40IDQuNCA0MS45IDEwLjkgNTAuNSAxOS42YzE4LjQgMTguNCAxOCA0OC41LS43IDY3LjJjLTE3LjcgMTcuNy00NS43IDE5LTY0LjIgMy40em0tOTAuMS05LjdjNS0xMS44LTctMjIuNS0xOS4zLTE4LjdjLTM5LjcgMTIuMi04NC41IDE5LTEzMS44IDE5cy05Mi4xLTYuOC0xMzEuOC0xOWMtMTIuMy0zLjgtMjQuMyA2LjktMTkuMyAxOC43YzI1IDU5LjEgODMuMiAxMDAuNSAxNTEuMSAxMDAuNXMxMjYuMi00MS40IDE1MS4xLTEwMC41ek0yODEuNiAyMjguOGwwIDAgMCAwIDAgMGMyLjEgMi44IDUuNyAzLjkgOC45IDIuOHM1LjUtNC4xIDUuNS03LjZjMC0xNy45LTYuNy0zNS42LTE2LjYtNDguOGMtOS44LTEzLTIzLjktMjMuMi0zOS40LTIzLjJzLTI5LjYgMTAuMi0zOS40IDIzLjJDMTkwLjcgMTg4LjQgMTg0IDIwNi4xIDE4NCAyMjRjMCAzLjQgMi4yIDYuNSA1LjUgNy42czYuOSAwIDguOS0yLjhsMCAwIDAgMCAwIDAgLjItLjJjLjItLjIgLjQtLjUgLjctLjljLjYtLjggMS42LTIgMi44LTMuNGMyLjUtMi44IDYtNi42IDEwLjItMTAuM2M4LjgtNy44IDE4LjgtMTQgMjcuNy0xNHMxOC45IDYuMiAyNy43IDE0YzQuMiAzLjcgNy43IDcuNSAxMC4yIDEwLjNjMS4yIDEuNCAyLjIgMi42IDIuOCAzLjRjLjMgLjQgLjYgLjcgLjcgLjlsLjIgLjIgMCAwem0xNjAgMGwwIDAgMCAwYzIuMSAyLjggNS43IDMuOSA4LjkgMi44czUuNS00LjEgNS41LTcuNmMwLTE3LjktNi43LTM1LjYtMTYuNi00OC44Yy05LjgtMTMtMjMuOS0yMy4yLTM5LjQtMjMuMnMtMjkuNiAxMC4yLTM5LjQgMjMuMkMzNTAuNyAxODguNCAzNDQgMjA2LjEgMzQ0IDIyNGMwIDMuNCAyLjIgNi41IDUuNSA3LjZzNi45IDAgOC45LTIuOGwwIDAgMCAwIDAgMCAuMi0uMmMuMi0uMiAuNC0uNSAuNy0uOWMuNi0uOCAxLjYtMiAyLjgtMy40YzIuNS0yLjggNi02LjYgMTAuMi0xMC4zYzguOC03LjggMTguOC0xNCAyNy43LTE0czE4LjkgNi4yIDI3LjcgMTRjNC4yIDMuNyA3LjcgNy41IDEwLjIgMTAuM2MxLjIgMS40IDIuMiAyLjYgMi44IDMuNGMuMyAuNCAuNiAuNyAuNyAuOWwuMiAuMiAwIDAgMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlR3JpblRvbmd1ZVNxdWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NkMwIDM2OC45IDczLjEgNDY0LjcgMTc0LjUgNDk4LjhDMTY1LjMgNDg0IDE2MCA0NjYuNiAxNjAgNDQ4VjQwMC43Yy0yNC0xNy41LTQzLjEtNDEuNC01NC44LTY5LjJjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5YzEyLjMtMy44IDI0LjMgNi45IDE5LjMgMTguN2MtMTEuOCAyOC0zMS4xIDUyLTU1LjQgNjkuNlY0NDhjMCAxOC42LTUuMyAzNi0xNC41IDUwLjhDNDM4LjkgNDY0LjcgNTEyIDM2OC45IDUxMiAyNTZDNTEyIDExNC42IDM5Ny40IDAgMjU2IDBTMCAxMTQuNiAwIDI1NnpNMTE2IDE0MS4xYzAtOSA5LjYtMTQuNyAxNy41LTEwLjVsODkuOSA0Ny45YzEwLjcgNS43IDEwLjcgMjEuMSAwIDI2LjhsLTg5LjkgNDcuOWMtNy45IDQuMi0xNy41LTEuNS0xNy41LTEwLjVjMC0yLjggMS01LjUgMi44LTcuNmwzNi00My4yLTM2LTQzLjJjLTEuOC0yLjEtMi44LTQuOC0yLjgtNy42em0yNjIuNS0xMC41YzcuOS00LjIgMTcuNSAxLjUgMTcuNSAxMC41YzAgMi44LTEgNS41LTIuOCA3LjZsLTM2IDQzLjIgMzYgNDMuMmMxLjggMi4xIDIuOCA0LjggMi44IDcuNmMwIDktOS42IDE0LjctMTcuNSAxMC41bC04OS45LTQ3LjljLTEwLjctNS43LTEwLjctMjEuMSAwLTI2LjhsODkuOS00Ny45ek0zMjAgNDQ4VjQwMi42YzAtMTQuNy0xMS45LTI2LjYtMjYuNi0yNi42aC0yYy0xMS4zIDAtMjEuMSA3LjktMjMuNiAxOC45Yy0yLjggMTIuNi0yMC44IDEyLjYtMjMuNiAwYy0yLjUtMTEuMS0xMi4zLTE4LjktMjMuNi0xOC45aC0yYy0xNC43IDAtMjYuNiAxMS45LTI2LjYgMjYuNlY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUdyaW5Ub25ndWVXaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NC41IDQ5OC44QzczLjEgNDY0LjcgMCAzNjguOSAwIDI1NkMwIDExNC42IDExNC42IDAgMjU2IDBTNTEyIDExNC42IDUxMiAyNTZjMCAxMTIuOS03My4xIDIwOC43LTE3NC41IDI0Mi44QzM0Ni43IDQ4NCAzNTIgNDY2LjYgMzUyIDQ0OFY0MDEuMWMyNC4zLTE3LjUgNDMuNi00MS42IDU1LjQtNjkuNmM1LTExLjgtNy0yMi41LTE5LjMtMTguN2MtMzkuNyAxMi4yLTg0LjUgMTktMTMxLjggMTlzLTkyLjEtNi44LTEzMS44LTE5Yy0xMi4zLTMuOC0yNC4zIDYuOS0xOS4zIDE4LjdjMTEuNyAyNy44IDMwLjggNTEuNyA1NC44IDY5LjJWNDQ4YzAgMTguNiA1LjMgMzYgMTQuNSA1MC44em0yMC43LTI2NS4yYzUuMyA3LjEgMTUuMyA4LjUgMjIuNCAzLjJzOC41LTE1LjMgMy4yLTIyLjRjLTMwLjQtNDAuNS05MS4yLTQwLjUtMTIxLjYgMGMtNS4zIDcuMS0zLjkgMTcuMSAzLjIgMjIuNHMxNy4xIDMuOSAyMi40LTMuMmMxNy42LTIzLjUgNTIuOC0yMy41IDcwLjQgMHpNMzM2IDI3MmE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHpNMzIwIDQwMi42VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NHMtNjQtMjguNy02NC02NFY0MDIuNmMwLTE0LjcgMTEuOS0yNi42IDI2LjYtMjYuNmgyYzExLjMgMCAyMS4xIDcuOSAyMy42IDE4LjljMi44IDEyLjYgMjAuOCAxMi42IDIzLjYgMGMyLjUtMTEuMSAxMi4zLTE4LjkgMjMuNi0xOC45aDJjMTQuNyAwIDI2LjYgMTEuOSAyNi42IDI2LjZ6TTMzNiAxODRhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlR3JpblRvbmd1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NkMwIDM2OC45IDczLjEgNDY0LjcgMTc0LjUgNDk4LjhDMTY1LjMgNDg0IDE2MCA0NjYuNiAxNjAgNDQ4VjQwMC43Yy0yNC0xNy41LTQzLjEtNDEuNC01NC44LTY5LjJjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5YzEyLjMtMy44IDI0LjMgNi45IDE5LjMgMTguN2MtMTEuOCAyOC0zMS4xIDUyLTU1LjQgNjkuNlY0NDhjMCAxOC42LTUuMyAzNi0xNC41IDUwLjhDNDM4LjkgNDY0LjcgNTEyIDM2OC45IDUxMiAyNTZDNTEyIDExNC42IDM5Ny40IDAgMjU2IDBTMCAxMTQuNiAwIDI1NnptMTc2LjQtODBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMzIwIDQ0OFY0MDIuNmMwLTE0LjctMTEuOS0yNi42LTI2LjYtMjYuNmgtMmMtMTEuMyAwLTIxLjEgNy45LTIzLjYgMTguOWMtMi44IDEyLjYtMjAuOCAxMi42LTIzLjYgMGMtMi41LTExLjEtMTIuMy0xOC45LTIzLjYtMTguOWgtMmMtMTQuNyAwLTI2LjYgMTEuOS0yNi42IDI2LjZWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluV2lkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzg4LjEgMzEyLjhjMTIuMy0zLjggMjQuMyA2LjkgMTkuMyAxOC43QzM4Mi40IDM5MC42IDMyNC4yIDQzMiAyNTYuMyA0MzJzLTEyNi4yLTQxLjQtMTUxLjEtMTAwLjVjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5ek0yMDggMTkyYzAgMzUuMy0xNC4zIDY0LTMyIDY0cy0zMi0yOC43LTMyLTY0czE0LjMtNjQgMzItNjRzMzIgMjguNyAzMiA2NHptMTI4IDY0Yy0xNy43IDAtMzItMjguNy0zMi02NHMxNC4zLTY0IDMyLTY0czMyIDI4LjcgMzIgNjRzLTE0LjMgNjQtMzIgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VHcmluV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzg4LjEgMzEyLjhjMTIuMy0zLjggMjQuMyA2LjkgMTkuMyAxOC43QzM4Mi40IDM5MC42IDMyNC4yIDQzMiAyNTYuMyA0MzJzLTEyNi4yLTQxLjQtMTUxLjEtMTAwLjVjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5em0tMTYuOS03OS4yYy0xNy42LTIzLjUtNTIuOC0yMy41LTcwLjQgMGMtNS4zIDcuMS0xNS4zIDguNS0yMi40IDMuMnMtOC41LTE1LjMtMy4yLTIyLjRjMzAuNC00MC41IDkxLjItNDAuNSAxMjEuNiAwYzUuMyA3LjEgMy45IDE3LjEtMy4yIDIyLjRzLTE3LjEgMy45LTIyLjQtMy4yek0xNzYuNCAxNzZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlR3JpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzg4LjEgMzEyLjhjMTIuMy0zLjggMjQuMyA2LjkgMTkuMyAxOC43QzM4Mi40IDM5MC42IDMyNC4yIDQzMiAyNTYuMyA0MzJzLTEyNi4yLTQxLjQtMTUxLjEtMTAwLjVjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5ek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUtpc3NCZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyem00OC43LTE5OC4zYzQuMyA1LjEgNy4zIDExLjQgNy4zIDE4LjNzLTMuMSAxMy4yLTcuMyAxOC4zYy00LjMgNS4yLTEwLjEgOS43LTE2LjcgMTMuNGMtMi43IDEuNS01LjcgMy04LjcgNC4zYzMuMSAxLjMgNiAyLjcgOC43IDQuM2M2LjYgMy43IDEyLjUgOC4yIDE2LjcgMTMuNGM0LjMgNS4xIDcuMyAxMS40IDcuMyAxOC4zcy0zLjEgMTMuMi03LjMgMTguM2MtNC4zIDUuMi0xMC4xIDkuNy0xNi43IDEzLjRDMjc0LjcgNDQzLjEgMjU3LjQgNDQ4IDI0MCA0NDhjLTMuNiAwLTYuOC0yLjUtNy43LTZzLjYtNy4yIDMuOC05bDAgMCAwIDAgMCAwIDAgMCAuMi0uMWMuMi0uMSAuNS0uMyAuOS0uNWMuOC0uNSAyLTEuMiAzLjQtMi4xYzIuOC0xLjkgNi41LTQuNSAxMC4yLTcuNmMzLjctMy4xIDcuMi02LjYgOS42LTEwLjFjMi41LTMuNSAzLjUtNi40IDMuNS04LjZzLTEtNS0zLjUtOC42Yy0yLjUtMy41LTUuOS02LjktOS42LTEwLjFjLTMuNy0zLjEtNy40LTUuNy0xMC4yLTcuNmMtMS40LS45LTIuNi0xLjYtMy40LTIuMWMtLjQtLjItLjctLjQtLjktLjVsLS4yLS4xIDAgMCAwIDAgMCAwYy0yLjUtMS40LTQuMS00LjEtNC4xLTdzMS42LTUuNiA0LjEtN2wwIDAgMCAwIDAgMCAwIDAgMCAwIC4yLS4xIC4zLS4yIC42LS40Yy44LS41IDItMS4yIDMuNC0yLjFjMi44LTEuOSA2LjUtNC41IDEwLjItNy42YzMuNy0zLjEgNy4yLTYuNiA5LjYtMTAuMWMyLjUtMy41IDMuNS02LjQgMy41LTguNnMtMS01LTMuNS04LjZjLTIuNS0zLjUtNS45LTYuOS05LjYtMTAuMWMtMy43LTMuMS03LjQtNS43LTEwLjItNy42Yy0xLjQtLjktMi42LTEuNi0zLjQtMi4xbC0uNC0uMy0uNS0uMy0uMi0uMSAwIDAgMCAwIDAgMGMtMy4yLTEuOC00LjctNS41LTMuOC05czQuMS02IDcuNy02YzE3LjQgMCAzNC43IDQuOSA0Ny45IDEyLjNjNi42IDMuNyAxMi41IDguMiAxNi43IDEzLjR6bS04Ny4xLTg0LjlsMCAwIDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMHptMTYwIDBsMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwIDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUtpc3NXaW5rSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk4IDMzOS43YzkuMS0yNi4yIDE0LTU0LjQgMTQtODMuN0M1MTIgMTE0LjYgMzk3LjQgMCAyNTYgMFMwIDExNC42IDAgMjU2UzExNC42IDUxMiAyNTYgNTEyYzM1LjQgMCA2OS4xLTcuMiA5OS43LTIwLjJjLTQuOC01LjUtOC41LTEyLjItMTAuNC0xOS43bC0yMi45LTg5LjNjLTEwLTM5IDExLjgtODAuOSA1MS44LTkyLjFjMzcuMi0xMC40IDczLjggMTAuMSA4Ny41IDQ0YzEyLjctMS42IDI1LjEgLjQgMzYuMiA1ek0yOTYgMzMyYzAgNi45LTMuMSAxMy4yLTcuMyAxOC4zYy00LjMgNS4yLTEwLjEgOS43LTE2LjcgMTMuNGMtMi43IDEuNS01LjcgMy04LjcgNC4zYzMuMSAxLjMgNiAyLjcgOC43IDQuM2M2LjYgMy43IDEyLjUgOC4yIDE2LjcgMTMuNGM0LjMgNS4xIDcuMyAxMS40IDcuMyAxOC4zcy0zLjEgMTMuMi03LjMgMTguM2MtNC4zIDUuMi0xMC4xIDkuNy0xNi43IDEzLjRDMjU4LjcgNDQzLjEgMjQxLjQgNDQ4IDIyNCA0NDhjLTMuNiAwLTYuOC0yLjUtNy43LTZzLjYtNy4yIDMuOC05bDAgMCAwIDAgMCAwIDAgMCAuMi0uMWMuMi0uMSAuNS0uMyAuOS0uNWMuOC0uNSAyLTEuMiAzLjQtMi4xYzIuOC0xLjkgNi41LTQuNSAxMC4yLTcuNmMzLjctMy4xIDcuMi02LjYgOS42LTEwLjFjMi41LTMuNSAzLjUtNi40IDMuNS04LjZzLTEtNS0zLjUtOC42Yy0yLjUtMy41LTUuOS02LjktOS42LTEwLjFjLTMuNy0zLjEtNy40LTUuNy0xMC4yLTcuNmMtMS40LS45LTIuNi0xLjYtMy40LTIuMWwtLjYtLjQtLjMtLjItLjItLjEgMCAwIDAgMCAwIDBjLTIuNS0xLjQtNC4xLTQuMS00LjEtN3MxLjYtNS42IDQuMS03bDAgMCAwIDAgMCAwIDAgMCAwIDAgLjItLjFjLjItLjEgLjUtLjMgLjktLjVjLjgtLjUgMi0xLjIgMy40LTIuMWMyLjgtMS45IDYuNS00LjUgMTAuMi03LjZjMy43LTMuMSA3LjItNi42IDkuNi0xMC4xYzIuNS0zLjUgMy41LTYuNCAzLjUtOC42cy0xLTUtMy41LTguNmMtMi41LTMuNS01LjktNi45LTkuNi0xMC4xYy0zLjctMy4xLTcuNC01LjctMTAuMi03LjZjLTEuNC0uOS0yLjYtMS42LTMuNC0yLjFjLS40LS4yLS43LS40LS45LS41bC0uMi0uMSAwIDAgMCAwIDAgMGMtMy4yLTEuOC00LjctNS41LTMuOC05czQuMS02IDcuNy02YzE3LjQgMCAzNC43IDQuOSA0Ny45IDEyLjNjNi42IDMuNyAxMi41IDguMiAxNi43IDEzLjRjNC4zIDUuMSA3LjMgMTEuNCA3LjMgMTguM3pNMTc2LjQgMTc2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTk0LjggNTcuNmMtMTcuNi0yMy41LTUyLjgtMjMuNS03MC40IDBjLTUuMyA3LjEtMTUuMyA4LjUtMjIuNCAzLjJzLTguNS0xNS4zLTMuMi0yMi40YzMwLjQtNDAuNSA5MS4yLTQwLjUgMTIxLjYgMGM1LjMgNy4xIDMuOSAxNy4xLTMuMiAyMi40cy0xNy4xIDMuOS0yMi40LTMuMnpNNDM0IDM1Mi4zYy02LTIzLjItMjguOC0zNy01MS4xLTMwLjhzLTM1LjQgMzAuMS0yOS41IDUzLjRsMjIuOSA4OS4zYzIuMiA4LjcgMTEuMiAxMy45IDE5LjggMTEuNGw4NC45LTIzLjhjMjIuMi02LjIgMzUuNC0zMC4xIDI5LjUtNTMuNHMtMjguOC0zNy01MS4xLTMwLjhsLTIwLjIgNS42LTUuNC0yMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUtpc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTQ4LjctMTk4LjNjNC4zIDUuMSA3LjMgMTEuNCA3LjMgMTguM3MtMy4xIDEzLjItNy4zIDE4LjNjLTQuMyA1LjItMTAuMSA5LjctMTYuNyAxMy40Yy0yLjcgMS41LTUuNyAzLTguNyA0LjNjMy4xIDEuMyA2IDIuNyA4LjcgNC4zYzYuNiAzLjcgMTIuNSA4LjIgMTYuNyAxMy40YzQuMyA1LjEgNy4zIDExLjQgNy4zIDE4LjNzLTMuMSAxMy4yLTcuMyAxOC4zYy00LjMgNS4yLTEwLjEgOS43LTE2LjcgMTMuNEMyNzQuNyA0NDMuMSAyNTcuNCA0NDggMjQwIDQ0OGMtMy42IDAtNi44LTIuNS03LjctNnMuNi03LjIgMy44LTlsMCAwIDAgMCAwIDAgMCAwIC4yLS4xYy4yLS4xIC41LS4zIC45LS41Yy44LS41IDItMS4yIDMuNC0yLjFjMi44LTEuOSA2LjUtNC41IDEwLjItNy42YzMuNy0zLjEgNy4yLTYuNiA5LjYtMTAuMWMyLjUtMy41IDMuNS02LjQgMy41LTguNnMtMS01LTMuNS04LjZjLTIuNS0zLjUtNS45LTYuOS05LjYtMTAuMWMtMy43LTMuMS03LjQtNS43LTEwLjItNy42Yy0xLjQtLjktMi42LTEuNi0zLjQtMi4xYy0uNC0uMi0uNy0uNC0uOS0uNWwtLjItLjEgMCAwIDAgMCAwIDBjLTIuNS0xLjQtNC4xLTQuMS00LjEtN3MxLjYtNS42IDQuMS03bDAgMCAwIDAgMCAwIDAgMCAwIDAgLjItLjEgLjMtLjIgLjYtLjRjLjgtLjUgMi0xLjIgMy40LTIuMWMyLjgtMS45IDYuNS00LjUgMTAuMi03LjZjMy43LTMuMSA3LjItNi42IDkuNi0xMC4xYzIuNS0zLjUgMy41LTYuNCAzLjUtOC42cy0xLTUtMy41LTguNmMtMi41LTMuNS01LjktNi45LTkuNi0xMC4xYy0zLjctMy4xLTcuNC01LjctMTAuMi03LjZjLTEuNC0uOS0yLjYtMS42LTMuNC0yLjFsLS40LS4zLS41LS4zLS4yLS4xIDAgMCAwIDAgMCAwYy0zLjItMS44LTQuNy01LjUtMy44LTlzNC4xLTYgNy43LTZjMTcuNCAwIDM0LjcgNC45IDQ3LjkgMTIuM2M2LjYgMy43IDEyLjUgOC4yIDE2LjcgMTMuNHpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VMYXVnaEJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTk2LjggMzE0LjFjLTMuOC0xMy43IDcuNC0yNi4xIDIxLjYtMjYuMUgzOTMuNmMxNC4yIDAgMjUuNSAxMi40IDIxLjYgMjYuMUMzOTYuMiAzODIgMzMyLjEgNDMyIDI1NiA0MzJzLTE0MC4yLTUwLTE1OS4yLTExNy45ek0yMTcuNiAyMTIuOGwwIDAgMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwem0xNjAgMGwwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDAgMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlTGF1Z2hTcXVpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTk2LjggMzE0LjFjLTMuOC0xMy43IDcuNC0yNi4xIDIxLjYtMjYuMUgzOTMuNmMxNC4yIDAgMjUuNSAxMi40IDIxLjYgMjYuMUMzOTYuMiAzODIgMzMyLjEgNDMyIDI1NiA0MzJzLTE0MC4yLTUwLTE1OS4yLTExNy45em0zNi43LTE5OS40bDg5LjkgNDcuOWMxMC43IDUuNyAxMC43IDIxLjEgMCAyNi44bC04OS45IDQ3LjljLTcuOSA0LjItMTcuNS0xLjUtMTcuNS0xMC41YzAtMi44IDEtNS41IDIuOC03LjZsMzYtNDMuMi0zNi00My4yYy0xLjgtMi4xLTIuOC00LjgtMi44LTcuNmMwLTkgOS42LTE0LjcgMTcuNS0xMC41ek0zOTYgMTI1LjFjMCAyLjgtMSA1LjUtMi44IDcuNmwtMzYgNDMuMiAzNiA0My4yYzEuOCAyLjEgMi44IDQuOCAyLjggNy42YzAgOS05LjYgMTQuNy0xNy41IDEwLjVsLTg5LjktNDcuOWMtMTAuNy01LjctMTAuNy0yMS4xIDAtMjYuOGw4OS45LTQ3LjljNy45LTQuMiAxNy41IDEuNSAxNy41IDEwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VMYXVnaFdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTk2LjggMzE0LjFjLTMuOC0xMy43IDcuNC0yNi4xIDIxLjYtMjYuMUgzOTMuNmMxNC4yIDAgMjUuNSAxMi40IDIxLjYgMjYuMUMzOTYuMiAzODIgMzMyLjEgNDMyIDI1NiA0MzJzLTE0MC4yLTUwLTE1OS4yLTExNy45ek0xNDQuNCAxOTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTU2LjQgMjUuNmMtNS4zIDcuMS0xNS4zIDguNS0yMi40IDMuMnMtOC41LTE1LjMtMy4yLTIyLjRjMzAuNC00MC41IDkxLjItNDAuNSAxMjEuNiAwYzUuMyA3LjEgMy45IDE3LjEtMy4yIDIyLjRzLTE3LjEgMy45LTIyLjQtMy4yYy0xNy42LTIzLjUtNTIuOC0yMy41LTcwLjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZUxhdWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek05Ni44IDMxNC4xYy0zLjgtMTMuNyA3LjQtMjYuMSAyMS42LTI2LjFIMzkzLjZjMTQuMiAwIDI1LjUgMTIuNCAyMS42IDI2LjFDMzk2LjIgMzgyIDMzMi4xIDQzMiAyNTYgNDMycy0xNDAuMi01MC0xNTkuMi0xMTcuOXpNMTQ0LjQgMTkyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VNZWhCbGFuayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTIwOC40LTQ4YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTEyOCAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VNZWggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE3Ni40IDE3NmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTEyOCAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek0xNjAgMzM2SDM1MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxNjBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2VSb2xsaW5nRXllcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTkyIDM2OEgzMjBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTkyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em0zMi0xNDRjMCAzNS4zLTI4LjcgNjQtNjQgNjRzLTY0LTI4LjctNjQtNjRjMC0yNiAxNS41LTQ4LjQgMzcuOC01OC40Yy0zLjcgNS4yLTUuOCAxMS42LTUuOCAxOC40YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC02LjktMi4yLTEzLjItNS44LTE4LjRDMjA4LjUgMTc1LjYgMjI0IDE5OCAyMjQgMjI0em0xMjggNjRjLTM1LjMgMC02NC0yOC43LTY0LTY0YzAtMjYgMTUuNS00OC40IDM3LjgtNTguNGMtMy43IDUuMi01LjggMTEuNi01LjggMTguNGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtNi45LTIuMi0xMy4yLTUuOC0xOC40QzQwMC41IDE3NS42IDQxNiAxOTggNDE2IDIyNGMwIDM1LjMtMjguNyA2NC02NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZVNhZENyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgNDkzLjRjLTI5LjYgMTItNjIuMSAxOC42LTk2IDE4LjZzLTY2LjQtNi42LTk2LTE4LjZWMjg4YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjQ3Ny44QzUxLjUgNDMzLjUgMCAzNTAuOCAwIDI1NkMwIDExNC42IDExNC42IDAgMjU2IDBTNTEyIDExNC42IDUxMiAyNTZjMCA5NC44LTUxLjUgMTc3LjUtMTI4IDIyMS44VjI4OGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNlY0OTMuNHpNMTk1LjIgMjMzLjZjNS4zIDcuMSAxNS4zIDguNSAyMi40IDMuMnM4LjUtMTUuMyAzLjItMjIuNGMtMzAuNC00MC41LTkxLjItNDAuNS0xMjEuNiAwYy01LjMgNy4xLTMuOSAxNy4xIDMuMiAyMi40czE3LjEgMy45IDIyLjQtMy4yYzE3LjYtMjMuNSA1Mi44LTIzLjUgNzAuNCAwem0xMjEuNiAwYzE3LjYtMjMuNSA1Mi44LTIzLjUgNzAuNCAwYzUuMyA3LjEgMTUuMyA4LjUgMjIuNCAzLjJzOC41LTE1LjMgMy4yLTIyLjRjLTMwLjQtNDAuNS05MS4yLTQwLjUtMTIxLjYgMGMtNS4zIDcuMS0zLjkgMTcuMSAzLjIgMjIuNHMxNy4xIDMuOSAyMi40LTMuMnpNMjA4IDMzNnYzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4VjMzNmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZVNhZFRlYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMEEyNTYgMjU2IDAgMSAwIDAgMjU2em0yNDAgODBjMC04LjggNy4yLTE2IDE2LTE2YzQ1IDAgODUuNiAyMC41IDExNS43IDUzLjFjNiA2LjUgNS42IDE2LjYtLjkgMjIuNnMtMTYuNiA1LjYtMjIuNi0uOWMtMjUtMjcuMS01Ny40LTQyLjktOTIuMy00Mi45Yy04LjggMC0xNi03LjItMTYtMTZ6bS04MCA4MGMtMjYuNSAwLTQ4LTIxLTQ4LTQ3YzAtMjAgMjguNi02MC40IDQxLjYtNzcuN2MzLjItNC40IDkuNi00LjQgMTIuOCAwQzE3OS42IDMwOC42IDIwOCAzNDkgMjA4IDM2OWMwIDI2LTIxLjUgNDctNDggNDd6TTM2Ny42IDIwOGEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwem0tMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZVNtaWxlQmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTY0LjEgMzI1LjVDMTgyIDM0Ni4yIDIxMi42IDM2OCAyNTYgMzY4czc0LTIxLjggOTEuOS00Mi41YzUuOC02LjcgMTUuOS03LjQgMjIuNi0xLjZzNy40IDE1LjkgMS42IDIyLjZDMzQ5LjggMzcyLjEgMzExLjEgNDAwIDI1NiA0MDBzLTkzLjgtMjcuOS0xMTYuMS01My41Yy01LjgtNi43LTUuMS0xNi44IDEuNi0yMi42czE2LjgtNS4xIDIyLjYgMS42em01My41LTk2LjdsMCAwIDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMHptMTYwIDBsMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwIDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZVNtaWxlV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTY0LjEgMzI1LjVDMTgyIDM0Ni4yIDIxMi42IDM2OCAyNTYgMzY4czc0LTIxLjggOTEuOS00Mi41YzUuOC02LjcgMTUuOS03LjQgMjIuNi0xLjZzNy40IDE1LjkgMS42IDIyLjZDMzQ5LjggMzcyLjEgMzExLjEgNDAwIDI1NiA0MDBzLTkzLjgtMjcuOS0xMTYuMS01My41Yy01LjgtNi43LTUuMS0xNi44IDEuNi0yMi42czE2LjgtNS4xIDIyLjYgMS42ek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTU2LjQgMjUuNmMtNS4zIDcuMS0xNS4zIDguNS0yMi40IDMuMnMtOC41LTE1LjMtMy4yLTIyLjRjMzAuNC00MC41IDkxLjItNDAuNSAxMjEuNiAwYzUuMyA3LjEgMy45IDE3LjEtMy4yIDIyLjRzLTE3LjEgMy45LTIyLjQtMy4yYy0xNy42LTIzLjUtNTIuOC0yMy41LTcwLjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZVNtaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNjQuMSAzMjUuNUMxODIgMzQ2LjIgMjEyLjYgMzY4IDI1NiAzNjhzNzQtMjEuOCA5MS45LTQyLjVjNS44LTYuNyAxNS45LTcuNCAyMi42LTEuNnM3LjQgMTUuOSAxLjYgMjIuNkMzNDkuOCAzNzIuMSAzMTEuMSA0MDAgMjU2IDQwMHMtOTMuOC0yNy45LTExNi4xLTUzLjVjLTUuOC02LjctNS4xLTE2LjggMS42LTIyLjZzMTYuOC01LjEgMjIuNiAxLjZ6TTE0NC40IDIwOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlU3VycHJpc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE3Ni40IDE3NmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTEyOCAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek0yNTYgMjg4YTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlVGlyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE2NC43IDMyOC43YzIyLTIyIDUzLjktNDAuNyA5MS4zLTQwLjdzNjkuMyAxOC43IDkxLjMgNDAuN2MxMS4xIDExLjEgMjAuMSAyMy40IDI2LjQgMzUuNGM2LjIgMTEuNyAxMC4zIDI0LjQgMTAuMyAzNS45YzAgNS4yLTIuNiAxMC4yLTYuOSAxMy4ycy05LjggMy43LTE0LjcgMS44bC0yMC41LTcuN2MtMjYuOS0xMC4xLTU1LjUtMTUuMy04NC4zLTE1LjNoLTMuMmMtMjguOCAwLTU3LjMgNS4yLTg0LjMgMTUuM0wxNDkuNiA0MTVjLTQuOSAxLjgtMTAuNCAxLjItMTQuNy0xLjhzLTYuOS03LjktNi45LTEzLjJjMC0xMS42IDQuMi0yNC4yIDEwLjMtMzUuOWM2LjMtMTIgMTUuMy0yNC4zIDI2LjQtMzUuNHptLTMxLjItMTgybDg5LjkgNDcuOWMxMC43IDUuNyAxMC43IDIxLjEgMCAyNi44bC04OS45IDQ3LjljLTcuOSA0LjItMTcuNS0xLjUtMTcuNS0xMC41YzAtMi44IDEtNS41IDIuOC03LjZsMzYtNDMuMi0zNi00My4yYy0xLjgtMi4xLTIuOC00LjgtMi44LTcuNmMwLTkgOS42LTE0LjcgMTcuNS0xMC41ek0zOTYgMTU3LjFjMCAyLjgtMSA1LjUtMi44IDcuNmwtMzYgNDMuMiAzNiA0My4yYzEuOCAyLjEgMi44IDQuOCAyLjggNy42YzAgOS05LjYgMTQuNy0xNy41IDEwLjVsLTg5LjktNDcuOWMtMTAuNy01LjctMTAuNy0yMS4xIDAtMjYuOGw4OS45LTQ3LjljNy45LTQuMiAxNy41IDEuNSAxNy41IDEwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTguNiAwYy0xLjcgMC0zLjQgLjEtNS4xIC41QzE2OCAxNyAxMTUuNiAxMDIuMyAxMzAuNSAxODkuM2MyLjkgMTcgOC40IDMyLjkgMTUuOSA0Ny40TDMyIDIyNEgyOS40QzEzLjIgMjI0IDAgMjM3LjIgMCAyNTMuNGMwIDEuNyAuMSAzLjQgLjUgNS4xQzE3IDM0NCAxMDIuMyAzOTYuNCAxODkuMyAzODEuNWMxNy0yLjkgMzIuOS04LjQgNDcuNC0xNS45TDIyNCA0ODB2Mi42YzAgMTYuMiAxMy4yIDI5LjQgMjkuNCAyOS40YzEuNyAwIDMuNC0uMSA1LjEtLjVDMzQ0IDQ5NSAzOTYuNCA0MDkuNyAzODEuNSAzMjIuN2MtMi45LTE3LTguNC0zMi45LTE1LjktNDcuNEw0ODAgMjg4aDIuNmMxNi4yIDAgMjkuNC0xMy4yIDI5LjQtMjkuNGMwLTEuNy0uMS0zLjQtLjUtNS4xQzQ5NSAxNjggNDA5LjcgMTE1LjYgMzIyLjcgMTMwLjVjLTE3IDIuOS0zMi45IDguNC00Ny40IDE1LjlMMjg4IDMyVjI5LjRDMjg4IDEzLjIgMjc0LjggMCAyNTguNiAwek0yNTYgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmF1Y2V0RHJpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0NGw5Ni0xMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwyNTYgODRsLTMxLTMuOS0xLS4xLTEgLjFMMTkyIDg0IDk2IDk2Qzc4LjMgOTYgNjQgODEuNyA2NCA2NHMxNC4zLTMyIDMyLTMybDk2IDEyVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0wIDIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg5NmwyMi42LTIyLjZjNi02IDE0LjEtOS40IDIyLjYtOS40SDE5MlYxMTYuMmwzMi00IDMyIDRWMTYwaDE4LjdjOC41IDAgMTYuNiAzLjQgMjIuNiA5LjRMMzIwIDE5MmgzMmM4OC40IDAgMTYwIDcxLjYgMTYwIDE2MGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0MTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMycy0xNC4zLTMyLTMyLTMySDMxNS45Yy0yMC4yIDI5LTUzLjkgNDgtOTEuOSA0OHMtNzEuNy0xOS05MS45LTQ4SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyMjR6TTQzNi44IDQyMy40YzEuOS00LjUgNi4zLTcuNCAxMS4yLTcuNHM5LjIgMi45IDExLjIgNy40bDE4LjIgNDIuNGMxLjggNC4xIDIuNyA4LjYgMi43IDEzLjFWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMydi0xLjJjMC00LjUgLjktOC45IDIuNy0xMy4xbDE4LjItNDIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmF1Y2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA5NnYxMkw5NiA5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw5Ni0xMiAzMS0zLjkgMS0uMSAxIC4xIDMxIDMuOSA5NiAxMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtOTYgMTJWOTZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ6TTMyIDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJIMTMyLjFjMjAuMiAyOSA1My45IDQ4IDkxLjkgNDhzNzEuNy0xOSA5MS45LTQ4SDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyYzAtODguNC03MS42LTE2MC0xNjAtMTYwSDMyMGwtMjIuNi0yMi42Yy02LTYtMTQuMS05LjQtMjIuNi05LjRIMjU2VjE4MC4ybC0zMi00LTMyIDRWMjI0SDE3My4zYy04LjUgMC0xNi42IDMuNC0yMi42IDkuNEwxMjggMjU2SDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDY0djk2aDY0VjY0SDM4Ni43TDQxNiA5My4zVjE2MGg2NFY5My4zYzAtMTctNi43LTMzLjMtMTguNy00NS4zTDQzMiAxOC43QzQyMCA2LjcgNDAzLjcgMCAzODYuNyAwSDE5MmMtMzUuMyAwLTY0IDI4LjctNjQgNjR6TTAgMTYwVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2NGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem00ODAgMzJIMTI4VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMyek0yNTYgMjU2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptOTYgMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMzIgOTZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0yMjQgNDE2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlYXRoZXJQb2ludGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3OC41IDIxNS42TDIzIDQ3MWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDc0LjgtNzQuOGM3LjQgNC42IDE1LjMgOC4yIDIzLjggMTAuNUMyMDAuMyA0NTIuOCAyNzAgNDU0LjUgMzM4IDQwOS40YzEyLjItOC4xIDUuOC0yNS40LTguOC0yNS40bC0xNi4xIDBjLTUuMSAwLTkuMi00LjEtOS4yLTkuMmMwLTQuMSAyLjctNy42IDYuNS04LjhsOTcuNy0yOS4zYzMuNC0xIDYuNC0zLjEgOC40LTYuMWM0LjQtNi40IDguNi0xMi45IDEyLjYtMTkuNmM2LjItMTAuMy0xLjUtMjMtMTMuNS0yM2wtMzguNiAwYy01LjEgMC05LjItNC4xLTkuMi05LjJjMC00LjEgMi43LTcuNiA2LjUtOC44bDgwLjktMjQuM2M0LjYtMS40IDguNC00LjggMTAuMi05LjNDNDk0LjUgMTYzIDUwNy44IDg2LjEgNTExLjkgMzYuOGMuOC05LjktMy0xOS42LTEwLTI2LjZzLTE2LjctMTAuOC0yNi42LTEwQzM5MS41IDcgMjI4LjUgNDAuNSAxMzcuNCAxMzEuNkM1Ny4zIDIxMS43IDU2LjcgMzAyLjMgNzEuMyAzNTYuNGMyLjEgNy45IDEyIDkuNiAxNy44IDMuOEwyNTMuNiAxOTUuOGM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMGM1LjQgNS40IDYuMSAxMy42IDIuMiAxOS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGZWF0aGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3OC41IDIxNS42TDIzIDQ3MWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDU3LTU3aDY4YzQ5LjcgMCA5Ny45LTE0LjQgMTM5LTQxYzExLjEtNy4yIDUuNS0yMy03LjgtMjNjLTUuMSAwLTkuMi00LjEtOS4yLTkuMmMwLTQuMSAyLjctNy42IDYuNS04LjhsODEtMjQuM2MyLjUtLjggNC44LTIuMSA2LjctNGwyMi40LTIyLjRjMTAuMS0xMC4xIDIuOS0yNy4zLTExLjMtMjcuM2wtMzIuMiAwYy01LjEgMC05LjItNC4xLTkuMi05LjJjMC00LjEgMi43LTcuNiA2LjUtOC44bDExMi0zMy42YzQtMS4yIDcuNC0zLjkgOS4zLTcuN0M1MDYuNCAyMDcuNiA1MTIgMTg0LjEgNTEyIDE2MGMwLTQxLTE2LjMtODAuMy00NS4zLTEwOS4zbC01LjUtNS41QzQzMi4zIDE2LjMgMzkzIDAgMzUyIDBzLTgwLjMgMTYuMy0xMDkuMyA0NS4zTDEzOSAxNDlDOTEgMTk3IDY0IDI2Mi4xIDY0IDMzMHY1NS4zTDI1My42IDE5NS44YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwYzUuNCA1LjQgNi4xIDEzLjYgMi4yIDE5Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlcnJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwSDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMmg3NS4xYzIwLjYgMCAzMS42IDI0LjMgMTguMSAzOS44TDQ1NiA5NkgxMjBMOTguOCA3MS44Qzg1LjMgNTYuMyA5Ni4zIDMyIDExNi45IDMySDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNOTYgMTI4SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMlYyODMuNWMwIDEzLjMtNC4yIDI2LjMtMTEuOSAzNy4ybC01MS40IDcxLjljLTEuOSAxLjEtMy43IDIuMi01LjUgMy41Yy0xNS41IDEwLjctMzQgMTgtNTEgMTkuOUgzNzUuNmMtMTcuMS0xLjgtMzUtOS01MC44LTE5LjljLTIyLjEtMTUuNS01MS42LTE1LjUtNzMuNyAwYy0xNC44IDEwLjItMzIuNSAxOC01MC42IDE5LjlIMTgzLjljLTE3LTEuOC0zNS42LTkuMi01MS0xOS45Yy0xLjgtMS4zLTMuNy0yLjQtNS42LTMuNUw3NS45IDMyMC43QzY4LjIgMzA5LjggNjQgMjk2LjggNjQgMjgzLjVWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0zMiA2NHY5Nkg0NDhWMTkySDEyOHpNMzA2LjUgNDIxLjlDMzI5IDQzNy40IDM1Ni41IDQ0OCAzODQgNDQ4YzI2LjkgMCA1NS4zLTEwLjggNzcuNC0yNi4xbDAgMGMxMS45LTguNSAyOC4xLTcuOCAzOS4yIDEuN2MxNC40IDExLjkgMzIuNSAyMSA1MC42IDI1LjJjMTcuMiA0IDI3LjkgMjEuMiAyMy45IDM4LjRzLTIxLjIgMjcuOS0zOC40IDIzLjljLTI0LjUtNS43LTQ0LjktMTYuNS01OC4yLTI1QzQ0OS41IDUwMS43IDQxNyA1MTIgMzg0IDUxMmMtMzEuOSAwLTYwLjYtOS45LTgwLjQtMTguOWMtNS44LTIuNy0xMS4xLTUuMy0xNS42LTcuN2MtNC41IDIuNC05LjcgNS4xLTE1LjYgNy43Yy0xOS44IDktNDguNSAxOC45LTgwLjQgMTguOWMtMzMgMC02NS41LTEwLjMtOTQuNS0yNS44Yy0xMy40IDguNC0zMy43IDE5LjMtNTguMiAyNWMtMTcuMiA0LTM0LjQtNi43LTM4LjQtMjMuOXM2LjctMzQuNCAyMy45LTM4LjRjMTguMS00LjIgMzYuMi0xMy4zIDUwLjYtMjUuMmMxMS4xLTkuNCAyNy4zLTEwLjEgMzkuMi0xLjdsMCAwQzEzNi43IDQzNy4yIDE2NS4xIDQ0OCAxOTIgNDQ4YzI3LjUgMCA1NS0xMC42IDc3LjUtMjYuMWMxMS4xLTcuOSAyNS45LTcuOSAzNyAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNMjE2IDIzMlYzMzQuMWwzMS0zMWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTcyIDcyYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtNzItNzJjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwzMSAzMVYyMzJjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek0yMTYgNDA4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjMwNS45bC0zMSAzMWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw3Mi03MmM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw3MiA3MmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC0zMS0zMVY0MDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVBdWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6bTIgMjI2LjNjMzcuMSAyMi40IDYyIDYzLjEgNjIgMTA5LjdzLTI0LjkgODcuMy02MiAxMDkuN2MtNy42IDQuNi0xNy40IDIuMS0yMi01LjRzLTIuMS0xNy40IDUuNC0yMkMyNjkuNCA0MDEuNSAyODggMzcwLjkgMjg4IDMzNnMtMTguNi02NS41LTQ2LjUtODIuM2MtNy42LTQuNi0xMC0xNC40LTUuNC0yMnMxNC40LTEwIDIyLTUuNHptLTkxLjkgMzAuOWM2IDIuNSA5LjkgOC4zIDkuOSAxNC44VjQwMGMwIDYuNS0zLjkgMTIuMy05LjkgMTQuOHMtMTIuOSAxLjEtMTcuNC0zLjVMMTEzLjQgMzc2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMzEyYzAtOC44IDcuMi0xNiAxNi0xNmgzMy40bDM1LjMtMzUuM2M0LjYtNC42IDExLjUtNS45IDE3LjQtMy41em01MSAzNC45YzYuNi01LjkgMTYuNy01LjMgMjIuNiAxLjNDMjQ5LjggMzA0LjYgMjU2IDMxOS42IDI1NiAzMzZzLTYuMiAzMS40LTE2LjMgNDIuN2MtNS45IDYuNi0xNiA3LjEtMjIuNiAxLjNzLTcuMS0xNi0xLjMtMjIuNmM1LjEtNS43IDguMS0xMy4xIDguMS0yMS4zcy0zLjEtMTUuNy04LjEtMjEuM2MtNS45LTYuNi01LjMtMTYuNyAxLjMtMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUNpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDIyNFYxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzg0djM4LjZDMzEwLjEgMjE5LjUgMjU2IDI4Ny40IDI1NiAzNjhjMCA1OS4xIDI5LjEgMTExLjMgNzMuNyAxNDMuM2MtMy4yIC41LTYuNCAuNy05LjcgLjdINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0em0zODQgNjRIMjU2VjBMMzg0IDEyOHpNMjg4IDM2OGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0yMTEuMy00My4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw0MTYgMzg1LjRsLTI4LjctMjguN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNmw0MCA0MGM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGw3Mi03MmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUNpcmNsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDIyNFYxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzg0djM4LjZDMzEwLjEgMjE5LjUgMjU2IDI4Ny40IDI1NiAzNjhjMCA1OS4xIDI5LjEgMTExLjMgNzMuNyAxNDMuM2MtMy4yIC41LTYuNCAuNy05LjcgLjdINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0em0zODQgNjRIMjU2VjBMMzg0IDEyOHptNDggOTZhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em0wIDI0MGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTAtMTkyYy04LjggMC0xNiA3LjItMTYgMTZ2ODBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyODhjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQ2lyY2xlTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI0VjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODR2MzguNkMzMTAuMSAyMTkuNSAyNTYgMjg3LjQgMjU2IDM2OGMwIDU5LjEgMjkuMSAxMTEuMyA3My43IDE0My4zYy0zLjIgLjUtNi40IC43LTkuNyAuN0g2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4ek0yODggMzY4YTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTIyNCAwYzAtOC44LTcuMi0xNi0xNi0xNkgzNjhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZINDk2YzguOCAwIDE2LTcuMiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUNpcmNsZVBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI0VjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODR2MzguNkMzMTAuMSAyMTkuNSAyNTYgMjg3LjQgMjU2IDM2OGMwIDU5LjEgMjkuMSAxMTEuMyA3My43IDE0My4zYy0zLjIgLjUtNi40IC43LTkuNyAuN0g2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4em00OCA5NmExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTE2IDgwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djQ4SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjM4NGg0OGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg0NDhWMzA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQ2lyY2xlUXVlc3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI0VjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODR2MzguNkMzMTAuMSAyMTkuNSAyNTYgMjg3LjQgMjU2IDM2OGMwIDU5LjEgMjkuMSAxMTEuMyA3My43IDE0My4zYy0zLjIgLjUtNi40IC43LTkuNyAuN0g2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4em00OCA5NmExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTAgMjQwYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpNMzY4IDMyMS42VjMyOGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2di02LjRjMC01LjMgNC4zLTkuNiA5LjYtOS42aDQwLjVjNy43IDAgMTMuOSA2LjIgMTMuOSAxMy45YzAgNS4yLTIuOSA5LjktNy40IDEyLjNsLTMyIDE2LjhjLTUuMyAyLjgtOC42IDguMi04LjYgMTQuMlYzODRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNnYtNS4xbDIzLjUtMTIuM2MxNS4xLTcuOSAyNC41LTIzLjYgMjQuNS00MC42YzAtMjUuNC0yMC42LTQ1LjktNDUuOS00NS45SDQwOS42Yy0yMyAwLTQxLjYgMTguNi00MS42IDQxLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVDaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjRWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NHYzOC42QzMxMC4xIDIxOS41IDI1NiAyODcuNCAyNTYgMzY4YzAgNTkuMSAyOS4xIDExMS4zIDczLjcgMTQzLjNjLTMuMiAuNS02LjQgLjctOS43IC43SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHptMzg0IDY0SDI1NlYwTDM4NCAxMjh6bTQ4IDk2YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptNTkuMyAxMDcuM2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNnMtMTYuNC02LjItMjIuNiAwTDQzMiAzNDUuNGwtMzYuNy0zNi43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42TDQwOS40IDM2OGwtMzYuNyAzNi43Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBMNDMyIDM5MC42bDM2LjcgMzYuN2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZMNDU0LjYgMzY4bDM2LjctMzYuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek0xNTMgMjg5bC0zMSAzMSAzMSAzMWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDcxIDMzN2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsNDgtNDhjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45ek0yNjUgMjU1bDQ4IDQ4YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC00OCA0OGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWwzMS0zMS0zMS0zMWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQ29udHJhY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek04MCA2NGg2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMCA2NGg2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptNTQuMiAyNTMuOGMtNi4xIDIwLjMtMjQuOCAzNC4yLTQ2IDM0LjJIODBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoOC4yYzcuMSAwIDEzLjMtNC42IDE1LjMtMTEuNGwxNC45LTQ5LjVjMy40LTExLjMgMTMuOC0xOS4xIDI1LjYtMTkuMXMyMi4yIDcuNyAyNS42IDE5LjFsMTEuNiAzOC42YzcuNC02LjIgMTYuOC05LjcgMjYuOC05LjdjMTUuOSAwIDMwLjQgOSAzNy41IDIzLjJsNC40IDguOEgzMDRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMjQwYy02LjEgMC0xMS42LTMuNC0xNC4zLTguOGwtOC44LTE3LjdjLTEuNy0zLjQtNS4xLTUuNS04LjgtNS41cy03LjIgMi4xLTguOCA1LjVsLTguOCAxNy43Yy0yLjkgNS45LTkuMiA5LjQtMTUuNyA4LjhzLTEyLjEtNS4xLTEzLjktMTEuM0wxNDQgMzQ5bC05LjggMzIuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUNzdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjRWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NFYzMDRIMTc2Yy0zNS4zIDAtNjQgMjguNy02NCA2NFY1MTJINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0em0zODQgNjRIMjU2VjBMMzg0IDEyOHpNMjAwIDM1MmgxNmMyMi4xIDAgNDAgMTcuOSA0MCA0MHY4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2di04YzAtNC40LTMuNi04LTgtOEgyMDBjLTQuNCAwLTggMy42LTggOHY4MGMwIDQuNCAzLjYgOCA4IDhoMTZjNC40IDAgOC0zLjYgOC04di04YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2OGMwIDIyLjEtMTcuOSA0MC00MCA0MEgyMDBjLTIyLjEgMC00MC0xNy45LTQwLTQwVjM5MmMwLTIyLjEgMTcuOS00MCA0MC00MHptMTMzLjEgMEgzNjhjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzMzLjFjLTcuMiAwLTEzLjEgNS45LTEzLjEgMTMuMWMwIDUuMiAzIDkuOSA3LjggMTJsMzcuNCAxNi42YzE2LjMgNy4yIDI2LjggMjMuNCAyNi44IDQxLjJjMCAyNC45LTIwLjIgNDUuMS00NS4xIDQ1LjFIMzA0Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDQyLjljNy4yIDAgMTMuMS01LjkgMTMuMS0xMy4xYzAtNS4yLTMtOS45LTcuOC0xMmwtMzcuNC0xNi42Yy0xNi4zLTcuMi0yNi44LTIzLjQtMjYuOC00MS4yYzAtMjQuOSAyMC4yLTQ1LjEgNDUuMS00NS4xem05OC45IDBjOC44IDAgMTYgNy4yIDE2IDE2djMxLjZjMCAyMyA1LjUgNDUuNiAxNiA2NmMxMC41LTIwLjMgMTYtNDIuOSAxNi02NlYzNjhjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYzMS42YzAgMzQuNy0xMC4zIDY4LjctMjkuNiA5Ny42bC01LjEgNy43Yy0zIDQuNS04IDcuMS0xMy4zIDcuMXMtMTAuMy0yLjctMTMuMy03LjFsLTUuMS03LjdjLTE5LjMtMjguOS0yOS42LTYyLjktMjkuNi05Ny42VjM2OGMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVFeGNlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6TTE1NS43IDI1MC4yTDE5MiAzMDIuMWwzNi4zLTUxLjljNy42LTEwLjkgMjIuNi0xMy41IDMzLjQtNS45czEzLjUgMjIuNiA1LjkgMzMuNEwyMjEuMyAzNDRsNDYuNCA2Ni4yYzcuNiAxMC45IDUgMjUuOC01LjkgMzMuNHMtMjUuOCA1LTMzLjQtNS45TDE5MiAzODUuOGwtMzYuMyA1MS45Yy03LjYgMTAuOS0yMi42IDEzLjUtMzMuNCA1LjlzLTEzLjUtMjIuNi01LjktMzMuNEwxNjIuNyAzNDRsLTQ2LjQtNjYuMmMtNy42LTEwLjktNS0yNS44IDUuOS0zMy40czI1LjgtNSAzMy40IDUuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUV4cG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjRWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NFYyODhIMjE2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDM4NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0ek0zODQgMzM2VjI4OEg0OTQuMWwtMzktMzljLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw4MCA4MGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtODAgODBjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMzktMzlIMzg0em0wLTIwOEgyNTZWMEwzODQgMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlSW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek02NCAyNTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTUyIDMyYzUuMyAwIDEwLjIgMi42IDEzLjIgNi45bDg4IDEyOGMzLjQgNC45IDMuNyAxMS4zIDEgMTYuNXMtOC4yIDguNi0xNC4yIDguNkgyMTYgMTc2IDEyOCA4MGMtNS44IDAtMTEuMS0zLjEtMTMuOS04LjFzLTIuOC0xMS4yIC4yLTE2LjFsNDgtODBjMi45LTQuOCA4LjEtNy44IDEzLjctNy44czEwLjggMi45IDEzLjcgNy44bDEyLjggMjEuNCA0OC4zLTcwLjJjMy00LjMgNy45LTYuOSAxMy4yLTYuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUltcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRIMzUyVjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg1MTJWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDE5MmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMzM2SDMwMi4xbC0zOSAzOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDgwLTgwYzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC04MC04MGMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWwzOSAzOUgxMjhWNjR6bTAgMjI0djQ4SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0SDEyOHpNNTEyIDEyOEgzODRWMEw1MTIgMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlSW52b2ljZURvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6TTY0IDgwYzAtOC44IDcuMi0xNiAxNi0xNmg2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2em0wIDY0YzAtOC44IDcuMi0xNiAxNi0xNmg2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2em0xMjggNzJjOC44IDAgMTYgNy4yIDE2IDE2djE3LjNjOC41IDEuMiAxNi43IDMuMSAyNC4xIDUuMWM4LjUgMi4zIDEzLjYgMTEgMTEuMyAxOS42cy0xMSAxMy42LTE5LjYgMTEuM2MtMTEuMS0zLTIyLTUuMi0zMi4xLTUuM2MtOC40LS4xLTE3LjQgMS44LTIzLjYgNS41Yy01LjcgMy40LTguMSA3LjMtOC4xIDEyLjhjMCAzLjcgMS4zIDYuNSA3LjMgMTAuMWM2LjkgNC4xIDE2LjYgNy4xIDI5LjIgMTAuOWwuNSAuMSAwIDAgMCAwYzExLjMgMy40IDI1LjMgNy42IDM2LjMgMTQuNmMxMi4xIDcuNiAyMi40IDE5LjcgMjIuNyAzOC4yYy4zIDE5LjMtOS42IDMzLjMtMjIuOSA0MS42Yy03LjcgNC44LTE2LjQgNy42LTI1LjEgOS4xVjQ0MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlY0MjIuMmMtMTEuMi0yLjEtMjEuNy01LjctMzAuOS04LjlsMCAwIDAgMGMtMi4xLS43LTQuMi0xLjQtNi4yLTIuMWMtOC40LTIuOC0xMi45LTExLjktMTAuMS0yMC4yczExLjktMTIuOSAyMC4yLTEwLjFjMi41IC44IDQuOCAxLjYgNy4xIDIuNGwwIDAgMCAwIDAgMGMxMy42IDQuNiAyNC42IDguNCAzNi4zIDguN2M5LjEgLjMgMTcuOS0xLjcgMjMuNy01LjNjNS4xLTMuMiA3LjktNy4zIDcuOC0xNGMtLjEtNC42LTEuOC03LjgtNy43LTExLjZjLTYuOC00LjMtMTYuNS03LjQtMjktMTEuMmwtMS42LS41IDAgMGMtMTEtMy4zLTI0LjMtNy4zLTM0LjgtMTMuN2MtMTItNy4yLTIyLjYtMTguOS0yMi43LTM3LjNjLS4xLTE5LjQgMTAuOC0zMi44IDIzLjgtNDAuNWM3LjUtNC40IDE1LjgtNy4yIDI0LjEtOC43VjIzMmMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVJbnZvaWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNODAgNjRoNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRoNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTE2IDk2SDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMyem0wIDMydjY0SDI4OFYyNTZIOTZ6TTI0MCA0MTZoNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMjQwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlTGluZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek0xMTIgMjU2SDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRIMjcyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMCA2NEgyNzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6TTE2MCAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY0OGg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDIyNHY0OGMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMzUySDExMmMtOC44IDAtMTYtNy4yLTE2LTE2VjMwNGMwLTguOCA3LjItMTYgMTYtMTZoNDhWMjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlUGRmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwTDIyNCAwbDAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDEyOCAwIDAgMTQ0LTIwOCAwYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDE0NC00OCAwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDY0em0zODQgNjRsLTEyOCAwTDI1NiAwIDM4NCAxMjh6TTE3NiAzNTJsMzIgMGMzMC45IDAgNTYgMjUuMSA1NiA1NnMtMjUuMSA1Ni01NiA1NmwtMTYgMCAwIDMyYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtNDggMC04MGMwLTguOCA3LjItMTYgMTYtMTZ6bTMyIDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0xNiAwIDAgNDggMTYgMHptOTYtODBsMzIgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0xMjhjMC04LjggNy4yLTE2IDE2LTE2em0zMiAxMjhjOC44IDAgMTYtNy4yIDE2LTE2bDAtNjRjMC04LjgtNy4yLTE2LTE2LTE2bC0xNiAwIDAgOTYgMTYgMHptODAtMTEyYzAtOC44IDcuMi0xNiAxNi0xNmw0OCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0zMiAwIDAgMzIgMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMzIgMCAwIDQ4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtNjQgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVBlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjRWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NFYyOTkuNmwtOTQuNyA5NC43Yy04LjIgOC4yLTE0IDE4LjUtMTYuOCAyOS43bC0xNSA2MC4xYy0yLjMgOS40LTEuOCAxOSAxLjQgMjcuOEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4ek01NDkuOCAyMzUuN2wxNC40IDE0LjRjMTUuNiAxNS42IDE1LjYgNDAuOSAwIDU2LjZsLTI5LjQgMjkuNC03MS03MSAyOS40LTI5LjRjMTUuNi0xNS42IDQwLjktMTUuNiA1Ni42IDB6TTMxMS45IDQxN0w0NDEuMSAyODcuOGw3MSA3MUwzODIuOSA0ODcuOWMtNC4xIDQuMS05LjIgNy0xNC45IDguNGwtNjAuMSAxNWMtNS41IDEuNC0xMS4yLS4yLTE1LjItNC4ycy01LjYtOS43LTQuMi0xNS4ybDE1LTYwLjFjMS40LTUuNiA0LjMtMTAuOCA4LjQtMTQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVBvd2VycG9pbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek0xMzYgMjQwaDY4YzQyIDAgNzYgMzQgNzYgNzZzLTM0IDc2LTc2IDc2SDE2MHYzMmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYzNjggMjY0YzAtMTMuMyAxMC43LTI0IDI0LTI0em02OCAxMDRjMTUuNSAwIDI4LTEyLjUgMjgtMjhzLTEyLjUtMjgtMjgtMjhIMTYwdjU2aDQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlUHJlc2NyaXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNMTA0IDE5Nmg3MmMzMy4xIDAgNjAgMjYuOSA2MCA2MGMwIDI1LjUtMTUuOSA0Ny4yLTM4LjMgNTUuOWw0MyA0MC4zIDMzLjgtMzFjOC4xLTcuNSAyMC44LTYuOSAyOC4zIDEuMnM2LjkgMjAuOC0xLjIgMjguM0wyNzAgMzc5LjdsMzEuNyAyOS43YzguMSA3LjYgOC41IDIwLjIgLjkgMjguM3MtMjAuMiA4LjUtMjguMyAuOWwtMzMuOS0zMS44LTM0LjkgMzJjLTguMSA3LjUtMjAuOCA2LjktMjguMy0xLjJzLTYuOS0yMC44IDEuMi0yOC4zbDMyLjYtMjkuOS02NC44LTYwLjhjLS45LS44LTEuNi0xLjctMi4zLTIuNkgxMjR2NDRjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwVjI5NiAyMTZjMC0xMSA5LTIwIDIwLTIwem03MiA4MGMxMSAwIDIwLTkgMjAtMjBzLTktMjAtMjAtMjBIMTI0djQwaDUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlU2hpZWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDIyNFYxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzg0djQ3bC05Mi44IDM3LjFjLTIxLjMgOC41LTM1LjIgMjkuMS0zNS4yIDUyYzAgNTYuNiAxOC45IDE0OCA5NC4yIDIwOC4zYy05IDQuOC0xOS4zIDcuNi0zMC4yIDcuNkg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4em0zOS4xIDk3LjdjNS43LTIuMyAxMi4xLTIuMyAxNy44IDBsMTIwIDQ4QzU3MCAyNzcuNCA1NzYgMjg2LjIgNTc2IDI5NmMwIDYzLjMtMjUuOSAxNjguOC0xMzQuOCAyMTQuMmMtNS45IDIuNS0xMi42IDIuNS0xOC41IDBDMzEzLjkgNDY0LjggMjg4IDM1OS4zIDI4OCAyOTZjMC05LjggNi0xOC42IDE1LjEtMjIuM2wxMjAtNDh6TTUyNy40IDMxMkw0MzIgMjczLjhWNDYxLjdjNjguMi0zMyA5MS41LTk5IDk1LjQtMTQ5Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVTaWduYXR1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFY0MjguN2MtMi43IDEuMS01LjQgMi04LjIgMi43bC02MC4xIDE1Yy0zIC43LTYgMS4yLTkgMS40Yy0uOSAuMS0xLjggLjItMi43IC4ySDI0MGMtNi4xIDAtMTEuNi0zLjQtMTQuMy04LjhsLTguOC0xNy43Yy0xLjctMy40LTUuMS01LjUtOC44LTUuNXMtNy4yIDIuMS04LjggNS41bC04LjggMTcuN2MtMi45IDUuOS05LjIgOS40LTE1LjcgOC44cy0xMi4xLTUuMS0xMy45LTExLjNMMTQ0IDM4MWwtOS44IDMyLjhjLTYuMSAyMC4zLTI0LjggMzQuMi00NiAzNC4ySDgwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDguMmM3LjEgMCAxMy4zLTQuNiAxNS4zLTExLjRsMTQuOS00OS41YzMuNC0xMS4zIDEzLjgtMTkuMSAyNS42LTE5LjFzMjIuMiA3LjggMjUuNiAxOS4xbDExLjYgMzguNmM3LjQtNi4yIDE2LjgtOS43IDI2LjgtOS43YzE1LjkgMCAzMC40IDkgMzcuNSAyMy4ybDQuNCA4LjhoOC45Yy0zLjEtOC44LTMuNy0xOC40LTEuNC0yNy44bDE1LTYwLjFjMi44LTExLjMgOC42LTIxLjUgMTYuOC0yOS43TDM4NCAyMDMuNlYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek01NDkuOCAxMzkuN2MtMTUuNi0xNS42LTQwLjktMTUuNi01Ni42IDBsLTI5LjQgMjkuNCA3MSA3MSAyOS40LTI5LjRjMTUuNi0xNS42IDE1LjYtNDAuOSAwLTU2LjZsLTE0LjQtMTQuNHpNMzExLjkgMzIxYy00LjEgNC4xLTcgOS4yLTguNCAxNC45bC0xNSA2MC4xYy0xLjQgNS41IC4yIDExLjIgNC4yIDE1LjJzOS43IDUuNiAxNS4yIDQuMmw2MC4xLTE1YzUuNi0xLjQgMTAuOC00LjMgMTQuOS04LjRMNTEyLjEgMjYyLjdsLTcxLTcxTDMxMS45IDMyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNNjQgMjg4YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyODh6TTMwMC45IDM5Ny45TDI1NiAzNjhWMzA0bDQ0LjktMjkuOWMyLTEuMyA0LjQtMi4xIDYuOC0yLjFjNi44IDAgMTIuMyA1LjUgMTIuMyAxMi4zVjM4Ny43YzAgNi44LTUuNSAxMi4zLTEyLjMgMTIuM2MtMi40IDAtNC44LS43LTYuOC0yLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVXYXZlZm9ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwQzYwLjcgMCAzMiAyOC43IDMyIDY0VjI4OEgxNDRjNi4xIDAgMTEuNiAzLjQgMTQuMyA4LjhMMTc2IDMzMi4ybDQ5LjctOTkuNGMyLjctNS40IDguMy04LjggMTQuMy04LjhzMTEuNiAzLjQgMTQuMyA4LjhMMjgxLjkgMjg4SDM1MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyNzJjLTYuMSAwLTExLjYtMy40LTE0LjMtOC44TDI0MCAyNzUuOGwtNDkuNyA5OS40Yy0yLjcgNS40LTguMyA4LjgtMTQuMyA4LjhzLTExLjYtMy40LTE0LjMtOC44TDEzNC4xIDMyMEgzMlY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzUyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBIOTZ6TTI4OCAwVjEyOEg0MTZMMjg4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVXb3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNMTExIDI1Ny4xbDI2LjggODkuMiAzMS42LTkwLjNjMy40LTkuNiAxMi41LTE2LjEgMjIuNy0xNi4xczE5LjMgNi40IDIyLjcgMTYuMWwzMS42IDkwLjNMMjczIDI1Ny4xYzMuOC0xMi43IDE3LjItMTkuOSAyOS45LTE2LjFzMTkuOSAxNy4yIDE2LjEgMjkuOWwtNDggMTYwYy0zIDEwLTEyIDE2LjktMjIuNCAxNy4xcy0xOS44LTYuMi0yMy4yLTE2LjFMMTkyIDMzNi42bC0zMy4zIDk1LjNjLTMuNCA5LjgtMTIuOCAxNi4zLTIzLjIgMTYuMXMtMTkuNS03LjEtMjIuNC0xNy4xbC00OC0xNjBjLTMuOC0xMi43IDMuNC0yNi4xIDE2LjEtMjkuOXMyNi4xIDMuNCAyOS45IDE2LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVaaXBwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek05NiA0OGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZ6bTAgNjRjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2em0wIDY0YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnptLTYuMyA3MS44YzMuNy0xNCAxNi40LTIzLjggMzAuOS0yMy44aDE0LjhjMTQuNSAwIDI3LjIgOS43IDMwLjkgMjMuOGwyMy41IDg4LjJjMS40IDUuNCAyLjEgMTAuOSAyLjEgMTYuNGMwIDM1LjItMjguOCA2My43LTY0IDYzLjdzLTY0LTI4LjUtNjQtNjMuN2MwLTUuNSAuNy0xMS4xIDIuMS0xNi40bDIzLjUtODguMnpNMTEyIDMzNmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI0VjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHptMzg0IDY0SDI1NlYwTDM4NCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGxEcmlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxLjQgOS40QzUzLjktMy4xIDc0LjEtMy4xIDg2LjYgOS40TDE2OCA5MC43bDUzLjEtNTMuMWMyOC4xLTI4LjEgNzMuNy0yOC4xIDEwMS44IDBMNDc0LjMgMTg5LjFjMjguMSAyOC4xIDI4LjEgNzMuNyAwIDEwMS44TDI4My45IDQ4MS40Yy0zNy41IDM3LjUtOTguMyAzNy41LTEzNS44IDBMMzAuNiAzNjMuOWMtMzcuNS0zNy41LTM3LjUtOTguMyAwLTEzNS44TDEyMi43IDEzNiA0MS40IDU0LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zem0xNzYgMjIxLjNMMTY4IDE4MS4zIDc1LjkgMjczLjRjLTQuMiA0LjItNyA5LjMtOC40IDE0LjZIMzg2LjdsNDIuMy00Mi4zYzMuMS0zLjEgMy4xLTguMiAwLTExLjNMMjc3LjcgODIuOWMtMy4xLTMuMS04LjItMy4xLTExLjMgMEwyMTMuMyAxMzZsNDkuNCA0OS40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwek01MTIgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NGMwLTI1LjIgMzIuNi03OS42IDUxLjItMTA4LjdjNi05LjQgMTkuNS05LjQgMjUuNSAwQzU0My40IDM2OC40IDU3NiA0MjIuOCA1NzYgNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg2LjYgOS40Qzc0LjEtMy4xIDUzLjktMy4xIDQxLjQgOS40cy0xMi41IDMyLjggMCA0NS4zTDEyMi43IDEzNiAzMC42IDIyOC4xYy0zNy41IDM3LjUtMzcuNSA5OC4zIDAgMTM1LjhMMTQ4LjEgNDgxLjRjMzcuNSAzNy41IDk4LjMgMzcuNSAxMzUuOCAwTDQ3NC4zIDI5MC45YzI4LjEtMjguMSAyOC4xLTczLjcgMC0xMDEuOEwzMjIuOSAzNy43Yy0yOC4xLTI4LjEtNzMuNy0yOC4xLTEwMS44IDBMMTY4IDkwLjcgODYuNiA5LjR6TTE2OCAxODEuM2w0OS40IDQ5LjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wyMTMuMyAxMzZsNTMuMS01My4xYzMuMS0zLjEgOC4yLTMuMSAxMS4zIDBMNDI5LjEgMjM0LjNjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM0wzODYuNyAyODhINjcuNWMxLjQtNS40IDQuMi0xMC40IDguNC0xNC42TDE2OCAxODEuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2ek00OCAzNjh2MzJjMCA4LjggNy4yIDE2IDE2IDE2SDk2YzguOCAwIDE2LTcuMiAxNi0xNlYzNjhjMC04LjgtNy4yLTE2LTE2LTE2SDY0Yy04LjggMC0xNiA3LjItMTYgMTZ6bTM2OC0xNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNkg0MTZ6TTQ4IDI0MHYzMmMwIDguOCA3LjIgMTYgMTYgMTZIOTZjOC44IDAgMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZINjRjLTguOCAwLTE2IDcuMi0xNiAxNnptMzY4LTE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDQxNnpNNDggMTEydjMyYzAgOC44IDcuMiAxNiAxNiAxNkg5NmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkg2NGMtOC44IDAtMTYgNy4yLTE2IDE2ek00MTYgOTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZINDE2ek0xNjAgMTI4djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMlYxMjhjMC0xNy43LTE0LjMtMzItMzItMzJIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnptMzIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzIwYzAtMTcuNy0xNC4zLTMyLTMyLTMySDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsdGVyQ2lyY2xlRG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuOSAyMi45QzEwLjUgOC45IDI0LjUgMCA0MCAwSDQ3MmMxNS41IDAgMjkuNSA4LjkgMzYuMSAyMi45czQuNiAzMC41LTUuMiA0Mi41TDM5Ni40IDE5NS42QzMxNi4yIDIxMi4xIDI1NiAyODMgMjU2IDM2OGMwIDI3LjQgNi4zIDUzLjQgMTcuNSA3Ni41Yy0xLjYtLjgtMy4yLTEuOC00LjctMi45bC02NC00OGMtOC4xLTYtMTIuOC0xNS41LTEyLjgtMjUuNlYyODguOUw5IDY1LjNDLS43IDUzLjQtMi44IDM2LjggMy45IDIyLjl6TTI4OCAzNjhhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMTIwLjgtMzIuNmMuNi0uOSAxLjgtMi4xIDQuMi0zLjRjNS4xLTIuNyAxMi41LTQuMSAxOC43LTRjOC4yIC4xIDE3LjEgMS44IDI2LjQgNC4xYzguNiAyLjEgMTcuMy0zLjEgMTkuNC0xMS43cy0zLjEtMTcuMy0xMS43LTE5LjRjLTUuNi0xLjQtMTEuNi0yLjctMTcuOS0zLjdWMjg4YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djkuNWMtNi4xIDEuMi0xMi4zIDMuMi0xOCA2LjNjLTExLjggNi4zLTIzIDE4LjQtMjEuOCAzNy4yYzEgMTYgMTEuNyAyNS4zIDIxLjYgMzAuN2M4LjggNC43IDE5LjcgNy44IDI4LjYgMTAuM2wxLjggLjVjMTAuMyAyLjkgMTcuOSA1LjIgMjMuMiA4LjNjNC41IDIuNyA0LjcgNC4yIDQuNyA1LjZjLjEgMi40LS41IDMuNy0xIDQuNWMtLjYgMS0xLjggMi4yLTQgMy4zYy00LjcgMi41LTExLjggMy44LTE4LjUgMy42Yy05LjUtLjMtMTguNS0zLjEtMjkuOS02LjhjLTEuOS0uNi0zLjgtMS4yLTUuOC0xLjhjLTguNC0yLjYtMTcuNCAyLjEtMjAgMTAuNXMyLjEgMTcuNCAxMC41IDIwYzEuNiAuNSAzLjMgMSA1IDEuNmwwIDAgMCAwYzcgMi4zIDE1LjEgNC44IDIzLjcgNi42djExLjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlY0MzguN2M2LjItMS4xIDEyLjUtMy4xIDE4LjMtNi4yYzEyLjEtNi41IDIyLjMtMTguNyAyMS43LTM2LjljLS41LTE2LjItMTAuMy0yNi4zLTIwLjUtMzIuM2MtOS40LTUuNi0yMS4yLTguOS0zMC41LTExLjVsLS4yIDBjLTEwLjQtMi45LTE4LjMtNS4yLTIzLjktOC4yYy00LjgtMi42LTQuOC00LTQuOC00LjVsMC0uMWMtLjEtMS45IC4zLTIuOSAuOC0zLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbHRlckNpcmNsZVhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuOSAyMi45QzEwLjUgOC45IDI0LjUgMCA0MCAwSDQ3MmMxNS41IDAgMjkuNSA4LjkgMzYuMSAyMi45czQuNiAzMC41LTUuMiA0Mi41TDM5Ni40IDE5NS42QzMxNi4yIDIxMi4xIDI1NiAyODMgMjU2IDM2OGMwIDI3LjQgNi4zIDUzLjQgMTcuNSA3Ni41Yy0xLjYtLjgtMy4yLTEuOC00LjctMi45bC02NC00OGMtOC4xLTYtMTIuOC0xNS41LTEyLjgtMjUuNlYyODguOUw5IDY1LjNDLS43IDUzLjQtMi44IDM2LjggMy45IDIyLjl6TTQzMiAyMjRhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em01OS4zIDEwNy4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBMNDMyIDM0NS40bC0zNi43LTM2LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZMNDA5LjQgMzY4bC0zNi43IDM2LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMEw0MzIgMzkwLjZsMzYuNyAzNi43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkw0NTQuNiAzNjhsMzYuNy0zNi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy45IDU0LjlDMTAuNSA0MC45IDI0LjUgMzIgNDAgMzJINDcyYzE1LjUgMCAyOS41IDguOSAzNi4xIDIyLjlzNC42IDMwLjUtNS4yIDQyLjVMMzIwIDMyMC45VjQ0OGMwIDEyLjEtNi44IDIzLjItMTcuNyAyOC42cy0yMy44IDQuMy0zMy41LTNsLTY0LTQ4Yy04LjEtNi0xMi44LTE1LjUtMTIuOC0yNS42VjMyMC45TDkgOTcuM0MtLjcgODUuNC0yLjggNjguOCAzLjkgNTQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmluZ2VycHJpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMjU2QzQ4IDE0MS4xIDE0MS4xIDQ4IDI1NiA0OGM2My4xIDAgMTE5LjYgMjguMSAxNTcuOCA3Mi41YzguNiAxMC4xIDIzLjggMTEuMiAzMy44IDIuNnMxMS4yLTIzLjggMi42LTMzLjhDNDAzLjMgMzQuNiAzMzMuNyAwIDI1NiAwQzExNC42IDAgMCAxMTQuNiAwIDI1NnY0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI1NnptNDU4LjUtNTIuOWMtMi43LTEzLTE1LjUtMjEuMy0yOC40LTE4LjVzLTIxLjMgMTUuNS0xOC41IDI4LjRjMi45IDEzLjkgNC41IDI4LjMgNC41IDQzLjF2NDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYyNTZjMC0xOC4xLTEuOS0zNS44LTUuNS01Mi45ek0yNTYgODBjLTE5IDAtMzcuNCAzLTU0LjUgOC42Yy0xNS4yIDUtMTguNyAyMy43LTguMyAzNS45YzcuMSA4LjMgMTguOCAxMC44IDI5LjQgNy45YzEwLjYtMi45IDIxLjgtNC40IDMzLjQtNC40YzcwLjcgMCAxMjggNTcuMyAxMjggMTI4djI0LjljMCAyNS4yLTEuNSA1MC4zLTQuNCA3NS4zYy0xLjcgMTQuNiA5LjQgMjcuOCAyNC4yIDI3LjhjMTEuOCAwIDIxLjktOC42IDIzLjMtMjAuM2MzLjMtMjcuNCA1LTU1IDUtODIuN1YyNTZjMC05Ny4yLTc4LjgtMTc2LTE3Ni0xNzZ6TTE1MC43IDE0OC43Yy05LjEtMTAuNi0yNS4zLTExLjQtMzMuOS0uNEM5My43IDE3OCA4MCAyMTUuNCA4MCAyNTZ2MjQuOWMwIDI0LjItMi42IDQ4LjQtNy44IDcxLjlDNjguOCAzNjguNCA4MC4xIDM4NCA5Ni4xIDM4NGMxMC41IDAgMTkuOS03IDIyLjItMTcuM2M2LjQtMjguMSA5LjctNTYuOCA5LjctODUuOFYyNTZjMC0yNy4yIDguNS01Mi40IDIyLjktNzMuMWM3LjItMTAuNCA4LTI0LjYtLjItMzQuMnpNMjU2IDE2MGMtNTMgMC05NiA0My05NiA5NnYyNC45YzAgMzUuOS00LjYgNzEuNS0xMy44IDEwNi4xYy0zLjggMTQuMyA2LjcgMjkgMjEuNSAyOWM5LjUgMCAxNy45LTYuMiAyMC40LTE1LjRjMTAuNS0zOSAxNS45LTc5LjIgMTUuOS0xMTkuN1YyNTZjMC0yOC43IDIzLjMtNTIgNTItNTJzNTIgMjMuMyA1MiA1MnYyNC45YzAgMzYuMy0zLjUgNzIuNC0xMC40IDEwNy45Yy0yLjcgMTMuOSA3LjcgMjcuMiAyMS44IDI3LjJjMTAuMiAwIDE5LTcgMjEtMTdjNy43LTM4LjggMTEuNi03OC4zIDExLjYtMTE4LjFWMjU2YzAtNTMtNDMtOTYtOTYtOTZ6bTI0IDk2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djI0LjljMCA1OS45LTExIDExOS4zLTMyLjUgMTc1LjJsLTUuOSAxNS4zYy00LjggMTIuNCAxLjQgMjYuMyAxMy44IDMxczI2LjMtMS40IDMxLTEzLjhsNS45LTE1LjNDMjY3LjkgNDExLjkgMjgwIDM0Ni43IDI4MCAyODAuOVYyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmVCdXJuZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ1LjcgNDguM0wzNTggMzQuNWM1LjQtNi4xIDEzLjMtOC44IDIwLjktOC45YzcuMiAwIDE0LjMgMi42IDE5LjkgNy44YzE5LjcgMTguMyAzOS44IDQzLjIgNTUgNzAuNkM0NjkgMTMxLjIgNDgwIDE2Mi4yIDQ4MCAxOTIuMkM0ODAgMjgwLjggNDA4LjcgMzUyIDMyMCAzNTJjLTg5LjYgMC0xNjAtNzEuMy0xNjAtMTU5LjhjMC0zNy4zIDE2LTczLjQgMzYuOC0xMDQuNWMyMC45LTMxLjMgNDcuNS01OSA3MC45LTgwLjJDMjczLjQgMi4zIDI4MC43LS4yIDI4OCAwYzE0LjEgLjMgMjMuOCAxMS40IDMyLjcgMjEuNmMwIDAgMCAwIDAgMGMyIDIuMyA0IDQuNiA2IDYuN2wxOSAxOS45ek0zODQgMjQwLjJjMC0zNi41LTM3LTczLTU0LjgtODguNGMtNS40LTQuNy0xMy4xLTQuNy0xOC41IDBDMjkzIDE2Ny4xIDI1NiAyMDMuNiAyNTYgMjQwLjJjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NHpNMzIgMjg4YzAtMTcuNyAxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsMCA2NCA0NDggMCAwLTY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5NmMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDMyIDUxMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwwLTk2ek0zMjAgNDgwYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMTYwLTMyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTE5MiA0ODBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJlRXh0aW5ndWlzaGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMC4zIDcuM0M1MDcuNyAxMy4zIDUxMiAyMi40IDUxMiAzMnY5NmMwIDkuNi00LjMgMTguNy0xMS43IDI0LjdzLTE3LjIgOC41LTI2LjYgNi42bC0xNjAtMzJDMzAxLjUgMTI0LjkgMjkyIDExNS43IDI4OSAxMDRIMjI0djM0LjhjMzcuOCAxOCA2NCA1Ni41IDY0IDEwMS4yVjM4NEg2NFYyNDBjMC00NC43IDI2LjItODMuMiA2NC0xMDEuMlYxMTBjLTM2LjIgMTEuMS02NiAzNi45LTgyLjMgNzAuNWMtNS44IDExLjktMjAuMiAxNi45LTMyLjEgMTEuMVMtMy4zIDE3MS40IDIuNSAxNTkuNUMyNi43IDEwOS44IDcyLjcgNzIuNiAxMjggNjAuNFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlY1Nmg2NWMzLTExLjcgMTIuNS0yMC45IDI0LjctMjMuNGwxNjAtMzJjOS40LTEuOSAxOS4xIC42IDI2LjYgNi42ek0yODggNDE2djMyYzAgMzUuMy0yOC43IDY0LTY0IDY0SDEyOGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNDE2SDI4OHpNMTc2IDk2YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlyZUZsYW1lQ3VydmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1My42IDI5LjlsMTYtMjEuM0MxNzMuNiAzLjIgMTgwIDAgMTg2LjcgMEMxOTguNCAwIDIwOCA5LjYgMjA4IDIxLjNWNDMuNWMwIDEzLjEgNS40IDI1LjcgMTQuOSAzNC43TDMwNy42IDE1OUMzNTYuNCAyMDUuNiAzODQgMjcwLjIgMzg0IDMzNy43QzM4NCA0MzQgMzA2IDUxMiAyMDkuNyA1MTJIMTkyQzg2IDUxMiAwIDQyNiAwIDMyMHYtMy44YzAtNDguOCAxOS40LTk1LjYgNTMuOS0xMzAuMWwzLjUtMy41YzQuMi00LjIgMTAtNi42IDE2LTYuNkM4NS45IDE3NiA5NiAxODYuMSA5NiAxOTguNlYyODhjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NHYtMy45YzAtMTgtNy4yLTM1LjMtMTkuOS00OGwtMzguNi0zOC42Yy0yNC0yNC0zNy41LTU2LjctMzcuNS05MC43YzAtMjcuNyA5LTU0LjggMjUuNi03Ni45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJlRmxhbWVTaW1wbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyLjUgMjU2LjVsLS43LTEuOUMzMzcuOCAxNjAuOCAyODIgNzYuNSAyMDkuMSA4LjVsLTMuMy0zQzIwMi4xIDIgMTk3LjEgMCAxOTIgMHMtMTAuMSAyLTEzLjggNS41bC0zLjMgM0MxMDIgNzYuNSA0Ni4yIDE2MC44IDEyLjIgMjU0LjZsLS43IDEuOUMzLjkgMjc3LjMgMCAyOTkuNCAwIDMyMS42QzAgNDI2LjcgODYuOCA1MTIgMTkyIDUxMnMxOTItODUuMyAxOTItMTkwLjRjMC0yMi4yLTMuOS00NC4yLTExLjUtNjUuMXptLTkwLjggNDkuNWM0LjEgOS4zIDYuMiAxOS40IDYuMiAyOS41YzAgNTMtNDMgOTYuNS05NiA5Ni41cy05Ni00My41LTk2LTk2LjVjMC0xMC4xIDIuMS0yMC4zIDYuMi0yOS41bDEuOS00LjNjMTUuOC0zNS40IDM3LjktNjcuNyA2NS4zLTk1LjFsOC45LTguOWMzLjYtMy42IDguNS01LjYgMTMuNi01LjZzMTAgMiAxMy42IDUuNmw4LjkgOC45YzI3LjQgMjcuNCA0OS42IDU5LjcgNjUuMyA5NS4xbDEuOSA0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU5LjMgNS40YzcuOC03LjMgMTkuOS03LjIgMjcuNyAuMWMyNy42IDI1LjkgNTMuNSA1My44IDc3LjcgODRjMTEtMTQuNCAyMy41LTMwLjEgMzctNDIuOWM3LjktNy40IDIwLjEtNy40IDI4IC4xYzM0LjYgMzMgNjMuOSA3Ni42IDg0LjUgMTE4YzIwLjMgNDAuOCAzMy44IDgyLjUgMzMuOCAxMTEuOUM0NDggNDA0LjIgMzQ4LjIgNTEyIDIyNCA1MTJDOTguNCA1MTIgMCA0MDQuMSAwIDI3Ni41YzAtMzguNCAxNy44LTg1LjMgNDUuNC0xMzEuN0M3My4zIDk3LjcgMTEyLjcgNDguNiAxNTkuMyA1LjR6TTIyNS43IDQxNmMyNS4zIDAgNDcuNy03IDY4LjgtMjFjNDIuMS0yOS40IDUzLjQtODguMiAyOC4xLTEzNC40Yy00LjUtOS0xNi05LjYtMjIuNS0ybC0yNS4yIDI5LjNjLTYuNiA3LjYtMTguNSA3LjQtMjQuNy0uNWMtMTYuNS0yMS00Ni01OC41LTYyLjgtNzkuOGMtNi4zLTgtMTguMy04LjEtMjQuNy0uMWMtMzMuOCA0Mi41LTUwLjggNjkuMy01MC44IDk5LjRDMTEyIDM3NS40IDE2Mi42IDQxNiAyMjUuNyA0MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpc2hGaW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3NS4yIDM4LjRjLTEwLjYtOC0yNS04LjUtMzYuMy0xLjVTMjIyIDU3LjMgMjI0LjYgNzAuM2w5LjcgNDguNmMtMTkuNCA5LTM2LjkgMTkuOS01Mi40IDMxLjVjLTE1LjMgMTEuNS0yOSAyMy45LTQwLjcgMzYuM0w0OC4xIDEzMi40Yy0xMi41LTcuMy0yOC40LTUuMy0zOC42IDQuOVMtMyAxNjMuMyA0LjIgMTc1LjlMNTAgMjU2IDQuMiAzMzYuMWMtNy4yIDEyLjYtNSAyOC40IDUuMyAzOC42czI2LjEgMTIuMiAzOC42IDQuOWw5My4xLTU0LjNjMTEuOCAxMi4zIDI1LjQgMjQuOCA0MC43IDM2LjNjMTUuNSAxMS42IDMzIDIyLjUgNTIuNCAzMS41bC05LjcgNDguNmMtMi42IDEzIDMuMSAyNi4zIDE0LjMgMzMuM3MyNS42IDYuNSAzNi4zLTEuNWw3Ny42LTU4LjJjNTQuOS00IDEwMS41LTI3IDEzNy4yLTUzLjhjMzkuMi0yOS40IDY3LjItNjQuNyA4MS42LTg5LjVjNS44LTkuOSA1LjgtMjIuMiAwLTMyLjFjLTE0LjQtMjQuOC00Mi41LTYwLjEtODEuNi04OS41Yy0zNS44LTI2LjgtODIuMy00OS44LTEzNy4yLTUzLjhMMjc1LjIgMzguNHpNMzg0IDI1NmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4MC41IDE0MS41QzIxOS43IDEwOC41IDI3Mi42IDgwIDMzNiA4MHMxMTYuMyAyOC41IDE1NS41IDYxLjVjMzkuMSAzMyA2Ni45IDcyLjQgODEgOTkuOGM0LjcgOS4yIDQuNyAyMC4xIDAgMjkuM2MtMTQuMSAyNy40LTQxLjkgNjYuOC04MSA5OS44QzQ1Mi4zIDQwMy41IDM5OS40IDQzMiAzMzYgNDMycy0xMTYuMy0yOC41LTE1NS41LTYxLjVjLTE2LjItMTMuNy0zMC41LTI4LjUtNDIuNy00My4xTDQ4LjEgMzc5LjZjLTEyLjUgNy4zLTI4LjQgNS4zLTM4LjctNC45Uy0zIDM0OC43IDQuMiAzMzYuMUw1MCAyNTYgNC4yIDE3NS45Yy03LjItMTIuNi01LTI4LjQgNS4zLTM4LjZzMjYuMS0xMi4yIDM4LjctNC45bDg5LjcgNTIuM2MxMi4yLTE0LjYgMjYuNS0yOS40IDQyLjctNDMuMXpNNDQ4IDI1NmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGFnQ2hlY2tlcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDBDNDkuNyAwIDY0IDE0LjMgNjQgMzJWNDhsNjktMTcuMmMzOC4xLTkuNSA3OC4zLTUuMSAxMTMuNSAxMi41YzQ2LjMgMjMuMiAxMDAuOCAyMy4yIDE0Ny4xIDBsOS42LTQuOEM0MjMuOCAyOC4xIDQ0OCA0My4xIDQ0OCA2Ni4xVjM0NS44YzAgMTMuMy04LjMgMjUuMy0yMC44IDMwbC0zNC43IDEzYy00Ni4yIDE3LjMtOTcuNiAxNC42LTE0MS43LTcuNGMtMzcuOS0xOS04MS4zLTIzLjctMTIyLjUtMTMuNEw2NCAzODR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDAwIDMzNCA2NCAzMkMwIDE0LjMgMTQuMyAwIDMyIDB6TTY0IDE4Ny4xbDY0LTEzLjl2NjUuNUw2NCAyNTIuNlYzMThsNDguOC0xMi4yYzUuMS0xLjMgMTAuMS0yLjQgMTUuMi0zLjNWMjM4LjdsMzguOS04LjRjOC4zLTEuOCAxNi43LTIuNSAyNS4xLTIuMWwwLTY0YzEzLjYgLjQgMjcuMiAyLjYgNDAuNCA2LjRsMjMuNiA2Ljl2NjYuN2wtNDEuNy0xMi4zYy03LjMtMi4xLTE0LjgtMy40LTIyLjMtMy44djcxLjRjMjEuOCAxLjkgNDMuMyA2LjcgNjQgMTQuNFYyNDQuMmwyMi43IDYuN2MxMy41IDQgMjcuMyA2LjQgNDEuMyA3LjRWMTk0Yy03LjgtLjgtMTUuNi0yLjMtMjMuMi00LjVsLTQwLjgtMTJ2LTYyYy0xMy0zLjgtMjUuOC04LjgtMzguMi0xNWMtOC4yLTQuMS0xNi45LTctMjUuOC04Ljh2NzIuNGMtMTMtLjQtMjYgLjgtMzguNyAzLjZMMTI4IDE3My4yVjk4TDY0IDExNHY3My4xek0zMjAgMzM1LjdjMTYuOCAxLjUgMzMuOS0uNyA1MC02LjhsMTQtNS4yVjI1MS45bC03LjkgMS44Yy0xOC40IDQuMy0zNy4zIDUuNy01Ni4xIDQuNXY3Ny40em02NC0xNDkuNFYxMTUuNGMtMjAuOSA2LjEtNDIuNCA5LjEtNjQgOS4xVjE5NGMxMy45IDEuNCAyOCAuNSA0MS43LTIuNmwyMi4zLTUuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmxhZ1VzYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAwQzQ5LjcgMCA2NCAxNC4zIDY0IDMyVjQ4bDY5LTE3LjJjMzguMS05LjUgNzguMy01LjEgMTEzLjUgMTIuNWM0Ni4zIDIzLjIgMTAwLjggMjMuMiAxNDcuMSAwbDkuNi00LjhDNDIzLjggMjguMSA0NDggNDMuMSA0NDggNjYuMXYzNi4xbC00NC43IDE2LjJjLTQyLjggMTUuNi05MCAxMy45LTEzMS42LTQuNmwtMTYuMS03LjJjLTIwLjMtOS00MS44LTE0LjctNjMuNi0xNi45djMyLjJjMTcuNCAyLjEgMzQuNCA2LjcgNTAuNiAxMy45bDE2LjEgNy4yYzQ5LjIgMjEuOSAxMDUgMjMuOCAxNTUuNiA1LjRMNDQ4IDEzNi4zdjYybC00NC43IDE2LjJjLTQyLjggMTUuNi05MCAxMy45LTEzMS42LTQuNmwtMTYuMS03LjJjLTQwLjItMTcuOS04NS0yMi41LTEyOC4xLTEzLjNMNjQgMjAzLjF2MzIuN2w3MC4yLTE1LjFjMzYuNC03LjggNzQuMy0zLjkgMTA4LjQgMTEuM2wxNi4xIDcuMmM0OS4yIDIxLjkgMTA1IDIzLjggMTU1LjYgNS40TDQ0OCAyMzIuM3Y2MmwtNDQuNyAxNi4yYy00Mi44IDE1LjYtOTAgMTMuOS0xMzEuNi00LjZsLTE2LjEtNy4yYy00MC4yLTE3LjktODUtMjIuNS0xMjguMS0xMy4zTDY0IDI5OS4xdjMyLjdsNzAuMi0xNS4xYzM2LjQtNy44IDc0LjMtMy45IDEwOC40IDExLjNsMTYuMSA3LjJjNDkuMiAyMS45IDEwNSAyMy44IDE1NS42IDUuNEw0NDggMzI4LjN2MzMuNWMwIDEzLjMtOC4zIDI1LjMtMjAuOCAzMGwtMzQuNyAxM2MtNDYuMiAxNy4zLTk3LjYgMTQuNi0xNDEuNy03LjRjLTM3LjktMTktODEuMy0yMy43LTEyMi41LTEzLjRMNjQgNDAwdjgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQxNiAzNDUuNSAzMTIuOCAyNDkuNSAyMTYuOCAxNTMuNSAxMjAuOCA2NCAzMkMwIDE0LjMgMTQuMyAwIDMyIDB6bTgwIDk2QTE2IDE2IDAgMSAwIDgwIDk2YTE2IDE2IDAgMSAwIDMyIDB6bTMyIDBhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0tMzIgNDhhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptMzIgMGExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDNjQgMTQuMyA0OS43IDAgMzIgMFMwIDE0LjMgMCAzMlY2NCAzNjggNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzUybDY0LjMtMTYuMWM0MS4xLTEwLjMgODQuNi01LjUgMTIyLjUgMTMuNGM0NC4yIDIyLjEgOTUuNSAyNC44IDE0MS43IDcuNGwzNC43LTEzYzEyLjUtNC43IDIwLjgtMTYuNiAyMC44LTMwVjY2LjFjMC0yMy0yNC4yLTM4LTQ0LjgtMjcuN2wtOS42IDQuOGMtNDYuMyAyMy4yLTEwMC44IDIzLjItMTQ3LjEgMGMtMzUuMS0xNy42LTc1LjQtMjItMTEzLjUtMTIuNUw2NCA0OFYzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmxhc2tWaWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NSAzODkuNGMtOS44IDE2LTE1IDM0LjMtMTUgNTMuMWMtMTAgMy41LTIwLjggNS41LTMyIDUuNWMtNTMgMC05Ni00My05Ni05NlY2NEMxNC4zIDY0IDAgNDkuNyAwIDMyUzE0LjMgMCAzMiAwSDk2aDY0IDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyVjMwOS45bC00OSA3OS42ek05NiA2NHY5Nmg2NFY2NEg5NnpNMzUyIDBINDgwaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyVjIxNC45TDYyOS43IDQwNi4yYzYuNyAxMC45IDEwLjMgMjMuNSAxMC4zIDM2LjRjMCAzOC4zLTMxLjEgNjkuNC02OS40IDY5LjRIMjYxLjRjLTM4LjMgMC02OS40LTMxLjEtNjkuNC02OS40YzAtMTIuOCAzLjYtMjUuNCAxMC4zLTM2LjRMMzIwIDIxNC45VjY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDMyem0zMiA2NFYyMjRjMCA1LjktMS42IDExLjctNC43IDE2LjhMMzMwLjUgMzIwaDE3MWwtNDguOC03OS4yYy0zLjEtNS00LjctMTAuOC00LjctMTYuOFY2NEgzODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAwSDE2MCAxMjhDMTEwLjMgMCA5NiAxNC4zIDk2IDMyczE0LjMgMzIgMzIgMzJWMTk2LjhjMCAxMS44LTMuMyAyMy41LTkuNSAzMy41TDEwLjMgNDA2LjJDMy42IDQxNy4yIDAgNDI5LjcgMCA0NDIuNkMwIDQ4MC45IDMxLjEgNTEyIDY5LjQgNTEySDM3OC42YzM4LjMgMCA2OS40LTMxLjEgNjkuNC02OS40YzAtMTIuOC0zLjYtMjUuNC0xMC4zLTM2LjRMMzI5LjUgMjMwLjRjLTYuMi0xMC4xLTkuNS0yMS43LTkuNS0zMy41VjY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI4OHpNMTkyIDE5Ni44VjY0aDY0VjE5Ni44YzAgMjMuNyA2LjYgNDYuOSAxOSA2Ny4xTDMwOS41IDMyMGgtMTcxTDE3MyAyNjMuOWMxMi40LTIwLjIgMTktNDMuNCAxOS02Ny4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbG9wcHlEaXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNzMuM2MwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wzNTIgNTAuN0MzNDAgMzguNyAzMjMuNyAzMiAzMDYuNyAzMkg2NHptMCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMkgyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjEyOHpNMjI0IDI4OGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmxvcmluU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTQuNyAzMmMtMzguOCAwLTczLjcgMjMuMy04OC42IDU5LjFMMTcwLjcgMjI0SDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDgwTDk4LjkgMzk2LjNjLTUgMTEuOS0xNi42IDE5LjctMjkuNSAxOS43SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY5LjNjMzguOCAwIDczLjctMjMuMyA4OC42LTU5LjFMMjEzLjMgMjg4SDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNDBsNDUuMS0xMDguM2M1LTExLjkgMTYuNi0xOS43IDI5LjUtMTkuN0gzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzE0Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbGRlckNsb3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNDgwSDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxOTJINTEyVjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NHptNjQtMzIwSDBWOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMTkyYzIwLjEgMCAzOS4xIDkuNSA1MS4yIDI1LjZsMTkuMiAyNS42YzYgOC4xIDE1LjUgMTIuOCAyNS42IDEyLjhINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb2xkZXJNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNDgwSDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgxOTJjMjAuMSAwIDM5LjEgOS41IDUxLjIgMjUuNmwxOS4yIDI1LjZjNiA4LjEgMTUuNSAxMi44IDI1LjYgMTIuOEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0ek0xODQgMjcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDMyOGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbGRlck9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODguNyAyMjMuOEwwIDM3NS44Vjk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDE4MS41YzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43bDI2LjUgMjYuNWMxMiAxMiAyOC4zIDE4LjcgNDUuMyAxOC43SDQxNmMzNS4zIDAgNjQgMjguNyA2NCA2NHYzMkgxNDRjLTIyLjggMC00My44IDEyLjEtNTUuMyAzMS44em0yNy42IDE2LjFDMTIyLjEgMjMwIDEzMi42IDIyNCAxNDQgMjI0SDU0NGMxMS41IDAgMjIgNi4xIDI3LjcgMTYuMXM1LjcgMjIuMi0uMSAzMi4xbC0xMTIgMTkyQzQ1My45IDQ3NCA0NDMuNCA0ODAgNDMyIDQ4MEgzMmMtMTEuNSAwLTIyLTYuMS0yNy43LTE2LjFzLTUuNy0yMi4yIC4xLTMyLjFsMTEyLTE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9sZGVyUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgxOTJjMjAuMSAwIDM5LjEgOS41IDUxLjIgMjUuNmwxOS4yIDI1LjZjNiA4LjEgMTUuNSAxMi44IDI1LjYgMTIuOEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2ek0yMzIgMzc2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMzEyaDY0YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDI4MFYyMDBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NjRIMTY4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDY0djY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb2xkZXJUcmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzY0IDE0LjMgNDkuNyAwIDMyIDBTMCAxNC4zIDAgMzJ2OTZWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDI1NlYzODRINjRWMTYwSDI1NlY5Nkg2NFYzMnpNMjg4IDE5MmMwIDE3LjcgMTQuMyAzMiAzMiAzMkg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJINDQ1LjNjLTguNSAwLTE2LjYtMy40LTIyLjYtOS40TDQwOS40IDkuNGMtNi02LTE0LjEtOS40LTIyLjYtOS40SDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWMTkyem0wIDI4OGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDQ0NS4zYy04LjUgMC0xNi42LTMuNC0yMi42LTkuNGwtMTMuMy0xMy4zYy02LTYtMTQuMS05LjQtMjIuNi05LjRIMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0ODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA0ODBINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MGMwLTM1LjMtMjguNy02NC02NC02NEgyODhjLTEwLjEgMC0xOS42LTQuNy0yNS42LTEyLjhMMjQzLjIgNTcuNkMyMzEuMSA0MS41IDIxMi4xIDMyIDE5MiAzMkg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTQgNTIuOEMyNDkuMyA0MC4zIDIzNy4zIDMyIDIyNCAzMnMtMjUuMyA4LjMtMzAgMjAuOEw1Ny44IDQxNkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmgtMS44bDE4LTQ4SDMwMy44bDE4IDQ4SDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzOTAuMkwyNTQgNTIuOHpNMjc5LjggMzA0SDE2OC4yTDIyNCAxNTUuMSAyNzkuOCAzMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvb3RiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny41IDI1LjRjLTEzLjUgMy4zLTI2LjQgNy4yLTM4LjYgMTEuN0MxNDIuOSA2MS42IDk2LjcgMTAzLjYgNjYgMTUzLjZjLTE4LjMgMjkuOC0zMC45IDYyLjMtMzkuMiA5NS40TDI2NC41IDQ4Ni42YzEzLjUtMy4zIDI2LjQtNy4yIDM4LjYtMTEuN2M2Ni0yNC41IDExMi4yLTY2LjUgMTQyLjktMTE2LjVjMTguMy0yOS44IDMwLjktNjIuMyAzOS4xLTk1LjNMMjQ3LjUgMjUuNHpNNDk1LjIgMjA1LjNjNi4xLTU2LjggMS40LTExMi4yLTcuNy0xNTYuNGMtMi43LTEyLjktMTMtMjIuOS0yNi4xLTI1LjFjLTU4LjItOS43LTEwOS45LTEyLTE1NS42LTcuOUw0OTUuMiAyMDUuM3pNMjA2LjEgNDk2TDE2LjggMzA2LjdjLTYuMSA1Ni44LTEuNCAxMTIuMiA3LjcgMTU2LjRjMi43IDEyLjkgMTMgMjIuOSAyNi4xIDI1LjFjNTguMiA5LjcgMTA5LjkgMTIgMTU1LjYgNy45em01NC42LTMzMS4zYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwbDY0IDY0YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBsLTY0LTY0Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnptLTQ4IDQ4YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwbDY0IDY0YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBsLTY0LTY0Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnptLTQ4IDQ4YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwbDY0IDY0YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBsLTY0LTY0Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9yd2FyZEZhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNCA0NDVjMTEuMiA1LjMgMjQuNSAzLjYgMzQuMS00LjRMMjI0IDI5Ny43VjQxNmMwIDEyLjQgNy4yIDIzLjcgMTguNCAyOXMyNC41IDMuNiAzNC4xLTQuNEw0NDggMjk3LjdWNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWOTZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjE0LjNMMjc2LjUgNzEuNGMtOS41LTcuOS0yMi44LTkuNy0zNC4xLTQuNFMyMjQgODMuNiAyMjQgOTZWMjE0LjNMNTIuNSA3MS40Yy05LjUtNy45LTIyLjgtOS43LTM0LjEtNC40UzAgODMuNiAwIDk2VjQxNmMwIDEyLjQgNy4yIDIzLjcgMTguNCAyOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9yd2FyZFN0ZXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTIuNSA0NDAuNmMtOS41IDcuOS0yMi44IDkuNy0zNC4xIDQuNFMwIDQyOC40IDAgNDE2Vjk2QzAgODMuNiA3LjIgNzIuMyAxOC40IDY3czI0LjUtMy42IDM0LjEgNC40bDE5MiAxNjBMMjU2IDI0MVY5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyNzFsLTExLjUgOS42LTE5MiAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvcndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTIuNSA0NDAuNmMtOS41IDcuOS0yMi44IDkuNy0zNC4xIDQuNFMwIDQyOC40IDAgNDE2Vjk2QzAgODMuNiA3LjIgNzIuMyAxOC40IDY3czI0LjUtMy42IDM0LjEgNC40TDIyNCAyMTQuM1YyNTZ2NDEuN0w1Mi41IDQ0MC42ek0yNTYgMzUyVjI1NiAxMjggOTZjMC0xMi40IDcuMi0yMy43IDE4LjQtMjlzMjQuNS0zLjYgMzQuMSA0LjRsMTkyIDE2MGM3LjMgNi4xIDExLjUgMTUuMSAxMS41IDI0LjZzLTQuMiAxOC41LTExLjUgMjQuNmwtMTkyIDE2MGMtOS41IDcuOS0yMi44IDkuNy0zNC4xIDQuNHMtMTguNC0xNi42LTE4LjQtMjlWMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGcmFuY1NpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgMzJDNjIuMyAzMiA0OCA0Ni4zIDQ4IDY0VjIyNHY5NkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0OHY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGg4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxMTJWMjU2SDI1NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxMTJWOTZIMjg4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGcm9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCAzMmM0MS43IDAgNzUuOSAzMS44IDc5LjcgNzIuNWw4NS42IDI2LjNjMjUuNCA3LjggNDIuOCAzMS4zIDQyLjggNTcuOWMwIDIxLjgtMTEuNyA0MS45LTMwLjcgNTIuN0w0MDAuOCAzMjMuNSA0OTMuMyA0MTZINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQ4MGMtOC41IDAtMTYuNi0zLjQtMjIuNi05LjRMMzQ2LjkgMzYwLjJjMTEuNy0zNiAzLjItNzcuMS0yNS40LTEwNS43Yy00MC42LTQwLjYtMTA2LjMtNDAuNi0xNDYuOS0uMUwxMDEgMzI0LjRjLTYuNCA2LjEtNi43IDE2LjItLjYgMjIuNnMxNi4yIDYuNiAyMi42IC42bDczLjgtNzAuMiAuMS0uMSAuMS0uMWMzLjUtMy41IDcuMy02LjYgMTEuMy05LjJjMjcuOS0xOC41IDY1LjktMTUuNCA5MC41IDkuMmMyNC43IDI0LjcgMjcuNyA2Mi45IDkgOTAuOWMtMi42IDMuOC01LjYgNy41LTkgMTAuOUwyNjEuOCA0MTZIMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NEMwIDI0OS42IDEyNyAxMTIuOSAyODkuMyA5Ny41QzI5Ni4yIDYwLjIgMzI4LjggMzIgMzY4IDMyem0wIDEwNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZ1dGJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTcuMyAzNjAuMWwtNzEuNi00LjhjLTUuMi0uMy0xMC4zIDEuMS0xNC41IDQuMnMtNy4yIDcuNC04LjQgMTIuNWwtMTcuNiA2OS42QzI4OS41IDQ0NS44IDI3MyA0NDggMjU2IDQ0OHMtMzMuNS0yLjItNDkuMi02LjRMMTg5LjIgMzcyYy0xLjMtNS00LjMtOS40LTguNC0xMi41cy05LjMtNC41LTE0LjUtNC4ybC03MS42IDQuOGMtMTcuNi0yNy4yLTI4LjUtNTkuMi0zMC40LTkzLjZMMTI1IDIyOC4zYzQuNC0yLjggNy42LTcgOS4yLTExLjlzMS40LTEwLjItLjUtMTVsLTI2LjctNjYuNkMxMjggMTA5LjIgMTU1LjMgODkgMTg2LjcgNzYuOWw1NS4yIDQ2YzQgMy4zIDkgNS4xIDE0LjEgNS4xczEwLjItMS44IDE0LjEtNS4xbDU1LjItNDZjMzEuMyAxMi4xIDU4LjcgMzIuMyA3OS42IDU3LjlsLTI2LjcgNjYuNmMtMS45IDQuOC0yLjEgMTAuMS0uNSAxNXM0LjkgOS4xIDkuMiAxMS45bDYwLjcgMzguMmMtMS45IDM0LjQtMTIuOCA2Ni40LTMwLjQgOTMuNnpNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTE0LjEtMzI1LjdjLTguNC02LjEtMTkuOC02LjEtMjguMiAwTDE5NCAyMjFjLTguNCA2LjEtMTEuOSAxNi45LTguNyAyNi44bDE4LjMgNTYuM2MzLjIgOS45IDEyLjQgMTYuNiAyMi44IDE2LjZoNTkuMmMxMC40IDAgMTkuNi02LjcgMjIuOC0xNi42bDE4LjMtNTYuM2MzLjItOS45LS4zLTIwLjctOC43LTI2LjhsLTQ3LjktMzQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgOTZDMTM1LjYgOTYgNjQgMTY3LjYgNjQgMjU2czcxLjYgMTYwIDE2MCAxNjBjNzcuNCAwIDE0Mi01NSAxNTYuOC0xMjhIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDQwMGMyNS44IDAgNDkuNiAyMS40IDQ3LjIgNTAuNkM0MzcuOCAzODkuNiAzNDEuNCA0ODAgMjI0IDQ4MEMxMDAuMyA0ODAgMCAzNzkuNyAwIDI1NlMxMDAuMyAzMiAyMjQgMzJjNTcuNCAwIDEwOS43IDIxLjYgMTQ5LjMgNTdjMTMuMiAxMS44IDE0LjMgMzIgMi41IDQ1LjJzLTMyIDE0LjMtNDUuMiAyLjVDMzAyLjMgMTExLjQgMjY1IDk2IDIyNCA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2FtZXBhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNjRDODYgNjQgMCAxNTAgMCAyNTZTODYgNDQ4IDE5MiA0NDhINDQ4YzEwNiAwIDE5Mi04NiAxOTItMTkycy04Ni0xOTItMTkyLTE5MkgxOTJ6TTQ5NiAxNjhhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgwek0zOTIgMzA0YTQwIDQwIDAgMSAxIDgwIDAgNDAgNDAgMCAxIDEgLTgwIDB6TTE2OCAyMDBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHYzMmgzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMTZ2MzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjgwSDEzNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGgzMlYyMDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdhc1B1bXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNjRDMzIgMjguNyA2MC43IDAgOTYgMEgyNTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMjU2aDhjNDguNiAwIDg4IDM5LjQgODggODh2MzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYyMjJjLTI3LjYtNy4xLTQ4LTMyLjItNDgtNjJWOTZMMzg0IDY0Yy04LjgtOC44LTguOC0yMy4yIDAtMzJzMjMuMi04LjggMzIgMGw3Ny4zIDc3LjNjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM1YxNjh2MjQgMzJWMzc2YzAgMzkuOC0zMi4yIDcyLTcyIDcycy03Mi0zMi4yLTcyLTcyVjM0NGMwLTIyLjEtMTcuOS00MC00MC00MGgtOFY0NDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJWNjR6TTk2IDgwdjk2YzAgOC44IDcuMiAxNiAxNiAxNkgyNDBjOC44IDAgMTYtNy4yIDE2LTE2VjgwYzAtOC44LTcuMi0xNi0xNi0xNkgxMTJjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2F1Z2VIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpNMjg4IDk2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTI1NiA0MTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRjMC0xNy40LTYuOS0zMy4xLTE4LjEtNDQuNkwzNjYgMTYxLjdjNS4zLTEyLjEtLjItMjYuMy0xMi4zLTMxLjZzLTI2LjMgLjItMzEuNiAxMi4zTDI1Ny45IDI4OGMtLjYgMC0xLjMgMC0xLjkgMGMtMzUuMyAwLTY0IDI4LjctNjQgNjRzMjguNyA2NCA2NCA2NHpNMTc2IDE0NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek05NiAyODhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0zNTItMzJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2F1Z2VTaW1wbGVIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzIwIDk2YzAtMTUuOS01LjgtMzAuNC0xNS4zLTQxLjZsNzYuNi0xNDcuNGM2LjEtMTEuOCAxLjUtMjYuMy0xMC4yLTMyLjRzLTI2LjItMS41LTMyLjQgMTAuMkwyNjIuMSAyODguM2MtMi0uMi00LS4zLTYuMS0uM2MtMzUuMyAwLTY0IDI4LjctNjQgNjRzMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHYXVnZVNpbXBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTMyMCA5NmMwLTI2LjktMTYuNS00OS45LTQwLTU5LjNWODhjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWMjkyLjdjLTIzLjUgOS41LTQwIDMyLjUtNDAgNTkuM2MwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHYXVnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTMyMCA5NmMwLTI2LjktMTYuNS00OS45LTQwLTU5LjNWODhjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWMjkyLjdjLTIzLjUgOS41LTQwIDMyLjUtNDAgNTkuM2MwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0ek0xNDQgMTc2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptLTE2IDgwYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTI4OCAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTQwMCAxNDRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2F2ZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE4LjYgOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTIwIDEyMGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsMTYgMTZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsNC00TDMyNS40IDI5My40bC00IDRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE2IDE2YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDEyMC0xMjBjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTE2LTE2Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtNCA0TDMzMC42IDc0LjZsNC00YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xNi0xNnptLTE1MiAyODhjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xMTIgMTEyYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w0OCA0OGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxMTItMTEyYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xLjQtMS40TDI3MiAyODUuMyAyMjYuNyAyNDAgMTY4IDI5OC43bC0xLjQtMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NS45IDE2Ni42YzMuMiA4LjcgLjUgMTguNC02LjQgMjQuNmwtNDMuMyAzOS40YzEuMSA4LjMgMS43IDE2LjggMS43IDI1LjRzLS42IDE3LjEtMS43IDI1LjRsNDMuMyAzOS40YzYuOSA2LjIgOS42IDE1LjkgNi40IDI0LjZjLTQuNCAxMS45LTkuNyAyMy4zLTE1LjggMzQuM2wtNC43IDguMWMtNi42IDExLTE0IDIxLjQtMjIuMSAzMS4yYy01LjkgNy4yLTE1LjcgOS42LTI0LjUgNi44bC01NS43LTE3LjdjLTEzLjQgMTAuMy0yOC4yIDE4LjktNDQgMjUuNGwtMTIuNSA1Ny4xYy0yIDkuMS05IDE2LjMtMTguMiAxNy44Yy0xMy44IDIuMy0yOCAzLjUtNDIuNSAzLjVzLTI4LjctMS4yLTQyLjUtMy41Yy05LjItMS41LTE2LjItOC43LTE4LjItMTcuOGwtMTIuNS01Ny4xYy0xNS44LTYuNS0zMC42LTE1LjEtNDQtMjUuNEw4My4xIDQyNS45Yy04LjggMi44LTE4LjYgLjMtMjQuNS02LjhjLTguMS05LjgtMTUuNS0yMC4yLTIyLjEtMzEuMmwtNC43LTguMWMtNi4xLTExLTExLjQtMjIuNC0xNS44LTM0LjNjLTMuMi04LjctLjUtMTguNCA2LjQtMjQuNmw0My4zLTM5LjRDNjQuNiAyNzMuMSA2NCAyNjQuNiA2NCAyNTZzLjYtMTcuMSAxLjctMjUuNEwyMi40IDE5MS4yYy02LjktNi4yLTkuNi0xNS45LTYuNC0yNC42YzQuNC0xMS45IDkuNy0yMy4zIDE1LjgtMzQuM2w0LjctOC4xYzYuNi0xMSAxNC0yMS40IDIyLjEtMzEuMmM1LjktNy4yIDE1LjctOS42IDI0LjUtNi44bDU1LjcgMTcuN2MxMy40LTEwLjMgMjguMi0xOC45IDQ0LTI1LjRsMTIuNS01Ny4xYzItOS4xIDktMTYuMyAxOC4yLTE3LjhDMjI3LjMgMS4yIDI0MS41IDAgMjU2IDBzMjguNyAxLjIgNDIuNSAzLjVjOS4yIDEuNSAxNi4yIDguNyAxOC4yIDE3LjhsMTIuNSA1Ny4xYzE1LjggNi41IDMwLjYgMTUuMSA0NCAyNS40bDU1LjctMTcuN2M4LjgtMi44IDE4LjYtLjMgMjQuNSA2LjhjOC4xIDkuOCAxNS41IDIwLjIgMjIuMSAzMS4ybDQuNyA4LjFjNi4xIDExIDExLjQgMjIuNCAxNS44IDM0LjN6TTI1NiAzMzZhODAgODAgMCAxIDAgMC0xNjAgODAgODAgMCAxIDAgMCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdlYXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwOC41IDEzNS4zYzcuMS02LjMgOS45LTE2LjIgNi4yLTI1Yy0yLjMtNS4zLTQuOC0xMC41LTcuNi0xNS41TDMwNCA4OS40Yy0zLTUtNi4zLTkuOS05LjgtMTQuNmMtNS43LTcuNi0xNS43LTEwLjEtMjQuNy03LjFsLTI4LjIgOS4zYy0xMC43LTguOC0yMy0xNi0zNi4yLTIwLjlMMTk5IDI3LjFjLTEuOS05LjMtOS4xLTE2LjctMTguNS0xNy44QzE3My45IDguNCAxNjcuMiA4IDE2MC40IDhoLS43Yy02LjggMC0xMy41IC40LTIwLjEgMS4yYy05LjQgMS4xLTE2LjYgOC42LTE4LjUgMTcuOEwxMTUgNTYuMWMtMTMuMyA1LTI1LjUgMTIuMS0zNi4yIDIwLjlMNTAuNSA2Ny44Yy05LTMtMTktLjUtMjQuNyA3LjFjLTMuNSA0LjctNi44IDkuNi05LjkgMTQuNmwtMyA1LjNjLTIuOCA1LTUuMyAxMC4yLTcuNiAxNS42Yy0zLjcgOC43LS45IDE4LjYgNi4yIDI1bDIyLjIgMTkuOEMzMi42IDE2MS45IDMyIDE2OC45IDMyIDE3NnMuNiAxNC4xIDEuNyAyMC45TDExLjUgMjE2LjdjLTcuMSA2LjMtOS45IDE2LjItNi4yIDI1YzIuMyA1LjMgNC44IDEwLjUgNy42IDE1LjZsMyA1LjJjMyA1LjEgNi4zIDkuOSA5LjkgMTQuNmM1LjcgNy42IDE1LjcgMTAuMSAyNC43IDcuMWwyOC4yLTkuM2MxMC43IDguOCAyMyAxNiAzNi4yIDIwLjlsNi4xIDI5LjFjMS45IDkuMyA5LjEgMTYuNyAxOC41IDE3LjhjNi43IC44IDEzLjUgMS4yIDIwLjQgMS4yczEzLjctLjQgMjAuNC0xLjJjOS40LTEuMSAxNi42LTguNiAxOC41LTE3LjhsNi4xLTI5LjFjMTMuMy01IDI1LjUtMTIuMSAzNi4yLTIwLjlsMjguMiA5LjNjOSAzIDE5IC41IDI0LjctNy4xYzMuNS00LjcgNi44LTkuNSA5LjgtMTQuNmwzLjEtNS40YzIuOC01IDUuMy0xMC4yIDcuNi0xNS41YzMuNy04LjcgLjktMTguNi02LjItMjVsLTIyLjItMTkuOGMxLjEtNi44IDEuNy0xMy44IDEuNy0yMC45cy0uNi0xNC4xLTEuNy0yMC45bDIyLjItMTkuOHpNMTEyIDE3NmE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwek01MDQuNyA1MDAuNWM2LjMgNy4xIDE2LjIgOS45IDI1IDYuMmM1LjMtMi4zIDEwLjUtNC44IDE1LjUtNy42bDUuNC0zLjFjNS0zIDkuOS02LjMgMTQuNi05LjhjNy42LTUuNyAxMC4xLTE1LjcgNy4xLTI0LjdsLTkuMy0yOC4yYzguOC0xMC43IDE2LTIzIDIwLjktMzYuMmwyOS4xLTYuMWM5LjMtMS45IDE2LjctOS4xIDE3LjgtMTguNWMuOC02LjcgMS4yLTEzLjUgMS4yLTIwLjRzLS40LTEzLjctMS4yLTIwLjRjLTEuMS05LjQtOC42LTE2LjYtMTcuOC0xOC41TDU4My45IDMwN2MtNS0xMy4zLTEyLjEtMjUuNS0yMC45LTM2LjJsOS4zLTI4LjJjMy05IC41LTE5LTcuMS0yNC43Yy00LjctMy41LTkuNi02LjgtMTQuNi05LjlsLTUuMy0zYy01LTIuOC0xMC4yLTUuMy0xNS42LTcuNmMtOC43LTMuNy0xOC42LS45LTI1IDYuMmwtMTkuOCAyMi4yYy02LjgtMS4xLTEzLjgtMS43LTIwLjktMS43cy0xNC4xIC42LTIwLjkgMS43bC0xOS44LTIyLjJjLTYuMy03LjEtMTYuMi05LjktMjUtNi4yYy01LjMgMi4zLTEwLjUgNC44LTE1LjYgNy42bC01LjIgM2MtNS4xIDMtOS45IDYuMy0xNC42IDkuOWMtNy42IDUuNy0xMC4xIDE1LjctNy4xIDI0LjdsOS4zIDI4LjJjLTguOCAxMC43LTE2IDIzLTIwLjkgMzYuMkwzMTUuMSAzMTNjLTkuMyAxLjktMTYuNyA5LjEtMTcuOCAxOC41Yy0uOCA2LjctMS4yIDEzLjUtMS4yIDIwLjRzLjQgMTMuNyAxLjIgMjAuNGMxLjEgOS40IDguNiAxNi42IDE3LjggMTguNWwyOS4xIDYuMWM1IDEzLjMgMTIuMSAyNS41IDIwLjkgMzYuMmwtOS4zIDI4LjJjLTMgOS0uNSAxOSA3LjEgMjQuN2M0LjcgMy41IDkuNSA2LjggMTQuNiA5LjhsNS40IDMuMWM1IDIuOCAxMC4yIDUuMyAxNS41IDcuNmM4LjcgMy43IDE4LjYgLjkgMjUtNi4ybDE5LjgtMjIuMmM2LjggMS4xIDEzLjggMS43IDIwLjkgMS43czE0LjEtLjYgMjAuOS0xLjdsMTkuOCAyMi4yek00NjQgMzA0YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2VtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExNi43IDMzLjhjNC41LTYuMSAxMS43LTkuOCAxOS4zLTkuOEgzNzZjNy42IDAgMTQuOCAzLjYgMTkuMyA5LjhsMTEyIDE1MmM2LjggOS4yIDYuMSAyMS45LTEuNSAzMC40bC0yMzIgMjU2Yy00LjUgNS0xMSA3LjktMTcuOCA3LjlzLTEzLjItMi45LTE3LjgtNy45bC0yMzItMjU2Yy03LjctOC41LTguMy0yMS4yLTEuNS0zMC40bDExMi0xNTJ6bTM4LjUgMzkuOGMtMy4zIDIuNS00LjIgNy0yLjEgMTAuNWw1Ny40IDk1LjZMNjMuMyAxOTJjLTQuMSAuMy03LjMgMy44LTcuMyA4czMuMiA3LjYgNy4zIDhsMTkyIDE2Yy40IDAgLjkgMCAxLjMgMGwxOTItMTZjNC4xLS4zIDcuMy0zLjggNy4zLThzLTMuMi03LjYtNy4zLThMMzAxLjUgMTc5LjhsNTcuNC05NS42YzIuMS0zLjUgMS4yLTguMS0yLjEtMTAuNXMtNy45LTItMTAuNyAxTDI1NiAxNzIuMiAxNjUuOSA3NC42Yy0yLjgtMy03LjQtMy40LTEwLjctMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2VuZGVybGVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMTQ0YTExMiAxMTIgMCAxIDEgMCAyMjQgMTEyIDExMiAwIDEgMSAwLTIyNHptMCAyODhhMTc2IDE3NiAwIDEgMCAwLTM1MiAxNzYgMTc2IDAgMSAwIDAgMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHaG9zdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MC4xIDQ2Ny4xbC0xMS4yIDljLTMuMiAyLjUtNy4xIDMuOS0xMS4xIDMuOUM4IDQ4MCAwIDQ3MiAwIDQ2Mi4yVjE5MkMwIDg2IDg2IDAgMTkyIDBTMzg0IDg2IDM4NCAxOTJWNDYyLjJjMCA5LjgtOCAxNy44LTE3LjggMTcuOGMtNCAwLTcuOS0xLjQtMTEuMS0zLjlsLTExLjItOWMtMTMuNC0xMC43LTMyLjgtOS00NC4xIDMuOUwyNjkuMyA1MDZjLTMuMyAzLjgtOC4yIDYtMTMuMyA2cy05LjktMi4yLTEzLjMtNmwtMjYuNi0zMC41Yy0xMi43LTE0LjYtMzUuNC0xNC42LTQ4LjIgMEwxNDEuMyA1MDZjLTMuMyAzLjgtOC4yIDYtMTMuMyA2cy05LjktMi4yLTEzLjMtNkw4NC4yIDQ3MWMtMTEuMy0xMi45LTMwLjctMTQuNi00NC4xLTMuOXpNMTYwIDE5MmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem05NiAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkwLjUgNjguOEwyMjUuMyAxMjhIMjI0IDE1MmMtMjIuMSAwLTQwLTE3LjktNDAtNDBzMTcuOS00MCA0MC00MGgyLjJjMTQuOSAwIDI4LjggNy45IDM2LjMgMjAuOHpNNjQgODhjMCAxNC40IDMuNSAyOCA5LjYgNDBIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJINDM4LjRjNi4xLTEyIDkuNi0yNS42IDkuNi00MGMwLTQ4LjYtMzkuNC04OC04OC04OGgtMi4yYy0zMS45IDAtNjEuNSAxNi45LTc3LjcgNDQuNEwyNTYgODUuNWwtMjQuMS00MUMyMTUuNyAxNi45IDE4Ni4xIDAgMTU0LjIgMEgxNTJDMTAzLjQgMCA2NCAzOS40IDY0IDg4em0zMzYgMGMwIDIyLjEtMTcuOSA0MC00MCA0MEgyODhoLTEuM2wzNC44LTU5LjJDMzI5LjEgNTUuOSAzNDIuOSA0OCAzNTcuOCA0OEgzNjBjMjIuMSAwIDQwIDE3LjkgNDAgNDB6TTMyIDI4OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhIMjI0VjI4OEgzMnpNMjg4IDUxMkg0MzJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMjg4SDI4OFY1MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpZnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMC42IDMyQzIwNSAxOS41IDE5OC41IDUuOCAxODYgMS40UzE1OS44IDMuNSAxNTUuNCAxNkwxNDQuNyA0Ni4ybC05LjktMjkuOEMxMzAuNiAzLjggMTE3LTMgMTA0LjQgMS4yUzg1IDE5IDg5LjIgMzEuNmw4LjMgMjUtMjcuNC0yMGMtMTAuNy03LjgtMjUuNy01LjQtMzMuNSA1LjNzLTUuNCAyNS43IDUuMyAzMy41TDcwLjIgOTZINDhDMjEuNSA5NiAwIDExNy41IDAgMTQ0VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgyMDAuNmMtNS40LTkuNC04LjYtMjAuMy04LjYtMzJWMjU2YzAtMjkuOSAyMC41LTU1IDQ4LjItNjJjMS44LTMxIDE3LjEtNTguMiA0MC4xLTc2LjFDMjcxLjcgMTA0LjcgMjU2LjkgOTYgMjQwIDk2SDIxNy44bDI4LjMtMjAuNmMxMC43LTcuOCAxMy4xLTIyLjggNS4zLTMzLjVzLTIyLjgtMTMuMS0zMy41LTUuM0wxOTIuNSA1NS4xIDIwMC42IDMyek0zNjMuNSAxODUuNUwzOTMuMSAyMjRIMzQ0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNGMwLTEzLjEgMTAuOC0yNCAyNC4yLTI0YzcuNiAwIDE0LjcgMy41IDE5LjMgOS41ek0yNzIgMjAwYzAgOC40IDEuNCAxNi41IDQuMSAyNEgyNzJjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djgwSDQxNlYyNTZoMzJ2OTZINjQwVjI3MmMwLTI2LjUtMjEuNS00OC00OC00OGgtNC4xYzIuNy03LjUgNC4xLTE1LjYgNC4xLTI0YzAtMzkuOS0zMi41LTcyLTcyLjItNzJjLTIyLjQgMC00My42IDEwLjQtNTcuMyAyOC4yTDQzMiAxOTUuOGwtMzAuNS0zOS42Yy0xMy43LTE3LjgtMzUtMjguMi01Ny4zLTI4LjJjLTM5LjcgMC03Mi4yIDMyLjEtNzIuMiA3MnpNMjI0IDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0MTZWMzg0SDIyNHY4MHptMjI0IDQ4SDU5MmMyNi41IDAgNDgtMjEuNSA0OC00OFYzODRINDQ4VjUxMnptOTYtMzEyYzAgMTMuMy0xMC43IDI0LTI0IDI0SDQ3MC45bDI5LjYtMzguNWM0LjYtNS45IDExLjctOS41IDE5LjMtOS41YzEzLjQgMCAyNC4yIDEwLjkgMjQuMiAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xhc3NXYXRlckRyb3BsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMEMyMy4xIDAgMTQuNiAzLjcgOC42IDEwLjJTLS42IDI1LjQgLjEgMzQuM0wyOC45IDQzNy43YzMgNDEuOSAzNy44IDc0LjMgNzkuOCA3NC4zSDI3NS4zYzQyIDAgNzYuOC0zMi40IDc5LjgtNzQuM0wzODMuOSAzNC4zYy42LTguOS0yLjQtMTcuNi04LjUtMjQuMVMzNjAuOSAwIDM1MiAwSDMyek04MyAyOTcuNUw2Ni40IDY0SDMxNy42TDMwMSAyOTcuNSAyODggMzA0Yy0yMC4xIDEwLjEtNDMuOSAxMC4xLTY0IDBzLTQzLjktMTAuMS02NCAwcy00My45IDEwLjEtNjQgMGwtMTMtNi41ek0yNTYgMTk2YzAtMjQtMzMuNy03MC4xLTUyLjItOTMuNWMtNi4xLTcuNy0xNy41LTcuNy0yMy42IDBDMTYxLjcgMTI1LjkgMTI4IDE3MiAxMjggMTk2YzAgMzMuMSAyOC43IDYwIDY0IDYwczY0LTI2LjkgNjQtNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsYXNzV2F0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMEMyMy4xIDAgMTQuNiAzLjcgOC42IDEwLjJTLS42IDI1LjQgLjEgMzQuM0wyOC45IDQzNy43YzMgNDEuOSAzNy44IDc0LjMgNzkuOCA3NC4zSDI3NS4zYzQyIDAgNzYuOC0zMi40IDc5LjgtNzQuM0wzODMuOSAzNC4zYy42LTguOS0yLjQtMTcuNi04LjUtMjQuMVMzNjAuOSAwIDM1MiAwSDMyek03MyAxNTYuNUw2Ni40IDY0SDMxNy42TDMxMSAxNTYuNWwtMjQuMiAxMi4xYy0xOS40IDkuNy00Mi4yIDkuNy02MS42IDBjLTIwLjktMTAuNC00NS41LTEwLjQtNjYuNCAwYy0xOS40IDkuNy00Mi4yIDkuNy02MS42IDBMNzMgMTU2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsYXNzZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE4LjYgODBjLTExLjUgMC0yMS40IDcuOS0yNCAxOS4xTDU3IDI2MC4zYzIwLjUtNi4yIDQ4LjMtMTIuMyA3OC43LTEyLjNjMzIuMyAwIDYxLjggNi45IDgyLjggMTMuNWMxMC42IDMuMyAxOS4zIDYuNyAyNS40IDkuMmMzLjEgMS4zIDUuNSAyLjQgNy4zIDMuMmMuOSAuNCAxLjYgLjcgMi4xIDFsLjYgLjMgLjIgLjEgLjEgMCAwIDAgMCAwczAgMC02LjMgMTIuN2gwbDYuMy0xMi43YzUuOCAyLjkgMTAuNCA3LjMgMTMuNSAxMi43aDQwLjZjMy4xLTUuMyA3LjctOS44IDEzLjUtMTIuN2w2LjMgMTIuN2gwYy02LjMtMTIuNy02LjMtMTIuNy02LjMtMTIuN2wwIDAgMCAwIC4xIDAgLjItLjEgLjYtLjNjLjUtLjIgMS4yLS42IDIuMS0xYzEuOC0uOCA0LjItMS45IDcuMy0zLjJjNi4xLTIuNiAxNC44LTUuOSAyNS40LTkuMmMyMS02LjYgNTAuNC0xMy41IDgyLjgtMTMuNWMzMC40IDAgNTguMiA2LjEgNzguNyAxMi4zTDQ4MS40IDk5LjFjLTIuNi0xMS4yLTEyLjYtMTkuMS0yNC0xOS4xYy0zLjEgMC02LjIgLjYtOS4yIDEuOEw0MTYuOSA5NC4zYy0xMi4zIDQuOS0yNi4zLTEuMS0zMS4yLTEzLjRzMS4xLTI2LjMgMTMuNC0zMS4ybDMxLjMtMTIuNWM4LjYtMy40IDE3LjctNS4yIDI3LTUuMmMzMy44IDAgNjMuMSAyMy4zIDcwLjggNTYuMmw0My45IDE4OGMxLjcgNy4zIDIuOSAxNC43IDMuNSAyMi4xYy4zIDEuOSAuNSAzLjggLjUgNS43djYuN1YzNTJ2MTZjMCA2MS45LTUwLjEgMTEyLTExMiAxMTJINDE5LjdjLTU5LjQgMC0xMDguNS00Ni40LTExMS44LTEwNS44TDMwNi42IDM1MkgyNjkuNGwtMS4yIDIyLjJDMjY0LjkgNDMzLjYgMjE1LjggNDgwIDE1Ni4zIDQ4MEgxMTJDNTAuMSA0ODAgMCA0MjkuOSAwIDM2OFYzNTIgMzEwLjcgMzA0YzAtMS45IC4yLTMuOCAuNS01LjdjLjYtNy40IDEuOC0xNC44IDMuNS0yMi4xbDQzLjktMTg4QzU1LjUgNTUuMyA4NC44IDMyIDExOC42IDMyYzkuMiAwIDE4LjQgMS44IDI3IDUuMmwzMS4zIDEyLjVjMTIuMyA0LjkgMTguMyAxOC45IDEzLjQgMzEuMnMtMTguOSAxOC4zLTMxLjIgMTMuNEwxMjcuOCA4MS44Yy0yLjktMS4yLTYtMS44LTkuMi0xLjh6TTY0IDMyNS40VjM2OGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0NC4zYzI1LjUgMCA0Ni41LTE5LjkgNDcuOS00NS4zbDIuNS00NS42Yy0yLjMtLjgtNC45LTEuNy03LjUtMi41Yy0xNy4yLTUuNC0zOS45LTEwLjUtNjMuNi0xMC41Yy0yMy43IDAtNDYuMiA1LjEtNjMuMiAxMC41Yy0zLjEgMS01LjkgMS45LTguNSAyLjl6TTUxMiAzNjhWMzI1LjRjLTIuNi0uOS01LjUtMS45LTguNS0yLjljLTE3LTUuNC0zOS41LTEwLjUtNjMuMi0xMC41Yy0yMy43IDAtNDYuNCA1LjEtNjMuNiAxMC41Yy0yLjcgLjgtNS4yIDEuNy03LjUgMi41bDIuNSA0NS42YzEuNCAyNS40IDIyLjUgNDUuMyA0Ny45IDQ1LjNINDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbG9iZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMjU2YzAgMjIuMi0xLjIgNDMuNi0zLjMgNjRIMTYzLjNjLTIuMi0yMC40LTMuMy00MS44LTMuMy02NHMxLjItNDMuNiAzLjMtNjRIMzQ4LjdjMi4yIDIwLjQgMy4zIDQxLjggMy4zIDY0em0yOC44LTY0SDUwMy45YzUuMyAyMC41IDguMSA0MS45IDguMSA2NHMtMi44IDQzLjUtOC4xIDY0SDM4MC44YzIuMS0yMC42IDMuMi00MiAzLjItNjRzLTEuMS00My40LTMuMi02NHptMTEyLjYtMzJIMzc2LjdjLTEwLTYzLjktMjkuOC0xMTcuNC01NS4zLTE1MS42Yzc4LjMgMjAuNyAxNDIgNzcuNSAxNzEuOSAxNTEuNnptLTE0OS4xIDBIMTY3LjdjNi4xLTM2LjQgMTUuNS02OC42IDI3LTk0LjdjMTAuNS0yMy42IDIyLjItNDAuNyAzMy41LTUxLjVDMjM5LjQgMy4yIDI0OC43IDAgMjU2IDBzMTYuNiAzLjIgMjcuOCAxMy44YzExLjMgMTAuOCAyMyAyNy45IDMzLjUgNTEuNWMxMS42IDI2IDIwLjkgNTguMiAyNyA5NC43em0tMjA5IDBIMTguNkM0OC42IDg1LjkgMTEyLjIgMjkuMSAxOTAuNiA4LjRDMTY1LjEgNDIuNiAxNDUuMyA5Ni4xIDEzNS4zIDE2MHpNOC4xIDE5MkgxMzEuMmMtMi4xIDIwLjYtMy4yIDQyLTMuMiA2NHMxLjEgNDMuNCAzLjIgNjRIOC4xQzIuOCAyOTkuNSAwIDI3OC4xIDAgMjU2czIuOC00My41IDguMS02NHpNMTk0LjcgNDQ2LjZjLTExLjYtMjYtMjAuOS01OC4yLTI3LTk0LjZIMzQ0LjNjLTYuMSAzNi40LTE1LjUgNjguNi0yNyA5NC42Yy0xMC41IDIzLjYtMjIuMiA0MC43LTMzLjUgNTEuNUMyNzIuNiA1MDguOCAyNjMuMyA1MTIgMjU2IDUxMnMtMTYuNi0zLjItMjcuOC0xMy44Yy0xMS4zLTEwLjgtMjMtMjcuOS0zMy41LTUxLjV6TTEzNS4zIDM1MmMxMCA2My45IDI5LjggMTE3LjQgNTUuMyAxNTEuNkMxMTIuMiA0ODIuOSA0OC42IDQyNi4xIDE4LjYgMzUySDEzNS4zem0zNTguMSAwYy0zMCA3NC4xLTkzLjYgMTMwLjktMTcxLjkgMTUxLjZjMjUuNS0zNC4yIDQ1LjItODcuNyA1NS4zLTE1MS42SDQ5My40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb2xmQmFsbFRlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMTkyYzAgNjYuOC0zNC4xIDEyNS42LTg1LjggMTYwSDg1LjhDMzQuMSAzMTcuNiAwIDI1OC44IDAgMTkyQzAgODYgODYgMCAxOTIgMFMzODQgODYgMzg0IDE5MnpNMjQyLjEgMjU2LjZjMCAxOC41LTE1IDMzLjUtMzMuNSAzMy41Yy00LjkgMC05LjEgNS4xLTUuNCA4LjRjNS45IDUuMiAxMy43IDguNCAyMi4xIDguNGMxOC41IDAgMzMuNS0xNSAzMy41LTMzLjVjMC04LjUtMy4yLTE2LjItOC40LTIyLjFjLTMuMy0zLjctOC40IC41LTguNCA1LjR6bS01Mi4zLTQ5LjNjLTQuOSAwLTkuMSA1LjEtNS40IDguNGM1LjkgNS4yIDEzLjcgOC40IDIyLjEgOC40YzE4LjUgMCAzMy41LTE1IDMzLjUtMzMuNWMwLTguNS0zLjItMTYuMi04LjQtMjIuMWMtMy4zLTMuNy04LjQgLjUtOC40IDUuNGMwIDE4LjUtMTUgMzMuNS0zMy41IDMzLjV6bTExMy41LTE3LjVjMCAxOC41LTE1IDMzLjUtMzMuNSAzMy41Yy00LjkgMC05LjEgNS4xLTUuNCA4LjRjNS45IDUuMiAxMy43IDguNCAyMi4xIDguNGMxOC41IDAgMzMuNS0xNSAzMy41LTMzLjVjMC04LjUtMy4yLTE2LjItOC40LTIyLjFjLTMuMy0zLjctOC40IC41LTguNCA1LjR6TTk2IDQxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NCA2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyNDBjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NjRjMC04LjgtNy4yLTE2LTE2LTE2SDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvcHVyYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIwIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjR2OGg0MFYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djhoNDhWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY4aDQwVjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2OFY2NHY2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkg0MTZWMzUySDM4NFYyMjRIMzUyVjEyOEgzMjB2OTZoMzJWMzUyaDMyVjUxMkgzMDRWNDY0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4djQ4SDEyOFYzNTJoMzJWMjI0aDMyVjEyOEgxNjB2OTZIMTI4VjM1Mkg5NlY1MTJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMlYyNTZjMC0xNy43IDE0LjMtMzIgMzItMzJWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyVjY0IDMyIDI0YzAtMTMuMyAxMC43LTI0IDI0LTI0ek0yNTYgMjcyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY0OGg2NFYzMDRjMC0xNy43LTE0LjMtMzItMzItMzJ6bS0zMi04MHYzMmg2NFYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyYWR1YXRpb25DYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDMyYy04LjEgMC0xNi4xIDEuNC0yMy43IDQuMUwxNS44IDEzNy40QzYuMyAxNDAuOSAwIDE0OS45IDAgMTYwczYuMyAxOS4xIDE1LjggMjIuNmw1Ny45IDIwLjlDNTcuMyAyMjkuMyA0OCAyNTkuOCA0OCAyOTEuOXYyOC4xYzAgMjguNC0xMC44IDU3LjctMjIuMyA4MC44Yy02LjUgMTMtMTMuOSAyNS44LTIyLjUgMzcuNkMwIDQ0Mi43LS45IDQ0OC4zIC45IDQ1My40czYgOC45IDExLjIgMTAuMmw2NCAxNmM0LjIgMS4xIDguNyAuMyAxMi40LTJzNi4zLTYuMSA3LjEtMTAuNGM4LjYtNDIuOCA0LjMtODEuMi0yLjEtMTA4LjdDOTAuMyAzNDQuMyA4NiAzMjkuOCA4MCAzMTYuNVYyOTEuOWMwLTMwLjIgMTAuMi01OC43IDI3LjktODEuNWMxMi45LTE1LjUgMjkuNi0yOCA0OS4yLTM1LjdsMTU3LTYxLjdjOC4yLTMuMiAxNy41IC44IDIwLjcgOXMtLjggMTcuNS05IDIwLjdsLTE1NyA2MS43Yy0xMi40IDQuOS0yMy4zIDEyLjQtMzIuMiAyMS42bDE1OS42IDU3LjZjNy42IDIuNyAxNS42IDQuMSAyMy43IDQuMXMxNi4xLTEuNCAyMy43LTQuMUw2MjQuMiAxODIuNmM5LjUtMy40IDE1LjgtMTIuNSAxNS44LTIyLjZzLTYuMy0xOS4xLTE1LjgtMjIuNkwzNDMuNyAzNi4xQzMzNi4xIDMzLjQgMzI4LjEgMzIgMzIwIDMyek0xMjggNDA4YzAgMzUuMyA4NiA3MiAxOTIgNzJzMTkyLTM2LjcgMTkyLTcyTDQ5Ni43IDI2Mi42IDM1NC41IDMxNGMtMTEuMSA0LTIyLjggNi0zNC41IDZzLTIzLjUtMi0zNC41LTZMMTQzLjMgMjYyLjYgMTI4IDQwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JlYXRlclRoYW5FcXVhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Mi4xIDkzLjdDMzUuNyA4Ny4xIDI3LjcgNjguNSAzNC4zIDUyLjFzMjUuMi0yNC40IDQxLjYtMTcuOGwzMjAgMTI4QzQwOCAxNjcuMSA0MTYgMTc4LjkgNDE2IDE5MnMtOCAyNC45LTIwLjEgMjkuN2wtMzIwIDEyOGMtMTYuNCA2LjYtMzUtMS40LTQxLjYtMTcuOHMxLjQtMzUgMTcuOC00MS42TDI5Ny44IDE5MiA1Mi4xIDkzLjd6TTQxNiA0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmVhdGVyVGhhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjQgODEuN2MtNy45IDE1LjgtMS41IDM1IDE0LjMgNDIuOUwyODAuNSAyNTYgMTcuNyAzODcuNEMxLjkgMzk1LjMtNC41IDQxNC41IDMuNCA0MzAuM3MyNy4xIDIyLjIgNDIuOSAxNC4zbDMyMC0xNjBjMTAuOC01LjQgMTcuNy0xNi41IDE3LjctMjguNnMtNi44LTIzLjItMTcuNy0yOC42bC0zMjAtMTYwYy0xNS44LTcuOS0zNS0xLjUtNDIuOSAxNC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmlwTGluZXNWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMlMwIDQ2LjMgMCA2NFY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY2NHptMTI4IDBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaXBMaW5lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAyODhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzg0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMzIgMjg4em0wLTEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzODQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaXBWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MCAzNTJsNDggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ4YzAgMjIuMS0xNy45IDQwLTQwIDQwbC00OCAwYy0yMi4xIDAtNDAtMTcuOS00MC00MGwwLTQ4YzAtMjIuMSAxNy45LTQwIDQwLTQwem0xOTIgMGw0OCAwYzIyLjEgMCA0MCAxNy45IDQwIDQwbDAgNDhjMCAyMi4xLTE3LjkgNDAtNDAgNDBsLTQ4IDBjLTIyLjEgMC00MC0xNy45LTQwLTQwbDAtNDhjMC0yMi4xIDE3LjktNDAgNDAtNDB6TTQwIDMyMGMtMjIuMSAwLTQwLTE3LjktNDAtNDBsMC00OGMwLTIyLjEgMTcuOS00MCA0MC00MGw0OCAwYzIyLjEgMCA0MCAxNy45IDQwIDQwbDAgNDhjMCAyMi4xLTE3LjkgNDAtNDAgNDBsLTQ4IDB6TTIzMiAxOTJsNDggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ4YzAgMjIuMS0xNy45IDQwLTQwIDQwbC00OCAwYy0yMi4xIDAtNDAtMTcuOS00MC00MGwwLTQ4YzAtMjIuMSAxNy45LTQwIDQwLTQwek00MCAxNjBjLTIyLjEgMC00MC0xNy45LTQwLTQwTDAgNzJDMCA0OS45IDE3LjkgMzIgNDAgMzJsNDggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ4YzAgMjIuMS0xNy45IDQwLTQwIDQwbC00OCAwek0yMzIgMzJsNDggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ4YzAgMjIuMS0xNy45IDQwLTQwIDQwbC00OCAwYy0yMi4xIDAtNDAtMTcuOS00MC00MGwwLTQ4YzAtMjIuMSAxNy45LTQwIDQwLTQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAxMzZjMC0yMi4xLTE3LjktNDAtNDAtNDBMNDAgOTZDMTcuOSA5NiAwIDExMy45IDAgMTM2bDAgNDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBIODhjMjIuMSAwIDQwLTE3LjkgNDAtNDBsMC00OHptMCAxOTJjMC0yMi4xLTE3LjktNDAtNDAtNDBINDBjLTIyLjEgMC00MCAxNy45LTQwIDQwbDAgNDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBIODhjMjIuMSAwIDQwLTE3LjkgNDAtNDBWMzI4em0zMi0xOTJ2NDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBoNDhjMjIuMSAwIDQwLTE3LjkgNDAtNDBWMTM2YzAtMjIuMS0xNy45LTQwLTQwLTQwbC00OCAwYy0yMi4xIDAtNDAgMTcuOS00MCA0MHpNMjg4IDMyOGMwLTIyLjEtMTcuOS00MC00MC00MEgyMDBjLTIyLjEgMC00MCAxNy45LTQwIDQwbDAgNDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBoNDhjMjIuMSAwIDQwLTE3LjkgNDAtNDBWMzI4em0zMi0xOTJ2NDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBoNDhjMjIuMSAwIDQwLTE3LjkgNDAtNDBWMTM2YzAtMjIuMS0xNy45LTQwLTQwLTQwbC00OCAwYy0yMi4xIDAtNDAgMTcuOS00MCA0MHpNNDQ4IDMyOGMwLTIyLjEtMTcuOS00MC00MC00MEgzNjBjLTIyLjEgMC00MCAxNy45LTQwIDQwdjQ4YzAgMjIuMSAxNy45IDQwIDQwIDQwaDQ4YzIyLjEgMCA0MC0xNy45IDQwLTQwVjMyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JvdXBBcnJvd3NSb3RhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAxLjEgNzEuOWMxNi45LTUgMjYuNi0yMi45IDIxLjUtMzkuOHMtMjIuOS0yNi42LTM5LjgtMjEuNWMtMjEuNSA2LjQtNDEuOCAxNS41LTYwLjYgMjdDMTE0LjMgMzQgMTA1LjQgMzIgOTYgMzJDNjAuNyAzMiAzMiA2MC43IDMyIDk2YzAgOS40IDIgMTguMyA1LjYgMjYuM2MtMTEuNSAxOC43LTIwLjYgMzktMjcgNjAuNmMtNSAxNi45IDQuNiAzNC44IDIxLjUgMzkuOHMzNC44LTQuNiAzOS44LTIxLjVjNC4zLTE0LjYgMTAuNC0yOC41IDE3LjktNDEuNGMyIC4yIDQuMSAuMyA2LjEgLjNjMzUuMyAwIDY0LTI4LjcgNjQtNjRjMC0yLjEtLjEtNC4xLS4zLTYuMWMxMi45LTcuNSAyNi44LTEzLjYgNDEuNC0xNy45em0xMjgtNjEuM2MtMTYuOS01LTM0LjggNC42LTM5LjggMjEuNXM0LjYgMzQuOCAyMS41IDM5LjhjMTQuNiA0LjMgMjguNSAxMC40IDQxLjQgMTcuOWMtLjIgMi0uMyA0LjEtLjMgNi4xYzAgMzUuMyAyOC43IDY0IDY0IDY0YzIuMSAwIDQuMS0uMSA2LjItLjNjNy41IDEyLjkgMTMuNiAyNi44IDE3LjkgNDEuNGM1IDE2LjkgMjIuOSAyNi42IDM5LjggMjEuNXMyNi42LTIyLjkgMjEuNS0zOS44Yy02LjQtMjEuNS0xNS41LTQxLjgtMjctNjAuNmMzLjYtOCA1LjYtMTYuOSA1LjYtMjYuM2MwLTM1LjMtMjguNy02NC02NC02NGMtOS40IDAtMTguMyAyLTI2LjMgNS42Yy0xOC43LTExLjUtMzktMjAuNi02MC42LTI3ek03MS45IDMxMC45Yy01LTE2LjktMjIuOS0yNi42LTM5LjgtMjEuNXMtMjYuNiAyMi45LTIxLjUgMzkuOGM2LjQgMjEuNSAxNS41IDQxLjggMjcgNjAuNkMzNCAzOTcuNyAzMiA0MDYuNiAzMiA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRjOS40IDAgMTguMy0yIDI2LjMtNS42YzE4LjcgMTEuNSAzOSAyMC42IDYwLjYgMjdjMTYuOSA1IDM0LjgtNC42IDM5LjgtMjEuNXMtNC42LTM0LjgtMjEuNS0zOS44Yy0xNC42LTQuMy0yOC41LTEwLjQtNDEuNC0xNy45Yy4yLTIgLjMtNC4xIC4zLTYuMmMwLTM1LjMtMjguNy02NC02NC02NGMtMi4xIDAtNC4xIC4xLTYuMiAuM2MtNy41LTEyLjktMTMuNi0yNi44LTE3LjktNDEuNHptNDI5LjQgMTguM2M1LTE2LjktNC42LTM0LjgtMjEuNS0zOS44cy0zNC44IDQuNi0zOS44IDIxLjVjLTQuMyAxNC42LTEwLjQgMjguNS0xNy45IDQxLjRjLTItLjItNC4xLS4zLTYuMi0uM2MtMzUuMyAwLTY0IDI4LjctNjQgNjRjMCAyLjEgLjEgNC4xIC4zIDYuMmMtMTIuOSA3LjUtMjYuOCAxMy42LTQxLjQgMTcuOWMtMTYuOSA1LTI2LjYgMjIuOS0yMS41IDM5LjhzMjIuOSAyNi42IDM5LjggMjEuNWMyMS41LTYuNCA0MS44LTE1LjUgNjAuNi0yN2M4IDMuNiAxNi45IDUuNiAyNi4zIDUuNmMzNS4zIDAgNjQtMjguNyA2NC02NGMwLTkuNC0yLTE4LjMtNS42LTI2LjNjMTEuNS0xOC43IDIwLjYtMzkgMjctNjAuNnpNMTkyLjggMjU2LjhjMC0xNS42IDUuNi0yOS45IDE0LjktNDEuMUwyMjMgMjMxYzYuNiA2LjYgMTcuOCAxLjkgMTcuOC03LjRWMTYzLjJjMC01LjctNC43LTEwLjQtMTAuNC0xMC40SDE2OS45Yy05LjMgMC0xMy45IDExLjItNy40IDE3LjhsMTEuMiAxMS4yYy0xNy45IDE5LjgtMjguOSA0Ni4yLTI4LjkgNzUuMWMwIDQzLjYgMjQuOSA4MS4zIDYxLjEgOTkuOGMxMS44IDYgMjYuMyAxLjQgMzIuMy0xMC40czEuNC0yNi4zLTEwLjQtMzIuM2MtMjAuOC0xMC42LTM0LjktMzIuMi0zNC45LTU3em05My4xLTU4LjZjMjAuOCAxMC42IDM0LjkgMzIuMiAzNC45IDU3YzAgMTUuNi01LjYgMjkuOS0xNC45IDQxLjFMMjkwLjYgMjgxYy02LjYtNi42LTE3LjgtMS45LTE3LjggNy40djYwLjVjMCA1LjcgNC43IDEwLjQgMTAuNCAxMC40aDYwLjVjOS4zIDAgMTMuOS0xMS4yIDcuNC0xNy44bC0xMS4yLTExLjJjMTcuOS0xOS44IDI4LjktNDYuMiAyOC45LTc1LjFjMC00My42LTI0LjktODEuMy02MS4xLTk5LjhjLTExLjgtNi0yNi4zLTEuNC0zMi4zIDEwLjRzLTEuNCAyNi4zIDEwLjQgMzIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3VhcmFuaVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjY2LjdDNjkuMiA4MS45IDAgMTYwLjkgMCAyNTZzNjkuMiAxNzQuMSAxNjAgMTg5LjNWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDQ1LjNjOTAuOC0xNS4yIDE2MC05NC4yIDE2MC0xODkuM2MwLTE3LjctMTQuMy0zMi0zMi0zMkgyMjRWMTMyYzIyLjEgNS43IDQxLjggMTcuMSA1Ny42IDMyLjZjMTIuNiAxMi40IDMyLjkgMTIuMiA0NS4zLS40czEyLjItMzIuOS0uNS00NS4zQzI5OSA5MiAyNjMuNSA3My4zIDIyNCA2Ni43VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0xNjAgMTMyVjM4MGMtNTUuMi0xNC4yLTk2LTY0LjMtOTYtMTI0czQwLjgtMTA5LjggOTYtMTI0ek0yMjQgMzgwVjI4OGg5MmMtMTEuNiA0NS00NyA4MC40LTkyIDkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHdWl0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY1IDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDM4MyA1NWMtMi40IDIuNC00LjMgNS4zLTUuNSA4LjVsLTE1LjQgNDEtNzcuNSA3Ny42Yy00NS4xLTI5LjQtOTkuMy0zMC4yLTEzMSAxLjZjLTExIDExLTE4IDI0LjYtMjEuNCAzOS42Yy0zLjcgMTYuNi0xOS4xIDMwLjctMzYuMSAzMS42Yy0yNS42IDEuMy00OS4zIDEwLjctNjcuMyAyOC42Qy0xNiAzMjguNC03LjYgNDA5LjQgNDcuNSA0NjQuNXMxMzYuMSA2My41IDE4MC45IDE4LjdjMTcuOS0xNy45IDI3LjQtNDEuNyAyOC42LTY3LjNjLjktMTcgMTUtMzIuMyAzMS42LTM2LjFjMTUtMy40IDI4LjYtMTAuNSAzOS42LTIxLjRjMzEuOC0zMS44IDMxLTg1LjkgMS42LTEzMWw3Ny42LTc3LjYgNDEtMTUuNGMzLjItMS4yIDYuMS0zLjEgOC41LTUuNWw0OC00OGM5LjQtOS40IDkuNC0yNC42IDAtMzMuOUw0NjUgN3pNMjA4IDI1NmE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUd1biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjggNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2OEgzMkMxNC4zIDY0IDAgNzguMyAwIDk2VjIwOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg0MmMyMC44IDAgMzYuMSAxOS42IDMxIDM5LjhMMzMgNDQwLjJjLTIuNCA5LjYtLjIgMTkuNyA1LjggMjcuNVM1NC4xIDQ4MCA2NCA0ODBoOTZjMTQuNyAwIDI3LjUtMTAgMzEtMjQuMkwyMTcgMzUySDMyMS40YzIzLjcgMCA0NC44LTE0LjkgNTIuNy0zNy4yTDQwMC45IDI0MEg0MzJjOC41IDAgMTYuNi0zLjQgMjIuNi05LjRMNDc3LjMgMjA4SDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMlY5NmMwLTE3LjctMTQuMy0zMi0zMi0zMkg1MjhWNTZ6TTMyMS40IDMwNEgyMjlsMTYtNjRoMTA1bC0yMSA1OC43Yy0xLjEgMy4yLTQuMiA1LjMtNy41IDUuM3pNODAgMTI4SDQ2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMjU2bDAgMTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yMjRWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMTkyTDY0IDE5MiA2NCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMlMwIDQ2LjMgMCA2NFY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTE5MiAyNTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFtbWVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxMy41IDIzNy41Yy0yOC4yIDQuOC01OC4yLTMuNi04MC0yNS40bC0zOC4xLTM4LjFDMjgwLjQgMTU5IDI3MiAxMzguOCAyNzIgMTE3LjZWMTA1LjVMMTkyLjMgNjJjLTUuMy0yLjktOC42LTguNi04LjMtMTQuN3MzLjktMTEuNSA5LjUtMTRsNDcuMi0yMUMyNTkuMSA0LjIgMjc5IDAgMjk5LjIgMGgxOC4xYzM2LjcgMCA3MiAxNCA5OC43IDM5LjFsNDQuNiA0MmMyNC4yIDIyLjggMzMuMiA1NS43IDI2LjYgODZMNTAzIDE4M2w4LThjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMjQgMjRjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTg4IDg4Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtMjQtMjRjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDgtOC0xNy41LTE3LjV6TTI3LjQgMzc3LjFMMjYwLjkgMTgyLjZjMy41IDQuOSA3LjUgOS42IDExLjggMTRsMzguMSAzOC4xYzYgNiAxMi40IDExLjIgMTkuMiAxNS43TDEzNC45IDQ4NC42Yy0xNC41IDE3LjQtMzYgMjcuNC01OC42IDI3LjRDMzQuMSA1MTIgMCA0NzcuOCAwIDQzNS43YzAtMjIuNiAxMC4xLTQ0LjEgMjcuNC01OC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW1zYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNC42IDI4OEg4MGM4LjggMCAxNi03LjIgMTYtMTZWNzJjMC0yMi4xIDE3LjktNDAgNDAtNDBzNDAgMTcuOSA0MCA0MFYyMDRjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBWNDBjMC0yMi4xIDE3LjktNDAgNDAtNDBzNDAgMTcuOSA0MCA0MFYyMDRjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBWNzJjMC0yMi4xIDE3LjktNDAgNDAtNDBzNDAgMTcuOSA0MCA0MFYyNzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ1LjRjMTkuMSAwIDM0LjYgMTUuNSAzNC42IDM0LjZjMCA4LjYtMy4yIDE2LjktOSAyMy4zTDQxNi42IDQ0MWMtNDEuMSA0NS4yLTk5LjQgNzEtMTYwLjYgNzFzLTExOS40LTI1LjgtMTYwLjYtNzFMOSAzNDUuOWMtNS44LTYuNC05LTE0LjctOS0yMy4zQzAgMzAzLjUgMTUuNSAyODggMzQuNiAyODh6TTI1NiAyODhjLTM4LjQgMC03Ni44IDM1LjgtOTAuNiA1MC4yYy0zLjYgMy43LTUuNCA4LjctNS40IDEzLjhzMS44IDEwLjEgNS40IDEzLjhDMTc5LjIgMzgwLjIgMjE3LjYgNDE2IDI1NiA0MTZzNzYuOC0zNS44IDkwLjYtNTAuMmMzLjYtMy43IDUuNC04LjcgNS40LTEzLjhzLTEuOC0xMC4xLTUuNC0xMy44QzMzMi44IDMyMy44IDI5NC40IDI4OCAyNTYgMjg4em0wIDMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEJhY2tGaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAwQzExNy41IDAgOTYgMjEuNSA5NiA0OFY5NnYyOC41VjE3NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYxNDkuM2wtOSA3LjVDNDAuNCAxNjkgMzIgMTg3IDMyIDIwNlYyNDRjMCAzOCAxNi45IDc0IDQ2LjEgOTguM0wxMjggMzg0djk2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNzQuN2M0Ni45LTE5IDgwLTY1IDgwLTExOC43VjE3NiAxNjAgMTQ0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4Yy0xMi40IDAtMjMuNiA0LjctMzIuMSAxMi4zQzM1MCA4My41IDMyOS4zIDY0IDMwNCA2NGMtMTIuNCAwLTIzLjYgNC43LTMyLjEgMTIuM0MyNzAgNTEuNSAyNDkuMyAzMiAyMjQgMzJjLTEyLjQgMC0yMy42IDQuNy0zMi4xIDEyLjNDMTkwIDE5LjUgMTY5LjMgMCAxNDQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZERvdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjI0MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYzMzZjMCAxLjUgMCAzLjEgLjEgNC42TDY3LjYgMjgzYy0xNi0xNS4yLTQxLjMtMTQuNi01Ni42IDEuNHMtMTQuNiA0MS4zIDEuNCA1Ni42TDEyNC44IDQ0OGM0My4xIDQxLjEgMTAwLjQgNjQgMTYwIDY0SDMwNGM5Ny4yIDAgMTc2LTc4LjggMTc2LTE3NlYxMjhjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjQwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjI0MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzMnpNMjQwIDMzNmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwem04MCAxNmExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6bTQ4LTE2YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6bS0xNiA4MGExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6TTI0MCA0MzJhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHptLTQ4LTQ4YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEZpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMTQ0SDE2MFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNNjQgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY4MEg2NFY2NHptMTkyIDBjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY2NHptOTYgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxMjh6bS05NiA4OGwwLS42YzkuNCA1LjQgMjAuMyA4LjYgMzIgOC42YzEzLjIgMCAyNS40LTQgMzUuNi0xMC44YzguNyAyNC45IDMyLjUgNDIuOCA2MC40IDQyLjhjMTEuNyAwIDIyLjYtMy4xIDMyLTguNlYyNTZjMCA1Mi4zLTI1LjEgOTguOC02NCAxMjh2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDEuNmMtMTcuMy03LjktMzMuMi0xOC44LTQ2LjktMzIuNUw2OS41IDM1Ny41QzQ1LjUgMzMzLjUgMzIgMzAwLjkgMzIgMjY3VjI0MGMwLTM1LjMgMjguNy02NCA2NC02NGg4OGMyMi4xIDAgNDAgMTcuOSA0MCA0MHMtMTcuOSA0MC00MCA0MEgxMjhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoNTZjMzkuOCAwIDcyLTMyLjIgNzItNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRIb2xkaW5nRG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMiAyNFYzNC41YzYuNCAxLjIgMTIuNiAyLjcgMTguMiA0LjJjMTIuOCAzLjQgMjAuNCAxNi42IDE3IDI5LjRzLTE2LjYgMjAuNC0yOS40IDE3Yy0xMC45LTIuOS0yMS4xLTQuOS0zMC4yLTVjLTcuMy0uMS0xNC43IDEuNy0xOS40IDQuNGMtMi4xIDEuMy0zLjEgMi40LTMuNSAzYy0uMyAuNS0uNyAxLjItLjcgMi44YzAgLjMgMCAuNSAwIC42Yy4yIC4yIC45IDEuMiAzLjMgMi42YzUuOCAzLjUgMTQuNCA2LjIgMjcuNCAxMC4xbC45IC4zYzExLjEgMy4zIDI1LjkgNy44IDM3LjkgMTUuM2MxMy43IDguNiAyNi4xIDIyLjkgMjYuNCA0NC45Yy4zIDIyLjUtMTEuNCAzOC45LTI2LjcgNDguNWMtNi43IDQuMS0xMy45IDctMjEuMyA4LjhWMjMyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjIyMC42Yy05LjUtMi4zLTE4LjItNS4zLTI1LjYtNy44Yy0yLjEtLjctNC4xLTEuNC02LTJjLTEyLjYtNC4yLTE5LjQtMTcuOC0xNS4yLTMwLjRzMTcuOC0xOS40IDMwLjQtMTUuMmMyLjYgLjkgNSAxLjcgNy4zIDIuNWMxMy42IDQuNiAyMy40IDcuOSAzMy45IDguM2M4IC4zIDE1LjEtMS42IDE5LjItNC4xYzEuOS0xLjIgMi44LTIuMiAzLjItMi45Yy40LS42IC45LTEuOCAuOC00LjFsMC0uMmMwLTEgMC0yLjEtNC00LjZjLTUuNy0zLjYtMTQuMy02LjQtMjcuMS0xMC4zbC0xLjktLjZjLTEwLjgtMy4yLTI1LTcuNS0zNi40LTE0LjRjLTEzLjUtOC4xLTI2LjUtMjItMjYuNi00NC4xYy0uMS0yMi45IDEyLjktMzguNiAyNy43LTQ3LjRjNi40LTMuOCAxMy4zLTYuNCAyMC4yLTguMlYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0ek01NjguMiAzMzYuM2MxMy4xIDE3LjggOS4zIDQyLjgtOC41IDU1LjlMNDMzLjEgNDg1LjVjLTIzLjQgMTcuMi01MS42IDI2LjUtODAuNyAyNi41SDE5MiAzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDY4LjhsNDQuOS0zNmMyMi43LTE4LjIgNTAuOS0yOCA4MC0yOEgyNzJoMTYgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjg4IDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkgzOTIuNmwxMTkuNy04OC4yYzE3LjgtMTMuMSA0Mi44LTkuMyA1NS45IDguNXpNMTkzLjYgMzg0bDAgMC0uOSAwYy4zIDAgLjYgMCAuOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kSG9sZGluZ0Ryb3BsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc1LjUgNi42QzI3OC4zIDIuNSAyODMgMCAyODggMHM5LjcgMi41IDEyLjUgNi42TDM2Ni44IDEwM0MzNzggMTE5LjMgMzg0IDEzOC42IDM4NCAxNTguM1YxNjBjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZ2LTEuN2MwLTE5LjggNi0zOSAxNy4yLTU1LjNMMjc1LjUgNi42ek01NjguMiAzMzYuM2MxMy4xIDE3LjggOS4zIDQyLjgtOC41IDU1LjlMNDMzLjEgNDg1LjVjLTIzLjQgMTcuMi01MS42IDI2LjUtODAuNyAyNi41SDE5MiAzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDY4LjhsNDQuOS0zNmMyMi43LTE4LjIgNTAuOS0yOCA4MC0yOEgyNzJoMTYgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjg4IDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkgzOTIuNmwxMTkuNy04OC4yYzE3LjgtMTMuMSA0Mi44LTkuMyA1NS45IDguNXpNMTkzLjYgMzg0bDAgMC0uOSAwYy4zIDAgLjYgMCAuOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kSG9sZGluZ0hhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy44IDIwNy43Yy0xMy4xLTE3LjgtOS4zLTQyLjggOC41LTU1LjlMMTQyLjkgNTguNUMxNjYuMiA0MS4zIDE5NC41IDMyIDIyMy41IDMySDM4NCA1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJINTA3LjJsLTQ0LjkgMzZjLTIyLjcgMTguMi01MC45IDI4LTgwIDI4SDMwNCAyODggMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDY0IDE2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDE4My40TDYzLjcgMjE2LjJjLTE3LjggMTMuMS00Mi44IDkuMy01NS45LTguNXpNMzgyLjQgMTYwbDAgMCAuOSAwYy0uMyAwLS42IDAtLjkgMHpNNTY4LjIgMzA0LjNjMTMuMSAxNy44IDkuMyA0Mi44LTguNSA1NS45TDQzMy4xIDQ1My41Yy0yMy40IDE3LjItNTEuNiAyNi41LTgwLjcgMjYuNUgxOTIgMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg2OC44bDQ0LjktMzZjMjIuNy0xOC4yIDUwLjktMjggODAtMjhIMjcyaDE2IDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI4OCAyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZIMzkyLjZsMTE5LjctODguMmMxNy44LTEzLjEgNDIuOC05LjMgNTUuOSA4LjV6TTE5My42IDM1MmwwIDAtLjkgMGMuMyAwIC42IDAgLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEhvbGRpbmdIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjMuOSAxMzYuOWMtMjkuNC0yOS44LTI5LjQtNzguMiAwLTEwOHM3Ny0yOS44IDEwNi40IDBsMTcuNyAxOCAxNy43LTE4YzI5LjQtMjkuOCA3Ny0yOS44IDEwNi40IDBzMjkuNCA3OC4yIDAgMTA4TDMxMC41IDI0MC4xYy02LjIgNi4zLTE0LjMgOS40LTIyLjUgOS40cy0xNi4zLTMuMS0yMi41LTkuNEwxNjMuOSAxMzYuOXpNNTY4LjIgMzM2LjNjMTMuMSAxNy44IDkuMyA0Mi44LTguNSA1NS45TDQzMy4xIDQ4NS41Yy0yMy40IDE3LjItNTEuNiAyNi41LTgwLjcgMjYuNUgxOTIgMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg2OC44bDQ0LjktMzZjMjIuNy0xOC4yIDUwLjktMjggODAtMjhIMjcyaDE2IDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI4OCAyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZIMzkyLjZsMTE5LjctODguMmMxNy44LTEzLjEgNDIuOC05LjMgNTUuOSA4LjV6TTE5My42IDM4NGwwIDAtLjkgMGMuMyAwIC42IDAgLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEhvbGRpbmdNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNFY4MEgxNjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0djQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDU2djU2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE3Nmg1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxMDRjMC0xMy4zLTEwLjctMjQtMjQtMjRIMzIwVjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0SDI0OGMtMTMuMyAwLTI0IDEwLjctMjQgMjR6TTU1OS43IDM5Mi4yYzE3LjgtMTMuMSAyMS42LTM4LjEgOC41LTU1LjlzLTM4LjEtMjEuNi01NS45LTguNUwzOTIuNiA0MTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDE2IDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI4OCAyNzIgMTkzLjdjLTI5LjEgMC01Ny4zIDkuOS04MCAyOEw2OC44IDM4NEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJIMTkyIDM1Mi41YzI5IDAgNTcuMy05LjMgODAuNy0yNi41bDEyNi42LTkzLjN6bS0zNjctOC4ybC45IDAgMCAwYy0uMyAwLS42IDAtLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEhvbGRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTU5LjcgMzkyLjJjMTcuOC0xMy4xIDIxLjYtMzguMSA4LjUtNTUuOXMtMzguMS0yMS42LTU1LjktOC41TDM5Mi42IDQxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoMTYgNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjg4IDI3MiAxOTMuN2MtMjkuMSAwLTU3LjMgOS45LTgwIDI4TDY4LjggMzg0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgxOTIgMzUyLjVjMjkgMCA1Ny4zLTkuMyA4MC43LTI2LjVsMTI2LjYtOTMuM3ptLTM2Ni4xLTguM2EuNSAuNSAwIDEgMSAtLjkgLjIgLjUgLjUgMCAxIDEgLjktLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRMaXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxMTJDMCA4NS41IDIxLjUgNjQgNDggNjRIMTYwaDgwIDQ2LjVjMzYuOCAwIDcxLjIgMTggOTIuMSA0OC4ybDExMy41IDE2NGMxMyAxOC43IDE5LjkgNDEgMTkuOSA2My44djEyIDE2IDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMySDM4NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDAyLjJMMjczLjkgMzUySDI0MCAxNjAgMTEyYy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4aDQ4IDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4cy0yMS41LTQ4LTQ4LTQ4SDE2MCA0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRNaWRkbGVGaW5nZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMyIDBjLTIyLjEgMC00MCAxNy45LTQwIDQwVjIwNC4yYy04LjUtNy42LTE5LjctMTIuMi0zMi0xMi4yYy0yNi41IDAtNDggMjEuNS00OCA0OHY3IDczYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI2NC4zYy0yIDEuNC0zLjkgMy01LjggNC41TDU1IDI4NC44QzQwLjQgMjk3IDMyIDMxNSAzMiAzMzRWMzcyYzAgMzggMTYuOSA3NCA0Ni4xIDk4LjNsNS40IDQuNWMyOC44IDI0IDY1IDM3LjEgMTAyLjQgMzcuMUgzMDRjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhWMzIwIDI4OGMwLTI2LjUtMjEuNS00OC00OC00OGMtMTIuNCAwLTIzLjYgNC43LTMyLjEgMTIuM0MzNTAgMjI3LjUgMzI5LjMgMjA4IDMwNCAyMDhjLTEyLjMgMC0yMy41IDQuNi0zMiAxMi4yVjQwYzAtMjIuMS0xNy45LTQwLTQwLTQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUGVhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMjQwSDE5MlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptOTYgMTYwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptNjQgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyMjR6TTkzLjMgNTEuMkwxNzUuOSAyNDBIMTA2LjFMMzQuNyA3Ni44QzI3LjYgNjAuNiAzNSA0MS44IDUxLjIgMzQuN3MzNS4xIC4zIDQyLjEgMTYuNXptMjcgMjIxLjNsLS4yLS41aDY5LjlIMjE2YzIyLjEgMCA0MCAxNy45IDQwIDQwcy0xNy45IDQwLTQwIDQwSDE2MGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg1NmMzOS44IDAgNzItMzIuMiA3Mi03MmwwLS42YzkuNCA1LjQgMjAuMyA4LjYgMzIgOC42YzEzLjIgMCAyNS40LTQgMzUuNi0xMC44YzguNyAyNC45IDMyLjUgNDIuOCA2MC40IDQyLjhjMTEuNyAwIDIyLjYtMy4xIDMyLTguNlYzNTJjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBIMjI2LjNjLTQyLjQgMC04My4xLTE2LjktMTEzLjEtNDYuOWwtMTEuNi0xMS42Qzc3LjUgNDI5LjUgNjQgMzk2LjkgNjQgMzYzVjMzNmMwLTMyLjcgMjQuNi01OS43IDU2LjMtNjMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBvaW50RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyNzJIMzJWNDgwek0yMjQgMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjU2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjY0em0tNjQgNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzA0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyem0xNjAtOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NjR6bS05Ni04OGwwIC42YzkuNC01LjQgMjAuMy04LjYgMzItOC42YzEzLjIgMCAyNS40IDQgMzUuNiAxMC44YzguNy0yNC45IDMyLjUtNDIuOCA2MC40LTQyLjhjMTEuNyAwIDIyLjYgMy4xIDMyIDguNlYxNjBDMzg0IDcxLjYgMzEyLjQgMCAyMjQgMEgxNjIuM0MxMTkuOCAwIDc5LjEgMTYuOSA0OS4xIDQ2LjlMMzcuNSA1OC41QzEzLjUgODIuNSAwIDExNS4xIDAgMTQ5djI3YzAgMzUuMyAyOC43IDY0IDY0IDY0aDg4YzIyLjEgMCA0MC0xNy45IDQwLTQwcy0xNy45LTQwLTQwLTQwSDk2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDU2YzM5LjggMCA3MiAzMi4yIDcyIDcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUG9pbnRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDk2QzE0LjMgOTYgMCAxMTAuMyAwIDEyOHMxNC4zIDMyIDMyIDMybDIwOCAwIDAtNjRMMzIgOTZ6TTE5MiAyODhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNjQgMHptLTY0LTY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDQ4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTQ4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem05NiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNjQgMHptODgtOTZsLS42IDBjNS40IDkuNCA4LjYgMjAuMyA4LjYgMzJjMCAxMy4yLTQgMjUuNC0xMC44IDM1LjZjMjQuOSA4LjcgNDIuOCAzMi41IDQyLjggNjAuNGMwIDExLjctMy4xIDIyLjYtOC42IDMybDguNiAwYzg4LjQgMCAxNjAtNzEuNiAxNjAtMTYwbDAtNjEuN2MwLTQyLjQtMTYuOS04My4xLTQ2LjktMTEzLjFsLTExLjYtMTEuNkM0MjkuNSA3Ny41IDM5Ni45IDY0IDM2MyA2NGwtMjcgMGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCA4OGMwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwbDAtNTZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDU2YzAgMzkuOC0zMi4yIDcyLTcyIDcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUG9pbnRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTIwOCAwIDAtNjQgMjA4IDB6TTMyMCAyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsNjQgMHptNjQtNjRjMCAxNy43LTE0LjMgMzItMzIgMzJsLTQ4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsNDggMGMxNy43IDAgMzIgMTQuMyAzMiAzMnpNMjg4IDM4NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw2NCAwem0tODgtOTZsLjYgMGMtNS40IDkuNC04LjYgMjAuMy04LjYgMzJjMCAxMy4yIDQgMjUuNCAxMC44IDM1LjZDMTc3LjkgMzY0LjMgMTYwIDM4OC4xIDE2MCA0MTZjMCAxMS43IDMuMSAyMi42IDguNiAzMmwtOC42IDBDNzEuNiA0NDggMCAzNzYuNCAwIDI4OGwwLTYxLjdjMC00Mi40IDE2LjktODMuMSA0Ni45LTExMy4xbDExLjYtMTEuNkM4Mi41IDc3LjUgMTE1LjEgNjQgMTQ5IDY0bDI3IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCA4OGMwIDIyLjEtMTcuOSA0MC00MCA0MHMtNDAtMTcuOS00MC00MGwwLTU2YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2bDAgNTZjMCAzOS44IDMyLjIgNzIgNzIgNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRQb2ludFVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyQzMyIDE0LjMgNDYuMyAwIDY0IDBTOTYgMTQuMyA5NiAzMlYyNDBIMzJWMzJ6TTIyNCAxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxOTJ6bS02NC02NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTE2MCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIyNHptLTk2IDg4bDAtLjZjOS40IDUuNCAyMC4zIDguNiAzMiA4LjZjMTMuMiAwIDI1LjQtNCAzNS42LTEwLjhjOC43IDI0LjkgMzIuNSA0Mi44IDYwLjQgNDIuOGMxMS43IDAgMjIuNi0zLjEgMzItOC42VjM1MmMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MEgxNjIuM2MtNDIuNCAwLTgzLjEtMTYuOS0xMTMuMS00Ni45TDM3LjUgNDUzLjVDMTMuNSA0MjkuNSAwIDM5Ni45IDAgMzYzVjMzNmMwLTM1LjMgMjguNy02NCA2NC02NGg4OGMyMi4xIDAgNDAgMTcuOSA0MCA0MHMtMTcuOSA0MC00MCA0MEg5NmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg1NmMzOS44IDAgNzItMzIuMiA3Mi03MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBvaW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDQwYzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDBWMTg4LjJjOC41LTcuNiAxOS43LTEyLjIgMzItMTIuMmMyMC42IDAgMzguMiAxMyA0NSAzMS4yYzguOC05LjMgMjEuMi0xNS4yIDM1LTE1LjJjMjUuMyAwIDQ2IDE5LjUgNDcuOSA0NC4zYzguNS03LjcgMTkuOC0xMi4zIDMyLjEtMTIuM2MyNi41IDAgNDggMjEuNSA0OCA0OHY0OCAxNiA0OGMwIDcwLjctNTcuMyAxMjgtMTI4IDEyOGwtMTYgMEgyNDBsLS4xIDBoLTUuMmMtNSAwLTkuOS0uMy0xNC43LTFjLTU1LjMtNS42LTEwNi4yLTM0LTE0MC03OUw4IDMzNmMtMTMuMy0xNy43LTkuNy00Mi43IDgtNTZzNDIuNy05LjcgNTYgOGw1NiA3NC43VjQwek0yNDAgMzA0YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzA0em00OC0xNmMtOC44IDAtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNnptODAgMTZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYzMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRTY2lzc29ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MCAyMDhjLTIyLjEgMC00MCAxNy45LTQwIDQwczE3LjkgNDAgNDAgNDBsMTgwLjIgMGMtNy42IDguNS0xMi4yIDE5LjctMTIuMiAzMmMwIDI1LjMgMTkuNSA0NiA0NC4zIDQ3LjljLTcuNyA4LjUtMTIuMyAxOS44LTEyLjMgMzIuMWMwIDI2LjUgMjEuNSA0OCA0OCA0OGwzMiAwIDY0IDBjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhsMC0xMTMuMWMwLTQwLjItMTYtNzguOC00NC40LTEwNy4zQzQ0NC44IDc2LjggNDEzLjkgNjQgMzgxLjcgNjRMMzM2IDY0Yy0yMS4zIDAtMzkuMyAxMy45LTQ1LjYgMzMuMWw3NC41IDIzLjdjOC40IDIuNyAxMy4xIDExLjcgMTAuNCAyMC4xcy0xMS43IDEzLjEtMjAuMSAxMC40TDI4OCAxMjkuOWwwIC4xTDg0IDY1LjhDNjIuOSA1OS4yIDQwLjUgNzAuOSAzMy44IDkyczUuMSA0My41IDI2LjIgNTAuMkwyNjkuNSAyMDggNDAgMjA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kU3BhcmtsZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMjQwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlYyNDBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlYzMjMuMWMtMTEuOSA0LjgtMjEuMyAxNC45LTI1IDI3LjhsLTguOSAzMS4yTDQ3OC45IDM5MUM0NjAuNiAzOTYuMyA0NDggNDEzIDQ0OCA0MzJjMCAxOC45IDEyLjUgMzUuNiAzMC42IDQwLjlDNDQ4LjQgNDk3LjQgNDA5LjkgNTEyIDM2OCA1MTJIMzQ4LjhjLTU5LjYgMC0xMTYuOS0yMi45LTE2MC02NEw3Ni40IDM0MWMtMTYtMTUuMi0xNi42LTQwLjYtMS40LTU2LjZzNDAuNi0xNi42IDU2LjYtMS40bDYwLjUgNTcuNmMwLTEuNS0uMS0zLjEtLjEtNC42VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMjQwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6bS03LjMgMzI2LjZjLTEuMS0zLjktNC43LTYuNi04LjctNi42cy03LjYgMi43LTguNyA2LjZMMjg4IDM1MmwtMjUuNCA3LjNjLTMuOSAxLjEtNi42IDQuNy02LjYgOC43czIuNyA3LjYgNi42IDguN0wyODggMzg0bDcuMyAyNS40YzEuMSAzLjkgNC43IDYuNiA4LjcgNi42czcuNi0yLjcgOC43LTYuNkwzMjAgMzg0bDI1LjQtNy4zYzMuOS0xLjEgNi42LTQuNyA2LjYtOC43cy0yLjctNy42LTYuNi04LjdMMzIwIDM1MmwtNy4zLTI1LjR6TTEwNCAxMjBsNDguMyAxMy44YzQuNiAxLjMgNy43IDUuNSA3LjcgMTAuMnMtMy4xIDguOS03LjcgMTAuMkwxMDQgMTY4IDkwLjIgMjE2LjNjLTEuMyA0LjYtNS41IDcuNy0xMC4yIDcuN3MtOC45LTMuMS0xMC4yLTcuN0w1NiAxNjggNy43IDE1NC4yQzMuMSAxNTIuOSAwIDE0OC43IDAgMTQ0czMuMS04LjkgNy43LTEwLjJMNTYgMTIwIDY5LjggNzEuN0M3MS4xIDY3LjEgNzUuMyA2NCA4MCA2NHM4LjkgMy4xIDEwLjIgNy43TDEwNCAxMjB6TTU4NCA0MDhsNDguMyAxMy44YzQuNiAxLjMgNy43IDUuNSA3LjcgMTAuMnMtMy4xIDguOS03LjcgMTAuMkw1ODQgNDU2bC0xMy44IDQ4LjNjLTEuMyA0LjYtNS41IDcuNy0xMC4yIDcuN3MtOC45LTMuMS0xMC4yLTcuN0w1MzYgNDU2bC00OC4zLTEzLjhjLTQuNi0xLjMtNy43LTUuNS03LjctMTAuMnMzLjEtOC45IDcuNy0xMC4yTDUzNiA0MDhsMTMuOC00OC4zYzEuMy00LjYgNS41LTcuNyAxMC4yLTcuN3M4LjkgMy4xIDEwLjIgNy43TDU4NCA0MDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRTcG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDYuOSAyMy43QzI0Mi4zIDYuNiAyMjQuOC0zLjUgMjA3LjcgMS4xcy0yNy4yIDIyLjEtMjIuNiAzOS4yTDIzOCAyMzcuOGMyLjUgOS4yLTQuNSAxOC4yLTE0IDE4LjJjLTYuNCAwLTEyLTQuMi0xMy45LTEwLjNMMTY2LjYgMTAyLjdjLTUuMS0xNi45LTIzLTI2LjQtMzkuOS0yMS4zcy0yNi40IDIzLTIxLjMgMzkuOWw2Mi44IDIwNi40YzIuNCA3LjktNy4yIDEzLjgtMTMuMiA4LjFMOTkuNiAyODNjLTE2LTE1LjItNDEuMy0xNC42LTU2LjYgMS40cy0xNC42IDQxLjMgMS40IDU2LjZMMTU2LjggNDQ4YzQzLjEgNDEuMSAxMDAuNCA2NCAxNjAgNjRoMTAuOSA4LjJjLjEgMCAuMS0uMSAuMS0uMXMuMS0uMSAuMS0uMWM1OC4zLTMuNSAxMDguNi00My4yIDEyNS4zLTk5LjdsODEuMi0yNzVjNS0xNi45LTQuNy0zNC43LTIxLjYtMzkuOHMtMzQuNyA0LjctMzkuOCAyMS42TDQ0My41IDI0Ny4xYy0xLjYgNS4zLTYuNCA4LjktMTIgOC45Yy03LjkgMC0xMy44LTcuMy0xMi4yLTE1LjFsMzYtMTcwLjNjMy43LTE3LjMtNy40LTM0LjMtMjQuNy0zNy45cy0zNC4zIDcuNC0zNy45IDI0LjdMMzU1LjEgMjM1LjFjLTIuNiAxMi4yLTEzLjMgMjAuOS0yNS44IDIwLjljLTExLjkgMC0yMi40LTgtMjUuNC0xOS41bC01Ny0yMTIuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjQwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjMzNmMwIDEuNSAwIDMuMSAuMSA0LjZMNjcuNiAyODNjLTE2LTE1LjItNDEuMy0xNC42LTU2LjYgMS40cy0xNC42IDQxLjMgMS40IDU2LjZMMTI0LjggNDQ4YzQzLjEgNDEuMSAxMDAuNCA2NCAxNjAgNjRIMzA0Yzk3LjIgMCAxNzYtNzguOCAxNzYtMTc2VjEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYyNDBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjQwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kY3VmZnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwIDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTE5MiA0OGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bS0zMiA4MGMxNy43IDAgMzIgMTQuMyAzMiAzMmg4YzEzLjMgMCAyNCAxMC43IDI0IDI0djE2YzAgMS43LS4yIDMuNC0uNSA1LjFDMjgwLjMgMjI5LjYgMzIwIDI4Ni4yIDMyMCAzNTJjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBTMCA0NDAuNCAwIDM1MmMwLTY1LjggMzkuNy0xMjIuNCA5Ni41LTE0Ni45Yy0uNC0xLjYtLjUtMy4zLS41LTUuMVYxODRjMC0xMy4zIDEwLjctMjQgMjQtMjRoOGMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMCAzMjBhOTYgOTYgMCAxIDAgMC0xOTIgOTYgOTYgMCAxIDAgMCAxOTJ6bTE5Mi05NmMwLTI1LjktNS4xLTUwLjUtMTQuNC03My4xYzE2LjktMzIuOSA0NC44LTU5LjEgNzguOS03My45Yy0uNC0xLjYtLjUtMy4zLS41LTUuMVYxODRjMC0xMy4zIDEwLjctMjQgMjQtMjRoOGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyaDhjMTMuMyAwIDI0IDEwLjcgMjQgMjR2MTZjMCAxLjctLjIgMy40LS41IDUuMUM2MDAuMyAyMjkuNiA2NDAgMjg2LjIgNjQwIDM1MmMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MGMtNjIgMC0xMTUuOC0zNS4zLTE0Mi40LTg2LjljOS4zLTIyLjUgMTQuNC00Ny4yIDE0LjQtNzMuMXptMjI0IDBhOTYgOTYgMCAxIDAgLTE5MiAwIDk2IDk2IDAgMSAwIDE5MiAwek0zNjggMGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTgwIDQ4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHNBc2xJbnRlcnByZXRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU2LjYgNDYuM2M3LjktMTUuOCAxLjUtMzUtMTQuMy00Mi45cy0zNS0xLjUtNDIuOSAxNC4zTDEzLjUgMTg5LjRDNC42IDIwNy4yIDAgMjI2LjggMCAyNDYuN1YyNTZjMCA3MC43IDU3LjMgMTI4IDEyOCAxMjhoNzIgOHYtLjNjMzUuMi0yLjcgNjUuNC0yMi44IDgyLjEtNTEuN2M4LjgtMTUuMyAzLjYtMzQuOS0xMS43LTQzLjdzLTM0LjktMy42LTQzLjcgMTEuN2MtNyAxMi0xOS45IDIwLTM0LjcgMjBjLTIyLjEgMC00MC0xNy45LTQwLTQwczE3LjktNDAgNDAtNDBjMTQuOCAwIDI3LjcgOCAzNC43IDIwYzguOCAxNS4zIDI4LjQgMjAuNSA0My43IDExLjdzMjAuNS0yOC40IDExLjctNDMuN2MtMTIuOC0yMi4xLTMzLjYtMzkuMS01OC40LTQ3LjFsODAuOC0yMmMxNy00LjYgMjcuMS0yMi4yIDIyLjUtMzkuM3MtMjIuMi0yNy4xLTM5LjMtMjIuNUwxOTQuOSAxMjQuNmw4MS42LTY4YzEzLjYtMTEuMyAxNS40LTMxLjUgNC4xLTQ1LjFTMjQ5LjEtMy45IDIzNS41IDcuNEwxMzMuNiA5Mi4zbDIzLTQ2ek00ODMuNCA0NjUuN2MtNy45IDE1LjgtMS41IDM1IDE0LjMgNDIuOXMzNSAxLjUgNDIuOS0xNC4zbDg1LjktMTcxLjdjOC45LTE3LjggMTMuNS0zNy40IDEzLjUtNTcuMlYyNTZjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhINDQwaC04di4zYy0zNS4yIDIuNy02NS40IDIyLjgtODIuMSA1MS43Yy04LjkgMTUuMy0zLjYgMzQuOSAxMS43IDQzLjdzMzQuOSAzLjYgNDMuNy0xMS43YzctMTIgMTkuOS0yMCAzNC43LTIwYzIyLjEgMCA0MCAxNy45IDQwIDQwcy0xNy45IDQwLTQwIDQwYy0xNC44IDAtMjcuNy04LTM0LjctMjBjLTguOS0xNS4zLTI4LjQtMjAuNS00My43LTExLjdzLTIwLjUgMjguNC0xMS43IDQzLjdjMTIuOCAyMi4xIDMzLjYgMzkuMSA1OC40IDQ3LjFsLTgwLjggMjJjLTE3LjEgNC43LTI3LjEgMjIuMi0yMi41IDM5LjNzMjIuMiAyNy4xIDM5LjMgMjIuNWwxMDAuNy0yNy41LTgxLjYgNjhjLTEzLjYgMTEuMy0xNS40IDMxLjUtNC4xIDQ1LjFzMzEuNSAxNS40IDQ1LjEgNC4xbDEwMS45LTg0LjktMjMgNDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzQm91bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzJDOTYgMTQuMyA4MS43IDAgNjQgMFMzMiAxNC4zIDMyIDMyVjk2djU5LjEgLjdWMTkydjIxLjljMCAxNC4yIDUuMSAyNy45IDE0LjMgMzguN0wxMzEuNiAzNTJIMTI4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDMySDI4OGg2NEg0ODBoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRoLTMuNmw4NS4zLTk5LjVjOS4yLTEwLjggMTQuMy0yNC41IDE0LjMtMzguN1YxOTIgMTU1Ljh2LS43Vjk2IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjk2djQ4LjhsLTY5LjMgOTIuNGMtNS43IDcuNi0xNi4xIDkuNi0yNC4yIDQuOGMtOS43LTUuNy0xMi4xLTE4LjctNS4xLTI3LjVMNDczIDE4MGMxMC44LTEzLjUgOC45LTMzLjMtNC40LTQ0LjVzLTMzLTkuOC00NC41IDMuMmwtNDYuNyA1Mi41QzM2MSAyMDkuNyAzNTIgMjMzLjQgMzUyIDI1OC4xVjMyMHYzMkgyODhWMzIwIDI1OC4xYzAtMjQuNi05LTQ4LjQtMjUuNC02Ni44bC00Ni43LTUyLjVjLTExLjUtMTMtMzEuMy0xNC40LTQ0LjUtMy4ycy0xNS4yIDMwLjktNC40IDQ0LjVsMjcuNiAzNC41YzcgOC44IDQuNyAyMS44LTUuMSAyNy41Yy04LjEgNC44LTE4LjYgMi43LTI0LjItNC44TDk2IDE0NC44Vjk2IDMyem02NCA0NDh2MzJIMjg4VjQ4MGg2NHYzMkg0ODBWNDgwaDMyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDQ4MCAzNTIgMjg4IDE2MCAxMjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzQnViYmxlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgNjRhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em05NiAxMjhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0ek0xNjAgNDY0YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTMyIDE2MGwuMSA3Mi42Yy4xIDUyLjIgMjQgMTAxIDY0IDEzMy4xYy0uMS0xLjktLjEtMy44LS4xLTUuN3YtOGMwLTcxLjggMzctMTM4LjYgOTcuOS0xNzYuN2w2MC4yLTM3LjZjOC42LTUuNCAxNy45LTguNCAyNy4zLTkuNGw0NS45LTc5LjVjNi42LTExLjUgMi43LTI2LjItOC44LTMyLjhzLTI2LjItMi43LTMyLjggOC44bC03OCAxMzUuMWMtMy4zIDUuNy0xMC43IDcuNy0xNi40IDQuNHMtNy43LTEwLjctNC40LTE2LjRsNjItMTA3LjRjNi42LTExLjUgMi43LTI2LjItOC44LTMyLjhTMjE0IDUgMjA3LjQgMTYuNWwtNjggMTE3LjggMCAwIDAgMC00My4zIDc1TDk2IDE2MGMwLTE3LjctMTQuNC0zMi0zMi0zMnMtMzIgMTQuNC0zMiAzMnpNMzMyLjEgODguNUwzMDcuNSAxMzFjMTMuOSA0LjUgMjYuNCAxMy43IDM0LjcgMjdjLjkgMS41IDEuOCAyLjkgMi41IDQuNGwyOC45LTUwYzYuNi0xMS41IDIuNy0yNi4yLTguOC0zMi44cy0yNi4yLTIuNy0zMi44IDguOHptNDYuNCA2My43bC0yNi44IDQ2LjRjLS42IDYtMi4xIDExLjgtNC4zIDE3LjRIMzUyaDEzLjNsMCAwSDM5N2wyMy0zOS44YzYuNi0xMS41IDIuNy0yNi4yLTguOC0zMi44cy0yNi4yLTIuNy0zMi44IDguOHpNMzE1LjEgMTc1Yy05LjQtMTUtMjkuMS0xOS41LTQ0LjEtMTAuMmwtNjAuMiAzNy42QzE1OS4zIDIzNC43IDEyOCAyOTEuMiAxMjggMzUydjhjMCA4LjkgLjggMTcuNiAyLjIgMjYuMWMzNS40IDguMiA2MS44IDQwIDYxLjggNzcuOWMwIDYuMy0uNyAxMi41LTIuMSAxOC40QzIxNS4xIDUwMSAyNDYuMyA1MTIgMjgwIDUxMkg0NTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMzY0Yy02LjYgMC0xMi01LjQtMTItMTJzNS40LTEyIDEyLTEySDQ4OGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgzNjRjLTYuNiAwLTEyLTUuNC0xMi0xMnM1LjQtMTIgMTItMTJINTIwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDM2NGMtNi42IDAtMTItNS40LTEyLTEyczUuNC0xMiAxMi0xMkg0ODhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMzUybDAgMCAwIDBIMjU4LjhMMzA1IDIxOS4xYzE1LTkuNCAxOS41LTI5LjEgMTAuMi00NC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc0NsYXBwaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAxNlY4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYxNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2em0tOTguNyA3LjFsMzIgNDhjNC45IDcuNCAyLjkgMTcuMy00LjQgMjIuMnMtMTcuMyAyLjktMjIuMi00LjRsLTMyLTQ4Yy00LjktNy40LTIuOS0xNy4zIDQuNC0yMi4yczE3LjMtMi45IDIyLjIgNC40ek0xMzUgMTE5YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwTDI5Mi43IDI0Mi43YzEwLjEgMTAuMSAyNy4zIDIuOSAyNy4zLTExLjNWMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMzQ1LjZjMCA1Ny4xLTMwIDExMC03OC45IDEzOS40Yy02NCAzOC40LTE0NS44IDI4LjMtMTk4LjUtMjQuNEw3IDM2MWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDUzIDUzYzYuMSA2LjEgMTYgNi4xIDIyLjEgMHM2LjEtMTYgMC0yMi4xTDIzIDI2NWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDkzIDkzYzYuMSA2LjEgMTYgNi4xIDIyLjEgMHM2LjEtMTYgMC0yMi4xTDU1IDE4NWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDExNyAxMTdjNi4xIDYuMSAxNiA2LjEgMjIuMSAwczYuMS0xNiAwLTIyLjFsLTkzLTkzYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXpNNDMzLjEgNDg0LjljLTI0LjIgMTQuNS01MC45IDIyLjEtNzcuNyAyMy4xYzQ4LjEtMzkuNiA3Ni42LTk5IDc2LjYtMTYyLjRsMC05OC4xYzguMi0uMSAxNi02LjQgMTYtMTZWMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMzQ1LjZjMCA1Ny4xLTMwIDExMC03OC45IDEzOS40ek00MjQuOSAxOC43YzcuNCA0LjkgOS4zIDE0LjggNC40IDIyLjJsLTMyIDQ4Yy00LjkgNy40LTE0LjggOS4zLTIyLjIgNC40cy05LjMtMTQuOC00LjQtMjIuMmwzMi00OGM0LjktNy40IDE0LjgtOS4zIDIyLjItNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc0hvbGRpbmdDaGlsZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMGE0MCA0MCAwIDEgMSAwIDgwIDQwIDQwIDAgMSAxIDAtODB6bTQ0LjcgMTY0LjNMMzc1LjggMjUzYzEuNiAxMy4yLTcuNyAyNS4xLTIwLjggMjYuOHMtMjUuMS03LjctMjYuOC0yMC44bC00LjQtMzVoLTcuNmwtNC40IDM1Yy0xLjYgMTMuMi0xMy42IDIyLjUtMjYuOCAyMC44cy0yMi41LTEzLjYtMjAuOC0yNi44bDExLjEtODguOEwyNTUuNSAxODFjLTEwLjEgOC42LTI1LjMgNy4zLTMzLjgtMi44cy03LjMtMjUuMyAyLjgtMzMuOGwyNy45LTIzLjZDMjcxLjMgMTA0LjggMjk1LjMgOTYgMzIwIDk2czQ4LjcgOC44IDY3LjYgMjQuN2wyNy45IDIzLjZjMTAuMSA4LjYgMTEuNCAyMy43IDIuOCAzMy44cy0yMy43IDExLjQtMzMuOCAyLjhsLTE5LjgtMTYuN3pNNDAgNjRjMjIuMSAwIDQwIDE3LjkgNDAgNDB2NDAgODAgNDAuMmMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM2w1MS4xIDUxLjFjOC4zIDguMyAyMS4zIDkuNiAzMSAzLjFjMTIuOS04LjYgMTQuNy0yNi45IDMuNy0zNy44bC0xNS4yLTE1LjItMzItMzJjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBsMzIgMzIgMTUuMiAxNS4yIDAgMCAyNS4zIDI1LjNjMjEgMjEgMzIuOCA0OS41IDMyLjggNzkuMlY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMTczLjNjLTE3IDAtMzMuMy02LjctNDUuMy0xOC43TDI4LjEgMzkzLjRDMTAuMSAzNzUuNCAwIDM1MSAwIDMyNS41VjIyNCAxNjAgMTA0QzAgODEuOSAxNy45IDY0IDQwIDY0em01NjAgMGMyMi4xIDAgNDAgMTcuOSA0MCA0MHY1NiA2NFYzMjUuNWMwIDI1LjUtMTAuMSA0OS45LTI4LjEgNjcuOUw1MTIgNDkzLjNjLTEyIDEyLTI4LjMgMTguNy00NS4zIDE4LjdINDAwYy0yNi41IDAtNDgtMjEuNS00OC00OFYzODUuMWMwLTI5LjcgMTEuOC01OC4yIDMyLjgtNzkuMmwyNS4zLTI1LjMgMCAwIDE1LjItMTUuMiAzMi0zMmMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zbC0zMiAzMi0xNS4yIDE1LjJjLTExIDExLTkuMiAyOS4yIDMuNyAzNy44YzkuNyA2LjUgMjIuNyA1LjIgMzEtMy4xbDUxLjEtNTEuMWMxMi0xMiAxOC43LTI4LjMgMTguNy00NS4zVjIyNCAxNDQgMTA0YzAtMjIuMSAxNy45LTQwIDQwLTQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc0hvbGRpbmdDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDBhMTI4IDEyOCAwIDEgMSAwIDI1NkExMjggMTI4IDAgMSAxIDMyMCAwek00MCA2NGMyMi4xIDAgNDAgMTcuOSA0MCA0MHY0MCA4MCA0MC4yYzAgMTcgNi43IDMzLjMgMTguNyA0NS4zbDUxLjEgNTEuMWM4LjMgOC4zIDIxLjMgOS42IDMxIDMuMWMxMi45LTguNiAxNC43LTI2LjkgMy43LTM3LjhsLTE1LjItMTUuMi0zMi0zMmMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMGwzMiAzMiAxNS4yIDE1LjIgMCAwIDI1LjMgMjUuM2MyMSAyMSAzMi44IDQ5LjUgMzIuOCA3OS4yVjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEgxNzMuM2MtMTcgMC0zMy4zLTYuNy00NS4zLTE4LjdMMjguMSAzOTMuNEMxMC4xIDM3NS40IDAgMzUxIDAgMzI1LjVWMjI0IDE2MCAxMDRDMCA4MS45IDE3LjkgNjQgNDAgNjR6bTU2MCAwYzIyLjEgMCA0MCAxNy45IDQwIDQwdjU2IDY0VjMyNS41YzAgMjUuNS0xMC4xIDQ5LjktMjguMSA2Ny45TDUxMiA0OTMuM2MtMTIgMTItMjguMyAxOC43LTQ1LjMgMTguN0g0MDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM4NS4xYzAtMjkuNyAxMS44LTU4LjIgMzIuOC03OS4ybDI1LjMtMjUuMyAwIDAgMTUuMi0xNS4yIDMyLTMyYzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNsLTMyIDMyLTE1LjIgMTUuMmMtMTEgMTEtOS4yIDI5LjIgMy43IDM3LjhjOS43IDYuNSAyMi43IDUuMiAzMS0zLjFsNTEuMS01MS4xYzEyLTEyIDE4LjctMjguMyAxOC43LTQ1LjNWMjI0IDE0NCAxMDRjMC0yMi4xIDE3LjktNDAgNDAtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzSG9sZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCAxMDRjMC0yMi4xLTE3LjktNDAtNDAtNDBTMCA4MS45IDAgMTA0djU2IDY0VjMyNS41YzAgMjUuNSAxMC4xIDQ5LjkgMjguMSA2Ny45TDEyOCA0OTMuM2MxMiAxMiAyOC4zIDE4LjcgNDUuMyAxOC43SDI0MGMyNi41IDAgNDgtMjEuNSA0OC00OFYzODUuMWMwLTI5LjctMTEuOC01OC4yLTMyLjgtNzkuMmwtMjUuMy0yNS4zIDAgMC0xNS4yLTE1LjItMzItMzJjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDMyIDMyIDE1LjIgMTUuMmMxMSAxMSA5LjIgMjkuMi0zLjcgMzcuOGMtOS43IDYuNS0yMi43IDUuMi0zMS0zLjFMOTguNyAzMDkuNWMtMTItMTItMTguNy0yOC4zLTE4LjctNDUuM1YyMjQgMTQ0IDEwNHptNDgwIDB2NDAgODAgNDAuMmMwIDE3LTYuNyAzMy4zLTE4LjcgNDUuM2wtNTEuMSA1MS4xYy04LjMgOC4zLTIxLjMgOS42LTMxIDMuMWMtMTIuOS04LjYtMTQuNy0yNi45LTMuNy0zNy44bDE1LjItMTUuMiAzMi0zMmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMzIgMzItMTUuMiAxNS4yIDAgMC0yNS4zIDI1LjNjLTIxIDIxLTMyLjggNDkuNS0zMi44IDc5LjJWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDY2LjdjMTcgMCAzMy4zLTYuNyA0NS4zLTE4LjdsOTkuOS05OS45YzE4LTE4IDI4LjEtNDIuNCAyOC4xLTY3LjlWMjI0IDE2MCAxMDRjMC0yMi4xLTE3LjktNDAtNDAtNDBzLTQwIDE3LjktNDAgNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzUHJheWluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTEuMiA0LjhjMy4yLTIgNi42LTMuMyAxMC00LjFjNC43LTEgOS42LS45IDE0LjEgLjFjNy43IDEuOCAxNC44IDYuNSAxOS40IDEzLjZMNTE0LjYgMTk0LjJjOC44IDEzLjEgMTMuNCAyOC42IDEzLjQgNDQuNHY3My41YzAgNi45IDQuNCAxMyAxMC45IDE1LjJsNzkuMiAyNi40QzYzMS4yIDM1OCA2NDAgMzcwLjIgNjQwIDM4NHY5NmMwIDkuOS00LjYgMTkuMy0xMi41IDI1LjRzLTE4LjEgOC4xLTI3LjcgNS41TDQzMSA0NjUuOWMtNTYtMTQuOS05NS02NS43LTk1LTEyMy43VjIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjgwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjE5LjFjMC03LTEuOC0xMy44LTUuMy0xOS44TDM0MC4zIDQ4LjFjLTEuNy0zLTIuOS02LjEtMy42LTkuM2MtMS00LjctMS05LjYgLjEtMTQuMWMxLjktOCA2LjgtMTUuMiAxNC4zLTE5Ljl6bS02Mi40IDBjNy41IDQuNiAxMi40IDExLjkgMTQuMyAxOS45YzEuMSA0LjYgMS4yIDkuNCAuMSAxNC4xYy0uNyAzLjItMS45IDYuMy0zLjYgOS4zTDIxMy4zIDE5OS4zYy0zLjUgNi01LjMgMTIuOS01LjMgMTkuOFYzMDRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyMjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlYzNDIuM2MwIDU4LTM5IDEwOC43LTk1IDEyMy43bC0xNjguNyA0NWMtOS42IDIuNi0xOS45IC41LTI3LjctNS41UzAgNDkwIDAgNDgwVjM4NGMwLTEzLjggOC44LTI2IDIxLjktMzAuNGw3OS4yLTI2LjRjNi41LTIuMiAxMC45LTguMyAxMC45LTE1LjJWMjM4LjVjMC0xNS44IDQuNy0zMS4yIDEzLjQtNDQuNEwyNDUuMiAxNC41YzQuNi03LjEgMTEuNy0xMS44IDE5LjQtMTMuNmM0LjYtMS4xIDkuNC0xLjIgMTQuMS0uMWMzLjUgLjggNi45IDIuMSAxMCA0LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAxNjBsLS4xIDcyLjZjLS4xIDUyLjItMjQgMTAxLTY0IDEzMy4xYy4xLTEuOSAuMS0zLjggLjEtNS43di04YzAtNzEuOC0zNy0xMzguNi05Ny45LTE3Ni43bC02MC4yLTM3LjZjLTguNi01LjQtMTcuOS04LjQtMjcuMy05LjRMMjQ4LjcgNDguOGMtNi42LTExLjUtMi43LTI2LjIgOC44LTMyLjhzMjYuMi0yLjcgMzIuOCA4LjhsNzggMTM1LjFjMy4zIDUuNyAxMC43IDcuNyAxNi40IDQuNHM3LjctMTAuNyA0LjQtMTYuNGwtNjItMTA3LjRjLTYuNi0xMS41LTIuNy0yNi4yIDguOC0zMi44UzM2MiA1IDM2OC42IDE2LjVsNjggMTE3LjggMCAwIDAgMCA0My4zIDc1TDQ4MCAxNjBjMC0xNy43IDE0LjQtMzIgMzItMzJzMzIgMTQuNCAzMiAzMnpNMjQzLjkgODguNUwyNjguNSAxMzFjLTEzLjkgNC41LTI2LjQgMTMuNy0zNC43IDI3Yy0uOSAxLjQtMS43IDIuOS0yLjUgNC40bC0yOC45LTUwYy02LjYtMTEuNS0yLjctMjYuMiA4LjgtMzIuOHMyNi4yLTIuNyAzMi44IDguOHptLTQ2LjQgNjMuN2wyNi44IDQ2LjRjLjYgNiAyLjEgMTEuOCA0LjMgMTcuNEgyMjQgMjEwLjdsMCAwSDE3OWwtMjMtMzkuOGMtNi42LTExLjUtMi43LTI2LjIgOC44LTMyLjhzMjYuMi0yLjcgMzIuOCA4Ljh6TTI2MC45IDE3NWM5LjQtMTUgMjkuMS0xOS41IDQ0LjEtMTAuMmw2MC4yIDM3LjZDNDE2LjcgMjM0LjcgNDQ4IDI5MS4yIDQ0OCAzNTJ2OGMwIDgzLjktNjguMSAxNTItMTUyIDE1MkgxMjBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoOTJjNi42IDAgMTItNS40IDEyLTEycy01LjQtMTItMTItMTJIODhjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRIMjEyYzYuNiAwIDEyLTUuNCAxMi0xMnMtNS40LTEyLTEyLTEySDU2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0SDIxMmM2LjYgMCAxMi01LjQgMTItMTJzLTUuNC0xMi0xMi0xMkg4OGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNEgyMjRsMCAwIDAgMGg5My4yTDI3MSAyMTkuMWMtMTUtOS40LTE5LjUtMjkuMS0xMC4yLTQ0LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzaGFrZUFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAyNDh2My4zbDY5LjctNjkuN2MyMS45LTIxLjkgMjEuOS01Ny4zIDAtNzkuMkw1MzUuNiAyNC40Yy0yMS45LTIxLjktNTcuMy0yMS45LTc5LjIgMEw0MTYuMyA2NC41Yy0yLjctLjMtNS41LS41LTguMy0uNUgyOTZjLTM3LjEgMC02Ny42IDI4LTcxLjYgNjRIMjI0VjI0OGMwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwVjE3NmMwIDAgMC0uMSAwLS4xVjE2MGwxNiAwIDEzNiAwYzAgMCAwIDAgLjEgMEg0NjRjNDQuMiAwIDgwIDM1LjggODAgODB2OHpNMzM2IDE5MnY1NmMwIDM5LjgtMzIuMiA3Mi03MiA3MnMtNzItMzIuMi03Mi03MlYxMjkuNGMtMzUuOSA2LjItNjUuOCAzMi4zLTc2IDY4LjJMOTkuNSAyNTUuMiAyNi4zIDMyOC40Yy0yMS45IDIxLjktMjEuOSA1Ny4zIDAgNzkuMmw3OC4xIDc4LjFjMjEuOSAyMS45IDU3LjMgMjEuOSA3OS4yIDBsMzcuNy0zNy43Yy45IDAgMS44IC4xIDIuNyAuMUgzODRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhjMC01LjYtMS0xMS0yLjctMTZINDMyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4YzAtMTIuOC01LTI0LjQtMTMuMi0zM2MyNS43LTUgNDUuMS0yNy42IDQ1LjItNTQuOHYtLjRjLS4xLTMwLjgtMjUuMS01NS44LTU2LTU1LjhjMCAwIDAgMCAwIDBsLTEyMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc2hha2VTaW1wbGVTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43bC0xMzUtMTA1LjhjLTEuMS0xMS4zLTYuMy0yMi4zLTE1LjMtMzAuN2wtMTM0LjItMTIzLTIzLjQgMTguMi0yNi0yMC4zIDc3LjItNjAuMWM3LTUuNCAxNy00LjIgMjIuNSAyLjhzNC4yIDE3LTIuOCAyMi41bC0yMC45IDE2LjJMNTUwLjIgMzUySDU5MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDhINTE2aC00LS43bC0zLjktMi41TDQzNC44IDc5Yy0xNS4zLTkuOC0zMy4yLTE1LTUxLjQtMTVjLTIxLjggMC00MyA3LjUtNjAgMjEuMmwtODkuNyA3Mi42LTI1LjgtMjAuMyA4MS44LTY2LjJjLTExLjYtNC45LTI0LjEtNy40LTM2LjgtNy40QzIzNCA2NCAyMTUuNyA2OS42IDIwMCA4MGwtMzUuNSAyMy43TDM4LjggNS4xek00MTMuNiA0MjEuOUw0MS4yIDEyOC41QzE3LjkgMTMxLjggMCAxNTEuOCAwIDE3NlYzMDRjMCAyNi41IDIxLjUgNDggNDggNDhIMTU2LjJsOTEuNCA4My40YzE5LjYgMTcuOSA0OS45IDE2LjUgNjcuOC0zLjFjNS41LTYuMSA5LjItMTMuMiAxMS4xLTIwLjZsMTcgMTUuNmMxOS41IDE3LjkgNDkuOSAxNi42IDY3LjgtMi45Yy44LS44IDEuNS0xLjcgMi4yLTIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHNoYWtlU2ltcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMy40IDg1LjJsLTk2LjggNzguNGMtMTYuMSAxMy0xOS4yIDM2LjQtNyA1My4xYzEyLjkgMTcuOCAzOCAyMS4zIDU1LjMgNy44bDk5LjMtNzcuMmM3LTUuNCAxNy00LjIgMjIuNSAyLjhzNC4yIDE3LTIuOCAyMi41bC0yMC45IDE2LjJMNTUwLjIgMzUySDU5MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDhINTE2aC00LS43bC0zLjktMi41TDQzNC44IDc5Yy0xNS4zLTkuOC0zMy4yLTE1LTUxLjQtMTVjLTIxLjggMC00MyA3LjUtNjAgMjEuMnptMjIuOCAxMjQuNGwtNTEuNyA0MC4yQzI2MyAyNzQuNCAyMTcuMyAyNjggMTkzLjcgMjM1LjZjLTIyLjItMzAuNS0xNi42LTczLjEgMTIuNy05Ni44bDgzLjItNjcuM2MtMTEuNi00LjktMjQuMS03LjQtMzYuOC03LjRDMjM0IDY0IDIxNS43IDY5LjYgMjAwIDgwbC03MiA0OEg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWMzA0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDE1Ni4ybDkxLjQgODMuNGMxOS42IDE3LjkgNDkuOSAxNi41IDY3LjgtMy4xYzUuNS02LjEgOS4yLTEzLjIgMTEuMS0yMC42bDE3IDE1LjZjMTkuNSAxNy45IDQ5LjkgMTYuNiA2Ny44LTIuOWM0LjUtNC45IDcuOC0xMC42IDkuOS0xNi41YzE5LjQgMTMgNDUuOCAxMC4zIDYyLjEtNy41YzE3LjktMTkuNSAxNi42LTQ5LjktMi45LTY3LjhsLTEzNC4yLTEyM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHNoYWtlU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN2wtMTM1LTEwNS44Yy0xLjEtMTEuMy02LjMtMjIuMy0xNS4zLTMwLjdsLTEzNC4yLTEyMy0yMy40IDE4LjItMjYtMjAuMyA3Ny4yLTYwLjFjNy01LjQgMTctNC4yIDIyLjUgMi44czQuMiAxNy0yLjggMjIuNWwtMjAuOSAxNi4yTDUxMiAzMTYuOFYxMjhoLS43bC0zLjktMi41TDQzNC44IDc5Yy0xNS4zLTkuOC0zMy4yLTE1LTUxLjQtMTVjLTIxLjggMC00MyA3LjUtNjAgMjEuMmwtODkuNyA3Mi42LTI1LjgtMjAuMyA4MS44LTY2LjJjLTExLjYtNC45LTI0LjEtNy40LTM2LjgtNy40QzIzNCA2NCAyMTUuNyA2OS42IDIwMCA4MGwtMzUuNSAyMy43TDM4LjggNS4xek00MTMuNiA0MjEuOUwxMjggMTk2LjhWMzUyaDI4LjJsOTEuNCA4My40YzE5LjYgMTcuOSA0OS45IDE2LjUgNjcuOC0zLjFjNS41LTYuMSA5LjItMTMuMiAxMS4xLTIwLjZsMTcgMTUuNmMxOS41IDE3LjkgNDkuOSAxNi42IDY3LjgtMi45Yy44LS44IDEuNS0xLjcgMi4yLTIuNnpNOTYgMTcxLjZMNDAuNiAxMjhIMTZjLTguOCAwLTE2IDcuMi0xNiAxNlYzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJINjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTcxLjZ6TTQ4IDMyMGExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6TTU0NCAxMjhWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTguOC03LjItMTYtMTYtMTZINTQ0em0zMiAyMDhhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHNoYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMy40IDg1LjJsLTk2LjggNzguNGMtMTYuMSAxMy0xOS4yIDM2LjQtNyA1My4xYzEyLjkgMTcuOCAzOCAyMS4zIDU1LjMgNy44bDk5LjMtNzcuMmM3LTUuNCAxNy00LjIgMjIuNSAyLjhzNC4yIDE3LTIuOCAyMi41bC0yMC45IDE2LjJMNTEyIDMxNi44VjEyOGgtLjdsLTMuOS0yLjVMNDM0LjggNzljLTE1LjMtOS44LTMzLjItMTUtNTEuNC0xNWMtMjEuOCAwLTQzIDcuNS02MCAyMS4yem0yMi44IDEyNC40bC01MS43IDQwLjJDMjYzIDI3NC40IDIxNy4zIDI2OCAxOTMuNyAyMzUuNmMtMjIuMi0zMC41LTE2LjYtNzMuMSAxMi43LTk2LjhsODMuMi02Ny4zYy0xMS42LTQuOS0yNC4xLTcuNC0zNi44LTcuNEMyMzQgNjQgMjE1LjcgNjkuNiAyMDAgODBsLTcyIDQ4VjM1MmgyOC4ybDkxLjQgODMuNGMxOS42IDE3LjkgNDkuOSAxNi41IDY3LjgtMy4xYzUuNS02LjEgOS4yLTEzLjIgMTEuMS0yMC42bDE3IDE1LjZjMTkuNSAxNy45IDQ5LjkgMTYuNiA2Ny44LTIuOWM0LjUtNC45IDcuOC0xMC42IDkuOS0xNi41YzE5LjQgMTMgNDUuOCAxMC4zIDYyLjEtNy41YzE3LjktMTkuNSAxNi42LTQ5LjktMi45LTY3LjhsLTEzNC4yLTEyM3pNMTYgMTI4Yy04LjggMC0xNiA3LjItMTYgMTZWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjEyOEgxNnpNNDggMzIwYTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpNNTQ0IDEyOFYzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtOC44LTcuMi0xNi0xNi0xNkg1NDR6bTMyIDIwOGExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW51a2lhaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTQuMiAzLjNDMzA5LjEgMTIuMSAyOTYgMzYuNiAyOTYgNTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN0MzMjQuNiAxLjIgMzIyLjQgMCAzMjAgMHMtNC42IDEuMi01LjggMy4zem0tMjg4IDQ4QzIxLjEgNjAuMSA4IDg0LjYgOCAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN0MzNi42IDQ5LjIgMzQuNCA0OCAzMiA0OHMtNC42IDEuMi01LjggMy4zek04OCAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN2MtMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM0MxMDEuMSA2MC4xIDg4IDg0LjYgODggMTA0em04Mi4yLTUyLjdDMTY1LjEgNjAuMSAxNTIgODQuNiAxNTIgMTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0xOS40LTEzLjEtNDMuOS0xOC4yLTUyLjdjLTEuMi0yLjEtMy40LTMuMy01LjgtMy4zcy00LjYgMS4yLTUuOCAzLjN6TTIxNiAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN2MtMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM0MyMjkuMSA2MC4xIDIxNiA4NC42IDIxNiAxMDR6TTM5NC4yIDUxLjNDMzg5LjEgNjAuMSAzNzYgODQuNiAzNzYgMTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0xOS40LTEzLjEtNDMuOS0xOC4yLTUyLjdjLTEuMi0yLjEtMy40LTMuMy01LjgtMy4zcy00LjYgMS4yLTUuOCAzLjN6TTQ0MCAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN2MtMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM0M0NTMuMSA2MC4xIDQ0MCA4NC42IDQ0MCAxMDR6bTgyLjItNTIuN0M1MTcuMSA2MC4xIDUwNCA4NC42IDUwNCAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN2MtMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM3pNNTg0IDEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTkuNC0xMy4xLTQzLjktMTguMi01Mi43Yy0xLjItMi4xLTMuNC0zLjMtNS44LTMuM3MtNC42IDEuMi01LjggMy4zQzU5Ny4xIDYwLjEgNTg0IDg0LjYgNTg0IDEwNHpNMTEyIDE2MGMtOC44IDAtMTYgNy4yLTE2IDE2djk2IDE2aDMyVjI3MiAxNzZjMC04LjgtNy4yLTE2LTE2LTE2em02NCAwYy04LjggMC0xNiA3LjItMTYgMTZ2OTYgMTZoMzJWMjcyIDE3NmMwLTguOC03LjItMTYtMTYtMTZ6bTY0IDBjLTguOCAwLTE2IDcuMi0xNiAxNnY5NiAxNmgzMlYyNzIgMTc2YzAtOC44LTcuMi0xNi0xNi0xNnptMTYwIDBjLTguOCAwLTE2IDcuMi0xNiAxNnY5NiAxNmgzMlYyNzIgMTc2YzAtOC44LTcuMi0xNi0xNi0xNnptNjQgMGMtOC44IDAtMTYgNy4yLTE2IDE2djk2IDE2aDMyVjI3MiAxNzZjMC04LjgtNy4yLTE2LTE2LTE2em02NCAwYy04LjggMC0xNiA3LjItMTYgMTZ2OTYgMTZoMzJWMjcyIDE3NmMwLTguOC03LjItMTYtMTYtMTZ6TTM1MiAxNDRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMzIwSDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2OTZjMCA1MyA0MyA5NiA5NiA5NkgyODh2NjRIMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDMyMCA0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzUyVjM4NEg1NDRjNTMgMCA5Ni00MyA5Ni05NlYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMzUyVjE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFyZERyaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjI4MC40Yy0xNy0xNS4yLTM5LjQtMjQuNC02NC0yNC40SDY0Yy0yNC42IDAtNDcgOS4yLTY0IDI0LjRWOTZ6TTY0IDI4OEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjR2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjM1MmMwLTM1LjMgMjguNy02NCA2NC02NHpNMzIwIDQxNmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTEyOC0zMmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYXNodGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4MS4zIDMyLjRjMTcuNCAyLjkgMjkuMiAxOS40IDI2LjMgMzYuOEwxOTcuOCAxMjhoOTUuMWwxMS41LTY5LjNjMi45LTE3LjQgMTkuNC0yOS4yIDM2LjgtMjYuM3MyOS4yIDE5LjQgMjYuMyAzNi44TDM1Ny44IDEyOEg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzQ3LjFMMzI1LjggMzIwSDM4NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMTUuMWwtMTEuNSA2OS4zYy0yLjkgMTcuNC0xOS40IDI5LjItMzYuOCAyNi4zcy0yOS4yLTE5LjQtMjYuMy0zNi44bDkuOC01OC43SDE1NS4xbC0xMS41IDY5LjNjLTIuOSAxNy40LTE5LjQgMjkuMi0zNi44IDI2LjNzLTI5LjItMTkuNC0yNi4zLTM2LjhMOTAuMiAzODRIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoNjguOWwyMS4zLTEyOEg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg2OC45bDExLjUtNjkuM2MyLjktMTcuNCAxOS40LTI5LjIgMzYuOC0yNi4zek0xODcuMSAxOTJMMTY1LjggMzIwaDk1LjFsMjEuMy0xMjhIMTg3LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhdENvd2JveVNpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUyLjcgMTM1LjlsLTEwLjQgNTcuMmM2LjgtLjcgMTMuNi0xLjEgMjAuNS0xLjFoMTAuN2MzOS40IDAgNzcuOCAxMi4xIDExMC4xIDM0LjdMNTYyLjQgNDIxLjhsMzUuMSAyNC42YzI0LjQtNiA0Mi41LTI4LjEgNDIuNS01NC40YzAtNzUuOC05NC43LTEyNi42LTEzNC42LTE0NC43TDQ3NCA4My45QzQ2OC4yIDUzLjggNDQxLjggMzIgNDExLjEgMzJoLTIuN2MtNS42IDAtMTEuMSAuNy0xNi41IDIuMkwxOTkuMiA4NS41Yy0yMy45IDYuNC00MiAyNi00Ni41IDUwLjR6TTAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDU0NEwyNjUuMyAyNTIuOWMtMjYuOS0xOC44LTU4LjktMjguOS05MS44LTI4LjlIMTYyLjljLTYwLjYgMC0xMTYgMzQuMi0xNDMuMSA4OC40TDEzLjUgMzI1QzQuNiAzNDIuNyAwIDM2Mi4zIDAgMzgyLjJWMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYXRDb3dib3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDY0YzE0LjQgMCAyMi4zLTcgMzAuOC0xNC40QzM2MC40IDQxLjEgMzcwLjcgMzIgMzkyIDMyYzQ5LjMgMCA4NC40IDE1Mi4yIDk3LjkgMjIxLjlDNDQ3LjggMjcyLjEgMzkwLjkgMjg4IDMyMCAyODhzLTEyNy44LTE1LjktMTY5LjktMzQuMUMxNjMuNiAxODQuMiAxOTguNyAzMiAyNDggMzJjMjEuMyAwIDMxLjYgOS4xIDQxLjIgMTcuNkMyOTcuNyA1NyAzMDUuNiA2NCAzMjAgNjR6TTExMS4xIDI3MC43YzQ3LjIgMjQuNSAxMTcuNSA0OS4zIDIwOSA0OS4zczE2MS44LTI0LjggMjA4LjktNDkuM2MyNC44LTEyLjkgNDkuOC0yOC4zIDcwLjEtNDcuN2M3LjktNy45IDIwLjItOS4yIDI5LjYtMy4zYzkuNSA1LjkgMTMuNSAxNy45IDkuOSAyOC41Yy0xMy41IDM3LjctMzguNCA3Mi4zLTY2LjEgMTAwLjZDNTIzLjcgMzk4LjkgNDQzLjYgNDQ4IDMyMCA0NDhzLTIwMy42LTQ5LjEtMjUyLjUtOTkuMkMzOS44IDMyMC40IDE0LjkgMjg1LjggMS40IDI0OC4xYy0zLjYtMTAuNiAuNC0yMi42IDkuOS0yOC41YzkuNS01LjkgMjEuNy00LjUgMjkuNiAzLjNjMjAuNCAxOS40IDQ1LjMgMzQuOCA3MC4xIDQ3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhdFdpemFyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA0MTZMMTY4LjYgMTgwLjdjMTUuMy0zNC40IDQwLjMtNjMuNSA3Mi04My43bDE0Ni45LTk0YzMtMS45IDYuNS0yLjkgMTAtMi45QzQwNy43IDAgNDE2IDguMyA0MTYgMTguNnYxLjZjMCAyLjYtLjUgNS4xLTEuNCA3LjVMMzU0LjggMTc2LjljLTEuOSA0LjctMi44IDkuNy0yLjggMTQuN2MwIDUuNSAxLjIgMTEgMy40IDE2LjFMNDQ4IDQxNkgyNDAuOWwxMS44LTM1LjQgNDAuNC0xMy41YzYuNS0yLjIgMTAuOS04LjMgMTAuOS0xNS4ycy00LjQtMTMtMTAuOS0xNS4ybC00MC40LTEzLjUtMTMuNS00MC40QzIzNyAyNzYuNCAyMzAuOSAyNzIgMjI0IDI3MnMtMTMgNC40LTE1LjIgMTAuOWwtMTMuNSA0MC40LTQwLjQgMTMuNUMxNDguNCAzMzkgMTQ0IDM0NS4xIDE0NCAzNTJzNC40IDEzIDEwLjkgMTUuMmw0MC40IDEzLjVMMjA3LjEgNDE2SDY0ek0yNzkuNiAxNDEuNWMtMS4xLTMuMy00LjEtNS41LTcuNi01LjVzLTYuNSAyLjItNy42IDUuNWwtNi43IDIwLjItMjAuMiA2LjdjLTMuMyAxLjEtNS41IDQuMS01LjUgNy42czIuMiA2LjUgNS41IDcuNmwyMC4yIDYuNyA2LjcgMjAuMmMxLjEgMy4zIDQuMSA1LjUgNy42IDUuNXM2LjUtMi4yIDcuNi01LjVsNi43LTIwLjIgMjAuMi02LjdjMy4zLTEuMSA1LjUtNC4xIDUuNS03LjZzLTIuMi02LjUtNS41LTcuNmwtMjAuMi02LjctNi43LTIwLjJ6TTMyIDQ0OEg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRTaWRlQ291Z2hTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzI1LjhsNDQgMzQuNWM4LjEgMS40IDE0LjggNi44IDE4IDE0LjFMNTUyLjkgNDA4YzEwLjYgLjQgMTkuNSA3LjYgMjIuMiAxNy40bDM5LjEgMzAuNmMuNiAwIDEuMi0uMSAxLjgtLjFjMTEuMSAwIDIwLjQgNy41IDIzLjIgMTcuOGgtMy45YzYuMiA4LjUgNi40IDIwLjQtLjQgMjljLTguMiAxMC40LTIzLjMgMTIuMy0zMy43IDQuMUw5LjIgNDIuOUMtMS4yIDM0LjctMy4xIDE5LjYgNS4xIDkuMlMyOC40LTMuMSAzOC44IDUuMUw4OS42IDQ0LjlDMTI3IDE2LjcgMTczLjUgMCAyMjQgMGgyNGM5NS4yIDAgMTgxLjIgNjkuMyAxOTcuMyAxNjAuMmMyLjMgMTMgNi44IDI1LjcgMTUuMSAzNmw0MiA1Mi42YzYuMiA3LjggOS42IDE3LjQgOS42IDI3LjRjMCAyNC4yLTE5LjYgNDMuOC00My44IDQzLjhINDQ4djAgNS44ek0wIDIyNC4yYzAtMzguNyA5LjgtNzUuMSAyNy4xLTEwNi45TDM0MS44IDM2NS4zbC0yLjUgLjNjLTExIDEuNC0xOS4yIDEwLjctMTkuMiAyMS44YzAgMTEuNiA5IDIxLjIgMjAuNiAyMS45bDYyIDMuOSA0MyAzMy45QzQzOS4zIDQ2Ni4yIDQyMS4yIDQ4MCA0MDAgNDgwSDMyMHY4YzAgMTMuMy0xMC43IDI0LTI0IDI0SDI1NnYwSDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDcuM2MwLTE2LjctNi45LTMyLjUtMTcuMS00NS44QzE2LjYgMzIyLjQgMCAyNzQuMSAwIDIyNC4yek02MTYgMzYwYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptLTY0LTQ4YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptNDAtMjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhZFNpZGVDb3VnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDIyNC4yQzAgMTAwLjYgMTAwLjIgMCAyMjQgMGgyNGM5NS4yIDAgMTgxLjIgNjkuMyAxOTcuMyAxNjAuMmMyLjMgMTMgNi44IDI1LjcgMTUuMSAzNmw0MiA1Mi42YzYuMiA3LjggOS42IDE3LjQgOS42IDI3LjRjMCAyNC4yLTE5LjYgNDMuOC00My44IDQzLjhINDQ4djAgMzJMMzM5LjIgMzY1LjZjLTExIDEuNC0xOS4yIDEwLjctMTkuMiAyMS44YzAgMTEuNiA5IDIxLjIgMjAuNiAyMS45TDQ0OCA0MTZ2MTZjMCAyNi41LTIxLjUgNDgtNDggNDhIMzIwdjhjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMjU2djBIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQwNy4zYzAtMTYuNy02LjktMzIuNS0xNy4xLTQ1LjhDMTYuNiAzMjIuNCAwIDI3NC4xIDAgMjI0LjJ6bTM1Mi0uMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTQ2NCAzODRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTUyLTI0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNNTkyIDQ4MGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwek01NTIgMzEyYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptNDAtMjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpNNTUyIDQwOGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRTaWRlTWFzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAyMjQuMmMwLTIyLjIgMy4yLTQzLjYgOS4yLTYzLjlMMjYyLjIgMzIxYy00IDkuNS02LjIgMjAtNi4yIDMxVjUxMkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQwNy4zYzAtMTYuNy02LjktMzIuNS0xNy4xLTQ1LjhDNDguNiAzMjIuNCAzMiAyNzQuMSAzMiAyMjQuMnptMjQ4LjMgNzAuNEw1MyAxMjkuM0M4OC43IDUzIDE2Ni4yIDAgMjU2IDBoMjRjOTUuMiAwIDE4MS4yIDY5LjMgMTk3LjMgMTYwLjJjMi4zIDEzIDYuOCAyNS43IDE1LjEgMzZsNDIgNTIuNmM1LjQgNi43IDguNiAxNC44IDkuNCAyMy4ySDMzNmMtMjEuNyAwLTQxLjMgOC42LTU1LjcgMjIuNnpNMzM2IDMwNEg1MzRsMCAwaDEwbC0xOS43IDY0SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg1MTQuNWwtOS44IDMySDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg0OTQuOGwtLjkgMi44Yy04LjMgMjYuOS0zMy4xIDQ1LjItNjEuMiA0NS4ySDI4OFYzNTJjMC0xNCA2LTI2LjcgMTUuNi0zNS40YzAgMCAwIDAgMCAwYzguNS03LjggMTkuOS0xMi42IDMyLjQtMTIuNnptNDgtODBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkU2lkZVZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjI0LjJDMCAxMDAuNiAxMDAuMiAwIDIyNCAwaDI0Yzk1LjIgMCAxODEuMiA2OS4zIDE5Ny4zIDE2MC4yYzIuMyAxMyA2LjggMjUuNyAxNS4xIDM2bDQyIDUyLjZjNi4yIDcuOCA5LjYgMTcuNCA5LjYgMjcuNGMwIDI0LjItMTkuNiA0My44LTQzLjggNDMuOEg0NDh2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMzIwdjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDcuM2MwLTE2LjctNi45LTMyLjUtMTcuMS00NS44QzE2LjYgMzIyLjQgMCAyNzQuMSAwIDIyNC4yek0yMjQgNjRjLTguOCAwLTE2IDcuMi0xNiAxNmMwIDMzLTM5LjkgNDkuNS02My4yIDI2LjJjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZDMTQ1LjUgMTUyLjEgMTI5IDE5MiA5NiAxOTJjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZjMzMgMCA0OS41IDM5LjkgMjYuMiA2My4yYy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBDMTY4LjEgMjg2LjUgMjA4IDMwMyAyMDggMzM2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZjMC0zMyAzOS45LTQ5LjUgNjMuMi0yNi4yYzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkMzMDIuNSAyNjMuOSAzMTkgMjI0IDM1MiAyMjRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZjLTMzIDAtNDkuNS0zOS45LTI2LjItNjMuMmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnMtMTYuNC02LjItMjIuNiAwQzI3OS45IDEyOS41IDI0MCAxMTMgMjQwIDgwYzAtOC44LTcuMi0xNi0xNi0xNnptLTI0IDk2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptNDAgODBhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMySDgwaDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDExMlYyMDhIMzM2Vjk2SDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg0OCA0OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0MDBWMjQwIDQxNmgxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzNjggMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDE2VjI3MkgxMTJWNDE2aDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDgwIDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDQ4VjI0MCA5NkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkcGhvbmVzU2ltcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4MEMxNDEuMSA4MCA0OCAxNzMuMSA0OCAyODhWMzkyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjI4OEMwIDE0Ni42IDExNC42IDMyIDI1NiAzMnMyNTYgMTE0LjYgMjU2IDI1NlYzOTJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjg4YzAtMTE0LjktOTMuMS0yMDgtMjA4LTIwOHpNODAgMzUyYzAtMzUuMyAyOC43LTY0IDY0LTY0aDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxNDRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjM1MnptMjg4LTY0YzM1LjMgMCA2NCAyOC43IDY0IDY0djY0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkcGhvbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4MEMxNDkuOSA4MCA2Mi40IDE1OS40IDQ5LjYgMjYyYzkuNC0zLjggMTkuNi02IDMwLjQtNmMyNi41IDAgNDggMjEuNSA0OCA0OFY0MzJjMCAyNi41LTIxLjUgNDgtNDggNDhjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjM4NCAzMzYgMjg4QzAgMTQ2LjYgMTE0LjYgMzIgMjU2IDMyczI1NiAxMTQuNiAyNTYgMjU2djQ4IDQ4IDE2YzAgNDQuMi0zNS44IDgwLTgwIDgwYy0yNi41IDAtNDgtMjEuNS00OC00OFYzMDRjMC0yNi41IDIxLjUtNDggNDgtNDhjMTAuOCAwIDIxIDIuMSAzMC40IDZDNDQ5LjYgMTU5LjQgMzYyLjEgODAgMjU2IDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OEMxNDEuMSA0OCA0OCAxNDEuMSA0OCAyNTZ2NDBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjU2QzAgMTE0LjYgMTE0LjYgMCAyNTYgMFM1MTIgMTE0LjYgNTEyIDI1NlY0MDAuMWMwIDQ4LjYtMzkuNCA4OC04OC4xIDg4TDMxMy42IDQ4OGMtOC4zIDE0LjMtMjMuOCAyNC00MS42IDI0SDI0MGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OGgzMmMxNy44IDAgMzMuMyA5LjcgNDEuNiAyNGwxMTAuNCAuMWMyMi4xIDAgNDAtMTcuOSA0MC00MFYyNTZjMC0xMTQuOS05My4xLTIwOC0yMDgtMjA4ek0xNDQgMjA4aDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxNDRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI3MmMwLTM1LjMgMjguNy02NCA2NC02NHptMjI0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjR2NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMzUyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyNDBjMC0xNy43IDE0LjMtMzIgMzItMzJoMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYXJ0Q2lyY2xlQm9sdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45bDIuNi0yLjRDMjY3LjIgNDM4LjYgMjU2IDQwNC42IDI1NiAzNjhjMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZjMjguMyAwIDU1IDYuNyA3OC43IDE4LjVjLjktNi41IDEuMy0xMyAxLjMtMTkuNnYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTQ3LjktMjI1YzQuMyAzLjcgNS40IDkuOSAyLjYgMTQuOUw0NTIuNCAzNTZINDg4YzUuMiAwIDkuOCAzLjMgMTEuNCA4LjJzLS4xIDEwLjMtNC4yIDEzLjRsLTk2IDcyYy00LjUgMy40LTEwLjggMy4yLTE1LjEtLjZzLTUuNC05LjktMi42LTE0LjlMNDExLjYgMzgwSDM3NmMtNS4yIDAtOS44LTMuMy0xMS40LTguMnMuMS0xMC4zIDQuMi0xMy40bDk2LTcyYzQuNS0zLjQgMTAuOC0zLjIgMTUuMSAuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRDaXJjbGVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45bDIuNi0yLjRDMjY3LjIgNDM4LjYgMjU2IDQwNC42IDI1NiAzNjhjMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZjMjguMyAwIDU1IDYuNyA3OC43IDE4LjVjLjktNi41IDEuMy0xMyAxLjMtMTkuNnYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpNNTc2IDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNzYuNy00My4zYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC03MiA3MmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDE2IDM4NS40bDYwLjctNjAuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRDaXJjbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45bDIuNi0yLjRDMjY3LjIgNDM4LjYgMjU2IDQwNC42IDI1NiAzNjhjMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZjMjguMyAwIDU1IDYuNyA3OC43IDE4LjVjLjktNi41IDEuMy0xMyAxLjMtMTkuNnYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTAtOTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0wLTE0NGM4LjggMCAxNiA3LjIgMTYgMTZ2ODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjg4YzAtOC44IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRDaXJjbGVNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45bDIuNi0yLjRDMjY3LjIgNDM4LjYgMjU2IDQwNC42IDI1NiAzNjhjMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZjMjguMyAwIDU1IDYuNyA3OC43IDE4LjVjLjktNi41IDEuMy0xMyAxLjMtMTkuNnYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpNNTc2IDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNjQgMGMwIDguOC03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2SDQ5NmM4LjggMCAxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYXJ0Q2lyY2xlUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45bDIuNi0yLjRDMjY3LjIgNDM4LjYgMjU2IDQwNC42IDI1NiAzNjhjMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZjMjguMyAwIDU1IDYuNyA3OC43IDE4LjVjLjktNi41IDEuMy0xMyAxLjMtMTkuNnYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTE2LTIwOHY0OGg0OGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg0NDh2NDhjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMzg0SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg0OFYzMDRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRDaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45bDIuNi0yLjRDMjY3LjIgNDM4LjYgMjU2IDQwNC42IDI1NiAzNjhjMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZjMjguMyAwIDU1IDYuNyA3OC43IDE4LjVjLjktNi41IDEuMy0xMyAxLjMtMTkuNnYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTU5LjMtMTgwLjdMNDU0LjYgMzY4bDM2LjcgMzYuN2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwTDQzMiAzOTAuNmwtMzYuNyAzNi43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42TDQwOS40IDM2OGwtMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDMyIDM0NS40bDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYXJ0Q3JhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE5LjQgNDQuMWMyMy4zLTMuOSA0Ni44LTEuOSA2OC42IDUuM2w0OS44IDc3LjUtNzUuNCA3NS40Yy0xLjUgMS41LTIuNCAzLjYtMi4zIDUuOHMxIDQuMiAyLjYgNS43bDExMiAxMDRjMi45IDIuNyA3LjQgMi45IDEwLjUgLjNzMy44LTcgMS43LTEwLjRsLTYwLjQtOTguMSA5MC43LTc1LjZjMi42LTIuMSAzLjUtNS43IDIuNC04LjhMMjk2LjggNjEuOGMyOC41LTE2LjcgNjIuNC0yMy4yIDk1LjctMTcuNkM0NjEuNSA1NS42IDUxMiAxMTUuMiA1MTIgMTg1LjF2NS44YzAgNDEuNS0xNy4yIDgxLjItNDcuNiAxMDkuNUwyODMuNyA0NjkuMWMtNy41IDctMTcuNCAxMC45LTI3LjcgMTAuOXMtMjAuMi0zLjktMjcuNy0xMC45TDQ3LjYgMzAwLjRDMTcuMiAyNzIuMSAwIDIzMi40IDAgMTkwLjl2LTUuOGMwLTY5LjkgNTAuNS0xMjkuNSAxMTkuNC0xNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYXJ0UHVsc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI4LjMgNDY5LjFMNDcuNiAzMDAuNGMtNC4yLTMuOS04LjItOC4xLTExLjktMTIuNGg4N2MyMi42IDAgNDMtMTMuNiA1MS43LTM0LjVsMTAuNS0yNS4yIDQ5LjMgMTA5LjVjMy44IDguNSAxMi4xIDE0IDIxLjQgMTQuMXMxNy44LTUgMjItMTMuM0wzMjAgMjUzLjdsMS43IDMuNGM5LjUgMTkgMjguOSAzMSA1MC4xIDMxSDQ3Ni4zYy0zLjcgNC4zLTcuNyA4LjUtMTEuOSAxMi40TDI4My43IDQ2OS4xYy03LjUgNy0xNy40IDEwLjktMjcuNyAxMC45cy0yMC4yLTMuOS0yNy43LTEwLjl6TTUwMy43IDI0MGgtMTMyYy0zIDAtNS44LTEuNy03LjItNC40bC0yMy4yLTQ2LjNjLTQuMS04LjEtMTIuNC0xMy4zLTIxLjUtMTMuM3MtMTcuNCA1LjEtMjEuNSAxMy4zbC00MS40IDgyLjhMMjA1LjkgMTU4LjJjLTMuOS04LjctMTIuNy0xNC4zLTIyLjItMTQuMXMtMTguMSA1LjktMjEuOCAxNC44bC0zMS44IDc2LjNjLTEuMiAzLTQuMiA0LjktNy40IDQuOUgxNmMtMi42IDAtNSAuNC03LjMgMS4xQzMgMjI1LjIgMCAyMDguMiAwIDE5MC45di01LjhjMC02OS45IDUwLjUtMTI5LjUgMTE5LjQtMTQxQzE2NSAzNi41IDIxMS40IDUxLjQgMjQ0IDg0bDEyIDEyIDEyLTEyYzMyLjYtMzIuNiA3OS00Ny41IDEyNC42LTM5LjlDNDYxLjUgNTUuNiA1MTIgMTE1LjIgNTEyIDE4NS4xdjUuOGMwIDE2LjktMi44IDMzLjUtOC4zIDQ5LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3LjYgMzAwLjRMMjI4LjMgNDY5LjFjNy41IDcgMTcuNCAxMC45IDI3LjcgMTAuOXMyMC4yLTMuOSAyNy43LTEwLjlMNDY0LjQgMzAwLjRjMzAuNC0yOC4zIDQ3LjYtNjggNDcuNi0xMDkuNXYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVsaWNvcHRlclN5bWJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDUuMyAyMjRINTEwQzQ5NS42IDEwOC4yIDQwMy44IDE2LjQgMjg4IDJWNjYuN0MzNjguNCA4MC4xIDQzMS45IDE0My42IDQ0NS4zIDIyNHpNNTEwIDI4OEg0NDUuM0M0MzEuOSAzNjguNCAzNjguNCA0MzEuOSAyODggNDQ1LjRWNTEwYzExNS44LTE0LjQgMjA3LjYtMTA2LjIgMjIyLTIyMnpNMiAyODhDMTYuNCA0MDMuOCAxMDguMiA0OTUuNiAyMjQgNTEwVjQ0NS40QzE0My42IDQzMS45IDgwLjEgMzY4LjQgNjYuNyAyODhIMnptMC02NEg2Ni43QzgwLjEgMTQzLjYgMTQzLjYgODAuMSAyMjQgNjYuN1YyQzEwOC4yIDE2LjQgMTYuNCAxMDguMiAyIDIyNHptMjA2LTY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjM1MmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI4OGg5NnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY2NEgyMDhWMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWxpY29wdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0djY0aDMyYzg4LjQgMCAxNjAgNzEuNiAxNjAgMTYwdjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDM4NCAzMjBjLTIwLjEgMC0zOS4xLTkuNS01MS4yLTI1LjZsLTcxLjQtOTUuMmMtMy41LTQuNy04LjMtOC4zLTEzLjctMTAuNUw0Ny4yIDE5OC4xYy05LjUtMy44LTE2LjctMTItMTkuMi0yMkw1IDgzLjlDMi40IDczLjggMTAuMSA2NCAyMC41IDY0SDQ4YzEwLjEgMCAxOS42IDQuNyAyNS42IDEyLjhMMTEyIDEyOEgzMjBWNjRIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNMzg0IDMyMEg1MTJWMjg4YzAtNTMtNDMtOTYtOTYtOTZIMzg0VjMyMHpNNjMwLjYgNDI1LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTMuOSAzLjljLTI0IDI0LTU2LjYgMzcuNS05MC41IDM3LjVIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDUzNi4yYzE3IDAgMzMuMy02LjcgNDUuMy0xOC43bDMuOS0zLjljMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlbG1ldFNhZmV0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjIuMyA5OS42YzAgNS42LTQuNSAxMC4xLTEwLjEgMTAuMWMtMy42IDAtNy0xLjktOC44LTUuMUwxNTcuMSA4N0M4MyAxMjMuNSAzMiAxOTkuOCAzMiAyODh2NjRINTQ0bDAtNjYuNGMtLjktODcuMi01MS43LTE2Mi40LTEyNS4xLTE5OC42bC00OCA4My45Yy0xLjggMy4yLTUuMiA1LjEtOC44IDUuMWMtNS42IDAtMTAuMS00LjUtMTAuMS0xMC4xVjY2LjMgNjRjMC0xNy43LTE0LjMtMzItMzItMzJIMjU2ek0xNi42IDM4NEM3LjQgMzg0IDAgMzkxLjQgMCA0MDAuNmMwIDQuNyAyIDkuMiA1LjggMTEuOUMyNy41IDQyOC40IDExMS44IDQ4MCAyODggNDgwczI2MC41LTUxLjYgMjgyLjItNjcuNWMzLjgtMi44IDUuOC03LjIgNS44LTExLjljMC05LjItNy40LTE2LjYtMTYuNi0xNi42SDE2LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlbG1ldFVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3OS41IDIyNEM0NzEuMiA5OC45IDM2Ny4yIDAgMjQwIDBDMTA3LjUgMCAwIDEwNy41IDAgMjQwdjU2LjNDMCAzNDQuOCAzOS4yIDM4NCA4Ny43IDM4NEgyMDBoMTQuOUwzNDMuNSA1MDUuNGM0LjUgNC4yIDEwLjQgNi42IDE2LjUgNi42aDk2YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDM2OS41bC0xLjUtMS41VjI4OGg4MCAzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmgtLjV6TTMyMCA0MTcuMmwtNzgtNzMuN0wyNzQuNCAyODhIMzIwVjQxNy4yek0yODUuMyAxMDMuMWwzNC43IDUyVjExMmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djk2YzAgNy4xLTQuNiAxMy4zLTExLjQgMTUuM3MtMTQtLjYtMTcuOS02LjRsLTM0LjctNTJWMjA4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjExMmMwLTcuMSA0LjYtMTMuMyAxMS40LTE1LjNzMTQgLjYgMTcuOSA2LjR6TTE2MCAxMTJ2NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY2NGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OFYxMTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGlnaGxpZ2h0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE1IDMxNWwxNTguNC0yMTVMNDQ0LjEgNzAuNiAyMjkgMjI5IDMxNSAzMTV6bS0xODcgNWwwIDBWMjQ4LjNjMC0xNS4zIDcuMi0yOS42IDE5LjUtMzguNkw0MjAuNiA4LjRDNDI4IDIuOSA0MzcgMCA0NDYuMiAwYzExLjQgMCAyMi40IDQuNSAzMC41IDEyLjZsNTQuOCA1NC44YzguMSA4LjEgMTIuNiAxOSAxMi42IDMwLjVjMCA5LjItMi45IDE4LjItOC40IDI1LjZMMzM0LjQgMzk2LjVjLTkgMTIuMy0yMy40IDE5LjUtMzguNiAxOS41SDIyNGwtMjUuNCAyNS40Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtNTAuNy01MC43Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM0wxMjggMzIwek03IDQ2Ni4zbDYzLTYzIDcwLjYgNzAuNi0zMSAzMWMtNC41IDQuNS0xMC42IDctMTcgN0gyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjR2LTQuN2MwLTYuNCAyLjUtMTIuNSA3LTE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIaWxsQXZhbGFuY2hlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOS43IDQwMS45YzM0LjIgMjMuMSA4MS4xIDE5LjUgMTExLjQtMTAuOGMzNC40LTM0LjQgMzQuNC05MC4xIDAtMTI0LjRjLTI3LjgtMjcuOC02OS41LTMzLjEtMTAyLjYtMTZjLTExLjggNi4xLTE2LjQgMjAuNi0xMC4zIDMyLjNzMjAuNiAxNi40IDMyLjMgMTAuM2MxNS4xLTcuOCAzNC01LjMgNDYuNiA3LjNjMTUuNiAxNS42IDE1LjYgNDAuOSAwIDU2LjZzLTQwLjkgMTUuNi01Ni42IDBsLTgxLjctODEuN0M0MDEuMiAyNjEuMyA0MTYgMjM2LjQgNDE2IDIwOGMwLTMzLjktMjEuMS02Mi45LTUwLjktNzQuNWMxLjktNi44IDIuOS0xNCAyLjktMjEuNWMwLTQ0LjItMzUuOC04MC04MC04MGMtMjcuMyAwLTUxLjUgMTMuNy02NS45IDM0LjZDMjE2LjMgNDYuNiAxOTcuOSAzMiAxNzYgMzJjLTI2LjUgMC00OCAyMS41LTQ4IDQ4YzAgNCAuNSA3LjkgMS40IDExLjZMNDM5LjcgNDAxLjl6TTQ4MCA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0wIDEyOGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTY4LjMgODdDNDMuMSA2MS44IDAgNzkuNyAwIDExNS4zVjQzMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MEgzOTYuN2MzNS42IDAgNTMuNS00My4xIDI4LjMtNjguM0w2OC4zIDg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIaWxsUm9ja3NsaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Mi40IDEwMy44bDI3IDQ4YzIuOCA1IDguMiA4LjIgMTMuOSA4LjJsNTMuMyAwYzUuOCAwIDExLjEtMy4xIDEzLjktOC4ybDI3LTQ4YzIuNy00LjkgMi43LTEwLjggMC0xNS43bC0yNy00OGMtMi44LTUtOC4yLTguMi0xMy45LTguMkgyOTMuNGMtNS44IDAtMTEuMSAzLjEtMTMuOSA4LjJsLTI3IDQ4Yy0yLjcgNC45LTIuNyAxMC44IDAgMTUuN3pNNjguMyA4N0M0My4xIDYxLjggMCA3OS43IDAgMTE1LjNWNDMyYzAgNDQuMiAzNS44IDgwIDgwIDgwSDM5Ni43YzM1LjYgMCA1My41LTQzLjEgMjguMy02OC4zTDY4LjMgODd6TTUwNC4yIDQwMy42YzQuOSAyLjcgMTAuOCAyLjcgMTUuNyAwbDQ4LTI3YzUtMi44IDguMi04LjIgOC4yLTEzLjlWMzA5LjRjMC01LjgtMy4xLTExLjEtOC4yLTEzLjlsLTQ4LTI3Yy00LjktMi43LTEwLjgtMi43LTE1LjcgMGwtNDggMjdjLTUgMi44LTguMiA4LjItOC4yIDEzLjl2NTMuM2MwIDUuOCAzLjEgMTEuMSA4LjIgMTMuOWw0OCAyN3pNMTkyIDY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTM4NCAyODhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIaXBwbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcgNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTcuMiAxNy4yYzEuOS0uMSAzLjktLjIgNS44LS4yaDMyYzExLjIgMCAyMS45IDIuMyAzMS42IDYuNUw1NDMgNTVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45TDU2NCAxMDEuOWM3LjYgMTIuMiAxMiAyNi43IDEyIDQyLjFjMCAxMC4yIDcuNCAxOC44IDE2LjcgMjNjMjcuOSAxMi41IDQ3LjMgNDAuNSA0Ny4zIDczYzAgMjYuMi0xMi42IDQ5LjQtMzIgNjR2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDU2MGMtOC44IDAtMTYtNy4yLTE2LTE2VjMyMEg0ODB2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDQzMmMtOC44IDAtMTYtNy4yLTE2LTE2VjMxOC40Yy0xMS44LTIuNC0yMi43LTcuNC0zMi0xNC40Yy0xLjUtMS4xLTIuOS0yLjMtNC4zLTMuNWMtMTctMTQuNy0yNy43LTM2LjQtMjcuNy02MC41YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2YzAgNDQuNyAyNi4yIDgzLjIgNjQgMTAxLjJWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzcyYy0xOS44IDcuNy00MS40IDEyLTY0IDEycy00NC4yLTQuMy02NC0xMnY3NmMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzI5LjFMNDUuOSAzNjkuN2MtNS40IDEyLjEtMTkuNiAxNy42LTMxLjcgMTIuMlMtMy4zIDM2Mi40IDIuMSAzNTAuM0wyNCAzMDAuOWM1LjMtMTEuOSA4LTI0LjcgOC0zNy43QzMyIDE1NS43IDExNy4yIDY4IDIyMy44IDY0LjFsLjItLjFoNy4ySDI1NmgzMmM0MS43IDAgODMuNCAxMi4xIDExNy4yIDI1LjdjMS43LTEuOCAzLjUtMy42IDUuMy01LjJMNDA3IDgxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXptNzMgMTg1YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6bTg4IDI0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpNNDgwIDE0NGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem00OCAxNmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvY2tleVB1Y2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDI1NkMxMTQuNiAyNTYgMCAyMTMgMCAxNjBzMTE0LjYtOTYgMjU2LTk2czI1NiA0MyAyNTYgOTZzLTExNC42IDk2LTI1NiA5NnptMTkyLjMgMS44YzI0LjctOS4zIDQ2LjktMjEgNjMuNy0zNS42VjM1MmMwIDUzLTExNC42IDk2LTI1NiA5NlMwIDQwNSAwIDM1MlYyMjIuM2MxNi44IDE0LjYgMzkgMjYuMyA2My43IDM1LjZDMTE0LjUgMjc2LjkgMTgyLjUgMjg4IDI1NiAyODhzMTQxLjUtMTEuMSAxOTIuMy0zMC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb2xseUJlcnJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS04MCA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTI3Ni44IDM4My44YzEgLjEgMi4xIC4yIDMuMiAuMmMzOS44IDAgNzIgMzIuMiA3MiA3MnYyMi43YzAgMTYuNCAxNiAyNy45IDMxLjYgMjIuOGwxMi44LTQuM2MxOC02IDM3LjMtNi41IDU1LjYtMS41bDE5LjQgNS4zYzE3LjkgNC45IDM0LjQtMTEuNiAyOS41LTI5LjVMNDk1LjYgNDUyYy01LTE4LjMtNC40LTM3LjYgMS41LTU1LjZsNC4zLTEyLjhjNS4yLTE1LjUtNi40LTMxLjYtMjIuOC0zMS42Yy0zNC42IDAtNjIuNy0yOC4xLTYyLjctNjIuN3YtMzJjMC0xNi40LTE2LTI3LjktMzEuNi0yMi44bC0xMi44IDQuM2MtMTggNi0zNy4zIDYuNS01NS42IDEuNWwtMjkuNi04LjFjLTIuOS0uOC01LjktMS04LjctLjdjNC4yIDkuNyA1LjggMjAuOCAzLjcgMzIuM0wyNzUgMjk4LjdjLTEuNSA4LjQtMS40IDE3IC41IDI1LjNsNS4zIDIzLjljMi44IDEyLjcgMS4xIDI1LjItNCAzNS45ek0xMjcuNiAyMzQuNWMtMTUuNS01LjItMzEuNiA2LjQtMzEuNiAyMi44djMyQzk2IDMyMy45IDY3LjkgMzUyIDMzLjMgMzUyYy0xNi40IDAtMjcuOSAxNi0yMi44IDMxLjZsNC4zIDEyLjhjNiAxOCA2LjUgMzcuMyAxLjUgNTUuNmwtNS4zIDE5LjRDNi4yIDQ4OS40IDIyLjYgNTA1LjggNDAuNSA1MDFMNjAgNDk1LjZjMTguMy01IDM3LjYtNC41IDU1LjYgMS41bDEyLjggNC4zYzE1LjUgNS4yIDMxLjYtNi40IDMxLjYtMjIuOHYtMzJjMC0zNC42IDI4LjEtNjIuNyA2Mi43LTYyLjdjMTYuNCAwIDI3LjktMTYgMjIuOC0zMS42bC00LjMtMTIuOGMtNi0xOC02LjUtMzcuMy0xLjUtNTUuNmw1LjMtMTkuNGM0LjktMTcuOS0xMS42LTM0LjQtMjkuNS0yOS41TDE5NiAyNDAuNGMtMTguMyA1LTM3LjYgNC40LTU1LjYtMS41bC0xMi44LTQuM3pNMzg0IDE0NGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3JzZUhlYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNDY0VjMxNi45YzAtMTA4LjQgNjguMy0yMDUuMSAxNzAuNS0yNDEuM0w0MDQuMiAxNS41QzQyNS42IDcuOSA0NDggMjMuOCA0NDggNDYuNGMwIDExLTUuNSAyMS4yLTE0LjYgMjcuM0w0MDAgOTZjNDguMSAwIDkxLjIgMjkuOCAxMDguMSA3NC45bDQ4LjYgMTI5LjVjMTEuOCAzMS40IDQuMSA2Ni44LTE5LjYgOTAuNWMtMTYgMTYtMzcuOCAyNS4xLTYwLjUgMjUuMWgtMy40Yy0yNi4xIDAtNTAuOS0xMS42LTY3LjYtMzEuN2wtMzIuMy0zOC43Yy0xMS43IDQuMS0yNC4yIDYuNC0zNy4zIDYuNGwtLjEgMCAwIDBjLTYuMyAwLTEyLjUtLjUtMTguNi0xLjVjLTMuNi0uNi03LjItMS40LTEwLjctMi4zbDAgMGMtMjguOS03LjgtNTMuMS0yNi44LTY3LjgtNTIuMmMtNC40LTcuNi0xNC4yLTEwLjMtMjEuOS01LjhzLTEwLjMgMTQuMi01LjggMjEuOWMyNCA0MS41IDY4LjMgNzAgMTE5LjMgNzEuOWw0Ny4yIDcwLjhjNCA2LjEgNi4yIDEzLjIgNi4yIDIwLjRjMCAyMC4zLTE2LjUgMzYuOC0zNi44IDM2LjhIMTEyYy0yNi41IDAtNDgtMjEuNS00OC00OHpNMzkyIDIyNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvcnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAyMzguMVYxNjBoMTZsOS44IDE5LjZjMTIuNSAyNS4xIDQyLjIgMzYuNCA2OC4zIDI2YzIwLjUtOC4yIDMzLjktMjggMzMuOS01MC4xVjgwYzAtMTkuMS04LjQtMzYuMy0yMS43LTQ4SDU2MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg0ODAgNDQ4QzM3Ny4zIDAgMzIwIDU3LjMgMzIwIDEyOEgyMjQgMjAzLjIgMTQ4LjhjLTMwLjcgMC01Ny42IDE2LjMtNzIuNSA0MC44QzMzLjIgMTc0LjUgMCAyMTEuNCAwIDI1NnY1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI1NmMwLTEzLjQgNi42LTI1LjIgMTYuNy0zMi41YzEuNiAxMyA2LjMgMjUuNCAxMy42IDM2LjRsMjguMiA0Mi40YzguMyAxMi40IDYuNCAyOC43LTEuMiA0MS42Yy0xNi41IDI4LTIwLjYgNjIuMi0xMCA5My45bDE3LjUgNTIuNGM0LjQgMTMuMSAxNi42IDIxLjkgMzAuNCAyMS45aDMzLjdjMjEuOCAwIDM3LjMtMjEuNCAzMC40LTQyLjFsLTIwLjgtNjIuNWMtMi4xLTYuNC0uNS0xMy40IDQuMy0xOC4ybDEyLjctMTIuN2MxMy4yLTEzLjIgMjAuNi0zMS4xIDIwLjYtNDkuN2MwLTIuMy0uMS00LjYtLjMtNi45bDg0IDI0YzQuMSAxLjIgOC4yIDIuMSAxMi4zIDIuOFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzE1LjdjMTkuMi0xOS4yIDMxLjUtNDUuNyAzMi03NS43aDB2LTEuOXpNNDk2IDY0YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9zcGl0YWxVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjI1NkgxNDRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMHY2NEgxNDRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMHY4MGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgyNjUuOWMtNi4zLTEwLjItOS45LTIyLjItOS45LTM1LjFjMC00Ni45IDI1LjgtODcuOCA2NC0xMDkuMlYyNzEuOCA0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNMTUyIDY0aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYyNGgyNGM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDE4NHYyNGMwIDguOC03LjIgMTYtMTYgMTZIMTUyYy04LjggMC0xNi03LjItMTYtMTZWMTUySDExMmMtOC44IDAtMTYtNy4yLTE2LTE2VjEyMGMwLTguOCA3LjItMTYgMTYtMTZoMjRWODBjMC04LjggNy4yLTE2IDE2LTE2ek01MTIgMjcyYTgwIDgwIDAgMSAwIC0xNjAgMCA4MCA4MCAwIDEgMCAxNjAgMHpNMjg4IDQ3Ny4xYzAgMTkuMyAxNS42IDM0LjkgMzQuOSAzNC45SDU0MS4xYzE5LjMgMCAzNC45LTE1LjYgMzQuOS0zNC45YzAtNTEuNC00MS43LTkzLjEtOTMuMS05My4xSDM4MS4xYy01MS40IDAtOTMuMSA0MS43LTkzLjEgOTMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9zcGl0YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDQwMGMyNi41IDAgNDggMjEuNSA0OCA0OFY1MTJIMzY4VjQzMmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHY4MEgxOTJWNDh6TTQ4IDk2SDE2MFY1MTJINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjMyMEg4MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgwVjIyNEg4MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgwVjE0NGMwLTI2LjUgMjEuNS00OCA0OC00OHptNTQ0IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NDhINTYwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDgwdjY0SDU2MGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg4MFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDgwVjk2SDU5MnpNMzEyIDY0Yy04LjggMC0xNiA3LjItMTYgMTZ2MjRIMjcyYy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDI0djI0YzAgOC44IDcuMiAxNiAxNiAxNmgxNmM4LjggMCAxNi03LjIgMTYtMTZWMTUyaDI0YzguOCAwIDE2LTcuMiAxNi0xNlYxMjBjMC04LjgtNy4yLTE2LTE2LTE2SDM0NFY4MGMwLTguOC03LjItMTYtMTYtMTZIMzEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3RUdWJQZXJzb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djUuMmMwIDM0IDE0LjQgNjYuNCAzOS43IDg5LjJsMTYuNCAxNC44YzE1LjIgMTMuNyAyMy44IDMzLjEgMjMuOCA1My41VjIwMGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjE4Ni44YzAtMzQtMTQuNC02Ni40LTM5LjctODkuMkwyOTUuOCA4Mi44QzI4MC43IDY5LjEgMjcyIDQ5LjcgMjcyIDI5LjJWMjR6TTAgMzIwdjE2VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDI3Ny4zYy0xMy44IDAtMjcuMy00LjUtMzguNC0xMi44bC04NS4zLTY0QzEzNyAxNjYuNyAxMTYuOCAxNjAgOTYgMTYwYy01MyAwLTk2IDQzLTk2IDk2djY0em0xMjggMTZ2OTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6bTgwLTE2YzguOCAwIDE2IDcuMiAxNiAxNnY5NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2em0xMTIgMTZ2OTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6bTgwLTE2YzguOCAwIDE2IDcuMiAxNiAxNnY5NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2ek0zNjAgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NS4yYzAgMzQgMTQuNCA2Ni40IDM5LjcgODkuMmwxNi40IDE0LjhjMTUuMiAxMy43IDIzLjggMzMuMSAyMy44IDUzLjVWMjAwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMTg2LjhjMC0zNC0xNC40LTY2LjQtMzkuNy04OS4yTDQwNy44IDgyLjhDMzkyLjcgNjkuMSAzODQgNDkuNyAzODQgMjkuMlYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHpNNjQgMTI4QTY0IDY0IDAgMSAwIDY0IDBhNjQgNjQgMCAxIDAgMCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdGRvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODguNiAyMy40YzMxLjIgMzEuMiAzMS4yIDgxLjkgMCAxMTMuMWwtMzUyIDM1MmMtMzEuMiAzMS4yLTgxLjkgMzEuMi0xMTMuMSAwcy0zMS4yLTgxLjkgMC0xMTMuMWwzNTItMzUyYzMxLjItMzEuMiA4MS45LTMxLjIgMTEzLjEgMHpNNDQzLjMgOTIuN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBjLTEyLjUgMTIuNS0yMy44IDE1LjEtMzcuNSAxNy42bC0yLjUgLjRjLTEzLjggMi41LTMxLjYgNS42LTQ4IDIyYy0xNi43IDE2LjctMjAuOSAzNi0yNC4xIDUwLjlsMCAwdjBsLS4yIDFjLTMuNCAxNS42LTYgMjYuNC0xNS43IDM2LjFzLTIwLjUgMTIuMy0zNi4xIDE1LjdsLTEgLjJjLTE0LjkgMy4yLTM0LjIgNy40LTUwLjkgMjQuMXMtMjAuOSAzNi0yNC4xIDUwLjlsLS4yIDFjLTMuNCAxNS42LTYgMjYuNC0xNS43IDM2LjFjLTkuMiA5LjItMTggMTAuOC0zMi43IDEzLjRsMCAwLS45IC4yYy0xNS42IDIuOC0zNC45IDYuOS01NC40IDI2LjRjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGMxMi41LTEyLjUgMjMuOC0xNS4xIDM3LjUtMTcuNmwyLjUtLjRjMTMuOC0yLjUgMzEuNi01LjYgNDgtMjJjMTYuNy0xNi43IDIwLjktMzYgMjQuMS01MC45bC4yLTFjMy40LTE1LjYgNi0yNi40IDE1LjctMzYuMXMyMC41LTEyLjMgMzYuMS0xNS43bDEtLjJjMTQuOS0zLjIgMzQuMi03LjQgNTAuOS0yNC4xczIwLjktMzYgMjQuMS01MC45bC4yLTFjMy40LTE1LjYgNi0yNi40IDE1LjctMzYuMWM5LjItOS4yIDE4LTEwLjggMzIuNy0xMy40bC45LS4yYzE1LjYtMi44IDM0LjktNi45IDU0LjQtMjYuNGM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnpNMTkxLjIgNDc5LjJsMjg4LTI4OEw0OTUgMjA3YzEwLjkgMTAuOSAxNyAyNS42IDE3IDQxcy02LjEgMzAuMS0xNyA0MUwyODkgNDk1Yy0xMC45IDEwLjktMjUuNiAxNy00MSAxN3MtMzAuMS02LjEtNDEtMTdsLTE1LjgtMTUuOHpNMTcgMzA1QzYuMSAyOTQuMSAwIDI3OS40IDAgMjY0czYuMS0zMC4xIDE3LTQxTDIyMyAxN0MyMzMuOSA2LjEgMjQ4LjYgMCAyNjQgMHMzMC4xIDYuMSA0MSAxN2wxNS44IDE1LjgtMjg4IDI4OEwxNyAzMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdGVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJDMCAxNC4zIDE0LjMgMCAzMiAwSDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMlY0NDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzA0VjQ2NGMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHY0OEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMlY2NEMxNC4zIDY0IDAgNDkuNyAwIDMyem05NiA4MHYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZIMTEyYy04LjggMC0xNiA3LjItMTYgMTZ6TTI0MCA5NmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgyNDB6bTExMiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZIMzY4Yy04LjggMC0xNiA3LjItMTYgMTZ6TTExMiAxOTJjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjIwOGMwLTguOC03LjItMTYtMTYtMTZIMTEyem0xMTIgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDI0MGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNDQtMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjIwOGMwLTguOC03LjItMTYtMTYtMTZIMzY4ek0zMjggMzg0YzEzLjMgMCAyNC4zLTEwLjkgMjEtMjMuOGMtMTAuNi00MS41LTQ4LjItNzIuMi05My03Mi4ycy04Mi41IDMwLjctOTMgNzIuMmMtMy4zIDEyLjggNy44IDIzLjggMjEgMjMuOEgzMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXJnbGFzc0VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAwQzE0LjMgMCAwIDE0LjMgMCAzMlMxNC4zIDY0IDMyIDY0Vjc1YzAgNDIuNCAxNi45IDgzLjEgNDYuOSAxMTMuMUwxNDYuNyAyNTYgNzguOSAzMjMuOUM0OC45IDM1My45IDMyIDM5NC42IDMyIDQzN3YxMWMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NCAzMjBoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJWNDM3YzAtNDIuNC0xNi45LTgzLjEtNDYuOS0xMTMuMUwyMzcuMyAyNTZsNjcuOS02Ny45YzMwLTMwIDQ2LjktNzAuNyA0Ni45LTExMy4xVjY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyMCA2NCAzMnpNOTYgNzVWNjRIMjg4Vjc1YzAgMjUuNS0xMC4xIDQ5LjktMjguMSA2Ny45TDE5MiAyMTAuN2wtNjcuOS02Ny45QzEwNi4xIDEyNC45IDk2IDEwMC40IDk2IDc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VyZ2xhc3NIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDBDMTQuMyAwIDAgMTQuMyAwIDMyUzE0LjMgNjQgMzIgNjRWNzVjMCA0Mi40IDE2LjkgODMuMSA0Ni45IDExMy4xTDE0Ni43IDI1NiA3OC45IDMyMy45QzQ4LjkgMzUzLjkgMzIgMzk0LjYgMzIgNDM3djExYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0IDMyMGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMlY0MzdjMC00Mi40LTE2LjktODMuMS00Ni45LTExMy4xTDIzNy4zIDI1Nmw2Ny45LTY3LjljMzAtMzAgNDYuOS03MC43IDQ2LjktMTEzLjFWNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwIDY0IDMyek05NiA3NVY2NEgyODhWNzVjMCAxOS01LjYgMzcuNC0xNiA1M0gxMTJjLTEwLjMtMTUuNi0xNi0zNC0xNi01M3ptMTYgMzA5YzMuNS01LjMgNy42LTEwLjMgMTIuMS0xNC45TDE5MiAzMDEuM2w2Ny45IDY3LjljNC42IDQuNiA4LjYgOS42IDEyLjEgMTQuOUgxMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXJnbGFzc1N0YXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDBDMTQuMyAwIDAgMTQuMyAwIDMyUzE0LjMgNjQgMzIgNjRWNzVjMCA0Mi40IDE2LjkgODMuMSA0Ni45IDExMy4xTDE0Ni43IDI1NiA3OC45IDMyMy45QzQ4LjkgMzUzLjkgMzIgMzk0LjYgMzIgNDM3djExYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0IDMyMGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMlY0MzdjMC00Mi40LTE2LjktODMuMS00Ni45LTExMy4xTDIzNy4zIDI1Nmw2Ny45LTY3LjljMzAtMzAgNDYuOS03MC43IDQ2LjktMTEzLjFWNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwIDY0IDMyek0yODggNDM3djExSDk2VjQzN2MwLTI1LjUgMTAuMS00OS45IDI4LjEtNjcuOUwxOTIgMzAxLjNsNjcuOSA2Ny45YzE4IDE4IDI4LjEgNDIuNCAyOC4xIDY3Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXJnbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyQzAgMTQuMyAxNC4zIDAgMzIgMEg2NCAzMjBoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJWNzVjMCA0Mi40LTE2LjkgODMuMS00Ni45IDExMy4xTDIzNy4zIDI1Nmw2Ny45IDY3LjljMzAgMzAgNDYuOSA3MC43IDQ2LjkgMTEzLjF2MTFjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzIwIDY0IDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyVjQzN2MwLTQyLjQgMTYuOS04My4xIDQ2LjktMTEzLjFMMTQ2LjcgMjU2IDc4LjkgMTg4LjFDNDguOSAxNTguMSAzMiAxMTcuNCAzMiA3NVY2NEMxNC4zIDY0IDAgNDkuNyAwIDMyek05NiA2NFY3NWMwIDI1LjUgMTAuMSA0OS45IDI4LjEgNjcuOUwxOTIgMjEwLjdsNjcuOS02Ny45YzE4LTE4IDI4LjEtNDIuNCAyOC4xLTY3LjlWNjRIOTZ6bTAgMzg0SDI4OFY0MzdjMC0yNS41LTEwLjEtNDkuOS0yOC4xLTY3LjlMMTkyIDMwMS4zbC02Ny45IDY3LjljLTE4IDE4LTI4LjEgNDIuNC0yOC4xIDY3Ljl2MTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlQ2hpbW5leUNyYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NS44IDI1NS41YzAgMTgtMTUgMzIuMS0zMiAzMi4xaC0zMmwuNyAxNjAuMmMuMiAzNS41LTI4LjUgNjQuMy02NCA2NC4zSDMyNi40TDI4OCA0NDhsODAuOC02Ny4zYzcuOC02LjUgNy42LTE4LjYtLjQtMjQuOUwyNTAuNiAyNjMuMmMtMTQuNi0xMS41LTMzLjggNy0yMi44IDIyTDI4OCAzNjhsLTg1LjUgNzEuMmMtNi4xIDUtNy41IDEzLjgtMy41IDIwLjVMMjMwLjQgNTEySDEyOC4xYy0zNS4zIDAtNjQtMjguNy02NC02NFYyODcuNkgzMmMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNDE2IDEwMC43VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjE4NWw1Mi44IDQ2LjRjOCA3IDEyIDE1IDExIDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUNoaW1uZXlNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NS44IDI1NS41YzAgMTgtMTUgMzIuMS0zMiAzMi4xaC0zMmwuNyAxNjAuMmMuMiAzNS41LTI4LjUgNjQuMy02NCA2NC4zSDEyOC4xYy0zNS4zIDAtNjQtMjguNy02NC02NFYyODcuNkgzMmMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNDE2IDEwMC43VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjE4NWw1Mi44IDQ2LjRjOCA3IDEyIDE1IDExIDI0ek0yNzIgMTkyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhIMjA4Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwaDQ4YzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDMyMFYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDI3MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2VDaGltbmV5VXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDMuOCAyODcuNmMxNyAwIDMyLTE0IDMyLTMyLjFjMS05LTMtMTctMTEtMjRMNTEyIDE4NVY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkg0NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjM2LjdMMzA5LjUgN2MtNi01LTE0LTctMjEtN3MtMTUgMS0yMiA4TDEwIDIzMS41Yy03IDctMTAgMTUtMTAgMjRjMCAxOCAxNCAzMi4xIDMyIDMyLjFoMzJWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OC41YzM1LjUgMCA2NC4yLTI4LjggNjQtNjQuM2wtLjctMTYwLjJoMzJ6TTI4OCAxNjBhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6TTE3NiA0MDBjMC00NC4yIDM1LjgtODAgODAtODBoNjRjNDQuMiAwIDgwIDM1LjggODAgODBjMCA4LjgtNy4yIDE2LTE2IDE2SDE5MmMtOC44IDAtMTYtNy4yLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUNoaW1uZXlXaW5kb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc1LjggMjU1LjVjMCAxOC0xNSAzMi4xLTMyIDMyLjFoLTMybC43IDE2MC4yYy4yIDM1LjUtMjguNSA2NC4zLTY0IDY0LjNIMTI4LjFjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI4Ny42SDMyYy0xOCAwLTMyLTE0LTMyLTMyLjFjMC05IDMtMTcgMTAtMjRMMjY2LjQgOGM3LTcgMTUtOCAyMi04czE1IDIgMjEgN0w0MTYgMTAwLjdWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMTg1bDUyLjggNDYuNGM4IDcgMTIgMTUgMTEgMjR6TTI0OCAxOTJjLTEzLjMgMC0yNCAxMC43LTI0IDI0djgwYzAgMTMuMyAxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0VjIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgyNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlQ2hpbW5leSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDMuOCAyODcuNmMxNyAwIDMyLTE0IDMyLTMyLjFjMS05LTMtMTctMTEtMjRMNTEyIDE4NVY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkg0NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjM2LjdMMzA5LjUgN2MtNi01LTE0LTctMjEtN3MtMTUgMS0yMiA4TDEwIDIzMS41Yy03IDctMTAgMTUtMTAgMjRjMCAxOCAxNCAzMi4xIDMyIDMyLjFoMzJ2NjkuN2MtLjEgLjktLjEgMS44LS4xIDIuOFY0NzJjMCAyMi4xIDE3LjkgNDAgNDAgNDBoMTZjMS4yIDAgMi40LS4xIDMuNi0uMmMxLjUgLjEgMyAuMiA0LjUgLjJIMTYwaDI0YzIyLjEgMCA0MC0xNy45IDQwLTQwVjQ0OCAzODRjMC0xNy43IDE0LjMtMzIgMzItMzJoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjQgMjRjMCAyMi4xIDE3LjkgNDAgNDAgNDBoMjQgMzIuNWMxLjQgMCAyLjggMCA0LjItLjFjMS4xIC4xIDIuMiAuMSAzLjMgLjFoMTZjMjIuMSAwIDQwLTE3LjkgNDAtNDBWNDU1LjhjLjMtMi42IC41LTUuMyAuNS04LjFsLS43LTE2MC4yaDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUNpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMC43IDM1MmM4LjEtODkuNyA4My41LTE2MCAxNzUuMy0xNjBjOC45IDAgMTcuNiAuNyAyNi4xIDEuOUwzMDkuNSA3Yy02LTUtMTQtNy0yMS03cy0xNSAxLTIyIDhMMTAgMjMxLjVjLTcgNy0xMCAxNS0xMCAyNGMwIDE4IDE0IDMyLjEgMzIgMzIuMWgzMnY2OS43Yy0uMSAuOS0uMSAxLjgtLjEgMi44VjQ3MmMwIDIyLjEgMTcuOSA0MCA0MCA0MGgxNmMxLjIgMCAyLjQtLjEgMy42LS4yYzEuNSAuMSAzIC4yIDQuNSAuMkgxNjBoMjRjMjIuMSAwIDQwLTE3LjkgNDAtNDBWNDQ4IDM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGwuNyAwek02NDAgMzY4YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS03Ni43LTQzLjNjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZsLTcyIDcyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMGwtNDAtNDBjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0ODAgMzg1LjRsNjAuNy02MC43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUNpcmNsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMC43IDM1MmM4LjEtODkuNyA4My41LTE2MCAxNzUuMy0xNjBjOC45IDAgMTcuNiAuNyAyNi4xIDEuOUwzMDkuNSA3Yy02LTUtMTQtNy0yMS03cy0xNSAxLTIyIDhMMTAgMjMxLjVjLTcgNy0xMCAxNS0xMCAyNGMwIDE4IDE0IDMyLjEgMzIgMzIuMWgzMnY2OS43Yy0uMSAuOS0uMSAxLjgtLjEgMi44VjQ3MmMwIDIyLjEgMTcuOSA0MCA0MCA0MGgxNmMxLjIgMCAyLjQtLjEgMy42LS4yYzEuNSAuMSAzIC4yIDQuNSAuMkgxNjBoMjRjMjIuMSAwIDQwLTE3LjkgNDAtNDBWNDQ4IDM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGwuNyAwek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC05NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAtMTQ0YzguOCAwIDE2IDcuMiAxNiAxNnY4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYyODhjMC04LjggNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUNpcmNsZVhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMC43IDM1MmM4LjEtODkuNyA4My41LTE2MCAxNzUuMy0xNjBjOC45IDAgMTcuNiAuNyAyNi4xIDEuOUwzMDkuNSA3Yy02LTUtMTQtNy0yMS03cy0xNSAxLTIyIDhMMTAgMjMxLjVjLTcgNy0xMCAxNS0xMCAyNGMwIDE4IDE0IDMyLjEgMzIgMzIuMWgzMnY2OS43Yy0uMSAuOS0uMSAxLjgtLjEgMi44VjQ3MmMwIDIyLjEgMTcuOSA0MCA0MCA0MGgxNmMxLjIgMCAyLjQtLjEgMy42LS4yYzEuNSAuMSAzIC4yIDQuNSAuMkgxNjBoMjRjMjIuMSAwIDQwLTE3LjkgNDAtNDBWNDQ4IDM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGwuNyAwek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptNTkuMy0xODAuN0w1MTguNiAzNjhsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBMNDk2IDM5MC42bC0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMNDczLjQgMzY4bC0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0OTYgMzQ1LjRsMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2VDcmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDMuOCAyODcuNmMxNyAwIDMyLTE0IDMyLTMyLjFjMS05LTMtMTctMTEtMjRMMzA5LjUgN2MtNi01LTE0LTctMjEtN3MtMTUgMS0yMiA4TDEwIDIzMS41Yy03IDctMTAgMTUtMTAgMjRjMCAxOCAxNCAzMi4xIDMyIDMyLjFoMzJWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDIzMC40bC0zMS4zLTUyLjJjLTQuMS02LjgtMi42LTE1LjUgMy41LTIwLjVMMjg4IDM2OGwtNjAuMi04Mi44Yy0xMC45LTE1IDguMi0zMy41IDIyLjgtMjJsMTE3LjkgOTIuNmM4IDYuMyA4LjIgMTguNCAuNCAyNC45TDI4OCA0NDhsMzguNCA2NEg0NDguNWMzNS41IDAgNjQuMi0yOC44IDY0LTY0LjNsLS43LTE2MC4yaDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDM1MC4xbDAgMS45SDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjQgMjRjMCAyMi4xLTE3LjkgNDAtNDAgNDBIMTYwIDEyOC4xYy0xLjUgMC0zLS4xLTQuNS0uMmMtMS4yIC4xLTIuNCAuMi0zLjYgLjJIMTA0Yy0yMi4xIDAtNDAtMTcuOS00MC00MFYzNjBjMC0uOSAwLTEuOSAuMS0yLjhWMjg3LjZIMzJjLTE4IDAtMzItMTQtMzItMzIuMWMwLTkgMy0xNyAxMC0yNEwyNjYuNCA4YzctNyAxNS04IDIyLThzMTUgMiAyMSA3TDQ0Ny4zIDEyOC4xYy0xMi4zLTEtMjUgMy0zNC44IDExLjdjLTM1LjQgMzEuNi02NS42IDY3LjctODcuMyAxMDIuOEMzMDQuMyAyNzYuNSAyODggMzE0LjkgMjg4IDM1MC4xek00ODAgNTEyYy04OC40IDAtMTYwLTcxLjYtMTYwLTE2MGMwLTc2LjcgNjIuNS0xNDQuNyAxMDcuMi0xNzkuNGM1LTMuOSAxMC45LTUuOCAxNi44LTUuOGM3LjktLjEgMTYgMy4xIDIyIDkuMmw0NiA0NiAxMS4zLTExLjNjMTEuNy0xMS43IDMwLjYtMTIuNyA0Mi4zLTFDNjI0LjUgMjY4IDY0MCAzMjAuMiA2NDAgMzUyYzAgODguNC03MS42IDE2MC0xNjAgMTYwem02NC0xMTEuOGMwLTM2LjUtMzctNzMtNTQuOC04OC40Yy01LjQtNC43LTEzLjEtNC43LTE4LjUgMEM0NTMgMzI3LjEgNDE2IDM2My42IDQxNiA0MDAuMmMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUZsYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjE5MiA1MTJoNjRWMTkySDYyNGM4LjggMCAxNi03LjIgMTYtMTZWNDhjMC04LjgtNy4yLTE2LTE2LTE2SDUxMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNDE2IDE1OUwyNzYuOCAzOS43Yy0xMi0xMC4zLTI5LjctMTAuMy00MS43IDBsLTIyNCAxOTJDMSAyNDAuNC0yLjcgMjU0LjUgMiAyNjcuMVMxOC42IDI4OCAzMiAyODhINjRWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NC43bC4yIDBoLTFWMTU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUZsb29kV2F0ZXJDaXJjbGVBcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxNDRBMTQ0IDE0NCAwIDEgMCAwIDE0NGExNDQgMTQ0IDAgMSAwIDI4OCAwek0xNDAuNyA3Ni43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwbDU2IDU2YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC01NiA1NmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkwxNjkuNCAxNjBIODBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoODkuNEwxNDAuNyA5OS4zYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnpNMzIwIDE0NGMwIDU3LjMtMjcuNCAxMDguMi02OS44IDE0MC4zYzExLjgtMy42IDIzLTkuNCAzMy0xNi4yYzIyLjEtMTUuNSA1MS42LTE1LjUgNzMuNyAwYzE4LjQgMTIuNyAzOS42IDIwLjMgNTkuMiAyMC4zYzE5IDAgNDEuMi03LjkgNTkuMi0yMC4zYzIzLjgtMTYuNyA1NS44LTE1LjQgNzguMSAzLjRjMi4xIDEuNyA0LjIgMy4zIDYuNSA0LjlsLS4zLTg0LjRINTc2YzEzLjkgMCAyNi4xLTguOSAzMC40LTIyLjFzLS40LTI3LjYtMTEuNi0zNS44bC0xNzYtMTI4QzQwNy42LTIgMzkyLjQtMiAzODEuMiA2LjFMMzAxIDY0LjRjMTIuMSAyMy45IDE5IDUwLjkgMTkgNzkuNnptMTguNSAxNjUuOWMtMTEuMS03LjktMjUuOS03LjktMzcgMEMyNzkgMzI1LjQgMjUxLjUgMzM2IDIyNCAzMzZjLTI2LjkgMC01NS4zLTEwLjgtNzcuNC0yNi4xbDAgMGMtMTEuOS04LjUtMjguMS03LjgtMzkuMiAxLjdjLTE0LjQgMTEuOS0zMi41IDIxLTUwLjYgMjUuMmMtMTcuMiA0LTI3LjkgMjEuMi0yMy45IDM4LjRzMjEuMiAyNy45IDM4LjQgMjMuOWMyNC41LTUuNyA0NC45LTE2LjUgNTguMi0yNUMxNTguNSAzODkuNyAxOTEgNDAwIDIyNCA0MDBjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNiAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNS0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQ3MS40IDMyNS4yIDQ0Mi45IDMzNiA0MTYgMzM2Yy0yNy41IDAtNTUtMTAuNi03Ny41LTI2LjF6bTAgMTEyYy0xMS4xLTcuOS0yNS45LTcuOS0zNyAwQzI3OSA0MzcuNCAyNTEuNSA0NDggMjI0IDQ0OGMtMjYuOSAwLTU1LjMtMTAuOC03Ny40LTI2LjFsMCAwYy0xMS45LTguNS0yOC4xLTcuOC0zOS4yIDEuN2MtMTQuNCAxMS45LTMyLjUgMjEtNTAuNiAyNS4yYy0xNy4yIDQtMjcuOSAyMS4yLTIzLjkgMzguNHMyMS4yIDI3LjkgMzguNCAyMy45YzI0LjUtNS43IDQ0LjktMTYuNSA1OC4yLTI1QzE1OC41IDUwMS43IDE5MSA1MTIgMjI0IDUxMmMzMS45IDAgNjAuNi05LjkgODAuNC0xOC45YzUuOC0yLjcgMTEuMS01LjMgMTUuNi03LjdjNC41IDIuNCA5LjcgNS4xIDE1LjYgNy43YzE5LjggOSA0OC42IDE4LjkgODAuNCAxOC45YzMzIDAgNjUuNS0xMC4zIDk0LjUtMjUuOGMxMy40IDguNCAzMy43IDE5LjMgNTguMiAyNWMxNy4yIDQgMzQuNC02LjcgMzguNC0yMy45cy02LjctMzQuNC0yMy45LTM4LjRjLTE4LjEtNC4yLTM2LjItMTMuMy01MC42LTI1LjJjLTExLjEtOS40LTI3LjMtMTAuMS0zOS4yLTEuN2wwIDBDNDcxLjQgNDM3LjIgNDQyLjkgNDQ4IDQxNiA0NDhjLTI3LjUgMC01NS0xMC42LTc3LjUtMjYuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2VGbG9vZFdhdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNi44IDYuMUMyOTUuNi0yIDI4MC40LTIgMjY5LjIgNi4xbC0xNzYgMTI4Yy0xMS4yIDguMi0xNS45IDIyLjYtMTEuNiAzNS44Uzk4LjEgMTkyIDExMiAxOTJoMTZ2NzNjMS43IDEgMy4zIDIgNC45IDMuMWMxOCAxMi40IDQwLjEgMjAuMyA1OS4yIDIwLjNjMjEuMSAwIDQyLTguNSA1OS4yLTIwLjNjMjIuMS0xNS41IDUxLjYtMTUuNSA3My43IDBjMTguNCAxMi43IDM5LjYgMjAuMyA1OS4yIDIwLjNjMTkgMCA0MS4yLTcuOSA1OS4yLTIwLjNjMS41LTEgMy0yIDQuNS0yLjlsLS4zLTczLjJINDY0YzEzLjkgMCAyNi4xLTguOSAzMC40LTIyLjFzLS40LTI3LjYtMTEuNi0zNS44bC0xNzYtMTI4ek0yNjkuNSAzMDkuOUMyNDcgMzI1LjQgMjE5LjUgMzM2IDE5MiAzMzZjLTI2LjkgMC01NS4zLTEwLjgtNzcuNC0yNi4xbDAgMGMtMTEuOS04LjUtMjguMS03LjgtMzkuMiAxLjdjLTE0LjQgMTEuOS0zMi41IDIxLTUwLjYgMjUuMmMtMTcuMiA0LTI3LjkgMjEuMi0yMy45IDM4LjRzMjEuMiAyNy45IDM4LjQgMjMuOWMyNC41LTUuNyA0NC45LTE2LjUgNTguMi0yNUMxMjYuNSAzODkuNyAxNTkgNDAwIDE5MiA0MDBjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNSAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNS0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQzOS40IDMyNS4yIDQxMC45IDMzNiAzODQgMzM2Yy0yNy41IDAtNTUtMTAuNi03Ny41LTI2LjFjLTExLjEtNy45LTI1LjktNy45LTM3IDB6TTM4NCA0NDhjLTI3LjUgMC01NS0xMC42LTc3LjUtMjYuMWMtMTEuMS03LjktMjUuOS03LjktMzcgMEMyNDcgNDM3LjQgMjE5LjUgNDQ4IDE5MiA0NDhjLTI2LjkgMC01NS4zLTEwLjgtNzcuNC0yNi4xbDAgMGMtMTEuOS04LjUtMjguMS03LjgtMzkuMiAxLjdjLTE0LjQgMTEuOS0zMi41IDIxLTUwLjYgMjUuMmMtMTcuMiA0LTI3LjkgMjEuMi0yMy45IDM4LjRzMjEuMiAyNy45IDM4LjQgMjMuOWMyNC41LTUuNyA0NC45LTE2LjUgNTguMi0yNUMxMjYuNSA1MDEuNyAxNTkgNTEyIDE5MiA1MTJjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNSAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNC0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQzOS40IDQzNy4yIDQxMC45IDQ0OCAzODQgNDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUxhcHRvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTguMyA4LjVjMTIuMy0xMS4zIDMxLjItMTEuMyA0My40IDBsMjA4IDE5MmM2LjcgNi4yIDEwLjMgMTQuOCAxMC4zIDIzLjVIMzM2Yy0xOS4xIDAtMzYuMyA4LjQtNDggMjEuN1YyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDIwOGMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNmg2NFY0MTZIMTEyYy0yNi41IDAtNDgtMjEuNS00OC00OFYyNTZIMzJjLTEzLjIgMC0yNS04LjEtMjkuOC0yMC4zcy0xLjYtMjYuMiA4LjEtMzUuMmwyMDgtMTkyek0zNTIgMzA0VjQ0OEg1NDRWMzA0SDM1MnptLTQ4LTE2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDU2MGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0NDhoMzJjOC44IDAgMTYgNy4yIDE2IDE2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDU0NCAzNTIgMzA0Yy0yNi41IDAtNDgtMjEuNS00OC00OGMwLTguOCA3LjItMTYgMTYtMTZoMzJWMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZUxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDQ4MGMwIDExLjcgMy4xIDIyLjYgOC42IDMySDM5MmMtMjIuMSAwLTQwLTE3LjktNDAtNDBWNDQ4IDM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgyNTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0IDI0YzAgMjIuMS0xNy45IDQwLTQwIDQwSDE2MCAxMjguMWMtMS41IDAtMy0uMS00LjUtLjJjLTEuMiAuMS0yLjQgLjItMy42IC4ySDEwNGMtMjIuMSAwLTQwLTE3LjktNDAtNDBWMzYwYzAtLjkgMC0xLjkgLjEtMi44VjI4Ny42SDMyYy0xOCAwLTMyLTE0LTMyLTMyLjFjMC05IDMtMTcgMTAtMjRMMjY2LjQgOGM3LTcgMTUtOCAyMi04czE1IDIgMjEgN0w0OTAuNyAxNjYuM0M0NDcuMiAxODEuNyA0MTYgMjIzLjIgNDE2IDI3MnYyNC42Yy0xOS4xIDExLjEtMzIgMzEuNy0zMiA1NS40VjQ4MHpNNTI4IDI0MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NDhoNjRWMjcyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tODAgMzJjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MHY0OGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJINDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNTJjMC0xNy43IDE0LjMtMzIgMzItMzJWMjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZU1lZGljYWxDaXJjbGVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMzY4YzAgNTkuNSAyOS41IDExMi4xIDc0LjggMTQ0SDEyOC4xYy0zNS4zIDAtNjQtMjguNy02NC02NFYyODcuNkgzMmMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNTIyLjEgMTkzLjljLTguNS0xLjMtMTcuMy0xLjktMjYuMS0xLjljLTU0LjcgMC0xMDMuNSAyNC45LTEzNS44IDY0SDMyMFYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDIwOGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2em0zMiAwYTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTIxMS4zLTQzLjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDQ4MCAzODUuNGwtMjguNy0yOC43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDQwIDQwYzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDcyLTcyYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZU1lZGljYWxDaXJjbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMzY4YzAgNTkuNSAyOS41IDExMi4xIDc0LjggMTQ0SDEyOC4xYy0zNS4zIDAtNjQtMjguNy02NC02NFYyODcuNkgzMmMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNTIyLjEgMTkzLjljLTguNS0xLjMtMTcuMy0xLjktMjYuMS0xLjljLTU0LjcgMC0xMDMuNSAyNC45LTEzNS44IDY0SDMyMFYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDIwOGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2ek00OTYgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMCAyNDBhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0wLTE5MmMtOC44IDAtMTYgNy4yLTE2IDE2djgwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjg4YzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2VNZWRpY2FsQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDM2OGMwIDU5LjUgMjkuNSAxMTIuMSA3NC44IDE0NEgxMjguMWMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjg3LjZIMzJjLTE4IDAtMzItMTQtMzItMzIuMWMwLTkgMy0xNyAxMC0yNEwyNjYuNCA4YzctNyAxNS04IDIyLThzMTUgMiAyMSA3TDUyMi4xIDE5My45Yy04LjUtMS4zLTE3LjMtMS45LTI2LjEtMS45Yy01NC43IDAtMTAzLjUgMjQuOS0xMzUuOCA2NEgzMjBWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgyMDhjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNDh2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnpNNDk2IDIyNGExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTIyLjYgMTQ0bDM2LjctMzYuN2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNnMtMTYuNC02LjItMjIuNiAwTDQ5NiAzNDUuNGwtMzYuNy0zNi43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42TDQ3My40IDM2OGwtMzYuNyAzNi43Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBMNDk2IDM5MC42bDM2LjcgMzYuN2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZMNTE4LjYgMzY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZU1lZGljYWxGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMySDYyNGM4LjggMCAxNiA3LjIgMTYgMTZWMTc2YzAgOC44LTcuMiAxNi0xNiAxNkg1MTJWNTEySDQ0OFYxOTIgMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTI3Ni44IDM5LjdMNDE2IDE1OVY1MTJoMWwtLjIgMEg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjg4SDMyYy0xMy40IDAtMjUuNC04LjMtMzAtMjAuOXMtMS0yNi43IDkuMi0zNS40bDIyNC0xOTJjMTItMTAuMyAyOS43LTEwLjMgNDEuNyAwek0yMjQgMjA4djQ4SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyMGg0OGM4LjggMCAxNi03LjIgMTYtMTZWMjcyYzAtOC44LTcuMi0xNi0xNi0xNkgyODhWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkgyNDBjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2VNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0My44IDI4Ny42YzE3IDAgMzItMTQgMzItMzIuMWMxLTktMy0xNy0xMS0yNEwzMDkuNSA3Yy02LTUtMTQtNy0yMS03cy0xNSAxLTIyIDhMMTAgMjMxLjVjLTcgNy0xMCAxNS0xMCAyNGMwIDE4IDE0IDMyLjEgMzIgMzIuMWgzMlY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4LjVjMzUuNSAwIDY0LjItMjguOCA2NC02NC4zbC0uNy0xNjAuMmgzMnpNMjU2IDIwOGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djQ4aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzIwdjQ4YzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYzMjBIMjA4Yy04LjggMC0xNi03LjItMTYtMTZWMjcyYzAtOC44IDcuMi0xNiAxNi0xNmg0OFYyMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlU2lnbmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1Ny43IDguNWMtMTIuMy0xMS4zLTMxLjItMTEuMy00My40IDBsLTIwOCAxOTJjLTkuNCA4LjYtMTIuNyAyMi04LjUgMzRjODcuMSAyNS4zIDE1NS42IDk0LjIgMTgwLjMgMTgxLjZINDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI1NmgzMmMxMy4yIDAgMjUtOC4xIDI5LjgtMjAuM3MxLjYtMjYuMi04LjEtMzUuMmwtMjA4LTE5MnpNMjg4IDIwOGMwLTguOCA3LjItMTYgMTYtMTZoNjRjOC44IDAgMTYgNy4yIDE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNkgzMDRjLTguOCAwLTE2LTcuMi0xNi0xNlYyMDh6TTI0IDI1NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGMxMDEuNiAwIDE4NCA4Mi40IDE4NCAxODRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTEyOC4xLTEwMy45LTIzMi0yMzItMjMyem04IDI1NmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTAgMzc2YzAgMTMuMyAxMC43IDI0IDI0IDI0YzQ4LjYgMCA4OCAzOS40IDg4IDg4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC03NS4xLTYwLjktMTM2LTEzNi0xMzZjLTEzLjMgMC0yNCAxMC43LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZVRzdW5hbWkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAuOCAxMzYuNUMxMDQuOSA5My44IDE1Mi42IDY0IDIwOSA2NGMxNi45IDAgMzMuMSAyLjcgNDguMiA3LjdjMTYuOCA1LjUgMzQuOS0zLjYgNDAuNC0yMC40cy0zLjYtMzQuOS0yMC40LTQwLjRDMjU1LjggMy44IDIzMi44IDAgMjA5IDBDOTUuMiAwIDAgODggMCAyMDBjMCA5MS42IDUzLjUgMTcyLjEgMTQyLjIgMTk0LjFjMTMuNCAzLjggMjcuNSA1LjkgNDIuMiA1LjljLjcgMCAxLjQgMCAyLjEtLjFjMS44IDAgMy43IC4xIDUuNSAuMWwwIDBjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNSAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNS0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQzOS40IDMyNS4yIDQxMC45IDMzNiAzODQgMzM2Yy0yNy41IDAtNTUtMTAuNi03Ny41LTI2LjFjLTExLjEtNy45LTI1LjktNy45LTM3IDBjLTIyLjQgMTUuNS00OS45IDI2LjEtNzcuNCAyNi4xYzAgMC0uMSAwLS4xIDBjLTEyLjQgMC0yNC0xLjUtMzQuOS00LjNDMTIxLjYgMzIwLjIgOTYgMjg3IDk2IDI0OGMwLTQ4LjUgMzkuNS04OCA4OC40LTg4YzEzLjUgMCAyNi4xIDMgMzcuNSA4LjNjMTYgNy41IDM1LjEgLjYgNDIuNS0xNS41cy42LTM1LjEtMTUuNS00Mi41QzIyOS4zIDEwMS4xIDIwNy40IDk2IDE4NC40IDk2Yy00MCAwLTc2LjQgMTUuNC0xMDMuNiA0MC41em0yNTItMTguMWMtOC4xIDYtMTIuOCAxNS41LTEyLjggMjUuNlYyNjVjMS42IDEgMy4zIDIgNC44IDMuMWMxOC40IDEyLjcgMzkuNiAyMC4zIDU5LjIgMjAuM2MxOSAwIDQxLjItNy45IDU5LjItMjAuM2MyMy44LTE2LjcgNTUuOC0xNS4zIDc4LjEgMy40YzEwLjYgOC44IDI0LjIgMTUuNiAzNy4zIDE4LjZjNS44IDEuNCAxMS4yIDMuNCAxNi4yIDYuMmMuNy0yLjcgMS4xLTUuNSAxLjEtOC40bC0uNC0xNDRjMC0xMC00LjctMTkuNC0xMi43LTI1LjVsLTk1LjUtNzJjLTExLjQtOC42LTI3LjEtOC42LTM4LjUgMGwtOTYgNzJ6TTM4NCA0NDhjLTI3LjUgMC01NS0xMC42LTc3LjUtMjYuMWMtMTEuMS03LjktMjUuOS03LjktMzcgMEMyNDcgNDM3LjQgMjE5LjUgNDQ4IDE5MiA0NDhjLTI2LjkgMC01NS4zLTEwLjgtNzcuNC0yNi4xbDAgMGMtMTEuOS04LjUtMjguMS03LjgtMzkuMiAxLjdjLTE0LjQgMTEuOS0zMi41IDIxLTUwLjYgMjUuMmMtMTcuMiA0LTI3LjkgMjEuMi0yMy45IDM4LjRzMjEuMiAyNy45IDM4LjQgMjMuOWMyNC41LTUuNyA0NC45LTE2LjUgNTguMi0yNUMxMjYuNSA1MDEuNyAxNTkgNTEyIDE5MiA1MTJjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNSAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNC0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQzOS40IDQzNy4yIDQxMC45IDQ0OCAzODQgNDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZVVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc1LjggMjU1LjVjMCAxOC0xNSAzMi4xLTMyIDMyLjFoLTMybC43IDE2MC4yYy4yIDM1LjUtMjguNSA2NC4zLTY0IDY0LjNIMTI4LjFjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI4Ny42SDMyYy0xOCAwLTMyLTE0LTMyLTMyLjFjMC05IDMtMTcgMTAtMjRMMjY2LjQgOGM3LTcgMTUtOCAyMi04czE1IDIgMjEgN0w1NjQuOCAyMzEuNWM4IDcgMTIgMTUgMTEgMjR6TTM1MiAyMjRhNjQgNjQgMCAxIDAgLTEyOCAwIDY0IDY0IDAgMSAwIDEyOCAwem0tOTYgOTZjLTQ0LjIgMC04MCAzNS44LTgwIDgwYzAgOC44IDcuMiAxNiAxNiAxNkgzODRjOC44IDAgMTYtNy4yIDE2LTE2YzAtNDQuMi0zNS44LTgwLTgwLTgwSDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc1LjggMjU1LjVjMCAxOC0xNSAzMi4xLTMyIDMyLjFoLTMybC43IDE2MC4yYzAgMi43LS4yIDUuNC0uNSA4LjFWNDcyYzAgMjIuMS0xNy45IDQwLTQwIDQwSDQ1NmMtMS4xIDAtMi4yIDAtMy4zLS4xYy0xLjQgLjEtMi44IC4xLTQuMiAuMUg0MTYgMzkyYy0yMi4xIDAtNDAtMTcuOS00MC00MFY0NDggMzg0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjQgMjRjMCAyMi4xLTE3LjkgNDAtNDAgNDBIMTYwIDEyOC4xYy0xLjUgMC0zLS4xLTQuNS0uMmMtMS4yIC4xLTIuNCAuMi0zLjYgLjJIMTA0Yy0yMi4xIDAtNDAtMTcuOS00MC00MFYzNjBjMC0uOSAwLTEuOSAuMS0yLjhWMjg3LjZIMzJjLTE4IDAtMzItMTQtMzItMzIuMWMwLTkgMy0xNyAxMC0yNEwyNjYuNCA4YzctNyAxNS04IDIyLThzMTUgMiAyMSA3TDU2NC44IDIzMS41YzggNyAxMiAxNSAxMSAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSHJ5dm5pYVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIxLjkgMTE2LjJDMTM4LjMgMTAzLjEgMTU4LjcgOTYgMTc5LjYgOTZIMjIzYzI3LjEgMCA0OSAyMS45IDQ5IDQ5YzAgMTEuNS00IDIyLjQtMTEuMSAzMUgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgxNTUuNWwtNTAuNiAyOC45Yy0xLjcgMS0zLjQgMi01LjEgMy4xSDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDUyLjNjLTIuOCA5LjktNC4zIDIwLjQtNC4zIDMxYzAgNjIuNCA1MC42IDExMyAxMTMgMTEzaDQzLjRjMzUuNSAwIDcwLTEyLjEgOTcuNy0zNC4zTDMwOCA0NDFjMTMuOC0xMSAxNi0zMS4yIDUtNDVzLTMxLjItMTYtNDUtNWwtNS45IDQuN2MtMTYuNCAxMy4xLTM2LjcgMjAuMi01Ny43IDIwLjJIMTYxYy0yNy4xIDAtNDktMjEuOS00OS00OWMwLTExLjUgNC0yMi40IDExLjEtMzFIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDIyOC41bDUwLjYtMjguOWMxLjctMSAzLjQtMiA1LjEtMy4xSDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMzEuN2MyLjgtMTAgNC4zLTIwLjQgNC4zLTMxYzAtNjIuNC01MC42LTExMy0xMTMtMTEzSDE3OS42Yy0zNS41IDAtNzAgMTIuMS05Ny43IDM0LjNMNzYgNzFjLTEzLjggMTEtMTYgMzEuMi01IDQ1czMxLjIgMTYgNDUgNWw1LjktNC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIdXJyaWNhbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyMDhDMCAxMDQuNCA3NS43IDE4LjUgMTc0LjkgMi42QzE4NCAxLjIgMTkyIDguNiAxOTIgMTcuOVY4MS4yYzAgOC40IDYuNSAxNS4zIDE0LjcgMTYuNUMzMDcgMTEyLjUgMzg0IDE5OSAzODQgMzAzLjRjMCAxMDMuNi03NS43IDE4OS41LTE3NC45IDIwNS40Yy05LjIgMS41LTE3LjEtNS45LTE3LjEtMTUuMlY0MzAuMmMwLTguNC02LjUtMTUuMy0xNC43LTE2LjVDNzcgMzk4LjkgMCAzMTIuNCAwIDIwOHptMjg4IDQ4QTk2IDk2IDAgMSAwIDk2IDI1NmE5NiA5NiAwIDEgMCAxOTIgMHptLTk2LTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSUN1cnNvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uMSAyOS4zQy0xLjQgNDcgMTEuNyA2Mi40IDI5LjMgNjMuOWw4IC43QzcwLjUgNjcuMyA5NiA5NSA5NiAxMjguM1YyMjRINjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIOTZ2OTUuN2MwIDMzLjMtMjUuNSA2MS01OC43IDYzLjhsLTggLjdDMTEuNyA0NDkuNi0xLjQgNDY1IC4xIDQ4Mi43czE2LjkgMzAuNyAzNC41IDI5LjJsOC0uN2MzNC4xLTIuOCA2NC4yLTE4LjkgODUuNC00Mi45YzIxLjIgMjQgNTEuMiA0MC4xIDg1LjQgNDIuOWw4IC43YzE3LjYgMS41IDMzLjEtMTEuNiAzNC41LTI5LjJzLTExLjYtMzMuMS0yOS4yLTM0LjVsLTgtLjdDMTg1LjUgNDQ0LjcgMTYwIDQxNyAxNjAgMzgzLjdWMjg4aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE2MFYxMjguM2MwLTMzLjMgMjUuNS02MSA1OC43LTYzLjhsOC0uN2MxNy42LTEuNSAzMC43LTE2LjkgMjkuMi0zNC41UzIzOS0xLjQgMjIxLjMgLjFsLTggLjdDMTc5LjIgMy42IDE0OS4yIDE5LjcgMTI4IDQzLjdjLTIxLjItMjQtNTEuMi00MC04NS40LTQyLjlsLTgtLjdDMTctMS40IDEuNiAxMS43IC4xIDI5LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2aDk2VjQxNkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyVjk2aDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE2MCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWNlQ3JlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY3LjEgMTYwYy42LTUuMyAuOS0xMC42IC45LTE2QzM2OCA2NC41IDMwMy41IDAgMjI0IDBTODAgNjQuNSA4MCAxNDRjMCA1LjQgLjMgMTAuNyAuOSAxNkg4MGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhzMjEuNSA0OCA0OCA0OGg1My41IDE4MUgzNjhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDhoLS45ek05NiAyODhMMjAwLjggNDk3LjdjNC40IDguOCAxMy4zIDE0LjMgMjMuMiAxNC4zczE4LjgtNS41IDIzLjItMTQuM0wzNTIgMjg4SDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJY2ljbGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTc1LjggMzA0LjhMMSAzNS43Yy0uNy0yLjUtMS01LTEtNy41QzAgMTIuNiAxMi42IDAgMjguMiAwSDQ4Mi40QzQ5OC44IDAgNTEyIDEzLjIgNTEyIDI5LjZjMCAxLjYtLjEgMy4zLS40IDQuOUw0MzQuNiA0OTYuMWMtMS41IDkuMi05LjUgMTUuOS0xOC44IDE1LjljLTkuMiAwLTE3LjEtNi42LTE4LjctMTUuNkwzMzYgMTYwIDMwNy4yIDMwMy45Yy0xLjkgOS4zLTEwLjEgMTYuMS0xOS42IDE2LjFjLTkuMiAwLTE3LjItNi4yLTE5LjQtMTUuMUwyNDAgMTkyIDIxMC42IDM2OC4yYy0xLjUgOS4xLTkuNCAxNS44LTE4LjYgMTUuOHMtMTcuMS02LjctMTguNi0xNS44TDE0NCAxOTIgMTE1LjkgMzA0LjNjLTIuMyA5LjItMTAuNiAxNS43LTIwLjEgMTUuN2MtOS4zIDAtMTcuNS02LjItMjAtMTUuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWNvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAwLjMgNy4zQzUwNy43IDEzLjMgNTEyIDIyLjQgNTEyIDMyVjE3NmMwIDI2LjUtMjguNyA0OC02NCA0OHMtNjQtMjEuNS02NC00OHMyOC43LTQ4IDY0LTQ4VjcxTDM1MiA5MC4yVjIwOGMwIDI2LjUtMjguNyA0OC02NCA0OHMtNjQtMjEuNS02NC00OHMyOC43LTQ4IDY0LTQ4VjY0YzAtMTUuMyAxMC44LTI4LjQgMjUuNy0zMS40bDE2MC0zMmM5LjQtMS45IDE5LjEgLjYgMjYuNiA2LjZ6TTc0LjcgMzA0bDExLjgtMTcuOGM1LjktOC45IDE1LjktMTQuMiAyNi42LTE0LjJoNjEuN2MxMC43IDAgMjAuNyA1LjMgMjYuNiAxNC4yTDIxMy4zIDMwNEgyNDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzNTJjMC0yNi41IDIxLjUtNDggNDgtNDhINzQuN3pNMTkyIDQwOGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek00NzguNyAyNzguM0w0NDAuMyAzNjhINDk2YzYuNyAwIDEyLjYgNC4xIDE1IDEwLjRzLjYgMTMuMy00LjQgMTcuN2wtMTI4IDExMmMtNS42IDQuOS0xMy45IDUuMy0xOS45IC45cy04LjItMTIuNC01LjMtMTkuMkwzOTEuNyA0MDBIMzM2Yy02LjcgMC0xMi42LTQuMS0xNS0xMC40cy0uNi0xMy4zIDQuNC0xNy43bDEyOC0xMTJjNS42LTQuOSAxMy45LTUuMyAxOS45LS45czguMiAxMi40IDUuMyAxOS4yem0tMzM5LTU5LjJjLTYuNSA2LjUtMTcgNi41LTIzIDBMMTkuOSAxMTkuMmMtMjgtMjktMjYuNS03Ni45IDUtMTAzLjljMjctMjMuNSA2OC40LTE5IDkzLjQgNi41bDEwIDEwLjUgOS41LTEwLjVjMjUtMjUuNSA2NS45LTMwIDkzLjktNi41YzMxIDI3IDMyLjUgNzQuOSA0LjUgMTAzLjlsLTk2LjQgOTkuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWRCYWRnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em05NiAzMjBoNjRjNDQuMiAwIDgwIDM1LjggODAgODBjMCA4LjgtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZjMC00NC4yIDM1LjgtODAgODAtODB6bS0zMi05NmE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTE0NCA2NGg5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxNDRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUlkQ2FyZENsaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJWOTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNNjQgNjRIMTkydjQ4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjY0SDUxMmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NHpNMTc2IDQzNy4zYzAgNS45IDQuOCAxMC43IDEwLjcgMTAuN0gzODkuM2M1LjkgMCAxMC43LTQuOCAxMC43LTEwLjdjMC0yOS41LTIzLjktNTMuMy01My4zLTUzLjNIMjI5LjNjLTI5LjUgMC01My4zIDIzLjktNTMuMyA1My4zek0yODggMzUyYTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJZENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5Nmw1NzYgMGMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDMyIDAgNjAuNyAwIDk2em0wIDMyVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4SDB6TTY0IDQwNS4zYzAtMjkuNSAyMy45LTUzLjMgNTMuMy01My4zSDIzNC43YzI5LjUgMCA1My4zIDIzLjkgNTMuMyA1My4zYzAgNS45LTQuOCAxMC43LTEwLjcgMTAuN0g3NC43Yy01LjkgMC0xMC43LTQuOC0xMC43LTEwLjd6TTE3NiAxOTJhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6bTE3NiAxNmMwLTguOCA3LjItMTYgMTYtMTZINDk2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2em0wIDY0YzAtOC44IDcuMi0xNiAxNi0xNkg0OTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZ6bTAgNjRjMC04LjggNy4yLTE2IDE2LTE2SDQ5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWdsb28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDMzLjhWMTYwSDQ4LjVDMTAwLjIgODIuOCAxODguMSAzMiAyODggMzJjMTAuOCAwIDIxLjUgLjYgMzIgMS44ek0zNTIgMTYwVjM5LjFDNDI0LjkgNTUuNyA0ODcuMiA5OS44IDUyNy41IDE2MEgzNTJ6TTI5LjkgMTkySDk2VjMyMEgwYzAtNDYgMTAuOC04OS40IDI5LjktMTI4ek0xOTIgMzIwSDEyOFYxOTJINDQ4VjMyMEgzODR2MzJINTc2djgwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDM1MlYzNTJjMC0zNS4zLTI4LjctNjQtNjQtNjRzLTY0IDI4LjctNjQgNjRWNDgwSDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzNTJIMTkyVjMyMHptMjg4IDBWMTkyaDY2LjFjMTkuMiAzOC42IDI5LjkgODIgMjkuOSAxMjhINDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbWFnZVBvcnRyYWl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCA2NGMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTM4NHpNMTI4IDE5MmE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTgwIDM1Ni42YzAtMzcuOSAzMC43LTY4LjYgNjguNi02OC42aDg2LjljMzcuOSAwIDY4LjYgMzAuNyA2OC42IDY4LjZjMCAxNS4xLTEyLjMgMjcuNC0yNy40IDI3LjRIMTA3LjRDOTIuMyAzODQgODAgMzcxLjcgODAgMzU2LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUltYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6TTMyMy44IDIwMi41Yy00LjUtNi42LTExLjktMTAuNS0xOS44LTEwLjVzLTE1LjQgMy45LTE5LjggMTAuNWwtODcgMTI3LjZMMTcwLjcgMjk3Yy00LjYtNS43LTExLjUtOS0xOC43LTlzLTE0LjIgMy4zLTE4LjcgOWwtNjQgODBjLTUuOCA3LjItNi45IDE3LjEtMi45IDI1LjRzMTIuNCAxMy42IDIxLjYgMTMuNmg5NiAzMkg0MjRjOC45IDAgMTcuMS00LjkgMjEuMi0xMi44czMuNi0xNy40LTEuNC0yNC43bC0xMjAtMTc2ek0xMTIgMTkyYTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW1hZ2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCAzMmMtMzUuMyAwLTY0IDI4LjctNjQgNjRWMzIwYzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEgxNjB6TTM5NiAxMzguN2w5NiAxNDRjNC45IDcuNCA1LjQgMTYuOCAxLjIgMjQuNlM0ODAuOSAzMjAgNDcyIDMyMEgzMjggMjgwIDIwMGMtOS4yIDAtMTcuNi01LjMtMjEuNi0xMy42cy0yLjktMTguMiAyLjktMjUuNGw2NC04MGM0LjYtNS43IDExLjQtOSAxOC43LTlzMTQuMiAzLjMgMTguNyA5bDE3LjMgMjEuNiA1Ni04NEMzNjAuNSAxMzIgMzY4IDEyOCAzNzYgMTI4czE1LjUgNCAyMCAxMC43ek0xOTIgMTI4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTQ4IDEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNFMwIDEwNi43IDAgMTIwVjM0NGMwIDc1LjEgNjAuOSAxMzYgMTM2IDEzNkg0NTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTM2Yy00OC42IDAtODgtMzkuNC04OC04OFYxMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyMSAzMkM5MS42IDMyIDY2IDUyIDU4LjkgODAuNUwxLjkgMzA4LjRDLjYgMzEzLjUgMCAzMTguNyAwIDMyMy45VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMzIzLjljMC01LjItLjYtMTAuNC0xLjktMTUuNWwtNTctMjI3LjlDNDQ2IDUyIDQyMC40IDMyIDM5MSAzMkgxMjF6bTAgNjRIMzkxbDQ4IDE5MkgzODcuOGMtMTIuMSAwLTIzLjIgNi44LTI4LjYgMTcuN2wtMTQuMyAyOC42Yy01LjQgMTAuOC0xNi41IDE3LjctMjguNiAxNy43SDE5NS44Yy0xMi4xIDAtMjMuMi02LjgtMjguNi0xNy43bC0xNC4zLTI4LjZjLTUuNC0xMC44LTE2LjUtMTcuNy0yOC42LTE3LjdINzNMMTIxIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmRlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJDMTQuMyA5NiAwIDgxLjcgMCA2NHpNMTkyIDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnptMzIgOTZINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpNMCA0NDhjMC0xNy43IDE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNMTI3LjggMjY4LjZMMjUuOCAzNDcuOUMxNS4zIDM1Ni4xIDAgMzQ4LjYgMCAzMzUuM1YxNzYuN2MwLTEzLjMgMTUuMy0yMC44IDI1LjgtMTIuNmwxMDEuOSA3OS4zYzguMiA2LjQgOC4yIDE4LjkgMCAyNS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmRpYW5SdXBlZVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkg5NmgxNkgyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjMxLjhjOS42IDE0LjQgMTYuNyAzMC42IDIwLjcgNDhIMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI1Mi40Yy0xMy4yIDU4LjMtNjEuOSAxMDMuMi0xMjIuMiAxMTAuOUwyNzQuNiA0MjJjMTQuNCAxMC4zIDE3LjcgMzAuMyA3LjQgNDQuNnMtMzAuMyAxNy43LTQ0LjYgNy40TDEzLjQgMzE0QzIuMSAzMDYtMi43IDI5MS41IDEuNSAyNzguMlMxOC4xIDI1NiAzMiAyNTZoODBjMzIuOCAwIDYxLTE5LjcgNzMuMy00OEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgxODUuM0MxNzMgMTE1LjcgMTQ0LjggOTYgMTEyIDk2SDk2IDMyQzE0LjMgOTYgMCA4MS43IDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluZHVzdHJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzQ2LjMgMzIgMzIgNDYuMyAzMiA2NFYzMDR2NDggODBjMCAyNi41IDIxLjUgNDggNDggNDhINDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjMwNCAxNTIuMmMwLTE4LjItMTkuNC0yOS43LTM1LjQtMjEuMUwzNTIgMjE1LjRWMTUyLjJjMC0xOC4yLTE5LjQtMjkuNy0zNS40LTIxLjFMMTYwIDIxNS40VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmZpbml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI0MS4xQzAgMTYxIDY1IDk2IDE0NS4xIDk2YzM4LjUgMCA3NS40IDE1LjMgMTAyLjYgNDIuNUwzMjAgMjEwLjdsNzIuMi03Mi4yQzQxOS41IDExMS4zIDQ1Ni40IDk2IDQ5NC45IDk2QzU3NSA5NiA2NDAgMTYxIDY0MCAyNDEuMXYyOS43QzY0MCAzNTEgNTc1IDQxNiA0OTQuOSA0MTZjLTM4LjUgMC03NS40LTE1LjMtMTAyLjYtNDIuNUwzMjAgMzAxLjNsLTcyLjIgNzIuMkMyMjAuNSA0MDAuNyAxODMuNiA0MTYgMTQ1LjEgNDE2QzY1IDQxNiAwIDM1MSAwIDI3MC45VjI0MS4xek0yNzQuNyAyNTZsLTcyLjItNzIuMmMtMTUuMi0xNS4yLTM1LjktMjMuOC01Ny40LTIzLjhDMTAwLjMgMTYwIDY0IDE5Ni4zIDY0IDI0MS4xdjI5LjdjMCA0NC44IDM2LjMgODEuMSA4MS4xIDgxLjFjMjEuNSAwIDQyLjItOC41IDU3LjQtMjMuOEwyNzQuNyAyNTZ6bTkwLjUgMGw3Mi4yIDcyLjJjMTUuMiAxNS4yIDM1LjkgMjMuOCA1Ny40IDIzLjhjNDQuOCAwIDgxLjEtMzYuMyA4MS4xLTgxLjFWMjQxLjFjMC00NC44LTM2LjMtODEuMS04MS4xLTgxLjFjLTIxLjUgMC00Mi4yIDguNS01Ny40IDIzLjhMMzY1LjMgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmZvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAxOTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDgwYTQ4IDQ4IDAgMSAxIDk2IDBBNDggNDggMCAxIDEgNDggODB6TTAgMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ0OGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg2NFYyNTZIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJdGFsaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyOTMuM0wxNjAgNDE2aDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDkwLjdMMjI0IDk2SDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUogKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjMyMGMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MFMwIDQwOC40IDAgMzIwVjI4OGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjMyYzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUphcldoZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyQzMyIDE0LjMgNDYuMyAwIDY0IDBIMjU2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDY0QzQ2LjMgNjQgMzIgNDkuNyAzMiAzMnpNMCAxNjBjMC0zNS4zIDI4LjctNjQgNjQtNjRIMjU2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTYwem0xMTIgMEg2OS44Yy0zLjIgMC01LjggMi42LTUuOCA1LjhDNjQgMTk4IDkwIDIyNCAxMjIuMiAyMjRIMTQ0aDMyIDIxLjhjMzIuMSAwIDU4LjItMjYgNTguMi01OC4yYzAtMy4yLTIuNi01LjgtNS44LTUuOEgyMDhjLTE5LjEgMC0zNi4zIDguNC00OCAyMS43Yy0xMS43LTEzLjMtMjguOS0yMS43LTQ4LTIxLjd6bTQ4IDExNy43Yy0xMS43LTEzLjMtMjguOS0yMS43LTQ4LTIxLjdINjkuOGMtMy4yIDAtNS44IDIuNi01LjggNS44QzY0IDI5NCA5MCAzMjAgMTIyLjIgMzIwSDE0NGgzMiAyMS44YzMyLjEgMCA1OC4yLTI2IDU4LjItNTguMmMwLTMuMi0yLjYtNS44LTUuOC01LjhIMjA4Yy0xOS4xIDAtMzYuMyA4LjQtNDggMjEuN3pNMTEyIDM1Mkg2OS44Yy0zLjIgMC01LjggMi42LTUuOCA1LjhDNjQgMzkwIDkwIDQxNiAxMjIuMiA0MTZIMTQ0djMyYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWNDE2aDIxLjhjMzIuMSAwIDU4LjItMjYgNTguMi01OC4yYzAtMy4yLTIuNi01LjgtNS44LTUuOEgyMDhjLTE5LjEgMC0zNi4zIDguNC00OCAyMS43Yy0xMS43LTEzLjMtMjguOS0yMS43LTQ4LTIxLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUphciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMkMzMiAxNC4zIDQ2LjMgMCA2NCAwSDI1NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg2NEM0Ni4zIDY0IDMyIDQ5LjcgMzIgMzJ6TTAgMTYwYzAtMzUuMyAyOC43LTY0IDY0LTY0SDI1NmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE2MHptOTYgNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMlYyNTZjMC0xNy43LTE0LjMtMzItMzItMzJIOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUplZGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ2IDMxNS43bC0yMS4yLTMxLjljLTIuMS0zLjItMS43LTcuNCAxLTEwLjFzNi45LTMuMSAxMC4xLTFsMjkuNSAxOS43YzIuMSAxLjQgNC45IDAgNS0yLjZMMjc5LjcgOGMuMS00LjUgMy44LTggOC4zLThzOC4xIDMuNSA4LjMgOGw5LjQgMjgxLjljLjEgMi41IDIuOSAzLjkgNSAyLjZsMjkuNS0xOS43YzMuMi0yLjEgNy40LTEuNyAxMC4xIDFzMy4xIDYuOSAxIDEwLjFMMzMwIDMxNS43Yy0xLjMgMS45LS4yIDQuNSAyIDQuOWwzNy42IDcuNWMzLjcgLjcgNi40IDQgNi40IDcuOHMtMi43IDcuMS02LjQgNy44TDMzMiAzNTEuNGMtMi4yIC40LTMuMyAzLTIgNC45bDIxLjIgMzEuOWMyLjEgMy4yIDEuNyA3LjQtMSAxMC4xcy02LjkgMy4xLTEwLjEgMWwtMjYuMy0xNy42Yy0yLjItMS40LTUuMSAuMi01IDIuOGwyLjEgNjEuNUMzNzAuNiA0MzUuMiA0MTYgMzgyLjkgNDE2IDMyMGMwLTM3LTE1LjctNzAuNC00MC44LTkzLjdjLTctNi41LTYuNS0xOC42IDEtMjQuNEM0MTAuMSAxNzUuNSA0MzIgMTM0LjMgNDMyIDg4YzAtMTYuOC0yLjktMzMtOC4yLTQ4Yy00LjYtMTMgMTAuMi0zMCAyMS40LTIyYzUzLjUgMzggOTIuNyA5NC44IDEwNy44IDE2MC43Yy41IDIuMS0uMiA0LjMtMS43IDUuOWwtMjguNCAyOC40Yy00IDQtMS4yIDEwLjkgNC41IDEwLjloMjZjMy40IDAgNi4yIDIuNiA2LjMgNmMuMSAzLjMgLjIgNi42IC4yIDEwYzAgMTcuNS0xLjcgMzQuNy00LjggNTEuM2MtLjIgMS4yLS45IDIuNC0xLjcgMy4zbC00Ni41IDQ2LjVjLTQgNC0xLjIgMTAuOSA0LjUgMTAuOUg1MjZjNC42IDAgNy43IDQuOCA1LjcgOUM0ODcuMiA0NTAuNSAzOTQuOCA1MTIgMjg4IDUxMlM4OC44IDQ1MC41IDQ0LjMgMzYxYy0yLjEtNC4yIDEtOSA1LjctOUg2NC41YzUuNyAwIDguNi02LjkgNC41LTEwLjlMMjIuNiAyOTQuNmMtLjktLjktMS41LTItMS43LTMuM0MxNy43IDI3NC43IDE2IDI1Ny41IDE2IDI0MGMwLTMuMyAuMS02LjcgLjItMTBjLjEtMy40IDIuOS02IDYuMy02aDI2YzUuNyAwIDguNi02LjkgNC41LTEwLjlMMjQuNiAxODQuNmMtMS41LTEuNS0yLjItMy44LTEuNy01LjlDMzguMSAxMTIuOCA3Ny4zIDU2IDEzMC44IDE4YzExLjMtOCAyNiA4LjkgMjEuNCAyMmMtNS4zIDE1LTguMiAzMS4yLTguMiA0OGMwIDQ2LjMgMjEuOSA4Ny41IDU1LjggMTEzLjljNy41IDUuOCA4IDE3LjkgMSAyNC40QzE3NS43IDI0OS42IDE2MCAyODMgMTYwIDMyMGMwIDYyLjkgNDUuNCAxMTUuMiAxMDUuMSAxMjZsMi4xLTYxLjVjLjEtMi42LTIuOC00LjItNS0yLjhsLTI2LjMgMTcuNmMtMy4yIDIuMS03LjQgMS43LTEwLjEtMXMtMy4xLTYuOS0xLTEwLjFMMjQ2IDM1Ni4zYzEuMy0xLjkgLjItNC41LTItNC45bC0zNy42LTcuNWMtMy43LS43LTYuNC00LTYuNC03LjhzMi43LTcuMSA2LjQtNy44bDM3LjYtNy41YzIuMi0uNCAzLjMtMyAyLTQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSmV0RmlnaHRlclVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MC43IDkuN0MyNjguMiAzLjggMjYyLjQgMCAyNTYgMHMtMTIuMiAzLjgtMTQuNyA5LjdMMTk3LjIgMTEyLjZjLTMuNCA4LTUuMiAxNi41LTUuMiAyNS4ydjc3bC0xNDQgODRWMjgwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djU2IDMyIDI0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjR2LThIMTkydjMyLjdMMTMzLjUgNDY4Yy0zLjUgMy01LjUgNy40LTUuNSAxMnYxNmMwIDguOCA3LjIgMTYgMTYgMTZoOTZWNDQ4YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2NjRoOTZjOC44IDAgMTYtNy4yIDE2LTE2VjQ4MGMwLTQuNi0yLTktNS41LTEyTDMyMCA0MTYuN1YzODRINDY0djhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYzNjggMzM2IDI4MGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHYxOC44bC0xNDQtODR2LTc3YzAtOC43LTEuOC0xNy4yLTUuMi0yNS4yTDI3MC43IDkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSmV0RmlnaHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRIMjk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI4MEwzODQgMTkySDUwMC40YzcuNyAwIDE1LjMgMS40IDIyLjUgNC4xTDYyNSAyMzQuNGM5IDMuNCAxNSAxMiAxNSAyMS42cy02IDE4LjItMTUgMjEuNkw1MjIuOSAzMTUuOWMtNy4yIDIuNy0xNC44IDQuMS0yMi41IDQuMUgzODRMMjgwIDQ2NGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgxODRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoOFYzMjBIMTYwbC01NC42IDU0LjZjLTYgNi0xNC4xIDkuNC0yMi42IDkuNEg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjg4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg4Mi43YzguNSAwIDE2LjYgMy40IDIyLjYgOS40TDE2MCAxOTJoMzJWNDhoLThjLTEzLjMgMC0yNC0xMC43LTI0LTI0ek04MCAyNDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpvaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0M2MwIDU1LjIgMjEuOSAxMDguMSA2MC45IDE0Ny4xbDIxIDIxYzkgOSAxNC4xIDIxLjIgMTQuMSAzMy45djExYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjQ1YzAtMjkuNy0xMS44LTU4LjItMzIuOC03OS4ybC0yMS0yMUM0NjMuMiAxMTcuOCA0NDggODEuMiA0NDggNDNWMzJ6TTU3NiAyNTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyNDVjMC01NS4yLTIxLjktMTA4LjEtNjAuOS0xNDcuMWwtMjEtMjFjLTktOS0xNC4xLTIxLjItMTQuMS0zMy45VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjQzYzAgMjkuNyAxMS44IDU4LjIgMzIuOCA3OS4ybDIxIDIxYzI3IDI3IDQyLjIgNjMuNiA0Mi4yIDEwMS44djExek0yMjkuOCAzNjBjLTQuNy0yLjMtMTAtMi43LTE1LjItMmMtMzcuOCA1LjYtNzUuMiAxNC4zLTEwNi45IDIyLjhDODEuMyAzODggNTguMyAzOTUuMSA0MiA0MDAuNGMtOC4yIDIuNy0xNC43IDQuOS0xOS4yIDYuNWMtMi4zIC44LTQgMS40LTUuMiAxLjhsLTEuMyAuNUM2LjggNDEyLjUgMCA0MjEuNCAwIDQzMnM2LjggMTkuNSAxNi4zIDIyLjdsMS4zIC41YzEuMiAuNCAzIDEuMSA1LjIgMS44YzQuNSAxLjYgMTEgMy44IDE5LjIgNi41YzE2LjMgNS40IDM5LjIgMTIuNSA2NS43IDE5LjZDMTYwLjMgNDk3LjMgMjI4LjggNTEyIDI4OCA1MTJoNjcuM2M0LjEgMCA2LjMtNS4xIDMuNi04LjNMMjU2LjUgMzgwLjhjLTcuNC04LjktMTYuNS0xNS45LTI2LjctMjAuOHpNNDQ1IDUxMmgxOSA1MS4zYzQuMSAwIDYuMy01LjEgMy42LTguM0w0MTYuNSAzODAuOEM0MDEuMyAzNjIuNSAzNzguOCAzNTIgMzU1IDM1MkgzMzYgMjg4Yy0xLjEgMC0yLjMgMC0zLjQgMGMtNC4xIDAtNi4yIDUuMS0zLjUgOC4zTDM4My41IDQ4My4yQzM5OC43IDUwMS41IDQyMS4yIDUxMiA0NDUgNTEyem0tMy45LTE1MS43TDU0My41IDQ4My4yYzE0LjYgMTcuNSAzNS45IDI3LjkgNTguNiAyOC43YzIxLjEtMS4xIDM3LjktMTguNiAzNy45LTM5LjlWMzkyYzAtMjIuMS0xNy45LTQwLTQwLTQwSDQ0NC43Yy00LjEgMC02LjMgNS4xLTMuNiA4LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUp1Z0RldGVyZ2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg4MGMxMy4zIDAgMjQgMTAuNyAyNCAyNFY0OGg4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDg4Qzc0LjcgOTYgNjQgODUuMyA2NCA3MnMxMC43LTI0IDI0LTI0aDhWMjR6TTAgMjU2YzAtNzAuNyA1Ny4zLTEyOCAxMjgtMTI4SDI1NmM3MC43IDAgMTI4IDU3LjMgMTI4IDEyOFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI1NnptMjU2IDB2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyNTZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzExIDg2LjNjMTIuMy0xMi43IDEyLTMyLjktLjctNDUuMnMtMzIuOS0xMi00NS4yIC43bC0xNTUuMiAxNjBMNjQgMjQ5VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNDYuMyAwIDY0VjMyOCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzNDFsNjQuNy02Ni43IDEzMyAxOTJjMTAuMSAxNC41IDMwIDE4LjEgNDQuNSA4LjFzMTguMS0zMCA4LjEtNDQuNUwxNzQuMSAyMjcuNCAzMTEgODYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2FhYmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjAgMTIwbDIyOCA3MS4yTDUxNiAxMjAgMjg4IDQ4LjggNjAgMTIwek0yNzguNSAxLjVjNi4yLTEuOSAxMi45LTEuOSAxOS4xIDBsMjU2IDgwQzU2Ni45IDg1LjYgNTc2IDk4IDU3NiAxMTJ2MTYgMCAyMS4yTDI5Mi44IDIzNy43Yy0zLjEgMS02LjQgMS05LjUgMEwwIDE0OS4yVjEyOCAxMTJDMCA5OCA5LjEgODUuNiAyMi41IDgxLjVsMjU2LTgwem0yMy45IDI2Ni44TDU3NiAxODIuOHY0Ni41bC01Mi44IDE2LjVjLTguNCAyLjYtMTMuMSAxMS42LTEwLjUgMjBzMTEuNiAxMy4xIDIwIDEwLjVMNTc2IDI2Mi44VjQwMGMwIDE0LTkuMSAyNi40LTIyLjUgMzAuNWwtMjU2IDgwYy02LjIgMS45LTEyLjkgMS45LTE5LjEgMGwtMjU2LTgwQzkuMSA0MjYuNCAwIDQxNCAwIDQwMFYyNjIuOGw0My4yIDEzLjVjOC40IDIuNiAxNy40LTIuMSAyMC0xMC41cy0yLjEtMTcuNC0xMC41LTIwTDAgMjI5LjJWMTgyLjhsMjczLjcgODUuNWM5LjMgMi45IDE5LjMgMi45IDI4LjYgMHptLTE4NS41LTIuNmMtOC40LTIuNi0xNy40IDIuMS0yMCAxMC41czIuMSAxNy40IDEwLjUgMjBsNjQgMjBjOC40IDIuNiAxNy40LTIuMSAyMC0xMC41cy0yLjEtMTcuNC0xMC41LTIwbC02NC0yMHptMzUyIDMwLjVjOC40LTIuNiAxMy4xLTExLjYgMTAuNS0yMHMtMTEuNi0xMy4xLTIwLTEwLjVsLTY0IDIwYy04LjQgMi42LTEzLjEgMTEuNi0xMC41IDIwczExLjYgMTMuMSAyMCAxMC41bDY0LTIwem0tMjI0IDkuNWMtOC40LTIuNi0xNy40IDIuMS0yMCAxMC41czIuMSAxNy40IDEwLjUgMjBsMzguNSAxMmM5LjMgMi45IDE5LjMgMi45IDI4LjYgMGwzOC41LTEyYzguNC0yLjYgMTMuMS0xMS42IDEwLjUtMjBzLTExLjYtMTMuMS0yMC0xMC41bC0zOC41IDEyYy0zLjEgMS02LjQgMS05LjUgMGwtMzguNS0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAzNTJjOTcuMiAwIDE3Ni03OC44IDE3Ni0xNzZTNDMzLjIgMCAzMzYgMFMxNjAgNzguOCAxNjAgMTc2YzAgMTguNyAyLjkgMzYuOCA4LjMgNTMuN0w3IDM5MWMtNC41IDQuNS03IDEwLjYtNyAxN3Y4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNFY0NDhoNDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMzg0aDQwYzYuNCAwIDEyLjUtMi41IDE3LTdsMzMuMy0zMy4zYzE2LjkgNS40IDM1IDguMyA1My43IDguM3pNMzc2IDk2YTQwIDQwIDAgMSAxIDAgODAgNDAgNDAgMCAxIDEgMC04MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2V5Ym9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTE2IDY0aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNDRjMC04LjggNy4yLTE2IDE2LTE2ek02NCAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6bTE2IDgwaDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2em04MC0xNzZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMTQ0em0xNiA4MGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MGMwLTguOCA3LjItMTYgMTYtMTZ6TTE2MCAzMzZjMC04LjggNy4yLTE2IDE2LTE2SDQwMGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjMzNnpNMjcyIDEyOGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjE0NGMwLTguOCA3LjItMTYgMTYtMTZ6TTI1NiAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMjQwek0zNjggMTI4aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNnpNMzUyIDI0MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTQ2NCAxMjhoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg0NjRjLTguOCAwLTE2LTcuMi0xNi0xNlYxNDRjMC04LjggNy4yLTE2IDE2LTE2ek00NDggMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHptMTYgODBoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg0NjRjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaGFuZGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ1LjggMy43YzUuOS00LjkgMTQuNi00LjkgMjAuNSAwbDQ4IDQwYzUuOSA0LjkgNy41IDEzLjIgMy44IDE5LjlsMCAwIDAgMCAwIDAgMCAwLS4xIC4xLS4zIC42Yy0uMyAuNS0uNyAxLjMtMS4yIDIuM2MtMSAyLTIuNiA1LTQuNCA4LjZjLS41IC45LS45IDEuOS0xLjQgMi45QzM0NC45IDk3LjQgMzY4IDEzNCAzNjggMTc2cy0yMy4xIDc4LjYtNTcuMyA5Ny44Yy41IDEgMSAyIDEuNCAyLjljMS44IDMuNyAzLjMgNi42IDQuNCA4LjZjLjUgMSAuOSAxLjggMS4yIDIuM2wuMyAuNiAuMSAuMSAwIDAgMCAwYzMuNiA2LjcgMiAxNS0zLjggMTkuOUwyNzIgMzQzLjV2MTkuOGwzNS42LTI0LjUgNDEuMS0yOC4yYzQyLjgtMjkuNCA2OC40LTc4IDY4LjQtMTMwYzAtMzEuMS05LjItNjEuNi0yNi41LTg3LjVsLTIuOC00LjJjLTQtNi0zLjUtMTQgMS4zLTE5LjVzMTIuNy03IDE5LjItMy43TDQwMS4xIDgwYzcuMi0xNC4zIDcuMi0xNC4zIDcuMi0xNC4zbDAgMCAwIDAgLjEgMCAuMyAuMiAxIC41Yy44IC40IDIgMS4xIDMuNSAxLjljMi45IDEuNyA3IDQuMSAxMS44IDcuM2M5LjYgNi40IDIyLjUgMTYuMSAzNS40IDI5YzI1LjcgMjUuNyA1Mi43IDY1LjYgNTIuNyAxMTkuM2MwIDUzLjEtMjYuNCAxMDAuNS01MS4yIDEzMy42Yy0xMi42IDE2LjctMjUuMSAzMC4zLTM0LjUgMzkuN2MtNC43IDQuNy04LjcgOC40LTExLjUgMTAuOWMtMS40IDEuMy0yLjUgMi4yLTMuMyAyLjlsLS45IC44LS4zIC4yLS4xIC4xIDAgMCAwIDBzMCAwLTEwLjItMTIuM2wxMC4yIDEyLjNjLTUuMSA0LjMtMTIuNCA0LjktMTguMiAxLjZsLTc1LjYtNDMtMzIuNyAyMi41IDQ1LjUgMzEuM2MxLjgtLjQgMy43LS43IDUuNy0uN2MxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGMtMTIuMiAwLTIyLjMtOS4xLTIzLjgtMjFMMjcyIDQyMy40djI4LjljOS42IDUuNSAxNiAxNS45IDE2IDI3LjdjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJjMC0xMS44IDYuNC0yMi4yIDE2LTI3LjdWNDI0LjFsLTQwLjMgMjcuN0MxOTcuOCA0NjMuMyAxODcuOSA0NzIgMTc2IDQ3MmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGMyLjIgMCA0LjQgLjMgNi41IC45bDQ1LjgtMzEuNS0zMi43LTIyLjUtNzUuNiA0M2MtNS44IDMuMy0xMyAyLjctMTguMi0xLjZMMTEyIDQwMGMtMTAuMiAxMi4zLTEwLjIgMTIuMy0xMC4zIDEyLjNsMCAwIDAgMC0uMS0uMS0uMy0uMi0uOS0uOGMtLjgtLjctMS45LTEuNy0zLjMtMi45Yy0yLjgtMi41LTYuNy02LjItMTEuNS0xMC45Yy05LjQtOS40LTIxLjktMjMtMzQuNS0zOS43QzI2LjQgMzI0LjUgMCAyNzcuMSAwIDIyNGMwLTUzLjcgMjYuOS05My42IDUyLjctMTE5LjNjMTIuOS0xMi45IDI1LjgtMjIuNiAzNS40LTI5QzkzIDcyLjUgOTcgNzAgOTkuOSA2OC40YzEuNS0uOCAyLjYtMS41IDMuNS0xLjlsMS0uNSAuMy0uMiAuMSAwIDAgMCAwIDBzMCAwIDcuMiAxNC4zbC03LjItMTQuM2M2LjUtMy4yIDE0LjMtMS43IDE5LjIgMy43czUuMyAxMy40IDEuMyAxOS41bC0yLjggNC4yQzEwNS4yIDExOSA5NiAxNDkuNSA5NiAxODAuNmMwIDUxLjkgMjUuNiAxMDAuNiA2OC40IDEzMGw0MS4xIDI4LjJMMjQwIDM2Mi42VjM0My41bC00Mi4yLTM1LjJjLTUuOS00LjktNy41LTEzLjItMy44LTE5LjlsMCAwIDAgMCAwIDAgLjEtLjEgLjMtLjZjLjMtLjUgLjctMS4zIDEuMi0yLjNjMS0yIDIuNi01IDQuNC04LjZjLjUtLjkgLjktMS45IDEuNC0yLjlDMTY3LjEgMjU0LjYgMTQ0IDIxOCAxNDQgMTc2czIzLjEtNzguNiA1Ny4zLTk3LjhjLS41LTEtMS0yLTEuNC0yLjljLTEuOC0zLjctMy4zLTYuNi00LjQtOC42Yy0uNS0xLS45LTEuOC0xLjItMi4zbC0uMy0uNi0uMS0uMSAwIDAgMCAwIDAgMGMtMy42LTYuNy0yLTE1IDMuOC0xOS45bDQ4LTQwek0yMjAuMiAxMjIuOWMtMTcgMTEuNS0yOC4yIDMxLTI4LjIgNTMuMXMxMS4yIDQxLjYgMjguMiA1My4xQzIyNyAyMTAuMiAyMzIgMTkwLjkgMjMyIDE3NnMtNS0zNC4yLTExLjgtNTMuMXptNzEuNSAxMDYuMmMxNy0xMS41IDI4LjItMzEgMjguMi01My4xcy0xMS4yLTQxLjYtMjguMi01My4xQzI4NSAxNDEuOCAyODAgMTYxLjEgMjgwIDE3NnM1IDM0LjIgMTEuOCA1My4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaXBTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0MC44IDg4LjNjMTMuNC0xMS41IDE1LTMxLjcgMy41LTQ1LjFzLTMxLjctMTUtNDUuMS0zLjVMMTI4IDE4Ni40VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzY0IDQ2LjMgNjQgNjRWMjI0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0VjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyNS42TDI5OS4yIDQ3Mi4zYzEzLjQgMTEuNSAzMy42IDkuOSA0NS4xLTMuNXM5LjktMzMuNi0zLjUtNDUuMUwxODIuNSAyODhIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE4Mi41TDM0MC44IDg4LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtpdE1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIOTZWMzJINjR6bTY0IDBWNDgwSDQ0OFYzMkgxMjh6TTUxMiA0ODBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINDgwVjQ4MGgzMnpNMjU2IDE3NmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djQ4aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzIwdjQ4YzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyODhIMjA4Yy04LjggMC0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNmg0OFYxNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtpdGNoZW5TZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwIDE0NEE5NiA5NiAwIDEgMCA0OCAxNDRhOTYgOTYgMCAxIDAgMTkyIDB6bTQ0LjQgMzJDMjY5LjkgMjQwLjEgMjEyLjUgMjg4IDE0NCAyODhDNjQuNSAyODggMCAyMjMuNSAwIDE0NFM2NC41IDAgMTQ0IDBjNjguNSAwIDEyNS45IDQ3LjkgMTQwLjQgMTEyaDcxLjhjOC44LTkuOCAyMS42LTE2IDM1LjgtMTZINDk2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4SDM5MmMtMTQuMiAwLTI3LTYuMi0zNS44LTE2SDI4NC40ek0xNDQgODBhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6TTQwMCAyNDBjMTMuMyAwIDI0IDEwLjcgMjQgMjR2OGg5NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyODBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoOTZ2LThjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTI4OCA0NjRWMzUySDUxMlY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMzM2Yy0yNi41IDAtNDgtMjEuNS00OC00OHpNNDggMzIwaDgwIDE2IDMyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4SDE2MGMwIDE3LjctMTQuMyAzMi0zMiAzMkg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnptMTI4IDY0YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDE2MHYzMmgxNnpNMjQgNDY0SDIwMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2l3aUJpcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjkxLjIgMzg4LjRjMzEuMi0xOC44IDY0LjctMzYuNCAxMDEuMS0zNi40SDQ0OGM0LjYgMCA5LjEtLjIgMTMuNi0uN2w4NS4zIDEyMS45YzQgNS43IDExLjMgOC4yIDE3LjkgNi4xczExLjItOC4zIDExLjItMTUuM1YyMjRjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhIMzkyLjNjLTM2LjQgMC02OS45LTE3LjYtMTAxLjEtMzYuNEMyNjIuMyA0Mi4xIDIyOC4zIDMyIDE5MiAzMkM4NiAzMiAwIDExOCAwIDIyNGMwIDcxLjEgMzguNiAxMzMuMSA5NiAxNjYuM1Y0NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0MTBjMTUuMyAzLjkgMzEuNCA2IDQ4IDZjNS40IDAgMTAuNy0uMiAxNi0uN1Y0NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0MDUuMWMxMi40LTQuNCAyNC4yLTEwIDM1LjItMTYuN3pNNDQ4IDIwMGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDE2SDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhbmRNaW5lT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ0IDI0VjE2OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0ek0xOTIgMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnYzMkgxOTJWMzIwem0tNzcuMyA5MC41YzguMS0xNi4zIDI0LjgtMjYuNSA0Mi45LTI2LjVINDgyLjNjMTguMiAwIDM0LjggMTAuMyA0Mi45IDI2LjVsMjcuNiA1NS4yQzU2My41IDQ4NyA1NDggNTEyIDUyNC4yIDUxMkgxMTUuOGMtMjMuOCAwLTM5LjMtMjUtMjguNi00Ni4zbDI3LjYtNTUuMnpNMzYuMyAxMzguM2M3LjUtMTAuOSAyMi41LTEzLjYgMzMuNC02LjFsMTA0IDcyYzEwLjkgNy41IDEzLjYgMjIuNSA2LjEgMzMuNHMtMjIuNSAxMy42LTMzLjQgNi4xbC0xMDQtNzJjLTEwLjktNy41LTEzLjYtMjIuNS02LjEtMzMuNHptNTM0LjEtNi4xYzEwLjktNy41IDI1LjgtNC44IDMzLjQgNi4xczQuOCAyNS44LTYuMSAzMy40bC0xMDQgNzJjLTEwLjkgNy41LTI1LjggNC44LTMzLjQtNi4xcy00LjgtMjUuOCA2LjEtMzMuNGwxMDQtNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhbmRtYXJrRG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggMGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNFYzNC43QzM2OC40IDQ4LjEgNDMxLjkgMTExLjYgNDQ1LjMgMTkySDQ0OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgyLjdDODAuMSAxMTEuNiAxNDMuNiA0OC4xIDIyNCAzNC43VjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0ek02NCAyODhoNjRWNDE2aDQwVjI4OGg2NFY0MTZoNDhWMjg4aDY0VjQxNmg0MFYyODhoNjRWNDIwLjNjLjYgLjMgMS4yIC43IDEuNyAxLjFsNDggMzJjMTEuNyA3LjggMTcgMjIuNCAxMi45IDM1LjlTNDk0LjEgNTEyIDQ4MCA1MTJIMzJjLTE0LjEgMC0yNi41LTkuMi0zMC42LTIyLjdzMS4xLTI4LjEgMTIuOS0zNS45bDQ4LTMyYy42LS40IDEuMi0uNyAxLjgtMS4xVjI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFuZG1hcmtGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiAwaDgwYzguOCAwIDE2IDcuMiAxNiAxNlY4MGMwIDguOC03LjIgMTYtMTYgMTZIMjcydjMySDQ2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgyNDBWMTZjMC04LjggNy4yLTE2IDE2LTE2aDE2ek02NCAyMjRoNjRWNDE2aDQwVjIyNGg2NFY0MTZoNDhWMjI0aDY0VjQxNmg0MFYyMjRoNjRWNDIwLjNjLjYgLjMgMS4yIC43IDEuOCAxLjFsNDggMzJjMTEuNyA3LjggMTcgMjIuNCAxMi45IDM1LjlTNDk0LjEgNTEyIDQ4MCA1MTJIMzJjLTE0LjEgMC0yNi41LTkuMi0zMC42LTIyLjdzMS4xLTI4LjEgMTIuOS0zNS45bDQ4LTMyYy42LS40IDEuMi0uNyAxLjgtMS4xVjIyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFuZG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwLjEgNC4yYzkuOC01LjYgMjEuOS01LjYgMzEuOCAwbDE3MS44IDk4LjFMNDQ4IDEwNGwwIC45IDQ3LjkgMjcuNGMxMi42IDcuMiAxOC44IDIyIDE1LjEgMzZzLTE2LjQgMjMuOC0zMC45IDIzLjhIMzJjLTE0LjUgMC0yNy4yLTkuOC0zMC45LTIzLjhzMi41LTI4LjggMTUuMS0zNkw2NCAxMDQuOVYxMDRsNC40LTEuNkwyNDAuMSA0LjJ6TTY0IDIyNGg2NFY0MTZoNDBWMjI0aDY0VjQxNmg0OFYyMjRoNjRWNDE2aDQwVjIyNGg2NFY0MjAuM2MuNiAuMyAxLjIgLjcgMS44IDEuMWw0OCAzMmMxMS43IDcuOCAxNyAyMi40IDEyLjkgMzUuOVM0OTQuMSA1MTIgNDgwIDUxMkgzMmMtMTQuMSAwLTI2LjUtOS4yLTMwLjYtMjIuN3MxLjEtMjguMSAxMi45LTM1LjlsNDgtMzJjLjYtLjQgMS4yLS43IDEuOC0xLjFWMjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYW5ndWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NEgyNTZoNDggMTZINTc2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEgzMjAgMzA0IDI1NiA2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4em0zMjAgMFYzODRINTc2VjEyOEgzMjB6TTE3OC4zIDE3NS45Yy0zLjItNy4yLTEwLjQtMTEuOS0xOC4zLTExLjlzLTE1LjEgNC43LTE4LjMgMTEuOWwtNjQgMTQ0Yy00LjUgMTAuMSAuMSAyMS45IDEwLjIgMjYuNHMyMS45LS4xIDI2LjQtMTAuMmw4LjktMjAuMWg3My42bDguOSAyMC4xYzQuNSAxMC4xIDE2LjMgMTQuNiAyNi40IDEwLjJzMTQuNi0xNi4zIDEwLjItMjYuNGwtNjQtMTQ0ek0xNjAgMjMzLjJMMTc5IDI3NkgxNDFsMTktNDIuOHpNNDQ4IDE2NGMxMSAwIDIwIDkgMjAgMjB2NGg0NCAxNmMxMSAwIDIwIDkgMjAgMjBzLTkgMjAtMjAgMjBoLTJsLTEuNiA0LjVjLTguOSAyNC40LTIyLjQgNDYuNi0zOS42IDY1LjRjLjkgLjYgMS44IDEuMSAyLjcgMS42bDE4LjkgMTEuM2M5LjUgNS43IDEyLjUgMTggNi45IDI3LjRzLTE4IDEyLjUtMjcuNCA2LjlsLTE4LjktMTEuM2MtNC41LTIuNy04LjgtNS41LTEzLjEtOC41Yy0xMC42IDcuNS0yMS45IDE0LTM0IDE5LjRsLTMuNiAxLjZjLTEwLjEgNC41LTIxLjktLjEtMjYuNC0xMC4ycy4xLTIxLjkgMTAuMi0yNi40bDMuNi0xLjZjNi40LTIuOSAxMi42LTYuMSAxOC41LTkuOGwtMTIuMi0xMi4yYy03LjgtNy44LTcuOC0yMC41IDAtMjguM3MyMC41LTcuOCAyOC4zIDBsMTQuNiAxNC42IC41IC41YzEyLjQtMTMuMSAyMi41LTI4LjMgMjkuOC00NUg0NDggMzc2Yy0xMSAwLTIwLTktMjAtMjBzOS0yMCAyMC0yMGg1MnYtNGMwLTExIDktMjAgMjAtMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcHRvcENvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgOTZjMC0zNS4zIDI4LjctNjQgNjQtNjRINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjM1Mkg1MTJWOTZIMTI4VjM1Mkg2NFY5NnpNMCA0MDMuMkMwIDM5Mi42IDguNiAzODQgMTkuMiAzODRINjIwLjhjMTAuNiAwIDE5LjIgOC42IDE5LjIgMTkuMmMwIDQyLjQtMzQuNCA3Ni44LTc2LjggNzYuOEg3Ni44QzM0LjQgNDgwIDAgNDQ1LjYgMCA0MDMuMnpNMjgxIDIwOWwtMzEgMzEgMzEgMzFjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDgtNDhjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDQ4LTQ4YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOXpNMzkzIDE3NWw0OCA0OGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtNDggNDhjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMzEtMzEtMzEtMzFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFwdG9wRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMEM5Mi43IDAgNjQgMjguNyA2NCA2NFYyODhIMTkuMkM4LjYgMjg4IDAgMjk2LjYgMCAzMDcuMkMwIDM0OS42IDM0LjQgMzg0IDc2LjggMzg0SDMyMFYyODhIMTI4VjY0SDQ0OFY5Nmg2NFY2NGMwLTM1LjMtMjguNy02NC02NC02NEgxMjh6TTUxMiAxMjhINDAwYy0yNi41IDAtNDggMjEuNS00OCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI1Nkg1NDRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjEyOHptMzIgMHY5Nmg5NmwtOTYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcHRvcE1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgOTZjMC0zNS4zIDI4LjctNjQgNjQtNjRINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjM1Mkg1MTJWOTZIMTI4VjM1Mkg2NFY5NnpNMCA0MDMuMkMwIDM5Mi42IDguNiAzODQgMTkuMiAzODRINjIwLjhjMTAuNiAwIDE5LjIgOC42IDE5LjIgMTkuMmMwIDQyLjQtMzQuNCA3Ni44LTc2LjggNzYuOEg3Ni44QzM0LjQgNDgwIDAgNDQ1LjYgMCA0MDMuMnpNMjg4IDE2MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djQ4aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzUydjQ4YzAgOC44LTcuMiAxNi0xNiAxNkgzMDRjLTguOCAwLTE2LTcuMi0xNi0xNlYyNzJIMjQwYy04LjggMC0xNi03LjItMTYtMTZWMjI0YzAtOC44IDcuMi0xNiAxNi0xNmg0OFYxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcHRvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMzJDOTIuNyAzMiA2NCA2MC43IDY0IDk2VjM1Mmg2NFY5Nkg1MTJWMzUyaDY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDEyOHpNMTkuMiAzODRDOC42IDM4NCAwIDM5Mi42IDAgNDAzLjJDMCA0NDUuNiAzNC40IDQ4MCA3Ni44IDQ4MEg1NjMuMmM0Mi40IDAgNzYuOC0zNC40IDc2LjgtNzYuOGMwLTEwLjYtOC42LTE5LjItMTkuMi0xOS4ySDE5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcmlTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlY5Ni43YzUuMy0uNCAxMC42LS43IDE2LS43czEwLjcgLjIgMTYgLjdWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY0OS40YzU0LjkgMjUuMiA5NS44IDc1LjUgMTA4LjIgMTM2LjJjMy41IDE3LjMtNy43IDM0LjItMjUgMzcuN3MtMzQuMi03LjctMzcuNy0yNWMtNi4xLTI5LjktMjIuNS01NS45LTQ1LjQtNzQuM1YyNTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTYxYy01LjItLjctMTAuNi0xLTE2LTFzLTEwLjggLjMtMTYgMXY5NWMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxODguMUM4Mi43IDIxMS41IDY0IDI0Ny42IDY0IDI4OGMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOEgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTkyIDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDQ4LjlDMTguNSAzODIgMCAzMzcuMiAwIDI4OGMwLTc3LjUgNDUuOS0xNDQuMyAxMTItMTc0LjZWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxheWVyR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY0LjUgNS4yYzE0LjktNi45IDMyLjEtNi45IDQ3IDBsMjE4LjYgMTAxYzguNSAzLjkgMTMuOSAxMi40IDEzLjkgMjEuOHMtNS40IDE3LjktMTMuOSAyMS44bC0yMTguNiAxMDFjLTE0LjkgNi45LTMyLjEgNi45LTQ3IDBMNDUuOSAxNDkuOEMzNy40IDE0NS44IDMyIDEzNy4zIDMyIDEyOHM1LjQtMTcuOSAxMy45LTIxLjhMMjY0LjUgNS4yek00NzYuOSAyMDkuNmw1My4yIDI0LjZjOC41IDMuOSAxMy45IDEyLjQgMTMuOSAyMS44cy01LjQgMTcuOS0xMy45IDIxLjhsLTIxOC42IDEwMWMtMTQuOSA2LjktMzIuMSA2LjktNDcgMEw0NS45IDI3Ny44QzM3LjQgMjczLjggMzIgMjY1LjMgMzIgMjU2czUuNC0xNy45IDEzLjktMjEuOGw1My4yLTI0LjYgMTUyIDcwLjJjMjMuNCAxMC44IDUwLjQgMTAuOCA3My44IDBsMTUyLTcwLjJ6bS0xNTIgMTk4LjJsMTUyLTcwLjIgNTMuMiAyNC42YzguNSAzLjkgMTMuOSAxMi40IDEzLjkgMjEuOHMtNS40IDE3LjktMTMuOSAyMS44bC0yMTguNiAxMDFjLTE0LjkgNi45LTMyLjEgNi45LTQ3IDBMNDUuOSA0MDUuOEMzNy40IDQwMS44IDMyIDM5My4zIDMyIDM4NHM1LjQtMTcuOSAxMy45LTIxLjhsNTMuMi0yNC42IDE1MiA3MC4yYzIzLjQgMTAuOCA1MC40IDEwLjggNzMuOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZWFmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiA5NmMtNzguNiAwLTE0NS4xIDUxLjUtMTY3LjcgMTIyLjVjMzMuNi0xNyA3MS41LTI2LjUgMTExLjctMjYuNWg4OGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyODggMjE2czAgMCAwIDBjLTE2LjYgMC0zMi43IDEuOS00OC4zIDUuNGMtMjUuOSA1LjktNDkuOSAxNi40LTcxLjQgMzAuN2MwIDAgMCAwIDAgMEMzOC4zIDI5OC44IDAgMzY0LjkgMCA0NDB2MTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0NDBjMC00OC43IDIwLjctOTIuNSA1My44LTEyMy4yQzEyMS42IDM5Mi4zIDE5MC4zIDQ0OCAyNzIgNDQ4bDEgMGMxMzIuMS0uNyAyMzktMTMwLjkgMjM5LTI5MS40YzAtNDIuNi03LjUtODMuMS0yMS4xLTExOS42Yy0yLjYtNi45LTEyLjctNi42LTE2LjItLjFDNDU1LjkgNzIuMSA0MTguNyA5NiAzNzYgOTZMMjcyIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZWZ0TG9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzcuNSA0MTRjLTguOCAzLjgtMTkgMi0yNi00LjZsLTE0NC0xMzZDMi43IDI2OC45IDAgMjYyLjYgMCAyNTZzMi43LTEyLjkgNy41LTE3LjRsMTQ0LTEzNmM3LTYuNiAxNy4yLTguNCAyNi00LjZzMTQuNSAxMi41IDE0LjUgMjJsMCA3MiAyODggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0yODggMCAwIDcyYzAgOS42LTUuNyAxOC4yLTE0LjUgMjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlZnRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQuMyAyNzMuNmM0LjktNC41IDcuNy0xMC45IDcuNy0xNy42cy0yLjgtMTMtNy43LTE3LjZsLTExMi0xMDRjLTctNi41LTE3LjItOC4yLTI1LjktNC40cy0xNC40IDEyLjUtMTQuNCAyMmwwIDU2LTE5MiAwIDAtNTZjMC05LjUtNS43LTE4LjItMTQuNC0yMnMtMTguOS0yLjEtMjUuOSA0LjRsLTExMiAxMDRDMi44IDI0MyAwIDI0OS4zIDAgMjU2czIuOCAxMyA3LjcgMTcuNmwxMTIgMTA0YzcgNi41IDE3LjIgOC4yIDI1LjkgNC40czE0LjQtMTIuNSAxNC40LTIybDAtNTYgMTkyIDAgMCA1NmMwIDkuNSA1LjcgMTguMiAxNC40IDIyczE4LjkgMi4xIDI1LjktNC40bDExMi0xMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlbW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NGMtNi42IDAtMTMgMS0xOSAyLjljLTIyLjUgNy00OC4xIDE0LjktNzEgOWMtNzUuMi0xOS4xLTE1Ni40IDExLTIxMy43IDY4LjNTLTcuMiAyNTAuOCAxMS45IDMyNmM1LjggMjIuOS0yIDQ4LjQtOSA3MUMxIDQwMyAwIDQwOS40IDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0YzYuNiAwIDEzLTEgMTkuMS0yLjljMjIuNS03IDQ4LjEtMTQuOSA3MS05Yzc1LjIgMTkuMSAxNTYuNC0xMSAyMTMuNy02OC4zczg3LjUtMTM4LjUgNjguMy0yMTMuN2MtNS44LTIyLjkgMi00OC40IDktNzFjMS45LTYgMi45LTEyLjQgMi45LTE5LjF6TTIxMi41IDEyNy40Yy01NC42IDE2LTEwMS4xIDYyLjUtMTE3LjEgMTE3LjFDOTIuOSAyNTMgODQgMjU3LjggNzUuNSAyNTUuNFM2Mi4yIDI0NCA2NC42IDIzNS41YzE5LjEtNjUuMSA3My43LTExOS44IDEzOC45LTEzOC45YzguNS0yLjUgMTcuNCAyLjQgMTkuOSAxMC45cy0yLjQgMTcuNC0xMC45IDE5Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlc3NUaGFuRXF1YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk1LjkgOTMuN2MxNi40LTYuNiAyNC40LTI1LjIgMTcuOC00MS42cy0yNS4yLTI0LjQtNDEuNi0xNy44bC0zMjAgMTI4QzQwIDE2Ny4xIDMyIDE3OC45IDMyIDE5MnM4IDI0LjkgMjAuMSAyOS43bDMyMCAxMjhjMTYuNCA2LjYgMzUtMS40IDQxLjYtMTcuOHMtMS40LTM1LTE3LjgtNDEuNkwxNTAuMiAxOTIgMzk1LjkgOTMuN3pNMzIgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGVzc1RoYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgwLjYgODEuN2M3LjkgMTUuOCAxLjUgMzUtMTQuMyA0Mi45TDEwMy42IDI1NiAzNjYuMyAzODcuNGMxNS44IDcuOSAyMi4yIDI3LjEgMTQuMyA0Mi45cy0yNy4xIDIyLjItNDIuOSAxNC4zbC0zMjAtMTYwQzYuOCAyNzkuMiAwIDI2OC4xIDAgMjU2czYuOC0yMy4yIDE3LjctMjguNmwzMjAtMTYwYzE1LjgtNy45IDM1LTEuNSA0Mi45IDE0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpZmVSaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2Ny4yIDQxMi41QzMzNS45IDQzNC45IDI5Ny41IDQ0OCAyNTYgNDQ4cy03OS45LTEzLjEtMTExLjItMzUuNWw1OC01OGMxNS44IDguNiAzNCAxMy41IDUzLjMgMTMuNXMzNy40LTQuOSA1My4zLTEzLjVsNTggNTh6bTkwLjcgLjhjMzMuOC00My40IDU0LTk4IDU0LTE1Ny4zcy0yMC4yLTExMy45LTU0LTE1Ny4zYzktMTIuNSA3LjktMzAuMS0zLjQtNDEuM1M0MjUuOCA0NSA0MTMuMyA1NEMzNjkuOSAyMC4yIDMxNS4zIDAgMjU2IDBTMTQyLjEgMjAuMiA5OC43IDU0Yy0xMi41LTktMzAuMS03LjktNDEuMyAzLjRTNDUgODYuMiA1NCA5OC43QzIwLjIgMTQyLjEgMCAxOTYuNyAwIDI1NnMyMC4yIDExMy45IDU0IDE1Ny4zYy05IDEyLjUtNy45IDMwLjEgMy40IDQxLjNTODYuMiA0NjcgOTguNyA0NThjNDMuNCAzMy44IDk4IDU0IDE1Ny4zIDU0czExMy45LTIwLjIgMTU3LjMtNTRjMTIuNSA5IDMwLjEgNy45IDQxLjMtMy40czEyLjQtMjguOCAzLjQtNDEuM3ptLTQ1LjUtNDYuMWwtNTgtNThjOC42LTE1LjggMTMuNS0zNCAxMy41LTUzLjNzLTQuOS0zNy40LTEzLjUtNTMuM2w1OC01OEM0MzQuOSAxNzYuMSA0NDggMjE0LjUgNDQ4IDI1NnMtMTMuMSA3OS45LTM1LjUgMTExLjJ6TTM2Ny4yIDk5LjVsLTU4IDU4Yy0xNS44LTguNi0zNC0xMy41LTUzLjMtMTMuNXMtMzcuNCA0LjktNTMuMyAxMy41bC01OC01OEMxNzYuMSA3Ny4xIDIxNC41IDY0IDI1NiA2NHM3OS45IDEzLjEgMTExLjIgMzUuNXpNMTU3LjUgMzA5LjNsLTU4IDU4Qzc3LjEgMzM1LjkgNjQgMjk3LjUgNjQgMjU2czEzLjEtNzkuOSAzNS41LTExMS4ybDU4IDU4Yy04LjYgMTUuOC0xMy41IDM0LTEzLjUgNTMuM3M0LjkgMzcuNCAxMy41IDUzLjN6TTIwOCAyNTZhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlnaHRidWxiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiAzODRjOS42LTMxLjkgMjkuNS01OS4xIDQ5LjItODYuMmwwIDBjNS4yLTcuMSAxMC40LTE0LjIgMTUuNC0yMS40YzE5LjgtMjguNSAzMS40LTYzIDMxLjQtMTAwLjNDMzY4IDc4LjggMjg5LjIgMCAxOTIgMFMxNiA3OC44IDE2IDE3NmMwIDM3LjMgMTEuNiA3MS45IDMxLjQgMTAwLjNjNSA3LjIgMTAuMiAxNC4zIDE1LjQgMjEuNGwwIDBjMTkuOCAyNy4xIDM5LjcgNTQuNCA0OS4yIDg2LjJIMjcyek0xOTIgNTEyYzQ0LjIgMCA4MC0zNS44IDgwLTgwVjQxNkgxMTJ2MTZjMCA0NC4yIDM1LjggODAgODAgODB6TTExMiAxNzZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZjMC02MS45IDUwLjEtMTEyIDExMi0xMTJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZjLTQ0LjIgMC04MCAzNS44LTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW5lc0xlYW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkwLjQgNzQuMWM1LjYtMTYuOC0zLjUtMzQuOS0yMC4yLTQwLjVzLTM0LjkgMy41LTQwLjUgMjAuMmwtMTI4IDM4NGMtNS42IDE2LjggMy41IDM0LjkgMjAuMiA0MC41czM0LjktMy41IDQwLjUtMjAuMmwxMjgtMzg0em03MC45LTQxLjdjLTE3LjQtMi45LTMzLjkgOC45LTM2LjggMjYuM2wtNjQgMzg0Yy0yLjkgMTcuNCA4LjkgMzMuOSAyNi4zIDM2LjhzMzMuOS04LjkgMzYuOC0yNi4zbDY0LTM4NGMyLjktMTcuNC04LjktMzMuOS0yNi4zLTM2Ljh6TTM1MiAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpbmtTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDQ4OS4zIDM1OC4ybDkwLjUtOTAuNWM1Ni41LTU2LjUgNTYuNS0xNDggMC0yMDQuNWMtNTAtNTAtMTI4LjgtNTYuNS0xODYuMy0xNS40bC0xLjYgMS4xYy0xNC40IDEwLjMtMTcuNyAzMC4zLTcuNCA0NC42czMwLjMgMTcuNyA0NC42IDcuNGwxLjYtMS4xYzMyLjEtMjIuOSA3Ni0xOS4zIDEwMy44IDguNmMzMS41IDMxLjUgMzEuNSA4Mi41IDAgMTE0bC05NiA5Ni0zMS45LTI1QzQzMC45IDIzOS42IDQyMC4xIDE3NS4xIDM3NyAxMzJjLTUyLjItNTIuMy0xMzQuNS01Ni4yLTE5MS4zLTExLjdMMzguOCA1LjF6TTIzOSAxNjJjMzAuMS0xNC45IDY3LjctOS45IDkyLjggMTUuM2MyMCAyMCAyNy41IDQ4LjMgMjEuNyA3NC41TDIzOSAxNjJ6TTExNi42IDE4Ny45TDYwLjIgMjQ0LjNjLTU2LjUgNTYuNS01Ni41IDE0OCAwIDIwNC41YzUwIDUwIDEyOC44IDU2LjUgMTg2LjMgMTUuNGwxLjYtMS4xYzE0LjQtMTAuMyAxNy43LTMwLjMgNy40LTQ0LjZzLTMwLjMtMTcuNy00NC42LTcuNGwtMS42IDEuMWMtMzIuMSAyMi45LTc2IDE5LjMtMTAzLjgtOC42Qzc0IDM3MiA3NCAzMjEgMTA1LjUgMjg5LjVsNjEuOC02MS44LTUwLjYtMzkuOXpNMjIwLjkgMjcwYy0yLjEgMzkuOCAxMi4yIDgwLjEgNDIuMiAxMTBjMzguOSAzOC45IDk0LjQgNTEgMTQzLjYgMzYuM0wyMjAuOSAyNzB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc5LjggMjY3LjdjNTYuNS01Ni41IDU2LjUtMTQ4IDAtMjA0LjVjLTUwLTUwLTEyOC44LTU2LjUtMTg2LjMtMTUuNGwtMS42IDEuMWMtMTQuNCAxMC4zLTE3LjcgMzAuMy03LjQgNDQuNnMzMC4zIDE3LjcgNDQuNiA3LjRsMS42LTEuMWMzMi4xLTIyLjkgNzYtMTkuMyAxMDMuOCA4LjZjMzEuNSAzMS41IDMxLjUgODIuNSAwIDExNEw0MjIuMyAzMzQuOGMtMzEuNSAzMS41LTgyLjUgMzEuNS0xMTQgMGMtMjcuOS0yNy45LTMxLjUtNzEuOC04LjYtMTAzLjhsMS4xLTEuNmMxMC4zLTE0LjQgNi45LTM0LjQtNy40LTQ0LjZzLTM0LjQtNi45LTQ0LjYgNy40bC0xLjEgMS42QzIwNi41IDI1MS4yIDIxMyAzMzAgMjYzIDM4MGM1Ni41IDU2LjUgMTQ4IDU2LjUgMjA0LjUgMEw1NzkuOCAyNjcuN3pNNjAuMiAyNDQuM2MtNTYuNSA1Ni41LTU2LjUgMTQ4IDAgMjA0LjVjNTAgNTAgMTI4LjggNTYuNSAxODYuMyAxNS40bDEuNi0xLjFjMTQuNC0xMC4zIDE3LjctMzAuMyA3LjQtNDQuNnMtMzAuMy0xNy43LTQ0LjYtNy40bC0xLjYgMS4xYy0zMi4xIDIyLjktNzYgMTkuMy0xMDMuOC04LjZDNzQgMzcyIDc0IDMyMSAxMDUuNSAyODkuNUwyMTcuNyAxNzcuMmMzMS41LTMxLjUgODIuNS0zMS41IDExNCAwYzI3LjkgMjcuOSAzMS41IDcxLjggOC42IDEwMy45bC0xLjEgMS42Yy0xMC4zIDE0LjQtNi45IDM0LjQgNy40IDQ0LjZzMzQuNCA2LjkgNDQuNi03LjRsMS4xLTEuNkM0MzMuNSAyNjAuOCA0MjcgMTgyIDM3NyAxMzJjLTU2LjUtNTYuNS0xNDgtNTYuNS0yMDQuNSAwTDYwLjIgMjQ0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpcmFTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAxNjAuNGMwLTM1LjUgMjguOC02NC40IDY0LjQtNjQuNGM2LjkgMCAxMy44IDEuMSAyMC40IDMuM2w4MS4yIDI3LjFjMTYuOCA1LjYgMzQuOS0zLjUgNDAuNS0yMC4ycy0zLjUtMzQuOS0yMC4yLTQwLjVMMjE3IDM4LjZjLTEzLjEtNC40LTI2LjgtNi42LTQwLjYtNi42QzEwNS41IDMyIDQ4IDg5LjUgNDggMTYwLjRWMTkySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4djMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ2Yy0yLjIgMTAuNS02LjEgMjAuNi0xMS43IDI5LjlMNC42IDQzMS41Yy01LjkgOS45LTYuMSAyMi4yLS40IDMyLjJTMjAuNSA0ODAgMzIgNDgwSDI4OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg4OC41bC43LTEuMWMxMS42LTE5LjMgMTguOS00MC43IDIxLjYtNjIuOUgyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTEyVjI1NkgyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTEyVjE2MC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaXN0Q2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUyLjEgMzguMmM5LjkgOC45IDEwLjcgMjQgMS44IDMzLjlsLTcyIDgwYy00LjQgNC45LTEwLjYgNy44LTE3LjIgNy45cy0xMi45LTIuNC0xNy42LTdMNyAxMTNDLTIuMyAxMDMuNi0yLjMgODguNCA3IDc5czI0LjYtOS40IDMzLjkgMGwyMi4xIDIyLjEgNTUuMS02MS4yYzguOS05LjkgMjQtMTAuNyAzMy45LTEuOHptMCAxNjBjOS45IDguOSAxMC43IDI0IDEuOCAzMy45bC03MiA4MGMtNC40IDQuOS0xMC42IDcuOC0xNy4yIDcuOXMtMTIuOS0yLjQtMTcuNi03TDcgMjczYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsMjIuMSAyMi4xIDU1LjEtNjEuMmM4LjktOS45IDI0LTEwLjcgMzMuOS0xLjh6TTIyNCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnptMCAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTE2MCA0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTQ4IDM2OGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpc3RPbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA1NmMwLTEzLjMgMTAuNy0yNCAyNC0yNEg4MGMxMy4zIDAgMjQgMTAuNyAyNCAyNFYxNzZoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRINTZWODBINDhDMzQuNyA4MCAyNCA2OS4zIDI0IDU2ek04Ni43IDM0MS4yYy02LjUtNy40LTE4LjMtNi45LTI0IDEuMkw1MS41IDM1Ny45Yy03LjcgMTAuOC0yMi43IDEzLjMtMzMuNSA1LjZzLTEzLjMtMjIuNy01LjYtMzMuNWwxMS4xLTE1LjZjMjMuNy0zMy4yIDcyLjMtMzUuNiA5OS4yLTQuOWMyMS4zIDI0LjQgMjAuOCA2MC45LTEuMSA4NC43TDg2LjggNDMySDEyMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgzMmMtOS41IDAtMTguMi01LjYtMjItMTQuNHMtMi4xLTE4LjkgNC4zLTI1LjlsNzItNzhjNS4zLTUuOCA1LjQtMTQuNiAuMy0yMC41ek0yMjQgNjRINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCAxNjBINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCAxNjBINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlzdFVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDE0NGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTE5MiA2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyem0wIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyem0wIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyek02NCA0NjRhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em00OC0yMDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MCA0OEMyNi43IDQ4IDE2IDU4LjcgMTYgNzJ2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRIODhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNzJjMC0xMy4zLTEwLjctMjQtMjQtMjRINDB6TTE5MiA2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyem0wIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyem0wIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyek0xNiAyMzJ2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRIODhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjMyYzAtMTMuMy0xMC43LTI0LTI0LTI0SDQwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHpNNDAgMzY4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY0OGMwIDEzLjMgMTAuNyAyNCAyNCAyNEg4OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYzOTJjMC0xMy4zLTEwLjctMjQtMjQtMjRINDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpdGVjb2luU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggNjRjMC0xNy43LTE0LjMtMzItMzItMzJTNjQgNDYuMyA2NCA2NFYyMTMuNkwyMy4yIDIyNS4yYy0xNyA0LjktMjYuOCAyMi42LTIyIDM5LjZzMjIuNiAyNi44IDM5LjYgMjJMNjQgMjgwLjFWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxMjhWMjYxLjlsMTM2LjgtMzkuMWMxNy00LjkgMjYuOC0yMi42IDIyLTM5LjZzLTIyLjYtMjYuOC0zOS42LTIyTDEyOCAxOTUuM1Y2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9jYXRpb25BcnJvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjkuNiA5Mi4xYzQuOS0xMS45IDIuMS0yNS42LTctMzQuN3MtMjIuOC0xMS45LTM0LjctN2wtMzUyIDE0NGMtMTQuMiA1LjgtMjIuMiAyMC44LTE5LjMgMzUuOHMxNi4xIDI1LjggMzEuNCAyNS44SDIyNFY0MzJjMCAxNS4zIDEwLjggMjguNCAyNS44IDMxLjRzMzAtNS4xIDM1LjgtMTkuM2wxNDQtMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMb2NhdGlvbkNyb3NzaGFpcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjYuN0MzNjguNCA4MC4xIDQzMS45IDE0My42IDQ0NS4zIDIyNEg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDQ1LjNDNDMxLjkgMzY4LjQgMzY4LjQgNDMxLjkgMjg4IDQ0NS4zVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDUuM0MxNDMuNiA0MzEuOSA4MC4xIDM2OC40IDY2LjcgMjg4SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDY2LjdDODAuMSAxNDMuNiAxNDMuNiA4MC4xIDIyNCA2Ni43VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0xMjggMjU2YTEyOCAxMjggMCAxIDAgMjU2IDAgMTI4IDEyOCAwIDEgMCAtMjU2IDB6bTEyOC04MGE4MCA4MCAwIDEgMSAwIDE2MCA4MCA4MCAwIDEgMSAwLTE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9jYXRpb25Eb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE1LjcgNDk5LjJDMjY3IDQzNSAzODQgMjc5LjQgMzg0IDE5MkMzODQgODYgMjk4IDAgMTkyIDBTMCA4NiAwIDE5MmMwIDg3LjQgMTE3IDI0MyAxNjguMyAzMDcuMmMxMi4zIDE1LjMgMzUuMSAxNS4zIDQ3LjQgMHpNMTkyIDEyOGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9jYXRpb25QaW5Mb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNS43IDQ5OS4yYzExLTEzLjggMjUuMS0zMS43IDQwLjMtNTIuM1YzNTJjMC0yMy43IDEyLjktNDQuNCAzMi01NS40VjI3MmMwLTU1LjYgNDAuNS0xMDEuNyA5My42LTExMC41QzM2NyA3MCAyODcuNyAwIDE5MiAwQzg2IDAgMCA4NiAwIDE5MmMwIDg3LjQgMTE3IDI0MyAxNjguMyAzMDcuMmMxMi4zIDE1LjMgMzUuMSAxNS4zIDQ3LjQgMHpNMTkyIDEyOGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNNDAwIDI0MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OEgzNjhWMjcyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tODAgMzJ2NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMyVjI3MmMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9jYXRpb25QaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDE5MmMwIDg3LjQtMTE3IDI0My0xNjguMyAzMDcuMmMtMTIuMyAxNS4zLTM1LjEgMTUuMy00Ny40IDBDMTE3IDQzNSAwIDI3OS40IDAgMTkyQzAgODYgODYgMCAxOTIgMFMzODQgODYgMzg0IDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9ja09wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDE0NGMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwdjQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTQ0QzU3NiA2NC41IDUxMS41IDAgNDMyIDBTMjg4IDY0LjUgMjg4IDE0NHY0OEg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFYyNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzUyVjE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgMTQ0djQ4SDMwNFYxNDRjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODB6TTgwIDE5MlYxNDRDODAgNjQuNSAxNDQuNSAwIDIyNCAwczE0NCA2NC41IDE0NCAxNDR2NDhoMTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYyNTZjMC0zNS4zIDI4LjctNjQgNjQtNjRIODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvY3VzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTIgMzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMTZjOTguNyAwIDE4MC42IDcxLjQgMTk3IDE2NS40Yy05LTMuNS0xOC44LTUuNC0yOS01LjRINDMxLjhsLTQxLjgtOTcuNWMtMy40LTcuOS0xMC44LTEzLjQtMTkuMy0xNC40cy0xNyAyLjctMjIuMSA5LjZsLTQwLjkgNTUuNS0yMS43LTUwLjdjLTMuMy03LjgtMTAuNS0xMy4yLTE4LjktMTQuM3MtMTYuNyAyLjMtMjIgOC45bC0yNDAgMzA0Yy04LjIgMTAuNC02LjQgMjUuNSA0IDMzLjdzMjUuNSA2LjQgMzMuNy00bDc5LjQtMTAwLjUgNDMgMTYuNC00MC41IDU1Yy03LjkgMTAuNy01LjYgMjUuNyA1LjEgMzMuNnMyNS43IDUuNiAzMy42LTUuMUwyMTUuMSA0MDBoNzQuNWwtMjkuMyA0Mi4zYy03LjUgMTAuOS00LjggMjUuOCA2LjEgMzMuNHMyNS44IDQuOCAzMy40LTYuMUwzNDggNDAwaDgwLjRsMzguOCA2Ny45YzYuNiAxMS41IDIxLjIgMTUuNSAzMi43IDguOXMxNS41LTIxLjIgOC45LTMyLjdMNDgzLjYgNDAwSDQ5NmM0NC4xIDAgNzkuOC0zNS43IDgwLTc5LjdjMC0uMSAwLS4yIDAtLjNWMjgwQzU3NiAxNDMgNDY1IDMyIDMyOCAzMkgzMTJ6bTUwLjUgMTY4bDE3LjEgNDBIMzMzbDI5LjUtNDB6bS04Ny43IDM4LjFsLTEuNCAxLjlIMjI1LjFsMzIuNy00MS41IDE2LjkgMzkuNXpNODguOCAyNDBDNTcuNCAyNDAgMzIgMjY1LjQgMzIgMjk2LjhjMCAxNS41IDYuMyAzMCAxNi45IDQwLjRMMTI2LjcgMjQwSDg4Ljh6TTQ5NiAyODhhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMdW5nc1ZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjE1Ni4yYy04LjUtNy42LTE5LjctMTIuMi0zMi0xMi4ycy0yMy41IDQuNi0zMiAxMi4yVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek00NDQuNSAxOTUuNWMtMTYuNC0xNi40LTQxLjgtMTguNS02MC41LTYuMVYxNjUuM0MzODQgMTI3IDQxNSA5NiA0NTMuMyA5NmMyMS43IDAgNDIuOCAxMC4yIDU1LjggMjguOGMxNS40IDIyLjEgNDQuMyA2NS40IDcxIDExNi45YzI2LjUgNTAuOSA1Mi40IDExMi41IDU5LjYgMTcwLjNjLjIgMS4zIC4yIDIuNiAuMiA0djdjMCA0OS4xLTM5LjggODktODkgODljLTcuMyAwLTE0LjUtLjktMjEuNi0yLjdsLTcyLjctMTguMmMtMjAuOS01LjItMzguNy0xNy4xLTUxLjUtMzIuOWMxNCAxLjUgMjguNS0zIDM5LjItMTMuOGwtMjIuNi0yMi42IDIyLjYgMjIuNmMxOC43LTE4LjcgMTguNy00OS4xIDAtNjcuOWMtMS4xLTEuMS0xLjQtMi0xLjUtMi41Yy0uMS0uOC0uMS0xLjggLjQtMi45czEuMi0xLjkgMS44LTIuM2MuNS0uMyAxLjMtLjggMi45LS44YzI2LjUgMCA0OC0yMS41IDQ4LTQ4cy0yMS41LTQ4LTQ4LTQ4Yy0xLjYgMC0yLjQtLjQtMi45LS44Yy0uNi0uNC0xLjMtMS4yLTEuOC0yLjNzLS41LTIuMi0uNC0yLjljLjEtLjYgLjQtMS40IDEuNS0yLjVjMTguNy0xOC43IDE4LjctNDkuMSAwLTY3Ljl6TTQyMS44IDQyMS44Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMEMzNzUuOSAzOTguNSAzMzYgNDE1IDMzNiA0NDhjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZjMC0zMy0zOS45LTQ5LjUtNjMuMi0yNi4yYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42QzI0MS41IDM3NS45IDIyNSAzMzYgMTkyIDMzNmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmMzMyAwIDQ5LjUtMzkuOSAyNi4yLTYzLjJjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEMyNjQuMSAyNDEuNSAzMDQgMjI1IDMwNCAxOTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmMwIDMzIDM5LjkgNDkuNSA2My4yIDI2LjJjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42QzM5OC41IDI2NC4xIDQxNSAzMDQgNDQ4IDMwNGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmMtMzMgMC00OS41IDM5LjktMjYuMiA2My4yYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42ek0xODMuMyA0OTEuMmwtNzIuNyAxOC4yYy03LjEgMS44LTE0LjMgMi43LTIxLjYgMi43Yy00OS4xIDAtODktMzkuOC04OS04OXYtN2MwLTEuMyAuMS0yLjcgLjItNGM3LjItNTcuOSAzMy4xLTExOS40IDU5LjYtMTcwLjNjMjYuOC01MS41IDU1LjYtOTQuOCA3MS0xMTYuOWMxMy0xOC42IDM0LTI4LjggNTUuOC0yOC44QzIyNSA5NiAyNTYgMTI3IDI1NiAxNjUuM3YyNC4xYy0xOC42LTEyLjQtNDQtMTAuMy02MC41IDYuMWMtMTguNyAxOC43LTE4LjcgNDkuMSAwIDY3LjljMS4xIDEuMSAxLjQgMiAxLjUgMi41Yy4xIC44IC4xIDEuOC0uNCAyLjlzLTEuMiAxLjktMS44IDIuM2MtLjUgLjMtMS4zIC44LTIuOSAuOGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhzMjEuNSA0OCA0OCA0OGMxLjYgMCAyLjQgLjQgMi45IC44Yy42IC40IDEuMyAxLjIgMS44IDIuM3MuNSAyLjIgLjQgMi45Yy0uMSAuNi0uNCAxLjQtMS41IDIuNWMtMTguNyAxOC43LTE4LjcgNDkuMSAwIDY3LjljMTAuNyAxMC43IDI1LjMgMTUuMyAzOS4yIDEzLjhjLTEyLjggMTUuOS0zMC42IDI3LjctNTEuNSAzMi45ek0yOTYgMzIwYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptNzIgMzJhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTHVuZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMTY0LjFjMCAxNi40IDguNCAzMS43IDIyLjIgNDAuNWw5LjggNi4yVjE2NS4zQzM4NCAxMjcgNDE1IDk2IDQ1My4zIDk2YzIxLjcgMCA0Mi44IDEwLjIgNTUuOCAyOC44YzE1LjQgMjIuMSA0NC4zIDY1LjQgNzEgMTE2LjljMjYuNSA1MC45IDUyLjQgMTEyLjUgNTkuNiAxNzAuM2MuMiAxLjMgLjIgMi42IC4yIDR2N2MwIDQ5LjEtMzkuOCA4OS04OSA4OWMtNy4zIDAtMTQuNS0uOS0yMS42LTIuN2wtNzIuNy0xOC4yQzQxNCA0ODAuNSAzODQgNDQyLjEgMzg0IDM5OFYzMjVsOTAuNSA1Ny42YzcuNSA0LjcgMTcuMyAyLjUgMjIuMS00LjlzMi41LTE3LjMtNC45LTIyLjFMMzg0IDI4Ny4xdi0uNGwtNDQuMS0yOC4xYy03LjMtNC42LTEzLjktMTAuMS0xOS45LTE2LjFjLTUuOSA2LTEyLjYgMTEuNS0xOS45IDE2LjFMMjU2IDI4Ni43IDE2MS4yIDM0N2wtMTMuNSA4LjZjMCAwIDAgMC0uMSAwYy03LjQgNC44LTkuNiAxNC42LTQuOCAyMi4xYzQuNyA3LjUgMTQuNiA5LjcgMjIuMSA0LjlsOTEuMS01OFYzOThjMCA0NC4xLTMwIDgyLjUtNzIuNyA5My4xbC03Mi43IDE4LjJjLTcuMSAxLjgtMTQuMyAyLjctMjEuNiAyLjdjLTQ5LjEgMC04OS0zOS44LTg5LTg5di03YzAtMS4zIC4xLTIuNyAuMi00YzcuMi01Ny45IDMzLjEtMTE5LjQgNTkuNi0xNzAuM2MyNi44LTUxLjUgNTUuNi05NC44IDcxLTExNi45YzEzLTE4LjYgMzQtMjguOCA1NS44LTI4LjhDMjI1IDk2IDI1NiAxMjcgMjU2IDE2NS4zdjQ1LjVsOS44LTYuMmMxMy44LTguOCAyMi4yLTI0LjEgMjIuMi00MC41VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjcgMzMuNGMxMy41LTQuMSAyOC4xIDEuMSAzNS45IDEyLjlMMjI0IDI5NC4zIDM4OS40IDQ2LjJjNy44LTExLjcgMjIuNC0xNyAzNS45LTEyLjlTNDQ4IDQ5LjkgNDQ4IDY0VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNjkuN0wyNTAuNiAzNjkuOGMtNS45IDguOS0xNS45IDE0LjItMjYuNiAxNC4ycy0yMC43LTUuMy0yNi42LTE0LjJMNjQgMTY5LjdWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjY0QzAgNDkuOSA5LjIgMzcuNSAyMi43IDMzLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hZ25ldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDE2MHY5NkMwIDM3OS43IDEwMC4zIDQ4MCAyMjQgNDgwczIyNC0xMDAuMyAyMjQtMjI0VjE2MEgzMjB2OTZjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZWMTYwSDB6bTAtMzJIMTI4VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjR2NjR6bTMyMCAwSDQ0OFY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzNTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWduaWZ5aW5nR2xhc3NBcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAyMDhjMCA0NS45LTE0LjkgODguMy00MCAxMjIuN0w1MDIuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzMzAuNyAzNzZjLTM0LjQgMjUuMi03Ni44IDQwLTEyMi43IDQwQzkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwUzQxNiA5My4xIDQxNiAyMDh6TTI0MSAxMTljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsMzEgMzFIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDIzOC4xbC0zMSAzMWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDcyLTcyYzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC03Mi03MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFnbmlmeWluZ0dsYXNzQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDIwOGMwIDQ1LjktMTQuOSA4OC4zLTQwIDEyMi43TDUwMi42IDQ1Ny40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDMzMC43IDM3NmMtMzQuNCAyNS4yLTc2LjggNDAtMTIyLjcgNDBDOTMuMSA0MTYgMCAzMjIuOSAwIDIwOFM5My4xIDAgMjA4IDBTNDE2IDkzLjEgNDE2IDIwOHptLTMxMiA4djY0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC02NGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHptODAtOTZWMjgwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0em04MCA2NHY5NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjE4NGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFnbmlmeWluZ0dsYXNzRG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAyMDhjMCA0NS45LTE0LjkgODguMy00MCAxMjIuN0w1MDIuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzMzAuNyAzNzZjLTM0LjQgMjUuMi03Ni44IDQwLTEyMi43IDQwQzkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwUzQxNiA5My4xIDQxNiAyMDh6TTIyOCAxMDRjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwdjE0Yy03LjYgMS43LTE1LjIgNC40LTIyLjIgOC41Yy0xMy45IDguMy0yNS45IDIyLjgtMjUuOCA0My45Yy4xIDIwLjMgMTIgMzMuMSAyNC43IDQwLjdjMTEgNi42IDI0LjcgMTAuOCAzNS42IDE0bDEuNyAuNWMxMi42IDMuOCAyMS44IDYuOCAyOCAxMC43YzUuMSAzLjIgNS44IDUuNCA1LjkgOC4yYy4xIDUtMS44IDgtNS45IDEwLjVjLTUgMy4xLTEyLjkgNS0yMS40IDQuN2MtMTEuMS0uNC0yMS41LTMuOS0zNS4xLTguNWMtMi4zLS44LTQuNy0xLjYtNy4yLTIuNGMtMTAuNS0zLjUtMjEuOCAyLjItMjUuMyAxMi42czIuMiAyMS44IDEyLjYgMjUuM2MxLjkgLjYgNCAxLjMgNi4xIDIuMWwwIDAgMCAwYzguMyAyLjkgMTcuOSA2LjIgMjguMiA4LjRWMzEyYzAgMTEgOSAyMCAyMCAyMHMyMC05IDIwLTIwVjI5OC4yYzgtMS43IDE2LTQuNSAyMy4yLTljMTQuMy04LjkgMjUuMS0yNC4xIDI0LjgtNDVjLS4zLTIwLjMtMTEuNy0zMy40LTI0LjYtNDEuNmMtMTEuNS03LjItMjUuOS0xMS42LTM3LjEtMTVsLS43LS4yYy0xMi44LTMuOS0yMS45LTYuNy0yOC4zLTEwLjVjLTUuMi0zLjEtNS4zLTQuOS01LjMtNi43YzAtMy43IDEuNC02LjUgNi4yLTkuM2M1LjQtMy4yIDEzLjYtNS4xIDIxLjUtNWM5LjYgLjEgMjAuMiAyLjIgMzEuMiA1LjJjMTAuNyAyLjggMjEuNi0zLjUgMjQuNS0xNC4ycy0zLjUtMjEuNi0xNC4yLTI0LjVjLTYuNS0xLjctMTMuNy0zLjQtMjEuMS00LjdWMTA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWduaWZ5aW5nR2xhc3NMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMjA4YzAgNDUuOS0xNC45IDg4LjMtNDAgMTIyLjdMNTAyLjYgNDU3LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMMzMwLjcgMzc2Yy0zNC40IDI1LjItNzYuOCA0MC0xMjIuNyA0MEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMFM0MTYgOTMuMSA0MTYgMjA4ek0yODggMTc2YzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwYzAgNDguOCA0Ni41IDExMS42IDY4LjYgMTM4LjZjNiA3LjMgMTYuOCA3LjMgMjIuNyAwYzIyLjEtMjcgNjguNi04OS44IDY4LjYtMTM4LjZ6bS0xMTIgMGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWduaWZ5aW5nR2xhc3NNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMjA4YzAgNDUuOS0xNC45IDg4LjMtNDAgMTIyLjdMNTAyLjYgNDU3LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMMzMwLjcgMzc2Yy0zNC40IDI1LjItNzYuOCA0MC0xMjIuNyA0MEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMFM0MTYgOTMuMSA0MTYgMjA4ek0xMzYgMTg0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDI4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hZ25pZnlpbmdHbGFzc1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDIwOGMwIDQ1LjktMTQuOSA4OC4zLTQwIDEyMi43TDUwMi42IDQ1Ny40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDMzMC43IDM3NmMtMzQuNCAyNS4yLTc2LjggNDAtMTIyLjcgNDBDOTMuMSA0MTYgMCAzMjIuOSAwIDIwOFM5My4xIDAgMjA4IDBTNDE2IDkzLjEgNDE2IDIwOHpNMTg0IDI5NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjIzMmg2NGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyMzJWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djY0SDEyMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg2NHY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFnbmlmeWluZ0dsYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAyMDhjMCA0NS45LTE0LjkgODguMy00MCAxMjIuN0w1MDIuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzMzAuNyAzNzZjLTM0LjQgMjUuMi03Ni44IDQwLTEyMi43IDQwQzkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwUzQxNiA5My4xIDQxNiAyMDh6TTIwOCAzNTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYW5hdFNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY5OC43QzY5LjIgMTEzLjkgMCAxOTIuOSAwIDI4OFY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyODhjMC01OS42IDQwLjgtMTA5LjggOTYtMTI0VjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE2NGM1NS4yIDE0LjIgOTYgNjQuMyA5NiAxMjRWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjg4YzAtOTUuMS02OS4yLTE3NC4xLTE2MC0xODkuM1Y2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFwTG9jYXRpb25Eb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA4IDEyMGMwIDU0LjYtNzMuMSAxNTEuOS0xMDUuMiAxOTJjLTcuNyA5LjYtMjIgOS42LTI5LjYgMEMyNDEuMSAyNzEuOSAxNjggMTc0LjYgMTY4IDEyMEMxNjggNTMuNyAyMjEuNyAwIDI4OCAwczEyMCA1My43IDEyMCAxMjB6bTggODAuNGMzLjUtNi45IDYuNy0xMy44IDkuNi0yMC42Yy41LTEuMiAxLTIuNSAxLjUtMy43bDExNi00Ni40QzU1OC45IDEyMy40IDU3NiAxMzUgNTc2IDE1MlY0MjIuOGMwIDkuOC02IDE4LjYtMTUuMSAyMi4zTDQxNiA1MDNWMjAwLjR6TTEzNy42IDEzOC4zYzIuNCAxNC4xIDcuMiAyOC4zIDEyLjggNDEuNWMyLjkgNi44IDYuMSAxMy43IDkuNiAyMC42VjQ1MS44TDMyLjkgNTAyLjdDMTcuMSA1MDkgMCA0OTcuNCAwIDQ4MC40VjIwOS42YzAtOS44IDYtMTguNiAxNS4xLTIyLjNsMTIyLjYtNDl6TTMyNy44IDMzMmMxMy45LTE3LjQgMzUuNy00NS43IDU2LjItNzdWNTA0LjNMMTkyIDQ0OS40VjI1NWMyMC41IDMxLjMgNDIuMyA1OS42IDU2LjIgNzdjMjAuNSAyNS42IDU5LjEgMjUuNiA3OS42IDB6TTI4OCAxNTJhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXBMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDIuOCAzMTJDMzM0LjkgMjcxLjkgNDA4IDE3NC42IDQwOCAxMjBDNDA4IDUzLjcgMzU0LjMgMCAyODggMFMxNjggNTMuNyAxNjggMTIwYzAgNTQuNiA3My4xIDE1MS45IDEwNS4yIDE5MmM3LjcgOS42IDIyIDkuNiAyOS42IDB6TTQxNiA1MDNsMTQ0LjktNThjOS4xLTMuNiAxNS4xLTEyLjUgMTUuMS0yMi4zVjE1MmMwLTE3LTE3LjEtMjguNi0zMi45LTIyLjNsLTExNiA0Ni40Yy0uNSAxLjItMSAyLjUtMS41IDMuN2MtMi45IDYuOC02LjEgMTMuNy05LjYgMjAuNlY1MDN6TTE1LjEgMTg3LjNDNiAxOTEgMCAxOTkuOCAwIDIwOS42VjQ4MC40YzAgMTcgMTcuMSAyOC42IDMyLjkgMjIuM0wxNjAgNDUxLjhWMjAwLjRjLTMuNS02LjktNi43LTEzLjgtOS42LTIwLjZjLTUuNi0xMy4yLTEwLjQtMjcuNC0xMi44LTQxLjVsLTEyMi42IDQ5ek0zODQgMjU1Yy0yMC41IDMxLjMtNDIuMyA1OS42LTU2LjIgNzdjLTIwLjUgMjUuNi01OS4xIDI1LjYtNzkuNiAwYy0xMy45LTE3LjQtMzUuNy00NS43LTU2LjItNzdWNDQ5LjRsMTkyIDU0LjlWMjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXBQaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTQ0YTE0NCAxNDQgMCAxIDEgMjg4IDBBMTQ0IDE0NCAwIDEgMSAxNiAxNDR6TTE2MCA4MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmMtNTMgMC05NiA0My05NiA5NmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2YzAtMzUuMyAyOC43LTY0IDY0LTY0ek0xMjggNDgwVjMxNy4xYzEwLjQgMS45IDIxLjEgMi45IDMyIDIuOXMyMS42LTEgMzItMi45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCA0NzYuMUwxOTIgNDIxLjJWMzUuOUwzODQgOTAuOFY0NzYuMXptMzItMS4yVjg4LjRMNTQzLjEgMzcuNWMxNS44LTYuMyAzMi45IDUuMyAzMi45IDIyLjNWMzk0LjZjMCA5LjgtNiAxOC42LTE1LjEgMjIuM0w0MTYgNDc0Ljh6TTE1LjEgOTUuMUwxNjAgMzcuMlY0MjMuNkwzMi45IDQ3NC41QzE3LjEgNDgwLjggMCA0NjkuMiAwIDQ1Mi4yVjExNy40YzAtOS44IDYtMTguNiAxNS4xLTIyLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcmtlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODEgMzFDNDQ1LjEtNC44IDM4Ni45LTQuOCAzNTEgMzFsLTE1IDE1TDMyMi45IDMzQzI5NC44IDQuOSAyNDkuMiA0LjkgMjIxLjEgMzNMMTM1IDExOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwTDI1NSA2Ni45YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwTDMwMi4xIDgwIDE4Ni4zIDE5NS43IDMxNi4zIDMyNS43IDQ4MSAxNjFjMzUuOS0zNS45IDM1LjktOTQuMSAwLTEyOS45ek0yOTMuNyAzNDguM0wxNjMuNyAyMTguMyA5OS41IDI4Mi41Yy00OCA0OC04MC44IDEwOS4yLTk0LjEgMTc1LjhsLTUgMjVjLTEuNiA3LjkgLjkgMTYgNi42IDIxLjdzMTMuOCA4LjEgMjEuNyA2LjZsMjUtNWM2Ni42LTEzLjMgMTI3LjgtNDYuMSAxNzUuOC05NC4xbDY0LjItNjQuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFyc0FuZFZlbnVzQnVyc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0IDBjLTkuNyAwLTE4LjUgNS44LTIyLjIgMTQuOHMtMS43IDE5LjMgNS4yIDI2LjJsMzkgMzktMjIuMiAyMi4yQzQ3NS45IDc4LjQgNDM5LjYgNjQgNDAwIDY0Yy04OC40IDAtMTYwIDcxLjYtMTYwIDE2MGMwIDgwLjIgNTkgMTQ2LjYgMTM2IDE1OC4yVjQwOEgzNTJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMjR2MzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0NTZoMjRjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRINDI0VjM4Mi4yYzc3LTExLjYgMTM2LTc4IDEzNi0xNTguMmMwLTMxLjQtOS02MC43LTI0LjctODUuNEw1NjAgMTEzLjlsMzkgMzljNi45IDYuOSAxNy4yIDguOSAyNi4yIDUuMnMxNC44LTEyLjUgMTQuOC0yMi4yVjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0SDUwNHpNNDAwIDEyOGE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnpNMTkwLjkgMTguMUMxODguNCAxMiAxODIuNiA4IDE3NiA4cy0xMi40IDQtMTQuOSAxMC4xbC0yOS40IDc0TDU1LjYgNjguOWMtNi4zLTEuOS0xMy4xIC4yLTE3LjIgNS4zcy00LjYgMTIuMi0xLjQgMTcuOWwzOS41IDY5LjFMMTAuOSAyMDYuNGMtNS40IDMuNy04IDEwLjMtNi41IDE2LjdzNi43IDExLjIgMTMuMSAxMi4ybDc4LjcgMTIuMkw5MC42IDMyN2MtLjUgNi41IDMuMSAxMi43IDkgMTUuNXMxMi45IDEuOCAxNy44LTIuNkwxNzYgMjg2LjFsNTguNiA1My45YzQuMSAzLjggOS45IDUuMSAxNS4yIDMuNkMyMjMuNiAzMTAuOCAyMDggMjY5LjIgMjA4IDIyNGMwLTYwLjggMjguMy0xMTUgNzIuNC0xNTAuMkwyMjAuMyA5Mi4xbC0yOS40LTc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJzQW5kVmVudXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM3LjggMTQuOEMzNDEuNSA1LjggMzUwLjMgMCAzNjAgMEg0NzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRWMTM2YzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTM5LTM5LTI0LjcgMjQuN0M0MDcgMTYzLjMgNDE2IDE5Mi42IDQxNiAyMjRjMCA4MC4yLTU5IDE0Ni42LTEzNiAxNTguMlY0MDhoMjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjgwdjMyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjQ1NkgyMDhjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoMjRWMzgyLjJDMTU1IDM3MC42IDk2IDMwNC4yIDk2IDIyNGMwLTg4LjQgNzEuNi0xNjAgMTYwLTE2MGMzOS42IDAgNzUuOSAxNC40IDEwMy44IDM4LjJMMzgyLjEgODAgMzQzIDQxYy02LjktNi45LTguOS0xNy4yLTUuMi0yNi4yek00NDggNDhsMCAwaDB2MHpNMzUyIDIyNGE5NiA5NiAwIDEgMCAtMTkyIDAgOTYgOTYgMCAxIDAgMTkyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcnNEb3VibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEyIDMyYy05LjcgMC0xOC41IDUuOC0yMi4yIDE0LjhzLTEuNyAxOS4zIDUuMiAyNi4ybDMzLjQgMzMuNEwyNzUuOCAxNTljLTI4LjQtMTkuNS02Mi43LTMxLTk5LjgtMzFDNzguOCAxMjggMCAyMDYuOCAwIDMwNHM3OC44IDE3NiAxNzYgMTc2czE3Ni03OC44IDE3Ni0xNzZjMC0zNy0xMS40LTcxLjQtMzEtOTkuOGw1Mi42LTUyLjZMNDA3IDE4NWM2LjkgNi45IDE3LjIgOC45IDI2LjIgNS4yczE0LjgtMTIuNSAxNC44LTIyLjJWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRIMzEyem04OCA0OGgwdjBsMCAwek02NCAzMDRhMTEyIDExMiAwIDEgMSAyMjQgMEExMTIgMTEyIDAgMSAxIDY0IDMwNHpNMzY4IDQ4MGM5Ny4yIDAgMTc2LTc4LjggMTc2LTE3NmMwLTM3LTExLjQtNzEuNC0zMS05OS44bDUyLjYtNTIuNkw1OTkgMTg1YzYuOSA2LjkgMTcuMiA4LjkgMjYuMiA1LjJzMTQuOC0xMi41IDE0LjgtMjIuMlY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEg1MDRjLTkuNyAwLTE4LjUgNS44LTIyLjIgMTQuOGMtMS4yIDIuOS0xLjggNi0xLjggOWwwIC4ydi4yYzAgNi4yIDIuNSAxMi4yIDcgMTYuOGwzMy40IDMzLjRMNDgwIDE0Ni43VjE2OGMwIDIyLjYtMTMuNiA0My4xLTM0LjYgNTEuN2MtLjggLjMtMS43IC43LTIuNSAxQzQ2NS43IDI0MS4yIDQ4MCAyNzAuOSA0ODAgMzA0YzAgNjEuOS01MC4xIDExMi0xMTIgMTEyYy01LjQgMC0xMC44LS40LTE2LTEuMWMtMTIuOSAyMC40LTI5LjEgMzguMy00OC4xIDUzLjFjMTkuOCA3LjggNDEuNCAxMiA2NCAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFyc1N0cm9rZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCAzNjhhMTEyIDExMiAwIDEgMCAwLTIyNCAxMTIgMTEyIDAgMSAwIDAgMjI0em0xNzQuNC04OEMzNzAuNyAzNjUuOCAyOTcuMSA0MzIgMjA4IDQzMmMtOTcuMiAwLTE3Ni03OC44LTE3Ni0xNzZzNzguOC0xNzYgMTc2LTE3NmM4OS4xIDAgMTYyLjcgNjYuMiAxNzQuNCAxNTJINDE2VjE3NmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djU2aDMyVjE3NmMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJzMTkuMy0xLjcgMjYuMiA1LjJsODAgODBjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTgwIDgwYy02LjkgNi45LTE3LjIgOC45LTI2LjIgNS4ycy0xNC44LTEyLjUtMTQuOC0yMi4yVjI4MEg0NjR2NTZjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjgwSDM4Mi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJzU3Ryb2tlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ4LjcgNC43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwbDY0IDY0YzQuNiA0LjYgNS45IDExLjUgMy41IDE3LjRzLTguMyA5LjktMTQuOCA5LjlIMTg0djI0aDMyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDE4NHYyNGMwIC42IDAgMS4yLS4xIDEuOGM3NyAxMS42IDEzNi4xIDc4IDEzNi4xIDE1OC4yYzAgODguNC03MS42IDE2MC0xNjAgMTYwUzAgNDQwLjQgMCAzNTJjMC04MC4yIDU5LjEtMTQ2LjcgMTM2LjEtMTU4LjJjMC0uNi0uMS0xLjItLjEtMS44VjE2OEgxMDRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoMzJWOTZIOTZjLTYuNSAwLTEyLjMtMy45LTE0LjgtOS45cy0xLjEtMTIuOSAzLjUtMTcuNGw2NC02NHpNMjU2IDM1MkE5NiA5NiAwIDEgMCA2NCAzNTJhOTYgOTYgMCAxIDAgMTkyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcnNTdHJva2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc2IDBjLTkuNyAwLTE4LjUgNS44LTIyLjIgMTQuOHMtMS43IDE5LjMgNS4yIDI2LjJsMzMuNCAzMy40TDM3MC4zIDk2LjQgMzQ1IDcxYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDI1LjQgMjUuNEwzMDcuOCAxNTljLTI4LjQtMTkuNS02Mi43LTMxLTk5LjgtMzFjLTk3LjIgMC0xNzYgNzguOC0xNzYgMTc2czc4LjggMTc2IDE3NiAxNzZzMTc2LTc4LjggMTc2LTE3NmMwLTM3LTExLjQtNzEuNC0zMS05OS44bDI4LjYtMjguNkw0MDcgMjAxYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtMjUuNC0yNS40IDIyLjEtMjIuMUw0NzEgMTUzYzYuOSA2LjkgMTcuMiA4LjkgMjYuMiA1LjJzMTQuOC0xMi41IDE0LjgtMjIuMlYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgzNzZ6bTg4IDQ4aDB2MGwwIDB6TTk2IDMwNGExMTIgMTEyIDAgMSAxIDIyNCAwQTExMiAxMTIgMCAxIDEgOTYgMzA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OS44IDQ2LjhjMy43LTkgMTIuNS0xNC44IDIyLjItMTQuOEg0MjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRWMTY4YzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTMzLjQtMzMuNEwzMjEgMjA0LjJjMTkuNSAyOC40IDMxIDYyLjcgMzEgOTkuOGMwIDk3LjItNzguOCAxNzYtMTc2IDE3NlMwIDQwMS4yIDAgMzA0czc4LjgtMTc2IDE3Ni0xNzZjMzcgMCA3MS40IDExLjQgOTkuOCAzMWw1Mi42LTUyLjZMMjk1IDczYy02LjktNi45LTguOS0xNy4yLTUuMi0yNi4yek00MDAgODBsMCAwaDB2MHpNMTc2IDQxNmExMTIgMTEyIDAgMSAwIDAtMjI0IDExMiAxMTIgMCAxIDAgMCAyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcnRpbmlHbGFzc0NpdHJ1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIgMjQwYzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2Yy0zNS41IDAtNjYuNiAxOS4zLTgzLjIgNDhIMjk2LjJDMzE2IDQwLjEgMzY5LjMgMCA0MzIgMGM3OS41IDAgMTQ0IDY0LjUgMTQ0IDE0NHMtNjQuNSAxNDQtMTQ0IDE0NGMtMjcuNyAwLTUzLjUtNy44LTc1LjUtMjEuM2wzNS40LTM1LjRjMTIuMiA1LjYgMjUuOCA4LjcgNDAuMSA4Ljd6TTEuOCAxNDIuOEM1LjUgMTMzLjggMTQuMyAxMjggMjQgMTI4SDM5MmM5LjcgMCAxOC41IDUuOCAyMi4yIDE0LjhzMS43IDE5LjMtNS4yIDI2LjJsLTE3NyAxNzdWNDY0aDY0YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDIwOCAxMjBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoNjRWMzQ1LjlMNyAxNjljLTYuOS02LjktOC45LTE3LjItNS4yLTI2LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcnRpbmlHbGFzc0VtcHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDBDMTkuMSAwIDcuNCA3LjggMi40IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45TDIyNCAyNjkuM1Y0NDhIMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDk2IDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI4OFYyNjkuM0w1MDIuNiA1NC42YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45UzQ5Mi45IDAgNDgwIDBIMzJ6TTI1NiAyMTAuN0wxMDkuMyA2NEg0MDIuN0wyNTYgMjEwLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcnRpbmlHbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAwQzE5LjEgMCA3LjQgNy44IDIuNCAxOS44cy0yLjIgMjUuNyA2LjkgMzQuOUwyMjQgMjY5LjNWNDQ4SDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NiA5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyODhWMjY5LjNMNTAyLjYgNTQuNmM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOVM0OTIuOSAwIDQ4MCAwSDMyek0xNzMuMyAxMjhsLTY0LTY0SDQwMi43bC02NCA2NEgxNzMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFza0ZhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDY0Yy0yNy4yIDAtNTMuOCA4LTc2LjQgMjMuMWwtMzcuMSAyNC44Yy0xNS44IDEwLjUtMzQuMyAxNi4xLTUzLjMgMTYuMUgxNDQgMTI4IDU2Yy0zMC45IDAtNTYgMjUuMS01NiA1NnY4NWMwIDU1LjEgMzcuNSAxMDMuMSA5MC45IDExNi40bDEwOCAyN0MyMzMuOCA0MzUgMjc1LjQgNDQ4IDMyMCA0NDhzODYuMi0xMyAxMjEuMS0zNS41bDEwOC0yN0M2MDIuNSAzNzIuMSA2NDAgMzI0LjEgNjQwIDI2OVYxODRjMC0zMC45LTI1LjEtNTYtNTYtNTZINTEyIDQ5NmgtOS4yYy0xOSAwLTM3LjUtNS42LTUzLjMtMTYuMUwzOTYuNCA4Ny4xQzM3My44IDcyIDM0Ny4yIDY0IDMyMCA2NHpNMTMyLjMgMzQ2LjNsLTI5LjgtNy40QzcwLjUgMzMwLjkgNDggMzAyLjEgNDggMjY5VjE4NGMwLTQuNCAzLjYtOCA4LThIOTZ2NDhjMCA0NS4xIDEzLjQgODcuMiAzNi4zIDEyMi4zem00MDUuMS03LjRsLTI5LjggNy40YzIzLTM1LjIgMzYuMy03Ny4yIDM2LjMtMTIyLjNWMTc2aDQwYzQuNCAwIDggMy42IDggOHY4NWMwIDMzLTIyLjUgNjEuOC01NC41IDY5Ljl6TTE5MiAyMDhjMC04LjggNy4yLTE2IDE2LTE2SDQzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyMDhjLTguOCAwLTE2LTcuMi0xNi0xNnptMTYgNDhINDMyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDIwOGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMTYgODBjMC04LjggNy4yLTE2IDE2LTE2SDQwMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyNDBjLTguOCAwLTE2LTcuMi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFza1ZlbnRpbGF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU5LjEgMTc2QzEzOS40IDIxOS4yIDEyOCAyNjQuNyAxMjggMzAwLjhjMCAxNS45IDIuMiAzMS40IDYuMyA0NmwtMzEuOC03LjlDNzAuNSAzMzAuOSA0OCAzMDIuMSA0OCAyNjlWMTg0YzAtNC40IDMuNi04IDgtOEgxNTkuMXptMjYtNDhINTZjLTMwLjkgMC01NiAyNS4xLTU2IDU2djg1YzAgNTUuMSAzNy41IDEwMy4xIDkwLjkgMTE2LjRsNzEuMyAxNy44YzIyLjcgMzAuNSA1NS40IDU0LjEgOTMuOCA2Ni42VjM5My4zYy0xOS43LTE2LjQtMzItNDAuMy0zMi02Ni45YzAtNDkuNSA0My0xMzQuNCA5Ni0xMzQuNGM1Mi41IDAgOTYgODQuOSA5NiAxMzQuNGMwIDI2LjctMTIuNCA1MC40LTMyIDY2Ljh2NzYuNmMzOC0xMi42IDcwLjYtMzYgOTMuNS02Ni40bDcxLjYtMTcuOUM2MDIuNSAzNzIuMSA2NDAgMzI0LjEgNjQwIDI2OVYxODRjMC0zMC45LTI1LjEtNTYtNTYtNTZINDU0LjVDNDE5LjcgNzMuOCAzNzIuMSAzMiAzMjAgMzJjLTUyLjYgMC0xMDAuMiA0MS44LTEzNC45IDk2em0yOTUuNiA0OEg1ODRjNC40IDAgOCAzLjYgOCA4djg1YzAgMzMtMjIuNSA2MS44LTU0LjUgNjkuOWwtMzEuOCA4YzQuMi0xNC43IDYuNC0zMC4xIDYuNC00Ni4xYzAtMzYuMS0xMS42LTgxLjYtMzEuMy0xMjQuOHpNMjg4IDMyMFY1MTJoNjRWMzIwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCA2NEM2NCA2NCAwIDE2MCAwIDI3MlM4MCA0NDggMTc2IDQ0OGg4LjRjMjQuMiAwIDQ2LjQtMTMuNyA1Ny4yLTM1LjRsMjMuMi00Ni4zYzQuNC04LjggMTMuMy0xNC4zIDIzLjItMTQuM3MxOC44IDUuNSAyMy4yIDE0LjNsMjMuMiA0Ni4zYzEwLjggMjEuNyAzMyAzNS40IDU3LjIgMzUuNEg0MDBjOTYgMCAxNzYtNjQgMTc2LTE3NnMtNjQtMjA4LTI4OC0yMDh6TTk2IDI1NmE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSA5NiAyNTZ6bTMyMC02NGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFza3NUaGVhdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTc0LjYgMzczLjJjNDEuNyAzNi4xIDEwOCA4Mi41IDE2Ni4xIDczLjdjNi4xLS45IDEyLjEtMi41IDE4LTQuNWMtOS4yLTEyLjMtMTcuMy0yNC40LTI0LjItMzUuNGMtMjEuOS0zNS0yOC44LTc1LjItMjUuOS0xMTMuNmMtMjAuNiA0LjEtMzkuMiAxMy01NC43IDI1LjRjLTYuNSA1LjItMTYuMyAxLjMtMTQuOC03YzYuNC0zMy41IDMzLTYwLjkgNjguMi02Ni4zYzIuNi0uNCA1LjMtLjcgNy45LS44bDE5LjQtMTMxLjNjMi0xMy44IDgtMzIuNyAyNS00NS45QzI3OC4yIDUzLjIgMzEwLjUgMzcgMzYzLjIgMzIuMmMtLjgtLjctMS42LTEuNC0yLjQtMi4xQzM0MC42IDE0LjUgMjg4LjQtMTEuNSAxNzUuNyA1LjZTMjAuNSA2MyA1LjcgODMuOUMwIDkxLjktLjggMTAyIC42IDExMS44TDI0LjggMjc2LjFjNS41IDM3LjMgMjEuNSA3Mi42IDQ5LjggOTcuMnptODcuNy0yMTkuNmM0LjQtMy4xIDEwLjgtMiAxMS44IDMuM2MuMSAuNSAuMiAxLjEgLjMgMS42YzMuMiAyMS44LTExLjYgNDItMzMuMSA0NS4zcy00MS41LTExLjgtNDQuNy0zMy41Yy0uMS0uNS0uMS0xLjEtLjItMS42Yy0uNi01LjQgNS4yLTguNCAxMC4zLTYuN2M5IDMgMTguOCAzLjkgMjguNyAyLjRzMTkuMS01LjMgMjYuOC0xMC44ek0yNjEuNiAzOTBjMjkuNCA0Ni45IDc5LjUgMTEwLjkgMTM3LjYgMTE5LjdzMTI0LjUtMzcuNSAxNjYuMS03My43YzI4LjMtMjQuNSA0NC4zLTU5LjggNDkuOC05Ny4ybDI0LjItMTY0LjNjMS40LTkuOCAuNi0xOS45LTUuMS0yNy45Yy0xNC44LTIwLjktNTcuMy02MS4yLTE3MC03OC4zUzI5OS40IDc3LjIgMjc5LjIgOTIuOGMtNy44IDYtMTEuNSAxNS40LTEyLjkgMjUuMkwyNDIuMSAyODIuM2MtNS41IDM3LjMtLjQgNzUuOCAxOS42IDEwNy43ek00MDQuNSAyMzUuM2MtNy43LTUuNS0xNi44LTkuMy0yNi44LTEwLjhzLTE5LjgtLjYtMjguNyAyLjRjLTUuMSAxLjctMTAuOS0xLjMtMTAuMy02LjdjLjEtLjUgLjEtMS4xIC4yLTEuNmMzLjItMjEuOCAyMy4yLTM2LjggNDQuNy0zMy41czM2LjMgMjMuNSAzMy4xIDQ1LjNjLS4xIC41LS4yIDEuMS0uMyAxLjZjLTEgNS4zLTcuNCA2LjQtMTEuOCAzLjN6bTEzNi4yIDE1LjVjLTEgNS4zLTcuNCA2LjQtMTEuOCAzLjNjLTcuNy01LjUtMTYuOC05LjMtMjYuOC0xMC44cy0xOS44LS42LTI4LjcgMi40Yy01LjEgMS43LTEwLjktMS4zLTEwLjMtNi43Yy4xLS41IC4xLTEuMSAuMi0xLjZjMy4yLTIxLjggMjMuMi0zNi44IDQ0LjctMzMuNXMzNi4zIDIzLjUgMzMuMSA0NS4zYy0uMSAuNS0uMiAxLjEtLjMgMS42ek01MzAgMzUwLjJjLTE5LjYgNDQuNy02Ni44IDcyLjUtMTE2LjggNjQuOXMtODcuMS00OC4yLTkzLTk2LjdjLTEtOC4zIDguOS0xMi4xIDE1LjItNi43YzIzLjkgMjAuOCA1My42IDM1LjMgODcgNDAuM3M2Ni4xIC4xIDk0LjktMTIuOGM3LjYtMy40IDE2IDMuMiAxMi42IDEwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hdHRyZXNzUGlsbG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMjU2VjY0em0zMiAzODRINTc2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEgyODhWNDQ4ek02NCAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1heGltaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMCAzMkg1NkM0Mi43IDMyIDMyIDQyLjcgMzIgNTZWMjAwYzAgOS43IDUuOCAxOC41IDE0LjggMjIuMnMxOS4zIDEuNyAyNi4yLTUuMmw0MC00MCA3OSA3OS03OSA3OUw3MyAyOTVjLTYuOS02LjktMTcuMi04LjktMjYuMi01LjJTMzIgMzAyLjMgMzIgMzEyVjQ1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNEgyMDBjOS43IDAgMTguNS01LjggMjIuMi0xNC44czEuNy0xOS4zLTUuMi0yNi4ybC00MC00MCA3OS03OSA3OSA3OS00MCA0MGMtNi45IDYuOS04LjkgMTcuMi01LjIgMjYuMnMxMi41IDE0LjggMjIuMiAxNC44SDQ1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYzMTJjMC05LjctNS44LTE4LjUtMTQuOC0yMi4ycy0xOS4zLTEuNy0yNi4yIDUuMmwtNDAgNDAtNzktNzkgNzktNzkgNDAgNDBjNi45IDYuOSAxNy4yIDguOSAyNi4yIDUuMnMxNC44LTEyLjUgMTQuOC0yMi4yVjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0SDMxMmMtOS43IDAtMTguNSA1LjgtMjIuMiAxNC44cy0xLjcgMTkuMyA1LjIgMjYuMmw0MCA0MC03OSA3OS03OS03OSA0MC00MGM2LjktNi45IDguOS0xNy4yIDUuMi0yNi4yUzIwOS43IDMyIDIwMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVkYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC4xIDM4LjJDMS40IDM0LjIgMCAyOS40IDAgMjQuNkMwIDExIDExIDAgMjQuNiAwSDEzMy45YzExLjIgMCAyMS43IDUuOSAyNy40IDE1LjVsNjguNSAxMTQuMWMtNDguMiA2LjEtOTEuMyAyOC42LTEyMy40IDYxLjlMNC4xIDM4LjJ6bTUwMy43IDBMNDA1LjYgMTkxLjVjLTMyLjEtMzMuMy03NS4yLTU1LjgtMTIzLjQtNjEuOUwzNTAuNyAxNS41QzM1Ni41IDUuOSAzNjYuOSAwIDM3OC4xIDBINDg3LjRDNTAxIDAgNTEyIDExIDUxMiAyNC42YzAgNC44LTEuNCA5LjYtNC4xIDEzLjZ6TTgwIDMzNmExNzYgMTc2IDAgMSAxIDM1MiAwQTE3NiAxNzYgMCAxIDEgODAgMzM2em0xODQuNC05NC45Yy0zLjQtNy0xMy4zLTctMTYuOCAwbC0yMi40IDQ1LjRjLTEuNCAyLjgtNCA0LjctNyA1LjFMMTY4IDI5OC45Yy03LjcgMS4xLTEwLjcgMTAuNS01LjIgMTZsMzYuMyAzNS40YzIuMiAyLjIgMy4yIDUuMiAyLjcgOC4zbC04LjYgNDkuOWMtMS4zIDcuNiA2LjcgMTMuNSAxMy42IDkuOWw0NC44LTIzLjZjMi43LTEuNCA2LTEuNCA4LjcgMGw0NC44IDIzLjZjNi45IDMuNiAxNC45LTIuMiAxMy42LTkuOWwtOC42LTQ5LjljLS41LTMgLjUtNi4xIDIuNy04LjNsMzYuMy0zNS40YzUuNi01LjQgMi41LTE0LjgtNS4yLTE2bC01MC4xLTcuM2MtMy0uNC01LjctMi40LTctNS4xbC0yMi40LTQ1LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lbW9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOHY3LjRjMCA2LjggNC40IDEyLjYgMTAuMSAxNi4zQzIzLjMgMTYwLjMgMzIgMTc1LjEgMzIgMTkycy04LjcgMzEuNy0yMS45IDQwLjNDNC40IDIzNiAwIDI0MS44IDAgMjQ4LjZWMzIwSDU3NlYyNDguNmMwLTYuOC00LjQtMTIuNi0xMC4xLTE2LjNDNTUyLjcgMjIzLjcgNTQ0IDIwOC45IDU0NCAxOTJzOC43LTMxLjcgMjEuOS00MC4zYzUuNy0zLjcgMTAuMS05LjUgMTAuMS0xNi4zVjEyOGMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNNTc2IDM1MkgwdjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDgwVjQxNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djMyaDk2VjQxNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djMyaDk2VjQxNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djMyaDk2VjQxNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djMyaDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM1MnpNMTkyIDE2MHY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnptMTI4IDB2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6bTEyOCAwdjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZW5vcmFoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjggNy40QzIyLjggMi45IDI3LjEgMCAzMiAwczkuMiAyLjkgMTEuMiA3LjRMNjEuMyA0OS43YzEuOCA0LjEgMi43IDguNiAyLjcgMTMuMVY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMlMwIDgxLjcgMCA2NFY2Mi44YzAtNC41IC45LTguOSAyLjctMTMuMUwyMC44IDcuNHptOTYgMEMxMTguOCAyLjkgMTIzLjEgMCAxMjggMHM5LjIgMi45IDExLjIgNy40bDE4LjIgNDIuNGMxLjggNC4xIDIuNyA4LjYgMi43IDEzLjFWNjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNjIuOGMwLTQuNSAuOS04LjkgMi43LTEzLjFMMTE2LjggNy40em03Ny44IDQyLjRMMjEyLjggNy40QzIxNC44IDIuOSAyMTkuMSAwIDIyNCAwczkuMiAyLjkgMTEuMiA3LjRsMTguMiA0Mi40YzEuOCA0LjEgMi43IDguNiAyLjcgMTMuMVY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY2Mi44YzAtNC41IC45LTguOSAyLjctMTMuMXpNMzA4LjggNy40QzMxMC44IDIuOSAzMTUuMSAwIDMyMCAwczkuMiAyLjkgMTEuMiA3LjRsMTguMiA0Mi40YzEuOCA0LjEgMi43IDguNiAyLjcgMTMuMVY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY2Mi44YzAtNC41IC45LTguOSAyLjctMTMuMUwzMDguOCA3LjR6bTc3LjggNDIuNEw0MDQuOCA3LjRDNDA2LjggMi45IDQxMS4xIDAgNDE2IDBzOS4yIDIuOSAxMS4yIDcuNGwxOC4yIDQyLjRjMS44IDQuMSAyLjcgOC42IDIuNyAxMy4xVjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjYyLjhjMC00LjUgLjktOC45IDIuNy0xMy4xek01MDAuOCA3LjRDNTAyLjggMi45IDUwNy4xIDAgNTEyIDBzOS4yIDIuOSAxMS4yIDcuNGwxOC4yIDQyLjRjMS44IDQuMSAyLjcgOC42IDIuNyAxMy4xVjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjYyLjhjMC00LjUgLjktOC45IDIuNy0xMy4xTDUwMC44IDcuNHptNzcuOCA0Mi40TDU5Ni44IDcuNEM1OTguOCAyLjkgNjAzLjEgMCA2MDggMHM5LjIgMi45IDExLjIgNy40bDE4LjIgNDIuNGMxLjggNC4xIDIuNyA4LjYgMi43IDEzLjFWNjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNjIuOGMwLTQuNSAuOS04LjkgMi43LTEzLjF6TTMyIDEyOGMxNy43IDAgMzIgMTQuMyAzMiAzMlYyODhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMjg4VjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjMyMEg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMjg4YzAgNTMtNDMgOTYtOTYgOTZIMzUydjY0SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMjAgMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDI4OFYzODRIOTZjLTUzIDAtOTYtNDMtOTYtOTZWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyem05NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2IDMySDk2VjI1NiAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTYgMzJIMTkyVjI1NiAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTE5MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2IDMySDM4NFYyNTYgMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyem05NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2IDMySDQ4MFYyNTYgMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZXJjdXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcyLjEgN0M4NS44LTQgMTA2LTEuOCAxMTcgMTJjMTcuNiAyMiA0NC43IDM2IDc1IDM2czU3LjMtMTQgNzUtMzZjMTEuMS0xMy44IDMxLjItMTYgNDUtNXMxNiAzMS4yIDUgNDVjLTcuOCA5LjctMTYuNiAxOC40LTI2LjQgMjYuMUMzMzcuMyAxMDkuNyAzNjggMTYzLjMgMzY4IDIyNGMwIDg5LjEtNjYuMiAxNjIuNy0xNTIgMTc0LjRWNDI0aDMyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDIxNnYxNmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY0NzJIMTM2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDMyVjM5OC40QzgyLjIgMzg2LjcgMTYgMzEzLjEgMTYgMjI0YzAtNjAuNyAzMC43LTExNC4zIDc3LjUtMTQ1LjlDODMuNyA3MC41IDc0LjkgNjEuNyA2Ny4xIDUyYy0xMS4xLTEzLjgtOC44LTMzLjkgNS00NXpNODAgMjI0YTExMiAxMTIgMCAxIDAgMjI0IDBBMTEyIDExMiAwIDEgMCA4MCAyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lc3NhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWMzUyYzAgMzUuMyAyOC43IDY0IDY0IDY0aDk2djgwYzAgNi4xIDMuNCAxMS42IDguOCAxNC4zczExLjkgMi4xIDE2LjgtMS41TDMwOS4zIDQxNkg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1ldGVvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTMuNyAuOUwyOTkuNCA3NS42bDIuMy0yOS4zYzEtMTIuOC0xMi44LTIxLjUtMjQtMTUuMUwxMDEuMyAxMzMuNEMzOC42IDE2OS43IDAgMjM2LjYgMCAzMDlDMCA0MjEuMSA5MC45IDUxMiAyMDMgNTEyYzcyLjQgMCAxMzkuNC0zOC42IDE3NS43LTEwMS4zTDQ4MC44IDIzNC4zYzYuNS0xMS4xLTIuMi0yNS0xNS4xLTI0bC0yOS4zIDIuM0w1MTEuMSAxOC4zYy42LTEuNSAuOS0zLjIgLjktNC44QzUxMiA2IDUwNiAwIDQ5OC41IDBjLTEuNyAwLTMuMyAuMy00LjggLjl6TTE5MiAxOTJhMTI4IDEyOCAwIDEgMSAwIDI1NiAxMjggMTI4IDAgMSAxIDAtMjU2em0wIDk2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTE2IDk2YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWljcm9jaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjRIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINjR2NTZIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINjR2NTZIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINjRjMCAzNS4zIDI4LjcgNjQgNjQgNjR2NDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0NDhoNTZ2NDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0NDhoNTZ2NDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRoNDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRINDQ4VjI4MGg0MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg0NDhWMTc2aDQwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDQ0OGMwLTM1LjMtMjguNy02NC02NC02NFYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEgyODBWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWNjRIMTc2VjI0ek0xNjAgMTI4SDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMlYzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTE5MiAzMkgxNjBWMzUySDM1MlYxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvcGhvbmVMaW5lc1NsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNDcyLjEgMzQ0LjdjMTUuMi0yNiAyMy45LTU2LjMgMjMuOS04OC43VjIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHYyNCAxNmMwIDIxLjItNS4xIDQxLjEtMTQuMiA1OC43TDQxNiAzMDAuOFYyNTZIMzU4LjlsLTM0LjUtMjdjMi45LTMuMSA3LTUgMTEuNi01aDgwVjE5MkgzMzZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoODBWMTI4SDMzNmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg4MGMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NnY1NC4zTDM4LjggNS4xek0zNTguMiAzNzguMkMzNDYuMSAzODIgMzMzLjMgMzg0IDMyMCAzODRjLTcwLjcgMC0xMjgtNTcuMy0xMjgtMTI4di04LjdMMTQ0LjcgMjEwYy0uNSAxLjktLjcgMy45LS43IDZ2NDBjMCA4OS4xIDY2LjIgMTYyLjcgMTUyIDE3NC40VjQ2NEgyNDhjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNzIgNzJjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMzQ0VjQzMC40YzIwLjQtMi44IDM5LjctOS4xIDU3LjMtMTguMmwtNDMuMS0zMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWNyb3Bob25lTGluZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgOTZWMjU2YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZIMjA4Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDgwVjE5MkgyMDhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoODBWMTI4SDIwOGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg4MGMwLTUzLTQzLTk2LTk2LTk2Uzk2IDQzIDk2IDk2ek0zMjAgMjQwdjE2YzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4cy0xMjgtNTcuMy0xMjgtMTI4VjIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY0MGMwIDg5LjEgNjYuMiAxNjIuNyAxNTIgMTc0LjRWNDY0SDEyMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg3MiA3MmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyMTZWNDMwLjRjODUuOC0xMS43IDE1Mi04NS4zIDE1Mi0xNzQuNFYyMTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2MjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvcGhvbmVTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDQ3Mi4xIDM0NC43YzE1LjItMjYgMjMuOS01Ni4zIDIzLjktODguN1YyMTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NDBjMCAyMS4yLTUuMSA0MS4xLTE0LjIgNTguN0w0MTYgMzAwLjhWOTZjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZ2NTQuM0wzOC44IDUuMXptMzYyLjUgNDA3bC00My4xLTMzLjlDMzQ2LjEgMzgyIDMzMy4zIDM4NCAzMjAgMzg0Yy03MC43IDAtMTI4LTU3LjMtMTI4LTEyOHYtOC43TDE0NC43IDIxMGMtLjUgMS45LS43IDMuOS0uNyA2djQwYzAgODkuMSA2Ni4yIDE2Mi43IDE1MiAxNzQuNFY0NjRIMjQ4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDcyIDcyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDM0NFY0MzAuNGMyMC40LTIuOCAzOS43LTkuMSA1Ny4zLTE4LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvcGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBDMTM5IDAgOTYgNDMgOTYgOTZWMjU2YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZWOTZjMC01My00My05Ni05Ni05NnpNNjQgMjE2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djQwYzAgODkuMSA2Ni4yIDE2Mi43IDE1MiAxNzQuNFY0NjRIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDcyIDcyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDIxNlY0MzAuNGM4NS44LTExLjcgMTUyLTg1LjMgMTUyLTE3NC40VjIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY0MGMwIDcwLjctNTcuMyAxMjgtMTI4IDEyOHMtMTI4LTU3LjMtMTI4LTEyOFYyMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3Jvc2NvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjI4OGMwIDE3LjctMTQuMyAzMi0zMiAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMzIgNDQ4SDMyMGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOHMtNTcuMy0xMjgtMTI4LTEyOFYxMjhjMTA2IDAgMTkyIDg2IDE5MiAxOTJjMCA0OS4yLTE4LjUgOTQtNDguOSAxMjhINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMCAzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptODAtNjRIMzA0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWlsbFNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAyLjEgNDIuOGM1LjktMTYuNi0yLjctMzUtMTkuNC00MC45cy0zNSAyLjctNDAuOSAxOS40TDIwOCAxMTYuMWMtNS43IDQtMTEuMSA4LjUtMTYgMTMuNUMxNzEuNyAxMDguOSAxNDMuMyA5NiAxMTIgOTZjLTE5LjUgMC0zNy44IDUtNTMuNyAxMy43QzUyLjUgMTAxLjQgNDIuOSA5NiAzMiA5NkMxNC4zIDk2IDAgMTEwLjMgMCAxMjh2ODBWNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjA4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2NDIuNUw4MS45IDQ2OS4yYy01LjkgMTYuNiAyLjcgMzUgMTkuNCA0MC45czM1LTIuNyA0MC45LTE5LjRsMjEuNC02MEMxNjguOSA0NDEgMTc5LjYgNDQ4IDE5MiA0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjYxLjVsMzUuNy0xMDBjMy45LTEgOC4xLTEuNiAxMi4zLTEuNmMyNi41IDAgNDggMjEuNSA0OCA0OFY0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMDhjMC01OC4yLTQ0LjMtMTA2LTEwMS4xLTExMS41bDE5LjItNTMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWluaW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU2IDIyNEgzMTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjU2YzAtOS43IDUuOC0xOC41IDE0LjgtMjIuMnMxOS4zLTEuNyAyNi4yIDUuMmw0MCA0MEw0NDIuMyA1LjdDNDQ2IDIgNDUwLjkgMCA0NTYgMHMxMCAyIDEzLjcgNS43bDM2LjcgMzYuN0M1MTAgNDYgNTEyIDUwLjkgNTEyIDU2cy0yIDEwLTUuNyAxMy43TDQzMyAxNDNsNDAgNDBjNi45IDYuOSA4LjkgMTcuMiA1LjIgMjYuMnMtMTIuNSAxNC44LTIyLjIgMTQuOHptMCA2NGM5LjcgMCAxOC41IDUuOCAyMi4yIDE0LjhzMS43IDE5LjMtNS4yIDI2LjJsLTQwIDQwIDczLjQgNzMuNGMzLjYgMy42IDUuNyA4LjUgNS43IDEzLjdzLTIgMTAtNS43IDEzLjdsLTM2LjcgMzYuN0M0NjYgNTEwIDQ2MS4xIDUxMiA0NTYgNTEycy0xMC0yLTEzLjctNS43TDM2OSA0MzNsLTQwIDQwYy02LjkgNi45LTE3LjIgOC45LTI2LjIgNS4ycy0xNC44LTEyLjUtMTQuOC0yMi4yVjMxMmMwLTEzLjMgMTAuNy0yNCAyNC0yNEg0NTZ6bS0yNTYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNFY0NTZjMCA5LjctNS44IDE4LjUtMTQuOCAyMi4ycy0xOS4zIDEuNy0yNi4yLTUuMmwtNDAtNDBMNjkuNyA1MDYuM0M2NiA1MTAgNjEuMSA1MTIgNTYgNTEycy0xMC0yLTEzLjctNS43TDUuNyA0NjkuN0MyIDQ2NiAwIDQ2MS4xIDAgNDU2czItMTAgNS43LTEzLjdMNzkgMzY5IDM5IDMyOWMtNi45LTYuOS04LjktMTcuMi01LjItMjYuMnMxMi41LTE0LjggMjIuMi0xNC44SDIwMHpNNTYgMjI0Yy05LjcgMC0xOC41LTUuOC0yMi4yLTE0LjhzLTEuNy0xOS4zIDUuMi0yNi4ybDQwLTQwTDUuNyA2OS43QzIgNjYgMCA2MS4xIDAgNTZzMi0xMCA1LjctMTMuN0w0Mi4zIDUuN0M0NiAyIDUwLjkgMCA1NiAwczEwIDIgMTMuNyA1LjdMMTQzIDc5bDQwLTQwYzYuOS02LjkgMTcuMi04LjkgMjYuMi01LjJzMTQuOCAxMi41IDE0LjggMjIuMlYyMDBjMCAxMy4zLTEwLjcgMjQtMjQgMjRINTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMiAyNTZjMCAxNy43LTE0LjMgMzItMzIgMzJMNDggMjg4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDM1MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaXR0ZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDM4NEg2NEw1LjQgMTc4LjlDMS44IDE2Ni40IDAgMTUzLjQgMCAxNDAuM0MwIDYyLjggNjIuOCAwIDE0MC4zIDBoMy40YzY2IDAgMTIzLjUgNDQuOSAxMzkuNSAxMDguOWwzMS40IDEyNS44IDE3LjYtMjAuMUMzNDQuOCAyMDAuMiAzNjIuOSAxOTIgMzgyIDE5MmgyLjhjMzQuOSAwIDYzLjMgMjguMyA2My4zIDYzLjNjMCAxNS45LTYgMzEuMi0xNi44IDQyLjlMMzUyIDM4NHpNMzIgNDQ4YzAtMTcuNyAxNC4zLTMyIDMyLTMySDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb2JpbGVCdXR0b24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgMEM0NC43IDAgMTYgMjguNyAxNiA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzA0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDgwek0xOTIgNDAwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9iaWxlUmV0cm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjU2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTY0IDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek04MCAzNTJhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0yNCA1NmEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwem01Ni01NmEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTI0IDU2YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6bTU2LTU2YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMjQgNTZhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpNMTI4IDQ4Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9iaWxlU2NyZWVuQnV0dG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDY0QzE2IDI4LjcgNDQuNyAwIDgwIDBIMzA0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6TTIyNCA0NDhhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMzA0IDY0SDgwVjM4NEgzMDRWNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vYmlsZVNjcmVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA2NEMxNiAyOC43IDQ0LjcgMCA4MCAwSDMwNGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIODBjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0ek0xNDQgNDQ4YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxNjBjLTguOCAwLTE2IDcuMi0xNiAxNnpNMzA0IDY0SDgwVjM4NEgzMDRWNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vYmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCAwQzQ0LjcgMCAxNiAyOC43IDE2IDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMDRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRIODB6bTgwIDQzMmg2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxNjBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5QmlsbDFXYXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTEyLjVWNDIyLjNjMCAxOCAxMC4xIDM1IDI3IDQxLjNjODcgMzIuNSAxNzQgMTAuMyAyNjEtMTEuOWM3OS44LTIwLjMgMTU5LjYtNDAuNyAyMzkuMy0xOC45YzIzIDYuMyA0OC43LTkuNSA0OC43LTMzLjRWODkuN2MwLTE4LTEwLjEtMzUtMjctNDEuM0M0NjIgMTUuOSAzNzUgMzguMSAyODggNjAuM0MyMDguMiA4MC42IDEyOC40IDEwMC45IDQ4LjcgNzkuMUMyNS42IDcyLjggMCA4OC42IDAgMTEyLjV6TTEyOCA0MTZINjRWMzUyYzM1LjMgMCA2NCAyOC43IDY0IDY0ek02NCAyMjRWMTYwaDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0ek00NDggMzUyYzAtMzUuMyAyOC43LTY0IDY0LTY0djY0SDQ0OHptNjQtMTkyYy0zNS4zIDAtNjQtMjguNy02NC02NGg2NHY2NHpNMzg0IDI1NmMwIDYxLjktNDMgMTEyLTk2IDExMnMtOTYtNTAuMS05Ni0xMTJzNDMtMTEyIDk2LTExMnM5NiA1MC4xIDk2IDExMnpNMjUyIDIwOGMwIDkuNyA2LjkgMTcuNyAxNiAxOS42VjI3NmgtNGMtMTEgMC0yMCA5LTIwIDIwczkgMjAgMjAgMjBoMjQgMjRjMTEgMCAyMC05IDIwLTIwcy05LTIwLTIwLTIwaC00VjIwOGMwLTExLTktMjAtMjAtMjBIMjcyYy0xMSAwLTIwIDktMjAgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5QmlsbDEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTY0IDMyMEg2NFYzMjBjMzUuMyAwIDY0IDI4LjcgNjQgNjR6TTY0IDE5MlYxMjhoNjRjMCAzNS4zLTI4LjcgNjQtNjQgNjR6TTQ0OCAzODRjMC0zNS4zIDI4LjctNjQgNjQtNjR2NjRINDQ4em02NC0xOTJjLTM1LjMgMC02NC0yOC43LTY0LTY0aDY0djY0ek0xNzYgMjU2YTExMiAxMTIgMCAxIDEgMjI0IDAgMTEyIDExMiAwIDEgMSAtMjI0IDB6bTc2LTQ4YzAgOS43IDYuOSAxNy43IDE2IDE5LjZWMjc2aC00Yy0xMSAwLTIwIDktMjAgMjBzOSAyMCAyMCAyMGgyNCAyNGMxMSAwIDIwLTkgMjAtMjBzLTktMjAtMjAtMjBoLTRWMjA4YzAtMTEtOS0yMC0yMC0yMEgyNzJjLTExIDAtMjAgOS0yMCAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsVHJhbnNmZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTM1IDQxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsNjQgNjRjNC41IDQuNSA3IDEwLjYgNyAxN3MtMi41IDEyLjUtNyAxN2wtNjQgNjRjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMjMtMjNMMzg0IDExMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGwxNzQuMSAwTDUzNSA0MXpNMTA1IDM3N2wtMjMgMjNMMjU2IDQwMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEw4MS45IDQ0OGwyMyAyM2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDcgNDQxYy00LjUtNC41LTctMTAuNi03LTE3czIuNS0xMi41IDctMTdsNjQtNjRjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45ek05NiA2NEgzMzcuOWMtMy43IDcuMi01LjkgMTUuMy01LjkgMjRjMCAyOC43IDIzLjMgNTIgNTIgNTJsMTE3LjQgMGMtNCAxNyAuNiAzNS41IDEzLjggNDguOGMyMC4zIDIwLjMgNTMuMiAyMC4zIDczLjUgMEw2MDggMTY5LjVWMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDMwMi4xYzMuNy03LjIgNS45LTE1LjMgNS45LTI0YzAtMjguNy0yMy4zLTUyLTUyLTUybC0xMTcuNCAwYzQtMTctLjYtMzUuNS0xMy44LTQ4LjhjLTIwLjMtMjAuMy01My4yLTIwLjMtNzMuNSAwTDMyIDM0Mi41VjEyOGMwLTM1LjMgMjguNy02NCA2NC02NHptNjQgNjRIOTZ2NjRjMzUuMyAwIDY0LTI4LjcgNjQtNjR6TTU0NCAzMjBjLTM1LjMgMC02NCAyOC43LTY0IDY0aDY0VjMyMHpNMzIwIDM1MmE5NiA5NiAwIDEgMCAwLTE5MiA5NiA5NiAwIDEgMCAwIDE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsVHJlbmRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzAuNyA5LjRjMyAzLjEgNS4zIDYuNiA2LjkgMTAuM3MyLjQgNy44IDIuNCAxMi4ybDAgLjF2MCA5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxMDkuM0wzMTAuNiAyMTQuNmMtMTEuOCAxMS44LTMwLjggMTIuNi00My41IDEuN0wxNzYgMTM4LjEgODQuOCAyMTYuM2MtMTMuNCAxMS41LTMzLjYgOS45LTQ1LjEtMy41cy05LjktMzMuNiAzLjUtNDUuMWwxMTItOTZjMTItMTAuMyAyOS43LTEwLjMgNDEuNyAwbDg5LjUgNzYuN0wzNzAuNyA2NEgzNTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoOTYgMGM4LjggMCAxNi44IDMuNiAyMi42IDkuM2wuMSAuMXpNMCAzMDRjMC0yNi41IDIxLjUtNDggNDgtNDhINDY0YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzA0ek00OCA0MTZ2NDhIOTZjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTk2IDMwNEg0OHY0OGMyNi41IDAgNDgtMjEuNSA0OC00OHpNNDY0IDQxNmMtMjYuNSAwLTQ4IDIxLjUtNDggNDhoNDhWNDE2ek00MTYgMzA0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4VjMwNEg0MTZ6bS05NiA4MGE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5QmlsbFdhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxMTIuNVY0MjIuM2MwIDE4IDEwLjEgMzUgMjcgNDEuM2M4NyAzMi41IDE3NCAxMC4zIDI2MS0xMS45Yzc5LjgtMjAuMyAxNTkuNi00MC43IDIzOS4zLTE4LjljMjMgNi4zIDQ4LjctOS41IDQ4LjctMzMuNFY4OS43YzAtMTgtMTAuMS0zNS0yNy00MS4zQzQ2MiAxNS45IDM3NSAzOC4xIDI4OCA2MC4zQzIwOC4yIDgwLjYgMTI4LjQgMTAwLjkgNDguNyA3OS4xQzI1LjYgNzIuOCAwIDg4LjYgMCAxMTIuNXpNMjg4IDM1MmMtNDQuMiAwLTgwLTQzLTgwLTk2czM1LjgtOTYgODAtOTZzODAgNDMgODAgOTZzLTM1LjggOTYtODAgOTZ6TTY0IDM1MmMzNS4zIDAgNjQgMjguNyA2NCA2NEg2NFYzNTJ6bTY0LTIwOGMwIDM1LjMtMjguNyA2NC02NCA2NFYxNDRoNjR6TTUxMiAzMDR2NjRINDQ4YzAtMzUuMyAyOC43LTY0IDY0LTY0ek00NDggOTZoNjR2NjRjLTM1LjMgMC02NC0yOC43LTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb25leUJpbGxXaGVhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgMGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDguOC03LjIgMTYtMTYgMTZjLTQ0LjIgMC04MC0zNS44LTgwLTgwYzAtOC44IDcuMi0xNiAxNi0xNnpNNTYgMTZoNDhjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINTZDNDIuNyA2NCAzMiA1My4zIDMyIDQwczEwLjctMjQgMjQtMjR6TTI0IDg4SDEzNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRTMTAuNyA4OCAyNCA4OHptOCA5NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGg0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1NmMtMTMuMyAwLTI0LTEwLjctMjQtMjR6TTI3MiAxNmMwLTguOCA3LjItMTYgMTYtMTZjNDQuMiAwIDgwIDM1LjggODAgODBjMCA4LjgtNy4yIDE2LTE2IDE2Yy00NC4yIDAtODAtMzUuOC04MC04MHpNNDAwIDBjNDQuMiAwIDgwIDM1LjggODAgODBjMCA4LjgtNy4yIDE2LTE2IDE2Yy00NC4yIDAtODAtMzUuOC04MC04MGMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE0NGMwIDQ0LjItMzUuOCA4MC04MCA4MGMtOC44IDAtMTYtNy4yLTE2LTE2YzAtNDQuMiAzNS44LTgwIDgwLTgwYzguOCAwIDE2IDcuMiAxNiAxNnpNMzUyIDEyOGM4LjggMCAxNiA3LjIgMTYgMTZjMCA0NC4yLTM1LjggODAtODAgODBjLTguOCAwLTE2LTcuMi0xNi0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MHptLTk2IDE2YzAgNDQuMi0zNS44IDgwLTgwIDgwYy04LjggMC0xNi03LjItMTYtMTZjMC00NC4yIDM1LjgtODAgODAtODBjOC44IDAgMTYgNy4yIDE2IDE2ek0wIDMwNGMwLTI2LjUgMjEuNS00OCA0OC00OEg0NjRjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzMDR6TTQ4IDQxNnY0OEg5NmMwLTI2LjUtMjEuNS00OC00OC00OHpNOTYgMzA0SDQ4djQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4ek00NjQgNDE2Yy0yNi41IDAtNDggMjEuNS00OCA0OGg0OFY0MTZ6TTQxNiAzMDRjMCAyNi41IDIxLjUgNDggNDggNDhWMzA0SDQxNnptLTk2IDgwYTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em02NCAzMjBINjRWMzIwYzM1LjMgMCA2NCAyOC43IDY0IDY0ek02NCAxOTJWMTI4aDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0ek00NDggMzg0YzAtMzUuMyAyOC43LTY0IDY0LTY0djY0SDQ0OHptNjQtMTkyYy0zNS4zIDAtNjQtMjguNy02NC02NGg2NHY2NHpNMjg4IDE2MGE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA5NlYzMjBjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTc2YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDE2MGMtMzUuMyAwLTY0IDI4LjctNjQgNjR6bTY0IDE2MGMzNS4zIDAgNjQgMjguNyA2NCA2NEgxNjBWMjU2ek0yMjQgOTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRWOTZoNjR6TTU3NiAyNTZ2NjRINTEyYzAtMzUuMyAyOC43LTY0IDY0LTY0ek01MTIgOTZoNjR2NjRjLTM1LjMgMC02NC0yOC43LTY0LTY0ek0yODggMjA4YTgwIDgwIDAgMSAxIDE2MCAwIDgwIDgwIDAgMSAxIC0xNjAgMHpNNDggMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0UzAgMTA2LjcgMCAxMjBWMzYwYzAgNjYuMyA1My43IDEyMCAxMjAgMTIwSDUyMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxMjBjLTM5LjggMC03Mi0zMi4yLTcyLTcyVjEyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlDaGVja0RvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjcyIDE5Mkg0OTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2ek0yNTYgMzA0YzAtOC44IDcuMi0xNiAxNi0xNkg0OTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZ6TTE2NCAxNTJ2MTMuOWM3LjUgMS4yIDE0LjYgMi45IDIxLjEgNC43YzEwLjcgMi44IDE3IDEzLjggMTQuMiAyNC41cy0xMy44IDE3LTI0LjUgMTQuMmMtMTEtMi45LTIxLjYtNS0zMS4yLTUuMmMtNy45LS4xLTE2IDEuOC0yMS41IDVjLTQuOCAyLjgtNi4yIDUuNi02LjIgOS4zYzAgMS44IC4xIDMuNSA1LjMgNi43YzYuMyAzLjggMTUuNSA2LjcgMjguMyAxMC41bC43IC4yYzExLjIgMy40IDI1LjYgNy43IDM3LjEgMTVjMTIuOSA4LjEgMjQuMyAyMS4zIDI0LjYgNDEuNmMuMyAyMC45LTEwLjUgMzYuMS0yNC44IDQ1Yy03LjIgNC41LTE1LjIgNy4zLTIzLjIgOVYzNjBjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwVjM0NS40Yy0xMC4zLTIuMi0yMC01LjUtMjguMi04LjRsMCAwIDAgMGMtMi4xLS43LTQuMS0xLjQtNi4xLTIuMWMtMTAuNS0zLjUtMTYuMS0xNC44LTEyLjYtMjUuM3MxNC44LTE2LjEgMjUuMy0xMi42YzIuNSAuOCA0LjkgMS43IDcuMiAyLjRjMTMuNiA0LjYgMjQgOC4xIDM1LjEgOC41YzguNiAuMyAxNi41LTEuNiAyMS40LTQuN2M0LjEtMi41IDYtNS41IDUuOS0xMC41YzAtMi45LS44LTUtNS45LTguMmMtNi4zLTQtMTUuNC02LjktMjgtMTAuN2wtMS43LS41Yy0xMC45LTMuMy0yNC42LTcuNC0zNS42LTE0Yy0xMi43LTcuNy0yNC42LTIwLjUtMjQuNy00MC43Yy0uMS0yMS4xIDExLjgtMzUuNyAyNS44LTQzLjljNi45LTQuMSAxNC41LTYuOCAyMi4yLTguNVYxNTJjMC0xMSA5LTIwIDIwLTIwczIwIDkgMjAgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5Q2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTQ4IDE2MEgyNzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2ek05NiAzMzZjMC04LjggNy4yLTE2IDE2LTE2SDQ2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnpNMzc2IDE2MGg4MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHY0OGMwIDEzLjMtMTAuNyAyNC0yNCAyNEgzNzZjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE4NGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9udW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgwLjcgNC43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwbDgwIDgwYzIuNSAyLjUgNC4xIDUuOCA0LjYgOS4zbDQwLjIgMzIySDU1LjlMOTYuMSA5NGMuNC0zLjUgMi02LjggNC42LTkuM2w4MC04MHpNMTUyIDI3MmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxNTJ6TTMyIDQ0OEgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIzLjUgMzJDMTAwIDMyIDAgMTMyLjMgMCAyNTZTMTAwIDQ4MCAyMjMuNSA0ODBjNjAuNiAwIDExNS41LTI0LjIgMTU1LjgtNjMuNGM1LTQuOSA2LjMtMTIuNSAzLjEtMTguN3MtMTAuMS05LjctMTctOC41Yy05LjggMS43LTE5LjggMi42LTMwLjEgMi42Yy05Ni45IDAtMTc1LjUtNzguOC0xNzUuNS0xNzZjMC02NS44IDM2LTEyMy4xIDg5LjMtMTUzLjNjNi4xLTMuNSA5LjItMTAuNSA3LjctMTcuM3MtNy4zLTExLjktMTQuMy0xMi41Yy02LjMtLjUtMTIuNi0uOC0xOS0uOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9ydGFyUGVzdGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNC4zIDExLjFDNDkzLjMtMS42IDQ3NC41LTMuNyA0NjEgNi4yTDI1Mi4zIDE2MEgzOTcuM0w1MDIuNiA1NC42YzExLjgtMTEuOCAxMi42LTMwLjggMS42LTQzLjV6TTMyIDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmMwIDgyLjUgNDMuNCAxNDcuNyAxMjMuOSAxNzYuMmMtMTEuMSAxMy45LTE5LjQgMzAuMy0yMy45IDQ4LjFDMTI3LjYgNDk3LjQgMTQyLjMgNTEyIDE2MCA1MTJIMzUyYzE3LjcgMCAzMi40LTE0LjYgMjguMS0zMS43Yy00LjUtMTcuOC0xMi44LTM0LjEtMjMuOS00OC4xQzQzNi42IDQwMy43IDQ4MCAzMzguNSA0ODAgMjU2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3NxdWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDBjNSAwIDkuOCAyLjQgMTIuOCA2LjRjMzQuNyA0Ni4zIDc4LjEgNzQuOSAxMzMuNSAxMTEuNWwwIDAgMCAwYzUuMiAzLjQgMTAuNSA3IDE2IDEwLjZjMjguOSAxOS4yIDQ1LjcgNTEuNyA0NS43IDg2LjFjMCAyOC42LTExLjMgNTQuNS0yOS44IDczLjRIMjIxLjhjLTE4LjQtMTktMjkuOC00NC45LTI5LjgtNzMuNGMwLTM0LjQgMTYuNy02Ni45IDQ1LjctODYuMWM1LjQtMy42IDEwLjgtNy4xIDE2LTEwLjZsMCAwIDAgMEMzMDkuMSA4MS4zIDM1Mi41IDUyLjcgMzg3LjIgNi40YzMtNCA3LjgtNi40IDEyLjgtNi40ek0yODggNTEyVjQ0MGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY3MkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM1MmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg2MDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDU2MFY0NDBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NzJINDQ4VjQ1NGMwLTE5LTguNC0zNy0yMy00OS4yTDQwMCAzODRsLTI1IDIwLjhDMzYwLjQgNDE3IDM1MiA0MzUgMzUyIDQ1NHY1OEgyODh6TTcwLjQgNS4yYzUuNy00LjMgMTMuNS00LjMgMTkuMiAwbDE2IDEyQzEzOS44IDQyLjkgMTYwIDgzLjIgMTYwIDEyNnYySDB2LTJDMCA4My4yIDIwLjIgNDIuOSA1NC40IDE3LjJsMTYtMTJ6TTAgMTYwSDE2MFYyOTYuNmMtMTkuMSAxMS4xLTMyIDMxLjctMzIgNTUuNFY0ODBjMCA5LjYgMi4xIDE4LjYgNS44IDI2LjhjLTYuNiAzLjQtMTQgNS4yLTIxLjggNS4ySDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxNzYgMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3NxdWl0b05ldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjguOCA0NjIuM2MtNy45LTQtMTEuMS0xMy42LTcuMi0yMS41TDE5MiAzODAuMmwwLTQ0LjJjMC00LjIgMS43LTguMyA0LjctMTEuM0wyNTYgMjY1LjRWMjQyLjJMMTM5LjIgMzQ0Qzg3LjggMzk1LjMgMCAzNTguOSAwIDI4Ni4zYzAtNDEuMSAzMC42LTc1LjggNzEuNC04MC45bDE1OS45LTIzLjktNDkuNi00MS4zYy01LjEtNC4yLTctMTEuMS00LjktMTcuNGwxMy45LTQxLjctMjktNTguMWMtNC03LjktLjctMTcuNSA3LjItMjEuNXMxNy41LS43IDIxLjUgNy4ybDMyIDY0YzEuOSAzLjggMi4yIDguMiAuOSAxMi4ybC0xMi41IDM3LjZMMjU2IDE2MC41VjEzNy45YzAtMTQuOSAxMC4xLTI3LjMgMjMuOC0zMVY2My43YzAtNC41IDMuNy04LjIgOC4yLTguMnM4LjIgMy43IDguMiA4LjJWMTA3YzEzLjcgMy42IDIzLjggMTYuMSAyMy44IDMxdjIyLjZsNDUuNC0zNy44TDM1Mi44IDg1LjFjLTEuMy00LTEtOC40IC45LTEyLjJsMzItNjRjNC03LjkgMTMuNi0xMS4xIDIxLjUtNy4yczExLjEgMTMuNiA3LjIgMjEuNWwtMjkgNTguMSAxMy45IDQxLjdjMi4xIDYuMiAuMSAxMy4xLTQuOSAxNy40bC00OS42IDQxLjMgMTU5LjkgMjMuOWMyMi41IDIuOCA0MS44IDE0LjYgNTQuNyAzMS40Yy0yLjcgMi42LTUuMiA1LjQtNy4zIDguNmMtOC42LTEyLjktMjMuMy0yMS41LTQwLTIxLjVzLTMxLjQgOC41LTQwIDIxLjVjLTguNi0xMi45LTIzLjMtMjEuNS00MC0yMS41Yy0yMS43IDAtNDAgMTQuMy00NS45IDM0LjFjLTEwLjcgMy4yLTE5LjggMTAuMS0yNS45IDE5LjJsLTQwLjItMzV2MjMuMWwzMi40IDMyLjRjLS4zIDItLjQgNC4xLS40IDYuMmMwIDE2LjcgOC41IDMxLjQgMjEuNSA0MGMtNCAyLjYtNy41IDUuOS0xMC42IDkuNUwzMjAgMzEwLjZ2NTBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJ2LTUwbC0zMiAzMiAwIDQxLjRjMCAyLjUtLjYgNC45LTEuNyA3LjJsLTMyIDY0Yy00IDcuOS0xMy42IDExLjEtMjEuNSA3LjJ6TTUxMiAyNTZjOC44IDAgMTYgNy4yIDE2IDE2djE2aDQ4VjI3MmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDYwOHY0OGgxNmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg2MDh2NDhoMTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZINjA4djE2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjQ4MEg1Mjh2MTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWNDgwSDQ0OHYxNmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlY0ODBINDAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDE2VjQwMEg0MDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoMTZWMzIwSDQwMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmgxNlYyNzJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYxNmg0OFYyNzJjMC04LjggNy4yLTE2IDE2LTE2em0xNiAxMTJoNDhWMzIwSDUyOHY0OHptMCA4MGg0OFY0MDBINTI4djQ4ek00NDggMzIwdjQ4aDQ4VjMyMEg0NDh6bTAgODB2NDhoNDhWNDAwSDQ0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9zcXVpdG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDYzLjcgNTA1LjljOS44LTguOSAxMC43LTI0LjMgMi4xLTM0LjNsLTQyLjEtNDkgMC01NC43YzAtNS41LTEuOC0xMC44LTUuMS0xNS4xTDM1MiAyNjYuM2wwLS4zTDQ4NS40IDM4Ny44QzU0Mi40IDQ0Ny42IDY0MCA0MDUuMiA2NDAgMzIwLjZjMC00Ny45LTM0LTg4LjMtNzkuNC05NC4ybC0xNTMtMjMuOSA0MC44LTQwLjljNy44LTcuOCA5LjQtMjAuMSAzLjktMjkuOEw0MjguNSA5MC4xbDM4LjItNTAuOWM4LTEwLjYgNi4xLTI1LjktNC4zLTM0LjFzLTI1LjItNi4zLTMzLjIgNC40bC00OCA2My45Yy01LjkgNy45LTYuNiAxOC42LTEuNyAyNy4yTDQwMi4yIDE0MCAzNTIgMTkwLjNsMC0zOC4yYzAtMTQuOS0xMC4yLTI3LjQtMjQtMzFsMC01Ny4yYzAtNC40LTMuNi04LTgtOHMtOCAzLjYtOCA4bDAgNTcuMmMtMTMuOCAzLjYtMjQgMTYuMS0yNCAzMWwwIDM4LjFMMjM3LjggMTQwbDIyLjYtMzkuNWM0LjktOC42IDQuMi0xOS4zLTEuNy0yNy4ybC00OC02My45Yy04LTEwLjYtMjIuOC0xMi42LTMzLjItNC40cy0xMi4yIDIzLjUtNC4zIDM0LjFsMzguMiA1MC45LTIzLjkgNDEuN2MtNS41IDkuNy0zLjkgMjIgMy45IDI5LjhsNDAuOCA0MC45LTE1MyAyMy45QzM0IDIzMi4zIDAgMjcyLjcgMCAzMjAuNmMwIDg0LjYgOTcuNiAxMjcgMTU0LjYgNjcuMUwyODggMjY2bDAgLjMtNjYuNSA4Ni40Yy0zLjMgNC4zLTUuMSA5LjYtNS4xIDE1LjFsMCA1NC43LTQyLjEgNDljLTguNiAxMC4xLTcuNyAyNS41IDIuMSAzNC4zczI0LjcgNy45IDMzLjQtMi4xbDQ4LTU1LjljMy44LTQuNCA1LjktMTAuMiA1LjktMTYuMWwwLTU1LjRMMjg4IDM0NC43bDAgNjMuMWMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtNjMuMSAyNC4zIDMxLjYgMCA1NS40YzAgNS45IDIuMSAxMS43IDUuOSAxNi4xbDQ4IDU1LjljOC42IDEwLjEgMjMuNiAxMSAzMy40IDIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW90b3JjeWNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODAgMzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNTcuN2wxNi40IDMwLjNMMjU2IDE5MmwtNDUuMy00NS4zYy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43SDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMmg5NmM4OC40IDAgMTYwIDcxLjYgMTYwIDE2MGMwIDExLTEuMSAyMS43LTMuMiAzMmg3MC40Yy0yLjEtMTAuMy0zLjItMjEtMy4yLTMyYzAtNTIuMiAyNS05OC42IDYzLjctMTI3LjhsMTUuNCAyOC42QzQwMi40IDI3Ni4zIDM4NCAzMTIgMzg0IDM1MmMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOHMxMjgtNTcuMyAxMjgtMTI4cy01Ny4zLTEyOC0xMjgtMTI4Yy0xMy41IDAtMjYuNSAyLjEtMzguNyA2TDQxOC4yIDEyOEg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJINDU5LjZjLTcuNSAwLTE0LjcgMi42LTIwLjUgNy40TDM5MS43IDc4LjlsLTE0LTI2Yy03LTEyLjktMjAuNS0yMS0zNS4yLTIxSDI4MHpNNDYyLjcgMzExLjJsMjguMiA1Mi4yYzYuMyAxMS43IDIwLjkgMTYgMzIuNSA5LjdzMTYtMjAuOSA5LjctMzIuNWwtMjguMi01Mi4yYzIuMy0uMyA0LjctLjQgNy4xLS40YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0cy02NC0yOC43LTY0LTY0YzAtMTUuNSA1LjUtMjkuNyAxNC43LTQwLjh6TTE4Ny4zIDM3NmMtOS41IDIzLjUtMzIuNSA0MC01OS4zIDQwYy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0YzI2LjkgMCA0OS45IDE2LjUgNTkuMyA0MGg2Ni40QzI0Mi41IDI2OC44IDE5MC41IDIyNCAxMjggMjI0QzU3LjMgMjI0IDAgMjgxLjMgMCAzNTJzNTcuMyAxMjggMTI4IDEyOGM2Mi41IDAgMTE0LjUtNDQuOCAxMjUuOC0xMDRIMTg3LjN6TTEyOCAzODRhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQuMSAxNzkuMkMxNzMuOCAxMjcuNyAyMjguNiA5NiAyODggOTZzMTE0LjIgMzEuNyAxNDMuOSA4My4yTDU0MC40IDM2OGMxMi4zIDIxLjMtMy4xIDQ4LTI3LjcgNDhINjMuM2MtMjQuNiAwLTQwLTI2LjYtMjcuNy00OEwxNDQuMSAxNzkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW91bnRhaW5DaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAwYy0yNi41IDAtNDggMjEuNS00OCA0OHY5Mi4xbDcxLjQgMTE4LjRjMi41LTEuNiA1LjQtMi41IDguNi0yLjVoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNmgtMy41bDczLjggMTIyLjRjMTIuNCAyMC42IDEyLjkgNDYuMyAxLjIgNjcuM2MtLjQgLjgtLjkgMS42LTEuNCAyLjNINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI0MGMwLTI2LjUtMjEuNS00OC00OC00OEg1NjhWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djcySDQ4MFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEgzMzZ6bTMyIDY0aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZWODBjMC04LjggNy4yLTE2IDE2LTE2ek0zNTIgMTc2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NnptMTYwIDk2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDUyOGMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MnptMTYgODBoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg1MjhjLTguOCAwLTE2LTcuMi0xNi0xNlYzNjhjMC04LjggNy4yLTE2IDE2LTE2ek0yMjQgMTg4LjlMMjgzLjggMjg4SDIyM2wtNDggNjQtMjQuNi00MS4yTDIyNCAxODguOXptMjkuNC00NC4yQzI0Ny4xIDEzNC4zIDIzNiAxMjggMjI0IDEyOHMtMjMuMSA2LjMtMjkuNCAxNi43TDUuMSA0NTguOWMtNi41IDEwLjgtNi43IDI0LjMtLjcgMzUuM1MyMiA1MTIgMzQuNSA1MTJINDEzLjVjMTIuNSAwIDI0LTYuOCAzMC4xLTE3LjhzNS44LTI0LjUtLjctMzUuM0wyNTMuNCAxNDQuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW91bnRhaW5TdW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTYwIDE2MEE4MCA4MCAwIDEgMCA1NjAgMGE4MCA4MCAwIDEgMCAwIDE2MHpNNTUuOSA1MTJIMzgxLjFoNzVINTc4LjljMzMuOCAwIDYxLjEtMjcuNCA2MS4xLTYxLjFjMC0xMS4yLTMuMS0yMi4yLTguOS0zMS44bC0xMzItMjE2LjNDNDk1IDE5Ni4xIDQ4Ny44IDE5MiA0ODAgMTkycy0xNSA0LjEtMTkuMSAxMC43bC00OC4yIDc5TDI4Ni44IDgxYy02LjYtMTAuNi0xOC4zLTE3LTMwLjgtMTdzLTI0LjEgNi40LTMwLjggMTdMOC42IDQyNi40QzMgNDM1LjMgMCA0NDUuNiAwIDQ1Ni4xQzAgNDg3IDI1IDUxMiA1NS45IDUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW91bnRhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyYzEyLjUgMCAyNC4xIDYuNCAzMC44IDE3TDUwMy40IDM5NC40YzUuNiA4LjkgOC42IDE5LjIgOC42IDI5LjdjMCAzMC45LTI1IDU1LjktNTUuOSA1NS45SDU1LjlDMjUgNDgwIDAgNDU1IDAgNDI0LjFjMC0xMC41IDMtMjAuOCA4LjYtMjkuN0wyMjUuMiA0OWM2LjYtMTAuNiAxOC4zLTE3IDMwLjgtMTd6bTY1IDE5MkwyNTYgMTIwLjQgMTc2LjkgMjQ2LjVsMTguMyAyNC40YzYuNCA4LjUgMTkuMiA4LjUgMjUuNiAwbDI1LjYtMzQuMWM2LTguMSAxNS41LTEyLjggMjUuNi0xMi44aDQ5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNdWdIb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODggMEM3NC43IDAgNjQgMTAuNyA2NCAyNGMwIDM4LjkgMjMuNCA1OS40IDM5LjEgNzMuMWwxLjEgMUMxMjAuNSAxMTIuMyAxMjggMTE5LjkgMTI4IDEzNmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMzguOS0yMy40LTU5LjQtMzkuMS03My4xbC0xLjEtMUMxMTkuNSA0Ny43IDExMiA0MC4xIDExMiAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHpNMzIgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0MTZjMCA1MyA0MyA5NiA5NiA5NkgyODhjNTMgMCA5Ni00MyA5Ni05NmgxNmM2MS45IDAgMTEyLTUwLjEgMTEyLTExMnMtNTAuMS0xMTItMTEyLTExMkgzNTIgMzJ6bTM1MiA2NGgxNmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OEgzODRWMjU2ek0yMjQgMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRjMCAzOC45IDIzLjQgNTkuNCAzOS4xIDczLjFsMS4xIDFDMjMyLjUgMTEyLjMgMjQwIDExOS45IDI0MCAxMzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTM4LjktMjMuNC01OS40LTM5LjEtNzMuMWwtMS4xLTFDMjMxLjUgNDcuNyAyMjQgNDAuMSAyMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU11Z1NhdWNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0NDhoNjRjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhzLTU3LjMgMTI4LTEyOCAxMjhINDgwYzAgNTMtNDMgOTYtOTYgOTZIMTkyYy01MyAwLTk2LTQzLTk2LTk2VjY0ek00ODAgMjI0aDMyYzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0SDQ4MFYyMjR6TTMyIDQxNkg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU11c2ljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5OS4xIDYuM2M4LjEgNiAxMi45IDE1LjYgMTIuOSAyNS43djcyVjM2OGMwIDQ0LjItNDMgODAtOTYgODBzLTk2LTM1LjgtOTYtODBzNDMtODAgOTYtODBjMTEuMiAwIDIyIDEuNiAzMiA0LjZWMTQ3TDE5MiAyMjMuOFY0MzJjMCA0NC4yLTQzIDgwLTk2IDgwcy05Ni0zNS44LTk2LTgwczQzLTgwIDk2LTgwYzExLjIgMCAyMiAxLjYgMzIgNC42VjIwMCAxMjhjMC0xNC4xIDkuMy0yNi42IDIyLjgtMzAuN2wzMjAtOTZjOS43LTIuOSAyMC4yLTEuMSAyOC4zIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMSAzMy45YzEyLjctNC42IDI2LjktLjcgMzUuNSA5LjZMMzIwIDM1OS42VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNDQ4YzAgMTMuNS04LjQgMjUuNS0yMS4xIDMwLjFzLTI2LjkgLjctMzUuNS05LjZMNjQgMTUyLjRWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjY0QzAgNTAuNSA4LjQgMzguNSAyMS4xIDMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5haXJhU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjIuNiA0Ni4zYy03LjgtMTEuNy0yMi40LTE3LTM1LjktMTIuOVM2NCA0OS45IDY0IDY0VjI1NkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NFY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMjBIMjI4LjJsOTcuMiAxNDUuOGM3LjggMTEuNyAyMi40IDE3IDM1LjkgMTIuOXMyMi43LTE2LjUgMjIuNy0zMC42VjMyMGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzODRWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjU2SDI2Mi41TDEyMi42IDQ2LjN6TTMwNS4xIDMyMEgzMjB2MjIuM0wzMDUuMSAzMjB6TTE4NS41IDI1NkgxMjhWMTY5LjdMMTg1LjUgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOZXR3b3JrV2lyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDY0SDM4NHY2NEgyNTZWNjR6TTI0MCAwYy0yNi41IDAtNDggMjEuNS00OCA0OHY5NmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0OHYzMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NnYzMkg4MGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2OTZjMCAyNi41IDIxLjUgNDggNDggNDhIMjQwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM2OGMwLTI2LjUtMjEuNS00OC00OC00OEgxOTJWMjg4SDQ0OHYzMkg0MDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djk2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDU2MGMyNi41IDAgNDgtMjEuNSA0OC00OFYzNjhjMC0yNi41LTIxLjUtNDgtNDgtNDhINTEyVjI4OGg5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzNTJWMTkyaDQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDI0MHpNOTYgNDQ4VjM4NEgyMjR2NjRIOTZ6bTMyMC02NEg1NDR2NjRINDE2VjM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmV1dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwIDE3NmExMTIgMTEyIDAgMSAxIDIyNCAwQTExMiAxMTIgMCAxIDEgODAgMTc2ek0yMjQgMzQ5LjFjODEuOS0xNSAxNDQtODYuOCAxNDQtMTczLjFDMzY4IDc4LjggMjg5LjIgMCAxOTIgMFMxNiA3OC44IDE2IDE3NmMwIDg2LjMgNjIuMSAxNTguMSAxNDQgMTczLjFWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzQ5LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5ld3NwYXBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA5NmMwLTM1LjMgMjguNy02NCA2NC02NEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDgwYy00NC4yIDAtODAtMzUuOC04MC04MFYxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlY0MDBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlY5NnptNjQgMjR2ODBjMCAxMy4zIDEwLjcgMjQgMjQgMjRIMjk2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgxODRjLTEzLjMgMC0yNCAxMC43LTI0IDI0em0yMDgtOGMwIDguOCA3LjIgMTYgMTYgMTZoNDhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzg0Yy04LjggMC0xNiA3LjItMTYgMTZ6bTAgOTZjMCA4LjggNy4yIDE2IDE2IDE2aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDM4NGMtOC44IDAtMTYgNy4yLTE2IDE2ek0xNjAgMzA0YzAgOC44IDcuMiAxNiAxNiAxNkg0MzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMTc2Yy04LjggMC0xNiA3LjItMTYgMTZ6bTAgOTZjMCA4LjggNy4yIDE2IDE2IDE2SDQzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTm90RXF1YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5LjggMzcuNGMxNC43IDkuOCAxOC43IDI5LjcgOC45IDQ0LjRMMzM3LjEgMTQ0SDQwMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyOTQuNWwtNjQgOTZINDAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE4Ny44bC02NS4yIDk3LjdjLTkuOCAxNC43LTI5LjcgMTguNy00NC40IDguOXMtMTguNy0yOS43LTguOS00NC40TDExMC45IDM2OEg0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgxNTMuNWw2NC05Nkg0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgyNjAuMmw2NS4yLTk3LjdjOS44LTE0LjcgMjkuNy0xOC43IDQ0LjQtOC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOb3RkZWYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzkwLjNMMTUzLjUgMjU2IDY0IDEyMS43VjM5MC4zek0xMDIuNSA0NDhIMjgxLjVMMTkyIDMxMy43IDEwMi41IDQ0OHptMTI4LTE5MkwzMjAgMzkwLjNWMTIxLjdMMjMwLjUgMjU2ek0yODEuNSA2NEgxMDIuNUwxOTIgMTk4LjMgMjgxLjUgNjR6TTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwSDMzNmMyNi41IDAgNDggMjEuNSA0OCA0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOb3RlU3RpY2t5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDI4OFYzNjhjMC0yNi41IDIxLjUtNDggNDgtNDhINDQ4Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek00NDggMzUySDQwMi43IDMzNmMtOC44IDAtMTYgNy4yLTE2IDE2djY2LjdWNDgwbDMyLTMyIDY0LTY0IDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOb3Rlc01lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzUyVjk2YzAtMzUuMyAyOC43LTY0IDY0LTY0SDQxNmMzNS4zIDAgNjQgMjguNyA2NCA2NFYyOTMuNWMwIDE3LTYuNyAzMy4zLTE4LjcgNDUuM2wtNTguNSA1OC41Yy0xMiAxMi0yOC4zIDE4LjctNDUuMyAxOC43SDE2MGMtMzUuMyAwLTY0LTI4LjctNjQtNjR6TTI3MiAxMjhjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgyMDhjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNDh2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNTZoNDhjOC44IDAgMTYtNy4yIDE2LTE2VjIwOGMwLTguOC03LjItMTYtMTYtMTZIMzIwVjE0NGMwLTguOC03LjItMTYtMTYtMTZIMjcyem0yNCAzMzZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMTM2QzYwLjkgNTEyIDAgNDUxLjEgMCAzNzZWMTUyYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCAyMjRjMCA0OC42IDM5LjQgODggODggODhIMjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA5NmExNjAgMTYwIDAgMSAwIDAgMzIwIDE2MCAxNjAgMCAxIDAgMC0zMjB6TTQ0OCAyNTZBMjI0IDIyNCAwIDEgMSAwIDI1NmEyMjQgMjI0IDAgMSAxIDQ0OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPYmplY3RHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAxMTkuNEMxMi45IDEwOC40IDAgODcuNyAwIDY0QzAgMjguNyAyOC43IDAgNjQgMGMyMy43IDAgNDQuNCAxMi45IDU1LjQgMzJINDU2LjZDNDY3LjYgMTIuOSA0ODguMyAwIDUxMiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0YzAgMjMuNy0xMi45IDQ0LjQtMzIgNTUuNFYzOTIuNmMxOS4xIDExLjEgMzIgMzEuNyAzMiA1NS40YzAgMzUuMy0yOC43IDY0LTY0IDY0Yy0yMy43IDAtNDQuNC0xMi45LTU1LjQtMzJIMTE5LjRjLTExLjEgMTkuMS0zMS43IDMyLTU1LjQgMzJjLTM1LjMgMC02NC0yOC43LTY0LTY0YzAtMjMuNyAxMi45LTQ0LjQgMzItNTUuNFYxMTkuNHpNNDU2LjYgOTZIMTE5LjRjLTUuNiA5LjctMTMuNyAxNy44LTIzLjQgMjMuNFYzOTIuNmM5LjcgNS42IDE3LjggMTMuNyAyMy40IDIzLjRINDU2LjZjNS42LTkuNyAxMy43LTE3LjggMjMuNC0yMy40VjExOS40Yy05LjctNS42LTE3LjgtMTMuNy0yMy40LTIzLjR6TTEyOCAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJIMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTYwek0yNTYgMzIwaDMyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjIyNGg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkgyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjMyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2JqZWN0VW5ncm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAxMTkuNEMxMi45IDEwOC40IDAgODcuNyAwIDY0QzAgMjguNyAyOC43IDAgNjQgMGMyMy43IDAgNDQuNCAxMi45IDU1LjQgMzJIMzI4LjZDMzM5LjYgMTIuOSAzNjAuMyAwIDM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0YzAgMjMuNy0xMi45IDQ0LjQtMzIgNTUuNFYyMzIuNmMxOS4xIDExLjEgMzIgMzEuNyAzMiA1NS40YzAgMzUuMy0yOC43IDY0LTY0IDY0Yy0yMy43IDAtNDQuNC0xMi45LTU1LjQtMzJIMTE5LjRjLTExLjEgMTkuMS0zMS43IDMyLTU1LjQgMzJjLTM1LjMgMC02NC0yOC43LTY0LTY0YzAtMjMuNyAxMi45LTQ0LjQgMzItNTUuNFYxMTkuNHpNMTE5LjQgOTZjLTUuNiA5LjctMTMuNyAxNy44LTIzLjQgMjMuNFYyMzIuNmM5LjcgNS42IDE3LjggMTMuNyAyMy40IDIzLjRIMzI4LjZjNS42LTkuNyAxMy43LTE3LjggMjMuNC0yMy40VjExOS40Yy05LjctNS42LTE3LjgtMTMuNy0yMy40LTIzLjRIMTE5LjR6bTE5MiAzODRjLTExLjEgMTkuMS0zMS43IDMyLTU1LjQgMzJjLTM1LjMgMC02NC0yOC43LTY0LTY0YzAtMjMuNyAxMi45LTQ0LjQgMzItNTUuNFYzNTJoNjR2NDAuNmM5LjcgNS42IDE3LjggMTMuNyAyMy40IDIzLjRINTIwLjZjNS42LTkuNyAxMy43LTE3LjggMjMuNC0yMy40VjI3OS40Yy05LjctNS42LTE3LjgtMTMuNy0yMy40LTIzLjRoLTQ2Yy01LjQtMTUuNC0xNC42LTI4LjktMjYuNS0zOS42VjE5Mmg3Mi42YzExLjEtMTkuMSAzMS43LTMyIDU1LjQtMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjRjMCAyMy43LTEyLjkgNDQuNC0zMiA1NS40VjM5Mi42YzE5LjEgMTEuMSAzMiAzMS43IDMyIDU1LjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRjLTIzLjcgMC00NC40LTEyLjktNTUuNC0zMkgzMTEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2lsQ2FuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAxMjhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDMydjMySDE0NCA5NiA0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2NjQuOGMwIDE5IDExLjIgMzYuMiAyOC41IDQzLjlsNjcuNSAzMFYzNjhjMCAyNi41IDIxLjUgNDggNDggNDhINDAzLjFjMTguNCAwIDM1LjgtNy45IDQ4LTIxLjdMNjMzLjUgMTg3LjdjMTIuMy0xMy45LS4zLTM1LjQtMTguNC0zMS41TDQ0OCAxOTJsLTUwLjUtMjUuMmMtOC45LTQuNC0xOC43LTYuOC0yOC42LTYuOEgyODhWMTI4aDMyek05NiAyMDh2ODYuMUw0OCAyNzIuOFYyMDhIOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9pbFdlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4LjMgNjEuM2MtMTEuNC00Mi43LTU1LjMtNjgtOTgtNTYuNkw0MTQuOSA4LjhDMzk3LjggMTMuNCAzODcuNyAzMSAzOTIuMyA0OGwyNC41IDkxLjRMMzA4LjUgMTY3LjVsLTYuMy0xOC4xQzI5Ny43IDEzNi42IDI4NS42IDEyOCAyNzIgMTI4cy0yNS43IDguNi0zMC4yIDIxLjRsLTEzLjYgMzlMOTYgMjIyLjZWMTg0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjQ0OEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDA2LjdMMzQwIDI1Ny41bC02Mi4yIDE2LjFMMzA1LjMgMzUySDIzOC43TDI2NSAyNzdsLTc0LjYgMTkuM0wxMzcuMyA0NDhIOTZWMjg4LjhsMzM3LjQtODcuNSAyNS4yIDk0YzQuNiAxNy4xIDIyLjEgMjcuMiAzOS4yIDIyLjZsMTUuNS00LjFjNDIuNy0xMS40IDY4LTU1LjMgNTYuNi05OEw1MjguMyA2MS4zek0yMDUuMSA0NDhsMTEuMi0zMkgzMjcuN2wxMS4yIDMySDIwNS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzkuMyA0LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwbC0xNiAxNmMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZsMTYgMTZjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBsMTYtMTZjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTE2LTE2ek0yODEgNjYuN2MtMi4yLTEuNS00LjktMi41LTcuNy0yLjdjLS42IDAtMS4zLS4xLTEuOSAwYy0zLjkgLjItNy40IDEuNy0xMC4xIDQuMmMtLjkgLjgtMS42IDEuNy0yLjMgMi42Yy0xLjcgMi40LTIuNyA1LjMtMi45IDguNWMwIC43IDAgMS40IDAgMi4xYy4yIDIuMiAuOSA0LjMgMS45IDYuMmwuMyAuNmMuMyAuNiAuOCAxLjQgMS40IDIuNGMxLjIgMiAyLjkgNC44IDUuMSA4LjJjNC40IDYuNyAxMS4xIDE1LjUgMjAgMjQuNEMzMDIuNCAxNDEuMSAzMzAuMyAxNjAgMzY4IDE2MGMzMS4yIDAgNTYuNi0xMC40IDczLjktMjAuMmM4LjctNSAxNS42LTkuOSAyMC40LTEzLjhjMi40LTEuOSA0LjMtMy42IDUuNy00LjljLjctLjYgMS4zLTEuMiAxLjctMS42bC42LS41IC4xLS4xIC4xLS4xIDAgMCAwIDBjNS45LTUuOCA5LjUtMTMuOSA5LjUtMjIuOGMwLTE3LjctMTQuMy0zMi0zMi0zMmMtOC43IDAtMTYuNyAzLjUtMjIuNCA5LjJjLS4xIC4xLS4yIC4yLS41IC40Yy0uNSAuNS0xLjUgMS4zLTIuOCAyLjRjLTIuNyAyLjItNi44IDUuMi0xMi4xIDguMkMzOTkuNCA5MC40IDM4NC44IDk2IDM2OCA5NmMtMjAuOCAwLTQyLjQtNy01OS41LTE0LjZjLTguNC0zLjctMTUuNC03LjUtMjAuMy0xMC4zYy0yLjQtMS40LTQuMy0yLjUtNS42LTMuM2MtLjYtLjQtMS4xLS43LTEuNC0uOWwtLjMtLjJ6TTExNS4yIDE2OS42YzgtNiAxNy45LTkuNiAyOC44LTkuNmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OEgxMDkuOGMtNy42IDAtMTMuOCA2LjItMTMuOCAxMy44YzAgMS41IC4yIDIuOSAuNyA0LjRsOCAyNGM0LjQgMTMuMSAxNi42IDIxLjkgMzAuNCAyMS45SDE0NGgxNmMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NGMtNTAuOCAwLTgyLjctMjEuNS0xMDIuMi00Mi44Yy05LjktMTAuOC0xNi42LTIxLjYtMjAuOS0yOS43Yy0yLjEtNC0zLjYtNy4zLTQuNS05LjZjLS41LTEuMS0uOC0yLTEtMi41bC0uMi0uNWMtLjMtLjktLjctMS44LTEuMS0yLjZjLTEuMi0yLjItMi44LTQtNC43LTUuNGMtMS45LTEuNC00LjEtMi4zLTYuNS0yLjhjLTEuNC0uMy0yLjktLjMtNC40LS4yYy0yLjUgLjItNC44IDEtNi44IDIuM2MtMS4xIC43LTIuMiAxLjUtMy4xIDIuNWMtMi40IDIuNS00LjEgNS44LTQuNSA5LjVjLS4xIC42LS4xIDEuMS0uMSAxLjdjMCAwIDAgMCAwIDBjMCAuOCAuMSAxLjcgLjIgMi41bDAgLjFjMCAuMyAuMSAuOCAuMiAxLjNjLjIgMS4xIC40IDIuNyAuOCA0LjZjLjggMy45IDIgOS40IDMuOSAxNS45YzMuOCAxMyAxMC4zIDMwLjQgMjEuMyA0OEM0OC43IDQ3Ni4yIDg5LjQgNTEyIDE2MCA1MTJjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhjMC0yMy4zLTYuMi00NS4yLTE3LjEtNjRoMjIuNmMyNS41IDAgNDkuOS0xMC4xIDY3LjktMjguMWwyNi41LTI2LjVjNi02IDE0LjEtOS40IDIyLjYtOS40SDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMmMtMjUuNyAwLTQxLjQtMTIuNS01MS4yLTI1LjZjLTUtNi43LTguNC0xMy40LTEwLjUtMTguNmMtMS4xLTIuNS0xLjgtNC42LTIuMi02Yy0uMi0uNy0uNC0xLjItLjUtMS41bC0uMS0uMmMtLjMtMS4zLS44LTIuNi0xLjUtMy44Yy0xLjEtMi0yLjYtMy44LTQuNC01LjFjLTIuNy0yLTYtMy4yLTkuNi0zLjJsLS4yIDBjLTggLjEtMTQuNiA2LjEtMTUuNiAxMy45bDAgMGMwIC4zLS4xIC42LS4yIDEuMWMtLjEgLjktLjMgMi4xLS40IDMuNmMtLjMgMy0uNiA3LjMtLjYgMTIuNGMwIDEwLjEgMS4xIDIzLjkgNS44IDM4LjFjNC44IDE0LjMgMTMuNCAyOS4zIDI4LjYgNDAuN0MzNjguNyA0NzMuMyAzODkuMyA0ODAgNDE2IDQ4MGM1MyAwIDk2LTQzIDk2LTk2VjI4OGMwLTUzLTQzLTk2LTk2LTk2aC01LjVjLTI1LjUgMC00OS45IDEwLjEtNjcuOSAyOC4xbC0yNi41IDI2LjVjLTYgNi0xNC4xIDkuNC0yMi42IDkuNEgyNDUuMmM2LjktMTQuNSAxMC44LTMwLjggMTAuOC00OGMwLTYxLjktNTAuMS0xMTItMTEyLTExMmMtMjUuMiAwLTQ4LjUgOC4zLTY3LjIgMjIuNGMtMTQuMSAxMC42LTE3IDMwLjctNi40IDQ0LjhzMzAuNyAxNyA0NC44IDYuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT3R0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgxLjUgMTk3LjFsMTIuOSA2LjRjNS45IDMgMTIuNCA0LjUgMTkuMSA0LjVjMjMuNSAwIDQyLjYtMTkuMSA0Mi42LTQyLjZWMTQ0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2MjEuNGMwIDIzLjUgMTkuMSA0Mi42IDQyLjYgNDIuNmM2LjYgMCAxMy4xLTEuNSAxOS4xLTQuNWwxMi45LTYuNCA4LjQtNC4yTDEzNS4xIDE4NWMtNC41LTMtNy4xLTgtNy4xLTEzLjNWMTY4YzAtMTMuMyAxMC43LTI0IDI0LTI0aDE2YzEzLjMgMCAyNCAxMC43IDI0IDI0djMuN2MwIDUuMy0yLjcgMTAuMy03LjEgMTMuM2wtMTEuOCA3LjkgOC40IDQuMnptLTguNiA0OS40TDE2MCAyNDBsLTEyLjkgNi40Yy0xMi42IDYuMy0yNi41IDkuNi00MC41IDkuNmMtMy42IDAtNy4xLS4yLTEwLjYtLjZ2LjZjMCAzNS4zIDI4LjcgNjQgNjQgNjRoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0VjMzNiAzMjBjMC0yMy43IDEyLjktNDQuNCAzMi01NS40YzkuNC01LjQgMjAuMy04LjYgMzItOC42VjI0MGMwLTI2LjUgMjEuNS00OCA0OC00OGM4LjggMCAxNiA3LjIgMTYgMTZ2MzIgMTYgNDhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyMDQuM2MwLTQ4LjItMzAuOC05MS03Ni42LTEwNi4zbC04LjUtMi44Yy04LTIuNy0xMi42LTExLjEtMTAuNC0xOS4zczEwLjMtMTMuMiAxOC42LTExLjZsMTkuOSA0QzU3NiA4Ni4xIDY0MCAxNjQuMiA2NDAgMjU0LjlsMCAxLjFoMGMwIDEyMy43LTEwMC4zIDIyNC0yMjQgMjI0aC0xLjFIMjU2aC0uNkMxMzIgNDgwIDMyIDM4MCAzMiAyNTYuNlYyNTYgMjE2LjhjLTEwLjEtMTQuNi0xNi0zMi4zLTE2LTUxLjRWMTQ0bDAtMS40QzYuNyAxMzkuMyAwIDEzMC41IDAgMTIwYzAtMTMuMyAxMC43LTI0IDI0LTI0aDIuOEM0NC44IDU4LjIgODMuMyAzMiAxMjggMzJoNjRjNDQuNyAwIDgzLjIgMjYuMiAxMDEuMiA2NEgyOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRjMCAxMC41LTYuNyAxOS4zLTE2IDIyLjZsMCAxLjR2MjEuNGMwIDEuNCAwIDIuOC0uMSA0LjNjMTItNi4yIDI1LjctOS42IDQwLjEtOS42aDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJoLThjLTEzLjMgMC0yNCAxMC43LTI0IDI0djhoNTYuNGMtMTUuMiAxNy0yNC40IDM5LjQtMjQuNCA2NEgzMjBjLTQyLjMgMC03OC4yLTI3LjQtOTEtNjUuM2MtNS4xIC45LTEwLjMgMS4zLTE1LjYgMS4zYy0xNC4xIDAtMjcuOS0zLjMtNDAuNS05LjZ6TTk2IDEyOGExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6bTExMiAxNmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPdXRkZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyQzE0LjMgOTYgMCA4MS43IDAgNjR6TTE5MiAxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6bTMyIDk2SDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6TTAgNDQ4YzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TS4yIDI2OC42Yy04LjItNi40LTguMi0xOC45IDAtMjUuM2wxMDEuOS03OS4zYzEwLjUtOC4yIDI1LjgtLjcgMjUuOCAxMi42VjMzNS4zYzAgMTMuMy0xNS4zIDIwLjgtMjUuOCAxMi42TC4yIDI2OC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJoOTZjODguNCAwIDE2MCA3MS42IDE2MCAxNjBzLTcxLjYgMTYwLTE2MCAxNjBINjR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzIwIDk2ek02NCAyODhoOTZjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZINjRWMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWdlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxMjh6bTY0IDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek04MCAzMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIODB6bTEzNiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDIxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFpbnRSb2xsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMzUyYzM1LjMgMCA2NCAyOC43IDY0IDY0djY0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMTYwIDM1MmMwLTE3LjcgMTQuMy0zMiAzMi0zMlYzMDRjMC00NC4yIDM1LjgtODAgODAtODBINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE2MCA2OS41YzM3LjMgMTMuMiA2NCA0OC43IDY0IDkwLjV2MzJjMCA1My00MyA5Ni05NiA5NkgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhaW50YnJ1c2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM5LjMgMzY3LjFjMjcuMy0zLjkgNTEuOS0xOS40IDY3LjItNDIuOUw1NjguMiA3NC4xYzEyLjYtMTkuNSA5LjQtNDUuMy03LjYtNjEuMlM1MTcuNy00LjQgNDk5LjEgOS42TDI2Mi40IDE4Ny4yYy0yNCAxOC0zOC4yIDQ2LjEtMzguNCA3Ni4xTDMzOS4zIDM2Ny4xem0tMTkuNiAyNS40bC0xMTYtMTA0LjRDMTQzLjkgMjkwLjMgOTYgMzM5LjYgOTYgNDAwYzAgMy45IC4yIDcuOCAuNiAxMS42Qzk4LjQgNDI5LjEgODYuNCA0NDggNjguOCA0NDhINjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMjA4YzYxLjkgMCAxMTItNTAuMSAxMTItMTEyYzAtMi41LS4xLTUtLjItNy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWxldHRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAyNTZjMCAuOSAwIDEuOCAwIDIuN2MtLjQgMzYuNS0zMy42IDYxLjMtNzAuMSA2MS4zSDM0NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhjMCAzLjQgLjQgNi43IDEgOS45YzIuMSAxMC4yIDYuNSAyMCAxMC44IDI5LjljNi4xIDEzLjggMTIuMSAyNy41IDEyLjEgNDJjMCAzMS44LTIxLjYgNjAuNy01My40IDYyYy0zLjUgLjEtNyAuMi0xMC42IC4yQzExNC42IDUxMiAwIDM5Ny40IDAgMjU2UzExNC42IDAgMjU2IDBTNTEyIDExNC42IDUxMiAyNTZ6TTEyOCAyODhhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMC05NmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTI4OCA5NmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem05NiA5NmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhbGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjR2NjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIOTYgMzIwIDU0NGg2NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg1NzZWMzg0aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDU0NCAzMjAgOTYgMzJ6bTk2IDY0SDI4OHY2NEgxMjhWMzg0em0yMjQgMEg1MTJ2NjRIMzUyVjM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFub3JhbWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDUuNiAzMkMyMC40IDMyIDAgNTIuNCAwIDc3LjZWNDM0LjRDMCA0NTkuNiAyMC40IDQ4MCA0NS42IDQ4MGM1LjEgMCAxMC0uOCAxNC43LTIuNEM3NC42IDQ3Mi44IDE3Ny42IDQ0MCAzMjAgNDQwczI0NS40IDMyLjggMjU5LjYgMzcuNmM0LjcgMS42IDkuNyAyLjQgMTQuNyAyLjRjMjUuMiAwIDQ1LjYtMjAuNCA0NS42LTQ1LjZWNzcuNkM2NDAgNTIuNCA2MTkuNiAzMiA1OTQuNCAzMmMtNSAwLTEwIC44LTE0LjcgMi40QzU2NS40IDM5LjIgNDYyLjQgNzIgMzIwIDcyUzc0LjYgMzkuMiA2MC40IDM0LjRDNTUuNiAzMi44IDUwLjcgMzIgNDUuNiAzMnpNOTYgMTYwYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTI3MiAwYzcuOSAwIDE1LjQgMy45IDE5LjggMTAuNUw1MTIuMyAzNTNjNS40IDggNS42IDE4LjQgLjQgMjYuNXMtMTQuNyAxMi4zLTI0LjIgMTAuN0M0NDIuNyAzODIuNCAzODUuMiAzNzYgMzIwIDM3NmMtNjUuNiAwLTEyMy40IDYuNS0xNjkuMyAxNC40Yy05LjggMS43LTE5LjctMi45LTI0LjctMTEuNXMtNC4zLTE5LjQgMS45LTI3LjJMMTk3LjMgMjY1YzQuNi01LjcgMTEuNC05IDE4LjctOXMxNC4yIDMuMyAxOC43IDlsMjYuNCAzMy4xIDg3LTEyNy42YzQuNS02LjYgMTEuOS0xMC41IDE5LjgtMTAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFwZXJQbGFuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTguMSA1LjZjMTAuMSA3IDE1LjQgMTkuMSAxMy41IDMxLjJsLTY0IDQxNmMtMS41IDkuNy03LjQgMTguMi0xNiAyM3MtMTguOSA1LjQtMjggMS42TDI4NCA0MjcuN2wtNjguNSA3NC4xYy04LjkgOS43LTIyLjkgMTIuOS0zNS4yIDguMVMxNjAgNDkzLjIgMTYwIDQ4MFYzOTYuNGMwLTQgMS41LTcuOCA0LjItMTAuN0wzMzEuOCAyMDIuOGM1LjgtNi4zIDUuNi0xNi0uNC0yMnMtMTUuNy02LjQtMjItLjdMMTA2IDM2MC44IDE3LjcgMzE2LjZDNy4xIDMxMS4zIC4zIDMwMC43IDAgMjg4LjlzNS45LTIyLjggMTYuMS0yOC43bDQ0OC0yNTZjMTAuNy02LjEgMjMuOS01LjUgMzQgMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXBlcmNsaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY0LjIgODMuOGMtMjQuNC0yNC40LTY0LTI0LjQtODguNCAwbC0xODQgMTg0Yy00Mi4xIDQyLjEtNDIuMSAxMTAuMyAwIDE1Mi40czExMC4zIDQyLjEgMTUyLjQgMGwxNTItMTUyYzEwLjktMTAuOSAyOC43LTEwLjkgMzkuNiAwczEwLjkgMjguNyAwIDM5LjZsLTE1MiAxNTJjLTY0IDY0LTE2Ny42IDY0LTIzMS42IDBzLTY0LTE2Ny42IDAtMjMxLjZsMTg0LTE4NGM0Ni4zLTQ2LjMgMTIxLjMtNDYuMyAxNjcuNiAwczQ2LjMgMTIxLjMgMCAxNjcuNmwtMTc2IDE3NmMtMjguNiAyOC42LTc1IDI4LjYtMTAzLjYgMHMtMjguNi03NSAwLTEwMy42bDE0NC0xNDRjMTAuOS0xMC45IDI4LjctMTAuOSAzOS42IDBzMTAuOSAyOC43IDAgMzkuNmwtMTQ0IDE0NGMtNi43IDYuNy02LjcgMTcuNyAwIDI0LjRzMTcuNyA2LjcgMjQuNCAwbDE3Ni0xNzZjMjQuNC0yNC40IDI0LjQtNjQgMC04OC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXJhY2h1dGVCb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgzLjUgMTkyYy4zLTUuMyAuNS0xMC42IC41LTE2YzAtNTEtMTUuOS05Ni00MC4yLTEyNy42QzMxOS41IDE2LjkgMjg4LjIgMCAyNTYgMHMtNjMuNSAxNi45LTg3LjggNDguNEMxNDMuOSA4MCAxMjggMTI1IDEyOCAxNzZjMCA1LjQgLjIgMTAuNyAuNSAxNkgyNDBWMzIwSDIwOGMtNyAwLTEzLjcgMS41LTE5LjcgNC4yTDY4LjIgMTkySDk2LjVjLS4zLTUuMy0uNS0xMC42LS41LTE2YzAtNjQgMjIuMi0xMjEuMiA1Ny4xLTE1OS4zQzYyIDQ5LjMgMTguNiAxMjIuNiA0LjIgMTczLjZDMS41IDE4My4xIDkgMTkyIDE4LjkgMTkyaDZMMTY1LjIgMzQ2LjNjLTMuMyA2LjUtNS4yIDEzLjktNS4yIDIxLjd2OTZjMCAyNi41IDIxLjUgNDggNDggNDhoOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzY4YzAtNy44LTEuOS0xNS4yLTUuMi0yMS43TDQ4Ny4xIDE5Mmg2YzkuOSAwIDE3LjQtOC45IDE0LjctMTguNEM0OTMuNCAxMjIuNiA0NTAgNDkuMyAzNTguOSAxNi43QzM5My44IDU0LjggNDE2IDExMi4xIDQxNiAxNzZjMCA1LjQtLjIgMTAuNy0uNSAxNmgyOC4zTDMyMy43IDMyNC4yYy02LTIuNy0xMi43LTQuMi0xOS43LTQuMkgyNzJWMTkySDM4My41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXJhZ3JhcGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDMyaDY0SDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzODRsMCAzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0zNTJIMjg4VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJIMTkyYy04OC40IDAtMTYwLTcxLjYtMTYwLTE2MHM3MS42LTE2MCAxNjAtMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXNzcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgzODRjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMTgzIDI3OC44Yy0yNy45LTEzLjItNDguNC0zOS40LTUzLjctNzAuOGgzOS4xYzEuNiAzMC40IDcuNyA1My44IDE0LjYgNzAuOHptNDEuMyA5LjJsLS4zIDAtLjMgMGMtMi40LTMuNS01LjctOC45LTkuMS0xNi41Yy02LTEzLjYtMTIuNC0zNC4zLTE0LjItNjMuNWg0Ny4xYy0xLjggMjkuMi04LjEgNDkuOS0xNC4yIDYzLjVjLTMuNCA3LjYtNi43IDEzLTkuMSAxNi41em00MC43LTkuMmM2LjgtMTcuMSAxMi45LTQwLjQgMTQuNi03MC44aDM5LjFjLTUuMyAzMS40LTI1LjggNTcuNi01My43IDcwLjh6TTI3OS42IDE3NmMtMS42LTMwLjQtNy43LTUzLjgtMTQuNi03MC44YzI3LjkgMTMuMiA0OC40IDM5LjQgNTMuNyA3MC44SDI3OS42ek0yMjMuNyA5NmwuMyAwIC4zIDBjMi40IDMuNSA1LjcgOC45IDkuMSAxNi41YzYgMTMuNiAxMi40IDM0LjMgMTQuMiA2My41SDIwMC41YzEuOC0yOS4yIDguMS00OS45IDE0LjItNjMuNWMzLjQtNy42IDYuNy0xMyA5LjEtMTYuNXpNMTgzIDEwNS4yYy02LjggMTcuMS0xMi45IDQwLjQtMTQuNiA3MC44SDEyOS4zYzUuMy0zMS40IDI1LjgtNTcuNiA1My43LTcwLjh6TTM1MiAxOTJBMTI4IDEyOCAwIDEgMCA5NiAxOTJhMTI4IDEyOCAwIDEgMCAyNTYgMHpNMTEyIDM4NGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkgzMzZjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXN0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMGMtMjMuNyAwLTQ0LjQgMTIuOS01NS40IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODBWNDAwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDE5MlYxNzZjMC00NC4yIDM1LjgtODAgODAtODBoNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhIMjE1LjRDMjA0LjQgMTIuOSAxODMuNyAwIDE2MCAwek0yNzIgMTI4Yy0yNi41IDAtNDggMjEuNS00OCA0OFY0NDh2MTZjMCAyNi41IDIxLjUgNDggNDggNDhINDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI0My45YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlsLTY3LjktNjcuOWMtOS05LTIxLjItMTQuMS0zMy45LTE0LjFIMzIwIDI3MnpNMTYwIDQwYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGF1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggNjRDMjEuNSA2NCAwIDg1LjUgMCAxMTJWNDAwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjExMmMwLTI2LjUtMjEuNS00OC00OC00OEg0OHptMTkyIDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjQwMGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzMmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDhIMjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI2LjUgOTIuOWMxNC4zIDQyLjktLjMgODYuMi0zMi42IDk2LjhzLTcwLjEtMTUuNi04NC40LTU4LjVzLjMtODYuMiAzMi42LTk2LjhzNzAuMSAxNS42IDg0LjQgNTguNXpNMTAwLjQgMTk4LjZjMTguOSAzMi40IDE0LjMgNzAuMS0xMC4yIDg0LjFzLTU5LjctLjktNzguNS0zMy4zUy0yLjcgMTc5LjMgMjEuOCAxNjUuM3M1OS43IC45IDc4LjUgMzMuM3pNNjkuMiA0MDEuMkMxMjEuNiAyNTkuOSAyMTQuNyAyMjQgMjU2IDIyNHMxMzQuNCAzNS45IDE4Ni44IDE3Ny4yYzMuNiA5LjcgNS4yIDIwLjEgNS4yIDMwLjV2MS42YzAgMjUuOC0yMC45IDQ2LjctNDYuNyA0Ni43Yy0xMS41IDAtMjIuOS0xLjQtMzQtNC4ybC04OC0yMmMtMTUuMy0zLjgtMzEuMy0zLjgtNDYuNiAwbC04OCAyMmMtMTEuMSAyLjgtMjIuNSA0LjItMzQgNC4yQzg0LjkgNDgwIDY0IDQ1OS4xIDY0IDQzMy4zdi0xLjZjMC0xMC40IDEuNi0yMC44IDUuMi0zMC41ek00MjEuOCAyODIuN2MtMjQuNS0xNC0yOS4xLTUxLjctMTAuMi04NC4xczU0LTQ3LjMgNzguNS0zMy4zczI5LjEgNTEuNyAxMC4yIDg0LjFzLTU0IDQ3LjMtNzguNSAzMy4zek0zMTAuMSAxODkuN2MtMzIuMy0xMC42LTQ2LjktNTMuOS0zMi42LTk2LjhzNTIuMS02OS4xIDg0LjQtNTguNXM0Ni45IDUzLjkgMzIuNiA5Ni44cy01Mi4xIDY5LjEtODQuNCA1OC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZWFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgNDQ1LjNWMzIzLjVsLTk0LjMgNzcuMWMyNi4xIDIyLjggNTguNSAzOC43IDk0LjMgNDQuN3pNODkuMiAzNTEuMUwyMjQgMjQwLjhWNjYuN0MxMzMuMiA4MS45IDY0IDE2MC45IDY0IDI1NmMwIDM0LjYgOS4yIDY3LjEgMjUuMiA5NS4xem0yOTMuMSA0OS41TDI4OCAzMjMuNVY0NDUuM2MzNS43LTYgNjguMS0yMS45IDk0LjMtNDQuN3ptNDAuNi00OS41YzE2LTI4IDI1LjItNjAuNSAyNS4yLTk1LjFjMC05NS4xLTY5LjItMTc0LjEtMTYwLTE4OS4zVjI0MC44TDQyMi44IDM1MS4xek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlbkNsaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDUzLjMgMTkuM2wzOS40IDM5LjRjMjUgMjUgMjUgNjUuNSAwIDkwLjVsLTUyLjEgNTIuMSAwIDAtMS0xIDAgMC0xNi0xNi05Ni05Ni0xNy0xNyA1Mi4xLTUyLjFjMjUtMjUgNjUuNS0yNSA5MC41IDB6TTI0MSAxMTQuOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMMTA1IDIxN2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOUwxNzMuMSA4MWMyOC4xLTI4LjEgNzMuNy0yOC4xIDEwMS44IDBMMjg4IDk0LjFsMTcgMTcgOTYgOTYgMTYgMTYgMSAxLTE3IDE3TDIyOS41IDQxMi41Yy00OCA0OC0xMDkuMiA4MC44LTE3NS44IDk0LjFsLTI1IDVjLTcuOSAxLjYtMTYtLjktMjEuNy02LjZzLTguMS0xMy44LTYuNi0yMS43bDUtMjVjMTMuMy02Ni42IDQ2LjEtMTI3LjggOTQuMS0xNzUuOEwyNTQuMSAxMjggMjQxIDExNC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW5GYW5jeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzMuNSAyNy4xQzM4OC41IDkuOSA0MTAuMiAwIDQzMyAwYzQzLjYgMCA3OSAzNS40IDc5IDc5YzAgMjIuOC05LjkgNDQuNi0yNy4xIDU5LjZMMjc3LjcgMzE5bC0xMC4zLTEwLjMtNjQtNjRMMTkzIDIzNC4zIDM3My41IDI3LjF6TTE3MC4zIDI1Ni45bDEwLjQgMTAuNCA2NCA2NCAxMC40IDEwLjQtMTkuMiA4My40Yy0zLjkgMTcuMS0xNi45IDMwLjctMzMuOCAzNS40TDI0LjQgNTEwLjNsOTUuNC05NS40YzIuNiAuNyA1LjQgMS4xIDguMyAxLjFjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJjMCAyLjkgLjQgNS42IDEuMSA4LjNMMS43IDQ4Ny42IDUxLjUgMzEwYzQuNy0xNi45IDE4LjMtMjkuOSAzNS40LTMzLjhsODMuNC0xOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW5OaWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4LjQgMTguM0wzMTIuNyA3NC4xIDQzNy45IDE5OS4zbDU1LjctNTUuN2MyMS45LTIxLjkgMjEuOS01Ny4zIDAtNzkuMkw0NDcuNiAxOC4zYy0yMS45LTIxLjktNTcuMy0yMS45LTc5LjIgMHpNMjg4IDk0LjZsLTkuMiAyLjhMMTM0LjcgMTQwLjZjLTE5LjkgNi0zNS43IDIxLjItNDIuMyA0MUwzLjggNDQ1LjhjLTMuOCAxMS4zLTEgMjMuOSA3LjMgMzIuNEwxNjQuNyAzMjQuN2MtMy02LjMtNC43LTEzLjMtNC43LTIwLjdjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OGMtNy40IDAtMTQuNC0xLjctMjAuNy00LjdMMzMuNyA1MDAuOWM4LjYgOC4zIDIxLjEgMTEuMiAzMi40IDcuM2wyNjQuMy04OC42YzE5LjctNi42IDM1LTIyLjQgNDEtNDIuM2w0My4yLTE0NC4xIDIuOC05LjJMMjg4IDk0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlblJ1bGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2OS4zIDE5LjNsMjMuNCAyMy40YzI1IDI1IDI1IDY1LjUgMCA5MC41bC01Ni40IDU2LjRMMzIyLjMgNzUuN2w1Ni40LTU2LjRjMjUtMjUgNjUuNS0yNSA5MC41IDB6TTQ0LjkgMzUzLjJMMjk5LjcgOTguMyA0MTMuNyAyMTIuMyAxNTguOCA0NjcuMWMtNi43IDYuNy0xNS4xIDExLjYtMjQuMiAxNC4ybC0xMDQgMjkuN2MtOC40IDIuNC0xNy40IC4xLTIzLjYtNi4xcy04LjUtMTUuMi02LjEtMjMuNmwyOS43LTEwNGMyLjYtOS4yIDcuNS0xNy41IDE0LjItMjQuMnpNMjQ5LjQgMTAzLjRMMTAzLjQgMjQ5LjQgMTYgMTYxLjljLTE4LjctMTguNy0xOC43LTQ5LjEgMC02Ny45TDk0LjEgMTZjMTguNy0xOC43IDQ5LjEtMTguNyA2Ny45IDBsMTkuOCAxOS44Yy0uMyAuMy0uNyAuNi0xIC45bC02NCA2NGMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwbDY0LTY0Yy4zLS4zIC42LS43IC45LTFsNDUuMSA0NS4xek00MDguNiAyNjIuNmw0NS4xIDQ1LjFjLS4zIC4zLS43IC42LTEgLjlsLTY0IDY0Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBsNjQtNjRjLjMtLjMgLjYtLjcgLjktMUw0OTYgMzUwLjFjMTguNyAxOC43IDE4LjcgNDkuMSAwIDY3LjlMNDE3LjkgNDk2Yy0xOC43IDE4LjctNDkuMSAxOC43LTY3LjkgMGwtODcuNC04Ny40TDQwOC42IDI2Mi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW5Ub1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzEuNiAyMS43Yy0yMS45LTIxLjktNTcuMy0yMS45LTc5LjIgMEwzNjIuMyA1MS43bDk3LjkgOTcuOSAzMC4xLTMwLjFjMjEuOS0yMS45IDIxLjktNTcuMyAwLTc5LjJMNDcxLjYgMjEuN3ptLTI5OS4yIDIyMGMtNi4xIDYuMS0xMC44IDEzLjYtMTMuNSAyMS45bC0yOS42IDg4LjhjLTIuOSA4LjYtLjYgMTguMSA1LjggMjQuNnMxNS45IDguNyAyNC42IDUuOGw4OC44LTI5LjZjOC4yLTIuNyAxNS43LTcuNCAyMS45LTEzLjVMNDM3LjcgMTcyLjMgMzM5LjcgNzQuMyAxNzIuNCAyNDEuN3pNOTYgNjRDNDMgNjQgMCAxMDcgMCAxNjBWNDE2YzAgNTMgNDMgOTYgOTYgOTZIMzUyYzUzIDAgOTYtNDMgOTYtOTZWMzIwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjIuNyAxOS4zTDMxNC4zIDY3LjcgNDQ0LjMgMTk3LjdsNDguNC00OC40YzI1LTI1IDI1LTY1LjUgMC05MC41TDQ1My4zIDE5LjNjLTI1LTI1LTY1LjUtMjUtOTAuNSAwem0tNzEgNzFMNTguNiAzMjMuNWMtMTAuNCAxMC40LTE4IDIzLjMtMjIuMiAzNy40TDEgNDgxLjJDLTEuNSA0ODkuNyAuOCA0OTguOCA3IDUwNXMxNS4zIDguNSAyMy43IDYuMWwxMjAuMy0zNS40YzE0LjEtNC4yIDI3LTExLjggMzcuNC0yMi4yTDQyMS43IDIyMC4zIDI5MS43IDkwLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlbmNpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTAuMyAyMzFsMTEuMy0xMS4zLTMzLjktMzMuOS02Mi4xLTYyLjFMMjkxLjcgODkuOGwtMTEuMyAxMS4zLTIyLjYgMjIuNkw1OC42IDMyMi45Yy0xMC40IDEwLjQtMTggMjMuMy0yMi4yIDM3LjRMMSA0ODAuN2MtMi41IDguNC0uMiAxNy41IDYuMSAyMy43czE1LjMgOC41IDIzLjcgNi4xbDEyMC4zLTM1LjRjMTQuMS00LjIgMjctMTEuOCAzNy40LTIyLjJMMzg3LjcgMjUzLjcgNDEwLjMgMjMxek0xNjAgMzk5LjRsLTkuMSAyMi43Yy00IDMuMS04LjUgNS40LTEzLjMgNi45TDU5LjQgNDUybDIzLTc4LjFjMS40LTQuOSAzLjgtOS40IDYuOS0xMy4zbDIyLjctOS4xdjMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMnpNMzYyLjcgMTguN0wzNDguMyAzMy4yIDMyNS43IDU1LjggMzE0LjMgNjcuMWwzMy45IDMzLjkgNjIuMSA2Mi4xIDMzLjkgMzMuOSAxMS4zLTExLjMgMjIuNi0yMi42IDE0LjUtMTQuNWMyNS0yNSAyNS02NS41IDAtOTAuNUw0NTMuMyAxOC43Yy0yNS0yNS02NS41LTI1LTkwLjUgMHptLTQ3LjQgMTY4bC0xNDQgMTQ0Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42bDE0NC0xNDRjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW9wbGVBcnJvd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNjRhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgNjQgNjR6TTI1LjkgMjMzLjRDMjkuMyAxOTEuOSA2NCAxNjAgMTA1LjYgMTYwaDQ0LjhjMjcgMCA1MSAxMy40IDY1LjUgMzQuMWMtMi43IDEuOS01LjIgNC03LjUgNi4zbC02NCA2NGMtMjEuOSAyMS45LTIxLjkgNTcuMyAwIDc5LjJMMTkyIDM5MS4yVjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEgxMTJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM0OC4zYy0yNi41LTkuNS00NC43LTM1LjgtNDIuMi02NS42bDQuMS00OS4zek00NDggNjRhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgNDQ4IDY0ek00MzEuNiAyMDAuNGMtMi4zLTIuMy00LjktNC40LTcuNS02LjNjMTQuNS0yMC43IDM4LjYtMzQuMSA2NS41LTM0LjFoNDQuOGM0MS42IDAgNzYuMyAzMS45IDc5LjcgNzMuNGw0LjEgNDkuM2MyLjUgMjkuOC0xNS43IDU2LjEtNDIuMiA2NS42VjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OTZjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM5MS4ybDQ3LjYtNDcuNmMyMS45LTIxLjkgMjEuOS01Ny4zIDAtNzkuMmwtNjQtNjR6TTI3MiAyNDB2MzJoOTZWMjQwYzAtOS43IDUuOC0xOC41IDE0LjgtMjIuMnMxOS4zLTEuNyAyNi4yIDUuMmw2NCA2NGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtNjQgNjRjLTYuOSA2LjktMTcuMiA4LjktMjYuMiA1LjJzLTE0LjgtMTIuNS0xNC44LTIyLjJWMzM2SDI3MnYzMmMwIDkuNy01LjggMTguNS0xNC44IDIyLjJzLTE5LjMgMS43LTI2LjItNS4ybC02NC02NGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsNjQtNjRjNi45LTYuOSAxNy4yLTguOSAyNi4yLTUuMnMxNC44IDEyLjUgMTQuOCAyMi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW9wbGVDYXJyeUJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCA0OGE0OCA0OCAwIDEgMSA5NiAwQTQ4IDQ4IDAgMSAxIDgwIDQ4em02NCAxOTMuN3Y2NS4xbDUxIDUxYzcuMSA3LjEgMTEuOCAxNi4yIDEzLjQgMjYuMWwxNS4yIDkwLjljMi45IDE3LjQtOC45IDMzLjktMjYuMyAzNi44cy0zMy45LTguOS0zNi44LTI2LjNsLTE0LjMtODUuOUw2Ni44IDMyMEM1NC44IDMwOCA0OCAyOTEuNyA0OCAyNzQuN1YxODYuNmMwLTMyLjQgMjYuMi01OC42IDU4LjYtNTguNmMyNC4xIDAgNDYuNSAxMiA1OS45IDMybDQ3LjQgNzEuMSAxMC4xIDVWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMySDM4NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY3Ni4ybDEwLjEtNUw0NzMuNSAxNjBjMTMuMy0yMCAzNS44LTMyIDU5LjktMzJjMzIuNCAwIDU4LjYgMjYuMiA1OC42IDU4LjZ2ODguMWMwIDE3LTYuNyAzMy4zLTE4LjcgNDUuM2wtNzkuNCA3OS40LTE0LjMgODUuOWMtMi45IDE3LjQtMTkuNCAyOS4yLTM2LjggMjYuM3MtMjkuMi0xOS40LTI2LjMtMzYuOGwxNS4yLTkwLjljMS42LTkuOSA2LjMtMTkgMTMuNC0yNi4xbDUxLTUxVjI0MS43bC0xOSAyOC41Yy00LjYgNy0xMSAxMi42LTE4LjUgMTYuM2wtNTkuNiAyOS44Yy0yLjQgMS4zLTQuOSAyLjItNy42IDIuOGMtMi42IC42LTUuMyAuOS03LjkgLjhIMjU2LjdjLTIuNSAuMS01LS4yLTcuNS0uN2MtMi45LS42LTUuNi0xLjYtOC4xLTNsLTU5LjUtMjkuOGMtNy41LTMuNy0xMy44LTkuNC0xOC41LTE2LjNsLTE5LTI4LjV6TTIuMyA0NjguMUw1MC4xIDM0OC42bDQ5LjIgNDkuMi0zNy42IDk0Yy02LjYgMTYuNC0yNS4yIDI0LjQtNDEuNiAxNy44Uy00LjMgNDg0LjUgMi4zIDQ2OC4xek01MTIgMGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6bTc3LjkgMzQ4LjZsNDcuOCAxMTkuNWM2LjYgMTYuNC0xLjQgMzUtMTcuOCA0MS42cy0zNS0xLjQtNDEuNi0xNy44bC0zNy42LTk0IDQ5LjItNDkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVvcGxlR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzIgODhhNTYgNTYgMCAxIDEgMTEyIDBBNTYgNTYgMCAxIDEgNzIgODh6TTY0IDI0NS43QzU0IDI1Ni45IDQ4IDI3MS44IDQ4IDI4OHM2IDMxLjEgMTYgNDIuM1YyNDUuN3ptMTQ0LjQtNDkuM0MxNzguNyAyMjIuNyAxNjAgMjYxLjIgMTYwIDMwNGMwIDM0LjMgMTIgNjUuOCAzMiA5MC41VjQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzg5LjJDMjYuMiAzNzEuMiAwIDMzMi43IDAgMjg4YzAtNjEuOSA1MC4xLTExMiAxMTItMTEyaDMyYzI0IDAgNDYuMiA3LjUgNjQuNCAyMC4zek00NDggNDE2VjM5NC41YzIwLTI0LjcgMzItNTYuMiAzMi05MC41YzAtNDIuOC0xOC43LTgxLjMtNDguNC0xMDcuN0M0NDkuOCAxODMuNSA0NzIgMTc2IDQ5NiAxNzZoMzJjNjEuOSAwIDExMiA1MC4xIDExMiAxMTJjMCA0NC43LTI2LjIgODMuMi02NCAxMDEuMlY0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJINDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnptOC0zMjhhNTYgNTYgMCAxIDEgMTEyIDBBNTYgNTYgMCAxIDEgNDU2IDg4ek01NzYgMjQ1Ljd2ODQuN2MxMC0xMS4zIDE2LTI2LjEgMTYtNDIuM3MtNi0zMS4xLTE2LTQyLjN6TTMyMCAzMmE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNMjQwIDMwNGMwIDE2LjIgNiAzMSAxNiA0Mi4zVjI2MS43Yy0xMCAxMS4zLTE2IDI2LjEtMTYgNDIuM3ptMTQ0LTQyLjN2ODQuN2MxMC0xMS4zIDE2LTI2LjEgMTYtNDIuM3MtNi0zMS4xLTE2LTQyLjN6TTQ0OCAzMDRjMCA0NC43LTI2LjIgODMuMi02NCAxMDEuMlY0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMjg4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDUuMmMtMzcuOC0xOC02NC01Ni41LTY0LTEwMS4yYzAtNjEuOSA1MC4xLTExMiAxMTItMTEyaDMyYzYxLjkgMCAxMTIgNTAuMSAxMTIgMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW9wbGVMaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2MCA3MmE0MCA0MCAwIDEgMCAtODAgMCA0MCA0MCAwIDEgMCA4MCAwek0xNDQgMjA4YTQwIDQwIDAgMSAwIDAtODAgNDAgNDAgMCAxIDAgMCA4MHpNMzIgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnpNNDk2IDIwOGE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6TTIwMCAzMTMuNWwyNi45IDQ5LjljNi4zIDExLjcgMjAuOCAxNiAzMi41IDkuOHMxNi0yMC44IDkuOC0zMi41bC0zNi4zLTY3LjVjMS43LTEuNyAzLjItMy42IDQuMy01LjhMMjY0IDIxNy41VjI3MmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg0OGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMTcuNWwyNi45IDQ5LjljMS4yIDIuMiAyLjYgNC4xIDQuMyA1LjhsLTM2LjMgNjcuNWMtNi4zIDExLjctMS45IDI2LjIgOS44IDMyLjVzMjYuMiAxLjkgMzIuNS05LjhMNDQwIDMxMy41VjM1MmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg0OGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMTMuNWwyNi45IDQ5LjljNi4zIDExLjcgMjAuOCAxNiAzMi41IDkuOHMxNi0yMC44IDkuOC0zMi41bC0zNy45LTcwLjNjLTE1LjMtMjguNS00NS4xLTQ2LjMtNzcuNS00Ni4zSDQ4Ni4yYy0xNi4zIDAtMzEuOSA0LjUtNDUuNCAxMi42bC0zMy42LTYyLjNjLTE1LjMtMjguNS00NS4xLTQ2LjMtNzcuNS00Ni4zSDMxMC4yYy0zMi40IDAtNjIuMSAxNy44LTc3LjUgNDYuM2wtMzMuNiA2Mi4zYy0xMy41LTguMS0yOS4xLTEyLjYtNDUuNC0xMi42SDEzNC4yYy0zMi40IDAtNjIuMSAxNy44LTc3LjUgNDYuM0wxOC45IDM0MC42Yy02LjMgMTEuNy0xLjkgMjYuMiA5LjggMzIuNXMyNi4yIDEuOSAzMi41LTkuOEw4OCAzMTMuNVYzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzEzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlb3BsZVB1bGxpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgOTZBNDggNDggMCAxIDAgODAgMGE0OCA0OCAwIDEgMCAwIDk2ek02NCAxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0VjMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMmM5LjggMCAxOC41LTQuNCAyNC40LTExLjJMODAuNCA0ODUuM2MyLjkgMTcuNCAxOS40IDI5LjIgMzYuOCAyNi4zczI5LjItMTkuNCAyNi4zLTM2LjhMMTIzLjEgMzUyaDE1LjdsMzAgMTM0LjljMy44IDE3LjMgMjAuOSAyOC4xIDM4LjIgMjQuM3MyOC4xLTIwLjkgMjQuMy0zOC4ybC01Ny4zLTI1OCAxMTYuMyA1My44Yy41IC4zIDEuMSAuNSAxLjYgLjdjOC42IDMuNiAxOCAzLjEgMjUuOS0uN2MzLjQtMS42IDYuNi0zLjkgOS4zLTYuN2MzLjEtMy4yIDUuNS03IDcuMS0xMS40Yy4xLS4zIC4yLS43IC4zLTFsMi41LTcuNWM1LjctMTcuMSAxOC4zLTMwLjkgMzQuNy0zOC4ybDgtMy41YzEtLjQgMS45LS44IDIuOS0xLjJsLTE2LjkgNjMuNWMtNS42IDIxLjEtLjEgNDMuNiAxNC43IDU5LjdsNzAuNyA3Ny4xIDIyIDg4LjFjNC4zIDE3LjEgMjEuNyAyNy42IDM4LjggMjMuM3MyNy42LTIxLjcgMjMuMy0zOC44bC0yMy05Mi4xYy0xLjktNy44LTUuOC0xNC45LTExLjItMjAuOGwtNDkuNS01NCAxOS4zLTY1LjUgOS42IDIzYzQuNCAxMC42IDEyLjUgMTkuMyAyMi44IDI0LjVsMjYuNyAxMy4zYzE1LjggNy45IDM1IDEuNSA0Mi45LTE0LjNzMS41LTM1LTE0LjMtNDIuOUw1MzcgMjMyLjdsLTE1LjMtMzYuOEM1MDQuNSAxNTQuOCA0NjQuMyAxMjggNDE5LjcgMTI4Yy0yMi44IDAtNDUuMyA0LjgtNjYuMSAxNGwtOCAzLjVjLTI0LjQgMTAuOS00NC42IDI5LTU4LjEgNTEuNkwxNTcuMyAxMzYuOUMxNDQuNyAxMzEgMTMwLjkgMTI4IDExNyAxMjhINjR6TTQ2NCA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTM0OS43IDMzNS42bC0yNSA2Mi40LTU5LjQgNTkuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwzNzIuMyA0NDFjNC42LTQuNiA4LjItMTAuMSAxMC42LTE2LjFsMTQuNS0zNi4yLTQwLjctNDQuNGMtMi41LTIuNy00LjgtNS42LTctOC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW9wbGVSb2JiZXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OC4yIDU5LjFDNDc4LjEgOTkuNiA0NDEuNyAxMjggNDAwIDEyOHMtNzguMS0yOC40LTg4LjItNjguOUwzMDMgMjQuMkMyOTguOCA3LjEgMjgxLjQtMy4zIDI2NC4yIDFTMjM2LjcgMjIuNiAyNDEgMzkuOGw4LjcgMzQuOWMxMSA0NCA0MC4yIDc5LjYgNzguMyA5OS42VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM1MmgxNlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxNzQuM2MzOC4xLTIwIDY3LjMtNTUuNiA3OC4zLTk5LjZMNTU5IDM5LjhjNC4zLTE3LjEtNi4xLTM0LjUtMjMuMy0zOC44UzUwMS4yIDcuMSA0OTcgMjQuMmwtOC43IDM0Ljl6TTQwMCA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTgwIDk2QTQ4IDQ4IDAgMSAwIDgwIDBhNDggNDggMCAxIDAgMCA5NnptLTggMzJjLTM1LjMgMC02NCAyOC43LTY0IDY0djk2bDAgLjZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzUySDg4VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI1Mi43bDEzIDIwLjVjNS45IDkuMiAxNi4xIDE0LjkgMjcgMTQuOWg0OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyMDkuNmwtMzcuNC01OC45QzE1Ny42IDE0MiAxMzIuMSAxMjggMTA0LjcgMTI4SDcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW9wbGVSb29mIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNS41IDRsMjg4IDE2MGMxNS40IDguNiAyMSAyOC4xIDEyLjQgNDMuNXMtMjguMSAyMS00My41IDEyLjRMMzIwIDY4LjYgNDcuNSAyMjBjLTE1LjQgOC42LTM0LjkgMy00My41LTEyLjRzLTMtMzQuOSAxMi40LTQzLjVMMzA0LjUgNGM5LjctNS40IDIxLjQtNS40IDMxLjEgMHpNMzIwIDE2MGE0MCA0MCAwIDEgMSAwIDgwIDQwIDQwIDAgMSAxIDAtODB6TTE0NCAyNTZhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgwem0zMTIgNDBhNDAgNDAgMCAxIDEgODAgMCA0MCA0MCAwIDEgMSAtODAgMHpNMjI2LjkgNDkxLjRMMjAwIDQ0MS41VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQ0MS41TDYxLjEgNDkxLjRjLTYuMyAxMS43LTIwLjggMTYtMzIuNSA5LjhzLTE2LTIwLjgtOS44LTMyLjVsMzcuOS03MC4zYzE1LjMtMjguNSA0NS4xLTQ2LjMgNzcuNS00Ni4zaDE5LjVjMTYuMyAwIDMxLjkgNC41IDQ1LjQgMTIuNmwzMy42LTYyLjNjMTUuMy0yOC41IDQ1LjEtNDYuMyA3Ny41LTQ2LjNoMTkuNWMzMi40IDAgNjIuMSAxNy44IDc3LjUgNDYuM2wzMy42IDYyLjNjMTMuNS04LjEgMjkuMS0xMi42IDQ1LjQtMTIuNmgxOS41YzMyLjQgMCA2Mi4xIDE3LjggNzcuNSA0Ni4zbDM3LjkgNzAuM2M2LjMgMTEuNyAxLjkgMjYuMi05LjggMzIuNXMtMjYuMiAxLjktMzIuNS05LjhMNTUyIDQ0MS41VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0NzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQ0MS41bC0yNi45IDQ5LjljLTYuMyAxMS43LTIwLjggMTYtMzIuNSA5LjhzLTE2LTIwLjgtOS44LTMyLjVsMzYuMy02Ny41Yy0xLjctMS43LTMuMi0zLjYtNC4zLTUuOEwzNzYgMzQ1LjVWNDAwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDI5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzQ1LjVsLTI2LjkgNDkuOWMtMS4yIDIuMi0yLjYgNC4xLTQuMyA1LjhsMzYuMyA2Ny41YzYuMyAxMS43IDEuOSAyNi4yLTkuOCAzMi41cy0yNi4yIDEuOS0zMi41LTkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVwcGVySG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyOC4zIDNjMTEuNi02LjQgMjYuMi0yLjMgMzIuNiA5LjNsNC44IDguN2MxOS4zIDM0LjcgMTkuOCA3NS43IDMuNCAxMTBDNDk1LjggMTU5LjYgNTEyIDE5Ny45IDUxMiAyNDBjMCAxOC41LTMuMSAzNi4zLTguOSA1Mi44Yy02LjEgMTcuMy0yOC41IDE2LjMtMzYuOC0uMWwtMTEuNy0yMy40Yy00LjEtOC4xLTEyLjQtMTMuMy0yMS41LTEzLjNIMzYwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYxNTJjMC0xMy4zLTEwLjctMjQtMjQtMjRsLTE3LjEgMGMtMjEuMyAwLTMwLTIzLjktMTAuOC0zMi45QzMwNC43IDg1LjQgMzI3LjcgODAgMzUyIDgwYzI4LjMgMCA1NC44IDcuMyA3Ny44IDIwLjJjNS41LTE4LjIgMy43LTM4LjQtNi01NS44TDQxOSAzNS43Yy02LjQtMTEuNi0yLjMtMjYuMiA5LjMtMzIuNnpNMTcxLjIgMzQ1LjVMMjY0IDE2MGw0MCAwdjgwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDc2LjJsMjMuOSA0Ny44QzM3Mi4zIDQ0My45IDI0NC4zIDUxMiAxMDMuMiA1MTJINDQuNEMxOS45IDUxMiAwIDQ5Mi4xIDAgNDY3LjZjMC0yMC44IDE0LjUtMzguOCAzNC44LTQzLjNsNDkuOC0xMS4xYzM3LjYtOC40IDY5LjUtMzMuMiA4Ni43LTY3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcmNlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc0LjYgMTE4LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTMyMCAzMjBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsMzIwLTMyMHpNMTI4IDEyOEE2NCA2NCAwIDEgMCAwIDEyOGE2NCA2NCAwIDEgMCAxMjggMHpNMzg0IDM4NGE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkFycm93RG93blRvTGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tOCAzNTJWMzUyaDE2djk2SDE4NHptLTY0IDBIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMTUyaDgwSDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNjRWMjU2LjlsMjguNiA0Ny41YzkuMSAxNS4xIDI4LjggMjAgNDMuOSAxMC45czIwLTI4LjggMTAuOS00My45bC01OC4zLTk3Yy0xNy40LTI4LjktNDguNi00Ni42LTgyLjMtNDYuNkgxNzcuMWMtMzMuNyAwLTY0LjkgMTcuNy04Mi4zIDQ2LjZsLTU4LjMgOTdjLTkuMSAxNS4xLTQuMiAzNC44IDEwLjkgNDMuOXMzNC44IDQuMiA0My45LTEwLjlMMTIwIDI1Ni45VjQ0OHpNNDY0IDY0VjMwNi43bC0yNS40LTI1LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDgwIDgwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDgwLTgwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDUyOCAzMDYuN1Y2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uQXJyb3dVcEZyb21MaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS04IDM1MlYzNTJoMTZ2OTZIMTg0em0tNjQgMEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgxNTJoODBINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI2NFYyNTYuOWwyOC42IDQ3LjVjOS4xIDE1LjEgMjguOCAyMCA0My45IDEwLjlzMjAtMjguOCAxMC45LTQzLjlsLTU4LjMtOTdjLTE3LjQtMjguOS00OC42LTQ2LjYtODIuMy00Ni42SDE3Ny4xYy0zMy43IDAtNjQuOSAxNy43LTgyLjMgNDYuNmwtNTguMyA5N2MtOS4xIDE1LjEtNC4yIDM0LjggMTAuOSA0My45czM0LjggNC4yIDQzLjktMTAuOUwxMjAgMjU2LjlWNDQ4ek01OTguNiAxMjEuNGwtODAtODBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC04MCA4MGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEw0NjQgMTQxLjMgNDY0IDM4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE0MS4zbDI1LjQgMjUuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25CaWtpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptMjcuMiA2NGwtNjEuOC00OC44Yy0xNy4zLTEzLjYtNDEuNy0xMy44LTU5LjEtLjNsLTgzLjEgNjQuMmMtMzAuNyAyMy44LTI4LjUgNzAuOCA0LjMgOTEuNkwyODggMzA1LjFWNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjg4YzAtMTAuNy01LjMtMjAuNy0xNC4yLTI2LjZMMjk1IDIzMi45bDYwLjMtNDguNUwzOTYgMjE3YzUuNyA0LjUgMTIuNyA3IDIwIDdoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDI3LjJ6TTU2IDM4NGE3MiA3MiAwIDEgMSAxNDQgMEE3MiA3MiAwIDEgMSA1NiAzODR6bTIwMCAwQTEyOCAxMjggMCAxIDAgMCAzODRhMTI4IDEyOCAwIDEgMCAyNTYgMHptMTg0IDBhNzIgNzIgMCAxIDEgMTQ0IDAgNzIgNzIgMCAxIDEgLTE0NCAwem0yMDAgMGExMjggMTI4IDAgMSAwIC0yNTYgMCAxMjggMTI4IDAgMSAwIDI1NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25Cb290aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMTkyaDY0VjMyem0zMjAgMGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMnpNMjI0IDUxMmMxNy43IDAgMzItMTQuMyAzMi0zMlYzMjBIMTkyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnpNMzIwIDBjLTkuMyAwLTE4LjEgNC0yNC4yIDExcy04LjggMTYuMy03LjUgMjUuNWwzMS4yIDIxOC42TDI4OC42IDQwOS43Yy0zLjUgMTcuMyA3LjggMzQuMiAyNS4xIDM3LjdzMzQuMi03LjggMzcuNy0yNS4xbC43LTMuNmMxLjMgMTYuNCAxNS4xIDI5LjQgMzEuOSAyOS40YzE3LjcgMCAzMi0xNC4zIDMyLTMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMzIwek0xMTIgODBBNDggNDggMCAxIDAgMTYgODBhNDggNDggMCAxIDAgOTYgMHptMCAyNjEuM1YyNjkuM2w0LjcgNC43YzkgOSAyMS4yIDE0LjEgMzMuOSAxNC4xSDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxNTcuM2wtNDEuNi00MS42Yy0xNC4zLTE0LjMtMzMuOC0yMi40LTU0LTIyLjRDMjcuNiAxNjAgMCAxODcuNiAwIDIyMS42djU1LjdsMCAuOVY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzODRsMzIgNDIuN1Y0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0MjEuM2MwLTEwLjQtMy40LTIwLjUtOS42LTI4LjhMMTEyIDM0MS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25CcmVhc3RmZWVkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYTgwIDgwIDAgMSAxIDAgMTYwQTgwIDgwIDAgMSAxIDIyNCAwek00MzYuOCAzODIuOEwzNzMuNSA0NjJjLTE2LjYgMjAuNy00Ni44IDI0LjEtNjcuNSA3LjVjLTE3LjYtMTQuMS0yMi43LTM4LjEtMTMuNS01Ny43bC0uOC0uMWMtMzguOS01LjYtNzQuMy0yNS4xLTk5LjctNTQuOFYzMjBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NDhjMCAuOCAwIDEuNiAuMSAyLjRsMTAxLjQgNTAuN2MyMy43IDExLjkgMzMuMyA0MC43IDIxLjUgNjQuNHMtNDAuNyAzMy4zLTY0LjQgMjEuNUwyNy4yIDQyNy4zYy0xLjEtLjUtMi4yLTEuMS0zLjMtMS43Yy00LjktMi44LTkuMi02LjQtMTIuNi0xMC42Yy00LjYtNS40LTcuOC0xMS43LTkuNi0xOC40Yy0zLjMtMTItMS45LTI1LjIgNC44LTM2LjZjLjYtMS4xIDEuMy0yLjIgMi0zLjJMNzUuNiAyNTYuMWMyNi43LTQwLjEgNzEuNy02NC4xIDExOS44LTY0LjFoNzUuMmM0Ni41IDAgOTAuMSAyMi41IDExNy4yIDYwLjNsNTAuNyA3MC45YzIuMiAzIDQgNi4xIDUuNSA5LjRjMi45IDYuNyA0LjMgMTMuOCA0IDIwLjhjLS4zIDEwLjYtNC4yIDIxLTExLjIgMjkuNHpNMzIwIDMzMmE0NCA0NCAwIDEgMCAtODggMCA0NCA0NCAwIDEgMCA4OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25CdXJzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tOCAzODRWMzUyaDE2VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI1Ni45bDI4LjYgNDcuNWM5LjEgMTUuMSAyOC44IDIwIDQzLjkgMTAuOXMyMC0yOC44IDEwLjktNDMuOWwtNTguMy05N2MtMTcuNC0yOC45LTQ4LjYtNDYuNi04Mi4zLTQ2LjZINDY1LjFjLTMzLjcgMC02NC45IDE3LjctODIuMyA0Ni42bC01OC4zIDk3Yy05LjEgMTUuMS00LjIgMzQuOCAxMC45IDQzLjlzMzQuOCA0LjIgNDMuOS0xMC45TDQwOCAyNTYuOVY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMnpNMTkwLjkgMTguMUMxODguNCAxMiAxODIuNiA4IDE3NiA4cy0xMi40IDQtMTQuOSAxMC4xbC0yOS40IDc0TDU1LjYgNjguOWMtNi4zLTEuOS0xMy4xIC4yLTE3LjIgNS4zcy00LjYgMTIuMi0xLjQgMTcuOWwzOS41IDY5LjFMMTAuOSAyMDYuNGMtNS40IDMuNy04IDEwLjMtNi41IDE2LjdzNi43IDExLjIgMTMuMSAxMi4ybDc4LjcgMTIuMkw5MC42IDMyN2MtLjUgNi41IDMuMSAxMi43IDkgMTUuNXMxMi45IDEuOCAxNy44LTIuNkwxNzYgMjg2LjFsNTguNiA1My45YzQuOCA0LjQgMTEuOSA1LjUgMTcuOCAyLjZzOS41LTkgOS0xNS41bC01LjYtNzkuNCA1MC41LTcuOCAyNC4zLTQwLjUtNTUuMi0zOEwzMTUgOTIuMmMzLjMtNS43IDIuNy0xMi44LTEuNC0xNy45cy0xMC45LTcuMi0xNy4yLTUuM0wyMjAuMyA5Mi4xbC0yOS40LTc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25DYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiA0OGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwem0tOCAxODcuM2w0Ny40IDU3LjFjMTEuMyAxMy42IDMxLjUgMTUuNSA0NS4xIDQuMnMxNS41LTMxLjUgNC4yLTQ1LjFsLTczLjctODguOWMtMTguMi0yMi00NS4zLTM0LjctNzMuOS0zNC43SDE3Ny4xYy0zMy43IDAtNjQuOSAxNy43LTgyLjMgNDYuNmwtNTguMyA5N2MtOS4xIDE1LjEtNC4yIDM0LjggMTAuOSA0My45czM0LjggNC4yIDQzLjktMTAuOUwxMjAgMjU2LjlWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzUyaDE2VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjIzNS4zek0zNTIgMzc2YzAtNC40IDMuNi04IDgtOHM4IDMuNiA4IDhWNDg4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMzc2YzAtMzAuOS0yNS4xLTU2LTU2LTU2cy01NiAyNS4xLTU2IDU2djhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNHYtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uQ2hhbGtib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tOCAzODRWMzUyaDE2VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE5Mmg1NiA2NCAxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzODRWNjRINTc2VjI1NkgzODRWMjI0SDMyMHY0OGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg1OTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzY4Yy0yNi41IDAtNDggMjEuNS00OCA0OHY4MEgyNDMuMSAxNzcuMWMtMzMuNyAwLTY0LjkgMTcuNy04Mi4zIDQ2LjZsLTU4LjMgOTdjLTkuMSAxNS4xLTQuMiAzNC44IDEwLjkgNDMuOXMzNC44IDQuMiA0My45LTEwLjlMMTIwIDI1Ni45VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25DaXJjbGVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptNDAgMzA0VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyNTYuOUw1OS40IDMwNC41Yy05LjEgMTUuMS0yOC44IDIwLTQzLjkgMTAuOXMtMjAtMjguOC0xMC45LTQzLjlsNTguMy05N2MxNy40LTI4LjkgNDguNi00Ni42IDgyLjMtNDYuNmgyOS43YzMzLjcgMCA2NC45IDE3LjcgODIuMyA0Ni42bDQ0LjkgNzQuN2MtMTYuMSAxNy42LTI4LjYgMzguNS0zNi42IDYxLjVjLTEuOS0xLjgtMy41LTMuOS00LjktNi4zTDIzMiAyNTYuOVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUySDE1MnptMTM2IDE2YTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTIxMS4zLTQzLjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDQxNiAzODUuNGwtMjguNy0yOC43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDQwIDQwYzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDcyLTcyYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25DaXJjbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptNDAgMzA0VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyNTYuOUw1OS40IDMwNC41Yy05LjEgMTUuMS0yOC44IDIwLTQzLjkgMTAuOXMtMjAtMjguOC0xMC45LTQzLjlsNTguMy05N2MxNy40LTI4LjkgNDguNi00Ni42IDgyLjMtNDYuNmgyOS43YzMzLjcgMCA2NC45IDE3LjcgODIuMyA0Ni42bDQ0LjkgNzQuN2MtMTYuMSAxNy42LTI4LjYgMzguNS0zNi42IDYxLjVjLTEuOS0xLjgtMy41LTMuOS00LjktNi4zTDIzMiAyNTYuOVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUySDE1MnpNNDMyIDIyNGExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTAgMjQwYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMC0xOTJjLTguOCAwLTE2IDcuMi0xNiAxNnY4MGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjI4OGMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkNpcmNsZU1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI1Ni45TDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE3LjQtMjguOSA0OC42LTQ2LjYgODIuMy00Ni42aDI5LjdjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNDQuOSA3NC43Yy0xNi4xIDE3LjYtMjguNiAzOC41LTM2LjYgNjEuNWMtMS45LTEuOC0zLjUtMy45LTQuOS02LjNMMjMyIDI1Ni45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJIMTUyem0xMzYgMTZhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMjI0IDBjMC04LjgtNy4yLTE2LTE2LTE2SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg0OTZjOC44IDAgMTYtNy4yIDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25DaXJjbGVQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI1Ni45TDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE3LjQtMjguOSA0OC42LTQ2LjYgODIuMy00Ni42aDI5LjdjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNDQuOSA3NC43Yy0xNi4xIDE3LjYtMjguNiAzOC41LTM2LjYgNjEuNWMtMS45LTEuOC0zLjUtMy45LTQuOS02LjNMMjMyIDI1Ni45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJIMTUyek00MzIgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMTYgODBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2NDhIMzY4Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDQ4djQ4YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzg0aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDQ0OFYzMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkNpcmNsZVF1ZXN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI1Ni45TDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE3LjQtMjguOSA0OC42LTQ2LjYgODIuMy00Ni42aDI5LjdjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNDQuOSA3NC43Yy0xNi4xIDE3LjYtMjguNiAzOC41LTM2LjYgNjEuNWMtMS45LTEuOC0zLjUtMy45LTQuOS02LjNMMjMyIDI1Ni45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJIMTUyek00MzIgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMCAyNDBhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4ek0zNjggMzIxLjZWMzI4YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZ2LTYuNGMwLTUuMyA0LjMtOS42IDkuNi05LjZoNDAuNWM3LjcgMCAxMy45IDYuMiAxMy45IDEzLjljMCA1LjItMi45IDkuOS03LjQgMTIuM2wtMzIgMTYuOGMtNS4zIDIuOC04LjYgOC4yLTguNiAxNC4yVjM4NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2di01LjFsMjMuNS0xMi4zYzE1LjEtNy45IDI0LjUtMjMuNiAyNC41LTQwLjZjMC0yNS40LTIwLjYtNDUuOS00NS45LTQ1LjlINDA5LjZjLTIzIDAtNDEuNiAxOC42LTQxLjYgNDEuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTQwIDMwNFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjU2LjlMNTkuNCAzMDQuNWMtOS4xIDE1LjEtMjguOCAyMC00My45IDEwLjlzLTIwLTI4LjgtMTAuOS00My45bDU4LjMtOTdjMTcuNC0yOC45IDQ4LjYtNDYuNiA4Mi4zLTQ2LjZoMjkuN2MzMy43IDAgNjQuOSAxNy43IDgyLjMgNDYuNmw0NC45IDc0LjdjLTE2LjEgMTcuNi0yOC42IDM4LjUtMzYuNiA2MS41Yy0xLjktMS44LTMuNS0zLjktNC45LTYuM0wyMzIgMjU2LjlWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkgxNTJ6TTQzMiAyMjRhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em01OS4zIDEwNy4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBMNDMyIDM0NS40bC0zNi43LTM2LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZMNDA5LjQgMzY4bC0zNi43IDM2LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMEw0MzIgMzkwLjZsMzYuNyAzNi43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkw0NTQuNiAzNjhsMzYuNy0zNi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25EaWdnaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCA2NGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwek05LjggMjE0LjhjNS4xLTEyLjIgMTkuMS0xOCAzMS40LTEyLjlMNjAuNyAyMTBsMjIuOS0zOC4xQzk5LjkgMTQ0LjYgMTI5LjMgMTI4IDE2MSAxMjhjNTEuNCAwIDk3IDMyLjkgMTEzLjMgODEuN2wzNC42IDEwMy43IDc5LjMgMzMuMSAzNC4yLTQ1LjZjNi40LTguNSAxNi42LTEzLjMgMjcuMi0xMi44czIwLjMgNi40IDI1LjggMTUuNWw5NiAxNjBjNS45IDkuOSA2LjEgMjIuMiAuNCAzMi4ycy0xNi4zIDE2LjItMjcuOCAxNi4ySDI4OGMtMTEuMSAwLTIxLjQtNS43LTI3LjItMTUuMnMtNi40LTIxLjItMS40LTMxLjFsMTYtMzJjNS40LTEwLjggMTYuNS0xNy43IDI4LjYtMTcuN2gzMmwyMi41LTMwTDIyLjggMjQ2LjJjLTEyLjItNS4xLTE4LTE5LjEtMTIuOS0zMS40em04Mi44IDkxLjhsMTEyIDQ4YzExLjggNSAxOS40IDE2LjYgMTkuNCAyOS40djk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQwNS4xbC02MC42LTI2LTM3IDExMWMtNS42IDE2LjgtMjMuNyAyNS44LTQwLjUgMjAuMlMtMy45IDQ4Ni42IDEuNiA0NjkuOWw0OC0xNDQgMTEtMzMgMzIgMTMuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uRG90c0Zyb21MaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxNzZBODggODggMCAxIDAgMjg4IDBhODggODggMCAxIDAgMCAxNzZ6TTc4LjcgMzcyLjljMTUtMTIuNSA1MC0zNC40IDk3LjMtNTAuMVY0MzJINDAwVjMyMi43YzQ3LjMgMTUuOCA4Mi4zIDM3LjcgOTcuMyA1MC4xYzIwLjQgMTcgNTAuNiAxNC4yIDY3LjYtNi4xczE0LjItNTAuNi02LjEtNjcuNmMtMTItMTAtMzAuMS0yMi41LTUzLjItMzVDNDk3LjIgMjc4LjQgNDgxLjcgMjg4IDQ2NCAyODhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4YzAtNC4zIC42LTguNCAxLjYtMTIuNEMzNzkuMSAyMTUuOSAzMzUuMyAyMDggMjg4IDIwOGMtNjAuMiAwLTExNC45IDEyLjktMTYwIDI5LjljMCAuNyAwIDEuNCAwIDIuMWMwIDI2LjUtMjEuNSA0OC00OCA0OGMtMTEuOCAwLTIyLjctNC4zLTMxLTExLjRjLTEzLjEgOC4xLTIzLjcgMTUuOS0zMS43IDIyLjVjLTIwLjQgMTctMjMuMSA0Ny4yLTYuMSA2Ny42czQ3LjIgMjMuMSA2Ny42IDYuMXpNMjQgNDY0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDU1MmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyNHpNMjI0IDI4MGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwem0xMDQgNTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4ek05NiAyNDBhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptMzY4IDE2YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uRHJlc3NCdXJzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjggNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMzkwLjIgMzg0SDQwOHY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGgxNnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGgxNy44YzEwLjkgMCAxOC42LTEwLjcgMTUuMi0yMS4xTDU0Ni43IDI0OC4xbDMzLjkgNTYuM2M5LjEgMTUuMSAyOC44IDIwIDQzLjkgMTAuOXMyMC0yOC44IDEwLjktNDMuOWwtNTMuNi04OS4yYy0yMC4yLTMzLjctNTYuNy01NC4zLTk2LTU0LjNINDc0LjJjLTM5LjMgMC03NS43IDIwLjYtOTYgNTQuM2wtNTMuNiA4OS4yYy05LjEgMTUuMS00LjIgMzQuOCAxMC45IDQzLjlzMzQuOCA0LjIgNDMuOS0xMC45bDMzLjktNTYuM0wzNzUgMzYyLjljLTMuNSAxMC40IDQuMyAyMS4xIDE1LjIgMjEuMXpNMTkwLjkgMTguMUMxODguNCAxMiAxODIuNiA4IDE3NiA4cy0xMi40IDQtMTQuOSAxMC4xbC0yOS40IDc0TDU1LjYgNjguOWMtNi4zLTEuOS0xMy4xIC4yLTE3LjIgNS4zcy00LjYgMTIuMi0xLjQgMTcuOWwzOS41IDY5LjFMMTAuOSAyMDYuNGMtNS40IDMuNy04IDEwLjMtNi41IDE2LjdzNi43IDExLjIgMTMuMSAxMi4ybDc4LjcgMTIuMkw5MC42IDMyN2MtLjUgNi41IDMuMSAxMi43IDkgMTUuNXMxMi45IDEuOCAxNy44LTIuNkwxNzYgMjg2LjFsNTguNiA1My45YzQuOCA0LjQgMTEuOSA1LjUgMTcuOCAyLjZzOS41LTkgOS0xNS41bC01LjYtNzkuNCA1MC41LTcuOCAyNC40LTQwLjUtNTUuMi0zOEwzMTUgOTIuMmMzLjMtNS43IDIuNy0xMi44LTEuNC0xNy45cy0xMC45LTcuMi0xNy4yLTUuM0wyMjAuMyA5Mi4xbC0yOS40LTc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25EcmVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6TTg4IDM4NEg3MC4yYy0xMC45IDAtMTguNi0xMC43LTE1LjItMjEuMUw5My4zIDI0OC4xIDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1My42LTg5LjJjMjAuMy0zMy43IDU2LjctNTQuMyA5Ni01NC4zaDExLjZjMzkuMyAwIDc1LjcgMjAuNiA5NiA1NC4zbDUzLjYgODkuMmM5LjEgMTUuMSA0LjIgMzQuOC0xMC45IDQzLjlzLTM0LjggNC4yLTQzLjktMTAuOWwtMzMuOS01Ni4zTDI2NSAzNjIuOWMzLjUgMTAuNC00LjMgMjEuMS0xNS4yIDIxLjFIMjMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM4NEgxNTJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25Ecm93bmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWOTYuMmMwIDU0LjEgMjMuNSAxMDQgNjIuMiAxMzguM2wtMjEgMTQ2LjdjNy44IDIuMSAxNS41IDMuMyAyMi44IDMuM2MyMS4xIDAgNDItOC41IDU5LjItMjAuM2MyMi4xLTE1LjUgNTEuNi0xNS41IDczLjcgMGMxMi40IDguNSAyNi4xIDE0LjggMzkuNyAxOGwxNy43LTk3LjZjMTAuNy0xLjIgMjEuMy0zLjEgMzEuOS01LjVsMTA1LTIzLjljMTcuMi0zLjkgMjgtMjEuMSAyNC4xLTM4LjNzLTIxLjEtMjgtMzguMy0yNC4xTDQwMCAyMTYuNmMtNDEgOS4zLTgzLjcgNy41LTEyMy43LTUuMmMtNTAuMi0xNi04NC4zLTYyLjYtODQuMy0xMTUuM1Y2NHpNMzIwIDE5MmE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHpNMzA2LjUgMzg5LjljLTExLjEtNy45LTI1LjktNy45LTM3IDBDMjQ3IDQwNS40IDIxOS41IDQxNiAxOTIgNDE2Yy0yNi45IDAtNTUuMy0xMC44LTc3LjQtMjYuMWwwIDBjLTExLjktOC41LTI4LjEtNy44LTM5LjIgMS43Yy0xNC40IDExLjktMzIuNSAyMS01MC42IDI1LjJjLTE3LjIgNC0yNy45IDIxLjItMjMuOSAzOC40czIxLjIgMjcuOSAzOC40IDIzLjljMjQuNS01LjcgNDQuOS0xNi41IDU4LjItMjVDMTI2LjUgNDY5LjcgMTU5IDQ4MCAxOTIgNDgwYzMxLjkgMCA2MC42LTkuOSA4MC40LTE4LjljNS44LTIuNyAxMS4xLTUuMyAxNS42LTcuN2M0LjUgMi40IDkuNyA1LjEgMTUuNiA3LjdjMTkuOCA5IDQ4LjUgMTguOSA4MC40IDE4LjljMzMgMCA2NS41LTEwLjMgOTQuNS0yNS44YzEzLjQgOC40IDMzLjcgMTkuMyA1OC4yIDI1YzE3LjIgNCAzNC40LTYuNyAzOC40LTIzLjlzLTYuNy0zNC40LTIzLjktMzguNGMtMTguMS00LjItMzYuMi0xMy4zLTUwLjYtMjUuMmMtMTEuMS05LjQtMjcuMy0xMC4xLTM5LjItMS43bDAgMEM0MzkuNCA0MDUuMiA0MTAuOSA0MTYgMzg0IDQxNmMtMjcuNSAwLTU1LTEwLjYtNzcuNS0yNi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25GYWxsaW5nQnVyc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgOS44YzAgMzktMjMuNyA3NC01OS45IDg4LjRDNzEuNiAxNTQuNSAzMiAyMTMgMzIgMjc4LjJWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC03My44YzAtMTAgMS42LTE5LjggNC41LTI5TDI2MS4xIDQ5Ny40YzkuNiAxNC44IDI5LjQgMTkuMSA0NC4zIDkuNXMxOS4xLTI5LjQgOS41LTQ0LjNMMjIyLjYgMzIwSDIyNGw4MCAwIDM4LjQgNTEuMmMxMC42IDE0LjEgMzAuNyAxNyA0NC44IDYuNHMxNy0zMC43IDYuNC00NC44bC00My4yLTU3LjZDMzQxLjMgMjYzLjEgMzI3LjEgMjU2IDMxMiAyNTZsLTcxLjUgMC01Ni44LTgwLjItLjItLjNjNDQuNy0yOSA3Mi41LTc5IDcyLjUtMTMzLjZsMC05Ljh6TTk2IDgwQTQ4IDQ4IDAgMSAwIDAgODBhNDggNDggMCAxIDAgOTYgMHpNNDY0IDI4Ni4xbDU4LjYgNTMuOWM0LjggNC40IDExLjkgNS41IDE3LjggMi42czkuNS05IDktMTUuNWwtNS42LTc5LjQgNzguNy0xMi4yYzYuNS0xIDExLjctNS45IDEzLjEtMTIuMnMtMS4xLTEzLTYuNS0xNi43bC02NS42LTQ1LjFMNjAzIDkyLjJjMy4zLTUuNyAyLjctMTIuOC0xLjQtMTcuOXMtMTAuOS03LjItMTcuMi01LjNMNTA4LjMgOTIuMWwtMjkuNC03NEM0NzYuNCAxMiA0NzAuNiA4IDQ2NCA4cy0xMi40IDQtMTQuOSAxMC4xbC0yOS40IDc0TDM0My42IDY4LjljLTYuMy0xLjktMTMuMSAuMi0xNy4yIDUuM3MtNC42IDEyLjItMS40IDE3LjlsMzkuNSA2OS4xLTY1LjYgNDUuMWMtNS40IDMuNy04IDEwLjMtNi41IDE2LjdjLjEgLjMgLjEgLjYgLjIgLjhsMTkuNCAwYzIwLjEgMCAzOS4yIDcuNSA1My44IDIwLjhsMTguNCAyLjlMMzgzIDI2NS4zbDM2LjIgNDguM2MyLjEgMi44IDMuOSA1LjcgNS41IDguNkw0NjQgMjg2LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbkZhbGxpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5LjhjMCA1NC42LTI3LjkgMTA0LjYtNzIuNSAxMzMuNmwuMiAuM0wzMDQuNSAyNTZsODcuNSAwYzE1LjEgMCAyOS4zIDcuMSAzOC40IDE5LjJsNDMuMiA1Ny42YzEwLjYgMTQuMSA3LjcgMzQuMi02LjQgNDQuOHMtMzQuMiA3LjctNDQuOC02LjRMMzg0IDMyMGwtOTYgMGgtMS40bDkyLjMgMTQyLjZjOS42IDE0LjggNS40IDM0LjYtOS41IDQ0LjNzLTM0LjYgNS40LTQ0LjMtOS41TDE2NC41IDI0OS4yYy0yLjkgOS4yLTQuNSAxOS00LjUgMjlsMCA3My44YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI3OC4yYzAtNjUuMSAzOS42LTEyMy43IDEwMC4xLTE0Ny45QzIzMi4zIDExNS44IDI1NiA4MC44IDI1NiA0MS44bDAtOS44YzAtMTcuNyAxNC4zLTMyIDMyLTMyek0xMTIgMzJhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25IYWxmRHJlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDBhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2em04IDM1MlYxMjhoNi45YzMzLjcgMCA2NC45IDE3LjcgODIuMyA0Ni42bDU4LjMgOTdjOS4xIDE1LjEgNC4yIDM0LjgtMTAuOSA0My45cy0zNC44IDQuMi00My45LTEwLjlMMjMyIDI1Ni45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJoMHpNNTguMiAxODIuM2MxOS45LTMzLjEgNTUuMy01My41IDkzLjgtNTQuM1YzODRoMHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzODRINzAuMmMtMTAuOSAwLTE4LjYtMTAuNy0xNS4yLTIxLjFMOTMuMyAyNDguMSA1OS40IDMwNC41Yy05LjEgMTUuMS0yOC44IDIwLTQzLjkgMTAuOXMtMjAtMjguOC0xMC45LTQzLjlsNTMuNi04OS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25IYXJhc3NpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNNTkuNCAzMDQuNUw4OCAyNTYuOVY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzNTJoMTZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjM1LjNsNDcuNCA1Ny4xYzExLjMgMTMuNiAzMS41IDE1LjUgNDUuMSA0LjJzMTUuNS0zMS41IDQuMi00NS4xbC03My43LTg4LjljLTE4LjItMjItNDUuMy0zNC43LTczLjktMzQuN0gxNDUuMWMtMzMuNyAwLTY0LjkgMTcuNy04Mi4zIDQ2LjZsLTU4LjMgOTdjLTkuMSAxNS4xLTQuMiAzNC44IDEwLjkgNDMuOXMzNC44IDQuMiA0My45LTEwLjl6TTQ4MCAyNDBhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNNDY0IDM0NHY1OC43bC00MS40LTQxLjRjLTcuMy03LjMtMTcuNi0xMC42LTI3LjgtOXMtMTguOSA4LjEtMjMuNSAxNy4zbC00OCA5NmMtNy45IDE1LjgtMS41IDM1IDE0LjMgNDIuOXMzNSAxLjUgNDIuOS0xNC4zTDQwOC44IDQzOGw1NC43IDU0LjdjMTIuNCAxMi40IDI5LjEgMTkuMyA0Ni42IDE5LjNjMzYuNCAwIDY1LjktMjkuNSA2NS45LTY1LjlWMzQ0YzAtMzAuOS0yNS4xLTU2LTU2LTU2cy01NiAyNS4xLTU2IDU2ek0yODggNDhjMCA4LjggNy4yIDE2IDE2IDE2aDU2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDMwNGMtOC44IDAtMTYgNy4yLTE2IDE2em0tLjggNDkuN2MtNy45LTQtMTcuNS0uNy0yMS41IDcuMnMtLjcgMTcuNSA3LjIgMjEuNWw0OCAyNGM3LjkgNCAxNy41IC43IDIxLjUtNy4ycy43LTE3LjUtNy4yLTIxLjVsLTQ4LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25IaWtpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTUxLjMgMTgyLjdMMjI0LjIgMzA3bDQ5LjcgNDkuN2M5IDkgMTQuMSAyMS4yIDE0LjEgMzMuOVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzk3LjNsLTczLjktNzMuOWMtMTUuOC0xNS44LTIyLjItMzguNi0xNi45LTYwLjNsMjAuNC04NGM4LjMtMzQuMSA0Mi43LTU0LjkgNzYuNy00Ni40YzE5IDQuOCAzNS42IDE2LjQgNDYuNCAzMi43TDMwNS4xIDIwOEgzMzZWMTg0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2NTUuOGMwIC4xIDAgLjIgMCAuMnMwIC4yIDAgLjJWNDg4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjI3MkgyOTYuNmMtMTYgMC0zMS04LTM5LjktMjEuNGwtMTMuMy0yMHpNODEuMSA0NzEuOUwxMTcuMyAzMzRjMyA0LjIgNi40IDguMiAxMC4xIDExLjlsNDEuOSA0MS45TDE0Mi45IDQ4OC4xYy00LjUgMTcuMS0yMiAyNy4zLTM5LjEgMjIuOHMtMjcuMy0yMi0yMi44LTM5LjF6bTU1LjUtMzQ2TDEwMS40IDI2Ni41Yy0zIDEyLjEtMTQuOSAxOS45LTI3LjIgMTcuOWwtNDcuOS04Yy0xNC0yLjMtMjIuOS0xNi4zLTE5LjItMzBMMzEuOSAxNTVjOS41LTM0LjggNDEuMS01OSA3Ny4yLTU5aDQuMmMxNS42IDAgMjcuMSAxNC43IDIzLjMgMjkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uTWlsaXRhcnlQb2ludGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDYuOSAxNC4xQzIzNCAxNS4yIDIyNCAyNiAyMjQgMzljMCAxMy44IDExLjIgMjUgMjUgMjVINDAwYzguOCAwIDE2LTcuMiAxNi0xNlYxNy40QzQxNiA4IDQwOCAuNyAzOTguNyAxLjRMMjQ2LjkgMTQuMXpNMjQwIDExMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtNS41LS42LTEwLjgtMS42LTE2SDI0MS42Yy0xIDUuMi0xLjYgMTAuNS0xLjYgMTZ6TTcyIDIyNGMtMjIuMSAwLTQwIDE3LjktNDAgNDBzMTcuOSA0MCA0MCA0MEgyMjR2ODkuNEwzODYuOCAyMzAuNWMtMTMuMy00LjMtMjcuMy02LjUtNDEuNi02LjVIMjQwIDcyem0zNDUuNyAyMC45TDI0Ni42IDQxNkg0MTZWMzY5LjdsNTMuNiA5MC42YzExLjIgMTkgMzUuOCAyNS4zIDU0LjggMTQuMXMyNS4zLTM1LjggMTQuMS01NC44TDQ2Mi4zIDI5MC44Yy0xMS4yLTE4LjktMjYuNi0zNC41LTQ0LjYtNDUuOXpNMjI0IDQ0OHYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODRjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDQ4SDIyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uTWlsaXRhcnlSaWZsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMzljMC0xMyAxMC0yMy44IDIyLjktMjQuOUwzMzQuNyAxLjRDMzQ0IC43IDM1MiA4IDM1MiAxNy40VjQ4YzAgOC44LTcuMiAxNi0xNiAxNkgxODVjLTEzLjggMC0yNS0xMS4yLTI1LTI1em0xNy42IDU3SDMzNC40YzEgNS4yIDEuNiAxMC41IDEuNiAxNmMwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTUuNSAuNi0xMC44IDEuNi0xNnptMjI4IDM2NC4zTDM1MiAzNjkuN1Y0ODBjMCAxLjMtLjEgMi41LS4yIDMuOEwxNzcuNSAyMzQuOWMxNi42LTcuMSAzNC42LTEwLjkgNTMuMy0xMC45aDUwLjRjMTUuOSAwIDMxLjMgMi44IDQ1LjggNy45TDQyMS45IDY3LjdjLTcuNy00LjQtMTAuMy0xNC4yLTUuOS0yMS45czE0LjItMTAuMyAyMS45LTUuOWwxMy45IDggMTMuOSA4YzcuNyA0LjQgMTAuMyAxNC4yIDUuOSAyMS45TDQxNiAxNzMuOWwxLjYgLjljMTUuMyA4LjggMjAuNiAyOC40IDExLjcgNDMuN0wzOTIuNiAyODJjMiAyLjggMy45IDUuOCA1LjcgOC44bDc2LjEgMTI4LjhjMTEuMiAxOSA0LjkgNDMuNS0xNC4xIDU0LjhzLTQzLjUgNC45LTU0LjgtMTQuMXpNMzIwIDUxMkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM2OS43bC01My42IDkwLjZjLTExLjIgMTktMzUuOCAyNS4zLTU0LjggMTQuMXMtMjUuMy0zNS44LTE0LjEtNTQuOGw3Ni4xLTEyOC44YzkuNC0xNS44IDIxLjctMjkuMyAzNi00MEwzMzEuMSA1MTBjLTMuNSAxLjMtNy4yIDItMTEuMSAyek0yOTYgMzIwYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uTWlsaXRhcnlUb1BlcnNvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03MSAxMi41Yy04LjYgMS0xNSA4LjItMTUgMTYuOGMwIDkuMyA3LjUgMTYuOCAxNi43IDE2LjlIMTg0LjFjOC44LS4xIDE1LjktNy4yIDE1LjktMTZWMTZjMC05LjUtOC4zLTE3LTE3LjgtMTUuOUw3MSAxMi41ek0xODkuNSA3OC4xSDY2LjVDNjQuOSA4My44IDY0IDg5LjggNjQgOTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NGMwLTYuMi0uOS0xMi4yLTIuNS0xNy45ek0zMiAyNTZ2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJIMTkyYzEuOCAwIDMuNS0uMSA1LjItLjRMNTMgMjA4LjZDNDAuMSAyMjAuMyAzMiAyMzcuMiAzMiAyNTZ6bTE5MC4yIDQyLjVjMS4xLTMuMyAxLjgtNi44IDEuOC0xMC41VjI1NmMwLTM1LjMtMjguNy02NC02NC02NEg5NmMtMy43IDAtNy40IC4zLTEwLjkgLjlMMjIyLjIgMjk4LjV6TTM4NCAxNjBhNjQgNjQgMCAxIDAgMC0xMjggNjQgNjQgMCAxIDAgMCAxMjh6bS0zMiAzMmMtMzUuMyAwLTY0IDI4LjctNjQgNjR2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJINDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1NmMwLTM1LjMtMjguNy02NC02NC02NEgzNTJ6TTIxNS44IDQ1MC4xYzUuMi00LjYgOC4yLTExLjEgOC4yLTE4LjFzLTMtMTMuNS04LjItMTguMWwtNjQtNTZjLTcuMS02LjItMTcuMS03LjctMjUuNy0zLjhTMTEyIDM2Ni42IDExMiAzNzZ2MzJsLTg4IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsODggMHYzMmMwIDkuNCA1LjUgMTggMTQuMSAyMS45czE4LjYgMi40IDI1LjctMy44bDY0LTU2ek0yODggNDMxLjljMCA2LjkgMi45IDEzLjUgOC4xIDE4LjFsNjQgNTYuNGM3LjEgNi4yIDE3LjEgNy44IDI1LjcgMy45czE0LjEtMTIuNCAxNC4xLTIxLjlsMC0zMi40IDg4IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTg4IDAgMC0zMmMwLTkuNC01LjUtMTgtMTQuMS0yMS45cy0xOC42LTIuNC0yNS43IDMuOGwtNjQgNTZjLTUuMiA0LjUtOC4yIDExLjEtOC4yIDE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25QcmF5aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiA2NEE2NCA2NCAwIDEgMCAyMjQgNjRhNjQgNjQgMCAxIDAgMTI4IDB6TTIzMi43IDI2NGwyMi45IDMxLjVjNi41IDguOSAxNi4zIDE0LjcgMjcuMiAxNi4xczIxLjktMS43IDMwLjQtOC43bDg4LTcyYzE3LjEtMTQgMTkuNi0zOS4yIDUuNi01Ni4zcy0zOS4yLTE5LjYtNTYuMy01LjZsLTU1LjIgNDUuMi0yNi4yLTM2QzI1My42IDE1Ni43IDIyOC42IDE0NCAyMDIgMTQ0Yy0zMC45IDAtNTkuMiAxNy4xLTczLjYgNDQuNEw3OS44IDI4MC45Yy0yMC4yIDM4LjUtOS40IDg1LjkgMjUuNiAxMTEuOEwxNTguNiA0MzJINzJjLTIyLjEgMC00MCAxNy45LTQwIDQwczE3LjkgNDAgNDAgNDBIMjgwYzE3LjMgMCAzMi42LTExLjEgMzgtMjcuNXMtLjMtMzQuNC0xNC4yLTQ0LjdMMTg3LjcgMzU0bDQ1LTkwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25QcmVnbmFudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6TTEyMCAzODNjLTEzLjgtMy42LTI0LTE2LjEtMjQtMzFWMjk2LjlsLTQuNiA3LjZjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE1LTI0LjkgNDAuMy00MS41IDY4LjctNDUuNmM0LjEtLjYgOC4yLTEgMTIuNS0xaDEuMSAxMi41SDE5MmMxLjQgMCAyLjggLjEgNC4xIC4zYzM1LjcgMi45IDY1LjQgMjkuMyA3Mi4xIDY1bDYuMSAzMi41YzQ0LjMgOC42IDc3LjcgNDcuNSA3Ny43IDk0LjN2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJIMzA0IDI2NHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzODRoLTgtOHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvblJheXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTQwIDMwNFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjU2LjlsLTI4LjYgNDcuNWMtOS4xIDE1LjEtMjguOCAyMC00My45IDEwLjlzLTIwLTI4LjgtMTAuOS00My45bDU4LjMtOTdjMTcuNC0yOC45IDQ4LjYtNDYuNiA4Mi4zLTQ2LjZoMjkuN2MzMy43IDAgNjQuOSAxNy43IDgyLjMgNDYuNmw1OC4zIDk3YzkuMSAxNS4xIDQuMiAzNC44LTEwLjkgNDMuOXMtMzQuOCA0LjItNDMuOS0xMC45TDMyOCAyNTYuOVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUySDI0OHpNNyA3QzE2LjQtMi4zIDMxLjYtMi4zIDQxIDdsODAgODBjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMEw3IDQxQy0yLjMgMzEuNi0yLjMgMTYuNCA3IDd6TTQ3MSA3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtODAgODBjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlMNDcxIDd6TTcgNTA1Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw4MC04MGM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlMNDEgNTA1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHptNDY0IDBsLTgwLTgwYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsODAgODBjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uUmlmbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY1LjIgMTkyYzI1LjQgMCA0OS44IDcuMSA3MC44IDE5LjlWNTEySDE0NFYzMzcuN0w5MC40IDQyOC4zYy0xMS4yIDE5LTM1LjggMjUuMy01NC44IDE0LjFzLTI1LjMtMzUuOC0xNC4xLTU0LjhMOTcuNyAyNTguOGMyNC41LTQxLjQgNjktNjYuOCAxMTcuMS02Ni44aDUwLjR6TTE2MCA4MGE4MCA4MCAwIDEgMSAxNjAgMEE4MCA4MCAwIDEgMSAxNjAgODB6TTQ0OCAwYzguOCAwIDE2IDcuMiAxNiAxNlYxMzIuM2M5LjYgNS41IDE2IDE1LjkgMTYgMjcuN1YyNjkuM2wxNi01LjNWMjA4YzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2ODQuNWMwIDYuOS00LjQgMTMtMTAuOSAxNS4yTDQ4MCAzMjUuM1YzNTJoNDhjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNkg0ODRsMjMgOTIuMWMyLjUgMTAuMS01LjEgMTkuOS0xNS41IDE5LjlINDMyYy04LjggMC0xNi03LjItMTYtMTZWNDAwSDQwMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMyVjE2MGMwLTExLjggNi40LTIyLjIgMTYtMjcuN1YzMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmgxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uUnVubmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMTI1LjcgMTc1LjVjOS45LTkuOSAyMy40LTE1LjUgMzcuNS0xNS41YzEuOSAwIDMuOCAuMSA1LjYgLjNMMTM3LjYgMjU0Yy05LjMgMjggMS43IDU4LjggMjYuOCA3NC41bDg2LjIgNTMuOS0yNS40IDg4LjhjLTQuOSAxNyA1IDM0LjcgMjIgMzkuNnMzNC43LTUgMzkuNi0yMmwyOC43LTEwMC40YzUuOS0yMC42LTIuNi00Mi42LTIwLjctNTMuOUwyMzggMjk5bDMwLjktODIuNCA1LjEgMTIuM0MyODkgMjY0LjcgMzIzLjkgMjg4IDM2Mi43IDI4OEgzODRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzYyLjdjLTEyLjkgMC0yNC42LTcuOC0yOS41LTE5LjdsLTYuMy0xNWMtMTQuNi0zNS4xLTQ0LjEtNjEuOS04MC41LTczLjFsLTQ4LjctMTVjLTExLjEtMy40LTIyLjctNS4yLTM0LjQtNS4yYy0zMSAwLTYwLjggMTIuMy04Mi43IDM0LjNMNTcuNCAxNTMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGwyMy4xLTIzLjF6TTkxLjIgMzUySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDY5LjZjMTkgMCAzNi4yLTExLjIgNDMuOS0yOC41TDE1NyAzNjEuNmwtOS41LTZjLTE3LjUtMTAuOS0zMC41LTI2LjgtMzcuOS00NC45TDkxLjIgMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25TaGVsdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MS45IDQuMmMtOS44LTUuNi0yMS45LTUuNi0zMS44IDBsLTIyNCAxMjhDNi4yIDEzNy45IDAgMTQ4LjUgMCAxNjBWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTc4LjZMMjU2IDY4LjkgNDQ4IDE3OC42VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE2MGMwLTExLjUtNi4yLTIyLjEtMTYuMS0yNy44bC0yMjQtMTI4ek0yNTYgMjA4YTQwIDQwIDAgMSAwIDAtODAgNDAgNDAgMCAxIDAgMCA4MHptLTggMjgwVjQwMGgxNnY4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjMxMy41bDI2LjkgNDkuOWM2LjMgMTEuNyAyMC44IDE2IDMyLjUgOS44czE2LTIwLjggOS44LTMyLjVsLTM3LjktNzAuM2MtMTUuMy0yOC41LTQ1LjEtNDYuMy03Ny41LTQ2LjNIMjQ2LjJjLTMyLjQgMC02Mi4xIDE3LjgtNzcuNSA0Ni4zbC0zNy45IDcwLjNjLTYuMyAxMS43LTEuOSAyNi4yIDkuOCAzMi41czI2LjIgMS45IDMyLjUtOS44TDIwMCAzMTMuNVY0ODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uU2thdGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMTI4IDEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMkgzMTkuNGM0My42IDAgNjQuNiA1My40IDMyLjggODMuMWwtNzQuNCA2OS40IDYwLjIgNjAuMmM5IDkgMTQuMSAyMS4yIDE0LjEgMzMuOVY0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzQ5LjNsLTc3LjktNzcuOGMtMjYuNi0yNi42LTI0LjYtNzAuMyA0LjMtOTQuNGwyMC40LTE3SDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTgxLjQgMzUzLjRsODYuOS04Ni45YzQuNiAxMCAxMSAxOS4zIDE5LjMgMjcuNWwyMS44IDIxLjgtODIuNyA4Mi43Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM3ptMzIyLjUgOTUuMWM4LjYgMi4xIDEzLjggMTAuOCAxMS42IDE5LjRsLS40IDEuN2MtNi4yIDI0LjktMjguNiA0Mi40LTU0LjMgNDIuNEgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoODguOGMxMSAwIDIwLjYtNy41IDIzLjMtMTguMmwuNC0xLjdjMi4xLTguNiAxMC44LTEzLjggMTkuNC0xMS42ek0xMzUuMiA0NzguM2wtNi4yIDMuMWMtMjEuNiAxMC44LTQ3LjYgNi42LTY0LjYtMTAuNUw0LjcgNDExLjNjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMGw1OS42IDU5LjZjNy4zIDcuMyAxOC41IDkuMSAyNy43IDQuNWw2LjItMy4xYzcuOS00IDE3LjUtLjcgMjEuNSA3LjJzLjcgMTcuNS03LjIgMjEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uU2tpaW5nTm9yZGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTIyNy4yIDE2MGMxLjkgMCAzLjggLjEgNS42IC4zTDIwMS42IDI1NGMtOS4zIDI4IDEuNyA1OC44IDI2LjggNzQuNWw4Ni4yIDUzLjlMMjkxLjMgNDY0SDIwMi44bDQxLjEtODguMS0zMi40LTIwLjNjLTcuOC00LjktMTQuNy0xMC43LTIwLjYtMTcuM0wxMzIuMiA0NjRIOTkuN2w1NC4yLTI1Ny42YzQuNi0xLjUgOS00LjEgMTIuNy03LjhsMjMuMS0yMy4xYzkuOS05LjkgMjMuNC0xNS41IDM3LjUtMTUuNXpNMTIxLjQgMTk4LjZjLjQgLjQgLjggLjggMS4zIDEuMkw2NyA0NjRIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMTU5LjNjLjQgMCAuOSAwIDEuMyAwSDMxOS4zYy41IDAgMSAwIDEuNCAwSDUwNGMzOS44IDAgNzItMzIuMiA3Mi03MnYtOGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY4YzAgMTMuMy0xMC43IDI0LTI0IDI0SDQzNC42bDI3LjYtMTc5LjNjMTAuNS01LjIgMTcuOC0xNi4xIDE3LjgtMjguN2MwLTE3LjctMTQuMy0zMi0zMi0zMkg0MjYuN2MtMTIuOSAwLTI0LjYtNy44LTI5LjUtMTkuN2wtNi4zLTE1Yy0xNC42LTM1LjEtNDQuMS02MS45LTgwLjUtNzMuMWwtNDguNy0xNWMtMTEuMS0zLjQtMjIuNy01LjItMzQuNC01LjJjLTMxIDAtNjAuOCAxMi4zLTgyLjcgMzQuM2wtMjMuMSAyMy4xYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3ptMzA4IDg5LjRMNDAyLjMgNDY0SDM1Ny44bDIxLjYtNzUuNmM1LjktMjAuNi0yLjYtNDIuNi0yMC43LTUzLjlMMzAyIDI5OWwzMC45LTgyLjQgNS4xIDEyLjNDMzUzIDI2NC43IDM4Ny45IDI4OCA0MjYuNyAyODhoMi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25Ta2lpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgwLjcgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMi43IDI2OC45YzYuMS0xMS44IDIwLjYtMTYuMyAzMi40LTEwLjJMMjMyLjcgMzYxLjNsNDYuMi02OS4yLTc1LjEtNzUuMWMtMTQuNi0xNC42LTIwLjQtMzMuOS0xOC40LTUyLjFsMTA4LjggNTIgMzkuMyAzOS4zYzE2LjIgMTYuMiAxOC43IDQxLjUgNiA2MC42TDI4OS44IDM5MWwxMjguNyA2Ni44YzEzLjYgNy4xIDI5LjggNy4yIDQzLjYgLjNsMTUuMi03LjZjMTEuOS01LjkgMjYuMy0xLjEgMzIuMiAxMC43czEuMSAyNi4zLTEwLjcgMzIuMmwtMTUuMiA3LjZjLTI3LjUgMTMuNy01OS45IDEzLjUtODcuMi0uN0wxMi45IDMwMS4zQzEuMiAyOTUuMi0zLjQgMjgwLjcgMi43IDI2OC45ek0xMTguOSA2NS42TDEzNyA3NC4ybDguNy0xNy40YzQtNy45IDEzLjYtMTEuMSAyMS41LTcuMnMxMS4xIDEzLjYgNy4yIDIxLjVsLTguNSAxNi45IDU0LjcgMjYuMmMxLjUtLjcgMy4xLTEuNCA0LjctMi4xbDgzLjQtMzMuNGMzNC4yLTEzLjcgNzIuOCA0LjIgODQuNSAzOS4ybDE3LjEgNTEuMiA1Mi4xIDI2LjFjMTUuOCA3LjkgMjIuMiAyNy4xIDE0LjMgNDIuOXMtMjcuMSAyMi4yLTQyLjkgMTQuM2wtNTguMS0yOWMtMTEuNC01LjctMjAtMTUuNy0yNC4xLTI3LjhsLTUuOC0xNy4zLTI3LjMgMTIuMS02LjggMy02LjctMy4yTDE1MS41IDExNi43bC05LjIgMTguNGMtNCA3LjktMTMuNiAxMS4xLTIxLjUgNy4ycy0xMS4xLTEzLjYtNy4yLTIxLjVsOS0xOC0xNy42LTguNGMtOC0zLjgtMTEuMy0xMy40LTcuNS0yMS4zczEzLjQtMTEuMyAyMS4zLTcuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uU25vd2JvYXJkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOS43IDMuNGMxNS44LTcuOSAzNS0xLjUgNDIuOSAxNC4zbDI1IDUwIDQyLjQgOC41YzE5LjUgMy45IDM3LjggMTIuMyA1My41IDI0LjVsMTI2LjEgOTguMWMxNCAxMC45IDE2LjUgMzEgNS42IDQ0LjlzLTMxIDE2LjUtNDQuOSA1LjZsLTcyLjEtNTYuMS03MS41IDMxLjggMzMuMSAyNy42YzIzLjIgMTkuMyAzMy41IDUwIDI2LjcgNzkuNGwtMTcuNCA3NS4yYy0yLjIgOS40LTguMiAxNi44LTE2LjEgMjFsODYuNSAzMy4xYzQuNiAxLjggOS40IDIuNiAxNC4zIDIuNkg0NzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINDQzLjhjLTEwLjggMC0yMS40LTItMzEuNS01LjhMNjAuMSAzNzEuM2MtMTEuNS00LjQtMjItMTEuMi0zMC44LTIwTDcgMzI5Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsMjIuNCAyMi40YzQgNCA4LjcgNy4xIDE0IDkuMWwyMi40IDguNmMtLjgtMS42LTEuNS0zLjItMi4xLTQuOWMtNS42LTE2LjggMy41LTM0LjkgMjAuMi00MC41TDE5MiAyNjQuOWwwLTUzLjJjMC0yNC4yIDEzLjctNDYuNCAzNS40LTU3LjJsNDUuMi0yMi42LTcuNS0xLjVjLTE5LjQtMy45LTM1LjktMTYuNS00NC43LTM0LjFsLTI1LTUwYy03LjktMTUuOC0xLjUtMzUgMTQuMy00Mi45ek0xMzkgMzUwLjFsMTU5IDYwLjljLTIuMS01LjYtMi42LTExLjktMS4xLTE4LjJsMTcuNC03NS4yYzEuNC01LjktLjctMTItNS4zLTE1LjlsLTUyLjgtNDQgMCAxOC44YzAgMjAuNy0xMy4yIDM5LTMyLjggNDUuNUwxMzkgMzUwLjF6TTQzMiAwYTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uU3dpbW1pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA5LjUgMTc4LjRMNDQ3LjkgMjk3LjFjLTEuNiAuOS0zLjIgMi00LjggM2MtMTggMTIuNC00MC4xIDIwLjMtNTkuMiAyMC4zYy0xOS42IDAtNDAuOC03LjctNTkuMi0yMC4zYy0yMi4xLTE1LjUtNTEuNi0xNS41LTczLjcgMGMtMTcuMSAxMS44LTM4IDIwLjMtNTkuMiAyMC4zYy0xMC4xIDAtMjEuMS0yLjItMzEuOS02LjJDMTYzLjEgMTkzLjIgMjYyLjIgOTYgMzg0IDk2aDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM4NGMtMjYuOSAwLTUyLjMgNi42LTc0LjUgMTguNHpNMTYwIDE2MEE2NCA2NCAwIDEgMSAzMiAxNjBhNjQgNjQgMCAxIDEgMTI4IDB6TTMwNi41IDMyNS45QzMyOSAzNDEuNCAzNTYuNSAzNTIgMzg0IDM1MmMyNi45IDAgNTUuNC0xMC44IDc3LjQtMjYuMWwwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSA0MDUuNyA0MTcgNDE2IDM4NCA0MTZjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40YzE4LjEtNC4yIDM2LjItMTMuMyA1MC42LTI1LjJjMTEuMS05LjQgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyAzNDEuMiAxNjUuMSAzNTIgMTkyIDM1MmMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uVGhyb3VnaFdpbmRvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NGwyMjQgMCAwIDkuOGMwIDM5LTIzLjcgNzQtNTkuOSA4OC40QzE2Ny42IDE4Ni41IDEyOCAyNDUgMTI4IDMxMC4ybDAgNzMuOHMwIDAgMCAwSDY0VjY0em0yODggMGwyMjQgMFYzODRINTA4LjNsLTMuNy00LjUtNzUuMi05MC4yYy05LjEtMTAuOS0yMi42LTE3LjMtMzYuOS0xNy4zbC03MS4xIDAtNDEtNjMuMWMtLjMtLjUtLjYtMS0xLTEuNGM0NC43LTI5IDcyLjUtNzkgNzIuNS0xMzMuNmwwLTkuOHptNzMgMzIwSDM3OS4ybDQyLjcgNjRINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4QzIxLjUgMCAwIDIxLjUgMCA0OFY0MDBjMCAyNi41IDIxLjUgNDggNDggNDhIMzA4LjJsMzMuMiA0OS44YzkuOCAxNC43IDI5LjcgMTguNyA0NC40IDguOXMxOC43LTI5LjcgOC45LTQ0LjRMMzEwLjUgMzM2bDc0LjYgMCA0MCA0OHptLTE1OS41IDBIMTkyczAgMCAwIDBsMC03My44YzAtMTAuMiAxLjYtMjAuMSA0LjctMjkuNUwyNjUuNSAzODR6TTE5MiAxMjhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uV2Fsa2luZ0Fycm93TG9vcExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNMTIzLjcgMjAwLjVjMS0uNCAxLjktLjggMi45LTEuMmwtMTYuOSA2My41Yy01LjYgMjEuMS0uMSA0My42IDE0LjcgNTkuN2w3MC43IDc3LjEgMjIgODguMWM0LjMgMTcuMSAyMS43IDI3LjYgMzguOCAyMy4zczI3LjYtMjEuNyAyMy4zLTM4LjhsLTIzLTkyLjFjLTEuOS03LjgtNS44LTE0LjktMTEuMi0yMC44bC00OS41LTU0IDE5LjMtNjUuNSA5LjYgMjNjNC40IDEwLjYgMTIuNSAxOS4zIDIyLjggMjQuNWwyNi43IDEzLjNjMTUuOCA3LjkgMzUgMS41IDQyLjktMTQuM3MxLjUtMzUtMTQuMy00Mi45TDI4MSAyMzIuN2wtMTUuMy0zNi44QzI0OC41IDE1NC44IDIwOC4zIDEyOCAxNjMuNyAxMjhjLTIyLjggMC00NS4zIDQuOC02Ni4xIDE0bC04IDMuNWMtMzIuOSAxNC42LTU4LjEgNDIuNC02OS40IDc2LjVsLTIuNiA3LjhjLTUuNiAxNi44IDMuNSAzNC45IDIwLjIgNDAuNXMzNC45LTMuNSA0MC41LTIwLjJsMi42LTcuOGM1LjctMTcuMSAxOC4zLTMwLjkgMzQuNy0zOC4ybDgtMy41em0tMzAgMTM1LjFMNjguNyAzOTggOS40IDQ1Ny40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDExNi4zIDQ0MWM0LjYtNC42IDguMi0xMC4xIDEwLjYtMTYuMWwxNC41LTM2LjItNDAuNy00NC40Yy0yLjUtMi43LTQuOC01LjYtNy04LjZ6bTM0Ny43IDExOWMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDQ2MS4zIDM4NEg0ODBjODguNCAwIDE2MC03MS42IDE2MC0xNjBzLTcxLjYtMTYwLTE2MC0xNjBMMzUyIDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDEyOCAwYzUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2SDQ2MS4zbDI1LjQtMjUuNGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtODAgODBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25XYWxraW5nQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek0xMjMuNyAyMDAuNWMxLS40IDEuOS0uOCAyLjktMS4ybC0xNi45IDYzLjVjLTUuNiAyMS4xLS4xIDQzLjYgMTQuNyA1OS43bDcwLjcgNzcuMSAyMiA4OC4xYzQuMyAxNy4xIDIxLjcgMjcuNiAzOC44IDIzLjNzMjcuNi0yMS43IDIzLjMtMzguOGwtMjMtOTIuMWMtMS45LTcuOC01LjgtMTQuOS0xMS4yLTIwLjhsLTQ5LjUtNTQgMTkuMy02NS41IDkuNiAyM2M0LjQgMTAuNiAxMi41IDE5LjMgMjIuOCAyNC41bDI2LjcgMTMuM2MxNS44IDcuOSAzNSAxLjUgNDIuOS0xNC4zczEuNS0zNS0xNC4zLTQyLjlMMjgxIDIzMi43bC0xNS4zLTM2LjhDMjQ4LjUgMTU0LjggMjA4LjMgMTI4IDE2My43IDEyOGMtMjIuOCAwLTQ1LjMgNC44LTY2LjEgMTRsLTggMy41Yy0zMi45IDE0LjYtNTguMSA0Mi40LTY5LjQgNzYuNWwtMi42IDcuOGMtNS42IDE2LjggMy41IDM0LjkgMjAuMiA0MC41czM0LjktMy41IDQwLjUtMjAuMmwyLjYtNy44YzUuNy0xNy4xIDE4LjMtMzAuOSAzNC43LTM4LjJsOC0zLjV6bS0zMCAxMzUuMUw2OC43IDM5OCA5LjQgNDU3LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTE2LjMgNDQxYzQuNi00LjYgOC4yLTEwLjEgMTAuNi0xNi4xbDE0LjUtMzYuMi00MC43LTQ0LjRjLTIuNS0yLjctNC44LTUuNi03LTguNnpNNTUwLjYgMTUzLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDUzMC43IDIyNEgzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINTMwLjdsLTI1LjQgMjUuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw4MC04MGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbldhbGtpbmdEYXNoZWRMaW5lQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek0xMjMuNyAyMDAuNWMxLS40IDEuOS0uOCAyLjktMS4ybC0xNi45IDYzLjVjLTUuNiAyMS4xLS4xIDQzLjYgMTQuNyA1OS43bDcwLjcgNzcuMSAyMiA4OC4xYzQuMyAxNy4xIDIxLjcgMjcuNiAzOC44IDIzLjNzMjcuNi0yMS43IDIzLjMtMzguOGwtMjMtOTIuMWMtMS45LTcuOC01LjgtMTQuOS0xMS4yLTIwLjhsLTQ5LjUtNTQgMTkuMy02NS41IDkuNiAyM2M0LjQgMTAuNiAxMi41IDE5LjMgMjIuOCAyNC41bDI2LjcgMTMuM2MxNS44IDcuOSAzNSAxLjUgNDIuOS0xNC4zczEuNS0zNS0xNC4zLTQyLjlMMjgxIDIzMi43bC0xNS4zLTM2LjhDMjQ4LjUgMTU0LjggMjA4LjMgMTI4IDE2My43IDEyOGMtMjIuOCAwLTQ1LjMgNC44LTY2LjEgMTRsLTggMy41Yy0zMi45IDE0LjYtNTguMSA0Mi40LTY5LjQgNzYuNWwtMi42IDcuOGMtNS42IDE2LjggMy41IDM0LjkgMjAuMiA0MC41czM0LjktMy41IDQwLjUtMjAuMmwyLjYtNy44YzUuNy0xNy4xIDE4LjMtMzAuOSAzNC43LTM4LjJsOC0zLjV6bS0zMCAxMzUuMUw2OC43IDM5OCA5LjQgNDU3LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTE2LjMgNDQxYzQuNi00LjYgOC4yLTEwLjEgMTAuNi0xNi4xbDE0LjUtMzYuMi00MC43LTQ0LjRjLTIuNS0yLjctNC44LTUuNi03LTguNnpNNTUwLjYgMTUzLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDUzMC43IDIyNEgzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINTMwLjdsLTI1LjQgMjUuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw4MC04MGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtODAtODB6TTM5MiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNFY3MmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0em0yNCAxNTJjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2MTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYxNTJ6TTM5MiAzMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0djE2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMzQ0YzAtMTMuMy0xMC43LTI0LTI0LTI0em0yNCAxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0NDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbldhbGtpbmdMdWdnYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTM0Ny43IDIwMC41YzEtLjQgMS45LS44IDIuOS0xLjJsLTE2LjkgNjMuNWMtNS42IDIxLjEtLjEgNDMuNiAxNC43IDU5LjdsNzAuNyA3Ny4xIDIyIDg4LjFjNC4zIDE3LjEgMjEuNyAyNy42IDM4LjggMjMuM3MyNy42LTIxLjcgMjMuMy0zOC44bC0yMy05Mi4xYy0xLjktNy44LTUuOC0xNC45LTExLjItMjAuOGwtNDkuNS01NCAxOS4zLTY1LjUgOS42IDIzYzQuNCAxMC42IDEyLjUgMTkuMyAyMi44IDI0LjVsMjYuNyAxMy4zYzE1LjggNy45IDM1IDEuNSA0Mi45LTE0LjNzMS41LTM1LTE0LjMtNDIuOUw1MDUgMjMyLjdsLTE1LjMtMzYuOEM0NzIuNSAxNTQuOCA0MzIuMyAxMjggMzg3LjcgMTI4Yy0yMi44IDAtNDUuMyA0LjgtNjYuMSAxNGwtOCAzLjVjLTMyLjkgMTQuNi01OC4xIDQyLjQtNjkuNCA3Ni41bC0yLjYgNy44Yy01LjYgMTYuOCAzLjUgMzQuOSAyMC4yIDQwLjVzMzQuOS0zLjUgNDAuNS0yMC4ybDIuNi03LjhjNS43LTE3LjEgMTguMy0zMC45IDM0LjctMzguMmw4LTMuNXptLTMwIDEzNS4xbC0yNSA2Mi40LTU5LjQgNTkuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwzNDAuMyA0NDFjNC42LTQuNiA4LjItMTAuMSAxMC42LTE2LjFsMTQuNS0zNi4yLTQwLjctNDQuNGMtMi41LTIuNy00LjgtNS42LTctOC42ek0yNTYgMjc0LjFjLTcuNy00LjQtMTcuNC0xLjgtMjEuOSA1LjlsLTMyIDU1LjRMMTQ3LjcgMzA0Yy0xNS4zLTguOC0zNC45LTMuNi00My43IDExLjdMNDAgNDI2LjZjLTguOCAxNS4zLTMuNiAzNC45IDExLjcgNDMuN2w1NS40IDMyYzE1LjMgOC44IDM0LjkgMy42IDQzLjctMTEuN2w2NC0xMTAuOWMxLjUtMi42IDIuNi01LjIgMy4zLThMMjYxLjkgMjk2YzQuNC03LjcgMS44LTE3LjQtNS45LTIxLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcnNvbldhbGtpbmdXaXRoQ2FuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tOC40IDMyYy0zNi40IDAtNjkuNiAyMC41LTg1LjkgNTMuMUwzNS40IDI3My43Yy03LjkgMTUuOC0xLjUgMzUgMTQuMyA0Mi45czM1IDEuNSA0Mi45LTE0LjNMMTI4IDIzMS42djQzLjJjMCAxNyA2LjcgMzMuMyAxOC43IDQ1LjNMMjI0IDM5Ny4zVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM5MC42YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlMMjI0IDMwNi43VjIxMy4zbDcwLjQgOTMuOWMxMC42IDE0LjEgMzAuNyAxNyA0NC44IDYuNHMxNy0zMC43IDYuNC00NC44TDI2OC44IDE2Ni40QzI1MC43IDE0Mi4yIDIyMi4yIDEyOCAxOTIgMTI4SDE2Ny42ek0xMjguMyAzNDYuOEw5NyA0NzIuMmMtNC4zIDE3LjEgNi4xIDM0LjUgMjMuMyAzOC44czM0LjUtNi4xIDM4LjgtMjMuM2wyMi04OC4yLTUyLjgtNTIuOHpNNDUwLjggNTA1LjFjNSA3LjMgMTUgOS4xIDIyLjMgNHM5LjEtMTUgNC0yMi4zTDM1OC45IDMxNi4xYy0yLjggMy44LTYuMSA3LjMtMTAuMSAxMC4zYy01IDMuOC0xMC41IDYuNC0xNi4yIDcuOUw0NTAuOCA1MDUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uV2Fsa2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMTI2LjUgMTk5LjNjLTEgLjQtMS45IC44LTIuOSAxLjJsLTggMy41Yy0xNi40IDcuMy0yOSAyMS4yLTM0LjcgMzguMmwtMi42IDcuOGMtNS42IDE2LjgtMjMuNyAyNS44LTQwLjUgMjAuMnMtMjUuOC0yMy43LTIwLjItNDAuNWwyLjYtNy44YzExLjQtMzQuMSAzNi42LTYxLjkgNjkuNC03Ni41bDgtMy41YzIwLjgtOS4yIDQzLjMtMTQgNjYuMS0xNGM0NC42IDAgODQuOCAyNi44IDEwMS45IDY3LjlMMjgxIDIzMi43bDIxLjQgMTAuN2MxNS44IDcuOSAyMi4yIDI3LjEgMTQuMyA0Mi45cy0yNy4xIDIyLjItNDIuOSAxNC4zTDI0NyAyODcuM2MtMTAuMy01LjItMTguNC0xMy44LTIyLjgtMjQuNWwtOS42LTIzLTE5LjMgNjUuNSA0OS41IDU0YzUuNCA1LjkgOS4yIDEzIDExLjIgMjAuOGwyMyA5Mi4xYzQuMyAxNy4xLTYuMSAzNC41LTIzLjMgMzguOHMtMzQuNS02LjEtMzguOC0yMy4zbC0yMi04OC4xLTcwLjctNzcuMWMtMTQuOC0xNi4xLTIwLjMtMzguNi0xNC43LTU5LjdsMTYuOS02My41ek02OC43IDM5OGwyNS02Mi40YzIuMSAzIDQuNSA1LjggNyA4LjZsNDAuNyA0NC40LTE0LjUgMzYuMmMtMi40IDYtNiAxMS41LTEwLjYgMTYuMUw1NC42IDUwMi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0w2OC43IDM5OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI1Ni45TDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE3LjQtMjguOSA0OC42LTQ2LjYgODIuMy00Ni42aDI5LjdjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNTguMyA5N2M5LjEgMTUuMSA0LjIgMzQuOC0xMC45IDQzLjlzLTM0LjggNC4yLTQzLjktMTAuOUwyMzIgMjU2LjlWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkgxNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlc2V0YVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDNDYuMyAzMiAzMiA0Ni4zIDMyIDY0djk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDAgOTZWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzUyaDk2Yzc3LjQgMCAxNDItNTUgMTU2LjgtMTI4SDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmgtMy4yQzMzNCA4NyAyNjkuNCAzMiAxOTIgMzJINjR6TTI4Mi41IDE2MEg5NlY5Nmg5NmM0MS44IDAgNzcuNCAyNi43IDkwLjUgNjR6TTk2IDIyNEgyODIuNWMtMTMuMiAzNy4zLTQ4LjcgNjQtOTAuNSA2NEg5NlYyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlc29TaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzQ2LjMgMzIgMzIgNDYuMyAzMiA2NHY2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwwIDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDAgNjR2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzODRoODBjNjguNCAwIDEyNy43LTM5IDE1Ni44LTk2SDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmgtLjdjLjUtNS4zIC43LTEwLjYgLjctMTZzLS4yLTEwLjctLjctMTZoLjdjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzMyLjhDMzAzLjcgNzEgMjQ0LjQgMzIgMTc2IDMySDY0em0xOTAuNCA5Nkg5NlY5Nmg4MGMzMC41IDAgNTguMiAxMi4yIDc4LjQgMzJ6TTk2IDE5MkgyODYuOWMuNyA1LjIgMS4xIDEwLjYgMS4xIDE2cy0uNCAxMC44LTEuMSAxNkg5NlYxOTJ6bTE1OC40IDk2Yy0yMC4yIDE5LjgtNDcuOSAzMi03OC40IDMySDk2VjI4OEgyNTQuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvbmVGbGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Ny4xIDI0LjZjNy43LTE4LjYgMjgtMjguNSA0Ny40LTIzLjJsODggMjRDNDk5LjkgMzAuMiA1MTIgNDYgNTEyIDY0YzAgMjQ3LjQtMjAwLjYgNDQ4LTQ0OCA0NDhjLTE4IDAtMzMuOC0xMi4xLTM4LjYtMjkuNWwtMjQtODhjLTUuMy0xOS40IDQuNi0zOS43IDIzLjItNDcuNGw5Ni00MGMxNi4zLTYuOCAzNS4yLTIuMSA0Ni4zIDExLjZMMjA3LjMgMzY4YzcwLjQtMzMuMyAxMjcuNC05MC4zIDE2MC43LTE2MC43TDMxOC43IDE2N2MtMTMuNy0xMS4yLTE4LjQtMzAtMTEuNi00Ni4zbDQwLTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9uZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYwMS4yIDUuMWMxMC40LTguMiAyNS41LTYuMyAzMy43IDQuMXM2LjMgMjUuNS00LjEgMzMuN2wtNTkyIDQ2NGMtMTAuNCA4LjItMjUuNSA2LjMtMzMuNy00LjFzLTYuMy0yNS41IDQuMS0zMy43bDE1NS42LTEyMkMxMDEuOCAyNzAgNjQgMTcxLjQgNjQgNjRjMC0xOCAxMi4xLTMzLjggMjkuNS0zOC42bDg4LTI0YzE5LjQtNS4zIDM5LjcgNC42IDQ3LjQgMjMuMmw0MCA5NmM2LjggMTYuMyAyLjEgMzUuMi0xMS42IDQ2LjNMMjA4IDIwNy4zYzEyIDI1LjUgMjcuMiA0OS4yIDQ1IDcwLjdMNjAxLjIgNS4xek0yMzQuMyA0MTUuNmw5MS4zLTcyYzEzLjcgOS4xIDI4IDE3LjMgNDMgMjQuM0w0MDkgMzE4LjdjMTEuMi0xMy43IDMwLTE4LjQgNDYuMy0xMS42bDk2IDQwYzE4LjYgNy43IDI4LjUgMjggMjMuMiA0Ny40bC0yNCA4OEM1NDUuOCA0OTkuOSA1MzAgNTEyIDUxMiA1MTJjLTEwNC45IDAtMjAxLjMtMzYtMjc3LjctOTYuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvbmVWb2x1bWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjgwIDBDNDA4LjEgMCA1MTIgMTAzLjkgNTEyIDIzMmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTEwMS42LTgyLjQtMTg0LTE4NC0xODRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6bTggMTkyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptLTMyLTcyYzAtMTMuMyAxMC43LTI0IDI0LTI0Yzc1LjEgMCAxMzYgNjAuOSAxMzYgMTM2YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtNDguNi0zOS40LTg4LTg4LTg4Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHpNMTE3LjUgMS40YzE5LjQtNS4zIDM5LjcgNC42IDQ3LjQgMjMuMmw0MCA5NmM2LjggMTYuMyAyLjEgMzUuMi0xMS42IDQ2LjNMMTQ0IDIwNy4zYzMzLjMgNzAuNCA5MC4zIDEyNy40IDE2MC43IDE2MC43TDM0NSAzMTguN2MxMS4yLTEzLjcgMzAtMTguNCA0Ni4zLTExLjZsOTYgNDBjMTguNiA3LjcgMjguNSAyOCAyMy4yIDQ3LjRsLTI0IDg4QzQ4MS44IDQ5OS45IDQ2NiA1MTIgNDQ4IDUxMkMyMDAuNiA1MTIgMCAzMTEuNCAwIDY0QzAgNDYgMTIuMSAzMC4yIDI5LjUgMjUuNGw4OC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY0LjkgMjQuNmMtNy43LTE4LjYtMjgtMjguNS00Ny40LTIzLjJsLTg4IDI0QzEyLjEgMzAuMiAwIDQ2IDAgNjRDMCAzMTEuNCAyMDAuNiA1MTIgNDQ4IDUxMmMxOCAwIDMzLjgtMTIuMSAzOC42LTI5LjVsMjQtODhjNS4zLTE5LjQtNC42LTM5LjctMjMuMi00Ny40bC05Ni00MGMtMTYuMy02LjgtMzUuMi0yLjEtNDYuMyAxMS42TDMwNC43IDM2OEMyMzQuMyAzMzQuNyAxNzcuMyAyNzcuNyAxNDQgMjA3LjNMMTkzLjMgMTY3YzEzLjctMTEuMiAxOC40LTMwIDExLjYtNDYuM2wtNDAtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBob3RvRmlsbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMEg1NzZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMjg4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDI1NmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjRjMC0zNS4zIDI4LjctNjQgNjQtNjR6TTQ3NiAxMDYuN0M0NzEuNSAxMDAgNDY0IDk2IDQ1NiA5NnMtMTUuNSA0LTIwIDEwLjdsLTU2IDg0TDM2Mi43IDE2OWMtNC42LTUuNy0xMS41LTktMTguNy05cy0xNC4yIDMuMy0xOC43IDlsLTY0IDgwYy01LjggNy4yLTYuOSAxNy4xLTIuOSAyNS40czEyLjQgMTMuNiAyMS42IDEzLjZoODAgNDhINTUyYzguOSAwIDE3LTQuOSAyMS4yLTEyLjdzMy43LTE3LjMtMS4yLTI0LjZsLTk2LTE0NHpNMzM2IDk2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTY0IDEyOGg5NlYzODR2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NEg1MTJ2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE5MmMwLTM1LjMgMjguNy02NCA2NC02NHptOCA2NGMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgOC44IDcuMiAxNiAxNiAxNkg4OGM4LjggMCAxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkg3MnptMCAxMDRjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZIODhjOC44IDAgMTYtNy4yIDE2LTE2VjMxMmMwLTguOC03LjItMTYtMTYtMTZINzJ6bTAgMTA0Yy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2SDg4YzguOCAwIDE2LTcuMiAxNi0xNlY0MTZjMC04LjgtNy4yLTE2LTE2LTE2SDcyem0zMzYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDE2YzguOCAwIDE2LTcuMiAxNi0xNlY0MTZjMC04LjgtNy4yLTE2LTE2LTE2SDQyNGMtOC44IDAtMTYgNy4yLTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaWdneUJhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDk2bDAgLjdjLTUuMy0uNC0xMC42LS43LTE2LS43SDI1NmMtMTYuNSAwLTMyLjUgMi4xLTQ3LjggNmMtLjEtMi0uMi00LS4yLTZjMC01MyA0My05NiA5Ni05NnM5NiA0MyA5NiA5NnptLTE2IDMyYzMuNSAwIDcgLjEgMTAuNCAuM2M0LjIgLjMgOC40IC43IDEyLjYgMS4zQzQyNC42IDEwOS4xIDQ1MC44IDk2IDQ4MCA5NmgxMS41YzEwLjQgMCAxOCA5LjggMTUuNSAxOS45bC0xMy44IDU1LjJjMTUuOCAxNC44IDI4LjcgMzIuOCAzNy41IDUyLjlINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDUxMmMtOS4xIDEyLjEtMTkuOSAyMi45LTMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDQxNmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDQ4SDI1NnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQxNmMtMzQuOS0yNi4yLTU4LjctNjYuMy02My4yLTExMkg2OGMtMzcuNiAwLTY4LTMwLjQtNjgtNjhzMzAuNC02OCA2OC02OGg0YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDY4Yy0xMSAwLTIwIDktMjAgMjBzOSAyMCAyMCAyMEg5OS4yYzEyLjEtNTkuOCA1Ny43LTEwNy41IDExNi4zLTEyMi44YzEyLjktMy40IDI2LjUtNS4yIDQwLjUtNS4ySDM4NHptNjQgMTM2YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpbGxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiA5NmMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWMjU2aDk2VjE0NGMwLTI2LjUtMjEuNS00OC00OC00OHpNMCAxNDRDMCA4Mi4xIDUwLjEgMzIgMTEyIDMyczExMiA1MC4xIDExMiAxMTJWMzY4YzAgNjEuOS01MC4xIDExMi0xMTIgMTEyUzAgNDI5LjkgMCAzNjhWMTQ0ek01NTQuOSAzOTkuNGMtNy4xIDEyLjMtMjMuNyAxMy4xLTMzLjggMy4xTDMzMy41IDIxNC45Yy0xMC0xMC05LjMtMjYuNyAzLjEtMzMuOEMzNjAgMTY3LjcgMzg3LjEgMTYwIDQxNiAxNjBjODguNCAwIDE2MCA3MS42IDE2MCAxNjBjMCAyOC45LTcuNyA1Ni0yMS4xIDc5LjR6bS01OS41IDU5LjVDNDcyIDQ3Mi4zIDQ0NC45IDQ4MCA0MTYgNDgwYy04OC40IDAtMTYwLTcxLjYtMTYwLTE2MGMwLTI4LjkgNy43LTU2IDIxLjEtNzkuNGM3LjEtMTIuMyAyMy43LTEzLjEgMzMuOC0zLjFMNDk4LjUgNDI1LjFjMTAgMTAgOS4zIDI2LjctMy4xIDMzLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpenphU2xpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY5LjcgLjljLTIyLjgtMS42LTQxLjkgMTQtNDcuNSAzNC43TDExMC40IDgwYy41IDAgMS4xIDAgMS42IDBjMTc2LjcgMCAzMjAgMTQzLjMgMzIwIDMyMGMwIC41IDAgMS4xIDAgMS42bDQ0LjQtMTEuOGMyMC44LTUuNSAzNi4zLTI0LjcgMzQuNy00Ny41QzQ5OC41IDE1OS41IDM1Mi41IDEzLjUgMTY5LjcgLjl6TTM5OS44IDQxMC4yYy4xLTMuNCAuMi02LjggLjItMTAuMmMwLTE1OS4xLTEyOC45LTI4OC0yODgtMjg4Yy0zLjQgMC02LjggLjEtMTAuMiAuMkwuNSA0OTEuOWMtMS41IDUuNSAuMSAxMS40IDQuMSAxNS40czkuOSA1LjYgMTUuNCA0LjFMMzk5LjggNDEwLjJ6TTE3NiAyMDhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em02NCAxMjhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNOTYgMzg0YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYWNlT2ZXb3JzaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMDkuM1YyMTcuNkwxODMuMyAyNDJjLTE0LjUgOC43LTIzLjMgMjQuMy0yMy4zIDQxLjJWNTEyaDk2VjQxNmMwLTM1LjMgMjguNy02NCA2NC02NHM2NCAyOC43IDY0IDY0djk2aDk2VjI4My4yYzAtMTYuOS04LjgtMzIuNS0yMy4zLTQxLjJMNDE2IDIxNy42VjEwOS4zYzAtOC41LTMuNC0xNi42LTkuNC0yMi42TDMzMS4zIDExLjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDIzMy40IDg2LjZjLTYgNi05LjQgMTQuMS05LjQgMjIuNnpNMjQuOSAzMzAuM0M5LjUgMzM4LjggMCAzNTQuOSAwIDM3Mi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg4MFYyNzMuNkwyNC45IDMzMC4zek01OTIgNTEyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM3Mi40YzAtMTcuNS05LjUtMzMuNi0yNC45LTQyLjFMNTEyIDI3My42VjUxMmg4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxhbmVBcnJpdmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS4zIDE2Ni45TDAgNjhDMCA1Ny43IDkuNSA1MC4xIDE5LjUgNTIuM2wzNS42IDcuOWMxMC42IDIuMyAxOS4yIDkuOSAyMyAyMEw5NiAxMjhsMTI3LjMgMzcuNkwxODEuOCAyMC40QzE3OC45IDEwLjIgMTg2LjYgMCAxOTcuMiAwaDQwLjFjMTEuNiAwIDIyLjIgNi4yIDI3LjkgMTYuM2wxMDkgMTkzLjggMTA3LjIgMzEuN2MxNS45IDQuNyAzMC44IDEyLjUgNDMuNyAyMi44bDM0LjQgMjcuNmMyNCAxOS4yIDE4LjEgNTcuMy0xMC43IDY4LjJjLTQxLjIgMTUuNi04Ni4yIDE4LjEtMTI4LjggN0wxMjEuNyAyODkuOGMtMTEuMS0yLjktMjEuMi04LjctMjkuMy0xNi45TDkuNSAxODkuNGMtNS45LTYtOS4zLTE0LjEtOS4zLTIyLjV6TTMyIDQ0OEg2MDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTk2LTgwYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTEyOC0xNmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lQ2lyY2xlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBjLTM1IDAtNjQgNTkuNS02NCA5My43djg0LjZMOC4xIDI4My40Yy01IDIuOC04LjEgOC4yLTguMSAxMy45djY1LjVjMCAxMC42IDEwLjIgMTguMyAyMC40IDE1LjRsMTcxLjYtNDkgMCA3MC45LTU3LjYgNDMuMmMtNCAzLTYuNCA3LjgtNi40IDEyLjh2NDJjMCA3LjggNi4zIDE0IDE0IDE0YzEuMyAwIDIuNi0uMiAzLjktLjVMMjU2IDQ4MGwxMTAuMSAzMS41YzEuMyAuNCAyLjYgLjUgMy45IC41YzYgMCAxMS4xLTMuNyAxMy4xLTlDMzQ0LjUgNDcwLjcgMzIwIDQyMi4yIDMyMCAzNjhjMC02MC42IDMwLjYtMTE0IDc3LjEtMTQ1LjZMMzIwIDE3OC4zVjkzLjdDMzIwIDU5LjUgMjkyIDAgMjU2IDB6TTY0MCAzNjhhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTc2LjctNDMuM2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNmwtNzIgNzJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwbC00MC00MGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ4MCAzODUuNGw2MC43LTYwLjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lQ2lyY2xlRXhjbGFtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBjLTM1IDAtNjQgNTkuNS02NCA5My43djg0LjZMOC4xIDI4My40Yy01IDIuOC04LjEgOC4yLTguMSAxMy45djY1LjVjMCAxMC42IDEwLjIgMTguMyAyMC40IDE1LjRsMTcxLjYtNDkgMCA3MC45LTU3LjYgNDMuMmMtNCAzLTYuNCA3LjgtNi40IDEyLjh2NDJjMCA3LjggNi4zIDE0IDE0IDE0YzEuMyAwIDIuNi0uMiAzLjktLjVMMjU2IDQ4MGwxMTAuMSAzMS41YzEuMyAuNCAyLjYgLjUgMy45IC41YzYgMCAxMS4xLTMuNyAxMy4xLTlDMzQ0LjUgNDcwLjcgMzIwIDQyMi4yIDMyMCAzNjhjMC02MC42IDMwLjYtMTE0IDc3LjEtMTQ1LjZMMzIwIDE3OC4zVjkzLjdDMzIwIDU5LjUgMjkyIDAgMjU2IDB6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTk2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMC0xNDRjOC44IDAgMTYgNy4yIDE2IDE2djgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI4OGMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDBjLTM1IDAtNjQgNTkuNS02NCA5My43djg0LjZMOC4xIDI4My40Yy01IDIuOC04LjEgOC4yLTguMSAxMy45djY1LjVjMCAxMC42IDEwLjIgMTguMyAyMC40IDE1LjRsMTcxLjYtNDkgMCA3MC45LTU3LjYgNDMuMmMtNCAzLTYuNCA3LjgtNi40IDEyLjh2NDJjMCA3LjggNi4zIDE0IDE0IDE0YzEuMyAwIDIuNi0uMiAzLjktLjVMMjU2IDQ4MGwxMTAuMSAzMS41YzEuMyAuNCAyLjYgLjUgMy45IC41YzYgMCAxMS4xLTMuNyAxMy4xLTlDMzQ0LjUgNDcwLjcgMzIwIDQyMi4yIDMyMCAzNjhjMC02MC42IDMwLjYtMTE0IDc3LjEtMTQ1LjZMMzIwIDE3OC4zVjkzLjdDMzIwIDU5LjUgMjkyIDAgMjU2IDB6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em01OS4zLTE4MC43TDUxOC42IDM2OGwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEw0OTYgMzkwLjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkw0NzMuNCAzNjhsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ5NiAzNDUuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGFuZURlcGFydHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODEgMTE0LjlMMTg2LjEgNDEuOGMtMTYuNy02LjItMzUuMi01LjMtNTEuMSAyLjdMODkuMSA2Ny40Qzc4IDczIDc3LjIgODguNSA4Ny42IDk1LjJsMTQ2LjkgOTQuNUwxMzYgMjQwIDc3LjggMjE0LjFjLTguNy0zLjktMTguOC0zLjctMjcuMyAuNkwxOC4zIDIzMC44Yy05LjMgNC43LTExLjggMTYuOC01IDI0LjdsNzMuMSA4NS4zYzYuMSA3LjEgMTUgMTEuMiAyNC4zIDExLjJIMjQ4LjRjNSAwIDkuOS0xLjIgMTQuMy0zLjRMNTM1LjYgMjEyLjJjNDYuNS0yMy4zIDgyLjUtNjMuMyAxMDAuOC0xMTJDNjQ1LjkgNzUgNjI3LjIgNDggNjAwLjIgNDhINTQyLjhjLTIwLjIgMC00MC4yIDQuOC01OC4yIDE0TDM4MSAxMTQuOXpNMCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxhbmVMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA5My43QzE5MiA1OS41IDIyMSAwIDI1NiAwYzM2IDAgNjQgNTkuNSA2NCA5My43djg0LjZsMTAxLjggNTguMkM0MTggMjQ3LjYgNDE2IDI1OS42IDQxNiAyNzJ2MjQuNmMtMTcuOSAxMC40LTMwLjMgMjkuMS0zMS44IDUwLjlMMzIwIDMyOS4xVjQwMGw1Ny42IDQzLjJjNCAzIDYuNCA3LjggNi40IDEyLjh2MjQgMThjMCA3LjgtNi4zIDE0LTE0IDE0Yy0xLjMgMC0yLjYtLjItMy45LS41TDI1NiA0ODAgMTQ1LjkgNTExLjVjLTEuMyAuNC0yLjYgLjUtMy45IC41Yy03LjggMC0xNC02LjMtMTQtMTRWNDU2YzAtNSAyLjQtOS44IDYuNC0xMi44TDE5MiA0MDBsMC03MC45LTE3MS42IDQ5QzEwLjIgMzgxLjEgMCAzNzMuNCAwIDM2Mi44VjI5Ny4zYzAtNS43IDMuMS0xMSA4LjEtMTMuOUwxOTIgMTc4LjNWOTMuN3pNNTI4IDI0MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NDhoNjRWMjcyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tODAgMzJjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MHY0OGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJINDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNTJjMC0xNy43IDE0LjMtMzIgMzItMzJWMjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGFuZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC42IDMyMGg3My44YzM0LjIgMCA5My43LTI4IDkzLjctNjRjMC0zNS01OS41LTY0LTkzLjctNjRsLTExNi42IDBMMjk3LjIgMTYuMUMyOTEuNSA2LjIgMjgwLjkgMCAyNjkuNCAwSDIxMy4yYy0xMC42IDAtMTguMyAxMC4yLTE1LjQgMjAuNGw0MC4zIDE0MC45TDM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNDQwLjYgMzIwem0tNzguMSA2MS42TDQxLjUgMTI4LjdDMzYgMTMwLjYgMzIgMTM1LjkgMzIgMTQyYzAgMS4zIC4yIDIuNiAuNSAzLjlMNjQgMjU2IDMyLjUgMzY2LjFjLS40IDEuMy0uNSAyLjYtLjUgMy45YzAgNy44IDYuMyAxNCAxNCAxNEg4OGM1IDAgOS44LTIuNCAxMi44LTYuNEwxNDQgMzIwSDI0Ni45bC00OSAxNzEuNmMtMi45IDEwLjIgNC44IDIwLjQgMTUuNCAyMC40bDU2LjIgMGMxMS41IDAgMjIuMS02LjIgMjcuOC0xNi4xbDY1LjMtMTE0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDkzLjdDMTkyIDU5LjUgMjIxIDAgMjU2IDBjMzYgMCA2NCA1OS41IDY0IDkzLjdsMCA2Ni4zTDQ5Ny44IDI3OC41YzguOSA1LjkgMTQuMiAxNS45IDE0LjIgMjYuNnY1Ni43YzAgMTAuOS0xMC43IDE4LjYtMjEuMSAxNS4yTDMyMCAzMjB2ODBsNTcuNiA0My4yYzQgMyA2LjQgNy44IDYuNCAxMi44djQyYzAgNy44LTYuMyAxNC0xNCAxNGMtMS4zIDAtMi42LS4yLTMuOS0uNUwyNTYgNDgwIDE0NS45IDUxMS41Yy0xLjMgLjQtMi42IC41LTMuOSAuNWMtNy44IDAtMTQtNi4zLTE0LTE0VjQ1NmMwLTUgMi40LTkuOCA2LjQtMTIuOEwxOTIgNDAwVjMyMEwyMS4xIDM3N0MxMC43IDM4MC40IDAgMzcyLjcgMCAzNjEuOFYzMDUuMWMwLTEwLjcgNS4zLTIwLjcgMTQuMi0yNi42TDE5MiAxNjBWOTMuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxhbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgyLjMgMTkyYzM0LjIgMCA5My43IDI5IDkzLjcgNjRjMCAzNi01OS41IDY0LTkzLjcgNjRsLTExNi42IDBMMjY1LjIgNDk1LjljLTUuNyAxMC0xNi4zIDE2LjEtMjcuOCAxNi4xbC01Ni4yIDBjLTEwLjYgMC0xOC4zLTEwLjItMTUuNC0yMC40bDQ5LTE3MS42TDExMiAzMjAgNjguOCAzNzcuNmMtMyA0LTcuOCA2LjQtMTIuOCA2LjRsLTQyIDBjLTcuOCAwLTE0LTYuMy0xNC0xNGMwLTEuMyAuMi0yLjYgLjUtMy45TDMyIDI1NiAuNSAxNDUuOWMtLjQtMS4zLS41LTIuNi0uNS0zLjljMC03LjggNi4zLTE0IDE0LTE0bDQyIDBjNSAwIDkuOCAyLjQgMTIuOCA2LjRMMTEyIDE5MmwxMDIuOSAwLTQ5LTE3MS42QzE2Mi45IDEwLjIgMTcwLjYgMCAxODEuMiAwbDU2LjIgMGMxMS41IDAgMjIuMSA2LjIgMjcuOCAxNi4xTDM2NS43IDE5MmwxMTYuNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGFudFdpbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDEyMGMwLTMwLjkgMjUuMS01NiA1Ni01NnM1NiAyNS4xIDU2IDU2djEzYy0yOS4zIDEwLTQ4IDM0LjUtNDggNzAuMWMwIDI3LjkgMjUuMyA3NC44IDY2IDExMS42YzMuOCAzLjUgOC45IDUuMyAxNCA1LjNzMTAuMi0xLjggMTQtNS4zYzQwLjctMzYuOCA2Ni04My43IDY2LTExMS42YzAtMzUuNi0xOC43LTYwLjItNDgtNzAuMVYxMjBDNDY0IDUzLjcgNDEwLjMgMCAzNDQgMFMyMjQgNTMuNyAyMjQgMTIwdjIxLjhDMjA3LjMgMTMzIDE4OC4yIDEyOCAxNjggMTI4Yy02Ni4zIDAtMTIwIDUzLjctMTIwIDEyMHYxM2MtMjkuMyAxMC00OCAzNC41LTQ4IDcwLjFDMCAzNTkgMjUuMyA0MDUuOSA2NiA0NDIuN2MzLjggMy41IDguOSA1LjMgMTQgNS4zczEwLjItMS44IDE0LTUuM2M0MC43LTM2LjggNjYtODMuNyA2Ni0xMTEuNmMwLTM1LjYtMTguNy02MC4yLTQ4LTcwLjFWMjQ4YzAtMzAuOSAyNS4xLTU2IDU2LTU2czU2IDI1LjEgNTYgNTZ2MzJWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjgwIDI0OCAxMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYXRlV2hlYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDMyYzQ0LjIgMCA4MCAzNS44IDgwIDgwdjE2YzAgOC44LTcuMiAxNi0xNiAxNmMtNDQuMiAwLTgwLTM1LjgtODAtODBWNDhjMC04LjggNy4yLTE2IDE2LTE2ek01NiA2NGg0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpNMjQgMTM2SDEzNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptOCA5NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGg0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1NmMtMTMuMyAwLTI0LTEwLjctMjQtMjR6TTI3MiA0OGMwLTguOCA3LjItMTYgMTYtMTZjNDQuMiAwIDgwIDM1LjggODAgODB2MTZjMCA4LjgtNy4yIDE2LTE2IDE2Yy00NC4yIDAtODAtMzUuOC04MC04MFY0OHpNNDAwIDMyYzQ0LjIgMCA4MCAzNS44IDgwIDgwdjE2YzAgOC44LTcuMiAxNi0xNiAxNmMtNDQuMiAwLTgwLTM1LjgtODAtODBWNDhjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNjB2MTZjMCA0NC4yLTM1LjggODAtODAgODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNTZjMC00NC4yIDM1LjgtODAgODAtODBjOC44IDAgMTYgNy4yIDE2IDE2ek0zNTIgMTc2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDQ0LjItMzUuOCA4MC04MCA4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI1NmMwLTQ0LjIgMzUuOC04MCA4MC04MHptLTk2IDE2djE2YzAgNDQuMi0zNS44IDgwLTgwIDgwYy04LjggMC0xNi03LjItMTYtMTZWMjU2YzAtNDQuMiAzNS44LTgwIDgwLTgwYzguOCAwIDE2IDcuMiAxNiAxNnpNMy41IDM0Ny42QzEuNiAzMzIuOSAxMyAzMjAgMjcuOCAzMjBINDg0LjJjMTQuOCAwIDI2LjIgMTIuOSAyNC40IDI3LjZDNTAyLjMgMzk3LjggNDY0LjIgNDM3IDQxNiA0NDZ2MmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMydi0yYy00OC4yLTktODYuMy00OC4yLTkyLjUtOTguNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03MyAzOWMtMTQuOC05LjEtMzMuNC05LjQtNDguNS0uOVMwIDYyLjYgMCA4MFY0MzJjMCAxNy40IDkuNCAzMy40IDI0LjUgNDEuOXMzMy43IDguMSA0OC41LS45TDM2MSAyOTdjMTQuMy04LjcgMjMtMjQuMiAyMy00MXMtOC43LTMyLjItMjMtNDFMNzMgMzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsdWdDaXJjbGVCb2x0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBDNzguMyAwIDY0IDE0LjMgNjQgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTI4OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMzIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMydjMyYzAgNzcuNCA1NSAxNDIgMTI4IDE1Ni44VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQxMi44YzEyLjMtMi41IDI0LjEtNi40IDM1LjEtMTEuNWMtMi4xLTEwLjgtMy4xLTIxLjktMy4xLTMzLjNjMC04MC4zIDUzLjgtMTQ4IDEyNy4zLTE2OS4yYy41LTIuMiAuNy00LjUgLjctNi44YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyek00MzIgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptNDcuOS0yMjVjNC4zIDMuNyA1LjQgOS45IDIuNiAxNC45TDQ1Mi40IDM1Nkg0ODhjNS4yIDAgOS44IDMuMyAxMS40IDguMnMtLjEgMTAuMy00LjIgMTMuNGwtOTYgNzJjLTQuNSAzLjQtMTAuOCAzLjItMTUuMS0uNnMtNS40LTkuOS0yLjYtMTQuOUw0MTEuNiAzODBIMzc2Yy01LjIgMC05LjgtMy4zLTExLjQtOC4ycy4xLTEwLjMgNC4yLTEzLjRsOTYtNzJjNC41LTMuNCAxMC44LTMuMiAxNS4xIC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbHVnQ2lyY2xlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM3OC4zIDAgNjQgMTQuMyA2NCAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMjg4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zMiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ2MzJjMCA3Ny40IDU1IDE0MiAxMjggMTU2LjhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDEyLjhjMTIuMy0yLjUgMjQuMS02LjQgMzUuMS0xMS41Yy0yLjEtMTAuOC0zLjEtMjEuOS0zLjEtMzMuM2MwLTgwLjMgNTMuOC0xNDggMTI3LjMtMTY5LjJjLjUtMi4yIC43LTQuNSAuNy02LjhjMC0xNy43LTE0LjMtMzItMzItMzJIMzJ6TTU3NiAzNjhhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTc2LjctNDMuM2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNmwtNzIgNzJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwbC00MC00MGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQxNiAzODUuNGw2MC43LTYwLjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsdWdDaXJjbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwQzc4LjMgMCA2NCAxNC4zIDY0IDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0yODggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTMyIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMnYzMmMwIDc3LjQgNTUgMTQyIDEyOCAxNTYuOFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0MTIuOGMxMi4zLTIuNSAyNC4xLTYuNCAzNS4xLTExLjVjLTIuMS0xMC44LTMuMS0yMS45LTMuMS0zMy4zYzAtODAuMyA1My44LTE0OCAxMjcuMy0xNjkuMmMuNS0yLjIgLjctNC41IC43LTYuOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMnpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTAtOTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0wLTE0NGM4LjggMCAxNiA3LjIgMTYgMTZ2ODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjg4YzAtOC44IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1Z0NpcmNsZU1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBDNzguMyAwIDY0IDE0LjMgNjQgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTI4OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMzIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMydjMyYzAgNzcuNCA1NSAxNDIgMTI4IDE1Ni44VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQxMi44YzEyLjMtMi41IDI0LjEtNi40IDM1LjEtMTEuNWMtMi4xLTEwLjgtMy4xLTIxLjktMy4xLTMzLjNjMC04MC4zIDUzLjgtMTQ4IDEyNy4zLTE2OS4yYy41LTIuMiAuNy00LjUgLjctNi44YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyek01NzYgMzY4YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS02NCAwYzAgOC44LTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZINDk2YzguOCAwIDE2IDcuMiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1Z0NpcmNsZVBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM3OC4zIDAgNjQgMTQuMyA2NCAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMjg4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zMiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ2MzJjMCA3Ny40IDU1IDE0MiAxMjggMTU2LjhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDEyLjhjMTIuMy0yLjUgMjQuMS02LjQgMzUuMS0xMS41Yy0yLjEtMTAuOC0zLjEtMjEuOS0zLjEtMzMuM2MwLTgwLjMgNTMuOC0xNDggMTI3LjMtMTY5LjJjLjUtMi4yIC43LTQuNSAuNy02LjhjMC0xNy43LTE0LjMtMzItMzItMzJIMzJ6TTQzMiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0xNi0yMDh2NDhoNDhjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZINDQ4djQ4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjM4NEgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoNDhWMzA0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsdWdDaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwQzc4LjMgMCA2NCAxNC4zIDY0IDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0yODggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTMyIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMnYzMmMwIDc3LjQgNTUgMTQyIDEyOCAxNTYuOFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0MTIuOGMxMi4zLTIuNSAyNC4xLTYuNCAzNS4xLTExLjVjLTIuMS0xMC44LTMuMS0yMS45LTMuMS0zMy4zYzAtODAuMyA1My44LTE0OCAxMjcuMy0xNjkuMmMuNS0yLjIgLjctNC41IC43LTYuOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMnpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTU5LjMtMTgwLjdMNDU0LjYgMzY4bDM2LjcgMzYuN2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwTDQzMiAzOTAuNmwtMzYuNyAzNi43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42TDQwOS40IDM2OGwtMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDMyIDM0NS40bDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsdWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM3OC4zIDAgNjQgMTQuMyA2NCAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMjg4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zMiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ2MzJjMCA3Ny40IDU1IDE0MiAxMjggMTU2LjhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDEyLjhDMjk3IDM5OCAzNTIgMzMzLjQgMzUyIDI1NlYyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsdXNNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMTQ0SDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDE2MFYzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMDhIMzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDIyNFYzMnpNMCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgODBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjI0SDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDE5MlY0MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyODhINDAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI1NlY4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUG9kY2FzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTkuNCAzNzJjNDguNS0zMS4zIDgwLjYtODUuOSA4MC42LTE0OGMwLTk3LjItNzguOC0xNzYtMTc2LTE3NlM0OCAxMjYuOCA0OCAyMjRjMCA2Mi4xIDMyLjEgMTE2LjYgODAuNiAxNDhjMS4yIDE3LjMgNCAzOCA3LjIgNTcuMWwuMiAxQzU2IDM5NS44IDAgMzE2LjUgMCAyMjRDMCAxMDAuMyAxMDAuMyAwIDIyNCAwUzQ0OCAxMDAuMyA0NDggMjI0YzAgOTIuNS01NiAxNzEuOS0xMzYgMjA2LjFsLjItMS4xYzMuMS0xOS4yIDYtMzkuOCA3LjItNTd6bS0yLjMtMzguMWMtMS42LTUuNy0zLjktMTEuMS03LTE2LjJjLTUuOC05LjctMTMuNS0xNy0yMS45LTIyLjRjMTkuNS0xNy42IDMxLjgtNDMgMzEuOC03MS4zYzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMjguMyAxMi4zIDUzLjggMzEuOCA3MS4zYy04LjQgNS40LTE2LjEgMTIuNy0yMS45IDIyLjRjLTMuMSA1LjEtNS40IDEwLjUtNyAxNi4yQzk5LjggMzA3LjUgODAgMjY4IDgwIDIyNGMwLTc5LjUgNjQuNS0xNDQgMTQ0LTE0NHMxNDQgNjQuNSAxNDQgMTQ0YzAgNDQtMTkuOCA4My41LTUwLjkgMTA5Ljl6TTIyNCAzMTJjMzIuOSAwIDY0IDguNiA2NCA0My44YzAgMzMtMTIuOSAxMDQuMS0yMC42IDEzMi45Yy01LjEgMTktMjQuNSAyMy40LTQzLjQgMjMuNHMtMzguMi00LjQtNDMuNC0yMy40Yy03LjgtMjguNS0yMC42LTk5LjctMjAuNi0xMzIuOGMwLTM1LjEgMzEuMS00My44IDY0LTQzLjh6bTAtMTQ0YTU2IDU2IDAgMSAxIDAgMTEyIDU2IDU2IDAgMSAxIDAtMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQb29TdG9ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzYuOSAuMmMtNS41LS43LTExIDEuNC0xNC41IDUuN3MtNC42IDEwLjEtMi44IDE1LjNjMi44IDguMiA0LjMgMTYuOSA0LjMgMjYuMWMwIDIxLjctOC41IDM3LjItMjEuOSA0Ny42Yy0xMy44IDEwLjgtMzQgMTctNTcuOCAxN0gxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0YzAgMTIuMiAzLjQgMjMuNSA5LjMgMzMuMkMzMS43IDIxNi4yIDAgMjUyLjQgMCAyOTZjMCA0MC45IDI4IDc1LjQgNjUuOCA4NS4yYy01LjMtMTguNSAxLTM4LjUgMTYuMi01MC43bDE2MC0xMjhjMTcuNi0xNC4xIDQyLjYtMTQgNjAuMiAuMnMyMi44IDM4LjYgMTIuOCA1OC44TDI4NS43IDMyMEgzMDRjMjAuNCAwIDM4LjUgMTIuOSA0NS4zIDMyLjFjMy43IDEwLjYgMy41IDIxLjggMCAzMS45SDM2MGM0OC42IDAgODgtMzkuNCA4OC04OGMwLTQzLjYtMzEuNy03OS44LTczLjMtODYuOGM1LjktOS43IDkuMy0yMS4xIDkuMy0zMy4yYzAtMzUuMy0yOC43LTY0LTY0LTY0aC0xLjRjLjktNS40IDEuNC0xMC45IDEuNC0xNi42YzAtNDguNy0zNi4xLTg4LjktODMuMS05NS4yem00NS4xIDIyNy40Yy01LjgtNC43LTE0LjItNC43LTIwLjEtLjFsLTE2MCAxMjhjLTUuMyA0LjItNy40IDExLjQtNS4xIDE3LjhzOC4zIDEwLjcgMTUuMSAxMC43aDcwLjFMMTI5LjcgNDg4LjhjLTMuNCA2LjctMS42IDE0LjkgNC4zIDE5LjZzMTQuMiA0LjcgMjAuMSAuMWwxNjAtMTI4YzUuMy00LjIgNy40LTExLjQgNS4xLTE3LjhzLTguMy0xMC43LTE1LjEtMTAuN0gyMzMuOWw1Mi40LTEwNC44YzMuNC02LjcgMS42LTE0LjktNC4zLTE5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjguOSAuOWMtNS41LS43LTExIDEuNC0xNC41IDUuN3MtNC42IDEwLjEtMi44IDE1LjRjMi44IDguMiA0LjMgMTYuOSA0LjMgMjYuMWMwIDQ0LjEtMzUuNyA3OS45LTc5LjggODBIMTYwYy0zNS4zIDAtNjQgMjguNy02NCA2NGMwIDE5LjEgOC40IDM2LjMgMjEuNyA0OEgxMDRjLTM5LjggMC03MiAzMi4yLTcyIDcyYzAgMjMuMiAxMSA0My44IDI4IDU3Yy0zNC4xIDUuNy02MCAzNS4zLTYwIDcxYzAgMzkuOCAzMi4yIDcyIDcyIDcySDQ0MGMzOS44IDAgNzItMzIuMiA3Mi03MmMwLTM1LjctMjUuOS02NS4zLTYwLTcxYzE3LTEzLjIgMjgtMzMuOCAyOC01N2MwLTM5LjgtMzIuMi03Mi03Mi03MkgzOTQuM2MxMy4zLTExLjcgMjEuNy0yOC45IDIxLjctNDhjMC0zNS4zLTI4LjctNjQtNjQtNjRoLTUuNWMzLjUtMTAgNS41LTIwLjggNS41LTMyYzAtNDguNi0zNi4yLTg4LjgtODMuMS05NS4xek0xOTIgMjU2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptOTYgMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptNjQgMTA4LjNjMCAyLjQtLjcgNC44LTIuMiA2LjdjLTguMiAxMC41LTM5LjUgNDUtOTMuOCA0NXMtODUuNi0zNC42LTkzLjgtNDVjLTEuNS0xLjktMi4yLTQuMy0yLjItNi43YzAtNi44IDUuNS0xMi4zIDEyLjMtMTIuM0gzMzkuN2M2LjggMCAxMi4zIDUuNSAxMi4zIDEyLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU0LjQgNi42YzMuNS00LjMgOS02LjUgMTQuNS01LjdDMzE1LjggNy4yIDM1MiA0Ny40IDM1MiA5NmMwIDExLjItMS45IDIyLTUuNSAzMkgzNTJjMzUuMyAwIDY0IDI4LjcgNjQgNjRjMCAxOS4xLTguNCAzNi4zLTIxLjcgNDhINDA4YzM5LjggMCA3MiAzMi4yIDcyIDcyYzAgMjMuMi0xMSA0My44LTI4IDU3YzM0LjEgNS43IDYwIDM1LjMgNjAgNzFjMCAzOS44LTMyLjIgNzItNzIgNzJINzJjLTM5LjggMC03Mi0zMi4yLTcyLTcyYzAtMzUuNyAyNS45LTY1LjMgNjAtNzFjLTE3LTEzLjItMjgtMzMuOC0yOC01N2MwLTM5LjggMzIuMi03MiA3Mi03MmgxMy43QzEwNC40IDIyOC4zIDk2IDIxMS4xIDk2IDE5MmMwLTM1LjMgMjguNy02NCA2NC02NGgxNi4yYzQ0LjEtLjEgNzkuOC0zNS45IDc5LjgtODBjMC05LjItMS41LTE3LjktNC4zLTI2LjFjLTEuOC01LjItLjgtMTEuMSAyLjgtMTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUG93ZXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjI1NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyek0xNDMuNSAxMjAuNmMxMy42LTExLjMgMTUuNC0zMS41IDQuMS00NS4xcy0zMS41LTE1LjQtNDUuMS00LjFDNDkuNyAxMTUuNCAxNiAxODEuOCAxNiAyNTZjMCAxMzIuNSAxMDcuNSAyNDAgMjQwIDI0MHMyNDAtMTA3LjUgMjQwLTI0MGMwLTc0LjItMzMuOC0xNDAuNi04Ni42LTE4NC42Yy0xMy42LTExLjMtMzMuOC05LjQtNDUuMSA0LjFzLTkuNCAzMy44IDQuMSA0NS4xYzM4LjkgMzIuMyA2My41IDgxIDYzLjUgMTM1LjRjMCA5Ny4yLTc4LjggMTc2LTE3NiAxNzZzLTE3Ni03OC44LTE3Ni0xNzZjMC01NC40IDI0LjctMTAzLjEgNjMuNS0xMzUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJlc2NyaXB0aW9uQm90dGxlTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyQzAgMTQuMyAxNC4zIDAgMzIgMEgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJDMTQuMyA5NiAwIDgxLjcgMCA2NFYzMnptMzIgOTZIMzUyVjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg5NmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4ek0xNjAgMjQwdjQ4SDExMmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjM1Mmg0OGM4LjggMCAxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNkgyMjRWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJlc2NyaXB0aW9uQm90dGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJDMCAxNC4zIDE0LjMgMCAzMiAwSDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMlY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0VjMyem0zMiA5NkgzNTJWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDk2Yy0zNS4zIDAtNjQtMjguNy02NC02NFY0MTZIMTQ0YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDMyVjMyMEgxNDRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzJWMjI0SDE0NGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgzMlYxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVByZXNjcmlwdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAwQzE0LjMgMCAwIDE0LjMgMCAzMlYxOTJ2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMjRoNTAuN2wxMjggMTI4TDEzNy40IDQ1Ny40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDI4OCAzOTcuMyAzOTMuNCA1MDIuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDMzMy4zIDM1MiA0MzguNiAyNDYuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwyODggMzA2LjdsLTg1LjgtODUuOEMyNTEuNCAyMDkuMSAyODggMTY0LjggMjg4IDExMkMyODggNTAuMSAyMzcuOSAwIDE3NiAwSDMyek0xNzYgMTYwSDY0VjY0SDE3NmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDBDOTIuNyAwIDY0IDI4LjcgNjQgNjR2OTZoNjRWNjRIMzU0LjdMMzg0IDkzLjNWMTYwaDY0VjkzLjNjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMNDAwIDE4LjdDMzg4IDYuNyAzNzEuNyAwIDM1NC43IDBIMTI4ek0zODQgMzUydjMyIDY0SDEyOFYzODQgMzY4IDM1MkgzODR6bTY0IDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1NmMwLTM1LjMtMjguNy02NC02NC02NEg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJINjR2NjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjM4NHpNNDMyIDI0OGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVB1bXBNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAzMnY5NkgyNTZWOTZoNjAuMWM0LjIgMCA4LjMgMS43IDExLjMgNC43bDMzLjkgMzMuOWMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDM3Mi43IDU1LjRjLTE1LTE1LTM1LjQtMjMuNC01Ni42LTIzLjRIMjU2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTExNy40IDE2MGMtMzMuMyAwLTYxIDI1LjUtNjMuOCA1OC43TDM1IDQ0Mi43QzMxLjkgNDgwIDYxLjMgNTEyIDk4LjggNTEySDI4NS4yYzM3LjQgMCA2Ni45LTMyIDYzLjgtNjkuM2wtMTguNy0yMjRjLTIuOC0zMy4yLTMwLjUtNTguNy02My44LTU4LjdIMTE3LjR6TTIxNiAyODB2MzJoMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjE2djMyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjM2MEgxMzZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoMzJWMjgwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVB1bXBTb2FwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAzMnY5NkgyNTZWOTZoNjAuMWM0LjIgMCA4LjMgMS43IDExLjMgNC43bDMzLjkgMzMuOWMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDM3Mi43IDU1LjRjLTE1LTE1LTM1LjQtMjMuNC01Ni42LTIzLjRIMjU2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTExNy40IDE2MGMtMzMuMyAwLTYxIDI1LjUtNjMuOCA1OC43TDM1IDQ0Mi43QzMxLjkgNDgwIDYxLjMgNTEyIDk4LjggNTEySDI4NS4yYzM3LjQgMCA2Ni45LTMyIDYzLjgtNjkuM2wtMTguNy0yMjRjLTIuOC0zMy4yLTMwLjUtNTguNy02My44LTU4LjdIMTE3LjR6TTI1NiAzNjBjMCAzNS4zLTI4LjcgNTYtNjQgNTZzLTY0LTIwLjctNjQtNTZjMC0zMi41IDM3LTgwLjkgNTAuOS05Ny45YzMuMi0zLjkgOC4xLTYuMSAxMy4xLTYuMXM5LjkgMi4yIDEzLjEgNi4xQzIxOSAyNzkuMSAyNTYgMzI3LjUgMjU2IDM2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHV6emxlUGllY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDEwNC44YzAtOS4yLTUuOC0xNy4zLTEzLjItMjIuOEMxNjcuMiA3My4zIDE2MCA2MS4zIDE2MCA0OGMwLTI2LjUgMjguNy00OCA2NC00OHM2NCAyMS41IDY0IDQ4YzAgMTMuMy03LjIgMjUuMy0xOC44IDM0Yy03LjQgNS41LTEzLjIgMTMuNi0xMy4yIDIyLjhjMCAxMi44IDEwLjQgMjMuMiAyMy4yIDIzLjJIMzM2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djU2LjhjMCAxMi44IDEwLjQgMjMuMiAyMy4yIDIzLjJjOS4yIDAgMTcuMy01LjggMjIuOC0xMy4yYzguNy0xMS42IDIwLjctMTguOCAzNC0xOC44YzI2LjUgMCA0OCAyOC43IDQ4IDY0cy0yMS41IDY0LTQ4IDY0Yy0xMy4zIDAtMjUuMy03LjItMzQtMTguOGMtNS41LTcuNC0xMy42LTEzLjItMjIuOC0xMy4yYy0xMi44IDAtMjMuMiAxMC40LTIzLjIgMjMuMlY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMjc5LjJjLTEyLjggMC0yMy4yLTEwLjQtMjMuMi0yMy4yYzAtOS4yIDUuOC0xNy4zIDEzLjItMjIuOGMxMS42LTguNyAxOC44LTIwLjcgMTguOC0zNGMwLTI2LjUtMjguNy00OC02NC00OHMtNjQgMjEuNS02NCA0OGMwIDEzLjMgNy4yIDI1LjMgMTguOCAzNGM3LjQgNS41IDEzLjIgMTMuNiAxMy4yIDIyLjhjMCAxMi44LTEwLjQgMjMuMi0yMy4yIDIzLjJINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM0My4yQzAgMzMwLjQgMTAuNCAzMjAgMjMuMiAzMjBjOS4yIDAgMTcuMyA1LjggMjIuOCAxMy4yQzU0LjcgMzQ0LjggNjYuNyAzNTIgODAgMzUyYzI2LjUgMCA0OC0yOC43IDQ4LTY0cy0yMS41LTY0LTQ4LTY0Yy0xMy4zIDAtMjUuMyA3LjItMzQgMTguOEM0MC41IDI1MC4yIDMyLjQgMjU2IDIzLjIgMjU2QzEwLjQgMjU2IDAgMjQ1LjYgMCAyMzIuOFYxNzZjMC0yNi41IDIxLjUtNDggNDgtNDhIMTY4LjhjMTIuOCAwIDIzLjItMTAuNCAyMy4yLTIzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMjU2YzAgODguNCA3MS42IDE2MCAxNjAgMTYwYzI4LjkgMCA1Ni03LjcgNzkuNC0yMS4xbC03Mi04Ni40Yy0xMS4zLTEzLjYtOS41LTMzLjggNC4xLTQ1LjFzMzMuOC05LjUgNDUuMSA0LjFsNzAuOSA4NS4xQzM3MS45IDMyNS44IDM4NCAyOTIuMyAzODQgMjU2YzAtODguNC03MS42LTE2MC0xNjAtMTYwUzY0IDE2Ny42IDY0IDI1NnpNMzQ0LjkgNDQ0LjZDMzEwIDQ2NyAyNjguNSA0ODAgMjI0IDQ4MEMxMDAuMyA0ODAgMCAzNzkuNyAwIDI1NlMxMDAuMyAzMiAyMjQgMzJzMjI0IDEwMC4zIDIyNCAyMjRjMCA1Ni4xLTIwLjYgMTA3LjQtNTQuNyAxNDYuN2w0Ny4zIDU2LjhjMTEuMyAxMy42IDkuNSAzMy44LTQuMSA0NS4xcy0zMy44IDkuNS00NS4xLTQuMWwtNDYuNi01NS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRcmNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4MEMwIDUzLjUgMjEuNSAzMiA0OCAzMmg5NmMyNi41IDAgNDggMjEuNSA0OCA0OHY5NmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODB6TTY0IDk2djY0aDY0Vjk2SDY0ek0wIDMzNmMwLTI2LjUgMjEuNS00OCA0OC00OGg5NmMyNi41IDAgNDggMjEuNSA0OCA0OHY5NmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzM2em02NCAxNnY2NGg2NFYzNTJINjR6TTMwNCAzMmg5NmMyNi41IDAgNDggMjEuNSA0OCA0OHY5NmMwIDI2LjUtMjEuNSA0OC00OCA0OEgzMDRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4em04MCA2NEgzMjB2NjRoNjRWOTZ6TTI1NiAzMDRjMC04LjggNy4yLTE2IDE2LTE2aDY0YzguOCAwIDE2IDcuMiAxNiAxNnM3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2czcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2OTZjMCA4LjgtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2cy03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMzA0ek0zNjggNDgwYTE2IDE2IDAgMSAxIDAtMzIgMTYgMTYgMCAxIDEgMCAzMnptNjQgMGExNiAxNiAwIDEgMSAwLTMyIDE2IDE2IDAgMSAxIDAgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVF1ZXN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwIDE2MGMwLTM1LjMgMjguNy02NCA2NC02NGgzMmMzNS4zIDAgNjQgMjguNyA2NCA2NHYzLjZjMCAyMS44LTExLjEgNDIuMS0yOS40IDUzLjhsLTQyLjIgMjcuMWMtMjUuMiAxNi4yLTQwLjQgNDQuMS00MC40IDc0VjMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMydi0xLjRjMC04LjIgNC4yLTE1LjggMTEtMjAuMmw0Mi4yLTI3LjFjMzYuNi0yMy42IDU4LjgtNjQuMSA1OC44LTEwNy43VjE2MGMwLTcwLjctNTcuMy0xMjgtMTI4LTEyOEgxNDRDNzMuMyAzMiAxNiA4OS4zIDE2IDE2MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyem04MCAzMjBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRdW90ZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyMTZDMCAxNDkuNyA1My43IDk2IDEyMCA5Nmg4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyaC04Yy0zMC45IDAtNTYgMjUuMS01NiA1NnY4aDY0YzM1LjMgMCA2NCAyOC43IDY0IDY0djY0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYzMjAgMjg4IDIxNnptMjU2IDBjMC02Ni4zIDUzLjctMTIwIDEyMC0xMjBoOGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmgtOGMtMzAuOSAwLTU2IDI1LjEtNTYgNTZ2OGg2NGMzNS4zIDAgNjQgMjguNyA2NCA2NHY2NGMwIDM1LjMtMjguNyA2NC02NCA2NEgzMjBjLTM1LjMgMC02NC0yOC43LTY0LTY0VjMyMCAyODggMjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRdW90ZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAyOTZjMCA2Ni4zLTUzLjcgMTIwLTEyMCAxMjBoLThjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoOGMzMC45IDAgNTYtMjUuMSA1Ni01NnYtOEgzMjBjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE2MGMwLTM1LjMgMjguNy02NCA2NC02NGg2NGMzNS4zIDAgNjQgMjguNyA2NCA2NHYzMiAzMiA3MnptLTI1NiAwYzAgNjYuMy01My43IDEyMC0xMjAgMTIwSDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDhjMzAuOSAwIDU2LTI1LjEgNTYtNTZ2LThINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE2MGMwLTM1LjMgMjguNy02NCA2NC02NGg2NGMzNS4zIDAgNjQgMjguNyA2NCA2NHYzMiAzMiA3MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjI4OCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMjBoOTUuM0wyNjEuOCA0NjYuNGMxMC4xIDE0LjUgMzAuMSAxOCA0NC42IDcuOXMxOC0zMC4xIDcuOS00NC42TDIzMC4xIDMwOS41QzI4Mi44IDI4OC4xIDMyMCAyMzYuNCAzMjAgMTc2YzAtNzkuNS02NC41LTE0NC0xNDQtMTQ0SDY0ek0xNzYgMjU2SDY0Vjk2SDE3NmM0NC4yIDAgODAgMzUuOCA4MCA4MHMtMzUuOCA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmFkaWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNiAxODYuN2MtMjMuOSAxMy44LTQwIDM5LjctNDAgNjkuM0wzMiAyNTZDMTQuMyAyNTYtLjIgMjQxLjYgMiAyMjQuMUMxMC43IDE1NCA0Ny44IDkyLjcgMTAxLjMgNTJjMTQuMS0xMC43IDMzLjgtNS4zIDQyLjcgMTBsNzIgMTI0Ljd6TTI1NiAzMzZjMTQuNiAwIDI4LjItMy45IDQwLTEwLjdsNzIgMTI0LjhjOC44IDE1LjMgMy43IDM1LjEtMTIuNiA0MS45Yy0zMC42IDEyLjktNjQuMiAyMC05OS40IDIwcy02OC45LTcuMS05OS40LTIwYy0xNi4zLTYuOS0yMS40LTI2LjYtMTIuNi00MS45bDcyLTEyNC44YzExLjggNi44IDI1LjQgMTAuNyA0MCAxMC43em0yMjQtODBsLTE0NCAwYzAtMjkuNi0xNi4xLTU1LjUtNDAtNjkuM0wzNjggNjJjOC44LTE1LjMgMjguNi0yMC43IDQyLjctMTBjNTMuNiA0MC43IDkwLjYgMTAyIDk5LjQgMTcyLjFjMi4yIDE3LjUtMTIuNCAzMS45LTMwIDMxLjl6TTI1NiAyMDhhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSYWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTQuOCA0N2MxMi43LTMuNyAyMC0xNy4xIDE2LjMtMjkuOFM0OTQtMi44IDQ4MS4yIDFMNTEuNyAxMjYuOWMtOS40IDIuNy0xNy45IDcuMy0yNS4xIDEzLjJDMTAuNSAxNTEuNyAwIDE3MC42IDAgMTkydjRWMzA0IDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTkyYzAtMzUuMy0yOC43LTY0LTY0LTY0SDIxOC41TDQ5NC44IDQ3ek0zNjggMjQwYTgwIDgwIDAgMSAxIDAgMTYwIDgwIDgwIDAgMSAxIDAtMTYwek04MCAyNTZjMC04LjggNy4yLTE2IDE2LTE2aDk2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZ6TTY0IDMyMGMwLTguOCA3LjItMTYgMTYtMTZIMjA4YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZ6bTE2IDY0YzAtOC44IDcuMi0xNiAxNi0xNmg5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSYWluYm93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA5NkMxNzguNiA5NiA2NCAyMTAuNiA2NCAzNTJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUyQzAgMTc1LjMgMTQzLjMgMzIgMzIwIDMyczMyMCAxNDMuMyAzMjAgMzIwdjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkM1NzYgMjEwLjYgNDYxLjQgOTYgMzIwIDk2em0wIDE5MmMtMzUuMyAwLTY0IDI4LjctNjQgNjR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUyYzAtNzAuNyA1Ny4zLTEyOCAxMjgtMTI4czEyOCA1Ny4zIDEyOCAxMjh2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUyYzAtMzUuMy0yOC43LTY0LTY0LTY0ek0xNjAgMzUydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MmMwLTEyMy43IDEwMC4zLTIyNCAyMjQtMjI0czIyNCAxMDAuMyAyMjQgMjI0djk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MmMwLTg4LjQtNzEuNi0xNjAtMTYwLTE2MHMtMTYwIDcxLjYtMTYwIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmFua2luZ1N0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUzLjggNTQuMUwzMzAuMiA2LjNjLTMuOS04LjMtMTYuMS04LjYtMjAuNCAwTDI4Ni4yIDU0LjFsLTUyLjMgNy41Yy05LjMgMS40LTEzLjMgMTIuOS02LjQgMTkuOGwzOCAzNy05IDUyLjFjLTEuNCA5LjMgOC4yIDE2LjUgMTYuOCAxMi4ybDQ2LjktMjQuOCA0Ni42IDI0LjRjOC42IDQuMyAxOC4zLTIuOSAxNi44LTEyLjJsLTktNTIuMSAzOC0zNi42YzYuOC02LjggMi45LTE4LjMtNi40LTE5LjhsLTUyLjMtNy41ek0yNTYgMjU2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzg0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI4OGMwLTE3LjctMTQuMy0zMi0zMi0zMkgyNTZ6TTMyIDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDE2MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNTJjMC0xNy43LTE0LjMtMzItMzItMzJIMzJ6bTQxNiA5NnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDE2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDQ4MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlY2VpcHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMi4yQzIyLjUtMS43IDMyLjUtLjMgMzkuNiA1LjhMODAgNDAuNCAxMjAuNCA1LjhjOS03LjcgMjIuMy03LjcgMzEuMiAwTDE5MiA0MC40IDIzMi40IDUuOGM5LTcuNyAyMi4zLTcuNyAzMS4yIDBMMzA0IDQwLjQgMzQ0LjQgNS44YzcuMS02LjEgMTcuMS03LjUgMjUuNi0zLjZzMTQgMTIuNCAxNCAyMS44VjQ4OGMwIDkuNC01LjUgMTcuOS0xNCAyMS44cy0xOC41IDIuNS0yNS42LTMuNkwzMDQgNDcxLjZsLTQwLjQgMzQuNmMtOSA3LjctMjIuMyA3LjctMzEuMiAwTDE5MiA0NzEuNmwtNDAuNCAzNC42Yy05IDcuNy0yMi4zIDcuNy0zMS4yIDBMODAgNDcxLjYgMzkuNiA1MDYuMmMtNy4xIDYuMS0xNy4xIDcuNS0yNS42IDMuNlMwIDQ5Ny40IDAgNDg4VjI0QzAgMTQuNiA1LjUgNi4xIDE0IDIuMnpNOTYgMTQ0Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDI4OGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg5NnpNODAgMzUyYzAgOC44IDcuMiAxNiAxNiAxNkgyODhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIOTZjLTguOCAwLTE2IDcuMi0xNiAxNnpNOTYgMjQwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDI4OGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVjb3JkVmlueWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yNTYtOTZhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6bTAgMjI0YTEyOCAxMjggMCAxIDAgMC0yNTYgMTI4IDEyOCAwIDEgMCAwIDI1NnptMC05NmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlY3RhbmdsZUFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjI5LjUgMTczLjNsNzIgMTQ0YzUuOSAxMS45IDEuMSAyNi4zLTEwLjcgMzIuMnMtMjYuMyAxLjEtMzIuMi0xMC43TDI1My4yIDMyOEgxNjIuOGwtNS40IDEwLjdjLTUuOSAxMS45LTIwLjMgMTYuNy0zMi4yIDEwLjdzLTE2LjctMjAuMy0xMC43LTMyLjJsNzItMTQ0YzQuMS04LjEgMTIuNC0xMy4zIDIxLjUtMTMuM3MxNy40IDUuMSAyMS41IDEzLjN6TTIwOCAyMzcuN0wxODYuOCAyODBoNDIuM0wyMDggMjM3Ljd6TTM5MiAyNTZhMjQgMjQgMCAxIDAgMCA0OCAyNCAyNCAwIDEgMCAwLTQ4em0yNC00My45VjE4NGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djk2IDQ4YzAgMTMuMy0xMC43IDI0LTI0IDI0Yy02LjYgMC0xMi42LTIuNy0xNy03Yy05LjQgNC41LTE5LjkgNy0zMSA3Yy0zOS44IDAtNzItMzIuMi03Mi03MnMzMi4yLTcyIDcyLTcyYzguNCAwIDE2LjUgMS40IDI0IDQuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVjdGFuZ2xlTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDUxMmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2ek0xMjggMjg4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMzItMTI4YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTEyOCAzODRhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em05Ni0yNDhjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDIyNHptMCA5NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg0NDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjI0em0wIDk2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDQ0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlY3RhbmdsZVhtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMTc1IDE3NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw0NyA0NyA0Ny00N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTQ3IDQ3IDQ3IDQ3YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTQ3LTQ3LTQ3IDQ3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDQ3LTQ3LTQ3LTQ3Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVjeWNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzQuNyA0NS4xQzE5Mi4yIDE3IDIyMyAwIDI1NiAwczYzLjggMTcgODEuMyA0NS4xbDM4LjYgNjEuNyAyNy0xNS42YzguNC00LjkgMTguOS00LjIgMjYuNiAxLjdzMTEuMSAxNS45IDguNiAyNS4zbC0yMy40IDg3LjRjLTMuNCAxMi44LTE2LjYgMjAuNC0yOS40IDE3bC04Ny40LTIzLjRjLTkuNC0yLjUtMTYuMy0xMC40LTE3LjYtMjBzMy40LTE5LjEgMTEuOC0yMy45bDI4LjQtMTYuNEwyODMgNzljLTUuOC05LjMtMTYtMTUtMjctMTVzLTIxLjIgNS43LTI3IDE1bC0xNy41IDI4Yy05LjIgMTQuOC0yOC42IDE5LjUtNDMuNiAxMC41Yy0xNS4zLTkuMi0yMC4yLTI5LjItMTAuNy00NC40bDE3LjUtMjh6TTQyOS41IDI1MS45YzE1LTkgMzQuNC00LjMgNDMuNiAxMC41bDI0LjQgMzkuMWM5LjQgMTUuMSAxNC40IDMyLjQgMTQuNiA1MC4yYy4zIDUzLjEtNDIuNyA5Ni40LTk1LjggOTYuNEwzMjAgNDQ4djMyYzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTY0LTY0Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw2NC02NGM2LjktNi45IDE3LjItOC45IDI2LjItNS4yczE0LjggMTIuNSAxNC44IDIyLjJ2MzJsOTYuMiAwYzE3LjYgMCAzMS45LTE0LjQgMzEuOC0zMmMwLTUuOS0xLjctMTEuNy00LjgtMTYuN2wtMjQuNC0zOS4xYy05LjUtMTUuMi00LjctMzUuMiAxMC43LTQ0LjR6bS0zNjQuNi0zMUwzNiAyMDQuMmMtOC40LTQuOS0xMy4xLTE0LjMtMTEuOC0yMy45czguMi0xNy41IDE3LjYtMjBsODcuNC0yMy40YzEyLjgtMy40IDI2IDQuMiAyOS40IDE3TDE4MiAyNDEuMmMyLjUgOS40LS45IDE5LjMtOC42IDI1LjNzLTE4LjIgNi42LTI2LjYgMS43bC0yNi41LTE1LjNMNjguOCAzMzUuM2MtMy4xIDUtNC44IDEwLjgtNC44IDE2LjdjLS4xIDE3LjYgMTQuMiAzMiAzMS44IDMybDMyLjIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIuMiAwQzQyLjcgNDQ4LS4zIDQwNC44IDAgMzUxLjZjLjEtMTcuOCA1LjEtMzUuMSAxNC42LTUwLjJsNTAuMy04MC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdpc3RlcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNjAgMTUyYzAtMTMuMyAxMC43LTI0IDI0LTI0aDg4YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgMjgtMTQuNCA1Mi43LTM2LjMgNjdsMzQuMSA3NS4xYzUuNSAxMi4xIC4xIDI2LjMtMTEuOSAzMS44cy0yNi4zIC4xLTMxLjgtMTEuOUwyNjguOSAyODhIMjA4djcyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjI2NCAxNTJ6bTQ4IDg4aDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDIwOHY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVwZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjI0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC01MyA0My05NiA5Ni05NkgzMjB2MzJjMCAxMi45IDcuOCAyNC42IDE5LjggMjkuNnMyNS43IDIuMiAzNC45LTYuOWw2NC02NGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtNjQtNjRjLTkuMi05LjItMjIuOS0xMS45LTM0LjktNi45UzMyMCAxOS4xIDMyMCAzMlY2NEgxNjBDNzEuNiA2NCAwIDEzNS42IDAgMjI0em01MTIgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJjMCA1My00MyA5Ni05NiA5NkgxOTJWMzUyYzAtMTIuOS03LjgtMjQuNi0xOS44LTI5LjZzLTI1LjctMi4yLTM0LjkgNi45bC02NCA2NGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjOS4yIDkuMiAyMi45IDExLjkgMzQuOSA2LjlzMTkuOC0xNi42IDE5LjgtMjkuNlY0NDhIMzUyYzg4LjQgMCAxNjAtNzEuNiAxNjAtMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXBseUFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDkuNCAzOS41Yy05LjEtOS42LTI0LjMtMTAtMzMuOS0uOUwzMy44IDE3My4yYy0xOS45IDE4LjktMTkuOSA1MC43IDAgNjkuNkwxNzUuNSAzNzcuNGM5LjYgOS4xIDI0LjggOC43IDMzLjktLjlzOC43LTI0LjgtLjktMzMuOUw2Ni44IDIwOCAyMDguNSA3My40YzkuNi05LjEgMTAtMjQuMyAuOS0zMy45ek0zNTIgNjRjMC0xMi42LTcuNC0yNC4xLTE5LTI5LjJzLTI1LTMtMzQuNCA1LjRsLTE2MCAxNDRjLTYuNyA2LjEtMTAuNiAxNC43LTEwLjYgMjMuOHMzLjkgMTcuNyAxMC42IDIzLjhsMTYwIDE0NGM5LjQgOC41IDIyLjkgMTAuNiAzNC40IDUuNHMxOS0xNi42IDE5LTI5LjJWMjg4aDMyYzUzIDAgOTYgNDMgOTYgOTZjMCAzMC40LTEyLjggNDcuOS0yMi4yIDU2LjdjLTUuNSA1LjEtOS44IDEyLTkuOCAxOS41YzAgMTAuOSA4LjggMTkuNyAxOS43IDE5LjdjMi44IDAgNS42LS42IDguMS0xLjlDNDk0LjUgNDY3LjkgNTc2IDQxNy4zIDU3NiAzMDRjMC05Ny4yLTc4LjgtMTc2LTE3Ni0xNzZIMzUyVjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXBseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDUgMzQuOGMxMS41IDUuMSAxOSAxNi42IDE5IDI5LjJ2NjRIMzM2Yzk3LjIgMCAxNzYgNzguOCAxNzYgMTc2YzAgMTEzLjMtODEuNSAxNjMuOS0xMDAuMiAxNzQuMWMtMi41IDEuNC01LjMgMS45LTguMSAxLjljLTEwLjkgMC0xOS43LTguOS0xOS43LTE5LjdjMC03LjUgNC4zLTE0LjQgOS44LTE5LjVjOS40LTguOCAyMi4yLTI2LjQgMjIuMi01Ni43YzAtNTMtNDMtOTYtOTYtOTZIMjI0djY0YzAgMTIuNi03LjQgMjQuMS0xOSAyOS4ycy0yNSAzLTM0LjQtNS40bC0xNjAtMTQ0QzMuOSAyMjUuNyAwIDIxNy4xIDAgMjA4czMuOS0xNy43IDEwLjYtMjMuOGwxNjAtMTQ0YzkuNC04LjUgMjIuOS0xMC42IDM0LjQtNS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXB1YmxpY2FuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTkyQzAgMTAzLjYgNzEuNiAzMiAxNjAgMzJIMzg0Yzg4LjQgMCAxNjAgNzEuNiAxNjAgMTYwdjY0SDBWMTkyem00MTUuOS02NGMtMi40IDAtNC43IDEuMy01LjcgMy40bC0xMi42IDI0LjYtMjguMiA0Yy0yLjQgLjMtNC40IDItNS4yIDQuMnMtLjEgNC43IDEuNiA2LjNsMjAuNCAxOS4yLTQuOCAyNy4xYy0uNCAyLjMgLjYgNC43IDIuNSA2czQuNiAxLjYgNi43IC41bDI1LjItMTIuOCAyNS4yIDEyLjhjMi4yIDEuMSA0LjggLjkgNi43LS41czMtMy43IDIuNS02bC00LjgtMjcuMUw0NjYgMTcwLjVjMS43LTEuNiAyLjQtNC4xIDEuNi02LjNzLTIuOC0zLjktNS4yLTQuMmwtMjguMi00LTEyLjYtMjQuNmMtMS4xLTIuMS0zLjMtMy40LTUuNy0zLjR6bS0xMzguMyAzLjRjLTEuMS0yLjEtMy4zLTMuNC01LjctMy40cy00LjcgMS4zLTUuNyAzLjRsLTEyLjYgMjQuNi0yOC4yIDRjLTIuNCAuMy00LjQgMi01LjIgNC4ycy0uMSA0LjcgMS42IDYuM2wyMC40IDE5LjItNC44IDI3LjFjLS40IDIuMyAuNiA0LjcgMi41IDZzNC42IDEuNiA2LjcgLjVsMjUuMi0xMi44IDI1LjIgMTIuOGMyLjIgMS4xIDQuOCAuOSA2LjctLjVzMy0zLjcgMi41LTZsLTQuOC0yNy4xTDMyMiAxNzAuNWMxLjctMS42IDIuNC00LjEgMS42LTYuM3MtMi44LTMuOS01LjItNC4ybC0yOC4yLTQtMTIuNi0yNC42ek0xMjcuOSAxMjhjLTIuNCAwLTQuNyAxLjMtNS43IDMuNGwtMTIuNiAyNC42LTI4LjIgNGMtMi40IC4zLTQuNCAyLTUuMiA0LjJzLS4xIDQuNyAxLjYgNi4zbDIwLjQgMTkuMi00LjggMjcuMWMtLjQgMi4zIC42IDQuNyAyLjUgNnM0LjYgMS42IDYuNyAuNWwyNS4yLTEyLjggMjUuMiAxMi44YzIuMiAxLjEgNC44IC45IDYuNy0uNXMzLTMuNyAyLjUtNmwtNC44LTI3LjFMMTc4IDE3MC41YzEuNy0xLjYgMi40LTQuMSAxLjYtNi4zcy0yLjgtMy45LTUuMi00LjJsLTI4LjItNC0xMi42LTI0LjZjLTEuMS0yLjEtMy4zLTMuNC01LjctMy40em0uMSAxNjBIMzIwaDk2IDMyIDY0IDMydjMyIDgwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzUyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2NDhjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBWMzUySDQ0OHYzMiA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzNTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4NEgxMjh2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4NCAyODhIMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXN0cm9vbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCA0OGE0OCA0OCAwIDEgMSA5NiAwQTQ4IDQ4IDAgMSAxIDgwIDQ4em00MCAzMDRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjMyNS4yYy04LjEgOS4yLTIxLjEgMTMuMi0zMy41IDkuNGMtMTYuOS01LjMtMjYuMy0yMy4yLTIxLTQwLjFsMzAuOS05OS4xQzQ0LjkgMTU1LjMgODIgMTI4IDEyNCAxMjhoOGM0MiAwIDc5LjEgMjcuMyA5MS42IDY3LjRsMzAuOSA5OS4xYzUuMyAxNi45LTQuMSAzNC44LTIxIDQwLjFjLTEyLjQgMy45LTI1LjQtLjItMzMuNS05LjRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkgxMjB6TTMyMCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0VjQ4OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNNDY0IDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTQ0MCA0ODBWMzg0SDQyMi4yYy0xMC45IDAtMTguNi0xMC43LTE1LjItMjEuMWw5LTI2LjljLTMuMiAwLTYuNC0uNS05LjUtMS41Yy0xNi45LTUuMy0yNi4zLTIzLjItMjEtNDAuMWwyOS43LTk1LjJDNDI4LjQgMTU2LjkgNDY3LjYgMTI4IDUxMiAxMjhzODMuNiAyOC45IDk2LjggNzEuMmwyOS43IDk1LjJjNS4zIDE2LjktNC4xIDM0LjgtMjEgNDAuMWMtMy4yIDEtNi40IDEuNS05LjUgMS41bDkgMjYuOWMzLjUgMTAuNC00LjMgMjEuMS0xNS4yIDIxLjFINTg0djk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM4NEg1MDR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJldHdlZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE5MmgzMmMxMi45IDAgMjQuNi03LjggMjkuNi0xOS44czIuMi0yNS43LTYuOS0zNC45bC02NC02NGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTY0IDY0Yy05LjIgOS4yLTExLjkgMjIuOS02LjkgMzQuOXMxNi42IDE5LjggMjkuNiAxOS44bDMyIDAgMCAxMjhjMCA1MyA0MyA5NiA5NiA5NkgyNzJ6TTMwNCA5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxMTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDEyOEg0MTZjLTEyLjkgMC0yNC42IDcuOC0yOS42IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45bDY0IDY0YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDY0LTY0YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45cy0xNi42LTE5LjgtMjkuNi0xOS44bC0zMiAwVjE5MmMwLTUzLTQzLTk2LTk2LTk2TDMwNCA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmliYm9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzMy4yIDMyMi44bDAgMC0xMzMuOS0xNDYgMCAwTDE0NiAxMTguNmM3LjgtNS4xIDM3LTIyLjYgNzgtMjIuNnM3MC4yIDE3LjQgNzggMjIuNkwyNDUuNyAxODBsODUuNiA5My40IDI3LjQtMjkuOGMxNi4zLTE3LjcgMjUuMy00MC45IDI1LjMtNjVWMTQ5LjFjMC0xOS01LjYtMzcuNS0xNi4xLTUzLjNMMzI3LjggMzUuNkMzMTIuOSAxMy40IDI4Ny45IDAgMjYxLjIgMGgtNzZjLTI1LjggMC01MC4xIDEyLjUtNjUuMSAzMy41TDgxLjkgODdDNzAuMyAxMDMuMiA2NCAxMjIuOCA2NCAxNDIuOFYxNjRjMCAyMy4yIDguNCA0NS42IDIzLjYgNjMuMWw1NiA2NC4yIDAgMCA4My4zIDk1LjYgMCAwIDkxLjggMTA1LjNjMTAgMTEuNSAyNi44IDE0LjMgNDAgNi44bDU0LjUtMzEuMWMxNy44LTEwLjIgMjEuNi0zNC4zIDcuNy00OS40bC04Ny43LTk1Ljd6TTIwNS4yIDQxMC42bC04My4zLTk1LjZMMjcuMSA0MTguNWMtMTMuOSAxNS4xLTEwLjEgMzkuMiA3LjcgNDkuNGw1NS4xIDMxLjVjMTMgNy40IDI5LjMgNC45IDM5LjQtNi4xbDc1LjktODIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmlnaHRGcm9tQnJhY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzcuOSAxMDUuOUw1MDAuNyAyMjguN2M3LjIgNy4yIDExLjMgMTcuMSAxMS4zIDI3LjNzLTQuMSAyMC4xLTExLjMgMjcuM0wzNzcuOSA0MDYuMWMtNi40IDYuNC0xNSA5LjktMjQgOS45Yy0xOC43IDAtMzMuOS0xNS4yLTMzLjktMzMuOWwwLTYyLjEtMTI4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsMTI4IDAgMC02Mi4xYzAtMTguNyAxNS4yLTMzLjkgMzMuOS0zMy45YzkgMCAxNy42IDMuNiAyNCA5Ljl6TTE2MCA5Nkw5NiA5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAyNTZjMCAxNy43IDE0LjMgMzIgMzIgMzJsNjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtNjQgMGMtNTMgMC05Ni00My05Ni05NkwwIDEyOEMwIDc1IDQzIDMyIDk2IDMybDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJpZ2h0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA5NmwzMjAgMFYzMmMwLTEyLjkgNy44LTI0LjYgMTkuOC0yOS42czI1LjctMi4yIDM0LjkgNi45bDk2IDk2YzYgNiA5LjQgMTQuMSA5LjQgMjIuNnMtMy40IDE2LjYtOS40IDIyLjZsLTk2IDk2Yy05LjIgOS4yLTIyLjkgMTEuOS0zNC45IDYuOXMtMTkuOC0xNi42LTE5LjgtMjkuNlYxNjBMMzIgMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyek00ODAgMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE2MHY2NGMwIDEyLjktNy44IDI0LjYtMTkuOCAyOS42cy0yNS43IDIuMi0zNC45LTYuOWwtOTYtOTZjLTYtNi05LjQtMTQuMS05LjQtMjIuNnMzLjQtMTYuNiA5LjQtMjIuNmw5Ni05NmM5LjItOS4yIDIyLjktMTEuOSAzNC45LTYuOXMxOS44IDE2LjYgMTkuOCAyOS42bDAgNjRINDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSaWdodExvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM0LjUgNDE0YzguOCAzLjggMTkgMiAyNi00LjZsMTQ0LTEzNmM0LjgtNC41IDcuNS0xMC44IDcuNS0xNy40cy0yLjctMTIuOS03LjUtMTcuNGwtMTQ0LTEzNmMtNy02LjYtMTcuMi04LjQtMjYtNC42cy0xNC41IDEyLjUtMTQuNSAyMmwwIDcyTDMyIDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwyODggMCAwIDcyYzAgOS42IDUuNyAxOC4yIDE0LjUgMjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJpZ2h0VG9CcmFja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNy45IDEwNS45TDM0MC43IDIyOC43YzcuMiA3LjIgMTEuMyAxNy4xIDExLjMgMjcuM3MtNC4xIDIwLjEtMTEuMyAyNy4zTDIxNy45IDQwNi4xYy02LjQgNi40LTE1IDkuOS0yNCA5LjljLTE4LjcgMC0zMy45LTE1LjItMzMuOS0zMy45bDAtNjIuMUwzMiAzMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsMTI4IDAgMC02Mi4xYzAtMTguNyAxNS4yLTMzLjkgMzMuOS0zMy45YzkgMCAxNy42IDMuNiAyNCA5Ljl6TTM1MiA0MTZsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTI1NmMwLTE3LjctMTQuMy0zMi0zMi0zMmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw2NCAwYzUzIDAgOTYgNDMgOTYgOTZsMCAyNTZjMCA1My00MyA5Ni05NiA5NmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAyMDhjMCA3LjggNC40IDE4LjcgMTcuMSAzMC4zQzEyNi41IDIxNC4xIDE4OC45IDIwMCAyNTYgMjAwczEyOS41IDE0LjEgMTc0LjkgMzguM0M0NDMuNiAyMjYuNyA0NDggMjE1LjggNDQ4IDIwOGMwLTEyLjMtMTAuOC0zMi00Ny45LTUwLjZDMzY0LjkgMTM5LjggMzE0IDEyOCAyNTYgMTI4cy0xMDguOSAxMS44LTE0NC4xIDI5LjRDNzQuOCAxNzYgNjQgMTk1LjcgNjQgMjA4em0xOTIgNDBjLTQ3IDAtODkuMyA3LjYtMTIyLjkgMTkuN0MxNjYuMyAyODAuMiAyMDguOCAyODggMjU2IDI4OHM4OS43LTcuOCAxMjIuOS0yMC4zQzM0NS4zIDI1NS42IDMwMyAyNDggMjU2IDI0OHpNMCAyMDhjMC00OS42IDM5LjQtODUuOCA4My4zLTEwNy44QzEyOS4xIDc3LjMgMTkwLjMgNjQgMjU2IDY0czEyNi45IDEzLjMgMTcyLjcgMzYuMmM0My45IDIyIDgzLjMgNTguMiA4My4zIDEwNy44djk2YzAgNDkuNi0zOS40IDg1LjgtODMuMyAxMDcuOEMzODIuOSA0MzQuNyAzMjEuNyA0NDggMjU2IDQ0OHMtMTI2LjktMTMuMy0xNzIuNy0zNi4yQzM5LjQgMzg5LjggMCAzNTMuNiAwIDMwNFYyMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvYWRCYXJyaWVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjY2LjNMMTQ5LjIgOTZINjRWNjRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTQwNS4yIDk2SDMzMC44bC01LjQgMTAuN0wyMzQuOCAyODhoNzQuM2w1LjQtMTAuN0w0MDUuMiA5NnpNMzYyLjggMjg4aDc0LjNsNS40LTEwLjdMNTMzLjIgOTZINDU4LjhsLTUuNCAxMC43TDM2Mi44IDI4OHpNMjAyLjggOTZsLTUuNCAxMC43TDEwNi44IDI4OGg3NC4zbDUuNC0xMC43TDI3Ny4yIDk2SDIwMi44em0yODggMTkySDU3NlY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY1My43TDQ5MC44IDI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9hZEJyaWRnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMEg2MDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTQ4MCAyMDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0djY0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0em0yNCAxODRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYzODR6TTQ4MCA0MGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY2NGMwLTEzLjMtMTAuNy0yNC0yNC0yNHpNMzIgOTZIMjg4djY0SDI0OHY2NGg0MHY5NmMtNTMgMC05NiA0My05NiA5NnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQxNmMwLTUzLTQzLTk2LTk2LTk2VjIyNEg3MlYxNjBIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTE2OCA2NEgxMjB2NjRoODBWMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2FkQ2lyY2xlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEzLjIgMzJIMjg4Vjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzJoNzQuOGMyNy4xIDAgNTEuMyAxNy4xIDYwLjMgNDIuNmw0Mi43IDEyMC42Yy0xMC45LTIuMS0yMi4yLTMuMi0zMy44LTMuMmMtNTkuNSAwLTExMi4xIDI5LjYtMTQ0IDc0LjhWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyYzIuMyAwIDQuNi0uMyA2LjgtLjdjLTQuNSAxNS41LTYuOCAzMS44LTYuOCA0OC43YzAgNS40IC4yIDEwLjcgLjcgMTZsLS43IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0SDg2LjZDNTYuNSA0ODAgMzIgNDU1LjUgMzIgNDI1LjRjMC02LjIgMS4xLTEyLjQgMy4xLTE4LjJMMTUyLjkgNzQuNkMxNjIgNDkuMSAxODYuMSAzMiAyMTMuMiAzMnpNMzUyIDM2OGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0yMTEuMy00My4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw0ODAgMzg1LjRsLTI4LjctMjguN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNmw0MCA0MGM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGw3Mi03MmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9hZENpcmNsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMy4yIDMySDI4OFY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyaDc0LjhjMjcuMSAwIDUxLjMgMTcuMSA2MC4zIDQyLjZsNDIuNyAxMjAuNmMtMTAuOS0yLjEtMjIuMi0zLjItMzMuOC0zLjJjLTU5LjUgMC0xMTIuMSAyOS42LTE0NCA3NC44VjIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmMyLjMgMCA0LjYtLjMgNi44LS43Yy00LjUgMTUuNS02LjggMzEuOC02LjggNDguN2MwIDUuNCAuMiAxMC43IC43IDE2bC0uNyAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NEg4Ni42QzU2LjUgNDgwIDMyIDQ1NS41IDMyIDQyNS40YzAtNi4yIDEuMS0xMi40IDMuMS0xOC4yTDE1Mi45IDc0LjZDMTYyIDQ5LjEgMTg2LjEgMzIgMjEzLjIgMzJ6TTQ5NiAyMjRhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em0wIDI0MGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTAtMTkyYy04LjggMC0xNiA3LjItMTYgMTZ2ODBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyODhjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2FkQ2lyY2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEzLjIgMzJIMjg4Vjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzJoNzQuOGMyNy4xIDAgNTEuMyAxNy4xIDYwLjMgNDIuNmw0Mi43IDEyMC42Yy0xMC45LTIuMS0yMi4yLTMuMi0zMy44LTMuMmMtNTkuNSAwLTExMi4xIDI5LjYtMTQ0IDc0LjhWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyYzIuMyAwIDQuNi0uMyA2LjgtLjdjLTQuNSAxNS41LTYuOCAzMS44LTYuOCA0OC43YzAgNS40IC4yIDEwLjcgLjcgMTZsLS43IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0SDg2LjZDNTYuNSA0ODAgMzIgNDU1LjUgMzIgNDI1LjRjMC02LjIgMS4xLTEyLjQgMy4xLTE4LjJMMTUyLjkgNzQuNkMxNjIgNDkuMSAxODYuMSAzMiAyMTMuMiAzMnpNNDk2IDIyNGExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTIyLjYgMTQ0bDM2LjctMzYuN2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNnMtMTYuNC02LjItMjIuNiAwTDQ5NiAzNDUuNGwtMzYuNy0zNi43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42TDQ3My40IDM2OGwtMzYuNyAzNi43Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBMNDk2IDM5MC42bDM2LjcgMzYuN2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZMNTE4LjYgMzY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2FkTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJIMjEzLjJjLTI3LjEgMC01MS4zIDE3LjEtNjAuMyA0Mi42TDM1LjEgNDA3LjJjLTIuMSA1LjktMy4xIDEyLTMuMSAxOC4yQzMyIDQ1NS41IDU2LjUgNDgwIDg2LjYgNDgwSDI4OFY0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY2NGgzMlYzNTJjMC0yMy43IDEyLjktNDQuNCAzMi01NS40VjI3MmMwLTU4LjMgNDQuNi0xMDYuMiAxMDEuNS0xMTEuNUw0ODcuMSA3NC42QzQ3OCA0OS4xIDQ1My45IDMyIDQyNi44IDMySDM1MlY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMnptNjQgMTkydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyem0xNzYgMTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NDhINDk2VjI3MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptLTgwIDMydjQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM1MmMwLTE3LjctMTQuMy0zMi0zMi0zMlYyNzJjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvYWRTcGlrZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMTE2LjhjMC0xNS44IDIwLjUtMjIgMjkuMy04LjlMMTkyIDI1NlYxMTYuOGMwLTE1LjggMjAuNS0yMiAyOS4zLTguOUwzMjAgMjU2VjExNi44YzAtMTUuOCAyMC41LTIyIDI5LjMtOC45TDQ0OCAyNTZWMTE2LjhjMC0xNS44IDIwLjUtMjIgMjkuMy04LjlMNjA2LjggMzAyLjJjMTQuMiAyMS4zLTEuMSA0OS43LTI2LjYgNDkuN0g1MTIgNDQ4IDM4NCAzMjAgMjU2IDE5MiA2NFYxMTYuOHpNMzIgMzg0SDYwOGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJIMTgxLjJjLTI3LjEgMC01MS4zIDE3LjEtNjAuMyA0Mi42TDMuMSA0MDcuMkMxLjEgNDEzIDAgNDE5LjIgMCA0MjUuNEMwIDQ1NS41IDI0LjUgNDgwIDU0LjYgNDgwSDI1NlY0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY2NEg1MjEuNGMzMC4yIDAgNTQuNi0yNC41IDU0LjYtNTQuNmMwLTYuMi0xLjEtMTIuNC0zLjEtMTguMkw0NTUuMSA3NC42QzQ0NiA0OS4xIDQyMS45IDMyIDM5NC44IDMySDMyMFY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMnptNjQgMTkydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2JvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY5Nkg0NzJjMzkuOCAwIDcyIDMyLjIgNzIgNzJWNDQwYzAgMzkuOC0zMi4yIDcyLTcyIDcySDE2OGMtMzkuOCAwLTcyLTMyLjItNzItNzJWMTY4YzAtMzkuOCAzMi4yLTcyIDcyLTcySDI4OFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMjA4IDM4NGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgyMDh6bTk2IDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzA0em05NiAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDQwMHpNMjY0IDI1NmE0MCA0MCAwIDEgMCAtODAgMCA0MCA0MCAwIDEgMCA4MCAwem0xNTIgNDBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwek00OCAyMjRINjRWNDE2SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyNzJjMC0yNi41IDIxLjUtNDggNDgtNDh6bTU0NCAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4djk2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDU3NlYyMjRoMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTYuNiAzODQuOUwxMjUuNyAzNTRjLTguNS04LjUtMTEuNS0yMC44LTcuNy0zMi4yYzMtOC45IDctMjAuNSAxMS44LTMzLjhMMjQgMjg4Yy04LjYgMC0xNi42LTQuNi0yMC45LTEyLjFzLTQuMi0xNi43IC4yLTI0LjFsNTIuNS04OC41YzEzLTIxLjkgMzYuNS0zNS4zIDYxLjktMzUuM2w4Mi4zIDBjMi40LTQgNC44LTcuNyA3LjItMTEuM0MyODkuMS00LjEgNDExLjEtOC4xIDQ4My45IDUuM2MxMS42IDIuMSAyMC42IDExLjIgMjIuOCAyMi44YzEzLjQgNzIuOSA5LjMgMTk0LjgtMTExLjQgMjc2LjdjLTMuNSAyLjQtNy4zIDQuOC0xMS4zIDcuMnY4Mi4zYzAgMjUuNC0xMy40IDQ5LTM1LjMgNjEuOWwtODguNSA1Mi41Yy03LjQgNC40LTE2LjYgNC41LTI0LjEgLjJzLTEyLjEtMTIuMi0xMi4xLTIwLjlWMzgwLjhjLTE0LjEgNC45LTI2LjQgOC45LTM1LjcgMTEuOWMtMTEuMiAzLjYtMjMuNCAuNS0zMS44LTcuOHpNMzg0IDE2OGE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvdGF0ZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDguNSAyMjRINDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjcyYzAtOS43IDUuOC0xOC41IDE0LjgtMjIuMnMxOS4zLTEuNyAyNi4yIDUuMkw5OC42IDk2LjZjODcuNi04Ni41IDIyOC43LTg2LjIgMzE1LjggMWM4Ny41IDg3LjUgODcuNSAyMjkuMyAwIDMxNi44cy0yMjkuMyA4Ny41LTMxNi44IDBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBjNjIuNSA2Mi41IDE2My44IDYyLjUgMjI2LjMgMHM2Mi41LTE2My44IDAtMjI2LjNjLTYyLjItNjIuMi0xNjIuNy02Mi41LTIyNS4zLTFMMTg1IDE4M2M2LjkgNi45IDguOSAxNy4yIDUuMiAyNi4ycy0xMi41IDE0LjgtMjIuMiAxNC44SDQ4LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvdGF0ZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2My41IDIyNEg0NzJjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNzJjMC05LjctNS44LTE4LjUtMTQuOC0yMi4ycy0xOS4zLTEuNy0yNi4yIDUuMkw0MTMuNCA5Ni42Yy04Ny42LTg2LjUtMjI4LjctODYuMi0zMTUuOCAxYy04Ny41IDg3LjUtODcuNSAyMjkuMyAwIDMxNi44czIyOS4zIDg3LjUgMzE2LjggMGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGMtNjIuNSA2Mi41LTE2My44IDYyLjUtMjI2LjMgMHMtNjIuNS0xNjMuOCAwLTIyNi4zYzYyLjItNjIuMiAxNjIuNy02Mi41IDIyNS4zLTFMMzI3IDE4M2MtNi45IDYuOS04LjkgMTcuMi01LjIgMjYuMnMxMi41IDE0LjggMjIuMiAxNC44SDQ2My41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb3RhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQyLjkgMTQyLjljNjIuMi02Mi4yIDE2Mi43LTYyLjUgMjI1LjMtMUwzMjcgMTgzYy02LjkgNi45LTguOSAxNy4yLTUuMiAyNi4yczEyLjUgMTQuOCAyMi4yIDE0LjhINDYzLjVjMCAwIDAgMCAwIDBINDcyYzEzLjMgMCAyNC0xMC43IDI0LTI0VjcyYzAtOS43LTUuOC0xOC41LTE0LjgtMjIuMnMtMTkuMy0xLjctMjYuMiA1LjJMNDEzLjQgOTYuNmMtODcuNi04Ni41LTIyOC43LTg2LjItMzE1LjggMUM3My4yIDEyMiA1NS42IDE1MC43IDQ0LjggMTgxLjRjLTUuOSAxNi43IDIuOSAzNC45IDE5LjUgNDAuOHMzNC45LTIuOSA0MC44LTE5LjVjNy43LTIxLjggMjAuMi00Mi4zIDM3LjgtNTkuOHpNMTYgMzEydjcuNiAuN1Y0NDBjMCA5LjcgNS44IDE4LjUgMTQuOCAyMi4yczE5LjMgMS43IDI2LjItNS4ybDQxLjYtNDEuNmM4Ny42IDg2LjUgMjI4LjcgODYuMiAzMTUuOC0xYzI0LjQtMjQuNCA0Mi4xLTUzLjEgNTIuOS04My43YzUuOS0xNi43LTIuOS0zNC45LTE5LjUtNDAuOHMtMzQuOSAyLjktNDAuOCAxOS41Yy03LjcgMjEuOC0yMC4yIDQyLjMtMzcuOCA1OS44Yy02Mi4yIDYyLjItMTYyLjcgNjIuNS0yMjUuMyAxTDE4NSAzMjljNi45LTYuOSA4LjktMTcuMiA1LjItMjYuMnMtMTIuNS0xNC44LTIyLjItMTQuOEg0OC40aC0uN0g0MGMtMTMuMyAwLTI0IDEwLjctMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvdXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiA5NmMwIDUwLjItNTkuMSAxMjUuMS04NC42IDE1NWMtMy44IDQuNC05LjQgNi4xLTE0LjUgNUgzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoOTZjNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTZIMTM5LjZjOC43LTkuOSAxOS4zLTIyLjYgMzAtMzYuOGM2LjMtOC40IDEyLjgtMTcuNiAxOS0yNy4ySDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjBjLTUzIDAtOTYtNDMtOTYtOTZzNDMtOTYgOTYtOTZoMzkuOGMtMjEtMzEuNS0zOS44LTY3LjctMzkuOC05NmMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2ek0xMTcuMSA0ODkuMWMtMy44IDQuMy03LjIgOC4xLTEwLjEgMTEuM2wtMS44IDItLjItLjJjLTYgNC42LTE0LjYgNC0yMC0xLjhDNTkuOCA0NzMgMCA0MDIuNSAwIDM1MmMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2YzAgMzAtMjEuMSA2Ny00My41IDk3LjljLTEwLjcgMTQuNy0yMS43IDI4LTMwLjggMzguNWwtLjYgLjd6TTEyOCAzNTJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNNDE2IDEyOGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyYzIyOS44IDAgNDE2IDE4Ni4yIDQxNiA0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJDMzg0IDI1My42IDIyNi40IDk2IDMyIDk2QzE0LjMgOTYgMCA4MS43IDAgNjR6TTAgNDE2YTY0IDY0IDAgMSAxIDEyOCAwQTY0IDY0IDAgMSAxIDAgNDE2ek0zMiAxNjBjMTU5LjEgMCAyODggMTI4LjkgMjg4IDI4OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmMwLTEyMy43LTEwMC4zLTIyNC0yMjQtMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdWJsZVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzJDNzguMyAzMiA2NCA0Ni4zIDY0IDY0VjI1NkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NHYzMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NHYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQxNkgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTI4VjMyMEgyNDBjNzkuNSAwIDE0NC02NC41IDE0NC0xNDRzLTY0LjUtMTQ0LTE0NC0xNDRIOTZ6TTI0MCAyNTZIMTI4Vjk2SDI0MGM0NC4yIDAgODAgMzUuOCA4MCA4MHMtMzUuOCA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDY0SDU2IDgwVjg4djg4IDgwIDgwIDg4IDI0SDU2IDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDhWMzYwSDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDhWMjgwSDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDhWMjAwSDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDhWMTEySDI0QzEwLjcgMTEyIDAgMTAxLjMgMCA4OFMxMC43IDY0IDI0IDY0em04OCAwSDUyOFY0NDhIMTEyVjY0ek02NDAgODhjMCAxMy4zLTEwLjcgMjQtMjQgMjRoLTh2NDBoOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGgtOHYzMmg4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0aC04djMyaDhjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRoLTh2NDBoOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1ODQgNTYwVjQyNCAzMzYgMjU2IDE3NiA4OCA2NGgyNCAzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVsZXJDb21iaW5lZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uMiA0NjguOUMyLjcgNDkzLjEgMjMuMSA1MTIgNDggNTEybDk2IDAgMzIwIDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC05NmMwLTI2LjUtMjEuNS00OC00OC00OGwtNDggMCAwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODAtNjQgMCAwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODAtNjQgMCAwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODAtODAgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmw4MCAwIDAtNjQtODAgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmw4MCAwIDAtNjQtODAgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmw4MCAwIDAtNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhMNDggMEMyMS41IDAgMCAyMS41IDAgNDhMMCAzNjhsMCA5NmMwIDEuNyAuMSAzLjMgLjIgNC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdWxlckhvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMzZjMCAyNi41IDIxLjUgNDggNDggNDhsNTQ0IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0xNjBjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTY0IDAgMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwLTY0IDAgMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwLTY0IDAgMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwLTY0IDAgMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwLTY0IDAgMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwLTY0IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4TDAgMzM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdWxlclZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwSDIwOGMyNi41IDAgNDggMjEuNSA0OCA0OFY5NkgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoODB2NjRIMTc2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDgwdjY0SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg4MHY2NEgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoODB2NDhjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdWxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzcuOSA0OTQuMWMtMTguNyAxOC43LTQ5LjEgMTguNy02Ny45IDBMMTcuOSA0MDEuOWMtMTguNy0xOC43LTE4LjctNDkuMSAwLTY3LjlsNTAuNy01MC43IDQ4IDQ4YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNDgtNDggNDEuNC00MS40IDQ4IDQ4YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNDgtNDggNDEuNC00MS40IDQ4IDQ4YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNDgtNDggNDEuNC00MS40IDQ4IDQ4YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNDgtNDggNTAuNy01MC43YzE4LjctMTguNyA0OS4xLTE4LjcgNjcuOSAwbDkyLjEgOTIuMWMxOC43IDE4LjcgMTguNyA0OS4xIDAgNjcuOUwxNzcuOSA0OTQuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVwZWVTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJoODBjNzkuNSAwIDE0NCA2NC41IDE0NCAxNDRjMCA1OC44LTM1LjIgMTA5LjMtODUuNyAxMzEuN2w1MS40IDEyOC40YzYuNiAxNi40LTEuNCAzNS0xNy44IDQxLjZzLTM1LTEuNC00MS42LTE3LjhMMTA2LjMgMzIwSDY0VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyODggNjR6TTY0IDI1Nmg0OGM0NC4yIDAgODAtMzUuOCA4MC04MHMtMzUuOC04MC04MC04MEg2NFYyNTZ6bTI1Ni41IDE2LjRjLS45IDYgMCA4LjcgLjQgOS44Yy40IDEuMSAxLjQgMi42IDQuMiA0LjljNy4yIDUuNyAxOC43IDEwIDM3LjkgMTYuOGwxLjMgLjVjMTYgNS42IDM4LjcgMTMuNiA1NS43IDI4LjFjOS41IDguMSAxNy45IDE4LjYgMjMuMSAzMi4zYzUuMSAxMy43IDYuMSAyOC41IDMuOCA0NGMtNC4yIDI4LjEtMjAuNSA0OS4zLTQzLjggNjAuOWMtMjIuMSAxMS00OC4xIDEyLjUtNzMuMiA4bC0uMiAwIDAgMGMtOS4zLTEuOC0yMC41LTUuNy0yOS4zLTljLTYtMi4zLTEyLjYtNC45LTE3LjctNi45bDAgMGMtMi41LTEtNC42LTEuOC02LjMtMi41Yy0xNi41LTYuNC0yNC42LTI1LTE4LjItNDEuNHMyNC45LTI0LjYgNDEuNC0xOC4yYzIuNiAxIDUuMiAyIDcuOSAzLjFsMCAwYzQuOCAxLjkgOS44IDMuOSAxNS40IDZjOC44IDMuMyAxNS4zIDUuNCAxOC43IDZjMTUuNyAyLjggMjYuNyAuOCAzMi45LTIuM2M1LTIuNSA4LTYgOS4xLTEzYzEtNi45IC4yLTEwLjUtLjUtMTIuM2MtLjYtMS43LTEuOC0zLjYtNC41LTUuOWMtNi45LTUuOC0xOC4yLTEwLjQtMzYuOS0xN2wtMy0xLjFjLTE1LjUtNS40LTM3LTEzLTUzLjMtMjUuOWMtOS41LTcuNS0xOC4zLTE3LjYtMjMuNy0zMWMtNS41LTEzLjQtNi42LTI4LTQuNC00My4yYzguNC01Ny4xIDY3LTc4IDExNi45LTY4LjljNi45IDEuMyAyNy4zIDUuOCAzNS40IDguNGMxNi45IDUuMiAyNi4zIDIzLjIgMjEuMSA0MC4xcy0yMy4yIDI2LjMtNDAuMSAyMS4xYy00LjctMS40LTIyLjMtNS41LTI3LjktNi41Yy0xNC42LTIuNy0yNS44LS40LTMyLjYgMy4yYy02LjMgMy4zLTguOSA3LjYtOS41IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdXBpYWhTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJoODBjNzkuNSAwIDE0NCA2NC41IDE0NCAxNDRjMCA1OC44LTM1LjIgMTA5LjMtODUuNyAxMzEuN2w1MS40IDEyOC40YzYuNiAxNi40LTEuNCAzNS0xNy44IDQxLjZzLTM1LTEuNC00MS42LTE3LjhMMTA2LjMgMzIwSDY0VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyODggNjR6TTY0IDI1Nmg0OGM0NC4yIDAgODAtMzUuOCA4MC04MHMtMzUuOC04MC04MC04MEg2NFYyNTZ6bTI1Ni05Nmg4MGM2MS45IDAgMTEyIDUwLjEgMTEyIDExMnMtNTAuMSAxMTItMTEyIDExMkgzNTJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUyIDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptODAgMTYwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4cy0yMS41LTQ4LTQ4LTQ4SDM1MnY5Nmg0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05OS4xIDEwNS40Qzc5IDExNCA2OC4yIDEyNy4yIDY1LjIgMTQ0LjhjLTIuNCAxNC4xLS43IDIzLjIgMiAyOS40YzIuOCA2LjMgNy45IDEyLjQgMTYuNyAxOC42YzE5LjIgMTMuNCA0OC4zIDIyLjEgODQuOSAzMi41YzEgLjMgMS45IC42IDIuOSAuOGMzMi43IDkuMyA3MiAyMC42IDEwMC45IDQwLjdjMTUuNyAxMC45IDI5LjkgMjUuNSAzOC42IDQ1LjFjOC44IDE5LjggMTAuOCA0MiA2LjYgNjYuM2MtNy4zIDQyLjUtMzUuMyA3MS43LTcxLjggODcuM2MtMzUuNCAxNS4yLTc5LjEgMTcuOS0xMjMuNyAxMC45bC0uMiAwIDAgMGMtMjQtMy45LTYyLjctMTcuMS04Ny42LTI1LjZjLTQuOC0xLjctOS4yLTMuMS0xMi44LTQuM0M1LjEgNDQwLjgtMy45IDQyMi43IDEuNiA0MDUuOXMyMy43LTI1LjggNDAuNS0yMC4zYzQuOSAxLjYgMTAuMiAzLjQgMTUuOSA1LjRjMjUuNCA4LjYgNTYuNCAxOS4yIDc0LjQgMjIuMWMzNi44IDUuNyA2Ny41IDIuNSA4OC41LTYuNWMyMC4xLTguNiAzMC44LTIxLjggMzMuOS0zOS40YzIuNC0xNC4xIC43LTIzLjItMi0yOS40Yy0yLjgtNi4zLTcuOS0xMi40LTE2LjctMTguNmMtMTkuMi0xMy40LTQ4LjMtMjIuMS04NC45LTMyLjVjLTEtLjMtMS45LS42LTIuOS0uOGMtMzIuNy05LjMtNzItMjAuNi0xMDAuOS00MC43Yy0xNS43LTEwLjktMjkuOS0yNS41LTM4LjYtNDUuMWMtOC44LTE5LjgtMTAuOC00Mi02LjYtNjYuM2wzMS41IDUuNUwyLjEgMTMzLjlDOS40IDkxLjQgMzcuNCA2Mi4yIDczLjkgNDYuNmMzNS40LTE1LjIgNzkuMS0xNy45IDEyMy43LTEwLjljMTMgMiA1Mi40IDkuNiA2Ni42IDEzLjRjMTcuMSA0LjUgMjcuMiAyMi4xIDIyLjcgMzkuMnMtMjIuMSAyNy4yLTM5LjIgMjIuN2MtMTEuMi0zLTQ4LjEtMTAuMi02MC4xLTEybDQuOS0zMS41LTQuOSAzMS41Yy0zNi45LTUuOC02Ny41LTIuNS04OC42IDYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2Fja0RvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgOTZIMTkyTDE0NC42IDI0LjlDMTM3LjUgMTQuMiAxNDUuMSAwIDE1Ny45IDBIMzU0LjFjMTIuOCAwIDIwLjQgMTQuMiAxMy4zIDI0LjlMMzIwIDk2ek0xOTIgMTI4SDMyMGMzLjggMi41IDguMSA1LjMgMTMgOC40QzM4OS43IDE3Mi43IDUxMiAyNTAuOSA1MTIgNDE2YzAgNTMtNDMgOTYtOTYgOTZIOTZjLTUzIDAtOTYtNDMtOTYtOTZDMCAyNTAuOSAxMjIuMyAxNzIuNyAxNzkgMTM2LjRsMCAwIDAgMGM0LjgtMy4xIDkuMi01LjkgMTMtOC40em04NCA4OGMwLTExLTktMjAtMjAtMjBzLTIwIDktMjAgMjB2MTRjLTcuNiAxLjctMTUuMiA0LjQtMjIuMiA4LjVjLTEzLjkgOC4zLTI1LjkgMjIuOC0yNS44IDQzLjljLjEgMjAuMyAxMiAzMy4xIDI0LjcgNDAuN2MxMSA2LjYgMjQuNyAxMC44IDM1LjYgMTRsMS43IC41YzEyLjYgMy44IDIxLjggNi44IDI4IDEwLjdjNS4xIDMuMiA1LjggNS40IDUuOSA4LjJjLjEgNS0xLjggOC01LjkgMTAuNWMtNSAzLjEtMTIuOSA1LTIxLjQgNC43Yy0xMS4xLS40LTIxLjUtMy45LTM1LjEtOC41Yy0yLjMtLjgtNC43LTEuNi03LjItMi40Yy0xMC41LTMuNS0yMS44IDIuMi0yNS4zIDEyLjZzMi4yIDIxLjggMTIuNiAyNS4zYzEuOSAuNiA0IDEuMyA2LjEgMi4xbDAgMCAwIDBjOC4zIDIuOSAxNy45IDYuMiAyOC4yIDguNFY0MjRjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBWNDEwLjJjOC0xLjcgMTYtNC41IDIzLjItOWMxNC4zLTguOSAyNS4xLTI0LjEgMjQuOC00NWMtLjMtMjAuMy0xMS43LTMzLjQtMjQuNi00MS42Yy0xMS41LTcuMi0yNS45LTExLjYtMzcuMS0xNWwwIDAtLjctLjJjLTEyLjgtMy45LTIxLjktNi43LTI4LjMtMTAuNWMtNS4yLTMuMS01LjMtNC45LTUuMy02LjdjMC0zLjcgMS40LTYuNSA2LjItOS4zYzUuNC0zLjIgMTMuNi01LjEgMjEuNS01YzkuNiAuMSAyMC4yIDIuMiAzMS4yIDUuMmMxMC43IDIuOCAyMS42LTMuNSAyNC41LTE0LjJzLTMuNS0yMS42LTE0LjItMjQuNWMtNi41LTEuNy0xMy43LTMuNC0yMS4xLTQuN1YyMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNhY2tYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgOTZIMzIwbDQ3LjQtNzEuMUMzNzQuNSAxNC4yIDM2Ni45IDAgMzU0LjEgMEgxNTcuOWMtMTIuOCAwLTIwLjQgMTQuMi0xMy4zIDI0LjlMMTkyIDk2em0xMjggMzJIMTkyYy0zLjggMi41LTguMSA1LjMtMTMgOC40bDAgMCAwIDBDMTIyLjMgMTcyLjcgMCAyNTAuOSAwIDQxNmMwIDUzIDQzIDk2IDk2IDk2SDQxNmM1MyAwIDk2LTQzIDk2LTk2YzAtMTY1LjEtMTIyLjMtMjQzLjMtMTc5LTI3OS42Yy00LjgtMy4xLTkuMi01LjktMTMtOC40ek0yODkuOSAzMzZsNDcgNDdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDctNDctNDcgNDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDctNDctNDctNDdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw0NyA0NyA0Ny00N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTQ3IDQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYWlsYm9hdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMTZjMC03IDQuNS0xMy4yIDExLjItMTUuM3MxMy45IC40IDE3LjkgNi4xbDIyNCAzMjBjMy40IDQuOSAzLjggMTEuMyAxLjEgMTYuNnMtOC4yIDguNi0xNC4yIDguNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYxNnpNMjEyLjEgOTYuNWM3IDEuOSAxMS45IDguMiAxMS45IDE1LjVWMzM2YzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtNS43IDAtMTEtMy0xMy44LThzLTIuOS0xMS0uMS0xNmwxMjgtMjI0YzMuNi02LjMgMTEtOS40IDE4LTcuNXpNNS43IDQwNC4zQzIuOCAzOTQuMSAxMC41IDM4NCAyMS4xIDM4NEg1NTQuOWMxMC42IDAgMTguMyAxMC4xIDE1LjQgMjAuM2wtNCAxNC4zQzU1MC43IDQ3My45IDUwMC40IDUxMiA0NDMgNTEySDEzM0M3NS42IDUxMiAyNS4zIDQ3My45IDkuNyA0MTguN2wtNC0xNC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYXRlbGxpdGVEaXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMkMzODMuMSAwIDUxMiAxMjguOSA1MTIgMjg4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyQzQ0OCAxNjQuMyAzNDcuNyA2NCAyMjQgNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek02MC42IDIyMC42TDE2NC43IDMyNC43bDI4LjQtMjguNGMtLjctMi42LTEuMS01LjQtMS4xLTguM2MwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyYy0yLjkgMC01LjYtLjQtOC4zLTEuMWwtMjguNCAyOC40TDI5MS40IDQ1MS40YzE0LjUgMTQuNSAxMS44IDM4LjgtNy4zIDQ2LjNDMjYwLjUgNTA2LjkgMjM0LjkgNTEyIDIwOCA1MTJDOTMuMSA1MTIgMCA0MTguOSAwIDMwNGMwLTI2LjkgNS4xLTUyLjUgMTQuNC03Ni4xYzcuNS0xOSAzMS44LTIxLjggNDYuMy03LjN6TTIyNCA5NmMxMDYgMCAxOTIgODYgMTkyIDE5MmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmMwLTcwLjctNTcuMy0xMjgtMTI4LTEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2F0ZWxsaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMyA3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMGwtOTYgOTZjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDg5LjQgODkuNC0xNS41IDE1LjVDMTUyLjMgMjMwLjQgMTI0LjkgMjI0IDk2IDIyNGMtMzEuNyAwLTYxLjUgNy43LTg3LjggMjEuMmMtOSA0LjctMTAuMyAxNi43LTMuMSAyMy44TDExMi43IDM3Ni43IDk2LjMgMzkzLjFjLTIuNi0uNy01LjQtMS4xLTguMy0xLjFjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTIuOS0uNC01LjYtMS4xLTguM2wxNi40LTE2LjRMMjQyLjkgNTA2LjljNy4yIDcuMiAxOS4yIDUuOSAyMy44LTMuMUMyODAuMyA0NzcuNSAyODggNDQ3LjcgMjg4IDQxNmMwLTI4LjktNi40LTU2LjMtMTcuOC04MC45bDE1LjUtMTUuNUwzNzUgNDA5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDk2LTk2YzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC04OS40LTg5LjQgNTUtNTVjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTQ4LTQ4Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtNTUgNTVMMjMzIDd6bTE1OSAzNTFsLTcyLjQtNzIuNCA2Mi4xLTYyLjFMNDU0LjEgMjk2IDM5MiAzNTguMXpNMjI2LjMgMTkyLjRMMTUzLjkgMTIwIDIxNiA1Ny45bDcyLjQgNzIuNC02Mi4xIDYyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjYWxlQmFsYW5jZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMySDUxMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzOTguNGMtNS4yIDI1LjgtMjIuOSA0Ny4xLTQ2LjQgNTcuM1Y0NDhINTEyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMCAxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIMjg4VjE1My4zYy0yMy41LTEwLjMtNDEuMi0zMS42LTQ2LjQtNTcuM0gxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIMjU2YzE0LjYtMTkuNCAzNy44LTMyIDY0LTMyczQ5LjQgMTIuNiA2NCAzMnptNTUuNiAyODhINTg0LjRMNTEyIDE5NS44IDQzOS42IDMyMHpNNTEyIDQxNmMtNjIuOSAwLTExNS4yLTM0LTEyNi03OC45Yy0yLjYtMTEgMS0yMi4zIDYuNy0zMi4xbDk1LjItMTYzLjJjNS04LjYgMTQuMi0xMy44IDI0LjEtMTMuOHMxOS4xIDUuMyAyNC4xIDEzLjhsOTUuMiAxNjMuMmM1LjcgOS44IDkuMyAyMS4xIDYuNyAzMi4xQzYyNy4yIDM4MiA1NzQuOSA0MTYgNTEyIDQxNnpNMTI2LjggMTk1LjhMNTQuNCAzMjBIMTk5LjNMMTI2LjggMTk1Ljh6TS45IDMzNy4xYy0yLjYtMTEgMS0yMi4zIDYuNy0zMi4xbDk1LjItMTYzLjJjNS04LjYgMTQuMi0xMy44IDI0LjEtMTMuOHMxOS4xIDUuMyAyNC4xIDEzLjhsOTUuMiAxNjMuMmM1LjcgOS44IDkuMyAyMS4xIDYuNyAzMi4xQzI0MiAzODIgMTg5LjcgNDE2IDEyNi44IDQxNlMxMS43IDM4MiAuOSAzMzcuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NhbGVVbmJhbGFuY2VkRmxpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTcuOSA2Mi40Yy0xNi44LTUuNi0yNS44LTIzLjctMjAuMi00MC41czIzLjctMjUuOCA0MC41LTIwLjJsMTEzIDM3LjdDMjY1IDE1LjggMjkwLjcgMCAzMjAgMGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDMtLjIgNS45LS41IDguOGwxMjIuNiA0MC45YzE2LjggNS42IDI1LjggMjMuNyAyMC4yIDQwLjVzLTIzLjcgMjUuOC00MC41IDIwLjJMMzY2LjQgMTQ1LjJjLTQuNSAzLjItOS4zIDUuOS0xNC40IDguMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJIMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDI4OFYxNTMuM2MtMjEtOS4yLTM3LjItMjctNDQuMi00OWwtMTI1LjktNDJ6TTIwMC40IDI4OEwxMjggMTYzLjggNTUuNiAyODhIMjAwLjR6TTEyOCAzODRDNjUuMSAzODQgMTIuOCAzNTAgMiAzMDUuMWMtMi42LTExIDEtMjIuMyA2LjctMzIuMWw5NS4yLTE2My4yYzUtOC42IDE0LjItMTMuOCAyNC4xLTEzLjhzMTkuMSA1LjMgMjQuMSAxMy44bDk1LjIgMTYzLjJjNS43IDkuOCA5LjMgMjEuMSA2LjcgMzIuMUMyNDMuMiAzNTAgMTkwLjkgMzg0IDEyOCAzODR6bTM4Mi44LTkyLjJMNDM4LjQgNDE2SDU4My4zTDUxMC44IDI5MS44em0xMjYgMTQxLjNDNjI2IDQ3OCA1NzMuNyA1MTIgNTEwLjggNTEycy0xMTUuMi0zNC0xMjYtNzguOWMtMi42LTExIDEtMjIuMyA2LjctMzIuMWw5NS4yLTE2My4yYzUtOC42IDE0LjItMTMuOCAyNC4xLTEzLjhzMTkuMSA1LjMgMjQuMSAxMy44bDk1LjIgMTYzLjJjNS43IDkuOCA5LjMgMjEuMSA2LjcgMzIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NhbGVVbmJhbGFuY2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyMi4xIDYyLjRjMTYuOC01LjYgMjUuOC0yMy43IDIwLjItNDAuNVM1MTguNi0zLjkgNTAxLjkgMS42bC0xMTMgMzcuN0MzNzUgMTUuOCAzNDkuMyAwIDMyMCAwYy00NC4yIDAtODAgMzUuOC04MCA4MGMwIDMgLjIgNS45IC41IDguOEwxMTcuOSAxMjkuNmMtMTYuOCA1LjYtMjUuOCAyMy43LTIwLjIgNDAuNXMyMy43IDI1LjggNDAuNSAyMC4ybDEzNS41LTQ1LjJjNC41IDMuMiA5LjMgNS45IDE0LjQgOC4yVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg1MTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzUyVjE1My4zYzIxLTkuMiAzNy4yLTI3IDQ0LjItNDlsMTI1LjktNDJ6TTQzOS42IDI4OEw1MTIgMTYzLjggNTg0LjQgMjg4SDQzOS42ek01MTIgMzg0YzYyLjkgMCAxMTUuMi0zNCAxMjYtNzguOWMyLjYtMTEtMS0yMi4zLTYuNy0zMi4xTDUzNi4xIDEwOS44Yy01LTguNi0xNC4yLTEzLjgtMjQuMS0xMy44cy0xOS4xIDUuMy0yNC4xIDEzLjhMMzkyLjcgMjczLjFjLTUuNyA5LjgtOS4zIDIxLjEtNi43IDMyLjFDMzk2LjggMzUwIDQ0OS4xIDM4NCA1MTIgMzg0ek0xMjkuMiAyOTEuOEwyMDEuNiA0MTZINTYuN2w3Mi40LTEyNC4yek0zLjIgNDMzLjFDMTQgNDc4IDY2LjMgNTEyIDEyOS4yIDUxMnMxMTUuMi0zNCAxMjYtNzguOWMyLjYtMTEtMS0yMi4zLTYuNy0zMi4xTDE1My4yIDIzNy44Yy01LTguNi0xNC4yLTEzLjgtMjQuMS0xMy44cy0xOS4xIDUuMy0yNC4xIDEzLjhMOS45IDQwMS4xYy01LjcgOS44LTkuMyAyMS4xLTYuNyAzMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2hvb2xDaXJjbGVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzcuOCA1LjRDMzI3LTEuOCAzMTMtMS44IDMwMi4yIDUuNEwxNjYuMyA5Nkg0OEMyMS41IDk2IDAgMTE3LjUgMCAxNDRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDMyMHYwSDI1NlY0MTZjMC0zNS4zIDI4LjctNjQgNjQtNjRsLjMgMGguNWMzLjQtMzcuNyAxOC43LTcyLjEgNDIuMi05OS4xQzM1MC4yIDI2MCAzMzUuNiAyNjQgMzIwIDI2NGMtNDguNiAwLTg4LTM5LjQtODgtODhzMzkuNC04OCA4OC04OHM4OCAzOS40IDg4IDg4YzAgMTguMy01LjYgMzUuMy0xNS4xIDQ5LjRjMjktMjEgNjQuNi0zMy40IDEwMy4xLTMzLjRjNTkuNSAwIDExMi4xIDI5LjYgMTQ0IDc0LjhWMTQ0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ3My43TDMzNy44IDUuNHpNOTYgMTkyaDMyYzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNlYyMDhjMC04LjggNy4yLTE2IDE2LTE2em0wIDEyOGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnpNMzIwIDEyOGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgzMzZWMTQ0YzAtOC44LTcuMi0xNi0xNi0xNnpNNjQwIDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tOTkuMy00My4zYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNmwtNzIgNzJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwbC00MC00MGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ4MCAzODUuNGw2MC43LTYwLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjaG9vbENpcmNsZUV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNy44IDUuNEMzMjctMS44IDMxMy0xLjggMzAyLjIgNS40TDE2Ni4zIDk2SDQ4QzIxLjUgOTYgMCAxMTcuNSAwIDE0NFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhIMzIwdjBIMjU2VjQxNmMwLTM1LjMgMjguNy02NCA2NC02NGwuMyAwaC41YzMuNC0zNy43IDE4LjctNzIuMSA0Mi4yLTk5LjFDMzUwLjIgMjYwIDMzNS42IDI2NCAzMjAgMjY0Yy00OC42IDAtODgtMzkuNC04OC04OHMzOS40LTg4IDg4LTg4czg4IDM5LjQgODggODhjMCAxOC4zLTUuNiAzNS4zLTE1LjEgNDkuNGMyOS0yMSA2NC42LTMzLjQgMTAzLjEtMzMuNGM1OS41IDAgMTEyLjEgMjkuNiAxNDQgNzQuOFYxNDRjMC0yNi41LTIxLjUtNDgtNDgtNDhINDczLjdMMzM3LjggNS40ek05NiAxOTJoMzJjOC44IDAgMTYgNy4yIDE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2VjIwOGMwLTguOCA3LjItMTYgMTYtMTZ6bTAgMTI4aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2ek0zMjAgMTI4Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDMzNlYxNDRjMC04LjgtNy4yLTE2LTE2LTE2ek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC05NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAtMTQ0YzguOCAwIDE2IDcuMiAxNiAxNnY4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYyODhjMC04LjggNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2hvb2xDaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzcuOCA1LjRDMzI3LTEuOCAzMTMtMS44IDMwMi4yIDUuNEwxNjYuMyA5Nkg0OEMyMS41IDk2IDAgMTE3LjUgMCAxNDRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDMyMHYwSDI1NlY0MTZjMC0zNS4zIDI4LjctNjQgNjQtNjRsLjMgMGguNWMzLjQtMzcuNyAxOC43LTcyLjEgNDIuMi05OS4xQzM1MC4yIDI2MCAzMzUuNiAyNjQgMzIwIDI2NGMtNDguNiAwLTg4LTM5LjQtODgtODhzMzkuNC04OCA4OC04OHM4OCAzOS40IDg4IDg4YzAgMTguMy01LjYgMzUuMy0xNS4xIDQ5LjRjMjktMjEgNjQuNi0zMy40IDEwMy4xLTMzLjRjNTkuNSAwIDExMi4xIDI5LjYgMTQ0IDc0LjhWMTQ0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ3My43TDMzNy44IDUuNHpNOTYgMTkyaDMyYzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNlYyMDhjMC04LjggNy4yLTE2IDE2LTE2em0wIDEyOGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnpNMzIwIDEyOGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgzMzZWMTQ0YzAtOC44LTcuMi0xNi0xNi0xNnpNNDk2IDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTIyLjYtMTQ0bDM2LjcgMzYuN2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwTDQ5NiAzOTAuNmwtMzYuNyAzNi43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42TDQ3My40IDM2OGwtMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDk2IDM0NS40bDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZMNTE4LjYgMzY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2hvb2xGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAwSDQwMGM4LjggMCAxNiA3LjIgMTYgMTZWODBjMCA4LjgtNy4yIDE2LTE2IDE2SDMyMC43bDg5LjYgNjRINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEgzMzZWNDAwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4VjUxMkg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjI0YzAtMzUuMyAyOC43LTY0IDY0LTY0SDE2NS43TDI1NiA5NS41VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem00OCAyNDBhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNODAgMjI0Yy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDgwem0zNjggMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDQ2NGMtOC44IDAtMTYgNy4yLTE2IDE2ek04MCAzNTJjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjM2OGMwLTguOC03LjItMTYtMTYtMTZIODB6bTM4NCAwYy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzNjhjMC04LjgtNy4yLTE2LTE2LTE2SDQ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2Nob29sTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDIuMiA1LjRjMTAuNy03LjIgMjQuOC03LjIgMzUuNSAwTDQ3My43IDk2SDU5MmMyNi41IDAgNDggMjEuNSA0OCA0OFYyNzJjMC02MS45LTUwLjEtMTEyLTExMi0xMTJzLTExMiA1MC4xLTExMiAxMTJ2MjQuNmMtMTkuMSAxMS4xLTMyIDMxLjctMzIgNTUuNEgzMjAuM2wtLjMgMGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2OTZoNjR2MEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDE2Ni4zTDMwMi4yIDUuNHpNODAgMjA4djY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkg5NmMtOC44IDAtMTYgNy4yLTE2IDE2em0wIDEyOHY2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMzNmMwLTguOC03LjItMTYtMTYtMTZIOTZjLTguOCAwLTE2IDcuMi0xNiAxNnptMjQwLTcyYTg4IDg4IDAgMSAwIDAtMTc2IDg4IDg4IDAgMSAwIDAgMTc2em0xNi0xMjB2MTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzIwYy04LjggMC0xNi03LjItMTYtMTZWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6bTE5MiA5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NDhoNjRWMjcyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tODAgMzJjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MHY0OGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJINDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNTJjMC0xNy43IDE0LjMtMzIgMzItMzJWMjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2hvb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM3LjggNS40QzMyNy0xLjggMzEzLTEuOCAzMDIuMiA1LjRMMTY2LjMgOTZINDhDMjEuNSA5NiAwIDExNy41IDAgMTQ0VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgyNTZWNDE2YzAtMzUuMyAyOC43LTY0IDY0LTY0czY0IDI4LjcgNjQgNjR2OTZINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjE0NGMwLTI2LjUtMjEuNS00OC00OC00OEg0NzMuN0wzMzcuOCA1LjR6TTk2IDE5MmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZWMjA4YzAtOC44IDcuMi0xNiAxNi0xNnptNDAwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2SDUxMmMtOC44IDAtMTYtNy4yLTE2LTE2VjIwOHpNOTYgMzIwaDMyYzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2em00MDAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZINTEyYy04LjggMC0xNi03LjItMTYtMTZWMzM2ek0yMzIgMTc2YTg4IDg4IDAgMSAxIDE3NiAwIDg4IDg4IDAgMSAxIC0xNzYgMHptODgtNDhjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzM2VjE0NGMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjaXNzb3JzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAxOTJsLTM5LjUtMzkuNWM0LjktMTIuNiA3LjUtMjYuMiA3LjUtNDAuNUMyMjQgNTAuMSAxNzMuOSAwIDExMiAwUzAgNTAuMSAwIDExMnM1MC4xIDExMiAxMTIgMTEyYzE0LjMgMCAyNy45LTIuNyA0MC41LTcuNUwxOTIgMjU2bC0zOS41IDM5LjVjLTEyLjYtNC45LTI2LjItNy41LTQwLjUtNy41QzUwLjEgMjg4IDAgMzM4LjEgMCA0MDBzNTAuMSAxMTIgMTEyIDExMnMxMTItNTAuMSAxMTItMTEyYzAtMTQuMy0yLjctMjcuOS03LjUtNDAuNUw0OTkuMiA3Ni44YzcuMS03LjEgNy4xLTE4LjUgMC0yNS42Yy0yOC4zLTI4LjMtNzQuMS0yOC4zLTEwMi40IDBMMjU2IDE5MnptMjIuNiAxNTAuNkwzOTYuOCA0NjAuOGMyOC4zIDI4LjMgNzQuMSAyOC4zIDEwMi40IDBjNy4xLTcuMSA3LjEtMTguNSAwLTI1LjZMMzQyLjYgMjc4LjZsLTY0IDY0ek02NCAxMTJhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptNDggMjQwYTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NyZXdkcml2ZXJXcmVuY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzguNiA1QzY5LjEtMi40IDU1LjYtMS41IDQ3IDdMNyA0N2MtOC41IDguNS05LjQgMjItMi4xIDMxLjZsODAgMTA0YzQuNSA1LjkgMTEuNiA5LjQgMTkgOS40aDU0LjFsMTA5IDEwOWMtMTQuNyAyOS0xMCA2NS40IDE0LjMgODkuNmwxMTIgMTEyYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDY0LTY0YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xMTItMTEyYy0yNC4yLTI0LjItNjAuNi0yOS04OS42LTE0LjNsLTEwOS0xMDlWMTA0YzAtNy41LTMuNS0xNC41LTkuNC0xOUw3OC42IDV6TTE5LjkgMzk2LjFDNy4yIDQwOC44IDAgNDI2LjEgMCA0NDQuMUMwIDQ4MS42IDMwLjQgNTEyIDY3LjkgNTEyYzE4IDAgMzUuMy03LjIgNDgtMTkuOUwyMzMuNyAzNzQuM2MtNy44LTIwLjktOS00My42LTMuNi02NS4xbC02MS43LTYxLjdMMTkuOSAzOTYuMXpNNTEyIDE0NGMwLTEwLjUtMS4xLTIwLjctMy4yLTMwLjVjLTIuNC0xMS4yLTE2LjEtMTQuMS0yNC4yLTZsLTYzLjkgNjMuOWMtMyAzLTcuMSA0LjctMTEuMyA0LjdIMzUyYy04LjggMC0xNi03LjItMTYtMTZWMTAyLjZjMC00LjIgMS43LTguMyA0LjctMTEuM2w2My45LTYzLjljOC4xLTguMSA1LjItMjEuOC02LTI0LjJDMzg4LjcgMS4xIDM3OC41IDAgMzY4IDBDMjg4LjUgMCAyMjQgNjQuNSAyMjQgMTQ0bDAgLjggODUuMyA4NS4zYzM2LTkuMSA3NS44IC41IDEwNCAyOC43TDQyOSAyNzQuNWM0OS0yMyA4My03Mi44IDgzLTEzMC41ek01NiA0MzJhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NyZXdkcml2ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY1IDdjLTguNS04LjUtMjItOS40LTMxLjYtMi4xbC0xMDQgODBjLTUuOSA0LjUtOS40IDExLjYtOS40IDE5djU0LjFsLTg1LjYgODUuNmM2LjcgNC4yIDEzIDkuMyAxOC44IDE1LjFzMTAuOSAxMi4yIDE1LjEgMTguOEwzNTMuOSAxOTJINDA4YzcuNSAwIDE0LjUtMy41IDE5LTkuNGw4MC0xMDRjNy40LTkuNiA2LjUtMjMuMS0yLjEtMzEuNkw0NjUgN3pNMTIxLjQgMjgxLjRsLTExMiAxMTJjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDY0IDY0YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDExMi0xMTJjMzAuMi0zMC4yIDMwLjItNzkuMSAwLTEwOS4zcy03OS4xLTMwLjItMTA5LjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2Nyb2xsVG9yYWggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNDgwVjMyQzk2IDE0LjMgNzQuNSAwIDQ4IDBTMCAxNC4zIDAgMzJWNDgwYzAgMTcuNyAyMS41IDMyIDQ4IDMyczQ4LTE0LjMgNDgtMzJ6TTUxMiAzMkgxMjhWNDgwSDUxMlYzMnpNNTkyIDBjLTI2LjUgMC00OCAxNC4zLTQ4IDMyVjQ4MGMwIDE3LjcgMjEuNSAzMiA0OCAzMnM0OC0xNC4zIDQ4LTMyVjMyYzAtMTcuNy0yMS41LTMyLTQ4LTMyek0xOTYgMzEzLjdjMC0zLjIgLjktNi40IDIuNS05LjJMMjI2LjcgMjU2bC0yOC4zLTQ4LjVjLTEuNi0yLjgtMi41LTYtMi41LTkuMmMwLTEwLjEgOC4yLTE4LjMgMTguMy0xOC4zSDI3MWwzMS40LTUzLjljMy42LTYuMyAxMC4zLTEwLjEgMTcuNi0xMC4xczEzLjkgMy44IDE3LjYgMTAuMUwzNjkgMTgwaDU2LjdjMTAuMSAwIDE4LjMgOC4yIDE4LjMgMTguM2MwIDMuMi0uOSA2LjQtMi41IDkuMkw0MTMuMyAyNTZsMjguMyA0OC41YzEuNiAyLjggMi41IDYgMi41IDkuMmMwIDEwLjEtOC4yIDE4LjMtMTguMyAxOC4zSDM2OWwtMzEuNCA1My45Yy0zLjYgNi4zLTEwLjMgMTAuMS0xNy42IDEwLjFzLTEzLjktMy44LTE3LjYtMTAuMUwyNzEgMzMySDIxNC4zYy0xMC4xIDAtMTguMy04LjItMTguMy0xOC4zem0xMjQgNTQuN0wzNDEuMiAzMzJIMjk4LjhMMzIwIDM2OC40ek0yNTQuNSAyNTZsMzAuMyA1Mmg3MC40bDMwLjMtNTItMzAuMy01MkgyODQuOGwtMzAuMyA1MnptMTQ0LjkgMjMuOEwzODMgMzA4aDMyLjhsLTE2LjQtMjguMnpNNDE1LjggMjA0SDM4M2wxNi40IDI4LjJMNDE1LjggMjA0ek0zMjAgMTQzLjZMMjk4LjggMTgwaDQyLjRMMzIwIDE0My42ek0yMjQuMiAyMDRsMTYuNCAyOC4yTDI1NyAyMDRIMjI0LjJ6TTI1NyAzMDhsLTE2LjQtMjguMkwyMjQuMiAzMDhIMjU3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY3JvbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4MHY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg0OCA5NlY4MGMwLTI2LjUtMjEuNS00OC00OC00OFMwIDUzLjUgMCA4MHpNMTEyIDMyYzEwIDEzLjQgMTYgMzAgMTYgNDhWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR2LTUuM2MwLTMyLjQgMjYuMy01OC43IDU4LjctNTguN0g0ODBWMTI4YzAtNTMtNDMtOTYtOTYtOTZIMTEyek00NjQgNDgwYzYxLjkgMCAxMTItNTAuMSAxMTItMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgzMTQuN2MtMTQuNyAwLTI2LjcgMTEuOS0yNi43IDI2LjdWMzg0YzAgNTMtNDMgOTYtOTYgOTZIMzY4aDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDBIMTQxLjNDMTI0LjMgMCAxMDggNi43IDk2IDE4LjdMMTguNyA5NkM2LjcgMTA4IDAgMTI0LjMgMCAxNDEuM1Y0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0ek0xNjAgODh2NDhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWODhjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHptODAgMHY0OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY4OGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0em04MCAwdjQ4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0Vjg4YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlY3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQuOSA5NkM2Ny4xIDg0LjQgNzMuNyA3Ni4yIDg2IDcwLjZjMTMuOC02LjIgMzQuOC04LjkgNjEuMi00LjVjOC44IDEuNCAzNi4xIDcuMSA0NC4xIDkuM2MxNyA0LjggMzQuNy01LjEgMzkuNS0yMi4ycy01LjEtMzQuNy0yMi4yLTM5LjVjLTExLjEtMy4xLTQxLTkuMi01MC45LTEwLjhDMTIzLTIuNyA4OC4zLS42IDU5LjcgMTIuM0MyOS45IDI1LjggNy41IDUwLjkgMS42IDg2LjVjLS4xIC41LS4yIDEuMS0uMiAxLjZjLTIuMiAxOS43IC4zIDM3LjkgOC4xIDU0LjFjNy43IDE2LjEgMTkuNCAyOCAzMiAzNi45Yy42IC41IDEuMyAuOSAyIDEuNEMyMi4zIDE5NC4yIDYuNSAyMTUuMSAxLjcgMjQzYy0uMSAuNi0uMiAxLjEtLjIgMS43Yy0yLjMgMTkuMyAuNCAzNy4xIDguNCA1M2M3LjkgMTUuNiAxOS44IDI3IDMyLjMgMzUuNWMyMi40IDE1LjIgNTEuOSAyNCA3NS40IDMxbDAgMCAzLjcgMS4xYzI3LjIgOC4yIDQ2LjkgMTQuNiA1OS40IDIzLjhjNS41IDQgOC4yIDcuNiA5LjUgMTAuOWMxLjMgMy4yIDIuNiA4LjYgLjkgMTguMWMtMS43IDEwLjEtNy43IDE4LTIwLjcgMjMuNWMtMTQgNi0zNS40IDguNS02MiA0LjRjLTEyLjgtMi4xLTM1LjEtOS43LTU0LjEtMTYuMmwwIDBjLTQuMy0xLjUtOC41LTIuOS0xMi4zLTQuMkMyNS4zIDQyMCA3LjIgNDI5LjEgMS42IDQ0NS44czMuNSAzNC45IDIwLjMgNDAuNWMyLjYgLjggNS43IDEuOSA5LjIgMy4xYzE4LjYgNi4zIDQ4LjUgMTYuNiA2Ny4zIDE5LjZsMCAwIC4yIDBjMzQuNSA1LjQgNjguOCAzLjQgOTcuMi04LjdjMjkuNC0xMi42IDUyLjUtMzYuNSA1OC41LTcxLjVjMy4zLTE5LjMgMS45LTM3LjQtNS01My45Yy02LjMtMTUtMTYuNC0yNi40LTI3LjYtMzUuMmMxNi41LTEzLjkgMjguNS0zMy4yIDMyLjYtNTguMmMzLjItMTkuOCAxLjktMzguMy00LjgtNTUuMWMtNi43LTE2LjgtMTcuOC0yOS40LTMwLjItMzljLTIyLjgtMTcuNi01My42LTI3LjQtNzcuNy0zNWwtMS40LS41Yy0yNy40LTguNy00Ny44LTE1LjMtNjEuNS0yNWMtNi4xLTQuNC05LjUtOC41LTExLjQtMTIuNGMtMS44LTMuNy0zLjItOS4zLTIuMy0xOC41em03Ni43IDIwOC41Yy0uMi0uMS0uNC0uMS0uNi0uMmwtMS40LS40Yy0yNy40LTguMi00Ny45LTE0LjUtNjEuNy0yMy44Yy02LjItNC4yLTkuMy03LjktMTEtMTEuM2MtMS41LTMtMi45LTcuNy0yLjEtMTUuN2MxLjktOS43IDcuOS0xNy4zIDIwLjUtMjIuN2MxNC02IDM1LjQtOC41IDYyLjEtNC4zbDE2LjQgMi42YzYuMyAyLjkgMTEuNyA2IDE2LjIgOS41YzUuNSA0LjIgOC40IDguMiAxMCAxMi4yYzEuNiA0IDIuOCAxMC40IDEuMSAyMC45Yy0yLjQgMTQuNy0xMi44IDI2LjQtMzcuMSAzMWwtMTIuNCAyLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlZWRsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAzMmMwIDExMy42LTg0LjYgMjA3LjUtMTk0LjIgMjIyYy03LjEtNTMuNC0zMC42LTEwMS42LTY1LjMtMTM5LjNDMjkwLjggNDYuMyAzNjQgMCA0NDggMGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnpNMCA5NkMwIDc4LjMgMTQuMyA2NCAzMiA2NEg2NGMxMjMuNyAwIDIyNCAxMDAuMyAyMjQgMjI0djMyVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMjBDMTAwLjMgMzIwIDAgMjE5LjcgMCA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VydmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZ2NjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em0yODAgNzJhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em00OCAyNGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwek02NCAyODhjLTM1LjMgMC02NCAyOC43LTY0IDY0djY0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYzNTJjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTI4MCA3MmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTU2IDI0YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoYXBlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTUuNCAxNS41QzMwOS43IDUuOSAyOTkuMiAwIDI4OCAwcy0yMS43IDUuOS0yNy40IDE1LjVsLTk2IDE2MGMtNS45IDkuOS02LjEgMjIuMi0uNCAzMi4yczE2LjMgMTYuMiAyNy44IDE2LjJIMzg0YzExLjUgMCAyMi4yLTYuMiAyNy44LTE2LjJzNS41LTIyLjMtLjQtMzIuMmwtOTYtMTYwek0yODggMzEyVjQ1NmMwIDIyLjEgMTcuOSA0MCA0MCA0MEg0NzJjMjIuMSAwIDQwLTE3LjkgNDAtNDBWMzEyYzAtMjIuMS0xNy45LTQwLTQwLTQwSDMyOGMtMjIuMSAwLTQwIDE3LjktNDAgNDB6TTEyOCA1MTJhMTI4IDEyOCAwIDEgMCAwLTI1NiAxMjggMTI4IDAgMSAwIDAgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGFyZUZyb21TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDIyNEgzMDUuNWMtNDUgMC04MS41IDM2LjUtODEuNSA4MS41YzAgMjIuMyAxMC4zIDM0LjMgMTkuMiA0MC41YzYuOCA0LjcgMTIuOCAxMiAxMi44IDIwLjNjMCA5LjgtOCAxNy44LTE3LjggMTcuOGgtMi41Yy0yLjQgMC00LjgtLjQtNy4xLTEuNEMyMTAuOCAzNzQuOCAxMjggMzMzLjQgMTI4IDI0MGMwLTc5LjUgNjQuNS0xNDQgMTQ0LTE0NGg4MFYzNC43QzM1MiAxNS41IDM2Ny41IDAgMzg2LjcgMGM4LjYgMCAxNi44IDMuMiAyMy4yIDguOUw1NDguMSAxMzMuM2M3LjYgNi44IDExLjkgMTYuNSAxMS45IDI2LjdzLTQuMyAxOS45LTExLjkgMjYuN2wtMTM5IDEyNS4xYy01LjkgNS4zLTEzLjUgOC4yLTIxLjQgOC4ySDM4NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjI0ek04MCA5NmMtOC44IDAtMTYgNy4yLTE2IDE2VjQzMmMwIDguOCA3LjIgMTYgMTYgMTZINDAwYzguOCAwIDE2LTcuMiAxNi0xNlYzODRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY0OGMwIDQ0LjItMzUuOCA4MC04MCA4MEg4MGMtNDQuMiAwLTgwLTM1LjgtODAtODBWMTEyQzAgNjcuOCAzNS44IDMyIDgwIDMyaDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGFyZU5vZGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAyMjRjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgNCAuMiA4IC43IDExLjlsLTk0LjEgNDdDMTQ1LjQgMTcwLjIgMTIxLjkgMTYwIDk2IDE2MGMtNTMgMC05NiA0My05NiA5NnM0MyA5NiA5NiA5NmMyNS45IDAgNDkuNC0xMC4yIDY2LjYtMjYuOWw5NC4xIDQ3Yy0uNSAzLjktLjcgNy44LS43IDExLjljMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZjLTI1LjkgMC00OS40IDEwLjItNjYuNiAyNi45bC05NC4xLTQ3Yy41LTMuOSAuNy03LjggLjctMTEuOXMtLjItOC0uNy0xMS45bDk0LjEtNDdDMzAyLjYgMjEzLjggMzI2LjEgMjI0IDM1MiAyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNyAzNC44Yy0xMS41IDUuMS0xOSAxNi42LTE5IDI5LjJ2NjRIMTc2Qzc4LjggMTI4IDAgMjA2LjggMCAzMDRDMCA0MTcuMyA4MS41IDQ2Ny45IDEwMC4yIDQ3OC4xYzIuNSAxLjQgNS4zIDEuOSA4LjEgMS45YzEwLjkgMCAxOS43LTguOSAxOS43LTE5LjdjMC03LjUtNC4zLTE0LjQtOS44LTE5LjVDMTA4LjggNDMxLjkgOTYgNDE0LjQgOTYgMzg0YzAtNTMgNDMtOTYgOTYtOTZoOTZ2NjRjMCAxMi42IDcuNCAyNC4xIDE5IDI5LjJzMjUgMyAzNC40LTUuNGwxNjAtMTQ0YzYuNy02LjEgMTAuNi0xNC43IDEwLjYtMjMuOHMtMy44LTE3LjctMTAuNi0yMy44bC0xNjAtMTQ0Yy05LjQtOC41LTIyLjktMTAuNi0zNC40LTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hlZXRQbGFzdGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDIyNFYzODRjMC0xNy43IDE0LjMtMzIgMzItMzJIMzg0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0QzI4LjcgMCAwIDI4LjcgMCA2NFY0NDh6TTE3MS4zIDc1LjNsLTk2IDk2Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42bDk2LTk2YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnptOTYgMzJsLTE2MCAxNjBjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZsMTYwLTE2MGM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZ6TTM4NCAzODRIMjU2VjUxMkwzODQgMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGVrZWxTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWOTZIMTkyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE2MGMwLTcwLjctNTcuMy0xMjgtMTI4LTEyOEgzMnpNMzIwIDQ4MGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYzNTJjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMTkyVjE5MmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGllbGRDYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY5LjQgMi45QzI2NS4yIDEgMjYwLjcgMCAyNTYgMHMtOS4yIDEtMTMuNCAyLjlMNTQuMyA4Mi44Yy0yMiA5LjMtMzguNCAzMS0zOC4zIDU3LjJjLjUgOTkuMiA0MS4zIDI4MC43IDIxMy42IDM2My4yYzE2LjcgOCAzNi4xIDggNTIuOCAwQzQ1NC43IDQyMC43IDQ5NS41IDIzOS4yIDQ5NiAxNDBjLjEtMjYuMi0xNi4zLTQ3LjktMzguMy01Ny4yTDI2OS40IDIuOXpNMTYwIDE1NC40YzAtNS44IDQuNy0xMC40IDEwLjQtMTAuNGguMmMzLjQgMCA2LjUgMS42IDguNSA0LjNsNDAgNTMuM2MzIDQgNy44IDYuNCAxMi44IDYuNGg0OGM1IDAgOS44LTIuNCAxMi44LTYuNGw0MC01My4zYzItMi43IDUuMi00LjMgOC41LTQuM2guMmM1LjggMCAxMC40IDQuNyAxMC40IDEwLjRWMjcyYzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2VjE1NC40ek0yMTYgMjg4YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnptOTYtMTZhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hpZWxkRG9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2OS40IDIuOUMyNjUuMiAxIDI2MC43IDAgMjU2IDBzLTkuMiAxLTEzLjQgMi45TDU0LjMgODIuOGMtMjIgOS4zLTM4LjQgMzEtMzguMyA1Ny4yYy41IDk5LjIgNDEuMyAyODAuNyAyMTMuNiAzNjMuMmMxNi43IDggMzYuMSA4IDUyLjggMEM0NTQuNyA0MjAuNyA0OTUuNSAyMzkuMiA0OTYgMTQwYy4xLTI2LjItMTYuMy00Ny45LTM4LjMtNTcuMkwyNjkuNCAyLjl6TTE2MC45IDI4Ni4yYzQuOCAxLjIgOS45IDEuOCAxNS4xIDEuOGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBoNDQuMmMxMi4xIDAgMjMuMiA2LjggMjguNiAxNy43TDMyMCAxOTJoNjRjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgNDQuMi0zNS44IDgwLTgwIDgwSDI3MnY1MC43YzAgNy4zLTUuOSAxMy4zLTEzLjMgMTMuM2MtMS44IDAtMy42LS40LTUuMi0xLjFsLTk4LjctNDIuM2MtNi42LTIuOC0xMC44LTkuMy0xMC44LTE2LjRjMC0yLjggLjYtNS41IDEuOS04bDE1LTMwek0xNjAgMTYwaDQwIDh2MzIgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTc2YzAtOC44IDcuMi0xNiAxNi0xNnptMTI4IDQ4YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaWVsZEhhbHZlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMGM0LjYgMCA5LjIgMSAxMy40IDIuOUw0NTcuNyA4Mi44YzIyIDkuMyAzOC40IDMxIDM4LjMgNTcuMmMtLjUgOTkuMi00MS4zIDI4MC43LTIxMy42IDM2My4yYy0xNi43IDgtMzYuMSA4LTUyLjggMEM1Ny4zIDQyMC43IDE2LjUgMjM5LjIgMTYgMTQwYy0uMS0yNi4yIDE2LjMtNDcuOSAzOC4zLTU3LjJMMjQyLjcgMi45QzI0Ni44IDEgMjUxLjQgMCAyNTYgMHptMCA2Ni44VjQ0NC44QzM5NCAzNzggNDMxLjEgMjMwLjEgNDMyIDE0MS40TDI1NiA2Ni44bDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hpZWxkSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY5LjQgMi45QzI2NS4yIDEgMjYwLjcgMCAyNTYgMHMtOS4yIDEtMTMuNCAyLjlMNTQuMyA4Mi44Yy0yMiA5LjMtMzguNCAzMS0zOC4zIDU3LjJjLjUgOTkuMiA0MS4zIDI4MC43IDIxMy42IDM2My4yYzE2LjcgOCAzNi4xIDggNTIuOCAwQzQ1NC43IDQyMC43IDQ5NS41IDIzOS4yIDQ5NiAxNDBjLjEtMjYuMi0xNi4zLTQ3LjktMzguMy01Ny4yTDI2OS40IDIuOXpNMTQ0IDIyMS4zYzAtMzMuOCAyNy40LTYxLjMgNjEuMy02MS4zYzE2LjIgMCAzMS44IDYuNSA0My4zIDE3LjlsNy40IDcuNCA3LjQtNy40YzExLjUtMTEuNSAyNy4xLTE3LjkgNDMuMy0xNy45YzMzLjggMCA2MS4zIDI3LjQgNjEuMyA2MS4zYzAgMTYuMi02LjUgMzEuOC0xNy45IDQzLjNsLTgyLjcgODIuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTgyLjctODIuN2MtMTEuNS0xMS41LTE3LjktMjcuMS0xNy45LTQzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaWVsZFZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2OS40IDIuOUMyNjUuMiAxIDI2MC43IDAgMjU2IDBzLTkuMiAxLTEzLjQgMi45TDU0LjMgODIuOGMtMjIgOS4zLTM4LjQgMzEtMzguMyA1Ny4yYy41IDk5LjIgNDEuMyAyODAuNyAyMTMuNiAzNjMuMmMxNi43IDggMzYuMSA4IDUyLjggMEM0NTQuNyA0MjAuNyA0OTUuNSAyMzkuMiA0OTYgMTQwYy4xLTI2LjItMTYuMy00Ny45LTM4LjMtNTcuMkwyNjkuNCAyLjl6TTI1NiAxMTJjOC44IDAgMTYgNy4yIDE2IDE2YzAgMzMgMzkuOSA0OS41IDYzLjIgMjYuMmM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZDMzM0LjUgMjAwLjEgMzUxIDI0MCAzODQgMjQwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2Yy0zMyAwLTQ5LjUgMzkuOS0yNi4yIDYzLjJjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEMzMTEuOSAzMzQuNSAyNzIgMzUxIDI3MiAzODRjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZjMC0zMy0zOS45LTQ5LjUtNjMuMi0yNi4yYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42QzE3Ny41IDMxMS45IDE2MSAyNzIgMTI4IDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmMzMyAwIDQ5LjUtMzkuOSAyNi4yLTYzLjJjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEMyMDAuMSAxNzcuNSAyNDAgMTYxIDI0MCAxMjhjMC04LjggNy4yLTE2IDE2LTE2ek0yMzIgMjU2YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptNzIgMzJhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hpZWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYzQuNiAwIDkuMiAxIDEzLjQgMi45TDQ1Ny43IDgyLjhjMjIgOS4zIDM4LjQgMzEgMzguMyA1Ny4yYy0uNSA5OS4yLTQxLjMgMjgwLjctMjEzLjYgMzYzLjJjLTE2LjcgOC0zNi4xIDgtNTIuOCAwQzU3LjMgNDIwLjcgMTYuNSAyMzkuMiAxNiAxNDBjLS4xLTI2LjIgMTYuMy00Ny45IDM4LjMtNTcuMkwyNDIuNyAyLjlDMjQ2LjggMSAyNTEuNCAwIDI1NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMkgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDhWMjQwbDQ0LjQgMTQuOGMyMy4xIDcuNyAyOS41IDM3LjUgMTEuNSA1My45bC0xMDEgOTIuNmMtMTYuMiA5LjQtMzQuNyAxNS4xLTUwLjkgMTUuMWMtMTkuNiAwLTQwLjgtNy43LTU5LjItMjAuM2MtMjIuMS0xNS41LTUxLjYtMTUuNS03My43IDBjLTE3LjEgMTEuOC0zOCAyMC4zLTU5LjIgMjAuM2MtMTYuMiAwLTM0LjctNS43LTUwLjktMTUuMWwtMTAxLTkyLjZjLTE4LTE2LjUtMTEuNi00Ni4yIDExLjUtNTMuOUw5NiAyNDBWMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4VjMyek0xNjAgMjE4LjdsMTA3LjgtMzUuOWMxMy4xLTQuNCAyNy4zLTQuNCA0MC41IDBMNDE2IDIxOC43VjEyOEgxNjB2OTAuN3pNMzA2LjUgNDIxLjlDMzI5IDQzNy40IDM1Ni41IDQ0OCAzODQgNDQ4YzI2LjkgMCA1NS40LTEwLjggNzcuNC0yNi4xbDAgMGMxMS45LTguNSAyOC4xLTcuOCAzOS4yIDEuN2MxNC40IDExLjkgMzIuNSAyMSA1MC42IDI1LjJjMTcuMiA0IDI3LjkgMjEuMiAyMy45IDM4LjRzLTIxLjIgMjcuOS0zOC40IDIzLjljLTI0LjUtNS43LTQ0LjktMTYuNS01OC4yLTI1QzQ0OS41IDUwMS43IDQxNyA1MTIgMzg0IDUxMmMtMzEuOSAwLTYwLjYtOS45LTgwLjQtMTguOWMtNS44LTIuNy0xMS4xLTUuMy0xNS42LTcuN2MtNC41IDIuNC05LjcgNS4xLTE1LjYgNy43Yy0xOS44IDktNDguNSAxOC45LTgwLjQgMTguOWMtMzMgMC02NS41LTEwLjMtOTQuNS0yNS44Yy0xMy40IDguNC0zMy43IDE5LjMtNTguMiAyNWMtMTcuMiA0LTM0LjQtNi43LTM4LjQtMjMuOXM2LjctMzQuNCAyMy45LTM4LjRjMTguMS00LjIgMzYuMi0xMy4zIDUwLjYtMjUuMmMxMS4xLTkuNCAyNy4zLTEwLjEgMzkuMi0xLjdsMCAwQzEzNi43IDQzNy4yIDE2NS4xIDQ0OCAxOTIgNDQ4YzI3LjUgMCA1NS0xMC42IDc3LjUtMjYuMWMxMS4xLTcuOSAyNS45LTcuOSAzNyAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGlydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTEuOCAwYzcuOCAwIDE0LjMgNS43IDE2LjcgMTMuMkMyNDAuOCA1MS45IDI3Ny4xIDgwIDMyMCA4MHM3OS4yLTI4LjEgOTEuNS02Ni44QzQxMy45IDUuNyA0MjAuNCAwIDQyOC4yIDBoMTIuNmMyMi41IDAgNDQuMiA3LjkgNjEuNSAyMi4zTDYyOC41IDEyNy40YzYuNiA1LjUgMTAuNyAxMy41IDExLjQgMjIuMXMtMi4xIDE3LjEtNy44IDIzLjZsLTU2IDY0Yy0xMS40IDEzLjEtMzEuMiAxNC42LTQ0LjYgMy41TDQ4MCAxOTcuN1Y0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMjI0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxOTcuN2wtNTEuNSA0Mi45Yy0xMy4zIDExLjEtMzMuMSA5LjYtNDQuNi0zLjVsLTU2LTY0Yy01LjctNi41LTguNS0xNS03LjgtMjMuNnM0LjgtMTYuNiAxMS40LTIyLjFMMTM3LjcgMjIuM0MxNTUgNy45IDE3Ni43IDAgMTk5LjIgMGgxMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG9lUHJpbnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAwQzM1Mi4zIDAgMjU2IDMyIDI1NiAzMlYxNjBjNDggMCA3NiAxNiAxMDQgMzJzNTYgMzIgMTA0IDMyYzU2LjQgMCAxNzYtMTYgMTc2LTk2UzUxMiAwIDQxNiAwek0xMjggOTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRoMzJWMzJIMTkyYy0zNS4zIDAtNjQgMjguNy02NCA2NHpNMjg4IDUxMmM5NiAwIDIyNC00OCAyMjQtMTI4cy0xMTkuNi05Ni0xNzYtOTZjLTQ4IDAtNzYgMTYtMTA0IDMycy01NiAzMi0xMDQgMzJWNDgwczk2LjMgMzIgMTYwIDMyek0wIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg5NlYzNTJINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG9wTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNi44IDE5Mkg0NDkuNmMyMC4yLTE5LjggNDcuOS0zMiA3OC40LTMyYzMwLjUgMCA1OC4xIDEyLjIgNzguMyAzMS45YzE4LjktMS42IDMzLjctMTcuNCAzMy43LTM2LjdjMC03LjMtMi4yLTE0LjQtNi4yLTIwLjRMNTU4LjIgMjEuNEM1NDkuMyA4IDUzNC40IDAgNTE4LjMgMEgxMjEuN2MtMTYgMC0zMSA4LTM5LjkgMjEuNEw2LjIgMTM0LjdjLTQgNi4xLTYuMiAxMy4yLTYuMiAyMC40QzAgMTc1LjUgMTYuNSAxOTIgMzYuOCAxOTJ6TTM4NCAyMjRIMzIwVjM4NEgxMjhWMjI0SDY0VjM4NHY4MGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgzMzZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzg0IDM1MiAyMjR6bTE0NCAxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OEg0OTZWMjcyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tODAgMzJ2NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMyVjI3MmMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hvcFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdsLTU0LjgtNDNWMjI0SDUxMlYzNzZMMzg0IDI3NS43VjIyNEgzMjB2MS41TDI3Ny4yIDE5Mkg2MDMuMmMyMC4zIDAgMzYuOC0xNi41IDM2LjgtMzYuOGMwLTcuMy0yLjItMTQuNC02LjItMjAuNEw1NTguMiAyMS40QzU0OS4zIDggNTM0LjQgMCA1MTguMyAwSDEyMS43Yy0xNiAwLTMxIDgtMzkuOSAyMS40TDc0LjEgMzIuOCAzOC44IDUuMXpNMzYuOCAxOTJoODVMMjEgMTEyLjUgNi4yIDEzNC43Yy00IDYuMS02LjIgMTMuMi02LjIgMjAuNEMwIDE3NS41IDE2LjUgMTkyIDM2LjggMTkyek0zMjAgMzg0SDEyOFYyMjRINjRWMzg0djgwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDMzNmMyNi41IDAgNDgtMjEuNSA0OC00OFYzOTguNWwtNjQtNTAuNFYzODR6TTU0NCA1MTJsLS4zIDBoLjZsLS4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzYuOCAxOTJINjAzLjJjMjAuMyAwIDM2LjgtMTYuNSAzNi44LTM2LjhjMC03LjMtMi4yLTE0LjQtNi4yLTIwLjRMNTU4LjIgMjEuNEM1NDkuMyA4IDUzNC40IDAgNTE4LjMgMEgxMjEuN2MtMTYgMC0zMSA4LTM5LjkgMjEuNEw2LjIgMTM0LjdjLTQgNi4xLTYuMiAxMy4yLTYuMiAyMC40QzAgMTc1LjUgMTYuNSAxOTIgMzYuOCAxOTJ6TTY0IDIyNFYzODR2ODBjMCAyNi41IDIxLjUgNDggNDggNDhIMzM2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM4NCAyMjRIMzIwVjM4NEgxMjhWMjI0SDY0em00NDggMFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMjRINTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG93ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMTMxLjlDNjQgMTEyLjEgODAuMSA5NiA5OS45IDk2YzkuNSAwIDE4LjYgMy44IDI1LjQgMTAuNWwxNi4yIDE2LjJjLTIxIDM4LjktMTcuNCA4Ny41IDEwLjkgMTIzTDE1MSAyNDdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMEwzNDUgMTIxYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTEuMyAxLjNjLTM1LjUtMjguMy04NC4yLTMxLjktMTIzLTEwLjlMMTcwLjUgNjEuM0MxNTEuOCA0Mi41IDEyNi40IDMyIDk5LjkgMzJDNDQuNyAzMiAwIDc2LjcgMCAxMzEuOVY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxMzEuOXpNMjU2IDM1MmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTY0IDY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTAtMTI4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptNjQgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMC0xMjhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em02NCA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0zMi0zMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNocmltcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2czI4LjcgNjQgNjQgNjRoMWMzLjcgODguOSA3NyAxNjAgMTY3IDE2MGg1NlYxMjhIMjY0IDg4LjggNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDY0YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDY0ek0yMjQgNDU2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDcyVjQwNy44bC02NC4xLTIyLjRjLTEyLjUtNC40LTI2LjIgMi4yLTMwLjYgMTQuN3MyLjIgMjYuMiAxNC43IDMwLjZsNC41IDEuNkMyMzMgNDMzLjkgMjI0IDQ0My45IDIyNCA0NTZ6bTEyOCAyMy4zYzM2LjQtMy4zIDY5LjUtMTcuNiA5Ni4xLTM5LjZsLTg2LjUtMzQuNmMtMyAxLjgtNi4yIDMuMi05LjYgNC4zdjY5Ljl6TTQ3Mi42IDQxNWMyNC42LTMwLjMgMzkuNC02OC45IDM5LjQtMTExYzAtMTIuMy0xLjMtMjQuMy0zLjctMzUuOUwzODIuOCAzNTUuMWMuOCAzLjQgMS4yIDcgMS4yIDEwLjZjMCA0LjYtLjcgOS0xLjkgMTMuMUw0NzIuNiA0MTV6TTMzNiAxMjhIMzIwVjMyMGgxOC4zYzkuOSAwIDE5LjEgMy4yIDI2LjYgOC41bDEzMy41LTkyLjRDNDcxLjggMTcyLjYgNDA5LjEgMTI4IDMzNiAxMjh6TTE2OCAxOTJhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2h1ZmZsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDMuOCAzNC40YzEyLTUgMjUuNy0yLjIgMzQuOSA2LjlsNjQgNjRjNiA2IDkuNCAxNC4xIDkuNCAyMi42cy0zLjQgMTYuNi05LjQgMjIuNmwtNjQgNjRjLTkuMiA5LjItMjIuOSAxMS45LTM0LjkgNi45cy0xOS44LTE2LjYtMTkuOC0yOS42VjE2MEgzNTJjLTEwLjEgMC0xOS42IDQuNy0yNS42IDEyLjhMMjg0IDIyOS4zIDI0NCAxNzZsMzEuMi00MS42QzI5My4zIDExMC4yIDMyMS44IDk2IDM1MiA5NmgzMlY2NGMwLTEyLjkgNy44LTI0LjYgMTkuOC0yOS42ek0xNjQgMjgyLjdMMjA0IDMzNmwtMzEuMiA0MS42QzE1NC43IDQwMS44IDEyNi4yIDQxNiA5NiA0MTZIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIOTZjMTAuMSAwIDE5LjYtNC43IDI1LjYtMTIuOEwxNjQgMjgyLjd6bTI3NC42IDE4OGMtOS4yIDkuMi0yMi45IDExLjktMzQuOSA2LjlzLTE5LjgtMTYuNi0xOS44LTI5LjZWNDE2SDM1MmMtMzAuMiAwLTU4LjctMTQuMi03Ni44LTM4LjRMMTIxLjYgMTcyLjhjLTYtOC4xLTE1LjUtMTIuOC0yNS42LTEyLjhIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIOTZjMzAuMiAwIDU4LjcgMTQuMiA3Ni44IDM4LjRMMzI2LjQgMzM5LjJjNiA4LjEgMTUuNSAxMi44IDI1LjYgMTIuOGgzMlYzMjBjMC0xMi45IDcuOC0yNC42IDE5LjgtMjkuNnMyNS43LTIuMiAzNC45IDYuOWw2NCA2NGM2IDYgOS40IDE0LjEgOS40IDIyLjZzLTMuNCAxNi42LTkuNCAyMi42bC02NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2h1dHRsZVNwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzMCA0ODBjNDAuNiAwIDgwLjQtMTEgMTE1LjItMzEuOUwzNTIgMzg0bC0yMjQgMCAwIDk2aDJ6TTM1MiAxMjhMMjQ1LjIgNjMuOUMyMTAuNCA0MyAxNzAuNiAzMiAxMzAgMzJoLTJ2OTZsMjI0IDB6TTk2IDEyOGwwLTk2SDgwQzUzLjUgMzIgMzIgNTMuNSAzMiA4MHY0OGg4Yy0yMi4xIDAtNDAgMTcuOS00MCA0MHYxNlYzMjh2MTZjMCAyMi4xIDE3LjkgNDAgNDAgNDBIMzJ2NDhjMCAyNi41IDIxLjUgNDggNDggNDhIOTZsMC05Nmg4YzI2LjIgMCA0OS40LTEyLjYgNjQtMzJINDU2YzY5LjMgMCAxMzUtMjIuNyAxNzkuMi04MS42YzYuNC04LjUgNi40LTIwLjMgMC0yOC44QzU5MSAxODIuNyA1MjUuMyAxNjAgNDU2IDE2MEgxNjhjLTE0LjYtMTkuNC0zNy44LTMyLTY0LTMybC04IDB6TTUxMiAyNDMuNnYyNC45YzAgMTkuNi0xNS45IDM1LjYtMzUuNiAzNS42Yy0yLjUgMC00LjQtMi00LjQtNC40VjIxMi40YzAtMi41IDItNC40IDQuNC00LjRjMTkuNiAwIDM1LjYgMTUuOSAzNS42IDM1LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25IYW5naW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRsMzUyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTM1MiAwVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxMjhIMzJDMTQuMyAxMjggMCAxMTMuNyAwIDk2UzE0LjMgNjQgMzIgNjRINjRWMzJDNjQgMTQuMyA3OC4zIDAgOTYgMHptOTYgMTYwSDQ0OGMxNy43IDAgMzIgMTQuMyAzMiAzMlYzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTQ0OCA5NmMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMyek0zNTIgMjI0VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyMjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnpNMTkyIDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMyek05NiA0MTZ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25hdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2Ny44YzAgMjcuNy0yLjQgNTUuMy03LjEgODIuNWwtODQuNCAyNS4zYy00MC42IDEyLjItNjguNCA0OS42LTY4LjQgOTJ2NzEuOWMwIDQwIDMyLjUgNzIuNSA3Mi41IDcyLjVjMjYgMCA1MC0xMy45IDYyLjktMzYuNWwxMy45LTI0LjNjMjYuOC00NyA0Ni41LTk3LjcgNTguNC0xNTAuNWw5NC40LTI4LjMtMTIuNSAzNy41Yy0zLjMgOS44LTEuNiAyMC41IDQuNCAyOC44czE1LjcgMTMuMyAyNiAxMy4zSDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0NjAuNGwxOC01My45YzMuOC0xMS4zIC45LTIzLjgtNy40LTMyLjRzLTIwLjctMTEuOC0zMi4yLTguNEwzMTYuNCAxOTguMWMyLjQtMjAuNyAzLjYtNDEuNCAzLjYtNjIuM1YxMjhjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZ2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxMjh6bS05LjIgMTc3bDQ5LTE0LjdjLTEwLjQgMzMuOC0yNC41IDY2LjQtNDIuMSA5Ny4ybC0xMy45IDI0LjNjLTEuNSAyLjYtNC4zIDQuMy03LjQgNC4zYy00LjcgMC04LjUtMy44LTguNS04LjVWMzM1LjZjMC0xNC4xIDkuMy0yNi42IDIyLjgtMzAuN3pNMjQgMzY4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDY0LjNjLS4yLTIuOC0uMy01LjYtLjMtOC41VjM2OEgyNHptNTkyIDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDMwNS45Yy02LjcgMTYuMy0xNC4yIDMyLjMtMjIuMyA0OEg2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25zUG9zdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMzJINjRDNDYuMyAzMiAzMiA0Ni4zIDMyIDY0djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDQ0MS40YzQuMiAwIDguMy0xLjcgMTEuMy00LjdsNDgtNDhjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTQ4LTQ4Yy0zLTMtNy4xLTQuNy0xMS4zLTQuN0gyODhjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ6TTQ4MCAyNTZjMC0xNy43LTE0LjMtMzItMzItMzJIMjg4VjE5MkgyMjR2MzJINzAuNmMtNC4yIDAtOC4zIDEuNy0xMS4zIDQuN2wtNDggNDhjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42bDQ4IDQ4YzMgMyA3LjEgNC43IDExLjMgNC43SDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMlYyNTZ6TTI4OCA0ODBWMzg0SDIyNHY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaW1DYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDBIMjQyLjdjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdMMzY1LjMgOTZjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM1Y0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0QzAgMjguNyAyOC43IDAgNjQgMHpNOTYgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMmg2NFYxOTJIOTZ6TTY0IDM1Mmg4MCA5NiA4MFYyODhIMjQwIDE0NCA2NHY2NHpNMzIwIDIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMkgyNTZ2NjRoNjRWMjI0ek0xNjAgMTkydjY0aDY0VjE5MkgxNjB6TTI4OCA0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzg0SDI1NnY2NGgzMnpNMTYwIDM4NHY2NGg2NFYzODRIMTYwek02NCA0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJWMzg0SDY0djMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyczE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NlYyODhIMTYwVjI2NGMwLTMwLjktMjUuMS01Ni01Ni01Nkg1NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg0OGM0LjQgMCA4IDMuNiA4IDh2MjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMjU2IDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0MDBWMjY0YzAtNC40IDMuNi04IDgtOGg1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg0MDhjLTMwLjkgMC01NiAyNS4xLTU2IDU2djI0SDI4OFY5NnpNNDgwIDQxNlYzODRIMzJ2MzJjMCA1MyA0MyA5NiA5NiA5NkgzODRjNTMgMCA5Ni00MyA5Ni05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2l0ZW1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggODBjMC0yNi41IDIxLjUtNDggNDgtNDhoNjRjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NjRjMCAyNi41LTIxLjUgNDgtNDggNDhoLTh2NDBINDY0YzMwLjkgMCA1NiAyNS4xIDU2IDU2djMyaDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDY0Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzNjhjMC0yNi41IDIxLjUtNDggNDgtNDhoOFYyODhjMC00LjQtMy42LTgtOC04SDMxMnY0MGg4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDI1NmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzY4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDhWMjgwSDExMmMtNC40IDAtOCAzLjYtOCA4djMyaDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM2OGMwLTI2LjUgMjEuNS00OCA0OC00OGg4VjI4OGMwLTMwLjkgMjUuMS01NiA1Ni01NkgyNjRWMTkyaC04Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2t1bGxDcm9zc2JvbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCAxMjhjMCA0NC40LTI1LjQgODMuNS02NCAxMDYuNFYyNTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMTc2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyMzQuNGMtMzguNi0yMy02NC02Mi4xLTY0LTEwNi40QzgwIDU3LjMgMTQ0LjUgMCAyMjQgMHMxNDQgNTcuMyAxNDQgMTI4ek0xNjggMTc2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMTQ0LTMyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTMuNCAyNzMuN2M3LjktMTUuOCAyNy4xLTIyLjIgNDIuOS0xNC4zTDIyNCAzNDguMmwxNzcuNy04OC44YzE1LjgtNy45IDM1LTEuNSA0Mi45IDE0LjNzMS41IDM1LTE0LjMgNDIuOUwyOTUuNiAzODRsMTM0LjggNjcuNGMxNS44IDcuOSAyMi4yIDI3LjEgMTQuMyA0Mi45cy0yNy4xIDIyLjItNDIuOSAxNC4zTDIyNCA0MTkuOCA0Ni4zIDUwOC42Yy0xNS44IDcuOS0zNSAxLjUtNDIuOS0xNC4zcy0xLjUtMzUgMTQuMy00Mi45TDE1Mi40IDM4NCAxNy43IDMxNi42QzEuOSAzMDguNy00LjUgMjg5LjUgMy40IDI3My43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTa3VsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMzk4LjljNTguNS00MS4xIDk2LTEwNC4xIDk2LTE3NC45QzUxMiAxMDAuMyAzOTcuNCAwIDI1NiAwUzAgMTAwLjMgMCAyMjRjMCA3MC43IDM3LjUgMTMzLjggOTYgMTc0LjljMCAuNCAwIC43IDAgMS4xdjY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4VjQ2NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djQ4aDY0VjQ2NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djQ4aDQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQwMGMwLS40IDAtLjcgMC0xLjF6TTk2IDI1NmE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSA5NiAyNTZ6bTI1Ni02NGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4xIDkuMkMxMy4zLTEuMiAyOC40LTMuMSAzOC44IDUuMWw1OTIgNDY0YzEwLjQgOC4yIDEyLjMgMjMuMyA0LjEgMzMuN3MtMjMuMyAxMi4zLTMzLjcgNC4xTDkuMiA0Mi45Qy0xLjIgMzQuNy0zLjEgMTkuNiA1LjEgOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbGVpZ2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2VjI1NmMwIDUzIDQzIDk2IDk2IDk2djMyaDY0VjM1MkgzODR2MzJoNjRWMzUyYzUzIDAgOTYtNDMgOTYtOTZWMTYwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDUxMiA0ODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjQxLjNjMCAzMC4yLTI0LjUgNTQuNy01NC43IDU0LjdjLTc1LjUgMC0xNDUuNi0zOC45LTE4NS42LTEwMi45bC00LjMtNi45QzE3NC4yIDY3LjYgMTI1IDM3LjYgNzAuNyAzMi43Yy0yLjItLjUtNC40LS43LTYuNy0uN0g1NSAzMnpNNjQwIDM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY4YzAgMTMuMy0xMC43IDI0LTI0IDI0SDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDU1MmM0OC42IDAgODgtMzkuNCA4OC04OHYtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2xpZGVycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmw1NC43IDBjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OHM2MS0xOS43IDczLjMtNDhMNDgwIDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMjQ2LjcgMGMtMTIuMy0yOC4zLTQwLjUtNDgtNzMuMy00OHMtNjEgMTkuNy03My4zIDQ4TDMyIDM4NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6bTEyOCAwYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTMyMCAyNTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMzItODBjLTMyLjggMC02MSAxOS43LTczLjMgNDhMMzIgMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDI0Ni43IDBjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OHM2MS0xOS43IDczLjMtNDhsNTQuNyAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC01NC43IDBjLTEyLjMtMjguMy00MC41LTQ4LTczLjMtNDh6TTE5MiAxMjhhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em03My4zLTY0QzI1MyAzNS43IDIyNC44IDE2IDE5MiAxNnMtNjEgMTkuNy03My4zIDQ4TDMyIDY0QzE0LjMgNjQgMCA3OC4zIDAgOTZzMTQuMyAzMiAzMiAzMmw4Ni43IDBjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OHM2MS0xOS43IDczLjMtNDhMNDgwIDEyOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwyNjUuMyA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU21vZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAxNDRjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRIMjk5LjNjMjIuNiAxOS45IDUyLjIgMzIgODQuNyAzMnM2Mi4xLTEyLjEgODQuNy0zMkg0OTZjNjEuOSAwIDExMi01MC4xIDExMi0xMTJzLTUwLjEtMTEyLTExMi0xMTJjLTEwLjcgMC0yMSAxLjUtMzAuOCA0LjNDNDQzLjggMjcuNyA0MDEuMSAwIDM1MiAwYy0zMi42IDAtNjIuNCAxMi4yLTg1LjEgMzIuM0MyNDIuMSAxMi4xIDIxMC41IDAgMTc2IDBDOTYuNSAwIDMyIDY0LjUgMzIgMTQ0ek02MTYgMzY4SDI4MGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg2MTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjR6bS02NCA5Nkg0NDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINTUyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0em0tMTkyIDBIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMzYwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0ek0yMjQgMzkyYzAtMTMuMy0xMC43LTI0LTI0LTI0SDk2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDIwMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU21va2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzJWNDNjMCAzOC4yIDE1LjIgNzQuOCA0Mi4yIDEwMS44bDIxIDIxYzIxIDIxIDMyLjggNDkuNSAzMi44IDc5LjJ2MTFjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjQ1YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlsLTIxLTIxQzQwNS45IDE1MS4xIDM4NCA5OC4xIDM4NCA0M1YzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyek01NzYgMjU2VjI0NWMwLTM4LjItMTUuMi03NC44LTQyLjItMTAxLjhsLTIxLTIxYy0yMS0yMS0zMi44LTQ5LjUtMzIuOC03OS4yVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNDNjMCAxMi43IDUuMSAyNC45IDE0LjEgMzMuOWwyMSAyMWMzOSAzOSA2MC45IDkxLjkgNjAuOSAxNDcuMXYxMWMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMnpNMCA0MTZjMC0zNS4zIDI4LjctNjQgNjQtNjRINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY0MTZ6bTIyNCAwdjMySDM4NFY0MTZIMjI0em0yODgtNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzg0YzAtMTcuNyAxNC4zLTMyIDMyLTMyem05NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU25vd2ZsYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjYyLjFsMTUtMTVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC00OSA0OXY3MC4zbDYxLjQtMzUuOCAxNy43LTY2LjFjMy40LTEyLjggMTYuNi0yMC40IDI5LjQtMTdzMjAuNCAxNi42IDE3IDI5LjRsLTUuMiAxOS4zIDIzLjYtMTMuOGMxNS4zLTguOSAzNC45LTMuNyA0My44IDExLjVzMy44IDM0LjktMTEuNSA0My44bC0yNS4zIDE0LjggMjEuNyA1LjhjMTIuOCAzLjQgMjAuNCAxNi42IDE3IDI5LjRzLTE2LjYgMjAuNC0yOS40IDE3bC02Ny43LTE4LjFMMjg3LjUgMjU2bDYwLjkgMzUuNSA2Ny43LTE4LjFjMTIuOC0zLjQgMjYgNC4yIDI5LjQgMTdzLTQuMiAyNi0xNyAyOS40bC0yMS43IDUuOCAyNS4zIDE0LjhjMTUuMyA4LjkgMjAuNCAyOC41IDExLjUgNDMuOHMtMjguNSAyMC40LTQzLjggMTEuNWwtMjMuNi0xMy44IDUuMiAxOS4zYzMuNCAxMi44LTQuMiAyNi0xNyAyOS40cy0yNi00LjItMjkuNC0xN2wtMTcuNy02Ni4xTDI1NiAzMTEuN3Y3MC4zbDQ5IDQ5YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTE1LTE1VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDkuOWwtMTUgMTVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDktNDlWMzExLjdsLTYxLjQgMzUuOC0xNy43IDY2LjFjLTMuNCAxMi44LTE2LjYgMjAuNC0yOS40IDE3cy0yMC40LTE2LjYtMTctMjkuNGw1LjItMTkuM0w0OC4xIDM5NS42Yy0xNS4zIDguOS0zNC45IDMuNy00My44LTExLjVzLTMuNy0zNC45IDExLjUtNDMuOGwyNS4zLTE0LjgtMjEuNy01LjhjLTEyLjgtMy40LTIwLjQtMTYuNi0xNy0yOS40czE2LjYtMjAuNCAyOS40LTE3bDY3LjcgMTguMUwxNjAuNSAyNTYgOTkuNiAyMjAuNSAzMS45IDIzOC42Yy0xMi44IDMuNC0yNi00LjItMjkuNC0xN3M0LjItMjYgMTctMjkuNGwyMS43LTUuOEwxNS45IDE3MS42Qy42IDE2Mi43LTQuNSAxNDMuMSA0LjQgMTI3LjlzMjguNS0yMC40IDQzLjgtMTEuNWwyMy42IDEzLjgtNS4yLTE5LjNjLTMuNC0xMi44IDQuMi0yNiAxNy0yOS40czI2IDQuMiAyOS40IDE3bDE3LjcgNjYuMUwxOTIgMjAwLjNWMTI5LjlMMTQzIDgxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsMTUgMTVWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNub3dtYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQxLjEgMTQwLjZjLTIgMy45LTEuNiA4LjYgMS4yIDEyYzcgOC41IDEyLjkgMTguMSAxNy4yIDI4LjRMNDA4IDE2MC4yVjEyMGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djE5LjZsMjIuNS05LjdjMTIuMi01LjIgMjYuMyAuNCAzMS41IDEyLjZzLS40IDI2LjMtMTIuNiAzMS41bC01NiAyNC03My42IDMxLjVjLS41IDkuNS0yLjEgMTguNi00LjggMjcuM2MtMS4yIDMuOC0uMSA4IDIuOCAxMC44QzM5Ni43IDI5Ni45IDQxNiAzMzguMiA0MTYgMzg0YzAgNDQuNy0xOC4zIDg1LTQ3LjggMTE0LjFjLTkuOSA5LjctMjMuNyAxMy45LTM3LjUgMTMuOUgxODEuM2MtMTMuOSAwLTI3LjctNC4yLTM3LjUtMTMuOUMxMTQuMyA0NjkgOTYgNDI4LjcgOTYgMzg0YzAtNDUuOCAxOS4zLTg3LjEgNTAuMS0xMTYuM2MyLjktMi44IDQtNi45IDIuOC0xMC44Yy0yLjctOC43LTQuMy0xNy45LTQuOC0yNy4zTDcwLjUgMTk4LjFsLTU2LTI0QzIuNCAxNjguOC0zLjMgMTU0LjcgMS45IDE0Mi41czE5LjMtMTcuOCAzMS41LTEyLjZMNTYgMTM5LjZWMTIwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2NDAuMkwxNTIuNiAxODFjNC4zLTEwLjMgMTAuMS0xOS45IDE3LjItMjguNGMyLjgtMy40IDMuMy04LjEgMS4yLTEyQzE2NCAxMjcuMiAxNjAgMTEyLjEgMTYwIDk2YzAtNTMgNDMtOTYgOTYtOTZzOTYgNDMgOTYgOTZjMCAxNi4xLTQgMzEuMi0xMC45IDQ0LjZ6TTIyNCA5NmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bTQ4IDEyOGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem0tMTYgODBhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0xNiA0OGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwek0yODggOTZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0tNDggMjR2My4yYzAgMy4yIC44IDYuMyAyLjMgOWw5IDE2LjljLjkgMS43IDIuNyAyLjggNC43IDIuOHMzLjgtMS4xIDQuNy0yLjhsOS0xNi45YzEuNS0yLjggMi4zLTUuOSAyLjMtOVYxMjBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNub3dwbG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5OC45IDY0bDY4LjYgMTYwSDI1NmwtNjQtNjRWNjRIMjk4Ljl6TTQ0NS4xIDI0Mi43bC04Ny40LTIwNEMzNDcuNiAxNS4zIDMyNC41IDAgMjk4LjkgMEgxNzZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjE2MEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWMjk4LjhDMjYuMiAzMTYuOCAwIDM1NS4zIDAgNDAwYzAgNjEuOSA1MC4xIDExMiAxMTIgMTEySDM2OGM2MS45IDAgMTEyLTUwLjEgMTEyLTExMmMwLTE3LjItMy45LTMzLjUtMTAuOC00OEg1MTJ2NTAuN2MwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM2w1NC42IDU0LjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0w1NzYgNDAyLjdWMzIwIDIzNS4yTDYzMyAxNjRjMTEtMTMuOCA4LjgtMzMuOS01LTQ1cy0zMy45LTguOC00NSA1bC01NyA3MS4yYy05LjEgMTEuMy0xNCAyNS40LTE0IDQwVjI4OEg0NDhWMjU2LjdjLjEtMi40LS4yLTQuOC0uNi03LjFzLTEuMi00LjctMi4yLTYuOHpNMzY4IDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OEgxMTJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDhIMzY4ek0xNDQgNDAwYTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6bTIxNiAyNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bS01Ni0yNGEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwek0yMDAgNDI0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek0zMjAgMjU2YTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4ek00MTYgMzJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMCAxNjBjMCAyNy42LTExLjcgNTIuNS0zMC40IDcwLjFDNDIyLjEgMjc1LjcgNDQ4IDMxMC44IDQ0OCAzNTJjMCA1My00MyA5Ni05NiA5NkgxNjBjLTUzIDAtOTYtNDMtOTYtOTZzNDMtOTYgOTYtOTZoODguNGMtMTUuMi0xNy0yNC40LTM5LjQtMjQuNC02NEg5NmMtNTMgMC05NiA0My05NiA5NlY0MTZjMCA1MyA0MyA5NiA5NiA5Nkg0MTZjNTMgMCA5Ni00MyA5Ni05NlYyODhjMC01My00My05Ni05Ni05NnpNMTYwIDI4OGMtMzUuMyAwLTY0IDI4LjctNjQgNjRzMjguNyA2NCA2NCA2NEgzNTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjRIMzIwIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ja3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc1LjIgNDc2LjZjLTkuNy0xOC0xNS4yLTM4LjctMTUuMi02MC42YzAtNDAuMyAxOS03OC4yIDUxLjItMTAyLjRsNjQtNDhjOC4xLTYgMTIuOC0xNS41IDEyLjgtMjUuNlY5NkgxMjhWMjQwYzAgMjAuMS05LjUgMzkuMS0yNS42IDUxLjJsLTY0IDQ4QzE0LjIgMzU3LjMgMCAzODUuOCAwIDQxNmMwIDUzIDQzIDk2IDk2IDk2YzIwLjggMCA0MS02LjcgNTcuNi0xOS4ybDIxLjYtMTYuMnpNMTI4IDY0SDI4OFY0OGMwLTE0LjUgMy45LTI4LjIgMTAuNy0zOS45QzI5MSAzIDI4MS45IDAgMjcyIDBIMTc2Yy0yNi41IDAtNDggMjEuNS00OCA0OFY2NHpNMzIwIDk2VjI0MGMwIDIwLjEtOS41IDM5LjEtMjUuNiA1MS4ybC02NCA0OEMyMDYuMiAzNTcuMyAxOTIgMzg1LjggMTkyIDQxNmMwIDUzIDQzIDk2IDk2IDk2YzIwLjggMCA0MS02LjcgNTcuNi0xOS4ybDExNS4yLTg2LjRDNDkzIDM4Mi4yIDUxMiAzNDQuMyA1MTIgMzA0Vjk2SDMyMHpNNTEyIDY0VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDM2OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWNjRINTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb2xhclBhbmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyMi4yIDBDOTEuNyAwIDY1LjUgMjEuNSA1OS41IDUxLjRMOC4zIDMwNy40Qy40IDM0NyAzMC42IDM4NCA3MSAzODRIMjg4djY0SDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzUyVjM4NEg1NjljNDAuNCAwIDcwLjctMzYuOSA2Mi44LTc2LjZsLTUxLjItMjU2QzU3NC41IDIxLjUgNTQ4LjMgMCA1MTcuOCAwSDEyMi4yek0yNjAuOSA2NEgzNzkuMWwxMC40IDEwNGgtMTM5TDI2MC45IDY0ek0yMDIuMyAxNjhIMTAxLjRMMTIyLjIgNjRoOTAuNEwyMDIuMyAxNjh6TTkxLjggMjE2SDE5Ny41TDE4Ny4xIDMyMEg3MUw5MS44IDIxNnptMTUzLjkgMEgzOTQuM2wxMC40IDEwNC0xNjkuNCAwIDEwLjQtMTA0em0xOTYuOCAwSDU0OC4yTDU2OSAzMjBoLTExNkw0NDIuNSAyMTZ6bTk2LTQ4SDQzNy43TDQyNy4zIDY0aDkwLjRsMzEuNC02LjNMNTE3LjggNjRsMjAuOCAxMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Mi42IDQ3MC42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtMTI4LTEyOGMtOS4yLTkuMi0xMS45LTIyLjktNi45LTM0LjlzMTYuNi0xOS44IDI5LjYtMTkuOEgyODhjMTIuOSAwIDI0LjYgNy44IDI5LjYgMTkuOHMyLjIgMjUuNy02LjkgMzQuOWwtMTI4IDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ydFVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Mi42IDQxLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xMjggMTI4Yy05LjIgOS4yLTExLjkgMjIuOS02LjkgMzQuOXMxNi42IDE5LjggMjkuNiAxOS44SDI4OGMxMi45IDAgMjQuNi03LjggMjkuNi0xOS44czIuMi0yNS43LTYuOS0zNC45bC0xMjgtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzNy40IDQxLjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTI4IDEyOGM5LjIgOS4yIDExLjkgMjIuOSA2LjkgMzQuOXMtMTYuNiAxOS44LTI5LjYgMTkuOEgzMmMtMTIuOSAwLTI0LjYtNy44LTI5LjYtMTkuOHMtMi4yLTI1LjcgNi45LTM0LjlsMTI4LTEyOHptMCA0MjkuM2wtMTI4LTEyOGMtOS4yLTkuMi0xMS45LTIyLjktNi45LTM0LjlzMTYuNi0xOS44IDI5LjYtMTkuOEgyODhjMTIuOSAwIDI0LjYgNy44IDI5LjYgMTkuOHMyLjIgMjUuNy02LjkgMzQuOWwtMTI4IDEyOGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODMuMSAyMzUuM2MzMy43IDIwLjcgNjIuOSA0OC4xIDg1LjggODAuNWM3IDkuOSAxMy40IDIwLjMgMTkuMSAzMWM1LjctMTAuOCAxMi4xLTIxLjEgMTkuMS0zMWMyMi45LTMyLjQgNTIuMS01OS44IDg1LjgtODAuNUM0MzcuNiAyMDcuOCA0OTAuMSAxOTIgNTQ2IDE5Mmg5LjljMTEuMSAwIDIwLjEgOSAyMC4xIDIwLjFDNTc2IDM2MC4xIDQ1Ni4xIDQ4MCAzMDguMSA0ODBIMjg4IDI2Ny45QzExOS45IDQ4MCAwIDM2MC4xIDAgMjEyLjFDMCAyMDEgOSAxOTIgMjAuMSAxOTJIMzBjNTUuOSAwIDEwOC40IDE1LjggMTUzLjEgNDMuM3pNMzAxLjUgMzcuNmMxNS43IDE2LjkgNjEuMSA3MS44IDg0LjQgMTY0LjZjLTM4IDIxLjYtNzEuNCA1MC44LTk3LjkgODUuNmMtMjYuNS0zNC44LTU5LjktNjMuOS05Ny45LTg1LjZjMjMuMi05Mi44IDY4LjYtMTQ3LjcgODQuNC0xNjQuNkMyNzggMzMuOSAyODIuOSAzMiAyODggMzJzMTAgMS45IDEzLjUgNS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGFnaGV0dGlNb25zdGVyRmx5aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCA2NGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem00OCAwYzAgMTYuMi02IDMxLjEtMTYgNDIuM2wxNS42IDMxLjJjMTguNy02IDM5LjktOS41IDY0LjQtOS41czQ1LjggMy41IDY0LjQgOS41TDQwMCAxMDYuM0MzOTAgOTUuMSAzODQgODAuMiAzODQgNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NGMtMS43IDAtMy40LS4xLTUuMS0uMkw0MjcuOCAxNThjMjEuMSAxMy42IDM3LjcgMzAuMiA1MS40IDQ2LjRjNy4xIDguMyAxMy41IDE2LjYgMTkuMyAyNGwxLjQgMS44YzYuMyA4LjEgMTEuNiAxNC44IDE2LjcgMjAuNEM1MjcuMyAyNjIuMyA1MzIuNyAyNjQgNTM2IDI2NGMyLjUgMCA0LjMtLjYgNy4xLTMuM2MzLjctMy41IDcuMS04LjggMTIuNS0xNy40bC42LS45YzQuNi03LjQgMTEtMTcuNiAxOS40LTI1LjdjOS43LTkuMyAyMi45LTE2LjcgNDAuNC0xNi43YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0Yy0yLjUgMC00LjMgLjYtNy4xIDMuM2MtMy43IDMuNS03LjEgOC44LTEyLjUgMTcuNGwtLjYgLjljLTQuNiA3LjQtMTEgMTcuNi0xOS40IDI1LjdjLTkuNyA5LjMtMjIuOSAxNi43LTQwLjQgMTYuN2MtMTguNSAwLTMyLjktOC41LTQ0LjMtMTguNmMtMy4xIDQtNi42IDguMy0xMC41IDEyLjdjMS40IDQuMyAyLjggOC41IDQgMTIuNWMuOSAzIDEuOCA1LjggMi42IDguNmMzIDkuOCA1LjUgMTguMiA4LjYgMjUuOWMzLjkgOS44IDcuNCAxNS40IDEwLjggMTguNWMyLjYgMi40IDUuOSA0LjMgMTIuOCA0LjNjOC43IDAgMTYuOS00LjIgMzMuNy0xMy4yYzE1LTggMzUuNy0xOC44IDYyLjMtMTguOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGMtMTMuNCAwLTI0LjcgNS4yLTM5LjcgMTMuMmMtMSAuNi0yLjEgMS4xLTMuMiAxLjdDNTU5LjkgNDE0IDU0MS40IDQyNCA1MjAgNDI0Yy0xOC40IDAtMzMuNi02LjEtNDUuNS0xNy4yYy0xMS4xLTEwLjMtMTcuOS0yMy43LTIyLjctMzZjLTMuNi05LTYuNy0xOS4xLTkuNS0yOC41Yy0xNi40IDEyLjMtMzYuMSAyMy42LTU4LjkgMzEuM2MzLjYgMTAuOCA4LjQgMjMuNSAxNC40IDM2LjJjNy41IDE1LjkgMTYuMiAzMC40IDI1LjggNDAuNUM0MzMgNDYwLjUgNDQxLjIgNDY0IDQ0OCA0NjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRjLTI1LjIgMC00NS0xMy41LTU5LjUtMjguOGMtMTQuNS0xNS40LTI1LjctMzQuOS0zNC4yLTUzYy04LTE3LTE0LjEtMzMuOC0xOC4zLTQ2LjljLTUuMiAuNC0xMC42IC42LTE2IC42cy0xMC44LS4yLTE2LS42Yy00LjIgMTMtMTAuMyAyOS45LTE4LjMgNDYuOWMtOC41IDE4LjEtMTkuOCAzNy42LTM0LjIgNTNDMjM3IDQ5OC41IDIxNy4yIDUxMiAxOTIgNTEyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0YzYuOCAwIDE1LTMuNSAyNC41LTEzLjdjOS41LTEwLjEgMTguMy0yNC42IDI1LjgtNDAuNWM1LjktMTIuNiAxMC43LTI1LjQgMTQuNC0zNi4yYy0yMi44LTcuNy00Mi41LTE5LTU4LjktMzEuM2MtMi45IDkuNC02IDE5LjUtOS41IDI4LjVjLTQuOCAxMi4yLTExLjYgMjUuNi0yMi43IDM2QzE1My42IDQxNy45IDEzOC40IDQyNCAxMjAgNDI0Yy0yMS40IDAtMzkuOS0xMC01My4xLTE3LjFsMCAwYy0xLjEtLjYtMi4yLTEuMi0zLjItMS43Yy0xNS04LTI2LjMtMTMuMi0zOS43LTEzLjJjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRjMjYuNiAwIDQ3LjMgMTAuOCA2Mi4zIDE4LjhjMTYuOCA5IDI1IDEzLjIgMzMuNyAxMy4yYzYuOCAwIDEwLjItMS45IDEyLjgtNC4zYzMuNC0zLjIgNy04LjggMTAuOC0xOC41YzMtNy43IDUuNi0xNi4xIDguNi0yNS45Yy44LTIuNyAxLjctNS42IDIuNi04LjZjMS4yLTQgMi42LTguMiA0LTEyLjVjLTMuOS00LjUtNy40LTguOC0xMC41LTEyLjdDMTM2LjkgMzAzLjUgMTIyLjUgMzEyIDEwNCAzMTJjLTE3LjUgMC0zMC43LTcuNC00MC40LTE2LjdjLTguNC04LjEtMTQuOC0xOC4zLTE5LjQtMjUuN2wtLjYtLjljLTUuNC04LjYtOC44LTEzLjktMTIuNS0xNy40Yy0yLjgtMi43LTQuNi0zLjMtNy4xLTMuM2MtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGMxNy41IDAgMzAuNyA3LjQgNDAuNCAxNi43YzguNCA4LjEgMTQuOCAxOC4zIDE5LjQgMjUuN2wuNiAuOWM1LjQgOC42IDguOCAxMy45IDEyLjUgMTcuNGMyLjggMi43IDQuNiAzLjMgNy4xIDMuM2MzLjMgMCA4LjctMS43IDE5LjQtMTMuNGM1LjEtNS42IDEwLjQtMTIuMyAxNi43LTIwLjRsMS40LTEuOGM1LjgtNy40IDEyLjItMTUuNyAxOS4zLTI0YzEzLjgtMTYuMiAzMC4zLTMyLjggNTEuNC00Ni40bC0xNS4xLTMwLjJjLTEuNyAuMS0zLjQgLjItNS4xIC4yYy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0czY0IDI4LjcgNjQgNjR6bTIwOCAwYTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwZWxsQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDBDOTkuMSAwIDg3LjQgNy44IDgyLjUgMTkuN2wtNjYuNyAxNjAtMTMuMyAzMmMtNi44IDE2LjMgLjkgMzUgMTcuMiA0MS44czM1LS45IDQxLjgtMTcuMkw2Ni43IDIyNGg5MC43bDUuMSAxMi4zYzYuOCAxNi4zIDI1LjUgMjQgNDEuOCAxNy4yczI0LTI1LjUgMTcuMi00MS44bC0xMy4zLTMyLTY2LjctMTYwQzEzNi42IDcuOCAxMjQuOSAwIDExMiAwem0xOC43IDE2MEg5My4zTDExMiAxMTUuMiAxMzAuNyAxNjB6TTI1NiAzMnY5NiA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg4MGM0NC4yIDAgODAtMzUuOCA4MC04MGMwLTIzLjEtOS44LTQzLjgtMjUuNC01OC40YzYtMTEuMiA5LjQtMjQgOS40LTM3LjZjMC00NC4yLTM1LjgtODAtODAtODBIMjg4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnptOTYgNjRIMzIwVjY0aDMyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2em0tMzIgNjRoMzIgMTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzIwVjE2MHpNNTY2LjYgMzEwLjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMzUyIDQzNC43bC03My40LTczLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDk2IDk2YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE5Mi0xOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwaWRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTguNCAzMi42YzQuOC0xMi40LTEuNC0yNi4zLTEzLjgtMzFzLTI2LjMgMS40LTMxIDEzLjhMODEuMSAxMDBjLTcuOSAyMC43LTMgNDQuMSAxMi43IDU5LjdsNTcuNCA1Ny40TDcwLjggMTkwLjNjLTIuNC0uOC00LjMtMi43LTUuMS01LjFMNDYuOCAxMjguNEM0Mi42IDExNS44IDI5IDEwOSAxNi40IDExMy4yUy0zIDEzMSAxLjIgMTQzLjZsMTguOSA1Ni44YzUuNiAxNi43IDE4LjcgMjkuOCAzNS40IDM1LjRMMTE2LjEgMjU2IDU1LjYgMjc2LjJjLTE2LjcgNS42LTI5LjggMTguNy0zNS40IDM1LjRMMS4yIDM2OC40Qy0zIDM4MSAzLjggMzk0LjYgMTYuNCAzOTguOHMyNi4yLTIuNiAzMC40LTE1LjJsMTguOS01Ni44Yy44LTIuNCAyLjctNC4zIDUuMS01LjFsODAuNC0yNi44TDkzLjcgMzUyLjNDNzguMSAzNjggNzMuMSAzOTEuNCA4MS4xIDQxMmwzMi41IDg0LjZjNC44IDEyLjQgMTguNiAxOC41IDMxIDEzLjhzMTguNS0xOC42IDEzLjgtMzFsLTMyLjUtODQuNmMtMS4xLTMtLjQtNi4zIDEuOC04LjVMMTYwIDM1My45YzEgNTIuMSA0My42IDk0LjEgOTYgOTQuMXM5NS00MS45IDk2LTk0LjFsMzIuMyAzMi4zYzIuMiAyLjIgMi45IDUuNiAxLjggOC41bC0zMi41IDg0LjZjLTQuOCAxMi40IDEuNCAyNi4zIDEzLjggMzFzMjYuMy0xLjQgMzEtMTMuOEw0MzAuOSA0MTJjNy45LTIwLjcgMy00NC4xLTEyLjctNTkuN2wtNTcuNC01Ny40IDgwLjQgMjYuOGMyLjQgLjggNC4zIDIuNyA1LjEgNS4xbDE4LjkgNTYuOGM0LjIgMTIuNiAxNy44IDE5LjQgMzAuNCAxNS4yczE5LjQtMTcuOCAxNS4yLTMwLjRsLTE4LjktNTYuOGMtNS42LTE2LjctMTguNy0yOS44LTM1LjQtMzUuNEwzOTUuOSAyNTZsNjAuNS0yMC4yYzE2LjctNS42IDI5LjgtMTguNyAzNS40LTM1LjRsMTguOS01Ni44YzQuMi0xMi42LTIuNi0yNi4yLTE1LjItMzAuNHMtMjYuMiAyLjYtMzAuNCAxNS4ybC0xOC45IDU2LjhjLS44IDIuNC0yLjcgNC4zLTUuMSA1LjFsLTgwLjQgMjYuOCA1Ny40LTU3LjRjMTUuNi0xNS42IDIwLjYtMzkgMTIuNy01OS43TDM5OC40IDE1LjRDMzkzLjYgMyAzNzkuOC0zLjIgMzY3LjQgMS42cy0xOC41IDE4LjYtMTMuOCAzMWwzMi41IDg0LjZjMS4xIDMgLjQgNi4zLTEuOCA4LjVMMzM2IDE3NC4xVjE2MGMwLTMxLjgtMTguNi01OS4zLTQ1LjUtNzIuMmMtOS4xLTQuNC0xOC41IDMuMy0xOC41IDEzLjRWMTEyYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjEwMS4yYzAtMTAuMS05LjQtMTcuNy0xOC41LTEzLjRDMTk0LjYgMTAwLjcgMTc2IDEyOC4yIDE3NiAxNjB2MTQuMWwtNDguMy00OC4zYy0yLjItMi4yLTIuOS01LjYtMS44LTguNWwzMi41LTg0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwaW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDQ4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6bTAgNDE2YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTQ4IDMwNGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTQ2NC00OGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0xNDIuOSA0MzdBNDggNDggMCAxIDAgNzUgMzY5LjEgNDggNDggMCAxIDAgMTQyLjkgNDM3em0wLTI5NC4yQTQ4IDQ4IDAgMSAwIDc1IDc1YTQ4IDQ4IDAgMSAwIDY3LjkgNjcuOXpNMzY5LjEgNDM3QTQ4IDQ4IDAgMSAwIDQzNyAzNjkuMSA0OCA0OCAwIDEgMCAzNjkuMSA0Mzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwbG90Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4LjUgNjIuM2wyOC4xLTM2LjlDMjQ4LjggOS40IDI2Ny44IDAgMjg4IDBjMjguNSAwIDUzLjYgMTguNyA2MS44IDQ2bDE3LjggNTkuNGMxMC4zIDM0LjQgMzYuMSA2MiA2OS44IDc0LjZsMzkuOCAxNC45YzIwLjkgNy45IDM0LjggMjcuOSAzNC44IDUwLjJjMCAxNi45LTcuOSAzMi44LTIxLjUgNDIuOWwtNjcuMyA1MC41Yy0yNC4zIDE4LjItMzcuMiA0Ny45LTMzLjggNzguMWwyLjUgMjIuN2M0LjMgMzguNy0yNiA3Mi42LTY1IDcyLjZjLTE0LjggMC0yOS4zLTUuMS00MC44LTE0LjNsLTU1LjQtNDQuM2MtNC41LTMuNi05LjMtNi43LTE0LjUtOS4yYy0xNS44LTcuOS0zMy43LTEwLjQtNTEtNy4zTDgyLjQgNDUxLjlDNDcuOCA0NTguMiAxNiA0MzEuNiAxNiAzOTYuNWMwLTEzLjIgNC43LTI2IDEzLjEtMzYuMmwxMS4yLTEzLjRjMTQuNi0xNy40IDIyLjYtMzkuNCAyMi42LTYyLjFjMC0xOC44LTUuNS0zNy4yLTE1LjgtNTNMOC44IDE3My41QzMuMSAxNjQuNyAwIDE1NC40IDAgMTQzLjljMC0zMy40IDMwLjEtNTguOCA2My01My4ybDUxLjMgOC43YzM1LjkgNi4xIDcyLjItOC4yIDk0LjItMzcuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Bvb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ1LjggMjIwLjljLTE0LjUtMTcuNi0yMS44LTM5LjItMjEuOC02MC44QzIyNCA4MCAzMjAgMCA0MTYgMGM1MyAwIDk2IDQzIDk2IDk2YzAgOTYtODAgMTkyLTE2MC4yIDE5MmMtMjEuNiAwLTQzLjItNy4zLTYwLjgtMjEuOEw1NC42IDUwMi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wyNDUuOCAyMjAuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3ByYXlDYW5TcGFya2xlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAzMnY5NkgyMjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMTI4QzExMC4zIDAgOTYgMTQuMyA5NiAzMnptMCAxMjhjLTUzIDAtOTYgNDMtOTYgOTZWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDI3MmMyNi41IDAgNDgtMjEuNSA0OC00OFYyNTZjMC01My00My05Ni05Ni05Nkg5NnptNjQgOTZhODAgODAgMCAxIDEgMCAxNjAgODAgODAgMCAxIDEgMC0xNjB6TTM4NCA0OGMwLTEuNC0xLTMtMi4yLTMuNkwzNTIgMzIgMzM5LjYgMi4yQzMzOSAxIDMzNy40IDAgMzM2IDBzLTMgMS0zLjYgMi4yTDMyMCAzMiAyOTAuMiA0NC40QzI4OSA0NSAyODggNDYuNiAyODggNDhjMCAxLjQgMSAzIDIuMiAzLjZMMzIwIDY0bDEyLjQgMjkuOEMzMzMgOTUgMzM0LjYgOTYgMzM2IDk2czMtMSAzLjYtMi4yTDM1MiA2NGwyOS44LTEyLjRDMzgzIDUxIDM4NCA0OS40IDM4NCA0OHptNzYuNCA0NS44QzQ2MSA5NSA0NjIuNiA5NiA0NjQgOTZzMy0xIDMuNi0yLjJMNDgwIDY0bDI5LjgtMTIuNEM1MTEgNTEgNTEyIDQ5LjQgNTEyIDQ4YzAtMS40LTEtMy0yLjItMy42TDQ4MCAzMiA0NjcuNiAyLjJDNDY3IDEgNDY1LjQgMCA0NjQgMHMtMyAxLTMuNiAyLjJMNDQ4IDMyIDQxOC4yIDQ0LjRDNDE3IDQ1IDQxNiA0Ni42IDQxNiA0OGMwIDEuNCAxIDMgMi4yIDMuNkw0NDggNjRsMTIuNCAyOS44em03LjIgMTAwLjRjLS42LTEuMi0yLjItMi4yLTMuNi0yLjJzLTMgMS0zLjYgMi4yTDQ0OCAyMjRsLTI5LjggMTIuNGMtMS4yIC42LTIuMiAyLjItMi4yIDMuNmMwIDEuNCAxIDMgMi4yIDMuNkw0NDggMjU2bDEyLjQgMjkuOGMuNiAxLjIgMi4yIDIuMiAzLjYgMi4yczMtMSAzLjYtMi4yTDQ4MCAyNTZsMjkuOC0xMi40YzEuMi0uNiAyLjItMi4yIDIuMi0zLjZjMC0xLjQtMS0zLTIuMi0zLjZMNDgwIDIyNGwtMTIuNC0yOS44ek00NDggMTQ0YzAtMS40LTEtMy0yLjItMy42TDQxNiAxMjggNDAzLjYgOTguMkM0MDMgOTcgNDAxLjQgOTYgNDAwIDk2cy0zIDEtMy42IDIuMkwzODQgMTI4bC0yOS44IDEyLjRjLTEuMiAuNi0yLjIgMi4yLTIuMiAzLjZjMCAxLjQgMSAzIDIuMiAzLjZMMzg0IDE2MGwxMi40IDI5LjhjLjYgMS4yIDIuMiAyLjIgMy42IDIuMnMzLTEgMy42LTIuMkw0MTYgMTYwbDI5LjgtMTIuNGMxLjItLjYgMi4yLTIuMiAyLjItMy42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcHJheUNhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMGg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5Nkg5NlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMCAyNTZjMC01MyA0My05NiA5Ni05NkgyMjRjNTMgMCA5NiA0MyA5NiA5NlY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjI1NnptMjQwIDgwQTgwIDgwIDAgMSAwIDgwIDMzNmE4MCA4MCAwIDEgMCAxNjAgMHpNMjU2IDY0YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTM4NCAzMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTY0IDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTMyIDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNNDQ4IDI1NmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek0zODQgMTI4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlQXJyb3dVcFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NHpNMTYwIDE0NGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg5NC4xTDExOSAzMjdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGwxMzUtMTM1VjMyOGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjE2OGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUNhcmV0RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgNDgwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDB6TTIyNCAzNTJjLTYuNyAwLTEzLTIuOC0xNy42LTcuN2wtMTA0LTExMmMtNi41LTctOC4yLTE3LjItNC40LTI1LjlzMTIuNS0xNC40IDIyLTE0LjRsMjA4IDBjOS41IDAgMTguMiA1LjcgMjIgMTQuNHMyLjEgMTguOS00LjQgMjUuOWwtMTA0IDExMmMtNC41IDQuOS0xMC45IDcuNy0xNy42IDcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlQ2FyZXRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZ6TTEyOCAyNTZjMC02LjcgMi44LTEzIDcuNy0xNy42bDExMi0xMDRjNy02LjUgMTcuMi04LjIgMjUuOS00LjRzMTQuNCAxMi41IDE0LjQgMjJsMCAyMDhjMCA5LjUtNS43IDE4LjItMTQuNCAyMnMtMTguOSAyLjEtMjUuOS00LjRsLTExMi0xMDRjLTQuOS00LjUtNy43LTEwLjktNy43LTE3LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUNhcmV0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjB6TTMyMCAyNTZjMCA2LjctMi44IDEzLTcuNyAxNy42bC0xMTIgMTA0Yy03IDYuNS0xNy4yIDguMi0yNS45IDQuNHMtMTQuNC0xMi41LTE0LjQtMjJsMC0yMDhjMC05LjUgNS43LTE4LjIgMTQuNC0yMnMxOC45LTIuMSAyNS45IDQuNGwxMTIgMTA0YzQuOSA0LjUgNy43IDEwLjkgNy43IDE3LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUNhcmV0VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yMjQgMTYwYzYuNyAwIDEzIDIuOCAxNy42IDcuN2wxMDQgMTEyYzYuNSA3IDguMiAxNy4yIDQuNCAyNS45cy0xMi41IDE0LjQtMjIgMTQuNEgxMjBjLTkuNSAwLTE4LjItNS43LTIyLTE0LjRzLTIuMS0xOC45IDQuNC0yNS45bDEwNC0xMTJjNC41LTQuOSAxMC45LTcuNyAxNy42LTcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0zMzcgMjA5TDIwOSAzMzdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC02NC02NGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDQ3IDQ3TDMwMyAxNzVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVFbnZlbG9wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTIxOCAyNzEuN0w2NC4yIDE3Mi40QzY2IDE1Ni40IDc5LjUgMTQ0IDk2IDE0NEgzNTJjMTYuNSAwIDMwIDEyLjQgMzEuOCAyOC40TDIzMCAyNzEuN2MtMS44IDEuMi0zLjkgMS44LTYgMS44cy00LjItLjYtNi0xLjh6bTI5LjQgMjYuOUwzODQgMjEwLjRWMzM2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyMTAuNGwxMzYuNiA4OC4yYzcgNC41IDE1LjEgNi45IDIzLjQgNi45czE2LjQtMi40IDIzLjQtNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMEg1MTJWNTEySDBWMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlSCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTMzNiAxNTJWMjU2IDM2MGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYyODBIMTYwbDAgODBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC0yMDhjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY4MEgyODhWMTUyYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZU1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHptODggMjAwSDI5NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgxNTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZU5maSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2em03NS43IDY0LjZDNjguOCAxNjIuNSA2NCAxNjguOCA2NCAxNzZWMzM2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjMzLjhsNjYuMyAxMTAuNWMzLjcgNi4yIDExLjEgOS4xIDE4IDcuMnMxMS43LTguMiAxMS43LTE1LjRWMTc2YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjI3OC4yTDkzLjcgMTY3LjhjLTMuNy02LjItMTEuMS05LjEtMTgtNy4yek0yMjQgMTc2djY0IDk2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjU2aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDI1NlYxOTJoNDhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMjQwYy04LjggMC0xNiA3LjItMTYgMTZ6bTE2MCAwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjMzNmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjE3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUGFya2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTE5MiAyNTZoNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkydjY0em00OCA2NEgxOTJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjg4IDE2OGMwLTIyLjEgMTcuOS00MCA0MC00MGg3MmM1MyAwIDk2IDQzIDk2IDk2cy00MyA5Ni05NiA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMzI1LjggMTM5LjdsMTQuNCAxNC40YzE1LjYgMTUuNiAxNS42IDQwLjkgMCA1Ni42bC0yMS40IDIxLjQtNzEtNzEgMjEuNC0yMS40YzE1LjYtMTUuNiA0MC45LTE1LjYgNTYuNiAwek0xMTkuOSAyODlMMjI1LjEgMTgzLjhsNzEgNzFMMTkwLjkgMzU5LjljLTQuMSA0LjEtOS4yIDctMTQuOSA4LjRsLTYwLjEgMTVjLTUuNSAxLjQtMTEuMi0uMi0xNS4yLTQuMnMtNS42LTkuNy00LjItMTUuMmwxNS02MC4xYzEuNC01LjYgNC4zLTEwLjggOC40LTE0Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVBlcnNvbkNvbmZpbmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHptOTYgMTEyYTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTgwIDEwNGMwLTMwLjkgMjUuMS01NiA1Ni01NnM1NiAyNS4xIDU2IDU2VjM1MC4xYzAgMzYuNC0yOS41IDY1LjktNjUuOSA2NS45Yy0xNy41IDAtMzQuMy02LjktNDYuNi0xOS4zTDE4NC44IDM0MmwtMjguMSA1Ni4zYy03LjkgMTUuOC0yNy4xIDIyLjItNDIuOSAxNC4zcy0yMi4yLTI3LjEtMTQuMy00Mi45bDQ4LTk2YzQuNi05LjIgMTMuMy0xNS42IDIzLjUtMTcuM3MyMC41IDEuNyAyNy44IDlMMjQwIDMwNi43VjI0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUGhvbmVGbGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NHptLTkwLjcgOTYuN2MtOS43LTIuNi0xOS45IDIuMy0yMy43IDExLjZsLTIwIDQ4Yy0zLjQgOC4yLTEgMTcuNiA1LjggMjMuMkwyODAgMjMxLjdjLTE2LjYgMzUuMi00NS4xIDYzLjctODAuMyA4MC4zbC0yMC4yLTI0LjdjLTUuNi02LjgtMTUtOS4yLTIzLjItNS44bC00OCAyMGMtOS4zIDMuOS0xNC4yIDE0LTExLjYgMjMuN2wxMiA0NEMxMTEuMSAzNzggMTE5IDM4NCAxMjggMzg0YzEyMy43IDAgMjI0LTEwMC4zIDIyNC0yMjRjMC05LTYtMTYuOS0xNC43LTE5LjNsLTQ0LTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTkwLjcgOTYuN2M5LjctMi42IDE5LjkgMi4zIDIzLjcgMTEuNmwyMCA0OGMzLjQgOC4yIDEgMTcuNi01LjggMjMuMkwxNjggMjMxLjdjMTYuNiAzNS4yIDQ1LjEgNjMuNyA4MC4zIDgwLjNsMjAuMi0yNC43YzUuNi02LjggMTUtOS4yIDIzLjItNS44bDQ4IDIwYzkuMyAzLjkgMTQuMiAxNCAxMS42IDIzLjdsLTEyIDQ0QzMzNi45IDM3OCAzMjkgMzg0IDMyMCAzODRDMTk2LjMgMzg0IDk2IDI4My43IDk2IDE2MGMwLTkgNi0xNi45IDE0LjctMTkuM2w0NC0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTIwMCAzNDRWMjgwSDEzNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg2NFYxNjhjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY2NGg2NGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNDh2NjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVBvbGxIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwek0yNTYgMTYwYzAgMTcuNy0xNC4zIDMyLTMyIDMybC05NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6bTY0IDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xOTIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwxOTIgMHpNMTkyIDM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwzMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVQb2xsVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em02NCAxOTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMyem02NC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNjB6TTMyMCAyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmVSb290VmFyaWFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjgyLjYgNzguMWM4LTI3LjMgMzMtNDYuMSA2MS40LTQ2LjFINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM0NEwyMzguNyA0NTdjLTMuNiAxMi4zLTE0LjEgMjEuMi0yNi44IDIyLjhzLTI1LjEtNC42LTMxLjUtMTUuNkw3Ny42IDI4OEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg3Ny42YzIyLjggMCA0My44IDEyLjEgNTUuMyAzMS44bDY1LjIgMTExLjhMMjgyLjYgNzguMXpNMzkzLjQgMjMzLjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBMNDgwIDI3NC43bDQxLjQtNDEuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zTDUyNS4zIDMyMGw0MS40IDQxLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMNDgwIDM2NS4zbC00MS40IDQxLjRjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDQzNC43IDMyMGwtNDEuNC00MS40Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUnNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNOTYgMTM2YzAtMTMuMyAxMC43LTI0IDI0LTI0YzEzNyAwIDI0OCAxMTEgMjQ4IDI0OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTExMC41LTg5LjUtMjAwLTIwMC0yMDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0wIDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0YzgzLjkgMCAxNTIgNjguMSAxNTIgMTUyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtNTcuNC00Ni42LTEwNC0xMDQtMTA0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptMCAxMjBhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlU2hhcmVOb2RlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTM4NCAxNjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRjLTE1LjQgMC0yOS41LTUuNC00MC42LTE0LjVMMTk0LjEgMjU2bDg1LjMgNDYuNWMxMS05LjEgMjUuMi0xNC41IDQwLjYtMTQuNWMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NHMtNjQtMjguNy02NC02NGMwLTIuNSAuMS00LjkgLjQtNy4zTDE3NC41IDMwMGMtMTEuNyAxMi4zLTI4LjIgMjAtNDYuNSAyMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRzMjguNy02NCA2NC02NGMxOC4zIDAgMzQuOCA3LjcgNDYuNSAyMGw4MS45LTQ0LjdjLS4zLTIuNC0uNC00LjktLjQtNy4zYzAtMzUuMyAyOC43LTY0IDY0LTY0czY0IDI4LjcgNjQgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVVwUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMzg0ek0zMjAgMzEzLjRWMTc2YzAtOC44LTcuMi0xNi0xNi0xNkgxNjYuNmMtMTIuNSAwLTIyLjYgMTAuMS0yMi42IDIyLjZjMCA2IDIuNCAxMS44IDYuNiAxNkwxODQgMjMybC02Ni4zIDY2LjNDMTE0IDMwMiAxMTIgMzA2LjkgMTEyIDMxMnMyIDEwIDUuNyAxMy43bDM2LjcgMzYuN2MzLjYgMy42IDguNSA1LjcgMTMuNyA1LjdzMTAtMiAxMy43LTUuN0wyNDggMjk2bDMzLjQgMzMuNGM0LjIgNC4yIDEwIDYuNiAxNiA2LjZjMTIuNSAwIDIyLjYtMTAuMSAyMi42LTIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjIzLjggOTMuN2MxMy4zIDAgMjQgMTAuNyAyNCAyNGMwIDI5LjMgMzUuNCA0My45IDU2LjEgMjMuMmM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjljLTIwLjcgMjAuNy02IDU2LjEgMjMuMiA1Ni4xYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0Yy0yOS4zIDAtNDMuOSAzNS40LTIzLjIgNTYuMWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwYy0yMC43LTIwLjctNTYuMS02LTU2LjEgMjMuMmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTI5LjMtMzUuNC00My45LTU2LjEtMjMuMmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWMyMC43LTIwLjcgNi01Ni4xLTIzLjItNTYuMWMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGMyOS4zIDAgNDMuOS0zNS40IDIzLjItNTYuMWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwYzIwLjcgMjAuNyA1Ni4xIDYgNTYuMS0yMy4yYzAtMTMuMyAxMC43LTI0IDI0LTI0ek0xOTIgMjU2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptODggMzJhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em03OSAxNDNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsNDcgNDcgNDctNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC00NyA0NyA0NyA0N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00Ny00Ny00NyA0N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0Ny00Ny00Ny00N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFmZlNuYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyMi42IDQzLjJsLS4xIDQuOEgyODhjNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTZIMjQ4VjE2MGg0MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgyNDggMjIwbC00LjUgMTQ0SDI1NmM1MyAwIDk2IDQzIDk2IDk2cy00MyA5Ni05NiA5NkgyNDBWMzg0aDE2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDIxM2wtMy4xIDk5LjVMMjA4LjUgNDk1bDAgMWMtLjMgOC45LTcuNiAxNi0xNi41IDE2cy0xNi4yLTcuMS0xNi41LTE2bDAtMS0xLTMxSDEzNmMtMjIuMSAwLTQwLTE3LjktNDAtNDBzMTcuOS00MCA0MC00MGgzNmwtMS0zMkgxNTJjLTUzIDAtOTYtNDMtOTYtOTZjMC00Ny42IDM0LjYtODcuMSA4MC05NC43VjI1NmMwIDguOCA3LjIgMTYgMTYgMTZoMTYuNUwxNjQgMTI4SDEzNiAxMjIuNmMtOSAxOC45LTI4LjMgMzItNTAuNiAzMkg1NmMtMzAuOSAwLTU2LTI1LjEtNTYtNTZTMjUuMSA0OCA1NiA0OGg4IDggODkuNWwtLjEtNC44TDE2MSAzMmMwLS43IDAtMS4zIDAtMS45Yy41LTE2LjYgMTQuMS0zMCAzMS0zMHMzMC41IDEzLjQgMzEgMzBjMCAuNiAwIDEuMyAwIDEuOWwtLjQgMTEuMnpNNjQgMTEyYTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhaXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDQ4djk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyMHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxOTJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoOTZWMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDk2VjE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMmg5NlY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhbXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEyIDIwMS44YzAtMTcuNCA5LjItMzMuMiAxOS45LTQ3QzM0NC41IDEzOC41IDM1MiAxMTguMSAzNTIgOTZjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAyMi4xIDcuNSA0Mi41IDIwLjEgNTguOGMxMC43IDEzLjggMTkuOSAyOS42IDE5LjkgNDdjMCAyOS45LTI0LjMgNTQuMi01NC4yIDU0LjJIMTEyQzUwLjEgMjU2IDAgMzA2LjEgMCAzNjhjMCAyMC45IDEzLjQgMzguNyAzMiA0NS4zVjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0MzJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDEzLjNjMTguNi02LjYgMzItMjQuNCAzMi00NS4zYzAtNjEuOS01MC4xLTExMi0xMTItMTEySDM2Ni4yYy0yOS45IDAtNTQuMi0yNC4zLTU0LjItNTQuMnpNNDE2IDQxNnYzMkg5NlY0MTZINDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFwbGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAyOTkuM1YzMDQgNDMyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDUxMiA0NDggNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDQ4VjM2OEg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjE5LjRMMzMuOCAyMTRDMTQuMiAyMTAuNSAwIDE5My41IDAgMTczLjdjMC04LjkgMi45LTE3LjUgOC4yLTI0LjZsMzUuNi00Ny41Qzc2LjcgNTcuOCAxMjguMiAzMiAxODIuOSAzMmMyNyAwIDUzLjYgNi4zIDc3LjggMTguNEw1ODYuOSAyMTMuNUM2MTkuNSAyMjkuNyA2NDAgMjYzIDY0MCAyOTkuM3pNNDQ4IDMwNFYyODhMMTI4IDIzMC45VjMwNEg0NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YXJBbmRDcmVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NkMwIDExNC42IDExNC42IDAgMjU2IDBjMzMgMCA2NC42IDYuMyA5My42IDE3LjdjNy40IDIuOSAxMS41IDEwLjcgOS44IDE4LjRzLTguOCAxMy0xNi43IDEyLjRjLTQuOC0uMy05LjctLjUtMTQuNi0uNWMtMTE0LjkgMC0yMDggOTMuMS0yMDggMjA4czkzLjEgMjA4IDIwOCAyMDhjNC45IDAgOS44LS4yIDE0LjYtLjVjNy45LS41IDE1IDQuNyAxNi43IDEyLjRzLTIuNCAxNS41LTkuOCAxOC40QzMyMC42IDUwNS43IDI4OSA1MTIgMjU2IDUxMkMxMTQuNiA1MTIgMCAzOTcuNCAwIDI1NnpNMzc1LjQgMTM3LjRjMy41LTcuMSAxMy43LTcuMSAxNy4yIDBsMzEuNSA2My44YzEuNCAyLjggNC4xIDQuOCA3LjIgNS4zbDcwLjQgMTAuMmM3LjkgMS4xIDExIDEwLjggNS4zIDE2LjRsLTUwLjkgNDkuNmMtMi4zIDIuMi0zLjMgNS40LTIuOCA4LjVsMTIgNzAuMWMxLjMgNy44LTYuOSAxMy44LTEzLjkgMTAuMWwtNjMtMzMuMWMtMi44LTEuNS02LjEtMS41LTguOSAwbC02MyAzMy4xYy03IDMuNy0xNS4zLTIuMy0xMy45LTEwLjFsMTItNzAuMWMuNS0zLjEtLjUtNi4zLTIuOC04LjVMMjYxIDIzMy4xYy01LjctNS42LTIuNi0xNS4yIDUuMy0xNi40bDcwLjQtMTAuMmMzLjEtLjUgNS44LTIuNCA3LjItNS4zbDMxLjUtNjMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhckhhbGZTdHJva2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDM3Ni40bC4xLS4xIDI2LjQgMTQuMSA4NS4yIDQ1LjUtMTYuNS05Ny42LTQuOC0yOC43IDIwLjctMjAuNSA3MC4xLTY5LjMtOTYuMS0xNC4yLTI5LjMtNC4zLTEyLjktMjYuNkwyODguMSA4Ni45bC0uMSAuM1YzNzYuNHptMTc1LjEgOTguM2MyIDEyLTMgMjQuMi0xMi45IDMxLjNzLTIzIDgtMzMuOCAyLjNMMjg4LjEgNDM5LjggMTU5LjggNTA4LjNDMTQ5IDUxNCAxMzUuOSA1MTMuMSAxMjYgNTA2cy0xNC45LTE5LjMtMTIuOS0zMS4zTDEzNy44IDMyOSAzMy42IDIyNS45Yy04LjYtOC41LTExLjctMjEuMi03LjktMzIuN3MxMy43LTE5LjkgMjUuNy0yMS43TDE5NSAxNTAuMyAyNTkuNCAxOGM1LjQtMTEgMTYuNS0xOCAyOC44LTE4czIzLjQgNyAyOC44IDE4bDY0LjMgMTMyLjMgMTQzLjYgMjEuMmMxMiAxLjggMjIgMTAuMiAyNS43IDIxLjdzLjcgMjQuMi03LjkgMzIuN0w0MzguNSAzMjlsMjQuNiAxNDUuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhckhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBjLTEyLjIgLjEtMjMuMyA3LTI4LjYgMThMMTk1IDE1MC4zIDUxLjQgMTcxLjVjLTEyIDEuOC0yMiAxMC4yLTI1LjcgMjEuN3MtLjcgMjQuMiA3LjkgMzIuN0wxMzcuOCAzMjkgMTEzLjIgNDc0LjdjLTIgMTIgMyAyNC4yIDEyLjkgMzEuM3MyMyA4IDMzLjggMi4zTDI4OCA0MzkuOFYwek00MjkuOSA1MTJjMS4xIC4xIDIuMSAuMSAzLjIgMGgtMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFyT2ZEYXZpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDQuMiAzMDkuNUwzODMuMSAzNDRoNDIuM2wtMjEuMS0zNC41ek0zNzEuNCAyNTZsLTU0LTg4SDE5NC42bC01NCA4OCA1NCA4OEgzMTcuNGw1NC04OHptNjUuNyAwbDUzLjQgODdjMy42IDUuOSA1LjUgMTIuNyA1LjUgMTkuNmMwIDIwLjctMTYuOCAzNy40LTM3LjQgMzcuNEgzNDguN2wtNTYuMiA5MS41QzI4NC44IDUwNC4zIDI3MC45IDUxMiAyNTYgNTEycy0yOC44LTcuNy0zNi42LTIwLjVMMTYzLjMgNDAwSDUzLjRDMzIuOCA0MDAgMTYgMzgzLjIgMTYgMzYyLjZjMC02LjkgMS45LTEzLjcgNS41LTE5LjZsNTMuNC04N0wyMS41IDE2OWMtMy42LTUuOS01LjUtMTIuNy01LjUtMTkuNkMxNiAxMjguOCAzMi44IDExMiA1My40IDExMkgxNjMuM2w1Ni4yLTkxLjVDMjI3LjIgNy43IDI0MS4xIDAgMjU2IDBzMjguOCA3LjcgMzYuNiAyMC41TDM0OC43IDExMkg0NTguNmMyMC43IDAgMzcuNCAxNi44IDM3LjQgMzcuNGMwIDYuOS0xLjkgMTMuNy01LjUgMTkuNmwtNTMuNCA4N3ptLTU0LTg4bDIxLjEgMzQuNUw0MjUuNCAxNjhIMzgzLjF6TTI4MyAxMTJMMjU2IDY4bC0yNyA0NGg1NHpNMTI4LjkgMTY4SDg2LjZsMjEuMSAzNC41TDEyOC45IDE2OHpNMTA3LjggMzA5LjVMODYuNiAzNDRoNDIuM2wtMjEuMS0zNC41ek0yMjkgNDAwbDI3IDQ0IDI3LTQ0SDIyOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Rhck9mTGlmZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggMzJjMC0xNy43IDE0LjMtMzIgMzItMzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMTcyLjlsMTIyLTcwLjRjMTUuMy04LjggMzQuOS0zLjYgNDMuNyAxMS43bDE2IDI3LjdjOC44IDE1LjMgMy42IDM0LjktMTEuNyA0My43TDM1MiAyNTZsMTIyIDcwLjRjMTUuMyA4LjggMjAuNSAyOC40IDExLjcgNDMuN2wtMTYgMjcuN2MtOC44IDE1LjMtMjguNCAyMC42LTQzLjcgMTEuN0wzMDQgMzM5LjFWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDI0MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzM5LjFMODYgNDA5LjZjLTE1LjMgOC44LTM0LjkgMy42LTQzLjctMTEuN2wtMTYtMjcuN2MtOC44LTE1LjMtMy42LTM0LjkgMTEuNy00My43TDE2MCAyNTYgMzggMTg1LjZjLTE1LjMtOC44LTIwLjUtMjguNC0xMS43LTQzLjdsMTYtMjcuN0M1MS4xIDk4LjggNzAuNyA5My42IDg2IDEwMi40bDEyMiA3MC40VjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxNi45IDE4QzMxMS42IDcgMzAwLjQgMCAyODguMSAwcy0yMy40IDctMjguOCAxOEwxOTUgMTUwLjMgNTEuNCAxNzEuNWMtMTIgMS44LTIyIDEwLjItMjUuNyAyMS43cy0uNyAyNC4yIDcuOSAzMi43TDEzNy44IDMyOSAxMTMuMiA0NzQuN2MtMiAxMiAzIDI0LjIgMTIuOSAzMS4zczIzIDggMzMuOCAyLjNsMTI4LjMtNjguNSAxMjguMyA2OC41YzEwLjggNS43IDIzLjkgNC45IDMzLjgtMi4zczE0LjktMTkuMyAxMi45LTMxLjNMNDM4LjUgMzI5IDU0Mi43IDIyNS45YzguNi04LjUgMTEuNy0yMS4yIDcuOS0zMi43cy0xMy43LTE5LjktMjUuNy0yMS43TDM4MS4yIDE1MC4zIDMxNi45IDE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGVybGluZ1NpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDE2MC40YzAtMzUuNSAyOC44LTY0LjQgNjQuNC02NC40YzYuOSAwIDEzLjggMS4xIDIwLjQgMy4zbDgxLjIgMjcuMWMxNi44IDUuNiAzNC45LTMuNSA0MC41LTIwLjJzLTMuNS0zNC45LTIwLjItNDAuNUwyMTcgMzguNmMtMTMuMS00LjQtMjYuOC02LjYtNDAuNi02LjZDMTA1LjUgMzIgNDggODkuNSA0OCAxNjAuNFYyMjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDh2NDQuNWMwIDE3LjQtNC43IDM0LjUtMTMuNyA0OS40TDQuNiA0MzEuNWMtNS45IDkuOS02LjEgMjIuMi0uNCAzMi4yUzIwLjUgNDgwIDMyIDQ4MEgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIODguNWwuNy0xLjFDMTA0LjEgMzkwIDExMiAzNjEuNSAxMTIgMzMyLjVWMjg4SDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxMTJWMTYwLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0ZXRob3Njb3BlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0Mi40IDIxLjljNS42IDE2LjgtMy41IDM0LjktMjAuMiA0MC41TDk2IDcxLjFWMTkyYzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZWNzEuMWwtMjYuMS04LjdjLTE2LjgtNS42LTI1LjgtMjMuNy0yMC4yLTQwLjVzMjMuNy0yNS44IDQwLjUtMjAuMmwyNi4xIDguN0MzMzQuNCAxOS4xIDM1MiA0My41IDM1MiA3MS4xVjE5MmMwIDc3LjItNTQuNiAxNDEuNi0xMjcuMyAxNTYuN0MyMzEgNDA0LjYgMjc4LjQgNDQ4IDMzNiA0NDhjNjEuOSAwIDExMi01MC4xIDExMi0xMTJWMjY1LjNjLTI4LjMtMTIuMy00OC00MC41LTQ4LTczLjNjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGMwIDMyLjgtMTkuNyA2MS00OCA3My4zVjMzNmMwIDk3LjItNzguOCAxNzYtMTc2IDE3NmMtOTIuOSAwLTE2OC45LTcxLjktMTc1LjUtMTYzLjFDODcuMiAzMzQuMiAzMiAyNjkuNiAzMiAxOTJWNzEuMWMwLTI3LjUgMTcuNi01MiA0My44LTYwLjdsMjYuMS04LjdjMTYuOC01LjYgMzQuOSAzLjUgNDAuNSAyMC4yek00ODAgMjI0YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3B3YXRjaDIwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDE2Vjk4LjRDOTIuMyAxMTMuOCAxNiAyMDAgMTYgMzA0YzAgMTE0LjkgOTMuMSAyMDggMjA4IDIwOHMyMDgtOTMuMSAyMDgtMjA4YzAtNDEuOC0xMi4zLTgwLjctMzMuNS0xMTMuMmwyNC4xLTI0LjFjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMzU1LjcgMTQzYy0yOC4xLTIzLTYyLjItMzguOC05OS43LTQ0LjZWNjRoMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTc2ek0yODggMjA0YzI4LjcgMCA1MiAyMy4zIDUyIDUydjk2YzAgMjguNy0yMy4zIDUyLTUyIDUycy01Mi0yMy4zLTUyLTUyVjI1NmMwLTI4LjcgMjMuMy01MiA1Mi01MnptLTEyIDUydjk2YzAgNi42IDUuNCAxMiAxMiAxMnMxMi01LjQgMTItMTJWMjU2YzAtNi42LTUuNC0xMi0xMi0xMnMtMTIgNS40LTEyIDEyek0xNTkuNSAyNDRjLTUuNCAwLTEwLjIgMy41LTExLjkgOC42bC0uNiAxLjdjLTMuNSAxMC41LTE0LjggMTYuMS0yNS4zIDEyLjZzLTE2LjEtMTQuOC0xMi42LTI1LjNsLjYtMS43YzcuMi0yMS41IDI3LjItMzUuOSA0OS44LTM1LjljMjkgMCA1Mi41IDIzLjUgNTIuNSA1Mi41djIuMmMwIDEzLjQtNC45IDI2LjQtMTMuOCAzNi40bC0zOSA0My45Yy02LjIgNy0xMCAxNS43LTEwLjkgMjQuOUgxOTJjMTEgMCAyMCA5IDIwIDIwcy05IDIwLTIwIDIwSDEyOGMtMTEgMC0yMC05LTIwLTIwVjM2OC4zYzAtMjAuNiA3LjUtNDAuNCAyMS4yLTU1LjhsMzktNDMuOWMyLjQtMi43IDMuNy02LjIgMy43LTkuOHYtMi4yYzAtNi45LTUuNi0xMi41LTEyLjUtMTIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RvcHdhdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDE2Vjk4LjRDOTIuMyAxMTMuOCAxNiAyMDAgMTYgMzA0YzAgMTE0LjkgOTMuMSAyMDggMjA4IDIwOHMyMDgtOTMuMSAyMDgtMjA4YzAtNDEuOC0xMi4zLTgwLjctMzMuNS0xMTMuMmwyNC4xLTI0LjFjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMzU1LjcgMTQzYy0yOC4xLTIzLTYyLjItMzguOC05OS43LTQ0LjZWNjRoMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjI0IDE3NnptNzIgMTkyVjMyMGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYxOTJjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RvcmVTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43bC04Ni44LTY4VjM4NCAyNTIuNmMtNCAxLTggMS44LTEyLjMgMi4zbC0uMSAwYy01LjMgLjctMTAuNyAxLjEtMTYuMiAxLjFjLTEyLjQgMC0yNC4zLTEuOS0zNS40LTUuM1YzNTAuOUwzMDEuMiAyMTAuN2M3LTQuNCAxMy4zLTkuNyAxOC44LTE1LjdjMTUuOSAxNy42IDM5LjEgMjkgNjUuMiAyOWMyNi4yIDAgNDkuMy0xMS40IDY1LjItMjljMTYgMTcuNiAzOS4xIDI5IDY1LjIgMjljNC4xIDAgOC4xLS4zIDEyLjEtLjhjNTUuNS03LjQgODEuOC03Mi41IDUyLjEtMTE5LjRMNTIyLjMgMTMuMUM1MTcuMiA1IDUwOC4xIDAgNDk4LjQgMEgxNDEuNmMtOS43IDAtMTguOCA1LTIzLjkgMTMuMWwtMjIuNyAzNkwzOC44IDUuMXpNNTE0LjkgNTAxLjdMMzY1LjUgMzg0SDE2MFYyNTAuNmMtMTEuMiAzLjUtMjMuMiA1LjQtMzUuNiA1LjRjLTUuNSAwLTExLS40LTE2LjMtMS4xbC0uMSAwYy00LjEtLjYtOC4xLTEuMy0xMi0yLjNWMzg0djY0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ4MGMxMi45IDAgMjQuOC0zLjggMzQuOS0xMC4zek0xNTUuMyAyMTguNEw0OC45IDEzNC41Yy02LjEgNDAuNiAxOS41IDgyLjggNjMuMyA4OC43YzQgLjUgOC4xIC44IDEyLjEgLjhjMTEgMCAyMS40LTIgMzEtNS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDcuNiAxMDMuOEw0OTAuMyAxMy4xQzQ4NS4yIDUgNDc2LjEgMCA0NjYuNCAwSDEwOS42Qzk5LjkgMCA5MC44IDUgODUuNyAxMy4xTDI4LjMgMTAzLjhjLTI5LjYgNDYuOC0zLjQgMTExLjkgNTEuOSAxMTkuNGM0IC41IDguMSAuOCAxMi4xIC44YzI2LjEgMCA0OS4zLTExLjQgNjUuMi0yOWMxNS45IDE3LjYgMzkuMSAyOSA2NS4yIDI5YzI2LjEgMCA0OS4zLTExLjQgNjUuMi0yOWMxNS45IDE3LjYgMzkuMSAyOSA2NS4yIDI5YzI2LjIgMCA0OS4zLTExLjQgNjUuMi0yOWMxNiAxNy42IDM5LjEgMjkgNjUuMiAyOWM0LjEgMCA4LjEtLjMgMTIuMS0uOGM1NS41LTcuNCA4MS44LTcyLjUgNTIuMS0xMTkuNHpNNDk5LjcgMjU0LjlsLS4xIDBjLTUuMyAuNy0xMC43IDEuMS0xNi4yIDEuMWMtMTIuNCAwLTI0LjMtMS45LTM1LjQtNS4zVjM4NEgxMjhWMjUwLjZjLTExLjIgMy41LTIzLjIgNS40LTM1LjYgNS40Yy01LjUgMC0xMS0uNC0xNi4zLTEuMWwtLjEgMGMtNC4xLS42LTguMS0xLjMtMTItMi4zVjM4NHY2NGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMzg0IDI1Mi42Yy00IDEtOCAxLjgtMTIuMyAyLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0cmVldFZpZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDY0QTY0IDY0IDAgMSAwIDE5MiA2NGE2NCA2NCAwIDEgMCAxMjggMHptLTk2IDk2Yy0zNS4zIDAtNjQgMjguNy02NCA2NHY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgxLjhsMTEuMSA5OS41YzEuOCAxNi4yIDE1LjUgMjguNSAzMS44IDI4LjVoMzguN2MxNi4zIDAgMzAtMTIuMyAzMS44LTI4LjVMMzE4LjIgMzA0SDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMjRjMC0zNS4zLTI4LjctNjQtNjQtNjRIMjI0ek0xMzIuMyAzOTQuMmMxMy0yLjQgMjEuNy0xNC45IDE5LjMtMjcuOXMtMTQuOS0yMS43LTI3LjktMTkuM2MtMzIuNCA1LjktNjAuOSAxNC4yLTgyIDI0LjhjLTEwLjUgNS4zLTIwLjMgMTEuNy0yNy44IDE5LjZDNi40IDM5OS41IDAgNDEwLjUgMCA0MjRjMCAyMS40IDE1LjUgMzYuMSAyOS4xIDQ1YzE0LjcgOS42IDM0LjMgMTcuMyA1Ni40IDIzLjRDMTMwLjIgNTA0LjcgMTkwLjQgNTEyIDI1NiA1MTJzMTI1LjgtNy4zIDE3MC40LTE5LjZjMjIuMS02LjEgNDEuOC0xMy44IDU2LjQtMjMuNGMxMy43LTguOSAyOS4xLTIzLjYgMjkuMS00NWMwLTEzLjUtNi40LTI0LjUtMTQtMzIuNmMtNy41LTcuOS0xNy4zLTE0LjMtMjcuOC0xOS42Yy0yMS0xMC42LTQ5LjUtMTguOS04Mi0yNC44Yy0xMy0yLjQtMjUuNSA2LjMtMjcuOSAxOS4zczYuMyAyNS41IDE5LjMgMjcuOWMzMC4yIDUuNSA1My43IDEyLjggNjkgMjAuNWMzLjIgMS42IDUuOCAzLjEgNy45IDQuNWMzLjYgMi40IDMuNiA3LjIgMCA5LjZjLTguOCA1LjctMjMuMSAxMS44LTQzIDE3LjNDMzc0LjMgNDU3IDMxOC41IDQ2NCAyNTYgNDY0cy0xMTguMy03LTE1Ny43LTE3LjljLTE5LjktNS41LTM0LjItMTEuNi00My0xNy4zYy0zLjYtMi40LTMuNi03LjIgMC05LjZjMi4xLTEuNCA0LjgtMi45IDcuOS00LjVjMTUuMy03LjcgMzguOC0xNC45IDY5LTIwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0cmlrZXRocm91Z2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYxLjMgMTQ0YzMuMi0xNy4yIDE0LTMwLjEgMzMuNy0zOC42YzIxLjEtOSA1MS44LTEyLjMgODguNi02LjVjMTEuOSAxLjkgNDguOCA5LjEgNjAuMSAxMmMxNy4xIDQuNSAzNC42LTUuNiAzOS4yLTIyLjdzLTUuNi0zNC42LTIyLjctMzkuMmMtMTQuMy0zLjgtNTMuNi0xMS40LTY2LjYtMTMuNGMtNDQuNy03LTg4LjMtNC4yLTEyMy43IDEwLjljLTM2LjUgMTUuNi02NC40IDQ0LjgtNzEuOCA4Ny4zYy0uMSAuNi0uMiAxLjEtLjIgMS43Yy0yLjggMjMuOSAuNSA0NS42IDEwLjEgNjQuNmM0LjUgOSAxMC4yIDE2LjkgMTYuNyAyMy45SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNzAuMWMtLjEgMC0uMy0uMS0uNC0uMWwtMS4xLS4zYy0zNi0xMC44LTY1LjItMTkuNi04NS4yLTMzLjFjLTkuMy02LjMtMTUtMTIuNi0xOC4yLTE5LjFjLTMuMS02LjEtNS4yLTE0LjYtMy44LTI3LjR6TTM0OC45IDMzNy4yYzIuNyA2LjUgNC40IDE1LjggMS45IDMwLjFjLTMgMTcuNi0xMy44IDMwLjgtMzMuOSAzOS40Yy0yMS4xIDktNTEuNyAxMi4zLTg4LjUgNi41Yy0xOC0yLjktNDkuMS0xMy41LTc0LjQtMjIuMWMtNS42LTEuOS0xMS0zLjctMTUuOS01LjRjLTE2LjgtNS42LTM0LjkgMy41LTQwLjUgMjAuM3MzLjUgMzQuOSAyMC4zIDQwLjVjMy42IDEuMiA3LjkgMi43IDEyLjcgNC4zbDAgMCAwIDBjMjQuOSA4LjUgNjMuNiAyMS43IDg3LjYgMjUuNmwwIDAgLjIgMGM0NC43IDcgODguMyA0LjIgMTIzLjctMTAuOWMzNi41LTE1LjYgNjQuNC00NC44IDcxLjgtODcuM2MzLjYtMjEgMi43LTQwLjQtMy4xLTU4LjFIMzM1LjFjNyA1LjYgMTEuNCAxMS4yIDEzLjkgMTcuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Ryb29wd2FmZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2ek0zMTIuNiA2My43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwyNTYgOTcuNiAyMjIuMSA2My43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDMzLjkgMzMuOS00NS4zIDQ1LjMtNTYuNi01Ni42Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDU2LjYgNTYuNi00NS4zIDQ1LjNMODYuMyAxOTkuNGMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNkw5Ny42IDI1NiA2My43IDI4OS45Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBsMzMuOS0zMy45IDQ1LjMgNDUuMy01Ni42IDU2LjZjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGw1Ni42LTU2LjYgNDUuMyA0NS4zLTMzLjkgMzMuOWMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwTDI1NiA0MTQuNGwzMy45IDMzLjljNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC0zMy45LTMzLjkgNDUuMy00NS4zIDU2LjYgNTYuNmM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTU2LjYtNTYuNiA0NS4zLTQ1LjMgMzMuOSAzMy45YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkw0MTQuNCAyNTZsMzMuOS0zMy45YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBsLTMzLjkgMzMuOS00NS4zLTQ1LjMgNTYuNi01Ni42YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBsLTU2LjYgNTYuNi00NS4zLTQ1LjMgMzMuOS0zMy45YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42ek0xNDIuOSAyNTZsNDUuMy00NS4zTDIzMy40IDI1NmwtNDUuMyA0NS4zTDE0Mi45IDI1NnptNjcuOSA2Ny45TDI1NiAyNzguNmw0NS4zIDQ1LjNMMjU2IDM2OS4xbC00NS4zLTQ1LjN6TTI3OC42IDI1Nmw0NS4zLTQ1LjNMMzY5LjEgMjU2bC00NS4zIDQ1LjNMMjc4LjYgMjU2em0yMi42LTY3LjlMMjU2IDIzMy40bC00NS4zLTQ1LjNMMjU2IDE0Mi45bDQ1LjMgNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Vic2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDY0QzE0LjMgNjQgMCA3OC4zIDAgOTZzMTQuMyAzMiAzMiAzMkg0Ny4zbDg5LjYgMTI4TDQ3LjMgMzg0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0YzEwLjQgMCAyMC4yLTUuMSAyNi4yLTEzLjZMMTc2IDMxMS44bDg1LjggMTIyLjZjNiA4LjYgMTUuOCAxMy42IDI2LjIgMTMuNmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMDQuN0wyMTUuMSAyNTZsODkuNi0xMjhIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI4OGMtMTAuNCAwLTIwLjIgNS4xLTI2LjIgMTMuNkwxNzYgMjAwLjIgOTAuMiA3Ny42Qzg0LjIgNjkuMSA3NC40IDY0IDY0IDY0SDMyek00ODAgMzIwYzAtMTEuMS01LjctMjEuNC0xNS4yLTI3LjJzLTIxLjItNi40LTMxLjEtMS40bC0zMiAxNmMtMTUuOCA3LjktMjIuMiAyNy4xLTE0LjMgNDIuOUMzOTMgMzYxLjUgNDA0LjMgMzY4IDQxNiAzNjh2ODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzIgMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJWMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdWl0Y2FzZU1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg0IDQ4SDMyOGM0LjQgMCA4IDMuNiA4IDhWOTZIMTc2VjU2YzAtNC40IDMuNi04IDgtOHptLTU2IDhWOTZ2MzJWNDgwSDM4NFYxMjggOTYgNTZjMC0zMC45LTI1LjEtNTYtNTYtNTZIMTg0Yy0zMC45IDAtNTYgMjUuMS01NiA1NnpNOTYgOTZINjRDMjguNyA5NiAwIDEyNC43IDAgMTYwVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg5NlY5NnpNNDE2IDQ4MGgzMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBjMC0zNS4zLTI4LjctNjQtNjQtNjRINDE2VjQ4MHpNMjI0IDIwOGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djQ4aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjg4djQ4YzAgOC44LTcuMiAxNi0xNiAxNkgyNDBjLTguOCAwLTE2LTcuMi0xNi0xNlYzMjBIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMjcyYzAtOC44IDcuMi0xNiAxNi0xNmg0OFYyMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1aXRjYXNlUm9sbGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgNTZjMC00LjQgMy42LTggOC04aDgwYzQuNCAwIDggMy42IDggOHY3MkgxNDRWNTZ6bTE3NiA3MkgyODhWNTZjMC0zMC45LTI1LjEtNTYtNTYtNTZIMTUyQzEyMS4xIDAgOTYgMjUuMSA5NiA1NnY3Mkg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjRWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJIMjU2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTkyYzAtMzUuMy0yOC43LTY0LTY0LTY0ek0xMTIgMjI0SDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgMTI4SDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1aXRjYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiA1NlY5NkgzMzZWNTZjMC00LjQtMy42LTgtOC04SDE4NGMtNC40IDAtOCAzLjYtOCA4ek0xMjggOTZWNTZjMC0zMC45IDI1LjEtNTYgNTYtNTZIMzI4YzMwLjkgMCA1NiAyNS4xIDU2IDU2Vjk2djMyVjQ4MEgxMjhWMTI4IDk2ek02NCA5Nkg5NlY0ODBINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE2MGMwLTM1LjMgMjguNy02NCA2NC02NHpNNDQ4IDQ4MEg0MTZWOTZoMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdW5QbGFudFdpbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDBjLTYuMyAwLTEyIDMuNy0xNC42IDkuNUwxMjAuNiA2NC45IDYzLjkgNDMuMmMtNS45LTIuMy0xMi42LS44LTE3IDMuNnMtNS45IDExLjEtMy42IDE3bDIxLjcgNTYuN0w5LjUgMTQ1LjRDMy43IDE0OCAwIDE1My43IDAgMTYwczMuNyAxMiA5LjUgMTQuNmw1NS40IDI0LjhMNDMuMiAyNTYuMWMtMi4zIDUuOS0uOCAxMi42IDMuNiAxN3MxMS4xIDUuOSAxNyAzLjZsNTYuNy0yMS43IDI0LjggNTUuNGMyLjYgNS44IDguMyA5LjUgMTQuNiA5LjVzMTItMy43IDE0LjYtOS41bDI0LjgtNTUuNCA1Ni43IDIxLjdjNS45IDIuMyAxMi42IC44IDE3LTMuNnM1LjktMTEuMSAzLjYtMTdsLTIxLjctNTYuNyA1NS40LTI0LjhjNS44LTIuNiA5LjUtOC4zIDkuNS0xNC42cy0zLjctMTItOS41LTE0LjZsLTU1LjQtMjQuOCAyMS43LTU2LjdjMi4zLTUuOSAuOC0xMi42LTMuNi0xN3MtMTEuMS01LjktMTctMy42TDE5OS40IDY0LjkgMTc0LjYgOS41QzE3MiAzLjcgMTY2LjMgMCAxNjAgMHptMCA5NmE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHptMzIgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMzEyIDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2NTMuNGMtMTQuOCA3LjctMjQgMjMuMS0yNCA0NC42YzAgMTYuOCAxNiA0NCAzNy40IDY3LjJjNS44IDYuMiAxNS41IDYuMiAyMS4yIDBDNjI0IDMxOCA2NDAgMjkwLjcgNjQwIDI3NGMwLTIxLjUtOS4yLTM3LTI0LTQ0LjZWMTc2YzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwdjIyLjdjLTkuOC00LjMtMjAuNi02LjctMzItNi43Yy00NC4yIDAtODAgMzUuOC04MCA4MHYyMS40Yy0xNC44IDcuNy0yNCAyMy4xLTI0IDQ0LjZjMCAxNi44IDE2IDQ0IDM3LjQgNjcuMmM1LjggNi4yIDE1LjUgNi4yIDIxLjIgMEM0MDAgMzgyIDQxNiAzNTQuNyA0MTYgMzM4YzAtMjEuNS05LjItMzctMjQtNDQuNlYyNzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY4VjQ0OEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINTA0VjI4MHYtOFYxNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjEuNSAxLjJjNSAyLjEgOC42IDYuNiA5LjYgMTEuOUwzOTEgMTIxbDEwNy45IDE5LjhjNS4zIDEgOS44IDQuNiAxMS45IDkuNnMxLjUgMTAuNy0xLjYgMTUuMkw0NDYuOSAyNTZsNjIuMyA5MC4zYzMuMSA0LjUgMy43IDEwLjIgMS42IDE1LjJzLTYuNiA4LjYtMTEuOSA5LjZMMzkxIDM5MSAzNzEuMSA0OTguOWMtMSA1LjMtNC42IDkuOC05LjYgMTEuOXMtMTAuNyAxLjUtMTUuMi0xLjZMMjU2IDQ0Ni45bC05MC4zIDYyLjNjLTQuNSAzLjEtMTAuMiAzLjctMTUuMiAxLjZzLTguNi02LjYtOS42LTExLjlMMTIxIDM5MSAxMy4xIDM3MS4xYy01LjMtMS05LjgtNC42LTExLjktOS42cy0xLjUtMTAuNyAxLjYtMTUuMkw2NS4xIDI1NiAyLjggMTY1LjdjLTMuMS00LjUtMy43LTEwLjItMS42LTE1LjJzNi42LTguNiAxMS45LTkuNkwxMjEgMTIxIDE0MC45IDEzLjFjMS01LjMgNC42LTkuOCA5LjYtMTEuOXMxMC43LTEuNSAxNS4yIDEuNkwyNTYgNjUuMSAzNDYuMyAyLjhjNC41LTMuMSAxMC4yLTMuNyAxNS4yLTEuNnpNMTYwIDI1NmE5NiA5NiAwIDEgMSAxOTIgMCA5NiA5NiAwIDEgMSAtMTkyIDB6bTIyNCAwYTEyOCAxMjggMCAxIDAgLTI1NiAwIDEyOCAxMjggMCAxIDAgMjU2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1cGVyc2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAzMmMwLTExLjEtNS43LTIxLjQtMTUuMi0yNy4ycy0yMS4yLTYuNC0zMS4xLTEuNGwtMzIgMTZjLTE1LjggNy45LTIyLjIgMjcuMS0xNC4zIDQyLjlDMzkzIDczLjUgNDA0LjMgODAgNDE2IDgwdjgwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDMyIDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjMyek0zMiA2NEMxNC4zIDY0IDAgNzguMyAwIDk2czE0LjMgMzIgMzIgMzJINDcuM2w4OS42IDEyOEw0Ny4zIDM4NEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NGMxMC40IDAgMjAuMi01LjEgMjYuMi0xMy42TDE3NiAzMTEuOGw4NS44IDEyMi42YzYgOC42IDE1LjggMTMuNiAyNi4yIDEzLjZoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzA0LjdMMjE1LjEgMjU2bDg5LjYtMTI4SDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyODhjLTEwLjQgMC0yMC4yIDUuMS0yNi4yIDEzLjZMMTc2IDIwMC4yIDkwLjIgNzcuNkM4NC4yIDY5LjEgNzQuNCA2NCA2NCA2NEgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3dhdGNoYm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyQzAgMTQuMyAxNC4zIDAgMzIgMEgxNjBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDE2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2VjMyek0yMjMuNiA0MjUuOWMuMy0zLjMgLjQtNi42IC40LTkuOVYxNTRsNzUuNC03NS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDkwLjUgOTAuNWMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM0wyMjMuNiA0MjUuOXpNMTgyLjggNTEybDE5Mi0xOTJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxODIuOHpNMTI4IDY0SDY0djY0aDY0VjY0ek02NCAxOTJ2NjRoNjRWMTkySDY0ek05NiA0NDBhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTeW5hZ29ndWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA5LjggMy43YzUuOS00LjkgMTQuNi00LjkgMjAuNSAwbDEyMSAxMDAuOEM0NjkuNSAxMTkuNyA0ODAgMTQyLjIgNDgwIDE2NlYyODAuMSA1MTJINDY0IDM1MlY0MTZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2OTZIMTc2IDE2MFYyODAuMSAxNjZjMC0yMy43IDEwLjUtNDYuMyAyOC44LTYxLjVMMzA5LjggMy43ek01MTIgNTEyVjI0NC41bDI4LjEtMzEuMmMzLTMuNCA3LjQtNS4zIDExLjktNS4zczguOSAxLjkgMTEuOSA1LjNsNjMuOCA3MC45YzcuOSA4LjggMTIuMyAyMC4zIDEyLjMgMzIuMVY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINTEyek0xMjggMjQ0LjVWNTEySDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYzMTYuM2MwLTExLjkgNC40LTIzLjMgMTIuMy0zMi4xbDYzLjgtNzAuOWMzLTMuNCA3LjQtNS4zIDExLjktNS4zczguOSAxLjkgMTEuOSA1LjNMMTI4IDI0NC41ek0zMjcgMTI0LjNjLTMuMS01LjQtMTAuOS01LjQtMTMuOSAwbC0xNS45IDI4LjEtMzIuMy0uM2MtNi4yLS4xLTEwLjEgNi43LTcgMTIuMUwyNzQuMyAxOTJsLTE2LjQgMjcuOGMtMy4yIDUuNCAuNyAxMi4xIDcgMTIuMWwzMi4zLS4zTDMxMyAyNTkuN2MzLjEgNS40IDEwLjkgNS40IDEzLjkgMGwxNS45LTI4LjEgMzIuMyAuM2M2LjIgLjEgMTAuMS02LjcgNy0xMi4xTDM2NS43IDE5MmwxNi40LTI3LjhjMy4yLTUuNC0uNy0xMi4xLTctMTIuMWwtMzIuMyAuM0wzMjcgMTI0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN5cmluZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQxIDdsMzIgMzIgMzIgMzJjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtMTUtMTVMNDE3LjkgMTI4bDU1IDU1YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTcyLTcyTDI5NSA3M2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDU1IDU1TDQyMi4xIDU2IDQwNyA0MWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwek0yMTAuMyAxNTUuN2w2MS4xLTYxLjFjLjMgLjMgLjYgLjcgMSAxbDE2IDE2IDU2IDU2IDU2IDU2IDE2IDE2Yy4zIC4zIC42IC42IDEgMWwtMTkxIDE5MWMtMTAuNSAxMC41LTI0LjcgMTYuNC0zOS42IDE2LjRIOTcuOUw0MSA1MDVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNTctNTdWMzI1LjNjMC0xNC45IDUuOS0yOS4xIDE2LjQtMzkuNmw0My4zLTQzLjMgNTcgNTdjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC01Ny01NyA0MS40LTQxLjQgNTcgNTdjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC01Ny01N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZIMTYwVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjk2SDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxlQ2VsbHNDb2x1bW5Mb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzg0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCA2NS4xYy0zNy44IDUuNC02OS40IDI5LjYtODUuMiA2Mi45TDM2MCAyMjRsMCA2NCA1NiAwIDAgOC42Yy0xOS4xIDExLjEtMzIgMzEuNy0zMiA1NS40bC0yNCAwIDAgNjQgMjQgMCAwIDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NnptMjA4IDBsMCA2NCA4OCAwIDAtNjQtODggMHptMjQwIDBsLTg4IDAgMCA2NCA4OCAwIDAtNjR6TTIwOCAyMjRsMCA2NCA4OCAwIDAtNjQtODggMHptMCAxMjhsMCA2NCA4OCAwIDAtNjQtODggMHpNNTI4IDI0MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA0OCA2NCAwIDAtNDhjMC0xNy43LTE0LjMtMzItMzItMzJ6bS04MCAzMmMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwbDAgNDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJsLTE2MCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWJsZUNlbGxzTGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2VjIyNEgyODhWOTZINDQ4em0wIDE5MlY0MTZIMjg4VjI4OEg0NDh6TTIyNCAyMjRINjRWOTZIMjI0VjIyNHpNNjQgMjg4SDIyNFY0MTZINjRWMjg4ek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxlQ2VsbHNSb3dMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzg0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCA2NS4xYy0zNy44IDUuNC02OS40IDI5LjYtODUuMiA2Mi45TDM2MCAyMjRsMCA2NCA1NiAwIDAgOC42Yy0xOS4xIDExLjEtMzIgMzEuNy0zMiA1NS40bC0yNCAwIDAgNjQgMjQgMCAwIDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NnpNNjQgMjI0bDAgNjQgODggMCAwLTY0LTg4IDB6bTIzMiAwbC04OCAwIDAgNjQgODggMCAwLTY0ek0xNTIgMzUybC04OCAwIDAgNjQgODggMCAwLTY0em01NiAwbDAgNjQgODggMCAwLTY0LTg4IDB6TTUyOCAyNDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNDggNjQgMCAwLTQ4YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tODAgMzJjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGwwIDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTI4YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0xNjAgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xMjhjMC0xNy43IDE0LjMtMzIgMzItMzJsMC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFibGVDZWxscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTg4IDY0djY0SDY0Vjk2aDg4em01NiAwaDg4djY0SDIwOFY5NnptMjQwIDB2NjRIMzYwVjk2aDg4ek02NCAyMjRoODh2NjRINjRWMjI0em0yMzIgMHY2NEgyMDhWMjI0aDg4em02NCAwaDg4djY0SDM2MFYyMjR6TTE1MiAzNTJ2NjRINjRWMzUyaDg4em01NiAwaDg4djY0SDIwOFYzNTJ6bTI0MCAwdjY0SDM2MFYzNTJoODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxlQ29sdW1ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2em02NCA2NFY0MTZIMjI0VjE2MEg2NHptMzg0IDBIMjg4VjQxNkg0NDhWMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWJsZUxpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NnptNjQgMHY2NGg2NFY5Nkg2NHptMzg0IDBIMTkydjY0SDQ0OFY5NnpNNjQgMjI0djY0aDY0VjIyNEg2NHptMzg0IDBIMTkydjY0SDQ0OFYyMjR6TTY0IDM1MnY2NGg2NFYzNTJINjR6bTM4NCAwSDE5MnY2NEg0NDhWMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWJsZVRlbm5pc1BhZGRsZUJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDI4OGMtNTAuMSAwLTkzLjYgMjguOC0xMTQuNiA3MC44TDEzMi45IDEyNi4zbC42LS42IDYwLjEtNjAuMWM4Ny41LTg3LjUgMjI5LjMtODcuNSAzMTYuOCAwYzY3LjEgNjcuMSA4Mi43IDE2Ni4zIDQ2LjggMjQ4LjNDNTM1LjggMjk3LjYgNTA5IDI4OCA0ODAgMjg4ek0xMTMuMyAxNTEuOUwzNTQuMSAzOTIuN2MtMS40IDcuNS0yLjEgMTUuMy0yLjEgMjMuM2MwIDIzLjIgNi4yIDQ0LjkgMTYuOSA2My43Yy0zIC4yLTYuMSAuMy05LjIgLjNIMzU3Yy0zMy45IDAtNjYuNS0xMy41LTkwLjUtMzcuNWwtOS44LTkuOGMtMTMuMS0xMy4xLTM0LjYtMTIuNC00Ni44IDEuN0wxNTIuMiA1MDFjLTUuOCA2LjctMTQuMiAxMC43LTIzIDExcy0xNy41LTMuMS0yMy44LTkuNGwtMzItMzJjLTYuMy02LjMtOS43LTE0LjktOS40LTIzLjhzNC4zLTE3LjIgMTEtMjNsNjYuNi01Ny43YzE0LTEyLjIgMTQuOC0zMy43IDEuNy00Ni44bC05LjgtOS44Yy0yNC0yNC0zNy41LTU2LjYtMzcuNS05MC41di0yLjdjMC0yMi44IDYuMS00NC45IDE3LjMtNjQuM3pNNDgwIDMyMGE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMjU2VjE2MEgyMjR2OTZINjR6bTAgNjRIMjI0djk2SDY0VjMyMHptMjI0IDk2VjMyMEg0NDh2OTZIMjg4ek00NDggMjU2SDI4OFYxNjBINDQ4djk2ek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxldEJ1dHRvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yMjQgNDAwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFibGV0U2NyZWVuQnV0dG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0ek0yNTYgNDQ4YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTM4NCA2NEg2NFYzODRIMzg0VjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWJsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMTc2IDQzMmg5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxldHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjE0LjMgMjQ3YzE2LjMtMjUgMjUuNy01NC45IDI1LjctODdDNjQwIDcxLjYgNTY4LjQgMCA0ODAgMGMtMzIuMSAwLTYxLjkgOS40LTg3IDI1LjdjLTcuOSA1LjItOC41IDE2LjItMS44IDIyLjlMNTkxLjQgMjQ4LjhjNi43IDYuNyAxNy44IDYuMiAyMi45LTEuOHpNNTY3IDI5NC4zYzcuOS01LjIgOC41LTE2LjIgMS44LTIyLjlMMzY4LjYgNzEuMmMtNi43LTYuNy0xNy44LTYuMi0yMi45IDEuOGMtMTYuMyAyNS0yNS43IDU0LjktMjUuNyA4N2MwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MGMzMi4xIDAgNjEuOS05LjQgODctMjUuN3pNMzAxLjUgMzY4SDE4LjVjLTkuNSAwLTE2LjkgOC4yLTE1IDE3LjVDMTguOSA0NTcuOCA4My4xIDUxMiAxNjAgNTEyczE0MS4xLTU0LjIgMTU2LjUtMTI2LjVjMi05LjMtNS41LTE3LjUtMTUtMTcuNXptMC0zMmM5LjUgMCAxNi45LTguMiAxNS0xNy41QzMwMS4xIDI0Ni4yIDIzNi45IDE5MiAxNjAgMTkyUzE4LjkgMjQ2LjIgMy41IDMxOC41Yy0yIDkuMyA1LjUgMTcuNSAxNSAxNy41SDMwMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWNob2dyYXBoRGlnaXRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTc2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEg2NHptMzIgNjRIMzIwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTY0IDM2OGMwLTguOCA3LjItMTYgMTYtMTZIMzM2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZ6bTMyMCAwYzAtOC44IDcuMi0xNiAxNi0xNkg1NjBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZINDAwYy04LjggMC0xNi03LjItMTYtMTZ6TTgwIDI4OGExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6bTQ4IDE2YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6bTgwLTE2YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnptNDggMTZhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHptODAtMTZhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4MFYyMjkuNWMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM2wxNzYgMTc2YzI1IDI1IDY1LjUgMjUgOTAuNSAwTDQxOC43IDMxNy4zYzI1LTI1IDI1LTY1LjUgMC05MC41bC0xNzYtMTc2Yy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43SDQ4QzIxLjUgMzIgMCA1My41IDAgODB6bTExMiAzMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ1IDM5LjFMNDcyLjggMTY4LjRjNTIuNCA1MyA1Mi40IDEzOC4yIDAgMTkxLjJMMzYwLjggNDcyLjljLTkuMyA5LjQtMjQuNSA5LjUtMzMuOSAuMnMtOS41LTI0LjUtLjItMzMuOUw0MzguNiAzMjUuOWMzMy45LTM0LjMgMzMuOS04OS40IDAtMTIzLjdMMzEwLjkgNzIuOWMtOS4zLTkuNC05LjItMjQuNiAuMi0zMy45czI0LjYtOS4yIDMzLjkgLjJ6TTAgMjI5LjVWODBDMCA1My41IDIxLjUgMzIgNDggMzJIMTk3LjVjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdsMTY4IDE2OGMyNSAyNSAyNSA2NS41IDAgOTAuNUwyNzcuMyA0NDIuN2MtMjUgMjUtNjUuNSAyNS05MC41IDBsLTE2OC0xNjhDNi43IDI2Mi43IDAgMjQ2LjUgMCAyMjkuNXpNMTQ0IDE0NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4MC44IDQxNmM0MS41LTQwLjcgNjcuMi05Ny4zIDY3LjItMTYwQzQ0OCAxMzIuMyAzNDcuNyAzMiAyMjQgMzJTMCAxMzIuMyAwIDI1NlMxMDAuMyA0ODAgMjI0IDQ4MEg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzgwLjh6TTIyNCAxNjBhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6bTY0IDk2YTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFycERyb3BsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDE2MGMtMzUuMyAwLTY0LTI2LjktNjQtNjBjMC0yNCAzMy43LTcwLjEgNTIuMi05My41YzYuMS03LjcgMTcuNS03LjcgMjMuNiAwQzMxOC4zIDI5LjkgMzUyIDc2IDM1MiAxMDBjMCAzMy4xLTI4LjcgNjAtNjQgNjB6TTY0IDEyOEgxOTcuNWMxMy4yIDM3LjMgNDguNyA2NCA5MC41IDY0czc3LjQtMjYuNyA5MC41LTY0SDUxMmMzNS4zIDAgNjQgMjguNyA2NCA2NFYzNTJINDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDEyOEw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE5MmMwLTM1LjMgMjguNy02NCA2NC02NHpNNDQ4IDUxMmwwLTEyOEg1NzZMNDQ4IDUxMnpNOTYgMjU2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFycCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzYgMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzNTIgMCAwLTEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg1NzZWMTI4ek00NDggNDQ4TDU3NiAzMjBINDQ4bDAgMTI4ek05NiAxMjhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYXhpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY2NGMwIC4xIDAgLjEgMCAuMmMtMzguNiAyLjItNzIuMyAyNy4zLTg1LjIgNjQuMUwzOS42IDIyOC44QzE2LjQgMjM4LjQgMCAyNjEuMyAwIDI4OFY0MzJ2NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJINjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDMySDQxNnY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMlY0MzIgMjg4YzAtMjYuNy0xNi40LTQ5LjYtMzkuNi01OS4yTDQzNy4yIDEyOC4zYy0xMi45LTM2LjgtNDYuNi02Mi04NS4yLTY0LjFjMC0uMSAwLS4xIDAtLjJWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMTkyek0xNjUuNCAxMjhIMzQ2LjZjMTMuNiAwIDI1LjcgOC42IDMwLjIgMjEuNEw0MDIuOSAyMjRIMTA5LjFsMjYuMS03NC42YzQuNS0xMi44IDE2LjYtMjEuNCAzMC4yLTIxLjR6TTk2IDI4OGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTI4OCAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZWV0aE9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzJDNDMgMzIgMCA3NSAwIDEyOHY2NGMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtNTMtNDMtOTYtOTYtOTZIOTZ6TTIyNCA5NmMyNi41IDAgNDggMjEuNSA0OCA0OHY1NmMwIDEzLjMtMTAuNyAyNC0yNCAyNEgyMDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE0NGMwLTI2LjUgMjEuNS00OCA0OC00OHptODAgNDhjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY1NmMwIDEzLjMtMTAuNyAyNC0yNCAyNEgzMjhjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE0NHpNOTYgMTI4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djI0YzAgMTMuMy0xMC43IDI0LTI0IDI0SDcyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYxNzZjMC0yNi41IDIxLjUtNDggNDgtNDh6bTMzNiA0OGMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djI0YzAgMTMuMy0xMC43IDI0LTI0IDI0SDQ1NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMTc2ek05NiA0ODBINDgwYzUzIDAgOTYtNDMgOTYtOTZWMzUyYzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NHYzMmMwIDUzIDQzIDk2IDk2IDk2em0wLTY0Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzNDRjMC0xMy4zIDEwLjctMjQgMjQtMjRoNDhjMTMuMyAwIDI0IDEwLjcgMjQgMjR2MjRjMCAyNi41LTIxLjUgNDgtNDggNDh6bTgwLTQ4VjM0NGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHYyNGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OHptMTc2IDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzNDRjMC0xMy4zIDEwLjctMjQgMjQtMjRoNDhjMTMuMyAwIDI0IDEwLjcgMjQgMjR2MjRjMCAyNi41LTIxLjUgNDgtNDggNDh6bTgwLTQ4VjM0NGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHYyNGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVldGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxMjhDMCA3NSA0MyAzMiA5NiAzMkg0ODBjNTMgMCA5NiA0MyA5NiA5NlYzODRjMCA1My00MyA5Ni05NiA5Nkg5NmMtNTMgMC05Ni00My05Ni05NlYxMjh6bTE3NiA0OHY1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNGg0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDh6bTE3Ni00OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTc2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek00OCAyMDh2MjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjA4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4ek05NiAzODRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzEyYzAtMTMuMy0xMC43LTI0LTI0LTI0SDcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNGMwIDI2LjUgMjEuNSA0OCA0OCA0OHptODAtNDhjMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OFYzMTJjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNHptMTc2IDQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjMxMmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgzMjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0djI0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4em04MC0xNzZ2MjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjA4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4em00OCAxNzZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzEyYzAtMTMuMy0xMC43LTI0LTI0LTI0SDQ1NmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MjRjMCAyNi41IDIxLjUgNDggNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbXBlcmF0dXJlQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAxMTJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OFYyNzYuNWMwIDE3LjMgNy4xIDMxLjkgMTUuMyA0Mi41QzI0OS44IDMzMi42IDI1NiAzNDkuNSAyNTYgMzY4YzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtMTguNSA2LjItMzUuNCAxNi43LTQ4LjljOC4yLTEwLjYgMTUuMy0yNS4yIDE1LjMtNDIuNVYxMTJ6TTE3NiAwQzExNC4xIDAgNjQgNTAuMSA2NCAxMTJWMjc2LjRjMCAuMS0uMSAuMy0uMiAuNmMtLjIgLjYtLjggMS42LTEuNyAyLjhDNDMuMiAzMDQuMiAzMiAzMzQuOCAzMiAzNjhjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRzMTQ0LTY0LjUgMTQ0LTE0NGMwLTMzLjItMTEuMi02My44LTMwLjEtODguMWMtLjktMS4yLTEuNS0yLjItMS43LTIuOGMtLjEtLjMtLjItLjUtLjItLjZWMTEyQzI4OCA1MC4xIDIzNy45IDAgMTc2IDB6bTAgNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4YzAtMjAuOS0xMy40LTM4LjctMzItNDUuM1YyNzJjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2NTAuN2MtMTguNiA2LjYtMzIgMjQuNC0zMiA0NS4zYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4em0zMzYtNjRINDgwVjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjM1MkgzODRjLTEyLjkgMC0yNC42IDcuOC0yOS42IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45bDY0IDY0YzYgNiAxNC4xIDkuNCAyMi42IDkuNHMxNi42LTMuNCAyMi42LTkuNGw2NC02NGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOXMtMTYuNi0xOS44LTI5LjYtMTkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVBcnJvd1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAxMTJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OFYyNzYuNWMwIDE3LjMgNy4xIDMxLjkgMTUuMyA0Mi41QzI0OS44IDMzMi42IDI1NiAzNDkuNSAyNTYgMzY4YzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtMTguNSA2LjItMzUuNCAxNi43LTQ4LjljOC4yLTEwLjYgMTUuMy0yNS4yIDE1LjMtNDIuNVYxMTJ6TTE3NiAwQzExNC4xIDAgNjQgNTAuMSA2NCAxMTJWMjc2LjRjMCAuMS0uMSAuMy0uMiAuNmMtLjIgLjYtLjggMS42LTEuNyAyLjhDNDMuMiAzMDQuMiAzMiAzMzQuOCAzMiAzNjhjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRzMTQ0LTY0LjUgMTQ0LTE0NGMwLTMzLjItMTEuMi02My44LTMwLjEtODguMWMtLjktMS4yLTEuNS0yLjItMS43LTIuOGMtLjEtLjMtLjItLjUtLjItLjZWMTEyQzI4OCA1MC4xIDIzNy45IDAgMTc2IDB6bTAgNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4YzAtMjAuOS0xMy40LTM4LjctMzItNDUuM1YxMTJjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWMzIyLjdjLTE4LjYgNi42LTMyIDI0LjQtMzIgNDUuM2MwIDI2LjUgMjEuNSA0OCA0OCA0OHpNNDgwIDE2MGgzMmMxMi45IDAgMjQuNi03LjggMjkuNi0xOS44czIuMi0yNS43LTYuOS0zNC45bC02NC02NGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTY0IDY0Yy05LjIgOS4yLTExLjkgMjIuOS02LjkgMzQuOXMxNi42IDE5LjggMjkuNiAxOS44aDMyVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVFbXB0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDhWMjc2LjVjMCAxNy4zIDcuMSAzMS45IDE1LjMgNDIuNUMyMzMuOCAzMzIuNiAyNDAgMzQ5LjUgMjQwIDM2OGMwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTE4LjUgNi4yLTM1LjQgMTYuNy00OC45YzguMi0xMC42IDE1LjMtMjUuMiAxNS4zLTQyLjVWMTEyek0xNjAgMEM5OC4xIDAgNDggNTAuMiA0OCAxMTJWMjc2LjVjMCAuMS0uMSAuMy0uMiAuNmMtLjIgLjYtLjggMS42LTEuNyAyLjhDMjcuMiAzMDQuMiAxNiAzMzQuOCAxNiAzNjhjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRzMTQ0LTY0LjUgMTQ0LTE0NGMwLTMzLjItMTEuMi02My44LTMwLjEtODguMWMtLjktMS4yLTEuNS0yLjItMS43LTIuOGMtLjEtLjMtLjItLjUtLjItLjZWMTEyQzI3MiA1MC4yIDIyMS45IDAgMTYwIDB6bTAgNDE2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCA2NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWMjc2LjVjMCAxNy4zLTcuMSAzMS45LTE1LjMgNDIuNUM4Ni4yIDMzMi42IDgwIDM0OS41IDgwIDM2OGMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMTguNS02LjItMzUuNC0xNi43LTQ4LjljLTguMi0xMC42LTE1LjMtMjUuMi0xNS4zLTQyLjVWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek00OCAxMTJDNDggNTAuMiA5OC4xIDAgMTYwIDBzMTEyIDUwLjEgMTEyIDExMlYyNzYuNWMwIC4xIC4xIC4zIC4yIC42Yy4yIC42IC44IDEuNiAxLjcgMi44YzE4LjkgMjQuNCAzMC4xIDU1IDMwLjEgODguMWMwIDc5LjUtNjQuNSAxNDQtMTQ0IDE0NFMxNiA0NDcuNSAxNiAzNjhjMC0zMy4yIDExLjItNjMuOCAzMC4xLTg4LjFjLjktMS4yIDEuNS0yLjIgMS43LTIuOGMuMS0uMyAuMi0uNSAuMi0uNlYxMTJ6TTIwOCAzNjhjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhjMC0yMC45IDEzLjQtMzguNyAzMi00NS4zVjExMmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2VjMyMi43YzE4LjYgNi42IDMyIDI0LjQgMzIgNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCA2NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWMjc2LjVjMCAxNy4zLTcuMSAzMS45LTE1LjMgNDIuNUM4Ni4yIDMzMi42IDgwIDM0OS41IDgwIDM2OGMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMTguNS02LjItMzUuNC0xNi43LTQ4LjljLTguMi0xMC42LTE1LjMtMjUuMi0xNS4zLTQyLjVWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek00OCAxMTJDNDggNTAuMiA5OC4xIDAgMTYwIDBzMTEyIDUwLjEgMTEyIDExMlYyNzYuNWMwIC4xIC4xIC4zIC4yIC42Yy4yIC42IC44IDEuNiAxLjcgMi44YzE4LjkgMjQuNCAzMC4xIDU1IDMwLjEgODguMWMwIDc5LjUtNjQuNSAxNDQtMTQ0IDE0NFMxNiA0NDcuNSAxNiAzNjhjMC0zMy4yIDExLjItNjMuOCAzMC4xLTg4LjFjLjktMS4yIDEuNS0yLjIgMS43LTIuOGMuMS0uMyAuMi0uNSAuMi0uNlYxMTJ6TTIwOCAzNjhjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhjMC0yMC45IDEzLjQtMzguNyAzMi00NS4zVjIwOGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2VjMyMi43YzE4LjYgNi42IDMyIDI0LjQgMzIgNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiA2NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTAgMTI4QTk2IDk2IDAgMSAwIDQxNiAwYTk2IDk2IDAgMSAwIDAgMTkyek05NiAxMTJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OFYyNzYuNWMwIDE3LjMgNy4xIDMxLjkgMTUuMyA0Mi41QzIxNy44IDMzMi42IDIyNCAzNDkuNSAyMjQgMzY4YzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtMTguNSA2LjItMzUuNCAxNi43LTQ4LjlDODguOSAzMDguNCA5NiAyOTMuOCA5NiAyNzYuNVYxMTJ6TTE0NCAwQzgyLjEgMCAzMiA1MC4yIDMyIDExMlYyNzYuNWMwIC4xLS4xIC4zLS4yIC42Yy0uMiAuNi0uOCAxLjYtMS43IDIuOEMxMS4yIDMwNC4yIDAgMzM0LjggMCAzNjhjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRzMTQ0LTY0LjUgMTQ0LTE0NGMwLTMzLjItMTEuMi02My44LTMwLjEtODguMWMtLjktMS4yLTEuNS0yLjItMS43LTIuOGMtLjEtLjMtLjItLjUtLjItLjZWMTEyQzI1NiA1MC4yIDIwNS45IDAgMTQ0IDB6bTAgNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4YzAtMjAuOS0xMy40LTM4LjctMzItNDUuM1YxMTJjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWMzIyLjdjLTE4LjYgNi42LTMyIDI0LjQtMzIgNDUuM2MwIDI2LjUgMjEuNSA0OCA0OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVMb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDk2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTMyMCA5NmE5NiA5NiAwIDEgMSAxOTIgMEE5NiA5NiAwIDEgMSAzMjAgOTZ6TTE0NCA2NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWMjc2LjVjMCAxNy4zLTcuMSAzMS45LTE1LjMgNDIuNUM3MC4yIDMzMi42IDY0IDM0OS41IDY0IDM2OGMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMTguNS02LjItMzUuNC0xNi43LTQ4LjljLTguMi0xMC42LTE1LjMtMjUuMi0xNS4zLTQyLjVWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0zMiAxMTJDMzIgNTAuMiA4Mi4xIDAgMTQ0IDBzMTEyIDUwLjEgMTEyIDExMlYyNzYuNWMwIC4xIC4xIC4zIC4yIC42Yy4yIC42IC44IDEuNiAxLjcgMi44YzE4LjkgMjQuNCAzMC4xIDU1IDMwLjEgODguMWMwIDc5LjUtNjQuNSAxNDQtMTQ0IDE0NFMwIDQ0Ny41IDAgMzY4YzAtMzMuMiAxMS4yLTYzLjggMzAuMS04OC4xYy45LTEuMiAxLjUtMi4yIDEuNy0yLjhjLjEtLjMgLjItLjUgLjItLjZWMTEyek0xOTIgMzY4YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4YzAtMjAuOSAxMy40LTM4LjcgMzItNDUuM1YyNzJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY1MC43YzE4LjYgNi42IDMyIDI0LjQgMzIgNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVRdWFydGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCA2NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWMjc2LjVjMCAxNy4zLTcuMSAzMS45LTE1LjMgNDIuNUM4Ni4yIDMzMi42IDgwIDM0OS41IDgwIDM2OGMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMTguNS02LjItMzUuNC0xNi43LTQ4LjljLTguMi0xMC42LTE1LjMtMjUuMi0xNS4zLTQyLjVWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek00OCAxMTJDNDggNTAuMiA5OC4xIDAgMTYwIDBzMTEyIDUwLjEgMTEyIDExMlYyNzYuNWMwIC4xIC4xIC4zIC4yIC42Yy4yIC42IC44IDEuNiAxLjcgMi44YzE4LjkgMjQuNCAzMC4xIDU1IDMwLjEgODguMWMwIDc5LjUtNjQuNSAxNDQtMTQ0IDE0NFMxNiA0NDcuNSAxNiAzNjhjMC0zMy4yIDExLjItNjMuOCAzMC4xLTg4LjFjLjktMS4yIDEuNS0yLjIgMS43LTIuOGMuMS0uMyAuMi0uNSAuMi0uNlYxMTJ6TTIwOCAzNjhjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhjMC0yMC45IDEzLjQtMzguNyAzMi00NS4zVjI3MmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djUwLjdjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZW1wZXJhdHVyZVRocmVlUXVhcnRlcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDY0Yy0yNi41IDAtNDggMjEuNS00OCA0OFYyNzYuNWMwIDE3LjMtNy4xIDMxLjktMTUuMyA0Mi41Qzg2LjIgMzMyLjYgODAgMzQ5LjUgODAgMzY4YzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0xOC41LTYuMi0zNS40LTE2LjctNDguOWMtOC4yLTEwLjYtMTUuMy0yNS4yLTE1LjMtNDIuNVYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTQ4IDExMkM0OCA1MC4yIDk4LjEgMCAxNjAgMHMxMTIgNTAuMSAxMTIgMTEyVjI3Ni41YzAgLjEgLjEgLjMgLjIgLjZjLjIgLjYgLjggMS42IDEuNyAyLjhjMTguOSAyNC40IDMwLjEgNTUgMzAuMSA4OC4xYzAgNzkuNS02NC41IDE0NC0xNDQgMTQ0UzE2IDQ0Ny41IDE2IDM2OGMwLTMzLjIgMTEuMi02My44IDMwLjEtODguMWMuOS0xLjIgMS41LTIuMiAxLjctMi44Yy4xLS4zIC4yLS41IC4yLS42VjExMnpNMjA4IDM2OGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OGMwLTIwLjkgMTMuNC0zOC43IDMyLTQ1LjNWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZWMzIyLjdjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZW5nZVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJDMTQuMyA5NiAwIDgxLjcgMCA2NHpNMCAxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJIMTkyIDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyMjRWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIyNEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbnRBcnJvd0Rvd25Ub0xpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQxLjggMTExLjljOC45IDkuOSA4LjEgMjUtMS44IDMzLjlsLTgwIDcyYy05LjEgOC4yLTIzIDguMi0zMi4xIDBsLTgwLTcyYy05LjktOC45LTEwLjctMjQtMS44LTMzLjlzMjQtMTAuNyAzMy45LTEuOGwzOS45IDM2TDEyMCAyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgMTIyLjEgMzkuOS0zNmM5LjktOC45IDI1LTguMSAzMy45IDEuOHptMTIyLjggMjIuNmMxMS41LTguNyAyNy4zLTguNyAzOC44IDBsMTY4IDEyOGM2LjYgNSAxMSAxMi41IDEyLjMgMjAuN2wyNCAxNjAgLjcgNC43YzE3LjUgLjIgMzEuNiAxNC40IDMxLjYgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIMTU5LjZsLjctNC43IDI0LTE2MGMxLjItOC4yIDUuNi0xNS43IDEyLjMtMjAuN2wxNjgtMTI4ek0zODQgNDQ4aDgwTDQwMi43IDMyNS41Yy0xLjctMy40LTUuMS01LjUtOC44LTUuNWMtNS41IDAtOS45IDQuNC05LjkgOS45VjQ0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVudEFycm93TGVmdFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OC4xIDYuMmMtOS45LTguOS0yNS04LjEtMzMuOSAxLjhzLTguMSAyNSAxLjggMzMuOUw0ODkuNSA3MiA4Ni41IDcybDMzLjUtMzAuMmM5LjktOC45IDEwLjctMjQgMS44LTMzLjlTOTcuOC0yLjcgODcuOSA2LjJsLTgwIDcyQzIuOSA4Mi43IDAgODkuMiAwIDk2czIuOSAxMy4zIDcuOSAxNy44bDgwIDcyYzkuOSA4LjkgMjUgOC4xIDMzLjktMS44czguMS0yNS0xLjgtMzMuOUw4Ni41IDEyMGw0MDIuOSAwLTMzLjUgMzAuMmMtOS45IDguOS0xMC43IDI0LTEuOCAzMy45czI0IDEwLjcgMzMuOSAxLjhsODAtNzJjNS4xLTQuNiA3LjktMTEgNy45LTE3LjhzLTIuOS0xMy4zLTcuOS0xNy44bC04MC03MnpNMzA3LjQgMTY2LjVjLTExLjUtOC43LTI3LjMtOC43LTM4LjggMGwtMTY4IDEyOGMtNi42IDUtMTEgMTIuNS0xMi4zIDIwLjdsLTI0IDE2MGMtMS40IDkuMiAxLjMgMTguNiA3LjQgMjUuNlM4Ni43IDUxMiA5NiA1MTJIMjQwaDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM2MS45YzAtNS41IDQuNC05LjkgOS45LTkuOWMzLjcgMCA3LjIgMi4xIDguOCA1LjVsNjguNCAxMzYuOGM1LjQgMTAuOCAxNi41IDE3LjcgMjguNiAxNy43SDQ2NGgxNmM5LjMgMCAxOC4yLTQuMSAyNC4yLTExLjFzOC44LTE2LjQgNy40LTI1LjZsLTI0LTE2MGMtMS4yLTguMi01LjYtMTUuNy0xMi4zLTIwLjdsLTE2OC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbnRBcnJvd1R1cm5MZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyMC4xIDQxLjhjOS45LTguOSAxMC43LTI0IDEuOC0zMy45Uzk3LjgtMi43IDg3LjkgNi4ybC04MCA3MkMyLjkgODIuNyAwIDg5LjIgMCA5NnMyLjkgMTMuMyA3LjkgMTcuOGw4MCA3MmM5LjkgOC45IDI1IDguMSAzMy45LTEuOHM4LjEtMjUtMS44LTMzLjlMODYuNSAxMjAgNDU2IDEyMGMzOS44IDAgNzIgMzIuMiA3MiA3MnY0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjE5MmMwLTY2LjMtNTMuNy0xMjAtMTIwLTEyMEw4Ni41IDcybDMzLjUtMzAuMnpNMzA3LjQgMTY2LjVjLTExLjUtOC43LTI3LjMtOC43LTM4LjggMGwtMTY4IDEyOGMtNi42IDUtMTEgMTIuNS0xMi4zIDIwLjdsLTI0IDE2MGMtMS40IDkuMiAxLjMgMTguNiA3LjQgMjUuNlM4Ni43IDUxMiA5NiA1MTJIMjQwaDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM2MS45YzAtNS41IDQuNC05LjkgOS45LTkuOWMzLjcgMCA3LjIgMi4xIDguOCA1LjVsNjguNCAxMzYuOGM1LjQgMTAuOCAxNi41IDE3LjcgMjguNiAxNy43SDQ2NGgxNmM5LjMgMCAxOC4yLTQuMSAyNC4yLTExLjFzOC44LTE2LjQgNy40LTI1LjZsLTI0LTE2MGMtMS4yLTguMi01LjYtMTUuNy0xMi4zLTIwLjdsLTE2OC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbnRBcnJvd3NEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOS44IDExMS45Yy04LjktOS45LTI0LTEwLjctMzMuOS0xLjhsLTM5LjkgMzZMMTM2IDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0Uzg4IDEwLjcgODggMjRsMCAxMjIuMS0zOS45LTM2Yy05LjktOC45LTI1LTguMS0zMy45IDEuOHMtOC4xIDI1IDEuOCAzMy45bDgwIDcyYzkuMSA4LjIgMjMgOC4yIDMyLjEgMGw4MC03MmM5LjktOC45IDEwLjctMjQgMS44LTMzLjl6bTM1MiAwYy04LjktOS45LTI0LTEwLjctMzMuOS0xLjhsLTM5LjkgMzZWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWMTQ2LjFsLTM5LjktMzZjLTkuOS04LjktMjUtOC4xLTMzLjkgMS44cy04LjEgMjUgMS44IDMzLjlsODAgNzJjOS4xIDguMiAyMyA4LjIgMzIuMSAwbDgwLTcyYzkuOS04LjkgMTAuNy0yNCAxLjgtMzMuOXpNMzA3LjQgMTY2LjVjLTExLjUtOC43LTI3LjMtOC43LTM4LjggMGwtMTY4IDEyOGMtNi42IDUtMTEgMTIuNS0xMi4zIDIwLjdsLTI0IDE2MGMtMS40IDkuMiAxLjMgMTguNiA3LjQgMjUuNlM4Ni43IDUxMiA5NiA1MTJIMjQwaDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM2MS45YzAtNS41IDQuNC05LjkgOS45LTkuOWMzLjcgMCA3LjIgMi4xIDguOCA1LjVsNjguNCAxMzYuOGM1LjQgMTAuOCAxNi41IDE3LjcgMjguNiAxNy43SDQ2NGgxNmM5LjMgMCAxOC4yLTQuMSAyNC4yLTExLjFzOC44LTE2LjQgNy40LTI1LjZsLTI0LTE2MGMtMS4yLTguMi01LjYtMTUuNy0xMi4zLTIwLjdsLTE2OC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY5LjQgNkMyODAuNS0yIDI5NS41LTIgMzA2LjYgNmwyMjQgMTYwYzcuNCA1LjMgMTIuMiAxMy41IDEzLjIgMjIuNWwzMiAyODhjMSA5LTEuOSAxOC4xLTggMjQuOXMtMTQuNyAxMC43LTIzLjggMTAuN0g0NjQgNDM1LjhjLTEyLjEgMC0yMy4yLTYuOC0yOC42LTE3LjdMMzA2LjcgMjkzLjVjLTEuNy0zLjQtNS4xLTUuNS04LjgtNS41Yy01LjUgMC05LjkgNC40LTkuOSA5LjlWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDI0MCAzMmMtOS4xIDAtMTcuOC0zLjktMjMuOC0xMC43cy05LTE1LjgtOC0yNC45bDMyLTI4OGMxLTkgNS44LTE3LjIgMTMuMi0yMi41TDI2OS40IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5Ni42IDYuNUwyMzUuOCAxMjkuMWM5LjYgMS44IDE4LjkgNS44IDI3IDEybDE2OCAxMjhjMTMuMiAxMC4xIDIyIDI0LjkgMjQuNSA0MS40bDYuMiA0MS41SDYwOGM5LjMgMCAxOC4yLTQuMSAyNC4yLTExLjFzOC44LTE2LjQgNy40LTI1LjZsLTI0LTE2MGMtMS4yLTguMi01LjYtMTUuNy0xMi4zLTIwLjdsLTE2OC0xMjhjLTExLjUtOC43LTI3LjMtOC43LTM4LjggMHptLTE1My4yIDE2MGMtMTEuNS04LjctMjcuMy04LjctMzguOCAwbC0xNjggMTI4Yy02LjYgNS0xMSAxMi41LTEyLjMgMjAuN2wtMjQgMTYwYy0xLjQgOS4yIDEuMyAxOC42IDcuNCAyNS42UzIyLjcgNTEyIDMyIDUxMkgxNzZoMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzYxLjljMC01LjUgNC40LTkuOSA5LjktOS45YzMuNyAwIDcuMiAyLjEgOC44IDUuNWw2OC40IDEzNi44YzUuNCAxMC44IDE2LjUgMTcuNyAyOC42IDE3LjdINDAwaDE2YzkuMyAwIDE4LjItNC4xIDI0LjItMTEuMXM4LjgtMTYuNCA3LjQtMjUuNmwtMjQtMTYwYy0xLjItOC4yLTUuNi0xNS43LTEyLjMtMjAuN2wtMTY4LTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVybWluYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40IDg2LjZDLTMuMSA3NC4xLTMuMSA1My45IDkuNCA0MS40czMyLjgtMTIuNSA0NS4zIDBsMTkyIDE5MmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtMTkyIDE5MmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMTc4LjcgMjU2IDkuNCA4Ni42ek0yNTYgNDE2SDU0NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRleHRIZWlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMTI4Vjk2aDY0bDAgMzIwSDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJsMC0zMjBoNjR2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY4MGMwLTI2LjUtMjEuNS00OC00OC00OEgxNjAgNDhDMjEuNSAzMiAwIDUzLjUgMCA4MHY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyek01MDIuNiA0MS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtNjQgNjRjLTkuMiA5LjItMTEuOSAyMi45LTYuOSAzNC45czE2LjYgMTkuOCAyOS42IDE5LjhoMzJWMzUySDQxNmMtMTIuOSAwLTI0LjYgNy44LTI5LjYgMTkuOHMtMi4yIDI1LjcgNi45IDM0LjlsNjQgNjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsNjQtNjRjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlzLTE2LjYtMTkuOC0yOS42LTE5LjhINTEyVjE2MGgzMmMxMi45IDAgMjQuNi03LjggMjkuNi0xOS44czIuMi0yNS43LTYuOS0zNC45bC02NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGV4dFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMMzU1LjcgMjUzLjUgNDAwLjIgOTZINTAzTDQ5NyAxMjAuMmMtNC4zIDE3LjEgNi4xIDM0LjUgMjMuMyAzOC44czM0LjUtNi4xIDM4LjgtMjMuM2wxMS00NC4xQzU3Ny42IDYxLjMgNTU0LjcgMzIgNTIzLjUgMzJIMzc2LjFoLS4zSDIwNC41Yy0yMiAwLTQxLjIgMTUtNDYuNiAzNi40bC02LjMgMjUuMkwzOC44IDUuMXptMTY4IDEzMS43Yy4xLS4zIC4yLS43IC4zLTFMMjE3IDk2SDMzMy43TDMwMS4zIDIxMC44bC05NC41LTc0LjF6TTMyNy4zIDM1My45TDI3Mi45IDMxMSAyNDMuMyA0MTZIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMDkuOGwxNy42LTYyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRleHRXaWR0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAxMjhWOTZIMTkybDAgMTI4SDE3NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNTZsMC0xMjhIMzg0djMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhIMjI0IDQ4QzIxLjUgMzIgMCA1My41IDAgODB2NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMnpNOS40IDM2MS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w2NCA2NGM5LjIgOS4yIDIyLjkgMTEuOSAzNC45IDYuOXMxOS44LTE2LjYgMTkuOC0yOS42VjQxNkgzMjB2MzJjMCAxMi45IDcuOCAyNC42IDE5LjggMjkuNnMyNS43IDIuMiAzNC45LTYuOWw2NC02NGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtNjQtNjRjLTkuMi05LjItMjIuOS0xMS45LTM0LjktNi45cy0xOS44IDE2LjYtMTkuOCAyOS42djMySDEyOFYzMjBjMC0xMi45LTcuOC0yNC42LTE5LjgtMjkuNnMtMjUuNy0yLjItMzQuOSA2LjlsLTY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVybW9tZXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAzODIuMVYyOTMuM2MwLTE0LjkgNS45LTI5LjEgMTYuNC0zOS42bDI3LjMtMjcuMyA1NyA1N2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTU3LTU3IDQxLjQtNDEuNCA1NyA1N2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTU3LTU3IDQxLjQtNDEuNCA1NyA1N2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTU3LTU3IDQ1LjUtNDUuNUMzNTUuMiAxMC45IDM4MS40IDAgNDA4LjggMEM0NjUuOCAwIDUxMiA0Ni4yIDUxMiAxMDMuMmMwIDI3LjQtMTAuOSA1My42LTMwLjIgNzNMMjU4LjMgMzk5LjZjLTEwLjUgMTAuNS0yNC43IDE2LjQtMzkuNiAxNi40SDEyOS45TDQxIDUwNWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw4OS04OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGh1bWJzRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuNCA0NzkuMWMyNi01LjIgNDIuOS0zMC41IDM3LjctNTYuNWwtMi4zLTExLjRjLTUuMy0yNi43LTE1LjEtNTIuMS0yOC44LTc1LjJINDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4YzAtMTguNS0xMC41LTM0LjYtMjUuOS00Mi42QzQ5NyAyMzYuNiA1MDQgMjIzLjEgNTA0IDIwOGMwLTIzLjQtMTYuOC00Mi45LTM4LjktNDcuMWM0LjQtNy4zIDYuOS0xNS44IDYuOS0yNC45YzAtMjEuMy0xMy45LTM5LjQtMzMuMS00NS42Yy43LTMuMyAxLjEtNi44IDEuMS0xMC40YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDI5NC41Yy0xOSAwLTM3LjUgNS42LTUzLjMgMTYuMUwyMDIuNyA3My44QzE3NiA5MS42IDE2MCAxMjEuNiAxNjAgMTUzLjdWMTkydjQ4IDI0LjljMCAyOS4yIDEzLjMgNTYuNyAzNiA3NWw3LjQgNS45YzI2LjUgMjEuMiA0NC42IDUxIDUxLjIgODQuMmwyLjMgMTEuNGM1LjIgMjYgMzAuNSA0Mi45IDU2LjUgMzcuN3pNMzIgMzg0SDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDk2IDAgMTEwLjMgMCAxMjhWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaHVtYnNVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuNCAzMi45YzI2IDUuMiA0Mi45IDMwLjUgMzcuNyA1Ni41bC0yLjMgMTEuNGMtNS4zIDI2LjctMTUuMSA1Mi4xLTI4LjggNzUuMkg0NjRjMjYuNSAwIDQ4IDIxLjUgNDggNDhjMCAxOC41LTEwLjUgMzQuNi0yNS45IDQyLjZDNDk3IDI3NS40IDUwNCAyODguOSA1MDQgMzA0YzAgMjMuNC0xNi44IDQyLjktMzguOSA0Ny4xYzQuNCA3LjMgNi45IDE1LjggNi45IDI0LjljMCAyMS4zLTEzLjkgMzkuNC0zMy4xIDQ1LjZjLjcgMy4zIDEuMSA2LjggMS4xIDEwLjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMjk0LjVjLTE5IDAtMzcuNS01LjYtNTMuMy0xNi4xbC0zOC41LTI1LjdDMTc2IDQyMC40IDE2MCAzOTAuNCAxNjAgMzU4LjNWMzIwIDI3MiAyNDcuMWMwLTI5LjIgMTMuMy01Ni43IDM2LTc1bDcuNC01LjljMjYuNS0yMS4yIDQ0LjYtNTEgNTEuMi04NC4ybDIuMy0xMS40YzUuMi0yNiAzMC41LTQyLjkgNTYuNS0zNy43ek0zMiAxOTJIOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyMjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRodW1idGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMkMzMiAxNC4zIDQ2LjMgMCA2NCAwSDMyMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyOTAuNWwxMS40IDE0OC4yYzM2LjcgMTkuOSA2NS43IDUzLjIgNzkuNSA5NC43bDEgM2MzLjMgOS44IDEuNiAyMC41LTQuNCAyOC44cy0xNS43IDEzLjMtMjYgMTMuM0gzMmMtMTAuMyAwLTE5LjktNC45LTI2LTEzLjNzLTcuNy0xOS4xLTQuNC0yOC44bDEtM2MxMy44LTQxLjUgNDIuOC03NC44IDc5LjUtOTQuN0w5My41IDY0SDY0QzQ2LjMgNjQgMzIgNDkuNyAzMiAzMnpNMTYwIDM4NGg2NHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRpY2tldFNpbXBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0IDI4LjcgNjQgNjR2NjRjMCA4LjgtNy40IDE1LjctMTUuNyAxOC42QzU0MS41IDIxNy4xIDUyOCAyMzUgNTI4IDI1NnMxMy41IDM4LjkgMzIuMyA0NS40YzguMyAyLjkgMTUuNyA5LjggMTUuNyAxOC42djY0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYzMjBjMC04LjggNy40LTE1LjcgMTUuNy0xOC42QzM0LjUgMjk0LjkgNDggMjc3IDQ4IDI1NnMtMTMuNS0zOC45LTMyLjMtNDUuNEM3LjQgMjA3LjcgMCAyMDAuOCAwIDE5MlYxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRpY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOHY2NGMwIDguOCA3LjQgMTUuNyAxNS43IDE4LjZDMzQuNSAyMTcuMSA0OCAyMzUgNDggMjU2cy0xMy41IDM4LjktMzIuMyA0NS40QzcuNCAzMDQuMyAwIDMxMS4yIDAgMzIwdjY0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYzMjBjMC04LjgtNy40LTE1LjctMTUuNy0xOC42QzU0MS41IDI5NC45IDUyOCAyNzcgNTI4IDI1NnMxMy41LTM4LjkgMzIuMy00NS40YzguMy0yLjkgMTUuNy05LjggMTUuNy0xOC42VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEg2NHptNjQgMTEybDAgMTYwYzAgOC44IDcuMiAxNiAxNiAxNkg0MzJjOC44IDAgMTYtNy4yIDE2LTE2VjE3NmMwLTguOC03LjItMTYtMTYtMTZIMTQ0Yy04LjggMC0xNiA3LjItMTYgMTZ6TTk2IDE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0NDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaW1lbGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggNzJhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0zMiA5Ny4zYzI4LjMtMTIuMyA0OC00MC41IDQ4LTczLjNjMC00NC4yLTM1LjgtODAtODAtODBTNDggNTEuOCA0OCA5NmMwIDMyLjggMTkuNyA2MSA0OCA3My4zVjIyNEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgyODh2NTQuN2MtMjguMyAxMi4zLTQ4IDQwLjUtNDggNzMuM2MwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMzIuOC0xOS43LTYxLTQ4LTczLjNWMjg4SDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg1NDRWMTY5LjNjMjguMy0xMi4zIDQ4LTQwLjUgNDgtNzMuM2MwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MGMwIDMyLjggMTkuNyA2MSA0OCA3My4zVjIyNEgxNjBWMTY5LjN6TTQ4OCA5NmEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwek0zMjAgMzkyYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9nZ2xlT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxMjhjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhzLTU3LjMgMTI4LTEyOCAxMjhIMTkyYy03MC43IDAtMTI4LTU3LjMtMTI4LTEyOHM1Ny4zLTEyOCAxMjgtMTI4SDM4NHpNNTc2IDI1NmMwLTEwNi04Ni0xOTItMTkyLTE5MkgxOTJDODYgNjQgMCAxNTAgMCAyNTZTODYgNDQ4IDE5MiA0NDhIMzg0YzEwNiAwIDE5Mi04NiAxOTItMTkyek0xOTIgMzUyYTk2IDk2IDAgMSAwIDAtMTkyIDk2IDk2IDAgMSAwIDAgMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2dnbGVPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNjRDODYgNjQgMCAxNTAgMCAyNTZTODYgNDQ4IDE5MiA0NDhIMzg0YzEwNiAwIDE5Mi04NiAxOTItMTkycy04Ni0xOTItMTkyLTE5MkgxOTJ6bTE5MiA5NmE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9pbGV0UGFwZXJTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43bC0xMDkuNy04NkM1NjkuOSAzNzQgNjA4IDI5MS45IDYwOCAxOTJDNjA4IDg2IDU2NSAwIDUxMiAwcy05NiA4Ni05NiAxOTJjMCA0OS4xIDkuMiA5My45IDI0LjQgMTI3LjlsLTU5LTQ2LjJjMS42LTI0LjggMi42LTUyIDIuNi04MS42YzAtNjUuNSAxMy4yLTE0Mi40IDYwLjItMTkySDE2MGMtMjQuOCAwLTQ3LjQgMTguOC02NC40IDQ5LjZMMzguOCA1LjF6TTM2Ny4zIDM4NS40TDY2LjUgMTQ4LjRDNjQuOSAxNjIuNCA2NCAxNzcgNjQgMTkyYzAgMTAxLjUtMTEuNyAxNzAuOC0yMyAyMTMuOWMtNS4xIDE5LjQtMTAuNyAzOS45LTIwLjUgNTcuN2MtNS45IDkuOS02LjEgMjIuMS0uNCAzMi4yUzM2LjUgNTEyIDQ4IDUxMkgyODUuOWMyMi4zIDAgNDUuNC0xMi4xIDU1LjQtMzYuMWM3LjQtMTcuNyAxNy41LTQ3LjIgMjYtOTAuNnpNNTQ0IDE5MmMwIDM1LjMtMTQuMyA2NC0zMiA2NHMtMzItMjguNy0zMi02NHMxNC4zLTY0IDMyLTY0czMyIDI4LjcgMzIgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvaWxldFBhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0NC4yIDBDMzk3LjIgNDkuNiAzODQgMTI2LjUgMzg0IDE5MmMwIDE1OC44LTI3LjMgMjQ3LTQyLjcgMjgzLjljLTEwIDI0LTMzLjIgMzYuMS01NS40IDM2LjFINDhjLTExLjUgMC0yMi4yLTYuMi0yNy44LTE2LjJzLTUuNi0yMi4zIC40LTMyLjJjOS44LTE3LjcgMTUuNC0zOC4yIDIwLjUtNTcuN0M1Mi4zIDM2Mi44IDY0IDI5My41IDY0IDE5MkM2NCA4NiAxMDcgMCAxNjAgMEg0NDQuMnpNNTEyIDM4NGMtNTMgMC05Ni04Ni05Ni0xOTJTNDU5IDAgNTEyIDBzOTYgODYgOTYgMTkycy00MyAxOTItOTYgMTkyem0wLTEyOGMxNy43IDAgMzItMjguNyAzMi02NHMtMTQuMy02NC0zMi02NHMtMzIgMjguNy0zMiA2NHMxNC4zIDY0IDMyIDY0ek0xNDQgMjA4YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bTY0IDBhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptNDggMTZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem04MC0xNmExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2lsZXRQb3J0YWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyVjY0SDMyMFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDAgMCAxNC4zIDAgMzJ6TTI0IDk2SDB2MjRWNDg4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjR2LThIMjcydjhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYxMjAgOTZIMjk2IDI0ek0yNTYgMjQwdjY0YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI0MGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2lsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgMEMxMC43IDAgMCAxMC43IDAgMjRTMTAuNyA0OCAyNCA0OGg4VjE5Ni45Yy0xLjkgMS40LTMuOCAyLjktNS42IDQuNEMxMC45IDIxNC41IDAgMjMyLjkgMCAyNTZjMCA0Ni45IDE0LjMgODQuMSAzNyAxMTIuNWMxNC4yIDE3LjcgMzEuMSAzMS4zIDQ4LjUgNDEuOEw2NS42IDQ2OS45Yy0zLjMgOS44LTEuNiAyMC41IDQuNCAyOC44czE1LjcgMTMuMyAyNiAxMy4zSDM1MmMxMC4zIDAgMTkuOS00LjkgMjYtMTMuM3M3LjctMTkuMSA0LjQtMjguOGwtMTkuOC01OS41YzE3LjQtMTAuNSAzNC4zLTI0LjEgNDguNS00MS44YzIyLjctMjguNCAzNy02NS41IDM3LTExMi41YzAtMjMuMS0xMC45LTQxLjUtMjYuNC01NC42Yy0xLjgtMS41LTMuNy0zLTUuNi00LjRWNDhoOGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyNHpNMzg0IDI1Ni4zYzAgMS0uMyAyLjYtMy44IDUuNmMtNC44IDQuMS0xNCA5LTI5LjMgMTMuNEMzMjAuNSAyODQgMjc2LjEgMjg4IDIyNCAyODhzLTk2LjUtNC0xMjYuOS0xMi44Yy0xNS4zLTQuNC0yNC41LTkuMy0yOS4zLTEzLjRjLTMuNS0zLTMuOC00LjYtMy44LTUuNmwwLS4zIDAtLjFjMC0xIDAtMi41IDMuOC01LjhjNC44LTQuMSAxNC05IDI5LjMtMTMuNEMxMjcuNSAyMjggMTcxLjkgMjI0IDIyNCAyMjRzOTYuNSA0IDEyNi45IDEyLjhjMTUuMyA0LjQgMjQuNSA5LjMgMjkuMyAxMy40YzMuOCAzLjIgMy44IDQuOCAzLjggNS44bDAgLjEgMCAuM3pNMzI4LjIgMzg0bC0uMiAuNSAwLS41aC4yek0xMTIgNjRoMzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2lsZXRzUG9ydGFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMEgyMjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRIMFYzMkMwIDE0LjMgMTQuMyAwIDMyIDB6TTAgOTZIMjQgMjMyaDI0djI0VjQ4OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNHYtOEg0OHY4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjEyMCA5NnpNMTkyIDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNnpNMzUyIDBINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY0SDMyMFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMzIwIDk2aDI0SDU1MmgyNHYyNFY0ODhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjR2LThIMzY4djhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMTIwIDk2ek01MTIgMjI0Yy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb29sYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiA4OGwwIDQwIDE2MCAwIDAtNDBjMC00LjQtMy42LTgtOC04TDE4NCA4MGMtNC40IDAtOCAzLjYtOCA4em0tNDggNDBsMC00MGMwLTMwLjkgMjUuMS01NiA1Ni01NmwxNDQgMGMzMC45IDAgNTYgMjUuMSA1NiA1NmwwIDQwIDI4LjEgMGMxMi43IDAgMjQuOSA1LjEgMzMuOSAxNC4xbDUxLjkgNTEuOWM5IDkgMTQuMSAyMS4yIDE0LjEgMzMuOWwwIDkyLjEtMTI4IDAgMC0zMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDMyLTEyOCAwIDAtMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAzMkwwIDMyMGwwLTkyLjFjMC0xMi43IDUuMS0yNC45IDE0LjEtMzMuOWw1MS45LTUxLjljOS05IDIxLjItMTQuMSAzMy45LTE0LjFsMjguMSAwek0wIDQxNmwwLTY0IDEyOCAwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMTI4IDBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwxMjggMCAwIDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvb3RoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni4xIDUyLjFDMTY5LjMgMzkuMSAxNDguNyAzMiAxMjcuNSAzMkM3NC43IDMyIDMyIDc0LjcgMzIgMTI3LjV2Ni4yYzAgMTUuOCAzLjcgMzEuMyAxMC43IDQ1LjVsMjMuNSA0Ny4xYzQuNSA4LjkgNy42IDE4LjQgOS40IDI4LjJsMzYuNyAyMDUuOGMyIDExLjIgMTEuNiAxOS40IDIyLjkgMTkuOHMyMS40LTcuNCAyNC0xOC40bDI4LjktMTIxLjNDMTkyLjIgMzIzLjcgMjA3IDMxMiAyMjQgMzEyczMxLjggMTEuNyAzNS44IDI4LjNsMjguOSAxMjEuM2MyLjYgMTEuMSAxMi43IDE4LjggMjQgMTguNHMyMC45LTguNiAyMi45LTE5LjhsMzYuNy0yMDUuOGMxLjgtOS44IDQuOS0xOS4zIDkuNC0yOC4ybDIzLjUtNDcuMWM3LjEtMTQuMSAxMC43LTI5LjcgMTAuNy00NS41di0yLjFjMC01NS00NC42LTk5LjYtOTkuNi05OS42Yy0yNC4xIDAtNDcuNCA4LjgtNjUuNiAyNC42bC0zLjIgMi44IDE5LjUgMTUuMmM3IDUuNCA4LjIgMTUuNSAyLjggMjIuNXMtMTUuNSA4LjItMjIuNSAyLjhsLTI0LjQtMTktMzctMjguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9yaWlHYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgODBjMCAyNi41IDIxLjUgNDggNDggNDhINjR2NjRoNjRWMTI4aDk2djY0aDY0VjEyOGg5NnY2NGg2NFYxMjhoMTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMuNEM1MTIgNiA1MDYgMCA0OTguNiAwYy0xLjcgMC0zLjQgLjMtNSAxbC00OSAxOS42QzQyNS43IDI4LjEgNDA1LjUgMzIgMzg1LjIgMzJIMTI2LjhjLTIwLjQgMC00MC41LTMuOS01OS40LTExLjRMMTguNCAxYy0xLjYtLjYtMy4zLTEtNS0xQzYgMCAwIDYgMCAxMy40Vjgwek02NCAyODhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjg4SDM4NFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyODhoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvcm5hZG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMlY0NS42QzAgNjIuNyAxLjcgNzkuNiA1IDk2SDM1Ny44YzMuMi02LjkgNy41LTEzLjMgMTMtMTguOGwzOC42LTM4LjZjNC4yLTQuMiA2LjYtMTAgNi42LTE2QzQxNiAxMC4xIDQwNS45IDAgMzkzLjQgMEgzMkMxNC4zIDAgMCAxNC4zIDAgMzJ6bTM1Mi4yIDk2SDEzLjZjMTIuMiAzNS45IDMyLjMgNjguNyA1OC44IDk2SDQxMmwtNDcuMi02Mi45Yy03LjMtOS43LTExLjYtMjEuMi0xMi42LTMzLjF6bS0yMjYgMTM4LjJsMTE2LjQgNjguNWM4LjIgNC44IDE1LjggMTAuNyAyMi41IDE3LjNINDQ1YzItOS44IDMtMTkuOSAzLTMwLjFjMC0yMy01LjMtNDUuNS0xNS4zLTY1LjlIMTEwLjJjNS4yIDMuNiAxMC41IDcgMTYgMTAuMnpNMjg4IDM4NGMxMC4zIDIxLjQgMTMuOCA0NS41IDkuOSA2OWwtNS45IDM1LjdjLTIgMTIuMiA3LjQgMjMuNCAxOS44IDIzLjRjNS4zIDAgMTAuNC0yLjEgMTQuMi01LjlsNzguMi03OC4yYzEyLjgtMTIuOCAyMy4xLTI3LjcgMzAuNC00My45SDI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG93ZXJCcm9hZGNhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAuMyA0NEM2OS44IDY5LjkgNjQgOTguMiA2NCAxMjhzNS44IDU4LjEgMTYuMyA4NGM2LjYgMTYuNC0xLjMgMzUtMTcuNyA0MS43cy0zNS0xLjMtNDEuNy0xNy43QzcuNCAyMDIuNiAwIDE2Ni4xIDAgMTI4UzcuNCA1My40IDIwLjkgMjBDMjcuNiAzLjYgNDYuMi00LjMgNjIuNiAyLjNTODYuOSAyNy42IDgwLjMgNDR6TTU1NS4xIDIwQzU2OC42IDUzLjQgNTc2IDg5LjkgNTc2IDEyOHMtNy40IDc0LjYtMjAuOSAxMDhjLTYuNiAxNi40LTI1LjMgMjQuMy00MS43IDE3LjdTNDg5LjEgMjI4LjQgNDk1LjcgMjEyYzEwLjUtMjUuOSAxNi4zLTU0LjIgMTYuMy04NHMtNS44LTU4LjEtMTYuMy04NEM0ODkuMSAyNy42IDQ5NyA5IDUxMy40IDIuM3MzNSAxLjMgNDEuNyAxNy43ek0zNTIgMTI4YzAgMjMuNy0xMi45IDQ0LjQtMzIgNTUuNFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTgzLjRjLTE5LjEtMTEuMS0zMi0zMS43LTMyLTU1LjRjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHpNMTcwLjYgNzYuOEMxNjMuOCA5Mi40IDE2MCAxMDkuNyAxNjAgMTI4czMuOCAzNS42IDEwLjYgNTEuMmM3LjEgMTYuMi0uMyAzNS4xLTE2LjUgNDIuMXMtMzUuMS0uMy00Mi4xLTE2LjVjLTEwLjMtMjMuNi0xNi00OS42LTE2LTc2LjhzNS43LTUzLjIgMTYtNzYuOGM3LjEtMTYuMiAyNS45LTIzLjYgNDIuMS0xNi41czIzLjYgMjUuOSAxNi41IDQyLjF6TTQ2NCA1MS4yYzEwLjMgMjMuNiAxNiA0OS42IDE2IDc2LjhzLTUuNyA1My4yLTE2IDc2LjhjLTcuMSAxNi4yLTI1LjkgMjMuNi00Mi4xIDE2LjVzLTIzLjYtMjUuOS0xNi41LTQyLjFjNi44LTE1LjYgMTAuNi0zMi45IDEwLjYtNTEuMnMtMy44LTM1LjYtMTAuNi01MS4yYy03LjEtMTYuMiAuMy0zNS4xIDE2LjUtNDIuMXMzNS4xIC4zIDQyLjEgMTYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG93ZXJDZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyLjYgMi4zQzQ2LjItNC4zIDI3LjYgMy42IDIwLjkgMjBDNy40IDUzLjQgMCA4OS45IDAgMTI4czcuNCA3NC42IDIwLjkgMTA4YzYuNiAxNi40IDI1LjMgMjQuMyA0MS43IDE3LjdTODYuOSAyMjguNCA4MC4zIDIxMkM2OS44IDE4Ni4xIDY0IDE1Ny44IDY0IDEyOHM1LjgtNTguMSAxNi4zLTg0Qzg2LjkgMjcuNiA3OSA5IDYyLjYgMi4zem00NTAuOCAwQzQ5NyA5IDQ4OS4xIDI3LjYgNDk1LjcgNDRDNTA2LjIgNjkuOSA1MTIgOTguMiA1MTIgMTI4cy01LjggNTguMS0xNi4zIDg0Yy02LjYgMTYuNCAxLjMgMzUgMTcuNyA0MS43czM1LTEuMyA0MS43LTE3LjdjMTMuNS0zMy40IDIwLjktNjkuOSAyMC45LTEwOHMtNy40LTc0LjYtMjAuOS0xMDhDNTQ4LjQgMy42IDUyOS44LTQuMyA1MTMuNCAyLjN6TTM0MC4xIDE2NS4yYzcuNS0xMC41IDExLjktMjMuMyAxMS45LTM3LjJjMC0zNS4zLTI4LjctNjQtNjQtNjRzLTY0IDI4LjctNjQgNjRjMCAxMy45IDQuNCAyNi43IDExLjkgMzcuMkw5OC45IDQ2Ni44Yy03LjMgMTYuMS0uMiAzNS4xIDE1LjkgNDIuNHMzNS4xIC4yIDQyLjQtMTUuOUwxNzcuNyA0NDhIMzk4LjNsMjAuNiA0NS4yYzcuMyAxNi4xIDI2LjMgMjMuMiA0Mi40IDE1LjlzMjMuMi0yNi4zIDE1LjktNDIuNEwzNDAuMSAxNjUuMnpNMzY5LjIgMzg0SDIwNi44bDE0LjUtMzJIMzU0LjdsMTQuNSAzMnpNMjg4IDIwNS4zTDMyNS42IDI4OEgyNTAuNEwyODggMjA1LjN6TTE2My4zIDczLjZjNS4zLTEyLjEtLjItMjYuMy0xMi40LTMxLjZzLTI2LjMgLjItMzEuNiAxMi40QzEwOS41IDc3IDEwNCAxMDEuOSAxMDQgMTI4czUuNSA1MSAxNS4zIDczLjZjNS4zIDEyLjEgMTkuNSAxNy43IDMxLjYgMTIuNHMxNy43LTE5LjUgMTIuNC0zMS42QzE1NiAxNjUuOCAxNTIgMTQ3LjQgMTUyIDEyOHM0LTM3LjggMTEuMy01NC40ek00NTYuNyA1NC40Yy01LjMtMTIuMS0xOS41LTE3LjctMzEuNi0xMi40cy0xNy43IDE5LjUtMTIuNCAzMS42QzQyMCA5MC4yIDQyNCAxMDguNiA0MjQgMTI4cy00IDM3LjgtMTEuMyA1NC40Yy01LjMgMTIuMSAuMiAyNi4zIDEyLjQgMzEuNnMyNi4zLS4yIDMxLjYtMTIuNEM0NjYuNSAxNzkgNDcyIDE1NC4xIDQ3MiAxMjhzLTUuNS01MS0xNS4zLTczLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvd2VyT2JzZXJ2YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQxLjcgMy40YzktNC41IDE5LjYtNC41IDI4LjYgMGwxNjAgODBjMTUuOCA3LjkgMjIuMiAyNy4xIDE0LjMgNDIuOUM0MzkgMTM3LjUgNDI3LjcgMTQ0IDQxNiAxNDR2ODBjMCAxNy43LTE0LjMgMzItMzIgMzJoLTQuOWwzMiAxOTJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM4NC41Yy0uNCAwLS44IDAtMS4xIDBIMTI4LjZjLS40IDAtLjggMC0xLjEgMEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg2OC45bDMyLTE5MkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE0NGMtMTEuNyAwLTIzLTYuNS0yOC42LTE3LjdjLTcuOS0xNS44LTEuNS0zNSAxNC4zLTQyLjlsMTYwLTgwek0zMTQuNSA0NDhMMjU2IDM5OS4yIDE5Ny41IDQ0OGgxMTd6TTE5Ny44IDI1NmwtNC43IDI4LjNMMjU2IDMzNi44bDYyLjktNTIuNUwzMTQuMiAyNTZIMTk3Ljh6bS0xMy45IDgzLjJsLTExLjIgNjdMMjE4LjUgMzY4bC0zNC42LTI4Ljh6TTI5My41IDM2OGw0NS44IDM4LjEtMTEuMi02N0wyOTMuNSAzNjh6TTE3NiAxMjhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZIMzM2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDE3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhY3RvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA2NGMwLTM1LjMgMjguNy02NCA2NC02NEgyNjYuM2MyNi4yIDAgNDkuNyAxNS45IDU5LjQgNDAuMkwzNzMuNyAxNjBINDgwVjEyNi4yYzAtMjQuOCA1LjgtNDkuMyAxNi45LTcxLjZsMi41LTVjNy45LTE1LjggMjcuMS0yMi4yIDQyLjktMTQuM3MyMi4yIDI3LjEgMTQuMyA0Mi45bC0yLjUgNWMtNi43IDEzLjMtMTAuMSAyOC0xMC4xIDQyLjlWMTYwaDU2YzIyLjEgMCA0MCAxNy45IDQwIDQwdjQ1LjRjMCAxNi41LTguNSAzMS45LTIyLjYgNDAuN2wtNDMuMyAyNy4xYy0xNC4yLTUuOS0yOS44LTkuMi00Ni4xLTkuMmMtMzkuMyAwLTc0LjEgMTguOS05NiA0OEgzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJoLTguMmMtMS43IDQuOC0zLjcgOS41LTUuOCAxNC4xbDUuOCA1LjhjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTIyLjYgMjIuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBsLTUuOC01LjhjLTQuNiAyLjItOS4zIDQuMS0xNC4xIDUuOFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnYtOC4yYy00LjgtMS43LTkuNS0zLjctMTQuMS01LjhsLTUuOCA1LjhjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwTDQwLjIgNDQ5LjFjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDUuOC01LjhjLTIuMi00LjYtNC4xLTkuMy01LjgtMTQuMUgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDguMmMxLjctNC44IDMuNy05LjUgNS44LTE0LjFsLTUuOC01LjhjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDIyLjYtMjIuNmM5LTkgMjEuOS0xMS41IDMzLjEtNy42VjE5MiAxNjAgNjR6bTE3MC4zIDBIMTYwdjk2aDMySDMwNC43TDI2Ni4zIDY0ek0xNzYgMjU2YTgwIDgwIDAgMSAwIDAgMTYwIDgwIDgwIDAgMSAwIDAtMTYwek01MjggNDQ4YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMCA2NGMtNDguNiAwLTg4LTM5LjQtODgtODhjMC0yOS44IDE0LjgtNTYuMSAzNy40LTcyYzE0LjMtMTAuMSAzMS44LTE2IDUwLjYtMTZjMi43IDAgNS4zIC4xIDcuOSAuM2M0NC45IDQgODAuMSA0MS43IDgwLjEgODcuN2MwIDQ4LjYtMzkuNCA4OC04OCA4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhZGVtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0NS42IDEwOC44Yy04LjMtMTEtMjIuNy0xNS41LTM1LjctMTEuMlMyODggMTE0LjIgMjg4IDEyOFYzODRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMjRsODYuNCAxMTUuMmM2IDguMSAxNS41IDEyLjggMjUuNiAxMi44czE5LjYtNC43IDI1LjYtMTIuOEw1NzYgMjI0VjM4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjEyOGMwLTEzLjgtOC44LTI2LTIxLjktMzAuNHMtMjcuNSAuMS0zNS43IDExLjJMNDY0IDI2Ni43IDM0NS42IDEwOC44ek0wIDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg5NlYzODRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxNjBoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJDMTQuMyA5NiAwIDExMC4zIDAgMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFmZmljTGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWMzUyYzAgODguNCA3MS42IDE2MCAxNjAgMTYwczE2MC03MS42IDE2MC0xNjBWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTk2IDQxNmE0OCA0OCAwIDEgMSAwLTk2IDQ4IDQ4IDAgMSAxIDAgOTZ6bTQ4LTE3NmE0OCA0OCAwIDEgMSAtOTYgMCA0OCA0OCAwIDEgMSA5NiAwem0tNDgtODBhNDggNDggMCAxIDEgMC05NiA0OCA0OCAwIDEgMSAwIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFpbGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDMyQzIxLjUgMzIgMCA1My41IDAgODBWMzM2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDY1LjFjNy44LTU0LjMgNTQuNC05NiAxMTAuOS05NnMxMDMuMSA0MS43IDExMC45IDk2SDQ4OGg4SDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg1NDRWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTgwIDk2YzguOCAwIDE2IDcuMiAxNiAxNmwwIDEzMS4yYy0xMS40IDUuOS0yMi4yIDEyLjktMzIgMjFWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnptOTYgMTI4Yy01LjQgMC0xMC43IC4yLTE2IC43TDE2MCAxMTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDExMi43Yy01LjMtLjUtMTAuNi0uNy0xNi0uN3ptODAgMTkuMkwyNTYgMTEyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCAxNTIuMmMtOS44LTguMS0yMC42LTE1LjItMzItMjF6TTM2OCA5NmM4LjggMCAxNiA3LjIgMTYgMTZsMCAxOTJjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC0xOTJjMC04LjggNy4yLTE2IDE2LTE2em0xMTIgMTZsMCAxOTJjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC0xOTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpNMTc2IDQ4MGE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHptMC0xMTJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFpblN1YndheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwQzQzIDAgMCA0MyAwIDk2VjM1MmMwIDQ4IDM1LjIgODcuNyA4MS4xIDk0LjlsLTQ2IDQ2QzI4LjEgNDk5LjkgMzMuMSA1MTIgNDMgNTEySDgyLjdjOC41IDAgMTYuNi0zLjQgMjIuNi05LjRMMTYwIDQ0OEgyODhsNTQuNiA1NC42YzYgNiAxNC4xIDkuNCAyMi42IDkuNEg0MDVjMTAgMCAxNS0xMi4xIDcuOS0xOS4xbC00Ni00NmM0Ni03LjEgODEuMS00Ni45IDgxLjEtOTQuOVY5NmMwLTUzLTQzLTk2LTk2LTk2SDk2ek02NCAxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJoODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjEyOHpNMjcyIDk2aDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDI3MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMyek02NCAzNTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMjg4LTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhaW5UcmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg2LjggNDhjLTEyLjIgMC0yMy42IDUuNS0zMS4yIDE1TDQyLjcgNzlDMzQuNSA4OS4zIDE5LjQgOTEgOSA4Mi43Uy0zIDU5LjQgNS4zIDQ5TDE4IDMzQzM0LjcgMTIuMiA2MCAwIDg2LjggMEgzNjEuMmMyNi43IDAgNTIgMTIuMiA2OC43IDMzbDEyLjggMTZjOC4zIDEwLjQgNi42IDI1LjUtMy44IDMzLjdzLTI1LjUgNi42LTMzLjctMy43TDM5Mi41IDYzYy03LjYtOS41LTE5LjEtMTUtMzEuMi0xNUgyNDhWOTZoNDBjNTMgMCA5NiA0MyA5NiA5NlYzNTJjMCAzMC42LTE0LjMgNTcuOC0zNi42IDc1LjRsNjUuNSA2NS41YzcuMSA3LjEgMi4xIDE5LjEtNy45IDE5LjFIMzY1LjNjLTguNSAwLTE2LjYtMy40LTIyLjYtOS40TDI4OCA0NDhIMTYwbC01NC42IDU0LjZjLTYgNi0xNC4xIDkuNC0yMi42IDkuNEg0M2MtMTAgMC0xNS0xMi4xLTcuOS0xOS4xbDY1LjUtNjUuNUM3OC4zIDQwOS44IDY0IDM4Mi42IDY0IDM1MlYxOTJjMC01MyA0My05NiA5Ni05Nmg0MFY0OEg4Ni44ek0xNjAgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDE2MHptMzIgMTkyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTk2IDMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMEM0MyAwIDAgNDMgMCA5NlYzNTJjMCA0OCAzNS4yIDg3LjcgODEuMSA5NC45bC00NiA0NkMyOC4xIDQ5OS45IDMzLjEgNTEyIDQzIDUxMkg4Mi43YzguNSAwIDE2LjYtMy40IDIyLjYtOS40TDE2MCA0NDhIMjg4bDU0LjYgNTQuNmM2IDYgMTQuMSA5LjQgMjIuNiA5LjRINDA1YzEwIDAgMTUtMTIuMSA3LjktMTkuMWwtNDYtNDZjNDYtNy4xIDgxLjEtNDYuOSA4MS4xLTk0LjlWOTZjMC01My00My05Ni05Ni05Nkg5NnpNNjQgOTZjMC0xNy43IDE0LjMtMzIgMzItMzJIMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY5NnpNMjI0IDI4OGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYW5zZ2VuZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAwYzYuNSAwIDEyLjMgMy45IDE0LjggOS45czEuMSAxMi45LTMuNSAxNy40bC0zMSAzMUwxMTIgNzguMWw3LTdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC03IDcgMTUuMiAxNS4yQzE4Ny43IDEwNy42IDIyMC41IDk2IDI1NiA5NnM2OC4zIDExLjYgOTQuOSAzMS4ybDY4LjgtNjguOC0zMS0zMWMtNC42LTQuNi01LjktMTEuNS0zLjUtMTcuNHM4LjMtOS45IDE0LjgtOS45aDk2YzguOCAwIDE2IDcuMiAxNiAxNnY5NmMwIDYuNS0zLjkgMTIuMy05LjkgMTQuOHMtMTIuOSAxLjEtMTcuNC0zLjVsLTMxLTMxLTY4LjggNjguOEM0MDQuNCAxODcuNyA0MTYgMjIwLjUgNDE2IDI1NmMwIDgwLjItNTkgMTQ2LjYtMTM2IDE1OC4yVjQzMmgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyODB2OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNHYtOEgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoMTZWNDE0LjJDMTU1IDQwMi42IDk2IDMzNi4yIDk2IDI1NmMwLTM1LjUgMTEuNi02OC4zIDMxLjItOTQuOUwxMTIgMTQ1LjlsLTcgN2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw3LTdMNTguMyA5Mi4zbC0zMSAzMWMtNC42IDQuNi0xMS41IDUuOS0xNy40IDMuNVMwIDExOC41IDAgMTEyVjE2QzAgNy4yIDcuMiAwIDE2IDBoOTZ6TTM1MiAyNTZhOTYgOTYgMCAxIDAgLTE5MiAwIDk2IDk2IDAgMSAwIDE5MiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFzaEFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYzLjggMEgyODQuMmMxMi4xIDAgMjMuMiA2LjggMjguNiAxNy43TDMyMCAzMmg5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0UzE0LjMgMzIgMzIgMzJoOTZsNy4yLTE0LjNDMTQwLjYgNi44IDE1MS43IDAgMTYzLjggMHpNMzIgMTI4SDQxNkwzOTQuOCA0NjdjLTEuNiAyNS4zLTIyLjYgNDUtNDcuOSA0NUgxMDEuMWMtMjUuMyAwLTQ2LjMtMTkuNy00Ny45LTQ1TDMyIDEyOHptMTkyIDY0Yy02LjQgMC0xMi41IDIuNS0xNyA3bC04MCA4MGMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDM5LTM5VjQwOGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI3My45bDM5IDM5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtODAtODBjLTQuNS00LjUtMTAuNi03LTE3LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYXNoQ2FuQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjMuOCAwSDI4NC4yYzEyLjEgMCAyMy4yIDYuOCAyOC42IDE3LjdMMzIwIDMyaDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyQzE0LjMgOTYgMCA4MS43IDAgNjRTMTQuMyAzMiAzMiAzMmg5Nmw3LjItMTQuM0MxNDAuNiA2LjggMTUxLjcgMCAxNjMuOCAwek0zMiAxMjhINDE2VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg5NmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4em0xOTIgNjRjLTYuNCAwLTEyLjUgMi41LTE3IDdsLTgwIDgwYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsMzktMzlWNDA4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjczLjlsMzkgMzljOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC04MC04MGMtNC41LTQuNS0xMC42LTctMTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhc2hDYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTM1LjIgMTcuN0MxNDAuNiA2LjggMTUxLjcgMCAxNjMuOCAwSDI4NC4yYzEyLjEgMCAyMy4yIDYuOCAyOC42IDE3LjdMMzIwIDMyaDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyQzE0LjMgOTYgMCA4MS43IDAgNjRTMTQuMyAzMiAzMiAzMmg5Nmw3LjItMTQuM3pNMzIgMTI4SDQxNlY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIOTZjLTM1LjMgMC02NC0yOC43LTY0LTY0VjEyOHptOTYgNjRjLTguOCAwLTE2IDcuMi0xNiAxNlY0MzJjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyMDhjMC04LjgtNy4yLTE2LTE2LTE2em05NiAwYy04LjggMC0xNiA3LjItMTYgMTZWNDMyYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNnptOTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2VjQzMmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjIwOGMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzNS4yIDE3LjdMMTI4IDMySDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRTMTQuMyA5NiAzMiA5Nkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwbC03LjItMTQuM0MzMDcuNCA2LjggMjk2LjMgMCAyODQuMiAwSDE2My44Yy0xMi4xIDAtMjMuMiA2LjgtMjguNiAxNy43ek00MTYgMTI4SDMyTDUzLjIgNDY3YzEuNiAyNS4zIDIyLjYgNDUgNDcuOSA0NUgzNDYuOWMyNS4zIDAgNDYuMy0xOS43IDQ3LjktNDVMNDE2IDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJlZUNpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDk2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjE5Mmg0MFYxMjBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY3MmgyNGMyNi41IDAgNDggMjEuNSA0OCA0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDMyIDMzNmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDh6bTY0IDMydjMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWODBjMC04LjgtNy4yLTE2LTE2LTE2SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNiA4MGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTc2YzAtOC44LTcuMi0xNi0xNi0xNkgzNjh6TTM1MiAyNzJ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNzYtMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI3MmMwLTguOC03LjItMTYtMTYtMTZINTI4ek01MTIgMzY4djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNkg1MjhjLTguOCAwLTE2IDcuMi0xNiAxNnpNMjI0IDE2MGMwIDYtMSAxMS0yIDE2YzIwIDE0IDM0IDM4IDM0IDY0YzAgNDUtMzYgODAtODAgODBIMTYwVjQ4MGMwIDE4LTE1IDMyLTMyIDMyYy0xOCAwLTMyLTE0LTMyLTMyVjMyMEg4MGMtNDUgMC04MC0zNS04MC04MGMwLTI2IDEzLTUwIDMzLTY0Yy0xLTUtMS0xMC0xLTE2YzAtNTMgNDItOTYgOTYtOTZjNTMgMCA5NiA0MyA5NiA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTAuNiA1LjlMNjIgMTY5LjRjLTMuOSA0LjItNiA5LjgtNiAxNS41QzU2IDE5Ny43IDY2LjMgMjA4IDc5LjEgMjA4SDEwNEwzMC42IDI4MS40Yy00LjIgNC4yLTYuNiAxMC02LjYgMTZDMjQgMzA5LjkgMzQuMSAzMjAgNDYuNiAzMjBIODBMNS40IDQwOS41QzEuOSA0MTMuNyAwIDQxOSAwIDQyNC41YzAgMTMgMTAuNSAyMy41IDIzLjUgMjMuNUgxOTJ2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0NDhINDI0LjVjMTMgMCAyMy41LTEwLjUgMjMuNS0yMy41YzAtNS41LTEuOS0xMC44LTUuNC0xNUwzNjggMzIwaDMzLjRjMTIuNSAwIDIyLjYtMTAuMSAyMi42LTIyLjZjMC02LTIuNC0xMS44LTYuNi0xNkwzNDQgMjA4aDI0LjljMTIuNyAwIDIzLjEtMTAuMyAyMy4xLTIzLjFjMC01LjctMi4xLTExLjMtNi0xNS41TDIzNy40IDUuOUMyMzQgMi4xIDIyOS4xIDAgMjI0IDBzLTEwIDIuMS0xMy40IDUuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJpYW5nbGVFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJjMTQuMiAwIDI3LjMgNy41IDM0LjUgMTkuOGwyMTYgMzY4YzcuMyAxMi40IDcuMyAyNy43IC4yIDQwLjFTNDg2LjMgNDgwIDQ3MiA0ODBINDBjLTE0LjMgMC0yNy42LTcuNy0zNC43LTIwLjFzLTctMjcuOCAuMi00MC4xbDIxNi0zNjhDMjI4LjcgMzkuNSAyNDEuOCAzMiAyNTYgMzJ6bTAgMTI4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNFYyOTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYxODRjMC0xMy4zLTEwLjctMjQtMjQtMjR6bTMyIDIyNGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcm9waHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDBIMTc2Yy0yNi41IDAtNDguMSAyMS44LTQ3LjEgNDguMmMuMiA1LjMgLjQgMTAuNiAuNyAxNS44SDI0QzEwLjcgNjQgMCA3NC43IDAgODhjMCA5Mi42IDMzLjUgMTU3IDc4LjUgMjAwLjdjNDQuMyA0My4xIDk4LjMgNjQuOCAxMzguMSA3NS44YzIzLjQgNi41IDM5LjQgMjYgMzkuNCA0NS42YzAgMjAuOS0xNyAzNy45LTM3LjkgMzcuOUgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMzg0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM1Ny45QzMzNyA0NDggMzIwIDQzMSAzMjAgNDEwLjFjMC0xOS42IDE1LjktMzkuMiAzOS40LTQ1LjZjMzkuOS0xMSA5My45LTMyLjcgMTM4LjItNzUuOEM1NDIuNSAyNDUgNTc2IDE4MC42IDU3NiA4OGMwLTEzLjMtMTAuNy0yNC0yNC0yNEg0NDYuNGMuMy01LjIgLjUtMTAuNCAuNy0xNS44QzQ0OC4xIDIxLjggNDI2LjUgMCA0MDAgMHpNNDguOSAxMTJoODQuNGM5LjEgOTAuMSAyOS4yIDE1MC4zIDUxLjkgMTkwLjZjLTI0LjktMTEtNTAuOC0yNi41LTczLjItNDguM2MtMzItMzEuMS01OC03Ni02My0xNDIuM3pNNDY0LjEgMjU0LjNjLTIyLjQgMjEuOC00OC4zIDM3LjMtNzMuMiA0OC4zYzIyLjctNDAuMyA0Mi44LTEwMC41IDUxLjktMTkwLjZoODQuNGMtNS4xIDY2LjMtMzEuMSAxMTEuMi02MyAxNDIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJvd2VsQnJpY2tzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MC44IDQuOEMyNTAuMyAxMC42IDI1NiAyMC45IDI1NiAzMnY3Mmg4OWMzLjYtMTMuOCAxNi4xLTI0IDMxLTI0aDg4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4SDM3NmMtMTQuOSAwLTI3LjQtMTAuMi0zMS0yNEgyNTZ2NzJjMCAxMS4xLTUuNyAyMS40LTE1LjIgMjcuMnMtMjEuMiA2LjQtMzEuMSAxLjRsLTE5Mi05NkM2LjggMTUxLjIgMCAxNDAuMSAwIDEyOHM2LjgtMjMuMiAxNy43LTI4LjZsMTkyLTk2YzkuOS01IDIxLjctNC40IDMxLjEgMS40ek0yODggMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjI1NnpNMzIgMzg0aDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTE5MiAwSDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgyMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJvd2VsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0My45IDIxMy40TDI0NS4zIDMxMmw2NS40IDY1LjRjNy45IDcuOSAxMS4xIDE5LjQgOC40IDMwLjNzLTEwLjggMTkuNi0yMS41IDIyLjlsLTI1NiA4MGMtMTEuNCAzLjUtMjMuOCAuNS0zMi4yLTcuOVMtMi4xIDQ4MS44IDEuNSA0NzAuNWw4MC0yNTZjMy4zLTEwLjcgMTItMTguOSAyMi45LTIxLjVzMjIuNCAuNSAzMC4zIDguNEwyMDAgMjY2LjdsOTguNi05OC42Yy0xNC4zLTE0LjYtMTQuMi0zOCAuMy01Mi41bDk1LjQtOTUuNGMyNi45LTI2LjkgNzAuNS0yNi45IDk3LjUgMHMyNi45IDcwLjUgMCA5Ny41bC05NS40IDk1LjRjLTE0LjUgMTQuNS0zNy45IDE0LjYtNTIuNSAuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJ1Y2tBcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwSDM2OGMyNi41IDAgNDggMjEuNSA0OCA0OFY5Nmg1MC43YzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43TDU4OS4zIDE5MmMxMiAxMiAxOC43IDI4LjMgMTguNyA0NS4zVjI1NnYzMiA2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg1NzZjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZIMjU2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY0OHpNNDE2IDI1Nkg1NDRWMjM3LjNMNDY2LjcgMTYwSDQxNnY5NnpNMTYwIDQ2NGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTM2OC00OGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0yNTcgOTVjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsMzkgMzlIOTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMjYyLjFsLTM5IDM5Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsODAtODBjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlMMjU3IDk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja0Ryb3BsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0OEMwIDIxLjUgMjEuNSAwIDQ4IDBIMzY4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4Vjk2aDUwLjdjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdMNTg5LjMgMTkyYzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNWMjU2djMyIDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDU3NmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05NkgyNTZjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQ4ek00MTYgMjU2SDU0NFYyMzcuM0w0NjYuNyAxNjBINDE2djk2ek0xNjAgNDY0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptMzY4LTQ4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTIwOCAyNzJjMzkuOCAwIDcyLTI5LjYgNzItNjZjMC0yNy0zOS40LTgyLjktNTkuOS0xMTAuM2MtNi4xLTguMi0xOC4xLTguMi0yNC4yIDBDMTc1LjQgMTIzIDEzNiAxNzkgMTM2IDIwNmMwIDM2LjUgMzIuMiA2NiA3MiA2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJ1Y2tGYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAwQzg1LjUgMCA2NCAyMS41IDY0IDQ4Vjk2SDE2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDY0IDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg2NCA0OGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg2NCAyNDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZINjQgMTZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZINjQgMjA4YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDY0VjQxNmMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2SDM4NGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjI4OCAyNTYgMjM3LjNjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMNTEyIDExNC43Yy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43SDQxNlY0OGMwLTI2LjUtMjEuNS00OC00OC00OEgxMTJ6TTU0NCAyMzcuM1YyNTZINDE2VjE2MGg1MC43TDU0NCAyMzcuM3pNMTYwIDM2OGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6bTI3MiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja0ZpZWxkVW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzJDNjAuNyAzMiAzMiA2MC43IDMyIDk2djMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnYzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2SDM4NGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjI4OGMwLTM1LjMtMjguNy02NC02NC02NGgtNC4yYy0uNC0xLjEtLjktMi4xLTEuMy0zLjJMNDg1LjcgMTAyYy0xMC4zLTIzLjEtMzMuMi0zOC01OC41LTM4SDM3NS40QzM2NC40IDQ0LjkgMzQzLjcgMzIgMzIwIDMySDk2em0yODggOTZoNDMuMmw0Mi43IDk2SDM4NFYxMjh6TTExMiAzODRhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptMzY4LTQ4YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpNMjUzLjMgMTM1LjFsMzQuNyA1MlYxNDRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY5NmMwIDcuMS00LjYgMTMuMy0xMS40IDE1LjNzLTE0LS42LTE3LjktNi40bC0zNC43LTUyVjI0MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYxNDRjMC03LjEgNC42LTEzLjMgMTEuNC0xNS4zczE0IC42IDE3LjkgNi40ek0xMjggMTQ0djY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2NjRjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrRmllbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgOTZjMC0zNS4zIDI4LjctNjQgNjQtNjRIMzIwYzIzLjcgMCA0NC40IDEyLjkgNTUuNCAzMmg1MS44YzI1LjMgMCA0OC4yIDE0LjkgNTguNSAzOGw1Mi44IDExOC44Yy41IDEuMSAuOSAyLjEgMS4zIDMuMkg1NDRjMzUuMyAwIDY0IDI4LjcgNjQgNjR2MzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINTc2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2SDI1NmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05NkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMlYyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMlY5NnpNMzg0IDIyNGg4NS45bC00Mi43LTk2SDM4NHY5NnpNMTYwIDQzMmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTM2OC00OGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja0Zyb250IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgODBDMCAzNS44IDM1LjggMCA4MCAwSDQzMmM0NC4yIDAgODAgMzUuOCA4MCA4MFYzNjhjMCAyNi4yLTEyLjYgNDkuNC0zMiA2NHY0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0MTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQ0OEgxMjh2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJINjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQzMkMxMi42IDQxNy40IDAgMzk0LjIgMCAzNjhWODB6bTEyOS45IDcyLjJMMTEyIDIyNEg0MDBsLTE3LjktNzEuOEMzNzguNSAxMzggMzY1LjcgMTI4IDM1MSAxMjhIMTYxYy0xNC43IDAtMjcuNSAxMC0zMSAyNC4yek0xMjggMzIwYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTI4OCAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQ4QzAgMjEuNSAyMS41IDAgNDggMEgzNjhjMjYuNSAwIDQ4IDIxLjUgNDggNDhWOTZoNTAuN2MxNyAwIDMzLjMgNi43IDQ1LjMgMTguN0w1ODkuMyAxOTJjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM1YyNTZ2MzIgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINTc2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2SDI1NmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05Nkg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDh6TTQxNiAyNTZINTQ0VjIzNy4zTDQ2Ni43IDE2MEg0MTZ2OTZ6TTE2MCA0NjRhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0zNjgtNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMTc2IDgwdjQ4bC00OCAwYy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTkyaDQ4YzguOCAwIDE2LTcuMiAxNi0xNlYxNDRjMC04LjgtNy4yLTE2LTE2LTE2SDI0MFY4MGMwLTguOC03LjItMTYtMTYtMTZIMTkyYy04LjggMC0xNiA3LjItMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrTW9uc3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggNjR2NjRINDE2TDM2OCA2NEgyODh6TTQxOS4yIDI1LjZMNDk2IDEyOGg4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmMtMjkuMi0zOC45LTc1LjctNjQtMTI4LTY0cy05OC44IDI1LjEtMTI4IDY0SDI4OGMtMjkuMi0zOC45LTc1LjctNjQtMTI4LTY0cy05OC44IDI1LjEtMTI4IDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMkgyMjRWNDhjMC0yNi41IDIxLjUtNDggNDgtNDhoOTZjMjAuMSAwIDM5LjEgOS41IDUxLjIgMjUuNnpNMTUyIDI1NmgxNmMxMi4xIDAgMjIuMSA4LjkgMjMuOCAyMC42YzcuNiAyLjIgMTQuOSA1LjMgMjEuNyA5YzkuNC03IDIyLjgtNi4zIDMxLjMgMi4zbDExLjMgMTEuM2M4LjYgOC42IDkuMyAyMS45IDIuMyAzMS4zYzMuNyA2LjggNi44IDE0LjEgOSAyMS43YzExLjYgMS43IDIwLjYgMTEuNyAyMC42IDIzLjh2MTZjMCAxMi4xLTguOSAyMi4xLTIwLjYgMjMuOGMtMi4yIDcuNi01LjMgMTQuOS05IDIxLjdjNyA5LjQgNi4zIDIyLjgtMi4zIDMxLjNsLTExLjMgMTEuM2MtOC42IDguNi0yMS45IDkuMy0zMS4zIDIuMmMtNi44IDMuNy0xNC4xIDYuOC0yMS43IDlDMTkwLjEgNTAzLjEgMTgwLjEgNTEyIDE2OCA1MTJIMTUyYy0xMi4xIDAtMjIuMS04LjktMjMuOC0yMC42Yy03LjYtMi4yLTE0LjktNS4zLTIxLjctOWMtOS40IDcuMS0yMi44IDYuMy0zMS4zLTIuMkw2My44IDQ2OC45Yy04LjYtOC42LTkuMy0yMS45LTIuMy0zMS4zYy0zLjctNi45LTYuOC0xNC4xLTktMjEuOEM0MC45IDQxNC4xIDMyIDQwNC4xIDMyIDM5MlYzNzZjMC0xMi4xIDguOS0yMi4xIDIwLjYtMjMuOGMyLjItNy42IDUuMy0xNC45IDktMjEuOGMtNy05LjQtNi4zLTIyLjggMi4zLTMxLjNsMTEuMy0xMS4zYzguNi04LjYgMjEuOS05LjMgMzEuMy0yLjNjNi44LTMuNyAxNC4xLTYuOCAyMS43LTljMS43LTExLjYgMTEuNy0yMC42IDIzLjgtMjAuNnptOCAxNzZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek00NDguMiAyNzYuNmMxLjctMTEuNiAxMS43LTIwLjYgMjMuOC0yMC42aDE2YzEyLjEgMCAyMi4xIDguOSAyMy44IDIwLjZjNy42IDIuMiAxNC45IDUuMyAyMS44IDljOS40LTcgMjIuOC02LjMgMzEuMyAyLjNsMTEuMyAxMS4zYzguNiA4LjYgOS4zIDIxLjkgMi4yIDMxLjNjMy43IDYuOCA2LjggMTQuMSA5IDIxLjdjMTEuNiAxLjcgMjAuNiAxMS43IDIwLjYgMjMuOHYxNmMwIDEyLjEtOC45IDIyLjEtMjAuNiAyMy44Yy0yLjIgNy42LTUuMyAxNC45LTkgMjEuN2M3IDkuNCA2LjMgMjIuOC0yLjIgMzEuM2wtMTEuMyAxMS4zYy04LjYgOC42LTIxLjkgOS4zLTMxLjMgMi4yYy02LjkgMy43LTE0LjEgNi44LTIxLjggOUM1MTAuMSA1MDMuMSA1MDAuMSA1MTIgNDg4IDUxMkg0NzJjLTEyLjEgMC0yMi4xLTguOS0yMy44LTIwLjZjLTcuNi0yLjItMTQuOS01LjMtMjEuNy05Yy05LjQgNy4xLTIyLjggNi4zLTMxLjMtMi4ybC0xMS4zLTExLjNjLTguNi04LjYtOS4zLTIxLjktMi4yLTMxLjNjLTMuNy02LjktNi44LTE0LjEtOS0yMS44QzM2MC45IDQxNC4xIDM1MiA0MDQuMSAzNTIgMzkyVjM3NmMwLTEyLjEgOC45LTIyLjEgMjAuNi0yMy44YzIuMi03LjYgNS4zLTE0LjkgOS0yMS44Yy03LTkuNC02LjMtMjIuOCAyLjItMzEuM2wxMS4zLTExLjNjOC42LTguNiAyMS45LTkuMyAzMS4zLTIuM2M2LjgtMy43IDE0LjEtNi44IDIxLjctOXpNNTI4IDM4NGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja01vdmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjMwNHY4MCAxNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MGMyNi4yIDAgNDkuNC0xMi42IDY0LTMyYzE0LjYgMTkuNCAzNy44IDMyIDY0IDMyYzQ0LjIgMCA4MC0zNS44IDgwLTgwYzAtNS41LS42LTEwLjgtMS42LTE2SDQxNmgzMy42Yy0xIDUuMi0xLjYgMTAuNS0xLjYgMTZjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTUuNS0uNi0xMC44LTEuNi0xNkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjg4IDI3MiAyNjEuN2MwLTkuMi0zLjItMTguMi05LTI1LjNsLTU4LjgtNzEuOGMtMTAuNi0xMy0yNi41LTIwLjUtNDMuMy0yMC41SDQ4MFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNNTg1IDI1Nkg0ODBWMTkyaDQ4LjhjMi40IDAgNC43IDEuMSA2LjIgMi45TDU4NSAyNTZ6TTUyOCAzNjhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xNzYgNDAwYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTgwIDM2OGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrUGlja3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OC42IDk2bDc2LjggOTZIMjg4Vjk2aDgwLjZ6TTIyNCA4MFYxOTJINjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY1LjFjLS43IDUuMi0xLjEgMTAuNi0xLjEgMTZjMCA2MS45IDUwLjEgMTEyIDExMiAxMTJzMTEyLTUwLjEgMTEyLTExMmMwLTUuNC0uNC0xMC44LTEuMS0xNmg2Ni4zYy0uNyA1LjItMS4xIDEwLjYtMS4xIDE2YzAgNjEuOSA1MC4xIDExMiAxMTIgMTEyczExMi01MC4xIDExMi0xMTJjMC01LjQtLjQtMTAuOC0xLjEtMTZINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMkg1MjcuNEw0MTguNiA1NmMtMTIuMS0xNS4yLTMwLjUtMjQtNTAtMjRIMjcyYy0yNi41IDAtNDggMjEuNS00OCA0OHptMCAyODhhNDggNDggMCAxIDEgLTk2IDAgNDggNDggMCAxIDEgOTYgMHptMjg4IDBhNDggNDggMCAxIDEgLTk2IDAgNDggNDggMCAxIDEgOTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJ1Y2tQbGFuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDAgMGMtMzAuNiAwLTU2IDU0LjctNTYgODYuMVYxOTIuNUw3LjggMjc0LjNDMi45IDI3Ny4yIDAgMjgyLjQgMCAyODh2NjRjMCA1LjEgMi40IDkuOCA2LjQgMTIuOHM5LjMgMy45IDE0LjEgMi41bDEyMy40LTM3djgxLjJsLTUwIDQwYy0zLjggMy02IDcuNi02IDEyLjV2MzJjMCA1LjEgMi41IDEwIDYuNiAxM3M5LjUgMy44IDE0LjQgMi4yTDIwMCA0ODAuOSAyOTAuNCA1MTFjLTEuNi00LjctMi40LTkuOC0yLjQtMTVWNDYzLjRjLTE4LjItMTAuNS0zMC43LTI5LjctMzEuOS01MS44bC0uMS0uMVY0MDggMzI1LjUgMTg0bDAtMS4xIDAgMFY4Ni4xQzI1NiA1NC43IDIzMS41IDAgMjAwIDB6bTg4IDE3NlY0MDBjMCAyMC45IDEzLjQgMzguNyAzMiA0NS4zVjQ4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFY0NDhINTQ0djQwYzAgMTMuMyAxMC43IDI0IDI0IDI0aDE2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjQ0NS4zYzE4LjYtNi42IDMyLTI0LjQgMzItNDUuM1YxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzM2Yy0yNi41IDAtNDggMjEuNS00OCA0OHptNzkuOCA3OC43YzMuMy04LjcgMTEuMi0xNC43IDIwLjUtMTQuN0g1MzkuN2M5LjIgMCAxNy4yIDYgMjAuNSAxNC43TDU3NiAzMDRIMzUybDE1LjgtNDkuM3pNNTY4IDM1MmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6TTMzNiAzNzZhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJ1Y2tSYW1wQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAwVjQwMGMwIDYxLjktNTAuMSAxMTItMTEyIDExMmMtNjEgMC0xMTAuNS00OC43LTExMi0xMDkuM0w0OC40IDUwMi45Yy0xNy4xIDQuNi0zNC42LTUuNC0zOS4zLTIyLjVzNS40LTM0LjYgMjIuNS0zOS4zTDM1MiAzNTMuOFY2NGMwLTM1LjMgMjguNy02NCA2NC02NEg2NDB6TTU3NiA0MDBhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMjMuMSAyMDcuN2MtNC42LTE3LjEgNS42LTM0LjYgMjIuNi0zOS4ybDQ2LjQtMTIuNCAyMC43IDc3LjNjMi4zIDguNSAxMS4xIDEzLjYgMTkuNiAxMS4zbDMwLjktOC4zYzguNS0yLjMgMTMuNi0xMS4xIDExLjMtMTkuNmwtMjAuNy03Ny4zIDQ2LjQtMTIuNGMxNy4xLTQuNiAzNC42IDUuNiAzOS4yIDIyLjZsNDEuNCAxNTQuNWM0LjYgMTcuMS01LjYgMzQuNi0yMi42IDM5LjJMMTAzLjcgMzg0LjljLTE3LjEgNC42LTM0LjYtNS42LTM5LjItMjIuNkwyMy4xIDIwNy43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OFYzNjhjMCAyNi41IDIxLjUgNDggNDggNDhINjRjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NkgzODRjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMlYyODggMjU2IDIzNy4zYzAtMTctNi43LTMzLjMtMTguNy00NS4zTDUxMiAxMTQuN2MtMTItMTItMjguMy0xOC43LTQ1LjMtMTguN0g0MTZWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTQxNiAxNjBoNTAuN0w1NDQgMjM3LjNWMjU2SDQxNlYxNjB6TTExMiA0MTZhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptMzY4LTQ4YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjMgMjQxLjNMMTUuMSAyMDAuNmMtOS4yLTE2LjItOC40LTM2LjUgNC41LTUwQzYxLjQgMTA2LjggMTQ0LjcgNDggMjU2IDQ4czE5NC42IDU4LjggMjM2LjQgMTAyLjZjMTIuOSAxMy41IDEzLjcgMzMuOCA0LjUgNTBsLTIzLjEgNDAuN2MtNy41IDEzLjItMjMuMyAxOS4zLTM3LjggMTQuNmwtODEuMS0yNi42Yy0xMy4xLTQuMy0yMi0xNi42LTIyLTMwLjRWMTQ0Yy00OS42LTE4LjEtMTA0LTE4LjEtMTUzLjYgMHY1NC44YzAgMTMuOC04LjkgMjYuMS0yMiAzMC40TDc2LjEgMjU1LjhjLTE0LjUgNC43LTMwLjMtMS40LTM3LjgtMTQuNnpNMzIgMzM2YzAtOC44IDcuMi0xNiAxNi0xNkg4MGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDQ4Yy04LjggMC0xNi03LjItMTYtMTZWMzM2em0wIDk2YzAtOC44IDcuMi0xNiAxNi0xNkg4MGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDQ4Yy04LjggMC0xNi03LjItMTYtMTZWNDMyek0xNDQgMzIwaDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTQ0Yy04LjggMC0xNi03LjItMTYtMTZWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjQwYy04LjggMC0xNi03LjItMTYtMTZWMzM2em0xMTItMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgzMzZjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg0MzJjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZ6bTE2IDgwaDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZINDMyYy04LjggMC0xNi03LjItMTYtMTZWNDMyYzAtOC44IDcuMi0xNiAxNi0xNnpNMTI4IDQzMmMwLTguOCA3LjItMTYgMTYtMTZIMzY4YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTQ0Yy04LjggMC0xNi03LjItMTYtMTZWNDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUdXJraXNoTGlyYVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWOTkuM0wyNDcuMiA2NS4yYzE3LTQuOSAzNC43IDUgMzkuNiAyMnMtNSAzNC43LTIyIDM5LjZMMTI4IDE2NS45djI5LjRsMTE5LjItMzQuMWMxNy00LjkgMzQuNyA1IDM5LjYgMjJzLTUgMzQuNy0yMiAzOS42TDEyOCAyNjEuOVY0MTZoNjMuOGM2OC4yIDAgMTI0LjQtNTMuNSAxMjcuOC0xMjEuNmwuNC04Yy45LTE3LjcgMTUuOS0zMS4yIDMzLjYtMzAuNHMzMS4yIDE1LjkgMzAuNCAzMy42bC0uNCA4QzM3OC41IDM5OS44IDI5NC4xIDQ4MCAxOTEuOCA0ODBIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjI4MC4xbC0yMy4yIDYuNmMtMTcgNC45LTM0LjctNS0zOS42LTIyczUtMzQuNyAyMi0zOS42TDY0IDIxMy42VjE4NC4xbC0yMy4yIDYuNmMtMTcgNC45LTM0LjctNS0zOS42LTIyczUtMzQuNyAyMi0zOS42TDY0IDExNy42VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUdXJuRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTAgMzM0LjVjMy44IDguOCAyIDE5LTQuNiAyNmwtMTM2IDE0NGMtNC41IDQuOC0xMC44IDcuNS0xNy40IDcuNXMtMTIuOS0yLjctMTcuNC03LjVsLTEzNi0xNDRjLTYuNi03LTguNC0xNy4yLTQuNi0yNnMxMi41LTE0LjUgMjItMTQuNWg4OGwwLTE5MmMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0VjMyQzAgMTQuMyAxNC4zIDAgMzIgMGw4MCAwYzcwLjcgMCAxMjggNTcuMyAxMjggMTI4bDAgMTkyaDg4YzkuNiAwIDE4LjIgNS43IDIyIDE0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR1cm5VcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTAgMTc3LjVjMy44LTguOCAyLTE5LTQuNi0yNmwtMTM2LTE0NEMyMDQuOSAyLjcgMTk4LjYgMCAxOTIgMHMtMTIuOSAyLjctMTcuNCA3LjVsLTEzNiAxNDRjLTYuNiA3LTguNCAxNy4yLTQuNiAyNnMxMi41IDE0LjUgMjIgMTQuNWg4OGwwIDE5MmMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJsODAgMGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOGwwLTE5Mmg4OGM5LjYgMCAxOC4yLTUuNyAyMi0xNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA2NFYzNTJINTc2VjY0SDY0ek0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEg1NzZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzUyYzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMTI4IDQ0OEg1MTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjI4OGMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOHMxMjgtNTcuMyAxMjgtMTI4VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMjg4YzAgMTA2LTg2IDE5Mi0xOTIgMTkyUzAgMzk0IDAgMjg4VjY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbWJyZWxsYUJlYWNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Ni4zIDI3MS44bC02MC4xLTIxLjlMMjE0IDQ0OEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjgyLjFsNjQuMS0xNzYuMnptMTIxLjEtLjJsLTMuMyA5LjEgNjcuNyAyNC42YzE4LjEgNi42IDM4LTQuMiAzOS42LTIzLjRjNi41LTc4LjUtMjMuOS0xNTUuNS04MC44LTIwOC41YzIgOCAzLjIgMTYuMyAzLjQgMjQuOGwuMiA2YzEuOCA1Ny03LjMgMTEzLjgtMjYuOCAxNjcuNHpNNDYyIDk5LjFjLTEuMS0zNC40LTIyLjUtNjQuOC01NC40LTc3LjRjLS45LS40LTEuOS0uNy0yLjgtMS4xYy0zMy0xMS43LTY5LjgtMi40LTkzLjEgMjMuOGwtNCA0LjVDMjcyLjQgODguMyAyNDUgMTM0LjIgMjI2LjggMTg0bC0zLjMgOS4xTDQzNCAyNjkuN2wzLjMtOS4xYzE4LjEtNDkuOCAyNi42LTEwMi41IDI0LjktMTU1LjVsLS4yLTZ6TTEwNy4yIDExMi45Yy0xMS4xIDE1LjctMi44IDM2LjggMTUuMyA0My40bDcxIDI1LjggMy4zLTkuMWMxOS41LTUzLjYgNDkuMS0xMDMgODcuMS0xNDUuNWw0LTQuNWM2LjItNi45IDEzLjEtMTMgMjAuNS0xOC4yYy03OS42IDIuNS0xNTQuNyA0Mi4yLTIwMS4yIDEwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW1icmVsbGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDkuN0M0NTEuOCA2My40IDU1Ny43IDE2MSA1NzMuOSAyODUuOWMyIDE1LjYtMTcuMyAyNC40LTI3LjggMTIuN0M1MzIuMSAyODMgNTA0LjggMjcyIDQ4MCAyNzJjLTM4LjcgMC03MSAyNy41LTc4LjQgNjQuMWMtMS43IDguNy04LjcgMTUuOS0xNy42IDE1LjlzLTE1LjgtNy4yLTE3LjYtMTUuOUMzNTkgMjk5LjUgMzI2LjcgMjcyIDI4OCAyNzJzLTcxIDI3LjUtNzguNCA2NC4xYy0xLjcgOC43LTguNyAxNS45LTE3LjYgMTUuOXMtMTUuOC03LjItMTcuNi0xNS45QzE2NyAyOTkuNSAxMzQuNyAyNzIgOTYgMjcyYy0yNC44IDAtNTIuMSAxMS02Ni4xIDI2LjdDMTkuNCAzMTAuNCAuMSAzMDEuNSAyLjEgMjg1LjlDMTguMyAxNjEgMTI0LjIgNjMuNCAyNTYgNDkuN1YzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMCAzMDRjMTIuMyAwIDIzLjUgNC42IDMyIDEyLjJWNDMwLjZjMCA0NS0zNi41IDgxLjQtODEuNCA4MS40Yy0zMC44IDAtNTktMTcuNC03Mi44LTQ1bC0yLjMtNC43Yy03LjktMTUuOC0xLjUtMzUgMTQuMy00Mi45czM1LTEuNSA0Mi45IDE0LjNsMi4zIDQuN2MzIDUuOSA5IDkuNiAxNS42IDkuNmM5LjYgMCAxNy40LTcuOCAxNy40LTE3LjRWMzE2LjJjOC41LTcuNiAxOS43LTEyLjIgMzItMTIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5kZXJsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDEyOFYyMjRjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NlY5NkgzMDRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0VjIyNGMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MHMtMTYwLTcxLjYtMTYwLTE2MFY5Nkg0OEMzMC4zIDk2IDE2IDgxLjcgMTYgNjR6TTAgNDQ4YzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuaXZlcnNhbEFjY2VzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTE2MS41LTg2LjFjLTEyLjItNS4yLTI2LjMgLjQtMzEuNSAxMi42cy40IDI2LjMgMTIuNiAzMS41bDExLjkgNS4xYzE3LjMgNy40IDM1LjIgMTIuOSA1My42IDE2LjN2NTAuMWMwIDQuMy0uNyA4LjYtMi4xIDEyLjZsLTI4LjcgODYuMWMtNC4yIDEyLjYgMi42IDI2LjIgMTUuMiAzMC40czI2LjItMi42IDMwLjQtMTUuMmwyNC40LTczLjJjMS4zLTMuOCA0LjgtNi40IDguOC02LjRzNy42IDIuNiA4LjggNi40bDI0LjQgNzMuMmM0LjIgMTIuNiAxNy44IDE5LjQgMzAuNCAxNS4yczE5LjQtMTcuOCAxNS4yLTMwLjRsLTI4LjctODYuMWMtMS40LTQuMS0yLjEtOC4zLTIuMS0xMi42VjIzNS41YzE4LjQtMy41IDM2LjMtOC45IDUzLjYtMTYuM2wxMS45LTUuMWMxMi4yLTUuMiAxNy44LTE5LjMgMTIuNi0zMS41cy0xOS4zLTE3LjgtMzEuNS0xMi42TDMzOC43IDE3NWMtMjYuMSAxMS4yLTU0LjIgMTctODIuNyAxN3MtNTYuNS01LjgtODIuNy0xN2wtMTEuOS01LjF6TTI1NiAxNjBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmxvY2tLZXlob2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA2NGMtNDQuMiAwLTgwIDM1LjgtODAgODB2NDhIMzg0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjU2YzAtMzUuMyAyOC43LTY0IDY0LTY0SDgwVjE0NEM4MCA2NC41IDE0NC41IDAgMjI0IDBjNTcuNSAwIDEwNyAzMy43IDEzMC4xIDgyLjNjNy42IDE2IC44IDM1LjEtMTUuMiA0Mi42cy0zNS4xIC44LTQyLjYtMTUuMkMyODMuNCA4Mi42IDI1NS45IDY0IDIyNCA2NHptMzIgMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5sb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAxNDRjMC00NC4yIDM1LjgtODAgODAtODBjMzEuOSAwIDU5LjQgMTguNiA3Mi4zIDQ1LjdjNy42IDE2IDI2LjcgMjIuOCA0Mi42IDE1LjJzMjIuOC0yNi43IDE1LjItNDIuNkMzMzEgMzMuNyAyODEuNSAwIDIyNCAwQzE0NC41IDAgODAgNjQuNSA4MCAxNDR2NDhINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDE0NFYxNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVwRG93bkxlZnRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzguNiA5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC02NCA2NGMtOS4yIDkuMi0xMS45IDIyLjktNi45IDM0LjlzMTYuNiAxOS44IDI5LjYgMTkuOGgzMnY5NkgxMjhWMTkyYzAtMTIuOS03LjgtMjQuNi0xOS44LTI5LjZzLTI1LjctMi4yLTM0LjkgNi45bC02NCA2NGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjOS4yIDkuMiAyMi45IDExLjkgMzQuOSA2LjlzMTkuOC0xNi42IDE5LjgtMjkuNlYyODhoOTZ2OTZIMTkyYy0xMi45IDAtMjQuNiA3LjgtMjkuNiAxOS44cy0yLjIgMjUuNyA2LjkgMzQuOWw2NCA2NGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw2NC02NGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOXMtMTYuNi0xOS44LTI5LjYtMTkuOEgyODhWMjg4aDk2djMyYzAgMTIuOSA3LjggMjQuNiAxOS44IDI5LjZzMjUuNyAyLjIgMzQuOS02LjlsNjQtNjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTY0LTY0Yy05LjItOS4yLTIyLjktMTEuOS0zNC45LTYuOXMtMTkuOCAxNi42LTE5LjggMjkuNnYzMkgyODhWMTI4aDMyYzEyLjkgMCAyNC42LTcuOCAyOS42LTE5LjhzMi4yLTI1LjctNi45LTM0LjlsLTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVcERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ1LjYgNy43QzE0MSAyLjggMTM0LjcgMCAxMjggMHMtMTMgMi44LTE3LjYgNy43bC0xMDQgMTEyYy02LjUgNy04LjIgMTcuMi00LjQgMjUuOVMxNC41IDE2MCAyNCAxNjBIODBWMzUySDI0Yy05LjUgMC0xOC4yIDUuNy0yMiAxNC40cy0yLjEgMTguOSA0LjQgMjUuOWwxMDQgMTEyYzQuNSA0LjkgMTAuOSA3LjcgMTcuNiA3LjdzMTMtMi44IDE3LjYtNy43bDEwNC0xMTJjNi41LTcgOC4yLTE3LjIgNC40LTI1LjlzLTEyLjUtMTQuNC0yMi0xNC40SDE3NlYxNjBoNTZjOS41IDAgMTguMi01LjcgMjItMTQuNHMyLjEtMTguOS00LjQtMjUuOWwtMTA0LTExMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXBMb25nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxOCAxNzcuNWMzLjgtOC44IDItMTktNC42LTI2bC0xMzYtMTQ0QzE3Mi45IDIuNyAxNjYuNiAwIDE2MCAwcy0xMi45IDIuNy0xNy40IDcuNWwtMTM2IDE0NGMtNi42IDctOC40IDE3LjItNC42IDI2UzE0LjQgMTkyIDI0IDE5Mkg5NmwwIDI4OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTI4OGg3MmM5LjYgMCAxOC4yLTUuNyAyMi0xNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVcFJpZ2h0QW5kRG93bkxlZnRGcm9tQ2VudGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0NCAwSDQ4OGMxMy4zIDAgMjQgMTAuNyAyNCAyNFYxNjhjMCA5LjctNS44IDE4LjUtMTQuOCAyMi4ycy0xOS4zIDEuNy0yNi4yLTUuMmwtMzktMzktODcgODdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC0zMi0zMmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsODctODdMMzI3IDQxYy02LjktNi45LTguOS0xNy4yLTUuMi0yNi4yUzMzNC4zIDAgMzQ0IDB6TTE2OCA1MTJIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjM0NGMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJzMTkuMy0xLjcgMjYuMiA1LjJsMzkgMzkgODctODdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMzIgMzJjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTg3IDg3IDM5IDM5YzYuOSA2LjkgOC45IDE3LjIgNS4yIDI2LjJzLTEyLjUgMTQuOC0yMi4yIDE0Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVwUmlnaHRGcm9tU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAwYy0xMi45IDAtMjQuNiA3LjgtMjkuNiAxOS44cy0yLjIgMjUuNyA2LjkgMzQuOUwzNzAuNyA5NiAyMDEuNCAyNjUuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEw0MTYgMTQxLjNsNDEuNCA0MS40YzkuMiA5LjIgMjIuOSAxMS45IDM0LjkgNi45czE5LjgtMTYuNiAxOS44LTI5LjZWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMzUyek04MCAzMkMzNS44IDMyIDAgNjcuOCAwIDExMlY0MzJjMCA0NC4yIDM1LjggODAgODAgODBINDAwYzQ0LjIgMCA4MC0zNS44IDgwLTgwVjMyMGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNkgxOTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMTA5LjNWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjEwOS4zbC03My40IDczLjRjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zbDEyOC0xMjhjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTI4IDEyOGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwyODggMTA5LjN6TTY0IDM1MkgxOTJjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjR2MzJjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjQxNmMwLTM1LjMgMjguNy02NCA2NC02NHpNNDMyIDQ1NmEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJBc3Ryb25hdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcwLjcgOTYuMUMzNDYuMSAzOS41IDI4OS43IDAgMjI0IDBTMTAxLjkgMzkuNSA3Ny4zIDk2LjFDNjAuOSA5Ny41IDQ4IDExMS4yIDQ4IDEyOHY2NGMwIDE2LjggMTIuOSAzMC41IDI5LjMgMzEuOUMxMDEuOSAyODAuNSAxNTguMyAzMjAgMjI0IDMyMHMxMjIuMS0zOS41IDE0Ni43LTk2LjFjMTYuNC0xLjQgMjkuMy0xNS4xIDI5LjMtMzEuOVYxMjhjMC0xNi44LTEyLjktMzAuNS0yOS4zLTMxLjl6TTMzNiAxNDR2MTZjMCA1My00MyA5Ni05NiA5NkgyMDhjLTUzIDAtOTYtNDMtOTYtOTZWMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDI4OGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTg5LjMgMTYyLjdsLTYtMjEuMmMtLjktMy4zLTMuOS01LjUtNy4zLTUuNXMtNi40IDIuMi03LjMgNS41bC02IDIxLjItMjEuMiA2Yy0zLjMgLjktNS41IDMuOS01LjUgNy4zczIuMiA2LjQgNS41IDcuM2wyMS4yIDYgNiAyMS4yYy45IDMuMyAzLjkgNS41IDcuMyA1LjVzNi40LTIuMiA3LjMtNS41bDYtMjEuMiAyMS4yLTZjMy4zLS45IDUuNS0zLjkgNS41LTcuM3MtMi4yLTYuNC01LjUtNy4zbC0yMS4yLTZ6TTExMi43IDMxNi41QzQ2LjcgMzQyLjYgMCA0MDcgMCA0ODIuM0MwIDQ5OC43IDEzLjMgNTEyIDI5LjcgNTEySDEyOFY0NDhjMC0xNy43IDE0LjMtMzIgMzItMzJIMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0bDk4LjMgMGMxNi40IDAgMjkuNy0xMy4zIDI5LjctMjkuN2MwLTc1LjMtNDYuNy0xMzkuNy0xMTIuNy0xNjUuOEMzMDMuOSAzMzguOCAyNjUuNSAzNTIgMjI0IDM1MnMtNzkuOS0xMy4yLTExMS4zLTM1LjV6TTE3NiA0NDhjLTguOCAwLTE2IDcuMi0xNiAxNnY0OGgzMlY0NjRjMC04LjgtNy4yLTE2LTE2LTE2em05NiAzMmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAxMjhhMTI4IDEyOCAwIDEgMSAyNTYgMEExMjggMTI4IDAgMSAxIDk2IDEyOHpNMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNGg5MS40QzM2OC4yIDMwNCA0NDggMzgzLjggNDQ4IDQ4Mi4zYzAgMTYuNC0xMy4zIDI5LjctMjkuNyAyOS43SDI5LjdDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zek02MjUgMTc3TDQ5NyAzMDVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC02NC02NGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDQ3IDQ3TDU5MSAxNDNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyQ2xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDBhMTI4IDEyOCAwIDEgMSAwIDI1NkExMjggMTI4IDAgMSAxIDIyNCAwek0xNzguMyAzMDRoOTEuNGMyMC42IDAgNDAuNCAzLjUgNTguOCA5LjlDMzIzIDMzMSAzMjAgMzQ5LjEgMzIwIDM2OGMwIDU5LjUgMjkuNSAxMTIuMSA3NC44IDE0NEgyOS43QzEzLjMgNTEyIDAgNDk4LjcgMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNHpNMzUyIDM2OGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0xNDQtODBjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZoNDhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZINTEyVjMwNGMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJEb2N0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI1NkExMjggMTI4IDAgMSAwIDIyNCAwYTEyOCAxMjggMCAxIDAgMCAyNTZ6bS05NiA1NS4yQzU0IDMzMi45IDAgNDAxLjMgMCA0ODIuM0MwIDQ5OC43IDEzLjMgNTEyIDI5LjcgNTEySDQxOC4zYzE2LjQgMCAyOS43LTEzLjMgMjkuNy0yOS43YzAtODEtNTQtMTQ5LjQtMTI4LTE3MS4xVjM2MmMyNy42IDcuMSA0OCAzMi4yIDQ4IDYydjQwYzAgOC44LTcuMiAxNi0xNiAxNkgzMzZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZWNDI0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjI0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDI1NmMtOC44IDAtMTYtNy4yLTE2LTE2VjQyNGMwLTI5LjggMjAuNC01NC45IDQ4LTYyVjMwNC45Yy02LS42LTEyLjEtLjktMTguMy0uOUgxNzguM2MtNi4yIDAtMTIuMyAuMy0xOC4zIC45djY1LjRjMjMuMSA2LjkgNDAgMjguMyA0MCA1My43YzAgMzAuOS0yNS4xIDU2LTU2IDU2cy01Ni0yNS4xLTU2LTU2YzAtMjUuNCAxNi45LTQ2LjggNDAtNTMuN1YzMTEuMnpNMTQ0IDQ0OGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJHZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYTEyOCAxMjggMCAxIDEgMCAyNTZBMTI4IDEyOCAwIDEgMSAyMjQgMHpNMTc4LjMgMzA0aDkxLjRjMTEuOCAwIDIzLjQgMS4yIDM0LjUgMy4zYy0yLjEgMTguNSA3LjQgMzUuNiAyMS44IDQ0LjhjLTE2LjYgMTAuNi0yNi43IDMxLjYtMjAgNTMuM2M0IDEyLjkgOS40IDI1LjUgMTYuNCAzNy42czE1LjIgMjMuMSAyNC40IDMzYzE1LjcgMTYuOSAzOS42IDE4LjQgNTcuMiA4Ljd2LjljMCA5LjIgMi43IDE4LjUgNy45IDI2LjNIMjkuN0MxMy4zIDUxMiAwIDQ5OC43IDAgNDgyLjNDMCAzODMuOCA3OS44IDMwNCAxNzguMyAzMDR6TTQzNiAyMTguMmMwLTcgNC41LTEzLjMgMTEuMy0xNC44YzEwLjUtMi40IDIxLjUtMy43IDMyLjctMy43czIyLjIgMS4zIDMyLjcgMy43YzYuOCAxLjUgMTEuMyA3LjggMTEuMyAxNC44djE3LjdjMCA3LjggNC44IDE0LjggMTEuNiAxOC43YzYuOCAzLjkgMTUuMSA0LjUgMjEuOCAuNmwxMy44LTcuOWM2LjEtMy41IDEzLjctMi43IDE4LjUgMi40YzcuNiA4LjEgMTQuMyAxNy4yIDIwLjEgMjcuMnMxMC4zIDIwLjQgMTMuNSAzMWMyLjEgNi43LTEuMSAxMy43LTcuMiAxNy4ybC0xNC40IDguM2MtNi41IDMuNy0xMCAxMC45LTEwIDE4LjRzMy41IDE0LjcgMTAgMTguNGwxNC40IDguM2M2LjEgMy41IDkuMiAxMC41IDcuMiAxNy4yYy0zLjMgMTAuNi03LjggMjEtMTMuNSAzMXMtMTIuNSAxOS4xLTIwLjEgMjcuMmMtNC44IDUuMS0xMi41IDUuOS0xOC41IDIuNGwtMTMuOC03LjljLTYuNy0zLjktMTUuMS0zLjMtMjEuOCAuNmMtNi44IDMuOS0xMS42IDEwLjktMTEuNiAxOC43djE3LjdjMCA3LTQuNSAxMy4zLTExLjMgMTQuOGMtMTAuNSAyLjQtMjEuNSAzLjctMzIuNyAzLjdzLTIyLjItMS4zLTMyLjctMy43Yy02LjgtMS41LTExLjMtNy44LTExLjMtMTQuOFY0NjcuOGMwLTcuOS00LjktMTQuOS0xMS43LTE4LjljLTYuOC0zLjktMTUuMi00LjUtMjItLjZsLTEzLjUgNy44Yy02LjEgMy41LTEzLjcgMi43LTE4LjUtMi40Yy03LjYtOC4xLTE0LjMtMTcuMi0yMC4xLTI3LjJzLTEwLjMtMjAuNC0xMy41LTMxYy0yLjEtNi43IDEuMS0xMy43IDcuMi0xNy4ybDE0LTguMWM2LjUtMy44IDEwLjEtMTEuMSAxMC4xLTE4LjZzLTMuNS0xNC44LTEwLjEtMTguNmwtMTQtOC4xYy02LjEtMy41LTkuMi0xMC41LTcuMi0xNy4yYzMuMy0xMC42IDcuNy0yMSAxMy41LTMxczEyLjUtMTkuMSAyMC4xLTI3LjJjNC44LTUuMSAxMi40LTUuOSAxOC41LTIuNGwxMy42IDcuOGM2LjggMy45IDE1LjIgMy4zIDIyLS42YzYuOS0zLjkgMTEuNy0xMSAxMS43LTE4LjlWMjE4LjJ6bTkyLjEgMTMzLjVhNDguMSA0OC4xIDAgMSAwIC05Ni4xIDAgNDguMSA0OC4xIDAgMSAwIDk2LjEgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckdyYWR1YXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxOS4zIC41YzMuMS0uNiA2LjMtLjYgOS40IDBsMjAwIDQwQzQzOS45IDQyLjcgNDQ4IDUyLjYgNDQ4IDY0cy04LjEgMjEuMy0xOS4zIDIzLjVMMzUyIDEwMi45VjE2MGMwIDcwLjctNTcuMyAxMjgtMTI4IDEyOHMtMTI4LTU3LjMtMTI4LTEyOFYxMDIuOUw0OCA5My4zdjY1LjFsMTUuNyA3OC40Yy45IDQuNy0uMyA5LjYtMy4zIDEzLjNzLTcuNiA1LjktMTIuNCA1LjlIMTZjLTQuOCAwLTkuMy0yLjEtMTIuNC01LjlzLTQuMy04LjYtMy4zLTEzLjNMMTYgMTU4LjRWODYuNkM2LjUgODMuMyAwIDc0LjMgMCA2NEMwIDUyLjYgOC4xIDQyLjcgMTkuMyA0MC41bDIwMC00MHpNMTExLjkgMzI3LjdjMTAuNS0zLjQgMjEuOCAuNCAyOS40IDguNWw3MSA3NS41YzYuMyA2LjcgMTcgNi43IDIzLjMgMGw3MS03NS41YzcuNi04LjEgMTguOS0xMS45IDI5LjQtOC41QzQwMSAzNDguNiA0NDggNDA5LjQgNDQ4IDQ4MS4zYzAgMTctMTMuOCAzMC43LTMwLjcgMzAuN0gzMC43QzEzLjggNTEyIDAgNDk4LjIgMCA0ODEuM2MwLTcxLjkgNDctMTMyLjcgMTExLjktMTUzLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAxMjhhMTI4IDEyOCAwIDEgMSAyNTYgMEExMjggMTI4IDAgMSAxIDk2IDEyOHpNMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNGg5MS40QzM2OC4yIDMwNCA0NDggMzgzLjggNDQ4IDQ4Mi4zYzAgMTYuNC0xMy4zIDI5LjctMjkuNyAyOS43SDI5LjdDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zek02MDkuMyA1MTJINDcxLjRjNS40LTkuNCA4LjYtMjAuMyA4LjYtMzJ2LThjMC02MC43LTI3LjEtMTE1LjItNjkuOC0xNTEuOGMyLjQtLjEgNC43LS4yIDcuMS0uMmg2MS40QzU2Ny44IDMyMCA2NDAgMzkyLjIgNjQwIDQ4MS4zYzAgMTctMTMuOCAzMC43LTMwLjcgMzAuN3pNNDMyIDI1NmMtMzEgMC01OS0xMi42LTc5LjMtMzIuOUMzNzIuNCAxOTYuNSAzODQgMTYzLjYgMzg0IDEyOGMwLTI2LjgtNi42LTUyLjEtMTguMy03NC4zQzM4NC4zIDQwLjEgNDA3LjIgMzIgNDMyIDMyYzYxLjkgMCAxMTIgNTAuMSAxMTIgMTEycy01MC4xIDExMi0xMTIgMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VySW5qdXJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDAgODBIMzQyLjdjLTcuOS0xOS41LTIwLjQtMzYuNS0zNi4yLTQ5LjlMMjQwIDgwem0zNy43LTY4LjJDMjYxLjMgNC4yIDI0My4yIDAgMjI0IDBjLTUzLjcgMC05OS43IDMzLjEtMTE4LjcgODBoODEuNGw5MS02OC4yek0yMjQgMjU2YzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4YzAtNS40LS4zLTEwLjgtMS0xNkg5N2MtLjcgNS4yLTEgMTAuNi0xIDE2YzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4ek0xMjQgMzEyLjRjLTkuNyAzLjEtMTkuMSA3LTI4IDExLjdWNTEySDI0My43TDE4MS41IDQwOC4yIDEyNCAzMTIuNHptMzMtNy4yTDIwNC4zIDM4NEgyNzJjNDQuMiAwIDgwIDM1LjggODAgODBjMCAxOC02IDM0LjYtMTYgNDhoODIuM2MxNi40IDAgMjkuNy0xMy4zIDI5LjctMjkuN0M0NDggMzgzLjggMzY4LjIgMzA0IDI2OS43IDMwNEgxNzguM2MtNy4yIDAtMTQuMyAuNC0yMS4zIDEuM3pNMCA0ODIuM0MwIDQ5OC43IDEzLjMgNTEyIDI5LjcgNTEySDY0VjM0NS40QzI0LjkgMzc4LjEgMCA0MjcuMyAwIDQ4Mi4zek0zMjAgNDY0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDIyMy41bDU3LjEgOTUuMkMzMDMgNTA3LjIgMzIwIDQ4Ny42IDMyMCA0NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJMYXJnZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMMzgxLjkgMjc0YzQ4LjUtMjMuMiA4Mi4xLTcyLjcgODIuMS0xMzBDNDY0IDY0LjUgMzk5LjUgMCAzMjAgMEMyNTAuNCAwIDE5Mi40IDQ5LjMgMTc4LjkgMTE0LjlMMzguOCA1LjF6TTU0NS41IDUxMkg1MjhMMjg0LjMgMzIwaC01OUMxMzYuMiAzMjAgNjQgMzkyLjIgNjQgNDgxLjNjMCAxNyAxMy44IDMwLjcgMzAuNyAzMC43SDU0NS4zbC4zIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJMYXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMjg4QTE0NCAxNDQgMCAxIDAgMjU2IDBhMTQ0IDE0NCAwIDEgMCAwIDI4OHptLTk0LjcgMzJDNzIuMiAzMjAgMCAzOTIuMiAwIDQ4MS4zYzAgMTcgMTMuOCAzMC43IDMwLjcgMzAuN0g0ODEuM2MxNyAwIDMwLjctMTMuOCAzMC43LTMwLjdDNTEyIDM5Mi4yIDQzOS44IDMyMCAzNTAuNyAzMjBIMTYxLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZBMTI4IDEyOCAwIDEgMCAyMjQgMGExMjggMTI4IDAgMSAwIDAgMjU2em0tNDUuNyA0OEM3OS44IDMwNCAwIDM4My44IDAgNDgyLjNDMCA0OTguNyAxMy4zIDUxMiAyOS43IDUxMkgzOTIuNmMtNS40LTkuNC04LjYtMjAuMy04LjYtMzJWMzUyYzAtMi4xIC4xLTQuMiAuMy02LjNjLTMxLTI2LTcxLTQxLjctMTE0LjYtNDEuN0gxNzguM3pNNTI4IDI0MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OEg0OTZWMjcyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tODAgMzJ2NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMyVjI3MmMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDEyOGExMjggMTI4IDAgMSAxIDI1NiAwQTEyOCAxMjggMCAxIDEgOTYgMTI4ek0wIDQ4Mi4zQzAgMzgzLjggNzkuOCAzMDQgMTc4LjMgMzA0aDkxLjRDMzY4LjIgMzA0IDQ0OCAzODMuOCA0NDggNDgyLjNjMCAxNi40LTEzLjMgMjkuNy0yOS43IDI5LjdIMjkuN0MxMy4zIDUxMiAwIDQ5OC43IDAgNDgyLjN6TTQ3MiAyMDBINjE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDQ3MmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlck5pbmphIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZjLTU3LjIgMC0xMDUuNi0zNy41LTEyMi04OS4zYy0xLjEgMS4zLTIuMiAyLjYtMy41IDMuOGMtMTUuOCAxNS44LTM4LjggMjAuNy01My42IDIyLjFjLTguMSAuOC0xNC42LTUuNy0xMy44LTEzLjhjMS40LTE0LjcgNi4zLTM3LjggMjIuMS01My42YzUuOC01LjggMTIuNi0xMC4xIDE5LjYtMTMuNGMtNy0zLjItMTMuOC03LjYtMTkuNi0xMy40QzM3LjQgODIuNyAzMi42IDU5LjcgMzEuMSA0NC45Yy0uOC04LjEgNS43LTE0LjYgMTMuOC0xMy44YzE0LjcgMS40IDM3LjggNi4zIDUzLjYgMjIuMWM0LjggNC44IDguNyAxMC40IDExLjcgMTYuMUMxMzEuNCAyOC4yIDE3NC40IDAgMjI0IDBjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhzLTU3LjMgMTI4LTEyOCAxMjh6TTAgNDgyLjNDMCAzOTkuNSA1Ni40IDMzMCAxMzIuOCAzMDkuOWM2LTEuNiAxMi4yIC45IDE1LjkgNS44bDYyLjUgODMuM2M2LjQgOC41IDE5LjIgOC41IDI1LjYgMGw2Mi41LTgzLjNjMy43LTQuOSA5LjktNy40IDE1LjktNS44QzM5MS42IDMzMCA0NDggMzk5LjUgNDQ4IDQ4Mi4zYzAgMTYuNC0xMy4zIDI5LjctMjkuNyAyOS43SDI5LjdDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zek0xNjAgOTZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZIMjg4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlck51cnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDEyOFY3MC4yYzAtMTMuMyA4LjMtMjUuMyAyMC44LTMwbDk2LTM2YzcuMi0yLjcgMTUuMi0yLjcgMjIuNSAwbDk2IDM2YzEyLjUgNC43IDIwLjggMTYuNiAyMC44IDMwVjEyOGgtLjNjLjIgMi42IC4zIDUuMyAuMyA4djQwYzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4cy0xMjgtNTcuMy0xMjgtMTI4VjEzNmMwLTIuNyAuMS01LjQgLjMtOEg5NnptNDggNDhjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MFYxNjBIMTQ0djE2ek0xMTEuOSAzMjcuN2MxMC41LTMuNCAyMS44IC40IDI5LjQgOC41bDcxIDc1LjVjNi4zIDYuNyAxNyA2LjcgMjMuMyAwbDcxLTc1LjVjNy42LTguMSAxOC45LTExLjkgMjkuNC04LjVDNDAxIDM0OC42IDQ0OCA0MDkuNCA0NDggNDgxLjNjMCAxNy0xMy44IDMwLjctMzAuNyAzMC43SDMwLjdDMTMuOCA1MTIgMCA0OTguMiAwIDQ4MS4zYzAtNzEuOSA0Ny0xMzIuNyAxMTEuOS0xNTMuNnpNMjA4IDQ4VjY0SDE5MmMtNC40IDAtOCAzLjYtOCA4Vjg4YzAgNC40IDMuNiA4IDggOGgxNnYxNmMwIDQuNCAzLjYgOCA4IDhoMTZjNC40IDAgOC0zLjYgOC04Vjk2aDE2YzQuNCAwIDgtMy42IDgtOFY3MmMwLTQuNC0zLjYtOC04LThIMjQwVjQ4YzAtNC40LTMuNi04LTgtOEgyMTZjLTQuNCAwLTggMy42LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclBlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMjU2QTEyOCAxMjggMCAxIDAgMjI0IDBhMTI4IDEyOCAwIDEgMCAwIDI1NnptLTQ1LjcgNDhDNzkuOCAzMDQgMCAzODMuOCAwIDQ4Mi4zQzAgNDk4LjcgMTMuMyA1MTIgMjkuNyA1MTJIMzIyLjhjLTMuMS04LjgtMy43LTE4LjQtMS40LTI3LjhsMTUtNjAuMWMyLjgtMTEuMyA4LjYtMjEuNSAxNi44LTI5LjdsNDAuMy00MC4zYy0zMi4xLTMxLTc1LjctNTAuMS0xMjMuOS01MC4xSDE3OC4zem00MzUuNS02OC4zYy0xNS42LTE1LjYtNDAuOS0xNS42LTU2LjYgMGwtMjkuNCAyOS40IDcxIDcxIDI5LjQtMjkuNGMxNS42LTE1LjYgMTUuNi00MC45IDAtNTYuNmwtMTQuNC0xNC40ek0zNzUuOSA0MTdjLTQuMSA0LjEtNyA5LjItOC40IDE0LjlsLTE1IDYwLjFjLTEuNCA1LjUgLjIgMTEuMiA0LjIgMTUuMnM5LjcgNS42IDE1LjIgNC4ybDYwLjEtMTVjNS42LTEuNCAxMC44LTQuMyAxNC45LTguNEw1NzYuMSAzNTguN2wtNzEtNzFMMzc1LjkgNDE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAxMjhhMTI4IDEyOCAwIDEgMSAyNTYgMEExMjggMTI4IDAgMSAxIDk2IDEyOHpNMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNGg5MS40QzM2OC4yIDMwNCA0NDggMzgzLjggNDQ4IDQ4Mi4zYzAgMTYuNC0xMy4zIDI5LjctMjkuNyAyOS43SDI5LjdDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zek01MDQgMzEyVjI0OEg0NDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoNjRWMTM2YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2NjRoNjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINTUydjY0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyU2VjcmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxNmMtNi43IDAtMTAuOC0yLjgtMTUuNS02LjFDMjAxLjkgNS40IDE5NCAwIDE3NiAwYy0zMC41IDAtNTIgNDMuNy02NiA4OS40QzYyLjcgOTguMSAzMiAxMTIuMiAzMiAxMjhjMCAxNC4zIDI1IDI3LjEgNjQuNiAzNS45Yy0uNCA0LS42IDgtLjYgMTIuMWMwIDE3IDMuMyAzMy4yIDkuMyA0OEg0NS40QzM4IDIyNCAzMiAyMzAgMzIgMjM3LjRjMCAxLjcgLjMgMy40IDEgNWwzOC44IDk2LjlDMjguMiAzNzEuOCAwIDQyMy44IDAgNDgyLjNDMCA0OTguNyAxMy4zIDUxMiAyOS43IDUxMkg0MTguM2MxNi40IDAgMjkuNy0xMy4zIDI5LjctMjkuN2MwLTU4LjUtMjguMi0xMTAuNC03MS43LTE0M0w0MTUgMjQyLjRjLjYtMS42IDEtMy4zIDEtNWMwLTcuNC02LTEzLjQtMTMuNC0xMy40SDM0Mi43YzYtMTQuOCA5LjMtMzEgOS4zLTQ4YzAtNC4xLS4yLTguMS0uNi0xMi4xQzM5MSAxNTUuMSA0MTYgMTQyLjMgNDE2IDEyOGMwLTE1LjgtMzAuNy0yOS45LTc4LTM4LjZDMzI0IDQzLjcgMzAyLjUgMCAyNzIgMGMtMTggMC0yNS45IDUuNC0zMi41IDkuOWMtNC44IDMuMy04LjggNi4xLTE1LjUgNi4xem01NiAyMDhIMjY3LjZjLTE2LjUgMC0zMS4xLTEwLjYtMzYuMy0yNi4yYy0yLjMtNy0xMi4yLTctMTQuNSAwYy01LjIgMTUuNi0xOS45IDI2LjItMzYuMyAyNi4ySDE2OGMtMjIuMSAwLTQwLTE3LjktNDAtNDBWMTY5LjZjMjguMiA0LjEgNjEgNi40IDk2IDYuNHM2Ny44LTIuMyA5Ni02LjRWMTg0YzAgMjIuMS0xNy45IDQwLTQwIDQwem0tODggOTZsMTYgMzJMMTc2IDQ4MCAxMjggMjg4bDY0IDMyem0xMjgtMzJMMjcyIDQ4MCAyNDAgMzUybDE2LTMyIDY0LTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyU2hpZWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZBMTI4IDEyOCAwIDEgMCAyMjQgMGExMjggMTI4IDAgMSAwIDAgMjU2em0tNDUuNyA0OEM3OS44IDMwNCAwIDM4My44IDAgNDgyLjNDMCA0OTguNyAxMy4zIDUxMiAyOS43IDUxMkg0MTguM2MxLjggMCAzLjUtLjIgNS4zLS41Yy03Ni4zLTU1LjEtOTkuOC0xNDEtMTAzLjEtMjAwLjJjLTE2LjEtNC44LTMzLjEtNy4zLTUwLjctNy4zSDE3OC4zem0zMDguOC03OC4zbC0xMjAgNDhDMzU4IDI3Ny40IDM1MiAyODYuMiAzNTIgMjk2YzAgNjMuMyAyNS45IDE2OC44IDEzNC44IDIxNC4yYzUuOSAyLjUgMTIuNiAyLjUgMTguNSAwQzYxNC4xIDQ2NC44IDY0MCAzNTkuMyA2NDAgMjk2YzAtOS44LTYtMTguNi0xNS4xLTIyLjNsLTEyMC00OGMtNS43LTIuMy0xMi4xLTIuMy0xNy44IDB6TTU5MS40IDMxMmMtMy45IDUwLjctMjcuMiAxMTYuNy05NS40IDE0OS43VjI3My44TDU5MS40IDMxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMMzUzLjMgMjUxLjZDNDA3LjkgMjM3IDQ0OCAxODcuMiA0NDggMTI4QzQ0OCA1Ny4zIDM5MC43IDAgMzIwIDBDMjUwLjIgMCAxOTMuNSA1NS44IDE5MiAxMjUuMkwzOC44IDUuMXpNMjY0LjMgMzA0LjNDMTcwLjUgMzA5LjQgOTYgMzg3LjIgOTYgNDgyLjNjMCAxNi40IDEzLjMgMjkuNyAyOS43IDI5LjdINTE0LjNjMy45IDAgNy42LS43IDExLTIuMWwtMjYxLTIwNS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyVGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZBMTI4IDEyOCAwIDEgMCAyMjQgMGExMjggMTI4IDAgMSAwIDAgMjU2em0tNDUuNyA0OEM3OS44IDMwNCAwIDM4My44IDAgNDgyLjNDMCA0OTguNyAxMy4zIDUxMiAyOS43IDUxMkg0MTguM2MxMCAwIDE4LjgtNC45IDI0LjItMTIuNWwtOTkuMi05OS4yYy0xNC45LTE0LjktMjMuMy0zNS4xLTIzLjMtNTYuMXYtMzNjLTE1LjktNC43LTMyLjgtNy4yLTUwLjMtNy4ySDE3OC4zek0zODQgMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY4Mi43YzAgMTcgNi43IDMzLjMgMTguNyA0NS4zTDQ3OC4xIDQ5MS4zYzE4LjcgMTguNyA0OS4xIDE4LjcgNjcuOSAwbDczLjQtNzMuNGMxOC43LTE4LjcgMTguNy00OS4xIDAtNjcuOUw1MTIgMjQyLjdjLTEyLTEyLTI4LjMtMTguNy00NS4zLTE4LjdIMzg0em0yNCA4MGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyVGllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDEyOGExMjggMTI4IDAgMSAwIDI1NiAwQTEyOCAxMjggMCAxIDAgOTYgMTI4em05NC41IDIwMC4ybDE4LjYgMzFMMTc1LjggNDgzLjFsLTM2LTE0Ni45Yy0yLTguMS05LjgtMTMuNC0xNy45LTExLjNDNTEuOSAzNDIuNCAwIDQwNS44IDAgNDgxLjNjMCAxNyAxMy44IDMwLjcgMzAuNyAzMC43SDE2Mi41YzAgMCAwIDAgLjEgMEgxNjggMjgwaDUuNWMwIDAgMCAwIC4xIDBINDE3LjNjMTcgMCAzMC43LTEzLjggMzAuNy0zMC43YzAtNzUuNS01MS45LTEzOC45LTEyMS45LTE1Ni40Yy04LjEtMi0xNS45IDMuMy0xNy45IDExLjNsLTM2IDE0Ni45TDIzOC45IDM1OS4ybDE4LjYtMzFjNi40LTEwLjctMS4zLTI0LjItMTMuNy0yNC4ySDIyNCAyMDQuM2MtMTIuNCAwLTIwLjEgMTMuNi0xMy43IDI0LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAxMjhhMTI4IDEyOCAwIDEgMSAyNTYgMEExMjggMTI4IDAgMSAxIDk2IDEyOHpNMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNGg5MS40QzM2OC4yIDMwNCA0NDggMzgzLjggNDQ4IDQ4Mi4zYzAgMTYuNC0xMy4zIDI5LjctMjkuNyAyOS43SDI5LjdDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zek00NzEgMTQzYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDQ3IDQ3IDQ3LTQ3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNDcgNDcgNDcgNDdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDctNDctNDcgNDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDctNDctNDctNDdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZBMTI4IDEyOCAwIDEgMCAyMjQgMGExMjggMTI4IDAgMSAwIDAgMjU2em0tNDUuNyA0OEM3OS44IDMwNCAwIDM4My44IDAgNDgyLjNDMCA0OTguNyAxMy4zIDUxMiAyOS43IDUxMkg0MTguM2MxNi40IDAgMjkuNy0xMy4zIDI5LjctMjkuN0M0NDggMzgzLjggMzY4LjIgMzA0IDI2OS43IDMwNEgxNzguM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlcnNCZXR3ZWVuTGluZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNEMwIDEwLjcgMTAuNyAwIDI0IDBINjE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI0QzEwLjcgNDggMCAzNy4zIDAgMjR6TTAgNDg4YzAtMTMuMyAxMC43LTI0IDI0LTI0SDYxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6TTgzLjIgMTYwYTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNMzIgMzIwYzAtMzUuMyAyOC43LTY0IDY0LTY0aDk2YzEyLjIgMCAyMy43IDMuNCAzMy40IDkuNGMtMzcuMiAxNS4xLTY1LjYgNDcuMi03NS44IDg2LjZINjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyem00NjEuNiAzMmMtMTAuMy00MC4xLTM5LjYtNzIuNi03Ny43LTg3LjRjOS40LTUuNSAyMC40LTguNiAzMi4xLTguNmg5NmMzNS4zIDAgNjQgMjguNyA2NCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0OTMuNnpNMzkxLjIgMjkwLjRjMzIuMSA3LjQgNTguMSAzMC45IDY4LjkgNjEuNmMzLjUgMTAgNS41IDIwLjggNS41IDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMyaC0yMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyYzAtMTEuMiAxLjktMjIgNS41LTMyYzEwLjUtMjkuNyAzNS4zLTUyLjggNjYuMS02MC45YzcuOC0yLjEgMTYtMy4xIDI0LjUtMy4xaDk2YzcuNCAwIDE0LjcgLjggMjEuNiAyLjR6bTQ0LTEzMC40YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNMzIxLjYgOTZhODAgODAgMCAxIDEgMCAxNjAgODAgODAgMCAxIDEgMC0xNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJzR2VhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgMTYwQTgwIDgwIDAgMSAwIDE0NCAwYTgwIDgwIDAgMSAwIDAgMTYwem0zNjggMEE4MCA4MCAwIDEgMCA1MTIgMGE4MCA4MCAwIDEgMCAwIDE2MHpNMCAyOTguN0MwIDMxMC40IDkuNiAzMjAgMjEuMyAzMjBIMjM0LjdjLjIgMCAuNCAwIC43IDBjLTI2LjYtMjMuNS00My4zLTU3LjgtNDMuMy05NmMwLTcuNiAuNy0xNSAxLjktMjIuM2MtMTMuNi02LjMtMjguNy05LjctNDQuNi05LjdIMTA2LjdDNDcuOCAxOTIgMCAyMzkuOCAwIDI5OC43ek0zMjAgMzIwYzI0IDAgNDUuOS04LjggNjIuNy0yMy4zYzIuNS0zLjcgNS4yLTcuMyA4LTEwLjdjMi43LTMuMyA1LjctNi4xIDktOC4zQzQxMCAyNjIuMyA0MTYgMjQzLjkgNDE2IDIyNGMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NnM0MyA5NiA5NiA5NnptNjUuNCA2MC4yYy0xMC4zLTUuOS0xOC4xLTE2LjItMjAuOC0yOC4ySDI2MS4zQzE4Ny43IDM1MiAxMjggNDExLjcgMTI4IDQ4NS4zYzAgMTQuNyAxMS45IDI2LjcgMjYuNyAyNi43SDQ1NS4yYy0yLjEtNS4yLTMuMi0xMC45LTMuMi0xNi40di0zYy0xLjMtLjctMi43LTEuNS00LTIuM2wtMi42IDEuNWMtMTYuOCA5LjctNDAuNSA4LTU0LjctOS43Yy00LjUtNS42LTguNi0xMS41LTEyLjQtMTcuNmwtLjEtLjItLjEtLjItMi40LTQuMS0uMS0uMi0uMS0uMmMtMy40LTYuMi02LjQtMTIuNi05LTE5LjNjLTguMi0yMS4yIDIuMi00Mi42IDE5LTUyLjNsMi43LTEuNWMwLS44IDAtMS41IDAtMi4zczAtMS41IDAtMi4zbC0yLjctMS41ek01MzMuMyAxOTJINDkwLjdjLTE1LjkgMC0zMSAzLjUtNDQuNiA5LjdjMS4zIDcuMiAxLjkgMTQuNyAxLjkgMjIuM2MwIDE3LjQtMy41IDMzLjktOS43IDQ5YzIuNSAuOSA0LjkgMiA3LjEgMy4zbDIuNiAxLjVjMS4zLS44IDIuNi0xLjYgNC0yLjN2LTNjMC0xOS40IDEzLjMtMzkuMSAzNS44LTQyLjZjNy45LTEuMiAxNi0xLjkgMjQuMi0xLjlzMTYuMyAuNiAyNC4yIDEuOWMyMi41IDMuNSAzNS44IDIzLjIgMzUuOCA0Mi42djNjMS4zIC43IDIuNyAxLjUgNCAyLjNsMi42LTEuNWMxNi44LTkuNyA0MC41LTggNTQuNyA5LjdjMi4zIDIuOCA0LjUgNS44IDYuNiA4LjdjLTIuMS01Ny4xLTQ5LTEwMi43LTEwNi42LTEwMi43em05MS4zIDE2My45YzYuMy0zLjYgOS41LTExLjEgNi44LTE4Yy0yLjEtNS41LTQuNi0xMC44LTcuNC0xNS45bC0yLjMtNGMtMy4xLTUuMS02LjUtOS45LTEwLjItMTQuNWMtNC42LTUuNy0xMi43LTYuNy0xOS0zbC0yLjkgMS43Yy05LjIgNS4zLTIwLjQgNC0yOS42LTEuM3MtMTYuMS0xNC41LTE2LjEtMjUuMXYtMy40YzAtNy4zLTQuOS0xMy44LTEyLjEtMTQuOWMtNi41LTEtMTMuMS0xLjUtMTkuOS0xLjVzLTEzLjQgLjUtMTkuOSAxLjVjLTcuMiAxLjEtMTIuMSA3LjYtMTIuMSAxNC45djMuNGMwIDEwLjYtNi45IDE5LjgtMTYuMSAyNS4xcy0yMC40IDYuNi0yOS42IDEuM2wtMi45LTEuN2MtNi4zLTMuNi0xNC40LTIuNi0xOSAzYy0zLjcgNC42LTcuMSA5LjUtMTAuMiAxNC42bC0yLjMgMy45Yy0yLjggNS4xLTUuMyAxMC40LTcuNCAxNS45Yy0yLjYgNi44IC41IDE0LjMgNi44IDE3LjlsMi45IDEuN2M5LjIgNS4zIDEzLjcgMTUuOCAxMy43IDI2LjRzLTQuNSAyMS4xLTEzLjcgMjYuNGwtMyAxLjdjLTYuMyAzLjYtOS41IDExLjEtNi44IDE3LjljMi4xIDUuNSA0LjYgMTAuNyA3LjQgMTUuOGwyLjQgNC4xYzMgNS4xIDYuNCA5LjkgMTAuMSAxNC41YzQuNiA1LjcgMTIuNyA2LjcgMTkgM2wyLjktMS43YzkuMi01LjMgMjAuNC00IDI5LjYgMS4zczE2LjEgMTQuNSAxNi4xIDI1LjF2My40YzAgNy4zIDQuOSAxMy44IDEyLjEgMTQuOWM2LjUgMSAxMy4xIDEuNSAxOS45IDEuNXMxMy40LS41IDE5LjktMS41YzcuMi0xLjEgMTIuMS03LjYgMTIuMS0xNC45di0zLjRjMC0xMC42IDYuOS0xOS44IDE2LjEtMjUuMXMyMC40LTYuNiAyOS42LTEuM2wyLjkgMS43YzYuMyAzLjYgMTQuNCAyLjYgMTktM2MzLjctNC42IDcuMS05LjQgMTAuMS0xNC41bDIuNC00LjJjMi44LTUuMSA1LjMtMTAuMyA3LjQtMTUuOGMyLjYtNi44LS41LTE0LjMtNi44LTE3LjlsLTMtMS43Yy05LjItNS4zLTEzLjctMTUuOC0xMy43LTI2LjRzNC41LTIxLjEgMTMuNy0yNi40bDMtMS43ek00NzIgMzg0YTQwIDQwIDAgMSAxIDgwIDAgNDAgNDAgMCAxIDEgLTgwIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJzTGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTEuMiA5NmE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6TTMyIDI1NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg4NS42YzEwLjEtMzkuNCAzOC42LTcxLjUgNzUuOC04Ni42Yy05LjctNi0yMS4yLTkuNC0zMy40LTkuNEg5NmMtMzUuMyAwLTY0IDI4LjctNjQgNjR6bTQ2MS42IDMySDU3NmMxNy43IDAgMzItMTQuMyAzMi0zMmMwLTM1LjMtMjguNy02NC02NC02NEg0NDhjLTExLjcgMC0yMi43IDMuMS0zMi4xIDguNmMzOC4xIDE0LjggNjcuNCA0Ny4zIDc3LjcgODcuNHpNMzkxLjIgMjI2LjRjLTYuOS0xLjYtMTQuMi0yLjQtMjEuNi0yLjRoLTk2Yy04LjUgMC0xNi43IDEuMS0yNC41IDMuMWMtMzAuOCA4LjEtNTUuNiAzMS4xLTY2LjEgNjAuOWMtMy41IDEwLTUuNSAyMC44LTUuNSAzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmgyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJjMC0xMS4yLTEuOS0yMi01LjUtMzJjLTEwLjgtMzAuNy0zNi44LTU0LjItNjguOS02MS42ek01NjMuMiA5NmE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6TTMyMS42IDE5MmE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHpNMzIgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlcnNSYXlzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxIDdDMzEuNi0yLjMgMTYuNC0yLjMgNyA3Uy0yLjMgMzEuNiA3IDQxbDcyIDcyYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUw0MSA3ek01OTkgN0w1MjcgNzljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw3Mi03MmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwek03IDUwNWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGw3Mi03MmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwTDcgNDcxYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXptNTkyIDBjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC03Mi03MmMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWw3MiA3MnpNMzIwIDI1NmE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHpNMjEyLjEgMzM2Yy0yLjcgNy41LTQuMSAxNS42LTQuMSAyNGMwIDEzLjMgMTAuNyAyNCAyNCAyNEg0MDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRjMC04LjQtMS40LTE2LjUtNC4xLTI0Yy0uNS0xLjQtMS0yLjctMS42LTRjLTkuNC0yMi4zLTI5LjgtMzguOS01NC4zLTQzYy0zLjktLjctNy45LTEtMTItMUgyODBjLTQuMSAwLTguMSAuMy0xMiAxYy0uOCAuMS0xLjcgLjMtMi41IC41Yy0yNC45IDUuMS00NS4xIDIzLTUzLjQgNDYuNXpNMTc1LjggMjI0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptLTI2LjUgMzJDMTE5LjkgMjU2IDk2IDI3OS45IDk2IDMwOS4zYzAgMTQuNyAxMS45IDI2LjcgMjYuNyAyNi43aDU2LjFjOC0zNC4xIDMyLjgtNjEuNyA2NS4yLTczLjZjLTcuNS00LjEtMTYuMi02LjQtMjUuMy02LjRIMTQ5LjN6bTM2OCA4MGMxNC43IDAgMjYuNy0xMS45IDI2LjctMjYuN2MwLTI5LjUtMjMuOS01My4zLTUzLjMtNTMuM0g0MjEuM2MtOS4yIDAtMTcuOCAyLjMtMjUuMyA2LjRjMzIuNCAxMS45IDU3LjIgMzkuNSA2NS4yIDczLjZoNTYuMXpNNDY0IDIyNGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJzUmVjdGFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBDNDMgMCAwIDQzIDAgOTZWNDE2YzAgNTMgNDMgOTYgOTYgOTZINTQ0YzUzIDAgOTYtNDMgOTYtOTZWOTZjMC01My00My05Ni05Ni05Nkg5NnpNNjQgOTZjMC0xNy43IDE0LjMtMzIgMzItMzJINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWOTZ6bTE1OS44IDgwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTk2IDMwOS4zYzAgMTQuNyAxMS45IDI2LjcgMjYuNyAyNi43aDU2LjFjOC0zNC4xIDMyLjgtNjEuNyA2NS4yLTczLjZjLTcuNS00LjEtMTYuMi02LjQtMjUuMy02LjRIMTQ5LjNDMTE5LjkgMjU2IDk2IDI3OS45IDk2IDMwOS4zek00NjEuMiAzMzZoNTYuMWMxNC43IDAgMjYuNy0xMS45IDI2LjctMjYuN2MwLTI5LjUtMjMuOS01My4zLTUzLjMtNTMuM0g0MjEuM2MtOS4yIDAtMTcuOCAyLjMtMjUuMyA2LjRjMzIuNCAxMS45IDU3LjIgMzkuNSA2NS4yIDczLjZ6TTM3MiAyODljLTMuOS0uNy03LjktMS0xMi0xSDI4MGMtNC4xIDAtOC4xIC4zLTEyIDFjLTI2IDQuNC00Ny4zIDIyLjctNTUuOSA0N2MtMi43IDcuNS00LjEgMTUuNi00LjEgMjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRINDA4YzEzLjMgMCAyNC0xMC43IDI0LTI0YzAtOC40LTEuNC0xNi41LTQuMS0yNGMtOC42LTI0LjMtMjkuOS00Mi42LTU1LjktNDd6TTUxMiAxNzZhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMzIwIDI1NmE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlcnNTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDQ0MC42IDMyMEg2MTguN2MxMS44IDAgMjEuMy05LjYgMjEuMy0yMS4zQzY0MCAyMzkuOCA1OTIuMiAxOTIgNTMzLjMgMTkySDQ5MC43Yy0xNS45IDAtMzEgMy41LTQ0LjYgOS43YzEuMyA3LjIgMS45IDE0LjcgMS45IDIyLjNjMCAzMC4yLTEwLjUgNTgtMjggNzkuOWwtMjUuMi0xOS43QzQwOC4xIDI2Ny43IDQxNiAyNDYuOCA0MTYgMjI0YzAtNTMtNDMtOTYtOTYtOTZjLTMxLjEgMC01OC43IDE0LjgtNzYuMyAzNy43bC00MC42LTMxLjhjMTMtMTQuMiAyMC45LTMzLjEgMjAuOS01My45YzAtNDQuMi0zNS44LTgwLTgwLTgwQzExNi4zIDAgOTEuOSAxNC4xIDc3LjUgMzUuNUwzOC44IDUuMXpNMTA2LjcgMTkyQzQ3LjggMTkyIDAgMjM5LjggMCAyOTguN0MwIDMxMC40IDkuNiAzMjAgMjEuMyAzMjBIMjM0LjdjLjIgMCAuNCAwIC43IDBjLTIwLjYtMTguMi0zNS4yLTQyLjgtNDAuOC03MC44TDEyMS44IDE5MkgxMDYuN3pNMjYxLjMgMzUyQzE4Ny43IDM1MiAxMjggNDExLjcgMTI4IDQ4NS4zYzAgMTQuNyAxMS45IDI2LjcgMjYuNyAyNi43SDQ4NS4zYzEwLjUgMCAxOS41LTYgMjMuOS0xNC44TDMyNC45IDM1MkgyNjEuM3pNNTEyIDE2MEE4MCA4MCAwIDEgMCA1MTIgMGE4MCA4MCAwIDEgMCAwIDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlcnNWaWV3ZmluZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDQ4aDg4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDMyQzE0LjMgMCAwIDE0LjMgMCAzMlYxMzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0OHpNMTc1LjggMjI0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptLTI2LjUgMzJDMTE5LjkgMjU2IDk2IDI3OS45IDk2IDMwOS4zYzAgMTQuNyAxMS45IDI2LjcgMjYuNyAyNi43aDU2LjFjOC0zNC4xIDMyLjgtNjEuNyA2NS4yLTczLjZjLTcuNS00LjEtMTYuMi02LjQtMjUuMy02LjRIMTQ5LjN6bTM2OCA4MGMxNC43IDAgMjYuNy0xMS45IDI2LjctMjYuN2MwLTI5LjUtMjMuOS01My4zLTUzLjMtNTMuM0g0MjEuM2MtOS4yIDAtMTcuOCAyLjMtMjUuMyA2LjRjMzIuNCAxMS45IDU3LjIgMzkuNSA2NS4yIDczLjZoNTYuMXptLTg5LjQgMGMtOC42LTI0LjMtMjkuOS00Mi42LTU1LjktNDdjLTMuOS0uNy03LjktMS0xMi0xSDI4MGMtNC4xIDAtOC4xIC4zLTEyIDFjLTI2IDQuNC00Ny4zIDIyLjctNTUuOSA0N2MtMi43IDcuNS00LjEgMTUuNi00LjEgMjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRINDA4YzEzLjMgMCAyNC0xMC43IDI0LTI0YzAtOC40LTEuNC0xNi41LTQuMS0yNHpNNDY0IDIyNGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS04MC0zMmE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6TTUwNCA0OGg4OHY4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDUwNGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNHpNNDggNDY0VjM3NmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJIMTM2YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDQ4em00NTYgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzc2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djg4SDUwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0IDBhODAgODAgMCAxIDEgMCAxNjBBODAgODAgMCAxIDEgMTQ0IDB6TTUxMiAwYTgwIDgwIDAgMSAxIDAgMTYwQTgwIDgwIDAgMSAxIDUxMiAwek0wIDI5OC43QzAgMjM5LjggNDcuOCAxOTIgMTA2LjcgMTkyaDQyLjdjMTUuOSAwIDMxIDMuNSA0NC42IDkuN2MtMS4zIDcuMi0xLjkgMTQuNy0xLjkgMjIuM2MwIDM4LjIgMTYuOCA3Mi41IDQzLjMgOTZjLS4yIDAtLjQgMC0uNyAwSDIxLjNDOS42IDMyMCAwIDMxMC40IDAgMjk4Ljd6TTQwNS4zIDMyMGMtLjIgMC0uNCAwLS43IDBjMjYuNi0yMy41IDQzLjMtNTcuOCA0My4zLTk2YzAtNy42LS43LTE1LTEuOS0yMi4zYzEzLjYtNi4zIDI4LjctOS43IDQ0LjYtOS43aDQyLjdDNTkyLjIgMTkyIDY0MCAyMzkuOCA2NDAgMjk4LjdjMCAxMS44LTkuNiAyMS4zLTIxLjMgMjEuM0g0MDUuM3pNMjI0IDIyNGE5NiA5NiAwIDEgMSAxOTIgMCA5NiA5NiAwIDEgMSAtMTkyIDB6TTEyOCA0ODUuM0MxMjggNDExLjcgMTg3LjcgMzUyIDI2MS4zIDM1MkgzNzguN0M0NTIuMyAzNTIgNTEyIDQxMS43IDUxMiA0ODUuM2MwIDE0LjctMTEuOSAyNi43LTI2LjcgMjYuN0gxNTQuN2MtMTQuNyAwLTI2LjctMTEuOS0yNi43LTI2Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVV0ZW5zaWxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAwQzQwMCAwIDI4OCAzMiAyODggMTc2VjI4OGMwIDM1LjMgMjguNyA2NCA2NCA2NGgzMlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzNTIgMjQwIDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek02NCAxNkM2NCA3LjggNTcuOSAxIDQ5LjcgLjFTMzQuMiA0LjYgMzIuNCAxMi41TDIuMSAxNDguOEMuNyAxNTUuMSAwIDE2MS41IDAgMTY3LjljMCA0NS45IDM1LjEgODMuNiA4MCA4Ny43VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI1NS42YzQ0LjktNC4xIDgwLTQxLjggODAtODcuN2MwLTYuNC0uNy0xMi44LTIuMS0xOS4xTDE5MS42IDEyLjVjLTEuOC04LTkuMy0xMy4zLTE3LjQtMTIuNFMxNjAgNy44IDE2MCAxNlYxNTAuMmMwIDUuNC00LjQgOS44LTkuOCA5LjhjLTUuMSAwLTkuMy0zLjktOS44LTlMMTI3LjkgMTQuNkMxMjcuMiA2LjMgMTIwLjMgMCAxMTIgMHMtMTUuMiA2LjMtMTUuOSAxNC42TDgzLjcgMTUxYy0uNSA1LjEtNC43IDktOS44IDljLTUuNCAwLTkuOC00LjQtOS44LTkuOFYxNnptNDguMyAxNTJsLS4zIDAtLjMgMCAuMy0uNyAuMyAuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhViAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS43IDM0LjVjMTYuMy02LjggMzUgLjkgNDEuOCAxNy4yTDE5MiAzNjQuOCAzMjIuNSA1MS43YzYuOC0xNi4zIDI1LjUtMjQgNDEuOC0xNy4yczI0IDI1LjUgMTcuMiA0MS44bC0xNjAgMzg0Yy01IDExLjktMTYuNiAxOS43LTI5LjUgMTkuN3MtMjQuNi03LjgtMjkuNS0xOS43TDIuNSA3Ni4zYy02LjgtMTYuMyAuOS0zNSAxNy4yLTQxLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZhblNodXR0bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMTA0djg4aDk2Vjk2SDcyYy00LjQgMC04IDMuNi04IDh6bTQ4MiA4OEw0NjUuMSA5NkgzODR2OTZINTQ2em0tMjI2IDBWOTZIMjI0djk2aDk2ek01OTIgMzg0SDU3NmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05NkgyNTZjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjEwNEMwIDY0LjIgMzIuMiAzMiA3MiAzMkgxOTIgMzUyIDQ2NS4xYzE4LjkgMCAzNi44IDguMyA0OSAyMi44TDYyNSAxODYuNWM5LjcgMTEuNSAxNSAyNi4xIDE1IDQxLjJWMzM2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4em0tNjQgMGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0xNjAgNDMyYTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmF1bHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDgwbDE2IDMyaDY0bDE2LTMySDQwMGwxNiAzMmg2NGwxNi0zMmgxNmMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjI0IDMyMGE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHptMC0yNDBhMTYwIDE2MCAwIDEgMSAwIDMyMCAxNjAgMTYwIDAgMSAxIDAtMzIwek00ODAgMjIxLjNWMzM2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjIyMS4zYy0xOC42LTYuNi0zMi0yNC40LTMyLTQ1LjNjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OGMwIDIwLjktMTMuNCAzOC43LTMyIDQ1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZlY3RvclNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjggODBoMzJ2MzJIMzY4Vjgwek0zNTIgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMySDEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDMyIDAgNDYuMyAwIDY0djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyVjM1MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJIOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJIMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMlYxNjBjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJIMzUyek05NiAxNjBjMTcuNyAwIDMyLTE0LjMgMzItMzJIMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMyVjM1MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJIMTI4YzAtMTcuNy0xNC4zLTMyLTMyLTMyVjE2MHpNNDggNDAwSDgwdjMySDQ4VjQwMHptMzIwIDMyVjQwMGgzMnYzMkgzNjh6TTQ4IDExMlY4MEg4MHYzMkg0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVudXNEb3VibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDI4OGExMTIgMTEyIDAgMSAwIDAtMjI0IDExMiAxMTIgMCAxIDAgMCAyMjR6TTM2OCAxNzZjMCA4Ni4zLTYyLjEgMTU4LjEtMTQ0IDE3My4xVjM4NGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyMjR2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ4SDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgzMlYzNDkuMUM3OC4xIDMzNC4xIDE2IDI2Mi4zIDE2IDE3NkMxNiA3OC44IDk0LjggMCAxOTIgMHMxNzYgNzguOCAxNzYgMTc2ek0zNDQgMzE4YzE0LjYtMTUuNiAyNi44LTMzLjQgMzYtNTNjMTguOCAxNC40IDQyLjQgMjMgNjggMjNjNjEuOSAwIDExMi01MC4xIDExMi0xMTJzLTUwLjEtMTEyLTExMi0xMTJjLTI1LjYgMC00OS4xIDguNi02OCAyM2MtOS4zLTE5LjUtMjEuNS0zNy40LTM2LTUzQzM3My4xIDEyLjYgNDA5LjEgMCA0NDggMGM5Ny4yIDAgMTc2IDc4LjggMTc2IDE3NmMwIDg2LjMtNjIuMSAxNTguMS0xNDQgMTczLjFWMzg0aDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQ4MHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDhIMzg0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDMyVjM0OS4xYy0yNi42LTQuOS01MS4xLTE1LjctNzItMzEuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVudXNNYXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAyODhhMTEyIDExMiAwIDEgMCAwLTIyNCAxMTIgMTEyIDAgMSAwIDAgMjI0ek0zNTIgMTc2YzAgODYuMy02Mi4xIDE1OC4xLTE0NCAxNzMuMVYzODRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjA4djMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OEgxMTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoMzJWMzQ5LjFDNjIuMSAzMzQuMSAwIDI2Mi4zIDAgMTc2QzAgNzguOCA3OC44IDAgMTc2IDBzMTc2IDc4LjggMTc2IDE3NnpNMjcxLjkgMzYwLjZjMTkuMy0xMC4xIDM2LjktMjMuMSA1Mi4xLTM4LjRjMjAgMTguNSA0Ni43IDI5LjggNzYuMSAyOS44YzYxLjkgMCAxMTItNTAuMSAxMTItMTEycy01MC4xLTExMi0xMTItMTEyYy03LjIgMC0xNC4zIC43LTIxLjEgMmMtNC45LTIxLjUtMTMtNDEuNy0yNC02MC4yQzM2OS4zIDY2IDM4NC40IDY0IDQwMCA2NGMzNyAwIDcxLjQgMTEuNCA5OS44IDMxbDIwLjYtMjAuNkw0ODcgNDFjLTYuOS02LjktOC45LTE3LjItNS4yLTI2LjJTNDk0LjMgMCA1MDQgMEg2MTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRWMTM2YzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTMzLjQtMzMuNEw1NDUgMTQwLjJjMTkuNSAyOC40IDMxIDYyLjcgMzEgOTkuOGMwIDk3LjItNzguOCAxNzYtMTc2IDE3NmMtNTAuNSAwLTk2LTIxLjMtMTI4LjEtNTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVudXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgMTc2YTExMiAxMTIgMCAxIDEgMjI0IDBBMTEyIDExMiAwIDEgMSA4MCAxNzZ6TTIyNCAzNDkuMWM4MS45LTE1IDE0NC04Ni44IDE0NC0xNzMuMUMzNjggNzguOCAyODkuMiAwIDE5MiAwUzE2IDc4LjggMTYgMTc2YzAgODYuMyA2Mi4xIDE1OC4xIDE0NCAxNzMuMVYzODRIMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDMydjMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDQ4aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDIyNFYzNDkuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVzdFBhdGNoZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUxLjIgNjkuN2w1NS45IDE2Ny43LTExIDMzLjFjLTIuNyA4LjItNC4xIDE2LjctNC4xIDI1LjNWNDY0YzAgMTQuNSAzLjkgMjguMiAxMC43IDM5LjlDMTk1IDUwOSAxODUuOSA1MTIgMTc2IDUxMkg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMjcwLjVjMC05LjUgMi44LTE4LjcgOC4xLTI2LjZsNDcuOS03MS44YzUuMy03LjkgOC4xLTE3LjEgOC4xLTI2LjZWMTI4IDU0LjMgNDhDNjQgMjEuNSA4NS41IDAgMTEyIDBoNC41Yy4yIDAgLjQgMCAuNiAwYy40IDAgLjggMCAxLjIgMGMxOC44IDAgMzQuMSA5LjcgNDQuMSAxOC44QzE3MS42IDI3LjIgMTkwLjggNDAgMjI0IDQwczUyLjQtMTIuOCA2MS43LTIxLjJDMjk1LjcgOS43IDMxMSAwIDMyOS43IDBjLjQgMCAuOCAwIDEuMiAwYy4yIDAgLjQgMCAuNiAwSDMzNmMyNi41IDAgNDggMjEuNSA0OCA0OHY2LjNWMTI4djE3LjVjMCA5LjUgMi44IDE4LjcgOC4xIDI2LjZsNDcuOSA3MS44YzUuMyA3LjkgOC4xIDE3LjEgOC4xIDI2LjZWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDI3MmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMjk1LjhjMC01LjIgLjgtMTAuMyAyLjUtMTUuMkwyOTYuOCA2OS43QzI3OS40IDc5LjcgMjU1LjQgODggMjI0IDg4cy01NS40LTguMy03Mi44LTE4LjN6TTk2IDQ1NmE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6TTYzLjUgMjU1LjVjLTQuNyA0LjctNC43IDEyLjMgMCAxN0w3OSAyODggNjMuNSAzMDMuNWMtNC43IDQuNy00LjcgMTIuMyAwIDE3czEyLjMgNC43IDE3IDBMOTYgMzA1bDE1LjUgMTUuNWM0LjcgNC43IDEyLjMgNC43IDE3IDBzNC43LTEyLjMgMC0xN0wxMTMgMjg4bDE1LjUtMTUuNWM0LjctNC43IDQuNy0xMi4zIDAtMTdzLTEyLjMtNC43LTE3IDBMOTYgMjcxIDgwLjUgMjU1LjVjLTQuNy00LjctMTIuMy00LjctMTcgMHpNMzA0IDI4MHY4IDMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMiA4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0aC04di04YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWZXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwNy4xIDIzNy40TDE1MS4yIDY5LjdDMTY4LjYgNzkuNyAxOTIuNiA4OCAyMjQgODhzNTUuNC04LjMgNzIuOC0xOC4zTDIyNi41IDI4MC42Yy0xLjYgNC45LTIuNSAxMC0yLjUgMTUuMlY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhINDAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI3MC41YzAtOS41LTIuOC0xOC43LTguMS0yNi42bC00Ny45LTcxLjhjLTUuMy03LjktOC4xLTE3LjEtOC4xLTI2LjZWMTI4IDU0LjMgNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhoLTQuNWMtLjIgMC0uNCAwLS42IDBjLS40IDAtLjggMC0xLjIgMEMzMTEgMCAyOTUuNyA5LjcgMjg1LjcgMTguOEMyNzYuNCAyNy4yIDI1Ny4yIDQwIDIyNCA0MHMtNTIuNC0xMi44LTYxLjctMjEuMkMxNTIuMyA5LjcgMTM3IDAgMTE4LjMgMGMtLjQgMC0uOCAwLTEuMiAwYy0uMiAwLS40IDAtLjYgMEgxMTJDODUuNSAwIDY0IDIxLjUgNjQgNDh2Ni4zVjEyOHYxNy41YzAgOS41LTIuOCAxOC43LTguMSAyNi42TDguMSAyNDMuOUMyLjggMjUxLjggMCAyNjEuMSAwIDI3MC41VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgxNzZjOS45IDAgMTktMyAyNi43LTguMUMxOTUuOSA0OTIuMiAxOTIgNDc4LjUgMTkyIDQ2NFYyOTUuOGMwLTguNiAxLjQtMTcuMSA0LjEtMjUuM2wxMS0zMy4xek0zNDcuMyAzNTYuN2w0OCA0OGM2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwbC00OC00OGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwem0tMjk0LjYgNDhsNDgtNDhjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42bC00OCA0OGMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlhbENpcmNsZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJIOTZoNjQgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJWMjY2LjhjLTIwLjIgMjguNi0zMiA2My41LTMyIDEwMS4yYzAgMjUuMiA1LjMgNDkuMSAxNC44IDcwLjhDMTg5LjUgNDYzLjcgMTYwLjYgNDgwIDEyOCA0ODBjLTUzIDAtOTYtNDMtOTYtOTZWOTZDMTQuMyA5NiAwIDgxLjcgMCA2NHpNOTYgOTZ2OTZoNjRWOTZIOTZ6TTIyNCAzNjhhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMjExLjMtNDMuM2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMMzUyIDM4NS40bC0yOC43LTI4LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZsNDAgNDBjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBsNzItNzJjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpYWxWaXJ1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZWMzg0YzAgNTMgNDMgOTYgOTYgOTZjMjguNiAwIDU0LjItMTIuNSA3MS44LTMyLjNjLjEtMTQuMiA1LjYtMjguMyAxNi40LTM5LjFjLjItLjIgLjEtLjYtLjItLjZjLTMwLjkgMC01Ni0yNS4xLTU2LTU2czI1LjEtNTYgNTYtNTZjLjMgMCAuNC0uNCAuMi0uNmMtMjEuOS0yMS45LTIxLjktNTcuMyAwLTc5LjJjMi40LTIuNCA1LTQuNiA3LjgtNi41Vjk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE2MCA5NiAzMnpNOTYgMTkyVjk2aDY0djk2SDk2ek0yMTYgMzc2YzI4LjggMCA0My4yIDM0LjggMjIuOSA1NS4yYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBjMjAuNC0yMC40IDU1LjItNS45IDU1LjIgMjIuOWMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMjguOCAzNC44LTQzLjIgNTUuMi0yMi45YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUM0NDQuOCA0MTAuOCA0NTkuMiAzNzYgNDg4IDM3NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGMtMjguOCAwLTQzLjItMzQuOC0yMi45LTU1LjJjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEM0MTAuOCAyNTkuMiAzNzYgMjQ0LjggMzc2IDIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGMwIDI4LjgtMzQuOCA0My4yLTU1LjIgMjIuOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWMyMC40IDIwLjQgNS45IDU1LjItMjIuOSA1NS4yYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0em0xMDQtODhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em00MCA5NmEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Mi42IDkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsOS40IDkuNEwyOC4xIDM0Mi42QzEwLjEgMzYwLjYgMCAzODUgMCA0MTAuNVY0MTZjMCA1MyA0MyA5NiA5NiA5Nmg1LjVjMjUuNSAwIDQ5LjktMTAuMSA2Ny45LTI4LjFMNDQ4IDIwNS4zbDkuNCA5LjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtMzItMzItOTYtOTYtMzItMzJ6TTIwNS4zIDI1NkwzNTIgMTA5LjMgNDAyLjcgMTYwbC05NiA5NkgyMDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlhbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkg4OGg0OCA1NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMlY0MDBjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBWOTZDMTQuMyA5NiAwIDgxLjcgMCA2NHpNMTM2IDk2SDg4VjI1Nmg0OFY5NnpNMjg4IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDU2IDQ4IDU2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyVjQwMGMwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MFY5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTQyNCA5NkgzNzZWMjU2aDQ4Vjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWRlb1NsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdsLTg2LjQtNjcuNyAxMy44IDkuMmM5LjggNi41IDIyLjQgNy4yIDMyLjkgMS42czE2LjktMTYuNCAxNi45LTI4LjJWMTI4YzAtMTEuOC02LjUtMjIuNi0xNi45LTI4LjJzLTIzLTUtMzIuOSAxLjZsLTk2IDY0TDQ0OCAxNzQuOVYxOTIgMzIwdjUuOGwtMzItMjUuMVYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMTEzLjlMMzguOCA1LjF6TTQwNyA0MTYuN0wzMi4zIDEyMS41Yy0uMiAyLjEtLjMgNC4zLS4zIDYuNVYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzUyYzIzLjQgMCA0My45LTEyLjYgNTUtMzEuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NCAyOC43IDY0IDY0VjM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4ek01NTkuMSA5OS44YzEwLjQgNS42IDE2LjkgMTYuNCAxNi45IDI4LjJWMzg0YzAgMTEuOC02LjUgMjIuNi0xNi45IDI4LjJzLTIzIDUtMzIuOS0xLjZsLTk2LTY0TDQxNiAzMzcuMVYzMjAgMTkyIDE3NC45bDE0LjItOS41IDk2LTY0YzkuOC02LjUgMjIuNC03LjIgMzIuOS0xLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpaGFyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODEgMjJMMzA1LjggNC43YzEuMy0uOSAyLjctMS44IDQuMS0yLjRDMzEzLjEgLjcgMzE2LjYgMCAzMjAgMHM2LjkgLjcgMTAuMSAyLjJjMS40IC43IDIuOCAxLjUgNC4xIDIuNEwzNTkgMjJDMzkzIDQ1LjggNDMwLjggNjMuNSA0NzAuOCA3NC40bDIzIDYuM2MxLjggLjUgMy42IDEuMSA1LjIgMmMzLjIgMS43IDUuOSA0IDguMSA2LjhjMy44IDQuOSA1LjYgMTEuMyA0LjcgMTcuOGMtLjQgMi44LTEuMiA1LjQtMi41IDcuOGMtMS43IDMuMi00IDUuOS02LjggOC4xYy00LjMgMy4yLTkuNiA1LjEtMTUuMSA0LjlINDgwdjU2LjFsNi40IDUuMSA1LjIgNC4xYzIxLjEgMTYuNyA0NSAyOS42IDcwLjUgMzguMWwyOC45IDkuNmMxLjYgLjUgMy4yIDEuMiA0LjYgMmMzLjEgMS43IDUuOCA0LjEgNy44IDYuOXMzLjUgNi4xIDQuMSA5LjZjLjUgMi43IC42IDUuNSAuMSA4LjNzLTEuNCA1LjQtMi43IDcuOGMtMS43IDMuMS00LjEgNS44LTYuOSA3LjhzLTYuMSAzLjUtOS42IDQuMWMtMS42IC4zLTMuMyAuNC01IC40SDU0NHY2NS45YzIwLjUgMjIuOCA0Ny40IDM5LjIgNzcuNCA0Ni43QzYzMiA0MDMgNjQwIDQxMi42IDY0MCA0MjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRINTc2djMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OEgzNTJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ4SDEyOHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDhIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0YzAtMTEuNCA4LTIxIDE4LjYtMjMuNGMzMC03LjYgNTYuOS0yMy45IDc3LjQtNDYuN1YyODhINTYuNmMtMS43IDAtMy40LS4xLTUtLjRjLTMuNS0uNy02LjgtMi4xLTkuNi00LjFzLTUuMi00LjctNy03LjhjLTEuMy0yLjQtMi4zLTUtMi43LTcuOHMtLjQtNS42IC4xLTguM2MuNy0zLjUgMi4xLTYuOCA0LjEtOS42czQuNy01LjIgNy44LTYuOWMxLjQtLjggMy0xLjUgNC42LTJsMjguOS05LjZjMjUuNS04LjUgNDkuNC0yMS40IDcwLjUtMzguMWw1LjItNC4xIDYuNC01LjFWMTc2IDEyOGgtNy41Yy01LjUgLjEtMTAuOC0xLjctMTUuMS00LjljLTIuOC0yLjEtNS4xLTQuOC02LjgtOC4xYy0xLjItMi40LTIuMS01LTIuNS03LjhjLS45LTYuNSAuOS0xMi44IDQuNy0xNy44YzIuMS0yLjggNC44LTUuMSA4LjEtNi44YzEuNi0uOCAzLjQtMS41IDUuMi0ybDIzLTYuM0MyMDkuMiA2My41IDI0NyA0NS44IDI4MSAyMnpNNDE2IDEyOEgzMjAgMjI0djY0aDcyIDQ4IDcyVjEyOHpNMTYwIDI4OHY2NEgyOTZoMjQgMjRINDgwVjI4OEgzNDQgMzIwaDBIMjk2IDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlydXNDb3ZpZFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNDcyLjEgMzQ0LjdjMTEuNC0xOS41IDE5LjEtNDEuNCAyMi4zLTY0LjdINTI4djE2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjE2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djE2SDQ5NC40Yy00LjItMzAuNy0xNi4zLTU4LjgtMzQuMS04Mi4zTDQ4NCAxMjUuOWwxMS4zIDExLjNjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDQ3Mi43IDQ2LjdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlMNDUwLjEgOTJsLTIzLjggMjMuOEM0MDIuOCA5Ny45IDM3NC43IDg1LjggMzQ0IDgxLjZWNDhoMTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjgwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDE2VjgxLjZjLTMwLjcgNC4yLTU4LjggMTYuMy04Mi4zIDM0LjFMMTg5LjkgOTJsMTEuMy0xMS4zYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBMMTM0LjEgNzkuOCAzOC44IDUuMXptMzYyLjUgNDA3TDE0OS4yIDIxMy41Yy0xLjUgNi0yLjcgMTIuMi0zLjUgMTguNUgxMTJWMjE2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djgwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjgwaDMzLjZjNC4yIDMwLjcgMTYuMyA1OC44IDM0LjEgODIuM0wxNTYgMzg2LjFsLTExLjMtMTEuM2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWw1Ni42IDU2LjZjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDE4OS45IDQyMGwyMy44LTIzLjhjMjMuNSAxNy45IDUxLjcgMjkuOSA4Mi4zIDM0LjFWNDY0SDI4MGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgzNDRWNDMwLjRjMjAuNC0yLjggMzkuNy05LjEgNTcuMy0xOC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaXJ1c0NvdmlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg4MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyODBWODEuNmMzMC43IDQuMiA1OC44IDE2LjMgODIuMyAzNC4xTDM4Ni4xIDkyIDM3NC44IDgwLjZjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw1Ni42IDU2LjZjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMEw0MjAgMTI1LjlsLTIzLjggMjMuOGMxNy45IDIzLjUgMjkuOSA1MS43IDM0LjEgODIuM0g0NjRWMjE2YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2ODBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjgwSDQzMC40Yy00LjIgMzAuNy0xNi4zIDU4LjgtMzQuMSA4Mi4zTDQyMCAzODYuMWwxMS4zLTExLjNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC01Ni42IDU2LjZjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlMMzg2LjEgNDIwbC0yMy44LTIzLjhjLTIzLjUgMTcuOS01MS43IDI5LjktODIuMyAzNC4xVjQ2NGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoMTZWNDMwLjRjLTMwLjctNC4yLTU4LjgtMTYuMy04Mi4zLTM0LjFMMTI1LjkgNDIwbDExLjMgMTEuM2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDQ2LjcgNDA4LjdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMEw5MiAzODYuMWwyMy44LTIzLjhDOTcuOSAzMzguOCA4NS44IDMxMC43IDgxLjYgMjgwSDQ4djE2YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjIxNmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djE2SDgxLjZjNC4yLTMwLjcgMTYuMy01OC44IDM0LjEtODIuM0w5MiAxMjUuOSA4MC42IDEzNy4yYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDU2LjYtNTYuNmM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlMMTI1LjkgOTJsMjMuOCAyMy44YzIzLjUtMTcuOSA1MS43LTI5LjkgODIuMy0zNC4xVjQ4SDIxNmMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bTQ4IDIwMGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwem02NCAxMDRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaXJ1c1NsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdsLTE1NC4zLTEyMWMtMi0zMC4xIDIwLjgtNjAuMSA1Ni02MC4xSDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg1MzIuNWMtNDkuOSAwLTc0LjktNjAuMy0zOS42LTk1LjZsOC4yLTguMmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtOC4yIDguMkM0MTIuMyAxMTguNCAzNTIgOTMuNCAzNTIgNDMuNVYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0My41YzAgNDkuOS02MC4zIDc0LjktOTUuNiAzOS42TDE4NC4yIDc1Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGMtMS42IDEuNi0zLjEgMy40LTQuMyA1LjNMMzguOCA1LjF6bTIyNS44IDE3N2M2LjktMy45IDE0LjktNi4xIDIzLjQtNi4xYzI2LjUgMCA0OCAyMS41IDQ4IDQ4YzAgNC40LS42IDguNy0xLjcgMTIuN2wtNjkuNy01NC42ek00MDIgNDEyLjdMMTQ0LjcgMjEwYy05LjUgOC41LTIyLjIgMTQtMzcuMiAxNEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmgxMS41YzQ5LjkgMCA3NC45IDYwLjMgMzkuNiA5NS42bC04LjIgOC4yYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDguMi04LjJjMzUuMy0zNS4zIDk1LjYtMTAuMyA5NS42IDM5LjZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDY4LjVjMC0zMS4yIDIzLjYtNTIuNyA1MC01NS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaXJ1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWNDMuNWMwIDQ5LjktNjAuMyA3NC45LTk1LjYgMzkuNkwxMjAuMiA3NUMxMDcuNyA2Mi41IDg3LjUgNjIuNSA3NSA3NXMtMTIuNSAzMi44IDAgNDUuM2w4LjIgOC4yQzExOC40IDE2My43IDkzLjQgMjI0IDQzLjUgMjI0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQzLjVjNDkuOSAwIDc0LjkgNjAuMyAzOS42IDk1LjZMNzUgMzkxLjhjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsOC4yLTguMmMzNS4zLTM1LjMgOTUuNi0xMC4zIDk1LjYgMzkuNlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0NjguNWMwLTQ5LjkgNjAuMy03NC45IDk1LjYtMzkuNmw4LjIgOC4yYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTguMi04LjJjLTM1LjMtMzUuMy0xMC4zLTk1LjYgMzkuNi05NS42SDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0NjguNWMtNDkuOSAwLTc0LjktNjAuMy0zOS42LTk1LjZsOC4yLTguMmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtOC4yIDguMkMzNDguMyAxMTguNCAyODggOTMuNCAyODggNDMuNVYzMnpNMTc2IDIyNGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem0xMjggNTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaXJ1c2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0VjM3LjVjMCAzNS42IDQzLjEgNTMuNSA2OC4zIDI4LjNsOS41LTkuNWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTkuNSA5LjVDMjkzIDEyNC45IDMxMC45IDE2OCAzNDYuNSAxNjhIMzYwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDM0Ni41Yy0zNS42IDAtNTMuNSA0My4xLTI4LjMgNjguM2w5LjUgOS41YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTkuNS05LjVDMjU5LjEgMjkzIDIxNiAzMTAuOSAyMTYgMzQ2LjVWMzYwYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjM0Ni41YzAtMzUuNi00My4xLTUzLjUtNjguMy0yOC4zbC05LjUgOS41Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDkuNS05LjVDOTEgMjU5LjEgNzMuMSAyMTYgMzcuNSAyMTZIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRIMzcuNWMzNS42IDAgNTMuNS00My4xIDI4LjMtNjguM2wtOS41LTkuNWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDkuNSA5LjVDMTI0LjkgOTEgMTY4IDczLjEgMTY4IDM3LjVWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6bTQ4IDIyNGExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bS00OC02NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0zMjAgODBjMCAzMyAzOS45IDQ5LjUgNjMuMiAyNi4yYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNkM1NzQuNSAzMTIuMSA1OTEgMzUyIDYyNCAzNTJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZjLTMzIDAtNDkuNSAzOS45LTI2LjIgNjMuMmM2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwQzU1MS45IDQ0Ni41IDUxMiA0NjMgNTEyIDQ5NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmMwLTMzLTM5LjktNDkuNS02My4yLTI2LjJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZDNDE3LjUgNDIzLjkgNDAxIDM4NCAzNjggMzg0Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2YzMzIDAgNDkuNS0zOS45IDI2LjItNjMuMmMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwQzQ0MC4xIDI4OS41IDQ4MCAyNzMgNDgwIDI0MGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2em0wIDExMmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2ljZW1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0IDMyMGE4MCA4MCAwIDEgMSAwLTE2MCA4MCA4MCAwIDEgMSAwIDE2MHptMTE5LjggMGMxNS4zLTIyLjkgMjQuMi01MC40IDI0LjItODBjMC03OS41LTY0LjUtMTQ0LTE0NC0xNDRTMCAxNjAuNSAwIDI0MHM2NC41IDE0NCAxNDQgMTQ0SDQ5NmM3OS41IDAgMTQ0LTY0LjUgMTQ0LTE0NHMtNjQuNS0xNDQtMTQ0LTE0NHMtMTQ0IDY0LjUtMTQ0IDE0NGMwIDI5LjYgOC45IDU3LjEgMjQuMiA4MEgyNjMuOHpNNDk2IDE2MGE4MCA4MCAwIDEgMSAwIDE2MCA4MCA4MCAwIDEgMSAwLTE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm9sY2FubyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMTQ0Yy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0YzE1LjcgMCAzMCA1LjYgNDEuMiAxNUMyMTIuNCAxMi40IDIzMi43IDAgMjU2IDBzNDMuNiAxMi40IDU0LjggMzFDMzIyIDIxLjYgMzM2LjMgMTYgMzUyIDE2YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0Yy0xNC43IDAtMjguMy01LTM5LjEtMTMuM2wtMzIgNDhDMjc1LjMgMTg3IDI2NiAxOTIgMjU2IDE5MnMtMTkuMy01LTI0LjktMTMuM2wtMzItNDhDMTg4LjMgMTM5IDE3NC43IDE0NCAxNjAgMTQ0ek0xNDQgMzUybDQ4LjQtMjQuMmMxMC4yLTUuMSAyMS42LTcuOCAzMy03LjhjMTkuNiAwIDM4LjQgNy44IDUyLjIgMjEuNmwzMi41IDMyLjVjNi4zIDYuMyAxNC45IDkuOSAyMy44IDkuOWMxMS4zIDAgMjEuOC01LjYgMjgtMTVsOS43LTE0LjYtNTguOS02Ni4zYy05LjEtMTAuMi0yMi4yLTE2LjEtMzUuOS0xNi4xSDIzNS4xYy0xMy43IDAtMjYuOCA1LjktMzUuOSAxNi4xbC01OS45IDY3LjRMMTQ0IDM1MnptMTkuNC05NS44YzE4LjItMjAuNSA0NC4zLTMyLjIgNzEuOC0zMi4yaDQxLjhjMjcuNCAwIDUzLjUgMTEuNyA3MS44IDMyLjJsMTUwLjIgMTY5YzguNSA5LjUgMTMuMiAyMS45IDEzLjIgMzQuN2MwIDI4LjgtMjMuNCA1Mi4yLTUyLjIgNTIuMkg1Mi4yQzIzLjQgNTEyIDAgNDg4LjYgMCA0NTkuOGMwLTEyLjggNC43LTI1LjEgMTMuMi0zNC43bDE1MC4yLTE2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm9sbGV5YmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTEuOCAyNjcuNGMtMjYuMSA4LjctNTMuNCAxMy44LTgxIDE1LjFjOS4yLTEwNS4zLTMxLjUtMjA0LjItMTAzLjItMjcyLjRDNDM0LjEgNDEuMSA1MTIgMTM5LjUgNTEyIDI1NmMwIDMuOC0uMSA3LjYtLjIgMTEuNHptLTMuOSAzNC43Yy01LjggMzItMTcuNiA2Mi0zNC4yIDg4LjdjLTk3LjUgNDguNS0yMTcuNyA0Mi42LTMxMS45LTI0LjVjMjMuNy0zNi4yIDU1LjQtNjcuNyA5NC41LTkxLjhjNzkuOSA0My4yIDE3MC4xIDUwLjggMjUxLjYgMjcuNnptLTIzNi01NS41Yy0yLjUtOTAuOS00MS4xLTE3Mi43LTEwMS45LTIzMS43QzE5Ni44IDUuMiAyMjUuOCAwIDI1NiAwYzIuNyAwIDUuMyAwIDcuOSAuMWM5MC44IDYwLjIgMTQ1LjcgMTY3LjIgMTM0LjcgMjgyLjNjLTQzLjEtMi40LTg2LjQtMTQuMS0xMjYuOC0zNS45ek0xMzggMjguOGMyMC42IDE4LjMgMzguNyAzOS40IDUzLjcgNjIuNkM5NS45IDEzNi4xIDMwLjYgMjIwLjggNy4zIDMxNi45QzIuNSAyOTcuNCAwIDI3NyAwIDI1NkMwIDE1Ny4yIDU2IDcxLjUgMTM4IDI4Ljh6bTY5LjYgOTAuNWMxOS41IDM4LjYgMzEgODEuOSAzMi4zIDEyNy43QzE2Mi41IDI5NC42IDExMC45IDM2OC45IDkwLjIgNDUxQzY2IDQzMC40IDQ1LjYgNDA1LjQgMzAuNCAzNzcuMmM2LjctMTA4LjcgNzEuOS0yMDkuOSAxNzcuMS0yNTcuOXpNMjU2IDUxMmMtNTAuNyAwLTk4LTE0LjctMTM3LjgtNDAuMmM1LjYtMjcgMTQuOC01My4xIDI3LjQtNzcuN0MyMzIuMiA0NTQuNiAzMzguMSA0NjguOCA0MzMgNDQxYy00NiA0NC0xMDguMyA3MS0xNzcgNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZvbHVtZUhpZ2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTMzLjYgMzIuNUM1OTguNSA4NS4yIDY0MCAxNjUuOCA2NDAgMjU2cy00MS41IDE3MC43LTEwNi40IDIyMy41Yy0xMC4zIDguNC0yNS40IDYuOC0zMy44LTMuNXMtNi44LTI1LjQgMy41LTMzLjhDNTU3LjUgMzk4LjIgNTkyIDMzMS4yIDU5MiAyNTZzLTM0LjUtMTQyLjItODguNy0xODYuM2MtMTAuMy04LjQtMTEuOC0yMy41LTMuNS0zMy44czIzLjUtMTEuOCAzMy44LTMuNXpNNDczLjEgMTA3YzQzLjIgMzUuMiA3MC45IDg4LjkgNzAuOSAxNDlzLTI3LjcgMTEzLjgtNzAuOSAxNDljLTEwLjMgOC40LTI1LjQgNi44LTMzLjgtMy41cy02LjgtMjUuNCAzLjUtMzMuOEM0NzUuMyAzNDEuMyA0OTYgMzAxLjEgNDk2IDI1NnMtMjAuNy04NS4zLTUzLjItMTExLjhjLTEwLjMtOC40LTExLjgtMjMuNS0zLjUtMzMuOHMyMy41LTExLjggMzMuOC0zLjV6bS02MC41IDc0LjVDNDM0LjEgMTk5LjEgNDQ4IDIyNS45IDQ0OCAyNTZzLTEzLjkgNTYuOS0zNS40IDc0LjVjLTEwLjMgOC40LTI1LjQgNi44LTMzLjgtMy41cy02LjgtMjUuNCAzLjUtMzMuOEMzOTMuMSAyODQuNCA0MDAgMjcxIDQwMCAyNTZzLTYuOS0yOC40LTE3LjctMzcuM2MtMTAuMy04LjQtMTEuOC0yMy41LTMuNS0zMy44czIzLjUtMTEuOCAzMy44LTMuNXpNMzAxLjEgMzQuOEMzMTIuNiA0MCAzMjAgNTEuNCAzMjAgNjRWNDQ4YzAgMTIuNi03LjQgMjQtMTguOSAyOS4ycy0yNSAzLjEtMzQuNC01LjNMMTMxLjggMzUySDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYyMjRjMC0zNS4zIDI4LjctNjQgNjQtNjRoNjcuOEwyNjYuNyA0MC4xYzkuNC04LjQgMjIuOS0xMC40IDM0LjQtNS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2x1bWVMb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAxLjEgMzQuOEMzMTIuNiA0MCAzMjAgNTEuNCAzMjAgNjRWNDQ4YzAgMTIuNi03LjQgMjQtMTguOSAyOS4ycy0yNSAzLjEtMzQuNC01LjNMMTMxLjggMzUySDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYyMjRjMC0zNS4zIDI4LjctNjQgNjQtNjRoNjcuOEwyNjYuNyA0MC4xYzkuNC04LjQgMjIuOS0xMC40IDM0LjQtNS4zek00MTIuNiAxODEuNUM0MzQuMSAxOTkuMSA0NDggMjI1LjkgNDQ4IDI1NnMtMTMuOSA1Ni45LTM1LjQgNzQuNWMtMTAuMyA4LjQtMjUuNCA2LjgtMzMuOC0zLjVzLTYuOC0yNS40IDMuNS0zMy44QzM5My4xIDI4NC40IDQwMCAyNzEgNDAwIDI1NnMtNi45LTI4LjQtMTcuNy0zNy4zYy0xMC4zLTguNC0xMS44LTIzLjUtMy41LTMzLjhzMjMuNS0xMS44IDMzLjgtMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2x1bWVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDY0YzAtMTIuNi03LjQtMjQtMTguOS0yOS4ycy0yNS0zLjEtMzQuNCA1LjNMMTMxLjggMTYwSDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NHY2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGg2Ny44TDI2Ni43IDQ3MS45YzkuNCA4LjQgMjIuOSAxMC40IDM0LjQgNS4zUzMyMCA0NjAuNiAzMjAgNDQ4VjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2x1bWVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDEuMSAzNC44QzMxMi42IDQwIDMyMCA1MS40IDMyMCA2NFY0NDhjMCAxMi42LTcuNCAyNC0xOC45IDI5LjJzLTI1IDMuMS0zNC40LTUuM0wxMzEuOCAzNTJINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjIyNGMwLTM1LjMgMjguNy02NCA2NC02NGg2Ny44TDI2Ni43IDQwLjFjOS40LTguNCAyMi45LTEwLjQgMzQuNC01LjN6TTQyNSAxNjdsNTUgNTUgNTUtNTVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC01NSA1NSA1NSA1NWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC01NS01NS01NSA1NWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw1NS01NS01NS01NWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWckNhcmRib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzYgNjRINjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDE4NC40YzI0LjIgMCA0Ni40LTEzLjcgNTcuMi0zNS40bDMyLTY0YzguOC0xNy41IDI2LjctMjguNiA0Ni4zLTI4LjZzMzcuNSAxMS4xIDQ2LjMgMjguNmwzMiA2NGMxMC44IDIxLjcgMzMgMzUuNCA1Ny4yIDM1LjRINTc2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NHpNOTYgMjQwYTY0IDY0IDAgMSAxIDEyOCAwQTY0IDY0IDAgMSAxIDk2IDI0MHptMzg0LTY0YTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjggMzRjMTYuNS02LjIgMzUgMi4yIDQxLjIgMTguN2wxMTAuMiAyOTRMMjU3LjMgNTVjNC0xMy43IDE2LjUtMjMgMzAuNy0yM3MyNi43IDkuNCAzMC43IDIzbDg1LjEgMjkxLjdMNTE0IDUyLjhjNi4yLTE2LjUgMjQuNi0yNC45IDQxLjItMTguN3MyNC45IDI0LjcgMTguNyA0MS4ybC0xNDQgMzg0Yy00LjggMTIuOS0xNy40IDIxLjMtMzEuMiAyMC43cy0yNS43LTkuOC0yOS41LTIzTDI4OCAxNzguMyAyMDYuNyA0NTdjLTMuOSAxMy4yLTE1LjggMjIuNS0yOS41IDIzcy0yNi4zLTcuOC0zMS4yLTIwLjdMMiA3NS4yQy00LjIgNTguNyA0LjIgNDAuMiAyMC44IDM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYWxraWVUYWxraWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0UzY0IDEwLjcgNjQgMjRWOTZINDhDMjEuNSA5NiAwIDExNy41IDAgMTQ0VjMwMC4xYzAgMTIuNyA1LjEgMjQuOSAxNC4xIDMzLjlsMy45IDMuOWM5IDkgMTQuMSAyMS4yIDE0LjEgMzMuOVY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhIMzA0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM3MS45YzAtMTIuNyA1LjEtMjQuOSAxNC4xLTMzLjlsMy45LTMuOWM5LTkgMTQuMS0yMS4yIDE0LjEtMzMuOVYxNDRjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzIwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMySDIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMkgxMTJWMjR6bTAgMTM2SDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRIMjcyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMCA2NEgyNzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYWxsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE5MmMwLTM1LjMtMjguNy02NC02NC02NEg4MGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNkg0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjR6TTQxNiAyNzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYW5kTWFnaWNTcGFya2xlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzQuNyA0Mi43TDE5NyA1Ni44Yy0zIDEuMS01IDQtNSA3LjJzMiA2LjEgNSA3LjJsMzcuNyAxNC4xTDI0OC44IDEyM2MxLjEgMyA0IDUgNy4yIDVzNi4xLTIgNy4yLTVsMTQuMS0zNy43TDMxNSA3MS4yYzMtMS4xIDUtNCA1LTcuMnMtMi02LjEtNS03LjJMMjc3LjMgNDIuNyAyNjMuMiA1Yy0xLjEtMy00LTUtNy4yLTVzLTYuMSAyLTcuMiA1TDIzNC43IDQyLjd6TTQ2LjEgMzk1LjRjLTE4LjcgMTguNy0xOC43IDQ5LjEgMCA2Ny45bDM0LjYgMzQuNmMxOC43IDE4LjcgNDkuMSAxOC43IDY3LjkgMEw1MjkuOSAxMTYuNWMxOC43LTE4LjcgMTguNy00OS4xIDAtNjcuOUw0OTUuMyAxNC4xYy0xOC43LTE4LjctNDkuMS0xOC43LTY3LjkgMEw0Ni4xIDM5NS40ek00ODQuNiA4Mi42bC0xMDUgMTA1LTIzLjMtMjMuMyAxMDUtMTA1IDIzLjMgMjMuM3pNNy41IDExNy4yQzMgMTE4LjkgMCAxMjMuMiAwIDEyOHMzIDkuMSA3LjUgMTAuOEw2NCAxNjBsMjEuMiA1Ni41YzEuNyA0LjUgNiA3LjUgMTAuOCA3LjVzOS4xLTMgMTAuOC03LjVMMTI4IDE2MGw1Ni41LTIxLjJjNC41LTEuNyA3LjUtNiA3LjUtMTAuOHMtMy05LjEtNy41LTEwLjhMMTI4IDk2IDEwNi44IDM5LjVDMTA1LjEgMzUgMTAwLjggMzIgOTYgMzJzLTkuMSAzLTEwLjggNy41TDY0IDk2IDcuNSAxMTcuMnptMzUyIDI1NmMtNC41IDEuNy03LjUgNi03LjUgMTAuOHMzIDkuMSA3LjUgMTAuOEw0MTYgNDE2bDIxLjIgNTYuNWMxLjcgNC41IDYgNy41IDEwLjggNy41czkuMS0zIDEwLjgtNy41TDQ4MCA0MTZsNTYuNS0yMS4yYzQuNS0xLjcgNy41LTYgNy41LTEwLjhzLTMtOS4xLTcuNS0xMC44TDQ4MCAzNTJsLTIxLjItNTYuNWMtMS43LTQuNS02LTcuNS0xMC44LTcuNXMtOS4xIDMtMTAuOCA3LjVMNDE2IDM1MmwtNTYuNSAyMS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYW5kTWFnaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuMSA0NjMuM2MtMTguNy0xOC43LTE4LjctNDkuMSAwLTY3LjlMMzk1LjQgMTQuMWMxOC43LTE4LjcgNDkuMS0xOC43IDY3LjkgMGwzNC42IDM0LjZjMTguNyAxOC43IDE4LjcgNDkuMSAwIDY3LjlMMTE2LjUgNDk3LjljLTE4LjcgMTguNy00OS4xIDE4LjctNjcuOSAwTDE0LjEgNDYzLjN6TTM0Ny42IDE4Ny42bDEwNS0xMDVMNDI5LjQgNTkuM2wtMTA1IDEwNSAyMy4zIDIzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhbmRTcGFya2xlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgNi4xYzkuNS04LjUgMjQtOC4xIDMzIC45bDggOGM5IDkgOS40IDIzLjUgLjkgMzNsLTg1LjggOTUuOWMtMi42IDIuOS00LjEgNi43LTQuMSAxMC43VjE3NmMwIDguOC03LjIgMTYtMTYgMTZIMzg0LjJjLTQuNiAwLTguOSAxLjktMTEuOSA1LjNMMTAwLjcgNTAwLjlDOTQuMyA1MDggODUuMyA1MTIgNzUuOCA1MTJjLTguOCAwLTE3LjMtMy41LTIzLjUtOS44TDkuNyA0NTkuN0MzLjUgNDUzLjQgMCA0NDUgMCA0MzYuMmMwLTkuNSA0LTE4LjUgMTEuMS0yNC44bDExMS42LTk5LjhjMy40LTMgNS4zLTcuNCA1LjMtMTEuOVYyNzJjMC04LjggNy4yLTE2IDE2LTE2aDM0LjZjMy45IDAgNy43LTEuNSAxMC43LTQuMUw0NjQgNi4xek00MzIgMjg4YzMuNiAwIDYuNyAyLjQgNy43IDUuOGwxNC44IDUxLjcgNTEuNyAxNC44YzMuNCAxIDUuOCA0LjEgNS44IDcuN3MtMi40IDYuNy01LjggNy43bC01MS43IDE0LjgtMTQuOCA1MS43Yy0xIDMuNC00LjEgNS44LTcuNyA1LjhzLTYuNy0yLjQtNy43LTUuOGwtMTQuOC01MS43LTUxLjctMTQuOGMtMy40LTEtNS44LTQuMS01LjgtNy43czIuNC02LjcgNS44LTcuN2w1MS43LTE0LjggMTQuOC01MS43YzEtMy40IDQuMS01LjggNy43LTUuOHpNODcuNyA2OS44bDE0LjggNTEuNyA1MS43IDE0LjhjMy40IDEgNS44IDQuMSA1LjggNy43cy0yLjQgNi43LTUuOCA3LjdsLTUxLjcgMTQuOEw4Ny43IDIxOC4yYy0xIDMuNC00LjEgNS44LTcuNyA1LjhzLTYuNy0yLjQtNy43LTUuOEw1Ny41IDE2Ni41IDUuOCAxNTEuN2MtMy40LTEtNS44LTQuMS01LjgtNy43czIuNC02LjcgNS44LTcuN2w1MS43LTE0LjhMNzIuMyA2OS44YzEtMy40IDQuMS01LjggNy43LTUuOHM2LjcgMi40IDcuNyA1Ljh6TTIwOCAwYzMuNyAwIDYuOSAyLjUgNy44IDYuMWw2LjggMjcuMyAyNy4zIDYuOGMzLjYgLjkgNi4xIDQuMSA2LjEgNy44cy0yLjUgNi45LTYuMSA3LjhsLTI3LjMgNi44LTYuOCAyNy4zYy0uOSAzLjYtNC4xIDYuMS03LjggNi4xcy02LjktMi41LTcuOC02LjFsLTYuOC0yNy4zLTI3LjMtNi44Yy0zLjYtLjktNi4xLTQuMS02LjEtNy44czIuNS02LjkgNi4xLTcuOGwyNy4zLTYuOCA2LjgtMjcuM2MuOS0zLjYgNC4xLTYuMSA3LjgtNi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYXJlaG91c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0ODhWMTcxLjNjMC0yNi4yIDE1LjktNDkuNyA0MC4yLTU5LjRMMzA4LjEgNC44YzcuNi0zLjEgMTYuMS0zLjEgMjMuOCAwTDU5OS44IDExMS45YzI0LjMgOS43IDQwLjIgMzMuMyA0MC4yIDU5LjRWNDg4YzAgMTMuMy0xMC43IDI0LTI0IDI0SDU2OGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNDg4YzAgMTMuMy0xMC43IDI0LTI0IDI0SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptNDg4IDI0bC0zMzYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWNDMySDUxMmwwIDU2YzAgMTMuMy0xMC43IDI0LTI0IDI0ek0xMjggNDAwVjMzNkg1MTJ2NjRIMTI4em0wLTk2VjIyNEg1MTJsMCA4MEgxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhdGVyTGFkZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAxMjcuN0MxMjggNzQuOSAxNzAuOSAzMiAyMjMuNyAzMmM0OC4zIDAgODkgMzYgOTUgODMuOWwxIDguMmMyLjIgMTcuNS0xMC4yIDMzLjUtMjcuOCAzNS43cy0zMy41LTEwLjItMzUuNy0yNy44bC0xLTguMmMtMi0xNS45LTE1LjUtMjcuOC0zMS41LTI3LjhjLTE3LjUgMC0zMS43IDE0LjItMzEuNyAzMS43VjIyNEgzODRWMTI3LjdDMzg0IDc0LjkgNDI2LjkgMzIgNDc5LjcgMzJjNDguMyAwIDg5IDM2IDk1IDgzLjlsMSA4LjJjMi4yIDE3LjUtMTAuMiAzMy41LTI3LjggMzUuN3MtMzMuNS0xMC4yLTM1LjctMjcuOGwtMS04LjJjLTItMTUuOS0xNS41LTI3LjgtMzEuNS0yNy44Yy0xNy41IDAtMzEuNyAxNC4yLTMxLjcgMzEuN1YzNjFjLTEuNiAxLTMuMyAyLTQuOCAzLjFjLTE4IDEyLjQtNDAuMSAyMC4zLTU5LjIgMjAuM2gwVjI4OEgxOTJ2OTYuNWMtMTkgMC00MS4yLTcuOS01OS4xLTIwLjNjLTEuNi0xLjEtMy4yLTIuMi00LjktMy4xVjEyNy43ek0zMDYuNSAzODkuOUMzMjkgNDA1LjQgMzU2LjUgNDE2IDM4NCA0MTZjMjYuOSAwIDU1LjQtMTAuOCA3Ny40LTI2LjFsMCAwYzExLjktOC41IDI4LjEtNy44IDM5LjIgMS43YzE0LjQgMTEuOSAzMi41IDIxIDUwLjYgMjUuMmMxNy4yIDQgMjcuOSAyMS4yIDIzLjkgMzguNHMtMjEuMiAyNy45LTM4LjQgMjMuOWMtMjQuNS01LjctNDQuOS0xNi41LTU4LjItMjVDNDQ5LjUgNDY5LjcgNDE3IDQ4MCAzODQgNDgwYy0zMS45IDAtNjAuNi05LjktODAuNC0xOC45Yy01LjgtMi43LTExLjEtNS4zLTE1LjYtNy43Yy00LjUgMi40LTkuNyA1LjEtMTUuNiA3LjdjLTE5LjggOS00OC41IDE4LjktODAuNCAxOC45Yy0zMyAwLTY1LjUtMTAuMy05NC41LTI1LjhjLTEzLjQgOC40LTMzLjcgMTkuMy01OC4yIDI1Yy0xNy4yIDQtMzQuNC02LjctMzguNC0yMy45czYuNy0zNC40IDIzLjktMzguNGMxOC4xLTQuMiAzNi4yLTEzLjMgNTAuNi0yNS4yYzExLjEtOS40IDI3LjMtMTAuMSAzOS4yLTEuN2wwIDBDMTM2LjcgNDA1LjIgMTY1LjEgNDE2IDE5MiA0MTZjMjcuNSAwIDU1LTEwLjYgNzcuNS0yNi4xYzExLjEtNy45IDI1LjktNy45IDM3IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2OS41IDY5LjljMTEuMS03LjkgMjUuOS03LjkgMzcgMEMzMjkgODUuNCAzNTYuNSA5NiAzODQgOTZjMjYuOSAwIDU1LjQtMTAuOCA3Ny40LTI2LjFsMCAwYzExLjktOC41IDI4LjEtNy44IDM5LjIgMS43YzE0LjQgMTEuOSAzMi41IDIxIDUwLjYgMjUuMmMxNy4yIDQgMjcuOSAyMS4yIDIzLjkgMzguNHMtMjEuMiAyNy45LTM4LjQgMjMuOWMtMjQuNS01LjctNDQuOS0xNi41LTU4LjItMjVDNDQ5LjUgMTQ5LjcgNDE3IDE2MCAzODQgMTYwYy0zMS45IDAtNjAuNi05LjktODAuNC0xOC45Yy01LjgtMi43LTExLjEtNS4zLTE1LjYtNy43Yy00LjUgMi40LTkuNyA1LjEtMTUuNiA3LjdjLTE5LjggOS00OC41IDE4LjktODAuNCAxOC45Yy0zMyAwLTY1LjUtMTAuMy05NC41LTI1LjhjLTEzLjQgOC40LTMzLjcgMTkuMy01OC4yIDI1Yy0xNy4yIDQtMzQuNC02LjctMzguNC0yMy45czYuNy0zNC40IDIzLjktMzguNEM0Mi44IDkyLjYgNjEgODMuNSA3NS4zIDcxLjZjMTEuMS05LjUgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyA4NS4yIDE2NS4xIDk2IDE5MiA5NmMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjF6bTM3IDI4OEMzMjkgMzczLjQgMzU2LjUgMzg0IDM4NCAzODRjMjYuOSAwIDU1LjQtMTAuOCA3Ny40LTI2LjFsMCAwYzExLjktOC41IDI4LjEtNy44IDM5LjIgMS43YzE0LjQgMTEuOSAzMi41IDIxIDUwLjYgMjUuMmMxNy4yIDQgMjcuOSAyMS4yIDIzLjkgMzguNHMtMjEuMiAyNy45LTM4LjQgMjMuOWMtMjQuNS01LjctNDQuOS0xNi41LTU4LjItMjVDNDQ5LjUgNDM3LjcgNDE3IDQ0OCAzODQgNDQ4Yy0zMS45IDAtNjAuNi05LjktODAuNC0xOC45Yy01LjgtMi43LTExLjEtNS4zLTE1LjYtNy43Yy00LjUgMi40LTkuNyA1LjEtMTUuNiA3LjdjLTE5LjggOS00OC41IDE4LjktODAuNCAxOC45Yy0zMyAwLTY1LjUtMTAuMy05NC41LTI1LjhjLTEzLjQgOC40LTMzLjcgMTkuMy01OC4yIDI1Yy0xNy4yIDQtMzQuNC02LjctMzguNC0yMy45czYuNy0zNC40IDIzLjktMzguNGMxOC4xLTQuMiAzNi4yLTEzLjMgNTAuNi0yNS4yYzExLjEtOS40IDI3LjMtMTAuMSAzOS4yLTEuN2wwIDBDMTM2LjcgMzczLjIgMTY1LjEgMzg0IDE5MiAzODRjMjcuNSAwIDU1LTEwLjYgNzcuNS0yNi4xYzExLjEtNy45IDI1LjktNy45IDM3IDB6bTAtMTQ0QzMyOSAyMjkuNCAzNTYuNSAyNDAgMzg0IDI0MGMyNi45IDAgNTUuNC0xMC44IDc3LjQtMjYuMWwwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSAyOTMuNyA0MTcgMzA0IDM4NCAzMDRjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40YzE4LjEtNC4yIDM2LjItMTMuMyA1MC42LTI1LjJjMTEuMS05LjUgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyAyMjkuMiAxNjUuMSAyNDAgMTkyIDI0MGMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2F2ZVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggNjRjMC0xNy43IDE0LjMtMzIgMzItMzJIMzIwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQxNmg5NlYyNTZjMC0xNy43IDE0LjMtMzIgMzItMzJINjA4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDUxMlY0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMlY5NkgxOTJWMjU2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDk2VjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWlnaHRIYW5naW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA5NmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xMjIuNSAzMmMzLjUtMTAgNS41LTIwLjggNS41LTMyYzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMTEuMiAxLjkgMjIgNS41IDMySDEyMGMtMjIgMC00MS4yIDE1LTQ2LjYgMzYuNGwtNzIgMjg4Yy0zLjYgMTQuMy0uNCAyOS41IDguNyA0MS4yUzMzLjIgNTEyIDQ4IDUxMkg0NjRjMTQuOCAwIDI4LjctNi44IDM3LjgtMTguNXMxMi4zLTI2LjggOC43LTQxLjJsLTcyLTI4OEM0MzMuMiAxNDMgNDE0IDEyOCAzOTIgMTI4SDM0Ni41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWlnaHRTY2FsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMTc2YTEyOCAxMjggMCAxIDEgMjU2IDAgMTI4IDEyOCAwIDEgMSAtMjU2IDB6TTM5MS44IDY0QzM1OS41IDI0LjkgMzEwLjcgMCAyNTYgMFMxNTIuNSAyNC45IDEyMC4yIDY0SDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDM5MS44ek0yOTYgMjI0YzAtMTAuNi00LjEtMjAuMi0xMC45LTI3LjRsMzMuNi03OC4zYzMuNS04LjEtLjMtMTcuNS04LjQtMjFzLTE3LjUgLjMtMjEgOC40TDI1NS43IDE4NGMtMjIgLjEtMzkuNyAxOC0zOS43IDQwYzAgMjIuMSAxNy45IDQwIDQwIDQwczQwLTE3LjkgNDAtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdoZWF0QXduQ2lyY2xlRXhjbGFtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA1IDQxYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBMMzgzIDk1Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsODgtODh6TTMwNS41IDI3LjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDI3MS41IDM4LjZjLTM3LjUgMzcuNS0zNy41IDk4LjMgMCAxMzUuOGwxMC40IDEwLjQtMzAuNSAzMC41Yy0zLjQtMjcuMy0xNS41LTUzLjgtMzYuNS03NC44bC0xMS4zLTExLjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwbC0xMS4zIDExLjNjLTM3LjUgMzcuNS0zNy41IDk4LjMgMCAxMzUuOGwxMC40IDEwLjQtMzAuNSAzMC41Yy0zLjQtMjcuMy0xNS41LTUzLjgtMzYuNS03NC44TDEwMS44IDIzMWMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMNjcuOSAyNDIuM2MtMzcuNSAzNy41LTM3LjUgOTguMyAwIDEzNS44bDEwLjQgMTAuNEw5LjQgNDU3LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsNjguOS02OC45IDEyLjIgMTIuMmMzNy41IDM3LjUgOTguMyAzNy41IDEzNS44IDBsMTEuMy0xMS4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42bC0xMS4zLTExLjNjLTIxLjgtMjEuOC00OS42LTM0LjEtNzguMS0zNi45bDMxLjktMzEuOSAxMi4yIDEyLjJjMjIuNSAyMi41IDUzLjMgMzEuNSA4Mi40IDI3YzAtMSAwLTIuMSAwLTMuMWMwLTMzLjEgOS4xLTY0LjEgMjUtOTAuNmMtMTUuNS04LjctMzIuNS0xMy44LTQ5LjgtMTUuNWwzMS45LTMxLjkgMTIuMiAxMi4yYzYgNiAxMi42IDExLjEgMTkuNyAxNS4yYzI3LjUtMzQgNjcuMy01Ny41IDExMi42LTYzLjhjLTQuMS0zLjgtOC40LTcuMy0xMi45LTEwLjVMNTA1IDEzN2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC01OS40IDU5LjRjLTIwLjYtNC40LTQyLTMuNy02Mi4zIDIuMWM2LjEtMjEuMyA2LjYtNDMuOCAxLjQtNjUuM0w0MDkgNDFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEwzMjkuMSA1Mi45Yy0zLjctNS03LjgtOS44LTEyLjQtMTQuM0wzMDUuNSAyNy4zek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC05NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAtMTQ0YzguOCAwIDE2IDcuMiAxNiAxNnY4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYyODhjMC04LjggNy4yLTE2IDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaGVhdEF3biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDUgNDFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEwzODMgOTVjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw4OC04OHpNMzA1LjUgMjcuM2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMMjcxLjUgMzguNmMtMzcuNSAzNy41LTM3LjUgOTguMyAwIDEzNS44bDEwLjQgMTAuNC0zMC41IDMwLjVjLTMuNC0yNy4zLTE1LjUtNTMuOC0zNi41LTc0LjhsLTExLjMtMTEuM2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBsLTExLjMgMTEuM2MtMzcuNSAzNy41LTM3LjUgOTguMyAwIDEzNS44bDEwLjQgMTAuNC0zMC41IDMwLjVjLTMuNC0yNy4zLTE1LjUtNTMuOC0zNi41LTc0LjhMMTAxLjggMjMxYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw2Ny45IDI0Mi4zYy0zNy41IDM3LjUtMzcuNSA5OC4zIDAgMTM1LjhsMTAuNCAxMC40TDkuNCA0NTcuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw2OC45LTY4LjkgMTIuMiAxMi4yYzM3LjUgMzcuNSA5OC4zIDM3LjUgMTM1LjggMGwxMS4zLTExLjNjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTExLjMtMTEuM2MtMjEuOC0yMS44LTQ5LjYtMzQuMS03OC4xLTM2LjlsMzEuOS0zMS45IDEyLjIgMTIuMmMzNy41IDM3LjUgOTguMyAzNy41IDEzNS44IDBsMTEuMy0xMS4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42bC0xMS4zLTExLjNjLTIxLjgtMjEuOC00OS42LTM0LjEtNzguMS0zNi45bDMxLjktMzEuOSAxMi4yIDEyLjJjMzcuNSAzNy41IDk4LjMgMzcuNSAxMzUuOCAwTDQ4Ni41IDIzMWM2LjItNi4yIDYuMi0xNi40IDAtMjIuNkw0NzUuMiAxOTdjLTUuMi01LjItMTAuNi05LjgtMTYuNC0xMy45TDUwNSAxMzdjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtNTkuNCA1OS40Yy0yMC42LTQuNC00Mi0zLjctNjIuMyAyLjFjNi4xLTIxLjMgNi42LTQzLjggMS40LTY1LjNMNDA5IDQxYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBMMzI5LjEgNTIuOWMtMy43LTUtNy44LTkuOC0xMi40LTE0LjNMMzA1LjUgMjcuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2hlZWxjaGFpck1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTIwNC41IDEyMS4zYy01LjQtMi41LTExLjctMS45LTE2LjQgMS43bC00MC45IDMwLjdjLTE0LjEgMTAuNi0zNC4yIDcuNy00NC44LTYuNHMtNy43LTM0LjIgNi40LTQ0LjhsNDAuOS0zMC43YzIzLjctMTcuOCA1NS4zLTIxIDgyLjEtOC40bDkwLjQgNDIuNWMyOS4xIDEzLjcgMzYuOCA1MS42IDE1LjIgNzUuNUwyOTkuMSAyMjRoOTcuNGMzMC4zIDAgNTMgMjcuNyA0Ny4xIDU3LjRMNDE1LjQgNDIyLjNjLTMuNSAxNy4zLTIwLjMgMjguNi0zNy43IDI1LjFzLTI4LjYtMjAuMy0yNS4xLTM3LjdMMzc3IDI4OEgzMDYuN2M4LjYgMTkuNiAxMy4zIDQxLjIgMTMuMyA2NGMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MFMwIDQ0MC40IDAgMzUyczcxLjYtMTYwIDE2MC0xNjBjMTEuMSAwIDIyIDEuMSAzMi40IDMuM2w1NC4yLTU0LjItNDIuMS0xOS44ek0xNjAgNDQ4YTk2IDk2IDAgMSAwIDAtMTkyIDk2IDk2IDAgMSAwIDAgMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaGVlbGNoYWlyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTEyMC41IDI0Ny4yYzEyLjQtNC43IDE4LjctMTguNSAxNC0zMC45cy0xOC41LTE4LjctMzAuOS0xNEM0My4xIDIyNS4xIDAgMjgzLjUgMCAzNTJjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjBjNjEuMiAwIDExNC4zLTM0LjMgMTQxLjItODQuN2M2LjItMTEuNyAxLjgtMjYuMi05LjktMzIuNXMtMjYuMi0xLjgtMzIuNSA5LjlDMjQwIDQ0MCAyMDIuOCA0NjQgMTYwIDQ2NEM5OC4xIDQ2NCA0OCA0MTMuOSA0OCAzNTJjMC00Ny45IDMwLjEtODguOCA3Mi41LTEwNC44ek0yNTkuOCAxNzZsLTEuOS05LjdjLTQuNS0yMi4zLTI0LTM4LjMtNDYuOC0zOC4zYy0zMC4xIDAtNTIuNyAyNy41LTQ2LjggNTdsMjMuMSAxMTUuNWM2IDI5LjkgMzIuMiA1MS40IDYyLjggNTEuNGg1LjFjLjQgMCAuOCAwIDEuMyAwaDk0LjFjNi43IDAgMTIuNiA0LjEgMTUgMTAuNEw0MDIgNDU5LjJjNiAxNi4xIDIzLjggMjQuNiA0MC4xIDE5LjFsNDgtMTZjMTYuOC01LjYgMjUuOC0yMy43IDIwLjItNDAuNXMtMjMuNy0yNS44LTQwLjUtMjAuMmwtMTguNyA2LjItMjUuNS02OGMtMTEuNy0zMS4yLTQxLjYtNTEuOS03NC45LTUxLjlIMjgyLjJsLTkuNi00OEgzMzZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjU5Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdoaXNrZXlHbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAzMmMtOS4zIDAtMTguMSA0LTI0LjIgMTEuMVMtMSA1OS40IC4zIDY4LjZsNTAgMzQyLjljNS43IDM5LjMgMzkuNCA2OC41IDc5LjIgNjguNWgyNTNjMzkuNyAwIDczLjQtMjkuMSA3OS4yLTY4LjVsNTAtMzQyLjljMS4zLTkuMi0xLjQtMTguNS03LjUtMjUuNVM0ODkuMyAzMiA0ODAgMzJIMzJ6TTg3LjcgMjI0TDY5IDk2SDQ0M0w0MjQuMyAyMjRIODcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2lmaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NC4yIDIwMi45QzEyMy4yIDEzNi43IDIxNi44IDk2IDMyMCA5NnMxOTYuOCA0MC43IDI2NS44IDEwNi45YzEyLjggMTIuMiAzMyAxMS44IDQ1LjItLjlzMTEuOC0zMy0uOS00NS4yQzU0OS43IDc5LjUgNDQwLjQgMzIgMzIwIDMyUzkwLjMgNzkuNSA5LjggMTU2LjdDLTIuOSAxNjktMy4zIDE4OS4yIDguOSAyMDJzMzIuNSAxMy4yIDQ1LjIgLjl6TTMyMCAyNTZjNTYuOCAwIDEwOC42IDIxLjEgMTQ4LjIgNTZjMTMuMyAxMS43IDMzLjUgMTAuNCA0NS4yLTIuOHMxMC40LTMzLjUtMi44LTQ1LjJDNDU5LjggMjE5LjIgMzkzIDE5MiAzMjAgMTkycy0xMzkuOCAyNy4yLTE5MC41IDcyYy0xMy4zIDExLjctMTQuNSAzMS45LTIuOCA0NS4yczMxLjkgMTQuNSA0NS4yIDIuOGMzOS41LTM0LjkgOTEuMy01NiAxNDguMi01NnptNjQgMTYwYTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMzUyYzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2SDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6bTY0IDM1MmMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMmM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05NkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMTI4IDUxMmgzMmM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05NkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgxNjBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kb3dNYXhpbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTk2IDk2SDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZG93TWluaW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZG93UmVzdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIgNjRIMjA4Yy04LjggMC0xNiA3LjItMTYgMTZWOTZIMTI4VjgwYzAtNDQuMiAzNS44LTgwIDgwLTgwSDQzMmM0NC4yIDAgODAgMzUuOCA4MCA4MFYzMDRjMCA0NC4yLTM1LjggODAtODAgODBINDE2VjMyMGgxNmM4LjggMCAxNi03LjIgMTYtMTZWODBjMC04LjgtNy4yLTE2LTE2LTE2ek0wIDE5MmMwLTM1LjMgMjguNy02NCA2NC02NEgzMjBjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxOTJ6bTY0IDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDI4OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmVCb3R0bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkzLjQgOS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDY0IDY0YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zYy0xMS44IDExLjgtMzAuNyAxMi41LTQzLjIgMS45bC05LjUgOS41LTQ4LjggNDguOGMtOS4yIDkuMi0xMS41IDIyLjktOC42IDM1LjZjOS40IDQwLjktMS45IDg1LjYtMzMuOCAxMTcuNUwxOTcuMyA0OTMuM2MtMjUgMjUtNjUuNSAyNS05MC41IDBsLTg4LTg4Yy0yNS0yNS0yNS02NS41IDAtOTAuNUwxODAuMiAxNTMuM2MzMS45LTMxLjkgNzYuNi00My4xIDExNy41LTMzLjhjMTIuNiAyLjkgMjYuNCAuNSAzNS41LTguNmw0OC44LTQ4LjggOS41LTkuNWMtMTAuNi0xMi42LTEwLTMxLjQgMS45LTQzLjJ6TTk5LjMgMzQ3LjNsNjUuNCA2NS40YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDk3LjQtOTcuNGM2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtNjUuNC02NS40Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw5OS4zIDMyNC43Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZUdsYXNzRW1wdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMEM0Ny40IDAgMzMuNSAxMi44IDMyLjEgMjkuM2wtMTQgMTY4LjRjLTYgNzIgNDIuNSAxMzUuMiAxMDkuOSAxNTAuNlY0NDhIODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoODAgODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyVjM0OC40YzY3LjQtMTUuNCAxMTUuOS03OC42IDEwOS45LTE1MC42bC0xNC0xNjguNEMyODYuNSAxMi44IDI3Mi42IDAgMjU2IDBINjR6TTgxLjkgMjAzLjFMOTMuNCA2NEgyMjYuNmwxMS42IDEzOS4xQzI0MiAyNDguOCAyMDUuOSAyODggMTYwIDI4OHMtODItMzkuMi03OC4xLTg0Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmVHbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMi4xIDI5LjNDMzMuNSAxMi44IDQ3LjQgMCA2NCAwSDI1NmMxNi42IDAgMzAuNSAxMi44IDMxLjkgMjkuM2wxNCAxNjguNGM2IDcyLTQyLjUgMTM1LjItMTA5LjkgMTUwLjZWNDQ4aDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE2MCA4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg0OFYzNDguNEM2MC42IDMzMyAxMi4xIDI2OS44IDE4LjEgMTk3LjhsMTQtMTY4LjR6bTU2IDk4LjdIMjMxLjlsLTUuMy02NEg5My40bC01LjMgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvblNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjIuNCA1My45QzU2LjggMzcuMSAzOC42IDI4LjEgMjEuOSAzMy42Uy0zLjkgNTcuNCAxLjYgNzQuMUw1MS42IDIyNEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg3Mi45bDU2LjcgMTcwLjFjNC41IDEzLjUgMTcuNCAyMi40IDMxLjYgMjEuOXMyNi40LTEwLjQgMjkuOC0yNC4yTDIzMyAyODhoNDZMMzIxIDQ1NS44YzMuNCAxMy44IDE1LjYgMjMuNyAyOS44IDI0LjJzMjcuMS04LjQgMzEuNi0yMS45TDQzOS4xIDI4OEg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDYwLjRsNTAtMTQ5LjljNS42LTE2LjgtMy41LTM0LjktMjAuMi00MC41cy0zNC45IDMuNS00MC41IDIwLjJMMzkyLjkgMjI0SDMyOUwyODcgNTYuMkMyODMuNSA0MiAyNzAuNyAzMiAyNTYgMzJzLTI3LjUgMTAtMzEgMjQuMkwxODMgMjI0aC02NEw2Mi40IDUzLjl6bTc4IDIzNC4xSDE2N2wtMTEuNCA0NS42TDE0MC40IDI4OHpNMjQ5IDIyNGw3LTI4LjEgNyAyOC4xSDI0OXptOTYgNjRoMjYuNmwtMTUuMiA0NS42TDM0NSAyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDk2YzAtNTMgNDMtOTYgOTYtOTZoMzguNEM0MzkuOSAwIDQ4MCA0MC4xIDQ4MCA4OS42VjE3NnYxNlYzNzZjMCA3NS4xLTYwLjkgMTM2LTEzNiAxMzZzLTEzNi02MC45LTEzNi0xMzZWMjk2YzAtMjIuMS0xNy45LTQwLTQwLTQwcy00MCAxNy45LTQwIDQwVjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OFYyOTZjMC03NS4xIDYwLjktMTM2IDEzNi0xMzZzMTM2IDYwLjkgMTM2IDEzNnY4MGMwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwVjE5MkgzNTJjLTUzIDAtOTYtNDMtOTYtOTZ6bTE0NC04YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdyZW5jaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMzIwYzg4LjQgMCAxNjAtNzEuNiAxNjAtMTYwYzAtMTUuMy0yLjItMzAuMS02LjItNDQuMmMtMy4xLTEwLjgtMTYuNC0xMy4yLTI0LjMtNS4zbC03Ni44IDc2LjhjLTMgMy03LjEgNC43LTExLjMgNC43SDMzNmMtOC44IDAtMTYtNy4yLTE2LTE2VjExOC42YzAtNC4yIDEuNy04LjMgNC43LTExLjNsNzYuOC03Ni44YzcuOS03LjkgNS40LTIxLjItNS4zLTI0LjNDMzgyLjEgMi4yIDM2Ny4zIDAgMzUyIDBDMjYzLjYgMCAxOTIgNzEuNiAxOTIgMTYwYzAgMTkuMSAzLjQgMzcuNSA5LjUgNTQuNUwxOS45IDM5Ni4xQzcuMiA0MDguOCAwIDQyNi4xIDAgNDQ0LjFDMCA0ODEuNiAzMC40IDUxMiA2Ny45IDUxMmMxOCAwIDM1LjMtNy4yIDQ4LTE5LjlMMjk3LjUgMzEwLjVjMTcgNi4yIDM1LjQgOS41IDU0LjUgOS41ek04MCA0MDhhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYUmF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyVjQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMlY5NkMxNC4zIDk2IDAgODEuNyAwIDY0ek0yNTYgOTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMkgxNjBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoODB2NDhIMTI4Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDI0MHY3MC42TDE4OS4xIDMwN2MtNS4yLTItMTAuNi0zLTE2LjItM2gtMi4xYy0yMy42IDAtNDIuOCAxOS4yLTQyLjggNDIuOGMwIDkuNiAzLjIgMTguOSA5LjEgMjYuNGwxOC4yIDIzLjJjOS43IDEyLjQgMjQuNiAxOS42IDQwLjMgMTkuNkgzMTYuNGMxNS43IDAgMzAuNi03LjIgNDAuMy0xOS42bDE4LjItMjMuMmM1LjktNy41IDkuMS0xNi44IDkuMS0yNi40YzAtMjMuNi0xOS4yLTQyLjgtNDIuOC00Mi44SDMzOWMtNS41IDAtMTEgMS0xNi4yIDNMMjcyIDMyNi42VjI1NkgzODRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMjcyVjE3Nmg4MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgyNzJWMTEyYzAtOC44LTcuMi0xNi0xNi0xNnpNMjA4IDM1MmExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6bTgwIDE2YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc2LjYgODQuNWMxMS4zLTEzLjYgOS41LTMzLjgtNC4xLTQ1LjFzLTMzLjgtOS41LTQ1LjEgNC4xTDE5MiAyMDYgNTYuNiA0My41QzQ1LjMgMjkuOSAyNS4xIDI4LjEgMTEuNSAzOS40Uy0zLjkgNzAuOSA3LjQgODQuNUwxNTAuMyAyNTYgNy40IDQyNy41Yy0xMS4zIDEzLjYtOS41IDMzLjggNC4xIDQ1LjFzMzMuOCA5LjUgNDUuMS00LjFMMTkyIDMwNiAzMjcuNCA0NjguNWMxMS4zIDEzLjYgMzEuNSAxNS40IDQ1LjEgNC4xczE1LjQtMzEuNSA0LjEtNDUuMUwyMzMuNyAyNTYgMzc2LjYgODQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQyLjYgMTUwLjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMTkyIDIxMC43IDg2LjYgMTA1LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDE0Ni43IDI1NiA0MS40IDM2MS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDE5MiAzMDEuMyAyOTcuNCA0MDYuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDIzNy4zIDI1NiAzNDIuNiAxNTAuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWG1hcmtzTGluZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2SDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnptMCAzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyek03IDE2N2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsNTUgNTVMNyAzMTFjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw1NS01NSA1NSA1NWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTU1LTU1IDU1LTU1YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTU1IDU1TDQxIDE2N2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDB6TTI2NSAxNjdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNTUgNTUtNTUgNTVjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw1NS01NSA1NSA1NWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTU1LTU1IDU1LTU1YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTU1IDU1LTU1LTU1ek00NTUgMTY3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWw1NSA1NS01NSA1NWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDU1LTU1IDU1IDU1YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtNTUtNTUgNTUtNTVjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtNTUgNTUtNTUtNTVjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU4IDQ1LjRDNDcuOCAzMSAyNy44IDI3LjcgMTMuNCAzOFMtNC4zIDY4LjIgNiA4Mi42TDE2MCAyOTguM1Y0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyOTguM0wzNzggODIuNmMxMC4zLTE0LjQgNi45LTM0LjQtNy40LTQ0LjZTMzM2LjIgMzEgMzI2IDQ1LjRMMTkyIDIzMi45IDU4IDQ1LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVllblNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTguNiA0Ni4yQzQ4LjggMzEuNSAyOSAyNy42IDE0LjMgMzcuNFMtNC40IDY3IDUuNCA4MS43TDEwMC4yIDIyNEg0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg4MHYzMkg0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg4MHY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGg4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJWMjg4aDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDIxOS44TDMxNC42IDgxLjdjOS44LTE0LjcgNS44LTM0LjYtOC45LTQ0LjRzLTM0LjYtNS44LTQ0LjQgOC45TDE2MCAxOTguMyA1OC42IDQ2LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlpbllhbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDY0YzUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2cy05NiA0My05NiA5NnM0MyA5NiA5NiA5NkMxNTAgNDQ4IDY0IDM2MiA2NCAyNTZTMTUwIDY0IDI1NiA2NHptMCA0NDhBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyem0zMi0zNTJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMjI0IDM1MmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFaIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJIMzUyYzEyLjQgMCAyMy43IDcuMiAyOSAxOC40czMuNiAyNC41LTQuNCAzNC4xTDEwMC4zIDQxNkgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTEyLjQgMC0yMy43LTcuMi0yOS0xOC40cy0zLjYtMjQuNSA0LjQtMzQuMUwyODMuNyA5NkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdBZGRyZXNzQm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgNDhjOC44IDAgMTYgNy4yIDE2IDE2VjQ0OGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNlY2NGMwLTguOCA3LjItMTYgMTYtMTZIMzg0ek05NiAwQzYwLjcgMCAzMiAyOC43IDMyIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRIOTZ6TTI0MCAyNTZhNjQgNjQgMCAxIDAgMC0xMjggNjQgNjQgMCAxIDAgMCAxMjh6bS0zMiAzMmMtNDQuMiAwLTgwIDM1LjgtODAgODBjMCA4LjggNy4yIDE2IDE2IDE2SDMzNmM4LjggMCAxNi03LjIgMTYtMTZjMC00NC4yLTM1LjgtODAtODAtODBIMjA4ek01MTIgODBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlY4MHpNNDk2IDE5MmMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNnptMTYgMTQ0YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdBZGRyZXNzQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgODBjOC44IDAgMTYgNy4yIDE2IDE2VjQxNmMwIDguOC03LjIgMTYtMTYgMTZINjRjLTguOCAwLTE2LTcuMi0xNi0xNlY5NmMwLTguOCA3LjItMTYgMTYtMTZINTEyek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTIwOCAyNTZhNjQgNjQgMCAxIDAgMC0xMjggNjQgNjQgMCAxIDAgMCAxMjh6bS0zMiAzMmMtNDQuMiAwLTgwIDM1LjgtODAgODBjMCA4LjggNy4yIDE2IDE2IDE2SDMwNGM4LjggMCAxNi03LjIgMTYtMTZjMC00NC4yLTM1LjgtODAtODAtODBIMTc2ek0zNzYgMTQ0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDM3NnptMCA5NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgzNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0JlbGxTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDU0Mi42IDQwMGMyLjctNy44IDEuMy0xNi41LTMuOS0yM2wtMTQuOS0xOC42QzQ5NS41IDMyMi45IDQ4MCAyNzguOCA0ODAgMjMzLjRWMjA4YzAtNzcuNC01NS0xNDItMTI4LTE1Ni44VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjUxLjJjLTQyLjYgOC42LTc5IDM0LjItMTAyIDY5LjNMMzguOCA1LjF6TTIyNCAxNTAuM0MyNDMuNiAxMTcuNyAyNzkuMyA5NiAzMjAgOTZjNjEuOSAwIDExMiA1MC4xIDExMiAxMTJ2MjUuNGMwIDMyLjcgNi40IDY0LjggMTguNyA5NC41TDIyNCAxNTAuM3pNNDA2LjIgNDE2bC02MC45LTQ4SDE2OC4zYzIxLjItMzIuOCAzNC40LTcwLjMgMzguNC0xMDkuMUwxNjAgMjIyLjF2MTEuNGMwIDQ1LjQtMTUuNSA4OS41LTQzLjggMTI0LjlMMTAxLjMgMzc3Yy01LjggNy4yLTYuOSAxNy4xLTIuOSAyNS40czEyLjQgMTMuNiAyMS42IDEzLjZINDA2LjJ6TTM4NCA0NDhIMzIwIDI1NmMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM3MyOC4zIDE4LjcgNDUuMyAxOC43czMzLjMtNi43IDQ1LjMtMTguN3MxOC43LTI4LjMgMTguNy00NS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdCZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY1MS4yQzExOSA2NiA2NCAxMzAuNiA2NCAyMDh2MjUuNGMwIDQ1LjQtMTUuNSA4OS41LTQzLjggMTI0LjlMNS4zIDM3N2MtNS44IDcuMi02LjkgMTcuMS0yLjkgMjUuNFMxNC44IDQxNiAyNCA0MTZINDI0YzkuMiAwIDE3LjYtNS4zIDIxLjYtMTMuNnMyLjktMTguMi0yLjktMjUuNGwtMTQuOS0xOC42QzM5OS41IDMyMi45IDM4NCAyNzguOCAzODQgMjMzLjRWMjA4YzAtNzcuNC01NS0xNDItMTI4LTE1Ni44VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0wIDk2YzYxLjkgMCAxMTIgNTAuMSAxMTIgMTEydjI1LjRjMCA0Ny45IDEzLjkgOTQuNiAzOS43IDEzNC42SDcyLjNDOTguMSAzMjggMTEyIDI4MS4zIDExMiAyMzMuNFYyMDhjMC02MS45IDUwLjEtMTEyIDExMi0xMTJ6bTY0IDM1MkgyMjQgMTYwYzAgMTcgNi43IDMzLjMgMTguNyA0NS4zczI4LjMgMTguNyA0NS4zIDE4LjdzMzMuMy02LjcgNDUuMy0xOC43czE4LjctMjguMyAxOC43LTQ1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Jvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwbDAgNDhWNDQxLjRsMTMwLjEtOTIuOWM4LjMtNiAxOS42LTYgMjcuOSAwTDMzNiA0NDEuNFY0OEg0OFYwSDMzNmMyNi41IDAgNDggMjEuNSA0OCA0OFY0ODhjMCA5LTUgMTcuMi0xMyAyMS4zcy0xNy42IDMuNC0yNC45LTEuOEwxOTIgMzk3LjUgMzcuOSA1MDcuNWMtNy4zIDUuMi0xNi45IDUuOS0yNC45IDEuOFMwIDQ5NyAwIDQ4OFY0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQnVpbGRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNDhjLTguOCAwLTE2IDcuMi0xNiAxNlY0NDhjMCA4LjggNy4yIDE2IDE2IDE2aDgwVjQwMGMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djY0aDgwYzguOCAwIDE2LTcuMiAxNi0xNlY2NGMwLTguOC03LjItMTYtMTYtMTZINjR6TTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDMyMGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0em04OCA0MGMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2djQ4YzAgOC44LTcuMiAxNi0xNiAxNkgxMDRjLTguOCAwLTE2LTcuMi0xNi0xNlYxMDR6TTIzMiA4OGg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDIzMmMtOC44IDAtMTYtNy4yLTE2LTE2VjEwNGMwLTguOCA3LjItMTYgMTYtMTZ6TTg4IDIzMmMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2djQ4YzAgOC44LTcuMiAxNi0xNiAxNkgxMDRjLTguOCAwLTE2LTcuMi0xNi0xNlYyMzJ6bTE0NC0xNmg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDIzMmMtOC44IDAtMTYtNy4yLTE2LTE2VjIzMmMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRWNjRIMjk2VjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRWNjRoNDBjMzUuMyAwIDY0IDI4LjcgNjQgNjR2MTYgNDhWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxOTIgMTQ0IDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NGg0MFYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNNDAwIDE5Mkg0OFY0NDhjMCA4LjggNy4yIDE2IDE2IDE2SDM4NGM4LjggMCAxNi03LjIgMTYtMTZWMTkyek0zMjkgMjk3TDIxNyA0MDljLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC02NC02NGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDQ3IDQ3IDk1LTk1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FsZW5kYXJEYXlzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MiAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOHYxNiA0OFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE5MiAxNDQgMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDM0NFYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEgxNTJWMjR6TTQ4IDE5Mmg4MHY1Nkg0OFYxOTJ6bTAgMTA0aDgwdjY0SDQ4VjI5NnptMTI4IDBoOTZ2NjRIMTc2VjI5NnptMTQ0IDBoODB2NjRIMzIwVjI5NnptODAtNDhIMzIwVjE5Mmg4MHY1NnptMCAxNjB2NDBjMCA4LjgtNy4yIDE2LTE2IDE2SDMyMFY0MDhoODB6bS0xMjggMHY1NkgxNzZWNDA4aDk2em0tMTQ0IDB2NTZINjRjLTguOCAwLTE2LTcuMi0xNi0xNlY0MDhoODB6TTI3MiAyNDhIMTc2VjE5Mmg5NnY1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FsZW5kYXJNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNFY2NEgyOTZWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNFY2NGg0MGMzNS4zIDAgNjQgMjguNyA2NCA2NHYxNiA0OFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE5MiAxNDQgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0aDQwVjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0ek00MDAgMTkySDQ4VjQ0OGMwIDguOCA3LjIgMTYgMTYgMTZIMzg0YzguOCAwIDE2LTcuMiAxNi0xNlYxOTJ6TTI5NiAzNTJIMTUyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0SDI5NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FsZW5kYXJQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MiAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOHYxNiA0OFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE5MiAxNDQgMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDM0NFYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEgxNTJWMjR6TTQ4IDE5Mkg0MDBWNDQ4YzAgOC44LTcuMiAxNi0xNiAxNkg2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjE5MnptMTc2IDQwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY0OEgxNTJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNDh2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYzNTJoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjQ4VjI1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FsZW5kYXJYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNFY2NEgyOTZWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNFY2NGg0MGMzNS4zIDAgNjQgMjguNyA2NCA2NHYxNiA0OFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE5MiAxNDQgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0aDQwVjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0ek00MDAgMTkySDQ4VjQ0OGMwIDguOCA3LjIgMTYgMTYgMTZIMzg0YzguOCAwIDE2LTcuMiAxNi0xNlYxOTJ6bS05NSA4OWwtNDcgNDcgNDcgNDdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDctNDctNDcgNDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDctNDctNDctNDdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw0NyA0NyA0Ny00N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MiAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOHYxNiA0OFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE5MiAxNDQgMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDM0NFYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEgxNTJWMjR6TTQ4IDE5Mkg0MDBWNDQ4YzAgOC44LTcuMiAxNi0xNiAxNkg2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjE5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2hhcnRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRWNDA4YzAgMTMuMyAxMC43IDI0IDI0IDI0SDQ4OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg3MmMtMzkuOCAwLTcyLTMyLjItNzItNzJWNTZDMCA0Mi43IDEwLjcgMzIgMjQgMzJ6TTEyOCAxMzZjMC0xMy4zIDEwLjctMjQgMjQtMjRsMjA4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTIwOCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptMjQgNzJIMjk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDE1MmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptMCA5Nkg0MjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMTUyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaGVzc0Jpc2hvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDQgMEM5MC43IDAgODAgMTAuNyA4MCAyNGMwIDExLjIgNy42IDIwLjYgMTggMjMuMmMtNy44IDgtMTYuMSAxNy0yNC40IDI3QzM4LjIgMTE2LjcgMCAxNzguOCAwIDI1MC45YzAgNDQuOCAyNC42IDcyLjIgNDggODcuOFYzNTJIOTZWMzI1YzAtOS01LTE3LjItMTMtMjEuM2MtMTgtOS4zLTM1LTI0LjctMzUtNTIuN2MwLTU1LjUgMjkuOC0xMDYuOCA2Mi40LTE0NS45YzE2LTE5LjIgMzIuMS0zNC44IDQ0LjItNDUuNWMxLjktMS43IDMuNy0zLjIgNS4zLTQuNmMxLjcgMS40IDMuNCAzIDUuMyA0LjZjMTIuMSAxMC43IDI4LjIgMjYuMyA0NC4yIDQ1LjVjNS4zIDYuMyAxMC41IDEzIDE1LjUgMjBMMTU5IDE5MWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDU3LjgtNTcuOGMxMi44IDI1LjkgMjEuMiA1NC4zIDIxLjIgODMuOGMwIDI4LTE3IDQzLjQtMzUgNTIuN2MtOCA0LjEtMTMgMTIuMy0xMyAyMS4zdjI3aDQ4VjMzOC43YzIzLjQtMTUuNiA0OC00Mi45IDQ4LTg3LjhjMC03Mi4xLTM4LjItMTM0LjItNzMuNi0xNzYuN2MtOC4zLTkuOS0xNi42LTE5LTI0LjQtMjdjMTAuMy0yLjcgMTgtMTIuMSAxOC0yMy4yYzAtMTMuMy0xMC43LTI0LTI0LTI0SDE2MCAxMDR6TTUyLjcgNDY0bDE2LjYtMzJIMjUwLjhsMTYuNiAzMkg1Mi43em0yMDcuOS04MEg1OS41Yy0xMiAwLTIyLjkgNi43LTI4LjQgMTcuM0w0LjYgNDUyLjVjLTMgNS44LTQuNiAxMi4yLTQuNiAxOC43QzAgNDkzLjggMTguMiA1MTIgNDAuOCA1MTJIMjc5LjJjMjIuNSAwIDQwLjgtMTguMiA0MC44LTQwLjhjMC02LjUtMS42LTEyLjktNC42LTE4LjdsLTI2LjUtNTEuMmMtNS41LTEwLjYtMTYuNS0xNy4zLTI4LjQtMTcuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2hlc3NLaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY1NkgxNjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMzJ2NDBINTkuNkMyNi43IDE0NCAwIDE3MC43IDAgMjAzLjZjMCA4LjIgMS43IDE2LjMgNC45IDIzLjhMNTkuMSAzNTJoNTIuM0w0OSAyMDguMmMtLjYtMS41LTEtMy0xLTQuNmMwLTYuNCA1LjItMTEuNiAxMS42LTExLjZIMjI0IDM4OC40YzYuNCAwIDExLjYgNS4yIDExLjYgMTEuNmMwIDEuNi0uMyAzLjItMSA0LjZMMzM2LjUgMzUyaDUyLjNsNTQuMi0xMjQuNmMzLjMtNy41IDQuOS0xNS42IDQuOS0yMy44YzAtMzIuOS0yNi43LTU5LjYtNTkuNi01OS42SDI0OFYxMDRoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjQ4VjI0ek0xMDEuMiA0MzJIMzQ2LjhsMTYuNiAzMkg4NC43bDE2LjYtMzJ6bTI4My43LTMwLjdjLTUuNS0xMC42LTE2LjUtMTcuMy0yOC40LTE3LjNIOTEuNWMtMTIgMC0yMi45IDYuNy0yOC40IDE3LjNMMzYuNiA0NTIuNWMtMyA1LjgtNC42IDEyLjItNC42IDE4LjdDMzIgNDkzLjggNTAuMiA1MTIgNzIuOCA1MTJIMzc1LjJjMjIuNSAwIDQwLjgtMTguMiA0MC44LTQwLjhjMC02LjUtMS42LTEyLjktNC42LTE4LjdsLTI2LjUtNTEuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2hlc3NLbmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI2LjYgNDhIMTE3LjNsMTcuMSAxMi44YzYgNC41IDkuNiAxMS42IDkuNiAxOS4ycy0zLjYgMTQuNy05LjYgMTkuMmwtNi41IDQuOWMtMTAgNy41LTE2IDE5LjMtMTYgMzEuOWwtLjMgOTFjMCAxMC4yIDQuOSAxOS45IDEzLjIgMjUuOGwxLjkgMS4zYzkuOSA3LjEgMjMuMyA3IDMzLjItLjFsNDkuOS0zNi4zYzEwLjctNy44IDI1LjctNS40IDMzLjUgNS4zczUuNCAyNS43LTUuMyAzMy41bC00OS45IDM2LjMtNTMuOCAzOS4xYy03LjMgNS4zLTEzIDEyLjItMTYuOSAyMC4xSDY2LjhjNS4zLTIyLjEgMTcuOC00MS45IDM1LjktNTYuM2MtMS4zLS44LTIuNi0xLjctMy44LTIuNkw5NyAyOTEuOGMtMjEtMTUtMzMuNC0zOS4yLTMzLjMtNjVsLjMtOTFjLjEtMTkuOCA2LjctMzguNyAxOC42LTUzLjlsLS40LS4zQzcwLjcgNzMgNjQgNTkuNiA2NCA0NS4zQzY0IDIwLjMgODQuMyAwIDEwOS4zIDBIMjI2LjZDMzMxLjIgMCA0MTYgODQuOCA0MTYgMTg5LjRjMCAxMS4xLTEgMjIuMi0yLjkgMzMuMkwzOTAuMSAzNTJIMzQxLjNsMjQuNS0xMzcuOGMxLjUtOC4yIDIuMi0xNi41IDIuMi0yNC44QzM2OCAxMTEuMyAzMDQuNyA0OCAyMjYuNiA0OHpNODUuMiA0MzJMNjguNyA0NjRIMzc5LjNsLTE2LjYtMzJIODUuMnptMzE1LjctMzAuN2wyNi41IDUxLjJjMyA1LjggNC42IDEyLjIgNC42IDE4LjdjMCAyMi41LTE4LjIgNDAuOC00MC44IDQwLjhINTYuOEMzNC4yIDUxMiAxNiA0OTMuOCAxNiA0NzEuMmMwLTYuNSAxLjYtMTIuOSA0LjYtMTguN2wyNi41LTUxLjJDNTIuNSAzOTAuNyA2My41IDM4NCA3NS41IDM4NGgyOTdjMTIgMCAyMi45IDYuNyAyOC40IDE3LjN6TTE3MiAxMjhhMjAgMjAgMCAxIDEgMCA0MCAyMCAyMCAwIDEgMSAwLTQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaGVzc1Bhd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMyIDE1MkE3MiA3MiAwIDEgMCA4OCAxNTJhNzIgNzIgMCAxIDAgMTQ0IDB6bTI0IDEyMEgyNDMuNGwxMC43IDgwSDIwNS43TDE5NSAyNzJIMTYwIDEyNWwtMTAuNyA4MEg2NS45bDEwLjctODBINjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRjLTE1LjEtMjAuMS0yNC00NS0yNC03MkM0MCA4NS43IDkzLjcgMzIgMTYwIDMyczEyMCA1My43IDEyMCAxMjBjMCAyNy04LjkgNTEuOS0yNCA3MmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNHpNNTIuNyA0NjRIMjY3LjNsLTE2LjYtMzJINjkuMkw1Mi43IDQ2NHptMjA3LjktODBjMTIgMCAyMi45IDYuNyAyOC40IDE3LjNsMjYuNSA1MS4yYzMgNS44IDQuNiAxMi4yIDQuNiAxOC43YzAgMjIuNS0xOC4yIDQwLjgtNDAuOCA0MC44SDQwLjhDMTguMiA1MTIgMCA0OTMuOCAwIDQ3MS4yYzAtNi41IDEuNi0xMi45IDQuNi0xOC43bDI2LjUtNTEuMkMzNi41IDM5MC43IDQ3LjUgMzg0IDU5LjUgMzg0aDIwMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2hlc3NRdWVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tOTUuMi04Yy0xOC4xIDAtMzEuMyAxMi44LTM1LjYgMjYuOWMtOCAyNi4yLTMyLjQgNDUuMi02MS4yIDQ1LjJjLTEwIDAtMTkuNC0yLjMtMjcuNy02LjNjLTcuNi0zLjctMTYuNy0zLjMtMjQgMS4yQy43IDE2Mi4xLTMuMSAxNzcuMSAzLjcgMTg4LjlMOTcuNiAzNTJIMTUzbC04My0xNDQuMWM0MC41LTIuMiA3NS4zLTI1LjkgOTMuMS01OS44YzIyIDI2LjggNTUuNCA0My45IDkyLjggNDMuOXM3MC44LTE3LjEgOTIuOC00My45YzE3LjggMzQgNTIuNiA1Ny43IDkzLjEgNTkuOEwzNTkgMzUyaDU1LjRsOTMuOS0xNjMuMWM2LjgtMTEuNyAzLTI2LjctOC42LTMzLjhjLTcuMy00LjUtMTYuNC00LjktMjQtMS4yYy04LjQgNC0xNy43IDYuMy0yNy43IDYuM2MtMjguOCAwLTUzLjItMTktNjEuMi00NS4yQzM4Mi41IDEwMC44IDM2OS4zIDg4IDM1MS4yIDg4Yy0xNC41IDAtMjYuMyA4LjUtMzIuNCAxOS4zYy0xMi40IDIyLTM1LjkgMzYuNy02Mi44IDM2LjdzLTUwLjQtMTQuOC02Mi44LTM2LjdDMTg3LjEgOTYuNSAxNzUuNCA4OCAxNjAuOCA4OHpNMTMzLjIgNDMySDM3OC44bDE2LjYgMzJIMTE2LjdsMTYuNi0zMnptMjgzLjctMzAuN2MtNS41LTEwLjYtMTYuNS0xNy4zLTI4LjQtMTcuM2gtMjY1Yy0xMiAwLTIyLjkgNi43LTI4LjQgMTcuM0w2OC42IDQ1Mi41Yy0zIDUuOC00LjYgMTIuMi00LjYgMTguN2MwIDIyLjUgMTguMiA0MC44IDQwLjggNDAuOEg0MDcuMmMyMi41IDAgNDAuOC0xOC4yIDQwLjgtNDAuOGMwLTYuNS0xLjYtMTIuOS00LjYtMTguN2wtMjYuNS01MS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaGVzc1Jvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODAgODBWMTkyYzAgMi41IDEuMiA0LjkgMy4yIDYuNGw1MS4yIDM4LjRjNi44IDUuMSAxMC40IDEzLjQgOS41IDIxLjlMMTMzLjUgMzUySDg1LjJsOS40LTg1TDU0LjQgMjM2LjhDNDAuMyAyMjYuMiAzMiAyMDkuNiAzMiAxOTJWNzJjMC0yMi4xIDE3LjktNDAgNDAtNDBIMzc2YzIyLjEgMCA0MCAxNy45IDQwIDQwVjE5MmMwIDE3LjYtOC4zIDM0LjItMjIuNCA0NC44TDM1My40IDI2N2w5LjQgODVIMzE0LjVsLTEwLjQtOTMuM2MtLjktOC40IDIuNy0xNi44IDkuNS0yMS45bDUxLjItMzguNGMyLTEuNSAzLjItMy45IDMuMi02LjRWODBIMzA0djI0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjgwSDE5MnYyNGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY4MEg4MHptNC43IDM4NEgzNjMuM2wtMTYuNi0zMkgxMDEuMkw4NC43IDQ2NHptMjcxLjktODBjMTIgMCAyMi45IDYuNyAyOC40IDE3LjNsMjYuNSA1MS4yYzMgNS44IDQuNiAxMi4yIDQuNiAxOC43YzAgMjIuNS0xOC4yIDQwLjgtNDAuOCA0MC44SDcyLjhDNTAuMiA1MTIgMzIgNDkzLjggMzIgNDcxLjJjMC02LjUgMS42LTEyLjkgNC42LTE4LjdsMjYuNS01MS4yQzY4LjUgMzkwLjcgNzkuNSAzODQgOTEuNSAzODRoMjY1ek0yMDggMjg4Yy04LjggMC0xNi03LjItMTYtMTZWMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDIwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2lyY2xlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ4YTIwOCAyMDggMCAxIDEgMCA0MTYgMjA4IDIwOCAwIDEgMSAwLTQxNnptMCA0NjRBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zNjkgMjA5YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTExMSAxMTEtNDctNDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNjQgNjRjOS40IDkuNCAyNC42IDkuNCAzMy45IDBMMzY5IDIwOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2lyY2xlRG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yNTYtOTZhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ2NGEyMDggMjA4IDAgMSAxIDAtNDE2IDIwOCAyMDggMCAxIDEgMCA0MTZ6TTI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMHpNMzc2LjkgMjk0LjZjNC41LTQuMiA3LjEtMTAuMSA3LjEtMTYuM2MwLTEyLjMtMTAtMjIuMy0yMi4zLTIyLjNIMzA0VjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMmwtMzIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZIMTUwLjNDMTM4IDI1NiAxMjggMjY2IDEyOCAyNzguM2MwIDYuMiAyLjYgMTIuMSA3LjEgMTYuM2wxMDcuMSA5OS45YzMuOCAzLjUgOC43IDUuNSAxMy44IDUuNXMxMC4xLTIgMTMuOC01LjVsMTA3LjEtOTkuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2lyY2xlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAyNTZhMjA4IDIwOCAwIDEgMSA0MTYgMEEyMDggMjA4IDAgMSAxIDQ4IDI1NnptNDY0IDBBMjU2IDI1NiAwIDEgMCAwIDI1NmEyNTYgMjU2IDAgMSAwIDUxMiAwek0yMTcuNCAzNzYuOWM0LjIgNC41IDEwLjEgNy4xIDE2LjMgNy4xYzEyLjMgMCAyMi4zLTEwIDIyLjMtMjIuM1YzMDRoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjQwYzAtMTcuNy0xNC4zLTMyLTMyLTMySDI1NlYxNTAuM2MwLTEyLjMtMTAtMjIuMy0yMi4zLTIyLjNjLTYuMiAwLTEyLjEgMi42LTE2LjMgNy4xTDExNy41IDI0Mi4yYy0zLjUgMy44LTUuNSA4LjctNS41IDEzLjhzMiAxMC4xIDUuNSAxMy44bDk5LjkgMTA3LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZVBhdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yMjQtNzJWMzI4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjE4NGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0em0xMTIgMFYzMjhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMTg0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZVBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6TTE4OC4zIDE0Ny4xYzcuNi00LjIgMTYuOC00LjEgMjQuMyAuNWwxNDQgODhjNy4xIDQuNCAxMS41IDEyLjEgMTEuNSAyMC41cy00LjQgMTYuMS0xMS41IDIwLjVsLTE0NCA4OGMtNy40IDQuNS0xNi43IDQuNy0yNC4zIC41cy0xMi4zLTEyLjItMTIuMy0yMC45VjE2OGMwLTguNyA0LjctMTYuNyAxMi4zLTIwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZVF1ZXN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xNjkuOC05MC43YzcuOS0yMi4zIDI5LjEtMzcuMyA1Mi44LTM3LjNoNTguM2MzNC45IDAgNjMuMSAyOC4zIDYzLjEgNjMuMWMwIDIyLjYtMTIuMSA0My41LTMxLjcgNTQuOEwyODAgMjY0LjRjLS4yIDEzLTEwLjkgMjMuNi0yNCAyMy42Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYyNTAuNWMwLTguNiA0LjYtMTYuNSAxMi4xLTIwLjhsNDQuMy0yNS40YzQuNy0yLjcgNy42LTcuNyA3LjYtMTMuMWMwLTguNC02LjgtMTUuMS0xNS4xLTE1LjFIMjIyLjZjLTMuNCAwLTYuNCAyLjEtNy41IDUuM2wtLjQgMS4yYy00LjQgMTIuNS0xOC4yIDE5LTMwLjYgMTQuNnMtMTktMTguMi0xNC42LTMwLjZsLjQtMS4yek0yMjQgMzUyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMSA0OCAyNTZhMjA4IDIwOCAwIDEgMSA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMEEyNTYgMjU2IDAgMSAwIDAgMjU2ek0yOTQuNiAxMzUuMWMtNC4yLTQuNS0xMC4xLTcuMS0xNi4zLTcuMUMyNjYgMTI4IDI1NiAxMzggMjU2IDE1MC4zVjIwOEgxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDk2djU3LjdjMCAxMi4zIDEwIDIyLjMgMjIuMyAyMi4zYzYuMiAwIDEyLjEtMi42IDE2LjMtNy4xbDk5LjktMTA3LjFjMy41LTMuOCA1LjUtOC43IDUuNS0xMy44cy0yLTEwLjEtNS41LTEzLjhMMjk0LjYgMTM1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZVN0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTE5Mi05NkgzMjBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzIwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDhhMjA4IDIwOCAwIDEgMSAwIDQxNiAyMDggMjA4IDAgMSAxIDAtNDE2em0wIDQ2NEEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTEzNS4xIDIxNy40Yy00LjUgNC4yLTcuMSAxMC4xLTcuMSAxNi4zYzAgMTIuMyAxMCAyMi4zIDIyLjMgMjIuM0gyMDh2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjU2aDU3LjdjMTIuMyAwIDIyLjMtMTAgMjIuMy0yMi4zYzAtNi4yLTIuNi0xMi4xLTcuMS0xNi4zTDI2OS44IDExNy41Yy0zLjgtMy41LTguNy01LjUtMTMuOC01LjVzLTEwLjEgMi0xMy44IDUuNUwxMzUuMSAyMTcuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2lyY2xlVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDYuNSAzOTkuNkMzODcuNCAzNTIuOSAzNDEuNSAzMjAgMjg4IDMyMEgyMjRjLTUzLjUgMC05OS40IDMyLjktMTE4LjUgNzkuNkM2OS45IDM2Mi4yIDQ4IDMxMS43IDQ4IDI1NkM0OCAxNDEuMSAxNDEuMSA0OCAyNTYgNDhzMjA4IDkzLjEgMjA4IDIwOGMwIDU1LjctMjEuOSAxMDYuMi01Ny41IDE0My42em0tNDAuMSAzMi43QzMzNC40IDQ1Mi40IDI5Ni42IDQ2NCAyNTYgNDY0cy03OC40LTExLjYtMTEwLjUtMzEuN2M3LjMtMzYuNyAzOS43LTY0LjMgNzguNS02NC4zaDY0YzM4LjggMCA3MS4yIDI3LjYgNzguNSA2NC4zek0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnptMC0yNzJhNDAgNDAgMCAxIDEgMC04MCA0MCA0MCAwIDEgMSAwIDgwem0tODgtNDBhODggODggMCAxIDAgMTc2IDAgODggODggMCAxIDAgLTE3NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaXJjbGVYbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDhhMjA4IDIwOCAwIDEgMSAwIDQxNiAyMDggMjA4IDAgMSAxIDAtNDE2em0wIDQ2NEEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE3NSAxNzVjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDQ3IDQ3LTQ3IDQ3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNDctNDcgNDcgNDdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC00Ny00NyA0Ny00N2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC00NyA0Ny00Ny00N2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2xpcGJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4MCA2NGg0MGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NGg0MCA5LjZDMTIxIDI3LjUgMTUzLjMgMCAxOTIgMHM3MSAyNy41IDc4LjQgNjRIMjgwek02NCAxMTJjLTguOCAwLTE2IDcuMi0xNiAxNlY0NDhjMCA4LjggNy4yIDE2IDE2IDE2SDMyMGM4LjggMCAxNi03LjIgMTYtMTZWMTI4YzAtOC44LTcuMi0xNi0xNi0xNkgzMDR2MjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMTkyIDEwNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMTEySDY0em0xMjgtOGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Nsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMSA0OCAyNTZhMjA4IDIwOCAwIDEgMSA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMEEyNTYgMjU2IDAgMSAwIDAgMjU2ek0yMzIgMTIwVjI1NmMwIDggNCAxNS41IDEwLjcgMjBsOTYgNjRjMTEgNy40IDI1LjkgNC40IDMzLjMtNi43czQuNC0yNS45LTYuNy0zMy4zTDI4MCAyNDMuMlYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Nsb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ2NEgyODhjOC44IDAgMTYtNy4yIDE2LTE2VjM4NGg0OHY2NGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjI0YzAtMzUuMyAyOC43LTY0IDY0LTY0aDY0djQ4SDY0Yy04LjggMC0xNiA3LjItMTYgMTZWNDQ4YzAgOC44IDcuMiAxNiAxNiAxNnpNMjI0IDMwNEg0NDhjOC44IDAgMTYtNy4yIDE2LTE2VjY0YzAtOC44LTcuMi0xNi0xNi0xNkgyMjRjLTguOCAwLTE2IDcuMi0xNiAxNlYyODhjMCA4LjggNy4yIDE2IDE2IDE2em0tNjQtMTZWNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjI4OGMwIDM1LjMtMjguNyA2NC02NCA2NEgyMjRjLTM1LjMgMC02NC0yOC43LTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDbG9zZWRDYXB0aW9uaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiA4MGM4LjggMCAxNiA3LjIgMTYgMTZWNDE2YzAgOC44LTcuMiAxNi0xNiAxNkg2NGMtOC44IDAtMTYtNy4yLTE2LTE2Vjk2YzAtOC44IDcuMi0xNiAxNi0xNkg1MTJ6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjAwIDIwOGMxNC4yIDAgMjcgNi4xIDM1LjggMTZjOC44IDkuOSAyNCAxMC43IDMzLjkgMS45czEwLjctMjQgMS45LTMzLjljLTE3LjUtMTkuNi00My4xLTMyLTcxLjUtMzJjLTUzIDAtOTYgNDMtOTYgOTZzNDMgOTYgOTYgOTZjMjguNCAwIDU0LTEyLjQgNzEuNS0zMmM4LjgtOS45IDgtMjUtMS45LTMzLjlzLTI1LTgtMzMuOSAxLjljLTguOCA5LjktMjEuNiAxNi0zNS44IDE2Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4em0xNDQgNDhjMC0yNi41IDIxLjUtNDggNDgtNDhjMTQuMiAwIDI3IDYuMSAzNS44IDE2YzguOCA5LjkgMjQgMTAuNyAzMy45IDEuOXMxMC43LTI0IDEuOS0zMy45Yy0xNy41LTE5LjYtNDMuMS0zMi03MS41LTMyYy01MyAwLTk2IDQzLTk2IDk2czQzIDk2IDk2IDk2YzI4LjQgMCA1NC0xMi40IDcxLjUtMzJjOC44LTkuOSA4LTI1LTEuOS0zMy45cy0yNS04LTMzLjkgMS45Yy04LjggOS45LTIxLjYgMTYtMzUuOCAxNmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NvbW1lbnREb3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2OC4yIDM4NC45Yy0xNS01LjQtMzEuNy0zLjEtNDQuNiA2LjRjLTguMiA2LTIyLjMgMTQuOC0zOS40IDIyLjdjNS42LTE0LjcgOS45LTMxLjMgMTEuMy00OS40YzEtMTIuOS0zLjMtMjUuNy0xMS44LTM1LjVDNjAuNCAzMDIuOCA0OCAyNzIgNDggMjQwYzAtNzkuNSA4My4zLTE2MCAyMDgtMTYwczIwOCA4MC41IDIwOCAxNjBzLTgzLjMgMTYwLTIwOCAxNjBjLTMxLjYgMC02MS4zLTUuNS04Ny44LTE1LjF6TTI2LjMgNDIzLjhjLTEuNiAyLjctMy4zIDUuNC01LjEgOC4xbC0uMyAuNWMtMS42IDIuMy0zLjIgNC42LTQuOCA2LjljLTMuNSA0LjctNy4zIDkuMy0xMS4zIDEzLjVjLTQuNiA0LjYtNS45IDExLjQtMy40IDE3LjRjMi41IDYgOC4zIDkuOSAxNC44IDkuOWM1LjEgMCAxMC4yLS4zIDE1LjMtLjhsLjctLjFjNC40LS41IDguOC0xLjEgMTMuMi0xLjljLjgtLjEgMS42LS4zIDIuNC0uNWMxNy44LTMuNSAzNC45LTkuNSA1MC4xLTE2LjFjMjIuOS0xMCA0Mi40LTIxLjkgNTQuMy0zMC42YzMxLjggMTEuNSA2NyAxNy45IDEwNC4xIDE3LjljMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMlMwIDEyNS4xIDAgMjQwYzAgNDUuMSAxNy43IDg2LjggNDcuNyAxMjAuOWMtMS45IDI0LjUtMTEuNCA0Ni4zLTIxLjQgNjIuOXpNMTQ0IDI3MmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTE0NC0zMmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem04MCAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NvbW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIzLjYgMzkxLjNjMTIuOS05LjQgMjkuNi0xMS44IDQ0LjYtNi40YzI2LjUgOS42IDU2LjIgMTUuMSA4Ny44IDE1LjFjMTI0LjcgMCAyMDgtODAuNSAyMDgtMTYwcy04My4zLTE2MC0yMDgtMTYwUzQ4IDE2MC41IDQ4IDI0MGMwIDMyIDEyLjQgNjIuOCAzNS43IDg5LjJjOC42IDkuNyAxMi44IDIyLjUgMTEuOCAzNS41Yy0xLjQgMTguMS01LjcgMzQuNy0xMS4zIDQ5LjRjMTctNy45IDMxLjEtMTYuNyAzOS40LTIyLjd6TTIxLjIgNDMxLjljMS44LTIuNyAzLjUtNS40IDUuMS04LjFjMTAtMTYuNiAxOS41LTM4LjQgMjEuNC02Mi45QzE3LjcgMzI2LjggMCAyODUuMSAwIDI0MEMwIDEyNS4xIDExNC42IDMyIDI1NiAzMnMyNTYgOTMuMSAyNTYgMjA4cy0xMTQuNiAyMDgtMjU2IDIwOGMtMzcuMSAwLTcyLjMtNi40LTEwNC4xLTE3LjljLTExLjkgOC43LTMxLjMgMjAuNi01NC4zIDMwLjZjLTE1LjEgNi42LTMyLjMgMTIuNi01MC4xIDE2LjFjLS44IC4yLTEuNiAuMy0yLjQgLjVjLTQuNCAuOC04LjcgMS41LTEzLjIgMS45Yy0uMiAwLS41IC4xLS43IC4xYy01LjEgLjUtMTAuMiAuOC0xNS4zIC44Yy02LjUgMC0xMi4zLTMuOS0xNC44LTkuOWMtMi41LTYtMS4xLTEyLjggMy40LTE3LjRjNC4xLTQuMiA3LjgtOC43IDExLjMtMTMuNWMxLjctMi4zIDMuMy00LjYgNC44LTYuOWMuMS0uMiAuMi0uMyAuMy0uNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ29tbWVudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODguMiAzMDkuMWM5LjgtMTguMyA2LjgtNDAuOC03LjUtNTUuOEM1OS40IDIzMC45IDQ4IDIwNCA0OCAxNzZjMC02My41IDYzLjgtMTI4IDE2MC0xMjhzMTYwIDY0LjUgMTYwIDEyOHMtNjMuOCAxMjgtMTYwIDEyOGMtMTMuMSAwLTI1LjgtMS4zLTM3LjgtMy42Yy0xMC40LTItMjEuMi0uNi0zMC43IDQuMmMtNC4xIDIuMS04LjMgNC4xLTEyLjYgNmMtMTYgNy4yLTMyLjkgMTMuNS00OS45IDE4YzIuOC00LjYgNS40LTkuMSA3LjktMTMuNmMxLjEtMS45IDIuMi0zLjkgMy4yLTUuOXpNMCAxNzZjMCA0MS44IDE3LjIgODAuMSA0NS45IDExMC4zYy0uOSAxLjctMS45IDMuNS0yLjggNS4xYy0xMC4zIDE4LjQtMjIuMyAzNi41LTM2LjYgNTIuMWMtNi42IDctOC4zIDE3LjItNC42IDI1LjlDNS44IDM3OC4zIDE0LjQgMzg0IDI0IDM4NGM0MyAwIDg2LjUtMTMuMyAxMjIuNy0yOS43YzQuOC0yLjIgOS42LTQuNSAxNC4yLTYuOGMxNS4xIDMgMzAuOSA0LjUgNDcuMSA0LjVjMTE0LjkgMCAyMDgtNzguOCAyMDgtMTc2UzMyMi45IDAgMjA4IDBTMCA3OC44IDAgMTc2ek00MzIgNDgwYzE2LjIgMCAzMS45LTEuNiA0Ny4xLTQuNWM0LjYgMi4zIDkuNCA0LjYgMTQuMiA2LjhDNTI5LjUgNDk4LjcgNTczIDUxMiA2MTYgNTEyYzkuNiAwIDE4LjItNS43IDIyLTE0LjVjMy44LTguOCAyLTE5LTQuNi0yNS45Yy0xNC4yLTE1LjYtMjYuMi0zMy43LTM2LjYtNTIuMWMtLjktMS43LTEuOS0zLjQtMi44LTUuMUM2MjIuOCAzODQuMSA2NDAgMzQ1LjggNjQwIDMwNGMwLTk0LjQtODcuOS0xNzEuNS0xOTguMi0xNzUuOGM0LjEgMTUuMiA2LjIgMzEuMiA2LjIgNDcuOGwwIC42Yzg3LjIgNi43IDE0NCA2Ny41IDE0NCAxMjcuNGMwIDI4LTExLjQgNTQuOS0zMi43IDc3LjJjLTE0LjMgMTUtMTcuMyAzNy42LTcuNSA1NS44YzEuMSAyIDIuMiA0IDMuMiA1LjljMi41IDQuNSA1LjIgOSA3LjkgMTMuNmMtMTctNC41LTMzLjktMTAuNy00OS45LTE4Yy00LjMtMS45LTguNS0zLjktMTIuNi02Yy05LjUtNC44LTIwLjMtNi4yLTMwLjctNC4yYy0xMi4xIDIuNC0yNC43IDMuNi0zNy44IDMuNmMtNjEuNyAwLTExMC0yNi41LTEzNi44LTYyLjNjLTE2IDUuNC0zMi44IDkuNC01MCAxMS44QzI3OSA0MzkuOCAzNTAgNDgwIDQzMiA0ODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NvbXBhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTMwNi43IDY5LjFMMTYyLjQgMzgwLjZjLTE5LjQgNy41LTM4LjUtMTEuNi0zMS0zMWw1NS41LTE0NC4zYzMuMy04LjUgOS45LTE1LjEgMTguNC0xOC40bDE0NC4zLTU1LjVjMTkuNC03LjUgMzguNSAxMS42IDMxIDMxTDMyNS4xIDMwNi43Yy0zLjIgOC41LTkuOSAxNS4xLTE4LjQgMTguNHpNMjg4IDI1NmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDb3B5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMzZIMTkyYy04LjggMC0xNi03LjItMTYtMTZWNjRjMC04LjggNy4yLTE2IDE2LTE2bDE0MC4xIDBMNDAwIDExNS45VjMyMGMwIDguOC03LjIgMTYtMTYgMTZ6TTE5MiAzODRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjExNS45YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlMMzY2LjEgMTQuMWMtOS05LTIxLjItMTQuMS0zMy45LTE0LjFIMTkyYy0zNS4zIDAtNjQgMjguNy02NCA2NFYzMjBjMCAzNS4zIDI4LjcgNjQgNjQgNjR6TTY0IDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDI1NmMzNS4zIDAgNjQtMjguNyA2NC02NFY0MTZIMjcydjMyYzAgOC44LTcuMiAxNi0xNiAxNkg2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjE5MmMwLTguOCA3LjItMTYgMTYtMTZIOTZWMTI4SDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDb3B5cmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ4YTIwOCAyMDggMCAxIDEgMCA0MTYgMjA4IDIwOCAwIDEgMSAwLTQxNnptMCA0NjRBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xOTkuNCAzMTIuNmMtMzEuMi0zMS4yLTMxLjItODEuOSAwLTExMy4xczgxLjktMzEuMiAxMTMuMSAwYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWMtNTAtNTAtMTMxLTUwLTE4MSAwcy01MCAxMzEgMCAxODFzMTMxIDUwIDE4MSAwYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBjLTMxLjIgMzEuMi04MS45IDMxLjItMTEzLjEgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ3JlZGl0Q2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgODBjOC44IDAgMTYgNy4yIDE2IDE2djMySDQ4Vjk2YzAtOC44IDcuMi0xNiAxNi0xNkg1MTJ6bTE2IDE0NFY0MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDY0Yy04LjggMC0xNi03LjItMTYtMTZWMjI0SDUyOHpNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em01NiAzMDRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTIwem0xMjggMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEgzNjBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdFbnZlbG9wZU9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU1LjQgNDguMmMuMi0uMSAuNC0uMiAuNi0uMnMuNCAuMSAuNiAuMkw0NjAuNiAxOTRjMi4xIDEuNSAzLjQgMy45IDMuNCA2LjV2MTMuNkwyOTEuNSAzNTUuN2MtMjAuNyAxNy01MC40IDE3LTcxLjEgMEw0OCAyMTQuMVYyMDAuNWMwLTIuNiAxLjItNSAzLjQtNi41TDI1NS40IDQ4LjJ6TTQ4IDI3Ni4yTDE5MCAzOTIuOGMzOC40IDMxLjUgOTMuNyAzMS41IDEzMiAwTDQ2NCAyNzYuMlY0NTZjMCA0LjQtMy42IDgtOCA4SDU2Yy00LjQgMC04LTMuNi04LThWMjc2LjJ6TTI1NiAwYy0xMC4yIDAtMjAuMiAzLjItMjguNSA5LjFMMjMuNSAxNTQuOUM4LjcgMTY1LjQgMCAxODIuNCAwIDIwMC41VjQ1NmMwIDMwLjkgMjUuMSA1NiA1NiA1Nkg0NTZjMzAuOSAwIDU2LTI1LjEgNTYtNTZWMjAwLjVjMC0xOC4xLTguNy0zNS4xLTIzLjQtNDUuNkwyODQuNSA5LjFDMjc2LjIgMy4yIDI2Ni4yIDAgMjU2IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0VudmVsb3BlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDExMmMtOC44IDAtMTYgNy4yLTE2IDE2djIyLjFMMjIwLjUgMjkxLjdjMjAuNyAxNyA1MC40IDE3IDcxLjEgMEw0NjQgMTUwLjFWMTI4YzAtOC44LTcuMi0xNi0xNi0xNkg2NHpNNDggMjEyLjJWMzg0YzAgOC44IDcuMiAxNiAxNiAxNkg0NDhjOC44IDAgMTYtNy4yIDE2LTE2VjIxMi4yTDMyMiAzMjguOGMtMzguNCAzMS41LTkzLjcgMzEuNS0xMzIgMEw0OCAyMTIuMnpNMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdFeWVTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDUyNS42IDM4Ni43YzM5LjYtNDAuNiA2Ni40LTg2LjEgNzkuOS0xMTguNGMzLjMtNy45IDMuMy0xNi43IDAtMjQuNmMtMTQuOS0zNS43LTQ2LjItODcuNy05My0xMzEuMUM0NjUuNSA2OC44IDQwMC44IDMyIDMyMCAzMmMtNjguMiAwLTEyNSAyNi4zLTE2OS4zIDYwLjhMMzguOCA1LjF6bTE1MSAxMTguM0MyMjYgOTcuNyAyNjkuNSA4MCAzMjAgODBjNjUuMiAwIDExOC44IDI5LjYgMTU5LjkgNjcuN0M1MTguNCAxODMuNSA1NDUgMjI2IDU1OC42IDI1NmMtMTIuNiAyOC0zNi42IDY2LjgtNzAuOSAxMDAuOWwtNTMuOC00Mi4yYzkuMS0xNy42IDE0LjItMzcuNSAxNC4yLTU4LjdjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhjLTMyLjIgMC02MS43IDExLjktODQuMiAzMS41bC00Ni4xLTM2LjF6TTM5NC45IDI4NC4ybC04MS41LTYzLjljNC4yLTguNSA2LjYtMTguMiA2LjYtMjguM2MwLTUuNS0uNy0xMC45LTItMTZjLjcgMCAxLjMgMCAyIDBjNDQuMiAwIDgwIDM1LjggODAgODBjMCA5LjktMS44IDE5LjQtNS4xIDI4LjJ6bTUxLjMgMTYzLjNsLTQxLjktMzNDMzc4LjggNDI1LjQgMzUwLjcgNDMyIDMyMCA0MzJjLTY1LjIgMC0xMTguOC0yOS42LTE1OS45LTY3LjdDMTIxLjYgMzI4LjUgOTUgMjg2IDgxLjQgMjU2YzguMy0xOC40IDIxLjUtNDEuNSAzOS40LTY0LjhMODMuMSAxNjEuNUM2MC4zIDE5MS4yIDQ0IDIyMC44IDM0LjUgMjQzLjdjLTMuMyA3LjktMy4zIDE2LjcgMCAyNC42YzE0LjkgMzUuNyA0Ni4yIDg3LjcgOTMgMTMxLjFDMTc0LjUgNDQzLjIgMjM5LjIgNDgwIDMyMCA0ODBjNDcuOCAwIDg5LjktMTIuOSAxMjYuMi0zMi41em0tODgtNjkuM0wzMDIgMzM0Yy0yMy41LTUuNC00My4xLTIxLjItNTMuNy00Mi4zbC01Ni4xLTQ0LjJjLS4yIDIuOC0uMyA1LjYtLjMgOC41YzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4YzEzLjMgMCAyNi4xLTIgMzguMi01Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0V5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggODBjLTY1LjIgMC0xMTguOCAyOS42LTE1OS45IDY3LjdDODkuNiAxODMuNSA2MyAyMjYgNDkuNCAyNTZjMTMuNiAzMCA0MC4yIDcyLjUgNzguNiAxMDguM0MxNjkuMiA0MDIuNCAyMjIuOCA0MzIgMjg4IDQzMnMxMTguOC0yOS42IDE1OS45LTY3LjdDNDg2LjQgMzI4LjUgNTEzIDI4NiA1MjYuNiAyNTZjLTEzLjYtMzAtNDAuMi03Mi41LTc4LjYtMTA4LjNDNDA2LjggMTA5LjYgMzUzLjIgODAgMjg4IDgwek05NS40IDExMi42QzE0Mi41IDY4LjggMjA3LjIgMzIgMjg4IDMyczE0NS41IDM2LjggMTkyLjYgODAuNmM0Ni44IDQzLjUgNzguMSA5NS40IDkzIDEzMS4xYzMuMyA3LjkgMy4zIDE2LjcgMCAyNC42Yy0xNC45IDM1LjctNDYuMiA4Ny43LTkzIDEzMS4xQzQzMy41IDQ0My4yIDM2OC44IDQ4MCAyODggNDgwcy0xNDUuNS0zNi44LTE5Mi42LTgwLjZDNDguNiAzNTYgMTcuMyAzMDQgMi41IDI2OC4zYy0zLjMtNy45LTMuMy0xNi43IDAtMjQuNkMxNy4zIDIwOCA0OC42IDE1NiA5NS40IDExMi42ek0yODggMzM2YzQ0LjIgMCA4MC0zNS44IDgwLTgwcy0zNS44LTgwLTgwLTgwYy0uNyAwLTEuMyAwLTIgMGMxLjMgNS4xIDIgMTAuNSAyIDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0Yy01LjUgMC0xMC45LS43LTE2LTJjMCAuNyAwIDEuMyAwIDJjMCA0NC4yIDM1LjggODAgODAgODB6bTAtMjA4YTEyOCAxMjggMCAxIDEgMCAyNTYgMTI4IDEyOCAwIDEgMSAwLTI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUFuZ3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGEyMDggMjA4IDAgMSAxIDAgNDE2IDIwOCAyMDggMCAxIDEgMC00MTZ6bTAgNDY0QTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnptNzIuNC0xMTguNWM5LjctOSAxMC4yLTI0LjIgMS4yLTMzLjlDMzE1LjMgMzQ0LjMgMjkwLjYgMzI4IDI1NiAzMjhzLTU5LjMgMTYuMy03My41IDMxLjZjLTkgOS43LTguNSAyNC45IDEuMiAzMy45czI0LjkgOC41IDMzLjktMS4yYzcuNC03LjkgMjAtMTYuNCAzOC41LTE2LjRzMzEuMSA4LjUgMzguNSAxNi40YzkgOS43IDI0LjIgMTAuMiAzMy45IDEuMnpNMTc2LjQgMjcyYzE3LjcgMCAzMi0xNC4zIDMyLTMyYzAtMS41LS4xLTMtLjMtNC40bDEwLjkgMy42YzguNCAyLjggMTcuNC0xLjcgMjAuMi0xMC4xcy0xLjctMTcuNC0xMC4xLTIwLjJsLTk2LTMyYy04LjQtMi44LTE3LjQgMS43LTIwLjIgMTAuMXMxLjcgMTcuNCAxMC4xIDIwLjJsMzAuNyAxMC4yYy01LjggNS44LTkuMyAxMy44LTkuMyAyMi42YzAgMTcuNyAxNC4zIDMyIDMyIDMyem0xOTItMzJjMC04LjktMy42LTE3LTkuNS0yMi44bDMwLjItMTAuMWM4LjQtMi44IDEyLjktMTEuOSAxMC4xLTIwLjJzLTExLjktMTIuOS0yMC4yLTEwLjFsLTk2IDMyYy04LjQgMi44LTEyLjkgMTEuOS0xMC4xIDIwLjJzMTEuOSAxMi45IDIwLjIgMTAuMWwxMS43LTMuOWMtLjIgMS41LS4zIDMuMS0uMyA0LjdjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZURpenp5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yNTYgMzJhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6TTEwMyAxMzVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMjMgMjMgMjMtMjNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC0yMyAyMyAyMyAyM2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC0yMy0yMy0yMyAyM2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWwyMy0yMy0yMy0yM2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6bTE5MiAwYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDIzIDIzIDIzLTIzYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtMjMgMjMgMjMgMjNjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtMjMtMjMtMjMgMjNjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMjMtMjMtMjMtMjNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlRmx1c2hlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDEgNDggMjU2YTIwOCAyMDggMCAxIDEgNDE2IDB6TTI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMHpNMTYwLjQgMjQ4YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMjE2LTI0YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6TTE5MiAzMzZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMzIwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDE5MnpNMTYwIDE3NmE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6bTAgMTI4YTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwem0xNDQtODBhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptMTI4IDBhODAgODAgMCAxIDAgLTE2MCAwIDgwIDgwIDAgMSAwIDE2MCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlRnJvd25PcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2ek0xODIuNCAzODIuNWMtMTIuNCA1LjItMjYuNS00LjEtMjEuMS0xNi40YzE2LTM2LjYgNTIuNC02Mi4xIDk0LjgtNjIuMXM3OC44IDI1LjYgOTQuOCA2Mi4xYzUuNCAxMi4zLTguNyAyMS42LTIxLjEgMTYuNGMtMjIuNC05LjUtNDcuNC0xNC44LTczLjctMTQuOHMtNTEuMyA1LjMtNzMuNyAxNC44ek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUZyb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2ek0xNzQuNiAzODQuMWMtNC41IDEyLjUtMTguMiAxOC45LTMwLjcgMTQuNHMtMTguOS0xOC4yLTE0LjQtMzAuN0MxNDYuOSAzMTkuNCAxOTguOSAyODggMjU2IDI4OHMxMDkuMSAzMS40IDEyNi42IDc5LjljNC41IDEyLjUtMiAyNi4yLTE0LjQgMzAuN3MtMjYuMi0yLTMwLjctMTQuNEMzMjguMiAzNTguNSAyOTcuMiAzMzYgMjU2IDMzNnMtNzIuMiAyMi41LTgxLjQgNDguMXpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmltYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGEyMDggMjA4IDAgMSAwIDAgNDE2IDIwOCAyMDggMCAxIDAgMC00MTZ6TTUxMiAyNTZBMjU2IDI1NiAwIDEgMSAwIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwek0xNjggMzIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDhWMzIwaC04em00MCA0OGgzMlYzMjBIMjA4djQ4em05NiAwVjMyMEgyNzJ2NDhoMzJ6bTMyIDBoOGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGgtOHY0OHpNMTY4IDI4OEgzNDRjMzAuOSAwIDU2IDI1LjEgNTYgNTZzLTI1LjEgNTYtNTYgNTZIMTY4Yy0zMC45IDAtNTYtMjUuMS01Ni01NnMyNS4xLTU2IDU2LTU2em0tMjMuNi04MGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlR3JpbkJlYW1Td2VhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzYuOCAxMjYuM0M0OTcuMSAxMjAuOCA1MTIgMTAyLjcgNTEyIDgxYzAtMjAtMjguNi02MC40LTQxLjYtNzcuN2MtMy4yLTQuNC05LjYtNC40LTEyLjggMGMtOS41IDEyLjYtMjcuMSAzNy4yLTM2IDU3LjVjLS4zIC43LS42IDEuNC0uOSAyLjFDNDE3LjggNjkuNyA0MTYgNzYgNDE2IDgxYzAgMjYgMjEuNSA0NyA0OCA0N2M0LjQgMCA4LjctLjYgMTIuOC0xLjd6TTM5NS40IDQxLjJDMzU1LjMgMTUuMiAzMDcuNCAwIDI1NiAwQzExNC42IDAgMCAxMTQuNiAwIDI1NlMxMTQuNiA1MTIgMjU2IDUxMnMyNTYtMTE0LjYgMjU2LTI1NmMwLTM1LjgtNy4zLTY5LjktMjAuNi0xMDAuOGMtOC42IDMuMS0xNy44IDQuOC0yNy40IDQuOGMtOC45IDAtMTcuNi0xLjUtMjUuNy00LjJDNDU0LjcgMTg1LjUgNDY0IDIxOS43IDQ2NCAyNTZjMCAxMTQuOS05My4xIDIwOC0yMDggMjA4UzQ4IDM3MC45IDQ4IDI1NlMxNDEuMSA0OCAyNTYgNDhjNDguNyAwIDkzLjQgMTYuNyAxMjguOSA0NC43Yy0uNi0zLjgtLjktNy43LS45LTExLjdjMC0xMS40IDMuOC0yMi40IDcuMS0zMC41YzEuMy0zLjEgMi43LTYuMiA0LjMtOS4zek0zNzUgMzM2LjVjMTAuNC0xNi4xLTYuOC0zMi41LTI1LjUtMjguMWMtMjguOSA2LjgtNjAuNSAxMC41LTkzLjYgMTAuNXMtNjQuNy0zLjctOTMuNi0xMC41Yy0xOC43LTQuNC0zNS45IDEyLTI1LjUgMjguMWMyNC42IDM4LjEgNjguNyA2My41IDExOS4xIDYzLjVzOTQuNS0yNS40IDExOS4xLTYzLjV6TTIxNy42IDIyOC44bDAgMCAwIDAgMCAwYzIuMSAyLjggNS43IDMuOSA4LjkgMi44czUuNS00LjEgNS41LTcuNmMwLTE3LjktNi43LTM1LjYtMTYuNi00OC44Yy05LjgtMTMtMjMuOS0yMy4yLTM5LjQtMjMuMnMtMjkuNiAxMC4yLTM5LjQgMjMuMkMxMjYuNyAxODguNCAxMjAgMjA2LjEgMTIwIDIyNGMwIDMuNCAyLjIgNi41IDUuNSA3LjZzNi45IDAgOC45LTIuOGwwIDAgMCAwIDAgMCAuMi0uMmMuMi0uMiAuNC0uNSAuNy0uOWMuNi0uOCAxLjYtMiAyLjgtMy40YzIuNS0yLjggNi02LjYgMTAuMi0xMC4zYzguOC03LjggMTguOC0xNCAyNy43LTE0czE4LjkgNi4yIDI3LjcgMTRjNC4yIDMuNyA3LjcgNy41IDEwLjIgMTAuM2MxLjIgMS40IDIuMiAyLjYgMi44IDMuNGMuMyAuNCAuNiAuNyAuNyAuOWwuMiAuMiAwIDB6bTE2MCAwbDAgMCAwIDBjMi4xIDIuOCA1LjcgMy45IDguOSAyLjhzNS41LTQuMSA1LjUtNy42YzAtMTcuOS02LjctMzUuNi0xNi42LTQ4LjhjLTkuOC0xMy0yMy45LTIzLjItMzkuNC0yMy4ycy0yOS42IDEwLjItMzkuNCAyMy4yQzI4Ni43IDE4OC40IDI4MCAyMDYuMSAyODAgMjI0YzAgMy40IDIuMiA2LjUgNS41IDcuNnM2LjkgMCA4LjktMi44bDAgMCAwIDAgMCAwIC4yLS4yYy4yLS4yIC40LS41IC43LS45Yy42LS44IDEuNi0yIDIuOC0zLjRjMi41LTIuOCA2LTYuNiAxMC4yLTEwLjNjOC44LTcuOCAxOC44LTE0IDI3LjctMTRzMTguOSA2LjIgMjcuNyAxNGM0LjIgMy43IDcuNyA3LjUgMTAuMiAxMC4zYzEuMiAxLjQgMi4yIDIuNiAyLjggMy40Yy4zIC40IC42IC43IC43IC45bC4yIC4yIDAgMCAwIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmluQmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzQ5LjUgNTIuNGMxOC43LTQuNCAzNS45IDEyIDI1LjUgMjguMUMzNTAuNCAzNzQuNiAzMDYuMyA0MDAgMjU1LjkgNDAwcy05NC41LTI1LjQtMTE5LjEtNjMuNWMtMTAuNC0xNi4xIDYuOC0zMi41IDI1LjUtMjguMWMyOC45IDYuOCA2MC41IDEwLjUgOTMuNiAxMC41czY0LjctMy43IDkzLjYtMTAuNXpNMjE3LjYgMjI4LjhsMCAwIDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMHptMTYwIDBsMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwIDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUdyaW5IZWFydHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTM0OS41IDUyLjRjMTguNy00LjQgMzUuOSAxMiAyNS41IDI4LjFDMzUwLjQgMzc0LjYgMzA2LjMgNDAwIDI1NS45IDQwMHMtOTQuNS0yNS40LTExOS4xLTYzLjVjLTEwLjQtMTYuMSA2LjgtMzIuNSAyNS41LTI4LjFjMjguOSA2LjggNjAuNSAxMC41IDkzLjYgMTAuNXM2NC43LTMuNyA5My42LTEwLjV6TTIxNS4zIDEzNy4xYzE3LjggNC44IDI4LjQgMjMuMSAyMy42IDQwLjhsLTE3LjQgNjVjLTIuMyA4LjUtMTEuMSAxMy42LTE5LjYgMTEuM2wtNjUuMS0xNy40Yy0xNy44LTQuOC0yOC40LTIzLjEtMjMuNi00MC44czIzLjEtMjguNCA0MC44LTIzLjZsMTYuMSA0LjMgNC4zLTE2LjFjNC44LTE3LjggMjMuMS0yOC40IDQwLjgtMjMuNnptMTIyLjMgMjMuNmw0LjMgMTYuMSAxNi4xLTQuM2MxNy44LTQuOCAzNi4xIDUuOCA0MC44IDIzLjZzLTUuOCAzNi4xLTIzLjYgNDAuOGwtNjUuMSAxNy40Yy04LjUgMi4zLTE3LjMtMi44LTE5LjYtMTEuM2wtMTcuNC02NWMtNC44LTE3LjggNS44LTM2LjEgMjMuNi00MC44czM2LjEgNS44IDQwLjkgMjMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUdyaW5TcXVpbnRUZWFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjYuOCAxNC4yQzQ0Ni01IDQ3Ny41LTQuNiA0OTcuMSAxNC45czIwIDUxIC43IDcwLjNjLTE0LjggMTQuOC02NS43IDIzLjYtODguMyAyNi43Yy01LjYgLjktMTAuMy0zLjktOS41LTkuNUM0MDMuMyA3OS45IDQxMiAyOSA0MjYuOCAxNC4yek03NSA3NUMxNTguMi04LjMgMjg0LjUtMjIuMiAzODIuMiAzMy4yYy0xLjUgNC44LTIuOSA5LjYtNC4xIDE0LjNjLTMuMSAxMi4yLTUuNSAyNC42LTcuMyAzNWMtODAuOC01My42LTE5MC43LTQ0LjgtMjYxLjkgMjYuNEMzNy43IDE4MC4xIDI4LjkgMjkwIDgyLjUgMzcwLjhjLTEwLjUgMS44LTIyLjkgNC4yLTM1IDcuM2MtNC43IDEuMi05LjUgMi41LTE0LjMgNC4xQy0yMi4yIDI4NC41LTguMiAxNTguMiA3NSA3NXptMzg5LjYgNTguOWM0LjctMS4yIDkuNS0yLjUgMTQuMy00LjFDNTM0LjIgMjI3LjUgNTIwLjIgMzUzLjggNDM3IDQzN2MtODMuMiA4My4yLTIwOS41IDk3LjItMzA3LjIgNDEuOGMxLjUtNC44IDIuOC05LjYgNC0xNC4zYzMuMS0xMi4yIDUuNS0yNC42IDcuMy0zNWM4MC44IDUzLjYgMTkwLjcgNDQuOCAyNjEuOS0yNi40YzcxLjItNzEuMiA4MC0xODEuMSAyNi40LTI2MS45YzEwLjUtMS44IDIyLjktNC4yIDM1LTcuM3ptLTEwNS40IDkzYzEwLjEtMTYuMyAzMy45LTE2LjkgMzcuOSAxLjljOS41IDQ0LjQtMy43IDkzLjUtMzkuMyAxMjkuMXMtODQuOCA0OC44LTEyOS4xIDM5LjNjLTE4LjctNC0xOC4yLTI3LjgtMS45LTM3LjljMjUuMi0xNS43IDUwLjItMzUuNCA3My42LTU4LjhzNDMuMS00OC40IDU4LjgtNzMuNnpNOTIgMjY1LjNsOTcuNC0yOS43YzExLjYtMy41IDIyLjUgNy4zIDE5IDE5bC0yOS43IDk3LjRjLTIuNiA4LjYtMTMuNCAxMS4zLTE5LjggNC45Yy0yLTItMy4yLTQuNi0zLjQtNy4zbC01LjEtNTYuMS01Ni4xLTUuMWMtMi44LS4zLTUuNC0xLjUtNy4zLTMuNGMtNi4zLTYuMy0zLjYtMTcuMiA0LjktMTkuOHptMTkzLTE3OC4yYzIgMiAzLjIgNC42IDMuNCA3LjNsNS4xIDU2LjEgNTYuMSA1LjFjMi44IC4zIDUuNCAxLjUgNy4zIDMuNGM2LjMgNi4zIDMuNiAxNy4yLTQuOSAxOS44bC05Ny40IDI5LjdjLTExLjYgMy41LTIyLjUtNy4zLTE5LTE5TDI2NS4zIDkyYzIuNi04LjYgMTMuNC0xMS4zIDE5LjgtNC45ek0xNC45IDQ5Ny4xYy0xOS42LTE5LjYtMjAtNTEtLjctNzAuM0MyOSA0MTIgNzkuOCA0MDMuMiAxMDIuNCA0MDAuMWM1LjYtLjkgMTAuMyAzLjkgOS41IDkuNWMtMy4yIDIyLjUtMTEuOSA3My41LTI2LjcgODguM0M2NiA1MTcgMzQuNSA1MTYuNiAxNC45IDQ5Ny4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlR3JpblNxdWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzQ5LjUgNTIuNGMxOC43LTQuNCAzNS45IDEyIDI1LjUgMjguMUMzNTAuNCAzNzQuNiAzMDYuMyA0MDAgMjU1LjkgNDAwcy05NC41LTI1LjQtMTE5LjEtNjMuNWMtMTAuNC0xNi4xIDYuOC0zMi41IDI1LjUtMjguMWMyOC45IDYuOCA2MC41IDEwLjUgOTMuNiAxMC41czY0LjctMy43IDkzLjYtMTAuNXptLTIxNi0xNjEuN2w4OS45IDQ3LjljMTAuNyA1LjcgMTAuNyAyMS4xIDAgMjYuOGwtODkuOSA0Ny45Yy03LjkgNC4yLTE3LjUtMS41LTE3LjUtMTAuNWMwLTIuOCAxLTUuNSAyLjgtNy42bDM2LTQzLjItMzYtNDMuMmMtMS44LTIuMS0yLjgtNC44LTIuOC03LjZjMC05IDkuNi0xNC43IDE3LjUtMTAuNXpNMzk2IDE1Ny4xYzAgMi44LTEgNS41LTIuOCA3LjZsLTM2IDQzLjIgMzYgNDMuMmMxLjggMi4xIDIuOCA0LjggMi44IDcuNmMwIDktOS42IDE0LjctMTcuNSAxMC41bC04OS45LTQ3LjljLTEwLjctNS43LTEwLjctMjEuMSAwLTI2LjhsODkuOS00Ny45YzcuOS00LjIgMTcuNSAxLjUgMTcuNSAxMC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlR3JpblN0YXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGEyMDggMjA4IDAgMSAxIDAgNDE2IDIwOCAyMDggMCAxIDEgMC00MTZ6bTAgNDY0QTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTgzLjIgMTMyLjZjLTEuMy0yLjgtNC4xLTQuNi03LjItNC42cy01LjkgMS44LTcuMiA0LjZsLTE2LjYgMzQuNy0zOC4xIDVjLTMuMSAuNC01LjYgMi41LTYuNiA1LjVzLS4xIDYuMiAyLjEgOC4zbDI3LjkgMjYuNS03IDM3LjhjLS42IDMgLjcgNi4xIDMuMiA3LjlzNS44IDIgOC41IC42TDE3NiAyNDAuNWwzMy44IDE4LjNjMi43IDEuNSA2IDEuMyA4LjUtLjZzMy43LTQuOSAzLjItNy45bC03LTM3LjhMMjQyLjQgMTg2YzIuMi0yLjEgMy4xLTUuMyAyLjEtOC4zcy0zLjUtNS4xLTYuNi01LjVsLTM4LjEtNS0xNi42LTM0Ljd6bTE2MCAwYy0xLjMtMi44LTQuMS00LjYtNy4yLTQuNnMtNS45IDEuOC03LjIgNC42bC0xNi42IDM0LjctMzguMSA1Yy0zLjEgLjQtNS42IDIuNS02LjYgNS41cy0uMSA2LjIgMi4xIDguM2wyNy45IDI2LjUtNyAzNy44Yy0uNiAzIC43IDYuMSAzLjIgNy45czUuOCAyIDguNSAuNkwzMzYgMjQwLjVsMzMuOCAxOC4zYzIuNyAxLjUgNiAxLjMgOC41LS42czMuNy00LjkgMy4yLTcuOWwtNy0zNy44TDQwMi40IDE4NmMyLjItMi4xIDMuMS01LjMgMi4xLTguM3MtMy41LTUuMS02LjYtNS41bC0zOC4xLTUtMTYuNi0zNC43em02LjMgMTc1LjhjLTI4LjkgNi44LTYwLjUgMTAuNS05My42IDEwLjVzLTY0LjctMy43LTkzLjYtMTAuNWMtMTguNy00LjQtMzUuOSAxMi0yNS41IDI4LjFjMjQuNiAzOC4xIDY4LjcgNjMuNSAxMTkuMSA2My41czk0LjUtMjUuNCAxMTkuMS02My41YzEwLjQtMTYuMS02LjgtMzIuNS0yNS41LTI4LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmluVGVhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTE2LjEgMzI1LjVjMSAzIDIuMSA2IDMuMyA4LjljMy4zIDguMSA4LjQgMTguNSAxNi41IDI2LjZjMy45IDMuOSA4LjIgNy40IDEyLjcgMTAuM0M1MDYuNCA0NTQuOCA0MTkuOSA1MTIgMzIwIDUxMnMtMTg2LjQtNTcuMi0yMjguNi0xNDAuNmM0LjUtMi45IDguNy02LjMgMTIuNy0xMC4zYzguMS04LjEgMTMuMi0xOC42IDE2LjUtMjYuNmMxLjItMi45IDIuMy01LjkgMy4zLTguOUMxNTIuNSA0MDYuMiAyMjkuNSA0NjQgMzIwIDQ2NHMxNjcuNS01Ny44IDE5Ni4xLTEzOC41ek0zMjAgNDhjLTEwMS40IDAtMTg1LjggNzIuNS0yMDQuMyAxNjguNWMtNi43LTMuMS0xNC4zLTQuMy0yMi4zLTMuMWMtNi44IC45LTE2LjIgMi40LTI2LjYgNC40Qzg1LjMgOTQuNSAxOTEuNiAwIDMyMCAwUzU1NC43IDk0LjUgNTczLjIgMjE3LjdjLTEwLjMtMi0xOS44LTMuNS0yNi42LTQuNGMtOC0xLjItMTUuNyAuMS0yMi4zIDMuMUM1MDUuOCAxMjAuNSA0MjEuNCA0OCAzMjAgNDh6TTc4LjUgMzQxLjFDNjAgMzU2LjcgMzIgMzU1LjUgMTQuMyAzMzcuN2MtMTguNy0xOC43LTE5LjEtNDguOC0uNy02Ny4yYzguNi04LjYgMzAuMS0xNS4xIDUwLjUtMTkuNmMxMy0yLjggMjUuNS00LjggMzMuOS02YzUuNC0uOCA5LjkgMy43IDkgOWMtMy4xIDIxLjUtMTEuNCA3MC4yLTI1LjUgODQuNGMtLjkgMS0xLjkgMS44LTIuOSAyLjd6bTQ4MyAwYy0uOC0uNi0xLjUtMS4zLTIuMy0yYy0uMi0uMi0uNS0uNC0uNy0uN2MtMTQuMS0xNC4xLTIyLjUtNjIuOS0yNS41LTg0LjRjLS44LTUuNCAzLjctOS45IDktOWMxIC4xIDIuMiAuMyAzLjMgLjVjOC4yIDEuMiAxOS4yIDMgMzAuNiA1LjVjMjAuNCA0LjQgNDEuOSAxMC45IDUwLjUgMTkuNmMxOC40IDE4LjQgMTggNDguNS0uNyA2Ny4yYy0xNy43IDE3LjctNDUuNyAxOS02NC4yIDMuNHpNNDM5IDMzNi41QzQxNC40IDM3NC42IDM3MC4zIDQwMCAzMTkuOSA0MDBzLTk0LjUtMjUuNC0xMTkuMS02My41Yy0xMC40LTE2LjEgNi44LTMyLjUgMjUuNS0yOC4xYzI4LjkgNi44IDYwLjUgMTAuNSA5My42IDEwLjVzNjQuNy0zLjcgOTMuNi0xMC41YzE4LjctNC40IDM1LjkgMTIgMjUuNSAyOC4xek0yODEuNiAyMjguOGwwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDAgMCAwem0xNjAgMGwwIDAgMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlR3JpblRvbmd1ZVNxdWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2YzAtMTE0LjktOTMuMS0yMDgtMjA4LTIwOFM0OCAxNDEuMSA0OCAyNTZjMCA4MS43IDQ3LjEgMTUyLjQgMTE1LjcgMTg2LjRjLTIuNC04LjQtMy43LTE3LjMtMy43LTI2LjRWMzkyLjdjLTI0LTE3LjUtNDMuMS00MS40LTU0LjgtNjkuMmMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTljMTIuMy0zLjggMjQuMyA2LjkgMTkuMyAxOC43Yy0xMS44IDI4LTMxLjEgNTItNTUuNCA2OS42VjQxNmMwIDkuMi0xLjMgMTgtMy43IDI2LjRDNDE2LjkgNDA4LjQgNDY0IDMzNy43IDQ2NCAyNTZ6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMTE2LTk4LjljMC05IDkuNi0xNC43IDE3LjUtMTAuNWw4OS45IDQ3LjljMTAuNyA1LjcgMTAuNyAyMS4xIDAgMjYuOGwtODkuOSA0Ny45Yy03LjkgNC4yLTE3LjUtMS41LTE3LjUtMTAuNWMwLTIuOCAxLTUuNSAyLjgtNy42bDM2LTQzLjItMzYtNDMuMmMtMS44LTIuMS0yLjgtNC44LTIuOC03LjZ6bTI2Mi41LTEwLjVjNy45LTQuMiAxNy41IDEuNSAxNy41IDEwLjVjMCAyLjgtMSA1LjUtMi44IDcuNmwtMzYgNDMuMiAzNiA0My4yYzEuOCAyLjEgMi44IDQuOCAyLjggNy42YzAgOS05LjYgMTQuNy0xNy41IDEwLjVsLTg5LjktNDcuOWMtMTAuNy01LjctMTAuNy0yMS4xIDAtMjYuOGw4OS45LTQ3Ljl6TTMyMCA0MTZWMzc4LjZjMC0xNC43LTExLjktMjYuNi0yNi42LTI2LjZoLTJjLTExLjMgMC0yMS4xIDcuOS0yMy42IDE4LjljLTIuOCAxMi42LTIwLjggMTIuNi0yMy42IDBjLTIuNS0xMS4xLTEyLjMtMTguOS0yMy42LTE4LjloLTJjLTE0LjcgMC0yNi42IDExLjktMjYuNiAyNi42VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlR3JpblRvbmd1ZVdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ4LjMgNDQyLjRjMi40LTguNCAzLjctMTcuMyAzLjctMjYuNFYzNjMuNWM4LjgtOCAxNi42LTE3LjEgMjMtMjdjMTAuNC0xNi4xLTYuOC0zMi41LTI1LjUtMjguMWMtMjguOSA2LjgtNjAuNSAxMC41LTkzLjYgMTAuNXMtNjQuNy0zLjctOTMuNi0xMC41Yy0xOC43LTQuNC0zNS45IDEyLTI1LjUgMjguMWM2LjUgMTAgMTQuMyAxOS4xIDIzLjEgMjcuMVY0MTZjMCA5LjIgMS4zIDE4IDMuNyAyNi40Qzk1LjEgNDA4LjQgNDggMzM3LjcgNDggMjU2QzQ4IDE0MS4xIDE0MS4xIDQ4IDI1NiA0OHMyMDggOTMuMSAyMDggMjA4YzAgODEuNy00Ny4xIDE1Mi40LTExNS43IDE4Ni40ek0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTU5LjYgMjIwYzEwLjYgMCAxOS45IDMuOCAyNS40IDkuN2M3LjYgOC4xIDIwLjIgOC41IDI4LjMgLjlzOC41LTIwLjIgLjktMjguM0MxOTkuNyAxODYuOCAxNzkgMTgwIDE1OS42IDE4MHMtNDAuMSA2LjgtNTQuNiAyMi4zYy03LjYgOC4xLTcuMSAyMC43IC45IDI4LjNzMjAuNyA3LjEgMjguMy0uOWM1LjUtNS44IDE0LjgtOS43IDI1LjQtOS43em0xNzYuNyAxMmEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bS0uNC03MmE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6bTAgMTI4YTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwek0zMjAgNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0cy02NC0yOC43LTY0LTY0VjM3OC42YzAtMTQuNyAxMS45LTI2LjYgMjYuNi0yNi42aDJjMTEuMyAwIDIxLjEgNy45IDIzLjYgMTguOWMyLjggMTIuNiAyMC44IDEyLjYgMjMuNiAwYzIuNS0xMS4xIDEyLjMtMTguOSAyMy42LTE4LjloMmMxNC43IDAgMjYuNiAxMS45IDI2LjYgMjYuNlY0MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmluVG9uZ3VlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZjMC0xMTQuOS05My4xLTIwOC0yMDgtMjA4UzQ4IDE0MS4xIDQ4IDI1NmMwIDgxLjcgNDcuMSAxNTIuNCAxMTUuNyAxODYuNGMtMi40LTguNC0zLjctMTcuMy0zLjctMjYuNFYzNjMuNmMtOC45LTgtMTYuNy0xNy4xLTIzLjEtMjcuMWMtMTAuNC0xNi4xIDYuOC0zMi41IDI1LjUtMjguMWMyOC45IDYuOCA2MC41IDEwLjUgOTMuNiAxMC41czY0LjctMy43IDkzLjYtMTAuNWMxOC43LTQuNCAzNS45IDEyIDI1LjUgMjguMWMtNi40IDkuOS0xNC4yIDE5LTIzIDI3VjQxNmMwIDkuMi0xLjMgMTgtMy43IDI2LjRDNDE2LjkgNDA4LjQgNDY0IDMzNy43IDQ2NCAyNTZ6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMTc2LjQtODBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMzIwIDQxNlYzNzguNmMwLTE0LjctMTEuOS0yNi42LTI2LjYtMjYuNmgtMmMtMTEuMyAwLTIxLjEgNy45LTIzLjYgMTguOWMtMi44IDEyLjYtMjAuOCAxMi42LTIzLjYgMGMtMi41LTExLjEtMTIuMy0xOC45LTIzLjYtMTguOWgtMmMtMTQuNyAwLTI2LjYgMTEuOS0yNi42IDI2LjZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmluV2lkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzQ5LjUgNTIuNGMxOC43LTQuNCAzNS45IDEyIDI1LjUgMjguMUMzNTAuNCAzNzQuNiAzMDYuMyA0MDAgMjU1LjkgNDAwcy05NC41LTI1LjQtMTE5LjEtNjMuNWMtMTAuNC0xNi4xIDYuOC0zMi41IDI1LjUtMjguMWMyOC45IDYuOCA2MC41IDEwLjUgOTMuNiAxMC41czY0LjctMy43IDkzLjYtMTAuNXpNMjI0IDE5MmMwIDM1LjMtMTQuMyA2NC0zMiA2NHMtMzItMjguNy0zMi02NHMxNC4zLTY0IDMyLTY0czMyIDI4LjcgMzIgNjR6bTk2IDY0Yy0xNy43IDAtMzItMjguNy0zMi02NHMxNC4zLTY0IDMyLTY0czMyIDI4LjcgMzIgNjRzLTE0LjMgNjQtMzIgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VHcmluV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzQ5LjUgNTIuNGMxOC43LTQuNCAzNS45IDEyIDI1LjUgMjguMUMzNTAuNCAzNzQuNiAzMDYuMyA0MDAgMjU1LjkgNDAwcy05NC41LTI1LjQtMTE5LjEtNjMuNWMtMTAuNC0xNi4xIDYuOC0zMi41IDI1LjUtMjguMWMyOC45IDYuOCA2MC41IDEwLjUgOTMuNiAxMC41czY0LjctMy43IDkzLjYtMTAuNXpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE2NS44IDIxLjdjLTcuNiA4LjEtMjAuMiA4LjUtMjguMyAuOXMtOC41LTIwLjItLjktMjguM2MxNC41LTE1LjUgMzUuMi0yMi4zIDU0LjYtMjIuM3M0MC4xIDYuOCA1NC42IDIyLjNjNy42IDguMSA3LjEgMjAuNy0uOSAyOC4zcy0yMC43IDcuMS0yOC4zLS45Yy01LjUtNS44LTE0LjgtOS43LTI1LjQtOS43cy0xOS45IDMuOC0yNS40IDkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUdyaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTM0OS41IDUyLjRjMTguNy00LjQgMzUuOSAxMiAyNS41IDI4LjFDMzUwLjQgMzc0LjYgMzA2LjMgNDAwIDI1NS45IDQwMHMtOTQuNS0yNS40LTExOS4xLTYzLjVjLTEwLjQtMTYuMSA2LjgtMzIuNSAyNS41LTI4LjFjMjguOSA2LjggNjAuNSAxMC41IDkzLjYgMTAuNXM2NC43LTMuNyA5My42LTEwLjV6TTE0NC40IDIwOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlS2lzc0JlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTMwNC43IDQxLjdjNC4zIDUuMSA3LjMgMTEuNCA3LjMgMTguM3MtMy4xIDEzLjItNy4zIDE4LjNjLTQuMyA1LjItMTAuMSA5LjctMTYuNyAxMy40Yy0yLjcgMS41LTUuNyAzLTguNyA0LjNjMy4xIDEuMyA2IDIuNyA4LjcgNC4zYzYuNiAzLjcgMTIuNSA4LjIgMTYuNyAxMy40YzQuMyA1LjEgNy4zIDExLjQgNy4zIDE4LjNzLTMuMSAxMy4yLTcuMyAxOC4zYy00LjMgNS4yLTEwLjEgOS43LTE2LjcgMTMuNEMyNzQuNyA0MjcuMSAyNTcuNCA0MzIgMjQwIDQzMmMtMy42IDAtNi44LTIuNS03LjctNnMuNi03LjIgMy44LTlsMCAwIDAgMCAwIDAgMCAwIC4yLS4xYy4yLS4xIC41LS4zIC45LS41Yy44LS41IDItMS4yIDMuNC0yLjFjMi44LTEuOSA2LjUtNC41IDEwLjItNy42YzMuNy0zLjEgNy4yLTYuNiA5LjYtMTAuMWMyLjUtMy41IDMuNS02LjQgMy41LTguNnMtMS01LTMuNS04LjZjLTIuNS0zLjUtNS45LTYuOS05LjYtMTAuMWMtMy43LTMuMS03LjQtNS43LTEwLjItNy42Yy0xLjQtLjktMi42LTEuNi0zLjQtMi4xYy0uNC0uMi0uNy0uNC0uOS0uNWwtLjItLjEgMCAwIDAgMCAwIDBjLTIuNS0xLjQtNC4xLTQuMS00LjEtN3MxLjYtNS42IDQuMS03bDAgMCAwIDAgMCAwIDAgMCAwIDAgLjItLjFjLjItLjEgLjUtLjMgLjktLjVjLjgtLjUgMi0xLjIgMy40LTIuMWMyLjgtMS45IDYuNS00LjUgMTAuMi03LjZjMy43LTMuMSA3LjItNi42IDkuNi0xMC4xYzIuNS0zLjUgMy41LTYuNCAzLjUtOC42cy0xLTUtMy41LTguNmMtMi41LTMuNS01LjktNi45LTkuNi0xMC4xYy0zLjctMy4xLTcuNC01LjctMTAuMi03LjZjLTEuNC0uOS0yLjYtMS42LTMuNC0yLjFjLS40LS4yLS43LS40LS45LS41bC0uMi0uMSAwIDAgMCAwIDAgMGMtMy4yLTEuOC00LjctNS41LTMuOC05czQuMS02IDcuNy02YzE3LjQgMCAzNC43IDQuOSA0Ny45IDEyLjNjNi42IDMuNyAxMi41IDguMiAxNi43IDEzLjR6bS04Ny4xLTY4LjlsMCAwIDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMHptMTYwIDBsMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwIDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUtpc3NXaW5rSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM4LjkgNDQ2LjhjLTI1LjQgMTEtNTMuNCAxNy4yLTgyLjkgMTcuMkMxNDEuMSA0NjQgNDggMzcwLjkgNDggMjU2UzE0MS4xIDQ4IDI1NiA0OHMyMDggOTMuMSAyMDggMjA4YzAgMjIuNC0zLjUgNDMuOS0xMC4xIDY0LjFjMy4xIDQuNSA1LjcgOS40IDcuOCAxNC42YzEyLjctMS42IDI1LjEgLjQgMzYuMiA1YzkuMS0yNi4yIDE0LTU0LjQgMTQtODMuN0M1MTIgMTE0LjYgMzk3LjQgMCAyNTYgMFMwIDExNC42IDAgMjU2UzExNC42IDUxMiAyNTYgNTEyYzM1LjQgMCA2OS4xLTcuMiA5OS43LTIwLjJjLTQuOC01LjUtOC41LTEyLjItMTAuNC0xOS43bC02LjUtMjUuM3pNMjk2IDMxNmMwLTYuOS0zLjEtMTMuMi03LjMtMTguM2MtNC4zLTUuMi0xMC4xLTkuNy0xNi43LTEzLjRDMjU4LjcgMjc2LjkgMjQxLjQgMjcyIDIyNCAyNzJjLTMuNiAwLTYuOCAyLjUtNy43IDZzLjYgNy4yIDMuOCA5bDAgMCAwIDAgMCAwIC4yIC4xYy4yIC4xIC41IC4zIC45IC41Yy44IC41IDIgMS4yIDMuNCAyLjFjMi44IDEuOSA2LjUgNC41IDEwLjIgNy42YzMuNyAzLjEgNy4yIDYuNiA5LjYgMTAuMWMyLjUgMy41IDMuNSA2LjQgMy41IDguNnMtMSA1LTMuNSA4LjZjLTIuNSAzLjUtNS45IDYuOS05LjYgMTAuMWMtMy43IDMuMS03LjQgNS43LTEwLjIgNy42Yy0xLjQgLjktMi42IDEuNi0zLjQgMi4xYy0uNCAuMi0uNyAuNC0uOSAuNWwtLjIgLjEgMCAwIDAgMCAwIDAgMCAwIDAgMGMtMi41IDEuNC00LjEgNC4xLTQuMSA3czEuNiA1LjYgNC4xIDdsMCAwIDAgMCAwIDAgLjIgLjFjLjIgLjEgLjUgLjMgLjkgLjVjLjggLjUgMiAxLjIgMy40IDIuMWMyLjggMS45IDYuNSA0LjUgMTAuMiA3LjZjMy43IDMuMSA3LjIgNi42IDkuNiAxMC4xYzIuNSAzLjUgMy41IDYuNCAzLjUgOC42cy0xIDUtMy41IDguNmMtMi41IDMuNS01LjkgNi45LTkuNiAxMC4xYy0zLjcgMy4xLTcuNCA1LjctMTAuMiA3LjZjLTEuNCAuOS0yLjYgMS42LTMuNCAyLjFjLS40IC4yLS43IC40LS45IC41bC0uMiAuMSAwIDAgMCAwIDAgMCAwIDBjLTMuMiAxLjgtNC43IDUuNS0zLjggOXM0LjEgNiA3LjcgNmMxNy40IDAgMzQuNy00LjkgNDcuOS0xMi4zYzYuNi0zLjcgMTIuNS04LjIgMTYuNy0xMy40YzQuMy01LjEgNy4zLTExLjQgNy4zLTE4LjNzLTMuMS0xMy4yLTcuMy0xOC4zYy00LjMtNS4yLTEwLjEtOS43LTE2LjctMTMuNGMtMi43LTEuNS01LjctMy04LjctNC4zYzMuMS0xLjMgNi0yLjcgOC43LTQuM2M2LjYtMy43IDEyLjUtOC4yIDE2LjctMTMuNGM0LjMtNS4xIDcuMy0xMS40IDcuMy0xOC4zek0xNzYuNCAyNDBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0xNTkuMy0yMGMxMC42IDAgMTkuOSAzLjggMjUuNCA5LjdjNy42IDguMSAyMC4yIDguNSAyOC4zIC45czguNS0yMC4yIC45LTI4LjNDMzc1LjcgMTg2LjggMzU1IDE4MCAzMzUuNiAxODBzLTQwLjEgNi44LTU0LjYgMjIuM2MtNy42IDguMS03LjEgMjAuNyAuOSAyOC4zczIwLjcgNy4xIDI4LjMtLjljNS41LTUuOCAxNC44LTkuNyAyNS40LTkuN3pNNDM0IDM1Mi4zYy02LTIzLjItMjguOC0zNy01MS4xLTMwLjhzLTM1LjQgMzAuMS0yOS41IDUzLjRsMjIuOSA4OS4zYzIuMiA4LjcgMTEuMiAxMy45IDE5LjggMTEuNGw4NC45LTIzLjhjMjIuMi02LjIgMzUuNC0zMC4xIDI5LjUtNTMuNHMtMjguOC0zNy01MS4xLTMwLjhsLTIwLjIgNS42LTUuNC0yMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUtpc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTMwNC43IDI1LjdjNC4zIDUuMSA3LjMgMTEuNCA3LjMgMTguM3MtMy4xIDEzLjItNy4zIDE4LjNjLTQuMyA1LjItMTAuMSA5LjctMTYuNyAxMy40Yy0yLjcgMS41LTUuNyAzLTguNyA0LjNjMy4xIDEuMyA2IDIuNyA4LjcgNC4zYzYuNiAzLjcgMTIuNSA4LjIgMTYuNyAxMy40YzQuMyA1LjEgNy4zIDExLjQgNy4zIDE4LjNzLTMuMSAxMy4yLTcuMyAxOC4zYy00LjMgNS4yLTEwLjEgOS43LTE2LjcgMTMuNEMyNzQuNyA0MTEuMSAyNTcuNCA0MTYgMjQwIDQxNmMtMy42IDAtNi44LTIuNS03LjctNnMuNi03LjIgMy44LTlsMCAwIDAgMCAwIDAgMCAwIC4yLS4xYy4yLS4xIC41LS4zIC45LS41Yy44LS41IDItMS4yIDMuNC0yLjFjMi44LTEuOSA2LjUtNC41IDEwLjItNy42YzMuNy0zLjEgNy4yLTYuNiA5LjYtMTAuMWMyLjUtMy41IDMuNS02LjQgMy41LTguNnMtMS01LTMuNS04LjZjLTIuNS0zLjUtNS45LTYuOS05LjYtMTAuMWMtMy43LTMuMS03LjQtNS43LTEwLjItNy42Yy0xLjQtLjktMi42LTEuNi0zLjQtMi4xbC0uOC0uNS0uMS0uMS0uMi0uMSAwIDAgMCAwIDAgMGMtMi41LTEuNC00LjEtNC4xLTQuMS03czEuNi01LjYgNC4xLTdsMCAwIDAgMCAwIDAgMCAwIDAgMCAuMi0uMWMuMi0uMSAuNS0uMyAuOS0uNWMuOC0uNSAyLTEuMiAzLjQtMi4xYzIuOC0xLjkgNi41LTQuNSAxMC4yLTcuNmMzLjctMy4xIDcuMi02LjYgOS42LTEwLjFjMi41LTMuNSAzLjUtNi40IDMuNS04LjZzLTEtNS0zLjUtOC42Yy0yLjUtMy41LTUuOS02LjktOS42LTEwLjFjLTMuNy0zLjEtNy40LTUuNy0xMC4yLTcuNmMtMS40LS45LTIuNi0xLjYtMy40LTIuMWMtLjQtLjItLjctLjQtLjktLjVsLS4yLS4xIDAgMCAwIDAgMCAwYy0zLjItMS44LTQuNy01LjUtMy44LTlzNC4xLTYgNy43LTZjMTcuNCAwIDM0LjcgNC45IDQ3LjkgMTIuM2M2LjYgMy43IDEyLjUgOC4yIDE2LjcgMTMuNHpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VMYXVnaEJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTEzMC43IDU3LjljLTQuMi0xMy42IDcuMS0yNS45IDIxLjMtMjUuOUgzNjQuNWMxNC4yIDAgMjUuNSAxMi40IDIxLjMgMjUuOUMzNjkgMzY4LjQgMzE4LjIgNDA4IDI1OC4yIDQwOHMtMTEwLjgtMzkuNi0xMjcuNS05NC4xem04Ni45LTg1LjFsMCAwIDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMHptMTYwIDBsMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwIDAgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZUxhdWdoU3F1aW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xMzAuNyA1Ny45Yy00LjItMTMuNiA3LjEtMjUuOSAyMS4zLTI1LjlIMzY0LjVjMTQuMiAwIDI1LjUgMTIuNCAyMS4zIDI1LjlDMzY5IDM2OC40IDMxOC4yIDQwOCAyNTguMiA0MDhzLTExMC44LTM5LjYtMTI3LjUtOTQuMXptMi44LTE4My4zbDg5LjkgNDcuOWMxMC43IDUuNyAxMC43IDIxLjEgMCAyNi44bC04OS45IDQ3LjljLTcuOSA0LjItMTcuNS0xLjUtMTcuNS0xMC41YzAtMi44IDEtNS41IDIuOC03LjZsMzYtNDMuMi0zNi00My4yYy0xLjgtMi4xLTIuOC00LjgtMi44LTcuNmMwLTkgOS42LTE0LjcgMTcuNS0xMC41ek0zOTYgMTQxLjFjMCAyLjgtMSA1LjUtMi44IDcuNmwtMzYgNDMuMiAzNiA0My4yYzEuOCAyLjEgMi44IDQuOCAyLjggNy42YzAgOS05LjYgMTQuNy0xNy41IDEwLjVsLTg5LjktNDcuOWMtMTAuNy01LjctMTAuNy0yMS4xIDAtMjYuOGw4OS45LTQ3LjljNy45LTQuMiAxNy41IDEuNSAxNy41IDEwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VMYXVnaFdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTEzMC43IDU3LjljLTQuMi0xMy42IDcuMS0yNS45IDIxLjMtMjUuOUgzNjQuNWMxNC4yIDAgMjUuNSAxMi40IDIxLjMgMjUuOUMzNjkgMzY4LjQgMzE4LjIgNDA4IDI1OC4yIDQwOHMtMTEwLjgtMzkuNi0xMjcuNS05NC4xek0xNDQuNCAxOTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTY1LjggMjEuN2MtNy42IDguMS0yMC4yIDguNS0yOC4zIC45cy04LjUtMjAuMi0uOS0yOC4zYzE0LjUtMTUuNSAzNS4yLTIyLjMgNTQuNi0yMi4zczQwLjEgNi44IDU0LjYgMjIuM2M3LjYgOC4xIDcuMSAyMC43LS45IDI4LjNzLTIwLjcgNy4xLTI4LjMtLjljLTUuNS01LjgtMTQuOC05LjctMjUuNC05LjdzLTE5LjkgMy44LTI1LjQgOS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlTGF1Z2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1NkEyMDggMjA4IDAgMSAwIDQ4IDI1NmEyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTEzMC43IDU3LjljLTQuMi0xMy42IDcuMS0yNS45IDIxLjMtMjUuOUgzNjQuNWMxNC4yIDAgMjUuNSAxMi40IDIxLjMgMjUuOUMzNjkgMzY4LjQgMzE4LjIgNDA4IDI1OC4yIDQwOHMtMTEwLjgtMzkuNi0xMjcuNS05NC4xek0xNDQuNCAxOTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZU1laEJsYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGEyMDggMjA4IDAgMSAwIDAgNDE2IDIwOCAyMDggMCAxIDAgMC00MTZ6TTUxMiAyNTZBMjU2IDI1NiAwIDEgMSAwIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZU1laCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDEgNDggMjU2YTIwOCAyMDggMCAxIDEgNDE2IDB6TTI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMHpNMTc2LjQgMjQwYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMTkyLTMyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTE4NCAzMjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMzI4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDE4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZVJvbGxpbmdFeWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGEyMDggMjA4IDAgMSAxIDAgNDE2IDIwOCAyMDggMCAxIDEgMC00MTZ6bTAgNDY0QTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTY4IDM3NmMwIDEzLjMgMTAuNyAyNCAyNCAyNEgzMjBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTkyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptLTgtMTA0Yy0yNi41IDAtNDgtMjEuNS00OC00OGMwLTE0LjMgNi4zLTI3LjIgMTYuMi0zNmMtLjIgMS4zLS4yIDIuNi0uMiA0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC0xLjQtLjEtMi43LS4yLTRjMTAgOC44IDE2LjIgMjEuNyAxNi4yIDM2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4em0wIDMyYTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwem0xOTItMzJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4YzAtMTQuMyA2LjMtMjcuMiAxNi4yLTM2Yy0uMiAxLjMtLjIgMi42LS4yIDRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTEuNC0uMS0yLjctLjItNGMxMCA4LjggMTYuMiAyMS43IDE2LjIgMzZjMCAyNi41LTIxLjUgNDgtNDggNDh6bTAgMzJhODAgODAgMCAxIDAgMC0xNjAgODAgODAgMCAxIDAgMCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VTYWRDcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDQwNi4xVjI4OGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY0NDAuNmMtMjguNyAxNS02MS40IDIzLjQtOTYgMjMuNHMtNjcuMy04LjUtOTYtMjMuNFYyODhjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWNDA2LjFDNzIuNiAzNjguMiA0OCAzMTUgNDggMjU2QzQ4IDE0MS4xIDE0MS4xIDQ4IDI1NiA0OHMyMDggOTMuMSAyMDggMjA4YzAgNTktMjQuNiAxMTIuMi02NCAxNTAuMXpNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE1OS42IDIyMGMxMC42IDAgMTkuOSAzLjggMjUuNCA5LjdjNy42IDguMSAyMC4yIDguNSAyOC4zIC45czguNS0yMC4yIC45LTI4LjNDMTk5LjcgMTg2LjggMTc5IDE4MCAxNTkuNiAxODBzLTQwLjEgNi44LTU0LjYgMjIuM2MtNy42IDguMS03LjEgMjAuNyAuOSAyOC4zczIwLjcgNy4xIDI4LjMtLjljNS41LTUuOCAxNC44LTkuNyAyNS40LTkuN3ptMTY2LjYgOS43YzUuNS01LjggMTQuOC05LjcgMjUuNC05LjdzMTkuOSAzLjggMjUuNCA5LjdjNy42IDguMSAyMC4yIDguNSAyOC4zIC45czguNS0yMC4yIC45LTI4LjNDMzkxLjcgMTg2LjggMzcxIDE4MCAzNTEuNiAxODBzLTQwLjEgNi44LTU0LjYgMjIuM2MtNy42IDguMS03LjEgMjAuNyAuOSAyOC4zczIwLjcgNy4xIDI4LjMtLjl6TTIwOCAzMjB2MzJjMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OFYzMjBjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VTYWRUZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NS45IDQ0OGMtMzUtLjEtNjUuNS0yMi42LTc2LTU0LjZDNjcuNiAzNTYuOCA0OCAzMDguNyA0OCAyNTZDNDggMTQxLjEgMTQxLjEgNDggMjU2IDQ4czIwOCA5My4xIDIwOCAyMDhzLTkzLjEgMjA4LTIwOCAyMDhjLTI4LjQgMC01NS41LTUuNy04MC4xLTE2ek0wIDI1NmEyNTYgMjU2IDAgMSAwIDUxMiAwQTI1NiAyNTYgMCAxIDAgMCAyNTZ6TTEyOCAzNjljMCAyNiAyMS41IDQ3IDQ4IDQ3czQ4LTIxIDQ4LTQ3YzAtMjAtMjguNC02MC40LTQxLjYtNzcuN2MtMy4yLTQuNC05LjYtNC40LTEyLjggMEMxNTYuNiAzMDguNiAxMjggMzQ5IDEyOCAzNjl6bTEyOC02NWMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGMzMC43IDAgNTguNyAxMS41IDgwIDMwLjZjOS45IDguOCAyNSA4IDMzLjktMS45czgtMjUtMS45LTMzLjlDMzM4LjMgMzIwLjIgMjk5IDMwNCAyNTYgMzA0em00Ny42LTk2YTMyIDMyIDAgMSAwIDY0IDAgMzIgMzIgMCAxIDAgLTY0IDB6bS0xMjggMzJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlU21pbGVCZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xNzcuNiA2Mi4xQzE5Mi44IDMzNC41IDIxOC44IDM1MiAyNTYgMzUyczYzLjItMTcuNSA3OC40LTMzLjljOS05LjcgMjQuMi0xMC40IDMzLjktMS40czEwLjQgMjQuMiAxLjQgMzMuOWMtMjIgMjMuOC02MCA0OS40LTExMy42IDQ5LjRzLTkxLjctMjUuNS0xMTMuNi00OS40Yy05LTkuNy04LjQtMjQuOSAxLjQtMzMuOXMyNC45LTguNCAzMy45IDEuNHptNDAtODkuM2wwIDAgMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwem0xNjAgMGwwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDAgMCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGYWNlU21pbGVXaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xNzcuNiA2Mi4xQzE5Mi44IDMzNC41IDIxOC44IDM1MiAyNTYgMzUyczYzLjItMTcuNSA3OC40LTMzLjljOS05LjcgMjQuMi0xMC40IDMzLjktMS40czEwLjQgMjQuMiAxLjQgMzMuOWMtMjIgMjMuOC02MCA0OS40LTExMy42IDQ5LjRzLTkxLjctMjUuNS0xMTMuNi00OS40Yy05LTkuNy04LjQtMjQuOSAxLjQtMzMuOXMyNC45LTguNCAzMy45IDEuNHpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE2NS44IDIxLjdjLTcuNiA4LjEtMjAuMiA4LjUtMjguMyAuOXMtOC41LTIwLjItLjktMjguM2MxNC41LTE1LjUgMzUuMi0yMi4zIDU0LjYtMjIuM3M0MC4xIDYuOCA1NC42IDIyLjNjNy42IDguMSA3LjEgMjAuNy0uOSAyOC4zcy0yMC43IDcuMS0yOC4zLS45Yy01LjUtNS44LTE0LjgtOS43LTI1LjQtOS43cy0xOS45IDMuOC0yNS40IDkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZVNtaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xNzcuNiA2Mi4xQzE5Mi44IDMzNC41IDIxOC44IDM1MiAyNTYgMzUyczYzLjItMTcuNSA3OC40LTMzLjljOS05LjcgMjQuMi0xMC40IDMzLjktMS40czEwLjQgMjQuMiAxLjQgMzMuOWMtMjIgMjMuOC02MCA0OS40LTExMy42IDQ5LjRzLTkxLjctMjUuNS0xMTMuNi00OS40Yy05LTkuNy04LjQtMjQuOSAxLjQtMzMuOXMyNC45LTguNCAzMy45IDEuNHpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZhY2VTdXJwcmlzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2QTIwOCAyMDggMCAxIDAgNDggMjU2YTIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMTc2LjQtODBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMjU2IDI4OGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmFjZVRpcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZBMjA4IDIwOCAwIDEgMCA0OCAyNTZhMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xNzYuNSA2NC4zQzE5Ni4xIDMwMi4xIDIyMy44IDI4OCAyNTYgMjg4czU5LjkgMTQuMSA3OS41IDMyLjNDMzU0LjUgMzM4LjEgMzY4IDM2MiAzNjggMzg0YzAgNS40LTIuNyAxMC40LTcuMiAxMy40cy0xMC4yIDMuNC0xNS4yIDEuM2wtMTcuMi03LjVjLTIyLjgtMTAtNDcuNS0xNS4xLTcyLjQtMTUuMXMtNDkuNiA1LjItNzIuNCAxNS4xbC0xNy4yIDcuNWMtNC45IDIuMi0xMC43IDEuNy0xNS4yLTEuM3MtNy4yLTgtNy4yLTEzLjRjMC0yMiAxMy41LTQ1LjkgMzIuNS02My43em0tNDMtMTczLjZsODkuOSA0Ny45YzEwLjcgNS43IDEwLjcgMjEuMSAwIDI2LjhsLTg5LjkgNDcuOWMtNy45IDQuMi0xNy41LTEuNS0xNy41LTEwLjVjMC0yLjggMS01LjUgMi44LTcuNmwzNi00My4yLTM2LTQzLjJjLTEuOC0yLjEtMi44LTQuOC0yLjgtNy42YzAtOSA5LjYtMTQuNyAxNy41LTEwLjV6TTM5NiAxNTcuMWMwIDIuOC0xIDUuNS0yLjggNy42bC0zNiA0My4yIDM2IDQzLjJjMS44IDIuMSAyLjggNC44IDIuOCA3LjZjMCA5LTkuNiAxNC43LTE3LjUgMTAuNWwtODkuOS00Ny45Yy0xMC43LTUuNy0xMC43LTIxLjEgMC0yNi44bDg5LjktNDcuOWM3LjktNC4yIDE3LjUgMS41IDE3LjUgMTAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZUF1ZGlvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ2NEgzMjBjOC44IDAgMTYtNy4yIDE2LTE2VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQ4SDY0Yy04LjggMC0xNiA3LjItMTYgMTZWNDQ4YzAgOC44IDcuMiAxNiAxNiAxNnpNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI5LjVjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdsOTAuNSA5MC41YzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMTkyIDI3MlY0MDBjMCA2LjUtMy45IDEyLjMtOS45IDE0LjhzLTEyLjkgMS4xLTE3LjQtMy41TDEyOS40IDM3NkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNlYzMTJjMC04LjggNy4yLTE2IDE2LTE2aDE3LjRsMzUuMy0zNS4zYzQuNi00LjYgMTEuNS01LjkgMTcuNC0zLjVzOS45IDguMyA5LjkgMTQuOHptODUuOC00YzExLjYgMjAgMTguMiA0My4zIDE4LjIgNjhzLTYuNiA0OC0xOC4yIDY4Yy02LjYgMTEuNS0yMS4zIDE1LjQtMzIuOCA4LjhzLTE1LjQtMjEuMy04LjgtMzIuOGM3LjUtMTIuOSAxMS44LTI3LjkgMTEuOC00NHMtNC4zLTMxLjEtMTEuOC00NGMtNi42LTExLjUtMi43LTI2LjIgOC44LTMyLjhzMjYuMi0yLjcgMzIuOCA4Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjY0YzAtOC44IDcuMi0xNiAxNi0xNkgyMjR2ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoODBWNDQ4YzAgOC44LTcuMiAxNi0xNiAxNkg2NHpNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNTQuNWMwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wyNzQuNyAxOC43QzI2Mi43IDYuNyAyNDYuNSAwIDIyOS41IDBINjR6bTk3IDI4OWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwTDc5IDMwM2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsNDggNDhjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC0zMS0zMSAzMS0zMXpNMjU3IDI1NWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWwzMSAzMS0zMSAzMWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDQ4LTQ4YzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZUV4Y2VsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDQ0OFY2NGMwLTguOCA3LjItMTYgMTYtMTZIMjI0djgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgwVjQ0OGMwIDguOC03LjIgMTYtMTYgMTZINjRjLTguOCAwLTE2LTcuMi0xNi0xNnpNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNTQuNWMwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wyNzQuNyAxOC43QzI2Mi43IDYuNyAyNDYuNSAwIDIyOS41IDBINjR6bTkwLjkgMjMzLjNjLTguMS0xMC41LTIzLjItMTIuMy0zMy43LTQuMnMtMTIuMyAyMy4yLTQuMiAzMy43TDE2MS42IDMyMGwtNDQuNSA1Ny4zYy04LjEgMTAuNS02LjMgMjUuNSA0LjIgMzMuN3MyNS41IDYuMyAzMy43LTQuMkwxOTIgMzU5LjFsMzcuMSA0Ny42YzguMSAxMC41IDIzLjIgMTIuMyAzMy43IDQuMnMxMi4zLTIzLjIgNC4yLTMzLjdMMjIyLjQgMzIwbDQ0LjUtNTcuM2M4LjEtMTAuNSA2LjMtMjUuNS00LjItMzMuN3MtMjUuNS02LjMtMzMuNyA0LjJMMTkyIDI4MC45bC0zNy4xLTQ3LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA0NjRjLTguOCAwLTE2LTcuMi0xNi0xNlY2NGMwLTguOCA3LjItMTYgMTYtMTZIMjI0djgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgwVjQ0OGMwIDguOC03LjIgMTYtMTYgMTZINjR6TTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTU0LjVjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMMjc0LjcgMTguN0MyNjIuNyA2LjcgMjQ2LjUgMCAyMjkuNSAwSDY0em05NiAyNTZhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptNjkuMiA0Ni45Yy0zLTQuMy03LjktNi45LTEzLjItNi45cy0xMC4yIDIuNi0xMy4yIDYuOWwtNDEuMyA1OS43LTExLjktMTkuMWMtMi45LTQuNy04LjEtNy41LTEzLjYtNy41cy0xMC42IDIuOC0xMy42IDcuNWwtNDAgNjRjLTMuMSA0LjktMy4yIDExLjEtLjQgMTYuMnM4LjIgOC4yIDE0IDguMmg0OCAzMiA0MCA3MmM2IDAgMTEuNC0zLjMgMTQuMi04LjZzMi40LTExLjYtMS0xNi41bC03Mi0xMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVMaW5lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA0NjRjLTguOCAwLTE2LTcuMi0xNi0xNlY2NGMwLTguOCA3LjItMTYgMTYtMTZIMjI0djgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgwVjQ0OGMwIDguOC03LjIgMTYtMTYgMTZINjR6TTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTU0LjVjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMMjc0LjcgMTguN0MyNjIuNyA2LjcgMjQ2LjUgMCAyMjkuNSAwSDY0em01NiAyNTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMjY0YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDEyMHptMCA5NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEgyNjRjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlUGRmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ2NGw0OCAwIDAgNDgtNDggMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBMMjI5LjUgMGMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN2w5MC41IDkwLjVjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM0wzODQgMzA0bC00OCAwIDAtMTQ0LTgwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtODBMNjQgNDhjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDM4NGMwIDguOCA3LjIgMTYgMTYgMTZ6TTE3NiAzNTJsMzIgMGMzMC45IDAgNTYgMjUuMSA1NiA1NnMtMjUuMSA1Ni01NiA1NmwtMTYgMCAwIDMyYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtNDggMC04MGMwLTguOCA3LjItMTYgMTYtMTZ6bTMyIDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0xNiAwIDAgNDggMTYgMHptOTYtODBsMzIgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0xMjhjMC04LjggNy4yLTE2IDE2LTE2em0zMiAxMjhjOC44IDAgMTYtNy4yIDE2LTE2bDAtNjRjMC04LjgtNy4yLTE2LTE2LTE2bC0xNiAwIDAgOTYgMTYgMHptODAtMTEyYzAtOC44IDcuMi0xNiAxNi0xNmw0OCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0zMiAwIDAgMzIgMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMzIgMCAwIDQ4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtNjQgMC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZVBvd2VycG9pbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNDY0Yy04LjggMC0xNi03LjItMTYtMTZWNjRjMC04LjggNy4yLTE2IDE2LTE2SDIyNHY4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg4MFY0NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDY0ek02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE1NC41YzAtMTctNi43LTMzLjMtMTguNy00NS4zTDI3NC43IDE4LjdDMjYyLjcgNi43IDI0Ni41IDAgMjI5LjUgMEg2NHptNzIgMjA4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNFYzMzZ2NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYzNjBoNDRjNDIgMCA3Ni0zNCA3Ni03NnMtMzQtNzYtNzYtNzZIMTM2em02OCAxMDRIMTYwVjI1Nmg0NGMxNS41IDAgMjggMTIuNSAyOCAyOHMtMTIuNSAyOC0yOCAyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZVZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA0NjRjOC44IDAgMTYtNy4yIDE2LTE2VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQ4SDY0Yy04LjggMC0xNiA3LjItMTYgMTZWNDQ4YzAgOC44IDcuMiAxNiAxNiAxNkgzMjB6TTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDIyOS41YzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43bDkwLjUgOTAuNWMxMiAxMiAxOC43IDI4LjMgMTguNyA0NS4zVjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6TTgwIDI4OGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnYxNmw0NC45LTI5LjljMi0xLjMgNC40LTIuMSA2LjgtMi4xYzYuOCAwIDEyLjMgNS41IDEyLjMgMTIuM1YzODcuN2MwIDYuOC01LjUgMTIuMy0xMi4zIDEyLjNjLTIuNCAwLTQuOC0uNy02LjgtMi4xTDI0MCAzNjh2MTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMTEyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVXb3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDQ0OFY2NGMwLTguOCA3LjItMTYgMTYtMTZIMjI0djgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgwVjQ0OGMwIDguOC03LjIgMTYtMTYgMTZINjRjLTguOCAwLTE2LTcuMi0xNi0xNnpNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNTQuNWMwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wyNzQuNyAxOC43QzI2Mi43IDYuNyAyNDYuNSAwIDIyOS41IDBINjR6bTU1IDI0MS4xYy0zLjgtMTIuNy0xNy4yLTE5LjktMjkuOS0xNi4xcy0xOS45IDE3LjItMTYuMSAyOS45bDQ4IDE2MGMzIDEwLjIgMTIuNCAxNy4xIDIzIDE3LjFzMTkuOS03IDIzLTE3LjFsMjUtODMuNCAyNSA4My40YzMgMTAuMiAxMi40IDE3LjEgMjMgMTcuMXMxOS45LTcgMjMtMTcuMWw0OC0xNjBjMy44LTEyLjctMy40LTI2LjEtMTYuMS0yOS45cy0yNi4xIDMuNC0yOS45IDE2LjFsLTI1IDgzLjQtMjUtODMuNGMtMy0xMC4yLTEyLjQtMTcuMS0yMy0xNy4xcy0xOS45IDctMjMgMTcuMWwtMjUgODMuNC0yNS04My40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlWmlwcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjY0YzAtOC44IDcuMi0xNiAxNi0xNmg0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2aDQ4djgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDgwVjQ0OGMwIDguOC03LjIgMTYtMTYgMTZINjR6TTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTU0LjVjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMMjc0LjcgMTguN0MyNjIuNyA2LjcgMjQ2LjUgMCAyMjkuNSAwSDY0em00OCAxMTJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDEyOGMtOC44IDAtMTYgNy4yLTE2IDE2em0wIDY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxMjhjLTguOCAwLTE2IDcuMi0xNiAxNnptLTYuMyA3MS44TDgyLjEgMzM1LjljLTEuNCA1LjQtMi4xIDEwLjktMi4xIDE2LjRjMCAzNS4yIDI4LjggNjMuNyA2NCA2My43czY0LTI4LjUgNjQtNjMuN2MwLTUuNS0uNy0xMS4xLTIuMS0xNi40bC0yMy41LTg4LjJjLTMuNy0xNC0xNi40LTIzLjgtMzAuOS0yMy44SDEzNi42Yy0xNC41IDAtMjcuMiA5LjctMzAuOSAyMy44ek0xMjggMzM2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDEyOGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNDY0YzguOCAwIDE2LTcuMiAxNi0xNlYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0OEg2NGMtOC44IDAtMTYgNy4yLTE2IDE2VjQ0OGMwIDguOCA3LjIgMTYgMTYgMTZIMzIwek0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjkuNWMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN2w5MC41IDkwLjVjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM1Y0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDI0QzQ4IDEwLjcgMzcuMyAwIDI0IDBTMCAxMC43IDAgMjRWNjQgMzUwLjUgNDAwdjg4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMzg4bDgwLjMtMjAuMWM0MS4xLTEwLjMgODQuNi01LjUgMTIyLjUgMTMuNGM0NC4yIDIyLjEgOTUuNSAyNC44IDE0MS43IDcuNGwzNC43LTEzYzEyLjUtNC43IDIwLjgtMTYuNiAyMC44LTMwVjY2LjFjMC0yMy0yNC4yLTM4LTQ0LjgtMjcuN2wtOS42IDQuOGMtNDYuMyAyMy4yLTEwMC44IDIzLjItMTQ3LjEgMGMtMzUuMS0xNy42LTc1LjQtMjItMTEzLjUtMTIuNUw0OCA1MlYyNHptMCA3Ny41bDk2LjYtMjQuMmMyNy02LjcgNTUuNS0zLjYgODAuNCA4LjhjNTQuOSAyNy40IDExOC43IDI5LjcgMTc1IDYuOFYzMzQuN2wtMjQuNCA5LjFjLTMzLjcgMTIuNi03MS4yIDEwLjctMTAzLjQtNS40Yy00OC4yLTI0LjEtMTAzLjMtMzAuMS0xNTUuNi0xNy4xTDQ4IDMzOC41di0yMzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Zsb3BweURpc2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggOTZWNDE2YzAgOC44IDcuMiAxNiAxNiAxNkgzODRjOC44IDAgMTYtNy4yIDE2LTE2VjE3MC41YzAtNC4yLTEuNy04LjMtNC43LTExLjNsMzMuOS0zMy45YzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgzMDkuNWMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN2w3NC41IDc0LjUtMzMuOSAzMy45TDMyMC44IDg0LjdjLS4zLS4zLS41LS41LS44LS44VjE4NGMwIDEzLjMtMTAuNyAyNC0yNCAyNEgxMDRjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjgwSDY0Yy04LjggMC0xNiA3LjItMTYgMTZ6bTgwLTE2djgwSDI3MlY4MEgxMjh6bTMyIDI0MGE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZvbGRlckNsb3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDI4OS45TDI0NyA1My4xQzIzMy41IDM5LjYgMjE1LjIgMzIgMTk2LjEgMzJINjR6TTQ4IDk2YzAtOC44IDcuMi0xNiAxNi0xNkgxOTYuMWM2LjQgMCAxMi41IDIuNSAxNyA3bDQ1LjMgNDUuM2M3LjUgNy41IDE3LjcgMTEuNyAyOC4zIDExLjdINDQ4YzguOCAwIDE2IDcuMiAxNiAxNnYzMkg0OFY5NnptMCAxNDRINDY0VjQxNmMwIDguOC03LjIgMTYtMTYgMTZINjRjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZvbGRlck9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDQ4MGg0OGMxMS40IDAgMjEuOS02IDI3LjYtMTUuOWwxMTItMTkyYzUuOC05LjkgNS44LTIyLjEgLjEtMzIuMVM1NTUuNSAyMjQgNTQ0IDIyNEgxNDRjLTExLjQgMC0yMS45IDYtMjcuNiAxNS45TDQ4IDM1Ny4xVjk2YzAtOC44IDcuMi0xNiAxNi0xNkgxODEuNWM0LjIgMCA4LjMgMS43IDExLjMgNC43bDI2LjUgMjYuNWMyMSAyMSA0OS41IDMyLjggNzkuMiAzMi44SDQxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJoNDhWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDI5OC41Yy0xNyAwLTMzLjMtNi43LTQ1LjMtMTguN0wyMjYuNyA1MC43Yy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43SDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDg3LjcgMzg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgxOTYuMWMxOS4xIDAgMzcuNCA3LjYgNTAuOSAyMS4xTDI4OS45IDk2SDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2ek02NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2VjQxNmMwIDguOCA3LjIgMTYgMTYgMTZINDQ4YzguOCAwIDE2LTcuMiAxNi0xNlYxNjBjMC04LjgtNy4yLTE2LTE2LTE2SDI4Ni42Yy0xMC42IDAtMjAuOC00LjItMjguMy0xMS43TDIxMy4xIDg3Yy00LjUtNC41LTEwLjYtNy0xNy03SDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGb250QXdlc29tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05MS43IDk2QzEwNi4zIDg2LjggMTE2IDcwLjUgMTE2IDUyQzExNiAyMy4zIDkyLjcgMCA2NCAwUzEyIDIzLjMgMTIgNTJjMCAxNi43IDcuOCAzMS41IDIwIDQxbDAgMyAwIDQ4IDAgMjU2IDAgNDggMCA2NCA0OCAwIDAtNjQgMzg5LjYgMGMxNC42IDAgMjYuNC0xMS44IDI2LjQtMjYuNGMwLTMuNy0uOC03LjMtMi4zLTEwLjdMNDMyIDI3Mmw2MS43LTEzOC45YzEuNS0zLjQgMi4zLTcgMi4zLTEwLjdjMC0xNC42LTExLjgtMjYuNC0yNi40LTI2LjRMOTEuNyA5NnpNODAgNDAwbDAtMjU2IDM1Ni40IDBMMzg4LjEgMjUyLjVjLTUuNSAxMi40LTUuNSAyNi42IDAgMzlMNDM2LjQgNDAwIDgwIDQwMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRnV0Ym9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzNS40IDM2MS4zbC04OS43LTZjLTUuMi0uMy0xMC4zIDEuMS0xNC41IDQuMnMtNy4yIDcuNC04LjQgMTIuNWwtMjIgODcuMmMtMTQuNCAzLjItMjkuNCA0LjgtNDQuOCA0LjhzLTMwLjMtMS43LTQ0LjgtNC44bC0yMi04Ny4yYy0xLjMtNS00LjMtOS40LTguNC0xMi41cy05LjMtNC41LTE0LjUtNC4ybC04OS43IDZDNjEuNyAzMzUuOSA1MS45IDMwNyA0OSAyNzYuMkwxMjUgMjI4LjNjNC40LTIuOCA3LjYtNyA5LjItMTEuOXMxLjQtMTAuMi0uNS0xNUwxMDAuNCAxMThjMTkuOS0yMi40IDQ0LjYtNDAuNSA3Mi40LTUyLjdsNjkuMSA1Ny42YzQgMy4zIDkgNS4xIDE0LjEgNS4xczEwLjItMS44IDE0LjEtNS4xbDY5LjEtNTcuNmMyNy44IDEyLjIgNTIuNSAzMC4zIDcyLjQgNTIuN2wtMzMuNCA4My40Yy0xLjkgNC44LTIuMSAxMC4xLS41IDE1czQuOSA5LjEgOS4yIDExLjlMNDYzIDI3Ni4yYy0zIDMwLjgtMTIuNyA1OS43LTI3LjYgODUuMXpNMjU2IDQ4bC45IDBoLTEuOGwuOSAwek01Ni43IDE5Ni4yYy45LTMgMS45LTYuMSAyLjktOS4xbC0yLjkgOS4xek0xMzIgNDIzbDMuOCAyLjdjLTEuMy0uOS0yLjUtMS44LTMuOC0yLjd6bTI0OC4xLS4xYy0xLjMgMS0yLjcgMi00IDIuOWw0LTIuOXptNzUuMi0yMjYuNmwtMy05LjJjMS4xIDMgMi4xIDYuMSAzIDkuMnpNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTE0LjEtMzI1LjdjLTguNC02LjEtMTkuOC02LjEtMjguMiAwTDE5NCAyMjFjLTguNCA2LjEtMTEuOSAxNi45LTguNyAyNi44bDE4LjMgNTYuM2MzLjIgOS45IDEyLjQgMTYuNiAyMi44IDE2LjZoNTkuMmMxMC40IDAgMTkuNi02LjcgMjIuOC0xNi42bDE4LjMtNTYuM2MzLjItOS45LS4zLTIwLjctOC43LTI2LjhsLTQ3LjktMzQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR2VtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2OC41IDcyTDI1NiAxNjVsODcuNS05M2gtMTc1ek0zODMuOSA5OS4xTDMxMS41IDE3NmgxMjlMMzgzLjkgOTkuMXptNTAgMTI0LjlIMjU2IDc4LjFMMjU2IDQyMC4zIDQzMy45IDIyNHpNNzEuNSAxNzZoMTI5TDEyOC4xIDk5LjEgNzEuNSAxNzZ6bTQzNC4zIDQwLjFsLTIzMiAyNTZjLTQuNSA1LTExIDcuOS0xNy44IDcuOXMtMTMuMi0yLjktMTcuOC03LjlsLTIzMi0yNTZjLTcuNy04LjUtOC4zLTIxLjItMS41LTMwLjRsMTEyLTE1MmM0LjUtNi4xIDExLjctOS44IDE5LjMtOS44SDM3NmM3LjYgMCAxNC44IDMuNiAxOS4zIDkuOGwxMTIgMTUyYzYuOCA5LjIgNi4xIDIxLjktMS41IDMwLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRCYWNrRmlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgNjRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmMwIDkuMSA1LjEgMTcuNCAxMy4zIDIxLjVzMTcuOSAzLjIgMjUuMS0yLjNjMi43LTIgNi0zLjIgOS42LTMuMmM4LjggMCAxNiA3LjIgMTYgMTZjMCA5LjEgNS4xIDE3LjQgMTMuMyAyMS41czE3LjkgMy4yIDI1LjEtMi4zYzIuNy0yIDYtMy4yIDkuNi0zLjJjOC44IDAgMTYgNy4yIDE2IDE2YzAgOS4xIDUuMSAxNy40IDEzLjMgMjEuNXMxNy45IDMuMiAyNS4xLTIuM2MyLjctMiA2LTMuMiA5LjYtMy4yYzguOCAwIDE2IDcuMiAxNiAxNlYyNjRjMCAzMS4zLTIwIDU4LTQ4IDY3LjljLTkuNiAzLjQtMTYgMTIuNS0xNiAyMi42VjQ4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjM3MC4yYzM4LTIwLjEgNjQtNjAuMSA2NC0xMDYuMlYxNjBjMC0zNS4zLTI4LjctNjQtNjQtNjRjLTIuOCAwLTUuNiAuMi04LjMgLjVDMzMyLjggNzcuMSAzMTEuOSA2NCAyODggNjRjLTIuOCAwLTUuNiAuMi04LjMgLjVDMjY4LjggNDUuMSAyNDcuOSAzMiAyMjQgMzJjLTIuOCAwLTUuNiAuMi04LjMgLjVDMjA0LjggMTMuMSAxODMuOSAwIDE2MCAwQzEyNC43IDAgOTYgMjguNyA5NiA2NHY2NC4zYy0xMS43IDcuNC0yMi41IDE2LjQtMzIgMjYuOWwxNy44IDE2LjFMNjQgMTU1LjJsLTkuNCAxMC41QzQwIDE4MS44IDMyIDIwMi44IDMyIDIyNC42djEyLjhjMCA0OS42IDI0LjIgOTYuMSA2NC44IDEyNC41bDEzLjgtMTkuN0w5Ni44IDM2MS45bDguOSA2LjJjNi45IDQuOCAxNC40IDguNiAyMi4zIDExLjNWNDg4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMzU5LjljMC0xMi42LTkuOC0yMy4xLTIyLjQtMjMuOWMtNy4zLS41LTE0LjMtMi45LTIwLjMtNy4xbC0xMy4xIDE4LjcgMTMuMS0xOC43LTguOS02LjJDOTYuNiAzMDMuMSA4MCAyNzEuMyA4MCAyMzcuNFYyMjQuNmMwLTkuOSAzLjctMTkuNCAxMC4zLTI2LjhsOS40LTEwLjVjMy44LTQuMiA3LjktOC4xIDEyLjMtMTEuNlYyMDhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYxNDIuMyAxMjggNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRMaXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzIgMTEyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDI0MGMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NEgxMzZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMjg4YzQuNSAwIDguOSAxLjMgMTIuNyAzLjZsNjQgNDBjNyA0LjQgMTEuMyAxMi4xIDExLjMgMjAuNHYyNGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY0MTMuM0wyODEuMSAzODRIMTM2Yy0zOS44IDAtNzItMzIuMi03Mi03MnMzMi4yLTcyIDcyLTcySDI0MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg3MmMtMzkuOCAwLTcyLTMyLjItNzItNzJTMzIuMiA2NCA3MiA2NEgyODEuNmM0Ni43IDAgOTAuOSAyMS41IDExOS43IDU4LjNsNzguNCAxMDAuMWMyMC45IDI2LjcgMzIuMyA1OS43IDMyLjMgOTMuN1Y0MjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMzE2LjFjMC0yMy4yLTcuOC00NS44LTIyLjEtNjQuMUwzNjMuNSAxNTEuOWMtMTkuNy0yNS4yLTQ5LjktMzkuOS04MS45LTM5LjlINzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQZWFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTAuOCAxLjRjLTM1LjItMy43LTY2LjYgMjEuOC03MC4zIDU3TDE3NCAxMTkgMTU2LjcgNjkuNkMxNDUgMzYuMyAxMDguNCAxOC44IDc1LjEgMzAuNVMyNC4yIDc4LjggMzUuOSAxMTIuMUw4OC43IDI2Mi4yQzczLjUgMjc2LjcgNjQgMjk3LjMgNjQgMzIwdjAgMjRjMCA5Mi44IDc1LjIgMTY4IDE2OCAxNjhoNDhjOTIuOCAwIDE2OC03NS4yIDE2OC0xNjhWMjcyIDI1NiAyMjRjMC0zNS4zLTI4LjctNjQtNjQtNjRjLTcuOSAwLTE1LjQgMS40LTIyLjQgNGMtMTAuNC0yMS4zLTMyLjMtMzYtNTcuNi0zNmMtLjcgMC0xLjUgMC0yLjIgMGw1LjktNTYuM2MzLjctMzUuMi0yMS44LTY2LjYtNTctNzAuM3ptLS4yIDE1NS40QzI0My45IDE2Ni45IDI0MCAxNzkgMjQwIDE5MnY0OGMwIC43IDAgMS40IDAgMmMtNS4xLTEuMy0xMC41LTItMTYtMmgtNy40bC01LjQtMTUuMyAxNy0xNjEuM2MuOS04LjggOC44LTE1LjIgMTcuNi0xNC4yczE1LjIgOC44IDE0LjIgMTcuNmwtOS41IDkwLjF6TTExMS40IDg1LjZMMTY1LjcgMjQwSDE0NGMtNCAwLTggLjMtMTEuOSAuOUw4MS4yIDk2LjJjLTIuOS04LjMgMS41LTE3LjUgOS44LTIwLjRzMTcuNSAxLjUgMjAuNCA5Ljh6TTI4OCAxOTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYzMiAxNmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYxOTJ6bTM4LjQgMTA4YzEwLjQgMjEuMyAzMi4zIDM2IDU3LjYgMzZjNS41IDAgMTAuOS0uNyAxNi0ydjEwYzAgNjYuMy01My43IDEyMC0xMjAgMTIwSDIzMmMtNjYuMyAwLTEyMC01My43LTEyMC0xMjBsMC0yNCAwIDBjMC0xNy43IDE0LjMtMzIgMzItMzJoODBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTg0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDQwYzM1LjMgMCA2NC0yOC43IDY0LTY0YzAtLjcgMC0xLjQgMC0yYzUuMSAxLjMgMTAuNSAyIDE2IDJjNy45IDAgMTUuNC0xLjQgMjIuNC00ek00MDAgMjcyYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI0MCAyMjRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYzMiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFBvaW50RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA0NDhsMC0xNzcuNmM1LjIgMSAxMC41IDEuNiAxNiAxLjZsMTYgMCAwIDMyIDAgMTQ0YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2ek04MCAyMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyYzAgMCAwIDAgMCAwbDAtMjRjMC02Ni4zIDUzLjctMTIwIDEyMC0xMjBsNDggMGM1Mi41IDAgOTcuMSAzMy43IDExMy40IDgwLjdjLTMuMS0uNS02LjItLjctOS40LS43Yy0yMCAwLTM3LjkgOS4yLTQ5LjcgMjMuNmMtOS00LjktMTkuNC03LjYtMzAuMy03LjZjLTE1LjEgMC0yOSA1LjMtNDAgMTRjLTExLTguOC0yNC45LTE0LTQwLTE0bC00MCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDQwIDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTQwIDAtNDAgMHpNMCAxOTJzMCAwIDAgMGMwIDE4IDYgMzQuNiAxNiA0OGwwIDIwOGMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0bDAtODJjNS4xIDEuMyAxMC41IDIgMTYgMmMyNS4zIDAgNDcuMi0xNC43IDU3LjYtMzZjNyAyLjYgMTQuNSA0IDIyLjQgNGMyMCAwIDM3LjktOS4yIDQ5LjctMjMuNmM5IDQuOSAxOS40IDcuNiAzMC4zIDcuNmMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTY0IDAtMjRDMzg0IDc1LjIgMzA4LjggMCAyMTYgMEwxNjggMEM3NS4yIDAgMCA3NS4yIDAgMTY4bDAgMjR6bTMzNiA2NGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTQ4IDAtMTZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDY0ek0xNjAgMjcyYzUuNSAwIDEwLjktLjcgMTYtMmwwIDIgMCAzMmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTMyIDE2IDB6bTY0LTI0bDAtNDBjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDQ4IDAgMTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFBvaW50TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAxMjhsMTc3LjYgMGMtMSA1LjItMS42IDEwLjUtMS42IDE2bDAgMTYtMzIgMEw2NCAxNjBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTIyNCAxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMmMwIDAgMCAwIDAgMGwyNCAwYzY2LjMgMCAxMjAgNTMuNyAxMjAgMTIwbDAgNDhjMCA1Mi41LTMzLjcgOTcuMS04MC43IDExMy40Yy41LTMuMSAuNy02LjIgLjctOS40YzAtMjAtOS4yLTM3LjktMjMuNi00OS43YzQuOS05IDcuNi0xOS40IDcuNi0zMC4zYzAtMTUuMS01LjMtMjktMTQtNDBjOC44LTExIDE0LTI0LjkgMTQtNDBsMC00MGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDQwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtNDAgMC00MHptMzItODBzMCAwIDAgMGMtMTggMC0zNC42IDYtNDggMTZMNjQgODBDMjguNyA4MCAwIDEwOC43IDAgMTQ0czI4LjcgNjQgNjQgNjRsODIgMGMtMS4zIDUuMS0yIDEwLjUtMiAxNmMwIDI1LjMgMTQuNyA0Ny4yIDM2IDU3LjZjLTIuNiA3LTQgMTQuNS00IDIyLjRjMCAyMCA5LjIgMzcuOSAyMy42IDQ5LjdjLTQuOSA5LTcuNiAxOS40LTcuNiAzMC4zYzAgMzUuMyAyOC43IDY0IDY0IDY0bDY0IDAgMjQgMGM5Mi44IDAgMTY4LTc1LjIgMTY4LTE2OGwwLTQ4YzAtOTIuOC03NS4yLTE2OC0xNjgtMTY4bC0yNCAwek0yNTYgNDAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDQ4IDAgMTYgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtNjQgMHpNMjQwIDIyNGMwIDUuNSAuNyAxMC45IDIgMTZsLTIgMC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDMyIDAgMCAxNnptMjQgNjRsNDAgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtNDggMC0xNiAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDI0IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQb2ludFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAxMjhsLTE3Ny42IDBjMSA1LjIgMS42IDEwLjUgMS42IDE2bDAgMTYgMzIgMCAxNDQgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNnpNMjI0IDE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMmMwIDAgMCAwIDAgMGwtMjQgMGMtNjYuMyAwLTEyMCA1My43LTEyMCAxMjBsMCA0OGMwIDUyLjUgMzMuNyA5Ny4xIDgwLjcgMTEzLjRjLS41LTMuMS0uNy02LjItLjctOS40YzAtMjAgOS4yLTM3LjkgMjMuNi00OS43Yy00LjktOS03LjYtMTkuNC03LjYtMzAuM2MwLTE1LjEgNS4zLTI5IDE0LTQwYy04LjgtMTEtMTQtMjQuOS0xNC00MGwwLTQwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCA0MGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtNDAgMC00MHpNMTkyIDY0czAgMCAwIDBjMTggMCAzNC42IDYgNDggMTZsMjA4IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjRsLTgyIDBjMS4zIDUuMSAyIDEwLjUgMiAxNmMwIDI1LjMtMTQuNyA0Ny4yLTM2IDU3LjZjMi42IDcgNCAxNC41IDQgMjIuNGMwIDIwLTkuMiAzNy45LTIzLjYgNDkuN2M0LjkgOSA3LjYgMTkuNCA3LjYgMzAuM2MwIDM1LjMtMjguNyA2NC02NCA2NGwtNjQgMC0yNCAwQzc1LjIgNDQ4IDAgMzcyLjggMCAyODBsMC00OEMwIDEzOS4yIDc1LjIgNjQgMTY4IDY0bDI0IDB6bTY0IDMzNmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtNDggMC0xNiAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDY0IDB6bTE2LTE3NmMwIDUuNS0uNyAxMC45LTIgMTZsMiAwIDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTMyIDAgMCAxNnptLTI0IDY0bC00MCAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDQ4IDAgMTYgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtMjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFBvaW50VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgNjRWMjQxLjZjNS4yLTEgMTAuNS0xLjYgMTYtMS42SDk2VjIwOCA2NGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnpNODAgMjg4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMmMwIDAgMCAwIDAgMHYyNGMwIDY2LjMgNTMuNyAxMjAgMTIwIDEyMGg0OGM1Mi41IDAgOTcuMS0zMy43IDExMy40LTgwLjdjLTMuMSAuNS02LjIgLjctOS40IC43Yy0yMCAwLTM3LjktOS4yLTQ5LjctMjMuNmMtOSA0LjktMTkuNCA3LjYtMzAuMyA3LjZjLTE1LjEgMC0yOS01LjMtNDAtMTRjLTExIDguOC0yNC45IDE0LTQwIDE0SDEyMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg0MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxMjAgODB6TTAgMzIwczAgMCAwIDBjMC0xOCA2LTM0LjYgMTYtNDhWNjRDMTYgMjguNyA0NC43IDAgODAgMHM2NCAyOC43IDY0IDY0djgyYzUuMS0xLjMgMTAuNS0yIDE2LTJjMjUuMyAwIDQ3LjIgMTQuNyA1Ny42IDM2YzctMi42IDE0LjUtNCAyMi40LTRjMjAgMCAzNy45IDkuMiA0OS43IDIzLjZjOS00LjkgMTkuNC03LjYgMzAuMy03LjZjMzUuMyAwIDY0IDI4LjcgNjQgNjR2NjQgMjRjMCA5Mi44LTc1LjIgMTY4LTE2OCAxNjhIMTY4Qzc1LjIgNTEyIDAgNDM2LjggMCAzNDRWMzIwem0zMzYtNjRjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2NDggMTZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyNTZ6TTE2MCAyNDBjNS41IDAgMTAuOSAuNyAxNiAydi0yVjIwOGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnYzMmgxNnptNjQgMjR2NDBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyNTYgMjQwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kUG9pbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgNjRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNlYyMDBjMCAxMC4zIDYuNiAxOS41IDE2LjQgMjIuOHMyMC42LS4xIDI2LjgtOC4zYzMtMy45IDcuNi02LjQgMTIuOC02LjRjOC44IDAgMTYgNy4yIDE2IDE2YzAgMTAuMyA2LjYgMTkuNSAxNi40IDIyLjhzMjAuNi0uMSAyNi44LTguM2MzLTMuOSA3LjYtNi40IDEyLjgtNi40YzcuOCAwIDE0LjMgNS42IDE1LjcgMTNjMS42IDguMiA3LjMgMTUuMSAxNS4xIDE4czE2LjcgMS42IDIzLjMtMy42YzIuNy0yLjEgNi4xLTMuNCA5LjktMy40YzguOCAwIDE2IDcuMiAxNiAxNmwwIDE2VjM5MmMwIDM5LjgtMzIuMiA3Mi03MiA3MkgyNzIgMjEyLjNoLS45Yy0zNy40IDAtNzIuNC0xOC43LTkzLjItNDkuOUw1MC43IDMxMi45Yy00LjktNy40LTIuOS0xNy4zIDQuNC0yMi4yczE3LjMtMi45IDIyLjIgNC40TDExNiAzNTMuMmM1LjkgOC44IDE2LjggMTIuNyAyNi45IDkuN3MxNy0xMi40IDE3LTIzVjMyMCA2NHpNMTc2IDBjLTM1LjMgMC02NCAyOC43LTY0IDY0VjI2MS43QzkxLjIgMjM4IDU1LjUgMjMyLjggMjguNSAyNTAuN0MtLjkgMjcwLjQtOC45IDMxMC4xIDEwLjggMzM5LjVMNzguMyA0NDAuOGMyOS43IDQ0LjUgNzkuNiA3MS4yIDEzMy4xIDcxLjJoLjlIMjcyaDU2YzY2LjMgMCAxMjAtNTMuNyAxMjAtMTIwVjI4OGwwLTE2YzAtMzUuMy0yOC43LTY0LTY0LTY0Yy00LjUgMC04LjggLjUtMTMgMS4zYy0xMS43LTE1LjQtMzAuMi0yNS4zLTUxLTI1LjNjLTYuOSAwLTEzLjUgMS4xLTE5LjcgMy4xQzI4OC43IDE3MC43IDI2OS42IDE2MCAyNDggMTYwYy0yLjcgMC01LjQgLjItOCAuNVY2NGMwLTM1LjMtMjguNy02NC02NC02NHptNDggMzA0YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzA0em00OC0xNmMtOC44IDAtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNnptODAgMTZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYzMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRTY2lzc29ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uMiAyNzYuM2MtMS4yLTM1LjMgMjYuNC02NSA2MS43LTY2LjJsMy4zLS4xTDU3IDIwOC4xQzIyLjUgMjAwLjUgLjcgMTY2LjMgOC4zIDEzMS44UzUwLjIgNzUuNSA4NC43IDgzLjJsMTczIDM4LjNjMi4zLTIuOSA0LjctNS43IDcuMS04LjVsMTguNC0yMC4zQzI5OS45IDc0LjUgMzIzLjUgNjQgMzQ4LjMgNjRsMTAuMiAwYzU0LjEgMCAxMDQuMSAyOC43IDEzMS4zIDc1LjRsMS41IDIuNmMxMy42IDIzLjIgMjAuNyA0OS43IDIwLjcgNzYuNkw1MTIgMzQ0YzAgNjYuMy01My43IDEyMC0xMjAgMTIwbC04IDAtOTYgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRjMC0yLjggLjItNS42IC41LTguM2MtMTkuNC0xMS0zMi41LTMxLjgtMzIuNS01NS43YzAtLjggMC0xLjYgMC0yLjRMNjYuNCAzMzhjLTM1LjMgMS4yLTY1LTI2LjQtNjYuMi02MS43em02My40LTE4LjJjLTguOCAuMy0xNS43IDcuNy0xNS40IDE2LjVzNy43IDE1LjcgMTYuNSAxNS40bDE2MS41LTUuNmM5LjgtLjMgMTguNyA1LjMgMjIuNyAxNC4yczIuMiAxOS4zLTQuNSAyNi40Yy0yLjggMi45LTQuNCA2LjctNC40IDExYzAgOC44IDcuMiAxNiAxNiAxNmM5LjEgMCAxNy40IDUuMSAyMS41IDEzLjNzMy4yIDE3LjktMi4zIDI1LjFjLTIgMi43LTMuMiA2LTMuMiA5LjZjMCA4LjggNy4yIDE2IDE2IDE2bDk2IDAgOCAwYzM5LjggMCA3Mi0zMi4yIDcyLTcybDAtMTI1LjRjMC0xOC40LTQuOS0zNi41LTE0LjItNTIuNGwtMS41LTIuNmMtMTguNi0zMi01Mi44LTUxLjYtODkuOC01MS42bC0xMC4yIDBjLTExLjMgMC0yMiA0LjgtMjkuNiAxMy4xbC0xNy41LTE1LjkgMTcuNSAxNS45LTE4LjQgMjAuM2MtLjYgLjYtMS4xIDEuMy0xLjcgMS45bDU3IDEzLjJjOC42IDIgMTQgMTAuNiAxMiAxOS4ycy0xMC42IDE0LTE5LjIgMTJsLTg1LjYtMTkuN0w3NC4zIDEzMGMtOC42LTEuOS0xNy4yIDMuNS0xOS4xIDEyLjJzMy41IDE3LjIgMTIuMiAxOS4xbDE4Ny41IDQxLjZjMTAuMiAyLjMgMTcuOCAxMC45IDE4LjcgMjEuNGwuMSAxYy42IDYuNi0xLjUgMTMuMS01LjggMTguMXMtMTAuNiA3LjktMTcuMiA4LjJMNjMuNiAyNTguMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFNwb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3MC4yIDgwLjhDMTYxIDQ3IDE4MC44IDEyIDIxNC42IDIuNGMzNC05LjYgNjkuNCAxMC4yIDc5IDQ0LjJsMzAuMyAxMDcuMUwzMzcuMSA4NGM2LjYtMzQuNyA0MC4xLTU3LjUgNzQuOC01MC45YzMxLjQgNiA1MyAzMy45IDUyIDY0LjljMTAtMi42IDIwLjgtMi44IDMxLjUtLjFjMzQuMyA4LjYgNTUuMSA0My4zIDQ2LjYgNzcuNkw0ODYuNyAzOTcuMkM0NjkuOCA0NjQuNyA0MDkuMiA1MTIgMzM5LjYgNTEyYy0xMS4yIDAtMjIuNSAwLTMzLjcgMGMtNTYuOSAwLTExMi4yLTE5LTE1Ny4yLTUzLjlsLTkyLTcxLjZjLTI3LjktMjEuNy0zMi45LTYxLjktMTEuMi04OS44czYxLjktMzIuOSA4OS44LTExLjJsMTcgMTMuMkwxMDAuNSAxNjcuNWMtMTMtMzIuOSAzLjItNzAuMSAzNi04M2MxMS4xLTQuNCAyMi43LTUuNCAzMy43LTMuN3ptNzcuMS0yMS4yYy0yLjQtOC41LTExLjItMTMuNC0xOS43LTExcy0xMy40IDExLjItMTEgMTkuN2w1NC44IDE4Mi40YzMuNSAxMi4zLTMuMyAyNS4yLTE1LjQgMjkuM3MtMjUuMy0yLTMwLTEzLjlMMTc0LjkgMTM4LjFjLTMuMi04LjItMTIuNS0xMi4zLTIwLjgtOXMtMTIuMyAxMi41LTkgMjAuOGw3My4zIDE4NS42YzEyIDMwLjMtMjMuNyA1Ny00OS40IDM3bC02My4xLTQ5LjFjLTctNS40LTE3LTQuMi0yMi41IDIuOHMtNC4yIDE3IDIuOCAyMi41bDkyIDcxLjZjMzYuNSAyOC40IDgxLjQgNDMuOCAxMjcuNyA0My44YzExLjIgMCAyMi41IDAgMzMuNyAwYzQ3LjUgMCA4OS0zMi40IDEwMC41LTc4LjVsNTUuNC0yMjEuNmMyLjEtOC42LTMuMS0xNy4zLTExLjYtMTkuNHMtMTcuMyAzLjEtMTkuNCAxMS42bC0yNiAxMDRDNDM1LjYgMjcxLjggNDI1IDI4MCA0MTMgMjgwYy0xNi41IDAtMjguOS0xNS0yNS44LTMxLjJMNDE1LjcgOTljMS43LTguNy00LTE3LjEtMTIuNy0xOC43cy0xNy4xIDQtMTguNyAxMi43TDM1Mi41IDI2MGMtMi4yIDExLjYtMTIuNCAyMC0yNC4yIDIwYy0xMSAwLTIwLjctNy4zLTIzLjctMTcuOUwyNDcuNCA1OS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwYy0yNS4zIDAtNDcuMiAxNC43LTU3LjYgMzZjLTctMi42LTE0LjUtNC0yMi40LTRjLTM1LjMgMC02NCAyOC43LTY0IDY0VjI2MS41bC0yLjctMi43Yy0yNS0yNS02NS41LTI1LTkwLjUgMHMtMjUgNjUuNSAwIDkwLjVMMTA2LjUgNDM3YzQ4IDQ4IDExMy4xIDc1IDE4MSA3NUgyOTZoOGMxLjUgMCAzLS4xIDQuNS0uNGM5MS43LTYuMiAxNjUtNzkuNCAxNzEuMS0xNzEuMWMuMy0xLjUgLjQtMyAuNC00LjVWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0Yy01LjUgMC0xMC45IC43LTE2IDJWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRjLTcuOSAwLTE1LjQgMS40LTIyLjQgNEMzMDMuMiAxNC43IDI4MS4zIDAgMjU2IDB6TTI0MCA5Ni4xYzAgMCAwLS4xIDAtLjFWNjRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNlY5NS45YzAgMCAwIC4xIDAgLjFWMjMyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWOTZjMCAwIDAgMCAwLS4xYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2NTUuOWMwIDAgMCAuMSAwIC4xdjgwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMTYwLjFjMCAwIDAtLjEgMC0uMWMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2VjMzMi45Yy0uMSAuNi0uMSAxLjMtLjIgMS45Yy0zLjQgNjkuNy01OS4zIDEyNS42LTEyOSAxMjljLS42IDAtMS4zIC4xLTEuOSAuMkgyOTZoLTguNWMtNTUuMiAwLTEwOC4xLTIxLjktMTQ3LjEtNjAuOUw1Mi43IDMxNS4zYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMMTE5IDMzNi40YzYuOSA2LjkgMTcuMiA4LjkgMjYuMiA1LjJzMTQuOC0xMi41IDE0LjgtMjIuMlY5NmMwLTguOCA3LjItMTYgMTYtMTZjOC44IDAgMTYgNy4xIDE2IDE1LjlWMjMyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWOTYuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZHNoYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3Mi4yIDY0LjZsLTUxLjEgNTEuMWMtMTUuMyA0LjItMjkuNSAxMS45LTQxLjUgMjIuNUwxNTMgMTYxLjlDMTQyLjggMTcxIDEyOS41IDE3NiAxMTUuOCAxNzZIOTZWMzA0YzIwLjQgLjYgMzkuOCA4LjkgNTQuMyAyMy40bDM1LjYgMzUuNiA3IDcgMCAwTDIxOS45IDM5N2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGMxLjctMS43IDMtMy43IDMuNy01LjhjMi44LTcuNyA5LjMtMTMuNSAxNy4zLTE1LjNzMTYuNCAuNiAyMi4yIDYuNUwyOTYuNSAzOTNjMTEuNiAxMS42IDMwLjQgMTEuNiA0MS45IDBjNS40LTUuNCA4LjMtMTIuMyA4LjYtMTkuNGMuNC04LjggNS42LTE2LjYgMTMuNi0yMC40czE3LjMtMyAyNC40IDIuMWM5LjQgNi43IDIyLjUgNS44IDMwLjktMi42YzkuNC05LjQgOS40LTI0LjYgMC0zMy45TDM0MC4xIDI0M2wtMzUuOCAzM2MtMjcuMyAyNS4yLTY5LjIgMjUuNi05NyAuOWMtMzEuNy0yOC4yLTMyLjQtNzcuNC0xLjYtMTA2LjVsNzAuMS02Ni4yQzMwMy4yIDc4LjQgMzM5LjQgNjQgMzc3LjEgNjRjMzYuMSAwIDcxIDEzLjMgOTcuOSAzNy4yTDUwNS4xIDEyOEg1NDRoNDAgNDBjOC44IDAgMTYgNy4yIDE2IDE2VjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMkg1NzZjLTExLjggMC0yMi4yLTYuNC0yNy43LTE2SDQ2My40Yy0zLjQgNi43LTcuOSAxMy4xLTEzLjUgMTguN2MtMTcuMSAxNy4xLTQwLjggMjMuOC02MyAyMC4xYy0zLjYgNy4zLTguNSAxNC4xLTE0LjYgMjAuMmMtMjcuMyAyNy4zLTcwIDMwLTEwMC40IDguMWMtMjUuMSAyMC44LTYyLjUgMTkuNS04Ni00LjFMMTU5IDQwNGwtNy03LTM1LjYtMzUuNmMtNS41LTUuNS0xMi43LTguNy0yMC40LTkuM0M5NiAzNjkuNyA4MS42IDM4NCA2NCAzODRIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE0NGMwLTguOCA3LjItMTYgMTYtMTZINTYgOTZoMTkuOGMyIDAgMy45LS43IDUuMy0ybDI2LjUtMjMuNkMxNzUuNSA3Ny43IDIxMS40IDY0IDI0OC43IDY0SDI1OWM0LjQgMCA4LjkgLjIgMTMuMiAuNnpNNTQ0IDMyMFYxNzZINDk2Yy01LjkgMC0xMS42LTIuMi0xNS45LTYuMWwtMzYuOS0zMi44Yy0xOC4yLTE2LjItNDEuNy0yNS4xLTY2LjEtMjUuMWMtMjUuNCAwLTQ5LjggOS43LTY4LjMgMjcuMWwtNzAuMSA2Ni4yYy0xMC4zIDkuOC0xMC4xIDI2LjMgLjUgMzUuN2M5LjMgOC4zIDIzLjQgOC4xIDMyLjUtLjNsNzEuOS02Ni40YzkuNy05IDI0LjktOC40IDMzLjkgMS40czguNCAyNC45LTEuNCAzMy45bC0uOCAuOCA3NC40IDc0LjRjMTAgMTAgMTYuNSAyMi4zIDE5LjQgMzUuMUg1NDR6TTY0IDMzNmExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem01MjggMTZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYXJkRHJpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgODBjLTguOCAwLTE2IDcuMi0xNiAxNlYyNThjNS4xLTEuMyAxMC41LTIgMTYtMkg0NDhjNS41IDAgMTAuOSAuNyAxNiAyVjk2YzAtOC44LTcuMi0xNi0xNi0xNkg2NHpNNDggMzIwdjk2YzAgOC44IDcuMiAxNiAxNiAxNkg0NDhjOC44IDAgMTYtNy4yIDE2LTE2VjMyMGMwLTguOC03LjItMTYtMTYtMTZINjRjLTguOCAwLTE2IDcuMi0xNiAxNnpNMCAzMjBWOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjMyMHY5NmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMzIwem0yODAgNDhhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTIwLTI0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI1LjggNDY4LjJsLTIuNS0yLjNMNDguMSAzMDMuMkMxNy40IDI3NC43IDAgMjM0LjcgMCAxOTIuOHYtMy4zYzAtNzAuNCA1MC0xMzAuOCAxMTkuMi0xNDRDMTU4LjYgMzcuOSAxOTguOSA0NyAyMzEgNjkuNmM5IDYuNCAxNy40IDEzLjggMjUgMjIuM2M0LjItNC44IDguNy05LjIgMTMuNS0xMy4zYzMuNy0zLjIgNy41LTYuMiAxMS41LTljMCAwIDAgMCAwIDBDMzEzLjEgNDcgMzUzLjQgMzcuOSAzOTIuOCA0NS40QzQ2MiA1OC42IDUxMiAxMTkuMSA1MTIgMTg5LjV2My4zYzAgNDEuOS0xNy40IDgxLjktNDguMSAxMTAuNEwyODguNyA0NjUuOWwtMi41IDIuM2MtOC4yIDcuNi0xOSAxMS45LTMwLjIgMTEuOXMtMjItNC4yLTMwLjItMTEuOXpNMjM5LjEgMTQ1Yy0uNC0uMy0uNy0uNy0xLTEuMWwtMTcuOC0yMGMwIDAtLjEtLjEtLjEtLjFjMCAwIDAgMCAwIDBjLTIzLjEtMjUuOS01OC0zNy43LTkyLTMxLjJDODEuNiAxMDEuNSA0OCAxNDIuMSA0OCAxODkuNXYzLjNjMCAyOC41IDExLjkgNTUuOCAzMi44IDc1LjJMMjU2IDQzMC43IDQzMS4yIDI2OGMyMC45LTE5LjQgMzIuOC00Ni43IDMyLjgtNzUuMnYtMy4zYzAtNDcuMy0zMy42LTg4LTgwLjEtOTYuOWMtMzQtNi41LTY5IDUuNC05MiAzMS4yYzAgMCAwIDAtLjEgLjFzMCAwLS4xIC4xbC0xNy44IDIwYy0uMyAuNC0uNyAuNy0xIDEuMWMtNC41IDQuNS0xMC42IDctMTYuOSA3cy0xMi40LTIuNS0xNi45LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hvc3BpdGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMiAwYy0zOS44IDAtNzIgMzIuMi03MiA3MnY4SDcyQzMyLjIgODAgMCAxMTIuMiAwIDE1MlY0NDBjMCAzOS44IDMyLjIgNzIgNzIgNzJoLjIgLjIgLjIgLjIgLjJINzNoLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjJINzVoLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjJINzdoLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjJINzloLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjJIODJoLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjJIODVoLjIgLjIgLjIgLjJIODZoLjIgLjIgLjIgLjJIODdoLjIgLjIgLjIgLjJIODhoLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjJIOThoLjIgLjIgLjIgLjJIOTloLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjJ2MEg0NTZoOHYwSDU2OGMzOS44IDAgNzItMzIuMiA3Mi03MlYxNTJjMC0zOS44LTMyLjItNzItNzItNzJINDgwVjcyYzAtMzkuOC0zMi4yLTcyLTcyLTcySDIzMnpNNDgwIDEyOGg4OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHY0MEg1MzZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNTZ2NDhINTM2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDU2VjQ0MGMwIDEzLjMtMTAuNyAyNC0yNCAyNEg0ODBWMzM2IDEyOHpNNzIgMTI4aDg4VjQ2NGgtLjEtLjItLjItLjJIMTU5aC0uMi0uMi0uMkgxNThoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDE1NGgtLjItLjItLjJIMTUzaC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxNTBoLS4yLS4yLS4ySDE0OWgtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJIMTQ2aC0uMi0uMi0uMkgxNDVoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDE0MmgtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJIMTM5aC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMzZoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDEzM2gtLjItLjItLjItLjItLjItLjItLjItLjJIMTMxaC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMjhoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDEyNmgtLjItLjItLjItLjItLjItLjItLjItLjJIMTI0aC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMjJoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDEyMGgtLjItLjItLjItLjItLjItLjItLjItLjJIMTE4aC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMTZoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDExNGgtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJIMTExaC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMDhoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDEwNWgtLjItLjItLjItLjJIMTA0aC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkgxMDBoLS4yLS4yLS4yLS4ySDk5aC0uMi0uMi0uMi0uMkg5OGgtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJIODhoLS4yLS4yLS4yLS4ySDg3aC0uMi0uMi0uMi0uMkg4NmgtLjItLjItLjItLjJIODVoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDgyaC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkg3OWgtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJINzdoLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4ySDc1aC0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMkg3M2gtLjItLjItLjItLjItLjJINzJjLTEzLjIgMC0yNC0xMC43LTI0LTI0VjMzNmg1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg0OFYyNDBoNTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRINDhWMTUyYzAtMTMuMyAxMC43LTI0IDI0LTI0ek0yMDggNzJjMC0xMy4zIDEwLjctMjQgMjQtMjRINDA4YzEzLjMgMCAyNCAxMC43IDI0IDI0VjMzNiA0NjRIMzY4VjQwMGMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHY2NEgyMDhWNzJ6bTg4IDI0djI0SDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgOC44IDcuMiAxNiAxNiAxNmgyNHYyNGMwIDguOCA3LjIgMTYgMTYgMTZoMTZjOC44IDAgMTYtNy4yIDE2LTE2VjE2OGgyNGM4LjggMCAxNi03LjIgMTYtMTZWMTM2YzAtOC44LTcuMi0xNi0xNi0xNkgzNDRWOTZjMC04LjgtNy4yLTE2LTE2LTE2SDMxMmMtOC44IDAtMTYgNy4yLTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIb3VyZ2xhc3NIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjRDMCAxMC43IDEwLjcgMCAyNCAwSDM2MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGgtOFY2N2MwIDQwLjMtMTYgNzktNDQuNSAxMDcuNUwyMjUuOSAyNTZsODEuNSA4MS41QzMzNiAzNjYgMzUyIDQwNC43IDM1MiA0NDV2MTloOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg4VjQ0NWMwLTQwLjMgMTYtNzkgNDQuNS0xMDcuNUwxNTguMSAyNTYgNzYuNSAxNzQuNUM0OCAxNDYgMzIgMTA3LjMgMzIgNjdWNDhIMjRDMTAuNyA0OCAwIDM3LjMgMCAyNHpNMTEwLjUgMzcxLjVjLTMuOSAzLjktNy41IDguMS0xMC43IDEyLjVIMjg0LjJjLTMuMi00LjQtNi44LTguNi0xMC43LTEyLjVMMTkyIDI4OS45bC04MS41IDgxLjV6TTI4NC4yIDEyOEMyOTcgMTEwLjQgMzA0IDg5IDMwNCA2N1Y0OEg4MFY2N2MwIDIyLjEgNyA0My40IDE5LjggNjFIMjg0LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hvdXJnbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCAwQzEwLjcgMCAwIDEwLjcgMCAyNFMxMC43IDQ4IDI0IDQ4aDhWNjdjMCA0MC4zIDE2IDc5IDQ0LjUgMTA3LjVMMTU4LjEgMjU2IDc2LjUgMzM3LjVDNDggMzY2IDMyIDQwNC43IDMyIDQ0NXYxOUgyNGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEgzNjBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRoLThWNDQ1YzAtNDAuMy0xNi03OS00NC41LTEwNy41TDIyNS45IDI1Nmw4MS41LTgxLjVDMzM2IDE0NiAzNTIgMTA3LjMgMzUyIDY3VjQ4aDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjR6TTE5MiAyODkuOWw4MS41IDgxLjVDMjkzIDM5MSAzMDQgNDE3LjQgMzA0IDQ0NXYxOUg4MFY0NDVjMC0yNy42IDExLTU0IDMwLjUtNzMuNUwxOTIgMjg5Ljl6bTAtNjcuOWwtODEuNS04MS41QzkxIDEyMSA4MCA5NC42IDgwIDY3VjQ4SDMwNFY2N2MwIDI3LjYtMTEgNTQtMzAuNSA3My41TDE5MiAyMjIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSWRCYWRnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDhWNjRjMCAxNy43LTE0LjMgMzItMzIgMzJIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0OEg2NGMtOC44IDAtMTYgNy4yLTE2IDE2VjQ0OGMwIDguOCA3LjIgMTYgMTYgMTZIMzIwYzguOCAwIDE2LTcuMiAxNi0xNlY2NGMwLTguOC03LjItMTYtMTYtMTZIMjU2ek0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgzMjBjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMTYwIDMyMGg2NGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDguOC03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MHptLTMyLTk2YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSWRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCAxNjBWNDE2YzAgOC44LTcuMiAxNi0xNiAxNkgzMjBjMC00NC4yLTM1LjgtODAtODAtODBIMTc2Yy00NC4yIDAtODAgMzUuOC04MCA4MEg2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjE2MEg1Mjh6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjcyIDI1NmE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6bTEwNC00OGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgzNzZ6bTAgOTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMzc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggODBjOC44IDAgMTYgNy4yIDE2IDE2VjQxNS44bC01LTYuNS0xMzYtMTc2Yy00LjUtNS45LTExLjYtOS4zLTE5LTkuM3MtMTQuNCAzLjQtMTkgOS4zTDIwMiAzNDAuN2wtMzAuNS00Mi43QzE2NyAyOTEuNyAxNTkuOCAyODggMTUyIDI4OHMtMTUgMy43LTE5LjUgMTAuMWwtODAgMTEyTDQ4IDQxNi4zbDAtLjNWOTZjMC04LjggNy4yLTE2IDE2LTE2SDQ0OHpNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em04MCAxOTJhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdJbWFnZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDgwSDUxMmM4LjggMCAxNiA3LjIgMTYgMTZWMzIwYzAgOC44LTcuMiAxNi0xNiAxNkg0OTAuOEwzODguMSAxNzguOWMtNC40LTYuOC0xMi0xMC45LTIwLjEtMTAuOXMtMTUuNyA0LjEtMjAuMSAxMC45bC01Mi4yIDc5LjgtMTIuNC0xNi45Yy00LjUtNi4yLTExLjctOS44LTE5LjQtOS44cy0xNC44IDMuNi0xOS40IDkuOEwxNzUuNiAzMzZIMTYwYy04LjggMC0xNi03LjItMTYtMTZWOTZjMC04LjggNy4yLTE2IDE2LTE2ek05NiA5NlYzMjBjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDE2MGMtMzUuMyAwLTY0IDI4LjctNjQgNjR6TTQ4IDEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNFMwIDEwNi43IDAgMTIwVjM0NGMwIDc1LjEgNjAuOSAxMzYgMTM2IDEzNkg0NTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMTM2Yy00OC42IDAtODgtMzkuNC04OC04OFYxMjB6bTIwOCAyNGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdLZXlib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAxMTJjLTguOCAwLTE2IDcuMi0xNiAxNlYzODRjMCA4LjggNy4yIDE2IDE2IDE2SDUxMmM4LjggMCAxNi03LjIgMTYtMTZWMTI4YzAtOC44LTcuMi0xNi0xNi0xNkg2NHpNMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4ek0xNzYgMzIwSDQwMGM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjMzNmMwLTguOCA3LjItMTYgMTYtMTZ6bS03Mi03MmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNkgxMjBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDh6bTE2LTk2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZIMTIwYy04LjggMC0xNi03LjItMTYtMTZWMTY4YzAtOC44IDcuMi0xNiAxNi0xNnptNjQgOTZjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZIMjAwYy04LjggMC0xNi03LjItMTYtMTZWMjQ4em0xNi05NmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDIwMGMtOC44IDAtMTYtNy4yLTE2LTE2VjE2OGMwLTguOCA3LjItMTYgMTYtMTZ6bTY0IDk2YzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDI4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0OHptMTYtOTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNkgyODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNjhjMC04LjggNy4yLTE2IDE2LTE2em02NCA5NmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNkgzNjBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDh6bTE2LTk2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZIMzYwYy04LjggMC0xNi03LjItMTYtMTZWMTY4YzAtOC44IDcuMi0xNiAxNi0xNnptNjQgOTZjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZINDQwYy04LjggMC0xNi03LjItMTYtMTZWMjQ4em0xNi05NmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDQ0MGMtOC44IDAtMTYtNy4yLTE2LTE2VjE2OGMwLTguOCA3LjItMTYgMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0xlbW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCA4MGMtMy4yIDAtNi4yIC40LTguOSAxLjNDMzQwIDg2LjggMzEzIDkxLjkgMjg0LjggODQuNkMyMjcuNCA2OS43IDE2MC4yIDkyIDExMC4xIDE0Mi4xUzM3LjcgMjU5LjQgNTIuNiAzMTYuOGM3LjMgMjguMiAyLjIgNTUuMi0zLjMgNzQuM2MtLjggMi44LTEuMyA1LjgtMS4zIDguOWMwIDE3LjcgMTQuMyAzMiAzMiAzMmMzLjIgMCA2LjItLjQgOC45LTEuM2MxOS4xLTUuNSA0Ni4xLTEwLjcgNzQuMy0zLjNjNTcuNCAxNC45IDEyNC42LTcuNCAxNzQuNy01Ny41czcyLjQtMTE3LjMgNTcuNS0xNzQuN2MtNy4zLTI4LjItMi4yLTU1LjIgMy4zLTc0LjNjLjgtMi44IDEuMy01LjggMS4zLTguOWMwLTE3LjctMTQuMy0zMi0zMi0zMnptMC00OGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDcuNy0xLjEgMTUuMi0zLjEgMjIuM2MtNC42IDE1LjgtNy4xIDMyLjktMyA0OC45YzIwLjEgNzcuNi0xMC45IDE2MS41LTcwIDIyMC43cy0xNDMuMSA5MC4yLTIyMC43IDcwYy0xNi00LjEtMzMtMS42LTQ4LjkgM2MtNy4xIDItMTQuNiAzLjEtMjIuMyAzLjFjLTQ0LjIgMC04MC0zNS44LTgwLTgwYzAtNy43IDEuMS0xNS4yIDMuMS0yMi4zYzQuNi0xNS44IDcuMS0zMi45IDMtNDguOUMtMTQgMjUxLjMgMTcgMTY3LjMgNzYuMiAxMDguMlMyMTkuMyAxOCAyOTYuOCAzOC4xYzE2IDQuMSAzMyAxLjYgNDguOS0zYzcuMS0yIDE0LjYtMy4xIDIyLjMtMy4xek0yNDYuNyAxNjdjLTUyIDE1LjItOTYuNSA1OS43LTExMS43IDExMS43Yy0zLjcgMTIuNy0xNy4xIDIwLTI5LjggMTYuM3MtMjAtMTcuMS0xNi4zLTI5LjhjMTkuOC02Ny43IDc2LjYtMTI0LjUgMTQ0LjMtMTQ0LjNjMTIuNy0zLjcgMjYuMSAzLjYgMjkuOCAxNi4zcy0zLjYgMjYuMS0xNi4zIDI5Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0xpZmVSaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NS4xIDQxOS4xQzM0OS43IDQ0Ny4yIDMwNC44IDQ2NCAyNTYgNDY0cy05My43LTE2LjgtMTI5LjEtNDQuOWw4MC40LTgwLjRjMTQuMyA4LjQgMzEgMTMuMyA0OC44IDEzLjNzMzQuNS00LjggNDguOC0xMy4zbDgwLjQgODAuNHptNjguMSAuMkM0ODkuOSAzNzQuOSA1MTIgMzE4LjEgNTEyIDI1NnMtMjIuMS0xMTguOS01OC44LTE2My4zTDQ2NSA4MWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwTDQxOS4zIDU4LjhDMzc0LjkgMjIuMSAzMTguMSAwIDI1NiAwUzEzNy4xIDIyLjEgOTIuNyA1OC44TDgxIDQ3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45TDU4LjggOTIuN0MyMi4xIDEzNy4xIDAgMTkzLjkgMCAyNTZzMjIuMSAxMTguOSA1OC44IDE2My4zTDQ3IDQzMWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDExLjgtMTEuOEMxMzcuMSA0ODkuOSAxOTMuOSA1MTIgMjU2IDUxMnMxMTguOS0yMi4xIDE2My4zLTU4LjhMNDMxIDQ2NWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTExLjgtMTEuOHptLTM0LjEtMzQuMWwtODAuNC04MC40YzguNC0xNC4zIDEzLjMtMzEgMTMuMy00OC44cy00LjgtMzQuNS0xMy4zLTQ4LjhsODAuNC04MC40QzQ0Ny4yIDE2Mi4zIDQ2NCAyMDcuMiA0NjQgMjU2cy0xNi44IDkzLjctNDQuOSAxMjkuMXpNMzg1LjEgOTIuOWwtODAuNCA4MC40Yy0xNC4zLTguNC0zMS0xMy4zLTQ4LjgtMTMuM3MtMzQuNSA0LjgtNDguOCAxMy4zTDEyNi45IDkyLjlDMTYyLjMgNjQuOCAyMDcuMiA0OCAyNTYgNDhzOTMuNyAxNi44IDEyOS4xIDQ0Ljl6TTE3My4zIDMwNC44TDkyLjkgMzg1LjFDNjQuOCAzNDkuNyA0OCAzMDQuOCA0OCAyNTZzMTYuOC05My43IDQ0LjktMTI5LjFsODAuNCA4MC40Yy04LjQgMTQuMy0xMy4zIDMxLTEzLjMgNDguOHM0LjggMzQuNSAxMy4zIDQ4Ljh6TTIwOCAyNTZhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGlnaHRidWxiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5Ny4yIDI0OC45QzMxMS42IDIyOC4zIDMyMCAyMDMuMiAzMjAgMTc2YzAtNzAuNy01Ny4zLTEyOC0xMjgtMTI4UzY0IDEwNS4zIDY0IDE3NmMwIDI3LjIgOC40IDUyLjMgMjIuOCA3Mi45YzMuNyA1LjMgOC4xIDExLjMgMTIuOCAxNy43bDAgMGMxMi45IDE3LjcgMjguMyAzOC45IDM5LjggNTkuOGMxMC40IDE5IDE1LjcgMzguOCAxOC4zIDU3LjVIMTA5Yy0yLjItMTItNS45LTIzLjctMTEuOC0zNC41Yy05LjktMTgtMjIuMi0zNC45LTM0LjUtNTEuOGwwIDAgMCAwYy01LjItNy4xLTEwLjQtMTQuMi0xNS40LTIxLjRDMjcuNiAyNDcuOSAxNiAyMTMuMyAxNiAxNzZDMTYgNzguOCA5NC44IDAgMTkyIDBzMTc2IDc4LjggMTc2IDE3NmMwIDM3LjMtMTEuNiA3MS45LTMxLjQgMTAwLjNjLTUgNy4yLTEwLjIgMTQuMy0xNS40IDIxLjRsMCAwIDAgMGMtMTIuMyAxNi44LTI0LjYgMzMuNy0zNC41IDUxLjhjLTUuOSAxMC44LTkuNiAyMi41LTExLjggMzQuNUgyMjYuNGMyLjYtMTguNyA3LjktMzguNiAxOC4zLTU3LjVjMTEuNS0yMC45IDI2LjktNDIuMSAzOS44LTU5LjhsMCAwIDAgMCAwIDBjNC43LTYuNCA5LTEyLjQgMTIuNy0xNy43ek0xOTIgMTI4Yy0yNi41IDAtNDggMjEuNS00OCA0OGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNnptMCAzODRjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjQxNkgyNzJ2MTZjMCA0NC4yLTM1LjggODAtODAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ01hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjUuNiAzNi4yQzU3Mi4xIDQwLjcgNTc2IDQ4LjEgNTc2IDU2VjM5MmMwIDEwLTYuMiAxOC45LTE1LjUgMjIuNGwtMTY4IDY0Yy01LjIgMi0xMC45IDIuMS0xNi4xIC4zTDE5Mi41IDQxNy41bC0xNjAgNjFjLTcuNCAyLjgtMTUuNyAxLjgtMjIuMi0yLjdTMCA0NjMuOSAwIDQ1NlYxMjBjMC0xMCA2LjEtMTguOSAxNS41LTIyLjRsMTY4LTY0YzUuMi0yIDEwLjktMi4xIDE2LjEtLjNMMzgzLjUgOTQuNWwxNjAtNjFjNy40LTIuOCAxNS43LTEuOCAyMi4yIDIuN3pNNDggMTM2LjVWNDIxLjJsMTIwLTQ1LjdWOTAuOEw0OCAxMzYuNXpNMzYwIDQyMi43VjEzNy4zbC0xNDQtNDhWMzc0LjdsMTQ0IDQ4em00OC0xLjVsMTIwLTQ1LjdWOTAuOEw0MDggMTM2LjVWNDIxLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ01lc3NhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDM2OGMyNi41IDAgNDggMjEuNSA0OCA0OHYxNmw3Mi41LTU0LjRjOC4zLTYuMiAxOC40LTkuNiAyOC44LTkuNkg0NDhjOC44IDAgMTYtNy4yIDE2LTE2VjY0YzAtOC44LTcuMi0xNi0xNi0xNkg2NGMtOC44IDAtMTYgNy4yLTE2IDE2VjM1MmMwIDguOCA3LjIgMTYgMTYgMTZoOTZ6bTQ4IDEyNGwtLjIgLjItNS4xIDMuOC0xNy4xIDEyLjhjLTQuOCAzLjYtMTEuMyA0LjItMTYuOCAxLjVzLTguOC04LjItOC44LTE0LjNWNDc0Ljd2LTYuNFY0Njh2LTRWNDE2SDExMiA2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjRDMCAyOC43IDI4LjcgMCA2NCAwSDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NFYzNTJjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMzA5LjNMMjA4IDQ5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTW9uZXlCaWxsMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgMTEyYzAgMzUuMy0yOC43IDY0LTY0IDY0VjMzNmMzNS4zIDAgNjQgMjguNyA2NCA2NEg0NjRjMC0zNS4zIDI4LjctNjQgNjQtNjRWMTc2Yy0zNS4zIDAtNjQtMjguNy02NC02NEgxMTJ6TTAgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQgMjguNyA2NCA2NFYzODRjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjEyOHpNMTc2IDI1NmExMTIgMTEyIDAgMSAxIDIyNCAwIDExMiAxMTIgMCAxIDEgLTIyNCAwem04MC00OGMwIDguOCA3LjIgMTYgMTYgMTZ2NjRoLThjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoMjQgMjRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZoLThWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTW9vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQuNyA5OC43Yy0yMSAzNC4xLTMzLjEgNzQuMy0zMy4xIDExNy4zYzAgOTggNjIuOCAxODEuNCAxNTAuNCAyMTEuN2MtMTIuNCAyLjgtMjUuMyA0LjMtMzguNiA0LjNDMTI2LjYgNDMyIDQ4IDM1My4zIDQ4IDI1NmMwLTY4LjkgMzkuNC0xMjguNCA5Ni44LTE1Ny4zem02Mi4xLTY2QzkxLjEgNDEuMiAwIDEzNy45IDAgMjU2QzAgMzc5LjcgMTAwIDQ4MCAyMjMuNSA0ODBjNDcuOCAwIDkyLTE1IDEyOC40LTQwLjZjMS45LTEuMyAzLjctMi43IDUuNS00YzQuOC0zLjYgOS40LTcuNCAxMy45LTExLjRjMi43LTIuNCA1LjMtNC44IDcuOS03LjNjNS00LjkgNi4zLTEyLjUgMy4xLTE4LjdzLTEwLjEtOS43LTE3LTguNWMtMy43IC42LTcuNCAxLjItMTEuMSAxLjZjLTUgLjUtMTAuMSAuOS0xNS4zIDFjLTEuMiAwLTIuNSAwLTMuNyAwYy0uMSAwLS4yIDAtLjMgMGMtOTYuOC0uMi0xNzUuMi03OC45LTE3NS4yLTE3NmMwLTU0LjggMjQuOS0xMDMuNyA2NC4xLTEzNmMxLS45IDIuMS0xLjcgMy4yLTIuNmM0LTMuMiA4LjItNi4yIDEyLjUtOWMzLjEtMiA2LjMtNCA5LjYtNS44YzYuMS0zLjUgOS4yLTEwLjUgNy43LTE3LjNzLTcuMy0xMS45LTE0LjMtMTIuNWMtMy42LS4zLTcuMS0uNS0xMC43LS42Yy0yLjctLjEtNS41LS4xLTguMi0uMWMtMy4zIDAtNi41IC4xLTkuOCAuMmMtMi4zIC4xLTQuNiAuMi02LjkgLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ05ld3NwYXBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjggODBjLTEzLjMgMC0yNCAxMC43LTI0IDI0VjQwOGMwIDguNC0xLjQgMTYuNS00LjEgMjRINDQwYzEzLjMgMCAyNC0xMC43IDI0LTI0VjEwNGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgxNjh6TTcyIDQ4MGMtMzkuOCAwLTcyLTMyLjItNzItNzJWMTEyQzAgOTguNyAxMC43IDg4IDI0IDg4czI0IDEwLjcgMjQgMjRWNDA4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMTA0YzAtMzkuOCAzMi4yLTcyIDcyLTcySDQ0MGMzOS44IDAgNzIgMzIuMiA3MiA3MlY0MDhjMCAzOS44LTMyLjIgNzItNzIgNzJINzJ6TTE3NiAxMzZjMC0xMy4zIDEwLjctMjQgMjQtMjRoOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjR2ODBjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMjAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYxMzZ6bTIwMC0yNGgzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgzNzZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6bTAgODBoMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMzc2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0ek0yMDAgMjcySDQwOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6bTAgODBINDA4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDIwMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTm90ZVN0aWNreSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2VjQxNmMwIDguOCA3LjIgMTYgMTYgMTZIMjg4VjM1MmMwLTE3LjcgMTQuMy0zMiAzMi0zMmg4MFY5NmMwLTguOC03LjItMTYtMTYtMTZINjR6TTI4OCA0ODBINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFYzMjB2NS41YzAgMTctNi43IDMzLjMtMTguNyA0NS4zbC05MC41IDkwLjVjLTEyIDEyLTI4LjMgMTguNy00NS4zIDE4LjdIMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdPYmplY3RHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAxMTUuOEMzOC4yIDEwNyAzMiA5NC4yIDMyIDgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4YzE0LjIgMCAyNyA2LjIgMzUuOCAxNkg0NjAuMmM4LjgtOS44IDIxLjYtMTYgMzUuOC0xNmMyNi41IDAgNDggMjEuNSA0OCA0OGMwIDE0LjItNi4yIDI3LTE2IDM1LjhWMzk2LjJjOS44IDguOCAxNiAyMS42IDE2IDM1LjhjMCAyNi41LTIxLjUgNDgtNDggNDhjLTE0LjIgMC0yNy02LjItMzUuOC0xNkgxMTUuOGMtOC44IDkuOC0yMS42IDE2LTM1LjggMTZjLTI2LjUgMC00OC0yMS41LTQ4LTQ4YzAtMTQuMiA2LjItMjcgMTYtMzUuOFYxMTUuOHpNMTI1LjMgOTZjLTQuOCAxMy42LTE1LjYgMjQuNC0yOS4zIDI5LjNWMzg2LjdjMTMuNiA0LjggMjQuNCAxNS42IDI5LjMgMjkuM0g0NTAuN2M0LjgtMTMuNiAxNS42LTI0LjQgMjkuMy0yOS4zVjEyNS4zYy0xMy42LTQuOC0yNC40LTE1LjYtMjkuMy0yOS4zSDEyNS4zem0yLjcgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJIMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTYwek0yNTYgMzIwaDMyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjIyNGg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkgyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjMyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnT2JqZWN0VW5ncm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OC4yIDY2LjhjLS4xLS44LS4yLTEuNy0uMi0yLjVjMC0uMSAwLS4xIDAtLjJjMC04LjggNy4yLTE2IDE2LTE2Yy45IDAgMS45IC4xIDIuOCAuMkM3NC4zIDQ5LjUgODAgNTYuMSA4MCA2NGMwIDguOC03LjIgMTYtMTYgMTZjLTcuOSAwLTE0LjUtNS43LTE1LjgtMTMuMnpNMCA2NGMwIDI2LjkgMTYuNSA0OS45IDQwIDU5LjNWMjI4LjdDMTYuNSAyMzguMSAwIDI2MS4xIDAgMjg4YzAgMzUuMyAyOC43IDY0IDY0IDY0YzI2LjkgMCA0OS45LTE2LjUgNTkuMy00MEgzMjQuN2M5LjUgMjMuNSAzMi41IDQwIDU5LjMgNDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRjMC0yNi45LTE2LjUtNDkuOS00MC01OS4zVjEyMy4zYzIzLjUtOS41IDQwLTMyLjUgNDAtNTkuM2MwLTM1LjMtMjguNy02NC02NC02NGMtMjYuOSAwLTQ5LjkgMTYuNS01OS4zIDQwSDEyMy4zQzExMy45IDE2LjUgOTAuOSAwIDY0IDBDMjguNyAwIDAgMjguNyAwIDY0em0zNjggMGExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwek0zMjQuNyA4OGM2LjUgMTYgMTkuMyAyOC45IDM1LjMgMzUuM1YyMjguN2MtMTYgNi41LTI4LjkgMTkuMy0zNS4zIDM1LjNIMTIzLjNjLTYuNS0xNi0xOS4zLTI4LjktMzUuMy0zNS4zVjEyMy4zYzE2LTYuNSAyOC45LTE5LjMgMzUuMy0zNS4zSDMyNC43ek0zODQgMjcyYTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpNODAgMjg4YzAgNy45LTUuNyAxNC41LTEzLjIgMTUuOGMtLjggLjEtMS43IC4yLTIuNSAuMmwtLjIgMGMtOC44IDAtMTYtNy4yLTE2LTE2YzAtLjkgLjEtMS45IC4yLTIuOEM0OS41IDI3Ny43IDU2LjEgMjcyIDY0IDI3MmM4LjggMCAxNiA3LjIgMTYgMTZ6bTM5MS4zLTQwaDQ1LjRjNi41IDE2IDE5LjMgMjguOSAzNS4zIDM1LjNWMzg4LjdjLTE2IDYuNS0yOC45IDE5LjMtMzUuMyAzNS4zSDMxNS4zYy02LjUtMTYtMTkuMy0yOC45LTM1LjMtMzUuM1YzNTJIMjMydjM2LjdjLTIzLjUgOS41LTQwIDMyLjUtNDAgNTkuM2MwIDM1LjMgMjguNyA2NCA2NCA2NGMyNi45IDAgNDkuOS0xNi41IDU5LjMtNDBINTE2LjdjOS41IDIzLjUgMzIuNSA0MCA1OS4zIDQwYzM1LjMgMCA2NC0yOC43IDY0LTY0YzAtMjYuOS0xNi41LTQ5LjktNDAtNTkuM1YyODMuM2MyMy41LTkuNSA0MC0zMi41IDQwLTU5LjNjMC0zNS4zLTI4LjctNjQtNjQtNjRjLTI2LjkgMC00OS45IDE2LjUtNTkuMyA0MEg0NDh2MTYuNGM5LjggOC44IDE3LjggMTkuNSAyMy4zIDMxLjZ6bTg4LjktMjYuN2ExNiAxNiAwIDEgMSAzMS41IDUuNSAxNiAxNiAwIDEgMSAtMzEuNS01LjV6TTI3MS44IDQ1MC43YTE2IDE2IDAgMSAxIC0zMS41LTUuNSAxNiAxNiAwIDEgMSAzMS41IDUuNXptMzAxLjUgMTNjLTcuNS0xLjMtMTMuMi03LjktMTMuMi0xNS44YzAtOC44IDcuMi0xNiAxNi0xNmM3LjkgMCAxNC41IDUuNyAxNS44IDEzLjJsMCAuMWMuMSAuOSAuMiAxLjggLjIgMi43YzAgOC44LTcuMiAxNi0xNiAxNmMtLjkgMC0xLjktLjEtMi44LS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdQYXBlclBsYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjEgMjYwLjJjLTIyLjYgMTIuOS0yMC41IDQ3LjMgMy42IDU3LjNMMTYwIDM3NlY0NzkuM2MwIDE4LjEgMTQuNiAzMi43IDMyLjcgMzIuN2M5LjcgMCAxOC45LTQuMyAyNS4xLTExLjhsNjItNzQuMyAxMjMuOSA1MS42YzE4LjkgNy45IDQwLjgtNC41IDQzLjktMjQuN2w2NC00MTZjMS45LTEyLjEtMy40LTI0LjMtMTMuNS0zMS4ycy0yMy4zLTcuNS0zNC0xLjRsLTQ0OCAyNTZ6bTUyLjEgMjUuNUw0MDkuNyA5MC42IDE5MC4xIDMzNmwxLjIgMUw2OC4yIDI4NS43ek00MDMuMyA0MjUuNEwyMzYuNyAzNTUuOSA0NTAuOCAxMTYuNiA0MDMuMyA0MjUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnUGFzdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA0LjYgNDhINjRDMjguNyA0OCAwIDc2LjcgMCAxMTJWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0aDk2VjQwMEg2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZIODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzIuNEMyMDIgMTA4LjQgMjI3LjYgOTYgMjU2IDk2aDYyYy03LjEtMjcuNi0zMi4yLTQ4LTYyLTQ4SDIxNS40QzIxMS42IDIwLjkgMTg4LjIgMCAxNjAgMHMtNTEuNiAyMC45LTU1LjQgNDh6TTE0NCA1NmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwek00NDggNDY0SDI1NmMtOC44IDAtMTYtNy4yLTE2LTE2VjE5MmMwLTguOCA3LjItMTYgMTYtMTZsMTQwLjEgMEw0NjQgMjQzLjlWNDQ4YzAgOC44LTcuMiAxNi0xNiAxNnpNMjU2IDUxMkg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjQzLjljMC0xMi43LTUuMS0yNC45LTE0LjEtMzMuOWwtNjcuOS02Ny45Yy05LTktMjEuMi0xNC4xLTMzLjktMTQuMUgyNTZjLTM1LjMgMC02NCAyOC43LTY0IDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnUGVuVG9TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQxIDU4LjlMNDUzLjEgNzFjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMNDI0IDEzNC4xIDM3Ny45IDg4IDQwNyA1OC45YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwek0yMDkuOCAyNTYuMkwzNDQgMTIxLjkgMzkwLjEgMTY4IDI1NS44IDMwMi4yYy0yLjkgMi45LTYuNSA1LTEwLjQgNi4xbC01OC41IDE2LjcgMTYuNy01OC41YzEuMS0zLjkgMy4yLTcuNSA2LjEtMTAuNHpNMzczLjEgMjVMMTc1LjggMjIyLjJjLTguNyA4LjctMTUgMTkuNC0xOC4zIDMxLjFsLTI4LjYgMTAwYy0yLjQgOC40LS4xIDE3LjQgNi4xIDIzLjZzMTUuMiA4LjUgMjMuNiA2LjFsMTAwLTI4LjZjMTEuOC0zLjQgMjIuNS05LjcgMzEuMS0xOC4zTDQ4NyAxMzguOWMyOC4xLTI4LjEgMjguMS03My43IDAtMTAxLjhMNDc0LjkgMjVDNDQ2LjgtMy4xIDQwMS4yLTMuMSAzNzMuMSAyNXpNODggNjRDMzkuNCA2NCAwIDEwMy40IDAgMTUyVjQyNGMwIDQ4LjYgMzkuNCA4OCA4OCA4OEgzNjBjNDguNiAwIDg4LTM5LjQgODgtODhWMzEyYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjQyNGMwIDIyLjEtMTcuOSA0MC00MCA0MEg4OGMtMjIuMSAwLTQwLTE3LjktNDAtNDBWMTUyYzAtMjIuMSAxNy45LTQwIDQwLTQwSDIwMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnUmVjdGFuZ2xlTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2VjQxNmMwIDguOCA3LjIgMTYgMTYgMTZINTEyYzguOCAwIDE2LTcuMiAxNi0xNlY5NmMwLTguOC03LjItMTYtMTYtMTZINjR6TTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6bTk2IDY0YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTEwNCAwYzAtMTMuMyAxMC43LTI0IDI0LTI0SDQ0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0wIDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0SDQ0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0wIDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0SDQ0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0tNzItNjRhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0ek05NiAzNTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnUmVjdGFuZ2xlWG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgODBjLTguOCAwLTE2IDcuMi0xNiAxNlY0MTZjMCA4LjggNy4yIDE2IDE2IDE2SDQ0OGM4LjggMCAxNi03LjIgMTYtMTZWOTZjMC04LjgtNy4yLTE2LTE2LTE2SDY0ek0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2em0xNzUgNzljOS40LTkuNCAyNC42LTkuNCAzMy45IDBsNDcgNDcgNDctNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC00NyA0NyA0NyA0N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00Ny00Ny00NyA0N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0Ny00Ny00Ny00N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1JlZ2lzdGVyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ4YTIwOCAyMDggMCAxIDEgMCA0MTYgMjA4IDIwOCAwIDEgMSAwLTQxNnptMCA0NjRBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNjAgMTUyVjI2NHY5NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI4OGg2MC45bDM3LjIgODEuOWM1LjUgMTIuMSAxOS43IDE3LjQgMzEuOCAxMS45czE3LjQtMTkuNyAxMS45LTMxLjhMMzE1LjcgMjc1YzIxLjgtMTQuMyAzNi4zLTM5IDM2LjMtNjdjMC00NC4yLTM1LjgtODAtODAtODBIMTg0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptNDggODhWMTc2aDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU2hhcmVGcm9tU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAyNTUuNFYyNDAgMjA4YzAtOC44LTcuMi0xNi0xNi0xNkgzNTIgMzM2IDI4OS41Yy01MC45IDAtOTMuOSAzMy41LTEwOC4zIDc5LjZjLTMuMy05LjQtNS4yLTE5LjgtNS4yLTMxLjZjMC02MS45IDUwLjEtMTEyIDExMi0xMTJoNDggMTYgMzJjOC44IDAgMTYtNy4yIDE2LTE2VjgwIDY0LjZMNTA2IDE2MCA0MDAgMjU1LjR6TTMzNiAyNDBoMTZ2NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJoMy43YzcuOSAwIDE1LjUtMi45IDIxLjQtOC4ybDEzOS0xMjUuMWM3LjYtNi44IDExLjktMTYuNSAxMS45LTI2LjdzLTQuMy0xOS45LTExLjktMjYuN0w0MDkuOSA4LjlDNDAzLjUgMy4yIDM5NS4zIDAgMzg2LjcgMEMzNjcuNSAwIDM1MiAxNS41IDM1MiAzNC43VjgwSDMzNiAzMDQgMjg4Yy04OC40IDAtMTYwIDcxLjYtMTYwIDE2MGMwIDYwLjQgMzQuNiA5OS4xIDYzLjkgMTIwLjljNS45IDQuNCAxMS41IDguMSAxNi43IDExLjJjNC40IDIuNyA4LjUgNC45IDExLjkgNi42YzMuNCAxLjcgNi4yIDMgOC4yIDMuOWMyLjIgMSA0LjYgMS40IDcuMSAxLjRoMi41YzkuOCAwIDE3LjgtOCAxNy44LTE3LjhjMC03LjgtNS4zLTE0LjctMTEuNi0xOS41bDAgMGMtLjQtLjMtLjctLjUtMS4xLS44Yy0xLjctMS4xLTMuNC0yLjUtNS00LjFjLS44LS44LTEuNy0xLjYtMi41LTIuNnMtMS42LTEuOS0yLjQtMi45Yy0xLjgtMi41LTMuNS01LjMtNS04LjVjLTIuNi02LTQuMy0xMy4zLTQuMy0yMi40YzAtMzYuMSAyOS4zLTY1LjUgNjUuNS02NS41SDMwNGgzMnpNNzIgMzJDMzIuMiAzMiAwIDY0LjIgMCAxMDRWNDQwYzAgMzkuOCAzMi4yIDcyIDcyIDcySDQwOGMzOS44IDAgNzItMzIuMiA3Mi03MlYzNzZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRINzJjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjEwNGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg2NGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg3MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU25vd2ZsYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0VjcwLjFsMjMtMjNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC01NyA1N3Y3Ni41bDY2LjItMzguMiAyMC45LTc3LjhjMy40LTEyLjggMTYuNi0yMC40IDI5LjQtMTdzMjAuNCAxNi42IDE3IDI5LjRMMzczIDE0Mi4ybDM3LjEtMjEuNGMxMS41LTYuNiAyNi4yLTIuNyAzMi44IDguOHMyLjcgMjYuMi04LjggMzIuOEwzOTcgMTgzLjhsMzEuNSA4LjRjMTIuOCAzLjQgMjAuNCAxNi42IDE3IDI5LjRzLTE2LjYgMjAuNC0yOS40IDE3bC03Ny44LTIwLjlMMjcyIDI1Nmw2Ni4yIDM4LjIgNzcuOC0yMC45YzEyLjgtMy40IDI2IDQuMiAyOS40IDE3cy00LjIgMjYtMTcgMjkuNEwzOTcgMzI4LjJsMzcuMSAyMS40YzExLjUgNi42IDE1LjQgMjEuMyA4LjggMzIuOHMtMjEuMyAxNS40LTMyLjggOC44TDM3MyAzNjkuOGw4LjQgMzEuNWMzLjQgMTIuOC00LjIgMjYtMTcgMjkuNHMtMjYtNC4yLTI5LjQtMTdsLTIwLjktNzcuOEwyNDggMjk3LjZ2NzYuNWw1NyA1N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC0yMy0yM1Y0ODhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWNDQxLjlsLTIzIDIzYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDU3LTU3VjI5Ny42bC02Ni4yIDM4LjItMjAuOSA3Ny44Yy0zLjQgMTIuOC0xNi42IDIwLjQtMjkuNCAxN3MtMjAuNC0xNi42LTE3LTI5LjRMNzUgMzY5LjggMzcuOSAzOTEuMmMtMTEuNSA2LjYtMjYuMiAyLjctMzIuOC04LjhzLTIuNy0yNi4yIDguOC0zMi44TDUxIDMyOC4ybC0zMS41LTguNGMtMTIuOC0zLjQtMjAuNC0xNi42LTE3LTI5LjRzMTYuNi0yMC40IDI5LjQtMTdsNzcuOCAyMC45TDE3NiAyNTZsLTY2LjItMzguMkwzMS45IDIzOC42Yy0xMi44IDMuNC0yNi00LjItMjkuNC0xN3M0LjItMjYgMTctMjkuNEw1MSAxODMuOCAxMy45IDE2Mi40Yy0xMS41LTYuNi0xNS40LTIxLjMtOC44LTMyLjhzMjEuMy0xNS40IDMyLjgtOC44TDc1IDE0Mi4ybC04LjQtMzEuNWMtMy40LTEyLjggNC4yLTI2IDE3LTI5LjRzMjYgNC4yIDI5LjQgMTdsMjAuOSA3Ny44TDIwMCAyMTQuNFYxMzcuOUwxNDMgODFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwyMyAyM1YyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3F1YXJlQ2FyZXREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCA0MzJjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzIwYzAtOC44LTcuMi0xNi0xNi0xNkw2NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzIwYzAgOC44IDcuMiAxNiAxNiAxNmwzMjAgMHptNjQtMTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDMyMCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwek0yMjQgMzUyYy02LjcgMC0xMy0yLjgtMTcuNi03LjdsLTEwNC0xMTJjLTYuNS03LTguMi0xNy4yLTQuNC0yNS45czEyLjUtMTQuNCAyMi0xNC40bDIwOCAwYzkuNSAwIDE4LjIgNS43IDIyIDE0LjRzMi4xIDE4LjktNC40IDI1LjlsLTEwNCAxMTJjLTQuNSA0LjktMTAuOSA3LjctMTcuNiA3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NxdWFyZUNhcmV0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCA0MTZjMCA4LjggNy4yIDE2IDE2IDE2bDMyMCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyMGMwLTguOC03LjItMTYtMTYtMTZMNjQgODBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyMHptMTYgNjRjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzIwIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzMjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwem02NC0yMjRjMC02LjcgMi44LTEzIDcuNy0xNy42bDExMi0xMDRjNy02LjUgMTcuMi04LjIgMjUuOS00LjRzMTQuNCAxMi41IDE0LjQgMjJsMCAyMDhjMCA5LjUtNS43IDE4LjItMTQuNCAyMnMtMTguOSAyLjEtMjUuOS00LjRsLTExMi0xMDRjLTQuOS00LjUtNy43LTEwLjktNy43LTE3LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NxdWFyZUNhcmV0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDk2YzAtOC44LTcuMi0xNi0xNi0xNkw2NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzIwYzAgOC44IDcuMiAxNiAxNiAxNmwzMjAgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMjB6TTM4NCAzMmMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzIwIDB6TTMyMCAyNTZjMCA2LjctMi44IDEzLTcuNyAxNy42bC0xMTIgMTA0Yy03IDYuNS0xNy4yIDguMi0yNS45IDQuNHMtMTQuNC0xMi41LTE0LjQtMjJsMC0yMDhjMC05LjUgNS43LTE4LjIgMTQuNC0yMnMxOC45LTIuMSAyNS45IDQuNGwxMTIgMTA0YzQuOSA0LjUgNy43IDEwLjkgNy43IDE3LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NxdWFyZUNhcmV0VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgODBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyMGMwIDguOCA3LjIgMTYgMTYgMTZsMzIwIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzIwYzAtOC44LTcuMi0xNi0xNi0xNkw2NCA4MHpNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZ6bTIyNCA2NGM2LjcgMCAxMyAyLjggMTcuNiA3LjdsMTA0IDExMmM2LjUgNyA4LjIgMTcuMiA0LjQgMjUuOXMtMTIuNSAxNC40LTIyIDE0LjRsLTIwOCAwYy05LjUgMC0xOC4yLTUuNy0yMi0xNC40cy0yLjEtMTguOSA0LjQtMjUuOWwxMDQtMTEyYzQuNS00LjkgMTAuOS03LjcgMTcuNi03Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NxdWFyZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDgwYy04LjggMC0xNiA3LjItMTYgMTZWNDE2YzAgOC44IDcuMiAxNiAxNiAxNkgzODRjOC44IDAgMTYtNy4yIDE2LTE2Vjk2YzAtOC44LTcuMi0xNi0xNi0xNkg2NHpNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgzODRjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NnpNMzM3IDIwOUwyMDkgMzM3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtNjQtNjRjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw0NyA0N0wzMDMgMTc1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3F1YXJlRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgNDhWNDY0SDQ4VjQ4SDQ2NHpNNDggMEgwVjQ4IDQ2NHY0OEg0OCA0NjRoNDhWNDY0IDQ4IDBINDY0IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTcXVhcmVNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2VjQxNmMwIDguOCA3LjIgMTYgMTYgMTZIMzg0YzguOCAwIDE2LTcuMiAxNi0xNlY5NmMwLTguOC03LjItMTYtMTYtMTZINjR6TTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMzg0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6TTE1MiAyMzJIMjk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDE1MmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3F1YXJlUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2VjQxNmMwIDguOCA3LjIgMTYgMTYgMTZIMzg0YzguOCAwIDE2LTcuMiAxNi0xNlY5NmMwLTguOC03LjItMTYtMTYtMTZINjR6TTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMzg0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6TTIwMCAzNDRWMjgwSDEzNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg2NFYxNjhjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY2NGg2NGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNDh2NjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgODBjOC44IDAgMTYgNy4yIDE2IDE2VjQxNmMwIDguOC03LjIgMTYtMTYgMTZINjRjLTguOCAwLTE2LTcuMi0xNi0xNlY5NmMwLTguOCA3LjItMTYgMTYtMTZIMzg0ek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1N0YXJIYWxmU3Ryb2tlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwOS41IDEzLjVDMzA1LjUgNS4yIDI5Ny4xIDAgMjg3LjkgMHMtMTcuNiA1LjItMjEuNiAxMy41TDE5Ny43IDE1NC44IDQ0LjUgMTc3LjVjLTkgMS4zLTE2LjUgNy42LTE5LjMgMTYuM3MtLjUgMTguMSA1LjkgMjQuNUwxNDIuMiAzMjguNCAxMTYgNDgzLjljLTEuNSA5IDIuMiAxOC4xIDkuNyAyMy41czE3LjMgNiAyNS4zIDEuN2wxMzctNzMuMiAxMzcgNzMuMmM4LjEgNC4zIDE3LjkgMy43IDI1LjMtMS43czExLjItMTQuNSA5LjctMjMuNUw0MzMuNiAzMjguNCA1NDQuOCAyMTguMmM2LjUtNi40IDguNy0xNS45IDUuOS0yNC41cy0xMC4zLTE0LjktMTkuMy0xNi4zTDM3OC4xIDE1NC44IDMwOS41IDEzLjV6TTI4OCAzODQuN1Y3OS4xbDUyLjUgMTA4LjFjMy41IDcuMSAxMC4yIDEyLjEgMTguMSAxMy4zbDExOC4zIDE3LjVMMzkxIDMwM2MtNS41IDUuNS04LjEgMTMuMy02LjggMjFsMjAuMiAxMTkuNkwyOTkuMiAzODcuNWMtMy41LTEuOS03LjQtMi44LTExLjItMi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTdGFySGFsZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTMuMyAuNmMxMC45IDIuNSAxOC42IDEyLjIgMTguNiAyMy40VjQwOC43YzAgOC45LTQuOSAxNy0xMi43IDIxLjJMMTUxIDUwOS4xYy04LjEgNC4zLTE3LjkgMy43LTI1LjMtMS43cy0xMS4yLTE0LjUtOS43LTIzLjVsMjYuMi0xNTUuNkwzMS4xIDIxOC4zYy02LjUtNi40LTguNy0xNS45LTUuOS0yNC41czEwLjMtMTQuOSAxOS4zLTE2LjNsMTUzLjItMjIuNkwyNjYuMyAxMy41YzQuOS0xMC4xIDE2LjEtMTUuNCAyNy0xMi45ek0yNjMuOSAxMjguNGwtMjguNiA1OC44Yy0zLjUgNy4xLTEwLjIgMTIuMS0xOC4xIDEzLjNMOTkgMjE3LjkgMTg0LjkgMzAzYzUuNSA1LjUgOC4xIDEzLjMgNi44IDIxTDE3MS40IDQ0My43bDkyLjUtNDkuNFYxMjguNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3RhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODcuOSAwYzkuMiAwIDE3LjYgNS4yIDIxLjYgMTMuNWw2OC42IDE0MS4zIDE1My4yIDIyLjZjOSAxLjMgMTYuNSA3LjYgMTkuMyAxNi4zcy41IDE4LjEtNS45IDI0LjVMNDMzLjYgMzI4LjRsMjYuMiAxNTUuNmMxLjUgOS0yLjIgMTguMS05LjcgMjMuNXMtMTcuMyA2LTI1LjMgMS43bC0xMzctNzMuMkwxNTEgNTA5LjFjLTguMSA0LjMtMTcuOSAzLjctMjUuMy0xLjdzLTExLjItMTQuNS05LjctMjMuNWwyNi4yLTE1NS42TDMxLjEgMjE4LjJjLTYuNS02LjQtOC43LTE1LjktNS45LTI0LjVzMTAuMy0xNC45IDE5LjMtMTYuM2wxNTMuMi0yMi42TDI2Ni4zIDEzLjVDMjcwLjQgNS4yIDI3OC43IDAgMjg3LjkgMHptMCA3OUwyMzUuNCAxODcuMmMtMy41IDcuMS0xMC4yIDEyLjEtMTguMSAxMy4zTDk5IDIxNy45IDE4NC45IDMwM2M1LjUgNS41IDguMSAxMy4zIDYuOCAyMUwxNzEuNCA0NDMuN2wxMDUuMi01Ni4yYzcuMS0zLjggMTUuNi0zLjggMjIuNiAwbDEwNS4yIDU2LjJMMzg0LjIgMzI0LjFjLTEuMy03LjcgMS4yLTE1LjUgNi44LTIxbDg1LjktODUuMUwzNTguNiAyMDAuNWMtNy44LTEuMi0xNC42LTYuMS0xOC4xLTEzLjNMMjg3LjkgNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1N1biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzUuNyAxOS43Yy0xLjUtOC02LjktMTQuNy0xNC40LTE3LjhzLTE2LjEtMi4yLTIyLjggMi40TDI1NiA2MS4xIDE3My41IDQuMmMtNi43LTQuNi0xNS4zLTUuNS0yMi44LTIuNHMtMTIuOSA5LjgtMTQuNCAxNy44bC0xOC4xIDk4LjVMMTkuNyAxMzYuM2MtOCAxLjUtMTQuNyA2LjktMTcuOCAxNC40cy0yLjIgMTYuMSAyLjQgMjIuOEw2MS4xIDI1NiA0LjIgMzM4LjVjLTQuNiA2LjctNS41IDE1LjMtMi40IDIyLjhzOS44IDEzIDE3LjggMTQuNGw5OC41IDE4LjEgMTguMSA5OC41YzEuNSA4IDYuOSAxNC43IDE0LjQgMTcuOHMxNi4xIDIuMiAyMi44LTIuNEwyNTYgNDUwLjlsODIuNSA1Ni45YzYuNyA0LjYgMTUuMyA1LjUgMjIuOCAyLjRzMTIuOS05LjggMTQuNC0xNy44bDE4LjEtOTguNSA5OC41LTE4LjFjOC0xLjUgMTQuNy02LjkgMTcuOC0xNC40czIuMi0xNi4xLTIuNC0yMi44TDQ1MC45IDI1Nmw1Ni45LTgyLjVjNC42LTYuNyA1LjUtMTUuMyAyLjQtMjIuOHMtOS44LTEyLjktMTcuOC0xNC40bC05OC41LTE4LjFMMzc1LjcgMTkuN3pNMjY5LjYgMTEwbDY1LjYtNDUuMiAxNC40IDc4LjNjMS44IDkuOCA5LjUgMTcuNSAxOS4zIDE5LjNsNzguMyAxNC40TDQwMiAyNDIuNGMtNS43IDguMi01LjcgMTkgMCAyNy4ybDQ1LjIgNjUuNi03OC4zIDE0LjRjLTkuOCAxLjgtMTcuNSA5LjUtMTkuMyAxOS4zbC0xNC40IDc4LjNMMjY5LjYgNDAyYy04LjItNS43LTE5LTUuNy0yNy4yIDBsLTY1LjYgNDUuMi0xNC40LTc4LjNjLTEuOC05LjgtOS41LTE3LjUtMTkuMy0xOS4zTDY0LjggMzM1LjIgMTEwIDI2OS42YzUuNy04LjIgNS43LTE5IDAtMjcuMkw2NC44IDE3Ni44bDc4LjMtMTQuNGM5LjgtMS44IDE3LjUtOS41IDE5LjMtMTkuM2wxNC40LTc4LjNMMjQyLjQgMTEwYzguMiA1LjcgMTkgNS43IDI3LjIgMHpNMjU2IDM2OGExMTIgMTEyIDAgMSAwIDAtMjI0IDExMiAxMTIgMCAxIDAgMCAyMjR6TTE5MiAyNTZhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdUaHVtYnNEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMy44IDQ3Ny4yYy0zOC4yIDEwLjktNzguMS0xMS4yLTg5LTQ5LjRsLTUuNy0yMGMtMy43LTEzLTEwLjQtMjUtMTkuNS0zNWwtNTEuMy01Ni40Yy04LjktOS44LTguMi0yNSAxLjYtMzMuOXMyNS04LjIgMzMuOSAxLjZsNTEuMyA1Ni40YzE0LjEgMTUuNSAyNC40IDM0IDMwLjEgNTQuMWw1LjcgMjBjMy42IDEyLjcgMTYuOSAyMC4xIDI5LjcgMTYuNXMyMC4xLTE2LjkgMTYuNS0yOS43bC01LjctMjBjLTUuNy0xOS45LTE0LjctMzguNy0yNi42LTU1LjVjLTUuMi03LjMtNS44LTE2LjktMS43LTI0LjlzMTIuMy0xMyAyMS4zLTEzTDQ0OCAyODhjOC44IDAgMTYtNy4yIDE2LTE2YzAtNi44LTQuMy0xMi43LTEwLjQtMTVjLTcuNC0yLjgtMTMtOS0xNC45LTE2LjdzLjEtMTUuOCA1LjMtMjEuN2MyLjUtMi44IDQtNi41IDQtMTAuNmMwLTcuOC01LjYtMTQuMy0xMy0xNS43Yy04LjItMS42LTE1LjEtNy4zLTE4LTE1LjJzLTEuNi0xNi43IDMuNi0yMy4zYzIuMS0yLjcgMy40LTYuMSAzLjQtOS45YzAtNi43LTQuMi0xMi42LTEwLjItMTQuOWMtMTEuNS00LjUtMTcuNy0xNi45LTE0LjQtMjguOGMuNC0xLjMgLjYtMi44IC42LTQuM2MwLTguOC03LjItMTYtMTYtMTZIMjg2LjVjLTEyLjYgMC0yNSAzLjctMzUuNSAxMC43bC02MS43IDQxLjFjLTExIDcuNC0yNS45IDQuNC0zMy4zLTYuN3MtNC40LTI1LjkgNi43LTMzLjNsNjEuNy00MS4xYzE4LjQtMTIuMyA0MC0xOC44IDYyLjEtMTguOEgzODRjMzQuNyAwIDYyLjkgMjcuNiA2NCA2MmMxNC42IDExLjcgMjQgMjkuNyAyNCA1MGMwIDQuNS0uNSA4LjgtMS4zIDEzYzE1LjQgMTEuNyAyNS4zIDMwLjIgMjUuMyA1MWMwIDYuNS0xIDEyLjgtMi44IDE4LjdDNTA0LjggMjM4LjMgNTEyIDI1NC4zIDUxMiAyNzJjMCAzNS4zLTI4LjYgNjQtNjQgNjRsLTkyLjMgMGM0LjcgMTAuNCA4LjcgMjEuMiAxMS44IDMyLjJsNS43IDIwYzEwLjkgMzguMi0xMS4yIDc4LjEtNDkuNCA4OXpNMzIgMzg0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJIOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdUaHVtYnNVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjMuOCAzNC44Yy0zOC4yLTEwLjktNzguMSAxMS4yLTg5IDQ5LjRsLTUuNyAyMGMtMy43IDEzLTEwLjQgMjUtMTkuNSAzNWwtNTEuMyA1Ni40Yy04LjkgOS44LTguMiAyNSAxLjYgMzMuOXMyNSA4LjIgMzMuOS0xLjZsNTEuMy01Ni40YzE0LjEtMTUuNSAyNC40LTM0IDMwLjEtNTQuMWw1LjctMjBjMy42LTEyLjcgMTYuOS0yMC4xIDI5LjctMTYuNXMyMC4xIDE2LjkgMTYuNSAyOS43bC01LjcgMjBjLTUuNyAxOS45LTE0LjcgMzguNy0yNi42IDU1LjVjLTUuMiA3LjMtNS44IDE2LjktMS43IDI0LjlzMTIuMyAxMyAyMS4zIDEzTDQ0OCAyMjRjOC44IDAgMTYgNy4yIDE2IDE2YzAgNi44LTQuMyAxMi43LTEwLjQgMTVjLTcuNCAyLjgtMTMgOS0xNC45IDE2LjdzLjEgMTUuOCA1LjMgMjEuN2MyLjUgMi44IDQgNi41IDQgMTAuNmMwIDcuOC01LjYgMTQuMy0xMyAxNS43Yy04LjIgMS42LTE1LjEgNy4zLTE4IDE1LjJzLTEuNiAxNi43IDMuNiAyMy4zYzIuMSAyLjcgMy40IDYuMSAzLjQgOS45YzAgNi43LTQuMiAxMi42LTEwLjIgMTQuOWMtMTEuNSA0LjUtMTcuNyAxNi45LTE0LjQgMjguOGMuNCAxLjMgLjYgMi44IC42IDQuM2MwIDguOC03LjIgMTYtMTYgMTZIMjg2LjVjLTEyLjYgMC0yNS0zLjctMzUuNS0xMC43bC02MS43LTQxLjFjLTExLTcuNC0yNS45LTQuNC0zMy4zIDYuN3MtNC40IDI1LjkgNi43IDMzLjNsNjEuNyA0MS4xYzE4LjQgMTIuMyA0MCAxOC44IDYyLjEgMTguOEgzODRjMzQuNyAwIDYyLjktMjcuNiA2NC02MmMxNC42LTExLjcgMjQtMjkuNyAyNC01MGMwLTQuNS0uNS04LjgtMS4zLTEzYzE1LjQtMTEuNyAyNS4zLTMwLjIgMjUuMy01MWMwLTYuNS0xLTEyLjgtMi44LTE4LjdDNTA0LjggMjczLjcgNTEyIDI1Ny43IDUxMiAyNDBjMC0zNS4zLTI4LjYtNjQtNjQtNjRsLTkyLjMgMGM0LjctMTAuNCA4LjctMjEuMiAxMS44LTMyLjJsNS43LTIwYzEwLjktMzguMi0xMS4yLTc4LjEtNDkuNC04OXpNMzIgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJIOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdUcmFzaENhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzAuNSA1MS42TDE1MS41IDgwaDE0NWwtMTktMjguNGMtMS41LTIuMi00LTMuNi02LjctMy42SDE3Ny4xYy0yLjcgMC01LjIgMS4zLTYuNyAzLjZ6bTE0Ny0yNi42TDM1NC4yIDgwSDM2OGg0OCA4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0aC04VjQzMmMwIDQ0LjItMzUuOCA4MC04MCA4MEgxMTJjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjEyOEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRTMTAuNyA4MCAyNCA4MGg4SDgwIDkzLjhsMzYuNy01NS4xQzE0MC45IDkuNCAxNTguNCAwIDE3Ny4xIDBoOTMuN2MxOC43IDAgMzYuMiA5LjQgNDYuNiAyNC45ek04MCAxMjhWNDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDMzNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxMjhIODB6bTgwIDY0VjQwMGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYxOTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnptODAgMFY0MDBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMTkyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6bTgwIDBWNDAwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjE5MmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNCAxMjhhODAgODAgMCAxIDAgLTE2MCAwIDgwIDgwIDAgMSAwIDE2MCAwek05NiAxMjhhMTI4IDEyOCAwIDEgMSAyNTYgMEExMjggMTI4IDAgMSAxIDk2IDEyOHpNNDkuMyA0NjRIMzk4LjdjLTguOS02My4zLTYzLjMtMTEyLTEyOS0xMTJIMTc4LjNjLTY1LjcgMC0xMjAuMSA0OC43LTEyOSAxMTJ6TTAgNDgyLjNDMCAzODMuOCA3OS44IDMwNCAxNzguMyAzMDRoOTEuNEMzNjguMiAzMDQgNDQ4IDM4My44IDQ0OCA0ODIuM2MwIDE2LjQtMTMuMyAyOS43LTI5LjcgMjkuN0gyOS43QzEzLjMgNTEyIDAgNDk4LjcgMCA0ODIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnV2luZG93TWF4aW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjMgODkuNUMuMSA5MS42IDAgOTMuOCAwIDk2VjIyNCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjI0IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0Yy0yLjIgMC00LjQgLjEtNi41IC4zYy05LjIgLjktMTcuOCAzLjgtMjUuNSA4LjJDMjEuOCA0Ni41IDEzLjQgNTUuMSA3LjcgNjUuNWMtMy45IDcuMy02LjUgMTUuNC03LjQgMjR6TTQ4IDIyNEg0NjRsMCAxOTJjMCA4LjgtNy4yIDE2LTE2IDE2TDY0IDQzMmMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdXaW5kb3dNaW5pbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA0MzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINDg4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdXaW5kb3dSZXN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMiA0OEgyMDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjk2SDEyOFY4MGMwLTQ0LjIgMzUuOC04MCA4MC04MEg0MzJjNDQuMiAwIDgwIDM1LjggODAgODBWMzA0YzAgNDQuMi0zNS44IDgwLTgwIDgwSDQxNlYzMzZoMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWODBjMC0xNy43LTE0LjMtMzItMzItMzJ6TTQ4IDQ0OGMwIDguOCA3LjIgMTYgMTYgMTZIMzIwYzguOCAwIDE2LTcuMiAxNi0xNlYyNTZINDhWNDQ4ek02NCAxMjhIMzIwYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTkyYzAtMzUuMyAyOC43LTY0IDY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG4iLCJjb25zdCBjb3B5VG9DbGlwYm9hcmQgPSAodmFsdWVUb0NvcHksIHNldElzSnVzdENvcGllZCkgPT4ge1xuICBzZXRJc0p1c3RDb3BpZWQodHJ1ZSk7XG4gIG5hdmlnYXRvcj8uY2xpcGJvYXJkPy53cml0ZVRleHQodmFsdWVUb0NvcHkpLnRoZW4oKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKFwiQ29weSBTdWNjZXNzZnVsbFwiKTtcbiAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBDb3B5IHRleHQ6IFwiLCBlcnJvcik7XG4gICAgc2V0SXNKdXN0Q29waWVkKGZhbHNlKTtcbiAgfSk7XG4gIHNldFRpbWVvdXQoKCkgPT4gc2V0SXNKdXN0Q29waWVkKGZhbHNlKSwgNGUzKTtcbn07XG5cbmV4cG9ydCB7IGNvcHlUb0NsaXBib2FyZCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVscGVycy5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEZhQ2hlY2ssIEZhQ2xpcGJvYXJkTGlzdCB9IGZyb20gJ3JlYWN0LWljb25zL2ZhNic7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBjb3B5VG9DbGlwYm9hcmQgfSBmcm9tICcuL2hlbHBlcnMubWpzJztcblxuY29uc3QgQ2xpcGJvYXJkV2l0aEljb24gPSBmb3J3YXJkUmVmKFxuICAoeyB2YWx1ZVRvQ29weSwgaWNvbjogSWNvbiA9IEZhQ2xpcGJvYXJkTGlzdCwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIGNsYXNzTmFtZSwgLi4ucmVzdCB9LCByZWYpID0+IHtcbiAgICBjb25zdCBbaXNKdXN0Q29waWVkLCBzZXRJc0p1c3RDb3BpZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuY2xpcGJvYXJkLndpdGhJY29uLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImJ1dHRvblwiLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSxcbiAgICAgICAgb25DbGljazogKCkgPT4gY29weVRvQ2xpcGJvYXJkKHZhbHVlVG9Db3B5LCBzZXRJc0p1c3RDb3BpZWQpLFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgICByZWYsXG4gICAgICAgIGNoaWxkcmVuOiBpc0p1c3RDb3BpZWQgPyAvKiBAX19QVVJFX18gKi8ganN4KEZhQ2hlY2ssIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBjbGFzc05hbWU6IHRoZW1lLmljb24uc3VjY2Vzc0ljb24gfSkgOiAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBjbGFzc05hbWU6IHRoZW1lLmljb24uZGVmYXVsdEljb24gfSlcbiAgICAgIH1cbiAgICApO1xuICB9XG4pO1xuXG5leHBvcnQgeyBDbGlwYm9hcmRXaXRoSWNvbiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q2xpcGJvYXJkV2l0aEljb24ubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4LCBqc3hzIH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBGYUNoZWNrLCBGYUNsaXBib2FyZExpc3QgfSBmcm9tICdyZWFjdC1pY29ucy9mYTYnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgY29weVRvQ2xpcGJvYXJkIH0gZnJvbSAnLi9oZWxwZXJzLm1qcyc7XG5cbmNvbnN0IENsaXBib2FyZFdpdGhJY29uVGV4dCA9IGZvcndhcmRSZWYoXG4gICh7IHZhbHVlVG9Db3B5LCBpY29uOiBJY29uID0gRmFDbGlwYm9hcmRMaXN0LCBsYWJlbCA9IFwiQ29weVwiLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgY2xhc3NOYW1lLCAuLi5yZXN0IH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IFtpc0p1c3RDb3BpZWQsIHNldElzSnVzdENvcGllZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5jbGlwYm9hcmQud2l0aEljb25UZXh0LCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImJ1dHRvblwiLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSxcbiAgICAgICAgb25DbGljazogKCkgPT4gY29weVRvQ2xpcGJvYXJkKHZhbHVlVG9Db3B5LCBzZXRJc0p1c3RDb3BpZWQpLFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgICByZWYsXG4gICAgICAgIGNoaWxkcmVuOiBpc0p1c3RDb3BpZWQgPyAvKiBAX19QVVJFX18gKi8ganN4cyhcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLmxhYmVsLmJhc2UsIGNoaWxkcmVuOiBbXG4gICAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChGYUNoZWNrLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgY2xhc3NOYW1lOiB0aGVtZS5pY29uLnN1Y2Nlc3NJY29uIH0pLFxuICAgICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5sYWJlbC5zdWNjZXNzVGV4dCwgY2hpbGRyZW46IFwiQ29waWVkXCIgfSlcbiAgICAgICAgXSB9KSA6IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUubGFiZWwuYmFzZSwgY2hpbGRyZW46IFtcbiAgICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBjbGFzc05hbWU6IHRoZW1lLmljb24uZGVmYXVsdEljb24gfSksXG4gICAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLmxhYmVsLmRlZmF1bHRUZXh0LCBjaGlsZHJlbjogbGFiZWwgfSlcbiAgICAgICAgXSB9KVxuICAgICAgfVxuICAgICk7XG4gIH1cbik7XG5cbmV4cG9ydCB7IENsaXBib2FyZFdpdGhJY29uVGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q2xpcGJvYXJkV2l0aEljb25UZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJy4uL1Rvb2x0aXAvVG9vbHRpcC5tanMnO1xuaW1wb3J0IHsgQ2xpcGJvYXJkV2l0aEljb24gfSBmcm9tICcuL0NsaXBib2FyZFdpdGhJY29uLm1qcyc7XG5pbXBvcnQgeyBDbGlwYm9hcmRXaXRoSWNvblRleHQgfSBmcm9tICcuL0NsaXBib2FyZFdpdGhJY29uVGV4dC5tanMnO1xuaW1wb3J0IHsgY29weVRvQ2xpcGJvYXJkIH0gZnJvbSAnLi9oZWxwZXJzLm1qcyc7XG5cbmNvbnN0IENsaXBib2FyZENvbXBvbmVudCA9IGZvcndhcmRSZWYoXG4gICh7IGNsYXNzTmFtZSwgdmFsdWVUb0NvcHksIGxhYmVsLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucmVzdCB9LCByZWYpID0+IHtcbiAgICBjb25zdCBbaXNKdXN0Q29waWVkLCBzZXRJc0p1c3RDb3BpZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuY2xpcGJvYXJkLmJ1dHRvbiwgY3VzdG9tVGhlbWUpO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFRvb2x0aXAsIHsgY29udGVudDogaXNKdXN0Q29waWVkID8gXCJDb3BpZWRcIiA6IFwiQ29weSB0byBjbGlwYm9hcmRcIiwgY2xhc3NOYW1lOiBcIlsmXypdOmN1cnNvci1wb2ludGVyXCIsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgXCJidXR0b25cIixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IGNvcHlUb0NsaXBib2FyZCh2YWx1ZVRvQ29weSwgc2V0SXNKdXN0Q29waWVkKSxcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgICAgcmVmLFxuICAgICAgICBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLmxhYmVsLCBjaGlsZHJlbjogbGFiZWwgfSlcbiAgICAgIH1cbiAgICApIH0pO1xuICB9XG4pO1xuQ2xpcGJvYXJkQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJDbGlwYm9hcmRcIjtcbkNsaXBib2FyZFdpdGhJY29uLmRpc3BsYXlOYW1lID0gXCJDbGlwYm9hcmQuV2l0aEljb25cIjtcbkNsaXBib2FyZFdpdGhJY29uVGV4dC5kaXNwbGF5TmFtZSA9IFwiQ2xpcGJvYXJkLldpdGhJY29uVGV4dFwiO1xuY29uc3QgQ2xpcGJvYXJkID0gT2JqZWN0LmFzc2lnbihDbGlwYm9hcmRDb21wb25lbnQsIHtcbiAgV2l0aEljb246IENsaXBib2FyZFdpdGhJY29uLFxuICBXaXRoSWNvblRleHQ6IENsaXBib2FyZFdpdGhJY29uVGV4dFxufSk7XG5cbmV4cG9ydCB7IENsaXBib2FyZCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q2xpcGJvYXJkLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgSGVscGVyVGV4dCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGNvbG9yID0gXCJkZWZhdWx0XCIsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICB2YWx1ZSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5oZWxwZXJUZXh0LCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwicFwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmJhc2UsIHRoZW1lLnJvb3QuY29sb3JzW2NvbG9yXSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuOiB2YWx1ZSA/PyBjaGlsZHJlbiA/PyBcIlwiIH0pO1xufTtcbkhlbHBlclRleHQuZGlzcGxheU5hbWUgPSBcIkhlbHBlclRleHRcIjtcblxuZXhwb3J0IHsgSGVscGVyVGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SGVscGVyVGV4dC5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBGcmFnbWVudCwganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IEhlbHBlclRleHQgfSBmcm9tICcuLi9IZWxwZXJUZXh0L0hlbHBlclRleHQubWpzJztcblxuY29uc3QgVGV4dElucHV0ID0gZm9yd2FyZFJlZihcbiAgKHtcbiAgICBhZGRvbixcbiAgICBjbGFzc05hbWUsXG4gICAgY29sb3IgPSBcImdyYXlcIixcbiAgICBoZWxwZXJUZXh0LFxuICAgIGljb246IEljb24sXG4gICAgcmlnaHRJY29uOiBSaWdodEljb24sXG4gICAgc2hhZG93LFxuICAgIHNpemluZyA9IFwibWRcIixcbiAgICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgICB0eXBlID0gXCJ0ZXh0XCIsXG4gICAgLi4ucHJvcHNcbiAgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS50ZXh0SW5wdXQsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiBbXG4gICAgICAgIGFkZG9uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5hZGRvbiwgY2hpbGRyZW46IGFkZG9uIH0pLFxuICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUuZmllbGQuYmFzZSwgY2hpbGRyZW46IFtcbiAgICAgICAgICBJY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmZpZWxkLmljb24uYmFzZSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goSWNvbiwgeyBjbGFzc05hbWU6IHRoZW1lLmZpZWxkLmljb24uc3ZnIH0pIH0pLFxuICAgICAgICAgIFJpZ2h0SWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgXCJkYXRhLXRlc3RpZFwiOiBcInJpZ2h0LWljb25cIiwgY2xhc3NOYW1lOiB0aGVtZS5maWVsZC5yaWdodEljb24uYmFzZSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goUmlnaHRJY29uLCB7IGNsYXNzTmFtZTogdGhlbWUuZmllbGQucmlnaHRJY29uLnN2ZyB9KSB9KSxcbiAgICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgICAgXCJpbnB1dFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgICAgICAgdGhlbWUuZmllbGQuaW5wdXQuYmFzZSxcbiAgICAgICAgICAgICAgICB0aGVtZS5maWVsZC5pbnB1dC5jb2xvcnNbY29sb3JdLFxuICAgICAgICAgICAgICAgIHRoZW1lLmZpZWxkLmlucHV0LnNpemVzW3NpemluZ10sXG4gICAgICAgICAgICAgICAgdGhlbWUuZmllbGQuaW5wdXQud2l0aEljb25bSWNvbiA/IFwib25cIiA6IFwib2ZmXCJdLFxuICAgICAgICAgICAgICAgIHRoZW1lLmZpZWxkLmlucHV0LndpdGhSaWdodEljb25bUmlnaHRJY29uID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgICAgICAgdGhlbWUuZmllbGQuaW5wdXQud2l0aEFkZG9uW2FkZG9uID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgICAgICAgdGhlbWUuZmllbGQuaW5wdXQud2l0aFNoYWRvd1tzaGFkb3cgPyBcIm9uXCIgOiBcIm9mZlwiXVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgICAgICAgcmVmXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICBdIH0pXG4gICAgICBdIH0pLFxuICAgICAgaGVscGVyVGV4dCAmJiAvKiBAX19QVVJFX18gKi8ganN4KEhlbHBlclRleHQsIHsgY29sb3IsIGNoaWxkcmVuOiBoZWxwZXJUZXh0IH0pXG4gICAgXSB9KTtcbiAgfVxuKTtcblRleHRJbnB1dC5kaXNwbGF5TmFtZSA9IFwiVGV4dElucHV0XCI7XG5cbmV4cG9ydCB7IFRleHRJbnB1dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGV4dElucHV0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IERhdGVwaWNrZXJDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuZnVuY3Rpb24gdXNlRGF0ZVBpY2tlckNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERhdGVwaWNrZXJDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlRGF0ZVBpY2tlckNvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBEYXRlUGlja2VyQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IERhdGVwaWNrZXJDb250ZXh0LCB1c2VEYXRlUGlja2VyQ29udGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGF0ZXBpY2tlckNvbnRleHQubWpzLm1hcFxuIiwidmFyIFZpZXdzID0gLyogQF9fUFVSRV9fICovICgoVmlld3MyKSA9PiB7XG4gIFZpZXdzMltWaWV3czJbXCJEYXlzXCJdID0gMF0gPSBcIkRheXNcIjtcbiAgVmlld3MyW1ZpZXdzMltcIk1vbnRoc1wiXSA9IDFdID0gXCJNb250aHNcIjtcbiAgVmlld3MyW1ZpZXdzMltcIlllYXJzXCJdID0gMl0gPSBcIlllYXJzXCI7XG4gIFZpZXdzMltWaWV3czJbXCJEZWNhZGVzXCJdID0gM10gPSBcIkRlY2FkZXNcIjtcbiAgcmV0dXJuIFZpZXdzMjtcbn0pKFZpZXdzIHx8IHt9KTtcbnZhciBXZWVrU3RhcnQgPSAvKiBAX19QVVJFX18gKi8gKChXZWVrU3RhcnQyKSA9PiB7XG4gIFdlZWtTdGFydDJbV2Vla1N0YXJ0MltcIlN1bmRheVwiXSA9IDBdID0gXCJTdW5kYXlcIjtcbiAgV2Vla1N0YXJ0MltXZWVrU3RhcnQyW1wiTW9uZGF5XCJdID0gMV0gPSBcIk1vbmRheVwiO1xuICBXZWVrU3RhcnQyW1dlZWtTdGFydDJbXCJUdWVzZGF5XCJdID0gMl0gPSBcIlR1ZXNkYXlcIjtcbiAgV2Vla1N0YXJ0MltXZWVrU3RhcnQyW1wiV2VkbmVzZGF5XCJdID0gM10gPSBcIldlZG5lc2RheVwiO1xuICBXZWVrU3RhcnQyW1dlZWtTdGFydDJbXCJUaHVyc2RheVwiXSA9IDRdID0gXCJUaHVyc2RheVwiO1xuICBXZWVrU3RhcnQyW1dlZWtTdGFydDJbXCJGcmlkYXlcIl0gPSA1XSA9IFwiRnJpZGF5XCI7XG4gIFdlZWtTdGFydDJbV2Vla1N0YXJ0MltcIlNhdHVyZGF5XCJdID0gNl0gPSBcIlNhdHVyZGF5XCI7XG4gIHJldHVybiBXZWVrU3RhcnQyO1xufSkoV2Vla1N0YXJ0IHx8IHt9KTtcbmNvbnN0IGlzRGF0ZUluUmFuZ2UgPSAoZGF0ZSwgbWluRGF0ZSwgbWF4RGF0ZSkgPT4ge1xuICBjb25zdCBkYXRlVGltZSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSkuZ2V0VGltZSgpO1xuICBpZiAobWluRGF0ZSAmJiBtYXhEYXRlKSB7XG4gICAgY29uc3QgbWluRGF0ZVRpbWUgPSBuZXcgRGF0ZShtaW5EYXRlLmdldEZ1bGxZZWFyKCksIG1pbkRhdGUuZ2V0TW9udGgoKSwgbWluRGF0ZS5nZXREYXRlKCkpLmdldFRpbWUoKTtcbiAgICBjb25zdCBtYXhEYXRlVGltZSA9IG5ldyBEYXRlKG1heERhdGUuZ2V0RnVsbFllYXIoKSwgbWF4RGF0ZS5nZXRNb250aCgpLCBtYXhEYXRlLmdldERhdGUoKSkuZ2V0VGltZSgpO1xuICAgIHJldHVybiBkYXRlVGltZSA+PSBtaW5EYXRlVGltZSAmJiBkYXRlVGltZSA8PSBtYXhEYXRlVGltZTtcbiAgfVxuICBpZiAobWluRGF0ZSkge1xuICAgIGNvbnN0IG1pbkRhdGVUaW1lID0gbmV3IERhdGUobWluRGF0ZS5nZXRGdWxsWWVhcigpLCBtaW5EYXRlLmdldE1vbnRoKCksIG1pbkRhdGUuZ2V0RGF0ZSgpKS5nZXRUaW1lKCk7XG4gICAgcmV0dXJuIGRhdGVUaW1lID49IG1pbkRhdGVUaW1lO1xuICB9XG4gIGlmIChtYXhEYXRlKSB7XG4gICAgY29uc3QgbWF4RGF0ZVRpbWUgPSBuZXcgRGF0ZShtYXhEYXRlLmdldEZ1bGxZZWFyKCksIG1heERhdGUuZ2V0TW9udGgoKSwgbWF4RGF0ZS5nZXREYXRlKCkpLmdldFRpbWUoKTtcbiAgICByZXR1cm4gZGF0ZVRpbWUgPD0gbWF4RGF0ZVRpbWU7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuY29uc3QgaXNEYXRlRXF1YWwgPSAoZGF0ZSwgc2VsZWN0ZWREYXRlKSA9PiB7XG4gIGRhdGUgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpO1xuICBzZWxlY3RlZERhdGUgPSBuZXcgRGF0ZShzZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKSwgc2VsZWN0ZWREYXRlLmdldE1vbnRoKCksIHNlbGVjdGVkRGF0ZS5nZXREYXRlKCkpO1xuICByZXR1cm4gZGF0ZS5nZXRUaW1lKCkgPT09IHNlbGVjdGVkRGF0ZS5nZXRUaW1lKCk7XG59O1xuY29uc3QgZ2V0Rmlyc3REYXRlSW5SYW5nZSA9IChkYXRlLCBtaW5EYXRlLCBtYXhEYXRlKSA9PiB7XG4gIGlmICghaXNEYXRlSW5SYW5nZShkYXRlLCBtaW5EYXRlLCBtYXhEYXRlKSkge1xuICAgIGlmIChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB7XG4gICAgICBkYXRlID0gbWluRGF0ZTtcbiAgICB9IGVsc2UgaWYgKG1heERhdGUgJiYgZGF0ZSA+IG1heERhdGUpIHtcbiAgICAgIGRhdGUgPSBtYXhEYXRlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0ZTtcbn07XG5jb25zdCBnZXRGaXJzdERheU9mVGhlTW9udGggPSAoZGF0ZSwgd2Vla1N0YXJ0KSA9PiB7XG4gIGNvbnN0IGZpcnN0RGF5T2ZNb250aCA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCAxKTtcbiAgY29uc3QgZGF5T2ZXZWVrID0gZmlyc3REYXlPZk1vbnRoLmdldERheSgpO1xuICBsZXQgZGlmZiA9IGRheU9mV2VlayAtIHdlZWtTdGFydDtcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIHJldHVybiBhZGREYXlzKGZpcnN0RGF5T2ZNb250aCwgLWRpZmYpO1xufTtcbmNvbnN0IGdldFdlZWtEYXlzID0gKGxhbmcsIHdlZWtTdGFydCkgPT4ge1xuICBjb25zdCB3ZWVrZGF5cyA9IFtdO1xuICBjb25zdCBkYXRlID0gLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKDApO1xuICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSBkYXRlLmdldERheSgpICsgd2Vla1N0YXJ0KTtcbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobGFuZywgeyB3ZWVrZGF5OiBcInNob3J0XCIgfSk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgd2Vla2RheXMucHVzaChmb3JtYXR0ZXIuZm9ybWF0KGFkZERheXMoZGF0ZSwgaSkpKTtcbiAgfVxuICByZXR1cm4gd2Vla2RheXM7XG59O1xuY29uc3QgYWRkRGF5cyA9IChkYXRlLCBhbW91bnQpID0+IHtcbiAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICBuZXdEYXRlLnNldERhdGUobmV3RGF0ZS5nZXREYXRlKCkgKyBhbW91bnQpO1xuICByZXR1cm4gbmV3RGF0ZTtcbn07XG5jb25zdCBhZGRNb250aHMgPSAoZGF0ZSwgYW1vdW50KSA9PiB7XG4gIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZShkYXRlKTtcbiAgbmV3RGF0ZS5zZXRNb250aChuZXdEYXRlLmdldE1vbnRoKCkgKyBhbW91bnQpO1xuICByZXR1cm4gbmV3RGF0ZTtcbn07XG5jb25zdCBhZGRZZWFycyA9IChkYXRlLCBhbW91bnQpID0+IHtcbiAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICBuZXdEYXRlLnNldEZ1bGxZZWFyKG5ld0RhdGUuZ2V0RnVsbFllYXIoKSArIGFtb3VudCk7XG4gIHJldHVybiBuZXdEYXRlO1xufTtcbmNvbnN0IGdldEZvcm1hdHRlZERhdGUgPSAobGFuZ3VhZ2UsIGRhdGUsIG9wdGlvbnMpID0+IHtcbiAgbGV0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgIGRheTogXCJudW1lcmljXCIsXG4gICAgbW9udGg6IFwibG9uZ1wiLFxuICAgIHllYXI6IFwibnVtZXJpY1wiXG4gIH07XG4gIGlmIChvcHRpb25zKSB7XG4gICAgZGVmYXVsdE9wdGlvbnMgPSBvcHRpb25zO1xuICB9XG4gIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsYW5ndWFnZSwgZGVmYXVsdE9wdGlvbnMpLmZvcm1hdChkYXRlKTtcbn07XG5jb25zdCBzdGFydE9mWWVhclBlcmlvZCA9IChkYXRlLCB5ZWFycykgPT4ge1xuICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICByZXR1cm4gTWF0aC5mbG9vcih5ZWFyIC8geWVhcnMpICogeWVhcnM7XG59O1xuY29uc3QgaXNEYXRlSW5EZWNhZGUgPSAoZGF0ZSwgc3RhcnRZZWFyKSA9PiB7XG4gIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIGNvbnN0IGVuZFllYXIgPSBzdGFydFllYXIgKyA5O1xuICByZXR1cm4geWVhciA+PSBzdGFydFllYXIgJiYgeWVhciA8PSBlbmRZZWFyO1xufTtcblxuZXhwb3J0IHsgVmlld3MsIFdlZWtTdGFydCwgYWRkRGF5cywgYWRkTW9udGhzLCBhZGRZZWFycywgZ2V0Rmlyc3REYXRlSW5SYW5nZSwgZ2V0Rmlyc3REYXlPZlRoZU1vbnRoLCBnZXRGb3JtYXR0ZWREYXRlLCBnZXRXZWVrRGF5cywgaXNEYXRlRXF1YWwsIGlzRGF0ZUluRGVjYWRlLCBpc0RhdGVJblJhbmdlLCBzdGFydE9mWWVhclBlcmlvZCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVscGVycy5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBGcmFnbWVudCwganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlRGF0ZVBpY2tlckNvbnRleHQgfSBmcm9tICcuLi9EYXRlcGlja2VyQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgZ2V0V2Vla0RheXMsIGdldEZpcnN0RGF5T2ZUaGVNb250aCwgYWRkRGF5cywgZ2V0Rm9ybWF0dGVkRGF0ZSwgaXNEYXRlRXF1YWwsIGlzRGF0ZUluUmFuZ2UgfSBmcm9tICcuLi9oZWxwZXJzLm1qcyc7XG5cbmNvbnN0IERhdGVwaWNrZXJWaWV3c0RheXMgPSAoeyB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICB0aGVtZTogcm9vdFRoZW1lLFxuICAgIHdlZWtTdGFydCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gICAgdmlld0RhdGUsXG4gICAgc2VsZWN0ZWREYXRlLFxuICAgIGNoYW5nZVNlbGVjdGVkRGF0ZSxcbiAgICBsYW5ndWFnZVxuICB9ID0gdXNlRGF0ZVBpY2tlckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLnZpZXdzLmRheXMsIGN1c3RvbVRoZW1lKTtcbiAgY29uc3Qgd2Vla0RheXMgPSBnZXRXZWVrRGF5cyhsYW5ndWFnZSwgd2Vla1N0YXJ0KTtcbiAgY29uc3Qgc3RhcnREYXRlID0gZ2V0Rmlyc3REYXlPZlRoZU1vbnRoKHZpZXdEYXRlLCB3ZWVrU3RhcnQpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtcbiAgICAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5oZWFkZXIuYmFzZSwgY2hpbGRyZW46IHdlZWtEYXlzLm1hcCgoZGF5LCBpbmRleCkgPT4gLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLmhlYWRlci50aXRsZSwgY2hpbGRyZW46IGRheSB9LCBpbmRleCkpIH0pLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLml0ZW1zLmJhc2UsIGNoaWxkcmVuOiBbLi4uQXJyYXkoNDIpXS5tYXAoKF9kYXRlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudERhdGUgPSBhZGREYXlzKHN0YXJ0RGF0ZSwgaW5kZXgpO1xuICAgICAgY29uc3QgZGF5ID0gZ2V0Rm9ybWF0dGVkRGF0ZShsYW5ndWFnZSwgY3VycmVudERhdGUsIHsgZGF5OiBcIm51bWVyaWNcIiB9KTtcbiAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBzZWxlY3RlZERhdGUgJiYgaXNEYXRlRXF1YWwoc2VsZWN0ZWREYXRlLCBjdXJyZW50RGF0ZSk7XG4gICAgICBjb25zdCBpc0Rpc2FibGVkID0gIWlzRGF0ZUluUmFuZ2UoY3VycmVudERhdGUsIG1pbkRhdGUsIG1heERhdGUpO1xuICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBkaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICAgIHRoZW1lLml0ZW1zLml0ZW0uYmFzZSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQgJiYgdGhlbWUuaXRlbXMuaXRlbS5zZWxlY3RlZCxcbiAgICAgICAgICAgIGlzRGlzYWJsZWQgJiYgdGhlbWUuaXRlbXMuaXRlbS5kaXNhYmxlZFxuICAgICAgICAgICksXG4gICAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHJldHVybjtcbiAgICAgICAgICAgIGNoYW5nZVNlbGVjdGVkRGF0ZShjdXJyZW50RGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjaGlsZHJlbjogZGF5XG4gICAgICAgIH0sXG4gICAgICAgIGluZGV4XG4gICAgICApO1xuICAgIH0pIH0pXG4gIF0gfSk7XG59O1xuXG5leHBvcnQgeyBEYXRlcGlja2VyVmlld3NEYXlzIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EYXlzLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZURhdGVQaWNrZXJDb250ZXh0IH0gZnJvbSAnLi4vRGF0ZXBpY2tlckNvbnRleHQubWpzJztcbmltcG9ydCB7IHN0YXJ0T2ZZZWFyUGVyaW9kLCBhZGRZZWFycywgaXNEYXRlSW5EZWNhZGUsIGlzRGF0ZUluUmFuZ2UsIFZpZXdzIH0gZnJvbSAnLi4vaGVscGVycy5tanMnO1xuXG5jb25zdCBEYXRlcGlja2VyVmlld3NEZWNhZGVzID0gKHsgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30gfSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUsIHZpZXdEYXRlLCBzZWxlY3RlZERhdGUsIG1pbkRhdGUsIG1heERhdGUsIHNldFZpZXdEYXRlLCBzZXRWaWV3IH0gPSB1c2VEYXRlUGlja2VyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUudmlld3MuZGVjYWRlcywgY3VzdG9tVGhlbWUpO1xuICBjb25zdCBmaXJzdCA9IHN0YXJ0T2ZZZWFyUGVyaW9kKHZpZXdEYXRlLCAxMDApO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUuaXRlbXMuYmFzZSwgY2hpbGRyZW46IFsuLi5BcnJheSgxMildLm1hcCgoX3llYXIsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgeWVhciA9IGZpcnN0IC0gMTAgKyBpbmRleCAqIDEwO1xuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZSh2aWV3RGF0ZS5nZXRUaW1lKCkpO1xuICAgIG5ld0RhdGUuc2V0RnVsbFllYXIoeWVhciArIHZpZXdEYXRlLmdldEZ1bGxZZWFyKCkgJSAxMCk7XG4gICAgY29uc3QgZmlyc3REYXRlID0gbmV3IERhdGUoeWVhciwgMCwgMSk7XG4gICAgY29uc3QgbGFzdERhdGUgPSBhZGRZZWFycyhmaXJzdERhdGUsIDkpO1xuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBzZWxlY3RlZERhdGUgJiYgaXNEYXRlSW5EZWNhZGUoc2VsZWN0ZWREYXRlLCB5ZWFyKTtcbiAgICBjb25zdCBpc0Rpc2FibGVkID0gIWlzRGF0ZUluUmFuZ2UoZmlyc3REYXRlLCBtaW5EYXRlLCBtYXhEYXRlKSAmJiAhaXNEYXRlSW5SYW5nZShsYXN0RGF0ZSwgbWluRGF0ZSwgbWF4RGF0ZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImJ1dHRvblwiLFxuICAgICAge1xuICAgICAgICBkaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgIHRoZW1lLml0ZW1zLml0ZW0uYmFzZSxcbiAgICAgICAgICBpc1NlbGVjdGVkICYmIHRoZW1lLml0ZW1zLml0ZW0uc2VsZWN0ZWQsXG4gICAgICAgICAgaXNEaXNhYmxlZCAmJiB0aGVtZS5pdGVtcy5pdGVtLmRpc2FibGVkXG4gICAgICAgICksXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICBpZiAoaXNEaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgICAgIHNlbGVjdGVkRGF0ZSAmJiBzZXRWaWV3RGF0ZShhZGRZZWFycyh2aWV3RGF0ZSwgeWVhciAtIHNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpKSk7XG4gICAgICAgICAgc2V0VmlldyhWaWV3cy5ZZWFycyk7XG4gICAgICAgIH0sXG4gICAgICAgIGNoaWxkcmVuOiB5ZWFyXG4gICAgICB9LFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9KSB9KTtcbn07XG5cbmV4cG9ydCB7IERhdGVwaWNrZXJWaWV3c0RlY2FkZXMgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURlY2FkZXMubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlRGF0ZVBpY2tlckNvbnRleHQgfSBmcm9tICcuLi9EYXRlcGlja2VyQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgZ2V0Rm9ybWF0dGVkRGF0ZSwgaXNEYXRlRXF1YWwsIGlzRGF0ZUluUmFuZ2UsIFZpZXdzIH0gZnJvbSAnLi4vaGVscGVycy5tanMnO1xuXG5jb25zdCBEYXRlcGlja2VyVmlld3NNb250aCA9ICh7IHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9IH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHRoZW1lOiByb290VGhlbWUsXG4gICAgbWluRGF0ZSxcbiAgICBtYXhEYXRlLFxuICAgIHNlbGVjdGVkRGF0ZSxcbiAgICB2aWV3RGF0ZSxcbiAgICBsYW5ndWFnZSxcbiAgICBzZXRWaWV3RGF0ZSxcbiAgICBzZXRWaWV3XG4gIH0gPSB1c2VEYXRlUGlja2VyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUudmlld3MubW9udGhzLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5pdGVtcy5iYXNlLCBjaGlsZHJlbjogWy4uLkFycmF5KDEyKV0ubWFwKChfbW9udGgsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgbmV3RGF0ZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpO1xuICAgIG5ld0RhdGUuc2V0TW9udGgoaW5kZXgsIDEpO1xuICAgIG5ld0RhdGUuc2V0RnVsbFllYXIodmlld0RhdGUuZ2V0RnVsbFllYXIoKSk7XG4gICAgY29uc3QgbW9udGggPSBnZXRGb3JtYXR0ZWREYXRlKGxhbmd1YWdlLCBuZXdEYXRlLCB7IG1vbnRoOiBcInNob3J0XCIgfSk7XG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IHNlbGVjdGVkRGF0ZSAmJiBpc0RhdGVFcXVhbChzZWxlY3RlZERhdGUsIG5ld0RhdGUpO1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSAhaXNEYXRlSW5SYW5nZShuZXdEYXRlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwiYnV0dG9uXCIsXG4gICAgICB7XG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgdGhlbWUuaXRlbXMuaXRlbS5iYXNlLFxuICAgICAgICAgIGlzU2VsZWN0ZWQgJiYgdGhlbWUuaXRlbXMuaXRlbS5zZWxlY3RlZCxcbiAgICAgICAgICBpc0Rpc2FibGVkICYmIHRoZW1lLml0ZW1zLml0ZW0uZGlzYWJsZWRcbiAgICAgICAgKSxcbiAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgIGlmIChpc0Rpc2FibGVkKSByZXR1cm47XG4gICAgICAgICAgc2V0Vmlld0RhdGUobmV3RGF0ZSk7XG4gICAgICAgICAgc2V0VmlldyhWaWV3cy5EYXlzKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2hpbGRyZW46IG1vbnRoXG4gICAgICB9LFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9KSB9KTtcbn07XG5cbmV4cG9ydCB7IERhdGVwaWNrZXJWaWV3c01vbnRoIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Nb250aHMubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlRGF0ZVBpY2tlckNvbnRleHQgfSBmcm9tICcuLi9EYXRlcGlja2VyQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgc3RhcnRPZlllYXJQZXJpb2QsIGlzRGF0ZUVxdWFsLCBpc0RhdGVJblJhbmdlLCBWaWV3cyB9IGZyb20gJy4uL2hlbHBlcnMubWpzJztcblxuY29uc3QgRGF0ZXBpY2tlclZpZXdzWWVhcnMgPSAoeyB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSB9KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgc2VsZWN0ZWREYXRlLCBtaW5EYXRlLCBtYXhEYXRlLCB2aWV3RGF0ZSwgc2V0Vmlld0RhdGUsIHNldFZpZXcgfSA9IHVzZURhdGVQaWNrZXJDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS52aWV3cy55ZWFycywgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUuaXRlbXMuYmFzZSwgY2hpbGRyZW46IFsuLi5BcnJheSgxMildLm1hcCgoX3llYXIsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgZmlyc3QgPSBzdGFydE9mWWVhclBlcmlvZCh2aWV3RGF0ZSwgMTApO1xuICAgIGNvbnN0IHllYXIgPSBmaXJzdCArIGluZGV4O1xuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZSh2aWV3RGF0ZS5nZXRUaW1lKCkpO1xuICAgIG5ld0RhdGUuc2V0RnVsbFllYXIoeWVhcik7XG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IHNlbGVjdGVkRGF0ZSAmJiBpc0RhdGVFcXVhbChzZWxlY3RlZERhdGUsIG5ld0RhdGUpO1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSAhaXNEYXRlSW5SYW5nZShuZXdEYXRlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwiYnV0dG9uXCIsXG4gICAgICB7XG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgdGhlbWUuaXRlbXMuaXRlbS5iYXNlLFxuICAgICAgICAgIGlzU2VsZWN0ZWQgJiYgdGhlbWUuaXRlbXMuaXRlbS5zZWxlY3RlZCxcbiAgICAgICAgICBpc0Rpc2FibGVkICYmIHRoZW1lLml0ZW1zLml0ZW0uZGlzYWJsZWRcbiAgICAgICAgKSxcbiAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgIGlmIChpc0Rpc2FibGVkKSByZXR1cm47XG4gICAgICAgICAgc2V0Vmlld0RhdGUobmV3RGF0ZSk7XG4gICAgICAgICAgc2V0VmlldyhWaWV3cy5Nb250aHMpO1xuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogeWVhclxuICAgICAgfSxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfSkgfSk7XG59O1xuXG5leHBvcnQgeyBEYXRlcGlja2VyVmlld3NZZWFycyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9WWVhcnMubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4LCBqc3hzIH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiwgdXNlTWVtbywgdXNlU3RhdGUsIHVzZVJlZiwgdXNlSW1wZXJhdGl2ZUhhbmRsZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSGlDYWxlbmRhciwgSGlBcnJvd0xlZnQsIEhpQXJyb3dSaWdodCB9IGZyb20gJ3JlYWN0LWljb25zL2hpJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IFRleHRJbnB1dCB9IGZyb20gJy4uL1RleHRJbnB1dC9UZXh0SW5wdXQubWpzJztcbmltcG9ydCB7IERhdGVwaWNrZXJDb250ZXh0IH0gZnJvbSAnLi9EYXRlcGlja2VyQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgZ2V0Rmlyc3REYXRlSW5SYW5nZSwgVmlld3MsIGlzRGF0ZUVxdWFsLCBnZXRGb3JtYXR0ZWREYXRlLCBXZWVrU3RhcnQsIHN0YXJ0T2ZZZWFyUGVyaW9kLCBhZGRZZWFycywgYWRkTW9udGhzIH0gZnJvbSAnLi9oZWxwZXJzLm1qcyc7XG5pbXBvcnQgeyBEYXRlcGlja2VyVmlld3NEYXlzIH0gZnJvbSAnLi9WaWV3cy9EYXlzLm1qcyc7XG5pbXBvcnQgeyBEYXRlcGlja2VyVmlld3NEZWNhZGVzIH0gZnJvbSAnLi9WaWV3cy9EZWNhZGVzLm1qcyc7XG5pbXBvcnQgeyBEYXRlcGlja2VyVmlld3NNb250aCB9IGZyb20gJy4vVmlld3MvTW9udGhzLm1qcyc7XG5pbXBvcnQgeyBEYXRlcGlja2VyVmlld3NZZWFycyB9IGZyb20gJy4vVmlld3MvWWVhcnMubWpzJztcblxuY29uc3QgRGF0ZXBpY2tlclJlbmRlciA9ICh7XG4gIHRpdGxlLFxuICBvcGVuLFxuICBpbmxpbmUgPSBmYWxzZSxcbiAgYXV0b0hpZGUgPSB0cnVlLFxuICAvLyBIaWRlIHdoZW4gc2VsZWN0ZWQgdGhlIGRheVxuICBzaG93Q2xlYXJCdXR0b24gPSB0cnVlLFxuICBsYWJlbENsZWFyQnV0dG9uID0gXCJDbGVhclwiLFxuICBzaG93VG9kYXlCdXR0b24gPSB0cnVlLFxuICBsYWJlbFRvZGF5QnV0dG9uID0gXCJUb2RheVwiLFxuICBkZWZhdWx0VmFsdWUsXG4gIG1pbkRhdGUsXG4gIG1heERhdGUsXG4gIGxhbmd1YWdlID0gXCJlblwiLFxuICB3ZWVrU3RhcnQgPSBXZWVrU3RhcnQuU3VuZGF5LFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICBvbkNoYW5nZSxcbiAgbGFiZWwsXG4gIHZhbHVlLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuZGF0ZXBpY2tlciwgY3VzdG9tVGhlbWUpO1xuICBjb25zdCBpbml0aWFsRGF0ZSA9IGRlZmF1bHRWYWx1ZSA/IGdldEZpcnN0RGF0ZUluUmFuZ2UoZGVmYXVsdFZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKSA6IG51bGw7XG4gIGNvbnN0IGVmZmVjdGl2ZURlZmF1bHRWaWV3ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSA/IGdldEZpcnN0RGF0ZUluUmFuZ2UoZGVmYXVsdFZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKSA6IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpO1xuICB9LCBbXSk7XG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShvcGVuKTtcbiAgY29uc3QgW3ZpZXcsIHNldFZpZXddID0gdXNlU3RhdGUoVmlld3MuRGF5cyk7XG4gIGNvbnN0IFtzZWxlY3RlZERhdGUsIHNldFNlbGVjdGVkRGF0ZV0gPSB1c2VTdGF0ZSh2YWx1ZSA/PyBpbml0aWFsRGF0ZSk7XG4gIGNvbnN0IFt2aWV3RGF0ZSwgc2V0Vmlld0RhdGVdID0gdXNlU3RhdGUodmFsdWUgPz8gZWZmZWN0aXZlRGVmYXVsdFZpZXcpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgZGF0ZXBpY2tlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgY2hhbmdlU2VsZWN0ZWREYXRlID0gKGRhdGUsIHVzZUF1dG9oaWRlKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWREYXRlKGRhdGUpO1xuICAgIGlmICgoZGF0ZSA9PT0gbnVsbCB8fCBkYXRlKSAmJiBvbkNoYW5nZSkge1xuICAgICAgb25DaGFuZ2UoZGF0ZSk7XG4gICAgfVxuICAgIGlmIChhdXRvSGlkZSAmJiB2aWV3ID09PSBWaWV3cy5EYXlzICYmIHVzZUF1dG9oaWRlID09IHRydWUgJiYgIWlubGluZSkge1xuICAgICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGNsZWFyRGF0ZSA9ICgpID0+IHtcbiAgICBjaGFuZ2VTZWxlY3RlZERhdGUoaW5pdGlhbERhdGUsIHRydWUpO1xuICAgIGlmIChkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHNldFZpZXdEYXRlKGRlZmF1bHRWYWx1ZSk7XG4gICAgfVxuICB9O1xuICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4gKHtcbiAgICBmb2N1cygpIHtcbiAgICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgfSxcbiAgICBjbGVhcigpIHtcbiAgICAgIGNsZWFyRGF0ZSgpO1xuICAgIH1cbiAgfSkpO1xuICBjb25zdCByZW5kZXJWaWV3ID0gKHR5cGUpID0+IHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgVmlld3MuRGVjYWRlczpcbiAgICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRGF0ZXBpY2tlclZpZXdzRGVjYWRlcywgeyB0aGVtZTogdGhlbWUudmlld3MuZGVjYWRlcyB9KTtcbiAgICAgIGNhc2UgVmlld3MuWWVhcnM6XG4gICAgICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KERhdGVwaWNrZXJWaWV3c1llYXJzLCB7IHRoZW1lOiB0aGVtZS52aWV3cy55ZWFycyB9KTtcbiAgICAgIGNhc2UgVmlld3MuTW9udGhzOlxuICAgICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChEYXRlcGlja2VyVmlld3NNb250aCwgeyB0aGVtZTogdGhlbWUudmlld3MubW9udGhzIH0pO1xuICAgICAgY2FzZSBWaWV3cy5EYXlzOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRGF0ZXBpY2tlclZpZXdzRGF5cywgeyB0aGVtZTogdGhlbWUudmlld3MuZGF5cyB9KTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGdldE5leHRWaWV3ID0gKCkgPT4ge1xuICAgIHN3aXRjaCAodmlldykge1xuICAgICAgY2FzZSBWaWV3cy5EYXlzOlxuICAgICAgICByZXR1cm4gVmlld3MuTW9udGhzO1xuICAgICAgY2FzZSBWaWV3cy5Nb250aHM6XG4gICAgICAgIHJldHVybiBWaWV3cy5ZZWFycztcbiAgICAgIGNhc2UgVmlld3MuWWVhcnM6XG4gICAgICAgIHJldHVybiBWaWV3cy5EZWNhZGVzO1xuICAgIH1cbiAgICByZXR1cm4gdmlldztcbiAgfTtcbiAgY29uc3QgZ2V0Vmlld1RpdGxlID0gKCkgPT4ge1xuICAgIHN3aXRjaCAodmlldykge1xuICAgICAgY2FzZSBWaWV3cy5EZWNhZGVzOlxuICAgICAgICByZXR1cm4gYCR7c3RhcnRPZlllYXJQZXJpb2Qodmlld0RhdGUsIDEwMCkgLSAxMH0gLSAke3N0YXJ0T2ZZZWFyUGVyaW9kKHZpZXdEYXRlLCAxMDApICsgMTAwfWA7XG4gICAgICBjYXNlIFZpZXdzLlllYXJzOlxuICAgICAgICByZXR1cm4gYCR7c3RhcnRPZlllYXJQZXJpb2Qodmlld0RhdGUsIDEwKX0gLSAke3N0YXJ0T2ZZZWFyUGVyaW9kKHZpZXdEYXRlLCAxMCkgKyAxMX1gO1xuICAgICAgY2FzZSBWaWV3cy5Nb250aHM6XG4gICAgICAgIHJldHVybiBnZXRGb3JtYXR0ZWREYXRlKGxhbmd1YWdlLCB2aWV3RGF0ZSwgeyB5ZWFyOiBcIm51bWVyaWNcIiB9KTtcbiAgICAgIGNhc2UgVmlld3MuRGF5czpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBnZXRGb3JtYXR0ZWREYXRlKGxhbmd1YWdlLCB2aWV3RGF0ZSwgeyBtb250aDogXCJsb25nXCIsIHllYXI6IFwibnVtZXJpY1wiIH0pO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZ2V0Vmlld0RhdGVQYWdlID0gKHZpZXcyLCBkYXRlLCB2YWx1ZTIpID0+IHtcbiAgICBzd2l0Y2ggKHZpZXcyKSB7XG4gICAgICBjYXNlIFZpZXdzLkRheXM6XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShhZGRNb250aHMoZGF0ZSwgdmFsdWUyKSk7XG4gICAgICBjYXNlIFZpZXdzLk1vbnRoczpcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGFkZFllYXJzKGRhdGUsIHZhbHVlMikpO1xuICAgICAgY2FzZSBWaWV3cy5ZZWFyczpcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGFkZFllYXJzKGRhdGUsIHZhbHVlMiAqIDEwKSk7XG4gICAgICBjYXNlIFZpZXdzLkRlY2FkZXM6XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShhZGRZZWFycyhkYXRlLCB2YWx1ZTIgKiAxMDApKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShhZGRZZWFycyhkYXRlLCB2YWx1ZTIgKiAxMCkpO1xuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGNsaWNrZWRJbnNpZGVEYXRlcGlja2VyID0gZGF0ZXBpY2tlclJlZj8uY3VycmVudD8uY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgIGNvbnN0IGNsaWNrZWRJbnNpZGVJbnB1dCA9IGlucHV0UmVmPy5jdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgaWYgKCFjbGlja2VkSW5zaWRlRGF0ZXBpY2tlciAmJiAhY2xpY2tlZEluc2lkZUlucHV0KSB7XG4gICAgICAgIHNldElzT3BlbihmYWxzZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIGhhbmRsZUNsaWNrT3V0c2lkZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgaGFuZGxlQ2xpY2tPdXRzaWRlKTtcbiAgICB9O1xuICB9LCBbaW5wdXRSZWYsIGRhdGVwaWNrZXJSZWYsIHNldElzT3Blbl0pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVmZmVjdGl2ZVZhbHVlID0gdmFsdWUgJiYgZ2V0Rmlyc3REYXRlSW5SYW5nZShuZXcgRGF0ZSh2YWx1ZSksIG1pbkRhdGUsIG1heERhdGUpO1xuICAgIGNvbnN0IGVmZmVjdGl2ZVNlbGVjdGVkRGF0ZSA9IHNlbGVjdGVkRGF0ZSAmJiBnZXRGaXJzdERhdGVJblJhbmdlKG5ldyBEYXRlKHNlbGVjdGVkRGF0ZSksIG1pbkRhdGUsIG1heERhdGUpO1xuICAgIGlmIChlZmZlY3RpdmVTZWxlY3RlZERhdGUgJiYgZWZmZWN0aXZlVmFsdWUgJiYgIWlzRGF0ZUVxdWFsKGVmZmVjdGl2ZVZhbHVlLCBlZmZlY3RpdmVTZWxlY3RlZERhdGUpKSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGUoZWZmZWN0aXZlVmFsdWUpO1xuICAgIH1cbiAgICBpZiAoc2VsZWN0ZWREYXRlID09IG51bGwpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0ZShpbml0aWFsRGF0ZSk7XG4gICAgfVxuICB9LCBbdmFsdWUsIHNldFNlbGVjdGVkRGF0ZSwgc2V0Vmlld0RhdGUsIHNlbGVjdGVkRGF0ZV0pO1xuICBjb25zdCBkaXNwbGF5VmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IGxhYmVsIDogZ2V0Rm9ybWF0dGVkRGF0ZShsYW5ndWFnZSwgc2VsZWN0ZWREYXRlIHx8IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgRGF0ZXBpY2tlckNvbnRleHQuUHJvdmlkZXIsXG4gICAge1xuICAgICAgdmFsdWU6IHtcbiAgICAgICAgdGhlbWUsXG4gICAgICAgIGxhbmd1YWdlLFxuICAgICAgICBtaW5EYXRlLFxuICAgICAgICBtYXhEYXRlLFxuICAgICAgICB3ZWVrU3RhcnQsXG4gICAgICAgIGlzT3BlbixcbiAgICAgICAgc2V0SXNPcGVuLFxuICAgICAgICB2aWV3LFxuICAgICAgICBzZXRWaWV3LFxuICAgICAgICB2aWV3RGF0ZSxcbiAgICAgICAgc2V0Vmlld0RhdGUsXG4gICAgICAgIHNlbGVjdGVkRGF0ZSxcbiAgICAgICAgc2V0U2VsZWN0ZWREYXRlLFxuICAgICAgICBjaGFuZ2VTZWxlY3RlZERhdGVcbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCBjbGFzc05hbWUpLCBjaGlsZHJlbjogW1xuICAgICAgICAhaW5saW5lICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgVGV4dElucHV0LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRoZW1lOiB0aGVtZS5yb290LmlucHV0LFxuICAgICAgICAgICAgaWNvbjogSGlDYWxlbmRhcixcbiAgICAgICAgICAgIHJlZjogaW5wdXRSZWYsXG4gICAgICAgICAgICBvbkZvY3VzOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChzZWxlY3RlZERhdGUgJiYgIWlzRGF0ZUVxdWFsKHZpZXdEYXRlLCBzZWxlY3RlZERhdGUpKSB7XG4gICAgICAgICAgICAgICAgc2V0Vmlld0RhdGUoc2VsZWN0ZWREYXRlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZXRJc09wZW4odHJ1ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmFsdWU6IGRpc3BsYXlWYWx1ZSxcbiAgICAgICAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBpbml0aWFsRGF0ZSA/IGdldEZvcm1hdHRlZERhdGUobGFuZ3VhZ2UsIGluaXRpYWxEYXRlKSA6IGxhYmVsLFxuICAgICAgICAgICAgLi4ucHJvcHNcbiAgICAgICAgICB9XG4gICAgICAgICksXG4gICAgICAgIChpc09wZW4gfHwgaW5saW5lKSAmJiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgcmVmOiBkYXRlcGlja2VyUmVmLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucG9wdXAucm9vdC5iYXNlLCBpbmxpbmUgJiYgdGhlbWUucG9wdXAucm9vdC5pbmxpbmUpLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLnBvcHVwLnJvb3QuaW5uZXIsIGNoaWxkcmVuOiBbXG4gICAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLnBvcHVwLmhlYWRlci5iYXNlLCBjaGlsZHJlbjogW1xuICAgICAgICAgICAgdGl0bGUgJiYgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUucG9wdXAuaGVhZGVyLnRpdGxlLCBjaGlsZHJlbjogdGl0bGUgfSksXG4gICAgICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUucG9wdXAuaGVhZGVyLnNlbGVjdG9ycy5iYXNlLCBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICAgICAgICAgICAgdGhlbWUucG9wdXAuaGVhZGVyLnNlbGVjdG9ycy5idXR0b24uYmFzZSxcbiAgICAgICAgICAgICAgICAgICAgdGhlbWUucG9wdXAuaGVhZGVyLnNlbGVjdG9ycy5idXR0b24ucHJldlxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHNldFZpZXdEYXRlKGdldFZpZXdEYXRlUGFnZSh2aWV3LCB2aWV3RGF0ZSwgLTEpKSxcbiAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KEhpQXJyb3dMZWZ0LCB7fSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgICAgICAgICB0aGVtZS5wb3B1cC5oZWFkZXIuc2VsZWN0b3JzLmJ1dHRvbi5iYXNlLFxuICAgICAgICAgICAgICAgICAgICB0aGVtZS5wb3B1cC5oZWFkZXIuc2VsZWN0b3JzLmJ1dHRvbi52aWV3XG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgb25DbGljazogKCkgPT4gc2V0VmlldyhnZXROZXh0VmlldygpKSxcbiAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBnZXRWaWV3VGl0bGUoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICAgICAgICBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lLnBvcHVwLmhlYWRlci5zZWxlY3RvcnMuYnV0dG9uLmJhc2UsXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lLnBvcHVwLmhlYWRlci5zZWxlY3RvcnMuYnV0dG9uLm5leHRcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiBzZXRWaWV3RGF0ZShnZXRWaWV3RGF0ZVBhZ2Uodmlldywgdmlld0RhdGUsIDEpKSxcbiAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KEhpQXJyb3dSaWdodCwge30pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdIH0pXG4gICAgICAgICAgXSB9KSxcbiAgICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5wb3B1cC52aWV3LmJhc2UsIGNoaWxkcmVuOiByZW5kZXJWaWV3KHZpZXcpIH0pLFxuICAgICAgICAgIChzaG93Q2xlYXJCdXR0b24gfHwgc2hvd1RvZGF5QnV0dG9uKSAmJiAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUucG9wdXAuZm9vdGVyLmJhc2UsIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICBzaG93VG9kYXlCdXR0b24gJiYgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnBvcHVwLmZvb3Rlci5idXR0b24uYmFzZSwgdGhlbWUucG9wdXAuZm9vdGVyLmJ1dHRvbi50b2RheSksXG4gICAgICAgICAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdG9kYXkgPSAvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgICAgIGNoYW5nZVNlbGVjdGVkRGF0ZSh0b2RheSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICBzZXRWaWV3RGF0ZSh0b2RheSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogbGFiZWxUb2RheUJ1dHRvblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc2hvd0NsZWFyQnV0dG9uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5wb3B1cC5mb290ZXIuYnV0dG9uLmJhc2UsIHRoZW1lLnBvcHVwLmZvb3Rlci5idXR0b24uY2xlYXIpLFxuICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNoYW5nZVNlbGVjdGVkRGF0ZShudWxsLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBsYWJlbENsZWFyQnV0dG9uXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIClcbiAgICAgICAgICBdIH0pXG4gICAgICAgIF0gfSkgfSlcbiAgICAgIF0gfSlcbiAgICB9XG4gICk7XG59O1xuY29uc3QgRGF0ZXBpY2tlciA9IGZvcndhcmRSZWYoRGF0ZXBpY2tlclJlbmRlcik7XG5EYXRlcGlja2VyLmRpc3BsYXlOYW1lID0gXCJEYXRlcGlja2VyXCI7XG5cbmV4cG9ydCB7IERhdGVwaWNrZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURhdGVwaWNrZXIubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgRHJhd2VyQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQodm9pZCAwKTtcbmZ1bmN0aW9uIHVzZURyYXdlckNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERyYXdlckNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VEcmF3ZXJDb250ZXh0IHNob3VsZCBiZSB1c2VkIHdpdGhpbiB0aGUgRHJhd2VyQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IERyYXdlckNvbnRleHQsIHVzZURyYXdlckNvbnRleHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyYXdlckNvbnRleHQubWpzLm1hcFxuIiwiLy8gVEhJUyBGSUxFIElTIEFVVE8gR0VORVJBVEVEXG5pbXBvcnQgeyBHZW5JY29uIH0gZnJvbSAnLi4vbGliL2luZGV4Lm1qcyc7XG5leHBvcnQgZnVuY3Rpb24gTWQxMjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE1SDUuNXYtNC41SDRWOWgzdjZ6bTYuNS0xLjVoLTN2LTFoMmMuNTUgMCAxLS40NSAxLTFWMTBjMC0uNTUtLjQ1LTEtMS0xSDl2MS41aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxVjE1aDQuNXYtMS41em02IC41di00YzAtLjU1LS40NS0xLTEtMUgxNXYxLjVoM3YxaC0ydjFoMnYxaC0zVjE1aDMuNWMuNTUgMCAxLS40NSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDNkUm90YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUyIDIxLjQ4QTEwLjQ4NyAxMC40ODcgMCAwIDEgMS41NSAxM0guMDVDLjU2IDE5LjE2IDUuNzEgMjQgMTIgMjRsLjY2LS4wMy0zLjgxLTMuODEtMS4zMyAxLjMyem0uODktNi41MmMtLjE5IDAtLjM3LS4wMy0uNTItLjA4YTEuMDcgMS4wNyAwIDAgMS0uNC0uMjRjLS4xMS0uMS0uMi0uMjItLjI2LS4zNy0uMDYtLjE0LS4wOS0uMy0uMDktLjQ3aC0xLjNjMCAuMzYuMDcuNjguMjEuOTUuMTQuMjcuMzMuNS41Ni42OS4yNC4xOC41MS4zMi44Mi40MS4zLjEuNjIuMTUuOTYuMTUuMzcgMCAuNzItLjA1IDEuMDMtLjE1LjMyLS4xLjYtLjI1LjgzLS40NHMuNDItLjQzLjU1LS43MmMuMTMtLjI5LjItLjYxLjItLjk3IDAtLjE5LS4wMi0uMzgtLjA3LS41NmExLjY3IDEuNjcgMCAwIDAtLjIzLS41MWMtLjEtLjE2LS4yNC0uMy0uNC0uNDMtLjE3LS4xMy0uMzctLjIzLS42MS0uMzFhMi4wOTggMi4wOTggMCAwIDAgLjg5LS43NWMuMS0uMTUuMTctLjMuMjItLjQ2LjA1LS4xNi4wNy0uMzIuMDctLjQ4IDAtLjM2LS4wNi0uNjgtLjE4LS45NmExLjc4IDEuNzggMCAwIDAtLjUxLS42OWMtLjItLjE5LS40Ny0uMzMtLjc3LS40M0M5LjEgOC4wNSA4Ljc2IDggOC4zOSA4Yy0uMzYgMC0uNjkuMDUtMSAuMTYtLjMuMTEtLjU3LjI2LS43OS40NS0uMjEuMTktLjM4LjQxLS41MS42Ny0uMTIuMjYtLjE4LjU0LS4xOC44NWgxLjNjMC0uMTcuMDMtLjMyLjA5LS40NXMuMTQtLjI1LjI1LS4zNGMuMTEtLjA5LjIzLS4xNy4zOC0uMjIuMTUtLjA1LjMtLjA4LjQ4LS4wOC40IDAgLjcuMS44OS4zMS4xOS4yLjI5LjQ5LjI5Ljg2IDAgLjE4LS4wMy4zNC0uMDguNDlhLjg3Ljg3IDAgMCAxLS4yNS4zN2MtLjExLjEtLjI1LjE4LS40MS4yNC0uMTYuMDYtLjM2LjA5LS41OC4wOUg3LjV2MS4wM2guNzdjLjIyIDAgLjQyLjAyLjYuMDdzLjMzLjEzLjQ1LjIzYy4xMi4xMS4yMi4yNC4yOS40LjA3LjE2LjEuMzUuMS41NyAwIC40MS0uMTIuNzItLjM1LjkzLS4yMy4yMy0uNTUuMzMtLjk1LjMzem04LjU1LTUuOTJjLS4zMi0uMzMtLjctLjU5LTEuMTQtLjc3LS40My0uMTgtLjkyLS4yNy0xLjQ2LS4yN0gxMnY4aDIuM2MuNTUgMCAxLjA2LS4wOSAxLjUxLS4yNy40NS0uMTguODQtLjQzIDEuMTYtLjc2LjMyLS4zMy41Ny0uNzMuNzQtMS4xOS4xNy0uNDcuMjYtLjk5LjI2LTEuNTd2LS40YzAtLjU4LS4wOS0xLjEtLjI2LTEuNTctLjE4LS40Ny0uNDMtLjg3LS43NS0xLjJ6bS0uMzkgMy4xNmMwIC40Mi0uMDUuNzktLjE0IDEuMTMtLjEuMzMtLjI0LjYyLS40My44NS0uMTkuMjMtLjQzLjQxLS43MS41My0uMjkuMTItLjYyLjE4LS45OS4xOGgtLjkxVjkuMTJoLjk3Yy43MiAwIDEuMjcuMjMgMS42NC42OS4zOC40Ni41NyAxLjEyLjU3IDEuOTl2LjR6TTEyIDBsLS42Ni4wMyAzLjgxIDMuODEgMS4zMy0xLjMzYzMuMjcgMS41NSA1LjYxIDQuNzIgNS45NiA4LjQ4aDEuNUMyMy40NCA0Ljg0IDE4LjI5IDAgMTIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWJjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTFoLTEuNXYtLjVoLTJ2M2gyVjEzSDIxdjFjMCAuNTUtLjQ1IDEtMSAxaC0zYy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MXpNOCAxMHY1SDYuNXYtMS41aC0yVjE1SDN2LTVjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF6bS0xLjUuNWgtMlYxMmgydi0xLjV6bTcgMS41Yy41NSAwIDEgLjQ1IDEgMXYxYzAgLjU1LS40NSAxLTEgMWgtNFY5aDRjLjU1IDAgMSAuNDUgMSAxdjFjMCAuNTUtLjQ1IDEtMSAxek0xMSAxMC41di43NWgydi0uNzVoLTJ6bTIgMi4yNWgtMnYuNzVoMnYtLjc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY2Nlc3NpYmlsaXR5TmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSA2Yy0yLjYxLjctNS42NyAxLTguNSAxcy01Ljg5LS4zLTguNS0xTDMgOGMxLjg2LjUgNCAuODMgNiAxdjEzaDJ2LTZoMnY2aDJWOWMyLS4xNyA0LjE0LS41IDYtMWwtLjUtMnpNMTIgNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFjY2Vzc2liaWxpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptOSA3aC02djEzaC0ydi02aC0ydjZIOVY5SDNWN2gxOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY2Nlc3NpYmxlRm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTdcIixcImN5XCI6XCI0LjU0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDE3aC0yYzAgMS42NS0xLjM1IDMtMyAzcy0zLTEuMzUtMy0zIDEuMzUtMyAzLTN2LTJjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNXptMy0zLjVoLTEuODZsMS42Ny0zLjY3QzE3LjQyIDguNSAxNi40NCA3IDE0Ljk2IDdoLTUuMmMtLjgxIDAtMS41NC40Ny0xLjg3IDEuMkw3LjIyIDEwbDEuOTIuNTNMOS43OSA5SDEybC0xLjgzIDQuMWMtLjYgMS4zMy4zOSAyLjkgMS44NSAyLjlIMTd2NWgydi01LjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFjY2Vzc2libGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxM3YtMmMtMS41NC4wMi0zLjA5LS43NS00LjA3LTEuODNsLTEuMjktMS40M2MtLjE3LS4xOS0uMzgtLjM0LS42MS0uNDUtLjAxIDAtLjAxLS4wMS0uMDItLjAxSDEzYy0uMzUtLjItLjc1LS4zLTEuMTktLjI2QzEwLjc2IDcuMTEgMTAgOC4wNCAxMCA5LjA5VjE1YzAgMS4xLjkgMiAyIDJoNXY1aDJ2LTUuNWMwLTEuMS0uOS0yLTItMmgtM3YtMy40NWMxLjI5IDEuMDcgMy4yNSAxLjk0IDUgMS45NXptLTYuMTcgNWMtLjQxIDEuMTYtMS41MiAyLTIuODMgMi0xLjY2IDAtMy0xLjM0LTMtMyAwLTEuMzEuODQtMi40MSAyLTIuODNWMTIuMWE1IDUgMCAxIDAgNS45IDUuOWgtMi4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWNjb3VudEJhbGFuY2VXYWxsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxOHYxYzAgMS4xLS45IDItMiAySDVhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMTRjMS4xIDAgMiAuOSAyIDJ2MWgtOWEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmg5em0tOS0yaDEwVjhIMTJ2OHptNC0yLjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY2NvdW50QmFsYW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTBoM3Y3SDR6TTEwLjUgMTBoM3Y3aC0zek0yIDE5aDIwdjNIMnpNMTcgMTBoM3Y3aC0zek0xMiAxIDIgNnYyaDIwVjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFjY291bnRCb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgM2MxLjkzIDAgMy41IDEuNTcgMy41IDMuNVMxMy45MyAxMyAxMiAxM3MtMy41LTEuNTctMy41LTMuNVMxMC4wNyA2IDEyIDZ6bTcgMTNINXYtLjIzYzAtLjYyLjI4LTEuMi43Ni0xLjU4QzcuNDcgMTUuODIgOS42NCAxNSAxMiAxNXM0LjUzLjgyIDYuMjQgMi4xOWMuNDguMzguNzYuOTcuNzYgMS41OFYxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWNjb3VudENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgNGMxLjkzIDAgMy41IDEuNTcgMy41IDMuNVMxMy45MyAxMyAxMiAxM3MtMy41LTEuNTctMy41LTMuNVMxMC4wNyA2IDEyIDZ6bTAgMTRjLTIuMDMgMC00LjQzLS44Mi02LjE0LTIuODhhOS45NDcgOS45NDcgMCAwIDEgMTIuMjggMEMxNi40MyAxOS4xOCAxNC4wMyAyMCAxMiAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDEwdi0ySDR2LTZoMThWNmMwLTEuMTEtLjg5LTItMi0yem0wIDRINFY2aDE2djJ6bTQgOXYyaC0zdjNoLTJ2LTNoLTN2LTJoM3YtM2gydjNoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDExYy43IDAgMS4zNy4xIDIgLjI5VjlsLTgtNi04IDZ2MTJoNy42OEE2Ljk5NSA2Ljk5NSAwIDAgMSAxOCAxMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0zIDUuNWgtMi41VjIxaC0xdi0yLjVIMTV2LTFoMi41VjE1aDF2Mi41SDIxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZFNob3BwaW5nQ2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTE4LjMxIDYtMi43NiA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA5aDJWNmgzVjRoLTNWMWgtMnYzSDh2MmgzdjN6bS00IDljLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6bTEwIDBjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyIDItLjkgMi0yLS45LTItMi0yem0tOS44My0zLjI1LjAzLS4xMi45LTEuNjNoNy40NWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNsMy44Ni03LjAxTDE5LjQyIDRoLS4wMWwtMS4xIDItMi43NiA1SDguNTNsLS4xMy0uMjdMNi4xNiA2bC0uOTUtMi0uOTQtMkgxdjJoMmwzLjYgNy41OS0xLjM1IDIuNDVjLS4xNi4yOC0uMjUuNjEtLjI1Ljk2IDAgMS4xLjkgMiAyIDJoMTJ2LTJINy40MmMtLjEzIDAtLjI1LS4xMS0uMjUtLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRUYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNS4xOCAxMC41OSAxNi42bC00LjI0LTQuMjQgMS40MS0xLjQxIDIuODMgMi44MyAxMC0xMEwyMiA1LjE4ek0xMiAyMGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOGMxLjU3IDAgMy4wNC40NiA0LjI4IDEuMjVsMS40NS0xLjQ1QTEwLjAyIDEwLjAyIDAgMCAwIDEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTBjMS43MyAwIDMuMzYtLjQ0IDQuNzgtMS4yMmwtMS41LTEuNWMtMSAuNDYtMi4xMS43Mi0zLjI4Ljcyem03LTVoLTN2MmgzdjNoMnYtM2gzdi0yaC0zdi0zaC0ydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZFRvRHJpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAyMXYtM2gzdi0yaC0zdi0zaC0ydjNoLTN2MmgzdjNoMnptLTQuOTcuNUg1LjY2Yy0uNzIgMC0xLjM4LS4zOC0xLjczLTFsLTIuMzYtNC4xYy0uMzYtLjYyLS4zNS0xLjM4LjAxLTJMNy45MiAzLjQ5Yy4zNi0uNjEgMS4wMi0uOTkgMS43My0uOTloNC43Yy43MSAwIDEuMzcuMzggMS43My45OWw0LjQ4IDcuNzFhNi4xNzYgNi4xNzYgMCAwIDAtMi40LS4xNEwxNC4zNSA0LjVoLTQuN0wzLjMxIDE1LjQxbDIuMzUgNC4wOWg3Ljg5Yy4zNS43Ny44NSAxLjQ1IDEuNDggMnpNMTMuMzQgMTVjLS4yMi42My0uMzQgMS4zLS4zNCAySDcuMjVsLS43My0xLjI3IDQuNTgtNy45OGgxLjhsMi41MyA0LjQyYy0uNTYuNDItMS4wNS45My0xLjQ0IDEuNTFsLTItMy40OUw5LjI1IDE1aDQuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZGNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNXYyaC0zdjNoLTJWN2gtM1Y1aDNWMmgydjNoM3ptLTMgMTRINVY1aDZWM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi02aC0ydjZ6bS00LTZ2NGgydi00aC0yem0tNCA0aDJWOWgtMnY4em0tMiAwdi02SDd2NmgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZG1pblBhbmVsU2V0dGluZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMWMuMzQgMCAuNjcuMDQgMSAuMDlWNi4yN0wxMC41IDMgMyA2LjI3djQuOTFjMCA0LjU0IDMuMiA4Ljc5IDcuNSA5LjgyLjU1LS4xMyAxLjA4LS4zMiAxLjYtLjU1LS42OS0uOTgtMS4xLTIuMTctMS4xLTMuNDUgMC0zLjMxIDIuNjktNiA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEzYy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCAxLjM4Yy42MiAwIDEuMTIuNTEgMS4xMiAxLjEycy0uNTEgMS4xMi0xLjEyIDEuMTItMS4xMi0uNTEtMS4xMi0xLjEyLjUtMS4xMiAxLjEyLTEuMTJ6bTAgNS4zN2MtLjkzIDAtMS43NC0uNDYtMi4yNC0xLjE3LjA1LS43MiAxLjUxLTEuMDggMi4yNC0xLjA4czIuMTkuMzYgMi4yNCAxLjA4Yy0uNS43MS0xLjMxIDEuMTctMi4yNCAxLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZHNDbGljayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjcxIDE3Ljk5QTUuOTkzIDUuOTkzIDAgMCAxIDYgMTJjMC0zLjMxIDIuNjktNiA2LTYgMy4yMiAwIDUuODQgMi41MyA1Ljk5IDUuNzFsLTIuMS0uNjNhMy45OTkgMy45OTkgMCAxIDAtNC44MSA0LjgxbC42MyAyLjF6TTIyIDEyYzAgLjMtLjAxLjYtLjA0LjlsLTEuOTctLjU5Yy4wMS0uMS4wMS0uMjEuMDEtLjMxIDAtNC40Mi0zLjU4LTgtOC04cy04IDMuNTgtOCA4IDMuNTggOCA4IDhjLjEgMCAuMjEgMCAuMzEtLjAxbC41OSAxLjk3Yy0uMy4wMy0uNi4wNC0uOS4wNC01LjUyIDAtMTAtNC40OC0xMC0xMFM2LjQ4IDIgMTIgMnMxMCA0LjQ4IDEwIDEwem0tMy43NyA0LjI2TDIyIDE1bC0xMC0zIDMgMTAgMS4yNi0zLjc3IDQuMjcgNC4yNyAxLjk4LTEuOTgtNC4yOC00LjI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbGFybUFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuODggMy4zOSA2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMjIgNS43MmwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDlhOSA5IDAgMCAwIDAtMTh6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3em0xLTExaC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTNWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxhcm1PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YzMuODcgMCA3IDMuMTMgNyA3IDAgLjg0LS4xNiAxLjY1LS40MyAyLjRsMS41MiAxLjUyYy41OC0xLjE5LjkxLTIuNTEuOTEtMy45MmE5IDkgMCAwIDAtOS05Yy0xLjQxIDAtMi43My4zMy0zLjkyLjkxTDkuNiA2LjQzQzEwLjM1IDYuMTYgMTEuMTYgNiAxMiA2em0xMC0uMjgtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTIuOTIgMi4yOSAxLjY1IDMuNTcgMi45OCA0LjlsLTEuMTEuOTMgMS40MiAxLjQyIDEuMTEtLjk0LjguOEE4Ljk2NCA4Ljk2NCAwIDAgMCAzIDEzYzAgNC45NyA0LjAyIDkgOSA5IDIuMjUgMCA0LjMxLS44MyA1Ljg5LTIuMmwyLjIgMi4yIDEuMjctMS4yN0wzLjg5IDMuMjdsLS45Ny0uOTh6bTEzLjU1IDE2LjFDMTUuMjYgMTkuMzkgMTMuNyAyMCAxMiAyMGMtMy44NyAwLTctMy4xMy03LTcgMC0xLjcuNjEtMy4yNiAxLjYxLTQuNDdsOS44NiA5Ljg2ek04LjAyIDMuMjggNi42IDEuODZsLS44Ni43MSAxLjQyIDEuNDIuODYtLjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbGFybU9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgNS43Mi00LjYtMy44Ni0xLjI5IDEuNTMgNC42IDMuODZMMjIgNS43MnpNNy44OCAzLjM5IDYuNiAxLjg2IDIgNS43MWwxLjI5IDEuNTMgNC41OS0zLjg1ek0xMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5YTkgOSAwIDAgMCAwLTE4em0wIDE2Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3ptLTEuNDYtNS40N0w4LjQxIDEyLjRsLTEuMDYgMS4wNiAzLjE4IDMuMTggNi02LTEuMDYtMS4wNi00LjkzIDQuOTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFsYXJtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgNS43Mi00LjYtMy44Ni0xLjI5IDEuNTMgNC42IDMuODZMMjIgNS43MnpNNy44OCAzLjM5IDYuNiAxLjg2IDIgNS43MWwxLjI5IDEuNTMgNC41OS0zLjg1ek0xMi41IDhIMTF2Nmw0Ljc1IDIuODUuNzUtMS4yMy00LTIuMzdWOHpNMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWE5IDkgMCAwIDAgMC0xOHptMCAxNmMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFsbEluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjdjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDZoLTRjMCAxLjYyLTEuMzggMy0zIDNzLTMtMS4zOC0zLTNINVY1aDE0djR6bS00IDdoNnYzYzAgMS4xLS45IDItMiAySDVjLTEuMSAwLTItLjktMi0ydi0zaDZjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxsT3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi4yMSA0LjE2IDQgNHYtNHptNCAxMi00IDRoNHptLTEyIDQtNC00djR6bS00LTEyIDQtNGgtNHptMTIuOTUtLjk1Yy0yLjczLTIuNzMtNy4xNy0yLjczLTkuOSAwcy0yLjczIDcuMTcgMCA5LjkgNy4xNyAyLjczIDkuOSAwIDIuNzMtNy4xNiAwLTkuOXptLTEuMSA4LjhjLTIuMTMgMi4xMy01LjU3IDIuMTMtNy43IDBzLTIuMTMtNS41NyAwLTcuNyA1LjU3LTIuMTMgNy43IDAgMi4xMyA1LjU3IDAgNy43elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0uMjEuMTZoMjR2MjRoLTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbmFseXRpY3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxN0g3di01aDJ2NXptNCAwaC0ydi0zaDJ2M3ptMC01aC0ydi0yaDJ2MnptNCA1aC0yVjdoMnYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQW5jaG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgMTUgMS41NSAxLjU1Yy0uOTYgMS42OS0zLjMzIDMuMDQtNS41NSAzLjM3VjExaDNWOWgtM1Y3LjgyQzE0LjE2IDcuNCAxNSA2LjMgMTUgNWMwLTEuNjUtMS4zNS0zLTMtM1M5IDMuMzUgOSA1YzAgMS4zLjg0IDIuNCAyIDIuODJWOUg4djJoM3Y4LjkyYy0yLjIyLS4zMy00LjU5LTEuNjgtNS41NS0zLjM3TDcgMTVsLTQtM3YzYzAgMy44OCA0LjkyIDcgOSA3czktMy4xMiA5LTd2LTNsLTQgM3pNMTIgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbmRyb2lkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy42IDkuNDggMS44NC0zLjE4Yy4xNi0uMzEuMDQtLjY5LS4yNi0uODVhLjYzNy42MzcgMCAwIDAtLjgzLjIybC0xLjg4IDMuMjRhMTEuNDYzIDExLjQ2MyAwIDAgMC04Ljk0IDBMNS42NSA1LjY3YS42NDMuNjQzIDAgMCAwLS44Ny0uMmMtLjI4LjE4LS4zNy41NC0uMjIuODNMNi40IDkuNDhBMTAuNzggMTAuNzggMCAwIDAgMSAxOGgyMmExMC43OCAxMC43OCAwIDAgMC01LjQtOC41MnpNNyAxNS4yNWExLjI1IDEuMjUgMCAxIDEgMC0yLjUgMS4yNSAxLjI1IDAgMCAxIDAgMi41em0xMCAwYTEuMjUgMS4yNSAwIDEgMSAwLTIuNSAxLjI1IDEuMjUgMCAwIDEgMCAyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFubm91bmNlbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNyA5aC0yVjVoMnY2em0wIDRoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCAxMi0yIDItMi0yIDItMiAyIDJ6bS0yLTYgMi4xMiAyLjEyIDIuNS0yLjVMMTIgMSA3LjM4IDUuNjJsMi41IDIuNUwxMiA2em0tNiA2IDIuMTItMi4xMi0yLjUtMi41TDEgMTJsNC42MiA0LjYyIDIuNS0yLjVMNiAxMnptMTIgMC0yLjEyIDIuMTIgMi41IDIuNUwyMyAxMmwtNC42Mi00LjYyLTIuNSAyLjVMMTggMTJ6bS02IDYtMi4xMi0yLjEyLTIuNSAyLjVMMTIgMjNsNC42Mi00LjYyLTIuNS0yLjVMMTIgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFwcEJsb2NraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bS0yLjUgNEEyLjUgMi41IDAgMCAxIDE4IDkuNWMuNDIgMCAuOC4xMSAxLjE1LjI5bC0zLjM2IDMuMzZjLS4xOC0uMzUtLjI5LS43My0uMjktMS4xNXptMi41IDIuNWMtLjQyIDAtLjgtLjExLTEuMTUtLjI5bDMuMzYtMy4zNmMuMTguMzUuMjkuNzMuMjkgMS4xNWEyLjUgMi41IDAgMCAxLTIuNSAyLjV6TTE3IDE4SDdWNmgxMHYxaDJWM2MwLTEuMS0uOS0yLTItMkg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0ydi00aC0ydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFwcFNob3J0Y3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMThIN1Y2aDEwdjFoMlYzYzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJ2LTRoLTJ2MXpNMjAuMzggOS42MiAyMSAxMWwuNjItMS4zOEwyMyA5bC0xLjM4LS42MkwyMSA3bC0uNjIgMS4zOEwxOSA5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNiA4LTEuMjUgMi43NUwxMiAxMmwyLjc1IDEuMjVMMTYgMTZsMS4yNS0yLjc1TDIwIDEybC0yLjc1LTEuMjV6TTIxIDEzbC0uNjIgMS4zOEwxOSAxNWwxLjM4LjYyTDIxIDE3bC42Mi0xLjM4TDIzIDE1bC0xLjM4LS42MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dDaXJjbGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LThtMC0yQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDEwVjhoLTJ2NEg4bDQgNCA0LTRoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93Q2lyY2xlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTBzMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDIgMiA2LjQ4IDIgMTJ6bTEwLTFoNHYyaC00djNsLTQtNCA0LTR2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dDaXJjbGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwUzIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMHptLTEwIDFIOHYtMmg0VjhsNCA0LTQgNHYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dDaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOG0wIDJjNS41MiAwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTB6bS0xLTEwdjRoMnYtNGgzbC00LTQtNCA0aDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93T3V0d2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNnYyaDguNTlMNSAxNy41OSA2LjQxIDE5IDE2IDkuNDFWMThoMlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd1JpZ2h0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMDEgMTFINHYyaDEyLjAxdjNMMjAgMTJsLTMuOTktNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJ0aWNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNSAxNEg3di0yaDd2MnptMy00SDd2LTJoMTB2MnptMC00SDdWN2gxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3BlY3RSYXRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEyaC0ydjNoLTN2Mmg1di01ek03IDloM1Y3SDV2NWgyVjl6bTE0LTZIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXNzZXNzbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3NpZ25tZW50QWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0zIDUuNWgtMi41VjIxaC0xdi0yLjVIMTV2LTFoMi41VjE1aDF2Mi41SDIxdjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjY5IDE1Yy4zNi0uNzUuODQtMS40MyAxLjQzLTJIN3YtMmgxMWMxLjA3IDAgMi4wOS4yNSAzIC42OVY1YzAtMS4xLS45LTItMi0yaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDYuNjljLS40NC0uOTEtLjY5LTEuOTMtLjY5LTMgMC0uMzQuMDMtLjY3LjA4LTFIN3YtMmg0LjY5ek0xMiAyLjc1Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NS0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NXpNNyA3aDEwdjJIN1Y3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3NpZ25tZW50SW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTAgNGMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgMy0zLTEuMzQtMy0zIDEuMzQtMyAzLTN6bTYgMTJINnYtMS40YzAtMiA0LTMuMSA2LTMuMXM2IDEuMSA2IDMuMVYxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXNzaWdubWVudExhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS02IDE1aC0ydi0yaDJ2MnptMC00aC0yVjhoMnY2em0tMS05Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFzc2lnbm1lbnRSZXR1cm4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNCAxMmgtNHYzbC01LTUgNS01djNoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3NpZ25tZW50UmV0dXJuZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMCAxNS01LTVoM1Y5aDR2NGgzbC01IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFzc2lnbm1lbnRUdXJuZWRJbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tMiAxNC00LTQgMS40MS0xLjQxTDEwIDE0LjE3bDYuNTktNi41OUwxOCA5bC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFzc2lnbm1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMiAxNEg3di0yaDd2MnptMy00SDd2LTJoMTB2MnptMC00SDdWN2gxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3N1cmVkV29ya2xvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEwaDJ2N0g1ek0xMSAxMGgydjdoLTJ6TTIyIDYgMTIgMSAyIDZ2MmgyMHpNMiAxOXYyaDEyLjRjLS4yMS0uNjQtLjMyLTEuMzEtLjM2LTJIMnpNMTkgMTIuMjZWMTBoLTJ2My4yNnpNMjAgMTRsLTQgMnYyLjU1YzAgMi41MiAxLjcxIDQuODggNCA1LjQ1IDIuMjktLjU3IDQtMi45MyA0LTUuNDVWMTZsLTQtMnptLS43MiA3LTIuMDMtMi4wMyAxLjA2LTEuMDYuOTcuOTcgMi40MS0yLjM4IDEuMDYgMS4wNkwxOS4yOCAyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXV0b3JlbmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNnYzbDQtNC00LTR2M2MtNC40MiAwLTggMy41OC04IDggMCAxLjU3LjQ2IDMuMDMgMS4yNCA0LjI2TDYuNyAxNC44QTUuODcgNS44NyAwIDAgMSA2IDEyYzAtMy4zMSAyLjY5LTYgNi02em02Ljc2IDEuNzRMMTcuMyA5LjJjLjQ0Ljg0LjcgMS43OS43IDIuOCAwIDMuMzEtMi42OSA2LTYgNnYtM2wtNCA0IDQgNHYtM2M0LjQyIDAgOC0zLjU4IDgtOCAwLTEuNTctLjQ2LTMuMDMtMS4yNC00LjI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYWNrdXBUYWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZ2MTRINnYyaDE0YzEuMSAwIDItLjkgMi0yVjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek05IDE2SDR2LTVoNXY1em03IDBoLTV2LTVoNXY1em0wLTdINFY0aDEydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhY2t1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDRBNS45OTQgNS45OTQgMCAwIDAgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTQgMTN2NGgtNHYtNEg3bDUtNSA1IDVoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhbGFuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3LjgzYy44NS0uMyAxLjUzLS45OCAxLjgzLTEuODNIMThsLTMgN2MwIDEuNjYgMS41NyAzIDMuNSAzczMuNS0xLjM0IDMuNS0zbC0zLTdoMlY0aC02LjE3Yy0uNDEtMS4xNy0xLjUyLTItMi44My0ycy0yLjQyLjgzLTIuODMgMkgzdjJoMmwtMyA3YzAgMS42NiAxLjU3IDMgMy41IDNTOSAxNC42NiA5IDEzTDYgNmgzLjE3Yy4zLjg1Ljk4IDEuNTMgMS44MyAxLjgzVjE5SDJ2MmgyMHYtMmgtOVY3Ljgzek0yMC4zNyAxM2gtMy43NGwxLjg3LTQuMzZMMjAuMzcgMTN6bS0xMyAwSDMuNjNMNS41IDguNjQgNy4zNyAxM3pNMTIgNmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXJjb2RlUmVhZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgOC43NWgtNHYtMS41aDR2MS41em0tLjM4LTQuMzhMMjIgM2wtMy42MiAxLjYzTDE5IDZsMy42Mi0xLjYzek0xOSAxMGwtLjYyIDEuMzdMMjIgMTNsLjYyLTEuMzdMMTkgMTB6bS04IDNjLjU1IDAgMSAuNDUgMSAxdjJjMCAuNTUtLjQ1IDEtMSAxSDkuNjRsLS43NCAyLjc4QTIuOTk5IDIuOTk5IDAgMCAxIDYgMjJhMi45OTUgMi45OTUgMCAwIDEtMi45LTMuNzdsMS44Mi02LjhBNC4wMjggNC4wMjggMCAwIDEgMyA4YzAtMi4yMSAxLjc5LTQgNC00aDhjMS40OSAwIDIuNDUgMS41NiAxLjc5IDIuODlsLTIgNEMxNC40NSAxMS41NyAxMy43NSAxMiAxMyAxMmgtMi4wMmwtLjI3IDFIMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdGNoUHJlZGljdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDhIN2MtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYxMGMwLTEuMS0uOS0yLTItMnptLTQgMTIuNWgtMlYxOWgydjEuNXptMC0yLjVoLTJjMC0xLjUtMi41LTMtMi41LTUgMC0xLjkzIDEuNTctMy41IDMuNS0zLjVzMy41IDEuNTcgMy41IDMuNWMwIDItMi41IDMuNS0yLjUgNXptNS0xMS41SDZDNiA1LjY3IDYuNjcgNSA3LjUgNWg5Yy44MyAwIDEuNS42NyAxLjUgMS41em0tMS0zSDdDNyAyLjY3IDcuNjcgMiA4LjUgMmg3Yy44MyAwIDEuNS42NyAxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb29rT25saW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6TTcgMThWNmgxMHYxMkg3em05LTdWOS4xNEMxNiA4LjUxIDE1LjU1IDggMTUgOEg5Yy0uNTUgMC0xIC41MS0xIDEuMTR2MS45NmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMXYxLjc2YzAgLjYzLjQ1IDEuMTQgMSAxLjE0aDZjLjU1IDAgMS0uNTEgMS0xLjE0VjEzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xem0tMy41IDMuNWgtMXYtMWgxdjF6bTAtMmgtMXYtMWgxdjF6bTAtMmgtMXYtMWgxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNNiA0aDV2OGwtMi41LTEuNUw2IDEyVjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvb2ttYXJrQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgN2gtMnYyaC0yVjdoLTJWNWgyVjNoMnYyaDJ2MnptLTIgMTQtNy0zLTcgM1Y1YzAtMS4xLjktMiAyLTJoN2E1LjAwMiA1LjAwMiAwIDAgMCA1IDcuOVYyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9va21hcmtBZGRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5IDIxLTctMy03IDNWNWMwLTEuMS45LTIgMi0yaDdhNS4wMDIgNS4wMDIgMCAwIDAgNSA3LjlWMjF6TTE3LjgzIDkgMTUgNi4xN2wxLjQxLTEuNDEgMS40MSAxLjQxIDMuNTQtMy41NCAxLjQxIDEuNDFMMTcuODMgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9va21hcmtCb3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAzSDdjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNSAyMWw3LTMgNyAzVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTUtNS0yLjE4TDcgMThWNWgxMHYxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9va21hcmtSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA3aC02VjVoNnYyem0tMiAzLjlBNS4wMDIgNS4wMDIgMCAwIDEgMTQgM0g3Yy0xLjEgMC0yIC45LTIgMnYxNmw3LTMgNyAzVjEwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb29rbWFya3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5IDE4IDIgMVYzYzAtMS4xLS45LTItMi0ySDguOTlDNy44OSAxIDcgMS45IDcgM2gxMGMxLjEgMCAyIC45IDIgMnYxM3pNMTUgNUg1Yy0xLjEgMC0yIC45LTIgMnYxNmw3LTMgNyAzVjdjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyb3dzZUdhbGxlcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDNhOSA5IDAgMSAwIC4wMDEgMTguMDAxQTkgOSAwIDAgMCA5IDN6bTIuNzkgMTMuMjFMOCAxMi40MVY3aDJ2NC41OWwzLjIxIDMuMjEtMS40MiAxLjQxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy45OSAzLjUydjIuMTZBNi45OSA2Ljk5IDAgMCAxIDIyIDEyYzAgMi43OS0xLjY0IDUuMi00LjAxIDYuMzJ2Mi4xNkMyMS40OCAxOS4yNCAyNCAxNS45MSAyNCAxMnMtMi41Mi03LjI0LTYuMDEtOC40OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnVnUmVwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOGgtMi44MWE1Ljk4NSA1Ljk4NSAwIDAgMC0xLjgyLTEuOTZMMTcgNC40MSAxNS41OSAzbC0yLjE3IDIuMTdDMTIuOTYgNS4wNiAxMi40OSA1IDEyIDVjLS40OSAwLS45Ni4wNi0xLjQxLjE3TDguNDEgMyA3IDQuNDFsMS42MiAxLjYzQzcuODggNi41NSA3LjI2IDcuMjIgNi44MSA4SDR2MmgyLjA5Yy0uMDUuMzMtLjA5LjY2LS4wOSAxdjFINHYyaDJ2MWMwIC4zNC4wNC42Ny4wOSAxSDR2MmgyLjgxYzEuMDQgMS43OSAyLjk3IDMgNS4xOSAzczQuMTUtMS4yMSA1LjE5LTNIMjB2LTJoLTIuMDljLjA1LS4zMy4wOS0uNjYuMDktMXYtMWgydi0yaC0ydi0xYzAtLjM0LS4wNC0uNjctLjA5LTFIMjBWOHptLTYgOGgtNHYtMmg0djJ6bTAtNGgtNHYtMmg0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJ1aWxkQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTQuOSAxMy40OS0xLjQgMS40Yy0uMi4yLS41MS4yLS43MSAwbC0zLjQxLTMuNDFjLTEuMjIuNDMtMi42NC4xNy0zLjYyLS44MWEzLjQ2OCAzLjQ2OCAwIDAgMS0uNTktNC4xbDIuMzUgMi4zNSAxLjQxLTEuNDEtMi4zNS0yLjM0YzEuMzItLjcxIDIuOTktLjUyIDQuMS41OS45OC45OCAxLjI0IDIuNC44MSAzLjYybDMuNDEgMy40MWMuMTkuMTkuMTkuNTEgMCAuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnVpbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwiLFwiY2xpcFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuNyAxOS05LjEtOS4xYy45LTIuMy40LTUtMS41LTYuOS0yLTItNS0yLjQtNy40LTEuM0w5IDYgNiA5IDEuNiA0LjdDLjQgNy4xLjkgMTAuMSAyLjkgMTIuMWMxLjkgMS45IDQuNiAyLjQgNi45IDEuNWw5LjEgOS4xYy40LjQgMSAuNCAxLjQgMGwyLjMtMi4zYy41LS40LjUtMS4xLjEtMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYWNoZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSA4LTQgNGgzYzAgMy4zMS0yLjY5IDYtNiA2YTUuODcgNS44NyAwIDAgMS0yLjgtLjdsLTEuNDYgMS40NkE3LjkzIDcuOTMgMCAwIDAgMTIgMjBjNC40MiAwIDgtMy41OCA4LThoM2wtNC00ek02IDEyYzAtMy4zMSAyLjY5LTYgNi02IDEuMDEgMCAxLjk3LjI1IDIuOC43bDEuNDYtMS40NkE3LjkzIDcuOTMgMCAwIDAgMTIgNGMtNC40MiAwLTggMy41OC04IDhIMWw0IDQgNC00SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGVuZGFyTW9udGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0aC0xVjJoLTJ2Mkg4VjJINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMjBhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE2SDVWMTBoMTR2MTB6TTkgMTRIN3YtMmgydjJ6bTQgMGgtMnYtMmgydjJ6bTQgMGgtMnYtMmgydjJ6bS04IDRIN3YtMmgydjJ6bTQgMGgtMnYtMmgydjJ6bTQgMGgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGVuZGFyVG9kYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzaC0xVjFoLTJ2Mkg3VjFINXYySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxOEg0VjhoMTZ2MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGVuZGFyVmlld0RheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTdoMTh2Mkgzem0wLTdoMTh2NUgzem0wLTRoMTh2MkgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYWxlbmRhclZpZXdNb250aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTggMTFINFY2aDR2NXptNiAwaC00VjZoNHY1em02IDBoLTRWNmg0djV6TTggMThINHYtNWg0djV6bTYgMGgtNHYtNWg0djV6bTYgMGgtNHYtNWg0djV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGVuZGFyVmlld1dlZWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNyAyaDIuNXYxMkgxM1Y2em0tMiAxMkg4LjVWNkgxMXYxMnpNNCA2aDIuNXYxMkg0VjZ6bTE2IDEyaC0yLjVWNkgyMHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FtZXJhRW5oYW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAzIDcuMTcgNUg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJoLTMuMTdMMTUgM0g5em0zIDE1Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgMTcgMS4yNS0yLjc1TDE2IDEzbC0yLjc1LTEuMjVMMTIgOWwtMS4yNSAyLjc1TDggMTNsMi43NSAxLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW5jZWxTY2hlZHVsZVNlbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDljLS40MiAwLS44My4wNC0xLjI0LjExTDEuMDEgMyAxIDEwbDkgMi05IDIgLjAxIDcgOC4wNy0zLjQ2QzkuNTkgMjEuMTkgMTIuNzEgMjQgMTYuNSAyNGM0LjE0IDAgNy41LTMuMzYgNy41LTcuNVMyMC42NCA5IDE2LjUgOXptMCAxM2MtMy4wMyAwLTUuNS0yLjQ3LTUuNS01LjVzMi40Ny01LjUgNS41LTUuNSA1LjUgMi40NyA1LjUgNS41LTIuNDcgNS41LTUuNSA1LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4LjI3IDE0LjAzLTEuNzcgMS43Ni0xLjc3LTEuNzYtLjcuNyAxLjc2IDEuNzctMS43NiAxLjc3LjcuNyAxLjc3LTEuNzYgMS43NyAxLjc2LjctLjctMS43Ni0xLjc3IDEuNzYtMS43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FyZEdpZnRjYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtMi4xOGMuMTEtLjMxLjE4LS42NS4xOC0xYTIuOTk2IDIuOTk2IDAgMCAwLTUuNS0xLjY1bC0uNS42Ny0uNS0uNjhDMTAuOTYgMi41NCAxMC4wNSAyIDkgMiA3LjM0IDIgNiAzLjM0IDYgNWMwIC4zNS4wNy42OS4xOCAxSDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE5YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjhjMC0xLjExLS44OS0yLTItMnptLTUtMmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xek05IDRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMTEgMTVINHYtMmgxNnYyem0wLTVINFY4aDUuMDhMNyAxMC44MyA4LjYyIDEyIDExIDguNzZsMS0xLjM2IDEgMS4zNkwxNS4zOCAxMiAxNyAxMC44MyAxNC45MiA4SDIwdjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhcmRNZW1iZXJzaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjExIDAtMiAuODktMiAydjExYzAgMS4xMS44OSAyIDIgMmg0djVsNC0yIDQgMnYtNWg0YzEuMTEgMCAyLS44OSAyLTJWNGMwLTEuMTEtLjg5LTItMi0yem0wIDEzSDR2LTJoMTZ2MnptMC01SDRWNGgxNnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYXJkVHJhdmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtM1Y0YzAtMS4xMS0uODktMi0yLTJIOWMtMS4xMSAwLTIgLjg5LTIgMnYySDRjLTEuMTEgMC0yIC44OS0yIDJ2MTFjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yek05IDRoNnYySDlWNHptMTEgMTVINHYtMmgxNnYyem0wLTVINFY4aDN2MmgyVjhoNnYyaDJWOGgzdjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoYW5nZUhpc3RvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDcuNzcgMTguMzkgMThINS42MUwxMiA3Ljc3TTEyIDQgMiAyMGgyMEwxMiA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGVja0NpcmNsZU91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjU5IDcuNTggMTAgMTQuMTdsLTMuNTktMy41OEw1IDEybDUgNSA4LTh6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGVja0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0yIDE1LTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hyb21lUmVhZGVyTW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNLTc0IDI5aDQ4djQ4aC00OFYyOXpNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTJoN3YxLjVoLTd6bTAtMi41aDdWMTFoLTd6bTAgNWg3VjE2aC03ek0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEzYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNWgtOVY2aDl2MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENpcmNsZU5vdGlmaWNhdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE2LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNWgzYzAgLjgzLS42NyAxLjUtMS41IDEuNXptNS0yLjVIN3YtMWwxLTF2LTIuNjFDOCA5LjI3IDkuMDMgNy40NyAxMSA3di0uNWMwLS41Ny40My0xIDEtMXMxIC40MyAxIDFWN2MxLjk3LjQ3IDMgMi4yOCAzIDQuMzlWMTRsMSAxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTYgNGg1djhsLTIuNS0xLjVMNiAxMlY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbG9zZUZ1bGxzY3JlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAzLjQxIDE2LjcxIDguNyAyMCAxMmgtOFY0bDMuMjkgMy4yOUwyMC41OSAyIDIyIDMuNDF6TTMuNDEgMjJsNS4yOS01LjI5TDEyIDIwdi04SDRsMy4yOSAzLjI5TDIgMjAuNTkgMy40MSAyMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29kZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjE3IDEyLTQuNTgtNC41OUwxNiA2bDYgNi0zLjU5IDMuNTlMMTcgMTQuMTcgMTkuMTcgMTJ6TTEuMzkgNC4yMmw0LjE5IDQuMTlMMiAxMmw2IDYgMS40MS0xLjQxTDQuODMgMTIgNyA5LjgzbDEyLjc4IDEyLjc4IDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjQgMTYuNiA0LjggMTJsNC42LTQuNkw4IDZsLTYgNiA2IDYgMS40LTEuNHptNS4yIDAgNC42LTQuNi00LjYtNC42TDE2IDZsNiA2LTYgNi0xLjQtMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb21tZW50QmFuayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS0xIDExLTIuNS0xLjVMMTQgMTNWNWg1djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbW1pdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjkgMTFhNSA1IDAgMCAwLTkuOCAwSDJ2Mmg1LjFhNSA1IDAgMCAwIDkuOCAwSDIydi0yaC01LjF6TTEyIDE1Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29tbXV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRINUMzLjM0IDQgMiA1LjM0IDIgN3Y4YzAgMS42NiAxLjM0IDMgMyAzbC0xIDF2MWgxbDItMi4wM0w5IDE4di01SDRWNS45OEwxMyA2djJoMlY3YzAtMS42Ni0xLjM0LTMtMy0zek01IDE0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTE1LjU3LTQuMzRjLS4xNC0uNC0uNTItLjY2LS45Ny0uNjZoLTcuMTljLS40NiAwLS44My4yNi0uOTguNjZMMTAgMTMuNzdsLjAxIDUuNTFjMCAuMzguMzEuNzIuNjkuNzJoLjYyYy4zOCAwIC42OC0uMzguNjgtLjc2VjE4aDh2MS4yNGMwIC4zOC4zMS43Ni42OS43NmguNjFjLjM4IDAgLjY5LS4zNC42OS0uNzJsLjAxLTEuMzd2LTQuMTRsLTEuNDMtNC4xMXptLTguMTYuMzRoNy4xOWwxLjAzIDNoLTkuMjVsMS4wMy0zek0xMiAxNmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem04IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29tcGFyZUFycm93cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMDEgMTRIMnYyaDcuMDF2M0wxMyAxNWwtMy45OS00djN6bTUuOTgtMXYtM0gyMlY4aC03LjAxVjVMMTEgOWwzLjk5IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbXByZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxOWgzdjNoMnYtM2gzbC00LTQtNCA0em04LTE1aC0zVjFoLTJ2M0g4bDQgNCA0LTR6TTQgOXYyaDE2VjlINHpNNCAxMmgxNnYySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRhY3RQYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjhsLTYtNnptLTIgOGMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTQgOEg4di0uNTdjMC0uODEuNDgtMS41MyAxLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAxIDUuNTYgMEEyLjAxIDIuMDEgMCAwIDEgMTYgMTcuNDNWMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRhY3RTdXBwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNSAyQzYuODEgMiAzIDUuODEgMyAxMC41UzYuODEgMTkgMTEuNSAxOWguNXYzYzQuODYtMi4zNCA4LTcgOC0xMS41QzIwIDUuODEgMTYuMTkgMiAxMS41IDJ6bTEgMTQuNWgtMnYtMmgydjJ6bTAtMy41aC0yYzAtMy4yNSAzLTMgMy01IDAtMS4xLS45LTItMi0ycy0yIC45LTIgMmgtMmMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0YzAgMi41LTMgMi43NS0zIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRhY3RsZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNOC40NiAxNC40NWwtMS4zNi0uNjJjLjI4LS42MS40MS0xLjI0LjQtMS44NmE0LjQyIDQuNDIgMCAwIDAtLjQtMS44bDEuMzYtLjYzYy4zNS43NS41MyAxLjU2LjU0IDIuNC4wMS44Ni0uMTcgMS43LS41NCAyLjUxem0zLjA3IDEuNTYtMS4zLS43NGMuNTItLjkyLjc4LTEuOTguNzgtMy4xNSAwLTEuMTktLjI3LTIuMzMtLjgtMy40bDEuMzQtLjY3Yy42NCAxLjI4Ljk2IDIuNjUuOTYgNC4wNyAwIDEuNDMtLjMzIDIuNzQtLjk4IDMuODl6bTMuMTQgMS4zMi0xLjM1LS42NmMuNzgtMS42IDEuMTgtMy4xOCAxLjE4LTQuNjkgMC0xLjUxLS40LTMuMDctMS4xOC00LjY0bDEuMzQtLjY3Yy45IDEuNzggMS4zNCAzLjU2IDEuMzQgNS4zMSAwIDEuNzQtLjQ0IDMuNTQtMS4zMyA1LjM1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb3B5cmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS44OCA5LjE0YzEuMjguMDYgMS42MSAxLjE1IDEuNjMgMS42NmgxLjc5Yy0uMDgtMS45OC0xLjQ5LTMuMTktMy40NS0zLjE5QzkuNjQgNy42MSA4IDkgOCAxMi4xNGMwIDEuOTQuOTMgNC4yNCAzLjg0IDQuMjQgMi4yMiAwIDMuNDEtMS42NSAzLjQ0LTIuOTVoLTEuNzljLS4wMy41OS0uNDUgMS4zOC0xLjYzIDEuNDQtMS4zMS0uMDQtMS44Ni0xLjA2LTEuODYtMi43MyAwLTIuODkgMS4yOC0yLjk4IDEuODgtM3pNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyZWRpdENhcmRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45IDIxLjkgMi4xIDIuMS42OSAzLjUxbDEuNTUgMS41NWMtLjE1LjI4LS4yMy42LS4yMy45NEwyIDE4YzAgMS4xMS44OSAyIDIgMmgxMy4xN2wzLjMxIDMuMzEgMS40Mi0xLjQxek00IDEyVjhoMS4xN2w0IDRINHptMi44My04SDIwYzEuMTEgMCAyIC44OSAyIDJ2MTJjMCAuMzQtLjA4LjY2LS4yMy45NEwxNC44MyAxMkgyMFY4aC05LjE3bC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyZWRpdENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0di02aDE2djZ6bTAtMTBINFY2aDE2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSAxNHYtMUgxMXYuNWgydi0xaC0yLjVjLS41NSAwLTEtLjQ1LTEtMVYxMGMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXYxSDEzdi0uNWgtMnYxaDIuNWMuNTUgMCAxIC40NSAxIDFWMTRjMCAuNTUtLjQ1IDEtMSAxaC0zYy0uNTUgMC0xLS40NS0xLTF6bTcuNSAxaDNjLjU1IDAgMS0uNDUgMS0xdi0xLjVjMC0uNTUtLjQ1LTEtMS0xaC0yLjV2LTFoMnYuNUgyMXYtMWMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXYxLjVjMCAuNTUuNDUgMSAxIDFoMi41djFoLTJWMTNIMTZ2MWMwIC41NS40NSAxIDEgMXptLTktNWMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTF2LTFINi41di41aC0ydi0zaDJ2LjVIOHYtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3VycmVuY3lFeGNoYW5nZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjg5IDExLjFjLTEuNzgtLjU5LTIuNjQtLjk2LTIuNjQtMS45IDAtMS4wMiAxLjExLTEuMzkgMS44MS0xLjM5IDEuMzEgMCAxLjc5Ljk5IDEuOSAxLjM0bDEuNTgtLjY3Yy0uMTUtLjQ1LS44Mi0xLjkyLTIuNTQtMi4yNFY1aC0ydjEuMjZjLTIuNDguNTYtMi40OSAyLjg2LTIuNDkgMi45NiAwIDIuMjcgMi4yNSAyLjkxIDMuMzUgMy4zMSAxLjU4LjU2IDIuMjggMS4wNyAyLjI4IDIuMDMgMCAxLjEzLTEuMDUgMS42MS0xLjk4IDEuNjEtMS44MiAwLTIuMzQtMS44Ny0yLjQtMi4wOWwtMS42Ni42N2MuNjMgMi4xOSAyLjI4IDIuNzggMi45IDIuOTZWMTloMnYtMS4yNGMuNC0uMDkgMi45LS41OSAyLjktMy4yMiAwLTEuMzktLjYxLTIuNjEtMy4wMS0zLjQ0ek0zIDIxSDF2LTZoNnYySDQuNTJjMS42MSAyLjQxIDQuMzYgNCA3LjQ4IDRhOSA5IDAgMCAwIDktOWgyYzAgNi4wOC00LjkyIDExLTExIDExLTMuNzIgMC03LjAxLTEuODUtOS00LjY3VjIxem0tMi05QzEgNS45MiA1LjkyIDEgMTIgMWMzLjcyIDAgNy4wMSAxLjg1IDkgNC42N1YzaDJ2NmgtNlY3aDIuNDhDMTcuODcgNC41OSAxNS4xMiAzIDEyIDNhOSA5IDAgMCAwLTkgOUgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYW5nZXJvdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS43MyAzSDguMjdMMyA4LjI3djcuNDZMOC4yNyAyMWg3LjQ2TDIxIDE1LjczVjguMjdMMTUuNzMgM3pNMTcgMTUuNzQgMTUuNzQgMTcgMTIgMTMuMjYgOC4yNiAxNyA3IDE1Ljc0IDEwLjc0IDEyIDcgOC4yNiA4LjI2IDcgMTIgMTAuNzQgMTUuNzQgNyAxNyA4LjI2IDEzLjI2IDEyIDE3IDE1Ljc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYXNoYm9hcmRDdXN0b21pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDNoOHY4SDN6bTEwIDBoOHY4aC04ek0zIDEzaDh2OEgzem0xNSAwaC0ydjNoLTN2MmgzdjNoMnYtM2gzdi0yaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYXNoYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzaDhWM0gzdjEwem0wIDhoOHYtNkgzdjZ6bTEwIDBoOFYxMWgtOHYxMHptMC0xOHY2aDhWM2gtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGF0YUV4cGxvcmF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJjMCAxLjMzLjI2IDIuNjEuNzQgMy43N0w4IDEwLjVsMy4zIDIuNzhMMTQuNTggMTBIMTNWOGg1djVoLTJ2LTEuNThMMTEuNDEgMTZsLTMuMjktMi43OS00LjQgNC40QTkuOTk2IDkuOTk2IDAgMCAwIDEyIDIyaDhjMS4xIDAgMi0uOSAyLTJ2LThjMC01LjUyLTQuNDgtMTAtMTAtMTB6bTcuNSAxOC41Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERhdGFUaHJlc2hvbGRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTguMzMgNS4xNyAyIDIgMy42Ny0zLjY3IDEuNDEgMS40MUwxMi42NyAxM2wtMi0yLTMgMy0xLjQxLTEuNDEgNC40MS00LjQyek01IDE2aDEuNzJMNSAxNy43MlYxNnptLjg0IDMgMy0zaDEuODNsLTMgM0g1Ljg0em0zLjk2IDAgMy0zaDEuNjJsLTMgM0g5Ljh6bTMuNzMgMCAzLTNoMS42MmwtMyAzaC0xLjYyek0xOSAxOWgtMS43M0wxOSAxNy4yN1YxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGF0ZVJhbmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMUg3djJoMnYtMnptNCAwaC0ydjJoMnYtMnptNCAwaC0ydjJoMnYtMnptMi03aC0xVjJoLTJ2Mkg4VjJINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMjBhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOWgxNHYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVsZXRlRm9yZXZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjdINnYxMnptMi40Ni03LjEyIDEuNDEtMS40MUwxMiAxMi41OWwyLjEyLTIuMTIgMS40MSAxLjQxTDEzLjQxIDE0bDIuMTIgMi4xMi0xLjQxIDEuNDFMMTIgMTUuNDFsLTIuMTIgMi4xMi0xLjQxLTEuNDFMMTAuNTkgMTRsLTIuMTMtMi4xMnpNMTUuNSA0bC0xLTFoLTVsLTEgMUg1djJoMTRWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVsZXRlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek04IDloOHYxMEg4Vjl6bTcuNS01LTEtMWgtNWwtMSAxSDV2MmgxNFY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZWxldGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6TTE5IDRoLTMuNWwtMS0xaC01bC0xIDFINXYyaDE0VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlbnNpdHlMYXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM2gxOHYySDN6TTMgMTloMTh2MkgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZW5zaXR5TWVkaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzaDE4djJIM3pNMyAxOWgxOHYySDN6TTMgMTFoMTh2MkgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZW5zaXR5U21hbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDJoMTh2Mkgzek0zIDIwaDE4djJIM3pNMyAxNGgxOHYySDN6TTMgOGgxOHYySDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlc2NyaXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0yIDE2SDh2LTJoOHYyem0wLTRIOHYtMmg4djJ6bS0zLTVWMy41TDE4LjUgOUgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlzYWJsZWRCeURlZmF1bHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDN2MThoMThWM0gzem0xNCAxMi41OUwxNS41OSAxNyAxMiAxMy40MSA4LjQxIDE3IDcgMTUuNTkgMTAuNTkgMTIgNyA4LjQxIDguNDEgNyAxMiAxMC41OSAxNS41OSA3IDE3IDguNDEgMTMuNDEgMTIgMTcgMTUuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpc2FibGVkVmlzaWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk5IDEyLjM0Yy4wMS0uMTEuMDEtLjIzLjAxLS4zNCAwLTUuNTItNC40OC0xMC0xMC0xMFMyIDYuNDggMiAxMmMwIDUuMTcgMy45MyA5LjQzIDguOTYgOS45NWE5LjM0MyA5LjM0MyAwIDAgMS0yLjMyLTIuNjhBOC4wMSA4LjAxIDAgMCAxIDQgMTJjMC0xLjg1LjYzLTMuNTUgMS42OS00LjlsNS42NiA1LjY2Yy41Ni0uNCAxLjE3LS43MyAxLjgyLTFMNy4xIDUuNjlBNy45MDIgNy45MDIgMCAwIDEgMTIgNGM0LjI0IDAgNy43IDMuMjkgNy45OCA3LjQ1LjcxLjIyIDEuMzkuNTIgMi4wMS44OXpNMTcgMTNjLTMuMTggMC01LjkgMS44Ny03IDQuNSAxLjEgMi42MyAzLjgyIDQuNSA3IDQuNXM1LjktMS44NyA3LTQuNWMtMS4xLTIuNjMtMy44Mi00LjUtNy00LjV6bTAgN2EyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXptMS41LTIuNWMwIC44My0uNjcgMS41LTEuNSAxLjVzLTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlzcGxheVNldHRpbmdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNHYyaDh2LTJoNGMxLjEgMCAyLS45IDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTRINFY1aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDguMjVoOHYxLjVINnpNMTYuNSA5Ljc1SDE4di0xLjVoLTEuNVY3SDE1djRoMS41ek0xMCAxMi4yNWg4djEuNWgtOHpNNy41IDE1SDl2LTRINy41djEuMjVINnYxLjVoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxM0g0Yy0uNTUgMC0xIC40NS0xIDF2NmMwIC41NS40NSAxIDEgMWgxNmMuNTUgMCAxLS40NSAxLTF2LTZjMC0uNTUtLjQ1LTEtMS0xek03IDE5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpNMjAgM0g0Yy0uNTUgMC0xIC40NS0xIDF2NmMwIC41NS40NSAxIDEgMWgxNmMuNTUgMCAxLS40NSAxLTFWNGMwLS41NS0uNDUtMS0xLTF6TTcgOWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvbmVBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCA3LTEuNDEtMS40MS02LjM0IDYuMzQgMS40MSAxLjQxTDE4IDd6bTQuMjQtMS40MUwxMS42NiAxNi4xNyA3LjQ4IDEybC0xLjQxIDEuNDFMMTEuNjYgMTlsMTItMTItMS40Mi0xLjQxek0uNDEgMTMuNDEgNiAxOWwxLjQxLTEuNDFMMS44MyAxMiAuNDEgMTMuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvbmVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS43NyA1LjAzIDEuNCAxLjRMOC40MyAxOS4xN2wtNS42LTUuNiAxLjQtMS40IDQuMiA0LjJMMTkuNzcgNS4wM20wLTIuODNMOC40MyAxMy41NGwtNC4yLTQuMkwwIDEzLjU3IDguNDMgMjIgMjQgNi40MyAxOS43NyAyLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE2LjIgNC44IDEybC0xLjQgMS40TDkgMTkgMjEgN2wtMS40LTEuNEw5IDE2LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvbnV0TGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA1LjA4VjJjLTUgLjUtOSA0LjgxLTkgMTBzNCA5LjUgOSAxMHYtMy4wOGMtMy0uNDgtNi0zLjQtNi02LjkyczMtNi40NCA2LTYuOTJ6TTE4Ljk3IDExSDIyYy0uNDctNS00LTguNTMtOS05djMuMDhDMTYgNS41MSAxOC41NCA4IDE4Ljk3IDExek0xMyAxOC45MlYyMmM1LS40NyA4LjUzLTQgOS05aC0zLjAzYy0uNDMgMy0yLjk3IDUuNDktNS45NyA1LjkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb251dFNtYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOS4xNlYyYy01IC41LTkgNC43OS05IDEwczQgOS41IDkgMTB2LTcuMTZjLTEtLjQxLTItMS41Mi0yLTIuODRzMS0yLjQzIDItMi44NHpNMTQuODYgMTFIMjJjLS40OC00Ljc1LTQtOC41My05LTl2Ny4xNmMxIC4zIDEuNTIuOTggMS44NiAxLjg0ek0xMyAxNC44NFYyMmM1LS40NyA4LjUyLTQuMjUgOS05aC03LjE0Yy0uMzQuODYtLjg2IDEuNTQtMS44NiAxLjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcmFnSW5kaWNhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxOGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6bS0yLThjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wLTZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem02IDRjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0wIDJjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREeW5hbWljRm9ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDIwdi05aC0yVjRoN2wtMiA1aDJsLTUgMTF6bS0yLTd2N0g0Yy0xLjEgMC0yLS45LTItMnYtM2MwLTEuMS45LTIgMi0yaDExem0tOC43NSAyLjc1aC0xLjV2MS41aDEuNXYtMS41ek0xMyA0djdINGMtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yaDl6TTYuMjUgNi43NWgtMS41djEuNWgxLjV2LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWNvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4wNSA4LjA1YTcuMDAxIDcuMDAxIDAgMCAwLS4wMiA5Ljg4YzEuNDctMy40IDQuMDktNi4yNCA3LjM2LTcuOTNBMTUuOTUyIDE1Ljk1MiAwIDAgMCA4IDE5LjMyYzIuNiAxLjIzIDUuOC43OCA3Ljk1LTEuMzdDMTkuNDMgMTQuNDcgMjAgNCAyMCA0UzkuNTMgNC41NyA2LjA1IDguMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkaXRDYWxlbmRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIySDVhMiAyIDAgMCAxLTItMmwuMDEtMTRjMC0xLjEuODgtMiAxLjk5LTJoMVYyaDJ2Mmg4VjJoMnYyaDFjMS4xIDAgMiAuOSAyIDJ2NmgtMnYtMkg1djEwaDd2MnptMTAuMTMtNS4wMS43MS0uNzFhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0uNzEtLjcxYS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtLjcxLjcxIDIuMTIgMi4xMnptLS43MS43MS01LjMgNS4zSDE0di0yLjEybDUuMy01LjMgMi4xMiAyLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0RG9jdW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxOS44OFYyMmgyLjEybDUuMTctNS4xNy0yLjEyLTIuMTJ6TTIwIDhsLTYtNkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMTJ2LTIuOTVsOC04Vjh6bS03IDFWMy41TDE4LjUgOUgxM3pNMjIuNzEgMTRsLS43MS0uNzFhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0uNzEuNzFMMjIgMTYuMTJsLjcxLS43MWEuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkaXRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIuMTI2IDguMTI1IDEuOTM3LTEuOTM3IDMuNzQ3IDMuNzQ3LTEuOTM3IDEuOTM4ek0yMC43MSA1LjYzbC0yLjM0LTIuMzRhMSAxIDAgMCAwLTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NUwyMC43MSA3YTEgMSAwIDAgMCAwLTEuMzd6TTIgNWw2LjYzIDYuNjNMMyAxNy4yNVYyMWgzLjc1bDUuNjMtNS42MkwxOCAyMWwyLTJMNCAzIDIgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWRpdFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTdWOS45M0wxMy45MyAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTguOTNMMTQuMDcgMTdIN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNWg0LjI0bDcuMi03LjItNC4yNC00LjI0LTcuMiA3LjJ6TTIyLjkxIDIuNDkgMjEuNSAxLjA4Yy0uNzgtLjc4LTIuMDUtLjc4LTIuODMgMGwtMS4wNiAxLjA2IDQuMjQgNC4yNCAxLjA2LTEuMDZjLjc5LS43OC43OS0yLjA1IDAtMi44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMjRWMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE3aDE0djJINXptNy0xMkw1LjMzIDE1aDEzLjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFdXJvU3ltYm9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTguNUE2LjQ4IDYuNDggMCAwIDEgOS4yNCAxNUgxNXYtMkg4LjU4Yy0uMDUtLjMzLS4wOC0uNjYtLjA4LTFzLjAzLS42Ny4wOC0xSDE1VjlIOS4yNEE2LjQ5MSA2LjQ5MSAwIDAgMSAxNSA1LjVjMS42MSAwIDMuMDkuNTkgNC4yMyAxLjU3TDIxIDUuM0E4Ljk1NSA4Ljk1NSAwIDAgMCAxNSAzYy0zLjkyIDAtNy4yNCAyLjUxLTguNDggNkgzdjJoMy4wNmE4LjI2MiA4LjI2MiAwIDAgMCAwIDJIM3YyaDMuNTJjMS4yNCAzLjQ5IDQuNTYgNiA4LjQ4IDYgMi4zMSAwIDQuNDEtLjg3IDYtMi4zbC0xLjc4LTEuNzdjLTEuMTMuOTgtMi42IDEuNTctNC4yMiAxLjU3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFdmVudFJlcGVhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDEyVjZjMC0xLjEtLjktMi0yLTJoLTFWMmgtMnYySDhWMkg2djJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg3di0ySDVWMTBoMTR2Mmgyem0tNS4zNiA4YTMuNTA0IDMuNTA0IDAgMCAwIDYuODYtMWMwLTEuOTMtMS41Ny0zLjUtMy41LTMuNS0uOTUgMC0xLjgyLjM4LTIuNDUgMUgxOFYxOGgtNHYtNGgxLjV2MS40M2MuOS0uODggMi4xNC0xLjQzIDMuNS0xLjQzIDIuNzYgMCA1IDIuMjQgNSA1YTUuMDAyIDUuMDAyIDAgMCAxLTkuOSAxaDEuNTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV2ZW50U2VhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTh2M2gzdi0zaDEwdjNoM3YtNkg0djN6bTE1LThoM3YzaC0zdi0zek0yIDEwaDN2M0gydi0zem0xNSAzSDdWNWMwLTEuMS45LTIgMi0yaDZjMS4xIDAgMiAuOSAyIDJ2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXZlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMmgtNXY1aDV2LTV6TTE2IDF2Mkg4VjFINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMTlhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yaC0xVjFoLTJ6bTMgMThINVY4aDE0djExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFeGl0VG9BcHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wOSAxNS41OSAxMS41IDE3bDUtNS01LTUtMS40MSAxLjQxTDEyLjY3IDExSDN2Mmg5LjY3bC0yLjU4IDIuNTl6TTE5IDNINWEyIDIgMCAwIDAtMiAydjRoMlY1aDE0djE0SDV2LTRIM3Y0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAyMGgxNnYySDR6TTQgMmgxNnYySDR6bTkgN2gzbC00LTQtNCA0aDN2Nkg4bDQgNCA0LTRoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV4cGxvcmVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjE5IDE0LjE5LTEuNDEtMS40MS0xLjU2LTEuNTZMMTEgMTEgOS44MSA5LjgxIDQuOTMgNC45MyAyLjI3IDIuMjcgMSAzLjU0bDIuNzggMi43OGMtLjExLjE2LS4yMS4zMi0uMzEuNDgtLjA0LjA3LS4wOS4xNC0uMTMuMjEtLjA5LjE1LS4xNy4zMS0uMjUuNDctLjA1LjEtLjEuMjEtLjE2LjMyLS4wNi4xNC0uMTMuMjgtLjE5LjQzLS4xLjI0LS4xOS40OC0uMjcuNzNsLS4wOS4zYy0uMDUuMi0uMS4zOS0uMTQuNTktLjAyLjExLS4wNC4yMi0uMDcuMzMtLjA0LjItLjA3LjQtLjA5LjYxLS4wMS4xLS4wMy4yLS4wMy4zLS4wMy4yOS0uMDUuNi0uMDUuOTEgMCA1LjUyIDQuNDggMTAgMTAgMTAgLjMxIDAgLjYyLS4wMi45Mi0uMDVsLjMtLjAzYy4yLS4wMi40MS0uMDYuNjEtLjA5LjExLS4wMi4yMi0uMDQuMzMtLjA3LjItLjA0LjM5LS4wOS41OC0uMTUuMS0uMDMuMi0uMDUuMy0uMDkuMjUtLjA4LjQ5LS4xNy43My0uMjcuMTUtLjA2LjI5LS4xMy40My0uMTkuMTEtLjA1LjIyLS4xLjMzLS4xNi4xNi0uMDguMzEtLjE2LjQ2LS4yNS4wNy0uMDQuMTQtLjA5LjIxLS4xMy4xNi0uMS4zMi0uMi40OC0uMzFMMjAuNDYgMjNsMS4yNy0xLjI3LTIuNjYtMi42Ni00Ljg4LTQuODh6TTYgMThsMy02LjQ2TDEyLjQ2IDE1IDYgMTh6bTE2LTZjMCAuMzEtLjAyLjYyLS4wNS45MmwtLjAzLjNjLS4wMi4yLS4wNi40MS0uMDkuNjEtLjAyLjExLS4wNC4yMi0uMDcuMzMtLjA0LjItLjA5LjM5LS4xNS41OC0uMDMuMS0uMDUuMjEtLjA5LjMxLS4wOC4yNS0uMTcuNDktLjI3LjczLS4wNi4xNS0uMTMuMjktLjE5LjQzLS4wNS4xMS0uMS4yMi0uMTYuMzMtLjA4LjE2LS4xNi4zMS0uMjUuNDYtLjA0LjA3LS4wOS4xNC0uMTMuMjEtLjEuMTYtLjIuMzItLjMxLjQ4TDE1IDEyLjQ2IDE4IDZsLTYuNDYgMy01LjIyLTUuMjJjLjE2LS4xMS4zMi0uMjEuNDgtLjMxLjA3LS4wNC4xNC0uMDkuMjEtLjEzLjE1LS4wOS4zMS0uMTcuNDYtLjI1LjExLS4wNS4yMi0uMS4zMy0uMTYuMTQtLjA2LjI4LS4xMy40My0uMTkuMjQtLjEuNDgtLjE5LjczLS4yN2wuMzEtLjA5Yy4xOS0uMDUuMzgtLjExLjU4LS4xNS4xMS0uMDIuMjItLjA0LjMzLS4wNy4yLS4wNC40LS4wNy42MS0uMDkuMS0uMDEuMi0uMDMuMy0uMDMuMjktLjAyLjYtLjA0LjkxLS4wNCA1LjUyIDAgMTAgNC40OCAxMCAxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwbG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEwLjljLS42MSAwLTEuMS40OS0xLjEgMS4xcy40OSAxLjEgMS4xIDEuMWMuNjEgMCAxLjEtLjQ5IDEuMS0xLjFzLS40OS0xLjEtMS4xLTEuMXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMi4xOSAxMi4xOUw2IDE4bDMuODEtOC4xOUwxOCA2bC0zLjgxIDguMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV4dGVuc2lvbk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljc4IDIyLjYxLTEuNjMtMS42M2MtLjA1IDAtLjEuMDItLjE1LjAyaC0zLjhjMC0yLjcxLTIuMTYtMy0yLjctM3MtMi43LjI5LTIuNyAzSDVjLTEuMSAwLTItLjktMi0ydi0zLjhjMi43MSAwIDMtMi4xNiAzLTIuN3MtLjMtMi43LTIuOTktMi43VjZjMC0uMDUuMDItLjA5LjAyLS4xNEwxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6bS4yMi01LjQ0VjE1YTIuNSAyLjUgMCAwIDAgMC01VjZjMC0xLjEtLjktMi0yLTJoLTRhMi41IDIuNSAwIDAgMC01IDBINi44M0wyMCAxNy4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXh0ZW5zaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSAxMUgxOVY3YzAtMS4xLS45LTItMi0yaC00VjMuNWEyLjUgMi41IDAgMCAwLTUgMFY1SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2My44SDMuNWMxLjQ5IDAgMi43IDEuMjEgMi43IDIuN3MtMS4yMSAyLjctMi43IDIuN0gyVjIwYzAgMS4xLjkgMiAyIDJoMy44di0xLjVjMC0xLjQ5IDEuMjEtMi43IDIuNy0yLjcgMS40OSAwIDIuNyAxLjIxIDIuNyAyLjdWMjJIMTdjMS4xIDAgMi0uOSAyLTJ2LTRoMS41YTIuNSAyLjUgMCAwIDAgMC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMS43NWExLjI1IDEuMjUgMCAxIDAgMCAyLjUgMS4yNSAxLjI1IDAgMCAwIDAtMi41em02IDBhMS4yNSAxLjI1IDAgMSAwIDAgMi41IDEuMjUgMS4yNSAwIDAgMCAwLTIuNXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LTggMC0uMjkuMDItLjU4LjA1LS44NiAyLjM2LTEuMDUgNC4yMy0yLjk4IDUuMjEtNS4zN2E5Ljk3NCA5Ljk3NCAwIDAgMCAxMC40MSAzLjk3Yy4yMS43MS4zMyAxLjQ3LjMzIDIuMjYgMCA0LjQxLTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhY3RDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yMCAzSDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNMTAgMTdINXYtMmg1djJ6bTAtNEg1di0yaDV2MnptMC00SDVWN2g1djJ6bTQuODIgNkwxMiAxMi4xNmwxLjQxLTEuNDEgMS40MSAxLjQyTDE3Ljk5IDlsMS40MiAxLjQyTDE0LjgyIDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYXZvcml0ZUJvcmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgM2MtMS43NCAwLTMuNDEuODEtNC41IDIuMDlDMTAuOTEgMy44MSA5LjI0IDMgNy41IDMgNC40MiAzIDIgNS40MiAyIDguNWMwIDMuNzggMy40IDYuODYgOC41NSAxMS41NEwxMiAyMS4zNWwxLjQ1LTEuMzJDMTguNiAxNS4zNiAyMiAxMi4yOCAyMiA4LjUgMjIgNS40MiAxOS41OCAzIDE2LjUgM3ptLTQuNCAxNS41NS0uMS4xLS4xLS4xQzcuMTQgMTQuMjQgNCAxMS4zOSA0IDguNSA0IDYuNSA1LjUgNSA3LjUgNWMxLjU0IDAgMy4wNC45OSAzLjU3IDIuMzZoMS44N0MxMy40NiA1Ljk5IDE0Ljk2IDUgMTYuNSA1YzIgMCAzLjUgMS41IDMuNSAzLjUgMCAyLjg5LTMuMTQgNS43NC03LjkgMTAuMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhdm9yaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgMjEuMzUtMS40NS0xLjMyQzUuNCAxNS4zNiAyIDEyLjI4IDIgOC41IDIgNS40MiA0LjQyIDMgNy41IDNjMS43NCAwIDMuNDEuODEgNC41IDIuMDlDMTMuMDkgMy44MSAxNC43NiAzIDE2LjUgMyAxOS41OCAzIDIyIDUuNDIgMjIgOC41YzAgMy43OC0zLjQgNi44Ni04LjU1IDExLjU0TDEyIDIxLjM1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA5aC0xVjRIOHYxNmgxNHYtOGMwLTEuNjYtMS4zNC0zLTMtM3ptLTktM2g2djNoLTZWNnptNCAxMWgtNHYtNWg0djV6bTIgMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0wLTNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMyAzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTAtM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxek00LjUgOEEyLjUgMi41IDAgMCAwIDIgMTAuNXY4YTIuNSAyLjUgMCAwIDAgNSAwdi04QTIuNSAyLjUgMCAwIDAgNC41IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZlZWRiYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDEyaC0ydi0yaDJ2MnptMC00aC0yVjZoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWxlUHJlc2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjdsLTUtNXpNNiAyMFY0aDh2NGg0djEySDZ6bTEwLTEwdjVjMCAyLjIxLTEuNzkgNC00IDRzLTQtMS43OS00LTRWOC41YTIuNSAyLjUgMCAwIDEgMi43Ni0yLjQ5YzEuMy4xMyAyLjI0IDEuMzIgMi4yNCAyLjYzVjE1aC0yVjguNWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjVWMTVjMCAxLjEuOSAyIDIgMnMyLS45IDItMnYtNWgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXJBbHRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS43OSA1LjYxQS45OTguOTk4IDAgMCAwIDE5IDRINi44M2w3Ljk3IDcuOTcgNC45OS02LjM2ek0yLjgxIDIuODEgMS4zOSA0LjIyIDEwIDEzdjZjMCAuNTUuNDUgMSAxIDFoMmMuNTUgMCAxLS40NSAxLTF2LTIuMTdsNS43OCA1Ljc4IDEuNDEtMS40MUwyLjgxIDIuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0bTAgMjRIMFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjI1IDUuNjFDNi4yNyA4LjIgMTAgMTMgMTAgMTN2NmMwIC41NS40NSAxIDEgMWgyYy41NSAwIDEtLjQ1IDEtMXYtNnMzLjcyLTQuOCA1Ljc0LTcuMzlBLjk5OC45OTggMCAwIDAgMTguOTUgNEg1LjA0Yy0uODMgMC0xLjMuOTUtLjc5IDEuNjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlckxpc3RBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6TTAgMGgyNG0wIDI0SDBcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC4yNSA1LjY2Yy4xLjEzIDUuNzQgNy4zMyA1Ljc0IDcuMzNWMTljMCAuNTUuNDUgMSAxLjAxIDFoMi4wMWMuNTUgMCAxLjAxLS40NSAxLjAxLTF2LTYuMDJzNS40OS03LjAyIDUuNzUtNy4zNEMyMC4wMyA1LjMyIDIwIDUgMjAgNWMwLS41NS0uNDUtMS0xLjAxLTFINS4wMUM0LjQgNCA0IDQuNDggNCA1YzAgLjIuMDYuNDQuMjUuNjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbmRJblBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOS41OVY4bC02LTZINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4Yy40NSAwIC44NS0uMTUgMS4xOS0uNGwtNC40My00LjQzYy0uOC41Mi0xLjc0LjgzLTIuNzYuODMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1YzAgMS4wMi0uMzEgMS45Ni0uODMgMi43NUwyMCAxOS41OXpNOSAxM2MwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zLTEuMzQtMy0zLTMtMyAxLjM0LTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmluZFJlcGxhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA2YzEuMzggMCAyLjYzLjU2IDMuNTQgMS40NkwxMiAxMGg2VjRsLTIuMDUgMi4wNUE2Ljk3NiA2Ljk3NiAwIDAgMCAxMSA0Yy0zLjUzIDAtNi40MyAyLjYxLTYuOTIgNkg2LjFBNSA1IDAgMCAxIDExIDZ6bTUuNjQgOS4xNEE2Ljg5IDYuODkgMCAwIDAgMTcuOTIgMTJIMTUuOWE1IDUgMCAwIDEtNC45IDRjLTEuMzggMC0yLjYzLS41Ni0zLjU0LTEuNDZMMTAgMTJINHY2bDIuMDUtMi4wNUE2Ljk3NiA2Ljk3NiAwIDAgMCAxMSAxOGMxLjU1IDAgMi45OC0uNTEgNC4xNC0xLjM2TDIwIDIxLjQ5IDIxLjQ5IDIwbC00Ljg1LTQuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbmdlcnByaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuODEgNC40N2MtLjA4IDAtLjE2LS4wMi0uMjMtLjA2QzE1LjY2IDMuNDIgMTQgMyAxMi4wMSAzYy0xLjk4IDAtMy44Ni40Ny01LjU3IDEuNDEtLjI0LjEzLS41NC4wNC0uNjgtLjJhLjUwNi41MDYgMCAwIDEgLjItLjY4QzcuODIgMi41MiA5Ljg2IDIgMTIuMDEgMmMyLjEzIDAgMy45OS40NyA2LjAzIDEuNTIuMjUuMTMuMzQuNDMuMjEuNjdhLjQ5LjQ5IDAgMCAxLS40NC4yOHpNMy41IDkuNzJhLjQ5OS40OTkgMCAwIDEtLjQxLS43OWMuOTktMS40IDIuMjUtMi41IDMuNzUtMy4yN0M5Ljk4IDQuMDQgMTQgNC4wMyAxNy4xNSA1LjY1YzEuNS43NyAyLjc2IDEuODYgMy43NSAzLjI1YS41LjUgMCAwIDEtLjEyLjdjLS4yMy4xNi0uNTQuMTEtLjctLjEyYTkuMzg4IDkuMzg4IDAgMCAwLTMuMzktMi45NGMtMi44Ny0xLjQ3LTYuNTQtMS40Ny05LjQuMDEtMS4zNi43LTIuNSAxLjctMy40IDIuOTYtLjA4LjE0LS4yMy4yMS0uMzkuMjF6bTYuMjUgMTIuMDdhLjQ3LjQ3IDAgMCAxLS4zNS0uMTVjLS44Ny0uODctMS4zNC0xLjQzLTIuMDEtMi42NC0uNjktMS4yMy0xLjA1LTIuNzMtMS4wNS00LjM0IDAtMi45NyAyLjU0LTUuMzkgNS42Ni01LjM5czUuNjYgMi40MiA1LjY2IDUuMzljMCAuMjgtLjIyLjUtLjUuNXMtLjUtLjIyLS41LS41YzAtMi40Mi0yLjA5LTQuMzktNC42Ni00LjM5LTIuNTcgMC00LjY2IDEuOTctNC42NiA0LjM5IDAgMS40NC4zMiAyLjc3LjkzIDMuODUuNjQgMS4xNSAxLjA4IDEuNjQgMS44NSAyLjQyLjE5LjIuMTkuNTEgMCAuNzEtLjExLjEtLjI0LjE1LS4zNy4xNXptNy4xNy0xLjg1Yy0xLjE5IDAtMi4yNC0uMy0zLjEtLjg5LTEuNDktMS4wMS0yLjM4LTIuNjUtMi4zOC00LjM5IDAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41YzAgMS40MS43MiAyLjc0IDEuOTQgMy41Ni43MS40OCAxLjU0LjcxIDIuNTQuNzEuMjQgMCAuNjQtLjAzIDEuMDQtLjEuMjctLjA1LjUzLjEzLjU4LjQxLjA1LjI3LS4xMy41My0uNDEuNTgtLjU3LjExLTEuMDcuMTItMS4yMS4xMnpNMTQuOTEgMjJjLS4wNCAwLS4wOS0uMDEtLjEzLS4wMi0xLjU5LS40NC0yLjYzLTEuMDMtMy43Mi0yLjFhNy4yOTcgNy4yOTcgMCAwIDEtMi4xNy01LjIyYzAtMS42MiAxLjM4LTIuOTQgMy4wOC0yLjk0IDEuNyAwIDMuMDggMS4zMiAzLjA4IDIuOTQgMCAxLjA3LjkzIDEuOTQgMi4wOCAxLjk0czIuMDgtLjg3IDIuMDgtMS45NGMwLTMuNzctMy4yNS02LjgzLTcuMjUtNi44My0yLjg0IDAtNS40NCAxLjU4LTYuNjEgNC4wMy0uMzkuODEtLjU5IDEuNzYtLjU5IDIuOCAwIC43OC4wNyAyLjAxLjY3IDMuNjEuMS4yNi0uMDMuNTUtLjI5LjY0LS4yNi4xLS41NS0uMDQtLjY0LS4yOWExMS4xNCAxMS4xNCAwIDAgMS0uNzMtMy45NmMwLTEuMi4yMy0yLjI5LjY4LTMuMjQgMS4zMy0yLjc5IDQuMjgtNC42IDcuNTEtNC42IDQuNTUgMCA4LjI1IDMuNTEgOC4yNSA3LjgzIDAgMS42Mi0xLjM4IDIuOTQtMy4wOCAyLjk0cy0zLjA4LTEuMzItMy4wOC0yLjk0YzAtMS4wNy0uOTMtMS45NC0yLjA4LTEuOTRzLTIuMDguODctMi4wOCAxLjk0YzAgMS43MS42NiAzLjMxIDEuODcgNC41MS45NS45NCAxLjg2IDEuNDYgMy4yNyAxLjg1LjI3LjA3LjQyLjM1LjM1LjYxLS4wNS4yMy0uMjYuMzgtLjQ3LjM4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaXRTY3JlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA0aDNjMS4xIDAgMiAuOSAyIDJ2MmgtMlY2aC0zVjR6TTQgOFY2aDNWNEg0Yy0xLjEgMC0yIC45LTIgMnYyaDJ6bTE2IDh2MmgtM3YyaDNjMS4xIDAgMi0uOSAyLTJ2LTJoLTJ6TTcgMThINHYtMkgydjJjMCAxLjEuOSAyIDIgMmgzdi0yek0xOCA4SDZ2OGgxMlY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGFreSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIm0xNC4wNSAxNy41OC0uMDEuMDEtMi40LTIuNCAxLjA2LTEuMDYgMS4zNSAxLjM1TDE2LjU0IDEzbDEuMDYgMS4wNi0zLjU0IDMuNTQtLjAxLS4wMnpNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6TTcuMzQgNi4yOGwxLjQxIDEuNDEgMS40MS0xLjQxIDEuMDYgMS4wNi0xLjQxIDEuNDEgMS40MSAxLjQxLTEuMDYgMS4wNi0xLjQxLTEuNDEtMS40MSAxLjQxLTEuMDYtMS4wNiAxLjQxLTEuNDEtMS40MS0xLjQxIDEuMDYtMS4wNnpNMTIgMjBjLTIuMiAwLTQuMi0uOS01LjctMi4zTDE3LjcgNi4zQzE5LjEgNy44IDIwIDkuOCAyMCAxMmMwIDQuNC0zLjYgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsaWdodExhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjUgMTloMTl2MmgtMTl2LTJ6bTE2Ljg0LTMuMTVjLjguMjEgMS42Mi0uMjYgMS44NC0xLjA2LjIxLS44LS4yNi0xLjYyLTEuMDYtMS44NGwtNS4zMS0xLjQyLTIuNzYtOS4wMkwxMC4xMiAydjguMjhMNS4xNSA4Ljk1bC0uOTMtMi4zMi0xLjQ1LS4zOXY1LjE3bDE2LjU3IDQuNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsaWdodFRha2VvZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjUgMTloMTl2MmgtMTl2LTJ6bTE5LjU3LTkuMzZjLS4yMS0uOC0xLjA0LTEuMjgtMS44NC0xLjA2TDE0LjkyIDEwbC02LjktNi40My0xLjkzLjUxIDQuMTQgNy4xNy00Ljk3IDEuMzMtMS45Ny0xLjU0LTEuNDUuMzkgMi41OSA0LjQ5czcuMTItMS45IDE2LjU3LTQuNDNjLjgxLS4yMyAxLjI4LTEuMDUgMS4wNy0xLjg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGlwVG9CYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA3SDd2MmgyVjd6bTAgNEg3djJoMnYtMnptMC04YTIgMiAwIDAgMC0yIDJoMlYzem00IDEyaC0ydjJoMnYtMnptNi0xMnYyaDJjMC0xLjEtLjktMi0yLTJ6bS02IDBoLTJ2MmgyVjN6TTkgMTd2LTJIN2EyIDIgMCAwIDAgMiAyem0xMC00aDJ2LTJoLTJ2MnptMC00aDJWN2gtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnpNNSA3SDN2MTJhMiAyIDAgMCAwIDIgMmgxMnYtMkg1Vjd6bTEwLTJoMlYzaC0ydjJ6bTAgMTJoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGlwVG9Gcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTNoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMiA0di0ySDNhMiAyIDAgMCAwIDIgMnpNMyA5aDJWN0gzdjJ6bTEyIDEyaDJ2LTJoLTJ2MnptNC0xOEg5YTIgMiAwIDAgMC0yIDJ2MTBhMiAyIDAgMCAwIDIgMmgxMGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDEySDlWNWgxMHYxMHptLTggNmgydi0yaC0ydjJ6bS00IDBoMnYtMkg3djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsdXR0ZXJEYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMDcgMTEuN2MuMjktLjM5LjgxLS41NiAxLjI3LS4zNy4xNy4wNy4zMi4xOC40My4zMy4yMi4yOC4yNS41OS4yMi44NS0uMDUuMzMtLjI1LjYzLS41NC43OSAwIDAtNC44NyAyLjk1LTUuMDcgMi42OXMzLjY5LTQuMjkgMy42OS00LjI5ek0yMiAxMGMwIDIuNS0xIDMtMS41IDMtLjIzIDAtLjQ0LS4xLS42Mi0uMjYtLjQ4IDMuMzItMi4zNiA1LjMxLTUuMzMgNS45OS4xMS40NC40OC43Ny45NS43N2guNThjLjIyIDAgLjQxLjE1LjQ4LjM2LjE3LjUyLjY2IDEuMDIgMS4wMiAxLjMyLjI1LjIxLjI0LjU5LS4wMy43OC0uMzQuMjQtLjkuNDktMS43OS41M2EuNTAxLjUwMSAwIDAgMS0uNDUtLjIyYy0uMTMtLjItLjMxLS41Ni0uMzEtMS4wMSAwLS4zLjA0LS41Ny4wOS0uOC0uNzgtLjE2LTEuMzktLjc4LTEuNTUtMS41Ni0uNDkuMDYtMSAuMS0xLjU0LjEtLjg4IDAtMS43LS4wOS0yLjQ1LS4yNS0uMDIuMDgtLjA1LjE2LS4wNS4yNSAwIC41NS40NSAxIDEgMWguNThjLjIyIDAgLjQxLjE1LjQ4LjM2LjE3LjUyLjY2IDEuMDIgMS4wMiAxLjMyLjI1LjIxLjI0LjU5LS4wMy43OC0uMzQuMjQtLjkuNDktMS43OS41M2EuNTAxLjUwMSAwIDAgMS0uNDUtLjIyYy0uMTMtLjItLjMxLS41Ni0uMzEtMS4wMSAwLS4zLjA0LS41Ny4wOS0uOC0uOS0uMTktMS41OS0xLTEuNTktMS45NiAwLS4xOC4wMy0uMzYuMDgtLjUzLTIuNDYtLjg2LTQuMDMtMi43OC00LjQ2LTUuNzQtLjE4LjE3LS4zOC4yNy0uNjIuMjdDMyAxMyAyIDEyLjUgMiAxMGMwLTIuMjcgMS43LTQuNSAzLTQuNS40MyAwIC40OS40OS41Ljg1YTcuOTg5IDcuOTg5IDAgMCAxIDUuNTUtMy4yOWMuMi0uOTYgMS4wOC0xLjU2IDEuOTUtMS41NnYxcy4zMy0uNSAxLS41Yy42NyAwIDEgLjUgMSAuNS0uNDkgMC0uODUuMzUtLjk2Ljc3IDEuODIuNDggMy4zOSAxLjU5IDQuNDYgMy4wOC4wMS0uMzYuMDctLjg1LjUtLjg1IDEuMyAwIDMgMi4yMyAzIDQuNXpNNSAxMWMwIC44MS4xIDEuNTMuMjUgMi4yMS4xOC0uNjkuNDYtMS4zMy44My0xLjkyYTMuNzcgMy43NyAwIDAgMS0uMzQtMS41NEEzLjc2NiAzLjc2NiAwIDAgMSA5LjUgNmMuOTYgMCAxLjg0LjM3IDIuNS45Ny42Ni0uNiAxLjU0LS45NyAyLjUtLjk3IDIuMDcgMCAzLjc1IDEuNjggMy43NSAzLjc1IDAgLjU1LS4xMiAxLjA3LS4zNCAxLjU0LjM3LjU5LjY2IDEuMjQuODQgMS45NC4xNS0uNjguMjUtMS40MS4yNS0yLjIzIDAtMy44Ni0zLjE0LTctNy03cy03IDMuMTQtNyA3em0xMi45OCA0LjI5YzAtLjEuMDItLjE5LjAyLS4yOSAwLTEuMDEtLjI2LTEuOTUtLjctMi43OC0uNjkuNzgtMS42OCAxLjI4LTIuOCAxLjI4LS4yNyAwLS41NC0uMDMtLjc5LS4wOS4xNC0uMjMuMjMtLjQ5LjI3LS43Ny4wMS0uMDcuMDEtLjEzLjAyLS4xOS4xNy4wMy4zMy4wNS41LjA1IDEuNTIgMCAyLjc1LTEuMjMgMi43NS0yLjc1UzE2LjAyIDcgMTQuNSA3Yy0uNjcgMC0xLjMyLjI1LTEuODMuNzJsLS42Ny42LS42Ny0uNkMxMC44MiA3LjI1IDEwLjE3IDcgOS41IDcgNy45OCA3IDYuNzUgOC4yMyA2Ljc1IDkuNzVjMCAxLjM0Ljk2IDIuNDYgMi4yMyAyLjdsLS43Ni44M2MtLjYtLjIyLTEuMTItLjU5LTEuNTMtMS4wNUE2LjAxIDYuMDEgMCAwIDAgNiAxNWMwIC4wOC4wMS4xNS4wMS4yNEM3LjEzIDE3LjA2IDkuMTQgMTggMTIgMThjMi44OCAwIDQuODgtLjkxIDUuOTgtMi43MXpNMTYgOS43NWMwIC45Ny0uNjcgMS43NS0xLjUgMS43NVMxMyAxMC43MiAxMyA5Ljc1IDEzLjY3IDggMTQuNSA4czEuNS43OCAxLjUgMS43NXptLS43NS0uODdjMC0uMjEtLjE3LS4zOC0uMzgtLjM4cy0uMzcuMTctLjM3LjM4LjE3LjM4LjM4LjM4LjM3LS4xOC4zNy0uMzh6TTExIDkuNzVjMCAuOTctLjY3IDEuNzUtMS41IDEuNzVTOCAxMC43MiA4IDkuNzUgOC42NyA4IDkuNSA4czEuNS43OCAxLjUgMS43NXptLS43NS0uODdjMC0uMjEtLjE3LS4zOC0uMzgtLjM4cy0uMzcuMTctLjM3LjM4LjE3LjM4LjM4LjM4LjM3LS4xOC4zNy0uMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZyZWVDYW5jZWxsYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4yMSAyMEg1VjEwaDE0djQuMzhsMi0yVjZjMC0xLjEtLjktMi0yLTJoLTFWMmgtMnYySDhWMkg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAyMGEyIDIgMCAwIDAgMiAyaDguMjFsLTItMnptNS4zMyAyLjVMMTMgMTguOTZsMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjQgMS40MSAxLjQxLTUuNjQgNS42NnpNMTAuNDEgMTQgMTIgMTUuNTkgMTAuNTkgMTcgOSAxNS40MSA3LjQxIDE3IDYgMTUuNTkgNy41OSAxNCA2IDEyLjQxIDcuNDEgMTEgOSAxMi41OSAxMC41OSAxMSAxMiAxMi40MSAxMC40MSAxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR1RyYW5zbGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNEgxMWwtMS0zSDNjLTEuMSAwLTIgLjktMiAydjE1YzAgMS4xLjkgMiAyIDJoOGwxIDNoOWMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek03IDE2Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01YzEuMzUgMCAyLjQ4LjUgMy4zNSAxLjNMOS4wMyA4LjU3Yy0uMzgtLjM2LTEuMDQtLjc4LTIuMDMtLjc4LTEuNzQgMC0zLjE1IDEuNDQtMy4xNSAzLjIxUzUuMjYgMTQuMjEgNyAxNC4yMWMyLjAxIDAgMi44NC0xLjQ0IDIuOTItMi40MUg3di0xLjcxaDQuNjhjLjA3LjMxLjEyLjYxLjEyIDEuMDJDMTEuOCAxMy45NyA5Ljg5IDE2IDcgMTZ6bTYuMTctNS40MmgzLjdjLS40MyAxLjI1LTEuMTEgMi40My0yLjA1IDMuNDctLjMxLS4zNS0uNi0uNzItLjg2LTEuMWwtLjc5LTIuMzd6bTguMzMgOS45MmMwIC41NS0uNDUgMS0xIDFIMTRsMi0yLjUtMS4wNC0zLjEgMy4xIDMuMS45Mi0uOTItMy4zLTMuMjUuMDItLjAyYzEuMTMtMS4yNSAxLjkzLTIuNjkgMi40LTQuMjJIMjB2LTEuM2gtNC41M1Y4aC0xLjI5djEuMjloLTEuNDRMMTEuNDYgNS41aDkuMDRjLjU1IDAgMSAuNDUgMSAxdjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdhdmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNS4yNSA4LjA2OSAyLjgzLTIuODI3IDE0LjEzNCAxNC4xNS0yLjgzIDIuODI3ek05LjQ4NiAzLjgyNyAxMi4zMTQuOTk4bDUuNjU3IDUuNjU2LTIuODI4IDIuODN6TS45OTkgMTIuMzE1bDIuODI4LTIuODI5IDUuNjU3IDUuNjU3LTIuODI4IDIuODI4ek0xIDIxaDEydjJIMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR2VuZXJhdGluZ1Rva2VucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNGMtNC40MiAwLTggMy41OC04IDhzMy41OCA4IDggOCA4LTMuNTggOC04LTMuNTgtOC04LTh6bTMgNi41aC0ydjVIOHYtNUg2VjloNnYxLjV6bTguMjUtNi43NUwyMyA1bC0yLjc1IDEuMjVMMTkgOWwtMS4yNS0yLjc1TDE1IDVsMi43NS0xLjI1TDE5IDFsMS4yNSAyLjc1em0wIDE0TDIzIDE5bC0yLjc1IDEuMjVMMTkgMjNsLTEuMjUtMi43NUwxNSAxOWwyLjc1LTEuMjVMMTkgMTVsMS4yNSAyLjc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHZXRBcHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA5aC00VjNIOXY2SDVsNyA3IDctN3pNNSAxOHYyaDE0di0ySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdpZkJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05LjUgMTN2LTFoMXYxYzAgLjU1LS40NSAxLTEgMWgtMWMtLjU1IDAtMS0uNDUtMS0xdi0yYzAtLjU1LjQ1LTEgMS0xaDFjLjU1IDAgMSAuNDUgMSAxaC0ydjJoMXptMyAxaC0xdi00aDF2NHptNC0zaC0ydi41SDE2djFoLTEuNVYxNGgtMXYtNGgzdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdpZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjUgOUgxM3Y2aC0xLjV6TTkgOUg2Yy0uNiAwLTEgLjUtMSAxdjRjMCAuNS40IDEgMSAxaDNjLjYgMCAxLS41IDEtMXYtMkg4LjV2MS41aC0ydi0zSDEwVjEwYzAtLjUtLjQtMS0xLTF6TTE5IDEwLjVWOWgtNC41djZIMTZ2LTJoMnYtMS41aC0ydi0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcmFkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE3LjI3IDE4LjE4IDIxbC0xLjY0LTcuMDNMMjIgOS4yNGwtNy4xOS0uNjFMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcmFkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA3aDE2djJINFY3em0wIDZoMTZ2LTJINHYyem0wIDRoN3YtMkg0djJ6bTAgNGg3di0ySDR2MnptMTEuNDEtMi44M0wxNCAxNi43NWwtMS40MSAxLjQxTDE1LjQxIDIxIDIwIDE2LjQyIDE4LjU4IDE1bC0zLjE3IDMuMTd6TTQgM3YyaDE2VjNINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JvdXBXb3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNOCAxNy41YTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1ek05LjUgOGEyLjUgMi41IDAgMCAxIDUgMCAyLjUgMi41IDAgMCAxLTUgMHptNi41IDkuNWEyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGVscENlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNi45OSAxNWMtLjcgMC0xLjI2LS41Ni0xLjI2LTEuMjYgMC0uNzEuNTYtMS4yNSAxLjI2LTEuMjUuNzEgMCAxLjI1LjU0IDEuMjUgMS4yNS0uMDEuNjktLjU0IDEuMjYtMS4yNSAxLjI2em0zLjAxLTcuNGMtLjc2IDEuMTEtMS40OCAxLjQ2LTEuODcgMi4xNy0uMTYuMjktLjIyLjQ4LS4yMiAxLjQxaC0xLjgyYzAtLjQ5LS4wOC0xLjI5LjMxLTEuOTguNDktLjg3IDEuNDItMS4zOSAxLjk2LTIuMTYuNTctLjgxLjI1LTIuMzMtMS4zNy0yLjMzLTEuMDYgMC0xLjU4LjgtMS44IDEuNDhsLTEuNjUtLjdDOS4wMSA3LjE1IDEwLjIyIDYgMTEuOTkgNmMxLjQ4IDAgMi40OS42NyAzLjAxIDEuNTIuNDQuNzIuNyAyLjA3LjAyIDMuMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhlbHBPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMThoMnYtMmgtMnYyem0xLTE2QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMC0xNGMtMi4yMSAwLTQgMS43OS00IDRoMmMwLTEuMS45LTIgMi0yczIgLjkgMiAyYzAgMi0zIDEuNzUtMyA1aDJjMC0yLjI1IDMtMi41IDMtNSAwLTIuMjEtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGVscCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTdoLTJ2LTJoMnYyem0yLjA3LTcuNzUtLjkuOTJDMTMuNDUgMTIuOSAxMyAxMy41IDEzIDE1aC0ydi0uNWMwLTEuMS40NS0yLjEgMS4xNy0yLjgzbDEuMjQtMS4yNmMuMzctLjM2LjU5LS44Ni41OS0xLjQxIDAtMS4xLS45LTItMi0ycy0yIC45LTIgMkg4YzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAuODgtLjM2IDEuNjgtLjkzIDIuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhpZGVTb3VyY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuODEgMi44MSAxLjM5IDQuMjJsMi4yNyAyLjI3QTkuOTEgOS45MSAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMDQgMCAzLjkzLS42MSA1LjUxLTEuNjZsMi4yNyAyLjI3IDEuNDEtMS40MUwyLjgxIDIuODF6TTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOCAwLTEuNDguNDEtMi44NiAxLjEyLTQuMDZsMTAuOTQgMTAuOTRDMTQuODYgMTkuNTkgMTMuNDggMjAgMTIgMjB6TTcuOTQgNS4xMiA2LjQ5IDMuNjZBOS45MSA5LjkxIDAgMCAxIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTAgMCAyLjA0LS42MSAzLjkzLTEuNjYgNS41MWwtMS40Ni0xLjQ2QTcuODY5IDcuODY5IDAgMCAwIDIwIDEyYzAtNC40MS0zLjU5LTgtOC04LTEuNDggMC0yLjg2LjQxLTQuMDYgMS4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGlnaGxpZ2h0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNWgtMlYzaDJ2MnptLTIgMTZoMnYtMi41OUwxOS41OSAyMSAyMSAxOS41OSAxOC40MSAxN0gyMXYtMmgtNnY2em00LTEyaDJWN2gtMnYyem0wIDRoMnYtMmgtMnYyem0tOCA4aDJ2LTJoLTJ2MnpNNyA1aDJWM0g3djJ6TTMgMTdoMnYtMkgzdjJ6bTIgNHYtMkgzYzAgMS4xLjkgMiAyIDJ6TTE5IDN2MmgyYzAtMS4xLS45LTItMi0yem0tOCAyaDJWM2gtMnYyek0zIDloMlY3SDN2MnptNCAxMmgydi0ySDd2MnptLTQtOGgydi0ySDN2MnptMC04aDJWM2MtMS4xIDAtMiAuOS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhpZ2hsaWdodE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjU5IDggMTIgMTAuNTkgOS40MSA4IDggOS40MSAxMC41OSAxMiA4IDE0LjU5IDkuNDEgMTYgMTIgMTMuNDEgMTQuNTkgMTYgMTYgMTQuNTkgMTMuNDEgMTIgMTYgOS40MSAxNC41OSA4ek0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTBTMTcuNTMgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGlzdG9yeVRvZ2dsZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjEgMTkuMzcgMSAxLjc0Yy0uOTYuNDQtMi4wMS43My0zLjEuODR2LTIuMDJjLjc0LS4wOSAxLjQ0LS4yOCAyLjEtLjU2ek00LjA3IDEzSDIuMDVjLjExIDEuMS40IDIuMTQuODQgMy4xbDEuNzQtMWMtLjI4LS42Ni0uNDctMS4zNi0uNTYtMi4xek0xNS4xIDQuNjNsMS0xLjc0Yy0uOTYtLjQ0LTItLjczLTMuMS0uODR2Mi4wMmMuNzQuMDkgMS40NC4yOCAyLjEuNTZ6TTE5LjkzIDExaDIuMDJjLS4xMS0xLjEtLjQtMi4xNC0uODQtMy4xbC0xLjc0IDFjLjI4LjY2LjQ3IDEuMzYuNTYgMi4xek04LjkgMTkuMzdsLTEgMS43NGMuOTYuNDQgMi4wMS43MyAzLjEuODR2LTIuMDJjLS43NC0uMDktMS40NC0uMjgtMi4xLS41NnpNMTEgNC4wN1YyLjA1Yy0xLjEuMTEtMi4xNC40LTMuMS44NGwxIDEuNzRjLjY2LS4yOCAxLjM2LS40NyAyLjEtLjU2em03LjM2IDMuMSAxLjc0LTEuMDFjLS42My0uODctMS40LTEuNjQtMi4yNy0yLjI3bC0xLjAxIDEuNzRjLjU5LjQ1IDEuMS45NiAxLjU0IDEuNTR6TTQuNjMgOC45bC0xLjc0LTFjLS40NC45Ni0uNzMgMi0uODQgMy4xaDIuMDJjLjA5LS43NC4yOC0xLjQ0LjU2LTIuMXptMTUuMyA0LjFjLS4wOS43NC0uMjggMS40NC0uNTYgMi4xbDEuNzQgMWMuNDQtLjk2LjczLTIuMDEuODQtMy4xaC0yLjAyem0tMy4xIDUuMzYgMS4wMSAxLjc0Yy44Ny0uNjMgMS42NC0xLjQgMi4yNy0yLjI3bC0xLjc0LTEuMDFjLS40NS41OS0uOTYgMS4xLTEuNTQgMS41NHpNNy4xNyA1LjY0bC0xLTEuNzVjLS44OC42NC0xLjY0IDEuNC0yLjI3IDIuMjhsMS43NCAxLjAxYTcuNyA3LjcgMCAwIDEgMS41My0xLjU0ek01LjY0IDE2LjgzbC0xLjc0IDFjLjYzLjg3IDEuNCAxLjY0IDIuMjcgMi4yN2wxLjAxLTEuNzRhNy43IDcuNyAwIDAgMS0xLjU0LTEuNTN6TTEzIDdoLTJ2NS40MWw0LjI5IDQuMjkgMS40MS0xLjQxLTMuNy0zLjdWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGlzdG9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDNhOSA5IDAgMCAwLTkgOUgxbDMuODkgMy44OS4wNy4xNEw5IDEySDZjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgNy0zLjEzIDctNyA3Yy0xLjkzIDAtMy42OC0uNzktNC45NC0yLjA2bC0xLjQyIDEuNDJBOC45NTQgOC45NTQgMCAwIDAgMTMgMjFhOSA5IDAgMCAwIDAtMTh6bS0xIDV2NWw0LjI4IDIuNTQuNzItMS4yMS0zLjUtMi4wOFY4SDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIbHNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy44MyAxNWgxLjY3Yy41NSAwIDEtLjQ1IDEtMXYtMS41YzAtLjU1LS40NS0xLTEtMUgxN3YtMWgydi41aDEuNXYtMWMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXYxLjVjMCAuNTUuNDUgMSAxIDFIMTl2MWgtMlYxM2gtMS4xN2wyIDJ6TTggMTAuODNWMTVINi41di0yLjVoLTJWMTVIM1Y5aDEuNXYyaDJWOS4zM0wxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40MSAxLjQxLTcuNi03LjZIMTB2LTIuMTdsLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41IDlIOHY2SDYuNXYtMi41aC0yVjE1SDNWOWgxLjV2MmgyVjl6bTEwIDZoM2MuNTUgMCAxLS40NSAxLTF2LTEuNWMwLS41NS0uNDUtMS0xLTFIMTd2LTFoMnYuNWgxLjV2LTFjMC0uNTUtLjQ1LTEtMS0xaC0zYy0uNTUgMC0xIC40NS0xIDF2MS41YzAgLjU1LjQ1IDEgMSAxSDE5djFoLTJWMTNoLTEuNXYxYzAgLjU1LjQ1IDEgMSAxek0xNCAxNXYtMS41aC0yLjVWOUgxMHY2aDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvbWVGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDQgOXYxMmg1di03aDZ2N2g1Vjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAyMHYtNmg0djZoNXYtOGgzTDEyIDMgMiAxMmgzdjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvcml6b250YWxTcGxpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxOWgxOHYtNkgzdjZ6bTAtOGgxOFY5SDN2MnptMC02djJoMThWNUgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3RlbENsYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41OCAxMEgxbDYuMTcgNC40MUw0LjgzIDIyIDExIDE3LjMxIDE3LjE4IDIybC0yLjM1LTcuNTlMMjEgMTBoLTcuNThMMTEgMmwtMi40MiA4em0xMi43OCAxMi0xLjg2LTYuMDFMMjMuNjggMTNoLTMuNDRsLTMuMDggMi4yIDEuNDYgNC43MkwyMS4zNiAyMnpNMTcgOGwtMS44Mi02LTEuMDQgMy40NS43NyAyLjU1SDE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3VyZ2xhc3NEaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNGg4djMuNWwtMi44NCAyLjg0IDEuMjUgMS4yNUwxOCA4LjAxIDE3Ljk5IDhIMThWMkg2djEuMTdsMiAyek0yLjEgMi4xLjY5IDMuNTFsOC45IDguOUw2IDE2bC4wMS4wMUg2VjIyaDEydi0xLjE3bDIuNDkgMi40OSAxLjQxLTEuNDFMMi4xIDIuMXpNMTYgMjBIOHYtMy41bDIuODQtMi44NEwxNiAxOC44M1YyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG91cmdsYXNzRW1wdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMnY2aC4wMUw2IDguMDEgMTAgMTJsLTQgNCAuMDEuMDFINlYyMmgxMnYtNS45OWgtLjAxTDE4IDE2bC00LTQgNC0zLjk5LS4wMS0uMDFIMThWMkg2em0xMCAxNC41VjIwSDh2LTMuNWw0LTQgNCA0em0tNC01LTQtNFY0aDh2My41bC00IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvdXJnbGFzc0Z1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMnY2aC4wMUw2IDguMDEgMTAgMTJsLTQgNCAuMDEuMDFINlYyMmgxMnYtNS45OWgtLjAxTDE4IDE2bC00LTQgNC0zLjk5LS4wMS0uMDFIMThWMkg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIdG1sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDlINXY2SDMuNXYtMi41aC0yVjE1SDBWOWgxLjV2MmgyVjl6bTE0IDBIMTNjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNXYtNC41aDFWMTRIMTZ2LTMuNTFoMVYxNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xek0xMSA5SDZ2MS41aDEuNzVWMTVoMS41di00LjVIMTFWOXptMTMgNnYtMS41aC0yLjVWOUgyMHY2aDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEh0dHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNSAxMWgtMlY5SDF2NmgxLjV2LTIuNWgyVjE1SDZWOUg0LjV2MnptMi41LS41aDEuNVYxNUgxMHYtNC41aDEuNVY5SDd2MS41em01LjUgMEgxNFYxNWgxLjV2LTQuNUgxN1Y5aC00LjV2MS41em05LTEuNUgxOHY2aDEuNXYtMmgyYy44IDAgMS41LS43IDEuNS0xLjV2LTFjMC0uOC0uNy0xLjUtMS41LTEuNXptMCAyLjVoLTJ2LTFoMnYxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEh0dHBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yem0tNiA5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptMy4xLTlIOC45VjZjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjEgMS43MSAwIDMuMSAxLjM5IDMuMSAzLjF2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW1wb3J0YW50RGV2aWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTEuMDEgMTggMTFjLS41NSAwLTEgLjQ1LTEgMXY5YzAgLjU1LjQ1IDEgMSAxaDVjLjU1IDAgMS0uNDUgMS0xdi05YzAtLjU1LS40NS0uOTktMS0uOTl6TTIzIDIwaC01di03aDV2N3pNMjAgMkgyQy44OSAyIDAgMi44OSAwIDR2MTJhMiAyIDAgMCAwIDIgMmg3djJIN3YyaDh2LTJoLTJ2LTJoMnYtMkgyVjRoMTh2NWgyVjRhMiAyIDAgMCAwLTItMnptLTguMDMgN0wxMSA2bC0uOTcgM0g3bDIuNDcgMS43Ni0uOTQgMi45MSAyLjQ3LTEuOCAyLjQ3IDEuOC0uOTQtMi45MUwxNSA5aC0zLjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbmZvT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgN2gydjJoLTJWN3ptMCA0aDJ2NmgtMnYtNnptMS05QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW5mbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTVoLTJ2LTZoMnY2em0wLThoLTJWN2gydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZElucHV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMy4wMUgzYy0xLjEgMC0yIC45LTIgMlY5aDJWNC45OWgxOHYxNC4wM0gzVjE1SDF2NC4wMWMwIDEuMS45IDEuOTggMiAxLjk4aDE4YzEuMSAwIDItLjg4IDItMS45OHYtMTRhMiAyIDAgMCAwLTItMnpNMTEgMTZsNC00LTQtNHYzSDF2MmgxMHYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnN0YWxsRGVza3RvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE3SDRWNWg4VjNINGMtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDR2Mmg4di0yaDRjMS4xIDAgMi0uOSAyLTJ2LTNoLTJ2M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgMTQgNS01LTEuNDEtMS40MUwxOCAxMC4xN1YzaC0ydjcuMTdsLTIuNTktMi41OEwxMiA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnN0YWxsTW9iaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMThIN1Y2aDdWMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0ydi01aC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDE0IDUtNS0xLjQxLTEuNDFMMTkgMTAuMTdWM2gtMnY3LjE3bC0yLjU5LTIuNThMMTMgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW50ZWdyYXRpb25JbnN0cnVjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMy41XCIsXCJyXCI6XCIuNzVcIixcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjMuNVwiLFwiclwiOlwiLjc1XCIsXCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIzLjVcIixcInJcIjpcIi43NVwiLFwiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg1Yy0uMTQgMC0uMjcuMDEtLjQuMDRhMi4wMDggMi4wMDggMCAwIDAtMS40NCAxLjE5Yy0uMS4yMy0uMTYuNDktLjE2Ljc3djE0YzAgLjI3LjA2LjU0LjE2Ljc4cy4yNS40NS40My42NGMuMjcuMjcuNjIuNDcgMS4wMS41NS4xMy4wMi4yNi4wMy40LjAzaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04IDExLjE3LTEuNDEgMS40Mkw2IDEybDMuNTktMy41OUwxMSA5LjgzIDguODMgMTIgMTEgMTQuMTd6bTEtOS45MmMtLjQxIDAtLjc1LS4zNC0uNzUtLjc1cy4zNC0uNzUuNzUtLjc1Ljc1LjM0Ljc1Ljc1LS4zNC43NS0uNzUuNzV6bTIuNDEgMTEuMzRMMTMgMTQuMTcgMTUuMTcgMTIgMTMgOS44M2wxLjQxLTEuNDJMMTggMTJsLTMuNTkgMy41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW52ZXJ0Q29sb3JzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0LjgxVjE5Yy0zLjMxIDAtNi0yLjYzLTYtNS44NyAwLTEuNTYuNjItMy4wMyAxLjc1LTQuMTRMMTIgNC44MU02LjM1IDcuNTZDNC45IDguOTkgNCAxMC45NiA0IDEzLjEzIDQgMTcuNDggNy41OCAyMSAxMiAyMXM4LTMuNTIgOC03Ljg3YzAtMi4xNy0uOS00LjE0LTIuMzUtNS41N0wxMiAyIDYuMzUgNy41NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSmF2YXNjcmlwdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE0di0xaDEuNXYuNWgydi0xSDEzYy0uNTUgMC0xLS40NS0xLTFWMTBjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MWgtMS41di0uNWgtMnYxSDE2Yy41NSAwIDEgLjQ1IDEgMVYxNGMwIC41NS0uNDUgMS0xIDFoLTNjLS41NSAwLTEtLjQ1LTEtMXpNOSA5djQuNUg3LjV2LTFINnYxYzAgLjgzLjY3IDEuNSAxLjUgMS41SDljLjgzIDAgMS41LS42NyAxLjUtMS41VjlIOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSm9pbkZ1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiZWxsaXBzZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyeFwiOlwiM1wiLFwicnlcIjpcIjUuNzRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDEyYzAtLjk3LjIzLTQuMTYgMy4wMy02LjVDOS43NSA1LjE5IDguOSA1IDggNWMtMy44NiAwLTcgMy4xNC03IDdzMy4xNCA3IDcgN2MuOSAwIDEuNzUtLjE5IDIuNTMtLjUtMi44LTIuMzQtMy4wMy01LjUzLTMuMDMtNi41ek0xNiA1Yy0uOSAwLTEuNzUuMTktMi41My41IDIuOCAyLjM0IDMuMDMgNS41MyAzLjAzIDYuNSAwIC45Ny0uMjMgNC4xNi0zLjAzIDYuNS43OC4zMSAxLjYzLjUgMi41My41IDMuODYgMCA3LTMuMTQgNy03cy0zLjE0LTctNy03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRKb2luSW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiZWxsaXBzZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyeFwiOlwiM1wiLFwicnlcIjpcIjUuNzRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4wNCAxNi44N2MtLjMzLjA4LS42OC4xMy0xLjA0LjEzLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTVjLjM2IDAgLjcxLjA1IDEuMDQuMTMuMzktLjU2Ljg4LTEuMTIgMS40OS0xLjYzQzkuNzUgNS4xOSA4LjkgNSA4IDVjLTMuODYgMC03IDMuMTQtNyA3czMuMTQgNyA3IDdjLjkgMCAxLjc1LS4xOSAyLjUzLS41LS42MS0uNTEtMS4xLTEuMDctMS40OS0xLjYzek0xNiA1Yy0uOSAwLTEuNzUuMTktMi41My41LjYxLjUxIDEuMSAxLjA3IDEuNDkgMS42My4zMy0uMDguNjgtLjEzIDEuMDQtLjEzIDIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1Yy0uMzYgMC0uNzEtLjA1LTEuMDQtLjEzLS4zOS41Ni0uODggMS4xMi0xLjQ5IDEuNjMuNzguMzEgMS42My41IDIuNTMuNSAzLjg2IDAgNy0zLjE0IDctN3MtMy4xNC03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSm9pbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiZWxsaXBzZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyeFwiOlwiM1wiLFwicnlcIjpcIjUuNzRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDEyYzAtLjk3LjIzLTQuMTYgMy4wMy02LjVDOS43NSA1LjE5IDguOSA1IDggNWMtMy44NiAwLTcgMy4xNC03IDdzMy4xNCA3IDcgN2MuOSAwIDEuNzUtLjE5IDIuNTMtLjUtMi44LTIuMzQtMy4wMy01LjUzLTMuMDMtNi41ek0xNiA1Yy0uOSAwLTEuNzUuMTktMi41My41LjYxLjUxIDEuMSAxLjA3IDEuNDkgMS42My4zMy0uMDguNjgtLjEzIDEuMDQtLjEzIDIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1Yy0uMzYgMC0uNzEtLjA1LTEuMDQtLjEzLS4zOS41Ni0uODggMS4xMi0xLjQ5IDEuNjMuNzguMzEgMS42My41IDIuNTMuNSAzLjg2IDAgNy0zLjE0IDctN3MtMy4xNC03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSm9pblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImVsbGlwc2VcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwicnhcIjpcIjNcIixcInJ5XCI6XCI1Ljc0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgMTJjMCAuOTctLjIzIDQuMTYtMy4wMyA2LjUuNzguMzEgMS42My41IDIuNTMuNSAzLjg2IDAgNy0zLjE0IDctN3MtMy4xNC03LTctN2MtLjkgMC0xLjc1LjE5LTIuNTMuNSAyLjggMi4zNCAzLjAzIDUuNTMgMy4wMyA2LjV6TTggMTljLjkgMCAxLjc1LS4xOSAyLjUzLS41LS42MS0uNTEtMS4xLTEuMDctMS40OS0xLjYzLS4zMy4wOC0uNjguMTMtMS4wNC4xMy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01Yy4zNiAwIC43MS4wNSAxLjA0LjEzLjM5LS41Ni44OC0xLjEyIDEuNDktMS42M0M5Ljc1IDUuMTkgOC45IDUgOCA1Yy0zLjg2IDAtNyAzLjE0LTcgN3MzLjE0IDcgNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYWJlbEltcG9ydGFudE91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE5SDNsNC41LTdMMyA1aDEyYy42NSAwIDEuMjYuMzEgMS42My44NEwyMSAxMmwtNC4zNyA2LjE2Yy0uMzcuNTItLjk4Ljg0LTEuNjMuODR6bS04LjUtMkgxNWwzLjUtNUwxNSA3SDYuNWwzLjUgNS0zLjUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGFiZWxJbXBvcnRhbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMuNSAxOC45OSAxMSAuMDFjLjY3IDAgMS4yNy0uMzMgMS42My0uODRMMjAuNSAxMmwtNC4zNy02LjE2Yy0uMzYtLjUxLS45Ni0uODQtMS42My0uODRsLTExIC4wMUw4LjM0IDEyIDMuNSAxOC45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGFiZWxPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMuMjUgMi43NSAxNyAxN0wxOSAyMWwtMi0ySDVjLTEuMSAwLTItLjktMi0yVjdjMC0uNTUuMjMtMS4wNS41OS0xLjQxTDIgNGwxLjI1LTEuMjV6TTIyIDEybC00LjM3LTYuMTZDMTcuMjcgNS4zMyAxNi42NyA1IDE2IDVIOGwxMSAxMSAzLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExhYmVsT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjYzIDUuODRDMTcuMjcgNS4zMyAxNi42NyA1IDE2IDVMNSA1LjAxQzMuOSA1LjAxIDMgNS45IDMgN3YxMGMwIDEuMS45IDEuOTkgMiAxLjk5TDE2IDE5Yy42NyAwIDEuMjctLjMzIDEuNjMtLjg0TDIyIDEybC00LjM3LTYuMTZ6TTE2IDE3SDVWN2gxMWwzLjU1IDVMMTYgMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExhYmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNjMgNS44NEMxNy4yNyA1LjMzIDE2LjY3IDUgMTYgNUw1IDUuMDFDMy45IDUuMDEgMyA1LjkgMyA3djEwYzAgMS4xLjkgMS45OSAyIDEuOTlMMTYgMTljLjY3IDAgMS4yNy0uMzMgMS42My0uODRMMjIgMTJsLTQuMzctNi4xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGFuZ3VhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyem02LjkzIDZoLTIuOTVhMTUuNjUgMTUuNjUgMCAwIDAtMS4zOC0zLjU2QTguMDMgOC4wMyAwIDAgMSAxOC45MiA4ek0xMiA0LjA0Yy44MyAxLjIgMS40OCAyLjUzIDEuOTEgMy45NmgtMy44MmMuNDMtMS40MyAxLjA4LTIuNzYgMS45MS0zLjk2ek00LjI2IDE0QzQuMSAxMy4zNiA0IDEyLjY5IDQgMTJzLjEtMS4zNi4yNi0yaDMuMzhjLS4wOC42Ni0uMTQgMS4zMi0uMTQgMiAwIC42OC4wNiAxLjM0LjE0IDJINC4yNnptLjgyIDJoMi45NWMuMzIgMS4yNS43OCAyLjQ1IDEuMzggMy41NkE3Ljk4NyA3Ljk4NyAwIDAgMSA1LjA4IDE2em0yLjk1LThINS4wOGE3Ljk4NyA3Ljk4NyAwIDAgMSA0LjMzLTMuNTZBMTUuNjUgMTUuNjUgMCAwIDAgOC4wMyA4ek0xMiAxOS45NmMtLjgzLTEuMi0xLjQ4LTIuNTMtMS45MS0zLjk2aDMuODJjLS40MyAxLjQzLTEuMDggMi43Ni0xLjkxIDMuOTZ6TTE0LjM0IDE0SDkuNjZjLS4wOS0uNjYtLjE2LTEuMzItLjE2LTIgMC0uNjguMDctMS4zNS4xNi0yaDQuNjhjLjA5LjY1LjE2IDEuMzIuMTYgMiAwIC42OC0uMDcgMS4zNC0uMTYgMnptLjI1IDUuNTZjLjYtMS4xMSAxLjA2LTIuMzEgMS4zOC0zLjU2aDIuOTVhOC4wMyA4LjAzIDAgMCAxLTQuMzMgMy41NnpNMTYuMzYgMTRjLjA4LS42Ni4xNC0xLjMyLjE0LTIgMC0uNjgtLjA2LTEuMzQtLjE0LTJoMy4zOGMuMTYuNjQuMjYgMS4zMS4yNiAycy0uMSAxLjM2LS4yNiAyaC0zLjM4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYXVuY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOUg1VjVoN1YzSDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi03aC0ydjd6TTE0IDN2MmgzLjU5bC05LjgzIDkuODMgMS40MSAxLjQxTDE5IDYuNDFWMTBoMlYzaC03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMZWFkZXJib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAyMUgyVjloNS41djEyem03LjI1LTE4aC01LjV2MThoNS41VjN6TTIyIDExaC01LjV2MTBIMjJWMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpZ2h0YnVsYkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMTdjLS44MyAwLTEuNS0uNjctMS41LTEuNWgzYzAgLjgzLS42NyAxLjUtMS41IDEuNXptMy0yLjVIOVYxNWg2djEuNXptLS4wMy0yLjVIOS4wM0E0Ljk2NiA0Ljk2NiAwIDAgMSA3IDEwYzAtMi43NiAyLjI0LTUgNS01czUgMi4yNCA1IDVjMCAxLjY0LS44IDMuMDktMi4wMyA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaWdodGJ1bGJPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAyMWMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtMUg5djF6bTMtMTlDOC4xNCAyIDUgNS4xNCA1IDljMCAyLjM4IDEuMTkgNC40NyAzIDUuNzRWMTdjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTF2LTIuMjZjMS44MS0xLjI3IDMtMy4zNiAzLTUuNzQgMC0zLjg2LTMuMTQtNy03LTd6bTIgMTEuN1YxNmgtNHYtMi4zQzguNDggMTIuNjMgNyAxMS41MyA3IDljMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNWMwIDIuNDktMS41MSAzLjY1LTMgNC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaWdodGJ1bGIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDIxYzAgLjUuNCAxIDEgMWg0Yy42IDAgMS0uNSAxLTF2LTFIOXYxem0zLTE5QzguMSAyIDUgNS4xIDUgOWMwIDIuNCAxLjIgNC41IDMgNS43VjE3YzAgLjUuNCAxIDEgMWg2Yy42IDAgMS0uNSAxLTF2LTIuM2MxLjgtMS4zIDMtMy40IDMtNS43IDAtMy45LTMuMS03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGluZVN0eWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNmg1di0ySDN2MnptNi41IDBoNXYtMmgtNXYyem02LjUgMGg1di0yaC01djJ6TTMgMjBoMnYtMkgzdjJ6bTQgMGgydi0ySDd2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnpNMyAxMmg4di0ySDN2MnptMTAgMGg4di0yaC04djJ6TTMgNHY0aDE4VjRIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGluZVdlaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTdoMTh2LTJIM3Yyem0wIDNoMTh2LTFIM3Yxem0wLTdoMTh2LTNIM3Yzem0wLTl2NGgxOFY0SDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzaDJ2LTJIM3Yyem0wIDRoMnYtMkgzdjJ6bTAtOGgyVjdIM3Yyem00IDRoMTR2LTJIN3Yyem0wIDRoMTR2LTJIN3Yyek03IDd2MmgxNFY3SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2tDbG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuNSAxNC4yIDIuOSAxLjctLjggMS4zTDEzIDE1di01aDEuNXY0LjJ6TTIyIDE0YzAgNC40MS0zLjU5IDgtOCA4LTIuMDIgMC0zLjg2LS43Ni01LjI3LTJINGMtMS4xNSAwLTItLjg1LTItMlY5YzAtMS4xMi44OS0xLjk2IDItMnYtLjVDNCA0LjAxIDYuMDEgMiA4LjUgMmMyLjM0IDAgNC4yNCAxLjc5IDQuNDYgNC4wOC4zNC0uMDUuNjktLjA4IDEuMDQtLjA4IDQuNDEgMCA4IDMuNTkgOCA4ek02IDdoNXYtLjc0QTIuNTA5IDIuNTA5IDAgMCAwIDguNSA0IDIuNSAyLjUgMCAwIDAgNiA2LjVWN3ptMTQgN2MwLTMuMzEtMi42OS02LTYtNnMtNiAyLjY5LTYgNiAyLjY5IDYgNiA2IDYtMi42OSA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2tPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTdjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem02LTloLTFWNmMwLTIuNzYtMi4yNC01LTUtNVM3IDMuMjQgNyA2aDEuOWMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMSAxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6bTAgMTJINlYxMGgxMnYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9ja091dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxN2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYtOWgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yek04LjkgNmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMXMzLjEgMS4zOSAzLjEgMy4xdjJIOC45VjZ6TTE4IDIwSDZWMTBoMTJ2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2tQZXJzb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMWMuNyAwIDEuMzcuMSAyIC4yOVYxMGMwLTEuMS0uOS0yLTItMmgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDYuMjZBNi45OTUgNi45OTUgMCAwIDEgMTggMTF6TTguOSA2YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xczMuMSAxLjM5IDMuMSAzLjF2Mkg4LjlWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0wIDJjLjgzIDAgMS41LjY3IDEuNSAxLjVTMTguODMgMTggMTggMThzLTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNXptMCA2Yy0xLjAzIDAtMS45NC0uNTItMi40OC0xLjMyLjczLS40MiAxLjU3LS42OCAyLjQ4LS42OHMxLjc1LjI2IDIuNDguNjhjLS41NC44LTEuNDUgMS4zMi0yLjQ4IDEuMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2tSZXNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDNhOSA5IDAgMCAwLTkgOUgxbDQgNCA0LTRINmMwLTMuODYgMy4xNC03IDctN3M3IDMuMTQgNyA3LTMuMTQgNy03IDdjLTEuOSAwLTMuNjItLjc2LTQuODgtMS45OUw2LjcgMTguNDJBOC45ODIgOC45ODIgMCAwIDAgMTMgMjFhOSA5IDAgMCAwIDAtMTh6bTIgOHYtMWMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2MWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xem0tMSAwaC0ydi0xYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yem0tNiA5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptMy4xLTlIOC45VjZjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjEgMS43MSAwIDMuMSAxLjM5IDMuMSAzLjF2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9naW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA3IDkuNiA4LjRsMi42IDIuNkgydjJoMTAuMmwtMi42IDIuNkwxMSAxN2w1LTUtNS01em05IDEyaC04djJoOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yaC04djJoOHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9nb3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgNy0xLjQxIDEuNDFMMTguMTcgMTFIOHYyaDEwLjE3bC0yLjU4IDIuNThMMTcgMTdsNS01ek00IDVoOFYzSDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoOHYtMkg0VjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExveWFsdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS40MSAxMS41OC05LTlDMTIuMDUgMi4yMiAxMS41NSAyIDExIDJINGMtMS4xIDAtMiAuOS0yIDJ2N2MwIC41NS4yMiAxLjA1LjU5IDEuNDJsOSA5Yy4zNi4zNi44Ni41OCAxLjQxLjU4LjU1IDAgMS4wNS0uMjIgMS40MS0uNTlsNy03Yy4zNy0uMzYuNTktLjg2LjU5LTEuNDEgMC0uNTUtLjIzLTEuMDYtLjU5LTEuNDJ6TTUuNSA3QzQuNjcgNyA0IDYuMzMgNCA1LjVTNC42NyA0IDUuNSA0IDcgNC42NyA3IDUuNSA2LjMzIDcgNS41IDd6bTExLjc3IDguMjdMMTMgMTkuNTRsLTQuMjctNC4yN0EyLjUgMi41IDAgMCAxIDEwLjUgMTFjLjY5IDAgMS4zMi4yOCAxLjc3Ljc0bC43My43Mi43My0uNzNhMi41IDIuNSAwIDAgMSAzLjU0IDMuNTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hbmFnZUFjY291bnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiOFwiLFwiclwiOlwiNFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC42NyAxMy4wMmMtLjIyLS4wMS0uNDQtLjAyLS42Ny0uMDItMi40MiAwLTQuNjguNjctNi42MSAxLjgyLS44OC41Mi0xLjM5IDEuNS0xLjM5IDIuNTNWMjBoOS4yNmE2Ljk2MyA2Ljk2MyAwIDAgMS0uNTktNi45OHpNMjAuNzUgMTZjMC0uMjItLjAzLS40Mi0uMDYtLjYzbDEuMTQtMS4wMS0xLTEuNzMtMS40NS40OWMtLjMyLS4yNy0uNjgtLjQ4LTEuMDgtLjYzTDE4IDExaC0ybC0uMyAxLjQ5Yy0uNC4xNS0uNzYuMzYtMS4wOC42M2wtMS40NS0uNDktMSAxLjczIDEuMTQgMS4wMWMtLjAzLjIxLS4wNi40MS0uMDYuNjNzLjAzLjQyLjA2LjYzbC0xLjE0IDEuMDEgMSAxLjczIDEuNDUtLjQ5Yy4zMi4yNy42OC40OCAxLjA4LjYzTDE2IDIxaDJsLjMtMS40OWMuNC0uMTUuNzYtLjM2IDEuMDgtLjYzbDEuNDUuNDkgMS0xLjczLTEuMTQtMS4wMWMuMDMtLjIxLjA2LS40MS4wNi0uNjN6TTE3IDE4Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFuYWdlSGlzdG9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjY5IDE4LjM3IDEuMTQtMS0xLTEuNzMtMS40NS40OWMtLjMyLS4yNy0uNjgtLjQ4LTEuMDgtLjYzTDIwIDE0aC0ybC0uMyAxLjQ5Yy0uNC4xNS0uNzYuMzYtMS4wOC42M2wtMS40NS0uNDktMSAxLjczIDEuMTQgMWMtLjA4LjUtLjA4Ljc2IDAgMS4yNmwtMS4xNCAxIDEgMS43MyAxLjQ1LS40OWMuMzIuMjcuNjguNDggMS4wOC42M0wxOCAyNGgybC4zLTEuNDljLjQtLjE1Ljc2LS4zNiAxLjA4LS42M2wxLjQ1LjQ5IDEtMS43My0xLjE0LTFjLjA4LS41MS4wOC0uNzcgMC0xLjI3ek0xOSAyMWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6TTExIDd2NS40MWwyLjM2IDIuMzYgMS4wNC0xLjc5LTEuNC0xLjM5VjdoLTJ6bTEwIDVhOSA5IDAgMCAwLTktOUM5LjE3IDMgNi42NSA0LjMyIDUgNi4zNlY0SDN2Nmg2VjhINi4yNkE3LjAxIDcuMDEgMCAwIDEgMTIgNWMzLjg2IDAgNyAzLjE0IDcgN2gyem0tMTAuMTQgNi45MWMtMi45OS0uNDktNS4zNS0yLjktNS43OC01LjkxSDMuMDZjLjUgNC41IDQuMzEgOCA4Ljk0IDhoLjA3bC0xLjIxLTIuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcmtBc1VucmVhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguODMgN2gtMi42TDEwLjUgNCA0IDcuNFYxN2MtMS4xIDAtMi0uOS0yLTJWNy4xN2MwLS41My4zMi0xLjA5LjgtMS4zNEwxMC41IDJsNy41NCAzLjgzYy40My4yMy43My43Ljc5IDEuMTd6TTIwIDhIN2MtMS4xIDAtMiAuOS0yIDJ2OWMwIDEuMS45IDIgMiAyaDEzYzEuMSAwIDItLjkgMi0ydi05YzAtMS4xLS45LTItMi0yem0wIDMuNjdMMTMuNSAxNSA3IDExLjY3VjEwbDYuNSAzLjMzTDIwIDEwdjEuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcmt1bnJlYWRNYWlsYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0tNjE4LTMwMDBINzgyVjYwMEgtNjE4ek0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNkgxMHY2SDhWNGg2VjBINnY2SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWF4aW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM2gxOHYySDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1lZGlhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDEyLTQgNC0xLjQxLTEuNDFMMTguMTcgMTNoLTUuMjNBOC45NzQgOC45NzQgMCAwIDEgOCAyMC4wNSAzLjAwNSAzLjAwNSAwIDAgMSA1IDIzYy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zYy45NSAwIDEuNzguNDUgMi4zMyAxLjE0QTYuOTY5IDYuOTY5IDAgMCAwIDEwLjkxIDEzaC0zLjFDNy40IDE0LjE2IDYuMyAxNSA1IDE1Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zYzEuMyAwIDIuNC44NCAyLjgyIDJoMy4xYy0uMzItMi4yMy0xLjY5LTQuMS0zLjU5LTUuMTRDNi43OCA2LjU1IDUuOTUgNyA1IDcgMy4zNCA3IDIgNS42NiAyIDRzMS4zNC0zIDMtM2EyLjk5IDIuOTkgMCAwIDEgMi45OSAyLjk1QTguOTc0IDguOTc0IDAgMCAxIDEyLjkzIDExaDUuMjNsLTEuNTgtMS41OUwxOCA4bDQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWluaW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTloMTJ2Mkg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb2RlbFRyYWluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxMy41YzAgMi0yLjUgMy41LTIuNSA1aC0yYzAtMS41LTIuNS0zLTIuNS01IDAtMS45MyAxLjU3LTMuNSAzLjUtMy41czMuNSAxLjU3IDMuNSAzLjV6bS0yLjUgNmgtMlYyMWgydi0xLjV6bTYtNi41YzAgMS42OC0uNTkgMy4yMS0xLjU4IDQuNDJsMS40MiAxLjQyYTguOTc4IDguOTc4IDAgMCAwLTEtMTIuNjhsLTEuNDIgMS40MkE2Ljk5MyA2Ljk5MyAwIDAgMSAxOSAxM3ptLTMtOC00LTR2M2E5IDkgMCAwIDAtOSA5YzAgMi4yMy44MiA0LjI3IDIuMTYgNS44NGwxLjQyLTEuNDJBNi45MzggNi45MzggMCAwIDEgNSAxM2MwLTMuODYgMy4xNC03IDctN3YzbDQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV0d29ya1BpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNC42NyAzLjQxIDYuMDkgMiA3LjVsOC41IDguNUg0djJoMTZ2LTJoLTYuNWw1LjE1LTUuMTVBMi41IDIuNSAwIDEgMCAxOS41IDYgMi41IDIuNSAwIDAgMCAxNyA4LjVjMCAuMzUuMDcuNjcuMi45N2wtNS4yIDUuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV3TGFiZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMSAxMi00LjM3IDYuMTZjLS4zNy41Mi0uOTguODQtMS42My44NGgtM3YtNkg5di0zSDNWN2MwLTEuMS45LTIgMi0yaDEwYy42NSAwIDEuMjYuMzEgMS42My44NEwyMSAxMnptLTExIDNIN3YtM0g1djNIMnYyaDN2M2gydi0zaDN2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5leHRQbGFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNiAxMS45N2gtNWwyLjI2LTIuMjZhNC45NCA0Ljk0IDAgMCAwLTMuNzYtMS43NGMtMi4zNyAwLTQuMzUgMS42Ni00Ljg2IDMuODhsLS45Ni0uMzJjLjY0LTIuNjIgMy00LjU2IDUuODItNC41NiAxLjc4IDAgMy4zNy43OSA0LjQ3IDIuMDNMMTggOC45N3Y1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROaWdodGxpZ2h0Um91bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjAxIDEyYzAtMy41NyAyLjItNi42MiA1LjMxLTcuODcuODktLjM2Ljc1LTEuNjktLjE5LTEuOS0xLjEtLjI0LTIuMjctLjMtMy40OC0uMTQtNC41MS42LTguMTIgNC4zMS04LjU5IDguODNDNC40NCAxNi45MyA5LjEzIDIyIDE1LjAxIDIyYy43MyAwIDEuNDMtLjA4IDIuMTItLjIzLjk1LS4yMSAxLjEtMS41My4yLTEuOUE4LjQ2IDguNDYgMCAwIDEgMTIuMDEgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vQWNjb3VudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4xOCAxMC45NGMuMi0uNDQuMzItLjkyLjMyLTEuNDRDMTUuNSA3LjU3IDEzLjkzIDYgMTIgNmMtLjUyIDAtMSAuMTItMS40NC4zMmw0LjYyIDQuNjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMTNjLTIuMzIgMC00LjQ1LjgtNi4xNCAyLjEyQTcuOTU3IDcuOTU3IDAgMCAxIDQgMTJjMC0xLjg1LjYzLTMuNTUgMS42OS00LjlsMi44NiAyLjg2YTMuNDcgMy40NyAwIDAgMCAyLjk5IDIuOTlsMi4yIDIuMmMtLjU3LS4xLTEuMTUtLjE1LTEuNzQtLjE1em02LjMxIDEuOUw3LjEgNS42OUE3LjkwMiA3LjkwMiAwIDAgMSAxMiA0YzQuNDIgMCA4IDMuNTggOCA4IDAgMS44NS0uNjMgMy41NC0xLjY5IDQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9pc2VBd2FyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE1aC0yYTEuMDAzIDEuMDAzIDAgMCAxLTEuOTUuMzJjLS4xNS0uNDQtLjQtMS4wOC0uOTMtMS42MWwtMS4zNi0xLjM2QzkuMjggMTEuODcgOSAxMS4xOSA5IDEwLjVhMi41IDIuNSAwIDAgMSA0Ljk1LS41aDIuMDJjLS4yNS0yLjI1LTIuMTYtNC00LjQ3LTRDOS4wMiA2IDcgOC4wMiA3IDEwLjVjMCAxLjIyLjQ5IDIuNDEgMS4zNSAzLjI3bDEuMzYgMS4zNmMuMTcuMTcuMzEuNDQuNDQuODJBMy4wMTMgMy4wMTMgMCAwIDAgMTMgMThjMS42NSAwIDMtMS4zNSAzLTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTMuNVwiLFwiY3lcIjpcIjEyLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0zLjYgNi41OCAxLjU4IDEuMjZjLjM1LS41Ny43Ny0xLjEgMS4yNC0xLjU3TDQuODUgNS4wMmMtLjQ3LjQ3LS44OCAxLTEuMjUgMS41NnpNOS40NiA0LjQybC0uODctMS44MWMtLjYzLjIzLTEuMjQuNTItMS44Ljg3bC44NyAxLjgxYy41Ni0uMzYgMS4xNi0uNjUgMS44LS44N3pNNC40OSA5LjI2bC0xLjk2LS40NWMtLjIxLjYzLS4zNiAxLjI4LS40NCAxLjk1bDEuOTYuNDVhNy45IDcuOSAwIDAgMSAuNDQtMS45NXpNMjAuNCA2LjU4YTkuNCA5LjQgMCAwIDAtMS4yNS0xLjU2bC0xLjU4IDEuMjZjLjQ4LjQ3Ljg5Ljk5IDEuMjQgMS41N2wxLjU5LTEuMjd6TTQuMDQgMTIuNzlsLTEuOTYuNDVjLjA4LjY3LjIzIDEuMzMuNDQgMS45NWwxLjk3LS40NWMtLjIyLS42Mi0uMzgtMS4yNy0uNDUtMS45NXpNMTcuMjEgMy40OGMtLjU3LS4zNS0xLjE3LS42NC0xLjgtLjg3bC0uODcgMS44MWMuNjQuMjIgMS4yNC41MSAxLjguODdsLjg3LTEuODF6TTEzIDQuMDdWMi4wNWMtLjMzLS4wMy0uNjYtLjA1LTEtLjA1cy0uNjcuMDItMSAuMDV2Mi4wMmMuMzMtLjA0LjY2LS4wNyAxLS4wN3MuNjcuMDMgMSAuMDd6TTExIDE5LjkzdjIuMDJjLjMzLjAzLjY2LjA1IDEgLjA1cy42Ny0uMDIgMS0uMDV2LTIuMDJjLS4zMy4wNC0uNjYuMDctMSAuMDdzLS42Ny0uMDMtMS0uMDd6TTE5LjUxIDE0Ljc0bDEuOTcuNDVjLjIxLS42My4zNi0xLjI4LjQ0LTEuOTVsLTEuOTYtLjQ1Yy0uMDcuNjgtLjIzIDEuMzMtLjQ1IDEuOTV6TTE5Ljk2IDExLjIxbDEuOTYtLjQ1YTkuNjkgOS42OSAwIDAgMC0uNDQtMS45NWwtMS45Ny40NWMuMjIuNjIuMzggMS4yNy40NSAxLjk1ek0xNy41OCAxNy43M2wxLjU4IDEuMjZjLjQ3LS40OC44OC0xIDEuMjUtMS41NmwtMS41OC0xLjI2YTkuNCA5LjQgMCAwIDEtMS4yNSAxLjU2ek02Ljc5IDIwLjUyYy41Ny4zNSAxLjE3LjY0IDEuOC44N2wuODctMS44MWMtLjY0LS4yMi0xLjI0LS41MS0xLjgtLjg3bC0uODcgMS44MXpNMTQuNTQgMTkuNThsLjg3IDEuODFjLjYzLS4yMyAxLjI0LS41MiAxLjgtLjg3bC0uODctMS44MWMtLjU2LjM2LTEuMTYuNjUtMS44Ljg3ek0zLjYgMTcuNDJhOS40IDkuNCAwIDAgMCAxLjI1IDEuNTZsMS41OC0xLjI2YTcuODcgNy44NyAwIDAgMS0xLjI0LTEuNTdMMy42IDE3LjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb2lzZUNvbnRyb2xPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzEuNDQgMCAyLjc5LjM4IDMuOTUgMS4wNUwxNy40IDMuNkMxNS44NSAyLjU5IDEzLjk5IDIgMTIgMnMtMy44NS41OS01LjQxIDEuNTlsMS40NSAxLjQ1QTguMDM0IDguMDM0IDAgMCAxIDEyIDR6TTIwIDEyYzAgMS40NC0uMzggMi43OS0xLjA1IDMuOTVsMS40NSAxLjQ1YzEuMDEtMS41NSAxLjYtMy40MSAxLjYtNS40cy0uNTktMy44NS0xLjU5LTUuNDFsLTEuNDUgMS40NUE4LjAzNCA4LjAzNCAwIDAgMSAyMCAxMnpNMTIgMjBjLTEuNDQgMC0yLjc5LS4zOC0zLjk1LTEuMDVMNi42IDIwLjRDOC4xNSAyMS40MSAxMC4wMSAyMiAxMiAyMnMzLjg1LS41OSA1LjQxLTEuNTlsLTEuNDUtMS40NUE4LjAzNCA4LjAzNCAwIDAgMSAxMiAyMHpNNCAxMmMwLTEuNDQuMzgtMi43OSAxLjA1LTMuOTVMMy41OSA2LjU5QzIuNTkgOC4xNSAyIDEwLjAxIDIgMTJzLjU5IDMuODUgMS41OSA1LjQxbDEuNDUtMS40NUE4LjAzNCA4LjAzNCAwIDAgMSA0IDEyek0xMS41IDZDOS4wMiA2IDcgOC4wMiA3IDEwLjVjMCAxLjIyLjQ5IDIuNDEgMS4zNSAzLjI3bDEuMzYgMS4zNmMuMTcuMTcuMzEuNDQuNDQuODJBMy4wMTMgMy4wMTMgMCAwIDAgMTMgMThjMS42NSAwIDMtMS4zNSAzLTNoLTJhMS4wMDMgMS4wMDMgMCAwIDEtMS45NS4zMmMtLjE1LS40NC0uNC0xLjA4LS45My0xLjYxbC0xLjM2LTEuMzZDOS4yOCAxMS44NyA5IDExLjE5IDkgMTAuNWEyLjUgMi41IDAgMCAxIDQuOTUtLjVoMi4wMmMtLjI1LTIuMjUtMi4xNi00LTQuNDctNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMy41XCIsXCJjeVwiOlwiMTIuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vdEFjY2Vzc2libGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCAxMS4wNS0zLjQyLTMuNDJjLjMyLS4zNC43NC0uNTcgMS4yMy0uNjEuNDgtLjA0Ljg0LjA3IDEuMi4yNi4xOS4xLjM5LjIyLjYzLjQ2bDEuMjkgMS40M2MuOTggMS4wOCAyLjUzIDEuODUgNC4wNyAxLjgzdjJjLTEuNzUtLjAxLTMuNzEtLjg4LTUtMS45NXpNMTIgNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6TTIuODEgMi44MSAxLjM5IDQuMjIgMTAgMTIuODNWMTVjMCAxLjEuOSAyIDIgMmgyLjE3bDUuNjEgNS42MSAxLjQxLTEuNDFMMi44MSAyLjgxek0xMCAyMGMtMS42NiAwLTMtMS4zNC0zLTMgMC0xLjMxLjg0LTIuNDEgMi0yLjgzVjEyLjFhNSA1IDAgMSAwIDUuOSA1LjloLTIuMDdjLS40MSAxLjE2LTEuNTIgMi0yLjgzIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vdFN0YXJ0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMSAxNEg5VjhoMnY4em0xIDBWOGw1IDQtNSA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RlQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0yIDE0aC0zdjNoLTJ2LTNIOHYtMmgzdi0zaDJ2M2gzdjJ6bS0zLTdWMy41TDE4LjUgOUgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT2ZmbGluZUJvbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyLjAyYy01LjUxIDAtOS45OCA0LjQ3LTkuOTggOS45OHM0LjQ3IDkuOTggOS45OCA5Ljk4IDkuOTgtNC40NyA5Ljk4LTkuOThTMTcuNTEgMi4wMiAxMiAyLjAyek0xMS40OCAyMHYtNi4yNkg4TDEzIDR2Ni4yNmgzLjM1TDExLjQ4IDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPZmZsaW5lUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6bTUgMTZIN3YtMmgxMHYyem0tNi43LTRMNyAxMC43bDEuNC0xLjQgMS45IDEuOSA1LjMtNS4zTDE3IDcuMyAxMC4zIDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPbkRldmljZVRyYWluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTZoMnYxaC0yek0xMiAxMWMtMS4xIDAtMiAuOS0yIDIgMCAuNzQuNCAxLjM4IDEgMS43MnYuNzhoMnYtLjc4Yy42LS4zNSAxLS45OCAxLTEuNzIgMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEuMDEgNiAxYy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE4IDE4SDZWNmgxMnYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMDEgMTUuOTVjLjYyLS44My45OS0xLjg0Ljk5LTIuOTVzLS4zNy0yLjEyLS45OS0yLjk1bC0xLjA3IDEuMDdjLjM1LjU0LjU2IDEuMTkuNTYgMS44OHMtLjIxIDEuMzQtLjU2IDEuODhsMS4wNyAxLjA3ek05LjA2IDE0Ljg4Yy0uMzUtLjU0LS41Ni0xLjE5LS41Ni0xLjg4IDAtMS45MyAxLjU3LTMuNSAzLjUtMy41djEuMjVsMi4yNS0yLTIuMjUtMlY4Yy0yLjc2IDAtNSAyLjI0LTUgNSAwIDEuMTEuMzcgMi4xMi45OSAyLjk1bDEuMDctMS4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT25saW5lUHJlZGljdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTEuNWMwIDItMi41IDMuNS0yLjUgNWgtMmMwLTEuNS0yLjUtMy0yLjUtNUM4LjUgOS41NyAxMC4wNyA4IDEyIDhzMy41IDEuNTcgMy41IDMuNXptLTIuNSA2aC0yVjE5aDJ2LTEuNXptOS01LjVjMC0yLjc2LTEuMTItNS4yNi0yLjkzLTcuMDdsLTEuMDYgMS4wNkE4LjQ4MSA4LjQ4MSAwIDAgMSAyMC41IDEyYzAgMi4zNC0uOTUgNC40Ny0yLjQ5IDYuMDFsMS4wNiAxLjA2QTkuOTY5IDkuOTY5IDAgMCAwIDIyIDEyek0zLjUgMTJjMC0yLjM0Ljk1LTQuNDcgMi40OS02LjAxTDQuOTMgNC45M0E5Ljk2OSA5Ljk2OSAwIDAgMCAyIDEyYzAgMi43NiAxLjEyIDUuMjYgMi45MyA3LjA3bDEuMDYtMS4wNkE4LjQ4MSA4LjQ4MSAwIDAgMSAzLjUgMTJ6bTE0IDBjMCAxLjUyLS42MiAyLjg5LTEuNjEgMy44OWwxLjA2IDEuMDZBNi45NzYgNi45NzYgMCAwIDAgMTkgMTJjMC0xLjkzLS43OC0zLjY4LTIuMDUtNC45NWwtMS4wNiAxLjA2Yy45OSAxIDEuNjEgMi4zNyAxLjYxIDMuODl6TTcuMDUgMTYuOTVsMS4wNi0xLjA2Yy0xLTEtMS42MS0yLjM3LTEuNjEtMy44OXMuNjItMi44OSAxLjYxLTMuODlMNy4wNSA3LjA1QTYuOTc2IDYuOTc2IDAgMCAwIDUgMTJjMCAxLjkzLjc4IDMuNjggMi4wNSA0Ljk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPcGFjaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAwSDB2MjRoMjRWMHptMCAwSDB2MjRoMjRWMHpNMCAyNGgyNFYwSDB2MjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjY2IDggMTIgMi4zNSA2LjM0IDhBOC4wMiA4LjAyIDAgMCAwIDQgMTMuNjRjMCAyIC43OCA0LjExIDIuMzQgNS42N2E3Ljk5IDcuOTkgMCAwIDAgMTEuMzIgMGMxLjU2LTEuNTYgMi4zNC0zLjY3IDIuMzQtNS42N1MxOS4yMiA5LjU2IDE3LjY2IDh6TTYgMTRjLjAxLTIgLjYyLTMuMjcgMS43Ni00LjRMMTIgNS4yN2w0LjI0IDQuMzhDMTcuMzggMTAuNzcgMTcuOTkgMTIgMTggMTRINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3BlbkluQnJvd3NlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRINWEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoNHYtMkg1VjhoMTR2MTBoLTR2Mmg0YzEuMSAwIDItLjkgMi0yVjZhMiAyIDAgMCAwLTItMnptLTcgNi00IDRoM3Y2aDJ2LTZoM2wtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPcGVuSW5GdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTFWM2gtOGwzLjI5IDMuMjktMTAgMTBMMyAxM3Y4aDhsLTMuMjktMy4yOSAxMC0xMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3BlbkluTmV3T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNzkgNS44IDE0IDNoN3Y3bC0yLjc5LTIuOC00LjA5IDQuMDktMS40MS0xLjQxIDQuMDgtNC4wOHpNMTkgMTJ2NC4xN2wyIDJWMTJoLTJ6bS43OCAxMC42MUwxOC4xNyAyMUg1YTIgMiAwIDAgMS0yLTJWNS44M0wxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6TTE2LjE3IDE5bC00Ljg4LTQuODgtMS41OSAxLjU5LTEuNDEtMS40MSAxLjU5LTEuNTlMNSA3LjgzVjE5aDExLjE3ek03LjgzIDVIMTJWM0g1LjgzbDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3BlbkluTmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTlINVY1aDdWM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3BlbldpdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA5aDRWNmgzbC01LTUtNSA1aDN2M3ptLTEgMUg2VjdsLTUgNSA1IDV2LTNoM3YtNHptMTQgMi01LTV2M2gtM3Y0aDN2M2w1LTV6bS05IDNoLTR2M0g3bDUgNSA1LTVoLTN2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGJvbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xLjg4IDkuNTRMOC45MiAxNi41bC0xLjQxLTEuNDEgNC45Ni00Ljk2TDEwLjM0IDhsNS42NS4wMS4wMSA1LjY1LTIuMTItMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0Ym91bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xLjg4IDkuNTRMOC45MiAxNi41bC0xLjQxLTEuNDEgNC45Ni00Ljk2TDEwLjM0IDhsNS42NS4wMS4wMSA1LjY1LTIuMTItMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0Ym94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDQuOTljLTEuMTEgMC0xLjk4LjktMS45OCAyTDMgMTljMCAxLjEuODggMiAxLjk5IDJIMTljMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxMmgtNGMwIDEuNjYtMS4zNSAzLTMgM3MtMy0xLjM0LTMtM0g0Ljk5VjVIMTl2MTB6TTggMTFoMnYzaDR2LTNoMmwtNC00LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0Z29pbmdNYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAxMWMuMTcgMCAuMzQuMDEuNS4wM1Y2Ljg3QzE5IDUuODQgMTguMTYgNSAxNy4xMyA1SDMuODdDMi44NCA1IDIgNS44NCAyIDYuODd2MTAuMjZDMiAxOC4xNiAyLjg0IDE5IDMuODcgMTloOS43M2MtLjM4LS43NS0uNi0xLjYtLjYtMi41IDAtMy4wNCAyLjQ2LTUuNSA1LjUtNS41em0tOC4xIDJMNCA5LjE5VjdoLjIzbDYuMTggMy42OEwxNi43NCA3SDE3djIuMTZMMTAuNCAxM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkgMTMtMS40MSAxLjQxTDE5LjE3IDE2SDE1djJoNC4xN2wtMS41OCAxLjU5TDE5IDIxbDQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNOSAxMmMtLjU1IDAtMS0uNDUtMS0xVjhjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjNjMCAuNTUtLjQ1IDEtMSAxem01IDZoLTR2LTJjMC0xLjEuOS0yIDItMnMyIC45IDIgMnYyem0yLTdjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTFWOGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0cHV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgMTcgNS01LTUtNS0xLjQxIDEuNDFMMTguMTcgMTFIOXYyaDkuMTdsLTIuNTggMi41OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTlINVY1aDE0djJoMlY1YTIgMiAwIDAgMC0yLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGEyIDIgMCAwIDAgMi0ydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhZ2V2aWV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNSA5YTIuNSAyLjUgMCAwIDAgMCA1IDIuNSAyLjUgMCAwIDAgMC01ek0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTMuMjEgMTQuMjEtMi45MS0yLjkxYy0uNjkuNDQtMS41MS43LTIuMzkuN0M5LjAxIDE2IDcgMTMuOTkgNyAxMS41UzkuMDEgNyAxMS41IDcgMTYgOS4wMSAxNiAxMS41YzAgLjg4LS4yNiAxLjY5LS43IDIuMzlsMi45MSAyLjktMS40MiAxLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYWlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLjg4IDE1Ljc2VjE5aC0xLjc1di0xLjI5Yy0uNzQtLjE4LTIuMzktLjc3LTMuMDItMi45NmwxLjY1LS42N2MuMDYuMjIuNTggMi4wOSAyLjQgMi4wOS45MyAwIDEuOTgtLjQ4IDEuOTgtMS42MSAwLS45Ni0uNy0xLjQ2LTIuMjgtMi4wMy0xLjEtLjM5LTMuMzUtMS4wMy0zLjM1LTMuMzEgMC0uMS4wMS0yLjQgMi42Mi0yLjk2VjVoMS43NXYxLjI0YzEuODQuMzIgMi41MSAxLjc5IDIuNjYgMi4yM2wtMS41OC42N2MtLjExLS4zNS0uNTktMS4zNC0xLjktMS4zNC0uNyAwLTEuODEuMzctMS44MSAxLjM5IDAgLjk1Ljg2IDEuMzEgMi42NCAxLjkgMi40LjgzIDMuMDEgMi4wNSAzLjAxIDMuNDUgMCAyLjYzLTIuNSAzLjEzLTMuMDIgMy4yMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFuVG9vbEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljk4IDE0LjgyLS42MyA0LjQ2Yy0uMTQuOTktLjk5IDEuNzItMS45OCAxLjcyaC02LjE2Yy0uNTMgMC0xLjI5LS4yMS0xLjY2LS41OUw1IDE1LjYybC44My0uODRjLjI0LS4yNC41OC0uMzUuOTItLjI4bDMuMjUuNzRWNC41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41djZoLjkxYy4zMSAwIC42Mi4wNy44OS4yMWw0LjA5IDIuMDRjLjc3LjM5IDEuMjEgMS4yMiAxLjA5IDIuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhblRvb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyA1LjVWMjBjMCAyLjItMS44IDQtNCA0aC03LjNjLTEuMDggMC0yLjEtLjQzLTIuODUtMS4xOUwxIDE0LjgzczEuMjYtMS4yMyAxLjMtMS4yNWMuMjItLjE5LjQ5LS4yOS43OS0uMjkuMjIgMCAuNDIuMDYuNi4xNi4wNC4wMSA0LjMxIDIuNDYgNC4zMSAyLjQ2VjRjMC0uODMuNjctMS41IDEuNS0xLjVTMTEgMy4xNyAxMSA0djdoMVYxLjVjMC0uODMuNjctMS41IDEuNS0xLjVTMTUgLjY3IDE1IDEuNVYxMWgxVjIuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVYxMWgxVjUuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGF5bWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmMwLTEuMTEtLjg5LTItMi0yem0wIDE0SDR2LTZoMTZ2NnptMC0xMEg0VjZoMTZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVuZGluZ0FjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMmMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTEuNjUgNy4zNUwxNi41IDE3LjJWMTRoMXYyLjc5bDEuODUgMS44NS0uNy43MXpNMTggM2gtMy4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFzLTIuNC44NC0yLjgyIDJINmMtMS4xIDAtMiAuOS0yIDJ2MTVjMCAxLjEuOSAyIDIgMmg2LjExYTYuNzQzIDYuNzQzIDAgMCAxLTEuNDItMkg2VjVoMnYzaDhWNWgydjUuMDhjLjcxLjEgMS4zOC4zMSAyIC42VjVjMC0xLjEtLjktMi0yLTJ6bS02IDJjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVuZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTcgMTMuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTUgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTUgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcmNlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTFDOS40MyAxMSAxMSA5LjQzIDExIDcuNVM5LjQzIDQgNy41IDQgNCA1LjU3IDQgNy41IDUuNTcgMTEgNy41IDExem0wLTVDOC4zMyA2IDkgNi42NyA5IDcuNVM4LjMzIDkgNy41IDkgNiA4LjMzIDYgNy41IDYuNjcgNiA3LjUgNnpNNC4wMDIgMTguNTgzIDE4LjU5IDMuOTk2bDEuNDE0IDEuNDE0TDUuNDE3IDE5Ljk5N3pNMTYuNSAxM2MtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNSAzLjUtMS41NyAzLjUtMy41LTEuNTctMy41LTMuNS0zLjV6bTAgNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcm1DYW1lcmFNaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1aC0zLjE3TDE1IDNIOUw3LjE3IDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg3di0yLjA5Yy0yLjgzLS40OC01LTIuOTQtNS01LjkxaDJjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNGgyYzAgMi45Ny0yLjE3IDUuNDMtNSA1LjkxVjIxaDdjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptLTYgOGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yczIgLjkgMiAydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcm1Db250YWN0Q2FsZW5kYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC0xVjFoLTJ2Mkg4VjFINnYySDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDNjMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDMtMy0xLjM0LTMtMyAxLjM0LTMgMy0zem02IDEySDZ2LTFjMC0yIDQtMy4xIDYtMy4xczYgMS4xIDYgMy4xdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcm1EYXRhU2V0dGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ljk5IDExLjVjLjM0IDAgLjY3LjAzIDEgLjA3TDIwIDAgMCAyMGgxMS41NmMtLjA0LS4zMy0uMDctLjY2LS4wNy0xIDAtNC4xNCAzLjM2LTcuNSA3LjUtNy41em0zLjcxIDcuOTljLjAyLS4xNi4wNC0uMzIuMDQtLjQ5IDAtLjE3LS4wMS0uMzMtLjA0LS40OWwxLjA2LS44M2EuMjYuMjYgMCAwIDAgLjA2LS4zMmwtMS0xLjczYy0uMDYtLjExLS4xOS0uMTUtLjMxLS4xMWwtMS4yNC41Yy0uMjYtLjItLjU0LS4zNy0uODUtLjQ5bC0uMTktMS4zMmMtLjAxLS4xMi0uMTItLjIxLS4yNC0uMjFoLTJjLS4xMiAwLS4yMy4wOS0uMjUuMjFsLS4xOSAxLjMyYy0uMy4xMy0uNTkuMjktLjg1LjQ5bC0xLjI0LS41Yy0uMTEtLjA0LS4yNCAwLS4zMS4xMWwtMSAxLjczYy0uMDYuMTEtLjA0LjI0LjA2LjMybDEuMDYuODNhMy45MDggMy45MDggMCAwIDAgMCAuOThsLTEuMDYuODNhLjI2LjI2IDAgMCAwLS4wNi4zMmwxIDEuNzNjLjA2LjExLjE5LjE1LjMxLjExbDEuMjQtLjVjLjI2LjIuNTQuMzcuODUuNDlsLjE5IDEuMzJjLjAyLjEyLjEyLjIxLjI1LjIxaDJjLjEyIDAgLjIzLS4wOS4yNS0uMjFsLjE5LTEuMzJjLjMtLjEzLjU5LS4yOS44NC0uNDlsMS4yNS41Yy4xMS4wNC4yNCAwIC4zMS0uMTFsMS0xLjczYS4yNi4yNiAwIDAgMC0uMDYtLjMybC0xLjA3LS44M3ptLTMuNzEgMS4wMWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcm1EZXZpY2VJbmZvcm1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDdoLTJ2MmgyVjd6bTAgNGgtMnY2aDJ2LTZ6bTQtOS45OUw3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMTlIN1Y1aDEwdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJtSWRlbnRpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1LjlhMi4xIDIuMSAwIDEgMSAwIDQuMiAyLjEgMi4xIDAgMCAxIDAtNC4ybTAgOWMyLjk3IDAgNi4xIDEuNDYgNi4xIDIuMXYxLjFINS45VjE3YzAtLjY0IDMuMTMtMi4xIDYuMS0yLjFNMTIgNEM5Ljc5IDQgOCA1Ljc5IDggOHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCA5Yy0yLjY3IDAtOCAxLjM0LTggNHYzaDE2di0zYzAtMi42Ni01LjMzLTQtOC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJtTWVkaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDZIMHY1aC4wMUwwIDIwYzAgMS4xLjkgMiAyIDJoMTh2LTJIMlY2em0yMC0yaC04bC0yLTJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNyAxNWw0LjUtNiAzLjUgNC41MSAyLjUtMy4wMUwyMSAxNUg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJtUGhvbmVNc2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNS41Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41N2ExLjAyIDEuMDIgMCAwIDAtMS4wMi4yNGwtMi4yIDIuMmExNS4wNzQgMTUuMDc0IDAgMCAxLTYuNTktNi41OGwyLjItMi4yMWMuMjgtLjI3LjM2LS42Ni4yNS0xLjAxQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjVjMC0uNTUtLjQ1LTEtMS0xek0xMiAzdjEwbDMtM2g2VjNoLTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcm1TY2FuV2lmaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNDNi45NSAzIDMuMTUgNC44NSAwIDcuMjNMMTIgMjIgMjQgNy4yNUMyMC44NSA0Ljg3IDE3LjA1IDMgMTIgM3ptMSAxM2gtMnYtNmgydjZ6bS0yLThWNmgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBldHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjQuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjUuNVwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE5LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4zNCAxNC44NmMtLjg3LTEuMDItMS42LTEuODktMi40OC0yLjkxLS40Ni0uNTQtMS4wNS0xLjA4LTEuNzUtMS4zMi0uMTEtLjA0LS4yMi0uMDctLjMzLS4wOS0uMjUtLjA0LS41Mi0uMDQtLjc4LS4wNHMtLjUzIDAtLjc5LjA1Yy0uMTEuMDItLjIyLjA1LS4zMy4wOS0uNy4yNC0xLjI4Ljc4LTEuNzUgMS4zMi0uODcgMS4wMi0xLjYgMS44OS0yLjQ4IDIuOTEtMS4zMSAxLjMxLTIuOTIgMi43Ni0yLjYyIDQuNzkuMjkgMS4wMiAxLjAyIDIuMDMgMi4zMyAyLjMyLjczLjE1IDMuMDYtLjQ0IDUuNTQtLjQ0aC4xOGMyLjQ4IDAgNC44MS41OCA1LjU0LjQ0IDEuMzEtLjI5IDIuMDQtMS4zMSAyLjMzLTIuMzIuMzEtMi4wNC0xLjMtMy40OS0yLjYxLTQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOWgxLjV2NkgxM3YtMi41aC0yVjE1SDkuNVY5SDExdjJoMlY5em0tNSAxLjV2MWMwIC44LS43IDEuNS0xLjUgMS41aC0ydjJIM1Y5aDMuNWMuOCAwIDEuNS43IDEuNSAxLjV6bS0xLjUgMGgtMnYxaDJ2LTF6bTE1IDB2MWMwIC44LS43IDEuNS0xLjUgMS41aC0ydjJoLTEuNVY5SDIwYy44IDAgMS41LjcgMS41IDEuNXptLTEuNSAwaC0ydjFoMnYtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGljdHVyZUluUGljdHVyZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTFoLTh2Nmg4di02em00IDhWNC45OEMyMyAzLjg4IDIyLjEgMyAyMSAzSDNjLTEuMSAwLTIgLjg4LTIgMS45OFYxOWMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yem0tMiAuMDJIM1Y0Ljk3aDE4djE0LjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaWN0dXJlSW5QaWN0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN2gtOHY2aDhWN3ptMi00SDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMS45OCAyIDEuOThoMThjMS4xIDAgMi0uODggMi0xLjk4VjVjMC0xLjEtLjktMi0yLTJ6bTAgMTYuMDFIM1Y0Ljk4aDE4djE0LjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaW5FbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMlY2SDR2MTJoMTB2Mkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoMTZjMS4xIDAgMiAuOSAyIDJ2NmgtMnptLTEgMmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bS00LjM0LTZIOXY1LjY2bDIuMTItMi4xMiAyLjgzIDIuODMgMS40MS0xLjQxLTIuODMtMi44M0wxNC42NiA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaW5JbnZva2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMnY2YzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjZjMC0xLjEuOS0yIDItMmgxMHYySDR2MTJoMTZ2LTZoMnptMC01YzAtMS42Ni0xLjM0LTMtMy0zcy0zIDEuMzQtMyAzIDEuMzQgMyAzIDMgMy0xLjM0IDMtM3ptLTEwLjUzIDUuMTItMi44MyAyLjgzIDEuNDEgMS40MSAyLjgzLTIuODNMMTUgMTUuNjZWMTBIOS4zNGwyLjEzIDIuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBpbmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAyLjVWMWg1djVIOS41VjMuNTZMMy41NiA5LjVINlYxMUgxVjZoMS41djIuNDRMOC40NCAyLjVINnptMTYuOTggMTQuMzItLjYzIDQuNDZjLS4xNC45OS0uOTkgMS43Mi0xLjk4IDEuNzJoLTYuMTZjLS41MyAwLTEuMjktLjIxLTEuNjYtLjU5TDggMTcuNjJsLjgzLS44NGMuMjQtLjI0LjU4LS4zNS45Mi0uMjhsMy4yNS43NFY2LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjV2NmguOTFjLjMxIDAgLjYyLjA3Ljg5LjIxbDQuMDkgMi4wNGMuNzcuMzkgMS4yMSAxLjIyIDEuMDkgMi4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxhZ2lhcmlzbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0xLjA0IDE3LjQ1LTEuODgtMS44OGMtMS4zMy43MS0zLjAxLjUzLTQuMTMtLjU5YTMuNDk1IDMuNDk1IDAgMCAxIDAtNC45NSAzLjQ5NSAzLjQ5NSAwIDAgMSA0Ljk1IDAgMy40OCAzLjQ4IDAgMCAxIC41OSA0LjEzbDEuODggMS44OC0xLjQxIDEuNDF6TTEzIDlWMy41TDE4LjUgOUgxM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMS41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBsYXlGb3JXb3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNXY1LjU5SDcuNWw0LjUgNC41IDQuNS00LjVIMTNWNWgtMnptLTUgOWMwIDMuMzEgMi42OSA2IDYgNnM2LTIuNjkgNi02aC0yYzAgMi4yMS0xLjc5IDQtNCA0cy00LTEuNzktNC00SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvbHltZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0aC00TDcuMTEgMTYuNjMgNC41IDEyIDkgNEg1TC41IDEyIDUgMjBoNGw3Ljg5LTEyLjYzTDE5LjUgMTIgMTUgMjBoNGw0LjUtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG93ZXJTZXR0aW5nc05ldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDNoLTJ2MTBoMlYzem00LjgzIDIuMTctMS40MiAxLjQyQTYuOTIgNi45MiAwIDAgMSAxOSAxMmMwIDMuODctMy4xMyA3LTcgN0E2Ljk5NSA2Ljk5NSAwIDAgMSA3LjU4IDYuNThMNi4xNyA1LjE3QTguOTMyIDguOTMyIDAgMCAwIDMgMTJhOSA5IDAgMCAwIDE4IDBjMC0yLjc0LTEuMjMtNS4xOC0zLjE3LTYuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFByZWduYW50V29tYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDRjMC0xLjExLjg5LTIgMi0yczIgLjg5IDIgMi0uODkgMi0yIDItMi0uODktMi0yem03IDlhMy4yODUgMy4yODUgMCAwIDAtMi0zYzAtMS42Ni0xLjM0LTMtMy0zcy0zIDEuMzQtMyAzdjdoMnY1aDN2LTVoM3YtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHJldmlldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWEyIDIgMCAwIDAtMi0yem0wIDE2SDVWN2gxNHYxMnptLTUuNS02YzAgLjgzLS42NyAxLjUtMS41IDEuNXMtMS41LS42Ny0xLjUtMS41LjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41ek0xMiA5Yy0yLjczIDAtNS4wNiAxLjY2LTYgNCAuOTQgMi4zNCAzLjI3IDQgNiA0czUuMDYtMS42NiA2LTRjLS45NC0yLjM0LTMuMjctNC02LTR6bTAgNi41YTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQcmludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDhINWMtMS42NiAwLTMgMS4zNC0zIDN2Nmg0djRoMTJ2LTRoNHYtNmMwLTEuNjYtMS4zNC0zLTMtM3ptLTMgMTFIOHYtNWg4djV6bTMtN2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tMS05SDZ2NGgxMlYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQcml2YWN5VGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMSAzIDV2NmMwIDUuNTUgMy44NCAxMC43NCA5IDEyIDUuMTYtMS4yNiA5LTYuNDUgOS0xMlY1bC05LTR6bS0xIDZoMnYyaC0yVjd6bTAgNGgydjZoLTJ2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFByaXZhdGVDb25uZWN0aXZpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MyAxMWMtLjQ5LTMuMzktMy40LTYtNi45My02cy02LjQ0IDIuNjEtNi45MyA2SDJ2MmgzLjA3Yy40OSAzLjM5IDMuNCA2IDYuOTMgNnM2LjQ0LTIuNjEgNi45My02SDIydi0yaC0zLjA3ek0xNSAxNC41YzAgLjU1LS40NSAxLTEgMWgtNGMtLjU1IDAtMS0uNDUtMS0xdi0zYzAtLjU1LjQ1LTEgMS0xdi0xYTIgMiAwIDAgMSAyLjM0LTEuOTdjLjk4LjE2IDEuNjYgMS4wOCAxLjY2IDIuMDh2Ljg5Yy41NSAwIDEgLjQ1IDEgMXYzek0xMi43NSAxM2MwIC40MS0uMzQuNzUtLjc1Ljc1cy0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NS43NS4zNC43NS43NXpNMTMgOS41djFoLTJ2LTFjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQcm9kdWN0aW9uUXVhbnRpdHlMaW1pdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMGgtMlY4aDJ2MnptMC00aC0yVjFoMnY1ek03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yem0xMCAwYy0xLjEgMC0xLjk5LjktMS45OSAycy44OSAyIDEuOTkgMiAyLS45IDItMi0uOS0yLTItMnptLTguOS01aDcuNDVjLjc1IDAgMS40MS0uNDEgMS43NS0xLjAzTDIxIDQuOTYgMTkuMjUgNGwtMy43IDdIOC41M0w0LjI3IDJIMXYyaDJsMy42IDcuNTktMS4zNSAyLjQ0QzQuNTIgMTUuMzcgNS40OCAxNyA3IDE3aDEydi0ySDdsMS4xLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFB1Ymxpc2hlZFdpdGhDaGFuZ2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuNjYgOS41My03LjA3IDcuMDctNC4yNC00LjI0IDEuNDEtMS40MSAyLjgzIDIuODMgNS42Ni01LjY2IDEuNDEgMS40MXpNNCAxMmMwLTIuMzMgMS4wMi00LjQyIDIuNjItNS44OEw5IDguNXYtNkgzbDIuMiAyLjJDMy4yNCA2LjUyIDIgOS4xMSAyIDEyYzAgNS4xOSAzLjk1IDkuNDUgOSA5Ljk1di0yLjAyYy0zLjk0LS40OS03LTMuODYtNy03Ljkzem0xOCAwYzAtNS4xOS0zLjk1LTkuNDUtOS05Ljk1djIuMDJjMy45NC40OSA3IDMuODYgNyA3LjkzIDAgMi4zMy0xLjAyIDQuNDItMi42MiA1Ljg4TDE1IDE1LjV2Nmg2bC0yLjItMi4yYzEuOTYtMS44MiAzLjItNC40MSAzLjItNy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRRdWVyeUJ1aWxkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgN0gxMXY2bDUuMjUgMy4xNS43NS0xLjIzLTQuNS0yLjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRRdWVzdGlvbkFuc3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDZoLTJ2OUg2djJjMCAuNTUuNDUgMSAxIDFoMTFsNCA0VjdjMC0uNTUtLjQ1LTEtMS0xem0tNCA2VjNjMC0uNTUtLjQ1LTEtMS0xSDNjLS41NSAwLTEgLjQ1LTEgMXYxNGw0LTRoMTBjLjU1IDAgMS0uNDUgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRRdWVzdGlvbk1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4wNyAxMi44NWMuNzctMS4zOSAyLjI1LTIuMjEgMy4xMS0zLjQ0LjkxLTEuMjkuNC0zLjctMi4xOC0zLjctMS42OSAwLTIuNTIgMS4yOC0yLjg3IDIuMzRMNi41NCA2Ljk2QzcuMjUgNC44MyA5LjE4IDMgMTEuOTkgM2MyLjM1IDAgMy45NiAxLjA3IDQuNzggMi40MS43IDEuMTUgMS4xMSAzLjMuMDMgNC45LTEuMiAxLjc3LTIuMzUgMi4zMS0yLjk3IDMuNDUtLjI1LjQ2LS4zNS43Ni0uMzUgMi4yNGgtMi44OWMtLjAxLS43OC0uMTMtMi4wNS40OC0zLjE1ek0xNCAyMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFF1aWNrcmVwbHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA0YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoOXYtOGg3VjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjUgMTZoLTIuMmwxLjctNGgtNXY2aDJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmViYXNlRWRpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTlcIixcImN5XCI6XCI1XCIsXCJyXCI6XCIzXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjc2IDkuMjQgMTUgNSAxMC43Ni43NiA5LjM0IDIuMTcgMTEuMTcgNEg3LjgyQzcuNCAyLjg0IDYuMyAyIDUgMiAzLjM0IDIgMiAzLjM0IDIgNWMwIDEuMy44NCAyLjQgMiAyLjgydjguMzdDMi44NCAxNi42IDIgMTcuNyAyIDE5YzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNjMC0xLjMtLjg0LTIuNC0yLTIuODJWNy44MmMuODUtLjMxIDEuNTEtLjk3IDEuODItMS44MmgzLjM2TDkuMzQgNy44M2wxLjQyIDEuNDF6TTEwIDE5djNoM2w2LjI2LTYuMjYtMy0zek0yMC4xMiAxMC4yOWEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLTEuMzggMS4zOCAzIDMgMS4zOC0xLjM4YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMS41OS0xLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWNlaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTdINnYtMmgxMnYyem0wLTRINnYtMmgxMnYyem0wLTRINlY3aDEydjJ6TTMgMjJsMS41LTEuNUw2IDIybDEuNS0xLjVMOSAyMmwxLjUtMS41TDEyIDIybDEuNS0xLjVMMTUgMjJsMS41LTEuNUwxOCAyMmwxLjUtMS41TDIxIDIyVjJsLTEuNSAxLjVMMTggMmwtMS41IDEuNUwxNSAybC0xLjUgMS41TDEyIDJsLTEuNSAxLjVMOSAyIDcuNSAzLjUgNiAyIDQuNSAzLjUgMyAydjIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWNvcmRWb2ljZU92ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCI5XCIsXCJyXCI6XCI0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTVjLTIuNjcgMC04IDEuMzQtOCA0djJoMTZ2LTJjMC0yLjY2LTUuMzMtNC04LTR6bTcuNzYtOS42NC0xLjY4IDEuNjljLjg0IDEuMTguODQgMi43MSAwIDMuODlsMS42OCAxLjY5YzIuMDItMi4wMiAyLjAyLTUuMDcgMC03LjI3ek0yMC4wNyAybC0xLjYzIDEuNjNjMi43NyAzLjAyIDIuNzcgNy41NiAwIDEwLjc0TDIwLjA3IDE2YzMuOS0zLjg5IDMuOTEtOS45NSAwLTE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWRlZW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC0yLjE4Yy4xMS0uMzEuMTgtLjY1LjE4LTFhMi45OTYgMi45OTYgMCAwIDAtNS41LTEuNjVsLS41LjY3LS41LS42OEMxMC45NiAyLjU0IDEwLjA1IDIgOSAyIDcuMzQgMiA2IDMuMzQgNiA1YzAgLjM1LjA3LjY5LjE4IDFINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMTljMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0tNS0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTkgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xMSAxNUg0di0yaDE2djJ6bTAtNUg0VjhoNS4wOEw3IDEwLjgzIDguNjIgMTIgMTEgOC43NmwxLTEuMzYgMSAxLjM2TDE1LjM4IDEyIDE3IDEwLjgzIDE0LjkyIDhIMjB2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVtb3ZlRG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEuNzkgMTIgNS41OCA1LjU5TDUuOTYgMTkgLjM3IDEzLjQxIDEuNzkgMTJ6bS40NS03Ljc4TDEyLjkgMTQuODlsLTEuMjggMS4yOEw3LjQ0IDEybC0xLjQxIDEuNDFMMTEuNjIgMTlsMi42OS0yLjY5IDQuODkgNC44OSAxLjQxLTEuNDFMMy42NSAyLjgxIDIuMjQgNC4yMnptMTQuOSA5LjI3TDIzLjYyIDcgMjIuMiA1LjU5bC02LjQ4IDYuNDggMS40MiAxLjQyek0xNy45NiA3bC0xLjQxLTEuNDEtMy42NSAzLjY2IDEuNDEgMS40MUwxNy45NiA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZW1vdmVTaG9wcGluZ0NhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi43MyAyMi43MyAyLjc3IDIuNzcgMiAybC0uNzMtLjczTDAgMi41NGw0LjM5IDQuMzkgMi4yMSA0LjY2LTEuMzUgMi40NWMtLjE2LjI4LS4yNS42MS0uMjUuOTYgMCAxLjEuOSAyIDIgMmg3LjQ2bDEuMzggMS4zOEExLjk5NyAxLjk5NyAwIDAgMCAxNyAyMmMuNjcgMCAxLjI2LS4zMyAxLjYyLS44NEwyMS40NiAyNGwxLjI3LTEuMjd6TTcuNDIgMTVjLS4xNCAwLS4yNS0uMTEtLjI1LS4yNWwuMDMtLjEyLjktMS42M2gyLjM2bDIgMkg3LjQyem04LjEzLTJjLjc1IDAgMS40MS0uNDEgMS43NS0xLjAzbDMuNTgtNi40OUExLjAwMyAxLjAwMyAwIDAgMCAyMCA0SDYuNTRsOS4wMSA5ek03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZW9yZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNWgxOHYtMkgzdjJ6bTAgNGgxOHYtMkgzdjJ6bTAtOGgxOFY5SDN2MnptMC02djJoMThWNUgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBhcnRpdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMjFoMTh2LTZIM3Y2em03LjMzLTJ2LTJoMy4zM3YyaC0zLjMzek0xOSAxOWgtMy4zM3YtMkgxOXYyek01IDE3aDMuMzN2Mkg1di0yek02IDEwbDEuNDItMS40Mkw1LjgzIDdIMTdjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAySDN2MmgxNGMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNEg1LjgzbDEuNTktMS41OUw2IDIgMiA2bDQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwb3J0UHJvYmxlbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMjFoMjJMMTIgMiAxIDIxem0xMi0zaC0ydi0yaDJ2MnptMC00aC0ydi00aDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVxdWVzdFBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0xIDloLTR2MWgzYy41NSAwIDEgLjQ1IDEgMXYzYzAgLjU1LS40NSAxLTEgMWgtMXYxaC0ydi0xSDl2LTJoNHYtMWgtM2MtLjU1IDAtMS0uNDUtMS0xdi0zYzAtLjU1LjQ1LTEgMS0xaDFWOGgydjFoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXN0b3JlRnJvbVRyYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNGgtMy41bC0xLTFoLTVsLTEgMUg1djJoMTR6TTYgN3YxMmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2em04IDd2NGgtNHYtNEg4bDQtNCA0IDRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlc3RvcmVQYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0tMiAxNmMtMi4wNSAwLTMuODEtMS4yNC00LjU4LTNoMS43MWMuNjMuOSAxLjY4IDEuNSAyLjg3IDEuNSAxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMxMy45MyA5LjUgMTIgOS41YTMuNSAzLjUgMCAwIDAtMy4xIDEuOWwxLjYgMS42aC00VjlsMS4zIDEuM0M4LjY5IDguOTIgMTAuMjMgOCAxMiA4YzIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgM2E5IDkgMCAwIDAtOSA5SDFsMy44OSAzLjg5LjA3LjE0TDkgMTJINmMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3LTMuMTMgNy03IDdjLTEuOTMgMC0zLjY4LS43OS00Ljk0LTIuMDZsLTEuNDIgMS40MkE4Ljk1NCA4Ljk1NCAwIDAgMCAxMyAyMWE5IDkgMCAwIDAgMC0xOHptLTEgNXY1bDQuMjggMi41NC43Mi0xLjIxLTMuNS0yLjA4VjhIMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvY2tldExhdW5jaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMTkgNi4zNWMtMi4wNCAyLjI5LTMuNDQgNS41OC0zLjU3IDUuODlMMiAxMC42OWw0LjA1LTQuMDVjLjQ3LS40NyAxLjE1LS42OCAxLjgxLS41NWwxLjMzLjI2ek0xMS4xNyAxN3MzLjc0LTEuNTUgNS44OS0zLjdjNS40LTUuNCA0LjUtOS42MiA0LjIxLTEwLjU3LS45NS0uMy01LjE3LTEuMTktMTAuNTcgNC4yMUM4LjU1IDkuMDkgNyAxMi44MyA3IDEyLjgzTDExLjE3IDE3em02LjQ4LTIuMTljLTIuMjkgMi4wNC01LjU4IDMuNDQtNS44OSAzLjU3TDEzLjMxIDIybDQuMDUtNC4wNWMuNDctLjQ3LjY4LTEuMTUuNTUtMS44MWwtLjI2LTEuMzN6TTkgMThjMCAuODMtLjM0IDEuNTgtLjg4IDIuMTJDNi45NCAyMS4zIDIgMjIgMiAyMnMuNy00Ljk0IDEuODgtNi4xMkEyLjk5NiAyLjk5NiAwIDAgMSA5IDE4em00LTljMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm9ja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMi41czQuNSAyLjA0IDQuNSAxMC41YzAgMi40OS0xLjA0IDUuNTctMS42IDdIOS4xYy0uNTYtMS40My0xLjYtNC41MS0xLjYtN0M3LjUgNC41NCAxMiAyLjUgMTIgMi41em0yIDguNWMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDIgLjkgMiAyIDIgMi0uOSAyLTJ6bS02LjMxIDkuNTJjLS40OC0xLjIzLTEuNTItNC4xNy0xLjY3LTYuODdsLTEuMTMuNzVjLS41Ni4zOC0uODkgMS0uODkgMS42N1YyMmwzLjY5LTEuNDh6TTIwIDIydi01LjkzYzAtLjY3LS4zMy0xLjI5LS44OS0xLjY2bC0xLjEzLS43NWMtLjE1IDIuNjktMS4yIDUuNjQtMS42NyA2Ljg3TDIwIDIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM4LjEzIDIgNSA1LjEzIDUgOWMwIDUuMjUgNyAxMyA3IDEzczctNy43NSA3LTEzYzAtMy44Ny0zLjEzLTctNy03em0wIDkuNWEyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm91bmRlZENvcm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5aDJ2MmgtMnYtMnptMC0yaDJ2LTJoLTJ2MnpNMyAxM2gydi0ySDN2MnptMCA0aDJ2LTJIM3Yyem0wLThoMlY3SDN2MnptMC00aDJWM0gzdjJ6bTQgMGgyVjNIN3Yyem04IDE2aDJ2LTJoLTJ2MnptLTQgMGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6bS04IDBoMnYtMkg3djJ6bS00IDBoMnYtMkgzdjJ6TTIxIDhjMC0yLjc2LTIuMjQtNS01LTVoLTV2Mmg1YzEuNjUgMCAzIDEuMzUgMyAzdjVoMlY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb3dpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgMTQuNSA0IDE5bDEuNSAxLjVMOSAxN2gybC0yLjUtMi41ek0xNSAxYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNiAyMC4wMUwxOCAyNGwtMi45OS0zLjAxVjE5LjVsLTcuMS03LjA5Yy0uMzEuMDUtLjYxLjA3LS45MS4wN3YtMi4xNmMxLjY2LjAzIDMuNjEtLjg3IDQuNjctMi4wNGwxLjQtMS41NWMuMzUtLjM5Ljk5LS43MyAxLjY1LS43M2guMDNDMTUuOTkgNi4wMSAxNyA3LjAyIDE3IDguMjZ2NS43NWMwIC44NC0uMzUgMS42MS0uOTIgMi4xNmwtMy41OC0zLjU4di0yLjI3Yy0uNjMuNTItMS40MyAxLjAyLTIuMjkgMS4zOUwxNi41IDE4SDE4bDMgMy4wMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUnVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjU0IDExIDEzIDcuNDZsMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjQgMS40MSAxLjQxTDE2LjU0IDExek0xMSA3SDJ2Mmg5Vjd6bTEwIDYuNDFMMTkuNTkgMTIgMTcgMTQuNTkgMTQuNDEgMTIgMTMgMTMuNDEgMTUuNTkgMTYgMTMgMTguNTkgMTQuNDEgMjAgMTcgMTcuNDEgMTkuNTkgMjAgMjEgMTguNTkgMTguNDEgMTYgMjEgMTMuNDF6TTExIDE1SDJ2Mmg5di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYXRlbGxpdGVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS40NC41OS0zLjE4IDMuMThjLS43OC43OC0uNzggMi4wNSAwIDIuODNsMS4yNCAxLjI0LS43MS43MS0xLjI0LTEuMjVjLS43OC0uNzgtMi4wNS0uNzgtMi44MyAwTDcuMyA4LjcyYy0uNzguNzgtLjc4IDIuMDUgMCAyLjgzbDEuMjQgMS4yNC0uNzEuNzEtMS4yMy0xLjI1Yy0uNzgtLjc4LTIuMDUtLjc4LTIuODMgMEwuNTkgMTUuNDNjLS43OC43OC0uNzggMi4wNSAwIDIuODNsMy41NCAzLjU0Yy43OC43OCAyLjA1Ljc4IDIuODMgMGwzLjE4LTMuMThjLjc4LS43OC43OC0yLjA1IDAtMi44M0w4LjkgMTQuNTVsLjcxLS43MSAxLjI0IDEuMjRjLjc4Ljc4IDIuMDUuNzggMi44MyAwbDEuNDEtMS40MWMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzTDEzLjg0IDkuNmwuNzEtLjcxIDEuMjQgMS4yNGMuNzguNzggMi4wNS43OCAyLjgzIDBsMy4xOC0zLjE4Yy43OC0uNzguNzgtMi4wNSAwLTIuODNMMTguMjYuNThjLS43OC0uNzgtMi4wNC0uNzgtMi44Mi4wMXpNNi42IDE5LjMybC0xLjA2IDEuMDZMMiAxNi44NWwxLjA2LTEuMDYgMy41NCAzLjUzem0yLjEyLTIuMTItMS4wNiAxLjA2LTMuNTQtMy41NCAxLjA2LTEuMDYgMy41NCAzLjU0em05LjU0LTkuNTRMMTcuMiA4LjcybC0zLjU0LTMuNTQgMS4wNi0xLjA2IDMuNTQgMy41NHptMi4xMi0yLjEyTDE5LjMyIDYuNmwtMy41NC0zLjU0TDE2Ljg1IDJsMy41MyAzLjU0ek0xNCAyMXYyYTkgOSAwIDAgMCA5LTloLTJjMCAzLjg3LTMuMTMgNy03IDd6bTAtNHYyYzIuNzYgMCA1LTIuMjQgNS01aC0yYzAgMS42Ni0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYXZlZFNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0em0tMi4xNy0xLjUgMi4xNC0xLjUzIDIuMTQgMS41My0uODMtMi40NiAyLjE1LTEuNWgtMi42Mkw5LjQ3IDZsLS44NCAyLjU0SDZsMi4xNCAxLjQ5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYXZpbmdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkuODMgNy41LTIuMjctMi4yN2MuMDctLjQyLjE4LS44MS4zMi0xLjE1QTEuNDk4IDEuNDk4IDAgMCAwIDE2LjUgMmMtMS42NCAwLTMuMDkuNzktNCAyaC01QzQuNDYgNCAyIDYuNDYgMiA5LjVTNC41IDIxIDQuNSAyMUgxMHYtMmgydjJoNS41bDEuNjgtNS41OSAyLjgyLS45NFY3LjVoLTIuMTd6TTEzIDlIOFY3aDV2MnptMyAyYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjaGVkdWxlU2VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAxMi41SDE1djRsMyAyIC43NS0xLjIzLTIuMjUtMS41MlYxMi41ek0xNiA5IDIgM3Y3bDkgMi05IDJ2N2w3LjI3LTMuMTFDMTAuMDkgMjAuODMgMTIuNzkgMjMgMTYgMjNjMy44NiAwIDctMy4xNCA3LTdzLTMuMTQtNy03LTd6bTAgMTJjLTIuNzUgMC00Ljk4LTIuMjItNS00Ljk3di0uMDdhNS4wMDggNS4wMDggMCAwIDEgNS00Ljk3YzIuNzYgMCA1IDIuMjQgNSA1UzE4Ljc2IDIxIDE2IDIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY2hlZHVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlYXJjaE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDAgMCA5LjUgM0M2LjA4IDMgMy4yOCA1LjY0IDMuMDMgOWgyLjAyQzUuMyA2Ljc1IDcuMTggNSA5LjUgNSAxMS45OSA1IDE0IDcuMDEgMTQgOS41UzExLjk5IDE0IDkuNSAxNGMtLjE3IDAtLjMzLS4wMy0uNS0uMDV2Mi4wMmMuMTcuMDIuMzMuMDMuNS4wMyAxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNDcgMTAuODIgNCAxMy4yOWwtMi40Ny0yLjQ3LS43MS43MUwzLjI5IDE0IC44MiAxNi40N2wuNzEuNzFMNCAxNC43MWwyLjQ3IDIuNDcuNzEtLjcxTDQuNzEgMTRsMi40Ny0yLjQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDE0aC0uNzlsLS4yOC0uMjdBNi40NzEgNi40NzEgMCAwIDAgMTYgOS41IDYuNSA2LjUgMCAxIDAgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VnbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxOGgxMnYtMkg5djJ6TTMgNnYyaDE4VjZIM3ptNiA3aDEydi0ySDl2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VuZEFuZEFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDEwaC0zTDIgM3Y3bDkgMi05IDJ2N2w4LTMuNVYyMWMwIDEuMS45IDIgMiAyaDljMS4xIDAgMi0uOSAyLTJ2LTljMC0xLjEtLjktMi0yLTJ6bTAgMTFoLTl2LTloOXY5em0tNC41LTFMMTMgMTZoMnYtM2gzdjNoMmwtMy41IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbnNvcnNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjE0IDEwLjk2Yy0uMDkuMzMtLjE0LjY4LS4xNCAxLjA0IDAgMS4xLjQ1IDIuMSAxLjE3IDIuODNsLTEuNDIgMS40MkE2LjAxOCA2LjAxOCAwIDAgMSA2IDEyYzAtLjkzLjIxLTEuOC41OC0yLjU5TDUuMTEgNy45NEE3Ljg5NyA3Ljg5NyAwIDAgMCA0IDEyYzAgMi4yMS45IDQuMjEgMi4zNSA1LjY1bC0xLjQyIDEuNDJBOS45NjkgOS45NjkgMCAwIDEgMiAxMmMwLTIuMDQuNjEtMy45MyAxLjY2LTUuNTFMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNDEgMS40MUw4LjE0IDEwLjk2em05LjI4IDMuNjNjLjM3LS43OS41OC0xLjY2LjU4LTIuNTkgMC0xLjY2LS42Ny0zLjE2LTEuNzYtNC4yNGwtMS40MiAxLjQyYTMuOTUxIDMuOTUxIDAgMCAxIDEuMDQgMy44NmwxLjU2IDEuNTV6TTIwIDEyYzAgMS40OC0uNCAyLjg3LTEuMTEgNC4wNmwxLjQ1IDEuNDVBOS45MSA5LjkxIDAgMCAwIDIyIDEyYzAtMi43Ni0xLjEyLTUuMjYtMi45My03LjA3bC0xLjQyIDEuNDJBNy45NCA3Ljk0IDAgMCAxIDIwIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZW5zb3JzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy43NiAxNi4yNEM2LjY3IDE1LjE2IDYgMTMuNjYgNiAxMnMuNjctMy4xNiAxLjc2LTQuMjRsMS40MiAxLjQyQzguNDUgOS45IDggMTAuOSA4IDEyYzAgMS4xLjQ1IDIuMSAxLjE3IDIuODNsLTEuNDEgMS40MXptOC40OCAwQzE3LjMzIDE1LjE2IDE4IDEzLjY2IDE4IDEycy0uNjctMy4xNi0xLjc2LTQuMjRsLTEuNDIgMS40MkMxNS41NSA5LjkgMTYgMTAuOSAxNiAxMmMwIDEuMS0uNDUgMi4xLTEuMTcgMi44M2wxLjQxIDEuNDF6TTEyIDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptOCAyYzAgMi4yMS0uOSA0LjIxLTIuMzUgNS42NWwxLjQyIDEuNDJDMjAuODggMTcuMjYgMjIgMTQuNzYgMjIgMTJzLTEuMTItNS4yNi0yLjkzLTcuMDdsLTEuNDIgMS40MkE3Ljk0IDcuOTQgMCAwIDEgMjAgMTJ6TTYuMzUgNi4zNSA0LjkzIDQuOTNDMy4xMiA2Ljc0IDIgOS4yNCAyIDEyczEuMTIgNS4yNiAyLjkzIDcuMDdsMS40Mi0xLjQyQzQuOSAxNi4yMSA0IDE0LjIxIDQgMTJzLjktNC4yMSAyLjM1LTUuNjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzQWNjZXNzaWJpbGl0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjUgNGMtMi42MS43LTUuNjcgMS04LjUgMXMtNS44OS0uMy04LjUtMUwzIDZjMS44Ni41IDQgLjgzIDYgMXYxMmgydi02aDJ2NmgyVjdjMi0uMTcgNC4xNC0uNSA2LTFsLS41LTJ6TTEyIDRjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyek03IDI0aDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXR0aW5nc0FwcGxpY2F0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNy03SDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YTIgMiAwIDAgMCAyLTJWNWEyIDIgMCAwIDAtMi0yem0tMS43NSA5YzAgLjIzLS4wMi40Ni0uMDUuNjhsMS40OCAxLjE2Yy4xMy4xMS4xNy4zLjA4LjQ1bC0xLjQgMi40MmMtLjA5LjE1LS4yNy4yMS0uNDMuMTVsLTEuNzQtLjdjLS4zNi4yOC0uNzYuNTEtMS4xOC42OWwtLjI2IDEuODVjLS4wMy4xNy0uMTguMy0uMzUuM2gtMi44Yy0uMTcgMC0uMzItLjEzLS4zNS0uMjlsLS4yNi0xLjg1Yy0uNDMtLjE4LS44Mi0uNDEtMS4xOC0uNjlsLTEuNzQuN2MtLjE2LjA2LS4zNCAwLS40My0uMTVsLTEuNC0yLjQyYS4zNTMuMzUzIDAgMCAxIC4wOC0uNDVsMS40OC0xLjE2Yy0uMDMtLjIzLS4wNS0uNDYtLjA1LS42OSAwLS4yMy4wMi0uNDYuMDUtLjY4bC0xLjQ4LTEuMTZhLjM1My4zNTMgMCAwIDEtLjA4LS40NWwxLjQtMi40MmMuMDktLjE1LjI3LS4yMS40My0uMTVsMS43NC43Yy4zNi0uMjguNzYtLjUxIDEuMTgtLjY5bC4yNi0xLjg1Yy4wMy0uMTcuMTgtLjMuMzUtLjNoMi44Yy4xNyAwIC4zMi4xMy4zNS4yOWwuMjYgMS44NWMuNDMuMTguODIuNDEgMS4xOC42OWwxLjc0LS43Yy4xNi0uMDYuMzQgMCAuNDMuMTVsMS40IDIuNDJjLjA5LjE1LjA1LjM0LS4wOC40NWwtMS40OCAxLjE2Yy4wMy4yMy4wNS40Ni4wNS42OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NCYWNrdXBSZXN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTJjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAyIC45IDIgMiAyIDItLjkgMi0yem0tMi05YTkgOSAwIDAgMC05IDlIMGw0IDQgNC00SDVjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgN2E2Ljk5NSA2Ljk5NSAwIDAgMS0xMS4wNiA1LjdsLTEuNDIgMS40NEE5IDkgMCAxIDAgMTIgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NCbHVldG9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyNGgydi0yaC0ydjJ6bS00IDBoMnYtMkg3djJ6bTggMGgydi0yaC0ydjJ6bTIuNzEtMTguMjlMMTIgMGgtMXY3LjU5TDYuNDEgMyA1IDQuNDEgMTAuNTkgMTAgNSAxNS41OSA2LjQxIDE3IDExIDEyLjQxVjIwaDFsNS43MS01LjcxLTQuMy00LjI5IDQuMy00LjI5ek0xMyAzLjgzbDEuODggMS44OEwxMyA3LjU5VjMuODN6bTEuODggMTAuNDZMMTMgMTYuMTd2LTMuNzZsMS44OCAxLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXR0aW5nc0JyaWdodG5lc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOTloMTh2MTQuMDJ6TTggMTZoMi41bDEuNSAxLjUgMS41LTEuNUgxNnYtMi41bDEuNS0xLjUtMS41LTEuNVY4aC0yLjVMMTIgNi41IDEwLjUgOEg4djIuNUw2LjUgMTIgOCAxMy41VjE2em00LTdjMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDNWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NDZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyNGgydi0ySDd2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnpNMTYgLjAxIDggMEM2LjkgMCA2IC45IDYgMnYxNmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWMmMwLTEuMS0uOS0xLjk5LTItMS45OXpNMTYgMTZIOFY0aDh2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzRXRoZXJuZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljc3IDYuNzYgNi4yMyA1LjQ4LjgyIDEybDUuNDEgNi41MiAxLjU0LTEuMjhMMy40MiAxMmw0LjM1LTUuMjR6TTcgMTNoMnYtMkg3djJ6bTEwLTJoLTJ2Mmgydi0yem0tNiAyaDJ2LTJoLTJ2MnptNi43Ny03LjUyLTEuNTQgMS4yOEwyMC41OCAxMmwtNC4zNSA1LjI0IDEuNTQgMS4yOEwyMy4xOCAxMmwtNS40MS02LjUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXR0aW5nc0lucHV0QW50ZW5uYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVjLTMuODcgMC03IDMuMTMtNyA3aDJjMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNWgyYzAtMy44Ny0zLjEzLTctNy03em0xIDkuMjljLjg4LS4zOSAxLjUtMS4yNiAxLjUtMi4yOWEyLjUgMi41IDAgMCAwLTUgMGMwIDEuMDIuNjIgMS45IDEuNSAyLjI5djMuM0w3LjU5IDIxIDkgMjIuNDFsMy0zIDMgM0wxNi40MSAyMSAxMyAxNy41OXYtMy4zek0xMiAxQzUuOTMgMSAxIDUuOTMgMSAxMmgyYTkgOSAwIDAgMSAxOCAwaDJjMC02LjA3LTQuOTMtMTEtMTEtMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzSW5wdXRDb21wb25lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEgxdjZoNlY2SDVWMnptNCAxNGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThjMS4xNi0uNDEgMi0xLjUxIDItMi44MnYtMkg5djJ6bS04IDBjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4QzYuMTYgMTguNCA3IDE3LjMgNyAxNnYtMkgxdjJ6TTIxIDZWMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0aC0ydjZoNlY2aC0yem0tOC00YzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjRIOXY2aDZWNmgtMlYyem00IDE0YzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MSAyLTEuNTEgMi0yLjgydi0yaC02djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzSW5wdXRDb21wb3NpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEgxdjZoNlY2SDVWMnptNCAxNGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThjMS4xNi0uNDEgMi0xLjUxIDItMi44MnYtMkg5djJ6bS04IDBjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4QzYuMTYgMTguNCA3IDE3LjMgNyAxNnYtMkgxdjJ6TTIxIDZWMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0aC0ydjZoNlY2aC0yem0tOC00YzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjRIOXY2aDZWNmgtMlYyem00IDE0YzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MSAyLTEuNTEgMi0yLjgydi0yaC02djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzSW5wdXRIZG1pIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggN1Y0YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAydjNINXY2bDMgNnYzaDh2LTNsMy02VjdoLTF6TTggNGg4djNoLTJWNWgtMXYyaC0yVjVoLTF2Mkg4VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzSW5wdXRTdmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDExLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41UzUgMTAuNjcgNSAxMS41IDUuNjcgMTMgNi41IDEzIDggMTIuMzMgOCAxMS41em03LTVjMC0uODMtLjY3LTEuNS0xLjUtMS41aC0zQzkuNjcgNSA5IDUuNjcgOSA2LjVTOS42NyA4IDEwLjUgOGgzYy44MyAwIDEuNS0uNjcgMS41LTEuNXpNOC41IDE1Yy0uODMgMC0xLjUuNjctMS41IDEuNVM3LjY3IDE4IDguNSAxOHMxLjUtLjY3IDEuNS0xLjVTOS4zMyAxNSA4LjUgMTV6TTEyIDFDNS45MyAxIDEgNS45MyAxIDEyczQuOTMgMTEgMTEgMTEgMTEtNC45MyAxMS0xMVMxOC4wNyAxIDEyIDF6bTAgMjBjLTQuOTYgMC05LTQuMDQtOS05czQuMDQtOSA5LTkgOSA0LjA0IDkgOS00LjA0IDktOSA5em01LjUtMTFjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0tMiA1Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NPdmVyc2NhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjAxIDUuNSAxMCA4aDRsLTEuOTktMi41ek0xOCAxMHY0bDIuNS0xLjk5TDE4IDEwek02IDEwbC0yLjUgMi4wMUw2IDE0di00em04IDZoLTRsMi4wMSAyLjVMMTQgMTZ6bTctMTNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3NQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDloLTJ2MmgyVjl6bTQgMGgtMnYyaDJWOXptMyA2LjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3YTEuMDIgMS4wMiAwIDAgMC0xLjAyLjI0bC0yLjIgMi4yYTE1LjA3NCAxNS4wNzQgMCAwIDEtNi41OS02LjU4bDIuMi0yLjIxYy4yOC0uMjcuMzYtLjY2LjI1LTEuMDFBMTEuMzYgMTEuMzYgMCAwIDEgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6TTE5IDl2MmgyVjloLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzUG93ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDI0aDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem0yLTIyaC0ydjEwaDJWMnptMy41NiAyLjQ0LTEuNDUgMS40NUE1Ljk2OSA1Ljk2OSAwIDAgMSAxOCAxMWMwIDMuMzEtMi42OSA2LTYgNnMtNi0yLjY5LTYtNmMwLTIuMTcgMS4xNi00LjA2IDIuODgtNS4xMkw3LjQ0IDQuNDRBNy45NjEgNy45NjEgMCAwIDAgNCAxMWMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04YzAtMi43Mi0xLjM2LTUuMTItMy40NC02LjU2ek0xNSAyNGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzUmVtb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgOUg5Yy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTFWMTBjMC0uNTUtLjQ1LTEtMS0xem0tMyA2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpNNy4wNSA2LjA1bDEuNDEgMS40MWE1LjAyMiA1LjAyMiAwIDAgMSA3LjA4IDBsMS40MS0xLjQxQzE1LjY4IDQuNzggMTMuOTMgNCAxMiA0cy0zLjY4Ljc4LTQuOTUgMi4wNXpNMTIgMEM4Ljk2IDAgNi4yMSAxLjIzIDQuMjIgMy4yMmwxLjQxIDEuNDFDNy4yNiAzLjAxIDkuNTEgMiAxMiAyczQuNzQgMS4wMSA2LjM2IDIuNjRsMS40MS0xLjQxQzE3Ljc5IDEuMjMgMTUuMDQgMCAxMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXR0aW5nc1ZvaWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyNGgydi0ySDd2MnptNS0xMWMxLjY2IDAgMi45OS0xLjM0IDIuOTktM0wxNSA0YzAtMS42Ni0xLjM0LTMtMy0zUzkgMi4zNCA5IDR2NmMwIDEuNjYgMS4zNCAzIDMgM3ptLTEgMTFoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyem00LTE0aC0xLjdjMCAzLTIuNTQgNS4xLTUuMyA1LjFTNi43IDEzIDYuNyAxMEg1YzAgMy40MSAyLjcyIDYuMjMgNiA2LjcyVjIwaDJ2LTMuMjhjMy4yOC0uNDkgNi0zLjMxIDYtNi43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0dGluZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjE0IDEyLjk0Yy4wNC0uMy4wNi0uNjEuMDYtLjk0IDAtLjMyLS4wMi0uNjQtLjA3LS45NGwyLjAzLTEuNThhLjQ5LjQ5IDAgMCAwIC4xMi0uNjFsLTEuOTItMy4zMmEuNDg4LjQ4OCAwIDAgMC0uNTktLjIybC0yLjM5Ljk2Yy0uNS0uMzgtMS4wMy0uNy0xLjYyLS45NGwtLjM2LTIuNTRhLjQ4NC40ODQgMCAwIDAtLjQ4LS40MWgtMy44NGMtLjI0IDAtLjQzLjE3LS40Ny40MWwtLjM2IDIuNTRjLS41OS4yNC0xLjEzLjU3LTEuNjIuOTRsLTIuMzktLjk2Yy0uMjItLjA4LS40NyAwLS41OS4yMkwyLjc0IDguODdjLS4xMi4yMS0uMDguNDcuMTIuNjFsMi4wMyAxLjU4Yy0uMDUuMy0uMDkuNjMtLjA5Ljk0cy4wMi42NC4wNy45NGwtMi4wMyAxLjU4YS40OS40OSAwIDAgMC0uMTIuNjFsMS45MiAzLjMyYy4xMi4yMi4zNy4yOS41OS4yMmwyLjM5LS45NmMuNS4zOCAxLjAzLjcgMS42Mi45NGwuMzYgMi41NGMuMDUuMjQuMjQuNDEuNDguNDFoMy44NGMuMjQgMCAuNDQtLjE3LjQ3LS40MWwuMzYtMi41NGMuNTktLjI0IDEuMTMtLjU2IDEuNjItLjk0bDIuMzkuOTZjLjIyLjA4LjQ3IDAgLjU5LS4yMmwxLjkyLTMuMzJjLjEyLS4yMi4wNy0uNDctLjEyLS42MWwtMi4wMS0xLjU4ek0xMiAxNS42Yy0xLjk4IDAtMy42LTEuNjItMy42LTMuNnMxLjYyLTMuNiAzLjYtMy42IDMuNiAxLjYyIDMuNiAzLjYtMS42MiAzLjYtMy42IDMuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2hvcDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDlIMXYxMWMwIDEuMTEuODkgMiAyIDJoMTZ2LTJIM1Y5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA1VjNjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDV2MTFjMCAxLjExLjg5IDIgMiAyaDE0YzEuMTEgMCAyLS44OSAyLTJWNWgtNXptLTYtMmg0djJoLTRWM3ptMCAxMlY4bDUuNSAzLjVMMTIgMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNob3BUd28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDlIMXYxMWMwIDEuMTEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjg5IDItMkgzVjl6bTE1LTRWM2MwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJINXYxMWMwIDEuMTEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjg5IDItMlY1aC01em0tNi0yaDR2MmgtNFYzem0wIDEyVjhsNS41IDMtNS41IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNob3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA2VjRjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDJ2MTNjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmgtNnptLTYtMmg0djJoLTRWNHpNOSAxOFY5bDcuNSA0TDkgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNob3BwaW5nQmFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNmgtMmMwLTIuMjEtMS43OS00LTQtNFM4IDMuNzkgOCA2SDZjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTggNGMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMVY4aDJ2MnptMi02YzEuMSAwIDIgLjkgMiAyaC00YzAtMS4xLjktMiAyLTJ6bTQgNmMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMVY4aDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2hvcHBpbmdCYXNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy4yMSA5LTQuMzgtNi41NmEuOTkzLjk5MyAwIDAgMC0uODMtLjQyYy0uMzIgMC0uNjQuMTQtLjgzLjQzTDYuNzkgOUgyYy0uNTUgMC0xIC40NS0xIDEgMCAuMDkuMDEuMTguMDQuMjdsMi41NCA5LjI3Yy4yMy44NCAxIDEuNDYgMS45MiAxLjQ2aDEzYy45MiAwIDEuNjktLjYyIDEuOTMtMS40NmwyLjU0LTkuMjdMMjMgMTBjMC0uNTUtLjQ1LTEtMS0xaC00Ljc5ek05IDlsMy00LjRMMTUgOUg5em0zIDhjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaG9wcGluZ0NhcnRDaGVja291dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMThjLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6bTEwIDBjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyIDItLjkgMi0yLS45LTItMi0yem0tOC45LTVoNy40NWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNMMjEgNC45NiAxOS4yNSA0bC0zLjcgN0g4LjUzTDQuMjcgMkgxdjJoMmwzLjYgNy41OS0xLjM1IDIuNDRDNC41MiAxNS4zNyA1LjQ4IDE3IDcgMTdoMTJ2LTJIN2wxLjEtMnpNMTIgMmw0IDQtNCA0LTEuNDEtMS40MUwxMi4xNyA3SDhWNWg0LjE3bC0xLjU5LTEuNTlMMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2hvcHBpbmdDYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOGMtMS4xIDAtMS45OS45LTEuOTkgMlM1LjkgMjIgNyAyMnMyLS45IDItMi0uOS0yLTItMnpNMSAydjJoMmwzLjYgNy41OS0xLjM1IDIuNDVjLS4xNi4yOC0uMjUuNjEtLjI1Ljk2IDAgMS4xLjkgMiAyIDJoMTJ2LTJINy40MmMtLjE0IDAtLjI1LS4xMS0uMjUtLjI1bC4wMy0uMTIuOS0xLjYzaDcuNDVjLjc1IDAgMS40MS0uNDEgMS43NS0xLjAzbDMuNTgtNi40OUExLjAwMyAxLjAwMyAwIDAgMCAyMCA0SDUuMjFsLS45NC0ySDF6bTE2IDE2Yy0xLjEgMC0xLjk5LjktMS45OSAycy44OSAyIDEuOTkgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU21hcnRCdXR0b24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA5djZjMCAxLjEtLjkgMi0yIDJoLTF2LTJoMVY5SDR2Nmg2djJINGMtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDE2YzEuMSAwIDIgLjkgMiAyem0tNy41IDEwIDEuMDktMi40MUwxOCAxNS41bC0yLjQxLTEuMDlMMTQuNSAxMmwtMS4wOSAyLjQxTDExIDE1LjVsMi40MSAxLjA5TDE0LjUgMTl6bTIuNS01IC42Mi0xLjM4TDE5IDEybC0xLjM4LS42MkwxNyAxMGwtLjYyIDEuMzhMMTUgMTJsMS4zOC42MkwxNyAxNHptLTIuNSA1IDEuMDktMi40MUwxOCAxNS41bC0yLjQxLTEuMDlMMTQuNSAxMmwtMS4wOSAyLjQxTDExIDE1LjVsMi40MSAxLjA5TDE0LjUgMTl6bTIuNS01IC42Mi0xLjM4TDE5IDEybC0xLjM4LS42MkwxNyAxMGwtLjYyIDEuMzhMMTUgMTJsMS4zOC42MkwxNyAxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU291cmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS02IDEwSDZ2LTJoOHYyem00LTRINnYtMmgxMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGFjZURhc2hib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDIxSDVjLTEuMSAwLTItLjktMi0yVjVjMC0xLjEuOS0yIDItMmg2djE4em0yIDBoNmMxLjEgMCAyLS45IDItMnYtN2gtOHY5em04LTExVjVjMC0xLjEtLjktMi0yLTJoLTZ2N2g4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGF0aWFsQXVkaW9PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiOVwiLFwiclwiOlwiNFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4zOSAxNS41NkMxNC43MSAxNC43IDEyLjUzIDE0IDEwIDE0cy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCAyIDE4LjIyVjIxaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTIwLjM2IDFsLTEuNDEgMS40MWE3LjAwNyA3LjAwNyAwIDAgMSAwIDkuOWwxLjQxIDEuNDFhOC45OCA4Ljk4IDAgMCAwIDAtMTIuNzJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjU0IDEwLjlhNS4wMDMgNS4wMDMgMCAwIDAgMC03LjA3bC0xLjQxIDEuNDFhMyAzIDAgMCAxIDAgNC4yNGwxLjQxIDEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwYXRpYWxBdWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI5XCIsXCJyXCI6XCI0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjM5IDE1LjU2QzE0LjcxIDE0LjcgMTIuNTMgMTQgMTAgMTRzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDIgMTguMjJWMjFoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpNMTYgMWgtMmE5IDkgMCAwIDAgOSA5VjhjLTMuODYgMC03LTMuMTQtNy03elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxaC0yYzAgMi43NiAyLjI0IDUgNSA1VjRjLTEuNjUgMC0zLTEuMzUtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGF0aWFsVHJhY2tpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiOVwiLFwiclwiOlwiNFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4zOSAxNS41NkMxNC43MSAxNC43IDEyLjUzIDE0IDEwIDE0cy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCAyIDE4LjIyVjIxaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTIwLjA1IDIuNDEgMTguNjQgMWMtMy41MSAzLjUxLTMuNTEgOS4yMSAwIDEyLjczbDEuNDEtMS40MWMtMi43My0yLjc0LTIuNzMtNy4xOCAwLTkuOTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjg4IDUuMjQtMS40MS0xLjQxYTUuMDAzIDUuMDAzIDAgMCAwIDAgNy4wN2wxLjQxLTEuNDFhMy4wMTIgMy4wMTIgMCAwIDEgMC00LjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGVha2VyTm90ZXNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMC41NCAxMS0uNTQtLjU0TDcuNTQgOCA2IDYuNDYgMi4zOCAyLjg0IDEuMjcgMS43MyAwIDNsMi4wMSAyLjAxTDIgMjJsNC00aDlsNS43MyA1LjczTDIyIDIyLjQ2IDE3LjU0IDE4bC03LTd6TTggMTRINnYtMmgydjJ6bS0yLTNWOWwyIDJINnptMTQtOUg0LjA4TDEwIDcuOTJWNmg4djJoLTcuOTJsMSAxSDE4djJoLTQuOTJsNi45OSA2Ljk5QzIxLjE0IDE3Ljk1IDIyIDE3LjA4IDIyIDE2VjRjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwZWFrZXJOb3RlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek04IDE0SDZ2LTJoMnYyem0wLTNINlY5aDJ2MnptMC0zSDZWNmgydjJ6bTcgNmgtNXYtMmg1djJ6bTMtM2gtOFY5aDh2MnptMC0zaC04VjZoOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGVsbGNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNDUgMTZoMi4wOUw5LjQzIDNINy41N0wyLjQ2IDE2aDIuMDlsMS4xMi0zaDUuNjRsMS4xNCAzem0tNi4wMi01TDguNSA1LjQ4IDEwLjU3IDExSDYuNDN6bTE1LjE2LjU5LTguMDkgOC4wOUw5LjgzIDE2bC0xLjQxIDEuNDEgNS4wOSA1LjA5TDIzIDEzbC0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0YXJSYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNDMgMTAgMTIgMmwtMi40MyA4SDJsNi4xOCA0LjQxTDUuODMgMjIgMTIgMTcuMzEgMTguMTggMjJsLTIuMzUtNy41OUwyMiAxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyem00LjI0IDE2TDEyIDE1LjQ1IDcuNzcgMThsMS4xMi00LjgxLTMuNzMtMy4yMyA0LjkyLS40MkwxMiA1bDEuOTIgNC41MyA0LjkyLjQyLTMuNzMgMy4yM0wxNi4yMyAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RpY2t5Tm90ZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDQuOTlDMy44OSAzIDMgMy45IDMgNWwuMDEgMTRjMCAxLjEuODkgMiAxLjk5IDJoMTBsNi02VjVjMC0xLjEtLjktMi0yLTJ6TTcgOGgxMHYySDdWOHptNSA2SDd2LTJoNXYyem0yIDUuNVYxNGg1LjVMMTQgMTkuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDR2MmgxNlY0em0xIDEwdi0ybC0xLTVINGwtMSA1djJoMXY2aDEwdi02aDR2Nmgydi02aDF6bS05IDRINnYtNGg2djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN1YmplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxN0g0djJoMTB2LTJ6bTYtOEg0djJoMTZWOXpNNCAxNWgxNnYtMkg0djJ6TTQgNXYyaDE2VjVINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3VidGl0bGVzT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg2LjgzbDggOEgyMHYyaC0zLjE3bDQuOTMgNC45M2MuMTUtLjI4LjI0LS41OS4yNC0uOTNWNmMwLTEuMS0uOS0yLTItMnpNMS4wNCAzLjg3bDEuMiAxLjJDMi4wOSA1LjM1IDIgNS42NiAyIDZ2MTJjMCAxLjEuOSAyIDIgMmgxMy4xN2wyLjk2IDIuOTYgMS40MS0xLjQxTDIuNDUgMi40NSAxLjA0IDMuODd6TTggMTJ2Mkg0di0yaDR6bTYgNC44M1YxOEg0di0yaDkuMTdsLjgzLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdXBlcnZpc2VkVXNlckNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJjLTUuNTIgMC0xMCA0LjQ4LTEwIDEwczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMC00LjQ4LTEwLTEwLTEwem0zLjYxIDYuMzRjMS4wNyAwIDEuOTMuODYgMS45MyAxLjkzIDAgMS4wNy0uODYgMS45My0xLjkzIDEuOTMtMS4wNyAwLTEuOTMtLjg2LTEuOTMtMS45My0uMDEtMS4wNy44Ni0xLjkzIDEuOTMtMS45M3ptLTYtMS41OGMxLjMgMCAyLjM2IDEuMDYgMi4zNiAyLjM2IDAgMS4zLTEuMDYgMi4zNi0yLjM2IDIuMzZzLTIuMzYtMS4wNi0yLjM2LTIuMzZjMC0xLjMxIDEuMDUtMi4zNiAyLjM2LTIuMzZ6bTAgOS4xM3YzLjc1Yy0yLjQtLjc1LTQuMy0yLjYtNS4xNC00Ljk2IDEuMDUtMS4xMiAzLjY3LTEuNjkgNS4xNC0xLjY5LjUzIDAgMS4yLjA4IDEuOS4yMi0xLjY0Ljg3LTEuOSAyLjAyLTEuOSAyLjY4ek0xMS45OSAyMGMtLjI3IDAtLjUzLS4wMS0uNzktLjA0di00LjA3YzAtMS40MiAyLjk0LTIuMTMgNC40LTIuMTMgMS4wNyAwIDIuOTIuMzkgMy44NCAxLjE1LTEuMTcgMi45Ny00LjA2IDUuMDktNy40NSA1LjA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdXBlcnZpc29yQWNjb3VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgMTJjMS4zOCAwIDIuNDktMS4xMiAyLjQ5LTIuNVMxNy44OCA3IDE2LjUgN2EyLjUgMi41IDAgMCAwIDAgNXpNOSAxMWMxLjY2IDAgMi45OS0xLjM0IDIuOTktM1MxMC42NiA1IDkgNUM3LjM0IDUgNiA2LjM0IDYgOHMxLjM0IDMgMyAzem03LjUgM2MtMS44MyAwLTUuNS45Mi01LjUgMi43NVYxOWgxMXYtMi4yNWMwLTEuODMtMy42Ny0yLjc1LTUuNS0yLjc1ek05IDEzYy0yLjMzIDAtNyAxLjE3LTcgMy41VjE5aDd2LTIuMjVjMC0uODUuMzMtMi4zNCAyLjM3LTMuNDdDMTAuNSAxMy4xIDkuNjYgMTMgOSAxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3VwcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTcuNDYgNy4xMi0yLjc4IDEuMTVhNC45ODIgNC45ODIgMCAwIDAtMi45NS0yLjk0bDEuMTUtMi43OGMyLjEuOCAzLjc3IDIuNDcgNC41OCA0LjU3ek0xMiAxNWMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6TTkuMTMgNC41NGwxLjE3IDIuNzhhNSA1IDAgMCAwLTIuOTggMi45N0w0LjU0IDkuMTNhNy45ODQgNy45ODQgMCAwIDEgNC41OS00LjU5ek00LjU0IDE0Ljg3bDIuNzgtMS4xNWE0Ljk2OCA0Ljk2OCAwIDAgMCAyLjk3IDIuOTZsLTEuMTcgMi43OGE3Ljk5NiA3Ljk5NiAwIDAgMS00LjU4LTQuNTl6bTEwLjM0IDQuNTktMS4xNS0yLjc4YTQuOTc4IDQuOTc4IDAgMCAwIDIuOTUtMi45N2wyLjc4IDEuMTdhOC4wMDcgOC4wMDcgMCAwIDEtNC41OCA0LjU4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2FwSG9yaXogKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02Ljk5IDExIDMgMTVsMy45OSA0di0zSDE0di0ySDYuOTl2LTN6TTIxIDlsLTMuOTktNHYzSDEwdjJoNy4wMXYzTDIxIDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3YXBIb3Jpem9udGFsQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMFMyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTB6bS03LTUuNSAzLjUgMy41LTMuNSAzLjVWMTFoLTRWOWg0VjYuNXptLTYgMTFMNS41IDE0IDkgMTAuNVYxM2g0djJIOXYyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3YXBWZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTcuMDFWMTBoLTJ2Ny4wMWgtM0wxNSAyMWw0LTMuOTloLTN6TTkgMyA1IDYuOTloM1YxNGgyVjYuOTloM0w5IDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3YXBWZXJ0aWNhbENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTYuNSA5IDEwIDUuNSAxMy41IDlIMTF2NEg5VjlINi41em0xMSA2TDE0IDE4LjUgMTAuNSAxNUgxM3YtNGgydjRoMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2lwZURvd25BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMy45YTUgNSAwIDEgMC0yIDB2NC4yN2wtMS41OS0xLjU5TDggMThsNCA0IDQtNC0xLjQxLTEuNDFMMTMgMTguMTdWMTMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3dpcGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy44IDEyLjE4Yy0uMi0uODYtLjMtMS43Ni0uMy0yLjY4IDAtMi44NC45OS01LjQ1IDIuNjMtNy41TDcuMiAzLjA3YTEwLjQ1NyAxMC40NTcgMCAwIDAtMS44OCA4Ljk5bDEuNjItMS42Mkw4IDExLjUgNC41IDE1IDEgMTEuNWwxLjA2LTEuMDYgMS43NCAxLjc0em0xMC4wNS0uNTYtMi42OC01LjM3YTEuNDk4IDEuNDk4IDAgMCAwLTIuMDEtLjY3Yy0uNzUuMzgtMS4wNSAxLjI4LS42OCAyLjAybDQuODEgOS42LTMuMjQuOGMtLjMzLjA5LS41OS4zMy0uNy42Nkw5IDE5Ljc4bDYuMTkgMi4yNWMuNS4xNyAxLjI4LjAyIDEuNzUtLjIybDUuNTEtMi43NWMuODktLjQ1IDEuMzItMS40OCAxLTIuNDJsLTEuNDMtNC4yN2EyIDIgMCAwIDAtMS45LTEuMzdoLTQuNTZjLS4zMSAwLS42Mi4wNy0uODkuMjFsLS44Mi40MVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2lwZUxlZnRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4xIDEzYTUgNSAwIDEgMCAwLTJINS44M2wxLjU5LTEuNTlMNiA4bC00IDQgNCA0IDEuNDEtMS40MUw1LjgzIDEzaDQuMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXBlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljk4IDE2LjgyLS42MyA0LjQ2Yy0uMTQuOTktLjk5IDEuNzItMS45OCAxLjcyaC02LjE2Yy0uNTMgMC0xLjI5LS4yMS0xLjY2LS41OUw1IDE3LjYybC44My0uODRjLjI0LS4yNC41OC0uMzUuOTItLjI4bDMuMjUuNzRWNi41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41djZoLjkxYy4zMSAwIC42Mi4wNy44OS4yMWw0LjA5IDIuMDRjLjc3LjM5IDEuMjEgMS4yMiAxLjA5IDIuMDd6TTEyIDIuNWM0Ljc0IDAgNy42NyAyLjUyIDguNDMgNC41SDIyYy0uNzMtMi44OC00LjUxLTYtMTAtNi0zLjIyIDAtNi4xOCAxLjEzLTguNSAzLjAyVjJIMnY1aDVWNS41SDQuMDljMi4xMi0xLjg2IDQuODgtMyA3LjkxLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXBlUmlnaHRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy45IDExYTUgNSAwIDEgMCAwIDJoNC4yN2wtMS41OSAxLjU5TDE4IDE2bDQtNC00LTQtMS40MSAxLjQxTDE4LjE3IDExSDEzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXBlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS45OCAxNi44Mi0uNjMgNC40NmMtLjE0Ljk5LS45OSAxLjcyLTEuOTggMS43MmgtNi4xNmMtLjUzIDAtMS4yOS0uMjEtMS42Ni0uNTlMNSAxNy42MmwuODMtLjg0Yy4yNC0uMjQuNTgtLjM1LjkyLS4yOGwzLjI1Ljc0VjYuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNXY2aC45MWMuMzEgMCAuNjIuMDcuODkuMjFsNC4wOSAyLjA0Yy43Ny4zOSAxLjIxIDEuMjIgMS4wOSAyLjA3ek0xOS45MSA1LjVIMTdWN2g1VjJoLTEuNXYyLjAyQTEzLjQxMyAxMy40MTMgMCAwIDAgMTIgMUM2LjUxIDEgMi43MyA0LjEyIDIgN2gxLjU3QzQuMzMgNS4wMiA3LjI2IDIuNSAxMiAyLjVjMy4wMyAwIDUuNzkgMS4xNCA3LjkxIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXBlVXBBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMyA1LjgzIDEuNTkgMS41OUwxNiA2bC00LTQtNCA0IDEuNDEgMS40MUwxMSA1LjgzdjQuMjdhNSA1IDAgMSAwIDIgMFY1LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2lwZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi4wNiA1LjU2IDEgNC41IDQuNSAxIDggNC41IDYuOTQgNS41NiA1LjMyIDMuOTRhMTAuNDU3IDEwLjQ1NyAwIDAgMCAxLjg4IDguOTlMNi4xMyAxNEExMS45NzQgMTEuOTc0IDAgMCAxIDMuNSA2LjVjMC0uOTIuMS0xLjgyLjMtMi42OEwyLjA2IDUuNTZ6bTExLjc5IDYuMDYtMi42OC01LjM3YTEuNDk4IDEuNDk4IDAgMCAwLTIuMDEtLjY3Yy0uNzUuMzgtMS4wNSAxLjI4LS42OCAyLjAybDQuODEgOS42LTMuMjQuOGMtLjMzLjA5LS41OS4zMy0uNy42Nkw5IDE5Ljc4bDYuMTkgMi4yNWMuNS4xNyAxLjI4LjAyIDEuNzUtLjIybDUuNTEtMi43NWMuODktLjQ1IDEuMzItMS40OCAxLTIuNDJsLTEuNDMtNC4yN2EyIDIgMCAwIDAtMS45LTEuMzdoLTQuNTZjLS4zMSAwLS42Mi4wNy0uODkuMjFsLS44Mi40MVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2lwZVZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAzLjVoMi4wMkMxLjEzIDUuODIgMCA4Ljc4IDAgMTJzMS4xMyA2LjE4IDMuMDIgOC41SDFWMjJoNXYtNUg0LjV2Mi45MWMtMS44Ni0yLjExLTMtNC44OC0zLTcuOTFzMS4xNC01Ljc5IDMtNy45MVY3SDZWMkgxdjEuNXptMTIuODUgOC4xMi0yLjY4LTUuMzdhMS40OTggMS40OTggMCAwIDAtMi4wMS0uNjdjLS43NS4zOC0xLjA1IDEuMjgtLjY4IDIuMDJsNC44MSA5LjYtMy4yNC44Yy0uMzMuMDktLjU5LjMzLS43LjY2TDkgMTkuNzhsNi4xOSAyLjI1Yy41LjE3IDEuMjguMDIgMS43NS0uMjJsNS41MS0yLjc1Yy44OS0uNDUgMS4zMi0xLjQ4IDEtMi40MmwtMS40My00LjI3YTIgMiAwIDAgMC0xLjktMS4zN2gtNC41NmMtLjMxIDAtLjYyLjA3LS44OS4yMWwtLjgyLjQxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguODkgMTQuNzUtNC4wOS0yLjA0Yy0uMjgtLjE0LS41OC0uMjEtLjg5LS4yMUgxM3YtNmMwLS44My0uNjctMS41LTEuNS0xLjVTMTAgNS42NyAxMCA2LjV2MTAuNzRsLTMuMjUtLjc0YS45OS45OSAwIDAgMC0uOTIuMjhsLS44My44NCA0LjU0IDQuNzljLjM4LjM4IDEuMTQuNTkgMS42Ny41OWg2LjE2YzEgMCAxLjg0LS43MyAxLjk4LTEuNzJsLjYzLTQuNDZjLjEyLS44NS0uMzItMS42OC0xLjA5LTIuMDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjEzIDMuODdDMTguNjkgMi4xNyAxNS42IDEgMTIgMVM1LjMxIDIuMTcgMy44NyAzLjg3TDIgMnY1aDVMNC45MyA0LjkzYzEtMS4yOSAzLjctMi40MyA3LjA3LTIuNDNzNi4wNyAxLjE0IDcuMDcgMi40M0wxNyA3aDVWMmwtMS44NyAxLjg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2l0Y2hBY2Nlc3NTaG9ydGN1dEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDE0aC0ydi0yaC0ydjJoLTJ2MmgydjJoMnYtMmgydi0yek03LjA2IDguOTQgNSA4bDIuMDYtLjk0TDggNWwuOTQgMi4wNkwxMSA4bC0yLjA2Ljk0TDggMTFsLS45NC0yLjA2ek04IDIxbC45NC0yLjA2TDExIDE4bC0yLjA2LS45NEw4IDE1bC0uOTQgMi4wNkw1IDE4bDIuMDYuOTRMOCAyMXptLTMuNjMtOC42M0wzIDEzbDEuMzcuNjNMNSAxNWwuNjMtMS4zN0w3IDEzbC0xLjM3LS42M0w1IDExbC0uNjMgMS4zN3pNMTIgMTJjMC0yLjczIDEuMDgtNS4yNyAyLjc1LTcuMjVMMTIgMmg3djdsLTIuODItMi44MkMxNC44NCA3LjgyIDE0IDkuODggMTQgMTJjMCAzLjMyIDIuMSA2LjM2IDUgNy44MlYyMmMtNC4wOS0xLjU5LTctNS42NS03LTEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2l0Y2hBY2Nlc3NTaG9ydGN1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMDYgOC45NCA1IDhsMi4wNi0uOTRMOCA1bC45NCAyLjA2TDExIDhsLTIuMDYuOTRMOCAxMWwtLjk0LTIuMDZ6TTggMjFsLjk0LTIuMDZMMTEgMThsLTIuMDYtLjk0TDggMTVsLS45NCAyLjA2TDUgMThsMi4wNi45NEw4IDIxem0tMy42My04LjYzTDMgMTNsMS4zNy42M0w1IDE1bC42My0xLjM3TDcgMTNsLTEuMzctLjYzTDUgMTFsLS42MyAxLjM3ek0xMiAxMmMwLTIuNzMgMS4wOC01LjI3IDIuNzUtNy4yNUwxMiAyaDd2N2wtMi44Mi0yLjgyQzE0Ljg0IDcuODIgMTQgOS44OCAxNCAxMmMwIDMuMzIgMi4xIDYuMzYgNSA3LjgyVjIyYy00LjA5LTEuNTktNy01LjY1LTctMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN5bmNBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCAxMiA0LTQtNC00djNIM3YyaDE1ek02IDEybC00IDQgNCA0di0zaDE1di0ySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN5c3RlbVVwZGF0ZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAuNWgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxNi41IDQtNGgtM3YtOWgtMnY5SDhsNCA0em05LTEzaC02djEuOTloNnYxNC4wM0gzVjUuNDloNlYzLjVIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnYtMTRjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhYlVuc2VsZWN0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDloMlY3SDF2MnptMCA0aDJ2LTJIMXYyem0wLThoMlYzYy0xLjEgMC0yIC45LTIgMnptOCAxNmgydi0ySDl2MnptLTgtNGgydi0ySDF2MnptMiA0di0ySDFjMCAxLjEuOSAyIDIgMnpNMjEgM2gtOHY2aDEwVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTRoMnYtMmgtMnYyek05IDVoMlYzSDl2MnpNNSAyMWgydi0ySDV2MnpNNSA1aDJWM0g1djJ6bTE2IDE2YzEuMSAwIDItLjkgMi0yaC0ydjJ6bTAtOGgydi0yaC0ydjJ6bS04IDhoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkgzVjVoMTB2NGg4djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYWJsZVZpZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3SDljLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnptMCAydjJIOVY5aDEwem0tNiA2di0yaDJ2MmgtMnptMiAydjJoLTJ2LTJoMnptLTQtMkg5di0yaDJ2MnptNi0yaDJ2MmgtMnYtMnptLTggNGgydjJIOXYtMnptOCAydi0yaDJ2MmgtMnpNNiAxN0g1Yy0xLjEgMC0yLS45LTItMlY1YzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDJ2MWgtMlY1SDV2MTBoMXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYXNrQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNS4xOCAxMC41OSAxNi42bC00LjI0LTQuMjQgMS40MS0xLjQxIDIuODMgMi44MyAxMC0xMEwyMiA1LjE4em0tMi4yMSA1LjA0Yy4xMy41Ny4yMSAxLjE3LjIxIDEuNzggMCA0LjQyLTMuNTggOC04IDhzLTgtMy41OC04LTggMy41OC04IDgtOGMxLjU4IDAgMy4wNC40NiA0LjI4IDEuMjVsMS40NC0xLjQ0QTkuOSA5LjkgMCAwIDAgMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwYzAtMS4xOS0uMjItMi4zMy0uNi0zLjM5bC0xLjYxIDEuNjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRlcm1pbmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YTIgMiAwIDAgMC0yLTJ6bTAgMTRINFY4aDE2djEwem0tMi0xaC02di0yaDZ2MnpNNy41IDE3bC0xLjQxLTEuNDFMOC42NyAxM2wtMi41OS0yLjU5TDcuNSA5bDQgNC00IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRleHRSb3RhdGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTJ2MS41bDExIDQuNzV2LTIuMWwtMi4yLS45di01bDIuMi0uOXYtMi4xTDMgMTJ6bTcgMi42Mi01LjAyLTEuODdMMTAgMTAuODh2My43NHptOC0xMC4zNy0zIDNoMnYxMi41aDJWNy4yNWgybC0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRleHRSb3RhdGVWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ljc1IDVoLTEuNUw5LjUgMTZoMi4xbC45LTIuMmg1bC45IDIuMmgyLjFMMTUuNzUgNXptLTIuNjIgN0wxNSA2Ljk4IDE2Ljg3IDEyaC0zLjc0ek02IDE5Ljc1bDMtM0g3VjQuMjVINXYxMi41SDNsMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUZXh0Um90YXRpb25BbmdsZWRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS40IDQuOTEtMS4wNi0xLjA2TDcuMiA4LjI3bDEuNDggMS40OCAyLjE5LS45MiAzLjU0IDMuNTQtLjkyIDIuMTkgMS40OCAxLjQ4TDE5LjQgNC45MXptLTYuODEgMy4xIDQuODctMi4yMy0yLjIzIDQuODctMi42NC0yLjY0ek0xNC4yNyAyMXYtNC4yNGwtMS40MSAxLjQxLTguODQtOC44NC0xLjQyIDEuNDIgOC44NCA4Ljg0TDEwLjAzIDIxaDQuMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRleHRSb3RhdGlvbkFuZ2xldXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjQ5IDQuMjEgMy40MyA1LjI3IDcuODUgMTYuNGwxLjQ4LTEuNDgtLjkyLTIuMTkgMy41NC0zLjU0IDIuMTkuOTIgMS40OC0xLjQ4TDQuNDkgNC4yMXptMy4wOSA2LjhMNS4zNiA2LjE0bDQuODcgMi4yMy0yLjY1IDIuNjR6bTEyLjk5LTEuNjhoLTQuMjRsMS40MSAxLjQxLTguODQgOC44NEwxMC4zMiAyMWw4Ljg0LTguODQgMS40MSAxLjQxVjkuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRleHRSb3RhdGlvbkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMnYtMS41TDEwIDUuNzV2Mi4xbDIuMi45djVsLTIuMi45djIuMUwyMSAxMnptLTctMi42MiA1LjAyIDEuODdMMTQgMTMuMTJWOS4zOHpNNiAxOS43NWwzLTNIN1Y0LjI1SDV2MTIuNUgzbDMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dFJvdGF0aW9uTm9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjc1IDNoLTEuNUw2LjUgMTRoMi4xbC45LTIuMmg1bC45IDIuMmgyLjFMMTIuNzUgM3ptLTIuNjIgN0wxMiA0Ljk4IDEzLjg3IDEwaC0zLjc0em0xMC4zNyA4LTMtM3YySDV2MmgxMi41djJsMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaGVhdGVycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDN2MmgtMlYzSDh2Mkg2VjNINHYxOGgydi0yaDJ2Mmg4di0yaDJ2MmgyVjNoLTJ6TTggMTdINnYtMmgydjJ6bTAtNEg2di0yaDJ2MnptMC00SDZWN2gydjJ6bTEwIDhoLTJ2LTJoMnYyem0wLTRoLTJ2LTJoMnYyem0wLTRoLTJWN2gydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRodW1iRG93bk9mZkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMjRIMFYwaDI0djI0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMC44OSAxOC4yOC41Ny0yLjg5Yy4xMi0uNTktLjA0LTEuMi0uNDItMS42Ni0uMzgtLjQ2LS45NC0uNzMtMS41NC0uNzNINHYtMS4wOEw2LjU3IDZoOC4wOWMuMTggMCAuMzQuMTYuMzQuMzR2Ny44NGwtNC4xMSA0LjFNMTAgMjJsNi40MS02LjQxYy4zOC0uMzguNTktLjg5LjU5LTEuNDJWNi4zNEMxNyA1LjA1IDE1Ljk1IDQgMTQuNjYgNGgtOC4xYy0uNzEgMC0xLjM2LjM3LTEuNzIuOTdsLTIuNjcgNi4xNWMtLjExLjI1LS4xNy41Mi0uMTcuOFYxM2MwIDEuMS45IDIgMiAyaDUuNWwtLjkyIDQuNjVjLS4wNS4yMi0uMDIuNDYuMDguNjYuMjMuNDUuNTIuODYuODggMS4yMkwxMCAyMnptMTAtN2gyVjRoLTJjLS41NSAwLTEgLjQ1LTEgMXY5YzAgLjU1LjQ1IDEgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaHVtYkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAzSDZjLS44MyAwLTEuNTQuNS0xLjg0IDEuMjJsLTMuMDIgNy4wNWMtLjA5LjIzLS4xNC40Ny0uMTQuNzN2MmMwIDEuMS45IDIgMiAyaDYuMzFsLS45NSA0LjU3LS4wMy4zMmMwIC40MS4xNy43OS40NCAxLjA2TDkuODMgMjNsNi41OS02LjU5Yy4zNi0uMzYuNTgtLjg2LjU4LTEuNDFWNWMwLTEuMS0uOS0yLTItMnptNCAwdjEyaDRWM2gtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGh1bWJVcE9mZkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuMTEgNS43Mi0uNTcgMi44OWMtLjEyLjU5LjA0IDEuMi40MiAxLjY2LjM4LjQ2Ljk0LjczIDEuNTQuNzNIMjB2MS4wOEwxNy40MyAxOEg5LjM0YS4zNS4zNSAwIDAgMS0uMzQtLjM0VjkuODJsNC4xMS00LjFNMTQgMiA3LjU5IDguNDFDNy4yMSA4Ljc5IDcgOS4zIDcgOS44M3Y3LjgzQzcgMTguOTUgOC4wNSAyMCA5LjM0IDIwaDguMWMuNzEgMCAxLjM2LS4zNyAxLjcyLS45N2wyLjY3LTYuMTVjLjExLS4yNS4xNy0uNTIuMTctLjhWMTFjMC0xLjEtLjktMi0yLTJoLTUuNWwuOTItNC42NWMuMDUtLjIyLjAyLS40Ni0uMDgtLjY2YTQuOCA0LjggMCAwIDAtLjg4LTEuMjJMMTQgMnpNNCA5SDJ2MTFoMmMuNTUgMCAxLS40NSAxLTF2LTljMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaHVtYlVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDIxaDRWOUgxdjEyem0yMi0xMWMwLTEuMS0uOS0yLTItMmgtNi4zMWwuOTUtNC41Ny4wMy0uMzJjMC0uNDEtLjE3LS43OS0uNDQtMS4wNkwxNC4xNyAxIDcuNTkgNy41OUM3LjIyIDcuOTUgNyA4LjQ1IDcgOXYxMGMwIDEuMS45IDIgMiAyaDljLjgzIDAgMS41NC0uNSAxLjg0LTEuMjJsMy4wMi03LjA1Yy4wOS0uMjMuMTQtLjQ3LjE0LS43M3YtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGh1bWJzVXBEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMwLS41NS0uNDUtMS0xLTFINS44MmwuNjYtMy4xOC4wMi0uMjNjMC0uMzEtLjEzLS41OS0uMzMtLjhMNS4zOCAwIC40NCA0Ljk0Qy4xNyA1LjIxIDAgNS41OSAwIDZ2Ni41YzAgLjgzLjY3IDEuNSAxLjUgMS41aDYuNzVjLjYyIDAgMS4xNS0uMzggMS4zOC0uOTFsMi4yNi01LjI5Yy4wNy0uMTcuMTEtLjM2LjExLS41NVY2em0xMC41IDRoLTYuNzVjLS42MiAwLTEuMTUuMzgtMS4zOC45MWwtMi4yNiA1LjI5Yy0uMDcuMTctLjExLjM2LS4xMS41NVYxOGMwIC41NS40NSAxIDEgMWg1LjE4bC0uNjYgMy4xOC0uMDIuMjRjMCAuMzEuMTMuNTkuMzMuOGwuNzkuNzggNC45NC00Ljk0Yy4yNy0uMjcuNDQtLjY1LjQ0LTEuMDZ2LTYuNWMwLS44My0uNjctMS41LTEuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRpbWVsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgOGMwIDEuMS0uOSAyLTIgMmExLjcgMS43IDAgMCAxLS41MS0uMDdsLTMuNTYgMy41NWMuMDUuMTYuMDcuMzQuMDcuNTIgMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yYzAtLjE4LjAyLS4zNi4wNy0uNTJsLTIuNTUtMi41NWMtLjE2LjA1LS4zNC4wNy0uNTIuMDdzLS4zNi0uMDItLjUyLS4wN2wtNC41NSA0LjU2Yy4wNS4xNi4wNy4zMy4wNy41MSAwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTJjLjE4IDAgLjM1LjAyLjUxLjA3bDQuNTYtNC41NUM4LjAyIDkuMzYgOCA5LjE4IDggOWMwLTEuMS45LTIgMi0yczIgLjkgMiAyYzAgLjE4LS4wMi4zNi0uMDcuNTJsMi41NSAyLjU1Yy4xNi0uMDUuMzQtLjA3LjUyLS4wN3MuMzYuMDIuNTIuMDdsMy41NS0zLjU2QTEuNyAxLjcgMCAwIDEgMTkgOGMwLTEuMS45LTIgMi0yczIgLjkgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaXBzQW5kVXBkYXRlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMjBoNGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJ6bS0yLTFoOHYtMkg1djJ6bTExLjUtOS41YzAgMy44Mi0yLjY2IDUuODYtMy43NyA2LjVINS4yN2MtMS4xMS0uNjQtMy43Ny0yLjY4LTMuNzctNi41QzEuNSA1LjM2IDQuODYgMiA5IDJzNy41IDMuMzYgNy41IDcuNXptNC44Ny0yLjEzTDIwIDhsMS4zNy42M0wyMiAxMGwuNjMtMS4zN0wyNCA4bC0xLjM3LS42M0wyMiA2bC0uNjMgMS4zN3pNMTkgNmwuOTQtMi4wNkwyMiAzbC0yLjA2LS45NEwxOSAwbC0uOTQgMi4wNkwxNiAzbDIuMDYuOTRMMTkgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVG9jIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA5aDE0VjdIM3Yyem0wIDRoMTR2LTJIM3Yyem0wIDRoMTR2LTJIM3Yyem0xNiAwaDJ2LTJoLTJ2MnptMC0xMHYyaDJWN2gtMnptMCA2aDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVG9kYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC0xVjFoLTJ2Mkg4VjFINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMTlhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOGgxNHYxMXpNNyAxMGg1djVIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVG9rZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS45NyA2LjQzIDEyIDIgNC4wMyA2LjQzIDkuMSA5LjI0QzkuODMgOC40OCAxMC44NiA4IDEyIDhzMi4xNy40OCAyLjkgMS4yNGw1LjA3LTIuODF6TTEwIDEyYzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTEgOS40NEwzIDE3VjguMTRsNS4xMyAyLjg1Yy0uMDkuMzItLjEzLjY2LS4xMyAxLjAxIDAgMS44NiAxLjI3IDMuNDMgMyAzLjg3djUuNTd6bTIgMHYtNS41N2MxLjczLS40NCAzLTIuMDEgMy0zLjg3IDAtLjM1LS4wNC0uNjktLjEzLTEuMDFMMjEgOC4xNFYxN2wtOCA0LjQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUb2xsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LTgtMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6TTMgMTJhNS45OSA1Ljk5IDAgMCAxIDQtNS42NVY0LjI2QzMuNTUgNS4xNSAxIDguMjcgMSAxMnMyLjU1IDYuODUgNiA3Ljc0di0yLjA5QTUuOTkgNS45OSAwIDAgMSAzIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUb3VjaEFwcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTEuMjRWNy41YTIuNSAyLjUgMCAwIDEgNSAwdjMuNzRjMS4yMS0uODEgMi0yLjE4IDItMy43NEMxNiA1LjAxIDEzLjk5IDMgMTEuNSAzUzcgNS4wMSA3IDcuNWMwIDEuNTYuNzkgMi45MyAyIDMuNzR6bTkuODQgNC42My00LjU0LTIuMjZjLS4xNy0uMDctLjM1LS4xMS0uNTQtLjExSDEzdi02YzAtLjgzLS42Ny0xLjUtMS41LTEuNVMxMCA2LjY3IDEwIDcuNXYxMC43NGMtMy42LS43Ni0zLjU0LS43NS0zLjY3LS43NS0uMzEgMC0uNTkuMTMtLjc5LjMzbC0uNzkuOCA0Ljk0IDQuOTRjLjI3LjI3LjY1LjQ0IDEuMDYuNDRoNi43OWMuNzUgMCAxLjMzLS41NSAxLjQ0LTEuMjhsLjc1LTUuMjdjLjAxLS4wNy4wMi0uMTQuMDItLjIgMC0uNjItLjM4LTEuMTYtLjkxLTEuMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRvdXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDdWMkg1djIwaDJ2LThoMTRsLTItNSAyLTV6bS02IDVjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yIDIgLjkgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmFja0NoYW5nZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjA3IDQuOTMtMS40MSAxLjQxQTguMDE0IDguMDE0IDAgMCAxIDIwIDEyYzAgNC40Mi0zLjU4IDgtOCA4cy04LTMuNTgtOC04YzAtNC4wOCAzLjA1LTcuNDQgNy03LjkzdjIuMDJDOC4xNiA2LjU3IDYgOS4wMyA2IDEyYzAgMy4zMSAyLjY5IDYgNiA2czYtMi42OSA2LTZjMC0xLjY2LS42Ny0zLjE2LTEuNzYtNC4yNGwtMS40MSAxLjQxQzE1LjU1IDkuOSAxNiAxMC45IDE2IDEyYzAgMi4yMS0xLjc5IDQtNCA0cy00LTEuNzktNC00YzAtMS44NiAxLjI4LTMuNDEgMy0zLjg2djIuMTRjLS42LjM1LTEgLjk4LTEgMS43MiAwIDEuMS45IDIgMiAyczItLjkgMi0yYzAtLjc0LS40LTEuMzgtMS0xLjcyVjJoLTFDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMGMwLTIuNzYtMS4xMi01LjI2LTIuOTMtNy4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJhbnNjcmliZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjkzIDE2IDEuNjMtMS42M2MtMi43Ny0zLjAyLTIuNzctNy41NiAwLTEwLjc0TDE3LjkzIDJjLTMuOSAzLjg5LTMuOTEgOS45NSAwIDE0em00Ljk5LTUuMDVhMy4zMTcgMy4zMTcgMCAwIDEgMC0zLjg5bC0xLjY4LTEuNjljLTIuMDIgMi4wMi0yLjAyIDUuMDcgMCA3LjI3bDEuNjgtMS42OXpNOSAxM2MyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTYuMzkgMi41NkMxMy43MSAxNC43IDExLjUzIDE0IDkgMTRzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDEgMTguMjJWMjFoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJhbnNsYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIuODcgMTUuMDctMi41NC0yLjUxLjAzLS4wM0ExNy41MiAxNy41MiAwIDAgMCAxNC4wNyA2SDE3VjRoLTdWMkg4djJIMXYxLjk5aDExLjE3QzExLjUgNy45MiAxMC40NCA5Ljc1IDkgMTEuMzUgOC4wNyAxMC4zMiA3LjMgOS4xOSA2LjY5IDhoLTJjLjczIDEuNjMgMS43MyAzLjE3IDIuOTggNC41NmwtNS4wOSA1LjAyTDQgMTlsNS01IDMuMTEgMy4xMS43Ni0yLjA0ek0xOC41IDEwaC0yTDEyIDIyaDJsMS4xMi0zaDQuNzVMMjEgMjJoMmwtNC41LTEyem0tMi42MiA3IDEuNjItNC4zM0wxOS4xMiAxN2gtMy4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJlbmRpbmdEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYgMTggMi4yOS0yLjI5LTQuODgtNC44OC00IDRMMiA3LjQxIDMuNDEgNmw2IDYgNC00IDYuMyA2LjI5TDIyIDEydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRyZW5kaW5nRmxhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDEyLTQtNHYzSDN2MmgxNXYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmVuZGluZ1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYgNiAyLjI5IDIuMjktNC44OCA0Ljg4LTQtNEwyIDE2LjU5IDMuNDEgMThsNi02IDQgNCA2LjMtNi4yOUwyMiAxMlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcm91Ymxlc2hvb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiAyMC41OS00LjY5LTQuNjlBNy45MDIgNy45MDIgMCAwIDAgMTkgMTFjMC00LjQyLTMuNTgtOC04LTgtNC4wOCAwLTcuNDQgMy4wNS03LjkzIDdoMi4wMkM1LjU3IDcuMTcgOC4wMyA1IDExIDVjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDZjLTIuNDIgMC00LjUtMS40NC01LjQ1LTMuNUgzLjRDNC40NSAxNi42OSA3LjQ2IDE5IDExIDE5YzEuODUgMCAzLjU1LS42MyA0LjktMS42OUwyMC41OSAyMiAyMiAyMC41OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC40MyA5LjY5IDkuNjUgMTVoMS42NGwxLjI2LTMuNzguOTUgMi4yOGgyVjEyaC0xbC0xLjI1LTNoLTEuNTRsLTEuMTIgMy4zN0w5LjM1IDdINy43bC0xLjI1IDRIMXYxLjVoNi41NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTYuNDMgOS41N0wxMiAxNWwtMS41Ny0zLjQzTDcgMTBsMy40My0xLjU3TDEyIDVsMS41NyAzLjQzTDE3IDEwbC0zLjQzIDEuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFR1cm5lZEluTm90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yem0wIDE1LTUtMi4xOEw3IDE4VjVoMTB2MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFR1cm5lZEluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVbmZvbGRMZXNzRG91YmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNTggMS40MSAxNS4xNiAwbC0zLjE3IDMuMTdMOC44MiAwIDcuNDEgMS40MSAxMS45OSA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41OCA2LjQxIDE1LjE2IDVsLTMuMTcgMy4xN0w4LjgyIDUgNy40MSA2LjQxIDExLjk5IDExek03LjQyIDE3LjU5IDguODQgMTlsMy4xNy0zLjE3TDE1LjE4IDE5bDEuNDEtMS40MUwxMi4wMSAxM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy40MiAyMi41OSA4Ljg0IDI0bDMuMTctMy4xN0wxNS4xOCAyNGwxLjQxLTEuNDFMMTIuMDEgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFVuZm9sZE1vcmVEb3VibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3LjgzIDE1LjE3IDExbDEuNDEtMS40MUwxMiA1IDcuNDEgOS41OSA4LjgzIDExIDEyIDcuODN6bTAtNUwxNS4xNyA2bDEuNDEtMS40MUwxMiAwIDcuNDEgNC41OSA4LjgzIDYgMTIgMi44M3ptMCAxOC4zNEw4LjgzIDE4bC0xLjQxIDEuNDFMMTIgMjRsNC41OS00LjU5TDE1LjE3IDE4IDEyIDIxLjE3em0wLTVMOC44MyAxM2wtMS40MSAxLjQxTDEyIDE5bDQuNTktNC41OUwxNS4xNyAxMyAxMiAxNi4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVW5wdWJsaXNoZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS4xOSAyMS4xOSAyLjgxIDIuODEgMS4zOSA0LjIybDIuMjcgMi4yN0E5LjkxIDkuOTEgMCAwIDAgMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMCAyLjA0IDAgMy45My0uNjEgNS41MS0xLjY2bDIuMjcgMi4yNyAxLjQxLTEuNDJ6bS0xMC42LTQuNTktNC4yNC00LjI0IDEuNDEtMS40MSAyLjgzIDIuODMuMTgtLjE4IDEuNDEgMS40MS0xLjU5IDEuNTl6bTMtNS44NC03LjEtNy4xQTkuOTEgOS45MSAwIDAgMSAxMiAyYzUuNTIgMCAxMCA0LjQ4IDEwIDEwIDAgMi4wNC0uNjEgMy45My0xLjY2IDUuNTFMMTUgMTIuMTdsMi42NS0yLjY1LTEuNDEtMS40MS0yLjY1IDIuNjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFVwZGF0ZURpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC42NyA1Ljg0IDcuMjIgNC4zOUE4Ljg2IDguODYgMCAwIDEgMTIgM2MyLjc0IDAgNS4xOSAxLjIzIDYuODQgMy4xNkwyMSA0djZoLTZsMi40MS0yLjQxQzE2LjEyIDYuMDIgMTQuMTggNSAxMiA1Yy0xLjIgMC0yLjM0LjMxLTMuMzMuODR6TTEzIDdoLTJ2MS4xN2wyIDJWN3ptNi43OCAxNS42MS0zLTNBOC45NzMgOC45NzMgMCAwIDEgMTIgMjFhOSA5IDAgMCAxLTktOWMwLTEuNzYuNTEtMy40IDEuMzktNC43OGwtMy0zTDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNCAxLjQyem0tNC40Ni00LjQ2TDUuODQgOC42N0E3LjA2IDcuMDYgMCAwIDAgNSAxMmMwIDMuODYgMy4xNCA3IDcgNyAxLjIgMCAyLjM0LS4zMSAzLjMyLS44NXpNMjAuOTQgMTNoLTIuMDJjLS4xMi44My0uMzkgMS42MS0uNzcgMi4zMmwxLjQ3IDEuNDdjLjctMS4xMiAxLjE3LTIuNDEgMS4zMi0zLjc5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVcGRhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMC4xMmgtNi43OGwyLjc0LTIuODJjLTIuNzMtMi43LTcuMTUtMi44LTkuODgtLjEtMi43MyAyLjcxLTIuNzMgNy4wOCAwIDkuNzlzNy4xNSAyLjcxIDkuODggMEMxOC4zMiAxNS42NSAxOSAxNC4wOCAxOSAxMi4xaDJjMCAxLjk4LS44OCA0LjU1LTIuNjQgNi4yOS0zLjUxIDMuNDgtOS4yMSAzLjQ4LTEyLjcyIDAtMy41LTMuNDctMy41My05LjExLS4wMi0xMi41OHM5LjE0LTMuNDcgMTIuNjUgMEwyMSAzdjcuMTJ6TTEyLjUgOHY0LjI1bDMuNSAyLjA4LS43MiAxLjIxTDExIDEzVjhoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVcGdyYWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTh2Mkg4di0yaDh6TTExIDcuOTlWMTZoMlY3Ljk5aDNMMTIgNCA4IDcuOTloM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmVyaWZpZWRVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMSAzIDV2NmMwIDUuNTUgMy44NCAxMC43NCA5IDEyIDUuMTYtMS4yNiA5LTYuNDUgOS0xMlY1bC05LTR6bS0yIDE2LTQtNCAxLjQxLTEuNDFMMTAgMTQuMTdsNi41OS02LjU5TDE4IDlsLTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmVyaWZpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMyAxMi0yLjQ0LTIuNzkuMzQtMy42OS0zLjYxLS44Mi0xLjg5LTMuMkwxMiAyLjk2IDguNiAxLjUgNi43MSA0LjY5IDMuMSA1LjVsLjM0IDMuN0wxIDEybDIuNDQgMi43OS0uMzQgMy43IDMuNjEuODJMOC42IDIyLjVsMy40LTEuNDcgMy40IDEuNDYgMS44OS0zLjE5IDMuNjEtLjgyLS4zNC0zLjY5TDIzIDEyem0tMTIuOTEgNC43Mi0zLjgtMy44MSAxLjQ4LTEuNDggMi4zMiAyLjMzIDUuODUtNS44NyAxLjQ4IDEuNDgtNy4zMyA3LjM1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWZXJ0aWNhbFNwbGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE1aDh2LTJIM3Yyem0wIDRoOHYtMkgzdjJ6bTAtOGg4VjlIM3Yyem0wLTZ2Mmg4VjVIM3ptMTAgMGg4djE0aC04VjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdBZ2VuZGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxM0g1Yy0xLjEgMC0yIC45LTIgMnY0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTRjMC0xLjEtLjktMi0yLTJ6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2NGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdBcnJheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVoLTN2MTRoM1Y1em0tNCAwSDd2MTRoMTBWNXpNNiA1SDN2MTRoM1Y1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3Q2Fyb3VzZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDdoNHYxMEgyVjd6bTUgMTJoMTBWNUg3djE0ek0xOCA3aDR2MTBoLTRWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld0NvbHVtbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjY3IDV2MTRIOS4zM1Y1aDUuMzR6bTEgMTRIMjFWNWgtNS4zM3YxNHptLTcuMzQgMFY1SDN2MTRoNS4zM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld0NvbWZ5QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bS05IDEzSDd2LTRoNHY0em0wLTZIN1Y3aDR2NHptNiA2aC00di00aDR2NHptMC02aC00VjdoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3Q29tcGFjdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tOC41IDEyLjVoLTR2LTRoNHY0em0wLTVoLTR2LTRoNHY0em01IDVoLTR2LTRoNHY0em0wLTVoLTR2LTRoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3Q296eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tOC43NSAxMi43NWgtNHYtNGg0djR6bTAtNS41aC00di00aDR2NHptNS41IDUuNWgtNHYtNGg0djR6bTAtNS41aC00di00aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld0RheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMjFoMTl2LTNIMnYzek0yMCA4SDNjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE3Yy41NSAwIDEtLjQ1IDEtMVY5YzAtLjU1LS40NS0xLTEtMXpNMiAzdjNoMTlWM0gyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3SGVhZGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTVoMTZ2LTJINHYyem0wIDRoMTZ2LTJINHYyem0wLThoMTZWOUg0djJ6bTAtNnYyaDE2VjVINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld0luQXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC4yNSA3LjYtNS41LTMuMThhMS40OSAxLjQ5IDAgMCAwLTEuNSAwTDUuNzUgNy42Yy0uNDYuMjctLjc1Ljc2LS43NSAxLjN2Ni4zNWMwIC41NC4yOSAxLjAzLjc1IDEuM2w1LjUgMy4xOGMuNDYuMjcgMS4wNC4yNyAxLjUgMGw1LjUtMy4xOGMuNDYtLjI3Ljc1LS43Ni43NS0xLjNWOC45YzAtLjU0LS4yOS0xLjAzLS43NS0xLjN6TTcgMTQuOTZ2LTQuNjJsNCAyLjMydjQuNjFsLTQtMi4zMXptNS00LjAzTDggOC42MWw0LTIuMzEgNCAyLjMxLTQgMi4zMnptMSA2LjM0di00LjYxbDQtMi4zMnY0LjYybC00IDIuMzF6TTcgMkgzLjVDMi42NyAyIDIgMi42NyAyIDMuNVY3aDJWNGgzVjJ6bTEwIDBoMy41Yy44MyAwIDEuNS42NyAxLjUgMS41VjdoLTJWNGgtM1Yyek03IDIySDMuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41VjE3aDJ2M2gzdjJ6bTEwIDBoMy41Yy44MyAwIDEuNS0uNjcgMS41LTEuNVYxN2gtMnYzaC0zdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdLYW5iYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxN0g3VjdoMnYxMHptNC01aC0yVjdoMnY1em00IDNoLTJWN2gydjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNGg0di00SDN2NHptMCA1aDR2LTRIM3Y0ek0zIDloNFY1SDN2NHptNSA1aDEzdi00SDh2NHptMCA1aDEzdi00SDh2NHpNOCA1djRoMTNWNUg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3TW9kdWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNjcgNXY2LjVIOS4zM1Y1aDUuMzR6bTEgNi41SDIxVjVoLTUuMzN2Ni41em0tMSA3LjV2LTYuNUg5LjMzVjE5aDUuMzR6bTEtNi41VjE5SDIxdi02LjVoLTUuMzN6bS03LjM0IDBIM1YxOWg1LjMzdi02LjV6bTAtMVY1SDN2Ni41aDUuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdRdWlsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDV2Ni41SDkuMzNWNUgyMXptLTYuMzMgMTR2LTYuNUg5LjMzVjE5aDUuMzR6bTEtNi41VjE5SDIxdi02LjVoLTUuMzN6TTguMzMgMTlWNUgzdjE0aDUuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdTaWRlYmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMjBIMlY0aDE0djE2em0yLTEyaDRWNGgtNHY0em0wIDEyaDR2LTRoLTR2NHptMC02aDR2LTRoLTR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlld1N0cmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTd2LTJjMC0xLjEuOS0yIDItMmgxNGMxLjEgMCAyIC45IDIgMnYyYzAgMS4xLS45IDItMiAySDVjLTEuMSAwLTItLjktMi0yek0zIDd2MmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdUaW1lbGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNEg2di0yaDZ2MnptMy00SDl2LTJoNnYyem0zLTRoLTZWN2g2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdXZWVrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4zMyAyMEg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoMS4zM2MxLjEgMCAyIC45IDIgMnYxMmEyIDIgMCAwIDEtMiAyek0yMiAxOFY2YzAtMS4xLS45LTItMi0yaC0xLjMzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAySDIwYTIgMiAwIDAgMCAyLTJ6bS03LjMzIDBWNmMwLTEuMS0uOS0yLTItMmgtMS4zM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxLjMzYzEuMSAwIDItLjkgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaXNpYmlsaXR5T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN2MyLjc2IDAgNSAyLjI0IDUgNSAwIC42NS0uMTMgMS4yNi0uMzYgMS44M2wyLjkyIDIuOTJjMS41MS0xLjI2IDIuNy0yLjg5IDMuNDMtNC43NS0xLjczLTQuMzktNi03LjUtMTEtNy41LTEuNCAwLTIuNzQuMjUtMy45OC43bDIuMTYgMi4xNkMxMC43NCA3LjEzIDExLjM1IDcgMTIgN3pNMiA0LjI3bDIuMjggMi4yOC40Ni40NkExMS44MDQgMTEuODA0IDAgMCAwIDEgMTJjMS43MyA0LjM5IDYgNy41IDExIDcuNSAxLjU1IDAgMy4wMy0uMyA0LjM4LS44NGwuNDIuNDJMMTkuNzMgMjIgMjEgMjAuNzMgMy4yNyAzIDIgNC4yN3pNNy41MyA5LjhsMS41NSAxLjU1Yy0uMDUuMjEtLjA4LjQzLS4wOC42NSAwIDEuNjYgMS4zNCAzIDMgMyAuMjIgMCAuNDQtLjAzLjY1LS4wOGwxLjU1IDEuNTVjLS42Ny4zMy0xLjQxLjUzLTIuMi41My0yLjc2IDAtNS0yLjI0LTUtNSAwLS43OS4yLTEuNTMuNTMtMi4yem00LjMxLS43OCAzLjE1IDMuMTUuMDItLjE2YzAtMS42Ni0xLjM0LTMtMy0zbC0uMTcuMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpc2liaWxpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0LjVDNyA0LjUgMi43MyA3LjYxIDEgMTJjMS43MyA0LjM5IDYgNy41IDExIDcuNXM5LjI3LTMuMTEgMTEtNy41Yy0xLjczLTQuMzktNi03LjUtMTEtNy41ek0xMiAxN2MtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6bTAtOGMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZvaWNlT3Zlck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuOTkgOS4xOGMwLS4wNi4wMS0uMTIuMDEtLjE4IDAtMi4yMS0xLjc5LTQtNC00LS4wNiAwLS4xMi4wMS0uMTguMDFsNC4xNyA0LjE3em0tNi4xLTMuNTZMNC4yNyAzIDMgNC4yN2wyLjYyIDIuNjJDNS4yMyA3LjUgNSA4LjIyIDUgOWMwIDIuMjEgMS43OSA0IDQgNCAuNzggMCAxLjUtLjIzIDIuMTEtLjYyTDE5LjczIDIxIDIxIDE5LjczbC04LjYyLTguNjItNS40OS01LjQ5ek05IDE1Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00em03Ljc2LTkuNjQtMS42OCAxLjY5Yy44NCAxLjE4Ljg0IDIuNzEgMCAzLjg5bDEuNjggMS42OWMyLjAyLTIuMDIgMi4wMi01LjA3IDAtNy4yN3pNMjAuMDcgMmwtMS42MyAxLjYzYzIuNzcgMy4wMiAyLjc3IDcuNTYgMCAxMC43NEwyMC4wNyAxNmMzLjktMy44OSAzLjkxLTkuOTUgMC0xNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2F0Y2hMYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyem00LjIgMTQuMkwxMSAxM1Y3aDEuNXY1LjJsNC41IDIuNy0uOCAxLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdlYmhvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNWg1Ljg4Yy4yNy0uMzEuNjctLjUgMS4xMi0uNS44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjVjLS40NCAwLS44NC0uMTktMS4xMi0uNUgxMS45QTUgNSAwIDEgMSA2IDExLjF2Mi4wN2MtMS4xNi40MS0yIDEuNTMtMiAyLjgzIDAgMS42NSAxLjM1IDMgMyAzczMtMS4zNSAzLTN2LTF6bTIuNS0xMWMxLjY1IDAgMyAxLjM1IDMgM2gyYzAtMi43Ni0yLjI0LTUtNS01YTUuMDAyIDUuMDAyIDAgMCAwLTMuNDUgOC42MmwtMi4zNSAzLjljLS42OC4xNC0xLjIuNzUtMS4yIDEuNDggMCAuODMuNjcgMS41IDEuNSAxLjVhMS40OTggMS40OTggMCAwIDAgMS40My0xLjk1bDMuMzgtNS42M0EzLjAwMyAzLjAwMyAwIDAgMSA5LjUgN2MwLTEuNjUgMS4zNS0zIDMtM3ptNC41IDljLS42NCAwLTEuMjMuMi0xLjcyLjU0bC0zLjA1LTUuMDdDMTEuNTMgOC4zNSAxMSA3Ljc0IDExIDdjMC0uODMuNjctMS41IDEuNS0xLjVTMTQgNi4xNyAxNCA3YzAgLjE1LS4wMi4yOS0uMDYuNDNsMi4xOSAzLjY1Yy4yOC0uMDUuNTctLjA4Ljg3LS4wOCAyLjc2IDAgNSAyLjI0IDUgNXMtMi4yNCA1LTUgNWE1IDUgMCAwIDEtNC4zMy0yLjVoMi42N2MuNDguMzIgMS4wNS41IDEuNjYuNSAxLjY1IDAgMy0xLjM1IDMtM3MtMS4zNS0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lkdGhGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTQgNmgxdjEySDRWNnptMTYgMTJoLTFWNmgxdjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWR0aE5vcm1hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek00IDZoNHYxMkg0VjZ6bTE2IDEyaC00VjZoNHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lkdGhXaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTQgNmgydjEySDRWNnptMTYgMTJoLTJWNmgydjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWZpUHJvdGVjdGVkU2V0dXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi43MSA1LjI5IDE5IDNoLTh2OGwyLjMtMi4zYzEuOTcgMS40NiAzLjI1IDMuNzggMy4yNSA2LjQyIDAgMS4zMS0uMzIgMi41NC0uODggMy42MyAyLjMzLTEuNTIgMy44OC00LjE0IDMuODgtNy4xMyAwLTIuNTItMS4xMS00Ljc3LTIuODQtNi4zM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy40NiA4Ljg4YzAtMS4zMS4zMi0yLjU0Ljg4LTMuNjNhOC40NzkgOC40NzkgMCAwIDAtMy44OCA3LjEzYzAgMi41MiAxLjEgNC43NyAyLjg0IDYuMzNMNSAyMWg4di04bC0yLjMgMi4zYy0xLjk2LTEuNDYtMy4yNC0zLjc4LTMuMjQtNi40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV29ya0hpc3RvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMWMxLjQ5IDAgMi44Ny40NyA0IDEuMjZWOGMwLTEuMTEtLjg5LTItMi0yaC00VjRjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE5YzAgMS4xMS44OSAyIDIgMmg3LjY4QTYuOTk1IDYuOTk1IDAgMCAxIDE4IDExem0tOC03aDR2MmgtNFY0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTEuNjUgNy4zNUwxNy41IDE4LjJWMTVoMXYyLjc5bDEuODUgMS44NS0uNy43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV29ya09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIzIDIxLjc0LTEuNDYtMS40Nkw3LjIxIDUuOTUgMy4yNSAxLjk5IDEuOTkgMy4yNWwyLjcgMi43aC0uNjRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMmwtLjAxIDExYzAgMS4xMS44OSAyIDIgMmgxNS42NEwyMS43NCAyMyAyMyAyMS43NHpNMjIgNy45NWMuMDUtMS4xMS0uODQtMi0xLjk1LTEuOTVoLTRWMy45NWMwLTEuMTEtLjg5LTItMi0xLjk1aC00Yy0xLjExLS4wNS0yIC44NC0yIDEuOTV2LjMybDEzLjk1IDE0VjcuOTV6TTE0LjA1IDZIMTBWMy45NWg0LjA1VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdvcmtPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE0IDZWNGgtNHYyaDR6TTQgOHYxMWgxNlY4SDR6bTE2LTJjMS4xMSAwIDIgLjg5IDIgMnYxMWMwIDEuMTEtLjg5IDItMiAySDRjLTEuMTEgMC0yLS44OS0yLTJsLjAxLTExYzAtMS4xMS44OC0yIDEuOTktMmg0VjRjMC0xLjExLjg5LTIgMi0yaDRjMS4xMSAwIDIgLjg5IDIgMnYyaDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC00VjRjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE5YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjhjMC0xLjExLS44OS0yLTItMnptLTYgMGgtNFY0aDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV3lzaXd5ZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWEyIDIgMCAwIDAtMi0yem0wIDE2SDVWN2gxNHYxMnptLTItN0g3di0yaDEwdjJ6bS00IDRIN3YtMmg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFlvdXR1YmVTZWFyY2hlZEZvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMDEgMTRoLS44bC0uMjctLjI3YTYuNDUxIDYuNDUxIDAgMCAwIDEuNTctNC4yM2MwLTMuNTktMi45MS02LjUtNi41LTYuNXMtNi41IDMtNi41IDYuNUgybDMuODQgNCA0LjE2LTRINi41MWE0LjUgNC41IDAgMCAxIDkgMCA0LjUwNyA0LjUwNyAwIDAgMS02LjMyIDQuMTJMNy43MSAxNS4xYTYuNDc0IDYuNDc0IDAgMCAwIDcuNTItLjY3bC4yNy4yN3YuNzlsNS4wMSA0Ljk5TDIyIDE5bC00Ljk5LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFpvb21JbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QTYuNDcxIDYuNDcxIDAgMCAwIDE2IDkuNSA2LjUgNi41IDAgMSAwIDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEwaC0ydjJIOXYtMkg3VjloMlY3aDF2MmgydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFpvb21PdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0ek03IDloNXYxSDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZEFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wMSAyMS4wMWMwIDEuMS44OSAxLjk5IDEuOTkgMS45OXMxLjk5LS44OSAxLjk5LTEuOTloLTMuOTh6bTguODctNC4xOVYxMWMwLTMuMjUtMi4yNS01Ljk3LTUuMjktNi42OXYtLjcyQzEzLjU5IDIuNzEgMTIuODggMiAxMiAycy0xLjU5LjcxLTEuNTkgMS41OXYuNzJBNi44NzMgNi44NzMgMCAwIDAgNS4xMiAxMXY1LjgyTDMgMTguOTRWMjBoMTh2LTEuMDZsLTIuMTItMi4xMnpNMTYgMTMuMDFoLTN2M2gtMnYtM0g4VjExaDNWOGgydjNoM3YyLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdXRvRGVsZXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMmgtMy41bC0xLTFoLTVsLTEgMUgxdjJoMTR6TTE2IDljLS43IDAtMS4zNy4xLTIgLjI5VjVIMnYxMmMwIDEuMS45IDIgMiAyaDUuNjhBNi45OTkgNi45OTkgMCAwIDAgMjMgMTZjMC0zLjg3LTMuMTMtNy03LTd6bTAgMTJjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDEySDE1djVsMy42IDIuMS44LTEuMi0yLjktMS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFcnJvck91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE1aDJ2MmgtMnptMC04aDJ2NmgtMnptLjk5LTVDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXJyb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDE1aC0ydi0yaDJ2MnptMC00aC0yVjdoMnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RpZmljYXRpb25JbXBvcnRhbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE2di01YzAtMy4wNy0xLjY0LTUuNjQtNC41LTYuMzJWNGMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41di42OEM3LjYzIDUuMzYgNiA3LjkyIDYgMTF2NWwtMiAydjFoMTZ2LTFsLTItMnptLTUgMGgtMnYtMmgydjJ6bTAtNGgtMlY4aDJ2NHptLTEgMTBjMS4xIDAgMi0uOSAyLTJoLTRhMiAyIDAgMCAwIDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2FybmluZ0FtYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNS45OSAxOS41MyAxOUg0LjQ3TDEyIDUuOTlNMTIgMiAxIDIxaDIyTDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDE2aC0ydjJoMnpNMTMgMTBoLTJ2NWgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYXJuaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxMEsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEwLjVoMS41djNIMTB6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek03LjUgMTVINnYtNC41SDQuNVY5aDN2NnptNS41LTFjMCAuNTUtLjQ1IDEtMSAxSDkuNWMtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xSDEyYy41NSAwIDEgLjQ1IDEgMXY0em02LjUgMWgtMS43NUwxNiAxMi43NVYxNWgtMS41VjlIMTZ2Mi4yNUwxNy43NSA5aDEuNzVsLTIuMjUgMyAyLjI1IDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDFrUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTkgMTVINy41di00LjVINlY5aDN2NnptNC43NSAwTDEyIDEyLjc1VjE1aC0xLjVWOUgxMnYyLjI1TDEzLjc1IDloMS43NWwtMi4yNSAzIDIuMjUgM2gtMS43NXptNS43NS0yLjVIMThWMTRoLTF2LTEuNWgtMS41di0xSDE3VjEwaDF2MS41aDEuNXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxSyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04LjUgMTJIOXYtNC41SDcuNVY5aDN2NnptNyAwaC0xLjc1TDE0IDEyLjc1VjE1aC0xLjVWOUgxNHYyLjI1TDE1Ljc1IDloMS43NWwtMi4yNSAzIDIuMjUgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMmtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTkuNSA4LjVjMCAuNTUtLjQ1IDEtMSAxaC0ydjFoM1YxNUg1di0yLjVjMC0uNTUuNDUtMSAxLTFoMnYtMUg1VjloMy41Yy41NSAwIDEgLjQ1IDEgMXYxLjV6bTQuNzUgMy41LTEuNzUtMi4yNVYxNUgxMVY5aDEuNXYyLjI1TDE0LjI1IDlIMTZsLTIuMjUgM0wxNiAxNWgtMS43NXpNMjAgMTIuNWgtMS41VjE0aC0xdi0xLjVIMTZ2LTFoMS41VjEwaDF2MS41SDIwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDJLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTkgOS41SDh2MWgzVjE1SDYuNXYtMi41YzAtLjU1LjQ1LTEgMS0xaDJ2LTFoLTNWOUgxMGMuNTUgMCAxIC40NSAxIDF2MS41YzAgLjU1LS40NSAxLTEgMXptOCAyLjVoLTEuNzVsLTEuNzUtMi4yNVYxNUgxM1Y5aDEuNXYyLjI1TDE2LjI1IDlIMThsLTIuMjUgM0wxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kM2tQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOS41IDE0YzAgLjU1LS40NSAxLTEgMUg1di0xLjVoM3YtMUg2di0xaDJ2LTFINVY5aDMuNWMuNTUgMCAxIC40NSAxIDF2NHptNi41IDFoLTEuNzVsLTEuNzUtMi4yNVYxNUgxMVY5aDEuNXYyLjI1TDE0LjI1IDlIMTZsLTIuMjUgM0wxNiAxNXptNC0yLjVoLTEuNVYxNGgtMXYtMS41SDE2di0xaDEuNVYxMGgxdjEuNUgyMHYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQzSyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04IDExYzAgLjU1LS40NSAxLTEgMUg2LjV2LTEuNWgzdi0xaC0ydi0xaDJ2LTFoLTNWOUgxMGMuNTUgMCAxIC40NSAxIDF2NHptNyAxaC0xLjc1bC0xLjc1LTIuMjVWMTVIMTNWOWgxLjV2Mi4yNUwxNi4yNSA5SDE4bC0yLjI1IDNMMTggMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDRrUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04LjUgMTAuNWgtMVYxNUg4di0xLjVINVY5aDEuNXYzSDhWOWgxLjV2M2gxdjEuNXpNMTYgMTVoLTEuNzVsLTEuNzUtMi4yNVYxNUgxMVY5aDEuNXYyLjI1TDE0LjI1IDlIMTZsLTIuMjUgM0wxNiAxNXptNC0yLjVoLTEuNVYxNGgtMXYtMS41SDE2di0xaDEuNVYxMGgxdjEuNUgyMHYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQ0SyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDEwLjVoLTFWMTVIOS41di0xLjVoLTNWOUg4djNoMS41VjlIMTF2M2gxdjEuNXptNiAxLjVoLTEuNzVsLTEuNzUtMi4yNVYxNUgxM1Y5aDEuNXYyLjI1TDE2LjI1IDlIMThsLTIuMjUgM0wxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNUcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxM2gydjJoLTVWOWg3YzAtMS4xLS45LTItMi0yaC01Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoNWMxLjEgMCAyLS45IDItMnYtNGgtNHYyek0zIDEzaDV2MkgzdjJoNWMxLjEgMCAyLS45IDItMnYtMmMwLTEuMS0uOS0yLTItMkg1VjloNVY3SDN2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNWtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTkuNSA3LjVoLTN2MWgyYy41NSAwIDEgLjQ1IDEgMVYxNGMwIC41NS0uNDUgMS0xIDFINXYtMS41aDN2LTFINVY5aDQuNXYxLjV6TTE2IDE1aC0xLjc1bC0xLjc1LTIuMjVWMTVIMTFWOWgxLjV2Mi4yNUwxNC4yNSA5SDE2bC0yLjI1IDNMMTYgMTV6bTQtMi41aC0xLjVWMTRoLTF2LTEuNUgxNnYtMWgxLjVWMTBoMXYxLjVIMjB2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNUsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOCA3LjVIOHYxaDJjLjU1IDAgMSAuNDUgMSAxVjE0YzAgLjU1LS40NSAxLTEgMUg2LjV2LTEuNWgzdi0xaC0zVjlIMTF2MS41em03IDQuNWgtMS43NWwtMS43NS0yLjI1VjE1SDEzVjloMS41djIuMjVMMTYuMjUgOUgxOGwtMi4yNSAzTDE4IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQ2a1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAxMi41SDhWMTRINi41ek0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTkuNSA3LjVoLTN2MWgyYy41NSAwIDEgLjQ1IDEgMVYxNGMwIC41NS0uNDUgMS0xIDFINmMtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDMuNXYxLjV6TTE2IDE1aC0xLjc1bC0xLjc1LTIuMjVWMTVIMTFWOWgxLjV2Mi4yNUwxNC4yNSA5SDE2bC0yLjI1IDNMMTYgMTV6bTQtMi41aC0xLjVWMTRoLTF2LTEuNUgxNnYtMWgxLjVWMTBoMXYxLjVIMjB2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNksgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTIuNWgxLjVWMTRIOHpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04IDcuNUg4djFoMmMuNTUgMCAxIC40NSAxIDFWMTRjMCAuNTUtLjQ1IDEtMSAxSDcuNWMtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xSDExdjEuNXptNyA0LjVoLTEuNzVsLTEuNzUtMi4yNVYxNUgxM1Y5aDEuNXYyLjI1TDE2LjI1IDlIMThsLTIuMjUgM0wxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kN2tQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOCAxNUg2LjI1bDEuMzgtNC41SDVWOWgzLjVjLjY3IDAgMS4xNS42NS45NiAxLjI5TDggMTV6bTggMGgtMS43NWwtMS43NS0yLjI1VjE1SDExVjloMS41djIuMjVMMTQuMjUgOUgxNmwtMi4yNSAzTDE2IDE1em00LTIuNWgtMS41VjE0aC0xdi0xLjVIMTZ2LTFoMS41VjEwaDF2MS41SDIwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDdLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOS41IDE1SDcuNzVsMS4zOC00LjVINi41VjlIMTBjLjY3IDAgMS4xNS42NS45NiAxLjI5TDkuNSAxNXptOC41IDBoLTEuNzVsLTEuNzUtMi4yNVYxNUgxM1Y5aDEuNXYyLjI1TDE2LjI1IDlIMThsLTIuMjUgM0wxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kOGtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgMTIuNUg4VjE0SDYuNXptMC0yLjVIOHYxLjVINi41ek0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOS41IDE0YzAgLjU1LS40NSAxLTEgMUg2Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoMi41Yy41NSAwIDEgLjQ1IDEgMXY0em02LjUgMWgtMS43NWwtMS43NS0yLjI1VjE1SDExVjloMS41djIuMjVMMTQuMjUgOUgxNmwtMi4yNSAzTDE2IDE1em00LTIuNWgtMS41VjE0aC0xdi0xLjVIMTZ2LTFoMS41VjEwaDF2MS41SDIwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDhLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDEyLjVoMS41VjE0SDh6TTggMTBoMS41djEuNUg4em0xMS03SDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTggMTFjMCAuNTUtLjQ1IDEtMSAxSDcuNWMtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xSDEwYy41NSAwIDEgLjQ1IDEgMXY0em03IDFoLTEuNzVsLTEuNzUtMi4yNVYxNUgxM1Y5aDEuNXYyLjI1TDE2LjI1IDlIMThsLTIuMjUgM0wxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kOWtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgMTBIOHYxLjVINi41ek0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOS41IDE0YzAgLjU1LS40NSAxLTEgMUg1di0xLjVoM3YtMUg2Yy0uNTUgMC0xLS40NS0xLTFWMTBjMC0uNTUuNDUtMSAxLTFoMi41Yy41NSAwIDEgLjQ1IDEgMXY0em02LjUgMWgtMS43NWwtMS43NS0yLjI1VjE1SDExVjloMS41djIuMjVMMTQuMjUgOUgxNmwtMi4yNSAzTDE2IDE1em00LTIuNWgtMS41VjE0aC0xdi0xLjVIMTZ2LTFoMS41VjEwaDF2MS41SDIwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDlLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDEwaDEuNXYxLjVIOHptMTEtN0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04IDExYzAgLjU1LS40NSAxLTEgMUg2LjV2LTEuNWgzdi0xaC0yYy0uNTUgMC0xLS40NS0xLTFWMTBjMC0uNTUuNDUtMSAxLTFIMTBjLjU1IDAgMSAuNDUgMSAxdjR6bTcgMWgtMS43NWwtMS43NS0yLjI1VjE1SDEzVjloMS41djIuMjVMMTYuMjUgOUgxOGwtMi4yNSAzTDE4IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRUb1F1ZXVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMTEgMC0yIC44OS0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg1djJoOHYtMmg1YzEuMSAwIDEuOTktLjkgMS45OS0yTDIzIDVhMiAyIDAgMCAwLTItMnptMCAxNEgzVjVoMTh2MTJ6bS01LTd2MmgtM3YzaC0ydi0zSDh2LTJoM1Y3aDJ2M2gzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBaXJwbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAyMmgxMmwtNi02elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoNHYtMkgzVjVoMTh2MTJoLTR2Mmg0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFsYnVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxNC41Yy0yLjQ5IDAtNC41LTIuMDEtNC41LTQuNVM5LjUxIDcuNSAxMiA3LjVzNC41IDIuMDEgNC41IDQuNS0yLjAxIDQuNS00LjUgNC41em0wLTUuNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnRUcmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEzaC04di0yaDh2MnptMC02aC04djJoOFY3em0tOCAxMGg4di0yaC04djJ6bS0yLTh2NmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJoNmMxLjEgMCAyIC45IDIgMnptLTEuNSA2LTIuMjUtMy0xLjc1IDIuMjYtMS4yNS0xLjUxTDMuNSAxNWg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdWRpb0ZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTIgMTFoLTN2My43NWMwIDEuMjQtMS4wMSAyLjI1LTIuMjUgMi4yNVM4LjUgMTcuOTkgOC41IDE2Ljc1czEuMDEtMi4yNSAyLjI1LTIuMjVjLjQ2IDAgLjg5LjE0IDEuMjUuMzhWMTFoNHYyem0tMy00VjMuNUwxOC41IDlIMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF2VGltZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxN2MwIC41NS40NSAxIDEgMXMxLS40NSAxLTEtLjQ1LTEtMS0xLTEgLjQ1LTEgMXptMC0xNHY0aDJWNS4wOGMzLjM5LjQ5IDYgMy4zOSA2IDYuOTIgMCAzLjg3LTMuMTMgNy03IDdzLTctMy4xMy03LTdjMC0xLjY4LjU5LTMuMjIgMS41OC00LjQyTDEyIDEzbDEuNDEtMS40MS02LjgtNi44di4wMkM0LjQyIDYuNDUgMyA5LjA1IDMgMTJjMCA0Ljk3IDQuMDIgOSA5IDlhOSA5IDAgMCAwIDAtMThoLTF6bTcgOWMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMSAuNDUgMSAxIDEgMS0uNDUgMS0xek02IDEyYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMS0uNDUtMS0xLTEtMSAuNDUtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmFuZGluZ1dhdGVybWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTl2LTZoOXY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYWxsVG9BY3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDN2LTNoMTh2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xvc2VkQ2FwdGlvbkRpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi44MyA0SDE5YzEuMSAwIDIgLjkgMiAydjEyYzAgLjA1LS4wMS4xLS4wMi4xNmwtMy4zOC0zLjM4Yy4yNC0uMTkuNC0uNDYuNC0uNzh2LTFoLTEuNXYuNWgtLjE3bC0xLjgzLTEuODNWMTAuNWgydi41SDE4di0xYzAtLjU1LS40NS0xLTEtMWgtM2MtLjU1IDAtMSAuNDUtMSAxdi4xN0w2LjgzIDR6bTEyLjk1IDE4LjYxTDE3LjE3IDIwSDVhMiAyIDAgMCAxLTItMlY2YzAtLjA1LjAyLS4xLjAyLS4xNUwxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6TTExIDEzLjgzbC0uODMtLjgzSDkuNXYuNWgtMnYtM2guMTdMNi40IDkuMjJjLS4yNC4xOS0uNC40Ni0uNC43OHY0YzAgLjU1LjQ1IDEgMSAxaDNjLjU1IDAgMS0uNDUgMS0xdi0uMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3NlZENhcHRpb25PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjUgNS41djEzaC0xNXYtMTNoMTV6TTE5IDRINWEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTggN0g5LjV2LS41aC0ydjNoMlYxM0gxMXYxYzAgLjU1LS40NSAxLTEgMUg3Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MXptNyAwaC0xLjV2LS41aC0ydjNoMlYxM0gxOHYxYzAgLjU1LS40NSAxLTEgMWgtM2MtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDNjLjU1IDAgMSAuNDUgMSAxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3NlZENhcHRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bS04IDdIOS41di0uNWgtMnYzaDJWMTNIMTF2MWMwIC41NS0uNDUgMS0xIDFIN2MtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDNjLjU1IDAgMSAuNDUgMSAxdjF6bTcgMGgtMS41di0uNWgtMnYzaDJWMTNIMTh2MWMwIC41NS0uNDUgMS0xIDFoLTNjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb250cm9sQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNTQgNS41NCAxMy43NyA3LjMgMTIgNS41NCAxMC4yMyA3LjMgOC40NiA1LjU0IDEyIDJ6bTIuOTIgMTAtMS43Ni0xLjc3TDE4LjQ2IDEybC0xLjc2LTEuNzcgMS43Ni0xLjc3TDIyIDEyem0tMTAgMi45MiAxLjc3LTEuNzZMMTIgMTguNDZsMS43Ny0xLjc2IDEuNzcgMS43NkwxMiAyMnptLTIuOTItMTAgMS43NiAxLjc3TDUuNTQgMTJsMS43NiAxLjc3LTEuNzYgMS43N0wyIDEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXF1YWxpemVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMjBoNFY0aC00djE2em0tNiAwaDR2LThINHY4ek0xNiA5djExaDRWOWgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwbGljaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQgNmgtNHYyaDR2MmgtNHYyaDR2Mkg5VjdoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYXN0Rm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTQgMTggOC41LTZMNCA2djEyem05LTEydjEybDguNS02TDEzIDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhc3RSZXdpbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxOFY2bC04LjUgNiA4LjUgNnptLjUtNiA4LjUgNlY2bC04LjUgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmVhdHVyZWRQbGF5TGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS05IDhIM1Y5aDl2MnptMC00SDNWNWg5djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZlYXR1cmVkVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOSA5SDNWNWg5djd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpYmVyRHZyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNSAxMC41aDJ2MWgtMnYtMXptLTEzIDBoMnYzaC0ydi0zek0yMSAzSDNjLTEuMTEgMC0yIC44OS0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxOGEyIDIgMCAwIDAgMi0yVjVjMC0xLjExLS44OS0yLTItMnpNOCAxMy41YzAgLjg1LS42NSAxLjUtMS41IDEuNUgzVjloMy41Yy44NSAwIDEuNS42NSAxLjUgMS41djN6bTQuNjIgMS41aC0xLjVMOS4zNyA5aDEuNWwxIDMuNDMgMS0zLjQzaDEuNWwtMS43NSA2ek0yMSAxMS41YzAgLjYtLjQgMS4xNS0uOSAxLjRMMjEgMTVoLTEuNWwtLjg1LTJIMTcuNXYySDE2VjloMy41Yy44NSAwIDEuNS42NSAxLjUgMS41djF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpYmVyTWFudWFsUmVjb3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiOFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWJlck5ldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmMwLTEuMTEtLjg5LTItMi0yek04LjUgMTVINy4zbC0yLjU1LTMuNVYxNUgzLjVWOWgxLjI1bDIuNSAzLjVWOUg4LjV2NnptNS00Ljc0SDExdjEuMTJoMi41djEuMjZIMTF2MS4xMWgyLjVWMTVoLTRWOWg0djEuMjZ6bTcgMy43NGMwIC41NS0uNDUgMS0xIDFoLTRjLS41NSAwLTEtLjQ1LTEtMVY5aDEuMjV2NC41MWgxLjEzVjkuOTloMS4yNXYzLjUxaDEuMTJWOWgxLjI1djV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpYmVyUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41IDEwLjVoMnYxaC0yek0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnpNOSAxMS41YzAgLjg1LS42NSAxLjUtMS41IDEuNWgtMnYySDRWOWgzLjVjLjg1IDAgMS41LjY1IDEuNSAxLjV2MXptMy41IDMuNUgxMVY5aDEuNXY2em03LjUgMGgtMS4ybC0yLjU1LTMuNVYxNUgxNVY5aDEuMjVsMi41IDMuNVY5SDIwdjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpYmVyU21hcnRSZWNvcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDI0SDBWMGgyNHYyNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjhcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNC4yNnYyLjA5YTUuOTkgNS45OSAwIDAgMSAwIDExLjN2Mi4wOWMzLjQ1LS44OSA2LTQuMDEgNi03Ljc0cy0yLjU1LTYuODUtNi03Ljc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3J3YXJkMTAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MwIDMuMzEtMi42OSA2LTYgNnMtNi0yLjY5LTYtNiAyLjY5LTYgNi02djRsNS01LTUtNXY0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LThoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjg2IDE1Ljk0di00LjI3aC0uMDlMOSAxMi4zdi42OWwxLjAxLS4zMXYzLjI2ek0xMi4yNSAxMy40NHYuNzRjMCAxLjkgMS4zMSAxLjgyIDEuNDQgMS44Mi4xNCAwIDEuNDQuMDkgMS40NC0xLjgydi0uNzRjMC0xLjktMS4zMS0xLjgyLTEuNDQtMS44Mi0uMTQgMC0xLjQ0LS4wOS0xLjQ0IDEuODJ6bTIuMDQtLjEydi45N2MwIC43Ny0uMjEgMS4wMy0uNTkgMS4wM3MtLjYtLjI2LS42LTEuMDN2LS45N2MwLS43NS4yMi0xLjAxLjU5LTEuMDEuMzgtLjAxLjYuMjYuNiAxLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3J3YXJkMzAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MwIDMuMzEtMi42OSA2LTYgNnMtNi0yLjY5LTYtNiAyLjY5LTYgNi02djRsNS01LTUtNXY0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LThoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjA2IDE1LjM4Yy0uMjkgMC0uNjItLjE3LS42Mi0uNTRoLS44NWMwIC45Ny45IDEuMjMgMS40NSAxLjIzLjg3IDAgMS41MS0uNDYgMS41MS0xLjI1IDAtLjY2LS40NS0uOS0uNzEtMSAuMTEtLjA1LjY1LS4zMi42NS0uOTIgMC0uMjEtLjA1LTEuMjItMS40NC0xLjIyLS42MiAwLTEuNC4zNS0xLjQgMS4xNmguODVjMC0uMzQuMzEtLjQ4LjU3LS40OC41OSAwIC41OC41LjU4LjU0IDAgLjUyLS40MS41OS0uNjMuNTloLS40NnYuNjZoLjQ1Yy42NSAwIC43LjQyLjcuNjQgMCAuMzItLjIxLjU5LS42NS41OXpNMTMuODUgMTEuNjhjLS4xNCAwLTEuNDQtLjA4LTEuNDQgMS44MnYuNzRjMCAxLjkgMS4zMSAxLjgyIDEuNDQgMS44Mi4xNCAwIDEuNDQuMDkgMS40NC0xLjgydi0uNzRjLjAxLTEuOTEtMS4zLTEuODItMS40NC0xLjgyem0uNiAyLjY3YzAgLjc3LS4yMSAxLjAzLS41OSAxLjAzcy0uNi0uMjYtLjYtMS4wM3YtLjk3YzAtLjc1LjIyLTEuMDEuNTktMS4wMS4zOCAwIC42LjI2LjYgMS4wMXYuOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcndhcmQ1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTYgMi42OS02IDYtNnY0bDUtNS01LTV2NGMtNC40MiAwLTggMy41OC04IDhzMy41OCA4IDggOCA4LTMuNTggOC04aC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4wMyAxNS4zOGMtLjQ0IDAtLjU4LS4zMS0uNi0uNTZoLS44NGMuMDMuODUuNzkgMS4yNSAxLjQ0IDEuMjUuOTMgMCAxLjQ0LS42MyAxLjQ0LTEuNDMgMC0xLjMzLS45Ny0xLjQ0LTEuMy0xLjQ0LS4yIDAtLjQzLjA1LS42NC4xNmwuMTEtLjkyaDEuN3YtLjcxaC0yLjM5bC0uMjUgMi4xNy42Ny4xN2MuMTMtLjEzLjI4LS4yMy41Ny0uMjMuNCAwIC42OS4yMy42OS43NS0uMDEuMDUuMDIuNzktLjYuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdhbWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgNy41VjJIOXY1LjVsMyAzIDMtM3pNNy41IDlIMnY2aDUuNWwzLTMtMy0zek05IDE2LjVWMjJoNnYtNS41bC0zLTMtMyAzek0xNi41IDlsLTMgMyAzIDNIMjJWOWgtNS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTggMTJIOS41di0yaC0ydjJINlY5aDEuNXYyLjVoMlY5SDExdjZ6bTItNmg0Yy41NSAwIDEgLjQ1IDEgMXY0YzAgLjU1LS40NSAxLTEgMWgtNFY5em0xLjUgNC41aDJ2LTNoLTJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGVhcmluZ0Rpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4wMyAzLjJDNy4xNSAyLjQ0IDguNTEgMiAxMCAyYzMuOTMgMCA3IDMuMDcgNyA3IDAgMS4yNi0uMzggMi42NS0xLjA3IDMuOS0uMDIuMDQtLjA1LjA4LS4wOC4xM2wtMS40OC0xLjQ4Yy40LS44Ni42My0xLjc1LjYzLTIuNTUgMC0yLjgtMi4yLTUtNS01LS45MiAwLTEuNzYuMjYtMi41LjY3TDYuMDMgMy4yem0xMS4xOCAxMS4xOCAxLjQzIDEuNDNDMjAuMTEgMTMuOTMgMjEgMTEuNTcgMjEgOWMwLTMuMDQtMS4yMy01Ljc5LTMuMjItNy43OGwtMS40MiAxLjQyQTguOTM3IDguOTM3IDAgMCAxIDE5IDljMCAyLjAyLS42NyAzLjg4LTEuNzkgNS4zOHpNMTAgNi41Yy0uMjEgMC0uNC4wMy0uNTkuMDhsMy4wMSAzLjAxYy4wNS0uMTkuMDgtLjM4LjA4LS41OUEyLjUgMi41IDAgMCAwIDEwIDYuNXptMTEuMTkgMTQuNjlMMi44MSAyLjgxIDEuMzkgNC4yMmwyLjEzIDIuMTNDMy4xOSA3LjE2IDMgOC4wNSAzIDloMmMwLS4zNi4wNS0uNzEuMTItMS4wNWw2LjYxIDYuNjFjLS44OC42OC0xLjc4IDEuNDEtMi4yNyAyLjktLjUgMS41LTEgMi4wMS0xLjcxIDIuMzgtLjE5LjEtLjQ2LjE2LS43NS4xNi0xLjEgMC0yLS45LTItMkgzYTMuOTk5IDMuOTk5IDAgMCAwIDUuNjQgMy42NWMxLjM2LS43MSAyLjEzLTEuNzMgMi43My0zLjU1LjMyLS45OC45LTEuNDMgMS43MS0yLjA1LjAzLS4wMi4wNS0uMDQuMDgtLjA2bDYuNjIgNi42MiAxLjQxLTEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhlYXJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAyMGMtLjI5IDAtLjU2LS4wNi0uNzYtLjE1LS43MS0uMzctMS4yMS0uODgtMS43MS0yLjM4LS41MS0xLjU2LTEuNDctMi4yOS0yLjM5LTMtLjc5LS42MS0xLjYxLTEuMjQtMi4zMi0yLjUzQzkuMjkgMTAuOTggOSA5LjkzIDkgOWMwLTIuOCAyLjItNSA1LTVzNSAyLjIgNSA1aDJjMC0zLjkzLTMuMDctNy03LTdTNyA1LjA3IDcgOWMwIDEuMjYuMzggMi42NSAxLjA3IDMuOS45MSAxLjY1IDEuOTggMi40OCAyLjg1IDMuMTUuODEuNjIgMS4zOSAxLjA3IDEuNzEgMi4wNS42IDEuODIgMS4zNyAyLjg0IDIuNzMgMy41NUEzLjk5OSAzLjk5OSAwIDAgMCAyMSAxOGgtMmMwIDEuMS0uOSAyLTIgMnpNNy42NCAyLjY0IDYuMjIgMS4yMkM0LjIzIDMuMjEgMyA1Ljk2IDMgOXMxLjIzIDUuNzkgMy4yMiA3Ljc4bDEuNDEtMS40MUM2LjAxIDEzLjc0IDUgMTEuNDkgNSA5czEuMDEtNC43NCAyLjY0LTYuMzZ6TTExLjUgOWEyLjUgMi41IDAgMCAwIDUgMCAyLjUgMi41IDAgMCAwLTUgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGlnaFF1YWxpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bS04IDExSDkuNXYtMmgtMnYySDZWOWgxLjV2Mi41aDJWOUgxMXY2em03LTFjMCAuNTUtLjQ1IDEtMSAxaC0uNzV2MS41aC0xLjVWMTVIMTRjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXY0em0tMy41LS41aDJ2LTNoLTJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW50ZXJwcmV0ZXJNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSAxNi41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjV2LTIuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVYxNWMwIC44My0uNjcgMS41LTEuNSAxLjV6TTIwIDIwaDF2LTEuNTRjMS42OS0uMjQgMy0xLjcgMy0zLjQ2aC0xYTIuNSAyLjUgMCAwIDEtNSAwaC0xYzAgMS43NiAxLjMxIDMuMjIgMyAzLjQ2VjIwek05IDEyYy0yLjIxIDAtNC0xLjc5LTQtNGEzLjk5OSAzLjk5OSAwIDAgMSA1LjM0LTMuNzdBNS45MzggNS45MzggMCAwIDAgOSA4YzAgMS40My41IDIuNzQgMS4zNCAzLjc3LS40Mi4xNS0uODcuMjMtMS4zNC4yM3ptLTEuODkgMS4xM0E0Ljk2NSA0Ljk2NSAwIDAgMCA1IDE3LjIyVjIwSDF2LTIuNzhjMC0xLjEyLjYxLTIuMTUgMS42MS0yLjY2IDEuMjQtLjY0IDIuNzYtMS4xOSA0LjUtMS40M3pNMTEgOGMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0LTEuNzkgNC00IDQtNC0xLjc5LTQtNHptNy4zMiAxMmE0Ljk5NyA0Ljk5NyAwIDAgMS0yLjgyLTQuNWMwLS44OS4yMy0xLjczLjY0LTIuNDUtLjM3LS4wMy0uNzUtLjA1LTEuMTQtLjA1LTIuNTMgMC00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA3IDE3LjIyVjIwaDExLjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaWJyYXJ5QWRkQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTcuNTMgMTJMOSAxMC41bDEuNC0xLjQxIDIuMDcgMi4wOEwxNy42IDYgMTkgNy40MSAxMi40NyAxNHpNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpYnJhcnlBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTYtNEg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS0xIDloLTR2NGgtMnYtNEg5VjloNFY1aDJ2NGg0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpYnJhcnlCb29rcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTEgOUg5VjloMTB2MnptLTQgNEg5di0yaDZ2MnptNC04SDlWNWgxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaWJyYXJ5TXVzaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTIgNWgtM3Y1LjVhMi41IDIuNSAwIDAgMS01IDAgMi41IDIuNSAwIDAgMSAyLjUtMi41Yy41NyAwIDEuMDguMTkgMS41LjUxVjVoNHYyek00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9vcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRWMUw4IDVsNCA0VjZjMy4zMSAwIDYgMi42OSA2IDYgMCAxLjAxLS4yNSAxLjk3LS43IDIuOGwxLjQ2IDEuNDZBNy45MyA3LjkzIDAgMCAwIDIwIDEyYzAtNC40Mi0zLjU4LTgtOC04em0wIDE0Yy0zLjMxIDAtNi0yLjY5LTYtNiAwLTEuMDEuMjUtMS45Ny43LTIuOEw1LjI0IDcuNzRBNy45MyA3LjkzIDAgMCAwIDQgMTJjMCA0LjQyIDMuNTggOCA4IDh2M2w0LTQtNC00djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEx5cmljcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDljMC0yLjA0IDEuMjQtMy43OSAzLTQuNTdWNGMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDljMS4xIDAgMi0uOSAyLTJ2LTIuNDJjLTEuNzYtLjc4LTMtMi41My0zLTQuNTh6bS00IDVINnYtMmg0djJ6bTMtM0g2VjloN3Yyem0wLTNINlY2aDd2MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNi4xOGMtLjMxLS4xMS0uNjUtLjE4LTEtLjE4LTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtM1YzaDJWMWgtNHY1LjE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNaWNOb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTRjMS42NiAwIDIuOTktMS4zNCAyLjk5LTNMMTUgNWMwLTEuNjYtMS4zNC0zLTMtM1M5IDMuMzQgOSA1djZjMCAxLjY2IDEuMzQgMyAzIDN6bS0xLjItOS4xYzAtLjY2LjU0LTEuMiAxLjItMS4yLjY2IDAgMS4yLjU0IDEuMiAxLjJsLS4wMSA2LjJjMCAuNjYtLjUzIDEuMi0xLjE5IDEuMi0uNjYgMC0xLjItLjU0LTEuMi0xLjJWNC45em02LjUgNi4xYzAgMy0yLjU0IDUuMS01LjMgNS4xUzYuNyAxNCA2LjcgMTFINWMwIDMuNDEgMi43MiA2LjIzIDYgNi43MlYyMWgydi0zLjI4YzMuMjgtLjQ4IDYtMy4zIDYtNi43MmgtMS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNaWNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTFoLTEuN2MwIC43NC0uMTYgMS40My0uNDMgMi4wNWwxLjIzIDEuMjNjLjU2LS45OC45LTIuMDkuOS0zLjI4em0tNC4wMi4xN2MwLS4wNi4wMi0uMTEuMDItLjE3VjVjMC0xLjY2LTEuMzQtMy0zLTNTOSAzLjM0IDkgNXYuMThsNS45OCA1Ljk5ek00LjI3IDMgMyA0LjI3bDYuMDEgNi4wMVYxMWMwIDEuNjYgMS4zMyAzIDIuOTkgMyAuMjIgMCAuNDQtLjAzLjY1LS4wOGwxLjY2IDEuNjZjLS43MS4zMy0xLjUuNTItMi4zMS41Mi0yLjc2IDAtNS4zLTIuMS01LjMtNS4xSDVjMCAzLjQxIDIuNzIgNi4yMyA2IDYuNzJWMjFoMnYtMy4yOGMuOTEtLjEzIDEuNzctLjQ1IDIuNTQtLjlMMTkuNzMgMjEgMjEgMTkuNzMgNC4yNyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNGMxLjY2IDAgMi45OS0xLjM0IDIuOTktM0wxNSA1YzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDV2NmMwIDEuNjYgMS4zNCAzIDMgM3ptNS4zLTNjMCAzLTIuNTQgNS4xLTUuMyA1LjFTNi43IDE0IDYuNyAxMUg1YzAgMy40MSAyLjcyIDYuMjMgNiA2LjcyVjIxaDJ2LTMuMjhjMy4yOC0uNDggNi0zLjMgNi02LjcyaC0xLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1pc3NlZFZpZGVvQ2FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTAuNVY3YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xdi0zLjVsNCA0di0xMWwtNCA0ek0xMCAxNWwtMy44OS0zLjg5djIuNTVINVY5LjIyaDQuNDR2MS4xMUg2Ljg5bDMuMTEgMy4xIDQuMjItNC4yMi43OC43OS01IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vdmllRWRpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTBoMThWNmMwLTEuMS0uOS0yLTItMmgtM2wyIDRoLTNsLTItNGgtMmwyIDRoLTNMOSA0SDdsMiA0SDZMNCA0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmg4di0ySDR2LTh6TTE0IDE4Ljg4VjIxaDIuMTJsNS4xNy01LjE3LTIuMTItMi4xMnpNMjIuNzEgMTNsLS43MS0uNzFhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0uNzEuNzFMMjIgMTUuMTJsLjcxLS43MWEuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vdmllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggNCAyIDRoLTNsLTItNGgtMmwyIDRoLTNsLTItNEg4bDIgNEg3TDUgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNdXNpY1ZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkgzVjVoMTh2MTR6TTggMTVjMC0xLjY2IDEuMzQtMyAzLTMgLjM1IDAgLjY5LjA3IDEgLjE4VjZoNXYyaC0zdjcuMDNBMy4wMDMgMy4wMDMgMCAwIDEgMTEgMThjLTEuNjYgMC0zLTEuMzQtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZXdSZWxlYXNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIzIDEyLTIuNDQtMi43OC4zNC0zLjY4LTMuNjEtLjgyLTEuODktMy4xOEwxMiAzIDguNiAxLjU0IDYuNzEgNC43MmwtMy42MS44MS4zNCAzLjY4TDEgMTJsMi40NCAyLjc4LS4zNCAzLjY5IDMuNjEuODIgMS44OSAzLjE4TDEyIDIxbDMuNCAxLjQ2IDEuODktMy4xOCAzLjYxLS44Mi0uMzQtMy42OEwyMyAxMnptLTEwIDVoLTJ2LTJoMnYyem0wLTRoLTJWN2gydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vdEludGVyZXN0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOCAwLTEuODUuNjMtMy41NSAxLjY5LTQuOUwxNi45IDE4LjMxQTcuOTAyIDcuOTAyIDAgMCAxIDEyIDIwem02LjMxLTMuMUw3LjEgNS42OUE3LjkwMiA3LjkwMiAwIDAgMSAxMiA0YzQuNDIgMCA4IDMuNTggOCA4IDAgMS44NS0uNjMgMy41NS0xLjY5IDQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgMTAtNi02SDRjLTEuMSAwLTIgLjktMiAydjEyLjAxYzAgMS4xLjkgMS45OSAyIDEuOTlsMTYtLjAxYzEuMSAwIDItLjg5IDItMS45OXYtOHptLTctNC41IDUuNSA1LjVIMTVWNS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYXVzZUNpcmNsZUZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0xIDE0SDlWOGgydjh6bTQgMGgtMlY4aDJ2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGF1c2VDaXJjbGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNmgyVjhIOXY4em0zLTE0QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMS00aDJWOGgtMnY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYXVzZUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0xIDE0SDlWOGgydjh6bTQgMGgtMlY4aDJ2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGF1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE5aDRWNUg2djE0em04LTE0djE0aDRWNWgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxheUFycm93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA1djE0bDExLTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBsYXlDaXJjbGVGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMiAxNC41di05bDYgNC41LTYgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQbGF5Q2lyY2xlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDE2LjUgNi00LjUtNi00LjV2OXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBsYXlDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek05LjUgMTYuNXYtOWw3IDQuNS03IDQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxheURpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwem0xMS43NSAxMS40Ny0uMTEtLjExLjExLjExelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDUuMTlWNWwxMSA3LTIuNTUgMS42M0w4IDUuMTl6bTEyIDE0LjU0LTUuMTEtNS4xMUw4IDcuNzMgNC4yNyA0IDMgNS4yN2w1IDVWMTlsNS4zMy0zLjQgNS40IDUuNEwyMCAxOS43M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxheWxpc3RBZGRDaGVja0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTcgN2g3djJIN1Y3em0wIDNoN3YySDd2LTJ6bTMgNUg3di0yaDN2MnptNC4wNSAzLjM2LTIuODMtMi44MyAxLjQxLTEuNDEgMS40MSAxLjQxTDE3LjU5IDEyIDE5IDEzLjQxbC00Ljk1IDQuOTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBsYXlsaXN0QWRkQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEwaDExdjJIM3pNMyA2aDExdjJIM3pNMyAxNGg3djJIM3pNMjAuNTkgMTEuOTNsLTQuMjUgNC4yNC0yLjEyLTIuMTItMS40MSAxLjQxTDE2LjM0IDE5IDIyIDEzLjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQbGF5bGlzdEFkZENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTcgN2g3djJIN1Y3em0zIDhIN3YtMmgzdjJ6bS0zLTN2LTJoN3YySDd6bTEyIDNoLTJ2MmgtMnYtMmgtMnYtMmgydi0yaDJ2MmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBsYXlsaXN0QWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTBIM3YyaDExdi0yem0wLTRIM3YyaDExVjZ6bTQgOHYtNGgtMnY0aC00djJoNHY0aDJ2LTRoNHYtMmgtNHpNMyAxNmg3di0ySDN2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxheWxpc3RQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMGgxMXYySDN6TTMgNmgxMXYySDN6TTMgMTRoN3YySDN6TTE2IDEzdjhsNi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQbGF5bGlzdFJlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEwSDN2MmgxMXYtMnptMC00SDN2MmgxMVY2ek0zIDE2aDd2LTJIM3Yyem0xMS40MSA2TDE3IDE5LjQxIDE5LjU5IDIyIDIxIDIwLjU5IDE4LjQxIDE4IDIxIDE1LjQxIDE5LjU5IDE0IDE3IDE2LjU5IDE0LjQxIDE0IDEzIDE1LjQxIDE1LjU5IDE4IDEzIDIwLjU5IDE0LjQxIDIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRRdWV1ZU11c2ljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgNkgzdjJoMTJWNnptMCA0SDN2MmgxMnYtMnpNMyAxNmg4di0ySDN2MnpNMTcgNnY4LjE4Yy0uMzEtLjExLS42NS0uMTgtMS0uMTgtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zVjhoM1Y2aC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRRdWV1ZVBsYXlOZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNXYyaDh2LTJoMnYtMkgzVjVoMTh2OGgyVjVhMiAyIDAgMCAwLTItMnptLTggN1Y3aC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTN6bTExIDgtNC41IDQuNUwxOCAyMWwzLTMtMy0zIDEuNS0xLjVMMjQgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFF1ZXVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6bTE2LTRIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMSA5aC00djRoLTJ2LTRIOVY5aDRWNWgydjRoNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSYWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuMjQgNi4xNUMyLjUxIDYuNDMgMiA3LjE3IDIgOHYxMmEyIDIgMCAwIDAgMiAyaDE2YTIgMiAwIDAgMCAyLTJWOGMwLTEuMTEtLjg5LTItMi0ySDguM2w4LjI2LTMuMzRMMTUuODggMSAzLjI0IDYuMTV6TTcgMjBjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0xMy04aC0ydi0yaC0ydjJINFY4aDE2djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlY2VudEFjdG9ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDV2MTRoMlY1aC0yem0tNCAxNGgyVjVoLTJ2MTR6TTE0IDVIMmMtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDEyYy41NSAwIDEtLjQ1IDEtMVY2YzAtLjU1LS40NS0xLTEtMXpNOCA3Ljc1YzEuMjQgMCAyLjI1IDEuMDEgMi4yNSAyLjI1UzkuMjQgMTIuMjUgOCAxMi4yNSA1Ljc1IDExLjI0IDUuNzUgMTAgNi43NiA3Ljc1IDggNy43NXpNMTIuNSAxN2gtOXYtLjc1YzAtMS41IDMtMi4yNSA0LjUtMi4yNXM0LjUuNzUgNC41IDIuMjVWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlbW92ZUZyb21RdWV1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNWEyIDIgMCAwIDAtMi0yem0wIDE0SDNWNWgxOHYxMnptLTUtN3YySDh2LTJoOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwZWF0T24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yMSAxSDNjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNNyA3aDEwdjNsNC00LTQtNHYzSDV2NmgyVjd6bTEwIDEwSDd2LTNsLTQgNCA0IDR2LTNoMTJ2LTZoLTJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwZWF0T25lT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yMSAxSDNjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNNyA3aDEwdjNsNC00LTQtNHYzSDV2NmgyVjd6bTEwIDEwSDd2LTNsLTQgNCA0IDR2LTNoMTJ2LTZoLTJ2NHptLTQtMlY5aC0xbC0yIDF2MWgxLjV2NEgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwZWF0T25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3aDEwdjNsNC00LTQtNHYzSDV2NmgyVjd6bTEwIDEwSDd2LTNsLTQgNCA0IDR2LTNoMTJ2LTZoLTJ2NHptLTQtMlY5aC0xbC0yIDF2MWgxLjV2NEgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3aDEwdjNsNC00LTQtNHYzSDV2NmgyVjd6bTEwIDEwSDd2LTNsLTQgNCA0IDR2LTNoMTJ2LTZoLTJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwbGF5MTAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSA1VjFsLTUgNSA1IDVWN2MzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNi02LTIuNjktNi02aC0yYzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LTgtMy41OC04LTgtOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuODkgMTZoLS44NXYtMy4yNmwtMS4wMS4zMXYtLjY5bDEuNzctLjYzaC4wOVYxNnpNMTUuMTcgMTQuMjRjMCAuMzItLjAzLjYtLjEuODJzLS4xNy40Mi0uMjkuNTctLjI4LjI2LS40NS4zMy0uMzcuMS0uNTkuMS0uNDEtLjAzLS41OS0uMS0uMzMtLjE4LS40Ni0uMzMtLjIzLS4zNC0uMy0uNTctLjExLS41LS4xMS0uODJ2LS43NGMwLS4zMi4wMy0uNi4xLS44MnMuMTctLjQyLjI5LS41Ny4yOC0uMjYuNDUtLjMzLjM3LS4xLjU5LS4xLjQxLjAzLjU5LjEuMzMuMTguNDYuMzMuMjMuMzQuMy41Ny4xMS41LjExLjgydi43NHptLS44NS0uODZjMC0uMTktLjAxLS4zNS0uMDQtLjQ4cy0uMDctLjIzLS4xMi0uMzEtLjExLS4xNC0uMTktLjE3LS4xNi0uMDUtLjI1LS4wNS0uMTguMDItLjI1LjA1LS4xNC4wOS0uMTkuMTctLjA5LjE4LS4xMi4zMS0uMDQuMjktLjA0LjQ4di45N2MwIC4xOS4wMS4zNS4wNC40OHMuMDcuMjQuMTIuMzIuMTEuMTQuMTkuMTcuMTYuMDUuMjUuMDUuMTgtLjAyLjI1LS4wNS4xNC0uMDkuMTktLjE3LjA5LS4xOS4xMS0uMzIuMDQtLjI5LjA0LS40OHYtLjk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBsYXkzMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVWMUw3IDZsNSA1VjdjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDYtNi0yLjY5LTYtNkg0YzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LTgtMy41OC04LTgtOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41NiAxMy40OWguNDVjLjIxIDAgLjM3LS4wNS40OC0uMTZzLjE2LS4yNS4xNi0uNDNhLjUzOC41MzggMCAwIDAtLjE1LS4zOWMtLjA1LS4wNS0uMTEtLjA5LS4xOC0uMTFzLS4xNi0uMDQtLjI1LS4wNGMtLjA4IDAtLjE1LjAxLS4yMi4wM3MtLjEzLjA1LS4xOC4xLS4wOS4wOS0uMTIuMTUtLjA1LjEzLS4wNS4yaC0uODVhMS4wNiAxLjA2IDAgMCAxIC40MS0uODVjLjEzLS4xLjI3LS4xOC40NC0uMjNzLjM1LS4wOC41NC0uMDhjLjIxIDAgLjQxLjAzLjU5LjA4cy4zMy4xMy40Ni4yMy4yMy4yMy4zLjM4LjExLjMzLjExLjUzYS44NDIuODQyIDAgMCAxLS4xNy41MiAxLjEgMS4xIDAgMCAxLS40OC4zOWMuMjQuMDkuNDIuMjEuNTQuMzlzLjE4LjM4LjE4LjYxYzAgLjItLjA0LjM4LS4xMi41M3MtLjE4LjI5LS4zMi4zOS0uMjkuMTktLjQ4LjI0LS4zOC4wOC0uNi4wOGMtLjE4IDAtLjM2LS4wMi0uNTMtLjA3cy0uMzMtLjEyLS40Ni0uMjMtLjI1LS4yMy0uMzMtLjM4LS4xMi0uMzQtLjEyLS41NWguODVjMCAuMDguMDIuMTUuMDUuMjJzLjA3LjEyLjEzLjE3LjEyLjA5LjIuMTEuMTYuMDQuMjUuMDRjLjEgMCAuMTktLjAxLjI3LS4wNHMuMTUtLjA3LjItLjEyLjEtLjExLjEzLS4xOC4wNC0uMTUuMDQtLjI0YzAtLjExLS4wMi0uMjEtLjA1LS4yOXMtLjA4LS4xNS0uMTQtLjItLjEzLS4wOS0uMjItLjExLS4xOC0uMDQtLjI5LS4wNGgtLjQ3di0uNjV6TTE1LjMgMTQuMjRjMCAuMzItLjAzLjYtLjEuODJzLS4xNy40Mi0uMjkuNTctLjI4LjI2LS40NS4zMy0uMzcuMS0uNTkuMS0uNDEtLjAzLS41OS0uMS0uMzMtLjE4LS40Ni0uMzMtLjIzLS4zNC0uMy0uNTctLjExLS41LS4xMS0uODJ2LS43NGMwLS4zMi4wMy0uNi4xLS44MnMuMTctLjQyLjI5LS41Ny4yOC0uMjYuNDUtLjMzLjM3LS4xLjU5LS4xLjQxLjAzLjU5LjEuMzMuMTguNDYuMzMuMjMuMzQuMy41Ny4xMS41LjExLjgydi43NHptLS44NS0uODZjMC0uMTktLjAxLS4zNS0uMDQtLjQ4cy0uMDctLjIzLS4xMi0uMzEtLjExLS4xNC0uMTktLjE3LS4xNi0uMDUtLjI1LS4wNS0uMTguMDItLjI1LjA1LS4xNC4wOS0uMTkuMTctLjA5LjE4LS4xMi4zMS0uMDQuMjktLjA0LjQ4di45N2MwIC4xOS4wMS4zNS4wNC40OHMuMDcuMjQuMTIuMzIuMTEuMTQuMTkuMTcuMTYuMDUuMjUuMDUuMTgtLjAyLjI1LS4wNS4xNC0uMDkuMTktLjE3LjA5LS4xOS4xMS0uMzJjLjAzLS4xMy4wNC0uMjkuMDQtLjQ4di0uOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlcGxheTUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1VjFMNyA2bDUgNVY3YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTZINGMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04LTMuNTgtOC04LTh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwLjY5IDEzLjkuMjUtMi4xN2gyLjM5di43MWgtMS43bC0uMTEuOTJjLjAzLS4wMi4wNy0uMDMuMTEtLjA1cy4wOS0uMDQuMTUtLjA1LjEyLS4wMy4xOC0uMDQuMTMtLjAyLjItLjAyYy4yMSAwIC4zOS4wMy41NS4xcy4zLjE2LjQxLjI4LjIuMjcuMjUuNDUuMDkuMzguMDkuNmMwIC4xOS0uMDMuMzctLjA5LjU0cy0uMTUuMzItLjI3LjQ1LS4yNy4yNC0uNDUuMzEtLjM5LjEyLS42NC4xMmMtLjE4IDAtLjM2LS4wMy0uNTMtLjA4cy0uMzItLjE0LS40Ni0uMjQtLjI0LS4yNC0uMzItLjM5LS4xMy0uMzMtLjEzLS41M2guODRjLjAyLjE4LjA4LjMyLjE5LjQxcy4yNS4xNS40Mi4xNWEuNDkuNDkgMCAwIDAgLjQ1LS4yM2MuMDQtLjA3LjA4LS4xNS4xMS0uMjVzLjAzLS4yLjAzLS4zMS0uMDEtLjIxLS4wNC0uMzEtLjA3LS4xNy0uMTMtLjI0LS4xMy0uMTItLjIxLS4xNS0uMTktLjA1LS4zLS4wNWMtLjA4IDAtLjE1LjAxLS4yLjAycy0uMTEuMDMtLjE1LjA1LS4wOC4wNS0uMTIuMDctLjA3LjA2LS4xLjA5bC0uNjctLjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBsYXlDaXJjbGVGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem02IDEwYzAgMy4zMS0yLjY5IDYtNiA2cy02LTIuNjktNi02aDJjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNC0xLjc5LTQtNC00djNMOCA3bDQtNHYzYzMuMzEgMCA2IDIuNjkgNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1VjFMNyA2bDUgNVY3YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTZINGMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04LTMuNTgtOC04LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS02IDZoNGMuNTUgMCAxIC40NSAxIDF2NGMwIC41NS0uNDUgMS0xIDFoLTRWOXptLTMuNSA0LjV2LTFIN2MtLjU1IDAtMS0uNDUtMS0xVjEwYzAtLjU1LjQ1LTEgMS0xaDNjLjU1IDAgMSAuNDUgMSAxdjFIOS41di0uNWgtMnYxSDEwYy41NSAwIDEgLjQ1IDEgMVYxNGMwIC41NS0uNDUgMS0xIDFIN2MtLjU1IDAtMS0uNDUtMS0xdi0xaDEuNXYuNWgyem01IDBoMnYtM2gtMnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaHVmZmxlT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yMSAxSDNjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNMTAuNTkgOS4xNyA1LjQxIDQgNCA1LjQxbDUuMTcgNS4xNyAxLjQyLTEuNDF6TTE0LjUgNGwyLjA0IDIuMDRMNCAxOC41OSA1LjQxIDIwIDE3Ljk2IDcuNDYgMjAgOS41VjRoLTUuNXptLjMzIDkuNDEtMS40MSAxLjQxIDMuMTMgMy4xM0wxNC41IDIwSDIwdi01LjVsLTIuMDQgMi4wNC0zLjEzLTMuMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNodWZmbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41OSA5LjE3IDUuNDEgNCA0IDUuNDFsNS4xNyA1LjE3IDEuNDItMS40MXpNMTQuNSA0bDIuMDQgMi4wNEw0IDE4LjU5IDUuNDEgMjAgMTcuOTYgNy40NiAyMCA5LjVWNGgtNS41em0uMzMgOS40MS0xLjQxIDEuNDEgMy4xMyAzLjEzTDE0LjUgMjBIMjB2LTUuNWwtMi4wNCAyLjA0LTMuMTMtMy4xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2tpcE5leHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02IDE4IDguNS02TDYgNnYxMnpNMTYgNnYxMmgyVjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNraXBQcmV2aW91cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNmgydjEySDZ6bTMuNSA2IDguNSA2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNsb3dNb3Rpb25WaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuMDUgOS43OSAxMCA3LjV2OWwzLjA1LTIuMjlMMTYgMTJ6bTAgMEwxMCA3LjV2OWwzLjA1LTIuMjlMMTYgMTJ6bTAgMEwxMCA3LjV2OWwzLjA1LTIuMjlMMTYgMTJ6TTExIDQuMDdWMi4wNWMtMi4wMS4yLTMuODQgMS01LjMyIDIuMjFMNy4xIDUuNjlBNy45NDEgNy45NDEgMCAwIDEgMTEgNC4wN3pNNS42OSA3LjEgNC4yNiA1LjY4QTkuOTQ5IDkuOTQ5IDAgMCAwIDIuMDUgMTFoMi4wMmMuMTgtMS40Ni43Ni0yLjc5IDEuNjItMy45ek00LjA3IDEzSDIuMDVjLjIgMi4wMSAxIDMuODQgMi4yMSA1LjMybDEuNDMtMS40M0E3Ljg2OCA3Ljg2OCAwIDAgMSA0LjA3IDEzem0xLjYxIDYuNzRBOS45ODEgOS45ODEgMCAwIDAgMTEgMjEuOTV2LTIuMDJhNy45NDEgNy45NDEgMCAwIDEtMy45LTEuNjJsLTEuNDIgMS40M3pNMjIgMTJjMCA1LjE2LTMuOTIgOS40Mi04Ljk1IDkuOTV2LTIuMDJDMTYuOTcgMTkuNDEgMjAgMTYuMDUgMjAgMTJzLTMuMDMtNy40MS02Ljk1LTcuOTNWMi4wNUMxOC4wOCAyLjU4IDIyIDYuODQgMjIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNub296ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuODggMy4zOSA2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMjIgNS43MmwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDlhOSA5IDAgMCAwIDAtMTh6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3em0tMy05aDMuNjNMOSAxNS4yVjE3aDZ2LTJoLTMuNjNMMTUgMTAuOFY5SDl2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU29ydEJ5QWxwaGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bS43NS43NWgyMi41djIyLjVILjc1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC45NCA0LjY2aC00LjcybDIuMzYtMi4zNnptLTQuNjkgMTQuNzFoNC42NmwtMi4zMyAyLjMzek02LjEgNi4yNyAxLjYgMTcuNzNoMS44NGwuOTItMi40NWg1LjExbC45MiAyLjQ1aDEuODRMNy43NCA2LjI3SDYuMXptLTEuMTMgNy4zNyAxLjk0LTUuMTggMS45NCA1LjE4SDQuOTd6bTEwLjc2IDIuNWg2LjEydjEuNTloLTguNTN2LTEuMjlsNS45Mi04LjU2aC01Ljg4di0xLjZoOC4zdjEuMjZsLTUuOTMgOC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGVlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjM4IDguNTctMS4yMyAxLjg1YTggOCAwIDAgMS0uMjIgNy41OEg1LjA3QTggOCAwIDAgMSAxNS41OCA2Ljg1bDEuODUtMS4yM0ExMCAxMCAwIDAgMCAzLjM1IDE5YTIgMiAwIDAgMCAxLjcyIDFoMTMuODVhMiAyIDAgMCAwIDEuNzQtMSAxMCAxMCAwIDAgMC0uMjctMTAuNDR6bS05Ljc5IDYuODRhMiAyIDAgMCAwIDIuODMgMGw1LjY2LTguNDktOC40OSA1LjY2YTIgMiAwIDAgMCAwIDIuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0b3BDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem00IDE0SDhWOGg4djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDZoMTJ2MTJINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3Vic2NyaXB0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDhINFY2aDE2djJ6bS0yLTZINnYyaDEyVjJ6bTQgMTB2OGMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMnYtOGMwLTEuMS45LTIgMi0yaDE2YzEuMSAwIDIgLjkgMiAyem0tNiA0LTYtMy4yN3Y2LjUzTDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdWJ0aXRsZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNCAxMmg0djJINHYtMnptMTAgNkg0di0yaDEwdjJ6bTYgMGgtNHYtMmg0djJ6bTAtNEgxMHYtMmgxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdXJyb3VuZFNvdW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTcuNzYgMTYuMjRsLTEuNDEgMS40MUE3LjkwOSA3LjkwOSAwIDAgMSA0IDEyYzAtMi4wNS43OC00LjEgMi4zNC01LjY2bDEuNDEgMS40MUM2LjU5IDguOTMgNiAxMC40NiA2IDEycy41OSAzLjA3IDEuNzYgNC4yNHpNMTIgMTZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0em01LjY2IDEuNjYtMS40MS0xLjQxQzE3LjQxIDE1LjA3IDE4IDEzLjU0IDE4IDEycy0uNTktMy4wNy0xLjc2LTQuMjRsMS40MS0xLjQxQTcuOTA5IDcuOTA5IDAgMCAxIDIwIDEyYzAgMi4wNS0uNzggNC4xLTIuMzQgNS42NnpNMTIgMTBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWRlb0NhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEwLjVWN2MwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxdjEwYzAgLjU1LjQ1IDEgMSAxaDEyYy41NSAwIDEtLjQ1IDEtMXYtMy41bDQgNHYtMTFsLTQgNHpNMTQgMTNoLTN2M0g5di0zSDZ2LTJoM1Y4aDJ2M2gzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINi4wMWEyIDIgMCAwIDAtMiAyTDQgMjBjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY4bC02LTZ6bS0xIDdWMy41TDE4LjUgOUgxM3ptMSA1IDItMS4wNnY0LjEyTDE0IDE2djFjMCAuNTUtLjQ1IDEtMSAxSDljLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWg0Yy41NSAwIDEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWRlb0xhYmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxM0gzVjVoMTh2MTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvTGlicmFyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTggMTIuNXYtOWw2IDQuNS02IDQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlkZW9TZXR0aW5ncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNmgxOHY1aDJWNmMwLTEuMS0uOS0yLTItMkgzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDl2LTJIM1Y2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMiA5IDh2OHpNMjIuNzEgMTguNDNjLjAzLS4yOS4wNC0uNTguMDEtLjg2bDEuMDctLjg1Yy4xLS4wOC4xMi0uMjEuMDYtLjMybC0xLjAzLTEuNzljLS4wNi0uMTEtLjE5LS4xNS0uMzEtLjExbC0xLjI4LjVhMy40NCAzLjQ0IDAgMCAwLS43NS0uNDJsLS4yLTEuMzZhLjI0OS4yNDkgMCAwIDAtLjI1LS4yMmgtMi4wN2MtLjEyIDAtLjIzLjA5LS4yNS4yMWwtLjIgMS4zNmMtLjI2LjExLS41MS4yNi0uNzQuNDJsLTEuMjgtLjVjLS4xMi0uMDUtLjI1IDAtLjMxLjExbC0xLjAzIDEuNzljLS4wNi4xMS0uMDQuMjQuMDYuMzJsMS4wNy44NmMtLjAzLjI5LS4wNC41OC0uMDEuODZsLTEuMDcuODVjLS4xLjA4LS4xMi4yMS0uMDYuMzJsMS4wMyAxLjc5Yy4wNi4xMS4xOS4xNS4zMS4xMWwxLjI3LS41Yy4yMy4xNy40OC4zMS43NS40MmwuMiAxLjM2Yy4wMi4xMi4xMi4yMS4yNS4yMWgyLjA3Yy4xMiAwIC4yMy0uMDkuMjUtLjIxbC4yLTEuMzZjLjI2LS4xMS41MS0uMjYuNzQtLjQybDEuMjguNWMuMTIuMDUuMjUgMCAuMzEtLjExbDEuMDMtMS43OWMuMDYtLjExLjA0LS4yNC0uMDYtLjMybC0xLjA2LS44NXpNMTkgMTkuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvY2FtT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxIDYuNS00IDRWN2MwLS41NS0uNDUtMS0xLTFIOS44MkwyMSAxNy4xOFY2LjV6TTMuMjcgMiAyIDMuMjcgNC43MyA2SDRjLS41NSAwLTEgLjQ1LTEgMXYxMGMwIC41NS40NSAxIDEgMWgxMmMuMjEgMCAuMzktLjA4LjU0LS4xOEwxOS43MyAyMSAyMSAxOS43MyAzLjI3IDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvY2FtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTAuNVY3YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xdi0zLjVsNCA0di0xMWwtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWb2x1bWVEb3duQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNy45N3Y4LjA1YzEuNDgtLjczIDIuNS0yLjI1IDIuNS00LjAyUzE1LjQ4IDguNzEgMTQgNy45N3pNMyA5djZoNGw1IDVWNEw3IDlIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVm9sdW1lRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgMTJBNC41IDQuNSAwIDAgMCAxNiA3Ljk3djguMDVjMS40OC0uNzMgMi41LTIuMjUgMi41LTQuMDJ6TTUgOXY2aDRsNSA1VjRMOSA5SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZvbHVtZU11dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDl2Nmg0bDUgNVY0bC01IDVIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVm9sdW1lT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAxMkE0LjUgNC41IDAgMCAwIDE0IDcuOTd2Mi4yMWwyLjQ1IDIuNDVjLjAzLS4yLjA1LS40MS4wNS0uNjN6bTIuNSAwYzAgLjk0LS4yIDEuODItLjU0IDIuNjRsMS41MSAxLjUxQTguNzk2IDguNzk2IDAgMCAwIDIxIDEyYzAtNC4yOC0yLjk5LTcuODYtNy04Ljc3djIuMDZjMi44OS44NiA1IDMuNTQgNSA2Ljcxek00LjI3IDMgMyA0LjI3IDcuNzMgOUgzdjZoNGw1IDV2LTYuNzNsNC4yNSA0LjI1Yy0uNjcuNTItMS40Mi45My0yLjI1IDEuMTh2Mi4wNmE4Ljk5IDguOTkgMCAwIDAgMy42OS0xLjgxTDE5LjczIDIxIDIxIDE5LjczbC05LTlMNC4yNyAzek0xMiA0IDkuOTEgNi4wOSAxMiA4LjE4VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZvbHVtZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA5djZoNGw1IDVWNEw3IDlIM3ptMTMuNSAzQTQuNSA0LjUgMCAwIDAgMTQgNy45N3Y4LjA1YzEuNDgtLjczIDIuNS0yLjI1IDIuNS00LjAyek0xNCAzLjIzdjIuMDZjMi44OS44NiA1IDMuNTQgNSA2Ljcxcy0yLjExIDUuODUtNSA2LjcxdjIuMDZjNC4wMS0uOTEgNy00LjQ5IDctOC43N3MtMi45OS03Ljg2LTctOC43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2ViQXNzZXRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjgzIDRIMjBhMiAyIDAgMCAxIDIgMnYxMmMwIC4zNC0uMDkuNjYtLjIzLjk0TDIwIDE3LjE3VjhoLTkuMTdsLTQtNHptMTMuNjYgMTkuMzFMMTcuMTcgMjBINGEyIDIgMCAwIDEtMi0yVjZjMC0uMzQuMDgtLjY2LjIzLS45NEwuNjkgMy41MSAyLjEgMi4xbDE5LjggMTkuOC0xLjQxIDEuNDF6TTE1LjE3IDE4bC0xMC0xMEg0djEwaDExLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXZWJBc3NldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRINWEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmEyIDIgMCAwIDAtMi0yem0wIDE0SDVWOGgxNHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2ViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNSAxNEg0di00aDExdjR6bTAtNUg0VjloMTF2NHptNSA1aC00VjloNHY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQzUCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINC4wMWMtMS4xIDAtMiAuOS0yIDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTggNGMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTQgOEg4di0uNTdjMC0uODEuNDgtMS41MyAxLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAxIDUuNTYgMEEyLjAxIDIuMDEgMCAwIDEgMTYgMTMuNDNWMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZEljQ2FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3YTEuMDIgMS4wMiAwIDAgMC0xLjAyLjI0bC0yLjIgMi4yYTE1LjA0NSAxNS4wNDUgMCAwIDEtNi41OS02LjU5bDIuMi0yLjIxYS45Ni45NiAwIDAgMCAuMjUtMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNMjEgNmgtM1YzaC0ydjNoLTN2MmgzdjNoMlY4aDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFsdGVybmF0ZUVtYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMGg1di0yaC01Yy00LjM0IDAtOC0zLjY2LTgtOHMzLjY2LTggOC04IDggMy42NiA4IDh2MS40M2MwIC43OS0uNzEgMS41Ny0xLjUgMS41N3MtMS41LS43OC0xLjUtMS41N1YxMmMwLTIuNzYtMi4yNC01LTUtNXMtNSAyLjI0LTUgNSAyLjI0IDUgNSA1YzEuMzggMCAyLjY0LS41NiAzLjU0LTEuNDcuNjUuODkgMS43NyAxLjQ3IDIuOTYgMS40NyAxLjk3IDAgMy41LTEuNiAzLjUtMy41N1YxMmMwLTUuNTItNC40OC0xMC0xMC0xMHptMCAxM2MtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFwcFJlZ2lzdHJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDRoNHY0aC00ek00IDE2aDR2NEg0ek00IDEwaDR2NEg0ek00IDRoNHY0SDR6TTE0IDEyLjQyVjEwaC00djRoMi40MnpNMjAuODggMTEuMjlsLTEuMTctMS4xN2EuNDEuNDEgMCAwIDAtLjU4IDBsLS44OC44OEwyMCAxMi43NWwuODgtLjg4YS40MS40MSAwIDAgMCAwLS41OHpNMTEgMTguMjVWMjBoMS43NWw2LjY3LTYuNjctMS43NS0xLjc1ek0xNiA0aDR2NGgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnVzaW5lc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3VjNIMnYxOGgyMFY3SDEyek02IDE5SDR2LTJoMnYyem0wLTRINHYtMmgydjJ6bTAtNEg0VjloMnYyem0wLTRINFY1aDJ2MnptNCAxMkg4di0yaDJ2MnptMC00SDh2LTJoMnYyem0wLTRIOFY5aDJ2MnptMC00SDhWNWgydjJ6bTEwIDEyaC04di0yaDJ2LTJoLTJ2LTJoMnYtMmgtMlY5aDh2MTB6bS0yLThoLTJ2Mmgydi0yem0wIDRoLTJ2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYWxsRW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOWMtMS42IDAtMy4xNS4yNS00LjYuNzJ2My4xYzAgLjM5LS4yMy43NC0uNTYuOS0uOTguNDktMS44NyAxLjEyLTIuNjYgMS44NS0uMTguMTgtLjQzLjI4LS43LjI4LS4yOCAwLS41My0uMTEtLjcxLS4yOUwuMjkgMTMuMDhhLjk1Ni45NTYgMCAwIDEtLjI5LS43YzAtLjI4LjExLS41My4yOS0uNzFDMy4zNCA4Ljc4IDcuNDYgNyAxMiA3czguNjYgMS43OCAxMS43MSA0LjY3Yy4xOC4xOC4yOS40My4yOS43MSAwIC4yOC0uMTEuNTMtLjI5LjcxbC0yLjQ4IDIuNDhjLS4xOC4xOC0uNDMuMjktLjcxLjI5LS4yNyAwLS41Mi0uMTEtLjctLjI4YTExLjI3IDExLjI3IDAgMCAwLTIuNjctMS44NS45OTYuOTk2IDAgMCAxLS41Ni0uOXYtMy4xQzE1LjE1IDkuMjUgMTMuNiA5IDEyIDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGxNYWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA1djJoNi41OUw0IDE4LjU5IDUuNDEgMjAgMTcgOC40MVYxNWgyVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGxNZXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDIwLjQxIDE4LjQxIDE5IDE1IDE1LjU5IDEzLjU5IDE3IDE3IDIwLjQxek03LjUgOEgxMXY1LjU5TDUuNTkgMTkgNyAyMC40MWw2LTZWOGgzLjVMMTIgMy41IDcuNSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYWxsTWlzc2VkT3V0Z29pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0zIDguNDEgOSA5IDctN1YxNWgyVjdoLTh2Mmg0LjU5TDEyIDE0LjU5IDQuNDEgNyAzIDguNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGxNaXNzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41OSA3IDEyIDE0LjU5IDYuNDEgOUgxMVY3SDN2OGgydi00LjU5bDcgNyA5LTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGxSZWNlaXZlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDUuNDEgMTguNTkgNCA3IDE1LjU5VjlINXYxMGgxMHYtMkg4LjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYWxsU3BsaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA0IDIuMjkgMi4yOS0yLjg4IDIuODggMS40MiAxLjQyIDIuODgtMi44OEwyMCAxMFY0em0tNCAwSDR2NmwyLjI5LTIuMjkgNC43MSA0LjdWMjBoMnYtOC40MWwtNS4yOS01LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC4wMSAxNS4zOGMtMS4yMyAwLTIuNDItLjItMy41My0uNTZhLjk3Ny45NzcgMCAwIDAtMS4wMS4yNGwtMS41NyAxLjk3Yy0yLjgzLTEuMzUtNS40OC0zLjktNi44OS02LjgzbDEuOTUtMS42NmMuMjctLjI4LjM1LS42Ny4yNC0xLjAyLS4zNy0xLjExLS41Ni0yLjMtLjU2LTMuNTMgMC0uNTQtLjQ1LS45OS0uOTktLjk5SDQuMTlDMy42NSAzIDMgMy4yNCAzIDMuOTkgMyAxMy4yOCAxMC43MyAyMSAyMC4wMSAyMWMuNzEgMCAuOTktLjYzLjk5LTEuMTh2LTMuNDVjMC0uNTQtLjQ1LS45OS0uOTktLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW5jZWxQcmVzZW50YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxOS4xSDNWNWgxOHYxNC4xek0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjEgMTkuMUgzVjVoMTh2MTQuMXpNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjU5IDggMTIgMTAuNTkgOS40MSA4IDggOS40MSAxMC41OSAxMiA4IDE0LjU5IDkuNDEgMTYgMTIgMTMuNDEgMTQuNTkgMTYgMTYgMTQuNTkgMTMuNDEgMTIgMTYgOS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2VsbFRvd2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNy4zIDE0LjcgMS4yLTEuMmMtMS0xLTEuNS0yLjMtMS41LTMuNSAwLTEuMy41LTIuNiAxLjUtMy41TDcuMyA1LjNjLTEuMyAxLjMtMiAzLTIgNC43cy43IDMuNCAyIDQuN3pNMTkuMSAyLjlsLTEuMiAxLjJjMS42IDEuNiAyLjQgMy44IDIuNCA1LjkgMCAyLjEtLjggNC4zLTIuNCA1LjlsMS4yIDEuMmMyLTIgMi45LTQuNSAyLjktNy4xIDAtMi42LTEtNS4xLTIuOS03LjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMSA0LjEgNC45IDIuOUMzIDQuOSAyIDcuNCAyIDEwYzAgMi42IDEgNS4xIDIuOSA3LjFsMS4yLTEuMmMtMS42LTEuNi0yLjQtMy44LTIuNC01LjkgMC0yLjEuOC00LjMgMi40LTUuOXpNMTYuNyAxNC43YzEuMy0xLjMgMi0zIDItNC43LS4xLTEuNy0uNy0zLjQtMi00LjdsLTEuMiAxLjJjMSAxIDEuNSAyLjMgMS41IDMuNSAwIDEuMy0uNSAyLjYtMS41IDMuNWwxLjIgMS4yek0xNC41IDEwYTIuNSAyLjUgMCAwIDAtNSAwYzAgLjc2LjM0IDEuNDIuODcgMS44OEw3IDIyaDJsLjY3LTJoNC42N2wuNjYgMmgybC0zLjM3LTEwLjEyYy41My0uNDYuODctMS4xMi44Ny0xLjg4em0tNC4xNyA4TDEyIDEzbDEuNjcgNWgtMy4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2VsbFdpZmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5Ljk4IDYgMjJoMTZWNS45N2wtNCA0LjAxek0yMCAyMGgtMnYtNy4yMmwyLTJWMjB6TTUuMjIgNy4yMiAzLjkzIDUuOTNjMy45LTMuOTEgMTAuMjQtMy45MSAxNC4xNSAwbC0xLjI5IDEuMjljLTMuMTktMy4xOS04LjM4LTMuMTktMTEuNTcgMHptNy43MSAzLjg1TDExIDEzbC0xLjkzLTEuOTNhMi43NCAyLjc0IDAgMCAxIDMuODYgMHptMS4yOS0xLjI4Yy0xLjc4LTEuNzctNC42Ni0xLjc3LTYuNDMgMEw2LjUgOC41YTYuMzc0IDYuMzc0IDAgMCAxIDkgMGwtMS4yOCAxLjI5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGF0QnViYmxlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg2bC0yIDJWNGgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hhdEJ1YmJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNNiA5aDEydjJINlY5em04IDVINnYtMmg4djJ6bTQtNkg2VjZoMTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xlYXJBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEzaDE0di0ySDV2MnptLTIgNGgxNHYtMkgzdjJ6TTcgN3YyaDE0VjdIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29QcmVzZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnY4aDJWNWgxOHYxNmMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiNFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4zOSAxNi41NkMxMy43MSAxNS43IDExLjUzIDE1IDkgMTVzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDEgMTkuMjJWMjJoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29tbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk5IDRjMC0xLjEtLjg5LTItMS45OS0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRsNCA0LS4wMS0xOHpNMTggMTRINnYtMmgxMnYyem0wLTNINlY5aDEydjJ6bTAtM0g2VjZoMTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29tbWVudHNEaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjgzIDE0SDE4di0yaC0zLjE3bC0xLTFIMThWOWgtNi4xN2wtMS0xSDE4VjZIOC44M2wtNC00SDIwYzEuMSAwIDIgLjkgMiAydjE1LjE3TDE2LjgzIDE0ek0yLjEgMi4xLjY5IDMuNTEgMiA0LjgzVjE2YzAgMS4xLjkgMiAyIDJoMTEuMTdsNS4zMSA1LjMxIDEuNDEtMS40MUwyLjEgMi4xek02IDloLjE3bDIgMkg2Vjl6bTAgNXYtMmgzLjE3bDIgMkg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb250YWN0RW1lcmdlbmN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgM0gyQy45IDMgMCAzLjkgMCA1djE0YzAgMS4xLjkgMiAyIDJoMjBjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjQgNWMwLTEuMS0uOS0yLTItMnpNOSA4YzEuNjUgMCAzIDEuMzUgMyAzcy0xLjM1IDMtMyAzLTMtMS4zNS0zLTMgMS4zNS0zIDMtM3pNMi4wOCAxOWMxLjM4LTIuMzkgMy45Ni00IDYuOTItNHM1LjU0IDEuNjEgNi45MiA0SDIuMDh6bTE4Ljg5LTkuMTUtLjc1IDEuMy0xLjQ3LS44NVYxMmgtMS41di0xLjdsLTEuNDcuODUtLjc1LTEuM0wxNi41IDlsLTEuNDctLjg1Ljc1LTEuMyAxLjQ3Ljg1VjZoMS41djEuN2wxLjQ3LS44NS43NSAxLjNMMTkuNSA5bDEuNDcuODV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRhY3RNYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDhWN2wtMyAyLTMtMnYxbDMgMiAzLTJ6bTEtNUgyQy45IDMgMCAzLjkgMCA1djE0YzAgMS4xLjkgMiAyIDJoMjBjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjQgNWMwLTEuMS0uOS0yLTItMnpNOCA2YzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM3ptNiAxMkgydi0xYzAtMiA0LTMuMSA2LTMuMXM2IDEuMSA2IDMuMXYxem04LTZoLThWNmg4djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRhY3RQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDNIMkMuOSAzIDAgMy45IDAgNXYxNGMwIDEuMS45IDIgMiAyaDIwYzEuMSAwIDEuOTktLjkgMS45OS0yTDI0IDVjMC0xLjEtLjktMi0yLTJ6TTggNmMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgMy0zLTEuMzQtMy0zIDEuMzQtMyAzLTN6bTYgMTJIMnYtMWMwLTIgNC0zLjEgNi0zLjFzNiAxLjEgNiAzLjF2MXptMy44NS00aDEuNjRMMjEgMTZsLTEuOTkgMS45OUE3LjUxMiA3LjUxMiAwIDAgMSAxNi4yOCAxNGMtLjE4LS42NC0uMjgtMS4zMS0uMjgtMnMuMS0xLjM2LjI4LTJhNy40NzQgNy40NzQgMCAwIDEgMi43My0zLjk5TDIxIDhsLTEuNTEgMmgtMS42NGMtLjIyLjYzLS4zNSAxLjMtLjM1IDJzLjEzIDEuMzcuMzUgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29udGFjdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDBINHYyaDE2VjB6TTQgMjRoMTZ2LTJINHYyek0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTggMi43NWMxLjI0IDAgMi4yNSAxLjAxIDIuMjUgMi4yNXMtMS4wMSAyLjI1LTIuMjUgMi4yNVM5Ljc1IDEwLjI0IDkuNzUgOSAxMC43NiA2Ljc1IDEyIDYuNzV6TTE3IDE3SDd2LTEuNWMwLTEuNjcgMy4zMy0yLjUgNS0yLjVzNSAuODMgNSAyLjVWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlc2t0b3BBY2Nlc3NEaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTZjMCAxLjEtLjkgMi0yIDJoLTFsLTItMmgzVjRINkw0IDJoMTdjMS4xIDAgMiAuOSAyIDJ2MTJ6bS01LjUgMi0yLTJ6bS0yLjYgMCA2IDYgMS4zLTEuMy00LjctNC43LTItMkwxLjIgMS44IDAgMy4xbDEgMVYxNmMwIDEuMS45IDIgMiAyaDd2Mkg4djJoOHYtMmgtMnYtMmguOXpNMyAxNlY2LjFsOS45IDkuOUgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaWFsZXJTaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAzaC0xdjVoMVYzem0tMiAyaC0yVjRoMlYzaC0zdjNoMnYxaC0ydjFoM1Y1em0zLTJ2NWgxVjZoMlYzaC0zem0yIDJoLTFWNGgxdjF6bTAgMTAuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTdhLjk5OC45OTggMCAwIDAtMS4wMS4yNGwtMi4yIDIuMmExNS4wNDUgMTUuMDQ1IDAgMCAxLTYuNTktNi41OWwyLjItMi4yMWMuMjctLjI2LjM1LS42NS4yNC0xQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjVjMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaWFscGFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTljLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yek02IDFjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0xMi04YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptLTYgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTYgMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAtNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS02IDBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wLTZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb2N1bWVudFNjYW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDNINHYzSDJWMWg1djJ6bTE1IDNWMWgtNXYyaDN2M2gyek03IDIxSDR2LTNIMnY1aDV2LTJ6bTEzLTN2M2gtM3YyaDV2LTVoLTJ6bS0xIDBjMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yaDEwYzEuMSAwIDIgLjkgMiAydjEyek0xNSA4SDl2Mmg2Vjh6bTAgM0g5djJoNnYtMnptMCAzSDl2Mmg2di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb21haW5EaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA1aDJ2MmgtLjlMMTIgOS45VjloOHY4LjlsMiAyVjdIMTJWM0g1LjFMOCA1Ljl6bTggNmgydjJoLTJ6TTEuMyAxLjguMSAzLjEgMiA1djE2aDE2bDMgMyAxLjMtMS4zLTIxLTIwLjl6TTYgMTlINHYtMmgydjJ6bTAtNEg0di0yaDJ2MnptMC00SDRWOWgydjJ6bTQgOEg4di0yaDJ2MnptMC00SDh2LTJoMnYyem0yIDR2LTJoMmwyIDJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvbWFpblZlcmlmaWNhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2LjYgMTAuODgtMS40Mi0xLjQyLTQuMjQgNC4yNS0yLjEyLTIuMTNMNy40IDEzbDMuNTQgMy41NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNEg1YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YTIgMiAwIDAgMC0yLTJ6bTAgMTRINVY4aDE0djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREdW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAyaC04QzYuMzggMiAyIDYuNjYgMiAxMi4yOCAyIDE3LjUgNi40OSAyMiAxMS43MiAyMiAxNy4zOSAyMiAyMiAxNy42MiAyMiAxMlY0YzAtMS4xLS45LTItMi0yem0tMyAxMy0zLTJ2Mkg3VjloN3YybDMtMnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbWFpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCA0LTggNS04LTVWNmw4IDUgOC01djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcnVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNmgtMnY5SDZ2MmMwIC41NS40NSAxIDEgMWgxMWw0IDRWN2MwLS41NS0uNDUtMS0xLTF6bS00IDZWM2MwLS41NS0uNDUtMS0xLTFIM2MtLjU1IDAtMSAuNDUtMSAxdjE0bDQtNGgxMGMuNTUgMCAxLS40NSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcndhcmRUb0luYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDl2LTJINFY4bDggNSA4LTV2NWgyVjZjMC0xLjEtLjktMi0yLTJ6bS04IDdMNCA2aDE2bC04IDV6bTcgNCA0IDQtNCA0di0zaC00di0yaDR2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvdXJnbGFzc0JvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDIyLS4wMS02TDE0IDEybDMuOTktNC4wMUwxOCAySDZ2Nmw0IDQtNCAzLjk5VjIyaDEyek04IDcuNVY0aDh2My41bC00IDQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3VyZ2xhc3NUb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02IDIgLjAxIDZMMTAgMTJsLTMuOTkgNC4wMUw2IDIyaDEydi02bC00LTQgNC0zLjk5VjJINnptMTAgMTQuNVYyMEg4di0zLjVsNC00IDQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC40IDE4LjJjLjM4LjUuNiAxLjEyLjYgMS44IDAgMS42Ni0xLjM0IDMtMyAzcy0zLTEuMzQtMy0zIDEuMzQtMyAzLTNjLjQ0IDAgLjg1LjA5IDEuMjMuMjZsMS40MS0xLjc3YTQuNTA0IDQuNTA0IDAgMCAxLTEuMDktMy42OWwtMi4wMy0uNjhBMi45OTcgMi45OTcgMCAwIDEgMCA5LjVjMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM2MwIC4wNyAwIC4xNC0uMDEuMjFsMi4wMy42OGE0LjQ2OCA0LjQ2OCAwIDAgMSAzLjIyLTIuMzJWNS45MUEzLjAxOCAzLjAxOCAwIDAgMSA5IDNjMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM2MwIDEuNC0uOTYgMi41Ny0yLjI1IDIuOTF2Mi4xNmMxLjQuMjMgMi41OCAxLjExIDMuMjIgMi4zMkwxOCA5LjcxVjkuNWMwLTEuNjYgMS4zNC0zIDMtM3MzIDEuMzQgMyAzLTEuMzQgMy0zIDNjLTEuMDYgMC0xLjk4LS41NS0yLjUyLTEuMzdsLTIuMDMuNjhhNC40OSA0LjQ5IDAgMCAxLTEuMDkgMy42OWwxLjQxIDEuNzdjLjM4LS4xOC43OS0uMjcgMS4yMy0uMjcgMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDMtMy0xLjM0LTMtM2MwLS42OC4yMi0xLjMuNi0xLjhsLTEuNDEtMS43N2MtMS4zNS43NS0zLjAxLjc2LTQuMzcgMEw4LjQgMTguMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW1wb3J0Q29udGFjdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDQuNWMtMS45NSAwLTQuMDUuNC01LjUgMS41LTEuNDUtMS4xLTMuNTUtMS41LTUuNS0xLjVTMi40NSA0LjkgMSA2djE0LjY1YzAgLjY1LjczLjQ1Ljc1LjQ1QzMuMSAyMC40NSA1LjA1IDIwIDYuNSAyMGMxLjk1IDAgNC4wNS40IDUuNSAxLjUgMS4zNS0uODUgMy44LTEuNSA1LjUtMS41IDEuNjUgMCAzLjM1LjMgNC43NSAxLjA1LjQxLjIxLjc1LS4xOS43NS0uNDVWNmMtMS40OS0xLjEyLTMuNjMtMS41LTUuNS0xLjV6bTMuNSAxNGMtMS4xLS4zNS0yLjMtLjUtMy41LS41LTEuNyAwLTQuMTUuNjUtNS41IDEuNVY4YzEuMzUtLjg1IDMuOC0xLjUgNS41LTEuNSAxLjIgMCAyLjQuMTUgMy41LjV2MTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW1wb3J0RXhwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAzIDUgNi45OWgzVjE0aDJWNi45OWgzTDkgM3ptNyAxNC4wMVYxMGgtMnY3LjAxaC0zTDE1IDIxbDQtMy45OWgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW52ZXJ0Q29sb3JzT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMTkgMjEuMTkgMi44MSAyLjgxIDEuMzkgNC4yMmw0LjIgNC4yYTcuNzMgNy43MyAwIDAgMC0xLjYgNC43QzQgMTcuNDggNy41OCAyMSAxMiAyMWMxLjc1IDAgMy4zNi0uNTYgNC42Ny0xLjVsMy4xIDMuMSAxLjQyLTEuNDF6TTEyIDE5Yy0zLjMxIDAtNi0yLjYzLTYtNS44NyAwLTEuMTkuMzYtMi4zMiAxLjAyLTMuMjhMMTIgMTQuODNWMTl6TTguMzggNS41NiAxMiAybDUuNjUgNS41NkMxOS4xIDguOTkgMjAgMTAuOTYgMjAgMTMuMTNjMCAxLjE4LS4yNyAyLjI5LS43NCAzLjNMMTIgOS4xN1Y0LjgxTDkuOCA2Ljk3IDguMzggNS41NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuOTEgMTQuMDkgMTcgMTRsMiAyIDQtNC4wNEwyMSAxMGgtOC4xN2w0LjA4IDQuMDl6TTMuOTggNi44MUE2LjAxMiA2LjAxMiAwIDAgMCAxIDEyYzAgMy4zMSAyLjY5IDYgNiA2IDIuMjEgMCA0LjE1LTEuMiA1LjE4LTIuOTlsNy41OSA3LjU5IDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIybDIuNTkgMi41OXptNS45MyA1LjkzQTMuMDE1IDMuMDE1IDAgMCAxIDcgMTVjLTEuNjUgMC0zLTEuMzUtMy0zIDAtMS40Ljk3LTIuNTggMi4yNi0yLjkxbDMuNjUgMy42NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTBoLTguMzVBNS45OSA1Ljk5IDAgMCAwIDcgNmMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNmE1Ljk5IDUuOTkgMCAwIDAgNS42NS00SDEzbDIgMiAyLTIgMiAyIDQtNC4wNEwyMSAxMHpNNyAxNWMtMS42NSAwLTMtMS4zNS0zLTNzMS4zNS0zIDMtMyAzIDEuMzUgMyAzLTEuMzUgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpc3RBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djE0SDVWNWgxNG0xLjEtMkgzLjljLS41IDAtLjkuNC0uOS45djE2LjJjMCAuNC40LjkuOS45aDE2LjJjLjQgMCAuOS0uNS45LS45VjMuOWMwLS41LS41LS45LS45LS45ek0xMSA3aDZ2MmgtNlY3em0wIDRoNnYyaC02di0yem0wIDRoNnYyaC02ek03IDdoMnYySDd6bTAgNGgydjJIN3ptMCA0aDJ2Mkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaXZlSGVscCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoNGwzIDMgMy0zaDRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTYgMTZoLTJ2LTJoMnYyem0yLjA3LTcuNzUtLjkuOTJDMTMuNDUgMTEuOSAxMyAxMi41IDEzIDE0aC0ydi0uNWMwLTEuMS40NS0yLjEgMS4xNy0yLjgzbDEuMjQtMS4yNmMuMzctLjM2LjU5LS44Ni41OS0xLjQxIDAtMS4xLS45LTItMi0ycy0yIC45LTIgMkg4YzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAuODgtLjM2IDEuNjgtLjkzIDIuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2F0aW9uT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMTEuNzUgMTEuNDctLjExLS4xMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNi41QTIuNSAyLjUgMCAwIDEgMTQuNSA5YzAgLjc0LS4zMyAxLjM5LS44MyAxLjg1bDMuNjMgMy42M2MuOTgtMS44NiAxLjctMy44IDEuNy01LjQ4IDAtMy44Ny0zLjEzLTctNy03YTcgNyAwIDAgMC01LjA0IDIuMTVsMy4xOSAzLjE5Yy40Ni0uNTIgMS4xMS0uODQgMS44NS0uODR6bTQuMzcgOS42LTQuNjMtNC42My0uMTEtLjExTDMuMjcgMyAyIDQuMjdsMy4xOCAzLjE4QzUuMDcgNy45NSA1IDguNDcgNSA5YzAgNS4yNSA3IDEzIDcgMTNzMS42Ny0xLjg1IDMuMzgtNC4zNUwxOC43MyAyMSAyMCAxOS43M2wtMy42My0zLjYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhdGlvbk9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM4LjEzIDIgNSA1LjEzIDUgOWMwIDUuMjUgNyAxMyA3IDEzczctNy43NSA3LTEzYzAtMy44Ny0zLjEzLTctNy03em0wIDkuNWEyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFpbExvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA5Ljk3VjZjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTJ2LTUuMDNjMC0yLjc2IDIuMjQtNSA1LTVoMXpNMjAgOGwtOCA1LTgtNVY2bDggNSA4LTV2MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTV2LTFjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXptLTEgMGgtMnYtMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFpbE91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY4bDggNSA4LTV2MTB6bS04LTdMNCA2aDE2bC04IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcmtDaGF0UmVhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjM0IDIwLTMuNTQtMy41NCAxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNEwyMyAxNC4zNCAxNy4zNCAyMHpNMTIgMTdhNi45OTUgNi45OTUgMCAwIDEgMTAtNi4zMlY0YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGg2YzAtLjE3LjAxLS4zMy4wMy0uNUE0LjA3IDQuMDcgMCAwIDEgMTIgMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcmtDaGF0VW5yZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNi45OFYxNmMwIDEuMS0uOSAyLTIgMkg2bC00IDRWNGMwLTEuMS45LTIgMi0yaDEwLjFBNS4wMDIgNS4wMDIgMCAwIDAgMTkgOGMxLjEzIDAgMi4xNi0uMzkgMy0xLjAyek0xNiAzYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTMtMS4zNC0zLTMtMy0zIDEuMzQtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYXJrRW1haWxSZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTlhNi45OTUgNi45OTUgMCAwIDEgMTAtNi4zMlY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoOC4wOGMtLjA1LS4zMy0uMDgtLjY2LS4wOC0xek00IDZsOCA1IDgtNXYybC04IDUtOC01VjZ6bTEzLjM0IDE2LTMuNTQtMy41NCAxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNEwyMyAxNi4zNCAxNy4zNCAyMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFya0VtYWlsVW5yZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgOC45OFYxOGMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoMTAuMWMtLjA2LjMyLS4xLjY2LS4xIDEgMCAxLjQ4LjY1IDIuNzkgMS42NyAzLjcxTDEyIDExIDQgNnYybDggNSA1LjMtMy4zMmMuNTQuMiAxLjEuMzIgMS43LjMyIDEuMTMgMCAyLjE2LS4zOSAzLTEuMDJ6TTE2IDVjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtMy0xLjM0LTMtMy0zLTMgMS4zNC0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcmtVbnJlYWRDaGF0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOVwiLFwiY3lcIjpcIjNcIixcInJcIjpcIjNcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA4VjZoOS4wM2E0LjkwNiA0LjkwNiAwIDAgMS0uOTItNEg0LjAxYTIgMiAwIDAgMC0yIDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNi45N0MyMS4xNiA3LjYxIDIwLjEzIDggMTkgOEg2em04IDZINnYtMmg4djJ6bTQtM0g2VjloMTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWVzc2FnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMiAxMkg2di0yaDEydjJ6bTAtM0g2VjloMTJ2MnptMC0zSDZWNmgxMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb2JpbGVTY3JlZW5TaGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2MThjMCAxLjEuODkgMiAxLjk5IDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMTlIN1Y1aDEwdjE0em0tNC4yLTUuNzh2MS43NWwzLjItMi45OUwxMi44IDl2MS43Yy0zLjExLjQzLTQuMzUgMi41Ni00LjggNC43IDEuMTEtMS41IDIuNTgtMi4xOCA0LjgtMi4xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9yZVRpbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA4djZsNC43IDIuOS44LTEuMi00LTIuNFY4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy45MiAxMkE2Ljk1NyA2Ljk1NyAwIDAgMSAxMSAyMGMtMy45IDAtNy0zLjEtNy03czMuMS03IDctN2MuNyAwIDEuMzcuMSAyIC4yOVY0LjIzYy0uNjQtLjE1LTEuMzEtLjIzLTItLjIzLTUgMC05IDQtOSA5czQgOSA5IDlhOC45NjMgOC45NjMgMCAwIDAgOC45NC0xMGgtMi4wMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNVYyaC0ydjNoLTN2MmgzdjNoMlY3aDNWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi44MiAxM0gxMXYtMkg2LjgyQzYuNCA5Ljg0IDUuMyA5IDQgOWMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgM2MxLjMgMCAyLjQtLjg0IDIuODItMnpNNCAxM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMyAxMi00LTN2MmgtNC4wNWMtLjUtNS4wNS00Ljc2LTktOS45NS05djJjNC40MiAwIDggMy41OCA4IDhzLTMuNTggOC04IDh2MmM1LjE5IDAgOS40NS0zLjk1IDkuOTUtOUgxOXYybDQtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9TaW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45OSA1YzAtMS4xLS44OS0yLTEuOTktMmgtN0w3LjY2IDUuMzQgMTkgMTYuNjggMTguOTkgNXpNMy42NSAzLjg4IDIuMzggNS4xNSA1IDcuNzdWMTljMCAxLjEuOSAyIDIgMmgxMC4wMWMuMzUgMCAuNjctLjEuOTYtLjI2bDEuODggMS44OCAxLjI3LTEuMjdMMy42NSAzLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYXVzZVByZXNlbnRhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE5LjFIM1Y1aDE4djE0LjF6TTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yMSAxOS4xSDNWNWgxOHYxNC4xek0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA4aDJ2OEg5em00IDBoMnY4aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb25BZGREaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjhcIixcInJcIjpcIjRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMjB2LTJjMC0yLjMtNC4xLTMuNy02LjktMy45bDYgNS45aC45em0tMTEuNi01LjVDOS4yIDE1LjEgNyAxNi4zIDcgMTh2Mmg5LjlsNCA0IDEuMy0xLjMtMjEtMjAuOUwwIDMuMWw0IDRWMTBIMXYyaDN2M2gydi0zaDIuOWwyLjUgMi41ek02IDEwdi0uOWwuOS45SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcnNvblNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI4XCIsXCJyXCI6XCI0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjM1IDE0LjAxQzcuNjIgMTMuOTEgMiAxNS4yNyAyIDE4djJoOS41NGMtMi40Ny0yLjc2LTEuMjMtNS44OS0xLjE5LTUuOTl6TTE5LjQzIDE4LjAyYy4zNi0uNTkuNTctMS4yOC41Ny0yLjAyIDAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0IDEuNzkgNCA0IDRjLjc0IDAgMS40My0uMjIgMi4wMi0uNTdMMjAuNTkgMjIgMjIgMjAuNTlsLTIuNTctMi41N3pNMTYgMThjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZURpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMzQgMTQuNTQtMS40My0xLjQzYy41Ni0uNzMgMS4wNS0xLjUgMS40Ny0yLjMybC0yLjItMi4yYy0uMjgtLjI4LS4zNi0uNjctLjI1LTEuMDIuMzctMS4xMi41Ny0yLjMyLjU3LTMuNTcgMC0uNTUuNDUtMSAxLTFIMjBjLjU1IDAgMSAuNDUgMSAxIDAgMy45OC0xLjM3IDcuNjQtMy42NiAxMC41NHptLTIuODIgMi44MUExNi44ODQgMTYuODg0IDAgMCAxIDQgMjFjLS41NSAwLTEtLjQ1LTEtMXYtMy40OWMwLS41NS40NS0xIDEtMSAxLjI0IDAgMi40NS0uMiAzLjU3LS41Ny4zNS0uMTIuNzUtLjAzIDEuMDIuMjRsMi4yIDIuMmMuODEtLjQyIDEuNTgtLjkgMi4zLTEuNDZMMS4zOSA0LjIybDEuNDItMS40MUwyMS4xOSAyMS4ybC0xLjQxIDEuNDEtNS4yNi01LjI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZUVuYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy4zOCAxMC43OS0yLjItMi4yYy0uMjgtLjI4LS4zNi0uNjctLjI1LTEuMDIuMzctMS4xMi41Ny0yLjMyLjU3LTMuNTcgMC0uNTUuNDUtMSAxLTFIMjBjLjU1IDAgMSAuNDUgMSAxIDAgOS4zOS03LjYxIDE3LTE3IDE3LS41NSAwLTEtLjQ1LTEtMXYtMy40OWMwLS41NS40NS0xIDEtMSAxLjI0IDAgMi40NS0uMiAzLjU3LS41Ny4zNS0uMTIuNzUtLjAzIDEuMDIuMjRsMi4yIDIuMmMyLjgzLTEuNDUgNS4xNS0zLjc2IDYuNTktNi41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjYyIDEwLjc5YzEuNDQgMi44MyAzLjc2IDUuMTQgNi41OSA2LjU5bDIuMi0yLjJjLjI3LS4yNy42Ny0uMzYgMS4wMi0uMjQgMS4xMi4zNyAyLjMzLjU3IDMuNTcuNTcuNTUgMCAxIC40NSAxIDFWMjBjMCAuNTUtLjQ1IDEtMSAxLTkuMzkgMC0xNy03LjYxLTE3LTE3IDAtLjU1LjQ1LTEgMS0xaDMuNWMuNTUgMCAxIC40NSAxIDEgMCAxLjI1LjIgMi40NS41NyAzLjU3LjExLjM1LjAzLjc0LS4yNSAxLjAybC0yLjIgMi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZWxpbmtFcmFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgOC4yLTEtMS00IDQtNC00LTEgMSA0IDQtNCA0IDEgMSA0LTQgNCA0IDEtMS00LTQgNC00ek0xOSAxSDljLTEuMSAwLTIgLjktMiAydjNoMlY0aDEwdjE2SDl2LTJIN3YzYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmVsaW5rTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMUg5Yy0xLjEgMC0yIC45LTIgMnYzaDJWNGgxMHYxNkg5di0ySDd2M2MwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bS04LjIgMTBWOS41QzEwLjggOC4xIDkuNCA3IDggN1M1LjIgOC4xIDUuMiA5LjVWMTFjLS42IDAtMS4yLjYtMS4yIDEuMnYzLjVjMCAuNy42IDEuMyAxLjIgMS4zaDUuNWMuNyAwIDEuMy0uNiAxLjMtMS4ydi0zLjVjMC0uNy0uNi0xLjMtMS4yLTEuM3ptLTEuMyAwaC0zVjkuNWMwLS44LjctMS4zIDEuNS0xLjNzMS41LjUgMS41IDEuM1YxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmVsaW5rUmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuMSA3LjctMSAxYzEuOCAxLjggMS44IDQuNiAwIDYuNWwxIDFjMi41LTIuMyAyLjUtNi4xIDAtOC41ek0xOCA5LjhsLTEgMWMuNS43LjUgMS42IDAgMi4zbDEgMWMxLjItMS4yIDEuMi0zIDAtNC4zek0xNCAxSDRjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxOUg0VjRoMTB2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lbGlua1NldHVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuODIgMTIuNDljLjAyLS4xNi4wNC0uMzIuMDQtLjQ5IDAtLjE3LS4wMi0uMzMtLjA0LS40OWwxLjA4LS44MmMuMS0uMDcuMTItLjIxLjA2LS4zMmwtMS4wMy0xLjczYy0uMDYtLjExLS4yLS4xNS0uMzEtLjExbC0xLjI4LjVjLS4yNy0uMi0uNTYtLjM2LS44Ny0uNDlsLS4yLTEuMzNjMC0uMTItLjExLS4yMS0uMjQtLjIxSDUuOThhLjI2LjI2IDAgMCAwLS4yNi4yMWwtLjIgMS4zMmMtLjMxLjEyLS42LjMtLjg3LjQ5bC0xLjI4LS41Yy0uMTItLjA1LS4yNSAwLS4zMS4xMWwtMS4wMyAxLjczYy0uMDYuMTItLjAzLjI1LjA3LjMzbDEuMDguODJjLS4wMi4xNi0uMDMuMzMtLjAzLjQ5IDAgLjE3LjAyLjMzLjA0LjQ5bC0xLjA5LjgzYy0uMS4wNy0uMTIuMjEtLjA2LjMybDEuMDMgMS43M2MuMDYuMTEuMi4xNS4zMS4xMWwxLjI4LS41Yy4yNy4yLjU2LjM2Ljg3LjQ5bC4yIDEuMzJjLjAxLjEyLjEyLjIxLjI1LjIxaDIuMDZjLjEzIDAgLjI0LS4wOS4yNS0uMjFsLjItMS4zMmMuMzEtLjEyLjYtLjMuODctLjQ5bDEuMjguNWMuMTIuMDUuMjUgMCAuMzEtLjExbDEuMDMtMS43M2MuMDYtLjExLjA0LS4yNC0uMDYtLjMybC0xLjEtLjgzek03IDEzLjc1Yy0uOTkgMC0xLjgtLjc4LTEuOC0xLjc1cy44MS0xLjc1IDEuOC0xLjc1IDEuOC43OCAxLjggMS43NVM4IDEzLjc1IDcgMTMuNzV6TTE4IDEuMDEgOCAxYy0xLjEgMC0yIC45LTIgMnYzaDJWNWgxMHYxNEg4di0xSDZ2M2MwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvcnRhYmxlV2lmaU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41NiAxNC4yNGMuMjgtLjY5LjQ0LTEuNDUuNDQtMi4yNCAwLTMuMzEtMi42OS02LTYtNi0uNzkgMC0xLjU1LjE2LTIuMjQuNDRsMS42MiAxLjYyYy4yLS4wMy40MS0uMDYuNjItLjA2YTMuOTk5IDMuOTk5IDAgMCAxIDMuOTUgNC42M2wxLjYxIDEuNjF6TTEyIDRjNC40MiAwIDggMy41OCA4IDggMCAxLjM1LS4zNSAyLjYyLS45NSAzLjc0bDEuNDcgMS40N0E5Ljg2IDkuODYgMCAwIDAgMjIgMTJjMC01LjUyLTQuNDgtMTAtMTAtMTAtMS45MSAwLTMuNjkuNTUtNS4yMSAxLjQ3bDEuNDYgMS40NkM5LjM3IDQuMzQgMTAuNjUgNCAxMiA0ek0zLjI3IDIuNSAyIDMuNzdsMi4xIDIuMUMyLjc5IDcuNTcgMiA5LjY5IDIgMTJjMCAzLjcgMi4wMSA2LjkyIDQuOTkgOC42NWwxLTEuNzNDNS42MSAxNy41MyA0IDE0Ljk2IDQgMTJjMC0xLjc2LjU3LTMuMzggMS41My00LjY5bDEuNDMgMS40NEM2LjM2IDkuNjggNiAxMC44IDYgMTJjMCAyLjIyIDEuMjEgNC4xNSAzIDUuMTlsMS0xLjc0Yy0xLjE5LS43LTItMS45Ny0yLTMuNDUgMC0uNjUuMTctMS4yNS40NC0xLjc5bDEuNTggMS41OEwxMCAxMmMwIDEuMS45IDIgMiAybC4yMS0uMDIuMDEuMDEgNy41MSA3LjUxTDIxIDIwLjIzIDQuMjcgMy41bC0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFByZXNlbnRUb0FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjExIDAtMiAuODktMiAydjE0YzAgMS4xMS44OSAyIDIgMmgxOGMxLjExIDAgMi0uODkgMi0yVjVjMC0xLjExLS44OS0yLTItMnptMCAxNi4wMkgzVjQuOThoMTh2MTQuMDR6TTEwIDEySDhsNC00IDQgNGgtMnY0aC00di00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQcmludERpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4xIDE3SDIydi02YzAtMS43LTEuMy0zLTMtM2gtOWw5LjEgOXptLS4xLTdjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptLTEtM1YzSDZ2MS4xTDkgN3pNMS4yIDEuOCAwIDNsNC45IDVDMy4zIDguMSAyIDkuNCAyIDExdjZoNHY0aDExLjlsMyAzIDEuMy0xLjMtMjEtMjAuOXpNOCAxOXYtNWgyLjlsNSA1SDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFFyQ29kZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyMWgtMnYtMmgydjJ6bS0yLTdoLTJ2NWgydi01em04LTJoLTJ2NGgydi00em0tMi0yaC0ydjJoMnYtMnpNNyAxMkg1djJoMnYtMnptLTItMkgzdjJoMnYtMnptNy01aDJWM2gtMnYyem0tNy41LS41djNoM3YtM2gtM3pNOSA5SDNWM2g2djZ6bS00LjUgNy41djNoM3YtM2gtM3pNOSAyMUgzdi02aDZ2NnptNy41LTE2LjV2M2gzdi0zaC0zek0yMSA5aC02VjNoNnY2em0tMiAxMHYtM2gtNHYyaDJ2M2g0di0yaC0yem0tMi03aC00djJoNHYtMnptLTQtMkg3djJoMnYyaDJ2LTJoMnYtMnptMS0xVjdoLTJWNWgtMnY0aDR6TTYuNzUgNS4yNWgtMS41djEuNWgxLjV2LTEuNXptMCAxMmgtMS41djEuNWgxLjV2LTEuNXptMTItMTJoLTEuNXYxLjVoMS41di0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFFyQ29kZVNjYW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgNi41djNoLTN2LTNoM00xMSA1SDV2Nmg2VjV6bS0xLjUgOS41djNoLTN2LTNoM00xMSAxM0g1djZoNnYtNnptNi41LTYuNXYzaC0zdi0zaDNNMTkgNWgtNnY2aDZWNXptLTYgOGgxLjV2MS41SDEzVjEzem0xLjUgMS41SDE2VjE2aC0xLjV2LTEuNXpNMTYgMTNoMS41djEuNUgxNlYxM3ptLTMgM2gxLjV2MS41SDEzVjE2em0xLjUgMS41SDE2VjE5aC0xLjV2LTEuNXpNMTYgMTZoMS41djEuNUgxNlYxNnptMS41LTEuNUgxOVYxNmgtMS41di0xLjV6bTAgM0gxOVYxOWgtMS41di0xLjV6TTIyIDdoLTJWNGgtM1YyaDV2NXptMCAxNXYtNWgtMnYzaC0zdjJoNXpNMiAyMmg1di0ySDR2LTNIMnY1ek0yIDJ2NWgyVjRoM1YySDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFFyQ29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTFoOFYzSDN2OHptMi02aDR2NEg1VjV6TTMgMjFoOHYtOEgzdjh6bTItNmg0djRINXYtNHpNMTMgM3Y4aDhWM2gtOHptNiA2aC00VjVoNHY0ek0xOSAxOWgydjJoLTJ6TTEzIDEzaDJ2MmgtMnpNMTUgMTVoMnYyaC0yek0xMyAxN2gydjJoLTJ6TTE1IDE5aDJ2MmgtMnpNMTcgMTdoMnYyaC0yek0xNyAxM2gydjJoLTJ6TTE5IDE1aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVhZE1vcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3aDl2MmgtOXpNMTMgMTVoOXYyaC05ek0xNiAxMWg2djJoLTZ6TTEzIDEyIDggN3Y0SDJ2Mmg2djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJpbmdWb2x1bWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMy43MSAxNi42N0ExNi45NzEgMTYuOTcxIDAgMCAwIDEyIDEyQzcuNDYgMTIgMy4zNCAxMy43OC4yOSAxNi42N2MtLjE4LjE4LS4yOS40My0uMjkuNzEgMCAuMjguMTEuNTMuMjkuNzFsMi40OCAyLjQ4Yy4xOC4xOC40My4yOS43MS4yOS4yNyAwIC41Mi0uMTEuNy0uMjguNzktLjc0IDEuNjktMS4zNiAyLjY2LTEuODUuMzMtLjE2LjU2LS41LjU2LS45di0zLjFjMS40NS0uNDggMy0uNzMgNC42LS43M3MzLjE1LjI1IDQuNi43MnYzLjFjMCAuMzkuMjMuNzQuNTYuOS45OC40OSAxLjg3IDEuMTIgMi42NiAxLjg1LjE4LjE4LjQzLjI4LjcuMjguMjggMCAuNTMtLjExLjcxLS4yOWwyLjQ4LTIuNDhjLjE4LS4xOC4yOS0uNDMuMjktLjcxYS45OS45OSAwIDAgMC0uMjktLjd6TTIxLjE2IDYuMjZsLTEuNDEtMS40MS0zLjU2IDMuNTUgMS40MSAxLjQxczMuNDUtMy41MiAzLjU2LTMuNTV6TTEzIDJoLTJ2NWgyVjJ6TTYuNCA5LjgxIDcuODEgOC40IDQuMjYgNC44NCAyLjg0IDYuMjZjLjExLjAzIDMuNTYgMy41NSAzLjU2IDMuNTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJzc0ZlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjYuMThcIixcImN5XCI6XCIxNy44MlwiLFwiclwiOlwiMi4xOFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDQuNDR2Mi44M2M3LjAzIDAgMTIuNzMgNS43IDEyLjczIDEyLjczaDIuODNjMC04LjU5LTYuOTctMTUuNTYtMTUuNTYtMTUuNTZ6bTAgNS42NnYyLjgzYzMuOSAwIDcuMDcgMy4xNyA3LjA3IDcuMDdoMi44M2MwLTUuNDctNC40My05LjktOS45LTkuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUnR0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOS4wMyAzLTEuMTEgNy4wN2gyLjYybC43LTQuNWgyLjU4TDExLjggMTguNDNIOS40N0w5LjA2IDIxaDcuMjdsLjQtMi41N2gtMi4zNWwyLTEyLjg2aDIuNThsLS43MSA0LjVoMi42NUwyMiAzSDkuMDN6TTggNUg0bC0uMzEgMmg0TDggNXptLS42MSA0aC00bC0uMzEgMmg0bC4zMS0yem0uOTIgOGgtNkwyIDE5aDZsLjMxLTJ6bS42Mi00aC02bC0uMzEgMmg2LjAxbC4zLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjcmVlblNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOGMxLjEgMCAxLjk5LS45IDEuOTktMkwyMiA2YTIgMiAwIDAgMC0yLTJINGMtMS4xMSAwLTIgLjg5LTIgMnYxMGEyIDIgMCAwIDAgMiAySDB2MmgyNHYtMmgtNHptLTctMy41M3YtMi4xOWMtMi43OCAwLTQuNjEuODUtNiAyLjcyLjU2LTIuNjcgMi4xMS01LjMzIDYtNS44N1Y3bDQgMy43My00IDMuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbmRUaW1lRXh0ZW5zaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmMwLTEuMS0uOS0yLTItMmgtNGEyLjUgMi41IDAgMCAwLTUgMEg1LjAxYy0xLjEgMC0yIC45LTIgMnYzLjhDNS43IDkuOCA2IDExLjk2IDYgMTIuNXMtLjI5IDIuNy0zIDIuN1YxOWMwIDEuMS45IDIgMiAyaDMuOGMwLTIuMTYgMS4zNy0yLjc4IDIuMi0yLjk0di05LjNsOSA0LjVWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTJ2NGw0IDEtNCAxdjRsMTAtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VudGltZW50U2F0aXNmaWVkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0wLTIuNWMyLjMzIDAgNC4zMi0xLjQ1IDUuMTItMy41aC0xLjY3Yy0uNjkgMS4xOS0xLjk3IDItMy40NSAycy0yLjc1LS44MS0zLjQ1LTJINi44OGMuOCAyLjA1IDIuNzkgMy41IDUuMTIgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDEwLjVoMnYxaC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTEwIDYuNUg2LjV2Ljc1SDljLjU1IDAgMSAuNDUgMSAxVjE0YzAgLjU1LS40NSAxLTEgMUg1di0xLjVoMy41di0uNzVINmMtLjU1IDAtMS0uNDUtMS0xVjEwYzAtLjU1LjQ1LTEgMS0xaDR2MS41em0zIDQuNWgtMlY5aDJ2NnptNi0zYzAgLjU1LS40NSAxLTEgMWgtMi41djJIMTRWOWg0Yy41NSAwIDEgLjQ1IDEgMXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGVha2VyUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgNy4wNyA4LjQzIDguNWMuOTEtLjkxIDIuMTgtMS40OCAzLjU3LTEuNDhzMi42Ni41NyAzLjU3IDEuNDhMMTcgNy4wN0MxNS43MiA1Ljc5IDEzLjk1IDUgMTIgNXMtMy43Mi43OS01IDIuMDd6TTEyIDFDOC45OCAxIDYuMjQgMi4yMyA0LjI1IDQuMjFsMS40MSAxLjQxQzcuMjggNCA5LjUzIDMgMTIgM3M0LjcyIDEgNi4zNCAyLjYybDEuNDEtMS40MUExMC45NjMgMTAuOTYzIDAgMCAwIDEyIDF6bTIuODYgOS4wMUw5LjE0IDEwQzguNTEgMTAgOCAxMC41MSA4IDExLjE0djkuNzFjMCAuNjMuNTEgMS4xNCAxLjE0IDEuMTRoNS43MWMuNjMgMCAxLjE0LS41MSAxLjE0LTEuMTR2LTkuNzFjLjAxLS42My0uNS0xLjEzLTEuMTMtMS4xM3pNMTUgMjBIOXYtOGg2djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb2tlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgN2MwIDIuMjEtMS43OSA0LTQgNFM4IDkuMjEgOCA3czEuNzktNCA0LTQgNCAxLjc5IDQgNHptLTkgNmMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTEwIDBjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdGF5Q3VycmVudExhbmRzY2FwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuMDEgNyAxIDE3YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMkgzYy0xLjEgMC0xLjk5LjktMS45OSAyek0xOSA3djEwSDVWN2gxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RheUN1cnJlbnRQb3J0cmFpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEuMDEgNyAxYy0xLjEgMC0xLjk5LjktMS45OSAydjE4YzAgMS4xLjg5IDIgMS45OSAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE3IDE5SDdWNWgxMHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RheVByaW1hcnlMYW5kc2NhcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjAxIDcgMSAxN2MwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJIM2MtMS4xIDAtMS45OS45LTEuOTkgMnpNMTkgN3YxMEg1VjdoMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0YXlQcmltYXJ5UG9ydHJhaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMS45OS45LTEuOTkgMnYxOGMwIDEuMS44OSAyIDEuOTkgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOUg3VjVoMTB2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0b3BTY3JlZW5TaGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuMjIgMTguMDIgMiAySDI0di0yaC0yLjc4em0uNzctMiAuMDEtMTBhMiAyIDAgMCAwLTItMkg3LjIybDUuMjMgNS4yM2MuMTgtLjA0LjM2LS4wNy41NS0uMVY3LjAybDQgMy43My0xLjU4IDEuNDcgNS41NCA1LjU0Yy42MS0uMzMgMS4wMy0uOTkgMS4wMy0xLjc0ek0yLjM5IDEuNzMgMS4xMSAzbDEuNTQgMS41NGMtLjQuMzYtLjY1Ljg5LS42NSAxLjQ4djEwYTIgMiAwIDAgMCAyIDJIMHYyaDE4LjEzbDIuNzEgMi43MSAxLjI3LTEuMjdMMi4zOSAxLjczek03IDE1LjAyYy4zMS0xLjQ4LjkyLTIuOTUgMi4wNy00LjA2bDEuNTkgMS41OWMtMS41NC4zOC0yLjcgMS4xOC0zLjY2IDIuNDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3YXBDYWxscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDQtNCA0aDN2N2MwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJWOGMwLTIuMjEtMS43OS00LTQtNFM1IDUuNzkgNSA4djdIMmw0IDQgNC00SDdWOGMwLTEuMS45LTIgMi0yczIgLjkgMiAydjdjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNFY4aDNsLTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dHNtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek05IDExSDdWOWgydjJ6bTQgMGgtMlY5aDJ2MnptNCAwaC0yVjloMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVbnN1YnNjcmliZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAxM2MtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNSAzLjUtMS41NyAzLjUtMy41LTEuNTctMy41LTMuNS0zLjV6bTIgNGgtNHYtMWg0djF6bS02Ljk1IDBjLS4wMi0uMTctLjA1LS4zMy0uMDUtLjUgMC0yLjc2IDIuMjQtNSA1LTUgLjkyIDAgMS43Ni4yNiAyLjUuNjlWNWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDguNTV6TTEyIDEwLjUgNSA3VjVsNyAzLjVMMTkgNXYybC03IDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVm9pY2VtYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSA2QzE1LjQ2IDYgMTMgOC40NiAxMyAxMS41YzAgMS4zMy40NyAyLjU1IDEuMjYgMy41SDkuNzRjLjc5LS45NSAxLjI2LTIuMTcgMS4yNi0zLjVDMTEgOC40NiA4LjU0IDYgNS41IDZTMCA4LjQ2IDAgMTEuNSAyLjQ2IDE3IDUuNSAxN2gxM2MzLjA0IDAgNS41LTIuNDYgNS41LTUuNVMyMS41NCA2IDE4LjUgNnptLTEzIDlDMy41NyAxNSAyIDEzLjQzIDIgMTEuNVMzLjU3IDggNS41IDggOSA5LjU3IDkgMTEuNSA3LjQzIDE1IDUuNSAxNXptMTMgMGMtMS45MyAwLTMuNS0xLjU3LTMuNS0zLjVTMTYuNTcgOCAxOC41IDggMjIgOS41NyAyMiAxMS41IDIwLjQzIDE1IDE4LjUgMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZwbktleU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjgzIDE4SDIxdi00aDJ2LTRIMTIuODNsOCA4em0tMS4wNSA0LjYxIDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIybDIuNTkgMi41OUE2LjAxMiA2LjAxMiAwIDAgMCAxIDEyYzAgMy4zMSAyLjY5IDYgNiA2IDIuMjEgMCA0LjE1LTEuMiA1LjE4LTIuOTlsNy42IDcuNnpNOC45OSAxMS44MmMuMDEuMDYuMDEuMTIuMDEuMTggMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yYy4wNiAwIC4xMiAwIC4xOC4wMWwxLjgxIDEuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZwbktleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjY1IDEwQTUuOTkgNS45OSAwIDAgMCA3IDZjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDZhNS45OSA1Ljk5IDAgMCAwIDUuNjUtNEgxN3Y0aDR2LTRoMnYtNEgxMi42NXpNNyAxNGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmlDYWxsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNC45NUMyMS43OSA0Ljc4IDE5LjY3IDMgMTYuNSAzYy0zLjE4IDAtNS4yOSAxLjc4LTUuNSAxLjk1TDE2LjUgMTIgMjIgNC45NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTUuNTFjLTEuMjQgMC0yLjQ1LS4yLTMuNTctLjU3YS45OTQuOTk0IDAgMCAwLTEuMDIuMjRsLTIuMiAyLjJhMTUuMTQ5IDE1LjE0OSAwIDAgMS02LjU5LTYuNTlsMi4yLTIuMmMuMjgtLjI4LjM2LS42Ny4yNS0xLjAyQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjQ5YzAtLjU1LS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMiAxMGgtNHY0aC0ydi00SDd2LTJoNFY3aDJ2NGg0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZENpcmNsZU91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3aC0ydjRIN3YyaDR2NGgydi00aDR2LTJoLTRWN3ptLTEtNUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTUgMTFoLTR2NGgtMnYtNEg3di0yaDRWN2gydjRoNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDExaDh2Mkg4em0xMi4xIDFIMjJjMC0yLjc2LTIuMjQtNS01LTVoLTR2MS45aDRjMS43MSAwIDMuMSAxLjM5IDMuMSAzLjF6TTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTE5IDEyaC0ydjNoLTN2MmgzdjNoMnYtM2gzdi0yaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxM2gtNnY2aC0ydi02SDV2LTJoNlY1aDJ2Nmg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFtcFN0b3JpZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDRoMTB2MTVIN3pNMyA2aDJ2MTFIM3pNMTkgNmgydjExaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcmNoaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuNTQgNS4yMy0xLjM5LTEuNjhDMTguODggMy4yMSAxOC40NyAzIDE4IDNINmMtLjQ3IDAtLjg4LjIxLTEuMTYuNTVMMy40NiA1LjIzQzMuMTcgNS41NyAzIDYuMDIgMyA2LjVWMTljMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2LjVjMC0uNDgtLjE3LS45My0uNDYtMS4yN3pNMTIgMTcuNSA2LjUgMTJIMTB2LTJoNHYyaDMuNUwxMiAxNy41ek01LjEyIDVsLjgxLTFoMTJsLjk0IDFINS4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXR0cmlidXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4LjVjLS45MSAwLTIuNzUuNDYtMi43NSAxLjM4djQuNjJoMS41VjE5aDIuNXYtNC41aDEuNVY5Ljg4YzAtLjkxLTEuODQtMS4zOC0yLjc1LTEuMzh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmFja3NwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgM0g3Yy0uNjkgMC0xLjIzLjM1LTEuNTkuODhMMCAxMmw1LjQxIDguMTFjLjM2LjUzLjkuODkgMS41OS44OWgxNWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMyAxMi41OUwxNy41OSAxNyAxNCAxMy40MSAxMC40MSAxNyA5IDE1LjU5IDEyLjU5IDEyIDkgOC40MSAxMC40MSA3IDE0IDEwLjU5IDE3LjU5IDcgMTkgOC40MSAxNS40MSAxMiAxOSAxNS41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmFsbG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEzIDkuNWg1di0yaC01djJ6bTAgN2g1di0yaC01djJ6bTYgNC41SDVjLTEuMSAwLTItLjktMi0yVjVjMC0xLjEuOS0yIDItMmgxNGMxLjEgMCAyIC45IDIgMnYxNGMwIDEuMS0uOSAyLTIgMnpNNiAxMWg1VjZINnY1em0xLTRoM3YzSDdWN3pNNiAxOGg1di01SDZ2NXptMS00aDN2M0g3di0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCaW90ZWNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOWMtMS4xIDAtMiAuOS0yIDJoMTRjMC0xLjEtLjktMi0yLTJoLTR2LTJoM2MxLjEgMCAyLS45IDItMmgtOGMtMS42NiAwLTMtMS4zNC0zLTMgMC0xLjA5LjU5LTIuMDQgMS40Ni0yLjU2QzguMTcgOS4wMyA4IDguNTQgOCA4YzAtLjIxLjA0LS40Mi4wOS0uNjJBNS4wMSA1LjAxIDAgMCAwIDUgMTJjMCAyLjc2IDIuMjQgNSA1IDV2Mkg3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41NiA1LjUxQzExLjkxIDUuNTQgMTMgNi42NCAxMyA4YzAgLjc1LS4zMyAxLjQxLS44NSAxLjg3bC41OSAxLjYyLjk0LS4zNC4zNC45NCAxLjg4LS42OC0uMzQtLjk0Ljk0LS4zNC0yLjc0LTcuNTMtLjk0LjM0LS4zNC0uOTQtMS44OC42OC4zNC45NC0uOTQuMzUuNTYgMS41NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMC41XCIsXCJjeVwiOlwiOFwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJsb2NrRmxpcHBlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEyYzAtNS41LTQuNS0xMC0xMC0xMFMyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTB6TTUuNyA3LjFsMTEuMiAxMS4yYy0xLjMgMS4xLTMgMS43LTQuOSAxLjctNC40IDAtOC0zLjYtOC04IDAtMS45LjYtMy42IDEuNy00Ljl6TTIwIDEyYzAgMS45LS42IDMuNi0xLjcgNC45TDcuMSA1LjdDOC40IDQuNiAxMC4xIDQgMTIgNGM0LjQgMCA4IDMuNiA4IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNNCAxMmMwLTQuNDIgMy41OC04IDgtOCAxLjg1IDAgMy41NS42MyA0LjkgMS42OUw1LjY5IDE2LjlBNy45MDIgNy45MDIgMCAwIDEgNCAxMnptOCA4Yy0xLjg1IDAtMy41NS0uNjMtNC45LTEuNjlMMTguMzEgNy4xQTcuOTAyIDcuOTAyIDAgMCAxIDIwIDEyYzAgNC40Mi0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb2x0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyMWgtMWwxLTdINy41Yy0uNTggMC0uNTctLjMyLS4zOC0uNjYuMTktLjM0LjA1LS4wOC4wNy0uMTJDOC40OCAxMC45NCAxMC40MiA3LjU0IDEzIDNoMWwtMSA3aDMuNWMuNDkgMCAuNTYuMzMuNDcuNTFsLS4wNy4xNUMxMi45NiAxNy41NSAxMSAyMSAxMSAyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FsY3VsYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS01Ljk3IDQuMDZMMTQuMDkgNmwxLjQxIDEuNDFMMTYuOTEgNmwxLjA2IDEuMDYtMS40MSAxLjQxIDEuNDEgMS40MS0xLjA2IDEuMDYtMS40MS0xLjQtMS40MSAxLjQxLTEuMDYtMS4wNiAxLjQxLTEuNDEtMS40MS0xLjQyem0tNi43OC42Nmg1djEuNWgtNXYtMS41ek0xMS41IDE2aC0ydjJIOHYtMkg2di0xLjVoMnYtMmgxLjV2MmgyVjE2em02LjUgMS4yNWgtNXYtMS41aDV2MS41em0wLTIuNWgtNXYtMS41aDV2MS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGFuZ2VDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0uMDYgMTd2LTIuMDFIMTJjLTEuMjggMC0yLjU2LS40OS0zLjU0LTEuNDZhNS4wMDYgNS4wMDYgMCAwIDEtLjY0LTYuMjlsMS4xIDEuMWMtLjcxIDEuMzMtLjUzIDMuMDEuNTkgNC4xMy43LjcgMS42MiAxLjAzIDIuNTQgMS4wMXYtMi4xNGwyLjgzIDIuODNMMTIuMDYgMTl6bTQuMTEtNC4yNC0xLjEtMS4xYy43MS0xLjMzLjUzLTMuMDEtLjU5LTQuMTNBMy40ODIgMy40ODIgMCAwIDAgMTIgOC41aC0uMDZ2Mi4xNUw5LjExIDcuODMgMTEuOTQgNXYyLjAyYzEuMy0uMDIgMi42MS40NSAzLjYgMS40NSAxLjcgMS43IDEuOTEgNC4zNS42MyA2LjI5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbGVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDYuNDEgMTcuNTkgNSAxMiAxMC41OSA2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMiAxMy40MSAxNy41OSAxOSAxOSAxNy41OSAxMy40MSAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29udGVudENvcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxSDRjLTEuMSAwLTIgLjktMiAydjE0aDJWM2gxMlYxem0zIDRIOGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxMWMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE2SDhWN2gxMXYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29udGVudEN1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNlwiLFwiY3lcIjpcIjE4XCIsXCJyXCI6XCIyXCIsXCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiLjVcIixcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiMlwiLFwiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjY0IDcuNjRjLjIzLS41LjM2LTEuMDUuMzYtMS42NCAwLTIuMjEtMS43OS00LTQtNFMyIDMuNzkgMiA2czEuNzkgNCA0IDRjLjU5IDAgMS4xNC0uMTMgMS42NC0uMzZMMTAgMTJsLTIuMzYgMi4zNkM3LjE0IDE0LjEzIDYuNTkgMTQgNiAxNGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00YzAtLjU5LS4xMy0xLjE0LS4zNi0xLjY0TDEyIDE0bDcgN2gzdi0xTDkuNjQgNy42NHpNNiA4Yy0xLjEgMC0yLS44OS0yLTJzLjktMiAyLTIgMiAuODkgMiAyLS45IDItMiAyem0wIDEyYy0xLjEgMC0yLS44OS0yLTJzLjktMiAyLTIgMiAuODkgMiAyLS45IDItMiAyem02LTcuNWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41LjUuMjIuNS41LS4yMi41LS41LjV6TTE5IDNsLTYgNiAyIDIgNy03VjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRlbnRQYXN0ZUdvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA1aDJ2M2gxMFY1aDJ2NmgyVjVjMC0xLjEtLjktMi0yLTJoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxcy0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNXYtMkg1VjV6bTctMmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC4wMSAxMy0xLjQyIDEuNDEgMS41OCAxLjU4SDEydjJoNi4xN2wtMS41OCAxLjU5IDEuNDIgMS40MSAzLjk5LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRlbnRQYXN0ZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjIgMyA1LjgzVjE5YzAgMS4xLjkgMiAyIDJoMTMuMTdsMS42MSAxLjYxIDEuNDEtMS40MnpNNSAxOVY3LjgzTDE2LjE3IDE5SDV6TTE3IDhWNWgydjExLjE3bDIgMlY1YzAtMS4xLS45LTItMi0yaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg1LjgzbDUgNUgxN3ptLTUtNWMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb250ZW50UGFzdGVTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDVoMnYzaDEwVjVoMnY1aDJWNWMwLTEuMS0uOS0yLTItMmgtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFzLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg1di0ySDVWNXptNy0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjMgMTguOWMuNC0uNy43LTEuNS43LTIuNCAwLTIuNS0yLTQuNS00LjUtNC41UzEyIDE0IDEyIDE2LjVzMiA0LjUgNC41IDQuNWMuOSAwIDEuNy0uMyAyLjQtLjdsMi43IDIuNyAxLjQtMS40LTIuNy0yLjd6bS0zLjguMWMtMS40IDAtMi41LTEuMS0yLjUtMi41czEuMS0yLjUgMi41LTIuNSAyLjUgMS4xIDIuNSAyLjUtMS4xIDIuNS0yLjUgMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb250ZW50UGFzdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAyaC00LjE4QzE0LjQuODQgMTMuMyAwIDEyIDBjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTcgMThINVY0aDJ2M2gxMFY0aDJ2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvcHlBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAySDljLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoOWMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDlWNGg5djEyek0zIDE1di0yaDJ2Mkgzem0wLTUuNWgydjJIM3YtMnpNMTAgMjBoMnYyaC0ydi0yem0tNy0xLjV2LTJoMnYySDN6TTUgMjJjLTEuMSAwLTItLjktMi0yaDJ2MnptMy41IDBoLTJ2LTJoMnYyem01IDB2LTJoMmMwIDEuMS0uOSAyLTIgMnpNNSA2djJIM2MwLTEuMS45LTIgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcmVhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTIwLjcxIDcuMDRhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0yLjM0LTIuMzRhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVsZXRlU3dlZXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxNmg0djJoLTR6bTAtOGg3djJoLTd6bTAgNGg2djJoLTZ6TTMgMThjMCAxLjEuOSAyIDIgMmg2YzEuMSAwIDItLjkgMi0yVjhIM3YxMHpNMTQgNWgtM2wtMS0xSDZMNSA1SDJ2MmgxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVzZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzaDJ2LTJIM3Yyem00IDhoMnYtMkg3djJ6bTYtMThoLTJ2MmgyVjN6bTYgMHYyaDJjMC0xLjEtLjktMi0yLTJ6TTUgMjF2LTJIM2MwIDEuMS45IDIgMiAyem0tMi00aDJ2LTJIM3Yyem04IDRoMnYtMmgtMnYyem04LThoMnYtMmgtMnYyem0wLTRoMlY3aC0ydjJ6bS00LTRoMlYzaC0ydjJ6TTcuODMgNSA3IDQuMTdWM2gydjJINy44M3ptMTIgMTItLjgzLS44M1YxNWgydjJoLTEuMTd6bTEuMzYgNC4xOUwyLjgxIDIuODEgMS4zOSA0LjIyIDQuMTcgN0gzdjJoMlY3LjgzbDIgMlYxN2g3LjE3bDIgMkgxNXYyaDJ2LTEuMTdsMi43OCAyLjc4IDEuNDEtMS40MnpNOSAxNXYtMy4xN0wxMi4xNyAxNUg5em02LTIuODNWOWgtMy4xN2wtMi0ySDE3djcuMTdsLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRHJhZnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTkgOGMwLS43Mi0uMzctMS4zNS0uOTQtMS43TDEyIDEgMi45NSA2LjNDMi4zOCA2LjY1IDIgNy4yOCAyIDh2MTBjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMmwtLjAxLTEwek0xMiAxMyAzLjc0IDcuODQgMTIgM2w4LjI2IDQuODRMMTIgMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZER5bmFtaWNGZWVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA4SDZ2N2MwIDEuMS45IDIgMiAyaDl2LTJIOFY4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzaC04Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDhoLThWN2g4djR6TTQgMTJIMnY3YzAgMS4xLjkgMiAyIDJoOXYtMkg0di03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWxlQ29weSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDFINGMtMS4xIDAtMiAuOS0yIDJ2MTRoMlYzaDEyVjF6bS0xIDQgNiA2djEwYzAgMS4xLS45IDItMiAySDcuOTlDNi44OSAyMyA2IDIyLjEgNiAyMWwuMDEtMTRjMC0xLjEuODktMiAxLjk5LTJoN3ptLTEgN2g1LjVMMTQgNi41VjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXJMaXN0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuODMgOEgyMVY2SDguODNsMiAyem01IDVIMTh2LTJoLTQuMTdsMiAyek0xNCAxNi44M1YxOGgtNHYtMmgzLjE3bC0zLTNINnYtMmgyLjE3bC0zLTNIM1Y2aC4xN0wxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40MSAxLjQxTDE0IDE2LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXJMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMThoNHYtMmgtNHYyek0zIDZ2MmgxOFY2SDN6bTMgN2gxMnYtMkg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsYWdDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem02IDEzaC01bC0xLTJIOS41djVIOFY3aDZsMSAyaDN2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjQgNiAxNCA0SDV2MTdoMnYtN2g1LjZsLjQgMmg3VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvbnREb3dubG9hZE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyLjU4IDkuNzUtLjg3LS44Ny4yMy0uNjZoLjFsLjU0IDEuNTN6bS0yLjIzLTIuMjNMMTAuOTIgNmgyLjE0bDIuNTUgNi43OUwyMiAxOS4xN1Y0YzAtMS4xLS45LTItMi0ySDQuODNsNS41MiA1LjUyem0xMC4xNCAxNS43OUwxOS4xNyAyMkg0Yy0xLjEgMC0yLS45LTItMlY0LjgzTC42OSAzLjUxIDIuMSAyLjFsMTkuOCAxOS44LTEuNDEgMS40MXptLTguMzktOC4zOC0zLjMtMy4zTDYuNDEgMThoMi4wOGwxLjA5LTMuMDdoMi41MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9udERvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImJhc2VQcm9maWxlXCI6XCJ0aW55XCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS45MyAxMy41aDQuMTRMMTIgNy45OHpNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS00LjA1IDE2LjUtMS4xNC0zSDkuMTdsLTEuMTIgM0g1Ljk2bDUuMTEtMTNoMS44Nmw1LjExIDEzaC0yLjA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3J3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOFY0bDggOC04IDh2LTRINFY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHZXN0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41OSA2Ljg5Yy43LS43MSAxLjQtMS4zNSAxLjcxLTEuMjIuNS4yIDAgMS4wMy0uMyAxLjUyLS4yNS40Mi0yLjg2IDMuODktMi44NiA2LjMxIDAgMS4yOC40OCAyLjM0IDEuMzQgMi45OC43NS41NiAxLjc0LjczIDIuNjQuNDYgMS4wNy0uMzEgMS45NS0xLjQgMy4wNi0yLjc3IDEuMjEtMS40OSAyLjgzLTMuNDQgNC4wOC0zLjQ0IDEuNjMgMCAxLjY1IDEuMDEgMS43NiAxLjc5LTMuNzguNjQtNS4zOCAzLjY3LTUuMzggNS4zNyAwIDEuNyAxLjQ0IDMuMDkgMy4yMSAzLjA5IDEuNjMgMCA0LjI5LTEuMzMgNC42OS02LjFIMjF2LTIuNWgtMi40N2MtLjE1LTEuNjUtMS4wOS00LjItNC4wMy00LjItMi4yNSAwLTQuMTggMS45MS00Ljk0IDIuODQtLjU4LjczLTIuMDYgMi40OC0yLjI5IDIuNzItLjI1LjMtLjY4Ljg0LTEuMTEuODQtLjQ1IDAtLjcyLS44My0uMzYtMS45Mi4zNS0xLjA5IDEuNC0yLjg2IDEuODUtMy41Mi43OC0xLjE0IDEuMy0xLjkyIDEuMy0zLjI4QzguOTUgMy42OSA3LjMxIDMgNi40NCAzIDUuMTIgMyAzLjk3IDQgMy43MiA0LjI1Yy0uMzYuMzYtLjY2LjY2LS44OC45M2wxLjc1IDEuNzF6bTkuMjkgMTEuNjZjLS4zMSAwLS43NC0uMjYtLjc0LS43MiAwLS42LjczLTIuMiAyLjg3LTIuNzYtLjMgMi42OS0xLjQzIDMuNDgtMi4xMyAzLjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3dUb1JlZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOSAxNyAzLTIuOTRhOS4zNCA5LjM0IDAgMCAwLTEtLjA2Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDlsLTMtM3ptMi01YzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNE0xNS40NyAyMC41IDEyIDE3bDEuNC0xLjQxIDIuMDcgMi4wOCA1LjEzLTUuMTcgMS40IDEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG93VG9Wb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2gtLjY4bC0yIDJoMS45MUwxOSAxN0g1bDEuNzgtMmgyLjA1bC0yLTJINmwtMyAzdjRjMCAxLjEuODkgMiAxLjk5IDJIMTlhMiAyIDAgMCAwIDItMnYtNGwtMy0zem0tMS01LjA1LTQuOTUgNC45NS0zLjU0LTMuNTQgNC45NS00Ljk1TDE3IDcuOTV6bS00LjI0LTUuNjZMNi4zOSA4LjY2YS45OTYuOTk2IDAgMCAwIDAgMS40MWw0Ljk1IDQuOTVjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDYuMzYtNi4zNmEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFMMTQuMTYgMi4zYS45NzUuOTc1IDAgMCAwLTEuNC0uMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDQuOTljLTEuMTEgMC0xLjk4Ljg5LTEuOTggMkwzIDE5YzAgMS4xLjg4IDIgMS45OSAySDE5YzEuMSAwIDItLjkgMi0yVjVhMiAyIDAgMCAwLTItMnptMCAxMmgtNGMwIDEuNjYtMS4zNSAzLTMgM3MtMy0xLjM0LTMtM0g0Ljk5VjVIMTl2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluc2lnaHRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOGMtMS40NSAwLTIuMjYgMS40NC0xLjkzIDIuNTFsLTMuNTUgMy41NmMtLjMtLjA5LS43NC0uMDktMS4wNCAwbC0yLjU1LTIuNTVDMTIuMjcgMTAuNDUgMTEuNDYgOSAxMCA5Yy0xLjQ1IDAtMi4yNyAxLjQ0LTEuOTMgMi41MmwtNC41NiA0LjU1QzIuNDQgMTUuNzQgMSAxNi41NSAxIDE4YzAgMS4xLjkgMiAyIDIgMS40NSAwIDIuMjYtMS40NCAxLjkzLTIuNTFsNC41NS00LjU2Yy4zLjA5Ljc0LjA5IDEuMDQgMGwyLjU1IDIuNTVDMTIuNzMgMTYuNTUgMTMuNTQgMTggMTUgMThjMS40NSAwIDIuMjctMS40NCAxLjkzLTIuNTJsMy41Ni0zLjU1YzEuMDcuMzMgMi41MS0uNDggMi41MS0xLjkzIDAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNSA5IC45NC0yLjA3TDE4IDZsLTIuMDYtLjkzTDE1IDNsLS45MiAyLjA3TDEyIDZsMi4wOC45M3pNMy41IDExIDQgOWwyLS41TDQgOGwtLjUtMkwzIDhsLTIgLjVMMyA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnZlbnRvcnkyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xIDAtMiAuOS0yIDJ2My4wMWMwIC43Mi40MyAxLjM0IDEgMS42OVYyMGMwIDEuMSAxLjEgMiAyIDJoMTRjLjkgMCAyLS45IDItMlY4LjdjLjU3LS4zNSAxLS45NyAxLTEuNjlWNGMwLTEuMS0xLTItMi0yem0tNSAxMkg5di0yaDZ2MnptNS03SDRWNGgxNnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnZlbnRvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMSAwLTIgLjktMiAydjMuMDFjMCAuNzIuNDMgMS4zNCAxIDEuNjlWMjBjMCAxLjEgMS4xIDIgMiAyaDE0Yy45IDAgMi0uOSAyLTJWOC43Yy41Ny0uMzUgMS0uOTcgMS0xLjY5VjRjMC0xLjEtMS0yLTItMnptLTUgMTJIOXYtMmg2djJ6bTUtN0g0VjRsMTYtLjAyVjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpbmtPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDdoLTR2MS45aDRjMS43MSAwIDMuMSAxLjM5IDMuMSAzLjEgMCAxLjQzLS45OCAyLjYzLTIuMzEgMi45OGwxLjQ2IDEuNDZDMjAuODggMTUuNjEgMjIgMTMuOTUgMjIgMTJjMC0yLjc2LTIuMjQtNS01LTV6bS0xIDRoLTIuMTlsMiAySDE2ek0yIDQuMjdsMy4xMSAzLjExQTQuOTkxIDQuOTkxIDAgMCAwIDIgMTJjMCAyLjc2IDIuMjQgNSA1IDVoNHYtMS45SDdjLTEuNzEgMC0zLjEtMS4zOS0zLjEtMy4xIDAtMS41OSAxLjIxLTIuOSAyLjc2LTMuMDdMOC43MyAxMUg4djJoMi43M0wxMyAxNS4yN1YxN2gxLjczbDQuMDEgNEwyMCAxOS43NCAzLjI3IDMgMiA0LjI3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDI0VjBcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGluayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb3dQcmlvcml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDVoOHYyaC04em0wIDUuNWg4djJoLTh6bTAgNS41aDh2MmgtOHpNMiAxMS41QzIgMTUuMDggNC45MiAxOCA4LjUgMThIOXYybDMtMy0zLTN2MmgtLjVDNi4wMiAxNiA0IDEzLjk4IDQgMTEuNVM2LjAyIDcgOC41IDdIMTJWNUg4LjVDNC45MiA1IDIgNy45MiAyIDExLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgNC04IDUtOC01VjZsOCA1IDgtNXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYXJrdW5yZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDQtOCA1LTgtNVY2bDggNSA4LTV2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW92ZVRvSW5ib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINC45OWMtMS4xMSAwLTEuOTguOS0xLjk4IDJMMyAxOWMwIDEuMS44OCAyIDEuOTkgMkgxOWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDEyaC00YzAgMS42Ni0xLjM1IDMtMyAzcy0zLTEuMzQtMy0zSDQuOTlWNUgxOXYxMHptLTMtNWgtMlY3aC00djNIOGw0IDQgNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZXh0V2VlayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDdoLTRWNWMwLS41NS0uMjItMS4wNS0uNTktMS40MUMxNS4wNSAzLjIyIDE0LjU1IDMgMTQgM2gtNGMtMS4xIDAtMiAuOS0yIDJ2Mkg0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6TTEwIDVoNHYyaC00VjV6bTEgMTMuNS0xLTEgMy0zLTMtMyAxLTEgNCA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZWRGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQgNi0xLTJINXYxN2gydi03aDVsMSAyaDdWNmgtNnptNCA4aC00bC0xLTJIN1Y2aDVsMSAyaDV2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG9saWN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEgNS05LTQtOSA0djZjMCA1LjU1IDMuODQgMTAuNzQgOSAxMiAyLjMtLjU2IDQuMzMtMS45IDUuODgtMy43MWwtMy4xMi0zLjEyYTQuOTk0IDQuOTk0IDAgMCAxLTYuMjktLjY0IDUuMDAzIDUuMDAzIDAgMCAxIDAtNy4wNyA1LjAwMyA1LjAwMyAwIDAgMSA3LjA3IDAgNS4wMDYgNS4wMDYgMCAwIDEgLjY0IDYuMjlsMi45IDIuOUMyMC4yOSAxNS42OSAyMSAxMy4zOCAyMSAxMVY1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHVzaFBpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNiA5VjRoMWMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxaDF2NWMwIDEuNjYtMS4zNCAzLTMgM3YyaDUuOTd2N2wxIDEgMS0xdi03SDE5di0yYy0xLjY2IDAtMy0xLjM0LTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVkbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjQgMTAuNkMxNi41NSA4Ljk5IDE0LjE1IDggMTEuNSA4Yy00LjY1IDAtOC41OCAzLjAzLTkuOTYgNy4yMkwzLjkgMTZhOC4wMDIgOC4wMDIgMCAwIDEgNy42LTUuNWMxLjk1IDAgMy43My43MiA1LjEyIDEuODhMMTMgMTZoOVY3bC0zLjYgMy42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZW1vdmVDaXJjbGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMXYyaDEwdi0ySDd6bTUtOUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlbW92ZUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTUgMTFIN3YtMmgxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxM0g1di0yaDE0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlcGx5QWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA4VjVsLTcgNyA3IDd2LTNsLTQtNCA0LTR6bTYgMVY1bC03IDcgNyA3di00LjFjNSAwIDguNSAxLjYgMTEgNS4xLTEtNS00LTEwLTExLTExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXBseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDlWNWwtNyA3IDcgN3YtNC4xYzUgMCA4LjUgMS42IDExIDUuMS0xLTUtNC0xMC0xMS0xMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwb3J0R21haWxlcnJvcnJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjczIDNIOC4yN0wzIDguMjd2Ny40Nkw4LjI3IDIxaDcuNDZMMjEgMTUuNzNWOC4yN0wxNS43MyAzek0xOSAxNC45IDE0LjkgMTlIOS4xTDUgMTQuOVY5LjFMOS4xIDVoNS44TDE5IDkuMXY1Ljh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDdoMnY2aC0yek0xMSAxNWgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlcG9ydE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDdoMnYyLjkybDYuOTEgNi45MSAxLjA5LTEuMVY4LjI3TDE1LjczIDNIOC4yN0w3LjE4IDQuMSAxMSA3Ljkyem0xMS4yNyAxNC43My0yMC0yMC4wMUwxIDIuOTlsMy42NCAzLjY0TDMgOC4yN3Y3LjQ2TDguMjcgMjFoNy40NmwxLjY0LTEuNjNMMjEgMjNsMS4yNy0xLjI3ek0xMiAxNy4zYy0uNzIgMC0xLjMtLjU4LTEuMy0xLjNzLjU4LTEuMyAxLjMtMS4zIDEuMy41OCAxLjMgMS4zLS41OCAxLjMtMS4zIDEuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNzMgM0g4LjI3TDMgOC4yN3Y3LjQ2TDguMjcgMjFoNy40NkwyMSAxNS43M1Y4LjI3TDE1LjczIDN6TTEyIDE3LjNjLS43MiAwLTEuMy0uNTgtMS4zLTEuMyAwLS43Mi41OC0xLjMgMS4zLTEuMy43MiAwIDEuMy41OCAxLjMgMS4zIDAgLjcyLS41OCAxLjMtMS4zIDEuM3ptMS00LjNoLTJWN2gydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNhdmVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMnY3SDV2LTdIM3Y3YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTdoLTJ6bS02IC42NyAyLjU5LTIuNThMMTcgMTEuNWwtNSA1LTUtNSAxLjQxLTEuNDFMMTEgMTIuNjdWM2gyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYXZlQXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMi40VjdsLTQtNEg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmg3LjRsOC42LTguNnpNMTUgMTVjMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTMgMS4zNC0zIDMtMyAzIDEuMzQgMyAzek02IDZoOXY0SDZWNnptMTMuOTkgMTAuMjUgMS43NyAxLjc3TDE2Ljc3IDIzSDE1di0xLjc3bDQuOTktNC45OHptMy4yNi4yNi0uODUuODUtMS43Ny0xLjc3Ljg1LS44NWMuMi0uMi41MS0uMi43MSAwbDEuMDYgMS4wNmMuMi4yLjIuNTIgMCAuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAzSDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZWxlY3RBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVoMlYzYy0xLjEgMC0yIC45LTIgMnptMCA4aDJ2LTJIM3Yyem00IDhoMnYtMkg3djJ6TTMgOWgyVjdIM3Yyem0xMC02aC0ydjJoMlYzem02IDB2MmgyYzAtMS4xLS45LTItMi0yek01IDIxdi0ySDNjMCAxLjEuOSAyIDIgMnptLTItNGgydi0ySDN2MnpNOSAzSDd2MmgyVjN6bTIgMThoMnYtMmgtMnYyem04LThoMnYtMmgtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnptMC0xMmgyVjdoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptLTQgNGgydi0yaC0ydjJ6bTAtMTZoMlYzaC0ydjJ6TTcgMTdoMTBWN0g3djEwem0yLThoNnY2SDlWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuMDEgMjEgMjMgMTIgMi4wMSAzIDIgMTBsMTUgMi0xNSAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaGllbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxIDMgNXY2YzAgNS41NSAzLjg0IDEwLjc0IDkgMTIgNS4xNi0xLjI2IDktNi40NSA5LTEyVjVsLTktNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU29ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMThoNnYtMkgzdjJ6TTMgNnYyaDE4VjZIM3ptMCA3aDEydi0ySDN2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3F1YXJlRm9vdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjY2IDE3LjY2LTEuMDYgMS4wNi0uNzEtLjcxIDEuMDYtMS4wNi0xLjk0LTEuOTQtMS4wNiAxLjA2LS43MS0uNzEgMS4wNi0xLjA2LTEuOTQtMS45NC0xLjA2IDEuMDYtLjcxLS43MSAxLjA2LTEuMDZMOS43IDkuN2wtMS4wNiAxLjA2LS43MS0uNzEgMS4wNi0xLjA2LTEuOTQtMS45NC0xLjA2IDEuMDYtLjcxLS43MSAxLjA2LTEuMDZMNCA0djE0YzAgMS4xLjkgMiAyIDJoMTRsLTIuMzQtMi4zNHpNNyAxN3YtNS43NkwxMi43NiAxN0g3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdGFja2VkQmFyQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDloNHYxMUg0ek00IDRoNHY0SDR6TTEwIDdoNHY0aC00ek0xNiAxMGg0djRoLTR6TTE2IDE1aDR2NWgtNHpNMTAgMTJoNHY4aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdHJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjIwXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI0XCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjIwXCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjA1IDguNTkgNi4wMyA0LjU1aC0uMDFsLS4zMS0uMzItMS40MiAxLjQxIDQuMDIgNC4wNS4wMS0uMDEuMzEuMzJ6bTMuODkzLjAyNyA0LjQwNS00LjM5MkwxOS43NiA1LjY0bC00LjQwNSA0LjM5M3pNMTAuMDEgMTUuMzZsLTEuNDItMS40MS00LjAzIDQuMDEtLjMyLjMzIDEuNDEgMS40MSA0LjAzLTQuMDJ6bTkuNzUgMi45NC0zLjk5LTQuMDEtLjM2LS4zNUwxNCAxNS4zNWwzLjk5IDQuMDEuMzUuMzV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTBWOGgtNFY0aC0ydjRoLTRWNEg4djRINHYyaDR2NEg0djJoNHY0aDJ2LTRoNHY0aDJ2LTRoNHYtMmgtNHYtNGg0em0tNiA0aC00di00aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dEZvcm1hdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTd2MmgxNHYtMkg1em00LjUtNC4yaDVsLjkgMi4yaDIuMUwxMi43NSA0aC0xLjVMNi41IDE1aDIuMWwuOS0yLjJ6TTEyIDUuOTggMTMuODcgMTFoLTMuNzRMMTIgNS45OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVW5hcmNoaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuNTUgNS4yMi0xLjM5LTEuNjhBMS41MSAxLjUxIDAgMCAwIDE4IDNINmMtLjQ3IDAtLjg4LjIxLTEuMTUuNTVMMy40NiA1LjIyQzMuMTcgNS41NyAzIDYuMDEgMyA2LjVWMTlhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2LjVjMC0uNDktLjE3LS45My0uNDUtMS4yOHpNMTIgOS41bDUuNSA1LjVIMTR2MmgtNHYtMkg2LjVMMTIgOS41ek01LjEyIDVsLjgyLTFoMTJsLjkzIDFINS4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVW5kbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgOGMtMi42NSAwLTUuMDUuOTktNi45IDIuNkwyIDd2OWg5bC0zLjYyLTMuNjJjMS4zOS0xLjE2IDMuMTYtMS44OCA1LjEyLTEuODggMy41NCAwIDYuNTUgMi4zMSA3LjYgNS41bDIuMzctLjc4QzIxLjA4IDExLjAzIDE3LjE1IDggMTIuNSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVcGNvbWluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjE2IDcuMjYtMS40MS0xLjQxLTMuNTYgMy41NSAxLjQxIDEuNDFzMy40NS0zLjUyIDMuNTYtMy41NXpNMTEgM2gydjVoLTJ6TTYuNCAxMC44MSA3LjgxIDkuNCA0LjI2IDUuODQgMi44NCA3LjI2Yy4xMS4wMyAzLjU2IDMuNTUgMy41NiAzLjU1ek0yMCAxMmgtNWMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtM0g0Yy0xLjEgMC0yIC45LTIgMnY1YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJ2LTVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdhdmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxNi45OWMtMS4zNSAwLTIuMi40Mi0yLjk1LjgtLjY1LjMzLTEuMTguNi0yLjA1LjYtLjkgMC0xLjQtLjI1LTIuMDUtLjYtLjc1LS4zOC0xLjU3LS44LTIuOTUtLjhzLTIuMi40Mi0yLjk1LjhjLS42NS4zMy0xLjE3LjYtMi4wNS42djEuOTVjMS4zNSAwIDIuMi0uNDIgMi45NS0uOC42NS0uMzMgMS4xNy0uNiAyLjA1LS42czEuNC4yNSAyLjA1LjZjLjc1LjM4IDEuNTcuOCAyLjk1LjhzMi4yLS40MiAyLjk1LS44Yy42NS0uMzMgMS4xOC0uNiAyLjA1LS42LjkgMCAxLjQuMjUgMi4wNS42Ljc1LjM4IDEuNTguOCAyLjk1Ljh2LTEuOTVjLS45IDAtMS40LS4yNS0yLjA1LS42LS43NS0uMzgtMS42LS44LTIuOTUtLjh6bTAtNC40NWMtMS4zNSAwLTIuMi40My0yLjk1LjgtLjY1LjMyLTEuMTguNi0yLjA1LjYtLjkgMC0xLjQtLjI1LTIuMDUtLjYtLjc1LS4zOC0xLjU3LS44LTIuOTUtLjhzLTIuMi40My0yLjk1LjhjLS42NS4zMi0xLjE3LjYtMi4wNS42djEuOTVjMS4zNSAwIDIuMi0uNDMgMi45NS0uOC42NS0uMzUgMS4xNS0uNiAyLjA1LS42czEuNC4yNSAyLjA1LjZjLjc1LjM4IDEuNTcuOCAyLjk1LjhzMi4yLS40MyAyLjk1LS44Yy42NS0uMzUgMS4xNS0uNiAyLjA1LS42czEuNC4yNSAyLjA1LjZjLjc1LjM4IDEuNTguOCAyLjk1Ljh2LTEuOTVjLS45IDAtMS40LS4yNS0yLjA1LS42LS43NS0uMzgtMS42LS44LTIuOTUtLjh6bTIuOTUtOC4wOGMtLjc1LS4zOC0xLjU4LS44LTIuOTUtLjhzLTIuMi40Mi0yLjk1LjhjLS42NS4zMi0xLjE4LjYtMi4wNS42LS45IDAtMS40LS4yNS0yLjA1LS42LS43NS0uMzctMS41Ny0uOC0yLjk1LS44cy0yLjIuNDItMi45NS44Yy0uNjUuMzMtMS4xNy42LTIuMDUuNnYxLjkzYzEuMzUgMCAyLjItLjQzIDIuOTUtLjguNjUtLjMzIDEuMTctLjYgMi4wNS0uNnMxLjQuMjUgMi4wNS42Yy43NS4zOCAxLjU3LjggMi45NS44czIuMi0uNDMgMi45NS0uOGMuNjUtLjMyIDEuMTgtLjYgMi4wNS0uNi45IDAgMS40LjI1IDIuMDUuNi43NS4zOCAxLjU4LjggMi45NS44VjUuMDRjLS45IDAtMS40LS4yNS0yLjA1LS41OHpNMTcgOC4wOWMtMS4zNSAwLTIuMi40My0yLjk1LjgtLjY1LjM1LTEuMTUuNi0yLjA1LjZzLTEuNC0uMjUtMi4wNS0uNmMtLjc1LS4zOC0xLjU3LS44LTIuOTUtLjhzLTIuMi40My0yLjk1LjhjLS42NS4zNS0xLjE1LjYtMi4wNS42djEuOTVjMS4zNSAwIDIuMi0uNDMgMi45NS0uOC42NS0uMzIgMS4xOC0uNiAyLjA1LS42czEuNC4yNSAyLjA1LjZjLjc1LjM4IDEuNTcuOCAyLjk1LjhzMi4yLS40MyAyLjk1LS44Yy42NS0uMzIgMS4xOC0uNiAyLjA1LS42LjkgMCAxLjQuMjUgMi4wNS42Ljc1LjM4IDEuNTguOCAyLjk1LjhWOS40OWMtLjkgMC0xLjQtLjI1LTIuMDUtLjYtLjc1LS4zOC0xLjYtLjgtMi45NS0uOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2ViU3RvcmllcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDRjMS4xIDAgMiAuOSAyIDJ2MTJjMCAxLjEtLjkgMi0yIDJWNHpNMiAyMGMwIDEuMS45IDIgMiAyaDljMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxNnptMTktMmMuODMgMCAxLjUtLjY3IDEuNS0xLjV2LTljMC0uODMtLjY3LTEuNS0xLjUtMS41djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXZWVrZW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTBjLTEuMSAwLTIgLjktMiAydjNINXYtM2EyIDIgMCAxIDAtNCAwdjVjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnYtNWMwLTEuMS0uOS0yLTItMnptLTMtNUg2Yy0xLjEgMC0yIC45LTIgMnYyLjE1YzEuMTYuNDEgMiAxLjUyIDIgMi44MVYxNGgxMnYtMi4wM2MwLTEuMy44NC0yLjQgMi0yLjgxVjdjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdoZXJlVG9Wb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYzMuODYgMCA3IDMuMTQgNyA3IDAgNS4yNS03IDEzLTcgMTNTNSAxNC4yNSA1IDljMC0zLjg2IDMuMTQtNyA3LTd6bS0xLjUzIDEyTDE3IDcuNDEgMTUuNiA2bC01LjEzIDUuMThMOC40IDkuMDkgNyAxMC41bDMuNDcgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxeE1vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgN2g0djEwSDZWOUg0Vjd6bTExLjgzIDQuNzJMMTguNjYgN2gtMi4zM2wtMS42NiAyLjc3TDEzIDdoLTIuMzNsMi44MyA0LjcyTDEwLjMzIDE3aDIuMzNsMi0zLjM0IDIgMy4zNEgxOWwtMy4xNy01LjI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQzMEZwcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA1djNoNnYyLjVIM3YzaDVWMTZIMnYzaDZjMS42NiAwIDMtMS4zNCAzLTN2LTEuOUEyLjEgMi4xIDAgMCAwIDguOSAxMiAyLjEgMi4xIDAgMCAwIDExIDkuOVY4YzAtMS42Ni0xLjM0LTMtMy0zSDJ6bTE3IDN2OGgtNFY4aDRtMC0zaC00Yy0xLjY2IDAtMyAxLjM0LTMgM3Y4YzAgMS42NiAxLjM0IDMgMyAzaDRjMS42NiAwIDMtMS4zNCAzLTNWOGMwLTEuNjYtMS4zNC0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kM2dNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDd2Mmg1djJINHYyaDR2MkgzdjJoNWMxLjEgMCAyLS45IDItMnYtMS41YzAtLjgzLS42Ny0xLjUtMS41LTEuNS44MyAwIDEuNS0uNjcgMS41LTEuNVY5YzAtMS4xLS45LTItMi0ySDN6bTE4IDR2NGMwIDEuMS0uOSAyLTIgMmgtNWMtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDVjMS4xIDAgMiAuOSAyIDJoLTd2Nmg1di0yaC0yLjV2LTJIMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDRnTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA3SDd2NUg1VjdIM3Y3aDR2M2gydi0zaDJ2LTJIOVY3em04IDR2MmgydjJoLTVWOWg3YzAtMS4xLS45LTItMi0yaC01Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoNWMxLjEgMCAyLS45IDItMnYtNGgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNGdQbHVzTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTF2MmgydjJoLTRWOWg2YzAtMS4xLS45LTItMi0yaC00Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoNGMxLjEgMCAyLS45IDItMnYtNGgtNHptMTEgMGgtMlY5aC0ydjJoLTJ2MmgydjJoMnYtMmgydi0yek03IDdINXY1SDNWN0gxdjdoNHYzaDJ2LTNoMXYtMkg3Vjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDYwRnBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA4djhoLTRWOGg0bTAtM2gtNGMtMS42NiAwLTMgMS4zNC0zIDN2OGMwIDEuNjYgMS4zNCAzIDMgM2g0YzEuNjYgMCAzLTEuMzQgMy0zVjhjMC0xLjY2LTEuMzQtMy0zLTN6bS05IDNWNUg1QzMuMzQgNSAyIDYuMzQgMiA4djhjMCAxLjY2IDEuMzQgMyAzIDNoM2MxLjY2IDAgMy0xLjM0IDMtM3YtM2MwLTEuNjYtMS4zNC0zLTMtM0g1VjhoNXptLTIgNXYzSDV2LTNoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWNjZXNzQWxhcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiA1LjcyLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek03Ljg4IDMuMzkgNi42IDEuODYgMiA1LjcxbDEuMjkgMS41MyA0LjU5LTMuODV6TTEyLjUgOEgxMXY2bDQuNzUgMi44NS43NS0xLjIzLTQtMi4zN1Y4ek0xMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5YTkgOSAwIDAgMCAwLTE4em0wIDE2Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWNjZXNzQWxhcm1zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0tNjE4LTU2OEg3ODJ2MzYwMEgtNjE4ek0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgNS43LTQuNi0zLjktMS4zIDEuNSA0LjYgMy45TDIyIDUuN3pNNy45IDMuNCA2LjYgMS45IDIgNS43bDEuMyAxLjUgNC42LTMuOHpNMTIuNSA4SDExdjZsNC43IDIuOS44LTEuMi00LTIuNFY4ek0xMiA0Yy01IDAtOSA0LTkgOXM0IDkgOSA5IDktNCA5LTktNC05LTktOXptMCAxNmMtMy45IDAtNy0zLjEtNy03czMuMS03IDctNyA3IDMuMSA3IDctMy4xIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY2Nlc3NUaW1lRmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyem0zLjMgMTQuNzFMMTEgMTIuNDFWN2gydjQuNTlsMy43MSAzLjcxLTEuNDIgMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWNjZXNzVGltZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkVW5pdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxSDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxOEg3VjVoMTB2MTR6TTggNmg4djJIOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkQWxhcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljg4IDMuMzkgNi42IDEuODYgMiA1LjcxbDEuMjkgMS41MyA0LjU5LTMuODV6TTIyIDUuNzJsLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek0xMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5YTkgOSAwIDAgMCAwLTE4em0wIDE2Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3ptMS0xMWgtMnYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zVjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZFRvSG9tZVNjcmVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMS4wMSA4IDFjLTEuMSAwLTIgLjktMiAydjNoMlY1aDEwdjE0SDh2LTFINnYzYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTAgMTVoMlY4SDV2MmgzLjU5TDMgMTUuNTkgNC40MSAxNyAxMCAxMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDE3YzAgMS42NS0xLjM1IDMtMyAzcy0zLTEuMzUtMy0zaDJjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xLS40NS0xLTEtMUgydi0yaDkuNWMxLjY1IDAgMyAxLjM1IDMgM3pNMTkgNi41QzE5IDQuNTcgMTcuNDMgMyAxNS41IDNTMTIgNC41NyAxMiA2LjVoMmMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVMxNi4zMyA4IDE1LjUgOEgydjJoMTMuNWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNXptLS41IDQuNUgydjJoMTYuNWMuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41djJjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMjAuNDMgMTEgMTguNSAxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlycGxhbmVUaWNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjE5IDRINGMtMS4xIDAtMS45OS45LTEuOTkgMnY0YzEuMSAwIDEuOTkuOSAxLjk5IDJzLS44OSAyLTIgMnY0YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uODEtMi0xLjgxLTJ6bS0yLjQ2IDkuMy04Ljg2IDIuMzYtMS42Ni0yLjg4LjkzLS4yNSAxLjI2Ljk5IDIuMzktLjY0LTIuNC00LjE2IDEuNC0uMzggNC4wMSAzLjc0IDIuNDQtLjY1YS45NjcuOTY3IDAgMCAxIDEuMTguNjguOTg4Ljk4OCAwIDAgMS0uNjkgMS4xOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlycGxhbmVtb2RlQWN0aXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNnYtMmwtOC41LTVWMy41YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjVWOUwyIDE0djJsOC41LTIuNVYxOUw4IDIwLjVWMjJsNC0xIDQgMXYtMS41TDEzLjUgMTl2LTUuNUwyMiAxNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlycGxhbmVtb2RlSW5hY3RpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjUgNy42N1YzLjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVWOWw4LjUgNXYybC00LjQ5LTEuMzItNy4wMS03LjAxem05LjI4IDE0Ljk0IDEuNDEtMS40MS03LjY5LTcuNy0zLjk0LTMuOTQtNi43NS02Ljc1LTEuNDIgMS40MSA2LjM4IDYuMzhMMiAxNHYybDguNS0yLjVWMTlMOCAyMC41VjIybDQtMSA0IDF2LTEuNUwxMy41IDE5di0yLjY3bDYuMjggNi4yOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQW9kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOEg3VjZoMTB2MTJ6bS05LThoOHYxLjVIOFYxMHptMSAzaDZ2MS41SDlWMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnkwQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNXYxNmMwIC41NS0uNDUgMS0xIDFIOGMtLjU1IDAtMS0uNDUtMS0xVjVjMC0uNTUuNDUtMSAxLTFoMlYyaDR2MmgyYy41NSAwIDEgLjQ1IDEgMXptLTIgMUg5djE0aDZWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeTFCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2MTJoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5MkJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDV2MTZjMCAuNTUtLjQ1IDEtMSAxSDhjLS41NSAwLTEtLjQ1LTEtMVY1YzAtLjU1LjQ1LTEgMS0xaDJWMmg0djJoMmMuNTUgMCAxIC40NSAxIDF6bS0yIDFIOXYxMGg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnkzQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNXYxNmMwIC41NS0uNDUgMS0xIDFIOGMtLjU1IDAtMS0uNDUtMS0xVjVjMC0uNTUuNDUtMSAxLTFoMlYyaDR2MmgyYy41NSAwIDEgLjQ1IDEgMXptLTIgMUg5djhoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5NEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDV2MTZjMCAuNTUtLjQ1IDEtMSAxSDhjLS41NSAwLTEtLjQ1LTEtMVY1YzAtLjU1LjQ1LTEgMS0xaDJWMmg0djJoMmMuNTUgMCAxIC40NSAxIDF6bS0yIDFIOXY2aDZWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeTVCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2NGg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnk2QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNXYxNmMwIC41NS0uNDUgMS0xIDFIOGMtLjU1IDAtMS0uNDUtMS0xVjVjMC0uNTUuNDUtMSAxLTFoMlYyaDR2MmgyYy41NSAwIDEgLjQ1IDEgMXptLTIgMUg5djJoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5QWxlcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM3YxNS4zM0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNHpNMTMgMThoLTJ2LTJoMnYyem0wLTRoLTJWOWgydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlDaGFyZ2luZ0Z1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM3YxNS4zM0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNHpNMTEgMjB2LTUuNUg5TDEzIDd2NS41aDJMMTEgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzN2MTUuMzNDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlTYXZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNGgtMlYyaC00djJIOGMtLjU1IDAtMSAuNDUtMSAxdjE2YzAgLjU1LjQ1IDEgMSAxaDhjLjU1IDAgMS0uNDUgMS0xVjVjMC0uNTUtLjQ1LTEtMS0xem0tMSAxMGgtMnYyaC0ydi0ySDl2LTJoMnYtMmgydjJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5U3RkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzN2MTUuMzNDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlVbmtub3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzN2MTUuMzNDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6bS0yLjcyIDEzLjk1aC0xLjl2LTEuOWgxLjl2MS45em0xLjM1LTUuMjZzLS4zOC40Mi0uNjcuNzFjLS40OC40OC0uODMgMS4xNS0uODMgMS42aC0xLjZjMC0uODMuNDYtMS41Mi45My0ybC45My0uOTRBMS40OTggMS40OTggMCAwIDAgMTIgOS41Yy0uODMgMC0xLjUuNjctMS41IDEuNUg5YzAtMS42NiAxLjM0LTMgMy0zczMgMS4zNCAzIDNjMCAuNjYtLjI3IDEuMjYtLjcgMS42OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmxvb2R0eXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy01LjMzIDQuNTUtOCA4LjQ4LTggMTEuOCAwIDQuOTggMy44IDguMiA4IDguMnM4LTMuMjIgOC04LjJjMC0zLjMyLTIuNjctNy4yNS04LTExLjh6bTMgMTZIOXYtMmg2djJ6bTAtNWgtMnYyaC0ydi0ySDl2LTJoMlY5aDJ2MmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJsdWV0b290aENvbm5lY3RlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTcgMTItMi0yLTIgMiAyIDIgMi0yem0xMC43MS00LjI5TDEyIDJoLTF2Ny41OUw2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMSAxNC40MVYyMmgxbDUuNzEtNS43MS00LjMtNC4yOSA0LjMtNC4yOXpNMTMgNS44M2wxLjg4IDEuODhMMTMgOS41OVY1Ljgzem0xLjg4IDEwLjQ2TDEzIDE4LjE3di0zLjc2bDEuODggMS44OHpNMTkgMTBsLTIgMiAyIDIgMi0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmx1ZXRvb3RoRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMyA1LjgzIDEuODggMS44OC0xLjYgMS42IDEuNDEgMS40MSAzLjAyLTMuMDJMMTIgMmgtMXY1LjAzbDIgMnYtMy4yek01LjQxIDQgNCA1LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMSAxNC40MVYyMmgxbDQuMjktNC4yOSAyLjMgMi4yOUwyMCAxOC41OSA1LjQxIDR6TTEzIDE4LjE3di0zLjc2bDEuODggMS44OEwxMyAxOC4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmx1ZXRvb3RoRHJpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDEwSDQuODFsMS4wNC0zSDE1VjVINS41Yy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwyIDEydjhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGgtM2MtMS4xIDAtMi0uOS0yLTJ6bS04LjUgNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgMTMgNi41IDEzczEuNS42NyAxLjUgMS41UzcuMzMgMTYgNi41IDE2em05IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAzLjg1IDE5LjE1IDFoLS41djMuNzlsLTIuMy0yLjI5LS43LjdMMTguNDQgNmwtMi43OSAyLjc5LjcuNzEgMi4zLTIuM1YxMWguNUwyMiA4LjE0IDE5Ljg1IDYgMjIgMy44NXptLTIuMzUtLjk0Ljk0Ljk0LS45NC45NFYyLjkxem0uOTQgNS4yMy0uOTQuOTRWNy4ybC45NC45NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmx1ZXRvb3RoU2VhcmNoaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuMjQgMTIuMDEgMi4zMiAyLjMyYy4yOC0uNzIuNDQtMS41MS40NC0yLjMzIDAtLjgyLS4xNi0xLjU5LS40My0yLjMxbC0yLjMzIDIuMzJ6bTUuMjktNS4zLTEuMjYgMS4yNmMuNjMgMS4yMS45OCAyLjU3Ljk4IDQuMDJzLS4zNiAyLjgyLS45OCA0LjAybDEuMiAxLjJhOS45MzYgOS45MzYgMCAwIDAgMS41NC01LjMxYy0uMDEtMS44OS0uNTUtMy42Ny0xLjQ4LTUuMTl6bS0zLjgyIDFMMTAgMkg5djcuNTlMNC40MSA1IDMgNi40MSA4LjU5IDEyIDMgMTcuNTkgNC40MSAxOSA5IDE0LjQxVjIyaDFsNS43MS01LjcxLTQuMy00LjI5IDQuMy00LjI5ek0xMSA1LjgzbDEuODggMS44OEwxMSA5LjU5VjUuODN6bTEuODggMTAuNDZMMTEgMTguMTd2LTMuNzZsMS44OCAxLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbHVldG9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy43MSA3LjcxIDEyIDJoLTF2Ny41OUw2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMSAxNC40MVYyMmgxbDUuNzEtNS43MS00LjMtNC4yOSA0LjMtNC4yOXpNMTMgNS44M2wxLjg4IDEuODhMMTMgOS41OVY1Ljgzem0xLjg4IDEwLjQ2TDEzIDE4LjE3di0zLjc2bDEuODggMS44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnJpZ2h0bmVzc0F1dG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC44NSAxMi42NWgyLjNMMTIgOWwtMS4xNSAzLjY1ek0yMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OUwyMy4zMSAxMiAyMCA4LjY5ek0xNC4zIDE2bC0uNy0yaC0zLjJsLS43IDJINy44TDExIDdoMmwzLjIgOWgtMS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzSGlnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6TTEyIDE4Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnptMC0xMGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyaWdodG5lc3NMb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNS4zMSAyMy4zMSAxMiAyMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OXpNMTIgMThjLTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTYgNiAyLjY5IDYgNi0yLjY5IDYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzTWVkaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTUuMzEgMjMuMzEgMTIgMjAgOC42OVY0aC00LjY5TDEyIC42OSA4LjY5IDRINHY0LjY5TC42OSAxMiA0IDE1LjMxVjIwaDQuNjlMMTIgMjMuMzEgMTUuMzEgMjBIMjB2LTQuNjl6TTEyIDE4VjZjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1VjRjMC0uNTUtLjQ1LTEtMS0xaC0yYy0uNTUgMC0xIC40NS0xIDF2MWgtMXY0YzAgLjU1LjQ1IDEgMSAxaDF2N2MwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJWN2MwLTIuMjEtMS43OS00LTQtNFM1IDQuNzkgNSA3djdINGMtLjU1IDAtMSAuNDUtMSAxdjRoMXYxYzAgLjU1LjQ1IDEgMSAxaDJjLjU1IDAgMS0uNDUgMS0xdi0xaDF2LTRjMC0uNTUtLjQ1LTEtMS0xSDdWN2MwLTEuMS45LTIgMi0yczIgLjkgMiAydjEwYzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTR2LTdoMWMuNTUgMCAxLS40NSAxLTFWNWgtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FtZXJhc3dpdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA3aC0xbC0xLTFoLTRMOSA3SDhjLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6bS00IDdjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04LjU3LjUxIDQuNDggNC40OFYyLjA0YzQuNzIuNDcgOC40OCA0LjIzIDguOTUgOC45NWgyQzIzLjM0IDMuMDIgMTUuNDktMS41OSA4LjU3LjUxek0xMC45NSAyMS45NmMtNC43Mi0uNDctOC40OC00LjIzLTguOTUtOC45NUgwYy42NiA3Ljk3IDguNTEgMTIuNTggMTUuNDMgMTAuNDhsLTQuNDgtNC40OHYyLjk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcmVkaXRTY29yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoNXYtMkg0di02aDE4VjZjMC0xLjExLS44OS0yLTItMnptMCA0SDRWNmgxNnYyem0tNS4wNyAxMS4xNy0yLjgzLTIuODMtMS40MSAxLjQxTDE0LjkzIDIyIDIyIDE0LjkzbC0xLjQxLTEuNDEtNS42NiA1LjY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYXJrTW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNhOSA5IDAgMSAwIDkgOWMwLS40Ni0uMDQtLjkyLS4xLTEuMzZhNS4zODkgNS4zODkgMCAwIDEtNC40IDIuMjYgNS40MDMgNS40MDMgMCAwIDEtMy4xNC05LjhjLS40NC0uMDYtLjktLjEtMS4zNi0uMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGF0YVNhdmVyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAyLjA1djMuMDNjMy4zOS40OSA2IDMuMzkgNiA2LjkyIDAgLjktLjE4IDEuNzUtLjQ4IDIuNTRsMi42IDEuNTNjLjU2LTEuMjQuODgtMi42Mi44OC00LjA3IDAtNS4xOC0zLjk1LTkuNDUtOS05Ljk1ek0xMiAxOWMtMy44NyAwLTctMy4xMy03LTcgMC0zLjUzIDIuNjEtNi40MyA2LTYuOTJWMi4wNWMtNS4wNi41LTkgNC43Ni05IDkuOTUgMCA1LjUyIDQuNDcgMTAgOS45OSAxMCAzLjMxIDAgNi4yNC0xLjYxIDguMDYtNC4wOWwtMi42LTEuNTNBNi45NSA2Ljk1IDAgMCAxIDEyIDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYXRhU2F2ZXJPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOHYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zVjhoLTJ6bTItNS45NXYzLjAzYzMuMzkuNDkgNiAzLjM5IDYgNi45MiAwIC45LS4xOCAxLjc1LS40OCAyLjU0bDIuNiAxLjUzYy41Ni0xLjI0Ljg4LTIuNjIuODgtNC4wNyAwLTUuMTgtMy45NS05LjQ1LTktOS45NXpNMTIgMTljLTMuODcgMC03LTMuMTMtNy03IDAtMy41MyAyLjYxLTYuNDMgNi02LjkyVjIuMDVjLTUuMDYuNS05IDQuNzYtOSA5Ljk1IDAgNS41MiA0LjQ3IDEwIDkuOTkgMTAgMy4zMSAwIDYuMjQtMS42MSA4LjA2LTQuMDlsLTIuNi0xLjUzQTYuOTUgNi45NSAwIDAgMSAxMiAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGF0YVVzYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMi4wNXYzLjAzYzMuMzkuNDkgNiAzLjM5IDYgNi45MiAwIC45LS4xOCAxLjc1LS40OCAyLjU0bDIuNiAxLjUzYy41Ni0xLjI0Ljg4LTIuNjIuODgtNC4wNyAwLTUuMTgtMy45NS05LjQ1LTktOS45NXpNMTIgMTljLTMuODcgMC03LTMuMTMtNy03IDAtMy41MyAyLjYxLTYuNDMgNi02LjkyVjIuMDVjLTUuMDYuNS05IDQuNzYtOSA5Ljk1IDAgNS41MiA0LjQ3IDEwIDkuOTkgMTAgMy4zMSAwIDYuMjQtMS42MSA4LjA2LTQuMDlsLTIuNi0xLjUzQTYuOTUgNi45NSAwIDAgMSAxMiAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGF0YXNldExpbmtlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguMDkgMTdIN3YtNGgzLjY5Yy45NS0uNjMgMi4wOS0xIDMuMzEtMWg2Yy4zNCAwIC42Ny4wNCAxIC4wOVY1YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMy44MUM4LjMgMjAuMTIgOCAxOS4wOSA4IDE4YzAtLjM0LjA0LS42Ny4wOS0xek0xMyA3aDR2NGgtNFY3ek03IDdoNHY0SDdWN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMThjMC0xLjEuOS0yIDItMmgydi0yaC0yYy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0aDJ2LTJoLTJjLTEuMSAwLTItLjktMi0yek0yMCAxNGgtMnYyaDJjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyaC0ydjJoMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTdoNnYyaC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREYXRhc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS04IDE0SDd2LTRoNHY0em0wLTZIN1Y3aDR2NHptNiA2aC00di00aDR2NHptMC02aC00VjdoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZXZlbG9wZXJNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA1aDEwdjJoMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5TDcgMWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTguNDEgMTEuNTlMMjAgMTJsLTQuNTktNC41OUwxNCA4LjgzIDE3LjE3IDEyIDE0IDE1LjE3bDEuNDEgMS40MnpNMTAgMTUuMTcgNi44MyAxMiAxMCA4LjgzIDguNTkgNy40MSA0IDEybDQuNTkgNC41OUwxMCAxNS4xN3pNMTcgMTlIN3YtMkg1djRjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMnYtNGgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZXZpY2VUaGVybW9zdGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTNWNWMwLTEuNjYtMS4zNC0zLTMtM1M5IDMuMzQgOSA1djhjLTEuMjEuOTEtMiAyLjM3LTIgNCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01YzAtMS42My0uNzktMy4wOS0yLTR6bS00LThjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxaC0xdjFoMXYyaC0xdjFoMXYyaC0yVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERldmljZXNGb2xkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM2gtM2MwLTEuNDMtMS40Ny0yLjQtMi43OS0xLjg0bC0zIDEuMjlDMTAuNDggMi43NiAxMCAzLjQ5IDEwIDQuMjlWMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTUuMzNsMS4xMi0uNDhjLjczLS4zMiAxLjIxLTEuMDQgMS4yMS0xLjg0VjVoM3YxNHpNMiAzaDJ2Mkgyek0yIDE5aDJ2Mkgyek0yIDE1aDJ2Mkgyek0yIDExaDJ2Mkgyek0yIDdoMnYySDJ6TTYgM2gydjJINnpNNiAxOWgydjJINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGV2aWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNmgxOFY0SDRjLTEuMSAwLTIgLjktMiAydjExSDB2M2gxNHYtM0g0VjZ6bTE5IDJoLTZjLS41NSAwLTEgLjQ1LTEgMXYxMGMwIC41NS40NSAxIDEgMWg2Yy41NSAwIDEtLjQ1IDEtMVY5YzAtLjU1LS40NS0xLTEtMXptLTEgOWgtNHYtN2g0djd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpc2NvdW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNzkgMjEgMyAxMS4yMXYyYzAgLjUzLjIxIDEuMDQuNTkgMS40MWw3Ljc5IDcuNzljLjc4Ljc4IDIuMDUuNzggMi44MyAwbDYuMjEtNi4yMWMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzTDEyLjc5IDIxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4zOCAxNy40MWMuNzguNzggMi4wNS43OCAyLjgzIDBsNi4yMS02LjIxYy43OC0uNzguNzgtMi4wNSAwLTIuODNMMTIuNjMuNThBMi4wNCAyLjA0IDAgMCAwIDExLjIxIDBINUMzLjkgMCAzIC45IDMgMnY2LjIxYzAgLjUzLjIxIDEuMDQuNTkgMS40MWw3Ljc5IDcuNzl6TTcuMjUgM2ExLjI1IDEuMjUgMCAxIDEgMCAyLjUgMS4yNSAxLjI1IDAgMCAxIDAtMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb05vdERpc3R1cmJPblRvdGFsU2lsZW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTAtMTRjLTMuMyAwLTYgMi43LTYgNnMyLjcgNiA2IDYgNi0yLjcgNi02LTIuNi02LTYtNnptMyA3SDl2LTJoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREdnIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoNXYyaDh2LTJoNWMxLjEgMCAxLjk5LS45IDEuOTktMkwyMyA1YzAtMS4xLS45LTItMi0yem0wIDE0SDNWNWgxOHYxMnptLTItOUg4djJoMTFWOHptMCA0SDh2MmgxMXYtMnpNNyA4SDV2MmgyVjh6bTAgNEg1djJoMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRU1vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDlWN0g4djEwaDh2LTJoLTZ2LTJoNnYtMmgtNlY5aDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkZ2VzZW5zb3JIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDdoMnY3SDNWN3ptLTMgM2gydjdIMHYtN3ptMjItM2gydjdoLTJWN3ptLTMgM2gydjdoLTJ2LTd6bS0zLTcuOTlMOCAyYy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0xLjk5LTItMS45OXpNMTYgMTdIOFY3aDh2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkZ2VzZW5zb3JMb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgN2gydjdIMlY3em0xOCAzaDJ2N2gtMnYtN3ptLTQtNy45OUw4IDJjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNiAxN0g4VjdoOHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxhc2hsaWdodE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNVYySDZ2MS4xN0w3LjgzIDV6TTE2IDExbDItM1Y3SDkuODNMMTYgMTMuMTd6TTIuODEgMi44MSAxLjM5IDQuMjIgOCAxMC44M1YyMmg4di0zLjE3bDMuNzggMy43OCAxLjQxLTEuNDFMMi44MSAyLjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGFzaGxpZ2h0T24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMmgxMnYzSDZ6TTYgN3YxbDIgM3YxMWg4VjExbDItM1Y3SDZ6bTYgOC41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxvdXJlc2NlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgOWgxNHY2SDV6TTExIDJoMnYzaC0yek0xNy4yODYgNi4zOTlsMS43OS0xLjgwMyAxLjQyIDEuNDEtMS43OSAxLjgwMnpNMTEgMTloMnYzaC0yek0xNy4yOSAxNy43MWwxLjc5IDEuOCAxLjQyLTEuNDItMS44LTEuNzl6TTMuNDk1IDYuMDFsMS40MDctMS40MDhMNi42OSA2LjM5MSA1LjI4NCA3Ljc5OHpNMy40OTIgMTguMDc2bDEuODAzLTEuNzkgMS40MDkgMS40Mi0xLjgwMyAxLjc5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbHVvcmVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA5aDE0djZINXpNMTEgMmgydjNoLTJ6TTE3LjI4NiA2LjM5OWwxLjc5LTEuODAzIDEuNDIgMS40MS0xLjc5IDEuODAyek0xMSAxOWgydjNoLTJ6TTE3LjI5IDE3LjcxbDEuNzkgMS44IDEuNDItMS40Mi0xLjgtMS43OXpNMy40OTUgNi4wMWwxLjQwNy0xLjQwOEw2LjY5IDYuMzkxIDUuMjg0IDcuNzk4ek0zLjQ5MiAxOC4wNzZsMS44MDMtMS43OSAxLjQwOSAxLjQyLTEuODAzIDEuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZtZEJhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNC4yIDAtOCAzLjIyLTggOC4yIDAgMy4zMiAyLjY3IDcuMjUgOCAxMS44IDUuMzMtNC41NSA4LTguNDggOC0xMS44QzIwIDUuMjIgMTYuMiAyIDEyIDJ6bTEgMTNoLTJ2LTJoMnYyem0wLTRoLTJWNmgydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZtZEdvb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQuMiAwLTggMy4yMi04IDguMiAwIDMuMzIgMi42NyA3LjI1IDggMTEuOCA1LjMzLTQuNTUgOC04LjQ4IDgtMTEuOEMyMCA1LjIyIDE2LjIgMiAxMiAyem0wIDEwYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR01vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDExdjJoMnYySDlWOWg3YzAtMS4xLS45LTItMi0ySDljLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmg1YzEuMSAwIDItLjkgMi0ydi00aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcHBCYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIgNCA1djYuMDljMCA1LjA1IDMuNDEgOS43NiA4IDEwLjkxIDQuNTktMS4xNSA4LTUuODYgOC0xMC45MVY1bC04LTN6bTMuNSAxMi4wOS0xLjQxIDEuNDFMMTIgMTMuNDIgOS45MSAxNS41IDguNSAxNC4wOSAxMC41OSAxMiA4LjUgOS45MSA5LjkxIDguNSAxMiAxMC41OWwyLjA5LTIuMDkgMS40MSAxLjQxTDEzLjQyIDEybDIuMDggMi4wOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3BwR29vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMiA0IDV2Ni4wOWMwIDUuMDUgMy40MSA5Ljc2IDggMTAuOTEgNC41OS0xLjE1IDgtNS44NiA4LTEwLjkxVjVsLTgtM3ptLTEuMDYgMTMuNTRMNy40IDEybDEuNDEtMS40MSAyLjEyIDIuMTIgNC4yNC00LjI0IDEuNDEgMS40MS01LjY0IDUuNjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdwcE1heWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zem0xIDE0aC0ydi0yaDJ2MnptMC00aC0yVjdoMnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcHNGaXhlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em04Ljk0IDNBOC45OTQgOC45OTQgMCAwIDAgMTMgMy4wNlYxaC0ydjIuMDZBOC45OTQgOC45OTQgMCAwIDAgMy4wNiAxMUgxdjJoMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAxMSAyMC45NFYyM2gydi0yLjA2QTguOTk0IDguOTk0IDAgMCAwIDIwLjk0IDEzSDIzdi0yaC0yLjA2ek0xMiAxOWMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdwc05vdEZpeGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuOTQgMTFBOC45OTQgOC45OTQgMCAwIDAgMTMgMy4wNlYxaC0ydjIuMDZBOC45OTQgOC45OTQgMCAwIDAgMy4wNiAxMUgxdjJoMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAxMSAyMC45NFYyM2gydi0yLjA2QTguOTk0IDguOTk0IDAgMCAwIDIwLjk0IDEzSDIzdi0yaC0yLjA2ek0xMiAxOWMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdwc09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjk0IDExQTguOTk0IDguOTk0IDAgMCAwIDEzIDMuMDZWMWgtMnYyLjA2Yy0xLjEzLjEyLTIuMTkuNDYtMy4xNi45N2wxLjUgMS41QTYuOTk1IDYuOTk1IDAgMCAxIDE5IDEyYzAgLjk0LS4xOSAxLjg0LS41MiAyLjY1bDEuNSAxLjVjLjUtLjk2Ljg0LTIuMDIuOTctMy4xNUgyM3YtMmgtMi4wNnpNMyA0LjI3bDIuMDQgMi4wNEE4LjkxNCA4LjkxNCAwIDAgMCAzLjA2IDExSDF2MmgyLjA2QTguOTk0IDguOTk0IDAgMCAwIDExIDIwLjk0VjIzaDJ2LTIuMDZjMS43Ny0uMiAzLjM4LS45MSA0LjY5LTEuOThMMTkuNzMgMjEgMjEgMTkuNzMgNC4yNyAzIDMgNC4yN3ptMTMuMjcgMTMuMjdhNi45OTUgNi45OTUgMCAwIDEtOS44MS05LjgxbDkuODEgOS44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JhcGhpY0VxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOGgyVjZIN3YxMnptNCA0aDJWMmgtMnYyMHptLTgtOGgydi00SDN2NHptMTIgNGgyVjZoLTJ2MTJ6bTQtOHY0aDJ2LTRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdyaWQzWDMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEwVjhoLTRWNGgtMnY0aC00VjRIOHY0SDR2Mmg0djRINHYyaDR2NGgydi00aDR2NGgydi00aDR2LTJoLTR2LTRoNHptLTYgNGgtNHYtNGg0djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdyaWQ0WDQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDdWNWgtM1YyaC0ydjNoLTRWMmgtMnYzSDdWMkg1djNIMnYyaDN2NEgydjJoM3Y0SDJ2MmgzdjNoMnYtM2g0djNoMnYtM2g0djNoMnYtM2gzdi0yaC0zdi00aDN2LTJoLTNWN2gzek03IDdoNHY0SDdWN3ptMCAxMHYtNGg0djRIN3ptMTAgMGgtNHYtNGg0djR6bTAtNmgtNFY3aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JpZEdvbGRlbnJhdGlvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMVY5aC03VjJoLTJ2N2gtMlYySDl2N0gydjJoN3YySDJ2Mmg3djdoMnYtN2gydjdoMnYtN2g3di0yaC03di0yaDd6bS05IDJoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRITW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTFIOVY3SDd2MTBoMnYtNGg2djRoMlY3aC0ydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhQbHVzTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTFINlY3SDR2MTBoMnYtNGg2djRoMlY3aC0ydjR6bTEwIDBoLTJWOWgtMnYyaC0ydjJoMnYyaDJ2LTJoMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGRyQXV0b1NlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTZINi41djZIMTBjLjggMCAxLjUtLjcgMS41LTEuNXYtM2MwLS44LS43LTEuNS0xLjUtMS41em0wIDQuNUg4di0zaDJ2M3pNMTYuNSAxNkgxM3Y2aDEuNXYtMmgxLjFsLjkgMkgxOGwtLjktMi4xYy41LS4zLjktLjguOS0xLjR2LTFjMC0uOC0uNy0xLjUtMS41LTEuNXptMCAyLjVoLTJ2LTFoMnYxek0zLjUgMThoLTJ2LTJIMHY2aDEuNXYtMi41aDJWMjJINXYtNkgzLjV6TTIyIDE4LjV2LTJoLTEuNXYyaC0yVjIwaDJ2MkgyMnYtMmgydi0xLjV6TTExLjk3IDUuM2wtMS4wMiAyLjg5aDIuMUwxMi4wMyA1LjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDOC42OSAyIDYgNC42OSA2IDhzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6bTIuMDQgOS0uNjMtMS43OWgtMi44M0w5Ljk2IDExSDguNzRsMi42My03aDEuMjVsMi42MyA3aC0xLjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZHJBdXRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4wNCA4LjA0aC0uMDlsLTEuNiA0LjU1aDMuMjl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTMuMjEgMTUtLjk4LTIuODFIOS43OGwtMSAyLjgxaC0xLjlsNC4xMy0xMWgxLjk3bDQuMTMgMTFoLTEuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGRyT2ZmU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxOC41di0xYzAtLjgtLjctMS41LTEuNS0xLjVIMTN2NmgxLjV2LTJoMS4xbC45IDJIMThsLS45LTIuMWMuNS0uMy45LS44LjktMS40em0tMS41IDBoLTJ2LTFoMnYxem0tMTMtLjVoLTJ2LTJIMHY2aDEuNXYtMi41aDJWMjJINXYtNkgzLjV2MnptNi41LTJINi41djZIMTBjLjggMCAxLjUtLjcgMS41LTEuNXYtM2MwLS44LS43LTEuNS0xLjUtMS41em0wIDQuNUg4di0zaDJ2M3ptMTQtLjVoLTJ2MmgtMS41di0yaC0ydi0xLjVoMnYtMkgyMnYyaDJWMjB6TTEwLjk4IDQuMTUgOS40MiAyLjU5YzUuMS0yLjQyIDEwLjQxIDIuODkgNy45OSA3Ljk5bC0xLjU2LTEuNTZjLjgxLTIuOTYtMS45MS01LjY4LTQuODctNC44N3pNNi4zNCAyLjM0IDQuOTMgMy43NmwxLjY2IDEuNjZjLTIuNDIgNS4xIDIuODkgMTAuNDEgNy45OSA3Ljk5bDEuNjYgMS42NiAxLjQxLTEuNDFMNi4zNCAyLjM0em0xLjgxIDQuNjQgNC44NyA0Ljg3Yy0yLjk2LjgxLTUuNjgtMS45MS00Ljg3LTQuODd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhkck9uU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxOC41di0xYzAtLjgtLjctMS41LTEuNS0xLjVIMTN2NmgxLjV2LTJoMS4xbC45IDJIMThsLS45LTIuMWMuNS0uMy45LS44LjktMS40em0tMS41IDBoLTJ2LTFoMnYxem0tMTMtLjVoLTJ2LTJIMHY2aDEuNXYtMi41aDJWMjJINXYtNkgzLjV2MnptNi41LTJINi41djZIMTBjLjggMCAxLjUtLjcgMS41LTEuNXYtM2MwLS44LS43LTEuNS0xLjUtMS41em0wIDQuNUg4di0zaDJ2M3ptMTQtLjVoLTJ2MmgtMS41di0yaC0ydi0xLjVoMnYtMkgyMnYyaDJWMjB6TTEyIDRjMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDQtNC0xLjc5LTQtNCAxLjc5LTQgNC00bTAtMkM4LjY5IDIgNiA0LjY5IDYgOHMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMjJoOHYtN2gtM3YtNGgtNVY5aDNWMkg4djdoM3YySDZ2NEgzdjdoOHYtN0g4di0yaDh2MmgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGVuc0JsdXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTNjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCA0Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtOGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0tMyAuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTYgNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0xNSA1LjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xNCA3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAtMy41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXptLTExIDEwYy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptNyA3Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMC0xN2MuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTEwIDdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMCA1LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em04IC41Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLThjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC00Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTMgOC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNMTQgMTdjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCAzLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0tNC0xMmMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTAgOC41Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTQtNC41Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptMC00Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGlnaHRNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6TTIgMTNoMmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMUgyYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxem0xOCAwaDJjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFoLTJjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDF6TTExIDJ2MmMwIC41NS40NSAxIDEgMXMxLS40NSAxLTFWMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXptMCAxOHYyYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMXYtMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXpNNS45OSA0LjU4YS45OTYuOTk2IDAgMCAwLTEuNDEgMCAuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMS4wNiAxLjA2Yy4zOS4zOSAxLjAzLjM5IDEuNDEgMHMuMzktMS4wMyAwLTEuNDFMNS45OSA0LjU4em0xMi4zNyAxMi4zN2EuOTk2Ljk5NiAwIDAgMC0xLjQxIDAgLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDEuMDYgMS4wNmMuMzkuMzkgMS4wMy4zOSAxLjQxIDBhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0xLjA2LTEuMDZ6bTEuMDYtMTAuOTZhLjk5Ni45OTYgMCAwIDAgMC0xLjQxLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0xLjA2IDEuMDZjLS4zOS4zOS0uMzkgMS4wMyAwIDEuNDFzMS4wMy4zOSAxLjQxIDBsMS4wNi0xLjA2ek03LjA1IDE4LjM2YS45OTYuOTk2IDAgMCAwIDAtMS40MS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtMS4wNiAxLjA2Yy0uMzkuMzktLjM5IDEuMDMgMCAxLjQxczEuMDMuMzkgMS40MSAwbDEuMDYtMS4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYXRpb25EaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjk0IDExQTguOTk0IDguOTk0IDAgMCAwIDEzIDMuMDZWMWgtMnYyLjA2Yy0xLjEzLjEyLTIuMTkuNDYtMy4xNi45N2wxLjUgMS41QTYuOTk1IDYuOTk1IDAgMCAxIDE5IDEyYzAgLjk0LS4xOSAxLjg0LS41MiAyLjY1bDEuNSAxLjVjLjUtLjk2Ljg0LTIuMDIuOTctMy4xNUgyM3YtMmgtMi4wNnpNMyA0LjI3bDIuMDQgMi4wNEE4LjkxNCA4LjkxNCAwIDAgMCAzLjA2IDExSDF2MmgyLjA2QTguOTk0IDguOTk0IDAgMCAwIDExIDIwLjk0VjIzaDJ2LTIuMDZjMS43Ny0uMiAzLjM4LS45MSA0LjY5LTEuOThMMTkuNzMgMjEgMjEgMTkuNzMgNC4yNyAzIDMgNC4yN3ptMTMuMjcgMTMuMjdhNi45OTUgNi45OTUgMCAwIDEtOS44MS05LjgxbDkuODEgOS44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYXRpb25TZWFyY2hpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC45NCAxMUE4Ljk5NCA4Ljk5NCAwIDAgMCAxMyAzLjA2VjFoLTJ2Mi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAzLjA2IDExSDF2MmgyLjA2QTguOTk0IDguOTk0IDAgMCAwIDExIDIwLjk0VjIzaDJ2LTIuMDZBOC45OTQgOC45OTQgMCAwIDAgMjAuOTQgMTNIMjN2LTJoLTIuMDZ6TTEyIDE5Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTHRlTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxNGgzdjJINFY4aDJ2NnptMy00aDJ2Nmgydi02aDJWOEg5djJ6bTEyIDBWOGgtNXY4aDV2LTJoLTN2LTFoM3YtMmgtM3YtMWgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMdGVQbHVzTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNGgzdjJIMVY4aDJ2NnptMi00aDJ2Nmgydi02aDJWOEg1djJ6bTcgNmg1di0yaC0zdi0xaDN2LTJoLTN2LTFoM1Y4aC01djh6bTEyLTVoLTJWOWgtMnYyaC0ydjJoMnYyaDJ2LTJoMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFjcm9PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS45OCAxNy4xNUE4LjkwOSA4LjkwOSAwIDAgMCAyMSAxM2MtMS41IDAtMi45MS4zNy00LjE1IDEuMDJsMy4xMyAzLjEzek0zIDEzYTkgOSAwIDAgMCA5IDkgOSA5IDAgMCAwLTktOXpNMTIgNS41QTIuNSAyLjUgMCAwIDEgMTQuNSA4YzAgLjk5LS41OCAxLjg0LTEuNDIgMi4yNWwyLjQ4IDIuNDhjLjExLjAyLjIzLjAzLjM1LjAzYTIuNSAyLjUgMCAwIDAgMi41LTIuNWMwLTEtLjU5LTEuODUtMS40My0yLjI1Ljg0LS40IDEuNDMtMS4yNSAxLjQzLTIuMjVhMi41IDIuNSAwIDAgMC0zLjkyLTIuMDZsLjAxLS4yYTIuNSAyLjUgMCAwIDAtNSAwbC4wMi4xOWEyLjQ4NSAyLjQ4NSAwIDAgMC0yLjkzLjA4bDMuMTYgMy4xNmMuNDEtLjg1IDEuMjYtMS40MyAyLjI1LTEuNDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuODEgMi44MSAxLjM5IDQuMjJsNC42NCA0LjY0Yy0uMjcuNC0uNDMuODctLjQzIDEuMzlhMi41IDIuNSAwIDAgMCAyLjUgMi41Yy41MiAwIC45OS0uMTYgMS40LS40M2wuMDIuMDItLjAyLjE2QTIuNSAyLjUgMCAwIDAgMTIgMTVjLjA1IDAgLjEtLjAxLjE2LS4wMmwxLjY0IDEuNjRBOC45MDUgOC45MDUgMCAwIDAgMTIgMjJjMi4wMiAwIDMuODgtLjY3IDUuMzgtMS44bDIuNCAyLjQgMS40MS0xLjQxTDIuODEgMi44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWVkaWFCbHVldG9vdGhPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNi4xN1YzaDZ2NGgtNHYxLjE3bC0yLTJ6TTE5LjQyIDE1IDIyIDE3LjU3bC0uOC44LTYuNzgtNi43OC44LS44IDIuNzUgMi43NVY5aC42TDIyIDEyLjQzIDE5LjQyIDE1em0tLjI1LTEuNDUgMS4xMy0xLjEzLTEuMTMtMS4xM3YyLjI2em0yLjAyIDcuNjQtMS40MSAxLjQxLTMuOTgtMy45OC0uNTguNTgtLjg1LS44NS41OC0uNThMMTEgMTMuODNWMTdjMCAyLjIxLTEuNzggNC0zLjk5IDRTMyAxOS4yMSAzIDE3czEuNzktNCA0LjAxLTRjLjczIDAgMS40MS4yMSAyIC41NXYtMS43MkwxLjM5IDQuMjIgMi44IDIuODFsMTguMzkgMTguMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1lZGlhQmx1ZXRvb3RoT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTkgMyAuMDEgMTAuNTVjLS42LS4zNC0xLjI4LS41NS0yLS41NWE0LjAwMSA0LjAwMSAwIDEgMCAwIDhDOS4yMyAyMSAxMSAxOS4yMSAxMSAxN1Y3aDRWM0g5em0xMiA5LjQzTDE3LjU3IDloLS42djQuNTVsLTIuNzUtMi43NS0uODUuODVMMTYuNzMgMTVsLTMuMzUgMy4zNS44NS44NSAyLjc1LTIuNzVWMjFoLjZMMjEgMTcuNTcgMTguNDIgMTUgMjEgMTIuNDN6bS0yLjgzLTEuMTMgMS4xMyAxLjEzLTEuMTMgMS4xM1YxMS4zem0xLjEzIDYuMjctMS4xMyAxLjEzdi0yLjI2bDEuMTMgMS4xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWVkaWNhdGlvbkxpcXVpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM2gxMnYySDN6TTE0IDZINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tMSA5aC0yLjV2Mi41aC0zVjE1SDV2LTNoMi41VjkuNWgzVjEySDEzdjN6TTIwIDZjLTEuNjggMC0zIDEuNzYtMyA0IDAgMS43Ny44MyAzLjIyIDIgMy43NlYyMGMwIC41NS40NSAxIDEgMXMxLS40NSAxLTF2LTYuMjRjMS4xNy0uNTQgMi0xLjk5IDItMy43NiAwLTIuMjQtMS4zMi00LTMtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWVkaWNhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAzaDEydjJINnpNMTcgNkg3Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS0xIDloLTIuNXYyLjVoLTNWMTVIOHYtM2gyLjVWOS41aDNWMTJIMTZ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9iaWxlRnJpZW5kbHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxSDljLTEuMSAwLTIgLjktMiAydjNoMlY0aDEwdjE2SDl2LTJIN3YzYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNNy4wMSAxMy40N2wtMi41NS0yLjU1LTEuMjcgMS4yN0w3IDE2bDcuMTktNy4xOS0xLjI3LTEuMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vYmlsZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNzYgMi40OSAxLjQ5IDMuNzYgNSA3LjI3VjIxYzAgMS4xLjkgMiAyIDJoMTBjMS4wMiAwIDEuODUtLjc3IDEuOTgtMS43NWwxLjcyIDEuNzIgMS4yNy0xLjI3TDIuNzYgMi40OXpNNyAxOVY5LjI3TDE2LjczIDE5SDd6TTE3IDV2OS4xN2wyIDJWM2MwLTEuMS0uOS0yLTItMkg3Yy0uODUgMC0xLjU4LjU0LTEuODcgMS4zTDcuODMgNUgxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9iaWxlZGF0YU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgN2gzbC00LTQtNCA0aDN2NC4xN2wyIDJ6TTIuODEgMi44MSAxLjM5IDQuMjIgOCAxMC44M3Y2LjE4bC0zIC4wMUw5IDIxbDQtNC0zIC4wMXYtNC4xOGw5Ljc4IDkuNzggMS40MS0xLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb2RlTmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSAyYy0xLjgyIDAtMy41My41LTUgMS4zNSAyLjk5IDEuNzMgNSA0Ljk1IDUgOC42NXMtMi4wMSA2LjkyLTUgOC42NWMxLjQ3Ljg1IDMuMTggMS4zNSA1IDEuMzUgNS41MiAwIDEwLTQuNDggMTAtMTBTMTUuMDIgMiA5LjUgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9kZVN0YW5kYnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OSAyIDIgNi40OSAyIDEyczQuNDkgMTAgMTAgMTAgMTAtNC40OSAxMC0xMFMxNy41MSAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0zLThjMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTMgMS4zNC0zIDMtMyAzIDEuMzQgMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb25pdG9ySGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4xMSAxMi40NSAxNCAxMC4yNGwtMy4xMSA2LjIxYy0uMTYuMzQtLjUxLjU1LS44OS41NXMtLjczLS4yMS0uODktLjU1TDcuMzggMTNIMnY1YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJ2LTVoLTZjLS4zOCAwLS43My0uMjEtLjg5LS41NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnY1aDZjLjM4IDAgLjczLjIxLjg5LjU1TDEwIDEzLjc2bDMuMTEtNi4yMWMuMzQtLjY4IDEuNDUtLjY4IDEuNzkgMEwxNi42MiAxMUgyMlY2YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb25pdG9yV2VpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgOWMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDguNWgxdjFoLTF6TTExLjUgOC41aDF2MWgtMXpNMTMgOC41aDF2MWgtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmVhcmJ5RXJyb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDcuNTcgNC40MiA0LjQyTDEyIDE2LjQxbC00LjQyLTQuNDJMMTIgNy41N3ptMCAxMS42Mi03LjItNy4yIDcuMi03LjIgNiA2VjcuMTZsLTQuNTgtNC41OGMtLjc4LS43OC0yLjA1LS43OC0yLjgzIDBsLTguMDEgOGMtLjc4Ljc4LS43OCAyLjA1IDAgMi44M2w4LjAxIDhjLjc4Ljc4IDIuMDUuNzggMi44MyAwTDE4IDE2Ljgydi0zLjYzbC02IDZ6bTggLjgxaDJ2MmgtMnYtMnptMi0xMGgtMnY4aDJ2LThcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmVhcmJ5T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS40MSAxMy40MiAxOC44MyAxNmwtMS44MS0xLjgxTDE5LjIgMTIgMTIgNC44IDkuODEgNi45OSA4IDUuMTdsMi41OC0yLjU4Yy43OC0uNzggMi4wNS0uNzggMi44MyAwbDggOGMuNzkuNzguNzkgMi4wNCAwIDIuODN6bS0uMjIgNy43Ny0xLjQxIDEuNDFMMTYgMTguODNsLTIuNTggMi41OGMtLjc4Ljc4LTIuMDUuNzgtMi44MyAwbC04LThjLS43OC0uNzgtLjc4LTIuMDUgMC0yLjgzTDUuMTcgOCAxLjM5IDQuMjIgMi44IDIuODFsMTguMzkgMTguMzh6bS03LTQuMTctMS4zOS0xLjM5LS44LjhMNy41OCAxMmwuOC0uOC0xLjQtMS4zOUw0LjggMTJsNy4yIDcuMiAyLjE5LTIuMTh6TTE2LjQyIDEyIDEyIDcuNThsLS44LjggNC40MiA0LjQyLjgtLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5ldHdvcmtDZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyMmgyMFYyTDIgMjJ6bTE4LTJoLTNWOS44M2wzLTNWMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5ldHdvcmtXaWZpMUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDR6bTMuMzIgMTAuODRDMTQuMzQgMTQuMyAxMy4yIDE0IDEyIDE0Yy0xLjIgMC0yLjM0LjMtMy4zMi44NEwyLjkyIDkuMDdDNS41MSA3LjA4IDguNjcgNiAxMiA2czYuNDkgMS4wOCA5LjA4IDMuMDdsLTUuNzYgNS43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV0d29ya1dpZmkyQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNHptNC43OCA5LjM4QTguODUzIDguODUzIDAgMCAwIDEyIDEyYy0xLjc2IDAtMy40LjUtNC43OCAxLjM4bC00LjMtNC4zQzUuNTEgNy4wOCA4LjY3IDYgMTIgNnM2LjQ5IDEuMDggOS4wOCAzLjA3bC00LjMgNC4zMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV0d29ya1dpZmkzQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNHpNMi45MiA5LjA3QzUuNTEgNy4wOCA4LjY3IDYgMTIgNnM2LjQ5IDEuMDggOS4wOCAzLjA3bC0yLjg1IDIuODZBMTAuOTQ1IDEwLjk0NSAwIDAgMCAxMiAxMGMtMi4zMSAwLTQuNDYuNzEtNi4yMyAxLjkzTDIuOTIgOS4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV0d29ya1dpZmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMSAyNCA4Ljk4em0tMjEuMDguMDlDNS41MSA3LjA4IDguNjcgNiAxMiA2czYuNDkgMS4wOCA5LjA4IDMuMDdsLTEuNDMgMS40M0MxNy41IDguOTQgMTQuODYgOCAxMiA4cy01LjUuOTQtNy42NSAyLjUxTDIuOTIgOS4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmZjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNNCAyMGgxNlY0SDR2MTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE4SDRWNGgxNnYxNnpNMTggNmgtNWMtMS4xIDAtMiAuOS0yIDJ2Mi4yOGMtLjYuMzUtMSAuOTgtMSAxLjcyIDAgMS4xLjkgMiAyIDJzMi0uOSAyLTJjMC0uNzQtLjQtMS4zOC0xLTEuNzJWOGgzdjhIOFY4aDJWNkg2djEyaDEyVjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5pZ2h0bGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJjMS44MiAwIDMuNTMuNSA1IDEuMzUtMi45OSAxLjczLTUgNC45NS01IDguNjVzMi4wMSA2LjkyIDUgOC42NUE5Ljk3MyA5Ljk3MyAwIDAgMSAxNCAyMkM4LjQ4IDIyIDQgMTcuNTIgNCAxMlM4LjQ4IDIgMTQgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm90ZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFzLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNy0uMjVjLjQxIDAgLjc1LjM0Ljc1Ljc1cy0uMzQuNzUtLjc1Ljc1LS43NS0uMzQtLjc1LS43NS4zNC0uNzUuNzUtLjc1ek05LjEgMTdIN3YtMi4xNGw1Ljk2LTUuOTYgMi4xMiAyLjEyTDkuMSAxN3ptNy43NS03LjczLTEuMDYgMS4wNi0yLjEyLTIuMTIgMS4wNi0xLjA2Yy4yLS4yLjUxLS4yLjcxIDBsMS40MSAxLjQxYy4yLjIuMi41MSAwIC43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFzc3dvcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTdoMjB2Mkgydi0yem0xLjE1LTQuMDVMNCAxMS40N2wuODUgMS40OCAxLjMtLjc1LS44NS0xLjQ4SDd2LTEuNUg1LjNsLjg1LTEuNDdMNC44NSA3IDQgOC40NyAzLjE1IDdsLTEuMy43NS44NSAxLjQ3SDF2MS41aDEuN2wtLjg1IDEuNDggMS4zLjc1em02LjctLjc1IDEuMy43NS44NS0xLjQ4Ljg1IDEuNDggMS4zLS43NS0uODUtMS40OEgxNXYtMS41aC0xLjdsLjg1LTEuNDctMS4zLS43NUwxMiA4LjQ3IDExLjE1IDdsLTEuMy43NS44NSAxLjQ3SDl2MS41aDEuN2wtLjg1IDEuNDh6TTIzIDkuMjJoLTEuN2wuODUtMS40Ny0xLjMtLjc1TDIwIDguNDcgMTkuMTUgN2wtMS4zLjc1Ljg1IDEuNDdIMTd2MS41aDEuN2wtLjg1IDEuNDggMS4zLjc1Ljg1LTEuNDguODUgMS40OCAxLjMtLjc1LS44NS0xLjQ4SDIzdi0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhdHRlcm4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNmMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem0yIDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem02LTZjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem02IDJjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0tLjAyIDZjLS43NCAwLTEuMzcuNC0xLjcyIDFoLTIuNTRhMS45OCAxLjk4IDAgMCAwLTMuNDQgMEg4LjQxbDMuMDctMy4wN2MuMTcuMDQuMzQuMDcuNTIuMDcgMS4xIDAgMi0uOSAyLTIgMC0uMTgtLjAzLS4zNS0uMDctLjUxbDMuNTYtMy41NmMuMTYuMDQuMzMuMDcuNTEuMDcgMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyYzAgLjE4LjAzLjM1LjA3LjUxbC0zLjU2IDMuNTZjLS4xNi0uMDQtLjMzLS4wNy0uNTEtLjA3LTEuMSAwLTIgLjktMiAyIDAgLjE4LjAzLjM1LjA3LjUxbC0zLjU2IDMuNTZDNi4zNSAxNi4wMyA2LjE4IDE2IDYgMTZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyYy43NCAwIDEuMzctLjQgMS43Mi0xaDIuNTdhMS45OCAxLjk4IDAgMCAwIDMuNDQgMGgyLjU1Yy4zNC42Ljk4IDEgMS43MiAxIDEuMSAwIDItLjkgMi0yLS4wMi0xLjEtLjkyLTItMi4wMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaGlzaGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDljMC0xLjMtLjg0LTIuNC0yLTIuODJWMmgtMnY0LjE4QzEzLjg0IDYuNiAxMyA3LjcgMTMgOXMuODQgMi40IDIgMi44MlYxNWMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNHYtMWgzTDUgOXY2YzAgMy4zMSAyLjY5IDYgNiA2czYtMi42OSA2LTZ2LTMuMThjMS4xNi0uNDIgMi0xLjUyIDItMi44MnptLTMgMWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek03LjY0IDE1SDYuNDl2LTQuNWwtLjkuNjYtLjU4LS44OUw2Ljc3IDloLjg3djZ6bTUuODYgMEg5LjYxdi0xLjAyYzEuMDctMS4wNyAxLjc3LTEuNzcgMi4xMy0yLjE1LjQtLjQyLjU0LS42OS41NC0xLjA2IDAtLjQtLjMxLS43Mi0uODEtLjcyLS41MiAwLS44LjM5LS45LjcybC0xLjAxLS40MmMuMDEtLjAyLjE4LS43NiAxLTEuMTUuNjktLjMzIDEuNDgtLjIgMS45NS4wMy44Ni40NC45MSAxLjI0LjkxIDEuNDggMCAuNjQtLjMxIDEuMjYtLjkyIDEuODYtLjI1LjI1LS43Mi43MS0xLjQgMS4zOWwuMDMuMDVoMi4zN1YxNXptNS4yNS0uODVjLS4wOC4xMy0uNTYuODUtMS43Ni44NS0uMDQgMC0xLjYuMDgtMi4wNS0xLjUxbDEuMDMtLjQxYy4wMy4xLjE5Ljg2IDEuMDIuODYuNDEgMCAuODktLjI4Ljg5LS43NyAwLS41NS0uNDgtLjc5LTEuMDQtLjc5aC0uNXYtMWguNDZjLjMzIDAgLjg4LS4xNC44OC0uNzIgMC0uMzktLjMxLS42NS0uNzUtLjY1LS41IDAtLjc0LjMyLS44NS42NGwtLjk5LS40MUMxNS4yIDkuOSAxNS42OCA5IDE2Ljk0IDljMS4wOSAwIDEuNTQuNjQgMS42Mi43NS4zMy41LjI4IDEuMTYuMDIgMS41Ny0uMTUuMjItLjMyLjM4LS41Mi40OHYuMDdjLjI4LjExLjUxLjI4LjY4LjUyLjM3LjUyLjMzIDEuMjcuMDEgMS43NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxheUxlc3NvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTFjLjM0IDAgLjY3LjAzIDEgLjA4VjRjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmg3LjI2QTYuOTk1IDYuOTk1IDAgMCAxIDE4IDExek03IDExVjRoNXY3TDkuNSA5LjUgNyAxMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0tMS4yNSA3LjV2LTVsNCAyLjUtNCAyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFByaWNlQ2hhbmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptLTggNkg4djFoM2MuNTUgMCAxIC40NSAxIDF2M2MwIC41NS0uNDUgMS0xIDFoLTF2MUg4di0xSDZ2LTJoNHYtMUg3Yy0uNTUgMC0xLS40NS0xLTFWOWMwLS41NS40NS0xIDEtMWgxVjdoMnYxaDJ2MnptNCA2LjI1LTItMmg0bC0yIDJ6TTE0IDEwbDItMiAyIDJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFByaWNlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEzVjljMC0uNTUtLjQ1LTEtMS0xSDdWNmg1VjRIOS41VjNoLTJ2MUg2Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWg0djJINXYyaDIuNXYxaDJ2LTFIMTFjLjU1IDAgMS0uNDUgMS0xek0xOS41OSAxMi41MmwtNS42NiA1LjY1LTIuODMtMi44My0xLjQxIDEuNDJMMTMuOTMgMjEgMjEgMTMuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFB1bmNoQ2xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA2aC0xVjFINnY1SDVjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnpNOCAzaDh2M0g4VjN6bTQgMTZjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDExLjVoLTF2Mi43MWwxLjY0IDEuNjQuNzEtLjcxLTEuMzUtMS4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUXVpeiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNS45OSAxM2MtLjU5IDAtMS4wNS0uNDctMS4wNS0xLjA1IDAtLjU5LjQ3LTEuMDQgMS4wNS0xLjA0LjU5IDAgMS4wNC40NSAxLjA0IDEuMDQtLjAxLjU4LS40NSAxLjA1LTEuMDQgMS4wNXptMi41LTYuMTdjLS42My45My0xLjIzIDEuMjEtMS41NiAxLjgxLS4xMy4yNC0uMTguNC0uMTggMS4xOGgtMS41MmMwLS40MS0uMDYtMS4wOC4yNi0xLjY1LjQxLS43MyAxLjE4LTEuMTYgMS42My0xLjguNDgtLjY4LjIxLTEuOTQtMS4xNC0xLjk0LS44OCAwLTEuMzIuNjctMS41IDEuMjNsLTEuMzctLjU3QzExLjUxIDUuOTYgMTIuNTIgNSAxMy45OSA1YzEuMjMgMCAyLjA4LjU2IDIuNTEgMS4yNi4zNy42MS41OCAxLjczLjAxIDIuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjggNy4yIDkgMTBIN0w1Ljg3IDcuMzNINFYxMEgyVjJoNWMxLjEzIDAgMiAuODcgMiAydjEuMzNjMCAuOC0uNTMgMS41NC0xLjIgMS44N3pNNyA0SDR2MS4zM2gzVjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJhZGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS43NCAxOC4zM0E5Ljk4NCA5Ljk4NCAwIDAgMCAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMFMyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwYTkuOTg0IDkuOTg0IDAgMCAwIDcuMTEtMi45N2MuMDMtLjAzLjA1LS4wNi4wNy0uMDguMi0uMi4zOS0uNDEuNTYtLjYyek0xMiAyMGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4YzAgMS44NS0uNjMgMy41NC0xLjY5IDQuOWwtMS40My0xLjQzYy42OS0uOTggMS4xLTIuMTcgMS4xLTMuNDYgMC0zLjMxLTIuNjktNi02LTZzLTYgMi42OS02IDYgMi42OSA2IDYgNmMxLjMgMCAyLjUxLS40MiAzLjQ5LTEuMTNsMS40MiAxLjQyQTcuODIyIDcuODIyIDAgMCAxIDEyIDIwem0xLjkyLTcuNDljLjE3LS42Ni4wMi0xLjM4LS40OS0xLjlsLS4wMi0uMDJjLS43Ny0uNzctMi0uNzgtMi43OC0uMDQtLjAxLjAxLS4wMy4wMi0uMDUuMDQtLjc4Ljc4LS43OCAyLjA1IDAgMi44M2wuMDIuMDJjLjUyLjUxIDEuMjUuNjcgMS45MS40OWwxLjUxIDEuNTFjLS42LjM2LTEuMjkuNTgtMi4wNC41OC0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDRjMCAuNzMtLjIxIDEuNDEtLjU2IDJsLTEuNS0xLjUxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZW1lbWJlck1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxSDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNC4yMWMtMS41LS43Ny0zLjItMS4yMS01LTEuMjFzLTMuNS40NC01IDEuMjFWNmgxMHY5LjIxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIjNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVzZXRUdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTBoLTguMDFWN0w5IDExbDMuOTkgNHYtM0gyMXY1SDNWNWgxOHYzaDJWNWMwLTEuMS0uOS0yLTItMkgzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJ2LTVIMjNjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlc3RhcnRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVWMkw4IDZsNCA0VjdjMy4zMSAwIDYgMi42OSA2IDYgMCAyLjk3LTIuMTcgNS40My01IDUuOTF2Mi4wMmMzLjk1LS40OSA3LTMuODUgNy03LjkzIDAtNC40Mi0zLjU4LTgtOC04ek02IDEzYzAtMS42NS42Ny0zLjE1IDEuNzYtNC4yNEw2LjM0IDcuMzRBOC4wMTQgOC4wMTQgMCAwIDAgNCAxM2MwIDQuMDggMy4wNSA3LjQ0IDcgNy45M3YtMi4wMmMtMi44My0uNDgtNS0yLjk0LTUtNS45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmV2aWV3cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTYuNDMgOS41N0wxMiAxNWwtMS41Ny0zLjQzTDcgMTBsMy40My0xLjU3TDEyIDVsMS41NyAzLjQzTDE3IDEwbC0zLjQzIDEuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJzdnAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDloMS41bC0xLjc1IDZoLTEuNUwxMi41IDlIMTRsMSAzLjQzTDE2IDl6TTUuMSAxMi45IDYgMTVINC41bC0uODUtMkgyLjV2MkgxVjloMy41Yy44NSAwIDEuNS42NSAxLjUgMS41djFjMCAuNi0uNCAxLjE1LS45IDEuNHptLS42LTIuNGgtMnYxaDJ2LTF6bTE3IDIuNWgtMnYySDE4VjloMy41Yy44MyAwIDEuNS42NyAxLjUgMS41djFjMCAuODMtLjY3IDEuNS0xLjUgMS41em0wLTIuNWgtMnYxaDJ2LTF6TTExLjUgOXYxLjVoLTN2Ljc1aDJjLjU1IDAgMSAuNDUgMSAxVjE0YzAgLjU1LS40NSAxLTEgMUg3di0xLjVoM3YtLjc1SDcuNzVjLS40MSAwLS43NS0uMzQtLjc1LS43NXYtMmMwLS41NS40NS0xIDEtMWgzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjcmVlbkxvY2tMYW5kc2NhcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA1SDNjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptLTIgMTJINVY3aDE0djEwem0tOS0xaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXYtMWEyIDIgMCAxIDAtNCAwdjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxem0uOC02YzAtLjY2LjU0LTEuMiAxLjItMS4yLjY2IDAgMS4yLjU0IDEuMiAxLjJ2MWgtMi40di0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY3JlZW5Mb2NrUG9ydHJhaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNmg0Yy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTF2LTFhMiAyIDAgMSAwLTQgMHYxYy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMXptLjgtNmMwLS42Ni41NC0xLjIgMS4yLTEuMi42NiAwIDEuMi41NCAxLjIgMS4ydjFoLTIuNHYtMXpNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMThIN1Y1aDEwdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY3JlZW5Mb2NrUm90YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMy4yNSAxMi43Ny0yLjU3LTIuNTctMS40MSAxLjQxIDIuMjIgMi4yMi01LjY2IDUuNjZMNC41MSA4LjE3bDUuNjYtNS42NiAyLjEgMi4xIDEuNDEtMS40MUwxMS4yMy43NWExLjQ5IDEuNDkgMCAwIDAtMi4xMiAwTDIuNzUgNy4xMWExLjQ5IDEuNDkgMCAwIDAgMCAyLjEybDEyLjAyIDEyLjAyYy41OS41OSAxLjU0LjU5IDIuMTIgMGw2LjM2LTYuMzZjLjU5LS41OS41OS0xLjU0IDAtMi4xMnpNOC40NyAyMC40OEExMC40ODcgMTAuNDg3IDAgMCAxIDIuNSAxMkgxYy41MSA2LjE2IDUuNjYgMTEgMTEuOTUgMTFsLjY2LS4wMy0zLjgxLTMuODItMS4zMyAxLjMzek0xNiA5aDVjLjU1IDAgMS0uNDUgMS0xVjRjMC0uNTUtLjQ1LTEtMS0xdi0uNWEyLjUgMi41IDAgMCAwLTUgMFYzYy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXptLjgtNi41YzAtLjk0Ljc2LTEuNyAxLjctMS43czEuNy43NiAxLjcgMS43VjNoLTMuNHYtLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjcmVlblJvdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNDggMi41MmMzLjI3IDEuNTUgNS42MSA0LjcyIDUuOTcgOC40OGgxLjVDMjMuNDQgNC44NCAxOC4yOSAwIDEyIDBsLS42Ni4wMyAzLjgxIDMuODEgMS4zMy0xLjMyem0tNi4yNS0uNzdhMS40OSAxLjQ5IDAgMCAwLTIuMTIgMEwxLjc1IDguMTFhMS40OSAxLjQ5IDAgMCAwIDAgMi4xMmwxMi4wMiAxMi4wMmMuNTkuNTkgMS41NC41OSAyLjEyIDBsNi4zNi02LjM2Yy41OS0uNTkuNTktMS41NCAwLTIuMTJMMTAuMjMgMS43NXptNC42IDE5LjQ0TDIuODEgOS4xN2w2LjM2LTYuMzYgMTIuMDIgMTIuMDItNi4zNiA2LjM2em0tNy4zMS4yOUExMC40ODcgMTAuNDg3IDAgMCAxIDEuNTUgMTNILjA1Qy41NiAxOS4xNiA1LjcxIDI0IDEyIDI0bC42Ni0uMDMtMy44MS0zLjgxLTEuMzMgMS4zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2NyZWVuU2VhcmNoRGVza3RvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImVuYWJsZUJhY2tncm91bmRcIjpcIm5ldyAwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS42IDE2LjhoNC44djEuOEg5LjZ6XCIsXCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4YzEuMSAwIDEuOTktLjkgMS45OS0yTDIyIDZhMiAyIDAgMCAwLTItMkg0Yy0xLjExIDAtMiAuODktMiAydjEwYTIgMiAwIDAgMCAyIDJIMHYyaDI0di0yaC00Wk00IDE2VjZoMTZ2MTAuMDFMNCAxNlptNS4wOTctNi4wNDdjMC0xLjAyNy44MzYtMS44NjQgMS44NjQtMS44NjQgMS4wMjcgMCAxLjg2NC44MzcgMS44NjQgMS44NjRhMS44NjcgMS44NjcgMCAwIDEtMS44NjQgMS44NjQgMS44NjcgMS44NjcgMCAwIDEtMS44NjQtMS44NjRabTcuMDMyIDQuMjM2LTIuNDgyLTIuNDgyYTMuMTkgMy4xOSAwIDAgMCAuNTI3LTEuNzU0QTMuMjE2IDMuMjE2IDAgMCAwIDEwLjk2IDYuNzRhMy4yMTcgMy4yMTcgMCAwIDAtMy4yMTQgMy4yMTMgMy4yMTggMy4yMTggMCAwIDAgMy4yMTQgMy4yMTQgMy4xOSAzLjE5IDAgMCAwIDEuNzI0LS41MWwyLjQ4OSAyLjQ4Ny45NTUtLjk1NVpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCIsXCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjcmVlbnNob3RNb25pdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNHYyaDh2LTJoNGMxLjEgMCAyLS45IDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTRINFY1aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgNy41SDlWNkg1djRoMS41ek0xOSAxMmgtMS41djIuNUgxNVYxNmg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY3JlZW5zaG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOEg3VjZoMTB2MTJ6TTkuNSA4LjVIMTJWN0g4djRoMS41VjguNXpNMTIgMTdoNHYtNGgtMS41djIuNUgxMlYxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2RTdG9yYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMmgtOEw0LjAyIDggNCAyMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS02IDZoLTJWNGgydjR6bTMgMGgtMlY0aDJ2NHptMyAwaC0yVjRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZWN1cml0eVVwZGF0ZUdvb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDFIN2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE3SDdWNmgxMHYxMnptLTEtNy45NS0xLjQxLTEuNDEtMy41NCAzLjU0LTEuNDEtMS40MS0xLjQxIDEuNDFMMTEuMDUgMTUgMTYgMTAuMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlY3VyaXR5VXBkYXRlV2FybmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTVoMnYyaC0yek0xMSA3aDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMUg3Yy0xLjEgMC0xLjk5LjktMS45OSAydjE4YzAgMS4xLjg5IDIgMS45OSAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTdIN1Y2aDEwdjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZWN1cml0eVVwZGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAzdjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMkg3Yy0xLjEgMC0yIC45LTIgMnptMTIgMTVIN1Y2aDEwdjEyem0tMS02aC0zVjhoLTJ2NEg4bDQgNCA0LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjQxIDExLjQxLTguODMtOC44M2MtLjM3LS4zNy0uODgtLjU4LTEuNDEtLjU4SDRjLTEuMSAwLTIgLjktMiAydjcuMTdjMCAuNTMuMjEgMS4wNC41OSAxLjQxbDguODMgOC44M2MuNzguNzggMi4wNS43OCAyLjgzIDBsNy4xNy03LjE3Yy43OC0uNzguNzgtMi4wNC0uMDEtMi44M3pNNi41IDhDNS42NyA4IDUgNy4zMyA1IDYuNVM1LjY3IDUgNi41IDUgOCA1LjY3IDggNi41IDcuMzMgOCA2LjUgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VuZFRvTW9iaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTdoMnY0YzAgMS4xLS45IDItMiAySDdjLTEuMSAwLTItLjktMi0yVjNjMC0xLjEuOS0xLjk5IDItMS45OUwxNyAxYzEuMSAwIDIgLjkgMiAydjRoLTJWNkg3djEyaDEwdi0xem01LTUtNC00djNoLTV2Mmg1djNsNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXR0aW5nc1N1Z2dlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy40MSA2LjU5IDE1IDUuNWwyLjQxLTEuMDlMMTguNSAybDEuMDkgMi40MUwyMiA1LjVsLTIuNDEgMS4wOUwxOC41IDlsLTEuMDktMi40MXptMy44NyA2LjEzTDIwLjUgMTFsLS43OCAxLjcyLTEuNzIuNzggMS43Mi43OC43OCAxLjcyLjc4LTEuNzJMMjMgMTMuNWwtMS43Mi0uNzh6bS01LjA0IDEuNjUgMS45NCAxLjQ3LTIuNSA0LjMzLTIuMjQtLjk0Yy0uMi4xMy0uNDIuMjYtLjY0LjM3bC0uMyAyLjRoLTVsLS4zLTIuNDFjLS4yMi0uMTEtLjQzLS4yMy0uNjQtLjM3bC0yLjI0Ljk0LTIuNS00LjMzIDEuOTQtMS40N2MtLjAxLS4xMS0uMDEtLjI0LS4wMS0uMzZzMC0uMjUuMDEtLjM3bC0xLjk0LTEuNDcgMi41LTQuMzMgMi4yNC45NGMuMi0uMTMuNDItLjI2LjY0LS4zN0w3LjUgNmg1bC4zIDIuNDFjLjIyLjExLjQzLjIzLjY0LjM3bDIuMjQtLjk0IDIuNSA0LjMzLTEuOTQgMS40N2MuMDEuMTIuMDEuMjQuMDEuMzdzMCAuMjQtLjAxLjM2ek0xMyAxNGMwLTEuNjYtMS4zNC0zLTMtM3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzIDMtMS4zNCAzLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNldHRpbmdzU3lzdGVtRGF5ZHJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE2aDYuNWEyLjUgMi41IDAgMCAwIDAtNWgtLjA1Yy0uMjQtMS42OS0xLjY5LTMtMy40NS0zLTEuNCAwLTIuNi44My0zLjE2IDIuMDJoLS4xNkEyLjk5NCAyLjk5NCAwIDAgMCA2IDEzYzAgMS42NiAxLjM0IDMgMyAzek0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOTloMTh2MTQuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNoYXJlTG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjAyIDE5LjkzdjIuMDJjMi4wMS0uMiAzLjg0LTEgNS4zMi0yLjIxbC0xLjQyLTEuNDNhNy45NDEgNy45NDEgMCAwIDEtMy45IDEuNjJ6TTQuMDMgMTJjMC00LjA1IDMuMDMtNy40MSA2Ljk1LTcuOTNWMi4wNUM1Ljk1IDIuNTggMi4wMyA2Ljg0IDIuMDMgMTJjMCA1LjE2IDMuOTIgOS40MiA4Ljk1IDkuOTV2LTIuMDJjLTMuOTItLjUyLTYuOTUtMy44OC02Ljk1LTcuOTN6TTE5Ljk1IDExaDIuMDJjLS4yLTIuMDEtMS0zLjg0LTIuMjEtNS4zMmwtMS40MyAxLjQzYy44NiAxLjEgMS40NCAyLjQzIDEuNjIgMy44OXpNMTguMzQgNC4yNmE5Ljk4MSA5Ljk4MSAwIDAgMC01LjMyLTIuMjF2Mi4wMmMxLjQ2LjE4IDIuNzkuNzYgMy45IDEuNjJsMS40Mi0xLjQzek0xOC4zMyAxNi45bDEuNDMgMS40MkE5Ljk0OSA5Ljk0OSAwIDAgMCAyMS45NyAxM2gtMi4wMmE3Ljk0MSA3Ljk0MSAwIDAgMS0xLjYyIDMuOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTEuMUMxNiA4LjYxIDE0LjEgNyAxMiA3cy00IDEuNjEtNCA0LjFjMCAxLjY2IDEuMzMgMy42MyA0IDUuOSAyLjY3LTIuMjcgNC00LjI0IDQtNS45em0tNCAuOWExLjA3MSAxLjA3MSAwIDAgMSAwLTIuMTRBMS4wNzEgMS4wNzEgMCAwIDEgMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNob3J0Y3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMSAxMS02LTZ2NUg4Yy0yLjc2IDAtNSAyLjI0LTUgNXY0aDJ2LTRjMC0xLjY1IDEuMzUtMyAzLTNoN3Y1bDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXIwQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNi44M1YyMEg2LjgzTDIwIDYuODNNMjIgMiAyIDIyaDIwVjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbENlbGx1bGFyNEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMjJoMjBWMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXJBbHQxQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNGgzdjZINXYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXJBbHQyQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNGgzdjZINXYtNnptNi01aDN2MTFoLTNWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA0aDN2MTZoLTN6TTUgMTRoM3Y2SDV6bTYtNWgzdjExaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxDZWxsdWxhckNvbm5lY3RlZE5vSW50ZXJuZXQwQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMThoMnYtOGgtMnY4em0wIDRoMnYtMmgtMnYyem0tMi0ydjJIMkwyMiAydjZoLTJWNi44M0w2LjgzIDIwSDE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxDZWxsdWxhckNvbm5lY3RlZE5vSW50ZXJuZXQ0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOGgydi04aC0ydjh6bTAgNGgydi0yaC0ydjJ6TTIgMjJoMTZWOGg0VjJMMiAyMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXJOb1NpbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNLTYxOC0yODcySDc4MlY3MjhILTYxOHpNLTEgMGgyNnYyNEgtMXptMSAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ljk5IDVjMC0xLjEtLjg5LTItMS45OS0yaC03TDcuNjYgNS4zNCAxOSAxNi42OCAxOC45OSA1ek0zLjY1IDMuODggMi4zOCA1LjE1IDUgNy43N1YxOWMwIDEuMS45IDIgMiAyaDEwLjAxYy4zNSAwIC42Ny0uMS45Ni0uMjZsMS44OCAxLjg4IDEuMjctMS4yN0wzLjY1IDMuODh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTS4wMSAwaDI0djI0aC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXJOb2RhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEzaC05djlIMkwyMiAydjExem0tMSAyLjQxTDE5LjU5IDE0bC0yLjA5IDIuMDlMMTUuNDEgMTQgMTQgMTUuNDFsMi4wOSAyLjA5TDE0IDE5LjU5IDE1LjQxIDIxbDIuMDktMi4wOEwxOS41OSAyMSAyMSAxOS41OWwtMi4wOC0yLjA5TDIxIDE1LjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxDZWxsdWxhck51bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2LjgzVjIwSDYuODNMMjAgNi44M00yMiAyIDIgMjJoMjBWMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMSAxLTguNTkgOC41OUwyMSAxOC4xOFYxek00Ljc3IDQuNSAzLjUgNS43N2w2LjM2IDYuMzZMMSAyMWgxNy43M2wyIDJMMjIgMjEuNzMgNC43NyA0LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmkwQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMzLjMzIDAgNi40OSAxLjA4IDkuMDggMy4wN0wxMiAxOC4xN2wtOS4wOC05LjFDNS41MSA3LjA4IDguNjcgNiAxMiA2bTAtMkM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaTRCYXJMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45OCAxMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OGw2LjM1IDYuMzZMMTIgMjFsMy4wNS0zLjA1VjE1YzAtLjQ1LjA5LS44OC4yMy0xLjI5LjU0LTEuNTcgMi4wMS0yLjcxIDMuNzctMi43MWgyLjkzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNnYtMWMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2MWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xem0tMSAwaC0ydi0xYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpNEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjAxIDIxLjQ5IDIzLjY0IDdjLS40NS0uMzQtNC45My00LTExLjY0LTRDNS4yOCAzIC44MSA2LjY2LjM2IDdsMTEuNjMgMTQuNDkuMDEuMDEuMDEtLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpQmFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMXYtOWg4Ljk5TDI0IDguOTh6TTE5LjU5IDE0bC0yLjA5IDIuMDlMMTUuNDEgMTQgMTQgMTUuNDFsMi4wOSAyLjA5TDE0IDE5LjU5IDE1LjQxIDIxbDIuMDktMi4wOEwxOS41OSAyMSAyMSAxOS41OWwtMi4wOC0yLjA5TDIxIDE1LjQxIDE5LjU5IDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpQ29ubmVjdGVkTm9JbnRlcm5ldDQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxdi05aDguOTlMMjQgOC45OHpNMTkuNTkgMTRsLTIuMDkgMi4wOUwxNS40MSAxNCAxNCAxNS40MWwyLjA5IDIuMDlMMTQgMTkuNTkgMTUuNDEgMjFsMi4wOS0yLjA4TDE5LjU5IDIxIDIxIDE5LjU5bC0yLjA4LTIuMDlMMjEgMTUuNDEgMTkuNTkgMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMy42NCA3Yy0uNDUtLjM0LTQuOTMtNC0xMS42NC00LTEuNSAwLTIuODkuMTktNC4xNS40OEwxOC4xOCAxMy44IDIzLjY0IDd6bS02LjYgOC4yMkwzLjI3IDEuNDQgMiAyLjcybDIuMDUgMi4wNkMxLjkxIDUuNzYuNTkgNi44Mi4zNiA3bDExLjYzIDE0LjQ5LjAxLjAxLjAxLS4wMSAzLjktNC44NiAzLjMyIDMuMzIgMS4yNy0xLjI3LTMuNDYtMy40NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaVN0YXR1c2JhcjRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmlTdGF0dXNiYXJDb25uZWN0ZWROb0ludGVybmV0NCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxbDUtNS4wMVY4aDUuOTJDMTkuOTcgNS41MSAxNi4xNiA0IDEyIDR6TTE5IDE4aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTBoMnY2aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpU3RhdHVzYmFyTnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNHpNMi45MiA5LjA3QzUuNTEgNy4wOCA4LjY3IDYgMTIgNnM2LjQ5IDEuMDggOS4wOCAzLjA3TDEyIDE4LjE3bC05LjA4LTkuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2ltQ2FyZERvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyaC04TDQgOHYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS02IDE1LTQtNGgzVjkuMDJMMTMgOXY0aDNsLTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BsaXRzY3JlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDR2NUg2VjRoMTJtMC0ySDZjLTEuMSAwLTIgLjktMiAydjVjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDEzdjVINnYtNWgxMm0wLTJINmMtMS4xIDAtMiAuOS0yIDJ2NWMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi01YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNTY29yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNkg5VjRoMnYyem00LTJoLTJ2MmgyVjR6TTkgMTRoMnYtMkg5djJ6bTEwLTRWOGgtMnYyaDJ6bTAgNHYtMmgtMnYyaDJ6bS02IDBoMnYtMmgtMnYyem02LTEwaC0ydjJoMlY0em0tNiA0VjZoLTJ2Mmgyem0tNiAyVjhoMlY2SDdWNEg1djE2aDJ2LThoMnYtMkg3em04IDJoMnYtMmgtMnYyem0tNC0ydjJoMnYtMmgtMnpNOSA4djJoMlY4SDl6bTQgMmgyVjhoLTJ2MnptMi00djJoMlY2aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTc2lkQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA1LjQ3IDEyIDEyIDcuNjIgNy42MiAzIDExVjguNTJMNy44MyA1bDQuMzggNC4zOEwyMSAzdjIuNDd6TTIxIDE1aC00LjdsLTQuMTcgMy4zNEw2IDEyLjQxbC0zIDIuMTNWMTdsMi44LTIgNi4yIDYgNS00aDR2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0b3JhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDIwaDIwdi00SDJ2NHptMi0zaDJ2Mkg0di0yek0yIDR2NGgyMFY0SDJ6bTQgM0g0VjVoMnYyem0tNCA3aDIwdi00SDJ2NHptMi0zaDJ2Mkg0di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdG9ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTMgOEMxNi43MiA0LjE4IDExLjgyIDIuODcgOCA1LjA3Yy0xLjQxLjgyLTIuNDggMi0zLjE2IDMuMzctLjEzLTIuMi4yMi00LjQgMS4wMi02LjQ0SDMuNzRDMi4yIDYuNDkgMi41MiAxMS41OCA1LjA3IDE2YTcuOTYgNy45NiAwIDAgMCA0Ljg2IDMuNzJjMS45OC41MyA0LjE2LjMxIDYuMDctLjc5IDEuNDEtLjgyIDIuNDgtMiAzLjE2LTMuMzcuMTMgMi4yLS4yMSA0LjQtMS4wMSA2LjQ0aDIuMTFjMS41My00LjQ5IDEuMjItOS41OC0xLjMzLTE0ek0xNSAxNy4yQTYuMDEyIDYuMDEyIDAgMCAxIDYuOCAxNWMtLjExLS4yLS4yMS0uNC0uMy0uNi0xLjItMi43Ni0uMTctNi4wNiAyLjUtNy42IDIuODYtMS42NSA2LjU0LS42NyA4LjIgMi4yLjExLjIuMjEuNC4zLjYgMS4yIDIuNzYuMTcgNi4wNi0yLjUgNy42ek0xMiAxMGMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJtMC0yYy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3VtbWFyaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAzSDVjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMyAxOWMwIDEuMS44OSAyIDEuOTkgMkgxOWMxLjEgMCAyLS45IDItMlY5bC02LTZ6TTggMTdjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMC00Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTAtNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem02IDFWNC41bDUuNSA1LjVIMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN5c3RlbVNlY3VyaXR5VXBkYXRlR29vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTdIN1Y2aDEwdjEyem0tMS03Ljk1LTEuNDEtMS40MS0zLjU0IDMuNTQtMS40MS0xLjQxLTEuNDEgMS40MUwxMS4wNSAxNSAxNiAxMC4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3lzdGVtU2VjdXJpdHlVcGRhdGVXYXJuaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNWgydjJoLTJ6TTExIDdoMnY2aC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxSDdjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2MThjMCAxLjEuODkgMiAxLjk5IDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxN0g3VjZoMTB2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN5c3RlbVNlY3VyaXR5VXBkYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDN2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAyem0xMiAxNUg3VjZoMTB2MTJ6bS0xLTZoLTNWOGgtMnY0SDhsNCA0IDQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGFzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0tMy4wNiAxNkw3LjQgMTQuNDZsMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjQgMS40MSAxLjQxTDEwLjk0IDE4ek0xMyA5VjMuNUwxOC41IDlIMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRoZXJtb3N0YXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDEzVjVjMC0xLjY2LTEuMzQtMy0zLTNTOSAzLjM0IDkgNXY4Yy0xLjIxLjkxLTIgMi4zNy0yIDQgMCAyLjc2IDIuMjQgNSA1IDVzNS0yLjI0IDUtNWMwLTEuNjMtLjc5LTMuMDktMi00em0tNC0yVjVjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjFoLTF2MWgxdjJoLTF2MWgxdjFoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRpbWVyMTBTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA4djhoLTNWOGgzbTAtM2gtM0M4LjM0IDUgNyA2LjM0IDcgOHY4YzAgMS42NiAxLjM0IDMgMyAzaDNjMS42NiAwIDMtMS4zNCAzLTNWOGMwLTEuNjYtMS4zNC0zLTMtM3pNMSA4aDJ2MTFoM1Y1SDF2M3ptMTcuNSAzYy0uODMgMC0xLjUuNjgtMS41IDEuNXYyYzAgLjgyLjY3IDEuNSAxLjUgMS41SDIxdjFoLTR2Mmg0LjVjLjgzIDAgMS41LS42NyAxLjUtMS41di0yYzAtLjgzLS42Ny0xLjUtMS41LTEuNUgxOXYtMWg0di0yaC00LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRpbWVyM1NlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDExdjJoLTR2MWgyLjVjLjgzIDAgMS41LjY4IDEuNSAxLjV2MmMwIC44My0uNjcgMS41LTEuNSAxLjVIMTV2LTJoNHYtMWgtMi41Yy0uODIgMC0xLjUtLjY4LTEuNS0xLjV2LTJjMC0uODIuNjgtMS41IDEuNS0xLjVIMjF6TTQgNXYzaDZ2Mi41SDR2M2g2VjE2SDR2M2g2YzEuNjYgMCAzLTEuMzQgMy0zdi0xLjlhMi4xIDIuMSAwIDAgMC0yLjEtMi4xQTIuMSAyLjEgMCAwIDAgMTMgOS45VjhjMC0xLjY2LTEuMzQtMy0zLTNINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHVuZ3N0ZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE5aDJ2M2gtMnpNMiAxMWgzdjJIMnpNMTkgMTFoM3YyaC0zek0xNS44OTQgMTcuODAxbDEuNDA3LTEuNDA3IDIuMTIyIDIuMTIyLTEuNDA4IDEuNDA3ek00LjU4NCAxOC41MDlsMi4xMjEtMi4xMjIgMS40MDggMS40MDctMi4xMjIgMi4xMjJ6TTE1IDguMDJWM0g5djUuMDJjLTEuMjEuOTItMiAyLjM1LTIgMy45OCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01YzAtMS42My0uNzktMy4wNi0yLTMuOTh6TTExIDVoMnYyLjFjLS4zMi0uMDYtLjY2LS4xLTEtLjFzLS42OC4wNC0xIC4xVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFVzYk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDhoNHY0aC0xdjJjMCAuMzQtLjA4LjY2LS4yMy45NEwxNiAxMy4xN1YxMmgtMVY4em0tNCAuMTcgMiAyVjZoMmwtMy00LTMgNGgydjIuMTd6TTEzIDE2djIuMjhjLjYuMzQgMSAuOTggMSAxLjcyIDAgMS4xLS45IDItMiAycy0yLS45LTItMmMwLS43NC40LTEuMzcgMS0xLjcyVjE2SDhjLTEuMTEgMC0yLS44OS0yLTJ2LTIuMjhjLS42LS4zNC0xLS45OC0xLTEuNzIgMC0uNTkuMjYtMS4xMy42OC0xLjQ5TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQxIDEuNDEtNi42LTYuNkgxM3ptLTItMnYtLjE3bC0yLjUxLTIuNTFjLS4xNC4xNi0uMzEuMjktLjQ5LjRWMTRoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVXNiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgN3Y0aDF2MmgtM1Y1aDJsLTMtNC0zIDRoMnY4SDh2LTIuMDdjLjctLjM3IDEuMi0xLjA4IDEuMi0xLjkzIDAtMS4yMS0uOTktMi4yLTIuMi0yLjItMS4yMSAwLTIuMi45OS0yLjIgMi4yIDAgLjg1LjUgMS41NiAxLjIgMS45M1YxM2MwIDEuMTEuODkgMiAyIDJoM3YzLjA1Yy0uNzEuMzctMS4yIDEuMS0xLjIgMS45NWEyLjIgMi4yIDAgMCAwIDQuNCAwYzAtLjg1LS40OS0xLjU4LTEuMi0xLjk1VjE1aDNjMS4xMSAwIDItLjg5IDItMnYtMmgxVjdoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdhbGxwYXBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNGg3VjJINGMtMS4xIDAtMiAuOS0yIDJ2N2gyVjR6bTYgOS00IDVoMTJsLTMtNC0yLjAzIDIuNzFMMTAgMTN6bTctNC41YzAtLjgzLS42Ny0xLjUtMS41LTEuNVMxNCA3LjY3IDE0IDguNXMuNjcgMS41IDEuNSAxLjVTMTcgOS4zMyAxNyA4LjV6TTIwIDJoLTd2Mmg3djdoMlY0YzAtMS4xLS45LTItMi0yem0wIDE4aC03djJoN2MxLjEgMCAyLS45IDItMnYtN2gtMnY3ek00IDEzSDJ2N2MwIDEuMS45IDIgMiAyaDd2LTJINHYtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2F0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk4IDE0SDIyaC0uMDJ6TTUuMzUgMTNjMS4xOSAwIDEuNDIgMSAzLjMzIDEgMS45NSAwIDIuMDktMSAzLjMzLTEgMS4xOSAwIDEuNDIgMSAzLjMzIDEgMS45NSAwIDIuMDktMSAzLjMzLTEgMS4xOSAwIDEuNC45OCAzLjMxIDF2LTJjLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxdjJjMS45IDAgMi4xNy0xIDMuMzUtMXptMTMuMzIgMmMtMS45NSAwLTIuMDkgMS0zLjMzIDEtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMSAxLTMuMzQgMS0xLjI0IDAtMS4zOC0xLTMuMzMtMS0xLjk1IDAtMi4xIDEtMy4zNCAxdjJjMS45NSAwIDIuMTEtMSAzLjM0LTEgMS4yNCAwIDEuMzggMSAzLjMzIDEgMS45NSAwIDIuMS0xIDMuMzQtMSAxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk0IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40MiAxIDMuMzMgMXYtMmMtMS4yNCAwLTEuMzgtMS0zLjMzLTF6TTUuMzUgOWMxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40Ljk4IDMuMzEgMVY4Yy0xLjE5IDAtMS40Mi0xLTMuMzMtMS0xLjk1IDAtMi4wOSAxLTMuMzMgMS0xLjE5IDAtMS40Mi0xLTMuMzMtMS0xLjk1IDAtMi4wOSAxLTMuMzMgMS0xLjE5IDAtMS40Mi0xLTMuMzMtMUMzLjM4IDcgMy4yNCA4IDIgOHYyYzEuOSAwIDIuMTctMSAzLjM1LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZGdldHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxM3Y4aDh2LThoLTh6TTMgMjFoOHYtOEgzdjh6TTMgM3Y4aDhWM0gzem0xMy42Ni0xLjMxTDExIDcuMzQgMTYuNjYgMTNsNS42Ni01LjY2LTUuNjYtNS42NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaTFCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41MyAxNy40NiAxMiAyMWwtMy41My0zLjU0Yy45LS45IDIuMTUtMS40NiAzLjUzLTEuNDZzMi42My41NiAzLjUzIDEuNDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmkyQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMGMzLjAzIDAgNS43OCAxLjIzIDcuNzYgMy4yMmwtMi4xMiAyLjEyQTcuOTY3IDcuOTY3IDAgMCAwIDEyIDEzYy0yLjIgMC00LjIuOS01LjY0IDIuMzVsLTIuMTItMi4xMkM2LjIyIDExLjIzIDguOTcgMTAgMTIgMTB6bTAgNmMtMS4zOCAwLTIuNjMuNTYtMy41MyAxLjQ2TDEyIDIxbDMuNTMtMy41NEE0Ljk4IDQuOTggMCAwIDAgMTIgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmlDYWxsaW5nMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNDkgM2MtMi4yMSAwLTQuMjEuOS01LjY2IDIuMzRsMS4wNiAxLjA2YTYuNDcgNi40NyAwIDAgMSA5LjE4IDBsMS4wNi0xLjA2QTcuOTMyIDcuOTMyIDAgMCAwIDE2LjQ5IDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjAzIDcuNDZhNS4wMjIgNS4wMjIgMCAwIDAtNy4wOCAwbDEuMDYgMS4wNmMuNjMtLjYzIDEuNTEtMS4wMyAyLjQ3LTEuMDNzMS44NC4zOSAyLjQ3IDEuMDNsMS4wOC0xLjA2ek0xNS4wOCA5LjU5IDE2LjQ5IDExbDEuNDEtMS40MWMtLjM2LS4zNy0uODYtLjU5LTEuNDEtLjU5cy0xLjA1LjIyLTEuNDEuNTl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjYzIDE0LjQtMi41MiAyLjVjLTIuNS0xLjQzLTQuNTctMy41LTYtNmwyLjUtMi41MmMuMjMtLjI0LjMzLS41Ny4yNy0uOUw5LjEzIDMuOGMtLjA5LS40Ni0uNS0uOC0uOTgtLjhINGMtLjU2IDAtMS4wMy40Ny0xIDEuMDMuMTcgMi44OSAxLjA1IDUuNiAyLjQzIDcuOTcgMS41OCAyLjczIDMuODUgNC45OSA2LjU3IDYuNTcgMi4zNyAxLjM3IDUuMDggMi4yNiA3Ljk3IDIuNDMuNTYuMDMgMS4wMy0uNDQgMS4wMy0xdi00LjE1YzAtLjQ4LS4zNC0uODktLjgtLjk4bC0zLjY3LS43M2EuOTg1Ljk4NSAwIDAgMC0uOS4yNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaUNoYW5uZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAzYy0yLjUxIDAtMy43NyA1LjYxLTQuNCAxMC41N0MxMC43OSAxMC42NiA5LjYxIDggOCA4IDQuNDMgOCAzIDIxIDMgMjFoMi4wMWMuNjEtNS4yNyAyLTkuODIgMi45OS0xMC44Ny45OCAxLjA1IDIuMzggNS42MSAyLjk5IDEwLjg3SDEzYy41LTIuNTMgMi02IDMtNnMyLjUgMy41MyAzIDZoMnMtLjUtMTgtNS0xOHptMCAxMGMtLjk5IDAtMS44Mi42Mi0yLjUgMS41LjU3LTQuNzcgMS41NC04LjYyIDIuNS05LjQ0Ljk3LjgxIDEuOTEgNC42NyAyLjQ5IDkuNDNDMTcuODEgMTMuNjIgMTYuOTggMTMgMTYgMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmlGaW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTRjMC0zLjM2IDIuNjQtNiA2LTYgMi4yIDAgNC4wOCAxLjEzIDUuMTMgMi44NkwyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMWwxLjg2LTEuODdDMTIuMTQgMTguMDkgMTEgMTYuMiAxMSAxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTRjMC0yLjI0LTEuNzYtNC00LTRzLTQgMS43Ni00IDQgMS43NiA0IDQgNGMuNzUgMCAxLjQ0LS4yMSAyLjAzLS41NkwyMS41OSAyMCAyMyAxOC41OWwtMi41Ni0yLjU2Yy4zNS0uNTkuNTYtMS4yOC41Ni0yLjAzem0tNiAwYzAtMS4xMi44OC0yIDItMnMyIC44OCAyIDItLjg4IDItMiAyLTItLjg4LTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaUxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk4IDExIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4bDYuMzUgNi4zNkwxMiAyMWwzLjA1LTMuMDVWMTVjMC0uNDUuMDktLjg4LjIzLTEuMjkuNTQtMS41NyAyLjAxLTIuNzEgMy43Ny0yLjcxaDIuOTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE2di0xYzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYxYy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTF6bS0xIDBoLTJ2LTFjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmlQYXNzd29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDE5di0xYzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYxYy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTF6bS0xIDBoLTJ2LTFjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjF6bTItMTAuMDItMi4xMiAyLjEzQzE5LjM1IDguNTcgMTUuODUgNyAxMiA3cy03LjM1IDEuNTctOS44OCA0LjExTDAgOC45OEMzLjA3IDUuOSA3LjMxIDQgMTIgNHM4LjkzIDEuOSAxMiA0Ljk4ek0xMiAxMGMzLjAzIDAgNS43OCAxLjIzIDcuNzYgMy4yMmwtMi4xMiAyLjEyQTcuOTY3IDcuOTY3IDAgMCAwIDEyIDEzYy0yLjIgMC00LjIuOS01LjY0IDIuMzVsLTIuMTItMi4xMkM2LjIyIDExLjIzIDguOTcgMTAgMTIgMTB6bTMuNTMgNy40NkwxMiAyMWwtMy41My0zLjU0Yy45LS45IDIuMTUtMS40NiAzLjUzLTEuNDZzMi42My41NiAzLjUzIDEuNDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmlUZXRoZXJpbmdFcnJvclJvdW5kZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdjLTMuMzEgMC02IDIuNjktNiA2IDAgMS42Ni42OCAzLjE1IDEuNzYgNC4yNGwxLjQyLTEuNDJBMy45MzQgMy45MzQgMCAwIDEgOCAxM2MwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0YzAgMS4xMS0uNDUgMi4xLTEuMTggMi44MmwxLjQyIDEuNDJBNi4wMDMgNi4wMDMgMCAwIDAgMTggMTNjMC0zLjMxLTIuNjktNi02LTZ6bTAtNEM2LjQ4IDMgMiA3LjQ4IDIgMTNjMCAyLjc2IDEuMTIgNS4yNiAyLjkzIDcuMDdsMS40Mi0xLjQyQTcuOTQgNy45NCAwIDAgMSA0IDEzYzAtNC40MiAzLjU4LTggOC04IDIuNTMgMCA0Ljc4IDEuMTcgNi4yNCAzaDIuNDJDMTguOTMgNS4wMSAxNS43IDMgMTIgM3ptMCA4Yy0xLjEgMC0yIC45LTIgMiAwIC41NS4yMyAxLjA1LjU5IDEuNDEuMzYuMzYuODYuNTkgMS40MS41OXMxLjA1LS4yMyAxLjQxLS41OWMuMzYtLjM2LjU5LS44Ni41OS0xLjQxIDAtMS4xLS45LTItMi0yem04LTFoMnY2aC0ydi02em0wIDhoMnYyaC0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWZpVGV0aGVyaW5nRXJyb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdjLTMuMzEgMC02IDIuNjktNiA2IDAgMS42Ni42OCAzLjE1IDEuNzYgNC4yNGwxLjQyLTEuNDJBMy45MzQgMy45MzQgMCAwIDEgOCAxM2MwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0YzAgMS4xMS0uNDUgMi4xLTEuMTggMi44MmwxLjQyIDEuNDJBNi4wMDMgNi4wMDMgMCAwIDAgMTggMTNjMC0zLjMxLTIuNjktNi02LTZ6bTAtNEM2LjQ4IDMgMiA3LjQ4IDIgMTNjMCAyLjc2IDEuMTIgNS4yNiAyLjkzIDcuMDdsMS40Mi0xLjQyQTcuOTQgNy45NCAwIDAgMSA0IDEzYzAtNC40MiAzLjU4LTggOC04IDIuNTMgMCA0Ljc4IDEuMTcgNi4yNCAzaDIuNDJDMTguOTMgNS4wMSAxNS43IDMgMTIgM3ptMCA4Yy0xLjEgMC0yIC45LTIgMiAwIC41NS4yMyAxLjA1LjU5IDEuNDEuMzYuMzYuODYuNTkgMS40MS41OXMxLjA1LS4yMyAxLjQxLS41OWMuMzYtLjM2LjU5LS44Ni41OS0xLjQxIDAtMS4xLS45LTItMi0yem04LTFoMnY2aC0ydi02em0wIDhoMnYyaC0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWZpVGV0aGVyaW5nT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjgxIDIuODEgMS4zOSA0LjIybDIuNjkgMi42OUE5Ljk1OCA5Ljk1OCAwIDAgMCAyIDEzYzAgMi43NiAxLjEyIDUuMjYgMi45MyA3LjA3bDEuNDItMS40MmE3Ljk1NyA3Ljk1NyAwIDAgMS0uODQtMTAuMzFsMS40MyAxLjQzYTYuMDAzIDYuMDAzIDAgMCAwIC44MiA3LjQ3bDEuNDItMS40MkEzLjkzNCAzLjkzNCAwIDAgMSA4IDEzYzAtLjYzLjE1LTEuMjMuNDEtMS43NmwxLjYxIDEuNjFjMCAuMDUtLjAyLjEtLjAyLjE1IDAgLjU1LjIzIDEuMDUuNTkgMS40MS4zNi4zNi44Ni41OSAxLjQxLjU5LjA1IDAgLjEtLjAxLjE2LS4wMmw3LjYyIDcuNjIgMS40MS0xLjQxTDIuODEgMi44MXpNMTcuNyAxNC44N2MuMTktLjU5LjMtMS4yMi4zLTEuODcgMC0zLjMxLTIuNjktNi02LTYtLjY1IDAtMS4yOC4xLTEuODcuM2wxLjcxIDEuNzFDMTEuODkgOSAxMS45NSA5IDEyIDljMi4yMSAwIDQgMS43OSA0IDQgMCAuMDUgMCAuMTEtLjAxLjE2bDEuNzEgMS43MXpNMTIgNWM0LjQyIDAgOCAzLjU4IDggOCAwIDEuMjItLjI3IDIuMzctLjc3IDMuNGwxLjQ5IDEuNDlBOS45NTMgOS45NTMgMCAwIDAgMjIgMTNjMC01LjUyLTQuNDgtMTAtMTAtMTAtMS43OCAwLTMuNDQuNDYtNC44OSAxLjI4bDEuNDggMS40OEM5LjYzIDUuMjcgMTAuNzggNSAxMiA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWZpVGV0aGVyaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTFjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem02IDJjMC0zLjMxLTIuNjktNi02LTZzLTYgMi42OS02IDZjMCAyLjIyIDEuMjEgNC4xNSAzIDUuMTlsMS0xLjc0Yy0xLjE5LS43LTItMS45Ny0yLTMuNDUgMC0yLjIxIDEuNzktNCA0LTRzNCAxLjc5IDQgNGMwIDEuNDgtLjgxIDIuNzUtMiAzLjQ1bDEgMS43NGMxLjc5LTEuMDQgMy0yLjk3IDMtNS4xOXpNMTIgM0M2LjQ4IDMgMiA3LjQ4IDIgMTNjMCAzLjcgMi4wMSA2LjkyIDQuOTkgOC42NWwxLTEuNzNDNS42MSAxOC41MyA0IDE1Ljk2IDQgMTNjMC00LjQyIDMuNTgtOCA4LThzOCAzLjU4IDggOGMwIDIuOTYtMS42MSA1LjUzLTQgNi45MmwxIDEuNzNjMi45OS0xLjczIDUtNC45NSA1LTguNjUgMC01LjUyLTQuNDgtMTAtMTAtMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZENoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDkuOTloMnY3SDZ6bTggM2gydjRoLTJ6bS00LTZoMnYxMGgtMnpNMjAgN1Y0aC0ydjNoLTN2MmgzdjNoMlY5aDNWN3ptLTIgMTJINFY1aDEyVjNINGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtNWgtMnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRDb21tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45OSA0YzAtMS4xLS44OS0yLTEuOTktMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE0bDQgNC0uMDEtMTh6TTE3IDExaC00djRoLTJ2LTRIN1Y5aDRWNWgydjRoNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBbGlnbkhvcml6b250YWxDZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyaDJ2NWg4djNoLTh2NGg1djNoLTV2NWgtMnYtNUg2di0zaDV2LTRIM1Y3aDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFsaWduSG9yaXpvbnRhbExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDIySDJWMmgydjIwek0yMiA3SDZ2M2gxNlY3em0tNiA3SDZ2M2gxMHYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxpZ25Ib3Jpem9udGFsUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAyaDJ2MjBoLTJWMnpNMiAxMGgxNlY3SDJ2M3ptNiA3aDEwdi0zSDh2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxpZ25WZXJ0aWNhbEJvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDIySDJ2LTJoMjB2MnpNMTAgMkg3djE2aDNWMnptNyA2aC0zdjEwaDNWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxpZ25WZXJ0aWNhbENlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDExaC01VjZoLTN2NWgtNFYzSDd2OEgxLjg0djJIN3Y4aDN2LThoNHY1aDN2LTVoNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxpZ25WZXJ0aWNhbFRvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDJ2MkgyVjJoMjB6TTcgMjJoM1Y2SDd2MTZ6bTctNmgzVjZoLTN2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFyZWFDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTN2N2gxOHYtMS41bC05LTdMOCAxN2wtNS00em0wLTYgNCAzIDUtNyA1IDRoNHY4Ljk3bC05LjQtNy4zMS0zLjk4IDUuNDhMMyAxMC40NFY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdHRhY2hGaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSA2djExLjVjMCAyLjIxLTEuNzkgNC00IDRzLTQtMS43OS00LTRWNWEyLjUgMi41IDAgMCAxIDUgMHYxMC41YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xVjZIMTB2OS41YTIuNSAyLjUgMCAwIDAgNSAwVjVjMC0yLjIxLTEuNzktNC00LTRTNyAyLjc5IDcgNXYxMi41YzAgMy4wNCAyLjQ2IDUuNSA1LjUgNS41czUuNS0yLjQ2IDUuNS01LjVWNmgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdHRhY2hNb25leSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjggMTAuOWMtMi4yNy0uNTktMy0xLjItMy0yLjE1IDAtMS4wOSAxLjAxLTEuODUgMi43LTEuODUgMS43OCAwIDIuNDQuODUgMi41IDIuMWgyLjIxYy0uMDctMS43Mi0xLjEyLTMuMy0zLjIxLTMuODFWM2gtM3YyLjE2Yy0xLjk0LjQyLTMuNSAxLjY4LTMuNSAzLjYxIDAgMi4zMSAxLjkxIDMuNDYgNC43IDQuMTMgMi41LjYgMyAxLjQ4IDMgMi40MSAwIC42OS0uNDkgMS43OS0yLjcgMS43OS0yLjA2IDAtMi44Ny0uOTItMi45OC0yLjFoLTIuMmMuMTIgMi4xOSAxLjc2IDMuNDIgMy42OCAzLjgzVjIxaDN2LTIuMTVjMS45NS0uMzcgMy41LTEuNSAzLjUtMy41NSAwLTIuODQtMi40My0zLjgxLTQuNy00LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF1dG9HcmFwaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjA2IDkuOTQgMTIgOWwyLjA2LS45NEwxNSA2bC45NCAyLjA2TDE4IDlsLTIuMDYuOTRMMTUgMTJsLS45NC0yLjA2ek00IDE0bC45NC0yLjA2TDcgMTFsLTIuMDYtLjk0TDQgOGwtLjk0IDIuMDZMMSAxMWwyLjA2Ljk0TDQgMTR6bTQuNS01IDEuMDktMi40MUwxMiA1LjUgOS41OSA0LjQxIDguNSAyIDcuNDEgNC40MSA1IDUuNWwyLjQxIDEuMDlMOC41IDl6bS00IDExLjUgNi02LjAxIDQgNEwyMyA4LjkzbC0xLjQxLTEuNDEtNy4wOSA3Ljk3LTQtNEwzIDE5bDEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhckNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA5aDR2MTFINHpNMTYgMTNoNHY3aC00ek0xMCA0aDR2MTZoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvcmRlckFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM3YxOGgxOFYzSDN6bTggMTZINXYtNmg2djZ6bTAtOEg1VjVoNnY2em04IDhoLTZ2LTZoNnY2em0wLThoLTZWNWg2djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvcmRlckJvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTFIN3YyaDJ2LTJ6bTQgNGgtMnYyaDJ2LTJ6TTkgM0g3djJoMlYzem00IDhoLTJ2Mmgydi0yek01IDNIM3YyaDJWM3ptOCA0aC0ydjJoMlY3em00IDRoLTJ2Mmgydi0yem0tNC04aC0ydjJoMlYzem00IDBoLTJ2MmgyVjN6bTIgMTBoMnYtMmgtMnYyem0wIDRoMnYtMmgtMnYyek01IDdIM3YyaDJWN3ptMTQtNHYyaDJWM2gtMnptMCA2aDJWN2gtMnYyek01IDExSDN2Mmgydi0yek0zIDIxaDE4di0ySDN2MnptMi02SDN2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb3JkZXJDbGVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgNWgyVjNIN3Yyem0wIDhoMnYtMkg3djJ6bTAgOGgydi0ySDd2MnptNC00aDJ2LTJoLTJ2MnptMCA0aDJ2LTJoLTJ2MnptLTggMGgydi0ySDN2MnptMC00aDJ2LTJIM3Yyem0wLTRoMnYtMkgzdjJ6bTAtNGgyVjdIM3Yyem0wLTRoMlYzSDN2MnptOCA4aDJ2LTJoLTJ2MnptOCA0aDJ2LTJoLTJ2MnptMC00aDJ2LTJoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptMC0xMmgyVjdoLTJ2MnptLTggMGgyVjdoLTJ2MnptOC02djJoMlYzaC0yem0tOCAyaDJWM2gtMnYyem00IDE2aDJ2LTJoLTJ2MnptMC04aDJ2LTJoLTJ2MnptMC04aDJWM2gtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb3JkZXJDb2xvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDI0SDJ2LTRoMjB2NHpNMTMuMDYgNS4xOWwzLjc1IDMuNzVMNy43NSAxOEg0di0zLjc1bDkuMDYtOS4wNnptNC44MiAyLjY4LTMuNzUtMy43NSAxLjgzLTEuODNhLjk5Ni45OTYgMCAwIDEgMS40MSAwbDIuMzQgMi4zNGMuMzkuMzkuMzkgMS4wMiAwIDEuNDFsLTEuODMgMS44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9yZGVySG9yaXpvbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMjFoMnYtMkgzdjJ6TTUgN0gzdjJoMlY3ek0zIDE3aDJ2LTJIM3Yyem00IDRoMnYtMkg3djJ6TTUgM0gzdjJoMlYzem00IDBIN3YyaDJWM3ptOCAwaC0ydjJoMlYzem0tNCA0aC0ydjJoMlY3em0wLTRoLTJ2MmgyVjN6bTYgMTRoMnYtMmgtMnYyem0tOCA0aDJ2LTJoLTJ2MnptLTgtOGgxOHYtMkgzdjJ6TTE5IDN2MmgyVjNoLTJ6bTAgNmgyVjdoLTJ2MnptLTggOGgydi0yaC0ydjJ6bTQgNGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvcmRlcklubmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyMWgydi0ySDN2MnptNCAwaDJ2LTJIN3Yyek01IDdIM3YyaDJWN3pNMyAxN2gydi0ySDN2MnpNOSAzSDd2MmgyVjN6TTUgM0gzdjJoMlYzem0xMiAwaC0ydjJoMlYzem0yIDZoMlY3aC0ydjJ6bTAtNnYyaDJWM2gtMnptLTQgMThoMnYtMmgtMnYyek0xMyAzaC0ydjhIM3YyaDh2OGgydi04aDh2LTJoLThWM3ptNiAxOGgydi0yaC0ydjJ6bTAtNGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvcmRlckxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyMWgydi0yaC0ydjJ6bTAtNGgydi0yaC0ydjJ6bTAtMTJoMlYzaC0ydjJ6bTAgNGgyVjdoLTJ2MnptMCA0aDJ2LTJoLTJ2MnptLTQgOGgydi0ySDd2MnpNNyA1aDJWM0g3djJ6bTAgOGgydi0ySDd2MnptLTQgOGgyVjNIM3YxOHpNMTkgOWgyVjdoLTJ2MnptLTQgMTJoMnYtMmgtMnYyem00LTRoMnYtMmgtMnYyem0wLTE0djJoMlYzaC0yem0wIDEwaDJ2LTJoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptLTQtOGgydi0yaC0ydjJ6bTAtOGgyVjNoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9yZGVyT3V0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3aC0ydjJoMlY3em0wIDRoLTJ2Mmgydi0yem00IDBoLTJ2Mmgydi0yek0zIDN2MThoMThWM0gzem0xNiAxNkg1VjVoMTR2MTR6bS02LTRoLTJ2Mmgydi0yem0tNC00SDd2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCb3JkZXJSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMjFoMnYtMkg3djJ6TTMgNWgyVjNIM3Yyem00IDBoMlYzSDd2MnptMCA4aDJ2LTJIN3Yyem0tNCA4aDJ2LTJIM3Yyem04IDBoMnYtMmgtMnYyem0tOC04aDJ2LTJIM3Yyem0wIDRoMnYtMkgzdjJ6bTAtOGgyVjdIM3Yyem04IDhoMnYtMmgtMnYyem00LTRoMnYtMmgtMnYyem00LTEwdjE4aDJWM2gtMnptLTQgMThoMnYtMmgtMnYyem0wLTE2aDJWM2gtMnYyem0tNCA4aDJ2LTJoLTJ2MnptMC04aDJWM2gtMnYyem0wIDRoMlY3aC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvcmRlclN0eWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMjFoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyek03IDIxaDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem04LTRoMnYtMmgtMnYyem0wLTRoMnYtMmgtMnYyek0zIDN2MThoMlY1aDE2VjNIM3ptMTYgNmgyVjdoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm9yZGVyVG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyMWgydi0ySDd2MnptMC04aDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem0wIDhoMnYtMmgtMnYyem0tOC00aDJ2LTJIM3Yyem0wIDRoMnYtMkgzdjJ6bTAtOGgydi0ySDN2MnptMC00aDJWN0gzdjJ6bTggOGgydi0yaC0ydjJ6bTgtOGgyVjdoLTJ2MnptMCA0aDJ2LTJoLTJ2MnpNMyAzdjJoMThWM0gzem0xNiAxNGgydi0yaC0ydjJ6bS00IDRoMnYtMmgtMnYyek0xMSA5aDJWN2gtMnYyem04IDEyaDJ2LTJoLTJ2MnptLTQtOGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJvcmRlclZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA5aDJWN0gzdjJ6bTAtNGgyVjNIM3Yyem00IDE2aDJ2LTJIN3Yyem0wLThoMnYtMkg3djJ6bS00IDBoMnYtMkgzdjJ6bTAgOGgydi0ySDN2MnptMC00aDJ2LTJIM3Yyek03IDVoMlYzSDd2MnptMTIgMTJoMnYtMmgtMnYyem0tOCA0aDJWM2gtMnYxOHptOCAwaDJ2LTJoLTJ2MnptMC04aDJ2LTJoLTJ2MnptMC0xMHYyaDJWM2gtMnptMCA2aDJWN2gtMnYyem0tNC00aDJWM2gtMnYyem0wIDE2aDJ2LTJoLTJ2MnptMC04aDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnViYmxlQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjcuMlwiLFwiY3lcIjpcIjE0LjRcIixcInJcIjpcIjMuMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0LjhcIixcImN5XCI6XCIxOFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjJcIixcImN5XCI6XCI4LjhcIixcInJcIjpcIjQuOFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW5kbGVzdGlja0NoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0SDd2Mkg1djEyaDJ2Mmgydi0yaDJWNkg5ek0xOSA4aC0yVjRoLTJ2NGgtMnY3aDJ2NWgydi01aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoZWNrbGlzdFJ0bCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDdIMnYyaDlWN3ptMCA4SDJ2Mmg5di0yem01LjM0LTRMMTIuOCA3LjQ2bDEuNDEtMS40MSAyLjEyIDIuMTIgNC4yNC00LjI0TDIyIDUuMzQgMTYuMzQgMTF6bTAgOC0zLjU0LTMuNTQgMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjRMMjIgMTMuMzQgMTYuMzQgMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoZWNrbGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDdoLTl2Mmg5Vjd6bTAgOGgtOXYyaDl2LTJ6TTUuNTQgMTEgMiA3LjQ2bDEuNDEtMS40MSAyLjEyIDIuMTIgNC4yNC00LjI0IDEuNDEgMS40MUw1LjU0IDExem0wIDhMMiAxNS40NmwxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNCAxLjQxIDEuNDFMNS41NCAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGF0YUFycmF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgNHYyaDN2MTJoLTN2Mmg1VjR6TTQgMjBoNXYtMkg2VjZoM1Y0SDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERhdGFPYmplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDd2MmMwIC41NS0uNDUgMS0xIDFIMnY0aDFjLjU1IDAgMSAuNDUgMSAxdjJjMCAxLjY1IDEuMzUgMyAzIDNoM3YtMkg3Yy0uNTUgMC0xLS40NS0xLTF2LTJjMC0xLjMtLjg0LTIuNDItMi0yLjgzdi0uMzRDNS4xNiAxMS40MiA2IDEwLjMgNiA5VjdjMC0uNTUuNDUtMSAxLTFoM1Y0SDdDNS4zNSA0IDQgNS4zNSA0IDd6TTIxIDEwYy0uNTUgMC0xLS40NS0xLTFWN2MwLTEuNjUtMS4zNS0zLTMtM2gtM3YyaDNjLjU1IDAgMSAuNDUgMSAxdjJjMCAxLjMuODQgMi40MiAyIDIuODN2LjM0Yy0xLjE2LjQxLTIgMS41Mi0yIDIuODN2MmMwIC41NS0uNDUgMS0xIDFoLTN2MmgzYzEuNjUgMCAzLTEuMzUgMy0zdi0yYzAtLjU1LjQ1LTEgMS0xaDF2LTRoLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERyYWdIYW5kbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA5SDR2MmgxNlY5ek00IDE1aDE2di0ySDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRHJhdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4Ljg1IDEwLjM5IDEuMDYtMS4wNmMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzTDE4LjUgNS4wOWMtLjc4LS43OC0yLjA1LS43OC0yLjgzIDBsLTEuMDYgMS4wNiA0LjI0IDQuMjR6bS01LjY2LTIuODNMNCAxNi43NlYyMWg0LjI0bDkuMTktOS4xOS00LjI0LTQuMjV6TTE5IDE3LjVjMCAyLjE5LTIuNTQgMy41LTUgMy41LS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFjMS41NCAwIDMtLjczIDMtMS41IDAtLjQ3LS40OC0uODctMS4yMy0xLjJsMS40OC0xLjQ4YzEuMDcuNjMgMS43NSAxLjQ3IDEuNzUgMi42OHpNNC41OCAxMy4zNUMzLjYxIDEyLjc5IDMgMTIuMDYgMyAxMWMwLTEuOCAxLjg5LTIuNjMgMy41Ni0zLjM2QzcuNTkgNy4xOCA5IDYuNTYgOSA2YzAtLjQxLS43OC0xLTItMS0xLjI2IDAtMS44LjYxLTEuODMuNjQtLjM1LjQxLS45OC40Ni0xLjQuMTJhLjk5Mi45OTIgMCAwIDEtLjE1LTEuMzhDMy43MyA0LjI0IDQuNzYgMyA3IDNzNCAxLjMyIDQgM2MwIDEuODctMS45MyAyLjcyLTMuNjQgMy40N0M2LjQyIDkuODggNSAxMC41IDUgMTFjMCAuMzEuNDMuNiAxLjA3Ljg2bC0xLjQ5IDEuNDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVkaXROb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMGgxMXYySDN2LTJ6bTAtMmgxMVY2SDN2MnptMCA4aDd2LTJIM3Yyem0xNS4wMS0zLjEzLjcxLS43MWEuOTk2Ljk5NiAwIDAgMSAxLjQxIDBsLjcxLjcxYy4zOS4zOS4zOSAxLjAyIDAgMS40MWwtLjcxLjcxLTIuMTItMi4xMnptLS43MS43MS01LjMgNS4zVjIxaDIuMTJsNS4zLTUuMy0yLjEyLTIuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdEFsaWduQ2VudGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNXYyaDEwdi0ySDd6bS00IDZoMTh2LTJIM3Yyem0wLThoMTh2LTJIM3Yyem00LTZ2MmgxMFY3SDd6TTMgM3YyaDE4VjNIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0QWxpZ25KdXN0aWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyMWgxOHYtMkgzdjJ6bTAtNGgxOHYtMkgzdjJ6bTAtNGgxOHYtMkgzdjJ6bTAtNGgxOFY3SDN2MnptMC02djJoMThWM0gzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRBbGlnbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxNUgzdjJoMTJ2LTJ6bTAtOEgzdjJoMTJWN3pNMyAxM2gxOHYtMkgzdjJ6bTAgOGgxOHYtMkgzdjJ6TTMgM3YyaDE4VjNIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0QWxpZ25SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMjFoMTh2LTJIM3Yyem02LTRoMTJ2LTJIOXYyem0tNi00aDE4di0ySDN2MnptNi00aDEyVjdIOXYyek0zIDN2MmgxOFYzSDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdEJvbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42IDEwLjc5Yy45Ny0uNjcgMS42NS0xLjc3IDEuNjUtMi43OSAwLTIuMjYtMS43NS00LTQtNEg3djE0aDcuMDRjMi4wOSAwIDMuNzEtMS43IDMuNzEtMy43OSAwLTEuNTItLjg2LTIuODItMi4xNS0zLjQyek0xMCA2LjVoM2MuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41aC0zdi0zem0zLjUgOUgxMHYtM2gzLjVjLjgzIDAgMS41LjY3IDEuNSAxLjVzLS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0Q2xlYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjI3IDUgMiA2LjI3bDYuOTcgNi45N0w2LjUgMTloM2wxLjU3LTMuNjZMMTYuNzMgMjEgMTggMTkuNzMgMy41NSA1LjI3IDMuMjcgNXpNNiA1di4xOEw4LjgyIDhoMi40bC0uNzIgMS42OCAyLjEgMi4xTDE0LjIxIDhIMjBWNUg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRDb2xvckZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41NiA4Ljk0IDcuNjIgMCA2LjIxIDEuNDFsMi4zOCAyLjM4LTUuMTUgNS4xNWExLjQ5IDEuNDkgMCAwIDAgMCAyLjEybDUuNSA1LjVjLjI5LjI5LjY4LjQ0IDEuMDYuNDRzLjc3LS4xNSAxLjA2LS40NGw1LjUtNS41Yy41OS0uNTguNTktMS41MyAwLTIuMTJ6TTUuMjEgMTAgMTAgNS4yMSAxNC43OSAxMEg1LjIxek0xOSAxMS41cy0yIDIuMTctMiAzLjVjMCAxLjEuOSAyIDIgMnMyLS45IDItMmMwLTEuMzMtMi0zLjUtMi0zLjV6TTIgMjBoMjB2NEgydi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRDb2xvclJlc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxNGMwLTQtNi0xMC44LTYtMTAuOHMtMS4zMyAxLjUxLTIuNzMgMy41Mmw4LjU5IDguNTljLjA5LS40Mi4xNC0uODYuMTQtMS4zMXptLS44OCAzLjEyTDEyLjUgMTIuNSA1LjI3IDUuMjcgNCA2LjU1bDMuMzIgMy4zMkM2LjU1IDExLjMyIDYgMTIuNzkgNiAxNGMwIDMuMzEgMi42OSA2IDYgNiAxLjUyIDAgMi45LS41NyAzLjk2LTEuNWwyLjYzIDIuNjMgMS4yNy0xLjI3LTIuNzQtMi43NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0Q29sb3JUZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyMGgyMHY0SDJ2LTR6bTMuNDktM2gyLjQybDEuMjctMy41OGg1LjY1TDE2LjA5IDE3aDIuNDJMMTMuMjUgM2gtMi41TDUuNDkgMTd6bTQuNDItNS42MSAyLjAzLTUuNzloLjEybDIuMDMgNS43OUg5LjkxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRJbmRlbnREZWNyZWFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE3aDEwdi0ySDExdjJ6bS04LTUgNCA0VjhsLTQgNHptMCA5aDE4di0ySDN2MnpNMyAzdjJoMThWM0gzem04IDZoMTBWN0gxMXYyem0wIDRoMTB2LTJIMTF2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0SW5kZW50SW5jcmVhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIxaDE4di0ySDN2MnpNMyA4djhsNC00LTQtNHptOCA5aDEwdi0ySDExdjJ6TTMgM3YyaDE4VjNIM3ptOCA2aDEwVjdIMTF2MnptMCA0aDEwdi0ySDExdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdEl0YWxpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDR2M2gyLjIxbC0zLjQyIDhINnYzaDh2LTNoLTIuMjFsMy40Mi04SDE4VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdExpbmVTcGFjaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA3aDIuNUw1IDMuNSAxLjUgN0g0djEwSDEuNUw1IDIwLjUgOC41IDE3SDZWN3ptNC0ydjJoMTJWNUgxMHptMCAxNGgxMnYtMkgxMHYyem0wLTZoMTJ2LTJIMTB2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0TGlzdEJ1bGxldGVkQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0zIDUuNWgtMi41VjIxaC0xdi0yLjVIMTV2LTFoMi41VjE1aDF2Mi41SDIxdjF6TTcgNWgxM3YySDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMy41XCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMUg3djJoNi4xMWMxLjI2LTEuMjQgMi45OS0yIDQuODktMnpNNyAxN3YyaDQuMDhjLS4wNS0uMzMtLjA4LS42Ni0uMDgtMXMuMDMtLjY3LjA4LTFIN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIzLjVcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIzLjVcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdExpc3RCdWxsZXRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxMC41Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptMC02Yy0uODMgMC0xLjUuNjctMS41IDEuNVMzLjE3IDcuNSA0IDcuNSA1LjUgNi44MyA1LjUgNiA0LjgzIDQuNSA0IDQuNXptMCAxMmMtLjgzIDAtMS41LjY4LTEuNSAxLjVzLjY4IDEuNSAxLjUgMS41IDEuNS0uNjggMS41LTEuNS0uNjctMS41LTEuNS0xLjV6TTcgMTloMTR2LTJIN3Yyem0wLTZoMTR2LTJIN3Yyem0wLTh2MmgxNFY1SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdExpc3ROdW1iZXJlZFJ0bCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE3aDJ2LjVoLTF2MWgxdi41aC0ydjFoM3YtNGgtM3ptMS05aDFWNGgtMnYxaDF6bS0xIDNoMS44TDE4IDEzLjF2LjloM3YtMWgtMS44bDEuOC0yLjFWMTBoLTN6TTIgNWgxNHYySDJ6bTAgMTJoMTR2Mkgyem0wLTZoMTR2MkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRMaXN0TnVtYmVyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE3aDJ2LjVIM3YxaDF2LjVIMnYxaDN2LTRIMnYxem0xLTloMVY0SDJ2MWgxdjN6bS0xIDNoMS44TDIgMTMuMXYuOWgzdi0xSDMuMkw1IDEwLjlWMTBIMnYxem01LTZ2MmgxNFY1SDd6bTAgMTRoMTR2LTJIN3Yyem0wLTZoMTR2LTJIN3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRQYWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRWM2MwLS41NS0uNDUtMS0xLTFINWMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xVjZoMXY0SDl2MTFjMCAuNTUuNDUgMSAxIDFoMmMuNTUgMCAxLS40NSAxLTF2LTloOFY0aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRRdW90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTdoM2wyLTRWN0g1djZoM3ptOCAwaDNsMi00VjdoLTZ2NmgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRTaGFwZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyA3VjFoLTZ2Mkg3VjFIMXY2aDJ2MTBIMXY2aDZ2LTJoMTB2Mmg2di02aC0yVjdoMnpNMyAzaDJ2MkgzVjN6bTIgMThIM3YtMmgydjJ6bTEyLTJIN3YtMkg1VjdoMlY1aDEwdjJoMnYxMGgtMnYyem00IDJoLTJ2LTJoMnYyek0xOSA1VjNoMnYyaC0yem0tNS4yNyA5aC0zLjQ5bC0uNzMgMkg3Ljg5bDMuNC05aDEuNGwzLjQxIDloLTEuNjNsLS43NC0yem0tMy4wNC0xLjI2aDIuNjFMMTIgOC45MWwtMS4zMSAzLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRTaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0djNoNXYxMmgzVjdoNVY0SDl6bS02IDhoM3Y3aDN2LTdoM1Y5SDN2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0U3RyaWtldGhyb3VnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE5aDR2LTNoLTR2M3pNNSA0djNoNXYzaDRWN2g1VjRINXpNMyAxNGgxOHYtMkgzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvcm1hdFRleHRkaXJlY3Rpb25MVG9SIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMHY1aDJWNGgydjExaDJWNGgyVjJIOUM2Ljc5IDIgNSAzLjc5IDUgNnMxLjc5IDQgNCA0em0xMiA4LTQtNHYzSDV2MmgxMnYzbDQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0VGV4dGRpcmVjdGlvblJUb0wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxMHY1aDJWNGgydjExaDJWNGgyVjJoLThDNy43OSAyIDYgMy43OSA2IDZzMS43OSA0IDQgNHptLTIgN3YtM2wtNCA0IDQgNHYtM2gxMnYtMkg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JtYXRVbmRlcmxpbmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTdjMy4zMSAwIDYtMi42OSA2LTZWM2gtMi41djhjMCAxLjkzLTEuNTcgMy41LTMuNSAzLjVTOC41IDEyLjkzIDguNSAxMVYzSDZ2OGMwIDMuMzEgMi42OSA2IDYgNnptLTcgMnYyaDE0di0ySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZ1bmN0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRINnYybDYuNSA2TDYgMTh2MmgxMnYtM2gtN2w1LTUtNS01aDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhlaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDYuOTloM0wxMiAzIDggNi45OWgzdjEwLjAySDhMMTIgMjFsNC0zLjk5aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZXhhZ29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMiAzSDYuOGwtNS4yIDkgNS4yIDloMTAuNGw1LjItOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGlnaGxpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNiAxNCAzIDN2NWg2di01bDMtM1Y5SDZ2NXptNS0xMmgydjNoLTJWMnpNMy41IDUuODhsMS40MS0xLjQxIDIuMTIgMi4xMkw1LjYyIDggMy41IDUuODh6bTEzLjQ2LjcxIDIuMTItMi4xMiAxLjQxIDEuNDFMMTguMzggOGwtMS40Mi0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3Jpem9udGFsRGlzdHJpYnV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMjJIMlYyaDJ2MjB6TTIyIDJoLTJ2MjBoMlYyem0tOC41IDVoLTN2MTBoM1Y3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3Jpem9udGFsUnVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDExaDE2djJINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW5zZXJ0Q2hhcnRPdXRsaW5lZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTdIN3YtN2gydjd6bTQgMGgtMlY3aDJ2MTB6bTQgMGgtMnYtNGgydjR6bTIuNSAyLjFoLTE1VjVoMTV2MTQuMXptMC0xNi4xaC0xNWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnNlcnRDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnNlcnRDb21tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE0bDQgNFY0YzAtMS4xLS45LTItMi0yem0tMiAxMkg2di0yaDEydjJ6bTAtM0g2VjloMTJ2MnptMC0zSDZWNmgxMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnNlcnREcml2ZUZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDJjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZINnptNyA3VjMuNUwxOC41IDlIMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluc2VydEVtb3RpY29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0zLjUtOWMuODMgMCAxLjUtLjY3IDEuNS0xLjVTMTYuMzMgOCAxNS41IDggMTQgOC42NyAxNCA5LjVzLjY3IDEuNSAxLjUgMS41em0tNyAwYy44MyAwIDEuNS0uNjcgMS41LTEuNVM5LjMzIDggOC41IDggNyA4LjY3IDcgOS41IDcuNjcgMTEgOC41IDExem0zLjUgNi41YzIuMzMgMCA0LjMxLTEuNDYgNS4xMS0zLjVINi44OWMuOCAyLjA0IDIuNzggMy41IDUuMTEgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnNlcnRJbnZpdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTJoLTV2NWg1di01ek0xNiAxdjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMmgtMVYxaC0yem0zIDE4SDVWOGgxNHYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW5zZXJ0TGluayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbnNlcnRQYWdlQnJlYWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0ydi0zSDR2M3pNMjAgOGwtNi02SDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2N0gyMFY4em0tNyAxVjMuNUwxOC41IDlIMTN6TTkgMTNoNnYySDl6TTE3IDEzaDZ2MmgtNnpNMSAxM2g2djJIMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW5zZXJ0UGhvdG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxOVY1YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ6TTguNSAxMy41bDIuNSAzLjAxTDE0LjUgMTJsNC41IDZINWwzLjUtNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaW5lQXhpcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDcuNDMtMS40MS0xLjQxLTQuMDMgNC41M0w5LjUgNCAyIDExLjUxbDEuNSAxLjUgNi4xNC02LjE1IDUuNTkgNS4xOC0xLjczIDEuOTUtNC00TDIgMTcuNSAzLjUgMTlsNi02LjAxIDQgNCAzLjE5LTMuNTkgMy45IDMuNjFMMjIgMTUuNmwtMy45OC0zLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpbmVhclNjYWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNSA5LjVjLTEuMDMgMC0xLjkuNjItMi4yOSAxLjVoLTIuOTJjLS4zOS0uODgtMS4yNi0xLjUtMi4yOS0xLjVzLTEuOS42Mi0yLjI5IDEuNUg2Ljc5Yy0uMzktLjg4LTEuMjYtMS41LTIuMjktMS41YTIuNSAyLjUgMCAwIDAgMCA1YzEuMDMgMCAxLjktLjYyIDIuMjktMS41aDIuOTJjLjM5Ljg4IDEuMjYgMS41IDIuMjkgMS41czEuOS0uNjIgMi4yOS0xLjVoMi45MmMuMzkuODggMS4yNiAxLjUgMi4yOSAxLjVhMi41IDIuNSAwIDAgMCAwLTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcmdpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM3YxOGgxOFYzSDN6bTE2IDE2SDVWNWgxNHYxNHpNMTEgN2gydjJoLTJ6TTcgN2gydjJIN3ptOCAwaDJ2MmgtMnptLTggNGgydjJIN3ptNCAwaDJ2MmgtMnptNCAwaDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWVyZ2VUeXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMjAuNDEgMTguNDEgMTkgMTUgMTUuNTkgMTMuNTkgMTcgMTcgMjAuNDF6TTcuNSA4SDExdjUuNTlMNS41OSAxOSA3IDIwLjQxbDYtNlY4aDMuNUwxMiAzLjUgNy41IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vZGVDb21tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTkgNGMwLTEuMS0uODktMi0xLjk5LTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNGw0IDQtLjAxLTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb2RlRWRpdE91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1ek0yMC43MSA1LjYzbC0yLjM0LTIuMzRhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vZGVFZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzIDE3LjI1ek0yMC43MSA3LjA0YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zNC0yLjM0YS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1ek0yMC43MSA1LjYzbC0yLjM0LTIuMzRhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vbmV0aXphdGlvbk9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMS40MSAxNi4wOVYyMGgtMi42N3YtMS45M2MtMS43MS0uMzYtMy4xNi0xLjQ2LTMuMjctMy40aDEuOTZjLjEgMS4wNS44MiAxLjg3IDIuNjUgMS44NyAxLjk2IDAgMi40LS45OCAyLjQtMS41OSAwLS44My0uNDQtMS42MS0yLjY3LTIuMTQtMi40OC0uNi00LjE4LTEuNjItNC4xOC0zLjY3IDAtMS43MiAxLjM5LTIuODQgMy4xMS0zLjIxVjRoMi42N3YxLjk1YzEuODYuNDUgMi43OSAxLjg2IDIuODUgMy4zOUgxNC4zYy0uMDUtMS4xMS0uNjQtMS44Ny0yLjIyLTEuODctMS41IDAtMi40LjY4LTIuNCAxLjY0IDAgLjg0LjY1IDEuMzkgMi42NyAxLjkxczQuMTggMS4zOSA0LjE4IDMuOTFjLS4wMSAxLjgzLTEuMzggMi44My0zLjEyIDMuMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vbmV5T2ZmQ3NyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41MyA3LjQzYy40Mi0uMzEuOTMtLjQ3IDEuNTQtLjQ3czEuMTEuMTYgMS41LjQ5Yy4zOS4zMi42NS43Ljc5IDEuMTJsMS44OS0uOGMtLjI0LS43MS0uNzEtMS4zNS0xLjQtMS45Mi0uNS0uNC0xLjEyLS42NS0xLjg1LS43N1YzaC0ydjIuMTFjLS40MS4wOC0uNzkuMjEtMS4xNC4zOS0uMzUuMTgtLjY0LjM5LS45LjYzbDEuNDMgMS40M2MuMDQtLjA0LjA5LS4wOS4xNC0uMTN6TTIuODEgMi44MSAxLjM5IDQuMjJsMTIuMzUgMTIuMzVjLS40My4yOC0uOTUuNDMtMS41NS40My0uNzEgMC0xLjMyLS4yMy0xLjgzLS43LS41LS40Ny0uODYtMS4wNy0xLjA2LTEuODFsLTEuOTguOGMuMzQgMS4xNy45NSAyLjA4IDEuODMgMi43My41Ny40MiAxLjE5LjY4IDEuODUuODNWMjFoMnYtMi4wOGMuNDQtLjA3Ljg3LS4xNyAxLjI5LS4zNS4zNC0uMTQuNjQtLjMyLjkyLS41M2w0LjU3IDQuNTcgMS40MS0xLjQxTDIuODEgMi44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9uZXlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDYuOWMxLjc4IDAgMi40NC44NSAyLjUgMi4xaDIuMjFjLS4wNy0xLjcyLTEuMTItMy4zLTMuMjEtMy44MVYzaC0zdjIuMTZjLS41My4xMi0xLjAzLjMtMS40OC41NGwxLjQ3IDEuNDdjLjQxLS4xNy45MS0uMjcgMS41MS0uMjd6TTUuMzMgNC4wNiA0LjA2IDUuMzMgNy41IDguNzdjMCAyLjA4IDEuNTYgMy4yMSAzLjkxIDMuOTFsMy41MSAzLjUxYy0uMzQuNDgtMS4wNS45MS0yLjQyLjkxLTIuMDYgMC0yLjg3LS45Mi0yLjk4LTIuMWgtMi4yYy4xMiAyLjE5IDEuNzYgMy40MiAzLjY4IDMuODNWMjFoM3YtMi4xNWMuOTYtLjE4IDEuODItLjU1IDIuNDUtMS4xMmwyLjIyIDIuMjIgMS4yNy0xLjI3TDUuMzMgNC4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW92ZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDExYzAgMi40NSAxLjc2IDQuNDcgNC4wOCA0LjkxbC0xLjQ5LTEuNDlMNyAxM2w0IDQuMDFMNyAyMWwtMS40MS0xLjQxIDEuNTgtMS41OHYtLjA2QTcuMDA3IDcuMDA3IDAgMCAxIDEgMTFjMC0zLjg3IDMuMTMtNyA3LTdoM3YySDhjLTIuNzYgMC01IDIuMjQtNSA1ek0yMiAxMVY0aC05djdoOXptLTItMmgtNVY2aDV2M3pNMTMgMTNoOXY3aC05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3ZlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzYzAtMi40NSAxLjc2LTQuNDcgNC4wOC00LjkxbC0xLjQ5IDEuNUw3IDExbDQtNC4wMUw3IDMgNS41OSA0LjQxbDEuNTggMS41OHYuMDZBNy4wMDcgNy4wMDcgMCAwIDAgMSAxM2MwIDMuODcgMy4xMyA3IDcgN2gzdi0ySDhjLTIuNzYgMC01LTIuMjQtNS01ek0xMyAxM3Y3aDl2LTdoLTl6bTcgNWgtNXYtM2g1djN6TTEzIDRoOXY3aC05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNdWx0aWxpbmVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDYuOTItMS40MS0xLjQxLTIuODUgMy4yMUMxNS42OCA2LjQgMTIuODMgNSA5LjYxIDUgNi43MiA1IDQuMDcgNi4xNiAyIDhsMS40MiAxLjQyQzUuMTIgNy45MyA3LjI3IDcgOS42MSA3YzIuNzQgMCA1LjA5IDEuMjYgNi43NyAzLjI0bC0yLjg4IDMuMjQtNC00TDIgMTYuOTlsMS41IDEuNSA2LTYuMDEgNCA0IDQuMDUtNC41NWMuNzUgMS4zNSAxLjI1IDIuOSAxLjQ0IDQuNTVIMjFjLS4yMi0yLjMtLjk1LTQuMzktMi4wNC02LjE0TDIyIDYuOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vdGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE4aDEydi0ySDN2MnpNMyA2djJoMThWNkgzem0wIDdoMTh2LTJIM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROdW1iZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuNSAxMCAuNS0yaC00bDEtNGgtMmwtMSA0aC00bDEtNGgtMkw5IDhINWwtLjUgMmg0bC0xIDRoLTRMMyAxNmg0bC0xIDRoMmwxLTRoNGwtMSA0aDJsMS00aDRsLjUtMmgtNGwxLTRoNHptLTcgNGgtNGwxLTRoNGwtMSA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYWRkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzdjE4aDE4VjNIM3ptMTYgMTZINVY1aDE0djE0ek0xMSA3aDJ2MmgtMnpNNyA3aDJ2Mkg3em04IDBoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZW50YWdvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIgOSA0IDEyaDEybDQtMTItMTAtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGllQ2hhcnRPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6bTEgMi4wN2MzLjYxLjQ1IDYuNDggMy4zMyA2LjkzIDYuOTNIMTNWNC4wN3pNNCAxMmMwLTQuMDYgMy4wNy03LjQ0IDctNy45M3YxNS44N2MtMy45My0uNS03LTMuODgtNy03Ljk0em05IDcuOTNWMTNoNi45M0E4LjAwMiA4LjAwMiAwIDAgMSAxMyAxOS45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGllQ2hhcnRPdXRsaW5lZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6bTEgMi4wN2MzLjYxLjQ1IDYuNDggMy4zMyA2LjkzIDYuOTNIMTNWNC4wN3pNNCAxMmMwLTQuMDYgMy4wNy03LjQ0IDctNy45M3YxNS44N2MtMy45My0uNS03LTMuODgtNy03Ljk0em05IDcuOTNWMTNoNi45M0E4LjAwMiA4LjAwMiAwIDAgMSAxMyAxOS45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGllQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDJ2MjBjLTUuMDctLjUtOS00Ljc5LTktMTBzMy45My05LjUgOS0xMHptMi4wMyAwdjguOTlIMjJjLS40Ny00Ljc0LTQuMjQtOC41Mi04Ljk3LTguOTl6bTAgMTEuMDFWMjJjNC43NC0uNDcgOC41LTQuMjUgOC45Ny04Ljk5aC04Ljk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQb2x5bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE2djEuMjZsLTYtM3YtMy4xN0wxMS43IDhIMTZWMmgtNnY0LjlMNy4zIDEwSDN2Nmg1bDcgMy41VjIyaDZ2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvc3RBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxOS4yMkg1VjdoN1Y1SDVjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTdoLTJ2Ny4yMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMmgtMnYzaC0zYy4wMS4wMSAwIDIgMCAyaDN2Mi45OWMuMDEuMDEgMiAwIDIgMFY3aDNWNWgtM1Yyek03IDloOHYySDd6TTcgMTJ2Mmg4di0yaC0zek03IDE1aDh2Mkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQdWJsaXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA0djJoMTRWNEg1em0wIDEwaDR2Nmg2di02aDRsLTctNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFF1ZXJ5U3RhdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS44OCAxOC40N2MuNDQtLjcuNy0xLjUxLjctMi4zOSAwLTIuNDktMi4wMS00LjUtNC41LTQuNXMtNC41IDIuMDEtNC41IDQuNSAyLjAxIDQuNSA0LjQ5IDQuNWMuODggMCAxLjctLjI2IDIuMzktLjdMMjEuNTggMjMgMjMgMjEuNThsLTMuMTItMy4xMXptLTMuOC4xMWEyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXptLS4zNi04LjVjLS43NC4wMi0xLjQ1LjE4LTIuMS40NWwtLjU1LS44My0zLjggNi4xOC0zLjAxLTMuNTItMy42MyA1LjgxTDEgMTdsNS04IDMgMy41TDEzIDZsMi43MiA0LjA4em0yLjU5LjVjLS42NC0uMjgtMS4zMy0uNDUtMi4wNS0uNDlMMjEuMzggMiAyMyAzLjE4bC00LjY5IDcuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVjdGFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0aDIwdjE2SDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjYXR0ZXJQbG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjdcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiM1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiM1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2LjZcIixcImN5XCI6XCIxNy42XCIsXCJyXCI6XCIzXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjaGVtYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDl2MmgtM1Y5SDguNVY3SDExVjFINHY2aDIuNXYySDR2NmgyLjV2Mkg0djZoN3YtNkg4LjV2LTJIMTF2LTJoM3YyaDdWOWgtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2NvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMmgxLjV2M2wyLTNoMS43bC0yIDMgMiAzaC0xLjdsLTItM3YzSDEyVjV6TTcgNy4yNWgyLjVWNi41SDdWNWg0djMuNzVIOC41di43NUgxMVYxMUg3VjcuMjV6TTE5IDEzbC02IDYtNC00LTQgNHYtMi41bDQtNCA0IDQgNi02VjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaGFwZUxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDExYzIuNzYgMCA1LTIuMjQgNS01UzguNzYgMSA2IDEgMSAzLjI0IDEgNnMyLjI0IDUgNSA1ek0yMSAxNGgtNWMtMS4xIDAtMiAuOS0yIDJ2NWMwIDEuMS45IDIgMiAyaDVjMS4xIDAgMi0uOSAyLTJ2LTVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjcxIDcuN2MuNC4xOS44My4zIDEuMjkuMyAxLjY1IDAgMy0xLjM1IDMtM3MtMS4zNS0zLTMtMy0zIDEuMzUtMyAzYzAgLjQ2LjExLjg5LjMgMS4yOUw2LjI5IDE2LjNjLS40LS4xOS0uODMtLjMtMS4yOS0uMy0xLjY1IDAtMyAxLjM1LTMgM3MxLjM1IDMgMyAzIDMtMS4zNSAzLTNjMC0uNDYtLjExLS44OS0uMy0xLjI5TDE3LjcxIDcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2hvcnRUZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA5aDE2djJINFY5em0wIDRoMTB2Mkg0di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaG93Q2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0zLjUgMTguNDkgNi02LjAxIDQgNEwyMiA2LjkybC0xLjQxLTEuNDEtNy4wOSA3Ljk3LTQtNEwyIDE2Ljk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGFjZUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOXY0SDZWOUg0djZoMTZWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzaDE4djE4SDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0YWNrZWRMaW5lQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yIDE5Ljk5IDcuNS03LjUxIDQgNCA3LjA5LTcuOTdMMjIgOS45MmwtOC41IDkuNTYtNC00LTYgNi4wMS0xLjUtMS41em0xLjUtNC41IDYtNi4wMSA0IDRMMjIgMy45MmwtMS40MS0xLjQxLTcuMDkgNy45Ny00LTRMMiAxMy45OWwxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdHJpa2V0aHJvdWdoUyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuODUgNy4wOEM2Ljg1IDQuMzcgOS40NSAzIDEyLjI0IDNjMS42NCAwIDMgLjQ5IDMuOSAxLjI4Ljc3LjY1IDEuNDYgMS43MyAxLjQ2IDMuMjRoLTMuMDFjMC0uMzEtLjA1LS41OS0uMTUtLjg1LS4yOS0uODYtMS4yLTEuMjgtMi4yNS0xLjI4LTEuODYgMC0yLjM0IDEuMDItMi4zNCAxLjcgMCAuNDguMjUuODguNzQgMS4yMS4zOC4yNS43Ny40OCAxLjQxLjdINy4zOWMtLjIxLS4zNC0uNTQtLjg5LS41NC0xLjkyek0yMSAxMnYtMkgzdjJoOS42MmMxLjE1LjQ1IDEuOTYuNzUgMS45NiAxLjk3IDAgMS0uODEgMS42Ny0yLjI4IDEuNjctMS41NCAwLTIuOTMtLjU0LTIuOTMtMi41MUg2LjRjMCAuNTUuMDggMS4xMy4yNCAxLjU4LjgxIDIuMjkgMy4yOSAzLjMgNS42NyAzLjMgMi4yNyAwIDUuMy0uODkgNS4zLTQuMDUgMC0uMy0uMDEtMS4xNi0uNDgtMS45NEgyMVYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3Vic2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMThoLTJ2MWgzdjFoLTR2LTJjMC0uNTUuNDUtMSAxLTFoMnYtMWgtM3YtMWgzYy41NSAwIDEgLjQ1IDEgMXYxYzAgLjU1LS40NSAxLTEgMXpNNS44OCAxOGgyLjY2bDMuNC01LjQyaC4xMmwzLjQgNS40MmgyLjY2bC00LjY1LTcuMjdMMTcuODEgNGgtMi42OGwtMy4wNyA0Ljk5aC0uMTJMOC44NSA0SDYuMTlsNC4zMiA2LjczTDUuODggMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN1cGVyc2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgN2gtMnYxaDN2MWgtNFY3YzAtLjU1LjQ1LTEgMS0xaDJWNWgtM1Y0aDNjLjU1IDAgMSAuNDUgMSAxdjFjMCAuNTUtLjQ1IDEtMSAxek01Ljg4IDIwaDIuNjZsMy40LTUuNDJoLjEybDMuNCA1LjQyaDIuNjZsLTQuNjUtNy4yN0wxNy44MSA2aC0yLjY4bC0zLjA3IDQuOTloLS4xMkw4Ljg1IDZINi4xOWw0LjMyIDYuNzNMNS44OCAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGFibGVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTAuMDJoNVYyMWgtNXpNMTcgMjFoM2MxLjEgMCAyLS45IDItMnYtOWgtNXYxMXptMy0xOEg1Yy0xLjEgMC0yIC45LTIgMnYzaDE5VjVjMC0xLjEtLjktMi0yLTJ6TTMgMTljMCAxLjEuOSAyIDIgMmgzVjEwSDN2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGFibGVSb3dzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOEgzVjRoMTh2NHptMCAySDN2NGgxOHYtNHptMCA2SDN2NGgxOHYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dERlY3JlYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjk5IDE5aDIuNDJsMS4yNy0zLjU4aDUuNjVMMTEuNTkgMTloMi40Mkw4Ljc1IDVoLTIuNUwuOTkgMTl6bTQuNDItNS42MUw3LjQ0IDcuNmguMTJsMi4wMyA1Ljc5SDUuNDF6TTIzIDExdjJoLTh2LTJoOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dEZpZWxkcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNSA0djNoNXYxMmgzVjdoNVY0aC0xM3ptMTkgNWgtOXYzaDN2N2gzdi03aDNWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dEluY3JlYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjk5IDE5aDIuNDJsMS4yNy0zLjU4aDUuNjVMMTEuNTkgMTloMi40Mkw4Ljc1IDVoLTIuNUwuOTkgMTl6bTQuNDItNS42MUw3LjQ0IDcuNmguMTJsMi4wMyA1Ljc5SDUuNDF6TTIwIDExaDN2MmgtM3YzaC0ydi0zaC0zdi0yaDNWOGgydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRpdGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDR2M2g1LjV2MTJoM1Y3SDE5VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFR5cGVTcGVjaW1lbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTMuMzcgMTIuNS0uOC0yLjNIMTIuMmwtLjgyIDIuM0g5LjgxbDMuMzgtOWgxLjYxbDMuMzggOWgtMS41NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuOTYgNy4xNy0xLjMxIDMuNzJoMi42OWwtMS4zLTMuNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZlcnRpY2FsQWxpZ25Cb3R0b20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxM2gtM1YzaC0ydjEwSDhsNCA0IDQtNHpNNCAxOXYyaDE2di0ySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZlcnRpY2FsQWxpZ25DZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE5aDN2NGgydi00aDNsLTQtNC00IDR6bTgtMTRoLTNWMWgtMnY0SDhsNCA0IDQtNHpNNCAxMXYyaDE2di0ySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZlcnRpY2FsQWxpZ25Ub3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDExaDN2MTBoMlYxMWgzbC00LTQtNCA0ek00IDN2MmgxNlYzSDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZlcnRpY2FsRGlzdHJpYnV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDJ2MkgyVjJoMjB6TTcgMTAuNXYzaDEwdi0zSDd6TTIgMjB2MmgyMHYtMkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXcmFwVGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTloNnYtMkg0djJ6TTIwIDVINHYyaDE2VjV6bS0zIDZINHYyaDEzLjI1YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMkgxNXYtMmwtMyAzIDMgM3YtMmgyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcHByb3ZhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTZ2NmgxNnYtNmMwLTEuMS0uOS0yLTItMkg2Yy0xLjEgMC0yIC45LTIgMnptMTQgMkg2di0yaDEydjJ6TTEyIDJDOS4yNCAyIDcgNC4yNCA3IDdsNSA3IDUtN2MwLTIuNzYtMi4yNC01LTUtNXptMCA5TDkgN2MwLTEuNjYgMS4zNC0zIDMtM3MzIDEuMzQgMyAzbC0zIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF0dGFjaEVtYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTBWNGMwLTEuMS0uOS0yLTItMkgzYy0xLjEgMC0xLjk5LjktMS45OSAyTDEgMTZjMCAxLjEuOSAyIDIgMmgxMXYtNWMwLTEuNjYgMS4zNC0zIDMtM2g0em0tMTAgMUwzIDZWNGw4IDUgOC01djJsLTggNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTR2NGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJ2LTQuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVYxOGgydi00LjVhMi41IDIuNSAwIDAgMC01IDBWMThjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNHYtNGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXR0YWNobWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxMi41QzIgOS40NiA0LjQ2IDcgNy41IDdIMThjMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDRIOS41YTIuNSAyLjUgMCAwIDEgMC01SDE3djJIOS40MWMtLjU1IDAtLjU1IDEgMCAxSDE4YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMkg3LjVDNS41NyA5IDQgMTAuNTcgNCAxMi41UzUuNTcgMTYgNy41IDE2SDE3djJINy41QzQuNDYgMTggMiAxNS41NCAyIDEyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3VkQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNC41IDE0SDhjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTNsLjE0LjAxQTMuOTggMy45OCAwIDAgMSAxMiA3YzIuMjEgMCA0IDEuNzkgNCA0aC41YTIuNSAyLjUgMCAwIDEgMCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbG91ZERvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4zNSAxMC4wNEE3LjQ5IDcuNDkgMCAwIDAgMTIgNEM5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0QTUuOTk0IDUuOTk0IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTEwIDE3bC0zLjUtMy41IDEuNDEtMS40MUwxMCAxNC4xNyAxNS4xOCA5bDEuNDEgMS40MUwxMCAxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xvdWREb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDRBNS45OTQgNS45OTQgMCAwIDAgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTcgMTNsLTUgNS01LTVoM1Y5aDR2NGgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbG91ZE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0Yy0xLjQ4IDAtMi44NS40My00LjAxIDEuMTdsMS40NiAxLjQ2YTUuNDk3IDUuNDk3IDAgMCAxIDguMDUgNC44N3YuNUgxOWMxLjY2IDAgMyAxLjM0IDMgMyAwIDEuMTMtLjY0IDIuMTEtMS41NiAyLjYybDEuNDUgMS40NUMyMy4xNiAxOC4xNiAyNCAxNi42OCAyNCAxNWMwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMyA1LjI3bDIuNzUgMi43NEMyLjU2IDguMTUgMCAxMC43NyAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDExLjczbDIgMkwyMSAyMC43MyA0LjI3IDQgMyA1LjI3ek03LjczIDEwbDggOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00aDEuNzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3VkUXVldWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4zNSAxMC4wNEE3LjQ5IDcuNDkgMCAwIDAgMTIgNEM5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0QTUuOTk0IDUuOTk0IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE5IDE4SDZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTRoLjcxQzcuMzcgNy42OSA5LjQ4IDYgMTIgNmMzLjA0IDAgNS41IDIuNDYgNS41IDUuNXYuNUgxOWMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xvdWRTeW5jIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuNSAxNC45OGMtLjAyIDAtLjAzIDAtLjA1LjAxQTMuNDkgMy40OSAwIDAgMCAxOCAxMmMtMS40IDAtMi42LjgzLTMuMTYgMi4wMkEyLjk4OCAyLjk4OCAwIDAgMCAxMiAxN2MwIDEuNjYgMS4zNCAzIDMgM2w2LjUtLjAyYTIuNSAyLjUgMCAwIDAgMC01ek0xMCA0LjI2djIuMDlDNy42NyA3LjE4IDYgOS4zOSA2IDEyYzAgMS43Ny43OCAzLjM0IDIgNC40NFYxNGgydjZINHYtMmgyLjczQTcuOTQyIDcuOTQyIDAgMCAxIDQgMTJjMC0zLjczIDIuNTUtNi44NSA2LTcuNzR6TTIwIDZoLTIuNzNhNy45OCA3Ljk4IDAgMCAxIDIuNjYgNWgtMi4wMmMtLjIzLTEuMzYtLjkzLTIuNTUtMS45MS0zLjQ0VjEwaC0yVjRoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbG91ZFVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDRBNS45OTQgNS45OTQgMCAwIDAgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTQgMTN2NGgtNHYtNEg3bDUtNSA1IDVoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMzUgMTAuMDRBNy40OSA3LjQ5IDAgMCAwIDEyIDRDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNEE1Ljk5NCA1Ljk5NCAwIDAgMCAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcmVhdGVOZXdGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS0xIDhoLTN2M2gtMnYtM2gtM3YtMmgzVjloMnYzaDN2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlmZmVyZW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDIzSDRjLTEuMSAwLTItLjktMi0yVjdoMnYxNGgxNHYyek0xNSAxSDhjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNiAxN2MwIDEuMS44OSAyIDEuOTkgMkgxOWMxLjEgMCAyLS45IDItMlY3bC02LTZ6bTEuNSAxNGgtNnYtMmg2djJ6bTAtNmgtMnYyaC0yVjloLTJWN2gyVjVoMnYyaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG93bmxvYWREb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMTMgNS40MSAxOC43MiA0bC05LjE5IDkuMTktNC4yNS00LjI0LTEuNDEgMS40MSA1LjY2IDUuNjZ6TTUgMThoMTR2Mkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb3dubG9hZEZvck9mZmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwIDEwLTQuNDkgMTAtMTBTMTcuNTEgMiAxMiAyem0tMSA4VjZoMnY0aDNsLTQgNC00LTRoM3ptNiA3SDd2LTJoMTB2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDIwaDE0di0ySDV2MnpNMTkgOWgtNFYzSDl2Nkg1bDcgNyA3LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvd25sb2FkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMzIgNC4yNkE5Ljk0OSA5Ljk0OSAwIDAgMCAxMyAyLjA1djIuMDJjMS40Ni4xOCAyLjc5Ljc2IDMuOSAxLjYybDEuNDItMS40M3pNMTkuOTMgMTFoMi4wMmMtLjItMi4wMS0xLTMuODQtMi4yMS01LjMyTDE4LjMxIDcuMWE3Ljk0MSA3Ljk0MSAwIDAgMSAxLjYyIDMuOXptLTEuNjIgNS45IDEuNDMgMS40M2E5Ljk4MSA5Ljk4MSAwIDAgMCAyLjIxLTUuMzJoLTIuMDJhNy45NDUgNy45NDUgMCAwIDEtMS42MiAzLjg5ek0xMyAxOS45M3YyLjAyYzIuMDEtLjIgMy44NC0xIDUuMzItMi4yMWwtMS40My0xLjQzYy0xLjEuODYtMi40MyAxLjQ0LTMuODkgMS42MnpNMTMgMTJWN2gtMnY1SDdsNSA1IDUtNWgtNHptLTIgNy45M3YyLjAyYy01LjA1LS41LTktNC43Ni05LTkuOTVzMy45NS05LjQ1IDktOS45NXYyLjAyQzcuMDUgNC41NiA0IDcuOTIgNCAxMnMzLjA1IDcuNDQgNyA3LjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcml2ZUZpbGVNb3ZlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0wIDEySDRWOGgxNnYxMHptLTguMDEtOS0xLjQxIDEuNDFMMTIuMTYgMTJIOHYyaDQuMTZsLTEuNTkgMS41OUwxMS45OSAxNyAxNiAxMy4wMSAxMS45OSA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcml2ZUZpbGVNb3ZlUnRsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTggMTEtNC00IDQtNHYzaDR2MmgtNHYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcml2ZUZpbGVNb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tNiAxMnYtM2gtNHYtNGg0VjhsNSA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRHJpdmVGaWxlUmVuYW1lT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjQxIDUuOCAxNy4yIDQuNTljLS43OC0uNzgtMi4wNS0uNzgtMi44MyAwbC0yLjY4IDIuNjhMMyAxNS45NlYyMGg0LjA0bDguNzQtOC43NCAyLjYzLTIuNjNjLjc5LS43OC43OS0yLjA1IDAtMi44M3pNNi4yMSAxOEg1di0xLjIxbDguNjYtOC42NiAxLjIxIDEuMjFMNi4yMSAxOHpNMTEgMjBsNC00aDZ2NEgxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRHJpdmVGb2xkZXJVcGxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjhoMTZ2MTB6TTggMTMuMDFsMS40MSAxLjQxTDExIDEyLjg0VjE3aDJ2LTQuMTZsMS41OSAxLjU5TDE2IDEzLjAxIDEyLjAxIDkgOCAxMy4wMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsZURvd25sb2FkRG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxOGgxNHYySDV2LTJ6bTQuNi0yLjdMNSAxMC43bDItMS45IDIuNiAyLjZMMTcgNGwyIDItOS40IDkuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsZURvd25sb2FkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA2LjE3VjNoNnY2aDRsLTMuNTkgMy41OUw5IDYuMTd6bTEyLjE5IDE1LjAyTDIuODEgMi44MSAxLjM5IDQuMjIgNi4xNyA5SDVsNyA3IC41OS0uNTlMMTUuMTcgMThINXYyaDEyLjE3bDIuNjEgMi42MSAxLjQxLTEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbGVEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsZU9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjg5IDIgMS45OSAySDE1di04aDVWOGwtNi02em0tMSA3VjMuNUwxOC41IDlIMTN6bTQgMTIuNjZWMTZoNS42NnYyaC0yLjI0bDIuOTUgMi45NS0xLjQxIDEuNDFMMTkgMTkuNDF2Mi4yNGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsZVVwbG9hZE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjJsNC43IDQuNjlMNSAxMGgyLjE3TDkgMTEuODNWMTZoNC4xN2wyIDJINXYyaDEyLjE3bDIuNjEgMi42MXpNMTUgMTBoNGwtNy03LTMuMDkgMy4wOUwxNSAxMi4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsZVVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTZoNnYtNmg0bC03LTctNyA3aDR6bS00IDJoMTR2Mkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xkZXJDb3B5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA2SDF2MTNjMCAxLjEuOSAyIDIgMmgxN3YtMkgzVjZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDRoLTdsLTItMkg3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMTVjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xkZXJEZWxldGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA4djEwYzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0ybC4wMS0xMmMwLTEuMS44OS0yIDEuOTktMmg2bDIgMmg4YzEuMSAwIDIgLjkgMiAyem0tNS41IDJWOWgtMnYxSDEydjEuNWgxdjRjMCAuODMuNjcgMS41IDEuNSAxLjVoMmMuODMgMCAxLjUtLjY3IDEuNS0xLjV2LTRoMVYxMGgtMi41em0wIDUuNWgtMnYtNGgydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvbGRlck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg2LjgzbDE0LjkzIDE0LjkzYy4xNS0uMjguMjQtLjU5LjI0LS45M1Y4YzAtMS4xLS45LTItMi0yek0yLjEgMi4xLjY5IDMuNTFsMS41NiAxLjU2Yy0uMTUuMjgtLjI0LjU5LS4yNC45M0wyIDE4YzAgMS4xLjkgMiAyIDJoMTMuMTdsMy4zMSAzLjMxIDEuNDEtMS40MUwyLjEgMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xkZXJPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTJINFY4aDE2djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xkZXJTaGFyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTUgM2MxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTQgOGgtOHYtMWMwLTEuMzMgMi42Ny0yIDQtMnM0IC42NyA0IDJ2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9sZGVyWmlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS0yIDZoLTJ2MmgydjJoLTJ2MmgtMnYtMmgydi0yaC0ydi0yaDJ2LTJoLTJWOGgydjJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJoLThsLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ybWF0T3ZlcmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzdjJINVYzaDE0em0tNyA0Yy0zLjg3IDAtNyAzLjEzLTcgN3MzLjEzIDcgNyA3IDctMy4xMyA3LTctMy4xMy03LTctN3ptMCAxMS41Yy0yLjQ5IDAtNC41LTIuMDEtNC41LTQuNVM5LjUxIDkuNSAxMiA5LjVzNC41IDIuMDEgNC41IDQuNS0yLjAxIDQuNS00LjUgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcmlkVmlldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzdjhoOFYzSDN6bTYgNkg1VjVoNHY0em0tNiA0djhoOHYtOEgzem02IDZINXYtNGg0djR6bTQtMTZ2OGg4VjNoLTh6bTYgNmgtNFY1aDR2NHptLTYgNHY4aDh2LThoLTh6bTYgNmgtNHYtNGg0djR6XCJ9LFwiY2hpbGRcIjpbXX1dfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV3c3BhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgMy0xLjY3IDEuNjdMMTguNjcgMyAxNyA0LjY3IDE1LjMzIDNsLTEuNjYgMS42N0wxMiAzbC0xLjY3IDEuNjdMOC42NyAzIDcgNC42NyA1LjMzIDMgMy42NyA0LjY3IDIgM3YxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjN6TTExIDE5SDR2LTZoN3Y2em05IDBoLTd2LTJoN3Yyem0wLTRoLTd2LTJoN3Yyem0wLTRINFY4aDE2djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlcXVlc3RRdW90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptMSAxMGgtNHYxaDNjLjU1IDAgMSAuNDUgMSAxdjNjMCAuNTUtLjQ1IDEtMSAxaC0xdjFoLTJ2LTFIOXYtMmg0di0xaC0zYy0uNTUgMC0xLS40NS0xLTF2LTNjMC0uNTUuNDUtMSAxLTFoMVY5aDJ2MWgydjJ6bS0yLTRWMy41TDE3LjUgOEgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUnVsZUZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yek03LjgzIDE2IDUgMTMuMTdsMS40MS0xLjQxIDEuNDEgMS40MSAzLjU0LTMuNTQgMS40MSAxLjQxTDcuODMgMTZ6bTkuNTgtM0wxOSAxNC41OSAxNy41OSAxNiAxNiAxNC40MSAxNC40MSAxNiAxMyAxNC41OSAxNC41OSAxMyAxMyAxMS40MSAxNC40MSAxMCAxNiAxMS41OSAxNy41OSAxMCAxOSAxMS40MSAxNy40MSAxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU25pcHBldEZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1Ljg4IDEwLjUgMS42MiAxLjYydjMuMzhoLTN2LTVoMS4zOHpNMjIgOHYxMGMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMmwuMDEtMTJjMC0xLjEuODktMiAxLjk5LTJoNmwyIDJoOGMxLjEgMCAyIC45IDIgMnptLTMgMy41TDE2LjUgOUgxM3Y4aDZ2LTUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGV4dFNuaXBwZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC40MSA4LjQxLTQuODMtNC44M2MtLjM3LS4zNy0uODgtLjU4LTEuNDEtLjU4SDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWOS44M2MwLS41My0uMjEtMS4wNC0uNTktMS40MnpNNyA3aDd2Mkg3Vjd6bTEwIDEwSDd2LTJoMTB2MnptMC00SDd2LTJoMTB2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVG9waWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTYgMTBINnYtMmg4djJ6bTQtNEg2di0yaDEydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFVwbG9hZEZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptNCAxOEg2VjRoN3Y1aDV2MTF6TTggMTUuMDFsMS40MSAxLjQxTDExIDE0Ljg0VjE5aDJ2LTQuMTZsMS41OSAxLjU5TDE2IDE1LjAxIDEyLjAxIDExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVcGxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDIwaDE0di0ySDV2MnptMC0xMGg0djZoNnYtNmg0bC03LTctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXb3Jrc3BhY2VzRmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxM2MtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00em02LTEwQzkuOCAzIDggNC44IDggN3MxLjggNCA0IDQgNC0xLjggNC00LTEuOC00LTQtNHptNiAxMGMtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXb3Jrc3BhY2VzT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTVjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAtMmMtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00em02LThjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAtMkM5LjggMyA4IDQuOCA4IDdzMS44IDQgNCA0IDQtMS44IDQtNC0xLjgtNC00LTR6bTYgMTJjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAtMmMtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXb3Jrc3BhY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxM2MtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00em02LTEwQzkuOCAzIDggNC44IDggN3MxLjggNCA0IDQgNC0xLjggNC00LTEuOC00LTQtNHptNiAxMGMtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGZTY2FubmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTJoLTFWNEg2djhINWMtMS42NiAwLTMgMS4zNC0zIDN2NWgyMHYtNWMwLTEuNjYtMS4zNC0zLTMtM3ptLTMgMEg4VjZoOHY2em0yIDVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnJvd3Nlck5vdFN1cHBvcnRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDZ2MTAuNWwxLjk1IDEuOTVjLjAzLS4xNS4wNS0uMy4wNS0uNDVWNmMwLTEuMS0uOS0yLTItMkg2LjVsMiAySDE5ek0zLjIyIDMuMzIgMS45NSA0LjU5IDMgNS42NFYxOGMwIDEuMS45IDIgMiAyaDEyLjM2bDIuMDYgMi4wNiAxLjI3LTEuMjdMMy4yMiAzLjMyek0xNSAxOEg1VjcuNjRMMTUuMzYgMThIMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyb3dzZXJVcGRhdGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTN2M2MwIDEuMS0uOSAyLTIgMmgtM2wxIDF2Mkg2di0ybDEtMUg0Yy0xLjEgMC0yLS45LTItMlY1YzAtMS4xLjktMiAyLTJoOHYySDR2MTFoMTZ2LTNoMnptLTcgMi01LTVoNFYzaDJ2N2g0bC01IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhc3RDb25uZWN0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIixcIm9wYWNpdHlcIjpcIi4xXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMTh2M2gzYzAtMS42Ni0xLjM0LTMtMy0zem0wLTR2MmMyLjc2IDAgNSAyLjI0IDUgNWgyYzAtMy44Ny0zLjEzLTctNy03em0xOC03SDV2MS42M2MzLjk2IDEuMjggNy4wOSA0LjQxIDguMzcgOC4zN0gxOVY3ek0xIDEwdjJhOSA5IDAgMCAxIDkgOWgyYzAtNi4wOC00LjkzLTExLTExLTExem0yMC03SDNjLTEuMSAwLTIgLjktMiAydjNoMlY1aDE4djE0aC03djJoN2MxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYXN0Rm9yRWR1Y2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjNoMlY1aDE4djE0aC03djJoN2MxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek0xIDE4djNoM2MwLTEuNjYtMS4zNC0zLTMtM3ptMC00djJjMi43NiAwIDUgMi4yNCA1IDVoMmMwLTMuODctMy4xMy03LTctN3ptMC00djJhOSA5IDAgMCAxIDkgOWgyYzAtNi4wOC00LjkzLTExLTExLTExem0xMCAxLjA5djJMMTQuNSAxNWwzLjUtMS45MXYtMkwxNC41IDEzIDExIDExLjA5ek0xNC41IDYgOSA5bDUuNSAzTDIwIDlsLTUuNS0zelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCIsXCJvcGFjaXR5XCI6XCIuMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjNoMlY1aDE4djE0aC03djJoN2MxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek0xIDE4djNoM2MwLTEuNjYtMS4zNC0zLTMtM3ptMC00djJjMi43NiAwIDUgMi4yNCA1IDVoMmMwLTMuODctMy4xMy03LTctN3ptMC00djJhOSA5IDAgMCAxIDkgOWgyYzAtNi4wOC00LjkzLTExLTExLTExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb21wdXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4YzEuMSAwIDEuOTktLjkgMS45OS0yTDIyIDZjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMkgwdjJoMjR2LTJoLTR6TTQgNmgxNnYxMEg0VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbm5lY3RlZFR2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNWMwLTEuMS0uOS0yLTItMnptMCAxNEgzVjVoMTh2MTJ6TTQgMTR2MmgyYzAtMS4xMS0uODktMi0yLTJ6bTAtM3YxLjQzYzEuOTcgMCAzLjU3IDEuNiAzLjU3IDMuNTdIOWMwLTIuNzYtMi4yNC01LTUtNXptMC0zdjEuNDVjMy42MSAwIDYuNTUgMi45MyA2LjU1IDYuNTVIMTJjMC00LjQyLTMuNTktOC04LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnZleW9yQmVsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE1SDVjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDNoMTRjMS42NiAwIDMtMS4zNCAzLTNzLTEuMzQtMy0zLTN6bTAgNEg1Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xaDE0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxek05IDR2OGMwIC41NS40NSAxIDEgMWg4Yy41NSAwIDEtLjQ1IDEtMVY0YzAtLjU1LS40NS0xLTEtMWgtOGMtLjU1IDAtMSAuNDUtMSAxem03IDRoLTRWNi4wMmg0Vjh6TTIgOS4wMmg0Ljk0djEuOTFIMlY5LjAyem0yLjAxLTNoMi45M3YxLjk2SDQuMDFWNi4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVza3RvcE1hYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMmg2bC0yIDJ2MWg4di0xbC0yLTJoNmMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlc2t0b3BXaW5kb3dzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDZ2Mkg4djJoOHYtMmgtMnYtMmg2YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGV2ZWxvcGVyQm9hcmRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjgzIDVIMTh2MTAuMTdMMTkuODMgMTdIMjJ2LTJoLTJ2LTJoMnYtMmgtMlY5aDJWN2gtMlY1YzAtMS4xLS45LTItMi0ySDUuODNsMiAyek0xMiA5LjE3VjdoNHYzaC0zLjE3TDEyIDkuMTd6TTkuODMgN0gxMXYxLjE3TDkuODMgN3ptNCA0SDE2djIuMTdMMTMuODMgMTF6TTE4IDIxYy4wNiAwIC4xMSAwIC4xNi0uMDFsMi4zMiAyLjMyIDEuNDEtMS40MUwyLjEgMi4xLjY5IDMuNTFsMS4zMiAxLjMyQzIgNC44OSAyIDQuOTQgMiA1djE0YzAgMS4xLjkgMiAyIDJoMTR6TTQgMTlWNi44M2wyIDJWMTJoMy4xN2wxIDFINnY0aDV2LTMuMTdsMSAxVjE3aDIuMTdsMiAySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERldmVsb3BlckJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA5VjdoLTJWNWMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi0yaDJ2LTJoLTJ2LTJoMnYtMmgtMlY5aDJ6bS00IDEwSDRWNWgxNHYxNHpNNiAxM2g1djRINnptNi02aDR2M2gtNHpNNiA3aDV2NUg2em02IDRoNHY2aC00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERldmljZUh1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3IDE2LTQtNFY4LjgyQzE0LjE2IDguNCAxNSA3LjMgMTUgNmMwLTEuNjYtMS4zNC0zLTMtM1M5IDQuMzQgOSA2YzAgMS4zLjg0IDIuNCAyIDIuODJWMTJsLTQgNEgzdjVoNXYtMy4wNWw0LTQuMiA0IDQuMlYyMWg1di01aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZXZpY2VVbmtub3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMThIN1Y1aDEwdjE0ek0xMiA2LjcyYy0xLjk2IDAtMy41IDEuNTItMy41IDMuNDdoMS43NWMwLS45My44Mi0xLjc1IDEuNzUtMS43NXMxLjc1LjgyIDEuNzUgMS43NWMwIDEuNzUtMi42MyAxLjU3LTIuNjMgNC40NWgxLjc2YzAtMS45NiAyLjYyLTIuMTkgMi42Mi00LjQ1IDAtMS45Ni0xLjU0LTMuNDctMy41LTMuNDd6bS0uODggOC44aDEuNzZ2MS43NmgtMS43NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGV2aWNlc090aGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA2aDE4VjRIM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg0di0ySDNWNnptMTAgNkg5djEuNzhjLS42MS41NS0xIDEuMzMtMSAyLjIycy4zOSAxLjY3IDEgMi4yMlYyMGg0di0xLjc4Yy42MS0uNTUgMS0xLjM0IDEtMi4yMnMtLjM5LTEuNjctMS0yLjIyVjEyem0tMiA1LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek0yMiA4aC02Yy0uNSAwLTEgLjUtMSAxdjEwYzAgLjUuNSAxIDEgMWg2Yy41IDAgMS0uNSAxLTFWOWMwLS41LS41LTEtMS0xem0tMSAxMGgtNHYtOGg0djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDIzaDh2LTJIOHYyem04LTIxLjk5TDggMWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE2IDE1SDhWNWg4djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFYXJidWRzQmF0dGVyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDdoLTFWNmgtMnYxaC0xYy0uNTUgMC0xIC40NS0xIDF2OWMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMVY4YzAtLjU1LS40NS0xLTEtMXpNMTAuNjIgNkM4Ljc2IDYgNy4yNSA3LjUxIDcuMjUgOS4zOHY1LjI1YzAgMS4wNC0uODQgMS44OC0xLjg4IDEuODhzLTEuODctLjg1LTEuODctMS44OXYtNC43Yy4xNi4wNS4zMy4wOC41LjA4IDEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMnY2LjYyQzIgMTYuNDkgMy41MSAxOCA1LjM4IDE4czMuMzgtMS41MSAzLjM4LTMuMzhWOS4zOGMwLTEuMDQuODQtMS44OCAxLjg4LTEuODhzMS44OC44NCAxLjg4IDEuODh2NC43Yy0uMTgtLjA1LS4zNS0uMDgtLjUyLS4wOC0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMlY5LjM4QzE0IDcuNTEgMTIuNDkgNiAxMC42MiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFYXJidWRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4yIDMuMDFDNC40NCAyLjg5IDMgNC40MiAzIDYuMTlWMTZjMCAyLjc2IDIuMjQgNSA1IDVzNS0yLjI0IDUtNVY4YzAtMS42NiAxLjM0LTMgMy0zczMgMS4zNCAzIDN2N2gtLjgzYy0xLjYxIDAtMy4wNiAxLjE4LTMuMTcgMi43OUEzIDMgMCAwIDAgMTcuOCAyMWMxLjc2LjEyIDMuMi0xLjQyIDMuMi0zLjE4VjhjMC0yLjc2LTIuMjQtNS01LTVzLTUgMi4yNC01IDV2OGMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtM1Y5aC44M0M3LjQ0IDkgOC44OSA3LjgyIDkgNi4yMWMuMTEtMS42OC0xLjE3LTMuMS0yLjgtMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JrbGlmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDE3djJoLTVWM2gydjE0aDN6bS02LjI3LTEuODVjLjE3LjQyLjI3Ljg3LjI3IDEuMzUgMCAxLjkzLTEuNTcgMy41LTMuNSAzLjUtMS40IDAtMi42LS44Mi0zLjE2LTJINi44M0EyLjk5IDIuOTkgMCAwIDEgNCAyMGMtMS42NiAwLTMtMS4zNC0zLTMgMC0uODkuMzktMS42OSAxLTIuMjRWMTBoMlY0aDhsNC43MyAxMS4xNXpNNSAxN2MwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMSAuNDUgMSAxIDEgMS0uNDUgMS0xem04LjY1LTQtMi45Ny03SDZ2NGwyLjkyIDNoNC43M3pNMTUgMTYuNWMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41LjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRnJvbnRMb2FkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS41IDYuNS0xLjkxIDEuOTFjLS4zOC4zOC0uNTkuODktLjU5IDEuNDJWMTFoLTFWN2MwLTEuNjYtMS4zNC0zLTMtM0g4djVIM2MtMS4xIDAtMiAuOS0yIDJ2NS44NWMwIDEuNTggMS4xNiAzLjAxIDIuNzQgMy4xNGEyLjk5IDIuOTkgMCAwIDAgMy4wNy0xLjk4bDQuMzctLjAxYTIuOTc5IDIuOTc5IDAgMCAwIDMuNDEgMS45NCAzLjAxMyAzLjAxMyAwIDAgMCAyLjM1LTIuMzljLjItMS4xMS0uMjItMi4xMS0uOTUtMi43N1YxM2gxYzAgMS4xLjkgMiAyIDJoNUwxOS41IDYuNXpNNCAxOGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem02LTEyaDNjLjU1IDAgMSAuNDUgMSAxdjRoLTRWNnptNCAxMmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHYW1lcGFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgNy41VjJIOXY1LjVsMyAzIDMtM3pNNy41IDlIMnY2aDUuNWwzLTMtMy0zek05IDE2LjVWMjJoNnYtNS41bC0zLTMtMyAzek0xNi41IDlsLTMgMyAzIDNIMjJWOWgtNS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWFkcGhvbmVzQmF0dGVyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDdoLTFWNmgtMnYxaC0xYy0uNTUgMC0xIC40NS0xIDF2OWMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMVY4YzAtLjU1LS40NS0xLTEtMXpNOCA2Yy0zLjMxIDAtNiAyLjY5LTYgNnY0YzAgMS4xLjkgMiAyIDJoMnYtNUgzLjV2LTFjMC0yLjQ4IDIuMDItNC41IDQuNS00LjVzNC41IDIuMDIgNC41IDQuNXYxSDEwdjVoMmMxLjEgMCAyLS45IDItMnYtNGMwLTMuMzEtMi42OS02LTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGVhZHBob25lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNhOSA5IDAgMCAwLTkgOXY3YzAgMS4xLjkgMiAyIDJoNHYtOEg1di0xYzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDd2MWgtNHY4aDRjMS4xIDAgMi0uOSAyLTJ2LTdhOSA5IDAgMCAwLTktOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGVhZHNldE1pYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCIsXCJvcGFjaXR5XCI6XCIuMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxYTkgOSAwIDAgMC05IDl2N2MwIDEuNjYgMS4zNCAzIDMgM2gzdi04SDV2LTJjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgN3YyaC00djhoNHYxaC03djJoNmMxLjY2IDAgMy0xLjM0IDMtM1YxMGE5IDkgMCAwIDAtOS05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWFkc2V0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzMuODcgMCA3IDMuMTMgNyA3djJoLTIuOTJMMjEgMTcuOTJWMTFhOSA5IDAgMCAwLTktOWMtMS45NSAwLTMuNzYuNjItNS4yMyAxLjY4bDEuNDQgMS40NEE2LjkxNCA2LjkxNCAwIDAgMSAxMiA0ek0yLjI3IDEuNzIgMSAzbDMuMzMgMy4zMkE4Ljg5OSA4Ljg5OSAwIDAgMCAzIDExdjdjMCAxLjY2IDEuMzQgMyAzIDNoM3YtOEg1di0yYzAtMS4xNy4yOS0yLjI2Ljc5LTMuMjJMMTUgMTd2NGgzYy4zIDAgLjU5LS4wNi44Ni0uMTRMMjEgMjNsMS4yNy0xLjI3LTIwLTIwLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWFkc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIixcIm9wYWNpdHlcIjpcIi4xXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDFhOSA5IDAgMCAwLTkgOXY3YzAgMS42NiAxLjM0IDMgMyAzaDN2LThINXYtMmMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3djJoLTR2OGgzYzEuNjYgMCAzLTEuMzQgMy0zdi03YTkgOSAwIDAgMC05LTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvbWVNYXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1SDVDMi43OSA1IDEgNi43OSAxIDl2NWMwIDIuMjEgMS43OSA0IDQgNGgydjFoMTB2LTFoMmMyLjIxIDAgNC0xLjc5IDQtNFY5YzAtMi4yMS0xLjc5LTQtNC00em0yIDljMCAxLjEtLjkgMi0yIDJINWMtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDE0YzEuMSAwIDIgLjkgMiAydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvbWVNaW5pIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNUM0LjE5IDUgMiA5LjQ4IDIgMTJjMCAzLjg2IDMuMTMgNyA2Ljk5IDdoNi4wMkMxNy43IDE5IDIyIDE2LjkyIDIyIDEyYzAgMCAwLTctMTAtN3ptMCAyYzcuNjQgMCA3Ljk5IDQuNTEgOCA1SDRjMC0uMi4wOS01IDgtNXptMi44NiAxMEg5LjE0Yy0yLjEgMC0zLjkyLTEuMjQtNC43MS0zaDE1LjE1Yy0uOCAxLjc2LTIuNjIgMy00LjcyIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNEgzYy0xLjEgMC0yIC45LTIgMnYxM2MwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTcgMTJ2Mkg1di0yaDJ6bS0yLTJWOGgydjJINXptNiAydjJIOXYtMmgyem0tMi0yVjhoMnYySDl6bTcgNnYxSDh2LTFoOHptLTEtNHYyaC0ydi0yaDJ6bS0yLTJWOGgydjJoLTJ6bTQgNHYtMmgydjJoLTJ6bTItNGgtMlY4aDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5Ym9hcmRBcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNDEgOC41OSAxMiAxMy4xN2w0LjU5LTQuNThMMTggMTBsLTYgNi02LTYgMS40MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZEFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNDEgMTYuNTkgMTAuODMgMTJsNC41OC00LjU5TDE0IDZsLTYgNiA2IDYgMS40MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZEFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNTkgMTYuNTkgMTMuMTcgMTIgOC41OSA3LjQxIDEwIDZsNiA2LTYgNi0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNDEgMTUuNDEgMTIgMTAuODNsNC41OSA0LjU4TDE4IDE0bC02LTYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZEJhY2tzcGFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDExSDYuODNsMy41OC0zLjU5TDkgNmwtNiA2IDYgNiAxLjQxLTEuNDFMNi44MyAxM0gyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5Ym9hcmRDYXBzbG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDguNDEgMTYuNTkgMTMgMTggMTEuNTlsLTYtNi02IDZMNy40MSAxMyAxMiA4LjQxek02IDE4aDEydi0ySDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5Ym9hcmRDb21tYW5kS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNSAzQzE1LjU3IDMgMTQgNC41NyAxNCA2LjVWOGgtNFY2LjVDMTAgNC41NyA4LjQzIDMgNi41IDNTMyA0LjU3IDMgNi41IDQuNTcgMTAgNi41IDEwSDh2NEg2LjVDNC41NyAxNCAzIDE1LjU3IDMgMTcuNVM0LjU3IDIxIDYuNSAyMXMzLjUtMS41NyAzLjUtMy41VjE2aDR2MS41YzAgMS45MyAxLjU3IDMuNSAzLjUgMy41czMuNS0xLjU3IDMuNS0zLjUtMS41Ny0zLjUtMy41LTMuNUgxNnYtNGgxLjVjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTkuNDMgMyAxNy41IDN6TTE2IDhWNi41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41UzE4LjMzIDggMTcuNSA4SDE2ek02LjUgOEM1LjY3IDggNSA3LjMzIDUgNi41UzUuNjcgNSA2LjUgNSA4IDUuNjcgOCA2LjVWOEg2LjV6bTMuNSA2di00aDR2NGgtNHptNy41IDVjLS44MyAwLTEuNS0uNjctMS41LTEuNVYxNmgxLjVjLjgzIDAgMS41LjY3IDEuNSAxLjVzLS42NyAxLjUtMS41IDEuNXptLTExIDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVM1LjY3IDE2IDYuNSAxNkg4djEuNWMwIC44My0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkQ29udHJvbEtleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTUgMTIgMS40MSAxLjQxTDEyIDcuODNsNS41OSA1LjU4TDE5IDEybC03LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkRG91YmxlQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNi40MSAxNi41OSA1IDEyIDkuNTggNy40MSA1IDYgNi40MWw2IDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDEzLTEuNDEtMS40MUwxMiAxNi4xN2wtNC41OS00LjU4TDYgMTNsNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZERvdWJsZUFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjU5IDE4IDE5IDE2LjU5IDE0LjQyIDEyIDE5IDcuNDEgMTcuNTkgNmwtNiA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMSAxOCAxLjQxLTEuNDFMNy44MyAxMmw0LjU4LTQuNTlMMTEgNmwtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZERvdWJsZUFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjQxIDYgNSA3LjQxIDkuNTggMTIgNSAxNi41OSA2LjQxIDE4bDYtNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgNi0xLjQxIDEuNDFMMTYuMTcgMTJsLTQuNTggNC41OUwxMyAxOGw2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkRG91YmxlQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTcuNTkgNy40MSAxOSAxMiAxNC40MiAxNi41OSAxOSAxOCAxNy41OWwtNi02elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02IDExIDEuNDEgMS40MUwxMiA3LjgzbDQuNTkgNC41OEwxOCAxMWwtNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZEhpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxNWMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS05IDNoMnYyaC0yVjZ6bTAgM2gydjJoLTJWOXpNOCA2aDJ2Mkg4VjZ6bTAgM2gydjJIOFY5em0tMSAySDVWOWgydjJ6bTAtM0g1VjZoMnYyem05IDdIOHYtMmg4djJ6bTAtNGgtMlY5aDJ2MnptMC0zaC0yVjZoMnYyem0zIDNoLTJWOWgydjJ6bTAtM2gtMlY2aDJ2MnptLTcgMTUgNC00SDhsNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLZXlib2FyZE9wdGlvbktleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDVoNnYyaC02ek05IDVIM3YyaDQuODVsNi45MiAxMkgyMXYtMmgtNS4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2V5Ym9hcmRSZXR1cm4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3djRINS44M2wzLjU4LTMuNTlMOCA2bC02IDYgNiA2IDEuNDEtMS40MUw1LjgzIDEzSDIxVjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkVGFiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNTkgNy40MSAxNS4xNyAxMUgxdjJoMTQuMTdsLTMuNTkgMy41OUwxMyAxOGw2LTYtNi02LTEuNDEgMS40MXpNMjAgNnYxMmgyVjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkVm9pY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNWMxLjY2IDAgMi45OS0xLjM0IDIuOTktM0wxNSA2YzAtMS42Ni0xLjM0LTMtMy0zUzkgNC4zNCA5IDZ2NmMwIDEuNjYgMS4zNCAzIDMgM3ptNS4zLTNjMCAzLTIuNTQgNS4xLTUuMyA1LjFTNi43IDE1IDYuNyAxMkg1YzAgMy40MiAyLjcyIDYuMjMgNiA2LjcyVjIyaDJ2LTMuMjhjMy4yOC0uNDggNi0zLjMgNi02LjcyaC0xLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtleWJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxN2MwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bS05IDNoMnYyaC0yVjh6bTAgM2gydjJoLTJ2LTJ6TTggOGgydjJIOFY4em0wIDNoMnYySDh2LTJ6bS0xIDJINXYtMmgydjJ6bTAtM0g1VjhoMnYyem05IDdIOHYtMmg4djJ6bTAtNGgtMnYtMmgydjJ6bTAtM2gtMlY4aDJ2MnptMyAzaC0ydi0yaDJ2MnptMC0zaC0yVjhoMnYyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExhcHRvcENocm9tZWJvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxOFYzSDJ2MTVIMHYyaDI0di0yaC0yem0tOCAwaC00di0xaDR2MXptNi0zSDRWNWgxNnYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGFwdG9wTWFjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMThjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjIgNWMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAySDBjMCAxLjEuOSAyIDIgMmgyMGMxLjEgMCAyLS45IDItMmgtNHpNNCA1aDE2djExSDRWNXptOCAxNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYXB0b3BXaW5kb3dzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTh2LTFjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjIgNWMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAydjFIMHYyaDI0di0yaC00ek00IDVoMTZ2MTBINFY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYXB0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJIMHYyaDI0di0yaC00ek00IDZoMTZ2MTBINFY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNZW1vcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA5SDl2Nmg2Vjl6bS0yIDRoLTJ2LTJoMnYyem04LTJWOWgtMlY3YzAtMS4xLS45LTItMi0yaC0yVjNoLTJ2MmgtMlYzSDl2Mkg3Yy0xLjEgMC0yIC45LTIgMnYySDN2MmgydjJIM3YyaDJ2MmMwIDEuMS45IDIgMiAyaDJ2Mmgydi0yaDJ2Mmgydi0yaDJjMS4xIDAgMi0uOSAyLTJ2LTJoMnYtMmgtMnYtMmgyem0tNCA2SDdWN2gxMHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9uaXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyaDNsLTEgMXYyaDEydi0ybC0xLTFoM2MxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDEzSDRWNWgxNnYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW91c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxLjA3VjloN2MwLTQuMDgtMy4wNS03LjQ0LTctNy45M3pNNCAxNWMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04di00SDR2NHptNy0xMy45M0M3LjA1IDEuNTYgNCA0LjkyIDQgOWg3VjEuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTh2NGgzdi0yaDUuNXYyaDN2LTJIMTl2Mmgzdi00ek0xOCAySDZjLS41NSAwLTEgLjQ1LTEgMXYxMmMwIC41NS40NSAxIDEgMWgxMmMuNTUgMCAxLS40NSAxLTFWM2MwLS41NS0uNDUtMS0xLTF6bS0zIDZIOVY2aDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmVBbmRyb2lkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMUg4QzYuMzQgMSA1IDIuMzQgNSA0djE2YzAgMS42NiAxLjM0IDMgMyAzaDhjMS42NiAwIDMtMS4zNCAzLTNWNGMwLTEuNjYtMS4zNC0zLTMtM3ptLTIgMjBoLTR2LTFoNHYxem0zLjI1LTNINi43NVY0aDEwLjV2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lSXBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxaC04QTIuNSAyLjUgMCAwIDAgNSAzLjV2MTdBMi41IDIuNSAwIDAgMCA3LjUgMjNoOGEyLjUgMi41IDAgMCAwIDIuNS0yLjV2LTE3QTIuNSAyLjUgMCAwIDAgMTUuNSAxem0tNCAyMWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTQuNS00SDdWNGg5djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZWxpbmtPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNlY0SDYuODJsMiAySDIyek0xLjkyIDEuNjUuNjUgMi45MmwxLjgyIDEuODJDMi4xOCA1LjA4IDIgNS41MiAyIDZ2MTFIMHYzaDE3LjczbDIuMzUgMi4zNSAxLjI3LTEuMjdMMy44OSAzLjYyIDEuOTIgMS42NXpNNCA2LjI3IDE0LjczIDE3SDRWNi4yN3pNMjMgOGgtNmMtLjU1IDAtMSAuNDUtMSAxdjQuMThsMiAyVjEwaDR2N2gtMi4xOGwzIDNIMjNjLjU1IDAgMS0uNDUgMS0xVjljMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZWxpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZoMThWNEg0Yy0xLjEgMC0yIC45LTIgMnYxMUgwdjNoMTR2LTNINFY2em0xOSAyaC02Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTF6bS0xIDloLTR2LTdoNHY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQb2ludE9mU2FsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDJIN2MtMS4xIDAtMiAuOS0yIDJ2MmMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgNEg3VjRoMTB2MnptMyAxNkg0Yy0xLjEgMC0yLS45LTItMnYtMWgyMHYxYzAgMS4xLS45IDItMiAyem0tMS40Ny0xMS44MUEyLjAwOCAyLjAwOCAwIDAgMCAxNi43IDlINy4zYy0uNzkgMC0xLjUxLjQ3LTEuODMgMS4xOUwyIDE4aDIwbC0zLjQ3LTcuODF6TTkuNSAxNmgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMC0yaC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6bTMgNGgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMC0yaC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6bTMgNGgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMC0yaC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvd2VySW5wdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgOXYyaDE5VjlIMnptMCA2aDV2LTJIMnYyem03IDBoNXYtMkg5djJ6bTcgMGg1di0yaC01djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvdXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjIgNS45LjgtLjhDMTkuNiAzLjcgMTcuOCAzIDE2IDNzLTMuNi43LTUgMi4xbC44LjhDMTMgNC44IDE0LjUgNC4yIDE2IDQuMnMzIC42IDQuMiAxLjd6bS0uOS44Yy0uOS0uOS0yLjEtMS40LTMuMy0xLjRzLTIuNC41LTMuMyAxLjRsLjguOGMuNy0uNyAxLjYtMSAyLjUtMSAuOSAwIDEuOC4zIDIuNSAxbC44LS44ek0xOSAxM2gtMlY5aC0ydjRINWMtMS4xIDAtMiAuOS0yIDJ2NGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi00YzAtMS4xLS45LTItMi0yek04IDE4SDZ2LTJoMnYyem0zLjUgMGgtMnYtMmgydjJ6bTMuNSAwaC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2Nhbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjggMTAuNyA0LjIgNWwtLjcgMS45TDE3LjYgMTJINWMtMS4xIDAtMiAuOS0yIDJ2NGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi01LjVjMC0uOC0uNS0xLjYtMS4yLTEuOHpNNyAxN0g1di0yaDJ2MnptMTIgMEg5di0yaDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlY3VyaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMSAzIDV2NmMwIDUuNTUgMy44NCAxMC43NCA5IDEyIDUuMTYtMS4yNiA5LTYuNDUgOS0xMlY1bC05LTR6bTAgMTAuOTloN2MtLjUzIDQuMTItMy4yOCA3Ljc5LTcgOC45NFYxMkg1VjYuM2w3LTMuMTF2OC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaW1DYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOTkgNGMwLTEuMS0uODktMi0xLjk5LTJoLThMNCA4djEyYzAgMS4xLjkgMiAyIDJoMTIuMDFjMS4xIDAgMS45OS0uOSAxLjk5LTJsLS4wMS0xNnpNOSAxOUg3di0yaDJ2MnptOCAwaC0ydi0yaDJ2MnptLTgtNEg3di00aDJ2NHptNCA0aC0ydi00aDJ2NHptMC02aC0ydi0yaDJ2MnptNCAyaC0ydi00aDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU21hcnREaXNwbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTkuNSAxNi41di05bDcgNC41LTcgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTbWFydFNjcmVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVIM2MtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tMyAxMkg2VjdoMTJ2MTB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDExLjI1aDEuNXYxLjVIMTV6TTEyLjUgMTEuMjVIMTR2MS41aC0xLjV6TTEwIDExLjI1aDEuNXYxLjVIMTB6TTcuNSAxMS4yNUg5djEuNUg3LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNtYXJ0VG95IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOVY3YzAtMS4xLS45LTItMi0yaC0zYzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDVINmMtMS4xIDAtMiAuOS0yIDJ2MmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgM3Y0YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTRjMS42NiAwIDMtMS4zNCAzLTNzLTEuMzQtMy0zLTN6TTcuNSAxMS41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41UzkuODMgMTMgOSAxM3MtMS41LS42Ny0xLjUtMS41ek0xNiAxN0g4di0yaDh2MnptLTEtNGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzE0LjE3IDEwIDE1IDEwczEuNS42NyAxLjUgMS41UzE1LjgzIDEzIDE1IDEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTbWFydHBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMTlIN1Y1aDEwdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGVha2VyR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4yIDFIOS44QzguODEgMSA4IDEuODEgOCAyLjh2MTQuNGMwIC45OS44MSAxLjc5IDEuOCAxLjc5bDguNC4wMWMuOTkgMCAxLjgtLjgxIDEuOC0xLjhWMi44YzAtLjk5LS44MS0xLjgtMS44LTEuOHpNMTQgM2MxLjEgMCAyIC44OSAyIDJzLS45IDItMiAyLTItLjg5LTItMiAuOS0yIDItMnptMCAxMy41Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDQtMS43OSA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNFwiLFwiY3lcIjpcIjEyLjVcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDVINHYxNmEyIDIgMCAwIDAgMiAyaDEwdi0ySDZWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BlYWtlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDJIN2MtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAxLjk5IDIgMS45OUwxNyAyMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNSAyYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMmEyIDIgMCAxIDEgMC00em0wIDE2Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXptMC04Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41OSA3LjQxIDE4LjE3IDExSDZ2MmgxMi4xN2wtMy41OSAzLjU5TDE2IDE4bDYtNi02LTYtMS40MSAxLjQxek0yIDZ2MTJoMlY2SDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhYmxldEFuZHJvaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAwSDZDNC4zNCAwIDMgMS4zNCAzIDN2MThjMCAxLjY2IDEuMzQgMyAzIDNoMTJjMS42NiAwIDMtMS4zNCAzLTNWM2MwLTEuNjYtMS4zNC0zLTMtM3ptLTQgMjJoLTR2LTFoNHYxem01LjI1LTNINC43NVYzaDE0LjV2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhYmxldE1hYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAwaC0xNEEyLjUgMi41IDAgMCAwIDIgMi41djE5QTIuNSAyLjUgMCAwIDAgNC41IDI0aDE0YTIuNSAyLjUgMCAwIDAgMi41LTIuNXYtMTlBMi41IDIuNSAwIDAgMCAxOC41IDB6bS03IDIzYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXptNy41LTRINFYzaDE1djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYWJsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNmMwLTEuMS0uOS0yLTItMnptLTIgMTRINVY2aDE0djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUb3lzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNGMwLTEuOTUtMS40LTMuNTctMy4yNS0zLjkyTDE3LjQgNi4wNUEyLjk3OCAyLjk3OCAwIDAgMCAxNC41NiA0SDkuNDRDOC4xNSA0IDcgNC44MiA2LjYgNi4wNUw1LjgxIDguNCA0LjQxIDdsLjI5LS4yOUEuOTk2Ljk5NiAwIDEgMCAzLjI5IDUuM2wtMiAyQS45OTYuOTk2IDAgMSAwIDIuNyA4LjcxbC4zLS4zIDEuNzkgMS43OUMzLjE4IDEwLjcyIDIgMTIuMjIgMiAxNGMwIDEuNS44MyAyLjc5IDIuMDUgMy40OEEzIDMgMCAwIDAgNyAyMGMxLjMgMCAyLjQtLjg0IDIuODItMmg0LjM3Yy40MSAxLjE2IDEuNTEgMiAyLjgyIDJhMyAzIDAgMCAwIDIuOTUtMi41MkMyMS4xNyAxNi43OSAyMiAxNS41IDIyIDE0ek03IDE4Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTQtOEg3LjQxbC0uMDItLjAyIDEuMS0zLjNBMSAxIDAgMCAxIDkuNDQgNkgxMXY0em0yLTRoMS41NmExIDEgMCAwIDEgLjk1LjY4bDEuMSAzLjMySDEzVjZ6bTQgMTJjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJvbGxleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE0djJINFY0SDJWMmg0djEyaDE1ek01Ljk5IDE3QzQuODkgMTcgNCAxNy45IDQgMTlzLjg5IDIgMS45OSAyQzcuMSAyMSA4IDIwLjEgOCAxOXMtLjktMi0yLjAxLTJ6bTEzIDBjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyUzIxIDIwLjEgMjEgMTlzLS45LTItMi4wMS0yek0xMyAxM0g3VjdoNnY2em03IDBoLTZWN2g2djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFR2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNWMwLTEuMS0uOS0yLTItMnptMCAxNEgzVjVoMTh2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvZ2FtZUFzc2V0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMTkgMjEuMTkgMi44MSAyLjgxIDEuMzkgNC4yMiAzLjMgNi4xM0MyLjU0IDYuNDEgMiA3LjE1IDIgOHY4YzAgMS4xLjkgMiAyIDJoMTEuMTdsNC42MSA0LjYxIDEuNDEtMS40MnpNOSAxM3YySDd2LTJINXYtMmgyVjkuODNMMTAuMTcgMTNIOXptMTEuNyA0Ljg3Yy43Ni0uMjggMS4zLTEuMDIgMS4zLTEuODdWOGMwLTEuMS0uOS0yLTItMkg4LjgzTDIwLjcgMTcuODd6TTE3LjUgOWMuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41LTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlkZW9nYW1lQXNzZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMHYyNGgyNFYwSDB6bTIzIDE2YzAgMS4xLS45IDItMiAySDNjLTEuMSAwLTItLjktMi0yVjhjMC0xLjEuOS0yIDItMmgxOGMxLjEgMCAyIC45IDIgMnY4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA2SDNjLTEuMSAwLTIgLjktMiAydjhjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tMTAgN0g4djNINnYtM0gzdi0yaDNWOGgydjNoM3Yyem00LjUgMmMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTQtM2MtLjgzIDAtMS41LS42Ny0xLjUtMS41UzE4LjY3IDkgMTkuNSA5czEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2F0Y2hPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3YzIuNzYgMCA1IDIuMjQgNSA1IDAgLjY0LS4xMyAxLjI1LS4zNSAxLjgybDEuNSAxLjVhNi45NjMgNi45NjMgMCAwIDAtMS43OS04Ljc5TDE1IDJIOWwtLjk2IDMuMjEgMi4xNCAyLjE0QzEwLjc1IDcuMTMgMTEuMzYgNyAxMiA3ek0yLjgxIDIuODEgMS4zOSA0LjIybDQuNDYgNC40NmE2Ljk2MyA2Ljk2MyAwIDAgMCAxLjc5IDguNzlMOSAyMmg2bC45Ni0zLjIxIDMuODIgMy44MiAxLjQxLTEuNDFMMi44MSAyLjgxek0xMiAxN2MtMi43NiAwLTUtMi4yNC01LTUgMC0uNjQuMTMtMS4yNS4zNS0xLjgybDYuNDcgNi40N2MtLjU3LjIyLTEuMTguMzUtMS44Mi4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2F0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwiLFwib3BhY2l0eVwiOlwiLjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTJjMC0yLjU0LTEuMTktNC44MS0zLjA0LTYuMjdMMTYgMEg4bC0uOTUgNS43M0M1LjE5IDcuMTkgNCA5LjQ1IDQgMTJzMS4xOSA0LjgxIDMuMDUgNi4yN0w4IDI0aDhsLjk2LTUuNzNBNy45NzYgNy45NzYgMCAwIDAgMjAgMTJ6TTYgMTJjMC0zLjMxIDIuNjktNiA2LTZzNiAyLjY5IDYgNi0yLjY5IDYtNiA2LTYtMi42OS02LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF1dG9Nb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMDMgMy41NmMtMS42Ny0xLjM5LTMuNzQtMi4zLTYuMDMtMi41MXYyLjAxYzEuNzMuMTkgMy4zMS44OCA0LjYxIDEuOTJsMS40Mi0xLjQyek0xMSAzLjA2VjEuMDVjLTIuMjkuMi00LjM2IDEuMTItNi4wMyAyLjUxbDEuNDIgMS40MkE4LjkyOCA4LjkyOCAwIDAgMSAxMSAzLjA2ek00Ljk4IDYuMzkgMy41NiA0Ljk3QzIuMTcgNi42NCAxLjI2IDguNzEgMS4wNSAxMWgyLjAxYy4xOS0xLjczLjg4LTMuMzEgMS45Mi00LjYxek0yMC45NCAxMWgyLjAxYy0uMjEtMi4yOS0xLjEyLTQuMzYtMi41MS02LjAzbC0xLjQyIDEuNDJBOC45MjggOC45MjggMCAwIDEgMjAuOTQgMTF6TTcgMTJsMy40NCAxLjU2TDEyIDE3bDEuNTYtMy40NEwxNyAxMmwtMy40NC0xLjU2TDEyIDdsLTEuNTYgMy40NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjFhOC45NiA4Ljk2IDAgMCAxLTcuNDYtNEg3di0ySDF2Nmgydi0yLjdjMS45OSAyLjg0IDUuMjcgNC43IDkgNC43IDQuODcgMCA5LTMuMTcgMTAuNDQtNy41NmwtMS45Ni0uNDVDMTkuMjUgMTguNDggMTUuOTIgMjEgMTIgMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJsaW5kc0Nsb3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjNINHYxNkgydjJoMTEuMjVjMCAuOTcuNzggMS43NSAxLjc1IDEuNzVzMS43NS0uNzggMS43NS0xLjc1SDIydi0yaC0yem0tMi04aC0yVjloMnYyem0tNCAwSDZWOWg4djJ6bTAgMnYySDZ2LTJoOHptMiAwaDJ2MmgtMnYtMnptMi02aC0yVjVoMnYyem0tNC0ydjJINlY1aDh6TTYgMTl2LTJoOHYySDZ6bTEwIDB2LTJoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbGluZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDIwdi0yaC0yek0xNiA5aDJ2MmgtMlY5em0tMiAySDZWOWg4djJ6bTQtNGgtMlY1aDJ2MnptLTQtMnYySDZWNWg4ek02IDE5di02aDh2MS44MkExLjc0NiAxLjc0NiAwIDAgMCAxNSAxOGExLjc0NiAxLjc0NiAwIDAgMCAxLTMuMThWMTNoMnY2SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyb2FkY2FzdE9uSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDZjMC0xLjEtLjktMi0yLTJINHYyaDE2djIuNTljLjczLjI5IDEuNC42OSAyIDEuMTdWNnpNOCA5SDNjLS41IDAtMSAuNS0xIDF2OWMwIC41LjUgMSAxIDFoNWMuNSAwIDEtLjUgMS0xdi05YzAtLjUtLjUtMS0xLTF6bS0xIDlINHYtN2gzdjd6TTE3Ljc1IDE2Ljk3Yy4zLS4yMy41LS41Ny41LS45N2ExLjI1IDEuMjUgMCAwIDAtMi41IDBjMCAuNC4yLjc1LjUuOTdWMjJoMS41di01LjAzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMy41YTIuNSAyLjUgMCAwIDEgMi41IDIuNWMwIC42OS0uMjggMS4zMS0uNzMgMS43NmwxLjA2IDEuMDZDMjAuNTUgMTguMSAyMSAxNy4xIDIxIDE2YzAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0YzAgMS4xLjQ1IDIuMSAxLjE3IDIuODNsMS4wNi0xLjA2QTIuNSAyLjUgMCAwIDEgMTcgMTMuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOS41YTYuNSA2LjUgMCAwIDAtNi41IDYuNWMwIDEuNzkuNzMgMy40MiAxLjkgNC42bDEuMDYtMS4wNkMxMi41NiAxOC42MyAxMiAxNy4zOCAxMiAxNmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMS4zNy0uNTYgMi42Mi0xLjQ2IDMuNTJsMS4wNyAxLjA2QTYuNSA2LjUgMCAwIDAgMTcgOS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcm9hZGNhc3RPblBlcnNvbmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOGMuNyAwIDEuMzguMSAyLjAyLjI3TDEyIDMgNCA5djEyaDYuNzZBNy45OTggNy45OTggMCAwIDEgMTcgOHpNMTcgMTQuNzVjLS42OSAwLTEuMjUuNTYtMS4yNSAxLjI1IDAgLjQuMi43NS41Ljk3VjIyaDEuNXYtNS4wM2MuMy0uMjMuNS0uNTcuNS0uOTcgMC0uNjktLjU2LTEuMjUtMS4yNS0xLjI1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMmMtMi4yMSAwLTQgMS43OS00IDQgMCAxLjEuNDUgMi4xIDEuMTcgMi44M2wxLjA2LTEuMDZBMi41IDIuNSAwIDEgMSAxOS41IDE2YzAgLjY5LS4yOCAxLjMxLS43MyAxLjc2bDEuMDYgMS4wNkMyMC41NSAxOC4xIDIxIDE3LjEgMjEgMTZjMC0yLjIxLTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDkuNWE2LjUgNi41IDAgMCAwLTYuNSA2LjVjMCAxLjc5LjczIDMuNDIgMS45IDQuNmwxLjA2LTEuMDZDMTIuNTYgMTguNjMgMTIgMTcuMzggMTIgMTZjMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNWMwIDEuMzctLjU2IDIuNjItMS40NiAzLjUybDEuMDcgMS4wNkE2LjUgNi41IDAgMCAwIDE3IDkuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2xvdWR5U25vd2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMThjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xLS40NS0xLTEtMS0xIC40NS0xIDF6bTEyIDBjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xLS40NS0xLTEtMS0xIC40NS0xIDF6bS05IDRjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xLS40NS0xLTEtMS0xIC40NS0xIDF6bTMtNGMwIC41NS40NSAxIDEgMXMxLS40NSAxLTEtLjQ1LTEtMS0xLTEgLjQ1LTEgMXptMyA0YzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMS0uNDUtMS0xLTEtMSAuNDUtMSAxem0zLjUtNmgtMTBBNS41MSA1LjUxIDAgMCAxIDIgMTAuNWMwLTIuNzYgMi4wOS01LjA5IDQuNzgtNS40NEE1Ljk3NSA1Ljk3NSAwIDAgMSAxMiAyYzIuOTcgMCA1LjQ1IDIuMTggNS45MiA1LjAyQTQuNSA0LjUgMCAwIDEgMjIgMTEuNWMwIDIuNDgtMi4wMiA0LjUtNC41IDQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3VydGFpbnNDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDIwdi0yaC0yek0xMSA1aDJ2MTRoLTJWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3VydGFpbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDIwdi0yaC0yek04LjE5IDEyYzIuMDQtMS4zNSAzLjUtMy45NCAzLjc2LTdoLjA5Yy4yNiAzLjA2IDEuNzIgNS42NSAzLjc2IDctMi4wNCAxLjM1LTMuNSAzLjk0LTMuNzYgN2gtLjA5Yy0uMjYtMy4wNi0xLjcyLTUuNjUtMy43Ni03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbGVjdHJpY0JvbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC42OSAyLjIxIDQuMzMgMTEuNDljLS42NC41OC0uMjggMS42NS41OCAxLjczTDEzIDE0bC00Ljg1IDYuNzZjLS4yMi4zMS0uMTkuNzQuMDggMS4wMS4zLjMuNzcuMzEgMS4wOC4wMmwxMC4zNi05LjI4Yy42NC0uNTguMjgtMS42NS0uNTgtMS43M0wxMSAxMGw0Ljg1LTYuNzZjLjIyLS4zMS4xOS0uNzQtLjA4LTEuMDFhLjc3Ljc3IDAgMCAwLTEuMDgtLjAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbGVjdHJpY01ldGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNC45NiAwLTkgNC4wNC05IDkgMCAzLjkxIDIuNTEgNy4yNCA2IDguNDdWMjJoMnYtMi4wNmE4LjI2MiA4LjI2MiAwIDAgMCAyIDBWMjJoMnYtMi41M2MzLjQ5LTEuMjQgNi00LjU3IDYtOC40NyAwLTQuOTYtNC4wNC05LTktOXptMi4yNSAxMi0zIDMtMS41LTEuNUwxMSAxNC4yNSA5Ljc1IDEzbDMtMyAxLjUgMS41TDEzIDEyLjc1IDE0LjI1IDE0ek0xNiA5SDhWN2g4djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVuZXJneVNhdmluZ3NMZWFmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM2MtNC44IDAtOSAzLjg2LTkgOSAwIDIuMTIuNzQgNC4wNyAxLjk3IDUuNjFMMyAxOS41OSA0LjQxIDIxbDEuOTctMS45N0E5LjAxMiA5LjAxMiAwIDAgMCAxMiAyMWMyLjMgMCA0LjYxLS44OCA2LjM2LTIuNjRBOC45NSA4Ljk1IDAgMCAwIDIxIDEyVjNoLTl6bTMuODMgOS4yNi01LjE2IDQuNjNjLS4xNi4xNS0uNDEuMTQtLjU2LS4wMWEuMzk3LjM5NyAwIDAgMS0uMDQtLjUybDIuNDQtMy4zMy00LjA1LS40YS41MTQuNTE0IDAgMCAxLS4zLS44OWw1LjE2LTQuNjNjLjE2LS4xNS40MS0uMTQuNTYuMDEuMTQuMTQuMTYuMzYuMDQuNTJsLTIuNDQgMy4zMyA0LjA1LjRjLjQ1LjA0LjYzLjU5LjMuODl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvZ2d5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuOTIgNy4wMkMxNy40NSA0LjE4IDE0Ljk3IDIgMTIgMiA5LjgyIDIgNy44MyAzLjE4IDYuNzggNS4wNiA0LjA5IDUuNDEgMiA3Ljc0IDIgMTAuNSAyIDEzLjUzIDQuNDcgMTYgNy41IDE2aDEwYzIuNDggMCA0LjUtMi4wMiA0LjUtNC41YTQuNSA0LjUgMCAwIDAtNC4wOC00LjQ4em0uMDggOS45OWMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tMTEgM2MuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tMS0zaDljLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDFINmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMXptNCAzaDdjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDFoLTdjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdhc01ldGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNGgtMVYyaC0ydjJoLTJWMkg5djJIOEM1Ljc5IDQgNCA1Ljc5IDQgOHYxMGMwIDIuMjEgMS43OSA0IDQgNGg4YzIuMjEgMCA0LTEuNzkgNC00VjhjMC0yLjIxLTEuNzktNC00LTR6bS00IDE0Yy0xLjM4IDAtMi41LTEuMS0yLjUtMi40NiAwLTEuMDkuNDMtMS4zOSAyLjUtMy43OSAyLjA1IDIuMzggMi41IDIuNyAyLjUgMy43OUMxNC41IDE2LjkgMTMuMzggMTggMTIgMTh6bTQtOEg4VjhoOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWF0UHVtcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNi4yNSA0LjA4Yy44Mi4xMiAxLjU3LjQ0IDIuMi45MWwtMi4yIDIuMlY3LjA4em0tMS41IDB2My4xMWwtMi4yLTIuMmMuNjMtLjQ3IDEuMzgtLjc5IDIuMi0uOTF6TTcuOTkgOS4wNWwyLjIgMi4ySDcuMDhjLjEyLS44Mi40NC0xLjU3LjkxLTIuMnptLS45MSAzLjdoMy4xMWwtMi4yIDIuMmMtLjQ3LS42My0uNzktMS4zOC0uOTEtMi4yem00LjE3IDQuMTdjLS44Mi0uMTItMS41Ny0uNDQtMi4yLS45MWwyLjItMi4ydjMuMTF6TTEyIDEzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bS43NSAzLjkydi0zLjExbDIuMiAyLjJjLS42My40Ny0xLjM4Ljc5LTIuMi45MXptMy4yNi0xLjk3LTIuMi0yLjJoMy4xMWMtLjEyLjgyLS40NCAxLjU3LS45MSAyLjJ6bS0yLjItMy43IDIuMi0yLjJjLjQ3LjY0Ljc5IDEuMzkuOTEgMi4yaC0zLjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb2RlRmFuT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuMzQgOC4zNi0yLjI5LjgyYy0uMTgtLjEzLS4zOC0uMjUtLjU4LS4zNC4xNy0uODMuNjMtMS41OCAxLjM2LTIuMDZDMTYuODUgNS40NCAxNi4xOCAyIDEzLjM5IDJjLTMuMDggMC00LjkgMS40Ny01LjMgMy4yNkwxOC43MyAxNS45YzEuNS4zOSAzLjI3LS41MSAzLjI3LTIuNTEgMC00LjM5LTMuMDEtNi4yMy01LjY2LTUuMDN6TTIuODEgMi44MSAxLjM5IDQuMjIgNS4yNyA4LjFDMy43NyA3LjcgMiA4LjYxIDIgMTAuNjFjMCA0LjQgMy4wMSA2LjI0IDUuNjYgNS4wM2wyLjI5LS44MmMuMTguMTMuMzguMjUuNTguMzQtLjE3LjgzLS42MyAxLjU4LTEuMzYgMi4wNkM3LjE1IDE4LjU2IDcuODIgMjIgMTAuNjEgMjJjMy4wOCAwIDQuOS0xLjQ3IDUuMy0zLjI2bDMuODcgMy44NyAxLjQxLTEuNDFMMi44MSAyLjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZXN0Q2FtV2lyZWRTdGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjgzIDEuMDEtNC4xMS40MkM4LjQ3IDEuNzUgNiA0LjQ4IDYgNy43NXMyLjQ3IDYgNS43MiA2LjMzbDEuOS4xOS0uNTYuODVjLS4zNS0uMDgtLjctLjEyLTEuMDYtLjEyLTIuNzYgMC01IDIuMjQtNSA1djJjMCAuNTUuNDUgMSAxIDFoOGMuNTUgMCAxLS40NSAxLTF2LTJjMC0xLjY3LS44My0zLjE1LTIuMDktNC4wNmwuOTctMS40NWMxLjE0LjA3IDIuMTItLjgzIDIuMTItMS45OVYzYzAtMS4xNy0xLTIuMDktMi4xNy0xLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPaWxCYXJyZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxM2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtMVY1aDFjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgxdjZINGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgxdjZINGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgxNmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtMXYtNmgxem0tOCAzYy0xLjY2IDAtMy0xLjMyLTMtMi45NSAwLTEuMy41Mi0xLjY3IDMtNC41NSAyLjQ3IDIuODYgMyAzLjI0IDMgNC41NSAwIDEuNjMtMS4zNCAyLjk1LTMgMi45NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHJvcGFuZVRhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE1djNjMCAyLjIxIDEuNzkgNCA0IDRoOGMyLjIxIDAgNC0xLjc5IDQtNHYtM0g0ek0yMCAxM3YtM2MwLTEuODYtMS4yOC0zLjQxLTMtMy44NlY0YzAtMS4xLS45LTItMi0ySDljLTEuMSAwLTIgLjktMiAydjIuMTRjLTEuNzIuNDUtMyAyLTMgMy44NnYzaDE2ek05IDRoNnYyaC0yYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxSDlWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHJvcGFuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDZoLTFWNWMwLTEuMS0uOS0yLTItMmgtNGMtMS4xIDAtMiAuOS0yIDJ2MUg3Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2djNoMnYtM2g2djNoMnYtM2MzLjMxIDAgNi0yLjY5IDYtNnMtMi42OS02LTYtNnptLTctMWg0djFoLTRWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm9sbGVyU2hhZGVzQ2xvc2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTlWM0g0djE2SDJ2Mmg4LjI1YzAgLjk3Ljc4IDEuNzUgMS43NSAxLjc1czEuNzUtLjc4IDEuNzUtMS43NUgyMnYtMmgtMnpNNiAxOXYtMmg1djJINnptNyAwdi0yaDV2MmgtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm9sbGVyU2hhZGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTlWM0g0djE2SDJ2MmgyMHYtMmgtMnpNNiAxOXYtNmg1djEuOGMtLjQuMy0uOC44LS44IDEuNCAwIDEgLjggMS44IDEuOCAxLjhzMS44LS44IDEuOC0xLjhjMC0uNi0uMy0xLjEtLjgtMS40VjEzaDV2Nkg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZW5zb3JEb29yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxOGgxNlY0YzAtMS4xLS45LTItMi0yem0tMi41IDExLjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZW5zb3JPY2N1cGllZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDExYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3pNMTIgMTJjLTEuODQgMC0zLjU2LjUtNS4wMyAxLjM3LS42MS4zNS0uOTcgMS4wMi0uOTcgMS43MlYxN2gxMnYtMS45MWMwLS43LS4zNi0xLjM2LS45Ny0xLjcyQTkuODQ0IDkuODQ0IDAgMCAwIDEyIDEyek0yMS4yMyA4LjE1bDEuODUtLjc3QTEyLjA1NiAxMi4wNTYgMCAwIDAgMTYuNjIuOTJsLS43NyAxLjg1YzIuNDIgMS4wMiA0LjM2IDIuOTYgNS4zOCA1LjM4ek04LjE1IDIuNzcgNy4zOC45MkExMi4wODkgMTIuMDg5IDAgMCAwIC45MiA3LjM4bDEuODUuNzdjMS4wMi0yLjQyIDIuOTYtNC4zNiA1LjM4LTUuMzh6TTIuNzcgMTUuODVsLTEuODUuNzdjMS4yMiAyLjkxIDMuNTUgNS4yNSA2LjQ2IDYuNDZsLjc3LTEuODVhMTAuMTE3IDEwLjExNyAwIDAgMS01LjM4LTUuMzh6TTE1Ljg1IDIxLjIzbC43NyAxLjg1YzIuOTEtMS4yMiA1LjI1LTMuNTUgNi40Ni02LjQ2bC0xLjg1LS43N2ExMC4xMTcgMTAuMTE3IDAgMCAxLTUuMzggNS4zOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2Vuc29yV2luZG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNHYxNkg2VjRoMTJtMC0ySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNNyAxOWgxMHYtNkg3djZ6bTMtOWg0djFoM1Y1SDd2Nmgzdi0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaGVsdmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMXYySDVWMUgzdjIyaDJ2LTJoMTR2MmgyVjFoLTJ6bTAgNHY2aC02VjdIN3Y0SDVWNWgxNHptLTIgMTR2LTRoLTZ2NEg1di02aDE0djZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNoaWVsZE1vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zem0zLjk3IDEyLjQxYy0xLjg0IDIuMTctNS4yMSAyLjEtNi45Ni0uMDctMi4xOS0yLjcyLS42NS02LjcyIDIuNjktNy4zMy4zNC0uMDYuNjMuMjcuNTEuNi0uNDYgMS4yMy0uMzkgMi42NC4zMiAzLjg2YTQuNTEgNC41MSAwIDAgMCAzLjE4IDIuMmMuMzQuMDUuNDkuNDcuMjYuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNub3dpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEyLjc1YTEuMjUgMS4yNSAwIDEgMSAwIDIuNSAxLjI1IDEuMjUgMCAwIDEgMC0yLjV6TTQuNzUgNmExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwem0xMiA4YTEuMjUgMS4yNSAwIDEgMCAyLjUgMCAxLjI1IDEuMjUgMCAwIDAtMi41IDB6bTAtOGExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwem0tOSAxMmExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwem0wLThhMS4yNSAxLjI1IDAgMSAwIDIuNSAwIDEuMjUgMS4yNSAwIDAgMC0yLjUgMHptMyA0YTEuMjUgMS4yNSAwIDEgMCAyLjUgMCAxLjI1IDEuMjUgMCAwIDAtMi41IDB6bTAtOGExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwem0zIDEyYTEuMjUgMS4yNSAwIDEgMCAyLjUgMCAxLjI1IDEuMjUgMCAwIDAtMi41IDB6bTAtOGExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTb2xhclBvd2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy4zMyAxNkgxMXYtM0g0ek0xMyAxNmg3LjY3TDIwIDEzaC03ek0yMS4xMSAxOEgxM3Y0aDl6TTIgMjJoOXYtNEgyLjg5ek0xMSA4aDJ2M2gtMnpNMTUuNzY0IDcuMjA1bDEuNDE1LTEuNDE0TDE5LjMgNy45MTJsLTEuNDE0IDEuNDE0ek00LjcwNSA3LjkxMyA2LjgyNiA1Ljc5IDguMjQgNy4yMDYgNi4xMiA5LjMyN3pNMyAyaDN2Mkgzek0xOCAyaDN2MmgtM3pNMTIgN2MyLjc2IDAgNS0yLjI0IDUtNUg3YzAgMi43NiAyLjI0IDUgNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdW5ueVNub3dpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA1aC0yVjFoMnY0ek0xIDExaDR2Mkgxdi0yem0xOCAydi0yaDR2MmgtNHptLTEuMzQtNS4yNC0xLjQxLTEuNDEgMi44My0yLjgzIDEuNDEgMS40MS0yLjgzIDIuODN6TTMuNTEgNC45M2wxLjQxLTEuNDEgMi44MyAyLjgzLTEuNDEgMS40MS0yLjgzLTIuODN6TTQuNzUgMTdhMS4yNSAxLjI1IDAgMSAwIDIuNSAwIDEuMjUgMS4yNSAwIDAgMC0yLjUgMHptMTIgMGExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwem0tOSA0YTEuMjUgMS4yNSAwIDEgMCAyLjUgMCAxLjI1IDEuMjUgMCAwIDAtMi41IDB6bTMtNGExLjI1IDEuMjUgMCAxIDAgMi41IDAgMS4yNSAxLjI1IDAgMCAwLTIuNSAwem0zIDRhMS4yNSAxLjI1IDAgMSAwIDIuNSAwIDEuMjUgMS4yNSAwIDAgMC0yLjUgMHpNMTcgMTN2LTFjMC0yLjc2LTIuMjQtNS01LTVzLTUgMi4yNC01IDV2MWgxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3VubnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA0VjJjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjJjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTF6bTcuMzYgMy4wNSAxLjQxLTEuNDJhLjk5Ni45OTYgMCAxIDAtMS40MS0xLjQxbC0xLjQxIDEuNDJhLjk5Ni45OTYgMCAxIDAgMS40MSAxLjQxek0yMiAxMWgtMmMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgyYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xem0tMTAgOGMtLjU1IDAtMSAuNDUtMSAxdjJjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xdi0yYzAtLjU1LS40NS0xLTEtMXpNNS42NCA3LjA1IDQuMjIgNS42NGMtLjM5LS4zOS0uMzktMS4wMyAwLTEuNDFzMS4wMy0uMzkgMS40MSAwbDEuNDEgMS40MWMuMzkuMzkuMzkgMS4wMyAwIDEuNDFzLTEuMDIuMzktMS40IDB6bTExLjMxIDkuOWEuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMS40MSAxLjQxYy4zOS4zOSAxLjAzLjM5IDEuNDEgMGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTEuNDEtMS40MWEuOTk2Ljk5NiAwIDAgMC0xLjQxIDB6TTIgMTNoMmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMUgyYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxem0zLjY0IDYuNzggMS40MS0xLjQxYy4zOS0uMzkuMzktMS4wMyAwLTEuNDFzLTEuMDMtLjM5LTEuNDEgMGwtMS40MSAxLjQxYS45OTYuOTk2IDAgMCAwIDAgMS40MWMuMzguMzkgMS4wMi4zOSAxLjQxIDB6TTEyIDZjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWZXJ0aWNhbFNoYWRlc0Nsb3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjNINHYxNkgydjJoMjB2LTJoLTJ6TTEzIDVoMS41djE0SDEzVjV6bS0yIDE0SDkuNVY1SDExdjE0ek02IDVoMS41djE0SDZWNXptMTAuNSAxNFY1SDE4djE0aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZlcnRpY2FsU2hhZGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTlWM0g0djE2SDJ2MmgyMHYtMmgtMnptLTEwIDBWNWg0djE0aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaW5kUG93ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDNoNnYySDR6TTEgN2g1djJIMXpNMyAxOWg1djJIM3pNMTMuNzMgMTAuNjFjLjc1LjIzIDEuMy43OCAxLjU3IDEuNDZsNC4yNy03LjExYTIuMjggMi4yOCAwIDAgMC0zLjUxLTIuODRsLTMuNDMgMy4yMWMtLjQuMzctLjYzLjktLjYzIDEuNDV2My45M2MuMzYtLjE1Ljk4LS4zMyAxLjczLS4xek0xMC42MSAxMi4yN2MuMTYtLjUyLjQ4LS45Ni44OS0xLjI3SDMuMjhhMi4yNzkgMi4yNzkgMCAwIDAtLjYzIDQuNDdsNC41MSAxLjI5Yy41My4xNSAxLjEuMDggMS41OC0uMjFsMi42OS0xLjYxYTIuNDg3IDIuNDg3IDAgMCAxLS44Mi0yLjY3ek0yMi4yMSAxOC42MWwtMi4yOC00LjFhMi4wNSAyLjA1IDAgMCAwLTEuMjYtLjk3bC0zLjE4LS44Yy4wMy4zMiAwIC42Ni0uMS45OUEyLjQ3OCAyLjQ3OCAwIDAgMSAxMyAxNS41Yy0uNjEgMC0uOTktLjIyLTEtLjIyVjIxYy0xLjEgMC0yIC45LTIgMmg2YzAtMS4xLS45LTItMi0ydi00LjI4bDQuNjEgNC42MWMuODkuODkgMi4zMy44OSAzLjIyIDAgLjcyLS43Mi44OC0xLjgzLjM4LTIuNzJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjU2IDE0LjQzYy43OS4yNCAxLjYzLS4yIDEuODctMSAuMjQtLjc5LS4yLTEuNjMtMS0xLjg3LS43OS0uMjQtMS42My4yLTEuODcgMS0uMjQuNzkuMjEgMS42MyAxIDEuODd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDEwTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjUgN0gxNXYzaC0xLjV6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMCA1LjV2Nkg4LjVWN0g3VjUuNWgzem02LjUgNWMwIC41NS0uNDUgMS0xIDFIMTNjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgyLjVjLjU1IDAgMSAuNDUgMSAxdjR6bS0xIDMuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMTFNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6TTExIDUuNXY2SDkuNVY3SDhWNS41aDN6bTUgMHY2aC0xLjVWN0gxM1Y1LjVoM3ptLS41IDguNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMTJNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6TTEwIDUuNXY2SDguNVY3SDdWNS41aDN6TTE1LjUgOWgtMnYxaDN2MS41SDEyVjljMC0uNTUuNDUtMSAxLTFoMlY3aC0zVjUuNWgzLjVjLjU1IDAgMSAuNDUgMSAxVjhjMCAuNTUtLjQ1IDEtMSAxem0wIDVIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDEzTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMCA1LjV2Nkg4LjVWN0g3VjUuNWgzem02LjUgNWMwIC41NS0uNDUgMS0xIDFIMTJWMTBoM1Y5aC0yVjhoMlY3aC0zVjUuNWgzLjVjLjU1IDAgMSAuNDUgMSAxdjR6bS0xIDMuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMTRNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6TTEwIDUuNXY2SDguNVY3SDdWNS41aDN6bTcuNSA0LjVoLTF2MS41SDE1VjEwaC0zVjUuNWgxLjV2M0gxNXYtM2gxLjV2M2gxVjEwem0tMiA0SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxNU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTUuNWgtMS41VjE0aC0xdjNIOHYtM0g3djQuNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTFIMTFjLjU1IDAgMSAuNDUgMSAxdjV6bTMuNSAwSDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZjMCAuNTUtLjQ1IDEtMSAxaC0ydjEuNXpNMTAgNS41djZIOC41VjdIN1Y1LjVoM3pNMTYuNSA3aC0zdjFoMmMuNTUgMCAxIC40NSAxIDF2MS41YzAgLjU1LS40NSAxLTEgMUgxMlYxMGgzVjloLTNWNS41aDQuNVY3em0tMSA3SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxNk1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDlIMTV2MS41aC0xLjV6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMCA1LjV2Nkg4LjVWN0g3VjUuNWgzem0zIDZjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgzLjVWN2gtM3YxaDJjLjU1IDAgMSAuNDUgMSAxdjEuNWMwIC41NS0uNDUgMS0xIDFIMTN6bTIuNSAyLjVIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDE3TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMCA1LjV2Nkg4LjVWN0g3VjUuNWgzem01IDZoLTEuNzVMMTQuNjIgN0gxMlY1LjVoMy41Yy42NyAwIDEuMTUuNjUuOTYgMS4yOUwxNSAxMS41em0uNSAyLjVIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDE4TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMCA1LjV2Nkg4LjVWN0g3VjUuNWgzem02LjUgNWMwIC41NS0uNDUgMS0xIDFIMTNjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgyLjVjLjU1IDAgMSAuNDUgMSAxdjR6bS0zIDBIMTVWOWgtMS41djEuNXptMC0yLjVIMTVWNi41aC0xLjVWOHptMiA2SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxOU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgN2gzVjloLTJjLS41NSAwLTEtLjQ1LTEtMVY2LjVjMC0uNTUuNDUtMSAxLTFoMi41Yy41NSAwIDEgLjQ1IDEgMXY0YzAgLjU1LS40NSAxLTEgMUgxMlYxMHptMS41LTJIMTVWNi41aC0xLjVWOHpNNyA1LjVoM3Y2SDguNVY3SDdWNS41em01IDEzaC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptNi41LTIuNWMwIC41NS0uNDUgMS0xIDFoLTJ2MS41SDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZ6bS0zLTJIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDIwTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgN0gxNnYzaC0xLjV6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41em0yLThjMCAuNTUtLjQ1IDEtMSAxSDE0Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoMi41Yy41NSAwIDEgLjQ1IDEgMXY0ek0xMCA5SDh2MWgzdjEuNUg2LjVWOWMwLS41NS40NS0xIDEtMWgyVjdoLTNWNS41SDEwYy41NSAwIDEgLjQ1IDEgMVY4YzAgLjU1LS40NSAxLTEgMXptNS41IDVIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDIxTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMSA5SDl2MWgzdjEuNUg3LjVWOWMwLS41NS40NS0xIDEtMWgyVjdoLTNWNS41SDExYy41NSAwIDEgLjQ1IDEgMVY4YzAgLjU1LS40NSAxLTEgMXptMy0zLjVoM3Y2aC0xLjVWN0gxNFY1LjV6bTEuNSA4LjVIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDIyTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41ek0xMCA5SDh2MWgzdjEuNUg2LjVWOWMwLS41NS40NS0xIDEtMWgyVjdoLTNWNS41SDEwYy41NSAwIDEgLjQ1IDEgMVY4YzAgLjU1LS40NSAxLTEgMXptNi41IDBoLTJ2MWgzdjEuNUgxM1Y5YzAtLjU1LjQ1LTEgMS0xaDJWN2gtM1Y1LjVoMy41Yy41NSAwIDEgLjQ1IDEgMVY4YzAgLjU1LS40NSAxLTEgMXptLTEgNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMjNNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6TTEwIDlIOHYxaDN2MS41SDYuNVY5YzAtLjU1LjQ1LTEgMS0xaDJWN2gtM1Y1LjVIMTBjLjU1IDAgMSAuNDUgMSAxVjhjMCAuNTUtLjQ1IDEtMSAxem03LjUgMS41YzAgLjU1LS40NSAxLTEgMUgxM1YxMGgzVjloLTJWOGgyVjdoLTNWNS41aDMuNWMuNTUgMCAxIC40NSAxIDF2NHptLTIgMy41SDE3djEuNWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQyNE1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTUuNWgtMS41VjE0aC0xdjNIOHYtM0g3djQuNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTFIMTFjLjU1IDAgMSAuNDUgMSAxdjV6bTMuNSAwSDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZjMCAuNTUtLjQ1IDEtMSAxaC0ydjEuNXpNMTAgOUg4djFoM3YxLjVINi41VjljMC0uNTUuNDUtMSAxLTFoMlY3aC0zVjUuNUgxMGMuNTUgMCAxIC40NSAxIDFWOGMwIC41NS0uNDUgMS0xIDF6bTguNSAxaC0xdjEuNUgxNlYxMGgtM1Y1LjVoMS41djNIMTZ2LTNoMS41djNoMVYxMHptLTMgNEgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMk1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTUuNWgtMS41VjE0aC0xdjNIOHYtM0g3djQuNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTFIMTFjLjU1IDAgMSAuNDUgMSAxdjV6bTMuNSAwSDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZjMCAuNTUtLjQ1IDEtMSAxaC0ydjEuNXptLTItOS41aC0ydjFoM3YxLjVIMTBWOWMwLS41NS40NS0xIDEtMWgyVjdoLTNWNS41aDMuNWMuNTUgMCAxIC40NSAxIDFWOGMwIC41NS0uNDUgMS0xIDF6bTIgNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kMzBGcHNTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDR2Mmg1djJINXYyaDR2Mkg0djJoNWMxLjEgMCAyLS45IDItMnYtMS41YzAtLjgzLS4xNy0xLjUtMS0xLjUuODMgMCAxLS42NyAxLTEuNVY2YzAtMS4xLS45LTItMi0ySDR6bTE0IDBjMS4xIDAgMiAuOSAyIDJ2NmMwIDEuMS0uOSAyLTIgMmgtM2MtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yaDN6bTAgMmgtM3Y2aDNWNnpNNSAyMkgzdi01aDJ2NXptNCAwSDd2LTVoMnY1em00IDBoLTJ2LTVoMnY1em04IDBoLTZ2LTVoNnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQzTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41em0tMS04YzAgLjU1LS40NSAxLTEgMUgxMFYxMGgzVjloLTJWOGgyVjdoLTNWNS41aDMuNWMuNTUgMCAxIC40NSAxIDF2NHptMSAzLjVIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDRNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLTguNWgtMXYxLjVoLTEuNVYxMGgtM1Y1LjVIMTF2M2gxLjV2LTNIMTR2M2gxVjEwem0uNSA4LjVIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41em0wLTQuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTUuNWgtMS41VjE0aC0xdjNIOHYtM0g3djQuNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTFIMTFjLjU1IDAgMSAuNDUgMSAxdjV6bTMuNSAwSDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZjMCAuNTUtLjQ1IDEtMSAxaC0ydjEuNXpNMTQuNSA3aC0zdjFoMmMuNTUgMCAxIC40NSAxIDF2MS41YzAgLjU1LS40NSAxLTEgMUgxMFYxMGgzVjloLTNWNS41aDQuNVY3em0xIDdIMTd2MS41aC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZDYwRnBzU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNnY2aC0zVjZoM3ptMC0yaC0zYy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoM2MxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNyAyVjRINmMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDNjMS4xIDAgMi0uOSAyLTJ2LTJjMC0xLjEtLjktMi0yLTJINlY2aDV6bS0yIDR2Mkg2di0yaDN6TTUgMjJIM3YtNWgydjV6bTQgMEg3di01aDJ2NXptNCAwaC0ydi01aDJ2NXptOCAwaC02di01aDZ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNk1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDlIMTN2MS41aC0xLjV6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptLTEtN2MtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDMuNVY3aC0zdjFoMmMuNTUgMCAxIC40NSAxIDF2MS41YzAgLjU1LS40NSAxLTEgMUgxMXptNC41IDdIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41em0wLTQuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kN01wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMTUuNWgtMS41VjE0aC0xdjNIOHYtM0g3djQuNUg1LjV2LTVjMC0uNTUuNDUtMSAxLTFIMTFjLjU1IDAgMSAuNDUgMSAxdjV6bTMuNSAwSDE0di02aDMuNWMuNTUgMCAxIC40NSAxIDFWMTZjMCAuNTUtLjQ1IDEtMSAxaC0ydjEuNXptLTIuNS03aC0xLjc1TDEyLjYyIDdIMTBWNS41aDMuNWMuNjcgMCAxLjE1LjY1Ljk2IDEuMjlMMTMgMTEuNXptMi41IDIuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kOE1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDlIMTN2MS41aC0xLjV6bTAtMi41SDEzVjhoLTEuNXpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDE1LjVoLTEuNVYxNGgtMXYzSDh2LTNIN3Y0LjVINS41di01YzAtLjU1LjQ1LTEgMS0xSDExYy41NSAwIDEgLjQ1IDEgMXY1em0zLjUgMEgxNHYtNmgzLjVjLjU1IDAgMSAuNDUgMSAxVjE2YzAgLjU1LS40NSAxLTEgMWgtMnYxLjV6bS0xLThjMCAuNTUtLjQ1IDEtMSAxSDExYy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoMi41Yy41NSAwIDEgLjQ1IDEgMXY0em0xIDMuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kOU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDYuNUgxM1Y4aC0xLjV6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNS41aC0xLjVWMTRoLTF2M0g4di0zSDd2NC41SDUuNXYtNWMwLS41NS40NS0xIDEtMUgxMWMuNTUgMCAxIC40NSAxIDF2NXptMy41IDBIMTR2LTZoMy41Yy41NSAwIDEgLjQ1IDEgMVYxNmMwIC41NS0uNDUgMS0xIDFoLTJ2MS41em0tMS04YzAgLjU1LS40NSAxLTEgMUgxMFYxMGgzVjloLTJjLS41NSAwLTEtLjQ1LTEtMVY2LjVjMC0uNTUuNDUtMSAxLTFoMi41Yy41NSAwIDEgLjQ1IDEgMXY0em0xIDMuNUgxN3YxLjVoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkQVBob3RvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA0VjFoMnYzaDN2Mkg1djNIM1Y2SDBWNGgzem0zIDZWN2gzVjRoN2wxLjgzIDJIMjFjMS4xIDAgMiAuOSAyIDJ2MTJjMCAxLjEtLjkgMi0yIDJINWMtMS4xIDAtMi0uOS0yLTJWMTBoM3ptNyA5YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01LTUgMi4yNC01IDUgMi4yNCA1IDUgNXptLTMuMi01YzAgMS43NyAxLjQzIDMuMiAzLjIgMy4yczMuMi0xLjQzIDMuMi0zLjItMS40My0zLjItMy4yLTMuMi0zLjIgMS40My0zLjIgMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRQaG90b0FsdGVybmF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDd2Mi45OXMtMS45OS4wMS0yIDBWN2gtM3MuMDEtMS45OSAwLTJoM1YyaDJ2M2gzdjJoLTN6bS0zIDRWOGgtM1Y1SDVjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LThoLTN6TTUgMTlsMy00IDIgMyAzLTQgNCA1SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZFRvUGhvdG9zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6bTE2LTRIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMSA5aC00djRoLTJ2LTRIOVY5aDRWNWgydjRoNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGp1c3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwIDEwLTQuNDkgMTAtMTBTMTcuNTEgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMy04YzAgMS42Ni0xLjM0IDMtMyAzcy0zLTEuMzQtMy0zIDEuMzQtMyAzLTMgMyAxLjM0IDMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQW5pbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMmMtMi43MSAwLTUuMDUgMS41NC02LjIyIDMuNzhhNy4wNjIgNy4wNjIgMCAwIDAtMyAzQTcuMDE0IDcuMDE0IDAgMCAwIDIgMTVjMCAzLjg3IDMuMTMgNyA3IDcgMi43MSAwIDUuMDUtMS41NCA2LjIyLTMuNzhhNy4wNjIgNy4wNjIgMCAwIDAgMy0zQTcuMDE0IDcuMDE0IDAgMCAwIDIyIDljMC0zLjg3LTMuMTMtNy03LTd6TTkgMjBhNS4wMDIgNS4wMDIgMCAwIDEtNC04YzAgMy44NyAzLjEzIDcgNyA3LS44NC42My0xLjg4IDEtMyAxem0zLTNhNS4wMDIgNS4wMDIgMCAwIDEtNC04YzAgMy44NiAzLjEzIDYuOTkgNyA3LS44NC42My0xLjg4IDEtMyAxem00LjctMy4zYy0uNTMuMTktMS4xLjMtMS43LjMtMi43NiAwLTUtMi4yNC01LTUgMC0uNi4xMS0xLjE3LjMtMS43LjUzLS4xOSAxLjEtLjMgMS43LS4zIDIuNzYgMCA1IDIuMjQgNSA1IDAgLjYtLjExIDEuMTctLjMgMS43ek0xOSAxMmMwLTMuODYtMy4xMy02Ljk5LTctN2E1LjAwMiA1LjAwMiAwIDAgMSA3IDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXNzaXN0YW50UGhvdG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC40IDYgMTQgNEg1djE3aDJ2LTdoNS42bC40IDJoN1Y2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3Npc3RhbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNGwzIDMgMy0zaDRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTUuMTIgMTAuODhMMTIgMTdsLTEuODgtNC4xMkw2IDExbDQuMTItMS44OEwxMiA1bDEuODggNC4xMkwxOCAxMWwtNC4xMiAxLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdWRpb3RyYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM3Y5LjI4YTQuMzkgNC4zOSAwIDAgMC0xLjUtLjI4QzguMDEgMTIgNiAxNC4wMSA2IDE2LjVTOC4wMSAyMSAxMC41IDIxYzIuMzEgMCA0LjItMS43NSA0LjQ1LTRIMTVWNmg0VjNoLTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF1dG9Bd2Vzb21lTW9zYWljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1djE0YTIgMiAwIDAgMCAyIDJoNlYzSDVhMiAyIDAgMCAwLTIgMnptMTYtMmgtNnY4aDhWNWMwLTEuMS0uOS0yLTItMnptLTYgMThoNmMxLjEgMCAyLS45IDItMnYtNmgtOHY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdXRvQXdlc29tZU1vdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINGEyIDIgMCAwIDAtMiAydjEwaDJWNGgxMFYyem00IDRIOGEyIDIgMCAwIDAtMiAydjEwaDJWOGgxMFY2em0yIDRoLThhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoOGMxLjEgMCAyLS45IDItMnYtOGMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXV0b0F3ZXNvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSA5IDEuMjUtMi43NUwyMyA1bC0yLjc1LTEuMjVMMTkgMWwtMS4yNSAyLjc1TDE1IDVsMi43NSAxLjI1TDE5IDl6bS03LjUuNUw5IDQgNi41IDkuNSAxIDEybDUuNSAyLjVMOSAyMGwyLjUtNS41TDE3IDEybC01LjUtMi41ek0xOSAxNWwtMS4yNSAyLjc1TDE1IDE5bDIuNzUgMS4yNUwxOSAyM2wxLjI1LTIuNzVMMjMgMTlsLTIuNzUtMS4yNUwxOSAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXV0b0ZpeEhpZ2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgNS42IDEwIDcgOC42IDQuNSAxMCAyIDcuNSAzLjQgNSAybDEuNCAyLjVMNSA3em0xMiA5LjhMMTcgMTRsMS40IDIuNUwxNyAxOWwyLjUtMS40TDIyIDE5bC0xLjQtMi41TDIyIDE0ek0yMiAybC0yLjUgMS40TDE3IDJsMS40IDIuNUwxNyA3bDIuNS0xLjRMMjIgN2wtMS40LTIuNXptLTcuNjMgNS4yOWEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBMMS4yOSAxOC45NmEuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMi4zNCAyLjM0Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMEwxNi43IDExLjA1YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zMy0yLjM1em0tMS4wMyA1LjQ5LTIuMTItMi4xMiAyLjQ0LTIuNDQgMi4xMiAyLjEyLTIuNDQgMi40NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXV0b0ZpeE5vcm1hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDItMi41IDEuNEwxNyAybDEuNCAyLjVMMTcgN2wyLjUtMS40TDIyIDdsLTEuNC0yLjV6bS03LjYzIDUuMjlhLjk5Ni45OTYgMCAwIDAtMS40MSAwTDEuMjkgMTguOTZhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDIuMzQgMi4zNGMuMzkuMzkgMS4wMi4zOSAxLjQxIDBMMTYuNyAxMS4wNWEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTIuMzMtMi4zNXptLTEuMDMgNS40OS0yLjEyLTIuMTIgMi40NC0yLjQ0IDIuMTIgMi4xMi0yLjQ0IDIuNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF1dG9GaXhPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjMgMS0yLjUgMS40TDE4IDFsMS40IDIuNUwxOCA2bDIuNS0xLjRMMjMgNmwtMS40LTIuNUwyMyAxem0tOC4zNCA2LjIyIDIuMTIgMi4xMi0yLjQ0IDIuNDQuODEuODEgMi41NS0yLjU1YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zNC0yLjM0YS45OTYuOTk2IDAgMCAwLTEuNDEgMEwxMS40IDguODRsLjgxLjgxIDIuNDUtMi40M3ptLS43OCA2LjY1LTMuNzUtMy43NS02Ljg2LTYuODZMMiA0LjUzbDYuODYgNi44Ni02LjU3IDYuNTdhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDIuMzQgMi4zNGMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNi41Ny02LjU3TDE5LjQ3IDIybDEuMjctMS4yNy02Ljg2LTYuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEF1dG9TdG9yaWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSAxLTUgNXYxMWw1LTQuNVYxek0xIDZ2MTQuNjVjMCAuMjUuMjUuNS41LjUuMSAwIC4xNS0uMDUuMjUtLjA1QzMuMSAyMC40NSA1LjA1IDIwIDYuNSAyMGMxLjk1IDAgNC4wNS40IDUuNSAxLjVWNmMtMS40NS0xLjEtMy41NS0xLjUtNS41LTEuNVMyLjQ1IDQuOSAxIDZ6bTIyIDEzLjVWNmMtLjYtLjQ1LTEuMjUtLjc1LTItMXYxMy41Yy0xLjEtLjM1LTIuMy0uNS0zLjUtLjUtMS43IDAtNC4xNS42NS01LjUgMS41djJjMS4zNS0uODUgMy44LTEuNSA1LjUtMS41IDEuNjUgMCAzLjM1LjMgNC43NSAxLjA1LjEuMDUuMTUuMDUuMjUuMDUuMjUgMCAuNS0uMjUuNS0uNXYtMS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBdXRvZnBzU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMDMgNi4zaC0uMDZsLTEuMDIgMi44OWgyLjF6TTMgMTdoMnY1SDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE1YzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02LTYgMi42OS02IDYgMi42OSA2IDYgNnptLS42My0xMGgxLjI1bDIuNjMgN2gtMS4yMWwtLjYzLTEuNzloLTIuODNMOS45NiAxMkg4Ljc0bDIuNjMtN3pNNyAxN2gydjVIN3pNMTEgMTdoMnY1aC0yek0xNSAxN2g2djVoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJlZHRpbWVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS4xOSAyMS4xOSAyLjgxIDIuODEgMS4zOSA0LjIybDIuMjcgMi4yN0E5Ljk1OSA5Ljk1OSAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMDQgMCAzLjkzLS42MiA1LjUxLTEuNjZsMi4yNyAyLjI3IDEuNDEtMS40MnpNMTIuMzQgMi4wMmMtMi4xOC0uMDctNC4xOS41NS01Ljg1IDEuNjRsNC41OSA0LjU5Yy0uMjctMi4wNS4xLTQuMjIgMS4yNi02LjIzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCZWR0aW1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMzQgMi4wMkM2LjU5IDEuODIgMiA2LjQyIDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgMy43MSAwIDYuOTMtMi4wMiA4LjY2LTUuMDItNy41MS0uMjUtMTIuMDktOC40My04LjMyLTE0Ljk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbHVyQ2lyY3VsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA5Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xek03IDkuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTMgN2MtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bS0zLTNjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0zLTZjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xNCA5Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtMS41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXptMyA2Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMC00Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTItMy41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMC0zLjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmx1ckxpbmVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTcuNWMuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNS42NyAxLjUgMS41IDEuNXpNOSAxM2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wLTRjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXpNMyAyMWgxOHYtMkgzdjJ6TTUgOS41Yy44MyAwIDEuNS0uNjcgMS41LTEuNVM1LjgzIDYuNSA1IDYuNSAzLjUgNy4xNyAzLjUgOCA0LjE3IDkuNSA1IDkuNXptMCA0Yy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41LTEuNS42Ny0xLjUgMS41LjY3IDEuNSAxLjUgMS41ek05IDE3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTgtLjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0zIDN2MmgxOFYzSDN6bTE0IDUuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bTAgNGMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTEzIDljLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMCA0Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAgNGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbHVyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0tLjIgNC40OC4yLjAyYy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41LTEuNS42Ny0xLjUgMS41bC4wMi4yYy4wOS42Ny42MSAxLjE5IDEuMjggMS4yOHpNMTQgMy41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXptLTQgMGMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bTExIDdjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xMCA3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTggOGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wLTRjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMC00Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bS00IDEzLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek0yLjUgNS4yN2wzLjc4IDMuNzhMNiA5Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMWMwLS4xLS4wMy0uMTktLjA2LS4yOGwyLjgxIDIuODFjLS43MS4xMS0xLjI1LjczLTEuMjUgMS40NyAwIC44My42NyAxLjUgMS41IDEuNS43NCAwIDEuMzYtLjU0IDEuNDctMS4yNWwyLjgxIDIuODFBLjg3NS44NzUgMCAwIDAgMTQgMTdjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xYzAtLjEtLjAzLS4xOS0uMDYtLjI4bDMuNzggMy43OEwyMCAyMC4yMyAzLjc3IDQgMi41IDUuMjd6TTEwIDE3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTExLTMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTYgMTNjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpNMyA5LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em03IDExYy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNNiAxN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0tMy0zLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbHVyT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEzYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLThjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptLTMgLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek02IDVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMTUgNS41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTQgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wLTMuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bS0xMSAxMGMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTcgN2MtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTAtMTdjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xMCA3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAgNS41Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptOCAuNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC04Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0zIDguNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTE0IDE3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgMy41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptLTQtMTJjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0wIDguNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem00LTQuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTAtNGMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyaWdodG5lc3MxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxMFwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDJjLTEuODIgMC0zLjUzLjUtNSAxLjM1QzcuOTkgNS4wOCAxMCA4LjMgMTAgMTJzLTIuMDEgNi45Mi01IDguNjVDNi40NyAyMS41IDguMTggMjIgMTAgMjJjNS41MiAwIDEwLTQuNDggMTAtMTBTMTUuNTIgMiAxMCAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMmMtMS4wNSAwLTIuMDUuMTYtMyAuNDYgNC4wNiAxLjI3IDcgNS4wNiA3IDkuNTQgMCA0LjQ4LTIuOTQgOC4yNy03IDkuNTQuOTUuMyAxLjk1LjQ2IDMgLjQ2IDUuNTIgMCAxMC00LjQ4IDEwLTEwUzE0LjUyIDIgOSAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6TTEyIDE4Yy0uODkgMC0xLjc0LS4yLTIuNS0uNTVDMTEuNTYgMTYuNSAxMyAxNC40MiAxMyAxMnMtMS40NC00LjUtMy41LTUuNDVDMTAuMjYgNi4yIDExLjExIDYgMTIgNmMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnJpZ2h0bmVzczUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNS4zMSAyMy4zMSAxMiAyMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OXpNMTIgMThjLTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTYgNiAyLjY5IDYgNi0yLjY5IDYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzNiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjMxIDIzLjMxIDEyIDIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5ek0xMiAxOFY2YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcmlnaHRuZXNzNyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6TTEyIDE4Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnptMC0xMGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJyb2tlbkltYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwem0yMSAxOWMwIDEuMS0uOSAyLTIgMkg1Yy0xLjEgMC0yLS45LTItMlY1YzAtMS4xLjktMiAyLTJoMTRjMS4xIDAgMiAuOSAyIDJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNXY2LjU5bC0zLTMuMDEtNCA0LjAxLTQtNC00IDQtMy0zLjAxVjVjMC0xLjEuOS0yIDItMmgxNGMxLjEgMCAyIC45IDIgMnptLTMgNi40MiAzIDMuMDFWMTljMCAxLjEtLjkgMi0yIDJINWMtMS4xIDAtMi0uOS0yLTJ2LTYuNThsMyAyLjk5IDQtNCA0IDQgNC0zLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCcnVzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTRjLTEuNjYgMC0zIDEuMzQtMyAzIDAgMS4zMS0xLjE2IDItMiAyIC45MiAxLjIyIDIuNDkgMiA0IDIgMi4yMSAwIDQtMS43OSA0LTQgMC0xLjY2LTEuMzQtMy0zLTN6bTEzLjcxLTkuMzctMS4zNC0xLjM0YS45OTYuOTk2IDAgMCAwLTEuNDEgMEw5IDEyLjI1IDExLjc1IDE1bDguOTYtOC45NmEuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJ1cnN0TW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSA1aDJ2MTRIMXptNCAwaDJ2MTRINXptMTcgMEgxMGMtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDEyYy41NSAwIDEtLjQ1IDEtMVY2YzAtLjU1LS40NS0xLTEtMXpNMTEgMTdsMi41LTMuMTVMMTUuMjkgMTZsMi41LTMuMjJMMjEgMTdIMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbWVyYUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMy4yXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMiA3LjE3IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yaC0zLjE3TDE1IDJIOXptMyAxNWMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbWVyYUZyb250IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMjBINXYyaDV2MmwzLTMtMy0zdjJ6bTQgMHYyaDV2LTJoLTV6TTEyIDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTEuOTkuOS0xLjk5IDJTMTAuOSA4IDEyIDh6bTUtOEg3QzUuOSAwIDUgLjkgNSAydjE0YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWMmMwLTEuMS0uOS0yLTItMnpNNyAyaDEwdjEwLjVjMC0xLjY3LTMuMzMtMi41LTUtMi41cy01IC44My01IDIuNVYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW1lcmFSZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMjBINXYyaDV2MmwzLTMtMy0zdjJ6bTQgMHYyaDV2LTJoLTV6bTMtMjBIN0M1LjkgMCA1IC45IDUgMnYxNGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjJjMC0xLjEtLjktMi0yLTJ6bS01IDZjLTEuMTEgMC0yLS45LTItMnMuODktMiAxLjk5LTIgMiAuOSAyIDJDMTQgNS4xIDEzLjEgNiAxMiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW1lcmFSb2xsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNWMwLTEuMS0uOS0yLTItMmgtMVYyYzAtLjU1LS40NS0xLTEtMUg2Yy0uNTUgMC0xIC40NS0xIDF2MUg0Yy0xLjEgMC0yIC45LTIgMnYxNWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJoOFY1aC04em0tMiAxM2gtMnYtMmgydjJ6bTAtOWgtMlY3aDJ2MnptNCA5aC0ydi0yaDJ2MnptMC05aC0yVjdoMnYyem00IDloLTJ2LTJoMnYyem0wLTloLTJWN2gydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTkuNCAxMC41IDQuNzctOC4yNmE5Ljk4NCA5Ljk4NCAwIDAgMC04LjQ5IDIuMDFsMy42NiA2LjM1LjA2LS4xek0yMS41NCA5Yy0uOTItMi45Mi0zLjE1LTUuMjYtNi02LjM0TDExLjg4IDloOS42NnptLjI2IDFoLTcuNDlsLjI5LjUgNC43NiA4LjI1QTkuOTEgOS45MSAwIDAgMCAyMiAxMmMwLS42OS0uMDctMS4zNS0uMi0yek04LjU0IDEybC0zLjktNi43NUE5Ljk1OCA5Ljk1OCAwIDAgMCAyLjIgMTRoNy40OWwtMS4xNS0yem0tNi4wOCAzYy45MiAyLjkyIDMuMTUgNS4yNiA2IDYuMzRMMTIuMTIgMTVIMi40NnptMTEuMjcgMC0zLjkgNi43NmE5Ljk4NCA5Ljk4NCAwIDAgMCA4LjQ5LTIuMDFsLTMuNjYtNi4zNS0uOTMgMS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYXNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDZWNGwtMi0yaC01TDkgNHYySDV2MTFzMSAyIDIgMmgxM3MyLS45OCAyLTJWNmgtNHpNNCA5SDJ2MTFjMCAxLjExLjg5IDIgMiAyaDE0YzEuMTEgMCAyLS44OSAyLTJINFY5em03LTRjMC0uNTUuNTMtMSAxLTFoM2MuNDYgMCAxIC41NCAxIDF2MWgtNVY1ek01IDZoMTd2MTFjMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2VudGVyRm9jdXNTdHJvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptLTcgN0gzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6TTUgNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTE0LTJoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yem0wIDE2aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDZW50ZXJGb2N1c1dlYWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE1SDN2NGMwIDEuMS45IDIgMiAyaDR2LTJINXYtNHpNNSA1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnY0aDJWNXptMTQtMmgtNHYyaDR2NGgyVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6TTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTBTMTcuNTMgMiAxMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb2xsZWN0aW9uc0Jvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTAtMi41LTEuNUwxNSAxMlY0aDV2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29sbGVjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNlY0YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ6bS0xMS00IDIuMDMgMi43MUwxNiAxMWw0IDVIOGwzLTR6TTIgNnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb2xvckxlbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzYTkgOSAwIDAgMCAwIDE4Yy44MyAwIDEuNS0uNjcgMS41LTEuNSAwLS4zOS0uMTUtLjc0LS4zOS0xLjAxLS4yMy0uMjYtLjM4LS42MS0uMzgtLjk5IDAtLjgzLjY3LTEuNSAxLjUtMS41SDE2YzIuNzYgMCA1LTIuMjQgNS01IDAtNC40Mi00LjAzLTgtOS04em0tNS41IDljLS44MyAwLTEuNS0uNjctMS41LTEuNVM1LjY3IDkgNi41IDkgOCA5LjY3IDggMTAuNSA3LjMzIDEyIDYuNSAxMnptMy00QzguNjcgOCA4IDcuMzMgOCA2LjVTOC42NyA1IDkuNSA1czEuNS42NyAxLjUgMS41UzEwLjMzIDggOS41IDh6bTUgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzEzLjY3IDUgMTQuNSA1czEuNS42NyAxLjUgMS41UzE1LjMzIDggMTQuNSA4em0zIDRjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxNi42NyA5IDE3LjUgOXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbG9yaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuNzEgNS42My0yLjM0LTIuMzRhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0zLjEyIDMuMTItMS45My0xLjkxLTEuNDEgMS40MSAxLjQyIDEuNDJMMyAxNi4yNVYyMWg0Ljc1bDguOTItOC45MiAxLjQyIDEuNDIgMS40MS0xLjQxLTEuOTItMS45MiAzLjEyLTMuMTJjLjQtLjQuNC0xLjAzLjAxLTEuNDJ6TTYuOTIgMTkgNSAxNy4wOGw4LjA2LTguMDYgMS45MiAxLjkyTDYuOTIgMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbXBhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNXYyaDJWMWgtMnYyem0wIDE1SDVsNS02djZ6bTktMTVoLTV2Mmg1djEzbC01LTZ2OWg1YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRyYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJjNS41MiAwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTB6bTEtMTcuOTNjMy45NC40OSA3IDMuODUgNyA3Ljkzcy0zLjA1IDcuNDQtNyA3LjkzVjQuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRyb2xQb2ludER1cGxpY2F0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhoLTJ2M2gtM3YyaDN2M2gydi0zaDN2LTJoLTN6TTIgMTJjMC0yLjc5IDEuNjQtNS4yIDQuMDEtNi4zMlYzLjUyQzIuNTIgNC43NiAwIDguMDkgMCAxMnMyLjUyIDcuMjQgNi4wMSA4LjQ4di0yLjE2QTYuOTkgNi45OSAwIDAgMSAyIDEyem0xMy05Yy00Ljk2IDAtOSA0LjA0LTkgOXM0LjA0IDkgOSA5IDktNC4wNCA5LTktNC4wNC05LTktOXptMCAxNmMtMy44NiAwLTctMy4xNC03LTdzMy4xNC03IDctNyA3IDMuMTQgNyA3LTMuMTQgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbnRyb2xQb2ludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwIDEwLTQuNDkgMTAtMTBTMTcuNTEgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3JvcDE2OSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDdINWMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6bTAgOEg1VjloMTR2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3JvcDMyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNkg1Yy0xLjEgMC0yIC45LTIgMnY4YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMEg1VjhoMTR2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3JvcDU0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNEg1Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINVY2aDE0djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wNzUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1SDVjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxMkg1VjdoMTR2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyb3BEaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyb3BGcmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1djRoMlY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMiAxMEgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6bTE0IDRoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6bTAtMTZoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wTGFuZHNjYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNUg1Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTJINVY3aDE0djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wT3JpZ2luYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6bS01LjA0LTYuNzEtMi43NSAzLjU0LTEuOTYtMi4zNkw2LjUgMTdoMTFsLTMuNTQtNC43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3JvcFBvcnRyYWl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgM0g3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1Y1aDEwdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wUm90YXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjQ3IDIxLjQ5QzQuMiAxOS45MyAxLjg2IDE2Ljc2IDEuNSAxM0gwYy41MSA2LjE2IDUuNjYgMTEgMTEuOTUgMTEgLjIzIDAgLjQ0LS4wMi42Ni0uMDNMOC44IDIwLjE1bC0xLjMzIDEuMzR6TTEyLjA1IDBjLS4yMyAwLS40NC4wMi0uNjYuMDRsMy44MSAzLjgxIDEuMzMtMS4zM0MxOS44IDQuMDcgMjIuMTQgNy4yNCAyMi41IDExSDI0Yy0uNTEtNi4xNi01LjY2LTExLTExLjk1LTExek0xNiAxNGgyVjhhMiAyIDAgMCAwLTItMmgtNnYyaDZ2NnptLTggMlY0SDZ2Mkg0djJoMnY4YTIgMiAwIDAgMCAyIDJoOHYyaDJ2LTJoMnYtMkg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNEg2Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINlY2aDEydjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDcm9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTVoMlY3YzAtMS4xLS45LTItMi0ySDl2Mmg4djh6TTcgMTdWMUg1djRIMXYyaDR2MTBjMCAxLjEuOSAyIDIgMmgxMHY0aDJ2LTRoNHYtMkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDdXJyZW5jeUJpdGNvaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4wNiAxMS41N2MuNTktLjY5Ljk0LTEuNTkuOTQtMi41NyAwLTEuODYtMS4yNy0zLjQzLTMtMy44N1YzaC0ydjJoLTJWM0g5djJINnYyaDJ2MTBINnYyaDN2Mmgydi0yaDJ2Mmgydi0yYzIuMjEgMCA0LTEuNzkgNC00IDAtMS40NS0uNzgtMi43My0xLjk0LTMuNDN6TTEwIDdoNGMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDJoLTRWN3ptNSAxMGgtNXYtNGg1YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3VycmVuY3lGcmFuYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDVWM0g3djEzSDV2MmgydjNoMnYtM2g0di0ySDl2LTNoOHYtMkg5VjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEN1cnJlbmN5TGlyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgOC43NlYzaDJ2NC41MUwxNSA1djIuMzZsLTQgMi41MS4wMSAyLjM1TDE1IDkuNzJ2Mi4zNmwtNCAyLjUxVjE5YzIuNzYgMCA1LTIuMjQgNS01aDJjMCAzLjg3LTMuMTMgNy03IDdIOXYtNS4xNmwtMyAxLjg4di0yLjM2bDMtMS44OHYtMi4zNkw2IDEzdi0yLjM2bDMtMS44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3VycmVuY3lQb3VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDIxYzEuOTMgMCAzLjYyLTEuMTcgNC0zbC0xLjc1LS44OEMxNiAxOC4yMSAxNS4zMyAxOSAxNCAxOUg5LjFjLjgzLTEgMS41LTIuMzQgMS41LTQgMC0uMzUtLjAzLS42OS0uMDgtMUgxNHYtMkg5LjgyQzkgMTAuNDIgOCA5LjYgOCA4YTMuNSAzLjUgMCAwIDEgNi43OC0xLjIyTDE2LjYzIDZjLS44LTIuMDUtMi43OS0zLjUtNS4xMy0zLjVDOC40NiAyLjUgNiA0Ljk2IDYgOGMwIDEuNzguNzkgMi45IDEuNDkgNEg2djJoMi40N2MuMDguMzEuMTMuNjQuMTMgMSAwIDIuNy0yLjYgNC0yLjYgNHYyaDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEN1cnJlbmN5UnVibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDNIN3Y5SDV2MmgydjJINXYyaDJ2M2gydi0zaDR2LTJIOXYtMmg0LjVjMy4wNCAwIDUuNS0yLjQ2IDUuNS01LjVTMTYuNTQgMyAxMy41IDN6bTAgOUg5VjVoNC41QzE1LjQzIDUgMTcgNi41NyAxNyA4LjVTMTUuNDMgMTIgMTMuNSAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3VycmVuY3lSdXBlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjY2IDdjLS41Ni0xLjE4LTEuNzYtMi0zLjE2LTJINlYzaDEydjJoLTMuMjZjLjQ4LjU4Ljg0IDEuMjYgMS4wNSAySDE4djJoLTIuMDJjLS4yNSAyLjgtMi42MSA1LTUuNDggNWgtLjczbDYuNzMgN2gtMi43N0w3IDE0di0yaDMuNWMxLjc2IDAgMy4yMi0xLjMgMy40Ni0zSDZWN2g3LjY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDdXJyZW5jeVllbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjkyIDExSDE4djJoLTV2Mmg1djJoLTV2NGgtMnYtNEg2di0yaDV2LTJINnYtMmg0LjA4TDUgM2gyLjM3TDEyIDEwLjI5IDE2LjYzIDNIMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEN1cnJlbmN5WXVhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjI4IDEySDE4djJoLTV2N2gtMnYtN0g2di0yaDQuNzJMNSAzaDIuMzdMMTIgMTAuMjkgMTYuNjMgM0gxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVibHVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM3YxOGE5IDkgMCAwIDAgMC0xOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIzXCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNlwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIzXCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCIyMVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjNcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCIxOFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZWhhemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE1LjV2MmgyMHYtMkgyem0wLTV2MmgyMHYtMkgyem0wLTV2MmgyMHYtMkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZXRhaWxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMyAyIDIxaDIwTDEyIDN6bTEgNS45MkwxOC42IDE5SDEzVjguOTJ6bS0yIDBWMTlINS40TDExIDguOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpcnR5TGVucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjk1IDE5SDIwVjdINHYxMmg3LjI0Yy4xNC0uOTguNDItMi4wNS0uMTYtMi40My0uODktLjU5LTEuMjcgMi4wNi0yLjggMS4zNS0xLjM5LTEuMTIgMS4wNS0xLjI5LjUtMy4yNy0uMjItLjc5LTIuMjguMzYtMi40LTEuMjQtLjA4LTEgMS40OS0uNzQgMS41MS0xLjQ5LjAzLS43NS0xLjAzLTEuMDUtLjI1LTEuOTEuMjItLjI0LjcxLS4yNi45MS0uMTkuNzkuMjcgMS41NSAxLjgyIDIuNTEgMS4xOSAxLjAzLS42Ni0xLjg4LTIuMzUgMC0yLjg2IDEuNjQtLjQ0IDEuMzEgMi4wOCAyLjY1IDIuNDQgMS45NC41MiAyLjY1LTQuNTUgNC40MS0yLjMzIDEuODUgMi4zMy0zLjQzIDIuMjctMi44NSA0LjAxLjM0IDEuMDEgMi4xNS0xLjIgMi43Ni41My42NCAxLjgzLTMuMDkuODItMy4wNCAxLjY2LjA2LjgzIDIuNDEuNTUgMS42NCAyLjEyLTEuMTQgMS44Ni0zLTEuMDMtMy44MS4wOS0uMzkuNTctLjA5IDEuNDkuMTMgMi4zM3pNMjAgNWMxLjEgMCAyIC45IDIgMnYxMmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY3YzAtMS4xLjktMiAyLTJoMy4xN0w5IDNoNmwxLjgzIDJIMjB6bS0xLjg2IDEzLjAxYy0uNDcgMC0uODYtLjM4LS44Ni0uODZzLjM4LS44Ni44Ni0uODZjLjQ3IDAgLjg2LjM4Ljg2Ljg2cy0uMzguODYtLjg2Ljg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzIDE3LjI1ek0yMC43MSA3LjA0YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zNC0yLjM0YS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV1cm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxOC41QTYuNDggNi40OCAwIDAgMSA5LjI0IDE1SDE1bDEtMkg4LjU4Yy0uMDUtLjMzLS4wOC0uNjYtLjA4LTFzLjAzLS42Ny4wOC0xSDE1bDEtMkg5LjI0QTYuNDkxIDYuNDkxIDAgMCAxIDE1IDUuNWMxLjYxIDAgMy4wOS41OSA0LjIzIDEuNTdMMjEgNS4zQTguOTU1IDguOTU1IDAgMCAwIDE1IDNjLTMuOTIgMC03LjI0IDIuNTEtOC40OCA2SDNsLTEgMmg0LjA2YTguMjYyIDguMjYyIDAgMCAwIDAgMkgzbC0xIDJoNC41MmMxLjI0IDMuNDkgNC41NiA2IDguNDggNiAyLjMxIDAgNC40MS0uODcgNi0yLjNsLTEuNzgtMS43N2MtMS4xMy45OC0yLjYgMS41Ny00LjIyIDEuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV4cG9zdXJlTmVnMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDExdjJoOHYtMkg0em0xNSA3aC0yVjcuMzhMMTQgOC40VjYuN0wxOC43IDVoLjN2MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV4cG9zdXJlTmVnMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS4wNSAxNi4yOSAyLjg2LTMuMDdjLjM4LS4zOS43Mi0uNzkgMS4wNC0xLjE4LjMyLS4zOS41OS0uNzguODItMS4xNy4yMy0uMzkuNDEtLjc4LjU0LTEuMTdzLjE5LS43OS4xOS0xLjE4YzAtLjUzLS4wOS0xLjAyLS4yNy0xLjQ2LS4xOC0uNDQtLjQ0LS44MS0uNzgtMS4xMS0uMzQtLjMxLS43Ny0uNTQtMS4yNi0uNzFBNS43MiA1LjcyIDAgMCAwIDE2LjQ3IDVjLS42OSAwLTEuMzEuMTEtMS44NS4zMi0uNTQuMjEtMSAuNTEtMS4zNi44OC0uMzcuMzctLjY1LjgtLjg0IDEuMy0uMTguNDctLjI3Ljk3LS4yOCAxLjVoMi4xNGMuMDEtLjMxLjA1LS42LjEzLS44Ny4wOS0uMjkuMjMtLjU0LjQtLjc1LjE4LS4yMS40MS0uMzcuNjgtLjQ5LjI3LS4xMi42LS4xOC45Ni0uMTguMzEgMCAuNTguMDUuODEuMTUuMjMuMS40My4yNS41OS40My4xNi4xOC4yOC40LjM3LjY1LjA4LjI1LjEzLjUyLjEzLjgxIDAgLjIyLS4wMy40My0uMDguNjUtLjA2LjIyLS4xNS40NS0uMjkuNy0uMTQuMjUtLjMyLjUzLS41Ni44My0uMjMuMy0uNTIuNjUtLjg4IDEuMDNsLTQuMTcgNC41NVYxOEgyMXYtMS43MWgtNS45NXpNMiAxMXYyaDh2LTJIMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwb3N1cmVQbHVzMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA3SDh2NEg0djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0xMCAxMWgtMlY3LjM4TDE1IDguNFY2LjdMMTkuNyA1aC4zdjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFeHBvc3VyZVBsdXMyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2LjA1IDE2LjI5IDIuODYtMy4wN2MuMzgtLjM5LjcyLS43OSAxLjA0LTEuMTguMzItLjM5LjU5LS43OC44Mi0xLjE3LjIzLS4zOS40MS0uNzguNTQtMS4xNy4xMy0uMzkuMTktLjc5LjE5LTEuMTggMC0uNTMtLjA5LTEuMDItLjI3LTEuNDYtLjE4LS40NC0uNDQtLjgxLS43OC0xLjExLS4zNC0uMzEtLjc3LS41NC0xLjI2LS43MUE1LjcyIDUuNzIgMCAwIDAgMTcuNDcgNWMtLjY5IDAtMS4zMS4xMS0xLjg1LjMyLS41NC4yMS0xIC41MS0xLjM2Ljg4LS4zNy4zNy0uNjUuOC0uODQgMS4zLS4xOC40Ny0uMjcuOTctLjI4IDEuNWgyLjE0Yy4wMS0uMzEuMDUtLjYuMTMtLjg3LjA5LS4yOS4yMy0uNTQuNC0uNzUuMTgtLjIxLjQxLS4zNy42OC0uNDkuMjctLjEyLjYtLjE4Ljk2LS4xOC4zMSAwIC41OC4wNS44MS4xNS4yMy4xLjQzLjI1LjU5LjQzLjE2LjE4LjI4LjQuMzcuNjUuMDguMjUuMTMuNTIuMTMuODEgMCAuMjItLjAzLjQzLS4wOC42NS0uMDYuMjItLjE1LjQ1LS4yOS43LS4xNC4yNS0uMzIuNTMtLjU2LjgzLS4yMy4zLS41Mi42NS0uODggMS4wM2wtNC4xNyA0LjU1VjE4SDIydi0xLjcxaC01Ljk1ek04IDdINnY0SDJ2Mmg0djRoMnYtNGg0di0ySDhWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwb3N1cmVaZXJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMTQgMTIuNWMwIDEtLjEgMS44NS0uMyAyLjU1LS4yLjctLjQ4IDEuMjctLjgzIDEuNy0uMzYuNDQtLjc5Ljc1LTEuMy45NS0uNTEuMi0xLjA3LjMtMS43LjMtLjYyIDAtMS4xOC0uMS0xLjY5LS4zLS41MS0uMi0uOTUtLjUxLTEuMzEtLjk1LS4zNi0uNDQtLjY1LTEuMDEtLjg1LTEuNy0uMi0uNy0uMy0xLjU1LS4zLTIuNTV2LTIuMDRjMC0xIC4xLTEuODUuMy0yLjU1LjItLjcuNDgtMS4yNi44NC0xLjY5LjM2LS40My44LS43NCAxLjMxLS45M0MxMC44MSA1LjEgMTEuMzggNSAxMiA1Yy42MyAwIDEuMTkuMSAxLjcuMjkuNTEuMTkuOTUuNSAxLjMxLjkzLjM2LjQzLjY0Ljk5Ljg0IDEuNjkuMi43LjMgMS41NC4zIDIuNTV2Mi4wNHptLTIuMTEtMi4zNmMwLS42NC0uMDUtMS4xOC0uMTMtMS42Mi0uMDktLjQ0LS4yMi0uNzktLjQtMS4wNi0uMTctLjI3LS4zOS0uNDYtLjY0LS41OC0uMjUtLjEzLS41NC0uMTktLjg2LS4xOS0uMzIgMC0uNjEuMDYtLjg2LjE4cy0uNDcuMzEtLjY0LjU4Yy0uMTcuMjctLjMxLjYyLS40IDEuMDZzLS4xMy45OC0uMTMgMS42MnYyLjY3YzAgLjY0LjA1IDEuMTguMTQgMS42Mi4wOS40NS4yMy44MS40IDEuMDlzLjM5LjQ4LjY0LjYxLjU0LjE5Ljg3LjE5Yy4zMyAwIC42Mi0uMDYuODctLjE5cy40Ni0uMzMuNjMtLjYxYy4xNy0uMjguMy0uNjQuMzktMS4wOS4wOS0uNDUuMTMtLjk5LjEzLTEuNjJ2LTIuNjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV4cG9zdXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNNiA3aDV2MS41SDZWN3ptMTMgMTJINUwxOSA1djE0em0tNC41LTN2MkgxNnYtMmgydi0xLjVoLTJ2LTJoLTEuNXYyaC0yVjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYWNlUmV0b3VjaGluZ05hdHVyYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC43NyA4LjU4LS45MiAyLjAxYy4wOS40Ni4xNS45My4xNSAxLjQxIDAgNC40MS0zLjU5IDgtOCA4cy04LTMuNTktOC04YzAtLjA1LjAxLS4xIDAtLjE0IDIuNi0uOTggNC42OS0yLjk5IDUuNzQtNS41NUExMCAxMCAwIDAgMCAxNy41IDEwYy40NSAwIC44OS0uMDQgMS4zMy0uMWwtLjYtMS4zMi0uODgtMS45My0xLjkzLS44OC0yLjc5LTEuMjcgMi43OS0xLjI3LjcxLS4zMkE5Ljg2IDkuODYgMCAwIDAgMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwYzAtMS40Ny0uMzMtMi44Ny0uOS00LjEzbC0uMzMuNzF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC42IDUuNiAxOS41IDhsLTEuMS0yLjRMMTYgNC41bDIuNC0xLjFMMTkuNSAxbDEuMSAyLjRMMjMgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYWNlUmV0b3VjaGluZ09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgMTBjLjc1IDAgMS40Ny0uMDkgMi4xNy0uMjQuMjEuNzEuMzMgMS40Ni4zMyAyLjI0IDAgMS4yMi0uMjggMi4zNy0uNzcgMy40bDEuNDkgMS40OUE5Ljk4MSA5Ljk4MSAwIDAgMCAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMC0xLjc4IDAtMy40NC40Ny00Ljg5IDEuMjhsNS4zMyA1LjMzYzEuNDkuODggMy4yMSAxLjM5IDUuMDYgMS4zOXpNMS44OSAzLjcybDIuMTkgMi4xOUE5Ljk1OCA5Ljk1OCAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMjkgMCA0LjQtLjc4IDYuMDktMi4wOGwyLjE5IDIuMTkgMS40MS0xLjQxTDMuMzEgMi4zMSAxLjg5IDMuNzJ6bTE0Ljc3IDE0Ljc3QTcuOTEgNy45MSAwIDAgMSAxMiAyMGMtNC40MSAwLTgtMy41OS04LTggMC0uMDUuMDEtLjEgMC0uMTRhOS45NDYgOS45NDYgMCAwIDAgMy42NC0yLjM5bDkuMDIgOS4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xMSAxMGgyVjVoLTR2Mmgydjh6bTctMTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS00LTRoLTR2LTJoMmEyIDIgMCAwIDAgMi0yVjdhMiAyIDAgMCAwLTItMmgtNHYyaDR2MmgtMmEyIDIgMCAwIDAtMiAydjRoNnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDFIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHpNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE0IDh2LTEuNWMwLS44My0uNjctMS41LTEuNS0xLjUuODMgMCAxLjUtLjY3IDEuNS0xLjVWN2EyIDIgMCAwIDAtMi0yaC00djJoNHYyaC0ydjJoMnYyaC00djJoNGEyIDIgMCAwIDAgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXI0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTEyIDEwaDJWNWgtMnY0aC0yVjVoLTJ2Nmg0djR6bTYtMTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyNSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDFIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHpNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE0IDh2LTJhMiAyIDAgMCAwLTItMmgtMlY3aDRWNWgtNnY2aDR2MmgtNHYyaDRhMiAyIDAgMCAwIDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyNiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS04LTJoMmEyIDIgMCAwIDAgMi0ydi0yYTIgMiAwIDAgMC0yLTJoLTJWN2g0VjVoLTRhMiAyIDAgMCAwLTIgMnY2YTIgMiAwIDAgMCAyIDJ6bTAtNGgydjJoLTJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlcjcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0em0tOC0yIDQtOFY1aC02djJoNGwtNCA4aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlcjggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0em0tOC0yaDJhMiAyIDAgMCAwIDItMnYtMS41YzAtLjgzLS42Ny0xLjUtMS41LTEuNS44MyAwIDEuNS0uNjcgMS41LTEuNVY3YTIgMiAwIDAgMC0yLTJoLTJhMiAyIDAgMCAwLTIgMnYxLjVjMCAuODMuNjcgMS41IDEuNSAxLjUtLjgzIDAtMS41LjY3LTEuNSAxLjVWMTNhMiAyIDAgMCAwIDIgMnptMC04aDJ2MmgtMlY3em0wIDRoMnYyaC0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXI5UGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xMSA3VjhhMiAyIDAgMCAwLTItMmgtMWEyIDIgMCAwIDAtMiAydjFhMiAyIDAgMCAwIDIgMmgxdjFIOXYyaDNhMiAyIDAgMCAwIDItMnptLTMtM1Y4aDF2MWgtMXptMTAtOEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgOGgtMlY3aC0ydjJoLTJ2MmgydjJoMnYtMmgydjZIN1YzaDE0djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlcjkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0ek0xNSA1aC0yYTIgMiAwIDAgMC0yIDJ2MmEyIDIgMCAwIDAgMiAyaDJ2MmgtNHYyaDRhMiAyIDAgMCAwIDItMlY3YTIgMiAwIDAgMC0yLTJ6bTAgNGgtMlY3aDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyQkFuZFcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi03LTh2OEg1bDctOFY1aDd2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlckNlbnRlckZvY3VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNUgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6TTUgNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTE0LTJoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yem0wIDE2aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0ek0xMiA5Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVyRHJhbWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4zNSAxMC4wNEE3LjQ5IDcuNDkgMCAwIDAgMTIgNGE3LjQ4IDcuNDggMCAwIDAtNi42NCA0LjA0QTUuOTk2IDUuOTk2IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE5IDE4SDZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNGgyYzAtMi43Ni0xLjg2LTUuMDgtNC40LTUuNzhDOC42MSA2Ljg4IDEwLjIgNiAxMiA2YzMuMDMgMCA1LjUgMi40NyA1LjUgNS41di41SDE5YzEuNjUgMCAzIDEuMzUgMyAzcy0xLjM1IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXJGcmFtZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0aC00bC00LTQtNCA0SDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNkg0VjZoNC41MmwzLjUyLTMuNUwxNS41MiA2SDIwdjE0ek0xOCA4SDZ2MTBoMTJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmlsdGVySGRyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQgNi0zLjc1IDUgMi44NSAzLjgtMS42IDEuMkM5LjgxIDEzLjc1IDcgMTAgNyAxMGwtNiA4aDIyTDE0IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpbHRlck5vbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXJUaWx0U2hpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA0LjA3VjIuMDVjLTIuMDEuMi0zLjg0IDEtNS4zMiAyLjIxTDcuMSA1LjY5QTcuOTQxIDcuOTQxIDAgMCAxIDExIDQuMDd6bTcuMzIuMTlBOS45NDkgOS45NDkgMCAwIDAgMTMgMi4wNXYyLjAyYzEuNDYuMTggMi43OS43NiAzLjkgMS42MmwxLjQyLTEuNDN6TTE5LjkzIDExaDIuMDJjLS4yLTIuMDEtMS0zLjg0LTIuMjEtNS4zMkwxOC4zMSA3LjFhNy45NDEgNy45NDEgMCAwIDEgMS42MiAzLjl6TTUuNjkgNy4xIDQuMjYgNS42OEE5Ljk0OSA5Ljk0OSAwIDAgMCAyLjA1IDExaDIuMDJjLjE4LTEuNDYuNzYtMi43OSAxLjYyLTMuOXpNNC4wNyAxM0gyLjA1Yy4yIDIuMDEgMSAzLjg0IDIuMjEgNS4zMmwxLjQzLTEuNDNBNy44NjggNy44NjggMCAwIDEgNC4wNyAxM3pNMTUgMTJjMC0xLjY2LTEuMzQtMy0zLTNzLTMgMS4zNC0zIDMgMS4zNCAzIDMgMyAzLTEuMzQgMy0zem0zLjMxIDQuOSAxLjQzIDEuNDNhOS45ODEgOS45ODEgMCAwIDAgMi4yMS01LjMyaC0yLjAyYTcuOTQ1IDcuOTQ1IDAgMCAxLTEuNjIgMy44OXpNMTMgMTkuOTN2Mi4wMmMyLjAxLS4yIDMuODQtMSA1LjMyLTIuMjFsLTEuNDMtMS40M2MtMS4xLjg2LTIuNDMgMS40NC0zLjg5IDEuNjJ6bS03LjMyLS4xOUE5Ljk4MSA5Ljk4MSAwIDAgMCAxMSAyMS45NXYtMi4wMmE3Ljk0MSA3Ljk0MSAwIDAgMS0zLjktMS42MmwtMS40MiAxLjQzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXJWaW50YWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNyAxMi40YTYuMDYgNi4wNiAwIDAgMC0uODYtLjRjLjI5LS4xMS41OC0uMjQuODYtLjRhNi4wMTIgNi4wMTIgMCAwIDAgMy01LjE5IDYuMDA3IDYuMDA3IDAgMCAwLTYgMGMtLjI4LjE2LS41NC4zNS0uNzguNTQuMDUtLjMxLjA4LS42My4wOC0uOTUgMC0yLjIyLTEuMjEtNC4xNS0zLTUuMTlDMTAuMjEgMS44NSA5IDMuNzggOSA2YzAgLjMyLjAzLjY0LjA4Ljk1LS4yNC0uMi0uNS0uMzktLjc4LS41NWE2LjAwOCA2LjAwOCAwIDAgMC02IDAgNS45NyA1Ljk3IDAgMCAwIDMgNS4xOWMuMjguMTYuNTcuMjkuODYuNC0uMjkuMTEtLjU4LjI0LS44Ni40YTYuMDEyIDYuMDEyIDAgMCAwLTMgNS4xOSA2LjAwNyA2LjAwNyAwIDAgMCA2IDBjLjI4LS4xNi41NC0uMzUuNzgtLjU0LS4wNS4zMi0uMDguNjQtLjA4Ljk2IDAgMi4yMiAxLjIxIDQuMTUgMyA1LjE5IDEuNzktMS4wNCAzLTIuOTcgMy01LjE5IDAtLjMyLS4wMy0uNjQtLjA4LS45NS4yNC4yLjUuMzguNzguNTRhNi4wMDggNi4wMDggMCAwIDAgNiAwIDYuMDEyIDYuMDEyIDAgMCAwLTMtNS4xOXpNMTIgMTZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS45NiAxMC4yOS0yLjc1IDMuNTQtMS45Ni0yLjM2TDguNSAxNWgxMWwtMy41NC00Ljcxek0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTFIMXYyaDZ2LTJ6bTIuMTctMy4yNEw3LjA1IDUuNjQgNS42NCA3LjA1bDIuMTIgMi4xMiAxLjQxLTEuNDF6TTEzIDFoLTJ2NmgyVjF6bTUuMzYgNi4wNS0xLjQxLTEuNDEtMi4xMiAyLjEyIDEuNDEgMS40MSAyLjEyLTIuMTJ6TTE3IDExdjJoNnYtMmgtNnptLTUtMmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTIuODMgNy4yNCAyLjEyIDIuMTIgMS40MS0xLjQxLTIuMTItMi4xMi0xLjQxIDEuNDF6bS05LjE5LjcxIDEuNDEgMS40MSAyLjEyLTIuMTItMS40MS0xLjQxLTIuMTIgMi4xMnpNMTEgMjNoMnYtNmgtMnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGFzaEF1dG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDJ2MTJoM3Y5bDctMTJIOWw0LTlIM3ptMTYgMGgtMmwtMy4yIDloMS45bC43LTJoMy4ybC43IDJoMS45TDE5IDJ6bS0yLjE1IDUuNjVMMTggNGwxLjE1IDMuNjVoLTIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxhc2hPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjI3IDMgMiA0LjI3bDUgNVYxM2gzdjlsMy41OC02LjE0TDE3LjczIDIwIDE5IDE4LjczIDMuMjcgM3pNMTcgMTBoLTRsNC04SDd2Mi4xOGw4LjQ2IDguNDZMMTcgMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsYXNoT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDJ2MTFoM3Y5bDctMTJoLTRsNC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGlwQ2FtZXJhQW5kcm9pZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTJjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtMy0xLjM0LTMtMy0zLTMgMS4zNC0zIDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTBWOEg1LjA5QzYuNDcgNS42MSA5LjA1IDQgMTIgNGMzLjcyIDAgNi44NSAyLjU2IDcuNzQgNmgyLjA2Yy0uOTMtNC41Ni00Ljk2LTgtOS44LTgtMy4yNyAwLTYuMTggMS41OC04IDQuMDFWNEgydjZoNnpNMTYgMTR2MmgyLjkxYy0xLjM4IDIuMzktMy45NiA0LTYuOTEgNC0zLjcyIDAtNi44NS0yLjU2LTcuNzQtNkgyLjJjLjkzIDQuNTYgNC45NiA4IDkuOCA4IDMuMjcgMCA2LjE4LTEuNTggOC00LjAxVjIwaDJ2LTZoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsaXBDYW1lcmFJb3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1aC0zLjE3TDE1IDNIOUw3LjE3IDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tOCAxM2MtMi43NiAwLTUtMi4yNC01LTVINWwyLjUtMi41TDEwIDEzSDhjMCAyLjIxIDEuNzkgNCA0IDQgLjU4IDAgMS4xMy0uMTMgMS42Mi0uMzVsLjc0Ljc0Yy0uNzEuMzctMS41LjYxLTIuMzYuNjF6bTQuNS0yLjVMMTQgMTNoMmMwLTIuMjEtMS43OS00LTQtNC0uNTggMC0xLjEzLjEzLTEuNjIuMzVsLS43NC0uNzNDMTAuMzUgOC4yNCAxMS4xNCA4IDEyIDhjMi43NiAwIDUgMi4yNCA1IDVoMmwtMi41IDIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDIxaDJ2LTJoLTJ2MnptNC0xMmgyVjdoLTJ2MnpNMyA1djE0YzAgMS4xLjkgMiAyIDJoNHYtMkg1VjVoNFYzSDVjLTEuMSAwLTIgLjktMiAyem0xNi0ydjJoMmMwLTEuMS0uOS0yLTItMnptLTggMjBoMlYxaC0ydjIyem04LTZoMnYtMmgtMnYyek0xNSA1aDJWM2gtMnYyem00IDhoMnYtMmgtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JhZGllbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA5aDJ2MmgtMnptLTIgMmgydjJIOXptNCAwaDJ2MmgtMnptMi0yaDJ2MmgtMnpNNyA5aDJ2Mkg3em0xMi02SDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxOEg3di0yaDJ2MnptNCAwaC0ydi0yaDJ2MnptNCAwaC0ydi0yaDJ2MnptMi03aC0ydjJoMnYyaC0ydi0yaC0ydjJoLTJ2LTJoLTJ2Mkg5di0ySDd2Mkg1di0yaDJ2LTJINVY1aDE0djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdyYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTJjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yek02IDhjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDhjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0xMi04YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptLTQgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTQtNGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS00LTRjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0tNC00Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JpZE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNHYxLjQ1bDIgMlY0aDR2NGgtMy40NWwyIDJIMTR2MS40NWwyIDJWMTBoNHY0aC0zLjQ1bDIgMkgyMHYxLjQ1bDIgMlY0YzAtMS4xLS45LTItMi0ySDQuNTVsMiAySDh6bTggMGg0djRoLTRWNHpNMS4yNyAxLjI3IDAgMi41NWwyIDJWMjBjMCAxLjEuOSAyIDIgMmgxNS40NmwyIDIgMS4yNy0xLjI3TDEuMjcgMS4yN3pNMTAgMTIuNTUgMTEuNDUgMTRIMTB2LTEuNDV6bS02LTZMNS40NSA4SDRWNi41NXpNOCAyMEg0di00aDR2NHptMC02SDR2LTRoMy40NWwuNTUuNTVWMTR6bTYgNmgtNHYtNGgzLjQ1bC41NS41NFYyMHptMiAwdi0xLjQ2TDE3LjQ2IDIwSDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcmlkT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNOCAyMEg0di00aDR2NHptMC02SDR2LTRoNHY0em0wLTZINFY0aDR2NHptNiAxMmgtNHYtNGg0djR6bTAtNmgtNHYtNGg0djR6bTAtNmgtNFY0aDR2NHptNiAxMmgtNHYtNGg0djR6bTAtNmgtNHYtNGg0djR6bTAtNmgtNFY0aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGRyRW5oYW5jZWRTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTYgMi42OS02IDYtNnptMCAyQzkuNzkgNCA4IDUuNzkgOCA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0xIDdoLTJWOUg5VjdoMlY1aDJ2MmgydjJoLTJ2MnptMTEgOWgtMnYyaC0xLjV2LTJoLTJ2LTEuNWgydi0ySDIydjJoMlYyMHptLTYtMS41YzAgLjYtLjQgMS4xLS45IDEuNEwxOCAyMmgtMS41bC0uOS0yaC0xLjF2MkgxM3YtNmgzLjVjLjggMCAxLjUuNyAxLjUgMS41djF6bS0xLjUgMHYtMWgtMnYxaDJ6bS0xMy0uNXYtMkg1djZIMy41di0yLjVoLTJWMjJIMHYtNmgxLjV2Mmgyem02LjUtMmMuOCAwIDEuNS43IDEuNSAxLjV2M2MwIC44LS43IDEuNS0xLjUgMS41SDYuNXYtNkgxMHptMCA0LjV2LTNIOHYzaDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhkck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNSAxNXYtMmgxLjFsLjkgMkgyMWwtLjktMi4xYy41LS4yLjktLjguOS0xLjR2LTFjMC0uOC0uNy0xLjUtMS41LTEuNUgxNnY0LjlsMS4xIDEuMWguNHptMC00LjVoMnYxaC0ydi0xem0tNC41IDB2LjRsMS41IDEuNXYtMS45YzAtLjgtLjctMS41LTEuNS0xLjVoLTEuOWwxLjUgMS41aC40em0tMy41LTEtNy03LTEuMSAxTDYuOSA5aC0uNHYyaC0yVjlIM3Y2aDEuNXYtMi41aDJWMTVIOHYtNC45bDEuNSAxLjVWMTVoMy40bDcuNiA3LjYgMS4xLTEuMS0xMi4xLTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZHJPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTEuNXYtMWMwLS44LS43LTEuNS0xLjUtMS41SDE2djZoMS41di0yaDEuMWwuOSAySDIxbC0uOS0yLjFjLjUtLjMuOS0uOC45LTEuNHptLTEuNSAwaC0ydi0xaDJ2MXptLTEzLS41aC0yVjlIM3Y2aDEuNXYtMi41aDJWMTVIOFY5SDYuNXYyek0xMyA5SDkuNXY2SDEzYy44IDAgMS41LS43IDEuNS0xLjV2LTNjMC0uOC0uNy0xLjUtMS41LTEuNXptMCA0LjVoLTJ2LTNoMnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZHJQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDE0LjVoMnYxaC0yek0xNC41IDcuNUgxNnYzaC0xLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMTMuNWMwIC42LS40IDEuMS0uOSAxLjRMMTIgMTloLTEuNWwtLjktMkg4LjV2Mkg3di02aDMuNWMuOCAwIDEuNS43IDEuNSAxLjV2MXptMC0zLjVoLTEuNVY5LjVoLTJWMTJIN1Y2aDEuNXYyaDJWNkgxMnY2em01LjUgNEgxNnYxLjVoLTEuNVYxNkgxM3YtMS41aDEuNVYxM0gxNnYxLjQ5aDEuNVYxNnptMC01LjVjMCAuOC0uNyAxLjUtMS41IDEuNWgtM1Y2aDNjLjggMCAxLjUuNyAxLjUgMS41djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhkclN0cm9uZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDZjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02ek01IDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZHJXZWFrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMTItMmMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6bTAgMTBjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWFsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuNzMgMTIuMDIgMy45OC0zLjk4YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtNC4zNC00LjM0YS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtMy45OCAzLjk4TDggMi4yOWExLjAwMSAxLjAwMSAwIDAgMC0xLjQxIDBMMi4yNSA2LjYzYS45OTYuOTk2IDAgMCAwIDAgMS40MWwzLjk4IDMuOThMMi4yNSAxNmEuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsNC4zNCA0LjM0Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGwzLjk4LTMuOTggMy45OCAzLjk4Yy4yLjIuNDUuMjkuNzEuMjkuMjYgMCAuNTEtLjEuNzEtLjI5bDQuMzQtNC4zNGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTMuOTktMy45OHpNMTIgOWMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tNC43MSAxLjk2TDMuNjYgNy4zNGwzLjYzLTMuNjMgMy42MiAzLjYyLTMuNjIgMy42M3pNMTAgMTNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMiAyYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTItNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0yLjY2IDkuMzQtMy42My0zLjYyIDMuNjMtMy42MyAzLjYyIDMuNjItMy42MiAzLjYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZXZjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41IDExaC0xVjlIM3Y2aDEuNXYtMi41aDFWMTVIN1Y5SDUuNXpNMjEgMTF2LTFjMC0uNTUtLjQ1LTEtMS0xaC0yYy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWgyYy41NSAwIDEtLjQ1IDEtMXYtMWgtMS41di41aC0xdi0zaDF2LjVIMjF6TTE0LjI1IDEzLjUgMTMuNSA5SDEybDEgNmgyLjVsMS02SDE1ek04IDl2NmgzLjV2LTEuNWgtMnYtMWgyVjExaC0ydi0uNWgyVjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhpZGVJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVjMC0xLjEtLjktMi0yLTJINS44M0wyMSAxOC4xN1Y1ek0yLjgxIDIuODEgMS4zOSA0LjIyIDMgNS44M1YxOWMwIDEuMS45IDIgMiAyaDEzLjE3bDEuNjEgMS42MSAxLjQxLTEuNDFMMi44MSAyLjgxek02IDE3bDMtNCAyLjI1IDMgLjgyLTEuMSAyLjEgMi4xSDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEltYWdlQXNwZWN0UmF0aW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMGgtMnYyaDJ2LTJ6bTAgNGgtMnYyaDJ2LTJ6bS04LTRINnYyaDJ2LTJ6bTQgMGgtMnYyaDJ2LTJ6bTgtNkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDE2djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbWFnZU5vdFN1cHBvcnRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjkgMjEuOS04LjQ5LTguNDktOS44Mi05LjgyTDIuMSAyLjEuNjkgMy41MSAzIDUuODNWMTljMCAxLjEuOSAyIDIgMmgxMy4xN2wyLjMxIDIuMzEgMS40Mi0xLjQxek01IDE4bDMuNS00LjUgMi41IDMuMDFMMTIuMTcgMTVsMyAzSDV6bTE2IC4xN0w1LjgzIDNIMTljMS4xIDAgMiAuOSAyIDJ2MTMuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEltYWdlU2VhcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTN2N0g0VjZoNS4wMmMuMDUtLjcxLjIyLTEuMzguNDgtMkg0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi01bC0yLTJ6bS0xLjUgNWgtMTFsMi43NS0zLjUzIDEuOTYgMi4zNiAyLjc1LTMuNTR6bTIuOC05LjExYy40NC0uNy43LTEuNTEuNy0yLjM5QzIwIDQuMDEgMTcuOTkgMiAxNS41IDJTMTEgNC4wMSAxMSA2LjVzMi4wMSA0LjUgNC40OSA0LjVjLjg4IDAgMS43LS4yNiAyLjM5LS43TDIxIDEzLjQyIDIyLjQyIDEyIDE5LjMgOC44OXpNMTUuNSA5YTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE5VjVjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnpNOC41IDEzLjVsMi41IDMuMDFMMTQuNSAxMmw0LjUgNkg1bDMuNS00LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluY29tcGxldGVDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMmMwIDUuNTItNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0yLjc2IDEuMTItNS4yNiAyLjkzLTcuMDdMMTIgMTJWMmM1LjUyIDAgMTAgNC40OCAxMCAxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSXNvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek01LjUgNy41aDJ2LTJIOXYyaDJWOUg5djJINy41VjloLTJWNy41ek0xOSAxOUg1TDE5IDV2MTR6bS0yLTJ2LTEuNWgtNVYxN2g1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYW5kc2NhcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA2LTMuNzUgNSAyLjg1IDMuOC0xLjYgMS4yQzkuODEgMTMuNzUgNyAxMCA3IDEwbC02IDhoMjJMMTQgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGVha0FkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgM0gzdjNjMS42NiAwIDMtMS4zNCAzLTN6bTggMGgtMmE5IDkgMCAwIDEtOSA5djJjNi4wOCAwIDExLTQuOTMgMTEtMTF6bS00IDBIOGMwIDIuNzYtMi4yNCA1LTUgNXYyYzMuODcgMCA3LTMuMTMgNy03em0wIDE4aDJhOSA5IDAgMCAxIDktOXYtMmMtNi4wNyAwLTExIDQuOTMtMTEgMTF6bTggMGgzdi0zYy0xLjY2IDAtMyAxLjM0LTMgM3ptLTQgMGgyYzAtMi43NiAyLjI0LTUgNS01di0yYy0zLjg3IDAtNyAzLjEzLTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGVha1JlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDNIOGMwIC4zNy0uMDQuNzItLjEyIDEuMDZsMS41OSAxLjU5QzkuODEgNC44NCAxMCAzLjk0IDEwIDN6TTMgNC4yN2wyLjg0IDIuODRDNS4wMyA3LjY3IDQuMDYgOCAzIDh2MmMxLjYxIDAgMy4wOS0uNTUgNC4yNy0xLjQ2TDguNyA5Ljk3QTguOTkgOC45OSAwIDAgMSAzIDEydjJjMi43MSAwIDUuMTktLjk5IDcuMTEtMi42MmwyLjUgMi41QTExLjA0NCAxMS4wNDQgMCAwIDAgMTAgMjFoMmMwLTIuMTYuNzYtNC4xNCAyLjAzLTUuNjlsMS40MyAxLjQzQTYuOTIyIDYuOTIyIDAgMCAwIDE0IDIxaDJjMC0xLjA2LjMzLTIuMDMuODktMi44NEwxOS43MyAyMSAyMSAxOS43MyA0LjI3IDMgMyA0LjI3ek0xNCAzaC0yYzAgMS41LS4zNyAyLjkxLTEuMDIgNC4xNmwxLjQ2IDEuNDZDMTMuNDIgNi45OCAxNCA1LjA2IDE0IDN6bTUuOTQgMTMuMTJjLjM0LS4wOC42OS0uMTIgMS4wNi0uMTJ2LTJjLS45NCAwLTEuODQuMTktMi42Ni41MmwxLjYgMS42em0tNC41Ni00LjU2IDEuNDYgMS40NkE4Ljk4IDguOTggMCAwIDEgMjEgMTJ2LTJjLTIuMDYgMC0zLjk4LjU4LTUuNjIgMS41NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGVucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpbmtlZENhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIzLjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCI1XCIsXCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDMuMzNjMi41OCAwIDQuNjcgMi4wOSA0LjY3IDQuNjdIMjJjMC0zLjMxLTIuNjktNi02LTZ2MS4zM00xNiA2YzEuMTEgMCAyIC44OSAyIDJoMS4zM2MwLTEuODQtMS40OS0zLjMzLTMuMzMtMy4zM1Y2XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDBIMHYyNGgyNFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA5YzAtMS4xMS0uODktMi0yLTJWNEg5TDcuMTcgNkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjloLTV6bS01IDEwYy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9nb0RldiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek03LjY4IDE0Ljk4SDZWOWgxLjcxYzEuMjggMCAxLjcxIDEuMDMgMS43MSAxLjcxdjIuNTZjMCAuNjgtLjQyIDEuNzEtMS43NCAxLjcxem00LjctMy41MnYxLjA3SDExLjJ2MS4zOWgxLjkzdjEuMDdoLTIuMjVjLS40LjAxLS43NC0uMzEtLjc1LS43MVY5Ljc1Yy0uMDEtLjQuMzEtLjc0LjcxLS43NWgyLjI4djEuMDdIMTEuMnYxLjM5aDEuMTh6bTQuNSAyLjc3Yy0uNDggMS4xMS0xLjMzLjg5LTEuNzEgMEwxMy43NyA5aDEuMThsMS4wNyA0LjExTDE3LjA5IDloMS4xOGwtMS4zOSA1LjIzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljc3IDEwLjEyaC0uNjN2My43N2guNjNjLjE0IDAgLjI4LS4wNS40Mi0uMTYuMTQtLjEuMjEtLjI2LjIxLS40N3YtMi41MmMwLS4yMS0uMDctLjM3LS4yMS0uNDdhLjcyLjcyIDAgMCAwLS40Mi0uMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvb2tzMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNLjAxIDBoMjR2MjRoLTI0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4wMSAzaC0xNGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNCA3LjVjMCAuODMtLjY3IDEuNS0xLjUgMS41LjgzIDAgMS41LjY3IDEuNSAxLjVWMTVhMiAyIDAgMCAxLTIgMmgtNHYtMmg0di0yaC0ydi0yaDJWOWgtNFY3aDRhMiAyIDAgMCAxIDIgMnYxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvb2tzNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNCAxNGgtMnYtNEg5VjdoMnY0aDJWN2gydjEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb29rczUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQgNmgtNHYyaDJhMiAyIDAgMCAxIDIgMnYyYTIgMiAwIDAgMS0yIDJIOXYtMmg0di0ySDlWN2g2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvb2tzNiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE1aDJ2LTJoLTJ2MnptOC0xMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS00IDZoLTR2MmgyYTIgMiAwIDAgMSAyIDJ2MmEyIDIgMCAwIDEtMiAyaC0yYTIgMiAwIDAgMS0yLTJWOWEyIDIgMCAwIDEgMi0yaDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9va3NPbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTUgMTRoLTJWOWgtMlY3aDR2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvb2tzVHdvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS00IDhhMiAyIDAgMCAxLTIgMmgtMnYyaDR2Mkg5di00YTIgMiAwIDAgMSAyLTJoMlY5SDlWN2g0YTIgMiAwIDAgMSAyIDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9va3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMGMtMy44NiAwLTcgMy4xNC03IDdoMmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1aDJjMC0zLjg2LTMuMTQtNy03LTd6bTAtNEM1LjkzIDYgMSAxMC45MyAxIDE3aDJjMC00Ljk2IDQuMDQtOSA5LTlzOSA0LjA0IDkgOWgyYzAtNi4wNy00LjkzLTExLTExLTExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb3VwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwaDhjMS4xIDAgMi0uOSAyLTJ2LThjMC01LjUxLTQuNDktMTAtMTAtMTB6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNaWNFeHRlcm5hbE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjIgNS4xNyA4SDRsMSAxMGgxYzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTR2LTEuMTdsNS43OCA1Ljc4IDEuNDEtMS40MnpNMTIgMThjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yaDFsLjU2LTUuNjFMMTIgMTQuODNWMTh6bTItMTJ2NS4xN2wtMi0yVjZjMC0yLjIxIDEuNzktNCA0LTRzNCAxLjc5IDQgNHYxMS4xN2wtMi0yVjZjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAyem0tNC0xYzAgLjYyLS4yIDEuMTgtLjUyIDEuNjZMNS4zMyAyLjUxQTIuOTk2IDIuOTk2IDAgMCAxIDEwIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1pY0V4dGVybmFsT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjIyIDdINC43OEM0LjMgNi40NyA0IDUuNzcgNCA1YzAtMS42NiAxLjM0LTMgMy0zczMgMS4zNCAzIDNjMCAuNzctLjMgMS40Ny0uNzggMnpNMTYgMmMyLjIxIDAgNCAxLjc5IDQgNHYxNmgtMlY2YzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYxMmMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNEg1TDQgOGg2TDkgMThIOGMwIDEuMS45IDIgMiAyczItLjkgMi0yVjZjMC0yLjIxIDEuNzktNCA0LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vbm9jaHJvbWVQaG90b3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6TS03NCAyOWg0OHY0OGgtNDhWMjl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVoLTMuMkwxNSAzSDlMNy4yIDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE0aC04di0xYy0yLjggMC01LTIuMi01LTVzMi4yLTUgNS01VjdoOHYxMnptLTMtNmMwLTIuOC0yLjItNS01LTV2MS44YzEuOCAwIDMuMiAxLjQgMy4yIDMuMnMtMS40IDMuMi0zLjIgMy4yVjE4YzIuOCAwIDUtMi4yIDUtNXptLTguMiAwYzAgMS44IDEuNCAzLjIgMy4yIDMuMlY5LjhjLTEuOCAwLTMuMiAxLjQtMy4yIDMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW90aW9uUGhvdG9zQXV0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIuODggNy44OCAxLjU0IDEuNTRDNC4xNSAxMC4yMyA0IDExLjEgNCAxMmMwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04LTMuNTktOC04LThjLS45IDAtMS43Ny4xNS0yLjU4LjQyTDcuODkgMi44OUM5LjE1IDIuMzIgMTAuNTQgMiAxMiAyYzUuNTIgMCAxMCA0LjQ4IDEwIDEwcy00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMmMwLTEuNDcuMzItMi44Ni44OC00LjEyek03IDUuNUM3IDYuMzMgNi4zMyA3IDUuNSA3UzQgNi4zMyA0IDUuNSA0LjY3IDQgNS41IDQgNyA0LjY3IDcgNS41em01LjAzIDMuNDloLS4wN0wxMC44IDEyLjNoMi4zOWwtMS4xNi0zLjMxek0xMiAxOGMzLjMxIDAgNi0yLjY5IDYtNnMtMi42OS02LTYtNi02IDIuNjktNiA2IDIuNjkgNiA2IDZ6bS0uNzEtMTAuNWgxLjQzbDMuMDEgOGgtMS4zOWwtLjcyLTIuMDRoLTMuMjNsLS43MyAyLjA0SDguMjhsMy4wMS04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3Rpb25QaG90b3NPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC44NCAyMC44NCAzLjE2IDMuMTYgMS44OSA0LjQzbDEuODkgMS44OUE5LjkyIDkuOTIgMCAwIDAgMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMCAyLjExIDAgNC4wNy0uNjYgNS42OC0xLjc3bDEuODkgMS44OSAxLjI3LTEuMjh6TTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOCAwLTEuNTUuNDUtMyAxLjIyLTQuMjNsMS40NiAxLjQ2QzYuMjUgMTAuMDYgNiAxMSA2IDEyYzAgMy4zMSAyLjY5IDYgNiA2IDEgMCAxLjk0LS4yNSAyLjc3LS42OGwxLjQ2IDEuNDZBNy45NTEgNy45NTEgMCAwIDEgMTIgMjB6TTYuMzIgMy43N0E5Ljk4NiA5Ljk4NiAwIDAgMSAxMiAyYzUuNTIgMCAxMCA0LjQ4IDEwIDEwIDAgMi4xMS0uNjYgNC4wNy0xLjc3IDUuNjhsLTEuNDUtMS40NUE3Ljk1MSA3Ljk1MSAwIDAgMCAyMCAxMmMwLTQuNDEtMy41OS04LTgtOC0xLjU1IDAtMyAuNDUtNC4yMyAxLjIyTDYuMzIgMy43N3pNMTggMTJjMCAxLS4yNSAxLjk0LS42OCAyLjc3TDkuMjMgNi42OEMxMC4wNiA2LjI1IDExIDYgMTIgNmMzLjMxIDAgNiAyLjY5IDYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW90aW9uUGhvdG9zT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yLjg4IDcuODggMS41NCAxLjU0QzQuMTUgMTAuMjMgNCAxMS4xIDQgMTJjMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOC0zLjU5LTgtOC04Yy0uOSAwLTEuNzcuMTUtMi41OC40Mkw3Ljg5IDIuODlDOS4xNSAyLjMyIDEwLjU0IDIgMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMHMtNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0xLjQ3LjMyLTIuODYuODgtNC4xMnpNNiAxMmMwLTMuMzEgMi42OS02IDYtNnM2IDIuNjkgNiA2LTIuNjkgNi02IDYtNi0yLjY5LTYtNnptMS02LjVDNyA2LjMzIDYuMzMgNyA1LjUgN1M0IDYuMzMgNCA1LjUgNC42NyA0IDUuNSA0IDcgNC42NyA3IDUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW90aW9uUGhvdG9zUGF1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yLjg4IDcuODggMS41NCAxLjU0QzQuMTUgMTAuMjMgNCAxMS4xIDQgMTJjMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOC0zLjU5LTgtOC04Yy0uOSAwLTEuNzcuMTUtMi41OC40Mkw3Ljg5IDIuODlDOS4xNSAyLjMyIDEwLjU0IDIgMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMHMtNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0xLjQ3LjMyLTIuODYuODgtNC4xMnpNNyA1LjVDNyA2LjMzIDYuMzMgNyA1LjUgN1M0IDYuMzMgNCA1LjUgNC42NyA0IDUuNSA0IDcgNC42NyA3IDUuNXptNSAuNWMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6bS0xIDlIOVY5aDJ2NnptNCAwaC0yVjloMnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3Rpb25QaG90b3NQYXVzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMmMwIDUuNTItNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0xLjE5LjIyLTIuMzIuNi0zLjM4bDEuODguNjhDNC4xNyAxMC4xNCA0IDExLjA1IDQgMTJjMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOC0zLjU5LTgtOC04Yy0uOTUgMC0xLjg1LjE3LTIuNjkuNDhsLS42OC0xLjg5QzkuNjkgMi4yMiAxMC44MiAyIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTB6TTUuNSA0QzQuNjcgNCA0IDQuNjcgNCA1LjVTNC42NyA3IDUuNSA3IDcgNi4zMyA3IDUuNSA2LjMzIDQgNS41IDR6TTExIDE2VjhIOXY4aDJ6bTQgMFY4aC0ydjhoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW92aWVDcmVhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDQgMiA0aC0zbC0yLTRoLTJsMiA0aC0zbC0yLTRIOGwyIDRIN0w1IDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW92aWVGaWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCA0IDIgM2gtM2wtMi0zaC0ybDIgM2gtM2wtMi0zSDhsMiAzSDdMNSA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRoLTR6bS02Ljc1IDExLjI1TDEwIDE4bC0xLjI1LTIuNzVMNiAxNGwyLjc1LTEuMjVMMTAgMTBsMS4yNSAyLjc1TDE0IDE0bC0yLjc1IDEuMjV6bTUuNjktMy4zMUwxNiAxNGwtLjk0LTIuMDZMMTMgMTFsMi4wNi0uOTRMMTYgOGwuOTQgMi4wNkwxOSAxMWwtMi4wNi45NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek02LjUgOUgxMWMuNTUgMCAxIC40NSAxIDF2NWgtMS41di00LjVoLTF2M0g4di0zSDdWMTVINS41di01YzAtLjU1LjQ1LTEgMS0xem05IDZIMTRWOWgzLjVjLjU1IDAgMSAuNDUgMSAxdjIuNWMwIC41NS0uNDUgMS0xIDFoLTJWMTV6bTAtM0gxN3YtMS41aC0xLjVWMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE11c2ljTm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDN2MTAuNTVjLS41OS0uMzQtMS4yNy0uNTUtMi0uNTUtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00VjdoNFYzaC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNdXNpY09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMjcgMyAzIDQuMjdsOSA5di4yOGMtLjU5LS4zNC0xLjI3LS41NS0yLS41NS0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTR2LTEuNzNMMTkuNzMgMjEgMjEgMTkuNzMgNC4yNyAzek0xNCA3aDRWM2gtNnY1LjE4bDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmF0dXJlUGVvcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuMTcgOS4xN2MwLTMuODctMy4xMy03LTctN3MtNyAzLjEzLTcgN0E2Ljk4IDYuOTggMCAwIDAgMTQgMTYuMDZWMjBINnYtM2gxdi00YzAtLjU1LS40NS0xLTEtMUgzYy0uNTUgMC0xIC40NS0xIDF2NGgxdjVoMTZ2LTJoLTN2LTMuODhhNyA3IDAgMCAwIDYuMTctNi45NXpNNC41IDExYy44MyAwIDEuNS0uNjcgMS41LTEuNVM1LjMzIDggNC41IDggMyA4LjY3IDMgOS41IDMuNjcgMTEgNC41IDExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROYXR1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxNi4xMmE3IDcgMCAwIDAgNi4xNy02Ljk1YzAtMy44Ny0zLjEzLTctNy03cy03IDMuMTMtNyA3QTYuOTggNi45OCAwIDAgMCAxMSAxNi4wNlYyMEg1djJoMTR2LTJoLTZ2LTMuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5hdmlnYXRlQmVmb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNDEgNy40MSAxNCA2bC02IDYgNiA2IDEuNDEtMS40MUwxMC44MyAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmF2aWdhdGVOZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgNiA4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbGV0dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwYTIuNSAyLjUgMCAwIDAgMi41LTIuNWMwLS42MS0uMjMtMS4yLS42NC0xLjY3YS41MjguNTI4IDAgMCAxLS4xMy0uMzNjMC0uMjguMjItLjUuNS0uNUgxNmMzLjMxIDAgNi0yLjY5IDYtNiAwLTQuOTYtNC40OS05LTEwLTl6bTUuNSAxMWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bS0zLTRjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA2IDE0LjUgNnMxLjUuNjcgMS41IDEuNVMxNS4zMyA5IDE0LjUgOXpNNSAxMS41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41UzcuMzMgMTMgNi41IDEzIDUgMTIuMzMgNSAxMS41em02LTRjMCAuODMtLjY3IDEuNS0xLjUgMS41UzggOC4zMyA4IDcuNSA4LjY3IDYgOS41IDZzMS41LjY3IDEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbm9yYW1hRmlzaEV5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYW5vcmFtYUhvcml6b250YWxTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS40MyA0Yy0uMSAwLS4yLjAyLS4zMS4wNkMxOC4xOCA1LjE2IDE1LjA5IDUuNyAxMiA1LjdzLTYuMTgtLjU1LTkuMTItMS42NEEuOTQuOTQgMCAwIDAgMi41NyA0Yy0uMzQgMC0uNTcuMjMtLjU3LjYzdjE0Ljc1YzAgLjM5LjIzLjYyLjU3LjYyLjEgMCAuMi0uMDIuMzEtLjA2IDIuOTQtMS4xIDYuMDMtMS42NCA5LjEyLTEuNjRzNi4xOC41NSA5LjEyIDEuNjRjLjExLjA0LjIxLjA2LjMxLjA2LjMzIDAgLjU3LS4yMy41Ny0uNjNWNC42M2MwLS40LS4yNC0uNjMtLjU3LS42M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFub3JhbWFIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNi41NHYxMC45MWMtMi42LS43Ny01LjI4LTEuMTYtOC0xLjE2LTIuNzIgMC01LjQuMzktOCAxLjE2VjYuNTRjMi42Ljc3IDUuMjggMS4xNiA4IDEuMTYgMi43Mi4wMSA1LjQtLjM4IDgtMS4xNk0yMS40MyA0Yy0uMSAwLS4yLjAyLS4zMS4wNkMxOC4xOCA1LjE2IDE1LjA5IDUuNyAxMiA1LjdjLTMuMDkgMC02LjE4LS41NS05LjEyLTEuNjRBLjk0Ljk0IDAgMCAwIDIuNTcgNGMtLjM0IDAtLjU3LjIzLS41Ny42M3YxNC43NWMwIC4zOS4yMy42Mi41Ny42Mi4xIDAgLjItLjAyLjMxLS4wNiAyLjk0LTEuMSA2LjAzLTEuNjQgOS4xMi0xLjY0IDMuMDkgMCA2LjE4LjU1IDkuMTIgMS42NC4xMS4wNC4yMS4wNi4zMS4wNi4zMyAwIC41Ny0uMjMuNTctLjYzVjQuNjNjMC0uNC0uMjQtLjYzLS41Ny0uNjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbm9yYW1hUGhvdG9zcGhlcmVTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi40OSA4LjUxYy0uNDctLjIzLS45My0uNDQtMS40LS42NEMxOS41MiA0LjQxIDE2LjA1IDIgMTIgMlM0LjQ3IDQuNDEgMi45IDcuODhjLS40Ny4yLS45My40MS0xLjQuNjMtLjMxLjE1LS41LjQ4LS41LjgzdjUuMzJjMCAuMzUuMTkuNjguNTEuODMuNDcuMjMuOTMuNDQgMS4zOS42NCAzLjU1IDcuODMgMTQuNjUgNy44MiAxOC4yIDAgLjQ3LS4yLjkzLS40MSAxLjM5LS42My4zMS0uMTcuNTEtLjQ5LjUxLS44NFY5LjM0YS45MS45MSAwIDAgMC0uNTEtLjgzek0xMiAzLjhjMi42IDAgNC45MSAxLjIzIDYuNDEgMy4xMi00LjEtMS4xOS04LjQ4LTEuMjYtMTIuODMuMDFDNy4wOCA1LjAzIDkuNCAzLjggMTIgMy44ek01LjYgMTcuMDhjNC4xOSAxLjIyIDguNTcgMS4yMyAxMi44Mi0uMDFhOC4xMzYgOC4xMzYgMCAwIDEtMTIuODIuMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbm9yYW1hUGhvdG9zcGhlcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS40IDExLjMydjIuOTNjLS4xLjA1LTIuMTcuODUtMy4zMyAxLjE3LS45NC4yNi0zLjg0LjczLTYuMDcuNzMtMy43IDAtNy0uNy05LjE2LTEuOC0uMDgtLjA0LS4xNi0uMDYtLjI0LS4xVjkuNzZjNi4wMi0yLjg0IDEyLjYtMi45MiAxOC44IDB2MS41NnptLTkuMzkgOC44OGMtMi41IDAtNC44Ny0xLjE1LTYuNDEtMy4xMiA0LjE5IDEuMjIgOC41NyAxLjIzIDEyLjgyLS4wMWE4LjEzNiA4LjEzNiAwIDAgMS02LjQxIDMuMTN6TTEyIDMuOGMyLjYgMCA0LjkxIDEuMjMgNi40MSAzLjEyLTQuMS0xLjE5LTguNDgtMS4yNi0xMi44My4wMUM3LjA4IDUuMDMgOS40IDMuOCAxMiAzLjh6bTEwLjQ5IDQuNzFjLS40Ny0uMjMtLjkzLS40NC0xLjQtLjY0QzE5LjUyIDQuNDEgMTYuMDUgMiAxMiAyUzQuNDcgNC40MSAyLjkgNy44OGMtLjQ3LjItLjkzLjQxLTEuNC42My0uMzEuMTUtLjUuNDgtLjUuODN2NS4zMmMwIC4zNS4xOS42OC41MS44My40Ny4yMy45My40NCAxLjM5LjY0IDMuNTUgNy44MyAxNC42NSA3LjgyIDE4LjIgMCAuNDctLjIuOTMtLjQxIDEuMzktLjYzLjMxLS4xNy41MS0uNDkuNTEtLjg0VjkuMzRhLjkxLjkxIDAgMCAwLS41MS0uODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbm9yYW1hVmVydGljYWxTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS45MyAyMS4xMmMtMS4xLTIuOTQtMS42NC02LjAzLTEuNjQtOS4xMnMuNTUtNi4xOCAxLjY0LTkuMTJjLjA1LS4xMS4wNy0uMjIuMDctLjMxIDAtLjM0LS4yNC0uNTctLjY0LS41N0g0LjYyYy0uNCAwLS42My4yMy0uNjMuNTcgMCAuMS4wMi4yLjA2LjMxQzUuMTYgNS44MiA1LjcgOC45MSA1LjcgMTJzLS41NSA2LjE4LTEuNjQgOS4xMmMtLjA1LjExLS4wNy4yMi0uMDcuMzEgMCAuMzMuMjMuNTcuNjMuNTdoMTQuNzVjLjM5IDAgLjYzLS4yNC42My0uNTcgMC0uMS0uMDItLjItLjA3LS4zMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFub3JhbWFWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljk0IDIxLjEyYy0xLjEtMi45NC0xLjY0LTYuMDMtMS42NC05LjEyIDAtMy4wOS41NS02LjE4IDEuNjQtOS4xMmEuOTQuOTQgMCAwIDAgLjA2LS4zMWMwLS4zNC0uMjMtLjU3LS42My0uNTdINC42M2MtLjQgMC0uNjMuMjMtLjYzLjU3IDAgLjEuMDIuMi4wNi4zMUM1LjE2IDUuODIgNS43MSA4LjkxIDUuNzEgMTJjMCAzLjA5LS41NSA2LjE4LTEuNjQgOS4xMi0uMDUuMTEtLjA3LjIyLS4wNy4zMSAwIC4zMy4yMy41Ny42My41N2gxNC43NWMuMzkgMCAuNjMtLjI0LjYzLS41Ny0uMDEtLjEtLjAzLS4yLS4wNy0uMzF6TTYuNTQgMjBjLjc3LTIuNiAxLjE2LTUuMjggMS4xNi04IDAtMi43Mi0uMzktNS40LTEuMTYtOGgxMC45MWMtLjc3IDIuNi0xLjE2IDUuMjgtMS4xNiA4IDAgMi43Mi4zOSA1LjQgMS4xNiA4SDYuNTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbm9yYW1hV2lkZUFuZ2xlU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGMtMi43MyAwLTUuMjIuMjQtNy45NS43MmwtLjkzLjE2LS4yNS45QzIuMjkgNy44NSAyIDkuOTMgMiAxMnMuMjkgNC4xNS44NyA2LjIybC4yNS44OS45My4xNmMyLjczLjQ5IDUuMjIuNzMgNy45NS43M3M1LjIyLS4yNCA3Ljk1LS43MmwuOTMtLjE2LjI1LS44OWMuNTgtMi4wOC44Ny00LjE2Ljg3LTYuMjNzLS4yOS00LjE1LS44Ny02LjIybC0uMjUtLjg5LS45My0uMTZDMTcuMjIgNC4yNCAxNC43MyA0IDEyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhbm9yYW1hV2lkZUFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMyLjQ1IDAgNC43MS4yIDcuMjkuNjRBMjEgMjEgMCAwIDEgMjAgMTJhMjEgMjEgMCAwIDEtLjcxIDUuMzZjLTIuNTguNDQtNC44NC42NC03LjI5LjY0cy00LjcxLS4yLTcuMjktLjY0QTIxIDIxIDAgMCAxIDQgMTJhMjEgMjEgMCAwIDEgLjcxLTUuMzZDNy4yOSA2LjIgOS41NSA2IDEyIDZtMC0yYy0yLjczIDAtNS4yMi4yNC03Ljk1LjcybC0uOTMuMTYtLjI1LjlDMi4yOSA3Ljg1IDIgOS45MyAyIDEycy4yOSA0LjE1Ljg3IDYuMjJsLjI1Ljg5LjkzLjE2YzIuNzMuNDkgNS4yMi43MyA3Ljk1LjczczUuMjItLjI0IDcuOTUtLjcybC45My0uMTYuMjUtLjg5Yy41OC0yLjA4Ljg3LTQuMTYuODctNi4yM3MtLjI5LTQuMTUtLjg3LTYuMjJsLS4yNS0uODktLjkzLS4xNkMxNy4yMiA0LjI0IDE0LjczIDQgMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFub3JhbWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxOFY2YzAtMS4xLS45LTItMi0ySDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJ6TTguNSAxMi41bDIuNSAzLjAxTDE0LjUgMTFsNC41IDZINWwzLjUtNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG90b0FsYnVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDJoNXY3bC0yLjUtMS41TDExIDExVjR6TTcgMThsMi4zOC0zLjE3TDExIDE3bDIuNjItMy41TDE3IDE4SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob3RvQ2FtZXJhQmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVjMS4xIDAgMiAuOSAyIDJ2MTJjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWN2MwLTEuMS45LTIgMi0yaDMuMTdMOSAzaDZsMS44MyAySDIwem0wIDE0VjdINHYxMmgxNnptLTYtNy0zIDMuNzJMOSAxM2wtMyA0aDEybC00LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob3RvQ2FtZXJhRnJvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCAxMC40OCA0LTMuOTh2MTFsLTQtMy45OFYxOGMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoMTJjMS4xIDAgMiAuOSAyIDJ2NC40OHptLTItLjc5VjZINHYxMmgxMlY5LjY5ek0xMCAxMmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTAgMWMxLjM0IDAgNCAuNjcgNCAydjFINnYtMWMwLTEuMzMgMi42Ni0yIDQtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvdG9DYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjMuMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDIgNy4xNyA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMmgtMy4xN0wxNSAySDl6bTMgMTVjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG90b0ZpbHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMDIgMTB2OUg1VjVoOVYzSDUuMDJjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTloLTJ6TTE3IDEwbC45NC0yLjA2TDIwIDdsLTIuMDYtLjk0TDE3IDRsLS45NCAyLjA2TDE0IDdsMi4wNi45NHptLTMuNzUuNzVMMTIgOGwtMS4yNSAyLjc1TDggMTJsMi43NSAxLjI1TDEyIDE2bDEuMjUtMi43NUwxNiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvdG9MaWJyYXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTZWNGMwLTEuMS0uOS0yLTItMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yem0tMTEtNCAyLjAzIDIuNzFMMTYgMTFsNCA1SDhsMy00ek0yIDZ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZIMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvdG9TaXplU2VsZWN0QWN0dWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM0MyIDMgMSA0IDEgNXYxNGMwIDEuMS45IDIgMiAyaDE4YzEgMCAyLTEgMi0yVjVjMC0xLTEtMi0yLTJ6TTUgMTdsMy41LTQuNSAyLjUgMy4wMUwxNC41IDExbDQuNSA2SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob3RvU2l6ZVNlbGVjdExhcmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE1aDJ2MmgtMnYtMnptMC00aDJ2MmgtMnYtMnptMiA4aC0ydjJjMSAwIDItMSAyLTJ6TTEzIDNoMnYyaC0yVjN6bTggNGgydjJoLTJWN3ptMC00djJoMmMwLTEtMS0yLTItMnpNMSA3aDJ2MkgxVjd6bTE2LTRoMnYyaC0yVjN6bTAgMTZoMnYyaC0ydi0yek0zIDNDMiAzIDEgNCAxIDVoMlYzem02IDBoMnYySDlWM3pNNSAzaDJ2Mkg1VjN6bS00IDh2OGMwIDEuMS45IDIgMiAyaDEyVjExSDF6bTIgOCAyLjUtMy4yMSAxLjc5IDIuMTUgMi41LTMuMjJMMTMgMTlIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvdG9TaXplU2VsZWN0U21hbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTI0IDI0SDBWMGgyNHYyNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTVoLTJ2Mmgydi0yem0wLTRoLTJ2Mmgydi0yem0wIDhoLTJ2MmMxIDAgMi0xIDItMnpNMTUgM2gtMnYyaDJWM3ptOCA0aC0ydjJoMlY3em0tMi00djJoMmMwLTEtMS0yLTItMnpNMyAyMWg4di02SDF2NGMwIDEuMS45IDIgMiAyek0zIDdIMXYyaDJWN3ptMTIgMTJoLTJ2Mmgydi0yem00LTE2aC0ydjJoMlYzem0wIDE2aC0ydjJoMnYtMnpNMyAzQzIgMyAxIDQgMSA1aDJWM3ptMCA4SDF2Mmgydi0yem04LThIOXYyaDJWM3pNNyAzSDV2MmgyVjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob3RvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTlWNWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yek04LjUgMTMuNWwyLjUgMy4wMUwxNC41IDEybDQuNSA2SDVsMy41LTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGljdHVyZUFzUGRmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS04LjUgNy41YzAgLjgzLS42NyAxLjUtMS41IDEuNUg5djJINy41VjdIMTBjLjgzIDAgMS41LjY3IDEuNSAxLjV2MXptNSAyYzAgLjgzLS42NyAxLjUtMS41IDEuNWgtMi41VjdIMTVjLjgzIDAgMS41LjY3IDEuNSAxLjV2M3ptNC0zSDE5djFoMS41VjExSDE5djJoLTEuNVY3aDN2MS41ek05IDkuNWgxdi0xSDl2MXpNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6bTEwIDUuNWgxdi0zaC0xdjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvcnRyYWl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTIuMjVjMS4yNCAwIDIuMjUtMS4wMSAyLjI1LTIuMjVTMTMuMjQgNy43NSAxMiA3Ljc1IDkuNzUgOC43NiA5Ljc1IDEwczEuMDEgMi4yNSAyLjI1IDIuMjV6bTQuNSA0YzAtMS41LTMtMi4yNS00LjUtMi4yNXMtNC41Ljc1LTQuNSAyLjI1VjE3aDl2LS43NXpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSYXdPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy4xNSAxNC4zMi41OS0yLjM2Ljc2IDMuMDRoMS40OGwxLjUtNmgtMS41bC0uNzQgMy0uNzQtM2gtMS41MmwtLjc0IDMtLjc0LTNIMTRsLjcyIDIuOXpNMS4zOSA0LjIyIDYuMTcgOUgzdjZoMS41di0yaDEuMWwuOSAySDhsLS45LTIuMWMuNS0uMy45LS44LjktMS40di0uNjdsMS40MyAxLjQzTDguNzUgMTVoMS41bC4zOC0xLjVoLjA0bDkuMTEgOS4xMSAxLjQxLTEuNDFMMi44MSAyLjgxIDEuMzkgNC4yMnpNNi41IDExLjVoLTJ2LTFoMnYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSYXdPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSA5SDN2NmgxLjV2LTJoMS4xbC45IDJIOGwtLjktMi4xYy41LS4zLjktLjguOS0xLjR2LTFDOCA5LjcgNy4zIDkgNi41IDl6bTAgMi41aC0ydi0xaDJ2MXpNMTAuMjUgOWwtMS41IDZoMS41bC4zOC0xLjVoMS43NWwuMzcgMS41aDEuNWwtMS41LTZoLTIuNXptLjc1IDMgLjI1LTFoLjVsLjI1IDFoLTF6TTE5Ljk4IDlsLS43NCAzLS43NC0zaC0xLjUybC0uNzQgMy0uNzQtM0gxNGwxLjUgNmgxLjQ4bC43Ni0zLjA0Ljc2IDMuMDRoMS40OGwxLjUtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVjZWlwdExvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjUgMy41IDE4IDJsLTEuNSAxLjVMMTUgMmwtMS41IDEuNUwxMiAybC0xLjUgMS41TDkgMiA3LjUgMy41IDYgMnYxNEgzdjNjMCAxLjY2IDEuMzQgMyAzIDNoMTJjMS42NiAwIDMtMS4zNCAzLTNWMmwtMS41IDEuNXpNMTkgMTljMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTF2LTNIOFY1aDExdjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDdoNnYySDl6TTE2IDdoMnYyaC0yek05IDEwaDZ2Mkg5ek0xNiAxMGgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlbW92ZVJlZEV5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDQuNUM3IDQuNSAyLjczIDcuNjEgMSAxMmMxLjczIDQuMzkgNiA3LjUgMTEgNy41czkuMjctMy4xMSAxMS03LjVjLTEuNzMtNC4zOS02LTcuNS0xMS03LjV6TTEyIDE3Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXptMC04Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm90YXRlOTBEZWdyZWVzQ2N3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4zNCA2LjQxLjg2IDEyLjlsNi40OSA2LjQ4IDYuNDktNi40OC02LjUtNi40OXpNMy42OSAxMi45bDMuNjYtMy42NkwxMSAxMi45bC0zLjY2IDMuNjYtMy42NS0zLjY2em0xNS42Ny02LjI2QTguOTUgOC45NSAwIDAgMCAxMyA0Vi43Nkw4Ljc2IDUgMTMgOS4yNFY2YzEuNzkgMCAzLjU4LjY4IDQuOTUgMi4wNWE3LjAwNyA3LjAwNyAwIDAgMSAwIDkuOSA2Ljk3MyA2Ljk3MyAwIDAgMS03Ljc5IDEuNDRsLTEuNDkgMS40OUMxMC4wMiAyMS42MiAxMS41MSAyMiAxMyAyMmMyLjMgMCA0LjYxLS44OCA2LjM2LTIuNjRhOC45OCA4Ljk4IDAgMCAwIDAtMTIuNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvdGF0ZTkwRGVncmVlc0N3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC42NCAxOS4zN2MzLjAzIDMuMDMgNy42NyAzLjQ0IDExLjE1IDEuMjVsLTEuNDYtMS40NmMtMi42NiAxLjQzLTYuMDQgMS4wMy04LjI4LTEuMjFhNy4wMDcgNy4wMDcgMCAwIDEgMC05LjlDNy40MiA2LjY5IDkuMjEgNi4wMyAxMSA2LjAzVjlsNC00LTQtNHYzLjAxYy0yLjMgMC00LjYxLjg3LTYuMzYgMi42My0zLjUyIDMuNTEtMy41MiA5LjIxIDAgMTIuNzN6TTExIDEzbDYgNiA2LTYtNi02LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm90YXRlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMTEgOC41MyA1LjcgNy4xMUM0LjggOC4yNyA0LjI0IDkuNjEgNC4wNyAxMWgyLjAyYy4xNC0uODcuNDktMS43MiAxLjAyLTIuNDd6TTYuMDkgMTNINC4wN2MuMTcgMS4zOS43MiAyLjczIDEuNjIgMy44OWwxLjQxLTEuNDJjLS41Mi0uNzUtLjg3LTEuNTktMS4wMS0yLjQ3em0xLjAxIDUuMzJjMS4xNi45IDIuNTEgMS40NCAzLjkgMS42MVYxNy45Yy0uODctLjE1LTEuNzEtLjQ5LTIuNDYtMS4wM0w3LjEgMTguMzJ6TTEzIDQuMDdWMUw4LjQ1IDUuNTUgMTMgMTBWNi4wOWMyLjg0LjQ4IDUgMi45NCA1IDUuOTFzLTIuMTYgNS40My01IDUuOTF2Mi4wMmMzLjk1LS40OSA3LTMuODUgNy03Ljkzcy0zLjA1LTcuNDQtNy03LjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb3RhdGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjU1IDUuNTUgMTEgMXYzLjA3QzcuMDYgNC41NiA0IDcuOTIgNCAxMnMzLjA1IDcuNDQgNyA3Ljkzdi0yLjAyYy0yLjg0LS40OC01LTIuOTQtNS01LjkxczIuMTYtNS40MyA1LTUuOTFWMTBsNC41NS00LjQ1ek0xOS45MyAxMWE3LjkwNiA3LjkwNiAwIDAgMC0xLjYyLTMuODlsLTEuNDIgMS40MmMuNTQuNzUuODggMS42IDEuMDIgMi40N2gyLjAyek0xMyAxNy45djIuMDJjMS4zOS0uMTcgMi43NC0uNzEgMy45LTEuNjFsLTEuNDQtMS40NGMtLjc1LjU0LTEuNTkuODktMi40NiAxLjAzem0zLjg5LTIuNDIgMS40MiAxLjQxYy45LTEuMTYgMS40NS0yLjUgMS42Mi0zLjg5aC0yLjAyYy0uMTQuODctLjQ4IDEuNzItMS4wMiAyLjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaHV0dGVyU3BlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDFIOXYyaDZWMXptNC4wMyA2LjM5IDEuNDItMS40MmMtLjQzLS41MS0uOS0uOTktMS40MS0xLjQxbC0xLjQyIDEuNDJBOC45NjIgOC45NjIgMCAwIDAgMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWE4Ljk5NCA4Ljk5NCAwIDAgMCA3LjAzLTE0LjYxek0xMiAyMGMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6bS0uMzItNUg2LjM1YTUuOTkyIDUuOTkyIDAgMCAwIDMuNDEgMy41NmwtLjExLS4wNiAyLjAzLTMuNXptNS45Ny00YTYuMDEyIDYuMDEyIDAgMCAwLTMuMzQtMy41NEwxMi4yNiAxMWg1LjM5em0tNy4wNCA3LjgzYy40NS4xMS45MS4xNyAxLjM5LjE3IDEuMzQgMCAyLjU3LS40NSAzLjU3LTEuMTlsLTIuMTEtMy45LTIuODUgNC45MnpNNy41NSA4Ljk5QTUuOTY1IDUuOTY1IDAgMCAwIDYgMTNjMCAuMzQuMDQuNjcuMDkgMWg0LjcyTDcuNTUgOC45OXptOC43OSA4LjE0QTUuOTQgNS45NCAwIDAgMCAxOCAxM2MwLS4zNC0uMDQtLjY3LS4wOS0xaC00LjM0bDIuNzcgNS4xM3ptLTMuMDEtOS45OEMxMi45IDcuMDYgMTIuNDYgNyAxMiA3Yy0xLjQgMC0yLjY5LjQ5LTMuNzEgMS4yOWwyLjMyIDMuNTYgMi43Mi00Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNsaWRlc2hvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDh2OGw1LTQtNS00em05LTVINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RyYWlnaHRlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDZIM2MtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTBIM1Y4aDJ2NGgyVjhoMnY0aDJWOGgydjRoMlY4aDJ2NGgyVjhoMnY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdHlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIuNTMgMTkuNjUgMS4zNC41NnYtOS4wM2wtMi40MyA1Ljg2Yy0uNDEgMS4wMi4wOCAyLjE5IDEuMDkgMi42MXptMTkuNS0zLjdMMTcuMDcgMy45OGEyLjAxMyAyLjAxMyAwIDAgMC0xLjgxLTEuMjNjLS4yNiAwLS41My4wNC0uNzkuMTVMNy4xIDUuOTVhMS45OTkgMS45OTkgMCAwIDAtMS4wOCAyLjZsNC45NiAxMS45N2ExLjk5OCAxLjk5OCAwIDAgMCAyLjYgMS4wOGw3LjM2LTMuMDVhMS45OTQgMS45OTQgMCAwIDAgMS4wOS0yLjZ6TTcuODggOC43NWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tMiAxMWMwIDEuMS45IDIgMiAyaDEuNDVsLTMuNDUtOC4zNHY2LjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTd2l0Y2hDYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0aC0zLjE3TDE1IDJIOUw3LjE3IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNSAxMS41VjEzSDl2Mi41TDUuNSAxMiA5IDguNVYxMWg2VjguNWwzLjUgMy41LTMuNSAzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXRjaFZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOS41VjZjMC0uNTUtLjQ1LTEtMS0xSDNjLS41NSAwLTEgLjQ1LTEgMXYxMmMwIC41NS40NSAxIDEgMWgxNGMuNTUgMCAxLS40NSAxLTF2LTMuNWw0IDR2LTEzbC00IDR6bS01IDZWMTNIN3YyLjVMMy41IDEyIDcgOC41VjExaDZWOC41bDMuNSAzLjUtMy41IDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGFnRmFjZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTMuNS05Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNXMuNjcgMS41IDEuNSAxLjV6bS03IDBjLjgzIDAgMS41LS42NyAxLjUtMS41UzkuMzMgOCA4LjUgOCA3IDguNjcgNyA5LjUgNy42NyAxMSA4LjUgMTF6bTMuNSA2LjVjMi4zMyAwIDQuMzEtMS40NiA1LjExLTMuNUg2Ljg5Yy44IDIuMDQgMi43OCAzLjUgNS4xMSAzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRleHR1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41MSAzLjA4IDMuMDggMTkuNTFjLjA5LjM0LjI3LjY1LjUxLjkuMjUuMjQuNTYuNDIuOS41MUwyMC45MyA0LjQ5Yy0uMTktLjY5LS43My0xLjIzLTEuNDItMS40MXpNMTEuODggMyAzIDExLjg4djIuODNMMTQuNzEgM2gtMi44M3pNNSAzYy0xLjEgMC0yIC45LTIgMnYybDQtNEg1em0xNCAxOGMuNTUgMCAxLjA1LS4yMiAxLjQxLS41OS4zNy0uMzYuNTktLjg2LjU5LTEuNDF2LTJsLTQgNGgyem0tOS43MSAwaDIuODNMMjEgMTIuMTJWOS4yOUw5LjI5IDIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaGVybW9zdGF0QXV0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDEyVjZjMC0xLjY2LTEuMzQtMy0zLTNTNSA0LjM0IDUgNnY2Yy0xLjIxLjkxLTIgMi4zNy0yIDQgMCAxLjEyLjM4IDIuMTQgMSAyLjk3VjE5aC4wMmMuOTEgMS4yMSAyLjM1IDIgMy45OCAyczMuMDYtLjc5IDMuOTgtMkgxMnYtLjAzYy42Mi0uODMgMS0xLjg1IDEtMi45NyAwLTEuNjMtLjc5LTMuMDktMi00em0tNiA0YzAtLjk0LjQ1LTEuODQgMS4yLTIuNEw3IDEzVjZjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjdsLjguNmMuNzUuNTcgMS4yIDEuNDYgMS4yIDIuNEg1ek0xOC42MiA0aC0xLjYxbC0zLjM4IDloMS41NmwuODEtMi4zaDMuNjNsLjggMi4zSDIybC0zLjM4LTl6bS0yLjE1IDUuMzkgMS4zMS0zLjcyaC4wOGwxLjMxIDMuNzJoLTIuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGltZWxhcHNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMjQgNy43NkE1Ljk3NCA1Ljk3NCAwIDAgMCAxMiA2djZsLTQuMjQgNC4yNGMyLjM0IDIuMzQgNi4xNCAyLjM0IDguNDkgMGE1Ljk5IDUuOTkgMCAwIDAtLjAxLTguNDh6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaW1lcjEwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNy43MlY5LjRsMy0xVjE4aDJWNmgtLjI1TDAgNy43MnptMjMuNzggNi42NWMtLjE0LS4yOC0uMzUtLjUzLS42My0uNzQtLjI4LS4yMS0uNjEtLjM5LTEuMDEtLjUzcy0uODUtLjI3LTEuMzUtLjM4YTYuNjQgNi42NCAwIDAgMS0uODctLjIzIDIuNjEgMi42MSAwIDAgMS0uNTUtLjI1LjcxNy43MTcgMCAwIDEtLjI4LS4zLjk3OC45NzggMCAwIDEgLjAxLS44Yy4wNi0uMTMuMTUtLjI1LjI3LS4zNC4xMi0uMS4yNy0uMTguNDUtLjI0cy40LS4wOS42NC0uMDljLjI1IDAgLjQ3LjA0LjY2LjExLjE5LjA3LjM1LjE3LjQ4LjI5LjEzLjEyLjIyLjI2LjI5LjQyLjA2LjE2LjEuMzIuMS40OWgxLjk1YTIuNTE3IDIuNTE3IDAgMCAwLS45My0xLjk3Yy0uMy0uMjUtLjY2LS40NC0xLjA5LS41OUMyMS40OSA5LjA3IDIxIDkgMjAuNDYgOWMtLjUxIDAtLjk4LjA3LTEuMzkuMjEtLjQxLjE0LS43Ny4zMy0xLjA2LjU3LS4yOS4yNC0uNTEuNTItLjY3Ljg0LS4xNi4zMi0uMjMuNjUtLjIzIDEuMDFzLjA4LjY5LjIzLjk2Yy4xNS4yOC4zNi41Mi42NC43My4yNy4yMS42LjM4Ljk4LjUzLjM4LjE0LjgxLjI2IDEuMjcuMzYuMzkuMDguNzEuMTcuOTUuMjZzLjQzLjE5LjU3LjI5Yy4xMy4xLjIyLjIyLjI3LjM0LjA1LjEyLjA3LjI1LjA3LjM5IDAgLjMyLS4xMy41Ny0uNC43Ny0uMjcuMi0uNjYuMjktMS4xNy4yOS0uMjIgMC0uNDMtLjAyLS42NC0uMDgtLjIxLS4wNS0uNC0uMTMtLjU2LS4yNGExLjMzMyAxLjMzMyAwIDAgMS0uNTktMS4xMWgtMS44OWMwIC4zNi4wOC43MS4yNCAxLjA1LjE2LjM0LjM5LjY1LjcuOTMuMzEuMjcuNjkuNDkgMS4xNS42Ni40Ni4xNy45OC4yNSAxLjU4LjI1LjUzIDAgMS4wMS0uMDYgMS40NC0uMTkuNDMtLjEzLjgtLjMxIDEuMTEtLjU0LjMxLS4yMy41NC0uNTEuNzEtLjgzLjE3LS4zMi4yNS0uNjcuMjUtMS4wNi0uMDItLjQtLjA5LS43NC0uMjQtMS4wMnptLTkuOTYtNy4zMmMtLjM0LS40LS43NS0uNy0xLjIzLS44OC0uNDctLjE4LTEuMDEtLjI3LTEuNTktLjI3LS41OCAwLTEuMTEuMDktMS41OS4yNy0uNDguMTgtLjg5LjQ3LTEuMjMuODgtLjM0LjQxLS42LjkzLS43OSAxLjU5LS4xOC42NS0uMjggMS40NS0uMjggMi4zOXYxLjkyYzAgLjk0LjA5IDEuNzQuMjggMi4zOS4xOS42Ni40NSAxLjE5LjggMS42LjM0LjQxLjc1LjcxIDEuMjMuODkuNDguMTggMS4wMS4yOCAxLjU5LjI4LjU5IDAgMS4xMi0uMDkgMS41OS0uMjguNDgtLjE4Ljg4LS40OCAxLjIyLS44OS4zNC0uNDEuNi0uOTQuNzgtMS42LjE4LS42NS4yOC0xLjQ1LjI4LTIuMzl2LTEuOTJjMC0uOTQtLjA5LTEuNzQtLjI4LTIuMzktLjE4LS42Ni0uNDQtMS4xOS0uNzgtMS41OXptLS45MiA2LjE3YzAgLjYtLjA0IDEuMTEtLjEyIDEuNTMtLjA4LjQyLS4yLjc2LS4zNiAxLjAyLS4xNi4yNi0uMzYuNDUtLjU5LjU3LS4yMy4xMi0uNTEuMTgtLjgyLjE4LS4zIDAtLjU4LS4wNi0uODItLjE4cy0uNDQtLjMxLS42LS41N2MtLjE2LS4yNi0uMjktLjYtLjM4LTEuMDItLjA5LS40Mi0uMTMtLjkzLS4xMy0xLjUzdi0yLjVjMC0uNi4wNC0xLjExLjEzLTEuNTIuMDktLjQxLjIxLS43NC4zOC0xIC4xNi0uMjUuMzYtLjQzLjYtLjU1LjI0LS4xMS41MS0uMTcuODEtLjE3LjMxIDAgLjU4LjA2LjgxLjE3LjI0LjExLjQ0LjI5LjYuNTUuMTYuMjUuMjkuNTguMzcuOTkuMDguNDEuMTMuOTIuMTMgMS41MnYyLjUxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaW1lcjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNjEgMTIuOTdjLS4xNi0uMjQtLjM2LS40Ni0uNjItLjY1YTMuMzggMy4zOCAwIDAgMC0uOTMtLjQ4Yy4zLS4xNC41Ny0uMy44LS41LjIzLS4yLjQyLS40MS41Ny0uNjQuMTUtLjIzLjI3LS40Ni4zNC0uNzEuMDgtLjI0LjExLS40OS4xMS0uNzMgMC0uNTUtLjA5LTEuMDQtLjI4LTEuNDYtLjE4LS40Mi0uNDQtLjc3LS43OC0xLjA2LS4zMy0uMjgtLjczLS41LTEuMi0uNjQtLjQ1LS4xMy0uOTctLjItMS41My0uMi0uNTUgMC0xLjA2LjA4LTEuNTIuMjQtLjQ3LjE3LS44Ny40LTEuMi42OS0uMzMuMjktLjYuNjMtLjc4IDEuMDMtLjIuMzktLjI5LjgzLS4yOSAxLjI5aDEuOThjMC0uMjYuMDUtLjQ5LjE0LS42OS4wOS0uMi4yMi0uMzguMzgtLjUyLjE3LS4xNC4zNi0uMjUuNTgtLjMzLjIyLS4wOC40Ni0uMTIuNzMtLjEyLjYxIDAgMS4wNi4xNiAxLjM2LjQ3LjMuMzEuNDQuNzUuNDQgMS4zMiAwIC4yNy0uMDQuNTItLjEyLjc0LS4wOC4yMi0uMjEuNDEtLjM4LjU3LS4xNy4xNi0uMzguMjgtLjYzLjM3LS4yNS4wOS0uNTUuMTMtLjg5LjEzSDYuNzJ2MS41N0g3LjljLjM0IDAgLjY0LjA0LjkxLjExLjI3LjA4LjUuMTkuNjkuMzUuMTkuMTYuMzQuMzYuNDQuNjEuMS4yNC4xNi41NC4xNi44NyAwIC42Mi0uMTggMS4wOS0uNTMgMS40Mi0uMzUuMzMtLjg0LjQ5LTEuNDUuNDktLjI5IDAtLjU2LS4wNC0uOC0uMTMtLjI0LS4wOC0uNDQtLjItLjYxLS4zNi0uMTctLjE2LS4zLS4zNC0uMzktLjU2LS4wOS0uMjItLjE0LS40Ni0uMTQtLjcySDQuMTljMCAuNTUuMTEgMS4wMy4zMiAxLjQ1LjIxLjQyLjUuNzcuODYgMS4wNXMuNzcuNDkgMS4yNC42My45Ni4yMSAxLjQ4LjIxYy41NyAwIDEuMDktLjA4IDEuNTgtLjIzLjQ5LS4xNS45MS0uMzggMS4yNi0uNjguMzYtLjMuNjQtLjY2Ljg0LTEuMS4yLS40My4zLS45My4zLTEuNDggMC0uMjktLjA0LS41OC0uMTEtLjg2LS4wOC0uMjUtLjE5LS41MS0uMzUtLjc2em05LjI2IDEuNGMtLjE0LS4yOC0uMzUtLjUzLS42My0uNzQtLjI4LS4yMS0uNjEtLjM5LTEuMDEtLjUzcy0uODUtLjI3LTEuMzUtLjM4YTYuNjQgNi42NCAwIDAgMS0uODctLjIzIDIuNjEgMi42MSAwIDAgMS0uNTUtLjI1LjcxNy43MTcgMCAwIDEtLjI4LS4zYy0uMDUtLjExLS4wOC0uMjQtLjA4LS4zOWEuOTQ2Ljk0NiAwIDAgMSAuMzYtLjc1Yy4xMi0uMS4yNy0uMTguNDUtLjI0cy40LS4wOS42NC0uMDljLjI1IDAgLjQ3LjA0LjY2LjExLjE5LjA3LjM1LjE3LjQ4LjI5LjEzLjEyLjIyLjI2LjI5LjQyLjA2LjE2LjEuMzIuMS40OWgxLjk1YTIuNTE3IDIuNTE3IDAgMCAwLS45My0xLjk3Yy0uMy0uMjUtLjY2LS40NC0xLjA5LS41OS0uNDMtLjE1LS45Mi0uMjItMS40Ni0uMjItLjUxIDAtLjk4LjA3LTEuMzkuMjEtLjQxLjE0LS43Ny4zMy0xLjA2LjU3LS4yOS4yNC0uNTEuNTItLjY3Ljg0LS4xNi4zMi0uMjMuNjUtLjIzIDEuMDFzLjA4LjY4LjIzLjk2Yy4xNS4yOC4zNy41Mi42NC43My4yNy4yMS42LjM4Ljk4LjUzLjM4LjE0LjgxLjI2IDEuMjcuMzYuMzkuMDguNzEuMTcuOTUuMjZzLjQzLjE5LjU3LjI5Yy4xMy4xLjIyLjIyLjI3LjM0LjA1LjEyLjA3LjI1LjA3LjM5IDAgLjMyLS4xMy41Ny0uNC43Ny0uMjcuMi0uNjYuMjktMS4xNy4yOS0uMjIgMC0uNDMtLjAyLS42NC0uMDgtLjIxLS4wNS0uNC0uMTMtLjU2LS4yNGExLjMzMyAxLjMzMyAwIDAgMS0uNTktMS4xMWgtMS44OWMwIC4zNi4wOC43MS4yNCAxLjA1LjE2LjM0LjM5LjY1LjcuOTMuMzEuMjcuNjkuNDkgMS4xNS42Ni40Ni4xNy45OC4yNSAxLjU4LjI1LjUzIDAgMS4wMS0uMDYgMS40NC0uMTkuNDMtLjEzLjgtLjMxIDEuMTEtLjU0LjMxLS4yMy41NC0uNTEuNzEtLjgzLjE3LS4zMi4yNS0uNjcuMjUtMS4wNi0uMDItLjQtLjA5LS43NC0uMjQtMS4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGltZXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDFoNnYySDl6TTEzIDh2Mi4xN2w2Ljk4IDYuOThhOC45NjMgOC45NjMgMCAwIDAtLjk1LTkuNzZsMS40Mi0xLjQyYy0uNDMtLjUxLS45LS45OS0xLjQxLTEuNDFsLTEuNDIgMS40MmE4Ljk2MiA4Ljk2MiAwIDAgMC05Ljc3LS45NkwxMC44MyA4SDEzek0yLjgxIDIuODEgMS4zOSA0LjIybDMuNCAzLjRhOC45OTQgOC45OTQgMCAwIDAgMTIuNTkgMTIuNTlsMi40IDIuNCAxLjQxLTEuNDFMMi44MSAyLjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaW1lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMWg2djJIOXpNMTkuMDMgNy4zOWwxLjQyLTEuNDJjLS40My0uNTEtLjktLjk5LTEuNDEtMS40MWwtMS40MiAxLjQyQTguOTYyIDguOTYyIDAgMCAwIDEyIDRhOSA5IDAgMCAwLTkgOWMwIDQuOTcgNC4wMiA5IDkgOWE4Ljk5NCA4Ljk5NCAwIDAgMCA3LjAzLTE0LjYxek0xMyAxNGgtMlY4aDJ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVG9uYWxpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMSAxNy45M2MtMy45NC0uNDktNy0zLjg1LTctNy45M3MzLjA1LTcuNDQgNy03LjkzdjE1Ljg2em0yLTE1Ljg2YzEuMDMuMTMgMiAuNDUgMi44Ny45M0gxM3YtLjkzek0xMyA3aDUuMjRjLjI1LjMxLjQ4LjY1LjY4IDFIMTNWN3ptMCAzaDYuNzRjLjA4LjMzLjE1LjY2LjE5IDFIMTN2LTF6bTAgOS45M1YxOWgyLjg3Yy0uODcuNDgtMS44NC44LTIuODcuOTN6TTE4LjI0IDE3SDEzdi0xaDUuOTJjLS4yLjM1LS40My42OS0uNjggMXptMS41LTNIMTN2LTFoNi45M2MtLjA0LjM0LS4xMS42Ny0uMTkgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJhbnNmb3JtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTh2LTJIOFY0aDJMNyAxIDQgNGgydjJIMnYyaDR2OGMwIDEuMS45IDIgMiAyaDh2MmgtMmwzIDMgMy0zaC0ydi0yaDR6TTEwIDhoNnY2aDJWOGMwLTEuMS0uOS0yLTItMmgtNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUdW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxN3YyaDZ2LTJIM3pNMyA1djJoMTBWNUgzem0xMCAxNnYtMmg4di0yaC04di0yaC0ydjZoMnpNNyA5djJIM3YyaDR2MmgyVjlIN3ptMTQgNHYtMkgxMXYyaDEwem0tNi00aDJWN2g0VjVoLTRWM2gtMnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWRlb0NhbWVyYUJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMC40OFY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTQuNDhsNCAzLjk4di0xMWwtNCAzLjk4ek01IDE2bDIuMzgtMy4xN0w5IDE1bDIuNjItMy41TDE1IDE2SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvQ2FtZXJhRnJvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMC40OFY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTQuNDhsNCAzLjk4di0xMWwtNCAzLjk4ek0xMCA4YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptNCA4SDZ2LS41N2MwLS44MS40OC0xLjUzIDEuMjItMS44NWE2Ljk1IDYuOTUgMCAwIDEgNS41NiAwQTIuMDEgMi4wMSAwIDAgMSAxNCAxNS40M1YxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlkZW9TdGFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNCAxOFY2aDIuOTVsLTIuMzMgOC43M0wxNi44MiAxOEg0em0xNiAwaC0yLjk1bDIuMzQtOC43M0w3LjE4IDZIMjB2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZXdDb21meSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNHY3aDIwVjRIMnptOCAxNmgxMnYtN0gxMHY3em0tOCAwaDZ2LTdIMnY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWaWV3Q29tcGFjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMThoMi41di0yLjVINFYxOHptMC00Ljc1aDIuNXYtMi41SDR2Mi41ek00IDguNWgyLjVWNkg0djIuNXpNMTcuNSA2djIuNUgyMFY2aC0yLjV6TTEzIDguNWgyLjVWNkgxM3YyLjV6bTQuNSA5LjVIMjB2LTIuNWgtMi41VjE4em0wLTQuNzVIMjB2LTIuNWgtMi41djIuNXpNOC41IDE4SDExdi0yLjVIOC41VjE4em00LjUgMGgyLjV2LTIuNUgxM1YxOHpNOC41IDguNUgxMVY2SDguNXYyLjV6bTQuNSA0Ljc1aDIuNXYtMi41SDEzdjIuNXptLTQuNSAwSDExdi0yLjVIOC41djIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmlnbmV0dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOSAxNWMtNC40MiAwLTgtMi42OS04LTZzMy41OC02IDgtNiA4IDIuNjkgOCA2LTMuNTggNi04IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZycGFubyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjY5IDQuMDVDMTguNjYgNC43MyAxNS44NiA1LjUgMTIgNS41Yy0zLjg5IDAtNi45NS0uODQtOC42OS0xLjQzQS45OTMuOTkzIDAgMCAwIDIgNS4wMlYxOWMwIC42OC42NiAxLjE3IDEuMzEuOTVDNS4zNiAxOS4yNiA4LjEgMTguNSAxMiAxOC41YzMuODcgMCA2LjY2Ljc2IDguNjkgMS40NUEuOTk5Ljk5OSAwIDAgMCAyMiAxOVY1YzAtLjY4LS42Ni0xLjE2LTEuMzEtLjk1ek0xMiAxNWMtMi4zNCAwLTQuNTIuMTUtNi41Mi40MWwzLjY5LTQuNDIgMiAyLjRMMTQgMTBsNC41MSA1LjRjLTEuOTktLjI1LTQuMjEtLjQtNi41MS0uNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2JBdXRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi44NSAxMi42NWgyLjNMOCA5bC0xLjE1IDMuNjV6TTIyIDdsLTEuMiA2LjI5TDE5LjMgN2gtMS42bC0xLjQ5IDYuMjlMMTUgN2gtLjc2QzEyLjc3IDUuMTcgMTAuNTMgNCA4IDRjLTQuNDIgMC04IDMuNTgtOCA4czMuNTggOCA4IDhjMy4xMyAwIDUuODQtMS44MSA3LjE1LTQuNDNsLjEuNDNIMTdsMS41LTYuMUwyMCAxNmgxLjc1bDIuMDUtOUgyMnptLTExLjcgOS0uNy0ySDYuNGwtLjcgMkgzLjhMNyA3aDJsMy4yIDloLTEuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2JDbG91ZHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4zNiAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNCA5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0QTUuOTk0IDUuOTk0IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY0LTQuOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdiSW5jYW5kZXNjZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMy41NSAxOC41NCAxLjQxIDEuNDEgMS43OS0xLjgtMS40MS0xLjQxLTEuNzkgMS44ek0xMSAyMi40NWgyVjE5LjVoLTJ2Mi45NXpNNCAxMC41SDF2Mmgzdi0yem0xMS00LjE5VjEuNUg5djQuODFDNy4yMSA3LjM1IDYgOS4yOCA2IDExLjVjMCAzLjMxIDIuNjkgNiA2IDZzNi0yLjY5IDYtNmMwLTIuMjItMS4yMS00LjE1LTMtNS4xOXptNSA0LjE5djJoM3YtMmgtM3ptLTIuNzYgNy42NiAxLjc5IDEuOCAxLjQxLTEuNDEtMS44LTEuNzktMS40IDEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2JJcmlkZXNjZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE0LjVoMTR2LTZINXY2ek0xMSAuNTVWMy41aDJWLjU1aC0yem04LjA0IDIuNS0xLjc5IDEuNzkgMS40MSAxLjQxIDEuOC0xLjc5LTEuNDItMS40MXpNMTMgMjIuNDVWMTkuNWgtMnYyLjk1aDJ6bTcuNDUtMy45MS0xLjgtMS43OS0xLjQxIDEuNDEgMS43OSAxLjggMS40Mi0xLjQyek0zLjU1IDQuNDZsMS43OSAxLjc5IDEuNDEtMS40MS0xLjc5LTEuNzktMS40MSAxLjQxem0xLjQxIDE1LjQ5IDEuNzktMS44LTEuNDEtMS40MS0xLjc5IDEuNzkgMS40MSAxLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYlNoYWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMnYyLjVsNS41IDUuNUgyMnptMCA4aDNsLTMtM3pNOCA0bC02IDZoMnYxMGg4VjEwaDJMOCA0em0xIDEwSDd2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYlN1bm55IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNi43NiA0Ljg0LTEuOC0xLjc5LTEuNDEgMS40MSAxLjc5IDEuNzkgMS40Mi0xLjQxek00IDEwLjVIMXYyaDN2LTJ6bTktOS45NWgtMlYzLjVoMlYuNTV6bTcuNDUgMy45MS0xLjQxLTEuNDEtMS43OSAxLjc5IDEuNDEgMS40MSAxLjc5LTEuNzl6bS0zLjIxIDEzLjcgMS43OSAxLjggMS40MS0xLjQxLTEuOC0xLjc5LTEuNCAxLjR6TTIwIDEwLjV2Mmgzdi0yaC0zem0tOC01Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnptLTEgMTYuOTVoMlYxOS41aC0ydjIuOTV6bS03LjQ1LTMuOTEgMS40MSAxLjQxIDEuNzktMS44LTEuNDEtMS40MS0xLjc5IDEuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2JUd2lnaGxpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi45NTQgOC42NiAyLjEyLTIuMTIgMS40MTUgMS40MTQtMi4xMyAyLjEyek0xNy45IDE0Yy0uNS0yLjg1LTIuOTUtNS01LjktNXMtNS40NSAyLjE1LTUuOSA1aDExLjh6TTIgMTZoMjB2NEgyem05LTEyaDJ2M2gtMnpNMy41NCA3LjkyNSA0Ljk1NCA2LjUxbDIuMTIyIDIuMTIyLTEuNDE1IDEuNDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYlR3aWxpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuOTU1IDguNjYyIDIuMTItMi4xMjIgMS40MTYgMS40MTQtMi4xMjEgMi4xMjJ6TTIgMThoMjB2Mkgyek0xMSA0aDJ2M2gtMnpNMy41NDMgNy45MjUgNC45NTcgNi41MWwyLjEyMSAyLjEyLTEuNDE0IDEuNDE1ek01IDE2aDE0YzAtMy44Ny0zLjEzLTctNy03cy03IDMuMTMtNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQzNjAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3QzYuNDggNyAyIDkuMjQgMiAxMmMwIDIuMjQgMi45NCA0LjEzIDcgNC43N1YyMGw0LTQtNC00djIuNzNjLTMuMTUtLjU2LTUtMS45LTUtMi43MyAwLTEuMDYgMy4wNC0zIDgtM3M4IDEuOTQgOCAzYzAgLjczLTEuNDYgMS44OS00IDIuNTN2Mi4wNWMzLjUzLS43NyA2LTIuNTMgNi00LjU4IDAtMi43Ni00LjQ4LTUtMTAtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkQnVzaW5lc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxN2gydi0zaDF2LTJsLTEtNUgybC0xIDV2MmgxdjZoOXYtNmg0djN6bS02IDFINHYtNGg1djR6TTIgNGgxNXYySDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4di0zaC0ydjNoLTN2MmgzdjNoMnYtM2gzdi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRMb2NhdGlvbkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDF2M2gzdjJoLTN2M2gtMlY2aC0zVjRoM1YxaDJ6bS04IDEyYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMi05Ljc1VjdoM3YzaDIuOTJjLjA1LjM5LjA4Ljc5LjA4IDEuMiAwIDMuMzItMi42NyA3LjI1LTggMTEuOC01LjMzLTQuNTUtOC04LjQ4LTgtMTEuOEM0IDYuMjIgNy44IDMgMTIgM2MuNjggMCAxLjM1LjA4IDIgLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM4LjE0IDIgNSA1LjE0IDUgOWMwIDUuMjUgNyAxMyA3IDEzczctNy43NSA3LTEzYzAtMy44Ni0zLjE0LTctNy03em00IDhoLTN2M2gtMnYtM0g4VjhoM1Y1aDJ2M2gzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZFJvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOHYtM2gtMnYzaC0zdjJoM3YzaDJ2LTNoM3YtMnpNMTggNGgydjloLTJ6TTQgNGgydjE2SDR6TTExIDRoMnY0aC0yek0xMSAxMGgydjRoLTJ6TTExIDE2aDJ2NGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWdyaWN1bHR1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41IDEyYy45MyAwIDEuNzguMjggMi41Ljc2VjhjMC0xLjEtLjktMi0yLTJoLTYuMjlsLTEuMDYtMS4wNiAxLjQxLTEuNDEtLjcxLS43MS0zLjUzIDMuNTMuNzEuNzEgMS40MS0xLjQxTDEzIDYuNzFWOWMwIDEuMS0uOSAyLTIgMmgtLjU0QTUuOTggNS45OCAwIDAgMSAxMiAxNWMwIC4zNC0uMDQuNjctLjA5IDFoMy4xNGMuMjUtMi4yNSAyLjE0LTQgNC40NS00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41IDEzYy0xLjkzIDAtMy41IDEuNTctMy41IDMuNXMxLjU3IDMuNSAzLjUgMy41IDMuNS0xLjU3IDMuNS0zLjUtMS41Ny0zLjUtMy41LTMuNXptMCA1Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNNCA5aDVjMC0xLjEtLjktMi0yLTJINGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMXpNOS44MyAxMy44MmwtLjE4LS40Ny45My0uMzVhNC45MiA0LjkyIDAgMCAwLTIuMzEtMi40M2wtLjQuODktLjQ2LS4yMS40LS45QzcuMjYgMTAuMTMgNi42NCAxMCA2IDEwYy0uNTMgMC0xLjA0LjExLTEuNTIuMjZsLjM0LjkxLS40Ny4xOC0uMzUtLjkzYTQuOTIgNC45MiAwIDAgMC0yLjQzIDIuMzFsLjg5LjQtLjIxLjQ2LS45LS40QzEuMTMgMTMuNzQgMSAxNC4zNiAxIDE1YzAgLjUzLjExIDEuMDQuMjYgMS41MmwuOTEtLjM0LjE4LjQ3LS45My4zNWE0LjkyIDQuOTIgMCAwIDAgMi4zMSAyLjQzbC40LS44OS40Ni4yMS0uNC45Yy41NS4yMiAxLjE3LjM1IDEuODEuMzUuNTMgMCAxLjA0LS4xMSAxLjUyLS4yNmwtLjM0LS45MS40Ny0uMTguMzUuOTNhNC45MiA0LjkyIDAgMCAwIDIuNDMtMi4zMWwtLjg5LS40LjIxLS40Ni45LjRjLjIyLS41NS4zNS0xLjE3LjM1LTEuODEgMC0uNTMtLjExLTEuMDQtLjI2LTEuNTJsLS45MS4zNHptLTIuNjggMy45NWMtMS41My42My0zLjI5LS4wOS0zLjkyLTEuNjItLjYzLTEuNTMuMDktMy4yOSAxLjYyLTMuOTIgMS41My0uNjMgMy4yOS4wOSAzLjkyIDEuNjIuNjQgMS41My0uMDkgMy4yOS0xLjYyIDMuOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTdG9wcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjIxIDkuMjFDMTUuOTMgMTAuNzggMTMuNDUgMTMuMyAxMyAxN2gydjJIOXYtMmgyYy0uNS00LjUtNC4zNy04LTktOFY3YzQuMzkgMCA4LjIyIDIuNTUgMTAgNi4zIDEuMTMtMi40MyAyLjk5LTQuMjUgNC43OC01LjUyTDE0IDVoN3Y3bC0yLjc5LTIuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNCAyIDIwaDE3bDMtMTZoLTl6bTEuNSAxMGEyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWx0Um91dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05Ljc4IDExLjE2LTEuNDIgMS40MmE3LjI4MiA3LjI4MiAwIDAgMS0xLjc5LTIuOTRsMS45NC0uNDljLjMyLjg5Ljc3IDEuNSAxLjI3IDIuMDF6TTExIDYgNyAyIDMgNmgzLjAyYy4wMi44MS4wOCAxLjU0LjE5IDIuMTdsMS45NC0uNDlDOC4wOCA3LjIgOC4wMyA2LjYzIDguMDIgNkgxMXptMTAgMC00LTQtNCA0aDIuOTljLS4xIDMuNjgtMS4yOCA0Ljc1LTIuNTQgNS44OC0uNS40NC0xLjAxLjkyLTEuNDUgMS41NS0uMzQtLjQ5LS43My0uODgtMS4xMy0xLjI0TDkuNDYgMTMuNmMuOTMuODUgMS41NCAxLjU0IDEuNTQgMy40djVoMnYtNWMwLTIuMDIuNzEtMi42NiAxLjc5LTMuNjMgMS4zOC0xLjI0IDMuMDgtMi43OCAzLjItNy4zN0gyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXRtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA5djEuNWgyLjI1VjE1aDEuNXYtNC41SDE0Vjl6TTYgOUgzYy0uNTUgMC0xIC40NS0xIDF2NWgxLjV2LTEuNWgyVjE1SDd2LTVjMC0uNTUtLjQ1LTEtMS0xem0tLjUgM2gtMnYtMS41aDJWMTJ6TTIxIDloLTQuNWMtLjU1IDAtMSAuNDUtMSAxdjVIMTd2LTQuNWgxVjE0aDEuNXYtMy41MWgxVjE1SDIydi01YzAtLjU1LS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXR0cmFjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC40MyAxOC43NWMuMzctLjQ2Ljk0LS43NSAxLjU3LS43NS42MyAwIDEuMTkuMjkgMS41Ni43NS4zOS0uMDkuNzYtLjIxIDEuMTItLjM2bC0xLjQyLTMuMThhMy41MjIgMy41MjIgMCAwIDEtMi41Ni0uMDJsLTEuNDMgMy4xOWMuMzguMTYuNzYuMjkgMS4xNi4zN3pNNS4xNSAxMGE3LjA2IDcuMDYgMCAwIDAgLjA4IDRjLjYzLjA1IDEuMjIuNCAxLjU2Ljk5LjMzLjU3LjM1IDEuMjMuMTEgMS43OS4yNy4yNy41Ni41My44Ny43NmwxLjUyLTMuMzljLS40Ny0uNTgtLjc1LTEuMzItLjc1LTIuMTMgMC0xLjg5IDEuNTUtMy40MSAzLjQ2LTMuNDFzMy40NiAxLjUzIDMuNDYgMy40MWMwIC44Mi0uMjkgMS41Ny0uNzggMi4xNmwxLjUgMy4zNWMuMzItLjI0LjYyLS41LjktLjc5LS4yMi0uNTUtLjItMS4yLjEyLTEuNzUuMzMtLjU3LjktLjkyIDEuNTItLjk5YTcuMDI1IDcuMDI1IDAgMCAwIC4wOS00LjAyYy0uNjQtLjA0LTEuMjYtLjM5LTEuNi0xLS4zNi0uNjItLjM1LTEuMzYtLjAzLTEuOTUtLjkxLS45OC0yLjEtMS43MS0zLjQ0LTIuMDVDMTMuMzkgNS42IDEyLjc0IDYgMTIgNnMtMS4zOS0uNDEtMS43NC0xLjAxYTcuMDUzIDcuMDUzIDAgMCAwLTMuNDQgMi4wM2MuMzMuNi4zNSAxLjM1LS4wMiAxLjk4LS4zNS42Mi0uOTkuOTctMS42NSAxem0tMS4zLS40MmMtLjc4LS42LTEuMDItMS43LS41MS0yLjU4LjUxLS44OCAxLjU4LTEuMjMgMi40OS0uODVhOC41MyA4LjUzIDAgMCAxIDQuMTgtMi40MkMxMC4xNSAyLjc1IDEwLjk5IDIgMTIgMnMxLjg1Ljc1IDEuOTggMS43M2MxLjYzLjM5IDMuMDcgMS4yNCA0LjE4IDIuNDJhMS45OSAxLjk5IDAgMCAxIDIuNDkuODVjLjUxLjg4LjI3IDEuOTgtLjUxIDIuNTguMjMuNzcuMzUgMS41OC4zNSAyLjQycy0uMTIgMS42NS0uMzUgMi40MmMuNzguNiAxLjAyIDEuNy41MSAyLjU4LS41MS44OC0xLjU4IDEuMjMtMi40OS44NS0uNC40My0uODUuODEtMS4zNCAxLjE1bDEuMzQgM0gxNi4zbC0uOTctMi4xN2MtLjQzLjE4LS44OC4zMy0xLjM0LjQ0LS4xNC45OC0uOTggMS43My0xLjk5IDEuNzNzLTEuODUtLjc1LTEuOTgtMS43M2MtLjQ4LS4xMi0uOTQtLjI3LTEuMzgtLjQ2TDcuNjYgMjJINS43OGwxLjM2LTMuMDNhOC43MiA4LjcyIDAgMCAxLTEuMy0xLjEyYy0uOTIuMzgtMS45OS4wMy0yLjUtLjg1cy0uMjctMS45OC41MS0yLjU4Yy0uMjMtLjc3LS4zNS0xLjU4LS4zNS0yLjQycy4xMi0xLjY1LjM1LTIuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhZGdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgN2gtNVY0YzAtMS4xLS45LTItMi0yaC0yYy0xLjEgMC0yIC45LTIgMnYzSDRjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnpNOSAxMmMuODMgMCAxLjUuNjcgMS41IDEuNVM5LjgzIDE1IDkgMTVzLTEuNS0uNjctMS41LTEuNVM4LjE3IDEyIDkgMTJ6bTMgNkg2di0uNzVjMC0xIDItMS41IDMtMS41czMgLjUgMyAxLjVWMTh6bTEtOWgtMlY0aDJ2NXptNSA3LjVoLTRWMTVoNHYxLjV6bTAtM2gtNFYxMmg0djEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmFrZXJ5RGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE5LjI4IDE2LjM0IDE3LjQ2IDE1cy4zMi0uNTkuOTYtMS43OGEuOTQ0Ljk0NCAwIDAgMSAxLjYgMGwuODEgMS4yNmMuMTkuMy4yMS42OC4wNiAxbC0uMjIuNDdhLjk0Ljk0IDAgMCAxLTEuMzkuMzl6bS0xNC41NiAwYS45NDYuOTQ2IDAgMCAxLTEuMzktLjM4bC0uMjMtLjQ3Yy0uMTUtLjMyLS4xMy0uNy4wNi0xbC44MS0xLjI2YS45NDQuOTQ0IDAgMCAxIDEuNiAwYy42NSAxLjE4Ljk3IDEuNzcuOTcgMS43N2wtMS44MiAxLjM0em0xMC42NC02Ljk3Yy4wOS0uNjguNzMtMS4wNiAxLjI3LS43NWwxLjU5LjljLjQ2LjI2LjYzLjkxLjM2IDEuNDFMMTYuNSAxNWgtMS44bC42Ni01LjYzem0tNi43MyAwTDkuMyAxNUg3LjVsLTIuMDktNC4wOGMtLjI3LS41LS4xLTEuMTUuMzYtMS40MWwxLjU5LS45Yy41My0uMyAxLjE4LjA4IDEuMjcuNzZ6TTEzLjggMTVoLTMuNmwtLjc0LTYuODhjLS4wNy0uNTkuMzUtMS4xMi44OC0xLjEyaDMuM2MuNTMgMCAuOTQuNTMuODggMS4xMkwxMy44IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCZWVuaGVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDFINWMtMS4xIDAtMS45OS45LTEuOTkgMkwzIDE1LjkzYzAgLjY5LjM1IDEuMy44OCAxLjY2TDEyIDIzbDguMTEtNS40MWMuNTMtLjM2Ljg4LS45Ny44OC0xLjY2TDIxIDNjMC0xLjEtLjktMi0yLTJ6bS05IDE1LTUtNSAxLjQxLTEuNDFMMTAgMTMuMTdsNy41OS03LjU5TDE5IDdsLTkgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmlrZVNjb290ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNGguNzRMOC44MiA1LjU2QTIuMDA5IDIuMDA5IDAgMCAwIDYuODcgNEgzdjJoMy44N2wxLjQyIDYuMjVoLS4wMUE2LjAwOCA2LjAwOCAwIDAgMCA0LjA5IDE3SDB2Mmg2di0xYzAtMi4yMSAxLjc5LTQgNC00ek0xOSA4aC0uODJsLTEuMzUtMy42OUExLjk3NiAxLjk3NiAwIDAgMCAxNC45NiAzSDExdjJoMy45NmwxLjEgM0gxMC40bC40NiAySDE1Yy0uNDMuNTgtLjc1IDEuMjUtLjkgMmgtMi43OWwuNDYgMmgyLjMzYy40NCAyLjIzIDIuMzEgMy44OCA0LjY1IDMuOTkgMi44LjEzIDUuMjUtMi4xOSA1LjI1LTVDMjQgMTAuMiAyMS44IDggMTkgOHptMCA4Yy0xLjY4IDAtMy0xLjMyLTMtMyAwLS45My40MS0xLjczIDEuMDUtMi4yOGwuOTYgMi42NCAxLjg4LS42OC0uOTctMi42N2MuMDMgMCAuMDYtLjAxLjA5LS4wMSAxLjY4IDAgMyAxLjMyIDMgM3MtMS4zMyAzLTMuMDEgM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTVjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnJlYWtmYXN0RGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE4IDNINkMzLjc5IDMgMiA0Ljc5IDIgN2MwIDEuNDguODEgMi43NSAyIDMuNDVWMTljMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMnYtOC41NWMxLjE5LS42OSAyLTEuOTcgMi0zLjQ1IDAtMi4yMS0xLjc5LTQtNC00em0tNCAxMmgtNHYtNGg0djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJydW5jaERpbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xOCA4aDJWNGgtMnY0em0tMi40OSAxNEgyLjQ5Yy0uMjcgMC0uNDktLjIyLS40OS0uNVYyMGgxNHYxLjVjMCAuMjgtLjIyLjUtLjQ5LjV6TTE4IDE1Ljg5bC0uNC0uNDJhNS44NTIgNS44NTIgMCAwIDEtMS42LTRWMmg2djkuNTFjMCAxLjQ2LS41NCAyLjg3LTEuNTMgMy45NGwtLjQ3LjUyVjIwaDJ2MmgtNHYtNi4xMXpNNyAxNnYtMmg0djJoNC41Yy4yOCAwIC41LjIyLjUuNXYxYzAgLjI4LS4yMi41LS41LjVoLTEzYy0uMjggMC0uNS0uMjItLjUtLjV2LTFjMC0uMjguMjItLjUuNS0uNUg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCdXNBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMWE3IDcgMCAwIDAtNS43OCAzLjA1bC4wMi0uMDNDOS44NCA0IDkuNDIgNCA5IDRjLTQuNDIgMC04IC41LTggNHYxMGMwIC44OC4zOSAxLjY3IDEgMi4yMlYyMmExIDEgMCAwIDAgMSAxaDFhMSAxIDAgMCAwIDEtMXYtMWg4djFhMSAxIDAgMCAwIDEgMWgxYTEgMSAwIDAgMCAxLTF2LTEuNzhjLjYxLS41NSAxLTEuMzQgMS0yLjIydi0zLjA4QTcgNyAwIDAgMCAxNiAxek00LjUgMTlhMS41IDEuNSAwIDEgMSAwLTMgMS41IDEuNSAwIDAgMSAwIDN6TTMgMTNWOGg2YzAgMS45Ni44MSAzLjczIDIuMTEgNUgzem0xMC41IDZhMS41IDEuNSAwIDEgMSAwLTMgMS41IDEuNSAwIDAgMSAwIDN6bTIuNS02YTUgNSAwIDEgMSAwLTEwIDUgNSAwIDAgMSAwIDEwem0tMS05aDJ2NWgtMnptMCA2aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FyQ3Jhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptLjUgNmgtMVYzaDF2NHptMCAxdjFoLTFWOGgxem0tLjU5IDVjLjA2LjE2LjA5LjMzLjA5LjUgMCAuODMtLjY3IDEuNS0xLjUgMS41cy0xLjUtLjY3LTEuNS0xLjVjMC0uMzkuMTUtLjc0LjM5LTEuMDFBNy4wMzIgNy4wMzIgMCAwIDEgMTEuNjggOUg1LjgxbDEuMDQtM0gxMWMwLS42OS4xLTEuMzcuMjktMkg2LjVjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTF2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi02LjY4Yy0xLjA1LjUxLTIuMTYuNjktMy4wOS42OHpNNy41IDE1Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNi42NyAxMiA3LjUgMTJzMS41LjY3IDEuNSAxLjVTOC4zMyAxNSA3LjUgMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhclJlbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjM5IDlINy42MWMtLjQzIDAtLjgxLjI4LS45NS42OGwtMS42NiA1djYuODFjMCAuMjkuMjMuNTEuNS41MWgxYy4yOCAwIC41LS4yMi41LS41VjIwaDEwdjEuNWMwIC4yOC4yMi41LjUuNWgxYy4yOCAwIC41LS4yMi41LS41di02LjgxbC0xLjY2LTVhMS4wMSAxLjAxIDAgMCAwLS45NS0uNjl6bS04LjYxIDljLS42OCAwLTEuMjItLjU0LTEuMjItMS4yMnMuNTQtMS4yMiAxLjIyLTEuMjJTOSAxNi4xMSA5IDE2Ljc4IDguNDYgMTggNy43OCAxOHptOC40NCAwYy0uNjcgMC0xLjIyLS41NC0xLjIyLTEuMjJzLjU0LTEuMjIgMS4yMi0xLjIyIDEuMjIuNTQgMS4yMiAxLjIyUzE2LjkgMTggMTYuMjIgMTh6bS05LjkzLTQgMS4zMy00aDguNzhsMS4zMyA0SDYuMjl6TTEwLjgzIDNBMy4wMSAzLjAxIDAgMCAwIDggMUM2LjM0IDEgNSAyLjM0IDUgNGMwIDEuNjUgMS4zNCAzIDMgMyAxLjMgMCAyLjQxLS44NCAyLjgzLTJIMTZ2MmgyVjVoMVYzaC04LjE3ek04IDVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FyUmVwYWlyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMjIgMTJjLjY4IDAgMS4yMi0uNTQgMS4yMi0xLjIyIDAtLjY3LS41NC0xLjIyLTEuMjItMS4yMlMxNSAxMC4xMSAxNSAxMC43OGMwIC42OC41NSAxLjIyIDEuMjIgMS4yMnptLTkuNjYtMS4yMmMwIC42Ny41NCAxLjIyIDEuMjIgMS4yMlM5IDExLjQ2IDkgMTAuNzhjMC0uNjctLjU0LTEuMjItMS4yMi0xLjIycy0xLjIyLjU1LTEuMjIgMS4yMnpNNy42MSA0IDYuMjggOGgxMS40M2wtMS4zMy00SDcuNjF6bTguNjctMXMuNTQuMDEuOTIuNTRjLjAyLjAyLjAzLjA0LjA1LjA3LjA3LjExLjE0LjI0LjE5LjQuMjIuNjUgMS41NiA0LjY4IDEuNTYgNC42OHY2LjVjMCAuNDUtLjM1LjgxLS43OC44MWgtLjQ0Yy0uNDMgMC0uNzgtLjM2LS43OC0uODFWMTRIN3YxLjE5YzAgLjQ1LS4zNS44MS0uNzguODFoLS40NGMtLjQzIDAtLjc4LS4zNi0uNzgtLjgxdi02LjVTNi4zNCA0LjY3IDYuNTUgNGMuMDUtLjE2LjEyLS4yOC4xOS0uNC4wMy0uMDIuMDQtLjA0LjA2LS4wNi4zOC0uNTMuOTItLjU0LjkyLS41NGg4LjU2ek00IDE3LjAxaDE2VjE5aC03djNoLTJ2LTNINHYtMS45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FzdGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOXYyaC0yVjNoLTJ2MmgtMlYzaC0ydjJoLTJWM0g5djJIN1YzSDV2OEgzVjlIMXYxMmg5di0zYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2M2g5VjloLTJ6bS0xMCAzSDlWOWgydjN6bTQgMGgtMlY5aDJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2F0ZWdvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAyLTUuNSA5aDExelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE3LjVcIixcImN5XCI6XCIxNy41XCIsXCJyXCI6XCI0LjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMy41aDh2OEgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDZWxlYnJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIgMjIgMTQtNS05LTl6TTE0LjUzIDEyLjUzbDUuNTktNS41OWExLjI1IDEuMjUgMCAwIDEgMS43NyAwbC41OS41OSAxLjA2LTEuMDYtLjU5LS41OWEyLjc1OCAyLjc1OCAwIDAgMC0zLjg5IDBsLTUuNTkgNS41OSAxLjA2IDEuMDZ6TTEwLjA2IDYuODhsLS41OS41OSAxLjA2IDEuMDYuNTktLjU5YTIuNzU4IDIuNzU4IDAgMCAwIDAtMy44OWwtLjU5LS41OS0xLjA2IDEuMDcuNTkuNTljLjQ4LjQ4LjQ4IDEuMjggMCAxLjc2ek0xNy4wNiAxMS44OGwtMS41OSAxLjU5IDEuMDYgMS4wNiAxLjU5LTEuNTlhMS4yNSAxLjI1IDAgMCAxIDEuNzcgMGwxLjYxIDEuNjEgMS4wNi0xLjA2LTEuNjEtMS42MWEyLjc1OCAyLjc1OCAwIDAgMC0zLjg5IDB6TTE1LjA2IDUuODhsLTMuNTkgMy41OSAxLjA2IDEuMDYgMy41OS0zLjU5YTIuNzU4IDIuNzU4IDAgMCAwIDAtMy44OWwtMS41OS0xLjU5LTEuMDYgMS4wNiAxLjU5IDEuNTljLjQ4LjQ5LjQ4IDEuMjkgMCAxLjc3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaHVyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMi4yMlY5bC01LTIuNVY1aDJWM2gtMlYxaC0ydjJIOXYyaDJ2MS41TDYgOXYzLjIyTDIgMTR2OGg4di0zYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2M2g4di04bC00LTEuNzh6bS02IDEuMjhjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbGVhbmluZ1NlcnZpY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTFoLTFWM2MwLTEuMS0uOS0yLTItMmgtMmMtMS4xIDAtMiAuOS0yIDJ2OEg4Yy0yLjc2IDAtNSAyLjI0LTUgNXY3aDE4di03YzAtMi43Ni0yLjI0LTUtNS01em0zIDEwaC0ydi0zYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjNoLTJ2LTNjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2M0g5di0zYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjNINXYtNWMwLTEuNjUgMS4zNS0zIDMtM2g4YzEuNjUgMCAzIDEuMzUgMyAzdjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvbXBhc3NDYWxpYnJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxN1wiLFwiclwiOlwiNFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMC4wN2MxLjk1IDAgMy43Mi43OSA1IDIuMDdsNS01QzE5LjQ0IDQuNTkgMTUuOSAzIDEyIDNTNC41NiA0LjU5IDIgNy4xNWw1IDVhNy4wNiA3LjA2IDAgMCAxIDUtMi4wOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29ubmVjdGluZ0FpcnBvcnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuNCAxNyAxLjMgNC40aC0xLjFMMTMgMTdoLTNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFoM2wyLjYtNC40aDEuMUwxNS40IDE1aDIuODVsLjc1LTFoMWwtLjYgMiAuNiAyaC0xbC0uNzUtMUgxNS40ek01Ljc1IDcgNSA2SDRsLjYgMi0uNiAyaDFsLjc1LTFIOC42bC0xLjMgNC40aDEuMUwxMSA5aDNjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFoLTNMOC40IDIuNkg3LjNMOC42IDdINS43NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3Jpc2lzQWxlcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDIuNWMwIDEuNS0xLjUgNi0xLjUgNmgtMlM5LjUgNCA5LjUgMi41YTIuNSAyLjUgMCAwIDEgNSAwek0xMiAxMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTQuMDgtNC44OWMuMTgtLjc1LjMzLTEuNDcuMzktMi4wNkE5Ljk5NiA5Ljk5NiAwIDAgMSAyMiAxMmMwIDUuNTItNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0zLjkyIDIuMjUtNy4zMSA1LjUzLTguOTUuMDcuNTkuMjEgMS4zMi4zOSAyLjA2QTguMDI4IDguMDI4IDAgMCAwIDQgMTJjMCA0LjQyIDMuNTggOCA4IDhzOC0zLjU4IDgtOGMwLTIuOTMtMS41OC01LjQ5LTMuOTItNi44OXpNMTggMTJjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTZjMC0yIC45OC0zLjc3IDIuNDgtNC44Ni4yMy44MS42NSAyLjA3LjY1IDIuMDdDOC40MyA5LjkzIDggMTAuOTIgOCAxMmMwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00YzAtMS4wOC0uNDMtMi4wNy0xLjEzLTIuNzkgMCAwIC40MS0xLjIyLjY1LTIuMDdBNS45OTggNS45OTggMCAwIDEgMTggMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlbGl2ZXJ5RGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN2MwLTEuMS0uOS0yLTItMmgtM3YyaDN2Mi42NUwxMy41MiAxNEgxMFY5SDZjLTIuMjEgMC00IDEuNzktNCA0djNoMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDQuNDhMMTkgMTAuMzVWN3pNNyAxN2MtLjU1IDAtMS0uNDUtMS0xaDJjMCAuNTUtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDZoNXYySDV6TTE5IDEzYy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMCA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlcGFydHVyZUJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxYy0yLjQgMC00LjUyIDEuMjEtNS43OCAzLjA1LjAxLS4wMS4wMS0uMDIuMDItLjAzQzkuODQgNCA5LjQyIDQgOSA0Yy00LjQyIDAtOCAuNS04IDR2MTBjMCAuODguMzkgMS42NyAxIDIuMjJWMjJjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoOHYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xLjc4Yy42MS0uNTUgMS0xLjM0IDEtMi4yMnYtMy4wOGMzLjM5LS40OSA2LTMuMzkgNi02LjkyIDAtMy44Ny0zLjEzLTctNy03ek00LjUgMTljLS44MyAwLTEuNS0uNjctMS41LTEuNVMzLjY3IDE2IDQuNSAxNnMxLjUuNjcgMS41IDEuNVM1LjMzIDE5IDQuNSAxOXpNMyAxM1Y4aDZjMCAxLjk2LjgxIDMuNzMgMi4xMSA1SDN6bTEwLjUgNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTIuNS02Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXptLjUtOUgxNXY1bDMuNjIgMi4xNi43NS0xLjIzLTIuODctMS42OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGVzaWduU2VydmljZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi4yNCAxMS41MSAxLjU3LTEuNTctMy43NS0zLjc1LTEuNTcgMS41Ny00LjE0LTQuMTNjLS43OC0uNzgtMi4wNS0uNzgtMi44MyAwbC0xLjkgMS45Yy0uNzguNzgtLjc4IDIuMDUgMCAyLjgzbDQuMTMgNC4xM0wzIDE3LjI1VjIxaDMuNzVsNC43Ni00Ljc2IDQuMTMgNC4xM2MuOTUuOTUgMi4yMy42IDIuODMgMGwxLjktMS45Yy43OC0uNzguNzgtMi4wNSAwLTIuODNsLTQuMTMtNC4xM3ptLTcuMDYtLjQ0TDUuMDQgNi45NGwxLjg5LTEuOUw4LjIgNi4zMSA3LjAyIDcuNWwxLjQxIDEuNDEgMS4xOS0xLjE5IDEuNDUgMS40NS0xLjg5IDEuOXptNy44OCA3Ljg5LTQuMTMtNC4xMyAxLjktMS45IDEuNDUgMS40NS0xLjE5IDEuMTkgMS40MSAxLjQxIDEuMTktMS4xOSAxLjI3IDEuMjctMS45IDEuOXpNMjAuNzEgNy4wNGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTIuMzQtMi4zNGMtLjQ3LS40Ny0xLjEyLS4yOS0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaWFtb25kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMTYgM2gtLjMyTDkuMjEgOC4yNWg1LjU4ek0xNi40NiA4LjI1aDUuMTZMMTkgM2gtNS4xNnpNMjEuMzggOS43NWgtOC42M1YyMC4xek0xMS4yNSAyMC4xVjkuNzVIMi42MnpNNy41NCA4LjI1IDEwLjE2IDNINUwyLjM4IDguMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpbm5lckRpbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTloMjBsLTIgMkg0bC0yLTJ6TTUgNmgxdjFINVY2em0wLTJoMXYxSDVWNHptNCAwdjFIN1Y0aDJ6bTAgM0g3VjZoMnYxem0tMyA4LjIzYy0uMzYuMTEtLjY5LjI4LTEgLjQ3VjhoMXY3LjIzem0tMiAxLjI5Yy0uMzguNDQtLjY4LjkzLS44NCAxLjQ4aDE2LjgyYy4wMS0uMTYuMDMtLjMzLjAzLS41YTUuNDk3IDUuNDk3IDAgMCAwLTEwLjU4LTIuMWMtLjU5LS4yNS0xLjI0LS40LTEuOTMtLjQtLjE3IDAtLjMzLjAyLS41LjA0VjhoMmMxLjAzLjA2IDEuOS0uOTYgMi0yaDEwVjVIMTFjLS4xLTEuMDUtLjk3LTEuOTctMi0ySDN2MWgxdjFIM3YxaDF2MUgzdjFoMXY4LjUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zQmlrZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgNS41YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnpNNSAxMmMtMi44IDAtNSAyLjItNSA1czIuMiA1IDUgNSA1LTIuMiA1LTUtMi4yLTUtNS01em0wIDguNWMtMS45IDAtMy41LTEuNi0zLjUtMy41czEuNi0zLjUgMy41LTMuNSAzLjUgMS42IDMuNSAzLjUtMS42IDMuNS0zLjUgMy41em01LjgtMTAgMi40LTIuNC44LjhjMS4zIDEuMyAzIDIuMSA1LjEgMi4xVjljLTEuNSAwLTIuNy0uNi0zLjYtMS41bC0xLjktMS45Yy0uNS0uNC0xLS42LTEuNi0uNnMtMS4xLjItMS40LjZMNy44IDguNGMtLjQuNC0uNi45LS42IDEuNCAwIC42LjIgMS4xLjYgMS40TDExIDE0djVoMnYtNi4ybC0yLjItMi4zek0xOSAxMmMtMi44IDAtNSAyLjItNSA1czIuMiA1IDUgNSA1LTIuMiA1LTUtMi4yLTUtNS01em0wIDguNWMtMS45IDAtMy41LTEuNi0zLjUtMy41czEuNi0zLjUgMy41LTMuNSAzLjUgMS42IDMuNSAzLjUtMS42IDMuNS0zLjUgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zQm9hdEZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDIxYy0xLjM5IDAtMi43OC0uNDctNC0xLjMyLTIuNDQgMS43MS01LjU2IDEuNzEtOCAwQzYuNzggMjAuNTMgNS4zOSAyMSA0IDIxSDJ2MmgyYzEuMzggMCAyLjc0LS4zNSA0LS45OWE4Ljc1MiA4Ljc1MiAwIDAgMCA4IDBjMS4yNi42NSAyLjYyLjk5IDQgLjk5aDJ2LTJoLTJ6TTMuOTUgMTlINGMxLjYgMCAzLjAyLS44OCA0LTIgLjk4IDEuMTIgMi40IDIgNCAyczMuMDItLjg4IDQtMmMuOTggMS4xMiAyLjQgMiA0IDJoLjA1bDEuOS02LjY4Yy4xMS0uMzcuMDQtMS4wNi0uNjYtMS4yOEwyMCAxMC42MlY2YzAtMS4xLS45LTItMi0yaC0zVjFIOXYzSDZjLTEuMSAwLTIgLjktMiAydjQuNjJsLTEuMjkuNDJjLS42My4xOS0uODEuODQtLjY2IDEuMjhMMy45NSAxOXpNNiA2aDEydjMuOTdMMTIgOCA2IDkuOTdWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc0JvYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAyMWMtMS4zOSAwLTIuNzgtLjQ3LTQtMS4zMi0yLjQ0IDEuNzEtNS41NiAxLjcxLTggMEM2Ljc4IDIwLjUzIDUuMzkgMjEgNCAyMUgydjJoMmMxLjM4IDAgMi43NC0uMzUgNC0uOTlhOC43NTIgOC43NTIgMCAwIDAgOCAwYzEuMjYuNjUgMi42Mi45OSA0IC45OWgydi0yaC0yek0zLjk1IDE5SDRjMS42IDAgMy4wMi0uODggNC0yIC45OCAxLjEyIDIuNCAyIDQgMnMzLjAyLS44OCA0LTJjLjk4IDEuMTIgMi40IDIgNCAyaC4wNWwxLjg5LTYuNjhjLjA4LS4yNi4wNi0uNTQtLjA2LS43OHMtLjM0LS40Mi0uNi0uNUwyMCAxMC42MlY2YzAtMS4xLS45LTItMi0yaC0zVjFIOXYzSDZjLTEuMSAwLTIgLjktMiAydjQuNjJsLTEuMjkuNDJhMS4wMDcgMS4wMDcgMCAwIDAtLjY2IDEuMjhMMy45NSAxOXpNNiA2aDEydjMuOTdMMTIgOCA2IDkuOTdWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc0J1c0ZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQgMC04IC41LTggNHY5LjVjMCAuOTUuMzggMS44MSAxIDIuNDRWMjBjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoOHYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0yLjA2Yy42Mi0uNjMgMS0xLjQ5IDEtMi40NFY2YzAtMy41LTMuNTgtNC04LTR6TTguNSAxNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzcuNjcgMTMgOC41IDEzczEuNS42NyAxLjUgMS41UzkuMzMgMTYgOC41IDE2em03IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em0yLjUtNkg2VjdoMTJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc0J1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTZjMCAuODguMzkgMS42NyAxIDIuMjJWMjBjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoOHYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xLjc4Yy42MS0uNTUgMS0xLjM0IDEtMi4yMlY2YzAtMy41LTMuNTgtNC04LTRzLTggLjUtOCA0djEwem0zLjUgMWMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzYuNjcgMTQgNy41IDE0czEuNS42NyAxLjUgMS41UzguMzMgMTcgNy41IDE3em05IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em0xLjUtNkg2VjZoMTJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc0NhckZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDYuMDFDMTguNzIgNS40MiAxOC4xNiA1IDE3LjUgNWgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTJ2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTcuNSAxNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzYuNjcgMTMgNy41IDEzczEuNS42NyAxLjUgMS41UzguMzMgMTYgNy41IDE2em05IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek01LjgxIDEwbDEuMDQtM2gxMC4yOWwxLjA0IDNINS44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc0NhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDYuMDFDMTguNzIgNS40MiAxOC4xNiA1IDE3LjUgNWgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTJ2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuNSAxNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgMTMgNi41IDEzczEuNS42NyAxLjUgMS41UzcuMzMgMTYgNi41IDE2em0xMSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNNSAxMWwxLjUtNC41aDExTDE5IDExSDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpcmVjdGlvbnNSYWlsd2F5RmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjB2MWgxMnYtMWwtMS41LTFjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVWNmMwLTMuNS0zLjU4LTQtOC00em0wIDE0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTEuMTcgMTMgMTIgMTNzMS41LjY3IDEuNSAxLjVTMTIuODMgMTYgMTIgMTZ6bTYtNkg2VjdoMTJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc1JhaWx3YXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE1LjVDNCAxNy40MyA1LjU3IDE5IDcuNSAxOUw2IDIwLjV2LjVoMTJ2LS41TDE2LjUgMTljMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVWNWMwLTMuNS0zLjU4LTQtOC00cy04IC41LTggNHYxMC41em04IDEuNWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTYtN0g2VjVoMTJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc1J1biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjQ5IDUuNDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0tMy42IDEzLjkgMS00LjQgMi4xIDJ2Nmgydi03LjVsLTIuMS0yIC42LTNjMS4zIDEuNSAzLjMgMi41IDUuNSAyLjV2LTJjLTEuOSAwLTMuNS0xLTQuMy0yLjRsLTEtMS42Yy0uNC0uNi0xLTEtMS43LTEtLjMgMC0uNS4xLS44LjFsLTUuMiAyLjJ2NC43aDJ2LTMuNGwxLjgtLjctMS42IDguMS00LjktMS0uNCAyIDcgMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zU3Vid2F5RmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjB2MWgxMnYtMWwtMS41LTFjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVWNmMwLTMuNS0zLjU4LTQtOC00ek04LjUgMTZjLS44MyAwLTEuNS0uNjctMS41LTEuNVM3LjY3IDEzIDguNSAxM3MxLjUuNjcgMS41IDEuNVM5LjMzIDE2IDguNSAxNnptMi41LTZINlY3aDV2M3ptNC41IDZjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em0yLjUtNmgtNVY3aDV2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc1N1YndheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQuNDIgMC04IC41LTggNHY5LjVDNCAxNy40MyA1LjU3IDE5IDcuNSAxOUw2IDIwLjV2LjVoMTJ2LS41TDE2LjUgMTljMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVWNmMwLTMuNS0zLjU4LTQtOC00ek03LjUgMTdjLS44MyAwLTEuNS0uNjctMS41LTEuNVM2LjY3IDE0IDcuNSAxNHMxLjUuNjcgMS41IDEuNVM4LjMzIDE3IDcuNSAxN3ptMy41LTZINlY2aDV2NXptNS41IDZjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em0xLjUtNmgtNVY2aDV2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc1RyYW5zaXRGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy00IDAtOCAuNS04IDR2OS41QzQgMTcuNDMgNS41NyAxOSA3LjUgMTlMNiAyMHYxaDEydi0xbC0xLjUtMWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY2YzAtMy41LTMuNTgtNC04LTR6TTguNSAxNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzcuNjcgMTMgOC41IDEzczEuNS42NyAxLjUgMS41UzkuMzMgMTYgOC41IDE2em0yLjUtNkg2VjdoNXYzem00LjUgNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTIuNS02aC01VjdoNXYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zVHJhbnNpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQuNDIgMC04IC41LTggNHY5LjVDNCAxNy40MyA1LjU3IDE5IDcuNSAxOUw2IDIwLjV2LjVoMTJ2LS41TDE2LjUgMTljMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVWNmMwLTMuNS0zLjU4LTQtOC00ek03LjUgMTdjLS44MyAwLTEuNS0uNjctMS41LTEuNVM2LjY3IDE0IDcuNSAxNHMxLjUuNjcgMS41IDEuNVM4LjMzIDE3IDcuNSAxN3ptMy41LTZINlY2aDV2NXptNS41IDZjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em0xLjUtNmgtNVY2aDV2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGlyZWN0aW9uc1dhbGsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6TTkuOCA4LjkgNyAyM2gyLjFsMS44LTggMi4xIDJ2Nmgydi03LjVsLTIuMS0yIC42LTNDMTQuOCAxMiAxNi44IDEzIDE5IDEzdi0yYy0xLjkgMC0zLjUtMS00LjMtMi40bC0xLTEuNmMtLjQtLjYtMS0xLTEuNy0xLS4zIDAtLjUuMS0uOC4xTDYgOC4zVjEzaDJWOS42bDEuOC0uN1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNDEgMTAuNTktNy45OS04Yy0uNzgtLjc4LTIuMDUtLjc4LTIuODMgMGwtOC4wMSA4Yy0uNzguNzgtLjc4IDIuMDUgMCAyLjgzbDguMDEgOGMuNzguNzggMi4wNS43OCAyLjgzIDBsNy45OS04Yy43OS0uNzkuNzktMi4wNSAwLTIuODN6TTEzLjUgMTQuNVYxMkgxMHYzSDh2LTRjMC0uNTUuNDUtMSAxLTFoNC41VjcuNUwxNyAxMWwtMy41IDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRHJ5Q2xlYW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41NiAxMS4zNiAxMyA4LjQ0VjdjMC0uNTUtLjQ1LTEtMS0xcy0xLS40NS0xLTEgLjQ1LTEgMS0xIDEgLjQ1IDEgMWgyYzAtMS44NC0xLjY2LTMuMy0zLjU2LTIuOTUtMS4xOC4yMi0yLjE1IDEuMTctMi4zOCAyLjM1LS4zIDEuNTYuNiAyLjk0IDEuOTQgMy40MnYuNjNsLTYuNTYgMi45MmMtLjg4LjM4LTEuNDQgMS4yNS0xLjQ0IDIuMnYuMDFDMyAxNC45MiA0LjA4IDE2IDUuNDIgMTZIN3Y2aDEwdi02aDEuNThjMS4zNCAwIDIuNDItMS4wOCAyLjQyLTIuNDJ2LS4wMWMwLS45NS0uNTYtMS44Mi0xLjQ0LTIuMjF6TTE4LjU4IDE0SDE3di0xSDd2MUg1LjQyYy0uMjMgMC0uNDItLjE5LS40Mi0uNDMgMC0uMTcuMS0uMzIuMjUtLjM4bDYuNzUtMyA2Ljc1IDNhLjQyMy40MjMgMCAwIDEtLjE3LjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0QXR0cmlidXRlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjYzIDdINi4zN0MzLjk2IDcgMiA5LjI0IDIgMTJzMS45NiA1IDQuMzcgNWgxMS4yNmMyLjQxIDAgNC4zNy0yLjI0IDQuMzctNXMtMS45Ni01LTQuMzctNXpNNy4yNCAxNC40NmwtMi41Ny0yLjU3LjctLjcgMS44NyAxLjg3IDMuNTItMy41Mi43LjctNC4yMiA0LjIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0TG9jYXRpb25BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy45NSAxM0g5VjguMDVsNS42MS01LjYxQTguMTcgOC4xNyAwIDAgMCAxMiAyYy00LjIgMC04IDMuMjItOCA4LjIgMCAzLjMyIDIuNjcgNy4yNSA4IDExLjggNS4zMy00LjU1IDgtOC40OCA4LTExLjggMC0xLjAxLS4xNi0xLjk0LS40NS0yLjhsLTUuNiA1LjZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDExaDIuMTJsNi4xNi02LjE2LTIuMTItMi4xMkwxMSA4Ljg4ek0yMC43MSAyIDIwIDEuMjljLS4yLS4xOS0uNDUtLjI5LS43MS0uMjktLjEzIDAtLjQ4LjA3LS43MS4yOWwtLjcyLjcyIDIuMTIgMi4xMi43Mi0uNzJjLjQtLjM5LjQtMS4wMi4wMS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0TG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzguMTQgMiA1IDUuMTQgNSA5YzAgNS4yNSA3IDEzIDcgMTNzNy03Ljc1IDctMTNjMC0zLjg2LTMuMTQtNy03LTd6bS0xLjU2IDEwSDl2LTEuNDRsMy4zNS0zLjM0IDEuNDMgMS40M0wxMC40NCAxMnptNC40NS00LjQ1LS43LjctMS40NC0xLjQ0LjctLjdhLjM4LjM4IDAgMCAxIC41NCAwbC45LjljLjE1LjE1LjE1LjM5IDAgLjU0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0Um9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRoLTJ2Ny45bDItMnpNNCA0aDJ2MTZINHpNMTAgNGgydjRoLTJ6TTEwIDEwaDJ2NGgtMnpNMTAgMTZoMnY0aC0yek0yMi41NiAxMi41OWwtMS4xNS0xLjE1YTEuNDkgMS40OSAwIDAgMC0yLjEyIDBMMTQgMTYuNzNWMjBoMy4yN2w1LjI5LTUuMjljLjU5LS41OS41OS0xLjU0IDAtMi4xMnptLTUuOTggNS44NmgtMS4wM3YtMS4wM0wxOSAxMy45NyAyMC4wMyAxNWwtMy40NSAzLjQ1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZ2dBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA5Yy0yLTItMy4wMS03LTkuMDMtN0M0Ljk1IDIgMS45NCA2IDIgMTEuNTIgMi4wNiAxNy4wNCA2Ljk2IDE5IDkuOTcgMTljMi4wMSAwIDIuMDEgMyA2LjAyIDNDMTkgMjIgMjIgMTkgMjIgMTUuMDIgMjIgMTIgMjEuMDEgMTEgMTkgOXptLTcgNi41Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWdnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM0M4LjUgMyA1IDkuMzMgNSAxNGMwIDMuODcgMy4xMyA3IDcgN3M3LTMuMTMgNy03YzAtNC42Ny0zLjUtMTEtNy0xMXptMSAxNWMtMyAwLTUtMS45OS01LTUgMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxYzAgMi45MiAyLjQyIDMgMyAzIC41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbGVjdHJpY0Jpa2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3aC0uODJsLTEuNy00LjY4QTIuMDA4IDIuMDA4IDAgMCAwIDE0LjYgMUgxMnYyaDIuNmwxLjQ2IDRoLTQuODFsLS4zNi0xSDEyVjRIN3YyaDEuNzVsMS44MiA1SDkuOWMtLjQ0LTIuMjMtMi4zMS0zLjg4LTQuNjUtMy45OUMyLjQ1IDYuODcgMCA5LjIgMCAxMmMwIDIuOCAyLjIgNSA1IDUgMi40NiAwIDQuNDUtMS42OSA0LjktNGg0LjJjLjQ0IDIuMjMgMi4zMSAzLjg4IDQuNjUgMy45OSAyLjguMTMgNS4yNS0yLjE5IDUuMjUtNUMyNCA5LjIgMjEuOCA3IDE5IDd6TTcuODIgMTNjLS40IDEuMTctMS40OSAyLTIuODIgMi0xLjY4IDAtMy0xLjMyLTMtM3MxLjMyLTMgMy0zYzEuMzMgMCAyLjQyLjgzIDIuODIgMkg1djJoMi44MnptNi4yOC0yaC0xLjRsLS43My0ySDE1Yy0uNDQuNTgtLjc2IDEuMjUtLjkgMnptNC45IDRjLTEuNjggMC0zLTEuMzItMy0zIDAtLjkzLjQxLTEuNzMgMS4wNS0yLjI4bC45NiAyLjY0IDEuODgtLjY4LS45Ny0yLjY3Yy4wMiAwIC4wNS0uMDEuMDgtLjAxIDEuNjggMCAzIDEuMzIgMyAzcy0xLjMyIDMtMyAzek0xMSAyMEg3bDYgM3YtMmg0bC02LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVsZWN0cmljQ2FyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTIgMi4wMUMxOC43MiAxLjQyIDE4LjE2IDEgMTcuNSAxaC0xMWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyA4djhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMVY4bC0yLjA4LTUuOTl6TTYuNSAxMmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgOSA2LjUgOSA4IDkuNjcgOCAxMC41IDcuMzMgMTIgNi41IDEyem0xMSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek01IDdsMS41LTQuNWgxMUwxOSA3SDV6TTcgMjBoNHYtMmw2IDNoLTR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWxlY3RyaWNNb3BlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDVjMC0xLjEtLjktMi0yLTJoLTN2MmgzdjIuNjVMMTMuNTIgMTJIMTBWN0g2Yy0yLjIxIDAtNCAxLjc5LTQgNHYzaDJjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g0LjQ4TDE5IDguMzVWNXpNNyAxNWMtLjU1IDAtMS0uNDUtMS0xaDJjMCAuNTUtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDRoNXYySDV6TTE5IDExYy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMCA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6TTcgMjBoNHYtMmw2IDNoLTR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWxlY3RyaWNSaWNrc2hhdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDExLjE4VjkuNzJjMC0uNDctLjE2LS45Mi0uNDYtMS4yOEwxNi42IDMuNzJjLS4zOC0uNDYtLjk0LS43Mi0xLjU0LS43MkgzYy0xLjEgMC0yIC45LTIgMnY4YzAgMS4xLjkgMiAyIDJoLjE4QzMuNiAxNi4xNiA0LjcgMTcgNiAxN3MyLjQtLjg0IDIuODItMmg4LjM3YTIuOTk2IDIuOTk2IDAgMCAwIDUuODItMWMtLjAxLTEuMy0uODUtMi40LTIuMDEtMi44MnpNMTguNCA5SDE2VjYuMTJMMTguNCA5ek0zIDVoNHY0SDNWNXptMyAxMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0zLTJ2LTJoM1Y5SDlWNWg1djhIOXptMTEgMmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxek03IDIwaDR2LTJsNiAzaC00djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVsZWN0cmljU2Nvb3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuODIgMTZIMTV2LTFjMC0yLjIxIDEuNzktNCA0LTRoLjc0bC0xLjktOC40NEEyLjAwOSAyLjAwOSAwIDAgMCAxNS44OSAxSDEydjJoMy44OWwxLjQgNi4yNWgtLjAxQTYuMDA4IDYuMDA4IDAgMCAwIDEzLjA5IDE0SDcuODJhMi45OTYgMi45OTYgMCAwIDAtMy40Mi0xLjk0Yy0xLjE4LjIzLTIuMTMgMS4yLTIuMzUgMi4zOEEzLjAwMiAzLjAwMiAwIDAgMCA1IDE4YzEuMyAwIDIuNC0uODQgMi44Mi0yek01IDE2Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEyYy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMCA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6TTExIDIwSDdsNiAzdi0yaDRsLTYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWxlY3RyaWNhbFNlcnZpY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTRjMC0uNTUtLjQ1LTEtMS0xaC0ydjJoMmMuNTUgMCAxLS40NSAxLTF6TTIwIDE3aC0ydjJoMmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMXpNMTIgMTRoLTJ2NGgyYzAgMS4xLjkgMiAyIDJoM3YtOGgtM2MtMS4xIDAtMiAuOS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTNjMC0xLjEuOS0yIDItMmgxLjVjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTAuNDMgNCA4LjUgNEg1Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxaDMuNWMuODMgMCAxLjUuNjcgMS41IDEuNVM5LjMzIDkgOC41IDlIN2MtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNGgydi0ySDdjLTEuMSAwLTItLjktMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbWVyZ2VuY3lSZWNvcmRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMC40OFY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTQuNDhsNCAzLjk4di0xMWwtNCAzLjk4ek0xMiAxMmwzIDEuNzMtMSAxLjczLTMtMS43M1YxN0g5di0zLjI3bC0zIDEuNzMtMS0xLjczTDggMTJsLTMtMS43MyAxLTEuNzMgMyAxLjczVjdoMnYzLjI3bDMtMS43MyAxIDEuNzNMMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVtZXJnZW5jeVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOWMtMy4xNSAwLTYgMi40MS02IDYuMTUgMCAyLjQ5IDIgNS40NCA2IDguODUgNC0zLjQxIDYtNi4zNiA2LTguODVDMTggMTEuNDEgMTUuMTUgOSAxMiA5em0wIDcuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6TTEyIDRjMS45MyAwIDMuNjguNzggNC45NSAyLjA1bC0xLjQxIDEuNDFhNS4wMjIgNS4wMjIgMCAwIDAtNy4wOCAwTDcuMDUgNi4wNUE2Ljk3NiA2Ljk3NiAwIDAgMSAxMiA0em03Ljc4LS43Ny0xLjQxIDEuNDFDMTYuNzQgMy4wMSAxNC40OSAyIDEyLjAxIDJTNy4yNyAzLjAxIDUuNjQgNC42M0w0LjIyIDMuMjJDNi4yMiAxLjIzIDguOTcgMCAxMi4wMSAwczUuNzggMS4yMyA3Ljc3IDMuMjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVtZXJnZW5jeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjc5IDkuMjMtMi0zLjQ2TDE0IDguNTRWM2gtNHY1LjU0TDUuMjEgNS43N2wtMiAzLjQ2TDggMTJsLTQuNzkgMi43NyAyIDMuNDZMMTAgMTUuNDZWMjFoNHYtNS41NGw0Ljc5IDIuNzcgMi0zLjQ2TDE2IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFdlN0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljc3IDcuMjMuMDEtLjAxLTMuNzItMy43MkwxNSA0LjU2bDIuMTEgMi4xMWMtLjk0LjM2LTEuNjEgMS4yNi0xLjYxIDIuMzNhMi41IDIuNSAwIDAgMCAyLjUgMi41Yy4zNiAwIC42OS0uMDggMS0uMjF2Ny4yMWMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMVYxNGMwLTEuMS0uOS0yLTItMmgtMVY1YzAtMS4xLS45LTItMi0ySDZjLTEuMSAwLTIgLjktMiAydjE2aDEwdi03LjVoMS41djVhMi41IDIuNSAwIDAgMCA1IDBWOWMwLS42OS0uMjgtMS4zMi0uNzMtMS43N3pNMTggMTBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpNOCAxOHYtNC41SDZMMTAgNnY1aDJsLTQgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFjdG9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEwdjEySDJWMTBsNy0zdjJsNS0ydjNoOHptLTQuOC0xLjVMMTggMmgzbC44IDYuNWgtNC42ek0xMSAxOGgydi00aC0ydjR6bS00IDBoMnYtNEg3djR6bTEwLTRoLTJ2NGgydi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYXN0Zm9vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjA2IDIyLjk5aDEuNjZjLjg0IDAgMS41My0uNjQgMS42My0xLjQ2TDIzIDUuMDVoLTVWMWgtMS45N3Y0LjA1aC00Ljk3bC4zIDIuMzRjMS43MS40NyAzLjMxIDEuMzIgNC4yNyAyLjI2IDEuNDQgMS40MiAyLjQzIDIuODkgMi40MyA1LjI5djguMDV6TTEgMjEuOTlWMjFoMTUuMDN2Ljk5YzAgLjU1LS40NSAxLTEuMDEgMUgyLjAxYy0uNTYgMC0xLjAxLS40NS0xLjAxLTF6bTE1LjAzLTdjMC04LTE1LjAzLTgtMTUuMDMgMGgxNS4wM3pNMS4wMiAxN2gxNXYyaC0xNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmVzdGl2YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA1LjdWNGgzbC0xLTEuNDlMMTYgMWgtNXY0LjdMMiAxMnYxMGg3di01bDMuMDMtMkwxNSAxN3Y1aDdWMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpcmVIeWRyYW50QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTFoLTFWOGgyVjZoLTIuMzVhNS45OSA1Ljk5IDAgMCAwLTExLjMgMEg0djJoMnYzSDVjLTEuMSAwLTIgLjktMiAydjJjMCAxLjEuOSAyIDIgMmgxdjNINHYyaDE2di0yaC0ydi0zaDFjMS4xIDAgMi0uOSAyLTJ2LTJjMC0xLjEtLjktMi0yLTJ6bS03IDYuNWMtMS45MyAwLTMuNS0xLjU3LTMuNS0zLjVzMS41Ny0zLjUgMy41LTMuNSAzLjUgMS41NyAzLjUgMy41LTEuNTcgMy41LTMuNSAzLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpcmVUcnVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjkgMTAuNjktMS40NC00LjMyQTIuMDEgMi4wMSAwIDAgMCAxOS41NiA1SDE5VjRjMC0uNTUtLjQ1LTEtMS0xaC0xYy0uNTUgMC0xIC40NS0xIDF2MWgtMmMtMS4xIDAtMiAuOS0yIDJ2NEgxdjVjMCAxLjEuOSAyIDIgMmgxYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoNGMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDN2LTYuNjhjMC0uMjEtLjAzLS40Mi0uMS0uNjN6TTcgMTljLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMTAgMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tMy04VjdoNS41NmwxLjMzIDRIMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDguNWgtMXYtMmgxVjVIMXYxLjVoMXYySDFWMTBoMTBWOC41em0tNS43NSAwSDMuNXYtMmgxLjc1djJ6bTMuMjUgMEg2Ljc1di0ySDguNXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGlnaHRDbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDRoLTJjLTEuMSAwLTIgLjktMiAydjVjMCAxLjEuOSAyIDIgMmgyYzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTkuNSAxNkgxOHYySDkuNDljLS44OCAwLTEuNjYtLjU4LTEuOTItMS40M0w1IDhWNGgydjRsMi41IDh6TTggMTloMTB2Mkg4di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGbGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNnYtMmwtOC01VjMuNWMwLS44My0uNjctMS41LTEuNS0xLjVTMTAgMi42NyAxMCAzLjVWOWwtOCA1djJsOC0yLjVWMTlsLTIgMS41VjIybDMuNS0xIDMuNSAxdi0xLjVMMTMgMTl2LTUuNWw4IDIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9yZXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTIgOSAyIDIgMTJoMS44NkwwIDE4aDd2NGg0di00aDdsLTMuODYtNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMTQgMTJIMjJMMTUgMmwtMi4zOSAzLjQxTDE3LjkyIDEzaC0xLjk1bDMuMjIgNUgyNHpNMTMgMTloNHYzaC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3JrTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNDEgMTUuNTkgOCAxN2wtNC00IDQtNCAxLjQxIDEuNDFMNy44MyAxMmMxLjUxLS4zMyAzLjczLjA4IDUuMTcgMS4zNlY2LjgzbC0xLjU5IDEuNTlMMTAgN2w0LTQgNCA0LTEuNDEgMS40MUwxNSA2LjgzVjIxaC0ydi00Yy0uNzMtMi41OC0zLjA3LTMuNDctNS4xNy0zbDEuNTggMS41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ya1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNTkgMTUuNTkgMTYgMTdsNC00LTQtNC0xLjQxIDEuNDFMMTYuMTcgMTJjLTEuNTEtLjMzLTMuNzMuMDgtNS4xNyAxLjM2VjYuODNsMS41OSAxLjU5TDE0IDdsLTQtNC00IDQgMS40MSAxLjQxTDkgNi44M1YyMWgydi00Yy43My0yLjU4IDMuMDctMy40NyA1LjE3LTNsLTEuNTggMS41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRm9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDN2MmgtMlYzaC0ydjJoLTJWM2gtMnY0bDIgMnYxSDlWOWwyLTJWM0g5djJIN1YzSDV2MkgzVjNIMXY0bDIgMnY2bC0yIDJ2NGg5di0zYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2M2g5di00bC0yLTJWOWwyLTJWM2gtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGFpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem01LTRoMnYuNGMtLjEgMi4yLS44IDMuOS0yLjMgNS4xLS41LjQtMS4xLjctMS43LjlWMjJoLTJ2LTZoLTJ2Nkg5VjEwLjFjLS4zLjEtLjUuMi0uNi4zLS45LjctMS4zOSAxLjYtMS40IDMuMXYuNUg1di0uNWMwLTIgLjcxLTMuNTkgMi4xMS00Ljc5QzguMjEgNy44MSAxMCA3IDEyIDdzMi42OC0uNDYgMy40OC0xLjA2QzE2LjQ4IDUuMTQgMTcgNCAxNyAyLjVWMnpNNCAxNmgzdjZINHYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGFuZHltYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS42NyAxOC4xNy01LjMtNS4zaC0uOTlsLTIuNTQgMi41NHYuOTlsNS4zIDUuM2MuMzkuMzkgMS4wMi4zOSAxLjQxIDBsMi4xMi0yLjEyYS45OTYuOTk2IDAgMCAwIDAtMS40MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMzQgMTAuMTkgMS40MS0xLjQxIDIuMTIgMi4xMmEzIDMgMCAwIDAgMC00LjI0bC0zLjU0LTMuNTQtMS40MSAxLjQxVjEuNzFsLS43LS43MS0zLjU0IDMuNTQuNzEuNzFoMi44M2wtMS40MSAxLjQxIDEuMDYgMS4wNi0yLjg5IDIuODktNC4xMy00LjEzVjUuMDZMNC44MyAyLjA0IDIgNC44NyA1LjAzIDcuOWgxLjQxbDQuMTMgNC4xMy0uODUuODVINy42bC01LjMgNS4zYS45OTYuOTk2IDAgMCAwIDAgMS40MWwyLjEyIDIuMTJjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDUuMy01LjN2LTIuMTJsNS4xNS01LjE1IDEuMDYgMS4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGFyZHdhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCAzLTMgM1YzSDlDNi4yNCAzIDQgNS4yNCA0IDhoNXYzaDZWOGwzIDNoMlYzaC0yek05IDEzdjdjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTdIOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG9tZVJlcGFpclNlcnZpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxNmgtMnYtMUg4djFINnYtMUgydjVoMjB2LTVoLTR6TTIwIDhoLTNWNmMwLTEuMS0uOS0yLTItMkg5Yy0xLjEgMC0yIC45LTIgMnYySDRjLTEuMSAwLTIgLjktMiAydjRoNHYtMmgydjJoOHYtMmgydjJoNHYtNGMwLTEuMS0uOS0yLTItMnptLTUgMEg5VjZoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3RlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTNjMS42NiAwIDMtMS4zNCAzLTNTOC42NiA3IDcgN3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzem0xMi02aC04djdIM1Y1SDF2MTVoMnYtM2gxOHYzaDJ2LTljMC0yLjIxLTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEh2YWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNmMxLjAxIDAgMS45MS0uMzkgMi42Mi0xSDkuMzhjLjcxLjYxIDEuNjEgMSAyLjYyIDF6TTguNTYgMTRoNi44OWMuMjYtLjQ1LjQ0LS45Ni41MS0xLjVoLTcuOWMuMDYuNTQuMjMgMS4wNS41IDEuNXpNMTIgOGMtMS4wMSAwLTEuOTEuMzktMi42MiAxaDUuMjRjLS43MS0uNjEtMS42MS0xLTIuNjItMXpNOC41NiAxMGMtLjI2LjQ1LS40NC45Ni0uNTEgMS41aDcuOWMtLjA3LS41NC0uMjQtMS4wNS0uNTEtMS41SDguNTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAxNWMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEljZWNyZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwibTguNzkgMTIuNCAzLjI2IDYuMjIgMy4xNy02LjIxYy0uMTEtLjA4LS4yMS0uMTYtLjMtLjI1LS44NC41My0xLjg1Ljg0LTIuOTIuODRzLTIuMDgtLjMxLTIuOTItLjg0Yy0uMDkuMDktLjE5LjE3LS4yOS4yNHptLTEuOTYuNTlBMi45OTUgMi45OTUgMCAwIDEgNCAxMGEzIDMgMCAwIDEgMi41Mi0yLjk2QzYuNzUgNC4yMiA5LjEyIDIgMTIgMnM1LjI1IDIuMjIgNS40OCA1LjA0QTMgMyAwIDAgMSAyMCAxMGMwIDEuNTktMS4yNCAyLjktMi44MSAyLjk5TDEyLjA3IDIzIDYuODMgMTIuOTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEtlYmFiRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy43NSA4SDExdjVINy43NXYxaC43NWEyLjUgMi41IDAgMCAxIDAgNWgtLjc1djRoLTEuNXYtNEg1LjVhMi41IDIuNSAwIDAgMSAwLTVoLjc1di0xSDNWOGgzLjI1VjdINS41YTIuNSAyLjUgMCAwIDEgMC01aC43NVYxaDEuNXYxaC43NWEyLjUgMi41IDAgMCAxIDAgNWgtLjc1djF6bTEwLTFoLjc1YTIuNSAyLjUgMCAwIDAgMC01aC0uNzVWMWgtMS41djFoLS43NWEyLjUgMi41IDAgMCAwIDAgNWguNzV2MUgxM3Y1aDMuMjV2MWgtLjc1YTIuNSAyLjUgMCAwIDAgMCA1aC43NXY0aDEuNXYtNGguNzVhMi41IDIuNSAwIDAgMCAwLTVoLS43NXYtMUgyMVY4aC0zLjI1Vjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExheWVyc0NsZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkuODEgMTQuOTkgMS4xOS0uOTItMS40My0xLjQzLTEuMTkuOTIgMS40MyAxLjQzem0tLjQ1LTQuNzJMMjEgOWwtOS03LTIuOTEgMi4yNyA3Ljg3IDcuODggMi40LTEuODh6TTMuMjcgMSAyIDIuMjdsNC4yMiA0LjIyTDMgOWwxLjYzIDEuMjdMMTIgMTZsMi4xLTEuNjMgMS40MyAxLjQzTDEyIDE4LjU0bC03LjM3LTUuNzNMMyAxNC4wN2w5IDcgNC45NS0zLjg1TDIwLjczIDIxIDIyIDE5LjczIDMuMjcgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGF5ZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEuOTkgMTguNTQtNy4zNy01LjczTDMgMTQuMDdsOSA3IDktNy0xLjYzLTEuMjctNy4zOCA1Ljc0ek0xMiAxNmw3LjM2LTUuNzNMMjEgOWwtOS03LTkgNyAxLjYzIDEuMjdMMTIgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpcXVvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTRjMCAxLjMuODQgMi40IDIgMi44MlYyMEgzdjJoNnYtMkg3di0zLjE4QzguMTYgMTYuNCA5IDE1LjMgOSAxNFY2SDN2OHptMi02aDJ2M0g1Vjh6TTIwLjYzIDguNTRsLS45NS0uMzJhLjk5MS45OTEgMCAwIDEtLjY4LS45NFYzYzAtLjU1LS40NS0xLTEtMWgtM2MtLjU1IDAtMSAuNDUtMSAxdjQuMjhjMCAuNDMtLjI4LjgxLS42OC45NWwtLjk1LjMyYy0uODIuMjctMS4zNyAxLjAzLTEuMzcgMS44OVYyMGMwIDEuMS45IDIgMiAyaDdjMS4xIDAgMi0uOSAyLTJ2LTkuNTZjMC0uODYtLjU1LTEuNjItMS4zNy0xLjl6TTE2IDRoMXYxaC0xVjR6bS0zIDYuNDQuOTUtLjMyQzE1LjE4IDkuNzIgMTYgOC41NyAxNiA3LjI4VjdoMXYuMjhhMyAzIDAgMCAwIDIuMDUgMi44NWwuOTUuMzFWMTJoLTd2LTEuNTZ6TTIwIDIwaC03di0yaDd2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxBY3Rpdml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEyYzAtMS4xLjktMiAyLTJWNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjRjMS4xIDAgMS45OS45IDEuOTkgMnMtLjg5IDItMiAydjRjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMnYtNGMtMS4xIDAtMi0uOS0yLTJ6bS00LjQyIDQuOEwxMiAxNC41bC0zLjU4IDIuMyAxLjA4LTQuMTItMy4yOS0yLjY5IDQuMjQtLjI1TDEyIDUuOGwxLjU0IDMuOTUgNC4yNC4yNS0zLjI5IDIuNjkgMS4wOSA0LjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbEFpcnBvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE2di0ybC04LjUtNVYzLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNVY5TDIgMTR2Mmw4LjUtMi41VjE5TDggMjAuNVYyMmw0LTEgNCAxdi0xLjVMMTMuNSAxOXYtNS41TDIyIDE2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbEF0bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE3aDJ2LTFoMWMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xaC0zdi0xaDRWOGgtMlY3aC0ydjFoLTFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDN2MUg5djJoMnYxem05LTEzSDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0VjZoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNVYzSDN2Mmw4IDl2NUg2djJoMTJ2LTJoLTV2LTVsOC05ek03LjQzIDcgNS42NiA1aDEyLjY5bC0xLjc4IDJINy40M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxDYWZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDR2MTBjMCAyLjIxIDEuNzkgNCA0IDRoNmMyLjIxIDAgNC0xLjc5IDQtNHYtM2gyYTIgMiAwIDAgMCAyLTJWNWMwLTEuMTEtLjg5LTItMi0yem0wIDVoLTJWNWgydjN6TTQgMTloMTZ2Mkg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbENhcldhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1Yy44MyAwIDEuNS0uNjcgMS41LTEuNSAwLTEtMS41LTIuNy0xLjUtMi43cy0xLjUgMS43LTEuNSAyLjdjMCAuODMuNjcgMS41IDEuNSAxLjV6bS01IDBjLjgzIDAgMS41LS42NyAxLjUtMS41IDAtMS0xLjUtMi43LTEuNS0yLjdzLTEuNSAxLjctMS41IDIuN2MwIC44My42NyAxLjUgMS41IDEuNXpNNyA1Yy44MyAwIDEuNS0uNjcgMS41LTEuNUM4LjUgMi41IDcgLjggNyAuOFM1LjUgMi41IDUuNSAzLjVDNS41IDQuMzMgNi4xNyA1IDcgNXptMTEuOTIgMy4wMUMxOC43MiA3LjQyIDE4LjE2IDcgMTcuNSA3aC0xMWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyAxNHY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThsLTIuMDgtNS45OXpNNi41IDE4Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyAxNSA2LjUgMTVzMS41LjY3IDEuNSAxLjVTNy4zMyAxOCA2LjUgMTh6bTExIDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek01IDEzbDEuNS00LjVoMTFMMTkgMTNINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxDb252ZW5pZW5jZVN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN1Y0SDV2M0gydjEzaDh2LTRoNHY0aDhWN2gtM3ptLTggM0g5djFoMnYxSDhWOWgyVjhIOFY3aDN2M3ptNSAyaC0xdi0yaC0yVjdoMXYyaDFWN2gxdjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOC4xIDEzLjM0IDIuODMtMi44M0wzLjkxIDMuNWE0LjAwOCA0LjAwOCAwIDAgMCAwIDUuNjZsNC4xOSA0LjE4em02Ljc4LTEuODFjMS41My43MSAzLjY4LjIxIDUuMjctMS4zOCAxLjkxLTEuOTEgMi4yOC00LjY1LjgxLTYuMTItMS40Ni0xLjQ2LTQuMi0xLjEtNi4xMi44MS0xLjU5IDEuNTktMi4wOSAzLjc0LTEuMzggNS4yN0wzLjcgMTkuODdsMS40MSAxLjQxTDEyIDE0LjQxbDYuODggNi44OCAxLjQxLTEuNDFMMTMuNDEgMTNsMS40Ny0xLjQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbERyaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMyAyIDIuMDEgMTguMjNDNS4xMyAyMS4yMyA1Ljk3IDIyIDcgMjJoMTBjMS4wMyAwIDEuODctLjc3IDEuOTktMS43N0wyMSAySDN6bTkgMTdjLTEuNjYgMC0zLTEuMzQtMy0zIDAtMiAzLTUuNCAzLTUuNHMzIDMuNCAzIDUuNGMwIDEuNjYtMS4zNCAzLTMgM3ptNi4zMy0xMUg1LjY3bC0uNDQtNGgxMy41M2wtLjQzIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsRmlyZURlcGFydG1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxMi45LTIuMTMgMi4wOWMtLjU2LjU2LS44NyAxLjI5LS44NyAyLjA3QzkgMTguNjggMTAuMzUgMjAgMTIgMjBzMy0xLjMyIDMtMi45NGMwLS43OC0uMzEtMS41Mi0uODctMi4wN0wxMiAxMi45elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNiA2LS40NC41NUMxNC4zOCA4LjAyIDEyIDcuMTkgMTIgNS4zVjJTNCA2IDQgMTNjMCAyLjkyIDEuNTYgNS40NyAzLjg5IDYuODYtLjU2LS43OS0uODktMS43Ni0uODktMi44IDAtMS4zMi41Mi0yLjU2IDEuNDctMy41TDEyIDEwLjFsMy41MyAzLjQ3Yy45NS45MyAxLjQ3IDIuMTcgMS40NyAzLjUgMCAxLjAyLS4zMSAxLjk2LS44NSAyLjc1IDEuODktMS4xNSAzLjI5LTMuMDYgMy43MS01LjMuNjYtMy41NS0xLjA3LTYuOS0zLjg2LTguNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsRmxvcmlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIyYTkgOSAwIDAgMCA5LTkgOSA5IDAgMCAwLTkgOXpNNS42IDEwLjI1YTIuNSAyLjUgMCAwIDAgMy45MiAyLjA2bC0uMDIuMTlhMi41IDIuNSAwIDAgMCA1IDBsLS4wMi0uMTljLjQuMjguODkuNDQgMS40Mi40NGEyLjUgMi41IDAgMCAwIDIuNS0yLjVjMC0xLS41OS0xLjg1LTEuNDMtMi4yNS44NC0uNCAxLjQzLTEuMjUgMS40My0yLjI1YTIuNSAyLjUgMCAwIDAtMy45Mi0yLjA2bC4wMi0uMTlhMi41IDIuNSAwIDAgMC01IDBsLjAyLjE5Yy0uNC0uMjgtLjg5LS40NC0xLjQyLS40NGEyLjUgMi41IDAgMCAwLTIuNSAyLjVjMCAxIC41OSAxLjg1IDEuNDMgMi4yNS0uODQuNC0xLjQzIDEuMjUtMS40MyAyLjI1ek0xMiA1LjVhMi41IDIuNSAwIDAgMSAwIDUgMi41IDIuNSAwIDAgMSAwLTV6TTMgMTNhOSA5IDAgMCAwIDkgOSA5IDkgMCAwIDAtOS05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbEdhc1N0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS43NyA3LjIzLjAxLS4wMS0zLjcyLTMuNzJMMTUgNC41NmwyLjExIDIuMTFjLS45NC4zNi0xLjYxIDEuMjYtMS42MSAyLjMzYTIuNSAyLjUgMCAwIDAgMi41IDIuNWMuMzYgMCAuNjktLjA4IDEtLjIxdjcuMjFjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTFWMTRjMC0xLjEtLjktMi0yLTJoLTFWNWMwLTEuMS0uOS0yLTItMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmgxMHYtNy41aDEuNXY1YTIuNSAyLjUgMCAwIDAgNSAwVjljMC0uNjktLjI4LTEuMzItLjczLTEuNzd6TTEyIDEwSDZWNWg2djV6bTYgMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbEdyb2NlcnlTdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMThjLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6TTEgMnYyaDJsMy42IDcuNTktMS4zNSAyLjQ1Yy0uMTYuMjgtLjI1LjYxLS4yNS45NiAwIDEuMS45IDIgMiAyaDEydi0ySDcuNDJjLS4xNCAwLS4yNS0uMTEtLjI1LS4yNWwuMDMtLjEyLjktMS42M2g3LjQ1Yy43NSAwIDEuNDEtLjQxIDEuNzUtMS4wM2wzLjU4LTYuNDlBMS4wMDMgMS4wMDMgMCAwIDAgMjAgNEg1LjIxbC0uOTQtMkgxem0xNiAxNmMtMS4xIDAtMS45OS45LTEuOTkgMnMuODkgMiAxLjk5IDIgMi0uOSAyLTItLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsSG9zcGl0YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMyAxOWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS0xIDExaC00djRoLTR2LTRINnYtNGg0VjZoNHY0aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxIb3RlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTNjMS42NiAwIDMtMS4zNCAzLTNTOC42NiA3IDcgN3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzem0xMi02aC04djdIM1Y1SDF2MTVoMnYtM2gxOHYzaDJ2LTljMC0yLjIxLTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsTGF1bmRyeVNlcnZpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjE3IDE2LjgzYTQuMDA4IDQuMDA4IDAgMCAwIDUuNjYgMCA0LjAwOCA0LjAwOCAwIDAgMCAwLTUuNjZsLTUuNjYgNS42NnpNMTggMi4wMSA2IDJjLTEuMTEgMC0yIC44OS0yIDJ2MTZjMCAxLjExLjg5IDIgMiAyaDEyYzEuMTEgMCAyLS44OSAyLTJWNGMwLTEuMTEtLjg5LTEuOTktMi0xLjk5ek0xMCA0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTcgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem01IDE2Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxMaWJyYXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTEuNTVDOS42NCA5LjM1IDYuNDggOCAzIDh2MTFjMy40OCAwIDYuNjQgMS4zNSA5IDMuNTUgMi4zNi0yLjE5IDUuNTItMy41NSA5LTMuNTVWOGMtMy40OCAwLTYuNjQgMS4zNS05IDMuNTV6TTEyIDhjMS42NiAwIDMtMS4zNCAzLTNzLTEuMzQtMy0zLTMtMyAxLjM0LTMgMyAxLjM0IDMgMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbE1hbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA2aC0yYzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZINWMtMS4xIDAtMS45OS45LTEuOTkgMkwzIDIwYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTctM2MxLjY2IDAgMyAxLjM0IDMgM0g5YzAtMS42NiAxLjM0LTMgMy0zem0wIDEwYy0yLjc2IDAtNS0yLjI0LTUtNWgyYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoMmMwIDIuNzYtMi4yNCA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxNb3ZpZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAzdjJoLTJWM0g4djJINlYzSDR2MThoMnYtMmgydjJoOHYtMmgydjJoMlYzaC0yek04IDE3SDZ2LTJoMnYyem0wLTRINnYtMmgydjJ6bTAtNEg2VjdoMnYyem0xMCA4aC0ydi0yaDJ2MnptMC00aC0ydi0yaDJ2MnptMC00aC0yVjdoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbE9mZmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNDEgMTEuNTgtOS05QzEyLjA1IDIuMjIgMTEuNTUgMiAxMSAySDRjLTEuMSAwLTIgLjktMiAydjdjMCAuNTUuMjIgMS4wNS41OSAxLjQybDkgOWMuMzYuMzYuODYuNTggMS40MS41OC41NSAwIDEuMDUtLjIyIDEuNDEtLjU5bDctN2MuMzctLjM2LjU5LS44Ni41OS0xLjQxIDAtLjU1LS4yMy0xLjA2LS41OS0xLjQyek01LjUgN0M0LjY3IDcgNCA2LjMzIDQgNS41UzQuNjcgNCA1LjUgNCA3IDQuNjcgNyA1LjUgNi4zMyA3IDUuNSA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbFBhcmtpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzSDZ2MThoNHYtNmgzYzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02em0uMiA4SDEwVjdoMy4yYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxQaGFybWFjeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVoLTIuNjRsMS4xNC0zLjE0TDE3LjE1IDFsLTEuNDYgNEgzdjJsMiA2LTIgNnYyaDE4di0ybC0yLTYgMi02VjV6bS01IDloLTN2M2gtMnYtM0g4di0yaDNWOWgydjNoM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbFBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi42MiAxMC43OWMxLjQ0IDIuODMgMy43NiA1LjE0IDYuNTkgNi41OWwyLjItMi4yYy4yNy0uMjcuNjctLjM2IDEuMDItLjI0IDEuMTIuMzcgMi4zMy41NyAzLjU3LjU3LjU1IDAgMSAuNDUgMSAxVjIwYzAgLjU1LS40NSAxLTEgMS05LjM5IDAtMTctNy42MS0xNy0xNyAwLS41NS40NS0xIDEtMWgzLjVjLjU1IDAgMSAuNDUgMSAxIDAgMS4yNS4yIDIuNDUuNTcgMy41Ny4xMS4zNS4wMy43NC0uMjUgMS4wMmwtMi4yIDIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxQaXp6YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDOC40MyAyIDUuMjMgMy41NCAzLjAxIDZMMTIgMjJsOC45OS0xNkMxOC43OCAzLjU1IDE1LjU3IDIgMTIgMnpNNyA3YzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTUgOGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsUGxheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEyYzAtMS4xLjktMiAyLTJWNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjRjMS4xIDAgMS45OS45IDEuOTkgMnMtLjg5IDItMiAydjRjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMnYtNGMtMS4xIDAtMi0uOS0yLTJ6bS00LjQyIDQuOEwxMiAxNC41bC0zLjU4IDIuMyAxLjA4LTQuMTItMy4yOS0yLjY5IDQuMjQtLjI1TDEyIDUuOGwxLjU0IDMuOTUgNC4yNC4yNS0zLjI5IDIuNjkgMS4wOSA0LjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMb2NhbFBvbGljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEgMyA1djZjMCA1LjU1IDMuODQgMTAuNzQgOSAxMiA1LjE2LTEuMjYgOS02LjQ1IDktMTJWNWwtOS00em0yLjUgMTEuNTkuOSAzLjg4LTMuNC0yLjA1LTMuNCAyLjA1LjktMy44Ny0zLTIuNTkgMy45Ni0uMzRMMTIgNi4wMmwxLjU0IDMuNjQgMy45Ni4zNC0zIDIuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsUG9zdE9mZmljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCA0LTggNS04LTVWNmw4IDUgOC01djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsUHJpbnRzaG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOEg1Yy0xLjY2IDAtMyAxLjM0LTMgM3Y2aDR2NGgxMnYtNGg0di02YzAtMS42Ni0xLjM0LTMtMy0zem0tMyAxMUg4di01aDh2NXptMy03Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bS0xLTlINnY0aDEyVjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsU2VlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIzLjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAyIDcuMTcgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJoLTMuMTdMMTUgMkg5em0zIDE1Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYWxTaGlwcGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDhoLTNWNEgzYy0xLjEgMC0yIC45LTIgMnYxMWgyYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoNmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDJ2LTVsLTMtNHpNNiAxOC41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXptMTMuNS05IDEuOTYgMi41SDE3VjkuNWgyLjV6bS0xLjUgOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2FsVGF4aSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDYuMDFDMTguNzIgNS40MiAxOC4xNiA1IDE3LjUgNUgxNVYzSDl2Mkg2LjVjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTJ2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuNSAxNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgMTMgNi41IDEzczEuNS42NyAxLjUgMS41UzcuMzMgMTYgNi41IDE2em0xMSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNNSAxMWwxLjUtNC41aDExTDE5IDExSDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExvY2F0aW9uUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM4LjEzIDIgNSA1LjEzIDUgOWMwIDEuNzQuNSAzLjM3IDEuNDEgNC44NC45NSAxLjU0IDIuMiAyLjg2IDMuMTYgNC40LjQ3Ljc1LjgxIDEuNDUgMS4xNyAyLjI2LjI2LjU1LjQ3IDEuNSAxLjI2IDEuNXMxLS45NSAxLjI1LTEuNWMuMzctLjgxLjctMS41MSAxLjE3LTIuMjYuOTYtMS41MyAyLjIxLTIuODUgMy4xNi00LjRDMTguNSAxMi4zNyAxOSAxMC43NCAxOSA5YzAtMy44Ny0zLjEzLTctNy03em0wIDkuNzVhMi41IDIuNSAwIDAgMSAwLTUgMi41IDIuNSAwIDAgMSAwIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEx1bmNoRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMGMuMzItMy4yOC00LjI4LTYtOS45OS02UzEuNyA2LjcyIDIuMDIgMTBIMjJ6TTUuMzUgMTMuNWMuNTUgMCAuNzguMTQgMS4xNS4zNi40NS4yNyAxLjA3LjY0IDIuMTguNjRzMS43My0uMzcgMi4xOC0uNjRjLjM3LS4yMy41OS0uMzYgMS4xNS0uMzYuNTUgMCAuNzguMTQgMS4xNS4zNi40NS4yNyAxLjA3LjY0IDIuMTguNjRzMS43My0uMzcgMi4xOC0uNjRjLjM3LS4yMy41OS0uMzYgMS4xNS0uMzYuNTUgMCAuNzguMTQgMS4xNS4zNi40NS4yNyAxLjA3LjYzIDIuMTcuNjR2LTEuOThzLS43OS0uMTYtMS4xNi0uMzhjLS40NS0uMjctMS4wNy0uNjQtMi4xOC0uNjRzLTEuNzMuMzctMi4xOC42NGMtLjM3LjIzLS42LjM2LTEuMTUuMzZzLS43OC0uMTQtMS4xNS0uMzZjLS40NS0uMjctMS4wNy0uNjQtMi4xOC0uNjRzLTEuNzMuMzctMi4xOC42NGMtLjM3LjIzLS41OS4zNi0xLjE1LjM2LS41NSAwLS43OC0uMTQtMS4xNS0uMzYtLjQ1LS4yNy0xLjA3LS42NC0yLjE4LS42NHMtMS43My4zNy0yLjE4LjY0Yy0uMzcuMjMtLjU5LjM2LTEuMTUuMzZ2MmMxLjExIDAgMS43My0uMzcgMi4yMS0uNjQuMzctLjIzLjU5LS4zNiAxLjE0LS4zNnpNMiAxNnYyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJ2LTJIMnpcIn0sXCJjaGlsZFwiOltdfV19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC41IDMtLjE2LjAzTDE1IDUuMSA5IDMgMy4zNiA0LjljLS4yMS4wNy0uMzYuMjUtLjM2LjQ4VjIwLjVjMCAuMjguMjIuNS41LjVsLjE2LS4wM0w5IDE4LjlsNiAyLjEgNS42NC0xLjljLjIxLS4wNy4zNi0uMjUuMzYtLjQ4VjMuNWMwLS4yOC0uMjItLjUtLjUtLjV6TTE1IDE5bC02LTIuMTFWNWw2IDIuMTFWMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hcHNVZ2MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJjMCAxLjU0LjM2IDIuOTguOTcgNC4yOUwxIDIzbDYuNzEtMS45N2MxLjMxLjYxIDIuNzUuOTcgNC4yOS45NyA1LjUyIDAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTQgMTFoLTN2M2gtMnYtM0g4di0yaDNWOGgydjNoM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNZWRpY2FsSW5mb3JtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA3aC01VjRjMC0xLjEtLjktMi0yLTJoLTJjLTEuMSAwLTIgLjktMiAydjNINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0yem0tOS0zaDJ2NWgtMlY0em0wIDEySDl2Mkg3di0ySDV2LTJoMnYtMmgydjJoMnYyem0yLTEuNVYxM2g2djEuNWgtNnptMCAzVjE2aDR2MS41aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNZWRpY2FsU2VydmljZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC00VjRjMC0xLjEtLjktMi0yLTJoLTRjLTEuMSAwLTIgLjktMiAydjJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yek0xMCA0aDR2MmgtNFY0em02IDExaC0zdjNoLTJ2LTNIOHYtMmgzdi0zaDJ2M2gzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1lbnVCb29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNWMtMS4xMS0uMzUtMi4zMy0uNS0zLjUtLjUtMS45NSAwLTQuMDUuNC01LjUgMS41LTEuNDUtMS4xLTMuNTUtMS41LTUuNS0xLjVTMi40NSA0LjkgMSA2djE0LjY1YzAgLjI1LjI1LjUuNS41LjEgMCAuMTUtLjA1LjI1LS4wNUMzLjEgMjAuNDUgNS4wNSAyMCA2LjUgMjBjMS45NSAwIDQuMDUuNCA1LjUgMS41IDEuMzUtLjg1IDMuOC0xLjUgNS41LTEuNSAxLjY1IDAgMy4zNS4zIDQuNzUgMS4wNS4xLjA1LjE1LjA1LjI1LjA1LjI1IDAgLjUtLjI1LjUtLjVWNmMtLjYtLjQ1LTEuMjUtLjc1LTItMXptMCAxMy41Yy0xLjEtLjM1LTIuMy0uNS0zLjUtLjUtMS43IDAtNC4xNS42NS01LjUgMS41VjhjMS4zNS0uODUgMy44LTEuNSA1LjUtMS41IDEuMiAwIDIuNC4xNSAzLjUuNXYxMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDEwLjVjLjg4IDAgMS43My4wOSAyLjUuMjZWOS4yNGMtLjc5LS4xNS0xLjY0LS4yNC0yLjUtLjI0LTEuNyAwLTMuMjQuMjktNC41LjgzdjEuNjZjMS4xMy0uNjQgMi43LS45OSA0LjUtLjk5ek0xMyAxMi40OXYxLjY2YzEuMTMtLjY0IDIuNy0uOTkgNC41LS45OS44OCAwIDEuNzMuMDkgMi41LjI2VjExLjljLS43OS0uMTUtMS42NC0uMjQtMi41LS4yNC0xLjcgMC0zLjI0LjMtNC41Ljgzek0xNy41IDE0LjMzYy0xLjcgMC0zLjI0LjI5LTQuNS44M3YxLjY2YzEuMTMtLjY0IDIuNy0uOTkgNC41LS45OS44OCAwIDEuNzMuMDkgMi41LjI2di0xLjUyYy0uNzktLjE2LTEuNjQtLjI0LTIuNS0uMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1lcmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi40MSAyMSA1IDE5LjU5bDQuODMtNC44M2MuNzUtLjc1IDEuMTctMS43NyAxLjE3LTIuODN2LTUuMUw5LjQxIDguNDEgOCA3bDQtNCA0IDQtMS40MSAxLjQxTDEzIDYuODN2NS4xYzAgMS4wNi40MiAyLjA4IDEuMTcgMi44M0wxOSAxOS41OSAxNy41OSAyMSAxMiAxNS40MSA2LjQxIDIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNaW5vckNyYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTIgOS4wMUMxOC43MiA4LjQyIDE4LjE2IDggMTcuNSA4aC0xMWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyAxNXY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThsLTIuMDgtNS45OXpNNi44NSAxMGgxMC4yOWwxLjA0IDNINS44MWwxLjA0LTN6TTYgMTcuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVM4LjMzIDE5IDcuNSAxOSA2IDE4LjMzIDYgMTcuNXptOSAwYzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNS0xLjUtLjY3LTEuNS0xLjV6TTkuNDEgNSA4IDYuNDFsLTMtM0w2LjQxIDJsMyAzek0xNiA2LjQxIDE0LjU5IDVsMy0zTDE5IDMuNDFsLTMgM3pNMTMgNWgtMlYwaDJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWlzY2VsbGFuZW91c1NlcnZpY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuMTcgMTMuNzEgMS40LTIuNDJjLjA5LS4xNS4wNS0uMzQtLjA4LS40NWwtMS40OC0xLjE2Yy4wMy0uMjIuMDUtLjQ1LjA1LS42OHMtLjAyLS40Ni0uMDUtLjY5bDEuNDgtMS4xNmMuMTMtLjExLjE3LS4zLjA4LS40NWwtMS40LTIuNDJjLS4wOS0uMTUtLjI3LS4yMS0uNDMtLjE1bC0xLjc0LjdjLS4zNi0uMjgtLjc1LS41MS0xLjE4LS42OWwtLjI2LTEuODVhLjM2NC4zNjQgMCAwIDAtLjM1LS4yOWgtMi44Yy0uMTcgMC0uMzIuMTMtLjM1LjNMNi44IDQuMTVjLS40Mi4xOC0uODIuNDEtMS4xOC42OWwtMS43NC0uN2MtLjE2LS4wNi0uMzQgMC0uNDMuMTVsLTEuNCAyLjQyYy0uMDkuMTUtLjA1LjM0LjA4LjQ1bDEuNDggMS4xNmMtLjAzLjIyLS4wNS40NS0uMDUuNjhzLjAyLjQ2LjA1LjY5bC0xLjQ4IDEuMTZjLS4xMy4xMS0uMTcuMy0uMDguNDVsMS40IDIuNDJjLjA5LjE1LjI3LjIxLjQzLjE1bDEuNzQtLjdjLjM2LjI4Ljc1LjUxIDEuMTguNjlsLjI2IDEuODVjLjAzLjE2LjE4LjI5LjM1LjI5aDIuOGMuMTcgMCAuMzItLjEzLjM1LS4zbC4yNi0xLjg1Yy40Mi0uMTguODItLjQxIDEuMTgtLjY5bDEuNzQuN2MuMTYuMDYuMzQgMCAuNDMtLjE1ek04LjgxIDExYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpNMjEuOTIgMTguNjdsLS45Ni0uNzRjLjAyLS4xNC4wNC0uMjkuMDQtLjQ0IDAtLjE1LS4wMS0uMy0uMDQtLjQ0bC45NS0uNzRjLjA4LS4wNy4xMS0uMTkuMDUtLjI5bC0uOS0xLjU1Yy0uMDUtLjEtLjE3LS4xMy0uMjgtLjFsLTEuMTEuNDVjLS4yMy0uMTgtLjQ4LS4zMy0uNzYtLjQ0bC0uMTctMS4xOGEuMjE2LjIxNiAwIDAgMC0uMjEtLjJoLTEuNzljLS4xMSAwLS4yMS4wOC0uMjIuMTlsLS4xNyAxLjE4Yy0uMjcuMTItLjUzLjI2LS43Ni40NGwtMS4xMS0uNDVhLjIzLjIzIDAgMCAwLS4yOC4xbC0uOSAxLjU1Yy0uMDUuMS0uMDQuMjIuMDUuMjlsLjk1Ljc0YTMuMTQ1IDMuMTQ1IDAgMCAwIDAgLjg4bC0uOTUuNzRjLS4wOC4wNy0uMTEuMTktLjA1LjI5bC45IDEuNTVjLjA1LjEuMTcuMTMuMjguMWwxLjExLS40NWMuMjMuMTguNDguMzMuNzYuNDRsLjE3IDEuMThjLjAyLjExLjExLjE5LjIyLjE5aDEuNzljLjExIDAgLjIxLS4wOC4yMi0uMTlsLjE3LTEuMThjLjI3LS4xMi41My0uMjYuNzUtLjQ0bDEuMTIuNDVjLjEuMDQuMjIgMCAuMjgtLjFsLjktMS41NWMuMDYtLjA5LjAzLS4yMS0uMDUtLjI4em0tNC4yOS4xNmExLjM1IDEuMzUgMCAxIDEgLjAwMS0yLjcwMSAxLjM1IDEuMzUgMCAwIDEtLjAwMSAyLjcwMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW9kZU9mVHJhdmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuMzEgMTguOWMtLjk2IDEtMi4wNiAyLjAzLTMuMzEgMy4xLTUuMzMtNC41NS04LTguNDgtOC0xMS44QzQgNS4yMiA3LjggMiAxMiAyYzQgMCA3LjY0IDIuOTIgNy45NyA3LjVoMy41M0wxOSAxNGwtNC41LTQuNWgzLjQ3QzE3LjY1IDYuMjQgMTUuMTMgNCAxMiA0Yy0zLjM1IDAtNiAyLjU3LTYgNi4yIDAgMi4zNCAxLjk1IDUuNDQgNiA5LjE0LjY0LS41OSAxLjIzLTEuMTYgMS43Ny0xLjcxYTIuNSAyLjUgMCAwIDEtLjI3LTEuMTIgMi41IDIuNSAwIDAgMSA1IDAgMi40OTIgMi40OTIgMCAwIDEtMy4xOSAyLjM5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb25leSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA4aDJ2OEg1em03IDBIOWMtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTF6bS0xIDZoLTF2LTRoMXY0em03LTZoLTNjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDNjLjU1IDAgMS0uNDUgMS0xVjljMC0uNTUtLjQ1LTEtMS0xem0tMSA2aC0xdi00aDF2NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNNCA2aDE2djEySDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNHYxNmgyMFY0SDJ6bTIgMTRWNmgxNnYxMkg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3BlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDdjMC0xLjEtLjktMi0yLTJoLTN2MmgzdjIuNjVMMTMuNTIgMTRIMTBWOUg2Yy0yLjIxIDAtNCAxLjc5LTQgNHYzaDJjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g0LjQ4TDE5IDEwLjM1Vjd6TTcgMTdjLS41NSAwLTEtLjQ1LTEtMWgyYzAgLjU1LS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA2aDV2Mkg1ek0xOSAxM2MtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3NxdWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDhoMTBjLjI5IDAgLjU3LjA2Ljg0LjEzLjA5LS4zMy4xNi0uNjcuMTYtMS4wNCAwLTEuMzEtLjY1LTIuNTMtMS43NC0zLjI1TDEyIDEgNy43NCAzLjg0QTMuODg3IDMuODg3IDAgMCAwIDYgNy4wOWMwIC4zNy4wNy43MS4xNiAxLjA0LjI3LS4wNy41NS0uMTMuODQtLjEzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA3YzAtMS4xLTItMy0yLTNzLTIgMS45LTIgM2MwIC43NC40IDEuMzggMSAxLjcyVjEzaC0ydi0yYzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjJIM1Y4LjcyYy42LS4zNCAxLS45OCAxLTEuNzIgMC0xLjEtMi0zLTItM1MwIDUuOSAwIDdjMCAuNzQuNCAxLjM4IDEgMS43MlYyMWg5di00YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2NGg5VjguNzJjLjYtLjM0IDEtLjk4IDEtMS43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTW92aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNzEgOS43MSAyMiAxMlY2aC02bDIuMjkgMi4yOS00LjE3IDQuMTdhLjk5Ni45OTYgMCAwIDEtMS40MSAwbC0xLjE3LTEuMTdhMyAzIDAgMCAwLTQuMjQgMEwyIDE2LjU5IDMuNDEgMThsNS4yOS01LjI5YS45OTYuOTk2IDAgMCAxIDEuNDEgMGwxLjE3IDEuMTdhMyAzIDAgMCAwIDQuMjQgMGw0LjE5LTQuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE11bHRpcGxlU3RvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3IDQgNCA0LTQgNFY5aC00VjdoNFY0em0tNyAzYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6TTYgN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0xIDEwaDR2LTJIN3YtM2wtNCA0IDQgNHYtM3ptNyAwYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTQgMGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNdXNldW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMVY5TDEyIDIgMiA5djJoMnY5SDJ2MmgyMHYtMmgtMnYtOWgyem0tNiA3aC0ydi00bC0yIDMtMi0zdjRIOHYtN2gybDIgMyAyLTNoMnY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNeUxvY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTguOTQgM0E4Ljk5NCA4Ljk5NCAwIDAgMCAxMyAzLjA2VjFoLTJ2Mi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAzLjA2IDExSDF2MmgyLjA2QTguOTk0IDguOTk0IDAgMCAwIDExIDIwLjk0VjIzaDJ2LTIuMDZBOC45OTQgOC45OTQgMCAwIDAgMjAuOTQgMTNIMjN2LTJoLTIuMDZ6TTEyIDE5Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmF2aWdhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIgNC41IDIwLjI5bC43MS43MUwxMiAxOGw2Ljc5IDMgLjcxLS43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmVhck1lRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2LjM0IDIxIDNsLTMuMzQgOUwxMiA2LjM0em0xMC42MSAxMy40NEw0LjIyIDEuMzkgMi44MSAyLjgxbDUuMDcgNS4wN0wzIDkuNjl2MS40MWw3LjA3IDIuODNMMTIuOSAyMWgxLjQxbDEuODEtNC44OCA1LjA3IDUuMDcgMS40Mi0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZWFyTWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDMgMyAxMC41M3YuOThsNi44NCAyLjY1TDEyLjQ4IDIxaC45OEwyMSAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROaWdodGxpZmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDVoMTRsLTYgOXY0aDJ2Mkg1di0yaDJ2LTRMMSA1em05LjEgNCAxLjQtMkg0LjQ5bDEuNCAyaDQuMjF6TTE3IDVoNXYzaC0zdjljMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM2EzIDMgMCAwIDEgMSAuMTdWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9DcmFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDkuMDFDMTguNzIgOC40MiAxOC4xNiA4IDE3LjUgOGgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTV2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuODUgMTBoMTAuMjlsMS4wNCAzSDUuODFsMS4wNC0zek02IDE3LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVTOC4zMyAxOSA3LjUgMTkgNiAxOC4zMyA2IDE3LjV6bTkgMGMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjUtMS41LS42Ny0xLjUtMS41ek0xMiA2LjM2IDkuMTcgMy41NGwxLjQxLTEuNDFMMTIgMy41NCAxNS41NCAwbDEuNDEgMS40MUwxMiA2LjM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb01lYWxzT3VsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTRWNmMwLTEuNzYgMi4yNC00IDUtNHYxNi4xN2wtMi0yVjE0aC0zem00LjQ5IDkuMzFMMTAuMDIgMTIuODVjLS4zMy4wOS0uNjYuMTUtMS4wMi4xNXY5SDd2LTljLTIuMjEgMC00LTEuNzktNC00VjUuODNMLjY5IDMuNTEgMi4xIDIuMWwxOS44IDE5LjgtMS40MSAxLjQxek02LjE3IDkgNSA3LjgzVjloMS4xN3pNOSAySDd2Mi4xN2wyIDJWMnptNCA3VjJoLTJ2Ni4xN2wxLjg1IDEuODVjLjA5LS4zMy4xNS0uNjYuMTUtMS4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9NZWFscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE0VjZjMC0xLjc2IDIuMjQtNCA1LTR2MTYuMTdsLTItMlYxNGgtM3ptNC40OSA5LjMxTDEwLjAyIDEyLjg1Yy0uMzMuMDktLjY2LjE1LTEuMDIuMTV2OUg3di05Yy0yLjIxIDAtNC0xLjc5LTQtNFY1LjgzTC42OSAzLjUxIDIuMSAyLjFsMTkuOCAxOS44LTEuNDEgMS40MXpNNi4xNyA5IDUgNy44M1Y5aDEuMTd6TTkgMkg3djIuMTdsMiAyVjJ6bTQgN1YyaC0ydjYuMTdsMS44NSAxLjg1Yy4wOS0uMzMuMTUtLjY2LjE1LTEuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vVHJhbnNmZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS4xOSAyMS4xOSAyLjgxIDIuODEgMS4zOSA0LjIyIDQgNi44M1YxNmMwIC44OC4zOSAxLjY3IDEgMi4yMlYyMGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWg4djFjMCAuNTUuNDUgMSAxIDFoMWMuMDUgMCAuMDktLjAyLjE0LS4wM2wxLjY0IDEuNjQgMS40MS0xLjQyek03LjUgMTdjLS44MyAwLTEuNS0uNjctMS41LTEuNVM2LjY3IDE0IDcuNSAxNHMxLjUuNjcgMS41IDEuNVM4LjMzIDE3IDcuNSAxN3pNNiAxMVY4LjgzTDguMTcgMTFINnptMi44My01TDUuNzggMi45NUM3LjI0IDIuMTYgOS40OCAyIDEyIDJjNC40MiAwIDggLjUgOCA0djEwYzAgLjM1LS4wOC42Ny0uMTkuOThMMTMuODMgMTFIMThWNkg4LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RMaXN0ZWRMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM4LjE0IDIgNSA1LjE0IDUgOWMwIDUuMjUgNyAxMyA3IDEzczctNy43NSA3LTEzYzAtMy44Ni0zLjE0LTctNy03em0uODggMTMuNzVoLTEuNzVWMTRoMS43NXYxLjc1em0wLTIuODdoLTEuNzVjMC0yLjg0IDIuNjItMi42MiAyLjYyLTQuMzggMC0uOTYtLjc5LTEuNzUtMS43NS0xLjc1cy0xLjc1Ljc5LTEuNzUgMS43NUg4LjVDOC41IDYuNTcgMTAuMDcgNSAxMiA1czMuNSAxLjU3IDMuNSAzLjVjMCAyLjE5LTIuNjIgMi40MS0yLjYyIDQuMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMmgyTDEyIDIgNS4wNSAxMkg3bC0zLjkgNmg2LjkydjRoMy45NnYtNEgyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVkYWxCaWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguMTggMTAtMS43LTQuNjhBMi4wMDggMi4wMDggMCAwIDAgMTQuNiA0SDEydjJoMi42bDEuNDYgNGgtNC44MWwtLjM2LTFIMTJWN0g3djJoMS43NWwxLjgyIDVIOS45Yy0uNDQtMi4yMy0yLjMxLTMuODgtNC42NS0zLjk5QzIuNDUgOS44NyAwIDEyLjIgMCAxNWMwIDIuOCAyLjIgNSA1IDUgMi40NiAwIDQuNDUtMS42OSA0LjktNGg0LjJjLjQ0IDIuMjMgMi4zMSAzLjg4IDQuNjUgMy45OSAyLjguMTMgNS4yNS0yLjE5IDUuMjUtNSAwLTIuOC0yLjItNS01LTVoLS44MnpNNy44MiAxNmMtLjQgMS4xNy0xLjQ5IDItMi44MiAyLTEuNjggMC0zLTEuMzItMy0zczEuMzItMyAzLTNjMS4zMyAwIDIuNDIuODMgMi44MiAySDV2MmgyLjgyem02LjI4LTJoLTEuNGwtLjczLTJIMTVjLS40NC41OC0uNzYgMS4yNS0uOSAyem00LjkgNGMtMS42OCAwLTMtMS4zMi0zLTMgMC0uOTMuNDEtMS43MyAxLjA1LTIuMjhsLjk2IDIuNjQgMS44OC0uNjgtLjk3LTIuNjdjLjAzIDAgLjA2LS4wMS4wOS0uMDEgMS42OCAwIDMgMS4zMiAzIDNzLTEuMzMgMy0zLjAxIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcnNvblBpbkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDOC4xNCAyIDUgNS4xNCA1IDljMCA1LjI1IDcgMTMgNyAxM3M3LTcuNzUgNy0xM2MwLTMuODYtMy4xNC03LTctN3ptMCAyYTIgMiAwIDEgMSAuMDAxIDQuMDAxQTIgMiAwIDAgMSAxMiA0em0wIDEwYy0xLjY3IDAtMy4xNC0uODUtNC0yLjE1LjAyLTEuMzIgMi42Ny0yLjA1IDQtMi4wNXMzLjk4LjczIDQgMi4wNUE0Ljc4MyA0Ljc4MyAwIDAgMSAxMiAxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmE5IDkgMCAwIDAtOSA5YzAgNC4xNyAyLjg0IDcuNjcgNi42OSA4LjY5TDEyIDIybDIuMzEtMi4zMUMxOC4xNiAxOC42NyAyMSAxNS4xNyAyMSAxMWE5IDkgMCAwIDAtOS05em0wIDJjMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDMtMy0xLjM0LTMtMyAxLjM0LTMgMy0zem0wIDE0LjNhNy4yIDcuMiAwIDAgMS02LTMuMjJjLjAzLTEuOTkgNC0zLjA4IDYtMy4wOCAxLjk5IDAgNS45NyAxLjA5IDYgMy4wOGE3LjIgNy4yIDAgMCAxLTYgMy4yMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVzdENvbnRyb2xSb2RlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS4zMSAxNy4zOC0yLjM5LTIuMTNjLjUyLTIuMzYtMS4zNi00LjI1LTMuNDItNC4yNS0xLjE2IDAtMy41LjktMy41IDMuNSAwIC45Ny4zOSAxLjg0IDEuMDMgMi40N2wtLjcxLjcxQTQuNDU3IDQuNDU3IDAgMCAxIDExIDE0LjVjMC0xLjcuOTYtMy4xNyAyLjM1LTMuOTNhNSA1IDAgMCAwLTIuMjgtLjU3Yy0yLjM4IDAtNC4zNyAxLjY1LTQuOTEgMy44N0EyLjk5NyAyLjk5NyAwIDAgMSA0IDExYzAtMS42NiAxLjM0LTMgMy0zaDIuNWEyLjUgMi41IDAgMCAwIDAtNUg4Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxaDEuNWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjVIN2E1LjAwMiA1LjAwMiAwIDAgMC0xIDkuOXYuMDNDNiAxOC43MyA4LjI3IDIxIDExLjA3IDIxaDguODZjMS44NyAwIDIuODEtMi4zNCAxLjM4LTMuNjJ6TTE4IDE5Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlc3RDb250cm9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTV2LTJoLTMuMDdjLS4wNS0uMzktLjEyLS43Ny0uMjItMS4xNGwyLjU4LTEuNDktMS0xLjczTDE2LjkyIDEwYy0uMjgtLjQ4LS42Mi0uOTEtLjk5LTEuMjkuMDQtLjIzLjA3LS40Ni4wNy0uNzEgMC0uOC0uMjQtMS41NS0uNjUtMi4xOEwxNyA0LjE3bC0xLjQxLTEuNDEtMS43MiAxLjcyYy0xLjY4LS44OS0zLjEtLjMzLTMuNzMgMEw4LjQxIDIuNzYgNyA0LjE3bDEuNjUgMS42NUEzLjk5IDMuOTkgMCAwIDAgOCA4YzAgLjI1LjAzLjQ4LjA3LjcyLS4zNy4zOC0uNzEuODEtLjk5IDEuMjhMNC43MSA4LjYzbC0xIDEuNzMgMi41OCAxLjQ5Yy0uMS4zNy0uMTcuNzUtLjIyIDEuMTRIM3YyaDMuMDdjLjA1LjM5LjEyLjc3LjIyIDEuMTRsLTIuNTggMS40OSAxIDEuNzNMNy4wOCAxOGMxLjA4IDEuODEgMi44OCAzIDQuOTIgM3MzLjg0LTEuMTkgNC45Mi0zbDIuMzcgMS4zNyAxLTEuNzMtMi41OC0xLjQ5Yy4xLS4zNy4xNy0uNzUuMjItMS4xNEgyMXptLTggMmgtMnYtNmgydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBpbkRyb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA4YzAtMy4zMS0yLjY5LTYtNi02UzYgNC42OSA2IDhjMCA0LjUgNiAxMSA2IDExczYtNi41IDYtMTF6bS04IDBjMC0xLjEuOS0yIDItMnMyIC45IDIgMmEyIDIgMCAxIDEtNCAwek01IDIwdjJoMTR2LTJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGxhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzguMTMgMiA1IDUuMTMgNSA5YzAgNS4yNSA3IDEzIDcgMTNzNy03Ljc1IDctMTNjMC0zLjg3LTMuMTMtNy03LTd6bTAgOS41YTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQbHVtYmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjI4IDQuOTMtMi4xMi0yLjEyYy0uNzgtLjc4LTIuMDUtLjc4LTIuODMgMEwxMS41IDUuNjRsMi4xMiAyLjEyIDIuMTItMi4xMiAzLjU0IDMuNTRhMy4wMTIgMy4wMTIgMCAwIDAgMC00LjI1ek01LjQ5IDEzLjc3Yy41OS41OSAxLjU0LjU5IDIuMTIgMGwyLjQ3LTIuNDctMi4xMi0yLjEzLTIuNDcgMi40N2MtLjU5LjU5LS41OSAxLjU0IDAgMi4xM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuMDQgNy43Ni0uNzEuNzEtLjcxLjcxTDEwLjQ0IDZjLS41OS0uNi0xLjU0LS42LTIuMTItLjAxYTEuNDkgMS40OSAwIDAgMCAwIDIuMTJsMy4xOCAzLjE4LS43MS43MS02LjM2IDYuMzZjLS43OC43OC0uNzggMi4wNSAwIDIuODMuNzguNzggMi4wNS43OCAyLjgzIDBMMTYuNDUgMTJhLjk5Ni45OTYgMCAxIDAgMS40MS0xLjQxbC0yLjgyLTIuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJhaWx3YXlBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgOGE3IDcgMCAwIDAtMTEuOTUtNC45NUEzMy44IDMzLjggMCAwIDAgOSAzYy00LjQyIDAtOCAuNS04IDR2MTAuNUEzLjUgMy41IDAgMCAwIDQuNSAyMUwzIDIyLjV2LjVoMTJ2LS41TDEzLjUgMjFhMy41IDMuNSAwIDAgMCAzLjUtMy41di0yLjU4QTcgNyAwIDAgMCAyMyA4ek0zIDEyVjdoNi4wOGE2Ljk2IDYuOTYgMCAwIDAgMS4xOCA1SDN6bTYgN2MtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTcuNzEtNi4wNi0uMi4wM0wxNiAxM2wtLjQ3LS4wMi0uMTYtLjAyLS4yOS0uMDQtLjItLjA0LS4yMi0uMDZhMS41NSAxLjU1IDAgMCAxLS4yMy0uMDdsLS4xMy0uMDVBNC45OSA0Ljk5IDAgMCAxIDExLjEgN2MuMDQtLjE5LjA5LS4zNy4xNS0uNTRsLjA1LS4xNC4xNS0uMzguMDctLjE1LjItLjM2LjA3LS4xMi4zLS40Mi4wMi0uMDJjLjI0LS4zLjUyLS41Ny44Mi0uODFsLjAxLS4wMS40Ni0uMzIuMDMtLjAyQTUuMjUgNS4yNSAwIDAgMSAxNiAzYTUgNSAwIDAgMSAuNzEgOS45NHpNMTUgNGgydjVoLTJ6bTAgNmgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJhbWVuRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA2SDhWNC42NWwxLS4xMlY2em0wIDZIOFY3aDF2NXpNNiA3aDF2NUg2Vjd6bTAtMi4xMiAxLS4xMlY2SDZWNC44OHpNMjIgM1YyTDUgNHY4SDJjMCAzLjY5IDIuNDcgNi44NiA2IDguMjVWMjJoOHYtMS43NWMzLjUzLTEuMzkgNi00LjU2IDYtOC4yNUgxMFY3aDEyVjZIMTBWNC40MUwyMiAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSYW1wTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDIxaC0yVjYuODNMOS40MSA4LjQxIDggN2w0LTQgNCA0LTEuNDEgMS40MUwxMyA2LjgzVjljMCA0LjI3IDQuMDMgNy4xMyA2IDguMjdsLTEuNDYgMS40NmMtMS45MS0xLjE2LTMuNDQtMi41My00LjU0LTQuMDJWMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJhbXBSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDIxaDJWNi44M2wxLjU5IDEuNTlMMTYgN2wtNC00LTQgNCAxLjQxIDEuNDFMMTEgNi44M1Y5YzAgNC4yNy00LjAzIDcuMTMtNiA4LjI3bDEuNDYgMS40NkM4LjM3IDE3LjU2IDkuOSAxNi4xOSAxMSAxNC43VjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSYXRlUmV2aWV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMTUuMzUgNi40MS0xLjc3LTEuNzdjLS4yLS4yLS41MS0uMi0uNzEgMEw2IDExLjUzVjE0aDIuNDdsNi44OC02Ljg4Yy4yLS4xOS4yLS41MSAwLS43MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTYgMTR2LTIuNDdsNi44OC02Ljg4Yy4yLS4yLjUxLS4yLjcxIDBsMS43NyAxLjc3Yy4yLjIuMi41MSAwIC43MUw4LjQ3IDE0SDZ6bTEyIDBoLTcuNWwyLTJIMTh2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVtb3ZlUm9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRoMnY5aC0yek00IDRoMnYxNkg0ek0xMSA0aDJ2NGgtMnpNMTEgMTBoMnY0aC0yek0xMSAxNmgydjRoLTJ6TTIyLjUgMTYuNDEgMjEuMDkgMTUgMTkgMTcuMDkgMTYuOTEgMTVsLTEuNDEgMS40MSAyLjA5IDIuMDktMi4wOSAyLjA5TDE2LjkxIDIyIDE5IDE5LjkxIDIxLjA5IDIybDEuNDEtMS40MS0yLjA5LTIuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlc3RhdXJhbnRNZW51IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOC4xIDEzLjM0IDIuODMtMi44M0wzLjkxIDMuNWE0LjAwOCA0LjAwOCAwIDAgMCAwIDUuNjZsNC4xOSA0LjE4em02Ljc4LTEuODFjMS41My43MSAzLjY4LjIxIDUuMjctMS4zOCAxLjkxLTEuOTEgMi4yOC00LjY1LjgxLTYuMTItMS40Ni0xLjQ2LTQuMi0xLjEtNi4xMi44MS0xLjU5IDEuNTktMi4wOSAzLjc0LTEuMzggNS4yN0wzLjcgMTkuODdsMS40MSAxLjQxTDEyIDE0LjQxbDYuODggNi44OCAxLjQxLTEuNDFMMTMuNDEgMTNsMS40Ny0xLjQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZXN0YXVyYW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOUg5VjJIN3Y3SDVWMkgzdjdjMCAyLjEyIDEuNjYgMy44NCAzLjc1IDMuOTdWMjJoMi41di05LjAzQzExLjM0IDEyLjg0IDEzIDExLjEyIDEzIDlWMmgtMnY3em01LTN2OGgyLjV2OEgyMVYyYy0yLjc2IDAtNSAyLjI0LTUgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm91bmRhYm91dExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wOCA4QTYgNiAwIDAgMSAxNiAzYzMuMzEgMCA2IDIuNjkgNiA2IDAgMi45Ny0yLjE2IDUuNDQtNSA1LjkyVjIxaC0ydi02LjA5YzAtLjk4LjcxLTEuOCAxLjY3LTEuOTdhMy45OTkgMy45OTkgMCAxIDAtNC42MS00LjYxYy0uMTcuOTYtLjk5IDEuNjctMS45NyAxLjY3SDUuODNsMS41OSAxLjU5TDYgMTMgMiA5bDQtNCAxLjQxIDEuNDFMNS44MyA4aDQuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvdW5kYWJvdXRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjkyIDhDMTMuNDQgNS4xNiAxMC45NyAzIDggMyA0LjY5IDMgMiA1LjY5IDIgOWMwIDIuOTcgMi4xNiA1LjQ0IDUgNS45MlYyMWgydi02LjA5YzAtLjk4LS43MS0xLjgtMS42Ny0xLjk3YTMuOTk5IDMuOTk5IDAgMSAxIDQuNjEtNC42MWMuMTcuOTYuOTkgMS42NyAxLjk3IDEuNjdoNC4yNmwtMS41OSAxLjU5TDE4IDEzbDQtNC00LTQtMS40MSAxLjQxTDE4LjE3IDhoLTQuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvdXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTUuMThWN2MwLTIuMjEtMS43OS00LTQtNHMtNCAxLjc5LTQgNHYxMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJWOC44MkM4LjE2IDguNCA5IDcuMyA5IDZjMC0xLjY2LTEuMzQtMy0zLTNTMyA0LjM0IDMgNmMwIDEuMy44NCAyLjQgMiAyLjgyVjE3YzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTRWN2MwLTEuMS45LTIgMi0yczIgLjkgMiAydjguMThBMi45OTYgMi45OTYgMCAwIDAgMTggMjFjMS42NiAwIDMtMS4zNCAzLTMgMC0xLjMtLjg0LTIuNC0yLTIuODJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJ1bkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEuNSA0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTIuNSA2Yy0uNyAwLTIuMDEtLjU0LTIuOTEtMS43NmwtLjQxIDIuMzVMMTQgMTQuMDNWMThoLTF2LTMuNThsLTEuMTEtMS4yMS0uNTIgMi42NC0zLjc3LS43Ny4yLS45OCAyLjc4LjU3Ljk2LTQuODktMS41NC41N1YxMkg5VjkuNjVsMy4yOC0xLjIxYy40OS0uMTggMS4wMy4wNiAxLjI2LjUzLjgzIDEuNyAyLjA1IDIuMDMgMi40NiAyLjAzdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNhZmV0eUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMiA0IDV2Ni4wOWMwIDUuMDUgMy40MSA5Ljc2IDggMTAuOTEgNC41OS0xLjE1IDgtNS44NiA4LTEwLjkxVjVsLTgtM3ptMCAxNWMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6bTEuNjUtMi42NUwxMS41IDEyLjJWOWgxdjIuNzlsMS44NSAxLjg1LS43LjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYWlsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTMuNVYyTDMgMTMuNWg4em0xMCAwQzIxIDYuNSAxNC41IDEgMTIuNSAxYzAgMCAxIDMgMSA2LjVzLTEgNi0xIDZIMjF6bTEgMS41SDJhNi4yMzMgNi4yMzMgMCAwIDAgMi4zMyAzLjczYy42NS0uMjcgMS4yMi0uNzIgMS42Ny0xLjIzLjczLjg0IDEuOCAxLjUgMyAxLjVzMi4yNy0uNjYgMy0xLjVjLjczLjg0IDEuOCAxLjUgMyAxLjVzMi4yNi0uNjYgMy0xLjVjLjQ1LjUxIDEuMDIuOTYgMS42NyAxLjIzIDEuMTctLjg5IDIuMDItMi4yIDIuMzMtMy43M3ptMCA4di0yaC0xYy0xLjA0IDAtMi4wOC0uMzUtMy0xLTEuODMgMS4zLTQuMTcgMS4zLTYgMC0xLjgzIDEuMy00LjE3IDEuMy02IDAtLjkxLjY1LTEuOTYgMS0zIDFIMnYyaDFjMS4wMyAwIDIuMDUtLjI1IDMtLjc1IDEuODkgMSA0LjExIDEgNiAwIDEuODkgMSA0LjExIDEgNiAwIC45NS41IDEuOTcuNzUgMyAuNzVoMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2F0ZWxsaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTUgNC45OWgzQzggNi42NSA2LjY2IDggNSA4VjQuOTl6TTUgMTJ2LTJjMi43NiAwIDUtMi4yNSA1LTUuMDFoMkMxMiA4Ljg2IDguODcgMTIgNSAxMnptMCA2IDMuNS00LjUgMi41IDMuMDFMMTQuNSAxMmw0LjUgNkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY3JlZW5Sb3RhdGlvbkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTQgNy41OSA1LTVjLjc4LS43OCAyLjA1LS43OCAyLjgzIDBMMjAuMjQgMTFoLTIuODNMMTAuNCA0IDUuNDEgOUg4djJIMlY1aDJ2Mi41OXpNMjAgMTloMnYtNmgtNnYyaDIuNTlsLTQuOTkgNS03LjAxLTdIMy43Nmw4LjQxIDguNDFjLjc4Ljc4IDIuMDUuNzggMi44MyAwbDUtNVYxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2V0TWVhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjA1IDE3LjU2LTE3Ljk3Ljk0TDMgMTdsMTcuOTgtLjk0LjA3IDEuNXpNMjEgMTkuNDhIM3YxLjVoMTh2LTEuNXpNMjIgNXY3YzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjVjMC0xLjEuOS0yIDItMmgxNmMxLjEgMCAyIC45IDIgMnptLTIgMWMtMS42OCAwLTMuMDQuOTgtMy4yMSAyLjIzLS42NC0uNzMtMi43My0yLjczLTYuNTQtMi43My00LjY3IDAtNi43NSAzLTYuNzUgM3MyLjA4IDMgNi43NSAzYzMuODEgMCA1LjktMiA2LjU0LTIuNzNDMTYuOTYgMTAuMDIgMTguMzIgMTEgMjAgMTFWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbnBvc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMGg1bDMtMy0zLTNoLTVWMmgtMnYySDR2Nmg3djJINmwtMyAzIDMgM2g1djRoMnYtNGg3di02aC03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTbm93bW9iaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTdjMCAuNTUtLjQ1IDEtMSAxaC0uMTdsLTIuMi0yLjJDMjAuNTggMTUuMzcgMjIgMTQuNCAyMiAxM2MwLTEtOC04LTgtOGgtM3YyaDIuMjVsMS40NSAxLjNMMTEgMTFsLTkuNS0xTDAgMTNsNC41NCAxLjM2LTMuNDkgMS44OEMtLjc3IDE3LjIyLS4wNyAyMCAyIDIwaDZjMi4yMSAwIDQtMS43OSA0LTRoNGwyIDJoLTN2Mmg2YzEuNjYgMCAzLTEuMzQgMy0zaC0yek04IDE4SDJsNS4yNS0yLjgzTDEwIDE2YTIgMiAwIDAgMS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNvcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjUgN2gtM2MtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDNjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnptMCA4aC0zVjloM3Y2ek0xIDE1aDR2LTJIM2MtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDR2MkgzdjJoMmMxLjEgMCAyIC45IDIgMnYyYzAgMS4xLS45IDItMiAySDF2LTJ6bTE2IDBoNHYtMmgtMmMtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDR2MmgtNHYyaDJjMS4xIDAgMiAuOSAyIDJ2MmMwIDEuMS0uOSAyLTIgMmgtNHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU291cEtpdGNoZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjQgN2MtLjM0LjU1LS40Ljk3LS40IDEuMzhDNiA5LjE1IDcgMTEgNyAxMmMwIC45NS0uNCAxLjUtLjQgMS41SDUuMXMuNC0uNTUuNC0xLjVjMC0xLTEtMi44NS0xLTMuNjIgMC0uNDEuMDYtLjgzLjQtMS4zOGgxLjV6bTUgMGMtLjM0LjU1LS40Ljk3LS40IDEuMzggMCAuNzcgMSAyLjYyIDEgMy42MiAwIC45NS0uNCAxLjUtLjQgMS41aDEuNXMuNC0uNTUuNC0xLjVjMC0xLTEtMi44NS0xLTMuNjIgMC0uNDEuMDYtLjgzLjQtMS4zOGgtMS41ek04LjE1IDdjLS4zNC41NS0uNC45Ny0uNCAxLjM4IDAgLjc3IDEgMi42MyAxIDMuNjIgMCAuOTUtLjQgMS41LS40IDEuNWgxLjVzLjQtLjU1LjQtMS41YzAtMS0xLTIuODUtMS0zLjYyIDAtLjQxLjA2LS44My40LTEuMzhoLTEuNXptMTMuMzItLjVzLjEzLTEuMDYuMTMtMS41YzAtMS42NS0xLjM1LTMtMy0zLTEuNTQgMC0yLjgxIDEuMTYtMi45OCAyLjY1TDE0LjUzIDE1SDQuMDFjLS42IDAtMS4wOS41My0xIDEuMTNDMy41MyAxOS40NiA2LjM5IDIyIDkuNzUgMjJjMy40OCAwIDYuMzQtMi43MyA2LjcxLTYuMjNMMTcuNjEgNC45Yy4wNS0uNTEuNDctLjkuOTktLjkuNTUgMCAxIC40NSAxIDEgMCAuMy0uMSAxLjI1LS4xIDEuMjVsMS45Ny4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhZGl1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgNSAzIDdWM2w0IDJ6bTExLTJ2NGw0LTItNC0yem0tNy0xdjRsNC0yLTQtMnptLTYgOC4wNGMxLjM4LjQ5IDMuNzcuOTYgNyAuOTZzNS42Mi0uNDcgNy0uOTZDMTkgOS44NiAxNi4yMiA5IDEyIDlzLTcgLjg2LTcgMS4wNHpNMTUgMTdIOXY0Ljg4Yy00LjA2LS4zOS03LTEuNTQtNy0yLjg4di05YzAtMS42NiA0LjQ4LTMgMTAtM3MxMCAxLjM0IDEwIDN2OWMwIDEuMzQtMi45NCAyLjQ4LTcgMi44N1YxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RvcmVNYWxsRGlyZWN0b3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0djJoMTZWNHptMSAxMHYtMmwtMS01SDRsLTEgNXYyaDF2NmgxMHYtNmg0djZoMnYtNmgxem0tOSA0SDZ2LTRoNnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdHJhaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDYuODMgOS40MSA4LjQxIDggN2w0LTQgNCA0LTEuNDEgMS40MUwxMyA2LjgzVjIxaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdHJlZXR2aWV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNTYgMTQuMzNjLS4zNC4yNy0uNTYuNy0uNTYgMS4xN1YyMWg3YzEuMSAwIDItLjkgMi0ydi01Ljk4Yy0uOTQtLjMzLTEuOTUtLjUyLTMtLjUyLTIuMDMgMC0zLjkzLjctNS40NCAxLjgzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDZjMC0xLjA4LjI3LTIuMS43NC0zSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgLjU1LjIzIDEuMDUuNTkgMS40MWw5LjgyLTkuODJBNi40MzUgNi40MzUgMCAwIDEgMTEuNSA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdWJ3YXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMHYyNGgyNFYwSDB6bTIyIDIySDJWOC44NkMyIDYuMDUgMy41MyAzLjg0IDYuMiAyLjggOCAyLjA5IDEwLjE0IDIgMTIgMmMxLjg2IDAgNCAuMDkgNS44LjhDMjAuNDcgMy44NCAyMiA2LjA1IDIyIDguODZWMjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjE2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiMTZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4wMSA5aDEwdjVoLTEwek0xNy44IDIuOEMxNiAyLjA5IDEzLjg2IDIgMTIgMmMtMS44NiAwLTQgLjA5LTUuOC44QzMuNTMgMy44NCAyIDYuMDUgMiA4Ljg2VjIyaDIwVjguODZjMC0yLjgxLTEuNTMtNS4wMi00LjItNi4wNnptLjIgMTMuMDhjMCAxLjQ1LTEuMTggMi42Mi0yLjYzIDIuNjJsMS4xMyAxLjEyVjIwSDE1bC0xLjUtMS41aC0yLjgzTDkuMTcgMjBINy41di0uMzhsMS4xMi0xLjEyQzcuMTggMTguNSA2IDE3LjMyIDYgMTUuODhWOWMwLTIuNjMgMy0zIDYtMyAzLjMyIDAgNiAuMzggNiAzdjYuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN5bmFnb2d1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgOHYxM2g0di01YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2NWg0VjhsLTYtNS02IDV6bTcuNSAyYzAgLjgzLS42NyAxLjUtMS41IDEuNXMtMS41LS42Ny0xLjUtMS41LjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41ek0zIDVjLTEuMSAwLTIgLjktMiAydjFoNFY3YzAtMS4xLS45LTItMi0yek0xIDloNHYxMkgxek0yMSA1Yy0xLjEgMC0yIC45LTIgMnYxaDRWN2MwLTEuMS0uOS0yLTItMnpNMTkgOWg0djEyaC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYWtlb3V0RGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUuMjYgMTFoMTMuNDhsLS42NyA5SDUuOTNsLS42Ny05em0zLjc2LTdoNS45NUwxOSA3LjM4bDEuNTktMS41OUwyMiA3LjIxIDE5LjIxIDEwSDQuNzlMMiA3LjIxIDMuNDEgNS44IDUgNy4zOCA5LjAyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRheGlBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgOEE3IDcgMCAwIDAgOS42OCA1SDd2Mkg0LjVhMS41IDEuNSAwIDAgMC0xLjQyIDEuMDFMMSAxNHY4YTEgMSAwIDAgMCAxIDFoMWExIDEgMCAwIDAgMS0xdi0xaDEydjFhMSAxIDAgMCAwIDEgMWgxYTEgMSAwIDAgMCAxLTF2LTcuNjhBNy4wMSA3LjAxIDAgMCAwIDIzIDh6bS0xOC41LjVoNC41M2E2LjkzIDYuOTMgMCAwIDAgMi4wOCA0LjVIM2wxLjUtNC41em0wIDkuNWExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3ptMTEgMGExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3ptMi45My01LjYzLS4yMS4xMS0uMTguMDlhNC45NyA0Ljk3IDAgMCAxLS40Mi4xNmwtLjIyLjA3LS4yMy4wNi0uMi4wNWE1IDUgMCAwIDEtNS45NC00LjQxQTQuMDcgNC4wNyAwIDAgMSAxMSA4bC4wMi0uNDcuMDItLjE3LjA0LS4yOC4wNC0uMjEuMDUtLjIxLjA3LS4yNC4wNS0uMTNhNC45OSA0Ljk5IDAgMCAxIDkuNjkgMS43IDQuOTYgNC45NiAwIDAgMS0yLjU1IDQuMzh6TTE1IDRoMnY1aC0yem0wIDZoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUZW1wbGVCdWRkaGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDkuMDJjMCAxLjA5LS44OSAxLjk4LTEuOTggMS45OEg0Ljk4QzMuODkgMTEgMyAxMC4xMSAzIDkuMDJIMWMwIDEuODYgMS4yOCAzLjQgMyAzLjg0VjIyaDZ2LTNjMC0xLjEuOS0yIDItMnMyIC45IDIgMnYzaDZ2LTkuMTRjLjU1LS4xNCAzLTEuMDQgMy0zLjg2bC0yIC4wMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA4Ljg2VjEwaDEyVjguODZjLjU1LS4xNCAzLTEuMDQgMy0zLjg2bC0yIC4wMkMxOSA2LjExIDE4LjExIDcgMTcuMDIgN0g2Ljk4QzUuODkgNyA1IDYuMTEgNSA1LjAySDNjMCAxLjg1IDEuMjggMy40IDMgMy44NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMSA4LjI1IDZoNy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUZW1wbGVIaW5kdSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNiAxMWgxMC44bC0uOS0zaC05ek0yMCAxMXYySDR2LTJIMnYxMWg4di01aDR2NWg4VjExek0xNS45IDYgMTUgM1YxaC0ydjJoLTIuMDNWMWgtMnYyLjEyTDguMSA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUZXJyYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQgNi0zLjc1IDUgMi44NSAzLjgtMS42IDEuMkM5LjgxIDEzLjc1IDcgMTAgNyAxMGwtNiA4aDIyTDE0IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRoZWF0ZXJDb21lZHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE2LjVDMiAxOS41NCA0LjQ2IDIyIDcuNSAyMnM1LjUtMi40NiA1LjUtNS41VjEwSDJ2Ni41em01LjUgMkM2LjEyIDE4LjUgNSAxNy44MyA1IDE3aDVjMCAuODMtMS4xMiAxLjUtMi41IDEuNXpNMTAgMTNjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptLTUgMGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAzdjZoM3YyLjVjMC0uODMgMS4xMi0xLjUgMi41LTEuNXMyLjUuNjcgMi41IDEuNWgtNXYyLjg5Yy43NS4zOCAxLjYuNjEgMi41LjYxIDMuMDQgMCA1LjUtMi40NiA1LjUtNS41VjNIMTF6bTMgNS4wOGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDFjMCAuNTYtLjQ1IDEtMSAxem01IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxYzAgLjU2LS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGlyZVJlcGFpciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDdhMS4wMDMgMS4wMDMgMCAwIDAgMS43MS43MWMuNC0uNCAxLjA0LTIuNDYgMS4wNC0yLjQ2cy0yLjA2LjY0LTIuNDYgMS4wNGMtLjE4LjE4LS4yOS40My0uMjkuNzF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJjLTIuNzYgMC01IDIuMjQtNSA1IDAgMi4wNSAxLjIzIDMuODEgMyA0LjU4VjEzaDF2NWMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMXYtMmEzLjAwOSAzLjAwOSAwIDAgMC00LTIuODNWNWMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDZjMS4xIDAgMi0uOSAyLTJ2LTNjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjJjMCAxLjY1IDEuMzUgMyAzIDNzMy0xLjM1IDMtM3YtNWgxdi0xLjQyYzEuNzctLjc3IDMtMi41MyAzLTQuNTggMC0yLjc2LTIuMjQtNS01LTV6TTYgMTkuNWwtMi0ydi0yLjgzbDIgMnYyLjgzem0wLTUtMi0yVjkuNjdsMiAydjIuODN6bTAtNS0yLTJWNC42N2wyIDJWOS41em00IDgtMiAydi0yLjgzbDItMnYyLjgzem0wLTUtMiAydi0yLjgzbDItMnYyLjgzem0wLTUtMiAyVjYuNjdsMi0yVjcuNXptOSAyLjVjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmFmZmljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTBoLTNWOC44NmMxLjcyLS40NSAzLTIgMy0zLjg2aC0zVjRjMC0uNTUtLjQ1LTEtMS0xSDhjLS41NSAwLTEgLjQ1LTEgMXYxSDRjMCAxLjg2IDEuMjggMy40MSAzIDMuODZWMTBINGMwIDEuODYgMS4yOCAzLjQxIDMgMy44NlYxNUg0YzAgMS44NiAxLjI4IDMuNDEgMyAzLjg2VjIwYzAgLjU1LjQ1IDEgMSAxaDhjLjU1IDAgMS0uNDUgMS0xdi0xLjE0YzEuNzItLjQ1IDMtMiAzLTMuODZoLTN2LTEuMTRjMS43Mi0uNDUgMy0yIDMtMy44NnptLTggOWEyIDIgMCAxIDEtLjAwMS0zLjk5OUEyIDIgMCAwIDEgMTIgMTl6bTAtNWEyIDIgMCAxIDEtLjAwMS0zLjk5OUEyIDIgMCAwIDEgMTIgMTR6bTAtNWEyIDIgMCAwIDEtMi0yYzAtMS4xMS44OS0yIDItMmEyIDIgMCAxIDEgMCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjAuNXYuNWgyLjIzbDItMkgxNGwyIDJoMnYtLjVMMTYuNSAxOWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY2YzAtMy41LTMuNTgtNC04LTR6TTcuNSAxN2MtLjgzIDAtMS41LS42Ny0xLjUtMS41UzYuNjcgMTQgNy41IDE0czEuNS42NyAxLjUgMS41UzguMzMgMTcgNy41IDE3em0zLjUtN0g2VjZoNXY0em0yIDBWNmg1djRoLTV6bTMuNSA3Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTYuOTRWOC41YzAtMi43OS0yLjYxLTMuNC02LjAxLTMuNDlsLjc2LTEuNTFIMTdWMkg3djEuNWg0Ljc1bC0uNzYgMS41MkM3Ljg2IDUuMTEgNSA1LjczIDUgOC41djguNDRjMCAxLjQ1IDEuMTkgMi42NiAyLjU5IDIuOTdMNiAyMS41di41aDIuMjNsMi0ySDE0bDIgMmgydi0uNUwxNi41IDIwaC0uMDhjMS42OSAwIDIuNTgtMS4zNyAyLjU4LTMuMDZ6bS03IDEuNTZjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em01LTQuNUg3VjloMTB2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJhbnNmZXJXaXRoaW5BU3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjQ5IDE1LjV2LTEuNzVMMTQgMTYuMjVsMi40OSAyLjVWMTdIMjJ2LTEuNXptMy4wMiA0LjI1SDE0djEuNWg1LjUxVjIzTDIyIDIwLjUgMTkuNTEgMTh6TTkuNSA1LjVjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyek01Ljc1IDguOSAzIDIzaDIuMWwxLjc1LThMOSAxN3Y2aDJ2LTcuNTVMOC45NSAxMy40bC42LTNDMTAuODUgMTIgMTIuOCAxMyAxNSAxM3YtMmMtMS44NSAwLTMuNDUtMS00LjM1LTIuNDVsLS45NS0xLjZDOS4zNSA2LjM1IDguNyA2IDggNmMtLjI1IDAtLjUuMDUtLjc1LjE1TDIgOC4zVjEzaDJWOS42NWwxLjc1LS43NVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUcmFuc2l0RW50ZXJleGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMThINlY4aDN2NC43N0wxNS45OCA2IDE4IDguMDMgMTEuMTUgMTVIMTZ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJpcE9yaWdpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDEyQzIgNi40OCA2LjQ4IDIgMTIgMnMxMCA0LjQ4IDEwIDEwLTQuNDggMTAtMTAgMTBTMiAxNy41MiAyIDEyem0xMCA2YzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02LTYgMi42OS02IDYgMi42OSA2IDYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHVybkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02LjgzIDExIDEuNTkgMS41OUw3IDE0bC00LTQgNC00IDEuNDEgMS40MUw2LjgzIDlIMTVjMS4xIDAgMiAuOSAyIDJ2OWgtMnYtOUg2LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUdXJuUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy4xNyAxMS0xLjU5IDEuNTlMMTcgMTRsNC00LTQtNC0xLjQxIDEuNDFMMTcuMTcgOUg5Yy0xLjEgMC0yIC45LTIgMnY5aDJ2LTloOC4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHVyblNoYXJwTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNi44MyA0LjQxIDguNDEgMyA3bDQtNCA0IDQtMS40MSAxLjQxTDggNi44M1YxM2g4YzEuMSAwIDIgLjkgMiAydjZoLTJ2LTZIOGMtMS4xIDAtMi0uOS0yLTJWNi44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHVyblNoYXJwUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCA2LjgzIDEuNTkgMS41OUwyMSA3bC00LTQtNCA0IDEuNDEgMS40MUwxNiA2LjgzVjEzSDhjLTEuMSAwLTIgLjktMiAydjZoMnYtNmg4YzEuMSAwIDItLjkgMi0yVjYuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFR1cm5TbGlnaHRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNjYgNlY0SDZ2NS42NmgyVjcuNDFsNSA1VjIwaDJ2LTcuNThjMC0uNTMtLjIxLTEuMDQtLjU5LTEuNDFsLTUtNWgyLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUdXJuU2xpZ2h0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4zNCA2VjRIMTh2NS42NmgtMlY3LjQxbC01IDVWMjBIOXYtNy41OGMwLS41My4yMS0xLjA0LjU5LTEuNDFsNS01aC0yLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUd29XaGVlbGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTFjLS4xOCAwLS4zNi4wMy0uNTMuMDVMMTcuNDEgOUgyMFY2bC0zLjcyIDEuODZMMTMuNDEgNUg5djJoMy41OWwyIDJIMTFsLTQgMi0yLTJIMHYyaDRjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNGwyIDJoM2wzLjQ5LTYuMSAxLjAxIDEuMDFjLS45MS43My0xLjUgMS44NC0xLjUgMy4wOSAwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00LTEuNzktNC00LTR6TTQgMTdjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem0xNiAwYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVVR1cm5MZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOXYxMmgtMlY5YzAtMi4yMS0xLjc5LTQtNC00UzggNi43OSA4IDl2NC4xN2wxLjU5LTEuNTlMMTEgMTNsLTQgNC00LTQgMS40MS0xLjQxTDYgMTMuMTdWOWMwLTMuMzEgMi42OS02IDYtNnM2IDIuNjkgNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVVHVyblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA5djEyaDJWOWMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0djQuMTdsLTEuNTktMS41OUwxMyAxM2w0IDQgNC00LTEuNDEtMS40MUwxOCAxMy4xN1Y5YzAtMy4zMS0yLjY5LTYtNi02UzYgNS42OSA2IDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZvbHVudGVlckFjdGl2aXNtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAxMWg0djExSDF6TTE2IDMuMjVDMTYuNjUgMi40OSAxNy42NiAyIDE4LjcgMiAyMC41NSAyIDIyIDMuNDUgMjIgNS4zYzAgMi4yNy0yLjkxIDQuOS02IDcuNy0zLjA5LTIuODEtNi01LjQ0LTYtNy43QzEwIDMuNDUgMTEuNDUgMiAxMy4zIDJjMS4wNCAwIDIuMDUuNDkgMi43IDEuMjV6TTIwIDE3aC03bC0yLjA5LS43My4zMy0uOTRMMTMgMTZoMi44MmMuNjUgMCAxLjE4LS41MyAxLjE4LTEuMTggMC0uNDktLjMxLS45My0uNzctMS4xMUw4Ljk3IDExSDd2OS4wMkwxNCAyMmw4LjAxLTNjLS4wMS0xLjEtLjktMi0yLjAxLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdhcmVob3VzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDIxVjdMMTIgMyAyIDd2MTRoNXYtOWgxMHY5aDV6bS0xMS0ySDl2Mmgydi0yem0yLTNoLTJ2Mmgydi0yem0yIDNoLTJ2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaW5lQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAzdjZjMCAyLjk3IDIuMTYgNS40MyA1IDUuOTFWMTlIOHYyaDh2LTJoLTN2LTQuMDljMi44NC0uNDggNS0yLjk0IDUtNS45MVYzSDZ6bTEwIDVIOFY1aDh2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV3JvbmdMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEwVjMuMjZjLS42NS0uMTctMS4zMi0uMjYtMi0uMjYtNC4yIDAtOCAzLjIyLTggOC4yIDAgMy4zMiAyLjY3IDcuMjUgOCAxMS44IDUuMzMtNC41NSA4LTguNDggOC0xMS44IDAtLjQxLS4wNC0uODEtLjA5LTEuMkgxNHptLTIgM2MtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjU0IDIuODgtMS40Mi0xLjQyTDE5IDMuNTlsLTIuMTItMi4xMy0xLjQyIDEuNDJMMTcuNTkgNWwtMi4xMyAyLjEyIDEuNDIgMS40MkwxOSA2LjQxbDIuMTIgMi4xMyAxLjQyLTEuNDJMMjAuNDEgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kWm9vbUluTWFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA5VjNIN3YyLjU5TDMuOTEgMi41IDIuNSAzLjkxIDUuNTkgN0gzdjJoNnptMTIgMFY3aC0yLjU5bDMuMDktMy4wOS0xLjQxLTEuNDFMMTcgNS41OVYzaC0ydjZoNnpNMyAxNXYyaDIuNTlMMi41IDIwLjA5bDEuNDEgMS40MUw3IDE4LjQxVjIxaDJ2LTZIM3ptMTIgMHY2aDJ2LTIuNTlsMy4wOSAzLjA5IDEuNDEtMS40MUwxOC40MSAxN0gyMXYtMmgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kWm9vbU91dE1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1IDMgMi4zIDIuMy0yLjg5IDIuODcgMS40MiAxLjQyTDE4LjcgNi43IDIxIDlWM2gtNnpNMyA5bDIuMy0yLjMgMi44NyAyLjg5IDEuNDItMS40Mkw2LjcgNS4zIDkgM0gzdjZ6bTYgMTItMi4zLTIuMyAyLjg5LTIuODctMS40Mi0xLjQyTDUuMyAxNy4zIDMgMTV2Nmg2em0xMi02LTIuMyAyLjMtMi44Ny0yLjg5LTEuNDIgMS40MiAyLjg5IDIuODdMMTUgMjFoNnYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkSG9tZVdvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMS42OFYxMUw4IDZsLTcgNXYxMGg1di02aDR2NmgxLjY4Yy0uNDMtLjkxLS42OC0xLjkyLS42OC0zIDAtMi43OSAxLjY0LTUuMTkgNC02LjMyek0yMyAxMy4xMVYzSDEwdjEuOTdsNyA1djEuMTFjLjMzLS4wNS42Ni0uMDggMS0uMDggMS45NiAwIDMuNzMuODEgNSAyLjExek0xNyA3aDJ2MmgtMlY3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxOGMwLTIuNzYtMi4yNC01LTUtNXMtNSAyLjI0LTUgNSAyLjI0IDUgNSA1IDUtMi4yNCA1LTV6bS01LjUgM3YtMi41SDE1di0xaDIuNVYxNWgxdjIuNUgyMXYxaC0yLjVWMjFoLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFwcFNldHRpbmdzQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuODEgMTIuNzQtLjgyLS42M3YtLjIybC44LS42M2MuMTYtLjEyLjItLjM0LjEtLjUxbC0uODUtMS40OGEuMzk1LjM5NSAwIDAgMC0uMzUtLjJjLS4wNSAwLS4xLjAxLS4xNS4wM2wtLjk1LjM4Yy0uMDgtLjA1LS4xMS0uMDctLjE5LS4xMWwtLjE1LTEuMDFhLjQwOC40MDggMCAwIDAtLjQtLjM2aC0xLjcxYy0uMiAwLS4zNy4xNS0uNC4zNGwtLjE0IDEuMDFjLS4wMy4wMi0uMDcuMDMtLjEuMDVsLS4wOS4wNi0uOTUtLjM4YS40MDEuNDAxIDAgMCAwLS41LjE3bC0uODUgMS40OGMtLjEuMTctLjA2LjM5LjEuNTFsLjguNjN2LjIzbC0uOC42M2EuMzkuMzkgMCAwIDAtLjEuNTFsLjg1IDEuNDhjLjA3LjEzLjIxLjIuMzUuMi4wNSAwIC4xLS4wMS4xNS0uMDNsLjk1LS4zN2MuMDguMDUuMTIuMDcuMi4xMWwuMTUgMS4wMWMuMDMuMi4yLjM0LjQuMzRoMS43MWMuMiAwIC4zNy0uMTUuNC0uMzRsLjE1LTEuMDFjLjAzLS4wMi4wNy0uMDMuMS0uMDVsLjA5LS4wNi45NS4zOGEuNDAxLjQwMSAwIDAgMCAuNS0uMTdsLjg1LTEuNDhhLjM5LjM5IDAgMCAwLS4xLS41MXpNMTggMTMuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6TTE3IDE3aDJ2NGMwIDEuMS0uOSAyLTIgMkg3Yy0xLjEgMC0yLS45LTItMlYzYzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDJ2NGgtMlY2SDd2MTJoMTB2LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFwcHNPdXRhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDhoNFY0SDR2NHptNiAxMmg0di00aC00djR6bS02IDBoNHYtNEg0djR6bTAtNmg0di00SDR2NHptNiAwaDR2LTRoLTR2NHptNiA2aDR2LTRoLTR2NHptMy0yMGMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bS41IDhoLTFWN2gxdjF6bTAtMmgtMVYyaDF2NHpNMTYgMTRoNHYtMi4wN2MtLjMzLjA1LS42Ni4wNy0xIC4wNy0xLjA3IDAtMi4wOS0uMjQtMy0uNjhWMTR6TTEwIDR2NGgyLjY4Yy0uNDQtLjkxLS42OC0xLjkzLS42OC0zIDAtLjM0LjAyLS42Ny4wNy0xSDEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcHBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA4aDRWNEg0djR6bTYgMTJoNHYtNGgtNHY0em0tNiAwaDR2LTRINHY0em0wLTZoNHYtNEg0djR6bTYgMGg0di00aC00djR6bTYtMTB2NGg0VjRoLTR6bS02IDRoNFY0aC00djR6bTYgNmg0di00aC00djR6bTAgNmg0di00aC00djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93QmFja0lvc05ldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Ljc3IDMuNzcgMTYgMiA2IDEybDEwIDEwIDEuNzctMS43N0w5LjU0IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd0JhY2tJb3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS42NyAzLjg3IDkuOSAyLjEgMCAxMmw5LjkgOS45IDEuNzctMS43N0wzLjU0IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd0JhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMUg3LjgzbDUuNTktNS41OUwxMiA0bC04IDggOCA4IDEuNDEtMS40MUw3LjgzIDEzSDIwdi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd0Rvd253YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMCAxMi0xLjQxLTEuNDFMMTMgMTYuMTdWNGgtMnYxMi4xN2wtNS41OC01LjU5TDQgMTJsOCA4IDgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dEcm9wRG93bkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMTItNC00aDhsLTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dEcm9wRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTcgMTAgNSA1IDUtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dEcm9wVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm03IDE0IDUtNSA1IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93Rm9yd2FyZElvcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4yMyAyMC4yMyA4IDIybDEwLTEwTDggMiA2LjIzIDMuNzcgMTQuNDYgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93Rm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDQtMS40MSAxLjQxTDE2LjE3IDExSDR2MmgxMi4xN2wtNS41OCA1LjU5TDEyIDIwbDgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA3LTUgNSA1IDVWN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMHYyNEgwVjBoMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDE3IDUtNS01LTV2MTB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMjRWMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcnJvd1Vwd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNCAxMiAxLjQxIDEuNDFMMTEgNy44M1YyMGgyVjcuODNsNS41OCA1LjU5TDIwIDEybC04LTgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3Npc3RhbnREaXJlY3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEwSDljLS42IDAtMSAuNC0xIDF2NGgydi0zaDR2Mi41bDMuNS0zLjVMMTQgNy41VjEwem0tMi05QzUuOSAxIDEgNS45IDEgMTJzNC45IDExIDExIDExIDExLTQuOSAxMS0xMVMxOC4xIDEgMTIgMXptNy43MyAxMS41OC03LjE5IDcuMjJjLS4zNS4yNy0uNzkuMjctMS4xNSAwTDQuMiAxMi41OGEuOTMyLjkzMiAwIDAgMSAwLTEuMTZsNy4xOS03LjIyYy4zNS0uMjcuNzktLjI3IDEuMTUgMGw3LjE5IDcuMjJjLjM2LjI3LjM2LjggMCAxLjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBc3Npc3RhbnROYXZpZ2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxQzUuOTMgMSAxIDUuOTMgMSAxMnM0LjkzIDExIDExIDExIDExLTQuOTMgMTEtMTFTMTguMDcgMSAxMiAxem0zLjU3IDE2TDEyIDE1LjQyIDguNDMgMTdsLS4zNy0uMzdMMTIgN2wzLjk1IDkuNjMtLjM4LjM3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDYW1wYWlnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDExdjJoNHYtMmgtNHptLTIgNi42MWMuOTYuNzEgMi4yMSAxLjY1IDMuMiAyLjM5LjQtLjUzLjgtMS4wNyAxLjItMS42LS45OS0uNzQtMi4yNC0xLjY4LTMuMi0yLjQtLjQuNTQtLjggMS4wOC0xLjIgMS42MXpNMjAuNCA1LjZjLS40LS41My0uOC0xLjA3LTEuMi0xLjYtLjk5Ljc0LTIuMjQgMS42OC0zLjIgMi40LjQuNTMuOCAxLjA3IDEuMiAxLjYuOTYtLjcyIDIuMjEtMS42NSAzLjItMi40ek00IDljLTEuMSAwLTIgLjktMiAydjJjMCAxLjEuOSAyIDIgMmgxdjRoMnYtNGgxbDUgM1Y2TDggOUg0em0xMS41IDNjMC0xLjMzLS41OC0yLjUzLTEuNS0zLjM1djYuNjljLjkyLS44MSAxLjUtMi4wMSAxLjUtMy4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FuY2VsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptNSAxMy41OUwxNS41OSAxNyAxMiAxMy40MSA4LjQxIDE3IDcgMTUuNTkgMTAuNTkgMTIgNyA4LjQxIDguNDEgNyAxMiAxMC41OSAxNS41OSA3IDE3IDguNDEgMTMuNDEgMTIgMTcgMTUuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNi4xNyA0LjgzIDEybC0xLjQyIDEuNDFMOSAxOSAyMSA3bC0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoZXZyb25MZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNDEgNy40MSAxNCA2bC02IDYgNiA2IDEuNDEtMS40MUwxMC44MyAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hldnJvblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgNiA4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENsb3NlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNi40MSAxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb3VibGVBcnJvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgNUgxMWw1IDctNSA3aDQuNWw1LTd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSA1SDRsNSA3LTUgN2g0LjVsNS03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUgNS0xLjQxIDEuNDFMMTguMTcgMTFIMnYyaDE2LjE3bC00LjU5IDQuNTlMMTUgMTlsNy03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXhwYW5kQ2lyY2xlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMTMuNUw3LjUgMTFsMS40Mi0xLjQxTDEyIDEyLjY3bDMuMDgtMy4wOEwxNi41IDExIDEyIDE1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEV4cGFuZExlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiA4LTYgNiAxLjQxIDEuNDFMMTIgMTAuODNsNC41OSA0LjU4TDE4IDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFeHBhbmRNb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNTkgOC41OSAxMiAxMy4xNyA3LjQxIDguNTkgNiAxMGw2IDYgNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGaXJzdFBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjQxIDE2LjU5IDEzLjgyIDEybDQuNTktNC41OUwxNyA2bC02IDYgNiA2ek02IDZoMnYxMkg2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZ1bGxzY3JlZW5FeGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNmgzdjNoMnYtNUg1djJ6bTMtOEg1djJoNVY1SDh2M3ptNiAxMWgydi0zaDN2LTJoLTV2NXptMi0xMVY1aC0ydjVoNVY4aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGdWxsc2NyZWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNEg1djVoNXYtMkg3di0zem0tMi00aDJWN2gzVjVINXY1em0xMiA3aC0zdjJoNXYtNWgtMnYzek0xNCA1djJoM3YzaDJWNWgtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG9tZVdvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDExdjEwaDV2LTZoNHY2aDVWMTFMOCA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAzdjEuOTdsNyA1VjExaDJ2MmgtMnYyaDJ2MmgtMnY0aDZWM0gxMHptOSA2aC0yVjdoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMYXN0UGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41OSA3LjQxIDEwLjE4IDEybC00LjU5IDQuNTlMNyAxOGw2LTYtNi02ek0xNiA2aDJ2MTJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExlZ2VuZFRvZ2dsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1SDR2LTJoMTZ2MnptMCAySDR2MmgxNnYtMnptLTUtNiA1LTMuNTVWNWwtNSAzLjU1TDEwIDUgNCA4LjY2VjExbDUuOTItMy42MUwxNSAxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFwc0hvbWVXb3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDExdjEwaDV2LTZoNHY2aDVWMTFMOCA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAzdjEuOTdsNyA1VjExaDJ2MmgtMnYyaDJ2MmgtMnY0aDZWM0gxMHptOSA2aC0yVjdoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNZW51T3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxOGgxM3YtMkgzdjJ6bTAtNWgxMHYtMkgzdjJ6bTAtN3YyaDEzVjZIM3ptMTggOS41OUwxNy40MiAxMiAyMSA4LjQxIDE5LjU5IDdsLTUgNSA1IDVMMjEgMTUuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1lbnUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE4aDE4di0ySDN2MnptMC01aDE4di0ySDN2MnptMC03djJoMThWNkgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3JlSG9yaXogKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMTIgMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS02IDBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb3JlVmVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0wIDJjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3J0aEVhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDV2Mmg2LjU5TDQgMTguNTkgNS40MSAyMCAxNyA4LjQxVjE1aDJWNUg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3J0aFdlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE1aDJWOC40MUwxOC41OSAyMCAyMCAxOC41OSA4LjQxIDdIMTVWNUg1djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3J0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTUgOSAxLjQxIDEuNDFMMTEgNS44M1YyMmgyVjUuODNsNC41OSA0LjU5TDE5IDlsLTctNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE9mZmxpbmVTaGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjYgMTAuMjZ2MS4zMUwxNyA5LjMzIDE0LjYgNy4xdjEuMjhjLTIuMzMuMzItMy4yNiAxLjkyLTMuNiAzLjUyLjgzLTEuMTMgMS45My0xLjY0IDMuNi0xLjY0ek0xNiAyM0g2Yy0xLjEgMC0yLS45LTItMlY1aDJ2MTZoMTB2MnptMi0yMmgtOGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTVoLThWNGg4djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYXltZW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE0VjZjMC0xLjEtLjktMi0yLTJIM2MtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yem0tOS0xYy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3ptMTMtNnYxMWMwIDEuMS0uOSAyLTIgMkg0di0yaDE3VjdoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGl2b3RUYWJsZUNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgOGgxMVY1YzAtMS4xLS45LTItMi0yaC05djV6TTMgOGg1VjNINWMtMS4xIDAtMiAuOS0yIDJ2M3ptMiAxM2gzVjEwSDN2OWMwIDEuMS45IDIgMiAyem04IDEtNC00IDQtNHptMS05IDQtNCA0IDR6TTE0LjU4IDE5SDEzdi0yaDEuNThjMS4zMyAwIDIuNDItMS4wOCAyLjQyLTIuNDJWMTNoMnYxLjU4YzAgMi40NC0xLjk4IDQuNDItNC40MiA0LjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWZyZXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNjUgNi4zNUE3Ljk1OCA3Ljk1OCAwIDAgMCAxMiA0Yy00LjQyIDAtNy45OSAzLjU4LTcuOTkgOHMzLjU3IDggNy45OSA4YzMuNzMgMCA2Ljg0LTIuNTUgNy43My02aC0yLjA4QTUuOTkgNS45OSAwIDAgMSAxMiAxOGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNmMxLjY2IDAgMy4xNC42OSA0LjIyIDEuNzhMMTMgMTFoN1Y0bC0yLjM1IDIuMzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNvdXRoRWFzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDloLTJ2Ni41OUw1LjQxIDQgNCA1LjQxIDE1LjU5IDE3SDl2MmgxMFY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTb3V0aFdlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxOXYtMkg4LjQxTDIwIDUuNDEgMTguNTkgNCA3IDE1LjU5VjlINXYxMGgxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU291dGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSAxNS0xLjQxLTEuNDFMMTMgMTguMTdWMmgtMnYxNi4xN2wtNC41OS00LjU5TDUgMTVsNyA3IDctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3ViZGlyZWN0b3J5QXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMSA5IDEuNDIgMS40Mkw4LjgzIDE0SDE4VjRoMnYxMkg4LjgzbDMuNTkgMy41OEwxMSAyMWwtNi02IDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3ViZGlyZWN0b3J5QXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkgMTUtNiA2LTEuNDItMS40MkwxNS4xNyAxNkg0VjRoMnYxMGg5LjE3bC0zLjU5LTMuNThMMTMgOWw2IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN3aXRjaExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgOC42MnY2Ljc2TDUuMTIgMTIgOC41IDguNjJNMTAgNWwtNyA3IDcgN1Y1em00IDB2MTRsNy03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3dpdGNoUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDI0SDBWMGgyNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxNS4zOFY4LjYyTDE4Ljg4IDEybC0zLjM4IDMuMzhNMTQgMTlsNy03LTctN3YxNHptLTQgMFY1bC03IDcgNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRVbmZvbGRMZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy40MSAxOC41OSA4LjgzIDIwIDEyIDE2LjgzIDE1LjE3IDIwbDEuNDEtMS40MUwxMiAxNGwtNC41OSA0LjU5em05LjE4LTEzLjE4TDE1LjE3IDQgMTIgNy4xNyA4LjgzIDQgNy40MSA1LjQxIDEyIDEwbDQuNTktNC41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVW5mb2xkTW9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDUuODMgMTUuMTcgOWwxLjQxLTEuNDFMMTIgMyA3LjQxIDcuNTkgOC44MyA5IDEyIDUuODN6bTAgMTIuMzRMOC44MyAxNWwtMS40MSAxLjQxTDEyIDIxbDQuNTktNC41OUwxNS4xNyAxNSAxMiAxOC4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2F0ZXJmYWxsQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA0aDN2MTZoLTN6TTMgMTNoM3Y3SDN6bTExLTloM3YzaC0zem0tNCAxaDN2NGgtM3ptLTMgNWgzdjRIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2VzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTkgMTkgMS40MS0xLjQxTDUuODMgMTNIMjJ2LTJINS44M2w0LjU5LTQuNTlMOSA1bC03IDcgNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY2NvdW50VHJlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDExVjNoLTd2M0g5VjNIMnY4aDdWOGgydjEwaDR2M2g3di04aC03djNoLTJWOGgydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTZjMCAzLjg3IDMuMTMgNyA3IDdzNy0zLjEzIDctN3YtNEg1djR6TTE2LjEyIDQuMzdsMi4xLTIuMS0uODItLjgzLTIuMyAyLjMxQzE0LjE2IDMuMjggMTMuMTIgMyAxMiAzcy0yLjE2LjI4LTMuMDkuNzVMNi42IDEuNDRsLS44Mi44MyAyLjEgMi4xQzYuMTQgNS42NCA1IDcuNjggNSAxMHYxaDE0di0xYzAtMi4zMi0xLjE0LTQuMzYtMi44OC01LjYzek05IDljLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptNiAwYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFkZENhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3YTEuMDIgMS4wMiAwIDAgMC0xLjAyLjI0bC0yLjIgMi4yYTE1LjA0NSAxNS4wNDUgMCAwIDEtNi41OS02LjU5bDIuMi0yLjIxYS45Ni45NiAwIDAgMCAuMjUtMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNMjEgNmgtM1YzaC0ydjNoLTN2MmgzdjNoMlY4aDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTZWF0RmxhdEFuZ2xlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjI1IDE0LjI5LS42OSAxLjg5TDkuMiAxMS43MWwyLjA4LTUuNjYgOC41NiAzLjA5YTQgNCAwIDAgMSAyLjQxIDUuMTV6TTEuNSAxMi4xNCA4IDE0LjQ4VjE5aDh2LTEuNjNMMjAuNTIgMTlsLjY5LTEuODktMTkuMDItNi44Ni0uNjkgMS44OXptNS44LTEuOTRhMy4wMSAzLjAxIDAgMCAwIDEuNDEtNEEzLjAwNSAzLjAwNSAwIDAgMCA0LjcgNC44YTIuOTkgMi45OSAwIDAgMC0xLjQgNCAyLjk5IDIuOTkgMCAwIDAgNCAxLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTZWF0RmxhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDExdjJIOVY3aDljMi4yMSAwIDQgMS43OSA0IDR6TTIgMTR2Mmg2djJoOHYtMmg2di0ySDJ6bTUuMTQtMS45YTMgMyAwIDAgMC0uMDQtNC4yNCAzIDMgMCAwIDAtNC4yNC4wNCAzIDMgMCAwIDAgLjA0IDQuMjQgMyAzIDAgMCAwIDQuMjQtLjA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBaXJsaW5lU2VhdEluZGl2aWR1YWxTdWl0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxM2MxLjY1IDAgMy0xLjM1IDMtM1M4LjY1IDcgNyA3cy0zIDEuMzUtMyAzIDEuMzUgMyAzIDN6bTEyLTZoLTh2N0gzVjdIMXYxMGgyMnYtNmMwLTIuMjEtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWlybGluZVNlYXRMZWdyb29tRXh0cmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDEyVjNIMnY5YzAgMi43NiAyLjI0IDUgNSA1aDZ2LTJIN2MtMS42NiAwLTMtMS4zNC0zLTN6bTE4LjgzIDUuMjRjLS4zOC0uNzItMS4yOS0uOTctMi4wMy0uNjNsLTEuMDkuNS0zLjQxLTYuOThhMi4wMSAyLjAxIDAgMCAwLTEuNzktMS4xMkwxMSA5VjNINXY4YzAgMS42NiAxLjM0IDMgMyAzaDdsMy40MSA3IDMuNzItMS43Yy43Ny0uMzYgMS4xLTEuMy43LTIuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTZWF0TGVncm9vbU5vcm1hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTJWM0gzdjljMCAyLjc2IDIuMjQgNSA1IDVoNnYtMkg4Yy0xLjY2IDAtMy0xLjM0LTMtM3ptMTUuNSA2SDE5di03YzAtMS4xLS45LTItMi0yaC01VjNINnY4YzAgMS42NSAxLjM1IDMgMyAzaDd2N2g0LjVjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTZWF0TGVncm9vbVJlZHVjZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS45NyAxOS4yYy4xOC45Ni0uNTUgMS44LTEuNDcgMS44SDE0di0zbDEtNEg5Yy0xLjY1IDAtMy0xLjM1LTMtM1YzaDZ2Nmg1YzEuMSAwIDIgLjkgMiAybC0yIDdoMS40NGMuNzMgMCAxLjM5LjQ5IDEuNTMgMS4yek01IDEyVjNIM3Y5YzAgMi43NiAyLjI0IDUgNSA1aDR2LTJIOGMtMS42NiAwLTMtMS4zNC0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTZWF0UmVjbGluZUV4dHJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4zNSA1LjY0Yy0uOS0uNjQtMS4xMi0xLjg4LS40OS0yLjc5LjYzLS45IDEuODgtMS4xMiAyLjc5LS40OS45LjY0IDEuMTIgMS44OC40OSAyLjc5LS42NC45LTEuODggMS4xMi0yLjc5LjQ5ek0xNiAxOUg4LjkzYy0xLjQ4IDAtMi43NC0xLjA4LTIuOTYtMi41NEw0IDdIMmwxLjk5IDkuNzZBNS4wMSA1LjAxIDAgMCAwIDguOTQgMjFIMTZ2LTJ6bS4yMy00aC00Ljg4bC0xLjAzLTQuMWMxLjU4Ljg5IDMuMjggMS41NCA1LjE1IDEuMjJWOS45OWMtMS42My4zMS0zLjQ0LS4yNy00LjY5LTEuMjVMOS4xNCA3LjQ3Yy0uMjMtLjE4LS40OS0uMy0uNzYtLjM4YTIuMjEgMi4yMSAwIDAgMC0uOTktLjA2aC0uMDJhMi4yNjggMi4yNjggMCAwIDAtMS44NCAyLjYxbDEuMzUgNS45MkEzLjAwOCAzLjAwOCAwIDAgMCA5LjgzIDE4aDYuODVsMy44MiAzIDEuNS0xLjUtNS43Ny00LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFpcmxpbmVTZWF0UmVjbGluZU5vcm1hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNTkgNS40MWMtLjc4LS43OC0uNzgtMi4wNSAwLTIuODMuNzgtLjc4IDIuMDUtLjc4IDIuODMgMCAuNzguNzguNzggMi4wNSAwIDIuODMtLjc5Ljc5LTIuMDUuNzktMi44MyAwek02IDE2VjdINHY5YzAgMi43NiAyLjI0IDUgNSA1aDZ2LTJIOWMtMS42NiAwLTMtMS4zNC0zLTN6bTE0IDQuMDdMMTQuOTMgMTVIMTEuNXYtMy42OGMxLjQgMS4xNSAzLjYgMi4xNiA1LjUgMi4xNnYtMi4xNmMtMS42Ni4wMi0zLjYxLS44Ny00LjY3LTIuMDRsLTEuNC0xLjU1Yy0uMTktLjIxLS40My0uMzgtLjY5LS41LS4yOS0uMTQtLjYyLS4yMy0uOTYtLjIzaC0uMDNDOC4wMSA3IDcgOC4wMSA3IDkuMjVWMTVjMCAxLjY2IDEuMzQgMyAzIDNoNS4wN2wzLjUgMy41TDIwIDIwLjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbHVldG9vdGhBdWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjI0IDEyLjAxIDIuMzIgMi4zMmMuMjgtLjcyLjQ0LTEuNTEuNDQtMi4zMyAwLS44Mi0uMTYtMS41OS0uNDMtMi4zMWwtMi4zMyAyLjMyem01LjI5LTUuMy0xLjI2IDEuMjZjLjYzIDEuMjEuOTggMi41Ny45OCA0LjAycy0uMzYgMi44Mi0uOTggNC4wMmwxLjIgMS4yYTkuOTM2IDkuOTM2IDAgMCAwIDEuNTQtNS4zMWMtLjAxLTEuODktLjU1LTMuNjctMS40OC01LjE5em0tMy44MiAxTDEwIDJIOXY3LjU5TDQuNDEgNSAzIDYuNDEgOC41OSAxMiAzIDE3LjU5IDQuNDEgMTkgOSAxNC40MVYyMmgxbDUuNzEtNS43MS00LjMtNC4yOSA0LjMtNC4yOXpNMTEgNS44M2wxLjg4IDEuODhMMTEgOS41OVY1Ljgzem0xLjg4IDEwLjQ2TDExIDE4LjE3di0zLjc2bDEuODggMS44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29uZmlybWF0aW9uTnVtYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTBWNmEyIDIgMCAwIDAtMi0ySDRjLTEuMSAwLTEuOTkuODktMS45OSAydjRjMS4xIDAgMS45OS45IDEuOTkgMnMtLjg5IDItMiAydjRjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMnYtNGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJ6bS05IDcuNWgtMnYtMmgydjJ6bTAtNC41aC0ydi0yaDJ2MnptMC00LjVoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREaXJlY3Rpb25zT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuODMgMTBoLjY3VjcuNUwxNyAxMWwtMS41OSAxLjU5TDE4LjgzIDE2bDIuNTktMi41OWMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzbC03Ljk5LThjLS43OC0uNzgtMi4wNS0uNzgtMi44MyAwTDggNS4xNyAxMi44MyAxMHpNMi44MSAyLjgxIDEuMzkgNC4yMiA1LjE3IDhsLTIuNTkgMi41OWMtLjc4Ljc4LS43OCAyLjA1IDAgMi44M2w4LjAxIDhjLjc4Ljc4IDIuMDUuNzggMi44MyAwTDE2IDE4LjgzbDMuNzggMy43OCAxLjQxLTEuNDFMMi44MSAyLjgxek0xMCAxNUg4di00YzAtLjA1LjAyLS4wOS4wMy0uMTRMMTAgMTIuODNWMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpc2NGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTZoMnYtMmgtMnYyem0wLTl2NWgyVjdoLTJ6TTEwIDRjLTQuNDIgMC04IDMuNTgtOCA4czMuNTggOCA4IDggOC0zLjU4IDgtOC0zLjU4LTgtOC04em0wIDEwYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9EaXN0dXJiQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOCAwLTEuODUuNjMtMy41NSAxLjY5LTQuOUwxNi45IDE4LjMxQTcuOTAyIDcuOTAyIDAgMCAxIDEyIDIwem02LjMxLTMuMUw3LjEgNS42OUE3LjkwMiA3LjkwMiAwIDAgMSAxMiA0YzQuNDIgMCA4IDMuNTggOCA4IDAgMS44NS0uNjMgMy41NS0xLjY5IDQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9EaXN0dXJiT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMXYyaC0xLjE3bDQuNTEgNC41MUE5LjkxIDkuOTEgMCAwIDAgMjIgMTJjMC01LjUyLTQuNDgtMTAtMTAtMTAtMi4wNCAwLTMuOTMuNjEtNS41MSAxLjY2TDEzLjgzIDExSDE3ek0xLjM5IDQuMjJsMi4yNyAyLjI3QTkuOTEgOS45MSAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMDQgMCAzLjkzLS42MSA1LjUxLTEuNjZsMi4yNyAyLjI3IDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIyek03IDExaDEuMTdsMiAySDd2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvRGlzdHVyYk9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem01IDExSDd2LTJoMTB2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9EaXN0dXJiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJzNC41IDEwIDEwIDEwIDEwLTQuNSAxMC0xMFMxNy41IDIgMTIgMnpNNCAxMmMwLTQuNCAzLjYtOCA4LTggMS44IDAgMy41LjYgNC45IDEuN0w1LjcgMTYuOUM0LjYgMTUuNSA0IDEzLjggNCAxMnptOCA4Yy0xLjggMC0zLjUtLjYtNC45LTEuN0wxOC4zIDcuMUMxOS40IDguNSAyMCAxMC4yIDIwIDEyYzAgNC40LTMuNiA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9Ob3REaXN0dXJiQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0tNjE4LTE0NjRINzgydjM2MDBILTYxOHpNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyek00IDEyYzAtNC40IDMuNi04IDgtOCAxLjggMCAzLjUuNiA0LjkgMS43TDUuNyAxNi45QzQuNiAxNS41IDQgMTMuOCA0IDEyem04IDhjLTEuOCAwLTMuNS0uNi00LjktMS43TDE4LjMgNy4xQzE5LjQgOC41IDIwIDEwLjIgMjAgMTJjMCA0LjQtMy42IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb05vdERpc3R1cmJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDExdjJoLTEuNDZsNC42OCA0LjY4QTkuOTIgOS45MiAwIDAgMCAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMC0yLjExIDAtNC4wNy42Ni01LjY4IDEuNzhMMTMuNTQgMTFIMTd6TTIuMjcgMi4yNyAxIDMuNTRsMi43OCAyLjc4QTkuOTIgOS45MiAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMTEgMCA0LjA3LS42NiA1LjY4LTEuNzhMMjAuNDYgMjNsMS4yNy0xLjI3TDExIDExIDIuMjcgMi4yN3pNNyAxM3YtMmgxLjQ2bDIgMkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb05vdERpc3R1cmJPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNSAxMUg3di0yaDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvTm90RGlzdHVyYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04IDAtMS44NS42My0zLjU1IDEuNjktNC45TDE2LjkgMTguMzFBNy45MDIgNy45MDIgMCAwIDEgMTIgMjB6bTYuMzEtMy4xTDcuMSA1LjY5QTcuOTAyIDcuOTAyIDAgMCAxIDEyIDRjNC40MiAwIDggMy41OCA4IDggMCAxLjg1LS42MyAzLjU1LTEuNjkgNC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcml2ZUV0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDUuMDFDMTguNzIgNC40MiAxOC4xNiA0IDE3LjUgNGgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTF2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuNSAxNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgMTIgNi41IDEyczEuNS42NyAxLjUgMS41UzcuMzMgMTUgNi41IDE1em0xMSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNNSAxMGwxLjUtNC41aDExTDE5IDEwSDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVuaGFuY2VkRW5jcnlwdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA4aC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNnYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6TTguOSA2YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xczMuMSAxLjM5IDMuMSAzLjF2Mkg4LjlWNnpNMTYgMTZoLTN2M2gtMnYtM0g4di0yaDN2LTNoMnYzaDN2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXZlbnRBdmFpbGFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41MyAxMS4wNiAxNS40NyAxMGwtNC44OCA0Ljg4LTIuMTItMi4xMi0xLjA2IDEuMDZMMTAuNTkgMTdsNS45NC01Ljk0ek0xOSAzaC0xVjFoLTJ2Mkg4VjFINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMTlhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOGgxNHYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXZlbnRCdXN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOS4zMSAxNyAyLjQ0LTIuNDRMMTQuMTkgMTdsMS4wNi0xLjA2LTIuNDQtMi40NCAyLjQ0LTIuNDRMMTQuMTkgMTBsLTIuNDQgMi40NEw5LjMxIDEwbC0xLjA2IDEuMDYgMi40NCAyLjQ0LTIuNDQgMi40NEw5LjMxIDE3ek0xOSAzaC0xVjFoLTJ2Mkg4VjFINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMTlhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOGgxNHYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXZlbnROb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTBIN3YyaDEwdi0yem0yLTdoLTFWMWgtMnYySDhWMUg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAxOWEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExem0tNS01SDd2Mmg3di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xkZXJTcGVjaWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tMi4wNiAxMUwxNSAxNS4yOCAxMi4wNiAxN2wuNzgtMy4zMy0yLjU5LTIuMjQgMy40MS0uMjlMMTUgOGwxLjM0IDMuMTQgMy40MS4yOS0yLjU5IDIuMjQuNzggMy4zM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW1hZ2VzZWFyY2hSb2xsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAydjZINlY2SDR2NGgxMHY1aDJ2OGgtNnYtOGgydi0zSDJWNGg0VjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTGl2ZVR2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA2aC03LjU5bDMuMjktMy4yOUwxNiAybC00IDQtNC00LS43MS43MUwxMC41OSA2SDNhMiAyIDAgMCAwLTIgMnYxMmMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjhhMiAyIDAgMCAwLTItMnptMCAxNEgzVjhoMTh2MTJ6TTkgMTB2OGw3LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1tcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek01IDE0bDMuNS00LjUgMi41IDMuMDFMMTQuNSA4bDQuNSA2SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1vcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAzSDdjLS42OSAwLTEuMjMuMzUtMS41OS44OEwwIDEybDUuNDEgOC4xMWMuMzYuNTMuOTcuODkgMS42Ni44OUgyMmMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDEzLjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROZXR3b3JrQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS45IDVjLS4xNyAwLS4zMi4wOS0uNDEuMjNsLS4wNy4xNS01LjE4IDExLjY1Yy0uMTYuMjktLjI2LjYxLS4yNi45NiAwIDEuMTEuOSAyLjAxIDIuMDEgMi4wMS45NiAwIDEuNzctLjY4IDEuOTYtMS41OWwuMDEtLjAzTDE2LjQgNS41YzAtLjI4LS4yMi0uNS0uNS0uNXpNMSA5bDIgMmMyLjg4LTIuODggNi43OS00LjA4IDEwLjUzLTMuNjJsMS4xOS0yLjY4QzkuODkgMy44NCA0Ljc0IDUuMjcgMSA5em0yMCAyIDItMmExNS4zNjcgMTUuMzY3IDAgMCAwLTUuNTktMy41N2wtLjUzIDIuODJjMS41LjYyIDIuOSAxLjUzIDQuMTIgMi43NXptLTQgNCAyLTJjLS44LS44LTEuNy0xLjQyLTIuNjYtMS44OWwtLjU1IDIuOTJjLjQyLjI3LjgzLjU5IDEuMjEuOTd6TTUgMTNsMiAyYTcuMSA3LjEgMCAwIDEgNC4wMy0ybDEuMjgtMi44OGMtMi42My0uMDgtNS4zLjg3LTcuMzEgMi44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTmV0d29ya0xvY2tlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41IDEwYy4xNyAwIC4zMy4wMy41LjA1VjFMMSAyMGgxM3YtM2MwLS44OS4zOS0xLjY4IDEtMi4yM3YtLjI3YzAtMi40OCAyLjAyLTQuNSA0LjUtNC41em0yLjUgNnYtMS41YTIuNSAyLjUgMCAwIDAtNSAwVjE2Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWg1Yy41NSAwIDEtLjQ1IDEtMXYtNGMwLS41NS0uNDUtMS0xLTF6bS0xIDBoLTN2LTEuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9FbmNyeXB0aW9uR21haWxlcnJvcnJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC45IDZjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjFzMy4xIDEuMzkgMy4xIDMuMXYyaC00LjI3TDIwIDE3LjE3VjEwYzAtMS4xLS45LTItMi0yaC0xVjZjMC0yLjc2LTIuMjQtNS01LTUtMi4yMSAwLTQuMDcgMS40NS00LjczIDMuNDRMOC45IDYuMDdWNnpNMi4xIDIuMS42OSAzLjUxIDUuMyA4LjEzQzQuNTUgOC40MiA0IDkuMTUgNCAxMHYxMGMwIDEuMS45IDIgMiAyaDEyYy4zNCAwIC42NS0uMDkuOTMtLjI0bDEuNTYgMS41NiAxLjQxLTEuNDFMMi4xIDIuMXpNMTIgMTdjLTEuMSAwLTItLjktMi0yIDAtLjU5LjI3LTEuMTIuNjgtMS40OWwyLjgxIDIuODFjLS4zNy40MS0uOS42OC0xLjQ5LjY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb0VuY3J5cHRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMjEuNzggNC4yMiA1IDMgNi4yMmwyLjA0IDIuMDRDNC40MiA4LjYgNCA5LjI1IDQgMTB2MTBjMCAxLjEuOSAyIDIgMmgxMmMuMjMgMCAuNDUtLjA1LjY2LS4xMkwxOS43OCAyMyAyMSAyMS43OHpNOC45IDZjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjFzMy4xIDEuMzkgMy4xIDMuMXYySDkuNjZMMjAgMTguMzRWMTBjMC0xLjEtLjktMi0yLTJoLTFWNmMwLTIuNzYtMi4yNC01LTUtNS0yLjU2IDAtNC42NCAxLjkzLTQuOTQgNC40TDguOSA3LjI0VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE9uZGVtYW5kVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNWEyIDIgMCAwIDAtMi0yem0wIDE0SDNWNWgxOHYxMnptLTUtNi03IDRWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uYWxWaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNWEyIDIgMCAwIDAtMi0yem0wIDE0SDNWNWgxOHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmVCbHVldG9vdGhTcGVha2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNzEgOS41IDE3IDcuMjFWMTFoLjVsMi44NS0yLjg1TDE4LjIxIDZsMi4xNS0yLjE1TDE3LjUgMUgxN3YzLjc5TDE0LjcxIDIuNWwtLjcxLjcxTDE2Ljc5IDYgMTQgOC43OWwuNzEuNzF6TTE4IDIuOTFsLjk0Ljk0LS45NC45NFYyLjkxem0wIDQuMy45NC45NC0uOTQuOTRWNy4yMXptMiA4LjI5Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41N2ExLjAyIDEuMDIgMCAwIDAtMS4wMi4yNGwtMi4yIDIuMmExNS4wNDUgMTUuMDQ1IDAgMCAxLTYuNTktNi41OWwyLjItMi4yMWEuOTYuOTYgMCAwIDAgLjI1LTFBMTEuMzYgMTEuMzYgMCAwIDEgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lQ2FsbGJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjYyIDEwLjc5YzEuNDQgMi44MyAzLjc2IDUuMTQgNi41OSA2LjU5bDIuMi0yLjJjLjI3LS4yNy42Ny0uMzYgMS4wMi0uMjQgMS4xMi4zNyAyLjMzLjU3IDMuNTcuNTcuNTUgMCAxIC40NSAxIDFWMjBjMCAuNTUtLjQ1IDEtMSAxLTkuMzkgMC0xNy03LjYxLTE3LTE3IDAtLjU1LjQ1LTEgMS0xaDMuNWMuNTUgMCAxIC40NSAxIDEgMCAxLjI1LjIgMi40NS41NyAzLjU3LjExLjM1LjAzLjc0LS4yNSAxLjAybC0yLjIgMi4yem0xMy41NC03LjEtLjcxLS43TDEzIDkuMjlWNWgtMXY2aDZ2LTFoLTQuMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lRm9yd2FyZGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggMTEgNS01LTUtNXYzaC00djRoNHYzem0yIDQuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTdhMS4wMiAxLjAyIDAgMCAwLTEuMDIuMjRsLTIuMiAyLjJhMTUuMDQ1IDE1LjA0NSAwIDAgMS02LjU5LTYuNTlsMi4yLTIuMjFhLjk2Ljk2IDAgMCAwIC4yNS0xQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjVjMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZUluVGFsayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3YTEuMDIgMS4wMiAwIDAgMC0xLjAyLjI0bC0yLjIgMi4yYTE1LjA0NSAxNS4wNDUgMCAwIDEtNi41OS02LjU5bDIuMi0yLjIxYS45Ni45NiAwIDAgMCAuMjUtMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNMTkgMTJoMmE5IDkgMCAwIDAtOS05djJjMy44NyAwIDcgMy4xMyA3IDd6bS00IDBoMmMwLTIuNzYtMi4yNC01LTUtNXYyYzEuNjYgMCAzIDEuMzQgMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQaG9uZUxvY2tlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNVY0YzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYxaC0xdjVoNlY1aC0xem0tMSAwaC0yVjRjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjYzIDE0LjQtMi41MiAyLjVjLTIuNS0xLjQzLTQuNTctMy41LTYtNmwyLjUtMi41MmMuMjMtLjI0LjMzLS41Ny4yNy0uOUw5LjEzIDMuOGMtLjA5LS40Ni0uNS0uOC0uOTgtLjhINGMtLjU2IDAtMS4wMy40Ny0xIDEuMDMuMTcgMi44OSAxLjA1IDUuNiAyLjQzIDcuOTcgMS41OCAyLjczIDMuODUgNC45OSA2LjU3IDYuNTcgMi4zNyAxLjM3IDUuMDggMi4yNiA3Ljk3IDIuNDMuNTYuMDMgMS4wMy0uNDQgMS4wMy0xdi00LjE1YzAtLjQ4LS4zNC0uODktLjgtLjk4bC0zLjY3LS43M2EuOTg1Ljk4NSAwIDAgMC0uOS4yNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGhvbmVNaXNzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgNS41IDEyIDExbDctNy0xLTEtNiA2LTQuNS00LjVIMTFWM0g1djZoMS41VjUuNXptMTcuMjEgMTEuMTdBMTYuOTcxIDE2Ljk3MSAwIDAgMCAxMiAxMkM3LjQ2IDEyIDMuMzQgMTMuNzguMjkgMTYuNjdjLS4xOC4xOC0uMjkuNDMtLjI5Ljcxcy4xMS41My4yOS43MWwyLjQ4IDIuNDhjLjE4LjE4LjQzLjI5LjcxLjI5LjI3IDAgLjUyLS4xMS43LS4yOC43OS0uNzQgMS42OS0xLjM2IDIuNjYtMS44NS4zMy0uMTYuNTYtLjUuNTYtLjl2LTMuMWMxLjQ1LS40OCAzLS43MyA0LjYtLjczIDEuNiAwIDMuMTUuMjUgNC42LjcydjMuMWMwIC4zOS4yMy43NC41Ni45Ljk4LjQ5IDEuODcgMS4xMiAyLjY3IDEuODUuMTguMTguNDMuMjguNy4yOC4yOCAwIC41My0uMTEuNzEtLjI5bDIuNDgtMi40OGMuMTgtLjE4LjI5LS40My4yOS0uNzFzLS4xMi0uNTItLjMtLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBob25lUGF1c2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgM2gtMnY3aDJWM3ptMyAxMi41Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41N2ExLjAyIDEuMDIgMCAwIDAtMS4wMi4yNGwtMi4yIDIuMmExNS4wNDUgMTUuMDQ1IDAgMCAxLTYuNTktNi41OWwyLjItMi4yMWEuOTYuOTYgMCAwIDAgLjI1LTFBMTEuMzYgMTEuMzYgMCAwIDEgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6TTE5IDN2N2gyVjNoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvd2VyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxNC40OVY5YzAtMS0xLjAxLTIuMDEtMi0yVjNoLTJ2NGgtNFYzSDh2Mi40OGw5LjUxIDkuNS40OS0uNDl6bS0xLjc2IDEuNzdMNy4yIDcuMmwtLjAxLjAxTDMuOTggNCAyLjcxIDUuMjVsMy4zNiAzLjM2QzYuMDQgOC43NCA2IDguODcgNiA5djUuNDhMOS41IDE4djNoNXYtM2wuNDgtLjQ4TDE5LjQ1IDIybDEuMjYtMS4yOC00LjQ3LTQuNDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBvd2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMDEgNyAxNiAzaC0ydjRoLTRWM0g4djRoLS4wMUM3IDYuOTkgNiA3Ljk5IDYgOC45OXY1LjQ5TDkuNSAxOHYzaDV2LTNsMy41LTMuNTF2LTUuNWMwLTEtMS0yLTEuOTktMS45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHJpb3JpdHlIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE5XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDNoNHYxMmgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUnVubmluZ1dpdGhFcnJvcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMHY4aC0ydi04aDJ6bS0yIDEwdjJoMnYtMmgtMnptLTItMi43MUE3Ljk5IDcuOTkgMCAwIDEgMTIgMjBjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTh2OWw3LjU1LTcuNTVBOS45NjUgOS45NjUgMCAwIDAgMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMGMyLjI1IDAgNC4zMy0uNzQgNi0ydi0yLjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZENhcmRBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMmgtOEw0LjAyIDggNCAyMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS01IDE1aC0ydi0yaDJ2MnptMC00aC0yVjhoMnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyaC04TDQuMDIgOCA0IDIwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTYgNmgtMlY0aDJ2NHptMyAwaC0yVjRoMnY0em0zIDBoLTJWNGgydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpbUNhcmRBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJoLThMNC4wMiA4IDQgMjBjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNSAxNWgtMnYtMmgydjJ6bTAtNGgtMlY4aDJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU21zRmFpbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDEyaC0ydi0yaDJ2MnptMC00aC0yVjZoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTbXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNOSAxMUg3VjloMnYyem00IDBoLTJWOWgydjJ6bTQgMGgtMlY5aDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3VwcG9ydEFnZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTIuMjJDMjEgNi43MyAxNi43NCAzIDEyIDNjLTQuNjkgMC05IDMuNjUtOSA5LjI4LS42LjM0LTEgLjk4LTEgMS43MnYyYzAgMS4xLjkgMiAyIDJoMXYtNi4xYzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDdWMTloLTh2Mmg4YzEuMSAwIDItLjkgMi0ydi0xLjIyYy41OS0uMzEgMS0uOTIgMS0xLjY0di0yLjNjMC0uNy0uNDEtMS4zMS0xLTEuNjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMS4wM0E2LjA0IDYuMDQgMCAwIDAgMTIuMDUgNmMtMy4wMyAwLTYuMjkgMi41MS02LjAzIDYuNDVhOC4wNzUgOC4wNzUgMCAwIDAgNC44Ni01Ljg5YzEuMzEgMi42MyA0IDQuNDQgNy4xMiA0LjQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTeW5jRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgNi4zNVY0LjI2Yy0uOC4yMS0xLjU1LjU0LTIuMjMuOTZsMS40NiAxLjQ2Yy4yNS0uMTIuNS0uMjQuNzctLjMzem0tNy4xNC0uOTQgMi4zNiAyLjM2YTcuOTI1IDcuOTI1IDAgMCAwIDEuMTQgOS44N0w0IDIwaDZ2LTZsLTIuMjQgMi4yNEE2LjAwMyA2LjAwMyAwIDAgMSA2IDEyYzAtMSAuMjUtMS45NC42OC0yLjc3bDguMDggOC4wOGMtLjI1LjEzLS41LjI1LS43Ny4zNHYyLjA5Yy44LS4yMSAxLjU1LS41NCAyLjIzLS45NmwyLjM2IDIuMzYgMS4yNy0xLjI3TDQuMTQgNC4xNCAyLjg2IDUuNDF6TTIwIDRoLTZ2NmwyLjI0LTIuMjRBNi4wMDMgNi4wMDMgMCAwIDEgMTggMTJjMCAxLS4yNSAxLjk0LS42OCAyLjc3bDEuNDYgMS40NmE3LjkyNSA3LjkyNSAwIDAgMC0xLjE0LTkuODdMMjAgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3luY0xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0LjI2djIuMDlDNy42NyA3LjE4IDYgOS4zOSA2IDEyYzAgMS43Ny43OCAzLjM0IDIgNC40NFYxNGgydjZINHYtMmgyLjczQTcuOTQyIDcuOTQyIDAgMCAxIDQgMTJjMC0zLjczIDIuNTUtNi44NSA2LTcuNzR6TTIwIDRoLTZ2NmgyVjcuNTZjMS4yMiAxLjEgMiAyLjY3IDIgNC40NGgyYzAtMi40LTEuMDYtNC41NC0yLjczLTZIMjBWNHptMCAxM3YtMWMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2MWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xem0tMSAwaC0ydi0xYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTeW5jUHJvYmxlbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTJjMCAyLjIxLjkxIDQuMiAyLjM2IDUuNjRMMyAyMGg2di02bC0yLjI0IDIuMjRBNi4wMDMgNi4wMDMgMCAwIDEgNSAxMmE1Ljk5IDUuOTkgMCAwIDEgNC01LjY1VjQuMjZDNS41NSA1LjE1IDMgOC4yNyAzIDEyem04IDVoMnYtMmgtMnYyek0yMSA0aC02djZsMi4yNC0yLjI0QTYuMDAzIDYuMDAzIDAgMCAxIDE5IDEyYTUuOTkgNS45OSAwIDAgMS00IDUuNjV2Mi4wOWMzLjQ1LS44OSA2LTQuMDEgNi03Ljc0IDAtMi4yMS0uOTEtNC4yLTIuMzYtNS42NEwyMSA0em0tMTAgOWgyVjdoLTJ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3luYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRWMUw4IDVsNCA0VjZjMy4zMSAwIDYgMi42OSA2IDYgMCAxLjAxLS4yNSAxLjk3LS43IDIuOGwxLjQ2IDEuNDZBNy45MyA3LjkzIDAgMCAwIDIwIDEyYzAtNC40Mi0zLjU4LTgtOC04em0wIDE0Yy0zLjMxIDAtNi0yLjY5LTYtNiAwLTEuMDEuMjUtMS45Ny43LTIuOEw1LjI0IDcuNzRBNy45MyA3LjkzIDAgMCAwIDQgMTJjMCA0LjQyIDMuNTggOCA4IDh2M2w0LTQtNC00djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN5c3RlbVVwZGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEuMDEgNyAxYy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE3IDE5SDdWNWgxMHYxNHptLTEtNmgtM1Y4aC0ydjVIOGw0IDQgNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYXBBbmRQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxNnYyYzIuNzYgMCA1IDIuMjQgNSA1aDJjMC0zLjg3LTMuMTMtNy03LTd6bTAgNHYzaDNjMC0xLjY2LTEuMzQtMy0zLTN6bTAtOHYyYTkgOSAwIDAgMSA5IDloMmMwLTYuMDgtNC45Mi0xMS0xMS0xMXpNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjcuMzdjLjY5LjE2IDEuMzYuMzcgMiAuNjRWNWgxMHYxM2gtMy4wM2MuNTIgMS4yNS44NCAyLjU5Ljk1IDRIMTdjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGltZVRvTGVhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MiA1LjAxQzE4LjcyIDQuNDIgMTguMTYgNCAxNy41IDRoLTExYy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwzIDExdjhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGwtMi4wOC01Ljk5ek02LjUgMTVjLS44MyAwLTEuNS0uNjctMS41LTEuNVM1LjY3IDEyIDYuNSAxMnMxLjUuNjcgMS41IDEuNVM3LjMzIDE1IDYuNSAxNXptMTEgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6TTUgMTBsMS41LTQuNWgxMUwxOSAxMEg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUdk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMSAzLjU0IDEuNTMgMS41M0MxLjY1IDUuMjggMSA2LjA2IDEgN3YxMmMwIDEuMS45IDIgMiAyaDE1LjQ2bDIgMiAxLjI2LTEuMjdMMi4yNyAyLjI3IDEgMy41NHpNMyAxOVY3aDEuNDZsMTIgMTJIM3pNMjEgNWgtNy41OGwzLjI5LTMuM0wxNiAxbC00IDQtNC00LS43LjdMMTAuNTggNUg3LjUybDIgMkgyMXYxMS40OGwxLjY1IDEuNjVjLjIyLS4zMi4zNS0uNzEuMzUtMS4xM1Y3YzAtMS4xMS0uODktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpYnJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTVoMlY5SDB2NnptMyAyaDJWN0gzdjEwem0xOS04djZoMlY5aC0yem0tMyA4aDJWN2gtMnYxMHpNMTYuNSAzaC05QzYuNjcgMyA2IDMuNjcgNiA0LjV2MTVjMCAuODMuNjcgMS41IDEuNSAxLjVoOWMuODMgMCAxLjUtLjY3IDEuNS0xLjV2LTE1YzAtLjgzLS42Ny0xLjUtMS41LTEuNXpNMTYgMTlIOFY1aDh2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpZGVvQ2hhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS0zIDExLTItMS45OVYxM2MwIC41NS0uNDUgMS0xIDFIOGMtLjU1IDAtMS0uNDUtMS0xVjdjMC0uNTUuNDUtMSAxLTFoNmMuNTUgMCAxIC40NSAxIDF2MS45OUwxNyA3djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZvaWNlQ2hhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRINmwtMiAyVjRoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjI1IDVoMS41djEwaC0xLjV6TTguNSA3SDEwdjZIOC41ek02IDloMS41djJINnpNMTQgN2gxLjV2NkgxNHpNMTYuNSA5SDE4djJoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVnBuTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDR2LS41YTIuNSAyLjUgMCAwIDAtNSAwVjRjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxaDVjLjU1IDAgMS0uNDUgMS0xVjVjMC0uNTUtLjQ1LTEtMS0xem0tLjggMGgtMy40di0uNWMwLS45NC43Ni0xLjcgMS43LTEuN3MxLjcuNzYgMS43IDEuN1Y0em0tMi4yOCA4Yy4wNC4zMy4wOC42Ni4wOCAxIDAgMi4wOC0uOCAzLjk3LTIuMSA1LjM5LS4yNi0uODEtMS0xLjM5LTEuOS0xLjM5aC0xdi0zYzAtLjU1LS40NS0xLTEtMUg3di0yaDJjLjU1IDAgMS0uNDUgMS0xVjhoMmMxLjEgMCAyLS45IDItMlYzLjQ2Yy0uOTUtLjMtMS45NS0uNDYtMy0uNDZDNS40OCAzIDEgNy40OCAxIDEzczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMGMwLS4zNC0uMDItLjY3LS4wNS0xaC0yLjAzek0xMCAyMC45M2MtMy45NS0uNDktNy0zLjg1LTctNy45MyAwLS42Mi4wOC0xLjIxLjIxLTEuNzlMOCAxNnYxYzAgMS4xLjkgMiAyIDJ2MS45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNSAyMnYtNy41SDRWOWMwLTEuMS45LTIgMi0yaDNjMS4xIDAgMiAuOSAyIDJ2NS41SDkuNVYyMmgtNHpNMTggMjJ2LTZoM2wtMi41NC03LjYzQTIuMDEgMi4wMSAwIDAgMCAxNi41NiA3aC0uMTJhMiAyIDAgMCAwLTEuOSAxLjM3TDEyIDE2aDN2Nmgzek03LjUgNmMxLjExIDAgMi0uODkgMi0ycy0uODktMi0yLTItMiAuODktMiAyIC44OSAyIDIgMnptOSAwYzEuMTEgMCAyLS44OSAyLTJzLS44OS0yLTItMi0yIC44OS0yIDIgLjg5IDIgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaWZpT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAuMDFjMC0uMDEgMC0uMDEgMCAwTDAgMHYyNGgyNFYuMDF6TTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjk5IDlDMTkuMTUgNS4xNiAxMy44IDMuNzYgOC44NCA0Ljc4bDIuNTIgMi41MmMzLjQ3LS4xNyA2Ljk5IDEuMDUgOS42MyAzLjdsMi0yem0tNCA0YTkuNzkzIDkuNzkzIDAgMCAwLTQuNDktMi41NmwzLjUzIDMuNTMuOTYtLjk3ek0yIDMuMDUgNS4wNyA2LjFDMy42IDYuODIgMi4yMiA3Ljc4IDEgOWwxLjk5IDJjMS4yNC0xLjI0IDIuNjctMi4xNiA0LjItMi43N2wyLjI0IDIuMjRBOS42ODQgOS42ODQgMCAwIDAgNSAxM3YuMDFMNi45OSAxNWE3LjA0MiA3LjA0MiAwIDAgMSA0LjkyLTIuMDZMMTguOTggMjBsMS4yNy0xLjI2TDMuMjkgMS43OSAyIDMuMDV6TTkgMTdsMyAzIDMtM2E0LjIzNyA0LjIzNyAwIDAgMC02IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdpZmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xIDkgMiAyYzQuOTctNC45NyAxMy4wMy00Ljk3IDE4IDBsMi0yQzE2LjkzIDIuOTMgNy4wOCAyLjkzIDEgOXptOCA4IDMgMyAzLTNhNC4yMzcgNC4yMzcgMCAwIDAtNiAwem0tNC00IDIgMmE3LjA3NCA3LjA3NCAwIDAgMSAxMCAwbDItMkMxNS4xNCA5LjE0IDguODcgOS4xNCA1IDEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBY1VuaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMWgtNC4xN2wzLjI0LTMuMjQtMS40MS0xLjQyTDE1IDExaC0yVjlsNC42Ni00LjY2LTEuNDItMS40MUwxMyA2LjE3VjJoLTJ2NC4xN0w3Ljc2IDIuOTMgNi4zNCA0LjM0IDExIDl2Mkg5TDQuMzQgNi4zNCAyLjkzIDcuNzYgNi4xNyAxMUgydjJoNC4xN2wtMy4yNCAzLjI0IDEuNDEgMS40Mkw5IDEzaDJ2MmwtNC42NiA0LjY2IDEuNDIgMS40MUwxMSAxNy44M1YyMmgydi00LjE3bDMuMjQgMy4yNCAxLjQyLTEuNDFMMTMgMTV2LTJoMmw0LjY2IDQuNjYgMS40MS0xLjQyTDE3LjgzIDEzSDIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBaXJwb3J0U2h1dHRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDVIM2EyIDIgMCAwIDAtMiAydjloMmMwIDEuNjUgMS4zNCAzIDMgM3MzLTEuMzUgMy0zaDUuNWMwIDEuNjUgMS4zNCAzIDMgM3MzLTEuMzUgMy0zSDIzdi01bC02LTZ6TTMgMTFWN2g0djRIM3ptMyA2LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em03LTYuNUg5VjdoNHY0em00LjUgNi41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNMTUgMTFWN2gxbDQgNGgtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWxsSW5jbHVzaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC42IDYuNjJjLTEuNDQgMC0yLjguNTYtMy43NyAxLjUzTDEyIDEwLjY2IDEwLjQ4IDEyaC4wMUw3LjggMTQuMzljLS42NC42NC0xLjQ5Ljk5LTIuNC45OS0xLjg3IDAtMy4zOS0xLjUxLTMuMzktMy4zOFMzLjUzIDguNjIgNS40IDguNjJjLjkxIDAgMS43Ni4zNSAyLjQ0IDEuMDNsMS4xMyAxIDEuNTEtMS4zNEw5LjIyIDguMkE1LjM3IDUuMzcgMCAwIDAgNS40IDYuNjJDMi40MiA2LjYyIDAgOS4wNCAwIDEyczIuNDIgNS4zOCA1LjQgNS4zOGMxLjQ0IDAgMi44LS41NiAzLjc3LTEuNTNsMi44My0yLjUuMDEuMDFMMTMuNTIgMTJoLS4wMWwyLjY5LTIuMzljLjY0LS42NCAxLjQ5LS45OSAyLjQtLjk5IDEuODcgMCAzLjM5IDEuNTEgMy4zOSAzLjM4cy0xLjUyIDMuMzgtMy4zOSAzLjM4Yy0uOSAwLTEuNzYtLjM1LTIuNDQtMS4wM2wtMS4xNC0xLjAxLTEuNTEgMS4zNCAxLjI3IDEuMTJhNS4zODYgNS4zODYgMCAwIDAgMy44MiAxLjU3YzIuOTggMCA1LjQtMi40MSA1LjQtNS4zOHMtMi40Mi01LjM3LTUuNC01LjM3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBcGFydG1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMVYzSDd2NEgzdjE0aDh2LTRoMnY0aDhWMTFoLTR6TTcgMTlINXYtMmgydjJ6bTAtNEg1di0yaDJ2MnptMC00SDVWOWgydjJ6bTQgNEg5di0yaDJ2MnptMC00SDlWOWgydjJ6bTAtNEg5VjVoMnYyem00IDhoLTJ2LTJoMnYyem0wLTRoLTJWOWgydjJ6bTAtNGgtMlY1aDJ2MnptNCAxMmgtMnYtMmgydjJ6bTAtNGgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhYnlDaGFuZ2luZ1N0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA4djJoLTNMOC4zMSA4LjgyIDcgMTIuNzVWMjJIM1YxMmwxLjU4LTQuNjNBMi4wMDMgMi4wMDMgMCAwIDEgNy4zIDYuMThsNC4xNSAxLjgzTDE0IDh6TTggMWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTEgMThoMTJ2LTJIOXYyem0xMC41LTNjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjUtMS41LjY3LTEuNSAxLjUuNjcgMS41IDEuNSAxLjV6TTEzIDEyYzAtLjU1LS40NS0xLTEtMUg5djJoMnYxYzAgMS4xLjkgMiAyIDJoMmMxLjEgMCAyLS45IDItMnYtM2gtMnYyaC0ydi0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYWNrcGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDh2MTJjMCAxLjEtLjkgMi0yIDJINmMtMS4xIDAtMi0uOS0yLTJWOGMwLTEuODYgMS4yOC0zLjQxIDMtMy44NlYyaDN2Mmg0VjJoM3YyLjE0YzEuNzIuNDUgMyAyIDMgMy44NnpNNiAxMnYyaDEwdjJoMnYtNEg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYWxjb255IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTB2Mkg4di0yaDJ6bTYgMnYtMmgtMnYyaDJ6bTUgMnY4SDN2LThoMXYtNGMwLTQuNDIgMy41OC04IDgtOHM4IDMuNTggOCA4djRoMXpNNyAxNkg1djRoMnYtNHptNCAwSDl2NGgydi00em0wLTExLjkyQzguMTYgNC41NiA2IDcuMDMgNiAxMHY0aDVWNC4wOHpNMTMgMTRoNXYtNGMwLTIuOTctMi4xNi01LjQ0LTUtNS45MlYxNHptMiAyaC0ydjRoMnYtNHptNCAwaC0ydjRoMnYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0aHR1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiN1wiLFwiY3lcIjpcIjdcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTNWNC44M0MyMCAzLjI3IDE4LjczIDIgMTcuMTcgMmMtLjc1IDAtMS40Ny4zLTIgLjgzbC0xLjI1IDEuMjVjLS4xNi0uMDUtLjMzLS4wOC0uNTEtLjA4LS40IDAtLjc3LjEyLTEuMDguMzJsMi43NiAyLjc2Yy4yLS4zMS4zMi0uNjguMzItMS4wOCAwLS4xOC0uMDMtLjM0LS4wNy0uNTFsMS4yNS0xLjI1YS44MjguODI4IDAgMCAxIDEuNDEuNTlWMTNoLTYuODVjLS4zLS4yMS0uNTctLjQ1LS44Mi0uNzJsLTEuNC0xLjU1Yy0uMTktLjIxLS40My0uMzgtLjY5LS41QTIuMjUxIDIuMjUxIDAgMCAwIDUgMTIuMjVWMTNIMnY2YzAgMS4xLjkgMiAyIDIgMCAuNTUuNDUgMSAxIDFoMTRjLjU1IDAgMS0uNDUgMS0xIDEuMSAwIDItLjkgMi0ydi02aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCZWFjaEFjY2VzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEzLjEyNyAxNC41NiAxLjQzLTEuNDMgNi40NCA2LjQ0M0wxOS41NyAyMXptNC4yOTMtNS43MyAyLjg2LTIuODZjLTMuOTUtMy45NS0xMC4zNS0zLjk2LTE0LjMtLjAyIDMuOTMtMS4zIDguMzEtLjI1IDExLjQ0IDIuODh6TTUuOTUgNS45OGMtMy45NCAzLjk1LTMuOTMgMTAuMzUuMDIgMTQuM2wyLjg2LTIuODZDNS43IDE0LjI5IDQuNjUgOS45MSA1Ljk1IDUuOTh6bS4wMi0uMDItLjAxLjAxYy0uMzggMy4wMSAxLjE3IDYuODggNC4zIDEwLjAybDUuNzMtNS43M2MtMy4xMy0zLjEzLTcuMDEtNC42OC0xMC4wMi00LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJlbnRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTFWNWg0YzEuMSAwIDIgLjkgMiAydjRoLTZ6bTQgOGMxLjEgMCAyLS45IDItMnYtNGgtNnY2aDR6TTE0IDV2MTRINGMtMS4xIDAtMi0uOS0yLTJWN2MwLTEuMS45LTIgMi0yaDEwem0tNC41IDdjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNS42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJ1bmdhbG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMyA0LjIgMTUuNWwxLjcgMS4wNkw3IDE0LjhWMjFoNHYtNWgydjVoNHYtNi4yMWwxLjEgMS43NyAxLjctMS4wNkwxMiAzem0xIDExaC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQnVzaW5lc3NDZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwem0xMCA1aDR2MmgtNHptMCAwaDR2MmgtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTZ2LTFIMy4wMUwzIDE5YzAgMS4xMS44OSAyIDIgMmgxNGMxLjExIDAgMi0uODkgMi0ydi00aC03djFoLTR6bTEwLTloLTQuMDFWNWwtMi0yaC00bC0yIDJ2Mkg0Yy0xLjEgMC0yIC45LTIgMnYzYzAgMS4xMS44OSAyIDIgMmg2di0yaDR2Mmg2YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6bS02IDBoLTRWNWg0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhYmluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMWMwIDEuNjYtMS4zNCAzLTMgMy0uNTUgMC0xIC40NS0xIDFINGMwLTEuNjYgMS4zNC0zIDMtMyAuNTUgMCAxLS40NSAxLTFoMnptMiAyTDYgNy41OFY2SDR2My4xMUwxIDExLjRsMS4yMSAxLjU5TDQgMTEuNjJWMjFoMTZ2LTkuMzhsMS43OSAxLjM2TDIzIDExLjQgMTIgM3ptMS45NCA0aC0zLjg5TDEyIDUuNTIgMTMuOTQgN3ptLTYuNSAyaDkuMTJMMTggMTAuMXYuOUg2di0uOUw3LjQ0IDl6TTE4IDEzdjJINnYtMmgxMnpNNiAxOXYtMmgxMnYySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhcnBlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjczIDE0LjIzIDcgMS41IDMuMTEgNS4zOWw4LjEzIDExLjY3Yy0uNzguNzgtLjc4IDIuMDUgMCAyLjgzbDEuNDEgMS40MWMuNzguNzggMi4wNS43OCAyLjgzIDBsNC4yNC00LjI0Yy43OS0uNzguNzktMi4wNS4wMS0yLjgzem0tNS42NiA1LjY1LTEuNDEtMS40MSA0LjI0LTQuMjQgMS40MSAxLjQxLTQuMjQgNC4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FzaW5vIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHptMjEuMDIgMTljMCAxLjEtLjkgMi0yIDJoLTE0Yy0xLjEgMC0yLS45LTItMlY1YzAtMS4xLjktMiAyLTJoMTRjMS4xIDAgMiAuOSAyIDJ2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek03LjUgMThjLS44MyAwLTEuNS0uNjctMS41LTEuNVM2LjY3IDE1IDcuNSAxNXMxLjUuNjcgMS41IDEuNVM4LjMzIDE4IDcuNSAxOHptMC05QzYuNjcgOSA2IDguMzMgNiA3LjVTNi42NyA2IDcuNSA2IDkgNi42NyA5IDcuNSA4LjMzIDkgNy41IDl6bTQuNSA0LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41em00LjUgNC41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXptMC05Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTUuNjcgNiAxNi41IDZzMS41LjY3IDEuNSAxLjVTMTcuMzMgOSAxNi41IDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoYWxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDcuNSA3LjUgNy41LTEuNDEgMS40MUwxNSAxNS4zM1YyMGgtNHYtNUg5djVINXYtNC42N2wtMS4wOSAxLjA5TDIuNSAxNSAxMCA3LjV6bTEyLTFoLTEuMTlsLjc1LS43NS0uNzEtLjcxLTEuNDYgMS40NmgtLjg5di0uODlsMS40NS0xLjQ1LS43MS0uNzEtLjc0Ljc0VjNoLTF2MS4xOWwtLjc1LS43NS0uNzEuNzEgMS40NSAxLjQ1di45aC0uODlsLTEuNDUtMS40NS0uNzEuNzEuNzUuNzVIMTR2MWgxLjE5bC0uNzUuNzUuNzEuNzEgMS40NS0xLjQ1aC44OXYuODlsLTEuNDUgMS40NS43MS43MS43NS0uNzVWMTFoMVY5LjgxbC43NS43NS43MS0uNzEtMS40Ni0xLjQ2VjcuNWguODlsMS40NSAxLjQ1LjcxLS43MS0uNzQtLjc0SDIydi0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGFyZ2luZ1N0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC41IDExLTMgNnYtNGgtMmwzLTZ2NGgyek03IDFoMTBjMS4xIDAgMiAuOSAyIDJ2MThjMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJWM2MwLTEuMS45LTIgMi0yem0wIDV2MTJoMTBWNkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGVja3Jvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS42IDE4LjIgMTMgMTEuNzV2LS45MWEzLjQ5NiAzLjQ5NiAwIDAgMC0uMTgtNi43NUEzLjUxIDMuNTEgMCAwIDAgOC41IDcuNWgyYzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41YzAgLjg0LS42OSAxLjUyLTEuNTMgMS41LS41NC0uMDEtLjk3LjQ1LS45Ny45OXYxLjc2TDIuNCAxOC4yYy0uNzcuNTgtLjM2IDEuOC42IDEuOGgxOGMuOTYgMCAxLjM3LTEuMjIuNi0xLjh6TTYgMThsNi00LjUgNiA0LjVINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hpbGRDYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNC41XCIsXCJjeVwiOlwiMTAuNVwiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjkuNVwiLFwiY3lcIjpcIjEwLjVcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuOTQgMTIuNjZjLjA0LS4yMS4wNi0uNDMuMDYtLjY2cy0uMDItLjQ1LS4wNi0uNjZhNC4wMDggNC4wMDggMCAwIDAtMi44MS0zLjE3IDkuMTE0IDkuMTE0IDAgMCAwLTIuMTktMi45MUMxNi4zNiAzLjg1IDE0LjI4IDMgMTIgM3MtNC4zNi44NS01Ljk0IDIuMjZjLS45Mi44MS0xLjY3IDEuOC0yLjE5IDIuOTFhMy45OTQgMy45OTQgMCAwIDAtMi44MSAzLjE3Yy0uMDQuMjEtLjA2LjQzLS4wNi42NnMuMDIuNDUuMDYuNjZhNC4wMDggNC4wMDggMCAwIDAgMi44MSAzLjE3IDguOTc3IDguOTc3IDAgMCAwIDIuMTcgMi44OUM3LjYyIDIwLjE0IDkuNzEgMjEgMTIgMjFzNC4zOC0uODYgNS45Ny0yLjI4Yy45LS44IDEuNjUtMS43OSAyLjE3LTIuODlhMy45OTggMy45OTggMCAwIDAgMi44LTMuMTd6TTE5IDE0Yy0uMSAwLS4xOS0uMDItLjI5LS4wMy0uMi42Ny0uNDkgMS4yOS0uODYgMS44NkMxNi42IDE3Ljc0IDE0LjQ1IDE5IDEyIDE5cy00LjYtMS4yNi01Ljg1LTMuMTdjLS4zNy0uNTctLjY2LTEuMTktLjg2LTEuODYtLjEuMDEtLjE5LjAzLS4yOS4wMy0xLjEgMC0yLS45LTItMnMuOS0yIDItMmMuMSAwIC4xOS4wMi4yOS4wMy4yLS42Ny40OS0xLjI5Ljg2LTEuODZDNy40IDYuMjYgOS41NSA1IDEyIDVzNC42IDEuMjYgNS44NSAzLjE3Yy4zNy41Ny42NiAxLjE5Ljg2IDEuODYuMS0uMDEuMTktLjAzLjI5LS4wMyAxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDJ6TTcuNSAxNGMuNzYgMS43NyAyLjQ5IDMgNC41IDNzMy43NC0xLjIzIDQuNS0zaC05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDaGlsZEZyaWVuZGx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMnY4aDhjMC00LjQyLTMuNTgtOC04LTh6bTYuMzIgMTMuODlBNy45NDggNy45NDggMCAwIDAgMjEgMTFINi40NGwtLjk1LTJIMnYyaDIuMjJzMS44OSA0LjA3IDIuMTIgNC40MmMtMS4xLjU5LTEuODQgMS43NS0xLjg0IDMuMDhDNC41IDIwLjQzIDYuMDcgMjIgOCAyMmMxLjc2IDAgMy4yMi0xLjMgMy40Ni0zaDIuMDhjLjI0IDEuNyAxLjcgMyAzLjQ2IDMgMS45MyAwIDMuNS0xLjU3IDMuNS0zLjUgMC0xLjA0LS40Ni0xLjk3LTEuMTgtMi42MXpNOCAyMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzcuMTcgMTcgOCAxN3MxLjUuNjcgMS41IDEuNVM4LjgzIDIwIDggMjB6bTkgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzE2LjE3IDE3IDE3IDE3czEuNS42NyAxLjUgMS41UzE3LjgzIDIwIDE3IDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb3Jwb3JhdGVGYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN1YzSDJ2MThoMjBWN0gxMnptLTIgMTJINHYtMmg2djJ6bTAtNEg0di0yaDZ2MnptMC00SDRWOWg2djJ6bTAtNEg0VjVoNnYyem0xMCAxMmgtOFY5aDh2MTB6bS0yLThoLTR2Mmg0di0yem0wIDRoLTR2Mmg0di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb3R0YWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMyA2IDcuNThWNkg0djMuMTFMMSAxMS40bDEuMjEgMS41OUw0IDExLjYyVjIxaDd2LTZoMnY2aDd2LTkuMzhsMS43OSAxLjM2TDIzIDExLjQgMTIgM3ptLTItMmMwIDEuNjYtMS4zNCAzLTMgMy0uNTUgMC0xIC40NS0xIDFINGMwLTEuNjYgMS4zNC0zIDMtMyAuNTUgMCAxLS40NSAxLTFoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ291bnRlcnRvcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMFY3YzAtMS42Ni0xLjM0LTMtMy0zcy0zIDEuMzQtMyAzaDJjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjNIOGMxLjEgMCAyLS45IDItMlY0SDR2NGMwIDEuMS45IDIgMiAySDJ2MmgydjhoMTZ2LThoMnYtMmgtNHptLTUgOGgtMnYtNmgydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENyaWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5aC02VjRIOEM1Ljc5IDQgNCA1Ljc5IDQgOHY2YzAgMS4xLjkgMiAyIDJoMnYyLjkzYy0uNjEtLjM1LTEuMTYtLjc4LTEuNjUtMS4yN2wtMS40MiAxLjQyQzYuNzQgMjAuODggOS4yNCAyMiAxMiAyMmMyLjc2IDAgNS4yNi0xLjEyIDcuMDctMi45M2wtMS40Mi0xLjQyYy0uNDkuNDktMS4wNS45Mi0xLjY1IDEuMjdWMTZoMmMxLjEgMCAyLS45IDItMnYtM2MwLTEuMS0uOS0yLTItMnptLTQgMTAuNzVjLS42NC4xNi0xLjMxLjI1LTIgLjI1cy0xLjM2LS4wOS0yLS4yNVYxNmg0djMuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlc2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDZ2MTJoMlY4aDEwdjEwaDJ2LTJoNHYyaDJWNkgyem0xOCAydjJoLTRWOGg0em0tNCA2di0yaDR2MmgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9Ob3RTdGVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMS4zOSA0LjIyIDcuOSA3LjljLjE4LjIuMTguNS0uMDEuN2EuNDg1LjQ4NSAwIDAgMS0uNyAwTDYuODcgMTEuMWMtLjExLjQtLjI2Ljc4LS40NSAxLjEybDEuNCAxLjRjLjIuMi4yLjUxIDAgLjcxYS40ODUuNDg1IDAgMCAxLS43IDBsLTEuMjctMS4yN2MtLjI0LjI5LS41LjU2LS43Ny44bDEuMjggMS4yOGMuMi4yLjIuNTEgMCAuNzEtLjEuMS0uMjMuMTUtLjM2LjE1cy0uMjYtLjA1LS4zNS0uMTVsLTEuMzgtMS4zOGMtLjY5LjQ2LTEuMzkuNzktMS45NyAxLjAyLS43OC4zMS0xLjMgMS4wNC0xLjMgMS44OFYyMGg5LjVsMy4zMy0zLjMzIDUuOTQgNS45NCAxLjQxLTEuNDFMMi44MSAyLjgxIDEuMzkgNC4yMnptMTcuMTIgMTEuNDYtMS40MS0xLjQxIDQuNDgtNC40OEwyMyAxMS4ybC00LjQ5IDQuNDh6bTIuMzctNi42LTQuNDggNC40OC03LjEtNy4wOUwxMy44IDJsNy4wOCA3LjA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb05vdFRvdWNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgMTAuMTctMi41LTIuNVYyLjI1YTEuMjUgMS4yNSAwIDAgMSAyLjUgMHY3Ljkyem03IDIuNTh2LTcuNWExLjI1IDEuMjUgMCAwIDAtMi41IDBWMTFoLTFWMy4yNWExLjI1IDEuMjUgMCAwIDAtMi41IDB2Ny45Mmw2IDZ2LTQuNDJ6TTkuNSA0LjI1QzkuNSAzLjU2IDguOTQgMyA4LjI1IDNjLS42NyAwLTEuMi41My0xLjI0IDEuMThMOS41IDYuNjdWNC4yNXptMy41IDUuOTItMi41LTIuNVYyLjI1YTEuMjUgMS4yNSAwIDAgMSAyLjUgMHY3Ljkyem03IDIuNTh2LTcuNWExLjI1IDEuMjUgMCAwIDAtMi41IDBWMTFoLTFWMy4yNWExLjI1IDEuMjUgMCAwIDAtMi41IDB2Ny45Mmw2IDZ2LTQuNDJ6TTkuNSA0LjI1QzkuNSAzLjU2IDguOTQgMyA4LjI1IDNjLS42NyAwLTEuMi41My0xLjI0IDEuMThMOS41IDYuNjdWNC4yNXptMTEuNjkgMTYuOTRMMi44MSAyLjgxIDEuMzkgNC4yMmw1LjYzIDUuNjNMNyA5LjgzdjQuM2MtMS4xMS0uNjQtMi41OC0xLjQ3LTIuNi0xLjQ4LS4xNy0uMDktLjM0LS4xNC0uNTQtLjE0LS4yNiAwLS41LjA5LS43LjI2LS4wNC4wMS0xLjE2IDEuMTEtMS4xNiAxLjExbDYuOCA3LjE4Yy41Ny42IDEuMzUuOTQgMi4xOC45NEgxN2MuNjIgMCAxLjE4LS4xOSAxLjY1LS41MmwtLjAyLS4wMiAxLjE1IDEuMTUgMS40MS0xLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS42NSA0Ljg2LS4wNy0uMDdjLS41Ny0uNjItLjgyLTEuNDEtLjY3LTIuMkwxNSAyaC0xLjg5bC0uMDYuNDNjLS4yIDEuMzYuMjcgMi43MSAxLjMgMy43MmwuMDcuMDZjLjU3LjYyLjgyIDEuNDEuNjcgMi4ybC0uMTEuNTloMS45MWwuMDYtLjQzYy4yMS0xLjM2LS4yNy0yLjcxLTEuMy0zLjcxem00IDAtLjA3LS4wN2MtLjU3LS42Mi0uODItMS40MS0uNjctMi4yTDE5IDJoLTEuODlsLS4wNi40M2MtLjIgMS4zNi4yNyAyLjcxIDEuMyAzLjcybC4wNy4wNmMuNTcuNjIuODIgMS40MS42NyAyLjJsLS4xMS41OWgxLjkxbC4wNi0uNDNjLjIxLTEuMzYtLjI3LTIuNzEtMS4zLTMuNzF6TTkuMTIgNWwtNy4xOCA2Ljc5Yy0uNi41Ni0uOTQgMS4zNS0uOTQgMi4xOFYyMGMwIDEuNjYgMS4zNCAzIDMgM2gxMy43NWExLjI1IDEuMjUgMCAwIDAgMC0yLjVIMTJ2LTFoNy43NWExLjI1IDEuMjUgMCAwIDAgMC0yLjVIMTJ2LTFoOC43NWExLjI1IDEuMjUgMCAwIDAgMC0yLjVIMTJ2LTFoNi43NWExLjI1IDEuMjUgMCAwIDAgMC0yLjVIOC44NmMuNjQtMS4xMSAxLjQ4LTIuNTggMS40OS0yLjYxYTEuMDY1IDEuMDY1IDAgMCAwLS4xMi0xLjIzQzEwLjIyIDYuMTIgOS4xMiA1IDkuMTIgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRWxldmF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOC41IDZhMS4yNSAxLjI1IDAgMSAxIDAgMi41IDEuMjUgMS4yNSAwIDAgMSAwLTIuNXptMi41IDhoLTF2NEg3di00SDZ2LTIuNWMwLTEuMS45LTIgMi0yaDFjMS4xIDAgMiAuOSAyIDJWMTR6bTQuNSAzTDEzIDEzaDVsLTIuNSA0ek0xMyAxMWwyLjUtNCAyLjUgNGgtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRXNjYWxhdG9yV2FybmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAyYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptOSA3LjVjMCAuODMuNjcgMS41IDEuNSAxLjVzMS41LS42NyAxLjUtMS41UzE3LjgzIDggMTcgOHMtMS41LjY3LTEuNSAxLjV6bTMgMi41aC0yLjg0Yy0uNTguMDEtMS4xNC4zMi0xLjQ1Ljg2bC0uOTIgMS4zMkw5LjcyIDhhMi4wMiAyLjAyIDAgMCAwLTEuNzEtMUg1Yy0xLjEgMC0yIC45LTIgMnY2aDEuNXY3aDVWMTEuNjFMMTIuMDMgMTZoMi4ybC43Ny0xLjFWMjJoNHYtNWgxdi0zLjVjMC0uODItLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFc2NhbGF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTIgNmgtMS43bC01IDlIN2MtLjgzIDAtMS41LS42Ny0xLjUtMS41UzYuMTcgMTUgNyAxNWgxLjdsNS05SDE3Yy44MyAwIDEuNS42NyAxLjUgMS41UzE3LjgzIDkgMTcgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFtaWx5UmVzdHJvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA0YzAtMS4xMS44OS0yIDItMnMyIC44OSAyIDItLjg5IDItMiAyLTItLjg5LTItMnptNCAxOHYtNmgyLjVsLTIuNTQtNy42M0EyLjAxIDIuMDEgMCAwIDAgMTguMDYgN2gtLjEyYTIgMiAwIDAgMC0xLjkgMS4zN2wtLjg2IDIuNThjMS4wOC42IDEuODIgMS43MyAxLjgyIDMuMDV2OGgzem0tNy41LTEwLjVjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjVTMTEgOS4xNyAxMSAxMHMuNjcgMS41IDEuNSAxLjV6TTUuNSA2YzEuMTEgMCAyLS44OSAyLTJzLS44OS0yLTItMi0yIC44OS0yIDIgLjg5IDIgMiAyem0yIDE2di03SDlWOWMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnY2aDEuNXY3aDR6bTYuNSAwdi00aDF2LTRjMC0uODItLjY4LTEuNS0xLjUtMS41aC0yYy0uODIgMC0xLjUuNjgtMS41IDEuNXY0aDF2NGgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGZW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDEydi0yaC0yVjdsLTMtMy0yIDItMi0yLTIgMi0yLTItMyAzdjNIM3YyaDJ2MkgzdjJoMnY0aDE0di00aDJ2LTJoLTJ2LTJoMnptLTUtNS4xNyAxIDFWMTBoLTJWNy44M2wuNDEtLjQxLjU5LS41OXptLTQgMCAuNTkuNTkuNDEuNDFWMTBoLTJWNy44M2wuNDEtLjQxLjU5LS41OXpNMTEgMTR2LTJoMnYyaC0yem0yIDJ2MmgtMnYtMmgyek03IDcuODNsMS0xIC41OS41OS40MS40MVYxMEg3VjcuODN6TTcgMTJoMnYySDd2LTJ6bTAgNGgydjJIN3YtMnptMTAgMmgtMnYtMmgydjJ6bTAtNGgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpcmVFeHRpbmd1aXNoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE5aDEwdjFjMCAxLjEtLjkgMi0yIDJIOWMtMS4xIDAtMi0uOS0yLTJ2LTF6bTAtMWgxMHYtNUg3djV6TTE3IDN2NmwtMy4xNS0uNjZjLS4wMSAwLS4wMS4wMS0uMDIuMDIgMS41NS42MiAyLjcyIDEuOTggMy4wNyAzLjY0SDcuMWMuMzQtMS42NiAxLjUyLTMuMDIgMy4wNy0zLjY0LS4zMy0uMjYtLjYtLjU4LS44LS45NUw1IDYuNXYtMWw0LjM3LS45MUM5Ljg3IDMuNjUgMTAuODYgMyAxMiAzYy43IDAgMS4zNC4yNSAxLjg1LjY2TDE3IDN6bS00IDNjLS4wMy0uNTktLjQ1LTEtMS0xcy0xIC40NS0xIDEgLjQ1IDEgMSAxIDEtLjQ1IDEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRml0bmVzc0NlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjU3IDE0Ljg2IDIyIDEzLjQzIDIwLjU3IDEyIDE3IDE1LjU3IDguNDMgNyAxMiAzLjQzIDEwLjU3IDIgOS4xNCAzLjQzIDcuNzEgMiA1LjU3IDQuMTQgNC4xNCAyLjcxIDIuNzEgNC4xNGwxLjQzIDEuNDNMMiA3LjcxbDEuNDMgMS40M0wyIDEwLjU3IDMuNDMgMTIgNyA4LjQzIDE1LjU3IDE3IDEyIDIwLjU3IDEzLjQzIDIybDEuNDMtMS40M0wxNi4yOSAyMmwyLjE0LTIuMTQgMS40MyAxLjQzIDEuNDMtMS40My0xLjQzLTEuNDNMMjIgMTYuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZvb2RCYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMyA0IDl2MTJoMTZWOWwtOC02em0uNSA5LjVjMCAuODMtLjY3IDEuNS0xLjUgMS41djRoLTF2LTRjLS44MyAwLTEuNS0uNjctMS41LTEuNXYtM2gxdjNoLjV2LTNoMXYzaC41di0zaDF2M3pNMTUgMThoLTF2LTMuNWgtMXYtM2MwLTEuMS45LTIgMi0yVjE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb3VuZGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTJoM0wxMiAzIDIgMTJoM3YzSDN2MmgydjNoMnYtM2g0djNoMnYtM2g0djNoMnYtM2gydi0yaC0ydi0zek03IDE1di00LjgxbDQtMy42VjE1SDd6bTYgMFY2LjU5bDQgMy42VjE1aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGcmVlQnJlYWtmYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDR2MTBjMCAyLjIxIDEuNzkgNCA0IDRoNmMyLjIxIDAgNC0xLjc5IDQtNHYtM2gyYTIgMiAwIDAgMCAyLTJWNWMwLTEuMTEtLjg5LTItMi0yem0wIDVoLTJWNWgydjN6TTQgMTloMTZ2Mkg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNkg5VjRIN3YySDZsLTQgNHY5aDIwdi05bC00LTR6TTQgMTJoMTB2NUg0di01em0xNiA1aC00di02LjE3bDItMiAyIDJWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdvbGZDb3Vyc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTkuNVwiLFwiY3lcIjpcIjE5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1LjkyIDkgMnYxOEg3di0xLjczYy0xLjc5LjM1LTMgLjk5LTMgMS43MyAwIDEuMSAyLjY5IDIgNiAyczYtLjkgNi0yYzAtLjk5LTIuMTYtMS44MS01LTEuOTdWOC45OGw2LTMuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdyYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjBIMnYtMmg1Ljc1QTguMDMyIDguMDMyIDAgMCAwIDIgMTIuMjZjLjY0LS4xNiAxLjMxLS4yNiAyLS4yNiA0LjQyIDAgOCAzLjU4IDggOHptMTAtNy43NGMtLjY0LS4xNi0xLjMxLS4yNi0yLS4yNi0yLjkzIDAtNS40OCAxLjU4LTYuODggMy45M2E5LjgyIDkuODIgMCAwIDEgLjg3IDQuMDdoOHYtMmgtNS43NUE4LjA2MSA4LjA2MSAwIDAgMSAyMiAxMi4yNnptLTYuMzYtMS4yNGExMC4wMyAxMC4wMyAwIDAgMSA0LjA5LTVDMTUuNDQgNi4xNiAxMiA5LjY3IDEyIDE0di4wMmMuOTUtMS4yNyAyLjItMi4zIDMuNjQtM3ptLTQuMjItMi4xN0E4LjUyNyA4LjUyNyAwIDAgMCA2LjcgNEM4LjE0IDUuODYgOSA4LjE4IDkgMTAuNzFjMCAuMjEtLjAzLjQxLS4wNC42MS40My4yNC44My41MiAxLjIyLjgyYTkuOTEgOS45MSAwIDAgMSAxLjI0LTMuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvbGlkYXlWaWxsYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMjBWOC4zNUwxMy42NSA0aC0yLjgzTDE2IDkuMThWMjBoMnptNCAwVjYuNjlMMTkuMzEgNGgtMi44M0wyMCA3LjUyVjIwaDJ6TTggNGwtNiA2djEwaDV2LTVoMnY1aDVWMTBMOCA0em0xIDlIN3YtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvdFR1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiN1wiLFwiY3lcIjpcIjZcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMTUgMTJjLS4zMS0uMjItLjU5LS40Ni0uODItLjcybC0xLjQtMS41NWMtLjE5LS4yMS0uNDMtLjM4LS42OS0uNS0uMjktLjE0LS42Mi0uMjMtLjk2LS4yM2gtLjAzQzYuMDEgOSA1IDEwLjAxIDUgMTEuMjVWMTJIMnY4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJ2LThIMTEuMTV6TTcgMjBINXYtNmgydjZ6bTQgMEg5di02aDJ2NnptNCAwaC0ydi02aDJ2NnptNCAwaC0ydi02aDJ2NnptLS4zNS0xNC4xNC0uMDctLjA3Yy0uNTctLjYyLS44Mi0xLjQxLS42Ny0yLjJMMTggM2gtMS44OWwtLjA2LjQzYy0uMiAxLjM2LjI3IDIuNzEgMS4zIDMuNzJsLjA3LjA2Yy41Ny42Mi44MiAxLjQxLjY3IDIuMmwtLjExLjU5aDEuOTFsLjA2LS40M2MuMjEtMS4zNi0uMjctMi43MS0xLjMtMy43MXptLTQgMC0uMDctLjA3Yy0uNTctLjYyLS44Mi0xLjQxLS42Ny0yLjJMMTQgM2gtMS44OWwtLjA2LjQzYy0uMiAxLjM2LjI3IDIuNzEgMS4zIDMuNzJsLjA3LjA2Yy41Ny42Mi44MiAxLjQxLjY3IDIuMmwtLjExLjU5aDEuOTFsLjA2LS40M2MuMjEtMS4zNi0uMjctMi43MS0xLjMtMy43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSG91c2VTaWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMmgzTDEyIDMgMiAxMmgzdjhoMnYtMmgxMHYyaDJ2LTh6TTcuMjEgMTBoOS41OGwuMjEuMTlWMTJIN3YtMS44MWwuMjEtLjE5em03LjM2LTJIOS40M0wxMiA1LjY5IDE0LjU3IDh6TTcgMTZ2LTJoMTB2Mkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIb3VzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDkuM1Y0aC0zdjIuNkwxMiAzIDIgMTJoM3Y4aDV2LTZoNHY2aDV2LThoM2wtMy0yLjd6bS05IC43YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEhvdXNlYm9hdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE2Yy0xLjk1IDAtMi4xIDEtMy4zNCAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxdjJjMS45IDAgMi4xNy0xIDMuMzUtMSAxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOC0xIDMuMzItMXMxLjM3IDEgMy4zMiAxYzEuOTEgMCAyLjE0LTEgMy4zMy0xIDEuMTggMCAxLjQ1IDEgMy4zNSAxdi0yYy0xLjI0IDAtMS4zOC0xLTMuMzMtMS0xLjkxIDAtMi4xNCAxLTMuMzMgMS0xLjI0IDAtMS4zOS0xLTMuMzQtMXptOC4zNC00LjY2LTEuMzcgMS4zN2MtLjE5LjE4LS40NS4yOS0uNzEuMjlIMTdWOS42NWwxLjMyLjk3TDE5LjUgOSAxMiAzLjUgNC41IDlsMS4xOCAxLjYxTDcgOS42NVYxM0g1Ljc0Yy0uMjcgMC0uNTItLjExLS43MS0uMjlsLTEuMzctMS4zNy0xLjQxIDEuNDEgMS4zNyAxLjM3Yy41Ni41NiAxLjMzLjg4IDIuMTIuODhoMTIuNTFjLjggMCAxLjU2LS4zMiAyLjEyLS44OGwxLjM3LTEuMzctMS40LTEuNDF6TTEzIDEzaC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSXJvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDZjLTEuNjYgMC0zIDEuMzQtMyAzdjRjMCAuNTUtLjQ1IDEtMSAxdi00YzAtMS42Ni0xLjM0LTMtMy0zaC00Yy0xLjY2IDAtMyAxLjM0LTMgM2gyYzAtLjU1LjQ1LTEgMS0xaDRjLjU1IDAgMSAuNDUgMSAxdjFINmMtMi4yMSAwLTQgMS43OS00IDR2M2gxNXYtMmMxLjY2IDAgMy0xLjM0IDMtM1Y5YzAtLjU1LjQ1LTEgMS0xaDFWNmgtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2l0Y2hlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDlWNGMwLTEuMS0uOS0yLTItMkg2Yy0xLjEgMC0yIC45LTIgMnY1aDE2ek04IDVoMnYzSDhWNXptLTQgNnY5YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTlINHptNiA2SDh2LTVoMnY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNZWV0aW5nUm9vbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNnYxNUgzdi0yaDJWM2g5djFoNXYxNWgydjJoLTRWNmgtM3ptLTQgNXYyaDJ2LTJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1pY3Jvd2F2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuOCAxMC42MSA1LjM3IDkuMTlDNS43MyA4Ljc5IDYuNTkgOCA3Ljc1IDhjLjggMCAxLjM5LjM5IDEuODEuNjcuMzEuMjEuNTEuMzMuNjkuMzMuMzcgMCAuOC0uNDEuOTUtLjYxbDEuNDIgMS40MmMtLjM2LjQtMS4yMiAxLjE5LTIuMzcgMS4xOS0uNzkgMC0xLjM3LS4zOC0xLjc5LS42Ni0uMzMtLjIyLS41Mi0uMzQtLjcxLS4zNC0uMzcgMC0uOC40MS0uOTUuNjF6TTcuNzUgMTVjLjE5IDAgLjM4LjEyLjcxLjM0LjQyLjI4IDEgLjY2IDEuNzkuNjYgMS4xNiAwIDIuMDEtLjc5IDIuMzctMS4xOWwtMS40Mi0xLjQyYy0uMTUuMi0uNTkuNjEtLjk1LjYxLS4xOCAwLS4zOC0uMTItLjY5LS4zMy0uNDItLjI4LTEuMDEtLjY3LTEuODEtLjY3LTEuMTYgMC0yLjAyLjc5LTIuMzggMS4xOWwxLjQyIDEuNDJjLjE2LS4yLjU5LS42MS45Ni0uNjF6TTIyIDZ2MTJjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yaDE2YzEuMSAwIDIgLjkgMiAyem0tOCAwSDR2MTJoMTBWNnptNSAxMGMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMSAuNDUgMSAxIDEgMS0uNDUgMS0xem0wLTRjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDEgLjQ1IDEgMSAxIDEtLjQ1IDEtMXptMC01aC0ydjJoMlY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROaWdodFNoZWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDQgOXYxMmgxNlY5bC04LTZ6bS0yLjI1IDkuNWExLjI1IDEuMjUgMCAxIDEgMCAyLjUgMS4yNSAxLjI1IDAgMCAxIDAtMi41ek0xNyAxOGgtMXYtMS41SDhWMThIN3YtN2gxdjQuNWgzLjVWMTJIMTVjMS4xIDAgMiAuOSAyIDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9CYWNrcGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjJsMi43NiAyLjc2QzQuMDYgNy4zMSA0IDcuNjQgNCA4djEyYzAgMS4xLjkgMiAyIDJoMTJjLjM0IDAgLjY1LS4wOS45My0uMjRsLjg1Ljg1IDEuNDEtMS40MnpNNiAxNHYtMmgzLjE3bDIgMkg2em04LjgzLTJMNi45OCA0LjE1Yy4wMSAwIC4wMS0uMDEuMDItLjAxVjJoM3YyaDRWMmgzdjIuMTRjMS43Mi40NSAzIDIgMyAzLjg2djkuMTdsLTItMlYxMmgtMy4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9DZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOC44MyA2LTMuNy0zLjdDNS40MiAxLjU1IDYuMTUgMSA3IDFsMTAgLjAxYzEuMSAwIDIgLjg5IDIgMS45OXYxMy4xN2wtMi0yVjZIOC44M3ptMTAuOTUgMTYuNjEtLjkxLS45MWMtLjI5Ljc1LTEuMDIgMS4zLTEuODcgMS4zSDdjLTEuMSAwLTItLjktMi0yVjcuODNMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNCAxLjQyek0xNS4xNyAxOCA3IDkuODNWMThoOC4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9Ecmlua3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjgzIDNIMjF2MmwtNi4yIDYuOTdMOS44MyA3aDYuNzRsMS43OC0ySDcuODNsLTItMnptMTMuOTUgMTkuNjFMMTggMjAuODNWMjFINnYtMmg1di01bC0xLjM3LTEuNTQtOC4yNC04LjI0TDIuOCAyLjgxIDMgM2wxOC4xOSAxOC4xOS0xLjQxIDEuNDJ6TTE2LjE3IDE5IDEzIDE1LjgzVjE5aDMuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vRmxhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy45MyAxMy45MyAyLjQ1IDIuNDUgMS4wNCAzLjg3bDUuMyA1LjMtLjIuMjNIMy42Yy0uODggMC0xLjYuNzItMS42IDEuNnY5LjRjMCAuODguNzIgMS42IDEuNiAxLjZoMTIuOGMuNzUgMCAxLjM4LS41MiAxLjU1LTEuMjJsMi4xOCAyLjE4IDEuNDEtMS40MUwxOCAxOGwtNC4wNy00LjA3ek0xMCAyMGMtMi4yMSAwLTQtMS43OS00LTQgMC0xLjk1IDEuNC0zLjU3IDMuMjUtMy45MmwxLjU3IDEuNTdjLS4yNi0uMDktLjUzLS4xNS0uODItLjE1YTIuNSAyLjUgMCAwIDAgMCA1IDIuNSAyLjUgMCAwIDAgMi41LTIuNWMwLS4yOS0uMDYtLjU2LS4xNS0uODJsMS41NyAxLjU3QTMuOTkzIDMuOTkzIDAgMCAxIDEwIDIwem04LTQuODNMMTAuODMgOGgxLjc1bDEuMjggMS40aDIuNTRjLjg4IDAgMS42LjcyIDEuNiAxLjZ2NC4xN3ptMi40LTkuNTdIMjJMMTkgMTFWN2gtMVYyaDRsLTEuNiAzLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vRm9vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjM1IDguNTIgMTEgNWg1VjFoMnY0aDVsLTEuMzggMTMuNzlMMTEuMzUgOC41MnpNMSAyMXYxYzAgLjU1LjQ1IDEgMSAxaDEzYy41NSAwIDEtLjQ1IDEtMXYtMUgxem0yMC45LjlMMi4xIDIuMS42OSAzLjUxbDUuNyA1LjdDMy4yOCA5Ljg3IDEgMTEuOTkgMSAxNWgxMS4xN2wyIDJIMXYyaDE1di0uMTdsNC40OSA0LjQ5IDEuNDEtMS40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9NZWV0aW5nUm9vbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTFoLTF2Mmgydi0xbDkuNzMgOS43M0wyMC40NiAyMyAxNCAxNi41NFYyMUgzdi0yaDJWNy41NGwtNC00IDEuMjctMS4yN0wxMSAxMXptMyAuNDlMNS41MSAzSDE0djFoNXYxMi40OWwtMi0yVjZoLTN2NS40OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9QaG90b2dyYXBoeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjk0IDguMTIgNy40OCA0LjY2IDkgM2g2bDEuODMgMkgyMGMxLjEgMCAyIC45IDIgMnYxMmMwIC4wNS0uMDEuMS0uMDIuMTZsLTUuMS01LjFjLjA4LS4zNS4xMi0uNy4xMi0xLjA2IDAtMi43Ni0yLjI0LTUtNS01LS4zNiAwLS43MS4wNC0xLjA2LjEyem05LjU1IDE1LjE5TDE4LjE3IDIxSDRjLTEuMSAwLTItLjktMi0yVjdjMC0uNTkuMjctMS4xMi42OC0xLjQ5bC0yLTJMMi4xIDIuMWwxOS44IDE5LjgtMS40MSAxLjQxem0tNi01Ljk5LTEuNS0xLjVjLS4zMi4xLS42NC4xOC0uOTkuMTgtMS42NiAwLTMtMS4zNC0zLTMgMC0uMzUuMDgtLjY3LjE5LS45OGwtMS41LTEuNUE0Ljc0IDQuNzQgMCAwIDAgNyAxM2MwIDIuNzYgMi4yNCA1IDUgNSAuOTEgMCAxLjc2LS4yNSAyLjQ5LS42OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm9TdHJvbGxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMThjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yek0xOC42NSAzYy0xLjY2IDAtMi41NCAxLjI3LTMuMTggMi4wM2wtMy41IDQuMTFMMTcgMTQuMTd2LTcuOWMuNTgtLjY4Ljk3LTEuMjcgMS42NS0xLjI3Ljc3IDAgMS4zNS42NiAxLjM1IDEuNDhWN2gydi0uNTJDMjIgNC41NiAyMC41MiAzIDE4LjY1IDN6bS03Ljk4IDcuNjdMMi44MSAyLjgxIDEuMzkgNC4yMmw3Ljk3IDcuOTctMi42NiAzLjEyYy0uNTUuNjUtLjA5IDEuNjUuNzYgMS42NWg2LjY2bDEuMTcgMS4xN0MxNC41NCAxOC40MiAxNCAxOS4xNCAxNCAyMGMwIDEuMS45IDIgMiAyIC44NiAwIDEuNTgtLjU0IDEuODctMS4zbDEuOTEgMS45MSAxLjQxLTEuNDEtNC44LTQuOC01LjcyLTUuNzN6bTIuOC01LjY0Yy4yNy0uMzIuNTgtLjcyLjk4LTEuMDlhOS4zNDcgOS4zNDcgMCAwIDAtNy44MS0uMTNsNC4yNSA0LjI1IDIuNTgtMy4wM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3RoZXJIb3VzZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDEgMTEuNGwxLjIxIDEuNTlMNCAxMS42MlYyMWgxNnYtOS4zOGwxLjc5IDEuMzZMMjMgMTEuNCAxMiAzek04IDE1Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTQgMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem00IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG9vbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDIxYy0xLjExIDAtMS43My0uMzctMi4xOC0uNjQtLjM3LS4yMi0uNi0uMzYtMS4xNS0uMzYtLjU2IDAtLjc4LjEzLTEuMTUuMzYtLjQ2LjI3LTEuMDcuNjQtMi4xOC42NHMtMS43My0uMzctMi4xOC0uNjRjLS4zNy0uMjItLjYtLjM2LTEuMTUtLjM2LS41NiAwLS43OC4xMy0xLjE1LjM2LS40Ni4yNy0xLjA4LjY0LTIuMTkuNjQtMS4xMSAwLTEuNzMtLjM3LTIuMTgtLjY0LS4zNy0uMjMtLjYtLjM2LTEuMTUtLjM2cy0uNzguMTMtMS4xNS4zNmMtLjQ2LjI3LTEuMDguNjQtMi4xOS42NHYtMmMuNTYgMCAuNzgtLjEzIDEuMTUtLjM2LjQ2LS4yNyAxLjA4LS42NCAyLjE5LS42NHMxLjczLjM3IDIuMTguNjRjLjM3LjIzLjU5LjM2IDEuMTUuMzYuNTYgMCAuNzgtLjEzIDEuMTUtLjM2LjQ2LS4yNyAxLjA4LS42NCAyLjE5LS42NCAxLjExIDAgMS43My4zNyAyLjE4LjY0LjM3LjIyLjYuMzYgMS4xNS4zNnMuNzgtLjEzIDEuMTUtLjM2Yy40NS0uMjcgMS4wNy0uNjQgMi4xOC0uNjRzMS43My4zNyAyLjE4LjY0Yy4zNy4yMy41OS4zNiAxLjE1LjM2djJ6bTAtNC41Yy0xLjExIDAtMS43My0uMzctMi4xOC0uNjQtLjM3LS4yMi0uNi0uMzYtMS4xNS0uMzYtLjU2IDAtLjc4LjEzLTEuMTUuMzYtLjQ1LjI3LTEuMDcuNjQtMi4xOC42NHMtMS43My0uMzctMi4xOC0uNjRjLS4zNy0uMjItLjYtLjM2LTEuMTUtLjM2LS41NiAwLS43OC4xMy0xLjE1LjM2LS40NS4yNy0xLjA3LjY0LTIuMTguNjRzLTEuNzMtLjM3LTIuMTgtLjY0Yy0uMzctLjIyLS42LS4zNi0xLjE1LS4zNnMtLjc4LjEzLTEuMTUuMzZjLS40Ny4yNy0xLjA5LjY0LTIuMi42NHYtMmMuNTYgMCAuNzgtLjEzIDEuMTUtLjM2LjQ1LS4yNyAxLjA3LS42NCAyLjE4LS42NHMxLjczLjM3IDIuMTguNjRjLjM3LjIyLjYuMzYgMS4xNS4zNi41NiAwIC43OC0uMTMgMS4xNS0uMzYuNDUtLjI3IDEuMDctLjY0IDIuMTgtLjY0czEuNzMuMzcgMi4xOC42NGMuMzcuMjIuNi4zNiAxLjE1LjM2cy43OC0uMTMgMS4xNS0uMzZjLjQ1LS4yNyAxLjA3LS42NCAyLjE4LS42NHMxLjczLjM3IDIuMTguNjRjLjM3LjIyLjYuMzYgMS4xNS4zNnYyek04LjY3IDEyYy41NiAwIC43OC0uMTMgMS4xNS0uMzYuNDYtLjI3IDEuMDgtLjY0IDIuMTktLjY0IDEuMTEgMCAxLjczLjM3IDIuMTguNjQuMzcuMjIuNi4zNiAxLjE1LjM2cy43OC0uMTMgMS4xNS0uMzZjLjEyLS4wNy4yNi0uMTUuNDEtLjIzTDEwLjQ4IDVDOC45MyAzLjQ1IDcuNSAyLjk5IDUgM3YyLjVjMS44Mi0uMDEgMi44OS4zOSA0IDEuNWwxIDEtMy4yNSAzLjI1Yy4zMS4xMi41Ni4yNy43Ny4zOS4zNy4yMy41OS4zNiAxLjE1LjM2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2LjVcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSaWNlQm93bCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwUzIgNi40OCAyIDEyYzAgMy42OSAyLjQ3IDYuODYgNiA4LjI1VjIyaDh2LTEuNzVjMy41My0xLjM5IDYtNC41NiA2LTguMjV6bS0yIDBoLTRWNS4wOGMyLjM5IDEuMzkgNCAzLjk3IDQgNi45MnptLTYtNy43NFYxMmgtNFY0LjI2Yy42NC0uMTYgMS4zMS0uMjYgMi0uMjZzMS4zNi4xIDIgLjI2ek00IDEyYzAtMi45NSAxLjYxLTUuNTMgNC02LjkyVjEySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJvb2ZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxOGgtMnYtMmgydjJ6bTItNEg5djZoNnYtNnptNC00LjdWNGgtM3YyLjZMMTIgMyAyIDEyaDNsNy02LjMxTDE5IDEyaDNsLTMtMi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb29tUHJlZmVyZW5jZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMS4yNlY2aDN2NGgyVjRoLTVWM0g1djE2SDN2Mmg5LjI2QTYuOTYzIDYuOTYzIDAgMCAxIDExIDE3YzAtMi4zOCAxLjE5LTQuNDcgMy01Ljc0ek0xMCAxMWgydjJoLTJ2LTJ6bTExLjY5IDUuMzcgMS4xNC0xLTEtMS43My0xLjQ1LjQ5Yy0uMzItLjI3LS42OC0uNDgtMS4wOC0uNjNMMTkgMTJoLTJsLS4zIDEuNDljLS40LjE1LS43Ni4zNi0xLjA4LjYzbC0xLjQ1LS40OS0xIDEuNzMgMS4xNCAxYy0uMDguNS0uMDguNzYgMCAxLjI2bC0xLjE0IDEgMSAxLjczIDEuNDUtLjQ5Yy4zMi4yNy42OC40OCAxLjA4LjYzTDE3IDIyaDJsLjMtMS40OWMuNC0uMTUuNzYtLjM2IDEuMDgtLjYzbDEuNDUuNDkgMS0xLjczLTEuMTQtMWMuMDgtLjUxLjA4LS43NyAwLTEuMjd6TTE4IDE5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUm9vbVNlcnZpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTdoMjB2Mkgyem0xMS44NC05LjIxQTIuMDA2IDIuMDA2IDAgMCAwIDEyIDVhMi4wMDYgMi4wMDYgMCAwIDAtMS44NCAyLjc5QzYuMjUgOC42IDMuMjcgMTEuOTMgMyAxNmgxOGMtLjI3LTQuMDctMy4yNS03LjQtNy4xNi04LjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSdkhvb2t1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTE0IDExaDR2M2gtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTd2LTZjMC0xLjEtLjktMi0yLTJIN1Y3bC0zIDMgMyAzdi0yaDR2M0g0djNjMCAxLjEuOSAyIDIgMmgyYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoOHYtMmgtMnptLTkgM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem03LTZoLTR2LTNoNHYzek0xNyAydjJIOXYyaDh2MmwzLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNtb2tlRnJlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIgNiA2Ljk5IDdIMnYzaDkuOTlsNyA3IDEuMjYtMS4yNS0xNy0xN3ptMTguNSA3SDIydjNoLTEuNXpNMTggMTNoMS41djNIMTh6bS44NS04LjEyYy42Mi0uNjEgMS0xLjQ1IDEtMi4zOGgtMS41YzAgMS4wMi0uODMgMS44NS0xLjg1IDEuODV2MS41YzIuMjQgMCA0IDEuODMgNCA0LjA3VjEySDIyVjkuOTJjMC0yLjIzLTEuMjgtNC4xNS0zLjE1LTUuMDR6TTE0LjUgOC43aDEuNTNjMS4wNSAwIDEuOTcuNzQgMS45NyAyLjA1VjEyaDEuNXYtMS41OWMwLTEuOC0xLjYtMy4xNi0zLjQ3LTMuMTZIMTQuNWMtMS4wMiAwLTEuODUtLjk4LTEuODUtMnMuODMtMS43NSAxLjg1LTEuNzVWMmEzLjM1IDMuMzUgMCAwIDAgMCA2Ljd6bTIuNSA3LjIzVjEzaC0yLjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTbW9raW5nUm9vbXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE2aDE1djNIMnptMTguNSAwSDIydjNoLTEuNXpNMTggMTZoMS41djNIMTh6bS44NS04LjI3Yy42Mi0uNjEgMS0xLjQ1IDEtMi4zOEMxOS44NSAzLjUgMTguMzUgMiAxNi41IDJ2MS41YzEuMDIgMCAxLjg1LjgzIDEuODUgMS44NVMxNy41MiA3LjIgMTYuNSA3LjJ2MS41YzIuMjQgMCA0IDEuODMgNCA0LjA3VjE1SDIydi0yLjI0YzAtMi4yMi0xLjI4LTQuMTQtMy4xNS01LjAzem0tMi44MiAyLjQ3SDE0LjVjLTEuMDIgMC0xLjg1LS45OC0xLjg1LTJzLjgzLTEuNzUgMS44NS0xLjc1di0xLjVhMy4zNSAzLjM1IDAgMCAwIDAgNi43aDEuNTNjMS4wNSAwIDEuOTcuNzQgMS45NyAyLjA1VjE1aDEuNXYtMS42NGMwLTEuODEtMS42LTMuMTYtMy40Ny0zLjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTb2FwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOS4xMiA1LTcuMTggNi43OWMtLjYuNTYtLjk0IDEuMzUtLjk0IDIuMThWMjBjMCAxLjY2IDEuMzQgMyAzIDNoMTMuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDcuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDguNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDYuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDguODZjLjY0LTEuMTEgMS40OC0yLjU4IDEuNDktMi42MWExLjA2NSAxLjA2NSAwIDAgMC0uMTItMS4yM0MxMC4yMiA2LjEyIDkuMTIgNSA5LjEyIDV6TTE0IDYuMjVjLjQxIDAgLjc1LjM0Ljc1Ljc1cy0uMzQuNzUtLjc1Ljc1LS43NS0uMzQtLjc1LS43NS4zNC0uNzUuNzUtLjc1bTAtMS41Yy0xLjI0IDAtMi4yNSAxLjAxLTIuMjUgMi4yNVMxMi43NiA5LjI1IDE0IDkuMjUgMTYuMjUgOC4yNCAxNi4yNSA3IDE1LjI0IDQuNzUgMTQgNC43NXptNS43NS43NWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjUtLjUtLjIyLS41LS41LjIyLS41LjUtLjVtMC0xLjVjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yek0xNi41IDFjLS44MyAwLTEuNS42Ny0xLjUgMS41UzE1LjY3IDQgMTYuNSA0IDE4IDMuMzMgMTggMi41IDE3LjMzIDEgMTYuNSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTEzLjk3IDIxLjQ5Yy0uNjMuMjMtMS4yOS40LTEuOTcuNTEuNjgtLjEyIDEuMzMtLjI5IDEuOTctLjUxek0xMiAyMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41NSAxMnptMTAuNDMtMS42MXpNMTUuNDkgOS42M2MtLjE4LTIuNzktMS4zMS01LjUxLTMuNDMtNy42M2ExMi4xODggMTIuMTg4IDAgMCAwLTMuNTUgNy42M2MxLjI4LjY4IDIuNDYgMS41NiAzLjQ5IDIuNjMgMS4wMy0xLjA2IDIuMjEtMS45NCAzLjQ5LTIuNjN6bS02LjUgMi42NWMtLjE0LS4xLS4zLS4xOS0uNDUtLjI5LjE1LjExLjMxLjE5LjQ1LjI5em02LjQyLS4yNWMtLjEzLjA5LS4yNy4xNi0uNC4yNi4xMy0uMS4yNy0uMTcuNC0uMjZ6TTEyIDE1LjQ1QzkuODUgMTIuMTcgNi4xOCAxMCAyIDEwYzAgNS4zMiAzLjM2IDkuODIgOC4wMyAxMS40OS42My4yMyAxLjI5LjQgMS45Ny41MS42OC0uMTIgMS4zMy0uMjkgMS45Ny0uNTFDMTguNjQgMTkuODIgMjIgMTUuMzIgMjIgMTBjLTQuMTggMC03Ljg1IDIuMTctMTAgNS40NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOWgtMS41NmMuMzUtLjU5LjU2LTEuMjcuNTYtMiAwLTIuMjEtMS43OS00LTQtNC0uMzQgMC0uNjYuMDUtLjk4LjEzQTQuNzA3IDQuNzA3IDAgMCAwIDEwIDIuMDJjLTEuODkgMC0zLjUxIDEuMTEtNC4yNyAyLjcxQzQuMTUgNS4yNiAzIDYuNzQgMyA4LjVjMCAxLjg2IDEuMjggMy40MSAzIDMuODZWMjFoMTF2LTJoMmMxLjEgMCAyLS45IDItMnYtNmMwLTEuMS0uOS0yLTItMnpNNyAxMC41Yy0xLjEgMC0yLS45LTItMiAwLS44NS41NS0xLjYgMS4zNy0xLjg4bC44LS4yNy4zNi0uNzZDOCA0LjYyIDguOTQgNC4wMiAxMCA0LjAyYy43OSAwIDEuMzkuMzUgMS43NC42NWwuNzguNjVTMTMuMTYgNSAxMy45OSA1YzEuMSAwIDIgLjkgMiAyaC0zQzkuNjcgNyA5LjE1IDEwLjUgNyAxMC41ek0xOSAxN2gtMnYtNmgydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0YWlycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMSA1aC0yLjQydjMuMzNIMTN2My4zM2gtMi41OFYxOEg2di0yaDIuNDJ2LTMuMzNIMTFWOS4zM2gyLjU4VjZIMTh2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RvcmVmcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjkgOC44OS0xLjA1LTQuMzdjLS4yMi0uOS0xLTEuNTItMS45MS0xLjUySDUuMDVjLS45IDAtMS42OS42My0xLjkgMS41MkwyLjEgOC44OWMtLjI0IDEuMDItLjAyIDIuMDYuNjIgMi44OC4wOC4xMS4xOS4xOS4yOC4yOVYxOWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi02Ljk0Yy4wOS0uMDkuMi0uMTguMjgtLjI4LjY0LS44Mi44Ny0xLjg3LjYyLTIuODl6bS0yLjk5LTMuOSAxLjA1IDQuMzdjLjEuNDIuMDEuODQtLjI1IDEuMTctLjE0LjE4LS40NC40Ny0uOTQuNDctLjYxIDAtMS4xNC0uNDktMS4yMS0xLjE0TDE2Ljk4IDVsMS45My0uMDF6TTEzIDVoMS45NmwuNTQgNC41MmMuMDUuMzktLjA3Ljc4LS4zMyAxLjA3LS4yMi4yNi0uNTQuNDEtLjk1LjQxLS42NyAwLTEuMjItLjU5LTEuMjItMS4zMVY1ek04LjQ5IDkuNTIgOS4wNCA1SDExdjQuNjljMCAuNzItLjU1IDEuMzEtMS4yOSAxLjMxLS4zNCAwLS42NS0uMTUtLjg5LS40MWExLjQyIDEuNDIgMCAwIDEtLjMzLTEuMDd6bS00LjQ1LS4xNkw1LjA1IDVoMS45N2wtLjU4IDQuODZjLS4wOC42NS0uNiAxLjE0LTEuMjEgMS4xNC0uNDkgMC0uOC0uMjktLjkzLS40Ny0uMjctLjMyLS4zNi0uNzUtLjI2LTEuMTd6TTUgMTl2LTYuMDNjLjA4LjAxLjE1LjAzLjIzLjAzLjg3IDAgMS42Ni0uMzYgMi4yNC0uOTUuNi42IDEuNC45NSAyLjMxLjk1Ljg3IDAgMS42NS0uMzYgMi4yMy0uOTMuNTkuNTcgMS4zOS45MyAyLjI5LjkzLjg0IDAgMS42NC0uMzUgMi4yNC0uOTUuNTguNTkgMS4zNy45NSAyLjI0Ljk1LjA4IDAgLjE1LS4wMi4yMy0uMDNWMTlINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3Ryb2xsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2XCIsXCJjeVwiOlwiMjBcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMjBcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgN3YtLjUyQzIyIDQuNTYgMjAuNTIgMyAxOC42NSAzYy0xLjY2IDAtMi41NCAxLjI3LTMuMTggMi4wM2wtOC44IDEwLjMyQzYuMTIgMTYgNi41OCAxNyA3LjQzIDE3SDE1YzEuMSAwIDItLjkgMi0yVjYuMjdjLjU4LS42OC45Ny0xLjI3IDEuNjUtMS4yNy43NyAwIDEuMzUuNjYgMS4zNSAxLjQ4VjdoMnpNMTQuMyA0LjFhOC45NjIgOC45NjIgMCAwIDAtOS41OC42Mmw0Ljg5IDQuODlMMTQuMyA0LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRhcGFzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTBWMWgtOHY5YzAgMS44NiAxLjI4IDMuNDEgMyAzLjg2VjIxaC0ydjJoNnYtMmgtMnYtNy4xNGMxLjcyLS40NSAzLTIgMy0zLjg2em0tMi03djNoLTRWM2g0em0tNy41IDguNUEyLjUgMi41IDAgMCAxIDEwIDE0SDh2OUg2di05SDRhMi41IDIuNSAwIDAgMSAwLTVoMlY4SDRhMi41IDIuNSAwIDAgMSAwLTVoMlYxaDJ2MmgyYTIuNSAyLjUgMCAwIDEgMCA1SDh2MWgyYTIuNSAyLjUgMCAwIDEgMi41IDIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNGgydjJoLTJWNHptLTEgM2gydjJoLTJWN3ptLTItM2gydjJoLTJWNHptNyA1aC0yVjdoMnYyem0xLTNoLTJWNGgydjJ6bTIgM2gtMlY3aDJ2MnptMS0zaC0yVjRoMnYyem0tNy4zOCA4LjM4TDEyLjEgMTYuOWMtMi41LTEuNDMtNC41Ny0zLjUtNi02bDIuNTItMi41MmMuMjQtLjI0LjM0LS41OC4yOC0uOUw4LjE2IDMuOGMtLjA5LS40Ni0uNS0uOC0uOTgtLjhIMy4wM2MtLjU2IDAtMS4wMy40Ny0xIDEuMDMuMTcgMi44OSAxLjAyIDUuNiAyLjQgNy45NyAxLjU4IDIuNzMgMy44NSA0Ljk5IDYuNTcgNi41NyAyLjM3IDEuMzcgNS4wOCAyLjIzIDcuOTcgMi40LjU2LjAzIDEuMDMtLjQ0IDEuMDMtMXYtNC4xNWMwLS40OC0uMzQtLjg5LS44LS45OGwtMy42Ny0uNzNhLjk5Ljk5IDAgMCAwLS45MS4yN3pNMTQgMTBoMnYyaC0ydi0yem0tMyAwaDJ2MmgtMnYtMnptOCAyaC0ydi0yaDJ2MnptMyAwaC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVW1icmVsbGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDYuOTIgMTMgNS43N1YzLjRjMC0uMjYuMjItLjQ4LjUtLjQ4cy41LjIxLjUuNDhWNGgydi0uNkMxNiAyLjA3IDE0Ljg4IDEgMTMuNSAxUzExIDIuMDcgMTEgMy40djIuMzdMOS41IDYuOTIgNiA2LjA3bDUuMDUgMTUuMjVjLjE1LjQ1LjU1LjY4Ljk1LjY4cy44LS4yMy45NS0uNjlMMTggNi4wN2wtMy41Ljg1ek0xMy4yOCA4LjVsLjc2LjU4LjkyLS4yM0wxMyAxNC44VjguMjlsLjI4LjIxem0tMy4zMi41OS43Ni0uNTguMjgtLjIydjYuNTFMOS4wMyA4Ljg2bC45My4yM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVmFwZUZyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE2LjVoMWMxLjMzIDAgMi43MS0uMTggNC0uNXYzYy0xLjI5LS4zMi0yLjY3LS41LTQtLjVIMnYtMnpNMTYuMTcgMTlIOHYtM2g1LjE3TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQxIDEuNDEtMy42LTMuNnptMi42Ni0zSDIydjNoLS4xN2wtMy0zek0xMSAxNy41YzAtLjI4LS4yMi0uNS0uNS0uNXMtLjUuMjItLjUuNS4yMi41LjUuNS41LS4yMi41LS41em0xMS00Ljc0VjE1aC0xLjV2LTIuMjNjMC0yLjI0LTEuNzYtNC4wNy00LTQuMDdWNy4yYzEuMDIgMCAxLjg1LS44MyAxLjg1LTEuODVTMTcuNTIgMy41IDE2LjUgMy41VjJjMS44NSAwIDMuMzUgMS41IDMuMzUgMy4zNSAwIC45My0uMzggMS43Ny0xIDIuMzggMS44Ny44OSAzLjE1IDIuODEgMy4xNSA1LjAzek0xMS4xNSA4LjMyVjguM2MwLTEuODUgMS41LTMuMzUgMy4zNS0zLjM1djEuNWMtMS4wMiAwLTEuODUuNzMtMS44NSAxLjc1cy44MyAyIDEuODUgMmgxLjUzYzEuODcgMCAzLjQ3IDEuMzUgMy40NyAzLjE2VjE1SDE4di0xLjNjMC0xLjMxLS45Mi0yLjA1LTEuOTctMi4wNWgtMS41NWwtMy4zMy0zLjMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWYXBpbmdSb29tcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTYuNWgxYzEuMzMgMCAyLjcxLS4xOCA0LS41djNjLTEuMjktLjMyLTIuNjctLjUtNC0uNUgydi0yem0yMC0uNXYzSDh2LTNoMTR6bS0xMSAxLjVjMC0uMjgtLjIyLS41LS41LS41cy0uNS4yMi0uNS41LjIyLjUuNS41LjUtLjIyLjUtLjV6bTExLTQuNzRWMTVoLTEuNXYtMi4yM2MwLTIuMjQtMS43Ni00LjA3LTQtNC4wN1Y3LjJjMS4wMiAwIDEuODUtLjgzIDEuODUtMS44NVMxNy41MiAzLjUgMTYuNSAzLjVWMmMxLjg1IDAgMy4zNSAxLjUgMy4zNSAzLjM1IDAgLjkzLS4zOCAxLjc3LTEgMi4zOCAxLjg3Ljg5IDMuMTUgMi44MSAzLjE1IDUuMDN6bS0yLjUuNlYxNUgxOHYtMS4zYzAtMS4zMS0uOTItMi4wNS0xLjk3LTIuMDVIMTQuNWEzLjM1IDMuMzUgMCAwIDEgMC02Ljd2MS41Yy0xLjAyIDAtMS44NS43My0xLjg1IDEuNzVzLjgzIDIgMS44NSAyaDEuNTNjMS44NyAwIDMuNDcgMS4zNSAzLjQ3IDMuMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZpbGxhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyMUgzVjhsMTMtNXY3SDd2MTF6bTEyLTExYy0xLjEgMC0yIC45LTIgMkg5djloNXYtNWgydjVoNXYtOWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2FzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgOEEyLjUgMi41IDAgMCAwIDIxIDUuNUMyMSAzLjgzIDE4LjUgMSAxOC41IDFTMTYgMy44MyAxNiA1LjVBMi41IDIuNSAwIDAgMCAxOC41IDh6bS01IDFjLjgzIDAgMS41LS42NyAxLjUtMS41IDAtLjg0LTEuNS0yLjUtMS41LTIuNVMxMiA2LjY2IDEyIDcuNWMwIC44My42NyAxLjUgMS41IDEuNXpNOS4xMiA1bC03LjE4IDYuNzljLS42LjU2LS45NCAxLjM1LS45NCAyLjE4VjIwYzAgMS42NiAxLjM0IDMgMyAzaDEzLjc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUgxMnYtMWg3Ljc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUgxMnYtMWg4Ljc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUgxMnYtMWg2Ljc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUg4Ljg2Yy42NC0xLjExIDEuNDgtMi41OCAxLjQ5LTIuNjFhMS4wNjUgMS4wNjUgMCAwIDAtLjEyLTEuMjNDMTAuMjIgNi4xMiA5LjEyIDUgOS4xMiA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYXRlckRhbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDMgMiAxMmgzdjhoMTR2LThoM0wxMiAzem0wIDEzYy0xLjEgMC0yLS45LTItMnMyLTQgMi00IDIgMi45IDIgNC0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2hlZWxjaGFpclBpY2t1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNSA0YzAtMS4xMS44OS0yIDItMnMyIC44OSAyIDItLjg5IDItMiAyLTItLjg5LTItMnptNS41IDYuOTVWOWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnY2aDJ2N2gzLjV2LS4xMWMtMS4yNC0xLjI2LTItMi45OS0yLTQuODkgMC0yLjU4IDEuNDEtNC44NCAzLjUtNi4wNXpNMTYuNSAxN2MwIDEuNjUtMS4zNSAzLTMgM3MtMy0xLjM1LTMtM2MwLTEuMTEuNjEtMi4wNiAxLjUtMi41OHYtMi4xNmMtMi4wMi42NC0zLjUgMi41MS0zLjUgNC43NCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01aC0yem0zLjA0LTNIMTVWOGgtMnY4aDUuNDZsMi40NyAzLjcxIDEuNjYtMS4xMS0zLjA1LTQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0aHJvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek05IDE4Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTAtM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0zIDNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMC0zYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTMgM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0wLTNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMi0zSDd2LTFjMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMC43OFY4YzAtMS42NS0xLjM1LTMtMy0zaC00Yy0uNzcgMC0xLjQ3LjMtMiAuNzgtLjUzLS40OC0xLjIzLS43OC0yLS43OEg2QzQuMzUgNSAzIDYuMzUgMyA4djIuNzhjLS42MS41NS0xIDEuMzQtMSAyLjIydjZoMnYtMmgxNnYyaDJ2LTZjMC0uODgtLjM5LTEuNjctMS0yLjIyek0xNCA3aDRjLjU1IDAgMSAuNDUgMSAxdjJoLTZWOGMwLS41NS40NS0xIDEtMXpNNSA4YzAtLjU1LjQ1LTEgMS0xaDRjLjU1IDAgMSAuNDUgMSAxdjJINVY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCZWRyb29tQmFieSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS04IDE2Yy0yLjY0IDAtNS4xMy0xLjAzLTctMi45bDEuMDYtMS4wNmMuMzQuMzQuNzEuNjUgMS4xLjkyTDggMTMuNVY5LjUxbC0xLjU1Ljk5LS45NS0xTDcgNy43NiA2IDdoMy42NWwxLjczIDNIMTd2MWgtMXYyLjVsLjg0IDEuNDZjLjM5LS4yOC43Ni0uNTggMS4xLS45MkwxOSAxNS4xYTkuODQyIDkuODQyIDAgMCAxLTcgMi45elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC42OSAxNC4yNGE3LjcyIDcuNzIgMCAwIDEtNS40IDBsLS44MSAxLjQxLS4wMy4wNmMxLjEuNTIgMi4yOC43OSAzLjUzLjc5czIuNDUtLjI4IDMuNTUtLjc5bC0uMDMtLjA2LS44MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCZWRyb29tQ2hpbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgOC41aDZ2Mkg5ek0xNS42NCAxMkg4LjM3YS44Ny44NyAwIDAgMC0uODcuODdoLjAxVjE0aDl2LTEuMTNhLjg3Ljg3IDAgMCAwLS44Ny0uODd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMiAxNWgtMS41di0xLjVoLTlWMTdINnYtNC4xM2MwLTEgLjYyLTEuODUgMS41LTIuMlY5YzAtMS4xLjktMiAyLTJoNWMxLjEgMCAyIC45IDIgMnYxLjY3Yy44OC4zNSAxLjUgMS4yIDEuNSAyLjJWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJlZHJvb21QYXJlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgMTJoLTljLS41NSAwLTEgLjQ1LTEgMXYxaDExdi0xYzAtLjU1LS40NS0xLTEtMXpNNy4yNSA4LjVoNHYyaC00ek0xMi43NSA4LjVoNHYyaC00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTEgMTVoLTEuNXYtMS41aC0xMVYxN0g1di0zLjgzYzAtLjY2LjI1LTEuMjYuNjUtMS43MlY5YzAtMS4xLjktMiAyLTJIMTFjLjM3IDAgLjcyLjEyIDEgLjMyLjI4LS4yLjYzLS4zMiAxLS4zMmgzLjM1YzEuMSAwIDIgLjkgMiAydjIuNDVjLjQuNDYuNjUgMS4wNi42NSAxLjcyVjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbGVuZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4xMyAxNS4xMyAxOCAzaC00VjJoLTR2MUg1Yy0xLjEgMC0yIC45LTIgMnY0YzAgMS4xLjkgMiAyIDJoMi4yM2wuNjQgNC4xM0M2Ljc0IDE2LjA1IDYgMTcuNDMgNiAxOXYxYzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMnYtMWMwLTEuNTctLjc0LTIuOTUtMS44Ny0zLjg3ek01IDlWNWgxLjMxbC42MiA0SDV6bTcgMTBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMi4yOS01SDkuNzJMOC4zMyA1aDcuMzRsLTEuMzggOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2FtZXJhSW5kb29yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDQgOXYxMmgxNlY5bC04LTZ6bTQgMTMuMDZMMTQgMTV2MWMwIC41NS0uNDUgMS0xIDFIOWMtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjU1LjQ1LTEgMS0xaDRjLjU1IDAgMSAuNDUgMSAxdjFsMi0xLjA2djQuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENhbWVyYU91dGRvb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEzYzAtLjU1LS40NS0xLTEtMWgtNGMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTFsMiAxLjA2di00LjEyTDE4IDE0di0xek0xMiAzIDQgOXYxMmgxNnYtMkg2di05bDYtNC41IDYgNC41djFoMlY5bC04LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoYWlyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjNjMCAxLjEuOSAyIDIgMmgxdjJIN2MtMS4xIDAtMiAuOS0yIDJ2N2gydi0zaDEwdjNoMnYtN2MwLTEuMS0uOS0yLTItMmgtMXYtMmgxek03IDhWNWgxMHYzSDd6bTEwIDhIN3YtMmgxMHYyem0tMy00aC00di0yaDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hhaXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTF2MmgxMHYtMmMwLTEuODYgMS4yOC0zLjQxIDMtMy44NlY2YzAtMS42NS0xLjM1LTMtMy0zSDdDNS4zNSAzIDQgNC4zNSA0IDZ2MS4xNGMxLjcyLjQ1IDMgMiAzIDMuODZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDljLTEuMSAwLTIgLjktMiAydjRINXYtNGMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2NWMwIDEuNjUgMS4zNSAzIDMgM3YxYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMXYtMWMxLjY1IDAgMy0xLjM1IDMtM3YtNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29mZmVlTWFrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDZWNGgyVjJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNHYtMmgtNC4wM0E0Ljk2NiA0Ljk2NiAwIDAgMCAxOCAxNnYtNUg4djVjMCAxLjY0LjgxIDMuMDkgMi4wMyA0SDZWNGgydjJjMCAuNTUuNDUgMSAxIDFoOGMuNTUgMCAxLS40NSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTNcIixcImN5XCI6XCI5XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvZmZlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAzSDZjLTEuMSAwLTIgLjktMiAydjUuNzFjMCAzLjgzIDIuOTUgNy4xOCA2Ljc4IDcuMjkgMy45Ni4xMiA3LjIyLTMuMDYgNy4yMi03di0xaC41YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzIwLjQzIDMgMTguNSAzek0xNiA1djNINlY1aDEwem0yLjUgM0gxOFY1aC41Yy44MyAwIDEuNS42NyAxLjUgMS41UzE5LjMzIDggMTguNSA4ek00IDE5aDE2djJINHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTkgOC4zYzAgLjkzLS42NCAxLjcxLTEuNSAxLjkzVjE5SDh2LTYuNzdjLS44Ni0uMjItMS41LTEtMS41LTEuOTNWNi41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41VjloLjc1VjYuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVY5SDEwVjYuNWMwLS4yOC4yMy0uNS41LS41LjI4IDAgLjUuMjIuNS41djMuOHptNC41OCAyLjI5LS4wOC4wM1YxOUgxNHYtNi4zOGwtLjA4LS4wNGMtLjk3LS40Ny0xLjY3LTEuNy0xLjY3LTMuMTggMC0xLjg4IDEuMTMtMy40IDIuNS0zLjQgMS4zOCAwIDIuNSAxLjUzIDIuNSAzLjQxIDAgMS40OC0uNyAyLjcxLTEuNjcgMy4xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9vckJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5VjVjMC0xLjEtLjktMi0yLTJIN2MtMS4xIDAtMiAuOS0yIDJ2MTRIM3YyaDE4di0yaC0yem0tOC02SDl2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb29yRnJvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5VjVjMC0xLjEtLjktMi0yLTJIN2MtMS4xIDAtMiAuOS0yIDJ2MTRIM3YyaDE4di0yaC0yem0tNC02aC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9vclNsaWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjVjMC0xLjEtLjktMi0yLTJoLTUuMjV2MTZoLTEuNVYzSDZjLTEuMSAwLTIgLjktMiAydjE0SDN2MmgxOHYtMmgtMXptLTEwLTZIOHYtMmgydjJ6bTYgMGgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERvb3JiZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDQgOXYxMmgxNlY5bC04LTZ6bTAgMTQuNWMtLjU1IDAtMS0uNDUtMS0xaDJjMCAuNTUtLjQ1IDEtMSAxem00LTEuNUg4di0xaDF2LTIuMzRjMC0xLjU0LjgyLTIuODIgMi4yNS0zLjE2di0uMjVjMC0uNDEuMzQtLjc1Ljc1LS43NXMuNzUuMzQuNzUuNzV2LjI1YzEuNDQuMzQgMi4yNSAxLjYyIDIuMjUgMy4xNlYxNWgxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY4bC01LTV6TTcgN2g1djJIN1Y3em0xMCAxMEg3di0yaDEwdjJ6bTAtNEg3di0yaDEwdjJ6bS0yLTRWNWw0IDRoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZsYXR3YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA3LjA4YzAgMS43Ny0uODQgMy4yNS0yIDMuODJWMjFoLTJWMTAuOWMtMS4xNi0uNTctMi0yLjA1LTItMy44MkMxMC4wMSA0LjgzIDExLjM1IDMgMTMgM2MxLjY2IDAgMyAxLjgzIDMgNC4wOHpNMTcgM3YxOGgydi04aDJWN2MwLTEuNzYtMS4yNC00LTQtNHpNOC4yOCAzYy0uNCAwLS43Mi4zMi0uNzIuNzJWN2gtLjg0VjMuNzJDNi43MiAzLjMyIDYuNCAzIDYgM3MtLjcyLjMyLS43Mi43MlY3aC0uODRWMy43MmMwLS40LS4zMi0uNzItLjcyLS43MlMzIDMuMzIgMyAzLjcyVjljMCAxLjEuOSAyIDIgMnYxMGgyVjExYzEuMSAwIDItLjkgMi0yVjMuNzJjMC0uNC0uMzItLjcyLS43Mi0uNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEdhcmFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTguMzMgNy41LS42NiAyaDguNjZsLS42Ni0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTEgMTUuNjljMCAuNDUtLjM1LjgxLS43OC44MWgtLjQ0Yy0uNDQgMC0uNzgtLjM2LS43OC0uODFWMTYuNUg3djEuMTljMCAuNDUtLjM1LjgxLS43OC44MWgtLjQ0Yy0uNDMgMC0uNzgtLjM2LS43OC0uODF2LTYuNWMuODItMi40NyAxLjM0LTQuMDMgMS41Ni00LjY5LjA1LS4xNi4xMi0uMjkuMTktLjQuMDItLjAyLjAzLS4wNC4wNS0uMDYuMzgtLjUzLjkyLS41NC45Mi0uNTRoOC41NnMuNTQuMDEuOTIuNTNjLjAyLjAzLjAzLjA1LjA1LjA3LjA3LjExLjE0LjI0LjE5LjQuMjIuNjYuNzQgMi4yMyAxLjU2IDQuNjl2Ni41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRMaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNi4wNlYzaC0ydjMuMDZjLTQuNS41LTggNC4zMS04IDguOTNDMyAxNi4xIDMuOSAxNyA1LjAxIDE3SDhjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNGgyLjk5YzEuMTEgMCAyLjAxLS45IDIuMDEtMi4wMSAwLTQuNjItMy41LTguNDMtOC04Ljkzek0xMiAxNUg1YzAtMy44NiAzLjE0LTcgNy03czcgMy4xNCA3IDdoLTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExpdmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAxMS41Yy0uNTUgMC0xIC40NS0xIDF2MmgtN3YtMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMVYxNmMwIC4yOC4yMi41LjUuNWgxMGMuMjggMCAuNS0uMjIuNS0uNXYtMy41YzAtLjU1LS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTIuNXYuNWg0di0uNWMwLTEuMy45OS0yLjM1IDIuMjUtMi40N1Y5YzAtLjgzLS42Ny0xLjUtMS41LTEuNWgtNS41Yy0uODMgMC0xLjUuNjctMS41IDEuNXYxLjAzQTIuNDggMi40OCAwIDAgMSAxMCAxMi41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTEgMTRjMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJ2LTMuNWMwLS45Mi41MS0xLjcyIDEuMjUtMi4xNVY5YzAtMS42NiAxLjM0LTMgMy0zaDUuNWMxLjY2IDAgMyAxLjM0IDMgM3YxLjM1Yy43NC40MyAxLjI1IDEuMjMgMS4yNSAyLjE1VjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYW5hZ2VTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOUgyVjdoNXYyem0wIDNIMnYyaDV2LTJ6bTEzLjU5IDctMy44My0zLjgzYy0uOC41Mi0xLjc0LjgzLTIuNzYuODMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1YzAgMS4wMi0uMzEgMS45Ni0uODMgMi43NUwyMiAxNy41OSAyMC41OSAxOXpNMTcgMTFjMC0xLjY1LTEuMzUtMy0zLTNzLTMgMS4zNS0zIDMgMS4zNSAzIDMgMyAzLTEuMzUgMy0zek0yIDE5aDEwdi0ySDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG9kY2FzdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEyYzAgLjc0LS40IDEuMzgtMSAxLjcyVjIyaC0ydi04LjI4Yy0uNi0uMzUtMS0uOTgtMS0xLjcyIDAtMS4xLjktMiAyLTJzMiAuOSAyIDJ6bS0yLTZjLTMuMzEgMC02IDIuNjktNiA2IDAgMS43NC43NSAzLjMxIDEuOTQgNC40bDEuNDItMS40MkEzLjk1NyAzLjk1NyAwIDAgMSA4IDEyYzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAxLjE5LS41MyAyLjI1LTEuMzYgMi45OGwxLjQyIDEuNDJBNS45NTcgNS45NTcgMCAwIDAgMTggMTJjMC0zLjMxLTIuNjktNi02LTZ6bTAtNEM2LjQ4IDIgMiA2LjQ4IDIgMTJjMCAyLjg1IDEuMiA1LjQxIDMuMTEgNy4yNGwxLjQyLTEuNDJBNy45ODcgNy45ODcgMCAwIDEgNCAxMmMwLTQuNDEgMy41OS04IDgtOHM4IDMuNTkgOCA4YzAgMi4yOS0uOTggNC4zNi0yLjUzIDUuODJsMS40MiAxLjQyQzIwLjggMTcuNDEgMjIgMTQuODUgMjIgMTJjMC01LjUyLTQuNDgtMTAtMTAtMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNob3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4XCIsXCJjeVwiOlwiMTdcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE3XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTZcIixcImN5XCI6XCIxN1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA1LjA4VjNoLTJ2Mi4wOEM3LjYxIDUuNTcgNSA4LjQ3IDUgMTJ2MmgxNHYtMmMwLTMuNTMtMi42MS02LjQzLTYtNi45MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4XCIsXCJjeVwiOlwiMjBcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjIwXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTZcIixcImN5XCI6XCIyMFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYWJsZUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDcuNUMyMiA1LjU3IDE3LjUyIDQgMTIgNFMyIDUuNTcgMiA3LjVjMCAxLjgxIDMuOTUgMy4zMSA5IDMuNDhWMTVIOS4zNWMtLjgyIDAtMS41NS41LTEuODYgMS4yNkw2IDIwaDJsMS4yLTNoNS42bDEuMiAzaDJsLTEuNS0zLjc0Yy0uMy0uNzYtMS4wNC0xLjI2LTEuODUtMS4yNkgxM3YtNC4wMmM1LjA1LS4xNyA5LTEuNjcgOS0zLjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUYWJsZVJlc3RhdXJhbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS45NiA5LjczLTEuNDMtNWEuOTk2Ljk5NiAwIDAgMC0uOTYtLjczSDQuNDNjLS40NSAwLS44NC4zLS45Ni43M2wtMS40MyA1Yy0uMTguNjMuMyAxLjI3Ljk2IDEuMjdoMi4yTDQgMjBoMmwuNjctNWgxMC42N2wuNjYgNWgybC0xLjItOUgyMWMuNjYgMCAxLjE0LS42NC45Ni0xLjI3ek02LjkzIDEzbC4yNy0yaDkuNmwuMjcgMkg2LjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaW5kb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxMVYzSDVjLTEuMSAwLTIgLjktMiAydjZoOHptMiAwaDhWNWMwLTEuMS0uOS0yLTItMmgtNnY4em0tMiAySDN2NmMwIDEuMS45IDIgMiAyaDZ2LTh6bTIgMHY4aDZjMS4xIDAgMi0uOSAyLTJ2LTZoLTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFlhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek04IDguMjJhMS41NjIgMS41NjIgMCAwIDEgMi40NS0xLjI4bC0uMDEtLjEyYzAtLjg2LjctMS41NiAxLjU2LTEuNTZzMS41Ni43IDEuNTYgMS41NmwtLjAxLjEyQTEuNTYyIDEuNTYyIDAgMCAxIDE2IDguMjJjMCAuNjItLjM3IDEuMTYtLjg5IDEuNC41Mi4yNS44OS43OS44OSAxLjQxIDAgLjg2LS43IDEuNTYtMS41NiAxLjU2LS4zMyAwLS42NC0uMTEtLjg5LS4yOGwuMDEuMTJjMCAuODYtLjcgMS41Ni0xLjU2IDEuNTZzLTEuNTYtLjctMS41Ni0xLjU2bC4wMS0uMTJBMS41NjIgMS41NjIgMCAwIDEgOCAxMS4wM2MwLS42Mi4zNy0xLjE2Ljg5LTEuNEM4LjM3IDkuMzggOCA4Ljg0IDggOC4yMnpNMTIgMTljLTMuMzEgMC02LTIuNjktNi02IDMuMzEgMCA2IDIuNjkgNiA2IDAtMy4zMSAyLjY5LTYgNi02IDAgMy4zMS0yLjY5IDYtNiA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiOS42MlwiLFwiclwiOlwiMS41NlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWQxOFVwUmF0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTIuNWgxLjVWMTRIMTN6TTEzIDEwaDEuNXYxLjVIMTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOSAxMkg4LjV2LTQuNUg3VjloM3Y2em02LTFjMCAuNTUtLjQ1IDEtMSAxaC0yLjVjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMUgxNWMuNTUgMCAxIC40NSAxIDF2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kNkZ0QXBhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDZjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem00IDMuNDNjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1YTYuOTUgNi45NSAwIDAgMC01LjU2IDBBMi4wMSAyLjAxIDAgMCAwIDIgOS40M1YxMGg4di0uNTd6TTE4IDZjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem00IDMuNDNjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1YTYuOTUgNi45NSAwIDAgMC01LjU2IDBBMi4wMSAyLjAxIDAgMCAwIDE0IDkuNDNWMTBoOHYtLjU3ek0xOSAxN3YtMi4wMUw1IDE1djJsLTMtMyAzLTN2Mi4wMUwxOSAxM3YtMmwzIDMtMyAzem0tOSAydi0xSDcuNWMtLjI4IDAtLjUuMjItLjUuNXYzYzAgLjI4LjIyLjUuNS41aDJjLjI4IDAgLjUtLjIyLjUtLjVWMjBjMC0uMjgtLjIyLS41LS41LS41SDhWMTloMnptLTEgMS41di41SDh2LS41aDF6bTguNS0xLjVoLTF2M2gtMXYtM2gtMXYtMWgzdjF6bS01IDB2LjVoMXYxaC0xVjIyaC0xdi00SDE0djFoLTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQWRkTW9kZXJhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjIyIDIyLjYxYy0uNC4xNS0uOC4yOS0xLjIyLjM5LTUuMTYtMS4yNi05LTYuNDUtOS0xMlY1bDktNCA5IDR2NmMwIC45LS4xMSAxLjc4LS4zIDIuNjUtLjgxLS40MS0xLjczLS42NS0yLjctLjY1LTMuMzEgMC02IDIuNjktNiA2IDAgMS4zNi40NiAyLjYxIDEuMjIgMy42MXpNMTkgMjB2Mi45OXMtMS45OS4wMS0yIDBWMjBoLTN2LTJoM3YtM2gydjNoM3YyaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRBZGRSZWFjdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDlWN2gtMlYyLjg0QTkuOTI5IDkuOTI5IDAgMCAwIDExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMmMwLTEuMDUtLjE3LTIuMDUtLjQ3LTNIMTh6bS0yLjUtMWMuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41LTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNXptLTcgMGMuODMgMCAxLjUuNjcgMS41IDEuNVM5LjMzIDExIDguNSAxMSA3IDEwLjMzIDcgOS41IDcuNjcgOCA4LjUgOHptMy41IDkuNWMtMi4zMyAwLTQuMzEtMS40Ni01LjExLTMuNWgxMC4yMmMtLjggMi4wNC0yLjc4IDMuNS01LjExIDMuNXpNMjIgM2gydjJoLTJ2MmgtMlY1aC0yVjNoMlYxaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQXJjaGl0ZWN0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4zNiAxOC43OCA2LjYxIDIxbDEuNjItMS41NCAyLjc3LTcuNmMtLjY4LS4xNy0xLjI4LS41MS0xLjc3LS45OGwtMi44NyA3Ljl6TTE0Ljc3IDEwLjg4Yy0uNDkuNDctMS4xLjgxLTEuNzcuOThsMi43NyA3LjZMMTcuMzkgMjFsLjI2LTIuMjItMi44OC03Ljl6TTE1IDhjMC0xLjMtLjg0LTIuNC0yLTIuODJWM2gtMnYyLjE4QzkuODQgNS42IDkgNi43IDkgOGMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zem0tMyAxYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEFzc2lzdFdhbGtlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTIuNVwiLFwiY3lcIjpcIjQuNVwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS43NyAxNy43Mi0uNjQtNi4zN0ExLjQ5IDEuNDkgMCAwIDAgMTcuNjQgMTBIMTZjLTEuNS0uMDItMi44Ni0uNTQtMy43Ni0xLjQ0bC0yLTEuOThBMS45NSAxLjk1IDAgMCAwIDguODMgNmMtLjUxIDAtMS4wMi4yLTEuNDEuNTlMNC4wOCA5LjkxYy0uNTMuNjgtLjUxIDEuNTctLjIxIDIuMTNsMS40MyAyLjgtMy4xNSA0LjA1IDEuNTcgMS4yNEw3LjQgMTUuNGwtLjE3LTEuMzYuNzcuNzFWMjBoMnYtNi4xMmwtMi4xMi0yLjEyIDIuMzYtMi4zNmMuOTQuOTQgMS43MiAxLjgyIDMuNTkgMi4zMkwxMyAyMGgxLjVsLjQxLTMuNWgzLjE4bC4xNCAxLjIyYy0uNDQuMjYtLjczLjc0LS43MyAxLjI4IDAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNWMwLS41NC0uMjktMS4wMi0uNzMtMS4yOHpNMTUuMDkgMTVsLjQxLTMuNWgybC40MSAzLjVoLTIuODJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhY2tIYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMjRjLTMuMjYgMC02LjE5LTEuOTktNy40LTUuMDJsLTMuMDMtNy42MWExIDEgMCAwIDEgMS4yNC0xLjMybC43OS4yNmMuNTYuMTggMS4wMi42MSAxLjI0IDEuMTZMNy4yNSAxNUg4VjMuMjVhMS4yNSAxLjI1IDAgMCAxIDIuNSAwVjEyaDFWMS4yNWExLjI1IDEuMjUgMCAwIDEgMi41IDBWMTJoMVYyLjc1YTEuMjUgMS4yNSAwIDAgMSAyLjUgMFYxMmgxVjUuNzVhMS4yNSAxLjI1IDAgMCAxIDIuNSAwVjE2YzAgNC40Mi0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCbGluZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTEuNVwiLFwiY3lcIjpcIjMuNVwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4xMyA3LjEyYy0uMTctLjM1LS40NC0uNjUtLjgtLjg1YTEuOTggMS45OCAwIDAgMC0xLjkzLS4wM3YtLjAxTDQgOS4zVjE0aDJ2LTMuNTRsMS41LS44NUM3LjE4IDEwLjcxIDcgMTEuODUgNyAxM3Y1LjMzTDQuNCAyMS44IDYgMjNsMy00IC4yMi0zLjU0TDExIDE4djVoMnYtNi41bC0xLjk3LTIuODFjLS4wNC0uNTItLjE0LTEuNzYuNDUtMy40Ljc1IDEuMTQgMS44OCAxLjk4IDMuMiAyLjQxTDIwLjYzIDIzbC44Ny0uNS01LjQ4LTkuNUgxN3YtMmMtLjQ5IDAtMi44OC4xNy00LjA4LTIuMjFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQm95IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNy41Yy45NyAwIDEuNzUtLjc4IDEuNzUtMS43NVMxMi45NyA0IDEyIDRzLTEuNzUuNzgtMS43NSAxLjc1UzExLjAzIDcuNSAxMiA3LjV6TTE0IDIwdi01aDF2LTQuNWMwLTEuMS0uOS0yLTItMmgtMmMtMS4xIDAtMiAuOS0yIDJWMTVoMXY1aDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENha2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YTIgMiAwIDAgMCAyLTJjMC0uMzgtLjEtLjczLS4yOS0xLjAzTDEyIDBsLTEuNzEgMi45N2MtLjE5LjMtLjI5LjY1LS4yOSAxLjAzIDAgMS4xLjkgMiAyIDJ6bTQuNiA5Ljk5LTEuMDctMS4wNy0xLjA4IDEuMDdjLTEuMyAxLjMtMy41OCAxLjMxLTQuODkgMGwtMS4wNy0xLjA3LTEuMDkgMS4wN0M2Ljc1IDE2LjY0IDUuODggMTcgNC45NiAxN2MtLjczIDAtMS40LS4yMy0xLjk2LS42MVYyMWMwIC41NS40NSAxIDEgMWgxNmMuNTUgMCAxLS40NSAxLTF2LTQuNjFjLS41Ni4zOC0xLjIzLjYxLTEuOTYuNjEtLjkyIDAtMS43OS0uMzYtMi40NC0xLjAxek0xOCA5aC01VjdoLTJ2Mkg2Yy0xLjY2IDAtMyAxLjM0LTMgM3YxLjU0YzAgMS4wOC44OCAxLjk2IDEuOTYgMS45Ni41MiAwIDEuMDItLjIgMS4zOC0uNTdsMi4xNC0yLjEzIDIuMTMgMi4xM2MuNzQuNzQgMi4wMy43NCAyLjc3IDBsMi4xNC0yLjEzIDIuMTMgMi4xM2MuMzcuMzcuODYuNTcgMS4zOC41NyAxLjA4IDAgMS45Ni0uODggMS45Ni0xLjk2VjEyQzIxIDEwLjM0IDE5LjY2IDkgMTggOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2F0Y2hpbmdQb2tlbW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSAxMmEyLjUgMi41IDAgMCAxLTUgMCAyLjUgMi41IDAgMCAxIDUgMHptNy41IDBjMCA1LjUyLTQuNDggMTAtMTAgMTBTMiAxNy41MiAyIDEyIDYuNDggMiAxMiAyczEwIDQuNDggMTAgMTB6bS0yIDBoLTRjMC0yLjIxLTEuNzktNC00LTRzLTQgMS43OS00IDRINGMwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDbGVhbkhhbmRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuOTkgNSAuNjMgMS4zNyAxLjM3LjYzLTEuMzcuNjNMMTYuOTkgOWwtLjYzLTEuMzdMMTQuOTkgN2wxLjM3LS42My42My0xLjM3TTExIDYuMTNWNGgyYy41NyAwIDEuMS4xNyAxLjU1LjQ1bDEuNDMtMS40M0E0Ljg5OSA0Ljg5OSAwIDAgMCAxMyAySDcuNXYySDl2Mi4xNEE1LjAwNyA1LjAwNyAwIDAgMCA1LjI2IDkuNWgzLjk4TDE1IDExLjY1di0uNjJhNSA1IDAgMCAwLTQtNC45ek0xIDIyaDRWMTFIMXYxMXptMTktNWgtN2wtMi4wOS0uNzMuMzMtLjk0TDEzIDE2aDIuODJjLjY1IDAgMS4xOC0uNTMgMS4xOC0xLjE4IDAtLjQ5LS4zMS0uOTMtLjc3LTEuMTFMOC45NyAxMUg3djkuMDJMMTQgMjJsOC0zYy0uMDEtMS4xLS44OS0yLTItMnptMC0zYzEuMSAwIDItLjkgMi0ycy0yLTQtMi00LTIgMi45LTIgNCAuOSAyIDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ28yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOWgtM2MtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xem0tLjUgNC41aC0ydi0zaDJ2M3pNOCAxM3YxYzAgLjU1LS40NSAxLTEgMUg0Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MUg2LjV2LS41aC0ydjNoMlYxM0g4em0xMi41IDIuNWgtMnYxaDNWMThIMTd2LTIuNWMwLS41NS40NS0xIDEtMWgydi0xaC0zVjEyaDMuNWMuNTUgMCAxIC40NSAxIDF2MS41YzAgLjU1LS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29tcG9zdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjg3IDExLjgxQTIuNSAyLjUgMCAwIDEgMTUgOGgxYzEuNTEgMCAyLTEgMi0xcy41NSA2LTMgNmMtLjQ5IDAtLjk0LS4xNC0xLjMyLS4zOC0uMjQuNjQtLjU5IDEuNzYtLjc2IDIuOTYgMS4yNi4yMiAyLjI4Ljg5IDIuNzcgMS43N0E2LjUwNSA2LjUwNSAwIDAgMCAxOC41IDEyaDNjMCA1LjI0LTQuMjYgOS41LTkuNSA5LjVTMi41IDE3LjI0IDIuNSAxMiA2Ljc2IDIuNSAxMiAyLjVWMGw0IDQtNCA0VjUuNWMtMy41OCAwLTYuNSAyLjkyLTYuNSA2LjUgMCAyLjIxIDEuMTEgNC4xNyAyLjgxIDUuMzUuNTEtLjkyIDEuNjMtMS42MiAyLjk4LTEuOC0uMDktLjY5LS4yNi0xLjQyLS40OS0yLjAzLS4zNS4zLS44LjQ4LTEuMy40OC0xLjEgMC0yLS45LTItMnYtLjk5YzAtLjU2LS4xOS0xLjA5LS41LTEuNTEgMCAwIDQuNDUtLjIzIDQuNSAyLjUgMCAuMjktLjA2LjU2LS4xNy44LS40Mi0uMzItLjg2LS42LTEuMzMtLjguNTguNDMgMS4zNyAxLjM3IDIgMi42LjY3LTEuNjIgMS42OC0zLjI3IDMtNC42LS43Ni41Mi0xLjQ3IDEuMTItMi4xMyAxLjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRDb25uZWN0V2l0aG91dENvbnRhY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNEg5YTkgOSAwIDAgMSA5LTl2MmMtMy44NyAwLTcgMy4xMy03IDd6bTctM1Y5Yy0yLjc2IDAtNSAyLjI0LTUgNWgyYzAtMS42NiAxLjM0LTMgMy0zek03IDRjMC0xLjExLS44OS0yLTItMnMtMiAuODktMiAyIC44OSAyIDIgMiAyLS44OSAyLTJ6bTQuNDUuNWgtMkEyLjk5IDIuOTkgMCAwIDEgNi41IDdoLTNDMi42NyA3IDIgNy42NyAyIDguNVYxMWg2VjguNzRhNC45NyA0Ljk3IDAgMCAwIDMuNDUtNC4yNHpNMTkgMTdjMS4xMSAwIDItLjg5IDItMnMtLjg5LTItMi0yLTIgLjg5LTIgMiAuODkgMiAyIDJ6bTEuNSAxaC0zYTIuOTkgMi45OSAwIDAgMS0yLjk1LTIuNWgtMkE0Ljk3IDQuOTcgMCAwIDAgMTYgMTkuNzRWMjJoNnYtMi41YzAtLjgzLS42Ny0xLjUtMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29uc3RydWN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuNzgzIDE1LjE3MiAyLjEyMS0yLjEyMSA1Ljk5NiA1Ljk5Ni0yLjEyMSAyLjEyMXpNMTcuNSAxMGMxLjkzIDAgMy41LTEuNTcgMy41LTMuNSAwLS41OC0uMTYtMS4xMi0uNDEtMS42bC0yLjcgMi43LTEuNDktMS40OSAyLjctMi43Yy0uNDgtLjI1LTEuMDItLjQxLTEuNi0uNDFDMTUuNTcgMyAxNCA0LjU3IDE0IDYuNWMwIC40MS4wOC44LjIxIDEuMTZsLTEuODUgMS44NS0xLjc4LTEuNzguNzEtLjcxLTEuNDEtMS40MUwxMiAzLjQ5YTMgMyAwIDAgMC00LjI0IDBMNC4yMiA3LjAzbDEuNDEgMS40MUgyLjgxbC0uNzEuNzEgMy41NCAzLjU0LjcxLS43MVY5LjE1bDEuNDEgMS40MS43MS0uNzEgMS43OCAxLjc4LTcuNDEgNy40MSAyLjEyIDIuMTJMMTYuMzQgOS43OWMuMzYuMTMuNzUuMjEgMS4xNi4yMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ29va2llIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTUgMTAuOTljLTEuNzktLjAzLTMuNy0xLjk1LTIuNjgtNC4yMi0yLjk4IDEtNS43Ny0xLjU5LTUuMTktNC41NkM2Ljk1LjcxIDIgNi41OCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDUuODkgMCAxMC41NC01LjA4IDkuOTUtMTEuMDF6TTguNSAxNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzcuNjcgMTIgOC41IDEyczEuNS42NyAxLjUgMS41UzkuMzMgMTUgOC41IDE1em0yLTVDOS42NyAxMCA5IDkuMzMgOSA4LjVTOS42NyA3IDEwLjUgN3MxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTQuNSA2Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENvcm9uYXZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMjUgMTAuNWMtLjQxIDAtLjc1LjM0LS43NS43NWgtMS41NGE2Ljk3OCA2Ljk3OCAwIDAgMC0xLjUyLTMuNjVsMS4wOS0xLjA5LjAxLjAxYy4yOS4yOS43Ny4yOSAxLjA2IDBzLjI5LS43NyAwLTEuMDZMMTguNTQgNC40YS43NTQuNzU0IDAgMCAwLTEuMDYgMGMtLjI5LjI5LS4yOS43Ni0uMDEgMS4wNWwtMS4wOSAxLjA5YTcuMDE1IDcuMDE1IDAgMCAwLTMuNjQtMS41MVYzLjVoLjAxYy40MSAwIC43NS0uMzQuNzUtLjc1UzEzLjE2IDIgMTIuNzUgMmgtMS41Yy0uNDEgMC0uNzUuMzQtLjc1Ljc1cy4zMy43NC43NC43NXYxLjU1Yy0xLjM3LjE0LTIuNjIuNjktMy42NCAxLjUxTDYuNTEgNS40N2wuMDEtLjAxYy4yOS0uMjkuMjktLjc3IDAtMS4wNmEuNzU0Ljc1NCAwIDAgMC0xLjA2IDBMNC40IDUuNDZjLS4yOS4yOS0uMjkuNzcgMCAxLjA2LjI5LjI5Ljc2LjI5IDEuMDUuMDFsMS4wOSAxLjA5YTYuODkgNi44OSAwIDAgMC0xLjUgMy42M0gzLjVjMC0uNDEtLjM0LS43NS0uNzUtLjc1cy0uNzUuMzQtLjc1Ljc1djEuNWMwIC40MS4zNC43NS43NS43NXMuNzUtLjM0Ljc1LS43NWgxLjU0Yy4xNSAxLjM3LjY5IDIuNjEgMS41IDMuNjNsLTEuMDkgMS4wOWEuNzQyLjc0MiAwIDAgMC0xLjA1LjAxYy0uMjkuMjktLjI5Ljc3IDAgMS4wNmwxLjA2IDEuMDZjLjI5LjI5Ljc3LjI5IDEuMDYgMCAuMjktLjI5LjI5LS43NyAwLTEuMDZsLS4wMS0uMDEgMS4wOS0xLjA5YzEuMDIuODIgMi4yNiAxLjM2IDMuNjMgMS41MXYxLjU1Yy0uNDEuMDEtLjc0LjM0LS43NC43NXMuMzQuNzUuNzUuNzVoMS41Yy40MSAwIC43NS0uMzQuNzUtLjc1cy0uMzQtLjc1LS43NS0uNzVoLS4wMXYtMS41NGMxLjM3LS4xNCAyLjYyLS42OSAzLjY0LTEuNTFsMS4wOSAxLjA5Yy0uMjkuMjktLjI4Ljc2LjAxIDEuMDUuMjkuMjkuNzcuMjkgMS4wNiAwbDEuMDYtMS4wNmMuMjktLjI5LjI5LS43NyAwLTEuMDZhLjc1NC43NTQgMCAwIDAtMS4wNiAwbC0uMDEuMDEtMS4wOS0xLjA5YTcuMDI1IDcuMDI1IDAgMCAwIDEuNTItMy42NWgxLjU0YzAgLjQxLjM0Ljc1Ljc1Ljc1cy43NS0uMzQuNzUtLjc1di0xLjVjLjAxLS40LS4zMy0uNzQtLjc0LS43NHpNMTMuNzUgOGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xek0xMiAxM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tMS43NS01Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTguNSAxM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0xLjc1IDNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMy41IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptLjc1LTRjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxLS40NSAxLTEgMS0xLS40NS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENydWVsdHlGcmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuODQgMTQuNTJjLS4yNi0uMTktLjYyLS42My0uNzktLjg0QzE3LjI0IDEyLjAxIDE5IDguODcgMTkgNWMwLTEuOTUtLjc0LTMtMi0zLTEuNTQgMC0zLjk2IDIuMDYtNSA1Ljk3QzEwLjk2IDQuMDYgOC41NCAyIDcgMiA1Ljc0IDIgNSAzLjA1IDUgNWMwIDMuODcgMS43NiA3LjAxIDIuOTUgOC42OC0uMTcuMjEtLjUzLjY1LS43OS44NC0uNS40MS0xLjY2IDEuMzctMS42NiAyLjk4IDAgMi4yMSAxLjc5IDQgNCA0IDEuNTUgMCAyLjUtLjU2IDIuNS0uNTZzLjk1LjU2IDIuNS41NmMyLjIxIDAgNC0xLjc5IDQtNCAwLTEuNjEtMS4xNi0yLjU3LTEuNjYtMi45OHpNOS4zNSAxMi4yQzguMzQgMTAuNyA3IDguMTIgNyA1YzAtLjQ5LjA2LS44LjEyLS45Ny45NC4zMSAzLjI0IDIuNzEgMy4zOCA3LjY0LS40Ny4xMi0uODQuMy0xLjE1LjUzem0xLjE1IDQuNTVjLS4yOCAwLS41LS4zNC0uNS0uNzVzLjIyLS43NS41LS43NS41LjM0LjUuNzUtLjIyLjc1LS41Ljc1ek0xMiAxOS41Yy0uNTUgMC0xLS43Mi0xLTFzLjQ1LS41IDEtLjUgMSAuMjIgMSAuNS0uNDUgMS0xIDF6bTEuNS0yLjc1Yy0uMjggMC0uNS0uMzQtLjUtLjc1cy4yMi0uNzUuNS0uNzUuNS4zNC41Ljc1LS4yMi43NS0uNS43NXptMC01LjA4Yy4xNC00LjkzIDIuNDQtNy4zMyAzLjM4LTcuNjQuMDYuMTcuMTIuNDguMTIuOTcgMCAzLjEyLTEuMzQgNS43LTIuMzUgNy4yLS4zMS0uMjMtLjY4LS40MS0xLjE1LS41M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ3ljbG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA3LjQ3VjUuMzVDMjAuMDUgNC43NyAxNi41NiA0IDEyIDRjLTIuMTUgMC00LjExLjg2LTUuNTQgMi4yNC4xMy0uODUuNC0yLjQgMS4wMS00LjI0SDUuMzVDNC43NyAzLjk1IDQgNy40NCA0IDEyYzAgMi4xNS44NiA0LjExIDIuMjQgNS41NC0uODUtLjE0LTIuNC0uNC00LjI0LTEuMDF2Mi4xMkMzLjk1IDE5LjIzIDcuNDQgMjAgMTIgMjBjMi4xNSAwIDQuMTEtLjg2IDUuNTQtMi4yNC0uMTQuODUtLjQgMi40LTEuMDEgNC4yNGgyLjEyYy41OC0xLjk1IDEuMzUtNS40NCAxLjM1LTEwIDAtMi4xNS0uODYtNC4xMS0yLjI0LTUuNTQuODUuMTMgMi40LjQgNC4yNCAxLjAxek0xMiAxOGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA5IDEyIDIgMiA5aDl2MTNoMlY5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm00LjE0IDEyLTEuOTYuMzcuODIgNC4zN1YyMmgybC4wMi00SDd2NGgydi02SDQuOXpNMTkuMSAxNkgxNXY2aDJ2LTRoMS45OGwuMDIgNGgydi01LjI2bC44Mi00LjM3LTEuOTYtLjM3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREZXdQb2ludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEzVjVjMC0xLjY2LTEuMzQtMy0zLTNTNiAzLjM0IDYgNXY4Yy0xLjIxLjkxLTIgMi4zNy0yIDQgMCAyLjc2IDIuMjQgNSA1IDVzNS0yLjI0IDUtNWMwLTEuNjMtLjc5LTMuMDktMi00em0tNC0yVjVjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjFIOXYxaDF2Mkg5djFoMXYxSDh6bTEzLTQuNWMwLS44NC0xLjUtMi41LTEuNS0yLjVTMTggNS42NiAxOCA2LjVjMCAuODMuNjcgMS41IDEuNSAxLjVTMjEgNy4zMyAyMSA2LjV6bS00IDNjMC0uODQtMS41LTIuNS0xLjUtMi41UzE0IDguNjYgMTQgOS41YzAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNXptNCAzYzAtLjg0LTEuNS0yLjUtMS41LTIuNVMxOCAxMS42NiAxOCAxMi41YzAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRGl2ZXJzaXR5MSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNFwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuMjIgMTcuNThBMi4wMSAyLjAxIDAgMCAwIDAgMTkuNDNWMjFoNC41di0xLjYxYzAtLjgzLjIzLTEuNjEuNjMtMi4yOS0uMzctLjA2LS43NC0uMS0xLjEzLS4xLS45OSAwLTEuOTMuMjEtMi43OC41OHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIyMFwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjc4IDE3LjU4QTYuOTUgNi45NSAwIDAgMCAyMCAxN2MtLjM5IDAtLjc2LjA0LTEuMTMuMS40LjY4LjYzIDEuNDYuNjMgMi4yOVYyMUgyNHYtMS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6TTE2LjI0IDE2LjY1Yy0xLjE3LS41Mi0yLjYxLS45LTQuMjQtLjktMS42MyAwLTMuMDcuMzktNC4yNC45QTIuOTg4IDIuOTg4IDAgMCAwIDYgMTkuMzlWMjFoMTJ2LTEuNjFjMC0xLjE4LS42OC0yLjI2LTEuNzYtMi43NHpNOSAxMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zLTEuMzQtMy0zLTMtMyAxLjM0LTMgM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi40OCAxMC44NkMyLjE3IDEwLjEgMiA5LjM2IDIgOC42IDIgNi4wMiA0LjAyIDQgNi42IDRjMi42OCAwIDMuODIgMS43NCA1LjQgMy41OUMxMy41NyA1Ljc2IDE0LjcgNCAxNy40IDQgMTkuOTggNCAyMiA2LjAyIDIyIDguNmMwIC43Ni0uMTcgMS41LS40OCAyLjI2LjY1LjMxIDEuMTguODIgMS41MyAxLjQ0LjYtMS4yLjk1LTIuNDIuOTUtMy43QzI0IDQuOSAyMS4xIDIgMTcuNCAyYy0yLjA5IDAtNC4wOS45Ny01LjQgMi41MUMxMC42OSAyLjk3IDguNjkgMiA2LjYgMiAyLjkgMiAwIDQuOSAwIDguNmMwIDEuMjguMzUgMi41Ljk2IDMuNy4zNS0uNjIuODgtMS4xMyAxLjUyLTEuNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpdmVyc2l0eTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMC4xIDE1LjkgMS40Mi0xLjQyQzguNzkgMTIuMDUgNyAxMC40MSA3IDguODUgNyA3LjggNy44IDcgOC44NSA3YzEuMTEgMCAxLjU0LjY1IDIuNjggMmguOTNjMS4xMi0xLjMxIDEuNTMtMiAyLjY4LTIgLjg3IDAgMS41NS41NCAxLjc3IDEuMzIuMzUtLjA0LjY4LS4wNiAxLS4wNi4zNiAwIC43LjAzIDEuMDMuMDhDMTguNyA2LjQzIDE3LjEzIDUgMTUuMTUgNWMtLjEyIDAtLjIzLjAzLS4zNS4wNC4xMi0uMzMuMi0uNjcuMi0xLjA0IDAtMS42Ni0xLjM0LTMtMy0zUzkgMi4zNCA5IDRjMCAuMzcuMDguNzEuMiAxLjA0LS4xMi0uMDEtLjIzLS4wNC0uMzUtLjA0QzYuNjkgNSA1IDYuNjkgNSA4Ljg1YzAgMi40MiAyLjA0IDQuMzEgNS4xIDcuMDV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjUgMTYuMjRjLS4zMi0uMTgtLjY2LS4yOS0xLS4zNS4wNy0uMS4xNS0uMTguMjEtLjI4IDEuMDgtMS44Ny40Ni00LjE4LTEuNDEtNS4yNi0yLjA5LTEuMjEtNC43Ni0uMzktOC42NS45bC41MiAxLjk0YzMuNDctMS4xNCA1Ljc5LTEuODggNy4xNC0xLjEuOTEuNTMgMS4yIDEuNjEuNjggMi41My0uNTYuOTYtMS4zMyAxLTMuMDcgMS4zMmwtLjQ3LjgxYy41OCAxLjYyLjk3IDIuMzMuMzkgMy4zMi0uNTMuOTEtMS42MSAxLjItMi41My42OC0uMDYtLjAzLS4xMS0uMDktLjE3LS4xMy0uMy42Ny0uNjQgMS4yNC0xLjAzIDEuNzMuMDcuMDQuMTMuMDkuMi4xNCAxLjg3IDEuMDggNC4xOC40NiA1LjI2LTEuNDEuMDYtLjEuMDktLjIxLjE0LS4zMi4yMi4yNy40OC41MS44LjY5IDEuNDMuODMgMy4yNy4zNCA0LjEtMS4xcy4zMi0zLjI5LTEuMTEtNC4xMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMzIgMTQuMDFjLS43NCAzLjU4LTEuMjcgNS45NS0yLjYyIDYuNzMtLjkxLjUzLTIgLjI0LTIuNTMtLjY4LS41Ni0uOTYtLjItMS42Ni4zOS0zLjMybC0uNDYtLjgxYy0xLjctLjMxLTIuNS0uMzMtMy4wNy0xLjMyLS41My0uOTEtLjI0LTIgLjY4LTIuNTMuMDktLjA1LjE5LS4wOC4yOS0uMTEtLjM1LS41Ni0uNjQtMS4xNy0uODItMS44NS0uMTYuMDctLjMyLjE0LS40OC4yMy0xLjg3IDEuMDgtMi40OSAzLjM5LTEuNDEgNS4yNi4wNi4xLjE0LjE4LjIxLjI4LS4zNC4wNi0uNjguMTctMSAuMzUtMS40My44My0xLjkzIDIuNjYtMS4xIDQuMXMyLjY2IDEuOTMgNC4xIDEuMWMuMzItLjE4LjU4LS40Mi44LS42OS4wNS4xMS4wOC4yMi4xNC4zMiAxLjA4IDEuODcgMy4zOSAyLjQ5IDUuMjYgMS40MSAyLjA5LTEuMjEgMi43MS0zLjkzIDMuNTUtNy45NGwtMS45My0uNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZERpdmVyc2l0eTMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjMyIDEzLjAxYy45Ni4wMiAxLjg1LjUgMi40NSAxLjM0QTMuOTYxIDMuOTYxIDAgMCAwIDEyIDE2YzEuMjkgMCAyLjUtLjYyIDMuMjMtMS42Ni42LS44NCAxLjQ5LTEuMzIgMi40NS0xLjM0LS43Mi0xLjIyLTMuNi0yLTUuNjgtMi0yLjA3IDAtNC45Ni43OC01LjY4IDIuMDF6TTQgMTNjMS42NiAwIDMtMS4zNCAzLTNTNS42NiA3IDQgN3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzek0yMCAxM2MxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6TTEyIDEwYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTRoLTMuMjdjLS43NyAwLTEuMzUuNDUtMS42OC45Mi0uMDQuMDYtMS4zNiAyLjA4LTQuMDUgMi4wOC0xLjQzIDAtMy4wMy0uNjQtNC4wNS0yLjA4LS4zOS0uNTUtMS0uOTItMS42OC0uOTJIM2MtMS4xIDAtMiAuOS0yIDJ2NGg3di0yLjI2YzEuMTUuOCAyLjU0IDEuMjYgNCAxLjI2czIuODUtLjQ2IDQtMS4yNlYyMGg3di00YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb21haW5BZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3VjNIMnYxOGgxNHYtMmgtNHYtMmgydi0yaC0ydi0yaDJ2LTJoLTJWOWg4djZoMlY3SDEyek02IDE5SDR2LTJoMnYyem0wLTRINHYtMmgydjJ6bTAtNEg0VjloMnYyem0wLTRINFY1aDJ2MnptNCAxMkg4di0yaDJ2MnptMC00SDh2LTJoMnYyem0wLTRIOFY5aDJ2MnptMC00SDhWNWgydjJ6bTE0IDEydjJoLTJ2MmgtMnYtMmgtMnYtMmgydi0yaDJ2Mmgyem0tNi04aC0ydjJoMnYtMnptMCA0aC0ydjJoMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRG9tYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3VjNIMnYxOGgyMFY3SDEyek02IDE5SDR2LTJoMnYyem0wLTRINHYtMmgydjJ6bTAtNEg0VjloMnYyem0wLTRINFY1aDJ2MnptNCAxMkg4di0yaDJ2MnptMC00SDh2LTJoMnYyem0wLTRIOFY5aDJ2MnptMC00SDhWNWgydjJ6bTEwIDEyaC04di0yaDJ2LTJoLTJ2LTJoMnYtMmgtMlY5aDh2MTB6bS0yLThoLTJ2Mmgydi0yem0wIDRoLTJ2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWREb3duaGlsbFNraWluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgNC41YzAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMiAyIC45IDIgMnptLTIuNzIgMTYuNC43Ni4yN2E1LjkzMyA1LjkzMyAwIDAgMCA0LjM0LS4xN0wyMiAyMi4xM2MtMS4wNS41NS0yLjI0Ljg3LTMuNS44Ny0uODYgMC0xLjY4LS4xNC0yLjQ1LS40MUwyIDE3LjQ3bC41LTEuNDEgNi45IDIuNTEgMS43Mi00LjQ0LTMuNTctMy43M2MtLjg5LS45NC0uNjctMi40Ny40NS0zLjEybDMuNDgtMi4wMWMxLjEtLjY0IDIuNTItLjEgMi45MSAxLjExbC4zMyAxLjA4YTUuMDE3IDUuMDE3IDAgMCAwIDIuODMgMy4xNGwuNTItMS42IDEuNDMuNDYtMS4xMiAzLjQ1QTcuMDI5IDcuMDI5IDAgMCAxIDEzIDguNTlsLTIuNTMgMS40NSAzLjAzIDMuNDYtMi4yMiA1Ljc2IDMuMDkgMS4xMiAyLjEtNi40NGMuNDYuMTguOTQuMzEgMS40NC40MWwtMi4xMyA2LjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFZGl0Tm90aWZpY2F0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjU4IDYuMjUgMS43NyAxLjc3TDE0LjM3IDEzSDEyLjZ2LTEuNzdsNC45OC00Ljk4em0zLjI3LS40NC0xLjA2LTEuMDZjLS4yLS4yLS41MS0uMi0uNzEgMGwtLjg1Ljg1TDIwIDcuMzdsLjg1LS44NWMuMi0uMi4yLS41MiAwLS43MXpNMTggMTIuMlYxN2gydjJINHYtMmgydi03YzAtMi43OSAxLjkxLTUuMTQgNC41LTUuOHYtLjdjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjV2LjdjLjgyLjIxIDEuNTcuNTkgMi4yMSAxLjA5TDEwLjYgMTAuNFYxNWg0LjZsMi44LTIuOHpNMTAgMjBoNGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVsZGVybHlXb21hbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgMTFjLTEuNTYgMC0yLjkyLS45LTMuNTgtMi4yMWwtLjc5LTEuNjdDMTQuMTIgNy4xIDEzLjYzIDYgMTIuMzQgNiA4LjcyIDYgNiAxNi42OSA2IDE5aDIuNWwtMi4xIDIuOEw4IDIzbDMtNGgydjRoMnYtNC4wM0wxMyAxM2wuNDktMi43MUE2LjAyIDYuMDIgMCAwIDAgMTcgMTIuODF2LjY5aDF2LTFjMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjVWMjNoMVYxMi41YzAtLjgzLS42Ny0xLjUtMS41LTEuNXpNMTEuNiAyLjkxYy0uMDYuMTktLjEuMzgtLjEuNTkgMCAxLjEuOSAyIDIgMnMyLS45IDItMi0uOS0yLTItMmMtLjIxIDAtLjQuMDQtLjU5LjEtLjE1LS4zNS0uNS0uNi0uOTEtLjYtLjU1IDAtMSAuNDUtMSAxIDAgLjQxLjI1Ljc2LjYuOTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVsZGVybHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYuNSA3VjIzaC0xVjEyLjVjMC0uMjgtLjIyLS41LS41LS41cy0uNS4yMi0uNS41djFoLTF2LS42OWE2LjAyIDYuMDIgMCAwIDEtMy41MS0yLjUyYy0uMzEuODctLjQ5IDEuNzgtLjQ5IDIuNzEgMCAuMjMuMDIuNDYuMDMuNjlMMTUgMTYuNVYyM2gtMnYtNWwtMS43OC0yLjU0TDExIDE5bC0zIDQtMS42LTEuMkw5IDE4LjMzVjEzYzAtMS4xNS4xOC0yLjI5LjUtMy4zOWwtMS41Ljg1VjE0SDZWOS4zbDUuNC0zLjA3di4wMWEyIDIgMCAwIDEgMS45NC4wM2MuMzYuMjEuNjMuNTEuOC44NWwuNzkgMS42N0EzLjk4NyAzLjk4NyAwIDAgMCAxOC41IDExYy44MyAwIDEuNS42NyAxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbW9qaUVtb3Rpb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNOC41IDhjLjgzIDAgMS41LjY3IDEuNSAxLjVTOS4zMyAxMSA4LjUgMTEgNyAxMC4zMyA3IDkuNSA3LjY3IDggOC41IDh6TTEyIDE4Yy0yLjI4IDAtNC4yMi0xLjY2LTUtNGgxMGMtLjc4IDIuMzQtMi43MiA0LTUgNHptMy41LTdjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxNC42NyA4IDE1LjUgOHMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVtb2ppRXZlbnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNWgtMlYzSDd2Mkg1Yy0xLjEgMC0yIC45LTIgMnYxYzAgMi41NSAxLjkyIDQuNjMgNC4zOSA0Ljk0QTUuMDEgNS4wMSAwIDAgMCAxMSAxNS45VjE5SDd2MmgxMHYtMmgtNHYtMy4xYTUuMDEgNS4wMSAwIDAgMCAzLjYxLTIuOTZDMTkuMDggMTIuNjMgMjEgMTAuNTUgMjEgOFY3YzAtMS4xLS45LTItMi0yek01IDhWN2gydjMuODJDNS44NCAxMC40IDUgOS4zIDUgOHptMTQgMGMwIDEuMy0uODQgMi40LTIgMi44MlY3aDJ2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRW1vamlGbGFncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0IDktMS0ySDdWNS43MmMuNi0uMzQgMS0uOTggMS0xLjcyIDAtMS4xLS45LTItMi0ycy0yIC45LTIgMmMwIC43NC40IDEuMzggMSAxLjcyVjIxaDJ2LTRoNWwxIDJoN1Y5aC02em00IDhoLTRsLTEtMkg3VjloNWwxIDJoNXY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbW9qaUZvb2RCZXZlcmFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNIOXYyLjRsMS44MSAxLjQ1Yy4xMi4wOS4xOS4yNC4xOS4zOXY0LjI2YzAgLjI4LS4yMi41LS41LjVoLTRjLS4yOCAwLS41LS4yMi0uNS0uNVY3LjI0YzAtLjE1LjA3LS4zLjE5LS4zOUw4IDUuNFYzSDR2MTBjMCAyLjIxIDEuNzkgNCA0IDRoNmMyLjIxIDAgNC0xLjc5IDQtNHYtM2gyYTIgMiAwIDAgMCAyLTJWNWMwLTEuMTEtLjg5LTItMi0yem0wIDVoLTJWNWgydjN6TTQgMTloMTZ2Mkg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbW9qaU5hdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk0IDQuODhBMS4zMiAxLjMyIDAgMCAwIDIwLjY4IDRIMTkuNmwtLjMxLS45N0MxOS4xNSAyLjQzIDE4LjYxIDIgMTggMnMtMS4xNS40My0xLjI5IDEuMDRMMTYuNCA0aC0xLjA3Yy0uNTcgMC0xLjA4LjM1LTEuMjYuODgtLjE5LjU2LjA0IDEuMTcuNTYgMS40OGwuODcuNTItLjQgMS4yNGMtLjIzLjU4LS4wNCAxLjI1LjQ1IDEuNjIuMjMuMTcuNTEuMjYuNzguMjYuMzEgMCAuNjEtLjExLjg2LS4zMmwuODEtLjcuODEuN2MuMjUuMjEuNTUuMzIuODYuMzIuMjcgMCAuNTUtLjA5Ljc4LS4yNi41LS4zNy42OC0xLjA0LjQ1LTEuNjJsLS4zOS0xLjI0Ljg3LS41MmMuNTEtLjMxLjc0LS45Mi41Ni0xLjQ4ek0xOCA3Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6TTEzLjQ5IDEwLjUxYy0uNDMtLjQzLS45NC0uNzMtMS40OS0uOTNWOGgtMXYxLjM4Yy0uMTEtLjAxLS4yMy0uMDMtLjM0LS4wMy0xLjAyIDAtMi4wNS4zOS0yLjgzIDEuMTctLjE2LjE2LS4zLjM0LS40My41M0w2IDEwLjUyYTMuMDEgMy4wMSAwIDAgMC0zLjgzIDEuODJjLS4yNy43NS0uMjMgMS41Ny4xMiAyLjI5LjIzLjQ4LjU4Ljg3IDEgMS4xNi0uMzggMS4zNS0uMDYgMi44NSAxIDMuOTFhMy45ODEgMy45ODEgMCAwIDAgMy45MSAxYy4yOS40Mi42OC43NyAxLjE2IDEgLjQyLjIuODUuMyAxLjI5LjMuMzQgMCAuNjgtLjA2IDEuMDEtLjE3YTMuMDA3IDMuMDA3IDAgMCAwIDEuODItMy44NWwtLjUyLTEuMzdjLjE4LS4xMy4zNi0uMjcuNTMtLjQzLjg3LS44NyAxLjI0LTIuMDQgMS4xNC0zLjE3SDE2di0xaC0xLjU5Yy0uMTktLjU1LS40OS0xLjA2LS45Mi0xLjV6bS04LjgyIDMuNzhjLS4yNS0uMDktLjQ1LS4yNy0uNTctLjUxcy0uMTMtLjUxLS4wNC0uNzZjLjE5LS41Mi43Ni0uNzkgMS4yNi0uNjFsMy4xNiAxLjE5Yy0xLjE1LjYtMi42MyAxLjExLTMuODEuNjl6bTYuMzIgNS42NWMtLjI1LjA5LS41Mi4wOC0uNzYtLjA0YS45ODkuOTg5IDAgMCAxLS41MS0uNTdjLS40Mi0xLjE4LjA5LTIuNjUuNy0zLjhsMS4xOCAzLjEzYy4xOC41Mi0uMDkgMS4xLS42MSAxLjI4em0xLjIxLTUuMzQtLjYxLTEuNjFjMC0uMDEtLjAxLS4wMi0uMDItLjAzbC0uMDYtLjEyYS42NzMuNjczIDAgMCAwLS4wNy0uMTFsLS4wOS0uMDktLjA5LS4wOWMtLjAzLS4wMy0uMDctLjA1LS4xMS0uMDctLjA0LS4wMi0uMDctLjA1LS4xMi0uMDYtLjAxIDAtLjAyLS4wMS0uMDMtLjAybC0xLjYtLjZhMS45NjYgMS45NjYgMCAwIDEgMi42Ny4xM2MuNzMuNzMuNzcgMS44OC4xMyAyLjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbW9qaU9iamVjdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzYy0uNDYgMC0uOTMuMDQtMS40LjE0LTIuNzYuNTMtNC45NiAyLjc2LTUuNDggNS41Mi0uNDggMi42MS40OCA1LjAxIDIuMjIgNi41Ni40My4zOC42Ni45MS42NiAxLjQ3VjE5YzAgMS4xLjkgMiAyIDJoLjI4YTEuOTggMS45OCAwIDAgMCAzLjQ0IDBIMTRjMS4xIDAgMi0uOSAyLTJ2LTIuMzFjMC0uNTUuMjItMS4wOS42NC0xLjQ2QTYuOTU2IDYuOTU2IDAgMCAwIDE5IDEwYzAtMy44Ny0zLjEzLTctNy03em0yIDE2aC00di0xaDR2MXptMC0yaC00di0xaDR2MXptLTEuNS01LjU5VjE0aC0xdi0yLjU5TDkuNjcgOS41OWwuNzEtLjcxTDEyIDEwLjVsMS42Mi0xLjYyLjcxLjcxLTEuODMgMS44MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRW1vamlQZW9wbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS44OSA4LjExQzE1LjUgNy43MiAxNC44MyA3IDEzLjUzIDdoLTIuNTRDOC4yNCA2Ljk5IDYgNC43NSA2IDJINGMwIDMuMTYgMi4xMSA1Ljg0IDUgNi43MVYyMmgydi02aDJ2NmgyVjEwLjA1TDE4Ljk1IDE0bDEuNDEtMS40MS00LjQ3LTQuNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEVtb2ppU3ltYm9scyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMmg4djJIM3pNNiAxMWgyVjdoM1Y1SDN2Mmgzek0xMi40MDQgMjAuMTgybDcuNzc4LTcuNzc4IDEuNDE0IDEuNDE0LTcuNzc4IDcuNzc4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOS41XCIsXCJjeVwiOlwiMTkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTFBMi41IDIuNSAwIDAgMCAxOCA4LjVWNGgzVjJoLTR2NC41MWMtLjQyLS4zMi0uOTMtLjUxLTEuNS0uNTFhMi41IDIuNSAwIDAgMCAwIDV6TTkuNzQgMTUuOTZsLTEuNDEgMS40MS0uNzEtLjcxLjM1LS4zNWEyLjQ5OSAyLjQ5OSAwIDAgMC0xLjc3LTQuMjcgMi40OTkgMi40OTkgMCAwIDAtMS43NyA0LjI3bC4zNS4zNS0xLjA2IDEuMDZjLS45OC45OC0uOTggMi41NiAwIDMuNTQuNS41IDEuMTQuNzQgMS43OC43NHMxLjI4LS4yNCAxLjc3LS43M2wxLjA2LTEuMDYgMS40MSAxLjQxIDEuNDEtMS40MS0xLjQxLTEuNDEgMS40MS0xLjQxLTEuNDEtMS40M3pNNS44NSAxNC4yYy4xMi0uMTIuMjYtLjE1LjM1LS4xNXMuMjMuMDMuMzUuMTVjLjE5LjIuMTkuNTEgMCAuNzFsLS4zNS4zNS0uMzUtLjM2YS41MDEuNTAxIDAgMCAxIDAtLjd6bTAgNS42NWMtLjEyLjEyLS4yNi4xNS0uMzUuMTVzLS4yMy0uMDMtLjM1LS4xNWEuNTEzLjUxMyAwIDAgMSAwLS43MWwxLjA2LTEuMDYuNzEuNzEtMS4wNyAxLjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRFbW9qaVRyYW5zcG9ydGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNTcgMTAuNjZjLS4xNC0uNC0uNTItLjY2LS45Ny0uNjZoLTcuMTljLS40NiAwLS44My4yNi0uOTguNjZMMTAgMTQuNzdsLjAxIDUuNTFjMCAuMzguMzEuNzIuNjkuNzJoLjYyYy4zOCAwIC42OC0uMzguNjgtLjc2VjE5aDh2MS4yNGMwIC4zOC4zMS43Ni42OS43NmguNjFjLjM4IDAgLjY5LS4zNC42OS0uNzJsLjAxLTEuMzd2LTQuMTRsLTEuNDMtNC4xMXptLTguMTYuMzRoNy4xOWwxLjAzIDNoLTkuMjVsMS4wMy0zek0xMiAxN2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem04IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOWgxVjNIN3Y1SDJ2MTNoMVY5aDVWNGg2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDExaDJ2Mkg1ek0xMCA1aDJ2MmgtMnpNNSAxNWgydjJINXpNNSAxOWgydjJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRW5naW5lZXJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE1Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00ek0yMi4xIDYuODRjLjAxLS4xMS4wMi0uMjIuMDItLjM0IDAtLjEyLS4wMS0uMjMtLjAzLS4zNGwuNzQtLjU4Yy4wNy0uMDUuMDgtLjE1LjA0LS4yMmwtLjctMS4yMWMtLjA0LS4wOC0uMTQtLjEtLjIxLS4wOGwtLjg2LjM1Yy0uMTgtLjE0LS4zOC0uMjUtLjU5LS4zNGwtLjEzLS45M0EuMTgyLjE4MiAwIDAgMCAyMC4yIDNoLTEuNGMtLjA5IDAtLjE2LjA2LS4xNy4xNWwtLjEzLjkzYy0uMjEuMDktLjQxLjIxLS41OS4zNGwtLjg3LS4zNWMtLjA4LS4wMy0uMTcgMC0uMjEuMDhsLS43IDEuMjFjLS4wNC4wOC0uMDMuMTcuMDQuMjJsLjc0LjU4YTEuOTUzIDEuOTUzIDAgMCAwIDAgLjY4bC0uNzQuNThjLS4wNy4wNS0uMDguMTUtLjA0LjIybC43IDEuMjFjLjA0LjA4LjE0LjEuMjEuMDhsLjg3LS4zNWMuMTguMTQuMzguMjUuNTkuMzRsLjEzLjkzYy4wMS4wOS4wOC4xNS4xNy4xNWgxLjRjLjA5IDAgLjE2LS4wNi4xNy0uMTVsLjEzLS45M2MuMjEtLjA5LjQxLS4yMS41OS0uMzRsLjg3LjM1Yy4wOC4wMy4xNyAwIC4yMS0uMDhsLjctMS4yMWMuMDQtLjA4LjAzLS4xNy0uMDQtLjIybC0uNzMtLjU4em0tMi42LjkxYTEuMjUgMS4yNSAwIDEgMSAwLTIuNSAxLjI1IDEuMjUgMCAwIDEgMCAyLjV6TTE5LjkyIDExLjY4bC0uNS0uODdjLS4wMy0uMDYtLjEtLjA4LS4xNS0uMDZsLS42Mi4yNWMtLjEzLS4xLS4yNy0uMTgtLjQyLS4yNGwtLjA5LS42NkEuMTUuMTUgMCAwIDAgMTggMTBoLTFjLS4wNiAwLS4xMS4wNC0uMTIuMTFsLS4wOS42NmMtLjE1LjA2LS4yOS4xNS0uNDIuMjRsLS42Mi0uMjVjLS4wNi0uMDItLjEyIDAtLjE1LjA2bC0uNS44N2MtLjAzLjA2LS4wMi4xMi4wMy4xNmwuNTMuNDFjLS4wMS4wOC0uMDIuMTYtLjAyLjI0IDAgLjA4LjAxLjE3LjAyLjI0bC0uNTMuNDFjLS4wNS4wNC0uMDYuMTEtLjAzLjE2bC41Ljg3Yy4wMy4wNi4xLjA4LjE1LjA2bC42Mi0uMjVjLjEzLjEuMjcuMTguNDIuMjRsLjA5LjY2Yy4wMS4wNy4wNi4xMS4xMi4xMWgxYy4wNiAwIC4xMi0uMDQuMTItLjExbC4wOS0uNjZjLjE1LS4wNi4yOS0uMTUuNDItLjI0bC42Mi4yNWMuMDYuMDIuMTIgMCAuMTUtLjA2bC41LS44N2MuMDMtLjA2LjAyLS4xMi0uMDMtLjE2bC0uNTItLjQxYy4wMS0uMDguMDItLjE2LjAyLS4yNCAwLS4wOC0uMDEtLjE3LS4wMi0uMjRsLjUzLS40MWMuMDUtLjA0LjA2LS4xMS4wNC0uMTd6bS0yLjQyIDEuNjVjLS40NiAwLS44My0uMzgtLjgzLS44MyAwLS40Ni4zOC0uODMuODMtLjgzcy44My4zOC44My44M2MwIC40Ni0uMzcuODMtLjgzLjgzek00Ljc0IDloOC41M2MuMjcgMCAuNDktLjIyLjQ5LS40OXYtLjAyYS40OS40OSAwIDAgMC0uNDktLjQ5SDEzYzAtMS40OC0uODEtMi43NS0yLTMuNDV2Ljk1YzAgLjI4LS4yMi41LS41LjVzLS41LS4yMi0uNS0uNVY0LjE0QzkuNjggNC4wNiA5LjM1IDQgOSA0cy0uNjguMDYtMSAuMTRWNS41YzAgLjI4LS4yMi41LS41LjVTNyA1Ljc4IDcgNS41di0uOTVDNS44MSA1LjI1IDUgNi41MiA1IDhoLS4yNmEuNDkuNDkgMCAwIDAtLjQ5LjQ5di4wM2MwIC4yNi4yMi40OC40OS40OHpNOSAxM2MxLjg2IDAgMy40MS0xLjI4IDMuODYtM0g1LjE0Yy40NSAxLjcyIDIgMyAzLjg2IDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhY2UyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTcgMTMuNTJ2LS4wNEMyMy4yMSAxMi4zOCAyNCAxMC43OCAyNCA5YzAtMy4zMS0yLjY5LTYtNi02LS4yNiAwLS41Mi4wMi0uNzguMDZhNS45OCA1Ljk4IDAgMCAwLTEwLjQ0IDBDNi41MiAzLjAyIDYuMjYgMyA2IDMgMi42OSAzIDAgNS42OSAwIDljMCAxLjc4Ljc5IDMuMzggMi4wMiA0LjQ4di4wNEE2LjAwOCA2LjAwOCAwIDAgMCAwIDE4YzAgMy4zMSAyLjY5IDYgNiA2IDEuMzkgMCAyLjY3LS40OCAzLjY5LTEuMjguNzQuMTggMS41MS4yOCAyLjMxLjI4czEuNTctLjEgMi4zMS0uMjhjMS4wMi44IDIuMyAxLjI4IDMuNjkgMS4yOCAzLjMxIDAgNi0yLjY5IDYtNiAwLTEuNzgtLjc5LTMuMzgtMi4wMy00LjQ4ek0xMiAyMWMtNC40MSAwLTgtMy41OS04LTggMC0zLjcyIDIuNTYtNi44NSA2LTcuNzR2LjA1YzAgMy4zNCAyLjcyIDYuMDYgNi4wNiA2LjA2IDEuMjYgMCAyLjQ1LS4zOSAzLjQ1LTEuMDkuMzEuODYuNDkgMS43Ny40OSAyLjcyIDAgNC40MS0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFjZTMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuOTEgMTEuOTZDMjIuMzkgNi4zMiAxNy42NiAyIDEyIDJTMS42MSA2LjMyIDEuMDkgMTEuOTZsLS45IDkuODZjLS4xIDEuMTcuODIgMi4xOCAyIDIuMThoMTkuNjJjMS4xOCAwIDIuMS0xLjAxIDEuOTktMi4xOGwtLjg5LTkuODZ6TTQuNTQgOS4xM2MuODcuNTUgMS44OS44NyAyLjk2Ljg3IDEuODYgMCAzLjUtLjkzIDQuNS0yLjM1QzEzIDkuMDcgMTQuNjQgMTAgMTYuNSAxMGMxLjA3IDAgMi4wOS0uMzIgMi45Ni0uODcuMzQuODkuNTQgMS44Ni41NCAyLjg3IDAgNC40MS0zLjU5IDgtOCA4cy04LTMuNTktOC04YzAtMS4wMS4yLTEuOTguNTQtMi44N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFjZTQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy0uOTYgMC0xLjg4LjE0LTIuNzUuMzlBNC45ODYgNC45ODYgMCAwIDAgNSAwQzIuMjQgMCAwIDIuMjQgMCA1YzAgMS44Ljk2IDMuMzcgMi4zOSA0LjI1QzIuMTQgMTAuMTIgMiAxMS4wNCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwczEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOCAwLS4wNS4wMS0uMS4wMS0uMTUgMi42LS45OCA0LjY4LTIuOTkgNS43NC01LjU1YTkuOTQyIDkuOTQyIDAgMCAwIDkuOTIgMy40NmMuMjEuNzEuMzMgMS40Ni4zMyAyLjI0IDAgNC40MS0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFjZTUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOCAwLTEuMTIuMjMtMi4xOC42NS0zLjE1YS40OTUuNDk1IDAgMCAwIC44NS0uMzVjMC0uMjUtLjE5LS40NS0uNDMtLjQ5LjE1LS4yNi4zMi0uNTEuNDktLjc1LS4wMy4wOC0uMDYuMTUtLjA2LjI0IDAgLjI4LjIyLjUuNS41cy41LS4yMi41LS41UzYuMjggNyA2IDdjLS4xMyAwLS4yNS4wNS0uMzQuMTMuNTItLjY4IDEuMTUtMS4yOCAxLjg2LTEuNzZBLjQ5NS40OTUgMCAwIDAgOCA2YS40OTUuNDk1IDAgMCAwIC4xLS45OGMuMTYtLjA5LjMyLS4xNy40OS0uMjUuMDkuMTQuMjQuMjMuNDEuMjMuMjggMCAuNS0uMjIuNS0uNSAwLS4wMy0uMDEtLjA2LS4wMi0uMDkuMzktLjEzLjc5LS4yMyAxLjIxLS4zLS4xMS4xLS4xOS4yMy0uMTkuMzkgMCAuMjguMjIuNS41LjVzLjUtLjIyLjUtLjVhLjUxLjUxIDAgMCAwLS4zLS40NmMuMjYtLjAzLjUzLS4wNC44LS4wNHMuNTQuMDEuOC4wNGMtLjE4LjA4LS4zLjI1LS4zLjQ2IDAgLjI4LjIyLjUuNS41cy41LS4yMi41LS41YzAtLjE2LS4wOC0uMjktLjE5LS4zOC40MS4wNy44Mi4xNyAxLjIxLjMtLjAxLjAyLS4wMi4wNS0uMDIuMDggMCAuMjguMjIuNS41LjUuMTcgMCAuMzItLjA5LjQxLS4yMy4xNy4wOC4zMy4xNi40OS4yNUEuNDk1LjQ5NSAwIDAgMCAxNiA2Yy4yOCAwIC41LS4yMi41LS41IDAtLjA1LS4wMS0uMDktLjAzLS4xMy43MS40OCAxLjM0IDEuMDggMS44NiAxLjc2YS40OTUuNDk1IDAgMCAwLS44My4zN2MwIC4yOC4yMi41LjUuNXMuNS0uMjIuNS0uNWMwLS4wOS0uMDMtLjE2LS4wNy0uMjMuMTguMjQuMzQuNDkuNDkuNzUtLjIzLjAzLS40Mi4yMy0uNDIuNDhhLjQ5NS40OTUgMCAwIDAgLjg1LjM1Yy40Mi45Ny42NSAyLjAzLjY1IDMuMTUgMCA0LjQxLTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTRcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTdcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjYuNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3XCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEzXCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0XCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2XCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjhcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjguNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3XCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEzXCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE3XCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmFjZTYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHYtLjAzYzIuMzEtLjIyIDMuNDMtMS41OSA0LjM0LTMuNDEuMTctLjM1LjUxLS41Ni45LS41Nmg1LjUzYy4zOCAwIC43Mi4yMS44OS41NS45IDEuOCAxLjk5IDMuMTkgNC4zNCAzLjQxdi4wM2MwIDQuNDItMy41OSA4LjAxLTggOC4wMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZhY2Vib29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTJjMC01LjUyLTQuNDgtMTAtMTAtMTBTMiA2LjQ4IDIgMTJjMCA0Ljg0IDMuNDQgOC44NyA4IDkuOFYxNUg4di0zaDJWOS41QzEwIDcuNTcgMTEuNTcgNiAxMy41IDZIMTZ2M2gtMmMtLjU1IDAtMSAuNDUtMSAxdjJoM3YzaC0zdjYuOTVjNS4wNS0uNSA5LTQuNzYgOS05Ljk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGZW1hbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDkuNUMxNy41IDYuNDYgMTUuMDQgNCAxMiA0UzYuNSA2LjQ2IDYuNSA5LjVjMCAyLjcgMS45NCA0LjkzIDQuNSA1LjRWMTdIOXYyaDJ2Mmgydi0yaDJ2LTJoLTJ2LTIuMWMyLjU2LS40NyA0LjUtMi43IDQuNS01LjR6bS05IDBDOC41IDcuNTcgMTAuMDcgNiAxMiA2czMuNSAxLjU3IDMuNSAzLjVTMTMuOTMgMTMgMTIgMTNzLTMuNS0xLjU3LTMuNS0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZpcmVwbGFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMnYyMGgyMFYySDJ6bTkuODYgMTQuOTZjLjc2LS4yNCAxLjQtMS4wNCAxLjUzLTEuNjMuMTMtLjU2LS4xLTEuMDUtLjItMS42LS4wOC0uNDYtLjA3LS44NS4wOC0xLjI4LjU0IDEuMjEgMi4xNSAxLjY0IDEuOTggMy4xOC0uMTkgMS43LTIuMTEgMi4zOC0zLjM5IDEuMzN6TTIwIDIwaC0ydi0yaC0yLjAyQTQuOTggNC45OCAwIDAgMCAxNyAxNWMwLTEuODktMS4wOS0yLjg1LTEuODUtMy4zN0MxMi4yIDkuNjEgMTMgNyAxMyA3Yy02LjczIDMuNTctNi4wMiA3LjQ3LTYgOCAuMDMuOTYuNDkgMi4wNyAxLjIzIDNINnYySDRWNGgxNnYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRml0Yml0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuODkgMTMuODljMS4wNCAwIDEuODktLjg1IDEuODktMS44OXMtLjg1LTEuODktMS44OS0xLjg5UzE4IDEwLjk2IDE4IDEycy44NSAxLjg5IDEuODkgMS44OXptLTQuMjQtLjIxYy45MyAwIDEuNjgtLjc1IDEuNjgtMS42OHMtLjc1LTEuNjgtMS42OC0xLjY4Yy0uOTMgMC0xLjY4Ljc1LTEuNjggMS42OHMuNzUgMS42OCAxLjY4IDEuNjh6bTAtNC4yNmMuOTMgMCAxLjY4LS43NSAxLjY4LTEuNjggMC0uOTMtLjc1LTEuNjgtMS42OC0xLjY4LS45MyAwLTEuNjguNzUtMS42OCAxLjY4IDAgLjkzLjc1IDEuNjggMS42OCAxLjY4em0wIDguNTFjLjkzIDAgMS42OC0uNzUgMS42OC0xLjY4IDAtLjkzLS43NS0xLjY4LTEuNjgtMS42OC0uOTMgMC0xLjY4Ljc1LTEuNjggMS42OCAwIC45Mi43NSAxLjY4IDEuNjggMS42OHptLTQuMjQtNC40NmMuODEgMCAxLjQ3LS42NiAxLjQ3LTEuNDdzLS42Ni0xLjQ3LTEuNDctMS40N2MtLjgxIDAtMS40Ny42Ni0xLjQ3IDEuNDdzLjY1IDEuNDcgMS40NyAxLjQ3em0wLTQuMjZjLjgxIDAgMS40Ny0uNjYgMS40Ny0xLjQ3cy0uNjYtMS40Ny0xLjQ3LTEuNDdjLS44MSAwLTEuNDcuNjYtMS40NyAxLjQ3cy42NSAxLjQ3IDEuNDcgMS40N3ptMCA4LjUyYy44MSAwIDEuNDctLjY2IDEuNDctMS40NyAwLS44MS0uNjYtMS40Ny0xLjQ3LTEuNDctLjgxIDAtMS40Ny42Ni0xLjQ3IDEuNDctLjAxLjgxLjY1IDEuNDcgMS40NyAxLjQ3em0wIDQuMjdjLjgxIDAgMS40Ny0uNjYgMS40Ny0xLjQ3IDAtLjgxLS42Ni0xLjQ3LTEuNDctMS40Ny0uODEgMC0xLjQ3LjY2LTEuNDcgMS40Ny0uMDEuODEuNjUgMS40NyAxLjQ3IDEuNDd6bTAtMTcuMDZjLjgxIDAgMS40Ny0uNjYgMS40Ny0xLjQ3UzEyLjIyIDIgMTEuNDEgMmMtLjgxIDAtMS40Ny42Ni0xLjQ3IDEuNDdzLjY1IDEuNDcgMS40NyAxLjQ3em0tNC4yNSA4LjMyYy43IDAgMS4yNi0uNTcgMS4yNi0xLjI2cy0uNTctMS4yNi0xLjI2LTEuMjZhMS4yNjEgMS4yNjEgMCAwIDAgMCAyLjUyem0wIDQuMjVhMS4yNjEgMS4yNjEgMCAwIDAgMC0yLjUyIDEuMjYxIDEuMjYxIDAgMCAwIDAgMi41MnptMC04LjQ5YTEuMjYxIDEuMjYxIDAgMCAwIDAtMi41MiAxLjI2MSAxLjI2MSAwIDAgMCAwIDIuNTJ6bS0zLjg3IDQuMDNhMS4wNSAxLjA1IDAgMSAwIDAtMi4xIDEuMDUgMS4wNSAwIDAgMCAwIDIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kRmxvb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC42NyAxOWMtMS45NSAwLTIuMDkgMS0zLjMzIDEtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMSAxLTMuMzQgMS0xLjI0IDAtMS4zOC0xLTMuMzMtMS0xLjk1IDAtMi4xIDEtMy4zNCAxdjJjMS45NSAwIDIuMTEtMSAzLjM0LTEgMS4yNCAwIDEuMzggMSAzLjMzIDEgMS45NSAwIDIuMS0xIDMuMzQtMSAxLjIyIDAgMS40IDEgMy4zMyAxIDEuOTMgMCAyLjEtMSAzLjMzLTEgMS4yMiAwIDEuNCAxIDMuMzMgMXYtMmMtMS4yNCAwLTEuMzgtMS0zLjMzLTF6TTguNjggMTcuNWMxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40Ljk4IDMuMzEgMXYtMmMtLjYzIDAtMS0uMjgtMS40OC0uNTVsLTIuMDItNy41MyAyLjA5Ljg1Ljc0LTEuODZMOS43OCAyIDIgMTEuNjFsMS41NyAxLjIzIDEuMzktMS43OC45MyAzLjQ4Yy0uMTgtLjAyLS4zNS0uMDUtLjU2LS4wNS0xLjk1IDAtMi4wOSAxLTMuMzMgMXYyYzEuOSAwIDIuMTctMSAzLjM1LTEgMS4xOS4wMSAxLjQyIDEuMDEgMy4zMyAxLjAxem01LjM2LTcuMzIgMS40MiA1LjMxYy0xLjM0LjA5LTEuNDctLjk5LTMuNDctLjk5LS4zNiAwLS42NS4wNC0uOTEuMWwtLjkxLTMuMzkgMy44Ny0xLjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGb2xsb3dUaGVTaWducyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSA1LjVjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyek01Ljc1IDguOSAzIDIzaDIuMWwxLjc1LThMOSAxN3Y2aDJ2LTcuNTVMOC45NSAxMy40bC42LTNDMTAuODUgMTIgMTIuOCAxMyAxNSAxM3YtMmMtMS44NSAwLTMuNDUtMS00LjM1LTIuNDVsLS45NS0xLjZDOS4zNSA2LjM1IDguNyA2IDggNmMtLjI1IDAtLjUuMDUtLjc1LjE1TDIgOC4zVjEzaDJWOS42NWwxLjc1LS43NU0xMyAydjdoMy43NXYxNGgxLjVWOUgyMlYyaC05em01LjAxIDZWNi4yNUgxNC41di0xLjVoMy41MVYzbDIuNDkgMi41TDE4LjAxIDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEZyb250SGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljc1IDhjLS42OSAwLTEuMjUuNTYtMS4yNSAxLjI1VjE1SDE4Yy0xLjY1IDAtMyAxLjM1LTMgM2gtMWMwLTIuMDQgMS41My0zLjcyIDMuNS0zLjk3VjMuMjVhMS4yNSAxLjI1IDAgMCAwLTIuNSAwVjExaC0xVjEuMjVhMS4yNSAxLjI1IDAgMCAwLTIuNSAwVjExaC0xVjIuNzVhMS4yNSAxLjI1IDAgMCAwLTIuNSAwVjEySDdWNS43NWExLjI1IDEuMjUgMCAwIDAtMi41IDB2MTBjMCA0LjU2IDMuNjkgOC4yNSA4LjI1IDguMjVTMjEgMjAuMzEgMjEgMTUuNzV2LTYuNUMyMSA4LjU2IDIwLjQ0IDggMTkuNzUgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR2lybCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDcuNWMuOTcgMCAxLjc1LS43OCAxLjc1LTEuNzVTMTIuOTcgNCAxMiA0cy0xLjc1Ljc4LTEuNzUgMS43NVMxMS4wMyA3LjUgMTIgNy41em0yIDguNXY0aC00di00SDhsMi4zOC02LjM4YTEuNzMzIDEuNzMzIDAgMCAxIDMuMjQgMEwxNiAxNmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JvdXBBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgOVY3aC0ydjJoLTJ2MmgydjJoMnYtMmgyVjl6TTggMTJjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTQtNCAxLjc5LTQgNCAxLjc5IDQgNCA0ek04IDEzYy0yLjY3IDAtOCAxLjM0LTggNHYzaDE2di0zYzAtMi42Ni01LjMzLTQtOC00ek0xMi41MSA0LjA1QzEzLjQzIDUuMTEgMTQgNi40OSAxNCA4cy0uNTcgMi44OS0xLjQ5IDMuOTVDMTQuNDcgMTEuNyAxNiAxMC4wNCAxNiA4cy0xLjUzLTMuNy0zLjQ5LTMuOTV6TTE2LjUzIDEzLjgzQzE3LjQyIDE0LjY2IDE4IDE1LjcgMTggMTd2M2gydi0zYzAtMS40NS0xLjU5LTIuNTEtMy40Ny0zLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcm91cE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDhjMC0xLjQyLS41LTIuNzMtMS4zMy0zLjc2LjQyLS4xNC44Ni0uMjQgMS4zMy0uMjQgMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDRoLS4xOGwtLjc3LS43N2MuNi0uOTQuOTUtMi4wNS45NS0zLjIzem03LjgzIDEySDIzdi0zYzAtMi4xOC0zLjU4LTMuNDctNi4zNC0zLjg3IDEuMS43NSAxLjk1IDEuNzEgMi4yMyAyLjk0TDIyLjgzIDIwek03LjI0IDQuNDFhMy45OTYgMy45OTYgMCAwIDEgNS4zNSA1LjM1TDcuMjQgNC40MXpNOS4xNyAxMkg5Yy0yLjIxIDAtNC0xLjc5LTQtNHYtLjE3TC42OSAzLjUxIDIuMSAyLjFsMTkuOCAxOS44LTEuNDEgMS40MUwxNyAxOS44M1YyMEgxdi0zYzAtMi42NiA1LjMzLTQgOC00IC4zNyAwIC44LjAzIDEuMjUuMDhMOS4xNyAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JvdXBSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA5djJoLTZWOWg2ek04IDRDNS43OSA0IDQgNS43OSA0IDhzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgOWMtMi42NyAwLTggMS4zNC04IDR2M2gxNnYtM2MwLTIuNjYtNS4zMy00LTgtNHptNC41MS04Ljk1QzEzLjQzIDUuMTEgMTQgNi40OSAxNCA4cy0uNTcgMi44OS0xLjQ5IDMuOTVDMTQuNDcgMTEuNyAxNiAxMC4wNCAxNiA4cy0xLjUzLTMuNy0zLjQ5LTMuOTV6bTQuMDIgOS43OEMxNy40MiAxNC42NiAxOCAxNS43IDE4IDE3djNoMnYtM2MwLTEuNDUtMS41OS0yLjUxLTMuNDctMy4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMWMxLjY2IDAgMi45OS0xLjM0IDIuOTktM1MxNy42NiA1IDE2IDVjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDN6bS04IDBjMS42NiAwIDIuOTktMS4zNCAyLjk5LTNTOS42NiA1IDggNUM2LjM0IDUgNSA2LjM0IDUgOHMxLjM0IDMgMyAzem0wIDJjLTIuMzMgMC03IDEuMTctNyAzLjVWMTloMTR2LTIuNWMwLTIuMzMtNC42Ny0zLjUtNy0zLjV6bTggMGMtLjI5IDAtLjYyLjAyLS45Ny4wNSAxLjE2Ljg0IDEuOTcgMS45NyAxLjk3IDMuNDVWMTloNnYtMi41YzAtMi4zMy00LjY3LTMuNS03LTMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JvdXBzMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjI3IDEyaDMuNDZhMS41IDEuNSAwIDAgMCAxLjQ4LTEuNzVsLS4zLTEuNzlhMi45NTEgMi45NTEgMCAwIDAtNS44Mi4wMWwtLjMgMS43OWMtLjE1LjkxLjU1IDEuNzQgMS40OCAxLjc0ek0xLjY2IDExLjExYy0uMTMuMjYtLjE4LjU3LS4xLjg4LjE2LjY5Ljc2IDEuMDMgMS41MyAxaDEuOTVjLjgzIDAgMS41MS0uNTggMS41MS0xLjI5IDAtLjE0LS4wMy0uMjctLjA3LS40LS4wMS0uMDMtLjAxLS4wNS4wMS0uMDguMDktLjE2LjE0LS4zNC4xNC0uNTMgMC0uMzEtLjE0LS42LS4zNi0uODItLjAzLS4wMy0uMDMtLjA2LS4wMi0uMS4wNy0uMi4wNy0uNDMuMDEtLjY1YTEuMTIgMS4xMiAwIDAgMC0uOTktLjc0LjA5LjA5IDAgMCAxLS4wNy0uMDNDNS4wMyA4LjE0IDQuNzIgOCA0LjM3IDhjLS4zIDAtLjU3LjEtLjc1LjI2LS4wMy4wMy0uMDYuMDMtLjA5LjAyYTEuMjQgMS4yNCAwIDAgMC0xLjcgMS4wM2MwIC4wMi0uMDEuMDQtLjAzLjA2LS4yOS4yNi0uNDYuNjUtLjQxIDEuMDUuMDMuMjIuMTIuNDMuMjUuNi4wMy4wMi4wMy4wNi4wMi4wOXpNMTYuMjQgMTMuNjVjLTEuMTctLjUyLTIuNjEtLjktNC4yNC0uOS0xLjYzIDAtMy4wNy4zOS00LjI0LjlBMi45ODggMi45ODggMCAwIDAgNiAxNi4zOVYxOGgxMnYtMS42MWMwLTEuMTgtLjY4LTIuMjYtMS43Ni0yLjc0ek0xLjIyIDE0LjU4QTIuMDEgMi4wMSAwIDAgMCAwIDE2LjQzVjE4aDQuNXYtMS42MWMwLS44My4yMy0xLjYxLjYzLTIuMjktLjM3LS4wNi0uNzQtLjEtMS4xMy0uMS0uOTkgMC0xLjkzLjIxLTIuNzguNTh6TTIyLjc4IDE0LjU4QTYuOTUgNi45NSAwIDAgMCAyMCAxNGMtLjM5IDAtLjc2LjA0LTEuMTMuMS40LjY4LjYzIDEuNDYuNjMgMi4yOVYxOEgyNHYtMS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6TTIyIDExdi0uNWMwLTEuMS0uOS0yLTItMmgtMmMtLjQyIDAtLjY1LjQ4LS4zOS44MWwuNy42M2MtLjE5LjMxLS4zMS42Ny0uMzEgMS4wNiAwIDEuMS45IDIgMiAyczItLjkgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRHcm91cHMzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMjQgMTMuNjVjLTEuMTctLjUyLTIuNjEtLjktNC4yNC0uOS0xLjYzIDAtMy4wNy4zOS00LjI0LjlBMi45ODggMi45ODggMCAwIDAgNiAxNi4zOVYxOGgxMnYtMS42MWMwLTEuMTgtLjY4LTIuMjYtMS43Ni0yLjc0ek0xLjIyIDE0LjU4QTIuMDEgMi4wMSAwIDAgMCAwIDE2LjQzVjE4aDQuNXYtMS42MWMwLS44My4yMy0xLjYxLjYzLTIuMjktLjM3LS4wNi0uNzQtLjEtMS4xMy0uMS0uOTkgMC0xLjkzLjIxLTIuNzguNTh6TTIyLjc4IDE0LjU4QTYuOTUgNi45NSAwIDAgMCAyMCAxNGMtLjM5IDAtLjc2LjA0LTEuMTMuMS40LjY4LjYzIDEuNDYuNjMgMi4yOVYxOEgyNHYtMS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6TTEyIDEyYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3pNMS40OTcgMTEgNCA4LjQ5NyA2LjUwMyAxMSA0IDEzLjUwM3pNMjAgOWwtMi41IDRoNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kR3JvdXBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTIuNzVjMS42MyAwIDMuMDcuMzkgNC4yNC45IDEuMDguNDggMS43NiAxLjU2IDEuNzYgMi43M1YxOEg2di0xLjYxYzAtMS4xOC42OC0yLjI2IDEuNzYtMi43MyAxLjE3LS41MiAyLjYxLS45MSA0LjI0LS45MXpNNCAxM2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTEuMTMgMS4xYy0uMzctLjA2LS43NC0uMS0xLjEzLS4xLS45OSAwLTEuOTMuMjEtMi43OC41OEEyLjAxIDIuMDEgMCAwIDAgMCAxNi40M1YxOGg0LjV2LTEuNjFjMC0uODMuMjMtMS42MS42My0yLjI5ek0yMCAxM2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTQgMy40M2MwLS44MS0uNDgtMS41My0xLjIyLTEuODVBNi45NSA2Ljk1IDAgMCAwIDIwIDE0Yy0uMzkgMC0uNzYuMDQtMS4xMy4xLjQuNjguNjMgMS40Ni42MyAyLjI5VjE4SDI0di0xLjU3ek0xMiA2YzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGFuZHNoYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNDggMTAuNDFjLS4zOS4zOS0xLjA0LjM5LTEuNDMgMGwtNC40Ny00LjQ2LTcuMDUgNy4wNC0uNjYtLjYzYTMgMyAwIDAgMSAwLTQuMjRsNC4yNC00LjI0YTMgMyAwIDAgMSA0LjI0IDBMMTYuNDggOWMuMzkuMzkuMzkgMS4wMiAwIDEuNDF6bS43LTIuMTJjLjc4Ljc4Ljc4IDIuMDUgMCAyLjgzLTEuMjcgMS4yNy0yLjYxLjIyLTIuODMgMGwtMy43Ni0zLjc2LTUuNTcgNS41N2EuOTk2Ljk5NiAwIDAgMCAwIDEuNDFjLjM5LjM5IDEuMDIuMzkgMS40MiAwbDQuNjItNC42Mi43MS43MS00LjYyIDQuNjJhLjk5Ni45OTYgMCAwIDAgMCAxLjQxYy4zOS4zOSAxLjAyLjM5IDEuNDIgMGw0LjYyLTQuNjIuNzEuNzEtNC42MiA0LjYyYS45OTYuOTk2IDAgMSAwIDEuNDEgMS40MWw0LjYyLTQuNjIuNzEuNzEtNC42MiA0LjYyYS45OTYuOTk2IDAgMSAwIDEuNDEgMS40MWw4LjMyLTguMzRhMyAzIDAgMCAwIDAtNC4yNGwtNC4yNC00LjI0YTMuMDAxIDMuMDAxIDAgMCAwLTQuMTgtLjA2bDQuNDcgNC40N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGVhbHRoQW5kU2FmZXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNSAxM0g4di0zaDIuNVY3LjVoM1YxMEgxNnYzaC0yLjV2Mi41aC0zVjEzek0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIZWFydEJyb2tlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgM2MtLjk2IDAtMS45LjI1LTIuNzMuNjlMMTIgOWgzbC0zIDEwIDEtOWgtM2wxLjU0LTUuMzlDMTAuNDcgMy42MSA5LjAxIDMgNy41IDMgNC40MiAzIDIgNS40MiAyIDguNWMwIDQuMTMgNC4xNiA3LjE4IDEwIDEyLjUgNS40Ny00Ljk0IDEwLTguMjYgMTAtMTIuNUMyMiA1LjQyIDE5LjU4IDMgMTYuNSAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIaWtpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTQgNS4yOGMtMS4yMy0uMzctMi4yMi0xLjE3LTIuOC0yLjE4bC0xLTEuNmMtLjQxLS42NS0xLjExLTEtMS44NC0xLS43OCAwLTEuNTkuNS0xLjc4IDEuNDRTNyAyMyA3IDIzaDIuMWwxLjgtOCAyLjEgMnY2aDJ2LTcuNWwtMi4xLTIgLjYtM2MxIDEuMTUgMi40MSAyLjAxIDQgMi4zNFYyM0gxOVY5aC0xLjV2MS43OHpNNy40MyAxMy4xM2wtMi4xMi0uNDFhLjk5OS45OTkgMCAwIDEtLjc5LTEuMTdsLjc2LTMuOTNhMiAyIDAgMCAxIDIuMzQtMS41OGwxLjE2LjIzLTEuMzUgNi44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSGlzdG9yeUVkdSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNHYxLjM4Yy0uODMtLjMzLTEuNzItLjUtMi42MS0uNS0xLjc5IDAtMy41OC42OC00Ljk1IDIuMDVsMy4zMyAzLjMzaDEuMTF2MS4xMWMuODYuODYgMS45OCAxLjMxIDMuMTEgMS4zNlYxNUg2djNjMCAxLjEuOSAyIDIgMmgxMGMxLjY2IDAgMy0xLjM0IDMtM1Y0SDl6bS0xLjExIDYuNDFWOC4yNkg1LjYxTDQuNTcgNy4yMmE1LjA3IDUuMDcgMCAwIDEgMS44Mi0uMzRjMS4zNCAwIDIuNTkuNTIgMy41NCAxLjQ2bDEuNDEgMS40MS0uMi4yYTIuNyAyLjcgMCAwIDEtMS45Mi44Yy0uNDcgMC0uOTMtLjEyLTEuMzMtLjM0ek0xOSAxN2MwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMXYtMmgtNnYtMi41OWMuNTctLjIzIDEuMS0uNTcgMS41Ni0xLjAzbC4yLS4yTDE1LjU5IDE0SDE3di0xLjQxbC02LTUuOTdWNmg4djExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRIaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuNzkgOCAxLjgtMy0xLjgtM2gtMy41OGwtMS44IDMgMS44IDN6TTEwLjIxIDlsLTEuOCAzIDEuOCAzaDMuNThsMS44LTMtMS44LTN6TTE2LjQ1IDExLjUxaDMuNTlsMS43OS0zLTEuNzktM2gtMy41OWwtMS44IDN6TTIwLjA0IDEyLjUxaC0zLjU5bC0xLjggMyAxLjggM2gzLjU5bDEuNzktM3pNNy41NSAxMS41MWwxLjgtMy0xLjgtM0gzLjk2bC0xLjc5IDMgMS43OSAzek03LjU1IDEyLjUxSDMuOTZsLTEuNzkgMyAxLjc5IDNoMy41OWwxLjgtM3pNMTAuMjEgMTZsLTEuOCAzIDEuOCAzaDMuNThsMS44LTMtMS44LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEljZVNrYXRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDguNWMwLS4yOC4yMi0uNS41LS41aDIuNTJMMTEgN0g4LjVjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNUgxMVYzSDN2MTVoM3YySDJ2MmgxNmMyLjc2IDAgNS0yLjI0IDUtNWgtMmMwIDEuNjYtMS4zNCAzLTMgM2gtMnYtMmgzdi0yLjg4YzAtMi4xLTEuNTUtMy41My0zLjAzLTMuODhsLTIuNy0uNjdjLS44Ny0uMjItMS41Ny0uODEtMS45NS0xLjU3SDguNWMtLjI4IDAtLjUtLjIyLS41LS41ek0xNCAyMEg4di0yaDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kSW50ZXJlc3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4wMiAxM2MtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6TTEzIDEzdjhoOHYtOGgtOHpNNyAybC01IDloMTBMNyAyem0xMi4yNS41Yy0xLjA2IDAtMS44MS41Ni0yLjI1IDEuMTctLjQ0LS42MS0xLjE5LTEuMTctMi4yNS0xLjE3QzEzLjE5IDIuNSAxMiAzLjc4IDEyIDUuMjVjMCAyIDIuNDIgMy40MiA1IDUuNzUgMi41OC0yLjMzIDUtMy43NSA1LTUuNzUgMC0xLjQ3LTEuMTktMi43NS0yLjc1LTIuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZElvc1NoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNiA1LTEuNDIgMS40Mi0xLjU5LTEuNTlWMTZoLTEuOThWNC44M0w5LjQyIDYuNDIgOCA1bDQtNCA0IDR6bTQgNXYxMWMwIDEuMS0uOSAyLTIgMkg2YTIgMiAwIDAgMS0yLTJWMTBjMC0xLjExLjg5LTIgMi0yaDN2Mkg2djExaDEyVjEwaC0zVjhoM2EyIDIgMCAwIDEgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRLYXlha2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDIzYy0xLjAzIDAtMi4wNi0uMjUtMy0uNzUtMS44OSAxLTQuMTEgMS02IDAtMS44OSAxLTQuMTEgMS02IDAtLjk1LjUtMS45Ny43NS0zIC43NUgydi0yaDFjMS4wNCAwIDIuMDgtLjM1IDMtMSAxLjgzIDEuMyA0LjE3IDEuMyA2IDAgMS44MyAxLjMgNC4xNyAxLjMgNiAwIC45MS42NSAxLjk2IDEgMyAxaDF2MmgtMXpNMTIgNS41Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMTIgMTJzLTEuNTIuNzEtMy45MyAxLjM3Yy0uODItLjIzLTEuNTMtLjc1LTIuMDctMS4zNy0uNzMuODQtMS44IDEuNS0zIDEuNXMtMi4yNy0uNjYtMy0xLjVjLS43My44NC0xLjggMS41LTMgMS41cy0yLjI3LS42Ni0zLTEuNWMtLjU0LjYxLTEuMjUgMS4xMy0yLjA3IDEuMzdDMS41MiAxOC4yMSAwIDE3LjUgMCAxNy41czIuOTMtMS4zNiA3LjEzLTIuMDhsMS4zNS00LjE3Yy4zMS0uOTUgMS4zMi0xLjQ3IDIuMjctMS4xNi4wOS4wMy4xOS4wNy4yNy4xMWwyLjQ3IDEuMyAyLjg0LTEuNSAxLjY1LTMuNzEtLjUxLTEuMzJMMTguOCAyIDIyIDMuNDMgMjAuNjcgNi40bC0xLjMxLjUtMy43MiA4LjM0YzQuODUuNjMgOC4zNiAyLjI2IDguMzYgMi4yNnptLTguOTgtNC41NC0xLjUyLjgtMS43NS0uOTItLjcxIDIuMTdjLjMyIDAgLjY0LS4wMS45Ni0uMDEuNzEgMCAxLjQuMDMgMi4wNy4wOGwuOTUtMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2luZ0JlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTYgN2g1djNINnpNMTMgN2g1djNoLTV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEwVjdjMC0xLjEtLjktMi0yLTJINmMtMS4xIDAtMiAuOS0yIDJ2M2MtMS4xIDAtMiAuOS0yIDJ2NWgxLjMzTDQgMTloMWwuNjctMmgxMi42N2wuNjYgMmgxbC42Ny0ySDIydi01YzAtMS4xLS45LTItMi0yem0tOSAwSDZWN2g1djN6bTcgMGgtNVY3aDV2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kS2l0ZXN1cmZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDNjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptMTQuMDYtMmgtMi4xMkwxNS41IDMuNDRsMS4wNiAxLjA2IDMuNS0zLjV6TTIyIDIzdi0yaC0xYy0xLjA0IDAtMi4wOC0uMzUtMy0xLTEuODMgMS4zLTQuMTcgMS4zLTYgMC0xLjgzIDEuMy00LjE3IDEuMy02IDAtLjkxLjY1LTEuOTYgMS0zIDFIMnYyaDFjMS4wMyAwIDIuMDUtLjI1IDMtLjc1IDEuODkgMSA0LjExIDEgNiAwIDEuODkgMSA0LjExIDEgNiAwIC45NS41IDEuOTcuNzUgMyAuNzVoMXptLTEtOS43MmMwIDEuNDQtMi4xOSAzLjYyLTUuMDQgNS41OC0uMzEuMDktLjYzLjE0LS45Ni4xNC0xLjIgMC0yLjI3LS42Ni0zLTEuNS0uNzMuODQtMS44IDEuNS0zIDEuNS0uOTQgMC0xLjgxLS40MS0yLjQ5LS45OS40Ni0uMzkuOTYtLjc4IDEuNDktMS4xN2wtMS41NS0yLjk3QTQuMDYgNC4wNiAwIDAgMSA2IDEyVjhjMC0xLjEuOS0yIDItMmgzYzEuMzggMCAyLjYzLS41NiAzLjU0LTEuNDZsMS40MSAxLjQxQTcuMDE4IDcuMDE4IDAgMCAxIDExIDhIOS42djMuNWgyLjhsMS42OSAxLjg4YzEuOTUtLjg0IDMuNzctMS4zOCA1LjA2LTEuMzguODQgMCAxLjg1LjI1IDEuODUgMS4yOHptLTguOC45OS0uNy0uNzctMi41LjEuODMgMi4wMWMuNTktLjM4IDEuODEtMS4wNiAyLjM3LTEuMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZExhbmRzbGlkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjQ3IDEzLjc5LTIuNTgtMS4wM0w2IDE1LjA1bC00LTEuNTR2Mi4xbDQgMS4zNHpNMTAuNTcgMTEuNDIgOCA4SDJ2My42MWw0IDEuMzR6TTYgMTkuMDVsLTQtMS4zM1YyMmgyMGwtNC45Ny02LjYyek0xNyA2VjFsLTUtMS0zIDJ2NGwzIDJ6TTE4LjUgNyAxNiA5djNsMi41IDIgNC41LTJWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTG9jYXRpb25DaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTFWNWwtMy0zLTMgM3YySDN2MTRoMThWMTFoLTZ6bS04IDhINXYtMmgydjJ6bTAtNEg1di0yaDJ2MnptMC00SDVWOWgydjJ6bTYgOGgtMnYtMmgydjJ6bTAtNGgtMnYtMmgydjJ6bTAtNGgtMlY5aDJ2MnptMC00aC0yVjVoMnYyem02IDEyaC0ydi0yaDJ2MnptMC00aC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTHVnZ2FnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDZoLTJWM2MwLS41NS0uNDUtMS0xLTFoLTRjLS41NSAwLTEgLjQ1LTEgMXYzSDdjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDIgMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xaDZjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xYzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6TTkuNSAxOEg4VjloMS41djl6bTMuMjUgMGgtMS41VjloMS41djl6bS43NS0xMmgtM1YzLjVoM1Y2ek0xNiAxOGgtMS41VjlIMTZ2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSAxMWMxLjkzIDAgMy41IDEuNTcgMy41IDMuNVMxMS40MyAxOCA5LjUgMTggNiAxNi40MyA2IDE0LjUgNy41NyAxMSA5LjUgMTF6bTAtMkM2LjQ2IDkgNCAxMS40NiA0IDE0LjVTNi40NiAyMCA5LjUgMjBzNS41LTIuNDYgNS41LTUuNWMwLTEuMTYtLjM2LTIuMjMtLjk3LTMuMTJMMTggNy40MlYxMGgyVjRoLTZ2MmgyLjU4bC0zLjk3IDMuOTdDMTEuNzMgOS4zNiAxMC42NiA5IDkuNSA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYW4yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgN2gtNGMtMS4xIDAtMiAuOS0yIDJ2NmgyLjV2N2gzdi03SDE2VjljMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hbjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA3aC00Yy0xLjEgMC0yIC45LTIgMnY2aDJ2N2g0di03aDJWOWMwLTEuMS0uOS0yLTItMnpNMTIgMS43NTEgMTQuMjQ4IDQgMTIgNi4yNDggOS43NSA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNYW40IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNzUgN2gtMy41QzkuMDQgNyA4LjExIDguMDcgOC4yNyA5LjI2TDEwIDIyaDRsMS43My0xMi43NEMxNS44OSA4LjA3IDE0Ljk2IDcgMTMuNzUgN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgN2gtNGMtMS4xIDAtMiAuOS0yIDJ2NmgydjdoNHYtN2gyVjljMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE1hc2tzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNSA2Yy0xLjMxIDAtMi4zNyAxLjAxLTIuNDggMi4zLTEuODgtLjUtMi44NC0xLjgtNS4wMi0xLjgtMi4xOSAwLTMuMTQgMS4zLTUuMDIgMS44QzYuODcgNy4wMiA1LjgxIDYgNC41IDZBMi41IDIuNSAwIDAgMCAyIDguNVY5YzAgNiAzLjYgNy44MSA2LjUyIDcuOThDOS41MyAxNy42MiAxMC43MiAxOCAxMiAxOHMyLjQ3LS4zOCAzLjQ4LTEuMDJDMTguNCAxNi44MSAyMiAxNSAyMiA5di0uNUEyLjUgMi41IDAgMCAwIDE5LjUgNnptLTE2IDN2LS41YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYzYzAgMS4yOC4zOCAyLjQ3IDEuMDEgMy40OEM0Ljk5IDE0LjI3IDMuNSAxMi42NSAzLjUgOXptMTcgMGMwIDMuNjUtMS40OSA1LjI3LTMuMDEgNS45OC42NC0xLjAxIDEuMDEtMi4yIDEuMDEtMy40OHYtM2MwLS41NS40NS0xIDEtMXMxIC40NSAxIDFWOXptLTkuODEgMS40OGMtLjQ0LjI2LS45Ni41Ni0xLjY5Ljc2VjEwLjJjLjQ4LS4xNy44NC0uMzggMS4xOC0uNThDMTAuNzIgOS4zIDExLjIzIDkgMTIgOXMxLjI3LjMgMS44LjYyYy4zNC4yLjcxLjQyIDEuMi41OXYxLjA0Yy0uNzUtLjIxLTEuMjYtLjUxLTEuNzEtLjc4LS40Ni0uMjctLjgtLjQ3LTEuMjktLjQ3cy0uODQuMi0xLjMxLjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNaWxpdGFyeVRlY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMC40M1YySDd2OC40M2MwIC4zNS4xOC42OC40OS44Nmw0LjE4IDIuNTEtLjk5IDIuMzQtMy40MS4yOSAyLjU5IDIuMjRMOS4wNyAyMiAxMiAyMC4yMyAxNC45MyAyMmwtLjc4LTMuMzMgMi41OS0yLjI0LTMuNDEtLjI5LS45OS0yLjM0IDQuMTgtMi41MWMuMy0uMTguNDgtLjUuNDgtLjg2em0tNCAxLjgtMSAuNi0xLS42VjNoMnY5LjIzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb29kQmFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTMuNS05Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNXMuNjcgMS41IDEuNSAxLjV6bS03IDBjLjgzIDAgMS41LS42NyAxLjUtMS41UzkuMzMgOCA4LjUgOCA3IDguNjcgNyA5LjUgNy42NyAxMSA4LjUgMTF6bTMuNSAzYy0yLjMzIDAtNC4zMSAxLjQ2LTUuMTEgMy41aDEwLjIyYy0uOC0yLjA0LTIuNzgtMy41LTUuMTEtMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRNb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0zLjUtOWMuODMgMCAxLjUtLjY3IDEuNS0xLjVTMTYuMzMgOCAxNS41IDggMTQgOC42NyAxNCA5LjVzLjY3IDEuNSAxLjUgMS41em0tNyAwYy44MyAwIDEuNS0uNjcgMS41LTEuNVM5LjMzIDggOC41IDggNyA4LjY3IDcgOS41IDcuNjcgMTEgOC41IDExem0zLjUgNi41YzIuMzMgMCA0LjMxLTEuNDYgNS4xMS0zLjVINi44OWMuOCAyLjA0IDIuNzggMy41IDUuMTEgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROaWdodHNTdGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMSAxMi4wOGMtMi4zMy00LjUxLS41LTguNDguNTMtMTAuMDdDNi4yNyAyLjIgMS45OCA2LjU5IDEuOTggMTJjMCAuMTQuMDIuMjguMDIuNDIuNjItLjI3IDEuMjktLjQyIDItLjQyIDEuNjYgMCAzLjE4LjgzIDQuMSAyLjE1QTQuMDEgNC4wMSAwIDAgMSAxMSAxOGMwIDEuNTItLjg3IDIuODMtMi4xMiAzLjUxLjk4LjMyIDIuMDMuNSAzLjExLjUgMy41IDAgNi41OC0xLjggOC4zNy00LjUyLTIuMzYuMjMtNi45OC0uOTctOS4yNi01LjQxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE2aC0uMThDNi40IDE0Ljg0IDUuMyAxNCA0IDE0Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzaDNjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb0FkdWx0Q29udGVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTQgMTJjMC0xLjg1LjYzLTMuNTQgMS42OS00LjlMNy41OSA5aDIuODNMNy4xIDUuNjlBNy45MjQgNy45MjQgMCAwIDEgMTIgNGM0LjQxIDAgOCAzLjU5IDggOCAwIDEuODUtLjYzIDMuNTQtMS42OSA0LjlsLTEuOS0xLjloLTIuODNsMy4zMSAzLjMxQTcuODc0IDcuODc0IDAgMCAxIDEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuMjUgMTQtMS41LTIgMS41LTJoLTEuNUwxMiAxMWwtLjc1LTFoLTEuNWwxLjUgMi0xLjUgMmgxLjVsLjc1LTEgLjc1IDF6TTggMTBsLS43NSAxLS43NS0xSDVsMS41IDJMNSAxNGgxLjVsLjc1LTFMOCAxNGgxLjVMOCAxMmwxLjUtMnpNMTYgMTRsLjc1LTEgLjc1IDFIMTlsLTEuNS0yIDEuNS0yaC0xLjVsLS43NSAxLS43NS0xaC0xLjVsMS41IDItMS41IDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE5vTHVnZ2FnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjc1IDl2LjkybDEuNzUgMS43NVY5SDE2djQuMTdsMyAzVjhjMC0xLjEtLjktMi0yLTJoLTJWM2MwLS41NS0uNDUtMS0xLTFoLTRjLS41NSAwLTEgLjQ1LTEgMXYzaC0uMTdsMyAzaC45MnpNMTAuNSAzLjVoM1Y2aC0zVjMuNXptMTAuNjkgMTcuNjlMMi44MSAyLjgxIDEuMzkgNC4yMmwzLjYzIDMuNjNjMCAuMDUtLjAyLjEtLjAyLjE1djExYzAgMS4xLjkgMiAyIDIgMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xaDZjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xYy4zNCAwIC42NS0uMDkuOTMtLjI0bDEuODUgMS44NSAxLjQxLTEuNDJ6TTggMTh2LTcuMTdsMS41IDEuNVYxOEg4em00Ljc1IDBoLTEuNXYtMy45MmwxLjUgMS41VjE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3JkaWNXYWxraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMjNoLTEuNXYtOUgxOXY5ek03LjUzIDE0SDZsLTIgOWgxLjUzbDItOXptNS45Ny04LjVjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyek05LjggOC45IDcgMjNoMi4xbDEuOC04IDIuMSAydjZoMnYtNy41bC0yLjEtMiAuNi0zQzE0LjggMTIgMTYuOCAxMyAxOSAxM3YtMmMtMS45IDAtMy41LTEtNC4zLTIuNGwtMS0xLjZhMi4xNDUgMi4xNDUgMCAwIDAtMi42NS0uODRMNiA4LjNWMTNoMlY5LjZsMS44LS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RpZmljYXRpb25BZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAyMGg0YzAgMS4xLS45IDItMiAycy0yLS45LTItMnptNC0xMWMwIDIuNjEgMS42NyA0LjgzIDQgNS42NlYxN2gydjJINHYtMmgydi03YzAtMi43OSAxLjkxLTUuMTQgNC41LTUuOHYtLjdjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjV2LjdjLjcxLjE4IDEuMzYuNDkgMS45NS45QTUuOTAyIDUuOTAyIDAgMCAwIDE0IDl6bTEwLTFoLTNWNWgtMnYzaC0zdjJoM3YzaDJ2LTNoM1Y4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RpZmljYXRpb25zQWN0aXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41OCA0LjA4IDYuMTUgMi42NUMzLjc1IDQuNDggMi4xNyA3LjMgMi4wMyAxMC41aDJhOC40NDUgOC40NDUgMCAwIDEgMy41NS02LjQyem0xMi4zOSA2LjQyaDJjLS4xNS0zLjItMS43My02LjAyLTQuMTItNy44NWwtMS40MiAxLjQzYTguNDk1IDguNDk1IDAgMCAxIDMuNTQgNi40MnpNMTggMTFjMC0zLjA3LTEuNjQtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4QzcuNjMgNS4zNiA2IDcuOTIgNiAxMXY1bC0yIDJ2MWgxNnYtMWwtMi0ydi01em0tNiAxMWMuMTQgMCAuMjctLjAxLjQtLjA0LjY1LS4xNCAxLjE4LS41OCAxLjQ0LTEuMTguMS0uMjQuMTUtLjUuMTUtLjc4aC00Yy4wMSAxLjEuOSAyIDIuMDEgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kTm90aWZpY2F0aW9uc05vbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMmMxLjEgMCAyLS45IDItMmgtNGMwIDEuMS45IDIgMiAyem02LTZ2LTVjMC0zLjA3LTEuNjMtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4QzcuNjQgNS4zNiA2IDcuOTIgNiAxMXY1bC0yIDJ2MWgxNnYtMWwtMi0yem0tMiAxSDh2LTZjMC0yLjQ4IDEuNTEtNC41IDQtNC41czQgMi4wMiA0IDQuNXY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RpZmljYXRpb25zT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTguNjkgNy44NCA2LjE0IDUuMjcgMy40OSA0IDQuNzZsMi44IDIuOHYuMDFjLS41Mi45OS0uOCAyLjE2LS44IDMuNDJ2NWwtMiAydjFoMTMuNzNsMiAyTDIxIDE5LjcybC0xLTEuMDN6TTEyIDIyYzEuMTEgMCAyLS44OSAyLTJoLTRjMCAxLjExLjg5IDIgMiAyem02LTcuMzJWMTFjMC0zLjA4LTEuNjQtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4Yy0uMTUuMDMtLjI5LjA4LS40Mi4xMi0uMS4wMy0uMi4wNy0uMy4xMWgtLjAxYy0uMDEgMC0uMDEgMC0uMDIuMDEtLjIzLjA5LS40Ni4yLS42OC4zMSAwIDAtLjAxIDAtLjAxLjAxTDE4IDE0LjY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RpZmljYXRpb25zUGF1c2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJjMS4xIDAgMi0uOSAyLTJoLTRhMiAyIDAgMCAwIDIgMnptNi02di01YzAtMy4wNy0xLjY0LTUuNjQtNC41LTYuMzJWNGMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41di42OEM3LjYzIDUuMzYgNiA3LjkzIDYgMTF2NWwtMiAydjFoMTZ2LTFsLTItMnptLTMuNS02LjItMi44IDMuNGgyLjhWMTVoLTV2LTEuOGwyLjgtMy40SDkuNVY4aDV2MS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWROb3RpZmljYXRpb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMmMxLjEgMCAyLS45IDItMmgtNGEyIDIgMCAwIDAgMiAyem02LTZ2LTVjMC0zLjA3LTEuNjQtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4QzcuNjMgNS4zNiA2IDcuOTIgNiAxMXY1bC0yIDJ2MWgxNnYtMWwtMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRkb29yR3JpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAyMmMxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtM2MtMS4zIDAtMi40Ljg0LTIuODIgMkg5LjE0bDEuOTktMy4wNmE2LjM2IDYuMzYgMCAwIDAgMS43NCAwbDEuMDIgMS41N2MuNDItLjUzLjk2LS45NSAxLjYtMS4yMWwtLjYtLjkzQTYuOTkyIDYuOTkyIDAgMCAwIDE5IDhINWMwIDIuODQgMS42OSA1LjI3IDQuMTIgNi4zN2wtMy45NSA2LjA4YTEgMSAwIDAgMCAuMjkgMS4zOCAxIDEgMCAwIDAgMS4zOC0uMjlsMS0xLjU1aDYuMzRDMTQuNiAyMS4xNiAxNS43IDIyIDE3IDIyem0wLTRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXpNOS40MSA3aDFjLjE1LTEuMTUuMjMtMS42NC0uODktMi45Ni0uNDItLjUtLjY4LS43Ny0uNDYtMi4wNGgtLjk5Yy0uMjEgMS4xMS4wMyAyLjA1Ljg5IDIuOTYuMjIuMjQuNzkuNjcuNDUgMi4wNHpNMTEuODkgN2gxYy4xNS0xLjE1LjIzLTEuNjQtLjg5LTIuOTYtLjQyLS41LS42OC0uNzgtLjQ2LTIuMDRoLS45OWMtLjIxIDEuMTEuMDMgMi4wNS44OSAyLjk2LjIzLjI0LjguNjcuNDUgMi4wNHpNMTQuNDEgN2gxYy4xNS0xLjE1LjIzLTEuNjQtLjg5LTIuOTYtLjQyLS41LS42OC0uNzctLjQ2LTIuMDRoLS45OWMtLjIxIDEuMTEuMDMgMi4wNS44OSAyLjk2LjIyLjI0Ljc5LjY3LjQ1IDIuMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBhZ2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1djZoNUw3IDdsNCAxVjNINWMtMS4xIDAtMiAuOS0yIDJ6bTUgOEgzdjZjMCAxLjEuOSAyIDIgMmg2di01bC00IDEgMS00em05IDQtNC0xdjVoNmMxLjEgMCAyLS45IDItMnYtNmgtNWwxIDR6bTItMTRoLTZ2NWw0LTEtMSA0aDVWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGFyYWdsaWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxN2MtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bS0zLjQ4Ljk0QzguMDQgMTcuNTUgNyAxNi43NiA3IDE0SDVjMCAyLjcuOTMgNC40MSAyLjMgNS41LjUuNCAxLjEuNyAxLjcuOVYyNGg2di0zLjZjLjYtLjIgMS4yLS41IDEuNy0uOSAxLjM3LTEuMDkgMi4zLTIuOCAyLjMtNS41aC0yYzAgMi43Ni0xLjA0IDMuNTUtMS41MiAzLjk0QzE0LjY4IDE4LjU0IDE0IDE5IDEyIDE5cy0yLjY4LS40Ni0zLjQ4LTEuMDZ6TTEyIDBDNS45MiAwIDEgMS45IDEgNC4yNXYzLjQ5YzAgLjgxLjg4IDEuMjYgMS41Ni44My4xNC0uMDkuMjgtLjE4LjQ0LS4yNkw1IDEzaDJsMS41LTYuMjhhMjcuODUyIDI3Ljg1MiAwIDAgMSA3IDBMMTcgMTNoMmwyLTQuNjljLjE2LjA5LjMuMTcuNDQuMjYuNjguNDMgMS41Ni0uMDIgMS41Ni0uODNWNC4yNUMyMyAxLjkgMTguMDggMCAxMiAwek01Ljg4IDExLjI0IDQuMzcgNy42OWMuNzUtLjI4IDEuNi0uNTIgMi41My0uNzFsLTEuMDIgNC4yNnptMTIuMjQgMEwxNy4xIDYuOThjLjkzLjE5IDEuNzguNDMgMi41My43MWwtMS41MSAzLjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQYXJ0eU1vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0aC0zLjE3TDE1IDJIOUw3LjE3IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tOCAzYzEuNjMgMCAzLjA2Ljc5IDMuOTggMkgxMmMtMS42NiAwLTMgMS4zNC0zIDMgMCAuMzUuMDcuNjkuMTggMUg3LjFBNS4wMDIgNS4wMDIgMCAwIDEgMTIgN3ptMCAxMGMtMS42MyAwLTMuMDYtLjc5LTMuOTgtMkgxMmMxLjY2IDAgMy0xLjM0IDMtMyAwLS4zNS0uMDctLjY5LS4xOC0xaDIuMDhhNS4wMDIgNS4wMDIgMCAwIDEtNC45IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlb3BsZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNi42NyAxMy4xM0MxOC4wNCAxNC4wNiAxOSAxNS4zMiAxOSAxN3YzaDR2LTNjMC0yLjE4LTMuNTctMy40Ny02LjMzLTMuODd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjhcIixcInJcIjpcIjRcIixcImZpbGxSdWxlXCI6XCJldmVub2RkXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNSAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNGMtLjQ3IDAtLjkxLjEtMS4zMy4yNGE1Ljk4IDUuOTggMCAwIDEgMCA3LjUyYy40Mi4xNC44Ni4yNCAxLjMzLjI0ek05IDEzYy0yLjY3IDAtOCAxLjM0LTggNHYzaDE2di0zYzAtMi42Ni01LjMzLTQtOC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZW9wbGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAxM2MtMS4yIDAtMy4wNy4zNC00LjUgMS0xLjQzLS42Ny0zLjMtMS00LjUtMUM1LjMzIDEzIDEgMTQuMDggMSAxNi4yNVYxOWgyMnYtMi43NWMwLTIuMTctNC4zMy0zLjI1LTYuNS0zLjI1em0tNCA0LjVoLTEwdi0xLjI1YzAtLjU0IDIuNTYtMS43NSA1LTEuNzVzNSAxLjIxIDUgMS43NXYxLjI1em05IDBIMTR2LTEuMjVjMC0uNDYtLjItLjg2LS41Mi0xLjIyLjg4LS4zIDEuOTYtLjUzIDMuMDItLjUzIDIuNDQgMCA1IDEuMjEgNSAxLjc1djEuMjV6TTcuNSAxMmMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVM5LjQzIDUgNy41IDUgNCA2LjU3IDQgOC41IDUuNTcgMTIgNy41IDEyem0wLTUuNWMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTkgNS41YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzE4LjQzIDUgMTYuNSA1IDEzIDYuNTcgMTMgOC41czEuNTcgMy41IDMuNSAzLjV6bTAtNS41YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVvcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTFjMS42NiAwIDIuOTktMS4zNCAyLjk5LTNTMTcuNjYgNSAxNiA1Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzem0tOCAwYzEuNjYgMCAyLjk5LTEuMzQgMi45OS0zUzkuNjYgNSA4IDVDNi4zNCA1IDUgNi4zNCA1IDhzMS4zNCAzIDMgM3ptMCAyYy0yLjMzIDAtNyAxLjE3LTcgMy41VjE5aDE0di0yLjVjMC0yLjMzLTQuNjctMy41LTctMy41em04IDBjLS4yOSAwLS42Mi4wMi0uOTcuMDUgMS4xNi44NCAxLjk3IDEuOTcgMS45NyAzLjQ1VjE5aDZ2LTIuNWMwLTIuMzMtNC42Ny0zLjUtNy0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBlcnNvbjIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4zOSAxNC41NkMxNi43MSAxMy43IDE0LjUzIDEzIDEyIDEzcy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA0IDE3LjIyVjIwaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTkuNzggMTJoNC40NGMxLjIxIDAgMi4xNC0xLjA2IDEuOTgtMi4yNmwtLjMyLTIuNDVDMTUuNTcgNS4zOSAxMy45MiA0IDEyIDRTOC40MyA1LjM5IDguMTIgNy4yOUw3LjggOS43NGMtLjE2IDEuMi43NyAyLjI2IDEuOTggMi4yNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjM5IDE0LjU2QzE2LjcxIDEzLjcgMTQuNTMgMTMgMTIgMTNzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDQgMTcuMjJWMjBoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpNMTAgMTJoNGMxLjY2IDAgMy0xLjM0IDMtMyAwLS43My0uMjctMS40LS43MS0xLjkyLjEzLS4zMy4yMS0uNy4yMS0xLjA4YTMgMyAwIDAgMC0xLjg2LTIuNzdDMTQgMi40OCAxMy4wNiAyIDEyIDJzLTIgLjQ4LTIuNjQgMS4yM0EzIDMgMCAwIDAgNy41IDZjMCAuMzguMDguNzUuMjEgMS4wOEM3LjI3IDcuNiA3IDguMjcgNyA5YzAgMS42NiAxLjM0IDMgMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb240IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMzkgMTQuNTZDMTYuNzEgMTMuNyAxNC41MyAxMyAxMiAxM3MtNC43MS43LTYuMzkgMS41NkEyLjk3IDIuOTcgMCAwIDAgNCAxNy4yMlYyMGgxNnYtMi43OGMwLTEuMTItLjYxLTIuMTUtMS42MS0yLjY2ek0xMiAxMmMyLjIxIDAgNC0xLjc5IDQtNFY0LjVjMC0uODMtLjY3LTEuNS0xLjUtMS41LS41MiAwLS45OC4yNy0xLjI1LjY3LS4yNy0uNC0uNzMtLjY3LTEuMjUtLjY3cy0uOTguMjctMS4yNS42N2MtLjI3LS40LS43My0uNjctMS4yNS0uNjdDOC42NyAzIDggMy42NyA4IDQuNVY4YzAgMi4yMSAxLjc5IDQgNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb25BZGRBbHQxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOGMwLTIuMjEtMS43OS00LTQtNFM1IDUuNzkgNSA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptMiAydjJoM3YzaDJ2LTNoM3YtMmgtM1Y3aC0ydjNoLTN6TTEgMTh2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHMtOCAxLjM0LTggNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uQWRkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOGMwLTIuMjEtMS43OS00LTQtNFM1IDUuNzkgNSA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptLTIgMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6TTEgMTh2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHMtOCAxLjM0LTggNHptMiAwYy4yLS43MSAzLjMtMiA2LTIgMi42OSAwIDUuNzggMS4yOCA2IDJIM3ptMTctM3YtM2gzdi0yaC0zVjdoLTJ2M2gtM3YyaDN2M2gyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb25BZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bS05LTJWN0g0djNIMXYyaDN2M2gydi0zaDN2LTJINnptOSA0Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb25PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjY1IDUuODJhMy45OTkgMy45OTkgMCAxIDEgNS41MyA1LjUzTDguNjUgNS44MnpNMjAgMTcuMTdjLS4wMi0xLjEtLjYzLTIuMTEtMS42MS0yLjYyLS41NC0uMjgtMS4xMy0uNTQtMS43Ny0uNzZMMjAgMTcuMTd6bTEuMTkgNC4wMkwyLjgxIDIuODEgMS4zOSA0LjIybDguODkgOC44OWMtMS44MS4yMy0zLjM5Ljc5LTQuNjcgMS40NUEyLjk3IDIuOTcgMCAwIDAgNCAxNy4yMlYyMGgxMy4xN2wyLjYxIDIuNjEgMS40MS0xLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb25PdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNS45YTIuMSAyLjEgMCAxIDEgMCA0LjIgMi4xIDIuMSAwIDAgMSAwLTQuMm0wIDljMi45NyAwIDYuMSAxLjQ2IDYuMSAyLjF2MS4xSDUuOVYxN2MwLS42NCAzLjEzLTIuMSA2LjEtMi4xTTEyIDRDOS43OSA0IDggNS43OSA4IDhzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgOWMtMi42NyAwLTggMS4zNC04IDR2M2gxNnYtM2MwLTIuNjYtNS4zMy00LTgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uUmVtb3ZlQWx0MSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDhjMC0yLjIxLTEuNzktNC00LTRTNiA1Ljc5IDYgOHMxLjc5IDQgNCA0IDQtMS43OSA0LTR6bTMgMnYyaDZ2LTJoLTZ6TTIgMTh2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHMtOCAxLjM0LTggNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uUmVtb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOGMwLTIuMjEtMS43OS00LTQtNFM2IDUuNzkgNiA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptMyAydjJoNnYtMmgtNnpNMiAxOHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00cy04IDEuMzQtOCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQZXJzb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAgMmMtMi42NyAwLTggMS4zNC04IDR2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGVyc29uYWxJbmp1cnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDZjMC0yLjIxIDEuNzktNCA0LTRzNCAxLjc5IDQgNC0xLjc5IDQtNCA0LTQtMS43OS00LTR6bTkgMTZoMWMxLjEgMCAyLS45IDItMnYtNC43OGMwLTEuMTItLjYxLTIuMTUtMS42MS0yLjY2LS40My0uMjItLjktLjQzLTEuMzktLjYyVjIyem0tNC42Ni01TDE1IDExLjMzYy0uOTMtLjIxLTEuOTMtLjMzLTMtLjMzLTIuNTMgMC00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA0IDE1LjIyVjIyaDIuMzRjLS4yMi0uNDUtLjM0LS45Ni0uMzQtMS41QzYgMTguNTcgNy41NyAxNyA5LjUgMTdoMi44NHpNMTAgMjJsMS40MS0zSDkuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVTOC42NyAyMiA5LjUgMjJoLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBpYW5vT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMTkgMjEuMTkgMi44MSAyLjgxIDEuMzkgNC4yMiAzIDUuODNWMTljMCAxLjEuOSAyIDIgMmgxMy4xN2wxLjYxIDEuNjEgMS40MS0xLjQyek04LjI1IDE5SDVWNy44M2wyIDJ2My42N2MwIC41NS40NSAxIDEgMWguMjVWMTl6bTEuNSAwdi00LjVIMTBjLjQ2IDAgLjgyLS4zMS45NC0uNzNsMy4zMSAzLjMxVjE5aC00LjV6TTExIDguMTcgNS44MyAzSDE5YzEuMSAwIDIgLjkgMiAydjEzLjE3bC0yLTJWNWgtMnY4LjVjMCAuMTktLjA3LjM2LS4xNi41MUwxMyAxMC4xN1Y1aC0ydjMuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFBpYW5vIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS01IDExLjVoLjI1VjE5aC00LjV2LTQuNUgxMGMuNTUgMCAxLS40NSAxLTFWNWgydjguNWMwIC41NS40NSAxIDEgMXpNNSA1aDJ2OC41YzAgLjU1LjQ1IDEgMSAxaC4yNVYxOUg1VjV6bTE0IDE0aC0zLjI1di00LjVIMTZjLjU1IDAgMS0uNDUgMS0xVjVoMnYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGl4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuNDUgMTYuNTItMy4wMS0zLjAxYy0uMTEtLjExLS4yNC0uMTMtLjMxLS4xM3MtLjIuMDItLjMxLjEzTDguOCAxNi41M2MtLjM0LjM0LS44Ny44OS0yLjY0Ljg5bDMuNzEgMy43YTMgMyAwIDAgMCA0LjI0IDBsMy43Mi0zLjcxYy0uOTEgMC0xLjY3LS4xOC0yLjM4LS44OXpNOC44IDcuNDdsMy4wMiAzLjAyYy4wOC4wOC4yLjEzLjMxLjEzcy4yMy0uMDUuMzEtLjEzbDIuOTktMi45OWMuNzEtLjc0IDEuNTItLjkxIDIuNDMtLjkxbC0zLjcyLTMuNzFhMyAzIDAgMCAwLTQuMjQgMGwtMy43MSAzLjdjMS43NiAwIDIuMy41OCAyLjYxLjg5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS4xMSA5Ljg1LTIuMjUtMi4yNkgxNy42Yy0uNTQgMC0xLjA4LjIyLTEuNDUuNjFsLTMgM2MtLjI4LjI4LS42NS40Mi0xLjAyLjQyYTEuNSAxLjUgMCAwIDEtMS4wMi0uNDJMOC4wOSA4LjE3Yy0uMzgtLjM4LS45LS42LTEuNDUtLjZINS4xN2wtMi4yOSAyLjNhMyAzIDAgMCAwIDAgNC4yNGwyLjI5IDIuM2gxLjQ4Yy41NCAwIDEuMDYtLjIyIDEuNDUtLjZsMy4wMi0zLjAyYy4yOC0uMjguNjUtLjQyIDEuMDItLjQycy43NC4xNCAxLjAyLjQybDMuMDEgMy4wMWMuMzguMzguOS42IDEuNDUuNmgxLjI2bDIuMjUtMi4yNmEzLjA0MiAzLjA0MiAwIDAgMC0uMDItNC4yOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUGx1c09uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDhIOHY0SDR2Mmg0djRoMnYtNGg0di0yaC00em00LjUtMS45MlY3LjlsMi41LS41VjE4aDJWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUG9sbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQcmVjaXNpb25NYW51ZmFjdHVyaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkuOTMgOC4yMS0zLjYgMS42OEwxNCA3LjdWNi4zbDIuMzMtMi4xOSAzLjYgMS42OGMuMzguMTguODIuMDEgMS0uMzYuMTgtLjM4LjAxLS44Mi0uMzYtMUwxNi42NSAyLjZhLjk5My45OTMgMCAwIDAtMS4xMy4ybC0xLjc0IDEuNkEuOTc1Ljk3NSAwIDAgMCAxMyA0Yy0uNTUgMC0xIC40NS0xIDF2MUg4LjgyQzguMzQgNC42NSA2Ljk4IDMuNzMgNS40IDQuMDdjLTEuMTYuMjUtMi4xNSAxLjI1LTIuMzYgMi40My0uMjIgMS4zMi40NiAyLjQ3IDEuNDggMy4wOEw3LjA4IDE4SDR2M2gxM3YtM2gtMy42Mkw4LjQxIDguNzdjLjE3LS4yNC4zMS0uNDkuNDEtLjc3SDEydjFjMCAuNTUuNDUgMSAxIDEgLjMyIDAgLjYtLjE2Ljc4LS40bDEuNzQgMS42Yy4zLjMuNzUuMzggMS4xMy4ybDMuOTItMS44M2MuMzgtLjE4LjU0LS42Mi4zNi0xYS43NTMuNzUzIDAgMCAwLTEtLjM2ek02IDhjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHN5Y2hvbG9neUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljk0IDkuMDZDMTkuNSA1LjczIDE2LjU3IDMgMTMgMyA5LjQ3IDMgNi41NyA1LjYxIDYuMDggOWwtMS45MyAzLjQ4Yy0uNDEuNjYuMDcgMS41Mi44NSAxLjUyaDF2MmMwIDEuMS45IDIgMiAyaDF2M2g3di00LjY4YTcuMDE2IDcuMDE2IDAgMCAwIDMuOTQtNy4yNnpNMTIuNSAxNGMtLjQxIDAtLjc0LS4zMy0uNzQtLjc0cy4zMy0uNzMuNzQtLjczLjczLjMyLjczLjczLS4zMS43NC0uNzMuNzR6bTEuNzYtNC4zMmMtLjQ0LjY1LS44Ni44NS0xLjA5IDEuMjctLjA5LjE3LS4xMy4yOC0uMTMuODJoLTEuMDZjMC0uMjktLjA0LS43NS4xOC0xLjE2LjI4LS41MS44My0uODEgMS4xNC0xLjI2LjMzLS40Ny4xNS0xLjM2LS44LTEuMzYtLjYyIDAtLjkyLjQ3LTEuMDUuODZsLS45Ni0uNGMuMjctLjc4Ljk3LTEuNDUgMi4wMS0xLjQ1Ljg2IDAgMS40NS4zOSAxLjc1Ljg4LjI2LjQzLjQxIDEuMjIuMDEgMS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRQc3ljaG9sb2d5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOC41N2ExLjQzIDEuNDMgMCAxIDAgMCAyLjg2IDEuNDMgMS40MyAwIDAgMCAwLTIuODZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDNDOS4yNSAzIDYuMiA1Ljk0IDYuMDIgOS42NEw0LjEgMTIuMmEuNS41IDAgMCAwIC40LjhINnYzYzAgMS4xLjkgMiAyIDJoMXYzaDd2LTQuNjhBNi45OTkgNi45OTkgMCAwIDAgMTMgM3ptMyA3YzAgLjEzLS4wMS4yNi0uMDIuMzlsLjgzLjY2Yy4wOC4wNi4xLjE2LjA1LjI1bC0uOCAxLjM5Yy0uMDUuMDktLjE2LjEyLS4yNC4wOWwtLjk5LS40Yy0uMjEuMTYtLjQzLjI5LS42Ny4zOUwxNCAxMy44M2MtLjAxLjEtLjEuMTctLjIuMTdoLTEuNmMtLjEgMC0uMTgtLjA3LS4yLS4xN2wtLjE1LTEuMDZjLS4yNS0uMS0uNDctLjIzLS42OC0uMzlsLS45OS40Yy0uMDkuMDMtLjIgMC0uMjUtLjA5bC0uOC0xLjM5YS4xOS4xOSAwIDAgMSAuMDUtLjI1bC44NC0uNjZjLS4wMS0uMTMtLjAyLS4yNi0uMDItLjM5cy4wMi0uMjcuMDQtLjM5bC0uODUtLjY2Yy0uMDgtLjA2LS4xLS4xNi0uMDUtLjI2bC44LTEuMzhjLjA1LS4wOS4xNS0uMTIuMjQtLjA5bDEgLjRjLjItLjE1LjQzLS4yOS42Ny0uMzlMMTIgNi4xN2MuMDItLjEuMS0uMTcuMi0uMTdoMS42Yy4xIDAgLjE4LjA3LjIuMTdsLjE1IDEuMDZjLjI0LjEuNDYuMjMuNjcuMzlsMS0uNGMuMDktLjAzLjIgMCAuMjQuMDlsLjggMS4zOGEuMi4yIDAgMCAxLS4wNS4yNmwtLjg1LjY2Yy4wMy4xMi4wNC4yNS4wNC4zOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHVibGljT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOC4xNyA2LjQ5IDMuNjZBOS45MSA5LjkxIDAgMCAxIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTAgMCAyLjA0LS42MSAzLjkzLTEuNjYgNS41MWwtMS40Ni0xLjQ2QTcuODQyIDcuODQyIDAgMCAwIDIwIDEyYzAtMy4zNS0yLjA3LTYuMjItNS03LjQxVjVjMCAxLjEtLjkgMi0yIDJoLTJ2MS4xN3ptMTAuMTkgMTMuMDItMS40MSAxLjQxLTIuMjctMi4yN0E5LjgzOSA5LjgzOSAwIDAgMSAxMiAyMkM2LjQ4IDIyIDIgMTcuNTIgMiAxMmMwLTIuMDQuNjEtMy45MyAxLjY2LTUuNTFMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM5IDE4LjM4ek0xMSAxOGMtMS4xIDAtMi0uOS0yLTJ2LTFsLTQuNzktNC43OUM0LjA4IDEwLjc5IDQgMTEuMzggNCAxMmMwIDQuMDggMy4wNSA3LjQ0IDcgNy45M1YxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUHVibGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTEgMTcuOTNjLTMuOTUtLjQ5LTctMy44NS03LTcuOTMgMC0uNjIuMDgtMS4yMS4yMS0xLjc5TDkgMTV2MWMwIDEuMS45IDIgMiAydjEuOTN6bTYuOS0yLjU0Yy0uMjYtLjgxLTEtMS4zOS0xLjktMS4zOWgtMXYtM2MwLS41NS0uNDUtMS0xLTFIOHYtMmgyYy41NSAwIDEtLjQ1IDEtMVY3aDJjMS4xIDAgMi0uOSAyLTJ2LS40MWMyLjkzIDEuMTkgNSA0LjA2IDUgNy40MSAwIDIuMDgtLjggMy45Ny0yLjEgNS4zOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVhbEVzdGF0ZUFnZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAyMmg0VjExSDF2MTF6bTE5LTVoLTdsLTIuMDktLjczLjMzLS45NEwxMyAxNmgyLjgyYy42NSAwIDEuMTgtLjUzIDEuMTgtMS4xOCAwLS40OS0uMzEtLjkzLS43Ny0xLjExTDguOTcgMTFIN3Y5LjAyTDE0IDIybDgtM2MtLjAxLTEuMS0uODktMi0yLTJ6TTE0IDEuNWwtNyA1VjloMmw4LjE0IDMuMjZDMTguMjYgMTIuNzEgMTkgMTMuNzkgMTkgMTVoMlY2LjVsLTctNXptLS41IDguNWgtMVY5aDF2MXptMC0yaC0xVjdoMXYxem0yIDJoLTFWOWgxdjF6bTAtMmgtMVY3aDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVjb21tZW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmExMCAxMCAwIDEgMCAxMCAxMEExMCAxMCAwIDAgMCAxMiAyem02IDkuOGEuOS45IDAgMCAxLS4xLjVsLTIuMSA0LjlhMS4zNCAxLjM0IDAgMCAxLTEuMy44SDlhMiAyIDAgMCAxLTItMnYtNWExLjI4IDEuMjggMCAwIDEgLjQtMUwxMiA1bC42OS42OWExLjA4IDEuMDggMCAwIDEgLjMuN3YuMkwxMi40MSAxMEgxN2ExIDEgMCAwIDEgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSZWN5Y2xpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Ljc3IDcuMTUgNy4yIDQuNzhsMS4wMy0xLjcxYy4zOS0uNjUgMS4zMy0uNjUgMS43MiAwbDEuNDggMi40Ni0xLjIzIDIuMDYtMSAxLjYyLTMuNDMtMi4wNnptMTUuOTUgNS44Mi0xLjYtMi42Ni0zLjQ2IDJMMTguODcgMTZIMjBhMiAyIDAgMCAwIDItMmMwLS4zNi0uMS0uNzEtLjI4LTEuMDN6TTE2IDIxaDEuNWEyIDIgMCAwIDAgMS43OS0xLjExTDIwLjc0IDE3SDE2di0ybC00IDQgNCA0di0yem0tNi00SDUuN2wtLjg0IDEuNDFjLS4zLjUtLjMyIDEuMTItLjA2IDEuNjUuMjguNTcuODcuOTQgMS41Mi45NEgxMHYtNHptLTMuODgtMi42NSAxLjczIDEuMDRMNi40OCA5LjkgMSAxMS4yN2wxLjcgMS4wMi0uNDEuNjljLS4zNS41OS0uMzggMS4zMS0uMDcgMS45MmwxLjYzIDMuMjYgMi4yNy0zLjgxem0xMC45LTkuMjEtMS4zLTIuMTdDMTUuMzUgMi4zNyAxNC43IDIgMTQgMmgtMy41M2wzLjEyIDUuMi0xLjcyIDEuMDMgNS40OSAxLjM3IDEuMzctNS40OS0xLjcxIDEuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJlZHVjZUNhcGFjaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNGMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem00Ljc4IDMuNThBNi45NSA2Ljk1IDAgMCAwIDE4IDdjLS42NyAwLTEuMzEuMS0xLjkyLjI4LjU4LjU1LjkyIDEuMzIuOTIgMi4xNVYxMGg1di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1ek02IDZjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0xLjkyIDEuMjhDNy4zMSA3LjEgNi42NyA3IDYgN2MtLjk5IDAtMS45My4yMS0yLjc4LjU4QTIuMDEgMi4wMSAwIDAgMCAyIDkuNDNWMTBoNXYtLjU3YzAtLjgzLjM0LTEuNi45Mi0yLjE1ek0xMCA0YzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTYgNkg4di0uNTdjMC0uODEuNDgtMS41MyAxLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAxIDUuNTYgMEEyLjAxIDIuMDEgMCAwIDEgMTYgOS40M1YxMHptLTEgNmMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem02IDZoLTh2LS41N2MwLS44MS40OC0xLjUzIDEuMjItMS44NWE2Ljk1IDYuOTUgMCAwIDEgNS41NiAwQTIuMDEgMi4wMSAwIDAgMSAyMSAyMS40M1YyMnpNNSAxNmMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem02IDZIM3YtLjU3YzAtLjgxLjQ4LTEuNTMgMS4yMi0xLjg1YTYuOTUgNi45NSAwIDAgMSA1LjU2IDBBMi4wMSAyLjAxIDAgMCAxIDExIDIxLjQzVjIyem0xLjc1LTl2LTJoLTEuNXYySDlsMyAzIDMtM2gtMi4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kUmVtb3ZlTW9kZXJhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuMjcgMjEuNzMtMy41NC0zLjU1TDUuNzggNS4yMyAyLjI3IDEuNzIgMSAyLjk5IDMuMDEgNUgzdjZjMCA1LjU1IDMuODQgMTAuNzQgOSAxMiAyLjE2LS41MyA0LjA4LTEuNzYgNS42LTMuNDFMMjEgMjNsMS4yNy0xLjI3ek0xMyA5LjkybDYuNjcgNi42N0MyMC41MSAxNC44NyAyMSAxMi45NiAyMSAxMVY1bC05LTQtNS40OCAyLjQ0TDExIDcuOTJsMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSb2xsZXJTa2F0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA2LjVjMC0uMjguMjItLjUuNS0uNWgyLjUyTDEyIDVIOS41Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVIMTJWMUg0djE1aDE2di0yLjg4YzAtMi4xLTEuNTUtMy41My0zLjAzLTMuODhsLTIuNy0uNjdjLS44Ny0uMjItMS41Ny0uODEtMS45NS0xLjU3SDkuNWMtLjI4IDAtLjUtLjIyLS41LS41ek01IDIzYy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3ptMTQgMGMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6bS03IDBjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYWZldHlEaXZpZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNWgydjE0aC0yVjV6bS02IDdjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0yLjc4IDEuNThhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgMSAxNS40M1YxNmg4di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1ek0xOSAxMmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTIuNzggMS41OGE2Ljk1IDYuOTUgMCAwIDAtNS41NiAwQTIuMDEgMi4wMSAwIDAgMCAxNSAxNS40M1YxNmg4di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTYW5pdGl6ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDYuNUMxNS41IDUuNjYgMTcgNCAxNyA0czEuNSAxLjY2IDEuNSAyLjVjMCAuODMtLjY3IDEuNS0xLjUgMS41cy0xLjUtLjY3LTEuNS0xLjV6bTQgOC41YTIuNSAyLjUgMCAwIDAgMi41LTIuNWMwLTEuNjctMi41LTQuNS0yLjUtNC41UzE3IDEwLjgzIDE3IDEyLjVhMi41IDIuNSAwIDAgMCAyLjUgMi41ek0xMyAxNGgtMnYtMkg5djJIN3YyaDJ2Mmgydi0yaDJ2LTJ6bTMtMnYxMEg0VjEyYzAtMi45NyAyLjE2LTUuNDMgNS01LjkxVjRIN1YyaDZjMS4xMyAwIDIuMTUuMzkgMi45OSAxLjAxbC0xLjQzIDEuNDNDMTQuMSA0LjE3IDEzLjU3IDQgMTMgNGgtMnYyLjA5YzIuODQuNDggNSAyLjk0IDUgNS45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2NhbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMVY4YzQuNTYtLjU4IDgtMy4xIDgtNkgyYzAgMi45IDMuNDQgNS40MiA4IDZ2M2MtMy42OC43My04IDMuNjEtOCAxMWg2di0ySDQuMTNjLjkzLTYuODMgNi42NS03LjIgNy44Ny03LjJzNi45NC4zNyA3Ljg3IDcuMkgxNnYyaDZjMC03LjM5LTQuMzItMTAuMjctOC0xMXptLTIgMTFjLTEuMSAwLTItLjktMi0yIDAtLjU1LjIyLTEuMDUuNTktMS40MUMxMS4zOSAxNy43OSAxNiAxNiAxNiAxNnMtMS43OSA0LjYxLTIuNTkgNS40MWMtLjM2LjM3LS44Ni41OS0xLjQxLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY2hvb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEzLjE4djRMMTIgMjFsNy0zLjgydi00TDEyIDE3bC03LTMuODJ6TTEyIDMgMSA5bDExIDYgOS00LjkxVjE3aDJWOUwxMiAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTY2llbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOCAxOC40IDE0IDEwLjY3VjYuNWwxLjM1LTEuNjljLjI2LS4zMy4wMy0uODEtLjM5LS44MUg5LjA0Yy0uNDIgMC0uNjUuNDgtLjM5LjgxTDEwIDYuNXY0LjE3TDQuMiAxOC40Yy0uNDkuNjYtLjAyIDEuNi44IDEuNmgxNGMuODIgMCAxLjI5LS45NC44LTEuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2NvcmVib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgMTMuNUgxNnYtM2gxLjV2M3pNMjAgNGgtM1YyaC0ydjJIOVYySDd2Mkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTkuNSAxMS41YzAgLjU1LS40NSAxLTEgMWgtMnYxaDNWMTVINXYtMi41YzAtLjU1LjQ1LTEgMS0xaDJ2LTFINVY5aDMuNWMuNTUgMCAxIC40NSAxIDF2MS41em0zLjI1IDYuNWgtMS41di0xLjVoMS41VjE4em0wLTMuNWgtMS41VjEzaDEuNXYxLjV6bTAtMy41aC0xLjVWOS41aDEuNVYxMXptMC0zLjVoLTEuNVY2aDEuNXYxLjV6TTE5IDE0YzAgLjU1LS40NSAxLTEgMWgtMi41Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFIMThjLjU1IDAgMSAuNDUgMSAxdjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNjdWJhRGl2aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAxM2MwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem03Ljg5LTIuODkgNC41My0xLjIxLS43OC0yLjktNC41MyAxLjIxYy0uOC4yMS0xLjI4IDEuMDQtMS4wNiAxLjg0LjIyLjggMS4wNCAxLjI4IDEuODQgMS4wNnpNMjAuNSA1LjkgMjMgM2wtMS0xLTMgMy0yIDQtOS40OCAyLjg3Yy0uODIuMi0xLjM5Ljg5LTEuNSAxLjY4TDUuMjQgMTggMi40IDIxLjggNCAyM2wzLTQgMS4xNC0zLjE0TDE0IDE0bDUtMy41IDEuNS00LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbGZJbXByb3ZlbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE2di0yYy0yLjI0IDAtNC4xNi0uOTYtNS42LTIuNjhsLTEuMzQtMS42QTEuOTggMS45OCAwIDAgMCAxMi41MyA5aC0xLjA1Yy0uNTkgMC0xLjE1LjI2LTEuNTMuNzJsLTEuMzQgMS42QzcuMTYgMTMuMDQgNS4yNCAxNCAzIDE0djJjMi43NyAwIDUuMTktMS4xNyA3LTMuMjVWMTVsLTMuODggMS41NWMtLjY3LjI3LTEuMTIuOTMtMS4xMiAxLjY2QzUgMTkuMiA1LjggMjAgNi43OSAyMEg5di0uNWEyLjUgMi41IDAgMCAxIDIuNS0yLjVoM2MuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjVoLTNjLS44MyAwLTEuNS42Ny0xLjUgMS41di41aDcuMjFjLjk5IDAgMS43OS0uOCAxLjc5LTEuNzkgMC0uNzMtLjQ1LTEuMzktMS4xMi0xLjY2TDE0IDE1di0yLjI1YzEuODEgMi4wOCA0LjIzIDMuMjUgNyAzLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZW50aW1lbnREaXNzYXRpc2ZpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0wLTMuNWMuNzMgMCAxLjM5LjE5IDEuOTcuNTMuMTItLjE0Ljg2LS45OCAxLjAxLTEuMTRBNS4zOSA1LjM5IDAgMCAwIDEyIDE1Yy0xLjExIDAtMi4xMy4zMy0yLjk5Ljg4Ljk3IDEuMDkuMDEuMDIgMS4wMSAxLjE0LjU5LS4zMyAxLjI1LS41MiAxLjk4LS41MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VudGltZW50TmV1dHJhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNS41aDZ2MUg5di0xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2VudGltZW50U2F0aXNmaWVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptMC00Yy0uNzMgMC0xLjM4LS4xOC0xLjk2LS41Mi0uMTIuMTQtLjg2Ljk4LTEuMDEgMS4xNWE1LjQ5IDUuNDkgMCAwIDAgNS45NS0uMDFjLS45Ny0xLjA5LS4wMS0uMDItMS4wMS0xLjE1LS41OS4zNS0xLjI0LjUzLTEuOTcuNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbnRpbWVudFZlcnlEaXNzYXRpc2ZpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0wLTZjLTIuMzMgMC00LjMyIDEuNDUtNS4xMiAzLjVoMS42N2MuNjktMS4xOSAxLjk3LTIgMy40NS0yczIuNzUuODEgMy40NSAyaDEuNjdjLS44LTIuMDUtMi43OS0zLjUtNS4xMi0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNlbnRpbWVudFZlcnlTYXRpc2ZpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0tNS02Yy43OCAyLjM0IDIuNzIgNCA1IDRzNC4yMi0xLjY2IDUtNEg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTZXZlcmVDb2xkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgMTAuNDEgNC00TDE0LjU5IDUgMTIgNy41OVY0aC0ydjMuNTlMNy40MSA1IDYgNi40MWw0IDRWMTJIOC40MWwtNC00TDMgOS40MSA1LjU5IDEySDJ2MmgzLjU5TDMgMTYuNTkgNC40MSAxOGw0LTRIMTB2MS41OWwtNCA0TDcuNDEgMjEgMTAgMTguNDFWMjJoMnYtMy41OUwxNC41OSAyMSAxNiAxOS41OWwtNC00VjE0aDEuNTlsNCA0TDE5IDE2LjU5IDE2LjQxIDE0SDIwdi0yaC04ek0xOSAyaDJ2NWgtMnpNMTkgOGgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTYuMDhjLS43NiAwLTEuNDQuMy0xLjk2Ljc3TDguOTEgMTIuN2MuMDUtLjIzLjA5LS40Ni4wOS0uN3MtLjA0LS40Ny0uMDktLjdsNy4wNS00LjExYy41NC41IDEuMjUuODEgMi4wNC44MSAxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzYzAgLjI0LjA0LjQ3LjA5LjdMOC4wNCA5LjgxQzcuNSA5LjMxIDYuNzkgOSA2IDljLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDNjLjc5IDAgMS41LS4zMSAyLjA0LS44MWw3LjEyIDQuMTZjLS4wNS4yMS0uMDguNDMtLjA4LjY1IDAgMS42MSAxLjMxIDIuOTIgMi45MiAyLjkyIDEuNjEgMCAyLjkyLTEuMzEgMi45Mi0yLjkycy0xLjMxLTIuOTItMi45Mi0yLjkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOWMtMS4xIDAtMi0uOS0yLTJzMi00IDItNCAyIDIuOSAyIDQtLjkgMi0yIDJ6bS0zLjUtMmMwLS43My40MS0xLjcxLjkyLTIuNjZBOS45NjUgOS45NjUgMCAwIDAgMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyYzAtLjU1LS4wNi0xLjA5LS4xNC0xLjYyYTMuNSAzLjUgMCAwIDEtLjg2LjEyYy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXptLTEuODguMzggMS4wNiAxLjA2LTEuMDYgMS4wNiAxLjA2IDEuMDYtMS4wNiAxLjA2TDEzLjUgOS41bDIuMTItMi4xMnptLTguMyAxLjA2IDEuMDYtMS4wNkwxMC41IDkuNWwtMi4xMiAyLjEyLTEuMDYtMS4wNkw4LjM4IDkuNSA3LjMyIDguNDR6TTE1LjQ0IDE3Yy0uNjktMS4xOS0xLjk3LTItMy40NC0ycy0yLjc1LjgxLTMuNDQgMkg2Ljg4Yy4zLS43Ni43Ni0xLjQzIDEuMzQtMS45OUw1LjI0IDEzLjNjLS40NS4yNi0xLjAxLjI4LTEuNDkgMGExLjUwMSAxLjUwMSAwIDAgMSAxLjUtMi42Yy40OC4yOC43NC43OC43NCAxLjI5bDMuNTggMi4wN2MuNzMtLjM2IDEuNTUtLjU2IDIuNDMtLjU2IDIuMzMgMCA0LjMyIDEuNDUgNS4xMiAzLjVoLTEuNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25MYW5ndWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyLjQ5IDEzLS45My0xLjg2Yy0uMzctLjc0LS4wNy0xLjY0LjY3LTIuMDFsLjI2LS4xMyA1LjczIDUuNDZjLjUuNDcuNzggMS4xMy43OCAxLjgxdjUuMjNhMi41IDIuNSAwIDAgMS0yLjUgMi41aC0xMWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMUgxMHYtMUg0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xaDZ2LTFIM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMWg3di0xSDQuNWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMWg3Ljk5em0tLjcxLTUuODhjLS44NC40LTEuMTcuNjItMS42MyAxLjE5bC0yLjctMi44NUEuOTk2Ljk5NiAwIDEgMSA4LjkgNC4wOWwyLjg4IDMuMDN6TTkuNjQgOS4yMWEzLjQ2IDMuNDYgMCAwIDAtLjIgMS43OWgtLjg2TDYuMzEgOC42MWEuOTg3Ljk4NyAwIDAgMSAuMDQtMS40MS45OTYuOTk2IDAgMCAxIDEuNDEuMDRsMS44OCAxLjk3em0xMC42OSA0LjcuODgtLjgzYy41LS40Ny43OS0xLjEzLjc5LTEuODJWMy4zNWwtLjI3LS4xYy0uNzgtLjI4LTEuNjQuMTItMS45Mi45bC0uNzEgMS45Ni01LjUtNS44YS45OTYuOTk2IDAgMSAwLTEuNDUgMS4zN2wzLjc5IDMuOTktLjczLjY5LTQuODItNS4wOGEuOTk2Ljk5NiAwIDEgMC0xLjQ1IDEuMzdsMy43OCAzLjk4TDE1LjM4IDlsMy42MSAzLjQzLjYxLjU4Yy4yOS4yNy41My41Ny43My45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaW5nbGVCZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMmMwLTEuMS0uOS0yLTItMlY3YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAydjNjLTEuMSAwLTIgLjktMiAydjVoMS4zM0w2IDE5aDFsLjY3LTJoOC42N2wuNjYgMmgxbC42Ny0ySDIwdi01em0tNC0yaC0zVjdoM3Yzek04IDdoM3YzSDhWN3ptLTIgNWgxMnYzSDZ2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNrYXRlYm9hcmRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzYzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6TTcuMjUgMjIuNWMtLjQxIDAtLjc1LjM0LS43NS43NXMuMzQuNzUuNzUuNzUuNzUtLjM0Ljc1LS43NS0uMzQtLjc1LS43NS0uNzV6bTguNSAwYy0uNDEgMC0uNzUuMzQtLjc1Ljc1cy4zNC43NS43NS43NS43NS0uMzQuNzUtLjc1LS4zNC0uNzUtLjc1LS43NXptMy40OS0zLjVhLjcyLjcyIDAgMCAwLS41OS4zYy0uNTUuNzMtMS40MiAxLjItMi40IDEuMkgxNnYtNmwtNC4zMi0yLjY3IDEuOC0yLjg5QTYuNTA3IDYuNTA3IDAgMCAwIDE5IDEydi0yYy0xLjg1IDAtMy40NC0xLjEyLTQuMTMtMi43MmwtLjUyLTEuMjFDMTQuMTYgNS42NCAxMy42MSA1IDEyLjcgNUg3TDQuNSA5bDEuNyAxLjA2TDguMSA3aDIuMzVsLTIuNCAzLjg0Yy0uMzEuNS0uMzkgMS4xMS0uMjEgMS42N2wxLjM0IDQuMTUtMy4xMiAzLjc2Yy0uNy0uMTYtMS4zLS41Ny0xLjcxLTEuMTJhLjc0OS43NDkgMCAxIDAtMS4yLjljLjgyIDEuMSAyLjEzIDEuOCAzLjYgMS44aDkuNWMxLjQ3IDAgMi43OC0uNyAzLjYtMS44LjEtLjE0LjE1LS4zLjE1LS40NSAwLS4zOS0uMzItLjc1LS43Ni0uNzV6TTE0IDIwLjVIOC42bDIuOS0zLjUtMS0zLjMgMy41IDIuMnY0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNsZWRkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNC41YzAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMiAyIC45IDIgMnptOC44IDE1Ljc0YTQuMDAzIDQuMDAzIDAgMCAxLTUuMDQgMi41N0wxIDE3LjM2bC40Ni0xLjQzIDMuOTMgMS4yOC40Ni0xLjQzLTMuOTItMS4yOC40Ni0xLjQzTDQgMTMuNlY5LjVsNS40Ny0yLjM1Yy4zOS0uMTcuODQtLjIxIDEuMjgtLjA3Ljk1LjMxIDEuNDYgMS4zMiAxLjE2IDIuMjdsLTEuMDUgMy4yNCAyLjE0LS4zNGMuODktLjE1IDEuNzYuMzIgMi4xNCAxLjE0bDIuMDggNC41MSAxLjkzLjYzLS40NiAxLjQzLTMuMzItMS4wOC0uNDcgMS40MiAzLjMyIDEuMDhjMS4zMS40MyAyLjcyLS4yOSAzLjE1LTEuNjEuNDMtMS4zMS0uMjktMi43Mi0xLjYxLTMuMTVsLjQ2LTEuNDNjMi4xMS42OSAzLjI3IDIuOTUgMi41OCA1LjA1ek02IDE0LjI1bDEuMDEuMzNjLS4yMi0uNDItLjI4LS45Mi0uMTItMS40TDcuOTIgMTAgNiAxMC44MnYzLjQzem03Ljk0IDQuMTYtNi42Ni0yLjE2LS40NiAxLjQzIDYuNjYgMi4xNi40Ni0xLjQzem0uNjktMS4zNi0xLjE4LTIuNTYtMy45Ny44OSA1LjE1IDEuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNub3dib2FyZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDNjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptNy40IDE3LjA5YS43NDguNzQ4IDAgMCAwLS42NC4xN2MtLjY5LjYtMS42NC44OC0yLjYuNjdMMTcgMjAuNjlsLTEtNi4xOS0zLjMyLTIuNjcgMS44LTIuODlBNi41MDcgNi41MDcgMCAwIDAgMjAgMTJ2LTJjLTEuODUgMC0zLjQ0LTEuMTItNC4xMy0yLjcybC0uNTItMS4yMUMxNS4xNiA1LjY0IDE0LjYxIDUgMTMuNyA1SDhMNS41IDlsMS43IDEuMDZMOS4xIDdoMi4zNWwtMi41MSAzLjk5Yy0uMjguNDUtLjM3IDEtLjI1IDEuNTJMOS41IDE2IDYgMTguMzVsLS40Ny0uMWMtLjk2LS4yLTEuNzEtLjg1LTIuMS0xLjY3YS43NDQuNzQ0IDAgMCAwLS41MS0uNDJjLS40My0uMDktLjgyLjItLjkuNTgtLjA0LjE0LS4wMi4zMS4wNS40Ni41OCAxLjI0IDEuNzEgMi4yIDMuMTUgMi41MWwxMi42MyAyLjY5YzEuNDQuMzEgMi44Ni0uMTEgMy45LTEuMDEuMTMtLjExLjIxLS4yNi4yNC0uNDEuMDctLjM4LS4xNi0uOC0uNTktLjg5ek04LjczIDE4LjkzbDMuMDItMi4wMy0uNDQtMy4zMiAyLjg0IDIuMDIuNzUgNC42NC02LjE3LTEuMzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNub3dzaG9laW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSAzLjVjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnpNNi4zMiAxOS4wM2wtMS4xNC0xLjQ3TDQgMTguNWwyLjM4IDMuMDRjLjUxLjY1IDEuMTYgMS4xNSAxLjg4IDEuNDEuMjguMS41My4wNC43Mi0uMTEuMy0uMjMuNDItLjcuMTItMS4wN2EuODQuODQgMCAwIDAtLjMxLS4yMiAyLjk3IDIuOTcgMCAwIDEtMS4xNC0uODNsLS4wOC0uMUwxMSAxOC4ybC44OS0zLjIyIDIuMTEgMnY0LjUyaC0yVjIzaDMuODdjLjgyIDAgMS42MS0uMjEgMi4yNi0uNjEuMjYtLjE2LjM3LS4zOS4zNy0uNjQgMC0uMzgtLjMtLjc1LS43Ny0uNzUtLjEzIDAtLjI2LjA0LS4zNy4xLS40LjIzLS44Ny4zNy0xLjM2LjR2LTYuMDJsLTIuMTEtMiAuNi0zQzE1Ljc5IDExLjk4IDE3LjggMTMgMjAgMTN2LTJjLTEuOSAwLTMuNTEtMS4wMi00LjMxLTIuNDJsLTEtMS41OGMtLjQtLjYtMS0xLTEuNy0xLS43NSAwLTEuNDEuMzQtNS45OSAyLjI4VjEzaDJWOS41OGwxLjc5LS43TDkuMiAxN2wtMi44OCAyLjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTb2NpYWxEaXN0YW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNWMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem00Ljc4IDMuNThhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgMiAxMC40M1YxMWg4di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1ek0xOCA3YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMi43OCAxLjU4YTYuOTUgNi45NSAwIDAgMC01LjU2IDBBMi4wMSAyLjAxIDAgMCAwIDE0IDEwLjQzVjExaDh2LS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6TTIyIDE3bC00LTR2M0g2di0zbC00IDQgNCA0di0zaDEydjNsNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTb3V0aEFtZXJpY2EgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek00IDEyYzAtMS45NS43LTMuNzQgMS44Ny01LjEzTDkgMTB2MWMwIDEuMS45IDIgMiAydjUuNTljMCAuMjcuMTEuNTIuMjkuNzFsLjcxLjdjLTQuNDIgMC04LTMuNTgtOC04em05IDcuOTRWMThsMy43NS01LjYyYy4xNi0uMjUuMjUtLjU0LjI1LS44M1YxMC41YzAtLjU1LS40NS0xLTEtMWgtMS41bC0xLjQtMS43NWMtLjM4LS40Ny0uOTUtLjc1LTEuNTYtLjc1SDhWNS4wN0E3Ljk3MSA3Ljk3MSAwIDAgMSAxMiA0YzQuNDEgMCA4IDMuNTkgOCA4IDAgNC4wNy0zLjA2IDcuNDQtNyA3Ljk0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNCYXNlYmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuODEgNi4yOEMyLjY3IDcuOSAyIDkuODcgMiAxMnMuNjcgNC4xIDEuODEgNS43MkM2LjIzIDE2Ljk1IDggMTQuNjggOCAxMlM2LjIzIDcuMDUgMy44MSA2LjI4ek0yMC4xOSA2LjI4QzE3Ljc3IDcuMDUgMTYgOS4zMiAxNiAxMnMxLjc3IDQuOTUgNC4xOSA1LjcyQzIxLjMzIDE2LjEgMjIgMTQuMTMgMjIgMTJzLS42Ny00LjEtMS44MS01LjcyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMmMwLTMuMjggMS45Ny02LjA5IDQuNzktNy4zM0MxNy4wMSAzLjAyIDE0LjYzIDIgMTIgMlM2Ljk5IDMuMDIgNS4yMSA0LjY3QzguMDMgNS45MSAxMCA4LjcyIDEwIDEycy0xLjk3IDYuMDktNC43OSA3LjMzQzYuOTkgMjAuOTggOS4zNyAyMiAxMiAyMnM1LjAxLTEuMDIgNi43OS0yLjY3QTguMDAyIDguMDAyIDAgMCAxIDE0IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNCYXNrZXRiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMDkgMTFoNC44NmE5Ljk1MSA5Ljk1MSAwIDAgMC0xLjU0LTQuNCA1Ljk4NyA1Ljk4NyAwIDAgMC0zLjMyIDQuNHpNNi45MSAxMWE1Ljk4NyA1Ljk4NyAwIDAgMC0zLjMyLTQuNEE5Ljk1MSA5Ljk1MSAwIDAgMCAyLjA1IDExaDQuODZ6TTE1LjA3IDExYTcuOTk0IDcuOTk0IDAgMCAxIDQuMDYtNkE5Ljk2OSA5Ljk2OSAwIDAgMCAxMyAyLjA1VjExaDIuMDd6TTguOTMgMTFIMTFWMi4wNUE5Ljk0MyA5Ljk0MyAwIDAgMCA0Ljg3IDVhNy45OTQgNy45OTQgMCAwIDEgNC4wNiA2ek0xNS4wNyAxM0gxM3Y4Ljk1QTkuOTQzIDkuOTQzIDAgMCAwIDE5LjEzIDE5YTcuOTk0IDcuOTk0IDAgMCAxLTQuMDYtNnpNMy41OSAxNy40QTYuMDI5IDYuMDI5IDAgMCAwIDYuOTEgMTNIMi4wNWMuMTYgMS42MS43MSAzLjExIDEuNTQgNC40ek0xNy4wOSAxM2E1Ljk4NyA1Ljk4NyAwIDAgMCAzLjMyIDQuNCA5Ljk1MSA5Ljk1MSAwIDAgMCAxLjU0LTQuNGgtNC44NnpNOC45MyAxM2E3Ljk5NCA3Ljk5NCAwIDAgMS00LjA2IDZBOS45NjkgOS45NjkgMCAwIDAgMTEgMjEuOTVWMTNIOC45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzQ3JpY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjA1IDEyLjgxIDYuNTYgNC4zMmEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBMMi4zMiA3LjE1YS45OTYuOTk2IDAgMCAwIDAgMS40MWw4LjQ5IDguNDljLjM5LjM5IDEuMDIuMzkgMS40MSAwbDIuODMtMi44M2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6TTE0LjM0MSAxNy43NTZsMS40MTQtMS40MTQgNC4yNDMgNC4yNDMtMS40MTQgMS40MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTguNVwiLFwiY3lcIjpcIjUuNVwiLFwiclwiOlwiMy41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c0VzcG9ydHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS41OCAxNi4wOS0xLjA5LTcuNjZBMy45OTYgMy45OTYgMCAwIDAgMTYuNTMgNUg3LjQ3QzUuNDggNSAzLjc5IDYuNDYgMy41MSA4LjQzbC0xLjA5IDcuNjZDMi4yIDE3LjYzIDMuMzkgMTkgNC45NCAxOWMuNjggMCAxLjMyLS4yNyAxLjgtLjc1TDkgMTZoNmwyLjI1IDIuMjVjLjQ4LjQ4IDEuMTMuNzUgMS44Ljc1IDEuNTYgMCAyLjc1LTEuMzcgMi41My0yLjkxek0xMSAxMUg5djJIOHYtMkg2di0xaDJWOGgxdjJoMnYxem00LTFjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMiAzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c0Zvb3RiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy4wMiAxNS42MmMtLjA4IDIuNDIuMzIgNC4zNC42NyA0LjY5czIuMjguNzYgNC42OS42N2wtNS4zNi01LjM2ek0xMy4wOCAzLjI4Yy0yLjMzLjQyLTQuNzkgMS4zNC02LjYyIDMuMThzLTIuNzYgNC4yOS0zLjE4IDYuNjJsNy42MyA3LjYzYzIuMzQtLjQxIDQuNzktMS4zNCA2LjYyLTMuMThzMi43Ni00LjI5IDMuMTgtNi42MmwtNy42My03LjYzek05LjkgMTUuNWwtMS40LTEuNCA1LjYtNS42IDEuNCAxLjQtNS42IDUuNnpNMjAuOTggOC4zOGMuMDgtMi40Mi0uMzItNC4zNC0uNjctNC42OXMtMi4yOC0uNzYtNC42OS0uNjdsNS4zNiA1LjM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNHb2xmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTZjMy44NyAwIDctMy4xMyA3LTdzLTMuMTMtNy03LTctNyAzLjEzLTcgNyAzLjEzIDcgNyA3em0wLTEyYzIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1LTUtMi4yNC01LTUgMi4yNC01IDUtNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjhcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNFwiLFwiY3lcIjpcIjhcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOWgyYzEuMSAwIDIgLjkgMiAydjFoMnYtMWMwLTEuMS45LTIgMi0yaDJ2LTJIN3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNHeW1uYXN0aWNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2YzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6TTEgOWg2bDctNSAxLjMxIDEuNTItNC4xNyAyLjk4SDE0TDIxLjggNCAyMyA1LjQgMTQuNSAxMiAxNCAyMmgtMmwtLjUtMTBMOCAxMUgxVjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c0hhbmRiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuMjcgNmMtLjU1Ljk1LS4yMiAyLjE4LjczIDIuNzMuOTUuNTUgMi4xOC4yMiAyLjczLS43My41NS0uOTUuMjItMi4xOC0uNzMtMi43My0uOTUtLjU1LTIuMTgtLjIyLTIuNzMuNzN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1Ljg0IDEwLjQxLTIuNi0xLjVjLTIuMzgtMS4zOC0zLjItNC40NC0xLjgyLTYuODJsLTEuNzMtMUM4LjEgMy44MyA4LjYgNy4yMSAxMC42NiA5LjRsLTUuMTUgOC45MiAxLjczIDEgMS41LTIuNiAxLjczIDEtMyA1LjIgMS43MyAxIDYuMjktMTAuODlhNS4wMDIgNS4wMDIgMCAwIDEgLjMxIDUuNDZsMS43MyAxYzEuNi0yLjc1IDEuMjgtNi41OC0xLjY5LTkuMDh6TTEyLjc1IDMuOGMuNzIuNDEgMS42My4xNyAyLjA1LS41NS40MS0uNzIuMTctMS42My0uNTUtMi4wNWExLjUwMSAxLjUwMSAwIDAgMC0xLjUgMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNIb2NrZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE3djNoMnYtNEgzYy0uNTUgMC0xIC40NS0xIDF6TTkgMTZINXY0bDQuNjktLjAxYy4zOCAwIC43Mi0uMjEuODktLjU1bC44Ny0xLjktMS41OS0zLjQ4TDkgMTZ6TTIxLjcxIDE2LjI5QS45OTcuOTk3IDAgMCAwIDIxIDE2aC0xdjRoMnYtM2MwLS4yOC0uMTEtLjUzLS4yOS0uNzF6TTEzLjYgMTIuODQgMTcuNjUgNEgxNC4zbC0xLjc2IDMuOTctLjQ5IDEuMS0uMDUuMTRMOS43IDRINi4zNWw0LjA1IDguODQgMS41MiAzLjMyLjA4LjE4IDEuNDIgMy4xYy4xNy4zNC41MS41NS44OS41NUwxOSAyMHYtNGgtNGwtMS40LTMuMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c0thYmFkZGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2LjVcIixcImN5XCI6XCIyLjM4XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDExLjg4di00LjdsLTUuMDUtMi4xNGMtLjk3LS40MS0yLjA5LS4wNi0yLjY1Ljg0bC0xIDEuNmMtLjY3IDEuMTgtMS45MSAyLjA2LTMuNDEgMi4zMmwuMDYuMDZjLjY5LjY5IDEuNTIgMS4wNyAyLjQ2IDEuMTcuOC0uNDIgMS41Mi0uOTggMi4wOS0xLjY0bC42IDMtMS4xNiAxLjEtLjk0Ljg5djcuNWgydi02bDIuMS0yIDEuOCA4SDIzbC0yLjE4LTExLS42Mi0zLjEgMS44Ljd2My40aDJ6TTEwLjI5IDguMDljLjIyLjE1LjQ3LjI0LjcyLjI5LjEzLjAyLjI1LjA0LjM4LjA0cy4yNi0uMDEuMzgtLjA0Yy4xMy0uMDIuMjUtLjA2LjM3LS4xMS4yNC0uMS40Ny0uMjQuNjYtLjQ0LjQ5LS40OS42Ny0xLjE3LjU1LTEuOC0uMDctLjM3LS4yNS0uNzQtLjU1LTEuMDMtLjE5LS4xOS0uNDItLjM0LS42Ni0uNDQtLjEyLS4wNS0uMjQtLjA5LS4zNy0uMTFzLS4yNS0uMDQtLjM4LS4wNGMtLjEyIDAtLjIzLjAxLS4zNS4wMy0uMTQuMDItLjI4LjA2LS40MS4xMS0uMjMuMTEtLjQ2LjI2LS42NS40NS0uMy4yOS0uNDguNjYtLjU1IDEuMDMtLjEyLjYzLjA2IDEuMzEuNTUgMS44LjA5LjEuMi4xOC4zMS4yNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEuMjQgMTAuNTYtMi0yYy0uMS0uMS0uMi0uMTgtLjMxLS4yNmExLjkzIDEuOTMgMCAwIDAtLjcyLS4yOGMtLjEzLS4wMy0uMjUtLjA0LS4zOC0uMDQtLjUxIDAtMS4wMi4yLTEuNDEuNTlsLTMuMzQgMy4zNGMtLjQxLjQxLS42Mi45OC0uNTggMS41NCAwIC4xOC4wNC4zNy4xMS41NWwxLjA3IDIuOTUtMy42MyAzLjYzTDEuNDYgMjJsNC4yNC00LjI0di0yLjIyTDcgMTYuNzV2NS4xM2gydi02bC0yLjEyLTIuMTIgMi4zNi0yLjM2LjcxLjcxYzEuMjkgMS4yNiAyLjk3IDIuMDQgNS4wMyAyLjA0bC0uMTQtMi4wN2MtMS41LS4wMi0yLjctLjYyLTMuNi0xLjUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNNYXJ0aWFsQXJ0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjggMi04LjIgNi43LTEuMjEtMS4wNCAzLjYtMi4wOEw5LjQxIDEgOCAyLjQxbDIuNzQgMi43NEw1IDguNDZsLTEuMTkgNC4yOUw2LjI3IDE3IDggMTZsLTIuMDMtMy41Mi4zNS0xLjNMOS41IDEzbC41IDloMmwuNS0xMEwyMSAzLjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNVwiLFwiY3lcIjpcIjVcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzTW1hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyMGMwIC41NS40NSAxIDEgMWg4Yy41NSAwIDEtLjQ1IDEtMXYtM0g3djN6TTE4IDdjLS41NSAwLTEgLjQ1LTEgMVY1YzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjUuOGMwIC4xMy4wMS4yNi4wNC4zOWwuOCA0Yy4wOS40Ny41LjguOTguOGgxMC4zNmMuNDUgMCAuODktLjM2Ljk4LS44bC44LTRjLjAzLS4xMy4wNC0uMjYuMDQtLjM5VjhjMC0uNTUtLjQ1LTEtMS0xem0tMyAzSDdWN2g4djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNwb3J0c01vdG9yc3BvcnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTEuMzljMC0uNjUtLjM5LTEuMjMtLjk4LTEuNDhMNS40NCA3LjU1Yy0xLjQ4IDEuNjgtMi4zMiAzLjctMi44IDUuNDVoNy43NWMuODkgMCAxLjYxLS43MiAxLjYxLTEuNjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk2IDExLjIyYy0uNDEtNC40MS00LjU2LTcuNDktOC45OC03LjItMi41MS4xNi00LjQ0Ljk0LTUuOTMgMi4wNGw0Ljc0IDIuMDFjMS4zMy41NyAyLjIgMS44NyAyLjIgMy4zMiAwIDEuOTktMS42MiAzLjYxLTMuNjEgMy42MUgyLjIxQzIgMTYuMzEgMiAxNy4yIDIgMTcuMnYuOGMwIDEuMS45IDIgMiAyaDEwYzQuNjcgMCA4LjQxLTQuMDEgNy45Ni04Ljc4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNSdWdieSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjQ5IDMuNTFjLS41Ni0uNTYtMi4xNS0uOTctNC4xNi0uOTctMy4wOCAwLTcuMTUuOTYtOS45OCAzLjc5LTQuNjkgNC43LTQuMjUgMTIuNzQtMi44NCAxNC4xNi41Ni41NiAyLjE1Ljk3IDQuMTYuOTcgMy4wOCAwIDcuMTUtLjk2IDkuOTgtMy43OSA0LjY5LTQuNyA0LjI1LTEyLjc0IDIuODQtMTQuMTZ6TTcuNzYgNy43NmMyLjY0LTIuNjQgNi4zNS0zLjEyIDguMDMtMy4xOS0yLjA1Ljk0LTQuNDYgMi40NS02LjYxIDQuNjFhMjMuNDYyIDIzLjQ2MiAwIDAgMC00LjYyIDYuNjNjLjEtMi40OC44OC01Ljc0IDMuMi04LjA1em04LjQ4IDguNDhjLTIuNjQgMi42NC02LjM1IDMuMTItOC4wMyAzLjE5IDIuMDUtLjk0IDQuNDYtMi40NSA2LjYxLTQuNjEgMi4xNi0yLjE2IDMuNjctNC41OCA0LjYyLTYuNjMtLjEgMi40OC0uODggNS43NC0zLjIgOC4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzU29jY2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAzLjMgMS4zNS0uOTVhOC4wMSA4LjAxIDAgMCAxIDQuMzggMy4zNGwtLjM5IDEuMzQtMS4zNS40NkwxMyA2LjdWNS4zem0tMy4zNS0uOTVMMTEgNS4zdjEuNEw3LjAxIDkuNDlsLTEuMzUtLjQ2LS4zOS0xLjM0YTguMTAzIDguMTAzIDAgMCAxIDQuMzgtMy4zNHpNNy4wOCAxNy4xMWwtMS4xNC4xQTcuOTM4IDcuOTM4IDAgMCAxIDQgMTJjMC0uMTIuMDEtLjIzLjAyLS4zNWwxLS43MyAxLjM4LjQ4IDEuNDYgNC4zNC0uNzggMS4zN3ptNy40MiAyLjQ4Yy0uNzkuMjYtMS42My40MS0yLjUuNDFzLTEuNzEtLjE1LTIuNS0uNDFsLS42OS0xLjQ5LjY0LTEuMWg1LjExbC42NCAxLjExLS43IDEuNDh6TTE0LjI3IDE1SDkuNzNsLTEuMzUtNC4wMkwxMiA4LjQ0bDMuNjMgMi41NEwxNC4yNyAxNXptMy43OSAyLjIxLTEuMTQtLjEtLjc5LTEuMzcgMS40Ni00LjM0IDEuMzktLjQ3IDEgLjczYy4wMS4xMS4wMi4yMi4wMi4zNCAwIDEuOTktLjczIDMuODEtMS45NCA1LjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTcG9ydHNUZW5uaXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41MiAyLjQ5QzE3LjE4LjE1IDEyLjkuNjIgOS45NyAzLjU1Yy0xLjYgMS42LTIuNTIgMy44Ny0yLjU0IDUuNDYtLjAyIDEuNTguMjYgMy44OS0xLjM1IDUuNWwtNC4yNCA0LjI0IDEuNDIgMS40MiA0LjI0LTQuMjRjMS42MS0xLjYxIDMuOTItMS4zMyA1LjUtMS4zNXMzLjg2LS45NCA1LjQ2LTIuNTRjMi45Mi0yLjkzIDMuNC03LjIxIDEuMDYtOS41NXptLTkuMiA5LjE5Yy0xLjUzLTEuNTMtMS4wNS00LjYxIDEuMDYtNi43MnM1LjE4LTIuNTkgNi43Mi0xLjA2YzEuNTMgMS41MyAxLjA1IDQuNjEtMS4wNiA2Ljcycy01LjE4IDIuNTktNi43MiAxLjA2ek0xOCAxN2MuNTMgMCAxLjA0LjIxIDEuNDEuNTkuNzguNzguNzggMi4wNSAwIDIuODMtLjM3LjM3LS44OC41OC0xLjQxLjU4cy0xLjA0LS4yMS0xLjQxLS41OWMtLjc4LS43OC0uNzgtMi4wNSAwLTIuODMuMzctLjM3Ljg4LS41OCAxLjQxLS41OG0wLTJhMy45OTggMy45OTggMCAwIDAtMi44MyA2LjgzYy43OC43OCAxLjgxIDEuMTcgMi44MyAxLjE3YTMuOTk4IDMuOTk4IDAgMCAwIDIuODMtNi44M0EzLjk5OCAzLjk5OCAwIDAgMCAxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzVm9sbGV5YmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNC4wMUMzLjU4IDUuODQgMiA4LjczIDIgMTJjMCAxLjQ2LjMyIDIuODUuODkgNC4xMUw2IDE0LjMxVjQuMDF6TTExIDExLjQyVjIuMDVjLTEuMDYuMTEtMi4wNy4zOC0zIC43OXYxMC4zMmwzLTEuNzR6TTEyIDEzLjE1bC04LjExIDQuNjhjLjYxLjg0IDEuMzQgMS41OSAyLjE4IDIuMkwxNSAxNC44OWwtMy0xLjc0ek0xMyA3Ljk2djMuNDZsOC4xMSA0LjY4Yy40Mi0uOTMuNy0xLjkzLjgyLTIuOThMMTMgNy45NnpNOC4wNyAyMS4yYzEuMjEuNTEgMi41My44IDMuOTMuOCAzLjM0IDAgNi4yOS0xLjY1IDguMTEtNC4xNkwxNyAxNi4wNCA4LjA3IDIxLjJ6TTIxLjkyIDEwLjgxYy0uNTUtNC42My00LjI2LTguMy04LjkyLTguNzZ2My42bDguOTIgNS4xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3BvcnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMjMgNmMtMS42NiAwLTMuMjIuNjYtNC4zNiAxLjczQzYuNTQgNi43MyA1LjYxIDYgNC41IDZhMi41IDIuNSAwIDAgMCAwIDVjLjIxIDAgLjQxLS4wMy42MS0uMDgtLjA1LjI1LS4wOS41MS0uMS43OGE2LjAwNiA2LjAwNiAwIDAgMCA2LjY4IDYuMjdjMi41NS0uMjggNC42OC0yLjI2IDUuMTktNC43Ny4xNS0uNzEuMTUtMS40LjA2LTIuMDYtLjA5LS42LjM4LTEuMTMuOTktMS4xM0gyMlY2SDExLjIzek00LjUgOWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41LjUuMjIuNS41LS4yMi41LS41LjV6bTYuNSA2Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMVwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN1cmZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAyM2MtMS4wMyAwLTIuMDYtLjI1LTMtLjc1LTEuODkgMS00LjExIDEtNiAwLTEuODkgMS00LjExIDEtNiAwLS45NS41LTEuOTcuNzUtMyAuNzVIMnYtMmgxYzEuMDQgMCAyLjA4LS4zNSAzLTEgMS44MyAxLjMgNC4xNyAxLjMgNiAwIDEuODMgMS4zIDQuMTcgMS4zIDYgMCAuOTEuNjUgMS45NiAxIDMgMWgxdjJoLTF6TTE3IDEuNWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS0yLjU3IDYuOThMMTIuMTggMTAgMTYgMTN2My44NGMuNTMuMzggMS4wMy43OCAxLjQ5IDEuMTctLjY4LjU4LTEuNTUuOTktMi40OS45OS0xLjIgMC0yLjI3LS42Ni0zLTEuNS0uNzMuODQtMS44IDEuNS0zIDEuNS0uMzMgMC0uNjUtLjA1LS45Ni0uMTRDNS4xOSAxNi45IDMgMTQuNzIgMyAxMy4yOCAzIDEyLjI1IDQuMDEgMTIgNC44NSAxMmMuOTggMCAyLjI4LjMxIDMuNy44M2wtLjUzLTMuMWMtLjExLS42Ny4xOC0xLjM4Ljc4LTEuNzlsMi4xNS0xLjQ1LTItLjM3LTIuODIgMS45M0w1IDYuNCA4LjUgNGw1LjU1IDEuMDNjLjQ1LjA5LjkzLjM3IDEuMjIuODlsLjg4IDEuNTVBNS4wMDcgNS4wMDcgMCAwIDAgMjAuNSAxMHYyYTcuMDEgNy4wMSAwIDAgMS02LjA3LTMuNTJ6TTEwLjMgMTEuMWwuNDQgMi42NWMuOTIuNDIgMi40OCAxLjI3IDMuMjYgMS43NVYxNGwtMy43LTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3dpdGNoQWNjb3VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTYgMmMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgMy0zLTEuMzQtMy0zIDEuMzQtMyAzLTN6bTYgMTJIOHYtMS41YzAtMS45OSA0LTMgNi0zczYgMS4wMSA2IDNWMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRodW1iRG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMjRIMFYwaDI0djI0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA0aC0yYy0uNTUgMC0xIC40NS0xIDF2OWMwIC41NS40NSAxIDEgMWgyVjR6TTIuMTcgMTEuMTJjLS4xMS4yNS0uMTcuNTItLjE3LjhWMTNjMCAxLjEuOSAyIDIgMmg1LjVsLS45MiA0LjY1Yy0uMDUuMjItLjAyLjQ2LjA4LjY2LjIzLjQ1LjUyLjg2Ljg4IDEuMjJMMTAgMjJsNi40MS02LjQxYy4zOC0uMzguNTktLjg5LjU5LTEuNDJWNi4zNEMxNyA1LjA1IDE1Ljk1IDQgMTQuNjYgNGgtOC4xYy0uNzEgMC0xLjM2LjM3LTEuNzIuOTdsLTIuNjcgNi4xNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVGh1bWJVcEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMjRIMFYwaDI0djI0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDIwaDJjLjU1IDAgMS0uNDUgMS0xdi05YzAtLjU1LS40NS0xLTEtMUgydjExem0xOS44My03LjEyYy4xMS0uMjUuMTctLjUyLjE3LS44VjExYzAtMS4xLS45LTItMi0yaC01LjVsLjkyLTQuNjVjLjA1LS4yMi4wMi0uNDYtLjA4LS42NmE0LjggNC44IDAgMCAwLS44OC0xLjIyTDE0IDIgNy41OSA4LjQxQzcuMjEgOC43OSA3IDkuMyA3IDkuODN2Ny44NEEyLjM0IDIuMzQgMCAwIDAgOS4zNCAyMGg4LjExYy43IDAgMS4zNi0uMzcgMS43Mi0uOTdsMi42Ni02LjE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUaHVuZGVyc3Rvcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy45MiA3LjAyQzE3LjQ1IDQuMTggMTQuOTcgMiAxMiAyIDkuODIgMiA3LjgzIDMuMTggNi43OCA1LjA2IDQuMDkgNS40MSAyIDcuNzQgMiAxMC41IDIgMTMuNTMgNC40NyAxNiA3LjUgMTZoMTBjMi40OCAwIDQuNS0yLjAyIDQuNS00LjVhNC41IDQuNSAwIDAgMC00LjA4LTQuNDh6TTE0LjggMTdsLTIuOSAzLjMyIDIgMUwxMS41NSAyNGgyLjY1bDIuOS0zLjMyLTItMUwxNy40NSAxN3pNOC44IDE3bC0yLjkgMy4zMiAyIDFMNS41NSAyNEg4LjJsMi45LTMuMzItMi0xTDExLjQ1IDE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRUb3JuYWRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMTEgOCAyMyAzSDFsMi44OSA1ek03Ljk1IDE1IDEyIDIybDQuMDUtN3pNMTguOTUgMTBINS4wNWwxLjc0IDNoMTAuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRyYW5zZ2VuZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOGMxLjkzIDAgMy41IDEuNTcgMy41IDMuNVMxMy45MyAxNSAxMiAxNXMtMy41LTEuNTctMy41LTMuNVMxMC4wNyA4IDEyIDh6bTQuNTMuMzggMy45Ny0zLjk2VjdoMlYxaC02djJoMi41OGwtMy45NyAzLjk3QzE0LjIzIDYuMzYgMTMuMTYgNiAxMiA2cy0yLjIzLjM2LTMuMTEuOTdsLS42NS0uNjUgMS40MS0xLjQxLTEuNDEtMS40Mkw2LjgyIDQuOSA0LjkyIDNINy41VjFoLTZ2NmgyVjQuNDJsMS45MSAxLjktMS40MiAxLjQyTDUuNCA5LjE1bDEuNDEtMS40MS42NS42NWMtLjYuODgtLjk2IDEuOTUtLjk2IDMuMTFhNS41IDUuNSAwIDAgMCA0LjUgNS40MVYxOUg5djJoMnYyaDJ2LTJoMnYtMmgtMnYtMi4wOWE1LjUgNS41IDAgMCAwIDMuNTMtOC41M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHJhdmVsRXhwbG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjMgMTYuOWMuNC0uNy43LTEuNS43LTIuNCAwLTIuNS0yLTQuNS00LjUtNC41UzExIDEyIDExIDE0LjVzMiA0LjUgNC41IDQuNWMuOSAwIDEuNy0uMyAyLjQtLjdsMy4yIDMuMiAxLjQtMS40LTMuMi0zLjJ6bS0zLjguMWMtMS40IDAtMi41LTEuMS0yLjUtMi41czEuMS0yLjUgMi41LTIuNSAyLjUgMS4xIDIuNSAyLjUtMS4xIDIuNS0yLjUgMi41ek0xMiAyMHYyQzYuNDggMjIgMiAxNy41MiAyIDEyUzYuNDggMiAxMiAyYzQuODQgMCA4Ljg3IDMuNDQgOS44IDhoLTIuMDdBOCA4IDAgMCAwIDE1IDQuNTlWNWMwIDEuMS0uOSAyLTIgMmgtMnYyYzAgLjU1LS40NSAxLTEgMUg4djJoMnYzSDlsLTQuNzktNC43OUM0LjA4IDEwLjc5IDQgMTEuMzggNCAxMmMwIDQuNDEgMy41OSA4IDggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kVHN1bmFtaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjY3IDE3LjYzYy0zLjggMi44LTYuMTIuNC02LjY3IDAtLjY2LjQ5LTIuOTIgMi43Ni02LjY3IDBDMy40MyAxOS4wMyAyLjY1IDE5IDIgMTl2MmMxLjE2IDAgMi4zLS4zMiAzLjMzLS45M2E2LjUzNSA2LjUzNSAwIDAgMCA2LjY3IDAgNi41MzUgNi41MzUgMCAwIDAgNi42NyAwYzEuMDMuNjEgMi4xNy45MyAzLjMzLjkzdi0yYy0uNjYgMC0xLjUtLjAyLTMuMzMtMS4zN3pNMTkuMzMgMTJIMjJ2LTJoLTIuNjdDMTcuNSAxMCAxNiA4LjUgMTYgNi42N2MwLTEuMDIuMzgtMS43NCAxLjA5LTMuMzQtMS4zNy0uMjEtMi0uMzMtMy4wOS0uMzNDNy4zNiAzIDIuMTUgOC4wMyAyLjAxIDE0LjVsLS4wMSAyYzEuMTYgMCAyLjMtLjMyIDMuMzMtLjkzYTYuNTM1IDYuNTM1IDAgMCAwIDYuNjcgMCA2LjUzNSA2LjUzNSAwIDAgMCA2LjY3IDBjMS4wMy42MSAyLjE3LjkzIDMuMzMuOTN2LTJjLS42NiAwLTEuNS0uMDItMy4zMy0xLjM3LTMuOCAyLjgtNi4xMi40LTYuNjcgMC0uOS42Ny0uNTQuNDEtLjkxLjYzLS43LS45NC0xLjA5LTIuMDYtMS4wOS0zLjI2IDAtMi41OCAxLjc3LTQuNzQgNC4yMS01LjMzLS4xMy41MS0uMjEgMS4wMi0uMjEgMS41QzE0IDkuNjEgMTYuMzkgMTIgMTkuMzMgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFZhY2NpbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNS41SDhWNGguNWMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtM2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMUg2djEuNUgzYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxVjE1YzAgMS4xLjkgMiAyIDJoMXY0bDIgMS41VjE3aDFjMS4xIDAgMi0uOSAyLTJWNy41Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xek05IDlINy4yNWMtLjQxIDAtLjc1LjM0LS43NS43NXMuMzQuNzUuNzUuNzVIOVYxMkg3LjI1Yy0uNDEgMC0uNzUuMzQtLjc1Ljc1cy4zNC43NS43NS43NUg5VjE1SDVWNy41aDRWOXptMTAuNSAxLjVWMTBjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFoLTVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDF2LjVjMCAuNS0xLjUgMS4xNi0xLjUgM1YyMGMwIDEuMS45IDIgMiAyaDRjMS4xIDAgMi0uOSAyLTJ2LTYuNWMwLTEuODQtMS41LTIuNS0xLjUtM3ptLTMgMFYxMGgxdi41YzAgMS42IDEuNSAyIDEuNSAzdi41aC00di0uNWMwLTEgMS41LTEuNCAxLjUtM3pNMTUgMjB2LTEuNWg0VjIwaC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRWb2xjYW5vIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgtN2wtMiA1SDZsLTQgOWgyMHpNMTMgMWgydjRoLTJ6TTE2LjEyMSA1LjQ2OCAxOC45NSAyLjY0bDEuNDE0IDEuNDE0LTIuODI5IDIuODI4ek03LjY0IDQuMDVsMS40MTQtMS40MTQgMi44MjggMi44MjktMS40MTQgMS40MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdhbGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRINkMzLjc5IDQgMiA1Ljc5IDIgOHY4YzAgMi4yMSAxLjc5IDQgNCA0aDEyYzIuMjEgMCA0LTEuNzkgNC00VjhjMC0yLjIxLTEuNzktNC00LTR6bS0xLjg2IDkuNzdjLS4yNC4yLS41Ny4yOC0uODguMkw0LjE1IDExLjI1QzQuNDUgMTAuNTIgNS4xNiAxMCA2IDEwaDEyYy42NyAwIDEuMjYuMzQgMS42My44NGwtMy40OSAyLjkzek02IDZoMTJjMS4xIDAgMiAuOSAyIDJ2LjU1Yy0uNTktLjM0LTEuMjctLjU1LTItLjU1SDZjLS43MyAwLTEuNDEuMjEtMiAuNTVWOGMwLTEuMS45LTIgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXYXRlckRyb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy01LjMzIDQuNTUtOCA4LjQ4LTggMTEuOCAwIDQuOTggMy44IDguMiA4IDguMnM4LTMuMjIgOC04LjJjMC0zLjMyLTIuNjctNy4yNS04LTExLjh6TTcuODMgMTRjLjM3IDAgLjY3LjI2Ljc0LjYyLjQxIDIuMjIgMi4yOCAyLjk4IDMuNjQgMi44Ny40My0uMDIuNzkuMzIuNzkuNzUgMCAuNC0uMzIuNzMtLjcyLjc1LTIuMTMuMTMtNC42Mi0xLjA5LTUuMTktNC4xMmEuNzUuNzUgMCAwIDEgLjc0LS44N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2F2aW5nSGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDE3YzAgMy4zMS0yLjY5IDYtNiA2di0xLjVjMi40OCAwIDQuNS0yLjAyIDQuNS00LjVIMjN6TTEgN2MwLTMuMzEgMi42OS02IDYtNnYxLjVDNC41MiAyLjUgMi41IDQuNTIgMi41IDdIMXptNy4wMS0yLjY4LTQuNiA0LjZjLTMuMjIgMy4yMi0zLjIyIDguNDUgMCAxMS42N3M4LjQ1IDMuMjIgMTEuNjcgMGw3LjA3LTcuMDdjLjQ5LS40OS40OS0xLjI4IDAtMS43N2ExLjI1IDEuMjUgMCAwIDAtMS43NyAwbC00LjQyIDQuNDItLjcxLS43MSA2LjU0LTYuNTRjLjQ5LS40OS40OS0xLjI4IDAtMS43N3MtMS4yOC0uNDktMS43NyAwbC01LjgzIDUuODMtLjcxLS43MSA2Ljg5LTYuODljLjQ5LS40OS40OS0xLjI4IDAtMS43N3MtMS4yOC0uNDktMS43NyAwbC02Ljg5IDYuODktLjY5LS43IDUuNDgtNS40OGMuNDktLjQ5LjQ5LTEuMjggMC0xLjc3cy0xLjI4LS40OS0xLjc3IDBsLTcuNjIgNy42MmE0LjAwMyA0LjAwMyAwIDAgMS0uMzMgNS4yOGwtLjcxLS43MWEzIDMgMCAwIDAgMC00LjI0bC0uMzUtLjM1IDQuMDctNC4wN2MuNDktLjQ5LjQ5LTEuMjggMC0xLjc3YTEuMjcgMS4yNyAwIDAgMC0xLjc4LjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXaGF0c2FwcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjA1IDQuOTFBOS44MTYgOS44MTYgMCAwIDAgMTIuMDQgMmMtNS40NiAwLTkuOTEgNC40NS05LjkxIDkuOTEgMCAxLjc1LjQ2IDMuNDUgMS4zMiA0Ljk1TDIuMDUgMjJsNS4yNS0xLjM4YzEuNDUuNzkgMy4wOCAxLjIxIDQuNzQgMS4yMSA1LjQ2IDAgOS45MS00LjQ1IDkuOTEtOS45MSAwLTIuNjUtMS4wMy01LjE0LTIuOS03LjAxem0tNy4wMSAxNS4yNGMtMS40OCAwLTIuOTMtLjQtNC4yLTEuMTVsLS4zLS4xOC0zLjEyLjgyLjgzLTMuMDQtLjItLjMxYTguMjY0IDguMjY0IDAgMCAxLTEuMjYtNC4zOGMwLTQuNTQgMy43LTguMjQgOC4yNC04LjI0IDIuMiAwIDQuMjcuODYgNS44MiAyLjQyYTguMTgzIDguMTgzIDAgMCAxIDIuNDEgNS44M2MuMDIgNC41NC0zLjY4IDguMjMtOC4yMiA4LjIzem00LjUyLTYuMTZjLS4yNS0uMTItMS40Ny0uNzItMS42OS0uODEtLjIzLS4wOC0uMzktLjEyLS41Ni4xMi0uMTcuMjUtLjY0LjgxLS43OC45Ny0uMTQuMTctLjI5LjE5LS41NC4wNi0uMjUtLjEyLTEuMDUtLjM5LTEuOTktMS4yMy0uNzQtLjY2LTEuMjMtMS40Ny0xLjM4LTEuNzItLjE0LS4yNS0uMDItLjM4LjExLS41MS4xMS0uMTEuMjUtLjI5LjM3LS40M3MuMTctLjI1LjI1LS40MWMuMDgtLjE3LjA0LS4zMS0uMDItLjQzcy0uNTYtMS4zNC0uNzYtMS44NGMtLjItLjQ4LS40MS0uNDItLjU2LS40M2gtLjQ4Yy0uMTcgMC0uNDMuMDYtLjY2LjMxLS4yMi4yNS0uODYuODUtLjg2IDIuMDcgMCAxLjIyLjg5IDIuNCAxLjAxIDIuNTYuMTIuMTcgMS43NSAyLjY3IDQuMjMgMy43NC41OS4yNiAxLjA1LjQxIDEuNDEuNTIuNTkuMTkgMS4xMy4xNiAxLjU2LjEuNDgtLjA3IDEuNDctLjYgMS42Ny0xLjE4LjIxLS41OC4yMS0xLjA3LjE0LTEuMThzLS4yMi0uMTYtLjQ3LS4yOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2hhdHNob3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41LjY3cy43NCAyLjY1Ljc0IDQuOGMwIDIuMDYtMS4zNSAzLjczLTMuNDEgMy43My0yLjA3IDAtMy42My0xLjY3LTMuNjMtMy43M2wuMDMtLjM2QzUuMjEgNy41MSA0IDEwLjYyIDQgMTRjMCA0LjQyIDMuNTggOCA4IDhzOC0zLjU4IDgtOEMyMCA4LjYxIDE3LjQxIDMuOCAxMy41LjY3ek0xMS43MSAxOWMtMS43OCAwLTMuMjItMS40LTMuMjItMy4xNCAwLTEuNjIgMS4wNS0yLjc2IDIuODEtMy4xMiAxLjc3LS4zNiAzLjYtMS4yMSA0LjYyLTIuNTguMzkgMS4yOS41OSAyLjY1LjU5IDQuMDQgMCAyLjY1LTIuMTUgNC44LTQuOCA0Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFdvbWFuMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjk0IDguMzFDMTMuNjIgNy41MiAxMi44NSA3IDEyIDdzLTEuNjIuNTItMS45NCAxLjMxTDcgMTZoMy41djZoM3YtNkgxN2wtMy4wNi03LjY5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXb21hbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjk0IDguMzFDMTMuNjIgNy41MiAxMi44NSA3IDEyIDdzLTEuNjIuNTItMS45NCAxLjMxTDcgMTZoM3Y2aDR2LTZoM2wtMy4wNi03LjY5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNFwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRXb3Jrc3BhY2VQcmVtaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS42OCAxMy42OSAxMiAxMS45M2wyLjMxIDEuNzYtLjg4LTIuODVMMTUuNzUgOWgtMi44NEwxMiA2LjE5IDExLjA5IDlIOC4yNWwyLjMxIDEuODQtLjg4IDIuODV6TTIwIDEwYzAtNC40Mi0zLjU4LTgtOC04cy04IDMuNTgtOCA4YzAgMi4wMy43NiAzLjg3IDIgNS4yOFYyM2w2LTIgNiAydi03LjcyQTcuOTYgNy45NiAwIDAgMCAyMCAxMHptLTgtNmMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNi02LTIuNjktNi02IDIuNjktNiA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZENoZWNrQm94T3V0bGluZUJsYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQ2hlY2tCb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YTIgMiAwIDAgMCAyLTJWNWEyIDIgMCAwIDAtMi0yem0tOSAxNC01LTUgMS40MS0xLjQxTDEwIDE0LjE3bDcuNTktNy41OUwxOSA4bC05IDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEluZGV0ZXJtaW5hdGVDaGVja0JveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMiAxMEg3di0yaDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFJhZGlvQnV0dG9uQ2hlY2tlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0wLTVDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRSYWRpb0J1dHRvblVuY2hlY2tlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTdGFyQm9yZGVyUHVycGxlNTAwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiA4Ljg5Ljk0IDMuMTFoMi44MmwtMi4yNyAxLjYyLjkzIDMuMDFMMTIgMTQuNzlsLTIuNDIgMS44NC45My0zLjAxTDguMjQgMTJoMi44MkwxMiA4Ljg5TTEyIDJsLTIuNDIgOEgybDYuMTcgNC40MUw1LjgzIDIyIDEyIDE3LjMxIDE4LjE4IDIybC0yLjM1LTcuNTlMMjIgMTBoLTcuNThMMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhckJvcmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDkuMjQtNy4xOS0uNjJMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3IDE4LjE4IDIxbC0xLjYzLTcuMDNMMjIgOS4yNHpNMTIgMTUuNGwtMy43NiAyLjI3IDEtNC4yOC0zLjMyLTIuODggNC4zOC0uMzhMMTIgNi4xbDEuNzEgNC4wNCA0LjM4LjM4LTMuMzIgMi44OCAxIDQuMjhMMTIgMTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhckhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiA5LjI0LTcuMTktLjYyTDEyIDIgOS4xOSA4LjYzIDIgOS4yNGw1LjQ2IDQuNzNMNS44MiAyMSAxMiAxNy4yNyAxOC4xOCAyMWwtMS42My03LjAzTDIyIDkuMjR6TTEyIDE1LjRWNi4xbDEuNzEgNC4wNCA0LjM4LjM4LTMuMzIgMi44OCAxIDQuMjhMMTIgMTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3Rhck91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDkuMjQtNy4xOS0uNjJMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3IDE4LjE4IDIxbC0xLjYzLTcuMDNMMjIgOS4yNHpNMTIgMTUuNGwtMy43NiAyLjI3IDEtNC4yOC0zLjMyLTIuODggNC4zOC0uMzhMMTIgNi4xbDEuNzEgNC4wNCA0LjM4LjM4LTMuMzIgMi44OCAxIDQuMjhMMTIgMTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU3RhclB1cnBsZTUwMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgOC44OS45NCAzLjExaDIuODJsLTIuMjcgMS42Mi45MyAzLjAxTDEyIDE0Ljc5bC0yLjQyIDEuODQuOTMtMy4wMUw4LjI0IDEyaDIuODJMMTIgOC44OU0xMiAybC0yLjQyIDhIMmw2LjE3IDQuNDFMNS44MyAyMiAxMiAxNy4zMSAxOC4xOCAyMmwtMi4zNS03LjU5TDIyIDEwaC03LjU4TDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFN0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTcuMjcgMTguMTggMjFsLTEuNjQtNy4wM0wyMiA5LjI0bC03LjE5LS42MUwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRvZ2dsZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWgxMGMyLjc2IDAgNS0yLjI0IDUtNXMtMi4yNC01LTUtNXpNNyAxNWMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFRvZ2dsZU9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgN0g3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1aDEwYzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01em0wIDhjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRGYWNlVW5sb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4yNSAxM2ExLjI1IDEuMjUgMCAxIDEtMi41IDAgMS4yNSAxLjI1IDAgMCAxIDIuNSAwek0xNSAxMS43NWExLjI1IDEuMjUgMCAxIDAgMCAyLjUgMS4yNSAxLjI1IDAgMCAwIDAtMi41em03IC4yNWMwIDUuNTItNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTIgNi40OCAyIDEyIDJzMTAgNC40OCAxMCAxMHpNMTAuNjYgNC4xMkMxMi4wNiA2LjQ0IDE0LjYgOCAxNy41IDhjLjQ2IDAgLjkxLS4wNSAxLjM0LS4xMkMxNy40NCA1LjU2IDE0LjkgNCAxMiA0Yy0uNDYgMC0uOTEuMDUtMS4zNC4xMnpNNC40MiA5LjQ3YTguMDQ2IDguMDQ2IDAgMCAwIDMuNjYtNC40NCA4LjA0NiA4LjA0NiAwIDAgMC0zLjY2IDQuNDR6TTIwIDEyYzAtLjc4LS4xMi0xLjUzLS4zMy0yLjI0LS43LjE1LTEuNDIuMjQtMi4xNy4yNGExMCAxMCAwIDAgMS03Ljc2LTMuNjlBMTAuMDE2IDEwLjAxNiAwIDAgMSA0IDExLjg2Yy4wMS4wNCAwIC4wOSAwIC4xNCAwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5MjAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTd2My42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1YxN0g3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE3IDUuMzNDMTcgNC42IDE2LjQgNCAxNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM1YxN2gxMFY1LjMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5MzAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTcgNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzVjE1aDEwVjUuMzN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTV2NS42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1YxNUg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5NTAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTcgNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzVjEzaDEwVjUuMzN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTN2Ny42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1YxM0g3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5NjAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTcgNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzVjExaDEwVjUuMzN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTF2OS42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1YxMUg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRCYXR0ZXJ5ODAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTcgNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzVjloMTBWNS4zM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA5djExLjY3QzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjlIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeTkwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE3IDUuMzNDMTcgNC42IDE2LjQgNCAxNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM1Y4aDEwVjUuMzN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOHYxMi42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y4SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlDaGFyZ2luZzIwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyMHYtM0g3djMuNjdDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWMTdoLTQuNEwxMSAyMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM1YxN2g0di0yLjVIOUwxMyA3djUuNWgyTDEyLjYgMTdIMTdWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlDaGFyZ2luZzMwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzdjkuMTdoMkwxMyA3djUuNWgybC0xLjA3IDJIMTdWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDIwdi01LjVIN3Y2LjE3QzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjE0LjVoLTMuMDdMMTEgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlDaGFyZ2luZzUwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC40NyAxMy41IDExIDIwdi01LjVIOWwuNTMtMUg3djcuMTdDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWMTMuNWgtMi41M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM3Y4LjE3aDIuNTNMMTMgN3Y1LjVoMmwtLjUzIDFIMTdWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZEJhdHRlcnlDaGFyZ2luZzYwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzVjExaDMuODdMMTMgN3Y0aDRWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEyLjVoMkwxMSAyMHYtNS41SDlsMS44Ny0zLjVIN3Y5LjY3QzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjExaC00djEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeUNoYXJnaW5nODAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzNWOWg0LjkzTDEzIDd2Mmg0VjUuMzNDMTcgNC42IDE2LjQgNCAxNS42NyA0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMi41aDJMMTEgMjB2LTUuNUg5TDExLjkzIDlIN3YxMS42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y5aC00djMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kQmF0dGVyeUNoYXJnaW5nOTAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzNWOGg1LjQ3TDEzIDd2MWg0VjUuMzNDMTcgNC42IDE2LjQgNCAxNS42NyA0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMi41aDJMMTEgMjB2LTUuNUg5TDEyLjQ3IDhIN3YxMi42N0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y4aC00djQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsQ2VsbHVsYXIxQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTIgMjJoMjBWMkwyIDIyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMiAyIDIyaDEwVjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxDZWxsdWxhcjJCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMiAyMmgyMFYyTDIgMjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEwIDIgMjJoMTJWMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbENlbGx1bGFyM0JhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0yIDIyaDIwVjJMMiAyMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNyAyIDIyaDE1Vjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbENlbGx1bGFyQ29ubmVjdGVkTm9JbnRlcm5ldDFCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMjIgOFYyTDIgMjJoMTZWOGg0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMHY4aDJ2LThoLTJ6bS04IDEyVjEyTDIgMjJoMTB6bTggMGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbENlbGx1bGFyQ29ubmVjdGVkTm9JbnRlcm5ldDJCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMjIgOFYyTDIgMjJoMTZWOGg0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAyMlYxMEwyIDIyaDEyem02LTEydjhoMnYtOGgtMnptMCAxMmgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbENlbGx1bGFyQ29ubmVjdGVkTm9JbnRlcm5ldDNCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMjIgOFYyTDIgMjJoMTZWOGg0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyMlY2TDIgMjJoMTZ6bTItMTJ2OGgydi04aC0yem0wIDEyaDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaTFCYXJMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE1LjUgMTQuNWMwLTIuOCAyLjItNSA1LTUgLjM2IDAgLjcxLjA0IDEuMDUuMTFMMjMuNjQgN2MtLjQ1LS4zNC00LjkzLTQtMTEuNjQtNEM1LjI4IDMgLjgxIDYuNjYuMzYgN0wxMiAyMS41bDMuNS00LjM2VjE0LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTQuNWMwLS4yMy4wNC0uNDYuMDctLjY4LS45Mi0uNDMtMi4xNC0uODItMy41Ny0uODItMyAwLTUuMSAxLjctNS4zIDEuOWw1LjMgNi42IDMuNS00LjM2VjE0LjV6TTIzIDE2di0xLjVjMC0xLjQtMS4xLTIuNS0yLjUtMi41UzE4IDEzLjEgMTggMTQuNVYxNmMtLjUgMC0xIC41LTEgMXY0YzAgLjUuNSAxIDEgMWg1Yy41IDAgMS0uNSAxLTF2LTRjMC0uNS0uNS0xLTEtMXptLTEgMGgtM3YtMS41YzAtLjguNy0xLjUgMS41LTEuNXMxLjUuNyAxLjUgMS41VjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpMUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xMi4wMSAyMS40OSAyMy42NCA3Yy0uNDUtLjM0LTQuOTMtNC0xMS42NC00QzUuMjggMyAuODEgNi42Ni4zNiA3bDExLjYzIDE0LjQ5LjAxLjAxLjAxLS4wMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi42NyAxNC44NiAxMiAyMS40OXYuMDFsLjAxLS4wMSA1LjMzLTYuNjNDMTcuMDYgMTQuNjUgMTUuMDMgMTMgMTIgMTNzLTUuMDYgMS42NS01LjMzIDEuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmkyQmFyTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNS41IDE0LjVjMC0yLjggMi4yLTUgNS01IC4zNiAwIC43MS4wNCAxLjA1LjExTDIzLjY0IDdjLS40NS0uMzQtNC45My00LTExLjY0LTRDNS4yOCAzIC44MSA2LjY2LjM2IDdMMTIgMjEuNWwzLjUtNC4zNlYxNC41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDE0LjVjMC0xLjM0LjUxLTIuNTMgMS4zNC0zLjQyQzE1LjYyIDEwLjUxIDEzLjk4IDEwIDEyIDEwYy00LjEgMC02LjggMi4yLTcuMiAyLjVsNy4yIDkgMy41LTQuMzhWMTQuNXpNMjMgMTZ2LTEuNWMwLTEuNC0xLjEtMi41LTIuNS0yLjVTMTggMTMuMSAxOCAxNC41VjE2Yy0uNSAwLTEgLjUtMSAxdjRjMCAuNS41IDEgMSAxaDVjLjUgMCAxLS41IDEtMXYtNGMwLS41LS41LTEtMS0xem0tMSAwaC0zdi0xLjVjMC0uOC43LTEuNSAxLjUtMS41czEuNS43IDEuNSAxLjVWMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmkyQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTIzLjY0IDdjLS40NS0uMzQtNC45My00LTExLjY0LTRDNS4yOCAzIC44MSA2LjY2LjM2IDdMMTIgMjEuNSAyMy42NCA3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ljc5IDEyLjUyIDEyIDIxLjVsNy4yMS04Ljk5QzE4Ljg1IDEyLjI0IDE2LjEgMTAgMTIgMTBzLTYuODUgMi4yNC03LjIxIDIuNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmkzQmFyTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNS41IDE0LjVjMC0yLjggMi4yLTUgNS01IC4zNiAwIC43MS4wNCAxLjA1LjExTDIzLjY0IDdjLS40NS0uMzQtNC45My00LTExLjY0LTRDNS4yOCAzIC44MSA2LjY2LjM2IDdMMTIgMjEuNWwzLjUtNC4zNlYxNC41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxNnYtMS41YzAtMS40LTEuMS0yLjUtMi41LTIuNVMxOCAxMy4xIDE4IDE0LjVWMTZjLS41IDAtMSAuNS0xIDF2NGMwIC41LjUgMSAxIDFoNWMuNSAwIDEtLjUgMS0xdi00YzAtLjUtLjUtMS0xLTF6bS0xIDBoLTN2LTEuNWMwLS44LjctMS41IDEuNS0xLjVzMS41LjcgMS41IDEuNVYxNnptLTYuNS0xLjVhNC45MiA0LjkyIDAgMCAxIDMuMjctNC42OEMxNy4yOSA4Ljk4IDE0Ljk0IDggMTIgOGMtNC44MSAwLTguMDQgMi42Mi04LjQ3IDIuOTVMMTIgMjEuNWwzLjUtNC4zNlYxNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpM0JhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0yMy42NCA3Yy0uNDUtLjM0LTQuOTMtNC0xMS42NC00QzUuMjggMyAuODEgNi42Ni4zNiA3TDEyIDIxLjUgMjMuNjQgN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41MyAxMC45NSAxMiAyMS41bDguNDctMTAuNTVDMjAuMDQgMTAuNjIgMTYuODEgOCAxMiA4cy04LjA0IDIuNjItOC40NyAyLjk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpQ29ubmVjdGVkTm9JbnRlcm5ldDAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjF2LTloOC45OUwyNCA4Ljk4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS41OSAxNC0yLjA5IDIuMDktLjMtLjNMMTUuNDEgMTQgMTQgMTUuNDFsMS43OSAxLjc5LjMuM0wxNCAxOS41OSAxNS40MSAyMWwyLjA5LTIuMDhMMTkuNTkgMjEgMjEgMTkuNTlsLTIuMDgtMi4wOUwyMSAxNS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaUNvbm5lY3RlZE5vSW50ZXJuZXQxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTEyIDEyaDguOTlMMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThsNi4zNSA2LjM2QTcuOTMyIDcuOTMyIDAgMCAxIDEyIDEzdi0xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMXYtOGMtMi4yMSAwLTQuMi44OS01LjY1IDIuMzRMMTIgMjF6bTktNS41OUwxOS41OSAxNGwtMi4wOSAyLjA5TDE1LjQxIDE0IDE0IDE1LjQxbDIuMDkgMi4wOUwxNCAxOS41OSAxNS40MSAyMWwyLjA5LTIuMDhMMTkuNTkgMjEgMjEgMTkuNTlsLTIuMDgtMi4wOUwyMSAxNS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaUNvbm5lY3RlZE5vSW50ZXJuZXQyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE4LjMxIDEyaDIuNjdMMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThsNC4yMyA0LjI0QTEwLjk2IDEwLjk2IDAgMCAxIDEyIDEwYzIuMzUgMCA0LjUyLjc0IDYuMzEgMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTBjLTMuMDMgMC01Ljc4IDEuMjMtNy43NyAzLjIyTDEyIDIxdi05aDYuMzJjLTEuOC0xLjI2LTMuOTctMi02LjMyLTJ6bTkgNS40MUwxOS41OSAxNGwtMi4wOSAyLjA5TDE1LjQxIDE0IDE0IDE1LjQxbDIuMDkgMi4wOUwxNCAxOS41OSAxNS40MSAyMWwyLjA5LTIuMDhMMTkuNTkgMjEgMjEgMTkuNTlsLTIuMDgtMi4wOUwyMSAxNS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaUNvbm5lY3RlZE5vSW50ZXJuZXQzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTIxLjE4IDExLjggMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThsMi44MiAyLjgyQzUuMTcgOS40NSA4LjQxIDggMTIgOHM2LjgzIDEuNDUgOS4xOCAzLjh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE4IDExLjhDMTguODMgOS40NSAxNS41OSA4IDEyIDhzLTYuODMgMS40NS05LjE4IDMuOEwxMiAyMXYtOWg4Ljk5bC4xOS0uMnpNMTkuNTkgMTRsLTIuMDkgMi4wOUwxNS40MSAxNCAxNCAxNS40MWwyLjA5IDIuMDlMMTQgMTkuNTkgMTUuNDEgMjFsMi4wOS0yLjA4TDE5LjU5IDIxIDIxIDE5LjU5bC0yLjA4LTIuMDlMMjEgMTUuNDEgMTkuNTkgMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmlTdGF0dXNiYXIxQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE3LjY1IDE1LjM0IDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4bDYuMzUgNi4zNkM3LjggMTMuODkgOS43OSAxMyAxMiAxM3M0LjIuODkgNS42NSAyLjM0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy42NSAxNS4zNEMxNi4yIDEzLjg5IDE0LjIxIDEzIDEyIDEzcy00LjIuODktNS42NSAyLjM0TDEyIDIxbDUuNjUtNS42NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaVN0YXR1c2JhcjJCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTkuNzcgMTMuMjIgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThsNC4yMyA0LjI0QzYuMjIgMTEuMjMgOC45NyAxMCAxMiAxMHM1Ljc4IDEuMjMgNy43NyAzLjIyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS43NyAxMy4yMkMxNy43OCAxMS4yMyAxNS4wMyAxMCAxMiAxMHMtNS43OCAxLjIzLTcuNzcgMy4yMkwxMiAyMWw3Ljc3LTcuNzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmlTdGF0dXNiYXIzQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTIxLjE4IDExLjggMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThsMi44MiAyLjgyQzUuMTcgOS40NSA4LjQxIDggMTIgOHM2LjgzIDEuNDUgOS4xOCAzLjh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE4IDExLjhDMTguODMgOS40NSAxNS41OSA4IDEyIDhzLTYuODMgMS40NS05LjE4IDMuOEwxMiAyMWw5LjE4LTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaVN0YXR1c2JhckNvbm5lY3RlZE5vSW50ZXJuZXQxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE3IDE0Ljc2VjhoNS45MkMxOS45NyA1LjUxIDE2LjE2IDQgMTIgNCA3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4bDYuMzUgNi4zNkE3Ljk1IDcuOTUgMCAwIDEgMTIgMTNjMS44OSAwIDMuNjMuNjYgNSAxLjc2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjM1IDE1LjM0IDEyIDIxbDUtNS4wMXYtMS4yM0E3Ljk2MyA3Ljk2MyAwIDAgMCAxMiAxM2MtMi4yMSAwLTQuMi44OS01LjY1IDIuMzR6TTE5IDE4aDJ2MmgtMnpNMTkgMTBoMnY2aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpU3RhdHVzYmFyQ29ubmVjdGVkTm9JbnRlcm5ldDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbE9wYWNpdHlcIjpcIi4zXCIsXCJkXCI6XCJNMTcgMTEuMjFWOGg1LjkyQzE5Ljk3IDUuNTEgMTYuMTYgNCAxMiA0IDcuMzEgNCAzLjA3IDUuOSAwIDguOThsNC4yMyA0LjI0QTEwLjk2IDEwLjk2IDAgMCAxIDE3IDExLjIxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjIzIDEzLjIyIDEyIDIxbDUtNS4wMXYtNC43OGExMC45NiAxMC45NiAwIDAgMC0xMi43NyAyLjAxek0xOSAxOGgydjJoLTJ6TTE5IDEwaDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kU2lnbmFsV2lmaVN0YXR1c2JhckNvbm5lY3RlZE5vSW50ZXJuZXQzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE3IDlWOGg1LjkyQzE5Ljk3IDUuNTEgMTYuMTYgNCAxMiA0IDcuMzEgNCAzLjA3IDUuOSAwIDguOThsMi44MiAyLjgyQTEyLjkzIDEyLjkzIDAgMCAxIDEyIDhjMS43NyAwIDMuNDYuMzYgNSAxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjgyIDExLjggMTIgMjFsNS01LjAxVjljLTEuNTQtLjY0LTMuMjMtMS01LTEtMy41OSAwLTYuODMgMS40NS05LjE4IDMuOHpNMTkgMThoMnYyaC0yek0xOSAxMGgydjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZFNpZ25hbFdpZmlTdGF0dXNiYXJDb25uZWN0ZWROb0ludGVybmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOGgydjJoLTJ6TTE5IDEwaDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOGg1LjkyQzE5Ljk3IDUuNTEgMTYuMTYgNCAxMiA0IDcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjFsNS01LjAxVjh6XCIsXCJvcGFjaXR5XCI6XCIuM1wifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRTaWduYWxXaWZpU3RhdHVzYmFyTm90Q29ubmVjdGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC41MiAxNS4xNmMuNDEtLjczIDEuMTgtMS4xNiAxLjYzLTEuOC40OC0uNjguMjEtMS45NC0xLjE0LTEuOTQtLjg4IDAtMS4zMi42Ny0xLjUgMS4yM2wtMS4zNy0uNTdDMTYuNTEgMTAuOTYgMTcuNTIgMTAgMTkgMTBjMS4yMyAwIDIuMDguNTYgMi41MSAxLjI2LjM3LjYuNTggMS43My4wMSAyLjU3LS42My45My0xLjIzIDEuMjEtMS41NiAxLjgxLS4xMy4yNC0uMTguNC0uMTggMS4xOGgtMS41MmMwLS40MS0uMDctMS4wOC4yNi0xLjY2em0tLjU3IDMuNzljMC0uNTkuNDctMS4wNCAxLjA1LTEuMDQuNTkgMCAxLjA0LjQ1IDEuMDQgMS4wNCAwIC41OC0uNDQgMS4wNS0xLjA0IDEuMDUtLjU4IDAtMS4wNS0uNDctMS4wNS0xLjA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE0IDEzYzAtMi43NiAyLjI0LTUgNS01IDEuNjMgMCAzLjA3Ljc5IDMuOTggMkwyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMWw0LjAxLTQuMDJDMTQuOCAxNi4wNyAxNCAxNC42MyAxNCAxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaUNhbGxpbmcxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE2LjQ5IDQuNWMxLjc5IDAgMy40Mi43MyA0LjU5IDEuOTFsMS4wNi0xLjA2QTcuOTQgNy45NCAwIDAgMCAxNi40OSAzYy0yLjIxIDAtNC4yMS45LTUuNjYgMi4zNGwxLjA2IDEuMDZhNi41NDUgNi41NDUgMCAwIDEgNC42LTEuOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsT3BhY2l0eVwiOlwiLjNcIixcImRcIjpcIk0xNi40OSA2Yy0xLjM4IDAtMi42My41Ni0zLjU0IDEuNDZsMS4wNiAxLjA2Yy42My0uNjMgMS41MS0xLjAzIDIuNDctMS4wM3MxLjg0LjM5IDIuNDcgMS4wM2wxLjA2LTEuMDZBNC45NCA0Ljk0IDAgMCAwIDE2LjQ5IDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjQ5IDljLS41NSAwLTEuMDUuMjItMS40MS41OUwxNi40OSAxMWwxLjQxLTEuNDFjLS4zNi0uMzctLjg2LS41OS0xLjQxLS41OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTcuODNjMS4yOS41NCAyLjYzLjg5IDQgMS4wN3YtMi4yM2wtMi4zNS0uNDdMMTUgMTcuODN6TTcuMzMgNUg1LjFjLjE4IDEuMzcuNTMgMi43IDEuMDcgNEw3LjggNy4zNSA3LjMzIDV6XCIsXCJvcGFjaXR5XCI6XCIuM1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC4yIDE0Ljg3LTMuNjctLjczYy0uNS0uMS0uODMuMi0uOS4yN2wtMi41MiAyLjVjLTIuNS0xLjQzLTQuNTctMy41LTYtNmwyLjUtMi41MmMuMjMtLjI0LjMzLS41Ny4yNy0uOUw5LjEzIDMuOGMtLjA5LS40Ni0uNS0uOC0uOTgtLjhINGMtLjU2IDAtMS4wMy40Ny0xIDEuMDMuMTcgMi44OSAxLjA1IDUuNiAyLjQzIDcuOTcgMS41OCAyLjczIDMuODUgNC45OSA2LjU3IDYuNTcgMi4zNyAxLjM3IDUuMDggMi4yNiA3Ljk3IDIuNDMuNTUuMDMgMS4wMy0uNDMgMS4wMy0xdi00LjE1YzAtLjQ4LS4zNC0uODktLjgtLjk4ek01LjEgNWgyLjIzbC40NyAyLjM1TDYuMTcgOWMtLjU0LTEuMy0uOS0yLjYzLTEuMDctNHpNMTkgMTguOWMtMS4zNy0uMTgtMi43LS41My00LTEuMDdsMS42NS0xLjYzIDIuMzUuNDd2Mi4yM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kV2lmaUNhbGxpbmcyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxPcGFjaXR5XCI6XCIuM1wiLFwiZFwiOlwiTTE2LjQ5IDQuNWMxLjc5IDAgMy40Mi43MyA0LjU5IDEuOTFsMS4wNi0xLjA2QTcuOTQgNy45NCAwIDAgMCAxNi40OSAzYy0yLjIxIDAtNC4yMS45LTUuNjYgMi4zNGwxLjA2IDEuMDZhNi41NDUgNi41NDUgMCAwIDEgNC42LTEuOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNDkgNmMtMS4zOCAwLTIuNjMuNTYtMy41NCAxLjQ2bDEuMDYgMS4wNmMuNjMtLjYzIDEuNTEtMS4wMyAyLjQ3LTEuMDNzMS44NC4zOSAyLjQ3IDEuMDNsMS4wNi0xLjA2QTQuOTQgNC45NCAwIDAgMCAxNi40OSA2ek0xNi40OSA5Yy0uNTUgMC0xLjA1LjIyLTEuNDEuNTlMMTYuNDkgMTFsMS40MS0xLjQxYy0uMzYtLjM3LS44Ni0uNTktMS40MS0uNTl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE3LjgzYzEuMjkuNTQgMi42My44OSA0IDEuMDd2LTIuMjNsLTIuMzUtLjQ3TDE1IDE3Ljgzek03LjMzIDVINS4xYy4xOCAxLjM3LjUzIDIuNyAxLjA3IDRMNy44IDcuMzUgNy4zMyA1elwiLFwib3BhY2l0eVwiOlwiLjNcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuMiAxNC44Ny0zLjY3LS43M2MtLjUtLjEtLjgzLjItLjkuMjdsLTIuNTIgMi41Yy0yLjUtMS40My00LjU3LTMuNS02LTZsMi41LTIuNTJjLjIzLS4yNC4zMy0uNTcuMjctLjlMOS4xMyAzLjhjLS4wOS0uNDYtLjUtLjgtLjk4LS44SDRjLS41NiAwLTEuMDMuNDctMSAxLjAzLjE3IDIuODkgMS4wNSA1LjYgMi40MyA3Ljk3IDEuNTggMi43MyAzLjg1IDQuOTkgNi41NyA2LjU3IDIuMzcgMS4zNyA1LjA4IDIuMjYgNy45NyAyLjQzLjU1LjAzIDEuMDMtLjQzIDEuMDMtMXYtNC4xNWMwLS40OC0uMzQtLjg5LS44LS45OHpNNS4xIDVoMi4yM2wuNDcgMi4zNUw2LjE3IDljLS41NC0xLjMtLjktMi42My0xLjA3LTR6TTE5IDE4LjljLTEuMzctLjE4LTIuNy0uNTMtNC0xLjA3bDEuNjUtMS42MyAyLjM1LjQ3djIuMjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxMjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE1SDUuNXYtNC41SDRWOWgzdjZ6bTYuNS0xLjVoLTN2LTFoMmMuNTUgMCAxLS40NSAxLTFWMTBjMC0uNTUtLjQ1LTEtMS0xSDl2MS41aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxVjE1aDQuNXYtMS41em02IC41di00YzAtLjU1LS40NS0xLTEtMUgxNXYxLjVoM3YxaC0ydjFoMnYxaC0zVjE1aDMuNWMuNTUgMCAxLS40NSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUzZFJvdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUzIDIxLjQ4QTEwLjQ4NyAxMC40ODcgMCAwIDEgMS41NiAxM0guMDZjLjUxIDYuMTYgNS42NiAxMSAxMS45NSAxMWwuNjYtLjAzLTMuODEtMy44MS0xLjMzIDEuMzJ6bS44OS02LjUyYy0uMTkgMC0uMzctLjAzLS41Mi0uMDhhMS4wNyAxLjA3IDAgMCAxLS40LS4yNGMtLjExLS4xLS4yLS4yMi0uMjYtLjM3LS4wNi0uMTQtLjA5LS4zLS4wOS0uNDdoLTEuM2MwIC4zNi4wNy42OC4yMS45NS4xNC4yNy4zMy41LjU2LjY5LjI0LjE4LjUxLjMyLjgyLjQxLjMuMS42Mi4xNS45Ni4xNS4zNyAwIC43Mi0uMDUgMS4wMy0uMTUuMzItLjEuNi0uMjUuODMtLjQ0cy40Mi0uNDMuNTUtLjcyLjItLjYxLjItLjk3YzAtLjE5LS4wMi0uMzgtLjA3LS41NmExLjY3IDEuNjcgMCAwIDAtLjIzLS41MWMtLjEtLjE2LS4yNC0uMy0uNC0uNDMtLjE3LS4xMy0uMzctLjIzLS42MS0uMzFhMi4wOTggMi4wOTggMCAwIDAgLjg5LS43NWMuMS0uMTUuMTctLjMuMjItLjQ2cy4wNy0uMzIuMDctLjQ4YzAtLjM2LS4wNi0uNjgtLjE4LS45NnMtLjI5LS41MS0uNTEtLjY5Yy0uMi0uMTktLjQ3LS4zMy0uNzctLjQzQzkuMTEgOC4wNSA4Ljc3IDggOC40IDhjLS4zNiAwLS42OS4wNS0xIC4xNi0uMy4xMS0uNTcuMjYtLjc5LjQ1LS4yMS4xOS0uMzguNDEtLjUxLjY3LS4xMi4yNi0uMTguNTQtLjE4Ljg1aDEuM2MwLS4xNy4wMy0uMzIuMDktLjQ1cy4xNC0uMjUuMjUtLjM0LjIzLS4xNy4zOC0uMjIuMy0uMDguNDgtLjA4Yy40IDAgLjcuMS44OS4zMS4xOS4yLjI5LjQ5LjI5Ljg2IDAgLjE4LS4wMy4zNC0uMDguNDlzLS4xNC4yNy0uMjUuMzdjLS4xMS4xLS4yNS4xOC0uNDEuMjQtLjE2LjA2LS4zNi4wOS0uNTguMDloLS43N3YxLjAzaC43N2MuMjIgMCAuNDIuMDIuNi4wN3MuMzMuMTMuNDUuMjNjLjEyLjExLjIyLjI0LjI5LjRzLjEuMzUuMS41N2MwIC40MS0uMTIuNzItLjM1LjkzLS4yMy4yMy0uNTUuMzMtLjk1LjMzem04LjU1LTUuOTJjLS4zMi0uMzMtLjctLjU5LTEuMTQtLjc3LS40NC0uMTgtLjkzLS4yNy0xLjQ3LS4yN0gxMnY4aDIuM2MuNTUgMCAxLjA2LS4wOSAxLjUxLS4yN3MuODQtLjQzIDEuMTYtLjc2Yy4zMi0uMzMuNTctLjczLjc0LTEuMTkuMTctLjQ3LjI2LS45OS4yNi0xLjU3di0uNGMwLS41OC0uMDktMS4xLS4yNi0xLjU3cy0uNDItLjg3LS43NC0xLjJ6bS0uMzkgMy4xNmMwIC40Mi0uMDUuNzktLjE0IDEuMTMtLjEuMzMtLjI0LjYyLS40My44NS0uMTkuMjMtLjQzLjQxLS43MS41My0uMjkuMTItLjYyLjE4LS45OS4xOGgtLjkxVjkuMTJoLjk3Yy43MiAwIDEuMjcuMjMgMS42NC42OS4zOC40Ni41NyAxLjEyLjU3IDEuOTl2LjR6TTEyLjAxIDBsLS42Ni4wMyAzLjgxIDMuODEgMS4zMy0xLjMzYzMuMjcgMS41NSA1LjYxIDQuNzIgNS45NiA4LjQ4aDEuNUMyMy40NSA0Ljg0IDE4LjMgMCAxMi4wMSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWJjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTFoLTEuNXYtLjVoLTJ2M2gyVjEzSDIxdjFjMCAuNTUtLjQ1IDEtMSAxaC0zYy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MXpNOCAxMHY1SDYuNXYtMS41aC0yVjE1SDN2LTVjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF6bS0xLjUuNWgtMlYxMmgydi0xLjV6bTcgMS41Yy41NSAwIDEgLjQ1IDEgMXYxYzAgLjU1LS40NSAxLTEgMWgtNFY5aDRjLjU1IDAgMSAuNDUgMSAxdjFjMCAuNTUtLjQ1IDEtMSAxek0xMSAxMC41di43NWgydi0uNzVoLTJ6bTIgMi4yNWgtMnYuNzVoMnYtLjc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjZXNzaWJpbGl0eU5ldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSA2Yy0yLjYxLjctNS42NyAxLTguNSAxcy01Ljg5LS4zLTguNS0xTDMgOGMxLjg2LjUgNCAuODMgNiAxdjEzaDJ2LTZoMnY2aDJWOWMyLS4xNyA0LjE0LS41IDYtMWwtLjUtMnpNMTIgNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBY2Nlc3NpYmlsaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptOSA3aC02djEzaC0ydi02aC0ydjZIOVY5SDNWN2gxOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjZXNzaWJsZUZvcndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCI0LjU0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE3aC0yYzAgMS42NS0xLjM1IDMtMyAzcy0zLTEuMzUtMy0zIDEuMzUtMyAzLTN2LTJjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNXptMy0zLjVoLTEuODZsMS42Ny0zLjY3QzE4LjQyIDguNSAxNy40NCA3IDE1Ljk2IDdoLTUuMmMtLjgxIDAtMS41NC40Ny0xLjg3IDEuMkw4LjIyIDEwbDEuOTIuNTMuNjUtMS41M0gxM2wtMS44MyA0LjFjLS42IDEuMzMuMzkgMi45IDEuODUgMi45SDE4djVoMnYtNS41YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjZXNzaWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTN2LTJjLTEuNTQuMDItMy4wOS0uNzUtNC4wNy0xLjgzbC0xLjI5LTEuNDNjLS4xNy0uMTktLjM4LS4zNC0uNjEtLjQ1LS4wMSAwLS4wMS0uMDEtLjAyLS4wMUgxM2MtLjM1LS4yLS43NS0uMy0xLjE5LS4yNkMxMC43NiA3LjExIDEwIDguMDQgMTAgOS4wOVYxNWMwIDEuMS45IDIgMiAyaDV2NWgydi01LjVjMC0xLjEtLjktMi0yLTJoLTN2LTMuNDVjMS4yOSAxLjA3IDMuMjUgMS45NCA1IDEuOTV6bS05IDdjLTEuNjYgMC0zLTEuMzQtMy0zIDAtMS4zMS44NC0yLjQxIDItMi44M1YxMi4xYTUgNSAwIDEgMCA1LjkgNS45aC0yLjA3Yy0uNDEgMS4xNi0xLjUyIDItMi44MyAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjb3VudEJhbGFuY2VXYWxsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDcuMjhWNWMwLTEuMS0uOS0yLTItMkg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtMi4yOEEyIDIgMCAwIDAgMjIgMTVWOWEyIDIgMCAwIDAtMS0xLjcyek0yMCA5djZoLTdWOWg3ek01IDE5VjVoMTR2MmgtNmMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDZ2Mkg1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2XCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjb3VudEJhbGFuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAxMGgtMnY3aDJ2LTd6bTYgMGgtMnY3aDJ2LTd6bTguNSA5SDJ2MmgxOXYtMnptLTIuNS05aC0ydjdoMnYtN3ptLTctNi43NEwxNi43MSA2SDYuMjlsNS4yMS0yLjc0bTAtMi4yNkwyIDZ2MmgxOVY2bC05LjUtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFjY291bnRCb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTIgMTZIN3YtLjI0QzguNDIgMTcuNjIgMTAuMTYgMTcgMTIgMTdzMy41OC42MiA1IDEuNzZWMTl6bTItMS4xNEMxNy4yIDE2LjA5IDE0LjczIDE1IDEyIDE1cy01LjIgMS4wOS03IDIuODZWNWgxNHYxMi44NnpNMTIgMTNjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTMuOTMgNiAxMiA2IDguNSA3LjU3IDguNSA5LjUgMTAuMDcgMTMgMTIgMTN6bTAtNWMuODMgMCAxLjUuNjcgMS41IDEuNVMxMi44MyAxMSAxMiAxMXMtMS41LS42Ny0xLjUtMS41UzExLjE3IDggMTIgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFjY291bnRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek03LjM1IDE4LjVDOC42NiAxNy41NiAxMC4yNiAxNyAxMiAxN3MzLjM0LjU2IDQuNjUgMS41Yy0xLjMxLjk0LTIuOTEgMS41LTQuNjUgMS41cy0zLjM0LS41Ni00LjY1LTEuNXptMTAuNzktMS4zOGE5Ljk0NyA5Ljk0NyAwIDAgMC0xMi4yOCAwQTcuOTU3IDcuOTU3IDAgMCAxIDQgMTJjMC00LjQyIDMuNTgtOCA4LThzOCAzLjU4IDggOGMwIDEuOTUtLjcgMy43My0xLjg2IDUuMTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZjLTEuOTMgMC0zLjUgMS41Ny0zLjUgMy41UzEwLjA3IDEzIDEyIDEzczMuNS0xLjU3IDMuNS0zLjVTMTMuOTMgNiAxMiA2em0wIDVjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMS4xNyA4IDEyIDhzMS41LjY3IDEuNSAxLjVTMTIuODMgMTEgMTIgMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTB2LTJINHYtNmgxOFY2YzAtMS4xMS0uODktMi0yLTJ6bTAgNEg0VjZoMTZ2MnptNCA5djJoLTN2M2gtMnYtM2gtM3YtMmgzdi0zaDJ2M2gzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDUuNSA2IDQuNXYxYy43IDAgMS4zNy4xIDIgLjI5VjlsLTgtNi04IDZ2MTJoNy42OGMtLjMtLjYyLS41LTEuMjktLjYtMkg2di05bDYtNC41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTMgNS41aC0yLjVWMjFoLTF2LTIuNUgxNXYtMWgyLjVWMTVoMXYyLjVIMjF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZFNob3BwaW5nQ2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOWgyVjZoM1Y0aC0zVjFoLTJ2M0g4djJoM3Yzem0tNCA5Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yem0xMCAwYy0xLjEgMC0xLjk5LjktMS45OSAycy44OSAyIDEuOTkgMiAyLS45IDItMi0uOS0yLTItMnptLTguOS01aDcuNDVjLjc1IDAgMS40MS0uNDEgMS43NS0xLjAzbDMuODYtNy4wMUwxOS40MiA0bC0zLjg3IDdIOC41M0w0LjI3IDJIMXYyaDJsMy42IDcuNTktMS4zNSAyLjQ0QzQuNTIgMTUuMzcgNS40OCAxNyA3IDE3aDEydi0ySDdsMS4xLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRUYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNS4xOCAxMC41OSAxNi42bC00LjI0LTQuMjQgMS40MS0xLjQxIDIuODMgMi44MyAxMC0xMEwyMiA1LjE4ek0xMiAyMGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOGMxLjU3IDAgMy4wNC40NiA0LjI4IDEuMjVsMS40NS0xLjQ1QTEwLjAyIDEwLjAyIDAgMCAwIDEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTBjMS43MyAwIDMuMzYtLjQ0IDQuNzgtMS4yMmwtMS41LTEuNWMtMSAuNDYtMi4xMS43Mi0zLjI4Ljcyem03LTVoLTN2MmgzdjNoMnYtM2gzdi0yaC0zdi0zaC0ydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRUb0RyaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTFjLjE3IDAgLjMzLjAxLjQ5LjAyTDE1IDNIOWw1LjY4IDkuODRBNS45ODYgNS45ODYgMCAwIDEgMTkgMTF6TTguMTUgNC41MiAyIDE1LjUgNSAyMWw2LjMzLTEwLjk3ek0xMy4yIDE1LjVIOS45TDYuNzMgMjFoNy44MUE1LjkzIDUuOTMgMCAwIDEgMTMgMTdjMC0uNTIuMDctMS4wMi4yLTEuNXpNMjAgMTZ2LTNoLTJ2M2gtM3YyaDN2M2gydi0zaDN2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRjaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDV2MmgtM3YzaC0yVjdoLTNWNWgzVjJoMnYzaDN6bS0zIDE0SDVWNWg2VjNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtNmgtMnY2em0tNC02djRoMnYtNGgtMnptLTQgNGgyVjloLTJ2OHptLTIgMHYtNkg3djZoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkbWluUGFuZWxTZXR0aW5ncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxN1wiLFwiY3lcIjpcIjE1LjVcIixcInJcIjpcIjEuMTJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTcuNWMtLjczIDAtMi4xOS4zNi0yLjI0IDEuMDguNS43MSAxLjMyIDEuMTcgMi4yNCAxLjE3czEuNzQtLjQ2IDIuMjQtMS4xN2MtLjA1LS43Mi0xLjUxLTEuMDgtMi4yNC0xLjA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMS4wOVY2LjI3TDEwLjUgMyAzIDYuMjd2NC45MWMwIDQuNTQgMy4yIDguNzkgNy41IDkuODIuNTUtLjEzIDEuMDgtLjMyIDEuNi0uNTVBNS45NzMgNS45NzMgMCAwIDAgMTcgMjNjMy4zMSAwIDYtMi42OSA2LTYgMC0yLjk3LTIuMTYtNS40My01LTUuOTF6TTExIDE3YzAgLjU2LjA4IDEuMTEuMjMgMS42Mi0uMjQuMTEtLjQ4LjIyLS43My4zLTMuMTctMS01LjUtNC4yNC01LjUtNy43NHYtMy42bDUuNS0yLjQgNS41IDIuNHYzLjUxYy0yLjg0LjQ4LTUgMi45NC01IDUuOTF6bTYgNGMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0LTEuNzkgNC00IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkc0NsaWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNzEgMTcuOTlBNS45OTMgNS45OTMgMCAwIDEgNiAxMmMwLTMuMzEgMi42OS02IDYtNiAzLjIyIDAgNS44NCAyLjUzIDUuOTkgNS43MWwtMi4xLS42M2EzLjk5OSAzLjk5OSAwIDEgMC00LjgxIDQuODFsLjYzIDIuMXpNMjIgMTJjMCAuMy0uMDEuNi0uMDQuOWwtMS45Ny0uNTljLjAxLS4xLjAxLS4yMS4wMS0uMzEgMC00LjQyLTMuNTgtOC04LThzLTggMy41OC04IDggMy41OCA4IDggOGMuMSAwIC4yMSAwIC4zMS0uMDFsLjU5IDEuOTdjLS4zLjAzLS42LjA0LS45LjA0LTUuNTIgMC0xMC00LjQ4LTEwLTEwUzYuNDggMiAxMiAyczEwIDQuNDggMTAgMTB6bS0zLjc3IDQuMjZMMjIgMTVsLTEwLTMgMyAxMCAxLjI2LTMuNzcgNC4yNyA0LjI3IDEuOTgtMS45OC00LjI4LTQuMjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGFybUFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMzM3IDEuODEgNC42MDcgMy44NDUtMS4yOCAxLjUzNS00LjYxLTMuODQzem0tMTAuNjc0IDAgMS4yODIgMS41MzZMMy4zMzcgNy4xOWwtMS4yOC0xLjUzNnpNMTIgNGE5IDkgMCAxIDAgLjAwMSAxOC4wMDFBOSA5IDAgMCAwIDEyIDR6bTAgMTZjLTMuODYgMC03LTMuMTQtNy03czMuMTQtNyA3LTcgNyAzLjE0IDcgNy0zLjE0IDctNyA3em0xLTExaC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGFybU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMDQgNi4yOUMxMC42NiA2LjExIDExLjMyIDYgMTIgNmMzLjg2IDAgNyAzLjE0IDcgNyAwIC42OC0uMTEgMS4zNC0uMjkgMS45NmwxLjU2IDEuNTZjLjQ3LTEuMDguNzMtMi4yNy43My0zLjUyQTkgOSAwIDAgMCA4LjQ3IDQuNzJsMS41NyAxLjU3em03LjI5Ny00LjQ4IDQuNjA3IDMuODQ1LTEuMjggMS41MzUtNC42MS0zLjg0M3pNMy4wMiAyLjEgMS42MSAzLjUxbDEuMzcgMS4zNy0uOTIuNzcgMS4yOCAxLjU0IDEuMDYtLjg4LjguOEE4Ljk2NCA4Ljk2NCAwIDAgMCAzIDEzYTkgOSAwIDAgMCA5IDljMi4yNSAwIDQuMzEtLjgzIDUuODktMi4ybDIuMSAyLjEgMS40MS0xLjQxTDMuMDIgMi4xek0xMiAyMGMtMy44NiAwLTctMy4xNC03LTcgMC0xLjcuNjEtMy4yNiAxLjYyLTQuNDdsOS44NSA5Ljg1QTYuOTU2IDYuOTU2IDAgMCAxIDEyIDIwek03LjQ4IDMuNzNsLjQ2LS4zOC0xLjI4LTEuNTQtLjYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFsYXJtT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjU0IDE0LjUzIDguNDEgMTIuNGwtMS4wNiAxLjA2IDMuMTggMy4xOCA2LTYtMS4wNi0xLjA2em02Ljc5Ny0xMi43MiA0LjYwNyAzLjg0NS0xLjI4IDEuNTM1LTQuNjEtMy44NDN6bS0xMC42NzQgMCAxLjI4MiAxLjUzNkwzLjMzNyA3LjE5bC0xLjI4LTEuNTM2ek0xMiA0YTkgOSAwIDEgMCAuMDAxIDE4LjAwMUE5IDkgMCAwIDAgMTIgNHptMCAxNmMtMy44NiAwLTctMy4xNC03LTdzMy4xNC03IDctNyA3IDMuMTQgNyA3LTMuMTQgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGFybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSA4SDExdjZsNC43NSAyLjg1Ljc1LTEuMjMtNC0yLjM3em00LjgzNy02LjE5IDQuNjA3IDMuODQ1LTEuMjggMS41MzUtNC42MS0zLjg0M3ptLTEwLjY3NCAwIDEuMjgyIDEuNTM2TDMuMzM3IDcuMTlsLTEuMjgtMS41MzZ6TTEyIDRhOSA5IDAgMSAwIC4wMDEgMTguMDAxQTkgOSAwIDAgMCAxMiA0em0wIDE2Yy0zLjg2IDAtNy0zLjE0LTctN3MzLjE0LTcgNy03IDcgMy4xNCA3IDctMy4xNCA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFsbEluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjdjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek01IDEwaDMuMTNjLjIxLjc4LjY3IDEuNDcgMS4yNyAySDV2LTJ6bTE0IDJoLTQuNGMuNi0uNTMgMS4wNi0xLjIyIDEuMjctMkgxOXYyem0wLTRoLTV2MWMwIDEuMDctLjkzIDItMiAycy0yLS45My0yLTJWOEg1VjVoMTR2M3ptLTIgN2gtM3YxYzAgLjQ3LS4xOS45LS40OCAxLjI1LS4zNy40NS0uOTIuNzUtMS41Mi43NXMtMS4xNS0uMy0xLjUyLS43NWMtLjI5LS4zNS0uNDgtLjc4LS40OC0xLjI1di0xSDN2NGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi00aC00ek01IDE3aDMuMTNjLjAyLjA5LjA2LjE3LjA5LjI1LjI0LjY4LjY1IDEuMjggMS4xOCAxLjc1SDV2LTJ6bTE0IDJoLTQuNGMuNTQtLjQ3Ljk1LTEuMDcgMS4xOC0xLjc1LjAzLS4wOC4wNy0uMTYuMDktLjI1SDE5djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGxPdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNHY0bDQtNHptMTIgMCA0IDRWNHptNCAxNnYtNGwtNCA0ek00IDIwaDRsLTQtNHptMTUtOGMwLTMuODctMy4xMy03LTctN3MtNyAzLjEzLTcgNyAzLjEzIDcgNyA3IDctMy4xMyA3LTd6bS03IDVjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQW5hbHl0aWNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDEyaDJ2NUg3ek0xNSA3aDJ2MTBoLTJ6TTExIDE0aDJ2M2gtMnpNMTEgMTBoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQW5jaG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgMTUgMS41NSAxLjU1Yy0uOTYgMS42OS0zLjMzIDMuMDQtNS41NSAzLjM3VjExaDNWOWgtM1Y3LjgyQzE0LjE2IDcuNCAxNSA2LjMgMTUgNWMwLTEuNjUtMS4zNS0zLTMtM1M5IDMuMzUgOSA1YzAgMS4zLjg0IDIuNCAyIDIuODJWOUg4djJoM3Y4LjkyYy0yLjIyLS4zMy00LjU5LTEuNjgtNS41NS0zLjM3TDcgMTVsLTQtM3YzYzAgMy44OCA0LjkyIDcgOSA3czktMy4xMiA5LTd2LTNsLTQgM3pNMTIgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQW5kcm9pZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuNiA5LjQ4IDEuODQtMy4xOGMuMTYtLjMxLjA0LS42OS0uMjYtLjg1YS42MzcuNjM3IDAgMCAwLS44My4yMmwtMS44OCAzLjI0YTExLjQ2MyAxMS40NjMgMCAwIDAtOC45NCAwTDUuNjUgNS42N2EuNjQzLjY0MyAwIDAgMC0uODctLjJjLS4yOC4xOC0uMzcuNTQtLjIyLjgzTDYuNCA5LjQ4QTEwLjc4IDEwLjc4IDAgMCAwIDEgMThoMjJhMTAuNzggMTAuNzggMCAwIDAtNS40LTguNTJ6TTcgMTUuMjVhMS4yNSAxLjI1IDAgMSAxIDAtMi41IDEuMjUgMS4yNSAwIDAgMSAwIDIuNXptMTAgMGExLjI1IDEuMjUgMCAxIDEgMC0yLjUgMS4yNSAxLjI1IDAgMCAxIDAgMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQW5ub3VuY2VtZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdMNCAxNy4xN1Y0aDE2djEyek0xMSA1aDJ2NmgtMnptMCA4aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFwaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0IDEyLTIgMi0yLTIgMi0yIDIgMnptLTItNiAyLjEyIDIuMTIgMi41LTIuNUwxMiAxIDcuMzggNS42MmwyLjUgMi41TDEyIDZ6bS02IDYgMi4xMi0yLjEyLTIuNS0yLjVMMSAxMmw0LjYyIDQuNjIgMi41LTIuNUw2IDEyem0xMiAwLTIuMTIgMi4xMiAyLjUgMi41TDIzIDEybC00LjYyLTQuNjItMi41IDIuNUwxOCAxMnptLTYgNi0yLjEyLTIuMTItMi41IDIuNUwxMiAyM2w0LjYyLTQuNjItMi41LTIuNUwxMiAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFwcEJsb2NraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bS0yLjUgNEEyLjUgMi41IDAgMCAxIDE4IDkuNWMuNDIgMCAuOC4xMSAxLjE1LjI5bC0zLjM2IDMuMzZjLS4xOC0uMzUtLjI5LS43My0uMjktMS4xNXptMi41IDIuNWMtLjQyIDAtLjgtLjExLTEuMTUtLjI5bDMuMzYtMy4zNmMuMTguMzUuMjkuNzMuMjkgMS4xNWEyLjUgMi41IDAgMCAxLTIuNSAyLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDE4SDdWNmgxMHYxaDJWM2MwLTEuMS0uOS0yLTItMkg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0ydi00aC0ydjF6TTcgM2gxMHYxSDdWM3ptMTAgMThIN3YtMWgxMHYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXBwU2hvcnRjdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxOEg3VjZoMTB2MWgyVjNjMC0xLjEtLjktMi0yLTJIN2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMnYtNGgtMnYxek03IDNoMTB2MUg3VjN6bTEwIDE4SDd2LTFoMTB2MXpNMjAuMzggOS42MiAyMSAxMWwuNjItMS4zOEwyMyA5bC0xLjM4LS42MkwyMSA3bC0uNjIgMS4zOEwxOSA5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNiA4LTEuMjUgMi43NUwxMiAxMmwyLjc1IDEuMjVMMTYgMTZsMS4yNS0yLjc1TDIwIDEybC0yLjc1LTEuMjV6TTIxIDEzbC0uNjIgMS4zOEwxOSAxNWwxLjM4LjYyTDIxIDE3bC42Mi0xLjM4TDIzIDE1bC0xLjM4LS42MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFycm93Q2lyY2xlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjNC40MSAwIDggMy41OSA4IDhzLTMuNTkgOC04IDgtOC0zLjU5LTgtOCAzLjU5LTggOC04bTAtMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxMFY4aC0ydjRIOGw0IDQgNC00aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dDaXJjbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMHMxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMiAyIDYuNDggMiAxMnptMTggMGMwIDQuNDItMy41OCA4LTggOHMtOC0zLjU4LTgtOCAzLjU4LTggOC04IDggMy41OCA4IDh6TTggMTJsNC00IDEuNDEgMS40MUwxMS44MyAxMUgxNnYyaC00LjE3bDEuNTkgMS41OUwxMiAxNmwtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dDaXJjbGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwUzIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMHpNNCAxMmMwLTQuNDIgMy41OC04IDgtOHM4IDMuNTggOCA4LTMuNTggOC04IDgtOC0zLjU4LTgtOHptMTIgMC00IDQtMS40MS0xLjQxTDEyLjE3IDEzSDh2LTJoNC4xN2wtMS41OS0xLjU5TDEyIDhsNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dDaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOG0wIDJjNS41MiAwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTB6bS0xLTEwdjRoMnYtNGgzbC00LTQtNCA0aDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd091dHdhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDZ2Mmg4LjU5TDUgMTcuNTkgNi40MSAxOSAxNiA5LjQxVjE4aDJWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFycm93UmlnaHRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjAxIDExSDR2MmgxMi4wMXYzTDIwIDEybC0zLjk5LTR2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFydGljbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djE0SDVWNWgxNG0wLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxN0g3di0yaDd2MnptMy00SDd2LTJoMTB2MnptMC00SDdWN2gxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXNwZWN0UmF0aW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEyaC0ydjNoLTN2Mmg1di01ek03IDloM1Y3SDV2NWgyVjl6bTE0LTZIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFzc2Vzc21lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpNNyAxMGgydjdIN3ptNC0zaDJ2MTBoLTJ6bTQgNmgydjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBc3NpZ25tZW50SW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03LS4yNWMuMjIgMCAuNDEuMS41NS4yNS4xMi4xMy4yLjMxLjIuNSAwIC40MS0uMzQuNzUtLjc1Ljc1cy0uNzUtLjM0LS43NS0uNzVjMC0uMTkuMDgtLjM3LjItLjUuMTQtLjE1LjMzLS4yNS41NS0uMjV6TTE5IDE5SDVWNWgxNHYxNHpNMTIgNmMtMS42NSAwLTMgMS4zNS0zIDNzMS4zNSAzIDMgMyAzLTEuMzUgMy0zLTEuMzUtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tNiA2LjQ3VjE4aDEydi0xLjUzYzAtMi41LTMuOTctMy41OC02LTMuNThzLTYgMS4wNy02IDMuNTh6TTguMzEgMTZjLjY5LS41NiAyLjM4LTEuMTIgMy42OS0xLjEyczMuMDEuNTYgMy42OSAxLjEySDguMzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBc3NpZ25tZW50TGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTVoMnYyaC0yem0wLThoMnY2aC0yem04LTRoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLS4xNCAwLS4yNy4wMS0uNC4wNGEyLjAwOCAyLjAwOCAwIDAgMC0xLjQ0IDEuMTljLS4xLjIzLS4xNi40OS0uMTYuNzd2MTRjMCAuMjcuMDYuNTQuMTYuNzhzLjI1LjQ1LjQzLjY0Yy4yNy4yNy42Mi40NyAxLjAxLjU1LjEzLjAyLjI2LjAzLjQuMDNoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTctLjI1Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NS0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NXpNMTkgMTlINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXNzaWdubWVudFJldHVybiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTRoNHYtNGgtNFY3bC01IDUgNSA1em03LTExaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0uMTQgMC0uMjcuMDEtLjQuMDRhMi4wMDggMi4wMDggMCAwIDAtMS40NCAxLjE5Yy0uMS4yMy0uMTYuNDktLjE2Ljc3djE0YzAgLjI3LjA2LjU0LjE2Ljc4cy4yNS40NS40My42NGMuMjcuMjcuNjIuNDcgMS4wMS41NS4xMy4wMi4yNi4wMy40LjAzaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03LS4yNWMuNDEgMCAuNzUuMzQuNzUuNzVzLS4zNC43NS0uNzUuNzUtLjc1LS4zNC0uNzUtLjc1LjM0LS43NS43NS0uNzV6TTE5IDE5SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFzc2lnbm1lbnRSZXR1cm5lZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTJoLTNWOGgtNHY0SDdsNSA1em0yLTloLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLS4xNCAwLS4yNy4wMS0uNC4wNGEyLjAwOCAyLjAwOCAwIDAgMC0xLjQ0IDEuMTljLS4xLjIzLS4xNi40OS0uMTYuNzd2MTRjMCAuMjcuMDYuNTQuMTYuNzhzLjI1LjQ1LjQzLjY0Yy4yNy4yNy42Mi40NyAxLjAxLjU1LjEzLjAyLjI2LjAzLjQuMDNoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTctLjI1Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NS0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NXpNMTkgMTlINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXNzaWdubWVudFR1cm5lZEluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCA5LTEuNDEtMS40MkwxMCAxNC4xN2wtMi41OS0yLjU4TDYgMTNsNCA0em0xLTZoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLS4xNCAwLS4yNy4wMS0uNC4wNGEyLjAwOCAyLjAwOCAwIDAgMC0xLjQ0IDEuMTljLS4xLjIzLS4xNi40OS0uMTYuNzd2MTRjMCAuMjcuMDYuNTQuMTYuNzhzLjI1LjQ1LjQzLjY0Yy4yNy4yNy42Mi40NyAxLjAxLjU1LjEzLjAyLjI2LjAzLjQuMDNoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTctLjI1Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NS0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NXpNMTkgMTlINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXNzaWdubWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNWg3djJIN3ptMC00aDEwdjJIN3ptMC00aDEwdjJIN3ptMTItNGgtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtLjE0IDAtLjI3LjAxLS40LjA0YTIuMDA4IDIuMDA4IDAgMCAwLTEuNDQgMS4xOWMtLjEuMjMtLjE2LjQ5LS4xNi43N3YxNGMwIC4yNy4wNi41NC4xNi43OHMuMjUuNDUuNDMuNjRjLjI3LjI3LjYyLjQ3IDEuMDEuNTUuMTMuMDIuMjYuMDMuNC4wM2gxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNy0uMjVjLjQxIDAgLjc1LjM0Ljc1Ljc1cy0uMzQuNzUtLjc1Ljc1LS43NS0uMzQtLjc1LS43NS4zNC0uNzUuNzUtLjc1ek0xOSAxOUg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBc3N1cmVkV29ya2xvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEwaDJ2N0g1ek0xMSAxMGgydjdoLTJ6TTIyIDYgMTIgMSAyIDZ2MmgyMFY2ek02LjQ3IDYgMTIgMy4yNCAxNy41MyA2SDYuNDd6TTIgMTl2MmgxMi40Yy0uMjEtLjY0LS4zMi0xLjMxLS4zNi0ySDJ6TTE5IDEyLjI2VjEwaC0ydjMuMjZ6TTIwIDE0bC00IDJ2Mi41NWMwIDIuNTIgMS43MSA0Ljg4IDQgNS40NSAyLjI5LS41NyA0LTIuOTMgNC01LjQ1VjE2bC00LTJ6bS0uNzIgNy0yLjAzLTIuMDMgMS4wNi0xLjA2Ljk3Ljk3IDIuNDEtMi4zOCAxLjA2IDEuMDZMMTkuMjggMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvcmVuZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZ2M2w0LTQtNC00djNjLTQuNDIgMC04IDMuNTgtOCA4IDAgMS41Ny40NiAzLjAzIDEuMjQgNC4yNkw2LjcgMTQuOEE1Ljg3IDUuODcgMCAwIDEgNiAxMmMwLTMuMzEgMi42OS02IDYtNnptNi43NiAxLjc0TDE3LjMgOS4yYy40NC44NC43IDEuNzkuNyAyLjggMCAzLjMxLTIuNjkgNi02IDZ2LTNsLTQgNCA0IDR2LTNjNC40MiAwIDgtMy41OCA4LTggMC0xLjU3LS40Ni0zLjAzLTEuMjQtNC4yNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhY2t1cFRhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNnYxNEg2djJoMTRjMS4xIDAgMi0uOSAyLTJWNmgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTkgMTZINHYtNWg1djV6bTcgMGgtNXYtNWg1djV6bTAtN0g0VjRoMTJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhY2t1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMzUgMTAuMDRBNy40OSA3LjQ5IDAgMCAwIDEyIDRDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNEE1Ljk5NCA1Ljk5NCAwIDAgMCAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xOSAxOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNCAwLTIuMDUgMS41My0zLjc2IDMuNTYtMy45N2wxLjA3LS4xMS41LS45NUE1LjQ2OSA1LjQ2OSAwIDAgMSAxMiA2YzIuNjIgMCA0Ljg4IDEuODYgNS4zOSA0LjQzbC4zIDEuNSAxLjUzLjExQTIuOTggMi45OCAwIDAgMSAyMiAxNWMwIDEuNjUtMS4zNSAzLTMgM3pNOCAxM2gyLjU1djNoMi45di0zSDE2bC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYWxhbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNy44M2MuODUtLjMgMS41My0uOTggMS44My0xLjgzSDE4bC0zIDdjMCAxLjY2IDEuNTcgMyAzLjUgM3MzLjUtMS4zNCAzLjUtM2wtMy03aDJWNGgtNi4xN2MtLjQxLTEuMTctMS41Mi0yLTIuODMtMnMtMi40Mi44My0yLjgzIDJIM3YyaDJsLTMgN2MwIDEuNjYgMS41NyAzIDMuNSAzUzkgMTQuNjYgOSAxM0w2IDZoMy4xN2MuMy44NS45OCAxLjUzIDEuODMgMS44M1YxOUgydjJoMjB2LTJoLTlWNy44M3pNMjAuMzcgMTNoLTMuNzRsMS44Ny00LjM2TDIwLjM3IDEzem0tMTMgMEgzLjYzTDUuNSA4LjY0IDcuMzcgMTN6TTEyIDZjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdGNoUHJlZGljdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDhIN2MtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYxMGMwLTEuMS0uOS0yLTItMnptLTQgMTIuNWgtMlYxOWgydjEuNXptMC0yLjVoLTJjMC0xLjUtMi41LTMtMi41LTUgMC0xLjkzIDEuNTctMy41IDMuNS0zLjVzMy41IDEuNTcgMy41IDMuNWMwIDItMi41IDMuNS0yLjUgNXptNS0xMS41SDZDNiA1LjY3IDYuNjcgNSA3LjUgNWg5Yy44MyAwIDEuNS42NyAxLjUgMS41em0tMS0zSDdDNyAyLjY3IDcuNjcgMiA4LjUgMmg3Yy44MyAwIDEuNS42NyAxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9va09ubGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDRIN1YzaDEwdjF6bTAgMTdIN3YtMWgxMHYxem0wLTIwSDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNNyA2aDEwdjEySDdWNnptOSA1VjkuMTRDMTYgOC41MSAxNS41NSA4IDE1IDhIOWMtLjU1IDAtMSAuNTEtMSAxLjE0djEuOTZjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDF2MS43NmMwIC42My40NSAxLjE0IDEgMS4xNGg2Yy41NSAwIDEtLjUxIDEtMS4xNFYxM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMXptLTMuNSAzLjVoLTF2LTFoMXYxem0wLTJoLTF2LTFoMXYxem0wLTJoLTF2LTFoMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTkgNGgydjVsLTEtLjc1TDkgOVY0em05IDE2SDZWNGgxdjlsMy0yLjI1TDEzIDEzVjRoNXYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvb2ttYXJrQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTF2Ni45N2wtNS0yLjE0LTUgMi4xNFY1aDZWM0g3Yy0xLjEgMC0yIC45LTIgMnYxNmw3LTMgNyAzVjExaC0yem00LTRoLTJ2MmgtMlY3aC0yVjVoMlYzaDJ2MmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb29rbWFya0FkZGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTF2Ni45N2wtNS0yLjE0LTUgMi4xNFY1aDZWM0g3Yy0xLjEgMC0yIC45LTIgMnYxNmw3LTMgNyAzVjExaC0yem0uODMtMkwxNSA2LjE3bDEuNDEtMS40MSAxLjQxIDEuNDEgMy41NC0zLjU0IDEuNDEgMS40MUwxNy44MyA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9va21hcmtCb3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDNIN2MtMS4xIDAtMiAuOS0yIDJ2MTZsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yem0wIDE1LTUtMi4xOEw3IDE4VjVoMTB2MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb29rbWFya1JlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDExdjYuOTdsLTUtMi4xNC01IDIuMTRWNWg2VjNIN2MtMS4xIDAtMiAuOS0yIDJ2MTZsNy0zIDcgM1YxMWgtMnptNC00aC02VjVoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9va21hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDNIN2MtMS4xIDAtMiAuOS0yIDJ2MTZsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9va21hcmtzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA3djEyLjk3bC00LjIxLTEuODEtLjc5LS4zNC0uNzkuMzRMNSAxOS45N1Y3aDEwbTQtNkg4Ljk5QzcuODkgMSA3IDEuOSA3IDNoMTBjMS4xIDAgMiAuOSAyIDJ2MTNsMiAxVjNjMC0xLjEtLjktMi0yLTJ6bS00IDRINWMtMS4xIDAtMiAuOS0yIDJ2MTZsNy0zIDcgM1Y3YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJvd3NlR2FsbGVyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgM2E5IDkgMCAxIDAgLjAwMSAxOC4wMDFBOSA5IDAgMCAwIDkgM3ptMCAxNmMtMy44NiAwLTctMy4xNC03LTdzMy4xNC03IDctNyA3IDMuMTQgNyA3LTMuMTQgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDdIOHY1LjQxbDMuNzkgMy44IDEuNDItMS40Mi0zLjIxLTMuMnpNMTcuOTkgMy41MnYyLjE2QTYuOTkgNi45OSAwIDAgMSAyMiAxMmMwIDIuNzktMS42NCA1LjItNC4wMSA2LjMydjIuMTZDMjEuNDggMTkuMjQgMjQgMTUuOTEgMjQgMTJzLTIuNTItNy4yNC02LjAxLTguNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCdWdSZXBvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDhoLTIuODFhNS45ODUgNS45ODUgMCAwIDAtMS44Mi0xLjk2TDE3IDQuNDEgMTUuNTkgM2wtMi4xNyAyLjE3QzEyLjk2IDUuMDYgMTIuNDkgNSAxMiA1cy0uOTYuMDYtMS40MS4xN0w4LjQxIDMgNyA0LjQxbDEuNjIgMS42M0M3Ljg4IDYuNTUgNy4yNiA3LjIyIDYuODEgOEg0djJoMi4wOWMtLjA1LjMzLS4wOS42Ni0uMDkgMXYxSDR2MmgydjFjMCAuMzQuMDQuNjcuMDkgMUg0djJoMi44MWMxLjA0IDEuNzkgMi45NyAzIDUuMTkgM3M0LjE1LTEuMjEgNS4xOS0zSDIwdi0yaC0yLjA5Yy4wNS0uMzMuMDktLjY2LjA5LTF2LTFoMnYtMmgtMnYtMWMwLS4zNC0uMDQtLjY3LS4wOS0xSDIwVjh6bS00IDR2M2MwIC4yMi0uMDMuNDctLjA3LjdsLS4xLjY1LS4zNy42NWMtLjcyIDEuMjQtMi4wNCAyLTMuNDYgMnMtMi43NC0uNzctMy40Ni0ybC0uMzctLjY0LS4xLS42NUE0LjI3IDQuMjcgMCAwIDEgOCAxNXYtNGMwLS4yMy4wMy0uNDguMDctLjdsLjEtLjY1LjM3LS42NWMuMy0uNTIuNzItLjk3IDEuMjEtMS4zMWwuNTctLjM5Ljc0LS4xOGEzLjc4NyAzLjc4NyAwIDAgMSAxLjg5IDBsLjY4LjE2LjYxLjQyYy41LjM0LjkxLjc4IDEuMjEgMS4zMWwuMzguNjUuMS42NWMuMDQuMjIuMDcuNDcuMDcuNjl2MXptLTYgMmg0djJoLTR6bTAtNGg0djJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCdWlsZENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjQ5IDExLjM4Yy40My0xLjIyLjE3LTIuNjQtLjgxLTMuNjJhMy40NjggMy40NjggMCAwIDAtNC4xLS41OWwyLjM1IDIuMzUtMS40MSAxLjQxLTIuMzUtMi4zNWMtLjcxIDEuMzItLjUyIDIuOTkuNTkgNC4xLjk4Ljk4IDIuNCAxLjI0IDMuNjIuODFsMy40MSAzLjQxYy4yLjIuNTEuMi43MSAwbDEuNC0xLjRjLjItLjIuMi0uNTEgMC0uNzFsLTMuNDEtMy40MXpcIn0sXCJjaGlsZFwiOltdfV19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnVpbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjYxIDE4Ljk5LTkuMDgtOS4wOGMuOTMtMi4zNC40NS01LjEtMS40NC03QzkuNzkuNjEgNi4yMS40IDMuNjYgMi4yNkw3LjUgNi4xMSA2LjA4IDcuNTIgMi4yNSAzLjY5Qy4zOSA2LjIzLjYgOS44MiAyLjkgMTIuMTFjMS44NiAxLjg2IDQuNTcgMi4zNSA2Ljg5IDEuNDhsOS4xMSA5LjExYy4zOS4zOSAxLjAyLjM5IDEuNDEgMGwyLjMtMi4zYy40LS4zOC40LTEuMDEgMC0xLjQxem0tMyAxLjYtOS40Ni05LjQ2Yy0uNjEuNDUtMS4yOS43Mi0yIC44Mi0xLjM2LjItMi43OS0uMjEtMy44My0xLjI1QzMuMzcgOS43NiAyLjkzIDguNSAzIDcuMjZsMy4wOSAzLjA5IDQuMjQtNC4yNC0zLjA5LTMuMDljMS4yNC0uMDcgMi40OS4zNyAzLjQ0IDEuMzFhNC40NjkgNC40NjkgMCAwIDEgMS4yNCAzLjk2IDQuMzUgNC4zNSAwIDAgMS0uODggMS45Nmw5LjQ1IDkuNDUtLjg4Ljg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FjaGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSA4LTQgNGgzYzAgMy4zMS0yLjY5IDYtNiA2YTUuODcgNS44NyAwIDAgMS0yLjgtLjdsLTEuNDYgMS40NkE3LjkzIDcuOTMgMCAwIDAgMTIgMjBjNC40MiAwIDgtMy41OCA4LThoM2wtNC00ek02IDEyYzAtMy4zMSAyLjY5LTYgNi02IDEuMDEgMCAxLjk3LjI1IDIuOC43bDEuNDYtMS40NkE3LjkzIDcuOTMgMCAwIDAgMTIgNGMtNC40MiAwLTggMy41OC04IDhIMWw0IDQgNC00SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWxlbmRhck1vbnRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNGgtMVYyaC0ydjJIOFYySDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDIwYTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjEwaDE0djEwem0wLTEySDVWNmgxNHYyek05IDE0SDd2LTJoMnYyem00IDBoLTJ2LTJoMnYyem00IDBoLTJ2LTJoMnYyem0tOCA0SDd2LTJoMnYyem00IDBoLTJ2LTJoMnYyem00IDBoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FsZW5kYXJUb2RheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM2gtMVYxaC0ydjJIN1YxSDV2Mkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMThINFYxMGgxNnYxMXptMC0xM0g0VjVoMTZ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGVuZGFyVmlld0RheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxN2gxOHYySDN6bTE2LTV2MUg1di0xaDE0bTItMkgzdjVoMTh2LTV6TTMgNmgxOHYySDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWxlbmRhclZpZXdNb250aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTggMTFINFY2aDR2NXptNiAwaC00VjZoNHY1em02IDBoLTRWNmg0djV6TTggMThINHYtNWg0djV6bTYgMGgtNHYtNWg0djV6bTYgMGgtNHYtNWg0djV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWxlbmRhclZpZXdXZWVrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTcgMmgyLjV2MTJIMTNWNnptLTIgMTJIOC41VjZIMTF2MTJ6TTQgNmgyLjV2MTJINFY2em0xNiAxMmgtMi41VjZIMjB2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW1lcmFFbmhhbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxMC0uOTQgMi4wNkw5IDEzbDIuMDYuOTRMMTIgMTZsLjk0LTIuMDZMMTUgMTNsLTIuMDYtLjk0em04LTVoLTMuMTdMMTUgM0g5TDcuMTcgNUg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY3aDQuMDVsLjU5LS42NUw5Ljg4IDVoNC4yNGwxLjI0IDEuMzUuNTkuNjVIMjB2MTJ6TTEyIDhjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0wIDhjLTEuNjUgMC0zLTEuMzUtMy0zczEuMzUtMyAzLTMgMyAxLjM1IDMgMy0xLjM1IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FuY2VsU2NoZWR1bGVTZW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSA5Yy0uNDIgMC0uODMuMDQtMS4yNC4xMUwxLjAxIDMgMSAxMGwxMC4wNiAxLjM0Yy0uNDIuNDQtLjc4LjkzLTEuMDkgMS40NkwxIDE0bC4wMSA3IDguMDctMy40NkM5LjU5IDIxLjE5IDEyLjcxIDI0IDE2LjUgMjRjNC4xNCAwIDcuNS0zLjM2IDcuNS03LjVTMjAuNjQgOSAxNi41IDl6TTMgOC4yNWwuMDEtMi4yMiA3LjUxIDMuMjItNy41Mi0xem02LjEgNy4xMUwzIDE3Ljk3di0yLjIybDYuMTctLjgyYy0uMDMuMTQtLjA1LjI4LS4wNy40M3pNMTYuNSAyMmMtMy4wMyAwLTUuNS0yLjQ3LTUuNS01LjVzMi40Ny01LjUgNS41LTUuNSA1LjUgMi40NyA1LjUgNS41LTIuNDcgNS41LTUuNSA1LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4LjI3IDE0LjAzLTEuNzcgMS43Ni0xLjc3LTEuNzYtLjcuNyAxLjc2IDEuNzctMS43NiAxLjc3LjcuNyAxLjc3LTEuNzYgMS43NyAxLjc2LjctLjctMS43Ni0xLjc3IDEuNzYtMS43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhcmRHaWZ0Y2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtMi4xOGMuMTEtLjMxLjE4LS42NS4xOC0xYTIuOTk2IDIuOTk2IDAgMCAwLTUuNS0xLjY1bC0uNS42Ny0uNS0uNjhDMTAuOTYgMi41NCAxMC4wNSAyIDkgMiA3LjM0IDIgNiAzLjM0IDYgNWMwIC4zNS4wNy42OS4xOCAxSDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE5YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjhjMC0xLjExLS44OS0yLTItMnptLTUtMmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xek05IDRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMTEgMTVINHYtMmgxNnYyem0wLTVINFY4aDUuMDhMNyAxMC44MyA4LjYyIDEyIDEyIDcuNGwzLjM4IDQuNkwxNyAxMC44MyAxNC45MiA4SDIwdjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYXJkTWVtYmVyc2hpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjExIDAtMiAuODktMiAydjExYzAgMS4xMS44OSAyIDIgMmg0djVsNC0yIDQgMnYtNWg0YzEuMTEgMCAyLS44OSAyLTJWNGMwLTEuMTEtLjg5LTItMi0yem0wIDEzSDR2LTJoMTZ2MnptMC01SDRWNGgxNnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FyZFRyYXZlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtM1Y0YzAtMS4xMS0uODktMi0yLTJIOWMtMS4xMSAwLTIgLjg5LTIgMnYySDRjLTEuMTEgMC0yIC44OS0yIDJ2MTFjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yek05IDRoNnYySDlWNHptMTEgMTVINHYtMmgxNnYyem0wLTVINFY4aDN2MmgyVjhoNnYyaDJWOGgzdjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGFuZ2VIaXN0b3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3Ljc3IDE4LjM5IDE4SDUuNjFMMTIgNy43N00xMiA0IDIgMjBoMjBMMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoZWNrQ2lyY2xlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTQuNTktMTIuNDJMMTAgMTQuMTdsLTIuNTktMi41OEw2IDEzbDQgNCA4LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGVja0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTQuNTktMTIuNDJMMTAgMTQuMTdsLTIuNTktMi41OEw2IDEzbDQgNCA4LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaHJvbWVSZWFkZXJNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEzYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNMyAxOVY2aDh2MTNIM3ptMTggMGgtOFY2aDh2MTN6bS03LTkuNWg2VjExaC02em0wIDIuNWg2djEuNWgtNnptMCAyLjVoNlYxNmgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNpcmNsZU5vdGlmaWNhdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE4LjVjLjgzIDAgMS41LS42NyAxLjUtMS41aC0zYzAgLjgzLjY3IDEuNSAxLjUgMS41ek0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptNC04LjYxYzAtMi4xMS0xLjAzLTMuOTItMy00LjM5di0uNWMwLS41Ny0uNDMtMS0xLTFzLTEgLjQzLTEgMVY3Yy0xLjk3LjQ3LTMgMi4yNy0zIDQuMzlWMTRIN3YyaDEwdi0yaC0xdi0yLjYxek0xNCAxNGgtNHYtM2MwLTEuMS45LTIgMi0yczIgLjkgMiAydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTkgNGgydjVsLTEtLjc1TDkgOVY0em05IDE2SDZWNGgxdjlsMy0yLjI1TDEzIDEzVjRoNXYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3NlRnVsbHNjcmVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDMuNDEgMTYuNzEgOC43IDIwIDEyaC04VjRsMy4yOSAzLjI5TDIwLjU5IDIgMjIgMy40MXpNMy40MSAyMmw1LjI5LTUuMjlMMTIgMjB2LThINGwzLjI5IDMuMjlMMiAyMC41OSAzLjQxIDIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29kZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjE3IDEyLTQuNTgtNC41OUwxNiA2bDYgNi0zLjU5IDMuNTlMMTcgMTQuMTcgMTkuMTcgMTJ6TTEuMzkgNC4yMmw0LjE5IDQuMTlMMiAxMmw2IDYgMS40MS0xLjQxTDQuODMgMTIgNyA5LjgzbDEyLjc4IDEyLjc4IDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40IDE2LjYgNC44IDEybDQuNi00LjZMOCA2bC02IDYgNiA2IDEuNC0xLjR6bTUuMiAwIDQuNi00LjYtNC42LTQuNkwxNiA2bDYgNi02IDYtMS40LTEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbW1lbnRCYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTRWNmgtNXY4bDIuNS0xLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRINmwtMiAyVjRoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb21taXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi45IDExYTUgNSAwIDAgMC05LjggMEgydjJoNS4xYTUgNSAwIDAgMCA5LjggMEgyMnYtMmgtNS4xek0xMiAxNWMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb21tdXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0SDVDMy4zNCA0IDIgNS4zNCAyIDd2OGMwIDEuNjYgMS4zNCAzIDMgM2wtMSAxdjFoMWwyLTJoMnYtNUg0VjZoOXYyaDJWN2MwLTEuNjYtMS4zNC0zLTMtM3pNNSAxNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xNS41Ny00LjM0Yy0uMTQtLjQtLjUyLS42Ni0uOTctLjY2aC03LjE5Yy0uNDYgMC0uODMuMjYtLjk4LjY2bC0xLjQyIDQuMTF2NS41MWMwIC4zOC4zMS43Mi42OS43MmguNjJjLjM4IDAgLjY4LS4zOC42OC0uNzZWMThoOHYxLjI0YzAgLjM4LjMxLjc2LjY5Ljc2aC42MWMuMzggMCAuNjktLjM0LjY5LS43MmwuMDEtMS4zN3YtNC4xNGwtMS40My00LjExem0tOC4xNi4zNGg3LjE5bDEuMDMgM2gtOS4yNWwxLjAzLTN6TTEyIDE2Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTggMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29tcGFyZUFycm93cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4wMSAxNEgydjJoNy4wMXYzTDEzIDE1bC0zLjk5LTR2M3ptNS45OC0xdi0zSDIyVjhoLTcuMDFWNUwxMSA5bDMuOTkgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbXByZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDl2MmgxNlY5SDR6bTEyLTUtMS40MS0xLjQxTDEzIDQuMTdWMWgtMnYzLjE5TDkuMzkgMi42MSA4IDRsNCA0IDQtNHpNNCAxNGgxNnYtMkg0djJ6bTQgNSAxLjM5IDEuMzlMMTEgMTguODFWMjJoMnYtMy4xN2wxLjU5IDEuNTlMMTYgMTlsLTQtNC00IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb250YWN0UGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjE3IDQgMTggOC44M1YyMEg2VjRoNy4xN00xNCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0tMiAxMmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTQgMy40M2MwLS44MS0uNDgtMS41My0xLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgOCAxNy40M1YxOGg4di0uNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb250YWN0U3VwcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMjMuNTl2LTMuNmMtNS4wMS0uMjYtOS00LjQyLTktOS40OUMyIDUuMjYgNi4yNiAxIDExLjUgMVMyMSA1LjI2IDIxIDEwLjVjMCA0Ljk1LTMuNDQgOS45My04LjU3IDEyLjRsLTEuNDMuNjl6TTExLjUgM0M3LjM2IDMgNCA2LjM2IDQgMTAuNVM3LjM2IDE4IDExLjUgMThIMTN2Mi4zYzMuNjQtMi4zIDYtNi4wOCA2LTkuOEMxOSA2LjM2IDE1LjY0IDMgMTEuNSAzem0tMSAxMS41aDJ2MmgtMnptMi0xLjVoLTJjMC0zLjI1IDMtMyAzLTUgMC0xLjEtLjktMi0yLTJzLTIgLjktMiAyaC0yYzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAyLjUtMyAyLjc1LTMgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRhY3RsZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMSAxMC4xOGE0LjM4NCA0LjM4NCAwIDAgMSAwIDMuNjZsMS4zNy42MmMuMzctLjgxLjU1LTEuNjUuNTQtMi41LS4wMS0uODQtLjE5LTEuNjUtLjU0LTIuNGwtMS4zNy42MnpNMTMuMzMgNy4zM2MuNzggMS41NyAxLjE4IDMuMTQgMS4xOCA0LjY0IDAgMS41MS0uNCAzLjA5LTEuMTggNC42OWwxLjM1LjY2Yy44OC0xLjgxIDEuMzMtMy42MSAxLjMzLTUuMzUgMC0xLjc0LS40NS0zLjUzLTEuMzMtNS4zMWwtMS4zNS42N3pNMTAuMiA4LjcyYy41MyAxLjA3LjggMi4yMS44IDMuNCAwIDEuMTctLjI2IDIuMjMtLjc4IDMuMTVsMS4zLjc0Yy42NS0xLjE1Ljk4LTIuNDUuOTgtMy44OSAwLTEuNDItLjMyLTIuNzktLjk2LTQuMDdsLTEuMzQuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb3B5cmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjA4IDEwLjg2Yy4wNS0uMzMuMTYtLjYyLjMtLjg3cy4zNC0uNDYuNTktLjYyYy4yNC0uMTUuNTQtLjIyLjkxLS4yMy4yMy4wMS40NC4wNS42My4xMy4yLjA5LjM4LjIxLjUyLjM2cy4yNS4zMy4zNC41My4xMy40Mi4xNC42NGgxLjc5Yy0uMDItLjQ3LS4xMS0uOS0uMjgtMS4yOXMtLjQtLjczLS43LTEuMDEtLjY2LS41LTEuMDgtLjY2LS44OC0uMjMtMS4zOS0uMjNjLS42NSAwLTEuMjIuMTEtMS43LjM0cy0uODguNTMtMS4yLjkyLS41Ni44NC0uNzEgMS4zNlM4IDExLjI5IDggMTEuODd2LjI3YzAgLjU4LjA4IDEuMTIuMjMgMS42NHMuMzkuOTcuNzEgMS4zNS43Mi42OSAxLjIuOTFjLjQ4LjIyIDEuMDUuMzQgMS43LjM0LjQ3IDAgLjkxLS4wOCAxLjMyLS4yM3MuNzctLjM2IDEuMDgtLjYzLjU2LS41OC43NC0uOTQuMjktLjc0LjMtMS4xNWgtMS43OWMtLjAxLjIxLS4wNi40LS4xNS41OHMtLjIxLjMzLS4zNi40Ni0uMzIuMjMtLjUyLjNjLS4xOS4wNy0uMzkuMDktLjYuMS0uMzYtLjAxLS42Ni0uMDgtLjg5LS4yMy0uMjUtLjE2LS40NS0uMzctLjU5LS42MnMtLjI1LS41NS0uMy0uODgtLjA4LS42Ny0uMDgtMXYtLjI3YzAtLjM1LjAzLS42OC4wOC0xLjAxek0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyZWRpdENhcmRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjgzIDRIMjBjMS4xMSAwIDIgLjg5IDIgMnYxMmMwIC4zNC0uMDguNjYtLjIzLjk0TDIwIDE3LjE3VjEyaC01LjE3bC00LTRIMjBWNkg4LjgzbC0yLTJ6bTEzLjY2IDE5LjMxTDE3LjE3IDIwSDRjLTEuMTEgMC0yLS44OS0yLTJsLjAxLTEyYzAtLjM0LjA4LS42Ni4yMy0uOTNMLjY5IDMuNTEgMi4xIDIuMWwxOS44IDE5LjgtMS40MSAxLjQxek00IDYuODNWOGgxLjE3TDQgNi44M3pNMTUuMTcgMThsLTYtNkg0djZoMTEuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcmVkaXRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0di02aDE2djZ6bTAtMTBINFY2aDE2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMTR2LTFIMTF2LjVoMnYtMWgtMi41Yy0uNTUgMC0xLS40NS0xLTFWMTBjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MUgxM3YtLjVoLTJ2MWgyLjVjLjU1IDAgMSAuNDUgMSAxVjE0YzAgLjU1LS40NSAxLTEgMWgtM2MtLjU1IDAtMS0uNDUtMS0xem03LjUgMWgzYy41NSAwIDEtLjQ1IDEtMXYtMS41YzAtLjU1LS40NS0xLTEtMWgtMi41di0xaDJ2LjVIMjF2LTFjMC0uNTUtLjQ1LTEtMS0xaC0zYy0uNTUgMC0xIC40NS0xIDF2MS41YzAgLjU1LjQ1IDEgMSAxaDIuNXYxaC0yVjEzSDE2djFjMCAuNTUuNDUgMSAxIDF6bS05LTVjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxaDNjLjU1IDAgMS0uNDUgMS0xdi0xSDYuNXYuNWgtMnYtM2gydi41SDh2LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDdXJyZW5jeUV4Y2hhbmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuODkgMTEuMWMtMS43OC0uNTktMi42NC0uOTYtMi42NC0xLjkgMC0xLjAyIDEuMTEtMS4zOSAxLjgxLTEuMzkgMS4zMSAwIDEuNzkuOTkgMS45IDEuMzRsMS41OC0uNjdjLS4xNS0uNDUtLjgyLTEuOTItMi41NC0yLjI0VjVoLTJ2MS4yNmMtMi40OC41Ni0yLjQ5IDIuODYtMi40OSAyLjk2IDAgMi4yNyAyLjI1IDIuOTEgMy4zNSAzLjMxIDEuNTguNTYgMi4yOCAxLjA3IDIuMjggMi4wMyAwIDEuMTMtMS4wNSAxLjYxLTEuOTggMS42MS0xLjgyIDAtMi4zNC0xLjg3LTIuNC0yLjA5bC0xLjY2LjY3Yy42MyAyLjE5IDIuMjggMi43OCAyLjkgMi45NlYxOWgydi0xLjI0Yy40LS4wOSAyLjktLjU5IDIuOS0zLjIyIDAtMS4zOS0uNjEtMi42MS0zLjAxLTMuNDR6TTMgMjFIMXYtNmg2djJINC41MmMxLjYxIDIuNDEgNC4zNiA0IDcuNDggNGE5IDkgMCAwIDAgOS05aDJjMCA2LjA4LTQuOTIgMTEtMTEgMTEtMy43MiAwLTcuMDEtMS44NS05LTQuNjdWMjF6bS0yLTlDMSA1LjkyIDUuOTIgMSAxMiAxYzMuNzIgMCA3LjAxIDEuODUgOSA0LjY3VjNoMnY2aC02VjdoMi40OEMxNy44NyA0LjU5IDE1LjEyIDMgMTIgM2E5IDkgMCAwIDAtOSA5SDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYW5nZXJvdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjczIDNIOC4yN0wzIDguMjd2Ny40Nkw4LjI3IDIxaDcuNDZMMjEgMTUuNzNWOC4yN0wxNS43MyAzek0xOSAxNC45IDE0LjkgMTlIOS4xTDUgMTQuOVY5LjFMOS4xIDVoNS44TDE5IDkuMXY1Ljh6bS00LjE3LTcuMTRMMTIgMTAuNTkgOS4xNyA3Ljc2IDcuNzYgOS4xNyAxMC41OSAxMmwtMi44MyAyLjgzIDEuNDEgMS40MUwxMiAxMy40MWwyLjgzIDIuODMgMS40MS0xLjQxTDEzLjQxIDEybDIuODMtMi44My0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXNoYm9hcmRDdXN0b21pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTFoOFYzSDN2OHptMi02aDR2NEg1VjV6TTEzIDN2OGg4VjNoLTh6bTYgNmgtNFY1aDR2NHpNMyAyMWg4di04SDN2OHptMi02aDR2NEg1di00ek0xOCAxM2gtMnYzaC0zdjJoM3YzaDJ2LTNoM3YtMmgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURhc2hib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNXYyaC00VjVoNE05IDV2Nkg1VjVoNG0xMCA4djZoLTR2LTZoNE05IDE3djJINXYtMmg0TTIxIDNoLTh2Nmg4VjN6TTExIDNIM3YxMGg4VjN6bTEwIDhoLTh2MTBoOFYxMXptLTEwIDRIM3Y2aDh2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXRhRXhwbG9yYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwaDhjMS4xIDAgMi0uOSAyLTJ2LThjMC01LjUyLTQuNDgtMTAtMTAtMTB6bTAgMThjLTIuODkgMC01LjQzLTEuNTQtNi44My0zLjg0bDIuOTUtMi45NUwxMS40MSAxNiAxNiAxMS40MlYxM2gyVjhoLTV2MmgxLjU4bC0zLjI4IDMuMjhMOCAxMC41bC0zLjY5IDMuN0M0LjExIDEzLjUgNCAxMi43NiA0IDEyYzAtNC40MSAzLjU5LTggOC04czggMy41OSA4IDgtMy41OSA4LTggOHptNy41LjVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURhdGFUaHJlc2hvbGRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNmgtMS43M0wxOSAxNy4yN1YxOXptMC0zaC0uODVsLTMgM2gtMS42MmwzLTNoLTIuMTJsLTMgM0g5LjhsMy0zaC0yLjEybC0zIDNINS44NGwzLTNINi43Mkw1IDE3LjcyVjVoMTR2MTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwLjY3IDExIDIgMiA1LjA4LTUuMDktMS40MS0xLjQxLTMuNjcgMy42Ny0yLTItNC40MiA0LjQyTDcuNjYgMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXRlUmFuZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTFoMnYySDd2LTJ6bTE0LTV2MTRjMCAxLjEtLjkgMi0yIDJINWEyIDIgMCAwIDEtMi0ybC4wMS0xNGMwLTEuMS44OC0yIDEuOTktMmgxVjJoMnYyaDhWMmgydjJoMWMxLjEgMCAyIC45IDIgMnpNNSA4aDE0VjZINXYyem0xNCAxMlYxMEg1djEwaDE0em0tNC03aDJ2LTJoLTJ2MnptLTQgMGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZWxldGVGb3JldmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4xMiAxMC40NyAxMiAxMi41OWwtMi4xMy0yLjEyLTEuNDEgMS40MUwxMC41OSAxNGwtMi4xMiAyLjEyIDEuNDEgMS40MUwxMiAxNS40MWwyLjEyIDIuMTIgMS40MS0xLjQxTDEzLjQxIDE0bDIuMTItMi4xMnpNMTUuNSA0bC0xLTFoLTVsLTEgMUg1djJoMTRWNHpNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek04IDloOHYxMEg4Vjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZWxldGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6TTggOWg4djEwSDhWOXptNy41LTUtMS0xaC01bC0xIDFINXYyaDE0VjRoLTMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlbGV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOXYxMEg4VjloOG0tMS41LTZoLTVsLTEgMUg1djJoMTRWNGgtMy41bC0xLTF6TTE4IDdINnYxMmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlbnNpdHlMYXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM2gxOHYySDN6TTMgMTloMTh2MkgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVuc2l0eU1lZGl1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM2gxOHYySDN6TTMgMTloMTh2Mkgzek0zIDExaDE4djJIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlbnNpdHlTbWFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMmgxOHYySDN6TTMgMjBoMTh2Mkgzek0zIDE0aDE4djJIM3pNMyA4aDE4djJIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlc2NyaXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE2aDh2Mkg4em0wLTRoOHYySDh6bTYtMTBINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em00IDE4SDZWNGg3djVoNXYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpc2FibGVkQnlEZWZhdWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTlINVY1aDE0djE0ek0zIDN2MThoMThWM0gzem0xNCAxMi41OUwxNS41OSAxNyAxMiAxMy40MSA4LjQxIDE3IDcgMTUuNTkgMTAuNTkgMTIgNyA4LjQxIDguNDEgNyAxMiAxMC41OSAxNS41OSA3IDE3IDguNDEgMTMuNDEgMTIgMTcgMTUuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXNhYmxlZFZpc2libGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxNWMxLjk1IDAgMy43Ni45OCA0Ljc1IDIuNS0uOTkgMS41Mi0yLjggMi41LTQuNzUgMi41cy0zLjc2LS45OC00Ljc1LTIuNWMuOTktMS41MiAyLjgtMi41IDQuNzUtMi41em0wLTJjLTMuMTggMC01LjkgMS44Ny03IDQuNSAxLjEgMi42MyAzLjgyIDQuNSA3IDQuNXM1LjktMS44NyA3LTQuNWMtMS4xLTIuNjMtMy44Mi00LjUtNy00LjV6bTAgNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzE2LjE3IDE2IDE3IDE2czEuNS42NyAxLjUgMS41UzE3LjgzIDE5IDE3IDE5em00Ljk5LTYuNjZjLjAxLS4xMS4wMS0uMjMuMDEtLjM0IDAtNS41Mi00LjQ4LTEwLTEwLTEwUzIgNi40OCAyIDEyYzAgNS4xNyAzLjkzIDkuNDMgOC45NiA5Ljk1YTkuMzQzIDkuMzQzIDAgMCAxLTIuMzItMi42OEE4LjAxIDguMDEgMCAwIDEgNCAxMmMwLTEuODUuNjMtMy41NSAxLjY5LTQuOWw1LjY2IDUuNjZjLjU2LS40IDEuMTctLjczIDEuODItMUw3LjEgNS42OUE3LjkwMiA3LjkwMiAwIDAgMSAxMiA0YzQuMjQgMCA3LjcgMy4yOSA3Ljk4IDcuNDUuNzEuMjIgMS4zOS41MiAyLjAxLjg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlzcGxheVNldHRpbmdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNHYyaDh2LTJoNGMxLjEgMCAyLS45IDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTRINFY1aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDguMjVoOHYxLjVINnpNMTYuNSA5Ljc1SDE4di0xLjVoLTEuNVY3SDE1djRoMS41ek0xMCAxMi4yNWg4djEuNWgtOHpNNy41IDE1SDl2LTRINy41djEuMjVINnYxLjVoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxNXY0SDV2LTRoMTRtMS0ySDRjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE2Yy41NSAwIDEtLjQ1IDEtMXYtNmMwLS41NS0uNDUtMS0xLTF6TTcgMTguNWMtLjgyIDAtMS41LS42Ny0xLjUtMS41cy42OC0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6TTE5IDV2NEg1VjVoMTRtMS0ySDRjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE2Yy41NSAwIDEtLjQ1IDEtMVY0YzAtLjU1LS40NS0xLTEtMXpNNyA4LjVjLS44MiAwLTEuNS0uNjctMS41LTEuNVM2LjE4IDUuNSA3IDUuNXMxLjUuNjggMS41IDEuNVM3LjgzIDguNSA3IDguNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvbmVBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDctMS40MS0xLjQxLTYuMzQgNi4zNCAxLjQxIDEuNDFMMTggN3ptNC4yNC0xLjQxTDExLjY2IDE2LjE3IDcuNDggMTJsLTEuNDEgMS40MUwxMS42NiAxOWwxMi0xMi0xLjQyLTEuNDF6TS40MSAxMy40MSA2IDE5bDEuNDEtMS40MUwxLjgzIDEyIC40MSAxMy40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvbmVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS43NyA0LjkzIDEuNCAxLjRMOC40MyAxOS4wN2wtNS42LTUuNiAxLjQtMS40IDQuMiA0LjJMMTkuNzcgNC45M20wLTIuODNMOC40MyAxMy40NGwtNC4yLTQuMkwwIDEzLjQ3bDguNDMgOC40M0wyNCA2LjMzIDE5Ljc3IDIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTYuMiA0LjggMTJsLTEuNCAxLjRMOSAxOSAyMSA3bC0xLjQtMS40TDkgMTYuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvbnV0TGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDUuMDhBNyA3IDAgMCAxIDE4LjkyIDExaDMuMDNjLS40Ny00LjcyLTQuMjMtOC40OC04Ljk1LTguOTV2My4wM3pNMTguOTIgMTNBNyA3IDAgMCAxIDEzIDE4LjkydjMuMDNjNC43Mi0uNDcgOC40OC00LjIzIDguOTUtOC45NWgtMy4wM3pNMTEgMTguOTJjLTMuMzktLjQ5LTYtMy40LTYtNi45MnMyLjYxLTYuNDMgNi02LjkyVjIuMDVjLTUuMDUuNS05IDQuNzYtOSA5Ljk1IDAgNS4xOSAzLjk1IDkuNDUgOSA5Ljk1di0zLjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9udXRTbWFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuODIgMTFoNy4xM2MtLjQ3LTQuNzItNC4yMy04LjQ4LTguOTUtOC45NXY3LjEzYy44NS4zMSAxLjUxLjk3IDEuODIgMS44MnpNMTUgNC41OEMxNyA1LjQgMTguNiA3IDE5LjQyIDloLTMuNDNjLS4yOC0uMzctLjYyLS43MS0uOTktLjk5VjQuNTh6TTIgMTJjMCA1LjE5IDMuOTUgOS40NSA5IDkuOTV2LTcuMTNDOS44NCAxNC40IDkgMTMuMyA5IDEyYzAtMS4zLjg0LTIuNCAyLTIuODJWMi4wNWMtNS4wNS41LTkgNC43Ni05IDkuOTV6bTctNy40MnYzLjQ0Yy0xLjIzLjkyLTIgMi4zOS0yIDMuOTggMCAxLjU5Ljc3IDMuMDYgMiAzLjk5djMuNDRDNi4wNCAxOC4yNCA0IDE1LjM1IDQgMTJjMC0zLjM1IDIuMDQtNi4yNCA1LTcuNDJ6bTQgMTAuMjR2Ny4xM2M0LjcyLS40NyA4LjQ4LTQuMjMgOC45NS04Ljk1aC03LjEzYy0uMzEuODUtLjk3IDEuNTEtMS44MiAxLjgyem0yIDEuMTdjLjM3LS4yOC43MS0uNjEuOTktLjk5aDMuNDNDMTguNiAxNyAxNyAxOC42IDE1IDE5LjQydi0zLjQzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJhZ0luZGljYXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMThjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yIDIgLjkgMiAyem0tMi04Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMC02Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNiA0YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMCAyYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMCA2Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUR5bmFtaWNGb3JtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTFINGMtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yaDl2N3pNNCA5aDdWNkg0djN6bTExIDExSDRjLTEuMSAwLTItLjktMi0ydi0zYzAtMS4xLjktMiAyLTJoMTF2N3pNNCAxOGg5di0zSDR2M3ptMTgtOWgtMmwyLTVoLTd2N2gydjlsNS0xMXpNNC43NSAxNy4yNWgxLjV2LTEuNWgtMS41djEuNXptMC05aDEuNXYtMS41aC0xLjV2MS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWNvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4wNSA4LjA1YTcuMDA3IDcuMDA3IDAgMCAwIDAgOS45QzcuNDIgMTkuMzIgOS4yMSAyMCAxMSAyMHMzLjU4LS42OCA0Ljk1LTIuMDVDMTkuNDMgMTQuNDcgMjAgNCAyMCA0UzkuNTMgNC41NyA2LjA1IDguMDV6bTguNDkgOC40OWMtLjk1Ljk0LTIuMiAxLjQ2LTMuNTQgMS40Ni0uODkgMC0xLjczLS4yNS0yLjQ4LS42OC45Mi0yLjg4IDIuNjItNS40MSA0Ljg4LTcuMzItMi42MyAxLjM2LTQuODQgMy40Ni02LjM3IDYtMS40OC0xLjk2LTEuMzUtNC43NS40NC02LjU0QzkuMjEgNy43MiAxNC4wNCA2LjY1IDE3LjggNi4yYy0uNDUgMy43Ni0xLjUyIDguNTktMy4yNiAxMC4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVkaXRDYWxlbmRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTBoMTR2MmgyVjZjMC0xLjEtLjktMi0yLTJoLTFWMmgtMnYySDhWMkg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAyMGEyIDIgMCAwIDAgMiAyaDd2LTJINVYxMHptMC00aDE0djJINVY2em0xNy44NCAxMC4yOC0uNzEuNzEtMi4xMi0yLjEyLjcxLS43MWEuOTk2Ljk5NiAwIDAgMSAxLjQxIDBsLjcxLjcxYy4zOS4zOS4zOSAxLjAyIDAgMS40MXptLTMuNTQtLjcgMi4xMiAyLjEyLTUuMyA1LjNIMTR2LTIuMTJsNS4zLTUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVkaXRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjA2IDkuMDIuOTIuOTItMS4xMSAxLjExIDEuNDEgMS40MSAyLjUyLTIuNTItMy43NS0zLjc1LTIuNTIgMi41MiAxLjQxIDEuNDEgMS4xMi0xLjF6bTYuNjUtMS45OGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTIuMzQtMi4zNGMtLjItLjItLjQ1LS4yOS0uNzEtLjI5cy0uNTEuMS0uNy4yOWwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6TTIuODEgMi44MSAxLjM5IDQuMjJsNy4zMiA3LjMyTDMgMTcuMjVWMjFoMy43NWw1LjcxLTUuNzEgNy4zMiA3LjMyIDEuNDEtMS40MUwyLjgxIDIuODF6TTUuOTIgMTlINXYtLjkybDUuMTMtNS4xMy45Mi45Mkw1LjkyIDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTdoMTR2Mkg1em03LTEyTDUuMzMgMTVoMTMuMzRMMTIgNXptMCAzLjYgMi45MyA0LjRIOS4wN0wxMiA4LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFdXJvU3ltYm9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxOC41QTYuNDggNi40OCAwIDAgMSA5LjI0IDE1SDE1di0ySDguNThjLS4wNS0uMzMtLjA4LS42Ni0uMDgtMXMuMDMtLjY3LjA4LTFIMTVWOUg5LjI0QTYuNDkxIDYuNDkxIDAgMCAxIDE1IDUuNWMxLjYxIDAgMy4wOS41OSA0LjIzIDEuNTdMMjEgNS4zQTguOTU1IDguOTU1IDAgMCAwIDE1IDNjLTMuOTIgMC03LjI0IDIuNTEtOC40OCA2SDN2MmgzLjA2YTguMjYyIDguMjYyIDAgMCAwIDAgMkgzdjJoMy41MmMxLjI0IDMuNDkgNC41NiA2IDguNDggNiAyLjMxIDAgNC40MS0uODcgNi0yLjNsLTEuNzgtMS43N2MtMS4xMy45OC0yLjYgMS41Ny00LjIyIDEuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFdmVudFJlcGVhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDEyVjZjMC0xLjEtLjktMi0yLTJoLTFWMmgtMnYySDhWMkg2djJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg3di0ySDVWMTBoMTR2Mmgyem0tMi00SDVWNmgxNHYyem0tMy4zNiAxMmEzLjUwNCAzLjUwNCAwIDAgMCA2Ljg2LTFjMC0xLjkzLTEuNTctMy41LTMuNS0zLjUtLjk1IDAtMS44Mi4zOC0yLjQ1IDFIMThWMThoLTR2LTRoMS41djEuNDNjLjktLjg4IDIuMTQtMS40MyAzLjUtMS40MyAyLjc2IDAgNSAyLjI0IDUgNWE1LjAwMiA1LjAwMiAwIDAgMS05LjkgMWgxLjU0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXZlbnRTZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA1djdIOVY1aDZtMC0ySDljLTEuMSAwLTIgLjktMiAydjloMTBWNWMwLTEuMS0uOS0yLTItMnptNyA3aC0zdjNoM3YtM3pNNSAxMEgydjNoM3YtM3ptMTUgNUg0djZoMnYtNGgxMnY0aDJ2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFdmVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNGgtMVYyaC0ydjJIOFYySDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDIwYTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjEwaDE0djEwem0wLTEySDVWNmgxNHYyem0tNyA1aDV2NWgtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV4aXRUb0FwcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMDkgMTUuNTkgMTEuNSAxN2w1LTUtNS01LTEuNDEgMS40MUwxMi42NyAxMUgzdjJoOS42N2wtMi41OCAyLjU5ek0xOSAzSDVhMiAyIDAgMCAwLTIgMnY0aDJWNWgxNHYxNEg1di00SDN2NGEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHBhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMjBoMTZ2Mkg0ek00IDJoMTZ2Mkg0ek05LjQxIDEzLjU5IDggMTVsNCA0IDQtNC0xLjQxLTEuNDFMMTMgMTUuMTdWOC44M2wxLjU5IDEuNThMMTYgOWwtNC00LTQgNCAxLjQxIDEuNDFMMTEgOC44M3Y2LjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXhwbG9yZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOCAwIDEuNDgtLjQxIDIuODYtMS4xMiA0LjA2bDEuNDYgMS40NkE5Ljk2NyA5Ljk2NyAwIDAgMCAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMC0yLjA0IDAtMy45My42MS01LjUxIDEuNjZsMS40NiAxLjQ2QTcuODY5IDcuODY5IDAgMCAxIDEyIDR6bTIuOTEgOC4wOEwxNy41IDYuNWwtNS41OCAyLjU5IDIuOTkgMi45OXpNMi4xIDQuOTNsMS41NiAxLjU2QTkuOTEgOS45MSAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMDQgMCAzLjkzLS42MSA1LjUxLTEuNjZsMS41NiAxLjU2IDEuNDEtMS40MUwzLjUxIDMuNTEgMi4xIDQuOTN6bTMuMDIgMy4wMSAzLjk4IDMuOTgtMi42IDUuNTggNS41OC0yLjU5IDMuOTggMy45OGMtMS4yLjctMi41OCAxLjExLTQuMDYgMS4xMS00LjQxIDAtOC0zLjU5LTgtOCAwLTEuNDguNDEtMi44NiAxLjEyLTQuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHBsb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptLTUuNS0yLjUgNy41MS0zLjQ5TDE3LjUgNi41IDkuOTkgOS45OSA2LjUgMTcuNXptNS41LTYuNmMuNjEgMCAxLjEuNDkgMS4xIDEuMXMtLjQ5IDEuMS0xLjEgMS4xLTEuMS0uNDktMS4xLTEuMS40OS0xLjEgMS4xLTEuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV4dGVuc2lvbk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEuMzkgNC4yMiAxLjYyIDEuNjJjMCAuMDUtLjAxLjEtLjAxLjE2djMuOGMyLjcgMCAzIDIuMTYgMyAyLjdzLS4yOSAyLjctMyAyLjdWMTljMCAxLjEuOSAyIDIgMmgzLjhjMC0yLjcxIDIuMTYtMyAyLjctM3MyLjcuMjkgMi43IDNIMThjLjA2IDAgLjExIDAgLjE2LS4wMWwxLjYxIDEuNjEgMS40MS0xLjQxTDIuODEgMi44MSAxLjM5IDQuMjJ6TTExLjUgMTZjLTEuNSAwLTMuNTcuODMtNC4zNyAzSDV2LTIuMTNjMi4xNy0uOCAzLTIuODcgMy00LjM3IDAtLjY5LS4xOC0xLjUtLjU4LTIuMjVsNi4zMyA2LjMzQTQuODkgNC44OSAwIDAgMCAxMS41IDE2ek04LjgzIDZsLTItMkg5YTIuNSAyLjUgMCAwIDEgNSAwaDRjMS4xIDAgMiAuOSAyIDJ2NGEyLjUgMi41IDAgMCAxIDAgNXYyLjE3bC0yLTJWMTNoMmMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41aC0yVjZoLTZWNGMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjV2Mkg4LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXh0ZW5zaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41IDQuNWMuMjggMCAuNS4yMi41LjV2Mmg2djZoMmMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjVoLTJ2NmgtMi4xMmMtLjY4LTEuNzUtMi4zOS0zLTQuMzgtM3MtMy43IDEuMjUtNC4zOCAzSDR2LTIuMTJjMS43NS0uNjggMy0yLjM5IDMtNC4zOCAwLTEuOTktMS4yNC0zLjctMi45OS00LjM4TDQgN2g2VjVjMC0uMjguMjItLjUuNS0uNW0wLTJBMi41IDIuNSAwIDAgMCA4IDVINGMtMS4xIDAtMS45OS45LTEuOTkgMnYzLjhoLjI5YzEuNDkgMCAyLjcgMS4yMSAyLjcgMi43cy0xLjIxIDIuNy0yLjcgMi43SDJWMjBjMCAxLjEuOSAyIDIgMmgzLjh2LS4zYzAtMS40OSAxLjIxLTIuNyAyLjctMi43czIuNyAxLjIxIDIuNyAyLjd2LjNIMTdjMS4xIDAgMi0uOSAyLTJ2LTRhMi41IDIuNSAwIDAgMCAwLTVWN2MwLTEuMS0uOS0yLTItMmgtNGEyLjUgMi41IDAgMCAwLTIuNS0yLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGYWNlVW5sb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4yNSAxM2ExLjI1IDEuMjUgMCAxIDEtMi41IDAgMS4yNSAxLjI1IDAgMCAxIDIuNSAwek0xNSAxMS43NWExLjI1IDEuMjUgMCAxIDAgMCAyLjUgMS4yNSAxLjI1IDAgMCAwIDAtMi41em03IC4yNWMwIDUuNTItNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTIgNi40OCAyIDEyIDJzMTAgNC40OCAxMCAxMHpNMTAuNjYgNC4xMkMxMi4wNiA2LjQ0IDE0LjYgOCAxNy41IDhjLjQ2IDAgLjkxLS4wNSAxLjM0LS4xMkMxNy40NCA1LjU2IDE0LjkgNCAxMiA0Yy0uNDYgMC0uOTEuMDUtMS4zNC4xMnpNNC40MiA5LjQ3YTguMDQ2IDguMDQ2IDAgMCAwIDMuNjYtNC40NCA4LjA0NiA4LjA0NiAwIDAgMC0zLjY2IDQuNDR6TTIwIDEyYzAtLjc4LS4xMi0xLjUzLS4zMy0yLjI0LS43LjE1LTEuNDIuMjQtMi4xNy4yNGExMCAxMCAwIDAgMS03Ljc2LTMuNjlBMTAuMDE2IDEwLjAxNiAwIDAgMSA0IDExLjg2Yy4wMS4wNCAwIC4wOSAwIC4xNCAwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMjUgMTNhMS4yNSAxLjI1IDAgMSAxLTIuNSAwIDEuMjUgMS4yNSAwIDAgMSAyLjUgMHpNMTUgMTEuNzVhMS4yNSAxLjI1IDAgMSAwIDAgMi41IDEuMjUgMS4yNSAwIDAgMCAwLTIuNXptNyAuMjVjMCA1LjUyLTQuNDggMTAtMTAgMTBTMiAxNy41MiAyIDEyIDYuNDggMiAxMiAyczEwIDQuNDggMTAgMTB6TTEwLjY2IDQuMTJDMTIuMDYgNi40NCAxNC42IDggMTcuNSA4Yy40NiAwIC45MS0uMDUgMS4zNC0uMTJDMTcuNDQgNS41NiAxNC45IDQgMTIgNGMtLjQ2IDAtLjkxLjA1LTEuMzQuMTJ6TTQuNDIgOS40N2E4LjA0NiA4LjA0NiAwIDAgMCAzLjY2LTQuNDQgOC4wNDYgOC4wNDYgMCAwIDAtMy42NiA0LjQ0ek0yMCAxMmMwLS43OC0uMTItMS41My0uMzMtMi4yNC0uNy4xNS0xLjQyLjI0LTIuMTcuMjRhMTAgMTAgMCAwIDEtNy43Ni0zLjY5QTEwLjAxNiAxMC4wMTYgMCAwIDEgNCAxMS44NmMuMDEuMDQgMCAuMDkgMCAuMTQgMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhY3RDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINFY1aDE2djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS40MSAxMC40MiAxNy45OSA5bC0zLjE3IDMuMTctMS40MS0xLjQyTDEyIDEyLjE2IDE0LjgyIDE1ek01IDdoNXYySDV6TTUgMTFoNXYySDV6TTUgMTVoNXYySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhdm9yaXRlQm9yZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDNjLTEuNzQgMC0zLjQxLjgxLTQuNSAyLjA5QzEwLjkxIDMuODEgOS4yNCAzIDcuNSAzIDQuNDIgMyAyIDUuNDIgMiA4LjVjMCAzLjc4IDMuNCA2Ljg2IDguNTUgMTEuNTRMMTIgMjEuMzVsMS40NS0xLjMyQzE4LjYgMTUuMzYgMjIgMTIuMjggMjIgOC41IDIyIDUuNDIgMTkuNTggMyAxNi41IDN6bS00LjQgMTUuNTUtLjEuMS0uMS0uMUM3LjE0IDE0LjI0IDQgMTEuMzkgNCA4LjUgNCA2LjUgNS41IDUgNy41IDVjMS41NCAwIDMuMDQuOTkgMy41NyAyLjM2aDEuODdDMTMuNDYgNS45OSAxNC45NiA1IDE2LjUgNWMyIDAgMy41IDEuNSAzLjUgMy41IDAgMi44OS0zLjE0IDUuNzQtNy45IDEwLjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmF2b3JpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDIxLjM1LTEuNDUtMS4zMkM1LjQgMTUuMzYgMiAxMi4yOCAyIDguNSAyIDUuNDIgNC40MiAzIDcuNSAzYzEuNzQgMCAzLjQxLjgxIDQuNSAyLjA5QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDMgMTkuNTggMyAyMiA1LjQyIDIyIDguNWMwIDMuNzgtMy40IDYuODYtOC41NSAxMS41NEwxMiAyMS4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZheCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDloLTFWNEg4djVoLS43OEM2LjY3IDguMzkgNS44OSA4IDUgOGMtMS42NiAwLTMgMS4zNC0zIDN2N2MwIDEuNjYgMS4zNCAzIDMgMyAuODkgMCAxLjY3LS4zOSAyLjIyLTFIMjJ2LThjMC0xLjY2LTEuMzQtMy0zLTN6TTYgMThjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTF2LTdjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjd6bTQtMTJoNnYzaC02VjZ6bTEwIDEySDh2LTdoMTFjLjU1IDAgMSAuNDUgMSAxdjZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjE2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCIxNlwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDEyaDR2NUg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmVlZGJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdsLS41OS41OS0uNTguNThWNGgxNnYxMnptLTktNGgydjJoLTJ6bTAtNmgydjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWxlUHJlc2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjhsLTYtNnptNCAxOEg2VjRoOHY0aDR2MTJ6bS02LTNjLTEuMSAwLTItLjktMi0yVjkuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVYxNWgyVjkuNWEyLjUgMi41IDAgMCAwLTUgMFYxNWMwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00di00aC0ydjRjMCAxLjEtLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXJBbHRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi45NSA2LTMuNTcgNC41NSAxLjQzIDEuNDNjMS4wMy0xLjMxIDQuOTgtNi4zNyA0Ljk4LTYuMzdBLjk5OC45OTggMCAwIDAgMTkgNEg2LjgzbDIgMmg4LjEyek0yLjgxIDIuODEgMS4zOSA0LjIyIDEwIDEzdjZjMCAuNTUuNDUgMSAxIDFoMmMuNTUgMCAxLS40NSAxLTF2LTIuMTdsNS43OCA1Ljc4IDEuNDEtMS40MUwyLjgxIDIuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNG0wIDI0SDBcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA2aDEwbC01LjAxIDYuM0w3IDZ6bS0yLjc1LS4zOUM2LjI3IDguMiAxMCAxMyAxMCAxM3Y2YzAgLjU1LjQ1IDEgMSAxaDJjLjU1IDAgMS0uNDUgMS0xdi02czMuNzItNC44IDUuNzQtNy4zOUEuOTk4Ljk5OCAwIDAgMCAxOC45NSA0SDUuMDRjLS44MyAwLTEuMy45NS0uNzkgMS42MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbmRJblBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnpNNiA0aDdsNSA1djguNThsLTEuODQtMS44NGE0Ljk5MiA0Ljk5MiAwIDAgMC0uNjQtNi4yOEE0Ljk2IDQuOTYgMCAwIDAgMTIgOGE1IDUgMCAwIDAtMy41MyAxLjQ2IDQuOTggNC45OCAwIDAgMCAwIDcuMDUgNC45ODIgNC45ODIgMCAwIDAgNi4yOC42M0wxNy42IDIwSDZWNHptOC4xMSAxMS4xYy0uNTYuNTYtMS4zMS44OC0yLjExLjg4cy0xLjU1LS4zMS0yLjExLS44OGMtLjU2LS41Ni0uODgtMS4zMS0uODgtMi4xMXMuMzEtMS41NS44OC0yLjExYy41Ni0uNTcgMS4zMS0uODggMi4xMS0uODhzMS41NS4zMSAyLjExLjg4Yy41Ni41Ni44OCAxLjMxLjg4IDIuMTFzLS4zMSAxLjU1LS44OCAyLjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmluZFJlcGxhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDZjMS4zOCAwIDIuNjMuNTYgMy41NCAxLjQ2TDEyIDEwaDZWNGwtMi4wNSAyLjA1QTYuOTc2IDYuOTc2IDAgMCAwIDExIDRjLTMuNTMgMC02LjQzIDIuNjEtNi45MiA2SDYuMUE1IDUgMCAwIDEgMTEgNnptNS42NCA5LjE0QTYuODkgNi44OSAwIDAgMCAxNy45MiAxMkgxNS45YTUgNSAwIDAgMS00LjkgNGMtMS4zOCAwLTIuNjMtLjU2LTMuNTQtMS40NkwxMCAxMkg0djZsMi4wNS0yLjA1QTYuOTc2IDYuOTc2IDAgMCAwIDExIDE4YzEuNTUgMCAyLjk4LS41MSA0LjE0LTEuMzZMMjAgMjEuNDkgMjEuNDkgMjBsLTQuODUtNC44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbmdlcnByaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy44MSA0LjQ3Yy0uMDggMC0uMTYtLjAyLS4yMy0uMDZDMTUuNjYgMy40MiAxNCAzIDEyLjAxIDNjLTEuOTggMC0zLjg2LjQ3LTUuNTcgMS40MS0uMjQuMTMtLjU0LjA0LS42OC0uMmEuNTA2LjUwNiAwIDAgMSAuMi0uNjhDNy44MiAyLjUyIDkuODYgMiAxMi4wMSAyYzIuMTMgMCAzLjk5LjQ3IDYuMDMgMS41Mi4yNS4xMy4zNC40My4yMS42N2EuNDkuNDkgMCAwIDEtLjQ0LjI4ek0zLjUgOS43MmEuNDk5LjQ5OSAwIDAgMS0uNDEtLjc5Yy45OS0xLjQgMi4yNS0yLjUgMy43NS0zLjI3QzkuOTggNC4wNCAxNCA0LjAzIDE3LjE1IDUuNjVjMS41Ljc3IDIuNzYgMS44NiAzLjc1IDMuMjVhLjUuNSAwIDAgMS0uMTIuN2MtLjIzLjE2LS41NC4xMS0uNy0uMTJhOS4zODggOS4zODggMCAwIDAtMy4zOS0yLjk0Yy0yLjg3LTEuNDctNi41NC0xLjQ3LTkuNC4wMS0xLjM2LjctMi41IDEuNy0zLjQgMi45Ni0uMDguMTQtLjIzLjIxLS4zOS4yMXptNi4yNSAxMi4wN2EuNDcuNDcgMCAwIDEtLjM1LS4xNWMtLjg3LS44Ny0xLjM0LTEuNDMtMi4wMS0yLjY0LS42OS0xLjIzLTEuMDUtMi43My0xLjA1LTQuMzQgMC0yLjk3IDIuNTQtNS4zOSA1LjY2LTUuMzlzNS42NiAyLjQyIDUuNjYgNS4zOWMwIC4yOC0uMjIuNS0uNS41cy0uNS0uMjItLjUtLjVjMC0yLjQyLTIuMDktNC4zOS00LjY2LTQuMzlzLTQuNjYgMS45Ny00LjY2IDQuMzljMCAxLjQ0LjMyIDIuNzcuOTMgMy44NS42NCAxLjE1IDEuMDggMS42NCAxLjg1IDIuNDIuMTkuMi4xOS41MSAwIC43MS0uMTEuMS0uMjQuMTUtLjM3LjE1em03LjE3LTEuODVjLTEuMTkgMC0yLjI0LS4zLTMuMS0uODktMS40OS0xLjAxLTIuMzgtMi42NS0yLjM4LTQuMzkgMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjVjMCAxLjQxLjcyIDIuNzQgMS45NCAzLjU2LjcxLjQ4IDEuNTQuNzEgMi41NC43MS4yNCAwIC42NC0uMDMgMS4wNC0uMS4yNy0uMDUuNTMuMTMuNTguNDEuMDUuMjctLjEzLjUzLS40MS41OC0uNTcuMTEtMS4wNy4xMi0xLjIxLjEyek0xNC45MSAyMmMtLjA0IDAtLjA5LS4wMS0uMTMtLjAyLTEuNTktLjQ0LTIuNjMtMS4wMy0zLjcyLTIuMWE3LjI5NyA3LjI5NyAwIDAgMS0yLjE3LTUuMjJjMC0xLjYyIDEuMzgtMi45NCAzLjA4LTIuOTRzMy4wOCAxLjMyIDMuMDggMi45NGMwIDEuMDcuOTMgMS45NCAyLjA4IDEuOTRzMi4wOC0uODcgMi4wOC0xLjk0YzAtMy43Ny0zLjI1LTYuODMtNy4yNS02LjgzLTIuODQgMC01LjQ0IDEuNTgtNi42MSA0LjAzLS4zOS44MS0uNTkgMS43Ni0uNTkgMi44IDAgLjc4LjA3IDIuMDEuNjcgMy42MS4xLjI2LS4wMy41NS0uMjkuNjQtLjI2LjEtLjU1LS4wNC0uNjQtLjI5YTExLjE0IDExLjE0IDAgMCAxLS43My0zLjk2YzAtMS4yLjIzLTIuMjkuNjgtMy4yNCAxLjMzLTIuNzkgNC4yOC00LjYgNy41MS00LjYgNC41NSAwIDguMjUgMy41MSA4LjI1IDcuODMgMCAxLjYyLTEuMzggMi45NC0zLjA4IDIuOTRzLTMuMDgtMS4zMi0zLjA4LTIuOTRjMC0xLjA3LS45My0xLjk0LTIuMDgtMS45NHMtMi4wOC44Ny0yLjA4IDEuOTRjMCAxLjcxLjY2IDMuMzEgMS44NyA0LjUxLjk1Ljk0IDEuODYgMS40NiAzLjI3IDEuODUuMjcuMDcuNDIuMzUuMzUuNjEtLjA1LjIzLS4yNi4zOC0uNDcuMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaXRTY3JlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTZoMTJWOEg2djh6bTItNmg4djRIOHYtNHptLTQgNUgydjNjMCAxLjEuOSAyIDIgMmgzdi0ySDR2LTN6bTAtOWgzVjRINGMtMS4xIDAtMiAuOS0yIDJ2M2gyVjZ6bTE2LTJoLTN2MmgzdjNoMlY2YzAtMS4xLS45LTItMi0yem0wIDE0aC0zdjJoM2MxLjEgMCAyLS45IDItMnYtM2gtMnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmxha3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJtMTQuMDUgMTcuNTgtLjAxLjAxLTIuNC0yLjQgMS4wNi0xLjA2IDEuMzUgMS4zNUwxNi41NCAxM2wxLjA2IDEuMDYtMy41NCAzLjU0LS4wMS0uMDJ6TTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyek03LjM0IDYuMjhsMS40MSAxLjQxIDEuNDEtMS40MSAxLjA2IDEuMDYtMS40MSAxLjQxIDEuNDEgMS40MS0xLjA2IDEuMDYtMS40MS0xLjQxLTEuNDEgMS40MS0xLjA2LTEuMDYgMS40MS0xLjQxLTEuNDEtMS40MSAxLjA2LTEuMDZ6TTEyIDIwYy0yLjIgMC00LjItLjktNS43LTIuM0wxNy43IDYuM0MxOS4xIDcuOCAyMCA5LjggMjAgMTJjMCA0LjQtMy42IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmxpZ2h0TGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDE5aDE5djJoLTE5di0yem0xNi44NC0zLjE1Yy44LjIxIDEuNjItLjI2IDEuODQtMS4wNi4yMS0uOC0uMjYtMS42Mi0xLjA2LTEuODRsLTUuMzEtMS40Mi0yLjc2LTkuMDJMMTAuMTIgMnY4LjI4TDUuMTUgOC45NWwtLjkzLTIuMzItMS40NS0uMzl2NS4xN2wxNi41NyA0LjQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmxpZ2h0VGFrZW9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDE5aDE5djJoLTE5di0yem0xOS41Ny05LjM2Yy0uMjEtLjgtMS4wNC0xLjI4LTEuODQtMS4wNkwxNC45MiAxMGwtNi45LTYuNDMtMS45My41MSA0LjE0IDcuMTctNC45NyAxLjMzLTEuOTctMS41NC0xLjQ1LjM5IDIuNTkgNC40OUwyMSAxMS40OWMuODEtLjIzIDEuMjgtMS4wNSAxLjA3LTEuODV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGlwVG9CYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDdIN3YyaDJWN3ptMCA0SDd2Mmgydi0yem0wLThhMiAyIDAgMCAwLTIgMmgyVjN6bTQgMTJoLTJ2Mmgydi0yem02LTEydjJoMmMwLTEuMS0uOS0yLTItMnptLTYgMGgtMnYyaDJWM3pNOSAxN3YtMkg3YTIgMiAwIDAgMCAyIDJ6bTEwLTRoMnYtMmgtMnYyem0wLTRoMlY3aC0ydjJ6bTAgOGMxLjEgMCAyLS45IDItMmgtMnYyek01IDdIM3YxMmEyIDIgMCAwIDAgMiAyaDEydi0ySDVWN3ptMTAtMmgyVjNoLTJ2MnptMCAxMmgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGlwVG9Gcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxM2gydi0ySDN2MnptMCA0aDJ2LTJIM3Yyem0yIDR2LTJIM2EyIDIgMCAwIDAgMiAyek0zIDloMlY3SDN2MnptMTIgMTJoMnYtMmgtMnYyem00LTE4SDlhMiAyIDAgMCAwLTIgMnYxMGEyIDIgMCAwIDAgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTJIOVY1aDEwdjEwem0tOCA2aDJ2LTJoLTJ2MnptLTQgMGgydi0ySDd2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsdXR0ZXJEYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMDcgMTEuN2MuMjktLjM5LjgxLS41NiAxLjI3LS4zNy4xNy4wNy4zMi4xOC40My4zMy4yMi4yOC4yNS41OS4yMi44NS0uMDUuMzMtLjI1LjYzLS41NC43OSAwIDAtNC44NyAyLjk1LTUuMDcgMi42OXMzLjY5LTQuMjkgMy42OS00LjI5ek0yMiAxMGMwIDIuNS0xIDMtMS41IDMtLjIzIDAtLjQ0LS4xLS42Mi0uMjYtLjQ4IDMuMzItMi4zNiA1LjMxLTUuMzMgNS45OS4xMS40NC40OC43Ny45NS43N2guNThjLjIyIDAgLjQxLjE1LjQ4LjM2LjE3LjUyLjY2IDEuMDIgMS4wMiAxLjMyLjI1LjIxLjI0LjU5LS4wMy43OC0uMzQuMjQtLjkuNDktMS43OS41M2EuNTAxLjUwMSAwIDAgMS0uNDUtLjIyYy0uMTMtLjItLjMxLS41Ni0uMzEtMS4wMSAwLS4zLjA0LS41Ny4wOS0uOC0uNzgtLjE2LTEuMzktLjc4LTEuNTUtMS41Ni0uNDkuMDYtMSAuMS0xLjU0LjEtLjg4IDAtMS43LS4wOS0yLjQ1LS4yNS0uMDIuMDgtLjA1LjE2LS4wNS4yNSAwIC41NS40NSAxIDEgMWguNThjLjIyIDAgLjQxLjE1LjQ4LjM2LjE3LjUyLjY2IDEuMDIgMS4wMiAxLjMyLjI1LjIxLjI0LjU5LS4wMy43OC0uMzQuMjQtLjkuNDktMS43OS41M2EuNTAxLjUwMSAwIDAgMS0uNDUtLjIyYy0uMTMtLjItLjMxLS41Ni0uMzEtMS4wMSAwLS4zLjA0LS41Ny4wOS0uOC0uOS0uMTktMS41OS0xLTEuNTktMS45NiAwLS4xOC4wMy0uMzYuMDgtLjUzLTIuNDYtLjg2LTQuMDMtMi43OC00LjQ2LTUuNzQtLjE4LjE3LS4zOC4yNy0uNjIuMjdDMyAxMyAyIDEyLjUgMiAxMGMwLTIuMjcgMS43LTQuNSAzLTQuNS40MyAwIC40OS40OS41Ljg1YTcuOTg5IDcuOTg5IDAgMCAxIDUuNTUtMy4yOWMuMi0uOTYgMS4wOC0xLjU2IDEuOTUtMS41NnYxcy4zMy0uNSAxLS41Yy42NyAwIDEgLjUgMSAuNS0uNDkgMC0uODUuMzUtLjk2Ljc3IDEuODIuNDggMy4zOSAxLjU5IDQuNDYgMy4wOC4wMS0uMzYuMDctLjg1LjUtLjg1IDEuMyAwIDMgMi4yMyAzIDQuNXpNNSAxMWMwIC44MS4xIDEuNTMuMjUgMi4yMS4xOC0uNjkuNDYtMS4zMy44My0xLjkyYTMuNzcgMy43NyAwIDAgMS0uMzQtMS41NEEzLjc2NiAzLjc2NiAwIDAgMSA5LjUgNmMuOTYgMCAxLjg0LjM3IDIuNS45Ny42Ni0uNiAxLjU0LS45NyAyLjUtLjk3IDIuMDcgMCAzLjc1IDEuNjggMy43NSAzLjc1IDAgLjU1LS4xMiAxLjA3LS4zNCAxLjU0LjM3LjU5LjY2IDEuMjQuODQgMS45NC4xNS0uNjguMjUtMS40MS4yNS0yLjIzIDAtMy44Ni0zLjE0LTctNy03cy03IDMuMTQtNyA3em0xMi45OCA0LjI5YzAtLjEuMDItLjE5LjAyLS4yOSAwLTEuMDEtLjI2LTEuOTUtLjctMi43OC0uNjkuNzgtMS42OCAxLjI4LTIuOCAxLjI4LS4yNyAwLS41NC0uMDMtLjc5LS4wOS4xNC0uMjMuMjMtLjQ5LjI3LS43Ny4wMS0uMDcuMDEtLjEzLjAyLS4xOS4xNy4wMy4zMy4wNS41LjA1IDEuNTIgMCAyLjc1LTEuMjMgMi43NS0yLjc1UzE2LjAyIDcgMTQuNSA3Yy0uNjcgMC0xLjMyLjI1LTEuODMuNzJsLS42Ny42LS42Ny0uNkMxMC44MiA3LjI1IDEwLjE3IDcgOS41IDcgNy45OCA3IDYuNzUgOC4yMyA2Ljc1IDkuNzVjMCAxLjM0Ljk2IDIuNDYgMi4yMyAyLjdsLS43Ni44M2MtLjYtLjIyLTEuMTItLjU5LTEuNTMtMS4wNUE2LjAxIDYuMDEgMCAwIDAgNiAxNWMwIC4wOC4wMS4xNS4wMS4yNEM3LjEzIDE3LjA2IDkuMTQgMTggMTIgMThjMi44OCAwIDQuODgtLjkxIDUuOTgtMi43MXpNMTYgOS43NWMwIC45Ny0uNjcgMS43NS0xLjUgMS43NVMxMyAxMC43MiAxMyA5Ljc1IDEzLjY3IDggMTQuNSA4czEuNS43OCAxLjUgMS43NXptLS43NS0uODdjMC0uMjEtLjE3LS4zOC0uMzgtLjM4cy0uMzcuMTctLjM3LjM4LjE3LjM4LjM4LjM4LjM3LS4xOC4zNy0uMzh6TTExIDkuNzVjMCAuOTctLjY3IDEuNzUtMS41IDEuNzVTOCAxMC43MiA4IDkuNzUgOC42NyA4IDkuNSA4czEuNS43OCAxLjUgMS43NXptLS43NS0uODdjMC0uMjEtLjE3LS4zOC0uMzgtLjM4cy0uMzcuMTctLjM3LjM4LjE3LjM4LjM4LjM4LjM3LS4xOC4zNy0uMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGcmVlQ2FuY2VsbGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMjEgMjBINVYxMGgxNHY0LjM4bDItMlY2YzAtMS4xLS45LTItMi0yaC0xVjJoLTJ2Mkg4VjJINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMjBhMiAyIDAgMCAwIDIgMmg4LjIxbC0yLTJ6TTUgNmgxNHYySDVWNnptMTEuNTQgMTYuNUwxMyAxOC45NmwxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNCAxLjQxIDEuNDEtNS42NCA1LjY2ek0xMC40MSAxNCAxMiAxNS41OSAxMC41OSAxNyA5IDE1LjQxIDcuNDEgMTcgNiAxNS41OSA3LjU5IDE0IDYgMTIuNDEgNy40MSAxMSA5IDEyLjU5IDEwLjU5IDExIDEyIDEyLjQxIDEwLjQxIDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR1RyYW5zbGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNWgtOS4xMkwxMCAySDRjLTEuMSAwLTIgLjktMiAydjEzYzAgMS4xLjkgMiAyIDJoN2wxIDNoOGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yek03LjE3IDE0LjU5Yy0yLjI1IDAtNC4wOS0xLjgzLTQuMDktNC4wOXMxLjgzLTQuMDkgNC4wOS00LjA5YzEuMDQgMCAxLjk5LjM3IDIuNzQgMS4wN2wuMDcuMDYtMS4yMyAxLjE4LS4wNi0uMDVjLS4yOS0uMjctLjc4LS41OS0xLjUyLS41OS0xLjMxIDAtMi4zOCAxLjA5LTIuMzggMi40MnMxLjA3IDIuNDIgMi4zOCAyLjQyYzEuMzcgMCAxLjk2LS44NyAyLjEyLTEuNDZINy4wOFY5LjkxaDMuOTVsLjAxLjA3Yy4wNC4yMS4wNS40LjA1LjYxIDAgMi4zNS0xLjYxIDQtMy45MiA0em02LjAzLTEuNzFjLjMzLjYuNzQgMS4xOCAxLjE5IDEuN2wtLjU0LjUzLS42NS0yLjIzem0uNzctLjc2aC0uOTlsLS4zMS0xLjA0aDMuOTlzLS4zNCAxLjMxLTEuNTYgMi43NGMtLjUyLS42Mi0uODktMS4yMy0xLjEzLTEuN3pNMjEgMjBjMCAuNTUtLjQ1IDEtMSAxaC03bDItMi0uODEtMi43Ny45Mi0uOTJMMTcuNzkgMThsLjczLS43My0yLjcxLTIuNjhjLjktMS4wMyAxLjYtMi4yNSAxLjkyLTMuNTFIMTl2LTEuMDRoLTMuNjRWOWgtMS4wNHYxLjA0aC0xLjk2TDExLjE4IDZIMjBjLjU1IDAgMSAuNDUgMSAxdjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR2F2ZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMjFoMTJ2Mkgxdi0yek01LjI0IDguMDdsMi44My0yLjgzIDE0LjE0IDE0LjE0LTIuODMgMi44M0w1LjI0IDguMDd6TTEyLjMyIDFsNS42NiA1LjY2LTIuODMgMi44My01LjY2LTUuNjZMMTIuMzIgMXpNMy44MyA5LjQ4bDUuNjYgNS42Ni0yLjgzIDIuODNMMSAxMi4zMWwyLjgzLTIuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHZW5lcmF0aW5nVG9rZW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LTgtMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6bTMtNy41aC0ydjVIOHYtNUg2VjloNnYxLjV6bTguMjUtNi43NUwyMyA1bC0yLjc1IDEuMjVMMTkgOWwtMS4yNS0yLjc1TDE1IDVsMi43NS0xLjI1TDE5IDFsMS4yNSAyLjc1em0wIDE0TDIzIDE5bC0yLjc1IDEuMjVMMTkgMjNsLTEuMjUtMi43NUwxNSAxOWwyLjc1LTEuMjVMMTkgMTVsMS4yNSAyLjc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR2V0QXBwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA1djZoMS4xN0wxMiAxMy4xNyA5LjgzIDExSDExVjVoMm0yLTJIOXY2SDVsNyA3IDctN2gtNFYzem00IDE1SDV2MmgxNHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdpZkJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5SDVWNWgxNHYxNHpNNSAzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJINXptNi41IDExaDF2LTRoLTF2NHptMiAwaDF2LTEuNUgxNnYtMWgtMS41VjExaDJ2LTFoLTN2NHptLTQtMnYxaC0xdi0yaDJjMC0uNTUtLjQ1LTEtMS0xaC0xYy0uNTUgMC0xIC40NS0xIDF2MmMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdpZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNSA5SDEzdjZoLTEuNVY5ek05IDlINmMtLjYgMC0xIC41LTEgMXY0YzAgLjUuNCAxIDEgMWgzYy42IDAgMS0uNSAxLTF2LTJIOC41djEuNWgtMnYtM0gxMFYxMGMwLS41LS40LTEtMS0xem0xMCAxLjVWOWgtNC41djZIMTZ2LTJoMnYtMS41aC0ydi0xaDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcmFkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgNy4xMy45NyAyLjI5LjQ3IDEuMTEgMS4yLjEgMi40Ny4yMS0xLjg4IDEuNjMtLjkxLjc5LjI3IDEuMTguNTYgMi40MS0yLjEyLTEuMjgtMS4wMy0uNjQtMS4wMy42Mi0yLjEyIDEuMjguNTYtMi40MS4yNy0xLjE4LS45MS0uNzktMS44OC0xLjYzIDIuNDctLjIxIDEuMi0uMS40Ny0xLjExLjk3LTIuMjdNMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3IDE4LjE4IDIxbC0xLjY0LTcuMDNMMjIgOS4yNGwtNy4xOS0uNjFMMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyYWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDdoMTZ2Mkg0Vjd6bTAgNmgxNnYtMkg0djJ6bTAgNGg3di0ySDR2MnptMCA0aDd2LTJINHYyem0xMS40MS0yLjgzTDE0IDE2Ljc1bC0xLjQxIDEuNDFMMTUuNDEgMjEgMjAgMTYuNDIgMTguNTggMTVsLTMuMTcgMy4xN3pNNCAzdjJoMTZWM0g0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JvdXBXb3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4XCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjhcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNlwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWxwQ2VudGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuMjUgMTYuNzRjMCAuNjktLjUzIDEuMjYtMS4yNSAxLjI2LS43IDAtMS4yNi0uNTYtMS4yNi0xLjI2IDAtLjcxLjU2LTEuMjUgMS4yNi0xLjI1LjcxIDAgMS4yNS41NSAxLjI1IDEuMjV6TTExLjk5IDZjLTEuNzcgMC0yLjk4IDEuMTUtMy40MyAyLjQ5bDEuNjQuNjljLjIyLS42Ny43NC0xLjQ4IDEuOC0xLjQ4IDEuNjIgMCAxLjk0IDEuNTIgMS4zNyAyLjMzLS41NC43Ny0xLjQ3IDEuMjktMS45NiAyLjE2LS4zOS42OS0uMzEgMS40OS0uMzEgMS45OGgxLjgyYzAtLjkzLjA3LTEuMTIuMjItMS40MS4zOS0uNzIgMS4xMS0xLjA2IDEuODctMi4xNy42OC0xIC40Mi0yLjM2LS4wMi0zLjA4LS41MS0uODQtMS41Mi0xLjUxLTMtMS41MXpNMTkgNUg1djE0aDE0VjVtMC0yYzEuMSAwIDIgLjkgMiAydjE0YzAgMS4xLS45IDItMiAySDVjLTEuMSAwLTItLjktMi0yVjVjMC0xLjEuOS0yIDItMmgxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhlbHBPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxOGgydi0yaC0ydjJ6bTEtMTZDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0wLTE0Yy0yLjIxIDAtNCAxLjc5LTQgNGgyYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJjMCAyLTMgMS43NS0zIDVoMmMwLTIuMjUgMy0yLjUgMy01IDAtMi4yMS0xLjc5LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGVscCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxN2gtMnYtMmgydjJ6bTIuMDctNy43NS0uOS45MkMxMy40NSAxMi45IDEzIDEzLjUgMTMgMTVoLTJ2LS41YzAtMS4xLjQ1LTIuMSAxLjE3LTIuODNsMS4yNC0xLjI2Yy4zNy0uMzYuNTktLjg2LjU5LTEuNDEgMC0xLjEtLjktMi0yLTJzLTIgLjktMiAySDhjMC0yLjIxIDEuNzktNCA0LTRzNCAxLjc5IDQgNGMwIC44OC0uMzYgMS42OC0uOTMgMi4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhpZGVTb3VyY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuODEgMi44MSAxLjM5IDQuMjJsMi4yNyAyLjI3QTkuOTEgOS45MSAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMDQgMCAzLjkzLS42MSA1LjUxLTEuNjZsMi4yNyAyLjI3IDEuNDEtMS40MUwyLjgxIDIuODF6TTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOCAwLTEuNDguNDEtMi44NiAxLjEyLTQuMDZsMTAuOTQgMTAuOTRDMTQuODYgMTkuNTkgMTMuNDggMjAgMTIgMjB6TTcuOTQgNS4xMiA2LjQ5IDMuNjZBOS45MSA5LjkxIDAgMCAxIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTAgMCAyLjA0LS42MSAzLjkzLTEuNjYgNS41MWwtMS40Ni0xLjQ2QTcuODY5IDcuODY5IDAgMCAwIDIwIDEyYzAtNC40MS0zLjU5LTgtOC04LTEuNDggMC0yLjg2LjQxLTQuMDYgMS4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhpZ2hsaWdodEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDVoLTJWM2gydjJ6bS0yIDEwdjZsMi4yOS0yLjI5IDIuMyAyLjI5TDIxIDE5LjU5bC0yLjI5LTIuMjlMMjEgMTVoLTZ6bTQtNmgyVjdoLTJ2MnptMCA0aDJ2LTJoLTJ2MnptLTggOGgydi0yaC0ydjJ6TTcgNWgyVjNIN3Yyek0zIDE3aDJ2LTJIM3Yyem0yIDR2LTJIM2MwIDEuMS45IDIgMiAyek0xOSAzdjJoMmMwLTEuMS0uOS0yLTItMnptLTggMmgyVjNoLTJ2MnpNMyA5aDJWN0gzdjJ6bTQgMTJoMnYtMkg3djJ6bS00LThoMnYtMkgzdjJ6bTAtOGgyVjNjLTEuMSAwLTIgLjktMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGlnaGxpZ2h0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41OSA4IDEyIDEwLjU5IDkuNDEgOCA4IDkuNDEgMTAuNTkgMTIgOCAxNC41OSA5LjQxIDE2IDEyIDEzLjQxIDE0LjU5IDE2IDE2IDE0LjU5IDEzLjQxIDEyIDE2IDkuNDEgMTQuNTkgOHpNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIaXN0b3J5VG9nZ2xlT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuMSAxOS4zNyAxIDEuNzRjLS45Ni40NC0yLjAxLjczLTMuMS44NHYtMi4wMmMuNzQtLjA5IDEuNDQtLjI4IDIuMS0uNTZ6TTQuMDcgMTNIMi4wNWMuMTEgMS4xLjQgMi4xNC44NCAzLjFsMS43NC0xYy0uMjgtLjY2LS40Ny0xLjM2LS41Ni0yLjF6TTE1LjEgNC42M2wxLTEuNzRjLS45Ni0uNDQtMi0uNzMtMy4xLS44NHYyLjAyYy43NC4wOSAxLjQ0LjI4IDIuMS41NnpNMTkuOTMgMTFoMi4wMmMtLjExLTEuMS0uNC0yLjE0LS44NC0zLjFsLTEuNzQgMWMuMjguNjYuNDcgMS4zNi41NiAyLjF6TTguOSAxOS4zN2wtMSAxLjc0Yy45Ni40NCAyLjAxLjczIDMuMS44NHYtMi4wMmMtLjc0LS4wOS0xLjQ0LS4yOC0yLjEtLjU2ek0xMSA0LjA3VjIuMDVjLTEuMS4xMS0yLjE0LjQtMy4xLjg0bDEgMS43NGMuNjYtLjI4IDEuMzYtLjQ3IDIuMS0uNTZ6bTcuMzYgMy4xIDEuNzQtMS4wMWMtLjYzLS44Ny0xLjQtMS42NC0yLjI3LTIuMjdsLTEuMDEgMS43NGMuNTkuNDUgMS4xLjk2IDEuNTQgMS41NHpNNC42MyA4LjlsLTEuNzQtMWMtLjQ0Ljk2LS43MyAyLS44NCAzLjFoMi4wMmMuMDktLjc0LjI4LTEuNDQuNTYtMi4xem0xNS4zIDQuMWMtLjA5Ljc0LS4yOCAxLjQ0LS41NiAyLjFsMS43NCAxYy40NC0uOTYuNzMtMi4wMS44NC0zLjFoLTIuMDJ6bS0zLjEgNS4zNiAxLjAxIDEuNzRjLjg3LS42MyAxLjY0LTEuNCAyLjI3LTIuMjdsLTEuNzQtMS4wMWMtLjQ1LjU5LS45NiAxLjEtMS41NCAxLjU0ek03LjE3IDUuNjRsLTEtMS43NWMtLjg4LjY0LTEuNjQgMS40LTIuMjcgMi4yOGwxLjc0IDEuMDFhNy43IDcuNyAwIDAgMSAxLjUzLTEuNTR6TTUuNjQgMTYuODNsLTEuNzQgMWMuNjMuODcgMS40IDEuNjQgMi4yNyAyLjI3bDEuMDEtMS43NGE3LjcgNy43IDAgMCAxLTEuNTQtMS41M3pNMTMgN2gtMnY1LjQxbDQuMjkgNC4yOSAxLjQxLTEuNDEtMy43LTMuN1Y3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGlzdG9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgM2E5IDkgMCAwIDAtOSA5SDFsMy44OSAzLjg5LjA3LjE0TDkgMTJINmMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3LTMuMTMgNy03IDdjLTEuOTMgMC0zLjY4LS43OS00Ljk0LTIuMDZsLTEuNDIgMS40MkE4Ljk1NCA4Ljk1NCAwIDAgMCAxMyAyMWE5IDkgMCAwIDAgMC0xOHptLTEgNXY1bDQuMjUgMi41Mi43Ny0xLjI4LTMuNTItMi4wOVY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGxzT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuODMgMTVoMS42N2MuNTUgMCAxLS40NSAxLTF2LTEuNWMwLS41NS0uNDUtMS0xLTFIMTd2LTFoMnYuNWgxLjV2LTFjMC0uNTUtLjQ1LTEtMS0xaC0zYy0uNTUgMC0xIC40NS0xIDF2MS41YzAgLjU1LjQ1IDEgMSAxSDE5djFoLTJWMTNoLTEuMTdsMiAyek04IDEwLjgzVjE1SDYuNXYtMi41aC0yVjE1SDNWOWgxLjV2MmgyVjkuMzNMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNDEgMS40MS03LjYtNy42SDEwdi0yLjE3bC0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgOUg4djZINi41di0yLjVoLTJWMTVIM1Y5aDEuNXYyaDJWOXptMTAgNmgzYy41NSAwIDEtLjQ1IDEtMXYtMS41YzAtLjU1LS40NS0xLTEtMUgxN3YtMWgydi41aDEuNXYtMWMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXYxLjVjMCAuNTUuNDUgMSAxIDFIMTl2MWgtMlYxM2gtMS41djFjMCAuNTUuNDUgMSAxIDF6TTE0IDE1di0xLjVoLTIuNVY5SDEwdjZoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDUuNjkgNSA0LjVWMThoLTJ2LTZIOXY2SDd2LTcuODFsNS00LjVNMTIgMyAyIDEyaDN2OGg2di02aDJ2Nmg2di04aDNMMTIgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvcml6b250YWxTcGxpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTV2Mkg1di0yaDE0bTItMTBIM3YyaDE4VjV6bTAgNEgzdjJoMThWOXptMCA0SDN2NmgxOHYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvdGVsQ2xhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMSA4Ljg5Ljk0IDMuMTFoMi44MmwtMi4yNyAxLjYyLjkzIDMuMDFMMTEgMTQuNzlsLTIuNDIgMS44NC45My0zLjAxTDcuMjQgMTJoMi44MkwxMSA4Ljg5ek04LjU4IDEwSDFsNi4xNyA0LjQxTDQuODMgMjIgMTEgMTcuMzEgMTcuMTggMjJsLTIuMzUtNy41OUwyMSAxMGgtNy41OEwxMSAybC0yLjQyIDh6bTEyLjc4IDEyLTEuODYtNi4wMUwyMy42OCAxM2gtMy40NGwtMy4wOCAyLjIgMS40NiA0LjcyTDIxLjM2IDIyek0xNyA4bC0xLjgyLTYtMS4wNCAzLjQ1Ljc3IDIuNTVIMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb3VyZ2xhc3NEaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNGg4djMuNWwtMi44NCAyLjg0IDEuMjUgMS4yNUwxOCA4LjAxIDE3Ljk5IDhIMThWMkg2djEuMTdsMiAyek0yLjEgMi4xLjY5IDMuNTFsOC45IDguOUw2IDE2bC4wMS4wMUg2VjIyaDEydi0xLjE3bDIuNDkgMi40OSAxLjQxLTEuNDFMMi4xIDIuMXpNMTYgMjBIOHYtMy41bDIuODQtMi44NEwxNiAxOC44M1YyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvdXJnbGFzc0VtcHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDJ2NmguMDFMNiA4LjAxIDEwIDEybC00IDQgLjAxLjAxSDZWMjJoMTJ2LTUuOTloLS4wMUwxOCAxNmwtNC00IDQtMy45OS0uMDEtLjAxSDE4VjJINnptMTAgMTQuNVYyMEg4di0zLjVsNC00IDQgNHptLTQtNS00LTRWNGg4djMuNWwtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG91cmdsYXNzRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAydjZoLjAxTDYgOC4wMSAxMCAxMmwtNCA0IC4wMS4wMUg2VjIyaDEydi01Ljk5aC0uMDFMMTggMTZsLTQtNCA0LTMuOTktLjAxLS4wMUgxOFYySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIdG1sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDlINXY2SDMuNXYtMi41aC0yVjE1SDBWOWgxLjV2MmgyVjl6bTE0IDBIMTNjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNXYtNC41aDFWMTRIMTZ2LTMuNTFoMVYxNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xek0xMSA5SDZ2MS41aDEuNzVWMTVoMS41di00LjVIMTFWOXptMTMgNnYtMS41aC0yLjVWOUgyMHY2aDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIdHRwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41IDExaC0yVjlIMXY2aDEuNXYtMi41aDJWMTVINlY5SDQuNXYyem0yLjUtLjVoMS41VjE1SDEwdi00LjVoMS41VjlIN3YxLjV6bTUuNSAwSDE0VjE1aDEuNXYtNC41SDE3VjloLTQuNXYxLjV6bTktMS41SDE4djZoMS41di0yaDJjLjggMCAxLjUtLjcgMS41LTEuNXYtMWMwLS44LS43LTEuNS0xLjUtMS41em0wIDIuNWgtMnYtMWgydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIdHRwcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yek05IDZjMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM3YySDlWNnptOSAxNEg2VjEwaDEydjEwem0tNi0zYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUltcG9ydGFudERldmljZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDExLjAxIDE4IDExYy0uNTUgMC0xIC40NS0xIDF2OWMwIC41NS40NSAxIDEgMWg1Yy41NSAwIDEtLjQ1IDEtMXYtOWMwLS41NS0uNDUtLjk5LTEtLjk5ek0yMyAyMGgtNXYtN2g1djd6TTIwIDJIMkMuODkgMiAwIDIuODkgMCA0djEyYTIgMiAwIDAgMCAyIDJoN3YySDd2Mmg4di0yaC0ydi0yaDJ2LTJIMlY0aDE4djVoMlY0YTIgMiAwIDAgMC0yLTJ6bS04LjAzIDdMMTEgNmwtLjk3IDNIN2wyLjQ3IDEuNzYtLjk0IDIuOTEgMi40Ny0xLjggMi40NyAxLjgtLjk0LTIuOTFMMTUgOWgtMy4wM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluZm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDdoMnYyaC0yem0wIDRoMnY2aC0yem0xLTlDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW5wdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwiLFwib3BhY2l0eVwiOlwiLjg3XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMy4wMUgzYy0xLjEgMC0yIC45LTIgMlY5aDJWNC45OWgxOHYxNC4wM0gzVjE1SDF2NC4wMWMwIDEuMS45IDEuOTggMiAxLjk4aDE4YzEuMSAwIDItLjg4IDItMS45OHYtMTRhMiAyIDAgMCAwLTItMnpNMTEgMTZsNC00LTQtNHYzSDF2MmgxMHYzek0yMSAzLjAxSDNjLTEuMSAwLTIgLjktMiAyVjloMlY0Ljk5aDE4djE0LjAzSDNWMTVIMXY0LjAxYzAgMS4xLjkgMS45OCAyIDEuOThoMThjMS4xIDAgMi0uODggMi0xLjk4di0xNGEyIDIgMCAwIDAtMi0yek0xMSAxNmw0LTQtNC00djNIMXYyaDEwdjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnN0YWxsRGVza3RvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE3SDRWNWg4VjNINGMtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDR2Mmg4di0yaDRjMS4xIDAgMi0uOSAyLTJ2LTNoLTJ2M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgMTQgNS01LTEuNDEtMS40MUwxOCAxMC4xN1YzaC0ydjcuMTdsLTIuNTktMi41OEwxMiA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW5zdGFsbE1vYmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDE4SDdWNmg3VjRIN1YzaDdWMS4wMUw3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJ2LTVoLTJ2MnptMCAzSDd2LTFoMTB2MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggMTQgNS01LTEuNDEtMS40MUwxOSAxMC4xN1YzaC0ydjcuMTdsLTIuNTktMi41OEwxMyA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW50ZWdyYXRpb25JbnN0cnVjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMy41XCIsXCJyXCI6XCIuNzVcIixcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjMuNVwiLFwiclwiOlwiLjc1XCIsXCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTUgMTV2NGgxNFY1SDV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE0LjE3IDguODMgMTIgMTEgOS44MyA5LjU5IDguNDEgNiAxMmwzLjU5IDMuNTl6TTE0LjQxIDE1LjU5IDE4IDEybC0zLjU5LTMuNTlMMTMgOS44MyAxNS4xNyAxMiAxMyAxNC4xN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFzLTIuNC44NC0yLjgyIDJINWMtLjE0IDAtLjI3LjAxLS40LjA0YTIuMDA4IDIuMDA4IDAgMCAwLTEuNDQgMS4xOWMtLjEuMjMtLjE2LjQ5LS4xNi43N3YxNGMwIC4yNy4wNi41NC4xNi43OHMuMjUuNDUuNDMuNjRjLjI3LjI3LjYyLjQ3IDEuMDEuNTUuMTMuMDIuMjYuMDMuNC4wM2gxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNy0uMjVjLjQxIDAgLjc1LjM0Ljc1Ljc1cy0uMzQuNzUtLjc1Ljc1LS43NS0uMzQtLjc1LS43NS4zNC0uNzUuNzUtLjc1ek0xOSAxNXY0SDVWNWgxNHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUludmVydENvbG9ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNC44MVYxOWMtMy4zMSAwLTYtMi42My02LTUuODcgMC0xLjU2LjYyLTMuMDMgMS43NS00LjE0TDEyIDQuODFNMTIgMiA2LjM1IDcuNTZDNC45IDguOTkgNCAxMC45NiA0IDEzLjEzIDQgMTcuNDggNy41OCAyMSAxMiAyMXM4LTMuNTIgOC03Ljg3YzAtMi4xNy0uOS00LjE0LTIuMzUtNS41N0wxMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSmF2YXNjcmlwdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE0di0xaDEuNXYuNWgydi0xSDEzYy0uNTUgMC0xLS40NS0xLTFWMTBjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MWgtMS41di0uNWgtMnYxSDE2Yy41NSAwIDEgLjQ1IDEgMVYxNGMwIC41NS0uNDUgMS0xIDFoLTNjLS41NSAwLTEtLjQ1LTEtMXpNOSA5djQuNUg3LjV2LTFINnYxYzAgLjgzLjY3IDEuNSAxLjUgMS41SDljLjgzIDAgMS41LS42NyAxLjUtMS41VjlIOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUpvaW5GdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImVsbGlwc2VcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwicnhcIjpcIjNcIixcInJ5XCI6XCI1Ljc0XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxMmMwLS45Ny4yMy00LjE2IDMuMDMtNi41QzkuNzUgNS4xOSA4LjkgNSA4IDVjLTMuODYgMC03IDMuMTQtNyA3czMuMTQgNyA3IDdjLjkgMCAxLjc1LS4xOSAyLjUzLS41LTIuOC0yLjM0LTMuMDMtNS41My0zLjAzLTYuNXpNMTYgNWMtLjkgMC0xLjc1LjE5LTIuNTMuNSAyLjggMi4zNCAzLjAzIDUuNTMgMy4wMyA2LjUgMCAuOTctLjIzIDQuMTYtMy4wMyA2LjUuNzguMzEgMS42My41IDIuNTMuNSAzLjg2IDAgNy0zLjE0IDctN3MtMy4xNC03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUpvaW5Jbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJlbGxpcHNlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJ4XCI6XCIzXCIsXCJyeVwiOlwiNS43NFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjA0IDE2Ljg3Yy0uMzMuMDgtLjY4LjEzLTEuMDQuMTMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNWMuMzYgMCAuNzEuMDUgMS4wNC4xMy4zOS0uNTYuODgtMS4xMiAxLjQ5LTEuNjNDOS43NSA1LjE5IDguOSA1IDggNWMtMy44NiAwLTcgMy4xNC03IDdzMy4xNCA3IDcgN2MuOSAwIDEuNzUtLjE5IDIuNTMtLjUtLjYxLS41MS0xLjEtMS4wNy0xLjQ5LTEuNjN6TTE2IDVjLS45IDAtMS43NS4xOS0yLjUzLjUuNjEuNTEgMS4xIDEuMDcgMS40OSAxLjYzLjMzLS4wOC42OC0uMTMgMS4wNC0uMTMgMi43NiAwIDUgMi4yNCA1IDVzLTIuMjQgNS01IDVjLS4zNiAwLS43MS0uMDUtMS4wNC0uMTMtLjM5LjU2LS44OCAxLjEyLTEuNDkgMS42My43OC4zMSAxLjYzLjUgMi41My41IDMuODYgMCA3LTMuMTQgNy03cy0zLjE0LTctNy03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSm9pbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiZWxsaXBzZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyeFwiOlwiM1wiLFwicnlcIjpcIjUuNzRcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDEyYzAtLjk3LjIzLTQuMTYgMy4wMy02LjVDOS43NSA1LjE5IDguOSA1IDggNWMtMy44NiAwLTcgMy4xNC03IDdzMy4xNCA3IDcgN2MuOSAwIDEuNzUtLjE5IDIuNTMtLjUtMi44LTIuMzQtMy4wMy01LjUzLTMuMDMtNi41ek0xNiA1Yy0uOSAwLTEuNzUuMTktMi41My41LjYxLjUxIDEuMSAxLjA3IDEuNDkgMS42My4zMy0uMDguNjgtLjEzIDEuMDQtLjEzIDIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1Yy0uMzYgMC0uNzEtLjA1LTEuMDQtLjEzLS4zOS41Ni0uODggMS4xMi0xLjQ5IDEuNjMuNzguMzEgMS42My41IDIuNTMuNSAzLjg2IDAgNy0zLjE0IDctN3MtMy4xNC03LTctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUpvaW5SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJlbGxpcHNlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJ4XCI6XCIzXCIsXCJyeVwiOlwiNS43NFwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDEyYzAgLjk3LS4yMyA0LjE2LTMuMDMgNi41Ljc4LjMxIDEuNjMuNSAyLjUzLjUgMy44NiAwIDctMy4xNCA3LTdzLTMuMTQtNy03LTdjLS45IDAtMS43NS4xOS0yLjUzLjUgMi44IDIuMzQgMy4wMyA1LjUzIDMuMDMgNi41ek04IDE5Yy45IDAgMS43NS0uMTkgMi41My0uNS0uNjEtLjUxLTEuMS0xLjA3LTEuNDktMS42My0uMzMuMDgtLjY4LjEzLTEuMDQuMTMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNWMuMzYgMCAuNzEuMDUgMS4wNC4xMy4zOS0uNTYuODgtMS4xMiAxLjQ5LTEuNjNDOS43NSA1LjE5IDguOSA1IDggNWMtMy44NiAwLTcgMy4xNC03IDdzMy4xNCA3IDcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxhYmVsSW1wb3J0YW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE4Ljk5aDExYy42NyAwIDEuMjctLjMyIDEuNjMtLjgzTDIxIDEybC00LjM3LTYuMTZDMTYuMjcgNS4zMyAxNS42NyA1IDE1IDVINGw1IDctNSA2Ljk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGFiZWxPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2IDcgMy41NSA1LTEuNjMgMi4yOSAxLjQzIDEuNDNMMjIgMTJsLTQuMzctNi4xNkMxNy4yNyA1LjMzIDE2LjY3IDUgMTYgNWwtNy4zNy4wMSAyIDEuOTlIMTZ6TTIgNC4wM2wxLjU4IDEuNThDMy4yMiA1Ljk2IDMgNi40NiAzIDd2MTBjMCAxLjEuOSAxLjk5IDIgMS45OUwxNiAxOWMuMjggMCAuNTUtLjA3Ljc5LS4xOEwxOC45NyAyMWwxLjQxLTEuNDFMMy40MSAyLjYyIDIgNC4wM3pNMTQuOTcgMTdINVY3LjAzTDE0Ljk3IDE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGFiZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjYzIDUuODRDMTcuMjcgNS4zMyAxNi42NyA1IDE2IDVMNSA1LjAxQzMuOSA1LjAxIDMgNS45IDMgN3YxMGMwIDEuMS45IDEuOTkgMiAxLjk5TDE2IDE5Yy42NyAwIDEuMjctLjMzIDEuNjMtLjg0TDIyIDEybC00LjM3LTYuMTZ6TTE2IDE3SDVWN2gxMWwzLjU1IDVMMTYgMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMYW5ndWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnptNi45MyA2aC0yLjk1YTE1LjY1IDE1LjY1IDAgMCAwLTEuMzgtMy41NkE4LjAzIDguMDMgMCAwIDEgMTguOTIgOHpNMTIgNC4wNGMuODMgMS4yIDEuNDggMi41MyAxLjkxIDMuOTZoLTMuODJjLjQzLTEuNDMgMS4wOC0yLjc2IDEuOTEtMy45NnpNNC4yNiAxNEM0LjEgMTMuMzYgNCAxMi42OSA0IDEycy4xLTEuMzYuMjYtMmgzLjM4Yy0uMDguNjYtLjE0IDEuMzItLjE0IDJzLjA2IDEuMzQuMTQgMkg0LjI2em0uODIgMmgyLjk1Yy4zMiAxLjI1Ljc4IDIuNDUgMS4zOCAzLjU2QTcuOTg3IDcuOTg3IDAgMCAxIDUuMDggMTZ6bTIuOTUtOEg1LjA4YTcuOTg3IDcuOTg3IDAgMCAxIDQuMzMtMy41NkExNS42NSAxNS42NSAwIDAgMCA4LjAzIDh6TTEyIDE5Ljk2Yy0uODMtMS4yLTEuNDgtMi41My0xLjkxLTMuOTZoMy44MmMtLjQzIDEuNDMtMS4wOCAyLjc2LTEuOTEgMy45NnpNMTQuMzQgMTRIOS42NmMtLjA5LS42Ni0uMTYtMS4zMi0uMTYtMnMuMDctMS4zNS4xNi0yaDQuNjhjLjA5LjY1LjE2IDEuMzIuMTYgMnMtLjA3IDEuMzQtLjE2IDJ6bS4yNSA1LjU2Yy42LTEuMTEgMS4wNi0yLjMxIDEuMzgtMy41NmgyLjk1YTguMDMgOC4wMyAwIDAgMS00LjMzIDMuNTZ6TTE2LjM2IDE0Yy4wOC0uNjYuMTQtMS4zMi4xNC0ycy0uMDYtMS4zNC0uMTQtMmgzLjM4Yy4xNi42NC4yNiAxLjMxLjI2IDJzLS4xIDEuMzYtLjI2IDJoLTMuMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMYXVuY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5SDVWNWg3VjNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTdoLTJ2N3pNMTQgM3YyaDMuNTlsLTkuODMgOS44MyAxLjQxIDEuNDFMMTkgNi40MVYxMGgyVjNoLTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMZWFkZXJib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDExVjNIOHY2SDJ2MTJoMjBWMTFoLTZ6bS02LTZoNHYxNGgtNFY1em0tNiA2aDR2OEg0di04em0xNiA4aC00di02aDR2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpZ2h0YnVsYkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxOWMuODMgMCAxLjUtLjY3IDEuNS0xLjVoLTNjMCAuODMuNjcgMS41IDEuNSAxLjV6TTkgMTVoNnYxLjVIOXpNMTIgNWMtMi43NiAwLTUgMi4yNC01IDUgMCAxLjY0LjggMy4wOSAyLjAzIDRoNS45NUE0Ljk4NSA0Ljk4NSAwIDAgMCAxNyAxMGMwLTIuNzYtMi4yNC01LTUtNXptMi40MyA3LjVIOS41N0EzLjQ3MyAzLjQ3MyAwIDAgMSA4LjUgMTBjMC0xLjkzIDEuNTctMy41IDMuNS0zLjVzMy41IDEuNTcgMy41IDMuNWMwIC45NS0uMzkgMS44NC0xLjA3IDIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpZ2h0YnVsYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMjFjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTFIOXYxem0zLTE5QzguMTQgMiA1IDUuMTQgNSA5YzAgMi4zOCAxLjE5IDQuNDcgMyA1Ljc0VjE3YzAgLjU1LjQ1IDEgMSAxaDZjLjU1IDAgMS0uNDUgMS0xdi0yLjI2YzEuODEtMS4yNyAzLTMuMzYgMy01Ljc0IDAtMy44Ni0zLjE0LTctNy03em0yLjg1IDExLjEtLjg1LjZWMTZoLTR2LTIuM2wtLjg1LS42QTQuOTk3IDQuOTk3IDAgMCAxIDcgOWMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMS42My0uOCAzLjE2LTIuMTUgNC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGluZVN0eWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNmg1di0ySDN2MnptNi41IDBoNXYtMmgtNXYyem02LjUgMGg1di0yaC01djJ6TTMgMjBoMnYtMkgzdjJ6bTQgMGgydi0ySDd2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnpNMyAxMmg4di0ySDN2MnptMTAgMGg4di0yaC04djJ6TTMgNHY0aDE4VjRIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpbmVXZWlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE3aDE4di0ySDN2MnptMCAzaDE4di0xSDN2MXptMC03aDE4di0zSDN2M3ptMC05djRoMThWNEgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzaDJ2LTJIM3Yyem0wIDRoMnYtMkgzdjJ6bTAtOGgyVjdIM3Yyem00IDRoMTR2LTJIN3Yyem0wIDRoMTR2LTJIN3Yyek03IDd2MmgxNFY3SDd6bS00IDZoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMC04aDJWN0gzdjJ6bTQgNGgxNHYtMkg3djJ6bTAgNGgxNHYtMkg3djJ6TTcgN3YyaDE0VjdIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2tDbG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAyMFYxMGgxMnYxYy43IDAgMS4zNy4xIDIgLjI5VjEwYzAtMS4xLS45LTItMi0yaC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNnYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoNi4yNmMtLjQyLS42LS43NS0xLjI4LS45Ny0ySDZ6TTkgNmMwLTEuNjYgMS4zNC0zIDMtM3MzIDEuMzQgMyAzdjJIOVY2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTEuNjUgNy4zNUwxNy41IDE4LjJWMTVoMXYyLjc5bDEuODUgMS44NS0uNy43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2tPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA4aC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNmgyYzAtMS42NiAxLjM0LTMgMy0zczMgMS4zNCAzIDN2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yem0wIDEySDZWMTBoMTJ2MTB6bS02LTNjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9ja1BlcnNvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMjBWMTBoMTJ2MWMuNyAwIDEuMzcuMSAyIC4yOVYxMGMwLTEuMS0uOS0yLTItMmgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDYuMjZjLS40Mi0uNi0uNzUtMS4yOC0uOTctMkg2ek05IDZjMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM3YySDlWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0wIDJjLjgzIDAgMS41LjY3IDEuNSAxLjVTMTguODMgMTggMTggMThzLTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNXptMCA2Yy0xLjAzIDAtMS45NC0uNTItMi40OC0xLjMyLjczLS40MiAxLjU3LS42OCAyLjQ4LS42OHMxLjc1LjI2IDIuNDguNjhjLS41NC44LTEuNDUgMS4zMi0yLjQ4IDEuMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NrUmVzZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzYTkgOSAwIDAgMC05IDljMCAuMDYuMDEuMTIuMDEuMTlsLTEuODQtMS44NC0xLjQxIDEuNDFMNSAxNmw0LjI0LTQuMjQtMS40MS0xLjQxLTEuODIgMS44MmMwLS4wNi0uMDEtLjExLS4wMS0uMTcgMC0zLjg2IDMuMTQtNyA3LTdzNyAzLjE0IDcgNy0zLjE0IDctNyA3Yy0xLjkgMC0zLjYyLS43Ni00Ljg4LTEuOTlMNi43IDE4LjQyQTguOTgyIDguOTgyIDAgMCAwIDEzIDIxYTkgOSAwIDAgMCAwLTE4em0yIDh2LTFjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXptLTEgMGgtMnYtMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwiLFwib3BhY2l0eVwiOlwiLjg3XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yek05IDZjMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM3YySDlWNnptOSAxNEg2VjEwaDEydjEwem0tNi0zYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvZ2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNyA5LjYgOC40bDIuNiAyLjZIMnYyaDEwLjJsLTIuNiAyLjZMMTEgMTdsNS01LTUtNXptOSAxMmgtOHYyaDhjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMmgtOHYyaDh2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2dvdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3IDgtMS40MSAxLjQxTDE3LjE3IDExSDl2Mmg4LjE3bC0xLjU4IDEuNThMMTcgMTZsNC00LTQtNHpNNSA1aDdWM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDd2LTJINVY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG95YWx0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNDEgMTEuNTgtOS05QzEyLjA1IDIuMjIgMTEuNTUgMiAxMSAySDRjLTEuMSAwLTIgLjktMiAydjdjMCAuNTUuMjIgMS4wNS41OSAxLjQybDkgOWMuMzYuMzYuODYuNTggMS40MS41OHMxLjA1LS4yMiAxLjQxLS41OWw3LTdjLjM3LS4zNi41OS0uODYuNTktMS40MXMtLjIzLTEuMDYtLjU5LTEuNDJ6TTEzIDIwLjAxIDQgMTFWNGg3di0uMDFsOSA5LTcgNy4wMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2LjVcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjkgMTIuNTVjMCAuNTcuMjMgMS4wNy42IDEuNDVsMy41IDMuNSAzLjUtMy41YTIuMDUzIDIuMDUzIDAgMCAwLTIuOS0yLjlsLS42LjYtLjYtLjU5Yy0uMzctLjM4LS44OS0uNjEtMS40NS0uNjEtMS4xMyAwLTIuMDUuOTItMi4wNSAyLjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFuYWdlQWNjb3VudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTh2LS42NWMwLS4zNC4xNi0uNjYuNDEtLjgxQzYuMSAxNS41MyA4LjAzIDE1IDEwIDE1Yy4wMyAwIC4wNSAwIC4wOC4wMS4xLS43LjMtMS4zNy41OS0xLjk4LS4yMi0uMDItLjQ0LS4wMy0uNjctLjAzLTIuNDIgMC00LjY4LjY3LTYuNjEgMS44Mi0uODguNTItMS4zOSAxLjUtMS4zOSAyLjUzVjIwaDkuMjZjLS40Mi0uNi0uNzUtMS4yOC0uOTctMkg0ek0xMCAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6TTIwLjc1IDE2YzAtLjIyLS4wMy0uNDItLjA2LS42M2wxLjE0LTEuMDEtMS0xLjczLTEuNDUuNDljLS4zMi0uMjctLjY4LS40OC0xLjA4LS42M0wxOCAxMWgtMmwtLjMgMS40OWMtLjQuMTUtLjc2LjM2LTEuMDguNjNsLTEuNDUtLjQ5LTEgMS43MyAxLjE0IDEuMDFjLS4wMy4yMS0uMDYuNDEtLjA2LjYzcy4wMy40Mi4wNi42M2wtMS4xNCAxLjAxIDEgMS43MyAxLjQ1LS40OWMuMzIuMjcuNjguNDggMS4wOC42M0wxNiAyMWgybC4zLTEuNDljLjQtLjE1Ljc2LS4zNiAxLjA4LS42M2wxLjQ1LjQ5IDEtMS43My0xLjE0LTEuMDFjLjAzLS4yMS4wNi0uNDEuMDYtLjYzek0xNyAxOGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYW5hZ2VIaXN0b3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuNjkgMTguMzcgMS4xNC0xLTEtMS43My0xLjQ1LjQ5Yy0uMzItLjI3LS42OC0uNDgtMS4wOC0uNjNMMjAgMTRoLTJsLS4zIDEuNDljLS40LjE1LS43Ni4zNi0xLjA4LjYzbC0xLjQ1LS40OS0xIDEuNzMgMS4xNCAxYy0uMDguNS0uMDguNzYgMCAxLjI2bC0xLjE0IDEgMSAxLjczIDEuNDUtLjQ5Yy4zMi4yNy42OC40OCAxLjA4LjYzTDE4IDI0aDJsLjMtMS40OWMuNC0uMTUuNzYtLjM2IDEuMDgtLjYzbDEuNDUuNDkgMS0xLjczLTEuMTQtMWMuMDgtLjUxLjA4LS43NyAwLTEuMjd6TTE5IDIxYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpNMTEgN3Y1LjQxbDIuMzYgMi4zNiAxLjA0LTEuNzktMS40LTEuMzlWN2gtMnptMTAgNWE5IDkgMCAwIDAtOS05QzkuMTcgMyA2LjY1IDQuMzIgNSA2LjM2VjRIM3Y2aDZWOEg2LjI2QTcuMDEgNy4wMSAwIDAgMSAxMiA1YzMuODYgMCA3IDMuMTQgNyA3aDJ6bS0xMC4xNCA2LjkxYy0yLjk5LS40OS01LjM1LTIuOS01Ljc4LTUuOTFIMy4wNmMuNSA0LjUgNC4zMSA4IDguOTQgOGguMDdsLTEuMjEtMi4wOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hcmtBc1VucmVhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMjMgN2gyLjZjLS4wNi0uNDctLjM2LS45NC0uNzktMS4xN0wxMC41IDIgMi44IDUuODNjLS40OC4yNi0uOC44MS0uOCAxLjM0VjE1YzAgMS4xLjkgMiAyIDJWNy40TDEwLjUgNGw1LjczIDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDhIN2MtMS4xIDAtMiAuOS0yIDJ2OWMwIDEuMS45IDIgMiAyaDEzYzEuMSAwIDItLjkgMi0ydi05YzAtMS4xLS45LTItMi0yem0wIDExSDd2LTdsNi41IDMuMzNMMjAgMTJ2N3ptLTYuNS01LjY3TDcgMTBoMTNsLTYuNSAzLjMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFya3VucmVhZE1haWxib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2SDEwdjJoMTB2MTJINFY4aDJ2NGgyVjRoNlYwSDZ2Nkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYXhpbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzaDE4djJIM1YzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVkaWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggMTYgNC00LTQtNHYzaC01LjA2QTguOTc0IDguOTc0IDAgMCAwIDggMy45NSAzLjAwNSAzLjAwNSAwIDAgMCA1IDFDMy4zNCAxIDIgMi4zNCAyIDRzMS4zNCAzIDMgM2MuOTUgMCAxLjc4LS40NSAyLjMzLTEuMTRDOS4yMyA2LjkgMTAuNiA4Ljc3IDEwLjkyIDExaC0zLjFDNy40IDkuODQgNi4zIDkgNSA5Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzYzEuMyAwIDIuNC0uODQgMi44Mi0yaDMuMWMtLjMyIDIuMjMtMS42OSA0LjEtMy41OCA1LjE0QzYuNzggMTcuNDUgNS45NSAxNyA1IDE3Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzYTIuOTkgMi45OSAwIDAgMCAyLjk5LTIuOTVBOC45NzQgOC45NzQgMCAwIDAgMTIuOTMgMTNIMTh2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1pbmltaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE5aDEydjJINnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vZGVsVHJhaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDEzLjVjMCAyLTIuNSAzLjUtMi41IDVoLTJjMC0xLjUtMi41LTMtMi41LTUgMC0xLjkzIDEuNTctMy41IDMuNS0zLjVzMy41IDEuNTcgMy41IDMuNXptLTIuNSA2aC0yVjIxaDJ2LTEuNXptNi02LjVjMCAxLjY4LS41OSAzLjIxLTEuNTggNC40MmwxLjQyIDEuNDJhOC45NzggOC45NzggMCAwIDAtMS0xMi42OGwtMS40MiAxLjQyQTYuOTkzIDYuOTkzIDAgMCAxIDE5IDEzem0tMy04LTQtNHYzYTkgOSAwIDAgMC05IDljMCAyLjIzLjgyIDQuMjcgMi4xNiA1Ljg0bDEuNDItMS40MkE2LjkzOCA2LjkzOCAwIDAgMSA1IDEzYzAtMy44NiAzLjE0LTcgNy03djNsNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmV0d29ya1BpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNC42NyAzLjQxIDYuMDkgMiA3LjVsOC41IDguNUg0djJoMTZ2LTJoLTYuNWw1LjE1LTUuMTVBMi41IDIuNSAwIDEgMCAxOS41IDYgMi41IDIuNSAwIDAgMCAxNyA4LjVjMCAuMzUuMDcuNjcuMi45N2wtNS4yIDUuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5ld0xhYmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEgMTItNC4zNyA2LjE2Yy0uMzcuNTItLjk4Ljg0LTEuNjMuODRoLTN2LTJoM2wzLjU1LTVMMTUgN0g1djNIM1Y3YzAtMS4xLjktMiAyLTJoMTBjLjY1IDAgMS4yNi4zMSAxLjYzLjg0TDIxIDEyem0tMTEgM0g3di0zSDV2M0gydjJoM3YzaDJ2LTNoM3YtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5leHRQbGFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ljk3IDExLjAzQzE0Ljg3IDkuNzkgMTMuMjggOSAxMS41IDljLTIuODIgMC01LjE4IDEuOTUtNS44MiA0LjU2bC45Ni4zMkM3LjE1IDExLjY2IDkuMTMgMTAgMTEuNSAxMGMxLjUxIDAgMi44NS42OCAzLjc2IDEuNzRMMTMgMTRoNVY5bC0yLjAzIDIuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOaWdodGxpZ2h0Um91bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDIyYzEuMDUgMCAyLjA1LS4xNiAzLS40Ni00LjA2LTEuMjctNy01LjA2LTctOS41NHMyLjk0LTguMjcgNy05LjU0Yy0uOTUtLjMtMS45NS0uNDYtMy0uNDYtNS41MiAwLTEwIDQuNDgtMTAgMTBzNC40OCAxMCAxMCAxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vQWNjb3VudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4xOCAxMC45NGMuMi0uNDQuMzItLjkyLjMyLTEuNDRDMTUuNSA3LjU3IDEzLjkzIDYgMTIgNmMtLjUyIDAtMSAuMTItMS40NC4zMmw0LjYyIDQuNjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTQgMTJjMC0xLjg1LjYzLTMuNTUgMS42OS00LjlsMi44NiAyLjg2YTMuNDcgMy40NyAwIDAgMCAyLjk5IDIuOTlsMi4yIDIuMmMtLjU3LS4xLTEuMTUtLjE1LTEuNzQtLjE1LTIuMzIgMC00LjQ1LjgtNi4xNCAyLjEyQTcuOTU3IDcuOTU3IDAgMCAxIDQgMTJ6bTggOGMtMS43NCAwLTMuMzQtLjU2LTQuNjUtMS41QzguNjYgMTcuNTYgMTAuMjYgMTcgMTIgMTdzMy4zNC41NiA0LjY1IDEuNWMtMS4zMS45NC0yLjkxIDEuNS00LjY1IDEuNXptNi4zMS0zLjFMNy4xIDUuNjlBNy45MDIgNy45MDIgMCAwIDEgMTIgNGM0LjQyIDAgOCAzLjU4IDggOCAwIDEuODUtLjYzIDMuNTQtMS42OSA0Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb2lzZUF3YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTVoLTJhMS4wMDMgMS4wMDMgMCAwIDEtMS45NS4zMmMtLjE1LS40NC0uNC0xLjA4LS45My0xLjYxbC0xLjM2LTEuMzZDOS4yOCAxMS44NyA5IDExLjE5IDkgMTAuNWEyLjUgMi41IDAgMCAxIDQuOTUtLjVoMi4wMmMtLjI1LTIuMjUtMi4xNi00LTQuNDctNEM5LjAyIDYgNyA4LjAyIDcgMTAuNWMwIDEuMjIuNDkgMi40MSAxLjM1IDMuMjdsMS4zNiAxLjM2Yy4xNy4xNy4zMS40NC40NC44MkEzLjAxMyAzLjAxMyAwIDAgMCAxMyAxOGMxLjY1IDAgMy0xLjM1IDMtM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMy41XCIsXCJjeVwiOlwiMTIuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMuNiA2LjU4IDEuNTggMS4yNmMuMzUtLjU3Ljc3LTEuMSAxLjI0LTEuNTdMNC44NSA1LjAyYy0uNDcuNDctLjg4IDEtMS4yNSAxLjU2ek05LjQ2IDQuNDJsLS44Ny0xLjgxYy0uNjMuMjMtMS4yNC41Mi0xLjguODdsLjg3IDEuODFjLjU2LS4zNiAxLjE2LS42NSAxLjgtLjg3ek00LjQ5IDkuMjZsLTEuOTYtLjQ1Yy0uMjEuNjMtLjM2IDEuMjgtLjQ0IDEuOTVsMS45Ni40NWE3LjkgNy45IDAgMCAxIC40NC0xLjk1ek0yMC40IDYuNThhOS40IDkuNCAwIDAgMC0xLjI1LTEuNTZsLTEuNTggMS4yNmMuNDguNDcuODkuOTkgMS4yNCAxLjU3bDEuNTktMS4yN3pNNC4wNCAxMi43OWwtMS45Ni40NWMuMDguNjcuMjMgMS4zMy40NCAxLjk1bDEuOTctLjQ1Yy0uMjItLjYyLS4zOC0xLjI3LS40NS0xLjk1ek0xNy4yMSAzLjQ4Yy0uNTctLjM1LTEuMTctLjY0LTEuOC0uODdsLS44NyAxLjgxYy42NC4yMiAxLjI0LjUxIDEuOC44N2wuODctMS44MXpNMTMgNC4wN1YyLjA1Yy0uMzMtLjAzLS42Ni0uMDUtMS0uMDVzLS42Ny4wMi0xIC4wNXYyLjAyYy4zMy0uMDQuNjYtLjA3IDEtLjA3cy42Ny4wMyAxIC4wN3pNMTEgMTkuOTN2Mi4wMmMuMzMuMDMuNjYuMDUgMSAuMDVzLjY3LS4wMiAxLS4wNXYtMi4wMmMtLjMzLjA0LS42Ni4wNy0xIC4wN3MtLjY3LS4wMy0xLS4wN3pNMTkuNTEgMTQuNzRsMS45Ny40NWMuMjEtLjYzLjM2LTEuMjguNDQtMS45NWwtMS45Ni0uNDVjLS4wNy42OC0uMjMgMS4zMy0uNDUgMS45NXpNMTkuOTYgMTEuMjFsMS45Ni0uNDVhOS42OSA5LjY5IDAgMCAwLS40NC0xLjk1bC0xLjk3LjQ1Yy4yMi42Mi4zOCAxLjI3LjQ1IDEuOTV6TTE3LjU4IDE3LjczbDEuNTggMS4yNmMuNDctLjQ4Ljg4LTEgMS4yNS0xLjU2bC0xLjU4LTEuMjZhOS40IDkuNCAwIDAgMS0xLjI1IDEuNTZ6TTYuNzkgMjAuNTJjLjU3LjM1IDEuMTcuNjQgMS44Ljg3bC44Ny0xLjgxYy0uNjQtLjIyLTEuMjQtLjUxLTEuOC0uODdsLS44NyAxLjgxek0xNC41NCAxOS41OGwuODcgMS44MWMuNjMtLjIzIDEuMjQtLjUyIDEuOC0uODdsLS44Ny0xLjgxYy0uNTYuMzYtMS4xNi42NS0xLjguODd6TTMuNiAxNy40MmE5LjQgOS40IDAgMCAwIDEuMjUgMS41NmwxLjU4LTEuMjZhNy44NyA3Ljg3IDAgMCAxLTEuMjQtMS41N0wzLjYgMTcuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb2lzZUNvbnRyb2xPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzEuNDQgMCAyLjc5LjM4IDMuOTUgMS4wNUwxNy40IDMuNkMxNS44NSAyLjU5IDEzLjk5IDIgMTIgMnMtMy44NS41OS01LjQxIDEuNTlsMS40NSAxLjQ1QTguMDM0IDguMDM0IDAgMCAxIDEyIDR6TTIwIDEyYzAgMS40NC0uMzggMi43OS0xLjA1IDMuOTVsMS40NSAxLjQ1YzEuMDEtMS41NSAxLjYtMy40MSAxLjYtNS40cy0uNTktMy44NS0xLjU5LTUuNDFsLTEuNDUgMS40NUE4LjAzNCA4LjAzNCAwIDAgMSAyMCAxMnpNMTIgMjBjLTEuNDQgMC0yLjc5LS4zOC0zLjk1LTEuMDVMNi42IDIwLjRDOC4xNSAyMS40MSAxMC4wMSAyMiAxMiAyMnMzLjg1LS41OSA1LjQxLTEuNTlsLTEuNDUtMS40NUE4LjAzNCA4LjAzNCAwIDAgMSAxMiAyMHpNNCAxMmMwLTEuNDQuMzgtMi43OSAxLjA1LTMuOTVMMy41OSA2LjU5QzIuNTkgOC4xNSAyIDEwLjAxIDIgMTJzLjU5IDMuODUgMS41OSA1LjQxbDEuNDUtMS40NUE4LjAzNCA4LjAzNCAwIDAgMSA0IDEyek0xMS41IDZDOS4wMiA2IDcgOC4wMiA3IDEwLjVjMCAxLjIyLjQ5IDIuNDEgMS4zNSAzLjI3bDEuMzYgMS4zNmMuMTcuMTcuMzEuNDQuNDQuODJBMy4wMTMgMy4wMTMgMCAwIDAgMTMgMThjMS42NSAwIDMtMS4zNSAzLTNoLTJhMS4wMDMgMS4wMDMgMCAwIDEtMS45NS4zMmMtLjE1LS40NC0uNC0xLjA4LS45My0xLjYxbC0xLjM2LTEuMzZDOS4yOCAxMS44NyA5IDExLjE5IDkgMTAuNWEyLjUgMi41IDAgMCAxIDQuOTUtLjVoMi4wMmMtLjI1LTIuMjUtMi4xNi00LTQuNDctNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMy41XCIsXCJjeVwiOlwiMTIuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RBY2Nlc3NpYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgNGMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem05IDl2LTJjLTEuNTQuMDItMy4wOS0uNzUtNC4wNy0xLjgzbC0xLjI5LTEuNDNjLS4yNC0uMjQtLjQ0LS4zNi0uNjMtLjQ2LS4zNi0uMTktLjcyLS4zLTEuMi0uMjYtLjQ5LjA0LS45MS4yNy0xLjIzLjYxTDE0IDExLjA1YzEuMjkgMS4wNyAzLjI1IDEuOTQgNSAxLjk1em0tOSA3Yy0xLjY2IDAtMy0xLjM0LTMtMyAwLTEuMzEuODQtMi40MSAyLTIuODNWMTIuMWE1IDUgMCAxIDAgNS45IDUuOWgtMi4wN2MtLjQxIDEuMTYtMS41MiAyLTIuODMgMnpNMi44MSAyLjgxIDEuMzkgNC4yMiAxMCAxMi44M1YxNWMwIDEuMS45IDIgMiAyaDIuMTdsNS42MSA1LjYxIDEuNDEtMS40MUwyLjgxIDIuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RTdGFydGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LThtMC0yQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMSA2SDl2OGgyVjh6bTYgNC01LTR2OGw1LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RlQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMWgtMnYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zem0xLTlINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em00IDE4SDZWNGg3djVoNXYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU9mZmxpbmVCb2x0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMi4wMmMtNS41MSAwLTkuOTggNC40Ny05Ljk4IDkuOThzNC40NyA5Ljk4IDkuOTggOS45OCA5Ljk4LTQuNDcgOS45OC05Ljk4UzE3LjUxIDIuMDIgMTIgMi4wMnptMCAxNy45NmMtNC40IDAtNy45OC0zLjU4LTcuOTgtNy45OFM3LjYgNC4wMiAxMiA0LjAyIDE5Ljk4IDcuNiAxOS45OCAxMiAxNi40IDE5Ljk4IDEyIDE5Ljk4ek0xMi43NSA1bC00LjUgOC41aDMuMTRWMTlsNC4zNi04LjVoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVPZmZsaW5lUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0tNS01aDEwdjJIN3ptMy4zLTMuOEw4LjQgOS4zIDcgMTAuN2wzLjMgMy4zTDE3IDcuM2wtMS40LTEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU9uRGV2aWNlVHJhaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNmgydjFoLTJ6TTEyIDExYy0xLjEgMC0yIC45LTIgMiAwIC43NC40IDEuMzggMSAxLjcydi43OGgydi0uNzhjLjYtLjM1IDEtLjk4IDEtMS43MiAwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMS4wMSA2IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTggMjFINnYtMWgxMnYxem0wLTNINlY2aDEydjEyem0wLTE0SDZWM2gxMnYxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4wMSAxNS45NWMuNjItLjgzLjk5LTEuODQuOTktMi45NXMtLjM3LTIuMTItLjk5LTIuOTVsLTEuMDcgMS4wN2MuMzUuNTQuNTYgMS4xOS41NiAxLjg4cy0uMjEgMS4zNC0uNTYgMS44OGwxLjA3IDEuMDd6TTkuMDYgMTQuODhjLS4zNS0uNTQtLjU2LTEuMTktLjU2LTEuODggMC0xLjkzIDEuNTctMy41IDMuNS0zLjV2MS4yNWwyLjI1LTItMi4yNS0yVjhjLTIuNzYgMC01IDIuMjQtNSA1IDAgMS4xMS4zNyAyLjEyLjk5IDIuOTVsMS4wNy0xLjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT25saW5lUHJlZGljdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTEuNWMwIDItMi41IDMuNS0yLjUgNWgtMmMwLTEuNS0yLjUtMy0yLjUtNUM4LjUgOS41NyAxMC4wNyA4IDEyIDhzMy41IDEuNTcgMy41IDMuNXptLTIuNSA2aC0yVjE5aDJ2LTEuNXptOS01LjVjMC0yLjc2LTEuMTItNS4yNi0yLjkzLTcuMDdsLTEuMDYgMS4wNkE4LjQ4MSA4LjQ4MSAwIDAgMSAyMC41IDEyYzAgMi4zNC0uOTUgNC40Ny0yLjQ5IDYuMDFsMS4wNiAxLjA2QTkuOTY5IDkuOTY5IDAgMCAwIDIyIDEyek0zLjUgMTJjMC0yLjM0Ljk1LTQuNDcgMi40OS02LjAxTDQuOTMgNC45M0E5Ljk2OSA5Ljk2OSAwIDAgMCAyIDEyYzAgMi43NiAxLjEyIDUuMjYgMi45MyA3LjA3bDEuMDYtMS4wNkE4LjQ4MSA4LjQ4MSAwIDAgMSAzLjUgMTJ6bTE0IDBjMCAxLjUyLS42MiAyLjg5LTEuNjEgMy44OWwxLjA2IDEuMDZBNi45NzYgNi45NzYgMCAwIDAgMTkgMTJjMC0xLjkzLS43OC0zLjY4LTIuMDUtNC45NWwtMS4wNiAxLjA2Yy45OSAxIDEuNjEgMi4zNyAxLjYxIDMuODl6TTcuMDUgMTYuOTVsMS4wNi0xLjA2Yy0xLTEtMS42MS0yLjM3LTEuNjEtMy44OXMuNjItMi44OSAxLjYxLTMuODlMNy4wNSA3LjA1QTYuOTc2IDYuOTc2IDAgMCAwIDUgMTJjMCAxLjkzLjc4IDMuNjggMi4wNSA0Ljk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT3BhY2l0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMEgwdjI0aDI0VjB6bTAgMEgwdjI0aDI0VjB6TTAgMjRoMjRWMEgwdjI0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy42NiA4IDEyIDIuMzUgNi4zNCA4QTguMDIgOC4wMiAwIDAgMCA0IDEzLjY0YzAgMiAuNzggNC4xMSAyLjM0IDUuNjdhNy45OSA3Ljk5IDAgMCAwIDExLjMyIDBjMS41Ni0xLjU2IDIuMzQtMy42NyAyLjM0LTUuNjdTMTkuMjIgOS41NiAxNy42NiA4ek02IDE0Yy4wMS0yIC42Mi0zLjI3IDEuNzYtNC40TDEyIDUuMjdsNC4yNCA0LjM4QzE3LjM4IDEwLjc3IDE3Ljk5IDEyIDE4IDE0SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVPcGVuSW5Ccm93c2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDR2LTJINVY4aDE0djEwaC00djJoNGMxLjEgMCAyLS45IDItMlY2YTIgMiAwIDAgMC0yLTJ6bS03IDYtNCA0aDN2Nmgydi02aDNsLTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU9wZW5JbkZ1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMVYzaC04bDMuMjkgMy4yOS0xMCAxMEwzIDEzdjhoOGwtMy4yOS0zLjI5IDEwLTEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT3BlbkluTmV3T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNzkgNS44IDE0IDNoN3Y3bC0yLjc5LTIuOC00LjA5IDQuMDktMS40MS0xLjQxIDQuMDgtNC4wOHpNMTkgMTJ2NC4xN2wyIDJWMTJoLTJ6bS43OCAxMC42MUwxOC4xNyAyMUg1YTIgMiAwIDAgMS0yLTJWNS44M0wxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6TTE2LjE3IDE5bC00Ljg4LTQuODgtMS41OSAxLjU5LTEuNDEtMS40MSAxLjU5LTEuNTlMNSA3LjgzVjE5aDExLjE3ek03LjgzIDVIMTJWM0g1LjgzbDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU9wZW5Jbk5ldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTlINVY1aDdWM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU9wZW5XaXRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA5aDRWNmgzbC01LTUtNSA1aDN2M3ptLTEgMUg2VjdsLTUgNSA1IDV2LTNoM3YtNHptMTQgMi01LTV2M2gtM3Y0aDN2M2w1LTV6bS05IDNoLTR2M0g3bDUgNSA1LTVoLTN2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVPdXRib25kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LThtMC0yQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xLjg4IDkuNTRMOC45MiAxNi41bC0xLjQxLTEuNDEgNC45Ni00Ljk2TDEwLjM0IDhsNS42NS4wMS4wMSA1LjY1LTIuMTItMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU91dGJvdW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LThtMC0yQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xLjg4IDkuNTRMOC45MiAxNi41bC0xLjQxLTEuNDEgNC45Ni00Ljk2TDEwLjM0IDhsNS42NS4wMS4wMSA1LjY1LTIuMTItMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU91dGJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDkuODNWMTRoMlY5LjgzbDEuNTkgMS41OEwxNiAxMGwtNC00LTQgNCAxLjQxIDEuNDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDV2LTNoMy4wMmMuOTEgMS4yMSAyLjM1IDIgMy45OCAyczMuMDYtLjc5IDMuOTgtMkgxOXYzem0wLTVoLTQuMThjLS40MSAxLjE2LTEuNTEgMi0yLjgyIDJzLTIuNC0uODQtMi44Mi0ySDVWNWgxNHY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT3V0bGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LThtMC0yQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMiA5VjhjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMXMxLS40NSAxLTF6bTYgMFY4YzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xem0tMiA1YzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYyaDR2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVPdXRwdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNyAxNyA1LTUtNS01LTEuNDEgMS40MUwxOC4xNyAxMUg5djJoOS4xN2wtMi41OCAyLjU5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOUg1VjVoMTR2MmgyVjVhMiAyIDAgMCAwLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YTIgMiAwIDAgMCAyLTJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhZ2V2aWV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS40OSAxNmMuODggMCAxLjctLjI2IDIuMzktLjdsMi40NCAyLjQ0IDEuNDItMS40Mi0yLjQ0LTIuNDNjLjQ0LS43LjctMS41MS43LTIuMzlDMTYgOS4wMSAxMy45OSA3IDExLjUgN1M3IDkuMDEgNyAxMS41IDkuMDEgMTYgMTEuNDkgMTZ6bS4wMS03YTIuNSAyLjUgMCAwIDEgMCA1IDIuNSAyLjUgMCAwIDEgMC01ek0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjZoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYWlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bS44OS04LjljLTEuNzgtLjU5LTIuNjQtLjk2LTIuNjQtMS45IDAtMS4wMiAxLjExLTEuMzkgMS44MS0xLjM5IDEuMzEgMCAxLjc5Ljk5IDEuOSAxLjM0bDEuNTgtLjY3Yy0uMTUtLjQ0LS44Mi0xLjkxLTIuNjYtMi4yM1Y1aC0xLjc1djEuMjZjLTIuNi41Ni0yLjYyIDIuODUtMi42MiAyLjk2IDAgMi4yNyAyLjI1IDIuOTEgMy4zNSAzLjMxIDEuNTguNTYgMi4yOCAxLjA3IDIuMjggMi4wMyAwIDEuMTMtMS4wNSAxLjYxLTEuOTggMS42MS0xLjgyIDAtMi4zNC0xLjg3LTIuNC0yLjA5bC0xLjY2LjY3Yy42MyAyLjE5IDIuMjggMi43OCAzLjAyIDIuOTZWMTloMS43NXYtMS4yNGMuNTItLjA5IDMuMDItLjU5IDMuMDItMy4yMi4wMS0xLjM5LS42LTIuNjEtMy0zLjQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFuVG9vbEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4Ljg5IDExLjc3LTMuOC0xLjY3Yy0uMTMtLjA2LS4yOC0uMS0uNDQtLjFIMTRWNS41YTIuNSAyLjUgMCAwIDAtNSAwdjguMTVsLTEuODctLjRjLS4xOS0uMDMtMS4wMi0uMTUtMS43My41Nkw0IDE1LjIybDUuMTIgNS4xOWMuMzcuMzguODguNTkgMS40MS41OWg2LjU1Yy45OCAwIDEuODEtLjcgMS45Ny0xLjY3bC45Mi01LjQ0YTIgMiAwIDAgMC0xLjA4LTIuMTJ6TTE3LjA4IDE5aC02LjU1bC0zLjctMy43OCA0LjE3Ljg5VjUuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXY2LjE4aDEuNzZMMTggMTMuNTYgMTcuMDggMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYW5Ub29sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMjRoLTYuNTVjLTEuMDggMC0yLjE0LS40NS0yLjg5LTEuMjNsLTcuMy03LjYxIDIuMDctMS44M2MuNjItLjU1IDEuNTMtLjY2IDIuMjYtLjI3TDggMTQuMzRWNC43OWEyLjUgMi41IDAgMCAxIDMuMDEtMi40NUMxMS4xIDEuMDQgMTIuMTguMDEgMTMuNS4wMWMuODYgMCAxLjYxLjQzIDIuMDYgMS4wOS4yOS0uMTIuNjEtLjE4Ljk0LS4xOGEyLjUgMi41IDAgMCAxIDIuNSAyLjV2LjI4YTIuNSAyLjUgMCAwIDEgMyAyLjQ1VjIwYzAgMi4yMS0xLjc5IDQtNCA0ek00LjE0IDE1LjI4bDUuODYgNi4xYy4zOC4zOS45LjYyIDEuNDQuNjJIMThjMS4xIDAgMi0uOSAyLTJWNi4xNWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjVWMTJoLTJWMy40MmMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjVWMTJoLTJWMi41MWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjVWMTJoLTJWNC43OWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIzLS41LjV2MTIuODdsLTUuMzUtMi44My0uNTEuNDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYXltZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0di02aDE2djZ6bTAtMTBINFY2aDE2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZW5kaW5nQWN0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEyYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMS42NSA3LjM1TDE2LjUgMTcuMlYxNGgxdjIuNzlsMS44NSAxLjg1LS43Ljcxek0xOCAzaC0zLjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNWMwIDEuMS45IDIgMiAyaDYuMTFhNi43NDMgNi43NDMgMCAwIDEtMS40Mi0ySDZWNWgydjNoOFY1aDJ2NS4wOGMuNzEuMSAxLjM4LjMxIDIgLjZWNWMwLTEuMS0uOS0yLTItMnptLTYgMmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVuZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjdcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTdcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJjZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDRDNS41NyA0IDQgNS41NyA0IDcuNVM1LjU3IDExIDcuNSAxMSAxMSA5LjQzIDExIDcuNSA5LjQzIDQgNy41IDR6bTAgNUM2LjY3IDkgNiA4LjMzIDYgNy41UzYuNjcgNiA3LjUgNiA5IDYuNjcgOSA3LjUgOC4zMyA5IDcuNSA5em05IDRjLTEuOTMgMC0zLjUgMS41Ny0zLjUgMy41czEuNTcgMy41IDMuNSAzLjUgMy41LTEuNTcgMy41LTMuNS0xLjU3LTMuNS0zLjUtMy41em0wIDVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek01LjQxIDIwIDQgMTguNTkgMTguNTkgNCAyMCA1LjQxIDUuNDEgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJtQ2FtZXJhTWljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2Yy0xLjEgMC0yIC45LTIgMnY0YzAgMS4xLjkgMiAyIDJzMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptOC0xaC0zLjE3bC0xLjg2LTJIOC45Nkw3LjE3IDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE0aC03di0xLjA5YzIuODMtLjQ4IDUtMi45NCA1LTUuOTFoLTJjMCAyLjIxLTEuNzkgNC00IDRzLTQtMS43OS00LTRINmMwIDIuOTcgMi4xNyA1LjQzIDUgNS45MVYxOUg0VjdoNC4yMWwuNTktLjY1TDEwLjA0IDVoNC4yNGwxLjI0IDEuMzUuNTkuNjVIMjB2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJtQ29udGFjdENhbGVuZGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC44NCA0LjIyYy0uMDUtLjEyLS4xMS0uMjMtLjE4LS4zNC0uMTQtLjIxLS4zMy0uNC0uNTQtLjU0LS4xMS0uMDctLjIyLS4xMy0uMzQtLjE4LS4yNC0uMS0uNS0uMTYtLjc4LS4xNmgtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0uNDIgMC0uOC4xMy0xLjEyLjM0LS4yMS4xNC0uNC4zMy0uNTQuNTQtLjA3LjExLS4xMy4yMi0uMTguMzQtLjEuMjQtLjE2LjUtLjE2Ljc4djE0YTIgMiAwIDAgMCAyIDJoMTRjLjI4IDAgLjU0LS4wNi43OC0uMTYuMTItLjA1LjIzLS4xMS4zNC0uMTguMjEtLjE0LjQtLjMzLjU0LS41NC4yMS0uMzIuMzQtLjcxLjM0LTEuMTJWNWMwLS4yOC0uMDYtLjU0LS4xNi0uNzh6TTUgMTlWNWgxNHYxNEg1em03LTYuMTJjLTIuMDMgMC02IDEuMDgtNiAzLjU4VjE4aDEydi0xLjUzYzAtMi41MS0zLjk3LTMuNTktNi0zLjU5ek04LjMxIDE2Yy42OS0uNTYgMi4zOC0xLjEyIDMuNjktMS4xMnMzLjAxLjU2IDMuNjkgMS4xMkg4LjMxek0xMiAxMmMxLjY1IDAgMy0xLjM1IDMtM3MtMS4zNS0zLTMtMy0zIDEuMzUtMyAzIDEuMzUgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVybURhdGFTZXR0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy45OSAxMS41N0gyMFYwTDAgMjBoMTEuNTZ2LTJINC44M0wxNy45OSA0LjgzdjYuNzR6bTUuNzggOC43NS0xLjA3LS44M2MuMDItLjE2LjA0LS4zMi4wNC0uNDkgMC0uMTctLjAxLS4zMy0uMDQtLjQ5bDEuMDYtLjgzYS4yNi4yNiAwIDAgMCAuMDYtLjMybC0xLTEuNzNjLS4wNi0uMTEtLjE5LS4xNS0uMzEtLjExbC0xLjI0LjVjLS4yNi0uMi0uNTQtLjM3LS44NS0uNDlsLS4xOS0xLjMyYy0uMDEtLjEyLS4xMi0uMjEtLjI0LS4yMWgtMmMtLjEyIDAtLjIzLjA5LS4yNS4yMWwtLjE5IDEuMzJjLS4zLjEzLS41OS4yOS0uODUuNDlsLTEuMjQtLjVjLS4xMS0uMDQtLjI0IDAtLjMxLjExbC0xIDEuNzNjLS4wNi4xMS0uMDQuMjQuMDYuMzJsMS4wNi44M2EzLjkwOCAzLjkwOCAwIDAgMCAwIC45OGwtMS4wNi44M2EuMjYuMjYgMCAwIDAtLjA2LjMybDEgMS43M2MuMDYuMTEuMTkuMTUuMzEuMTFsMS4yNC0uNWMuMjYuMi41NC4zNy44NS40OWwuMTkgMS4zMmMuMDIuMTIuMTIuMjEuMjUuMjFoMmMuMTIgMCAuMjMtLjA5LjI1LS4yMWwuMTktMS4zMmMuMy0uMTMuNTktLjI5Ljg0LS40OWwxLjI1LjVjLjExLjA0LjI0IDAgLjMxLS4xMWwxLTEuNzNhLjI2LjI2IDAgMCAwLS4wNi0uMzJ6bS00Ljc4LjE4Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcm1EZXZpY2VJbmZvcm1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgN2gydjJoLTJ6bTAgNGgydjZoLTJ6bTYtOS45OUw3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyek03IDRWM2gxMHYxSDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJtSWRlbnRpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAgOWMyLjcgMCA1LjggMS4yOSA2IDJ2MUg2di0uOTljLjItLjcyIDMuMy0yLjAxIDYtMi4wMW0wLTExQzkuNzkgNCA4IDUuNzkgOCA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDljLTIuNjcgMC04IDEuMzQtOCA0djNoMTZ2LTNjMC0yLjY2LTUuMzMtNC04LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJtTWVkaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNkgwdjVoLjAxTDAgMjBjMCAxLjEuOSAyIDIgMmgxOHYtMkgyVjZ6bTUgOWgxNGwtMy41LTQuNS0yLjUgMy4wMUwxMS41IDl6TTIyIDRoLThsLTItMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDEySDZWNGg1LjE3bDEuNDEgMS40MS41OS41OUgyMnYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcm1QaG9uZU1zZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTUuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTctLjEtLjAzLS4yMS0uMDUtLjMxLS4wNS0uMjYgMC0uNTEuMS0uNzEuMjlsLTIuMiAyLjJhMTUuMDc0IDE1LjA3NCAwIDAgMS02LjU5LTYuNThsMi4yLTIuMjFjLjI4LS4yNy4zNi0uNjYuMjUtMS4wMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNNS4wMyA1aDEuNWMuMDcuODguMjIgMS43NS40NiAyLjU5TDUuNzkgOC44Yy0uNDEtMS4yMS0uNjctMi40OC0uNzYtMy44ek0xOSAxOC45N2MtMS4zMi0uMDktMi42LS4zNS0zLjgtLjc2bDEuMi0xLjJjLjg1LjI0IDEuNzIuMzkgMi42LjQ1djEuNTF6TTEyIDN2MTBsMy0zaDZWM2gtOXptNyA1aC01VjVoNXYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVybVNjYW5XaWZpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzQzYuOTUgMyAzLjE1IDQuODUgMCA3LjIzTDEyIDIyIDI0IDcuMjVDMjAuODUgNC44NyAxNy4wNSAzIDEyIDN6TTIuOTIgNy42NUM1LjggNS44NSA4Ljc0IDUgMTIgNWMzLjI1IDAgNi4xOC44NSA5LjA4IDIuNjdMMTIgMTguODMgMi45MiA3LjY1ek0xMSAxMGgydjZoLTJ6bTAtNGgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjQuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjUuNVwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE5LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4zNCAxNC44NmMtLjg3LTEuMDItMS42LTEuODktMi40OC0yLjkxLS40Ni0uNTQtMS4wNS0xLjA4LTEuNzUtMS4zMi0uMTEtLjA0LS4yMi0uMDctLjMzLS4wOS0uMjUtLjA0LS41Mi0uMDQtLjc4LS4wNHMtLjUzIDAtLjc5LjA1Yy0uMTEuMDItLjIyLjA1LS4zMy4wOS0uNy4yNC0xLjI4Ljc4LTEuNzUgMS4zMi0uODcgMS4wMi0xLjYgMS44OS0yLjQ4IDIuOTEtMS4zMSAxLjMxLTIuOTIgMi43Ni0yLjYyIDQuNzkuMjkgMS4wMiAxLjAyIDIuMDMgMi4zMyAyLjMyLjczLjE1IDMuMDYtLjQ0IDUuNTQtLjQ0aC4xOGMyLjQ4IDAgNC44MS41OCA1LjU0LjQ0IDEuMzEtLjI5IDIuMDQtMS4zMSAyLjMzLTIuMzIuMzEtMi4wNC0xLjMtMy40OS0yLjYxLTQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBocCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDloMS41djZIMTN2LTIuNWgtMlYxNUg5LjVWOUgxMXYyaDJWOXptLTUgMS41djFjMCAuOC0uNyAxLjUtMS41IDEuNWgtMnYySDNWOWgzLjVjLjggMCAxLjUuNyAxLjUgMS41em0tMS41IDBoLTJ2MWgydi0xem0xNSAwdjFjMCAuOC0uNyAxLjUtMS41IDEuNWgtMnYyaC0xLjVWOUgyMGMuOCAwIDEuNS43IDEuNSAxLjV6bS0xLjUgMGgtMnYxaDJ2LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaWN0dXJlSW5QaWN0dXJlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMWgtOHY2aDh2LTZ6bS0yIDRoLTR2LTJoNHYyem00LTEySDNjLTEuMSAwLTIgLjg4LTIgMS45OFYxOWMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjQuOThDMjMgMy44OCAyMi4xIDMgMjEgM3ptMCAxNi4wMkgzVjQuOTdoMTh2MTQuMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaWN0dXJlSW5QaWN0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3aC04djZoOFY3em0tMiA0aC00VjloNHYyem00LThIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAxLjk4IDIgMS45OGgxOGMxLjEgMCAyLS44OCAyLTEuOThWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOThoMTh2MTQuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaW5FbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMlY2SDR2MTJoMTB2Mkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoMTZjMS4xIDAgMiAuOSAyIDJ2NmgtMnptLTEgMmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bS00LjM0LTZIOXY1LjY2aDJ2LTIuMjRsMi45NSAyLjk1IDEuNDEtMS40MUwxMi40MSAxMGgyLjI0Vjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaW5JbnZva2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMnY2YzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjZjMC0xLjEuOS0yIDItMmgxMHYySDR2MTJoMTZ2LTZoMnptMC01YzAtMS42Ni0xLjM0LTMtMy0zcy0zIDEuMzQtMyAzIDEuMzQgMyAzIDMgMy0xLjM0IDMtM3pNOS4zNCAxMmgyLjI0bC0yLjk1IDIuOTUgMS40MSAxLjQxTDEzIDEzLjQydjIuMjRoMlYxMEg5LjM0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaW5jaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMi41VjFoNXY1SDkuNVYzLjU2TDMuNTYgOS41SDZWMTFIMVY2aDEuNXYyLjQ0TDguNDQgMi41SDZ6bTE1Ljg5IDExLjI3LTMuOC0xLjY3Yy0uMTMtLjA2LS4yOC0uMS0uNDQtLjFIMTdWNy41YTIuNSAyLjUgMCAwIDAtNSAwdjguMTVsLTEuODctLjRjLS4xOS0uMDMtMS4wMi0uMTUtMS43My41Nkw3IDE3LjIybDUuMTIgNS4xOWMuMzcuMzguODguNTkgMS40MS41OWg2LjU1Yy45OCAwIDEuODEtLjcgMS45Ny0xLjY3bC45Mi01LjQ0YTIgMiAwIDAgMC0xLjA4LTIuMTJ6TTIwLjA4IDIxaC02LjU1bC0zLjctMy43OCA0LjE3Ljg5VjcuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXY2LjE4aDEuNzZMMjEgMTUuNTYgMjAuMDggMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQbGFnaWFyaXNtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTQgMThINlY0aDd2NWg1djExelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjAzIDExLjAzYTMuNDk1IDMuNDk1IDAgMCAwIDAgNC45NSAzLjQ4IDMuNDggMCAwIDAgNC4xMy41OWwxLjg4IDEuODggMS40MS0xLjQxLTEuODgtMS44OGMuNzEtMS4zMy41My0zLjAxLS41OS00LjEzYTMuNDk1IDMuNDk1IDAgMCAwLTQuOTUgMHptMy41MyAzLjUzYy0uNTkuNTktMS41NC41OS0yLjEyIDBhMS40OSAxLjQ5IDAgMCAxIDAtMi4xMiAxLjQ5IDEuNDkgMCAwIDEgMi4xMiAwYy41OS41OS41OSAxLjUzIDAgMi4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYXlGb3JXb3JrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA1djUuNTlINy41bDQuNSA0LjUgNC41LTQuNUgxM1Y1aC0yem0tNSA5YzAgMy4zMSAyLjY5IDYgNiA2czYtMi42OSA2LTZoLTJjMCAyLjIxLTEuNzkgNC00IDRzLTQtMS43OS00LTRINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvbHltZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRoLTRMNy4xMSAxNi42MyA0LjUgMTIgOSA0SDVMLjUgMTIgNSAyMGg0bDcuODktMTIuNjNMMTkuNSAxMiAxNSAyMGg0bDQuNS04TDE5IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb3dlclNldHRpbmdzTmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzaC0ydjEwaDJWM3ptNC44MyAyLjE3LTEuNDIgMS40MkE2LjkyIDYuOTIgMCAwIDEgMTkgMTJjMCAzLjg3LTMuMTMgNy03IDdBNi45OTUgNi45OTUgMCAwIDEgNy41OCA2LjU4TDYuMTcgNS4xN0E4LjkzMiA4LjkzMiAwIDAgMCAzIDEyYTkgOSAwIDAgMCAxOCAwYzAtMi43NC0xLjIzLTUuMTgtMy4xNy02LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHJlZ25hbnRXb21hbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNGMwLTEuMTEuODktMiAyLTJzMiAuODkgMiAyLS44OSAyLTIgMi0yLS44OS0yLTJ6bTcgOWEzLjI4NSAzLjI4NSAwIDAgMC0yLTNjMC0xLjY2LTEuMzQtMy0zLTNzLTMgMS4zNC0zIDN2N2gydjVoM3YtNWgzdi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHJldmlldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWEyIDIgMCAwIDAtMi0yem0wIDE2SDVWN2gxNHYxMnptLTctOC41YzEuODQgMCAzLjQ4Ljk2IDQuMzQgMi41LS44NiAxLjU0LTIuNSAyLjUtNC4zNCAyLjVzLTMuNDgtLjk2LTQuMzQtMi41Yy44Ni0xLjU0IDIuNS0yLjUgNC4zNC0yLjVNMTIgOWMtMi43MyAwLTUuMDYgMS42Ni02IDQgLjk0IDIuMzQgMy4yNyA0IDYgNHM1LjA2LTEuNjYgNi00Yy0uOTQtMi4zNC0zLjI3LTQtNi00em0wIDUuNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQcmludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOGgtMVYzSDZ2NUg1Yy0xLjY2IDAtMyAxLjM0LTMgM3Y2aDR2NGgxMnYtNGg0di02YzAtMS42Ni0xLjM0LTMtMy0zek04IDVoOHYzSDhWNXptOCAxMnYySDh2LTRoOHYyem0yLTJ2LTJINnYySDR2LTRjMC0uNTUuNDUtMSAxLTFoMTRjLjU1IDAgMSAuNDUgMSAxdjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCIxMS41XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQcml2YWN5VGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgMy4xOSA3IDMuMTFWMTFjMCA0LjUyLTIuOTggOC42OS03IDkuOTMtNC4wMi0xLjI0LTctNS40MS03LTkuOTNWNi4zbDctMy4xMU0xMiAxIDMgNXY2YzAgNS41NSAzLjg0IDEwLjc0IDkgMTIgNS4xNi0xLjI2IDktNi40NSA5LTEyVjVsLTktNHptLTEgNmgydjJoLTJWN3ptMCA0aDJ2NmgtMnYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVByaXZhdGVDb25uZWN0aXZpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3YzIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1LTUtMi4yNC01LTUgMi4yNC01IDUtNXptLTYuOTMgNmMuNDkgMy4zOSAzLjQgNiA2LjkzIDZzNi40NC0yLjYxIDYuOTMtNkgyMnYtMmgtMy4wN2MtLjQ5LTMuMzktMy40LTYtNi45My02cy02LjQ0IDIuNjEtNi45MyA2SDJ2MmgzLjA3ek0xNCAxMC41di0uODljMC0xLS42OC0xLjkyLTEuNjYtMi4wOEEyIDIgMCAwIDAgMTAgOS41djFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXptLTIgMy4yNWMtLjQxIDAtLjc1LS4zNC0uNzUtLjc1cy4zNC0uNzUuNzUtLjc1Ljc1LjM0Ljc1Ljc1LS4zNC43NS0uNzUuNzV6bTEtMy4yNWgtMnYtMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVByb2R1Y3Rpb25RdWFudGl0eUxpbWl0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEwaC0yVjhoMnYyem0wLTRoLTJWMWgydjV6TTcgMThjLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6bTEwIDBjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyIDItLjkgMi0yLS45LTItMi0yem0tOC45LTVoNy40NWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNMMjEgNC45NiAxOS4yNSA0bC0zLjcgN0g4LjUzTDQuMjcgMkgxdjJoMmwzLjYgNy41OS0xLjM1IDIuNDRDNC41MiAxNS4zNyA1LjQ4IDE3IDcgMTdoMTJ2LTJIN2wxLjEtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVB1Ymxpc2hlZFdpdGhDaGFuZ2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNiAxOS41SDIxdjJoLTZ2LTZoMnYyLjczYzEuODMtMS40NyAzLTMuNzEgMy02LjIzIDAtNC4wNy0zLjA2LTcuNDQtNy03LjkzVjIuMDVjNS4wNS41IDkgNC43NiA5IDkuOTUgMCAyLjk5LTEuMzIgNS42Ny0zLjQgNy41ek00IDEyYzAtMi41MiAxLjE3LTQuNzcgMy02LjIzVjguNWgydi02SDN2MmgyLjRBOS45NjYgOS45NjYgMCAwIDAgMiAxMmMwIDUuMTkgMy45NSA5LjQ1IDkgOS45NXYtMi4wMmMtMy45NC0uNDktNy0zLjg2LTctNy45M3ptMTIuMjQtMy44OS01LjY2IDUuNjYtMi44My0yLjgzLTEuNDEgMS40MSA0LjI0IDQuMjQgNy4wNy03LjA3LTEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVF1ZXJ5QnVpbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0uNS0xM0gxMXY2bDUuMjUgMy4xNS43NS0xLjIzLTQuNS0yLjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXVlc3Rpb25BbnN3ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDR2N0g1LjE3bC0uNTkuNTktLjU4LjU4VjRoMTFtMS0ySDNjLS41NSAwLTEgLjQ1LTEgMXYxNGw0LTRoMTBjLjU1IDAgMS0uNDUgMS0xVjNjMC0uNTUtLjQ1LTEtMS0xem01IDRoLTJ2OUg2djJjMCAuNTUuNDUgMSAxIDFoMTFsNCA0VjdjMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXVlc3Rpb25NYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMDcgMTIuODVjLjc3LTEuMzkgMi4yNS0yLjIxIDMuMTEtMy40NC45MS0xLjI5LjQtMy43LTIuMTgtMy43LTEuNjkgMC0yLjUyIDEuMjgtMi44NyAyLjM0TDYuNTQgNi45NkM3LjI1IDQuODMgOS4xOCAzIDExLjk5IDNjMi4zNSAwIDMuOTYgMS4wNyA0Ljc4IDIuNDEuNyAxLjE1IDEuMTEgMy4zLjAzIDQuOS0xLjIgMS43Ny0yLjM1IDIuMzEtMi45NyAzLjQ1LS4yNS40Ni0uMzUuNzYtLjM1IDIuMjRoLTIuODljLS4wMS0uNzgtLjEzLTIuMDUuNDgtMy4xNXpNMTQgMjBjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yIDIgLjkgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXVpY2tyZXBseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTcuMTdWNGgxNnY2aDJWNGMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDl2LTJINS4xN0w0IDE3LjE3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi41IDE2aC0yLjJsMS43LTRoLTV2NmgydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZWNlaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41IDMuNSAxOCAybC0xLjUgMS41TDE1IDJsLTEuNSAxLjVMMTIgMmwtMS41IDEuNUw5IDIgNy41IDMuNSA2IDIgNC41IDMuNSAzIDJ2MjBsMS41LTEuNUw2IDIybDEuNS0xLjVMOSAyMmwxLjUtMS41TDEyIDIybDEuNS0xLjVMMTUgMjJsMS41LTEuNUwxOCAyMmwxLjUtMS41TDIxIDIyVjJsLTEuNSAxLjV6TTE5IDE5LjA5SDVWNC45MWgxNHYxNC4xOHpNNiAxNWgxMnYySDZ6bTAtNGgxMnYySDZ6bTAtNGgxMnYySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZWNvcmRWb2ljZU92ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTNjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTQtNCAxLjc5LTQgNCAxLjc5IDQgNCA0em0wLTZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yem0wIDhjLTIuNjcgMC04IDEuMzQtOCA0djJoMTZ2LTJjMC0yLjY2LTUuMzMtNC04LTR6bS02IDRjLjIyLS43MiAzLjMxLTIgNi0yIDIuNyAwIDUuOCAxLjI5IDYgMkgzek0xNS4wOCA3LjA1Yy44NCAxLjE4Ljg0IDIuNzEgMCAzLjg5bDEuNjggMS42OWMyLjAyLTIuMDIgMi4wMi01LjA3IDAtNy4yN2wtMS42OCAxLjY5ek0yMC4wNyAybC0xLjYzIDEuNjNjMi43NyAzLjAyIDIuNzcgNy41NiAwIDEwLjc0TDIwLjA3IDE2YzMuOS0zLjg5IDMuOTEtOS45NSAwLTE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVkZWVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC0yLjE4Yy4xMS0uMzEuMTgtLjY1LjE4LTFhMi45OTYgMi45OTYgMCAwIDAtNS41LTEuNjVsLS41LjY3LS41LS42OEMxMC45NiAyLjU0IDEwLjA1IDIgOSAyIDcuMzQgMiA2IDMuMzQgNiA1YzAgLjM1LjA3LjY5LjE4IDFINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMTljMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0tNS0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTkgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xMSAxNUg0di0yaDE2djJ6bTAtNUg0VjhoNS4wOEw3IDEwLjgzIDguNjIgMTIgMTEgOC43NmwxLTEuMzYgMSAxLjM2TDE1LjM4IDEyIDE3IDEwLjgzIDE0LjkyIDhIMjB2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlbW92ZURvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ljg0IDEuOTggMy40MyAzLjM5bDEwLjM4IDEwLjM4LTEuNDEgMS40MS00LjI0LTQuMjQtMS40MSAxLjQxIDUuNjYgNS42NiAyLjgzLTIuODMgNi42IDYuNiAxLjQxLTEuNDFMNC44NCAxLjk4em0xMy4yMSAxMC4zOEwyMyA3LjQgMjEuNTcgNmwtNC45NCA0Ljk0IDEuNDIgMS40MnptLS43MS00Ljk2LTEuNDEtMS40MS0yLjEyIDIuMTIgMS40MSAxLjQxIDIuMTItMi4xMnpNMS4wOCAxMi4zNWw1LjY2IDUuNjYgMS40MS0xLjQxLTUuNjYtNS42Ni0xLjQxIDEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZW1vdmVTaG9wcGluZ0NhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuNDEgMS4xMyAwIDIuNTRsNC4zOSA0LjM5IDIuMjEgNC42Ni0xLjM1IDIuNDVjLS4xNi4yOC0uMjUuNjEtLjI1Ljk2IDAgMS4xLjkgMiAyIDJoNy40NmwxLjM4IDEuMzhBMS45OTcgMS45OTcgMCAwIDAgMTcgMjJjLjY3IDAgMS4yNi0uMzMgMS42Mi0uODRMMjEuNDYgMjRsMS40MS0xLjQxTDEuNDEgMS4xM3pNNyAxNWwxLjEtMmgyLjM2bDIgMkg3ek0yMCA0SDcuMTJsMiAyaDkuMTlsLTIuNzYgNWgtMS40NGwxLjk0IDEuOTRjLjU0LS4xNC45OS0uNDkgMS4yNS0uOTdsMy41OC02LjQ5QzIxLjI1IDQuODIgMjAuNzYgNCAyMCA0ek03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVvcmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNWgxOHYtMkgzdjJ6bTAgNGgxOHYtMkgzdjJ6bTAtOGgxOFY5SDN2MnptMC02djJoMThWNUgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwYXJ0aXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIxaDE4di02SDN2NnptNy4zMy0ydi0yaDMuMzN2MmgtMy4zM3pNMTkgMTloLTMuMzN2LTJIMTl2MnpNNSAxN2gzLjMzdjJINXYtMnpNNiAxMGwxLjQyLTEuNDJMNS44MyA3SDE3YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMkgzdjJoMTRjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTRINS44M2wxLjU5LTEuNTlMNiAyIDIgNmw0IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBvcnRQcm9ibGVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1Ljk5IDE5LjUzIDE5SDQuNDdMMTIgNS45OU0xMiAyIDEgMjFoMjJMMTIgMnptMSAxNGgtMnYyaDJ2LTJ6bTAtNmgtMnY0aDJ2LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXF1ZXN0UGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjE3IDQgMTggOC44M1YyMEg2VjRoNy4xN00xNCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0xIDloLTR2MWgzYy41NSAwIDEgLjQ1IDEgMXYzYzAgLjU1LS40NSAxLTEgMWgtMXYxaC0ydi0xSDl2LTJoNHYtMWgtM2MtLjU1IDAtMS0uNDUtMS0xdi0zYzAtLjU1LjQ1LTEgMS0xaDFWOGgydjFoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVzdG9yZUZyb21UcmFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuNSA0LTEtMWgtNWwtMSAxSDV2MmgxNFY0ek02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6bTItNVY5aDh2MTBIOHYtNXptMiA0aDR2LTRoMmwtNC00LTQgNGgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVzdG9yZVBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptNCAxOEg2VjRoNy4xN0wxOCA4LjgzVjIwem0tOS41NS05LjQzTDcuMjggOS40VjEzaDMuNmwtMS40NC0xLjQ0YTMuMTUgMy4xNSAwIDAgMSAyLjc5LTEuNzEgMy4xNSAzLjE1IDAgMSAxIDAgNi4zIDMuMTQgMy4xNCAwIDAgMS0yLjU4LTEuMzVIOC4xYTQuNTEgNC41MSAwIDAgMCA0LjEyIDIuN2MyLjQ4IDAgNC41LTIuMDIgNC41LTQuNXMtMi4wMi00LjUtNC41LTQuNWMtMS41OSAwLTIuOTcuODMtMy43NyAyLjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVzdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgM2E5IDkgMCAwIDAtOSA5SDFsNCAzLjk5TDkgMTJINmMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3LTMuMTMgNy03IDdjLTEuOTMgMC0zLjY4LS43OS00Ljk0LTIuMDZsLTEuNDIgMS40MkE4Ljk1NCA4Ljk1NCAwIDAgMCAxMyAyMWE5IDkgMCAwIDAgMC0xOHptLTEgNXY1bDQuMjUgMi41Mi43Ny0xLjI4LTMuNTItMi4wOVY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUm9ja2V0TGF1bmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxNWMtLjgzIDAtMS41OC4zNC0yLjEyLjg4QzIuNyAxNy4wNiAyIDIyIDIgMjJzNC45NC0uNyA2LjEyLTEuODhBMi45OTYgMi45OTYgMCAwIDAgNiAxNXptLjcxIDMuNzFjLS4yOC4yOC0yLjE3Ljc2LTIuMTcuNzZzLjQ3LTEuODguNzYtMi4xN2MuMTctLjE5LjQyLS4zLjctLjNhMS4wMDMgMS4wMDMgMCAwIDEgLjcxIDEuNzF6bTEwLjcxLTUuMDZjNi4zNi02LjM2IDQuMjQtMTEuMzEgNC4yNC0xMS4zMVMxNi43MS4yMiAxMC4zNSA2LjU4bC0yLjQ5LS41YTIuMDMgMi4wMyAwIDAgMC0xLjgxLjU1TDIgMTAuNjlsNSAyLjE0TDExLjE3IDE3bDIuMTQgNSA0LjA1LTQuMDVjLjQ3LS40Ny42OC0xLjE1LjU1LTEuODFsLS40OS0yLjQ5ek03LjQxIDEwLjgzbC0xLjkxLS44MiAxLjk3LTEuOTcgMS40NC4yOWMtLjU3LjgzLTEuMDggMS43LTEuNSAyLjV6bTYuNTggNy42Ny0uODItMS45MWMuOC0uNDIgMS42Ny0uOTMgMi40OS0xLjVsLjI5IDEuNDQtMS45NiAxLjk3ek0xNiAxMi4yNGMtMS4zMiAxLjMyLTMuMzggMi40LTQuMDQgMi43M2wtMi45My0yLjkzYy4zMi0uNjUgMS40LTIuNzEgMi43My00LjA0IDQuNjgtNC42OCA4LjIzLTMuOTkgOC4yMy0zLjk5cy42OSAzLjU1LTMuOTkgOC4yM3pNMTUgMTFjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUm9ja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTFjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAyIC45IDIgMiAyIDItLjkgMi0yem0tNi4wMiA3LjI1Yy0uMjktLjktLjU3LTEuOTQtLjc2LTNMNiAxNi4wN3YyLjk4bDEuOTgtLjh6TTEyIDJzNSAyIDUgMTFsMi4xMSAxLjQxYy41Ni4zNy44OSAxIC44OSAxLjY2VjIybC01LTJIOWwtNSAydi01LjkzYzAtLjY3LjMzLTEuMjkuODktMS42Nkw3IDEzYzAtOSA1LTExIDUtMTF6bTAgMi4zNlM5IDYuMzggOSAxM2MwIDIuMjUgMSA1IDEgNWg0czEtMi43NSAxLTVjMC02LjYyLTMtOC42NC0zLTguNjR6bTYgMTQuNjl2LTIuOThsLTEuMjItLjgxYy0uMTkgMS4wNS0uNDcgMi4xLS43NiAzbDEuOTguNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzguMTMgMiA1IDUuMTMgNSA5YzAgNS4yNSA3IDEzIDcgMTNzNy03Ljc1IDctMTNjMC0zLjg3LTMuMTMtNy03LTd6TTcgOWMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMi44OC0yLjg4IDcuMTktNSA5Ljg4QzkuOTIgMTYuMjEgNyAxMS44NSA3IDl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI5XCIsXCJyXCI6XCIyLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvdW5kZWRDb3JuZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOWgydjJoLTJ2LTJ6bTAtMmgydi0yaC0ydjJ6TTMgMTNoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMC04aDJWN0gzdjJ6bTAtNGgyVjNIM3Yyem00IDBoMlYzSDd2MnptOCAxNmgydi0yaC0ydjJ6bS00IDBoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyem0tOCAwaDJ2LTJIN3Yyem0tNCAwaDJ2LTJIM3Yyek0yMSA4YzAtMi43Ni0yLjI0LTUtNS01aC01djJoNWMxLjY1IDAgMyAxLjM1IDMgM3Y1aDJWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvd2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSAxNC41IDQgMTlsMS41IDEuNUw5IDE3aDJsLTIuNS0yLjV6TTE1IDFjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem02IDIwLjAxTDE4IDI0bC0yLjk5LTMuMDFWMTkuNWwtNy4xLTcuMDljLS4zMS4wNS0uNjEuMDctLjkxLjA3di0yLjE2YzEuNjYuMDMgMy42MS0uODcgNC42Ny0yLjA0bDEuNC0xLjU1Yy4xOS0uMjEuNDMtLjM4LjY5LS41LjI5LS4xNC42Mi0uMjMuOTYtLjIzaC4wM0MxNS45OSA2LjAxIDE3IDcuMDIgMTcgOC4yNnY1Ljc1YzAgLjg0LS4zNSAxLjYxLS45MiAyLjE2bC0zLjU4LTMuNTh2LTIuMjdjLS42My41Mi0xLjQzIDEuMDItMi4yOSAxLjM5TDE2LjUgMThIMThsMyAzLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUnVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjU0IDExIDEzIDcuNDZsMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjQgMS40MSAxLjQxTDE2LjU0IDExek0xMSA3SDJ2Mmg5Vjd6bTEwIDYuNDFMMTkuNTkgMTIgMTcgMTQuNTkgMTQuNDEgMTIgMTMgMTMuNDEgMTUuNTkgMTYgMTMgMTguNTkgMTQuNDEgMjAgMTcgMTcuNDEgMTkuNTkgMjAgMjEgMTguNTkgMTguNDEgMTYgMjEgMTMuNDF6TTExIDE1SDJ2Mmg5di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2F0ZWxsaXRlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTRoMmE5IDkgMCAwIDEtOSA5di0yYzMuODcgMCA3LTMuMTMgNy03em0tNyAzdjJjMi43NiAwIDUtMi4yNCA1LTVoLTJjMCAxLjY2LTEuMzQgMy0zIDN6TTE4LjI2LjU5bDMuNTQgMy41NGMuNzguNzguNzggMi4wNSAwIDIuODNsLTMuMTggMy4xOGMtLjc4Ljc4LTIuMDUuNzgtMi44MyAwTDE0LjU1IDguOWwtLjcxLjcgMS4yNCAxLjI0Yy43OC43OC43OCAyLjA1IDAgMi44M2wtMS40MSAxLjQxYy0uNzguNzgtMi4wNS43OC0yLjgzIDBMOS42IDEzLjg0bC0uNzEuNzEgMS4yNCAxLjI0Yy43OC43OC43OCAyLjA1IDAgMi44M0w2Ljk1IDIxLjhjLS43OC43OC0yLjA1Ljc4LTIuODMgMEwuNTggMTguMjZjLS43OC0uNzgtLjc4LTIuMDUgMC0yLjgzbDMuMTgtMy4xOGMuNzgtLjc4IDIuMDUtLjc4IDIuODMgMGwxLjI0IDEuMjQuNzEtLjcxLTEuMjQtMS4yM2MtLjc4LS43OC0uNzgtMi4wNSAwLTIuODNMOC43MiA3LjNjLjc4LS43OCAyLjA1LS43OCAyLjgzIDBsMS4yNCAxLjI0LjcxLS43MS0xLjI1LTEuMjNjLS43OC0uNzgtLjc4LTIuMDUgMC0yLjgzTDE1LjQzLjU5Yy43OS0uNzkgMi4wNS0uNzkgMi44MyAwem0tMTUuMiAxNS4yTDIgMTYuODVsMy41NCAzLjU0IDEuMDYtMS4wNi0zLjU0LTMuNTR6bTIuMTItMi4xMi0xLjA2IDEuMDYgMy41NCAzLjU0IDEuMDYtMS4wNi0zLjU0LTMuNTR6bTQuOTUtNC45NS0xLjQxIDEuNDEgMy41NCAzLjU0IDEuNDEtMS40MS0zLjU0LTMuNTR6bTQuNi00LjYtMS4wNiAxLjA2IDMuNTQgMy41NCAxLjA2LTEuMDYtMy41NC0zLjU0ek0xNi44NSAybC0xLjA2IDEuMDYgMy41NCAzLjU0IDEuMDYtMS4wNkwxNi44NSAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2F2ZWRTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC43MyAxMy4zMUE2LjM4OCA2LjM4OCAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS40MyAwIDIuNzQtLjQ4IDMuODEtMS4yN0wxOS41OSAyMSAyMSAxOS41OWwtNi4yNy02LjI4ek05LjUgMTRDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjI5IDguNDQgOS41IDZsLS43OSAyLjQ0SDYuMjVsMi4wMSAxLjU5LS43NyAyLjQ3IDIuMDEtMS41MyAyLjAxIDEuNTMtLjc3LTIuNDcgMi4wMS0xLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2F2aW5ncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDEwYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMS0uNDUgMS0xIDEtMS0uNDUtMS0xek04IDloNVY3SDh2MnptMTQtMS41djYuOTdsLTIuODIuOTRMMTcuNSAyMUgxMnYtMmgtMnYySDQuNVMyIDEyLjU0IDIgOS41IDQuNDYgNCA3LjUgNGg1Yy45MS0xLjIxIDIuMzYtMiA0LTJhMS40OTggMS40OTggMCAwIDEgMS4zOCAyLjA4Yy0uMTQuMzQtLjI2LjczLS4zMiAxLjE1bDIuMjcgMi4yN0gyMnptLTIgMmgtMUwxNS41IDZjMC0uNjUuMDktMS4yOS4yNi0xLjkxLS45Ny4yNS0xLjc2Ljk3LTIuMDkgMS45MUg3LjVDNS41NyA2IDQgNy41NyA0IDkuNWMwIDEuODggMS4yMiA2LjY1IDIuMDEgOS41SDh2LTJoNnYyaDIuMDFsMS41NS01LjE1IDIuNDQtLjgyVjkuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNjaGVkdWxlU2VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEyYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMS42NSA3LjM1TDE2LjUgMTcuMlYxNGgxdjIuNzlsMS44NSAxLjg1LS43LjcxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMSAxMi02LTEuNVY3LjAxbDguODcgMy43NGMuOTQtLjQ3IDItLjc1IDMuMTMtLjc1LjEgMCAuMTkuMDEuMjguMDFMMyA0djE2bDctMi45NVYxN2MwLS44LjE0LTEuNTYuMzktMi4yOEw1IDE2Ljk5VjEzLjVsNi0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY2hlZHVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0uNS0xM0gxMXY2bDUuMjUgMy4xNS43NS0xLjIzLTQuNS0yLjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VhcmNoT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QTYuNDcxIDYuNDcxIDAgMCAwIDE2IDkuNSA2LjUgNi41IDAgMCAwIDkuNSAzQzYuMDggMyAzLjI4IDUuNjQgMy4wMyA5aDIuMDJDNS4zIDYuNzUgNy4xOCA1IDkuNSA1IDExLjk5IDUgMTQgNy4wMSAxNCA5LjVTMTEuOTkgMTQgOS41IDE0Yy0uMTcgMC0uMzMtLjAzLS41LS4wNXYyLjAyYy4xNy4wMi4zMy4wMy41LjAzIDEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi40NyAxMC44MiA0IDEzLjI5bC0yLjQ3LTIuNDctLjcxLjcxTDMuMjkgMTQgLjgyIDE2LjQ3bC43MS43MUw0IDE0LjcxbDIuNDcgMi40Ny43MS0uNzFMNC43MSAxNGwyLjQ3LTIuNDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VnbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMThoMTJ2LTJIOXYyek0zIDZ2MmgxOFY2SDN6bTYgN2gxMnYtMkg5djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW5kQW5kQXJjaGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExIDEyLTYtMS41VjcuMDFsOC44NyAzLjczYy45NC0uNDcgMi0uNzUgMy4xMy0uNzUuMSAwIC4xOS4wMS4yOC4wMUwzIDR2MTZsNy0yLjk1VjE3YzAtLjguMTQtMS41Ni4zOS0yLjI4TDUgMTYuOTlWMTMuNWw2LTEuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTJjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0wIDgtMy0zIC43MS0uNzEgMS43OSAxLjc5VjE0aDF2NC4wOWwxLjc5LTEuNzkuNzEuNy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW5zb3JzT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4xNCAxMC45NmMtLjA5LjMzLS4xNC42OC0uMTQgMS4wNCAwIDEuMS40NSAyLjEgMS4xNyAyLjgzbC0xLjQyIDEuNDJBNi4wMTggNi4wMTggMCAwIDEgNiAxMmMwLS45My4yMS0xLjguNTgtMi41OUw1LjExIDcuOTRBNy44OTcgNy44OTcgMCAwIDAgNCAxMmMwIDIuMjEuOSA0LjIxIDIuMzUgNS42NWwtMS40MiAxLjQyQTkuOTY5IDkuOTY5IDAgMCAxIDIgMTJjMC0yLjA0LjYxLTMuOTMgMS42Ni01LjUxTDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQxIDEuNDFMOC4xNCAxMC45NnptOS4yOCAzLjYzYy4zNy0uNzkuNTgtMS42Ni41OC0yLjU5IDAtMS42Ni0uNjctMy4xNi0xLjc2LTQuMjRsLTEuNDIgMS40MmEzLjk1MSAzLjk1MSAwIDAgMSAxLjA0IDMuODZsMS41NiAxLjU1ek0yMCAxMmMwIDEuNDgtLjQgMi44Ny0xLjExIDQuMDZsMS40NSAxLjQ1QTkuOTEgOS45MSAwIDAgMCAyMiAxMmMwLTIuNzYtMS4xMi01LjI2LTIuOTMtNy4wN2wtMS40MiAxLjQyQTcuOTQgNy45NCAwIDAgMSAyMCAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbnNvcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljc2IDE2LjI0QzYuNjcgMTUuMTYgNiAxMy42NiA2IDEycy42Ny0zLjE2IDEuNzYtNC4yNGwxLjQyIDEuNDJDOC40NSA5LjkgOCAxMC45IDggMTJjMCAxLjEuNDUgMi4xIDEuMTcgMi44M2wtMS40MSAxLjQxem04LjQ4IDBDMTcuMzMgMTUuMTYgMTggMTMuNjYgMTggMTJzLS42Ny0zLjE2LTEuNzYtNC4yNGwtMS40MiAxLjQyQzE1LjU1IDkuOSAxNiAxMC45IDE2IDEyYzAgMS4xLS40NSAyLjEtMS4xNyAyLjgzbDEuNDEgMS40MXpNMTIgMTBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem04IDJjMCAyLjIxLS45IDQuMjEtMi4zNSA1LjY1bDEuNDIgMS40MkMyMC44OCAxNy4yNiAyMiAxNC43NiAyMiAxMnMtMS4xMi01LjI2LTIuOTMtNy4wN2wtMS40MiAxLjQyQTcuOTQgNy45NCAwIDAgMSAyMCAxMnpNNi4zNSA2LjM1IDQuOTMgNC45M0MzLjEyIDYuNzQgMiA5LjI0IDIgMTJzMS4xMiA1LjI2IDIuOTMgNy4wN2wxLjQyLTEuNDJDNC45IDE2LjIxIDQgMTQuMjEgNCAxMnMuOS00LjIxIDIuMzUtNS42NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzQWNjZXNzaWJpbGl0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjUgNGMtMi42MS43LTUuNjcgMS04LjUgMXMtNS44OS0uMy04LjUtMUwzIDZjMS44Ni41IDQgLjgzIDYgMXYxMmgydi02aDJ2NmgyVjdjMi0uMTcgNC4xNC0uNSA2LTFsLS41LTJ6TTEyIDRjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyek03IDI0aDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NBcHBsaWNhdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTYuMjEgMTMuOTcgMS4yIDIuMDdjLjA4LjEzLjIzLjE4LjM3LjEzbDEuNDktLjZjLjMxLjI0LjY0LjQ0IDEuMDEuNTlsLjIyIDEuNTljLjAzLjE0LjE1LjI1LjMuMjVoMi40Yy4xNSAwIC4yNy0uMTEuMy0uMjZsLjIyLTEuNTljLjM2LS4xNS43LS4zNSAxLjAxLS41OWwxLjQ5LjZjLjE0LjA1LjI5IDAgLjM3LS4xM2wxLjItMi4wN2MuMDgtLjEzLjA0LS4yOS0uMDctLjM5bC0xLjI3LS45OWMuMDMtLjE5LjA0LS4zOS4wNC0uNTggMC0uMi0uMDItLjM5LS4wNC0uNTlsMS4yNy0uOTljLjExLS4wOS4xNS0uMjYuMDctLjM5bC0xLjItMi4wN2EuMzA2LjMwNiAwIDAgMC0uMzctLjEzbC0xLjQ5LjZjLS4zMS0uMjQtLjY0LS40NC0xLjAxLS41OWwtLjIyLTEuNTlhLjMxLjMxIDAgMCAwLS4zLS4yNWgtMi40YS4zMS4zMSAwIDAgMC0uMy4yNmwtLjIyIDEuNTljLS4zNi4xNS0uNzEuMzQtMS4wMS41OGwtMS40OS0uNmMtLjE0LS4wNS0uMjkgMC0uMzcuMTNsLTEuMiAyLjA3Yy0uMDguMTMtLjA0LjI5LjA3LjM5bDEuMjcuOTljLS4wMy4yLS4wNS4zOS0uMDUuNTkgMCAuMi4wMi4zOS4wNC41OWwtMS4yNy45OWMtLjExLjEtLjE0LjI2LS4wNi4zOXpNMTIgMTAuMjljLjk0IDAgMS43MS43NyAxLjcxIDEuNzFzLS43NyAxLjcxLTEuNzEgMS43MS0xLjcxLS43Ny0xLjcxLTEuNzEuNzctMS43MSAxLjcxLTEuNzF6TTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRhMiAyIDAgMCAwIDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NCYWNrdXBSZXN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMmMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDIgLjkgMiAyIDIgMi0uOSAyLTJ6bS0yLTlhOSA5IDAgMCAwLTkgOUgwbDQgNCA0LTRINWMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3YTYuOTk1IDYuOTk1IDAgMCAxLTExLjA2IDUuN2wtMS40MiAxLjQ0QTkgOSAwIDEgMCAxMiAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NCbHVldG9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDI0aDJ2LTJoLTJ2MnptLTQgMGgydi0ySDd2MnptOCAwaDJ2LTJoLTJ2MnptMi43MS0xOC4yOUwxMiAwaC0xdjcuNTlMNi40MSAzIDUgNC40MSAxMC41OSAxMCA1IDE1LjU5IDYuNDEgMTcgMTEgMTIuNDFWMjBoMWw1LjcxLTUuNzEtNC4zLTQuMjkgNC4zLTQuMjl6TTEzIDMuODNsMS44OCAxLjg4TDEzIDcuNTlWMy44M3ptMS44OCAxMC40NkwxMyAxNi4xN3YtMy43NmwxLjg4IDEuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0JyaWdodG5lc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnpNOCAxNmgyLjVsMS41IDEuNSAxLjUtMS41SDE2di0yLjVsMS41LTEuNS0xLjUtMS41VjhoLTIuNUwxMiA2LjUgMTAuNSA4SDh2Mi41TDYuNSAxMiA4IDEzLjVWMTZ6bTQtN2MxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgM1Y5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NDZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDIyaDJ2Mkg3em00IDBoMnYyaC0yem00IDBoMnYyaC0yek0xNiAuMDEgOCAwQzYuOSAwIDYgLjkgNiAydjE2YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlYyYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNiAxOEg4di0xaDh2MXptMC0zSDhWNWg4djEwem0wLTEySDhWMmg4djF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0V0aGVybmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljc3IDYuNzYgNi4yMyA1LjQ4LjgyIDEybDUuNDEgNi41MiAxLjU0LTEuMjhMMy40MiAxMmw0LjM1LTUuMjR6TTcgMTNoMnYtMkg3djJ6bTEwLTJoLTJ2Mmgydi0yem0tNiAyaDJ2LTJoLTJ2MnptNi43Ny03LjUyLTEuNTQgMS4yOEwyMC41OCAxMmwtNC4zNSA1LjI0IDEuNTQgMS4yOEwyMy4xOCAxMmwtNS40MS02LjUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NJbnB1dEFudGVubmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVjLTMuODcgMC03IDMuMTMtNyA3aDJjMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNWgyYzAtMy44Ny0zLjEzLTctNy03em0xIDkuMjljLjg4LS4zOSAxLjUtMS4yNiAxLjUtMi4yOWEyLjUgMi41IDAgMCAwLTUgMGMwIDEuMDIuNjIgMS45IDEuNSAyLjI5djMuM0w3LjU5IDIxIDkgMjIuNDFsMy0zIDMgM0wxNi40MSAyMSAxMyAxNy41OXYtMy4zek0xMiAxQzUuOTMgMSAxIDUuOTMgMSAxMmgyYTkgOSAwIDAgMSAxOCAwaDJjMC02LjA3LTQuOTMtMTEtMTEtMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0lucHV0Q29tcG9uZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEgxdjEwYzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOEM2LjE2IDE4LjQgNyAxNy4zIDcgMTZWNkg1VjJ6TTQgMTdjLS41NSAwLTEtLjQ1LTEtMXYtMmgydjJjMCAuNTUtLjQ1IDEtMSAxem0tMS01VjhoMnY0SDN6TTEzIDJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEg5djEwYzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MiAyLTEuNTIgMi0yLjgyVjZoLTJWMnptLTEgMTVjLS41NSAwLTEtLjQ1LTEtMXYtMmgydjJjMCAuNTUtLjQ1IDEtMSAxem0tMS01VjhoMnY0aC0yem0xMC02VjJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NGgtMnYxMGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThjMS4xNi0uNDIgMi0xLjUyIDItMi44MlY2aC0yem0tMSAxMWMtLjU1IDAtMS0uNDUtMS0xdi0yaDJ2MmMwIC41NS0uNDUgMS0xIDF6bS0xLTVWOGgydjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0lucHV0Q29tcG9zaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEgxdjEwYzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOEM2LjE2IDE4LjQgNyAxNy4zIDcgMTZWNkg1VjJ6TTQgMTdjLS41NSAwLTEtLjQ1LTEtMXYtMmgydjJjMCAuNTUtLjQ1IDEtMSAxem0tMS01VjhoMnY0SDN6TTEzIDJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEg5djEwYzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MiAyLTEuNTIgMi0yLjgyVjZoLTJWMnptLTEgMTVjLS41NSAwLTEtLjQ1LTEtMXYtMmgydjJjMCAuNTUtLjQ1IDEtMSAxem0tMS01VjhoMnY0aC0yem0xMC02VjJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NGgtMnYxMGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThjMS4xNi0uNDIgMi0xLjUyIDItMi44MlY2aC0yem0tMSAxMWMtLjU1IDAtMS0uNDUtMS0xdi0yaDJ2MmMwIC41NS0uNDUgMS0xIDF6bS0xLTVWOGgydjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0lucHV0SGRtaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggN1Y0YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAydjNINXY2bDMgNnYzaDh2LTNsMy02VjdoLTF6TTggNGg4djNoLTIuMDFWNWgtMXYySDExVjVoLTF2Mkg4VjR6bTkgOC41My0zIDZWMjBoLTR2LTEuNDdsLTMtNlY5aDEwdjMuNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc0lucHV0U3ZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDExLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41UzUgMTAuNjcgNSAxMS41IDUuNjcgMTMgNi41IDEzIDggMTIuMzMgOCAxMS41em03LTVjMC0uODMtLjY3LTEuNS0xLjUtMS41aC0zQzkuNjcgNSA5IDUuNjcgOSA2LjVTOS42NyA4IDEwLjUgOGgzYy44MyAwIDEuNS0uNjcgMS41LTEuNXpNOC41IDE1Yy0uODMgMC0xLjUuNjctMS41IDEuNVM3LjY3IDE4IDguNSAxOHMxLjUtLjY3IDEuNS0xLjVTOS4zMyAxNSA4LjUgMTV6TTEyIDFDNS45MyAxIDEgNS45MyAxIDEyczQuOTMgMTEgMTEgMTEgMTEtNC45MyAxMS0xMVMxOC4wNyAxIDEyIDF6bTAgMjBjLTQuOTYgMC05LTQuMDQtOS05czQuMDQtOSA5LTkgOSA0LjA0IDkgOS00LjA0IDktOSA5em01LjUtMTFjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0tMiA1Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzT3ZlcnNjYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjAxIDUuNSAxMCA4aDRsLTEuOTktMi41ek0xOCAxMHY0bDIuNS0xLjk5TDE4IDEwek02IDEwbC0yLjUgMi4wMUw2IDE0di00em04IDZoLTRsMi4wMSAyLjVMMTQgMTZ6bTctMTNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDloMnYyaC0yem00IDBoMnYyaC0yem01IDYuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTctLjEtLjAzLS4yMS0uMDUtLjMxLS4wNS0uMjYgMC0uNTEuMS0uNzEuMjlsLTIuMiAyLjJhMTUuMDc0IDE1LjA3NCAwIDAgMS02LjU5LTYuNThsMi4yLTIuMjFjLjI4LS4yNy4zNi0uNjYuMjUtMS4wMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNNS4wMyA1aDEuNWMuMDcuODguMjIgMS43NS40NiAyLjU5TDUuNzkgOC44Yy0uNDEtMS4yMS0uNjctMi40OC0uNzYtMy44ek0xOSAxOC45N2MtMS4zMi0uMDktMi42LS4zNS0zLjgtLjc2bDEuMi0xLjJjLjg1LjI0IDEuNzIuMzkgMi42LjQ1djEuNTF6TTE5IDloMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NQb3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyNGgydi0ySDd2MnptNCAwaDJ2LTJoLTJ2MnptMi0yMmgtMnYxMGgyVjJ6bTMuNTYgMi40NC0xLjQ1IDEuNDVBNS45NjkgNS45NjkgMCAwIDEgMTggMTFjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTZjMC0yLjE3IDEuMTYtNC4wNiAyLjg4LTUuMTJMNy40NCA0LjQ0QTcuOTYxIDcuOTYxIDAgMCAwIDQgMTFjMCA0LjQyIDMuNTggOCA4IDhzOC0zLjU4IDgtOGMwLTIuNzItMS4zNi01LjEyLTMuNDQtNi41NnpNMTUgMjRoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NSZW1vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDlIOWMtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDZjLjU1IDAgMS0uNDUgMS0xVjEwYzAtLjU1LS40NS0xLTEtMXptLTEgMTJoLTRWMTFoNHYxMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTcuMDUgNi4wNSAxLjQxIDEuNDFhNS4wMjIgNS4wMjIgMCAwIDEgNy4wOCAwbDEuNDEtMS40MUMxNS42OCA0Ljc4IDEzLjkzIDQgMTIgNHMtMy42OC43OC00Ljk1IDIuMDV6TTEyIDBDOC45NiAwIDYuMjEgMS4yMyA0LjIyIDMuMjJsMS40MSAxLjQxQzcuMjYgMy4wMSA5LjUxIDIgMTIgMnM0Ljc0IDEuMDEgNi4zNiAyLjY0bDEuNDEtMS40MUMxNy43OSAxLjIzIDE1LjA0IDAgMTIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzVm9pY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMjJoMnYySDd6bTUtOWMxLjY2IDAgMy0xLjM0IDMtM1Y0YzAtMS42Ni0xLjM0LTMtMy0zUzkgMi4zNCA5IDR2NmMwIDEuNjYgMS4zNCAzIDMgM3ptLTEtOWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NmMwIC41Ni0uNDQgMS0xIDEtLjU1IDAtMS0uNDUtMS0xVjR6bTAgMThoMnYyaC0yem00IDBoMnYyaC0yem00LTEyaC0xLjdjMCAzLTIuNTQgNS4xLTUuMyA1LjFTNi43IDEzIDYuNyAxMEg1YzAgMy40MSAyLjcyIDYuMjMgNiA2LjcyVjIwaDJ2LTMuMjhjMy4yOC0uNDkgNi0zLjMxIDYtNi43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldHRpbmdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS40MyAxMi45OGMuMDQtLjMyLjA3LS42NC4wNy0uOTggMC0uMzQtLjAzLS42Ni0uMDctLjk4bDIuMTEtMS42NWMuMTktLjE1LjI0LS40Mi4xMi0uNjRsLTItMy40NmEuNS41IDAgMCAwLS42MS0uMjJsLTIuNDkgMWMtLjUyLS40LTEuMDgtLjczLTEuNjktLjk4bC0uMzgtMi42NUEuNDg4LjQ4OCAwIDAgMCAxNCAyaC00Yy0uMjUgMC0uNDYuMTgtLjQ5LjQybC0uMzggMi42NWMtLjYxLjI1LTEuMTcuNTktMS42OS45OGwtMi40OS0xYS41NjYuNTY2IDAgMCAwLS4xOC0uMDNjLS4xNyAwLS4zNC4wOS0uNDMuMjVsLTIgMy40NmMtLjEzLjIyLS4wNy40OS4xMi42NGwyLjExIDEuNjVjLS4wNC4zMi0uMDcuNjUtLjA3Ljk4IDAgLjMzLjAzLjY2LjA3Ljk4bC0yLjExIDEuNjVjLS4xOS4xNS0uMjQuNDItLjEyLjY0bDIgMy40NmEuNS41IDAgMCAwIC42MS4yMmwyLjQ5LTFjLjUyLjQgMS4wOC43MyAxLjY5Ljk4bC4zOCAyLjY1Yy4wMy4yNC4yNC40Mi40OS40Mmg0Yy4yNSAwIC40Ni0uMTguNDktLjQybC4zOC0yLjY1Yy42MS0uMjUgMS4xNy0uNTkgMS42OS0uOThsMi40OSAxYy4wNi4wMi4xMi4wMy4xOC4wMy4xNyAwIC4zNC0uMDkuNDMtLjI1bDItMy40NmMuMTItLjIyLjA3LS40OS0uMTItLjY0bC0yLjExLTEuNjV6bS0xLjk4LTEuNzFjLjA0LjMxLjA1LjUyLjA1LjczIDAgLjIxLS4wMi40My0uMDUuNzNsLS4xNCAxLjEzLjg5LjcgMS4wOC44NC0uNyAxLjIxLTEuMjctLjUxLTEuMDQtLjQyLS45LjY4Yy0uNDMuMzItLjg0LjU2LTEuMjUuNzNsLTEuMDYuNDMtLjE2IDEuMTMtLjIgMS4zNWgtMS40bC0uMTktMS4zNS0uMTYtMS4xMy0xLjA2LS40M2MtLjQzLS4xOC0uODMtLjQxLTEuMjMtLjcxbC0uOTEtLjctMS4wNi40My0xLjI3LjUxLS43LTEuMjEgMS4wOC0uODQuODktLjctLjE0LTEuMTNjLS4wMy0uMzEtLjA1LS41NC0uMDUtLjc0cy4wMi0uNDMuMDUtLjczbC4xNC0xLjEzLS44OS0uNy0xLjA4LS44NC43LTEuMjEgMS4yNy41MSAxLjA0LjQyLjktLjY4Yy40My0uMzIuODQtLjU2IDEuMjUtLjczbDEuMDYtLjQzLjE2LTEuMTMuMi0xLjM1aDEuMzlsLjE5IDEuMzUuMTYgMS4xMyAxLjA2LjQzYy40My4xOC44My40MSAxLjIzLjcxbC45MS43IDEuMDYtLjQzIDEuMjctLjUxLjcgMS4yMS0xLjA3Ljg1LS44OS43LjE0IDEuMTN6TTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2hvcDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDlIMXYxMWMwIDEuMTEuODkgMiAyIDJoMTZ2LTJIM1Y5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA1VjNjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDV2MTFjMCAxLjExLjg5IDIgMiAyaDE0YzEuMTEgMCAyLS44OSAyLTJWNWgtNXptLTYtMmg0djJoLTRWM3ptOSAxM0g3VjdoMTR2OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOHY3bDUuNS0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG9wVHdvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDlIMXYxMWMwIDEuMTEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjg5IDItMkgzVjl6bTE1LTRWM2MwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJINXYxMWMwIDEuMTEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjg5IDItMlY1aC01em0tNi0yaDR2MmgtNFYzem05IDEzSDdWN2gxNHY5em0tOS0xIDUuNS00TDEyIDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA2VjRjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDJ2MTNjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmgtNnptLTYtMmg0djJoLTRWNHptMTAgMTVINFY4aDE2djExek05IDE4bDcuNS01TDkgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNob3BwaW5nQmFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNmgtMmMwLTIuMjEtMS43OS00LTQtNFM4IDMuNzkgOCA2SDZjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTYtMmMxLjEgMCAyIC45IDIgMmgtNGMwLTEuMS45LTIgMi0yem02IDE2SDZWOGgydjJjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xVjhoNHYyYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMVY4aDJ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG9wcGluZ0Jhc2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgOWgtNC43OWwtNC4zOC02LjU2Yy0uMTktLjI4LS41MS0uNDItLjgzLS40MnMtLjY0LjE0LS44My40M0w2Ljc5IDlIMmMtLjU1IDAtMSAuNDUtMSAxIDAgLjA5LjAxLjE4LjA0LjI3bDIuNTQgOS4yN2MuMjMuODQgMSAxLjQ2IDEuOTIgMS40NmgxM2MuOTIgMCAxLjY5LS42MiAxLjkzLTEuNDZsMi41NC05LjI3TDIzIDEwYzAtLjU1LS40NS0xLTEtMXpNMTIgNC44IDE0LjggOUg5LjJMMTIgNC44ek0xOC41IDE5bC0xMi45OS4wMUwzLjMxIDExSDIwLjdsLTIuMiA4ek0xMiAxM2MtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG9wcGluZ0NhcnRDaGVja291dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMThjLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6bTEwIDBjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyIDItLjkgMi0yLS45LTItMi0yem0tOC45LTVoNy40NWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNMMjEgNC45NiAxOS4yNSA0bC0zLjcgN0g4LjUzTDQuMjcgMkgxdjJoMmwzLjYgNy41OS0xLjM1IDIuNDRDNC41MiAxNS4zNyA1LjQ4IDE3IDcgMTdoMTJ2LTJIN2wxLjEtMnpNMTIgMmw0IDQtNCA0LTEuNDEtMS40MUwxMi4xNyA3SDhWNWg0LjE3bC0xLjU5LTEuNTlMMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNob3BwaW5nQ2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNTUgMTNjLjc1IDAgMS40MS0uNDEgMS43NS0xLjAzbDMuNTgtNi40OUEuOTk2Ljk5NiAwIDAgMCAyMC4wMSA0SDUuMjFsLS45NC0ySDF2MmgybDMuNiA3LjU5LTEuMzUgMi40NEM0LjUyIDE1LjM3IDUuNDggMTcgNyAxN2gxMnYtMkg3bDEuMS0yaDcuNDV6TTYuMTYgNmgxMi4xNWwtMi43NiA1SDguNTNMNi4xNiA2ek03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yem0xMCAwYy0xLjEgMC0xLjk5LjktMS45OSAycy44OSAyIDEuOTkgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNtYXJ0QnV0dG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgOXY2YzAgMS4xLS45IDItMiAyaC0xdi0yaDFWOUg0djZoNnYySDRjLTEuMSAwLTItLjktMi0yVjljMC0xLjEuOS0yIDItMmgxNmMxLjEgMCAyIC45IDIgMnptLTcuNSAxMCAxLjA5LTIuNDFMMTggMTUuNWwtMi40MS0xLjA5TDE0LjUgMTJsLTEuMDkgMi40MUwxMSAxNS41bDIuNDEgMS4wOUwxNC41IDE5em0yLjUtNSAuNjItMS4zOEwxOSAxMmwtMS4zOC0uNjJMMTcgMTBsLS42MiAxLjM4TDE1IDEybDEuMzguNjJMMTcgMTR6bS0yLjUgNSAxLjA5LTIuNDFMMTggMTUuNWwtMi40MS0xLjA5TDE0LjUgMTJsLTEuMDkgMi40MUwxMSAxNS41bDIuNDEgMS4wOUwxNC41IDE5em0yLjUtNSAuNjItMS4zOEwxOSAxMmwtMS4zOC0uNjJMMTcgMTBsLS42MiAxLjM4TDE1IDEybDEuMzguNjJMMTcgMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTb3VyY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjZoNS4xN2wyIDJIMjB2MTB6bS0yLTZINnYtMmgxMnYyem0tNCA0SDZ2LTJoOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BhY2VEYXNoYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNNSAxOVY1aDZ2MTRINXptMTQgMGgtNnYtN2g2djd6bTAtOWgtNlY1aDZ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwYXRpYWxBdWRpb09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEzYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptMC02YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnpNMTYuMzkgMTUuNTZDMTQuNzEgMTQuNyAxMi41MyAxNCAxMCAxNHMtNC43MS43LTYuMzkgMS41NkEyLjk3IDIuOTcgMCAwIDAgMiAxOC4yMlYyMWgxNnYtMi43OGMwLTEuMTItLjYxLTIuMTUtMS42MS0yLjY2ek0xNiAxOUg0di0uNzhjMC0uMzguMi0uNzIuNTItLjg4QzUuNzEgMTYuNzMgNy42MyAxNiAxMCAxNmMyLjM3IDAgNC4yOS43MyA1LjQ4IDEuMzQuMzIuMTYuNTIuNS41Mi44OFYxOXpNMjAuMzYgMWwtMS40MSAxLjQxYTcuMDA3IDcuMDA3IDAgMCAxIDAgOS45bDEuNDEgMS40MWE4Ljk4IDguOTggMCAwIDAgMC0xMi43MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNTQgMTAuOWE1LjAwMyA1LjAwMyAwIDAgMCAwLTcuMDdsLTEuNDEgMS40MWEzIDMgMCAwIDEgMCA0LjI0bDEuNDEgMS40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwYXRpYWxBdWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEzYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptMC02YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnpNMTYuMzkgMTUuNTZDMTQuNzEgMTQuNyAxMi41MyAxNCAxMCAxNHMtNC43MS43LTYuMzkgMS41NkEyLjk3IDIuOTcgMCAwIDAgMiAxOC4yMlYyMWgxNnYtMi43OGMwLTEuMTItLjYxLTIuMTUtMS42MS0yLjY2ek0xNiAxOUg0di0uNzhjMC0uMzguMi0uNzIuNTItLjg4QzUuNzEgMTYuNzMgNy42MyAxNiAxMCAxNmMyLjM3IDAgNC4yOS43MyA1LjQ4IDEuMzQuMzIuMTYuNTIuNS41Mi44OFYxOXpNMTYgMWgtMmE5IDkgMCAwIDAgOSA5VjhjLTMuODYgMC03LTMuMTQtNy03elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxaC0yYzAgMi43NiAyLjI0IDUgNSA1VjRjLTEuNjUgMC0zLTEuMzUtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BhdGlhbFRyYWNraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTNjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTQtNCAxLjc5LTQgNCAxLjc5IDQgNCA0em0wLTZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yek0xNi4zOSAxNS41NkMxNC43MSAxNC43IDEyLjUzIDE0IDEwIDE0cy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCAyIDE4LjIyVjIxaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTE2IDE5SDR2LS43OGMwLS4zOC4yLS43Mi41Mi0uODhDNS43MSAxNi43MyA3LjYzIDE2IDEwIDE2YzIuMzcgMCA0LjI5LjczIDUuNDggMS4zNC4zMi4xNi41Mi41LjUyLjg4VjE5ek0yMC4wNSAyLjQxIDE4LjY0IDFjLTMuNTEgMy41MS0zLjUxIDkuMjEgMCAxMi43M2wxLjQxLTEuNDFjLTIuNzMtMi43NC0yLjczLTcuMTggMC05LjkxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMi44OCA1LjI0LTEuNDEtMS40MWE1LjAwMyA1LjAwMyAwIDAgMCAwIDcuMDdsMS40MS0xLjQxYTMuMDEyIDMuMDEyIDAgMCAxIDAtNC4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwZWFrZXJOb3Rlc09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNHYxMmgtMS4zNGwxLjkxIDEuOTFBMi4wMSAyLjAxIDAgMCAwIDIyIDE2VjRjMC0xLjEtLjktMi0yLTJINC42NmwyIDJIMjB6TTYgMTJoMnYySDZ6bTEyLTNoLTYuMzRsMiAySDE4em0wLTNoLTh2MS4zNGwuNjYuNjZIMTh6TTEuNDEgMS41OSAwIDNsMi4wMSAyLjAxTDIgMjJsNC00aDlsNS43MyA1LjczIDEuNDEtMS40MUwxLjQxIDEuNTl6TTUuMTcgMTYgNCAxNy4xN1Y3bDIgMnYyaDJsNSA1SDUuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcGVha2VyTm90ZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdsLS41OS41OS0uNTguNThWNGgxNnYxMnpNNiAxMmgydjJINnptMC0zaDJ2Mkg2em0wLTNoMnYySDZ6bTQgNmg1djJoLTV6bTAtM2g4djJoLTh6bTAtM2g4djJoLTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcGVsbGNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi40NSAxNmgyLjA5TDkuNDMgM0g3LjU3TDIuNDYgMTZoMi4wOWwxLjEyLTNoNS42NGwxLjE0IDN6bS02LjAyLTVMOC41IDUuNDggMTAuNTcgMTFINi40M3ptMTUuMTYuNTktOC4wOSA4LjA5TDkuODMgMTZsLTEuNDEgMS40MSA1LjA5IDUuMDlMMjMgMTNsLTEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YXJSYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgOC44OS45NCAzLjExaDIuODJsLTIuMjcgMS42Mi45MyAzLjAxTDEyIDE0Ljc5bC0yLjQyIDEuODQuOTMtMy4wMUw4LjI0IDEyaDIuODJMMTIgOC44OU0xMiAybC0yLjQyIDhIMmw2LjE3IDQuNDFMNS44MyAyMiAxMiAxNy4zMSAxOC4xOCAyMmwtMi4zNS03LjU5TDIyIDEwaC03LjU4TDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnptNy40OCA3LjE2LTUuMDEtLjQzLTItNC43MWMzLjIxLjE5IDUuOTEgMi4yNyA3LjAxIDUuMTR6bS01LjA3IDYuMjZMMTIgMTMuOThsLTIuMzkgMS40NC42My0yLjcyLTIuMTEtMS44MyAyLjc4LS4yNEwxMiA4LjA2bDEuMDkgMi41NiAyLjc4LjI0LTIuMTEgMS44My42NCAyLjczem0tMi44Ni0xMS40LTIgNC43Mi01LjAyLjQzYzEuMS0yLjg4IDMuOC00Ljk3IDcuMDItNS4xNXpNNCAxMmMwLS42NC4wOC0xLjI2LjIzLTEuODZsMy43OSAzLjI4LTEuMTEgNC43NUE3Ljk4MiA3Ljk4MiAwIDAgMSA0IDEyem0zLjg0IDYuODJMMTIgMTYuMzFsNC4xNiAyLjVBNy45MjQgNy45MjQgMCAwIDEgMTEuOTkgMjBjLTEuNTIgMC0yLjk0LS40NC00LjE1LTEuMTh6bTkuMjUtLjY1LTEuMTEtNC43NSAzLjc5LTMuMjhjLjE0LjU5LjIzIDEuMjIuMjMgMS44NiAwIDIuNDgtMS4xNCA0LjctMi45MSA2LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RpY2t5Tm90ZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djloLTV2NUg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTBsNi02VjVjMC0xLjEtLjktMi0yLTJ6bS03IDExSDd2LTJoNXYyem01LTRIN1Y4aDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguMzYgOSAuNiAzSDUuMDRsLjYtM2gxMi43Mk0yMCA0SDR2MmgxNlY0em0wIDNINGwtMSA1djJoMXY2aDEwdi02aDR2Nmgydi02aDF2LTJsLTEtNXpNNiAxOHYtNGg2djRINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1YmplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDE3SDR2MmgxMHYtMnptNi04SDR2MmgxNlY5ek00IDE1aDE2di0ySDR2MnpNNCA1djJoMTZWNUg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3VidGl0bGVzT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg2LjgzbDIgMkgyMHYxMS4xN2wxLjc2IDEuNzZjLjE1LS4yOC4yNC0uNTkuMjQtLjkzVjZjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEwaC01LjE3bDIgMkgxOHpNMS4wNCAzLjg3bDEuMiAxLjJDMi4wOSA1LjM1IDIgNS42NiAyIDZ2MTJjMCAxLjEuOSAyIDIgMmgxMy4xN2wyLjk2IDIuOTYgMS40MS0xLjQxTDIuNDUgMi40NSAxLjA0IDMuODd6TTQgNi44MyA3LjE3IDEwSDZ2Mmgydi0xLjE3TDExLjE3IDE0SDZ2Mmg3LjE3bDIgMkg0VjYuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdXBlcnZpc2VkVXNlckNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSAxMGMwLTEuNjUtMS4zNS0zLTMtM3MtMyAxLjM1LTMgMyAxLjM1IDMgMyAzIDMtMS4zNSAzLTN6bS0zIDFjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptNi41IDJjMS4xMSAwIDItLjg5IDItMiAwLTEuMTEtLjg5LTItMi0yLTEuMTEgMC0yLjAxLjg5LTIgMiAwIDEuMTEuODkgMiAyIDJ6TTExLjk5IDIuMDFjLTUuNTIgMC0xMCA0LjQ4LTEwIDEwczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMC00LjQ4LTEwLTEwLTEwek01Ljg0IDE3LjEyYy42OC0uNTQgMi4yNy0xLjExIDMuNjYtMS4xMS4wNyAwIC4xNS4wMS4yMy4wMS4yNC0uNjQuNjctMS4yOSAxLjMtMS44NkE5LjA1IDkuMDUgMCAwIDAgOS41IDE0Yy0xLjMgMC0zLjM5LjQ1LTQuNzMgMS40My0uNS0xLjA0LS43OC0yLjItLjc4LTMuNDMgMC00LjQxIDMuNTktOCA4LThzOCAzLjU5IDggOGMwIDEuMi0uMjcgMi4zNC0uNzUgMy4zNy0xLS41OS0yLjM2LS44Ny0zLjI0LS44Ny0xLjUyIDAtNC41LjgxLTQuNSAyLjd2Mi43OGE3LjkzNSA3LjkzNSAwIDAgMS01LjY2LTIuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdXBlcnZpc29yQWNjb3VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMmMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMxMC45MyA1IDkgNSA1LjUgNi41NyA1LjUgOC41IDcuMDcgMTIgOSAxMnptMC01Yy44MyAwIDEuNS42NyAxLjUgMS41UzkuODMgMTAgOSAxMHMtMS41LS42Ny0xLjUtMS41UzguMTcgNyA5IDd6bS4wNSAxMEg0Ljc3Yy45OS0uNSAyLjctMSA0LjIzLTEgLjExIDAgLjIzLjAxLjM0LjAxLjM0LS43My45My0xLjMzIDEuNjQtMS44MS0uNzMtLjEzLTEuNDItLjItMS45OC0uMi0yLjM0IDAtNyAxLjE3LTcgMy41VjE5aDd2LTEuNWMwLS4xNy4wMi0uMzQuMDUtLjV6bTcuNDUtMi41Yy0xLjg0IDAtNS41IDEuMDEtNS41IDNWMTloMTF2LTEuNWMwLTEuOTktMy42Ni0zLTUuNS0zem0xLjIxLTEuODJjLjc2LS40MyAxLjI5LTEuMjQgMS4yOS0yLjE4YTIuNSAyLjUgMCAwIDAtNSAwYzAgLjk0LjUzIDEuNzUgMS4yOSAyLjE4LjM2LjIuNzcuMzIgMS4yMS4zMnMuODUtLjEyIDEuMjEtLjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3VwcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTcuNDYgNy4xMi0yLjc4IDEuMTVhNC45ODIgNC45ODIgMCAwIDAtMi45NS0yLjk0bDEuMTUtMi43OGMyLjEuOCAzLjc3IDIuNDcgNC41OCA0LjU3ek0xMiAxNWMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6TTkuMTMgNC41NGwxLjE3IDIuNzhhNSA1IDAgMCAwLTIuOTggMi45N0w0LjU0IDkuMTNhNy45ODQgNy45ODQgMCAwIDEgNC41OS00LjU5ek00LjU0IDE0Ljg3bDIuNzgtMS4xNWE0Ljk2OCA0Ljk2OCAwIDAgMCAyLjk3IDIuOTZsLTEuMTcgMi43OGE3Ljk5NiA3Ljk5NiAwIDAgMS00LjU4LTQuNTl6bTEwLjM0IDQuNTktMS4xNS0yLjc4YTQuOTc4IDQuOTc4IDAgMCAwIDIuOTUtMi45N2wyLjc4IDEuMTdhOC4wMDcgOC4wMDcgMCAwIDEtNC41OCA0LjU4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dhcEhvcml6IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02Ljk5IDExIDMgMTVsMy45OSA0di0zSDE0di0ySDYuOTl2LTN6TTIxIDlsLTMuOTktNHYzSDEwdjJoNy4wMXYzTDIxIDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2FwSG9yaXpvbnRhbENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTMtMTMuNVY5aC00djJoNHYyLjVsMy41LTMuNXptLTYgNEw1LjUgMTQgOSAxNy41VjE1aDR2LTJIOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3YXBWZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxNy4wMVYxMGgtMnY3LjAxaC0zTDE1IDIxbDQtMy45OWgtM3pNOSAzIDUgNi45OWgzVjE0aDJWNi45OWgzTDkgM3ptNyAxNC4wMVYxMGgtMnY3LjAxaC0zTDE1IDIxbDQtMy45OWgtM3pNOSAzIDUgNi45OWgzVjE0aDJWNi45OWgzTDkgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3YXBWZXJ0aWNhbENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6TTYuNSA5IDEwIDUuNSAxMy41IDlIMTF2NEg5Vjl6bTExIDZMMTQgMTguNSAxMC41IDE1SDEzdi00aDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXBlRG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEzLjlhNSA1IDAgMSAwLTIgMHY0LjI3bC0xLjU5LTEuNTlMOCAxOGw0IDQgNC00LTEuNDEtMS40MUwxMyAxOC4xN1YxMy45ek0xNSA5YzAgMS42Ni0xLjM0IDMtMyAzcy0zLTEuMzQtMy0zIDEuMzQtMyAzLTMgMyAxLjM0IDMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXBlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjIyIDEwLTQuMTUuMDFhLjk3NS45NzUgMCAwIDAtLjQ1LjA4bC0uNTkuMjYtMS44My00LjFjLS41Ni0xLjI2LTIuMDQtMS44My0zLjMtMS4yN3MtMS44MyAyLjA0LTEuMjcgMy4zbDMuMyA3LjQ1LTEuODcuMzljLS4xOS4wNS0uOTkuMjctMS4zNiAxLjIxTDggMTkuMTlsNi43OCAyLjY3Yy40OS4xOSAxLjA1LjE4IDEuNTMtLjA0bDUuOTktMi42NWMuODktLjQgMS4zNy0xLjM4IDEuMTMtMi4zMmwtMS4zNi01LjM0Yy0uMjItLjg2LS45Ny0xLjQ3LTEuODUtMS41MXptMS4yNyA3LjM0TDE1LjUgMjBsLTQuOTItMS45NiA0LjE4LS44OC00LjMtOS43Yy0uMTEtLjI1IDAtLjU1LjI1LS42Ni4yNS0uMTEuNTUgMCAuNjYuMjVsMi41IDUuNjUgMS42MS0uNzEgNC42NS4wMSAxLjM2IDUuMzR6TTMuOCAxMi4xOGMtLjItLjg2LS4zLTEuNzYtLjMtMi42OCAwLTIuODQuOTktNS40NSAyLjYzLTcuNUw3LjIgMy4wN2ExMC40NTcgMTAuNDU3IDAgMCAwLTEuODggOC45OWwxLjYyLTEuNjJMOCAxMS41IDQuNSAxNSAxIDExLjVsMS4wNi0xLjA2IDEuNzQgMS43NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXBlTGVmdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjEgMTNhNSA1IDAgMSAwIDAtMkg1LjgzbDEuNTktMS41OUw2IDhsLTQgNCA0IDQgMS40MS0xLjQxTDUuODMgMTNoNC4yN3ptNC45IDJjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dpcGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguODkgMTMuNzctMy44LTEuNjdjLS4xMy0uMDYtLjI4LS4xLS40NC0uMUgxNFY3LjVhMi41IDIuNSAwIDAgMC01IDB2OC4xNWwtMS44Ny0uNGMtLjE5LS4wMy0xLjAyLS4xNS0xLjczLjU2TDQgMTcuMjJsNS4xMiA1LjE5Yy4zNy4zOC44OC41OSAxLjQxLjU5aDYuNTVjLjk4IDAgMS44MS0uNyAxLjk3LTEuNjdsLjkyLTUuNDRhMiAyIDAgMCAwLTEuMDgtMi4xMnpNMTcuMDggMjFoLTYuNTVsLTMuNy0zLjc4IDQuMTcuODlWNy41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41djYuMThoMS43NkwxOCAxNS41NiAxNy4wOCAyMXpNNC4wOSA1LjVIN1Y3SDJWMmgxLjV2Mi4wMkM1LjgyIDIuMTMgOC43OCAxIDEyIDFjNS40OSAwIDkuMjcgMy4xMiAxMCA2aC0xLjU3Yy0uNzYtMS45OC0zLjY5LTQuNS04LjQzLTQuNS0zLjAzIDAtNS43OSAxLjE0LTcuOTEgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXBlUmlnaHRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy45IDExYTUgNSAwIDEgMCAwIDJoNC4yN2wtMS41OSAxLjU5TDE4IDE2bDQtNC00LTQtMS40MSAxLjQxTDE4LjE3IDExSDEzLjl6TTkgOWMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgMy0zLTEuMzQtMy0zIDEuMzQtMyAzLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2lwZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTguODkgMTMuNzctMy44LTEuNjdjLS4xMy0uMDYtLjI4LS4xLS40NC0uMUgxNFY3LjVhMi41IDIuNSAwIDAgMC01IDB2OC4xNWwtMS44Ny0uNGMtLjE5LS4wMy0xLjAyLS4xNS0xLjczLjU2TDQgMTcuMjJsNS4xMiA1LjE5Yy4zNy4zOC44OC41OSAxLjQxLjU5aDYuNTVjLjk4IDAgMS44MS0uNyAxLjk3LTEuNjdsLjkyLTUuNDRhMiAyIDAgMCAwLTEuMDgtMi4xMnpNMTcuMDggMjFoLTYuNTVsLTMuNy0zLjc4IDQuMTcuODlWNy41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41djYuMThoMS43NkwxOCAxNS41NiAxNy4wOCAyMXpNMTIgMi41QzcuMjYgMi41IDQuMzMgNS4wMiAzLjU3IDdIMmMuNzMtMi44OCA0LjUxLTYgMTAtNiAzLjIyIDAgNi4xOCAxLjEzIDguNSAzLjAyVjJIMjJ2NWgtNVY1LjVoMi45MWMtMi4xMi0xLjg2LTQuODgtMy03LjkxLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2lwZVVwQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgNS44MyAxLjU5IDEuNTlMMTYgNmwtNC00LTQgNCAxLjQxIDEuNDFMMTEgNS44M3Y0LjI3YTUgNSAwIDEgMCAyIDBWNS44M3pNMTIgMThjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dpcGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjIyIDEwLTQuMTUuMDFhLjk3NS45NzUgMCAwIDAtLjQ1LjA4bC0uNTkuMjYtMS44My00LjFjLS41Ni0xLjI2LTIuMDQtMS44My0zLjMtMS4yN3MtMS44MyAyLjA0LTEuMjcgMy4zbDMuMyA3LjQ1LTEuODcuMzljLS4xOS4wNS0uOTkuMjctMS4zNiAxLjIxTDggMTkuMTlsNi43OCAyLjY3Yy40OS4xOSAxLjA1LjE4IDEuNTMtLjA0bDUuOTktMi42NWMuODktLjQgMS4zNy0xLjM4IDEuMTMtMi4zMmwtMS4zNi01LjM0Yy0uMjItLjg2LS45Ny0xLjQ3LTEuODUtMS41MXptMS4yNyA3LjM0TDE1LjUgMjBsLTQuOTItMS45NiA0LjE4LS44OC00LjMtOS43Yy0uMTEtLjI1IDAtLjU1LjI1LS42Ni4yNS0uMTEuNTUgMCAuNjYuMjVsMi41IDUuNjUgMS42MS0uNzEgNC42NS4wMSAxLjM2IDUuMzR6TTIuMDYgNS41NiAxIDQuNSA0LjUgMSA4IDQuNSA2Ljk0IDUuNTYgNS4zMiAzLjk0YTEwLjQ1NyAxMC40NTcgMCAwIDAgMS44OCA4Ljk5TDYuMTMgMTRBMTEuOTc0IDExLjk3NCAwIDAgMSAzLjUgNi41YzAtLjkyLjEtMS44Mi4zLTIuNjhMMi4wNiA1LjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dpcGVWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMmg1djVINC41VjQuMDljLTEuODYgMi4xMS0zIDQuODgtMyA3LjkxczEuMTQgNS43OSAzIDcuOTFWMTdINnY1SDF2LTEuNWgyLjAyQzEuMTMgMTguMTggMCAxNS4yMiAwIDEyczEuMTMtNi4xOCAzLjAyLTguNUgxVjJ6bTE5LjIyIDgtNC4xNS4wMWEuOTc1Ljk3NSAwIDAgMC0uNDUuMDhsLS41OS4yNi0xLjgzLTQuMWMtLjU2LTEuMjYtMi4wNC0xLjgzLTMuMy0xLjI3cy0xLjgzIDIuMDQtMS4yNyAzLjNsMy4zIDcuNDUtMS44Ny4zOWMtLjE5LjA1LS45OS4yNy0xLjM2IDEuMjFMOCAxOS4xOWw2Ljc4IDIuNjdjLjQ5LjE5IDEuMDUuMTggMS41My0uMDRsNS45OS0yLjY1Yy44OS0uNCAxLjM3LTEuMzggMS4xMy0yLjMybC0xLjM2LTUuMzRjLS4yMi0uODYtLjk3LTEuNDctMS44NS0xLjUxem0xLjI3IDcuMzRMMTUuNSAyMGwtNC45Mi0xLjk2IDQuMTgtLjg4LTQuMy05LjdjLS4xMS0uMjUgMC0uNTUuMjUtLjY2LjI1LS4xMS41NSAwIC42Ni4yNWwyLjUgNS42NSAxLjYxLS43MSA0LjY1LjAxIDEuMzYgNS4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSAydjIuMDJDMTguMTggMi4xMyAxNS4yMiAxIDEyIDFTNS44MiAyLjEzIDMuNSA0LjAyVjJIMnY1aDVWNS41SDQuMDljMi4xMS0xLjg2IDQuODgtMyA3LjkxLTNzNS43OSAxLjE0IDcuOTEgM0gxN1Y3aDVWMmgtMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC44OSAxMy43Ny0zLjgtMS42N2MtLjEzLS4wNi0uMjgtLjEtLjQ0LS4xSDE0VjcuNjNjMC0xLjMyLS45Ni0yLjUtMi4yNy0yLjYyQTIuNTA4IDIuNTA4IDAgMCAwIDkgNy41djguMTVsLTEuODctLjRjLS4xOS0uMDMtMS4wMi0uMTUtMS43My41Nkw0IDE3LjIybDUuMTIgNS4xOWMuMzcuMzguODguNTkgMS40MS41OWg2LjU1Yy45OCAwIDEuODEtLjcgMS45Ny0xLjY3bC45Mi01LjQ0YTIgMiAwIDAgMC0xLjA4LTIuMTJ6TTE4IDE1LjU2IDE3LjA4IDIxaC02LjU1bC0zLjctMy43OCA0LjE3Ljg5VjcuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXY2LjE4aDEuNzZMMTggMTUuNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2l0Y2hBY2Nlc3NTaG9ydGN1dEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMDYgOC45NCA1IDhsMi4wNi0uOTRMOCA1bC45NCAyLjA2TDExIDhsLTIuMDYuOTRMOCAxMWwtLjk0LTIuMDZ6TTggMjFsLjk0LTIuMDZMMTEgMThsLTIuMDYtLjk0TDggMTVsLS45NCAyLjA2TDUgMThsMi4wNi45NEw4IDIxem0tMy42My04LjYzTDMgMTNsMS4zNy42M0w1IDE1bC42My0xLjM3TDcgMTNsLTEuMzctLjYzTDUgMTFsLS42MyAxLjM3ek0xMiAxMmMwLTMuMDkgMS4zOC01Ljk0IDMuNDQtOEgxMlYyaDd2N2gtMlY1LjI4Yy0xLjggMS43NC0zIDQuMi0zIDYuNzIgMCAzLjMyIDIuMSA2LjM2IDUgNy44MlYyMmMtNC4wOS0xLjU5LTctNS42NS03LTEwem0xMiAyaC0ydi0yaC0ydjJoLTJ2MmgydjJoMnYtMmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dpdGNoQWNjZXNzU2hvcnRjdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjA2IDguOTQgNSA4bDIuMDYtLjk0TDggNWwuOTQgMi4wNkwxMSA4bC0yLjA2Ljk0TDggMTFsLS45NC0yLjA2ek04IDIxbC45NC0yLjA2TDExIDE4bC0yLjA2LS45NEw4IDE1bC0uOTQgMi4wNkw1IDE4bDIuMDYuOTRMOCAyMXptLTMuNjMtOC42M0wzIDEzbDEuMzcuNjNMNSAxNWwuNjMtMS4zN0w3IDEzbC0xLjM3LS42M0w1IDExbC0uNjMgMS4zN3pNMTIgMTJjMC0zLjA5IDEuMzgtNS45NCAzLjQ0LThIMTJWMmg3djdoLTJWNS4yOGMtMS44IDEuNzQtMyA0LjItMyA2LjcyIDAgMy4zMiAyLjEgNi4zNiA1IDcuODJWMjJjLTQuMDktMS41OS03LTUuNjUtNy0xMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN5bmNBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjQxIDEzLjQxIDYgMTJsLTQgNCA0IDQgMS40MS0xLjQxTDUuODMgMTdIMjF2LTJINS44M3pNMTYuNTkgMTAuNTkgMTggMTJsNC00LTQtNC0xLjQxIDEuNDFMMTguMTcgN0gzdjJoMTUuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTeXN0ZW1VcGRhdGVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDE2IDQtNGgtM1YzaC0ydjlIOGw0IDR6bTktMTNoLTZ2MS45OWg2djE0LjAzSDNWNC45OWg2VjNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOSAxMyA0LTRoLTNWM2gtMnY5SDhsNCA0em05LTEzaC02djEuOTloNnYxNC4wM0gzVjQuOTloNlYzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhYlVuc2VsZWN0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgOWgyVjdIMXYyem0wIDRoMnYtMkgxdjJ6bTAtOGgyVjNjLTEuMSAwLTIgLjktMiAyem04IDE2aDJ2LTJIOXYyem0tOC00aDJ2LTJIMXYyem0yIDR2LTJIMWMwIDEuMS45IDIgMiAyek0yMSAzaC04djZoMTBWNWMwLTEuMS0uOS0yLTItMnptMCAxNGgydi0yaC0ydjJ6TTkgNWgyVjNIOXYyek01IDIxaDJ2LTJINXYyek01IDVoMlYzSDV2MnptMTYgMTZjMS4xIDAgMi0uOSAyLTJoLTJ2MnptMC04aDJ2LTJoLTJ2MnptLTggOGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUYWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxMHY0aDh2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUYWJsZVZpZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3SDljLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnptMCAydjJIOVY5aDEwem0tNiA2di0yaDJ2MmgtMnptMiAydjJoLTJ2LTJoMnptLTQtMkg5di0yaDJ2MnptNi0yaDJ2MmgtMnYtMnptLTggNGgydjJIOXYtMnptOCAydi0yaDJ2MmgtMnpNNiAxN0g1Yy0xLjEgMC0yLS45LTItMlY1YzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDJ2MWgtMlY1SDV2MTBoMXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGFza0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDUuMTggMTAuNTkgMTYuNmwtNC4yNC00LjI0IDEuNDEtMS40MSAyLjgzIDIuODMgMTAtMTBMMjIgNS4xOHptLTIuMjEgNS4wNGMuMTMuNTcuMjEgMS4xNy4yMSAxLjc4IDAgNC40Mi0zLjU4IDgtOCA4cy04LTMuNTgtOC04IDMuNTgtOCA4LThjMS41OCAwIDMuMDQuNDYgNC4yOCAxLjI1bDEuNDQtMS40NEE5LjkgOS45IDAgMCAwIDEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMGMwLTEuMTktLjIyLTIuMzMtLjYtMy4zOWwtMS42MSAxLjYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGVybWluYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZhMiAyIDAgMCAwLTItMnptMCAxNEg0VjhoMTZ2MTB6bS0yLTFoLTZ2LTJoNnYyek03LjUgMTdsLTEuNDEtMS40MUw4LjY3IDEzbC0yLjU5LTIuNTlMNy41IDlsNCA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRleHRSb3RhdGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggNC0zIDNoMnYxM2gyVjdoMmwtMy0zem0tNi4yIDExLjV2LTVsMi4yLS45VjcuNUwzIDEyLjI1djEuNWwxMSA0Ljc1di0yLjFsLTIuMi0uOXpNNC45OCAxMyAxMCAxMS4xM3YzLjc0TDQuOTggMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUZXh0Um90YXRlVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ljc1IDVoLTEuNUw5LjUgMTZoMi4xbC45LTIuMmg1bC45IDIuMmgyLjFMMTUuNzUgNXptLTIuNjIgN0wxNSA2Ljk4IDE2Ljg3IDEyaC0zLjc0ek02IDIwbDMtM0g3VjRINXYxM0gzbDMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRleHRSb3RhdGlvbkFuZ2xlZG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMjF2LTQuMjRsLTEuNDEgMS40MS05LjItOS4xOS0xLjQxIDEuNDEgOS4xOSA5LjE5TDEwLjc2IDIxSDE1ek0xMS4yNSA4LjQ4bDMuNTQgMy41NC0uOTIgMi4xOSAxLjQ4IDEuNDggNC40Mi0xMS4xNC0xLjA2LTEuMDVMNy41NyA3LjkyIDkuMDYgOS40bDIuMTktLjkyem02LjU5LTMuMDUtMi4yMyA0Ljg3LTIuNjQtMi42NCA0Ljg3LTIuMjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUZXh0Um90YXRpb25BbmdsZXVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi43NiA5IDEuNDEgMS40MS05LjE5IDkuMTkgMS40MSAxLjQxIDkuMTktOS4xOUwyMSAxMy4yNFY5aC00LjI0em0tOC4yOCAzLjc1IDMuNTQtMy41NCAyLjE5LjkyIDEuNDgtMS40OEw0LjU2IDQuMjMgMy41IDUuMjlsNC40MiAxMS4xNCAxLjQ4LTEuNDgtLjkyLTIuMnptLS44Mi0xLjcyTDUuNDMgNi4xNmw0Ljg3IDIuMjMtMi42NCAyLjY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGV4dFJvdGF0aW9uRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNiAyMCAzLTNIN1Y0SDV2MTNIM2wzIDN6bTYuMi0xMS41djVsLTIuMi45djIuMWwxMS00Ljc1di0xLjVMMTAgNS41djIuMWwyLjIuOXptNi44MiAyLjVMMTQgMTIuODdWOS4xM0wxOS4wMiAxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRleHRSb3RhdGlvbk5vbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxIDE4LTMtM3YySDV2MmgxM3YybDMtM3pNOS41IDExLjhoNWwuOSAyLjJoMi4xTDEyLjc1IDNoLTEuNUw2LjUgMTRoMi4xbC45LTIuMnpNMTIgNC45OCAxMy44NyAxMGgtMy43NEwxMiA0Ljk4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGhlYXRlcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDN2MmgtMlYzSDh2Mkg2VjNINHYxOGgydi0yaDJ2Mmg4di0yaDJ2MmgyVjNoLTJ6TTggMTdINnYtMmgydjJ6bTAtNEg2di0yaDJ2MnptMC00SDZWN2gydjJ6bTYgMTBoLTRWNWg0djE0em00LTJoLTJ2LTJoMnYyem0wLTRoLTJ2LTJoMnYyem0wLTRoLTJWN2gydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaHVtYkRvd25PZmZBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAzSDZjLS44MyAwLTEuNTQuNS0xLjg0IDEuMjJsLTMuMDIgNy4wNWMtLjA5LjIzLS4xNC40Ny0uMTQuNzN2MmMwIDEuMS45IDIgMiAyaDYuMzFsLS45NSA0LjU3LS4wMy4zMmMwIC40MS4xNy43OS40NCAxLjA2TDkuODMgMjNsNi41OS02LjU5Yy4zNi0uMzYuNTgtLjg2LjU4LTEuNDFWNWMwLTEuMS0uOS0yLTItMnptMCAxMi00LjM0IDQuMzRMMTIgMTRIM3YtMmwzLTdoOXYxMHptNC0xMmg0djEyaC00VjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaHVtYkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDNINmMtLjgzIDAtMS41NC41LTEuODQgMS4yMmwtMy4wMiA3LjA1Yy0uMDkuMjMtLjE0LjQ3LS4xNC43M3YyYzAgMS4xLjkgMiAyIDJoNi4zMWwtLjk1IDQuNTctLjAzLjMyYzAgLjQxLjE3Ljc5LjQ0IDEuMDZMOS44MyAyM2w2LjU5LTYuNTljLjM2LS4zNi41OC0uODYuNTgtMS40MVY1YzAtMS4xLS45LTItMi0yem0wIDEyLTQuMzQgNC4zNEwxMiAxNEgzdi0ybDMtN2g5djEwem00LTEyaDR2MTJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaHVtYlVwT2ZmQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAyMWg5Yy44MyAwIDEuNTQtLjUgMS44NC0xLjIybDMuMDItNy4wNWMuMDktLjIzLjE0LS40Ny4xNC0uNzN2LTJjMC0xLjEtLjktMi0yLTJoLTYuMzFsLjk1LTQuNTcuMDMtLjMyYzAtLjQxLS4xNy0uNzktLjQ0LTEuMDZMMTQuMTcgMSA3LjU4IDcuNTlDNy4yMiA3Ljk1IDcgOC40NSA3IDl2MTBjMCAxLjEuOSAyIDIgMnpNOSA5bDQuMzQtNC4zNEwxMiAxMGg5djJsLTMgN0g5Vjl6TTEgOWg0djEySDFWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRodW1iVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMjFoOWMuODMgMCAxLjU0LS41IDEuODQtMS4yMmwzLjAyLTcuMDVjLjA5LS4yMy4xNC0uNDcuMTQtLjczdi0yYzAtMS4xLS45LTItMi0yaC02LjMxbC45NS00LjU3LjAzLS4zMmMwLS40MS0uMTctLjc5LS40NC0xLjA2TDE0LjE3IDEgNy41OCA3LjU5QzcuMjIgNy45NSA3IDguNDUgNyA5djEwYzAgMS4xLjkgMiAyIDJ6TTkgOWw0LjM0LTQuMzRMMTIgMTBoOXYybC0zIDdIOVY5ek0xIDloNHYxMkgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGh1bWJzVXBEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YzAtLjU1LS40NS0xLTEtMUg1LjgybC42Ni0zLjE4LjAyLS4yM2MwLS4zMS0uMTMtLjU5LS4zMy0uOEw1LjM4IDAgLjQ0IDQuOTRDLjE3IDUuMjEgMCA1LjU5IDAgNnY2LjVjMCAuODMuNjcgMS41IDEuNSAxLjVoNi43NWMuNjIgMCAxLjE1LS4zOCAxLjM4LS45MWwyLjI2LTUuMjljLjA3LS4xNy4xMS0uMzYuMTEtLjU1VjZ6bS0yIDEuMTNMNy45MiAxMkgyVjYuMjFsMS45My0xLjkzTDMuMzYgN0gxMHYuMTN6TTIyLjUgMTBoLTYuNzVjLS42MiAwLTEuMTUuMzgtMS4zOC45MWwtMi4yNiA1LjI5Yy0uMDcuMTctLjExLjM2LS4xMS41NVYxOGMwIC41NS40NSAxIDEgMWg1LjE4bC0uNjYgMy4xOC0uMDIuMjRjMCAuMzEuMTMuNTkuMzMuOGwuNzkuNzggNC45NC00Ljk0Yy4yNy0uMjcuNDQtLjY1LjQ0LTEuMDZ2LTYuNWMwLS44My0uNjctMS41LTEuNS0xLjV6bS0uNSA3Ljc5LTEuOTMgMS45My41Ny0yLjcySDE0di0uMTNMMTYuMDggMTJIMjJ2NS43OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRpbWVsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgOGMwIDEuMS0uOSAyLTIgMmExLjcgMS43IDAgMCAxLS41MS0uMDdsLTMuNTYgMy41NWMuMDUuMTYuMDcuMzQuMDcuNTIgMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yYzAtLjE4LjAyLS4zNi4wNy0uNTJsLTIuNTUtMi41NWMtLjE2LjA1LS4zNC4wNy0uNTIuMDdzLS4zNi0uMDItLjUyLS4wN2wtNC41NSA0LjU2Yy4wNS4xNi4wNy4zMy4wNy41MSAwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTJjLjE4IDAgLjM1LjAyLjUxLjA3bDQuNTYtNC41NUM4LjAyIDkuMzYgOCA5LjE4IDggOWMwLTEuMS45LTIgMi0yczIgLjkgMiAyYzAgLjE4LS4wMi4zNi0uMDcuNTJsMi41NSAyLjU1Yy4xNi0uMDUuMzQtLjA3LjUyLS4wN3MuMzYuMDIuNTIuMDdsMy41NS0zLjU2QTEuNyAxLjcgMCAwIDEgMTkgOGMwLTEuMS45LTIgMi0yczIgLjkgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGlwc0FuZFVwZGF0ZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDIwaDRjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yem0tMi0xaDh2LTJINXYyem0xMS41LTkuNWMwIDMuODItMi42NiA1Ljg2LTMuNzcgNi41SDUuMjdjLTEuMTEtLjY0LTMuNzctMi42OC0zLjc3LTYuNUMxLjUgNS4zNiA0Ljg2IDIgOSAyczcuNSAzLjM2IDcuNSA3LjV6bS0yIDBDMTQuNSA2LjQ3IDEyLjAzIDQgOSA0UzMuNSA2LjQ3IDMuNSA5LjVjMCAyLjQ3IDEuNDkgMy44OSAyLjM1IDQuNWg2LjNjLjg2LS42MSAyLjM1LTIuMDMgMi4zNS00LjV6bTYuODctMi4xM0wyMCA4bDEuMzcuNjNMMjIgMTBsLjYzLTEuMzdMMjQgOGwtMS4zNy0uNjNMMjIgNmwtLjYzIDEuMzd6TTE5IDZsLjk0LTIuMDZMMjIgM2wtMi4wNi0uOTRMMTkgMGwtLjk0IDIuMDZMMTYgM2wyLjA2Ljk0TDE5IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUb2MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgOWgxNFY3SDN2MnptMCA0aDE0di0ySDN2MnptMCA0aDE0di0ySDN2MnptMTYgMGgydi0yaC0ydjJ6bTAtMTB2MmgyVjdoLTJ6bTAgNmgydi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUb2RheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOWgxNHYxMHptMC0xMkg1VjVoMTR2MnpNNyAxMWg1djVIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRva2VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEgNy05LTUtOSA1djEwbDkgNSA5LTVWN3ptLTktMi43MSA1LjkxIDMuMjgtMy4wMSAxLjY3QzE0LjE3IDguNDggMTMuMTQgOCAxMiA4cy0yLjE3LjQ4LTIuOSAxLjI0TDYuMDkgNy41NyAxMiA0LjI5em0tMSAxNC44Ny02LTMuMzNWOS4yNkw4LjEzIDExYy0uMDkuMzEtLjEzLjY1LS4xMyAxIDAgMS44NiAxLjI3IDMuNDMgMyAzLjg3djMuMjl6TTEwIDEyYzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTMgNy4xNnYtMy4yOGMxLjczLS40NCAzLTIuMDEgMy0zLjg3IDAtLjM1LS4wNC0uNjktLjEzLTEuMDFMMTkgOS4yNnY2LjU3bC02IDMuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUb2xsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LTgtMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6TTMgMTJhNS45OSA1Ljk5IDAgMCAxIDQtNS42NVY0LjI2QzMuNTUgNS4xNSAxIDguMjcgMSAxMnMyLjU1IDYuODUgNiA3Ljc0di0yLjA5QTUuOTkgNS45OSAwIDAgMSAzIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVG91Y2hBcHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC4xOSAxMi40NC0zLjI0LTEuNjJjMS4yOS0xIDIuMTItMi41NiAyLjEyLTQuMzIgMC0zLjAzLTIuNDctNS41LTUuNS01LjVzLTUuNSAyLjQ3LTUuNSA1LjVjMCAyLjEzIDEuMjIgMy45OCAzIDQuODl2My4yNmMtMi4xNS0uNDYtMi4wMi0uNDQtMi4yNi0uNDQtLjUzIDAtMS4wMy4yMS0xLjQxLjU5TDQgMTYuMjJsNS4wOSA1LjA5Yy40My40NCAxLjAzLjY5IDEuNjUuNjloNi4zYy45OCAwIDEuODEtLjcgMS45Ny0xLjY3bC44LTQuNzFjLjIyLTEuMy0uNDMtMi41OC0xLjYyLTMuMTh6bS0uMzUgMi44NS0uOCA0LjcxaC02LjNjLS4wOSAwLS4xNy0uMDQtLjI0LS4xbC0zLjY4LTMuNjggNC4yNS44OVY2LjVjMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjV2NmgxLjc2bDMuNDYgMS43M2MuNC4yLjYyLjYzLjU1IDEuMDZ6TTguMDcgNi41YzAtMS45MyAxLjU3LTMuNSAzLjUtMy41czMuNSAxLjU3IDMuNSAzLjVjMCAuOTUtLjM4IDEuODEtMSAyLjQ0VjYuNWEyLjUgMi41IDAgMCAwLTUgMHYyLjQ0Yy0uNjItLjYzLTEtMS40OS0xLTIuNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUb3VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNEg3VjJINXYyMGgydi04aDE0bC0yLTUgMi01em0tMy44NiA1Ljc0LjkgMi4yNkg3VjZoMTEuMDVsLS45IDIuMjYtLjMuNzQuMjkuNzR6TTE0IDljMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yIDIgLjkgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHJhY2tDaGFuZ2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS4wNyA0LjkzLTEuNDEgMS40MUE4LjAxNCA4LjAxNCAwIDAgMSAyMCAxMmMwIDQuNDItMy41OCA4LTggOHMtOC0zLjU4LTgtOGMwLTQuMDggMy4wNS03LjQ0IDctNy45M3YyLjAyQzguMTYgNi41NyA2IDkuMDMgNiAxMmMwIDMuMzEgMi42OSA2IDYgNnM2LTIuNjkgNi02YzAtMS42Ni0uNjctMy4xNi0xLjc2LTQuMjRsLTEuNDEgMS40MUMxNS41NSA5LjkgMTYgMTAuOSAxNiAxMmMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNGMwLTEuODYgMS4yOC0zLjQxIDMtMy44NnYyLjE0Yy0uNi4zNS0xIC45OC0xIDEuNzIgMCAxLjEuOSAyIDIgMnMyLS45IDItMmMwLS43NC0uNC0xLjM4LTEtMS43MlYyaC0xQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBjMC0yLjc2LTEuMTItNS4yNi0yLjkzLTcuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmFuc2NyaWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxM2MyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTYuMzkgOC41NkMxMy43MSAxNC43IDExLjUzIDE0IDkgMTRzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDEgMTguMjJWMjFoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpNMTUgMTlIM3YtLjc4YzAtLjM4LjItLjcyLjUyLS44OEM0LjcxIDE2LjczIDYuNjMgMTYgOSAxNmMyLjM3IDAgNC4yOS43MyA1LjQ4IDEuMzQuMzIuMTYuNTIuNS41Mi44OFYxOXptMi45My0zIDEuNjMtMS42M2MtMi43Ny0zLjAyLTIuNzctNy41NiAwLTEwLjc0TDE3LjkzIDJjLTMuOSAzLjg5LTMuOTEgOS45NSAwIDE0em00Ljk5LTUuMDVhMy4zMTcgMy4zMTcgMCAwIDEgMC0zLjg5bC0xLjY4LTEuNjljLTIuMDIgMi4wMi0yLjAyIDUuMDcgMCA3LjI3bDEuNjgtMS42OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyYW5zbGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIuODcgMTUuMDctMi41NC0yLjUxLjAzLS4wM0ExNy41MiAxNy41MiAwIDAgMCAxNC4wNyA2SDE3VjRoLTdWMkg4djJIMXYxLjk5aDExLjE3QzExLjUgNy45MiAxMC40NCA5Ljc1IDkgMTEuMzUgOC4wNyAxMC4zMiA3LjMgOS4xOSA2LjY5IDhoLTJjLjczIDEuNjMgMS43MyAzLjE3IDIuOTggNC41NmwtNS4wOSA1LjAyTDQgMTlsNS01IDMuMTEgMy4xMS43Ni0yLjA0ek0xOC41IDEwaC0yTDEyIDIyaDJsMS4xMi0zaDQuNzVMMjEgMjJoMmwtNC41LTEyem0tMi42MiA3IDEuNjItNC4zM0wxOS4xMiAxN2gtMy4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyZW5kaW5nRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYgMTggMi4yOS0yLjI5LTQuODgtNC44OC00IDRMMiA3LjQxIDMuNDEgNmw2IDYgNC00IDYuMyA2LjI5TDIyIDEydjZoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmVuZGluZ0ZsYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDEyLTQtNHYzSDN2MmgxNXYzbDQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyZW5kaW5nVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2IDYgMi4yOSAyLjI5LTQuODggNC44OC00LTRMMiAxNi41OSAzLjQxIDE4bDYtNiA0IDQgNi4zLTYuMjlMMjIgMTJWNmgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyb3VibGVzaG9vdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDIwLjU5LTQuNjktNC42OUE3LjkwMiA3LjkwMiAwIDAgMCAxOSAxMWMwLTQuNDItMy41OC04LTgtOC00LjA4IDAtNy40NCAzLjA1LTcuOTMgN2gyLjAyQzUuNTcgNy4xNyA4LjAzIDUgMTEgNWMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNmMtMi40MiAwLTQuNS0xLjQ0LTUuNDUtMy41SDMuNEM0LjQ1IDE2LjY5IDcuNDYgMTkgMTEgMTljMS44NSAwIDMuNTUtLjYzIDQuOS0xLjY5TDIwLjU5IDIyIDIyIDIwLjU5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjQzIDkuNjkgOS42NSAxNWgxLjY0bDEuMjYtMy43OC45NSAyLjI4aDJWMTJoLTFsLTEuMjUtM2gtMS41NGwtMS4xMiAzLjM3TDkuMzUgN0g3LjdsLTEuMjUgNEgxdjEuNWg2LjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg1LjE3TDQgMTcuMTdWNGgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgMTUgMS41Ny0zLjQzTDE3IDEwbC0zLjQzLTEuNTdMMTIgNWwtMS41NyAzLjQzTDcgMTBsMy40MyAxLjU3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHVybmVkSW5Ob3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDNIN2MtMS4xIDAtMS45OS45LTEuOTkgMkw1IDIxbDctMyA3IDNWNWMwLTEuMS0uOS0yLTItMnptMCAxNS01LTIuMThMNyAxOFY1aDEwdjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHVybmVkSW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDNIN2MtMS4xIDAtMS45OS45LTEuOTkgMkw1IDIxbDctMyA3IDNWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVVuZm9sZExlc3NEb3VibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41OCAxLjQxIDE1LjE2IDBsLTMuMTcgMy4xN0w4LjgyIDAgNy40MSAxLjQxIDExLjk5IDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjU4IDYuNDEgMTUuMTYgNWwtMy4xNyAzLjE3TDguODIgNSA3LjQxIDYuNDEgMTEuOTkgMTF6TTcuNDIgMTcuNTkgOC44NCAxOWwzLjE3LTMuMTdMMTUuMTggMTlsMS40MS0xLjQxTDEyLjAxIDEzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjQyIDIyLjU5IDguODQgMjRsMy4xNy0zLjE3TDE1LjE4IDI0bDEuNDEtMS40MUwxMi4wMSAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVVuZm9sZE1vcmVEb3VibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3LjgzIDE1LjE3IDExbDEuNDEtMS40MUwxMiA1IDcuNDEgOS41OSA4LjgzIDExIDEyIDcuODN6bTAtNUwxNS4xNyA2bDEuNDEtMS40MUwxMiAwIDcuNDEgNC41OSA4LjgzIDYgMTIgMi44M3ptMCAxOC4zNEw4LjgzIDE4bC0xLjQxIDEuNDFMMTIgMjRsNC41OS00LjU5TDE1LjE3IDE4IDEyIDIxLjE3em0wLTVMOC44MyAxM2wtMS40MSAxLjQxTDEyIDE5bDQuNTktNC41OUwxNS4xNyAxMyAxMiAxNi4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVVucHVibGlzaGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy45NCA1LjEyIDYuNDkgMy42NkE5LjkxIDkuOTEgMCAwIDEgMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMCAwIDIuMDQtLjYxIDMuOTMtMS42NiA1LjUxbC0xLjQ2LTEuNDZBNy44NjkgNy44NjkgMCAwIDAgMjAgMTJjMC00LjQxLTMuNTktOC04LTgtMS40OCAwLTIuODYuNDEtNC4wNiAxLjEyem05LjcyIDQuNDEtMS40MS0xLjQxLTIuNjUgMi42NSAxLjQxIDEuNDEgMi42NS0yLjY1em0yLjEyIDEzLjA4LTIuMjctMi4yN0E5LjkxIDkuOTEgMCAwIDEgMTIgMjJDNi40OCAyMiAyIDE3LjUyIDIgMTJjMC0yLjA0LjYxLTMuOTMgMS42Ni01LjUxTDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQgMS40MnptLTMuNzItMy43M0wxMi4xOCAxNWwtMS41OSAxLjU5LTQuMjQtNC4yNCAxLjQxLTEuNDEgMi44MyAyLjgzLjE4LS4xOC01LjY1LTUuNjVBNy45MzIgNy45MzIgMCAwIDAgNCAxMmMwIDQuNDEgMy41OSA4IDggOCAxLjQ4IDAgMi44Ni0uNDEgNC4wNi0xLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVXBkYXRlRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC45NCAxM2E4Ljg2NSA4Ljg2NSAwIDAgMS0xLjMzIDMuNzlsLTEuNDctMS40N2MuMzgtLjcxLjY1LTEuNDkuNzctMi4zMmgyLjAzek04LjY3IDUuODRBNy4wNiA3LjA2IDAgMCAxIDEyIDVhNy4wMSA3LjAxIDAgMCAxIDUuNzQgM0gxNXYyaDZWNGgtMnYyLjM2QzE3LjM1IDQuMzIgMTQuODMgMyAxMiAzYy0xLjc2IDAtMy40LjUxLTQuNzggMS4zOWwxLjQ1IDEuNDV6TTExIDd2MS4xN2wyIDJWN2gtMnptOC43OCAxNS42MS0zLTNBOC45NzMgOC45NzMgMCAwIDEgMTIgMjFhOSA5IDAgMCAxLTktOWMwLTEuNzYuNTEtMy40IDEuMzktNC43OGwtMy0zTDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNCAxLjQyem0tNC40Ni00LjQ2TDUuODQgOC42N0E3LjA2IDcuMDYgMCAwIDAgNSAxMmMwIDMuODYgMy4xNCA3IDcgNyAxLjIgMCAyLjM0LS4zMSAzLjMyLS44NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVVwZGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDh2NWw0LjI1IDIuNTIuNzctMS4yOC0zLjUyLTIuMDlWOEgxMXptMTAgMlYzbC0yLjY0IDIuNjRBOC45MzcgOC45MzcgMCAwIDAgMTIgM2E5IDkgMCAxIDAgOSA5aC0yYzAgMy44Ni0zLjE0IDctNyA3cy03LTMuMTQtNy03IDMuMTQtNyA3LTdjMS45MyAwIDMuNjguNzkgNC45NSAyLjA1TDE0IDEwaDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVcGdyYWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTh2Mkg4di0yaDh6TTExIDcuOTlWMTZoMlY3Ljk5aDNMMTIgNCA4IDcuOTloM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZlcmlmaWVkVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMSAzIDV2NmMwIDUuNTUgMy44NCAxMC43NCA5IDEyIDUuMTYtMS4yNiA5LTYuNDUgOS0xMlY1bC05LTR6bTcgMTBjMCA0LjUyLTIuOTggOC42OS03IDkuOTMtNC4wMi0xLjI0LTctNS40MS03LTkuOTNWNi4zbDctMy4xMSA3IDMuMTFWMTF6bS0xMS41OS41OUw2IDEzbDQgNCA4LTgtMS40MS0xLjQyTDEwIDE0LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmVyaWZpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxMS45OSAyMC41NiA5LjJsLjM0LTMuNjktMy42MS0uODJMMTUuNCAxLjUgMTIgMi45NiA4LjYgMS41IDYuNzEgNC42OSAzLjEgNS41bC4zNCAzLjdMMSAxMS45OWwyLjQ0IDIuNzktLjM0IDMuNyAzLjYxLjgyIDEuODkgMy4yIDMuNC0xLjQ3IDMuNCAxLjQ2IDEuODktMy4xOSAzLjYxLS44Mi0uMzQtMy42OSAyLjQ0LTIuOHptLTMuOTUgMS40OC0uNTYuNjUuMDguODUuMTggMS45NS0xLjkuNDMtLjg0LjE5LS40NC43NC0uOTkgMS42OC0xLjc4LS43Ny0uOC0uMzQtLjc5LjM0LTEuNzguNzctLjk5LTEuNjctLjQ0LS43NC0uODQtLjE5LTEuOS0uNDMuMTgtMS45Ni4wOC0uODUtLjU2LS42NUwzLjY3IDEybDEuMjktMS40OC41Ni0uNjUtLjA5LS44Ni0uMTgtMS45NCAxLjktLjQzLjg0LS4xOS40NC0uNzQuOTktMS42OCAxLjc4Ljc3LjguMzQuNzktLjM0IDEuNzgtLjc3Ljk5IDEuNjguNDQuNzQuODQuMTkgMS45LjQzLS4xOCAxLjk1LS4wOC44NS41Ni42NSAxLjI5IDEuNDctMS4yOCAxLjQ4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMC4wOSAxMy43NS0yLjMyLTIuMzMtMS40OCAxLjQ5IDMuOCAzLjgxIDcuMzQtNy4zNi0xLjQ4LTEuNDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWZXJ0aWNhbFNwbGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzaDh2Mkgzem0wIDRoOHYySDN6bTAtOGg4djJIM3ptMC00aDh2Mkgzem0xNiAydjEwaC00VjdoNG0yLTJoLTh2MTRoOFY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0FnZW5kYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEzSDVjLTEuMSAwLTIgLjktMiAydjRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtNGMwLTEuMS0uOS0yLTItMnptMCA2SDV2LTRoMTR2NHpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnY0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCA2SDVWNWgxNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0FycmF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgN3YxMEg5VjdoNnptNi0yaC0zdjE0aDNWNXptLTQgMEg3djE0aDEwVjV6TTYgNUgzdjE0aDNWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZXdDYXJvdXNlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgN2g0djEwSDJWN3ptNSAxMmgxMFY1SDd2MTR6TTkgN2g2djEwSDlWN3ptOSAwaDR2MTBoLTRWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZXdDb2x1bW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDV2MTRoMThWNUgzem01LjMzIDEySDVWN2gzLjMzdjEwem01LjM0IDBoLTMuMzNWN2gzLjMzdjEwek0xOSAxN2gtMy4zM1Y3SDE5djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0NvbWZ5QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3aDR2NEg3ek0xMyA3aDR2NGgtNHpNNyAxM2g0djRIN3pNMTMgMTNoNHY0aC00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjZoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3Q29tcGFjdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDRWNmgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDcuNWg0djRoLTR6TTEyLjUgNy41aDR2NGgtNHpNNy41IDEyLjVoNHY0aC00ek0xMi41IDEyLjVoNHY0aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0NvenkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjI1IDcuMjVoNHY0aC00ek0xMi43NSA3LjI1aDR2NGgtNHpNNy4yNSAxMi43NWg0djRoLTR6TTEyLjc1IDEyLjc1aDR2NGgtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDE2djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0RheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMThIMnYyaDE5di0yem0tMi04djRINHYtNGgxNW0xLTJIM2MtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDFoMTdjLjU1IDAgMS0uNDUgMS0xVjljMC0uNTUtLjQ1LTEtMS0xem0xLTRIMnYyaDE5VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3SGVhZGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTVoMTZ2LTJINHYyem0wIDRoMTZ2LTJINHYyem0wLThoMTZWOUg0djJ6bTAtNnYyaDE2VjVINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZXdJbkFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA0YzAtLjU1LjQ1LTEgMS0xaDJWMUg0QzIuMzQgMSAxIDIuMzQgMSA0djJoMlY0ek0zIDIwdi0ySDF2MmMwIDEuNjYgMS4zNCAzIDMgM2gydi0ySDRjLS41NSAwLTEtLjQ1LTEtMXpNMjAgMWgtMnYyaDJjLjU1IDAgMSAuNDUgMSAxdjJoMlY0YzAtMS42Ni0xLjM0LTMtMy0zek0yMSAyMGMwIC41NS0uNDUgMS0xIDFoLTJ2MmgyYzEuNjYgMCAzLTEuMzQgMy0zdi0yaC0ydjJ6TTE5IDE0Ljg3VjkuMTNjMC0uNzItLjM4LTEuMzgtMS0xLjczbC01LTIuODhjLS4zMS0uMTgtLjY1LS4yNy0xLS4yN3MtLjY5LjA5LTEgLjI3TDYgNy4zOWMtLjYyLjM2LTEgMS4wMi0xIDEuNzR2NS43NGMwIC43Mi4zOCAxLjM4IDEgMS43M2w1IDIuODhjLjMxLjE4LjY1LjI3IDEgLjI3cy42OS0uMDkgMS0uMjdsNS0yLjg4Yy42Mi0uMzUgMS0xLjAxIDEtMS43M3ptLTggMi4zLTQtMi4zdi00LjYzbDQgMi4zM3Y0LjZ6bTEtNi4zM0w4LjA0IDguNTMgMTIgNi4yNWwzLjk2IDIuMjhMMTIgMTAuODR6bTUgNC4wMy00IDIuM3YtNC42bDQtMi4zM3Y0LjYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0thbmJhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgN2gydjEwSDd6TTExIDdoMnY1aC0yek0xNSA3aDJ2OGgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0xpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDV2MTRoMThWNUgzem00IDJ2Mkg1VjdoMnptLTIgNnYtMmgydjJINXptMCAyaDJ2Mkg1di0yem0xNCAySDl2LTJoMTB2MnptMC00SDl2LTJoMTB2MnptMC00SDlWN2gxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld01vZHVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNXYxNGgxOFY1SDN6bTE2IDZoLTMuMzNWN0gxOXY0em0tNS4zMyAwaC0zLjMzVjdoMy4zM3Y0ek04LjMzIDd2NEg1VjdoMy4zM3pNNSAxN3YtNGgzLjMzdjRINXptNS4zMyAwdi00aDMuMzN2NGgtMy4zM3ptNS4zNCAwdi00SDE5djRoLTMuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3UXVpbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDV2MTRoMThWNUgzem01LjMzIDEySDVWN2gzLjMzdjEwem01LjM0IDBoLTMuMzN2LTRoMy4zM3Y0ek0xOSAxN2gtMy4zM3YtNEgxOXY0em0wLTZoLTguNjdWN0gxOXY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld1NpZGViYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDR2MTZoMjBWNEgyem0xOCA0LjY3aC0yLjVWNkgyMHYyLjY3em0tMi41IDJIMjB2Mi42N2gtMi41di0yLjY3ek00IDZoMTEuNXYxMkg0VjZ6bTEzLjUgMTJ2LTIuNjdIMjBWMThoLTIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZXdTdHJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDd2MTBjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAyem0xNiAxMEg1di00aDE0djR6TTUgMTFWN2gxNHY0SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWV3VGltZWxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE1aDZ2Mkg2ek0xMiA3aDZ2MmgtNnpNOSAxMWg2djJIOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld1dlZWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNOCAxOEg0VjZoNHYxMnptNiAwaC00VjZoNHYxMnptNiAwaC00VjZoNHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpc2liaWxpdHlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZhOS43NyA5Ljc3IDAgMCAxIDguODIgNS41IDkuNjQ3IDkuNjQ3IDAgMCAxLTIuNDEgMy4xMmwxLjQxIDEuNDFjMS4zOS0xLjIzIDIuNDktMi43NyAzLjE4LTQuNTNDMjEuMjcgNy4xMSAxNyA0IDEyIDRjLTEuMjcgMC0yLjQ5LjItMy42NC41N2wxLjY1IDEuNjVDMTAuNjYgNi4wOSAxMS4zMiA2IDEyIDZ6bS0xLjA3IDEuMTRMMTMgOS4yMWMuNTcuMjUgMS4wMy43MSAxLjI4IDEuMjhsMi4wNyAyLjA3Yy4wOC0uMzQuMTQtLjcuMTQtMS4wN0MxNi41IDkuMDEgMTQuNDggNyAxMiA3Yy0uMzcgMC0uNzIuMDUtMS4wNy4xNHpNMi4wMSAzLjg3bDIuNjggMi42OEExMS43MzggMTEuNzM4IDAgMCAwIDEgMTEuNUMyLjczIDE1Ljg5IDcgMTkgMTIgMTljMS41MiAwIDIuOTgtLjI5IDQuMzItLjgybDMuNDIgMy40MiAxLjQxLTEuNDFMMy40MiAyLjQ1IDIuMDEgMy44N3ptNy41IDcuNSAyLjYxIDIuNjFjLS4wNC4wMS0uMDguMDItLjEyLjAyYTIuNSAyLjUgMCAwIDEtMi41LTIuNWMwLS4wNS4wMS0uMDguMDEtLjEzem0tMy40LTMuNCAxLjc1IDEuNzVhNC42IDQuNiAwIDAgMC0uMzYgMS43OCA0LjUwNyA0LjUwNyAwIDAgMCA2LjI3IDQuMTRsLjk4Ljk4Yy0uODguMjQtMS44LjM4LTIuNzUuMzhhOS43NyA5Ljc3IDAgMCAxLTguODItNS41Yy43LTEuNDMgMS43Mi0yLjYxIDIuOTMtMy41M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpc2liaWxpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZhOS43NyA5Ljc3IDAgMCAxIDguODIgNS41QzE5LjE3IDE0Ljg3IDE1Ljc5IDE3IDEyIDE3cy03LjE3LTIuMTMtOC44Mi01LjVBOS43NyA5Ljc3IDAgMCAxIDEyIDZtMC0yQzcgNCAyLjczIDcuMTEgMSAxMS41IDIuNzMgMTUuODkgNyAxOSAxMiAxOXM5LjI3LTMuMTEgMTEtNy41QzIxLjI3IDcuMTEgMTcgNCAxMiA0em0wIDVhMi41IDIuNSAwIDAgMSAwIDUgMi41IDIuNSAwIDAgMSAwLTVtMC0yYy0yLjQ4IDAtNC41IDIuMDItNC41IDQuNVM5LjUyIDE2IDEyIDE2czQuNS0yLjAyIDQuNS00LjVTMTQuNDggNyAxMiA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVm9pY2VPdmVyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi43NiA1LjM2LTEuNjggMS42OWMuOCAxLjEzLjgzIDIuNTguMDkgMy43NGwxLjcgMS43YzEuOS0yLjAyIDEuODctNC45OC0uMTEtNy4xM3pNMjAuMDcgMmwtMS42MyAxLjYzYzIuNzIgMi45NyAyLjc2IDcuMzkuMTQgMTAuNTZsMS42NCAxLjY0YzMuNzQtMy44OSAzLjcxLTkuODQtLjE1LTEzLjgzek05LjQzIDUuMDRsMy41MyAzLjUzYTMuOTc5IDMuOTc5IDAgMCAwLTMuNTMtMy41M3pNNC40MSAyLjg2IDMgNC4yN2wyLjYyIDIuNjJDNS4yMyA3LjUgNSA4LjIyIDUgOWMwIDIuMjEgMS43OSA0IDQgNCAuNzggMCAxLjUtLjIzIDIuMTEtLjYybDQuNCA0LjRDMTMuNzQgMTUuNiAxMC43OCAxNSA5IDE1Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtLjM3LS4xMS0uNy0uMjktMS4wMkwxOS43MyAyMWwxLjQxLTEuNDFMNC40MSAyLjg2ek0zIDE5Yy4yMi0uNzIgMy4zMS0yIDYtMiAyLjcgMCA1LjggMS4yOSA2IDJIM3ptNi04Yy0xLjEgMC0yLS45LTItMiAwLS4yMi4wNC0uNDIuMTEtLjYybDIuNTEgMi41MWMtLjIuMDctLjQuMTEtLjYyLjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F0Y2hMYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptLjUtMTNIMTF2Nmw1LjIgMy4yLjgtMS4zLTQuNS0yLjdWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdlYmhvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNWg1Ljg4Yy4yNy0uMzEuNjctLjUgMS4xMi0uNS44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjVjLS40NCAwLS44NC0uMTktMS4xMi0uNUgxMS45QTUgNSAwIDEgMSA2IDExLjF2Mi4wN2MtMS4xNi40MS0yIDEuNTMtMiAyLjgzIDAgMS42NSAxLjM1IDMgMyAzczMtMS4zNSAzLTN2LTF6bTIuNS0xMWMxLjY1IDAgMyAxLjM1IDMgM2gyYzAtMi43Ni0yLjI0LTUtNS01YTUuMDAyIDUuMDAyIDAgMCAwLTMuNDUgOC42MmwtMi4zNSAzLjljLS42OC4xNC0xLjIuNzUtMS4yIDEuNDggMCAuODMuNjcgMS41IDEuNSAxLjVhMS40OTggMS40OTggMCAwIDAgMS40My0xLjk1bDMuMzgtNS42M0EzLjAwMyAzLjAwMyAwIDAgMSA5LjUgN2MwLTEuNjUgMS4zNS0zIDMtM3ptNC41IDljLS42NCAwLTEuMjMuMi0xLjcyLjU0bC0zLjA1LTUuMDdDMTEuNTMgOC4zNSAxMSA3Ljc0IDExIDdjMC0uODMuNjctMS41IDEuNS0xLjVTMTQgNi4xNyAxNCA3YzAgLjE1LS4wMi4yOS0uMDYuNDNsMi4xOSAzLjY1Yy4yOC0uMDUuNTctLjA4Ljg3LS4wOCAyLjc2IDAgNSAyLjI0IDUgNXMtMi4yNCA1LTUgNWE1IDUgMCAwIDEtNC4zMy0yLjVoMi42N2MuNDguMzIgMS4wNS41IDEuNjYuNSAxLjY1IDAgMy0xLjM1IDMtM3MtMS4zNS0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZHRoRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek00IDE4VjZoMXYxMkg0em0zIDBWNmgxMHYxMkg3em0xMyAwaC0xVjZoMXYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZHRoTm9ybWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTQgMThWNmg0djEySDR6bTYgMFY2aDR2MTJoLTR6bTEwIDBoLTRWNmg0djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2lkdGhXaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTQgMThWNmgydjEySDR6bTQgMFY2aDh2MTJIOHptMTIgMGgtMlY2aDJ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpUHJvdGVjdGVkU2V0dXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi43MSA1LjI5IDE5IDNoLTh2OGwyLjMtMi4zYzEuOTcgMS40NiAzLjI1IDMuNzggMy4yNSA2LjQyIDAgMS4zMS0uMzIgMi41NC0uODggMy42MyAyLjMzLTEuNTIgMy44OC00LjE0IDMuODgtNy4xMyAwLTIuNTItMS4xMS00Ljc3LTIuODQtNi4zM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy40NiA4Ljg4YzAtMS4zMS4zMi0yLjU0Ljg4LTMuNjNhOC40NzkgOC40NzkgMCAwIDAtMy44OCA3LjEzYzAgMi41MiAxLjEgNC43NyAyLjg0IDYuMzNMNSAyMWg4di04bC0yLjMgMi4zYy0xLjk2LTEuNDYtMy4yNC0zLjc4LTMuMjQtNi40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdvcmtIaXN0b3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxOVY4aDE2djMuMjljLjcyLjIyIDEuNC41NCAyIC45N1Y4YzAtMS4xMS0uODktMi0yLTJoLTRWNGMwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMTljMCAxLjExLjg5IDIgMiAyaDcuNjhjLS4zLS42Mi0uNS0xLjI5LS42LTJINHptNi0xNWg0djJoLTRWNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0xLjY1IDcuMzVMMTcuNSAxOC4yVjE1aDF2Mi43OWwxLjg1IDEuODUtLjcuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXb3JrT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0aDR2MmgtMy42bDIgMkgyMHY3LjZsMiAyVjhjMC0xLjExLS44OS0yLTItMmgtNFY0YzAtMS4xMS0uODktMi0yLTJoLTRjLS45OSAwLTEuOC43LTEuOTYgMS42NEwxMCA1LjZWNHpNMy40IDEuODQgMS45OSAzLjI1IDQuNzQgNkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOWMwIDEuMTEuODkgMiAyIDJoMTUuNzRsMiAyIDEuNDEtMS40MUwzLjQgMS44NHpNNCAxOVY4aDIuNzRsMTEgMTFINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdvcmtPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA2VjRoLTR2Mmg0ek00IDh2MTFoMTZWOEg0em0xNi0yYzEuMTEgMCAyIC44OSAyIDJ2MTFjMCAxLjExLS44OSAyLTIgMkg0Yy0xLjExIDAtMi0uODktMi0ybC4wMS0xMWMwLTEuMTEuODgtMiAxLjk5LTJoNFY0YzAtMS4xMS44OS0yIDItMmg0YzEuMTEgMCAyIC44OSAyIDJ2Mmg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtNFY0YzAtMS4xMS0uODktMi0yLTJoLTRjLTEuMTEgMC0yIC44OS0yIDJ2Mkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOWMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS02IDBoLTRWNGg0djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXeXNpd3lnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTZINVY3aDE0djEyem0tMi03SDd2LTJoMTB2MnptLTQgNEg3di0yaDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVlvdXR1YmVTZWFyY2hlZEZvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMDEgMTRoLS44bC0uMjctLjI3YTYuNDUxIDYuNDUxIDAgMCAwIDEuNTctNC4yM2MwLTMuNTktMi45MS02LjUtNi41LTYuNXMtNi41IDMtNi41IDYuNUgybDMuODQgNCA0LjE2LTRINi41MWE0LjUgNC41IDAgMCAxIDkgMCA0LjUwNyA0LjUwNyAwIDAgMS02LjMyIDQuMTJMNy43MSAxNS4xYTYuNDc0IDYuNDc0IDAgMCAwIDcuNTItLjY3bC4yNy4yN3YuNzlsNS4wMSA0Ljk5TDIyIDE5bC00Ljk5LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVab29tSW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0em0uNS03SDl2Mkg3djFoMnYyaDF2LTJoMlY5aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lWm9vbU91dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QTYuNDcxIDYuNDcxIDAgMCAwIDE2IDkuNSA2LjUgNi41IDAgMSAwIDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6TTcgOWg1djFIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZEFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wMSAyMS4wMWMwIDEuMS44OSAxLjk5IDEuOTkgMS45OXMxLjk5LS44OSAxLjk5LTEuOTloLTMuOTh6TTEyIDZjMi43NiAwIDUgMi4yNCA1IDV2N0g3di03YzAtMi43NiAyLjI0LTUgNS01em0wLTQuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjV2MS4xN0M3LjM2IDQuODUgNSA3LjY1IDUgMTF2NmwtMiAydjFoMTh2LTFsLTItMnYtNmMwLTMuMzUtMi4zNi02LjE1LTUuNS02LjgzVjNjMC0uODMtLjY3LTEuNS0xLjUtMS41ek0xMyA4aC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvRGVsZXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMmgtMy41bC0xLTFoLTVsLTEgMUgxdjJoMTR6TTE2IDljLS43IDAtMS4zNy4xLTIgLjI5VjVIMnYxMmMwIDEuMS45IDIgMiAyaDUuNjhBNi45OTkgNi45OTkgMCAwIDAgMjMgMTZjMC0zLjg3LTMuMTMtNy03LTd6bS03IDdjMCAuMzQuMDMuNjcuMDggMUg0VjdoOHYzLjI2Yy0xLjgxIDEuMjctMyAzLjM2LTMgNS43NHptNyA1Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAxMkgxNXY1bDMuNiAyLjEuOC0xLjItMi45LTEuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVycm9yT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTVoMnYyaC0ydi0yem0wLThoMnY2aC0yVjd6bS45OS01QzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFcnJvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtMmgydjJ6bTAtNGgtMlY3aDJ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdGlmaWNhdGlvbkltcG9ydGFudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMDEgMjEuMDFjMCAxLjEuODkgMS45OSAxLjk5IDEuOTlzMS45OS0uODkgMS45OS0xLjk5aC0zLjk4ek0xMiA2YzIuNzYgMCA1IDIuMjQgNSA1djdIN3YtN2MwLTIuNzYgMi4yNC01IDUtNXptMC00LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41djEuMTdDNy4zNiA0Ljg1IDUgNy42NSA1IDExdjZsLTIgMnYxaDE4di0xbC0yLTJ2LTZjMC0zLjM1LTIuMzYtNi4xNS01LjUtNi44M1YzYzAtLjgzLS42Ny0xLjUtMS41LTEuNXpNMTEgOGgydjRoLTJ6bTAgNmgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYXJuaW5nQW1iZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDUuOTkgMTkuNTMgMTlINC40N0wxMiA1Ljk5TTEyIDIgMSAyMWgyMkwxMiAyem0xIDE0aC0ydjJoMnYtMnptMC02aC0ydjRoMnYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdhcm5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMjFoMjJMMTIgMiAxIDIxem0xMi0zaC0ydi0yaDJ2MnptMC00aC0ydi00aDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTEwSyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDZ2MTBINXYtOC41aDFWMTVoMS41VjlINVY1aDE0djR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgMTEuMjVWOUgxNHY2aDEuNXYtMi4yNUwxNy4yNSAxNUgxOWwtMi4yNS0zTDE5IDloLTEuNzV6TTkuNSAxNUgxMmMuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xSDkuNWMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bS41LTQuNWgxLjV2M0gxMHYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTFrUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDguNWgtMS41VjEwaC0xdjEuNUgxNXYxaDEuNVYxNGgxdi0xLjVIMTlWMTlINVY1aDE0djYuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE1SDlWOUg2djEuNWgxLjV6TTEyIDEyLjc1IDEzLjc1IDE1aDEuNzVsLTIuMjUtMyAyLjI1LTNoLTEuNzVMMTIgMTEuMjVWOWgtMS41djZIMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxSyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDE1SDEwVjlIN3YxLjVoMS41ek0xMy41IDEyLjc1IDE1LjI1IDE1SDE3bC0yLjI1LTNMMTcgOWgtMS43NWwtMS43NSAyLjI1VjlIMTJ2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUya1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCA4LjVoLTEuNVYxMGgtMXYxLjVIMTV2MWgxLjVWMTRoMXYtMS41SDE5VjE5SDVWNWgxNHY2LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEzLjVINy41di0xSDljLjU1IDAgMS0uNDUgMS0xVjEwYzAtLjU1LS40NS0xLTEtMUg2djEuNWgyLjV2MUg3Yy0uNTUgMC0xIC40NS0xIDFWMTVoNHYtMS41ek0xMi41IDEyLjc1IDE0LjI1IDE1SDE2bC0yLjI1LTNMMTYgOWgtMS43NWwtMS43NSAyLjI1VjlIMTF2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUySyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTMuNUg4di0xaDJjLjU1IDAgMS0uNDUgMS0xVjEwYzAtLjU1LS40NS0xLTEtMUg2LjV2MS41aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxVjE1SDExdi0xLjV6TTE0LjUgMTIuNzUgMTYuMjUgMTVIMThsLTIuMjUtM0wxOCA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxM3Y2aDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTNrUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDguNWgtMS41VjEwaC0xdjEuNUgxNXYxaDEuNVYxNGgxdi0xLjVIMTlWMTlINVY1aDE0djYuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTR2LTRjMC0uNTUtLjQ1LTEtMS0xSDUuNXYxLjVoM3YxaC0ydjFoMnYxaC0zVjE1SDljLjU1IDAgMS0uNDUgMS0xek0xMi41IDEyLjc1IDE0LjI1IDE1SDE2bC0yLjI1LTNMMTYgOWgtMS43NWwtMS43NSAyLjI1VjlIMTF2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUzSyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTR2LTRjMC0uNTUtLjQ1LTEtMS0xSDYuNXYxLjVoM3YxaC0ydjFoMnYxaC0zVjE1SDEwYy41NSAwIDEtLjQ1IDEtMXpNMTQuNSAxMi43NSAxNi4yNSAxNUgxOGwtMi4yNS0zTDE4IDloLTEuNzVsLTEuNzUgMi4yNVY5SDEzdjZoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lNGtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgOC41aC0xLjVWMTBoLTF2MS41SDE1djFoMS41VjE0aDF2LTEuNUgxOVYxOUg1VjVoMTR2Ni41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgMTVIMTB2LTEuNWgxVjEyaC0xVjlIOC41djNIN1Y5SDUuNXY0LjVoM3pNMTMgMTIuNzUgMTQuNzUgMTVoMS43NWwtMi4yNS0zIDIuMjUtM2gtMS43NUwxMyAxMS4yNVY5aC0xLjV2NkgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTRLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWEyIDIgMCAwIDAtMi0yem0wIDE2SDVWNWgxNHYxNHptLTkuNS00SDExdi0xLjQ5aDFWMTJoLTFWOUg5LjV2M0g4VjlINi41djQuNWgzem04LjcgMC0yLTMgMi0zaC0xLjdsLTIgMyAyIDN6bS0zLjctM1Y5SDEzdjZoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lNUcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDEzSDE5djJoLTVWOWg3YzAtMS4xLS45LTItMi0yaC01Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoNWMxLjEgMCAyLS45IDItMnYtNGgtNC41djJ6TTMgMTNoNXYySDN2Mmg1YzEuMSAwIDItLjkgMi0ydi0yYzAtMS4xLS45LTItMi0ySDVWOWg1VjdIM3Y2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lNWtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgOC41aC0xLjVWMTBoLTF2MS41SDE1djFoMS41VjE0aDF2LTEuNUgxOVYxOUg1VjVoMTR2Ni41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNHYtMS41YzAtLjU1LS40NS0xLTEtMUg3LjV2LTFIMTBWOUg2djMuNWgyLjV2MUg2VjE1aDNjLjU1IDAgMS0uNDUgMS0xek0xMi41IDEyLjc1IDE0LjI1IDE1SDE2bC0yLjI1LTNMMTYgOWgtMS43NWwtMS43NSAyLjI1VjlIMTF2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU1SyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTR2LTEuNWMwLS41NS0uNDUtMS0xLTFIOHYtMWgzVjlINi41djMuNWgzdjFoLTNWMTVIMTBjLjU1IDAgMS0uNDUgMS0xek0xNC41IDEyLjc1IDE2LjI1IDE1SDE4bC0yLjI1LTNMMTggOWgtMS43NWwtMS43NSAyLjI1VjlIMTN2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU2a1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCA4LjVoLTEuNVYxMGgtMXYxLjVIMTV2MWgxLjVWMTRoMXYtMS41SDE5VjE5SDVWNWgxNHY2LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgMTIuNzUgMTQuMjUgMTVIMTZsLTIuMjUtM0wxNiA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxMXY2aDEuNXpNNyAxNWgyYy41NSAwIDEtLjQ1IDEtMXYtMS41YzAtLjU1LS40NS0xLTEtMUg3LjV2LTFIMTBWOUg3Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXptLjUtMi41aDFWMTRoLTF2LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTZLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDEyLjc1IDE2LjI1IDE1SDE4bC0yLjI1LTNMMTggOWgtMS43NWwtMS43NSAyLjI1VjlIMTN2NmgxLjV6TTcuNSAxNUgxMGMuNTUgMCAxLS40NSAxLTF2LTEuNWMwLS41NS0uNDUtMS0xLTFIOHYtMWgzVjlINy41Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXptLjUtMi41aDEuNVYxNEg4di0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU3a1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCA4LjVoLTEuNVYxMGgtMXYxLjVIMTV2MWgxLjVWMTRoMXYtMS41SDE5VjE5SDVWNWgxNHY2LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNzUgMTVIOC41bDEuNDYtNC43MUMxMC4xNSA5LjY1IDkuNjcgOSA5IDlINS41djEuNWgyLjYzTDYuNzUgMTV6TTEyLjUgMTIuNzUgMTQuMjUgMTVIMTZsLTIuMjUtM0wxNiA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxMXY2aDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTdLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljc1IDE1SDkuNWwxLjQ2LTQuNzFDMTEuMTUgOS42NSAxMC42NyA5IDEwIDlINi41djEuNWgyLjYzTDcuNzUgMTV6TTE0LjUgMTIuNzUgMTYuMjUgMTVIMThsLTIuMjUtM0wxOCA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxM3Y2aDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZThrUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTVoMmMuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxem0uNS01aDF2MS41aC0xVjEwem0wIDIuNWgxVjE0aC0xdi0xLjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDguNWgtMS41VjEwaC0xdjEuNUgxNXYxaDEuNVYxNGgxdi0xLjVIMTlWMTlINVY1aDE0djYuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSAxMi43NSAxNC4yNSAxNUgxNmwtMi4yNS0zTDE2IDloLTEuNzVsLTEuNzUgMi4yNVY5SDExdjZoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lOEsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTVIMTBjLjU1IDAgMS0uNDUgMS0xdi00YzAtLjU1LS40NS0xLTEtMUg3LjVjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxem0uNS01aDEuNXYxLjVIOFYxMHptMCAyLjVoMS41VjE0SDh2LTEuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDEyLjc1IDE2LjI1IDE1SDE4bC0yLjI1LTNMMTggOWgtMS43NWwtMS43NSAyLjI1VjlIMTN2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU5a1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNHYtNGMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjEuNWMwIC41NS40NSAxIDEgMWgxLjV2MUg2VjE1aDNjLjU1IDAgMS0uNDUgMS0xem0tMS41LTIuNWgtMVYxMGgxdjEuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgOC41aC0xLjVWMTBoLTF2MS41SDE1djFoMS41VjE0aDF2LTEuNUgxOVYxOUg1VjVoMTR2Ni41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDEyLjc1IDE0LjI1IDE1SDE2bC0yLjI1LTNMMTYgOWgtMS43NWwtMS43NSAyLjI1VjlIMTF2NmgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU5SyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE0di00YzAtLjU1LS40NS0xLTEtMUg3LjVjLS41NSAwLTEgLjQ1LTEgMXYxLjVjMCAuNTUuNDUgMSAxIDFoMnYxaC0zVjE1SDEwYy41NSAwIDEtLjQ1IDEtMXptLTEuNS0yLjVIOFYxMGgxLjV2MS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTIuNzUgMTYuMjUgMTVIMThsLTIuMjUtM0wxOCA5aC0xLjc1bC0xLjc1IDIuMjVWOUgxM3Y2aDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZFRvUXVldWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE1aDJ2LTNoM3YtMmgtM1Y3aC0ydjNIOHYyaDN6TTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMi0uOSAyLTJWNWEyIDIgMCAwIDAtMi0yem0wIDE0SDNWNWgxOHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpcnBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119XX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMjJoMTJsLTYtNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDR2LTJIM1Y1aDE4djEyaC00djJoNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWxidW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0wLTEyLjVjLTIuNDkgMC00LjUgMi4wMS00LjUgNC41czIuMDEgNC41IDQuNSA0LjUgNC41LTIuMDEgNC41LTQuNS0yLjAxLTQuNS00LjUtNC41em0wIDUuNWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJ0VHJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEzaC04di0yaDh2MnptMC02aC04djJoOFY3em0tOCAxMGg4di0yaC04djJ6bS0yLTh2NmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJoNmMxLjEgMCAyIC45IDIgMnptLTEuNSA2LTIuMjUtMy0xLjc1IDIuMjYtMS4yNS0xLjUxTDMuNSAxNWg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXVkaW9GaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjhsLTYtNnpNNiAyMFY0aDd2NWg1djExSDZ6bTEwLTloLTR2My44OGEyLjI0NyAyLjI0NyAwIDAgMC0zLjUgMS44N2MwIDEuMjQgMS4wMSAyLjI1IDIuMjUgMi4yNVMxMyAxNy45OSAxMyAxNi43NVYxM2gzdi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXZUaW1lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTdjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xLS40NS0xLTEtMS0xIC40NS0xIDF6bTAtMTR2NGgyVjUuMDhjMy4zOS40OSA2IDMuMzkgNiA2LjkyIDAgMy44Ny0zLjEzIDctNyA3cy03LTMuMTMtNy03YzAtMS42OC41OS0zLjIyIDEuNTgtNC40MkwxMiAxM2wxLjQxLTEuNDEtNi44LTYuOHYuMDJDNC40MiA2LjQ1IDMgOS4wNSAzIDEyYzAgNC45NyA0LjAyIDkgOSA5YTkgOSAwIDAgMCAwLTE4aC0xem03IDljMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDEgLjQ1IDEgMSAxIDEtLjQ1IDEtMXpNNiAxMmMwIC41NS40NSAxIDEgMXMxLS40NSAxLTEtLjQ1LTEtMS0xLTEgLjQ1LTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyYW5kaW5nV2F0ZXJtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkgzVjVoMTh2MTR6bS0xMC03aDl2NmgtOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGxUb0FjdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIM1Y1aDE4djE0ek01IDE1aDE0djNINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3NlZENhcHRpb25EaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEwYzAtLjU1LjQ1LTEgMS0xaDNjLjU1IDAgMSAuNDUgMSAxdjFoLTEuNXYtLjVoLTJ2MUwxMyAxMHptMy41IDMuNSAxLjIxIDEuMjFjLjE4LS4xOS4yOS0uNDQuMjktLjcxdi0xaC0xLjV2LjV6TTguODMgNkgxOXYxMC4xN2wxLjk4IDEuOThjMC0uMDUuMDItLjEuMDItLjE2VjZjMC0xLjEtLjktMi0yLTJINi44M2wyIDJ6bTEwLjk1IDE2LjYxTDE3LjE3IDIwSDVhMiAyIDAgMCAxLTItMlY2YzAtLjA1LjAyLS4xLjAyLS4xNUwxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6TTcuNSAxMy41aDJWMTNoLjY3bC0yLjUtMi41SDcuNXYzem03LjY3IDQuNUwxMSAxMy44M1YxNGMwIC41NS0uNDUgMS0xIDFIN2MtLjU1IDAtMS0uNDUtMS0xdi00YzAtLjMyLjE2LS41OS40LS43OEw1IDcuODNWMThoMTAuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbG9zZWRDYXB0aW9uT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNEg1YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDVWNmgxNHYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNWgzYy41NSAwIDEtLjQ1IDEtMXYtMUg5LjV2LjVoLTJ2LTNoMnYuNUgxMXYtMWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6TTE0IDE1aDNjLjU1IDAgMS0uNDUgMS0xdi0xaC0xLjV2LjVoLTJ2LTNoMnYuNUgxOHYtMWMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xvc2VkQ2FwdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNEg1YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDVWNmgxNHYxMnpNNyAxNWgzYy41NSAwIDEtLjQ1IDEtMXYtMUg5LjV2LjVoLTJ2LTNoMnYuNUgxMXYtMWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bTcgMGgzYy41NSAwIDEtLjQ1IDEtMXYtMWgtMS41di41aC0ydi0zaDJ2LjVIMTh2LTFjMC0uNTUtLjQ1LTEtMS0xaC0zYy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRyb2xDYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNTQgOC40NiAyIDEybDMuNTQgMy41NCAxLjc2LTEuNzdMNS41NCAxMmwxLjc2LTEuNzd6bTYuNDYgMTAtMS43Ny0xLjc2LTEuNzcgMS43NkwxMiAyMmwzLjU0LTMuNTQtMS43Ny0xLjc2em02LjQ2LTEwLTEuNzYgMS43N0wxOC40NiAxMmwtMS43NiAxLjc3IDEuNzYgMS43N0wyMiAxMnptLTEwLTIuOTIgMS43NyAxLjc2TDEyIDUuNTRsMS43NyAxLjc2IDEuNzctMS43NkwxMiAyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjNcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVxdWFsaXplciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMjBoNFY0aC00djE2em0tNiAwaDR2LThINHY4ek0xNiA5djExaDRWOWgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV4cGxpY2l0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6bS00LTRoLTR2LTJoNHYtMmgtNFY5aDRWN0g5djEwaDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGYXN0Rm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgOS44NiAxOC4wMyAxMiAxNSAxNC4xNFY5Ljg2bS05IDBMOS4wMyAxMiA2IDE0LjE0VjkuODZNMTMgNnYxMmw4LjUtNkwxMyA2ek00IDZ2MTJsOC41LTZMNCA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFzdFJld2luZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOS44NnY0LjI4TDE0Ljk3IDEyIDE4IDkuODZtLTkgMHY0LjI4TDUuOTcgMTIgOSA5Ljg2TTIwIDZsLTguNSA2IDguNSA2VjZ6bS05IDAtOC41IDYgOC41IDZWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZlYXR1cmVkUGxheUxpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxOHYxNHpNNSAxMGg5djJINXptMC0zaDl2Mkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmVhdHVyZWRWaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIM1Y1aDE4djE0ek00IDZoOXY3SDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWJlckR2ciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEuODcgMTIuNDMtMS0zLjQzaC0xLjVsMS43NSA2aDEuNWwxLjc1LTZoLTEuNXpNMjEgMTEuNXYtMWMwLS44NS0uNjUtMS41LTEuNS0xLjVIMTZ2NmgxLjV2LTJoMS4xNWwuODUgMkgyMWwtLjktMi4xYy41LS4yNS45LS44LjktMS40em0tMS41IDBoLTJ2LTFoMnYxek02LjUgOUgzdjZoMy41Yy44NSAwIDEuNS0uNjUgMS41LTEuNXYtM0M4IDkuNjUgNy4zNSA5IDYuNSA5em0wIDQuNWgtMnYtM2gydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWJlck1hbnVhbFJlY29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNi02LTIuNjktNi02IDIuNjktNiA2LTZtMC0yYy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LTgtMy41OC04LTgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpYmVyTmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjI1IDEyLjUgNC43NSA5SDMuNXY2aDEuMjV2LTMuNUw3LjMgMTVoMS4yVjlINy4yNXpNOS41IDE1aDR2LTEuMjVIMTF2LTEuMTFoMi41di0xLjI2SDExdi0xLjEyaDIuNVY5aC00em05Ljc1LTZ2NC41aC0xLjEyVjkuOTloLTEuMjV2My41MmgtMS4xM1Y5SDE0LjV2NWMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMVY5aC0xLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmliZXJQaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE1aDEuNVY5SDExdjZ6bTcuNzUtNnYzLjVMMTYuMjUgOUgxNXY2aDEuMjV2LTMuNUwxOC44IDE1SDIwVjloLTEuMjV6TTcuNSA5SDR2NmgxLjV2LTJoMmMuODUgMCAxLjUtLjY1IDEuNS0xLjV2LTFDOSA5LjY1IDguMzUgOSA3LjUgOXptMCAyLjVoLTJ2LTFoMnYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmliZXJTbWFydFJlY29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LTgtMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6bTgtMTMuNzR2Mi4wOWE1Ljk5IDUuOTkgMCAwIDEgMCAxMS4zdjIuMDljMy40NS0uODkgNi00LjAxIDYtNy43NCAwLTMuNzMtMi41NS02Ljg1LTYtNy43NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcndhcmQxMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTYgMi42OS02IDYtNnY0bDUtNS01LTV2NGMtNC40MiAwLTggMy41OC04IDhzMy41OCA4IDggOCA4LTMuNTggOC04aC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC45IDE2di00LjI3aC0uMDlsLTEuNzcuNjN2LjY5bDEuMDEtLjMxVjE2ek0xNC4zMiAxMS43OGMtLjE4LS4wNy0uMzctLjEtLjU5LS4xcy0uNDEuMDMtLjU5LjEtLjMzLjE4LS40NS4zMy0uMjMuMzQtLjI5LjU3LS4xLjUtLjEuODJ2Ljc0YzAgLjMyLjA0LjYuMTEuODJzLjE3LjQyLjMuNTcuMjguMjYuNDYuMzMuMzcuMS41OS4xLjQxLS4wMy41OS0uMS4zMy0uMTguNDUtLjMzLjIyLS4zNC4yOS0uNTcuMS0uNS4xLS44MnYtLjc0YzAtLjMyLS4wNC0uNi0uMTEtLjgycy0uMTctLjQyLS4zLS41Ny0uMjktLjI2LS40Ni0uMzN6bS4wMSAyLjU3YzAgLjE5LS4wMS4zNS0uMDQuNDhzLS4wNi4yNC0uMTEuMzItLjExLjE0LS4xOS4xNy0uMTYuMDUtLjI1LjA1LS4xOC0uMDItLjI1LS4wNS0uMTQtLjA5LS4xOS0uMTctLjA5LS4xOS0uMTItLjMyLS4wNC0uMjktLjA0LS40OHYtLjk3YzAtLjE5LjAxLS4zNS4wNC0uNDhzLjA2LS4yMy4xMi0uMzEuMTEtLjE0LjE5LS4xNy4xNi0uMDUuMjUtLjA1LjE4LjAyLjI1LjA1LjE0LjA5LjE5LjE3LjA5LjE4LjEyLjMxLjA0LjI5LjA0LjQ4di45N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcndhcmQzMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTYgMi42OS02IDYtNnY0bDUtNS01LTV2NGMtNC40MiAwLTggMy41OC04IDhzMy41OCA4IDggOCA4LTMuNTggOC04aC0yem0tNy40NiAyLjIyYy0uMDYuMDUtLjEyLjA5LS4yLjEycy0uMTcuMDQtLjI3LjA0YS42OS42OSAwIDAgMS0uNDUtLjE1Yy0uMDYtLjA1LS4xLS4xLS4xMy0uMTdzLS4wNS0uMTQtLjA1LS4yMmgtLjg1YzAgLjIxLjA0LjM5LjEyLjU1cy4xOS4yOC4zMy4zOC4yOS4xOC40Ni4yMy4zNS4wNy41My4wN2MuMjEgMCAuNDEtLjAzLjYtLjA4cy4zNC0uMTQuNDgtLjI0LjI0LS4yNC4zMi0uMzkuMTItLjMzLjEyLS41M2MwLS4yMy0uMDYtLjQ0LS4xOC0uNjFzLS4zLS4zLS41NC0uMzljLjEtLjA1LjItLjEuMjgtLjE3cy4xNS0uMTQuMi0uMjIuMS0uMTYuMTMtLjI1LjA0LS4xOC4wNC0uMjdjMC0uMi0uMDQtLjM3LS4xMS0uNTNzLS4xNy0uMjgtLjMtLjM4LS4yOC0uMTgtLjQ2LS4yMy0uMzctLjA4LS41OS0uMDhjLS4xOSAwLS4zOC4wMy0uNTQuMDhzLS4zMi4xMy0uNDQuMjMtLjIzLjIyLS4zLjM3LS4xMS4zLS4xMS40OGguODVhLjQ1NS40NTUgMCAwIDEgLjE3LS4zNWMuMDUtLjA0LjExLS4wNy4xOC0uMXMuMTQtLjAzLjIyLS4wM2MuMSAwIC4xOC4wMS4yNS4wNHMuMTMuMDYuMTguMTEuMDguMTEuMTEuMTcuMDQuMTQuMDQuMjJjMCAuMTgtLjA1LjMyLS4xNi40M3MtLjI2LjE2LS40OC4xNmgtLjQzdi42NmguNDVjLjExIDAgLjIuMDEuMjkuMDRzLjE2LjA2LjIyLjExLjExLjEyLjE0LjIuMDUuMTguMDUuMjljMCAuMDktLjAxLjE3LS4wNC4yNHMtLjA4LjExLS4xMy4xN3ptMy45LTMuNDRjLS4xOC0uMDctLjM3LS4xLS41OS0uMXMtLjQxLjAzLS41OS4xLS4zMy4xOC0uNDUuMzMtLjIzLjM0LS4yOS41Ny0uMS41LS4xLjgydi43NGMwIC4zMi4wNC42LjExLjgycy4xNy40Mi4zLjU3LjI4LjI2LjQ2LjMzLjM3LjEuNTkuMS40MS0uMDMuNTktLjEuMzMtLjE4LjQ1LS4zMy4yMi0uMzQuMjktLjU3LjEtLjUuMS0uODJ2LS43NGMwLS4zMi0uMDQtLjYtLjExLS44MnMtLjE3LS40Mi0uMy0uNTctLjI4LS4yNi0uNDYtLjMzem0uMDEgMi41N2MwIC4xOS0uMDEuMzUtLjA0LjQ4cy0uMDYuMjQtLjExLjMyLS4xMS4xNC0uMTkuMTctLjE2LjA1LS4yNS4wNS0uMTgtLjAyLS4yNS0uMDUtLjE0LS4wOS0uMTktLjE3LS4wOS0uMTktLjEyLS4zMi0uMDQtLjI5LS4wNC0uNDh2LS45N2MwLS4xOS4wMS0uMzUuMDQtLjQ4cy4wNi0uMjMuMTItLjMxLjExLS4xNC4xOS0uMTcuMTYtLjA1LjI1LS4wNS4xOC4wMi4yNS4wNS4xNC4wOS4xOS4xNy4wOS4xOC4xMi4zMS4wNC4yOS4wNC40OHYuOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3J3YXJkNSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuOTUgMTNjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTYgMi42OS02IDYtNnY0bDUtNS01LTV2NGMtNC40MiAwLTggMy41OC04IDhzMy41OCA4IDggOCA4LTMuNTggOC04aC0yem0tNS41MiAyLjE1Yy0uMDUuMDctLjExLjEzLS4xOC4xN3MtLjE3LjA2LS4yNy4wNmMtLjE3IDAtLjMxLS4wNS0uNDItLjE1cy0uMTctLjI0LS4xOS0uNDFoLS44NGMuMDEuMi4wNS4zNy4xMy41M3MuMTkuMjguMzIuMzkuMjkuMTkuNDYuMjQuMzUuMDguNTMuMDhjLjI0IDAgLjQ2LS4wNC42NC0uMTJzLjMzLS4xOC40NS0uMzEuMjEtLjI4LjI3LS40NS4wOS0uMzUuMDktLjU0YzAtLjIyLS4wMy0uNDMtLjA5LS42cy0uMTQtLjMzLS4yNS0uNDUtLjI1LS4yMi0uNDEtLjI4LS4zNC0uMS0uNTUtLjFjLS4wNyAwLS4xNC4wMS0uMi4wMnMtLjEzLjAyLS4xOC4wNC0uMS4wMy0uMTUuMDUtLjA4LjA0LS4xMS4wNWwuMTEtLjkyaDEuN3YtLjcxSDEwLjlsLS4yNSAyLjE3LjY3LjE3Yy4wMy0uMDMuMDYtLjA2LjEtLjA5cy4wNy0uMDUuMTItLjA3LjEtLjA0LjE1LS4wNS4xMy0uMDIuMi0uMDJjLjEyIDAgLjIyLjAyLjMuMDVzLjE2LjA5LjIxLjE1LjEuMTQuMTMuMjQuMDQuMTkuMDQuMzEtLjAxLjIyLS4wMy4zMS0uMDYuMTctLjExLjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR2FtZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDR2Mi42N2wtMSAxLTEtMVY0aDJtNyA3djJoLTIuNjdsLTEtMSAxLTFIMjBNNi42NyAxMWwxIDEtMSAxSDR2LTJoMi42N00xMiAxNi4zM2wxIDFWMjBoLTJ2LTIuNjdsMS0xTTE1IDJIOXY1LjVsMyAzIDMtM1Yyem03IDdoLTUuNWwtMyAzIDMgM0gyMlY5ek03LjUgOUgydjZoNS41bDMtMy0zLTN6bTQuNSA0LjUtMyAzVjIyaDZ2LTUuNWwtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6TTcuNSAxM2gydjJIMTFWOUg5LjV2Mi41aC0yVjlINnY2aDEuNXpNMTggMTR2LTRjMC0uNTUtLjQ1LTEtMS0xaC00djZoNGMuNTUgMCAxLS40NSAxLTF6bS0xLjUtLjVoLTJ2LTNoMnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGVhcmluZ0Rpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4wMyAzLjJDNy4xNSAyLjQ0IDguNTEgMiAxMCAyYzMuOTMgMCA3IDMuMDcgNyA3IDAgMS4yNi0uMzggMi42NS0xLjA3IDMuOS0uMDIuMDQtLjA1LjA4LS4wOC4xM2wtMS40OC0xLjQ4Yy40LS44Ni42My0xLjc1LjYzLTIuNTUgMC0yLjgtMi4yLTUtNS01LS45MiAwLTEuNzYuMjYtMi41LjY3TDYuMDMgMy4yem0xMS4xOCAxMS4xOCAxLjQzIDEuNDNDMjAuMTEgMTMuOTMgMjEgMTEuNTcgMjEgOWMwLTMuMDQtMS4yMy01Ljc5LTMuMjItNy43OGwtMS40MiAxLjQyQTguOTM3IDguOTM3IDAgMCAxIDE5IDljMCAyLjAyLS42NyAzLjg4LTEuNzkgNS4zOHpNMTAgNi41Yy0uMjEgMC0uNC4wMy0uNTkuMDhsMy4wMSAzLjAxYy4wNS0uMTkuMDgtLjM4LjA4LS41OUEyLjUgMi41IDAgMCAwIDEwIDYuNXptMTEuMTkgMTQuNjlMMi44MSAyLjgxIDEuMzkgNC4yMmwyLjEzIDIuMTNDMy4xOSA3LjE2IDMgOC4wNSAzIDloMmMwLS4zNi4wNS0uNzEuMTItMS4wNWw2LjYxIDYuNjFjLS44OC42OC0xLjc4IDEuNDEtMi4yNyAyLjktLjUgMS41LTEgMi4wMS0xLjcxIDIuMzgtLjE5LjEtLjQ2LjE2LS43NS4xNi0xLjEgMC0yLS45LTItMkgzYTMuOTk5IDMuOTk5IDAgMCAwIDUuNjQgMy42NWMxLjM2LS43MSAyLjEzLTEuNzMgMi43My0zLjU1LjMyLS45OC45LTEuNDMgMS43MS0yLjA1LjAzLS4wMi4wNS0uMDQuMDgtLjA2bDYuNjIgNi42MiAxLjQxLTEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWFyaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAyMGMtLjI5IDAtLjU2LS4wNi0uNzYtLjE1LS43MS0uMzctMS4yMS0uODgtMS43MS0yLjM4LS41MS0xLjU2LTEuNDctMi4yOS0yLjM5LTMtLjc5LS42MS0xLjYxLTEuMjQtMi4zMi0yLjUzQzkuMjkgMTAuOTggOSA5LjkzIDkgOWMwLTIuOCAyLjItNSA1LTVzNSAyLjIgNSA1aDJjMC0zLjkzLTMuMDctNy03LTdTNyA1LjA3IDcgOWMwIDEuMjYuMzggMi42NSAxLjA3IDMuOS45MSAxLjY1IDEuOTggMi40OCAyLjg1IDMuMTUuODEuNjIgMS4zOSAxLjA3IDEuNzEgMi4wNS42IDEuODIgMS4zNyAyLjg0IDIuNzMgMy41NUEzLjk5OSAzLjk5OSAwIDAgMCAyMSAxOGgtMmMwIDEuMS0uOSAyLTIgMnpNNy42NCAyLjY0IDYuMjIgMS4yMkM0LjIzIDMuMjEgMyA1Ljk2IDMgOXMxLjIzIDUuNzkgMy4yMiA3Ljc4bDEuNDEtMS40MUM2LjAxIDEzLjc0IDUgMTEuNDkgNSA5czEuMDEtNC43NCAyLjY0LTYuMzZ6TTExLjUgOWEyLjUgMi41IDAgMCAwIDUgMCAyLjUgMi41IDAgMCAwLTUgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhpZ2hRdWFsaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINVY2aDE0djEyek03LjUgMTNoMnYySDExVjlIOS41djIuNWgtMlY5SDZ2NmgxLjV6bTYuNSAyaC43NXYxLjVoMS41VjE1SDE3Yy41NSAwIDEtLjQ1IDEtMXYtNGMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxem0uNS00LjVoMnYzaC0ydi0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW50ZXJwcmV0ZXJNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSAxNi41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjV2LTIuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVYxNWMwIC44My0uNjcgMS41LTEuNSAxLjV6TTIwIDIwaDF2LTEuNTRjMS42OS0uMjQgMy0xLjcgMy0zLjQ2aC0xYTIuNSAyLjUgMCAwIDEtNSAwaC0xYzAgMS43NiAxLjMxIDMuMjIgMyAzLjQ2VjIwek05IDEyYy0yLjIxIDAtNC0xLjc5LTQtNGEzLjk5OSAzLjk5OSAwIDAgMSA1LjM0LTMuNzdBNS45MzggNS45MzggMCAwIDAgOSA4YzAgMS40My41IDIuNzQgMS4zNCAzLjc3LS40Mi4xNS0uODcuMjMtMS4zNC4yM3ptLTEuODkgMS4xM0E0Ljk2NSA0Ljk2NSAwIDAgMCA1IDE3LjIyVjIwSDF2LTIuNzhjMC0xLjEyLjYxLTIuMTUgMS42MS0yLjY2IDEuMjQtLjY0IDIuNzYtMS4xOSA0LjUtMS40M3pNMTEgOGMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0LTEuNzkgNC00IDQtNC0xLjc5LTQtNHptMiAwYzAgMS4xLjkgMiAyIDJzMi0uOSAyLTItLjktMi0yLTItMiAuOS0yIDJ6bTIgN2MtMi4zNyAwLTQuMjkuNzMtNS40OCAxLjM0LS4zMi4xNi0uNTIuNS0uNTIuODhWMThoNy4xN2MuNS44NiAxLjI1IDEuNTYgMi4xNSAySDd2LTIuNzhjMC0xLjEyLjYxLTIuMTUgMS42MS0yLjY2QzEwLjI5IDEzLjcgMTIuNDcgMTMgMTUgMTNjLjM5IDAgLjc3LjAyIDEuMTQuMDUtLjMzLjU5LS41NSAxLjI2LS42MiAxLjk2LS4xNy0uMDEtLjM0LS4wMS0uNTItLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGlicmFyeUFkZENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0djEySDhWNGgxMm0wLTJIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNy41MyAxMkw5IDEwLjVsMS40LTEuNDEgMi4wNyAyLjA4TDE3LjYgNiAxOSA3LjQxIDEyLjQ3IDE0ek00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpYnJhcnlBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg4VjRoMTJ2MTJ6bS03LTJoMnYtM2gzVjloLTNWNmgtMnYzaC0zdjJoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpYnJhcnlCb29rcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6bTE2LTRIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDhWNGgxMnYxMnpNMTAgOWg4djJoLTh6bTAgM2g0djJoLTR6bTAtNmg4djJoLTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaWJyYXJ5TXVzaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDhWNGgxMnYxMnptLTcuNS0xYTIuNSAyLjUgMCAwIDAgMi41LTIuNVY3aDNWNWgtNHY1LjUxYy0uNDItLjMyLS45My0uNTEtMS41LS41MWEyLjUgMi41IDAgMCAwIDAgNXpNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb29wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0VjFMOCA1bDQgNFY2YzMuMzEgMCA2IDIuNjkgNiA2IDAgMS4wMS0uMjUgMS45Ny0uNyAyLjhsMS40NiAxLjQ2QTcuOTMgNy45MyAwIDAgMCAyMCAxMmMwLTQuNDItMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTYgMC0xLjAxLjI1LTEuOTcuNy0yLjhMNS4yNCA3Ljc0QTcuOTMgNy45MyAwIDAgMCA0IDEyYzAgNC40MiAzLjU4IDggOCA4djNsNC00LTQtNHYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTHlyaWNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA2aDd2Mkg2ek02IDEyaDR2Mkg2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMS45N1YxNkg2bC0yIDJWNGgxMXYyLjAzYy41Mi0uNjkgMS4yLTEuMjUgMi0xLjZWNGMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDljMS4xIDAgMi0uOSAyLTJ2LTIuNDJhNS4xNiA1LjE2IDAgMCAxLTItMS42MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA5aDd2Mkg2ek0yMCA2LjE4Yy0uMzEtLjExLS42NS0uMTgtMS0uMTgtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zVjNoMlYxaC00djUuMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNaWNOb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNGMxLjY2IDAgMy0xLjM0IDMtM1Y1YzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDV2NmMwIDEuNjYgMS4zNCAzIDMgM3ptLTEtOWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NmMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMVY1em02IDZjMCAyLjc2LTIuMjQgNS01IDVzLTUtMi4yNC01LTVINWMwIDMuNTMgMi42MSA2LjQzIDYgNi45MlYyMWgydi0zLjA4YzMuMzktLjQ5IDYtMy4zOSA2LTYuOTJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNaWNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjggNC45YzAtLjY2LjU0LTEuMiAxLjItMS4yczEuMi41NCAxLjIgMS4ybC0uMDEgMy45MUwxNSAxMC42VjVjMC0xLjY2LTEuMzQtMy0zLTMtMS41NCAwLTIuNzkgMS4xNi0yLjk2IDIuNjVsMS43NiAxLjc2VjQuOXpNMTkgMTFoLTEuN2MwIC41OC0uMSAxLjEzLS4yNyAxLjY0bDEuMjcgMS4yN2MuNDQtLjg4LjctMS44Ny43LTIuOTF6TTQuNDEgMi44NiAzIDQuMjdsNiA2VjExYzAgMS42NiAxLjM0IDMgMyAzIC4yMyAwIC40NC0uMDMuNjUtLjA4bDEuNjYgMS42NmMtLjcxLjMzLTEuNS41Mi0yLjMxLjUyLTIuNzYgMC01LjMtMi4xLTUuMy01LjFINWMwIDMuNDEgMi43MiA2LjIzIDYgNi43MlYyMWgydi0zLjI4YTcuMTMgNy4xMyAwIDAgMCAyLjU1LS45bDQuMiA0LjIgMS40MS0xLjQxTDQuNDEgMi44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1pYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTRjMS42NiAwIDMtMS4zNCAzLTNWNWMwLTEuNjYtMS4zNC0zLTMtM1M5IDMuMzQgOSA1djZjMCAxLjY2IDEuMzQgMyAzIDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDExYzAgMi43Ni0yLjI0IDUtNSA1cy01LTIuMjQtNS01SDVjMCAzLjUzIDIuNjEgNi40MyA2IDYuOTJWMjFoMnYtMy4wOGMzLjM5LS40OSA2LTMuMzkgNi02LjkyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWlzc2VkVmlkZW9DYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMC41VjdjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMXYxMGMwIC41NS40NSAxIDEgMWgxMmMuNTUgMCAxLS40NSAxLTF2LTMuNWw0IDR2LTExbC00IDR6bS0yLTEuODNWMTZINVY4aDEwdi42N3ptLTcuODkgMi40NEwxMSAxNWwzLjc3LTMuNzktLjc4LS43OUwxMSAxMy40M2wtMy4xMS0zLjFoMi41NVY5LjIySDZ2NC40NGgxLjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW92aWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNi40NyA1Ljc2IDEwSDIwdjhINFY2LjQ3TTIyIDRoLTRsMiA0aC0zbC0yLTRoLTJsMiA0aC0zbC0yLTRIOGwyIDRIN0w1IDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU11c2ljVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxOHYxNHpNOCAxNWMwLTEuNjYgMS4zNC0zIDMtMyAuMzUgMCAuNjkuMDcgMSAuMThWNmg1djJoLTN2Ny4wM0EzLjAwMyAzLjAwMyAwIDAgMSAxMSAxOGMtMS42NiAwLTMtMS4zNC0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOZXdSZWxlYXNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjMgMTItMi40NC0yLjc4LjM0LTMuNjgtMy42MS0uODItMS44OS0zLjE4TDEyIDMgOC42IDEuNTQgNi43MSA0LjcybC0zLjYxLjgxLjM0IDMuNjhMMSAxMmwyLjQ0IDIuNzgtLjM0IDMuNjkgMy42MS44MiAxLjg5IDMuMThMMTIgMjFsMy40IDEuNDYgMS44OS0zLjE4IDMuNjEtLjgyLS4zNC0zLjY4TDIzIDEyem0tNC41MSAyLjExLjI2IDIuNzktMi43NC42Mi0xLjQzIDIuNDFMMTIgMTguODJsLTIuNTggMS4xMS0xLjQzLTIuNDEtMi43NC0uNjIuMjYtMi44TDMuNjYgMTJsMS44NS0yLjEyLS4yNi0yLjc4IDIuNzQtLjYxIDEuNDMtMi40MUwxMiA1LjE4bDIuNTgtMS4xMSAxLjQzIDIuNDEgMi43NC42Mi0uMjYgMi43OUwyMC4zNCAxMmwtMS44NSAyLjExek0xMSAxNWgydjJoLTJ6bTAtOGgydjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RJbnRlcmVzdGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOCAwLTEuODUuNjMtMy41NSAxLjY5LTQuOUwxNi45IDE4LjMxQTcuOTAyIDcuOTAyIDAgMCAxIDEyIDIwem02LjMxLTMuMUw3LjEgNS42OUE3LjkwMiA3LjkwMiAwIDAgMSAxMiA0YzQuNDIgMCA4IDMuNTggOCA4IDAgMS44NS0uNjMgMy41NS0xLjY5IDQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTIuMDFjMCAxLjEuOSAxLjk5IDIgMS45OWgxNmMxLjEgMCAyLS45IDItMnYtOGwtNi02ek00IDE4LjAxVjZoMTF2NWg1djcuMDFINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhdXNlQ2lyY2xlRmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiZ1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMSAxNEg5VjhoMnY4em00IDBoLTJWOGgydjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYXVzZUNpcmNsZU91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTZoMlY4SDl2OHptMy0xNEM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTEtNGgyVjhoLTJ2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhdXNlQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNmgyVjhIOXY4em0zLTE0QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMS00aDJWOGgtMnY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGF1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTloNFY1SDZ2MTR6bTgtMTR2MTRoNFY1aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGxheUFycm93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA4LjY0IDE1LjI3IDEyIDEwIDE1LjM2VjguNjRNOCA1djE0bDExLTdMOCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGxheUNpcmNsZUZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTIgMTQuNXYtOWw2IDQuNS02IDQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYXlDaXJjbGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMCAxNi41IDYtNC41LTYtNC41ek0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYXlDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptLTIuNS0zLjUgNy00LjUtNy00LjV2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYXlEaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjQ1IDEzLjYyIDE5IDEyIDggNXYuMTd6TTIuODEgMi44MSAxLjM5IDQuMjIgOCAxMC44M1YxOWw0Ljk5LTMuMTggNi43OCA2Ljc4IDEuNDEtMS40MUwyLjgxIDIuODF6TTEwIDE1LjM2di0yLjUzbDEuNTUgMS41NS0xLjU1Ljk4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGxheWxpc3RBZGRDaGVja0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjNC40MSAwIDggMy41OSA4IDhzLTMuNTkgOC04IDgtOC0zLjU5LTgtOCAzLjU5LTggOC04em0wLTJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTIgOEg3djJoN3YtMnptMC0zSDd2Mmg3Vjd6bS03IDhoM3YtMkg3djJ6bTEyLTEuNTlMMTcuNTkgMTJsLTMuNTQgMy41NC0xLjQxLTEuNDEtMS40MSAxLjQxIDIuODMgMi44M0wxOSAxMy40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYXlsaXN0QWRkQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEwaDExdjJIM3pNMyA2aDExdjJIM3pNMyAxNGg3djJIM3pNMjAuNTkgMTEuOTNsLTQuMjUgNC4yNC0yLjEyLTIuMTItMS40MSAxLjQxTDE2LjM0IDE5IDIyIDEzLjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGxheWxpc3RBZGRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMi0xMEg3djJoN3YtMnptMC0zSDd2Mmg3Vjd6bS03IDhoM3YtMkg3djJ6bTEyLTJ2MmgtMnYyaC0ydi0yaC0ydi0yaDJ2LTJoMnYyaDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQbGF5bGlzdEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEwSDN2MmgxMXYtMnptMC00SDN2MmgxMVY2em00IDh2LTRoLTJ2NGgtNHYyaDR2NGgydi00aDR2LTJoLTR6TTMgMTZoN3YtMkgzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQbGF5bGlzdFBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEwaDExdjJIM3pNMyA2aDExdjJIM3pNMyAxNGg3djJIM3pNMTYgMTN2OGw2LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQbGF5bGlzdFJlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEwSDN2MmgxMXYtMnptMC00SDN2MmgxMVY2ek0zIDE2aDd2LTJIM3Yyem0xMS40MSA2TDE3IDE5LjQxIDE5LjU5IDIyIDIxIDIwLjU5IDE4LjQxIDE4IDIxIDE1LjQxIDE5LjU5IDE0IDE3IDE2LjU5IDE0LjQxIDE0IDEzIDE1LjQxIDE1LjU5IDE4IDEzIDIwLjU5IDE0LjQxIDIyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXVldWVNdXNpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDZoLTV2OC4xOGMtLjMxLS4xMS0uNjUtLjE4LTEtLjE4LTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtM1Y4aDNWNnptLTcgMEgzdjJoMTJWNnptMCA0SDN2MmgxMnYtMnptLTQgNEgzdjJoOHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVF1ZXVlUGxheU5leHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxMmEyIDIgMCAwIDAgMiAyaDV2Mmg4di0yaDJ2LTJIM1Y1aDE4djhoMlY1YTIgMiAwIDAgMC0yLTJ6bS04IDdWN2gtMnYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zem0xMSA4LTQuNSA0LjVMMTggMjFsMy0zLTMtMyAxLjUtMS41TDI0IDE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXVldWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg4VjRoMTJ2MTJ6bS03LTFoMnYtNGg0VjloLTRWNWgtMnY0SDl2Mmg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmFkaW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZIOC4zbDguMjYtMy4zNEwxNS44OCAxIDMuMjQgNi4xNUMyLjUxIDYuNDMgMiA3LjE3IDIgOHYxMmEyIDIgMCAwIDAgMiAyaDE2YTIgMiAwIDAgMCAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0wIDJ2M2gtMlY5aC0ydjJINFY4aDE2ek00IDIwdi03aDE2djdINHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4XCIsXCJjeVwiOlwiMTYuNDhcIixcInJcIjpcIjIuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVjZW50QWN0b3JzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA1aDJ2MTRoLTJ6bS00IDBoMnYxNGgtMnptLTMgMEgyYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xVjZjMC0uNTUtLjQ1LTEtMS0xem0tMSAxMkgzVjdoMTB2MTB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOFwiLFwiY3lcIjpcIjkuOTRcIixcInJcIjpcIjEuOTVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuODkgMTUuMzVjMC0xLjMtMi41OS0xLjk1LTMuODktMS45NXMtMy44OS42NS0zLjg5IDEuOTVWMTZoNy43OHYtLjY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVtb3ZlRnJvbVF1ZXVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMTEgMC0yIC44OS0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg1djJoOHYtMmg1YzEuMSAwIDItLjkgMi0yVjVhMiAyIDAgMCAwLTItMnptMCAxNEgzVjVoMTh2MTJ6bS01LTd2Mkg4di0yaDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBlYXRPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDFIM2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0tMiAxOEg2LjgzbDEuNTggMS41OEw3IDIybC00LTQgNC00IDEuNDEgMS40Mkw2LjgzIDE3SDE3di00aDJ2NnptLTItOS0xLjQxLTEuNDJMMTcuMTcgN0g3djRINVY1aDEyLjE3bC0xLjU4LTEuNThMMTcgMmw0IDQtNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwZWF0T25lT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxSDNjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptLTIgMThINi44M2wxLjU4IDEuNThMNyAyMmwtNC00IDQtNCAxLjQxIDEuNDJMNi44MyAxN0gxN3YtNGgydjZ6bS05LTguNVY5aDN2NmgtMS41di00LjVIMTB6bTctLjUtMS40MS0xLjQyTDE3LjE3IDdIN3Y0SDVWNWgxMi4xN2wtMS41OC0xLjU4TDE3IDJsNCA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlcGVhdE9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3aDEwdjNsNC00LTQtNHYzSDV2NmgyVjd6bTEwIDEwSDd2LTNsLTQgNCA0IDR2LTNoMTJ2LTZoLTJ2NHptLTQtMlY5aC0xbC0yIDF2MWgxLjV2NEgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlcGVhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3aDEwdjNsNC00LTQtNHYzSDV2NmgyVjd6bTEwIDEwSDd2LTNsLTQgNCA0IDR2LTNoMTJ2LTZoLTJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlcGxheTEwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSA1VjFsLTUgNSA1IDVWN2MzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNi02LTIuNjktNi02aC0yYzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LTgtMy41OC04LTgtOHptLTEuMSAxMWgtLjg1di0zLjI2bC0xLjAxLjMxdi0uNjlsMS43Ny0uNjNoLjA5VjE2em00LjI4LTEuNzZjMCAuMzItLjAzLjYtLjEuODJzLS4xNy40Mi0uMjkuNTctLjI4LjI2LS40NS4zMy0uMzcuMS0uNTkuMS0uNDEtLjAzLS41OS0uMS0uMzMtLjE4LS40Ni0uMzMtLjIzLS4zNC0uMy0uNTctLjExLS41LS4xMS0uODJ2LS43NGMwLS4zMi4wMy0uNi4xLS44MnMuMTctLjQyLjI5LS41Ny4yOC0uMjYuNDUtLjMzLjM3LS4xLjU5LS4xLjQxLjAzLjU5LjEuMzMuMTguNDYuMzMuMjMuMzQuMy41Ny4xMS41LjExLjgydi43NHptLS44NS0uODZjMC0uMTktLjAxLS4zNS0uMDQtLjQ4cy0uMDctLjIzLS4xMi0uMzEtLjExLS4xNC0uMTktLjE3LS4xNi0uMDUtLjI1LS4wNS0uMTguMDItLjI1LjA1LS4xNC4wOS0uMTkuMTctLjA5LjE4LS4xMi4zMS0uMDQuMjktLjA0LjQ4di45N2MwIC4xOS4wMS4zNS4wNC40OHMuMDcuMjQuMTIuMzIuMTEuMTQuMTkuMTcuMTYuMDUuMjUuMDUuMTgtLjAyLjI1LS4wNS4xNC0uMDkuMTktLjE3LjA5LS4xOS4xMS0uMzIuMDQtLjI5LjA0LS40OHYtLjk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwbGF5MzAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVWMUw3IDZsNSA1VjdjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDYtNi0yLjY5LTYtNkg0YzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LTgtMy41OC04LTgtOHptLTIuNDQgOC40OWguNDVjLjIxIDAgLjM3LS4wNS40OC0uMTZzLjE2LS4yNS4xNi0uNDNhLjUzOC41MzggMCAwIDAtLjE1LS4zOWMtLjA1LS4wNS0uMTEtLjA5LS4xOC0uMTFzLS4xNi0uMDQtLjI1LS4wNGMtLjA4IDAtLjE1LjAxLS4yMi4wM3MtLjEzLjA1LS4xOC4xLS4wOS4wOS0uMTIuMTUtLjA1LjEzLS4wNS4yaC0uODVhMS4wNiAxLjA2IDAgMCAxIC40MS0uODVjLjEzLS4xLjI3LS4xOC40NC0uMjNzLjM1LS4wOC41NC0uMDhjLjIxIDAgLjQxLjAzLjU5LjA4cy4zMy4xMy40Ni4yMy4yMy4yMy4zLjM4LjExLjMzLjExLjUzYS44NDIuODQyIDAgMCAxLS4xNy41MiAxLjEgMS4xIDAgMCAxLS40OC4zOWMuMjQuMDkuNDIuMjEuNTQuMzlzLjE4LjM4LjE4LjYxYzAgLjItLjA0LjM4LS4xMi41M3MtLjE4LjI5LS4zMi4zOS0uMjkuMTktLjQ4LjI0LS4zOC4wOC0uNi4wOGMtLjE4IDAtLjM2LS4wMi0uNTMtLjA3cy0uMzMtLjEyLS40Ni0uMjMtLjI1LS4yMy0uMzMtLjM4LS4xMi0uMzQtLjEyLS41NWguODVjMCAuMDguMDIuMTUuMDUuMjJzLjA3LjEyLjEzLjE3LjEyLjA5LjIuMTEuMTYuMDQuMjUuMDRjLjEgMCAuMTktLjAxLjI3LS4wNHMuMTUtLjA3LjItLjEyLjEtLjExLjEzLS4xOC4wNC0uMTUuMDQtLjI0YzAtLjExLS4wMi0uMjEtLjA1LS4yOXMtLjA4LS4xNS0uMTQtLjItLjEzLS4wOS0uMjItLjExLS4xOC0uMDQtLjI5LS4wNGgtLjQ3di0uNjV6bTUuNzQuNzVjMCAuMzItLjAzLjYtLjEuODJzLS4xNy40Mi0uMjkuNTctLjI4LjI2LS40NS4zMy0uMzcuMS0uNTkuMS0uNDEtLjAzLS41OS0uMS0uMzMtLjE4LS40Ni0uMzMtLjIzLS4zNC0uMy0uNTctLjExLS41LS4xMS0uODJ2LS43NGMwLS4zMi4wMy0uNi4xLS44MnMuMTctLjQyLjI5LS41Ny4yOC0uMjYuNDUtLjMzLjM3LS4xLjU5LS4xLjQxLjAzLjU5LjEuMzMuMTguNDYuMzMuMjMuMzQuMy41Ny4xMS41LjExLjgydi43NHptLS44NS0uODZjMC0uMTktLjAxLS4zNS0uMDQtLjQ4cy0uMDctLjIzLS4xMi0uMzEtLjExLS4xNC0uMTktLjE3LS4xNi0uMDUtLjI1LS4wNS0uMTguMDItLjI1LjA1LS4xNC4wOS0uMTkuMTctLjA5LjE4LS4xMi4zMS0uMDQuMjktLjA0LjQ4di45N2MwIC4xOS4wMS4zNS4wNC40OHMuMDcuMjQuMTIuMzIuMTEuMTQuMTkuMTcuMTYuMDUuMjUuMDUuMTgtLjAyLjI1LS4wNS4xNC0uMDkuMTktLjE3LjA5LS4xOS4xMS0uMzJjLjAzLS4xMy4wNC0uMjkuMDQtLjQ4di0uOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBsYXk1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1VjFMNyA2bDUgNVY3YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTZINGMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04LTMuNTgtOC04LTh6bS0xLjMxIDguOS4yNS0yLjE3aDIuMzl2LjcxaC0xLjdsLS4xMS45MmMuMDMtLjAyLjA3LS4wMy4xMS0uMDVzLjA5LS4wNC4xNS0uMDUuMTItLjAzLjE4LS4wNC4xMy0uMDIuMi0uMDJjLjIxIDAgLjM5LjAzLjU1LjFzLjMuMTYuNDEuMjguMi4yNy4yNS40NS4wOS4zOC4wOS42YzAgLjE5LS4wMy4zNy0uMDkuNTRzLS4xNS4zMi0uMjcuNDUtLjI3LjI0LS40NS4zMS0uMzkuMTItLjY0LjEyYy0uMTggMC0uMzYtLjAzLS41My0uMDhzLS4zMi0uMTQtLjQ2LS4yNC0uMjQtLjI0LS4zMi0uMzktLjEzLS4zMy0uMTMtLjUzaC44NGMuMDIuMTguMDguMzIuMTkuNDFzLjI1LjE1LjQyLjE1YS40OS40OSAwIDAgMCAuNDUtLjIzYy4wNC0uMDcuMDgtLjE1LjExLS4yNXMuMDMtLjIuMDMtLjMxLS4wMS0uMjEtLjA0LS4zMS0uMDctLjE3LS4xMy0uMjQtLjEzLS4xMi0uMjEtLjE1LS4xOS0uMDUtLjMtLjA1Yy0uMDggMC0uMTUuMDEtLjIuMDJzLS4xMS4wMy0uMTUuMDUtLjA4LjA1LS4xMi4wNy0uMDcuMDYtLjEuMDlsLS42Ny0uMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBsYXlDaXJjbGVGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE2LjVjLTMuMzEgMC02LTIuNjktNi02aDJjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNGMwLTIuMjQtMS44NS00LjA5LTQuMTYtMy45OWwxLjU3IDEuNTdMMTIgMTEuNWwtNC00IDQtNCAxLjQxIDEuNDEtMS42IDEuNkMxNS4yOCA2LjQgMTggOS4xOCAxOCAxMi41YzAgMy4zMS0yLjY5IDYtNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiZ1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1VjFMNyA2bDUgNVY3YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTZINGMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04LTMuNTgtOC04LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTVoM2MuNTUgMCAxLS40NSAxLTF2LTEuNWMwLS41NS0uNDUtMS0xLTFINy41di0xaDJ2LjVIMTF2LTFjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXYxLjVjMCAuNTUuNDUgMSAxIDFoMi41djFoLTJWMTNINnYxYzAgLjU1LjQ1IDEgMSAxek0xOCAxNHYtNGMwLS41NS0uNDUtMS0xLTFoLTR2Nmg0Yy41NSAwIDEtLjQ1IDEtMXptLTEuNS0uNWgtMnYtM2gydjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjZoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaHVmZmxlT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxSDNjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNNS40MSA0bDUuMTggNS4xNy0xLjQxIDEuNDJMNCA1LjQyIDUuNDEgNHpNMjAgMjBoLTZ2LTJoMi42MWwtMy4yLTMuMiAxLjQyLTEuNDIgMy4xMyAzLjEzLjA0LjA0VjE0aDJ2NnptMC0xMGgtMlY3LjQyTDUuNDEgMjAgNCAxOC41OSAxNi41OCA2SDE0VjRoNnY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2h1ZmZsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNTkgOS4xNyA1LjQxIDQgNCA1LjQxbDUuMTcgNS4xNyAxLjQyLTEuNDF6TTE0LjUgNGwyLjA0IDIuMDRMNCAxOC41OSA1LjQxIDIwIDE3Ljk2IDcuNDYgMjAgOS41VjRoLTUuNXptLjMzIDkuNDEtMS40MSAxLjQxIDMuMTMgMy4xM0wxNC41IDIwSDIwdi01LjVsLTIuMDQgMi4wNC0zLjEzLTMuMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTa2lwTmV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNiAxOCA4LjUtNkw2IDZ2MTJ6bTItOC4xNEwxMS4wMyAxMiA4IDE0LjE0VjkuODZ6TTE2IDZoMnYxMmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNraXBQcmV2aW91cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA2aDJ2MTJINnptMy41IDYgOC41IDZWNmwtOC41IDZ6bTYuNSAyLjE0TDEyLjk3IDEyIDE2IDkuODZ2NC4yOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNsb3dNb3Rpb25WaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuMDUgOS43OSAxMCA3LjV2OWwzLjA1LTIuMjlMMTYgMTJsLTIuOTUtMi4yMXptMCAwTDEwIDcuNXY5bDMuMDUtMi4yOUwxNiAxMmwtMi45NS0yLjIxem0wIDBMMTAgNy41djlsMy4wNS0yLjI5TDE2IDEybC0yLjk1LTIuMjF6TTExIDQuMDdWMi4wNWMtMi4wMS4yLTMuODQgMS01LjMyIDIuMjFMNy4xIDUuNjlBNy45NDEgNy45NDEgMCAwIDEgMTEgNC4wN3pNNS42OSA3LjEgNC4yNiA1LjY4QTkuOTQ5IDkuOTQ5IDAgMCAwIDIuMDUgMTFoMi4wMmMuMTgtMS40Ni43Ni0yLjc5IDEuNjItMy45ek00LjA3IDEzSDIuMDVjLjIgMi4wMSAxIDMuODQgMi4yMSA1LjMybDEuNDMtMS40M0E3Ljg2OCA3Ljg2OCAwIDAgMSA0LjA3IDEzem0xLjYxIDYuNzRBOS45ODEgOS45ODEgMCAwIDAgMTEgMjEuOTV2LTIuMDJhNy45NDEgNy45NDEgMCAwIDEtMy45LTEuNjJsLTEuNDIgMS40M3pNMjIgMTJjMCA1LjE2LTMuOTIgOS40Mi04Ljk1IDkuOTV2LTIuMDJDMTYuOTcgMTkuNDEgMjAgMTYuMDUgMjAgMTJzLTMuMDMtNy40MS02Ljk1LTcuOTNWMi4wNUMxOC4wOCAyLjU4IDIyIDYuODQgMjIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbm9vemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTFoMy42M0w5IDE1LjJWMTdoNnYtMmgtMy42M0wxNSAxMC44VjlIOXYyem03LjA1Ni03LjY1NCAxLjI4Mi0xLjUzNSA0LjYwNyAzLjg1LTEuMjggMS41NHpNMy4zMzYgNy4xOWwtMS4yOC0xLjUzNkw2LjY2MiAxLjgxbDEuMjggMS41MzZ6TTEyIDZjMy44NiAwIDcgMy4xNCA3IDdzLTMuMTQgNy03IDctNy0zLjE0LTctNyAzLjE0LTcgNy03bTAtMmE5IDkgMCAxIDAgLjAwMSAxOC4wMDFBOSA5IDAgMCAwIDEyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTb3J0QnlBbHBoYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuOTQgNC42NmgtNC43MmwyLjM2LTIuMzYgMi4zNiAyLjM2em0tNC42OSAxNC43MWg0LjY2bC0yLjMzIDIuMzMtMi4zMy0yLjMzek02LjEgNi4yNyAxLjYgMTcuNzNoMS44NGwuOTItMi40NWg1LjExbC45MiAyLjQ1aDEuODRMNy43NCA2LjI3SDYuMXptLTEuMTMgNy4zNyAxLjk0LTUuMTggMS45NCA1LjE4SDQuOTd6bTEwLjc2IDIuNWg2LjEydjEuNTloLTguNTN2LTEuMjlsNS45Mi04LjU2aC01Ljg4di0xLjZoOC4zdjEuMjZsLTUuOTMgOC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC4zOCA4LjU3LTEuMjMgMS44NWE4IDggMCAwIDEtLjIyIDcuNThINS4wN0E4IDggMCAwIDEgMTUuNTggNi44NWwxLjg1LTEuMjNBMTAgMTAgMCAwIDAgMy4zNSAxOWEyIDIgMCAwIDAgMS43MiAxaDEzLjg1YTIgMiAwIDAgMCAxLjc0LTEgMTAgMTAgMCAwIDAtLjI3LTEwLjQ0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41OSAxNS40MWEyIDIgMCAwIDAgMi44MyAwbDUuNjYtOC40OS04LjQ5IDUuNjZhMiAyIDAgMCAwIDAgMi44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0b3BDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptNC00SDhWOGg4djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4djhIOFY4aDhtMi0ySDZ2MTJoMTJWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1YnNjcmlwdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNmgxNnYySDR6bTItNGgxMnYySDZ6bTE0IDhINGMtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ydi04YzAtMS4xLS45LTItMi0yem0wIDEwSDR2LThoMTZ2OHptLTEwLTcuMjd2Ni41M0wxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1YnRpdGxlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDE2djEyek02IDEwaDJ2Mkg2em0wIDRoOHYySDZ6bTEwIDBoMnYyaC0yem0tNi00aDh2MmgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1cnJvdW5kU291bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119XX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDRWNmgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4yOSAxNS43MUE1LjIzMyA1LjIzMyAwIDAgMSA2Ljc1IDEyYzAtMS4zNS41Mi0yLjY5IDEuNTMtMy43Mkw3LjA1IDcuMDVDNS42OCA4LjQxIDUgMTAuMjEgNSAxMnMuNjggMy41OSAyLjA2IDQuOTRsMS4yMy0xLjIzek0xMiAxNS41YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzEzLjkzIDguNSAxMiA4LjUgOC41IDEwLjA3IDguNSAxMnMxLjU3IDMuNSAzLjUgMy41em0wLTVjLjgzIDAgMS41LjY3IDEuNSAxLjVzLS42NyAxLjUtMS41IDEuNS0xLjUtLjY3LTEuNS0xLjUuNjctMS41IDEuNS0xLjV6TTE1LjcyIDE1LjcybDEuMjMgMS4yM0MxOC4zMiAxNS41OSAxOSAxMy43OSAxOSAxMnMtLjY4LTMuNTktMi4wNi00Ljk0bC0xLjIzIDEuMjNBNS4yMzMgNS4yMzMgMCAwIDEgMTcuMjUgMTJjMCAxLjM1LS41MiAyLjY5LTEuNTMgMy43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZGVvQ2FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTAuNVY3YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xdi0zLjVsNCA0di0xMWwtNCA0ek0xNSAxNkg1VjhoMTB2OHptLTYtMWgydi0yaDJ2LTJoLTJWOUg5djJIN3YyaDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb0ZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWOGwtNi02ek02IDIwVjRoN3Y1aDV2MTFINnptOC02IDItMS4wNnY0LjEyTDE0IDE2djFjMCAuNTUtLjQ1IDEtMSAxSDljLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWg0Yy41NSAwIDEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlkZW9MYWJlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTNIM1Y1aDE4djExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlkZW9MaWJyYXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTYtNEg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRIOFY0aDEydjEyek0xMiA1LjV2OWw2LTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZGVvU2V0dGluZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDZoMTh2NWgyVjZjMC0xLjEtLjktMi0yLTJIM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg5di0ySDNWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTIgOSA4djh6TTIyLjcxIDE4LjQzYy4wMy0uMjkuMDQtLjU4LjAxLS44NmwxLjA3LS44NWMuMS0uMDguMTItLjIxLjA2LS4zMmwtMS4wMy0xLjc5Yy0uMDYtLjExLS4xOS0uMTUtLjMxLS4xMWwtMS4yOC41YTMuNDQgMy40NCAwIDAgMC0uNzUtLjQybC0uMi0xLjM2YS4yNDkuMjQ5IDAgMCAwLS4yNS0uMjJoLTIuMDdjLS4xMiAwLS4yMy4wOS0uMjUuMjFsLS4yIDEuMzZjLS4yNi4xMS0uNTEuMjYtLjc0LjQybC0xLjI4LS41Yy0uMTItLjA1LS4yNSAwLS4zMS4xMWwtMS4wMyAxLjc5Yy0uMDYuMTEtLjA0LjI0LjA2LjMybDEuMDcuODZjLS4wMy4yOS0uMDQuNTgtLjAxLjg2bC0xLjA3Ljg1Yy0uMS4wOC0uMTIuMjEtLjA2LjMybDEuMDMgMS43OWMuMDYuMTEuMTkuMTUuMzEuMTFsMS4yNy0uNWMuMjMuMTcuNDguMzEuNzUuNDJsLjIgMS4zNmMuMDIuMTIuMTIuMjEuMjUuMjFoMi4wN2MuMTIgMCAuMjMtLjA5LjI1LS4yMWwuMi0xLjM2Yy4yNi0uMTEuNTEtLjI2Ljc0LS40MmwxLjI4LjVjLjEyLjA1LjI1IDAgLjMxLS4xMWwxLjAzLTEuNzljLjA2LS4xMS4wNC0uMjQtLjA2LS4zMmwtMS4wNi0uODV6TTE5IDE5LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlkZW9jYW1PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTkuNTYgOC0yLTItNC4xNS00LjE0TDIgMy4yNyA0LjczIDZINGMtLjU1IDAtMSAuNDUtMSAxdjEwYzAgLjU1LjQ1IDEgMSAxaDEyYy4yMSAwIC4zOS0uMDguNTUtLjE4TDE5LjczIDIxbDEuNDEtMS40MS04Ljg2LTguODZMOS41NiA4ek01IDE2VjhoMS43M2w4IDhINXptMTAtOHYyLjYxbDYgNlY2LjVsLTQgNFY3YzAtLjU1LS40NS0xLTEtMWgtNS42MWwyIDJIMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb2NhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgOHY4SDVWOGgxMG0xLTJINGMtLjU1IDAtMSAuNDUtMSAxdjEwYzAgLjU1LjQ1IDEgMSAxaDEyYy41NSAwIDEtLjQ1IDEtMXYtMy41bDQgNHYtMTFsLTQgNFY3YzAtLjU1LS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZvbHVtZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDcuOTd2OC4wNWMxLjQ4LS43MyAyLjUtMi4yNSAyLjUtNC4wMkE0LjUgNC41IDAgMCAwIDE2IDcuOTd6TTUgOXY2aDRsNSA1VjRMOSA5SDV6bTctLjE3djYuMzRMOS44MyAxM0g3di0yaDIuODNMMTIgOC44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZvbHVtZU11dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDguODN2Ni4zNEwxMS44MyAxM0g5di0yaDIuODNMMTQgOC44M00xNiA0bC01IDVIN3Y2aDRsNSA1VjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWb2x1bWVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMzQgMi45MyAyLjkzIDQuMzQgNy4yOSA4LjcgNyA5SDN2Nmg0bDUgNXYtNi41OWw0LjE4IDQuMThjLS42NS40OS0xLjM4Ljg4LTIuMTggMS4xMXYyLjA2YTguOTQgOC45NCAwIDAgMCAzLjYxLTEuNzVsMi4wNSAyLjA1IDEuNDEtMS40MUw0LjM0IDIuOTN6TTEwIDE1LjE3IDcuODMgMTNINXYtMmgyLjgzbC44OC0uODhMMTAgMTEuNDF2My43NnpNMTkgMTJjMCAuODItLjE1IDEuNjEtLjQxIDIuMzRsMS41MyAxLjUzYy41Ni0xLjE3Ljg4LTIuNDguODgtMy44NyAwLTQuMjgtMi45OS03Ljg2LTctOC43N3YyLjA2YzIuODkuODYgNSAzLjU0IDUgNi43MXptLTctOC0xLjg4IDEuODhMMTIgNy43NnptNC41IDhBNC41IDQuNSAwIDAgMCAxNCA3Ljk3djEuNzlsMi40OCAyLjQ4Yy4wMS0uMDguMDItLjE2LjAyLS4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZvbHVtZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDl2Nmg0bDUgNVY0TDcgOUgzem03LS4xN3Y2LjM0TDcuODMgMTNINXYtMmgyLjgzTDEwIDguODN6TTE2LjUgMTJBNC41IDQuNSAwIDAgMCAxNCA3Ljk3djguMDVjMS40OC0uNzMgMi41LTIuMjUgMi41LTQuMDJ6TTE0IDMuMjN2Mi4wNmMyLjg5Ljg2IDUgMy41NCA1IDYuNzFzLTIuMTEgNS44NS01IDYuNzF2Mi4wNmM0LjAxLS45MSA3LTQuNDkgNy04Ljc3IDAtNC4yOC0yLjk5LTcuODYtNy04Ljc3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2ViQXNzZXRPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjgzIDRIMjBhMiAyIDAgMCAxIDIgMnYxMmMwIC4zNC0uMDkuNjYtLjIzLjk0TDIwIDE3LjE3VjhoLTkuMTdsLTQtNHptMTMuNjYgMTkuMzFMMTcuMTcgMjBINGEyIDIgMCAwIDEtMi0yVjZjMC0uMzQuMDgtLjY2LjIzLS45NEwuNjkgMy41MSAyLjEgMi4xbDE5LjggMTkuOC0xLjQxIDEuNDF6TTE1LjE3IDE4bC0xMC0xMEg0djEwaDExLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2ViQXNzZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRINWEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmEyIDIgMCAwIDAtMi0yem0wIDE0SDVWOGgxNHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdlYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek00IDloMTAuNXYzLjVINFY5em0wIDUuNWgxMC41VjE4SDR2LTMuNXpNMjAgMThoLTMuNVY5SDIwdjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUzUCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINC4wMWMtMS4xIDAtMiAuOS0yIDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg1LjE3TDQgMTcuMTdWNGgxNnYxMnptLTgtNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTQgMy40M2MwLS44MS0uNDgtMS41My0xLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgOCAxMy40M1YxNGg4di0uNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRJY0NhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjQ1Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41Ny0uMS0uMDMtLjIxLS4wNS0uMzEtLjA1LS4yNiAwLS41MS4xLS43MS4yOWwtMi4yIDIuMmExNS4wNDUgMTUuMDQ1IDAgMCAxLTYuNTktNi41OWwyLjItMi4yMWEuOTYuOTYgMCAwIDAgLjI1LTEgMTEuMzYgMTEuMzYgMCAwIDEtLjU3LTMuNTdjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6TTUuMDMgNC45NWgxLjVjLjA3Ljg4LjIyIDEuNzUuNDUgMi41OGwtMS4yIDEuMjFjLS40LTEuMjEtLjY2LTIuNDctLjc1LTMuNzl6TTE5IDE4LjkyYy0xLjMyLS4wOS0yLjYtLjM1LTMuOC0uNzZsMS4yLTEuMmMuODUuMjQgMS43Mi4zOSAyLjYuNDV2MS41MXpNMTggNS45NXYtM2gtMnYzaC0zdjJoM3YzaDJ2LTNoM3YtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFsdGVybmF0ZUVtYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxLjk1Yy01LjUyIDAtMTAgNC40OC0xMCAxMHM0LjQ4IDEwIDEwIDEwaDV2LTJoLTVjLTQuMzQgMC04LTMuNjYtOC04czMuNjYtOCA4LTggOCAzLjY2IDggOHYxLjQzYzAgLjc5LS43MSAxLjU3LTEuNSAxLjU3cy0xLjUtLjc4LTEuNS0xLjU3di0xLjQzYzAtMi43Ni0yLjI0LTUtNS01cy01IDIuMjQtNSA1IDIuMjQgNSA1IDVjMS4zOCAwIDIuNjQtLjU2IDMuNTQtMS40Ny42NS44OSAxLjc3IDEuNDcgMi45NiAxLjQ3IDEuOTcgMCAzLjUtMS42IDMuNS0zLjU3di0xLjQzYzAtNS41Mi00LjQ4LTEwLTEwLTEwem0wIDEzYy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFwcFJlZ2lzdHJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDRoNHY0aC00ek00IDE2aDR2NEg0ek00IDEwaDR2NEg0ek00IDRoNHY0SDR6TTE2IDRoNHY0aC00ek0xMSAxNy44NlYyMGgyLjFsNS45OC01Ljk3LTIuMTItMi4xMnpNMTQgMTIuMDNWMTBoLTR2NGgyLjAzek0yMC44NSAxMS41NmwtMS40MS0xLjQxYy0uMi0uMi0uNTEtLjItLjcxIDBsLTEuMDYgMS4wNiAyLjEyIDIuMTIgMS4wNi0xLjA2Yy4yLS4yLjItLjUxIDAtLjcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnVzaW5lc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdWM0gydjE4aDIwVjdIMTJ6TTYgMTlINHYtMmgydjJ6bTAtNEg0di0yaDJ2MnptMC00SDRWOWgydjJ6bTAtNEg0VjVoMnYyem00IDEySDh2LTJoMnYyem0wLTRIOHYtMmgydjJ6bTAtNEg4VjloMnYyem0wLTRIOFY1aDJ2MnptMTAgMTJoLTh2LTJoMnYtMmgtMnYtMmgydi0yaC0yVjloOHYxMHptLTItOGgtMnYyaDJ2LTJ6bTAgNGgtMnYyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWxsRW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC41OSAxMC41MmMxLjA1LjUxIDIuMDQgMS4xNSAyLjk2IDEuOTFsLTEuMDcgMS4wN2MtLjU4LS40Ny0xLjIxLS44OS0xLjg4LTEuMjd2LTEuNzFtLTEzLjIgMHYxLjdjLS42NS4zNy0xLjI4Ljc5LTEuODcgMS4yN2wtMS4wNy0xLjA3Yy45MS0uNzUgMS45LTEuMzggMi45NC0xLjlNMTIgN0M3LjQ2IDcgMy4zNCA4Ljc4LjI5IDExLjY3Yy0uMTguMTgtLjI5LjQzLS4yOS43MXMuMTEuNTMuMjkuN2wyLjQ4IDIuNDhjLjE4LjE4LjQzLjI5LjcxLjI5LjI3IDAgLjUyLS4xLjctLjI4Ljc5LS43MyAxLjY4LTEuMzYgMi42Ni0xLjg1LjMzLS4xNi41Ni0uNTEuNTYtLjl2LTMuMUM4Ljg1IDkuMjUgMTAuNCA5IDEyIDlzMy4xNS4yNSA0LjU5LjczdjMuMWMwIC40LjIzLjc0LjU2LjkuOTguNDkgMS44OCAxLjExIDIuNjcgMS44NS4xOC4xNy40My4yOC43LjI4LjI4IDAgLjUzLS4xMS43MS0uMjlsMi40OC0yLjQ4Yy4xOC0uMTguMjktLjQzLjI5LS43MXMtLjExLS41My0uMjktLjcxQTE2Ljk3MSAxNi45NzEgMCAwIDAgMTIgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGxNYWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDV2Mmg2LjU5TDQgMTguNTkgNS40MSAyMCAxNyA4LjQxVjE1aDJWNUg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FsbE1lcmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAyMC40MSAxOC40MSAxOSAxNSAxNS41OSAxMy41OSAxNyAxNyAyMC40MXpNNy41IDhIMTF2NS41OUw1LjU5IDE5IDcgMjAuNDFsNi02VjhoMy41TDEyIDMuNSA3LjUgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGxNaXNzZWRPdXRnb2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMgOC40MSA5IDkgNy03VjE1aDJWN2gtOHYyaDQuNTlMMTIgMTQuNTkgNC40MSA3IDMgOC40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGxNaXNzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjU5IDcgMTIgMTQuNTkgNi40MSA5SDExVjdIM3Y4aDJ2LTQuNTlsNyA3IDktOUwxOS41OSA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FsbFJlY2VpdmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1LjQxIDE4LjU5IDQgNyAxNS41OVY5SDV2MTBoMTB2LTJIOC40MUwyMCA1LjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FsbFNwbGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA0IDIuMjkgMi4yOS0yLjg4IDIuODggMS40MiAxLjQyIDIuODgtMi44OEwyMCAxMFY0aC02em0tNCAwSDR2NmwyLjI5LTIuMjkgNC43MSA0LjdWMjBoMnYtOC40MWwtNS4yOS01LjNMMTAgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNTQgNWMuMDYuODkuMjEgMS43Ni40NSAyLjU5bC0xLjIgMS4yYy0uNDEtMS4yLS42Ny0yLjQ3LS43Ni0zLjc5aDEuNTFtOS44NiAxMi4wMmMuODUuMjQgMS43Mi4zOSAyLjYuNDV2MS40OWMtMS4zMi0uMDktMi41OS0uMzUtMy44LS43NWwxLjItMS4xOU03LjUgM0g0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjQ5YzAtLjU1LS40NS0xLTEtMS0xLjI0IDAtMi40NS0uMi0zLjU3LS41N2EuODQuODQgMCAwIDAtLjMxLS4wNWMtLjI2IDAtLjUxLjEtLjcxLjI5bC0yLjIgMi4yYTE1LjE0OSAxNS4xNDkgMCAwIDEtNi41OS02LjU5bDIuMi0yLjJjLjI4LS4yOC4zNi0uNjcuMjUtMS4wMkExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW5jZWxQcmVzZW50YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxOHYxNHpNOS40MSAxNS45NSAxMiAxMy4zNmwyLjU5IDIuNTlMMTYgMTQuNTRsLTIuNTktMi41OUwxNiA5LjM2bC0xLjQxLTEuNDFMMTIgMTAuNTQgOS40MSA3Ljk1IDggOS4zNmwyLjU5IDIuNTlMOCAxNC41NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNlbGxUb3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTcuMyAxNC43IDEuMi0xLjJjLTEtMS0xLjUtMi4zLTEuNS0zLjUgMC0xLjMuNS0yLjYgMS41LTMuNUw3LjMgNS4zYy0xLjMgMS4zLTIgMy0yIDQuN3MuNyAzLjQgMiA0Ljd6TTE5LjEgMi45bC0xLjIgMS4yYzEuNiAxLjYgMi40IDMuOCAyLjQgNS45IDAgMi4xLS44IDQuMy0yLjQgNS45bDEuMiAxLjJjMi0yIDIuOS00LjUgMi45LTcuMSAwLTIuNi0xLTUuMS0yLjktNy4xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjEgNC4xIDQuOSAyLjlDMyA0LjkgMiA3LjQgMiAxMGMwIDIuNiAxIDUuMSAyLjkgNy4xbDEuMi0xLjJjLTEuNi0xLjYtMi40LTMuOC0yLjQtNS45IDAtMi4xLjgtNC4zIDIuNC01Ljl6TTE2LjcgMTQuN2MxLjMtMS4zIDItMyAyLTQuNy0uMS0xLjctLjctMy40LTItNC43bC0xLjIgMS4yYzEgMSAxLjUgMi4zIDEuNSAzLjUgMCAxLjMtLjUgMi42LTEuNSAzLjVsMS4yIDEuMnpNMTQuNSAxMGEyLjUgMi41IDAgMCAwLTUgMGMwIC43Ni4zNCAxLjQyLjg3IDEuODhMNyAyMmgybC42Ny0yaDQuNjdsLjY2IDJoMmwtMy4zNy0xMC4xMmMuNTMtLjQ2Ljg3LTEuMTIuODctMS44OHptLTQuMTcgOEwxMiAxM2wxLjY3IDVoLTMuMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDZWxsV2lmaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMjJoMTZWNS45N0w2IDIyem0xNC0yaC0ydi03LjIybDItMlYyMHpNNS4yMiA3LjIyIDMuOTMgNS45M2MzLjktMy45MSAxMC4yNC0zLjkxIDE0LjE1IDBsLTEuMjkgMS4yOWMtMy4xOS0zLjE5LTguMzgtMy4xOS0xMS41NyAwem03LjcxIDMuODVMMTEgMTNsLTEuOTMtMS45M2EyLjc0IDIuNzQgMCAwIDEgMy44NiAwem0xLjI5LTEuMjhjLTEuNzgtMS43Ny00LjY2LTEuNzctNi40MyAwTDYuNSA4LjVhNi4zNzQgNi4zNzQgMCAwIDEgOSAwbC0xLjI4IDEuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGF0QnViYmxlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg2bC0yIDJWNGgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoYXRCdWJibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRoMTZ2MTJINS4xN0w0IDE3LjE3VjRtMC0yYy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJINHptMiAxMGg4djJINnYtMnptMC0zaDEydjJINlY5em0wLTNoMTJ2Mkg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbGVhckFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxM2gxNHYtMkg1djJ6bS0yIDRoMTR2LTJIM3Yyek03IDd2MmgxNFY3SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb1ByZXNlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjhoMlY1aDE4djE2YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEwYzAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0IDEuNzkgNCA0IDQgNC0xLjc5IDQtNHptLTYgMGMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yek0xNS4zOSAxNi41NkMxMy43MSAxNS43IDExLjUzIDE1IDkgMTVzLTQuNzEuNy02LjM5IDEuNTZBMi45NyAyLjk3IDAgMCAwIDEgMTkuMjJWMjJoMTZ2LTIuNzhjMC0xLjEyLS42MS0yLjE1LTEuNjEtMi42NnpNMTUgMjBIM2MwLS43Mi0uMS0xLjM0LjUyLTEuNjZDNC43MSAxNy43MyA2LjYzIDE3IDkgMTdjMi4zNyAwIDQuMjkuNzMgNS40OCAxLjM0LjYzLjMyLjUyLjk1LjUyIDEuNjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb21tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45OSA0YzAtMS4xLS44OS0yLTEuOTktMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE0bDQgNC0uMDEtMTh6TTIwIDR2MTMuMTdMMTguODMgMTZINFY0aDE2ek02IDEyaDEydjJINnptMC0zaDEydjJINnptMC0zaDEydjJINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbW1lbnRzRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC44MyAxNkgyMFY0SDYuODNsLTItMkgyMGMxLjEgMCAyIC45IDIgMnYxNS4xN0wxOC44MyAxNnpNMTggNkg4LjgzbDIgMkgxOFY2em0wIDNoLTYuMTdsMiAySDE4Vjl6bTAgNXYtMmgtMy4xN2wyIDJIMTh6bTMuOSA3LjktMS40MSAxLjQxTDE1LjE3IDE4SDRjLTEuMSAwLTItLjktMi0yVjQuODNMLjY5IDMuNTEgMi4xIDIuMWwxOS44IDE5Ljh6TTEzLjE3IDE2bC0yLTJINnYtMmgzLjE3bC0xLTFINlY5aC4xN0w0IDYuODNWMTZoOS4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRhY3RFbWVyZ2VuY3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE0YzEuNjUgMCAzLTEuMzUgMy0zcy0xLjM1LTMtMy0zLTMgMS4zNS0zIDMgMS4zNSAzIDMgM3ptMC00Yy41NCAwIDEgLjQ2IDEgMXMtLjQ2IDEtMSAxLTEtLjQ2LTEtMSAuNDYtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDNIMkMuOSAzIDAgMy45IDAgNXYxNGMwIDEuMS45IDIgMiAyaDIwYzEuMSAwIDEuOTktLjkgMS45OS0yTDI0IDVjMC0xLjEtLjktMi0yLTJ6TTQuNTQgMTljMS4xLTEuMjIgMi42OS0yIDQuNDYtMnMzLjM2Ljc4IDQuNDYgMkg0LjU0ek0yMiAxOWgtNi4wOGMtMS4zOC0yLjM5LTMuOTYtNC02LjkyLTRzLTUuNTQgMS42MS02LjkyIDRIMlY1aDIwdjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS43OCAxMS4xNSAxLjQ3LS44NVYxMmgxLjV2LTEuN2wxLjQ3Ljg1Ljc1LTEuM0wxOS41IDlsMS40Ny0uODUtLjc1LTEuMy0xLjQ3Ljg1VjZoLTEuNXYxLjdsLTEuNDctLjg1LS43NSAxLjNMMTYuNSA5bC0xLjQ3Ljg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGFjdE1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAzSDJDLjkgMyAwIDMuOSAwIDV2MTRjMCAxLjEuOSAyIDIgMmgyMGMxLjEgMCAxLjk5LS45IDEuOTktMkwyNCA1YzAtMS4xLS45LTItMi0yem0wIDE2SDJWNWgyMHYxNHpNMjEgNmgtN3Y1aDdWNnptLTEgMi0yLjUgMS43NUwxNSA4VjdsMi41IDEuNzVMMjAgN3Yxek05IDEyYzEuNjUgMCAzLTEuMzUgMy0zcy0xLjM1LTMtMy0zLTMgMS4zNS0zIDMgMS4zNSAzIDMgM3ptMC00Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTYgOC41OWMwLTIuNS0zLjk3LTMuNTgtNi0zLjU4cy02IDEuMDgtNiAzLjU4VjE4aDEydi0xLjQxek01LjQ4IDE2Yy43NC0uNSAyLjIyLTEgMy41Mi0xczIuNzcuNDkgMy41MiAxSDUuNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb250YWN0UGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDNIMkMuOSAzIDAgMy45IDAgNXYxNGMwIDEuMS45IDIgMiAyaDIwYzEuMSAwIDEuOTktLjkgMS45OS0yTDI0IDVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIMlY1aDIwdjE0em0tMi45OS0xLjAxTDIxIDE2bC0xLjUxLTJoLTEuNjRjLS4yMi0uNjMtLjM1LTEuMy0uMzUtMnMuMTMtMS4zNy4zNS0yaDEuNjRMMjEgOGwtMS45OS0xLjk5QTcuNDc0IDcuNDc0IDAgMCAwIDE2LjI4IDEwYy0uMTguNjQtLjI4IDEuMzEtLjI4IDJzLjEgMS4zNi4yOCAyYTcuNTEyIDcuNTEyIDAgMCAwIDIuNzMgMy45OXpNOSAxMmMxLjY1IDAgMy0xLjM1IDMtM3MtMS4zNS0zLTMtMy0zIDEuMzUtMyAzIDEuMzUgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem02IDguNTljMC0yLjUtMy45Ny0zLjU4LTYtMy41OHMtNiAxLjA4LTYgMy41OFYxOGgxMnYtMS40MXpNNS40OCAxNmMuNzQtLjUgMi4yMi0xIDMuNTItMXMyLjc3LjQ5IDMuNTIgMUg1LjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGFjdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDRWNmgxNnYxMnpNNCAwaDE2djJINHptMCAyMmgxNnYySDR6bTgtMTBhMi41IDIuNSAwIDAgMCAwLTUgMi41IDIuNSAwIDAgMCAwIDV6bTAtMy41Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTUgNy40OUMxNyAxMy45IDEzLjY5IDEzIDEyIDEzcy01IC45LTUgMi45OVYxN2gxMHYtMS4wMXptLTguMTktLjQ5Yy42MS0uNTIgMi4wMy0xIDMuMTktMSAxLjE3IDAgMi41OS40OCAzLjIgMUg4LjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVza3RvcEFjY2Vzc0Rpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjQxIDEuNjkgMCAzLjFsMSAuOTlWMTZjMCAxLjEuODkgMiAxLjk5IDJIMTB2Mkg4djJoOHYtMmgtMnYtMmguOWw2IDYgMS40MS0xLjQxLTIwLjktMjAuOXpNMi45OSAxNlY2LjA5TDEyLjkgMTZIMi45OXpNNC41NSAybDIgMkgyMXYxMmgtMi40NWwyIDJoLjQ0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJINC41NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpYWxlclNpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgM2gxdjVoLTF6bS0xIDJoLTJWNGgyVjNoLTN2M2gydjFoLTJ2MWgzem0zLTJ2NWgxVjZoMlYzaC0zem0yIDJoLTFWNGgxdjF6bTAgMTAuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTdhLjk4NC45ODQgMCAwIDAtMS4wMS4yNGwtMi4yIDIuMmExNS4wNDUgMTUuMDQ1IDAgMCAxLTYuNTktNi41OWwyLjItMi4yMWMuMjctLjI2LjM1LS42NS4yNC0xQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjVjMC0uNTUtLjQ1LTEtMS0xek01LjAzIDVoMS41Yy4wNy44OC4yMiAxLjc1LjQ2IDIuNTlMNS43OSA4LjhjLS40MS0xLjIxLS42Ny0yLjQ4LS43Ni0zLjh6TTE5IDE4Ljk3Yy0xLjMyLS4wOS0yLjU5LS4zNS0zLjgtLjc1bDEuMi0xLjJjLjg1LjI0IDEuNzEuMzkgMi41OS40NXYxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaWFscGFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxOWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6TTYgMWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTEyLThjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0tNiA4Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNiAwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMC02Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptLTYgMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAtNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb2N1bWVudFNjYW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDNINHYzSDJWMWg1djJ6bTE1IDNWMWgtNXYyaDN2M2gyek03IDIxSDR2LTNIMnY1aDV2LTJ6bTEzLTN2M2gtM3YyaDV2LTVoLTJ6TTE3IDZIN3YxMmgxMFY2em0yIDEyYzAgMS4xLS45IDItMiAySDdjLTEuMSAwLTItLjktMi0yVjZjMC0xLjEuOS0yIDItMmgxMGMxLjEgMCAyIC45IDIgMnYxMnpNMTUgOEg5djJoNlY4em0wIDNIOXYyaDZ2LTJ6bTAgM0g5djJoNnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvbWFpbkRpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjQxIDEuNjkgMCAzLjFsMiAyVjIxaDE1LjlsMyAzIDEuNDEtMS40MS0yMC45LTIwLjl6TTYgMTlINHYtMmgydjJ6bTAtNEg0di0yaDJ2MnptLTItNFY5aDJ2Mkg0em02IDhIOHYtMmgydjJ6bS0yLTR2LTJoMnYySDh6bTQgNHYtMmgxLjlsMiAySDEyek04IDVoMnYyaC0uNDVMMTIgOS40NVY5aDh2OC40NWwyIDJWN0gxMlYzSDUuNTVMOCA1LjQ1em04IDZoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9tYWluVmVyaWZpY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuNiAxMC44OC0xLjQyLTEuNDItNC4yNCA0LjI1LTIuMTItMi4xM0w3LjQgMTNsMy41NCAzLjU0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZhMiAyIDAgMCAwLTItMnptMCAxNEg1VjhoMTR2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEdW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJoLThDNi4zOCAyIDIgNi42NiAyIDEyLjI4IDIgMTcuNSA2LjQ5IDIyIDExLjcyIDIyIDE3LjM5IDIyIDIyIDE3LjYyIDIyIDEyVjRjMC0xLjEtLjktMi0yLTJ6bS0zIDEzLTMtMnYySDdWOWg3djJsMy0ydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbWFpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZ6bS0yIDAtOCA1LTgtNWgxNnptMCAxMkg0VjhsOCA1IDgtNXYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcnVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA0djdINS4xN0w0IDEyLjE3VjRoMTFtMS0ySDNjLS41NSAwLTEgLjQ1LTEgMXYxNGw0LTRoMTBjLjU1IDAgMS0uNDUgMS0xVjNjMC0uNTUtLjQ1LTEtMS0xem01IDRoLTJ2OUg2djJjMCAuNTUuNDUgMSAxIDFoMTFsNCA0VjdjMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9yd2FyZFRvSW5ib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoOXYtMkg0VjhsOCA1IDgtNXY1aDJWNmMwLTEuMS0uOS0yLTItMnptLTggN0w0IDZoMTZsLTggNXptNyA0IDQgNC00IDR2LTNoLTR2LTJoNHYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvdXJnbGFzc0JvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDIyLS4wMS02TDE0IDEybDMuOTktNC4wMUwxOCAySDZ2Nmw0IDQtNCAzLjk5VjIyaDEyek04IDcuNVY0aDh2My41bC00IDQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG91cmdsYXNzVG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNiAyIC4wMSA2TDEwIDEybC0zLjk5IDQuMDFMNiAyMmgxMnYtNmwtNC00IDQtMy45OVYySDZ6bTEwIDE0LjVWMjBIOHYtMy41bDQtNCA0IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIdWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA2LjVhMi45OTYgMi45OTYgMCAwIDAtMi45OSAzLjIxbC0yLjAzLjY4YTQuNDY4IDQuNDY4IDAgMCAwLTMuMjItMi4zMlY1LjkxQTMuMDE4IDMuMDE4IDAgMCAwIDE1IDNjMC0xLjY2LTEuMzQtMy0zLTNTOSAxLjM0IDkgM2MwIDEuNC45NiAyLjU3IDIuMjUgMi45MXYyLjE2Yy0xLjQuMjMtMi41OCAxLjExLTMuMjIgMi4zMmwtMi4wNC0uNjhDNiA5LjY0IDYgOS41NyA2IDkuNWMwLTEuNjYtMS4zNC0zLTMtM3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzYzEuMDYgMCAxLjk4LS41NSAyLjUyLTEuMzdsMi4wMy42OGMtLjIgMS4yOS4xNyAyLjY2IDEuMDkgMy42OWwtMS40MSAxLjc3QzYuODUgMTcuMDkgNi40NCAxNyA2IDE3Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTNjMC0uNjgtLjIyLTEuMy0uNi0xLjhsMS40MS0xLjc3YzEuMzYuNzYgMy4wMi43NSA0LjM3IDBsMS40MSAxLjc3Yy0uMzcuNS0uNTkgMS4xMi0uNTkgMS44IDAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTMtMS4zNC0zLTMtM2MtLjQ0IDAtLjg1LjA5LTEuMjMuMjZsLTEuNDEtMS43N2E0LjQ5IDQuNDkgMCAwIDAgMS4wOS0zLjY5bDIuMDMtLjY4Yy41My44MiAxLjQ2IDEuMzcgMi41MiAxLjM3IDEuNjYgMCAzLTEuMzQgMy0zUzIyLjY2IDYuNSAyMSA2LjV6bS0xOCA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6TTYgMjFjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptNS0xOGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDEtLjQ1IDEtMSAxLTEtLjQ1LTEtMXptMSAxMmEyLjUgMi41IDAgMCAxIDAtNSAyLjUgMi41IDAgMCAxIDAgNXptNiA0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTMtOC41Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbXBvcnRDb250YWN0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVjLTEuMTEtLjM1LTIuMzMtLjUtMy41LS41LTEuOTUgMC00LjA1LjQtNS41IDEuNS0xLjQ1LTEuMS0zLjU1LTEuNS01LjUtMS41UzIuNDUgNC45IDEgNnYxNC42NWMwIC4yNS4yNS41LjUuNS4xIDAgLjE1LS4wNS4yNS0uMDVDMy4xIDIwLjQ1IDUuMDUgMjAgNi41IDIwYzEuOTUgMCA0LjA1LjQgNS41IDEuNSAxLjM1LS44NSAzLjgtMS41IDUuNS0xLjUgMS42NSAwIDMuMzUuMyA0Ljc1IDEuMDUuMS4wNS4xNS4wNS4yNS4wNS4yNSAwIC41LS4yNS41LS41VjZjLS42LS40NS0xLjI1LS43NS0yLTF6bTAgMTMuNWMtMS4xLS4zNS0yLjMtLjUtMy41LS41LTEuNyAwLTQuMTUuNjUtNS41IDEuNVY4YzEuMzUtLjg1IDMuOC0xLjUgNS41LTEuNSAxLjIgMCAyLjQuMTUgMy41LjV2MTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUltcG9ydEV4cG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAzIDUgNi45OWgzVjE0aDJWNi45OWgzTDkgM3ptNyAxNC4wMVYxMGgtMnY3LjAxaC0zTDE1IDIxbDQtMy45OWgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUludmVydENvbG9yc09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjJsNC4yIDQuMmE3LjczIDcuNzMgMCAwIDAtMS42IDQuN0M0IDE3LjQ4IDcuNTggMjEgMTIgMjFjMS43NSAwIDMuMzYtLjU2IDQuNjctMS41bDMuMSAzLjEgMS40Mi0xLjQxek0xMiAxOWMtMy4zMSAwLTYtMi42My02LTUuODcgMC0xLjE5LjM2LTIuMzIgMS4wMi0zLjI4TDEyIDE0LjgzVjE5ek04LjM4IDUuNTYgMTIgMmw1LjY1IDUuNTZDMTkuMSA4Ljk5IDIwIDEwLjk2IDIwIDEzLjEzYzAgMS4xOC0uMjcgMi4yOS0uNzQgMy4zTDEyIDkuMTdWNC44MUw5LjggNi45NyA4LjM4IDUuNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMC43IDEzLjUzLTEuNzEtMS43MWMuMDEuMDYuMDEuMTIuMDEuMTggMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yYy4wNiAwIC4xMiAwIC4xOC4wMUw1LjQ3IDguM0M0LjAyIDguOSAzIDEwLjMzIDMgMTJjMCAyLjIxIDEuNzkgNCA0IDQgMS42NyAwIDMuMS0xLjAyIDMuNy0yLjQ3em0xLjQ5IDEuNDlBNi4wMTIgNi4wMTIgMCAwIDEgNyAxOGMtMy4zMSAwLTYtMi42OS02LTYgMC0yLjIxIDEuMi00LjE1IDIuOTgtNS4xOUwxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40MSAxLjQxLTcuNTgtNy41OHptNC4wNy0xLjU5IDEuMjQtLjkzIDEuODEgMS4zNkwyMS4xNyAxMmwtMS0xaC02LjM0bC0yLTJIMjFsMyAzLTQuNSA0LjUtLjY5LS41MS0yLjU1LTIuNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMGgtOC4zNUE1Ljk5IDUuOTkgMCAwIDAgNyA2Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2YTUuOTkgNS45OSAwIDAgMCA1LjY1LTRIMTNsMiAyIDItMiAyIDIgNC00LjA0TDIxIDEwek03IDE1Yy0xLjY1IDAtMy0xLjM1LTMtM3MxLjM1LTMgMy0zIDMgMS4zNSAzIDMtMS4zNSAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpc3RBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDdoNnYyaC02em0wIDRoNnYyaC02em0wIDRoNnYyaC02ek03IDdoMnYySDd6bTAgNGgydjJIN3ptMCA0aDJ2Mkg3ek0yMC4xIDNIMy45Yy0uNSAwLS45LjQtLjkuOXYxNi4yYzAgLjQuNC45LjkuOWgxNi4yYy40IDAgLjktLjUuOS0uOVYzLjljMC0uNS0uNS0uOS0uOS0uOXpNMTkgMTlINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGl2ZUhlbHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoNGwzIDMgMy0zaDRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNmgtNC44M2wtLjU5LjU5TDEyIDIwLjE3bC0xLjU5LTEuNTktLjU4LS41OEg1VjRoMTR2MTR6bS04LTNoMnYyaC0yem0xLThjMS4xIDAgMiAuOSAyIDIgMCAyLTMgMS43NS0zIDVoMmMwLTIuMjUgMy0yLjUgMy01IDAtMi4yMS0xLjc5LTQtNC00UzggNi43OSA4IDloMmMwLTEuMS45LTIgMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYXRpb25PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjMi43NiAwIDUgMi4yNCA1IDUgMCAxLjA2LS4zOSAyLjMyLTEgMy42MmwxLjQ5IDEuNDlDMTguMzcgMTIuMzYgMTkgMTAuNTcgMTkgOWMwLTMuODctMy4xMy03LTctNy0xLjg0IDAtMy41LjcxLTQuNzUgMS44NmwxLjQzIDEuNDNDOS41NiA0LjUgMTAuNzIgNCAxMiA0em0wIDIuNWMtLjU5IDAtMS4xMy4yMS0xLjU2LjU2bDMuNSAzLjVjLjM1LS40My41Ni0uOTcuNTYtMS41NkEyLjUgMi41IDAgMCAwIDEyIDYuNXpNMy40MSAyLjg2IDIgNC4yN2wzLjE4IDMuMThDNS4wNyA3Ljk1IDUgOC40NyA1IDljMCA1LjI1IDcgMTMgNyAxM3MxLjY3LTEuODUgMy4zOC00LjM1TDE4LjczIDIxbDEuNDEtMS40MUwzLjQxIDIuODZ6TTEyIDE4Ljg4Yy0yLjAxLTIuNTgtNC44LTYuNzQtNC45OC05LjU5bDYuOTIgNi45MmMtLjY1Ljk4LTEuMzMgMS44OS0xLjk0IDIuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhdGlvbk9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzguMTMgMiA1IDUuMTMgNSA5YzAgNS4yNSA3IDEzIDcgMTNzNy03Ljc1IDctMTNjMC0zLjg3LTMuMTMtNy03LTd6TTcgOWMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMi44OC0yLjg4IDcuMTktNSA5Ljg4QzkuOTIgMTYuMjEgNyAxMS44NSA3IDl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI5XCIsXCJyXCI6XCIyLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1haWxMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNCA4IDggNSA4LTV2MmgyVjZjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTJ2LTJINFY4em0xNi0yLTggNS04LTVoMTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDE1di0xYzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnYxYy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTF6bS0zIDB2LTFjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjFoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYWlsT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDRWOGw4IDUgOC01djEwem0tOC03TDQgNmgxNmwtOCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFya0NoYXRSZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMThINmwtNCA0VjRjMC0xLjEuOS0yIDItMmgxNmMxLjEgMCAyIC45IDIgMnY3aC0yVjRINHYxMmg4djJ6bTExLTMuNjYtMS40MS0xLjQxLTQuMjQgNC4yNC0yLjEyLTIuMTItMS40MSAxLjQxTDE3LjM0IDIwIDIzIDE0LjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFya0NoYXRVbnJlYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA2Ljk4VjE2YzAgMS4xLS45IDItMiAySDZsLTQgNFY0YzAtMS4xLjktMiAyLTJoMTAuMWMtLjA2LjMyLS4xLjY2LS4xIDFzLjA0LjY4LjEgMUg0djEyaDE2VjcuOWMuNzQtLjE1IDEuNDItLjQ4IDItLjkyek0xNiAzYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTMtMS4zNC0zLTMtMy0zIDEuMzQtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFya0VtYWlsUmVhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoOHYtMkg0VjhsOCA1IDgtNXY1aDJWNmMwLTEuMS0uOS0yLTItMnptLTggN0w0IDZoMTZsLTggNXptNS4zNCAxMS0zLjU0LTMuNTQgMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjRMMjMgMTYuMzQgMTcuMzQgMjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYXJrRW1haWxVbnJlYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA4Ljk4VjE4YzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0ybC4wMS0xMmMwLTEuMS44OS0yIDEuOTktMmgxMC4xYy0uMDYuMzItLjEuNjYtLjEgMXMuMDQuNjguMSAxSDRsOCA1IDMuNjctMi4yOWMuNDcuNDMgMS4wMi43NiAxLjYzLjk4TDEyIDEzIDQgOHYxMGgxNlY5LjljLjc0LS4xNSAxLjQyLS40OCAyLS45MnpNMTYgNWMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zLTEuMzQtMy0zLTMtMyAxLjM0LTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hcmtVbnJlYWRDaGF0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTZINFY0aDEwLjFhNSA1IDAgMCAxIDAtMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNi45OGMtLjU4LjQ0LTEuMjYuNzctMiAuOTJWMTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTlcIixcImN5XCI6XCIzXCIsXCJyXCI6XCIzXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTJoOHYySDZ6TTYgOWgxMnYySDZ6TTYgOGgxMnYtLjFBNS4wMTMgNS4wMTMgMCAwIDEgMTUuMDMgNkg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZXNzYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRoMTZ2MTJINS4xN0w0IDE3LjE3VjRtMC0yYy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJINHptMiAxMGgxMnYySDZ2LTJ6bTAtM2gxMnYySDZWOXptMC0zaDEydjJINlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9iaWxlU2NyZWVuU2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDFIN2MtMS4xIDAtMS45OS44NS0xLjk5IDEuOTV2MThDNS4wMSAyMi4wNSA1LjkgMjMgNyAyM2gxMGMxLjEgMCAyLS45NSAyLTIuMDV2LTE4QzE5IDEuODUgMTguMSAxIDE3IDF6bTAgMThIN1Y1aDEwdjE0em0tNC4yLTUuNzZ2MS43NUwxNiAxMmwtMy4yLTIuOTh2MS43Yy0zLjExLjQzLTQuMzUgMi41Ni00LjggNC43IDEuMTEtMS41IDIuNTgtMi4xOCA0LjgtMi4xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vcmVUaW1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgOHY2bDQuNyAyLjkuOC0xLjItNC0yLjRWOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuOTIgMTJBNi45NTcgNi45NTcgMCAwIDEgMTEgMjBjLTMuOSAwLTctMy4xLTctN3MzLjEtNyA3LTdjLjcgMCAxLjM3LjEgMiAuMjlWNC4yM2MtLjY0LS4xNS0xLjMxLS4yMy0yLS4yMy01IDAtOSA0LTkgOXM0IDkgOSA5YTguOTYzIDguOTYzIDAgMCAwIDguOTQtMTBoLTIuMDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVWMmgtMnYzaC0zdjJoM3YzaDJWN2gzVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjgyIDEzSDExdi0ySDYuODJDNi40IDkuODQgNS4zIDkgNCA5Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzYzEuMyAwIDIuNC0uODQgMi44Mi0yek00IDEzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIzIDEyLTQtM3YyaC00LjA1Yy0uNS01LjA1LTQuNzYtOS05Ljk1LTl2MmM0LjQyIDAgOCAzLjU4IDggOHMtMy41OCA4LTggOHYyYzUuMTkgMCA5LjQ1LTMuOTUgOS45NS05SDE5djJsNC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9TaW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS4yNiAyMS4yMSAzLjc5IDMuNzQgMi4zOCA1LjE1bDIuNzQgMi43NC0uMTIuMTJWMTljMCAxLjEuOSAyIDIgMmgxMGMuMzUgMCAuNjgtLjEuOTctLjI2bDEuODggMS44OCAxLjQxLTEuNDF6TTcgMTlWOS43N0wxNi4yMyAxOUg3em0zLjg0LTE0SDE3djkuMTFsMiAyVjVjMC0xLjEtLjktMi0yLTJoLTYuOTlMNy45NSA1LjA2bDEuNDEgMS40MUwxMC44NCA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGF1c2VQcmVzZW50YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuODUtMiAxLjk1djE0YzAgMS4xLjkgMi4wNSAyIDIuMDVoMThjMS4xIDAgMi0uOTUgMi0yLjA1di0xNEMyMyAzLjg1IDIyLjEgMyAyMSAzem0wIDE2SDNWNWgxOHYxNHpNOSA4aDJ2OEg5em00IDBoMnY4aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVyc29uQWRkRGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDZjMS4xIDAgMiAuOSAyIDJhMiAyIDAgMCAxLTEuNjcgMS45N2wtMi4zMS0yLjMxQzEzLjE5IDYuNzIgMTQuMDEgNiAxNSA2bTAtMmMtMi4yMSAwLTQgMS43OS00IDQgMCAuMTguMDMuMzUuMDUuNTJsMy40MyAzLjQzYy4xNy4wMi4zNC4wNS41Mi4wNSAyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNHptMS42OSAxMC4xNkwyMi41MyAyMEgyM3YtMmMwLTIuMTQtMy41Ni0zLjUtNi4zMS0zLjg0em0tMy42OCAxLjk3TDE0Ljg4IDE4SDljLjA4LS4yNC44OC0xLjAxIDIuOTEtMS41N2wxLjEtLjNNMS40MSAxLjcxIDAgMy4xMmw0IDRWMTBIMXYyaDN2M2gydi0zaDIuODhsMi41MSAyLjUxQzkuMTkgMTUuMTEgNyAxNi4zIDcgMTh2Mmg5Ljg4bDQgNCAxLjQxLTEuNDFMMS40MSAxLjcxek02IDEwdi0uODhsLjg4Ljg4SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25TZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6TTQgMThjLjIyLS43MiAzLjMxLTIgNi0yIDAtLjcuMTMtMS4zNy4zNS0xLjk5QzcuNjIgMTMuOTEgMiAxNS4yNyAyIDE4djJoOS41NGMtLjUyLS41OC0uOTMtMS4yNS0xLjE5LTJINHpNMTkuNDMgMTguMDJjLjM2LS41OS41Ny0xLjI4LjU3LTIuMDIgMC0yLjIxLTEuNzktNC00LTRzLTQgMS43OS00IDQgMS43OSA0IDQgNGMuNzQgMCAxLjQzLS4yMiAyLjAyLS41N0wyMC41OSAyMiAyMiAyMC41OWMtMS41LTEuNS0uNzktLjgtMi41Ny0yLjU3ek0xNiAxOGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZURpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMzQgMTQuNTQtMS40My0xLjQzYy41Ni0uNzMgMS4wNS0xLjUgMS40Ny0yLjMybC0yLjItMi4yYy0uMjgtLjI4LS4zNi0uNjctLjI1LTEuMDIuMzctMS4xMi41Ny0yLjMyLjU3LTMuNTcgMC0uNTUuNDUtMSAxLTFIMjBjLjU1IDAgMSAuNDUgMSAxIDAgMy45OC0xLjM3IDcuNjQtMy42NiAxMC41NHptLTIuODIgMi44MUExNi44ODQgMTYuODg0IDAgMCAxIDQgMjFjLS41NSAwLTEtLjQ1LTEtMXYtMy40OWMwLS41NS40NS0xIDEtMSAxLjI0IDAgMi40NS0uMiAzLjU3LS41Ny4xLS4wNC4yMS0uMDUuMzEtLjA1LjI2IDAgLjUxLjEuNzEuMjlsMi4yIDIuMmMuODEtLjQyIDEuNTgtLjkgMi4zLTEuNDZMMS4zOSA0LjIybDEuNDItMS40MUwyMS4xOSAyMS4ybC0xLjQxIDEuNDEtNS4yNi01LjI2em0tNi45Mi0uMzNjLS44NS4yNC0xLjcyLjM5LTIuNi40NXYxLjQ5YzEuMzItLjA5IDIuNTktLjM1IDMuOC0uNzVsLTEuMi0xLjE5ek0xNy40NiA1Yy0uMDYuODktLjIxIDEuNzYtLjQ1IDIuNTlsMS4yIDEuMmMuNDEtMS4yLjY3LTIuNDcuNzYtMy43OWgtMS41MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lRW5hYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjQ2IDVjLS4wNi44OS0uMjEgMS43Ni0uNDUgMi41OWwxLjIgMS4yYy40MS0xLjIuNjctMi40Ny43Ni0zLjc5aC0xLjUxek03LjYgMTcuMDJjLS44NS4yNC0xLjcyLjM5LTIuNi40NXYxLjQ5YzEuMzItLjA5IDIuNTktLjM1IDMuOC0uNzVsLTEuMi0xLjE5ek0xNi41IDNIMjBjLjU1IDAgMSAuNDUgMSAxIDAgOS4zOS03LjYxIDE3LTE3IDE3LS41NSAwLTEtLjQ1LTEtMXYtMy40OWMwLS41NS40NS0xIDEtMSAxLjI0IDAgMi40NS0uMiAzLjU3LS41Ny4xLS4wNC4yMS0uMDUuMzEtLjA1LjI2IDAgLjUxLjEuNzEuMjlsMi4yIDIuMmMyLjgzLTEuNDUgNS4xNS0zLjc2IDYuNTktNi41OWwtMi4yLTIuMmMtLjI4LS4yOC0uMzYtLjY3LS4yNS0xLjAyLjM3LTEuMTIuNTctMi4zMi41Ny0zLjU3IDAtLjU1LjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNTQgNWMuMDYuODkuMjEgMS43Ni40NSAyLjU5bC0xLjIgMS4yYy0uNDEtMS4yLS42Ny0yLjQ3LS43Ni0zLjc5aDEuNTFtOS44NiAxMi4wMmMuODUuMjQgMS43Mi4zOSAyLjYuNDV2MS40OWMtMS4zMi0uMDktMi41OS0uMzUtMy44LS43NWwxLjItMS4xOU03LjUgM0g0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjQ5YzAtLjU1LS40NS0xLTEtMS0xLjI0IDAtMi40NS0uMi0zLjU3LS41N2EuODQuODQgMCAwIDAtLjMxLS4wNWMtLjI2IDAtLjUxLjEtLjcxLjI5bC0yLjIgMi4yYTE1LjE0OSAxNS4xNDkgMCAwIDEtNi41OS02LjU5bDIuMi0yLjJjLjI4LS4yOC4zNi0uNjcuMjUtMS4wMkExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZWxpbmtFcmFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgOC4yLTEtMS00IDQtNC00LTEgMSA0IDQtNCA0IDEgMSA0LTQgNCA0IDEtMS00LTQgNC00ek0xOSAxSDljLTEuMSAwLTIgLjktMiAydjNoMlY0aDEwdjE2SDl2LTJIN3YzYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lbGlua0xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDFIOWMtMS4xIDAtMiAuOS0yIDJ2M2gyVjRoMTB2MTZIOXYtMkg3djNjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0tOC4yIDEwVjkuNUMxMC44IDguMSA5LjQgNyA4IDdTNS4yIDguMSA1LjIgOS41VjExYy0uNiAwLTEuMi42LTEuMiAxLjJ2My41YzAgLjcuNiAxLjMgMS4yIDEuM2g1LjVjLjcgMCAxLjMtLjYgMS4zLTEuMnYtMy41YzAtLjctLjYtMS4zLTEuMi0xLjN6bS0xLjMgMGgtM1Y5LjVjMC0uOC43LTEuMyAxLjUtMS4zczEuNS41IDEuNSAxLjNWMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZWxpbmtSaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC4xIDcuNy0xIDFjMS44IDEuOCAxLjggNC42IDAgNi41bDEgMWMyLjUtMi4zIDIuNS02LjEgMC04LjV6TTE4IDkuOGwtMSAxYy41LjcuNSAxLjYgMCAyLjNsMSAxYzEuMi0xLjIgMS4yLTMgMC00LjN6TTE0IDFINGMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE5SDRWNGgxMHYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lbGlua1NldHVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDN2M2gyVjRoMTB2MTZIOXYtMkg3djNjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0ySDljLTEuMSAwLTIgLjktMiAyem0yLjUgMTIuNWMuMjktLjEyLjU1LS4yOS44LS40OGwtLjAyLjAzIDEuMDEuMzljLjIzLjA5LjQ5IDAgLjYxLS4yMmwuODQtMS40NmMuMTItLjIxLjA3LS40OS0uMTItLjY0bC0uODUtLjY4LS4wMi4wM2MuMDItLjE2LjA1LS4zMi4wNS0uNDhzLS4wMy0uMzItLjA1LS40OGwuMDIuMDMuODUtLjY4Yy4xOS0uMTUuMjQtLjQzLjEyLS42NGwtLjg0LTEuNDZhLjQ5OS40OTkgMCAwIDAtLjYxLS4yMmwtMS4wMS4zOS4wMi4wM2MtLjI1LS4xNy0uNTEtLjM0LS44LS40NmwtLjE3LTEuMDhBLjQ4OC40ODggMCAwIDAgOC44NCA3SDcuMTZjLS4yNSAwLS40Ni4xOC0uNDkuNDJMNi41IDguNWMtLjI5LjEyLS41NS4yOS0uOC40OGwuMDItLjAzLTEuMDItLjM5Yy0uMjMtLjA5LS40OSAwLS42MS4yMmwtLjg0IDEuNDZjLS4xMi4yMS0uMDcuNDkuMTIuNjRsLjg1LjY4LjAyLS4wM2MtLjAyLjE1LS4wNS4zMS0uMDUuNDdzLjAzLjMyLjA1LjQ4bC0uMDItLjAzLS44NS42OGMtLjE5LjE1LS4yNC40My0uMTIuNjRsLjg0IDEuNDZjLjEyLjIxLjM4LjMxLjYxLjIybDEuMDEtLjM5LS4wMS0uMDRjLjI1LjE5LjUxLjM2LjguNDhsLjE3IDEuMDdjLjAzLjI1LjI0LjQzLjQ5LjQzaDEuNjhjLjI1IDAgLjQ2LS4xOC40OS0uNDJsLjE3LTEuMDh6TTYgMTJjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvcnRhYmxlV2lmaU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy40MiAyLjM2IDIuMDEgMy43OCA0LjEgNS44N0MyLjc5IDcuNTcgMiA5LjY5IDIgMTJjMCAzLjcgMi4wMSA2LjkyIDQuOTkgOC42NWwxLTEuNzNDNS42MSAxNy41MyA0IDE0Ljk2IDQgMTJjMC0xLjc2LjU3LTMuMzggMS41My00LjY5bDEuNDMgMS40NEM2LjM2IDkuNjggNiAxMC44IDYgMTJjMCAyLjIyIDEuMjEgNC4xNSAzIDUuMTlsMS0xLjc0Yy0xLjE5LS43LTItMS45Ny0yLTMuNDUgMC0uNjUuMTctMS4yNS40NC0xLjc5bDEuNTggMS41OEwxMCAxMmMwIDEuMS45IDIgMiAybC4yMS0uMDIgNy41MiA3LjUyIDEuNDEtMS40MUwzLjQyIDIuMzZ6bTE0LjI5IDExLjQ2Yy4xOC0uNTcuMjktMS4xOS4yOS0xLjgyIDAtMy4zMS0yLjY5LTYtNi02LS42MyAwLTEuMjUuMTEtMS44Mi4yOWwxLjcyIDEuNzJjLjAzIDAgLjA2LS4wMS4xLS4wMSAyLjIxIDAgNCAxLjc5IDQgNCAwIC4wNC0uMDEuMDctLjAxLjExbDEuNzIgMS43MXpNMTIgNGM0LjQyIDAgOCAzLjU4IDggOCAwIDEuMi0uMjkgMi4zMi0uNzcgMy4zNWwxLjQ5IDEuNDlBOS44MiA5LjgyIDAgMCAwIDIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwLTEuNzYgMC0zLjQuNDgtNC44NCAxLjI4bDEuNDggMS40OEM5LjY2IDQuMjggMTAuOCA0IDEyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQcmVzZW50VG9BbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xMSAwLTIgLjg5LTIgMnYxNGMwIDEuMTEuODkgMiAyIDJoMThjMS4xMSAwIDItLjg5IDItMlY1YzAtMS4xMS0uODktMi0yLTJ6bTAgMTYuMDJIM1Y0Ljk4aDE4djE0LjA0ek0xMCAxMkg4bDQtNCA0IDRoLTJ2NGgtNHYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVByaW50RGlzYWJsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjQxIDEuNiAwIDMuMDEgNSA4Yy0xLjY2IDAtMyAxLjM0LTMgM3Y2aDR2NGgxMmwyLjk1IDIuOTYgMS40MS0xLjQxTDEuNDEgMS42ek02IDE1SDR2LTRjMC0uNTUuNDUtMSAxLTFoMmwzIDNINnYyem0yIDR2LTRoNGw0IDRIOHpNOCA1aDh2M2gtNS4zNGwyIDJIMTljLjU1IDAgMSAuNDUgMSAxdjRsLTIgLjAxVjEzaC0yLjM0bDQgNEgyMnYtNmMwLTEuNjYtMS4zNC0zLTMtM2gtMVYzSDZ2LjM2bDIgMlY1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiMTEuNTFcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVFyQ29kZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyMWgtMnYtMmgydjJ6bS0yLTdoLTJ2NWgydi01em04LTJoLTJ2NGgydi00em0tMi0yaC0ydjJoMnYtMnpNNyAxMkg1djJoMnYtMnptLTItMkgzdjJoMnYtMnptNy01aDJWM2gtMnYyem0tNy41LS41djNoM3YtM2gtM3pNOSA5SDNWM2g2djZ6bS00LjUgNy41djNoM3YtM2gtM3pNOSAyMUgzdi02aDZ2NnptNy41LTE2LjV2M2gzdi0zaC0zek0yMSA5aC02VjNoNnY2em0tMiAxMHYtM2gtNHYyaDJ2M2g0di0yaC0yem0tMi03aC00djJoNHYtMnptLTQtMkg3djJoMnYyaDJ2LTJoMnYtMnptMS0xVjdoLTJWNWgtMnY0aDR6TTYuNzUgNS4yNWgtMS41djEuNWgxLjV2LTEuNXptMCAxMmgtMS41djEuNWgxLjV2LTEuNXptMTItMTJoLTEuNXYxLjVoMS41di0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVRckNvZGVTY2FubmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDYuNXYzaC0zdi0zaDNNMTEgNUg1djZoNlY1em0tMS41IDkuNXYzaC0zdi0zaDNNMTEgMTNINXY2aDZ2LTZ6bTYuNS02LjV2M2gtM3YtM2gzTTE5IDVoLTZ2Nmg2VjV6bS02IDhoMS41djEuNUgxM1YxM3ptMS41IDEuNUgxNlYxNmgtMS41di0xLjV6TTE2IDEzaDEuNXYxLjVIMTZWMTN6bS0zIDNoMS41djEuNUgxM1YxNnptMS41IDEuNUgxNlYxOWgtMS41di0xLjV6TTE2IDE2aDEuNXYxLjVIMTZWMTZ6bTEuNS0xLjVIMTlWMTZoLTEuNXYtMS41em0wIDNIMTlWMTloLTEuNXYtMS41ek0yMiA3aC0yVjRoLTNWMmg1djV6bTAgMTV2LTVoLTJ2M2gtM3YyaDV6TTIgMjJoNXYtMkg0di0zSDJ2NXpNMiAydjVoMlY0aDNWMkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXJDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMWg4VjNIM3Y4em0yLTZoNHY0SDVWNXpNMyAyMWg4di04SDN2OHptMi02aDR2NEg1di00ek0xMyAzdjhoOFYzaC04em02IDZoLTRWNWg0djR6TTE5IDE5aDJ2MmgtMnpNMTMgMTNoMnYyaC0yek0xNSAxNWgydjJoLTJ6TTEzIDE3aDJ2MmgtMnpNMTUgMTloMnYyaC0yek0xNyAxN2gydjJoLTJ6TTE3IDEzaDJ2MmgtMnpNMTkgMTVoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVhZE1vcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3aDl2MmgtOXpNMTMgMTVoOXYyaC05ek0xNiAxMWg2djJoLTZ6TTEzIDEyIDggN3Y0SDJ2Mmg2djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSaW5nVm9sdW1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMy43MSAxNi42N0ExNi45NzEgMTYuOTcxIDAgMCAwIDEyIDEyQzcuNDYgMTIgMy4zNCAxMy43OC4yOSAxNi42N2MtLjE4LjE4LS4yOS40My0uMjkuNzEgMCAuMjguMTEuNTMuMjkuNzFsMi40OCAyLjQ4Yy4xOC4xOC40My4yOS43MS4yOS4yNyAwIC41Mi0uMTEuNy0uMjguNzktLjc0IDEuNjktMS4zNiAyLjY2LTEuODUuMzMtLjE2LjU2LS41LjU2LS45di0zLjFjMS40NS0uNDggMy0uNzMgNC42LS43MyAxLjYgMCAzLjE1LjI1IDQuNi43MnYzLjFjMCAuMzkuMjMuNzQuNTYuOS45OC40OSAxLjg3IDEuMTIgMi42NiAxLjg1LjE4LjE4LjQzLjI4LjcuMjguMjggMCAuNTMtLjExLjcxLS4yOWwyLjQ4LTIuNDhjLjE4LS4xOC4yOS0uNDMuMjktLjcxYS45OS45OSAwIDAgMC0uMjktLjd6bS0xOC4zMS41NmMtLjY2LjM3LTEuMjkuOC0xLjg3IDEuMjdsLTEuMDctMS4wN2MuOTEtLjc1IDEuOS0xLjM5IDIuOTUtMS45djEuN3ptMTUuMDcgMS4yNmMtLjU5LS40OC0xLjIxLS45LTEuODctMS4yN3YtMS43YzEuMDQuNTEgMi4wMyAxLjE1IDIuOTQgMS45bC0xLjA3IDEuMDd6bS42OS0xMi4yMy0xLjQxLTEuNDEtMy41NiAzLjU1IDEuNDEgMS40MXMzLjQ1LTMuNTIgMy41Ni0zLjU1ek0xMSAyaDJ2NWgtMnpNNi40IDkuODEgNy44MSA4LjQgNC4yNiA0Ljg0IDIuODQgNi4yNmMuMTEuMDMgMy41NiAzLjU1IDMuNTYgMy41NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJzc0ZlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNi4xOFwiLFwiY3lcIjpcIjE3LjgyXCIsXCJyXCI6XCIyLjE4XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNC40NHYyLjgzYzcuMDMgMCAxMi43MyA1LjcgMTIuNzMgMTIuNzNoMi44M2MwLTguNTktNi45Ny0xNS41Ni0xNS41Ni0xNS41NnptMCA1LjY2djIuODNjMy45IDAgNy4wNyAzLjE3IDcuMDcgNy4wN2gyLjgzYzAtNS40Ny00LjQzLTkuOS05LjktOS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUnR0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOS4wMyAzLTEuMTEgNy4wN2gyLjYybC43LTQuNWgyLjU4TDExLjggMTguNDNIOS40N0w5LjA2IDIxaDcuMjdsLjQtMi41N2gtMi4zNWwyLTEyLjg2aDIuNThsLS43MSA0LjVoMi42NUwyMiAzSDkuMDN6TTggNUg0bC0uMzEgMmg0TDggNXptLS42MSA0aC00bC0uMzEgMmg0bC4zMS0yem0uOTIgOGgtNkwyIDE5aDZsLjMxLTJ6bS42Mi00aC02bC0uMzEgMmg2LjAxbC4zLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY3JlZW5TaGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMThjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjIgNmEyIDIgMCAwIDAtMi0ySDRjLTEuMTEgMC0yIC44OS0yIDJ2MTBhMiAyIDAgMCAwIDIgMkgwdjJoMjR2LTJoLTR6TTQgMTZWNmgxNnYxMC4wMUw0IDE2em05LTYuODdjLTMuODkuNTQtNS40NCAzLjItNiA1Ljg3IDEuMzktMS44NyAzLjIyLTIuNzIgNi0yLjcydjIuMTlsNC0zLjc0TDEzIDd2Mi4xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbmRUaW1lRXh0ZW5zaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNnY2LjI2bDIgMVY2YzAtMS4xLS45LTItMi0yaC00YTIuNSAyLjUgMCAwIDAtNSAwSDUuMDFjLTEuMSAwLTIgLjktMiAydjMuOEM1LjcgOS44IDYgMTEuOTYgNiAxMi41cy0uMjkgMi43LTMgMi43VjE5YzAgMS4xLjkgMiAyIDJoMy44YzAtMi4xNiAxLjM3LTIuNzggMi4yLTIuOTR2LTIuMDNjLTEuNDMuMTctMy4xNSAxLjA0LTMuODcgMi45N0g1di0yLjEzYzIuMTctLjggMy0yLjg3IDMtNC4zNyAwLTEuNDktLjgzLTMuNTYtMi45OS00LjM3VjZIMTFWNGMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXYyaDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEydjRsNCAxLTQgMXY0bDEwLTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW50aW1lbnRTYXRpc2ZpZWRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTZjLTEuNDggMC0yLjc1LS44MS0zLjQ1LTJINi44OGE1LjQ5NSA1LjQ5NSAwIDAgMCAxMC4yNCAwaC0xLjY3Yy0uNjkgMS4xOS0xLjk3IDItMy40NSAyem0tLjAxLTE0QzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRoMTZjMS4xIDAgMiAuOSAyIDJ2MTJjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yem0wIDJ2MTJoMTZWNkg0em03IDNoMnY2aC0yVjl6bTMgMGg0Yy41NSAwIDEgLjQ1IDEgMXYyYzAgLjU1LS40NSAxLTEgMWgtMi41djJIMTRWOXptMy41IDEuNWgtMnYxaDJ2LTF6bS0xMSAuNzVIOWMuNTUgMCAxIC40NSAxIDFWMTRjMCAuNTUtLjQ1IDEtMSAxSDV2LTEuNWgzLjV2LS43NUg2Yy0uNTUgMC0xLS40NS0xLTFWMTBjMC0uNTUuNDUtMSAxLTFoNHYxLjVINi41di43NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwZWFrZXJQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3LjA3IDguNDMgOC41Yy45MS0uOTEgMi4xOC0xLjQ4IDMuNTctMS40OHMyLjY2LjU3IDMuNTcgMS40OEwxNyA3LjA3QzE1LjcyIDUuNzkgMTMuOTUgNSAxMiA1cy0zLjcyLjc5LTUgMi4wN3pNMTIgMUM4Ljk4IDEgNi4yNCAyLjIzIDQuMjUgNC4yMWwxLjQxIDEuNDFDNy4yOCA0IDkuNTMgMyAxMiAzczQuNzIgMSA2LjM0IDIuNjJsMS40MS0xLjQxQTEwLjk2MyAxMC45NjMgMCAwIDAgMTIgMXptMi44NiA5LjAxTDkuMTQgMTBDOC41MSAxMCA4IDEwLjUxIDggMTEuMTR2OS43MWMwIC42My41MSAxLjE0IDEuMTQgMS4xNGg1LjcxYy42MyAwIDEuMTQtLjUxIDEuMTQtMS4xNHYtOS43MWMuMDEtLjYzLS41LTEuMTMtMS4xMy0xLjEzek0xNSAyMEg5di04aDZ2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb2tlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgN2MwLTIuMjEtMS43OS00LTQtNFM4IDQuNzkgOCA3czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptLTQgMmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bS01IDRjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem0xMC02Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCA2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YXlDdXJyZW50TGFuZHNjYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjAxIDcgMSAxN2MwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJIM2MtMS4xIDAtMS45OS45LTEuOTkgMnpNMTkgN3YxMEg1VjdoMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGF5Q3VycmVudFBvcnRyYWl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMS45OS45LTEuOTkgMnYxOGMwIDEuMS44OSAyIDEuOTkgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOUg3VjVoMTB2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGF5UHJpbWFyeUxhbmRzY2FwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMS4wMSA3IDEgMTdjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0ySDNjLTEuMSAwLTEuOTkuOS0xLjk5IDJ6TTE5IDd2MTBINVY3aDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RheVByaW1hcnlQb3J0cmFpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2MThjMCAxLjEuODkgMiAxLjk5IDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMTlIN1Y1aDEwdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RvcFNjcmVlblNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNzkgMTggMiAySDI0di0yaC0yLjIxek0xLjExIDIuOThsMS41NSAxLjU2Yy0uNDEuMzctLjY2Ljg5LS42NiAxLjQ4VjE2YzAgMS4xLjkgMiAyLjAxIDJIMHYyaDE4LjEzbDIuNzEgMi43MSAxLjQxLTEuNDFMMi41MiAxLjU3IDEuMTEgMi45OHpNNCA2LjAyaC4xM2w0Ljk1IDQuOTNDNy45NCAxMi4wNyA3LjMxIDEzLjUyIDcgMTVjLjk2LTEuMjkgMi4xMy0yLjA4IDMuNjctMi40NmwzLjQ2IDMuNDhINHYtMTB6bTE2IDB2MTAuMTlsMS4zIDEuM2MuNDItLjM3LjctLjg5LjctMS40OXYtMTBhMiAyIDAgMCAwLTItMkg3LjhsMiAySDIwem0tNy4wNyAzLjEzIDIuNzkgMi43OCAxLjI4LTEuMkwxMyA3djIuMTNsLS4wNy4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3YXBDYWxscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggNC00IDRoM3Y3YzAgMS4xLS45IDItMiAycy0yLS45LTItMlY4YzAtMi4yMS0xLjc5LTQtNC00UzUgNS43OSA1IDh2N0gybDQgNCA0LTRIN1Y4YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2N2MwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00VjhoM2wtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGV4dHNtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg2bC0yIDJWNGgxNnYxMnpNNyA5aDJ2Mkg3em00IDBoMnYyaC0yem00IDBoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVW5zdWJzY3JpYmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjk5IDE0LjA0VjVjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMC4wNWMuMjggMS45MiAyLjEgMy4zNSA0LjE4IDIuOTMgMS4zNC0uMjcgMi40My0xLjM3IDIuNy0yLjcxLjI1LTEuMjQtLjE2LTIuMzktLjk0LTMuMTh6bS0yLTkuMDRMMTIgOC41IDUgNWgxMy45OXptLTMuNjQgMTBINVY3bDcgMy41TDE5IDd2Ni4wNWMtLjE2LS4wMi0uMzMtLjA1LS41LS4wNS0xLjM5IDAtMi41OS44Mi0zLjE1IDJ6bTUuMTUgMmgtNHYtMWg0djF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWb2ljZW1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgNkMxNS40NiA2IDEzIDguNDYgMTMgMTEuNWMwIDEuMzMuNDcgMi41NSAxLjI2IDMuNUg5Ljc0Yy43OS0uOTUgMS4yNi0yLjE3IDEuMjYtMy41QzExIDguNDYgOC41NCA2IDUuNSA2UzAgOC40NiAwIDExLjUgMi40NiAxNyA1LjUgMTdoMTNjMy4wNCAwIDUuNS0yLjQ2IDUuNS01LjVTMjEuNTQgNiAxOC41IDZ6bS0xMyA5QzMuNTcgMTUgMiAxMy40MyAyIDExLjVTMy41NyA4IDUuNSA4IDkgOS41NyA5IDExLjUgNy40MyAxNSA1LjUgMTV6bTEzIDBjLTEuOTMgMC0zLjUtMS41Ny0zLjUtMy41UzE2LjU3IDggMTguNSA4IDIyIDkuNTcgMjIgMTEuNSAyMC40MyAxNSAxOC41IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVnBuS2V5T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi44MSAyLjgxIDEuMzkgNC4yMmwyLjU5IDIuNTlBNi4wMTIgNi4wMTIgMCAwIDAgMSAxMmMwIDMuMzEgMi42OSA2IDYgNiAyLjIyIDAgNC4xNS0xLjIxIDUuMTktM2w3LjU5IDcuNjEgMS40MS0xLjQxTDIuODEgMi44MXpNNyAxNmMtMi4yMSAwLTQtMS43OS00LTQgMC0xLjY3IDEuMDItMy4xIDIuNDctMy43bDEuNzEgMS43MUM3LjEyIDEwIDcuMDYgMTAgNyAxMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTJjMC0uMDYgMC0uMTItLjAxLS4xOGwxLjc0IDEuNzRDMTAuMjIgMTQuNDggOS4xNCAxNiA3IDE2em0xMC0xLjgzVjEzaC0xLjE3TDE3IDE0LjE3ek0xMy44MyAxMUgyMXYyaC0ydjNsMiAydi0zaDJWOUgxMS44M2wyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWcG5LZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE5aC02di00aC0yLjY4Yy0xLjE0IDIuNDItMy42IDQtNi4zMiA0LTMuODYgMC03LTMuMTQtNy03czMuMTQtNyA3LTdjMi43MiAwIDUuMTcgMS41OCA2LjMyIDRIMjR2NmgtMnY0em0tNC0yaDJ2LTRoMnYtMkgxMS45NGwtLjIzLS42N0MxMS4wMSA4LjM0IDkuMTEgNyA3IDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDVjMi4xMSAwIDQuMDEtMS4zNCA0LjcxLTMuMzNsLjIzLS42N0gxOHY0ek03IDE1Yy0xLjY1IDAtMy0xLjM1LTMtM3MxLjM1LTMgMy0zIDMgMS4zNSAzIDMtMS4zNSAzLTMgM3ptMC00Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpQ2FsbGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjUxYy0xLjI0IDAtMi40NS0uMi0zLjU3LS41N2EuODQuODQgMCAwIDAtLjMxLS4wNWMtLjI2IDAtLjUxLjEtLjcxLjI5bC0yLjIgMi4yYTE1LjE0OSAxNS4xNDkgMCAwIDEtNi41OS02LjU5bDIuMi0yLjJjLjI4LS4yOC4zNi0uNjcuMjUtMS4wMkExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy40OWMwLS41NS0uNDUtMS0xLTF6TTUuMDMgNWgxLjVhMTMgMTMgMCAwIDAgLjQ2IDIuNTlsLTEuMiAxLjJjLS40MS0xLjItLjY3LTIuNDctLjc2LTMuNzl6TTE5IDE4Ljk3Yy0xLjMyLS4wOS0yLjU5LS4zNS0zLjgtLjc1bDEuMTktMS4xOWMuODUuMjQgMS43Mi4zOSAyLjYuNDV2MS40OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNC45NUMyMS43OSA0Ljc4IDE5LjY3IDMgMTYuNSAzYy0zLjE4IDAtNS4yOSAxLjc4LTUuNSAxLjk1TDE2LjUgMTIgMjIgNC45NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZEJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHptLTgtMmgydi00aDR2LTJoLTRWN2gtMnY0SDd2Mmg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkQ2lyY2xlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgN2gtMnY0SDd2Mmg0djRoMnYtNGg0di0yaC00Vjd6bS0xLTVDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem01IDExaC00djRoLTJ2LTRIN3YtMmg0VjdoMnY0aDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZExpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDExaDh2Mkg4di0yem0xMi4xIDFIMjJjMC0yLjc2LTIuMjQtNS01LTVoLTR2MS45aDRjMS43MSAwIDMuMSAxLjM5IDMuMSAzLjF6TTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTE5IDEyaC0ydjNoLTN2MmgzdjNoMnYtM2gzdi0yaC0zdi0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxM2gtNnY2aC0ydi02SDV2LTJoNlY1aDJ2Nmg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbXBTdG9yaWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOWgxMFY0SDd2MTV6TTkgNmg2djExSDlWNnpNMyA2aDJ2MTFIM3pNMTkgNmgydjExaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJjaGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuNTQgNS4yMy0xLjM5LTEuNjhDMTguODggMy4yMSAxOC40NyAzIDE4IDNINmMtLjQ3IDAtLjg4LjIxLTEuMTYuNTVMMy40NiA1LjIzQzMuMTcgNS41NyAzIDYuMDIgMyA2LjVWMTljMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2LjVjMC0uNDgtLjE3LS45My0uNDYtMS4yN3pNNi4yNCA1aDExLjUybC44MS45N0g1LjQ0bC44LS45N3pNNSAxOVY4aDE0djExSDV6bTguNDUtOWgtMi45djNIOGw0IDQgNC00aC0yLjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXR0cmlidXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDguNWMtLjkxIDAtMi43NS40Ni0yLjc1IDEuMzh2NC42MmgxLjVWMTloMi41di00LjVoMS41VjkuODhjMC0uOTEtMS44NC0xLjM4LTIuNzUtMS4zOHpNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmFja3NwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAzSDdjLS42OSAwLTEuMjMuMzUtMS41OS44OEwwIDEybDUuNDEgOC4xMWMuMzYuNTMuOS44OSAxLjU5Ljg5aDE1YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINy4wN0wyLjQgMTJsNC42Ni03SDIydjE0em0tMTEuNTktMkwxNCAxMy40MSAxNy41OSAxNyAxOSAxNS41OSAxNS40MSAxMiAxOSA4LjQxIDE3LjU5IDcgMTQgMTAuNTkgMTAuNDEgNyA5IDguNDEgMTIuNTkgMTIgOSAxNS41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhbGxvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNy41aDV2MmgtNXptMCA3aDV2MmgtNXpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0ek0xMSA2SDZ2NWg1VjZ6bS0xIDRIN1Y3aDN2M3ptMSAzSDZ2NWg1di01em0tMSA0SDd2LTNoM3YzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmlvdGVjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTljLTEuMSAwLTIgLjktMiAyaDE0YzAtMS4xLS45LTItMi0yaC00di0yaDNjMS4xIDAgMi0uOSAyLTJoLThjLTEuNjYgMC0zLTEuMzQtMy0zYTMgMyAwIDAgMSAxLjQ3LTIuNTdjLjQxLjU5IDEuMDYgMSAxLjgzIDEuMDYuNy4wNiAxLjM2LS4xOSAxLjg1LS42MmwuNTkgMS42MS45NC0uMzQuMzQuOTQgMS44OC0uNjgtLjM0LS45NC45NC0uMzQtMi43NC03LjUyLS45NC4zNC0uMzQtLjk0LTEuODguNjguMzQuOTQtLjk0LjM1LjU2IDEuNTVjLTEuMTctLjA0LTIuMTkuNzUtMi40OCAxLjg2QTUuMDEgNS4wMSAwIDAgMCA1IDEyYzAgMi43NiAyLjI0IDUgNSA1djJIN3ptNS44Ni0xNC40OCAxLjcxIDQuNy0uOTQuMzQtMS43MS00LjcuOTQtLjM0ek0xMC41IDdjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek00IDEyYzAtNC40MiAzLjU4LTggOC04IDEuODUgMCAzLjU1LjYzIDQuOSAxLjY5TDUuNjkgMTYuOUE3LjkwMiA3LjkwMiAwIDAgMSA0IDEyem04IDhjLTEuODUgMC0zLjU1LS42My00LjktMS42OUwxOC4zMSA3LjFBNy45MDIgNy45MDIgMCAwIDEgMjAgMTJjMCA0LjQyLTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb2x0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMjFoLTFsMS03SDcuNWMtLjg4IDAtLjMzLS43NS0uMzEtLjc4QzguNDggMTAuOTQgMTAuNDIgNy41NCAxMy4wMSAzaDFsLTEgN2gzLjUxYy40IDAgLjYyLjE5LjQuNjZDMTIuOTcgMTcuNTUgMTEgMjEgMTEgMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWxjdWxhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMjUgNy43Mmg1djEuNWgtNXpNMTMgMTUuNzVoNXYxLjVoLTV6TTEzIDEzLjI1aDV2MS41aC01ek04IDE4aDEuNXYtMmgydi0xLjVoLTJ2LTJIOHYySDZWMTZoMnpNMTQuMDkgMTAuOTVsMS40MS0xLjQxIDEuNDEgMS40MSAxLjA2LTEuMDYtMS40MS0xLjQyIDEuNDEtMS40MUwxNi45MSA2IDE1LjUgNy40MSAxNC4wOSA2bC0xLjA2IDEuMDYgMS40MSAxLjQxLTEuNDEgMS40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoYW5nZUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em00LjE3LTUuMjQtMS4xLTEuMWMuNzEtMS4zMy41My0zLjAxLS41OS00LjEzQTMuNDgyIDMuNDgyIDAgMCAwIDEyIDguNWMtLjAzIDAtLjA2LjAxLS4wOS4wMUwxMyA5LjZsLTEuMDYgMS4wNi0yLjgzLTIuODNMMTEuOTQgNSAxMyA2LjA2bC0uOTYuOTZjMS4yNy4wMSAyLjUzLjQ4IDMuNSAxLjQ0IDEuNyAxLjcxIDEuOTEgNC4zNi42MyA2LjN6bS0xLjI4IDEuNDFMMTIuMDYgMTkgMTEgMTcuOTRsLjk1LS45NWE0Ljk3IDQuOTcgMCAwIDEtMy40OC0xLjQ2IDUuMDA2IDUuMDA2IDAgMCAxLS42NC02LjI5bDEuMSAxLjFjLS43MSAxLjMzLS41MyAzLjAxLjU5IDQuMTMuNy43IDEuNjMgMS4wNCAyLjU2IDEuMDFMMTEgMTQuNGwxLjA2LTEuMDYgMi44MyAyLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xlYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDYuNDEgMTcuNTkgNSAxMiAxMC41OSA2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMiAxMy40MSAxNy41OSAxOSAxOSAxNy41OSAxMy40MSAxMiAxOSA2LjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGVudENvcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDFINGMtMS4xIDAtMiAuOS0yIDJ2MTRoMlYzaDEyVjF6bTMgNEg4Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDExYzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTZIOFY3aDExdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGVudEN1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS42NCA3LjY0Yy4yMy0uNS4zNi0xLjA1LjM2LTEuNjQgMC0yLjIxLTEuNzktNC00LTRTMiAzLjc5IDIgNnMxLjc5IDQgNCA0Yy41OSAwIDEuMTQtLjEzIDEuNjQtLjM2TDEwIDEybC0yLjM2IDIuMzZDNy4xNCAxNC4xMyA2LjU5IDE0IDYgMTRjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNGMwLS41OS0uMTMtMS4xNC0uMzYtMS42NEwxMiAxNGw3IDdoM3YtMUw5LjY0IDcuNjR6TTYgOGMtMS4xIDAtMi0uODktMi0ycy45LTIgMi0yIDIgLjg5IDIgMi0uOSAyLTIgMnptMCAxMmMtMS4xIDAtMi0uODktMi0ycy45LTIgMi0yIDIgLjg5IDIgMi0uOSAyLTIgMnptNi03LjVjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNS41LjIyLjUuNS0uMjIuNS0uNS41ek0xOSAzbC02IDYgMiAyIDctN1YzaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGVudFBhc3RlR28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDVoMnYzaDEwVjVoMnY2aDJWNWMwLTEuMS0uOS0yLTItMmgtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFzLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg1di0ySDVWNXptNy0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4LjAxIDEzLTEuNDIgMS40MSAxLjU4IDEuNThIMTJ2Mmg2LjE3bC0xLjU4IDEuNTkgMS40MiAxLjQxIDMuOTktNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRlbnRQYXN0ZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjIgMyA1LjgzVjE5YzAgMS4xLjkgMiAyIDJoMTMuMTdsMS42MSAxLjYxIDEuNDEtMS40MnpNNSAxOVY3LjgzTDE2LjE3IDE5SDV6TTE3IDhWNWgydjExLjE3bDIgMlY1YzAtMS4xLS45LTItMi0yaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMXMtMi40Ljg0LTIuODIgMkg1LjgzbDUgNUgxN3ptLTUtNWMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29udGVudFBhc3RlU2VhcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA1aDJ2M2gxMFY1aDJ2NWgyVjVjMC0xLjEtLjktMi0yLTJoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxcy0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNXYtMkg1VjV6bTctMmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC4zIDE4LjljLjQtLjcuNy0xLjUuNy0yLjQgMC0yLjUtMi00LjUtNC41LTQuNVMxMiAxNCAxMiAxNi41czIgNC41IDQuNSA0LjVjLjkgMCAxLjctLjMgMi40LS43bDIuNyAyLjcgMS40LTEuNC0yLjctMi43em0tMy44LjFjLTEuNCAwLTIuNS0xLjEtMi41LTIuNXMxLjEtMi41IDIuNS0yLjUgMi41IDEuMSAyLjUgMi41LTEuMSAyLjUtMi41IDIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRlbnRQYXN0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMmgtNC4xOEMxNC40Ljg0IDEzLjMgMCAxMiAwUzkuNi44NCA5LjE4IDJINWMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTcgMThINVY0aDJ2M2gxMFY0aDJ2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb3B5QWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMkg5Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDljMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg5VjRoOXYxMnpNMyAxNXYtMmgydjJIM3ptMC01LjVoMnYySDN2LTJ6TTEwIDIwaDJ2MmgtMnYtMnptLTctMS41di0yaDJ2Mkgzek01IDIyYy0xLjEgMC0yLS45LTItMmgydjJ6bTMuNSAwaC0ydi0yaDJ2MnptNSAwdi0yaDJjMCAxLjEtLjkgMi0yIDJ6TTUgNnYySDNjMC0xLjEuOS0yIDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyZWF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzIDE3LjI1ek01LjkyIDE5SDV2LS45Mmw5LjA2LTkuMDYuOTIuOTJMNS45MiAxOXpNMjAuNzEgNS42M2wtMi4zNC0yLjM0Yy0uMi0uMi0uNDUtLjI5LS43MS0uMjlzLS41MS4xLS43LjI5bC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZWxldGVTd2VlcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTZoNHYyaC00em0wLThoN3YyaC03em0wIDRoNnYyaC02ek0zIDE4YzAgMS4xLjkgMiAyIDJoNmMxLjEgMCAyLS45IDItMlY4SDN2MTB6bTItOGg2djhINXYtOHptNS02SDZMNSA1SDJ2MmgxMlY1aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVzZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEzaDJ2LTJIM3Yyem00IDhoMnYtMkg3djJ6bTYtMThoLTJ2MmgyVjN6bTYgMHYyaDJjMC0xLjEtLjktMi0yLTJ6TTUgMjF2LTJIM2MwIDEuMS45IDIgMiAyem0tMi00aDJ2LTJIM3Yyem04IDRoMnYtMmgtMnYyem04LThoMnYtMmgtMnYyem0wLTRoMlY3aC0ydjJ6bS00LTRoMlYzaC0ydjJ6TTcuODMgNSA3IDQuMTdWM2gydjJINy44M3ptMTIgMTItLjgzLS44M1YxNWgydjJoLTEuMTd6bTEuMzYgNC4xOUwyLjgxIDIuODEgMS4zOSA0LjIyIDQuMTcgN0gzdjJoMlY3LjgzbDIgMlYxN2g3LjE3bDIgMkgxNXYyaDJ2LTEuMTdsMi43OCAyLjc4IDEuNDEtMS40MnpNOSAxNXYtMy4xN0wxMi4xNyAxNUg5em02LTIuODNWOWgtMy4xN2wtMi0ySDE3djcuMTdsLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURyYWZ0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTkgOGMwLS43Mi0uMzctMS4zNS0uOTQtMS43TDEyIDEgMi45NSA2LjNDMi4zOCA2LjY1IDIgNy4yOCAyIDh2MTBjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMmwtLjAxLTEwem0tMiAwdi4wMUwxMiAxMyA0IDhsOC00LjY4TDE5Ljk5IDh6TTQgMTh2LTcuNjZsOCA1LjAyIDcuOTktNC45OUwyMCAxOEg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHluYW1pY0ZlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDhINnY3YzAgMS4xLjkgMiAyIDJoOXYtMkg4Vjh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNoLThjLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgOGgtOFY3aDh2NHpNNCAxMkgydjdjMCAxLjEuOSAyIDIgMmg5di0ySDR2LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWxlQ29weSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMUg0Yy0xLjEgMC0yIC45LTIgMnYxNGgyVjNoMTJWMXptLTEgNEg4Yy0xLjEgMC0xLjk5LjktMS45OSAyTDYgMjFjMCAxLjEuODkgMiAxLjk5IDJIMTljMS4xIDAgMi0uOSAyLTJWMTFsLTYtNnpNOCAyMVY3aDZ2NWg1djlIOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlckxpc3RPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC44MyA4SDIxVjZIOC44M2wyIDJ6bTUgNUgxOHYtMmgtNC4xN2wyIDJ6TTE0IDE2LjgzVjE4aC00di0yaDMuMTdsLTMtM0g2di0yaDIuMTdsLTMtM0gzVjZoLjE3TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQxIDEuNDFMMTQgMTYuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXJMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxOGg0di0yaC00djJ6TTMgNnYyaDE4VjZIM3ptMyA3aDEydi0ySDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsYWdDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUgOS0xLTJIOHYxMWgxLjV2LTVIMTJsMSAyaDVWOWgtM3ptMS41IDQuNWgtMi41N2wtMS0ySDkuNXYtM2gzLjU3bDEgMmgyLjQzdjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMi4zNiA2IC40IDJIMTh2NmgtMy4zNmwtLjQtMkg3VjZoNS4zNk0xNCA0SDV2MTdoMnYtN2g1LjZsLjQgMmg3VjZoLTUuNkwxNCA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9udERvd25sb2FkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC44MyAySDIwYzEuMSAwIDIgLjkgMiAydjE1LjE3bC0yLTJWNEg2LjgzbC0yLTJ6bTYuMDkgNC0uNTcgMS41MiAxLjM2IDEuMzYuMjMtLjY2aC4xbC41NCAxLjUyIDMuMDQgMy4wNEwxMy4wNyA2aC0yLjE1em05LjU3IDE3LjMxTDE5LjE3IDIySDRjLTEuMSAwLTItLjktMi0yVjQuODNMLjY5IDMuNTEgMi4xIDIuMWwxOS44IDE5LjgtMS40MSAxLjQxek0xNy4xNyAyMGwtNS4wNy01LjA3SDkuNThMOC40OSAxOEg2LjQxbDIuMzktNi4zN0w0IDYuODNWMjBoMTMuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb250RG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMTcgMTUuNWg1LjY0bDEuMTQgM2gyLjA5bC01LjExLTEzaC0xLjg2bC01LjExIDEzaDIuMDlsMS4xMi0zek0xMiA3Ljk4bDIuMDcgNS41Mkg5LjkzTDEyIDcuOTh6TTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE4SDRWNGgxNnYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDguODMgMTcuMTcgMTIgMTQgMTUuMTdWMTRINnYtNGg4VjguODNNMTIgNHY0SDR2OGg4djRsOC04LTgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdlc3R1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNTkgNi44OWMuNy0uNzEgMS40LTEuMzUgMS43MS0xLjIyLjUuMiAwIDEuMDMtLjMgMS41Mi0uMjUuNDItMi44NiAzLjg5LTIuODYgNi4zMSAwIDEuMjguNDggMi4zNCAxLjM0IDIuOTguNzUuNTYgMS43NC43MyAyLjY0LjQ2IDEuMDctLjMxIDEuOTUtMS40IDMuMDYtMi43NyAxLjIxLTEuNDkgMi44My0zLjQ0IDQuMDgtMy40NCAxLjYzIDAgMS42NSAxLjAxIDEuNzYgMS43OS0zLjc4LjY0LTUuMzggMy42Ny01LjM4IDUuMzcgMCAxLjcgMS40NCAzLjA5IDMuMjEgMy4wOSAxLjYzIDAgNC4yOS0xLjMzIDQuNjktNi4xSDIxdi0yLjVoLTIuNDdjLS4xNS0xLjY1LTEuMDktNC4yLTQuMDMtNC4yLTIuMjUgMC00LjE4IDEuOTEtNC45NCAyLjg0LS41OC43My0yLjA2IDIuNDgtMi4yOSAyLjcyLS4yNS4zLS42OC44NC0xLjExLjg0LS40NSAwLS43Mi0uODMtLjM2LTEuOTIuMzUtMS4wOSAxLjQtMi44NiAxLjg1LTMuNTIuNzgtMS4xNCAxLjMtMS45MiAxLjMtMy4yOEM4Ljk1IDMuNjkgNy4zMSAzIDYuNDQgMyA1LjEyIDMgMy45NyA0IDMuNzIgNC4yNWMtLjM2LjM2LS42Ni42Ni0uODguOTNsMS43NSAxLjcxem05LjI5IDExLjY2Yy0uMzEgMC0uNzQtLjI2LS43NC0uNzIgMC0uNi43My0yLjIgMi44Ny0yLjc2LS4zIDIuNjktMS40MyAzLjQ4LTIuMTMgMy40OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvd1RvUmVnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6TTUgMThjLjItLjYzIDIuNTctMS42OCA0Ljk2LTEuOTRsMi4wNC0yYTkuMzQgOS4zNCAwIDAgMC0xLS4wNmMtMi42NyAwLTggMS4zNC04IDR2Mmg5bC0yLTJINXptMTUuNi01LjUtNS4xMyA1LjE3LTIuMDctMi4wOEwxMiAxN2wzLjQ3IDMuNUwyMiAxMy45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvd1RvVm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNoLS42OGwtMiAyaDEuOTFMMTkgMTdINWwxLjc4LTJoMi4wNWwtMi0ySDZsLTMgM3Y0YzAgMS4xLjg5IDIgMS45OSAySDE5YTIgMiAwIDAgMCAyLTJ2LTRsLTMtM3ptMSA3SDV2LTFoMTR2MXptLTcuNjYtNC45OGMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNi4zNi02LjM2YS45OTYuOTk2IDAgMCAwIDAtMS40MUwxNC4xNiAyLjNhLjk3NS45NzUgMCAwIDAtMS40LS4wMUw2LjM5IDguNjZhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDQuOTUgNC45NXptMi4xMi0xMC42MUwxNyA3Ljk1bC00Ljk1IDQuOTUtMy41NC0zLjU0IDQuOTUtNC45NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1di0zaDMuNTZjLjY5IDEuMTkgMS45NyAyIDMuNDUgMnMyLjc1LS44MSAzLjQ1LTJIMTl2M3ptMC01aC00Ljk5YzAgMS4xLS45IDItMiAycy0yLS45LTItMkg1VjVoMTR2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluc2lnaHRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOGMtMS40NSAwLTIuMjYgMS40NC0xLjkzIDIuNTFsLTMuNTUgMy41NmMtLjMtLjA5LS43NC0uMDktMS4wNCAwbC0yLjU1LTIuNTVDMTIuMjcgMTAuNDUgMTEuNDYgOSAxMCA5Yy0xLjQ1IDAtMi4yNyAxLjQ0LTEuOTMgMi41MmwtNC41NiA0LjU1QzIuNDQgMTUuNzQgMSAxNi41NSAxIDE4YzAgMS4xLjkgMiAyIDIgMS40NSAwIDIuMjYtMS40NCAxLjkzLTIuNTFsNC41NS00LjU2Yy4zLjA5Ljc0LjA5IDEuMDQgMGwyLjU1IDIuNTVDMTIuNzMgMTYuNTUgMTMuNTQgMTggMTUgMThjMS40NSAwIDIuMjctMS40NCAxLjkzLTIuNTJsMy41Ni0zLjU1YzEuMDcuMzMgMi41MS0uNDggMi41MS0xLjkzIDAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNSA5IC45NC0yLjA3TDE4IDZsLTIuMDYtLjkzTDE1IDNsLS45MiAyLjA3TDEyIDZsMi4wOC45M3pNMy41IDExIDQgOWwyLS41TDQgOGwtLjUtMkwzIDhsLTIgLjVMMyA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW52ZW50b3J5MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMSAwLTIgLjktMiAydjMuMDFjMCAuNzIuNDMgMS4zNCAxIDEuNjlWMjBjMCAxLjEgMS4xIDIgMiAyaDE0Yy45IDAgMi0uOSAyLTJWOC43Yy41Ny0uMzUgMS0uOTcgMS0xLjY5VjRjMC0xLjEtMS0yLTItMnptLTEgMThINVY5aDE0djExem0xLTEzSDRWNGgxNnYzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDEyaDZ2Mkg5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW52ZW50b3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA1aDJ2M2gxMFY1aDJ2NWgyVjVjMC0xLjEtLjktMi0yLTJoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxcy0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNnYtMkg1VjV6bTctMmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMS41IDE1LjUxIDE3bC0zLjAxLTMtMS41IDEuNSA0LjUxIDQuNSA2Ljk5LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaW5rT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4zOSAxMSAxNiAxMi42MVYxMXpNMTcgN2gtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMSAwIDEuMjctLjc3IDIuMzctMS44NyAyLjg0bDEuNCAxLjRBNC45ODYgNC45ODYgMCAwIDAgMjIgMTJjMC0yLjc2LTIuMjQtNS01LTV6TTIgNC4yN2wzLjExIDMuMTFBNC45OTEgNC45OTEgMCAwIDAgMiAxMmMwIDIuNzYgMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjEgMC0xLjU5IDEuMjEtMi45IDIuNzYtMy4wN0w4LjczIDExSDh2MmgyLjczTDEzIDE1LjI3VjE3aDEuNzNsNC4wMSA0LjAxIDEuNDEtMS40MUwzLjQxIDIuODYgMiA0LjI3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGluayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgN2gtNHYyaDRjMS42NSAwIDMgMS4zNSAzIDNzLTEuMzUgMy0zIDNoLTR2Mmg0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01em0tNiA4SDdjLTEuNjUgMC0zLTEuMzUtMy0zczEuMzUtMyAzLTNoNFY3SDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDVoNHYtMnptLTMtNGg4djJIOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvd1ByaW9yaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA1aDh2MmgtOFY1em0wIDUuNWg4djJoLTh2LTJ6bTAgNS41aDh2MmgtOHYtMnpNMiAxMS41QzIgMTUuMDggNC45MiAxOCA4LjUgMThIOXYybDMtMy0zLTN2MmgtLjVDNi4wMiAxNiA0IDEzLjk4IDQgMTEuNVM2LjAyIDcgOC41IDdIMTJWNUg4LjVDNC45MiA1IDIgNy45MiAyIDExLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNnptLTIgMC04IDQuOTlMNCA2aDE2em0wIDEySDRWOGw4IDUgOC01djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFya3VucmVhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZ6bS0yIDAtOCA1LTgtNWgxNnptMCAxMkg0VjhsOCA1IDgtNXYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdmVUb0luYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA5aC0yLjU1VjZoLTIuOXYzSDhsNCA0em0zLTZINC45OUMzLjg4IDMgMyAzLjkgMyA1djE0YzAgMS4xLjg4IDIgMS45OSAySDE5YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINXYtM2gzLjU2Yy42OSAxLjE5IDEuOTcgMiAzLjQ1IDJzMi43NS0uODEgMy40NS0ySDE5djN6bTAtNWgtNC45OWMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJINWwtLjAxLTlIMTl2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5leHRXZWVrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMSAxOC41IDQtNC00LTQtMSAxIDMgMy0zIDN6TTIwIDdoLTRWNWMwLS41NS0uMjItMS4wNS0uNTktMS40MUMxNS4wNSAzLjIyIDE0LjU1IDMgMTQgM2gtNGMtMS4xIDAtMiAuOS0yIDJ2Mkg0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6TTEwIDVoNHYyaC00VjV6bTEwIDE1SDRWOWgxNnYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU91dGxpbmVkRmxhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQgNi0xLTJINXYxN2gydi03aDVsMSAyaDdWNmgtNnptNCA4aC00bC0xLTJIN1Y2aDVsMSAyaDV2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvbGljeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEgMyA1djZjMCA1LjU1IDMuODQgMTAuNzQgOSAxMiA1LjE2LTEuMjYgOS02LjQ1IDktMTJWNWwtOS00em03IDEwYzAgMS44NS0uNTEgMy42NS0xLjM4IDUuMjFsLTEuNDUtMS40NWE0Ljk5NCA0Ljk5NCAwIDAgMC0uNjQtNi4yOSA1LjAwMyA1LjAwMyAwIDAgMC03LjA3IDAgNS4wMDMgNS4wMDMgMCAwIDAgMCA3LjA3IDUuMDA2IDUuMDA2IDAgMCAwIDYuMjkuNjRsMS43MiAxLjcyYy0xLjE5IDEuNDItMi43MyAyLjUxLTQuNDcgMy4wNC00LjAyLTEuMjUtNy01LjQyLTctOS45NFY2LjNsNy0zLjExIDcgMy4xMVYxMXptLTcgNGMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQdXNoUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNHY1YzAgMS4xMi4zNyAyLjE2IDEgM0g5Yy42NS0uODYgMS0xLjkgMS0zVjRoNG0zLTJIN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgxdjVjMCAxLjY2LTEuMzQgMy0zIDN2Mmg1Ljk3djdsMSAxIDEtMXYtN0gxOXYtMmMtMS42NiAwLTMtMS4zNC0zLTNWNGgxYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVkbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNCAxMC42QzE2LjU1IDguOTkgMTQuMTUgOCAxMS41IDhjLTQuNjUgMC04LjU4IDMuMDMtOS45NiA3LjIyTDMuOSAxNmE4LjAwMiA4LjAwMiAwIDAgMSA3LjYtNS41YzEuOTUgMCAzLjczLjcyIDUuMTIgMS44OEwxMyAxNmg5VjdsLTMuNiAzLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZW1vdmVDaXJjbGVPdXRsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDExdjJoMTB2LTJIN3ptNS05QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlbW92ZUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNSAxMUg3di0yaDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEzSDV2LTJoMTR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlcGx5QWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDhWNWwtNyA3IDcgN3YtM2wtNC00IDQtNHptNiAxVjVsLTcgNyA3IDd2LTQuMWM1IDAgOC41IDEuNiAxMSA1LjEtMS01LTQtMTAtMTEtMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXBseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgOVY1bC03IDcgNyA3di00LjFjNSAwIDguNSAxLjYgMTEgNS4xLTEtNS00LTEwLTExLTExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwb3J0R21haWxlcnJvcnJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNzMgM0g4LjI3TDMgOC4yN3Y3LjQ2TDguMjcgMjFoNy40NkwyMSAxNS43M1Y4LjI3TDE1LjczIDN6TTE5IDE0LjkgMTQuOSAxOUg5LjFMNSAxNC45VjkuMUw5LjEgNWg1LjhMMTkgOS4xdjUuOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDdoMnY3aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwb3J0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjEgNWg1LjhMMTkgOS4xdjUuOGwtLjIyLjIyIDEuNDIgMS40MS44LS44VjguMjdMMTUuNzMgM0g4LjI3bC0uOC44IDEuNDEgMS40MnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDkuMzNWN2gtMnYuMzN6TTIuNDEgMS41OCAxIDIuOTlsMy42NCAzLjY0TDMgOC4yN3Y3LjQ2TDguMjcgMjFoNy40NmwxLjY0LTEuNjRMMjEuMDEgMjNsMS40MS0xLjQxTDIuNDEgMS41OHpNMTQuOSAxOUg5LjFMNSAxNC45VjkuMWwxLjA1LTEuMDUgOS45IDkuOUwxNC45IDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS43MyAzSDguMjdMMyA4LjI3djcuNDZMOC4yNyAyMWg3LjQ2TDIxIDE1LjczVjguMjdMMTUuNzMgM3pNMTkgMTQuOSAxNC45IDE5SDkuMUw1IDE0LjlWOS4xTDkuMSA1aDUuOEwxOSA5LjF2NS44elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgN2gydjdoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTYXZlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMnY3SDV2LTdIM3Y3YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTdoLTJ6bS02IC42NyAyLjU5LTIuNThMMTcgMTEuNWwtNSA1LTUtNSAxLjQxLTEuNDFMMTEgMTIuNjdWM2gydjkuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTYXZlQXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMi40VjdsLTQtNEg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmg3LjRsMi0ySDVWNWgxMS4xN0wxOSA3LjgzdjYuNTdsMi0yek0xNSAxNWMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtMyAxLjM0LTMgMy0zIDMgMS4zNCAzIDN6TTYgNmg5djRINlY2em0xMy45OSAxMC4yNSAxLjc3IDEuNzdMMTYuNzcgMjNIMTV2LTEuNzdsNC45OS00Ljk4em0zLjI2LjI2LS44NS44NS0xLjc3LTEuNzcuODUtLjg1Yy4yLS4yLjUxLS4yLjcxIDBsMS4wNiAxLjA2Yy4yLjIuMi41MiAwIC43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWN2wtNC00em0yIDE2SDVWNWgxMS4xN0wxOSA3LjgzVjE5em0tNy03Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3pNNiA2aDl2NEg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VsZWN0QWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVoMlYzYy0xLjEgMC0yIC45LTIgMnptMCA4aDJ2LTJIM3Yyem00IDhoMnYtMkg3djJ6TTMgOWgyVjdIM3Yyem0xMC02aC0ydjJoMlYzem02IDB2MmgyYzAtMS4xLS45LTItMi0yek01IDIxdi0ySDNjMCAxLjEuOSAyIDIgMnptLTItNGgydi0ySDN2MnpNOSAzSDd2MmgyVjN6bTIgMThoMnYtMmgtMnYyem04LThoMnYtMmgtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnptMC0xMmgyVjdoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptLTQgNGgydi0yaC0ydjJ6bTAtMTZoMlYzaC0ydjJ6TTcgMTdoMTBWN0g3djEwem0yLThoNnY2SDlWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTQuMDEgNi4wMyA3LjUxIDMuMjItNy41Mi0xIC4wMS0yLjIybTcuNSA4LjcyTDQgMTcuOTd2LTIuMjJsNy41MS0xTTIuMDEgMyAyIDEwbDE1IDItMTUgMiAuMDEgN0wyMyAxMiAyLjAxIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaGllbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zem02IDkuMDljMCA0LTIuNTUgNy43LTYgOC44My0zLjQ1LTEuMTMtNi00LjgyLTYtOC44M3YtNC43bDYtMi4yNSA2IDIuMjV2NC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU29ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxOGg2di0ySDN2MnpNMyA2djJoMThWNkgzem0wIDdoMTJ2LTJIM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3F1YXJlRm9vdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjY2IDE3LjY2LTEuMDYgMS4wNi0uNzEtLjcxIDEuMDYtMS4wNi0xLjk0LTEuOTQtMS4wNiAxLjA2LS43MS0uNzEgMS4wNi0xLjA2LTEuOTQtMS45NC0xLjA2IDEuMDYtLjcxLS43MSAxLjA2LTEuMDZMOS43IDkuN2wtMS4wNiAxLjA2LS43MS0uNzEgMS4wNi0xLjA2LTEuOTQtMS45NC0xLjA2IDEuMDYtLjcxLS43MSAxLjA2LTEuMDZMNCA0djE0YzAgMS4xLjkgMiAyIDJoMTRsLTIuMzQtMi4zNHpNNyAxN3YtNS43NkwxMi43NiAxN0g3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RhY2tlZEJhckNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA5aDR2MTFINHpNNCA0aDR2NEg0ek0xMCA3aDR2NGgtNHpNMTYgMTBoNHY0aC00ek0xNiAxNWg0djVoLTR6TTEwIDEyaDR2OGgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0cmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMjBcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjRcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMjBcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuOTQzIDguNjE5IDQuNDA0LTQuMzkyIDEuNDEzIDEuNDE2LTQuNDA1IDQuMzkyek04LjMyIDkuNjhsLjMxLjMyIDEuNDItMS40MS00LjAyLTQuMDRoLS4wMWwtLjMxLS4zMi0xLjQyIDEuNDEgNC4wMiA0LjA1ek0xNS40MSAxMy45NCAxNCAxNS4zNWwzLjk5IDQuMDEuMzUuMzUgMS40Mi0xLjQxLTMuOTktNC4wMXpNOC41OSAxMy45NWwtNC4wMyA0LjAxLS4zMi4zMyAxLjQxIDEuNDEgNC4wMy00LjAyLjMzLS4zMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEwVjhoLTRWNGgtMnY0aC00VjRIOHY0SDR2Mmg0djRINHYyaDR2NGgydi00aDR2NGgydi00aDR2LTJoLTR2LTRoNHptLTYgNGgtNHYtNGg0djR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUZXh0Rm9ybWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE3djJoMTR2LTJINXptNC41LTQuMmg1bC45IDIuMmgyLjFMMTIuNzUgNGgtMS41TDYuNSAxNWgyLjFsLjktMi4yek0xMiA1Ljk4IDEzLjg3IDExaC0zLjc0TDEyIDUuOTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVbmFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjU0IDUuMjMtMS4zOS0xLjY4QzE4Ljg4IDMuMjEgMTguNDcgMyAxOCAzSDZjLS40NyAwLS44OC4yMS0xLjE2LjU1TDMuNDYgNS4yM0MzLjE3IDUuNTcgMyA2LjAyIDMgNi41VjE5YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNi41YzAtLjQ4LS4xNy0uOTMtLjQ2LTEuMjd6TTYuMjQgNWgxMS41MmwuODMgMUg1LjQybC44Mi0xek01IDE5VjhoMTR2MTFINXptMy01aDIuNTV2M2gyLjl2LTNIMTZsLTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVVuZG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgOGMtMi42NSAwLTUuMDUuOTktNi45IDIuNkwyIDd2OWg5bC0zLjYyLTMuNjJjMS4zOS0xLjE2IDMuMTYtMS44OCA1LjEyLTEuODggMy41NCAwIDYuNTUgMi4zMSA3LjYgNS41bDIuMzctLjc4QzIxLjA4IDExLjAzIDE3LjE1IDggMTIuNSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVXBjb21pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy42IDEwLjgxIDE2LjE5IDkuNGwzLjU2LTMuNTUgMS40MSAxLjQxYy0uMTEuMDMtMy41NiAzLjU1LTMuNTYgMy41NXpNMTMgM2gtMnY1aDJWM3ptLTYuNiA3LjgxTDcuODEgOS40IDQuMjYgNS44NCAyLjg0IDcuMjZjLjExLjAzIDMuNTYgMy41NSAzLjU2IDMuNTV6TTIwIDE0aC0zLjQyYy0uNzcgMS43Ni0yLjU0IDMtNC41OCAzcy0zLjgxLTEuMjQtNC41OC0zSDR2NWgxNnYtNW0wLTJjMS4xIDAgMiAuOSAyIDJ2NWMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMnYtNWMwLTEuMS45LTIgMi0yaDVjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F2ZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDE2Ljk5Yy0xLjM1IDAtMi4yLjQyLTIuOTUuOC0uNjUuMzMtMS4xOC42LTIuMDUuNi0uOSAwLTEuNC0uMjUtMi4wNS0uNi0uNzUtLjM4LTEuNTctLjgtMi45NS0uOHMtMi4yLjQyLTIuOTUuOGMtLjY1LjMzLTEuMTcuNi0yLjA1LjZ2MS45NWMxLjM1IDAgMi4yLS40MiAyLjk1LS44LjY1LS4zMyAxLjE3LS42IDIuMDUtLjZzMS40LjI1IDIuMDUuNmMuNzUuMzggMS41Ny44IDIuOTUuOHMyLjItLjQyIDIuOTUtLjhjLjY1LS4zMyAxLjE4LS42IDIuMDUtLjYuOSAwIDEuNC4yNSAyLjA1LjYuNzUuMzggMS41OC44IDIuOTUuOHYtMS45NWMtLjkgMC0xLjQtLjI1LTIuMDUtLjYtLjc1LS4zOC0xLjYtLjgtMi45NS0uOHptMC00LjQ1Yy0xLjM1IDAtMi4yLjQzLTIuOTUuOC0uNjUuMzItMS4xOC42LTIuMDUuNi0uOSAwLTEuNC0uMjUtMi4wNS0uNi0uNzUtLjM4LTEuNTctLjgtMi45NS0uOHMtMi4yLjQzLTIuOTUuOGMtLjY1LjMyLTEuMTcuNi0yLjA1LjZ2MS45NWMxLjM1IDAgMi4yLS40MyAyLjk1LS44LjY1LS4zNSAxLjE1LS42IDIuMDUtLjZzMS40LjI1IDIuMDUuNmMuNzUuMzggMS41Ny44IDIuOTUuOHMyLjItLjQzIDIuOTUtLjhjLjY1LS4zNSAxLjE1LS42IDIuMDUtLjZzMS40LjI1IDIuMDUuNmMuNzUuMzggMS41OC44IDIuOTUuOHYtMS45NWMtLjkgMC0xLjQtLjI1LTIuMDUtLjYtLjc1LS4zOC0xLjYtLjgtMi45NS0uOHptMi45NS04LjA4Yy0uNzUtLjM4LTEuNTgtLjgtMi45NS0uOHMtMi4yLjQyLTIuOTUuOGMtLjY1LjMyLTEuMTguNi0yLjA1LjYtLjkgMC0xLjQtLjI1LTIuMDUtLjYtLjc1LS4zNy0xLjU3LS44LTIuOTUtLjhzLTIuMi40Mi0yLjk1LjhjLS42NS4zMy0xLjE3LjYtMi4wNS42djEuOTNjMS4zNSAwIDIuMi0uNDMgMi45NS0uOC42NS0uMzMgMS4xNy0uNiAyLjA1LS42czEuNC4yNSAyLjA1LjZjLjc1LjM4IDEuNTcuOCAyLjk1LjhzMi4yLS40MyAyLjk1LS44Yy42NS0uMzIgMS4xOC0uNiAyLjA1LS42LjkgMCAxLjQuMjUgMi4wNS42Ljc1LjM4IDEuNTguOCAyLjk1LjhWNS4wNGMtLjkgMC0xLjQtLjI1LTIuMDUtLjU4ek0xNyA4LjA5Yy0xLjM1IDAtMi4yLjQzLTIuOTUuOC0uNjUuMzUtMS4xNS42LTIuMDUuNnMtMS40LS4yNS0yLjA1LS42Yy0uNzUtLjM4LTEuNTctLjgtMi45NS0uOHMtMi4yLjQzLTIuOTUuOGMtLjY1LjM1LTEuMTUuNi0yLjA1LjZ2MS45NWMxLjM1IDAgMi4yLS40MyAyLjk1LS44LjY1LS4zMiAxLjE4LS42IDIuMDUtLjZzMS40LjI1IDIuMDUuNmMuNzUuMzggMS41Ny44IDIuOTUuOHMyLjItLjQzIDIuOTUtLjhjLjY1LS4zMiAxLjE4LS42IDIuMDUtLjYuOSAwIDEuNC4yNSAyLjA1LjYuNzUuMzggMS41OC44IDIuOTUuOFY5LjQ5Yy0uOSAwLTEuNC0uMjUtMi4wNS0uNi0uNzUtLjM4LTEuNi0uOC0yLjk1LS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2ViU3RvcmllcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDR2MTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNMTMgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDljMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxOEg0VjRoOXYxNnpNMjEgNnYxMmMuODMgMCAxLjUtLjY3IDEuNS0xLjV2LTljMC0uODMtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2Vla2VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOVY3YzAtMS42NS0xLjM1LTMtMy0zSDZDNC4zNSA0IDMgNS4zNSAzIDd2MmMtMS42NSAwLTMgMS4zNS0zIDN2NWMwIDEuNjUgMS4zNSAzIDMgM2gxOGMxLjY1IDAgMy0xLjM1IDMtM3YtNWMwLTEuNjUtMS4zNS0zLTMtM3pNNSA3YzAtLjU1LjQ1LTEgMS0xaDEyYy41NSAwIDEgLjQ1IDEgMXYyLjc4Yy0uNjEuNTUtMSAxLjM0LTEgMi4yMnYySDZ2LTJjMC0uODgtLjM5LTEuNjctMS0yLjIyVjd6bTE3IDEwYzAgLjU1LS40NSAxLTEgMUgzYy0uNTUgMC0xLS40NS0xLTF2LTVjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjRoMTZ2LTRjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaGVyZVRvVm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMUM3LjU5IDEgNCA0LjU5IDQgOWMwIDUuNTcgNi45NiAxMy4zNCA3LjI2IDEzLjY3bC43NC44Mi43NC0uODJDMTMuMDQgMjIuMzQgMjAgMTQuNTcgMjAgOWMwLTQuNDEtMy41OS04LTgtOHptMCAxOS40N0M5LjgyIDE3Ljg2IDYgMTIuNTQgNiA5YzAtMy4zMSAyLjY5LTYgNi02czYgMi42OSA2IDZjMCAzLjgzLTQuMjUgOS4zNi02IDExLjQ3em0tMS41My05LjNMOC43MSA5LjRsLTEuNDIgMS40MkwxMC40NyAxNGw2LjAxLTYuMDEtMS40MS0xLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMXhNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDdoNHYxMEg2VjlINFY3em0xMS44MyA0LjcyTDE4LjY2IDdoLTIuMzNsLTEuNjYgMi43N0wxMyA3aC0yLjMzbDIuODMgNC43MkwxMC4zMyAxN2gyLjMzbDItMy4zNCAyIDMuMzRIMTlsLTMuMTctNS4yOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTMwRnBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDV2M2g2djIuNUgzdjNoNVYxNkgydjNoNmMxLjY2IDAgMy0xLjM0IDMtM3YtMS45QTIuMSAyLjEgMCAwIDAgOC45IDEyIDIuMSAyLjEgMCAwIDAgMTEgOS45VjhjMC0xLjY2LTEuMzQtMy0zLTNIMnptMTcgM3Y4aC00VjhoNG0wLTNoLTRjLTEuNjYgMC0zIDEuMzQtMyAzdjhjMCAxLjY2IDEuMzQgMyAzIDNoNGMxLjY2IDAgMy0xLjM0IDMtM1Y4YzAtMS42Ni0xLjM0LTMtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lM2dNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDd2Mmg1djJINHYyaDR2MkgzdjJoNWMxLjEgMCAyLS45IDItMnYtMS41YzAtLjgzLS42Ny0xLjUtMS41LTEuNS44MyAwIDEuNS0uNjcgMS41LTEuNVY5YzAtMS4xLS45LTItMi0ySDN6bTE4IDR2NGMwIDEuMS0uOSAyLTIgMmgtNWMtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDVjMS4xIDAgMiAuOSAyIDJoLTd2Nmg1di0yaC0yLjV2LTJIMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU0Z01vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgN0g3djVINVY3SDN2N2g0djNoMnYtM2gydi0ySDlWN3ptOCA0djJoMnYyaC01VjloN2MwLTEuMS0uOS0yLTItMmgtNWMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDVjMS4xIDAgMi0uOSAyLTJ2LTRoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU0Z1BsdXNNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMXYyaDJ2MmgtNFY5aDZjMC0xLjEtLjktMi0yLTJoLTRjLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmg0YzEuMSAwIDItLjkgMi0ydi00aC00em0xMSAwaC0yVjloLTJ2MmgtMnYyaDJ2Mmgydi0yaDJ2LTJ6TTcgN0g1djVIM1Y3SDF2N2g0djNoMnYtM2gxdi0ySDdWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTYwRnBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA4djhoLTRWOGg0bTAtM2gtNGMtMS42NiAwLTMgMS4zNC0zIDN2OGMwIDEuNjYgMS4zNCAzIDMgM2g0YzEuNjYgMCAzLTEuMzQgMy0zVjhjMC0xLjY2LTEuMzQtMy0zLTN6bS05IDNWNUg1QzMuMzQgNSAyIDYuMzQgMiA4djhjMCAxLjY2IDEuMzQgMyAzIDNoM2MxLjY2IDAgMy0xLjM0IDMtM3YtM2MwLTEuNjYtMS4zNC0zLTMtM0g1VjhoNXptLTIgNXYzSDV2LTNoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFjY2Vzc0FsYXJtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiA1LjcyLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek03Ljg4IDMuMzkgNi42IDEuODYgMiA1LjcxbDEuMjkgMS41MyA0LjU5LTMuODV6TTEyLjUgOEgxMXY2bDQuNzUgMi44NS43NS0xLjIzLTQtMi4zN1Y4ek0xMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5YTkgOSAwIDAgMCAwLTE4em0wIDE2Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFjY2Vzc0FsYXJtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgNS43LTQuNi0zLjktMS4zIDEuNSA0LjYgMy45TDIyIDUuN3pNNy45IDMuNCA2LjYgMS45IDIgNS43bDEuMyAxLjUgNC42LTMuOHpNMTIuNSA4SDExdjZsNC43IDIuOS44LTEuMi00LTIuNFY4ek0xMiA0Yy01IDAtOSA0LTkgOXM0IDkgOSA5IDktNCA5LTktNC05LTktOXptMCAxNmMtMy45IDAtNy0zLjEtNy03czMuMS03IDctNyA3IDMuMSA3IDctMy4xIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjZXNzVGltZUZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnptMy4zIDE0LjcxTDExIDEyLjQxVjdoMnY0LjU5bDMuNzEgMy43MS0xLjQyIDEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBY2Nlc3NUaW1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bS41LTEzSDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZFVuaXRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6TTcgNFYzaDEwdjFIN3ptMCAxNFY2aDEwdjEySDd6bTAgM3YtMWgxMHYxSDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDdIOHYyaDhWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZEFsYXJtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljg4IDMuMzkgNi42IDEuODYgMiA1LjcxbDEuMjkgMS41MyA0LjU5LTMuODV6TTIyIDUuNzJsLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek0xMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5YTkgOSAwIDAgMCAwLTE4em0wIDE2Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3ptMS0xMWgtMnYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zVjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRUb0hvbWVTY3JlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEuMDEgOCAxYy0xLjEgMC0yIC45LTIgMnYzaDJWNWgxMHYxNEg4di0xSDZ2M2MwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTEwIDE1aDJWOEg1djJoMy41OUwzIDE1LjU5IDQuNDEgMTcgMTAgMTEuNDFWMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBaXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTdjMCAxLjY1LTEuMzUgMy0zIDNzLTMtMS4zNS0zLTNoMmMwIC41NS40NSAxIDEgMXMxLS40NSAxLTEtLjQ1LTEtMS0xSDJ2LTJoOS41YzEuNjUgMCAzIDEuMzUgMyAzek0xOSA2LjVDMTkgNC41NyAxNy40MyAzIDE1LjUgM1MxMiA0LjU3IDEyIDYuNWgyYzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41UzE2LjMzIDggMTUuNSA4SDJ2MmgxMy41YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41em0tLjUgNC41SDJ2MmgxNi41Yy44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjV2MmMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMyMC40MyAxMSAxOC41IDExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlycGxhbmVUaWNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjE5IDRINGMtMS4xIDAtMS45OS45LTEuOTkgMnY0YzEuMSAwIDEuOTkuOSAxLjk5IDJzLS44OSAyLTIgMnY0YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uODEtMi0xLjgxLTJ6TTIwIDE4SDR2LTIuNTRjMS4xOS0uNjkgMi0xLjk5IDItMy40NiAwLTEuNDgtLjgtMi43Ny0xLjk5LTMuNDZMNCA2aDE2djEyek04Ljg3IDE1LjY2bC0xLjY2LTIuODguOTMtLjI1IDEuMjYuOTkgMi4zOS0uNjQtMi40LTQuMTYgMS40LS4zOCA0LjAxIDMuNzQgMi40NC0uNjVhLjk2Ny45NjcgMCAwIDEgMS4xOC42OC45ODguOTg4IDAgMCAxLS42OSAxLjE5bC04Ljg2IDIuMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBaXJwbGFuZW1vZGVBY3RpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE2di0ybC04LjUtNVYzLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNVY5TDIgMTR2Mmw4LjUtMi41VjE5TDggMjAuNVYyMmw0LTEgNCAxdi0xLjVMMTMuNSAxOXYtNS41TDIyIDE2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlycGxhbmVtb2RlSW5hY3RpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjUgNy42N1YzLjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVWOWw4LjUgNXYybC00LjQ5LTEuMzItNy4wMS03LjAxem05LjI4IDE0Ljk0IDEuNDEtMS40MS03LjY5LTcuNy0zLjk0LTMuOTQtNi43NS02Ljc1LTEuNDIgMS40MSA2LjM4IDYuMzhMMiAxNHYybDguNS0yLjVWMTlMOCAyMC41VjIybDQtMSA0IDF2LTEuNUwxMy41IDE5di0yLjY3bDYuMjggNi4yOHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFvZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyem0wLTE0SDdWM2gxMHYxem0tOSA2aDh2MS41SDhWMTB6bTEgM2g2djEuNUg5VjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeTBCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2MTRoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeTFCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2MTJoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeTJCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2MTBoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeTNCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2OGg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYXR0ZXJ5NEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDV2MTZjMCAuNTUtLjQ1IDEtMSAxSDhjLS41NSAwLTEtLjQ1LTEtMVY1YzAtLjU1LjQ1LTEgMS0xaDJWMmg0djJoMmMuNTUgMCAxIC40NSAxIDF6bS0yIDFIOXY2aDZWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdHRlcnk1QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNXYxNmMwIC41NS0uNDUgMS0xIDFIOGMtLjU1IDAtMS0uNDUtMS0xVjVjMC0uNTUuNDUtMSAxLTFoMlYyaDR2MmgyYy41NSAwIDEgLjQ1IDEgMXptLTIgMUg5djRoNlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeTZCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djE2YzAgLjU1LS40NSAxLTEgMUg4Yy0uNTUgMC0xLS40NS0xLTFWNWMwLS41NS40NS0xIDEtMWgyVjJoNHYyaDJjLjU1IDAgMSAuNDUgMSAxem0tMiAxSDl2Mmg2VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYXR0ZXJ5QWxlcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzdjE1LjMzQzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjUuMzNDMTcgNC42IDE2LjQgNCAxNS42NyA0ek0xMyAxOGgtMnYtMmgydjJ6bTAtNGgtMlY5aDJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdHRlcnlDaGFyZ2luZ0Z1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjY3IDRIMTRWMmgtNHYySDguMzNDNy42IDQgNyA0LjYgNyA1LjMzdjE1LjMzQzcgMjEuNCA3LjYgMjIgOC4zMyAyMmg3LjMzYy43NCAwIDEuMzQtLjYgMS4zNC0xLjMzVjUuMzNDMTcgNC42IDE2LjQgNCAxNS42NyA0ek0xMSAyMHYtNS41SDlMMTMgN3Y1LjVoMkwxMSAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdHRlcnlGdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM3YxNS4zM0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdHRlcnlTYXZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNGgtMlYyaC00djJIOGMtLjU1IDAtMSAuNDUtMSAxdjE2YzAgLjU1LjQ1IDEgMSAxaDhjLjU1IDAgMS0uNDUgMS0xVjVjMC0uNTUtLjQ1LTEtMS0xem0tMSAxMGgtMnYyaC0ydi0ySDl2LTJoMnYtMmgydjJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmF0dGVyeVN0ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzN2MTUuMzNDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYXR0ZXJ5VW5rbm93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNjcgNEgxNFYyaC00djJIOC4zM0M3LjYgNCA3IDQuNiA3IDUuMzN2MTUuMzNDNyAyMS40IDcuNiAyMiA4LjMzIDIyaDcuMzNjLjc0IDAgMS4zNC0uNiAxLjM0LTEuMzNWNS4zM0MxNyA0LjYgMTYuNCA0IDE1LjY3IDR6TTEzIDE4aC0ydi0yaDJ2MnptMS4zLTUuMzFzLS4zOC40Mi0uNjcuNzFjLS40OC40OC0uODMgMS4xNS0uODMgMS42aC0xLjZjMC0uODMuNDYtMS41Mi45My0ybC45My0uOTRBMS40OTggMS40OTggMCAwIDAgMTIgOS41Yy0uODMgMC0xLjUuNjctMS41IDEuNUg5YzAtMS42NiAxLjM0LTMgMy0zczMgMS4zNCAzIDNjMCAuNjYtLjI3IDEuMjYtLjcgMS42OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsb29kdHlwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNmg2djJIOXpNMTMgOWgtMnYySDl2MmgydjJoMnYtMmgydi0yaC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy01LjMzIDQuNTUtOCA4LjQ4LTggMTEuOCAwIDQuOTggMy44IDguMiA4IDguMnM4LTMuMjIgOC04LjJjMC0zLjMyLTIuNjctNy4yNS04LTExLjh6bTAgMThjLTMuMzUgMC02LTIuNTctNi02LjIgMC0yLjM0IDEuOTUtNS40NCA2LTkuMTQgNC4wNSAzLjcgNiA2Ljc5IDYgOS4xNCAwIDMuNjMtMi42NSA2LjItNiA2LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCbHVldG9vdGhDb25uZWN0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTcgMTItMi0yLTIgMiAyIDIgMi0yem0xMC43MS00LjI5TDEyIDJoLTF2Ny41OUw2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMSAxNC40MVYyMmgxbDUuNzEtNS43MS00LjMtNC4yOSA0LjMtNC4yOXpNMTMgNS44M2wxLjg4IDEuODhMMTMgOS41OVY1Ljgzem0xLjg4IDEwLjQ2TDEzIDE4LjE3di0zLjc2bDEuODggMS44OHpNMTkgMTBsLTIgMiAyIDIgMi0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsdWV0b290aERpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMyA1LjgzIDEuODggMS44OC0xLjYgMS42IDEuNDEgMS40MSAzLjAyLTMuMDJMMTIgMmgtMXY1LjAzbDIgMnYtMy4yek01LjQxIDQgNCA1LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMSAxNC40MVYyMmgxbDQuMjktNC4yOSAyLjMgMi4yOUwyMCAxOC41OSA1LjQxIDR6TTEzIDE4LjE3di0zLjc2bDEuODggMS44OEwxMyAxOC4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsdWV0b290aERyaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjYuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTdINHYtNWgxMXYtMkg0LjgxbDEuMDQtM0gxNVY1SDUuNWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMiAxMnY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThoLTJ2NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMy44NSAxOS4xNSAxaC0uNXYzLjc5bC0yLjMtMi4yOS0uNy43TDE4LjQ0IDZsLTIuNzkgMi43OS43LjcxIDIuMy0yLjNWMTFoLjVMMjIgOC4xNCAxOS44NSA2IDIyIDMuODV6bS0yLjM1LS45NC45NC45NC0uOTQuOTRWMi45MXptLjk0IDUuMjMtLjk0Ljk0VjcuMmwuOTQuOTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCbHVldG9vdGhTZWFyY2hpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjI0IDEyLjAxIDIuMzIgMi4zMmMuMjgtLjcyLjQ0LTEuNTEuNDQtMi4zM3MtLjE2LTEuNTktLjQzLTIuMzFsLTIuMzMgMi4zMnptNS4yOS01LjMtMS4yNiAxLjI2Yy42MyAxLjIxLjk4IDIuNTcuOTggNC4wMnMtLjM2IDIuODItLjk4IDQuMDJsMS4yIDEuMmE5LjkzNiA5LjkzNiAwIDAgMCAxLjU0LTUuMzFjLS4wMS0xLjg5LS41NS0zLjY3LTEuNDgtNS4xOXptLTMuODIgMUwxMCAySDl2Ny41OUw0LjQxIDUgMyA2LjQxIDguNTkgMTIgMyAxNy41OSA0LjQxIDE5IDkgMTQuNDFWMjJoMWw1LjcxLTUuNzEtNC4zLTQuMjkgNC4zLTQuMjl6TTExIDUuODNsMS44OCAxLjg4TDExIDkuNTlWNS44M3ptMS44OCAxMC40NkwxMSAxOC4xN3YtMy43NmwxLjg4IDEuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCbHVldG9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjcxIDcuNzEgMTIgMmgtMXY3LjU5TDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDExIDE0LjQxVjIyaDFsNS43MS01LjcxLTQuMy00LjI5IDQuMy00LjI5ek0xMyA1LjgzbDEuODggMS44OEwxMyA5LjU5VjUuODN6bTEuODggMTAuNDZMMTMgMTguMTd2LTMuNzZsMS44OCAxLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJpZ2h0bmVzc0F1dG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExIDctMy4yIDloMS45bC43LTJoMy4ybC43IDJoMS45TDEzIDdoLTJ6bS0uMTUgNS42NUwxMiA5bDEuMTUgMy42NWgtMi4zek0yMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OUwyMy4zMSAxMiAyMCA4LjY5em0tMiA1Ljc5VjE4aC0zLjUyTDEyIDIwLjQ4IDkuNTIgMThINnYtMy41MkwzLjUyIDEyIDYgOS41MlY2aDMuNTJMMTIgMy41MiAxNC40OCA2SDE4djMuNTJMMjAuNDggMTIgMTggMTQuNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCcmlnaHRuZXNzSGlnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOC42OVY0aC00LjY5TDEyIC42OSA4LjY5IDRINHY0LjY5TC42OSAxMiA0IDE1LjMxVjIwaDQuNjlMMTIgMjMuMzEgMTUuMzEgMjBIMjB2LTQuNjlMMjMuMzEgMTIgMjAgOC42OXptLTIgNS43OVYxOGgtMy41MkwxMiAyMC40OCA5LjUyIDE4SDZ2LTMuNTJMMy41MiAxMiA2IDkuNTJWNmgzLjUyTDEyIDMuNTIgMTQuNDggNkgxOHYzLjUyTDIwLjQ4IDEyIDE4IDE0LjQ4ek0xMiA2Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnptMCAxMGMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0LTEuNzkgNC00IDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMi41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCcmlnaHRuZXNzTG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OUwyMy4zMSAxMiAyMCA4LjY5em0tMiA1Ljc5VjE4aC0zLjUyTDEyIDIwLjQ4IDkuNTIgMThINnYtMy41MkwzLjUyIDEyIDYgOS41MlY2aDMuNTJMMTIgMy41MiAxNC40OCA2SDE4djMuNTJMMjAuNDggMTIgMTggMTQuNDh6TTEyIDZjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02em0wIDEwYy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDQtMS43OSA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyaWdodG5lc3NNZWRpdW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6bS0yIDUuNzlWMThoLTMuNTJMMTIgMjAuNDggOS41MiAxOEg2di0zLjUyTDMuNTIgMTIgNiA5LjUyVjZoMy41MkwxMiAzLjUyIDE0LjQ4IDZIMTh2My41MkwyMC40OCAxMiAxOCAxNC40OHpNMTIgNnYxMmMzLjMxIDAgNi0yLjY5IDYtNnMtMi42OS02LTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1VjRjMC0uNTUtLjQ1LTEtMS0xaC0yYy0uNTUgMC0xIC40NS0xIDF2MWgtMXY0YzAgLjU1LjQ1IDEgMSAxaDF2N2MwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJWN2MwLTIuMjEtMS43OS00LTQtNFM1IDQuNzkgNSA3djdINGMtLjU1IDAtMSAuNDUtMSAxdjRoMXYxYzAgLjU1LjQ1IDEgMSAxaDJjLjU1IDAgMS0uNDUgMS0xdi0xaDF2LTRjMC0uNTUtLjQ1LTEtMS0xSDdWN2MwLTEuMS45LTIgMi0yczIgLjkgMiAydjEwYzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTR2LTdoMWMuNTUgMCAxLS40NSAxLTFWNWgtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbWVyYXN3aXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgN2gtMWwtMS0xaC00TDkgN0g4Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0yem0wIDhIOFY5aDEuODNsMS0xaDIuMzRsMSAxSDE2djZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjU3LjUyIDEzLjA1IDVsMS40MS0xLjQxLTEuNTQtMS41NEMxNy43IDIuNDYgMjEuNTMgNi4yNCAyMiAxMWgyQzIzLjM2IDMuMyAxNS43OS0xLjY3IDguNTcuNTJ6TTkuNTQgMjAuNDFsMS41NCAxLjU0QzYuMyAyMS41NCAyLjQ3IDE3Ljc2IDIgMTNIMGMuNjQgNy43IDguMjEgMTIuNjcgMTUuNDMgMTAuNDhMMTAuOTUgMTlsLTEuNDEgMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyZWRpdFNjb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmg1di0ySDR2LTZoMThWNmMwLTEuMTEtLjg5LTItMi0yem0wIDRINFY2aDE2djJ6bS01LjA3IDExLjE3LTIuODMtMi44My0xLjQxIDEuNDFMMTQuOTMgMjIgMjIgMTQuOTNsLTEuNDEtMS40MS01LjY2IDUuNjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXJrTW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMzcgNS41MUE3LjM1IDcuMzUgMCAwIDAgOS4xIDcuNWMwIDQuMDggMy4zMiA3LjQgNy40IDcuNC42OCAwIDEuMzUtLjA5IDEuOTktLjI3QTcuMDE0IDcuMDE0IDAgMCAxIDEyIDE5Yy0zLjg2IDAtNy0zLjE0LTctNyAwLTIuOTMgMS44MS01LjQ1IDQuMzctNi40OXpNMTIgM2E5IDkgMCAxIDAgOSA5YzAtLjQ2LS4wNC0uOTItLjEtMS4zNmE1LjM4OSA1LjM4OSAwIDAgMS00LjQgMi4yNiA1LjQwMyA1LjQwMyAwIDAgMS0zLjE0LTkuOGMtLjQ0LS4wNi0uOS0uMS0xLjM2LS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGF0YVNhdmVyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAyLjA1djMuMDNjMy4zOS40OSA2IDMuMzkgNiA2LjkyIDAgLjktLjE4IDEuNzUtLjQ4IDIuNTRsMi42IDEuNTNjLjU2LTEuMjQuODgtMi42Mi44OC00LjA3IDAtNS4xOC0zLjk1LTkuNDUtOS05Ljk1ek0xMiAxOWMtMy44NyAwLTctMy4xMy03LTcgMC0zLjUzIDIuNjEtNi40MyA2LTYuOTJWMi4wNWMtNS4wNi41LTkgNC43Ni05IDkuOTUgMCA1LjUyIDQuNDcgMTAgOS45OSAxMCAzLjMxIDAgNi4yNC0xLjYxIDguMDYtNC4wOWwtMi42LTEuNTNBNi45NSA2Ljk1IDAgMCAxIDEyIDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGF0YVNhdmVyT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDh2M0g4djJoM3YzaDJ2LTNoM3YtMmgtM1Y4aC0yem0yLTUuOTV2My4wM2MzLjM5LjQ5IDYgMy4zOSA2IDYuOTIgMCAuOS0uMTggMS43NS0uNDggMi41NGwyLjYgMS41M2MuNTYtMS4yNC44OC0yLjYyLjg4LTQuMDcgMC01LjE4LTMuOTUtOS40NS05LTkuOTV6TTEyIDE5Yy0zLjg3IDAtNy0zLjEzLTctNyAwLTMuNTMgMi42MS02LjQzIDYtNi45MlYyLjA1Yy01LjA2LjUtOSA0Ljc2LTkgOS45NSAwIDUuNTIgNC40NyAxMCA5Ljk5IDEwIDMuMzEgMCA2LjI0LTEuNjEgOC4wNi00LjA5bC0yLjYtMS41M0E2Ljk1IDYuOTUgMCAwIDEgMTIgMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXRhVXNhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDIuMDV2My4wM2MzLjM5LjQ5IDYgMy4zOSA2IDYuOTIgMCAuOS0uMTggMS43NS0uNDggMi41NGwyLjYgMS41M2MuNTYtMS4yNC44OC0yLjYyLjg4LTQuMDcgMC01LjE4LTMuOTUtOS40NS05LTkuOTV6TTEyIDE5Yy0zLjg3IDAtNy0zLjEzLTctNyAwLTMuNTMgMi42MS02LjQzIDYtNi45MlYyLjA1Yy01LjA2LjUtOSA0Ljc2LTkgOS45NSAwIDUuNTIgNC40NyAxMCA5Ljk5IDEwIDMuMzEgMCA2LjI0LTEuNjEgOC4wNi00LjA5bC0yLjYtMS41M0E2Ljk1IDYuOTUgMCAwIDEgMTIgMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXRhc2V0TGlua2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxN2gxLjA5Yy4yOC0xLjY3IDEuMjQtMy4xIDIuNi00SDd2NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxOVY1aDE0djdoMWMuMzQgMCAuNjcuMDQgMSAuMDlWNWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDMuODFjLS4zNS0uNjEtLjYtMS4yOC0uNzItMkg1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDdoNHY0SDd6TTEzIDdoNHY0aC00ek0xNiAyMGgtMmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJoMnYtMmgtMmMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNGgydi0yek0yMCAxNGgtMnYyaDJjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyaC0ydjJoMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTl2LTJoLTZ2Mmg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGF0YXNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTNoNHY0SDd6TTEzIDEzaDR2NGgtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDdoNHY0SDd6TTEzIDdoNHY0aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGV2ZWxvcGVyTW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA1aDEwdjJoMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5TDcgMWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTguNDEgMTEuNTlMMjAgMTJsLTQuNTktNC41OUwxNCA4LjgzIDE3LjE3IDEyIDE0IDE1LjE3bDEuNDEgMS40MnpNMTAgMTUuMTcgNi44MyAxMiAxMCA4LjgzIDguNTkgNy40MSA0IDEybDQuNTkgNC41OUwxMCAxNS4xN3pNMTcgMTlIN3YtMkg1djRjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMnYtNGgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGV2aWNlVGhlcm1vc3RhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTNWNWMwLTEuNjYtMS4zNC0zLTMtM1M5IDMuMzQgOSA1djhjLTEuMjEuOTEtMiAyLjM3LTIgNCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01YzAtMS42My0uNzktMy4wOS0yLTR6bS00LTJWNWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MWgtMXYxaDF2MmgtMXYxaDF2MWgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURldmljZXNGb2xkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM2gtM2MwLTEuNDQtMS40Ny0yLjQtMi43OS0xLjg0bC0zIDEuMjlDMTAuNDggMi43NiAxMCAzLjQ5IDEwIDQuMjlWMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS01IDEzLjY4LTMgMS4yOVY0LjI5TDE1IDN2MTMuNjh6TTIwIDE5aC01LjMzbDEuMTItLjQ4Yy43My0uMzIgMS4yMS0xLjA0IDEuMjEtMS44NFY1aDN2MTR6TTIgM2gydjJIMnpNMiAxOWgydjJIMnpNMiAxNWgydjJIMnpNMiAxMWgydjJIMnpNMiA3aDJ2Mkgyek02IDNoMnYySDZ6TTYgMTloMnYySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXZpY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZoMThWNEg0Yy0xLjEgMC0yIC45LTIgMnYxMUgwdjNoMTR2LTNINFY2em0xOSAyaC02Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTF6bS0xIDloLTR2LTdoNHY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlzY291bnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi43OSAyMSAzIDExLjIxdjJjMCAuNTMuMjEgMS4wNC41OSAxLjQxbDcuNzkgNy43OWMuNzguNzggMi4wNS43OCAyLjgzIDBsNi4yMS02LjIxYy43OC0uNzguNzgtMi4wNSAwLTIuODNMMTIuNzkgMjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjM4IDE3LjQxYy4zOS4zOS45LjU5IDEuNDEuNTkuNTEgMCAxLjAyLS4yIDEuNDEtLjU5bDYuMjEtNi4yMWMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzTDEyLjYyLjU4QzEyLjI1LjIxIDExLjc0IDAgMTEuMjEgMEg1QzMuOSAwIDMgLjkgMyAydjYuMjFjMCAuNTMuMjEgMS4wNC41OSAxLjQxbDcuNzkgNy43OXpNNSAyaDYuMjFMMTkgOS43OSAxMi43OSAxNiA1IDguMjFWMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3LjI1XCIsXCJjeVwiOlwiNC4yNVwiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9Ob3REaXN0dXJiT25Ub3RhbFNpbGVuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0wLTE0Yy0zLjMgMC02IDIuNy02IDZzMi43IDYgNiA2IDYtMi43IDYtNi0yLjYtNi02LTZ6bTMgN0g5di0yaDZ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUR2ciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNEgzVjVoMTh2MTJ6bS0yLTlIOHYyaDExVjh6bTAgNEg4djJoMTF2LTJ6TTcgOEg1djJoMlY4em0wIDRINXYyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOVY3SDh2MTBoOHYtMmgtNnYtMmg2di0yaC02VjloNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVkZ2VzZW5zb3JIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDdoMnY3SDNWN3ptLTMgM2gydjdIMHYtN3ptMjItM2gydjdoLTJWN3ptLTMgM2gydjdoLTJ2LTd6bS0zLTcuOTlMOCAyYy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0xLjk5LTItMS45OXpNMTYgMjBIOHYtMWg4djF6bTAtM0g4VjdoOHYxMHpNOCA1VjRoOHYxSDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFZGdlc2Vuc29yTG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDdoMnY3SDJWN3ptMTggM2gydjdoLTJ2LTd6bS00LTcuOTlMOCAyYy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0xLjk5LTItMS45OXpNMTYgMjBIOHYtMWg4djF6bTAtM0g4VjdoOHYxMHpNOCA1VjRoOHYxSDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGFzaGxpZ2h0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjgxIDIuODEgMS4zOSA0LjIyIDggMTAuODNWMjJoOHYtMy4xN2wzLjc4IDMuNzggMS40MS0xLjQxTDIuODEgMi44MXpNMTQgMjBoLTR2LTcuMTdsNCA0VjIwek0xNiA0djFINy44M2wyIDJIMTZ2LjM5bC0yIDMuMDF2Ljc3bDIgMlYxMWwyLTNWMkg2djEuMTdsLjgzLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmxhc2hsaWdodE9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAySDZ2NmwyIDN2MTFoOFYxMWwyLTNWMnptLTIgMnYxSDhWNGg4em0tMiA2LjRWMjBoLTR2LTkuNjFsLTItM1Y3aDh2LjM5bC0yIDMuMDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbG91cmVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNWgxNFY5SDV2NnptMi00aDEwdjJIN3YtMnpNMTEgMmgydjNoLTJ6TTE3LjI4NiA2LjM5OWwxLjc5LTEuODAzIDEuNDIgMS40MS0xLjc5IDEuODAyek0xMSAxOWgydjNoLTJ6TTE3LjI5IDE3LjcxbDEuNzkgMS44IDEuNDItMS40Mi0xLjgtMS43OXpNMy40OTUgNi4wMWwxLjQwNy0xLjQwOEw2LjY5IDYuMzkxIDUuMjg0IDcuNzk4ek0zLjQ5MiAxOC4wNzZsMS44MDMtMS43OSAxLjQwOSAxLjQyLTEuODAzIDEuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbHVvcmVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNWgxNFY5SDV2NnptMi00aDEwdjJIN3YtMnpNMTEgMmgydjNoLTJ6TTE3LjI4NiA2LjM5OWwxLjc5LTEuODAzIDEuNDIgMS40MS0xLjc5IDEuODAyek0xMSAxOWgydjNoLTJ6TTE3LjI5IDE3LjcxbDEuNzkgMS44IDEuNDItMS40Mi0xLjgtMS43OXpNMy40OTUgNi4wMWwxLjQwNy0xLjQwOEw2LjY5IDYuMzkxIDUuMjg0IDcuNzk4ek0zLjQ5MiAxOC4wNzZsMS44MDMtMS43OSAxLjQwOSAxLjQyLTEuODAzIDEuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbWRCYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQuMiAwLTggMy4yMi04IDguMiAwIDMuMzIgMi42NyA3LjI1IDggMTEuOCA1LjMzLTQuNTUgOC04LjQ4IDgtMTEuOEMyMCA1LjIyIDE2LjIgMiAxMiAyem0wIDE3LjMzYy00LjA1LTMuNy02LTYuNzktNi05LjE0QzYgNi41NyA4LjY1IDQgMTIgNHM2IDIuNTcgNiA2LjJjMCAyLjM0LTEuOTUgNS40NC02IDkuMTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDZoMnY1aC0yek0xMSAxM2gydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbWRHb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTYtMS44QzE4IDYuNTcgMTUuMzUgNCAxMiA0cy02IDIuNTctNiA2LjJjMCAyLjM0IDEuOTUgNS40NCA2IDkuMTQgNC4wNS0zLjcgNi02LjggNi05LjE0ek0xMiAyYzQuMiAwIDggMy4yMiA4IDguMiAwIDMuMzItMi42NyA3LjI1LTggMTEuOC01LjMzLTQuNTUtOC04LjQ4LTgtMTEuOEM0IDUuMjIgNy44IDIgMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMXYyaDJ2Mkg5VjloN2MwLTEuMS0uOS0yLTItMkg5Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoNWMxLjEgMCAyLS45IDItMnYtNGgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdwcEJhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMiA0IDV2Ni4wOWMwIDUuMDUgMy40MSA5Ljc2IDggMTAuOTEgNC41OS0xLjE1IDgtNS44NiA4LTEwLjkxVjVsLTgtM3ptNiA5LjA5YzAgNC0yLjU1IDcuNy02IDguODMtMy40NS0xLjEzLTYtNC44Mi02LTguODN2LTQuN2w2LTIuMjUgNiAyLjI1djQuN3pNOS45MSA4LjUgOC41IDkuOTEgMTAuNTkgMTIgOC41IDE0LjA5bDEuNDEgMS40MUwxMiAxMy40MmwyLjA5IDIuMDggMS40MS0xLjQxTDEzLjQyIDEybDIuMDgtMi4wOS0xLjQxLTEuNDFMMTIgMTAuNTkgOS45MSA4LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcHBHb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zem02IDkuMDljMCA0LTIuNTUgNy43LTYgOC44My0zLjQ1LTEuMTMtNi00LjgyLTYtOC44M1Y2LjMxbDYtMi4xMiA2IDIuMTJ2NC43OHptLTkuMTgtLjVMNy40IDEybDMuNTQgMy41NCA1LjY2LTUuNjYtMS40MS0xLjQxLTQuMjQgNC4yNC0yLjEzLTIuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcHBNYXliZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMiA0IDV2Ni4wOWMwIDUuMDUgMy40MSA5Ljc2IDggMTAuOTEgNC41OS0xLjE1IDgtNS44NiA4LTEwLjkxVjVsLTgtM3ptNiA5LjA5YzAgNC0yLjU1IDcuNy02IDguODMtMy40NS0xLjEzLTYtNC44Mi02LTguODN2LTQuN2w2LTIuMjUgNiAyLjI1djQuN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTRoMnYyaC0yek0xMSA3aDJ2NWgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdwc0ZpeGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptOC45NCAzQTguOTk0IDguOTk0IDAgMCAwIDEzIDMuMDZWMWgtMnYyLjA2QTguOTk0IDguOTk0IDAgMCAwIDMuMDYgMTFIMXYyaDIuMDZBOC45OTQgOC45OTQgMCAwIDAgMTEgMjAuOTRWMjNoMnYtMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAyMC45NCAxM0gyM3YtMmgtMi4wNnpNMTIgMTljLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3BzTm90Rml4ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjk0IDExQTguOTk0IDguOTk0IDAgMCAwIDEzIDMuMDZWMWgtMnYyLjA2QTguOTk0IDguOTk0IDAgMCAwIDMuMDYgMTFIMXYyaDIuMDZBOC45OTQgOC45OTQgMCAwIDAgMTEgMjAuOTRWMjNoMnYtMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAyMC45NCAxM0gyM3YtMmgtMi4wNnpNMTIgMTljLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3BzT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC45NCAxMUE4Ljk5NCA4Ljk5NCAwIDAgMCAxMyAzLjA2VjFoLTJ2Mi4wNmMtLjk4LjExLTEuOTEuMzgtMi43Ny43OGwxLjUzIDEuNTNhNi45OTUgNi45OTUgMCAwIDEgOC44NyA4Ljg3bDEuNTMgMS41M2MuNC0uODYuNjctMS43OS43OC0yLjc3SDIzdi0yaC0yLjA2ek0zIDQuMjdsMi4wNCAyLjA0QTguOTk0IDguOTk0IDAgMCAwIDMuMDYgMTFIMXYyaDIuMDZBOC45OTQgOC45OTQgMCAwIDAgMTEgMjAuOTRWMjNoMnYtMi4wNmMxLjc3LS4yIDMuMzgtLjkxIDQuNjktMS45OEwxOS43MyAyMWwxLjQxLTEuNDFMNC40MSAyLjg2IDMgNC4yN3ptMTMuMjcgMTMuMjdhNi45OTUgNi45OTUgMCAwIDEtOS44MS05LjgxbDkuODEgOS44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyYXBoaWNFcSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxOGgyVjZIN3YxMnptNCA0aDJWMmgtMnYyMHptLTgtOGgydi00SDN2NHptMTIgNGgyVjZoLTJ2MTJ6bTQtOHY0aDJ2LTRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcmlkM1gzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMFY4aC00VjRoLTJ2NGgtNFY0SDh2NEg0djJoNHY0SDR2Mmg0djRoMnYtNGg0djRoMnYtNGg0di0yaC00di00aDR6bS02IDRoLTR2LTRoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JpZDRYNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgN1Y1aC0zVjJoLTJ2M2gtNFYyaC0ydjNIN1YySDV2M0gydjJoM3Y0SDJ2MmgzdjRIMnYyaDN2M2gydi0zaDR2M2gydi0zaDR2M2gydi0zaDN2LTJoLTN2LTRoM3YtMmgtM1Y3aDN6TTcgN2g0djRIN1Y3em0wIDEwdi00aDR2NEg3em0xMCAwaC00di00aDR2NHptMC02aC00VjdoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JpZEdvbGRlbnJhdGlvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMVY5aC03VjJoLTJ2N2gtMlYySDl2N0gydjJoN3YySDJ2Mmg3djdoMnYtN2gydjdoMnYtN2g3di0yaC03di0yaDd6bS05IDJoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSE1vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDExSDlWN0g3djEwaDJ2LTRoNnY0aDJWN2gtMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSFBsdXNNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMUg2VjdINHYxMGgydi00aDZ2NGgyVjdoLTJ2NHptMTAgMGgtMlY5aC0ydjJoLTJ2MmgydjJoMnYtMmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGRyQXV0b1NlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTZINi41djZIMTBjLjggMCAxLjUtLjcgMS41LTEuNXYtM2MwLS44LS43LTEuNS0xLjUtMS41em0wIDQuNUg4di0zaDJ2M3pNMy41IDE4aC0ydi0ySDB2NmgxLjV2LTIuNWgyVjIySDV2LTZIMy41ek0yMiAxOC41di0yaC0xLjV2MmgtMlYyMGgydjJIMjJ2LTJoMnYtMS41ek0xNi41IDE2SDEzdjZoMS41di0yaDEuMWwuOSAySDE4bC0uOS0yLjFjLjUtLjMuOS0uOC45LTEuNHYtMWMwLS44LS43LTEuNS0xLjUtMS41em0wIDIuNWgtMnYtMWgydjF6TTExLjk3IDUuM2wtMS4wMiAyLjg5aDIuMUwxMi4wMyA1LjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDOC42OSAyIDYgNC42OSA2IDhzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6bTIuMDQgOS0uNjMtMS43OWgtMi44M0w5Ljk2IDExSDguNzRsMi42My03aDEuMjVsMi42MyA3aC0xLjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGRyQXV0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bS0uOTktMTRMNi44OCAxN2gxLjlsMS0yLjgxaDQuNDRsLjk5IDIuODFoMS45TDEyLjk4IDZoLTEuOTd6bS0uNjYgNi41OSAxLjYtNC41NWguMDlsMS42IDQuNTVoLTMuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZHJPZmZTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE4LjV2LTFjMC0uOC0uNy0xLjUtMS41LTEuNUgxM3Y2aDEuNXYtMmgxLjFsLjkgMkgxOGwtLjktMi4xYy41LS4zLjktLjguOS0xLjR6bS0xLjUgMGgtMnYtMWgydjF6bS0xMy0uNWgtMnYtMkgwdjZoMS41di0yLjVoMlYyMkg1di02SDMuNXYyem02LjUtMkg2LjV2NkgxMGMuOCAwIDEuNS0uNyAxLjUtMS41di0zYzAtLjgtLjctMS41LTEuNS0xLjV6bTAgNC41SDh2LTNoMnYzem0xNC0uNWgtMnYyaC0xLjV2LTJoLTJ2LTEuNWgydi0ySDIydjJoMlYyMHpNMTAuOTggNC4xNSA5LjQyIDIuNTljNS4xLTIuNDIgMTAuNDEgMi44OSA3Ljk5IDcuOTlsLTEuNTYtMS41NmMuODEtMi45Ni0xLjkxLTUuNjgtNC44Ny00Ljg3ek02LjM0IDIuMzQgNC45MyAzLjc2bDEuNjYgMS42NmMtMi40MiA1LjEgMi44OSAxMC40MSA3Ljk5IDcuOTlsMS42NiAxLjY2IDEuNDEtMS40MUw2LjM0IDIuMzR6bTEuODEgNC42NCA0Ljg3IDQuODdjLTIuOTYuODEtNS42OC0xLjkxLTQuODctNC44N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhkck9uU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxOC41di0xYzAtLjgtLjctMS41LTEuNS0xLjVIMTN2NmgxLjV2LTJoMS4xbC45IDJIMThsLS45LTIuMWMuNS0uMy45LS44LjktMS40em0tMS41IDBoLTJ2LTFoMnYxem0tMTMtLjVoLTJ2LTJIMHY2aDEuNXYtMi41aDJWMjJINXYtNkgzLjV2MnptNi41LTJINi41djZIMTBjLjggMCAxLjUtLjcgMS41LTEuNXYtM2MwLS44LS43LTEuNS0xLjUtMS41em0wIDQuNUg4di0zaDJ2M3ptMTQtLjVoLTJ2MmgtMS41di0yaC0ydi0xLjVoMnYtMkgyMnYyaDJWMjB6TTEyIDRjMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDQtNC0xLjc5LTQtNCAxLjc5LTQgNC00bTAtMkM4LjY5IDIgNiA0LjY5IDYgOHMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDIyaDh2LTdoLTN2LTRoLTVWOWgzVjJIOHY3aDN2Mkg2djRIM3Y3aDh2LTdIOHYtMmg4djJoLTN2N3pNMTAgN1Y0aDR2M2gtNHpNOSAxN3YzSDV2LTNoNHptMTAgMHYzaC00di0zaDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMZW5zQmx1ciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxM2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC04Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bS0zIC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNNiA1Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTE1IDUuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTE0IDdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMC0zLjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0tMTEgMTBjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em03IDdjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0wLTE3Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTAgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wIDUuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTggLjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCA0Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtOGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLTRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMyA4LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek0xNCAxN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bS00LTEyYy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptMCA4LjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptNC00LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0wLTRjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGlnaHRNb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOWMxLjY1IDAgMyAxLjM1IDMgM3MtMS4zNSAzLTMgMy0zLTEuMzUtMy0zIDEuMzUtMyAzLTNtMC0yYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXpNMiAxM2gyYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xSDJjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDF6bTE4IDBoMmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtMmMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMXpNMTEgMnYyYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMVYyYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxem0wIDE4djJjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xdi0yYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxek01Ljk5IDQuNThhLjk5Ni45OTYgMCAwIDAtMS40MSAwIC45OTYuOTk2IDAgMCAwIDAgMS40MWwxLjA2IDEuMDZjLjM5LjM5IDEuMDMuMzkgMS40MSAwcy4zOS0xLjAzIDAtMS40MUw1Ljk5IDQuNTh6bTEyLjM3IDEyLjM3YS45OTYuOTk2IDAgMCAwLTEuNDEgMCAuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMS4wNiAxLjA2Yy4zOS4zOSAxLjAzLjM5IDEuNDEgMGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTEuMDYtMS4wNnptMS4wNi0xMC45NmEuOTk2Ljk5NiAwIDAgMCAwLTEuNDEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLTEuMDYgMS4wNmMtLjM5LjM5LS4zOSAxLjAzIDAgMS40MXMxLjAzLjM5IDEuNDEgMGwxLjA2LTEuMDZ6TTcuMDUgMTguMzZhLjk5Ni45OTYgMCAwIDAgMC0xLjQxLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0xLjA2IDEuMDZjLS4zOS4zOS0uMzkgMS4wMyAwIDEuNDFzMS4wMy4zOSAxLjQxIDBsMS4wNi0xLjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYXRpb25EaXNhYmxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMTN2LTJoLTIuMDZBOC45OTQgOC45OTQgMCAwIDAgMTMgMy4wNlYxaC0ydjIuMDZjLS45OC4xMS0xLjkxLjM4LTIuNzcuNzhsMS41MyAxLjUzYTYuOTk1IDYuOTk1IDAgMCAxIDguODcgOC44N2wxLjUzIDEuNTNjLjQtLjg2LjY3LTEuNzkuNzgtMi43N0gyM3pNNC40MSAyLjg2IDMgNC4yN2wyLjA0IDIuMDRBOC45OTQgOC45OTQgMCAwIDAgMy4wNiAxMUgxdjJoMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAxMSAyMC45NFYyM2gydi0yLjA2YzEuNzctLjIgMy4zOC0uOTEgNC42OS0xLjk4TDE5LjczIDIxbDEuNDEtMS40MUw0LjQxIDIuODZ6TTEyIDE5QTYuOTk1IDYuOTk1IDAgMCAxIDYuNDYgNy43M2w5LjgxIDkuODFBNi45NzIgNi45NzIgMCAwIDEgMTIgMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhdGlvblNlYXJjaGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuOTQgMTFBOC45OTQgOC45OTQgMCAwIDAgMTMgMy4wNlYxaC0ydjIuMDZBOC45OTQgOC45OTQgMCAwIDAgMy4wNiAxMUgxdjJoMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAxMSAyMC45NFYyM2gydi0yLjA2QTguOTk0IDguOTk0IDAgMCAwIDIwLjk0IDEzSDIzdi0yaC0yLjA2ek0xMiAxOWMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMdGVNb2JpbGVkYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE0aDN2Mkg0VjhoMnY2em0zLTRoMnY2aDJ2LTZoMlY4SDl2MnptMTIgMFY4aC01djhoNXYtMmgtM3YtMWgzdi0yaC0zdi0xaDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMdGVQbHVzTW9iaWxlZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNGgzdjJIMVY4aDJ2NnptMi00aDJ2Nmgydi02aDJWOEg1djJ6bTcgNmg1di0yaC0zdi0xaDN2LTJoLTN2LTFoM1Y4aC01djh6bTEyLTVoLTJWOWgtMnYyaC0ydjJoMnYyaDJ2LTJoMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hY3JvT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC42NiA0LjkzYy4yNCAwIC40Ni4wNy42NC4ybC44MS41NmMtLjI5LjI0LS41NC41NC0uNzIuODdsMS42NiAxLjY2QzExLjAzIDguMTQgMTEgOC4wOCAxMSA4YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMS0uNDUgMS0xIDFjLS4wOCAwLS4xNC0uMDMtLjIyLS4wNGw0LjA2IDQuMDZhMy4xMyAzLjEzIDAgMCAwIDIuNjMtMy4wOWMwLS43MS0uMjUtMS4zOS0uNjctMS45My40My0uNTQuNjctMS4yMi42Ny0xLjkzYTMuMTQ1IDMuMTQ1IDAgMCAwLTMuNTctMy4xMUMxNC40NCAxLjgxIDEzLjMxIDEgMTIgMXMtMi40NC44MS0yLjkxIDEuOTZhMy4xMzIgMy4xMzIgMCAwIDAtMi41Mi43OGwxLjQyIDEuNDJjLjItLjEzLjQyLS4yMy42Ny0uMjN6bTYuNjggNi4xNGMtLjI0IDAtLjQ2LS4wNy0uNjQtLjJsLS44MS0uNTdjLjU1LS40NS45NC0xLjA5IDEuMDYtMS44M2wuODguNDJjLjQuMTkuNjYuNTkuNjYgMS4wMyAwIC42NC0uNTIgMS4xNS0xLjE1IDEuMTV6bS0uNjUtNS45NGMuMi0uMTMuNDItLjIuNjUtLjIuNjMgMCAxLjE0LjUxIDEuMTQgMS4xNCAwIC40NC0uMjUuODMtLjY2IDEuMDNsLS44OC40MmMtLjEyLS43NC0uNTEtMS4zOC0xLjA3LTEuODNsLjgyLS41NnpNMTIgM2MuNjIgMCAxLjEyLjQ5IDEuMTQgMS4xbC0uMTEgMS4wOUMxMi43MSA1LjA3IDEyLjM2IDUgMTIgNXMtLjcuMDctMS4wMi4xOWwtLjEyLTEuMDljLjAyLS42MS41Mi0xLjEgMS4xNC0xLjF6TTE5Ljk4IDE3LjE1QTguOTA5IDguOTA5IDAgMCAwIDIxIDEzYy0xLjUgMC0yLjkxLjM3LTQuMTUgMS4wMmwzLjEzIDMuMTN6TTMgMTNhOSA5IDAgMCAwIDkgOSA5IDkgMCAwIDAtOS05em0yLjQ0IDIuNDRjMS45LjcxIDMuNDIgMi4yMiA0LjEyIDQuMTJhNy4wNCA3LjA0IDAgMCAxLTQuMTItNC4xMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi44MSAyLjgxIDEuMzkgNC4yMmw0LjQyIDQuNDJjLS4xOS40LS4zLjg0LS4zIDEuMjlhMy4xNDcgMy4xNDcgMCAwIDAgMy41OCAzLjExQTMuMTUgMy4xNSAwIDAgMCAxMiAxNWMuMDUgMCAuMTEtLjAxLjE2LS4wMWwxLjY0IDEuNjRBOC44NTMgOC44NTMgMCAwIDAgMTIgMjJjMi4wMiAwIDMuODgtLjY3IDUuMzgtMS44bDIuNCAyLjQgMS40MS0xLjQxTDIuODEgMi44MXptMTEuNjMgMTYuNzVjLjItLjU0LjQ3LTEuMDQuNzktMS41bC43Mi43MmMtLjQ3LjMxLS45Ny41OC0xLjUxLjc4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVkaWFCbHVldG9vdGhPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNi4xN1YzaDZ2NGgtNHYxLjE3bC0yLTJ6TTE5LjQyIDE1IDIyIDE3LjU3bC0uOC44LTYuNzgtNi43OC44LS44IDIuNzUgMi43NVY5aC42TDIyIDEyLjQzIDE5LjQyIDE1em0tLjI1LTEuNDUgMS4xMy0xLjEzLTEuMTMtMS4xM3YyLjI2em0yLjAyIDcuNjQtMS40MSAxLjQxLTMuOTgtMy45OC0uNTguNTgtLjg1LS44NS41OC0uNThMMTEgMTMuODNWMTdjMCAyLjIxLTEuNzggNC0zLjk5IDRTMyAxOS4yMSAzIDE3czEuNzktNCA0LjAxLTRjLjczIDAgMS40MS4yMSAyIC41NXYtMS43MkwxLjM5IDQuMjIgMi44IDIuODFsMTguMzkgMTguMzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZWRpYUJsdWV0b290aE9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05IDMgLjAxIDEwLjU1Yy0uNi0uMzQtMS4yOC0uNTUtMi0uNTVhNC4wMDEgNC4wMDEgMCAxIDAgMCA4QzkuMjMgMjEgMTEgMTkuMjEgMTEgMTdWN2g0VjNIOXptMTIgOS40M0wxNy41NyA5aC0uNnY0LjU1bC0yLjc1LTIuNzUtLjg1Ljg1TDE2LjczIDE1bC0zLjM1IDMuMzUuODUuODUgMi43NS0yLjc1VjIxaC42TDIxIDE3LjU3IDE4LjQyIDE1IDIxIDEyLjQzem0tMi44My0xLjEzIDEuMTMgMS4xMy0xLjEzIDEuMTNWMTEuM3ptMS4xMyA2LjI3LTEuMTMgMS4xM3YtMi4yNmwxLjEzIDEuMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZWRpY2F0aW9uTGlxdWlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzaDEydjJIM3pNMiAyMWgxNFY2SDJ2MTV6bTMtOWgyLjVWOS41aDNWMTJIMTN2M2gtMi41djIuNWgtM1YxNUg1di0zek0yMCA2Yy0xLjY4IDAtMyAxLjc2LTMgNCAwIDEuNzcuODMgMy4yMiAyIDMuNzZWMjFoMnYtNy4yNGMxLjE3LS41NCAyLTEuOTkgMi0zLjc2IDAtMi4yNC0xLjMyLTQtMy00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVkaWNhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNSAxNUg4di0zaDIuNVY5LjVoM1YxMkgxNnYzaC0yLjV2Mi41aC0zVjE1ek0xOSA4djExYzAgMS4xLS45IDItMiAySDdjLTEuMSAwLTItLjktMi0yVjhjMC0xLjEuOS0yIDItMmgxMGMxLjEgMCAyIC45IDIgMnptLTIgMEg3djExaDEwVjh6bTEtNUg2djJoMTJWM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vYmlsZUZyaWVuZGx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxSDljLTEuMSAwLTIgLjktMiAydjNoMlY0aDEwdjE2SDl2LTJIN3YzYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnpNNy4wMSAxMy40N2wtMi41NS0yLjU1LTEuMjcgMS4yN0w3IDE2bDcuMTktNy4xOS0xLjI3LTEuMjctNS45MSA1LjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9iaWxlT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1djguNjFsMiAyVjNjMC0xLjEtLjktMi0yLTJIN2MtLjcxIDAtMS4zMy4zNy0xLjY4LjkzTDguMzkgNUgxN3pNMS40OSAzLjc2IDUgNy4yN1YyMWMwIDEuMS45IDIgMiAyaDEwYzEuMDIgMCAxLjg1LS43NyAxLjk4LTEuNzVsMS43MiAxLjcyIDEuNDEtMS40MUwyLjkgMi4zNSAxLjQ5IDMuNzZ6TTcgOS4yNyAxNi43MyAxOUg3VjkuMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb2JpbGVkYXRhT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNiA2LjgyIDEuNTkgMS41OUwxOSA3bC00LTQtNCA0IDEuNDEgMS40MUwxNCA2LjgydjQuMzVsMiAyek0xLjM5IDQuMjIgOCAxMC44M3Y2LjM1bC0xLjU5LTEuNTlMNSAxN2w0IDQgNC00LTEuNDEtMS40MUwxMCAxNy4xOHYtNC4zNWw5Ljc4IDkuNzggMS40MS0xLjQyTDIuODEgMi44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vZGVOaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDRjNC40MSAwIDggMy41OSA4IDhzLTMuNTkgOC04IDhjLS4zNCAwLS42OC0uMDItMS4wMS0uMDcgMS45MS0yLjE2IDMuMDEtNC45OCAzLjAxLTcuOTNzLTEuMS01Ljc3LTMuMDEtNy45M0M4LjgyIDQuMDIgOS4xNiA0IDkuNSA0bTAtMmMtMS44MiAwLTMuNTMuNS01IDEuMzUgMi45OSAxLjczIDUgNC45NSA1IDguNjVzLTIuMDEgNi45Mi01IDguNjVjMS40Ny44NSAzLjE4IDEuMzUgNSAxLjM1IDUuNTIgMCAxMC00LjQ4IDEwLTEwUzE1LjAyIDIgOS41IDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb2RlU3RhbmRieSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ5IDIgMiA2LjQ5IDIgMTJzNC40OSAxMCAxMCAxMCAxMC00LjQ5IDEwLTEwUzE3LjUxIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTMtOGMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtMyAxLjM0LTMgMy0zIDMgMS4zNCAzIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb25pdG9ySGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjNoMlY2aDE2djNoMlY2YzAtMS4xLS45LTItMi0yek0yMCAxOEg0di0zSDJ2M2MwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ydi0zaC0ydjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0Ljg5IDcuNTVjLS4zNC0uNjgtMS40NS0uNjgtMS43OSAwTDEwIDEzLjc2bC0xLjExLTIuMjFBLjk4OC45ODggMCAwIDAgOCAxMUgydjJoNS4zOGwxLjcyIDMuNDVjLjE4LjM0LjUyLjU1LjkuNTVzLjcyLS4yMS44OS0uNTVMMTQgMTAuMjRsMS4xMSAyLjIxYy4xNy4zNC41MS41NS44OS41NWg2di0yaC01LjM4bC0xLjczLTMuNDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb25pdG9yV2VpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6TTEyIDZjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0tMSAzLjVoLTF2LTFoMXYxem0xLjUgMGgtMXYtMWgxdjF6bTEuNSAwaC0xdi0xaDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5lYXJieUVycm9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiA3LjU3IDQuNDIgNC40MkwxMiAxNi40MWwtNC40Mi00LjQyTDEyIDcuNTd6bTAgMTEuNjItNy4yLTcuMiA3LjItNy4yIDYgNlY3LjE2bC00LjU4LTQuNThjLS43OC0uNzgtMi4wNS0uNzgtMi44MyAwbC04LjAxIDhjLS43OC43OC0uNzggMi4wNSAwIDIuODNsOC4wMSA4Yy43OC43OCAyLjA1Ljc4IDIuODMgMEwxOCAxNi44MnYtMy42M2wtNiA2em04IC44MWgydjJoLTJ2LTJ6bTItMTBoLTJ2OGgydi04XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOZWFyYnlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjQxIDEzLjQyIDE4LjgzIDE2bC0xLjgxLTEuODFMMTkuMiAxMiAxMiA0LjggOS44MSA2Ljk5IDggNS4xN2wyLjU4LTIuNThjLjc4LS43OCAyLjA1LS43OCAyLjgzIDBsOCA4Yy43OS43OC43OSAyLjA0IDAgMi44M3ptLS4yMiA3Ljc3LTEuNDEgMS40MUwxNiAxOC44M2wtMi41OCAyLjU4Yy0uNzguNzgtMi4wNS43OC0yLjgzIDBsLTgtOGMtLjc4LS43OC0uNzgtMi4wNSAwLTIuODNMNS4xNyA4IDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOSAxOC4zOHptLTctNC4xNy0xLjM5LTEuMzktLjguOEw3LjU4IDEybC44LS44LTEuNC0xLjM5TDQuOCAxMmw3LjIgNy4yIDIuMTktMi4xOHpNMTYuNDIgMTIgMTIgNy41OGwtLjguOCA0LjQyIDQuNDIuOC0uOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5ldHdvcmtDZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDIyaDIwVjJMMiAyMnptMTgtMmgtM1Y5LjgzbDMtM1YyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5ldHdvcmtXaWZpMUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDR6bTMuMzIgMTAuODRDMTQuMzQgMTQuMyAxMy4yIDE0IDEyIDE0Yy0xLjIgMC0yLjM0LjMtMy4zMi44NEwyLjkyIDkuMDdDNS41MSA3LjA4IDguNjcgNiAxMiA2czYuNDkgMS4wOCA5LjA4IDMuMDdsLTUuNzYgNS43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5ldHdvcmtXaWZpMkJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDR6bTQuNzggOS4zOEE4Ljg1MyA4Ljg1MyAwIDAgMCAxMiAxMmMtMS43NiAwLTMuNC41LTQuNzggMS4zOGwtNC4zLTQuM0M1LjUxIDcuMDggOC42NyA2IDEyIDZzNi40OSAxLjA4IDkuMDggMy4wN2wtNC4zIDQuMzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOZXR3b3JrV2lmaTNCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjEgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0ek0yLjkyIDkuMDdDNS41MSA3LjA4IDguNjcgNiAxMiA2czYuNDkgMS4wOCA5LjA4IDMuMDdsLTIuODUgMi44NkExMC45NDUgMTAuOTQ1IDAgMCAwIDEyIDEwYy0yLjMxIDAtNC40Ni43MS02LjIzIDEuOTNMMi45MiA5LjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmV0d29ya1dpZmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OEwxMiAyMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDR6bTAgNGMtMi44NiAwLTUuNS45NC03LjY1IDIuNTFMMi45MiA5LjA3QzUuNTEgNy4wOCA4LjY3IDYgMTIgNnM2LjQ5IDEuMDggOS4wOCAzLjA3bC0xLjQzIDEuNDNBMTIuOTkgMTIuOTkgMCAwIDAgMTIgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5mYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMThINFY0aDE2djE2ek0xOCA2aC01Yy0xLjEgMC0yIC45LTIgMnYyLjI4Yy0uNi4zNS0xIC45OC0xIDEuNzIgMCAxLjEuOSAyIDIgMnMyLS45IDItMmMwLS43NC0uNC0xLjM4LTEtMS43MlY4aDN2OEg4VjhoMlY2SDZ2MTJoMTJWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5pZ2h0bGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDRjLjM0IDAgLjY4LjAyIDEuMDEuMDdDMTMuMSA2LjIzIDEyIDkuMDUgMTIgMTJzMS4xIDUuNzcgMy4wMSA3LjkzYy0uMzMuMDUtLjY3LjA3LTEuMDEuMDctNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOG0wLTJDOC40OCAyIDQgNi40OCA0IDEyczQuNDggMTAgMTAgMTBjMS44MiAwIDMuNTMtLjUgNS0xLjM1LTIuOTktMS43My01LTQuOTUtNS04LjY1czIuMDEtNi45MiA1LTguNjVBOS45NzMgOS45NzMgMCAwIDAgMTQgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdGVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxcy0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTctLjI1Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NS0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NXpNMTkgMTlINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS4wOCAxMS4wMy0yLjEyLTIuMTJMNyAxNC44NlYxN2gyLjF6TTE2Ljg1IDkuMjdjLjItLjIuMi0uNTEgMC0uNzFsLTEuNDEtMS40MWMtLjItLjItLjUxLS4yLS43MSAwbC0xLjA2IDEuMDYgMi4xMiAyLjEyIDEuMDYtMS4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhc3N3b3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE3aDIwdjJIMnYtMnptMS4xNS00LjA1TDQgMTEuNDdsLjg1IDEuNDggMS4zLS43NS0uODUtMS40OEg3di0xLjVINS4zbC44NS0xLjQ3TDQuODUgNyA0IDguNDcgMy4xNSA3bC0xLjMuNzUuODUgMS40N0gxdjEuNWgxLjdsLS44NSAxLjQ4IDEuMy43NXptNi43LS43NSAxLjMuNzUuODUtMS40OC44NSAxLjQ4IDEuMy0uNzUtLjg1LTEuNDhIMTV2LTEuNWgtMS43bC44NS0xLjQ3LTEuMy0uNzVMMTIgOC40NyAxMS4xNSA3bC0xLjMuNzUuODUgMS40N0g5djEuNWgxLjdsLS44NSAxLjQ4ek0yMyA5LjIyaC0xLjdsLjg1LTEuNDctMS4zLS43NUwyMCA4LjQ3IDE5LjE1IDdsLTEuMy43NS44NSAxLjQ3SDE3djEuNWgxLjdsLS44NSAxLjQ4IDEuMy43NS44NS0xLjQ4Ljg1IDEuNDggMS4zLS43NS0uODUtMS40OEgyM3YtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGF0dGVybiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2YzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTIgOGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYtNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYgMmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS0uMDIgNmMtLjc0IDAtMS4zNy40LTEuNzIgMWgtMi41NGExLjk4IDEuOTggMCAwIDAtMy40NCAwSDguNDFsMy4wNy0zLjA3Yy4xNy4wNC4zNC4wNy41Mi4wNyAxLjEgMCAyLS45IDItMiAwLS4xOC0uMDMtLjM1LS4wNy0uNTFsMy41Ni0zLjU2Yy4xNi4wNC4zMy4wNy41MS4wNyAxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDJjMCAuMTguMDMuMzUuMDcuNTFsLTMuNTYgMy41NmMtLjE2LS4wNC0uMzMtLjA3LS41MS0uMDctMS4xIDAtMiAuOS0yIDIgMCAuMTguMDMuMzUuMDcuNTFsLTMuNTYgMy41NkM2LjM1IDE2LjAzIDYuMTggMTYgNiAxNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDJjLjc0IDAgMS4zNy0uNCAxLjcyLTFoMi41N2ExLjk4IDEuOTggMCAwIDAgMy40NCAwaDIuNTVjLjM0LjYuOTggMSAxLjcyIDEgMS4xIDAgMi0uOSAyLTItLjAyLTEuMS0uOTItMi0yLjAyLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaGlzaGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDYuMThWMmgtMnY0LjE4QzEzLjg0IDYuNiAxMyA3LjcgMTMgOXMuODQgMi40IDIgMi44MlYxNWMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNHYtMS4xN2wxLjU5IDEuNTlMMTAgMTQgNSA5djZjMCAzLjMxIDIuNjkgNiA2IDZzNi0yLjY5IDYtNnYtMy4xOGMxLjE2LS40MSAyLTEuNTEgMi0yLjgycy0uODQtMi40LTItMi44MnpNMTYgMTBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjQ5IDEwLjVWMTVoMS4xNVY5aC0uODdsLTEuNzYgMS4yNy41OC44OXpNMTEuNDcgMTAuMDVjLjUgMCAuODEuMzIuODEuNzIgMCAuMzctLjE0LjY0LS41NCAxLjA2LS4zNi4zOC0xLjA2IDEuMDgtMi4xMyAyLjE1VjE1aDMuODl2LS45OWgtMi4zN2wtLjAzLS4wNWMuNjgtLjY4IDEuMTUtMS4xNCAxLjQtMS4zOS42MS0uNi45Mi0xLjIyLjkyLTEuODYgMC0uMjQtLjA1LTEuMDQtLjkxLTEuNDgtLjQ3LS4yMy0xLjI2LS4zNi0xLjk1LS4wMy0uODIuMzktLjk5IDEuMTMtMSAxLjE1bDEuMDEuNDJjLjEtLjMzLjM4LS43Mi45LS43MnpNMTYuOTkgMTMuOTRjLS44MyAwLS45OS0uNzYtMS4wMi0uODZsLTEuMDMuNDFjLjQ1IDEuNTkgMi4wMSAxLjUxIDIuMDUgMS41MSAxLjIgMCAxLjY4LS43MiAxLjc2LS44NS4zMi0uNDkuMzYtMS4yNC0uMDEtMS43Ni0uMTctLjI0LS40LS40MS0uNjgtLjUydi0uMDdjLjItLjEuMzctLjI2LjUyLS40OC4yNi0uNDEuMzEtMS4wNy0uMDItMS41Ny0uMDgtLjExLS41My0uNzUtMS42Mi0uNzUtMS4yNiAwLTEuNzQuOS0xLjg1IDEuMjRsLjk5LjQxYy4xMS0uMzIuMzUtLjY0Ljg1LS42NC40NCAwIC43NS4yNi43NS42NSAwIC41OC0uNTUuNzItLjg4LjcyaC0uNDZ2MWguNWMuNTYgMCAxLjA0LjI0IDEuMDQuNzkgMCAuNDktLjQ4Ljc3LS44OS43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBsYXlMZXNzb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMjBWNGgydjdsMi41LTEuNUwxMiAxMVY0aDV2Ny4wOGMuMzMtLjA1LjY2LS4wOCAxLS4wOHMuNjcuMDMgMSAuMDhWNGMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDcuMjZjLS40Mi0uNi0uNzUtMS4yOC0uOTctMkg1em0xMy03Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptLTEuMjUgNy41di01bDQgMi41LTQgMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHJpY2VDaGFuZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTdoMnYtMWgxYy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTFIOHYtMWg0VjhoLTJWN0g4djFIN2MtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoM3YxSDZ2MmgydjF6TTIwIDRINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmMwLTEuMTEtLjg5LTItMi0yem0wIDE0SDRWNmgxNnYxMnptLTYtOCAyLTIgMiAybTAgNC4yNS0yIDItMi0yXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQcmljZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxM1Y5YzAtLjU1LS40NS0xLTEtMUg2VjZoNVY0SDguNVYzaC0ydjFINWMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoNHYySDR2MmgyLjV2MWgydi0xSDEwYy41NSAwIDEtLjQ1IDEtMXpNMTkuNTkgMTIuNTJsLTUuNjYgNS42NS0yLjgzLTIuODMtMS40MSAxLjQyTDEzLjkzIDIxIDIxIDEzLjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHVuY2hDbG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDZoLTFWMUg2djVINWMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yek04IDNoOHYzSDhWM3ptMTEgMTdINVY4aDE0djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA5Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMCA4LjVjLTEuOTMgMC0zLjUtMS41Ny0zLjUtMy41czEuNTctMy41IDMuNS0zLjUgMy41IDEuNTcgMy41IDMuNS0xLjU3IDMuNS0zLjUgMy41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDExLjVoLTF2Mi43MWwxLjY0IDEuNjQuNzEtLjcxLTEuMzUtMS4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVF1aXogKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg4VjRoMTJ2MTJ6bS02LjQ5LTUuODRjLjQxLS43MyAxLjE4LTEuMTYgMS42My0xLjguNDgtLjY4LjIxLTEuOTQtMS4xNC0xLjk0LS44OCAwLTEuMzIuNjctMS41IDEuMjNsLTEuMzctLjU3QzExLjUxIDUuOTYgMTIuNTIgNSAxMy45OSA1YzEuMjMgMCAyLjA4LjU2IDIuNTEgMS4yNi4zNy42LjU4IDEuNzMuMDEgMi41Ny0uNjMuOTMtMS4yMyAxLjIxLTEuNTYgMS44MS0uMTMuMjQtLjE4LjQtLjE4IDEuMThoLTEuNTJjLjAxLS40MS0uMDYtMS4wOC4yNi0xLjY2em0tLjU2IDMuNzljMC0uNTkuNDctMS4wNCAxLjA1LTEuMDQuNTkgMCAxLjA0LjQ1IDEuMDQgMS4wNCAwIC41OC0uNDQgMS4wNS0xLjA0IDEuMDUtLjU4IDAtMS4wNS0uNDctMS4wNS0xLjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUk1vYmlsZWRhdGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuOCA3LjIgOSAxMEg3TDUuODcgNy4zM0g0VjEwSDJWMmg1YzEuMTMgMCAyIC44NyAyIDJ2MS4zM2MwIC44LS41MyAxLjU0LTEuMiAxLjg3ek03IDRINHYxLjMzaDNWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJhZGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS43NCAxOC4zM0E5Ljk4NCA5Ljk4NCAwIDAgMCAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMFMyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwYTkuOTg0IDkuOTg0IDAgMCAwIDcuMTEtMi45N2MuMDMtLjAzLjA1LS4wNi4wNy0uMDguMi0uMi4zOS0uNDEuNTYtLjYyek0xMiAyMGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4YzAgMS44NS0uNjMgMy41NC0xLjY5IDQuOWwtMS40My0xLjQzYy42OS0uOTggMS4xLTIuMTcgMS4xLTMuNDYgMC0zLjMxLTIuNjktNi02LTZzLTYgMi42OS02IDYgMi42OSA2IDYgNmMxLjMgMCAyLjUxLS40MiAzLjQ5LTEuMTNsMS40MiAxLjQyQTcuODIyIDcuODIyIDAgMCAxIDEyIDIwem0xLjkyLTcuNDljLjE3LS42Ni4wMi0xLjM4LS40OS0xLjlsLS4wMi0uMDJjLS43Ny0uNzctMi0uNzgtMi43OC0uMDQtLjAxLjAxLS4wMy4wMi0uMDUuMDQtLjc4Ljc4LS43OCAyLjA1IDAgMi44M2wuMDIuMDJjLjUyLjUxIDEuMjUuNjcgMS45MS40OWwxLjUxIDEuNTFjLS42LjM2LTEuMjkuNTgtMi4wNC41OC0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDRjMCAuNzMtLjIxIDEuNDEtLjU2IDJsLTEuNS0xLjUxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVtZW1iZXJNZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMjBIN3YtMWgxMHYxem0wLTNIN3YtLjQ4YzEuNDctLjk5IDMuMjItMS41MiA1LTEuNTJzMy41My41MyA1IDEuNTJWMTh6bTAtMi43OWMtMS41LS43Ny0zLjItMS4yMS01LTEuMjFzLTMuNS40NC01IDEuMjFWNmgxMHY5LjIxek0xNyA0SDdWM2gxMHYxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxM2MxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVzZXRUdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgOFY1YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoNHYyaDh2LTJoNGMxLjEgMCAxLjk5LS45IDEuOTktMnYtNUgyMmMwLTEuMS0uOS0yLTItMmgtNy4xN2wxLjgzLTEuODMtMS40MS0xLjQxQzkuNjkgMTAuMzEgMTAuODggOS4xMiA5IDExbDQuMjQgNC4yNCAxLjQxLTEuNDFMMTIuODMgMTJIMjB2NUg0VjVoMTZ2M2gyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVzdGFydEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxM2MwLTEuNjUuNjctMy4xNSAxLjc2LTQuMjRMNi4zNCA3LjM0QTguMDE0IDguMDE0IDAgMCAwIDQgMTNjMCA0LjA4IDMuMDUgNy40NCA3IDcuOTN2LTIuMDJjLTIuODMtLjQ4LTUtMi45NC01LTUuOTF6bTE0IDBjMC00LjQyLTMuNTgtOC04LTgtLjA2IDAtLjEyLjAxLS4xOC4wMWwxLjA5LTEuMDlMMTEuNSAyLjUgOCA2bDMuNSAzLjUgMS40MS0xLjQxLTEuMDgtMS4wOGMuMDYgMCAuMTItLjAxLjE3LS4wMSAzLjMxIDAgNiAyLjY5IDYgNiAwIDIuOTctMi4xNyA1LjQzLTUgNS45MXYyLjAyYzMuOTUtLjQ5IDctMy44NSA3LTcuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXZpZXdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdMNCAxNy4xN1Y0aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxNSAxLjU3LTMuNDNMMTcgMTBsLTMuNDMtMS41N0wxMiA1bC0xLjU3IDMuNDNMNyAxMGwzLjQzIDEuNTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSc3ZwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA5aDEuNWwtMS43NSA2aC0xLjVMMTIuNSA5SDE0bDEgMy40M0wxNiA5ek01LjEgMTIuOSA2IDE1SDQuNWwtLjg1LTJIMi41djJIMVY5aDMuNWMuODUgMCAxLjUuNjUgMS41IDEuNXYxYzAgLjYtLjQgMS4xNS0uOSAxLjR6bS0uNi0yLjRoLTJ2MWgydi0xem0xNyAyLjVoLTJ2MkgxOFY5aDMuNWMuODMgMCAxLjUuNjcgMS41IDEuNXYxYzAgLjgzLS42NyAxLjUtMS41IDEuNXptMC0yLjVoLTJ2MWgydi0xek0xMS41IDl2MS41aC0zdi43NWgyYy41NSAwIDEgLjQ1IDEgMVYxNGMwIC41NS0uNDUgMS0xIDFIN3YtMS41aDN2LS43NUg3Ljc1Yy0uNDEgMC0uNzUtLjM0LS43NS0uNzV2LTJjMC0uNTUuNDUtMSAxLTFoMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NyZWVuTG9ja0xhbmRzY2FwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNUgzYy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bS0yIDEySDVWN2gxNHYxMHptLTktMWg0Yy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTF2LTFhMiAyIDAgMSAwLTQgMHYxYy0uNTUgMC0xIC40NS0xIDF2M2MwIC41NS40NSAxIDEgMXptLjgtNmMwLS42Ni41NC0xLjIgMS4yLTEuMnMxLjIuNTQgMS4yIDEuMnYxaC0yLjR2LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY3JlZW5Mb2NrUG9ydHJhaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE2aDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXYtMWEyIDIgMCAxIDAtNCAwdjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxem0uOC02YzAtLjY2LjU0LTEuMiAxLjItMS4yczEuMi41NCAxLjIgMS4ydjFoLTIuNHYtMXpNMTcgMUg3Yy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMThIN1Y1aDEwdjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NyZWVuTG9ja1JvdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMi4zIDEzLjc3LTIuNTctMi41Ny0xLjQxIDEuNDEgMi4yMiAyLjIyLTUuNjYgNS42NkwzLjU2IDkuMTdsNS42Ni01LjY2IDIuMSAyLjEgMS40MS0xLjQxLTIuNDUtMi40NWExLjQ5IDEuNDkgMCAwIDAtMi4xMiAwTDEuOCA4LjExYTEuNDkgMS40OSAwIDAgMCAwIDIuMTJsMTIuMDIgMTIuMDJjLjU5LjU5IDEuNTQuNTkgMi4xMiAwbDYuMzYtNi4zNmMuNTktLjU5LjU5LTEuNTQgMC0yLjEyek03LjUyIDIxLjQ4QTEwLjQ4NyAxMC40ODcgMCAwIDEgMS41NSAxM0guMDVDLjU2IDE5LjE2IDUuNzEgMjQgMTIgMjRsLjY2LS4wMy0zLjgxLTMuODItMS4zMyAxLjMzek0xNS4wNSAxMGg1Yy41NSAwIDEtLjQ1IDEtMVY1YzAtLjU1LS40NS0xLTEtMXYtLjVhMi41IDIuNSAwIDAgMC01IDBWNGMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bS44LTYuNWMwLS45NC43Ni0xLjcgMS43LTEuN3MxLjcuNzYgMS43IDEuN1Y0aC0zLjR2LS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NyZWVuUm90YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjQ4IDIuNTJjMy4yNyAxLjU1IDUuNjEgNC43MiA1Ljk3IDguNDhoMS41QzIzLjQ0IDQuODQgMTguMjkgMCAxMiAwbC0uNjYuMDMgMy44MSAzLjgxIDEuMzMtMS4zMnptLTYuMjUtLjc3YTEuNDkgMS40OSAwIDAgMC0yLjEyIDBMMS43NSA4LjExYTEuNDkgMS40OSAwIDAgMCAwIDIuMTJsMTIuMDIgMTIuMDJjLjU5LjU5IDEuNTQuNTkgMi4xMiAwbDYuMzYtNi4zNmMuNTktLjU5LjU5LTEuNTQgMC0yLjEyTDEwLjIzIDEuNzV6bTQuNiAxOS40NEwyLjgxIDkuMTdsNi4zNi02LjM2IDEyLjAyIDEyLjAyLTYuMzYgNi4zNnptLTcuMzEuMjlBMTAuNDg3IDEwLjQ4NyAwIDAgMSAxLjU1IDEzSC4wNUMuNTYgMTkuMTYgNS43MSAyNCAxMiAyNGwuNjYtLjAzLTMuODEtMy44MS0xLjMzIDEuMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY3JlZW5TZWFyY2hEZXNrdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE4aDE2YzEuMSAwIDEuOTktLjkgMS45OS0yTDIyIDVjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMnpNNCA1aDE2djExSDRWNXpNMSAxOWgyMnYySDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjk3IDcuNTNjLTEuMzctMS4zNy0zLjU4LTEuMzctNC45NSAwcy0xLjM3IDMuNTggMCA0Ljk1YzEuMTggMS4xOCAzIDEuMzQgNC4zNi40N2wyLjA5IDIuMDkgMS4wNi0xLjA2LTIuMDktMi4wOWMuODctMS4zNi43Mi0zLjE4LS40Ny00LjM2em0tMS4wNiAzLjg4Yy0uNzguNzgtMi4wNS43OC0yLjgzIDAtLjc4LS43OC0uNzgtMi4wNSAwLTIuODNzMi4wNS0uNzggMi44MyAwYy43OC43OS43OCAyLjA1IDAgMi44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNjcmVlbnNob3RNb25pdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoNHYyaDh2LTJoNGMxLjEgMCAyLS45IDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMTRINFY1aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgNy41SDlWNkg1djRoMS41ek0xOSAxMmgtMS41djIuNUgxNVYxNmg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NyZWVuc2hvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyem0wLTE0SDdWM2gxMHYxek05LjUgOC41SDEyVjdIOHY0aDEuNVY4LjV6TTEyIDE3aDR2LTRoLTEuNXYyLjVIMTJWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZFN0b3JhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDR2MTZINlY4LjgzTDEwLjgzIDRIMThtMC0yaC04TDQgOHYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTkgN2gydjRIOXptMyAwaDJ2NGgtMnptMyAwaDJ2NGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlY3VyaXR5VXBkYXRlR29vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyem0wLTE0SDdWM2gxMHYxem0tMSA2LjA1LTEuNDEtMS40MS0zLjU0IDMuNTQtMS40MS0xLjQxLTEuNDEgMS40MUwxMS4wNSAxNSAxNiAxMC4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlY3VyaXR5VXBkYXRlV2FybmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTVoMnYyaC0yek0xMSA3aDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyem0wLTE0SDdWM2gxMHYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VjdXJpdHlVcGRhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEuMDEgNyAxYy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE3IDIxSDd2LTFoMTB2MXptMC0zSDdWNmgxMHYxMnpNNyA0VjNoMTB2MUg3em05IDgtNCA0LTQtNCAxLjQxLTEuNDFMMTEgMTIuMTdWOGgydjQuMTdsMS41OS0xLjU5TDE2IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNDEgMTEuNDEtOC44My04LjgzYy0uMzctLjM3LS44OC0uNTgtMS40MS0uNThINGMtMS4xIDAtMiAuOS0yIDJ2Ny4xN2MwIC41My4yMSAxLjA0LjU5IDEuNDFsOC44MyA4LjgzYy43OC43OCAyLjA1Ljc4IDIuODMgMGw3LjE3LTcuMTdjLjc4LS43OC43OC0yLjA0LS4wMS0yLjgzek0xMi44MyAyMCA0IDExLjE3VjRoNy4xN0wyMCAxMi44MyAxMi44MyAyMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2LjVcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VuZFRvTW9iaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCA4IDQgNC00IDQtMS40MS0xLjQxTDE4LjE3IDEzSDEzdi0yaDUuMTdsLTEuNTktMS41OUwxOCA4ek03IDEuMDEgMTcgMWMxLjEgMCAyIC45IDIgMnY0aC0yVjZIN3YxMmgxMHYtMWgydjRjMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJWM2MwLTEuMS45LTEuOTkgMi0xLjk5ek03IDIxaDEwdi0xSDd2MXpNNyA0aDEwVjNIN3YxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2V0dGluZ3NTdWdnZXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTNjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMW0wLTJjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem04LjUtMiAxLjA5LTIuNDFMMjIgNS41bC0yLjQxLTEuMDlMMTguNSAybC0xLjA5IDIuNDFMMTUgNS41bDIuNDEgMS4wOUwxOC41IDl6bTIuNzggMy43MkwyMC41IDExbC0uNzggMS43Mi0xLjcyLjc4IDEuNzIuNzguNzggMS43Mi43OC0xLjcyTDIzIDEzLjVsLTEuNzItLjc4ek0xNi4yNSAxNGMwLS4xMiAwLS4yNS0uMDEtLjM3bDEuOTQtMS40Ny0yLjUtNC4zMy0yLjI0Ljk0Yy0uMi0uMTMtLjQyLS4yNi0uNjQtLjM3TDEyLjUgNmgtNWwtLjMgMi40MWMtLjIyLjExLS40My4yNC0uNjQuMzdsLTIuMjQtLjk1LTIuNSA0LjMzIDEuOTQgMS40N2MtLjAxLjEyLS4wMS4yNS0uMDEuMzdzMCAuMjUuMDEuMzdsLTEuOTQgMS40NyAyLjUgNC4zMyAyLjI0LS45NGMuMi4xMy40Mi4yNi42NC4zN2wuMyAyLjRoNWwuMy0yLjQxYy4yMi0uMTEuNDMtLjIzLjY0LS4zN2wyLjI0Ljk0IDIuNS00LjMzLTEuOTQtMS40N2MuMDEtLjExLjAxLS4yNC4wMS0uMzZ6bS0xLjQyIDMuNjQtMS43My0uNzNjLS41Ni42LTEuMyAxLjA0LTIuMTMgMS4yM0wxMC43MyAyMEg5LjI3bC0uMjMtMS44NmMtLjgzLS4xOS0xLjU3LS42My0yLjEzLTEuMjNsLTEuNzMuNzMtLjczLTEuMjcgMS40OS0xLjEzYy0uMTItLjM5LS4xOC0uOC0uMTgtMS4yMyAwLS40My4wNi0uODQuMTgtMS4yM2wtMS40OS0xLjEzLjczLTEuMjcgMS43My43M2MuNTYtLjYgMS4zLTEuMDQgMi4xMy0xLjIzTDkuMjcgOGgxLjQ3bC4yMyAxLjg2Yy44My4xOSAxLjU3LjYzIDIuMTMgMS4yM2wxLjczLS43My43MyAxLjI3LTEuNDkgMS4xM2MuMTIuMzkuMTguOC4xOCAxLjIzIDAgLjQzLS4wNi44NC0uMTggMS4yM2wxLjQ5IDEuMTMtLjczIDEuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXR0aW5nc1N5c3RlbURheWRyZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDE3SDljLTIuMjEgMC00LTEuNzktNC00YTMuOTggMy45OCAwIDAgMSAzLjIyLTMuOTJBNC41MTQgNC41MTQgMCAwIDEgMTIgN2MxLjk1IDAgMy42NiAxLjI4IDQuMjYgMy4wOSAxLjU4LjM2IDIuNzQgMS43NSAyLjc0IDMuNDEgMCAxLjkzLTEuNTcgMy41LTMuNSAzLjV6bS02Ljc2LTUuOThDNy43NCAxMS4xNSA3IDExLjk5IDcgMTNjMCAxLjEuOSAyIDIgMmg2LjVjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjVoLS44N2wtLjE3LS44NkEyLjQ5NiAyLjQ5NiAwIDAgMCAxMiA5Yy0uOTYgMC0xLjg0LjU3LTIuMjYgMS40NWwtLjI3LjU3aC0uNzN6TTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNoYXJlTG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjAyIDE5LjkzdjIuMDJjMi4wMS0uMiAzLjg0LTEgNS4zMi0yLjIxbC0xLjQyLTEuNDNhNy45NDEgNy45NDEgMCAwIDEtMy45IDEuNjJ6TTQuMDMgMTJjMC00LjA1IDMuMDMtNy40MSA2Ljk1LTcuOTNWMi4wNUM1Ljk1IDIuNTggMi4wMyA2Ljg0IDIuMDMgMTJjMCA1LjE2IDMuOTIgOS40MiA4Ljk1IDkuOTV2LTIuMDJjLTMuOTItLjUyLTYuOTUtMy44OC02Ljk1LTcuOTN6TTE5Ljk1IDExaDIuMDJjLS4yLTIuMDEtMS0zLjg0LTIuMjEtNS4zMmwtMS40MyAxLjQzYy44NiAxLjEgMS40NCAyLjQzIDEuNjIgMy44OXpNMTguMzQgNC4yNmE5Ljk4MSA5Ljk4MSAwIDAgMC01LjMyLTIuMjF2Mi4wMmMxLjQ2LjE4IDIuNzkuNzYgMy45IDEuNjJsMS40Mi0xLjQzek0xOC4zMyAxNi45bDEuNDMgMS40MkE5Ljk0OSA5Ljk0OSAwIDAgMCAyMS45NyAxM2gtMi4wMmE3Ljk0MSA3Ljk0MSAwIDAgMS0xLjYyIDMuOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTEuMUMxNiA4LjYxIDE0LjEgNyAxMiA3cy00IDEuNjEtNCA0LjFjMCAxLjY2IDEuMzMgMy42MyA0IDUuOSAyLjY3LTIuMjcgNC00LjI0IDQtNS45em0tNCAuOWExLjA3MSAxLjA3MSAwIDAgMSAwLTIuMTRBMS4wNzEgMS4wNzEgMCAwIDEgMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG9ydGN1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUgNS0xLjQxIDEuNDFMMTUgNy44MyAxNy4xNyAxMEg4Yy0yLjc2IDAtNSAyLjI0LTUgNXY0aDJ2LTRjMC0xLjY1IDEuMzUtMyAzLTNoOS4xN0wxNSAxNC4xN2wtMS40MSAxLjQxTDE1IDE3bDYtNi02LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxDZWxsdWxhcjBCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMjJoMjBWMkwyIDIyem0xOC0ySDYuODNMMjAgNi44M1YyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbENlbGx1bGFyNEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyMmgyMFYyTDIgMjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxDZWxsdWxhckFsdDFCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE0aDN2Nkg1di02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsQ2VsbHVsYXJBbHQyQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNGgzdjZINXYtNnptNi01aDN2MTFoLTNWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbENlbGx1bGFyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA0aDN2MTZoLTNWNHpNNSAxNGgzdjZINXYtNnptNi01aDN2MTFoLTNWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbENlbGx1bGFyQ29ubmVjdGVkTm9JbnRlcm5ldDBCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOGgydi04aC0ydjh6bTAgNGgydi0yaC0ydjJ6bS0yLTJ2MkgyTDIyIDJ2NmgtMlY2LjgzTDYuODMgMjBIMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxDZWxsdWxhckNvbm5lY3RlZE5vSW50ZXJuZXQ0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOGgydi04aC0ydjh6bTAgNGgydi0yaC0ydjJ6TTIgMjJoMTZWOGg0VjJMMiAyMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbENlbGx1bGFyTm9TaW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjgzIDVIMTd2OS4xMWwyIDJWNWMwLTEuMS0uOS0yLTItMmgtN0w3Ljk0IDUuMDZsMS40MiAxLjQyTDEwLjgzIDV6bTEwLjQzIDE2LjIxTDMuNzkgMy43NCAyLjM4IDUuMTUgNSA3Ljc3VjE5YTIgMiAwIDAgMCAyIDJoMTEuMjNsMS42MiAxLjYyIDEuNDEtMS40MXpNNyAxOVY5Ljc5TDE2LjIzIDE5SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxDZWxsdWxhck5vZGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTNoLTl2OUgyTDIyIDJ2MTF6bS0xIDIuNDFMMTkuNTkgMTRsLTIuMDkgMi4wOUwxNS40MSAxNCAxNCAxNS40MWwyLjA5IDIuMDlMMTQgMTkuNTkgMTUuNDEgMjFsMi4wOS0yLjA4TDE5LjU5IDIxIDIxIDE5LjU5bC0yLjA4LTIuMDlMMjEgMTUuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxDZWxsdWxhck51bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDYuODNWMjBINi44M0wyMCA2LjgzTTIyIDIgMiAyMmgyMFYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsQ2VsbHVsYXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxIDEtOC4zMSA4LjMxIDguMzEgOC4zek00LjkxIDQuMzYgMy41IDUuNzdsNi4zNiA2LjM3TDEgMjFoMTcuNzNsMiAyIDEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbFdpZmkwQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjEgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0ek0yLjkyIDkuMDdDNS41MSA3LjA4IDguNjcgNiAxMiA2czYuNDkgMS4wOCA5LjA4IDMuMDdMMTIgMTguMTdsLTkuMDgtOS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsV2lmaTRCYXJMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45OCAxMSAyNCA4Ljk4QTE2Ljg4IDE2Ljg4IDAgMCAwIDEyIDRDNy4zMSA0IDMuMDcgNS45IDAgOC45OGw2LjM1IDYuMzZMMTIgMjFsMy4wNS0zLjA1VjE1YzAtLjQ1LjA5LS44OC4yMy0xLjI5LjU0LTEuNTcgMi4wMS0yLjcxIDMuNzctMi43MWgyLjkzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNnYtMWMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2MWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xem0tMSAwaC0ydi0xYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsV2lmaTRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjAxIDIxLjQ5IDIzLjY0IDdjLS40NS0uMzQtNC45My00LTExLjY0LTRDNS4yOCAzIC44MSA2LjY2LjM2IDdsMTEuNjMgMTQuNDkuMDEuMDEuMDEtLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsV2lmaUJhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjF2LTloOC45OUwyNCA4Ljk4ek0xOS41OSAxNGwtMi4wOSAyLjA5LS4zLS4zTDE1LjQxIDE0IDE0IDE1LjQxbDEuNzkgMS43OS4zLjNMMTQgMTkuNTkgMTUuNDEgMjFsMi4wOS0yLjA4TDE5LjU5IDIxIDIxIDE5LjU5bC0yLjA4LTIuMDlMMjEgMTUuNDEgMTkuNTkgMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxXaWZpQ29ubmVjdGVkTm9JbnRlcm5ldDQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxdi05aDguOTlMMjQgOC45OHpNMTkuNTkgMTRsLTIuMDkgMi4wOS0uMy0uM0wxNS40MSAxNCAxNCAxNS40MWwxLjc5IDEuNzkuMy4zTDE0IDE5LjU5IDE1LjQxIDIxbDIuMDktMi4wOEwxOS41OSAyMSAyMSAxOS41OWwtMi4wOC0yLjA5TDIxIDE1LjQxIDE5LjU5IDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsV2lmaU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMuNjQgN2MtLjQ1LS4zNC00LjkzLTQtMTEuNjQtNC0xLjMyIDAtMi41NS4xNC0zLjY5LjM4TDE4LjQzIDEzLjUgMjMuNjQgN3pNMy40MSAxLjMxIDIgMi43MmwyLjA1IDIuMDVDMS45MSA1Ljc2LjU5IDYuODIuMzYgN0wxMiAyMS41bDMuOTEtNC44NyAzLjMyIDMuMzIgMS40MS0xLjQxTDMuNDEgMS4zMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25hbFdpZmlTdGF0dXNiYXI0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjEgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2lnbmFsV2lmaVN0YXR1c2JhckNvbm5lY3RlZE5vSW50ZXJuZXQ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThMMTIgMjFsNS01LjAxVjhoNS45MkMxOS45NyA1LjUxIDE2LjE2IDQgMTIgNHpNMTkgMThoMnYyaC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMGgydjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduYWxXaWZpU3RhdHVzYmFyTnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxIDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNHpNMi45MiA5LjA3QzUuNTEgNy4wOCA4LjY3IDYgMTIgNnM2LjQ5IDEuMDggOS4wOCAzLjA3TDEyIDE4LjE3bC05LjA4LTkuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpbUNhcmREb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMmgtOEw0IDh2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDJ2MTZINlY4LjgzTDEwLjgzIDRIMTh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2IDEzLTQgNC00LTQgMS40MS0xLjQxTDExIDEzLjE3VjkuMDJMMTMgOXY0LjE3bDEuNTktMS41OUwxNiAxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwbGl0c2NyZWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA0djVINlY0aDEybTAtMkg2Yy0xLjEgMC0yIC45LTIgMnY1YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxM3Y1SDZ2LTVoMTJtMC0ySDZjLTEuMSAwLTIgLjktMiAydjVjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMnYtNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c1Njb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA2SDlWNGgydjJ6bTQtMmgtMnYyaDJWNHpNOSAxNGgydi0ySDl2MnptMTAtNFY4aC0ydjJoMnptMCA0di0yaC0ydjJoMnptLTYgMGgydi0yaC0ydjJ6bTYtMTBoLTJ2MmgyVjR6bS02IDRWNmgtMnYyaDJ6bS02IDJWOGgyVjZIN1Y0SDV2MTZoMnYtOGgydi0ySDd6bTggMmgydi0yaC0ydjJ6bS00LTJ2Mmgydi0yaC0yek05IDh2MmgyVjhIOXptNCAyaDJWOGgtMnYyem0yLTR2MmgyVjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTc2lkQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA1LjQ3IDEyIDEyIDcuNjIgNy42MiAzIDExVjguNTJMNy44MyA1bDQuMzggNC4zOEwyMSAzdjIuNDd6TTIxIDE1aC00LjdsLTQuMTcgMy4zNEw2IDEyLjQxbC0zIDIuMTNWMTdsMi44LTIgNi4yIDYgNS00aDR2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdG9yYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDIwaDIwdi00SDJ2NHptMi0zaDJ2Mkg0di0yek0yIDR2NGgyMFY0SDJ6bTQgM0g0VjVoMnYyem0tNCA3aDIwdi00SDJ2NHptMi0zaDJ2Mkg0di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3Rvcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkzIDhDMTYuNzIgNC4xOCAxMS44MiAyLjg3IDggNS4wN2MtMS40MS44Mi0yLjQ4IDItMy4xNiAzLjM3LS4xMy0yLjIuMjItNC40IDEuMDItNi40NEgzLjc0QzIuMiA2LjQ5IDIuNTIgMTEuNTggNS4wNyAxNmE3Ljk2IDcuOTYgMCAwIDAgNC44NiAzLjcyYzEuOTguNTMgNC4xNi4zMSA2LjA3LS43OSAxLjQxLS44MiAyLjQ4LTIgMy4xNi0zLjM3LjEzIDIuMi0uMjEgNC40LTEuMDEgNi40NGgyLjExYzEuNTMtNC40OSAxLjIyLTkuNTgtMS4zMy0xNHpNMTUgMTcuMkE2LjAxMiA2LjAxMiAwIDAgMSA2LjggMTVjLS4xMS0uMi0uMjEtLjQtLjMtLjYtMS4yLTIuNzYtLjE3LTYuMDYgMi41LTcuNiAyLjg2LTEuNjUgNi41NC0uNjcgOC4yIDIuMi4xMS4yLjIxLjQuMy42IDEuMiAyLjc2LjE3IDYuMDYtMi41IDcuNnpNMTIgMTBjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAtMmMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdW1tYXJpemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDNINWMtMS4xIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMS45OSAySDE5YzEuMSAwIDItLjkgMi0yVjlsLTYtNnpNNSAxOVY1aDl2NWg1djlINXpNOSA4YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xIC40NS0xIDEtMSAxIC40NSAxIDF6bTAgNGMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMSAuNDUtMSAxLTEgMSAuNDUgMSAxem0wIDRjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTEgLjQ1LTEgMS0xIDEgLjQ1IDEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN5c3RlbVNlY3VyaXR5VXBkYXRlR29vZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyem0wLTE0SDdWM2gxMHYxem0tMSA2LjA1LTEuNDEtMS40MS0zLjU0IDMuNTQtMS40MS0xLjQxLTEuNDEgMS40MUwxMS4wNSAxNSAxNiAxMC4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN5c3RlbVNlY3VyaXR5VXBkYXRlV2FybmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTVoMnYyaC0yek0xMSA3aDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMjFIN3YtMWgxMHYxem0wLTNIN1Y2aDEwdjEyem0wLTE0SDdWM2gxMHYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3lzdGVtU2VjdXJpdHlVcGRhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEuMDEgNyAxYy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE3IDIxSDd2LTFoMTB2MXptMC0zSDdWNmgxMHYxMnpNNyA0VjNoMTB2MUg3em05IDgtNCA0LTQtNCAxLjQxLTEuNDFMMTEgMTIuMTdWOGgydjQuMTdsMS41OS0xLjU5TDE2IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGFzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em00IDE4SDZWNGg3djVoNXYxMXptLTkuMTgtNi45NUw3LjQgMTQuNDYgMTAuOTQgMThsNS42Ni01LjY2LTEuNDEtMS40MS00LjI0IDQuMjQtMi4xMy0yLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGhlcm1vc3RhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTNWNWMwLTEuNjYtMS4zNC0zLTMtM1M5IDMuMzQgOSA1djhjLTEuMjEuOTEtMiAyLjM3LTIgNCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01YzAtMS42My0uNzktMy4wOS0yLTR6bS00LThjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxaC0xdjFoMXYyaC0xdjFoMXYyaC0yVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaW1lcjEwU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOHY4aC0zVjhoM20wLTNoLTNDOC4zNCA1IDcgNi4zNCA3IDh2OGMwIDEuNjYgMS4zNCAzIDMgM2gzYzEuNjYgMCAzLTEuMzQgMy0zVjhjMC0xLjY2LTEuMzQtMy0zLTN6TTEgOGgydjExaDNWNUgxdjN6bTE3LjUgM2MtLjgzIDAtMS41LjY4LTEuNSAxLjV2MmMwIC44Mi42NyAxLjUgMS41IDEuNUgyMXYxaC00djJoNC41Yy44MyAwIDEuNS0uNjcgMS41LTEuNXYtMmMwLS44My0uNjctMS41LTEuNS0xLjVIMTl2LTFoNHYtMmgtNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGltZXIzU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTF2MmgtNHYxaDIuNWMuODMgMCAxLjUuNjggMS41IDEuNXYyYzAgLjgzLS42NyAxLjUtMS41IDEuNUgxNXYtMmg0di0xaC0yLjVjLS44MiAwLTEuNS0uNjgtMS41LTEuNXYtMmMwLS44Mi42OC0xLjUgMS41LTEuNUgyMXpNNCA1djNoNnYyLjVINHYzaDZWMTZINHYzaDZjMS42NiAwIDMtMS4zNCAzLTN2LTEuOWEyLjEgMi4xIDAgMCAwLTIuMS0yLjFBMi4xIDIuMSAwIDAgMCAxMyA5LjlWOGMwLTEuNjYtMS4zNC0zLTMtM0g0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHVuZ3N0ZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE5aDJ2M2gtMnpNMiAxMWgzdjJIMnpNMTkgMTFoM3YyaC0zek0xNS44OTQgMTcuODAxbDEuNDA3LTEuNDA3IDIuMTIyIDIuMTIyLTEuNDA4IDEuNDA3ek00LjU4NCAxOC41MDlsMi4xMjEtMi4xMjIgMS40MDggMS40MDctMi4xMjIgMi4xMjJ6TTE1IDguMDJWM0g5djUuMDJjLTEuMjEuOTItMiAyLjM1LTIgMy45OCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01YzAtMS42My0uNzktMy4wNi0yLTMuOTh6TTExIDVoMnYyLjFjLS4zMi0uMDYtLjY2LS4xLTEtLjFzLS42OC4wNC0xIC4xVjV6bTEgMTBjLTEuNjUgMC0zLTEuMzUtMy0zczEuMzUtMyAzLTMgMyAxLjM1IDMgMy0xLjM1IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVXNiT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgOGg0djRoLTF2MmMwIC4zNC0uMDguNjYtLjIzLjk0TDE2IDEzLjE3VjEyaC0xVjh6bS00IC4xNyAyIDJWNmgybC0zLTQtMyA0aDJ2Mi4xN3pNMTMgMTZ2Mi4yOGMuNi4zNCAxIC45OCAxIDEuNzIgMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yYzAtLjc0LjQtMS4zNyAxLTEuNzJWMTZIOGMtMS4xMSAwLTItLjg5LTItMnYtMi4yOGMtLjYtLjM0LTEtLjk4LTEtMS43MiAwLS41OS4yNi0xLjEzLjY4LTEuNDlMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNDEgMS40MS02LjYtNi42SDEzem0tMi0ydi0uMTdsLTIuNTEtMi41MWMtLjE0LjE2LS4zMS4yOS0uNDkuNFYxNGgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVXNiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA3djRoMXYyaC0zVjVoMmwtMy00LTMgNGgydjhIOHYtMi4wN2MuNy0uMzcgMS4yLTEuMDggMS4yLTEuOTMgMC0xLjIxLS45OS0yLjItMi4yLTIuMlM0LjggNy43OSA0LjggOWMwIC44NS41IDEuNTYgMS4yIDEuOTNWMTNjMCAxLjExLjg5IDIgMiAyaDN2My4wNWMtLjcxLjM3LTEuMiAxLjEtMS4yIDEuOTVhMi4yIDIuMiAwIDAgMCA0LjQgMGMwLS44NS0uNDktMS41OC0xLjItMS45NVYxNWgzYzEuMTEgMCAyLS44OSAyLTJ2LTJoMVY3aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2FsbHBhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRoN1YySDRjLTEuMSAwLTIgLjktMiAydjdoMlY0em02IDktNCA1aDEybC0zLTQtMi4wMyAyLjcxTDEwIDEzem03LTQuNWMwLS44My0uNjctMS41LTEuNS0xLjVTMTQgNy42NyAxNCA4LjVzLjY3IDEuNSAxLjUgMS41UzE3IDkuMzMgMTcgOC41ek0yMCAyaC03djJoN3Y3aDJWNGMwLTEuMS0uOS0yLTItMnptMCAxOGgtN3YyaDdjMS4xIDAgMi0uOSAyLTJ2LTdoLTJ2N3pNNCAxM0gydjdjMCAxLjEuOSAyIDIgMmg3di0ySDR2LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTggMTRIMjJoLS4wMnpNNS4zNSAxM2MxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40MiAxIDMuMzMgMSAxLjk1IDAgMi4wOS0xIDMuMzMtMSAxLjE5IDAgMS40Ljk4IDMuMzEgMXYtMmMtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMDkgMS0zLjMzIDEtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMDkgMS0zLjMzIDEtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMDkgMS0zLjMzIDF2MmMxLjkgMCAyLjE3LTEgMy4zNS0xem0xMy4zMiAyYy0xLjk1IDAtMi4wOSAxLTMuMzMgMS0xLjE5IDAtMS40Mi0xLTMuMzMtMS0xLjk1IDAtMi4xIDEtMy4zNCAxLTEuMjQgMC0xLjM4LTEtMy4zMy0xLTEuOTUgMC0yLjEgMS0zLjM0IDF2MmMxLjk1IDAgMi4xMS0xIDMuMzQtMSAxLjI0IDAgMS4zOCAxIDMuMzMgMSAxLjk1IDAgMi4xLTEgMy4zNC0xIDEuMTkgMCAxLjQyIDEgMy4zMyAxIDEuOTQgMCAyLjA5LTEgMy4zMy0xIDEuMTkgMCAxLjQyIDEgMy4zMyAxdi0yYy0xLjI0IDAtMS4zOC0xLTMuMzMtMXpNNS4zNSA5YzEuMTkgMCAxLjQyIDEgMy4zMyAxIDEuOTUgMCAyLjA5LTEgMy4zMy0xIDEuMTkgMCAxLjQyIDEgMy4zMyAxIDEuOTUgMCAyLjA5LTEgMy4zMy0xIDEuMTkgMCAxLjQuOTggMy4zMSAxVjhjLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjA5IDEtMy4zMyAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xQzMuMzggNyAzLjI0IDggMiA4djJjMS45IDAgMi4xNy0xIDMuMzUtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZGdldHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2LjY2IDQuNTIgMi44MyAyLjgzLTIuODMgMi44My0yLjgzLTIuODMgMi44My0yLjgzTTkgNXY0SDVWNWg0bTEwIDEwdjRoLTR2LTRoNE05IDE1djRINXYtNGg0bTcuNjYtMTMuMzFMMTEgNy4zNCAxNi42NiAxM2w1LjY2LTUuNjYtNS42Ni01LjY1ek0xMSAzSDN2OGg4VjN6bTEwIDEwaC04djhoOHYtOHptLTEwIDBIM3Y4aDh2LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpMUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUzIDE3LjQ2IDEyIDIxbC0zLjUzLTMuNTRjLjktLjkgMi4xNS0xLjQ2IDMuNTMtMS40NnMyLjYzLjU2IDMuNTMgMS40NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZmkyQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMGMzLjAzIDAgNS43OCAxLjIzIDcuNzYgMy4yMmwtMi4xMiAyLjEyQTcuOTY3IDcuOTY3IDAgMCAwIDEyIDEzYy0yLjIgMC00LjIuOS01LjY0IDIuMzVsLTIuMTItMi4xMkM2LjIyIDExLjIzIDguOTcgMTAgMTIgMTB6bTAgNmMtMS4zOCAwLTIuNjMuNTYtMy41MyAxLjQ2TDEyIDIxbDMuNTMtMy41NEE0Ljk4IDQuOTggMCAwIDAgMTIgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpQ2FsbGluZzMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjQ5IDQuNWMxLjc5IDAgMy40Mi43MyA0LjU5IDEuOTFsMS4wNi0xLjA2QTcuOTQgNy45NCAwIDAgMCAxNi40OSAzYy0yLjIxIDAtNC4yMS45LTUuNjYgMi4zNGwxLjA2IDEuMDZhNi41NDUgNi41NDUgMCAwIDEgNC42LTEuOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNDkgNmMtMS4zOCAwLTIuNjMuNTYtMy41NCAxLjQ2bDEuMDYgMS4wNmMuNjMtLjYzIDEuNTEtMS4wMyAyLjQ3LTEuMDNzMS44NC4zOSAyLjQ3IDEuMDNsMS4wNi0xLjA2QTQuOTQgNC45NCAwIDAgMCAxNi40OSA2ek0xNi40OSA5Yy0uNTUgMC0xLjA1LjIyLTEuNDEuNTlMMTYuNDkgMTFsMS40MS0xLjQxYy0uMzYtLjM3LS44Ni0uNTktMS40MS0uNTl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjIgMTQuODctMy42Ny0uNzNjLS41LS4xLS44My4yLS45LjI3bC0yLjUyIDIuNWMtMi41LTEuNDMtNC41Ny0zLjUtNi02bDIuNS0yLjUyYy4yMy0uMjQuMzMtLjU3LjI3LS45TDkuMTMgMy44Yy0uMDktLjQ2LS41LS44LS45OC0uOEg0Yy0uNTYgMC0xLjAzLjQ3LTEgMS4wMy4xNyAyLjg5IDEuMDUgNS42IDIuNDMgNy45NyAxLjU4IDIuNzMgMy44NSA0Ljk5IDYuNTcgNi41NyAyLjM3IDEuMzcgNS4wOCAyLjI2IDcuOTcgMi40My41NS4wMyAxLjAzLS40MyAxLjAzLTF2LTQuMTVjMC0uNDgtLjM0LS44OS0uOC0uOTh6TTUuMSA1aDIuMjNsLjQ3IDIuMzVMNi4xNyA5Yy0uNTQtMS4zLS45LTIuNjMtMS4wNy00ek0xOSAxOC45Yy0xLjM3LS4xOC0yLjctLjUzLTQtMS4wN2wxLjY1LTEuNjMgMi4zNS40N3YyLjIzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2lmaUNoYW5uZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAzYy0yLjUxIDAtMy43NyA1LjYxLTQuNCAxMC41N0MxMC43OSAxMC42NiA5LjYxIDggOCA4IDQuNDMgOCAzIDIxIDMgMjFoMi4wMWMuNjEtNS4yNyAyLTkuODIgMi45OS0xMC44Ny45OCAxLjA1IDIuMzggNS42MSAyLjk5IDEwLjg3SDEzYy41LTIuNTMgMi02IDMtNnMyLjUgMy41MyAzIDZoMnMtLjUtMTgtNS0xOHptMCAxMGMtLjk5IDAtMS44Mi42Mi0yLjUgMS41LjU3LTQuNzcgMS41NC04LjYyIDIuNS05LjQ0Ljk3LjgxIDEuOTEgNC42NyAyLjQ5IDkuNDNDMTcuODEgMTMuNjIgMTYuOTggMTMgMTYgMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpRmluZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZjNC4xNCAwIDcuODggMS42OCAxMC41OSA0LjM5TDI0IDguOThBMTYuODggMTYuODggMCAwIDAgMTIgNEM3LjMxIDQgMy4wNyA1LjkgMCA4Ljk4TDEyIDIxbDEuNDEtMS40MkwyLjkzIDkuMDhDNS40NSA3LjE2IDguNTkgNiAxMiA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNGMwLTIuMjQtMS43Ni00LTQtNHMtNCAxLjc2LTQgNCAxLjc2IDQgNCA0Yy43NSAwIDEuNDQtLjIxIDIuMDMtLjU2TDIxLjU5IDIwIDIzIDE4LjU5bC0yLjU2LTIuNTZjLjM1LS41OS41Ni0xLjI4LjU2LTIuMDN6bS00IDJjLTEuMTIgMC0yLS44OC0yLTJzLjg4LTIgMi0yIDIgLjg4IDIgMi0uODggMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTggMTEgMjQgOC45OEExNi44OCAxNi44OCAwIDAgMCAxMiA0QzcuMzEgNCAzLjA3IDUuOSAwIDguOThsNi4zNSA2LjM2TDEyIDIxbDMuMDUtMy4wNVYxNWMwLS40NS4wOS0uODguMjMtMS4yOS41NC0xLjU3IDIuMDEtMi43MSAzLjc3LTIuNzFoMi45M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTZ2LTFjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXptLTEgMGgtMnYtMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZmlQYXNzd29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTI0IDguOTgtMi4xMiAyLjEzQzE5LjM1IDguNTcgMTUuODUgNyAxMiA3cy03LjM1IDEuNTctOS44OCA0LjExTDAgOC45OEMzLjA3IDUuOSA3LjMxIDQgMTIgNHM4LjkzIDEuOSAxMiA0Ljk4ek00LjI0IDEzLjIybDIuMTIgMi4xMkE3Ljk2NyA3Ljk2NyAwIDAgMSAxMiAxM2MyLjIgMCA0LjIuOSA1LjY0IDIuMzVsMi4xMi0yLjEyQzE3Ljc4IDExLjIzIDE1LjAzIDEwIDEyIDEwYy0zLjAzIDAtNS43OCAxLjIzLTcuNzYgMy4yMnpNMjQgMjB2M2MwIC41NS0uNDUgMS0xIDFoLTRjLS41NSAwLTEtLjQ1LTEtMXYtM2MwLS41NS40NS0xIDEtMXYtMWMwLTEuMS45LTIgMi0yczIgLjkgMiAydjFjLjU1IDAgMSAuNDUgMSAxem0tMi0yYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjFoMnYtMXptLTEwLTJjLTEuMzggMC0yLjYzLjU2LTMuNTMgMS40NkwxMiAyMWwzLjUzLTMuNTRBNC45OCA0Ljk4IDAgMCAwIDEyIDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2lmaVRldGhlcmluZ0Vycm9yUm91bmRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN2MtMy4zMSAwLTYgMi42OS02IDYgMCAxLjY2LjY4IDMuMTUgMS43NiA0LjI0bDEuNDItMS40MkEzLjkzNCAzLjkzNCAwIDAgMSA4IDEzYzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAxLjExLS40NSAyLjEtMS4xOCAyLjgybDEuNDIgMS40MkE2LjAwMyA2LjAwMyAwIDAgMCAxOCAxM2MwLTMuMzEtMi42OS02LTYtNnptMC00QzYuNDggMyAyIDcuNDggMiAxM2MwIDIuNzYgMS4xMiA1LjI2IDIuOTMgNy4wN2wxLjQyLTEuNDJBNy45NCA3Ljk0IDAgMCAxIDQgMTNjMC00LjQyIDMuNTgtOCA4LTggMi41MyAwIDQuNzggMS4xNyA2LjI0IDNoMi40MkMxOC45MyA1LjAxIDE1LjcgMyAxMiAzem0wIDhjLTEuMSAwLTIgLjktMiAyIDAgLjU1LjIzIDEuMDUuNTkgMS40MS4zNi4zNi44Ni41OSAxLjQxLjU5czEuMDUtLjIzIDEuNDEtLjU5Yy4zNi0uMzYuNTktLjg2LjU5LTEuNDEgMC0xLjEtLjktMi0yLTJ6bTgtMWgydjZoLTJ2LTZ6bTAgOGgydjJoLTJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpVGV0aGVyaW5nRXJyb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdjLTMuMzEgMC02IDIuNjktNiA2IDAgMS42Ni42OCAzLjE1IDEuNzYgNC4yNGwxLjQyLTEuNDJBMy45MzQgMy45MzQgMCAwIDEgOCAxM2MwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0YzAgMS4xMS0uNDUgMi4xLTEuMTggMi44MmwxLjQyIDEuNDJBNi4wMDMgNi4wMDMgMCAwIDAgMTggMTNjMC0zLjMxLTIuNjktNi02LTZ6bTAtNEM2LjQ4IDMgMiA3LjQ4IDIgMTNjMCAyLjc2IDEuMTIgNS4yNiAyLjkzIDcuMDdsMS40Mi0xLjQyQTcuOTQgNy45NCAwIDAgMSA0IDEzYzAtNC40MiAzLjU4LTggOC04IDIuNTMgMCA0Ljc4IDEuMTcgNi4yNCAzaDIuNDJDMTguOTMgNS4wMSAxNS43IDMgMTIgM3ptMCA4Yy0xLjEgMC0yIC45LTIgMiAwIC41NS4yMyAxLjA1LjU5IDEuNDEuMzYuMzYuODYuNTkgMS40MS41OXMxLjA1LS4yMyAxLjQxLS41OWMuMzYtLjM2LjU5LS44Ni41OS0xLjQxIDAtMS4xLS45LTItMi0yem04LTFoMnY2aC0ydi02em0wIDhoMnYyaC0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2lmaVRldGhlcmluZ09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi44MSAyLjgxIDEuMzkgNC4yMmwyLjY5IDIuNjlBOS45NTggOS45NTggMCAwIDAgMiAxM2MwIDIuNzYgMS4xMiA1LjI2IDIuOTMgNy4wN2wxLjQyLTEuNDJhNy45NTcgNy45NTcgMCAwIDEtLjg0LTEwLjMxbDEuNDMgMS40M2E2LjAwMyA2LjAwMyAwIDAgMCAuODIgNy40N2wxLjQyLTEuNDJBMy45MzQgMy45MzQgMCAwIDEgOCAxM2MwLS42My4xNS0xLjIzLjQxLTEuNzZsMS42MSAxLjYxYzAgLjA1LS4wMi4xLS4wMi4xNSAwIC41NS4yMyAxLjA1LjU5IDEuNDEuMzYuMzYuODYuNTkgMS40MS41OS4wNSAwIC4xLS4wMS4xNi0uMDJsNy42MiA3LjYyIDEuNDEtMS40MUwyLjgxIDIuODF6TTE3LjcgMTQuODdjLjE5LS41OS4zLTEuMjIuMy0xLjg3IDAtMy4zMS0yLjY5LTYtNi02LS42NSAwLTEuMjguMS0xLjg3LjNsMS43MSAxLjcxQzExLjg5IDkgMTEuOTUgOSAxMiA5YzIuMjEgMCA0IDEuNzkgNCA0IDAgLjA1IDAgLjExLS4wMS4xNmwxLjcxIDEuNzF6TTEyIDVjNC40MiAwIDggMy41OCA4IDggMCAxLjIyLS4yNyAyLjM3LS43NyAzLjRsMS40OSAxLjQ5QTkuOTUzIDkuOTUzIDAgMCAwIDIyIDEzYzAtNS41Mi00LjQ4LTEwLTEwLTEwLTEuNzggMC0zLjQ0LjQ2LTQuODkgMS4yOGwxLjQ4IDEuNDhDOS42MyA1LjI3IDEwLjc4IDUgMTIgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZmlUZXRoZXJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDExYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNiAyYzAtMy4zMS0yLjY5LTYtNi02cy02IDIuNjktNiA2YzAgMi4yMiAxLjIxIDQuMTUgMyA1LjE5bDEtMS43NGMtMS4xOS0uNy0yLTEuOTctMi0zLjQ1IDAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAxLjQ4LS44MSAyLjc1LTIgMy40NWwxIDEuNzRjMS43OS0xLjA0IDMtMi45NyAzLTUuMTl6TTEyIDNDNi40OCAzIDIgNy40OCAyIDEzYzAgMy43IDIuMDEgNi45MiA0Ljk5IDguNjVsMS0xLjczQzUuNjEgMTguNTMgNCAxNS45NiA0IDEzYzAtNC40MiAzLjU4LTggOC04czggMy41OCA4IDhjMCAyLjk2LTEuNjEgNS41My00IDYuOTJsMSAxLjczYzIuOTktMS43MyA1LTQuOTUgNS04LjY1IDAtNS41Mi00LjQ4LTEwLTEwLTEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOUg1VjVoOVYzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTloLTJ2OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTNoMnY0aC0yek03IDEwaDJ2N0g3ek0xMSA3aDJ2MTBoLTJ6TTE5IDVWM2gtMnYyaC0ydjJoMnYyaDJWN2gyVjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRDb21tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA0YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRsNCA0VjR6bS0yIDEzLjE3TDE4LjgzIDE2SDRWNGgxNnYxMy4xN3pNMTMgNWgtMnY0SDd2Mmg0djRoMnYtNGg0VjloLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGlnbkhvcml6b250YWxDZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyaDJ2NWg4djNoLTh2NGg1djNoLTV2NWgtMnYtNUg2di0zaDV2LTRIM1Y3aDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGlnbkhvcml6b250YWxMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAyMkgyVjJoMnYyMHpNMjIgN0g2djNoMTZWN3ptLTYgN0g2djNoMTB2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGlnbkhvcml6b250YWxSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJoMnYyMGgtMlYyek0yIDEwaDE2VjdIMnYzem02IDdoMTB2LTNIOHYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWxpZ25WZXJ0aWNhbEJvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDIySDJ2LTJoMjB2MnpNMTAgMkg3djE2aDNWMnptNyA2aC0zdjEwaDNWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFsaWduVmVydGljYWxDZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMWgtNVY2aC0zdjVoLTRWM0g3djhIMS44NHYySDd2OGgzdi04aDR2NWgzdi01aDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbGlnblZlcnRpY2FsVG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMnYySDJWMmgyMHpNNyAyMmgzVjZIN3YxNnptNy02aDNWNmgtM3YxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFyZWFDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3IDctNS00LTUgNy00LTN2MTNoMThWN2gtNHptMiA5Ljk1LTctNS40NUw4IDE3bC0zLTIuNFYxMWwyLjQ0IDEuODMgNC45Ni02Ljk1TDE2LjMgOUgxOXY3Ljk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXR0YWNoRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSA2djExLjVjMCAyLjIxLTEuNzkgNC00IDRzLTQtMS43OS00LTRWNWEyLjUgMi41IDAgMCAxIDUgMHYxMC41YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xVjZIMTB2OS41YTIuNSAyLjUgMCAwIDAgNSAwVjVjMC0yLjIxLTEuNzktNC00LTRTNyAyLjc5IDcgNXYxMi41YzAgMy4wNCAyLjQ2IDUuNSA1LjUgNS41czUuNS0yLjQ2IDUuNS01LjVWNmgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXR0YWNoTW9uZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjggMTAuOWMtMi4yNy0uNTktMy0xLjItMy0yLjE1IDAtMS4wOSAxLjAxLTEuODUgMi43LTEuODUgMS43OCAwIDIuNDQuODUgMi41IDIuMWgyLjIxYy0uMDctMS43Mi0xLjEyLTMuMy0zLjIxLTMuODFWM2gtM3YyLjE2Yy0xLjk0LjQyLTMuNSAxLjY4LTMuNSAzLjYxIDAgMi4zMSAxLjkxIDMuNDYgNC43IDQuMTMgMi41LjYgMyAxLjQ4IDMgMi40MSAwIC42OS0uNDkgMS43OS0yLjcgMS43OS0yLjA2IDAtMi44Ny0uOTItMi45OC0yLjFoLTIuMmMuMTIgMi4xOSAxLjc2IDMuNDIgMy42OCAzLjgzVjIxaDN2LTIuMTVjMS45NS0uMzcgMy41LTEuNSAzLjUtMy41NSAwLTIuODQtMi40My0zLjgxLTQuNy00LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvR3JhcGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4wNiA5Ljk0IDEyIDlsMi4wNi0uOTRMMTUgNmwuOTQgMi4wNkwxOCA5bC0yLjA2Ljk0TDE1IDEybC0uOTQtMi4wNnpNNCAxNGwuOTQtMi4wNkw3IDExbC0yLjA2LS45NEw0IDhsLS45NCAyLjA2TDEgMTFsMi4wNi45NEw0IDE0em00LjUtNSAxLjA5LTIuNDFMMTIgNS41IDkuNTkgNC40MSA4LjUgMiA3LjQxIDQuNDEgNSA1LjVsMi40MSAxLjA5TDguNSA5em0tNCAxMS41IDYtNi4wMSA0IDRMMjMgOC45M2wtMS40MS0xLjQxLTcuMDkgNy45Ny00LTRMMyAxOWwxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmFyQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDloNHYxMUg0ek0xNiAxM2g0djdoLTR6TTEwIDRoNHYxNmgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvcmRlckFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzdjE4aDE4VjNIM3ptOCAxNkg1di02aDZ2NnptMC04SDVWNWg2djZ6bTggOGgtNnYtNmg2djZ6bTAtOGgtNlY1aDZ2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvcmRlckJvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMUg3djJoMnYtMnptNCA0aC0ydjJoMnYtMnpNOSAzSDd2MmgyVjN6bTQgOGgtMnYyaDJ2LTJ6TTUgM0gzdjJoMlYzem04IDRoLTJ2MmgyVjd6bTQgNGgtMnYyaDJ2LTJ6bS00LThoLTJ2MmgyVjN6bTQgMGgtMnYyaDJWM3ptMiAxMGgydi0yaC0ydjJ6bTAgNGgydi0yaC0ydjJ6TTUgN0gzdjJoMlY3em0xNC00djJoMlYzaC0yem0wIDZoMlY3aC0ydjJ6TTUgMTFIM3YyaDJ2LTJ6TTMgMjFoMTh2LTJIM3Yyem0yLTZIM3YyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb3JkZXJDbGVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA1aDJWM0g3djJ6bTAgOGgydi0ySDd2MnptMCA4aDJ2LTJIN3Yyem00LTRoMnYtMmgtMnYyem0wIDRoMnYtMmgtMnYyem0tOCAwaDJ2LTJIM3Yyem0wLTRoMnYtMkgzdjJ6bTAtNGgydi0ySDN2MnptMC00aDJWN0gzdjJ6bTAtNGgyVjNIM3Yyem04IDhoMnYtMmgtMnYyem04IDRoMnYtMmgtMnYyem0wLTRoMnYtMmgtMnYyem0wIDhoMnYtMmgtMnYyem0wLTEyaDJWN2gtMnYyem0tOCAwaDJWN2gtMnYyem04LTZ2MmgyVjNoLTJ6bS04IDJoMlYzaC0ydjJ6bTQgMTZoMnYtMmgtMnYyem0wLThoMnYtMmgtMnYyem0wLThoMlYzaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb3JkZXJDb2xvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2LjgxIDguOTQtMy43NS0zLjc1TDQgMTQuMjVWMThoMy43NWw5LjA2LTkuMDZ6TTYgMTZ2LS45Mmw3LjA2LTcuMDYuOTIuOTJMNi45MiAxNkg2ek0xOS43MSA2LjA0YS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zNC0yLjM0YTEuMDAxIDEuMDAxIDAgMCAwLTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6TTIgMjBoMjB2NEgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9yZGVySG9yaXpvbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyMWgydi0ySDN2MnpNNSA3SDN2MmgyVjd6TTMgMTdoMnYtMkgzdjJ6bTQgNGgydi0ySDd2MnpNNSAzSDN2MmgyVjN6bTQgMEg3djJoMlYzem04IDBoLTJ2MmgyVjN6bS00IDRoLTJ2MmgyVjd6bTAtNGgtMnYyaDJWM3ptNiAxNGgydi0yaC0ydjJ6bS04IDRoMnYtMmgtMnYyem0tOC04aDE4di0ySDN2MnpNMTkgM3YyaDJWM2gtMnptMCA2aDJWN2gtMnYyem0tOCA4aDJ2LTJoLTJ2MnptNCA0aDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvcmRlcklubmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIxaDJ2LTJIM3Yyem00IDBoMnYtMkg3djJ6TTUgN0gzdjJoMlY3ek0zIDE3aDJ2LTJIM3Yyek05IDNIN3YyaDJWM3pNNSAzSDN2MmgyVjN6bTEyIDBoLTJ2MmgyVjN6bTIgNmgyVjdoLTJ2MnptMC02djJoMlYzaC0yem0tNCAxOGgydi0yaC0ydjJ6TTEzIDNoLTJ2OEgzdjJoOHY4aDJ2LThoOHYtMmgtOFYzem02IDE4aDJ2LTJoLTJ2MnptMC00aDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvcmRlckxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDIxaDJ2LTJoLTJ2MnptMC00aDJ2LTJoLTJ2MnptMC0xMmgyVjNoLTJ2MnptMCA0aDJWN2gtMnYyem0wIDRoMnYtMmgtMnYyem0tNCA4aDJ2LTJIN3Yyek03IDVoMlYzSDd2MnptMCA4aDJ2LTJIN3Yyem0tNCA4aDJWM0gzdjE4ek0xOSA5aDJWN2gtMnYyem0tNCAxMmgydi0yaC0ydjJ6bTQtNGgydi0yaC0ydjJ6bTAtMTR2MmgyVjNoLTJ6bTAgMTBoMnYtMmgtMnYyem0wIDhoMnYtMmgtMnYyem0tNC04aDJ2LTJoLTJ2MnptMC04aDJWM2gtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9yZGVyT3V0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDdoLTJ2MmgyVjd6bTAgNGgtMnYyaDJ2LTJ6bTQgMGgtMnYyaDJ2LTJ6TTMgM3YxOGgxOFYzSDN6bTE2IDE2SDVWNWgxNHYxNHptLTYtNGgtMnYyaDJ2LTJ6bS00LTRIN3YyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCb3JkZXJSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyMWgydi0ySDd2MnpNMyA1aDJWM0gzdjJ6bTQgMGgyVjNIN3Yyem0wIDhoMnYtMkg3djJ6bS00IDhoMnYtMkgzdjJ6bTggMGgydi0yaC0ydjJ6bS04LThoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMC04aDJWN0gzdjJ6bTggOGgydi0yaC0ydjJ6bTQtNGgydi0yaC0ydjJ6bTQtMTB2MThoMlYzaC0yem0tNCAxOGgydi0yaC0ydjJ6bTAtMTZoMlYzaC0ydjJ6bS00IDhoMnYtMmgtMnYyem0wLThoMlYzaC0ydjJ6bTAgNGgyVjdoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvcmRlclN0eWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyMWgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6TTcgMjFoMnYtMkg3djJ6bTQgMGgydi0yaC0ydjJ6bTgtNGgydi0yaC0ydjJ6bTAtNGgydi0yaC0ydjJ6TTMgM3YxOGgyVjVoMTZWM0gzem0xNiA2aDJWN2gtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm9yZGVyVG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDIxaDJ2LTJIN3Yyem0wLThoMnYtMkg3djJ6bTQgMGgydi0yaC0ydjJ6bTAgOGgydi0yaC0ydjJ6bS04LTRoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMC04aDJ2LTJIM3Yyem0wLTRoMlY3SDN2MnptOCA4aDJ2LTJoLTJ2MnptOC04aDJWN2gtMnYyem0wIDRoMnYtMmgtMnYyek0zIDN2MmgxOFYzSDN6bTE2IDE0aDJ2LTJoLTJ2MnptLTQgNGgydi0yaC0ydjJ6TTExIDloMlY3aC0ydjJ6bTggMTJoMnYtMmgtMnYyem0tNC04aDJ2LTJoLTJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJvcmRlclZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDloMlY3SDN2MnptMC00aDJWM0gzdjJ6bTQgMTZoMnYtMkg3djJ6bTAtOGgydi0ySDd2MnptLTQgMGgydi0ySDN2MnptMCA4aDJ2LTJIM3Yyem0wLTRoMnYtMkgzdjJ6TTcgNWgyVjNIN3Yyem0xMiAxMmgydi0yaC0ydjJ6bS04IDRoMlYzaC0ydjE4em04IDBoMnYtMmgtMnYyem0wLThoMnYtMmgtMnYyem0wLTEwdjJoMlYzaC0yem0wIDZoMlY3aC0ydjJ6bS00LTRoMlYzaC0ydjJ6bTAgMTZoMnYtMmgtMnYyem0wLThoMnYtMmgtMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnViYmxlQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTBjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem04LjAxLTFjLTEuNjUgMC0zIDEuMzUtMyAzczEuMzUgMyAzIDMgMy0xLjM1IDMtMy0xLjM1LTMtMy0zem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpNMTYuNSAzQzEzLjQ3IDMgMTEgNS40NyAxMSA4LjVzMi40NyA1LjUgNS41IDUuNVMyMiAxMS41MyAyMiA4LjUgMTkuNTMgMyAxNi41IDN6bTAgOWMtMS45MyAwLTMuNS0xLjU3LTMuNS0zLjVTMTQuNTcgNSAxNi41IDUgMjAgNi41NyAyMCA4LjUgMTguNDMgMTIgMTYuNSAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbmRsZXN0aWNrQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDRIN3YySDV2MTJoMnYyaDJ2LTJoMlY2SDlWNHptMCAxMkg3VjhoMnY4ek0xOSA4aC0yVjRoLTJ2NGgtMnY3aDJ2NWgydi01aDJWOHptLTIgNWgtMnYtM2gydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGVja2xpc3RSdGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA3SDJ2Mmg5Vjd6bTAgOEgydjJoOXYtMnptNS4zNC00TDEyLjggNy40NmwxLjQxLTEuNDEgMi4xMiAyLjEyIDQuMjQtNC4yNEwyMiA1LjM0IDE2LjM0IDExem0wIDgtMy41NC0zLjU0IDEuNDEtMS40MSAyLjEyIDIuMTIgNC4yNC00LjI0TDIyIDEzLjM0IDE2LjM0IDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hlY2tsaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgN2gtOXYyaDlWN3ptMCA4aC05djJoOXYtMnpNNS41NCAxMSAyIDcuNDZsMS40MS0xLjQxIDIuMTIgMi4xMiA0LjI0LTQuMjQgMS40MSAxLjQxTDUuNTQgMTF6bTAgOEwyIDE1LjQ2bDEuNDEtMS40MSAyLjEyIDIuMTIgNC4yNC00LjI0IDEuNDEgMS40MUw1LjU0IDE5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGF0YUFycmF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgNHYyaDN2MTJoLTN2Mmg1VjR6TTQgMjBoNXYtMkg2VjZoM1Y0SDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEYXRhT2JqZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA3djJjMCAuNTUtLjQ1IDEtMSAxSDJ2NGgxYy41NSAwIDEgLjQ1IDEgMXYyYzAgMS42NSAxLjM1IDMgMyAzaDN2LTJIN2MtLjU1IDAtMS0uNDUtMS0xdi0yYzAtMS4zLS44NC0yLjQyLTItMi44M3YtLjM0QzUuMTYgMTEuNDIgNiAxMC4zIDYgOVY3YzAtLjU1LjQ1LTEgMS0xaDNWNEg3QzUuMzUgNCA0IDUuMzUgNCA3ek0yMSAxMGMtLjU1IDAtMS0uNDUtMS0xVjdjMC0xLjY1LTEuMzUtMy0zLTNoLTN2MmgzYy41NSAwIDEgLjQ1IDEgMXYyYzAgMS4zLjg0IDIuNDIgMiAyLjgzdi4zNGMtMS4xNi40MS0yIDEuNTItMiAyLjgzdjJjMCAuNTUtLjQ1IDEtMSAxaC0zdjJoM2MxLjY1IDAgMy0xLjM1IDMtM3YtMmMwLS41NS40NS0xIDEtMWgxdi00aC0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJhZ0hhbmRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDlINHYyaDE2Vjl6TTQgMTVoMTZ2LTJINHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJhdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4Ljg1IDEwLjM5IDEuMDYtMS4wNmMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzTDE4LjUgNS4wOWMtLjc4LS43OC0yLjA1LS43OC0yLjgzIDBsLTEuMDYgMS4wNiA0LjI0IDQuMjR6bS00LjI0IDEuNDJMNy40MSAxOUg2di0xLjQxbDcuMTktNy4xOSAxLjQyIDEuNDF6bS0xLjQyLTQuMjVMNCAxNi43NlYyMWg0LjI0bDkuMTktOS4xOS00LjI0LTQuMjV6TTE5IDE3LjVjMCAyLjE5LTIuNTQgMy41LTUgMy41LS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFjMS41NCAwIDMtLjczIDMtMS41IDAtLjQ3LS40OC0uODctMS4yMy0xLjJsMS40OC0xLjQ4YzEuMDcuNjMgMS43NSAxLjQ3IDEuNzUgMi42OHpNNC41OCAxMy4zNUMzLjYxIDEyLjc5IDMgMTIuMDYgMyAxMWMwLTEuOCAxLjg5LTIuNjMgMy41Ni0zLjM2QzcuNTkgNy4xOCA5IDYuNTYgOSA2YzAtLjQxLS43OC0xLTItMS0xLjI2IDAtMS44LjYxLTEuODMuNjQtLjM1LjQxLS45OC40Ni0xLjQuMTJhLjk5Mi45OTIgMCAwIDEtLjE1LTEuMzhDMy43MyA0LjI0IDQuNzYgMyA3IDNzNCAxLjMyIDQgM2MwIDEuODctMS45MyAyLjcyLTMuNjQgMy40N0M2LjQyIDkuODggNSAxMC41IDUgMTFjMCAuMzEuNDMuNiAxLjA3Ljg2bC0xLjQ5IDEuNDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFZGl0Tm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTBoMTF2Mkgzdi0yem0wLTJoMTFWNkgzdjJ6bTAgOGg3di0ySDN2MnptMTUuMDEtMy4xMy43MS0uNzFhLjk5Ni45OTYgMCAwIDEgMS40MSAwbC43MS43MWMuMzkuMzkuMzkgMS4wMiAwIDEuNDFsLS43MS43MS0yLjEyLTIuMTJ6bS0uNzEuNzEtNS4zIDUuM1YyMWgyLjEybDUuMy01LjMtMi4xMi0yLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0QWxpZ25DZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTV2MmgxMHYtMkg3em0tNCA2aDE4di0ySDN2MnptMC04aDE4di0ySDN2MnptNC02djJoMTBWN0g3ek0zIDN2MmgxOFYzSDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRBbGlnbkp1c3RpZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMjFoMTh2LTJIM3Yyem0wLTRoMTh2LTJIM3Yyem0wLTRoMTh2LTJIM3Yyem0wLTRoMThWN0gzdjJ6bTAtNnYyaDE4VjNIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdEFsaWduTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTVIM3YyaDEydi0yem0wLThIM3YyaDEyVjd6TTMgMTNoMTh2LTJIM3Yyem0wIDhoMTh2LTJIM3Yyek0zIDN2MmgxOFYzSDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRBbGlnblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIxaDE4di0ySDN2MnptNi00aDEydi0ySDl2MnptLTYtNGgxOHYtMkgzdjJ6bTYtNGgxMlY3SDl2MnpNMyAzdjJoMThWM0gzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0Qm9sZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNiAxMC43OWMuOTctLjY3IDEuNjUtMS43NyAxLjY1LTIuNzkgMC0yLjI2LTEuNzUtNC00LTRIN3YxNGg3LjA0YzIuMDkgMCAzLjcxLTEuNyAzLjcxLTMuNzkgMC0xLjUyLS44Ni0yLjgyLTIuMTUtMy40MnpNMTAgNi41aDNjLjgzIDAgMS41LjY3IDEuNSAxLjVzLS42NyAxLjUtMS41IDEuNWgtM3YtM3ptMy41IDlIMTB2LTNoMy41Yy44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRDbGVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOFY1SDYuMzlsMyAzaDEuODNsLS41NSAxLjI4IDIuMDkgMi4xTDE0LjIxIDh6TTMuNDEgNC44NiAyIDYuMjdsNi45NyA2Ljk3TDYuNSAxOWgzbDEuNTctMy42NkwxNi43MyAyMWwxLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRDb2xvckZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41NiA4Ljk0IDcuNjIgMCA2LjIxIDEuNDFsMi4zOCAyLjM4LTUuMTUgNS4xNWExLjQ5IDEuNDkgMCAwIDAgMCAyLjEybDUuNSA1LjVjLjI5LjI5LjY4LjQ0IDEuMDYuNDRzLjc3LS4xNSAxLjA2LS40NGw1LjUtNS41Yy41OS0uNTguNTktMS41MyAwLTIuMTJ6TTUuMjEgMTAgMTAgNS4yMSAxNC43OSAxMEg1LjIxek0xOSAxMS41cy0yIDIuMTctMiAzLjVjMCAxLjEuOSAyIDIgMnMyLS45IDItMmMwLTEuMzMtMi0zLjUtMi0zLjV6TTIgMjBoMjB2NEgydi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0Q29sb3JSZXNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNi4zNmMxLjUzIDIgMy4wOCA0LjQzIDMuNzEgNi4yNGwyLjIzIDIuMjNjLjAzLS4yNy4wNi0uNTUuMDYtLjgzIDAtMy45OC02LTEwLjgtNi0xMC44cy0xLjE4IDEuMzUtMi41IDMuMTlsMS40NCAxLjQ0Yy4zNC0uNTEuNy0xIDEuMDYtMS40N3pNNS40MSA1LjE0IDQgNi41NWwzLjMyIDMuMzJDNi41NSAxMS4zMyA2IDEyLjc5IDYgMTRjMCAzLjMxIDIuNjkgNiA2IDYgMS41MiAwIDIuOS0uNTcgMy45NS0xLjVsMi42MyAyLjYzTDIwIDE5LjcyIDUuNDEgNS4xNHpNMTIgMThjLTIuMjEgMC00LTEuNzktNC00IDAtLjY5LjMyLTEuNjIuODEtMi42NGw1LjcyIDUuNzJjLS43LjU2LTEuNTcuOTItMi41My45MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdENvbG9yVGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMjBoMjB2NEgydi00em0zLjQ5LTNoMi40MmwxLjI3LTMuNThoNS42NUwxNi4wOSAxN2gyLjQyTDEzLjI1IDNoLTIuNUw1LjQ5IDE3em00LjQyLTUuNjEgMi4wMy01Ljc5aC4xMmwyLjAzIDUuNzlIOS45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdEluZGVudERlY3JlYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxN2gxMHYtMkgxMXYyem0tOC01IDQgNFY4bC00IDR6bTAgOWgxOHYtMkgzdjJ6TTMgM3YyaDE4VjNIM3ptOCA2aDEwVjdIMTF2MnptMCA0aDEwdi0ySDExdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRJbmRlbnRJbmNyZWFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyMWgxOHYtMkgzdjJ6TTMgOHY4bDQtNC00LTR6bTggOWgxMHYtMkgxMXYyek0zIDN2MmgxOFYzSDN6bTggNmgxMFY3SDExdjJ6bTAgNGgxMHYtMkgxMXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0SXRhbGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0djNoMi4yMWwtMy40MiA4SDZ2M2g4di0zaC0yLjIxbDMuNDItOEgxOFY0aC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0TGluZVNwYWNpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgN2gyLjVMNSAzLjUgMS41IDdINHYxMEgxLjVMNSAyMC41IDguNSAxN0g2Vjd6bTQtMnYyaDEyVjVIMTB6bTAgMTRoMTJ2LTJIMTB2MnptMC02aDEydi0ySDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRMaXN0QnVsbGV0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTAuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTAtNmMtLjgzIDAtMS41LjY3LTEuNSAxLjVTMy4xNyA3LjUgNCA3LjUgNS41IDYuODMgNS41IDYgNC44MyA0LjUgNCA0LjV6bTAgMTJjLS44MyAwLTEuNS42OC0xLjUgMS41cy42OCAxLjUgMS41IDEuNSAxLjUtLjY4IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41ek03IDE5aDE0di0ySDd2MnptMC02aDE0di0ySDd2MnptMC04djJoMTRWNUg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0TGlzdE51bWJlcmVkUnRsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxN2gydi41aC0xdjFoMXYuNWgtMnYxaDN2LTRoLTN2MXptMS05aDFWNGgtMnYxaDF2M3ptLTEgM2gxLjhMMTggMTMuMXYuOWgzdi0xaC0xLjhsMS44LTIuMVYxMGgtM3Yxek0yIDVoMTR2MkgyVjV6bTAgMTJoMTR2Mkgydi0yem0wLTZoMTR2Mkgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0TGlzdE51bWJlcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE3aDJ2LjVIM3YxaDF2LjVIMnYxaDN2LTRIMnYxem0xLTloMVY0SDJ2MWgxdjN6bS0xIDNoMS44TDIgMTMuMXYuOWgzdi0xSDMuMkw1IDEwLjlWMTBIMnYxem01LTZ2MmgxNFY1SDd6bTAgMTRoMTR2LTJIN3Yyem0wLTZoMTR2LTJIN3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0UGFpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRWM2MwLS41NS0uNDUtMS0xLTFINWMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xVjZoMXY0SDl2MTFjMCAuNTUuNDUgMSAxIDFoMmMuNTUgMCAxLS40NSAxLTF2LTloOFY0aC0zem0tMiAySDZWNGgxMHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0UXVvdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjYyIDE4aC01LjI0bDItNEgxM1Y2aDh2Ny4yNEwxOC42MiAxOHptLTItMmguNzZMMTkgMTIuNzZWOGgtNHY0aDMuNjJsLTIgNHptLTggMkgzLjM4bDItNEgzVjZoOHY3LjI0TDguNjIgMTh6bS0yLTJoLjc2TDkgMTIuNzZWOEg1djRoMy42MmwtMiA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0U2hhcGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyA3VjFoLTZ2Mkg3VjFIMXY2aDJ2MTBIMXY2aDZ2LTJoMTB2Mmg2di02aC0yVjdoMnpNMyAzaDJ2MkgzVjN6bTIgMThIM3YtMmgydjJ6bTEyLTJIN3YtMkg1VjdoMlY1aDEwdjJoMnYxMGgtMnYyem00IDJoLTJ2LTJoMnYyek0xOSA1VjNoMnYyaC0yem0tNS4yNyA5aC0zLjQ5bC0uNzMgMkg3Ljg5bDMuNC05aDEuNGwzLjQxIDloLTEuNjNsLS43NC0yem0tMy4wNC0xLjI2aDIuNjFMMTIgOC45MWwtMS4zMSAzLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0U2l6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0djNoNXYxMmgzVjdoNVY0SDl6bS02IDhoM3Y3aDN2LTdoM1Y5SDN2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdFN0cmlrZXRocm91Z2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE5aDR2LTNoLTR2M3pNNSA0djNoNXYzaDRWN2g1VjRINXpNMyAxNGgxOHYtMkgzdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JtYXRUZXh0ZGlyZWN0aW9uTFRvUiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0djRjLTEuMSAwLTItLjktMi0ycy45LTIgMi0ybTgtMkg5QzYuNzkgMiA1IDMuNzkgNSA2czEuNzkgNCA0IDR2NWgyVjRoMnYxMWgyVjRoMlYyem0wIDEydjNINXYyaDEydjNsNC00LTQtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvcm1hdFRleHRkaXJlY3Rpb25SVG9MIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0djRjLTEuMSAwLTItLjktMi0ycy45LTIgMi0ybTgtMmgtOEM3Ljc5IDIgNiAzLjc5IDYgNnMxLjc5IDQgNCA0djVoMlY0aDJ2MTFoMlY0aDJWMnpNOCAxNGwtNCA0IDQgNHYtM2gxMnYtMkg4di0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0VW5kZXJsaW5lZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTdjMy4zMSAwIDYtMi42OSA2LTZWM2gtMi41djhjMCAxLjkzLTEuNTcgMy41LTMuNSAzLjVTOC41IDEyLjkzIDguNSAxMVYzSDZ2OGMwIDMuMzEgMi42OSA2IDYgNnptLTcgMnYyaDE0di0ySDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGdW5jdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRINnYybDYuNSA2TDYgMTh2MmgxMnYtM2gtN2w1LTUtNS01aDdWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhlaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDYuOTloM0wxMiAzIDggNi45OWgzdjEwLjAySDhMMTIgMjFsNC0zLjk5aC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGV4YWdvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjIgM0g2LjhsLTUuMiA5IDUuMiA5aDEwLjRsNS4yLTktNS4yLTl6bS0xLjE1IDE2aC04LjFsLTQuMDQtNyA0LjA0LTdoOC4wOWw0LjA0IDctNC4wMyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGlnaGxpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNiAxNCAzIDN2NWg2di01bDMtM1Y5SDZ2NXptMi0zaDh2Mi4xN2wtMyAzVjIwaC0ydi0zLjgzbC0zLTNWMTF6bTMtOWgydjNoLTJ6TTMuNTAyIDUuODc0IDQuOTE2IDQuNDZsMi4xMjIgMi4xMi0xLjQxNCAxLjQxNXptMTMuNDU4LjcwOCAyLjEyMy0yLjEyIDEuNDEzIDEuNDE2LTIuMTIzIDIuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb3Jpem9udGFsRGlzdHJpYnV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMjJIMlYyaDJ2MjB6TTIyIDJoLTJ2MjBoMlYyem0tOC41IDVoLTN2MTBoM1Y3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG9yaXpvbnRhbFJ1bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNCAxMWgxNnYySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnNlcnRDaGFydE91dGxpbmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0em0yIDJINVY1aDE0djE0em0wLTE2SDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluc2VydENoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6TTcgMTBoMnY3SDd6bTQtM2gydjEwaC0yem00IDZoMnY0aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW5zZXJ0Q29tbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNHYxMy4xN0wxOC44MyAxNkg0VjRoMTZtMC0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRsNCA0VjRjMC0xLjEtLjktMi0yLTJ6bS0yIDEwSDZ2MmgxMnYtMnptMC0zSDZ2MmgxMlY5em0wLTNINnYyaDEyVjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnNlcnREcml2ZUZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnpNNiAyMFY0aDd2NWg1djExSDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnNlcnRFbW90aWNvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0zLjUtOWMuODMgMCAxLjUtLjY3IDEuNS0xLjVTMTYuMzMgOCAxNS41IDggMTQgOC42NyAxNCA5LjVzLjY3IDEuNSAxLjUgMS41em0tNyAwYy44MyAwIDEuNS0uNjcgMS41LTEuNVM5LjMzIDggOC41IDggNyA4LjY3IDcgOS41IDcuNjcgMTEgOC41IDExem0zLjUgNi41YzIuMzMgMCA0LjMxLTEuNDYgNS4xMS0zLjVINi44OWMuOCAyLjA0IDIuNzggMy41IDUuMTEgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW5zZXJ0SW52aXRhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YTIgMiAwIDAgMCAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjloMTR2MTB6bTAtMTJINVY1aDE0djJ6bS0yIDVoLTV2NWg1di01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW5zZXJ0TGluayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy45IDEyYzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xaDRWN0g3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1aDR2LTEuOUg3Yy0xLjcxIDAtMy4xLTEuMzktMy4xLTMuMXpNOCAxM2g4di0ySDh2MnptOS02aC00djEuOWg0YzEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xcy0xLjM5IDMuMS0zLjEgMy4xaC00VjE3aDRjMi43NiAwIDUtMi4yNCA1LTVzLTIuMjQtNS01LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnNlcnRQYWdlQnJlYWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyMEg2di0zSDR2M2MwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi0zaC0ydjN6TTYgNGg3djVoNXYyaDJWOGwtNi02SDZjLTEuMSAwLTIgLjktMiAydjdoMlY0ek05IDEzaDZ2Mkg5ek0xNyAxM2g2djJoLTZ6TTEgMTNoNnYySDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbnNlcnRQaG90byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQuODYgOC44Ni0zIDMuODdMOSAxMy4xNCA2IDE3aDEybC0zLjg2LTUuMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaW5lQXhpcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDcuNDMtMS40MS0xLjQxLTQuMDMgNC41M0w5LjUgNCAyIDExLjUxbDEuNSAxLjUgNi4xNC02LjE1IDUuNTkgNS4xOC0xLjczIDEuOTUtNC00TDIgMTcuNSAzLjUgMTlsNi02LjAxIDQgNCAzLjE5LTMuNTkgMy45IDMuNjFMMjIgMTUuNmwtMy45OC0zLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaW5lYXJTY2FsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjUgOS41Yy0xLjAzIDAtMS45LjYyLTIuMjkgMS41aC0yLjkyYy0uMzktLjg4LTEuMjYtMS41LTIuMjktMS41cy0xLjkuNjItMi4yOSAxLjVINi43OWMtLjM5LS44OC0xLjI2LTEuNS0yLjI5LTEuNWEyLjUgMi41IDAgMCAwIDAgNWMxLjAzIDAgMS45LS42MiAyLjI5LTEuNWgyLjkyYy4zOS44OCAxLjI2IDEuNSAyLjI5IDEuNXMxLjktLjYyIDIuMjktMS41aDIuOTJjLjM5Ljg4IDEuMjYgMS41IDIuMjkgMS41YTIuNSAyLjUgMCAwIDAgMC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFyZ2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzdjE4aDE4VjNIM3ptMTYgMTZINVY1aDE0djE0ek0xMSA3aDJ2MmgtMlY3ek03IDdoMnYySDdWN3ptOCAwaDJ2MmgtMlY3em0tOCA0aDJ2Mkg3di0yem00IDBoMnYyaC0ydi0yem00IDBoMnYyaC0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVyZ2VUeXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAyMC40MSAxOC40MSAxOSAxNSAxNS41OSAxMy41OSAxNyAxNyAyMC40MXpNNy41IDhIMTF2NS41OUw1LjU5IDE5IDcgMjAuNDFsNi02VjhoMy41TDEyIDMuNSA3LjUgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vZGVDb21tZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNy4xNyAxOC44MyAxNkg0VjRoMTZ2MTMuMTd6TTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNGw0IDRWNGMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vZGVFZGl0T3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNVYyMXptMi0yLjkyIDkuMDYtOS4wNi45Mi45Mkw1LjkyIDE5SDV2LS45MnpNMTguMzcgMy4yOWEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzYS45OTYuOTk2IDAgMCAwIDAtMS40MWwtMi4zNC0yLjM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9kZUVkaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjVWMjF6bTItMi45MiA5LjA2LTkuMDYuOTIuOTJMNS45MiAxOUg1di0uOTJ6TTE4LjM3IDMuMjlhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTIuMzQtMi4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjA2IDkuMDIuOTIuOTJMNS45MiAxOUg1di0uOTJsOS4wNi05LjA2TTE3LjY2IDNjLS4yNSAwLS41MS4xLS43LjI5bC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTIuMzQtMi4zNGMtLjItLjItLjQ1LS4yOS0uNzEtLjI5em0tMy42IDMuMTlMMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vbmV0aXphdGlvbk9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptLjMxLTguODZjLTEuNzctLjQ1LTIuMzQtLjk0LTIuMzQtMS42NyAwLS44NC43OS0xLjQzIDIuMS0xLjQzIDEuMzggMCAxLjkuNjYgMS45NCAxLjY0aDEuNzFjLS4wNS0xLjM0LS44Ny0yLjU3LTIuNDktMi45N1Y1SDEwLjl2MS42OWMtMS41MS4zMi0yLjcyIDEuMy0yLjcyIDIuODEgMCAxLjc5IDEuNDkgMi42OSAzLjY2IDMuMjEgMS45NS40NiAyLjM0IDEuMTUgMi4zNCAxLjg3IDAgLjUzLS4zOSAxLjM5LTIuMSAxLjM5LTEuNiAwLTIuMjMtLjcyLTIuMzItMS42NEg4LjA0Yy4xIDEuNyAxLjM2IDIuNjYgMi44NiAyLjk3VjE5aDIuMzR2LTEuNjdjMS41Mi0uMjkgMi43Mi0xLjE2IDIuNzMtMi43Ny0uMDEtMi4yLTEuOS0yLjk2LTMuNjYtMy40MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vbmV5T2ZmQ3NyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgNi45YzEuNzggMCAyLjQ0Ljg1IDIuNSAyLjFoMi4yMWMtLjA3LTEuNzItMS4xMi0zLjMtMy4yMS0zLjgxVjNoLTN2Mi4xNmMtLjM5LjA4LS43NS4yMS0xLjEuMzZsMS41MSAxLjUxYy4zMi0uMDguNjktLjEzIDEuMDktLjEzek01LjQ3IDMuOTIgNC4wNiA1LjMzIDcuNSA4Ljc3YzAgMi4wOCAxLjU2IDMuMjIgMy45MSAzLjkxbDMuNTEgMy41MWMtLjM0LjQ5LTEuMDUuOTEtMi40Mi45MS0yLjA2IDAtMi44Ny0uOTItMi45OC0yLjFoLTIuMmMuMTIgMi4xOSAxLjc2IDMuNDIgMy42OCAzLjgzVjIxaDN2LTIuMTVjLjk2LS4xOCAxLjgzLS41NSAyLjQ2LTEuMTJsMi4yMiAyLjIyIDEuNDEtMS40MUw1LjQ3IDMuOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb25leU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSA2LjljMS43OCAwIDIuNDQuODUgMi41IDIuMWgyLjIxYy0uMDctMS43Mi0xLjEyLTMuMy0zLjIxLTMuODFWM2gtM3YyLjE2Yy0uMzkuMDgtLjc1LjIxLTEuMS4zNmwxLjUxIDEuNTFjLjMyLS4wOC42OS0uMTMgMS4wOS0uMTN6TTUuNDcgMy45MiA0LjA2IDUuMzMgNy41IDguNzdjMCAyLjA4IDEuNTYgMy4yMiAzLjkxIDMuOTFsMy41MSAzLjUxYy0uMzQuNDktMS4wNS45MS0yLjQyLjkxLTIuMDYgMC0yLjg3LS45Mi0yLjk4LTIuMWgtMi4yYy4xMiAyLjE5IDEuNzYgMy40MiAzLjY4IDMuODNWMjFoM3YtMi4xNWMuOTYtLjE4IDEuODMtLjU1IDIuNDYtMS4xMmwyLjIyIDIuMjIgMS40MS0xLjQxTDUuNDcgMy45MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdmVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMWMwIDIuNDUgMS43NiA0LjQ3IDQuMDggNC45MWwtMS40OS0xLjQ5TDcgMTNsNCA0LjAxTDcgMjFsLTEuNDEtMS40MSAxLjU4LTEuNTh2LS4wNkE3LjAwNyA3LjAwNyAwIDAgMSAxIDExYzAtMy44NyAzLjEzLTcgNy03aDN2Mkg4Yy0yLjc2IDAtNSAyLjI0LTUgNXpNMjIgMTFWNGgtOXY3aDl6bS0yLTJoLTVWNmg1djN6TTEzIDEzaDl2N2gtOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdmVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTNjMC0yLjQ1IDEuNzYtNC40NyA0LjA4LTQuOTFsLTEuNDkgMS41TDcgMTFsNC00LjAxTDcgMyA1LjU5IDQuNDFsMS41OCAxLjU4di4wNkE3LjAwNyA3LjAwNyAwIDAgMCAxIDEzYzAgMy44NyAzLjEzIDcgNyA3aDN2LTJIOGMtMi43NiAwLTUtMi4yNC01LTV6TTEzIDEzdjdoOXYtN2gtOXptNyA1aC01di0zaDV2M3pNMTMgNGg5djdoLTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNdWx0aWxpbmVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgNi45Mi0xLjQxLTEuNDEtMi44NSAzLjIxQzE1LjY4IDYuNCAxMi44MyA1IDkuNjEgNSA2LjcyIDUgNC4wNyA2LjE2IDIgOGwxLjQyIDEuNDJDNS4xMiA3LjkzIDcuMjcgNyA5LjYxIDdjMi43NCAwIDUuMDkgMS4yNiA2Ljc3IDMuMjRsLTIuODggMy4yNC00LTRMMiAxNi45OWwxLjUgMS41IDYtNi4wMSA0IDQgNC4wNS00LjU1Yy43NSAxLjM1IDEuMjUgMi45IDEuNDQgNC41NUgyMWMtLjIyLTIuMy0uOTUtNC4zOS0yLjA0LTYuMTRMMjIgNi45MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMS4wMSAzIDExdjJoMTh6TTMgMTZoMTJ2Mkgzek0yMSA2SDN2Mi4wMUwyMSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTnVtYmVycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjUgMTAgLjUtMmgtNGwxLTRoLTJsLTEgNGgtNGwxLTRoLTJMOSA4SDVsLS41IDJoNGwtMSA0aC00TDMgMTZoNGwtMSA0aDJsMS00aDRsLTEgNGgybDEtNGg0bC41LTJoLTRsMS00aDR6bS03IDRoLTRsMS00aDRsLTEgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhZGRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDV2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAyem0xNiAxNEg1VjVoMTR2MTR6TTExIDdoMnYyaC0yVjd6TTcgN2gydjJIN1Y3em04IDBoMnYyaC0yVjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZW50YWdvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjYzIDkuNzggMTYuNTYgMTlINy40NEw0LjM3IDkuNzggMTIgNC40NGw3LjYzIDUuMzR6TTIgOWw0IDEyaDEybDQtMTItMTAtN0wyIDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaWVDaGFydE91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyem0xIDIuMDdjMy42MS40NSA2LjQ4IDMuMzMgNi45MyA2LjkzSDEzVjQuMDd6TTQgMTJjMC00LjA2IDMuMDctNy40NCA3LTcuOTN2MTUuODdjLTMuOTMtLjUtNy0zLjg4LTctNy45NHptOSA3LjkzVjEzaDYuOTNBOC4wMDIgOC4wMDIgMCAwIDEgMTMgMTkuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaWVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNy45MyA5SDEzVjQuMDdjMy42MS40NSA2LjQ4IDMuMzIgNi45MyA2Ljkzek00IDEyYzAtNC4wNyAzLjA2LTcuNDQgNy03LjkzdjE1Ljg2Yy0zLjk0LS40OS03LTMuODYtNy03Ljkzem05IDcuOTNWMTNoNi45M0E4LjAwMiA4LjAwMiAwIDAgMSAxMyAxOS45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvbHlsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTZ2MS4yNmwtNi0zdi0zLjE3TDExLjcgOEgxNlYyaC02djQuOUw3LjMgMTBIM3Y2aDVsNyAzLjVWMjJoNnYtNmgtNnpNMTIgNGgydjJoLTJWNHpNNyAxNEg1di0yaDJ2MnptMTIgNmgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb3N0QWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTkuMjJINVY3aDdWNUg1Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi03aC0ydjcuMjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJoLTJ2M2gtM2MuMDEuMDEgMCAyIDAgMmgzdjIuOTljLjAxLjAxIDIgMCAyIDBWN2gzVjVoLTNWMnpNNyA5aDh2Mkg3ek03IDEydjJoOHYtMmgtM3pNNyAxNWg4djJIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVB1Ymxpc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNGgxNHYySDV6bTAgMTBoNHY2aDZ2LTZoNGwtNy03LTcgN3ptOC0ydjZoLTJ2LTZIOS44M0wxMiA5LjgzIDE0LjE3IDEySDEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUXVlcnlTdGF0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljg4IDE4LjQ3Yy40NC0uNy43LTEuNTEuNy0yLjM5IDAtMi40OS0yLjAxLTQuNS00LjUtNC41cy00LjUgMi4wMS00LjUgNC41IDIuMDEgNC41IDQuNDkgNC41Yy44OCAwIDEuNy0uMjYgMi4zOS0uN0wyMS41OCAyMyAyMyAyMS41OGwtMy4xMi0zLjExem0tMy44LjExYTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1em0tLjM2LTguNWMtLjc0LjAyLTEuNDUuMTgtMi4xLjQ1bC0uNTUtLjgzLTMuOCA2LjE4LTMuMDEtMy41Mi0zLjYzIDUuODFMMSAxN2w1LTggMyAzLjVMMTMgNmwyLjcyIDQuMDh6bTIuNTkuNWMtLjY0LS4yOC0xLjMzLS40NS0yLjA1LS40OUwyMS4zOCAyIDIzIDMuMThsLTQuNjkgNy40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVjdGFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0djE2aDIwVjRIMnptMTggMTRINFY2aDE2djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NhdHRlclBsb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMThjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0em0wLTZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem00LTJjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0em0wLTZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem01LjYgMTcuNmMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0LTEuNzkgNC00IDR6bTAtNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY2hlbWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA5djJoLTNWOUg4LjVWN0gxMVYxSDR2NmgyLjV2Mkg0djZoMi41djJINHY2aDd2LTZIOC41di0ySDExdi0yaDN2Mmg3VjloLTd6TTYgM2gzdjJINlYzem0zIDE4SDZ2LTJoM3Yyem0wLThINnYtMmgzdjJ6bTEwIDBoLTN2LTJoM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVsNC00IDQgNCA2LTZ2NnptMC04LjUtNiA2LTQtNC00IDRWNWgxNHY1LjV6TTEzLjUgOVY2SDEydjZoMS41em0zLjcgMy0yLTMgMi0zaC0xLjdsLTIgMyAyIDN6TTExIDEwLjVIOC41di0uNzVIMTFWNkg3djEuNWgyLjV2Ljc1SDdWMTJoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNoYXBlTGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTFjMi43NiAwIDUtMi4yNCA1LTVTOC43NiAxIDYgMSAxIDMuMjQgMSA2czIuMjQgNSA1IDV6bTAtOGMxLjY1IDAgMyAxLjM1IDMgM1M3LjY1IDkgNiA5IDMgNy42NSAzIDZzMS4zNS0zIDMtM3pNMjEgMTRoLTVjLTEuMSAwLTIgLjktMiAydjVjMCAxLjEuOSAyIDIgMmg1YzEuMSAwIDItLjkgMi0ydi01YzAtMS4xLS45LTItMi0yem0wIDdoLTV2LTVoNXY1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy43MSA3LjdjLjQuMTkuODMuMyAxLjI5LjMgMS42NSAwIDMtMS4zNSAzLTNzLTEuMzUtMy0zLTMtMyAxLjM1LTMgM2MwIC40Ni4xMS44OS4zIDEuMjlMNi4yOSAxNi4zYy0uNC0uMTktLjgzLS4zLTEuMjktLjMtMS42NSAwLTMgMS4zNS0zIDNzMS4zNSAzIDMgMyAzLTEuMzUgMy0zYzAtLjQ2LS4xMS0uODktLjMtMS4yOUwxNy43MSA3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG9ydFRleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDloMTZ2Mkg0Vjl6bTAgNGgxMHYySDR2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaG93Q2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMuNSAxOC40OSA2LTYuMDEgNCA0TDIyIDYuOTJsLTEuNDEtMS40MS03LjA5IDcuOTctNC00TDIgMTYuOTlsMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwYWNlQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5djRINlY5SDR2NmgxNlY5aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzdjE4aDE4VjNIM3ptMTYgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RhY2tlZExpbmVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIgMTkuOTkgNy41LTcuNTEgNCA0IDcuMDktNy45N0wyMiA5LjkybC04LjUgOS41Ni00LTQtNiA2LjAxLTEuNS0xLjV6bTEuNS00LjUgNi02LjAxIDQgNEwyMiAzLjkybC0xLjQxLTEuNDEtNy4wOSA3Ljk3LTQtNEwyIDEzLjk5bDEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdHJpa2V0aHJvdWdoUyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMjQgOC43NWMtLjI2LS40OC0uMzktMS4wMy0uMzktMS42NyAwLS42MS4xMy0xLjE2LjQtMS42Ny4yNi0uNS42My0uOTMgMS4xMS0xLjI5YTUuNzMgNS43MyAwIDAgMSAxLjctLjgzYy42Ni0uMTkgMS4zOS0uMjkgMi4xOC0uMjkuODEgMCAxLjU0LjExIDIuMjEuMzQuNjYuMjIgMS4yMy41NCAxLjY5Ljk0LjQ3LjQuODMuODggMS4wOCAxLjQzcy4zOCAxLjE1LjM4IDEuODFoLTMuMDFjMC0uMzEtLjA1LS41OS0uMTUtLjg1LS4wOS0uMjctLjI0LS40OS0uNDQtLjY4LS4yLS4xOS0uNDUtLjMzLS43NS0uNDQtLjMtLjEtLjY2LS4xNi0xLjA2LS4xNi0uMzkgMC0uNzQuMDQtMS4wMy4xM3MtLjUzLjIxLS43Mi4zNmMtLjE5LjE2LS4zNC4zNC0uNDQuNTUtLjEuMjEtLjE1LjQzLS4xNS42NiAwIC40OC4yNS44OC43NCAxLjIxLjM4LjI1Ljc3LjQ4IDEuNDEuN0g3LjM5Yy0uMDUtLjA4LS4xMS0uMTctLjE1LS4yNXpNMjEgMTJ2LTJIM3YyaDkuNjJjLjE4LjA3LjQuMTQuNTUuMi4zNy4xNy42Ni4zNC44Ny41MXMuMzUuMzYuNDMuNTdjLjA3LjIuMTEuNDMuMTEuNjkgMCAuMjMtLjA1LjQ1LS4xNC42Ni0uMDkuMi0uMjMuMzgtLjQyLjUzLS4xOS4xNS0uNDIuMjYtLjcxLjM1LS4yOS4wOC0uNjMuMTMtMS4wMS4xMy0uNDMgMC0uODMtLjA0LTEuMTgtLjEzcy0uNjYtLjIzLS45MS0uNDJjLS4yNS0uMTktLjQ1LS40NC0uNTktLjc1cy0uMjUtLjc2LS4yNS0xLjIxSDYuNGMwIC41NS4wOCAxLjEzLjI0IDEuNThzLjM3Ljg1LjY1IDEuMjFjLjI4LjM1LjYuNjYuOTguOTIuMzcuMjYuNzguNDggMS4yMi42NS40NC4xNy45LjMgMS4zOC4zOS40OC4wOC45Ni4xMyAxLjQ0LjEzLjggMCAxLjUzLS4wOSAyLjE4LS4yOHMxLjIxLS40NSAxLjY3LS43OWMuNDYtLjM0LjgyLS43NyAxLjA3LTEuMjdzLjM4LTEuMDcuMzgtMS43MWMwLS42LS4xLTEuMTQtLjMxLTEuNjEtLjA1LS4xMS0uMTEtLjIzLS4xNy0uMzNIMjFWMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdWJzY3JpcHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxOGgtMnYxaDN2MWgtNHYtMmMwLS41NS40NS0xIDEtMWgydi0xaC0zdi0xaDNjLjU1IDAgMSAuNDUgMSAxdjFjMCAuNTUtLjQ1IDEtMSAxek01Ljg4IDE4aDIuNjZsMy40LTUuNDJoLjEybDMuNCA1LjQyaDIuNjZsLTQuNjUtNy4yN0wxNy44MSA0aC0yLjY4bC0zLjA3IDQuOTloLS4xMkw4Ljg1IDRINi4xOWw0LjMyIDYuNzNMNS44OCAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1cGVyc2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgN2gtMnYxaDN2MWgtNFY3YzAtLjU1LjQ1LTEgMS0xaDJWNWgtM1Y0aDNjLjU1IDAgMSAuNDUgMSAxdjFjMCAuNTUtLjQ1IDEtMSAxek01Ljg4IDIwaDIuNjZsMy40LTUuNDJoLjEybDMuNCA1LjQyaDIuNjZsLTQuNjUtNy4yN0wxNy44MSA2aC0yLjY4bC0zLjA3IDQuOTloLS4xMkw4Ljg1IDZINi4xOWw0LjMyIDYuNzNMNS44OCAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhYmxlQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDJ2M0g1VjVoMTV6bS01IDE0aC01di05aDV2OXpNNSAxMGgzdjlINXYtOXptMTIgOXYtOWgzdjloLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUYWJsZVJvd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAydjNINVY1aDE0em0wIDV2NEg1di00aDE0ek01IDE5di0zaDE0djNINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRleHREZWNyZWFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS45OSAxOWgyLjQybDEuMjctMy41OGg1LjY1TDExLjU5IDE5aDIuNDJMOC43NSA1aC0yLjVMLjk5IDE5em00LjQyLTUuNjFMNy40NCA3LjZoLjEybDIuMDMgNS43OUg1LjQxek0yMyAxMXYyaC04di0yaDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUZXh0RmllbGRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDR2M2g1djEyaDNWN2g1VjRoLTEzem0xOSA1aC05djNoM3Y3aDN2LTdoM1Y5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGV4dEluY3JlYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjk5IDE5aDIuNDJsMS4yNy0zLjU4aDUuNjVMMTEuNTkgMTloMi40Mkw4Ljc1IDVoLTIuNUwuOTkgMTl6bTQuNDItNS42MUw3LjQ0IDcuNmguMTJsMi4wMyA1Ljc5SDUuNDF6TTIwIDExaDN2MmgtM3YzaC0ydi0zaC0zdi0yaDNWOGgydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaXRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA0djNoNS41djEyaDNWN0gxOVY0SDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUeXBlU3BlY2ltZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRIOFY0aDEydjEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4xOSAxMi4yaDMuNjNsLjggMi4zaDEuNTZsLTMuMzgtOWgtMS42bC0zLjM4IDloMS41NmwuODEtMi4zem0xLjc3LTUuMDNoLjA4bDEuMzEgMy43MmgtMi42OWwxLjMtMy43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZlcnRpY2FsQWxpZ25Cb3R0b20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDEzaC0zVjNoLTJ2MTBIOGw0IDQgNC00ek00IDE5djJoMTZ2LTJINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZlcnRpY2FsQWxpZ25DZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTloM3Y0aDJ2LTRoM2wtNC00LTQgNHptOC0xNGgtM1YxaC0ydjRIOGw0IDQgNC00ek00IDExdjJoMTZ2LTJINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZlcnRpY2FsQWxpZ25Ub3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTFoM3YxMGgyVjExaDNsLTQtNC00IDR6TTQgM3YyaDE2VjNINHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZlcnRpY2FsRGlzdHJpYnV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDJ2MkgyVjJoMjB6TTcgMTAuNXYzaDEwdi0zSDd6TTIgMjB2MmgyMHYtMkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV3JhcFRleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTloNnYtMkg0djJ6TTIwIDVINHYyaDE2VjV6bS0zIDZINHYyaDEzLjI1YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMkgxNXYtMmwtMyAzIDMgM3YtMmgyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXBwcm92YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE2djZoMTZ2LTZjMC0xLjEtLjktMi0yLTJINmMtMS4xIDAtMiAuOS0yIDJ6bTE0IDJINnYtMmgxMnYyek0xMiAyQzkuMjQgMiA3IDQuMjQgNyA3bDUgNyA1LTdjMC0yLjc2LTIuMjQtNS01LTV6bTAgOUw5IDdjMC0xLjY2IDEuMzQtMyAzLTNzMyAxLjM0IDMgM2wtMyA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXR0YWNoRW1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0zIDYgOCA1IDgtNXYzaDJWNGMwLTEuMS0uOS0yLTItMkgzYy0xLjEgMC0xLjk5LjktMS45OSAyTDEgMTZjMCAxLjEuOSAyIDIgMmgxMHYtMkgzVjZ6bTE2LTItOCA1LTgtNWgxNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTR2NGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJ2LTQuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVYxOGgydi00LjVhMi41IDIuNSAwIDAgMC01IDBWMThjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNHYtNGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF0dGFjaG1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgMTZIN2MtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNGgxMi41YTIuNSAyLjUgMCAwIDEgMCA1SDljLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFoOS41VjkuNUg5YTIuNSAyLjUgMCAwIDAgMCA1aDEwLjVjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTRIN2MtMy4wNCAwLTUuNSAyLjQ2LTUuNSA1LjVzMi40NiA1LjUgNS41IDUuNWgxMS41VjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xvdWRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em00LjI5LTkuODFhNC4zNzMgNC4zNzMgMCAwIDAtOC4xNy0xLjE2QTMuNDgzIDMuNDgzIDAgMCAwIDUgMTIuNUM1IDE0LjQzIDYuNTcgMTYgOC41IDE2aDcuNThjMS42MSAwIDIuOTItMS4zMSAyLjkyLTIuOTIgMC0xLjU0LTEuMi0yLjc5LTIuNzEtMi44OXpNMTYgMTRIOC41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNy42NyAxMSA4LjUgMTFoLjlsLjQ5LTEuMDVhMi4zNzcgMi4zNzcgMCAwIDEgNC40NC42M2wuMjggMS40MkgxNmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3VkRG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMzUgMTAuMDRBNy40OSA3LjQ5IDAgMCAwIDEyIDRDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNEE1Ljk5NCA1Ljk5NCAwIDAgMCAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xOSAxOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNCAwLTIuMDUgMS41My0zLjc2IDMuNTYtMy45N2wxLjA3LS4xMS41LS45NUE1LjQ2OSA1LjQ2OSAwIDAgMSAxMiA2YzIuNjIgMCA0Ljg4IDEuODYgNS4zOSA0LjQzbC4zIDEuNSAxLjUzLjExQTIuOTggMi45OCAwIDAgMSAyMiAxNWMwIDEuNjUtMS4zNSAzLTMgM3ptLTktMy44Mi0yLjA5LTIuMDlMNi41IDEzLjUgMTAgMTdsNi4wMS02LjAxLTEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3VkRG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDRBNS45OTQgNS45OTQgMCAwIDAgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTkgMThINmMtMi4yMSAwLTQtMS43OS00LTQgMC0yLjA1IDEuNTMtMy43NiAzLjU2LTMuOTdsMS4wNy0uMTEuNS0uOTVBNS40NjkgNS40NjkgMCAwIDEgMTIgNmMyLjYyIDAgNC44OCAxLjg2IDUuMzkgNC40M2wuMyAxLjUgMS41My4xMUEyLjk4IDIuOTggMCAwIDEgMjIgMTVjMCAxLjY1LTEuMzUgMy0zIDN6bS01LjU1LThoLTIuOXYzSDhsNCA0IDQtNGgtMi41NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3VkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCAxNWMwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NkE3LjQ5IDcuNDkgMCAwIDAgMTIgNGMtMS4zMyAwLTIuNTcuMzYtMy42NS45N2wxLjQ5IDEuNDlDMTAuNTEgNi4xNyAxMS4yMyA2IDEyIDZjMy4wNCAwIDUuNSAyLjQ2IDUuNSA1LjV2LjVIMTlhMi45OTYgMi45OTYgMCAwIDEgMS43OSA1LjRsMS40MSAxLjQxYzEuMDktLjkyIDEuOC0yLjI3IDEuOC0zLjgxek00LjQxIDMuODYgMyA1LjI3bDIuNzcgMi43N2gtLjQyQTUuOTk0IDUuOTk0IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTEuNzNsMiAyIDEuNDEtMS40MUw0LjQxIDMuODZ6TTYgMThjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTRoMS43M2w4IDhINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsb3VkUXVldWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjM1IDEwLjA0QTcuNDkgNy40OSAwIDAgMCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDRBNS45OTQgNS45OTQgMCAwIDAgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTkgMThINmMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNGguNzFDNy4zNyA3LjY5IDkuNDggNiAxMiA2YzMuMDQgMCA1LjUgMi40NiA1LjUgNS41di41SDE5YzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xvdWRTeW5jIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuNSAxNC45OGMtLjAyIDAtLjAzIDAtLjA1LjAxQTMuNDkgMy40OSAwIDAgMCAxOCAxMmMtMS40IDAtMi42LjgzLTMuMTYgMi4wMkEyLjk4OCAyLjk4OCAwIDAgMCAxMiAxN2MwIDEuNjYgMS4zNCAzIDMgM2w2LjUtLjAyYTIuNSAyLjUgMCAwIDAgMC01em0uMDEgMy4wMkgxNWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMWgxLjI1di0uMjVjMC0uOTcuNzgtMS43NSAxLjc1LTEuNzVzMS43NS43OCAxLjc1IDEuNzVWMTdoMS43NmMuMjggMCAuNS4yMi41LjUtLjAxLjI3LS4yMy41LS41LjV6TTEwIDQuMjZ2Mi4wOUM3LjY3IDcuMTggNiA5LjM5IDYgMTJjMCAxLjc3Ljc4IDMuMzQgMiA0LjQ0VjE0aDJ2Nkg0di0yaDIuNzNBNy45NDIgNy45NDIgMCAwIDEgNCAxMmMwLTMuNzMgMi41NS02Ljg1IDYtNy43NHpNMjAgNmgtMi43M2E3Ljk4IDcuOTggMCAwIDEgMi42NiA1aC0yLjAyYy0uMjMtMS4zNi0uOTMtMi41NS0xLjkxLTMuNDRWMTBoLTJWNGg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbG91ZFVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMzUgMTAuMDRBNy40OSA3LjQ5IDAgMCAwIDEyIDRDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNEE1Ljk5NCA1Ljk5NCAwIDAgMCAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xOSAxOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNCAwLTIuMDUgMS41My0zLjc2IDMuNTYtMy45N2wxLjA3LS4xMS41LS45NUE1LjQ2OSA1LjQ2OSAwIDAgMSAxMiA2YzIuNjIgMCA0Ljg4IDEuODYgNS4zOSA0LjQzbC4zIDEuNSAxLjUzLjExQTIuOTggMi45OCAwIDAgMSAyMiAxNWMwIDEuNjUtMS4zNSAzLTMgM3pNOCAxM2gyLjU1djNoMi45di0zSDE2bC00LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbG91ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMyLjYyIDAgNC44OCAxLjg2IDUuMzkgNC40M2wuMyAxLjUgMS41My4xMUEyLjk4IDIuOTggMCAwIDEgMjIgMTVjMCAxLjY1LTEuMzUgMy0zIDNINmMtMi4yMSAwLTQtMS43OS00LTQgMC0yLjA1IDEuNTMtMy43NiAzLjU2LTMuOTdsMS4wNy0uMTEuNS0uOTVBNS40NjkgNS40NjkgMCAwIDEgMTIgNm0wLTJDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNEE1Ljk5NCA1Ljk5NCAwIDAgMCAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2QTcuNDkgNy40OSAwIDAgMCAxMiA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3JlYXRlTmV3Rm9sZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0wIDEySDRWNmg1LjE3bDIgMkgyMHYxMHptLTgtNGgydjJoMnYtMmgydi0yaC0ydi0yaC0ydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaWZmZXJlbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMjNINGMtMS4xIDAtMi0uOS0yLTJWN2gydjE0aDE0djJ6TTE0LjUgN1Y1aC0ydjJoLTJ2MmgydjJoMlY5aDJWN2gtMnptMiA2aC02djJoNnYtMnpNMTUgMUg4Yy0xLjEgMC0xLjk5LjktMS45OSAyTDYgMTdjMCAxLjEuODkgMiAxLjk5IDJIMTljMS4xIDAgMi0uOSAyLTJWN2wtNi02em00IDE2SDhWM2g2LjE3TDE5IDcuODNWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb3dubG9hZERvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMThoMTR2Mkg1di0yem00LjYtMi43TDUgMTAuN2wyLTEuOSAyLjYgMi42TDE3IDRsMiAyLTkuNCA5LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb3dubG9hZEZvck9mZmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwIDEwLTQuNDkgMTAtMTBTMTcuNTEgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMi41OS0xMS40MUwxNiAxMGwtNCA0LTQtNCAxLjQxLTEuNDFMMTEgMTAuMTdWNmgydjQuMTdsMS41OS0xLjU4ek0xNyAxN0g3di0yaDEwdjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOWgtNFYzSDl2Nkg1bDcgNyA3LTd6bS04IDJWNWgydjZoMS4xN0wxMiAxMy4xNyA5LjgzIDExSDExem0tNiA3aDE0djJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvd25sb2FkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMzIgNC4yNkE5Ljk0OSA5Ljk0OSAwIDAgMCAxMyAyLjA1djIuMDJjMS40Ni4xOCAyLjc5Ljc2IDMuOSAxLjYybDEuNDItMS40M3pNMTkuOTMgMTFoMi4wMmMtLjItMi4wMS0xLTMuODQtMi4yMS01LjMyTDE4LjMxIDcuMWE3Ljk0MSA3Ljk0MSAwIDAgMSAxLjYyIDMuOXptLTEuNjIgNS45IDEuNDMgMS40M2E5Ljk4MSA5Ljk4MSAwIDAgMCAyLjIxLTUuMzJoLTIuMDJhNy45NDUgNy45NDUgMCAwIDEtMS42MiAzLjg5ek0xMyAxOS45M3YyLjAyYzIuMDEtLjIgMy44NC0xIDUuMzItMi4yMWwtMS40My0xLjQzYy0xLjEuODYtMi40MyAxLjQ0LTMuODkgMS42MnptMi41OS05LjM0TDEzIDEzLjE3VjdoLTJ2Ni4xN2wtMi41OS0yLjU5TDcgMTJsNSA1IDUtNS0xLjQxLTEuNDF6TTExIDE5LjkzdjIuMDJjLTUuMDUtLjUtOS00Ljc2LTktOS45NXMzLjk1LTkuNDUgOS05Ljk1djIuMDJDNy4wNSA0LjU2IDQgNy45MiA0IDEyczMuMDUgNy40NCA3IDcuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEcml2ZUZpbGVNb3ZlUnRsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjZoNS4xN2wyIDJIMjB2MTB6bS02LjU5LTIuNDFMMTIgMTdsLTQtNCA0LTQgMS40MSAxLjQxTDExLjgzIDEySDE2djJoLTQuMTdsMS41OCAxLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJpdmVGaWxlTW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTJINFY2aDUuMTdsMS40MSAxLjQxLjU5LjU5SDIwdjEwem0tNy44NC02SDh2Mmg0LjE2bC0xLjU5IDEuNTlMMTEuOTkgMTcgMTYgMTMuMDEgMTEuOTkgOWwtMS40MSAxLjQxTDEyLjE2IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJpdmVGaWxlUmVuYW1lT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1IDE2LTQgNGgxMHYtNHpNMTIuMDYgNy4xOSAzIDE2LjI1VjIwaDMuNzVsOS4wNi05LjA2LTMuNzUtMy43NXpNNS45MiAxOEg1di0uOTJsNy4wNi03LjA2LjkyLjkyTDUuOTIgMTh6TTE4LjcxIDguMDRhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0yLjM0LTIuMzRhMS4wMDEgMS4wMDEgMCAwIDAtMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURyaXZlRm9sZGVyVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTJINFY2aDUuMTdsMiAySDIwdjEwek05LjQxIDE0LjQyIDExIDEyLjg0VjE3aDJ2LTQuMTZsMS41OSAxLjU5TDE2IDEzLjAxIDEyLjAxIDkgOCAxMy4wMWwxLjQxIDEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWxlRG93bmxvYWREb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMTMgNS40MSAxOC43MiA0bC05LjE5IDkuMTktNC4yNS00LjI0LTEuNDEgMS40MSA1LjY2IDUuNjZ6TTUgMThoMTR2Mkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsZURvd25sb2FkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTUuMTdWMTVoMnYyLjE3bC0yLTJ6bS0yLjU5LTIuNThMMTcgMTFsLTEuNDEtMS40MUwxNCAxMS4xN2wxLjQxIDEuNDJ6TTEzIDEwLjE3VjRoLTJ2NC4xN2wyIDJ6bTguMTkgMTEuMDItMS43OC0xLjc4LTE2LjYtMTYuNi0xLjQyIDEuNDEgNi4xOSA2LjE5TDcgMTFsNSA1IC41OS0uNTlMMTUuMTcgMThINnYtM0g0djNjMCAxLjEuOSAyIDIgMmgxMS4xN2wyLjYxIDIuNjEgMS40MS0xLjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsZURvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTV2M0g2di0zSDR2M2MwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi0zaC0yem0tMS00LTEuNDEtMS40MUwxMyAxMi4xN1Y0aC0ydjguMTdMOC40MSA5LjU5IDcgMTFsNSA1IDUtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbGVPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMjJINmMtMS4xIDAtMi0uOS0yLTJWNGMwLTEuMS45LTIgMi0yaDhsNiA2djZoLTJWOWgtNVY0SDZ2MTZoOXYyem00LS4zNHYtMi4yNGwyLjk1IDIuOTUgMS40MS0xLjQxTDIwLjQxIDE4aDIuMjR2LTJIMTd2NS42NmgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsZVVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE1djNINnYtM0g0djNjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMnYtM2gtMnpNNyA5bDEuNDEgMS40MUwxMSA3LjgzVjE2aDJWNy44M2wyLjU5IDIuNThMMTcgOWwtNS01LTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvbGRlckNvcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE5aDE3djJIM2MtMS4xIDAtMi0uOS0yLTJWNmgydjEzek0yMyA2djljMCAxLjEtLjkgMi0yIDJIN2MtMS4xIDAtMi0uOS0yLTJsLjAxLTExYzAtMS4xLjg5LTIgMS45OS0yaDVsMiAyaDdjMS4xIDAgMiAuOSAyIDJ6TTcgMTVoMTRWNmgtNy44M2wtMi0ySDd2MTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb2xkZXJEZWxldGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41IDEwVjloLTJ2MUgxMnYxLjVoMXY0YzAgLjgzLjY3IDEuNSAxLjUgMS41aDJjLjgzIDAgMS41LS42NyAxLjUtMS41di00aDFWMTBoLTIuNXptMCA1LjVoLTJ2LTRoMnY0ek0yMCA2aC04bC0yLTJINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0wIDEySDRWNmg1LjE3bDIgMkgyMHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvbGRlck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg3LjE3bDQgNEgyMHY5LjE3bDEuNzYgMS43NmMuMTUtLjI4LjI0LS41OS4yNC0uOTNWOGMwLTEuMS0uOS0yLTItMnpNMi4xIDIuMS42OSAzLjUxbDEuNTYgMS41NmMtLjE1LjI4LS4yNC41OS0uMjQuOTNMMiAxOGMwIDEuMS45IDIgMiAyaDEzLjE3bDMuMzEgMy4zMSAxLjQxLTEuNDFMMi4xIDIuMXpNNCAxOFY2LjgzTDE1LjE3IDE4SDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb2xkZXJPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjhoMTZ2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb2xkZXJTaGFyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0wIDEySDRWNmg1LjE3bDIgMkgyMHYxMHptLTUtNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bS00IDRoOHYtMWMwLTEuMzMtMi42Ny0yLTQtMnMtNCAuNjctNCAydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb2xkZXJaaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTQgMTBoMnYtMmgtMnYtMmgydi0yaC0yVjhoNHYxMGgtNHYtMnptMCAwaC0ydjJINFY2aDUuMTdsMiAySDE0djJoMnYyaC0ydjJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9sZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05LjE3IDYgMiAySDIwdjEwSDRWNmg1LjE3TTEwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMmgtOGwtMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ybWF0T3ZlcmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzdjJINVYzaDE0em0tNyA0Yy0zLjg3IDAtNyAzLjEzLTcgN3MzLjEzIDcgNyA3IDctMy4xMyA3LTctMy4xMy03LTctN3ptMCAxMS41Yy0yLjQ5IDAtNC41LTIuMDEtNC41LTQuNVM5LjUxIDkuNSAxMiA5LjVzNC41IDIuMDEgNC41IDQuNS0yLjAxIDQuNS00LjUgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JpZFZpZXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDN2OGg4VjNIM3ptNiA2SDVWNWg0djR6bS02IDR2OGg4di04SDN6bTYgNkg1di00aDR2NHptNC0xNnY4aDhWM2gtOHptNiA2aC00VjVoNHY0em0tNiA0djhoOHYtOGgtOHptNiA2aC00di00aDR2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5ld3NwYXBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDMtMS42NyAxLjY3TDE4LjY3IDMgMTcgNC42NyAxNS4zMyAzbC0xLjY2IDEuNjdMMTIgM2wtMS42NyAxLjY3TDguNjcgMyA3IDQuNjcgNS4zMyAzIDMuNjcgNC42NyAyIDN2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlYzek0xMSAxOUg0di02aDd2NnptOSAwaC03di0yaDd2MnptMC00aC03di0yaDd2MnptMC00SDRWOGgxNnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVxdWVzdFF1b3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjhsLTYtNnpNNiAyMFY0aDd2NGg1djEySDZ6bTUtMWgydi0xaDFjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMWgtM3YtMWg0di0yaC0yVjloLTJ2MWgtMWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoM3YxSDl2MmgydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSdWxlRm9sZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy44MyAxNiA1IDEzLjE3bDEuNDEtMS40MSAxLjQxIDEuNDEgMy41NC0zLjU0IDEuNDEgMS40MUw3LjgzIDE2em05LjU4LTNMMTkgMTQuNTkgMTcuNTkgMTYgMTYgMTQuNDEgMTQuNDEgMTYgMTMgMTQuNTkgMTQuNTkgMTMgMTMgMTEuNDEgMTQuNDEgMTAgMTYgMTEuNTkgMTcuNTkgMTAgMTkgMTEuNDEgMTcuNDEgMTN6TTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0wIDEySDRWNmg1LjE3bDIgMkgyMHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNuaXBwZXRGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjZoNS4xN2wyIDJIMjB2MTB6bS0yLjUtNS44OHYzLjM4aC0zdi01aDEuMzhsMS42MiAxLjYyek0xMyA5djhoNnYtNS41TDE2LjUgOUgxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRleHRTbmlwcGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuMTcgNSAxOSA5LjgzVjE5SDVWNWg5LjE3bTAtMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjkuODNjMC0uNTMtLjIxLTEuMDQtLjU5LTEuNDFsLTQuODMtNC44M2MtLjM3LS4zOC0uODgtLjU5LTEuNDEtLjU5ek03IDE1aDEwdjJIN3YtMnptMC00aDEwdjJIN3YtMnptMC00aDd2Mkg3Vjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUb3BpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNi43N2MuNjggMCAxLjIzLS41NiAxLjIzLTEuMjNWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjZoNS4xN2wyIDJIMjB2MTB6bS0yLTZINnYtMmgxMnYyem0tNCA0SDZ2LTJoOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVXBsb2FkRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptNCAxOEg2VjRoN3Y1aDV2MTF6TTggMTUuMDFsMS40MSAxLjQxTDExIDE0Ljg0VjE5aDJ2LTQuMTZsMS41OSAxLjU5TDE2IDE1LjAxIDEyLjAxIDExIDggMTUuMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVcGxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTZoNnYtNmg0bC03LTctNyA3aDR2NnptMy0xMC4xN0wxNC4xNyA4SDEzdjZoLTJWOEg5LjgzTDEyIDUuODN6TTUgMThoMTR2Mkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV29ya3NwYWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTVjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAtMmMtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00em02LThjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAtMkM5LjggMyA4IDQuOCA4IDdzMS44IDQgNCA0IDQtMS44IDQtNC0xLjgtNC00LTR6bTYgMTJjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0ybTAtMmMtMi4yIDAtNCAxLjgtNCA0czEuOCA0IDQgNCA0LTEuOCA0LTQtMS44LTQtNC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRmU2Nhbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEyaC0xVjRINnY4SDVjLTEuNjYgMC0zIDEuMzQtMyAzdjVoMjB2LTVjMC0xLjY2LTEuMzQtMy0zLTN6TTggNmg4djZIOFY2em0xMiAxMkg0di0zYzAtLjU1LjQ1LTEgMS0xaDE0Yy41NSAwIDEgLjQ1IDEgMXYzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiMTZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyb3dzZXJOb3RTdXBwb3J0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA2djEwLjVsMS45NSAxLjk1Yy4wMy0uMTUuMDUtLjMuMDUtLjQ1VjZjMC0xLjEtLjktMi0yLTJINi41bDIgMkgxOXpNMy4yMiAzLjMyIDEuOTUgNC41OSAzIDUuNjRWMThjMCAxLjEuOSAyIDIgMmgxMi4zNmwyLjA2IDIuMDYgMS4yNy0xLjI3TDMuMjIgMy4zMnpNMTUgMThINVY3LjY0TDE1LjM2IDE4SDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJvd3NlclVwZGF0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxM3YzYzAgMS4xLS45IDItMiAyaC0zbDEgMXYySDZ2LTJsMS0xSDRjLTEuMSAwLTItLjktMi0yVjVjMC0xLjEuOS0yIDItMmg4djJINHYxMWgxNnYtM2gyem0tNyAyLTUtNSAxLjQxLTEuNDFMMTQgMTEuMTdWM2gydjguMTdsMi41OS0yLjU4TDIwIDEwbC01IDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYXN0Q29ubmVjdGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDE4djNoM2MwLTEuNjYtMS4zNC0zLTMtM3ptMC00djJjMi43NiAwIDUgMi4yNCA1IDVoMmMwLTMuODctMy4xMy03LTctN3ptMC00djJhOSA5IDAgMCAxIDkgOWgyYzAtNi4wOC00LjkzLTExLTExLTExem0yMC03SDNjLTEuMSAwLTIgLjktMiAydjNoMlY1aDE4djE0aC03djJoN2MxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek01IDd2MmgxMnY2aC0zdjJoNVY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FzdEZvckVkdWNhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYzaDJWNWgxOHYxNGgtN3YyaDdjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNMSAxOHYzaDNjMC0xLjY2LTEuMzQtMy0zLTN6bTAtNHYyYzIuNzYgMCA1IDIuMjQgNSA1aDJjMC0zLjg3LTMuMTMtNy03LTd6bTAtNHYyYTkgOSAwIDAgMSA5IDloMmMwLTYuMDgtNC45My0xMS0xMS0xMXptMTAgMS4wOXYyTDE0LjUgMTVsMy41LTEuOTF2LTJMMTQuNSAxMyAxMSAxMS4wOXpNMTQuNSA2IDkgOWw1LjUgM0wyMCA5bC01LjUtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2M2gyVjVoMTh2MTRoLTd2Mmg3YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTEgMTh2M2gzYzAtMS42Ni0xLjM0LTMtMy0zem0wLTR2MmMyLjc2IDAgNSAyLjI0IDUgNWgyYzAtMy44Ny0zLjEzLTctNy03em0wLTR2MmE5IDkgMCAwIDEgOSA5aDJjMC02LjA4LTQuOTMtMTEtMTEtMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb21wdXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMThjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjIgNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAySDB2MmgyNHYtMmgtNHpNNCA2aDE2djEwSDRWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbm5lY3RlZFR2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDR2Mmg4di0yaDRjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjIgNWMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjVoMTZ2MTJ6TTUgMTR2MmgyYzAtMS4xMS0uODktMi0yLTJ6bTAtM3YxLjQzYzEuOTcgMCAzLjU3IDEuNiAzLjU3IDMuNTdIMTBjMC0yLjc2LTIuMjQtNS01LTV6bTAtM3YxLjQ1YzMuNjEgMCA2LjU1IDIuOTMgNi41NSA2LjU1SDEzYzAtNC40Mi0zLjU5LTgtOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVza3RvcE1hYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMkgzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDdsLTIgM3YxaDh2LTFsLTItM2g3YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTJIM1Y0aDE4djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVza3RvcFdpbmRvd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDJIM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg3djJIOHYyaDh2LTJoLTJ2LTJoN2MxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDNWNGgxOHYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURldmVsb3BlckJvYXJkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy44MyA1SDE4djEwLjE3TDE5LjgzIDE3SDIydi0yaC0ydi0yaDJ2LTJoLTJWOWgyVjdoLTJWNWMwLTEuMS0uOS0yLTItMkg1LjgzbDIgMnpNMTIgOS4xN1Y3aDR2M2gtMy4xN0wxMiA5LjE3ek05LjgzIDdIMTF2MS4xN0w5LjgzIDd6bTQgNEgxNnYyLjE3TDEzLjgzIDExek0xOCAyMWMuMDYgMCAuMTEgMCAuMTYtLjAxbDIuMzIgMi4zMiAxLjQxLTEuNDFMMi4xIDIuMS42OSAzLjUxbDEuMzIgMS4zMkMyIDQuODkgMiA0Ljk0IDIgNXYxNGMwIDEuMS45IDIgMiAyaDE0ek00IDE5VjYuODNsMiAyVjEyaDMuMTdsMSAxSDZ2NGg1di0zLjE3bDEgMVYxN2gyLjE3bDIgMkg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGV2ZWxvcGVyQm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDlWN2gtMlY1YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTJoMnYtMmgtMnYtMmgydi0yaC0yVjloMnptLTQgMTBINFY1aDE0djE0ek02IDEzaDV2NEg2di00em02LTZoNHYzaC00Vjd6TTYgN2g1djVINlY3em02IDRoNHY2aC00di02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGV2aWNlSHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNyAxNi00LTRWOC44MkMxNC4xNiA4LjQgMTUgNy4zIDE1IDZjMC0xLjY2LTEuMzQtMy0zLTNTOSA0LjM0IDkgNmMwIDEuMy44NCAyLjQgMiAyLjgyVjEybC00IDRIM3Y1aDV2LTMuMDVsNC00LjIgNCA0LjJWMjFoNXYtNWgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURldmljZVVua25vd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDFIN2MtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE4SDdWNWgxMHYxNHpNMTIgNi43MmMtMS45NiAwLTMuNSAxLjUyLTMuNSAzLjQ3aDEuNzVjMC0uOTMuODItMS43NSAxLjc1LTEuNzVzMS43NS44MiAxLjc1IDEuNzVjMCAxLjc1LTIuNjMgMS41Ny0yLjYzIDQuNDVoMS43NmMwLTEuOTYgMi42Mi0yLjE5IDIuNjItNC40NSAwLTEuOTYtMS41NC0zLjQ3LTMuNS0zLjQ3ek0xMSAxNmgydjJoLTJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXZpY2VzT3RoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNmgxOFY0SDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoNHYtMkgzVjZ6bTEwIDZIOXYxLjc4Yy0uNjEuNTUtMSAxLjMzLTEgMi4yMiAwIC44OS4zOSAxLjY3IDEgMi4yMlYyMGg0di0xLjc4Yy42MS0uNTUgMS0xLjM0IDEtMi4yMnMtLjM5LTEuNjctMS0yLjIyVjEyem0tMiA1LjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41ek0yMiA4aC02Yy0uNSAwLTEgLjUtMSAxdjEwYzAgLjUuNSAxIDEgMWg2Yy41IDAgMS0uNSAxLTFWOWMwLS41LS41LTEtMS0xem0tMSAxMGgtNHYtOGg0djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDIzaDh2LTJIOHYyem04LTIxLjk5TDggMWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE2IDE1SDhWNWg4djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWFyYnVkc0JhdHRlcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA3aC0xVjZoLTJ2MWgtMWMtLjU1IDAtMSAuNDUtMSAxdjljMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTFWOGMwLS41NS0uNDUtMS0xLTF6bS0xIDloLTJWOWgydjd6bS02LTYuNjJDMTQgNy41MSAxMi40OSA2IDEwLjYyIDZTNy4yNSA3LjUxIDcuMjUgOS4zOHY1LjI1YzAgMS4wNC0uODQgMS44OC0xLjg4IDEuODhzLTEuODctLjg1LTEuODctMS44OXYtNC43Yy4xNi4wNS4zMy4wOC41LjA4IDEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMnY2LjYyQzIgMTYuNDkgMy41MSAxOCA1LjM4IDE4czMuMzgtMS41MSAzLjM4LTMuMzhWOS4zOGMwLTEuMDQuODQtMS44OCAxLjg4LTEuODhzMS44OC44NCAxLjg4IDEuODh2NC43Yy0uMTgtLjA1LS4zNS0uMDgtLjUyLS4wOC0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMlY5LjM4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWFyYnVkcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDNjLTIuNzYgMC01IDIuMjQtNSA1djhjMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTNWOWguODNDNy40NCA5IDguODkgNy44MiA5IDYuMjFBMyAzIDAgMCAwIDYuMiAzQzQuNDQgMi44OSAzIDQuNDIgMyA2LjE5VjE2YzAgMi43NiAyLjI0IDUgNSA1czUtMi4yNCA1LTVWOGMwLTEuNjYgMS4zNC0zIDMtM3MzIDEuMzQgMyAzdjdoLS44M2MtMS42MSAwLTMuMDYgMS4xOC0zLjE3IDIuNzlBMyAzIDAgMCAwIDE3LjggMjFjMS43Ni4xMiAzLjItMS40MiAzLjItMy4xOFY4YzAtMi43Ni0yLjI0LTUtNS01ek01IDZjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxLS40NSAxLTEgMUg1VjZ6bTE0IDEyYzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xIC40NS0xIDEtMWgxdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHYW1lcGFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA0djIuNjdsLTEgMS0xLTFWNGgybTcgN3YyaC0yLjY3bC0xLTEgMS0xSDIwTTYuNjcgMTFsMSAxLTEgMUg0di0yaDIuNjdNMTIgMTYuMzNsMSAxVjIwaC0ydi0yLjY3bDEtMU0xNSAySDl2NS41bDMgMyAzLTNWMnptNyA3aC01LjVsLTMgMyAzIDNIMjJWOXpNNy41IDlIMnY2aDUuNWwzLTMtMy0zem00LjUgNC41LTMgM1YyMmg2di01LjVsLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhlYWRwaG9uZXNCYXR0ZXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgN2gtMVY2aC0ydjFoLTFjLS41NSAwLTEgLjQ1LTEgMXY5YzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xVjhjMC0uNTUtLjQ1LTEtMS0xem0tMSA5aC0yVjloMnY3ek04IDZjLTMuMzEgMC02IDIuNjktNiA2djRjMCAxLjEuOSAyIDIgMmgydi01SDMuNXYtMWMwLTIuNDggMi4wMi00LjUgNC41LTQuNXM0LjUgMi4wMiA0LjUgNC41djFIMTB2NWgyYzEuMSAwIDItLjkgMi0ydi00YzAtMy4zMS0yLjY5LTYtNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGVhZHBob25lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNhOSA5IDAgMCAwLTkgOXY3YzAgMS4xLjkgMiAyIDJoNHYtOEg1di0xYzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDd2MWgtNHY4aDRjMS4xIDAgMi0uOSAyLTJ2LTdhOSA5IDAgMCAwLTktOXpNNyAxNXY0SDV2LTRoMnptMTIgNGgtMnYtNGgydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWFkc2V0TWljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxNHY0aC0ydi00aDJNNyAxNHY0SDZjLS41NSAwLTEtLjQ1LTEtMXYtM2gybTUtMTNhOSA5IDAgMCAwLTkgOXY3YzAgMS42NiAxLjM0IDMgMyAzaDN2LThINXYtMmMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3djJoLTR2OGg0djFoLTd2Mmg2YzEuNjYgMCAzLTEuMzQgMy0zVjEwYTkgOSAwIDAgMC05LTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWFkc2V0T2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGMzLjg3IDAgNyAzLjEzIDcgN3YxaC00di4xN0wxNi44MyAxNEgxOXYyLjE3bDIgMlYxMWE5IDkgMCAwIDAtOS05Yy0yLjAyIDAtMy44OC42Ny01LjM4IDEuOGwxLjQzIDEuNDNBNi44NzggNi44NzggMCAwIDEgMTIgNHpNMi4xIDIuMS42OSAzLjUxbDMuMzMgMy4zM0E4Ljk4IDguOTggMCAwIDAgMyAxMXY3YzAgMS4xLjkgMiAyIDJoNHYtOEg1di0xYzAtLjk0LjE5LTEuODMuNTItMi42NUwxNSAxNy44M1YyMGgyLjE3bDEgMUgxMnYyaDdjLjM0IDAgLjY1LS4wOS45My0uMjRsLjU1LjU1IDEuNDEtMS40MUwyLjEgMi4xek03IDE0djRINXYtNGgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGVhZHNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTR2M2MwIC41NS0uNDUgMS0xIDFoLTF2LTRoMk03IDE0djRINmMtLjU1IDAtMS0uNDUtMS0xdi0zaDJtNS0xM2E5IDkgMCAwIDAtOSA5djdjMCAxLjY2IDEuMzQgMyAzIDNoM3YtOEg1di0yYzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDd2MmgtNHY4aDNjMS42NiAwIDMtMS4zNCAzLTN2LTdhOSA5IDAgMCAwLTktOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvbWVNYXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1SDVDMi43OSA1IDEgNi43OSAxIDl2NWMwIDIuMjEgMS43OSA0IDQgNGgydjFoMTB2LTFoMmMyLjIxIDAgNC0xLjc5IDQtNFY5YzAtMi4yMS0xLjc5LTQtNC00em0yIDljMCAxLjEtLjkgMi0yIDJINWMtMS4xIDAtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yaDE0YzEuMSAwIDIgLjkgMiAydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb21lTWluaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVDNC4xOSA1IDIgOS40OCAyIDEyYzAgMy44NiAzLjEzIDcgNi45OSA3aDYuMDJDMTcuNyAxOSAyMiAxNi45MiAyMiAxMmMwIDAgMC03LTEwLTd6bTAgMmM3LjY0IDAgNy45OSA0LjUxIDggNUg0YzAtLjIuMDktNSA4LTV6bTIuODYgMTBIOS4xNGMtMi4xIDAtMy45Mi0xLjI0LTQuNzEtM2gxNS4xNWMtLjggMS43Ni0yLjYyIDMtNC43MiAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2V5Ym9hcmRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEzYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNUgzVjZoMTh2MTN6TTkgOGgydjJIOVY4ek01IDhoMnYySDVWOHptMyA4aDh2MUg4di0xem01LThoMnYyaC0yVjh6bS00IDRoMnYySDl2LTJ6bS00IDBoMnYySDV2LTJ6bTggMGgydjJoLTJ2LTJ6bTQtNGgydjJoLTJWOHptMCA0aDJ2MmgtMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjQxIDguNTkgMTIgMTMuMTdsNC41OS00LjU4TDE4IDEwbC02IDYtNi02IDEuNDEtMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkQXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS40MSAxNi41OSAxMC44MyAxMmw0LjU4LTQuNTlMMTQgNmwtNiA2IDYgNiAxLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZEFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNTkgMTYuNTkgMTMuMTcgMTIgOC41OSA3LjQxIDEwIDZsNiA2LTYgNi0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZEFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNDEgMTUuNDEgMTIgMTAuODNsNC41OSA0LjU4TDE4IDE0bC02LTYtNiA2IDEuNDEgMS40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkQmFja3NwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMUg2LjgzbDMuNTgtMy41OUw5IDZsLTYgNiA2IDYgMS40MS0xLjQxTDYuODMgMTNIMjF2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZENhcHNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4LjQxIDE2LjU5IDEzIDE4IDExLjU5bC02LTYtNiA2TDcuNDEgMTMgMTIgOC40MXpNNiAxOGgxMnYtMkg2djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZENvbW1hbmRLZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDNDMTUuNTcgMyAxNCA0LjU3IDE0IDYuNVY4aC00VjYuNUMxMCA0LjU3IDguNDMgMyA2LjUgM1MzIDQuNTcgMyA2LjUgNC41NyAxMCA2LjUgMTBIOHY0SDYuNUM0LjU3IDE0IDMgMTUuNTcgMyAxNy41UzQuNTcgMjEgNi41IDIxczMuNS0xLjU3IDMuNS0zLjVWMTZoNHYxLjVjMCAxLjkzIDEuNTcgMy41IDMuNSAzLjVzMy41LTEuNTcgMy41LTMuNS0xLjU3LTMuNS0zLjUtMy41SDE2di00aDEuNWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMxOS40MyAzIDE3LjUgM3pNMTYgOFY2LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVTMTguMzMgOCAxNy41IDhIMTZ6TTYuNSA4QzUuNjcgOCA1IDcuMzMgNSA2LjVTNS42NyA1IDYuNSA1IDggNS42NyA4IDYuNVY4SDYuNXptMy41IDZ2LTRoNHY0aC00em03LjUgNWMtLjgzIDAtMS41LS42Ny0xLjUtMS41VjE2aDEuNWMuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41em0tMTEgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgMTYgNi41IDE2SDh2MS41YzAgLjgzLS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkQ29udHJvbEtleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTUgMTIgMS40MSAxLjQxTDEyIDcuODNsNS41OSA1LjU4TDE5IDEybC03LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZERvdWJsZUFycm93RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDYuNDEgMTYuNTkgNSAxMiA5LjU4IDcuNDEgNSA2IDYuNDFsNiA2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCAxMy0xLjQxLTEuNDFMMTIgMTYuMTdsLTQuNTktNC41OEw2IDEzbDYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkRG91YmxlQXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNTkgMTggMTkgMTYuNTkgMTQuNDIgMTIgMTkgNy40MSAxNy41OSA2bC02IDZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExIDE4IDEuNDEtMS40MUw3LjgzIDEybDQuNTgtNC41OUwxMSA2bC02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZERvdWJsZUFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjQxIDYgNSA3LjQxIDkuNTggMTIgNSAxNi41OSA2LjQxIDE4bDYtNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgNi0xLjQxIDEuNDFMMTYuMTcgMTJsLTQuNTggNC41OUwxMyAxOGw2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLZXlib2FyZERvdWJsZUFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE3LjU5IDcuNDEgMTkgMTIgMTQuNDIgMTYuNTkgMTkgMTggMTcuNTlsLTYtNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNiAxMSAxLjQxIDEuNDFMMTIgNy44M2w0LjU5IDQuNThMMTggMTFsLTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkSGlkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMTVjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDEySDRWNWgxNnYxMHptLTktOWgydjJoLTJ6bTAgM2gydjJoLTJ6TTggNmgydjJIOHptMCAzaDJ2Mkg4ek01IDloMnYySDV6bTAtM2gydjJINXptMyA2aDh2Mkg4em02LTNoMnYyaC0yem0wLTNoMnYyaC0yem0zIDNoMnYyaC0yem0wLTNoMnYyaC0yem0tNSAxNyA0LTRIOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkT3B0aW9uS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgNWg2djJoLTZ6TTkgNUgzdjJoNC44NWw2LjkyIDEySDIxdi0yaC01LjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2V5Ym9hcmRSZXR1cm4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDd2NEg1LjgzbDMuNTgtMy41OUw4IDZsLTYgNiA2IDYgMS40MS0xLjQxTDUuODMgMTNIMjFWN2gtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkVGFiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41OSA3LjQxIDE1LjE3IDExSDF2MmgxNC4xN2wtMy41OSAzLjU5TDEzIDE4bDYtNi02LTYtMS40MSAxLjQxek0yMCA2djEyaDJWNmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtleWJvYXJkVm9pY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE1YzEuNjYgMCAyLjk5LTEuMzQgMi45OS0zTDE1IDZjMC0xLjY2LTEuMzQtMy0zLTNTOSA0LjM0IDkgNnY2YzAgMS42NiAxLjM0IDMgMyAzem0tMS4yLTkuMWMwLS42Ni41NC0xLjIgMS4yLTEuMnMxLjIuNTQgMS4yIDEuMmwtLjAxIDYuMmMwIC42Ni0uNTMgMS4yLTEuMTkgMS4ycy0xLjItLjU0LTEuMi0xLjJWNS45em02LjUgNi4xYzAgMy0yLjU0IDUuMS01LjMgNS4xUzYuNyAxNSA2LjcgMTJINWMwIDMuNDEgMi43MiA2LjIzIDYgNi43MlYyMmgydi0zLjI4YzMuMjgtLjQ4IDYtMy4zIDYtNi43MmgtMS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2V5Ym9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDd2MTBINFY3aDE2bTAtMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMTdjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tOSAzaDJ2MmgtMnptMCAzaDJ2MmgtMnpNOCA4aDJ2Mkg4em0wIDNoMnYySDh6bS0zIDBoMnYySDV6bTAtM2gydjJINXptMyA2aDh2Mkg4em02LTNoMnYyaC0yem0wLTNoMnYyaC0yem0zIDNoMnYyaC0yem0wLTNoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGFwdG9wQ2hyb21lYm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMThWM0gydjE1SDB2MmgyNHYtMmgtMnptLTggMGgtNHYtMWg0djF6bTYtM0g0VjVoMTZ2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMYXB0b3BNYWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4YzEuMSAwIDEuOTktLjkgMS45OS0yTDIyIDVjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMkgwYzAgMS4xLjkgMiAyIDJoMjBjMS4xIDAgMi0uOSAyLTJoLTR6TTQgNWgxNnYxMUg0VjV6bTggMTRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxhcHRvcFdpbmRvd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4di0xYzEuMSAwIDEuOTktLjkgMS45OS0yTDIyIDVjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMnYxSDB2MmgyNHYtMmgtNHpNNCA1aDE2djEwSDRWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxhcHRvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE4YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMkgwdjJoMjR2LTJoLTR6TTQgNmgxNnYxMEg0VjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZW1vcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDlIOXY2aDZWOXptLTIgNGgtMnYtMmgydjJ6bTgtMlY5aC0yVjdjMC0xLjEtLjktMi0yLTJoLTJWM2gtMnYyaC0yVjNIOXYySDdjLTEuMSAwLTIgLjktMiAydjJIM3YyaDJ2MkgzdjJoMnYyYzAgMS4xLjkgMiAyIDJoMnYyaDJ2LTJoMnYyaDJ2LTJoMmMxLjEgMCAyLS45IDItMnYtMmgydi0yaC0ydi0yaDJ6bS00IDZIN1Y3aDEwdjEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9uaXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMmgzbC0xIDF2MmgxMnYtMmwtMS0xaDNjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxM0g0VjVoMTZ2MTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb3VzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOWMtLjA0LTQuMzktMy42LTcuOTMtOC03LjkzUzQuMDQgNC42MSA0IDl2NmMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04Vjl6bS0yIDBoLTVWMy4xNmMyLjgxLjQ3IDQuOTYgMi45IDUgNS44NHptLTctNS44NFY5SDZhNi4wMDUgNi4wMDUgMCAwIDEgNS01Ljg0ek0xOCAxNWMwIDMuMzEtMi42OSA2LTYgNnMtNi0yLjY5LTYtNnYtNGgxMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmVBbmRyb2lkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxSDhDNi4zNCAxIDUgMi4zNCA1IDR2MTZjMCAxLjY2IDEuMzQgMyAzIDNoOGMxLjY2IDAgMy0xLjM0IDMtM1Y0YzAtMS42Ni0xLjM0LTMtMy0zem0xIDE3SDdWNGgxMHYxNHptLTMgM2gtNHYtMWg0djF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZUlwaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxaC04QTIuNSAyLjUgMCAwIDAgNSAzLjV2MTdBMi41IDIuNSAwIDAgMCA3LjUgMjNoOGEyLjUgMi41IDAgMCAwIDIuNS0yLjV2LTE3QTIuNSAyLjUgMCAwIDAgMTUuNSAxem0tNCAyMWMtLjgzIDAtMS41LS42Ny0xLjUtMS41cy42Ny0xLjUgMS41LTEuNSAxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6bTQuNS00SDdWNGg5djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmVsaW5rT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA2VjRINy4zOWwyIDJ6bTIgMTNWOWMwLS41NS0uNDUtMS0xLTFoLTZjLS41NSAwLTEgLjQ1LTEgMXYzLjYxbDIgMlYxMGg0djdoLTEuNjFsMi45MyAyLjkzYy4zOS0uMTMuNjgtLjQ5LjY4LS45M3pNMi4wNiAxLjUxLjY1IDIuOTJsMS44MiAxLjgyQzIuMTggNS4wOCAyIDUuNTIgMiA2djExSDB2M2gxNy43M2wyLjM1IDIuMzUgMS40MS0xLjQxTDIuMDYgMS41MXpNNCAxN1Y2LjI3TDE0LjczIDE3SDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZWxpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNmgxOFY0SDRjLTEuMSAwLTIgLjktMiAydjExSDB2M2gxNHYtM0g0VjZ6bTE5IDJoLTZjLS41NSAwLTEgLjQ1LTEgMXYxMGMwIC41NS40NSAxIDEgMWg2Yy41NSAwIDEtLjQ1IDEtMVY5YzAtLjU1LS40NS0xLTEtMXptLTEgOWgtNHYtN2g0djd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb2ludE9mU2FsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDJIN2MtMS4xIDAtMiAuOS0yIDJ2MmMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgNEg3VjRoMTB2MnptMyAxNkg0Yy0xLjEgMC0yLS45LTItMnYtMWgyMHYxYzAgMS4xLS45IDItMiAyem0tMS40Ny0xMS44MUEyLjAwOCAyLjAwOCAwIDAgMCAxNi43IDlINy4zYy0uNzkgMC0xLjUxLjQ3LTEuODMgMS4xOUwyIDE4aDIwbC0zLjQ3LTcuODF6TTkuNSAxNmgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMC0yaC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6bTMgNGgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMC0yaC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6bTMgNGgtMWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41em0wLTJoLTFjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgxYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNXptMC0yaC0xYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb3dlcklucHV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDl2MmgxOVY5SDJ6bTAgNmg1di0ySDJ2MnptNyAwaDV2LTJIOXYyem03IDBoNXYtMmgtNXYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUm91dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA0LjJjMS41IDAgMyAuNiA0LjIgMS43bC44LS44QzE5LjYgMy43IDE3LjggMyAxNiAzcy0zLjYuNy01IDIuMWwuOC44QzEzIDQuOCAxNC41IDQuMiAxNiA0LjJ6bS0zLjMgMi41LjguOGMuNy0uNyAxLjYtMSAyLjUtMXMxLjguMyAyLjUgMWwuOC0uOGMtLjktLjktMi4xLTEuNC0zLjMtMS40cy0yLjQuNS0zLjMgMS40ek0xOSAxM2gtMlY5aC0ydjRINWMtMS4xIDAtMiAuOS0yIDJ2NGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi00YzAtMS4xLS45LTItMi0yem0wIDZINXYtNGgxNHY0ek02IDE2aDJ2Mkg2em0zLjUgMGgydjJoLTJ6bTMuNSAwaDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNjYW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjggMTAuNyA0LjIgNWwtLjcgMS45TDE3LjYgMTJINWMtMS4xIDAtMiAuOS0yIDJ2NGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi01LjVjMC0uOC0uNS0xLjYtMS4yLTEuOHpNMTkgMThINXYtNGgxNHY0ek02IDE1aDJ2Mkg2em00IDBoOHYyaC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VjdXJpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEgMyA1djZjMCA1LjU1IDMuODQgMTAuNzQgOSAxMiA1LjE2LTEuMjYgOS02LjQ1IDktMTJWNWwtOS00em0wIDEwLjk5aDdjLS41MyA0LjEyLTMuMjggNy43OS03IDguOTRWMTJINVY2LjNsNy0zLjExdjguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpbUNhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJoLThMNCA4djEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAydjE2SDZWOC44M0wxMC44MyA0SDE4ek03IDE3aDJ2Mkg3em04IDBoMnYyaC0yem0tOC02aDJ2NEg3em00IDRoMnY0aC0yem0wLTRoMnYyaC0yem00IDBoMnY0aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU21hcnREaXNwbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDcuNXY5bDctNC41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNC4wMUg0VjUuOTloMTZ2MTIuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbWFydFNjcmVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgMTEuMjVIMTR2MS41aC0xLjV6TTE1IDExLjI1aDEuNXYxLjVIMTV6TTEwIDExLjI1aDEuNXYxLjVIMTB6TTcuNSAxMS4yNUg5djEuNUg3LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVIM2MtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yek00IDE3SDNWN2gxdjEwem0xNCAwSDZWN2gxMnYxMHptMyAwaC0xVjdoMXYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNtYXJ0VG95IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOVY3YzAtMS4xLS45LTItMi0yaC0zYzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDVINmMtMS4xIDAtMiAuOS0yIDJ2MmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgM3Y0YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTRjMS42NiAwIDMtMS4zNCAzLTNzLTEuMzQtMy0zLTN6bS0yIDEwSDZWN2gxMnYxMnptLTktNmMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzguMTcgMTAgOSAxMHMxLjUuNjcgMS41IDEuNVM5LjgzIDEzIDkgMTN6bTcuNS0xLjVjMCAuODMtLjY3IDEuNS0xLjUgMS41cy0xLjUtLjY3LTEuNS0xLjUuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjV6TTggMTVoOHYySDh2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbWFydHBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxLjAxIDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOUg3VjVoMTB2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcGVha2VyR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjIgMUg5LjhDOC44MSAxIDggMS44MSA4IDIuOHYxNC40YzAgLjk5LjgxIDEuNzkgMS44IDEuNzlsOC40LjAxYy45OSAwIDEuOC0uODEgMS44LTEuOFYyLjhjMC0uOTktLjgxLTEuOC0xLjgtMS44ek0xOCAxN2wtOC0uMDFWM2g4djE0em0tNC05YzEuMSAwIDItLjg5IDItMnMtLjktMi0yLTItMiAuODktMiAyIC45IDIgMiAyem0wIDhjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTUuOTMgOSAxNCA5cy0zLjUgMS41Ny0zLjUgMy41UzEyLjA3IDE2IDE0IDE2em0wLTVjLjgzIDAgMS41LjY3IDEuNSAxLjVTMTQuODMgMTQgMTQgMTRzLTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNXpNNiA1SDR2MTZhMiAyIDAgMCAwIDIgMmgxMHYtMkg2VjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcGVha2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAySDdjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMS45OSAyIDEuOTlMMTcgMjJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNNyAyMFY0aDEwdjE2SDd6bTUtMTFjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yYTIgMiAwIDEgMCAwIDR6bTAgMmMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjU5IDcuNDEgMTguMTcgMTFINnYyaDEyLjE3bC0zLjU5IDMuNTlMMTYgMThsNi02LTYtNi0xLjQxIDEuNDF6TTIgNnYxMmgyVjZIMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhYmxldEFuZHJvaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDBINkM0LjM0IDAgMyAxLjM0IDMgM3YxOGMwIDEuNjYgMS4zNCAzIDMgM2gxMmMxLjY2IDAgMy0xLjM0IDMtM1YzYzAtMS42Ni0xLjM0LTMtMy0zem0tNCAyMmgtNHYtMWg0djF6bTUuMjUtM0g0Ljc1VjNoMTQuNXYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhYmxldE1hYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAwaC0xNEEyLjUgMi41IDAgMCAwIDIgMi41djE5QTIuNSAyLjUgMCAwIDAgNC41IDI0aDE0YTIuNSAyLjUgMCAwIDAgMi41LTIuNXYtMTlBMi41IDIuNSAwIDAgMCAxOC41IDB6bS03IDIzYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXptNy41LTRINFYzaDE1djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGFibGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNmMwLTEuMS0uOS0yLTItMnptLTIgMTRINVY2aDE0djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVG95cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNzUgMTAuMDggMTcuNCA2LjA1QTIuOTc4IDIuOTc4IDAgMCAwIDE0LjU2IDRIOS40NEM4LjE1IDQgNyA0LjgyIDYuNiA2LjA1TDUuODEgOC40IDQuNDEgN2wuMjktLjI5QS45OTYuOTk2IDAgMSAwIDMuMjkgNS4zbC0yIDJBLjk5Ni45OTYgMCAxIDAgMi43IDguNzFsLjMtLjMgMS43OSAxLjc5QzMuMTggMTAuNzIgMiAxMi4yMiAyIDE0YzAgMS40OS44MyAyLjc4IDIuMDUgMy40N0EyLjk5MSAyLjk5MSAwIDAgMCA3IDIwYzEuMyAwIDIuNC0uODQgMi44Mi0yaDQuMzdjLjQxIDEuMTYgMS41MSAyIDIuODIgMiAxLjQ5IDAgMi43My0xLjEgMi45NS0yLjUzQzIxLjE3IDE2Ljc4IDIyIDE1LjQ5IDIyIDE0YzAtMS45NS0xLjQtMy41Ny0zLjI1LTMuOTJ6TTEzIDZoMS41NmExIDEgMCAwIDEgLjk1LjY4bDEuMSAzLjMySDEzVjZ6bS00LjUxLjY4QTEgMSAwIDAgMSA5LjQ0IDZIMTF2NEg3LjQxbC0uMDItLjAyIDEuMS0zLjN6TTcgMThjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMTAgMGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0yLjQ5LTIuNjhBMy4wMjggMy4wMjggMCAwIDAgMTcgMTRjLTEuMyAwLTIuNC44NC0yLjgyIDJIOS44MkM5LjQgMTQuODQgOC4zIDE0IDcgMTRjLTEuMDMgMC0xLjk1LjUzLTIuNDkgMS4zMkM0LjIgMTQuOTcgNCAxNC41MSA0IDE0YzAtMS4xLjktMiAyLTJoMTJjMS4xIDAgMiAuOSAyIDIgMCAuNTEtLjIuOTctLjUxIDEuMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjMgNWMwLTEuMS0uOS0yLTItMnptMCAxNEgzVjVoMTh2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb2dhbWVBc3NldE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgOWMuODMgMCAxLjUuNjcgMS41IDEuNXMtLjY3IDEuNS0xLjUgMS41LTEuNS0uNjctMS41LTEuNS42Ny0xLjUgMS41LTEuNXptLTYuNjctMUgyMHY4aC0xLjE3bDEuODcgMS44N2MuNzUtLjI5IDEuMy0xLjAyIDEuMy0xLjg3VjhjMC0xLjEtLjktMi0yLTJIOC44M2wyIDJ6bTguOTUgMTQuNjFMMTUuMTcgMThINGMtMS4xIDAtMi0uOS0yLTJWOGMwLS44NS41NS0xLjU4IDEuMy0xLjg3TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOCAxOC4zOC0xLjQgMS40MnpNMTMuMTcgMTZsLTMtM0g5djJIN3YtMkg1di0yaDJWOS44M0w1LjE3IDhINHY4aDkuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb2dhbWVBc3NldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNkgzYy0xLjEgMC0yIC45LTIgMnY4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMEgzVjhoMTh2OHpNNiAxNWgydi0yaDJ2LTJIOFY5SDZ2Mkg0djJoMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNC41XCIsXCJjeVwiOlwiMTMuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTguNVwiLFwiY3lcIjpcIjEwLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F0Y2hPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3YzIuNzYgMCA1IDIuMjQgNSA1IDAgLjY0LS4xMyAxLjI1LS4zNSAxLjgybDEuNSAxLjVhNi45NjMgNi45NjMgMCAwIDAtMS43OS04Ljc5TDE1IDJIOWwtLjk2IDMuMjEgMi4xNCAyLjE0QzEwLjc1IDcuMTMgMTEuMzYgNyAxMiA3em0tMS41MS0zaDMuMDJsLjM4IDEuMjdjLS41NS0uMTYtMS45Ny0uNTEtMy43OCAwTDEwLjQ5IDR6TTIuODEgMi44MSAxLjM5IDQuMjJsNC40NiA0LjQ2YTYuOTYzIDYuOTYzIDAgMCAwIDEuNzkgOC43OUw5IDIyaDZsLjk2LTMuMjEgMy44MiAzLjgyIDEuNDEtMS40MUwyLjgxIDIuODF6TTEzLjUxIDIwaC0zLjAybC0uMzgtMS4yN2MuNTUuMTUgMS45Ny41MSAzLjc4IDBMMTMuNTEgMjB6TTEyIDE3Yy0yLjc2IDAtNS0yLjI0LTUtNSAwLS42NC4xMy0xLjI1LjM1LTEuODJsNi40NyA2LjQ3Yy0uNTcuMjItMS4xOC4zNS0xLjgyLjM1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjMxIDIgLjQxIDIuNDhDMTMuODcgNC4xNyAxMi45NiA0IDEyIDRjLS45NSAwLTEuODcuMTctMi43MS40N0w5LjcgMmg0LjYxbS40MSAxNy41MkwxNC4zMSAyMkg5LjdsLS40MS0yLjQ3Yy44NC4zIDEuNzYuNDcgMi43MS40Ny45NiAwIDEuODctLjE3IDIuNzItLjQ4TTE2IDBIOGwtLjk1IDUuNzNDNS4xOSA3LjE5IDQgOS40NSA0IDEyczEuMTkgNC44MSAzLjA1IDYuMjdMOCAyNGg4bC45Ni01LjczQzE4LjgxIDE2LjgxIDIwIDE0LjU0IDIwIDEycy0xLjE5LTQuODEtMy4wNC02LjI3TDE2IDB6bS00IDE4Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF1dG9Nb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMDMgMy41NmMtMS42Ny0xLjM5LTMuNzQtMi4zLTYuMDMtMi41MXYyLjAxYzEuNzMuMTkgMy4zMS44OCA0LjYxIDEuOTJsMS40Mi0xLjQyek0xMSAzLjA2VjEuMDVjLTIuMjkuMi00LjM2IDEuMTItNi4wMyAyLjUxbDEuNDIgMS40MkE4LjkyOCA4LjkyOCAwIDAgMSAxMSAzLjA2ek00Ljk4IDYuMzkgMy41NiA0Ljk3QzIuMTcgNi42NCAxLjI2IDguNzEgMS4wNSAxMWgyLjAxYy4xOS0xLjczLjg4LTMuMzEgMS45Mi00LjYxek0yMC45NCAxMWgyLjAxYy0uMjEtMi4yOS0xLjEyLTQuMzYtMi41MS02LjAzbC0xLjQyIDEuNDJBOC45MjggOC45MjggMCAwIDEgMjAuOTQgMTF6TTcgMTJsMy40NCAxLjU2TDEyIDE3bDEuNTYtMy40NEwxNyAxMmwtMy40NC0xLjU2TDEyIDdsLTEuNTYgMy40NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjFhOC45NiA4Ljk2IDAgMCAxLTcuNDYtNEg3di0ySDF2Nmgydi0yLjdjMS45OSAyLjg0IDUuMjcgNC43IDkgNC43IDQuODcgMCA5LTMuMTcgMTAuNDQtNy41NmwtMS45Ni0uNDVDMTkuMjUgMTguNDggMTUuOTIgMjEgMTIgMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCbGluZHNDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDExLjI1YzAgLjk3Ljc4IDEuNzUgMS43NSAxLjc1czEuNzUtLjc4IDEuNzUtMS43NUgyMnYtMmgtMnptLTItOGgtMlY5aDJ2MnptLTQgMEg2VjloOHYyem0wIDJ2Mkg2di0yaDh6bTIgMGgydjJoLTJ2LTJ6bTItNmgtMlY1aDJ2MnptLTQtMnYySDZWNWg4ek02IDE5di0yaDh2Mkg2em0xMCAwdi0yaDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsaW5kcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjNINHYxNkgydjJoMjB2LTJoLTJ6TTE2IDloMnYyaC0yVjl6bS0yIDJINlY5aDh2MnptNC00aC0yVjVoMnYyem0tNC0ydjJINlY1aDh6TTYgMTl2LTZoOHYxLjgyQTEuNzQ2IDEuNzQ2IDAgMCAwIDE1IDE4YTEuNzQ2IDEuNzQ2IDAgMCAwIDEtMy4xOFYxM2gydjZINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyb2FkY2FzdE9uSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDZjMC0xLjEtLjktMi0yLTJINHYyaDE2djIuNTljLjczLjI5IDEuNC42OSAyIDEuMTdWNnpNOCA5SDNjLS41IDAtMSAuNS0xIDF2OWMwIC41LjUgMSAxIDFoNWMuNSAwIDEtLjUgMS0xdi05YzAtLjUtLjUtMS0xLTF6bS0xIDlINHYtN2gzdjd6TTE3Ljc1IDE2Ljk3Yy4zLS4yMy41LS41Ny41LS45N2ExLjI1IDEuMjUgMCAwIDAtMi41IDBjMCAuNC4yLjc1LjUuOTdWMjJoMS41di01LjAzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMy41YTIuNSAyLjUgMCAwIDEgMi41IDIuNWMwIC42OS0uMjggMS4zMS0uNzMgMS43NmwxLjA2IDEuMDZDMjAuNTUgMTguMSAyMSAxNy4xIDIxIDE2YzAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0YzAgMS4xLjQ1IDIuMSAxLjE3IDIuODNsMS4wNi0xLjA2QTIuNSAyLjUgMCAwIDEgMTcgMTMuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOS41YTYuNSA2LjUgMCAwIDAtNi41IDYuNWMwIDEuNzkuNzMgMy40MiAxLjkgNC42bDEuMDYtMS4wNkMxMi41NiAxOC42MyAxMiAxNy4zOCAxMiAxNmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMS4zNy0uNTYgMi42Mi0xLjQ2IDMuNTJsMS4wNyAxLjA2QTYuNSA2LjUgMCAwIDAgMTcgOS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJvYWRjYXN0T25QZXJzb25hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTl2LTlsNi00LjUgNC4wOCAzLjA2Yy44MS0uMzIgMS42OS0uNTEgMi42MS0uNTRMMTAgMyAyIDl2MTJoOC43NmMtLjQ4LS42LS44OC0xLjI3LTEuMTctMkg0ek0xNyAxNC43NWMtLjY5IDAtMS4yNS41Ni0xLjI1IDEuMjUgMCAuNC4yLjc1LjUuOTdWMjJoMS41di01LjAzYy4zLS4yMy41LS41Ny41LS45NyAwLS42OS0uNTYtMS4yNS0xLjI1LTEuMjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEyYy0yLjIxIDAtNCAxLjc5LTQgNCAwIDEuMS40NSAyLjEgMS4xNyAyLjgzbDEuMDYtMS4wNkEyLjUgMi41IDAgMSAxIDE5LjUgMTZjMCAuNjktLjI4IDEuMzEtLjczIDEuNzZsMS4wNiAxLjA2QzIwLjU1IDE4LjEgMjEgMTcuMSAyMSAxNmMwLTIuMjEtMS43OS00LTQtNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOS41YTYuNSA2LjUgMCAwIDAtNi41IDYuNWMwIDEuNzkuNzMgMy40MiAxLjkgNC42bDEuMDYtMS4wNkMxMi41NiAxOC42MyAxMiAxNy4zOCAxMiAxNmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMS4zNy0uNTYgMi42Mi0xLjQ2IDMuNTJsMS4wNyAxLjA2QTYuNSA2LjUgMCAwIDAgMTcgOS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3VydGFpbnNDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDIwdi0yaC0yek0xMyA1djE0aC0yVjVoMnpNNiA1aDN2MTRINlY1em05IDE0VjVoM3YxNGgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUN1cnRhaW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTlWM0g0djE2SDJ2MmgyMHYtMmgtMnptLTItOC4xNGMtMi4wNS0uNTgtMy42NC0yLjkzLTMuOTQtNS44NkgxOHY1Ljg2ek0xNS44MSAxMmMtMi4wNCAxLjM1LTMuNSAzLjk0LTMuNzYgN2gtLjA5Yy0uMjYtMy4wNi0xLjcyLTUuNjUtMy43Ni03IDIuMDQtMS4zNSAzLjUtMy45NCAzLjc2LTdoLjA5Yy4yNiAzLjA2IDEuNzIgNS42NSAzLjc2IDd6TTkuOTQgNWMtLjMgMi45My0xLjg5IDUuMjctMy45NCA1Ljg2VjVoMy45NHpNNiAxMy4xNGMyLjA1LjU4IDMuNjQgMi45MyAzLjk0IDUuODZINnYtNS44NnpNMTQuMDYgMTljLjMtMi45MyAxLjg5LTUuMjcgMy45NC01Ljg2VjE5aC0zLjk0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWxlY3RyaWNCb2x0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNjkgMi4yMSA0LjMzIDExLjQ5Yy0uNjQuNTgtLjI4IDEuNjUuNTggMS43M0wxMyAxNGwtNC44NSA2Ljc2Yy0uMjIuMzEtLjE5Ljc0LjA4IDEuMDEuMy4zLjc3LjMxIDEuMDguMDJsMTAuMzYtOS4yOGMuNjQtLjU4LjI4LTEuNjUtLjU4LTEuNzNMMTEgMTBsNC44NS02Ljc2Yy4yMi0uMzEuMTktLjc0LS4wOC0xLjAxYS43Ny43NyAwIDAgMC0xLjA4LS4wMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVsZWN0cmljTWV0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMWE5IDkgMCAwIDAtMTggMGMwIDMuOTIgMi41MSA3LjI0IDYgOC40OFYyMmgydi0yLjA2YTguMjYyIDguMjYyIDAgMCAwIDIgMFYyMmgydi0yLjUyYzMuNDktMS4yNCA2LTQuNTYgNi04LjQ4em0tOSA3Yy0zLjg2IDAtNy0zLjE0LTctN3MzLjE0LTcgNy03IDcgMy4xNCA3IDctMy4xNCA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA3aDh2Mkg4ek0xMi43NSAxMGwtMyAzTDExIDE0LjI1IDkuNzUgMTUuNWwxLjUgMS41IDMtM0wxMyAxMi43NWwxLjI1LTEuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbmVyZ3lTYXZpbmdzTGVhZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNjLTQuOCAwLTkgMy44Ni05IDkgMCAyLjEyLjc0IDQuMDcgMS45NyA1LjYxTDMgMTkuNTkgNC40MSAyMWwxLjk3LTEuOTdBOS4wMTIgOS4wMTIgMCAwIDAgMTIgMjFjMi4zIDAgNC42MS0uODggNi4zNi0yLjY0QTguOTUgOC45NSAwIDAgMCAyMSAxMlYzaC05em03IDljMCAxLjg3LS43MyAzLjYzLTIuMDUgNC45NUE2Ljk2IDYuOTYgMCAwIDEgMTIgMTljLTMuODYgMC03LTMuMTQtNy03IDAtMS45Ljc0LTMuNjggMi4xLTQuOTlBNi45NCA2Ljk0IDAgMCAxIDEyIDVoN3Y3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04LjQ2IDEyLjYzIDQuMDUuNC0yLjQ0IDMuMzNjLS4xMS4xNi0uMS4zOC4wNC41Mi4xNS4xNS40LjE2LjU2LjAxbDUuMTYtNC42M2MuMzMtLjMuMTUtLjg1LS4zLS44OWwtNC4wNS0uNCAyLjQ0LTMuMzNjLjExLS4xNi4xLS4zOC0uMDQtLjUyYS40MDUuNDA1IDAgMCAwLS41Ni0uMDFsLTUuMTYgNC42M2MtLjMyLjMtLjE0Ljg1LjMuODl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHYXNNZXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDRoLTFWMmgtMnYyaC0yVjJIOXYySDhDNS43OSA0IDQgNS43OSA0IDh2MTBjMCAyLjIxIDEuNzkgNCA0IDRoOGMyLjIxIDAgNC0xLjc5IDQtNFY4YzAtMi4yMS0xLjc5LTQtNC00em0yIDE0YzAgMS4xLS45IDItMiAySDhjLTEuMSAwLTItLjktMi0yVjhjMC0xLjEuOS0yIDItMmg4YzEuMSAwIDIgLjkgMiAydjEwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMTUuNTRDOS41IDE2LjkgMTAuNjIgMTggMTIgMThzMi41LTEuMSAyLjUtMi40NmMwLTEuMDktLjQ1LTEuNDEtMi41LTMuNzktMi4wNyAyLjQtMi41IDIuNzEtMi41IDMuNzl6TTggOGg4djJIOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhlYXRQdW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxOGMzLjMxIDAgNi0yLjY5IDYtNnMtMi42OS02LTYtNi02IDIuNjktNiA2IDIuNjkgNiA2IDZ6bS0uNzUtMi4wOGMtLjU1LS4xLTEuMDUtLjMyLTEuNS0uNjJsMS41LTEuNXYyLjEyem0xLjUgMHYtMi4xMWwxLjUgMS41Yy0uNDUuMy0uOTUuNTEtMS41LjYxem0yLjU2LTEuNjctMS41LTEuNWgyLjExYy0uMS41NS0uMzEgMS4wNS0uNjEgMS41em0uNjEtM2gtMi4xMWwxLjUtMS41Yy4zLjQ1LjUxLjk1LjYxIDEuNXptLTMuMTctMy4xN2MuNTUuMSAxLjA1LjMyIDEuNS42MmwtMS41IDEuNVY4LjA4ek0xMiAxMWMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tLjc1LTIuOTJ2Mi4xMWwtMS41LTEuNWMuNDUtLjMuOTUtLjUxIDEuNS0uNjF6TTguNjkgOS43NWwxLjUgMS41SDguMDhjLjEtLjU1LjMxLTEuMDUuNjEtMS41em0xLjUgMy0xLjUgMS41Yy0uMy0uNDQtLjUxLS45NS0uNjItMS41aDIuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb2RlRmFuT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGMtMS4wNiAwLTEuNjQuMjktMy45MSAxLjE5LS4xOS0uMTQtLjQtLjI3LS42Mi0uMzcuMjUtMS4wMy42MS0xLjUzIDEuMzMtMi4wNC44MS0uNTcgMS4yLTEuMzQgMS4yLTIuMjggMC0xLjIyLS45NS0yLjUtMi42LTIuNS0zLjA4IDAtNC45MiAxLjQ3LTUuMzIgMy4yNmwyLjMzIDIuMzNDMTAuMDcgNi42OSAxMCA2LjM4IDEwIDZjMC0xLjE4IDEuNC0yIDMuNC0yIC41NyAwIC42LjQyLjYuNSAwIC4yNy0uMDUuNDMtLjM1LjY1LTEuMjcuOS0xLjgzIDEuOTEtMi4xNiAzLjM5bC0uMDIuMSA3LjI1IDcuMjVjLjI0LjA2LjUuMTEuNzguMTEgMS4yMiAwIDIuNS0uOTUgMi41LTIuNkMyMiA5LjkxIDIwLjExIDggMTggOHptMS41IDZjLS4yNyAwLS40My0uMDUtLjY1LS4zNS0uOS0xLjI3LTEuOTEtMS44My0zLjM5LTIuMTZhMy4xMiAzLjEyIDAgMCAwLS4xNS0uNjJjMS44LS43NSAyLjE4LS44NyAyLjY5LS44NyAxLjE4IDAgMiAxLjQgMiAzLjQgMCAuNTctLjQyLjYtLjUuNnpNMS4zOSA0LjIybDMuODkgMy44OUM1LjA0IDguMDUgNC43OCA4IDQuNSA4IDMuMjggOCAyIDguOTUgMiAxMC42IDIgMTQuMDkgMy44OSAxNiA2IDE2YzEuMDYgMCAxLjY0LS4yOSAzLjkxLTEuMTkuMTkuMTQuNC4yNy42Mi4zNy0uMjUgMS4wMy0uNjEgMS41My0xLjMzIDIuMDQtLjgxLjU3LTEuMiAxLjM0LTEuMiAyLjI4IDAgMS4yMi45NSAyLjUgMi42IDIuNSAzLjA4IDAgNC45Mi0xLjQ3IDUuMzItMy4yNmwzLjg2IDMuODYgMS40MS0xLjQxTDIuODEgMi44MSAxLjM5IDQuMjJ6bTExLjEzIDExLjI0Yy4wMyAwIC4wNi0uMDIuMDktLjAybC45Ny45N2MuMzUuOS40MiAxLjIxLjQyIDEuNTkgMCAxLjE4LTEuNCAyLTMuNCAyLS41NyAwLS42LS40Mi0uNi0uNSAwLS4yNy4wNS0uNDMuMzUtLjY1IDEuMjgtLjg5IDEuODMtMS45MSAyLjE3LTMuMzl6bS0zLjk4LTIuOTRjLjAzLjIyLjA4LjQyLjE1LjYyLTEuOC43NC0yLjE4Ljg2LTIuNjkuODYtMS4xOCAwLTItMS40LTItMy40IDAtLjU3LjQyLS42LjUtLjYuMjcgMCAuNDMuMDUuNjUuMzUuODkgMS4yOCAxLjkxIDEuODMgMy4zOSAyLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmVzdENhbVdpcmVkU3RhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxYy0uMTUgMCAuMTEtLjAyLTQuMjguNDJDOC40NyAxLjc1IDYgNC40OCA2IDcuNzVzMi40NyA2IDUuNzIgNi4zM2wxLjkuMTktLjU2Ljg1Yy0uMzUtLjA4LS43LS4xMi0xLjA2LS4xMi0yLjc2IDAtNSAyLjI0LTUgNXYyYzAgLjU1LjQ1IDEgMSAxaDhjLjU1IDAgMS0uNDUgMS0xdi0yYzAtMS42Ny0uODMtMy4xNS0yLjA5LTQuMDZsLjk3LTEuNDVjLjA0IDAgLjA5LjAxLjEzLjAxIDEuMDkgMCAyLS44OSAyLTJWM0MxOCAxLjg5IDE3LjA5IDEgMTYgMXptLTEgMjBIOXYtMWMwLTEuNjUgMS4zNS0zIDMtM3MzIDEuMzUgMyAzdjF6TTggNy43NWMwLTIuMjUgMS42OS00LjExIDMuOTItNC4zNEwxNiAzbC4wMyA5LjUtNC4xMS0uNDJBNC4zMzYgNC4zMzYgMCAwIDEgOCA3Ljc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT2lsQmFycmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMy4wNUM5IDE0LjY4IDEwLjM0IDE2IDEyIDE2czMtMS4zMiAzLTIuOTVjMC0xLjMxLS41My0xLjY5LTMtNC41NS0yLjQ4IDIuODgtMyAzLjI1LTMgNC41NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTNjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFoLTFWNWgxYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDFoMXY2SDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDFoMXY2SDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDFoMTZjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFoLTF2LTZoMXptLTMgNkg3di02Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xVjVoMTB2NmMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMXY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHJvcGFuZVRhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA2LjE0VjRjMC0xLjEtLjktMi0yLTJIOWMtMS4xIDAtMiAuOS0yIDJ2Mi4xNGMtMS43Mi40NS0zIDItMyAzLjg2djhjMCAyLjIxIDEuNzkgNCA0IDRoOGMyLjIxIDAgNC0xLjc5IDQtNHYtOGMwLTEuODYtMS4yOC0zLjQxLTMtMy44NnpNOSA0aDZ2MmgtMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMUg5VjR6TTggOGg4YzEuMSAwIDIgLjkgMiAydjNINnYtM2MwLTEuMS45LTIgMi0yem04IDEySDhjLTEuMSAwLTItLjktMi0ydi0zaDEydjNjMCAxLjEtLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQcm9wYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNmgtMVY1YzAtMS4xLS45LTItMi0yaC00Yy0xLjEgMC0yIC45LTIgMnYxSDdjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDZ2M2gydi0zaDZ2M2gydi0zYzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02em0tNy0xaDR2MWgtNFY1em03IDExSDdjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTRoMTBjMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb2xsZXJTaGFkZXNDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDguMjVjMCAuOTcuNzggMS43NSAxLjc1IDEuNzVzMS43NS0uNzggMS43NS0xLjc1SDIydi0yaC0yek0xOCA1djEwSDZWNWgxMnpNNiAxOXYtMmg1djJINnptNyAwdi0yaDV2MmgtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvbGxlclNoYWRlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE5VjNINHYxNkgydjJoMjB2LTJoLTJ6TTE4IDV2Nkg2VjVoMTJ6TTYgMTl2LTZoNXYxLjgyQTEuNzQ2IDEuNzQ2IDAgMCAwIDEyIDE4YTEuNzQ2IDEuNzQ2IDAgMCAwIDEtMy4xOFYxM2g1djZINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbnNvckRvb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA0djE2SDZWNGgxMm0wLTJINmMtMS4xIDAtMiAuOS0yIDJ2MThoMTZWNGMwLTEuMS0uOS0yLTItMnptLTIuNSA4LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNVMxNyAxMi44MyAxNyAxMnMtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2Vuc29yT2NjdXBpZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMWMxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xek0xMiAxMmMtMS44NCAwLTMuNTYuNS01LjAzIDEuMzctLjYxLjM1LS45NyAxLjAyLS45NyAxLjcyVjE3aDEydi0xLjkxYzAtLjctLjM2LTEuMzYtLjk3LTEuNzJBOS44NDQgOS44NDQgMCAwIDAgMTIgMTJ6bS0zLjg2IDNjMS4xOC0uNjUgMi41MS0xIDMuODYtMXMyLjY4LjM1IDMuODUgMUg4LjE0ek0yMS4yMyA4LjE1bDEuODUtLjc3QTEyLjA1NiAxMi4wNTYgMCAwIDAgMTYuNjIuOTJsLS43NyAxLjg1YzIuNDIgMS4wMiA0LjM2IDIuOTYgNS4zOCA1LjM4ek04LjE1IDIuNzcgNy4zOC45MkExMi4wODkgMTIuMDg5IDAgMCAwIC45MiA3LjM4bDEuODUuNzdjMS4wMi0yLjQyIDIuOTYtNC4zNiA1LjM4LTUuMzh6TTIuNzcgMTUuODVsLTEuODUuNzdjMS4yMiAyLjkxIDMuNTUgNS4yNSA2LjQ2IDYuNDZsLjc3LTEuODVhMTAuMTE3IDEwLjExNyAwIDAgMS01LjM4LTUuMzh6TTE1Ljg1IDIxLjIzbC43NyAxLjg1YzIuOTEtMS4yMiA1LjI1LTMuNTUgNi40Ni02LjQ2bC0xLjg1LS43N2ExMC4xMTcgMTAuMTE3IDAgMCAxLTUuMzggNS4zOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbnNvcldpbmRvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDJ2N2gtNHYtMWgtNHYxSDZWNGgxMnpNNiAyMHYtN2gxMnY3SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaGllbGRNb29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMiA0IDV2Ni4wOWMwIDUuMDUgMy40MSA5Ljc2IDggMTAuOTEgNC41OS0xLjE1IDgtNS44NiA4LTEwLjkxVjVsLTgtM3ptNiA5LjA5YzAgNC0yLjU1IDcuNy02IDguODMtMy40NS0xLjEzLTYtNC44Mi02LTguODN2LTQuN2w2LTIuMjUgNiAyLjI1djQuN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4wMSAxNC4zM2MxLjc1IDIuMTcgNS4xMiAyLjI0IDYuOTYuMDcuMjMtLjI3LjA4LS42OC0uMjYtLjc0YTQuNDkxIDQuNDkxIDAgMCAxLTMuMTgtMi4yIDQuNTAzIDQuNTAzIDAgMCAxLS4zMi0zLjg2LjQ1My40NTMgMCAwIDAtLjUxLS42Yy0zLjM0LjYyLTQuODkgNC42MS0yLjY5IDcuMzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTb2xhclBvd2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTJINEwyIDIyaDIwbC0yLTEwem0tMS42NCAyIC40IDJIMTN2LTJoNS4zNnpNMTEgMTR2Mkg1LjI0bC40LTJIMTF6bS02LjE2IDRIMTF2Mkg0LjQ0bC40LTJ6TTEzIDIwdi0yaDYuMTZsLjQgMkgxM3pNMTEgOGgydjNoLTJ6TTE1Ljc2NCA3LjIwNWwxLjQxNS0xLjQxNEwxOS4zIDcuOTEybC0xLjQxNCAxLjQxNHpNNC43MDUgNy45MTMgNi44MjYgNS43OSA4LjI0IDcuMjA2IDYuMTIgOS4zMjd6TTMgMmgzdjJIM3pNMTggMmgzdjJoLTN6TTEyIDdjMi43NiAwIDUtMi4yNCA1LTVoLTJjMCAxLjY1LTEuMzUgMy0zIDNTOSAzLjY1IDkgMkg3YzAgMi43NiAyLjI0IDUgNSA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmVydGljYWxTaGFkZXNDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDIwdi0yaC0yek0xMyA1aDEuNXYxNEgxM1Y1em0tMiAxNEg5LjVWNUgxMXYxNHpNNiA1aDEuNXYxNEg2VjV6bTEwLjUgMTRWNUgxOHYxNGgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmVydGljYWxTaGFkZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOVYzSDR2MTZIMnYyaDIwdi0yaC0yek0xNCA1djE0aC00VjVoNHpNNiA1aDJ2MTRINlY1em0xMCAxNFY1aDJ2MTRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaW5kUG93ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDNoNnYySDR6TTEgN2g1djJIMXpNMyAxOWg1djJIM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuMjEgMTguNjEtMi4yOC00LjFhMi4wNSAyLjA1IDAgMCAwLTEuMjYtLjk3bC0yLjY5LS42N2EyLjk1IDIuOTUgMCAwIDAtLjM3LTEuMzNsMy45Ni02LjU5Yy42NS0xLjA4LjMtMi40OC0uNzgtMy4xM2EyLjI4OCAyLjI4OCAwIDAgMC0yLjczLjNsLTMuNDMgMy4yMWMtLjQuMzctLjYzLjktLjYzIDEuNDV2My40Yy0uNDcuMTctLjg5LjQ1LTEuMjMuODJIMy4yOGEyLjI3OSAyLjI3OSAwIDAgMC0uNjMgNC40N2w0LjUxIDEuMjljLjE4LjA1LjM3LjA4LjU1LjA4LjM2IDAgLjcyLS4xIDEuMDMtLjI5bDIuMjQtMS4zNGMuMjkuMjYuNjMuNDcgMS4wMi42MVYyMWMtMS4xIDAtMiAuOS0yIDJoNmMwLTEuMS0uOS0yLTItMnYtNC4yOGw0LjYxIDQuNjFjLjQ1LjQ1IDEuMDMuNjcgMS42MS42Ny41OCAwIDEuMTctLjIyIDEuNjEtLjY3LjcyLS43Mi44OC0xLjgzLjM4LTIuNzJ6TTcuNzIgMTQuODQgMy4yIDEzLjU1YS4yNzkuMjc5IDAgMCAxLS4yLS4yN2MwLS4xNS4xMy0uMjguMjgtLjI4aDYuNzNjMCAuMTUuMDEuMy4wMy40NGwtMi4zMiAxLjR6TTEzIDE0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTEtMy44NlY2Ljc4bDMuNDMtMy4yMWMuMDUtLjA1LjE5LS4xMi4zNC0uMDQuMTMuMDguMTguMjUuMS4zOGwtMy43NCA2LjI0LS4xMy0uMDF6bTYuNDIgOS43OGMtLjA1LjA1LS4yNC4xNi0uNCAwbC00Ljg1LTQuODVjLjA4LS4wOS4xNi0uMTguMjQtLjI4bDIuNzguNjkgMi4yOCA0LjFjLjA2LjExLjA0LjI1LS4wNS4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTEwTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMS41aDIuNWMuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xSDEzYy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXptLjUtNC41SDE1djNoLTEuNVY3ek03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek04LjUgMTEuNUgxMHYtNkg3VjdoMS41ek0xMy41IDE4LjVIMTVWMTdoMmMuNTUgMCAxLS40NSAxLTF2LTIuNWMwLS41NS0uNDUtMS0xLTFoLTMuNXY2ek0xNSAxNGgxLjV2MS41SDE1VjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxMU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMTEuNUgxMXYtNkg4VjdoMS41ek0xNC41IDExLjVIMTZ2LTZoLTNWN2gxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxMk1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgMTEuNUgxMHYtNkg3VjdoMS41ek0xNi41IDEwaC0zVjloMmMuNTUgMCAxLS40NSAxLTFWNi41YzAtLjU1LS40NS0xLTEtMUgxMlY3aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxdjIuNWg0LjVWMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxM01wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDExLjVIMTB2LTZIN1Y3aDEuNXpNMTYuNSAxMC41di00YzAtLjU1LS40NS0xLTEtMUgxMlY3aDN2MWgtMnYxaDJ2MWgtM3YxLjVoMy41Yy41NSAwIDEtLjQ1IDEtMXpNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMTRNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTIuNXY2SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV6bTMgM0gxNVYxNGgxLjV2MS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSAxMS41SDEwdi02SDdWN2gxLjV6TTE1IDExLjVoMS41VjEwaDFWOC41aC0xdi0zSDE1djNoLTEuNXYtM0gxMlYxMGgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMTVNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTguNUgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41djZ6TTE1IDE0aDEuNXYxLjVIMTVWMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDExLjVIMTB2LTZIN1Y3aDEuNXpNMTYuNSAxMC41VjljMC0uNTUtLjQ1LTEtMS0xaC0yVjdoM1Y1LjVIMTJWOWgzdjFoLTN2MS41aDMuNWMuNTUgMCAxLS40NSAxLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUxNk1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMS41aDIuNWMuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTFoLTJWN2gzVjUuNUgxM2MtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bS41LTIuNUgxNXYxLjVoLTEuNVY5ek04LjUgMTEuNUgxMHYtNkg3VjdoMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMTdNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTguNUgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41djZ6TTE1IDE0aDEuNXYxLjVIMTVWMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDExLjVIMTB2LTZIN1Y3aDEuNXpNMTMuMjUgMTEuNUgxNWwxLjQ2LTQuNzFjLjE5LS42NC0uMjktMS4yOS0uOTYtMS4yOUgxMlY3aDIuNjJsLTEuMzcgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMThNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTguNUgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41djZ6TTE1IDE0aDEuNXYxLjVIMTVWMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDExLjVIMTB2LTZIN1Y3aDEuNXpNMTMgMTEuNWgyLjVjLjU1IDAgMS0uNDUgMS0xdi00YzAtLjU1LS40NS0xLTEtMUgxM2MtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bS41LTVIMTVWOGgtMS41VjYuNXptMCAyLjVIMTV2MS41aC0xLjVWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTE5TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek0xMy41IDE4LjVIMTVWMTdoMmMuNTUgMCAxLS40NSAxLTF2LTIuNWMwLS41NS0uNDUtMS0xLTFoLTMuNXY2ek0xNSAxNGgxLjV2MS41SDE1VjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSAxMS41SDEwdi02SDdWN2gxLjV6TTE2LjUgMTAuNXYtNGMwLS41NS0uNDUtMS0xLTFIMTNjLS41NSAwLTEgLjQ1LTEgMVY4YzAgLjU1LjQ1IDEgMSAxaDJ2MWgtM3YxLjVoMy41Yy41NSAwIDEtLjQ1IDEtMXpNMTUgOGgtMS41VjYuNUgxNVY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMjBNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTIuNXY2SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV6bTMgM0gxNVYxNGgxLjV2MS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDExLjVoMi41Yy41NSAwIDEtLjQ1IDEtMXYtNGMwLS41NS0uNDUtMS0xLTFIMTRjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxem0uNS00LjVIMTZ2M2gtMS41Vjd6TTExIDEwSDhWOWgyYy41NSAwIDEtLjQ1IDEtMVY2LjVjMC0uNTUtLjQ1LTEtMS0xSDYuNVY3aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxdjIuNUgxMVYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTIxTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTEuNUgxNnYtNmgtM1Y3aDEuNXpNMTIgMTBIOVY5aDJjLjU1IDAgMS0uNDUgMS0xVjYuNWMwLS41NS0uNDUtMS0xLTFINy41VjdoM3YxaC0yYy0uNTUgMC0xIC40NS0xIDF2Mi41SDEyVjEwek03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek0xNSAxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41djZIMTVWMTd6bTAtM2gxLjV2MS41SDE1VjE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMjJNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTIuNXY2SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV6bTMgM0gxNVYxNGgxLjV2MS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDEwSDhWOWgyYy41NSAwIDEtLjQ1IDEtMVY2LjVjMC0uNTUtLjQ1LTEtMS0xSDYuNVY3aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxdjIuNUgxMVYxMHpNMTcuNSAxMGgtM1Y5aDJjLjU1IDAgMS0uNDUgMS0xVjYuNWMwLS41NS0uNDUtMS0xLTFIMTNWN2gzdjFoLTJjLS41NSAwLTEgLjQ1LTEgMXYyLjVoNC41VjEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMjNNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTIuNXY2SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV6bTMgM0gxNVYxNGgxLjV2MS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDEwSDhWOWgyYy41NSAwIDEtLjQ1IDEtMVY2LjVjMC0uNTUtLjQ1LTEtMS0xSDYuNVY3aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxdjIuNUgxMVYxMHpNMTcuNSAxMC41di00YzAtLjU1LS40NS0xLTEtMUgxM1Y3aDN2MWgtMnYxaDJ2MWgtM3YxLjVoMy41Yy41NSAwIDEtLjQ1IDEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTI0TXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek0xNyAxMi41aC0zLjV2NkgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMXptLS41IDNIMTVWMTRoMS41djEuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxMEg4VjloMmMuNTUgMCAxLS40NSAxLTFWNi41YzAtLjU1LS40NS0xLTEtMUg2LjVWN2gzdjFoLTJjLS41NSAwLTEgLjQ1LTEgMXYyLjVIMTFWMTB6TTE2IDExLjVoMS41VjEwaDFWOC41aC0xdi0zSDE2djNoLTEuNXYtM0gxM1YxMGgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMk1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDEwaC0zVjloMmMuNTUgMCAxLS40NSAxLTFWNi41YzAtLjU1LS40NS0xLTEtMUgxMFY3aDN2MWgtMmMtLjU1IDAtMSAuNDUtMSAxdjIuNWg0LjVWMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUzMEZwc1NlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNHYyaDV2Mkg1djJoNHYySDR2Mmg1YzEuMSAwIDItLjkgMi0ydi0xLjVjMC0uODMtLjE3LTEuNS0xLTEuNS44MyAwIDEtLjY3IDEtMS41VjZjMC0xLjEtLjktMi0yLTJINHptMTQgMGMxLjEgMCAyIC45IDIgMnY2YzAgMS4xLS45IDItMiAyaC0zYy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJoM3ptMCAyaC0zdjZoM1Y2ek01IDIySDN2LTVoMnY1em00IDBIN3YtNWgydjV6bTQgMGgtMnYtNWgydjV6bTggMGgtNnYtNWg2djV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmUzTXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMTRoMXYzSDEwdi0zaDF2NC41aDEuNXYtNWMwLS41NS0uNDUtMS0xLTFIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41VjE0ek0xMy41IDEyLjV2NkgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41em0zIDNIMTVWMTRoMS41djEuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDEwLjV2LTRjMC0uNTUtLjQ1LTEtMS0xSDEwVjdoM3YxaC0ydjFoMnYxaC0zdjEuNWgzLjVjLjU1IDAgMS0uNDUgMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lNE1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDExLjVIMTRWMTBoMVY4LjVoLTF2LTNoLTEuNXYzSDExdi0zSDkuNVYxMGgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lNU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDEwLjVWOWMwLS41NS0uNDUtMS0xLTFoLTJWN2gzVjUuNUgxMFY5aDN2MWgtM3YxLjVoMy41Yy41NSAwIDEtLjQ1IDEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTYwRnBzU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNnY2aC0zVjZoM3ptMC0yaC0zYy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoM2MxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNyAyVjRINmMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDNjMS4xIDAgMi0uOSAyLTJ2LTJjMC0xLjEtLjktMi0yLTJINlY2aDV6bS0yIDR2Mkg2di0yaDN6TTUgMjJIM3YtNWgydjV6bTQgMEg3di01aDJ2NXptNCAwaC0ydi01aDJ2NXptOCAwaC02di01aDZ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTZNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTguNUgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41djZ6TTE1IDE0aDEuNXYxLjVIMTVWMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTEuNWgyLjVjLjU1IDAgMS0uNDUgMS0xVjljMC0uNTUtLjQ1LTEtMS0xaC0yVjdoM1Y1LjVIMTFjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxem0uNS0yLjVIMTN2MS41aC0xLjVWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZTdNcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxNGgxdjNIMTB2LTNoMXY0LjVoMS41di01YzAtLjU1LS40NS0xLTEtMUg3Yy0uNTUgMC0xIC40NS0xIDF2NWgxLjVWMTR6TTEzLjUgMTguNUgxNVYxN2gyYy41NSAwIDEtLjQ1IDEtMXYtMi41YzAtLjU1LS40NS0xLTEtMWgtMy41djZ6TTE1IDE0aDEuNXYxLjVIMTVWMTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMjUgMTEuNUgxM2wxLjQ2LTQuNzFjLjE5LS42NC0uMjktMS4yOS0uOTYtMS4yOUgxMFY3aDIuNjJsLTEuMzcgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lOE1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxMS41aDIuNWMuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xSDExYy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMXptLjUtNUgxM1Y4aC0xLjVWNi41em0wIDIuNUgxM3YxLjVoLTEuNVY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lOU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0aDF2M0gxMHYtM2gxdjQuNWgxLjV2LTVjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNVYxNHpNMTMuNSAxOC41SDE1VjE3aDJjLjU1IDAgMS0uNDUgMS0xdi0yLjVjMC0uNTUtLjQ1LTEtMS0xaC0zLjV2NnpNMTUgMTRoMS41djEuNUgxNVYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDEwLjV2LTRjMC0uNTUtLjQ1LTEtMS0xSDExYy0uNTUgMC0xIC40NS0xIDFWOGMwIC41NS40NSAxIDEgMWgydjFoLTN2MS41aDMuNWMuNTUgMCAxLS40NSAxLTF6TTEzIDhoLTEuNVY2LjVIMTNWOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZEFQaG90byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDZoLTMuMTdMMTYgNGgtNnYyaDUuMTJsMS44MyAySDIxdjEySDV2LTlIM3Y5YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnpNOCAxNGMwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01LTIuMjQtNS01LTUtNSAyLjI0LTUgNXptNS0zYzEuNjUgMCAzIDEuMzUgMyAzcy0xLjM1IDMtMyAzLTMtMS4zNS0zLTMgMS4zNS0zIDMtM3pNNSA2aDNWNEg1VjFIM3YzSDB2MmgzdjNoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZFBob3RvQWx0ZXJuYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyMEg0VjZoOVY0SDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTloLTJ2OXptLTcuNzktMy4xNy0xLjk2LTIuMzZMNS41IDE4aDExbC0zLjU0LTQuNzF6TTIwIDRWMWgtMnYzaC0zYy4wMS4wMSAwIDIgMCAyaDN2Mi45OWMuMDEuMDEgMiAwIDIgMFY2aDNWNGgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZFRvUGhvdG9zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTYtNEg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRIOFY0aDEydjEyem0tNy0xaDJ2LTRoNFY5aC00VjVoLTJ2NEg5djJoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkanVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ5IDIgMiA2LjQ5IDIgMTJzNC40OSAxMCAxMCAxMCAxMC00LjQ5IDEwLTEwUzE3LjUxIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTMtOGMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtMyAxLjM0LTMgMy0zIDMgMS4zNCAzIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBbmltYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyYy0yLjcxIDAtNS4wNSAxLjU0LTYuMjIgMy43OGE3LjA2MiA3LjA2MiAwIDAgMC0zIDNBNy4wMTQgNy4wMTQgMCAwIDAgMiAxNWMwIDMuODcgMy4xMyA3IDcgNyAyLjcxIDAgNS4wNS0xLjU0IDYuMjItMy43OGE3LjA2MiA3LjA2MiAwIDAgMCAzLTNBNy4wMTQgNy4wMTQgMCAwIDAgMjIgOWMwLTMuODctMy4xMy03LTctN3pNOSAyMGE1LjAwMiA1LjAwMiAwIDAgMS00LThjMCAzLjg3IDMuMTMgNyA3IDctLjg0LjYzLTEuODggMS0zIDF6bTMtM2E1LjAwMiA1LjAwMiAwIDAgMS00LThjMCAzLjg2IDMuMTMgNi45OSA3IDctLjg0LjYzLTEuODggMS0zIDF6bTQuNy0zLjNjLS41My4xOS0xLjEuMy0xLjcuMy0yLjc2IDAtNS0yLjI0LTUtNSAwLS42LjExLTEuMTcuMy0xLjcuNTMtLjE5IDEuMS0uMyAxLjctLjMgMi43NiAwIDUgMi4yNCA1IDUgMCAuNi0uMTEgMS4xNy0uMyAxLjd6TTE5IDEyYzAtMy44Ni0zLjEzLTYuOTktNy03YTUuMDAyIDUuMDAyIDAgMCAxIDcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFzc2lzdGFudFBob3RvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMi4zNiA2IC4wOC4zOS4zMiAxLjYxSDE4djZoLTMuMzZsLS4wOC0uMzktLjMyLTEuNjFIN1Y2aDUuMzZNMTQgNEg1djE3aDJ2LTdoNS42bC40IDJoN1Y2aC01LjZMMTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFzc2lzdGFudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDRsMyAzIDMtM2g0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTQuODNsLS41OS41OUwxMiAyMC4xN2wtMS41OS0xLjU5LS41OC0uNThINVY0aDE0djE0em0tNy0xIDEuODgtNC4xMkwxOCAxMWwtNC4xMi0xLjg4TDEyIDVsLTEuODggNC4xMkw2IDExbDQuMTIgMS44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF1ZGlvdHJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDN2MTAuNTVjLS41OS0uMzQtMS4yNy0uNTUtMi0uNTUtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00VjdoNFYzaC02em0tMiAxNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvQXdlc29tZU1vc2FpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNXYxNGEyIDIgMCAwIDAgMiAyaDZWM0g1YTIgMiAwIDAgMC0yIDJ6bTYgMTRINVY1aDR2MTR6TTE5IDNoLTZ2OGg4VjVjMC0xLjEtLjktMi0yLTJ6bTAgNmgtNFY1aDR2NHpNMTMgMjFoNmMxLjEgMCAyLS45IDItMnYtNmgtOHY4em0yLTZoNHY0aC00di00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXV0b0F3ZXNvbWVNb3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDRjLTEuMSAwLTIgLjktMiAydjEwaDJWNGgxMFYyem00IDRIOGMtMS4xIDAtMiAuOS0yIDJ2MTBoMlY4aDEwVjZ6bTIgNGgtOGMtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJ2LThjMC0xLjEtLjktMi0yLTJ6bTAgMTBoLTh2LThoOHY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXV0b0F3ZXNvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSA5IDEuMjUtMi43NUwyMyA1bC0yLjc1LTEuMjVMMTkgMWwtMS4yNSAyLjc1TDE1IDVsMi43NSAxLjI1ek0xOSAxNWwtMS4yNSAyLjc1TDE1IDE5bDIuNzUgMS4yNUwxOSAyM2wxLjI1LTIuNzVMMjMgMTlsLTIuNzUtMS4yNXpNMTEuNSA5LjUgOSA0IDYuNSA5LjUgMSAxMmw1LjUgMi41TDkgMjBsMi41LTUuNUwxNyAxMmwtNS41LTIuNXptLTEuNTEgMy40OUw5IDE1LjE3bC0uOTktMi4xOEw1LjgzIDEybDIuMTgtLjk5TDkgOC44M2wuOTkgMi4xOCAyLjE4Ljk5LTIuMTguOTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvRml4SGlnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwIDcgLjk0LTIuMDZMMjMgNGwtMi4wNi0uOTRMMjAgMWwtLjk0IDIuMDZMMTcgNGwyLjA2Ljk0ek04LjUgN2wuOTQtMi4wNkwxMS41IDRsLTIuMDYtLjk0TDguNSAxbC0uOTQgMi4wNkw1LjUgNGwyLjA2Ljk0ek0yMCAxMi41bC0uOTQgMi4wNi0yLjA2Ljk0IDIuMDYuOTQuOTQgMi4wNi45NC0yLjA2TDIzIDE1LjVsLTIuMDYtLjk0ek0xNy43MSA5LjEybC0yLjgzLTIuODNjLS4yLS4xOS0uNDUtLjI5LS43MS0uMjktLjI2IDAtLjUxLjEtLjcxLjI5TDIuMjkgMTcuNDZhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDIuODMgMi44M2MuMi4yLjQ1LjMuNzEuM3MuNTEtLjEuNzEtLjI5bDExLjE3LTExLjE3Yy4zOS0uMzkuMzktMS4wMyAwLTEuNDJ6bS0zLjU0LS43IDEuNDEgMS40MUwxNC40MSAxMSAxMyA5LjU5bDEuMTctMS4xN3pNNS44MyAxOS41OWwtMS40MS0xLjQxTDExLjU5IDExIDEzIDEyLjQxbC03LjE3IDcuMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvRml4Tm9ybWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAgNyAuOTQtMi4wNkwyMyA0bC0yLjA2LS45NEwyMCAxbC0uOTQgMi4wNkwxNyA0bDIuMDYuOTR6TTE3LjcxIDkuMTJsLTIuODMtMi44M2MtLjItLjE5LS40NS0uMjktLjcxLS4yOS0uMjYgMC0uNTEuMS0uNzEuMjlMMi4yOSAxNy40NmEuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMi44MyAyLjgzYy4yLjIuNDUuMy43MS4zcy41MS0uMS43MS0uMjlsMTEuMTctMTEuMTdjLjM5LS4zOS4zOS0xLjAzIDAtMS40MnptLTMuNTQtLjcgMS40MSAxLjQxTDE0LjQxIDExIDEzIDkuNTlsMS4xNy0xLjE3ek01LjgzIDE5LjU5bC0xLjQxLTEuNDFMMTEuNTkgMTEgMTMgMTIuNDFsLTcuMTcgNy4xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF1dG9GaXhPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMCA3IC45NC0yLjA2TDIzIDRsLTIuMDYtLjk0TDIwIDFsLS45NCAyLjA2TDE3IDRsMi4wNi45NHpNMTQuMTcgOC40MmwxLjQxIDEuNDEtMS40NiAxLjQ2IDEuNDEgMS40MSAyLjE3LTIuMTdhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0yLjgzLTIuODNhLjk4NC45ODQgMCAwIDAtLjctLjI5Yy0uMjYgMC0uNTEuMS0uNzEuMjlsLTIuMTcgMi4xNyAxLjQxIDEuNDEgMS40Ny0xLjQ1ek0xLjM5IDQuMjJsNy4wNyA3LjA3LTYuMTcgNi4xN2EuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMi44MyAyLjgzYy4yLjIuNDUuMy43MS4zcy41MS0uMS43MS0uMjlsNi4xNy02LjE3IDcuMDcgNy4wNyAxLjQxLTEuNDFMMi44MSAyLjgxIDEuMzkgNC4yMnptOS45IDkuOS01LjQ2IDUuNDYtMS40MS0xLjQxIDUuNDYtNS40NiAxLjQxIDEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvU3RvcmllcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjQ3IDUuMmMtLjQ3LS4yNC0uOTYtLjQ0LTEuNDctLjYxdjEyLjAzYy0xLjE0LS40MS0yLjMxLS42Mi0zLjUtLjYyLTEuOSAwLTMuNzguNTQtNS41IDEuNThWNS40OEMxMC4zOCA0LjU1IDguNTEgNCA2LjUgNGMtMS43OSAwLTMuNDguNDQtNC45NyAxLjItLjMzLjE2LS41My41MS0uNTMuODh2MTIuMDhjMCAuNTguNDcuOTkgMSAuOTkuMTYgMCAuMzItLjA0LjQ4LS4xMkMzLjY5IDE4LjQgNS4wNSAxOCA2LjUgMThjMi4wNyAwIDMuOTguODIgNS41IDIgMS41Mi0xLjE4IDMuNDMtMiA1LjUtMiAxLjQ1IDAgMi44MS40IDQuMDIgMS4wNC4xNi4wOC4zMi4xMi40OC4xMi41MiAwIDEtLjQxIDEtLjk5VjYuMDhjMC0uMzctLjItLjcyLS41My0uODh6TTEwIDE2LjYyQzguODYgMTYuMjEgNy42OSAxNiA2LjUgMTZzLTIuMzYuMjEtMy41LjYyVjYuNzFDNC4xMSA2LjI0IDUuMjggNiA2LjUgNmMxLjIgMCAyLjM5LjI1IDMuNS43MnY5Ljl6TTE5IC41bC01IDVWMTVsNS00LjVWLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBdXRvZnBzU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMDMgNi4zaC0uMDZsLTEuMDIgMi44OWgyLjF6TTMgMTdoMnY1SDN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE1YzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02LTYgMi42OS02IDYgMi42OSA2IDYgNnptLS42My0xMGgxLjI1bDIuNjMgN2gtMS4yMWwtLjYzLTEuNzloLTIuODNMOS45NiAxMkg4Ljc0bDIuNjMtN3pNNyAxN2gydjVIN3pNMTEgMTdoMnY1aC0yek0xNSAxN2g2djVoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCZWR0aW1lT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yNyA0LjQ5Yy0uMTMuNTktLjIgMS4xNS0uMjQgMS43MWwyLjA1IDIuMDVjLS4yNy0yLjA1LjEtNC4yMiAxLjI2LTYuMjMtLjEyIDAtLjIzLS4wMS0uMzUtLjAxYTkuOSA5LjkgMCAwIDAtNS41IDEuNjVsMS40NiAxLjQ2Yy40Mi0uMjQuODYtLjQ2IDEuMzItLjYzem0tNy44OC0uMjcgMi4yNyAyLjI3QTkuOTM0IDkuOTM0IDAgMCAwIDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgMi4wNCAwIDMuOTItLjYzIDUuNS0xLjY3bDIuMjggMi4yOCAxLjQxLTEuNDFMMi44MSAyLjgxIDEuMzkgNC4yMnptMy43NCAzLjc0IDEwLjkyIDEwLjkyQzE0Ljg0IDE5LjYgMTMuNDUgMjAgMTIgMjBjLTQuNDEgMC04LTMuNTktOC04IDAtMS40OC40Mi0yLjg1IDEuMTMtNC4wNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJlZHRpbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjI3IDQuNDljLTEuNjMgNy41NCAzLjc1IDEyLjQxIDcuNjYgMTMuOEE3Ljk5MyA3Ljk5MyAwIDAgMSAxMiAyMGMtNC40MSAwLTgtMy41OS04LTggMC0zLjQ1IDIuMi02LjQgNS4yNy03LjUxbTIuNzItMi40OEM2LjQgMi4wMSAyIDYuNTQgMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMCAzLjcxIDAgNi45My0yLjAyIDguNjYtNS4wMi03LjUxLS4yNS0xMi4wOS04LjQzLTguMzItMTQuOTdoLS4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsdXJDaXJjdWxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgOWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpNNyA5LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0zIDdjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0tMy0zYy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMy02Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTQgOWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLTEuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bTMgNmMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTAtNGMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0yLTMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTAtMy41Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCbHVyTGluZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE3LjVjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjUtMS41LjY3LTEuNSAxLjUuNjcgMS41IDEuNSAxLjV6TTkgMTNjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMC00Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6TTMgMjFoMTh2LTJIM3Yyek01IDkuNWMuODMgMCAxLjUtLjY3IDEuNS0xLjVTNS44MyA2LjUgNSA2LjUgMy41IDcuMTcgMy41IDggNC4xNyA5LjUgNSA5LjV6bTAgNGMuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNS42NyAxLjUgMS41IDEuNXpNOSAxN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem04LS41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMyAzdjJoMThWM0gzem0xNCA1LjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0wIDRjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xMyA5Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAgNGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wIDRjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsdXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTRcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEzLjggMTEuNDguMi4wMmMuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNWwuMDIuMmMuMDkuNjcuNjEgMS4xOSAxLjI4IDEuMjh6TTE0IDMuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bS00IDBjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOFwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTAuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCIxOFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAyMC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptNy03Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptLTE4IDBjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA5LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em03IDExYy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDUuMjcgNiA4Ljc3bC4yOC4yOEw2IDljLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xYzAtLjEtLjAzLS4xOS0uMDYtLjI4bDIuODEgMi44MWMtLjcxLjExLTEuMjUuNzMtMS4yNSAxLjQ3IDAgLjgzLjY3IDEuNSAxLjUgMS41Ljc0IDAgMS4zNi0uNTQgMS40Ny0xLjI1bDIuODEgMi44MUEuODc1Ljg3NSAwIDAgMCAxNCAxN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTFjMC0uMS0uMDMtLjE5LS4wNi0uMjhsMy43OCAzLjc4aC4wMWwxLjQxLTEuNDFMMy45MSAzLjg2IDIuNSA1LjI3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmx1ck9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxM2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC04Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bS0zIC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNNiA1Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTE1IDUuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTE0IDdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMC0zLjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0tMTEgMTBjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em03IDdjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0wLTE3Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTAgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wIDUuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTggLjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCA0Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtOGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLTRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMyA4LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek0xNCAxN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bS00LTEyYy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptMCA4LjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptNC00LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0wLTRjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJpZ2h0bmVzczEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjNC40MSAwIDggMy41OSA4IDhzLTMuNTkgOC04IDgtOC0zLjU5LTgtOCAzLjU5LTggOC04bTAtMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyaWdodG5lc3MyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0YzQuNDEgMCA4IDMuNTkgOCA4cy0zLjU5IDgtOCA4Yy0uMzQgMC0uNjgtLjAyLTEuMDEtLjA3QzEwLjkgMTcuNzcgMTIgMTQuOTUgMTIgMTJzLTEuMS01Ljc3LTMuMDEtNy45M0M5LjMyIDQuMDIgOS42NiA0IDEwIDRtMC0yYy0xLjgyIDAtMy41My41LTUgMS4zNUM3Ljk5IDUuMDggMTAgOC4zIDEwIDEycy0yLjAxIDYuOTItNSA4LjY1QzYuNDcgMjEuNSA4LjE4IDIyIDEwIDIyYzUuNTIgMCAxMC00LjQ4IDEwLTEwUzE1LjUyIDIgMTAgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyaWdodG5lc3MzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi43IDQuOTFBOCA4IDAgMCAxIDE3IDEyYTggOCAwIDAgMS00LjMgNy4wOWMxLjQ2LTIgMi4zLTQuNDYgMi4zLTcuMDlzLS44NC01LjA5LTIuMy03LjA5TTkgMmMtMS4wNSAwLTIuMDUuMTYtMyAuNDYgNC4wNiAxLjI3IDcgNS4wNiA3IDkuNTRzLTIuOTQgOC4yNy03IDkuNTRjLjk1LjMgMS45NS40NiAzIC40NiA1LjUyIDAgMTAtNC40OCAxMC0xMFMxNC41MiAyIDkgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyaWdodG5lc3M0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OUwyMy4zMSAxMiAyMCA4LjY5em0tMiA1Ljc5VjE4aC0zLjUyTDEyIDIwLjQ4IDkuNTIgMThINnYtMy41MkwzLjUyIDEyIDYgOS41MlY2aDMuNTJMMTIgMy41MiAxNC40OCA2SDE4djMuNTJMMjAuNDggMTIgMTggMTQuNDh6TTEyLjI5IDdjLS43NCAwLTEuNDUuMTctMi4wOC40NiAxLjcyLjc5IDIuOTIgMi41MyAyLjkyIDQuNTRzLTEuMiAzLjc1LTIuOTIgNC41NGMuNjMuMjkgMS4zNC40NiAyLjA4LjQ2IDIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJpZ2h0bmVzczUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6bS0yIDUuNzlWMThoLTMuNTJMMTIgMjAuNDggOS41MiAxOEg2di0zLjUyTDMuNTIgMTIgNiA5LjUyVjZoMy41MkwxMiAzLjUyIDE0LjQ4IDZIMTh2My41MkwyMC40OCAxMiAxOCAxNC40OHpNMTIgNi41Yy0zLjAzIDAtNS41IDIuNDctNS41IDUuNXMyLjQ3IDUuNSA1LjUgNS41IDUuNS0yLjQ3IDUuNS01LjUtMi40Ny01LjUtNS41LTUuNXptMCA5Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJyaWdodG5lc3M2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OUwyMy4zMSAxMiAyMCA4LjY5em0tMiA1Ljc5VjE4aC0zLjUyTDEyIDIwLjQ4IDkuNTIgMThINnYtMy41MkwzLjUyIDEyIDYgOS41MlY2aDMuNTJMMTIgMy41MiAxNC40OCA2SDE4djMuNTJMMjAuNDggMTIgMTggMTQuNDh6TTEyIDYuNXYxMWMzLjAzIDAgNS41LTIuNDcgNS41LTUuNVMxNS4wMyA2LjUgMTIgNi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJpZ2h0bmVzczcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6bS0yIDUuNzlWMThoLTMuNTJMMTIgMjAuNDggOS41MiAxOEg2di0zLjUyTDMuNTIgMTIgNiA5LjUyVjZoMy41MkwxMiAzLjUyIDE0LjQ4IDZIMTh2My41MkwyMC40OCAxMiAxOCAxNC40OHpNMTIgNi41Yy0zLjAzIDAtNS41IDIuNDctNS41IDUuNXMyLjQ3IDUuNSA1LjUgNS41IDUuNS0yLjQ3IDUuNS01LjUtMi40Ny01LjUtNS41LTUuNXptMCA5Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCcm9rZW5JbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINXYtNC41OGwuOTkuOTkgNC00IDQgNCA0LTMuOTlMMTkgMTIuNDNWMTl6bTAtOS40MS0xLjAxLTEuMDEtNCA0LjAxLTQtNC00IDQtLjk5LTFWNWgxNHY0LjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJ1c2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTZjLjU1IDAgMSAuNDUgMSAxIDAgMS4xLS45IDItMiAyLS4xNyAwLS4zMy0uMDItLjUtLjA1LjMxLS41NS41LTEuMjEuNS0xLjk1IDAtLjU1LjQ1LTEgMS0xTTE4LjY3IDNjLS4yNiAwLS41MS4xLS43MS4yOUw5IDEyLjI1IDExLjc1IDE1bDguOTYtOC45NmEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTEuMzQtMS4zNGMtLjItLjItLjQ1LS4yOS0uNy0uMjl6TTcgMTRjLTEuNjYgMC0zIDEuMzQtMyAzIDAgMS4zMS0xLjE2IDItMiAyIC45MiAxLjIyIDIuNDkgMiA0IDIgMi4yMSAwIDQtMS43OSA0LTQgMC0xLjY2LTEuMzQtMy0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCdXJzdE1vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDVoMnYxNEgxem00IDBoMnYxNEg1em0xNyAwSDEwYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xVjZjMC0uNTUtLjQ1LTEtMS0xem0tMSAxMkgxMVY3aDEwdjEwem0tMy41Ny00LjM4LTIgMi41N0wxNCAxMy40N2wtMiAyLjUyaDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW1lcmFBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRoLTMuMTdMMTUgMkg5TDcuMTcgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDQuMDVsMS44My0yaDQuMjRsMS44MyAySDIwdjEyek0xMiA3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMCA4Yy0xLjY1IDAtMy0xLjM1LTMtM3MxLjM1LTMgMy0zIDMgMS4zNSAzIDMtMS4zNSAzLTMgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbWVyYUZyb250IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDIwdjJoNXYybDMtMy0zLTN2MnptOSAwaDV2MmgtNXpNMTEuOTkgOEMxMy4xIDggMTQgNy4xIDE0IDZzLS45LTItMi4wMS0yUzEwIDQuOSAxMCA2cy44OSAyIDEuOTkgMnpNMTcgMEg3QzUuOSAwIDUgLjkgNSAydjE0YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWMmMwLTEuMS0uOS0yLTItMnptMCAxNkg3di0yaDEwdjJ6bTAtMy41YzAtMS42Ny0zLjMzLTIuNS01LTIuNXMtNSAuODMtNSAyLjVWMmgxMHYxMC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FtZXJhUmVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAyMHYyaDV2MmwzLTMtMy0zdjJ6bTkgMGg1djJoLTV6bTMtMjBIN0M1LjkgMCA1IC45IDUgMnYxNGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjJjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YyaDEwdjE0em0tNS05YzEuMSAwIDItLjkgMS45OS0yIDAtMS4xLS45LTItMi0yUzEwIDMuOSAxMCA1cy44OSAyIDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhbWVyYVJvbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDVjMC0xLjEtLjktMi0yLTJoLTFWMmMwLS41NS0uNDUtMS0xLTFINmMtLjU1IDAtMSAuNDUtMSAxdjFINGMtMS4xIDAtMiAuOS0yIDJ2MTVjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yaDhWNWgtOHptNiAxM2gtOHYySDRWNWgzVjNoMnYyaDN2Mmg4djExek05IDE1aDJ2Mkg5em0wLTdoMnYySDl6bTQgN2gydjJoLTJ6bTAtN2gydjJoLTJ6bTQgN2gydjJoLTJ6bTAtN2gydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0LjI1IDIuMjYtLjA4LS4wNC0uMDEuMDJDMTMuNDYgMi4wOSAxMi43NCAyIDEyIDIgNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMGMwLTQuNzUtMy4zMS04LjcyLTcuNzUtOS43NHpNMTkuNDEgOWgtNy45OWwyLjcxLTQuN2MyLjQuNjYgNC4zNSAyLjQyIDUuMjggNC43ek0xMy4xIDQuMDggMTAuMjcgOWwtMS4xNSAyTDYuNCA2LjNBNy45NTggNy45NTggMCAwIDEgMTIgNGMuMzcgMCAuNzQuMDMgMS4xLjA4ek01LjcgNy4wOSA4LjU0IDEybDEuMTUgMkg0LjI2QzQuMSAxMy4zNiA0IDEyLjY5IDQgMTJjMC0xLjg1LjY0LTMuNTUgMS43LTQuOTF6TTQuNTkgMTVoNy45OGwtMi43MSA0LjdBOC4wMzMgOC4wMzMgMCAwIDEgNC41OSAxNXptNi4zMSA0LjkxTDE0Ljg5IDEzbDIuNzIgNC43QTggOCAwIDAgMSAxMiAyMGMtLjM4IDAtLjc0LS4wNC0xLjEtLjA5em03LjQtMy00LTYuOTFoNS40M2MuMTcuNjQuMjcgMS4zMS4yNyAyIDAgMS44NS0uNjQgMy41NS0xLjcgNC45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhc2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA5SDF2MTFjMCAxLjExLjg5IDIgMiAyaDE3di0ySDNWOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNVYzYzAtMS4xLS45LTItMi0yaC00Yy0xLjEgMC0yIC45LTIgMnYySDV2MTFjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1aC01em0tNi0yaDR2MmgtNFYzem05IDEzSDdWN2gxNHY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2VudGVyRm9jdXNTdHJvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEyYzAtMi43Ni0yLjI0LTUtNS01cy01IDIuMjQtNSA1IDIuMjQgNSA1IDUgNS0yLjI0IDUtNXptLTUgM2MtMS42NSAwLTMtMS4zNS0zLTNzMS4zNS0zIDMtMyAzIDEuMzUgMyAzLTEuMzUgMy0zIDN6bS03IDBIM3Y0YzAgMS4xLjkgMiAyIDJoNHYtMkg1di00ek01IDVoNFYzSDVjLTEuMSAwLTIgLjktMiAydjRoMlY1em0xNC0yaC00djJoNHY0aDJWNWMwLTEuMS0uOS0yLTItMnptMCAxNmgtNHYyaDRjMS4xIDAgMi0uOSAyLTJ2LTRoLTJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNlbnRlckZvY3VzV2VhayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNUgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6TTUgNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTcgM2MtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTctMTFoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yem0wIDE2aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb2xsZWN0aW9uc0Jvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTYtNEg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS0zIDJ2NWwtMS0uNzVMMTUgOVY0aDJ6bTMgMTJIOFY0aDV2OWwzLTIuMjVMMTkgMTNWNGgxdjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29sbGVjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDR2MTJIOFY0aDEybTAtMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS04LjUgOS42NyAxLjY5IDIuMjYgMi40OC0zLjFMMTkgMTVIOXpNMiA2djE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2SDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb2xvckxlbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMkM2LjQ5IDIyIDIgMTcuNTEgMiAxMlM2LjQ5IDIgMTIgMnMxMCA0LjA0IDEwIDljMCAzLjMxLTIuNjkgNi02IDZoLTEuNzdjLS4yOCAwLS41LjIyLS41LjUgMCAuMTIuMDUuMjMuMTMuMzMuNDEuNDcuNjQgMS4wNi42NCAxLjY3QTIuNSAyLjUgMCAwIDEgMTIgMjJ6bTAtMThjLTQuNDEgMC04IDMuNTktOCA4czMuNTkgOCA4IDhjLjI4IDAgLjUtLjIyLjUtLjVhLjU0LjU0IDAgMCAwLS4xNC0uMzVjLS40MS0uNDYtLjYzLTEuMDUtLjYzLTEuNjVhMi41IDIuNSAwIDAgMSAyLjUtMi41SDE2YzIuMjEgMCA0LTEuNzkgNC00IDAtMy44Ni0zLjU5LTctOC03elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjYuNVwiLFwiY3lcIjpcIjExLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjkuNVwiLFwiY3lcIjpcIjcuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTQuNVwiLFwiY3lcIjpcIjcuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTcuNVwiLFwiY3lcIjpcIjExLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29sb3JpemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjY2IDUuNDEuOTIuOTItMi42OSAyLjY5LS45Mi0uOTIgMi42OS0yLjY5TTE3LjY3IDNjLS4yNiAwLS41MS4xLS43MS4yOWwtMy4xMiAzLjEyLTEuOTMtMS45MS0xLjQxIDEuNDEgMS40MiAxLjQyTDMgMTYuMjVWMjFoNC43NWw4LjkyLTguOTIgMS40MiAxLjQyIDEuNDEtMS40MS0xLjkyLTEuOTIgMy4xMi0zLjEyYy40LS40LjQtMS4wMy4wMS0xLjQybC0yLjM0LTIuMzRjLS4yLS4xOS0uNDUtLjI5LS43LS4yOXpNNi45MiAxOSA1IDE3LjA4bDguMDYtOC4wNiAxLjkyIDEuOTJMNi45MiAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbXBhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg1djJoMlYxaC0ydjJ6bTAgMTVINWw1LTZ2NnptOS0xNWgtNXYyaDV2MTNsLTUtNnY5aDVjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRyYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJjNS41MiAwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTB6bTEtMTcuOTNjMy45NC40OSA3IDMuODUgNyA3Ljkzcy0zLjA1IDcuNDQtNyA3LjkzVjQuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb250cm9sUG9pbnREdXBsaWNhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhoLTJ2M2gtM3YyaDN2M2gydi0zaDN2LTJoLTNWOHpNMiAxMmMwLTIuNzkgMS42NC01LjIgNC4wMS02LjMyVjMuNTJDMi41MiA0Ljc2IDAgOC4wOSAwIDEyczIuNTIgNy4yNCA2LjAxIDguNDh2LTIuMTZBNi45OSA2Ljk5IDAgMCAxIDIgMTJ6bTEzLTljLTQuOTYgMC05IDQuMDQtOSA5czQuMDQgOSA5IDkgOS00LjA0IDktOS00LjA0LTktOS05em0wIDE2Yy0zLjg2IDAtNy0zLjE0LTctN3MzLjE0LTcgNy03IDcgMy4xNCA3IDctMy4xNCA3LTcgN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbnRyb2xQb2ludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgN2gtMnY0SDd2Mmg0djRoMnYtNGg0di0yaC00Vjd6bS0xLTVDNi40OSAyIDIgNi40OSAyIDEyczQuNDkgMTAgMTAgMTAgMTAtNC40OSAxMC0xMFMxNy41MSAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3JvcDE2OSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDdINWMtMS4xIDAtMiAuOS0yIDJ2NmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6bTAgOEg1VjloMTR2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyb3AzMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDZINWMtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTBINVY4aDE0djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcm9wNTQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0SDVjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg1VjZoMTR2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcm9wNzUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1SDVjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxMkg1VjdoMTR2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcm9wRGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3JvcEZyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNXY0aDJWNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ6bTIgMTBIM3Y0YzAgMS4xLjkgMiAyIDJoNHYtMkg1di00em0xNCA0aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0em0wLTE2aC00djJoNHY0aDJWNWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyb3BMYW5kc2NhcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDVINWMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDEySDVWN2gxNHYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyb3BPcmlnaW5hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0em0tNS4wNC02LjcxLTIuNzUgMy41NC0xLjk2LTIuMzZMNi41IDE3aDExbC0zLjU0LTQuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcm9wUG9ydHJhaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDNIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDdWNWgxMHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyb3BSb3RhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNDcgMjEuNDlDNC4yIDE5LjkzIDEuODYgMTYuNzYgMS41IDEzSDBjLjUxIDYuMTYgNS42NiAxMSAxMS45NSAxMSAuMjMgMCAuNDQtLjAyLjY2LS4wM0w4LjggMjAuMTVsLTEuMzMgMS4zNHpNMTIuMDUgMGMtLjIzIDAtLjQ0LjAyLS42Ni4wNGwzLjgxIDMuODEgMS4zMy0xLjMzQzE5LjggNC4wNyAyMi4xNCA3LjI0IDIyLjUgMTFIMjRjLS41MS02LjE2LTUuNjYtMTEtMTEuOTUtMTF6TTE2IDE0aDJWOGEyIDIgMCAwIDAtMi0yaC02djJoNnY2em0tOCAyVjRINnYySDR2MmgydjhhMiAyIDAgMCAwIDIgMmg4djJoMnYtMmgydi0ySDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcm9wU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA0SDZjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg2VjZoMTJ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcm9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxNWgyVjdjMC0xLjEtLjktMi0yLTJIOXYyaDh2OHpNNyAxN1YxSDV2NEgxdjJoNHYxMGMwIDEuMS45IDIgMiAyaDEwdjRoMnYtNGg0di0ySDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDdXJyZW5jeUJpdGNvaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4wNiAxMS41N2MuNTktLjY5Ljk0LTEuNTkuOTQtMi41NyAwLTEuODYtMS4yNy0zLjQzLTMtMy44N1YzaC0ydjJoLTJWM0g5djJINnYyaDJ2MTBINnYyaDN2Mmgydi0yaDJ2Mmgydi0yYzIuMjEgMCA0LTEuNzkgNC00IDAtMS40NS0uNzgtMi43My0xLjk0LTMuNDN6TTEwIDdoNGMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDJoLTRWN3ptNSAxMGgtNXYtNGg1YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUN1cnJlbmN5RnJhbmMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA1VjNIN3YxM0g1djJoMnYzaDJ2LTNoNHYtMkg5di0zaDh2LTJIOVY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3VycmVuY3lMaXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA4Ljc2VjNoMnY0LjUxTDE1IDV2Mi4zNmwtNCAyLjUxLjAxIDIuMzVMMTUgOS43MnYyLjM2bC00IDIuNTFWMTljMi43NiAwIDUtMi4yNCA1LTVoMmMwIDMuODctMy4xMyA3LTcgN0g5di01LjE2bC0zIDEuODh2LTIuMzZsMy0xLjg4di0yLjM2TDYgMTN2LTIuMzZsMy0xLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ3VycmVuY3lQb3VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDIxYzEuOTMgMCAzLjYyLTEuMTcgNC0zbC0xLjc1LS44OEMxNiAxOC4yMSAxNS4zMyAxOSAxNCAxOUg5LjFjLjgzLTEgMS41LTIuMzQgMS41LTQgMC0uMzUtLjAzLS42OS0uMDgtMUgxNHYtMkg5LjgyQzkgMTAuNDIgOCA5LjYgOCA4YTMuNSAzLjUgMCAwIDEgNi43OC0xLjIyTDE2LjYzIDZjLS44LTIuMDUtMi43OS0zLjUtNS4xMy0zLjVDOC40NiAyLjUgNiA0Ljk2IDYgOGMwIDEuNzguNzkgMi45IDEuNDkgNEg2djJoMi40N2MuMDguMzEuMTMuNjQuMTMgMSAwIDIuNy0yLjYgNC0yLjYgNHYyaDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDdXJyZW5jeVJ1YmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNSAzSDd2OUg1djJoMnYySDV2MmgydjNoMnYtM2g0di0ySDl2LTJoNC41YzMuMDQgMCA1LjUtMi40NiA1LjUtNS41UzE2LjU0IDMgMTMuNSAzem0wIDlIOVY1aDQuNUMxNS40MyA1IDE3IDYuNTcgMTcgOC41UzE1LjQzIDEyIDEzLjUgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDdXJyZW5jeVJ1cGVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNjYgN2MtLjU2LTEuMTgtMS43Ni0yLTMuMTYtMkg2VjNoMTJ2MmgtMy4yNmMuNDguNTguODQgMS4yNiAxLjA1IDJIMTh2MmgtMi4wMmMtLjI1IDIuOC0yLjYxIDUtNS40OCA1aC0uNzNsNi43MyA3aC0yLjc3TDcgMTR2LTJoMy41YzEuNzYgMCAzLjIyLTEuMyAzLjQ2LTNINlY3aDcuNjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDdXJyZW5jeVllbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjkyIDExSDE4djJoLTV2Mmg1djJoLTV2NGgtMnYtNEg2di0yaDV2LTJINnYtMmg0LjA4TDUgM2gyLjM3TDEyIDEwLjI5IDE2LjYzIDNIMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDdXJyZW5jeVl1YW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy4yOCAxMkgxOHYyaC01djdoLTJ2LTdINnYtMmg0LjcyTDUgM2gyLjM3TDEyIDEwLjI5IDE2LjYzIDNIMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZWJsdXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCIxOFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjNcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjNcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjIxXCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiM1wiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjE0XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjEwXCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjE4XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDN2MmMzLjg2IDAgNyAzLjE0IDcgN3MtMy4xNCA3LTcgN3YyYzQuOTYgMCA5LTQuMDQgOS05cy00LjA0LTktOS05elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVoYXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE2djJoMjB2LTJIMnptMC01djJoMjB2LTJIMnptMC01djJoMjBWNkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGV0YWlscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDMgMiAyMWgyMEwxMiAzem0xIDUuOTJMMTguNiAxOUgxM1Y4Ljkyem0tMiAwVjE5SDUuNEwxMSA4LjkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlydHlMZW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNWgtMy4xN0wxNSAzSDlMNy4xNyA1SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxNGgtNy4wMmMtLjIyLS44NC0uNTItMS43Ni0uMTMtMi4zMy44MS0xLjEyIDIuNjcgMS43NyAzLjgxLS4wOS43Ny0xLjU3LTEuNTgtMS4yOS0xLjY0LTIuMTItLjA1LS44NCAzLjY4LjE3IDMuMDQtMS42Ni0uNjEtMS43My0yLjQyLjQ4LTIuNzYtLjUzLS41OC0xLjc0IDQuNy0xLjY4IDIuODUtNC4wMS0xLjc2LTIuMjItMi40NyAyLjg1LTQuNDEgMi4zMy0xLjM0LS4zNi0xLjAxLTIuODgtMi42NS0yLjQ0LTEuODguNTEgMS4wMyAyLjIgMCAyLjg2LS45Ni42My0xLjcyLS45Mi0yLjUxLTEuMTktLjItLjA3LS42OS0uMDUtLjkxLjE5LS43OC44Ni4yOCAxLjE2LjI1IDEuOTEtLjAyLjc1LTEuNTkuNDktMS41MSAxLjQ5LjEyIDEuNiAyLjE4LjQ1IDIuNCAxLjI0LjU1IDEuOTgtMS44OSAyLjE1LS41IDMuMjcgMS41My43MSAxLjkxLTEuOTQgMi44LTEuMzUuNTguMzguMyAxLjQ1LjE2IDIuNDNINFY3aDQuMDVsMS44My0yaDQuMjRsMS44MyAySDIwdjEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4yOCAxNy4xNWMwIC40OC4zOS44Ni44Ni44Ni40OCAwIC44Ni0uMzguODYtLjg2cy0uMzktLjg2LS44Ni0uODZjLS40OCAwLS44Ni4zOC0uODYuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC4wNiA5LjAyLjkyLjkyTDUuOTIgMTlINXYtLjkybDkuMDYtOS4wNk0xNy42NiAzYy0uMjUgMC0uNTEuMS0uNy4yOWwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0yLjM0LTIuMzRjLS4yLS4yLS40NS0uMjktLjcxLS4yOXptLTMuNiAzLjE5TDMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFdXJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTguNUE2LjQ4IDYuNDggMCAwIDEgOS4yNCAxNUgxNWwxLTJIOC41OGMtLjA1LS4zMy0uMDgtLjY2LS4wOC0xcy4wMy0uNjcuMDgtMUgxNWwxLTJIOS4yNEE2LjQ5MSA2LjQ5MSAwIDAgMSAxNSA1LjVjMS42MSAwIDMuMDkuNTkgNC4yMyAxLjU3TDIxIDUuM0E4Ljk1NSA4Ljk1NSAwIDAgMCAxNSAzYy0zLjkyIDAtNy4yNCAyLjUxLTguNDggNkgzbC0xIDJoNC4wNmE4LjI2MiA4LjI2MiAwIDAgMCAwIDJIM2wtMSAyaDQuNTJjMS4yNCAzLjQ5IDQuNTYgNiA4LjQ4IDYgMi4zMSAwIDQuNDEtLjg3IDYtMi4zbC0xLjc4LTEuNzdjLTEuMTMuOTgtMi42IDEuNTctNC4yMiAxLjU3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXhwb3N1cmVOZWcxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDExdjJoOHYtMkg0em0xNSA3aC0yVjcuMzhMMTQgOC40VjYuN0wxOC43IDVoLjN2MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHBvc3VyZU5lZzIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjA1IDE2LjI5IDIuODYtMy4wN2MuMzgtLjM5LjcyLS43OSAxLjA0LTEuMTguMzItLjM5LjU5LS43OC44Mi0xLjE3cy40MS0uNzguNTQtMS4xNy4xOS0uNzkuMTktMS4xOGMwLS41My0uMDktMS4wMi0uMjctMS40NnMtLjQ0LS44MS0uNzgtMS4xMWMtLjM0LS4zMS0uNzctLjU0LTEuMjYtLjcxQTUuNzIgNS43MiAwIDAgMCAxNi40NyA1Yy0uNjkgMC0xLjMxLjExLTEuODUuMzItLjU0LjIxLTEgLjUxLTEuMzYuODgtLjM3LjM3LS42NS44LS44NCAxLjMtLjE4LjQ3LS4yNy45Ny0uMjggMS41aDIuMTRjLjAxLS4zMS4wNS0uNi4xMy0uODcuMDktLjI5LjIzLS41NC40LS43NS4xOC0uMjEuNDEtLjM3LjY4LS40OXMuNi0uMTguOTYtLjE4Yy4zMSAwIC41OC4wNS44MS4xNXMuNDMuMjUuNTkuNDMuMjguNC4zNy42NWMuMDguMjUuMTMuNTIuMTMuODEgMCAuMjItLjAzLjQzLS4wOC42NS0uMDYuMjItLjE1LjQ1LS4yOS43LS4xNC4yNS0uMzIuNTMtLjU2LjgzLS4yMy4zLS41Mi42NS0uODggMS4wM2wtNC4xNyA0LjU1VjE4SDIxdi0xLjcxaC01Ljk1ek0yIDExdjJoOHYtMkgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXhwb3N1cmVQbHVzMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgN0g4djRINHYyaDR2NGgydi00aDR2LTJoLTRWN3ptMTAgMTFoLTJWNy4zOEwxNSA4LjRWNi43TDE5LjcgNWguM3YxM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV4cG9zdXJlUGx1czIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2LjA1IDE2LjI5IDIuODYtMy4wN2MuMzgtLjM5LjcyLS43OSAxLjA0LTEuMTguMzItLjM5LjU5LS43OC44Mi0xLjE3cy40MS0uNzguNTQtMS4xN2MuMTMtLjM5LjE5LS43OS4xOS0xLjE4IDAtLjUzLS4wOS0xLjAyLS4yNy0xLjQ2cy0uNDQtLjgxLS43OC0xLjExYy0uMzQtLjMxLS43Ny0uNTQtMS4yNi0uNzFBNS43MiA1LjcyIDAgMCAwIDE3LjQ3IDVjLS42OSAwLTEuMzEuMTEtMS44NS4zMi0uNTQuMjEtMSAuNTEtMS4zNi44OC0uMzcuMzctLjY1LjgtLjg0IDEuMy0uMTguNDctLjI3Ljk3LS4yOCAxLjVoMi4xNGMuMDEtLjMxLjA1LS42LjEzLS44Ny4wOS0uMjkuMjMtLjU0LjQtLjc1LjE4LS4yMS40MS0uMzcuNjgtLjQ5cy42LS4xOC45Ni0uMThjLjMxIDAgLjU4LjA1LjgxLjE1cy40My4yNS41OS40My4yOC40LjM3LjY1Yy4wOC4yNS4xMy41Mi4xMy44MSAwIC4yMi0uMDMuNDMtLjA4LjY1LS4wNi4yMi0uMTUuNDUtLjI5LjctLjE0LjI1LS4zMi41My0uNTYuODMtLjIzLjMtLjUyLjY1LS44OCAxLjAzbC00LjE3IDQuNTVWMThIMjJ2LTEuNzFoLTUuOTV6TTggN0g2djRIMnYyaDR2NGgydi00aDR2LTJIOFY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXhwb3N1cmVaZXJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4xNCAxMi41YzAgMS0uMSAxLjg1LS4zIDIuNTVzLS40OCAxLjI3LS44MyAxLjdjLS4zNi40NC0uNzkuNzUtMS4zLjk1cy0xLjA3LjMtMS43LjNjLS42MiAwLTEuMTgtLjEtMS42OS0uMy0uNTEtLjItLjk1LS41MS0xLjMxLS45NXMtLjY1LTEuMDEtLjg1LTEuN2MtLjItLjctLjMtMS41NS0uMy0yLjU1di0yLjA0YzAtMSAuMS0xLjg1LjMtMi41NS4yLS43LjQ4LTEuMjYuODQtMS42OS4zNi0uNDMuOC0uNzQgMS4zMS0uOTNDMTAuODEgNS4xIDExLjM4IDUgMTIgNWMuNjMgMCAxLjE5LjEgMS43LjI5LjUxLjE5Ljk1LjUgMS4zMS45My4zNi40My42NC45OS44NCAxLjY5LjIuNy4zIDEuNTQuMyAyLjU1djIuMDRoLS4wMXptLTIuMTEtMi4zNmMwLS42NC0uMDUtMS4xOC0uMTMtMS42Mi0uMDktLjQ0LS4yMi0uNzktLjQtMS4wNi0uMTctLjI3LS4zOS0uNDYtLjY0LS41OC0uMjUtLjEzLS41NC0uMTktLjg2LS4xOXMtLjYxLjA2LS44Ni4xOC0uNDcuMzEtLjY0LjU4LS4zMS42Mi0uNCAxLjA2LS4xMy45OC0uMTMgMS42MnYyLjY3YzAgLjY0LjA1IDEuMTguMTQgMS42Mi4wOS40NS4yMy44MS40IDEuMDlzLjM5LjQ4LjY0LjYxLjU0LjE5Ljg3LjE5LjYyLS4wNi44Ny0uMTkuNDYtLjMzLjYzLS42MS4zLS42NC4zOS0xLjA5LjEzLS45OS4xMy0xLjYydi0yLjY2aC0uMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHBvc3VyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMS40MSAyTDUgMTcuNTlWNWgxMi41OXpNNi40MSAxOSAxOSA2LjQxVjE5SDYuNDF6TTYgN2g1djEuNUg2em0xMCA1LjVoLTEuNXYyaC0yVjE2aDJ2MkgxNnYtMmgydi0xLjVoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGYWNlUmV0b3VjaGluZ05hdHVyYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS44OSAxMC43NWMuMDcuNDEuMTEuODIuMTEgMS4yNSAwIDQuNDEtMy41OSA4LTggOHMtOC0zLjU5LTgtOGMwLS4wNS4wMS0uMSAwLS4xNCAyLjYtLjk4IDQuNjktMi45OSA1Ljc0LTUuNTUgMy4zOCA0LjE0IDcuOTcgMy43MyA4Ljk5IDMuNjFsLS44OS0xLjkzYy0uMTMuMDEtNC42Mi4zOC03LjE4LTMuODYgMS4wMS0uMTYgMS43MS0uMTUgMi41OS0uMDEgMi41Mi0xLjE1IDEuOTMtLjg5IDIuNzYtMS4yNkE5LjYyIDkuNjIgMCAwIDAgMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwYzAtMS40My0uMy0yLjc4LS44NC00LjAxbC0xLjI3IDIuNzZ6TTguMDggNS4wM2E4LjA0NiA4LjA0NiAwIDAgMS0zLjY2IDQuNDQgOC4wNDYgOC4wNDYgMCAwIDEgMy42Ni00LjQ0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjMgNC41LTIuNC0xLjFMMTkuNSAxbC0xLjEgMi40TDE2IDQuNWwyLjQgMS4xTDE5LjUgOGwxLjEtMi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFjZVJldG91Y2hpbmdPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDEwYy43NSAwIDEuNDctLjA5IDIuMTctLjI0LjIxLjcxLjMzIDEuNDYuMzMgMi4yNCAwIDEuMjItLjI4IDIuMzctLjc3IDMuNGwxLjQ5IDEuNDlBOS45ODEgOS45ODEgMCAwIDAgMjIgMTJjMC01LjUyLTQuNDgtMTAtMTAtMTAtMS43OCAwLTMuNDQuNDctNC44OSAxLjI4bDUuMzMgNS4zM2MxLjQ5Ljg4IDMuMjEgMS4zOSA1LjA2IDEuMzl6bS02Ljg0LTUuODhjLjQzLS4wNy44OC0uMTIgMS4zNC0uMTIgMi45IDAgNS40NCAxLjU2IDYuODQgMy44OC0uNDMuMDctLjg4LjEyLTEuMzQuMTItMi45IDAtNS40NC0xLjU2LTYuODQtMy44OHpNMS44OSAzLjcybDIuMTkgMi4xOUE5Ljk1OCA5Ljk1OCAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMjkgMCA0LjQtLjc4IDYuMDktMi4wOGwyLjE5IDIuMTkgMS40MS0xLjQxTDMuMzEgMi4zMSAxLjg5IDMuNzJ6bTE0Ljc3IDE0Ljc3QTcuOTEgNy45MSAwIDAgMSAxMiAyMGMtNC40MSAwLTgtMy41OS04LTggMC0uMDUuMDEtLjEgMC0uMTRhOS45NDYgOS45NDYgMCAwIDAgMy42NC0yLjM5bDkuMDIgOS4wMnpNNi4yMyA4LjA2Yy0uNTMuNTUtMS4xNCAxLjAzLTEuODEgMS40MS4yNi0uNzcuNjMtMS40OCAxLjA5LTIuMTNsLjcyLjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTExIDEwaDJWNWgtNHYyaDJ2OHptNy0xNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE4LTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHptLTQtNGgtNHYtMmgyYTIgMiAwIDAgMCAyLTJWN2EyIDIgMCAwIDAtMi0yaC00djJoNHYyaC0yYTIgMiAwIDAgMC0yIDJ2NGg2di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMUg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0ek0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTQgOHYtMS41YzAtLjgzLS42Ny0xLjUtMS41LTEuNS44MyAwIDEuNS0uNjcgMS41LTEuNVY3YTIgMiAwIDAgMC0yLTJoLTR2Mmg0djJoLTJ2MmgydjJoLTR2Mmg0YTIgMiAwIDAgMCAyLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXI0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTIgMTBoMlY1aC0ydjRoLTJWNWgtMnY2aDR2NHptNi0xNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyNSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDFIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHpNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE0IDh2LTJhMiAyIDAgMCAwLTItMmgtMlY3aDRWNWgtNnY2aDR2MmgtNHYyaDRhMiAyIDAgMCAwIDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlcjYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS04LTJoMmEyIDIgMCAwIDAgMi0ydi0yYTIgMiAwIDAgMC0yLTJoLTJWN2g0VjVoLTRhMiAyIDAgMCAwLTIgMnY2YTIgMiAwIDAgMCAyIDJ6bTAtNGgydjJoLTJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXI3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0em0tOC0yIDQtOFY1aC02djJoNGwtNCA4aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXI4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0em0tOC0yaDJhMiAyIDAgMCAwIDItMnYtMS41YzAtLjgzLS42Ny0xLjUtMS41LTEuNS44MyAwIDEuNS0uNjcgMS41LTEuNVY3YTIgMiAwIDAgMC0yLTJoLTJhMiAyIDAgMCAwLTIgMnYxLjVjMCAuODMuNjcgMS41IDEuNSAxLjUtLjgzIDAtMS41LjY3LTEuNSAxLjVWMTNhMiAyIDAgMCAwIDIgMnptMC04aDJ2MmgtMlY3em0wIDRoMnYyaC0ydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyOVBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xMSA3VjhhMiAyIDAgMCAwLTItMmgtMWEyIDIgMCAwIDAtMiAydjFhMiAyIDAgMCAwIDIgMmgxdjFIOXYyaDNhMiAyIDAgMCAwIDItMnptLTMtM1Y4aDF2MWgtMXptMTAtOEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgOGgtMlY3aC0ydjJoLTJ2MmgydjJoMnYtMmgydjZIN1YzaDE0djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXI5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0ek0xNSA1aC0yYTIgMiAwIDAgMC0yIDJ2MmEyIDIgMCAwIDAgMiAyaDJ2MmgtNHYyaDRhMiAyIDAgMCAwIDItMlY3YTIgMiAwIDAgMC0yLTJ6bTAgNGgtMlY3aDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlckJBbmRXIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi03LTh2OEg1bDctOFY1aDd2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXJDZW50ZXJGb2N1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNUgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6TTUgNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTE0LTJoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yem0wIDE2aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0ek0xMiA5Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlckRyYW1hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4zNSAxMC4wNEE3LjQ5IDcuNDkgMCAwIDAgMTIgNGE3LjQ4IDcuNDggMCAwIDAtNi42NCA0LjA0QTUuOTk2IDUuOTk2IDAgMCAwIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE5IDE4SDZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNGgyYzAtMi43Ni0xLjg2LTUuMDgtNC40LTUuNzhDOC42MSA2Ljg4IDEwLjIgNiAxMiA2YzMuMDMgMCA1LjUgMi40NyA1LjUgNS41di41SDE5YzEuNjUgMCAzIDEuMzUgMyAzcy0xLjM1IDMtMyAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlsdGVyRnJhbWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNGgtNGwtNC00LTQgNEg0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTZINFY2aDQuNTJsMy41Mi0zLjVMMTUuNTIgNkgyMHYxNHpNNiAxOGgxMlY4SDZ2MTB6bTItOGg4djZIOHYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlckhkciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQgNi00LjIyIDUuNjMgMS4yNSAxLjY3TDE0IDkuMzMgMTkgMTZoLTguNDZsLTQuMDEtNS4zN0wxIDE4aDIyTDE0IDZ6TTUgMTZsMS41Mi0yLjAzTDguMDQgMTZINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpbHRlck5vbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXJUaWx0U2hpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDQuMDdWMi4wNWMtMi4wMS4yLTMuODQgMS01LjMyIDIuMjFMNy4xIDUuNjlBNy45NDEgNy45NDEgMCAwIDEgMTEgNC4wN3ptNy4zMi4xOUE5Ljk0OSA5Ljk0OSAwIDAgMCAxMyAyLjA1djIuMDJjMS40Ni4xOCAyLjc5Ljc2IDMuOSAxLjYybDEuNDItMS40M3pNMTkuOTMgMTFoMi4wMmMtLjItMi4wMS0xLTMuODQtMi4yMS01LjMyTDE4LjMxIDcuMWE3Ljk0MSA3Ljk0MSAwIDAgMSAxLjYyIDMuOXpNNS42OSA3LjEgNC4yNiA1LjY4QTkuOTQ5IDkuOTQ5IDAgMCAwIDIuMDUgMTFoMi4wMmMuMTgtMS40Ni43Ni0yLjc5IDEuNjItMy45ek00LjA3IDEzSDIuMDVjLjIgMi4wMSAxIDMuODQgMi4yMSA1LjMybDEuNDMtMS40M0E3Ljg2OCA3Ljg2OCAwIDAgMSA0LjA3IDEzek0xNSAxMmMwLTEuNjYtMS4zNC0zLTMtM3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzIDMtMS4zNCAzLTN6bTMuMzEgNC45IDEuNDMgMS40M2E5Ljk4MSA5Ljk4MSAwIDAgMCAyLjIxLTUuMzJoLTIuMDJhNy45NDUgNy45NDUgMCAwIDEtMS42MiAzLjg5ek0xMyAxOS45M3YyLjAyYzIuMDEtLjIgMy44NC0xIDUuMzItMi4yMWwtMS40My0xLjQzYy0xLjEuODYtMi40MyAxLjQ0LTMuODkgMS42MnptLTcuMzItLjE5QTkuOTgxIDkuOTgxIDAgMCAwIDExIDIxLjk1di0yLjAyYTcuOTQxIDcuOTQxIDAgMCAxLTMuOS0xLjYybC0xLjQyIDEuNDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXJWaW50YWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC43IDEyLjRhNi4wNiA2LjA2IDAgMCAwLS44Ni0uNGMuMjktLjExLjU4LS4yNC44Ni0uNGE2LjAxMiA2LjAxMiAwIDAgMCAzLTUuMTljLS45MS0uNTItMS45NS0uOC0zLjAxLS44LTEuMDIgMC0yLjA1LjI2LTIuOTkuOC0uMjguMTYtLjU0LjM1LS43OC41NC4wNS0uMzEuMDgtLjYzLjA4LS45NSAwLTIuMjItMS4yMS00LjE1LTMtNS4xOUMxMC4yMSAxLjg1IDkgMy43OCA5IDZjMCAuMzIuMDMuNjQuMDguOTUtLjI0LS4yLS41LS4zOS0uNzgtLjU1LS45NC0uNTQtMS45Ny0uOC0yLjk5LS44LTEuMDUgMC0yLjEuMjgtMy4wMS44YTUuOTcgNS45NyAwIDAgMCAzIDUuMTljLjI4LjE2LjU3LjI5Ljg2LjQtLjI5LjExLS41OC4yNC0uODYuNGE2LjAxMiA2LjAxMiAwIDAgMC0zIDUuMTljLjkxLjUyIDEuOTUuOCAzLjAxLjggMS4wMiAwIDIuMDUtLjI2IDIuOTktLjguMjgtLjE2LjU0LS4zNS43OC0uNTQtLjA1LjMyLS4wOC42NC0uMDguOTYgMCAyLjIyIDEuMjEgNC4xNSAzIDUuMTkgMS43OS0xLjA0IDMtMi45NyAzLTUuMTkgMC0uMzItLjAzLS42NC0uMDgtLjk1LjI0LjIuNS4zOC43OC41NC45NC41NCAxLjk3LjggMi45OS44IDEuMDUgMCAyLjEtLjI4IDMuMDEtLjhhNi4wMTIgNi4wMTIgMCAwIDAtMy01LjE5em0tMi41NC0zLjg4Yy4yMS0uMTcuMzgtLjI5LjU0LS4zNy42MS0uMzUgMS4zLS41NCAyLS41NC4yNyAwIC41My4wMy43OS4wOC0uMzEuOTEtLjk0IDEuNjktMS43OCAyLjE4LS4xNy4xLS4zNi4xOC0uNTguMjdsLTEuMzguNTJjLS4xNy0uNDYtLjQxLS44Ny0uNzItMS4yNGwxLjEzLS45ek0xMiAzLjM3Yy42My43MiAxIDEuNjYgMSAyLjYzIDAgLjE5LS4wMi40MS0uMDUuNjNsLS4yMyAxLjQ0QzEyLjQ4IDguMDMgMTIuMjQgOCAxMiA4cy0uNDguMDMtLjcxLjA3bC0uMjMtMS40NEMxMS4wMiA2LjQxIDExIDYuMTkgMTEgNmMwLS45OC4zNy0xLjkxIDEtMi42M3pNNC41MSA3LjY4Yy4yNi0uMDYuNTMtLjA4LjgtLjA4LjY5IDAgMS4zOC4xOCAxLjk5LjU0LjE1LjA5LjMyLjIuNDkuMzVsMS4xNS45NmMtLjMuMzYtLjUzLjc2LS43IDEuMmwtMS4zOC0uNTJjLS4yMS0uMDktLjQtLjE4LS41Ni0uMjctLjg3LS41LTEuNDktMS4yNy0xLjc5LTIuMTh6bTMuMzMgNy43OWMtLjIxLjE3LS4zOC4yOS0uNTQuMzctLjYxLjM1LTEuMy41NC0yIC41NC0uMjcgMC0uNTMtLjAzLS43OS0uMDguMzEtLjkxLjk0LTEuNjkgMS43OC0yLjE4LjE3LS4xLjM2LS4xOC41OC0uMjdsMS4zOC0uNTJjLjE2LjQ2LjQxLjg4LjcyIDEuMjRsLTEuMTMuOXpNMTIgMjAuNjNjLS42My0uNzItMS0xLjY2LTEtMi42MyAwLS4yLjAyLS40MS4wNi0uNjVsLjIyLTEuNDJjLjIzLjA0LjQ3LjA3LjcyLjA3LjI0IDAgLjQ4LS4wMy43MS0uMDdsLjIzIDEuNDRjLjA0LjIyLjA2LjQ0LjA2LjYzIDAgLjk4LS4zNyAxLjkxLTEgMi42M3ptNi42OS00LjI0YTMuOTE2IDMuOTE2IDAgMCAxLTIuNDgtLjg4bC0xLjE1LS45NmMuMy0uMzYuNTQtLjc2LjctMS4yMWwxLjM4LjUyYy4yMi4wOC40MS4xNy41Ny4yNi44NS40OSAxLjQ3IDEuMjcgMS43OCAyLjE4LS4yNy4wNy0uNTQuMDktLjguMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1Ljk2IDEwLjI5LTIuNzUgMy41NC0xLjk2LTIuMzZMOC41IDE1aDExbC0zLjU0LTQuNzF6TTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMUgxdjJoNnYtMnptMi4xNy0zLjI0TDcuMDUgNS42NCA1LjY0IDcuMDVsMi4xMiAyLjEyIDEuNDEtMS40MXpNMTMgMWgtMnY2aDJWMXptNS4zNiA2LjA1LTEuNDEtMS40MS0yLjEyIDIuMTIgMS40MSAxLjQxIDIuMTItMi4xMnpNMTcgMTF2Mmg2di0yaC02em0tNS0yYy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMi44MyA3LjI0IDIuMTIgMi4xMiAxLjQxLTEuNDEtMi4xMi0yLjEyLTEuNDEgMS40MXptLTkuMTkuNzEgMS40MSAxLjQxIDIuMTItMi4xMi0xLjQxLTEuNDEtMi4xMiAyLjEyek0xMSAyM2gydi02aC0ydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGFzaEF1dG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMnYxMmgzdjlsNy0xMkg5bDQtOUgzem0xNiAwaC0ybC0zLjIgOWgxLjlsLjctMmgzLjJsLjcgMmgxLjlMMTkgMnptLTIuMTUgNS42NUwxOCA0bDEuMTUgMy42NWgtMi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmxhc2hPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEwaC0zLjYxbDIuMjggMi4yOHptMC04SDd2MS42MWw2LjEzIDYuMTN6bS0xMy41OS44NkwyIDQuMjdsNSA1VjEzaDN2OWwzLjU4LTYuMTVMMTcuNzMgMjBsMS40MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmxhc2hPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAydjExaDN2OWw3LTEyaC00bDMtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsaXBDYW1lcmFBbmRyb2lkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zLTEuMzQtMy0zLTMtMyAxLjM0LTMgM3ptNCAwYzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xIC40NS0xIDEtMSAxIC40NSAxIDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTBWOEg1LjA5QzYuNDcgNS42MSA5LjA1IDQgMTIgNGMzLjcyIDAgNi44NSAyLjU2IDcuNzQgNmgyLjA2Yy0uOTMtNC41Ni00Ljk2LTgtOS44LTgtMy4yNyAwLTYuMTggMS41OC04IDQuMDFWNEgydjZoNnpNMTYgMTR2MmgyLjkxYy0xLjM4IDIuMzktMy45NiA0LTYuOTEgNC0zLjcyIDAtNi44NS0yLjU2LTcuNzQtNkgyLjJjLjkzIDQuNTYgNC45NiA4IDkuOCA4IDMuMjcgMCA2LjE4LTEuNTggOC00LjAxVjIwaDJ2LTZoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGlwQ2FtZXJhSW9zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNWgtMy4xN0wxNSAzSDlMNy4xNyA1SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxNEg0VjdoNC4wNWwuNTktLjY1TDkuODggNWg0LjI0bDEuMjQgMS4zNS41OS42NUgyMHYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTdjLTIuMjEgMC00LTEuNzktNC00aDJsLTIuNS0yLjVMNSAxM2gyYzAgMi43NiAyLjI0IDUgNSA1IC44NiAwIDEuNjUtLjI0IDIuMzYtLjYybC0uNzQtLjc0Yy0uNDkuMjMtMS4wNC4zNi0xLjYyLjM2ek0xMiA4Yy0uODYgMC0xLjY1LjI0LTIuMzYuNjJsLjc0LjczQzEwLjg3IDkuMTMgMTEuNDIgOSAxMiA5YzIuMjEgMCA0IDEuNzkgNCA0aC0ybDIuNSAyLjVMMTkgMTNoLTJjMC0yLjc2LTIuMjQtNS01LTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyMWgydi0yaC0ydjJ6bTQtMTJoMlY3aC0ydjJ6TTMgNXYxNGMwIDEuMS45IDIgMiAyaDR2LTJINVY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMTYtMnYyaDJjMC0xLjEtLjktMi0yLTJ6bS04IDIwaDJWMWgtMnYyMnptOC02aDJ2LTJoLTJ2MnpNMTUgNWgyVjNoLTJ2MnptNCA4aDJ2LTJoLTJ2MnptMCA4YzEuMSAwIDItLjkgMi0yaC0ydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcmFkaWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDloMnYyaC0yVjl6bS0yIDJoMnYySDl2LTJ6bTQgMGgydjJoLTJ2LTJ6bTItMmgydjJoLTJWOXpNNyA5aDJ2Mkg3Vjl6bTEyLTZINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE4SDd2LTJoMnYyem00IDBoLTJ2LTJoMnYyem00IDBoLTJ2LTJoMnYyem0yLTdoLTJ2MmgydjJoLTJ2LTJoLTJ2MmgtMnYtMmgtMnYySDl2LTJIN3YySDV2LTJoMnYtMkg1VjVoMTR2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxMmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6TTYgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTEyLThjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0tNCA4Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNC00Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptLTQtNGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS00LTRjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JpZE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA0di44OWwyIDJWNGg0djRoLTIuODlsMiAySDE0di44OWwyIDJWMTBoNHY0aC0yLjg5bDIgMkgyMHYuODlsMiAyVjRjMC0xLjEtLjktMi0yLTJINS4xMWwyIDJIOHptOCAwaDR2NGgtNFY0ek0xLjQxIDEuMTQgMCAyLjU1bDIgMlYyMGMwIDEuMS45IDIgMiAyaDE1LjQ1bDIuMDEgMi4wMSAxLjQxLTEuNDFMMS40MSAxLjE0ek0xMCAxMi41NSAxMS40NSAxNEgxMHYtMS40NXptLTYtNkw1LjQ1IDhINFY2LjU1ek04IDIwSDR2LTRoNHY0em0wLTZINHYtNGgzLjQ1bC41NS41NVYxNHptNiA2aC00di00aDMuNDVsLjU1LjU1VjIwem0yIDB2LTEuNDVMMTcuNDUgMjBIMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcmlkT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek04IDIwSDR2LTRoNHY0em0wLTZINHYtNGg0djR6bTAtNkg0VjRoNHY0em02IDEyaC00di00aDR2NHptMC02aC00di00aDR2NHptMC02aC00VjRoNHY0em02IDEyaC00di00aDR2NHptMC02aC00di00aDR2NHptMC02aC00VjRoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGRyRW5oYW5jZWRTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTYgMi42OS02IDYtNnptMCAyQzkuNzkgNCA4IDUuNzkgOCA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0xIDdoLTJWOUg5VjdoMlY1aDJ2MmgydjJoLTJ2MnptMTEgOWgtMnYyaC0xLjV2LTJoLTJ2LTEuNWgydi0ySDIydjJoMlYyMHptLTYtMS41YzAgLjYtLjQgMS4xLS45IDEuNEwxOCAyMmgtMS41bC0uOS0yaC0xLjF2MkgxM3YtNmgzLjVjLjggMCAxLjUuNyAxLjUgMS41djF6bS0xLjUgMHYtMWgtMnYxaDJ6bS0xMy0uNXYtMkg1djZIMy41di0yLjVoLTJWMjJIMHYtNmgxLjV2Mmgyem02LjUtMmMuOCAwIDEuNS43IDEuNSAxLjV2M2MwIC44LS43IDEuNS0xLjUgMS41SDYuNXYtNkgxMHptMCA0LjV2LTNIOHYzaDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZHJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgMTV2LTJoMS4xbC45IDJIMjFsLS45LTIuMWMuNS0uMy45LS44LjktMS40di0xYzAtLjgtLjctMS41LTEuNS0xLjVIMTZ2NC44NkwxNy4xNCAxNWguMzZ6bTAtNC41aDJ2MWgtMnYtMXptLTQuNSAwdi4zNmwxLjUgMS41VjEwLjVjMC0uOC0uNy0xLjUtMS41LTEuNWgtMS44NmwxLjUgMS41SDEzek0yLjUxIDIuNDkgMS40NSAzLjU1IDYuOSA5aC0uNHYyaC0yVjlIM3Y2aDEuNXYtMi41aDJWMTVIOHYtNC45bDEuNSAxLjVWMTVoMy40bDcuNiA3LjYgMS4wNi0xLjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGRyT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDExLjV2LTFjMC0uOC0uNy0xLjUtMS41LTEuNUgxNnY2aDEuNXYtMmgxLjFsLjkgMkgyMWwtLjktMi4xYy41LS4zLjktLjguOS0xLjR6bS0xLjUgMGgtMnYtMWgydjF6bS0xMy0uNWgtMlY5SDN2NmgxLjV2LTIuNWgyVjE1SDhWOUg2LjV2MnpNMTMgOUg5LjV2NkgxM2MuOCAwIDEuNS0uNyAxLjUtMS41di0zYzAtLjgtLjctMS41LTEuNS0xLjV6bTAgNC41aC0ydi0zaDJ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhkclBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjEzIDE5YzEuMTUuNjQgMi40NyAxIDMuODcgMSA0LjQxIDAgOC0zLjU5IDgtOHMtMy41OS04LTgtOC04IDMuNTktOCA4YzAgMi41MiAxLjE3IDQuNzcgMyA2LjI0VjEzaDMuNWMuOCAwIDEuNS43IDEuNSAxLjV2MWMwIC42LS40IDEuMS0uOSAxLjRMMTIgMTloLTEuNWwtLjktMkg4LjV2MmgtLjM3ek0xMiAyYzUuNTIgMCAxMCA0LjQ4IDEwIDEwcy00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMiA2LjQ4IDIgMTIgMnptNS41IDE0SDE2djEuNWgtMS41VjE2SDEzdi0xLjVoMS41VjEzSDE2djEuNDloMS41VjE2em0tNy0uNXYtMWgtMnYxaDJ6bTAtNy41VjZIMTJ2NmgtMS41VjkuNWgtMlYxMkg3VjZoMS41djJoMnpNMTYgNmMuOCAwIDEuNS43IDEuNSAxLjV2M2MwIC44LS43IDEuNS0xLjUgMS41aC0zVjZoM3ptMCA0LjV2LTNoLTEuNXYzSDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGRyU3Ryb25nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA2Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnpNNSA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCA2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhkcldlYWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTEyLTJjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02em0wIDEwYy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDQtMS43OSA0LTQgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhlYWxpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjczIDEyLjAyIDMuOTgtMy45OGEuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTQuMzQtNC4zNGEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBsLTMuOTggMy45OEw4IDIuMjlhMS4wMDEgMS4wMDEgMCAwIDAtMS40MSAwTDIuMjUgNi42M2EuOTk2Ljk5NiAwIDAgMCAwIDEuNDFsMy45OCAzLjk4TDIuMjUgMTZhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDQuMzQgNC4zNGMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsMy45OC0zLjk4IDMuOTggMy45OGMuMi4yLjQ1LjI5LjcxLjI5LjI2IDAgLjUxLS4xLjcxLS4yOWw0LjM0LTQuMzRhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0zLjk5LTMuOTh6TTEyIDljLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptLTQuNzEgMS45NkwzLjY2IDcuMzRsMy42My0zLjYzIDMuNjIgMy42Mi0zLjYyIDMuNjN6TTEwIDEzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTIgMmMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0yLTRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMi42NiA5LjM0LTMuNjMtMy42MiAzLjYzLTMuNjMgMy42MiAzLjYyLTMuNjIgMy42M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhldmMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgMTFoLTFWOUgzdjZoMS41di0yLjVoMVYxNUg3VjlINS41ek0yMSAxMXYtMWMwLS41NS0uNDUtMS0xLTFoLTJjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxaDJjLjU1IDAgMS0uNDUgMS0xdi0xaC0xLjV2LjVoLTF2LTNoMXYuNUgyMXpNMTQuMjUgMTMuNSAxMy41IDlIMTJsMSA2aDIuNWwxLTZIMTV6TTggOXY2aDMuNXYtMS41aC0ydi0xaDJWMTFoLTJ2LS41aDJWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhpZGVJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDV2MTEuMTdsMiAyVjVjMC0xLjEtLjktMi0yLTJINS44M2wyIDJIMTl6TTIuODEgMi44MSAxLjM5IDQuMjIgMyA1LjgzVjE5YzAgMS4xLjkgMiAyIDJoMTMuMTdsMS42MSAxLjYxIDEuNDEtMS40MUwyLjgxIDIuODF6TTUgMTlWNy44M2w3LjA3IDcuMDctLjgyIDEuMUw5IDEzbC0zIDRoOC4xN2wyIDJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUltYWdlQXNwZWN0UmF0aW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMGgtMnYyaDJ2LTJ6bTAgNGgtMnYyaDJ2LTJ6bS04LTRINnYyaDJ2LTJ6bTQgMGgtMnYyaDJ2LTJ6bTgtNkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDE2djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW1hZ2VOb3RTdXBwb3J0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS45IDIxLjktNi4xLTYuMS0yLjY5LTIuNjlMNSA1IDMuNTkgMy41OSAyLjEgMi4xLjY5IDMuNTEgMyA1LjgzVjE5YzAgMS4xLjkgMiAyIDJoMTMuMTdsMi4zMSAyLjMxIDEuNDItMS40MXpNNSAxOVY3LjgzbDYuODQgNi44NC0uODQgMS4wNUw5IDEzbC0zIDRoOC4xN2wyIDJINXpNNy44MyA1bC0yLTJIMTljMS4xIDAgMiAuOSAyIDJ2MTMuMTdsLTItMlY1SDcuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbWFnZVNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTN2N0g0VjZoNS4wMmMuMDUtLjcxLjIyLTEuMzguNDgtMkg0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi01bC0yLTJ6bS0xLjUgNWgtMTFsMi43NS0zLjUzIDEuOTYgMi4zNiAyLjc1LTMuNTRMMTYuNSAxOHptMi44LTkuMTFjLjQ0LS43LjctMS41MS43LTIuMzlDMjAgNC4wMSAxNy45OSAyIDE1LjUgMlMxMSA0LjAxIDExIDYuNXMyLjAxIDQuNSA0LjQ5IDQuNWMuODggMCAxLjctLjI2IDIuMzktLjdMMjEgMTMuNDIgMjIuNDIgMTIgMTkuMyA4Ljg5ek0xNS41IDlhMi41IDIuNSAwIDAgMSAwLTUgMi41IDIuNSAwIDAgMSAwIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQuODYgOC44Ni0zIDMuODdMOSAxMy4xNCA2IDE3aDEybC0zLjg2LTUuMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJbmNvbXBsZXRlQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTJjMCA1LjUyLTQuNDggMTAtMTAgMTBTMiAxNy41MiAyIDEyYzAtMi43NiAxLjEyLTUuMjYgMi45My03LjA3TDEyIDEyVjJjNS41MiAwIDEwIDQuNDggMTAgMTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJc28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek01LjUgNy41aDJ2LTJIOXYyaDJWOUg5djJINy41VjloLTJWNy41ek0xOSAxOUg1TDE5IDV2MTR6bS0yLTJ2LTEuNWgtNVYxN2g1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGFuZHNjYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA2LTQuMjIgNS42MyAxLjI1IDEuNjdMMTQgOS4zMyAxOSAxNmgtOC40NmwtNC4wMS01LjM3TDEgMThoMjJMMTQgNnpNNSAxNmwxLjUyLTIuMDNMOC4wNCAxNkg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGVha0FkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAzSDN2M2MxLjY2IDAgMy0xLjM0IDMtM3ptOCAwaC0yYTkgOSAwIDAgMS05IDl2MmM2LjA4IDAgMTEtNC45MyAxMS0xMXptLTQgMEg4YzAgMi43Ni0yLjI0IDUtNSA1djJjMy44NyAwIDctMy4xMyA3LTd6bTAgMThoMmE5IDkgMCAwIDEgOS05di0yYy02LjA3IDAtMTEgNC45My0xMSAxMXptOCAwaDN2LTNjLTEuNjYgMC0zIDEuMzQtMyAzem0tNCAwaDJjMC0yLjc2IDIuMjQtNSA1LTV2LTJjLTMuODcgMC03IDMuMTMtNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGVha1JlbW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgM2gtMmMwIDEuMzUtLjMxIDIuNjMtLjg0IDMuNzdsMS40OSAxLjQ5QzEzLjUxIDYuNyAxNCA0LjkxIDE0IDN6bTcgOXYtMmMtMS45MSAwLTMuNy40OS01LjI3IDEuMzVsMS40OSAxLjQ5YzEuMTUtLjUzIDIuNDMtLjg0IDMuNzgtLjg0em0wIDR2LTJjLS43OSAwLTEuNTQuMTMtMi4yNC4zN2wxLjY4IDEuNjhjLjE5LS4wMS4zNy0uMDUuNTYtLjA1ek0xMCAzSDhjMCAuMTktLjA0LjM3LS4wNi41NmwxLjY4IDEuNjhjLjI1LS43LjM4LTEuNDYuMzgtMi4yNHptLTUuNTktLjE0TDMgNC4yN2wyLjg0IDIuODRDNS4wMyA3LjY3IDQuMDYgOCAzIDh2MmMxLjYxIDAgMy4wOS0uNTUgNC4yNy0xLjQ2TDguNyA5Ljk3QTguOTkgOC45OSAwIDAgMSAzIDEydjJjMi43MiAwIDUuMi0uOTkgNy4xMS0yLjYybDIuNTEgMi41MUMxMC45OSAxNS44MSAxMCAxOC4yOSAxMCAyMWgyYzAtMi4xNi43Ni00LjE0IDIuMDMtNS43bDEuNDMgMS40M0E2Ljk3MiA2Ljk3MiAwIDAgMCAxNCAyMWgyYzAtMS4wNi4zMy0yLjAzLjg5LTIuODRMMTkuNzMgMjFsMS40MS0xLjQxTDQuNDEgMi44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxlbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjNC40MSAwIDggMy41OSA4IDhzLTMuNTkgOC04IDgtOC0zLjU5LTgtOCAzLjU5LTggOC04bTAtMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpbmtlZENhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOXYxMUg0VjhoNC4wNWwxLjgzLTJIMTVWNEg5TDcuMTcgNkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjloLTJ6bS42Ny0xLjAxSDIyQTYuMDAzIDYuMDAzIDAgMCAwIDE2IDJ2MS4zM2MyLjU4IDAgNC42NiAyLjA4IDQuNjcgNC42NnptLTIuNjcgMGgxLjMzQTMuMzI3IDMuMzI3IDAgMCAwIDE2IDQuNjdWNmMxLjExIDAgMS45OS44OSAyIDEuOTl6TTcgMTRjMCAyLjc2IDIuMjQgNSA1IDVzNS0yLjI0IDUtNS0yLjI0LTUtNS01LTUgMi4yNC01IDV6bTggMGMwIDEuNjUtMS4zNSAzLTMgM3MtMy0xLjM1LTMtMyAxLjM1LTMgMy0zIDMgMS4zNCAzIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2dvRGV2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTcuNjggMTQuOThINlY5aDEuNzFjMS4yOCAwIDEuNzEgMS4wMyAxLjcxIDEuNzF2Mi41NmMwIC42OC0uNDIgMS43MS0xLjc0IDEuNzF6bTQuNy0zLjUydjEuMDdIMTEuMnYxLjM5aDEuOTN2MS4wN2gtMi4yNWMtLjQuMDEtLjc0LS4zMS0uNzUtLjcxVjkuNzVjLS4wMS0uNC4zMS0uNzQuNzEtLjc1aDIuMjh2MS4wN0gxMS4ydjEuMzloMS4xOHptNC41IDIuNzdjLS40OCAxLjExLTEuMzMuODktMS43MSAwTDEzLjc3IDloMS4xOGwxLjA3IDQuMTFMMTcuMDkgOWgxLjE4bC0xLjM5IDUuMjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNzcgMTAuMTJoLS42M3YzLjc3aC42M2MuMTQgMCAuMjgtLjA1LjQyLS4xNi4xNC0uMS4yMS0uMjYuMjEtLjQ3di0yLjUyYzAtLjIxLS4wNy0uMzctLjIxLS40N2EuNzIuNzIgMCAwIDAtLjQyLS4xNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvb2tzMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0em0tNC00di0xLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41LjgzIDAgMS41LS42NyAxLjUtMS41VjlhMiAyIDAgMCAwLTItMkg5djJoNHYyaC0ydjJoMnYySDl2Mmg0YTIgMiAwIDAgMCAyLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb29rczQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTS4wNCAwaDI0djI0aC0yNFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4wNCAzaC0xNGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2aC0xNFY1aDE0djE0em0tNi0yaDJWN2gtMnY0aC0yVjdoLTJ2Nmg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9va3M1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6bS00LTR2LTJhMiAyIDAgMCAwLTItMmgtMlY5aDRWN0g5djZoNHYySDl2Mmg0YTIgMiAwIDAgMCAyLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb29rczYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE3aDJhMiAyIDAgMCAwIDItMnYtMmEyIDIgMCAwIDAtMi0yaC0yVjloNFY3aC00YTIgMiAwIDAgMC0yIDJ2NmEyIDIgMCAwIDAgMiAyem0wLTRoMnYyaC0ydi0yem04LTEwSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb29rc09uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0em0tNy0yaDJWN2gtNHYyaDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb29rc1R3byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0em0tNC00aC00di0yaDJhMiAyIDAgMCAwIDItMlY5YTIgMiAwIDAgMC0yLTJIOXYyaDR2MmgtMmEyIDIgMCAwIDAtMiAydjRoNnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvb2tzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMGMtMy44NiAwLTcgMy4xNC03IDdoMmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1aDJjMC0zLjg2LTMuMTQtNy03LTd6bTAtNEM1LjkzIDYgMSAxMC45MyAxIDE3aDJjMC00Ljk2IDQuMDQtOSA5LTlzOSA0LjA0IDkgOWgyYzAtNi4wNy00LjkzLTExLTExLTExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG91cGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwaDhjMS4xIDAgMi0uOSAyLTJ2LThjMC01LjUxLTQuNDktMTAtMTAtMTB6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWljRXh0ZXJuYWxPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA1YzAtMS42Ni0xLjM0LTMtMy0zLS42MiAwLTEuMTkuMTktMS42Ny41bDQuMTUgNC4xNUM5LjggNi4xOCAxMCA1LjYxIDEwIDV6TTE0IDZjMC0xLjEuOS0yIDItMnMyIC45IDIgMnY5LjE3bDIgMlY2YzAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0djMuMTdsMiAyVjZ6TTIuMSAyLjEuNjkgMy41MSA1LjE3IDhINGwxIDEwaDFjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNHYtMS4xN2w2LjQ5IDYuNDkgMS40MS0xLjQxTDIuMSAyLjF6TTcuMTkgMTZoLS4zOGwtLjYtNmguOTZsLjU2LjU2TDcuMTkgMTZ6TTEyIDE4YzAgMS4xLS45IDItMiAycy0yLS45LTItMmgxbC41Ni01LjYxTDEyIDE0LjgzVjE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWljRXh0ZXJuYWxPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjIgN2MuNDgtLjUzLjc4LTEuMjMuNzgtMiAwLTEuNjYtMS4zNC0zLTMtM1M0IDMuMzQgNCA1YzAgLjc3LjMgMS40Ny43OCAyaDQuNDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDJjLTIuMjEgMC00IDEuNzktNCA0djEyYzAgMS4xLS45IDItMiAycy0yLS45LTItMmgxbDEtMTBINGwxIDEwaDFjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNFY2YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2MTZoMlY2YzAtMi4yMS0xLjc5LTQtNC00ek03LjE5IDE2aC0uMzhsLS42LTZoMS41OGwtLjYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vbm9jaHJvbWVQaG90b3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVoLTMuMkwxNSAzSDlMNy4yIDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE0aC04di0xYy0yLjggMC01LTIuMi01LTVzMi4yLTUgNS01VjdoOHYxMnptLTMtNmMwLTIuOC0yLjItNS01LTV2MS44YzEuOCAwIDMuMiAxLjQgMy4yIDMuMnMtMS40IDMuMi0zLjIgMy4yVjE4YzIuOCAwIDUtMi4yIDUtNXptLTguMiAwYzAgMS44IDEuNCAzLjIgMy4yIDMuMlY5LjhjLTEuOCAwLTMuMiAxLjQtMy4yIDMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdGlvblBob3Rvc0F1dG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yLjg4IDcuODggMS41NCAxLjU0QzQuMTUgMTAuMjMgNCAxMS4xIDQgMTJjMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOC0zLjU5LTgtOC04Yy0uOSAwLTEuNzcuMTUtMi41OC40Mkw3Ljg5IDIuODlDOS4xNSAyLjMyIDEwLjU0IDIgMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMHMtNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0xLjQ3LjMyLTIuODYuODgtNC4xMnpNNyA1LjVDNyA2LjMzIDYuMzMgNyA1LjUgN1M0IDYuMzMgNCA1LjUgNC42NyA0IDUuNSA0IDcgNC42NyA3IDUuNXptNS4wMyAzLjQ5aC0uMDdMMTAuOCAxMi4zaDIuMzlsLTEuMTYtMy4zMXptLS43NC0xLjQ5aDEuNDNsMy4wMSA4aC0xLjM5bC0uNzItMi4wNGgtMy4yM2wtLjczIDIuMDRIOC4yOGwzLjAxLTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb3Rpb25QaG90b3NPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjgxIDIuODEgMS4zOSA0LjIybDIuMjcgMi4yN0E5LjkxIDkuOTEgMCAwIDAgMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMCAyLjA0IDAgMy45My0uNjEgNS41MS0xLjY2bDIuMjcgMi4yNyAxLjQxLTEuNDJMMi44MSAyLjgxek0xMiAyMGMtNC40MSAwLTgtMy41OS04LTggMC0xLjQ4LjQxLTIuODYgMS4xMi00LjA2bDEwLjkzIDEwLjk0QTcuODY5IDcuODY5IDAgMCAxIDEyIDIwek0xMiA0YzQuNDEgMCA4IDMuNTkgOCA4IDAgMS40OC0uNDEgMi44Ni0xLjEyIDQuMDVsMS40NSAxLjQ1QTkuNzgyIDkuNzgyIDAgMCAwIDIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwLTIuMDQgMC0zLjkzLjYxLTUuNTEgMS42NmwxLjQ1IDEuNDVDOS4xNCA0LjQxIDEwLjUyIDQgMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdGlvblBob3Rvc09uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMi44OCA3Ljg4IDEuNTQgMS41NEM0LjE1IDEwLjIzIDQgMTEuMSA0IDEyYzAgNC40MSAzLjU5IDggOCA4czgtMy41OSA4LTgtMy41OS04LTgtOGMtLjkgMC0xLjc3LjE1LTIuNTguNDJMNy44OSAyLjg5QzkuMTUgMi4zMiAxMC41NCAyIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTBzLTQuNDggMTAtMTAgMTBTMiAxNy41MiAyIDEyYzAtMS40Ny4zMi0yLjg2Ljg4LTQuMTJ6TTcgNS41QzcgNi4zMyA2LjMzIDcgNS41IDdTNCA2LjMzIDQgNS41IDQuNjcgNCA1LjUgNCA3IDQuNjcgNyA1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb3Rpb25QaG90b3NQYXVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIuODggNy44OCAxLjU0IDEuNTRDNC4xNSAxMC4yMyA0IDExLjEgNCAxMmMwIDQuNDEgMy41OSA4IDggOHM4LTMuNTkgOC04LTMuNTktOC04LThjLS45IDAtMS43Ny4xNS0yLjU4LjQyTDcuODkgMi44OUM5LjE1IDIuMzIgMTAuNTQgMiAxMiAyYzUuNTIgMCAxMCA0LjQ4IDEwIDEwcy00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMmMwLTEuNDcuMzItMi44Ni44OC00LjEyek03IDUuNUM3IDYuMzMgNi4zMyA3IDUuNSA3UzQgNi4zMyA0IDUuNSA0LjY3IDQgNS41IDQgNyA0LjY3IDcgNS41em00IDkuNUg5VjloMnY2em00IDBoLTJWOWgydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb3Rpb25QaG90b3NQYXVzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMmMwIDUuNTItNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJjMC0xLjE5LjIyLTIuMzIuNi0zLjM4bDEuODguNjhDNC4xNyAxMC4xNCA0IDExLjA1IDQgMTJjMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOC0zLjU5LTgtOC04Yy0uOTUgMC0xLjg1LjE3LTIuNjkuNDhsLS42OC0xLjg5QzkuNjkgMi4yMiAxMC44MiAyIDEyIDJjNS41MiAwIDEwIDQuNDggMTAgMTB6TTUuNSA0QzQuNjcgNCA0IDQuNjcgNCA1LjVTNC42NyA3IDUuNSA3IDcgNi4zMyA3IDUuNSA2LjMzIDQgNS41IDR6TTExIDE2VjhIOXY4aDJ6bTQgMFY4aC0ydjhoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vdmllQ3JlYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNzYgMTBIMjB2OEg0VjYuNDdNMjIgNGgtNGwyIDRoLTNsLTItNGgtMmwyIDRoLTNsLTItNEg4bDIgNEg3TDUgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb3ZpZUZpbHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTAgMTEtLjk0IDIuMDZMNyAxNGwyLjA2Ljk0TDEwIDE3bC45NC0yLjA2TDEzIDE0bC0yLjA2LS45NHptOC4wMS03IDIgNGgtM2wtMi00aC0ybDIgNGgtM2wtMi00aC0ybDIgNGgtM2wtMi00aC0xYy0xLjEgMC0xLjk5LjktMS45OSAybC0uMDEgMTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAxLjk5LS45IDEuOTktMlY0aC0zLjk5em0yIDE0aC0xNlY2LjQ3TDUuNzcgMTBIMTZsLS42MyAxLjM3TDE0IDEybDEuMzcuNjNMMTYgMTRsLjYzLTEuMzdMMTggMTJsLTEuMzctLjYzTDE2IDEwaDQuMDF2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOWgtMy41djZIMTV2LTEuNWgyYy41NSAwIDEtLjQ1IDEtMVYxMGMwLS41NS0uNDUtMS0xLTF6bS0uNSAzSDE1di0xLjVoMS41VjEyek0xMS41IDlIN2MtLjU1IDAtMSAuNDUtMSAxdjVoMS41di00LjVoMXYzSDEwdi0zaDFWMTVoMS41di01YzAtLjU1LS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTUgMTlWNWgxNHYxNEg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTXVzaWNOb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAzIC4wMSAxMC41NWMtLjU5LS4zNC0xLjI3LS41NS0yLS41NWE0LjAwMSA0LjAwMSAwIDEgMCAwIDhjMi4yMiAwIDMuOTktMS43OSAzLjk5LTRWN2g0VjNoLTZ6bS0xLjk5IDE2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU11c2ljT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA3aDRWM2gtNnY0LjYxbDIgMnptLTIgMy40NEw0LjQxIDIuODYgMyA0LjI3bDkgOXYuMjhjLS45NC0uNTQtMi4xLS43NS0zLjMzLS4zMi0xLjM0LjQ4LTIuMzcgMS42Ny0yLjYxIDMuMDdhNC4wMDcgNC4wMDcgMCAwIDAgNC41OSA0LjY1YzEuOTYtLjMxIDMuMzUtMi4xMSAzLjM1LTQuMXYtMS41OEwxOS43MyAyMWwxLjQxLTEuNDFMMTIgMTAuNDR6TTEwIDE5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5hdHVyZVBlb3BsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI0LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi4xNyA5LjE3YzAtMy44Ny0zLjEzLTctNy03cy03IDMuMTMtNyA3QTYuOTggNi45OCAwIDAgMCAxNCAxNi4wNlYyMEg2di0zaDF2LTRjMC0uNTUtLjQ1LTEtMS0xSDNjLS41NSAwLTEgLjQ1LTEgMXY0aDF2NWgxNnYtMmgtM3YtMy44OGE3IDcgMCAwIDAgNi4xNy02Ljk1em0tNyA1Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5hdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTYuMTJoLS4wM2MzLjQ5LS40IDYuMi0zLjM2IDYuMi02Ljk1IDAtMy44Ny0zLjEzLTctNy03cy03IDMuMTMtNyA3QTYuOTggNi45OCAwIDAgMCAxMSAxNi4wNlYyMEg1djJoMTR2LTJoLTZ2LTMuODh6TTcuMTcgOS4xN2MwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1LTIuMjQgNS01IDUtNS0yLjI0LTUtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5hdmlnYXRlQmVmb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42MSA3LjQxIDE0LjIgNmwtNiA2IDYgNiAxLjQxLTEuNDFMMTEuMDMgMTJsNC41OC00LjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmF2aWdhdGVOZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wMiA2IDguNjEgNy40MSAxMy4xOSAxMmwtNC41OCA0LjU5TDEwLjAyIDE4bDYtNi02LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYWxldHRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJDNi40OSAyMiAyIDE3LjUxIDIgMTJTNi40OSAyIDEyIDJzMTAgNC4wNCAxMCA5YzAgMy4zMS0yLjY5IDYtNiA2aC0xLjc3Yy0uMjggMC0uNS4yMi0uNS41IDAgLjEyLjA1LjIzLjEzLjMzLjQxLjQ3LjY0IDEuMDYuNjQgMS42N0EyLjUgMi41IDAgMCAxIDEyIDIyem0wLTE4Yy00LjQxIDAtOCAzLjU5LTggOHMzLjU5IDggOCA4Yy4yOCAwIC41LS4yMi41LS41YS41NC41NCAwIDAgMC0uMTQtLjM1Yy0uNDEtLjQ2LS42My0xLjA1LS42My0xLjY1YTIuNSAyLjUgMCAwIDEgMi41LTIuNUgxNmMyLjIxIDAgNC0xLjc5IDQtNCAwLTMuODYtMy41OS03LTgtN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2LjVcIixcImN5XCI6XCIxMS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5LjVcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0LjVcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE3LjVcIixcImN5XCI6XCIxMS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhbm9yYW1hRmlzaEV5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYW5vcmFtYUhvcml6b250YWxTZWxlY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA1LjVjLTMuODkgMC02Ljk1LS44NC04LjY5LTEuNDNBLjk5My45OTMgMCAwIDAgMiA1LjAyVjE5YzAgLjY4LjY2IDEuMTcgMS4zMS45NUM1LjM2IDE5LjI2IDguMSAxOC41IDEyIDE4LjVjMy44NyAwIDYuNjYuNzYgOC42OSAxLjQ1QS45OTkuOTk5IDAgMCAwIDIyIDE5VjVjMC0uNjgtLjY2LTEuMTctMS4zMS0uOTUtMi4wMy42OC00LjgzIDEuNDUtOC42OSAxLjQ1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFub3JhbWFIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA2LjU0djEwLjkxYy0yLjYtLjc3LTUuMjgtMS4xNi04LTEuMTZzLTUuNC4zOS04IDEuMTZWNi41NGMyLjYuNzcgNS4yOCAxLjE2IDggMS4xNiAyLjcyLjAxIDUuNC0uMzggOC0xLjE2TTIxLjQzIDRjLS4xIDAtLjIuMDItLjMxLjA2QzE4LjE4IDUuMTYgMTUuMDkgNS43IDEyIDUuN3MtNi4xOC0uNTUtOS4xMi0xLjY0QS45NC45NCAwIDAgMCAyLjU3IDRjLS4zNCAwLS41Ny4yMy0uNTcuNjN2MTQuNzVjMCAuMzkuMjMuNjIuNTcuNjIuMSAwIC4yLS4wMi4zMS0uMDYgMi45NC0xLjEgNi4wMy0xLjY0IDkuMTItMS42NHM2LjE4LjU1IDkuMTIgMS42NGMuMTEuMDQuMjEuMDYuMzEuMDYuMzMgMCAuNTctLjIzLjU3LS42M1Y0LjYzYzAtLjQtLjI0LS42My0uNTctLjYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFub3JhbWFQaG90b3NwaGVyZVNlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk1IDguMTVjLS4yOS0uMTYtLjYxLS4zMS0uOTMtLjQ2QzE5LjQgNC4zMyAxNS45OCAyIDEyIDIgOC4wMiAyIDQuNiA0LjMzIDIuOTkgNy42OGMtLjMzLjE1LS42NC4zLS45My40NkMxLjQxIDguNSAxIDkuMTcgMSA5LjkxdjQuMThjMCAuNzQuNDEgMS40MSAxLjA1IDEuNzcuMjkuMTYuNjEuMzEuOTMuNDZDNC42IDE5LjY3IDguMDIgMjIgMTIgMjJjMy45OCAwIDcuNC0yLjMzIDkuMDEtNS42OC4zMy0uMTUuNjQtLjMuOTMtLjQ2LjY1LS4zNiAxLjA2LTEuMDMgMS4wNi0xLjc3VjkuOTFjMC0uNzQtLjQxLTEuNDEtMS4wNS0xLjc2ek0xMiA0YzIuMzcgMCA0LjQ5IDEuMDQgNS45NSAyLjY4QzE2LjE3IDYuMjUgMTQuMTUgNiAxMiA2Yy0yLjE1IDAtNC4xNy4yNS01Ljk1LjY4QTcuOTQzIDcuOTQzIDAgMCAxIDEyIDR6bTAgMTZjLTIuMzcgMC00LjQ5LTEuMDQtNS45NS0yLjY4IDEuNzguNDMgMy44LjY4IDUuOTUuNjhzNC4xNy0uMjUgNS45NS0uNjhBNy45NDMgNy45NDMgMCAwIDEgMTIgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYW5vcmFtYVBob3Rvc3BoZXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuOTUgOC4xNWMtLjI5LS4xNi0uNjEtLjMxLS45My0uNDZDMTkuNCA0LjMzIDE1Ljk4IDIgMTIgMiA4LjAyIDIgNC42IDQuMzMgMi45OSA3LjY4Yy0uMzMuMTUtLjY0LjMtLjkzLjQ2QzEuNDEgOC41IDEgOS4xNyAxIDkuOTF2NC4xOGMwIC43NC40MSAxLjQxIDEuMDUgMS43Ny4yOS4xNi42MS4zMS45My40NkM0LjYgMTkuNjcgOC4wMiAyMiAxMiAyMmMzLjk4IDAgNy40LTIuMzMgOS4wMS01LjY4LjMzLS4xNS42NC0uMy45My0uNDYuNjUtLjM2IDEuMDYtMS4wMyAxLjA2LTEuNzdWOS45MWMwLS43NC0uNDEtMS40MS0xLjA1LTEuNzZ6TTIxIDkuOTF2NC4xOWMtMi4xOSAxLjIxLTUuNDcgMS45LTkgMS45LTMuNTMgMC02LjgxLS43LTktMS45MVY5LjkxQzUuMiA4LjY5IDguNDcgOCAxMiA4YzMuNTMgMCA2LjgxLjcgOSAxLjkxek0xMiA0YzIuMzcgMCA0LjQ5IDEuMDQgNS45NSAyLjY4QzE2LjE3IDYuMjUgMTQuMTUgNiAxMiA2Yy0yLjE1IDAtNC4xNy4yNS01Ljk1LjY4QTcuOTQzIDcuOTQzIDAgMCAxIDEyIDR6bTAgMTZjLTIuMzcgMC00LjQ5LTEuMDQtNS45NS0yLjY4IDEuNzguNDMgMy44LjY4IDUuOTUuNjhzNC4xNy0uMjUgNS45NS0uNjhBNy45NDMgNy45NDMgMCAwIDEgMTIgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYW5vcmFtYVZlcnRpY2FsU2VsZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAxMmMwLTMuODkuODQtNi45NSAxLjQzLTguNjlBLjk5My45OTMgMCAwIDAgMTguOTggMkg1Yy0uNjggMC0xLjE2LjY2LS45NSAxLjMxQzQuNzQgNS4zNiA1LjUgOC4xIDUuNSAxMmMwIDMuODctLjc2IDYuNjYtMS40NSA4LjY5LS4yMS42NS4yNyAxLjMxLjk1IDEuMzFoMTRjLjY4IDAgMS4xNy0uNjYuOTUtMS4zMS0uNjgtMi4wMy0xLjQ1LTQuODMtMS40NS04LjY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFub3JhbWFWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOTQgMjEuMTJjLTEuMS0yLjk0LTEuNjQtNi4wMy0xLjY0LTkuMTJzLjU1LTYuMTggMS42NC05LjEyYS45NC45NCAwIDAgMCAuMDYtLjMxYzAtLjM0LS4yMy0uNTctLjYzLS41N0g0LjYzYy0uNCAwLS42My4yMy0uNjMuNTcgMCAuMS4wMi4yLjA2LjMxQzUuMTYgNS44MiA1LjcxIDguOTEgNS43MSAxMnMtLjU1IDYuMTgtMS42NCA5LjEyYy0uMDUuMTEtLjA3LjIyLS4wNy4zMSAwIC4zMy4yMy41Ny42My41N2gxNC43NWMuMzkgMCAuNjMtLjI0LjYzLS41Ny0uMDEtLjEtLjAzLS4yLS4wNy0uMzF6TTYuNTQgMjBjLjc3LTIuNiAxLjE2LTUuMjggMS4xNi04cy0uMzktNS40LTEuMTYtOGgxMC45MWMtLjc3IDIuNi0xLjE2IDUuMjgtMS4xNiA4cy4zOSA1LjQgMS4xNiA4SDYuNTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYW5vcmFtYVdpZGVBbmdsZVNlbGVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjLTMuOTcgMC02Ljg1LjYzLTkgMS0uNTUgMS45Ny0xIDMuOTItMSA3IDAgMy4wMy40NSA1LjA1IDEgNyAyLjE1LjM3IDQuOTggMSA5IDEgMy45NyAwIDYuODUtLjYzIDktMSAuNTctMi4wMiAxLTMuOTkgMS03IDAtMy4wMy0uNDUtNS4wNS0xLTctMi4xNS0uMzctNC45OC0xLTktMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhbm9yYW1hV2lkZUFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YzIuNDUgMCA0LjcxLjIgNy4yOS42NC40NyAxLjc4LjcxIDMuNTguNzEgNS4zNnMtLjI0IDMuNTgtLjcxIDUuMzZjLTIuNTguNDQtNC44NC42NC03LjI5LjY0cy00LjcxLS4yLTcuMjktLjY0QzQuMjQgMTUuNTggNCAxMy43OCA0IDEycy4yNC0zLjU4LjcxLTUuMzZDNy4yOSA2LjIgOS41NSA2IDEyIDZtMC0yYy0yLjczIDAtNS4yMi4yNC03Ljk1LjcybC0uOTMuMTYtLjI1LjlDMi4yOSA3Ljg1IDIgOS45MyAyIDEycy4yOSA0LjE1Ljg3IDYuMjJsLjI1Ljg5LjkzLjE2YzIuNzMuNDkgNS4yMi43MyA3Ljk1LjczczUuMjItLjI0IDcuOTUtLjcybC45My0uMTYuMjUtLjg5Yy41OC0yLjA4Ljg3LTQuMTYuODctNi4yM3MtLjI5LTQuMTUtLjg3LTYuMjJsLS4yNS0uODktLjkzLS4xNkMxNy4yMiA0LjI0IDE0LjczIDQgMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhbm9yYW1hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEgzVjZoMTh2MTJ6bS02LjUtN0wxMSAxNS41MSA4LjUgMTIuNSA1IDE3aDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvdG9BbGJ1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE4SDZWNGg1djdsMi41LTEuNUwxNiAxMVY0aDJ2MTZ6bS00LjM4LTYuNUwxNyAxOEg3bDIuMzgtMy4xN0wxMSAxN2wyLjYyLTMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob3RvQ2FtZXJhQmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVoLTMuMTdMMTUgM0g5TDcuMTcgNUg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY3aDQuMDVsMS44My0yaDQuMjRsMS44MyAySDIwdjEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4yNSAxNiA5IDEzbC0zIDRoMTJsLTMuNzUtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob3RvQ2FtZXJhRnJvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1aC0zLjE3TDE1IDNIOUw3LjE3IDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE0SDRWN2g0LjA1bDEuODMtMmg0LjI0bDEuODMgMkgyMHYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjExXCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0Ljc4IDE0LjU4YTYuOTUgNi45NSAwIDAgMC01LjU2IDBBMi4wMSAyLjAxIDAgMCAwIDggMTYuNDNWMTdoOHYtLjU3YzAtLjgxLS40OC0xLjUzLTEuMjItMS44NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob3RvQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC4xMiA0IDEuODMgMkgyMHYxMkg0VjZoNC4wNWwxLjgzLTJoNC4yNE0xNSAySDlMNy4xNyA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMmgtMy4xN0wxNSAyem0tMyA3YzEuNjUgMCAzIDEuMzUgMyAzcy0xLjM1IDMtMyAzLTMtMS4zNS0zLTMgMS4zNS0zIDMtM20wLTJjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvdG9GaWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEwdjlINC45OFY1aDlWM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi05aC0yem0tMi45NC0yLjA2TDE3IDEwbC45NC0yLjA2TDIwIDdsLTIuMDYtLjk0TDE3IDRsLS45NCAyLjA2TDE0IDd6TTEyIDhsLTEuMjUgMi43NUw4IDEybDIuNzUgMS4yNUwxMiAxNmwxLjI1LTIuNzVMMTYgMTJsLTIuNzUtMS4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob3RvTGlicmFyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNHYxMkg4VjRoMTJtMC0ySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTguNSA5LjY3IDEuNjkgMi4yNiAyLjQ4LTMuMUwxOSAxNUg5ek0yIDZ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZIMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob3RvU2l6ZVNlbGVjdEFjdHVhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0gzQzIgMyAxIDQgMSA1djE0YzAgMS4xLjkgMiAyIDJoMThjMSAwIDItMSAyLTJWNWMwLTEtMS0yLTItMnptMCAxNS45MmMtLjAyLjAzLS4wNi4wNi0uMDguMDhIM1Y1LjA4TDMuMDggNWgxNy44M2MuMDMuMDIuMDYuMDYuMDguMDh2MTMuODR6bS0xMC0zLjQxTDguNSAxMi41IDUgMTdoMTRsLTQuNS02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvdG9TaXplU2VsZWN0TGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE1aDJ2MmgtMnYtMnptMC00aDJ2MmgtMnYtMnptMiA4aC0ydjJjMSAwIDItMSAyLTJ6TTEzIDNoMnYyaC0yVjN6bTggNGgydjJoLTJWN3ptMC00djJoMmMwLTEtMS0yLTItMnpNMSA3aDJ2MkgxVjd6bTE2LTRoMnYyaC0yVjN6bTAgMTZoMnYyaC0ydi0yek0zIDNDMiAzIDEgNCAxIDVoMlYzem02IDBoMnYySDlWM3pNNSAzaDJ2Mkg1VjN6bS00IDh2OGMwIDEuMS45IDIgMiAyaDEyVjExSDF6bTIgOCAyLjUtMy4yMSAxLjc5IDIuMTUgMi41LTMuMjJMMTMgMTlIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob3RvU2l6ZVNlbGVjdFNtYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxNWgtMnYyaDJ2LTJ6bTAtNGgtMnYyaDJ2LTJ6bTAgOGgtMnYyYzEgMCAyLTEgMi0yek0xNSAzaC0ydjJoMlYzem04IDRoLTJ2MmgyVjd6bS0yLTR2MmgyYzAtMS0xLTItMi0yek0zIDIxaDh2LTZIMXY0YzAgMS4xLjkgMiAyIDJ6TTMgN0gxdjJoMlY3em0xMiAxMmgtMnYyaDJ2LTJ6bTQtMTZoLTJ2MmgyVjN6bTAgMTZoLTJ2Mmgydi0yek0zIDNDMiAzIDEgNCAxIDVoMlYzem0wIDhIMXYyaDJ2LTJ6bTgtOEg5djJoMlYzek03IDNINXYyaDJWM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob3RvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djE0SDVWNWgxNG0wLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNC44NiA4Ljg2LTMgMy44N0w5IDEzLjE0IDYgMTdoMTJsLTMuODYtNS4xNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpY3R1cmVBc1BkZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRIOFY0aDEydjEyek00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTIgNlY5YzAtLjU1LS40NS0xLTEtMWgtMnY1aDJjLjU1IDAgMS0uNDUgMS0xem0tMi0zaDF2M2gtMVY5em00IDJoMXYtMWgtMVY5aDFWOGgtMnY1aDF6bS04IDBoMWMuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTFIOXY1aDF2LTJ6bTAtMmgxdjFoLTFWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvcnRyYWl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMmMxLjY1IDAgMy0xLjM1IDMtM3MtMS4zNS0zLTMtMy0zIDEuMzUtMyAzIDEuMzUgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem02IDguNThjMC0yLjUtMy45Ny0zLjU4LTYtMy41OHMtNiAxLjA4LTYgMy41OFYxOGgxMnYtMS40MnpNOC40OCAxNmMuNzQtLjUxIDIuMjMtMSAzLjUyLTFzMi43OC40OSAzLjUyIDFIOC40OHpNMTkgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJhd09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjE1IDE0LjMyLjU5LTIuMzYuNzYgMy4wNGgxLjQ4bDEuNS02aC0xLjVsLS43NCAzLS43NC0zaC0xLjUybC0uNzQgMy0uNzQtM0gxNGwuNzIgMi45ek0xLjM5IDQuMjIgNi4xNyA5SDN2NmgxLjV2LTJoMS4xbC45IDJIOGwtLjktMi4xYy41LS4zLjktLjguOS0xLjR2LS42N2wxLjQzIDEuNDNMOC43NSAxNWgxLjVsLjM4LTEuNWguMDRsOS4xMSA5LjExIDEuNDEtMS40MUwyLjgxIDIuODEgMS4zOSA0LjIyek02LjUgMTEuNWgtMnYtMWgydjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSYXdPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSA5SDN2NmgxLjV2LTJoMS4xbC45IDJIOGwtLjktMi4xYy41LS4zLjktLjguOS0xLjR2LTFDOCA5LjcgNy4zIDkgNi41IDl6bTAgMi41aC0ydi0xaDJ2MXpNMTAuMjUgOWwtMS41IDZoMS41bC4zOC0xLjVoMS43NWwuMzcgMS41aDEuNWwtMS41LTZoLTIuNXptLjc1IDMgLjI1LTFoLjVsLjI1IDFoLTF6TTE5Ljk4IDlsLS43NCAzLS43NC0zaC0xLjUybC0uNzQgMy0uNzQtM0gxNGwxLjUgNmgxLjQ4bC43Ni0zLjA0Ljc2IDMuMDRoMS40OGwxLjUtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlY2VpcHRMb25nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41IDMuNSAxOCAybC0xLjUgMS41TDE1IDJsLTEuNSAxLjVMMTIgMmwtMS41IDEuNUw5IDIgNy41IDMuNSA2IDJ2MTRIM3YzYzAgMS42NiAxLjM0IDMgMyAzaDEyYzEuNjYgMCAzLTEuMzQgMy0zVjJsLTEuNSAxLjV6TTE1IDIwSDZjLS41NSAwLTEtLjQ1LTEtMXYtMWgxMHYyem00LTFjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTF2LTNIOFY1aDExdjE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDdoNnYySDl6TTE2IDdoMnYyaC0yek05IDEwaDZ2Mkg5ek0xNiAxMGgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZW1vdmVSZWRFeWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDYuNWE5Ljc3IDkuNzcgMCAwIDEgOC44MiA1LjVjLTEuNjUgMy4zNy01LjAyIDUuNS04LjgyIDUuNVM0LjgzIDE1LjM3IDMuMTggMTJBOS43NyA5Ljc3IDAgMCAxIDEyIDYuNW0wLTJDNyA0LjUgMi43MyA3LjYxIDEgMTJjMS43MyA0LjM5IDYgNy41IDExIDcuNXM5LjI3LTMuMTEgMTEtNy41Yy0xLjczLTQuMzktNi03LjUtMTEtNy41em0wIDVhMi41IDIuNSAwIDAgMSAwIDUgMi41IDIuNSAwIDAgMSAwLTVtMC0yYy0yLjQ4IDAtNC41IDIuMDItNC41IDQuNXMyLjAyIDQuNSA0LjUgNC41IDQuNS0yLjAyIDQuNS00LjUtMi4wMi00LjUtNC41LTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvdGF0ZTkwRGVncmVlc0NjdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4zNCA2LjQxLjg2IDEyLjlsNi40OSA2LjQ4IDYuNDktNi40OC02LjUtNi40OXpNMy42OSAxMi45bDMuNjYtMy42NkwxMSAxMi45bC0zLjY2IDMuNjYtMy42NS0zLjY2em0xNS42Ny02LjI2QTguOTUgOC45NSAwIDAgMCAxMyA0Vi43Nkw4Ljc2IDUgMTMgOS4yNFY2YzEuNzkgMCAzLjU4LjY4IDQuOTUgMi4wNWE3LjAwNyA3LjAwNyAwIDAgMSAwIDkuOSA2Ljk3MyA2Ljk3MyAwIDAgMS03Ljc5IDEuNDRsLTEuNDkgMS40OUMxMC4wMiAyMS42MiAxMS41MSAyMiAxMyAyMmMyLjMgMCA0LjYxLS44OCA2LjM2LTIuNjRhOC45OCA4Ljk4IDAgMCAwIDAtMTIuNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb3RhdGU5MERlZ3JlZXNDdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTNhOSA5IDAgMCAwIDEzLjc5IDcuNjJsLTEuNDYtMS40NmMtLjk5LjUzLTIuMTMuODQtMy4zMy44NC0zLjg2IDAtNy0zLjE0LTctN3MzLjE0LTcgNy03aC4xN0w5LjU5IDcuNTkgMTEgOWw0LTQtNC00LTEuNDIgMS40MUwxMS4xNyA0SDExYTkgOSAwIDAgMC05IDl6bTkgMCA2IDYgNi02LTYtNi02IDZ6bTYgMy4xN0wxMy44MyAxMyAxNyA5LjgzIDIwLjE3IDEzIDE3IDE2LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUm90YXRlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4xMSA4LjUzIDUuNyA3LjExQzQuOCA4LjI3IDQuMjQgOS42MSA0LjA3IDExaDIuMDJjLjE0LS44Ny40OS0xLjcyIDEuMDItMi40N3pNNi4wOSAxM0g0LjA3Yy4xNyAxLjM5LjcyIDIuNzMgMS42MiAzLjg5bDEuNDEtMS40MmMtLjUyLS43NS0uODctMS41OS0xLjAxLTIuNDd6bTEuMDEgNS4zMmMxLjE2LjkgMi41MSAxLjQ0IDMuOSAxLjYxVjE3LjljLS44Ny0uMTUtMS43MS0uNDktMi40Ni0xLjAzTDcuMSAxOC4zMnpNMTMgNC4wN1YxTDguNDUgNS41NSAxMyAxMFY2LjA5YzIuODQuNDggNSAyLjk0IDUgNS45MXMtMi4xNiA1LjQzLTUgNS45MXYyLjAyYzMuOTUtLjQ5IDctMy44NSA3LTcuOTNzLTMuMDUtNy40NC03LTcuOTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb3RhdGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNTUgNS41NSAxMSAxdjMuMDdDNy4wNiA0LjU2IDQgNy45MiA0IDEyczMuMDUgNy40NCA3IDcuOTN2LTIuMDJjLTIuODQtLjQ4LTUtMi45NC01LTUuOTFzMi4xNi01LjQzIDUtNS45MVYxMGw0LjU1LTQuNDV6TTE5LjkzIDExYTcuOTA2IDcuOTA2IDAgMCAwLTEuNjItMy44OWwtMS40MiAxLjQyYy41NC43NS44OCAxLjYgMS4wMiAyLjQ3aDIuMDJ6TTEzIDE3Ljl2Mi4wMmMxLjM5LS4xNyAyLjc0LS43MSAzLjktMS42MWwtMS40NC0xLjQ0Yy0uNzUuNTQtMS41OS44OS0yLjQ2IDEuMDN6bTMuODktMi40MiAxLjQyIDEuNDFjLjktMS4xNiAxLjQ1LTIuNSAxLjYyLTMuODloLTIuMDJjLS4xNC44Ny0uNDggMS43Mi0xLjAyIDIuNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaHV0dGVyU3BlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDFIOXYyaDZWMXptNC4wMyA2LjM5IDEuNDItMS40MmMtLjQzLS41MS0uOS0uOTktMS40MS0xLjQxbC0xLjQyIDEuNDJBOC45NjIgOC45NjIgMCAwIDAgMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWE4Ljk5NCA4Ljk5NCAwIDAgMCA3LjAzLTE0LjYxek0xMiAyMGMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6bS0uMzItNUg2LjM1YTUuOTkyIDUuOTkyIDAgMCAwIDMuNDEgMy41NmwtLjExLS4wNiAyLjAzLTMuNXptNS45Ny00YTYuMDEyIDYuMDEyIDAgMCAwLTMuMzQtMy41NEwxMi4yNiAxMWg1LjM5em0tNy4wNCA3LjgzYy40NS4xMS45MS4xNyAxLjM5LjE3IDEuMzQgMCAyLjU3LS40NSAzLjU3LTEuMTlsLTIuMTEtMy45LTIuODUgNC45MnpNNy41NSA4Ljk5QTUuOTY1IDUuOTY1IDAgMCAwIDYgMTNjMCAuMzQuMDQuNjcuMDkgMWg0LjcyTDcuNTUgOC45OXptOC43OSA4LjE0QTUuOTQgNS45NCAwIDAgMCAxOCAxM2MwLS4zNC0uMDQtLjY3LS4wOS0xaC00LjM0bDIuNzcgNS4xM3ptLTMuMDEtOS45OEMxMi45IDcuMDYgMTIuNDYgNyAxMiA3Yy0xLjQgMC0yLjY5LjQ5LTMuNzEgMS4yOWwyLjMyIDMuNTYgMi43Mi00Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbGlkZXNob3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDh2OGw1LTQtNS00em05LTVINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0cmFpZ2h0ZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDZIM2MtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTBIM1Y4aDJ2NGgyVjhoMnY0aDJWOGgydjRoMlY4aDJ2NGgyVjhoMnY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3R5bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIuNTMgMTkuNjUgMS4zNC41NnYtOS4wM2wtMi40MyA1Ljg2Yy0uNDEgMS4wMi4wOCAyLjE5IDEuMDkgMi42MXptMTkuNS0zLjdMMTcuMDcgMy45OGEyLjAxMyAyLjAxMyAwIDAgMC0xLjgxLTEuMjNjLS4yNiAwLS41My4wNC0uNzkuMTVMNy4xIDUuOTVhMS45OTkgMS45OTkgMCAwIDAtMS4wOCAyLjZsNC45NiAxMS45N2ExLjk5OCAxLjk5OCAwIDAgMCAyLjYgMS4wOGw3LjM2LTMuMDVhMS45OTQgMS45OTQgMCAwIDAgMS4wOS0yLjZ6bS05LjIgMy44TDcuODcgNy43OWw3LjM1LTMuMDRoLjAxbDQuOTUgMTEuOTUtNy4zNSAzLjA1elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiOVwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Ljg4IDE5Ljc1YzAgMS4xLjkgMiAyIDJoMS40NWwtMy40NS04LjM0djYuMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2l0Y2hDYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRoLTMuMTdMMTUgMkg5TDcuMTcgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTkuODggNGg0LjI0bDEuODMgMkgyMHYxMkg0VjZoNC4wNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMUg5VjguNUw1LjUgMTIgOSAxNS41VjEzaDZ2Mi41bDMuNS0zLjVMMTUgOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3dpdGNoVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTNoNHYybDMtMy0zLTN2Mkg4VjlsLTMgMyAzIDN6bTEwLTMuNVY2YzAtLjU1LS40NS0xLTEtMUgzYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoMTRjLjU1IDAgMS0uNDUgMS0xdi0zLjVsNCA0di0xM2wtNCA0ek0xNiAxN0g0VjdoMTJ2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUYWdGYWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0zLjUtOWMuODMgMCAxLjUtLjY3IDEuNS0xLjVTMTYuMzMgOCAxNS41IDggMTQgOC42NyAxNCA5LjVzLjY3IDEuNSAxLjUgMS41em0tNyAwYy44MyAwIDEuNS0uNjcgMS41LTEuNVM5LjMzIDggOC41IDggNyA4LjY3IDcgOS41IDcuNjcgMTEgOC41IDExem0zLjUgNi41YzIuMzMgMCA0LjMxLTEuNDYgNS4xMS0zLjVINi44OWMuOCAyLjA0IDIuNzggMy41IDUuMTEgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGV4dHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNTEgMy4wOCAzLjA4IDE5LjUxYy4wOS4zNC4yNy42NS41MS45LjI1LjI0LjU2LjQyLjkuNTFMMjAuOTMgNC40OWMtLjE5LS42OS0uNzMtMS4yMy0xLjQyLTEuNDF6TTExLjg4IDMgMyAxMS44OHYyLjgzTDE0LjcxIDNoLTIuODN6TTUgM2MtMS4xIDAtMiAuOS0yIDJ2Mmw0LTRINXptMTQgMThjLjU1IDAgMS4wNS0uMjIgMS40MS0uNTkuMzctLjM2LjU5LS44Ni41OS0xLjQxdi0ybC00IDRoMnptLTkuNzEgMGgyLjgzTDIxIDEyLjEyVjkuMjlMOS4yOSAyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRoZXJtb3N0YXRBdXRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTJWNmMwLTEuNjYtMS4zNC0zLTMtM1M1IDQuMzQgNSA2djZjLTEuMjEuOTEtMiAyLjM3LTIgNCAwIDEuMTIuMzggMi4xNCAxIDIuOTdWMTloLjAyYy45MSAxLjIxIDIuMzUgMiAzLjk4IDJzMy4wNi0uNzkgMy45OC0ySDEydi0uMDNjLjYyLS44MyAxLTEuODUgMS0yLjk3IDAtMS42My0uNzktMy4wOS0yLTR6bS02IDRjMC0uOTQuNDUtMS44NCAxLjItMi40TDcgMTNWNmMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2N2wuOC42Yy43NS41NyAxLjIgMS40NiAxLjIgMi40SDV6TTE4LjYyIDRoLTEuNjFsLTMuMzggOWgxLjU2bC44MS0yLjNoMy42M2wuOCAyLjNIMjJsLTMuMzgtOXptLTIuMTUgNS4zOSAxLjMxLTMuNzJoLjA4bDEuMzEgMy43MmgtMi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGltZWxhcHNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4yNCA3Ljc1QTUuOTc0IDUuOTc0IDAgMCAwIDEyIDUuOTl2NmwtNC4yNCA0LjI0YzIuMzQgMi4zNCA2LjE0IDIuMzQgOC40OSAwYTUuOTkgNS45OSAwIDAgMC0uMDEtOC40OHpNMTIgMS45OWMtNS41MiAwLTEwIDQuNDgtMTAgMTBzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwLTQuNDgtMTAtMTAtMTB6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGltZXIxMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLS4wMSA3LjcyVjkuNGwzLTFWMThoMlY2aC0uMjVMLS4wMSA3Ljcyem0yMy43OCA2LjY1Yy0uMTQtLjI4LS4zNS0uNTMtLjYzLS43NC0uMjgtLjIxLS42MS0uMzktMS4wMS0uNTNzLS44NS0uMjctMS4zNS0uMzhhNi42NCA2LjY0IDAgMCAxLS44Ny0uMjNjLS4yMy0uMDgtLjQxLS4xNi0uNTUtLjI1cy0uMjMtLjE5LS4yOC0uM2EuOTc4Ljk3OCAwIDAgMSAuMDEtLjhjLjA2LS4xMy4xNS0uMjUuMjctLjM0LjEyLS4xLjI3LS4xOC40NS0uMjRzLjQtLjA5LjY0LS4wOWMuMjUgMCAuNDcuMDQuNjYuMTFzLjM1LjE3LjQ4LjI5LjIyLjI2LjI5LjQyYy4wNi4xNi4xLjMyLjEuNDloMS45NUEyLjUxNyAyLjUxNyAwIDAgMCAyMyA5LjgxYy0uMy0uMjUtLjY2LS40NC0xLjA5LS41OS0uNDMtLjE1LS45Mi0uMjItMS40Ni0uMjItLjUxIDAtLjk4LjA3LTEuMzkuMjFzLS43Ny4zMy0xLjA2LjU3Yy0uMjkuMjQtLjUxLjUyLS42Ny44NC0uMTYuMzItLjIzLjY1LS4yMyAxLjAxcy4wOC42OS4yMy45NmMuMTUuMjguMzYuNTIuNjQuNzMuMjcuMjEuNi4zOC45OC41My4zOC4xNC44MS4yNiAxLjI3LjM2LjM5LjA4LjcxLjE3Ljk1LjI2cy40My4xOS41Ny4yOWMuMTMuMS4yMi4yMi4yNy4zNC4wNS4xMi4wNy4yNS4wNy4zOSAwIC4zMi0uMTMuNTctLjQuNzdzLS42Ni4yOS0xLjE3LjI5Yy0uMjIgMC0uNDMtLjAyLS42NC0uMDgtLjIxLS4wNS0uNC0uMTMtLjU2LS4yNGExLjMzMyAxLjMzMyAwIDAgMS0uNTktMS4xMWgtMS44OWMwIC4zNi4wOC43MS4yNCAxLjA1cy4zOS42NS43LjkzYy4zMS4yNy42OS40OSAxLjE1LjY2cy45OC4yNSAxLjU4LjI1Yy41MyAwIDEuMDEtLjA2IDEuNDQtLjE5LjQzLS4xMy44LS4zMSAxLjExLS41NC4zMS0uMjMuNTQtLjUxLjcxLS44My4xNy0uMzIuMjUtLjY3LjI1LTEuMDYtLjAyLS40LS4wOS0uNzQtLjI0LTEuMDJ6bS05Ljk2LTcuMzJjLS4zNC0uNC0uNzUtLjctMS4yMy0uODgtLjQ3LS4xOC0xLjAxLS4yNy0xLjU5LS4yN3MtMS4xMS4wOS0xLjU5LjI3Yy0uNDguMTgtLjg5LjQ3LTEuMjMuODgtLjM0LjQxLS42LjkzLS43OSAxLjU5LS4xOC42NS0uMjggMS40NS0uMjggMi4zOXYxLjkyYzAgLjk0LjA5IDEuNzQuMjggMi4zOS4xOS42Ni40NSAxLjE5LjggMS42LjM0LjQxLjc1LjcxIDEuMjMuODlzMS4wMS4yOCAxLjU5LjI4Yy41OSAwIDEuMTItLjA5IDEuNTktLjI4LjQ4LS4xOC44OC0uNDggMS4yMi0uODlzLjYtLjk0Ljc4LTEuNmMuMTgtLjY1LjI4LTEuNDUuMjgtMi4zOXYtMS45MmMwLS45NC0uMDktMS43NC0uMjgtMi4zOS0uMTgtLjY2LS40NC0xLjE5LS43OC0xLjU5em0tLjkyIDYuMTdjMCAuNi0uMDQgMS4xMS0uMTIgMS41M3MtLjIuNzYtLjM2IDEuMDJjLS4xNi4yNi0uMzYuNDUtLjU5LjU3LS4yMy4xMi0uNTEuMTgtLjgyLjE4LS4zIDAtLjU4LS4wNi0uODItLjE4cy0uNDQtLjMxLS42LS41N2MtLjE2LS4yNi0uMjktLjYtLjM4LTEuMDJzLS4xMy0uOTMtLjEzLTEuNTN2LTIuNWMwLS42LjA0LTEuMTEuMTMtMS41MnMuMjEtLjc0LjM4LTFjLjE2LS4yNS4zNi0uNDMuNi0uNTUuMjQtLjExLjUxLS4xNy44MS0uMTcuMzEgMCAuNTguMDYuODEuMTcuMjQuMTEuNDQuMjkuNi41NS4xNi4yNS4yOS41OC4zNy45OXMuMTMuOTIuMTMgMS41MnYyLjUxaC0uMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaW1lcjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjYxIDEyLjk3Yy0uMTYtLjI0LS4zNi0uNDYtLjYyLS42NWEzLjM4IDMuMzggMCAwIDAtLjkzLS40OGMuMy0uMTQuNTctLjMuOC0uNS4yMy0uMi40Mi0uNDEuNTctLjY0LjE1LS4yMy4yNy0uNDYuMzQtLjcxLjA4LS4yNC4xMS0uNDkuMTEtLjczIDAtLjU1LS4wOS0xLjA0LS4yOC0xLjQ2LS4xOC0uNDItLjQ0LS43Ny0uNzgtMS4wNi0uMzMtLjI4LS43My0uNS0xLjItLjY0LS40NS0uMTMtLjk3LS4yLTEuNTMtLjItLjU1IDAtMS4wNi4wOC0xLjUyLjI0LS40Ny4xNy0uODcuNC0xLjIuNjktLjMzLjI5LS42LjYzLS43OCAxLjAzLS4yLjM5LS4yOS44My0uMjkgMS4yOWgxLjk4YzAtLjI2LjA1LS40OS4xNC0uNjkuMDktLjIuMjItLjM4LjM4LS41Mi4xNy0uMTQuMzYtLjI1LjU4LS4zM3MuNDYtLjEyLjczLS4xMmMuNjEgMCAxLjA2LjE2IDEuMzYuNDcuMy4zMS40NC43NS40NCAxLjMyIDAgLjI3LS4wNC41Mi0uMTIuNzQtLjA4LjIyLS4yMS40MS0uMzguNTdzLS4zOC4yOC0uNjMuMzctLjU1LjEzLS44OS4xM0g2LjcydjEuNTdINy45Yy4zNCAwIC42NC4wNC45MS4xMS4yNy4wOC41LjE5LjY5LjM1LjE5LjE2LjM0LjM2LjQ0LjYxLjEuMjQuMTYuNTQuMTYuODcgMCAuNjItLjE4IDEuMDktLjUzIDEuNDItLjM1LjMzLS44NC40OS0xLjQ1LjQ5LS4yOSAwLS41Ni0uMDQtLjgtLjEzLS4yNC0uMDgtLjQ0LS4yLS42MS0uMzZzLS4zLS4zNC0uMzktLjU2Yy0uMDktLjIyLS4xNC0uNDYtLjE0LS43Mkg0LjE5YzAgLjU1LjExIDEuMDMuMzIgMS40NS4yMS40Mi41Ljc3Ljg2IDEuMDVzLjc3LjQ5IDEuMjQuNjMuOTYuMjEgMS40OC4yMWMuNTcgMCAxLjA5LS4wOCAxLjU4LS4yM3MuOTEtLjM4IDEuMjYtLjY4Yy4zNi0uMy42NC0uNjYuODQtMS4xLjItLjQzLjMtLjkzLjMtMS40OCAwLS4yOS0uMDQtLjU4LS4xMS0uODYtLjA4LS4yNS0uMTktLjUxLS4zNS0uNzZ6bTkuMjYgMS40Yy0uMTQtLjI4LS4zNS0uNTMtLjYzLS43NC0uMjgtLjIxLS42MS0uMzktMS4wMS0uNTNzLS44NS0uMjctMS4zNS0uMzhhNi42NCA2LjY0IDAgMCAxLS44Ny0uMjNjLS4yMy0uMDgtLjQxLS4xNi0uNTUtLjI1cy0uMjMtLjE5LS4yOC0uM2MtLjA1LS4xMS0uMDgtLjI0LS4wOC0uMzlzLjAzLS4yOC4wOS0uNDEuMTUtLjI1LjI3LS4zNGMuMTItLjEuMjctLjE4LjQ1LS4yNHMuNC0uMDkuNjQtLjA5Yy4yNSAwIC40Ny4wNC42Ni4xMXMuMzUuMTcuNDguMjkuMjIuMjYuMjkuNDJjLjA2LjE2LjEuMzIuMS40OWgxLjk1YTIuNTE3IDIuNTE3IDAgMCAwLS45My0xLjk3Yy0uMy0uMjUtLjY2LS40NC0xLjA5LS41OS0uNDMtLjE1LS45Mi0uMjItMS40Ni0uMjItLjUxIDAtLjk4LjA3LTEuMzkuMjFzLS43Ny4zMy0xLjA2LjU3Yy0uMjkuMjQtLjUxLjUyLS42Ny44NHMtLjIzLjY1LS4yMyAxLjAxLjA4LjY4LjIzLjk2LjM3LjUyLjY0LjczYy4yNy4yMS42LjM4Ljk4LjUzLjM4LjE0LjgxLjI2IDEuMjcuMzYuMzkuMDguNzEuMTcuOTUuMjZzLjQzLjE5LjU3LjI5Yy4xMy4xLjIyLjIyLjI3LjM0LjA1LjEyLjA3LjI1LjA3LjM5IDAgLjMyLS4xMy41Ny0uNC43N3MtLjY2LjI5LTEuMTcuMjljLS4yMiAwLS40My0uMDItLjY0LS4wOC0uMjEtLjA1LS40LS4xMy0uNTYtLjI0YTEuMzMzIDEuMzMzIDAgMCAxLS41OS0xLjExaC0xLjg5YzAgLjM2LjA4LjcxLjI0IDEuMDVzLjM5LjY1LjcuOTNjLjMxLjI3LjY5LjQ5IDEuMTUuNjYuNDYuMTcuOTguMjUgMS41OC4yNS41MyAwIDEuMDEtLjA2IDEuNDQtLjE5LjQzLS4xMy44LS4zMSAxLjExLS41NC4zMS0uMjMuNTQtLjUxLjcxLS44My4xNy0uMzIuMjUtLjY3LjI1LTEuMDYtLjAyLS40LS4wOS0uNzQtLjI0LTEuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaW1lck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMWg2djJIOXpNMTIgNmMzLjg3IDAgNyAzLjEzIDcgNyAwIC45NC0uMTkgMS44My0uNTIgMi42NWwxLjUgMS41YTguOTYzIDguOTYzIDAgMCAwLS45NS05Ljc2bDEuNDItMS40MmMtLjQzLS41MS0uOS0uOTktMS40MS0xLjQxbC0xLjQyIDEuNDJhOC45NjIgOC45NjIgMCAwIDAtOS43Ny0uOTZsMS41IDEuNUE3LjA3IDcuMDcgMCAwIDEgMTIgNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEgOC4xNyAyIDJWOGgtMnpNMi44MSAyLjgxIDEuMzkgNC4yMmwzLjQgMy40YTguOTk0IDguOTk0IDAgMCAwIDEyLjU5IDEyLjU5bDIuNCAyLjQgMS40MS0xLjQxTDIuODEgMi44MXpNMTIgMjBjLTMuODcgMC03LTMuMTMtNy03IDAtMS40Ny40NS0yLjgzIDEuMjItMy45NWw5LjczIDkuNzNBNi45NDUgNi45NDUgMCAwIDEgMTIgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUaW1lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDFIOXYyaDZWMXptLTQgMTNoMlY4aC0ydjZ6bTguMDMtNi42MSAxLjQyLTEuNDJjLS40My0uNTEtLjktLjk5LTEuNDEtMS40MWwtMS40MiAxLjQyQTguOTYyIDguOTYyIDAgMCAwIDEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDlhOC45OTQgOC45OTQgMCAwIDAgNy4wMy0xNC42MXpNMTIgMjBjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVG9uYWxpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0xIDE3LjkzYy0zLjk0LS40OS03LTMuODUtNy03LjkzczMuMDUtNy40NCA3LTcuOTN2MTUuODZ6bTItMTUuODZjMS4wMy4xMyAyIC40NSAyLjg3LjkzSDEzdi0uOTN6TTEzIDdoNS4yNGMuMjUuMzEuNDguNjUuNjggMUgxM1Y3em0wIDNoNi43NGMuMDguMzMuMTUuNjYuMTkgMUgxM3YtMXptMCA5LjkzVjE5aDIuODdjLS44Ny40OC0xLjg0LjgtMi44Ny45M3pNMTguMjQgMTdIMTN2LTFoNS45MmMtLjIuMzUtLjQzLjY5LS42OCAxem0xLjUtM0gxM3YtMWg2LjkzYy0uMDQuMzQtLjExLjY3LS4xOSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHJhbnNmb3JtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxOHYtMkg4VjRoMkw3IDEgNCA0aDJ2MkgydjJoNHY4YzAgMS4xLjkgMiAyIDJoOHYyaC0ybDMgMyAzLTNoLTJ2LTJoNHpNMTAgOGg2djZoMlY4YzAtMS4xLS45LTItMi0yaC02djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUdW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE3djJoNnYtMkgzek0zIDV2MmgxMFY1SDN6bTEwIDE2di0yaDh2LTJoLTh2LTJoLTJ2Nmgyek03IDl2MkgzdjJoNHYyaDJWOUg3em0xNCA0di0ySDExdjJoMTB6bS02LTRoMlY3aDRWNWgtNFYzaC0ydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb0NhbWVyYUJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMC40OFY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTQuNDhsNCAzLjk4di0xMWwtNCAzLjk4ek0xNiAxOEg0VjZoMTJ2MTJ6bS00LjM4LTYuNUw5IDE1bC0xLjYyLTIuMTdMNSAxNmgxMGwtMy4zOC00LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWRlb0NhbWVyYUZyb250IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTAuNDhWNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi00LjQ4bDQgMy45OHYtMTFsLTQgMy45OHptLTItLjc5VjE4SDRWNmgxMnYzLjY5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTUuNDNjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1YTYuOTUgNi45NSAwIDAgMC01LjU2IDBBMi4wMSAyLjAxIDAgMCAwIDYgMTUuNDNWMTZoOHYtLjU3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlkZW9TdGFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNCAxOFY2aDIuOTVsLTIuMzMgOC43M0wxNi44MiAxOEg0em0xMS42Mi0yLjM5LTguNTUtMi4yOUw4LjM4IDguNGw4LjU2IDIuMjktMS4zMiA0Ljkyek0yMCAxOGgtMi45NWwyLjM0LTguNzNMNy4xOCA2SDIwdjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVmlld0NvbWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0djE2aDIwVjRIMnptMiAyaDE2djVINFY2em0wIDEydi01aDR2NUg0em02IDB2LTVoMTB2NUgxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZXdDb21wYWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0djE2aDIwVjRIMnptNC41IDE0SDR2LTIuNWgyLjVWMTh6bTAtNC43NUg0di0yLjVoMi41djIuNXptMC00Ljc1SDRWNmgyLjV2Mi41ek0xMSAxOEg4LjV2LTIuNUgxMVYxOHptMC00Ljc1SDguNXYtMi41SDExdjIuNXptMC00Ljc1SDguNVY2SDExdjIuNXptNC41IDkuNUgxM3YtMi41aDIuNVYxOHptMC00Ljc1SDEzdi0yLjVoMi41djIuNXptMC00Ljc1SDEzVjZoMi41djIuNXpNMjAgMThoLTIuNXYtMi41SDIwVjE4em0wLTQuNzVoLTIuNXYtMi41SDIwdjIuNXptMC00Ljc1aC0yLjVWNkgyMHYyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWaWduZXR0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNXYxNEgzVjVoMThtMC0ySDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTkgNWMzLjI1IDAgNiAxLjgzIDYgNHMtMi43NSA0LTYgNC02LTEuODMtNi00IDIuNzUtNCA2LTRtMC0yYy00LjQyIDAtOCAyLjY5LTggNnMzLjU4IDYgOCA2IDgtMi42OSA4LTYtMy41OC02LTgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZycGFubyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjAxIDRDMjAuNDUgNCAxNy40IDUuNSAxMiA1LjVjLTUuMzEgMC04LjQ5LTEuNDktOS4wMS0xLjQ5LS41MyAwLS45OS40NC0uOTkgMS4wMVYxOWMwIC41Ny40NiAxIC45OSAxIC41NyAwIDMuNTUtMS41IDkuMDEtMS41IDUuNDIgMCA4LjQ0IDEuNSA5LjAxIDEuNS41MyAwIC45OS0uNDMuOTktMVY1YzAtLjU3LS40Ni0xLS45OS0xek0yMCAxNy42M2MtMi4wMS0uNTktNC42Mi0xLjEzLTgtMS4xMy0zLjM5IDAtNS45OS41NC04IDEuMTNWNi4zOGMyLjU4LjczIDUuMzIgMS4xMiA4IDEuMTIgMy4zOCAwIDUuOTktLjU0IDgtMS4xM3YxMS4yNnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOS4xNyAxMC45OS0zLjY5IDQuNDJjMi0uMjYgNC4xOC0uNDEgNi41Mi0uNDEgMi4zIDAgNC41Mi4xNSA2LjUxLjRMMTQgMTBsLTIuODMgMy4zOS0yLTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdiQXV0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNyA3LTMuMiA5aDEuOWwuNy0yaDMuMmwuNyAyaDEuOUw5IDdIN3ptLS4xNSA1LjY1TDggOWwxLjE1IDMuNjVoLTIuM3pNMjIgN2wtMS4yIDYuMjlMMTkuMyA3aC0xLjZsLTEuNDkgNi4yOUwxNSA3aC0uNzZsLS4wMS4wMUMxMi43NiA1LjE4IDEwLjUzIDQgOCA0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4YzIuOTYgMCA1LjU1LTEuNjEgNi45My00IC4wMy0uMDYuMDUtLjEyLjA4LS4xOC4wNS0uMDguMDktLjE3LjE0LS4yNWwuMS40M0gxN2wxLjUtNi4xTDIwIDE2aDEuNzVsMi4wNS05SDIyem0tOC42MyA3LjY3QzEyLjM4IDE2LjY0IDEwLjM1IDE4IDggMThjLTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTYgNiAyLjY5IDYgNmMwIC45Ni0uMjMgMS44Ni0uNjMgMi42N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdiQ2xvdWR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4wMSA2YzIuNjEgMCA0Ljg5IDEuODYgNS40IDQuNDNsLjMgMS41IDEuNTIuMTFjMS41Ni4xMSAyLjc4IDEuNDEgMi43OCAyLjk2IDAgMS42NS0xLjM1IDMtMyAzaC0xM2MtMi4yMSAwLTQtMS43OS00LTQgMC0yLjA1IDEuNTMtMy43NiAzLjU2LTMuOTdsMS4wNy0uMTEuNS0uOTVBNS40NTcgNS40NTcgMCAwIDEgMTIuMDEgNm0wLTJDOS4xMiA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM1IDguMzYuMDEgMTAuOTEuMDEgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY0LTQuOTZDMTguNjggNi41OSAxNS42NSA0IDEyLjAxIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYkluY2FuZGVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMy41NSAxOS4wOSAxLjQxIDEuNDEgMS43OS0xLjgtMS40MS0xLjQxek0xMSAyMGgydjNoLTJ6TTEgMTFoM3YySDF6bTEyLTYuOTV2My45NmwxIC41OGMxLjI0LjcyIDIgMi4wNCAyIDMuNDYgMCAyLjIxLTEuNzkgNC00IDRzLTQtMS43OS00LTRjMC0xLjQyLjc3LTIuNzQgMi0zLjQ2bDEtLjU4VjQuMDVoMm0yLTJIOXY0LjgxQzcuMjEgNy45IDYgOS44MyA2IDEyLjA1YzAgMy4zMSAyLjY5IDYgNiA2czYtMi42OSA2LTZjMC0yLjIyLTEuMjEtNC4xNS0zLTUuMTlWMi4wNXpNMjAgMTFoM3YyaC0zem0tMi43NiA3LjcxIDEuNzkgMS44IDEuNDEtMS40MS0xLjgtMS43OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdiSXJpZGVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNWgxNFY5SDV2NnptMi00aDEwdjJIN3YtMnptNC0xMGgydjNoLTJ6bTkuNDYgNC4wMUwxOS4wNCAzLjZsLTEuNzkgMS43OSAxLjQxIDEuNDF6TTExIDIwaDJ2M2gtMnptNi4yNC0xLjI5IDEuNzkgMS44IDEuNDItMS40Mi0xLjgtMS43OXpNNC45NiAzLjU5NWwxLjc4OCAxLjc5TDUuMzQgNi43OSAzLjU1MyA1LjAwM3pNMy41NSAxOS4wOGwxLjQxIDEuNDIgMS43OS0xLjgtMS40MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2JTaGFkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEydjIuNWw1LjUgNS41SDIybC04LTh6bTAgOGgzbC0zLTN2M3pNOCA0bC02IDZoMnYxMGg4VjEwaDJMOCA0em0xIDEwSDd2LTRoMnY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2JTdW5ueSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNi43NiA0Ljg0LTEuOC0xLjc5LTEuNDEgMS40MSAxLjc5IDEuNzl6TTEgMTAuNWgzdjJIMXpNMTEgLjU1aDJWMy41aC0yem04LjA0IDIuNDk1IDEuNDA4IDEuNDA3LTEuNzkgMS43OS0xLjQwNy0xLjQwOHptLTEuOCAxNS4xMTUgMS43OSAxLjggMS40MS0xLjQxLTEuOC0xLjc5ek0yMCAxMC41aDN2MmgtM3ptLTgtNWMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6bTAgMTBjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0em0tMSA0aDJ2Mi45NWgtMnptLTcuNDUtLjk2IDEuNDEgMS40MSAxLjc5LTEuOC0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYlR3aWxpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuOTU1IDguNjYyIDIuMTItMi4xMjIgMS40MTYgMS40MTQtMi4xMjEgMi4xMjJ6TTIgMThoMjB2Mkgyek0xMSA0aDJ2M2gtMnpNMy41NDMgNy45MjUgNC45NTcgNi41MWwyLjEyMSAyLjEyLTEuNDE0IDEuNDE1ek01IDE2aDE0YzAtMy44Ny0zLjEzLTctNy03cy03IDMuMTMtNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMzYwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3QzYuNDggNyAyIDkuMjQgMiAxMmMwIDIuMjQgMi45NCA0LjEzIDcgNC43N1YyMGw0LTQtNC00djIuNzNjLTMuMTUtLjU2LTUtMS45LTUtMi43MyAwLTEuMDYgMy4wNC0zIDgtM3M4IDEuOTQgOCAzYzAgLjczLTEuNDYgMS44OS00IDIuNTN2Mi4wNWMzLjUzLS43NyA2LTIuNTMgNi00LjU4IDAtMi43Ni00LjQ4LTUtMTAtNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZEJ1c2luZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0aDE1djJIMnpNMTUgMTdoMnYtM2gxdi0ybC0xLTVIMmwtMSA1djJoMXY2aDl2LTZoNHYzem0tNiAxSDR2LTRoNXY0em0tNS45Ni02IC42LTNoMTEuNzJsLjYgM0gzLjA0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxOGgtM3YtM2gtMnYzaC0zdjJoM3YzaDJ2LTNoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkZExvY2F0aW9uQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMXYzaDN2MmgtM3YzaC0yVjZoLTNWNGgzVjFoMnptLTggMTJjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem0xLTkuOTR2Mi4wMkE2LjUzIDYuNTMgMCAwIDAgMTIgNWMtMy4zNSAwLTYgMi41Ny02IDYuMiAwIDIuMzQgMS45NSA1LjQ0IDYgOS4xNCA0LjA1LTMuNyA2LTYuNzkgNi05LjE0VjExaDJ2LjJjMCAzLjMyLTIuNjcgNy4yNS04IDExLjgtNS4zMy00LjU1LTgtOC40OC04LTExLjhDNCA2LjIyIDcuOCAzIDEyIDNjLjM0IDAgLjY3LjAyIDEgLjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkTG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA2djNoM3YyaC0zdjNoLTJ2LTNIOFY5aDNWNmgyem01IDQuMkMxOCA2LjU3IDE1LjM1IDQgMTIgNHMtNiAyLjU3LTYgNi4yYzAgMi4zNCAxLjk1IDUuNDQgNiA5LjE0IDQuMDUtMy43IDYtNi44IDYtOS4xNHpNMTIgMmM0LjIgMCA4IDMuMjIgOCA4LjIgMCAzLjMyLTIuNjcgNy4yNS04IDExLjgtNS4zMy00LjU1LTgtOC40OC04LTExLjhDNCA1LjIyIDcuOCAyIDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRSb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTh2LTNoLTJ2M2gtM3YyaDN2M2gydi0zaDN2LTJ6TTE4IDRoMnY5aC0yek00IDRoMnYxNkg0ek0xMSA0aDJ2NGgtMnpNMTEgMTBoMnY0aC0yek0xMSAxNmgydjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZ3JpY3VsdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgOWg1YzAtMS4xLS45LTItMi0ySDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE0LjA2VjhjMC0xLjEtLjktMi0yLTJoLTYuMjlsLTEuMDYtMS4wNiAxLjQxLTEuNDEtLjcxLS43MS0zLjUzIDMuNTMuNzEuNzEgMS40MS0xLjQxTDEzIDYuNzFWOWMwIDEuMS0uOSAyLTIgMkg4Ljk2Yy0uMjItLjE2LS40NS0uMy0uNjktLjQzbC0uNC44OS0uNDYtLjIxLjQtLjlDNy4yNiAxMC4xMyA2LjY0IDEwIDYgMTBjLS41MyAwLTEuMDQuMTEtMS41Mi4yNmwuMzQuOTEtLjQ3LjE4LS4zNS0uOTNhNC45MiA0LjkyIDAgMCAwLTIuNDMgMi4zMWwuODkuNC0uMjEuNDYtLjktLjRDMS4xMyAxMy43NCAxIDE0LjM2IDEgMTVjMCAuNTMuMTEgMS4wNC4yNiAxLjUybC45MS0uMzQuMTguNDctLjkzLjM1YTQuOTIgNC45MiAwIDAgMCAyLjMxIDIuNDNsLjQtLjg5LjQ2LjIxLS40LjljLjU1LjIyIDEuMTcuMzUgMS44MS4zNS41MyAwIDEuMDQtLjExIDEuNTItLjI2bC0uMzQtLjkxLjQ3LS4xOC4zNS45M2E0LjkyIDQuOTIgMCAwIDAgMi40My0yLjMxbC0uODktLjQuMjEtLjQ2LjkuNGMuMS0uMjYuMTgtLjU0LjI0LS44Mmg1LjE2Yy0uMDIuMTctLjA1LjM0LS4wNS41MSAwIDEuOTMgMS41NyAzLjUgMy41IDMuNXMzLjUtMS41NyAzLjUtMy41YzAtLjk1LS4zOC0xLjgxLTEtMi40NHpNNiAxOGMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6bTQuODctNGMtLjA0LS4xOC0uMDgtLjM1LS4xMy0uNTJsLS45MS4zNC0uMTgtLjQ3LjkzLS4zNUgxMWMyLjIxIDAgNC0xLjc5IDQtNFY4aDV2NS4wNWMtLjE2LS4wMi0uMzMtLjA1LS41LS4wNS0uOTUgMC0xLjgxLjM4LTIuNDQgMWgtNi4xOXptOC42MyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpcmxpbmVTdG9wcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDguN2MtMi40NiAxLjUtNS41IDQuMTctNiA4LjNoMnYySDl2LTJoMmMtLjUtNC41LTQuMzctOC05LThWN2M0LjM5IDAgOC4yMiAyLjU1IDEwIDYuMyAxLjM4LTIuOTcgMy44Ni01LjAzIDUuOTYtNi4zMUwxNCA3VjVoN3Y3aC0yVjguN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpcmxpbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMzQgMThINS44bDguMjUtMTJoNS41NGwtMi4yNSAxMnpNMTMgNCAyIDIwaDE3bDMtMTZoLTl6bTEuNSA1YTIuNSAyLjUgMCAwIDAgMCA1IDIuNSAyLjUgMCAwIDAgMC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWx0Um91dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05Ljc4IDExLjE2LTEuNDIgMS40MmE3LjI4MiA3LjI4MiAwIDAgMS0xLjc5LTIuOTRsMS45NC0uNDljLjMyLjg5Ljc3IDEuNSAxLjI3IDIuMDF6TTExIDYgNyAyIDMgNmgzLjAyYy4wMi44MS4wOCAxLjU0LjE5IDIuMTdsMS45NC0uNDlDOC4wOCA3LjIgOC4wMyA2LjYzIDguMDIgNkgxMXptMTAgMC00LTQtNCA0aDIuOTljLS4xIDMuNjgtMS4yOCA0Ljc1LTIuNTQgNS44OC0uNS40NC0xLjAxLjkyLTEuNDUgMS41NS0uMzQtLjQ5LS43My0uODgtMS4xMy0xLjI0TDkuNDYgMTMuNmMuOTMuODUgMS41NCAxLjU0IDEuNTQgMy40djVoMnYtNWMwLTIuMDIuNzEtMi42NiAxLjc5LTMuNjMgMS4zOC0xLjI0IDMuMDgtMi43OCAzLjItNy4zN0gyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUF0bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA5djEuNWgyLjI1VjE1aDEuNXYtNC41SDE0VjlIOHpNNiA5SDNjLS41NSAwLTEgLjQ1LTEgMXY1aDEuNXYtMS41aDJWMTVIN3YtNWMwLS41NS0uNDUtMS0xLTF6bS0uNSAzaC0ydi0xLjVoMlYxMnpNMjEgOWgtNC41Yy0uNTUgMC0xIC40NS0xIDF2NUgxN3YtNC41aDFWMTRoMS41di0zLjUxaDFWMTVIMjJ2LTVjMC0uNTUtLjQ1LTEtMS0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXR0cmFjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC4xNSAxNC40MmMuMjMtLjc3LjM1LTEuNTguMzUtMi40MnMtLjEyLTEuNjUtLjM1LTIuNDJjLjc4LS42IDEuMDItMS43LjUxLTIuNThzLTEuNTgtMS4yMy0yLjQ5LS44NWE4LjUzIDguNTMgMCAwIDAtNC4xOC0yLjQyQzEzLjg1IDIuNzUgMTMuMDEgMiAxMiAycy0xLjg1Ljc1LTEuOTggMS43M2E4LjU2MSA4LjU2MSAwIDAgMC00LjE5IDIuNDJjLS45MS0uMzgtMS45OC0uMDMtMi40OS44NXMtLjI3IDEuOTguNTEgMi41OGMtLjIzLjc3LS4zNSAxLjU4LS4zNSAyLjQycy4xMiAxLjY1LjM1IDIuNDJjLS43OC42LTEuMDIgMS43LS41MSAyLjU4czEuNTggMS4yMyAyLjQ5Ljg1Yy40LjQyLjgzLjc5IDEuMyAxLjEyTDUuNzggMjJoMS44OGwuOTgtMi4xOWMuNDQuMTkuOS4zNCAxLjM4LjQ2LjEzLjk4Ljk3IDEuNzMgMS45OCAxLjczczEuODUtLjc1IDEuOTgtMS43M2MuNDYtLjExLjkxLS4yNiAxLjM0LS40NEwxNi4zIDIyaDEuODhsLTEuMzQtM2MuNDgtLjM0LjkzLS43MiAxLjM0LTEuMTUuOTEuMzggMS45OS4wMyAyLjQ5LS44NS41LS44OC4yNi0xLjk4LS41Mi0yLjU4em0tNi41OSA0LjMzYy0uMzctLjQ2LS45My0uNzUtMS41Ni0uNzVzLTEuMi4yOS0xLjU3Ljc1Yy0uNC0uMDktLjc5LS4yMS0xLjE2LS4zN2wxLjQzLTMuMTlhMy41MjIgMy41MjIgMCAwIDAgMi41Ni4wMmwxLjQyIDMuMThjLS4zNi4xNS0uNzMuMjctMS4xMi4zNnptLTMuMDgtNi43M2MwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjUtMS41LS42Ny0xLjUtMS41em04LjIzIDEuOTljLS42MS4wNy0xLjE4LjQxLTEuNTIuOTktLjMyLjU2LS4zNCAxLjItLjEyIDEuNzUtLjI4LjI5LS41OC41NS0uOS43OWwtMS41LTMuMzVjLjQ5LS41OS43OC0xLjM0Ljc4LTIuMTYgMC0xLjg5LTEuNTUtMy40MS0zLjQ2LTMuNDFzLTMuNDYgMS41My0zLjQ2IDMuNDFjMCAuOC4yOCAxLjU0Ljc1IDIuMTNsLTEuNTIgMy4zOWMtLjMxLS4yMy0uNi0uNDgtLjg3LS43Ni4yNi0uNTYuMjQtMS4yMi0uMDktMS43OS0uMzQtLjU5LS45My0uOTQtMS41Ni0uOTktLjIyLS42OC0uMzMtMS40LS4zMy0yLjE1IDAtLjY0LjA5LTEuMjYuMjUtMS44NS42Ni0uMDMgMS4zLS4zOCAxLjY1LTEgLjM3LS42My4zNS0xLjM4LjAxLTEuOTguOTItLjk4IDIuMTEtMS42OSAzLjQ1LTIuMDMuMzQuNTkuOTkgMSAxLjczIDFzMS4zOS0uNCAxLjczLTFjMS4zNC4zNCAyLjUzIDEuMDcgMy40NCAyLjA1LS4zMi41OS0uMzMgMS4zMy4wMyAxLjk1LjM1LjYuOTYuOTUgMS42IDEgLjE2LjU5LjI1IDEuMjEuMjUgMS44NiAwIC43NS0uMTIgMS40Ny0uMzQgMi4xNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhZGdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTJoNHYxLjVoLTR6TTE0IDE1aDR2MS41aC00elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA3aC01VjRjMC0xLjEtLjktMi0yLTJoLTJjLTEuMSAwLTIgLjktMiAydjNINGMtMS4xIDAtMiAuOS0yIDJ2MTFjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0yem0tOSAwVjRoMnY1aC0yVjd6bTkgMTNINFY5aDVjMCAxLjEuOSAyIDIgMmgyYzEuMSAwIDItLjkgMi0yaDV2MTF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4wOCAxNi4xOGMtLjY0LS4yOC0xLjM0LS40My0yLjA4LS40M3MtMS40NC4xNS0yLjA4LjQzYy0uNTYuMjQtLjkyLjc4LS45MiAxLjM5VjE4aDZ2LS40M2MwLS42MS0uMzYtMS4xNS0uOTItMS4zOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJha2VyeURpbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjUgMTAuOTRjLjEzLS4zMi4xLS4yMy4xNS0uMzkuMy0xLjIxLS4zNC0yLjQ3LTEuNS0yLjkzbC0yLjAxLS44Yy0uNDYtLjE4LS45NS0uMjEtMS40MS0uMTItLjExLS4zMy0uMjktLjYzLS41Mi0uODktLjQ4LS41Mi0xLjE1LS44MS0xLjg1LS44MWgtMi43MWMtLjcxIDAtMS4zOC4yOS0xLjg1LjgxLS4yNC4yNi0uNDIuNTYtLjUzLjg4LS40Ni0uMDktLjk1LS4wNi0xLjQxLjEybC0yLjAxLjhjLTEuMTYuNDYtMS44IDEuNzItMS41IDIuOTNsLjE1LjM4QzEuMSAxNS41NSAxIDE1LjU1IDEgMTYuMzhjMCAuOTEuNDYgMS43NCAxLjI0IDIuMjIgMS40Mi44OCAyLjQ5LjE0IDQtLjYxaDExLjUzYzEuNTIuNzYgMS44NiAxLjAxIDIuNjMgMS4wMSAxIDAgMi42MS0uNzcgMi42MS0yLjYxLS4wMS0uODUtLjEzLS44OC0yLjUxLTUuNDV6bS0uMzggNS45OS0xLjY4LS44NCAxLjA4LTIuNyAxLjQxIDIuNzFjLjI4LjUzLS4yOSAxLjA5LS44MS44M3ptLTUuMDMtLjk0LjYyLTYuOWMuMDMtLjMzLjM3LS41NC42OC0uNDJsMi4wMS44Yy4yMi4wOS4zNC4zMS4zMS41NGwtMi40IDUuOThoLTEuMjJ6bS03LjQxIDAtMi40LTUuOThjLS4wMy0uMjMuMDktLjQ1LjMxLS41NGwyLjAxLS44Yy4zMS0uMTIuNjUuMDguNjguNDJsLjYyIDYuOUg3LjY4em0tNC42MS4xMSAxLjQxLTIuNzIgMS4wOCAyLjcxLTEuNjguODRjLS41Mi4yNi0xLjA5LS4zLS44MS0uODN6bTcuMDgtOC41NmEuNS41IDAgMCAxIC41LS41NGgyLjcxYS41LjUgMCAwIDEgLjUuNTRsLS43NyA4LjQ1aC0yLjE3bC0uNzctOC40NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJlZW5oZXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxSDVjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMyAxNS45M2MwIC42OS4zNSAxLjMuODggMS42NkwxMiAyM2w4LjExLTUuNDFjLjUzLS4zNi44OC0uOTcuODgtMS42NkwyMSAzYzAtMS4xLS45LTItMi0yem0tNyAxOS42LTctNC42NlYzaDE0djEyLjkzbC03IDQuNjd6bS0yLjAxLTcuNDItMi41OC0yLjU5TDYgMTJsNCA0IDgtOC0xLjQyLTEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCaWtlU2Nvb3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE0aC43NEw4LjgyIDUuNTZBMi4wMDkgMi4wMDkgMCAwIDAgNi44NyA0SDN2MmgzLjg3bDEuNDIgNi4yNWgtLjAxQTYuMDA4IDYuMDA4IDAgMCAwIDQuMDkgMTdIMHYyaDZ2LTFjMC0yLjIxIDEuNzktNCA0LTR6TTE5IDhoLS44MmwtMS4zNS0zLjY5QTEuOTc2IDEuOTc2IDAgMCAwIDE0Ljk2IDNIMTF2MmgzLjk2bDEuMSAzSDEwLjRsLjQ2IDJIMTVjLS40My41OC0uNzUgMS4yNS0uOSAyaC0yLjc5bC40NiAyaDIuMzNjLjQ0IDIuMjMgMi4zMSAzLjg4IDQuNjUgMy45OSAyLjguMTMgNS4yNS0yLjE5IDUuMjUtNUMyNCAxMC4yIDIxLjggOCAxOSA4em0wIDhjLTEuNjggMC0zLTEuMzItMy0zIDAtLjkzLjQxLTEuNzMgMS4wNS0yLjI4bC45NiAyLjY0IDEuODgtLjY4LS45Ny0yLjY3Yy4wMyAwIC4wNi0uMDEuMDktLjAxIDEuNjggMCAzIDEuMzIgMyAzcy0xLjMzIDMtMy4wMSAzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxNWMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnJlYWtmYXN0RGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggM0g2QzMuNzkgMyAyIDQuNzkgMiA3YzAgMS40OC44MSAyLjc1IDIgMy40NVYxOWMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi04LjU1YzEuMTktLjY5IDItMS45NyAyLTMuNDUgMC0yLjIxLTEuNzktNC00LTR6bTEgNS43Mi0xIC41OFYxOUg2VjkuMzFsLS45OS0uNThDNC4zOCA4LjM1IDQgNy43MSA0IDdjMC0xLjEuOS0yIDItMmgxMmMxLjEgMCAyIC45IDIgMiAwIC43MS0uMzggMS4zNi0xIDEuNzJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjcxIDkuMjlDMTIuNTEgOS4xIDEyLjI2IDkgMTIgOXMtLjUxLjEtLjcxLjI5bC0zIDNhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDMgM2MuMi4yLjQ1LjMuNzEuM3MuNTEtLjEuNzEtLjI5bDMtM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDFsLTMtMy4wMXpNMTIgMTQuNTggMTAuNDEgMTMgMTIgMTEuNDEgMTMuNTkgMTMgMTIgMTQuNTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCcnVuY2hEaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDIxLjVjMCAuMjguMjIuNS40OS41aDEzLjAyYy4yNyAwIC40OS0uMjIuNDktLjVWMjBIMnYxLjV6TTE1LjUgMTZIMTF2LTJIN3YySDIuNWMtLjI4IDAtLjUuMjItLjUuNVYxOGgxNHYtMS41YzAtLjI4LS4yMi0uNS0uNS0uNXpNMjAuNDcgMTUuNDVBNS43OTYgNS43OTYgMCAwIDAgMjIgMTEuNTFWMmgtNnY5LjQ3YzAgMS40OC41OCAyLjkyIDEuNiA0bC40LjQyVjIyaDR2LTJoLTJ2LTQuMDNsLjQ3LS41MnpNMTggNGgydjRoLTJWNHptMS4wMyAxMC4wN2EzLjg5MyAzLjg5MyAwIDAgMS0xLjAzLTIuNlYxMGgydjEuNTFjMCAuOTUtLjM0IDEuODUtLjk3IDIuNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCdXNBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNi41XCIsXCJjeVwiOlwiMTUuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTMuNVwiLFwiY3lcIjpcIjE1LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDExVjhoNy4yOUMxMS4xIDcuMzcgMTEgNi43IDExIDZINC40M2MuODMtLjcxIDIuOTgtMS4wOSA2LjY1LS45OC4xLS43LjMtMS4zNy41OS0xLjk5QzIuOTcgMi42NyAyIDUuMDIgMiA3djkuNWMwIC45NS4zOCAxLjgxIDEgMi40NFYyMWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWg4djFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTIuMDZjLjYyLS42MyAxLTEuNDkgMS0yLjQ0VjEzYy0xLjkxIDAtMy42My0uNzYtNC44OS0ySDR6bTEyIDVjMCAxLjEtLjkgMi0yIDJINmMtMS4xIDAtMi0uOS0yLTJ2LTNoMTJ2M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMWMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bS41IDhoLTFWOGgxdjF6bTAtMmgtMVYzaDF2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhckNyYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMWMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bS41IDZoLTFWM2gxdjR6bTAgMXYxaC0xVjhoMXpNNiAxMy41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41UzguMzMgMTUgNy41IDE1IDYgMTQuMzMgNiAxMy41em0xMy0uNTdhNi43MiA2LjcyIDAgMCAwIDItLjZWMTljMCAuNTUtLjQ1IDEtMSAxaC0xYy0uNTUgMC0xLS40NS0xLTF2LTFINnYxYzAgLjU1LS40NSAxLTEgMUg0Yy0uNTUgMC0xLS40NS0xLTF2LThsMi4wOC01Ljk5QzUuMjkgNC40MiA1Ljg0IDQgNi41IDRoNC43OWMtLjE5LjYzLS4yOSAxLjMxLS4yOSAySDYuODVMNS44MSA5aDUuODZjLjM2Ljc1Ljg0IDEuNDMgMS40MyAySDV2NWgxNHYtMy4wN3ptLTEuMDkuMDdhNi45MiA2LjkyIDAgMCAxLTIuNTMtLjUxYy0uMjMuMjctLjM4LjYyLS4zOCAxLjAxIDAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNWMwLS4xOC0uMDMtLjM0LS4wOS0uNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhclJlbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjE2LjVcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjE2LjVcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMjUgOS42Yy0uMDItLjAyLS4wMy0uMDQtLjA1LS4wNy0uMzgtLjUyLS45Mi0uNTMtLjkyLS41M0g3Ljcycy0uNTQuMDEtLjkyLjU0Yy0uMDIuMDItLjAzLjA0LS4wNS4wNi0uMDcuMTEtLjE0LjI0LS4xOS40LS4yMi42Ni0uNzQgMi4yMi0xLjU2IDQuNjl2Ni41YzAgLjQ1LjM1LjgxLjc4LjgxaC40NGMuNDMgMCAuNzgtLjM2Ljc4LS44MVYyMGgxMHYxLjE5YzAgLjQ1LjM0LjgxLjc4LjgxaC40NGMuNDMgMCAuNzgtLjM2Ljc4LS44MXYtNi41Yy0uODItMi40Ni0xLjM0LTQuMDMtMS41Ni00LjY5LS4wNS0uMTYtLjEyLS4yOS0uMTktLjR6TTguMzMgMTFoNy4zNGwuMjMuNjkuNDMgMS4zMUg3LjY3bC42Ni0yek0xNyAxOEg3di0zaDEwdjN6TTEwLjgzIDNBMy4wMSAzLjAxIDAgMCAwIDggMUM2LjM0IDEgNSAyLjM0IDUgNGMwIDEuNjUgMS4zNCAzIDMgMyAxLjMgMCAyLjQxLS44NCAyLjgzLTJIMTZ2MmgyVjVoMVYzaC04LjE3ek04IDVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhclJlcGFpciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEwLjVcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjEwLjVcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS43OCAxNmguNDRjLjQzIDAgLjc4LS4zNi43OC0uODFWMTRoMTB2MS4xOWMwIC40NS4zNC44MS43OC44MWguNDRjLjQzIDAgLjc4LS4zNi43OC0uODF2LTYuNUwxNy40NCA0Yy0uMDUtLjE2LS4xMi0uMjktLjE5LS40LS4wMi0uMDItLjAzLS4wNC0uMDUtLjA3LS4zOC0uNTItLjkyLS41My0uOTItLjUzSDcuNzJzLS41NC4wMS0uOTIuNTRjLS4wMi4wMi0uMDMuMDQtLjA1LjA2LS4wNy4xMS0uMTQuMjQtLjE5LjRMNSA4LjY5djYuNWMwIC40NS4zNS44MS43OC44MXpNOC4zMyA1aDcuMzRsLjIzLjY5LjQzIDEuMzFINy42N2wuNjYtMnpNNyA5LjAxVjloMTB2M0g3VjkuMDF6TTQgMTcuMDFWMTloN3YzaDJ2LTNoN3YtMS45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhc3RsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDl2MmgtMlYzaC0ydjJoLTJWM2gtMnYyaC0yVjNIOXYySDdWM0g1djhIM1Y5SDF2MTJoOXYtM2MwLTEuMS45LTIgMi0yczIgLjkgMiAydjNoOVY5aC0yem0wIDEwaC01di0xYzAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0djFIM3YtNmg0VjdoMTB2Nmg0djZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgOWgydjNIOXpNMTMgOWgydjNoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYXRlZ29yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgMi01LjUgOWgxMUwxMiAyem0wIDMuODRMMTMuOTMgOWgtMy44N0wxMiA1Ljg0ek0xNy41IDEzYy0yLjQ5IDAtNC41IDIuMDEtNC41IDQuNXMyLjAxIDQuNSA0LjUgNC41IDQuNS0yLjAxIDQuNS00LjUtMi4wMS00LjUtNC41LTQuNXptMCA3YTIuNSAyLjUgMCAwIDEgMC01IDIuNSAyLjUgMCAwIDEgMCA1ek0zIDIxLjVoOHYtOEgzdjh6bTItNmg0djRINXYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNlbGVicmF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMiAyMiAxNC01LTktOS01IDE0em0xMC4zNS01LjgyTDUuMyAxOC43bDIuNTItNy4wNSA0LjUzIDQuNTN6TTE0LjUzIDEyLjUzbDUuNTktNS41OWExLjI1IDEuMjUgMCAwIDEgMS43NyAwbC41OS41OSAxLjA2LTEuMDYtLjU5LS41OWEyLjc1OCAyLjc1OCAwIDAgMC0zLjg5IDBsLTUuNTkgNS41OSAxLjA2IDEuMDZ6TTEwLjA2IDYuODhsLS41OS41OSAxLjA2IDEuMDYuNTktLjU5YTIuNzU4IDIuNzU4IDAgMCAwIDAtMy44OWwtLjU5LS41OS0xLjA2IDEuMDcuNTkuNTljLjQ4LjQ4LjQ4IDEuMjggMCAxLjc2ek0xNy4wNiAxMS44OGwtMS41OSAxLjU5IDEuMDYgMS4wNiAxLjU5LTEuNTlhMS4yNSAxLjI1IDAgMCAxIDEuNzcgMGwxLjYxIDEuNjEgMS4wNi0xLjA2LTEuNjEtMS42MWEyLjc1OCAyLjc1OCAwIDAgMC0zLjg5IDB6TTE1LjA2IDUuODhsLTMuNTkgMy41OSAxLjA2IDEuMDYgMy41OS0zLjU5YTIuNzU4IDIuNzU4IDAgMCAwIDAtMy44OWwtMS41OS0xLjU5LTEuMDYgMS4wNiAxLjU5IDEuNTljLjQ4LjQ5LjQ4IDEuMjkgMCAxLjc3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2h1cmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTIuMjJWOWwtNS0yLjVWNWgyVjNoLTJWMWgtMnYySDl2MmgydjEuNUw2IDl2My4yMkwyIDE0djhoOXYtNGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NGg5di04bC00LTEuNzh6TTIwIDIwaC01di0yLjA0YzAtMS42OS0xLjM1LTMuMDYtMy0zLjA2cy0zIDEuMzctMyAzLjA2VjIwSDR2LTQuNzlsNC0xLjgxdi0zLjM1TDEyIDhsNCAyLjA0djMuMzVsNCAxLjgxVjIwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2xlYW5pbmdTZXJ2aWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDExaC0xVjNjMC0xLjEtLjktMi0yLTJoLTJjLTEuMSAwLTIgLjktMiAydjhIOGMtMi43NiAwLTUgMi4yNC01IDV2N2gxOHYtN2MwLTIuNzYtMi4yNC01LTUtNXptLTUtOGgydjhoLTJWM3ptOCAxOGgtMnYtM2MwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXYzaC0ydi0zYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjNIOXYtM2MwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXYzSDV2LTVjMC0xLjY1IDEuMzUtMyAzLTNoOGMxLjY1IDAgMyAxLjM1IDMgM3Y1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29tcGFzc0NhbGlicmF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMmMtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTAgOGMtMS42NSAwLTMtMS4zNS0zLTNzMS4zNS0zIDMtMyAzIDEuMzUgMyAzLTEuMzUgMy0zIDN6bTAtMTdDOC4xIDMgNC41NiA0LjU5IDIgNy4xNWw1IDVhNy4wNiA3LjA2IDAgMCAxIDEwLS4wMWw1LTVDMTkuNDQgNC41OSAxNS45IDMgMTIgM3ptNC44NCA2LjQ3Yy0xLjQ0LS45MS0zLjEtMS40LTQuODQtMS40LTEuNzQgMC0zLjQxLjQ5LTQuODUgMS40MUw0Ljk0IDcuMjZDNi45OSA1Ljc5IDkuNDQgNSAxMiA1YzIuNTYgMCA1IC43OSA3LjA1IDIuMjZsLTIuMjEgMi4yMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbm5lY3RpbmdBaXJwb3J0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjQgMTcgMS4zIDQuNGgtMS4xTDEzIDE3aC0zYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xaDNsMi42LTQuNGgxLjFMMTUuNCAxNWgyLjg1bC43NS0xaDFsLS42IDIgLjYgMmgtMWwtLjc1LTFIMTUuNHpNNS43NSA3IDUgNkg0bC42IDItLjYgMmgxbC43NS0xSDguNmwtMS4zIDQuNGgxLjFMMTEgOWgzYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xaC0zTDguNCAyLjZINy4zTDguNiA3SDUuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDcmlzaXNBbGVydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMi41YzAgMS41LTEuNSA2LTEuNSA2aC0yUzkuNSA0IDkuNSAyLjVhMi41IDIuNSAwIDAgMSA1IDB6TTEyIDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNC4wOC00Ljg5Yy4xOC0uNzUuMzMtMS40Ny4zOS0yLjA2QTkuOTk2IDkuOTk2IDAgMCAxIDIyIDEyYzAgNS41Mi00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMmMwLTMuOTIgMi4yNS03LjMxIDUuNTMtOC45NS4wNy41OS4yMSAxLjMyLjM5IDIuMDZBOC4wMjggOC4wMjggMCAwIDAgNCAxMmMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04YzAtMi45My0xLjU4LTUuNDktMy45Mi02Ljg5ek0xOCAxMmMwIDMuMzEtMi42OSA2LTYgNnMtNi0yLjY5LTYtNmMwLTIgLjk4LTMuNzcgMi40OC00Ljg2LjIzLjgxLjY1IDIuMDcuNjUgMi4wN0M4LjQzIDkuOTMgOCAxMC45MiA4IDEyYzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTRjMC0xLjA4LS40My0yLjA3LTEuMTMtMi43OSAwIDAgLjQxLTEuMjIuNjUtMi4wN0E1Ljk5OCA1Ljk5OCAwIDAgMSAxOCAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlbGl2ZXJ5RGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN2MwLTEuMS0uOS0yLTItMmgtM3YyaDN2Mi42NUwxMy41MiAxNEgxMFY5SDZjLTIuMjEgMC00IDEuNzktNCA0djNoMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDQuNDhMMTkgMTAuMzVWN3pNNCAxNHYtMWMwLTEuMS45LTIgMi0yaDJ2M0g0em0zIDNjLS41NSAwLTEtLjQ1LTEtMWgyYzAgLjU1LS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA2aDV2Mkg1ek0xOSAxM2MtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGVwYXJ0dXJlQm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNS41XCIsXCJjeVwiOlwiMTYuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTIuNVwiLFwiY3lcIjpcIjE2LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxYTYuOTggNi45OCAwIDAgMC01Ljc1IDMuMDJDOS44NCA0LjAxIDkuNDMgNCA5IDRjLTQuNDIgMC04IC41LTggNHYxMGMwIC44OC4zOSAxLjY3IDEgMi4yMlYyMmMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWg4djFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTEuNzhjLjYxLS41NSAxLTEuMzQgMS0yLjIydi0zLjA4YzMuMzktLjQ5IDYtMy4zOSA2LTYuOTIgMC0zLjg3LTMuMTMtNy03LTd6TTkgNmguMjljLS4wOS4zMi0uMTYuNjYtLjIxLjk5SDMuMzRDMy44OSA2LjQ2IDUuMzEgNiA5IDZ6TTMgOC45OWg2LjA4Yy4xNiAxLjExLjU3IDIuMTMgMS4xOCAzLjAxSDNWOC45OXpNMTUgMThjMCAuMzctLjIxLjYyLS4zNC43M2wtLjI5LjI3SDMuNjNsLS4yOS0uMjdBLjk2OC45NjggMCAwIDEgMyAxOHYtNGg5LjQxYy43OC40NyAxLjY1Ljc5IDIuNTkuOTJWMTh6bTEtNWMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6bS41LTlIMTV2NWwzLjYyIDIuMTYuNzUtMS4yMy0yLjg3LTEuNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXNpZ25TZXJ2aWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjk3IDcuMjdhLjk5Ni45OTYgMCAwIDAgMC0xLjQxbC0yLjgzLTIuODNhLjk5Ni45OTYgMCAwIDAtMS40MSAwbC00LjQ5IDQuNDktMy44OS0zLjg5Yy0uNzgtLjc4LTIuMDUtLjc4LTIuODMgMGwtMS45IDEuOWMtLjc4Ljc4LS43OCAyLjA1IDAgMi44M2wzLjg5IDMuODlMMyAxNi43NlYyMWg0LjI0bDQuNTItNC41MiAzLjg5IDMuODljLjk1Ljk1IDIuMjMuNiAyLjgzIDBsMS45LTEuOWMuNzgtLjc4Ljc4LTIuMDUgMC0yLjgzbC0zLjg5LTMuODkgNC40OC00LjQ4ek01LjA0IDYuOTRsMS44OS0xLjlMOC4yIDYuMzEgNy4wMiA3LjVsMS40MSAxLjQxIDEuMTktMS4xOSAxLjIgMS4yLTEuOSAxLjktMy44OC0zLjg4em0xMS4yMyA3LjQ0LTEuMTkgMS4xOSAxLjQxIDEuNDEgMS4xOS0xLjE5IDEuMjcgMS4yNy0xLjkgMS45LTMuODktMy44OSAxLjktMS45IDEuMjEgMS4yMXpNNi40MSAxOUg1di0xLjQxbDkuNjEtOS42MSAxLjMgMS4zLjExLjExTDYuNDEgMTl6bTkuNjEtMTIuNDQgMS40MS0xLjQxIDEuNDEgMS40MS0xLjQxIDEuNDEtMS40MS0xLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlhbW9uZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINUwyIDlsMTAgMTJMMjIgOWwtMy02ek05LjYyIDhsMS41LTNoMS43NmwxLjUgM0g5LjYyek0xMSAxMHY2LjY4TDUuNDQgMTBIMTF6bTIgMGg1LjU2TDEzIDE2LjY4VjEwem02LjI2LTJoLTIuNjVsLTEuNS0zaDIuNjVsMS41IDN6TTYuMjQgNWgyLjY1bC0xLjUgM0g0Ljc0bDEuNS0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlubmVyRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMiAxOSAyIDJoMTZsMi0yek0zIDE4aDE2Ljk3Yy4yOS0zLjI2LTIuMjgtNi01LjQ4LTYtMi4zNSAwLTQuMzUgMS40OC01LjE0IDMuNTUtLjQxLS4yMy0uODctLjM4LTEuMzUtLjQ3VjloMS43NUMxMC45OSA5IDEyIDcuOTkgMTIgNi43NWg5di0xLjVoLTlDMTIgNC4wMSAxMC45OSAzIDkuNzUgM0gzdjEuNWgxdi43NUgzdjEuNWgxdi43NUgzVjloMXY3LjM5Yy0uNDQuNDYtLjc4IDEtMSAxLjYxem0xMS41LTRjLjk5IDAgMS45MS40IDIuNTggMS4xNC4yNC4yNi40NC41NS41OC44NmgtNi4zMmMuNTgtMS4yMSAxLjgxLTIgMy4xNi0yek04IDQuNWgydi43NUg4VjQuNXptMCAyLjI1aDJ2Ljc1SDh2LS43NXpNNS41IDQuNWgxdi43NWgtMVY0LjV6bTAgMi4yNWgxdi43NWgtMXYtLjc1ek01LjUgOWgxdjYuMDZjLS4zNS4wNi0uNjguMTctMSAuM1Y5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc0Jpa2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgNS41YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnpNNSAxMmMtMi44IDAtNSAyLjItNSA1czIuMiA1IDUgNSA1LTIuMiA1LTUtMi4yLTUtNS01em0wIDguNWMtMS45IDAtMy41LTEuNi0zLjUtMy41czEuNi0zLjUgMy41LTMuNSAzLjUgMS42IDMuNSAzLjUtMS42IDMuNS0zLjUgMy41em01LjgtMTAgMi40LTIuNC44LjhjMS4zIDEuMyAzIDIuMSA1LjEgMi4xVjljLTEuNSAwLTIuNy0uNi0zLjYtMS41bC0xLjktMS45Yy0uNS0uNC0xLS42LTEuNi0uNnMtMS4xLjItMS40LjZMNy44IDguNGMtLjQuNC0uNi45LS42IDEuNCAwIC42LjIgMS4xLjYgMS40TDExIDE0djVoMnYtNi4ybC0yLjItMi4zek0xOSAxMmMtMi44IDAtNSAyLjItNSA1czIuMiA1IDUgNSA1LTIuMiA1LTUtMi4yLTUtNS01em0wIDguNWMtMS45IDAtMy41LTEuNi0zLjUtMy41czEuNi0zLjUgMy41LTMuNSAzLjUgMS42IDMuNSAzLjUtMS42IDMuNS0zLjUgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc0JvYXRGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS43NyAxMi42Ni0xLjEyIDMuOTdjLS43OC0uNDMtMS4wNy0uODYtMi42NS0yLjY3LTEuNiAxLjgyLTIuNDMgMy4wNC00IDMuMDQtMS41MyAwLTIuMzQtMS4xNS00LTMuMDQtMS42IDEuODItMS44NyAyLjIxLTIuNjUgMi42NWwtMS4xMy0zLjk2TDEyIDEwLjExbDcuNzcgMi41NXpNMTUgMUg5djNINmMtMS4xIDAtMiAuOS0yIDJ2NC42MmwtMS4yOS40MmMtLjYzLjE5LS44MS44NC0uNjYgMS4yOEwzLjk1IDE5SDRjMS42IDAgMy4wMi0uODggNC0yIC45OCAxLjEyIDIuNCAyIDQgMnMzLjAyLS44OCA0LTJjLjk4IDEuMTIgMi40IDIgNCAyaC4wNWwxLjkxLTYuNjhjLjExLS4zNy4wNC0xLjA2LS42Ni0xLjI4bC0xLjMtLjQyVjZjMC0xLjEtLjktMi0yLTJoLTNWMXpNNiA5Ljk3VjZoMTJ2My45N0wxMiA4IDYgOS45N3ptMTAgOS43MWMtMS4yMi44NS0yLjYxIDEuMjgtNCAxLjI4cy0yLjc4LS40My00LTEuMjhDNi43OCAyMC41MyA1LjM5IDIxIDQgMjFIMnYyaDJjMS4zOCAwIDIuNzQtLjM1IDQtLjk5IDEuMjYuNjQgMi42My45NyA0IC45N3MyLjc0LS4zMiA0LS45N2MxLjI2LjY1IDIuNjIuOTkgNCAuOTloMnYtMmgtMmMtMS4zOSAwLTIuNzgtLjQ3LTQtMS4zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNCb2F0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzdjFoLTJWM2gybS0xIDcuMTEgNS4zOCAxLjc3IDIuMzkuNzgtMS4xMiAzLjk3Yy0uNTQtLjMtLjk0LS43MS0xLjE0LS45NEwxNiAxMy45NmwtMS41MSAxLjcyYy0uMzQuNC0xLjI4IDEuMzItMi40OSAxLjMycy0yLjE1LS45Mi0yLjQ5LTEuMzJMOCAxMy45NmwtMS41MSAxLjcyYy0uMi4yMy0uNi42My0xLjE0LjkzbC0xLjEzLTMuOTYgMi40LS43OUwxMiAxMC4xMU0xNSAxSDl2M0g2Yy0xLjEgMC0yIC45LTIgMnY0LjYybC0xLjI5LjQyYTEuMDA3IDEuMDA3IDAgMCAwLS42NiAxLjI4TDMuOTUgMTlINGMxLjYgMCAzLjAyLS44OCA0LTIgLjk4IDEuMTIgMi40IDIgNCAyczMuMDItLjg4IDQtMmMuOTggMS4xMiAyLjQgMiA0IDJoLjA1bDEuODktNi42OGMuMDgtLjI2LjA2LS41NC0uMDYtLjc4cy0uMzQtLjQyLS42LS41TDIwIDEwLjYyVjZjMC0xLjEtLjktMi0yLTJoLTNWMXpNNiA5Ljk3VjZoMTJ2My45N0wxMiA4IDYgOS45N3ptMTAgOS43MWMtMS4yMi44NS0yLjYxIDEuMjgtNCAxLjI4cy0yLjc4LS40My00LTEuMjhDNi43OCAyMC41MyA1LjM5IDIxIDQgMjFIMnYyaDJjMS4zOCAwIDIuNzQtLjM1IDQtLjk5IDEuMjYuNjQgMi42My45NyA0IC45N3MyLjc0LS4zMiA0LS45N2MxLjI2LjY1IDIuNjIuOTkgNCAuOTloMnYtMmgtMmMtMS4zOSAwLTIuNzgtLjQ3LTQtMS4zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNCdXNGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy00IDAtOCAuNS04IDR2OS41YzAgLjk1LjM4IDEuODEgMSAyLjQ0VjIwYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDh2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMi4wNmMuNjItLjYzIDEtMS40OSAxLTIuNDRWNmMwLTMuNS0zLjU4LTQtOC00em0wIDJjMy43MSAwIDUuMTMuNDYgNS42NyAxSDYuNDNjLjYtLjUyIDIuMDUtMSA1LjU3LTF6bTYgMTFjMCAxLjEtLjkgMi0yIDJIOGMtMS4xIDAtMi0uOS0yLTJ2LTNoMTJ2M3ptMC01SDZWN2gxMnYzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNCdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQuNDIgMC04IC41LTggNHYxMGMwIC44OC4zOSAxLjY3IDEgMi4yMlYyMGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWg4djFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTEuNzhjLjYxLS41NSAxLTEuMzQgMS0yLjIyVjZjMC0zLjUtMy41OC00LTgtNHptNS42NiAyLjk5SDYuMzRDNi44OSA0LjQ2IDguMzEgNCAxMiA0czUuMTEuNDYgNS42Ni45OXptLjM0IDJWMTBINlY2Ljk5aDEyem0tLjM0IDkuNzQtLjI5LjI3SDYuNjNsLS4yOS0uMjdBLjk2OC45NjggMCAwIDEgNiAxNnYtNGgxMnY0YzAgLjM3LS4yMS42Mi0uMzQuNzN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc0NhckZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDYuMDFDMTguNzIgNS40MiAxOC4xNiA1IDE3LjUgNWgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTJ2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuODUgN2gxMC4yOWwxLjA0IDNINS44MWwxLjA0LTN6TTE5IDE3SDV2LTVoMTR2NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNi41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXJlY3Rpb25zQ2FyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MiA2LjAxQzE4LjcyIDUuNDIgMTguMTYgNSAxNy41IDVoLTExYy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwzIDEydjhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGwtMi4wOC01Ljk5ek02Ljg1IDdoMTAuMjlsMS4wOCAzLjExSDUuNzdMNi44NSA3ek0xOSAxN0g1di01aDE0djV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNy41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTYuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc1JhaWx3YXlGaWxsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYy00IDAtOCAuNS04IDR2OS41QzQgMTcuNDMgNS41NyAxOSA3LjUgMTlMNiAyMHYxaDEydi0xbC0xLjUtMWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY2YzAtMy41LTMuNTgtNC04LTR6bTAgMmMzLjcxIDAgNS4xMy40NiA1LjY3IDFINi40M2MuNi0uNTIgMi4wNS0xIDUuNTctMXptNiAxMS41YzAgLjgzLS42NyAxLjUtMS41IDEuNWgtOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41VjEyaDEydjMuNXptMC01LjVINlY3aDEydjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNSYWlsd2F5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxYy00LjQyIDAtOCAuNS04IDR2MTAuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjAuNXYuNWgxMnYtLjVMMTYuNSAxOWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY1YzAtMy41LTMuNTgtNC04LTR6bTAgMmM2IDAgNiAxLjIgNiAySDZjMC0uOCAwLTIgNi0yem02IDR2M0g2VjdoMTJ6bS0xLjUgMTBoLTljLS44MyAwLTEuNS0uNjctMS41LTEuNVYxMmgxMnYzLjVjMCAuODMtLjY3IDEuNS0xLjUgMS41ek0xMiAxMi41Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNSdW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjQ5IDUuNDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0tMy42IDEzLjkgMS00LjQgMi4xIDJ2Nmgydi03LjVsLTIuMS0yIC42LTNjMS4zIDEuNSAzLjMgMi41IDUuNSAyLjV2LTJjLTEuOSAwLTMuNS0xLTQuMy0yLjRsLTEtMS42Yy0uNC0uNi0xLTEtMS43LTEtLjMgMC0uNS4xLS44LjFsLTUuMiAyLjJ2NC43aDJ2LTMuNGwxLjgtLjctMS42IDguMS00LjktMS0uNCAyIDcgMS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc1N1YndheUZpbGxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTQgMC04IC41LTggNHY5LjVDNCAxNy40MyA1LjU3IDE5IDcuNSAxOUw2IDIwdjFoMTJ2LTFsLTEuNS0xYzEuOTMgMCAzLjUtMS41NyAzLjUtMy41VjZjMC0zLjUtMy41OC00LTgtNHptMCAyYzMuNzEgMCA1LjEzLjQ2IDUuNjcgMUg2LjQzYy42LS41MiAyLjA1LTEgNS41Ny0xek02IDdoNXYzSDZWN3ptMTIgOC41YzAgLjgzLS42NyAxLjUtMS41IDEuNWgtOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41VjEyaDEydjMuNXptMC01LjVoLTVWN2g1djN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc1N1YndheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjAuNXYuNWgxMnYtLjVMMTYuNSAxOWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY2YzAtMy41LTMuNTgtNC04LTR6bTUuNjYgM0g2LjQzYy42MS0uNTIgMi4wNi0xIDUuNTctMSAzLjcxIDAgNS4xMi40NiA1LjY2IDF6TTExIDd2M0g2VjdoNXptMiAwaDV2M2gtNVY3em0zLjUgMTBoLTljLS44MyAwLTEuNS0uNjctMS41LTEuNVYxMmgxMnYzLjVjMCAuODMtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNUcmFuc2l0RmlsbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjB2MWgxMnYtMWwtMS41LTFjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVWNmMwLTMuNS0zLjU4LTQtOC00em0wIDJjMy43MSAwIDUuMTMuNDYgNS42NyAxSDYuNDNjLjYtLjUyIDIuMDUtMSA1LjU3LTF6TTYgN2g1djNINlY3em0xMiA4LjVjMCAuODMtLjY3IDEuNS0xLjUgMS41aC05Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVWMTJoMTJ2My41em0wLTUuNWgtNVY3aDV2M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNS41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXJlY3Rpb25zVHJhbnNpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjAuNXYuNWgxMnYtLjVMMTYuNSAxOWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVY2YzAtMy41LTMuNTgtNC04LTR6bTUuNjYgM0g2LjQzYy42MS0uNTIgMi4wNi0xIDUuNTctMSAzLjcxIDAgNS4xMi40NiA1LjY2IDF6TTExIDd2M0g2VjdoNXptMiAwaDV2M2gtNVY3em0zLjUgMTBoLTljLS44MyAwLTEuNS0uNjctMS41LTEuNVYxMmgxMnYzLjVjMCAuODMtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnNXYWxrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6TTkuOCA4LjkgNyAyM2gyLjFsMS44LTggMi4xIDJ2Nmgydi03LjVsLTIuMS0yIC42LTNDMTQuOCAxMiAxNi44IDEzIDE5IDEzdi0yYy0xLjkgMC0zLjUtMS00LjMtMi40bC0xLTEuNmEyLjE0NSAyLjE0NSAwIDAgMC0yLjY1LS44NEw2IDguM1YxM2gyVjkuNmwxLjgtLjdcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpcmVjdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjQzIDEwLjU5LTkuMDEtOS4wMWMtLjc1LS43NS0yLjA3LS43Ni0yLjgzIDBsLTkgOWMtLjc4Ljc4LS43OCAyLjA0IDAgMi44Mmw5IDljLjM5LjM5LjkuNTggMS40MS41OC41MSAwIDEuMDItLjE5IDEuNDEtLjU4bDguOTktOC45OWMuNzktLjc2LjgtMi4wMi4wMy0yLjgyem0tMTAuNDIgMTAuNC05LTkgOS05IDkgOS05IDl6TTggMTF2NGgydi0zaDR2Mi41bDMuNS0zLjVMMTQgNy41VjEwSDljLS41NSAwLTEgLjQ1LTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURyeUNsZWFuaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNTYgMTEuMzYgMTMgOC40NFY3YzAtLjU1LS40NS0xLTEtMXMtMS0uNDUtMS0xIC40NS0xIDEtMSAxIC40NSAxIDFoMmMwLTEuODQtMS42Ni0zLjMtMy41Ni0yLjk1LTEuMTguMjItMi4xNSAxLjE3LTIuMzggMi4zNS0uMyAxLjU2LjYgMi45NCAxLjk0IDMuNDJ2LjYzbC02LjU2IDIuOTJjLS44OC4zOC0xLjQ0IDEuMjUtMS40NCAyLjJ2LjAxQzMgMTQuOTIgNC4wOCAxNiA1LjQyIDE2SDd2NmgxMHYtNmgxLjU4YzEuMzQgMCAyLjQyLTEuMDggMi40Mi0yLjQydi0uMDFjMC0uOTUtLjU2LTEuODItMS40NC0yLjIxek0xNSAyMEg5di01aDZ2NXptMy41OC02SDE3di0xSDd2MUg1LjQyYy0uNDYgMC0uNTgtLjY1LS4xNy0uODFsNi43NS0zIDYuNzUgM2MuNDIuMTkuMjguODEtLjE3LjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWRpdEF0dHJpYnV0ZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjYzIDdINi4zN0MzLjk2IDcgMiA5LjI0IDIgMTJzMS45NiA1IDQuMzcgNWgxMS4yNmMyLjQxIDAgNC4zNy0yLjI0IDQuMzctNXMtMS45Ni01LTQuMzctNXptMCA4SDYuMzdDNS4wOSAxNSA0IDEzLjYzIDQgMTJzMS4wOS0zIDIuMzctM2gxMS4yNkMxOC45MSA5IDIwIDEwLjM3IDIwIDEycy0xLjA5IDMtMi4zNyAzek03LjI0IDEzLjA2bC0xLjg3LTEuODctLjcuNyAyLjU3IDIuNTcgNC4yMi00LjIyLS43LS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWRpdExvY2F0aW9uQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTFoMi4xMmw2LjE2LTYuMTYtMi4xMi0yLjEyTDExIDguODhWMTF6bTkuNzEtOUwyMCAxLjI5YS45OTYuOTk2IDAgMCAwLTEuNDEgMGwtLjcyLjcyIDIuMTIgMi4xMi43Mi0uNzJhLjk5Ni45OTYgMCAwIDAgMC0xLjQxek0xNy45IDkuMDVjLjA2LjM2LjEuNzQuMSAxLjE1IDAgMS43MS0xLjA4IDQuNjQtNiA5LjE0LTQuOTItNC40OS02LTcuNDMtNi05LjE0QzYgNi4xNyA5LjA5IDQgMTIgNGMuMzIgMCAuNjUuMDMuOTcuMDhsMS42NS0xLjY1QTguNTYgOC41NiAwIDAgMCAxMiAyYy00LjIgMC04IDMuMjItOCA4LjIgMCAzLjMyIDIuNjcgNy4yNSA4IDExLjggNS4zMy00LjU1IDgtOC40OCA4LTExLjggMC0xLjAxLS4xNi0xLjk0LS40NS0yLjhMMTcuOSA5LjA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWRpdExvY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMTcgNC45MSAxNy4xIDMuODRsLTUuNTUgNS41NXYxLjA4aDEuMDhsNS41NC01LjU2ek0xNiAyLjc0bDEuMjktMS4yOWExLjQ5IDEuNDkgMCAwIDEgMi4xMiAwbDEuMTUgMS4xNWMuNTkuNTkuNTkgMS41NCAwIDIuMTJsLS42OC42OC0uMDIuMDItLjU4LjU4LTYgNkgxMFY4Ljc0bDYtNnptLTIuMjgtLjU1LS41NS41NS0xLjI3IDEuMjdjLTMuMy4wNS01LjkgMi42LTUuOSA2LjIgMCAyLjM0IDEuOTUgNS40NCA2IDkuMTQgNC4wNS0zLjcgNi02Ljc5IDYtOS4xNHYtLjFsMS44LTEuOGMuMTMuNi4yIDEuMjQuMiAxLjkgMCAzLjMyLTIuNjcgNy4yNS04IDExLjgtNS4zMy00LjU1LTgtOC40OC04LTExLjggMC00Ljk4IDMuOC04LjIgOC04LjIuNTggMCAxLjE2LjA2IDEuNzIuMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFZGl0Um9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRoLTJ2Ny45bDItMnpNNCA0aDJ2MTZINHpNMTAgNGgydjRoLTJ6TTEwIDEwaDJ2NGgtMnpNMTAgMTZoMnY0aC0yek0yMi41NiAxMi41OWwtMS4xNS0xLjE1YTEuNDkgMS40OSAwIDAgMC0yLjEyIDBMMTQgMTYuNzNWMjBoMy4yN2w1LjI5LTUuMjljLjU5LS41OS41OS0xLjU0IDAtMi4xMnptLTUuOTggNS44NmgtMS4wM3YtMS4wM0wxOSAxMy45NyAyMC4wMyAxNWwtMy40NSAzLjQ1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWdnQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOWMtMi0yLTMuMDEtNy05LjAzLTdDNC45NSAyIDEuOTQgNiAyIDExLjUyIDIuMDYgMTcuMDQgNi45NiAxOSA5Ljk3IDE5YzIuMDEgMCAyLjAxIDMgNi4wMiAzQzE5IDIyIDIyIDE5IDIyIDE1LjAyIDIyIDEyIDIxLjAxIDExIDE5IDl6bS0zLjAxIDExYy0xLjQ5IDAtMS45Ni0uNS0yLjY4LTEuMjYtLjY1LS42OS0xLjY1LTEuNzQtMy4zNC0xLjc0LTEuNjQgMC01LjkyLS45OS01Ljk3LTUuNS0uMDMtMi41MS42OC00LjYyIDEuOTktNS45NUM3LjAxIDQuNTIgOC4zNSA0IDkuOTcgNGMzLjM0IDAgNC41MSAxLjg2IDUuODYgNC4wMi41NS44OCAxLjA3IDEuNzEgMS43NiAyLjM5IDEuOSAxLjg5IDIuNDEgMi40IDIuNDEgNC42MSAwIDIuODUtMi4xMiA0Ljk4LTQuMDEgNC45OHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIzLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVnZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNDOC41IDMgNSA5LjMzIDUgMTRjMCAzLjg3IDMuMTMgNyA3IDdzNy0zLjEzIDctN2MwLTQuNjctMy41LTExLTctMTF6bTAgMTZjLTIuNzYgMC01LTIuMjQtNS01IDAtNC4wOSAzLjA3LTkgNS05czUgNC45MSA1IDljMCAyLjc2LTIuMjQgNS01IDV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDE2Yy0uNTggMC0zLS4wOC0zLTMgMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDFjMCAzIDEuOTkgNSA1IDUgLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbGVjdHJpY0Jpa2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3aC0uODJsLTEuNy00LjY4QTIuMDA4IDIuMDA4IDAgMCAwIDE0LjYgMUgxMnYyaDIuNmwxLjQ2IDRoLTQuODFsLS4zNi0xSDEyVjRIN3YyaDEuNzVsMS44MiA1SDkuOWMtLjQ0LTIuMjMtMi4zMS0zLjg4LTQuNjUtMy45OUMyLjQ1IDYuODcgMCA5LjIgMCAxMmMwIDIuOCAyLjIgNSA1IDUgMi40NiAwIDQuNDUtMS42OSA0LjktNGg0LjJjLjQ0IDIuMjMgMi4zMSAzLjg4IDQuNjUgMy45OSAyLjguMTMgNS4yNS0yLjE5IDUuMjUtNUMyNCA5LjIgMjEuOCA3IDE5IDd6TTcuODIgMTNjLS40IDEuMTctMS40OSAyLTIuODIgMi0xLjY4IDAtMy0xLjMyLTMtM3MxLjMyLTMgMy0zYzEuMzMgMCAyLjQyLjgzIDIuODIgMkg1djJoMi44MnptNi4yOC0yaC0xLjRsLS43My0ySDE1Yy0uNDQuNTgtLjc2IDEuMjUtLjkgMnptNC45IDRjLTEuNjggMC0zLTEuMzItMy0zIDAtLjkzLjQxLTEuNzMgMS4wNS0yLjI4bC45NiAyLjY0IDEuODgtLjY4LS45Ny0yLjY3Yy4wMiAwIC4wNS0uMDEuMDgtLjAxIDEuNjggMCAzIDEuMzIgMyAzcy0xLjMyIDMtMyAzek0xMSAyMEg3bDYgM3YtMmg0bC02LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbGVjdHJpY0NhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDIuMDFDMTguNzIgMS40MiAxOC4xNiAxIDE3LjUgMWgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgOHY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTFWOGwtMi4wOC01Ljk5ek02Ljg1IDNoMTAuMjlsMS4wOCAzLjExSDUuNzdMNi44NSAzek0xOSAxM0g1VjhoMTR2NXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3LjVcIixcImN5XCI6XCIxMC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNi41XCIsXCJjeVwiOlwiMTAuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMjBoNHYtMmw2IDNoLTR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVsZWN0cmljTW9wZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1YzAtMS4xLS45LTItMi0yaC0zdjJoM3YyLjY1TDEzLjUyIDEySDEwVjdINmMtMi4yMSAwLTQgMS43OS00IDR2M2gyYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoNC40OEwxOSA4LjM1VjV6TTQgMTJ2LTFjMC0xLjEuOS0yIDItMmgydjNINHptMyAzYy0uNTUgMC0xLS40NS0xLTFoMmMwIC41NS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNGg1djJINXpNMTkgMTFjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpNNyAyMGg0di0ybDYgM2gtNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWxlY3RyaWNSaWNrc2hhdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDExLjE4VjkuNzJjMC0uNDctLjE2LS45Mi0uNDYtMS4yOEwxNi42IDMuNzJjLS4zOC0uNDYtLjk0LS43Mi0xLjU0LS43MkgzYy0xLjEgMC0yIC45LTIgMnY4YzAgMS4xLjkgMiAyIDJoLjE4QzMuNiAxNi4xNiA0LjcgMTcgNiAxN3MyLjQtLjg0IDIuODItMmg4LjM3YTIuOTk2IDIuOTk2IDAgMCAwIDUuODItMWMtLjAxLTEuMy0uODUtMi40LTIuMDEtMi44MnpNNiAxNWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0xLTMuODNBMy4wMTQgMy4wMTQgMCAwIDAgMy4xNyAxM0gzdi0zaDR2MS4xN3pNNyA4SDNWNWg0djN6bTcgNUg5di0zaDNWOEg5VjVoNXY4em0yLTYuODhMMTguNCA5SDE2VjYuMTJ6TTE3LjE3IDEzSDE2di0yaDN2LjE3Yy0uODUuMy0xLjUzLjk4LTEuODMgMS44M3pNMjAgMTVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpNNyAyMGg0di0ybDYgM2gtNHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWxlY3RyaWNTY29vdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy44MiAxNkgxNXYtMWMwLTIuMjEgMS43OS00IDQtNGguNzRsLTEuOS04LjQ0QTIuMDA5IDIuMDA5IDAgMCAwIDE1Ljg5IDFIMTJ2MmgzLjg5bDEuNCA2LjI1aC0uMDFBNi4wMDggNi4wMDggMCAwIDAgMTMuMDkgMTRINy44MmEyLjk5NiAyLjk5NiAwIDAgMC0zLjQyLTEuOTRjLTEuMTguMjMtMi4xMyAxLjItMi4zNSAyLjM4QTMuMDAyIDMuMDAyIDAgMCAwIDUgMThjMS4zIDAgMi40LS44NCAyLjgyLTJ6TTUgMTZjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTJjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpNMTEgMjBIN2w2IDN2LTJoNGwtNi0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWxlY3RyaWNhbFNlcnZpY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTRjMC0uNTUtLjQ1LTEtMS0xaC0ydjJoMmMuNTUgMCAxLS40NSAxLTF6TTIwIDE3aC0ydjJoMmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMXpNMTIgMTRoLTJ2NGgyYzAgMS4xLjkgMiAyIDJoM3YtOGgtM2MtMS4xIDAtMiAuOS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTNjMC0xLjEuOS0yIDItMmgxLjVjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTAuNDMgNCA4LjUgNEg1Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxaDMuNWMuODMgMCAxLjUuNjcgMS41IDEuNVM5LjMzIDkgOC41IDlIN2MtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNGgydi0ySDdjLTEuMSAwLTItLjktMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRW1lcmdlbmN5UmVjb3JkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTAuNDhWNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0ydi00LjQ4bDQgMy45OHYtMTFsLTQgMy45OHpNMTYgMThINFY2aDEydjEyem0tNC02IDMgMS43My0xIDEuNzMtMy0xLjczVjE3SDl2LTMuMjdsLTMgMS43My0xLTEuNzNMOCAxMmwtMy0xLjczIDEtMS43MyAzIDEuNzNWN2gydjMuMjdsMy0xLjczIDEgMS43M0wxMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtZXJnZW5jeVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGMxLjkzIDAgMy42OC43OCA0Ljk1IDIuMDVsLTEuNDEgMS40MWE1LjAyMiA1LjAyMiAwIDAgMC03LjA4IDBMNy4wNSA2LjA1QTYuOTc2IDYuOTc2IDAgMCAxIDEyIDR6bTcuNzgtLjc3LTEuNDEgMS40MUMxNi43NCAzLjAxIDE0LjQ5IDIgMTIuMDEgMlM3LjI3IDMuMDEgNS42NCA0LjYzTDQuMjIgMy4yMkM2LjIyIDEuMjMgOC45NyAwIDEyLjAxIDBzNS43OCAxLjIzIDcuNzcgMy4yM3pNMTIgMTFjMS45NCAwIDQgMS40NSA0IDQuMTUgMCAuOTQtLjU1IDIuOTMtNCA2LjE3LTMuNDUtMy4yNC00LTUuMjMtNC02LjE3IDAtMi43IDIuMDYtNC4xNSA0LTQuMTV6bTAtMmMtMy4xNSAwLTYgMi40MS02IDYuMTUgMCAyLjQ5IDIgNS40NCA2IDguODUgNC0zLjQxIDYtNi4zNiA2LTguODVDMTggMTEuNDEgMTUuMTUgOSAxMiA5em0xLjUgNmMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41LjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtZXJnZW5jeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjI5IDEzLjkgMTggMTJsMy4yOS0xLjljLjQ4LS4yOC42NC0uODkuMzctMS4zN2wtMi0zLjQ2YTEuMDEgMS4wMSAwIDAgMC0xLjM3LS4zN0wxNSA2LjhWM2MwLS41NS0uNDUtMS0xLTFoLTRjLS41NSAwLTEgLjQ1LTEgMXYzLjhMNS43MSA0LjlhMS4wMSAxLjAxIDAgMCAwLTEuMzcuMzdsLTIgMy40NmMtLjI4LjQ4LS4xMSAxLjA5LjM3IDEuMzdMNiAxMmwtMy4yOSAxLjljLS40OC4yOC0uNjQuODktLjM3IDEuMzdsMiAzLjQ2Yy4yOC40OC44OS42NCAxLjM3LjM3TDkgMTcuMlYyMWMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtMy44bDMuMjkgMS45Yy40OC4yOCAxLjA5LjExIDEuMzctLjM3bDItMy40NmMuMjgtLjQ4LjExLTEuMDktLjM3LTEuMzd6bS0yLjg2IDIuOTctNC42OC0yLjdjLS4zMy0uMi0uNzUuMDQtLjc1LjQzVjIwaC0ydi01LjRjMC0uMzgtLjQyLS42My0uNzUtLjQzbC00LjY4IDIuNy0xLTEuNzMgNC42OC0yLjdjLjMzLS4xOS4zMy0uNjcgMC0uODdsLTQuNjgtMi43IDEtMS43MyA0LjY4IDIuN2MuMzMuMTkuNzUtLjA1Ljc1LS40NFY0aDJ2NS40YzAgLjM4LjQyLjYzLjc1LjQzbDQuNjgtMi43IDEgMS43My00LjY4IDIuN2MtLjMzLjE5LS4zMy42NyAwIC44N2w0LjY4IDIuNy0xIDEuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFdlN0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljc3IDcuMjMuMDEtLjAxLTMuNzItMy43MkwxNSA0LjU2bDIuMTEgMi4xMWMtLjk0LjM2LTEuNjEgMS4yNi0xLjYxIDIuMzNhMi41IDIuNSAwIDAgMCAyLjUgMi41Yy4zNiAwIC42OS0uMDggMS0uMjF2Ny4yMWMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMVYxNGMwLTEuMS0uOS0yLTItMmgtMVY1YzAtMS4xLS45LTItMi0ySDZjLTEuMSAwLTIgLjktMiAydjE2aDEwdi03LjVoMS41djVhMi41IDIuNSAwIDAgMCA1IDBWOWMwLS42OS0uMjgtMS4zMi0uNzMtMS43N3pNMTIgMTF2OEg2VjVoNnY2em02LTFjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptLTgtNC00IDcuNWgyVjE4bDQtN2gtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhY3RvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAyMkgyVjEwbDctM3YybDUtMnYzaDNsMS04aDNsMSA4djEyek0xMiA5Ljk1bC01IDJWMTBsLTMgMS4zMlYyMGgxNnYtOGgtOFY5Ljk1ek0xMSAxOGgydi00aC0ydjR6bS00IDBoMnYtNEg3djR6bTEwLTRoLTJ2NGgydi00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFzdGZvb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMjEuOThjMCAuNTYuNDUgMS4wMSAxLjAxIDEuMDFIMTVjLjU2IDAgMS4wMS0uNDUgMS4wMS0xLjAxVjIxSDF2Ljk4ek04LjUgOC45OUM0Ljc1IDguOTkgMSAxMSAxIDE1aDE1YzAtNC0zLjc1LTYuMDEtNy41LTYuMDF6TTMuNjIgMTNjMS4xMS0xLjU1IDMuNDctMi4wMSA0Ljg4LTIuMDFzMy43Ny40NiA0Ljg4IDIuMDFIMy42MnpNMSAxN2gxNXYySDF6TTE4IDVWMWgtMnY0aC01bC4yMyAyaDkuNTZsLTEuNCAxNEgxOHYyaDEuNzJjLjg0IDAgMS41My0uNjUgMS42My0xLjQ3TDIzIDVoLTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGZXN0aXZhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDExVjljLTYtMi0xMS03LTExLTdTNyA3IDEgOXYyYzAgMS40OS45MyAyLjc1IDIuMjQgMy4yNkMzLjIgMTYuNzYgMi45MiAxOS42OSAyIDIyaDIwYy0uOTItMi4zMS0xLjItNS4yNC0xLjI0LTcuNzRBMy40OTYgMy40OTYgMCAwIDAgMjMgMTF6TTEyIDQuNzFjMS4zMyAxLjE0IDMuNDkgMi44NCA2LjExIDQuMjlINS44OUM4LjUxIDcuNTUgMTAuNjcgNS44NSAxMiA0Ljcxek0xMyAxMWgzYzAgLjgzLS42NyAxLjUtMS41IDEuNVMxMyAxMS44MyAxMyAxMXptLTMuNSAxLjVjLS44MyAwLTEuNS0uNjctMS41LTEuNWgzYzAgLjgzLS42NyAxLjUtMS41IDEuNXpNNiAxMWMwIC44My0uNjcgMS41LTEuNSAxLjVTMyAxMS44MyAzIDExaDN6bS0xLjM0IDljLjM5LTEuODYuNTQtMy44Mi41Ny01LjU4LjY4LS4xNSAxLjI5LS40OSAxLjc2LS45OC4yNS4yNS41NC40NS44NS42Mi0uMSAxLjg3LS4yNiA0LS41MiA1LjkzSDQuNjZ6bTQuNjkgMGMuMjQtMS44My4zOS0zLjc4LjQ4LTUuNTMuODQtLjA4IDEuNjEtLjQ1IDIuMTctMS4wMi41Ni41NyAxLjMyLjk0IDIuMTcgMS4wMi4xIDEuNzUuMjQgMy43LjQ4IDUuNTNoLTUuM3ptNy4zMiAwYy0uMjctMS45NC0uNDMtNC4wNy0uNTItNS45My4zMS0uMTcuNjEtLjM3Ljg1LS42Mi40Ny40OCAxLjA4LjgzIDEuNzYuOTguMDMgMS43Ni4xOCAzLjcyLjU3IDUuNThoLTIuNjZ6bTIuODMtNy41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVoM2MwIC44My0uNjcgMS41LTEuNSAxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaXJlSHlkcmFudEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEwLjVjLTEuOTMgMC0zLjUgMS41Ny0zLjUgMy41czEuNTcgMy41IDMuNSAzLjUgMy41LTEuNTcgMy41LTMuNS0xLjU3LTMuNS0zLjUtMy41em0wIDVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMWgtMVY4aDJWNmgtMi4zNWE1Ljk5IDUuOTkgMCAwIDAtMTEuMyAwSDR2MmgydjNINWMtMS4xIDAtMiAuOS0yIDJ2MmMwIDEuMS45IDIgMiAyaDF2M0g0djJoMTZ2LTJoLTJ2LTNoMWMxLjEgMCAyLS45IDItMnYtMmMwLTEuMS0uOS0yLTItMnptLTctN2MxLjQ3IDAgMi43NS44MSAzLjQ0IDJIOC41NmMuNjktMS4xOSAxLjk3LTIgMy40NC0yem03IDExaC0zdjVIOHYtNUg1di0yaDNWOGg4djVoM3YyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmlyZVRydWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIuOSAxMC42OS0xLjQ0LTQuMzJBMi4wMSAyLjAxIDAgMCAwIDE5LjU2IDVIMTlWNGMwLS41NS0uNDUtMS0xLTFoLTFjLS41NSAwLTEgLjQ1LTEgMXYxaC0yYy0xLjEgMC0yIC45LTIgMnY0SDF2NWMwIDEuMS45IDIgMiAyaDFjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g0YzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoM3YtNi42OGMwLS4yMS0uMDMtLjQyLS4xLS42M3pNMTQgN2g1LjU2bDEuMzMgNEgxNFY3ek03IDE5Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTUtM0g5LjIyYy0uNTUtLjYxLTEuMzMtMS0yLjIyLTFzLTEuNjcuMzktMi4yMiAxSDN2LTNoOXYzem01IDNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMi4yMi0zYy0uNTUtLjYxLTEuMzQtMS0yLjIyLTFzLTEuNjcuMzktMi4yMiAxSDE0di0zaDd2M2gtMS43OHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOC41aC0xdi0yaDFWNUgxdjEuNWgxdjJIMVYxMGgxMFY4LjV6bS0yLjUgMEg2Ljc1di0ySDguNXYyem0tNS0yaDEuNzV2MkgzLjV2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGlnaHRDbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDRoLTJjLTEuMSAwLTIgLjktMiAydjVjMCAxLjEuOSAyIDIgMmgyYzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgN2gtMlY2aDJ2NXptLTYuNSA1SDE4djJIOS40OWMtLjg4IDAtMS42Ni0uNTgtMS45Mi0xLjQzTDUgOFY0aDJ2NGwyLjUgOHpNOCAxOWgxMHYySDh2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE2di0ybC04LTVWMy41YzAtLjgzLS42Ny0xLjUtMS41LTEuNVMxMCAyLjY3IDEwIDMuNVY5bC04IDV2Mmw4LTIuNVYxOWwtMiAxLjVWMjJsMy41LTEgMy41IDF2LTEuNUwxMyAxOXYtNS41bDggMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9yZXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjQgMTgtMy44Ni02SDIyTDE1IDJsLTMgNC4yOUw5IDIgMiAxMmgxLjg2TDAgMThoN3Y0aDR2LTRoMnY0aDR2LTRoN3pNMTUgNS40OSAxOC4xNiAxMGgtMS42OGwzLjg2IDZoLTMuNjJsLTIuNTctNEgxNmwtMi43OC0zLjk3TDE1IDUuNDl6TTMuNjYgMTZsMy44Ni02SDUuODRMOSA1LjQ5IDEyLjE2IDEwaC0xLjY4bDMuODYgNkgzLjY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ya0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjQxIDE1LjU5IDggMTdsLTQtNCA0LTQgMS40MSAxLjQxTDcuODMgMTJjMS41MS0uMzMgMy43My4wOCA1LjE3IDEuMzZWNi44M2wtMS41OSAxLjU5TDEwIDdsNC00IDQgNC0xLjQxIDEuNDFMMTUgNi44M1YyMWgtMnYtNGMtLjczLTIuNTgtMy4wNy0zLjQ3LTUuMTctM2wxLjU4IDEuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3JrUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41OSAxNS41OSAxNiAxN2w0LTQtNC00LTEuNDEgMS40MUwxNi4xNyAxMmMtMS41MS0uMzMtMy43My4wOC01LjE3IDEuMzZWNi44M2wxLjU5IDEuNTlMMTQgN2wtNC00LTQgNCAxLjQxIDEuNDFMOSA2LjgzVjIxaDJ2LTRjLjczLTIuNTggMy4wNy0zLjQ3IDUuMTctM2wtMS41OCAxLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDN2MmgtMlYzaC0ydjJoLTJWM2gtMnY0bDIgMnYxSDlWOWwyLTJWM0g5djJIN1YzSDV2MkgzVjNIMXY0bDIgMnY2bC0yIDJ2NGg5di0zYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2M2g5di00bC0yLTJWOWwyLTJWM2gtMnptMCAxNmgtNXYtMWMwLTIuMjEtMS43OS00LTQtNHMtNCAxLjc5LTQgNHYxSDN2LTEuMTdsMi0yVjguMTdMMy44MyA3aDQuMzRMNyA4LjE3VjEyaDEwVjguMTdMMTUuODMgN2g0LjM0TDE5IDguMTd2Ny42NmwyIDJWMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTUtNGgyYzAgMi43LS45MyA0LjQxLTIuMyA1LjUtLjUuNC0xLjEuNy0xLjcuOVYyMmgtMnYtNmgtMnY2SDlWMTAuMWMtLjMuMS0uNS4yLS42LjMtLjUzLjQxLTEuNCAxLjAzLTEuNCAzLjZINWMwLTIuMDYuMzUtMy43OCAyLjExLTUuMjlDOC4yMSA3LjgxIDEwIDcgMTIgN3MyLjY4LS40NiAzLjQ4LTEuMDZDMTUuOTYgNS41NSAxNyA0Ljc2IDE3IDJ6TTQgMTZoM3Y2SDR2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIYW5keW1hbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjY3IDE4LjE3LTUuMy01LjNoLS45OWwtMi41NCAyLjU0di45OWw1LjMgNS4zYy4zOS4zOSAxLjAyLjM5IDEuNDEgMGwyLjEyLTIuMTJhLjk5Ni45OTYgMCAwIDAgMC0xLjQxem0tMi44MyAxLjQyLTQuMjQtNC4yNC43MS0uNzEgNC4yNCA0LjI0LS43MS43MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMzQgMTAuMTkgMS40MS0xLjQxIDIuMTIgMi4xMmEzIDMgMCAwIDAgMC00LjI0bC0zLjU0LTMuNTQtMS40MSAxLjQxVjEuNzFsLS43LS43MS0zLjU0IDMuNTQuNzEuNzFoMi44M2wtMS40MSAxLjQxIDEuMDYgMS4wNi0yLjg5IDIuODktNC4xMy00LjEzVjUuMDZMNC44MyAyLjA0IDIgNC44NyA1LjAzIDcuOWgxLjQxbDQuMTMgNC4xMy0uODUuODVINy42bC01LjMgNS4zYS45OTYuOTk2IDAgMCAwIDAgMS40MWwyLjEyIDIuMTJjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDUuMy01LjN2LTIuMTJsNS4xNS01LjE1IDEuMDYgMS4wNXptLTcuOTggNS4xNS00LjI0IDQuMjQtLjcxLS43MSA0LjI0LTQuMjQuNzEuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIYXJkd2FyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4IDMtMyAzVjNIOUM2LjI0IDMgNCA1LjI0IDQgOGg1djEyYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xVjhsMyAzaDJWM2gtMnptLTUgMTZoLTJ2LTZoMnY2em0tMi04VjZINi43N0M3LjMyIDUuMzkgOC4xMSA1IDkgNWg0djZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb21lUmVwYWlyU2VydmljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDhoLTNWNmMwLTEuMS0uOS0yLTItMkg5Yy0xLjEgMC0yIC45LTIgMnYySDRjLTEuMSAwLTIgLjktMiAydjEwaDIwVjEwYzAtMS4xLS45LTItMi0yek05IDZoNnYySDlWNnptMTEgMTJINHYtM2gydjFoMnYtMWg4djFoMnYtMWgydjN6bS0yLTV2LTFoLTJ2MUg4di0xSDZ2MUg0di0zaDE2djNoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb3RlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNGMxLjY2IDAgMy0xLjM0IDMtM1M4LjY2IDggNyA4cy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xMi0zaC04djhIM1Y1SDF2MTVoMnYtM2gxOHYzaDJ2LTljMC0yLjIxLTEuNzktNC00LTR6bTIgOGgtOFY5aDZjMS4xIDAgMiAuOSAyIDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUh2YWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE4YzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02LTYgMi42OS02IDYgMi42OSA2IDYgNnptMy40NC04Yy4yNi40NS40NC45Ni41MSAxLjVoLTcuOWMuMDctLjU0LjI0LTEuMDUuNTEtMS41aDYuODh6bS41MSAyLjVjLS4wNy41NC0uMjQgMS4wNS0uNTEgMS41SDguNTZjLS4yNi0uNDUtLjQ0LS45Ni0uNTEtMS41aDcuOXpNOS4zOCAxNWg1LjI0Yy0uNy42MS0xLjYxIDEtMi42MiAxcy0xLjkxLS4zOS0yLjYyLTF6bTUuMjQtNkg5LjM4Yy43LS42MSAxLjYxLTEgMi42Mi0xczEuOTEuMzkgMi42MiAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSWNlY3JlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4zOCA2LjI0QzE3Ljc5IDMuMjQgMTUuMTQgMSAxMiAxUzYuMjEgMy4yNCA1LjYyIDYuMjRBNC4wMTQgNC4wMTQgMCAwIDAgMyAxMGMwIDIuMjEgMS43OSA0IDQgNCAuMTIgMCAuMjMtLjAyLjM0LS4wMkwxMi4wNyAyM2w0LjYxLTkuMDNjLjExLjAxLjIxLjAzLjMyLjAzIDIuMjEgMCA0LTEuNzkgNC00IDAtMS43MS0xLjA4LTMuMTktMi42Mi0zLjc2em0tNi4zMyAxMi4zOS0yLjczLTUuMjFhNi40NjggNi40NjggMCAwIDAgNS40LS4wMmwtMi42NyA1LjIzek0xNyAxMmMtLjUyIDAtMS4wMS0uMi0xLjM5LS41NmwtLjU2LS41NC0uNjYuNDJhNC41MiA0LjUyIDAgMCAxLTQuNzgtLjAxbC0uNjYtLjQxLS41Ni41NGMtLjM4LjM1LS44Ny41Ni0xLjM5LjU2YTEuOTk5IDEuOTk5IDAgMCAxLS4zMi0zLjk3bC43Ny0uMTMuMDYtLjc4QzcuNzEgNC44IDkuNjYgMyAxMiAzczQuMjkgMS44IDQuNDggNC4xMmwuMDYuNzguNzcuMTJjLjk3LjE2IDEuNjkuOTkgMS42OSAxLjk4IDAgMS4xLS45IDItMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2ViYWJEaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy43NSA3aC43NWEyLjUgMi41IDAgMCAwIDAtNWgtLjc1VjFoLTEuNXYxaC0uNzVhMi41IDIuNSAwIDAgMCAwIDVoLjc1djFIMTN2NWgzLjI1djFoLS43NWEyLjUgMi41IDAgMCAwIDAgNWguNzV2NGgxLjV2LTRoLjc1YTIuNSAyLjUgMCAwIDAgMC01aC0uNzV2LTFIMjFWOGgtMy4yNVY3ek0xNS41IDVjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgzYy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNWgtM3ptMyAxMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjVoLTNjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNWgzem0uNS02djFoLTR2LTFoNHpNNy43NSA3aC43NWEyLjUgMi41IDAgMCAwIDAtNWgtLjc1VjFoLTEuNXYxSDUuNWEyLjUgMi41IDAgMCAwIDAgNWguNzV2MUgzdjVoMy4yNXYxSDUuNWEyLjUgMi41IDAgMCAwIDAgNWguNzV2NGgxLjV2LTRoLjc1YTIuNSAyLjUgMCAwIDAgMC01aC0uNzV2LTFIMTFWOEg3Ljc1Vjd6TTUuNSA1Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoM2MuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjVoLTN6bTMgMTFjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41aC0zYy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjVoM3ptLjUtNnYxSDV2LTFoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxheWVyc0NsZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0LjUzIDE3Ljc0IDlsLTEuODkgMS40NyAxLjQzIDEuNDJMMjEgOWwtOS03LTIuNTkgMi4wMiAxLjQyIDEuNDJ6bTkgOS41NC0xLjYzLTEuMjctLjY3LjUyIDEuNDMgMS40M3pNMy40MS44NiAyIDIuMjdsNC4yMiA0LjIyTDMgOWw5IDcgMi4xLTEuNjMgMS40MiAxLjQyLTMuNTMgMi43NS03LjM3LTUuNzNMMyAxNC4wN2w5IDcgNC45NS0zLjg1TDIwLjczIDIxbDEuNDEtMS40MUwzLjQxLjg2ek0xMiAxMy40NyA2LjI2IDlsMS4zOS0xLjA4IDUuMDIgNS4wMi0uNjcuNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMYXllcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExLjk5IDE4LjU0LTcuMzctNS43M0wzIDE0LjA3bDkgNyA5LTctMS42My0xLjI3ek0xMiAxNmw3LjM2LTUuNzNMMjEgOWwtOS03LTkgNyAxLjYzIDEuMjdMMTIgMTZ6bTAtMTEuNDdMMTcuNzQgOSAxMiAxMy40NyA2LjI2IDkgMTIgNC41M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpcXVvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTRjMCAxLjMuODQgMi40IDIgMi44MlYyMEgzdjJoNnYtMkg3di0zLjE4QzguMTYgMTYuNCA5IDE1LjMgOSAxNFY2SDN2OHptMi02aDJ2M0g1Vjh6bTAgNWgydjFjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTF2LTF6TTIwLjY0IDguNTRsLS45Ni0uMzJhMSAxIDAgMCAxLS42OC0uOTVWM2MwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXY0LjI4YTEgMSAwIDAgMS0uNjguOTVsLS45Ni4zMmMtLjgxLjI4LTEuMzYgMS4wNC0xLjM2IDEuOVYyMGMwIDEuMS45IDIgMiAyaDdjMS4xIDAgMi0uOSAyLTJ2LTkuNTZjMC0uODYtLjU1LTEuNjItMS4zNi0xLjl6TTE2IDRoMXYxaC0xVjR6bTQgMTZoLTd2LTJoN3Yyem0wLTRoLTd2LTJoN3Yyem0wLTRoLTd2LTEuNTZsLjk1LS4zMkMxNS4xOCA5LjcyIDE2IDguNTcgMTYgNy4yOFY3aDF2LjI4YTMgMyAwIDAgMCAyLjA1IDIuODVsLjk1LjMxVjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxBY3Rpdml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTBWNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjRjMS4xIDAgMS45OS45IDEuOTkgMnMtLjg5IDItMiAydjRjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMnYtNGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJ6bS0yLTEuNDZjLTEuMTkuNjktMiAxLjk5LTIgMy40NnMuODEgMi43NyAyIDMuNDZWMThINHYtMi41NGMxLjE5LS42OSAyLTEuOTkgMi0zLjQ2IDAtMS40OC0uOC0yLjc3LTEuOTktMy40Nkw0IDZoMTZ2Mi41NHpNOS4wNyAxNiAxMiAxNC4xMiAxNC45MyAxNmwtLjg5LTMuMzYgMi42OS0yLjItMy40Ny0uMjFMMTIgN2wtMS4yNyAzLjIyLTMuNDcuMjEgMi42OSAyLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbEFpcnBvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE2di0ybC04LjUtNVYzLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNVY5TDIgMTR2Mmw4LjUtMi41VjE5TDggMjAuNVYyMmw0LTEgNCAxdi0xLjVMMTMuNSAxOXYtNS41TDIyIDE2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxBdG0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE3aDJ2LTFoMWMuNTUgMCAxLS40NSAxLTF2LTNjMC0uNTUtLjQ1LTEtMS0xaC0zdi0xaDRWOGgtMlY3aC0ydjFoLTFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDN2MUg5djJoMnYxem05LTEzSDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0VjZoMTZ2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbEJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNzcgOSAxMiAxMi4xMSA5LjIzIDloNS41NE0yMSAzSDN2Mmw4IDl2NUg2djJoMTJ2LTJoLTV2LTVsOC05VjN6TTcuNDMgNyA1LjY2IDVoMTIuNjlsLTEuNzggMkg3LjQzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxDYWZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA1djhjMCAxLjEtLjkgMi0yIDJIOGMtMS4xIDAtMi0uOS0yLTJWNWgxMG00LTJINHYxMGMwIDIuMjEgMS43OSA0IDQgNGg2YzIuMjEgMCA0LTEuNzkgNC00di0zaDJjMS4xMSAwIDItLjg5IDItMlY1YzAtMS4xMS0uODktMi0yLTJ6bS0yIDVWNWgydjNoLTJ6bTIgMTFIMnYyaDE4di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxDYXJXYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1Yy44MyAwIDEuNS0uNjcgMS41LTEuNSAwLTEtMS41LTIuNy0xLjUtMi43cy0xLjUgMS43LTEuNSAyLjdjMCAuODMuNjcgMS41IDEuNSAxLjV6bS01IDBjLjgzIDAgMS41LS42NyAxLjUtMS41IDAtMS0xLjUtMi43LTEuNS0yLjdzLTEuNSAxLjctMS41IDIuN2MwIC44My42NyAxLjUgMS41IDEuNXpNNyA1Yy44MyAwIDEuNS0uNjcgMS41LTEuNUM4LjUgMi41IDcgLjggNyAuOFM1LjUgMi41IDUuNSAzLjVDNS41IDQuMzMgNi4xNyA1IDcgNXptMTEuOTIgMy4wMUMxOC43MiA3LjQyIDE4LjE2IDcgMTcuNSA3aC0xMWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMyAxNHY4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThsLTIuMDgtNS45OXpNNi44NSA5aDEwLjI5bDEuMDQgM0g1LjgxbDEuMDQtM3pNMTkgMTlINXYtNC42NmwuMTItLjM0aDEzLjc3bC4xMS4zNFYxOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3LjVcIixcImN5XCI6XCIxNi41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNi41XCIsXCJjeVwiOlwiMTYuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbENvbnZlbmllbmNlU3RvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDdWNEg1djNIMnYxM2g4di00aDR2NGg4VjdoLTN6bTEgMTFoLTR2LTRIOHY0SDRWOWgzVjZoMTB2M2gzdjl6TTggOGgydjFIOHYzaDN2LTFIOXYtMWgyVjdIOHptNyAxaC0xVjdoLTF2M2gydjJoMVY3aC0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxEaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTguMSAxMy4zNCAyLjgzLTIuODNMMy45MSAzLjVhNC4wMDggNC4wMDggMCAwIDAgMCA1LjY2bDQuMTkgNC4xOHptNi43OC0xLjgxYzEuNTMuNzEgMy42OC4yMSA1LjI3LTEuMzggMS45MS0xLjkxIDIuMjgtNC42NS44MS02LjEyLTEuNDYtMS40Ni00LjItMS4xLTYuMTIuODEtMS41OSAxLjU5LTIuMDkgMy43NC0xLjM4IDUuMjdMMy43IDE5Ljg3bDEuNDEgMS40MUwxMiAxNC40MWw2Ljg4IDYuODggMS40MS0xLjQxTDEzLjQxIDEzbDEuNDctMS40N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsRHJpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMgMiAyLjAxIDE4LjIzQzUuMTMgMjEuMjMgNS45NyAyMiA3IDIyaDEwYzEuMDMgMCAxLjg3LS43NyAxLjk5LTEuNzdMMjEgMkgzem0xNCAxOC0xMCAuMDFMNS44OSAxMEgxOC4xTDE3IDIwem0xLjMzLTEySDUuNjdsLS40NC00aDEzLjUzbC0uNDMgNHpNMTIgMTljMS42NiAwIDMtMS4zNCAzLTMgMC0yLTMtNS40LTMtNS40UzkgMTQgOSAxNmMwIDEuNjYgMS4zNCAzIDMgM3ptMC01LjA5Yy41OS45MSAxIDEuNzMgMSAyLjA5IDAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xYzAtLjM3LjQxLTEuMTkgMS0yLjA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxGaXJlRGVwYXJ0bWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2IDYtLjQ0LjU1Yy0uNDIuNTItLjk4Ljc1LTEuNTQuNzVDMTMgNy4zIDEyIDYuNTIgMTIgNS4zVjJTNCA2IDQgMTNjMCA0LjQyIDMuNTggOCA4IDhzOC0zLjU4IDgtOGMwLTIuOTYtMS42MS01LjYyLTQtN3ptLTQgMTNjLTEuMSAwLTItLjg3LTItMS45NCAwLS41MS4yLS45OS41OC0xLjM2TDEyIDE0LjNsMS40MyAxLjRjLjM3LjM3LjU3Ljg1LjU3IDEuMzYgMCAxLjA3LS45IDEuOTQtMiAxLjk0em0zLjk2LTEuNWMuMDQtLjM2LjIyLTEuODktMS4xMy0zLjIyTDEyIDExLjVsLTIuODMgMi43OEM3LjgxIDE1LjYyIDggMTcuMTYgOC4wNCAxNy41QTUuOTgyIDUuOTgyIDAgMCAxIDYgMTNjMC0zLjE2IDIuMTMtNS42NSA0LjAzLTcuMjVhNC4wMjQgNC4wMjQgMCAwIDAgMy45OSAzLjU1Yy43OCAwIDEuNTQtLjIzIDIuMTgtLjY2QTYuMTc1IDYuMTc1IDAgMCAxIDE4IDEzYzAgMS43OS0uNzkgMy40LTIuMDQgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxGbG9yaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjY2IDEzLjA3Yy4xNSAwIC4yOS0uMDEuNDMtLjAzQzkuNTYgMTQuMTkgMTAuNjkgMTUgMTIgMTVzMi40NC0uODEgMi45MS0xLjk2YTMuMTQ1IDMuMTQ1IDAgMCAwIDMuNTctMy4xMWMwLS43MS0uMjUtMS4zOS0uNjctMS45My40My0uNTQuNjctMS4yMi42Ny0xLjkzYTMuMTQ1IDMuMTQ1IDAgMCAwLTMuNTctMy4xMUMxNC40NCAxLjgxIDEzLjMxIDEgMTIgMXMtMi40NC44MS0yLjkxIDEuOTZhMy4xNDUgMy4xNDUgMCAwIDAtMy41NyAzLjExYzAgLjcxLjI1IDEuMzkuNjcgMS45My0uNDMuNTQtLjY4IDEuMjItLjY4IDEuOTMgMCAxLjczIDEuNDEgMy4xNCAzLjE1IDMuMTR6TTEyIDEzYy0uNjIgMC0xLjEyLS40OS0xLjE0LTEuMWwuMTItMS4wOWMuMzIuMTIuNjYuMTkgMS4wMi4xOXMuNzEtLjA3IDEuMDMtLjE5bC4xMSAxLjA5Yy0uMDIuNjEtLjUyIDEuMS0xLjE0IDEuMXptMy4zNC0xLjkzYy0uMjQgMC0uNDYtLjA3LS42NC0uMmwtLjgxLS41N2MuNTUtLjQ1Ljk0LTEuMDkgMS4wNi0xLjgzbC44OC40MmMuNC4xOS42Ni41OS42NiAxLjAzIDAgLjY0LS41MiAxLjE1LTEuMTUgMS4xNXptLS42NS01Ljk0Yy4yLS4xMy40Mi0uMi42NS0uMi42MyAwIDEuMTQuNTEgMS4xNCAxLjE0IDAgLjQ0LS4yNS44My0uNjYgMS4wM2wtLjg4LjQyYy0uMTItLjc0LS41MS0xLjM4LTEuMDctMS44M2wuODItLjU2ek0xMiAzYy42MiAwIDEuMTIuNDkgMS4xNCAxLjFsLS4xMSAxLjA5QzEyLjcxIDUuMDcgMTIuMzYgNSAxMiA1cy0uNy4wNy0xLjAyLjE5bC0uMTItMS4wOWMuMDItLjYxLjUyLTEuMSAxLjE0LTEuMXpNOC42NiA0LjkzYy4yNCAwIC40Ni4wNy42NC4ybC44MS41NmMtLjU1LjQ1LS45NCAxLjA5LTEuMDYgMS44M2wtLjg4LS40MmMtLjQtLjItLjY2LS41OS0uNjYtMS4wMyAwLS42My41Mi0xLjE0IDEuMTUtMS4xNHpNOC4xNyA4LjlsLjg4LS40MmMuMTIuNzQuNTEgMS4zOCAxLjA3IDEuODNsLS44MS41NWMtLjIuMTMtLjQyLjItLjY1LjItLjYzIDAtMS4xNC0uNTEtMS4xNC0xLjE0LS4wMS0uNDMuMjUtLjgyLjY1LTEuMDJ6TTEyIDIyYTkgOSAwIDAgMCA5LTkgOSA5IDAgMCAwLTkgOXptMi40NC0yLjQ0Yy43MS0xLjkgMi4yMi0zLjQyIDQuMTItNC4xMmE3LjA0IDcuMDQgMCAwIDEtNC4xMiA0LjEyek0zIDEzYTkgOSAwIDAgMCA5IDkgOSA5IDAgMCAwLTktOXptMi40NCAyLjQ0YzEuOS43MSAzLjQyIDIuMjIgNC4xMiA0LjEyYTcuMDQgNy4wNCAwIDAgMS00LjEyLTQuMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbEdhc1N0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5Ljc3IDcuMjMuMDEtLjAxLTMuNzItMy43MkwxNSA0LjU2bDIuMTEgMi4xMWMtLjk0LjM2LTEuNjEgMS4yNi0xLjYxIDIuMzNhMi41IDIuNSAwIDAgMCAyLjUgMi41Yy4zNiAwIC42OS0uMDggMS0uMjF2Ny4yMWMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMVYxNGMwLTEuMS0uOS0yLTItMmgtMVY1YzAtMS4xLS45LTItMi0ySDZjLTEuMSAwLTIgLjktMiAydjE2aDEwdi03LjVoMS41djVhMi41IDIuNSAwIDAgMCA1IDBWOWMwLS42OS0uMjgtMS4zMi0uNzMtMS43N3pNMTIgMTMuNVYxOUg2di03aDZ2MS41em0wLTMuNUg2VjVoNnY1em02IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsR3JvY2VyeVN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yem0xMCAwYy0xLjEgMC0xLjk5LjktMS45OSAycy44OSAyIDEuOTkgMiAyLS45IDItMi0uOS0yLTItMnptLTEuNDUtNWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNsMy41OC02LjQ5QS45OTYuOTk2IDAgMCAwIDIwLjAxIDRINS4yMWwtLjk0LTJIMXYyaDJsMy42IDcuNTktMS4zNSAyLjQ0QzQuNTIgMTUuMzcgNS40OCAxNyA3IDE3aDEydi0ySDdsMS4xLTJoNy40NXpNNi4xNiA2aDEyLjE1bC0yLjc2IDVIOC41M0w2LjE2IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbEhvc3BpdGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMyAxOWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0em0tOC41LTJoM3YtMy41SDE3di0zaC0zLjVWN2gtM3YzLjVIN3YzaDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsSG90ZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTRjMS42NiAwIDMtMS4zNCAzLTNTOC42NiA4IDcgOHMtMyAxLjM0LTMgMyAxLjM0IDMgMyAzem0wLTRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMTItM2gtOHY4SDNWNUgxdjE1aDJ2LTNoMTh2M2gydi05YzAtMi4yMS0xLjc5LTQtNC00em0yIDhoLThWOWg2YzEuMSAwIDIgLjkgMiAydjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbExhdW5kcnlTZXJ2aWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyLjAxIDYgMmMtMS4xMSAwLTIgLjg5LTIgMnYxNmMwIDEuMTEuODkgMiAyIDJoMTJjMS4xMSAwIDItLjg5IDItMlY0YzAtMS4xMS0uODktMS45OS0yLTEuOTl6TTE4IDIwSDZMNS45OSA0SDE4djE2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjhcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTFcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE5YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01LTUgMi4yNC01IDUgMi4yNCA1IDUgNXptMi4zNi03LjM2YzEuMyAxLjMgMS4zIDMuNDIgMCA0LjcyLTEuMyAxLjMtMy40MiAxLjMtNC43MiAwbDQuNzItNC43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsTGlicmFyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOWMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTAgOC41NUM5LjY0IDkuMzUgNi40OCA4IDMgOHYxMWMzLjQ4IDAgNi42NCAxLjM1IDkgMy41NSAyLjM2LTIuMTkgNS41Mi0zLjU1IDktMy41NVY4Yy0zLjQ4IDAtNi42NCAxLjM1LTkgMy41NXptNyA1LjU4Yy0yLjUzLjM0LTQuOTMgMS4zLTcgMi44MmExNS4yIDE1LjIgMCAwIDAtNy0yLjgzdi02Ljk1YzIuMS4zOCA0LjA1IDEuMzUgNS42NCAyLjgzTDEyIDE0LjI4bDEuMzYtMS4yN0ExMS4xOCAxMS4xOCAwIDAgMSAxOSAxMC4xOHY2Ljk1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxNYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA2aC0yYzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZINWMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0tNy0zYzEuNjYgMCAzIDEuMzQgMyAzSDljMC0xLjY2IDEuMzQtMyAzLTN6bTcgMTdINVY4aDE0djEyem0tNy04Yy0xLjY2IDAtMy0xLjM0LTMtM0g3YzAgMi43NiAyLjI0IDUgNSA1czUtMi4yNCA1LTVoLTJjMCAxLjY2LTEuMzQgMy0zIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbE1vdmllcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNXYxNGgtNFY1aDRtNi0yaC0ydjJoLTJWM0g4djJINlYzSDR2MThoMnYtMmgydjJoOHYtMmgydjJoMlYzem0tNCA2VjdoMnYyaC0yek02IDlWN2gydjJINnptMTAgNHYtMmgydjJoLTJ6TTYgMTN2LTJoMnYySDZ6bTEwIDR2LTJoMnYyaC0yek02IDE3di0yaDJ2Mkg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxPZmZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNDEgMTEuNTgtOS05QzEyLjA1IDIuMjIgMTEuNTUgMiAxMSAySDRjLTEuMSAwLTIgLjktMiAydjdjMCAuNTUuMjIgMS4wNS41OSAxLjQybDkgOWMuMzYuMzYuODYuNTggMS40MS41OHMxLjA1LS4yMiAxLjQxLS41OWw3LTdjLjM3LS4zNi41OS0uODYuNTktMS40MXMtLjIzLTEuMDYtLjU5LTEuNDJ6TTEzIDIwLjAxIDQgMTFWNGg3di0uMDFsOSA5LTcgNy4wMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2LjVcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxQYXJraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzSDZ2MThoNHYtNmgzYzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02em0uMiA4SDEwVjdoMy4yYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsUGhhcm1hY3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVoLTIuNjRsMS4xNC0zLjE0TDE3LjE1IDFsLTEuNDYgNEgzdjJsMiA2LTIgNnYyaDE4di0ybC0yLTYgMi02VjV6bS0zLjkgOC42M0wxOC44OSAxOUg1LjExbDEuNzktNS4zNy4yMS0uNjMtLjIxLS42M0w1LjExIDdoMTMuNzhsLTEuNzkgNS4zNy0uMjEuNjMuMjEuNjN6TTEzIDloLTJ2M0g4djJoM3YzaDJ2LTNoM3YtMmgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNTQgNWMuMDYuODkuMjEgMS43Ni40NSAyLjU5bC0xLjIgMS4yYy0uNDEtMS4yLS42Ny0yLjQ3LS43Ni0zLjc5aDEuNTFtOS44NiAxMi4wMmMuODUuMjQgMS43Mi4zOSAyLjYuNDV2MS40OWMtMS4zMi0uMDktMi41OS0uMzUtMy44LS43NWwxLjItMS4xOU03LjUgM0g0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjQ5YzAtLjU1LS40NS0xLTEtMS0xLjI0IDAtMi40NS0uMi0zLjU3LS41N2EuODQuODQgMCAwIDAtLjMxLS4wNWMtLjI2IDAtLjUxLjEtLjcxLjI5bC0yLjIgMi4yYTE1LjE0OSAxNS4xNDkgMCAwIDEtNi41OS02LjU5bDIuMi0yLjJjLjI4LS4yOC4zNi0uNjcuMjUtMS4wMkExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbFBpenphIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzguNDMgMiA1LjIzIDMuNTQgMy4wMSA2TDEyIDIybDguOTktMTZDMTguNzggMy41NSAxNS41NyAyIDEyIDJ6bTAgMTUuOTJMNS41MSA2LjM2QzcuMzIgNC44NSA5LjYyIDQgMTIgNHM0LjY4Ljg1IDYuNDkgMi4zNkwxMiAxNy45MnpNOSA1LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41UzguMTcgOC41IDkgOC41czEuNS0uNjcgMS41LTEuNVM5LjgyIDUuNSA5IDUuNXptMS41IDcuNWMwIC44My42NyAxLjUgMS41IDEuNS44MiAwIDEuNS0uNjcgMS41LTEuNXMtLjY4LTEuNS0xLjUtMS41LTEuNS42Ny0xLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMFY2YzAtMS4xLS45LTItMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJ2NGMxLjEgMCAxLjk5LjkgMS45OSAycy0uODkgMi0yIDJ2NGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ydi00Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMnptLTItMS40NmMtMS4xOS42OS0yIDEuOTktMiAzLjQ2cy44MSAyLjc3IDIgMy40NlYxOEg0di0yLjU0YzEuMTktLjY5IDItMS45OSAyLTMuNDYgMC0xLjQ4LS44LTIuNzctMS45OS0zLjQ2TDQgNmgxNnYyLjU0ek05LjA3IDE2IDEyIDE0LjEyIDE0LjkzIDE2bC0uODktMy4zNiAyLjY5LTIuMi0zLjQ3LS4yMUwxMiA3bC0xLjI3IDMuMjItMy40Ny4yMSAyLjY5IDIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsUG9saWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuNSAxMi41OS45IDMuODgtMy40LTIuMDUtMy40IDIuMDUuOS0zLjg3LTMtMi41OSAzLjk2LS4zNEwxMiA2LjAybDEuNTQgMy42NCAzLjk2LjM0LTMgMi41OXpNMTIgMy4xOWw3IDMuMTFWMTFjMCA0LjUyLTIuOTggOC42OS03IDkuOTMtNC4wMi0xLjI0LTctNS40MS03LTkuOTNWNi4zbDctMy4xMU0xMiAxIDMgNXY2YzAgNS41NSAzLjg0IDEwLjc0IDkgMTIgNS4xNi0xLjI2IDktNi40NSA5LTEyVjVsLTktNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsUG9zdE9mZmljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZ6bS0yIDAtOCA1LTgtNWgxNnptMCAxMkg0VjhsOCA1IDgtNXYxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxvY2FsUHJpbnRzaG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA4aC0xVjNINnY1SDVjLTEuNjYgMC0zIDEuMzQtMyAzdjZoNHY0aDEydi00aDR2LTZjMC0xLjY2LTEuMzQtMy0zLTN6TTggNWg4djNIOFY1em04IDE0SDh2LTRoOHY0em0yLTR2LTJINnYySDR2LTRjMC0uNTUuNDUtMSAxLTFoMTRjLjU1IDAgMSAuNDUgMSAxdjRoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCIxMS41XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbFNlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNGgtMy4xN0wxNSAySDlMNy4xNyA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjZoNC4wNWwuNTktLjY1TDkuODggNGg0LjI0bDEuMjQgMS4zNS41OS42NUgyMHYxMnpNMTIgN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNSA1LTIuMjQgNS01LTIuMjQtNS01LTV6bTAgOC4yYy0xLjc3IDAtMy4yLTEuNDMtMy4yLTMuMiAwLTEuNzcgMS40My0zLjIgMy4yLTMuMnMzLjIgMS40MyAzLjIgMy4yYzAgMS43Ny0xLjQzIDMuMi0zLjIgMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTG9jYWxTaGlwcGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOGgtM1Y0SDNjLTEuMSAwLTIgLjktMiAydjExaDJjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g2YzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoMnYtNWwtMy00em0tLjUgMS41IDEuOTYgMi41SDE3VjkuNWgyLjV6TTYgMThjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMi4yMi0zYy0uNTUtLjYxLTEuMzMtMS0yLjIyLTFzLTEuNjcuMzktMi4yMiAxSDNWNmgxMnY5SDguMjJ6TTE4IDE4Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhbFRheGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDYuMDFDMTguNzIgNS40MiAxOC4xNiA1IDE3LjUgNUgxNVYzSDl2Mkg2LjVjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTJ2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuODUgN2gxMC4yOWwxLjA0IDNINS44MWwxLjA0LTN6TTE5IDE3SDV2LTQuNjZsLjEyLS4zNGgxMy43N2wuMTEuMzRWMTd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNy41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTYuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTHVuY2hEaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE5YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJ2LTNIMnYzem0yLTFoMTZ2MUg0di0xek0xOC42NiAxMS41Yy0xLjk1IDAtMi4wOSAxLTMuMzMgMS0xLjE5IDAtMS40Mi0xLTMuMzMtMS0xLjk1IDAtMi4wOSAxLTMuMzMgMS0xLjE5IDAtMS40Mi0xLTMuMzMtMS0xLjk1IDAtMi4wOSAxLTMuMzMgMXYyYzEuOSAwIDIuMTctMSAzLjM1LTEgMS4xOSAwIDEuNDIgMSAzLjMzIDEgMS45NSAwIDIuMDktMSAzLjMzLTEgMS4xOSAwIDEuNDIgMSAzLjMzIDEgMS45NSAwIDIuMDktMSAzLjMzLTEgMS4xOSAwIDEuNC45OCAzLjMyIDFsLS4wMS0xLjk4Yy0xLjYxLS4zMy0xLjYyLTEuMDItMy4zMy0xLjAyek0yMiA5Yy4wMi00LTQuMjgtNi0xMC02QzYuMjkgMyAyIDUgMiA5djFoMjBWOXpNNC4xOCA4QzUuMDEgNS44MSA4LjYxIDUgMTIgNWMzLjMxIDAgNS45My43MyA3LjE5IDEuOTkuMy4zMS41Mi42NC42NSAxLjAxSDQuMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjUgMy0uMTYuMDNMMTUgNS4xIDkgMyAzLjM2IDQuOWMtLjIxLjA3LS4zNi4yNS0uMzYuNDhWMjAuNWMwIC4yOC4yMi41LjUuNWwuMTYtLjAzTDkgMTguOWw2IDIuMSA1LjY0LTEuOWMuMjEtLjA3LjM2LS4yNS4zNi0uNDhWMy41YzAtLjI4LS4yMi0uNS0uNS0uNXpNMTAgNS40N2w0IDEuNHYxMS42NmwtNC0xLjRWNS40N3ptLTUgLjk5IDMtMS4wMXYxMS43bC0zIDEuMTZWNi40NnptMTQgMTEuMDgtMyAxLjAxVjYuODZsMy0xLjE2djExLjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFwc1VnYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjNC40MSAwIDggMy41OSA4IDhzLTMuNTkgOC04IDhjLTEuMTggMC0yLjM0LS4yNi0zLjQzLS43OC0uMjctLjEzLS41Ni0uMTktLjg2LS4xOS0uMTkgMC0uMzguMDMtLjU2LjA4bC0zLjIuOTQuOTQtMy4yYy4xNC0uNDcuMS0uOTgtLjExLTEuNDJBNy45MjUgNy45MjUgMCAwIDEgNCAxMmMwLTQuNDEgMy41OS04IDgtOG0wLTJDNi40OCAyIDIgNi40OCAyIDEyYzAgMS41NC4zNiAyLjk4Ljk3IDQuMjlMMSAyM2w2LjcxLTEuOTdjMS4zMS42MSAyLjc1Ljk3IDQuMjkuOTcgNS41MiAwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTMgOGgtMnYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVkaWNhbEluZm9ybWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgN2gtNVY0YzAtMS4xLS45LTItMi0yaC0yYy0xLjEgMC0yIC45LTIgMnYzSDRjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnptLTktM2gydjVoLTJWNHptOSAxNkg0VjloNWMwIDEuMS45IDIgMiAyaDJjMS4xIDAgMi0uOSAyLTJoNXYxMXptLTktNEg5djJIN3YtMkg1di0yaDJ2LTJoMnYyaDJ2MnptMi0xLjVWMTNoNnYxLjVoLTZ6bTAgM1YxNmg0djEuNWgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1lZGljYWxTZXJ2aWNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLTRWNGMwLTEuMS0uOS0yLTItMmgtNGMtMS4xIDAtMiAuOS0yIDJ2Mkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6TTEwIDRoNHYyaC00VjR6bTEwIDE2SDRWOGgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTBoLTJ2M0g4djJoM3YzaDJ2LTNoM3YtMmgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1lbnVCb29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNWMtMS4xMS0uMzUtMi4zMy0uNS0zLjUtLjUtMS45NSAwLTQuMDUuNC01LjUgMS41LTEuNDUtMS4xLTMuNTUtMS41LTUuNS0xLjVTMi40NSA0LjkgMSA2djE0LjY1YzAgLjI1LjI1LjUuNS41LjEgMCAuMTUtLjA1LjI1LS4wNUMzLjEgMjAuNDUgNS4wNSAyMCA2LjUgMjBjMS45NSAwIDQuMDUuNCA1LjUgMS41IDEuMzUtLjg1IDMuOC0xLjUgNS41LTEuNSAxLjY1IDAgMy4zNS4zIDQuNzUgMS4wNS4xLjA1LjE1LjA1LjI1LjA1LjI1IDAgLjUtLjI1LjUtLjVWNmMtLjYtLjQ1LTEuMjUtLjc1LTItMXptMCAxMy41Yy0xLjEtLjM1LTIuMy0uNS0zLjUtLjUtMS43IDAtNC4xNS42NS01LjUgMS41VjhjMS4zNS0uODUgMy44LTEuNSA1LjUtMS41IDEuMiAwIDIuNC4xNSAzLjUuNXYxMS41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDEwLjVjLjg4IDAgMS43My4wOSAyLjUuMjZWOS4yNGMtLjc5LS4xNS0xLjY0LS4yNC0yLjUtLjI0LTEuNyAwLTMuMjQuMjktNC41LjgzdjEuNjZjMS4xMy0uNjQgMi43LS45OSA0LjUtLjk5ek0xMyAxMi40OXYxLjY2YzEuMTMtLjY0IDIuNy0uOTkgNC41LS45OS44OCAwIDEuNzMuMDkgMi41LjI2VjExLjljLS43OS0uMTUtMS42NC0uMjQtMi41LS4yNC0xLjcgMC0zLjI0LjMtNC41Ljgzek0xNy41IDE0LjMzYy0xLjcgMC0zLjI0LjI5LTQuNS44M3YxLjY2YzEuMTMtLjY0IDIuNy0uOTkgNC41LS45OS44OCAwIDEuNzMuMDkgMi41LjI2di0xLjUyYy0uNzktLjE2LTEuNjQtLjI0LTIuNS0uMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNZXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNDEgMjEgNSAxOS41OWw0LjgzLTQuODNjLjc1LS43NSAxLjE3LTEuNzcgMS4xNy0yLjgzdi01LjFMOS40MSA4LjQxIDggN2w0LTQgNCA0LTEuNDEgMS40MUwxMyA2LjgzdjUuMWMwIDEuMDYuNDIgMi4wOCAxLjE3IDIuODNMMTkgMTkuNTkgMTcuNTkgMjEgMTIgMTUuNDEgNi40MSAyMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1pbm9yQ3Jhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MiA5LjAxQzE4LjcyIDguNDIgMTguMTYgOCAxNy41IDhoLTExYy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwzIDE1djhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGwtMi4wOC01Ljk5ek02Ljg1IDEwaDEwLjI5bDEuMDQgM0g1LjgxbDEuMDQtM3pNMTkgMjBINXYtNWgxNHY1ek02IDE3LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVTOC4zMyAxOSA3LjUgMTkgNiAxOC4zMyA2IDE3LjV6bTkgMGMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjUtMS41LS42Ny0xLjUtMS41ek05LjQxIDUgOCA2LjQxbC0zLTNMNi40MSAybDMgM3pNMTYgNi40MSAxNC41OSA1bDMtM0wxOSAzLjQxbC0zIDN6TTEzIDVoLTJWMGgydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNaXNjZWxsYW5lb3VzU2VydmljZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC4xNyAxMy43MSAxLjQtMi40MmMuMDktLjE1LjA1LS4zNC0uMDgtLjQ1bC0xLjQ4LTEuMTZjLjAzLS4yMi4wNS0uNDUuMDUtLjY4cy0uMDItLjQ2LS4wNS0uNjlsMS40OC0xLjE2Yy4xMy0uMTEuMTctLjMuMDgtLjQ1bC0xLjQtMi40MmMtLjA5LS4xNS0uMjctLjIxLS40My0uMTVsLTEuNzQuN2MtLjM2LS4yOC0uNzUtLjUxLTEuMTgtLjY5bC0uMjYtMS44NWEuMzY0LjM2NCAwIDAgMC0uMzUtLjI5aC0yLjhjLS4xNyAwLS4zMi4xMy0uMzUuM0w2LjggNC4xNWMtLjQyLjE4LS44Mi40MS0xLjE4LjY5bC0xLjc0LS43Yy0uMTYtLjA2LS4zNCAwLS40My4xNWwtMS40IDIuNDJjLS4wOS4xNS0uMDUuMzQuMDguNDVsMS40OCAxLjE2Yy0uMDMuMjItLjA1LjQ1LS4wNS42OHMuMDIuNDYuMDUuNjlsLTEuNDggMS4xNmMtLjEzLjExLS4xNy4zLS4wOC40NWwxLjQgMi40MmMuMDkuMTUuMjcuMjEuNDMuMTVsMS43NC0uN2MuMzYuMjguNzUuNTEgMS4xOC42OWwuMjYgMS44NWMuMDMuMTYuMTguMjkuMzUuMjloMi44Yy4xNyAwIC4zMi0uMTMuMzUtLjNsLjI2LTEuODVjLjQyLS4xOC44Mi0uNDEgMS4xOC0uNjlsMS43NC43Yy4xNi4wNi4zNCAwIC40My0uMTV6TTguODEgMTFjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyek0yMS45MiAxOC42N2wtLjk2LS43NGMuMDItLjE0LjA0LS4yOS4wNC0uNDQgMC0uMTUtLjAxLS4zLS4wNC0uNDRsLjk1LS43NGMuMDgtLjA3LjExLS4xOS4wNS0uMjlsLS45LTEuNTVjLS4wNS0uMS0uMTctLjEzLS4yOC0uMWwtMS4xMS40NWMtLjIzLS4xOC0uNDgtLjMzLS43Ni0uNDRsLS4xNy0xLjE4YS4yMTYuMjE2IDAgMCAwLS4yMS0uMmgtMS43OWMtLjExIDAtLjIxLjA4LS4yMi4xOWwtLjE3IDEuMThjLS4yNy4xMi0uNTMuMjYtLjc2LjQ0bC0xLjExLS40NWEuMjMuMjMgMCAwIDAtLjI4LjFsLS45IDEuNTVjLS4wNS4xLS4wNC4yMi4wNS4yOWwuOTUuNzRhMy4xNDUgMy4xNDUgMCAwIDAgMCAuODhsLS45NS43NGMtLjA4LjA3LS4xMS4xOS0uMDUuMjlsLjkgMS41NWMuMDUuMS4xNy4xMy4yOC4xbDEuMTEtLjQ1Yy4yMy4xOC40OC4zMy43Ni40NGwuMTcgMS4xOGMuMDIuMTEuMTEuMTkuMjIuMTloMS43OWMuMTEgMCAuMjEtLjA4LjIyLS4xOWwuMTctMS4xOGMuMjctLjEyLjUzLS4yNi43NS0uNDRsMS4xMi40NWMuMS4wNC4yMiAwIC4yOC0uMWwuOS0xLjU1Yy4wNi0uMDkuMDMtLjIxLS4wNS0uMjh6bS00LjI5LjE2YTEuMzUgMS4zNSAwIDEgMSAuMDAxLTIuNzAxIDEuMzUgMS4zNSAwIDAgMS0uMDAxIDIuNzAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9kZU9mVHJhdmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuMzEgMTguOWMtLjk2IDEtMi4wNiAyLjAzLTMuMzEgMy4xLTUuMzMtNC41NS04LTguNDgtOC0xMS44QzQgNS4yMiA3LjggMiAxMiAyYzQuMTkgMCA3Ljk5IDMuMjEgOCA4LjE3bDIuMDktMi4wOUwyMy41IDkuNSAxOSAxNGwtNC41LTQuNSAxLjQxLTEuNDFMMTggMTAuMTdDMTcuOTkgNi41NSAxNS4zNCA0IDEyIDRjLTMuMzUgMC02IDIuNTctNiA2LjIgMCAyLjM0IDEuOTUgNS40NCA2IDkuMTQuNjQtLjU5IDEuMjMtMS4xNiAxLjc3LTEuNzFhMi41IDIuNSAwIDAgMS0uMjctMS4xMiAyLjUgMi41IDAgMCAxIDUgMCAyLjQ5MiAyLjQ5MiAwIDAgMS0zLjE5IDIuMzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb25leSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTZoM2MuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTFoLTNjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxem0xLTZoMXY0aC0xdi00em0tNyA2aDNjLjU1IDAgMS0uNDUgMS0xVjljMC0uNTUtLjQ1LTEtMS0xSDljLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxem0xLTZoMXY0aC0xdi00ek01IDhoMnY4SDV6TTIgNHYxNmgyMFY0SDJ6bTE4IDE0SDRWNmgxNnYxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vcGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN2MwLTEuMS0uOS0yLTItMmgtM3YyaDN2Mi42NUwxMy41MiAxNEgxMFY5SDZjLTIuMjEgMC00IDEuNzktNCA0djNoMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDQuNDhMMTkgMTAuMzVWN3pNNCAxNHYtMWMwLTEuMS45LTIgMi0yaDJ2M0g0em0zIDNjLS41NSAwLTEtLjQ1LTEtMWgyYzAgLjU1LS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA2aDV2Mkg1ek0xOSAxM2MtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9zcXVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgN2MwLTEuMS0yLTMtMi0zcy0yIDEuOS0yIDNjMCAuNzQuNCAxLjM4IDEgMS43MlYxM2gtMnYtMmMwLS45NS0uNjYtMS43NC0xLjU1LTEuOTQuMzQtLjU4LjU1LTEuMjUuNTUtMS45NyAwLTEuMzEtLjY1LTIuNTMtMS43NC0zLjI1TDEyIDEgNy43NCAzLjg0QTMuODg3IDMuODg3IDAgMCAwIDYgNy4wOWMwIC43Mi4yMSAxLjM5LjU1IDEuOTZDNS42NiA5LjI2IDUgMTAuMDUgNSAxMXYySDNWOC43MmMuNi0uMzQgMS0uOTggMS0xLjcyIDAtMS4xLTItMy0yLTNTMCA1LjkgMCA3YzAgLjc0LjQgMS4zOCAxIDEuNzJWMjFoMTB2LTRjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxdjRoMTBWOC43MmMuNi0uMzQgMS0uOTggMS0xLjcyek04Ljg1IDUuNSAxMiAzLjRsMy4xNSAyLjFjLjUzLjM2Ljg1Ljk1Ljg1IDEuNTlDMTYgOC4xNCAxNS4xNCA5IDE0LjA5IDlIOS45MUM4Ljg2IDkgOCA4LjE0IDggNy4wOWMwLS42NC4zMi0xLjIzLjg1LTEuNTl6TTIxIDE5aC02di0yYzAtMS42NS0xLjM1LTMtMy0zcy0zIDEuMzUtMyAzdjJIM3YtNGg0di00aDEwdjRoNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW92aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOS40MlYxMmgyVjZoLTZ2MmgyLjU4bC00LjQ2IDQuNDZhLjk5Ni45OTYgMCAwIDEtMS40MSAwbC0xLjE3LTEuMTdhMyAzIDAgMCAwLTQuMjQgMEwyIDE2LjU5IDMuNDEgMThsNS4yOS01LjI5YS45OTYuOTk2IDAgMCAxIDEuNDEgMGwxLjE3IDEuMTdhMyAzIDAgMCAwIDQuMjQgMEwyMCA5LjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTXVsdGlwbGVTdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcgNCA0IDQtNCA0VjloLTRWN2g0VjR6bS03IDNjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpNNiA3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTEgMTBoNHYtMkg3di0zbC00IDQgNCA0di0zem03IDBjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptNCAwYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNdXNldW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMVY5TDEyIDIgMiA5djJoMnY5SDJ2MmgyMHYtMmgtMnYtOWgyem0tNCA5SDZWOWgxMnYxMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTAgMTQgMiAzIDItM3Y0aDJ2LTdoLTJsLTIgMy0yLTNIOHY3aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNeUxvY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptOC45NCAzQTguOTk0IDguOTk0IDAgMCAwIDEzIDMuMDZWMWgtMnYyLjA2QTguOTk0IDguOTk0IDAgMCAwIDMuMDYgMTFIMXYyaDIuMDZBOC45OTQgOC45OTQgMCAwIDAgMTEgMjAuOTRWMjNoMnYtMi4wNkE4Ljk5NCA4Ljk5NCAwIDAgMCAyMC45NCAxM0gyM3YtMmgtMi4wNnpNMTIgMTljLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTmF2aWdhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgNy4yNyA0LjI4IDEwLjQzLTMuNDctMS41My0uODEtLjM2LS44MS4zNi0zLjQ3IDEuNTNMMTIgNy4yN00xMiAyIDQuNSAyMC4yOWwuNzEuNzFMMTIgMThsNi43OSAzIC43MS0uNzFMMTIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5lYXJNZURpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNi4zNCAyMSAzbC0zLjM0IDktMS41Ni0xLjU2IDEuNS00LjA1LTQuMDUgMS41TDEyIDYuMzR6bTkuMTkgMTQuODUtNS4wNy01LjA3TDE0LjMxIDIxSDEyLjlsLTIuODMtNy4wN0wzIDExLjFWOS42OWw0Ljg4LTEuODEtNS4wNy01LjA3TDQuMjIgMS40IDIyLjYgMTkuNzhsLTEuNDEgMS40MXptLTYuNjItNi42Mkw5LjQzIDkuNDNsLTIuNzEgMS4wMSA0Ljg5IDEuOTUgMS45NSA0Ljg5IDEuMDEtMi43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5lYXJNZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMjcgNi43My00LjI0IDEwLjEzLTEuMzItMy40Mi0uMzItLjgzLS44Mi0uMzItMy40My0xLjMzIDEwLjEzLTQuMjNNMjEgMyAzIDEwLjUzdi45OGw2Ljg0IDIuNjVMMTIuNDggMjFoLjk4TDIxIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOaWdodGxpZmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDVoMTRsLTYgOXY0aDJ2Mkg1di0yaDJ2LTRMMSA1em05LjEgNCAxLjQtMkg0LjQ5bDEuNCAyaDQuMjF6TTE3IDVoNXYzaC0zdjljMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM2EzIDMgMCAwIDEgMSAuMTdWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vQ3Jhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MiA5LjAxQzE4LjcyIDguNDIgMTguMTYgOCAxNy41IDhoLTExYy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwzIDE1djhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGwtMi4wOC01Ljk5ek02Ljg1IDEwaDEwLjI5bDEuMDQgM0g1LjgxbDEuMDQtM3pNMTkgMjBINXYtNWgxNHY1ek02IDE3LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVTOC4zMyAxOSA3LjUgMTkgNiAxOC4zMyA2IDE3LjV6bTkgMGMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjUtMS41LS42Ny0xLjUtMS41ek0xMiA2LjM2IDkuMTcgMy41NGwxLjQxLTEuNDFMMTIgMy41NCAxNS41NCAwbDEuNDEgMS40MUwxMiA2LjM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9NZWFscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE0VjZjMC0xLjc2IDIuMjQtNCA1LTR2MTYuMTdsLTItMlYxNGgtM3ptNC40OSA5LjMxTDEwLjAyIDEyLjg1Yy0uMzMuMDktLjY2LjE1LTEuMDIuMTV2OUg3di05Yy0yLjIxIDAtNC0xLjc5LTQtNFY1LjgzTC42OSAzLjUxIDIuMSAyLjFsMTkuOCAxOS44LTEuNDEgMS40MXpNNi4xNyA5IDUgNy44M1Y5aDEuMTd6TTkgMkg3djIuMTdsMiAyVjJ6bTQgN1YyaC0ydjYuMTdsMS44NSAxLjg1Yy4wOS0uMzMuMTUtLjY2LjE1LTEuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb1RyYW5zZmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDEzYy44MyAwIDEuNS42NyAxLjUgMS41UzkuMzMgMTYgOC41IDE2IDcgMTUuMzMgNyAxNC41IDcuNjcgMTMgOC41IDEzem0xMS4yOCA5LjYxLTEuNjQtMS42NGMtLjA1LjAxLS4wOS4wMy0uMTQuMDNoLTFjLS41NSAwLTEtLjQ1LTEtMXYtMUg4djFjMCAuNTUtLjQ1IDEtMSAxSDZjLS41NSAwLTEtLjQ1LTEtMXYtMS43OGMtLjYxLS41NS0xLTEuMzQtMS0yLjIyVjYuODNMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNCAxLjQyek02IDguODNWMTBoMS4xN0w2IDguODN6TTE0LjE3IDE3bC01LTVINnY0YzAgLjM3LjIxLjYyLjM0LjczbC4yOS4yN2g3LjU0ek0xMiA0YzMuNjkgMCA1LjExLjQ2IDUuNjYuOTlINy44MmwyIDJIMThWMTBoLTUuMTdsMiAySDE4djMuMTdsMS44MSAxLjgxYy4xMS0uMzEuMTktLjYzLjE5LS45OFY2YzAtMy41LTMuNTgtNC04LTQtMi41MiAwLTQuNzYuMTYtNi4yMi45NWwxLjUzIDEuNTNDOC4xNyA0LjIgOS42IDQgMTIgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdExpc3RlZExvY2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4wMSAxNmEuOTkuOTkgMCAwIDEtLjcxLS4yOS45NS45NSAwIDAgMS0uMjktLjcxYy0uMDEtLjU1LjQzLS45OS45OC0xaC4wMmMuMjggMCAuNTEuMS43MS4yOS4xOC4xOS4yOC40My4yOC43cy0uMS41MS0uMjkuNzEtLjQzLjMtLjcuM3ptLS44OC0zLjY2YzAtLjQ1LjEtLjg0LjI5LTEuMTYuMTktLjMzLjUzLS43IDEtMS4xMi4yOC0uMjUuNDgtLjQ3LjYxLS42NnMuMTktLjQuMTktLjY0YzAtLjI5LS4xMS0uNTMtLjMyLS43NC0uMjEtLjItLjUtLjMtLjg1LS4zLS4zNyAwLS43NC4xLS45Ni4zLS4yMS4yLS40LjQ1LS40Ljk4SDljMC0xLjAxLjQ2LTEuNzMuOTctMi4yMUMxMC41MyA2LjI4IDExLjI1IDYgMTIgNmMuNTkgMCAxLjExLjEyIDEuNTcuMzVzLjc5LjU1IDEuMDUuOTYuMzguODYuMzggMS4zNS0uMS45LS4zMSAxLjI1LS40OC43MS0uODkgMS4wOWMtLjMyLjMtLjUzLjU2LS42NS43N3MtLjE4LjQ5LS4xOC44MVYxM2gtMS44NXYtLjY2aC4wMXpNMTggMTAuMkMxOCA2LjU3IDE1LjM1IDQgMTIgNHMtNiAyLjU3LTYgNi4yYzAgMi4zNCAxLjk1IDUuNDQgNiA5LjE0IDQuMDUtMy43IDYtNi44IDYtOS4xNHpNMTIgMmM0LjIgMCA4IDMuMjIgOCA4LjIgMCAzLjMyLTIuNjcgNy4yNS04IDExLjgtNS4zMy00LjU1LTgtOC40OC04LTExLjhDNCA1LjIyIDcuOCAyIDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTJoMkwxMiAyIDUuMDUgMTJIN2wtMy45IDZoNi45MnY0aDMuOTV2LTRIMjFsLTQtNnpNNi43OSAxNmwzLjktNkg4Ljg4bDMuMTMtNC41IDMuMTUgNC41aC0xLjlsNCA2SDYuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZWRhbEJpa2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC4xOCAxMC0xLjctNC42OEEyLjAwOCAyLjAwOCAwIDAgMCAxNC42IDRIMTJ2MmgyLjZsMS40NiA0aC00LjgxbC0uMzYtMUgxMlY3SDd2MmgxLjc1bDEuODIgNUg5LjljLS40NC0yLjIzLTIuMzEtMy44OC00LjY1LTMuOTlDMi40NSA5Ljg3IDAgMTIuMiAwIDE1YzAgMi44IDIuMiA1IDUgNSAyLjQ2IDAgNC40NS0xLjY5IDQuOS00aDQuMmMuNDQgMi4yMyAyLjMxIDMuODggNC42NSAzLjk5IDIuOC4xMyA1LjI1LTIuMTkgNS4yNS01IDAtMi44LTIuMi01LTUtNWgtLjgyek03LjgyIDE2Yy0uNCAxLjE3LTEuNDkgMi0yLjgyIDItMS42OCAwLTMtMS4zMi0zLTNzMS4zMi0zIDMtM2MxLjMzIDAgMi40Mi44MyAyLjgyIDJINXYyaDIuODJ6bTYuMjgtMmgtMS40bC0uNzMtMkgxNWMtLjQ0LjU4LS43NiAxLjI1LS45IDJ6bTQuOSA0Yy0xLjY4IDAtMy0xLjMyLTMtMyAwLS45My40MS0xLjczIDEuMDUtMi4yOGwuOTYgMi42NCAxLjg4LS42OC0uOTctMi42N2MuMDMgMCAuMDYtLjAxLjA5LS4wMSAxLjY4IDAgMyAxLjMyIDMgM3MtMS4zMyAzLTMuMDEgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvblBpbkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDExYzEuMzMgMCA0IC42NyA0IDJ2LjE2Yy0uOTcgMS4xMi0yLjQgMS44NC00IDEuODRzLTMuMDMtLjcyLTQtMS44NFYxM2MwLTEuMzMgMi42Ny0yIDQtMnptMC0xYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptNiAuMkMxOCA2LjU3IDE1LjM1IDQgMTIgNHMtNiAyLjU3LTYgNi4yYzAgMi4zNCAxLjk1IDUuNDQgNiA5LjE0IDQuMDUtMy43IDYtNi44IDYtOS4xNHpNMTIgMmM0LjIgMCA4IDMuMjIgOCA4LjIgMCAzLjMyLTIuNjcgNy4yNS04IDExLjgtNS4zMy00LjU1LTgtOC40OC04LTExLjhDNCA1LjIyIDcuOCAyIDEyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25QaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoNGwzIDMgMy0zaDRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNmgtNC44M2wtLjU5LjU5TDEyIDIwLjE3bC0xLjU5LTEuNTktLjU4LS41OEg1VjRoMTR2MTR6bS03LTdjMS42NSAwIDMtMS4zNSAzLTNzLTEuMzUtMy0zLTMtMyAxLjM1LTMgMyAxLjM1IDMgMyAzem0wLTRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNiA4LjU4YzAtMi41LTMuOTctMy41OC02LTMuNThzLTYgMS4wOC02IDMuNThWMTdoMTJ2LTEuNDJ6TTguNDggMTVjLjc0LS41MSAyLjIzLTEgMy41Mi0xczIuNzguNDkgMy41MiAxSDguNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXN0Q29udHJvbFJvZGVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTdcIixcImN5XCI6XCIxN1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC44NiAxNC45Ny0uOTMtLjg0Yy40OC0zLjQ1LTIuODctNi4wNC02LjA1LTQuODJBNS43OSA1Ljc5IDAgMCAwIDEyIDljLTQuMjYgMC01LjY1IDMuNTgtNS44OSA0Ljg1QTIuOTgzIDIuOTgzIDAgMCAxIDQgMTFjMC0xLjY2IDEuMzQtMyAzLTNoMi41YTIuNSAyLjUgMCAwIDAgMC01SDhjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDFoMS41Yy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNUg3Yy0yLjc2IDAtNSAyLjI0LTUgNSAwIDIuNDQgMS43NiA0LjQ3IDQuMDcgNC45MUE1Ljk5OCA1Ljk5OCAwIDAgMCAxMiAyMWg2LjUzYzMuMTEgMCA0LjctMy44OSAyLjMzLTYuMDN6TTE4LjUzIDE5SDEyYy0xLjIxIDAtMi4zNC0uNTQtMy4xMS0xLjQ4LS43OC0uOTUtMS4wNi0yLjE2LS44LTMuNDFhMy45NSAzLjk1IDAgMCAxIDIuOTktMy4wMWMuMjItLjA1LjQ1LS4wNi42Ny0uMDctLjQ3LjcxLS43NSAxLjU1LS43NSAyLjQ3IDAgMS4yNC41IDIuMzcgMS4zMiAzLjE4bDEuNDEtMS40MWMtLjQ1LS40NS0uNzMtMS4wOC0uNzMtMS43NyAwLTEuNDIgMS4yLTIuNSAyLjUtMi41YTIuNSAyLjUgMCAwIDEgMi41IDIuNWMwIC40Ni0uMTMuODgtLjM1IDEuMjVsMS44NyAxLjdjLjMxLjI4LjQ4LjY3LjQ4IDEuMDkgMCAuOC0uNjYgMS40Ni0xLjQ3IDEuNDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXN0Q29udHJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE1di0yaC0zLjA3Yy0uMDUtLjM5LS4xMi0uNzctLjIyLTEuMTRsMi41OC0xLjQ5LTEtMS43M0wxNi45MiAxMGMtLjI4LS40OC0uNjItLjkxLS45OS0xLjI5LjEtLjU2LjItMS42OS0uNTgtMi44OUwxNyA0LjE3bC0xLjQxLTEuNDEtMS43MiAxLjcyYy0xLjY4LS44OS0zLjEtLjMzLTMuNzMgMEw4LjQxIDIuNzYgNyA0LjE3bDEuNjUgMS42NWMtLjc4IDEuMi0uNjggMi4zNC0uNTggMi44OS0uMzcuMzktLjcxLjgyLS45OSAxLjI5TDQuNzEgOC42M2wtMSAxLjczIDIuNTggMS40OWMtLjEuMzctLjE3Ljc1LS4yMiAxLjE0SDN2MmgzLjA3Yy4wNS4zOS4xMi43Ny4yMiAxLjE0bC0yLjU4IDEuNDkgMSAxLjczTDcuMDggMThjMS4wOCAxLjgxIDIuODggMyA0LjkyIDNzMy44NC0xLjE5IDQuOTItM2wyLjM3IDEuMzcgMS0xLjczLTIuNTgtMS40OWMuMS0uMzcuMTctLjc1LjIyLTEuMTRIMjF6bS05LTljLjg4IDAgMS42Mi41NyAxLjg4IDEuMzZDMTMuMjkgNy4xMyAxMi42NiA3IDEyIDdzLTEuMjkuMTMtMS44OC4zNkMxMC4zOCA2LjU3IDExLjEyIDYgMTIgNnptMCAxM2MtMi4yMSAwLTQtMi4yNC00LTVzMS43OS01IDQtNSA0IDIuMjQgNCA1LTEuNzkgNS00IDV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDExaDJ2NmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpbkRyb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzEuOTMgMCA1IDEuNCA1IDUuMTUgMCAyLjE2LTEuNzIgNC42Ny01IDcuMzItMy4yOC0yLjY1LTUtNS4xNy01LTcuMzJDNyA1LjQgMTAuMDcgNCAxMiA0bTAtMkM4LjczIDIgNSA0LjQ2IDUgOS4xNWMwIDMuMTIgMi4zMyA2LjQxIDcgOS44NSA0LjY3LTMuNDQgNy02LjczIDctOS44NUMxOSA0LjQ2IDE1LjI3IDIgMTIgMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN2MtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDJhMiAyIDAgMSAwIDAtNHpNNSAyMGgxNHYySDV2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQbGFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEyYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptNi0xLjhDMTggNi41NyAxNS4zNSA0IDEyIDRzLTYgMi41Ny02IDYuMmMwIDIuMzQgMS45NSA1LjQ0IDYgOS4xNCA0LjA1LTMuNyA2LTYuOCA2LTkuMTR6TTEyIDJjNC4yIDAgOCAzLjIyIDggOC4yIDAgMy4zMi0yLjY3IDcuMjUtOCAxMS44LTUuMzMtNC41NS04LTguNDgtOC0xMS44QzQgNS4yMiA3LjggMiAxMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGx1bWJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS4yOCA0LjkzLTIuMTItMi4xMmMtLjc4LS43OC0yLjA1LS43OC0yLjgzIDBMMTEuNSA1LjY0bDIuMTIgMi4xMiAyLjEyLTIuMTIgMy41NCAzLjU0YTMuMDEyIDMuMDEyIDAgMCAwIDAtNC4yNXpNNS40OSAxMy43N2MuNTkuNTkgMS41NC41OSAyLjEyIDBsMi40Ny0yLjQ3LTIuMTItMi4xMy0yLjQ3IDIuNDdjLS41OS41OS0uNTkgMS41NCAwIDIuMTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1LjA0IDcuNzYtLjcxLjcxLS43MS43MUwxMC40NCA2Yy0uNTktLjYtMS41NC0uNi0yLjEyLS4wMWExLjQ5IDEuNDkgMCAwIDAgMCAyLjEybDMuMTggMy4xOC0uNzEuNzEtNi4zNiA2LjM2Yy0uNzguNzgtLjc4IDIuMDUgMCAyLjgzLjc4Ljc4IDIuMDUuNzggMi44MyAwTDE2LjQ1IDEyYS45OTYuOTk2IDAgMSAwIDEuNDEtMS40MWwtMi44Mi0yLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmFpbHdheUFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMFwiLFwiY3lcIjpcIjE1LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDExVjhoNy4yOUMxMS4xIDcuMzcgMTEgNi43IDExIDZINC40M2MuOS0uNzcgMy4yOC0xLjA4IDYuNjUtLjk4LjEtLjcuMy0xLjM3LjU5LTEuOTlDMi45NyAyLjY3IDIgNS4wMiAyIDd2OS41QzIgMTguNDMgMy41NyAyMCA1LjUgMjBMNCAyMXYxaDEydi0xbC0xLjUtMWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVYxM2MtMS45MSAwLTMuNjMtLjc2LTQuODktMkg0em0xMiA1LjVjMCAuODMtLjY3IDEuNS0xLjUgMS41aC05Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVWMTNoMTJ2My41elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxYy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptLjUgOGgtMVY4aDF2MXptMC0yaC0xVjNoMXY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmFtZW5EaW5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS42NiAxNGMtLjY2IDEuOTItMi4yNCAzLjU0LTQuNCA0LjM5bC0xLjI2LjVWMjBoLTR2LTEuMTFsLTEuMjctLjVjLTIuMTYtLjg1LTMuNzQtMi40Ny00LjQtNC4zOWgxNS4zM00yMiAyIDQgMy45OVYxMkgyYzAgMy42OSAyLjQ3IDYuODYgNiA4LjI1VjIyaDh2LTEuNzVjMy41My0xLjM5IDYtNC41NiA2LTguMjVIMTAuNVY4SDIyVjYuNUgxMC41VjQuNzhMMjIgMy41MVYyek04IDYuNVY1LjA2bDEtLjExVjYuNUg4em0tMi41IDBWNS4zNGwxLS4xMVY2LjVoLTF6TTggMTJWOGgxdjRIOHptLTIuNSAwVjhoMXY0aC0xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmFtcExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAyMWgtMlY2LjgzTDkuNDEgOC40MSA4IDdsNC00IDQgNC0xLjQxIDEuNDFMMTMgNi44M1Y5YzAgNC4yNyA0LjAzIDcuMTMgNiA4LjI3bC0xLjQ2IDEuNDZjLTEuOTEtMS4xNi0zLjQ0LTIuNTMtNC41NC00LjAyVjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmFtcFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMjFoMlY2LjgzbDEuNTkgMS41OUwxNiA3bC00LTQtNCA0IDEuNDEgMS40MUwxMSA2LjgzVjljMCA0LjI3LTQuMDMgNy4xMy02IDguMjdsMS40NiAxLjQ2QzguMzcgMTcuNTYgOS45IDE2LjE5IDExIDE0LjdWMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSYXRlUmV2aWV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg1LjE3bC0uNTkuNTktLjU4LjU4VjRoMTZ2MTJ6bS05LjUtMkgxOHYtMmgtNS41em0zLjg2LTUuODdjLjItLjIuMi0uNTEgMC0uNzFsLTEuNzctMS43N2MtLjItLjItLjUxLS4yLS43MSAwTDYgMTEuNTNWMTRoMi40N2w1Ljg5LTUuODd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZW1vdmVSb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNGgydjloLTJ6TTQgNGgydjE2SDR6TTExIDRoMnY0aC0yek0xMSAxMGgydjRoLTJ6TTExIDE2aDJ2NGgtMnpNMjIuNSAxNi40MSAyMS4wOSAxNSAxOSAxNy4wOSAxNi45MSAxNWwtMS40MSAxLjQxIDIuMDkgMi4wOS0yLjA5IDIuMDlMMTYuOTEgMjIgMTkgMTkuOTEgMjEuMDkgMjJsMS40MS0xLjQxLTIuMDktMi4wOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlc3RhdXJhbnRNZW51IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04LjEgMTMuMzQgMi44My0yLjgzTDMuOTEgMy41YTQuMDA4IDQuMDA4IDAgMCAwIDAgNS42Nmw0LjE5IDQuMTh6bTYuNzgtMS44MWMxLjUzLjcxIDMuNjguMjEgNS4yNy0xLjM4IDEuOTEtMS45MSAyLjI4LTQuNjUuODEtNi4xMi0xLjQ2LTEuNDYtNC4yLTEuMS02LjEyLjgxLTEuNTkgMS41OS0yLjA5IDMuNzQtMS4zOCA1LjI3TDMuNyAxOS44N2wxLjQxIDEuNDFMMTIgMTQuNDFsNi44OCA2Ljg4IDEuNDEtMS40MUwxMy40MSAxM2wxLjQ3LTEuNDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZXN0YXVyYW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA2djhoM3Y4aDJWMmMtMi43NiAwLTUgMi4yNC01IDR6bS01IDNIOVYySDd2N0g1VjJIM3Y3YzAgMi4yMSAxLjc5IDQgNCA0djloMnYtOWMyLjIxIDAgNC0xLjc5IDQtNFYyaC0ydjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb3VuZGFib3V0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjA4IDhBNiA2IDAgMCAxIDE2IDNjMy4zMSAwIDYgMi42OSA2IDYgMCAyLjk3LTIuMTYgNS40NC01IDUuOTJWMjFoLTJ2LTYuMDljMC0uOTguNzEtMS44IDEuNjctMS45N2EzLjk5OSAzLjk5OSAwIDEgMC00LjYxLTQuNjFjLS4xNy45Ni0uOTkgMS42Ny0xLjk3IDEuNjdINS44M2wxLjU5IDEuNTlMNiAxMyAyIDlsNC00IDEuNDEgMS40MUw1LjgzIDhoNC4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvdW5kYWJvdXRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjkyIDhDMTMuNDQgNS4xNiAxMC45NyAzIDggMyA0LjY5IDMgMiA1LjY5IDIgOWMwIDIuOTcgMi4xNiA1LjQ0IDUgNS45MlYyMWgydi02LjA5YzAtLjk4LS43MS0xLjgtMS42Ny0xLjk3YTMuOTk5IDMuOTk5IDAgMSAxIDQuNjEtNC42MWMuMTcuOTYuOTkgMS42NyAxLjk3IDEuNjdoNC4yNmwtMS41OSAxLjU5TDE4IDEzbDQtNC00LTQtMS40MSAxLjQxTDE4LjE3IDhoLTQuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb3V0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE1LjE4VjdjMC0yLjIxLTEuNzktNC00LTRzLTQgMS43OS00IDR2MTBjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yVjguODJDOC4xNiA4LjQgOSA3LjMgOSA2YzAtMS42Ni0xLjM0LTMtMy0zUzMgNC4zNCAzIDZjMCAxLjMuODQgMi40IDIgMi44MlYxN2MwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00VjdjMC0xLjEuOS0yIDItMnMyIC45IDIgMnY4LjE4QTIuOTk2IDIuOTk2IDAgMCAwIDE4IDIxYzEuNjYgMCAzLTEuMzQgMy0zIDAtMS4zLS44NC0yLjQtMi0yLjgyek02IDdjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMTIgMTJjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJ1bkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41NCA4Ljk3Yy0uMjMtLjQ3LS43Ni0uNzEtMS4yNi0uNTNMOSA5LjY1VjEyaDF2LTEuNjVsMS41NC0uNTctLjk2IDQuODktMi43OC0uNTctLjIuOTggMy43Ni43Ny41Mi0yLjY0TDEzIDE0LjQyVjE4aDF2LTMuOTdsLTEuMzItMS40NC40MS0yLjM1QzEzLjk5IDExLjQ2IDE1LjMgMTIgMTYgMTJ2LTFjLS40MSAwLTEuNjMtLjMzLTIuNDYtMi4wM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMy41XCIsXCJjeVwiOlwiN1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2FmZXR5Q2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyIDQgNXY2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSA0LjU5LTEuMTUgOC01Ljg2IDgtMTAuOTFWNWwtOC0zem02IDkuMDljMCA0LTIuNTUgNy43LTYgOC44My0zLjQ1LTEuMTMtNi00LjgyLTYtOC44M3YtNC43bDYtMi4yNSA2IDIuMjV2NC43ek0xMiA3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMS42NSA3LjM1TDExLjUgMTIuMlY5aDF2Mi43OWwxLjg1IDEuODUtLjcuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTYWlsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTMuNVYyTDMgMTMuNWg4em0tMi0ySDYuODNMOSA4LjM4djMuMTJ6bTEyIDJDMjEgNi41IDE0LjUgMSAxMi41IDFjMCAwIDEgMyAxIDYuNXMtMSA2LTEgNkgyMXptLTUuNjItOC4yNmMxLjQyIDEuNTIgMi44OCAzLjcyIDMuNDEgNi4yNmgtMy42OGMuMjEtMS4xLjM5LTIuNDYuMzktNCAwLS43OS0uMDUtMS41NS0uMTItMi4yNnpNMjIgMTVIMmE2LjIzMyA2LjIzMyAwIDAgMCAyLjMzIDMuNzNjLjY1LS4yNyAxLjIyLS43MiAxLjY3LTEuMjMuNzMuODQgMS44IDEuNSAzIDEuNXMyLjI3LS42NiAzLTEuNWMuNzMuODQgMS44IDEuNSAzIDEuNXMyLjI2LS42NiAzLTEuNWMuNDUuNTEgMS4wMi45NiAxLjY3IDEuMjMgMS4xNy0uODkgMi4wMi0yLjIgMi4zMy0zLjczem0wIDh2LTJoLTFjLTEuMDQgMC0yLjA4LS4zNS0zLTEtMS44MyAxLjMtNC4xNyAxLjMtNiAwLTEuODMgMS4zLTQuMTcgMS4zLTYgMC0uOTEuNjUtMS45NiAxLTMgMUgydjJoMWMxLjAzIDAgMi4wNS0uMjUgMy0uNzUgMS44OSAxIDQuMTEgMSA2IDAgMS44OSAxIDQuMTEgMSA2IDAgLjk1LjUgMS45Ny43NSAzIC43NWgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2F0ZWxsaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6TTguNTcgNkg2djIuNThjMS40MiAwIDIuNTctMS4xNiAyLjU3LTIuNTh6TTEyIDZoLTEuNzFjMCAyLjM2LTEuOTIgNC4yOS00LjI5IDQuMjlWMTJjMy4zMiAwIDYtMi42OSA2LTZ6bTIuMTQgNS44Ni0zIDMuODdMOSAxMy4xNSA2IDE3aDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NyZWVuUm90YXRpb25BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm00IDcuNTkgNS01Yy43OC0uNzggMi4wNS0uNzggMi44MyAwTDIwLjI0IDExaC0yLjgzTDEwLjQgNCA1LjQxIDlIOHYySDJWNWgydjIuNTl6TTIwIDE5aDJ2LTZoLTZ2MmgyLjU5bC00Ljk5IDUtNy4wMS03SDMuNzZsOC40MSA4LjQxYy43OC43OCAyLjA1Ljc4IDIuODMgMGw1LTVWMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZXRNZWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuMDUgMTcuNTYtMTcuOTcuOTRMMyAxN2wxNy45OC0uOTQuMDcgMS41ek0yMSAxOS40OEgzdjEuNWgxOHYtMS41ek0yMyAxM1Y0YzAtMS4xLS45LTItMi0ySDNjLTEuMSAwLTIgLjktMiAydjljMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnptLTIgMEgzVjRoMTh2OXptLTEtN2MtMS42OCAwLTMuMDQuOTgtMy4yMSAyLjIzLS42NC0uNzMtMi43My0yLjczLTYuNTQtMi43My00LjY3IDAtNi43NSAzLTYuNzUgM3MyLjA4IDMgNi43NSAzYzMuODEgMCA1LjktMiA2LjU0LTIuNzNDMTYuOTYgMTAuMDIgMTguMzIgMTEgMjAgMTFWNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpZ25wb3N0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTBoNWwzLTMtMy0zaC01VjJoLTJ2Mkg0djZoN3YySDZsLTMgMyAzIDNoNXY0aDJ2LTRoN3YtNmgtN3YtMnpNNiA2aDExLjE3bDEgMS0xIDFINlY2em0xMiAxMEg2LjgzbC0xLTEgMS0xSDE4djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbm93bW9iaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTdjMCAuNTUtLjQ1IDEtMSAxaC0uMTdsLTIuMi0yLjJDMjAuNTggMTUuMzcgMjIgMTQuNCAyMiAxM2MwLTEtOC04LTgtOGgtM3YyaDIuMjVsLjguNzJMMTEgMTAgMiA5bC0yIDQgNC41NCAxLjM2LTMuNDkgMS44OEMtLjc3IDE3LjIyLS4wNyAyMCAyIDIwaDZjMi4yMSAwIDQtMS43OSA0LTRoNGwyIDJoLTN2Mmg2YzEuNjYgMCAzLTEuMzQgMy0zaC0yek04IDE4SDJsNS4yNS0yLjgzTDEwIDE2YTIgMiAwIDAgMS0yIDJ6bTktNGgtNi43bC03LjQ1LTIuMjMuMzEtLjYyIDguNDQuODUgMy45My0yLjk0czMuNzcgMy40NCA0LjI3IDQuMTRjMCAwLTEuMS44LTIuOC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU29zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNSA3aC0zYy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoM2MxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0yem0wIDhoLTNWOWgzdjZ6TTEgMTVoNHYtMkgzYy0xLjEgMC0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJoNHYySDN2MmgyYzEuMSAwIDIgLjkgMiAydjJjMCAxLjEtLjkgMi0yIDJIMXYtMnptMTYgMGg0di0yaC0yYy0xLjEgMC0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJoNHYyaC00djJoMmMxLjEgMCAyIC45IDIgMnYyYzAgMS4xLS45IDItMiAyaC00di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU291cEtpdGNoZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjQgN2MtLjM0LjU1LS40Ljk3LS40IDEuMzhDNiA5LjE1IDcgMTEgNyAxMmMwIC45NS0uNCAxLjUtLjQgMS41SDUuMXMuNC0uNTUuNC0xLjVjMC0xLTEtMi44NS0xLTMuNjIgMC0uNDEuMDYtLjgzLjQtMS4zOGgxLjV6bTUgMGMtLjM0LjU1LS40Ljk3LS40IDEuMzggMCAuNzcgMSAyLjYyIDEgMy42MiAwIC45NS0uNCAxLjUtLjQgMS41aDEuNXMuNC0uNTUuNC0xLjVjMC0xLTEtMi44NS0xLTMuNjIgMC0uNDEuMDYtLjgzLjQtMS4zOGgtMS41ek04LjE1IDdjLS4zNC41NS0uNC45Ny0uNCAxLjM4IDAgLjc3IDEgMi42MyAxIDMuNjIgMCAuOTUtLjQgMS41LS40IDEuNWgxLjVzLjQtLjU1LjQtMS41YzAtMS0xLTIuODUtMS0zLjYyIDAtLjQxLjA2LS44My40LTEuMzhoLTEuNXpNMTguNiAyYy0xLjU0IDAtMi44MSAxLjE2LTIuOTggMi42NUwxNC41MyAxNUg0LjAxYy0uNiAwLTEuMDkuNTMtMSAxLjEzQzMuNTMgMTkuNDYgNi4zOSAyMiA5Ljc1IDIyYzMuNDggMCA2LjM0LTIuNzMgNi43MS02LjIzTDE3LjYxIDQuOWMuMDUtLjUxLjQ3LS45Ljk5LS45LjU1IDAgMSAuNDUgMSAxIDAgLjMtLjEgMS4yNS0uMSAxLjI1bDEuOTcuMjVzLjEzLTEuMDYuMTMtMS41YzAtMS42NS0xLjM1LTMtMy0zek05Ljc1IDIwYy0xLjk0IDAtMy42Ny0xLjIzLTQuNDMtM2g4Ljc5Yy0uNzIgMS43OC0yLjQyIDMtNC4zNiAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RhZGl1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgNSAzIDdWM2w0IDJ6bTExLTJ2NGw0LTItNC0yem0tNy0xdjRsNC0yLTQtMnptMiAxNmgtMnY0Yy01LjA1LS4xNS05LTEuNDQtOS0zdi05YzAtMS42NiA0LjQ4LTMgMTAtM3MxMCAxLjM0IDEwIDN2OWMwIDEuNTYtMy45NSAyLjg1LTkgM3YtNHptLTgtNy45NmMxLjM4LjQ5IDMuNzcuOTYgNyAuOTZzNS42Mi0uNDcgNy0uOTZDMTkgOS44NiAxNi4yMiA5IDEyIDlzLTcgLjg2LTcgMS4wNHptMTUgMS43NmMtMS44Mi43My00LjczIDEuMi04IDEuMnMtNi4xOC0uNDctOC0xLjJ2Ni43OGMuNjEuNDEgMi4zNiAxLjAxIDUgMS4yOFYxNmg2djMuODZjMi42NC0uMjcgNC4zOS0uODcgNS0xLjI4VjExLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdG9yZU1hbGxEaXJlY3RvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4LjM2IDkgLjYgM0g1LjA0bC42LTNoMTIuNzJNMjAgNEg0djJoMTZWNHptMCAzSDRsLTEgNXYyaDF2NmgxMHYtNmg0djZoMnYtNmgxdi0ybC0xLTV6TTYgMTh2LTRoNnY0SDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdHJhaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDYuODMgOS40MSA4LjQxIDggN2w0LTQgNCA0LTEuNDEgMS40MUwxMyA2LjgzVjIxaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RyZWV0dmlldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNTYgMTQuMzNjLS4zNC4yNy0uNTYuNy0uNTYgMS4xN1YyMWg3YzEuMSAwIDItLjkgMi0ydi01Ljk4Yy0uOTQtLjMzLTEuOTUtLjUyLTMtLjUyLTIuMDMgMC0zLjkzLjctNS40NCAxLjgzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDZjMC0xLjA4LjI3LTIuMS43NC0zSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgLjU1LjIzIDEuMDUuNTkgMS40MWw5LjgyLTkuODJBNi40MzUgNi40MzUgMCAwIDEgMTEuNSA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3Vid2F5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy44IDIuOEMxNiAyLjA5IDEzLjg2IDIgMTIgMnMtNCAuMDktNS44LjhDMy41MyAzLjg0IDIgNi4wNSAyIDguODZWMjJoMjBWOC44NmMwLTIuODEtMS41My01LjAyLTQuMi02LjA2ek05LjE3IDIwbDEuNS0xLjVoMi42NmwxLjUgMS41SDkuMTd6bS0yLjE2LTZWOWgxMHY1aC0xMHptOS40OSAyYzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xIC40NS0xIDEtMSAxIC40NSAxIDF6bS04LTFjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXpNMjAgMjBoLTMuNXYtLjM4bC0xLjE1LTEuMTZBMi45NzkgMi45NzkgMCAwIDAgMTggMTUuNVY5YzAtMi42My0zLTMtNi0zcy02IC4zNy02IDN2Ni41YzAgMS41NCAxLjE2IDIuNzkgMi42NSAyLjk2TDcuNSAxOS42MlYyMEg0VjguODZjMC0yIDEuMDEtMy40NSAyLjkzLTQuMkM4LjQxIDQuMDggMTAuMzIgNCAxMiA0czMuNTkuMDggNS4wNy42NmMxLjkyLjc1IDIuOTMgMi4yIDIuOTMgNC4yVjIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3luYWdvZ3VlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNGMtMS42NiAwLTMgMS4zNC0zIDN2LjI5TDEyIDMgNyA3LjI5VjdjMC0xLjY2LTEuMzQtMy0zLTNTMSA1LjM0IDEgN3YxNGgxMHYtNWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NWgxMFY3YzAtMS42Ni0xLjM0LTMtMy0zem0wIDJjLjU1IDAgMSAuNDUgMSAxdjFoLTJWN2MwLS41NS40NS0xIDEtMXpNNCA2Yy41NSAwIDEgLjQ1IDEgMXYxSDNWN2MwLS41NS40NS0xIDEtMXpNMyAxOXYtOWgydjlIM3ptMTQgMGgtMnYtM2MwLTEuNjUtMS4zNS0zLTMtM3MtMyAxLjM1LTMgM3YzSDdWOS45Mmw1LTQuMjkgNSA0LjI5VjE5em0yIDB2LTloMnY5aC0yelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGFrZW91dERpbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTcuNzkgMTgtLjUxLTdoOS40NmwtLjUxIDdINy43OXpNOS44MyA1aDQuMzNsMi44IDIuNzNMMTYuODcgOUg3LjEybC0uMDktMS4yN0w5LjgzIDV6TTIyIDcuNDZsLTEuNDEtMS40MUwxOSA3LjYzbC4wMy0uNTZMMTQuOTggM0g5LjAyTDQuOTcgNy4wN2wuMDMuNS0xLjU5LTEuNTZMMiA3LjQ0bDMuMjMgMy4xMS43IDkuNDVoMTIuMTRsLjctOS40NEwyMiA3LjQ2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGF4aUFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2LjVcIixcImN5XCI6XCIxNS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNS41XCIsXCJjeVwiOlwiMTUuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDEzdjVINHYtNWgxNGMtMS45MSAwLTMuNjMtLjc2LTQuODktMmgtOC4zbDEuMDQtM2g1LjQ0QzExLjEgNy4zNyAxMSA2LjcgMTEgNnMuMS0xLjM3LjI5LTJIOHYySDUuNWMtLjY2IDAtMS4yMS40Mi0xLjQyIDEuMDFMMiAxM3Y4YzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LThsLS4wOS0uMjdjLS42MS4xNy0xLjI1LjI3LTEuOTEuMjd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDFjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0uNSA4aC0xVjhoMXYxem0wLTJoLTFWM2gxdjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUZW1wbGVCdWRkaGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDkuMDJjMCAxLjA5LS44OSAxLjk4LTEuOTggMS45OEgxOFY4Ljg2YzEuNzItLjQ0IDMtMS45OSAzLTMuODRWNWwtMiAuMDJDMTkgNi4xMSAxOC4xMSA3IDE3LjAyIDdoLS41MkwxMiAxIDcuNSA3aC0uNTJDNS44OSA3IDUgNi4xMSA1IDUuMDJIM2MwIDEuODYgMS4yOCAzLjQgMyAzLjg0VjExSDQuOThDMy44OSAxMSAzIDEwLjExIDMgOS4wMkgxYzAgMS44NiAxLjI4IDMuNCAzIDMuODRWMjJoN3YtNGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NGg3di05LjE0YzEuNzItLjQ0IDMtMS45OSAzLTMuODRWOWwtMiAuMDJ6bS05LTQuNjlMMTQgN2gtNGwyLTIuNjd6TTggOWg4djJIOFY5em0xMCAxMWgtM3YtMmMwLTEuNjUtMS4zNS0zLTMtM3MtMyAxLjM1LTMgM3YySDZ2LTdoMTJ2N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRlbXBsZUhpbmR1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTF2MmgtMkwxNSAzVjFoLTJ2MmgtMi4wM1YxaC0ydjIuMTJMNiAxM0g0di0ySDJ2MTFoOXYtNWgydjVoOVYxMWgtMnptLTQuNjkgMEg4LjY5bC42LTJoNS40MmwuNiAyem0tMS4yLTRIOS44OWwuNi0yaDMuMDJsLjYgMnpNMjAgMjBoLTV2LTVIOXY1SDR2LTVoMy40OWwuNi0yaDcuODJsLjYgMkgyMHY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGVycmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQgNi00LjIyIDUuNjMgMS4yNSAxLjY3TDE0IDkuMzMgMTkgMTZoLTguNDZsLTQuMDEtNS4zN0wxIDE4aDIyTDE0IDZ6TTUgMTZsMS41Mi0yLjAzTDguMDQgMTZINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRoZWF0ZXJDb21lZHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE5XCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuOTkgOWMtMS4zOCAwLTIuNS44NC0yLjUgMS44OGg1YzAtMS4wNC0xLjEyLTEuODgtMi41LTEuODh6TTEgMTZjMCAzLjMxIDIuNjkgNiA2IDZzNi0yLjY5IDYtNlY5SDF2N3ptMi01aDh2NWMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNHYtNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMnY1LjVoMlY0aDh2NWMwIDIuMjEtMS43OSA0LTQgNC0uOTUgMC0xLjgxLS4zNS0yLjUtLjl2Mi4zNWMuNzYuMzUgMS42MS41NSAyLjUuNTUgMy4zMSAwIDYtMi42OSA2LTZWMkgxMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI1XCIsXCJjeVwiOlwiMTMuNVwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxMy41XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTcuODhjMS4zOCAwIDIuNS0uODQgMi41LTEuODhoLTVjMCAxLjA0IDEuMTIgMS44OCAyLjUgMS44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRpcmVSZXBhaXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA4YTEuMDAzIDEuMDAzIDAgMCAxLS43MS0xLjcxYy40LS40IDIuNDYtMS4wNCAyLjQ2LTEuMDRzLS42NCAyLjA2LTEuMDQgMi40NmMtLjE4LjE4LS40My4yOS0uNzEuMjl6bTEgNXY1YzAgMS42NS0xLjM1IDMtMyAzcy0zLTEuMzUtMy0zdi0yYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjNjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWNWMwLTEuMS45LTIgMi0yaDZjMS4xIDAgMiAuOSAyIDJ2OC4xN0EzLjAwOSAzLjAwOSAwIDAgMSAxNiAxNnYyYzAgLjU1LjQ1IDEgMSAxczEtLjQ1IDEtMXYtNWgtMXYtMS40MmMtMS43Ny0uNzctMy0yLjUzLTMtNC41OCAwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMi4wNS0xLjIzIDMuODEtMyA0LjU4VjEzaC0xem0yLTZjMC0xLjY2LTEuMzQtMy0zLTNzLTMgMS4zNC0zIDMgMS4zNCAzIDMgMyAzLTEuMzQgMy0zek0xMCA3IDggOVY2LjE3TDkuMTcgNUg0LjgzTDYgNi4xN1Y5TDQgN3YyLjE3bDIgMlYxNGwtMi0ydjIuMTdsMiAyVjE5bC0yLTJ2Mmg2di0ybC0yIDJ2LTIuODNsMi0yVjEybC0yIDJ2LTIuODNsMi0yVjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmFmZmljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMGgtM1Y4Ljg2YzEuNzItLjQ1IDMtMiAzLTMuODZoLTNWNGMwLS41NS0uNDUtMS0xLTFIOGMtLjU1IDAtMSAuNDUtMSAxdjFINGMwIDEuODYgMS4yOCAzLjQxIDMgMy44NlYxMEg0YzAgMS44NiAxLjI4IDMuNDEgMyAzLjg2VjE1SDRjMCAxLjg2IDEuMjggMy40MSAzIDMuODZWMjBjMCAuNTUuNDUgMSAxIDFoOGMuNTUgMCAxLS40NSAxLTF2LTEuMTRjMS43Mi0uNDUgMy0yIDMtMy44NmgtM3YtMS4xNGMxLjcyLS40NSAzLTIgMy0zLjg2em0tNSA5SDlWNWg2djE0em0tMy0xYy44MyAwIDEuNS0uNjcgMS41LTEuNVMxMi44MyAxNSAxMiAxNXMtMS41LjY3LTEuNSAxLjUuNjcgMS41IDEuNSAxLjV6bTAtNC41Yy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41LTEuNS42Ny0xLjUgMS41LjY3IDEuNSAxLjUgMS41ek0xMiA5Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxMi44MyA2IDEyIDZzLTEuNS42Ny0xLjUgMS41UzExLjE3IDkgMTIgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNCAwLTggLjUtOCA0djkuNUM0IDE3LjQzIDUuNTcgMTkgNy41IDE5TDYgMjAuNXYuNWgybDItMmg0bDIgMmgydi0uNUwxNi41IDE5YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41VjZjMC0zLjUtNC00LTgtNHptMCAyYzMuNTEgMCA0Ljk2LjQ4IDUuNTcgMUg2LjQzYy42MS0uNTIgMi4wNi0xIDUuNTctMXpNNiA3aDV2M0g2Vjd6bTEyIDguNWMwIC44My0uNjcgMS41LTEuNSAxLjVoLTljLS44MyAwLTEuNS0uNjctMS41LTEuNVYxMmgxMnYzLjV6bTAtNS41aC01VjdoNXYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHJhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgNSAuNzUtMS41SDE3VjJIN3YxLjVoNC43NUwxMSA1Yy0zLjEzLjA5LTYgLjczLTYgMy41VjE3YzAgMS41IDEuMTEgMi43MyAyLjU1IDIuOTVMNiAyMS41di41aDJsMi0yaDRsMiAyaDJ2LS41bC0xLjU1LTEuNTVoLS4wMS4wMUMxNy44OSAxOS43MyAxOSAxOC41IDE5IDE3VjguNWMwLTIuNzctMi44Ny0zLjQxLTYtMy41em0tMS45NyAyaDEuOTRjMi43NS4wOCAzLjYyLjU4IDMuOSAxSDcuMTNjLjI4LS40MiAxLjE1LS45MiAzLjktMXptLS4xOCAxMC45NUg3Ljc0QS45NzQuOTc0IDAgMCAxIDcgMTd2LTFoMy44OWMtLjI0LjI3LS4zOS42MS0uMzkgMSAwIC4zNi4xMy42OS4zNS45NXpNMTcgMTdjMCAuNDUtLjMuODQtLjc0Ljk1aC0zLjExYy4yMi0uMjYuMzUtLjU5LjM1LS45NSAwLS4zOS0uMTUtLjczLS4zOS0xSDE3djF6bTAtM0g3di00aDEwdjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmFuc2ZlcldpdGhpbkFTdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi40OSAxNS41di0xLjc1TDE0IDE2LjI1bDIuNDkgMi41VjE3SDIydi0xLjVoLTUuNTF6bTMuMDIgNC4yNUgxNHYxLjVoNS41MVYyM0wyMiAyMC41IDE5LjUxIDE4djEuNzV6TTkuNSA1LjVjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyek01Ljc1IDguOSAzIDIzaDIuMWwxLjc1LThMOSAxN3Y2aDJ2LTcuNTVMOC45NSAxMy40bC42LTNDMTAuODUgMTIgMTIuOCAxMyAxNSAxM3YtMmMtMS44NSAwLTMuNDUtMS00LjM1LTIuNDVsLS45NS0xLjZDOS4zNSA2LjM1IDguNyA2IDggNmMtLjI1IDAtLjUuMDUtLjc1LjE1TDIgOC4zVjEzaDJWOS42NWwxLjc1LS43NVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHJhbnNpdEVudGVyZXhpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMThINlY4aDN2NC43N0wxNS45OCA2IDE4IDguMDMgMTEuMTUgMTVIMTZ2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRyaXBPcmlnaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTJDMiA2LjQ4IDYuNDggMiAxMiAyczEwIDQuNDggMTAgMTAtNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTJ6bTEwIDZjMy4zMSAwIDYtMi42OSA2LTZzLTIuNjktNi02LTYtNiAyLjY5LTYgNiAyLjY5IDYgNiA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHVybkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02LjgzIDExIDEuNTkgMS41OUw3IDE0bC00LTQgNC00IDEuNDEgMS40MUw2LjgzIDlIMTVjMS4xIDAgMiAuOSAyIDJ2OWgtMnYtOUg2LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHVyblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuMTcgMTEtMS41OSAxLjU5TDE3IDE0bDQtNC00LTQtMS40MSAxLjQxTDE3LjE3IDlIOWMtMS4xIDAtMiAuOS0yIDJ2OWgydi05aDguMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUdXJuU2hhcnBMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA2LjgzIDQuNDEgOC40MSAzIDdsNC00IDQgNC0xLjQxIDEuNDFMOCA2LjgzVjEzaDhjMS4xIDAgMiAuOSAyIDJ2NmgtMnYtNkg4Yy0xLjEgMC0yLS45LTItMlY2LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHVyblNoYXJwUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOCA2LjgzIDEuNTkgMS41OUwyMSA3bC00LTQtNCA0IDEuNDEgMS40MUwxNiA2LjgzVjEzSDhjLTEuMSAwLTIgLjktMiAydjZoMnYtNmg4YzEuMSAwIDItLjkgMi0yVjYuODN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUdXJuU2xpZ2h0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjY2IDZWNEg2djUuNjZoMlY3LjQxbDUgNVYyMGgydi03LjU4YzAtLjUzLS4yMS0xLjA0LS41OS0xLjQxbC01LTVoMi4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVR1cm5TbGlnaHRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjM0IDZWNEgxOHY1LjY2aC0yVjcuNDFsLTUgNVYyMEg5di03LjU4YzAtLjUzLjIxLTEuMDQuNTktMS40MWw1LTVoLTIuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUd29XaGVlbGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC4xNyAxMUg0aC4xN205LjI0LTZIOXYyaDMuNTlsMiAySDExbC00IDItMi0ySDB2Mmg0Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRsMiAyaDNsMy40OS02LjEgMS4wMSAxLjAxYy0uOTEuNzMtMS41IDEuODQtMS41IDMuMDkgMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNC0xLjc5LTQtNC00Yy0uMTggMC0uMzYuMDMtLjUzLjA1TDE3LjQxIDlIMjBWNmwtMy43MiAxLjg2TDEzLjQxIDV6TTIwIDE3Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpNNCAxN2MtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVVHVybkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5djEyaC0yVjljMC0yLjIxLTEuNzktNC00LTRTOCA2Ljc5IDggOXY0LjE3bDEuNTktMS41OUwxMSAxM2wtNCA0LTQtNCAxLjQxLTEuNDFMNiAxMy4xN1Y5YzAtMy4zMSAyLjY5LTYgNi02czYgMi42OSA2IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVVHVyblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA5djEyaDJWOWMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0djQuMTdsLTEuNTktMS41OUwxMyAxM2w0IDQgNC00LTEuNDEtMS40MUwxOCAxMy4xN1Y5YzAtMy4zMS0yLjY5LTYtNi02UzYgNS42OSA2IDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWb2x1bnRlZXJBY3RpdmlzbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDEzYzMuMDktMi44MSA2LTUuNDQgNi03LjdDMjIgMy40NSAyMC41NSAyIDE4LjcgMmMtMS4wNCAwLTIuMDUuNDktMi43IDEuMjVDMTUuMzQgMi40OSAxNC4zNCAyIDEzLjMgMiAxMS40NSAyIDEwIDMuNDUgMTAgNS4zYzAgMi4yNiAyLjkxIDQuODkgNiA3Ljd6bS0yLjctOWMuNDQgMCAuODkuMjEgMS4xOC41NUwxNiA2LjM0bDEuNTItMS43OWMuMjktLjM0Ljc0LS41NSAxLjE4LS41NS43NCAwIDEuMy41NiAxLjMgMS4zIDAgMS4xMi0yLjA0IDMuMTctNCA0Ljk5LTEuOTYtMS44Mi00LTMuODgtNC00Ljk5IDAtLjc0LjU2LTEuMyAxLjMtMS4zek0xOSAxNmgtMmMwLTEuMi0uNzUtMi4yOC0xLjg3LTIuN0w4Ljk3IDExSDF2MTFoNnYtMS40NGw3IDEuOTQgOC0yLjV2LTFjMC0xLjY2LTEuMzQtMy0zLTN6TTMgMjB2LTdoMnY3SDN6bTEwLjk3LjQxTDcgMTguNDhWMTNoMS42MWw1LjgyIDIuMTdjLjM0LjEzLjU3LjQ2LjU3LjgzIDAgMC0xLjk5LS4wNS0yLjMtLjE1bC0yLjM4LS43OS0uNjMgMS45IDIuMzguNzljLjUxLjE3IDEuMDQuMjYgMS41OC4yNkgxOWMuMzkgMCAuNzQuMjMuOS41NmwtNS45MyAxLjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2FyZWhvdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOC4zNVYxOWgtMnYtOEg2djhINFY4LjM1bDgtMy4yIDggMy4yek0yMiAyMVY3TDEyIDMgMiA3djE0aDZ2LThoOHY4aDZ6bS0xMS0ySDl2Mmgydi0yem0yLTNoLTJ2Mmgydi0yem0yIDNoLTJ2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2luZUJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgM3Y2YzAgMi45NyAyLjE2IDUuNDMgNSA1LjkxVjE5SDh2Mmg4di0yaC0zdi00LjA5YzIuODQtLjQ4IDUtMi45NCA1LTUuOTFWM0g2em02IDEwYy0xLjg2IDAtMy40MS0xLjI4LTMuODYtM2g3LjcyYy0uNDUgMS43Mi0yIDMtMy44NiAzem00LTVIOFY1aDh2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdyb25nTG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMXYuMmMwIDIuMzQtMS45NSA1LjQ0LTYgOS4xNC00LjA1LTMuNy02LTYuNzktNi05LjE0QzYgNy41NyA4LjY1IDUgMTIgNWMuMzQgMCAuNjguMDMgMSAuMDhWMy4wNmMtLjMzLS4wNC0uNjYtLjA2LTEtLjA2LTQuMiAwLTggMy4yMi04IDguMiAwIDMuMzIgMi42NyA3LjI1IDggMTEuOCA1LjMzLTQuNTUgOC04LjQ4IDgtMTEuOFYxMWgtMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjExXCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyLjU0IDIuODgtMS40Mi0xLjQyTDE5IDMuNTlsLTIuMTItMi4xMy0xLjQyIDEuNDJMMTcuNTkgNWwtMi4xMyAyLjEyIDEuNDIgMS40MkwxOSA2LjQxbDIuMTIgMi4xMyAxLjQyLTEuNDJMMjAuNDEgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVpvb21Jbk1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgOVYzSDd2Mi41OUwzLjkxIDIuNSAyLjUgMy45MSA1LjU5IDdIM3YyaDZ6bTEyIDBWN2gtMi41OWwzLjA5LTMuMDktMS40MS0xLjQxTDE3IDUuNTlWM2gtMnY2aDZ6TTMgMTV2MmgyLjU5TDIuNSAyMC4wOWwxLjQxIDEuNDFMNyAxOC40MVYyMWgydi02SDN6bTEyIDB2Nmgydi0yLjU5bDMuMDkgMy4wOSAxLjQxLTEuNDFMMTguNDEgMTdIMjF2LTJoLTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVab29tT3V0TWFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNSAzIDIuMyAyLjMtMi44OSAyLjg3IDEuNDIgMS40MkwxOC43IDYuNyAyMSA5VjNoLTZ6TTMgOWwyLjMtMi4zIDIuODcgMi44OSAxLjQyLTEuNDJMNi43IDUuMyA5IDNIM3Y2em02IDEyLTIuMy0yLjMgMi44OS0yLjg3LTEuNDItMS40Mkw1LjMgMTcuMyAzIDE1djZoNnptMTItNi0yLjMgMi4zLTIuODctMi44OS0xLjQyIDEuNDIgMi44OSAyLjg3TDE1IDIxaDZ2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRIb21lV29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE0SDV2NUgzdi02Ljk3bDUtMy41NyA1IDMuNTd2MS4wOGMuNTctLjU5IDEuMjUtMS4wNyAyLTEuNDJWMTFMOCA2bC03IDV2MTBoNnYtNWgydjVoMi42OGMtLjQzLS45MS0uNjgtMS45Mi0uNjgtM3YtNHpNMTcgN2gydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDEzLjExVjNIMTB2MS45N2wyIDEuNDNWNWg5djYuNjhjLjc1LjM2IDEuNDMuODQgMiAxLjQzek0yMyAxOGMwLTIuNzYtMi4yNC01LTUtNXMtNSAyLjI0LTUgNSAyLjI0IDUgNSA1IDUtMi4yNCA1LTV6bS01LjUgM3YtMi41SDE1di0xaDIuNVYxNWgxdjIuNUgyMXYxaC0yLjVWMjFoLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcHBTZXR0aW5nc0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTcgMjBoMTB2MUg3ek03IDNoMTB2MUg3elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS44MSAxMi43NC0uODItLjYzdi0uMjJsLjgtLjYzYy4xNi0uMTIuMi0uMzQuMS0uNTFsLS44NS0xLjQ4YS4zOTUuMzk1IDAgMCAwLS4zNS0uMmMtLjA1IDAtLjEuMDEtLjE1LjAzbC0uOTUuMzhjLS4wOC0uMDUtLjExLS4wNy0uMTktLjExbC0uMTUtMS4wMWEuNDA4LjQwOCAwIDAgMC0uNC0uMzZoLTEuNzFjLS4yIDAtLjM3LjE1LS40LjM0bC0uMTQgMS4wMWMtLjAzLjAyLS4wNy4wMy0uMS4wNWwtLjA5LjA2LS45NS0uMzhhLjQwMS40MDEgMCAwIDAtLjUuMTdsLS44NSAxLjQ4Yy0uMS4xNy0uMDYuMzkuMS41MWwuOC42M3YuMjNsLS44LjYzYS4zOS4zOSAwIDAgMC0uMS41MWwuODUgMS40OGMuMDcuMTMuMjEuMi4zNS4yLjA1IDAgLjEtLjAxLjE1LS4wM2wuOTUtLjM3Yy4wOC4wNS4xMi4wNy4yLjExbC4xNSAxLjAxYy4wMy4yLjIuMzQuNC4zNGgxLjcxYy4yIDAgLjM3LS4xNS40LS4zNGwuMTUtMS4wMWMuMDMtLjAyLjA3LS4wMy4xLS4wNWwuMDktLjA2Ljk1LjM4YS40MDEuNDAxIDAgMCAwIC41LS4xN2wuODUtMS40OGEuMzkuMzkgMCAwIDAtLjEtLjUxek0xOCAxMy41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXpNMTcgMThIN1Y2aDEwdjFoMlYzYzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJ2LTRoLTJ2MXpNNyAzaDEwdjFIN1Yzem0xMCAxOEg3di0xaDEwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcHBzT3V0YWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA4aDRWNEg0djR6bTYgMTJoNHYtNGgtNHY0em0tNiAwaDR2LTRINHY0em0wLTZoNHYtNEg0djR6bTYgMGg0di00aC00djR6bTYgNmg0di00aC00djR6bTMtMjBjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0uNSA4aC0xVjdoMXYxem0wLTJoLTFWMmgxdjR6TTE2IDE0aDR2LTIuMDdjLS4zMy4wNS0uNjYuMDctMSAuMDctMS4wNyAwLTIuMDktLjI0LTMtLjY4VjE0ek0xMCA0djRoMi42OGMtLjQ0LS45MS0uNjgtMS45My0uNjgtMyAwLS4zNC4wMi0uNjcuMDctMUgxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFwcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgOGg0VjRINHY0em02IDEyaDR2LTRoLTR2NHptLTYgMGg0di00SDR2NHptMC02aDR2LTRINHY0em02IDBoNHYtNGgtNHY0em02LTEwdjRoNFY0aC00em0tNiA0aDRWNGgtNHY0em02IDZoNHYtNGgtNHY0em0wIDZoNHYtNGgtNHY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dCYWNrSW9zTmV3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNzcgMy43NyAxNiAyIDYgMTJsMTAgMTAgMS43Ny0xLjc3TDkuNTQgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd0JhY2tJb3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNTEgMy44NyAxNS43MyAyLjEgNS44NCAxMmw5LjkgOS45IDEuNzctMS43N0w5LjM4IDEybDguMTMtOC4xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFycm93QmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTFINy44M2w1LjU5LTUuNTlMMTIgNGwtOCA4IDggOCAxLjQxLTEuNDFMNy44MyAxM0gyMHYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFycm93RG93bndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwIDEyLTEuNDEtMS40MUwxMyAxNi4xN1Y0aC0ydjEyLjE3bC01LjU4LTUuNTlMNCAxMmw4IDggOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dEcm9wRG93bkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNGM0LjQxIDAgOCAzLjU5IDggOHMtMy41OSA4LTggOC04LTMuNTktOC04IDMuNTktOCA4LThtMC0yQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDEzLTQtNGg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dEcm9wRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNyAxMCA1IDUgNS01SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd0Ryb3BVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNyAxNCA1LTUgNSA1SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd0ZvcndhcmRJb3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMjMgMjAuMjMgOCAyMmwxMC0xMEw4IDIgNi4yMyAzLjc3IDE0LjQ2IDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dGb3J3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiA0LTEuNDEgMS40MUwxNi4xNyAxMUg0djJoMTIuMTdsLTUuNTggNS41OUwxMiAyMGw4LTgtOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXJyb3dMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAwdjI0SDBWMGgyNHpcIixcIm9wYWNpdHlcIjpcIi44N1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA3LTUgNSA1IDVWN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDE3IDUtNS01LTV2MTB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcnJvd1Vwd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNCAxMiAxLjQxIDEuNDFMMTEgNy44M1YyMGgyVjcuODNsNS41OCA1LjU5TDIwIDEybC04LTgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXNzaXN0YW50RGlyZWN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxQzUuOSAxIDEgNS45IDEgMTJzNC45IDExIDExIDExIDExLTQuOSAxMS0xMVMxOC4xIDEgMTIgMXptMCAyMGMtNC45OSAwLTktNC4wMS05LTlzNC4wMS05IDktOSA5IDQuMDEgOSA5LTQuMDEgOS05IDl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjczIDExLjQyIDEyLjU0IDQuMmMtLjM2LS4yNy0uOC0uMjctMS4xNSAwTDQuMiAxMS40MmMtLjI3LjM2LS4yNy44IDAgMS4xNmw3LjE5IDcuMjJjLjM2LjI3LjguMjcgMS4xNSAwbDcuMTktNy4yMmMuMzYtLjM2LjM2LS44OSAwLTEuMTZ6TTEzLjUgMTQuNWwtMS40MS0xLjQxTDEzLjE3IDEySDEwdjNIOHYtNGMwLS42LjQtMSAxLTFoNC4xN2wtMS4wOS0xLjA5TDEzLjUgNy41IDE3IDExbC0zLjUgMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FtcGFpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMXYyaDR2LTJoLTR6TTE2IDE3LjYxYy45Ni43MSAyLjIxIDEuNjUgMy4yIDIuMzkuNC0uNTMuOC0xLjA3IDEuMi0xLjYtLjk5LS43NC0yLjI0LTEuNjgtMy4yLTIuNC0uNC41NC0uOCAxLjA4LTEuMiAxLjYxek0yMC40IDUuNmMtLjQtLjUzLS44LTEuMDctMS4yLTEuNi0uOTkuNzQtMi4yNCAxLjY4LTMuMiAyLjQuNC41My44IDEuMDcgMS4yIDEuNi45Ni0uNzIgMi4yMS0xLjY1IDMuMi0yLjR6TTQgOWMtMS4xIDAtMiAuOS0yIDJ2MmMwIDEuMS45IDIgMiAyaDF2NGgydi00aDFsNSAzVjZMOCA5SDR6bTUuMDMgMS43MUwxMSA5LjUzdjQuOTRsLTEuOTctMS4xOC0uNDgtLjI5SDR2LTJoNC41NWwuNDgtLjI5ek0xNS41IDEyYzAtMS4zMy0uNTgtMi41My0xLjUtMy4zNXY2LjY5Yy45Mi0uODEgMS41LTIuMDEgMS41LTMuMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW5jZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTMuNTktMTNMMTIgMTAuNTkgOC40MSA3IDcgOC40MSAxMC41OSAxMiA3IDE1LjU5IDguNDEgMTcgMTIgMTMuNDEgMTUuNTkgMTcgMTcgMTUuNTkgMTMuNDEgMTIgMTcgOC40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE2LjE3IDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MUw5IDE2LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hldnJvbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjQxIDcuNDEgMTQgNmwtNiA2IDYgNiAxLjQxLTEuNDFMMTAuODMgMTJsNC41OC00LjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hldnJvblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA2IDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNi02LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDbG9zZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNi40MSAxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyIDE5IDYuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb3VibGVBcnJvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgNUgxMWw1IDctNSA3aDQuNWw1LTd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSA1SDRsNSA3LTUgN2g0LjVsNS03elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWFzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1IDUtMS40MSAxLjQxTDE4LjE3IDExSDJ2MmgxNi4xN2wtNC41OSA0LjU5TDE1IDE5bDctNy03LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFeHBhbmRDaXJjbGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuMDggOS41OSAxMiAxMi42NyA4LjkyIDkuNTkgNy41IDExbDQuNSA0LjUgNC41LTQuNS0xLjQyLTEuNDF6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXhwYW5kTGVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgOC02IDYgMS40MSAxLjQxTDEyIDEwLjgzbDQuNTkgNC41OEwxOCAxNGwtNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXhwYW5kTW9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMjRIMFYwaDI0djI0elwiLFwib3BhY2l0eVwiOlwiLjg3XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjU5IDguNTkgMTIgMTMuMTcgNy40MSA4LjU5IDYgMTBsNiA2IDYtNi0xLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaXJzdFBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTI0IDB2MjRIMFYwaDI0elwiLFwib3BhY2l0eVwiOlwiLjg3XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjQxIDE2LjU5IDEzLjgyIDEybDQuNTktNC41OUwxNyA2bC02IDYgNiA2IDEuNDEtMS40MXpNNiA2aDJ2MTJINlY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRnVsbHNjcmVlbkV4aXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTZoM3YzaDJ2LTVINXYyem0zLThINXYyaDVWNUg4djN6bTYgMTFoMnYtM2gzdi0yaC01djV6bTItMTFWNWgtMnY1aDVWOGgtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZ1bGxzY3JlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTRINXY1aDV2LTJIN3YtM3ptLTItNGgyVjdoM1Y1SDV2NXptMTIgN2gtM3YyaDV2LTVoLTJ2M3pNMTQgNXYyaDN2M2gyVjVoLTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb21lV29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMTF2MTBoNnYtNWgydjVoNlYxMUw4IDZsLTcgNXptMTIgOGgtMnYtNUg1djVIM3YtNi45N2w1LTMuNTcgNSAzLjU3VjE5ek0xNyA3aDJ2MmgtMnpNMTcgMTFoMnYyaC0yek0xNyAxNWgydjJoLTJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDN2MS45N2wyIDEuNDNWNWg5djE0aC00djJoNlYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGFzdFBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41OSA3LjQxIDEwLjE4IDEybC00LjU5IDQuNTlMNyAxOGw2LTYtNi02LTEuNDEgMS40MXpNMTYgNmgydjEyaC0yVjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMZWdlbmRUb2dnbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNUg0di0yaDE2djJ6bTAgMkg0djJoMTZ2LTJ6bS01LTYgNS0zLjU1VjVsLTUgMy41NUwxMCA1IDQgOC42NlYxMWw1LjkyLTMuNjFMMTUgMTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYXBzSG9tZVdvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDdoMnYyaC0yek0xNyAxMWgydjJoLTJ6TTE3IDE1aDJ2MmgtMnpNMSAxMXYxMGg2di01aDJ2NWg2VjExTDggNmwtNyA1em0xMiA4aC0ydi01SDV2NUgzdi03bDUtMy41IDUgMy41djd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDN2MS45N2wyIDEuNDNWNWg5djE0aC00djJoNlYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVudU9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMThoMTN2LTJIM3Yyem0wLTVoMTB2LTJIM3Yyem0wLTd2MmgxM1Y2SDN6bTE4IDkuNTlMMTcuNDIgMTIgMjEgOC40MSAxOS41OSA3bC01IDUgNSA1TDIxIDE1LjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWVudSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxOGgxOHYtMkgzdjJ6bTAtNWgxOHYtMkgzdjJ6bTAtN3YyaDE4VjZIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vcmVIb3JpeiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTEyIDBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0tNiAwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1vcmVWZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMCAyYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMCA2Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vcnRoRWFzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNXYyaDYuNTlMNCAxOC41OSA1LjQxIDIwIDE3IDguNDFWMTVoMlY1SDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3J0aFdlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE1aDJWOC40MUwxOC41OSAyMCAyMCAxOC41OSA4LjQxIDdIMTVWNUg1djEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9ydGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm01IDkgMS40MSAxLjQxTDExIDUuODNWMjJoMlY1LjgzbDQuNTkgNC41OUwxOSA5bC03LTctNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lT2ZmbGluZVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDVINHYxNmMwIDEuMS45IDIgMiAyaDEwdi0ySDZWNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMWgtOGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTh2LTFoOHYxem0wLTNoLThWNmg4djh6bTAtMTBoLThWM2g4djF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgMTAuMjVoMS42M2wtLjY5LjY5TDE0LjUgMTIgMTcgOS41IDE0LjUgN2wtMS4wNiAxLjA2LjY5LjY5SDEyYy0uNTUgMC0xIC40NS0xIDFWMTJoMS41di0xLjc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGF5bWVudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxNFY2YzAtMS4xLS45LTItMi0ySDNjLTEuMSAwLTIgLjktMiAydjhjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnptLTIgMEgzVjZoMTR2OHptLTctN2MtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTEzIDB2MTFjMCAxLjEtLjkgMi0yIDJINHYtMmgxN1Y3aDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaXZvdFRhYmxlQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDVjMC0xLjEtLjktMi0yLTJoLTl2NWgxMVY1ek0zIDE5YzAgMS4xLjkgMiAyIDJoM1YxMEgzdjl6TTMgNXYzaDVWM0g1Yy0xLjEgMC0yIC45LTIgMnptMTUgMy45OUwxNCAxM2wxLjQxIDEuNDEgMS41OS0xLjZWMTVjMCAxLjEtLjkgMi0yIDJoLTIuMTdsMS41OS0xLjU5TDEzIDE0bC00IDQgNCA0IDEuNDEtMS40MUwxMi44MyAxOUgxNWMyLjIxIDAgNC0xLjc5IDQtNHYtMi4xOGwxLjU5IDEuNkwyMiAxM2wtNC00LjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVmcmVzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNjUgNi4zNUE3Ljk1OCA3Ljk1OCAwIDAgMCAxMiA0Yy00LjQyIDAtNy45OSAzLjU4LTcuOTkgOHMzLjU3IDggNy45OSA4YzMuNzMgMCA2Ljg0LTIuNTUgNy43My02aC0yLjA4QTUuOTkgNS45OSAwIDAgMSAxMiAxOGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNmMxLjY2IDAgMy4xNC42OSA0LjIyIDEuNzhMMTMgMTFoN1Y0bC0yLjM1IDIuMzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTb3V0aEVhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA5aC0ydjYuNTlMNS40MSA0IDQgNS40MSAxNS41OSAxN0g5djJoMTBWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNvdXRoV2VzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE5di0ySDguNDFMMjAgNS40MSAxOC41OSA0IDcgMTUuNTlWOUg1djEwaDEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU291dGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOSAxNS0xLjQxLTEuNDFMMTMgMTguMTdWMmgtMnYxNi4xN2wtNC41OS00LjU5TDUgMTVsNyA3IDctN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1YmRpcmVjdG9yeUFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEgOSAxLjQyIDEuNDJMOC44MyAxNEgxOFY0aDJ2MTJIOC44M2wzLjU5IDMuNThMMTEgMjFsLTYtNiA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdWJkaXJlY3RvcnlBcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAyNEgwVjBoMjR2MjR6XCIsXCJvcGFjaXR5XCI6XCIuODdcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTkgMTUtNiA2LTEuNDItMS40MkwxNS4xNyAxNkg0VjRoMnYxMGg5LjE3bC0zLjU5LTMuNThMMTMgOWw2IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2l0Y2hMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDguNjJ2Ni43Nkw1LjEyIDEyIDguNSA4LjYyTTEwIDVsLTcgNyA3IDdWNXptNCAwdjE0bDctNy03LTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTd2l0Y2hSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMjQgMjRIMFYwaDI0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDE1LjM4VjguNjJMMTguODggMTJsLTMuMzggMy4zOE0xNCAxOWw3LTctNy03djE0em0tNCAwVjVsLTcgNyA3IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVVbmZvbGRMZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0yNCAwdjI0SDBWMGgyNHpcIixcIm9wYWNpdHlcIjpcIi44N1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjQxIDE4LjU5IDguODMgMjAgMTIgMTYuODMgMTUuMTcgMjBsMS40MS0xLjQxTDEyIDE0bC00LjU5IDQuNTl6bTkuMTgtMTMuMThMMTUuMTcgNCAxMiA3LjE3IDguODMgNCA3LjQxIDUuNDEgMTIgMTBsNC41OS00LjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVW5mb2xkTW9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNS44MyAxNS4xNyA5bDEuNDEtMS40MUwxMiAzIDcuNDEgNy41OSA4LjgzIDkgMTIgNS44M3ptMCAxMi4zNEw4LjgzIDE1bC0xLjQxIDEuNDFMMTIgMjFsNC41OS00LjU5TDE1LjE3IDE1IDEyIDE4LjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F0ZXJmYWxsQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDRoM3YxNmgtM1Y0ek0zIDEzaDN2N0gzdi03em0xMS05aDN2M2gtM1Y0em0tNCAxaDN2NGgtM1Y1em0tMyA1aDN2NEg3di00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2VzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTkgMTkgMS40MS0xLjQxTDUuODMgMTNIMjJ2LTJINS44M2w0LjU5LTQuNTlMOSA1bC03IDcgNyA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWNjb3VudFRyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMVYzaC03djNIOVYzSDJ2OGg3VjhoMnYxMGg0djNoN3YtOGgtN3YzaC0yVjhoMnYzaDd6TTcgOUg0VjVoM3Y0em0xMCA2aDN2NGgtM3YtNHptMC0xMGgzdjRoLTNWNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFkYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNmMwIDMuODcgMy4xMyA3IDcgN3M3LTMuMTMgNy03di00SDV2NHpNMTYuMTIgNC4zN2wyLjEtMi4xLS44Mi0uODMtMi4zIDIuMzFDMTQuMTYgMy4yOCAxMy4xMiAzIDEyIDNzLTIuMTYuMjgtMy4wOS43NUw2LjYgMS40NGwtLjgyLjgzIDIuMSAyLjFDNi4xNCA1LjY0IDUgNy42OCA1IDEwdjFoMTR2LTFjMC0yLjMyLTEuMTQtNC4zNi0yLjg4LTUuNjN6TTkgOWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem02IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpcmxpbmVTZWF0RmxhdEFuZ2xlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA2LjVjLjMxIDAgLjcuMTUuOS41Ni4yNC41LjAyIDEuMS0uNDcgMS4zNGEuOTc5Ljk3OSAwIDAgMS0xLjMyLS40Ni45ODYuOTg2IDAgMCAxIC40Ni0xLjM0Yy4xNC0uMDYuMjgtLjEuNDMtLjFtNi40NyAyLjExIDYuNjkgMi40MWMuNTIuMTkuOTMuNTYgMS4xNSAxLjA1LjIyLjQ4LjI1IDEuMDMuMDYgMS41M2wtLjAxLjAyLTguNTktMy4xMS43LTEuOU0xMCAxNS4xOWw0IDEuNDRWMTdoLTR2LTEuODFNNiA0LjVjLS40NCAwLS44OC4xLTEuMy4zYTIuOTkgMi45OSAwIDAgMC0xLjQgNCAyLjk4OCAyLjk4OCAwIDAgMCA0IDEuNCAzLjAxIDMuMDEgMCAwIDAgMS40MS00QTMuMDEzIDMuMDEzIDAgMCAwIDYgNC41em01LjI4IDEuNTVMOS4yIDExLjcxbDEyLjM2IDQuNDcuNjktMS44OWE0IDQgMCAwIDAtMi40MS01LjE1bC04LjU2LTMuMDl6bS05LjA5IDQuMi0uNjkgMS44OUw4IDE0LjQ4VjE5aDh2LTEuNjNMMjAuNTIgMTlsLjY5LTEuODktMTkuMDItNi44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpcmxpbmVTZWF0RmxhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxM2EzIDMgMCAwIDAgMi4xLTUuMTRDNi41MSA3LjI5IDUuNzUgNyA1IDdhMyAzIDAgMCAwLTIuMSA1LjE0Yy41OS41NyAxLjM1Ljg2IDIuMS44NnptLS43MS0zLjdhMSAxIDAgMCAxIDEuNDEtLjAyYy40LjM5LjQgMS4wMS4wMiAxLjQxLS4yLjItLjQ1LjMxLS43Mi4zMS0uMjYgMC0uNTEtLjEtLjctLjI4LS40LS40LS40LTEuMDItLjAxLTEuNDJ6TTE4IDdIOXY2aDEzdi0yYzAtMi4yMS0xLjc5LTQtNC00em0tNyA0VjloN2MxLjEgMCAyIC45IDIgMmgtOXptLTkgNWg2djJoOHYtMmg2di0ySDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBaXJsaW5lU2VhdEluZGl2aWR1YWxTdWl0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNGMxLjY2IDAgMy0xLjM0IDMtM1M4LjY2IDggNyA4cy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xMi0zaC04djhIM1Y3SDF2MTBoMjJ2LTZjMC0yLjIxLTEuNzktNC00LTR6bTIgOGgtOFY5aDZjMS4xIDAgMiAuOSAyIDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFpcmxpbmVTZWF0TGVncm9vbUV4dHJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDEyVjNIMnY5YzAgMi43NiAyLjI0IDUgNSA1aDZ2LTJIN2MtMS42NiAwLTMtMS4zNC0zLTN6bTE4LjgzIDUuMjRjLS4zOC0uNzItMS4yOS0uOTctMi4wMy0uNjNsLTEuMDkuNS0zLjQxLTYuOThBMi4wMTkgMi4wMTkgMCAwIDAgMTQuNTEgOUgxMVYzSDV2OGMwIDEuNjYgMS4zNCAzIDMgM2g3bDMuNDEgNyAzLjcyLTEuN2MuNzctLjM2IDEuMS0xLjMuNy0yLjA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlybGluZVNlYXRMZWdyb29tTm9ybWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEyVjNIM3Y5YzAgMi43NiAyLjI0IDUgNSA1aDZ2LTJIOGMtMS42NiAwLTMtMS4zNC0zLTN6bTE1LjUgNkgxOXYtN2MwLTEuMS0uOS0yLTItMmgtNVYzSDZ2OGMwIDEuNjUgMS4zNSAzIDMgM2g3djdoNC41Yy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlybGluZVNlYXRMZWdyb29tUmVkdWNlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOTcgMTkuMmMuMTguOTYtLjU1IDEuOC0xLjQ3IDEuOEgxNHYtM2wxLTRIOWMtMS42NSAwLTMtMS4zNS0zLTNWM2g2djZoNWMxLjEgMCAyIC45IDIgMmwtMiA3aDEuNDRjLjczIDAgMS4zOS40OSAxLjUzIDEuMnpNNSAxMlYzSDN2OWMwIDIuNzYgMi4yNCA1IDUgNWg0di0ySDhjLTEuNjYgMC0zLTEuMzQtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlybGluZVNlYXRSZWNsaW5lRXh0cmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuMzUgNS42NGMtLjktLjY0LTEuMTItMS44OC0uNDktMi43OS42My0uOSAxLjg4LTEuMTIgMi43OS0uNDkuOS42NCAxLjEyIDEuODguNDkgMi43OS0uNjQuOS0xLjg4IDEuMTItMi43OS40OXpNMTYgMTlIOC45M2MtMS40OCAwLTIuNzQtMS4wOC0yLjk2LTIuNTRMNCA3SDJsMS45OSA5Ljc2QTUuMDEgNS4wMSAwIDAgMCA4Ljk0IDIxSDE2di0yem0uMjMtNGgtNC44OGwtMS4wMy00LjFjMS41OC44OSAzLjI4IDEuNTQgNS4xNSAxLjIyVjkuOTljLTEuNjMuMzEtMy40NC0uMjctNC42OS0xLjI1TDkuMTQgNy40N2MtLjIzLS4xOC0uNDktLjMtLjc2LS4zOGEyLjIxIDIuMjEgMCAwIDAtLjk5LS4wNmgtLjAyYTIuMjY4IDIuMjY4IDAgMCAwLTEuODQgMi42MWwxLjM1IDUuOTJBMy4wMDggMy4wMDggMCAwIDAgOS44MyAxOGg2Ljg1bDMuODIgMyAxLjUtMS41LTUuNzctNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWlybGluZVNlYXRSZWNsaW5lTm9ybWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjU5IDUuNDFjLS43OC0uNzgtLjc4LTIuMDUgMC0yLjgzczIuMDUtLjc4IDIuODMgMCAuNzggMi4wNSAwIDIuODNjLS43OS43OS0yLjA1Ljc5LTIuODMgMHpNNiAxNlY3SDR2OWMwIDIuNzYgMi4yNCA1IDUgNWg2di0ySDljLTEuNjYgMC0zLTEuMzQtMy0zem0xNCA0LjA3TDE0LjkzIDE1SDExLjV2LTMuNjhjMS40IDEuMTUgMy42IDIuMTYgNS41IDIuMTZ2LTIuMTZjLTEuNjYuMDItMy42MS0uODctNC42Ny0yLjA0bC0xLjQtMS41NWMtLjE5LS4yMS0uNDMtLjM4LS42OS0uNS0uMjktLjE0LS42Mi0uMjMtLjk2LS4yM2gtLjAzQzguMDEgNyA3IDguMDEgNyA5LjI1VjE1YzAgMS42NiAxLjM0IDMgMyAzaDUuMDdsMy41IDMuNUwyMCAyMC4wN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsdWV0b290aEF1ZGlvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC4yNCAxMi4wMSAyLjMyIDIuMzJjLjI4LS43Mi40NC0xLjUxLjQ0LTIuMzNzLS4xNi0xLjU5LS40My0yLjMxbC0yLjMzIDIuMzJ6bTUuMjktNS4zLTEuMjYgMS4yNmMuNjMgMS4yMS45OCAyLjU3Ljk4IDQuMDJzLS4zNiAyLjgyLS45OCA0LjAybDEuMiAxLjJhOS45MzYgOS45MzYgMCAwIDAgMS41NC01LjMxYy0uMDEtMS44OS0uNTUtMy42Ny0xLjQ4LTUuMTl6bS0zLjgyIDFMMTAgMkg5djcuNTlMNC40MSA1IDMgNi40MSA4LjU5IDEyIDMgMTcuNTkgNC40MSAxOSA5IDE0LjQxVjIyaDFsNS43MS01LjcxLTQuMy00LjI5IDQuMy00LjI5ek0xMSA1LjgzbDEuODggMS44OEwxMSA5LjU5VjUuODN6bTEuODggMTAuNDZMMTEgMTguMTd2LTMuNzZsMS44OCAxLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29uZmlybWF0aW9uTnVtYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTBWNmEyIDIgMCAwIDAtMi0ySDRjLTEuMSAwLTEuOTkuODktMS45OSAydjRjMS4xIDAgMS45OS45IDEuOTkgMnMtLjg5IDItMiAydjRjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMnYtNGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJ6bS0yLTEuNDZjLTEuMTkuNjktMiAxLjk5LTIgMy40NnMuODEgMi43NyAyIDMuNDZWMThINHYtMi41NGMxLjE5LS42OSAyLTEuOTkgMi0zLjQ2IDAtMS40OC0uOC0yLjc3LTEuOTktMy40Nkw0IDZoMTZ2Mi41NHpNMTEgMTVoMnYyaC0yem0wLTRoMnYyaC0yem0wLTRoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGlyZWN0aW9uc09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjcxIDExLjI5LTktOWEuOTk2Ljk5NiAwIDAgMC0xLjQxIDBMOC4yMSA1LjM4bDEuNDEgMS40MUwxMiA0LjQyIDE5LjU4IDEybC0yLjM4IDIuMzggMS40MSAxLjQxIDMuMDktMy4wOWMuNC0uMzcuNC0xIC4wMS0xLjQxelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3LjV2Mi42N2wyLjE3IDIuMTdMMTYuNSAxMXpNMS4zOSA0LjIybDMuOTkgMy45OS0zLjA5IDMuMDlhLjk5Ni45OTYgMCAwIDAgMCAxLjQxbDkgOWMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsMy4wOS0zLjA5IDMuOTkgMy45OSAxLjQxLTEuNDFMMi44MSAyLjgxIDEuMzkgNC4yMnptNi42NCA2LjYzYy0uMDEuMDUtLjA0LjEtLjA0LjE1djRoMnYtMi4xOGw0LjM4IDQuMzhMMTIgMTkuNTggNC40MiAxMiA2LjggOS42MmwxLjIzIDEuMjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXNjRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgN2gydjVoLTJ6TTEwIDRjLTQuNDIgMC04IDMuNTgtOCA4czMuNTggOCA4IDggOC0zLjU4IDgtOC0zLjU4LTgtOC04em0wIDE0Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnptMTAtNGgydjJoLTJ6bS0xMC00Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvRGlzdHVyYkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyek00IDEyYzAtNC40IDMuNi04IDgtOCAxLjggMCAzLjUuNiA0LjkgMS43TDUuNyAxNi45QzQuNiAxNS41IDQgMTMuOCA0IDEyem04IDhjLTEuOCAwLTMuNS0uNi00LjktMS43TDE4LjMgNy4xQzE5LjQgOC41IDIwIDEwLjIgMjAgMTJjMCA0LjQtMy42IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9EaXN0dXJiT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzQuNDEgMCA4IDMuNTkgOCA4IDAgMS40MS0uMzcgMi43My0xLjAxIDMuODhsMS40NiAxLjQ2QTkuOTYgOS45NiAwIDAgMCAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMGE5LjkgOS45IDAgMCAwLTUuMzMgMS41NWwxLjQ2IDEuNDZBNy44ODMgNy44ODMgMCAwIDEgMTIgNHptNSA3aC0yLjg4bDIgMkgxN3pNMi40MSAyLjEzIDEgMy41NGwyLjc4IDIuNzhBOS45MiA5LjkyIDAgMCAwIDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgMi4xMSAwIDQuMDctLjY2IDUuNjgtMS43OEwyMC40NiAyM2wxLjQxLTEuNDFMMi40MSAyLjEzek0xMiAyMGMtNC40MSAwLTgtMy41OS04LTggMC0xLjU2LjQ1LTMgMS4yMy00LjIzTDguNDYgMTFIN3YyaDMuNDZsNS43NyA1Ljc3QTcuODQ2IDcuODQ2IDAgMCAxIDEyIDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9EaXN0dXJiT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0tNS05aDEwdjJIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvRGlzdHVyYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LTggMC0xLjg1LjYzLTMuNTUgMS42OS00LjlMMTYuOSAxOC4zMUE3LjkwMiA3LjkwMiAwIDAgMSAxMiAyMHptNi4zMS0zLjFMNy4xIDUuNjlBNy45MDIgNy45MDIgMCAwIDEgMTIgNGM0LjQyIDAgOCAzLjU4IDggOCAwIDEuODUtLjYzIDMuNTUtMS42OSA0Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb05vdERpc3R1cmJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJzNC41IDEwIDEwIDEwIDEwLTQuNSAxMC0xMFMxNy41IDIgMTIgMnpNNCAxMmMwLTQuNCAzLjYtOCA4LTggMS44IDAgMy41LjYgNC45IDEuN0w1LjcgMTYuOUM0LjYgMTUuNSA0IDEzLjggNCAxMnptOCA4Yy0xLjggMC0zLjUtLjYtNC45LTEuN0wxOC4zIDcuMUMxOS40IDguNSAyMCAxMC4yIDIwIDEyYzAgNC40LTMuNiA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvTm90RGlzdHVyYk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuOTQgNS4xMkM5LjE0IDQuNDEgMTAuNTIgNCAxMiA0YzQuNDEgMCA4IDMuNTkgOCA4IDAgMS40OC0uNDEgMi44Ni0xLjEyIDQuMDZsMS40NiAxLjQ2QTkuOTY3IDkuOTY3IDAgMCAwIDIyIDEyYzAtNS41Mi00LjQ4LTEwLTEwLTEwLTIuMDQgMC0zLjkzLjYxLTUuNTEgMS42NmwxLjQ1IDEuNDZ6TTIuODEgMi44MSAxLjM5IDQuMjJsMi4yNyAyLjI3QTkuOTEgOS45MSAwIDAgMCAyIDEyYzAgNS41MiA0LjQ4IDEwIDEwIDEwIDIuMDQgMCAzLjkzLS42MSA1LjUxLTEuNjZsMi4yNyAyLjI3IDEuNDEtMS40MUwyLjgxIDIuODF6TTEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOCAwLTEuNDguNDEtMi44NiAxLjEyLTQuMDZMOC4xNyAxMUg3djJoMy4xN2w1Ljg4IDUuODhBNy44NjkgNy44NjkgMCAwIDEgMTIgMjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEzLjgzIDExIDIgMkgxN3YtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvTm90RGlzdHVyYk9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMXYyaDEwdi0ySDd6bTUtOUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb05vdERpc3R1cmIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOCAwLTEuODUuNjMtMy41NSAxLjY5LTQuOUwxNi45IDE4LjMxQTcuOTAyIDcuOTAyIDAgMCAxIDEyIDIwem02LjMxLTMuMUw3LjEgNS42OUE3LjkwMiA3LjkwMiAwIDAgMSAxMiA0YzQuNDIgMCA4IDMuNTggOCA4IDAgMS44NS0uNjMgMy41NS0xLjY5IDQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURyaXZlRXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45MiA1LjAxQzE4LjcyIDQuNDIgMTguMTYgNCAxNy41IDRoLTExYy0uNjYgMC0xLjIxLjQyLTEuNDIgMS4wMUwzIDExdjhjMCAuNTUuNDUgMSAxIDFoMWMuNTUgMCAxLS40NSAxLTF2LTFoMTJ2MWMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtOGwtMi4wOC01Ljk5ek02Ljg1IDZoMTAuMjlsMS4wNCAzSDUuODFsMS4wNC0zek0xOSAxNkg1di00LjY2bC4xMi0uMzRoMTMuNzdsLjExLjM0VjE2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjcuNVwiLFwiY3lcIjpcIjEzLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2LjVcIixcImN5XCI6XCIxMy41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVuaGFuY2VkRW5jcnlwdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yek04LjkgNmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMSAxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXYySDguOVY2ek0xOCAyMEg2VjEwaDEydjEwem0tNS05aC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFdmVudEF2YWlsYWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY5aDE0djEwek01IDdWNWgxNHYySDV6bTUuNTYgMTAuNDYgNS45My01LjkzLTEuMDYtMS4wNi00Ljg3IDQuODctMi4xMS0yLjExLTEuMDYgMS4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUV2ZW50QnVzeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY5aDE0djEwek01IDdWNWgxNHYySDV6bTMuMjMgOS40MSAxLjA2IDEuMDYgMi40NC0yLjQ0IDIuNDQgMi40NCAxLjA2LTEuMDYtMi40NC0yLjQ0IDIuNDQtMi40NC0xLjA2LTEuMDYtMi40NCAyLjQ0LTIuNDQtMi40NC0xLjA2IDEuMDYgMi40NCAyLjQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXZlbnROb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzaC0xVjFoLTJ2Mkg4VjFINnYySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjloMTR2MTB6TTUgN1Y1aDE0djJINXptMiA0aDEwdjJIN3ptMCA0aDd2Mkg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRm9sZGVyU3BlY2lhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMkg0VjZoNS4xN2wyIDJIMjB2MTB6bS02LjkyLTMuOTZMMTIuMzkgMTcgMTUgMTUuNDcgMTcuNjEgMTdsLS42OS0yLjk2IDIuMy0xLjk5LTMuMDMtLjI2TDE1IDlsLTEuMTkgMi43OS0zLjAzLjI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW1hZ2VzZWFyY2hSb2xsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA3VjNjMC0uNTUtLjQ1LTEtMS0xSDdjLS41NSAwLTEgLjQ1LTEgMXYxSDRjLTEuMSAwLTIgLjktMiAydjRjMCAxLjEuOSAyIDIgMmg4djNoLTFjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi02YzAtLjU1LS40NS0xLTEtMWgtMXYtM2MwLTEuMS0uOS0yLTItMkg0VjZoMnYxYzAgLjU1LjQ1IDEgMSAxaDEyYy41NSAwIDEtLjQ1IDEtMXpNOCA0aDEwdjJIOFY0em02IDE3aC0ydi00aDJ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxpdmVUdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMHY4bDctNHptMTItNGgtNy41OGwzLjI5LTMuMjlMMTYgMmwtNCA0aC0uMDNsLTQtNC0uNjkuNzFMMTAuNTYgNkgzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTRIM1Y4aDE4djEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW1zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdMNCAxNy4xN1Y0aDE2djEyem0tNS41LThMMTEgMTIuNTEgOC41IDkuNSA1IDE0aDE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTW9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgM0g3Yy0uNjkgMC0xLjIzLjM1LTEuNTkuODhMMCAxMmw1LjQxIDguMTFjLjM2LjUzLjk3Ljg5IDEuNjYuODlIMjJjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg3LjA3TDIuNCAxMmw0LjY2LTdIMjJ2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNFwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOVwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5ldHdvcmtDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuOSA1Yy0uMTcgMC0uMzIuMDktLjQxLjIzbC0uMDcuMTUtNS4xOCAxMS42NWMtLjE2LjI5LS4yNi42MS0uMjYuOTYgMCAxLjExLjkgMi4wMSAyLjAxIDIuMDEuOTYgMCAxLjc3LS42OCAxLjk2LTEuNTlsLjAxLS4wM0wxNi40IDUuNWMwLS4yOC0uMjItLjUtLjUtLjV6TTEgOWwyIDJjMi44OC0yLjg4IDYuNzktNC4wOCAxMC41My0zLjYybDEuMTktMi42OEM5Ljg5IDMuODQgNC43NCA1LjI3IDEgOXptMjAgMiAyLTJhMTUuMzY3IDE1LjM2NyAwIDAgMC01LjU5LTMuNTdsLS41MyAyLjgyYzEuNS42MiAyLjkgMS41MyA0LjEyIDIuNzV6bS00IDQgMi0yYy0uOC0uOC0xLjctMS40Mi0yLjY2LTEuODlsLS41NSAyLjkyYy40Mi4yNy44My41OSAxLjIxLjk3ek01IDEzbDIgMmE3LjEgNy4xIDAgMCAxIDQuMDMtMmwxLjI4LTIuODhjLTIuNjMtLjA4LTUuMy44Ny03LjMxIDIuODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOZXR3b3JrTG9ja2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNnYtLjVhMi41IDIuNSAwIDAgMC01IDB2LjVjLS41NSAwLTEgLjQ1LTEgMXY0YzAgLjU1LjQ1IDEgMSAxaDVjLjU1IDAgMS0uNDUgMS0xdi00YzAtLjU1LS40NS0xLTEtMXptLTEgMGgtM3YtLjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjV2LjV6TTE4IDUuODN2NS40M2MuNDctLjE2Ljk3LS4yNiAxLjUtLjI2LjE3IDAgLjMzLjAzLjUuMDVWMUwxIDIwaDEzdi0ySDUuODNMMTggNS44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vRW5jcnlwdGlvbkdtYWlsZXJyb3JyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguOSA2YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xczMuMSAxLjM5IDMuMSAzLjF2MmgtNC42NmwyIDJIMTh2NS41NmwyIDJWMTBjMC0xLjEtLjktMi0yLTJoLTFWNmMwLTIuNzYtMi4yNC01LTUtNS0yLjMyIDAtNC4yNiAxLjU5LTQuODIgMy43NEw4LjkgNi40NlY2ek00LjQxIDQuODEgMyA2LjIybDIuMDQgMi4wNEM0LjQyIDguNiA0IDkuMjUgNCAxMHYxMGMwIDEuMS45IDIgMiAyaDEyLjc4bDEgMSAxLjQxLTEuNDFMNC40MSA0Ljgxek02IDIwVjEwaC43OGwxMCAxMEg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9FbmNyeXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjkgNmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMXMzLjEgMS4zOSAzLjEgMy4xdjJoLTQuNjZsMiAySDE4djUuNTZsMiAyVjEwYzAtMS4xLS45LTItMi0yaC0xVjZjMC0yLjc2LTIuMjQtNS01LTUtMi4zMiAwLTQuMjYgMS41OS00LjgyIDMuNzRMOC45IDYuNDZWNnpNNC40MSA0LjgxIDMgNi4yMmwyLjA0IDIuMDRDNC40MiA4LjYgNCA5LjI1IDQgMTB2MTBjMCAxLjEuOSAyIDIgMmgxMi43OGwxIDEgMS40MS0xLjQxTDQuNDEgNC44MXpNNiAyMFYxMGguNzhsMTAgMTBINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU9uZGVtYW5kVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgN3Y4bDctNHptMTItNEgzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDV2Mmg4di0yaDVjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNEgzVjVoMTh2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25hbFZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzSDNjLTEuMTEgMC0yIC44OS0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg1djJoOHYtMmg1YzEuMSAwIDEuOTktLjkgMS45OS0yTDIzIDVhMiAyIDAgMCAwLTItMnptMCAxNEgzVjVoMTh2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZUJsdWV0b290aFNwZWFrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE1LjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3LS4xLS4wMy0uMjEtLjA1LS4zMS0uMDUtLjI2IDAtLjUxLjEtLjcxLjI5bC0yLjIgMi4yYTE1LjA0NSAxNS4wNDUgMCAwIDEtNi41OS02LjU5bDIuMi0yLjIxYS45Ni45NiAwIDAgMCAuMjUtMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNNS4wMyA1aDEuNWMuMDcuODguMjIgMS43NS40NSAyLjU4bC0xLjIgMS4yMWMtLjQtMS4yMS0uNjYtMi40Ny0uNzUtMy43OXpNMTkgMTguOTdjLTEuMzItLjA5LTIuNi0uMzUtMy44LS43NmwxLjItMS4yYy44NS4yNCAxLjcyLjM5IDIuNi40NXYxLjUxek0xNC43MSA5LjUgMTcgNy4yMVYxMWguNWwyLjg1LTIuODVMMTguMjEgNmwyLjE1LTIuMTVMMTcuNSAxSDE3djMuNzlMMTQuNzEgMi41bC0uNzEuNzFMMTYuNzkgNiAxNCA4Ljc5bC43MS43MXpNMTggMi45MWwuOTQuOTQtLjk0Ljk0VjIuOTF6bTAgNC4zLjk0Ljk0LS45NC45NFY3LjIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmVDYWxsYmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTUuNTFjLTEuMjQgMC0yLjQ1LS4yLTMuNTctLjU3YS44NC44NCAwIDAgMC0uMzEtLjA1Yy0uMjYgMC0uNTEuMS0uNzEuMjlsLTIuMiAyLjJhMTUuMTQ5IDE1LjE0OSAwIDAgMS02LjU5LTYuNTlsMi4yLTIuMmMuMjgtLjI4LjM2LS42Ny4yNS0xLjAyQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjQ5YzAtLjU1LS40NS0xLTEtMXpNNS4wMyA1aDEuNWExMyAxMyAwIDAgMCAuNDYgMi41OWwtMS4yIDEuMmMtLjQxLTEuMi0uNjctMi40Ny0uNzYtMy43OXpNMTkgMTguOTdjLTEuMzItLjA5LTIuNTktLjM1LTMuOC0uNzVsMS4xOS0xLjE5Yy44NS4yNCAxLjcyLjM5IDIuNi40NXYxLjQ5ek0xOCA5aC0yLjU5bDUuMDItNS4wMi0xLjQxLTEuNDFMMTQgNy41OVY1aC0ydjZoNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lRm9yd2FyZGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNS41Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41Ny0uMS0uMDMtLjIxLS4wNS0uMzEtLjA1LS4yNiAwLS41MS4xLS43MS4yOWwtMi4yIDIuMmExNS4wNDUgMTUuMDQ1IDAgMCAxLTYuNTktNi41OWwyLjItMi4yMWEuOTYuOTYgMCAwIDAgLjI1LTFBMTEuMzYgMTEuMzYgMCAwIDEgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6TTUuMDMgNWgxLjVjLjA3Ljg4LjIyIDEuNzUuNDUgMi41OGwtMS4yIDEuMjFjLS40LTEuMjEtLjY2LTIuNDctLjc1LTMuNzl6TTE5IDE4Ljk3Yy0xLjMyLS4wOS0yLjYtLjM1LTMuOC0uNzZsMS4yLTEuMmMuODUuMjQgMS43Mi4zOSAyLjYuNDV2MS41MXpNMTggMTFsNS01LTUtNXYzaC00djRoNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBob25lSW5UYWxrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMmgyYzAtMi43Ni0yLjI0LTUtNS01djJjMS42NiAwIDMgMS4zNCAzIDN6bTQgMGgyYTkgOSAwIDAgMC05LTl2MmMzLjg3IDAgNyAzLjEzIDcgN3ptMSAzLjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3LS4xLS4wMy0uMjEtLjA1LS4zMS0uMDUtLjI2IDAtLjUxLjEtLjcxLjI5bC0yLjIgMi4yYTE1LjA0NSAxNS4wNDUgMCAwIDEtNi41OS02LjU5bDIuMi0yLjIxYS45Ni45NiAwIDAgMCAuMjUtMUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNNS4wMyA1aDEuNWMuMDcuODguMjIgMS43NS40NSAyLjU4bC0xLjIgMS4yMWMtLjQtMS4yMS0uNjYtMi40Ny0uNzUtMy43OXpNMTkgMTguOTdjLTEuMzItLjA5LTIuNi0uMzUtMy44LS43NmwxLjItMS4yYy44NS4yNCAxLjcyLjM5IDIuNi40NXYxLjUxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmVMb2NrZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1VjRjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjFoLTF2NWg2VjVoLTF6bS0xIDBoLTJWNGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjAuMiAxNC44Ny0zLjY3LS43M2MtLjUtLjEtLjgzLjItLjkuMjdsLTIuNTIgMi41Yy0yLjUtMS40My00LjU3LTMuNS02LTZsMi41LTIuNTJjLjIzLS4yNC4zMy0uNTcuMjctLjlMOS4xMyAzLjhjLS4wOS0uNDYtLjUtLjgtLjk4LS44SDRjLS41NiAwLTEuMDMuNDctMSAxLjAzLjE3IDIuODkgMS4wNSA1LjYgMi40MyA3Ljk3IDEuNTggMi43MyAzLjg1IDQuOTkgNi41NyA2LjU3IDIuMzcgMS4zNyA1LjA4IDIuMjYgNy45NyAyLjQzLjU1LjAzIDEuMDMtLjQzIDEuMDMtMXYtNC4xNWMwLS40OC0uMzQtLjg5LS44LS45OHpNNS4xIDVoMi4yM2wuNDcgMi4zNUw2LjE3IDljLS41NC0xLjMtLjktMi42My0xLjA3LTR6TTE5IDE4LjljLTEuMzctLjE4LTIuNy0uNTMtNC0xLjA3bDEuNjUtMS42MyAyLjM1LjQ3djIuMjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaG9uZU1pc3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMuNzEgMTYuNjdDMjAuNjYgMTMuNzggMTYuNTQgMTIgMTIgMTJTMy4zNCAxMy43OC4yOSAxNi42N2MtLjE4LjE4LS4yOS40My0uMjkuNzEgMCAuMjguMTEuNTMuMjkuNzFsMi40OCAyLjQ4Yy4xOC4xOC40My4yOS43MS4yOS4yNyAwIC41Mi0uMTEuNy0uMjguNzktLjc0IDEuNjktMS4zNiAyLjY2LTEuODUuMzMtLjE2LjU2LS41LjU2LS45di0zLjFjMS40NS0uNDggMy0uNzMgNC42LS43M3MzLjE1LjI1IDQuNi43MnYzLjFjMCAuMzkuMjMuNzQuNTYuOS45OC40OSAxLjg3IDEuMTIgMi42NyAxLjg1LjE4LjE4LjQzLjI4LjcuMjguMjggMCAuNTMtLjExLjcxLS4yOWwyLjQ4LTIuNDhjLjE4LS4xOC4yOS0uNDMuMjktLjcxIDAtLjI4LS4xMi0uNTItLjMtLjd6bS0xOC4zMS41NmMtLjY2LjM3LTEuMjkuOC0xLjg3IDEuMjdsLTEuMDctMS4wN2MuOTEtLjc1IDEuOS0xLjM5IDIuOTUtMS45djEuN3ptMTUuMDggMS4yNmMtLjYtLjQ4LTEuMjItLjktMS44OC0xLjI3di0xLjdjMS4wNS41MSAyLjAzIDEuMTUgMi45NSAxLjlsLTEuMDcgMS4wN3pNNyA2LjQzbDQuOTQgNC45NCA3LjA3LTcuMDctMS40MS0xLjQyLTUuNjYgNS42Nkw4LjQgNUgxMVYzSDV2NmgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGhvbmVQYXVzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNTQgNWMuMDYuODguMjEgMS43NS40NCAyLjU4bC0xLjIgMS4yMWMtLjQtMS4yMS0uNjYtMi40Ny0uNzUtMy43OWgxLjUxbTkuODYgMTIuMDFjLjg1LjI0IDEuNzIuMzkgMi42LjQ1djEuNWMtMS4zMi0uMDktMi42LS4zNS0zLjgtLjc2bDEuMi0xLjE5TTcuNSAzSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTEtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTctLjEtLjAzLS4yMS0uMDUtLjMxLS4wNS0uMjYgMC0uNTEuMS0uNzEuMjlsLTIuMiAyLjJhMTUuMDQ1IDE1LjA0NSAwIDAgMS02LjU5LTYuNTlsMi4yLTIuMjFhLjk2Ljk2IDAgMCAwIC4yNS0xQTExLjM2IDExLjM2IDAgMCAxIDguNSA0YzAtLjU1LS40NS0xLTEtMXpNMTUgM2gydjdoLTJ6bTQgMGgydjdoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb3dlck9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgM0g4djEuODhsMiAyem02IDZ2My44OGwxLjggMS44LjItLjJWOWMwLTEuMS0uOS0yLTItMlYzaC0ydjRoLTMuODhsMiAySDE2ek00LjEyIDMuODQgMi43MSA1LjI1IDYgOC41NHY1Ljk2TDkuNSAxOHYzaDV2LTNsLjQ4LS40OCA0LjQ3IDQuNDcgMS40MS0xLjQxTDQuMTIgMy44NHptOC4zOCAxMy4zM1YxOWgtMXYtMS44M0w4IDEzLjY1di0zLjExbDUuNTcgNS41Ny0xLjA3IDEuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOXY0LjY2bC0zLjUgMy41MVYxOWgtMXYtMS44M0w4IDEzLjY1VjloOG0wLTZoLTJ2NGgtNFYzSDh2NGgtLjAxQzYuOSA2Ljk5IDYgNy44OSA2IDguOTh2NS41Mkw5LjUgMTh2M2g1di0zbDMuNS0zLjUxVjljMC0xLjEtLjktMi0yLTJWM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVByaW9yaXR5SGlnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE5XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDNoNHYxMmgtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJ1bm5pbmdXaXRoRXJyb3JzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTB2OGgtMnYtOGgyem0tMiAxMHYyaDJ2LTJoLTJ6bS0yLTIuNzFBNy45OSA3Ljk5IDAgMCAxIDEyIDIwYy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04djlsNy41NS03LjU1QTkuOTY1IDkuOTY1IDAgMCAwIDEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTBjMi4yNSAwIDQuMzMtLjc0IDYtMnYtMi43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNkQ2FyZEFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyaC04TDQuMDIgOCA0IDIwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxOEg2VjguODNMMTAuODMgNEgxOHYxNnptLTctNWgydjJoLTJ6bTAtN2gydjVoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJoLThMNCA4djEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxOEg2VjguODNMMTAuODMgNEgxOHYxNnpNOSA3aDJ2NEg5em0zIDBoMnY0aC0yem0zIDBoMnY0aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2ltQ2FyZEFsZXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMmgtOEw0LjAyIDggNCAyMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMThINlY4LjgzTDEwLjgzIDRIMTh2MTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE1aDJ2MmgtMnpNMTEgOGgydjVoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbXNGYWlsZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MThsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRINS4xN0w0IDE3LjE3VjRoMTZ2MTJ6bS05LTRoMnYyaC0yem0wLTZoMnY0aC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU21zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE4bDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdMNCAxNy4xN1Y0aDE2djEyek03IDloMnYySDd6bTggMGgydjJoLTJ6bS00IDBoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3VwcG9ydEFnZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTIuMjJDMjEgNi43MyAxNi43NCAzIDEyIDNjLTQuNjkgMC05IDMuNjUtOSA5LjI4LS42LjM0LTEgLjk4LTEgMS43MnYyYzAgMS4xLjkgMiAyIDJoMXYtNi4xYzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDdWMTloLTh2Mmg4YzEuMSAwIDItLjkgMi0ydi0xLjIyYy41OS0uMzEgMS0uOTIgMS0xLjY0di0yLjNjMC0uNy0uNDEtMS4zMS0xLTEuNjJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxMS4wM0E2LjA0IDYuMDQgMCAwIDAgMTIuMDUgNmMtMy4wMyAwLTYuMjkgMi41MS02LjAzIDYuNDVhOC4wNzUgOC4wNzUgMCAwIDAgNC44Ni01Ljg5YzEuMzEgMi42MyA0IDQuNDQgNy4xMiA0LjQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3luY0Rpc2FibGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA2LjM1VjQuMjZjLS42Ni4xNy0xLjI5LjQzLTEuODguNzVsMS41IDEuNWMuMTMtLjA1LjI1LS4xMS4zOC0uMTZ6TTIwIDEyYzAtMi4yMS0uOTEtNC4yLTIuMzYtNS42NEwyMCA0aC02djZsMi4yNC0yLjI0QTYuMDAzIDYuMDAzIDAgMCAxIDE4IDEyYzAgLjg1LS4xOSAxLjY1LS41MSAyLjM4bDEuNSAxLjVBNy45MjEgNy45MjEgMCAwIDAgMjAgMTJ6TTQuMjcgNCAyLjg2IDUuNDFsMi4zNiAyLjM2YTcuOTI1IDcuOTI1IDAgMCAwIDEuMTQgOS44N0w0IDIwaDZ2LTZsLTIuMjQgMi4yNEE2LjAwMyA2LjAwMyAwIDAgMSA2IDEyYzAtMSAuMjUtMS45NC42OC0yLjc3bDguMDggOC4wOGMtLjI1LjEzLS41LjI0LS43Ni4zNHYyLjA5Yy44LS4yMSAxLjU1LS41NCAyLjIzLS45NmwyLjU4IDIuNTggMS40MS0xLjQxTDQuMjcgNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN5bmNMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgNC4yNnYyLjA5QzcuNjcgNy4xOCA2IDkuMzkgNiAxMmMwIDEuNzcuNzggMy4zNCAyIDQuNDRWMTRoMnY2SDR2LTJoMi43M0E3Ljk0MiA3Ljk0MiAwIDAgMSA0IDEyYzAtMy43MyAyLjU1LTYuODUgNi03Ljc0ek0yMCA0aC02djZoMlY3LjU2YzEuMjIgMS4xIDIgMi42NyAyIDQuNDRoMmMwLTIuNC0xLjA2LTQuNTQtMi43My02SDIwVjR6bTAgMTN2LTFjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjFjLS41NSAwLTEgLjQ1LTEgMXYzYzAgLjU1LjQ1IDEgMSAxaDRjLjU1IDAgMS0uNDUgMS0xdi0zYzAtLjU1LS40NS0xLTEtMXptLTEgMGgtMnYtMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN5bmNQcm9ibGVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDEyYzAgMi4yMS45MSA0LjIgMi4zNiA1LjY0TDMgMjBoNnYtNmwtMi4yNCAyLjI0QTYuMDAzIDYuMDAzIDAgMCAxIDUgMTJhNS45OSA1Ljk5IDAgMCAxIDQtNS42NVY0LjI2QzUuNTUgNS4xNSAzIDguMjcgMyAxMnptOCA1aDJ2LTJoLTJ2MnpNMjEgNGgtNnY2bDIuMjQtMi4yNEE2LjAwMyA2LjAwMyAwIDAgMSAxOSAxMmE1Ljk5IDUuOTkgMCAwIDEtNCA1LjY1djIuMDljMy40NS0uODkgNi00LjAxIDYtNy43NCAwLTIuMjEtLjkxLTQuMi0yLjM2LTUuNjRMMjEgNHptLTEwIDloMlY3aC0ydjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTeW5jIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0uMDEgMGgyNHYyNGgtMjRWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNFYxTDggNWw0IDRWNmMzLjMxIDAgNiAyLjY5IDYgNiAwIDEuMDEtLjI1IDEuOTctLjcgMi44bDEuNDYgMS40NkE3LjkzIDcuOTMgMCAwIDAgMjAgMTJjMC00LjQyLTMuNTgtOC04LTh6bTAgMTRjLTMuMzEgMC02LTIuNjktNi02IDAtMS4wMS4yNS0xLjk3LjctMi44TDUuMjQgNy43NEE3LjkzIDcuOTMgMCAwIDAgNCAxMmMwIDQuNDIgMy41OCA4IDggOHYzbDQtNC00LTR2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN5c3RlbVVwZGF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMS4wMSA3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMTlIN1Y1aDEwdjE0em0tMS02aC0zVjhoLTJ2NUg4bDQgNCA0LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUYXBBbmRQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE2djJjMi43NiAwIDUgMi4yNCA1IDVoMmMwLTMuODctMy4xMy03LTctN3ptMCA0djNoM2MwLTEuNjYtMS4zNC0zLTMtM3ptMC04djJhOSA5IDAgMCAxIDkgOWgyYzAtNi4wOC00LjkyLTExLTExLTExek0xNyAxLjAxIDcgMWMtMS4xIDAtMiAuOS0yIDJ2Ny4zN2MuNjkuMTYgMS4zNi4zNyAyIC42NFY1aDEwdjEzaC0zLjAzYy41MiAxLjI1Ljg0IDIuNTkuOTUgNEgxN2MxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGltZVRvTGVhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjkyIDUuMDFDMTguNzIgNC40MiAxOC4xNiA0IDE3LjUgNGgtMTFjLS42NiAwLTEuMjEuNDItMS40MiAxLjAxTDMgMTF2OGMwIC41NS40NSAxIDEgMWgxYy41NSAwIDEtLjQ1IDEtMXYtMWgxMnYxYzAgLjU1LjQ1IDEgMSAxaDFjLjU1IDAgMS0uNDUgMS0xdi04bC0yLjA4LTUuOTl6TTYuODUgNmgxMC4yOWwxLjA0IDNINS44MWwxLjA0LTN6TTE5IDE2SDV2LTQuNjZsLjEyLS4zNGgxMy43N2wuMTEuMzRWMTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNy41XCIsXCJjeVwiOlwiMTMuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTYuNVwiLFwiY3lcIjpcIjEzLjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHZPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDd2MTAuODhsMS44NSAxLjg1Yy4wOS0uMjMuMTUtLjQ3LjE1LS43M1Y3YzAtMS4xMS0uODktMi0yLTJoLTcuNThsMy4yOS0zLjNMMTYgMWwtNCA0LTQtNC0uNy43TDEwLjU4IDVIOC4xMmwyIDJIMjF6bS0uNTQgMTYgMS4yNi0xLjI3LTEuMjYgMS4yNnpNMi40MSAyLjEzbC0uMTQuMTRMMSAzLjU0bDEuNTMgMS41M0MxLjY1IDUuMjggMSA2LjA2IDEgN3YxMmMwIDEuMS45IDIgMiAyaDE1LjQ2bDEuOTkgMS45OSAxLjI2LTEuMjYuMTUtLjE1TDIuNDEgMi4xM3pNMyAxOVY3aDEuNDZsMTIgMTJIM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpYnJhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxNWgyVjlIMHY2em0zIDJoMlY3SDN2MTB6bTE5LTh2NmgyVjloLTJ6bS0zIDhoMlY3aC0ydjEwek0xNi41IDNoLTlDNi42NyAzIDYgMy42NyA2IDQuNXYxNWMwIC44My42NyAxLjUgMS41IDEuNWg5Yy44MyAwIDEuNS0uNjcgMS41LTEuNXYtMTVjMC0uODMtLjY3LTEuNS0xLjUtMS41ek0xNiAxOUg4VjVoOHYxNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpZGVvQ2hhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDUuMTdMNCAxNy4xN1Y0aDE2djEyelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE0aDZjLjU1IDAgMS0uNDUgMS0xdi0xLjk5TDE3IDEzVjdsLTIgMS45OVY3YzAtLjU1LS40NS0xLTEtMUg4Yy0uNTUgMC0xIC40NS0xIDF2NmMwIC41NS40NSAxIDEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZvaWNlQ2hhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTRINS4xN0w0IDE3LjE3VjRoMTZ2MTJ6bS02LTUuNCAzIDIuNFY3bC0zIDIuNFY3SDd2Nmg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVnBuTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTIgMTJjLjA0LjMzLjA4LjY2LjA4IDEgMCAyLjA4LS44IDMuOTctMi4xIDUuMzktLjI2LS44MS0xLTEuMzktMS45LTEuMzloLTF2LTNjMC0uNTUtLjQ1LTEtMS0xSDd2LTJoMmMuNTUgMCAxLS40NSAxLTFWOGgyYzEuMSAwIDItLjkgMi0yVjMuNDZjLS45NS0uMy0xLjk1LS40Ni0zLS40NkM1LjQ4IDMgMSA3LjQ4IDEgMTNzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwYzAtLjM0LS4wMi0uNjctLjA1LTFoLTIuMDN6TTEwIDIwLjkzYy0zLjk1LS40OS03LTMuODUtNy03LjkzIDAtLjYyLjA4LTEuMjEuMjEtMS43OUw4IDE2djFjMCAxLjEuOSAyIDIgMnYxLjkzek0yMiA0di0uNWEyLjUgMi41IDAgMCAwLTUgMFY0Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWg1Yy41NSAwIDEtLjQ1IDEtMVY1YzAtLjU1LS40NS0xLTEtMXptLTEgMGgtM3YtLjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVWNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0uMDEgMGgyNHYyNGgtMjRWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41IDIydi03LjVINFY5YzAtMS4xLjktMiAyLTJoM2MxLjEgMCAyIC45IDIgMnY1LjVIOS41VjIyaC00ek0xOCAyMnYtNmgzbC0yLjU0LTcuNjNBMi4wMSAyLjAxIDAgMCAwIDE2LjU2IDdoLS4xMmEyIDIgMCAwIDAtMS45IDEuMzdMMTIgMTZoM3Y2aDN6TTcuNSA2YzEuMTEgMCAyLS44OSAyLTJzLS44OS0yLTItMi0yIC44OS0yIDIgLjg5IDIgMiAyem05IDBjMS4xMSAwIDItLjg5IDItMnMtLjg5LTItMi0yLTIgLjg5LTIgMiAuODkgMiAyIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXaWZpT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMSAxMSAyLTJjLTMuNzMtMy43My04Ljg3LTUuMTUtMTMuNy00LjMxbDIuNTggMi41OGMzLjMtLjAyIDYuNjEgMS4yMiA5LjEyIDMuNzN6bS0yIDJhOS44OTUgOS44OTUgMCAwIDAtMy43Mi0yLjMzbDMuMDIgMy4wMi43LS42OXpNOSAxN2wzIDMgMy0zYTQuMjM3IDQuMjM3IDAgMCAwLTYgMHpNMy40MSAxLjY0IDIgMy4wNSA1LjA1IDYuMUMzLjU5IDYuODMgMi4yMiA3Ljc5IDEgOWwyIDJjMS4yMy0xLjIzIDIuNjUtMi4xNiA0LjE3LTIuNzhsMi4yNCAyLjI0QTkuODIzIDkuODIzIDAgMCAwIDUgMTNsMiAyYTYuOTk5IDYuOTk5IDAgMCAxIDQuODktMi4wNmw3LjA4IDcuMDggMS40MS0xLjQxTDMuNDEgMS42NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdpZmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEgOSAyIDJjNC45Ny00Ljk3IDEzLjAzLTQuOTcgMTggMGwyLTJDMTYuOTMgMi45MyA3LjA4IDIuOTMgMSA5em04IDggMyAzIDMtM2E0LjIzNyA0LjIzNyAwIDAgMC02IDB6bS00LTQgMiAyYTcuMDc0IDcuMDc0IDAgMCAxIDEwIDBsMi0yQzE1LjE0IDkuMTQgOC44NyA5LjE0IDUgMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBY1VuaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDExaC00LjE3bDMuMjQtMy4yNC0xLjQxLTEuNDJMMTUgMTFoLTJWOWw0LjY2LTQuNjYtMS40Mi0xLjQxTDEzIDYuMTdWMmgtMnY0LjE3TDcuNzYgMi45MyA2LjM0IDQuMzQgMTEgOXYySDlMNC4zNCA2LjM0IDIuOTMgNy43NiA2LjE3IDExSDJ2Mmg0LjE3bC0zLjI0IDMuMjQgMS40MSAxLjQyTDkgMTNoMnYybC00LjY2IDQuNjYgMS40MiAxLjQxTDExIDE3LjgzVjIyaDJ2LTQuMTdsMy4yNCAzLjI0IDEuNDItMS40MUwxMyAxNXYtMmgybDQuNjYgNC42NiAxLjQxLTEuNDJMMTcuODMgMTNIMjJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBaXJwb3J0U2h1dHRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNUgzYTIgMiAwIDAgMC0yIDJ2OWgyYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTNoNmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zaDJ2LTVsLTYtNnptLTIgMmgxbDMgM2gtNFY3ek05IDdoNHYzSDlWN3pNMyA3aDR2M0gzVjd6bTMgMTAuMjVhMS4yNSAxLjI1IDAgMSAxIDAtMi41IDEuMjUgMS4yNSAwIDAgMSAwIDIuNXptMTIgMGExLjI1IDEuMjUgMCAxIDEgMC0yLjUgMS4yNSAxLjI1IDAgMCAxIDAgMi41ek0yMSAxNGgtLjc4Yy0uNTUtLjYxLTEuMzQtMS0yLjIyLTFzLTEuNjcuMzktMi4yMiAxSDguMjJjLS41NS0uNjEtMS4zMy0xLTIuMjItMXMtMS42Ny4zOS0yLjIyIDFIM3YtMmgxOHYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWxsSW5jbHVzaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC42IDYuNjJjLTEuNDQgMC0yLjguNTYtMy43NyAxLjUzTDcuOCAxNC4zOWMtLjY0LjY0LTEuNDkuOTktMi40Ljk5LTEuODcgMC0zLjM5LTEuNTEtMy4zOS0zLjM4UzMuNTMgOC42MiA1LjQgOC42MmMuOTEgMCAxLjc2LjM1IDIuNDQgMS4wM2wxLjEzIDEgMS41MS0xLjM0TDkuMjIgOC4yQTUuMzcgNS4zNyAwIDAgMCA1LjQgNi42MkMyLjQyIDYuNjIgMCA5LjA0IDAgMTJzMi40MiA1LjM4IDUuNCA1LjM4YzEuNDQgMCAyLjgtLjU2IDMuNzctMS41M2w3LjAzLTYuMjRjLjY0LS42NCAxLjQ5LS45OSAyLjQtLjk5IDEuODcgMCAzLjM5IDEuNTEgMy4zOSAzLjM4cy0xLjUyIDMuMzgtMy4zOSAzLjM4Yy0uOSAwLTEuNzYtLjM1LTIuNDQtMS4wM2wtMS4xNC0xLjAxLTEuNTEgMS4zNCAxLjI3IDEuMTJhNS4zODYgNS4zODYgMCAwIDAgMy44MiAxLjU3YzIuOTggMCA1LjQtMi40MSA1LjQtNS4zOHMtMi40Mi01LjM3LTUuNC01LjM3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQXBhcnRtZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTFWM0g3djRIM3YxNGg4di00aDJ2NGg4VjExaC00ek03IDE5SDV2LTJoMnYyem0wLTRINXYtMmgydjJ6bTAtNEg1VjloMnYyem00IDRIOXYtMmgydjJ6bTAtNEg5VjloMnYyem0wLTRIOVY1aDJ2MnptNCA4aC0ydi0yaDJ2MnptMC00aC0yVjloMnYyem0wLTRoLTJWNWgydjJ6bTQgMTJoLTJ2LTJoMnYyem0wLTRoLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmFieUNoYW5naW5nU3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDh2MmgtM0w4LjMxIDguODIgNyAxMi43NVYyMkgzVjEybDEuNTgtNC42M0EyLjAwMyAyLjAwMyAwIDAgMSA3LjMgNi4xOGw0LjE1IDEuODNMMTQgOHpNOCAxYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMSAxOGgxMnYtMkg5djJ6bTEwLjUtM2MuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNS42NyAxLjUgMS41IDEuNXpNMTMgMTJjMC0uNTUtLjQ1LTEtMS0xSDl2MmgydjFjMCAxLjEuOSAyIDIgMmgyYzEuMSAwIDItLjkgMi0ydi0zaC0ydjJoLTJ2LTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYWNrcGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNC4xNFYyaC0zdjJoLTRWMkg3djIuMTRjLTEuNzIuNDUtMyAyLTMgMy44NnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjhjMC0xLjg2LTEuMjgtMy40MS0zLTMuODZ6TTE4IDIwSDZWOGMwLTEuMS45LTIgMi0yaDhjMS4xIDAgMiAuOSAyIDJ2MTJ6bS0xLjUtOHY0aC0ydi0yaC03di0yaDl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMHYyNGgyNFYwSDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYWxjb255IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTB2Mkg4di0yaDJ6bTYgMnYtMmgtMnYyaDJ6bTUgMnY4SDN2LThoMXYtNGMwLTQuNDIgMy41OC04IDgtOHM4IDMuNTggOCA4djRoMXpNNyAxNkg1djRoMnYtNHptNCAwSDl2NGgydi00em0wLTExLjkyQzguMTYgNC41NiA2IDcuMDMgNiAxMHY0aDVWNC4wOHpNMTMgMTRoNXYtNGMwLTIuOTctMi4xNi01LjQ0LTUtNS45MlYxNHptMiAyaC0ydjRoMnYtNHptNCAwaC0ydjRoMnYtNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdGh0dWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjdcIixcImN5XCI6XCI3XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEzVjQuODNDMjAgMy4yNyAxOC43MyAyIDE3LjE3IDJjLS43NSAwLTEuNDcuMy0yIC44M2wtMS4yNSAxLjI1Yy0uMTYtLjA1LS4zMy0uMDgtLjUxLS4wOC0uNCAwLS43Ny4xMi0xLjA4LjMybDIuNzYgMi43NmMuMi0uMzEuMzItLjY4LjMyLTEuMDggMC0uMTgtLjAzLS4zNC0uMDctLjUxbDEuMjUtMS4yNWEuODI4LjgyOCAwIDAgMSAxLjQxLjU5VjEzaC02Ljg1Yy0uMy0uMjEtLjU3LS40NS0uODItLjcybC0xLjQtMS41NWMtLjE5LS4yMS0uNDMtLjM4LS42OS0uNUEyLjI1MSAyLjI1MSAwIDAgMCA1IDEyLjI1VjEzSDJ2NmMwIDEuMS45IDIgMiAyIDAgLjU1LjQ1IDEgMSAxaDE0Yy41NSAwIDEtLjQ1IDEtMSAxLjEgMCAyLS45IDItMnYtNmgtMnptMCA2SDR2LTRoMTZ2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJlYWNoQWNjZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMSAxOS41Ny0xLjQyNyAxLjQyOC02LjQ0Mi02LjQ0MiAxLjQzLTEuNDI4ek0xMy4xMiAzYy0yLjU4IDAtNS4xNi45OC03LjE0IDIuOTVsLS4wMS4wMWMtMy45NSAzLjk1LTMuOTUgMTAuMzYgMCAxNC4zMWwxNC4zLTE0LjMxQTEwLjA4NiAxMC4wODYgMCAwIDAgMTMuMTIgM3pNNi4xNCAxNy4yN2E4LjA2MyA4LjA2MyAwIDAgMS0uNjgtNi44MmMuMTkgMS45MS44OSAzLjc5IDIuMDcgNS40NGwtMS4zOSAxLjM4em0yLjg0LTIuODRDNy42MyAxMi4zOCA3LjEyIDkuOTMgNy42IDcuNmMuNTgtLjEyIDEuMTYtLjE4IDEuNzUtLjE4IDEuOCAwIDMuNTUuNTUgNS4wOCAxLjU2bC01LjQ1IDUuNDV6bTEuNDctOC45N2E4LjA2MyA4LjA2MyAwIDAgMSA2LjgyLjY4bC0xLjM5IDEuMzlhMTEuMjUgMTEuMjUgMCAwIDAtNS40My0yLjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmVudG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1SDRjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCA2aC02VjdoNnY0ek00IDdoOHYxMEg0Vjd6bTEwIDEwdi00aDZ2NGgtNnptLTQuNS01YzAgLjgzLS42NyAxLjUtMS41IDEuNXMtMS41LS42Ny0xLjUtMS41LjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQnVuZ2Fsb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxNGgtMnYtMmgydjJ6bTUuMSAyLjU2TDE3IDE0Ljc5VjIxSDd2LTYuMmwtMS4xIDEuNzYtMS43LTEuMDZMMTIgM2w3LjggMTIuNS0xLjcgMS4wNnpNMTUgMTEuNTlsLTMtNC44LTMgNC44VjE5aDJ2LTNoMnYzaDJ2LTcuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCdXNpbmVzc0NlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgN2gtNFY1bC0yLTJoLTRMOCA1djJINGMtMS4xIDAtMiAuOS0yIDJ2NWMwIC43NS40IDEuMzggMSAxLjczVjE5YzAgMS4xMS44OSAyIDIgMmgxNGMxLjExIDAgMi0uODkgMi0ydi0zLjI4Yy41OS0uMzUgMS0uOTkgMS0xLjcyVjljMC0xLjEtLjktMi0yLTJ6TTEwIDVoNHYyaC00VjV6TTQgOWgxNnY1aC01di0zSDl2M0g0Vjl6bTkgNmgtMnYtMmgydjJ6bTYgNEg1di0zaDR2MWg2di0xaDR2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhYmluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMWMwIDEuNjYtMS4zNCAzLTMgMy0uNTUgMC0xIC40NS0xIDFINGMwLTEuNjYgMS4zNC0zIDMtMyAuNTUgMCAxLS40NSAxLTFoMnptMiAyTDYgNy41OFY2SDR2My4xMUwxIDExLjRsMS4yMSAxLjU5TDQgMTEuNjJWMjFoMTZ2LTkuMzhsMS43OSAxLjM2TDIzIDExLjQgMTIgM3ptMS45NCA0aC0zLjg5TDEyIDUuNTIgMTMuOTQgN3ptLTYuNSAyaDkuMTJMMTggMTAuMXYuOUg2di0uOUw3LjQ0IDl6TTE4IDEzdjJINnYtMmgxMnpNNiAxOXYtMmgxMnYySDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYXJwZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS43MyAxNC4yMyA3IDEuNSAzLjExIDUuMzlsOC4xMyAxMS42N2MtLjc4Ljc4LS43OCAyLjA1IDAgMi44M2wxLjQxIDEuNDFjLjc4Ljc4IDIuMDUuNzggMi44MyAwbDQuMjQtNC4yNGMuNzktLjc4Ljc5LTIuMDUuMDEtMi44M3pNNS43MSA1LjYyIDcgNC4zM2w4LjQ5IDguNDktMi44MSAyLjgxTDUuNzEgNS42MnptOC4zNiAxNC4yNi0xLjQxLTEuNDEgNC4yNC00LjI0IDEuNDEgMS40MS00LjI0IDQuMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYXNpbm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNy41XCIsXCJjeVwiOlwiMTYuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNy41XCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNi41XCIsXCJjeVwiOlwiMTYuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTYuNVwiLFwiY3lcIjpcIjcuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGFsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDE1IDEwIDcuNSAyLjUgMTVsMS40MSAxLjQxTDUgMTUuMzNWMjBoMTB2LTQuNjdsMS4wOSAxLjA5TDE3LjUgMTV6TTEzIDE4aC0ydi0zSDl2M0g3di00LjY3bDMtMyAzIDNWMTh6bTktMTAuNWgtMS4xOWwuNzUuNzUtLjcxLjcxLTEuNDYtMS40NmgtLjg5di44OWwxLjQ1IDEuNDUtLjcxLjcxLS43NC0uNzRWMTFoLTFWOS44MWwtLjc1Ljc1LS43MS0uNzEgMS40NS0xLjQ1di0uOWgtLjg5bC0xLjQ1IDEuNDUtLjcxLS43MS43NS0uNzVIMTR2LTFoMS4xOWwtLjc1LS43NS43MS0uNzEgMS40NSAxLjQ1aC44OXYtLjg3bC0xLjQ1LTEuNDUuNzEtLjcxLjc1Ljc1VjNoMXYxLjE5bC43NS0uNzUuNzEuNzEtMS40NiAxLjQ2di44OWguODlsMS40NS0xLjQ1LjcxLjcxLS43NC43NEgyMnYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hhcmdpbmdTdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuNSAxMS0zIDZ2LTRoLTJsMy02djRoMnpNMTcgM0g3djFoMTBWM20wIDE3SDd2MWgxMHYtMW0wLTE5YzEuMSAwIDIgLjkgMiAydjE4YzAgMS4xLS45IDItMiAySDdjLTEuMSAwLTItLjktMi0yVjNjMC0xLjEuOS0yIDItMmgxMHpNNyAxOGgxMFY2SDd2MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDaGVja3Jvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS42IDE4LjIgMTMgMTEuNzV2LS45MWEzLjQ5NiAzLjQ5NiAwIDAgMC0uMTgtNi43NUEzLjUxIDMuNTEgMCAwIDAgOC41IDcuNWgyYzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41YzAgLjg0LS42OSAxLjUyLTEuNTMgMS41LS41NC0uMDEtLjk3LjQ1LS45Ny45OXYxLjc2TDIuNCAxOC4yYy0uNzcuNTgtLjM2IDEuOC42IDEuOGgxOGMuOTYgMCAxLjM3LTEuMjIuNi0xLjh6TTYgMThsNi00LjUgNiA0LjVINnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoaWxkQ2FyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNC41XCIsXCJjeVwiOlwiMTAuNVwiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjkuNVwiLFwiY3lcIjpcIjEwLjVcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuOTQgMTEuMzRhNC4wMDggNC4wMDggMCAwIDAtMi44MS0zLjE3IDkuMTE0IDkuMTE0IDAgMCAwLTIuMTktMi45MUMxNi4zNiAzLjg1IDE0LjI4IDMgMTIgM3MtNC4zNi44NS01Ljk0IDIuMjZjLS45Mi44MS0xLjY3IDEuOC0yLjE5IDIuOTFhMy45OTQgMy45OTQgMCAwIDAtMi44MSAzLjE3Yy0uMDQuMjEtLjA2LjQzLS4wNi42NiAwIC4yMy4wMi40NS4wNi42NmE0LjAwOCA0LjAwOCAwIDAgMCAyLjgxIDMuMTcgOC45NzcgOC45NzcgMCAwIDAgMi4xNyAyLjg5QzcuNjIgMjAuMTQgOS43MSAyMSAxMiAyMXM0LjM4LS44NiA1Ljk3LTIuMjhjLjktLjggMS42NS0xLjc5IDIuMTctMi44OWEzLjk5OCAzLjk5OCAwIDAgMCAyLjgtMy4xN2MuMDQtLjIxLjA2LS40My4wNi0uNjYgMC0uMjMtLjAyLS40NS0uMDYtLjY2ek0xOSAxNGMtLjEgMC0uMTktLjAyLS4yOS0uMDMtLjIuNjctLjQ5IDEuMjktLjg2IDEuODZDMTYuNiAxNy43NCAxNC40NSAxOSAxMiAxOXMtNC42LTEuMjYtNS44NS0zLjE3Yy0uMzctLjU3LS42Ni0xLjE5LS44Ni0xLjg2LS4xLjAxLS4xOS4wMy0uMjkuMDMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJjLjEgMCAuMTkuMDIuMjkuMDMuMi0uNjcuNDktMS4yOS44Ni0xLjg2QzcuNCA2LjI2IDkuNTUgNSAxMiA1czQuNiAxLjI2IDUuODUgMy4xN2MuMzcuNTcuNjYgMS4xOS44NiAxLjg2LjEtLjAxLjE5LS4wMy4yOS0uMDMgMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyem0tNyAzYzIuMDEgMCAzLjc0LTEuMjMgNC41LTNoLTljLjc2IDEuNzcgMi40OSAzIDQuNSAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hpbGRGcmllbmRseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMnY4aDhjMC00LjQyLTMuNTgtOC04LTh6bTIgNlY0LjM0YzEuNy42IDMuMDUgMS45NSAzLjY2IDMuNjZIMTV6bS04LjU2IDMtLjk1LTJIMnYyaDIuMjJzMS44OSA0LjA3IDIuMTIgNC40MmMtMS4xLjU5LTEuODQgMS43NS0xLjg0IDMuMDhDNC41IDIwLjQzIDYuMDcgMjIgOCAyMmMxLjc2IDAgMy4yMi0xLjMgMy40Ni0zaDIuMDhjLjI0IDEuNyAxLjcgMyAzLjQ2IDMgMS45MyAwIDMuNS0xLjU3IDMuNS0zLjUgMC0xLjA0LS40Ni0xLjk3LTEuMTgtMi42MUE3Ljk0OCA3Ljk0OCAwIDAgMCAyMSAxMUg2LjQ0ek04IDIwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNy4xNyAxNyA4IDE3czEuNS42NyAxLjUgMS41UzguODMgMjAgOCAyMHptOSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuMTcgMTcgMTcgMTdzMS41LjY3IDEuNSAxLjVTMTcuODMgMjAgMTcgMjB6bS43NC01LjM0LS4yOS4zN0EzLjUwNSAzLjUwNSAwIDAgMCAxMy44NCAxN2gtMi42OGMtLjUtMS4wNC0xLjUtMS44LTIuNjgtMS45N2wtLjQ0LS42N2MtLjEtLjE3LS4zNC0uNjktLjY3LTEuMzZoMTEuMjljLS4yMS41OS0uNTIgMS4xNS0uOTIgMS42NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvcnBvcmF0ZUZhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3VjNIMnYxOGgyMFY3SDEyem0tMiAxMkg0di0yaDZ2MnptMC00SDR2LTJoNnYyem0wLTRINFY5aDZ2MnptMC00SDRWNWg2djJ6bTEwIDEyaC04VjloOHYxMHptLTItOGgtNHYyaDR2LTJ6bTAgNGgtNHYyaDR2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb3R0YWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMyA2IDcuNThWNkg0djMuMTFMMSAxMS40bDEuMjEgMS41OUw0IDExLjYyVjIxaDE2di05LjM4bDEuNzkgMS4zNkwyMyAxMS40IDEyIDN6bTYgMTZoLTV2LTRoLTJ2NEg2di04LjlsNi00LjU4IDYgNC41OFYxOXpNMTAgMWMwIDEuNjYtMS4zNCAzLTMgMy0uNTUgMC0xIC40NS0xIDFINGMwLTEuNjYgMS4zNC0zIDMtMyAuNTUgMCAxLS40NSAxLTFoMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvdW50ZXJ0b3BzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTBoLTRWN2MwLTEuNjYtMS4zNC0zLTMtM3MtMyAxLjM0LTMgM2gyYzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYzSDhjMS4xIDAgMi0uOSAyLTJWNEg0djRjMCAxLjEuOSAyIDIgMkgydjJoMnY4aDE2di04aDJ2LTJ6TTYgNmgydjJINlY2em0wIDEydi02aDV2Nkg2em0xMiAwaC01di02aDV2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNyaWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5aC02VjRIOEM1Ljc5IDQgNCA1Ljc5IDQgOHY2YzAgMS4xLjkgMiAyIDJoMnYyLjkzYy0uNjEtLjM1LTEuMTYtLjc4LTEuNjUtMS4yN2wtMS40MiAxLjQyQzYuNzQgMjAuODggOS4yNCAyMiAxMiAyMmMyLjc2IDAgNS4yNi0xLjEyIDcuMDctMi45M2wtMS40Mi0xLjQyYy0uNDkuNDktMS4wNS45Mi0xLjY1IDEuMjdWMTZoMmMxLjEgMCAyLS45IDItMnYtM2MwLTEuMS0uOS0yLTItMnptLTQgMTAuNzVjLS42NC4xNi0xLjMxLjI1LTIgLjI1cy0xLjM2LS4wOS0yLS4yNVYxNmg0djMuNzV6TTE4IDE0SDZWOGMwLTEuMS45LTIgMi0yaDJ2NWg4djN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEZXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA2djEyaDJWOGgxMHYxMGgydi0yaDR2MmgyVjZIMnptMTggMnYyaC00VjhoNHptLTQgNnYtMmg0djJoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb05vdFN0ZXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOC41MSAxNS42OC0xLjQxLTEuNDEgNC40OC00LjQ4TDIzIDExLjJsLTQuNDkgNC40OHptLTMuNTMtMy41MyAzLjA3LTMuMDctNC4yNS00LjI2LTMuMDggMy4wN0w5LjMgNi40NyAxMy44IDJsNy4wOCA3LjA4LTQuNDggNC40OC0xLjQyLTEuNDF6bTYuMiA5LjA1LTEuNDEgMS40MS01Ljk0LTUuOTRMMTAuNSAyMEgxdi0yLjYzYzAtLjg0LjUyLTEuNTcgMS4zLTEuODguNTgtLjIzIDEuMjgtLjU2IDEuOTctMS4wMmwxLjM4IDEuMzhjLjA5LjEuMjIuMTUuMzUuMTVzLjI2LS4wNS4zNi0uMTVjLjItLjIuMi0uNTEgMC0uNzFsLTEuMjgtMS4yOGMuMjctLjI0LjUzLS41MS43Ny0uOGwxLjI3IDEuMjdhLjQ4NS40ODUgMCAwIDAgLjcgMGMuMi0uMi4yLS41MSAwLS43MWwtMS40LTEuNGMuMTktLjM0LjM0LS43Mi40NS0xLjEybDEuNzEgMS43MmEuNDg1LjQ4NSAwIDAgMCAuNyAwYy4xOS0uMi4xOS0uNS4wMS0uN2wtNy45LTcuOSAxLjQyLTEuNDFMMjEuMTggMjEuMnptLTguNzYtNS45NC0xLjY3LTEuNjgtMy4zMyAzLjMyYy0uNzguNzgtMi4wNS43OC0yLjgzLS4wMWwtLjE5LS4xNy0uNDcuMjRjLS4yOS4xNC0uNTkuMjctLjg5LjM5bC0uMDEuNjVoNi42NGwyLjc1LTIuNzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb05vdFRvdWNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi44MSAyLjgxIDEuMzkgNC4yMiA3IDkuODN2NC4zbC0yLjYtMS40OGMtLjE3LS4wOS0uMzQtLjE0LS41NC0uMTQtLjI2IDAtLjUuMDktLjcuMjZMMiAxMy44OGw2LjggNy4xOGMuNTcuNiAxLjM1Ljk0IDIuMTguOTRIMTdjLjYyIDAgMS4xOC0uMTkgMS42Ni0uNTJsMS4xMiAxLjEyIDEuNDEtMS40MUwyLjgxIDIuODF6TTE3IDIwaC02Yy0uMzkgMC0uNjQtLjIzLS43NS0uMzZMNi44NyAxNkg5di00LjE3bDguMTQgOC4xNGMtLjA1LjAxLS4wOS4wMy0uMTQuMDN6bS0zLjE3LTlIMTRWMy4yNWExLjI1IDEuMjUgMCAwIDEgMi41IDBWMTFoMVY1LjI1YTEuMjUgMS4yNSAwIDAgMSAyLjUgMHYxMS45MmwtMi0yVjEzaC0yLjE3bC0yLTJ6bS0uODMtLjgzVjIuMjVhMS4yNSAxLjI1IDAgMCAwLTIuNSAwdjUuNDJsMi41IDIuNXptLTMuNS0zLjVWNC4yNUM5LjUgMy41NiA4Ljk0IDMgOC4yNSAzYy0uNjcgMC0xLjIuNTMtMS4yNCAxLjE4TDkuNSA2LjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRHJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNzUgMTZhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDYuNzVjLjY5IDAgMS4yNS0uNTYgMS4yNS0xLjI1IDAtLjY3LS41My0xLjItMS4xOC0xLjI0TDguODcgMTBsMS40OC0yLjZjLjA5LS4xNy4xNC0uMzQuMTQtLjU0IDAtLjI2LS4wOS0uNS0uMjYtLjdMOS4xMiA1bC03LjE4IDYuOGMtLjYuNTYtLjk0IDEuMzUtLjk0IDIuMTdWMjBjMCAxLjY2IDEuMzQgMyAzIDNoMTMuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDcuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDguNzV6TTEwIDIxSDRjLS41NSAwLTEtLjQ1LTEtMXYtNmMwLS4zOS4yMy0uNjQuMzYtLjc1TDcgOS44N1YxMmgzdjl6bTUuNjUtMTYuMTQtLjA3LS4wN2MtLjU3LS42Mi0uODItMS40MS0uNjctMi4yTDE1IDJoLTEuODlsLS4wNi40M2MtLjIgMS4zNi4yNyAyLjcxIDEuMyAzLjcybC4wNy4wNmMuNTcuNjIuODIgMS40MS42NyAyLjJsLS4xMS41OWgxLjkxbC4wNi0uNDNjLjIxLTEuMzYtLjI3LTIuNzEtMS4zLTMuNzF6bTQgMC0uMDctLjA3Yy0uNTctLjYyLS44Mi0xLjQxLS42Ny0yLjJMMTkgMmgtMS44OWwtLjA2LjQzYy0uMiAxLjM2LjI3IDIuNzEgMS4zIDMuNzJsLjA3LjA2Yy41Ny42Mi44MiAxLjQxLjY3IDIuMmwtLjExLjU5aDEuOTFsLjA2LS40M2MuMjEtMS4zNi0uMjctMi43MS0xLjMtMy43MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVsZXZhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTkgMTV2LTRoMXYtMi41YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAyVjE0aDF2NGgzek04LjUgOC41YTEuMjUgMS4yNSAwIDEgMCAwLTIuNSAxLjI1IDEuMjUgMCAwIDAgMCAyLjV6TTE4IDExbC0yLjUtNC0yLjUgNGg1em0tNSAyIDIuNSA0IDIuNS00aC01elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXNjYWxhdG9yV2FybmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAyYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptOSA3LjVjMCAuODMuNjcgMS41IDEuNSAxLjVzMS41LS42NyAxLjUtMS41UzE3LjgzIDggMTcgOHMtMS41LjY3LTEuNSAxLjV6bTMgMi41aC0yLjg0Yy0uNTguMDEtMS4xNC4zMi0xLjQ1Ljg2bC0uOTIgMS4zMkw5LjcyIDhhMi4wMiAyLjAyIDAgMCAwLTEuNzEtMUg1Yy0xLjEgMC0yIC45LTIgMnY2aDEuNXY3aDVWMTEuNjFMMTIuMDMgMTZoMi4ybC43Ny0xLjFWMjJoNHYtNWgxdi0zLjVjMC0uODItLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRXNjYWxhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTIgM2gtMy4zbC01IDlIN2MtLjgzIDAtMS41LjY3LTEuNSAxLjVTNi4xNyAxOCA3IDE4aDMuM2w1LTlIMTdjLjgzIDAgMS41LS42NyAxLjUtMS41UzE3LjgzIDYgMTcgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhbWlseVJlc3Ryb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNGMwLTEuMTEuODktMiAyLTJzMiAuODkgMiAyLS44OSAyLTIgMi0yLS44OS0yLTJ6bTQgMTh2LTZoMi41bC0yLjU0LTcuNjNBMi4wMSAyLjAxIDAgMCAwIDE4LjA2IDdoLS4xMmEyIDIgMCAwIDAtMS45IDEuMzdsLS44NiAyLjU4YzEuMDguNiAxLjgyIDEuNzMgMS44MiAzLjA1djhoM3ptLTcuNS0xMC41Yy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41UzExIDkuMTcgMTEgMTBzLjY3IDEuNSAxLjUgMS41ek01LjUgNmMxLjExIDAgMi0uODkgMi0ycy0uODktMi0yLTItMiAuODktMiAyIC44OSAyIDIgMnptMiAxNnYtN0g5VjljMC0xLjEtLjktMi0yLTJINGMtMS4xIDAtMiAuOS0yIDJ2NmgxLjV2N2g0em02LjUgMHYtNGgxdi00YzAtLjgyLS42OC0xLjUtMS41LTEuNWgtMmMtLjgyIDAtMS41LjY4LTEuNSAxLjV2NGgxdjRoM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZlbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTJ2LTJoLTJWN2wtMy0zLTIgMi0yLTItMiAyLTItMi0zIDN2M0gzdjJoMnYySDN2MmgydjRoMTR2LTRoMnYtMmgtMnYtMmgyem0tNS01LjE3IDEgMVYxMGgtMlY3LjgzbC40MS0uNDEuNTktLjU5em0tNCAwIC41OS41OS40MS40MVYxMGgtMlY3LjgzbC40MS0uNDEuNTktLjU5ek0xMSAxNHYtMmgydjJoLTJ6bTIgMnYyaC0ydi0yaDJ6TTcgNy44M2wxLTEgLjU5LjU5LjQxLjQxVjEwSDdWNy44M3pNNyAxMmgydjJIN3YtMnptMCA0aDJ2Mkg3di0yem0xMCAyaC0ydi0yaDJ2MnptMC00aC0ydi0yaDJ2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpcmVFeHRpbmd1aXNoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE5aDEwdjFjMCAxLjEtLjkgMi0yIDJIOWMtMS4xIDAtMi0uOS0yLTJ2LTF6bTAtMWgxMHYtNUg3djV6TTE3IDN2NmwtMy4xNS0uNjZjLS4wMSAwLS4wMS4wMS0uMDIuMDIgMS41NS42MiAyLjcyIDEuOTggMy4wNyAzLjY0SDcuMWMuMzQtMS42NiAxLjUyLTMuMDIgMy4wNy0zLjY0LS4zMy0uMjYtLjYtLjU4LS44LS45NUw1IDYuNXYtMWw0LjM3LS45MUM5Ljg3IDMuNjUgMTAuODYgMyAxMiAzYy43IDAgMS4zNC4yNSAxLjg1LjY2TDE3IDN6bS00IDNjLS4wMy0uNTktLjQ1LTEtMS0xcy0xIC40NS0xIDEgLjQ1IDEgMSAxIDEtLjQ1IDEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZpdG5lc3NDZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjU3IDE0Ljg2IDIyIDEzLjQzIDIwLjU3IDEyIDE3IDE1LjU3IDguNDMgNyAxMiAzLjQzIDEwLjU3IDIgOS4xNCAzLjQzIDcuNzEgMiA1LjU3IDQuMTQgNC4xNCAyLjcxIDIuNzEgNC4xNGwxLjQzIDEuNDNMMiA3LjcxbDEuNDMgMS40M0wyIDEwLjU3IDMuNDMgMTIgNyA4LjQzIDE1LjU3IDE3IDEyIDIwLjU3IDEzLjQzIDIybDEuNDMtMS40M0wxNi4yOSAyMmwyLjE0LTIuMTQgMS40MyAxLjQzIDEuNDMtMS40My0xLjQzLTEuNDNMMjIgMTYuMjlsLTEuNDMtMS40M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvb2RCYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgNS41IDYgNC41djlINnYtOWw2LTQuNU0xMiAzIDQgOXYxMmgxNlY5bC04LTZ6bS0uNSA2LjV2M0gxMXYtM2gtMXYzaC0uNXYtM2gtMXYzYzAgLjgzLjY3IDEuNSAxLjUgMS41djRoMXYtNGMuODMgMCAxLjUtLjY3IDEuNS0xLjV2LTNoLTF6bTEuNSAydjNoMVYxOGgxVjkuNWMtMS4xIDAtMiAuOS0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGb3VuZGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTJoM0wxMiAzIDIgMTJoM3YzSDN2MmgydjNoMnYtM2g0djNoMnYtM2g0djNoMnYtM2gydi0yaC0ydi0zek03IDE1di00LjgxbDQtMy42VjE1SDd6bTYgMFY2LjU5bDQgMy42VjE1aC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRnJlZUJyZWFrZmFzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxOWgxNnYySDR6TTIwIDNINHYxMGMwIDIuMjEgMS43OSA0IDQgNGg2YzIuMjEgMCA0LTEuNzkgNC00di0zaDJhMiAyIDAgMCAwIDItMlY1YzAtMS4xMS0uODktMi0yLTJ6bS00IDEwYzAgMS4xLS45IDItMiAySDhjLTEuMSAwLTItLjktMi0yVjVoMTB2OHptNC01aC0yVjVoMnYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR2l0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDZIOVY0SDd2Mkg2bC00IDR2OWgyMHYtOWwtNC00ek00IDEyaDEwdjVINHYtNXptMTYgNWgtNHYtNi4xN2wyLTIgMiAyVjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR29sZkNvdXJzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOS41XCIsXCJjeVwiOlwiMTkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDUuOTIgOSAydjE4SDd2LTEuNzNjLTEuNzkuMzUtMyAuOTktMyAxLjczIDAgMS4xIDIuNjkgMiA2IDJzNi0uOSA2LTJjMC0uOTktMi4xNi0xLjgxLTUtMS45N1Y4Ljk4bDYtMy4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjBIMnYtMmg1Ljc1QTguMDMyIDguMDMyIDAgMCAwIDIgMTIuMjZjLjY0LS4xNiAxLjMxLS4yNiAyLS4yNiA0LjQyIDAgOCAzLjU4IDggOHptMTAtNy43NGMtLjY0LS4xNi0xLjMxLS4yNi0yLS4yNi0yLjkzIDAtNS40OCAxLjU4LTYuODggMy45M2E5LjgyIDkuODIgMCAwIDEgLjg3IDQuMDdoOHYtMmgtNS43NUE4LjA2MSA4LjA2MSAwIDAgMSAyMiAxMi4yNnptLTYuMzYtMS4yNGExMC4wMyAxMC4wMyAwIDAgMSA0LjA5LTVDMTUuNDQgNi4xNiAxMiA5LjY3IDEyIDE0di4wMmMuOTUtMS4yNyAyLjItMi4zIDMuNjQtM3ptLTQuMjItMi4xN0E4LjUyNyA4LjUyNyAwIDAgMCA2LjcgNEM4LjE0IDUuODYgOSA4LjE4IDkgMTAuNzFjMCAuMjEtLjAzLjQxLS4wNC42MS40My4yNC44My41MiAxLjIyLjgyYTkuOTEgOS45MSAwIDAgMSAxLjI0LTMuMjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIb2xpZGF5VmlsbGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTggNC02IDZ2MTBoMTJWMTBMOCA0em00IDE0SDl2LTNIN3YzSDR2LTcuMTdsNC00IDQgNFYxOHptLTMtNUg3di0yaDJ2MnptOSA3VjguMzVMMTMuNjUgNGgtMi44M0wxNiA5LjE4VjIwaDJ6bTQgMFY2LjY5TDE5LjMxIDRoLTIuODNMMjAgNy41MlYyMGgyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG90VHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjdcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjE1IDEyYy0uMzEtLjIyLS41OS0uNDYtLjgyLS43MmwtMS40LTEuNTVjLS4xOS0uMjEtLjQzLS4zOC0uNjktLjUtLjI5LS4xNC0uNjItLjIzLS45Ni0uMjNoLS4wM0M2LjAxIDkgNSAxMC4wMSA1IDExLjI1VjEySDJ2OGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ydi04SDExLjE1ek03IDIwSDV2LTZoMnY2em00IDBIOXYtNmgydjZ6bTQgMGgtMnYtNmgydjZ6bTQgMGgtMnYtNmgydjZ6TTE3LjQyIDcuMjFjLjU3LjYyLjgyIDEuNDEuNjcgMi4ybC0uMTEuNTloMS45MWwuMDYtLjQzYy4yMS0xLjM2LS4yNy0yLjcxLTEuMy0zLjcxbC0uMDctLjA3Yy0uNTctLjYyLS44Mi0xLjQxLS42Ny0yLjJMMTggM2gtMS44OWwtLjA2LjQzYy0uMiAxLjM2LjI3IDIuNzEgMS4zIDMuNzJsLjA3LjA2em0tNCAwYy41Ny42Mi44MiAxLjQxLjY3IDIuMmwtLjExLjU5aDEuOTFsLjA2LS40M2MuMjEtMS4zNi0uMjctMi43MS0xLjMtMy43MWwtLjA3LS4wN2MtLjU3LS42Mi0uODItMS40MS0uNjctMi4yTDE0IDNoLTEuODlsLS4wNi40M2MtLjIgMS4zNi4yNyAyLjcxIDEuMyAzLjcybC4wNy4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvdXNlU2lkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTJoM0wxMiAzIDIgMTJoM3Y4aDJ2LTJoMTB2Mmgydi04ek03LjIxIDEwaDkuNThsLjIxLjE5VjEySDd2LTEuODFsLjIxLS4xOXptNy4zNi0ySDkuNDNMMTIgNS42OSAxNC41NyA4ek03IDE2di0yaDEwdjJIN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUhvdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOS4zVjRoLTN2Mi42TDEyIDMgMiAxMmgzdjhoNnYtNmgydjZoNnYtOGgzbC0zLTIuN3pNMTcgMThoLTJ2LTZIOXY2SDd2LTcuODFsNS00LjUgNSA0LjVWMTh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEwaDRjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSG91c2Vib2F0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTZjLTEuOTUgMC0yLjEgMS0zLjM0IDEtMS4xOSAwLTEuNDItMS0zLjMzLTEtMS45NSAwLTIuMDkgMS0zLjMzIDF2MmMxLjkgMCAyLjE3LTEgMy4zNS0xIDEuMTkgMCAxLjQyIDEgMy4zMyAxIDEuOTUgMCAyLjA4LTEgMy4zMi0xczEuMzcgMSAzLjMyIDFjMS45MSAwIDIuMTQtMSAzLjMzLTEgMS4xOCAwIDEuNDUgMSAzLjM1IDF2LTJjLTEuMjQgMC0xLjM4LTEtMy4zMy0xLTEuOTEgMC0yLjE0IDEtMy4zMyAxLTEuMjQgMC0xLjM5LTEtMy4zNC0xem04LjM0LTQuNjYtMS4zNyAxLjM3Yy0uMTkuMTgtLjQ1LjI5LS43MS4yOUgxN1Y5LjY1bDEuMzIuOTdMMTkuNSA5IDEyIDMuNSA0LjUgOWwxLjE4IDEuNjFMNyA5LjY1VjEzSDUuNzRjLS4yNyAwLS41Mi0uMTEtLjcxLS4yOWwtMS4zNy0xLjM3LTEuNDEgMS40MSAxLjM3IDEuMzdjLjU2LjU2IDEuMzMuODggMi4xMi44OGgxMi41MWMuOCAwIDEuNTYtLjMyIDIuMTItLjg4bDEuMzctMS4zNy0xLjQtMS40MXpNMTMgMTN2LTJoLTJ2Mkg5VjguMThsMy0yLjIgMyAyLjJWMTNoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVJcm9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNmMtMS42NiAwLTMgMS4zNC0zIDN2NGMwIC41NS0uNDUgMS0xIDF2LTRjMC0xLjY2LTEuMzQtMy0zLTNoLTRjLTEuNjYgMC0zIDEuMzQtMyAzaDJjMC0uNTUuNDUtMSAxLTFoNGMuNTUgMCAxIC40NSAxIDF2MUg2Yy0yLjIxIDAtNCAxLjc5LTQgNHYzaDE1di0yYzEuNjYgMCAzLTEuMzQgMy0zVjljMC0uNTUuNDUtMSAxLTFoMVY2aC0xem0tNiAxMEg0di0xYzAtMS4xLjktMiAyLTJoOXYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2l0Y2hlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA1aDJ2M0g4em0wIDdoMnY1SDh6bTEwLTkuOTlMNiAyYTIgMiAwIDAgMC0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xMS0uOS0xLjk5LTItMS45OXpNMTggMjBINnYtOS4wMmgxMlYyMHptMC0xMUg2VjRoMTJ2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1lZXRpbmdSb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxOVY0aC00VjNINXYxNkgzdjJoMTJWNmgydjE1aDR2LTJoLTJ6bS02IDBIN1Y1aDZ2MTR6bS0zLThoMnYyaC0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWljcm93YXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6TTQgNmgxMHYxMkg0VjZ6bTE2IDEyaC00VjZoNHYxMnptLTEtOWgtMlY3aDJ2MnptLTEgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptLTcuNzUtMWMtLjc5IDAtMS4zNy0uMzgtMS43OS0uNjYtLjMzLS4yMi0uNTItLjM0LS43MS0uMzQtLjM3IDAtLjguNDEtLjk1LjYxbC0xLjQyLTEuNDJjLjM1LS40IDEuMjEtMS4xOSAyLjM3LTEuMTkuOCAwIDEuMzkuMzkgMS44MS42Ny4zMS4yMS41MS4zMy42OS4zMy4zNyAwIC44LS40MS45NS0uNjFsMS40MiAxLjQyYy0uMzYuNC0xLjIxIDEuMTktMi4zNyAxLjE5em0wLTVjLS43OSAwLTEuMzctLjM4LTEuNzktLjY2LS4zMy0uMjItLjUyLS4zNC0uNzEtLjM0LS4zNyAwLS44LjQxLS45NS42MUw1LjM3IDkuMTlDNS43MyA4Ljc5IDYuNTkgOCA3Ljc1IDhjLjggMCAxLjM5LjM5IDEuODEuNjcuMzEuMjEuNTEuMzMuNjkuMzMuMzcgMCAuOC0uNDEuOTUtLjYxbDEuNDIgMS40MmMtLjM2LjQtMS4yMSAxLjE5LTIuMzcgMS4xOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5pZ2h0U2hlbHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDUuNSA2IDQuNXY5SDZ2LTlsNi00LjVNMTIgMyA0IDl2MTJoMTZWOWwtOC02em0zIDloLTMuNXYzLjVIOFYxMUg3djdoMXYtMS41aDhWMThoMXYtNGMwLTEuMS0uOS0yLTItMnptLTUuMjUuNWExLjI1IDEuMjUgMCAxIDAgMCAyLjUgMS4yNSAxLjI1IDAgMCAwIDAtMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9CYWNrcGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuOTggNC4xNWMuMDEgMCAuMDEtLjAxLjAyLS4wMVYyaDN2Mmg0VjJoM3YyLjE0YzEuNzIuNDUgMyAyIDMgMy44NnY5LjE3bC0yLTJWOGMwLTEuMS0uOS0yLTItMkg4LjgzTDYuOTggNC4xNXpNMTQuODMgMTJsMS42NyAxLjY3VjEyaC0xLjY3em00Ljk1IDEwLjYxLS44NS0uODVjLS4yOC4xNS0uNTkuMjQtLjkzLjI0SDZjLTEuMSAwLTItLjktMi0yVjhjMC0uMzYuMDYtLjY5LjE1LTEuMDJMMS4zOSA0LjIyIDIuOCAyLjgxbDE4LjM4IDE4LjM4LTEuNCAxLjQyek0xNy4xNyAyMGwtNi02SDcuNXYtMmgxLjY3TDYgOC44M1YyMGgxMS4xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vQ2VsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDZ2OC4xN2wyIDJWM2MwLTEuMS0uOS0xLjk5LTItMS45OUw3IDFjLS44NSAwLTEuNTguNTUtMS44NyAxLjNMOC44MyA2SDE3ek03IDNoMTB2MUg3VjN6bTE0LjE5IDE4LjE5TDE5IDE5bC0yLTJMNyA3IDUgNSAyLjgxIDIuODEgMS4zOSA0LjIyIDUgNy44M1YyMWMwIDEuMS45IDIgMiAyaDEwYy44NSAwIDEuNTgtLjU1IDEuODctMS4zbC45MS45MSAxLjQxLTEuNDJ6TTE3IDIxSDd2LTFoMTB2MXpNNyAxOFY5LjgzTDE1LjE3IDE4SDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb0RyaW5rcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjE5IDIxLjE5IDIuODEgMi44MSAxLjM5IDQuMjJsOC4yMyA4LjIzTDExIDE0djVINnYyaDEydi0uMTdsMS43OCAxLjc4IDEuNDEtMS40MnpNMTMgMTl2LTMuMTdMMTYuMTcgMTlIMTN6TTcuODMgNWwtMi0ySDIxdjJsLTYuMiA2Ljk3LTEuNDItMS40MkwxNC43NyA5aC0yLjk0bC0yLTJoNi43NGwxLjc4LTJINy44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vRmxhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjQgNS42SDIyTDE5IDExVjdoLTFWMmg0bC0xLjYgMy42ek0xNiAxMS40djEuNzdsMiAyVjExYzAtLjg4LS43Mi0xLjYtMS42LTEuNmgtMi41NEwxMi41OCA4aC0xLjc1bDMuNCAzLjRIMTZ6TTIuMSAyLjEuNjkgMy41MWw1LjY2IDUuNjYtLjIxLjIzSDMuNmMtLjg4IDAtMS42LjcyLTEuNiAxLjZ2OS40YzAgLjg4LjcyIDEuNiAxLjYgMS42aDEyLjhjLjc1IDAgMS4zOC0uNTIgMS41NS0xLjIybDIuNTQgMi41NCAxLjQxLTEuNDFMMi4xIDIuMXptOS40IDEzLjRjMCAuODMtLjY3IDEuNS0xLjUgMS41cy0xLjUtLjY3LTEuNS0xLjVTOS4xNyAxNCAxMCAxNHMxLjUuNjcgMS41IDEuNXptNC40NiA0LjVINHYtOC42aDMuMDJsLjU5LS42NS4xNS0uMTYgMS41IDEuNUEzLjQ4NiAzLjQ4NiAwIDAgMCA2LjUgMTUuNWMwIDEuOTMgMS41NyAzLjUgMy41IDMuNSAxLjY4IDAgMy4wNy0xLjE4IDMuNDItMi43NmwyLjU1IDIuNTUtLjAxIDEuMjF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb0Zvb2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDIxaDE1LjAxdi45OGMwIC41Ni0uNDUgMS4wMS0xLjAxIDEuMDFIMi4wMWMtLjU2IDAtMS4wMS0uNDUtMS4wMS0xLjAxVjIxem0xOS40OSAyLjMxTDE2IDE4LjgzVjE5SDF2LTJoMTMuMTdsLTItMkgxYzAtMy4yNCAyLjQ2LTUuMTcgNS4zOC01Ljc5bC01LjctNS43TDIuMSAyLjEgMTMgMTNsMiAyIDYuOSA2LjktMS40MSAxLjQxek0xMC4xNyAxM2wtMi0yYy0xLjQyLjA2LTMuNTIuNTYtNC41NSAyaDYuNTV6TTIzIDVoLTVWMWgtMnY0aC01bC4yMyAyaDkuNTZsLTEgOS45NyAxLjgzIDEuODNMMjMgNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vTWVldGluZ1Jvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDV2My44OGwyIDJWNmgzdjcuODhsMiAyVjRoLTVWM0g2LjEybDIgMnpNMi40MSAyLjEzIDEgMy41NGw0IDRWMTlIM3YyaDExdi00LjQ2TDIwLjQ2IDIzbDEuNDEtMS40MUwyLjQxIDIuMTN6TTEyIDE5SDdWOS41NGw1IDVWMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb1Bob3RvZ3JhcGh5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC45IDYuMDcgNy40OCA0LjY2IDkgM2g2bDEuODMgMkgyMGMxLjEgMCAyIC45IDIgMnYxMmMwIC4wNS0uMDEuMS0uMDIuMTZMMjAgMTcuMTdWN2gtNC4wNWwtMS44My0ySDkuODhMOC45IDYuMDd6bTExLjU5IDE3LjI0TDE4LjE3IDIxSDRjLTEuMSAwLTItLjktMi0yVjdjMC0uNTkuMjctMS4xMi42OC0xLjQ5bC0yLTJMMi4xIDIuMWwxOS44IDE5LjgtMS40MSAxLjQxek05LjE5IDEyLjAyYy0uMTEuMzEtLjE5LjYzLS4xOS45OCAwIDEuNjYgMS4zNCAzIDMgMyAuMzUgMCAuNjctLjA4Ljk4LS4xOWwtMy43OS0zLjc5ek0xNi4xNyAxOWwtMS42OC0xLjY4Yy0uNzMuNDMtMS41OC42OC0yLjQ5LjY4LTIuNzYgMC01LTIuMjQtNS01IDAtLjkxLjI1LTEuNzYuNjgtMi40OUw0LjE3IDdINHYxMmgxMi4xN3ptLTEuMzYtNy4wMiAyLjA3IDIuMDdjLjA4LS4zNC4xMi0uNjkuMTItMS4wNSAwLTIuNzYtMi4yNC01LTUtNS0uMzYgMC0uNzEuMDQtMS4wNi4xMmwyLjA3IDIuMDdjLjg0LjMgMS41Ljk2IDEuOCAxLjc5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9TdHJvbGxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMjBjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yIDIgLjkgMiAyem03LTExLjM0djMuNTFsMiAydi03LjljLjU4LS42OC45Ny0xLjI3IDEuNjUtMS4yNy43NyAwIDEuMzUuNjYgMS4zNSAxLjQ4VjdoMnYtLjUyQzIyIDQuNTYgMjAuNTIgMyAxOC42NSAzYy0xLjY2IDAtMi41NCAxLjI3LTMuMTggMi4wM2wtMy41IDQuMTEgMS40MiAxLjQyTDE1IDguNjZ6bTQuNzggMTMuOTUtMS45MS0xLjkxYy0uMjkuNzYtMS4wMSAxLjMtMS44NyAxLjMtMS4xIDAtMi0uOS0yLTIgMC0uODYuNTQtMS41OCAxLjMtMS44N0wxNC4xNyAxN0g3LjQzYy0uODUgMC0xLjMxLTEtLjc2LTEuNjVsMi42OS0zLjE2LTcuOTctNy45N0wyLjggMi44MWw3Ljg2IDcuODYgMS40MiAxLjQyIDkuMTEgOS4xMS0xLjQxIDEuNDF6TTEyLjE3IDE1bC0xLjM5LTEuMzlMOS42IDE1aDIuNTd6TTEwIDVjLjI5IDAgLjU4LjAyLjg2LjA1TDkuNDkgNi42N2wxLjQyIDEuNDJMMTQuMyA0LjFDMTMuMDMgMy40IDExLjU2IDMgMTAgM2MtMS4yMyAwLTIuNC4yNS0zLjQ3LjdMOC4xIDUuMjdBNy4wOSA3LjA5IDAgMCAxIDEwIDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVPdGhlckhvdXNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDMgMSAxMS40bDEuMjEgMS41OUw0IDExLjYyVjIxaDE2di05LjM4bDEuNzkgMS4zNkwyMyAxMS40IDEyIDN6bTYgMTZINnYtOC45bDYtNC41OCA2IDQuNThWMTl6bS05LTVjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTEgLjQ1LTEgMS0xIDEgLjQ1IDEgMXptMy0xYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTMgMWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDEtLjQ1IDEtMSAxLTEtLjQ1LTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBvb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDgtMy4yNSAzLjI1Yy4zMS4xMi41Ni4yNy43Ny4zOS4zNy4yMy41OS4zNiAxLjE1LjM2cy43OC0uMTMgMS4xNS0uMzZjLjQ2LS4yNyAxLjA4LS42NCAyLjE5LS42NHMxLjczLjM3IDIuMTguNjRjLjM3LjIyLjYuMzYgMS4xNS4zNi41NSAwIC43OC0uMTMgMS4xNS0uMzYuMTItLjA3LjI2LS4xNS40MS0uMjNMMTAuNDggNUM4LjkzIDMuNDUgNy41IDIuOTkgNSAzdjIuNWMxLjgyLS4wMSAyLjg5LjM5IDQgMS41bDEgMXptMTIgOC41aC0uMDIuMDJ6bS0xNi42NS0xYy41NSAwIC43OC4xNCAxLjE1LjM2LjQ1LjI3IDEuMDcuNjQgMi4xOC42NHMxLjczLS4zNyAyLjE4LS42NGMuMzctLjIzLjU5LS4zNiAxLjE1LS4zNi41NSAwIC43OC4xNCAxLjE1LjM2LjQ1LjI3IDEuMDcuNjQgMi4xOC42NHMxLjczLS4zNyAyLjE4LS42NGMuMzctLjIzLjU5LS4zNiAxLjE1LS4zNi41NSAwIC43OC4xNCAxLjE1LjM2LjQ1LjI3IDEuMDYuNjMgMi4xNi42NHYtMmMtLjU1IDAtLjc4LS4xNC0xLjE1LS4zNi0uNDUtLjI3LTEuMDctLjY0LTIuMTgtLjY0cy0xLjczLjM3LTIuMTguNjRjLS4zNy4yMy0uNi4zNi0xLjE1LjM2cy0uNzgtLjE0LTEuMTUtLjM2Yy0uNDUtLjI3LTEuMDctLjY0LTIuMTgtLjY0cy0xLjczLjM3LTIuMTguNjRjLS4zNy4yMy0uNTkuMzYtMS4xNS4zNi0uNTUgMC0uNzgtLjE0LTEuMTUtLjM2LS40NS0uMjctMS4wNy0uNjQtMi4xOC0uNjRzLTEuNzMuMzctMi4xOC42NGMtLjM3LjIzLS41OS4zNi0xLjE1LjM2djJjMS4xMSAwIDEuNzMtLjM3IDIuMi0uNjQuMzctLjIzLjYtLjM2IDEuMTUtLjM2ek0xOC42NyAxOGMtMS4xMSAwLTEuNzMuMzctMi4xOC42NC0uMzcuMjMtLjYuMzYtMS4xNS4zNi0uNTUgMC0uNzgtLjE0LTEuMTUtLjM2LS40NS0uMjctMS4wNy0uNjQtMi4xOC0uNjRzLTEuNzMuMzctMi4xOS42NGMtLjM3LjIzLS41OS4zNi0xLjE1LjM2cy0uNzgtLjEzLTEuMTUtLjM2Yy0uNDUtLjI3LTEuMDctLjY0LTIuMTgtLjY0cy0xLjczLjM3LTIuMTkuNjRjLS4zNy4yMy0uNTkuMzYtMS4xNS4zNnYyYzEuMTEgMCAxLjczLS4zNyAyLjE5LS42NC4zNy0uMjMuNi0uMzYgMS4xNS0uMzYuNTUgMCAuNzguMTMgMS4xNS4zNi40NS4yNyAxLjA3LjY0IDIuMTguNjRzMS43My0uMzcgMi4xOS0uNjRjLjM3LS4yMy41OS0uMzYgMS4xNS0uMzYuNTUgMCAuNzguMTQgMS4xNS4zNi40NS4yNyAxLjA3LjY0IDIuMTguNjRzMS43Mi0uMzcgMi4xOC0uNjRjLjM3LS4yMy41OS0uMzYgMS4xNS0uMzYuNTUgMCAuNzguMTQgMS4xNS4zNi40NS4yNyAxLjA3LjY0IDIuMTguNjR2LTJjLS41NiAwLS43OC0uMTMtMS4xNS0uMzYtLjQ1LS4yNy0xLjA3LS42NC0yLjE4LS42NHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNi41XCIsXCJjeVwiOlwiNS41XCIsXCJyXCI6XCIyLjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJpY2VCb3dsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNjYgMTRjLS42NiAxLjkyLTIuMjQgMy41NC00LjQgNC4zOWwtMS4yNi40OVYyMGgtNHYtMS4xMmwtMS4yNy0uNWMtMi4xNi0uODUtMy43NC0yLjQ3LTQuNC00LjM5aDE1LjMzTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyYzAgMy42OSAyLjQ3IDYuODYgNiA4LjI1VjIyaDh2LTEuNzVjMy41My0xLjM5IDYtNC41NiA2LTguMjUgMC01LjUyLTQuNDgtMTAtMTAtMTB6bS0yIDEwVjQuMjZjLjY0LS4xNiAxLjMxLS4yNiAyLS4yNnMxLjM2LjEgMiAuMjZWMTJoLTR6bTYgMFY1LjA4YzIuMzkgMS4zOSA0IDMuOTYgNCA2LjkyaC00ek00IDEyYzAtMi45NSAxLjYxLTUuNTMgNC02LjkyVjEySDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb29maW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMThoLTJ2LTJoMnYyem0yLTRIOXY2aDZ2LTZ6bTQtNC43VjRoLTN2Mi42TDEyIDMgMiAxMmgzbDctNi4zMUwxOSAxMmgzbC0zLTIuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJvb21QcmVmZXJlbmNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjY5IDE2LjM3IDEuMTQtMS0xLTEuNzMtMS40NS40OWMtLjMyLS4yNy0uNjgtLjQ4LTEuMDgtLjYzTDE5IDEyaC0ybC0uMyAxLjQ5Yy0uNC4xNS0uNzYuMzYtMS4wOC42M2wtMS40NS0uNDktMSAxLjczIDEuMTQgMWMtLjA4LjUtLjA4Ljc2IDAgMS4yNmwtMS4xNCAxIDEgMS43MyAxLjQ1LS40OWMuMzIuMjcuNjguNDggMS4wOC42M0wxNyAyMmgybC4zLTEuNDljLjQtLjE1Ljc2LS4zNiAxLjA4LS42M2wxLjQ1LjQ5IDEtMS43My0xLjE0LTFjLjA4LS41MS4wOC0uNzcgMC0xLjI3ek0xOCAxOWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTEtMTV2NmgtMlY2aC0ydjZoLTJWNUg3djE0aDV2Mkgzdi0yaDJWM2gxMHYxaDR6bS03IDloLTJ2LTJoMnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUm9vbVNlcnZpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ljk4IDE3SDJ2MmgyMHYtMnpNMjEgMTZjLS4yNy00LjA3LTMuMjUtNy40LTcuMTYtOC4yMUEyLjAwNiAyLjAwNiAwIDAgMCAxMiA1YTIuMDA2IDIuMDA2IDAgMCAwLTEuODQgMi43OUM2LjI1IDguNiAzLjI3IDExLjkzIDMgMTZoMTh6bS05LTYuNDJjMi45NSAwIDUuNDcgMS44MyA2LjUgNC40MWgtMTNBNy4wMDIgNy4wMDIgMCAwIDEgMTIgOS41OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJ2SG9va3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxN3YtNmMwLTEuMS0uOS0yLTItMkg3VjdsLTMgMyAzIDN2LTJoNHYzSDR2M2MwIDEuMS45IDIgMiAyaDJjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtM2g4di0yaC0yem0tOSAzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTctNmgtNHYtM2g0djN6TTE3IDJ2Mkg5djJoOHYybDMtMy0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbW9rZUZyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjUgMTNIMjJ2M2gtMS41ek0xOCAxM2gxLjV2M0gxOHptLTEgMGgtMi4zNEwxNyAxNS4zNHptLTIuNS00LjM1aDEuNTNjMS4wNSAwIDEuOTcuNzQgMS45NyAyLjA1VjEyaDEuNXYtMS42NGMwLTEuODEtMS42LTMuMTYtMy40Ny0zLjE2SDE0LjVjLTEuMDIgMC0xLjg1LS45OC0xLjg1LTJzLjgzLTEuNzUgMS44NS0xLjc1di0xLjVhMy4zNSAzLjM1IDAgMCAwIDAgNi43em00LjM1LTMuOTJjLjYyLS42MSAxLTEuNDUgMS0yLjM4aC0xLjVjMCAxLjAyLS44MyAxLjg1LTEuODUgMS44NXYxLjVjMi4yNCAwIDQgMS44MyA0IDQuMDdWMTJIMjJWOS43NmMwLTIuMjItMS4yOC00LjE0LTMuMTUtNS4wM3pNMy40MSA0LjU5IDIgNmw3IDdIMnYzaDEwbDcgNyAxLjQxLTEuNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbW9raW5nUm9vbXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE2aDEuNXYzSDE4ek0yIDE2aDE1djNIMnptMTQuMDMtNS44SDE0LjVjLTEuMDIgMC0xLjg1LS45OC0xLjg1LTJzLjgzLTEuNzUgMS44NS0xLjc1di0xLjVhMy4zNSAzLjM1IDAgMCAwIDAgNi43aDEuNTNjMS4wNSAwIDEuOTcuNzQgMS45NyAyLjA1VjE1aDEuNXYtMS42NGMwLTEuODEtMS42LTMuMTYtMy40Ny0zLjE2ek0yMC41IDE2SDIydjNoLTEuNXptLTEuNjUtOC4yN2MuNjItLjYxIDEtMS40NSAxLTIuMzhDMTkuODUgMy41IDE4LjM1IDIgMTYuNSAydjEuNWMxLjAyIDAgMS44NS44MyAxLjg1IDEuODVTMTcuNTIgNy4yIDE2LjUgNy4ydjEuNWMyLjI0IDAgNCAxLjgzIDQgNC4wN1YxNUgyMnYtMi4yNGMwLTIuMjItMS4yOC00LjE0LTMuMTUtNS4wM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNvYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4yNSA2Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NS0uNzUtLjM0LS43NS0uNzUuMzQtLjc1Ljc1LS43NW0wLTEuNUMxMy4wMSA0LjUgMTIgNS41MSAxMiA2Ljc1UzEzLjAxIDkgMTQuMjUgOXMyLjI1LTEuMDEgMi4yNS0yLjI1LTEuMDEtMi4yNS0yLjI1LTIuMjV6bTUuNzUgMWMuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjUtLjUtLjIyLS41LS41LjIyLS41LjUtLjVNMjAgNGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS0zLjUtM2MtLjgzIDAtMS41LjY3LTEuNSAxLjVTMTUuNjcgNCAxNi41IDQgMTggMy4zMyAxOCAyLjUgMTcuMzMgMSAxNi41IDF6bTQuMjUgMTVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDYuNzVjLjY5IDAgMS4yNS0uNTYgMS4yNS0xLjI1IDAtLjY3LS41My0xLjItMS4xOC0xLjI0TDguODcgMTBsMS40OC0yLjZjLjA5LS4xNy4xNC0uMzQuMTQtLjU0IDAtLjI2LS4wOS0uNS0uMjYtLjdMOS4xMiA1bC03LjE4IDYuOGMtLjYuNTYtLjk0IDEuMzUtLjk0IDIuMTdWMjBjMCAxLjY2IDEuMzQgMyAzIDNoMTMuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDcuNzVhMS4yNSAxLjI1IDAgMCAwIDAtMi41SDEydi0xaDguNzV6TTEwIDIxSDRjLS41NSAwLTEtLjQ1LTEtMXYtNmMwLS4zOS4yMy0uNjQuMzYtLjc1TDcgOS44N1YxMmgzdjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjQ5IDkuNjNjLS4xOC0yLjc5LTEuMzEtNS41MS0zLjQzLTcuNjNhMTIuMTg4IDEyLjE4OCAwIDAgMC0zLjU1IDcuNjNjMS4yOC42OCAyLjQ2IDEuNTYgMy40OSAyLjYzIDEuMDMtMS4wNiAyLjIxLTEuOTQgMy40OS0yLjYzem0tMy40NC00LjQ0Yy42MyAxLjAzIDEuMDcgMi4xOCAxLjMgMy4zOC0uNDcuMy0uOTEuNjMtMS4zNC45OC0uNDItLjM0LS44Ny0uNjctMS4zMy0uOTcuMjUtMS4yLjcxLTIuMzUgMS4zNy0zLjM5ek0xMiAxNS40NWExMi4xMSAxMi4xMSAwIDAgMC0zLjA2LTMuMmMtLjEzLS4wOS0uMjctLjE2LS40LS4yNi4xMy4wOS4yNy4xNy4zOS4yNUExMS43NzcgMTEuNzc3IDAgMCAwIDIgMTBjMCA1LjMyIDMuMzYgOS44MiA4LjAzIDExLjQ5LjYzLjIzIDEuMjkuNCAxLjk3LjUxLjY4LS4xMiAxLjMzLS4yOSAxLjk3LS41MUMxOC42NCAxOS44MiAyMiAxNS4zMiAyMiAxMGMtNC4xOCAwLTcuODUgMi4xNy0xMCA1LjQ1em0xLjMyIDQuMTVjLS40NC4xNS0uODguMjctMS4zMy4zNy0uNDQtLjA5LS44Ny0uMjEtMS4yOC0uMzYtMy4yOS0xLjE4LTUuNy0zLjk5LTYuNDUtNy4zNSAxLjEuMjYgMi4xNS43MSAzLjEyIDEuMzNsLS4wMi4wMWMuMTMuMDkuMjYuMTguMzkuMjVsLjA3LjA0Yy45OS43MiAxLjg0IDEuNjEgMi41MSAyLjY1TDEyIDE5LjFsMS42Ny0yLjU1YTEwLjE5IDEwLjE5IDAgMCAxIDIuNTMtMi42NmwuMDctLjA1Yy4wOS0uMDUuMTgtLjExLjI3LS4xN2wtLjAxLS4wMmMuOTgtLjY1IDIuMDctMS4xMyAzLjIxLTEuNC0uNzUgMy4zNy0zLjE1IDYuMTgtNi40MiA3LjM1em0tNC4zMy03LjMyYy0uMDItLjAxLS4wNC0uMDMtLjA1LS4wNCAwIDAgLjAxIDAgLjAxLjAxLjAxLjAxLjAyLjAyLjA0LjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTlIOHYtNi42M2MxLjI2LS4zNCAyLjExLTEuMjcgMi43Ny0xLjk5QzExLjYgOS40NyAxMi4wOCA5IDEzIDloMnYxMHpNMTAgMi4wMmMtMS44OSAwLTMuNTEgMS4xMS00LjI3IDIuNzFDNC4xNSA1LjI2IDMgNi43NCAzIDguNWMwIDEuODYgMS4yOCAzLjQxIDMgMy44NlYyMWgxMXYtMmgyYzEuMSAwIDItLjkgMi0ydi02YzAtMS4xLS45LTItMi0yaC0xLjU2Yy4zNS0uNTkuNTYtMS4yNy41Ni0yIDAtMi4yMS0xLjc5LTQtNC00LS4zNCAwLS42Ni4wNS0uOTguMTNBNC43MDcgNC43MDcgMCAwIDAgMTAgMi4wMnpNNyAxMC41Yy0xLjEgMC0yLS45LTItMiAwLS44NS41NS0xLjYgMS4zNy0xLjg4bC44LS4yNy4zNi0uNzZDOCA0LjYyIDguOTQgNC4wMiAxMCA0LjAyYy43OSAwIDEuMzkuMzUgMS43NC42NWwuNzguNjVTMTMuMTYgNSAxMy45OSA1YzEuMSAwIDIgLjkgMiAyaC0zQzkuNjcgNyA5LjE1IDEwLjUgNyAxMC41ek0xNyAxN3YtNmgydjZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGFpcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djE0SDVWNWgxNG0wLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMSAzaC00LjQydjMuMzNIMTF2My4zM0g4LjQyVjE2SDZ2Mmg0LjQydi0zLjMzSDEzdi0zLjMzaDIuNThWOEgxOFY2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RvcmVmcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjkgOC44OS0xLjA1LTQuMzdjLS4yMi0uOS0xLTEuNTItMS45MS0xLjUySDUuMDVjLS45IDAtMS42OS42My0xLjkgMS41MkwyLjEgOC44OWMtLjI0IDEuMDItLjAyIDIuMDYuNjIgMi44OC4wOC4xMS4xOS4xOS4yOC4yOVYxOWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi02Ljk0Yy4wOS0uMDkuMi0uMTguMjgtLjI4LjY0LS44Mi44Ny0xLjg3LjYyLTIuODl6bS0yLjk5LTMuOSAxLjA1IDQuMzdjLjEuNDIuMDEuODQtLjI1IDEuMTctLjE0LjE4LS40NC40Ny0uOTQuNDctLjYxIDAtMS4xNC0uNDktMS4yMS0xLjE0TDE2Ljk4IDVsMS45My0uMDF6TTEzIDVoMS45NmwuNTQgNC41MmMuMDUuMzktLjA3Ljc4LS4zMyAxLjA3LS4yMi4yNi0uNTQuNDEtLjk1LjQxLS42NyAwLTEuMjItLjU5LTEuMjItMS4zMVY1ek04LjQ5IDkuNTIgOS4wNCA1SDExdjQuNjljMCAuNzItLjU1IDEuMzEtMS4yOSAxLjMxLS4zNCAwLS42NS0uMTUtLjg5LS40MWExLjQyIDEuNDIgMCAwIDEtLjMzLTEuMDd6bS00LjQ1LS4xNkw1LjA1IDVoMS45N2wtLjU4IDQuODZjLS4wOC42NS0uNiAxLjE0LTEuMjEgMS4xNC0uNDkgMC0uOC0uMjktLjkzLS40Ny0uMjctLjMyLS4zNi0uNzUtLjI2LTEuMTd6TTUgMTl2LTYuMDNjLjA4LjAxLjE1LjAzLjIzLjAzLjg3IDAgMS42Ni0uMzYgMi4yNC0uOTUuNi42IDEuNC45NSAyLjMxLjk1Ljg3IDAgMS42NS0uMzYgMi4yMy0uOTMuNTkuNTcgMS4zOS45MyAyLjI5LjkzLjg0IDAgMS42NC0uMzUgMi4yNC0uOTUuNTguNTkgMS4zNy45NSAyLjI0Ljk1LjA4IDAgLjE1LS4wMi4yMy0uMDNWMTlINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0cm9sbGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMjBjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yIDIgLjkgMiAyek02IDE4Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptOS05LjM0TDkuNiAxNUgxNVY4LjY2TTE4LjY1IDNDMjAuNTIgMyAyMiA0LjU2IDIyIDYuNDhWN2gtMnYtLjUyQzIwIDUuNjYgMTkuNDIgNSAxOC42NSA1Yy0uNjggMC0xLjA3LjU5LTEuNjUgMS4yN1YxNWMwIDEuMS0uOSAyLTIgMkg3LjQzYy0uODUgMC0xLjMxLTEtLjc2LTEuNjVsOC44LTEwLjMyQzE2LjExIDQuMjcgMTYuOTkgMyAxOC42NSAzek0xMCA1Yy0uNjUgMC0xLjI5LjA5LTEuOTEuMjdsMS40IDEuNCAxLjM3LTEuNjFBNi4xMSA2LjExIDAgMCAwIDEwIDVtMC0yYzEuNTYgMCAzLjAzLjQgNC4zIDEuMUw5LjYgOS42MSA0LjcyIDQuNzJBOC45NjIgOC45NjIgMCAwIDEgMTAgM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhcGFzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTBWMWgtOHY5YzAgMS44NiAxLjI4IDMuNDEgMyAzLjg2VjIxaC0ydjJoNnYtMmgtMnYtNy4xNGMxLjcyLS40NSAzLTIgMy0zLjg2em0tMi03djNoLTRWM2g0em0tNCA3VjhoNHYyYzAgMS4xLS45IDItMiAycy0yLS45LTItMnptLTYtMUg4VjhoMmEyLjUgMi41IDAgMCAwIDAtNUg4VjFINnYySDRhMi41IDIuNSAwIDAgMCAwIDVoMnYxSDRhMi41IDIuNSAwIDAgMCAwIDVoMnY5aDJ2LTloMmEyLjUgMi41IDAgMCAwIDAtNXpNNCA2Yy0uMjggMC0uNS0uMjItLjUtLjVTMy43MiA1IDQgNWg2Yy4yOCAwIC41LjIyLjUuNXMtLjIyLjUtLjUuNUg0em02IDZINGMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41aDZjLjI4IDAgLjUuMjIuNS41cy0uMjIuNS0uNS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNmgtMlY0aDJ2MnptMiAxaC0ydjJoMlY3em0xIDJoMlY3aC0ydjJ6bTAtNWgtMnYyaDJWNHptLTQgM2gtMnYyaDJWN3ptNCAzaC0ydjJoMnYtMnptLTMgMGgtMnYyaDJ2LTJ6bS0zLTZoLTJ2MmgyVjR6bTcgMTEuODJ2NC4xNWMwIC41Ni0uNDcgMS4wMy0xLjAzIDEtMi44OS0uMTctNS42LTEuMDMtNy45Ny0yLjRBMTcuOTk5IDE3Ljk5OSAwIDAgMSA0LjQzIDEyYTE3Ljg5IDE3Ljg5IDAgMCAxLTIuNC03Ljk3QzIgMy40NyAyLjQ3IDMgMy4wMyAzaDQuMTVjLjQ4IDAgLjg5LjM0Ljk4LjhsLjc0IDMuNjhhLjk5Ljk5IDAgMCAxLS4yNy45TDYuMSAxMC45YzEuNDMgMi41IDMuNSA0LjU3IDYgNmwyLjUyLTIuNTJhLjk4Ljk4IDAgMCAxIC45LS4yN2wzLjY3LjczYy40Ny4wOS44MS41LjgxLjk4ek01LjE4IDguOTlsMS42NS0xLjY1TDYuMzYgNUg0LjEzYy4xNyAxLjM3LjUzIDIuNzEgMS4wNSAzLjk5ek0xOCAxNi42NGwtMi4zNC0uNDctMS42NSAxLjY1YzEuMjguNTIgMi42My44NyAzLjk5IDEuMDV2LTIuMjN6TTIwIDR2MmgyVjRoLTJ6bTAgOGgydi0yaC0ydjJ6bS03LTJoLTJ2Mmgydi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVW1icmVsbGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDYuOTIgMTMgNS43N1YzLjRjMC0uMjYuMjItLjQ4LjUtLjQ4cy41LjIxLjUuNDhWNGgydi0uNkMxNiAyLjA3IDE0Ljg4IDEgMTMuNSAxUzExIDIuMDcgMTEgMy40djIuMzdMOS41IDYuOTIgNiA2LjA3bDUuMDUgMTUuMjVjLjE1LjQ1LjU1LjY4Ljk1LjY4cy44LS4yMy45NS0uNjlMMTggNi4wN2wtMy41Ljg1ek0xMy4yOCA4LjVsLjc2LjU4LjkyLS4yM0wxMyAxNC44VjguMjlsLjI4LjIxem0tMy4zMi41OS43Ni0uNTguMjgtLjIydjYuNTFMOS4wMyA4Ljg2bC45My4yM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZhcGVGcmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxNi41aDFjMS4zMyAwIDIuNzEtLjE4IDQtLjV2M2MtMS4yOS0uMzItMi42Ny0uNS00LS41SDJ2LTJ6TTE2LjE3IDE5SDh2LTNoNS4xN0wxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40MSAxLjQxLTMuNi0zLjZ6bTIuNjYtM0gyMnYzaC0uMTdsLTMtM3pNMTEgMTcuNWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjUuMjIuNS41LjUuNS0uMjIuNS0uNXptMTEtNC43NFYxNWgtMS41di0yLjIzYzAtMi4yNC0xLjc2LTQuMDctNC00LjA3VjcuMmMxLjAyIDAgMS44NS0uODMgMS44NS0xLjg1UzE3LjUyIDMuNSAxNi41IDMuNVYyYzEuODUgMCAzLjM1IDEuNSAzLjM1IDMuMzUgMCAuOTMtLjM4IDEuNzctMSAyLjM4IDEuODcuODkgMy4xNSAyLjgxIDMuMTUgNS4wM3pNMTEuMTUgOC4zMlY4LjNjMC0xLjg1IDEuNS0zLjM1IDMuMzUtMy4zNXYxLjVjLTEuMDIgMC0xLjg1LjczLTEuODUgMS43NXMuODMgMiAxLjg1IDJoMS41M2MxLjg3IDAgMy40NyAxLjM1IDMuNDcgMy4xNlYxNUgxOHYtMS4zYzAtMS4zMS0uOTItMi4wNS0xLjk3LTIuMDVoLTEuNTVsLTMuMzMtMy4zM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZhcGluZ1Jvb21zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxNi41aDFjMS4zMyAwIDIuNzEtLjE4IDQtLjV2M2MtMS4yOS0uMzItMi42Ny0uNS00LS41SDJ2LTJ6bTIwLS41djNIOHYtM2gxNHptLTExIDEuNWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjUuMjIuNS41LjUuNS0uMjIuNS0uNXptMTEtNC43NFYxNWgtMS41di0yLjIzYzAtMi4yNC0xLjc2LTQuMDctNC00LjA3VjcuMmMxLjAyIDAgMS44NS0uODMgMS44NS0xLjg1UzE3LjUyIDMuNSAxNi41IDMuNVYyYzEuODUgMCAzLjM1IDEuNSAzLjM1IDMuMzUgMCAuOTMtLjM4IDEuNzctMSAyLjM4IDEuODcuODkgMy4xNSAyLjgxIDMuMTUgNS4wM3ptLTIuNS42VjE1SDE4di0xLjNjMC0xLjMxLS45Mi0yLjA1LTEuOTctMi4wNUgxNC41YTMuMzUgMy4zNSAwIDAgMSAwLTYuN3YxLjVjLTEuMDIgMC0xLjg1LjczLTEuODUgMS43NXMuODMgMiAxLjg1IDJoMS41M2MxLjg3IDAgMy40NyAxLjM1IDMuNDcgMy4xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZpbGxhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTBjLTEuMSAwLTIgLjktMiAyaC0xVjNMMyA4djEzaDE4di05YzAtMS4xLS45LTItMi0yek01IDkuMzdsOS0zLjQ2VjEySDl2N0g1VjkuMzd6TTE5IDE5aC0zdi0zaC0ydjNoLTN2LTVoOHY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2FzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjc1IDE2YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUgxMnYtMWg2Ljc1Yy42OSAwIDEuMjUtLjU2IDEuMjUtMS4yNSAwLS42Ny0uNTMtMS4yLTEuMTgtMS4yNEw4Ljg3IDEwbDEuNDgtMi42Yy4wOS0uMTcuMTQtLjM0LjE0LS41NCAwLS4yNi0uMDktLjUtLjI2LS43TDkuMTIgNWwtNy4xOCA2LjhjLS42LjU2LS45NCAxLjM1LS45NCAyLjE3VjIwYzAgMS42NiAxLjM0IDMgMyAzaDEzLjc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUgxMnYtMWg3Ljc1YTEuMjUgMS4yNSAwIDAgMCAwLTIuNUgxMnYtMWg4Ljc1ek0xMCAyMUg0Yy0uNTUgMC0xLS40NS0xLTF2LTZjMC0uMzkuMjMtLjY0LjM2LS43NUw3IDkuODdWMTJoM3Y5em0zLjUtMTJjLjgzIDAgMS41LS42NyAxLjUtMS41IDAtLjg0LTEuNS0yLjUtMS41LTIuNVMxMiA2LjY2IDEyIDcuNWMwIC44My42NyAxLjUgMS41IDEuNXptNS04UzE2IDMuODMgMTYgNS41YTIuNSAyLjUgMCAwIDAgNSAwQzIxIDMuODMgMTguNSAxIDE4LjUgMXptMCA1LjVjLS41NSAwLTEtLjQ1LTEtMSAwLS40LjQzLTEuMjIgMS0yLjA1LjU3LjgzIDEgMS42NSAxIDIuMDUgMCAuNTUtLjQ1IDEtMSAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F0ZXJEYW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzIDIgMTJoM3Y4aDE0di04aDNMMTIgM3pNNyAxOHYtNy44MWw1LTQuNSA1IDQuNVYxOEg3em03LTRjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIDItNCAyLTQgMiAyLjkgMiA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2hlZWxjaGFpclBpY2t1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNSA0YzAtMS4xMS44OS0yIDItMnMyIC44OSAyIDItLjg5IDItMiAyLTItLjg5LTItMnptNS41IDYuOTVWOWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnY2aDJ2N2gzLjV2LS4xMWMtMS4yNC0xLjI2LTItMi45OS0yLTQuODkgMC0yLjU4IDEuNDEtNC44NCAzLjUtNi4wNXpNMTYuNSAxN2MwIDEuNjUtMS4zNSAzLTMgM3MtMy0xLjM1LTMtM2MwLTEuMTEuNjEtMi4wNiAxLjUtMi41OHYtMi4xNmMtMi4wMi42NC0zLjUgMi41MS0zLjUgNC43NCAwIDIuNzYgMi4yNCA1IDUgNXM1LTIuMjQgNS01aC0yem0zLjA0LTNIMTVWOGgtMnY4aDUuNDZsMi40NyAzLjcxIDEuNjYtMS4xMS0zLjA1LTQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJhdGhyb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE0YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMS0uNDUgMS0xIDEtMS0uNDUtMS0xem00IDFjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMyAwYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bS0zLTcuNWMtMS43NiAwLTMuMjIgMS4zMS0zLjQ2IDNoNi45M2EzLjUyIDMuNTIgMCAwIDAtMy40Ny0zTTEyIDZjMi43NiAwIDUgMi4yNCA1IDV2MUg3di0xYzAtMi43NiAyLjI0LTUgNS01ek05IDE4Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTMgMGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0zIDBjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptNS0xNEg0djE2aDE2VjRtMC0yYzEuMSAwIDIgLjkgMiAydjE2YzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjRjMC0xLjEuOS0yIDItMmgxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTAuNzhWOGMwLTEuNjUtMS4zNS0zLTMtM2gtNGMtLjc3IDAtMS40Ny4zLTIgLjc4LS41My0uNDgtMS4yMy0uNzgtMi0uNzhINkM0LjM1IDUgMyA2LjM1IDMgOHYyLjc4Yy0uNjEuNTUtMSAxLjM0LTEgMi4yMnY2aDJ2LTJoMTZ2Mmgydi02YzAtLjg4LS4zOS0xLjY3LTEtMi4yMnpNMTQgN2g0Yy41NSAwIDEgLjQ1IDEgMXYyaC02VjhjMC0uNTUuNDUtMSAxLTF6TTUgOGMwLS41NS40NS0xIDEtMWg0Yy41NSAwIDEgLjQ1IDEgMXYySDVWOHptLTEgN3YtMmMwLS41NS40NS0xIDEtMWgxNGMuNTUgMCAxIC40NSAxIDF2Mkg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmVkcm9vbUJhYnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Ljk0IDE0LjA0Yy0uMzQuMzQtLjcxLjY0LTEuMS45MkwxNiAxMy41VjExaDF2LTFoLTUuNjJMOS42NSA3SDZsMSAuNzZMNS41IDkuNWwuOTUgMUw4IDkuNTF2My45OWwtLjg0IDEuNDZjLS4zOS0uMjctLjc2LS41OC0xLjEtLjkyTDUgMTUuMWMxLjg3IDEuODcgNC4zNiAyLjkgNyAyLjlzNS4xMy0xLjAzIDctMi45bC0xLjA2LTEuMDZ6bS05LjQ5IDEuNjcuMDMtLjA2LjgxLTEuNDFjMS43NC42NSAzLjY2LjY1IDUuNCAwbC44MSAxLjQxLjAzLjA2Yy0xLjEuNTEtMi4zLjc5LTMuNTUuNzlzLTIuNDMtLjI3LTMuNTMtLjc5ek0yMCA0djE2SDRWNGgxNm0wLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmVkcm9vbUNoaWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0djE2SDRWNGgxNm0wLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMy41IDguNjdWOWMwLTEuMS0uOS0yLTItMmgtNWMtMS4xIDAtMiAuOS0yIDJ2MS42N2MtLjg4LjM1LTEuNSAxLjItMS41IDIuMlYxN2gxLjV2LTEuNWg5VjE3SDE4di00LjEzYzAtMS0uNjItMS44NS0xLjUtMi4yek0xNSA4LjV2Mkg5di0yaDZ6bS03LjUgNC4zN2MwLS40OC4zOS0uODcuODctLjg3aDcuMjdjLjQ4IDAgLjg3LjM5Ljg3Ljg3VjE0aC05di0xLjEzSDcuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJlZHJvb21QYXJlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjM1IDExLjQ1VjljMC0xLjEtLjktMi0yLTJIMTNjLS4zNyAwLS43Mi4xMi0xIC4zMi0uMjgtLjItLjYzLS4zMi0xLS4zMkg3LjY1Yy0xLjEgMC0yIC45LTIgMnYyLjQ1Yy0uNC40Ni0uNjUgMS4wNi0uNjUgMS43MlYxN2gxLjV2LTEuNWgxMVYxN0gxOXYtMy44M2MwLS42Ni0uMjUtMS4yNi0uNjUtMS43MnptLTEuNi0uOTVoLTR2LTJoNHYyem0tOS41LTJoNHYyaC00di0yek0xNy41IDE0aC0xMXYtMWMwLS41NS40NS0xIDEtMWg5Yy41NSAwIDEgLjQ1IDEgMXYxek0yMCA0djE2SDRWNGgxNm0wLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQmxlbmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMTMgMTUuMTMgMTggM2gtNFYyaC00djFINWMtMS4xIDAtMiAuOS0yIDJ2NGMwIDEuMS45IDIgMiAyaDIuMjNsLjY0IDQuMTNDNi43NCAxNi4wNSA2IDE3LjQzIDYgMTl2MWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJ2LTFjMC0xLjU3LS43NC0yLjk1LTEuODctMy44N3pNNSA5VjVoMS4zMWwuNjIgNEg1em0xMC42Ny00LTEuMzggOUg5LjcyTDguMzMgNWg3LjM0ek0xNiAyMEg4di0xYzAtMS42NSAxLjM1LTMgMy0zaDJjMS42NSAwIDMgMS4zNSAzIDN2MXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE4XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYW1lcmFJbmRvb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEzdi0xYzAtLjU1LS40NS0xLTEtMUg5Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtMWwyIDEuMDZ2LTQuMTJMMTQgMTN6bS0yLTcuNSA2IDQuNXY5SDZ2LTlsNi00LjVNMTIgMyA0IDl2MTJoMTZWOWwtOC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2FtZXJhT3V0ZG9vciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjMC0uNTUtLjQ1LTEtMS0xaC00Yy0uNTUgMC0xIC40NS0xIDF2NGMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtMWwyIDEuMDZ2LTQuMTJMMTggMTR2LTF6TTEyIDMgNCA5djEyaDE2di0ySDZ2LTlsNi00LjUgNiA0LjV2MWgyVjlsLTgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoYWlyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0ySDdjLTEuMSAwLTIgLjktMiAydjNjMCAxLjEuOSAyIDIgMmgxdjJIN2MtMS4xIDAtMiAuOS0yIDJ2N2gydi0zaDEwdjNoMnYtN2MwLTEuMS0uOS0yLTItMmgtMXYtMmgxek03IDhWNWgxMHYzSDd6bTEwIDhIN3YtMmgxMHYyem0tMy00aC00di0yaDR2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoYWlyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA4VjZjMC0xLjY1LTEuMzUtMy0zLTNIN0M1LjM1IDMgNCA0LjM1IDQgNnYyYy0xLjY1IDAtMyAxLjM1LTMgM3Y1YzAgMS42NSAxLjM1IDMgMyAzdjFjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xdi0xaDEydjFjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xdi0xYzEuNjUgMCAzLTEuMzUgMy0zdi01YzAtMS42NS0xLjM1LTMtMy0zek02IDZjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxdjIuNzhjLS42MS41NS0xIDEuMzQtMSAyLjIydjJIN3YtMmMwLS44OC0uMzktMS42Ny0xLTIuMjJWNnptMTUgMTBjMCAuNTUtLjQ1IDEtMSAxSDRjLS41NSAwLTEtLjQ1LTEtMXYtNWMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NGgxNHYtNGMwLS41NS40NS0xIDEtMXMxIC40NSAxIDF2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvZmZlZU1ha2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA2VjRoMlYySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTR2LTJoLTQuMDNBNC45NjYgNC45NjYgMCAwIDAgMTggMTZ2LTVIOHY1YzAgMS42NC44MSAzLjA5IDIuMDMgNEg2VjRoMnYyYzAgLjU1LjQ1IDEgMSAxaDhjLjU1IDAgMS0uNDUgMS0xem0tOCAxMHYtM2g2djNjMCAxLjY1LTEuMzUgMy0zIDNzLTMtMS4zNS0zLTN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTNcIixcImN5XCI6XCI5XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDb2ZmZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgM0g2Yy0xLjEgMC0yIC45LTIgMnY1LjcxYzAgMy44MyAyLjk1IDcuMTggNi43OCA3LjI5IDMuOTYuMTIgNy4yMi0zLjA2IDcuMjItN3YtMWguNWMxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMyMC40MyAzIDE4LjUgM3pNMTYgNXYzSDZWNWgxMHptMCA1djFjMCAyLjc2LTIuMjQgNS01IDVzLTUtMi4yNC01LTV2LTFtMTIuNS0ySDE4VjVoLjVjLjgzIDAgMS41LjY3IDEuNSAxLjVTMTkuMzMgOCAxOC41IDh6TTQgMTloMTZ2Mkg0di0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGluaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC43NSA2Yy0xLjM3IDAtMi41IDEuNTItMi41IDMuNCAwIDEuNDguNyAyLjcxIDEuNjcgMy4xOGwuMDguMDRWMTloMS41di02LjM4bC4wOC0uMDNjLjk3LS40NyAxLjY3LTEuNyAxLjY3LTMuMTggMC0xLjg4LTEuMTItMy40MS0yLjUtMy40MU0xMC41IDZjLS4yNyAwLS41LjIyLS41LjVWOWgtLjc1VjYuNWMwLS4yOC0uMjItLjUtLjUtLjVzLS41LjIyLS41LjVWOUg3LjVWNi41YzAtLjI4LS4yMi0uNS0uNS0uNXMtLjUuMjItLjUuNXYzLjhjMCAuOTMuNjQgMS43MSAxLjUgMS45M1YxOWgxLjV2LTYuNzdjLjg2LS4yMiAxLjUtMSAxLjUtMS45M1Y2LjVjMC0uMjgtLjIyLS41LS41LS41ek0yMCA0SDR2MTZoMTZWNG0wLTJjMS4xIDAgMiAuOSAyIDJ2MTZjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWNGMwLTEuMS45LTIgMi0yaDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9vckJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5VjVjMC0xLjEtLjktMi0yLTJIN2MtMS4xIDAtMiAuOS0yIDJ2MTRIM3YyaDE4di0yaC0yem0tMiAwSDdWNWgxMHYxNHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMWgydjJIOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvb3JGcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTlWNWMwLTEuMS0uOS0yLTItMkg3Yy0xLjEgMC0yIC45LTIgMnYxNEgzdjJoMTh2LTJoLTJ6bS0yIDBIN1Y1aDEwdjE0em0tNC04aDJ2MmgtMnYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURvb3JTbGlkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxM0g4di0yaDJ2MnptNi0yaC0ydjJoMnYtMnptNSA4djJIM3YtMmgxVjVjMC0xLjEuOS0yIDItMmgxMmMxLjEgMCAyIC45IDIgMnYxNGgxek0xMSA1SDZ2MTRoNVY1em03IDBoLTV2MTRoNVY1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9vcmJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE2LjVoMmMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMXptNC0xLjV2LTIuMzRjMC0xLjU0LS44MS0yLjgyLTIuMjUtMy4xNnYtLjI1YzAtLjQxLS4zNC0uNzUtLjc1LS43NXMtLjc1LjM0LS43NS43NXYuMjVDOS44MiA5Ljg0IDkgMTEuMTIgOSAxMi42NlYxNUg4djFoOHYtMWgtMXptLTMtOS41TDYgMTB2OWgxMnYtOWwtNi00LjVNMTIgM2w4IDZ2MTJINFY5bDgtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZlZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY4bC01LTV6bTMgMTZINVY1aDEwdjRoNHYxMHpNNyAxN2gxMHYtMkg3djJ6bTUtMTBIN3YyaDVWN3ptLTUgNmgxMHYtMkg3djJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGbGF0d2FyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNy4wOGMwIDEuNzctLjg0IDMuMjUtMiAzLjgyVjIxaC0yVjEwLjljLTEuMTYtLjU3LTItMi4wNS0yLTMuODJDMTAuMDEgNC44MyAxMS4zNSAzIDEzIDNjMS42NiAwIDMgMS44MyAzIDQuMDh6TTE3IDN2MThoMnYtOGgyVjdjMC0xLjc2LTEuMjQtNC00LTR6TTguMjggM2MtLjQgMC0uNzIuMzItLjcyLjcyVjdoLS44NFYzLjcyQzYuNzIgMy4zMiA2LjQgMyA2IDNzLS43Mi4zMi0uNzIuNzJWN2gtLjg0VjMuNzJjMC0uNC0uMzItLjcyLS43Mi0uNzJTMyAzLjMyIDMgMy43MlY5YzAgMS4xLjkgMiAyIDJ2MTBoMlYxMWMxLjEgMCAyLS45IDItMlYzLjcyYzAtLjQtLjMyLS43Mi0uNzItLjcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR2FyYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxOEg0VjRoMTZ2MTZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Ljc4IDE4LjVoLjQ0Yy40MyAwIC43OC0uMzYuNzgtLjgxVjE2LjVoMTB2MS4xOWMwIC40NS4zNC44MS43OC44MWguNDRjLjQzIDAgLjc4LS4zNi43OC0uODF2LTYuNWMtLjgyLTIuNDYtMS4zNC00LjAzLTEuNTYtNC42OS0uMDUtLjE2LS4xMi0uMjktLjE5LS40LS4wMi0uMDItLjAzLS4wNC0uMDUtLjA3LS4zOC0uNTItLjkyLS41My0uOTItLjUzSDcuNzJzLS41NC4wMS0uOTIuNTRjLS4wMi4wMi0uMDMuMDQtLjA1LjA2LS4wNy4xMS0uMTQuMjQtLjE5LjQtLjIyLjY2LS43NCAyLjIyLTEuNTYgNC42OXY2LjVjMCAuNDUuMzUuODEuNzguODF6bTIuNTUtMTFoNy4zNGwuMjMuNjkuNDMgMS4zMUg3LjY3bC42Ni0yek03IDExLjUxdi0uMDFoMTB2M0g3di0yLjk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDYuMDZWM2gtMnYzLjA2Yy00LjUuNS04IDQuMzEtOCA4LjkzQzMgMTYuMSAzLjkgMTcgNS4wMSAxN0g4YzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTRoMi45OWMxLjExIDAgMi4wMS0uOSAyLjAxLTIuMDEgMC00LjYyLTMuNS04LjQzLTgtOC45M3pNMTIgMTljLTEuMSAwLTItLjktMi0yaDRjMCAxLjEtLjkgMi0yIDJ6bTAtNEg1YzAtMy44NiAzLjE0LTcgNy03czcgMy4xNCA3IDdoLTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMaXZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Ljc1IDEwLjM1VjljMC0xLjY2LTEuMzQtMy0zLTNoLTUuNWMtMS42NiAwLTMgMS4zNC0zIDN2MS4zNUM1LjUxIDEwLjc4IDUgMTEuNTggNSAxMi41VjE2YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJ2LTMuNWMwLS45Mi0uNTEtMS43Mi0xLjI1LTIuMTV6TTkuMjUgNy41aDUuNWMuODMgMCAxLjUuNjcgMS41IDEuNXYxLjAzQTIuNDggMi40OCAwIDAgMCAxNCAxMi41di41aC00di0uNWMwLTEuMy0uOTktMi4zNS0yLjI1LTIuNDdWOWMwLS44My42Ny0xLjUgMS41LTEuNXpNMTcuNSAxNmMwIC4yOC0uMjIuNS0uNS41SDdjLS4yOCAwLS41LS4yMi0uNS0uNXYtMy41YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYyaDd2LTJjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxVjE2ek0yMCA0djE2SDRWNGgxNm0wLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFuYWdlU2VhcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDlIMlY3aDV2MnptMCAzSDJ2Mmg1di0yem0xMy41OSA3LTMuODMtMy44M2MtLjguNTItMS43NC44My0yLjc2LjgzLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNWMwIDEuMDItLjMxIDEuOTYtLjgzIDIuNzVMMjIgMTcuNTkgMjAuNTkgMTl6TTE3IDExYzAtMS42NS0xLjM1LTMtMy0zcy0zIDEuMzUtMyAzIDEuMzUgMyAzIDMgMy0xLjM1IDMtM3pNMiAxOWgxMHYtMkgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQb2RjYXN0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTJjMCAuNzQtLjQgMS4zOC0xIDEuNzJWMjJoLTJ2LTguMjhjLS42LS4zNS0xLS45OC0xLTEuNzIgMC0xLjEuOS0yIDItMnMyIC45IDIgMnptLTItNmMtMy4zMSAwLTYgMi42OS02IDYgMCAxLjc0Ljc1IDMuMzEgMS45NCA0LjRsMS40Mi0xLjQyQTMuOTU3IDMuOTU3IDAgMCAxIDggMTJjMC0yLjIxIDEuNzktNCA0LTRzNCAxLjc5IDQgNGMwIDEuMTktLjUzIDIuMjUtMS4zNiAyLjk4bDEuNDIgMS40MkE1Ljk1NyA1Ljk1NyAwIDAgMCAxOCAxMmMwLTMuMzEtMi42OS02LTYtNnptMC00QzYuNDggMiAyIDYuNDggMiAxMmMwIDIuODUgMS4yIDUuNDEgMy4xMSA3LjI0bDEuNDItMS40MkE3Ljk4NyA3Ljk4NyAwIDAgMSA0IDEyYzAtNC40MSAzLjU5LTggOC04czggMy41OSA4IDhjMCAyLjI5LS45OCA0LjM2LTIuNTMgNS44MmwxLjQyIDEuNDJDMjAuOCAxNy40MSAyMiAxNC44NSAyMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNob3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxN2MwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMSAuNDUtMSAxLTEgMSAuNDUgMSAxem0zLTFjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptNCAwYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTMtNHYySDV2LTJjMC0zLjUzIDIuNjEtNi40MyA2LTYuOTJWM2gydjIuMDhjMy4zOS40OSA2IDMuMzkgNiA2Ljkyem0tMiAwYzAtMi43Ni0yLjI0LTUtNS01cy01IDIuMjQtNSA1aDEwem0tOSA3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTQgMGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem00IDBjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhYmxlQmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNy41QzIyIDUuNTcgMTcuNTIgNCAxMiA0UzIgNS41NyAyIDcuNWMwIDEuODEgMy45NSAzLjMxIDkgMy40OFYxNUg5LjM1Yy0uODIgMC0xLjU1LjUtMS44NiAxLjI2TDYgMjBoMmwxLjItM2g1LjZsMS4yIDNoMmwtMS41LTMuNzRjLS4zLS43Ni0xLjA0LTEuMjYtMS44NS0xLjI2SDEzdi00LjAyYzUuMDUtLjE3IDktMS42NyA5LTMuNDh6TTEyIDZjNC4wNSAwIDYuNzQuODYgNy43MiAxLjVDMTguNzQgOC4xNCAxNi4wNSA5IDEyIDlzLTYuNzQtLjg2LTcuNzItMS41QzUuMjYgNi44NiA3Ljk1IDYgMTIgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRhYmxlUmVzdGF1cmFudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjk2IDkuNzMtMS40My01YS45OTYuOTk2IDAgMCAwLS45Ni0uNzNINC40M2MtLjQ1IDAtLjg0LjMtLjk2LjczbC0xLjQzIDVjLS4xOC42My4zIDEuMjcuOTYgMS4yN2gyLjJMNCAyMGgybC42Ny01aDEwLjY3bC42NiA1aDJsLTEuMi05SDIxYy42NiAwIDEuMTQtLjY0Ljk2LTEuMjd6TTYuOTMgMTNsLjI3LTJoOS42bC4yNyAySDYuOTN6bS0yLjYtNCAuODYtM2gxMy42M2wuODYgM0g0LjMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2luZG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgOGgtNlY1aDZ2NnptLTgtNnY2SDVWNWg2em0tNiA4aDZ2Nkg1di02em04IDZ2LTZoNnY2aC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lWWFyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTNjLTMuMzEgMC02IDIuNjktNiA2IDMuMzEgMCA2LTIuNjkgNi02ek02IDEzYzAgMy4zMSAyLjY5IDYgNiA2IDAtMy4zMS0yLjY5LTYtNi02em0yLTEuOTdhMS41NjIgMS41NjIgMCAwIDAgMi40NSAxLjI4bC0uMDEuMTJjMCAuODYuNyAxLjU2IDEuNTYgMS41NnMxLjU2LS43IDEuNTYtMS41NmwtLjAxLS4xMmMuMjUuMTcuNTYuMjguODkuMjguODYgMCAxLjU2LS43IDEuNTYtMS41NiAwLS42Mi0uMzctMS4xNi0uODktMS40MS41Mi0uMjQuODktLjc4Ljg5LTEuNGExLjU2MiAxLjU2MiAwIDAgMC0yLjQ1LTEuMjhsLjAxLS4xMmMwLS44Ni0uNy0xLjU2LTEuNTYtMS41NnMtMS41Ni43LTEuNTYgMS41NmwuMDEuMTJBMS41NjIgMS41NjIgMCAwIDAgOCA4LjIyYzAgLjYyLjM3IDEuMTYuODkgMS40MS0uNTIuMjQtLjg5Ljc4LS44OSAxLjR6bTQtMi45N2MuODYgMCAxLjU2LjcgMS41NiAxLjU2cy0uNyAxLjU2LTEuNTYgMS41Ni0xLjU2LS43LTEuNTYtMS41Ni43LTEuNTYgMS41Ni0xLjU2ek0yMCA0djE2SDRWNGgxNm0wLTJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lMThVcFJhdGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSAxNUgxMFY5SDd2MS41aDEuNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDE1SDE1Yy41NSAwIDEtLjQ1IDEtMXYtNGMwLS41NS0uNDUtMS0xLTFoLTIuNWMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDF6bS41LTVoMS41djEuNUgxM1YxMHptMCAyLjVoMS41VjE0SDEzdi0xLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmU2RnRBcGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTQgMy40M2MwLS44MS0uNDgtMS41My0xLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgMiA5LjQzVjEwaDh2LS41N3pNMTggNmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTQgMy40M2MwLS44MS0uNDgtMS41My0xLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgMTQgOS40M1YxMGg4di0uNTd6TTE5IDE3di0yLjAxTDUgMTV2MmwtMy0zIDMtM3YyLjAxTDE5IDEzdi0ybDMgMy0zIDN6bS05IDJ2LTFINy41Yy0uMjggMC0uNS4yMi0uNS41djNjMCAuMjguMjIuNS41LjVoMmMuMjggMCAuNS0uMjIuNS0uNVYyMGMwLS4yOC0uMjItLjUtLjUtLjVIOFYxOWgyem0tMSAxLjV2LjVIOHYtLjVoMXptOC41LTEuNWgtMXYzaC0xdi0zaC0xdi0xaDN2MXptLTUgMHYuNWgxdjFoLTFWMjJoLTF2LTRIMTR2MWgtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQWRkTW9kZXJhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxMS4wOXYtNC43bDYtMi4yNSA2IDIuMjV2My42OWMuNzEuMSAxLjM4LjMxIDIgLjZWNWwtOC0zLTggM3Y2LjA5YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MS4wMy0uMDEuMDUtLjAyLjA4LS4wMi0uNzktLjc4LTEuNC0xLjc2LTEuNzUtMi44NEM3Ljc2IDE3LjUzIDYgMTQuNDIgNiAxMS4wOXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTJjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0zIDUuNWgtMi41VjIwaC0xdi0yLjVIMTR2LTFoMi41VjE0aDF2Mi41SDIwdjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBZGRSZWFjdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOS41QzcgOC42NyA3LjY3IDggOC41IDhzMS41LjY3IDEuNSAxLjVTOS4zMyAxMSA4LjUgMTEgNyAxMC4zMyA3IDkuNXptNSA4YzIuMzMgMCA0LjMxLTEuNDYgNS4xMS0zLjVINi44OWMuOCAyLjA0IDIuNzggMy41IDUuMTEgMy41em0zLjUtNi41Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNXMuNjcgMS41IDEuNSAxLjV6TTIyIDFoLTJ2MmgtMnYyaDJ2MmgyVjVoMlYzaC0yVjF6bS0yIDExYzAgNC40Mi0zLjU4IDgtOCA4cy04LTMuNTgtOC04IDMuNTgtOCA4LThjMS40NiAwIDIuODIuNCA0IDEuMDhWMi44NEE5LjkyOSA5LjkyOSAwIDAgMCAxMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJjMC0xLjA1LS4xNy0yLjA1LS40Ny0zSDE5LjRjLjM4LjkzLjYgMS45NC42IDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVBcmNoaXRlY3R1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjM2IDE4Ljc4IDYuNjEgMjFsMS42Mi0xLjU0IDIuNzctNy42Yy0uNjgtLjE3LTEuMjgtLjUxLTEuNzctLjk4bC0yLjg3IDcuOXpNMTQuNzcgMTAuODhjLS40OS40Ny0xLjEuODEtMS43Ny45OGwyLjc3IDcuNkwxNy4zOSAyMWwuMjYtMi4yMi0yLjg4LTcuOXpNMTUgOGMwLTEuMy0uODQtMi40LTItMi44MlYzaC0ydjIuMThDOS44NCA1LjYgOSA2LjcgOSA4YzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTN6bS0zIDFjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUFzc2lzdFdhbGtlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTIuNVwiLFwiY3lcIjpcIjQuNVwiLFwiclwiOlwiMlwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS43NyAxNy43Mi0uNjQtNi4zN0ExLjQ5IDEuNDkgMCAwIDAgMTcuNjQgMTBIMTZjLTEuNS0uMDItMi44Ni0uNTQtMy43Ni0xLjQ0bC0yLTEuOThBMS45NSAxLjk1IDAgMCAwIDguODMgNmMtLjUxIDAtMS4wMi4yLTEuNDEuNTlMNC4wOCA5LjkxYy0uNTMuNjgtLjUxIDEuNTctLjIxIDIuMTNsMS40MyAyLjgtMy4xNSA0LjA1IDEuNTcgMS4yNEw3LjQgMTUuNGwtLjE3LTEuMzYuNzcuNzFWMjBoMnYtNi4xMmwtMi4xMi0yLjEyIDIuMzYtMi4zNmMuOTQuOTQgMS43MiAxLjgyIDMuNTkgMi4zMkwxMyAyMGgxLjVsLjQxLTMuNWgzLjE4bC4xNCAxLjIyYy0uNDQuMjYtLjczLjc0LS43MyAxLjI4IDAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNWMwLS41NC0uMjktMS4wMi0uNzMtMS4yOHpNMTUuMDkgMTVsLjQxLTMuNWgybC40MSAzLjVoLTIuODJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVCYWNrSGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDdhMi41IDIuNSAwIDAgMC0zLTIuNDVWNGEyLjUgMi41IDAgMCAwLTMuMTctMi40MUEyLjUwOSAyLjUwOSAwIDAgMCAxMi41IDBjLTEuMjMgMC0yLjI1Ljg5LTIuNDYgMi4wNkEyLjUgMi41IDAgMCAwIDcgNC41djUuODljLS4zNC0uMzEtLjc2LS41NC0xLjIyLS42NmwtLjc3LS4yMWMtLjgzLS4yMy0xLjcuMDktMi4xOS44My0uMzguNTctLjQgMS4zMS0uMTUgMS45NWwyLjU2IDYuNDNBOC4zNTQgOC4zNTQgMCAwIDAgMTMgMjRjNC40MiAwIDgtMy41OCA4LThWN3ptLTIgOWMwIDMuMzEtMi42OSA2LTYgNi0yLjYxIDAtNC45NS0xLjU5LTUuOTEtNC4wMWwtMi42LTYuNTQuNTMuMTRjLjQ2LjEyLjgzLjQ2IDEgLjlMNyAxNWgyVjQuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVYxMmgyVjIuNWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVYxMmgyVjRjMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjV2OGgyVjdjMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjV2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUJsaW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMS41XCIsXCJjeVwiOlwiMy41XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjEzIDcuMTJjLS4xNy0uMzUtLjQ0LS42NS0uOC0uODVhMS45OCAxLjk4IDAgMCAwLTEuOTMtLjAzdi0uMDFMNCA5LjNWMTRoMnYtMy41NGwxLjUtLjg1QzcuMTggMTAuNzEgNyAxMS44NSA3IDEzdjUuMzNMNC40IDIxLjggNiAyM2wzLTQgLjIyLTMuNTRMMTEgMTh2NWgydi02LjVsLTEuOTctMi44MWMtLjA0LS41Mi0uMTQtMS43Ni40NS0zLjQuNzUgMS4xNCAxLjg4IDEuOTggMy4yIDIuNDFMMjAuNjMgMjNsLjg3LS41LTUuNDgtOS41SDE3di0yYy0uNDkgMC0yLjg4LjE3LTQuMDgtMi4yMVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQm95IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNy41Yy45NyAwIDEuNzUtLjc4IDEuNzUtMS43NVMxMi45NyA0IDEyIDRzLTEuNzUuNzgtMS43NSAxLjc1UzExLjAzIDcuNSAxMiA3LjV6TTE0IDIwdi01aDF2LTQuNWMwLTEuMS0uOS0yLTItMmgtMmMtMS4xIDAtMiAuOS0yIDJWMTVoMXY1aDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YTIgMiAwIDAgMCAyLTJjMC0uMzgtLjEtLjczLS4yOS0xLjAzTDEyIDBsLTEuNzEgMi45N2MtLjE5LjMtLjI5LjY1LS4yOSAxLjAzIDAgMS4xLjkgMiAyIDJ6bTYgM2gtNVY3aC0ydjJINmMtMS42NiAwLTMgMS4zNC0zIDN2OWMwIC41NS40NSAxIDEgMWgxNmMuNTUgMCAxLS40NSAxLTF2LTljMC0xLjY2LTEuMzQtMy0zLTN6bTEgMTFINXYtM2MuOS0uMDEgMS43Ni0uMzcgMi40LTEuMDFsMS4wOS0xLjA3IDEuMDcgMS4wN2MxLjMxIDEuMzEgMy41OSAxLjMgNC44OSAwbDEuMDgtMS4wNyAxLjA3IDEuMDdjLjY0LjY0IDEuNSAxIDIuNCAxLjAxdjN6bTAtNC41Yy0uNTEtLjAxLS45OS0uMi0xLjM1LS41N2wtMi4xMy0yLjEzLTIuMTQgMi4xM2MtLjc0Ljc0LTIuMDMuNzQtMi43NyAwTDguNDggMTIuOGwtMi4xNCAyLjEzYy0uMzUuMzYtLjgzLjU2LTEuMzQuNTdWMTJjMC0uNTUuNDUtMSAxLTFoMTJjLjU1IDAgMSAuNDUgMSAxdjMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNhdGNoaW5nUG9rZW1vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTJhMi41IDIuNSAwIDAgMS01IDAgMi41IDIuNSAwIDAgMSA1IDB6bTcuNSAwYzAgNS41Mi00LjQ4IDEwLTEwIDEwUzIgMTcuNTIgMiAxMiA2LjQ4IDIgMTIgMnMxMCA0LjQ4IDEwIDEwem0tMiAwaC00YzAtMi4yMS0xLjc5LTQtNC00cy00IDEuNzktNCA0SDRjMCA0LjQxIDMuNTkgOCA4IDhzOC0zLjU5IDgtOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNsZWFuSGFuZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi45OSA1IC42MyAxLjM3IDEuMzcuNjMtMS4zNy42M0wxNi45OSA5bC0uNjMtMS4zN0wxNC45OSA3bDEuMzctLjYzLjYzLTEuMzdNMjAgMTRjMS4xIDAgMi0uOSAyLTJzLTItNC0yLTQtMiAyLjktMiA0IC45IDIgMiAyem0tOS03LjlWNGgyYy41NyAwIDEuMS4xNyAxLjU1LjQ1bDEuNDMtMS40M0E0Ljg5OSA0Ljg5OSAwIDAgMCAxMyAySDcuNXYySDl2Mi4xMWMtMS43OC4zNy0zLjIgMS42OC0zLjc1IDMuMzloMi4xNkM3Ljk0IDguNjEgOC44OSA4IDEwIDhjMS42MiAwIDIuOTQgMS4yOSAyLjk5IDIuOWwyLjAxLjc1VjExYTUgNSAwIDAgMC00LTQuOXpNMjIgMTl2MWwtOCAyLjUtNy0xLjk0VjIySDFWMTFoNy45N2w2LjE2IDIuM0EyLjg5IDIuODkgMCAwIDEgMTcgMTZoMmMxLjY2IDAgMyAxLjM0IDMgM3pNNSAyMHYtN0gzdjdoMnptMTQuOS0xLjQzYy0uMTYtLjMzLS41MS0uNTYtLjktLjU2aC01LjM1Yy0uNTQgMC0xLjA3LS4wOS0xLjU4LS4yNmwtMi4zOC0uNzkuNjMtMS45IDIuMzguNzljLjMxLjEgMi4zLjE1IDIuMy4xNSAwLS4zNy0uMjMtLjctLjU3LS44M0w4LjYxIDEzSDd2NS40OGw2Ljk3IDEuOTMgNS45My0xLjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ28yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOWgtM2MtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTF2LTRjMC0uNTUtLjQ1LTEtMS0xem0tLjUgNC41aC0ydi0zaDJ2M3pNOCAxM3YxYzAgLjU1LS40NSAxLTEgMUg0Yy0uNTUgMC0xLS40NS0xLTF2LTRjMC0uNTUuNDUtMSAxLTFoM2MuNTUgMCAxIC40NSAxIDF2MUg2LjV2LS41aC0ydjNoMlYxM0g4em0xMi41IDIuNWgtMnYxaDNWMThIMTd2LTIuNWMwLS41NS40NS0xIDEtMWgydi0xaC0zVjEyaDMuNWMuNTUgMCAxIC40NSAxIDF2MS41YzAgLjU1LS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbXBvc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi44NyAxMS44MUEyLjUgMi41IDAgMCAxIDE1IDhoMWMxLjUxIDAgMi0xIDItMXMuNTUgNi0zIDZjLS40OSAwLS45NC0uMTQtMS4zMi0uMzgtLjI0LjY0LS41OSAxLjc2LS43NiAyLjk2IDEuMjYuMjIgMi4yOC44OSAyLjc3IDEuNzdBNi41MDUgNi41MDUgMCAwIDAgMTguNSAxMmgzYzAgNS4yNC00LjI2IDkuNS05LjUgOS41UzIuNSAxNy4yNCAyLjUgMTIgNi43NiAyLjUgMTIgMi41VjBsNCA0LTQgNFY1LjVjLTMuNTggMC02LjUgMi45Mi02LjUgNi41IDAgMi4yMSAxLjExIDQuMTcgMi44MSA1LjM1LjUxLS45MiAxLjYzLTEuNjIgMi45OC0xLjgtLjA5LS42OS0uMjYtMS40Mi0uNDktMi4wMy0uMzUuMy0uOC40OC0xLjMuNDgtMS4xIDAtMi0uOS0yLTJ2LS45OWMwLS41Ni0uMTktMS4wOS0uNS0xLjUxIDAgMCA0LjQ1LS4yMyA0LjUgMi41IDAgLjI5LS4wNi41Ni0uMTcuOC0uNDItLjMyLS44Ni0uNi0xLjMzLS44LjU4LjQzIDEuMzcgMS4zNyAyIDIuNi42Ny0xLjYyIDEuNjgtMy4yNyAzLTQuNi0uNzYuNTItMS40NyAxLjEyLTIuMTMgMS44MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvbm5lY3RXaXRob3V0Q29udGFjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE0SDlhOSA5IDAgMCAxIDktOXYyYy0zLjg3IDAtNyAzLjEzLTcgN3ptNy0zVjljLTIuNzYgMC01IDIuMjQtNSA1aDJjMC0xLjY2IDEuMzQtMyAzLTN6TTcgNGMwLTEuMTEtLjg5LTItMi0ycy0yIC44OS0yIDIgLjg5IDIgMiAyIDItLjg5IDItMnptNC40NS41aC0yQTIuOTkgMi45OSAwIDAgMSA2LjUgN2gtM0MyLjY3IDcgMiA3LjY3IDIgOC41VjExaDZWOC43NGE0Ljk3IDQuOTcgMCAwIDAgMy40NS00LjI0ek0xOSAxN2MxLjExIDAgMi0uODkgMi0ycy0uODktMi0yLTItMiAuODktMiAyIC44OSAyIDIgMnptMS41IDFoLTNhMi45OSAyLjk5IDAgMCAxLTIuOTUtMi41aC0yQTQuOTcgNC45NyAwIDAgMCAxNiAxOS43NFYyMmg2di0yLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29uc3RydWN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuNzgzIDE1LjE3MiAyLjEyMS0yLjEyMSA1Ljk5NiA1Ljk5Ni0yLjEyMSAyLjEyMXpNMTcuNSAxMGMxLjkzIDAgMy41LTEuNTcgMy41LTMuNSAwLS41OC0uMTYtMS4xMi0uNDEtMS42bC0yLjcgMi43LTEuNDktMS40OSAyLjctMi43Yy0uNDgtLjI1LTEuMDItLjQxLTEuNi0uNDFDMTUuNTcgMyAxNCA0LjU3IDE0IDYuNWMwIC40MS4wOC44LjIxIDEuMTZsLTEuODUgMS44NS0xLjc4LTEuNzguNzEtLjcxLTEuNDEtMS40MUwxMiAzLjQ5YTMgMyAwIDAgMC00LjI0IDBMNC4yMiA3LjAzbDEuNDEgMS40MUgyLjgxbC0uNzEuNzEgMy41NCAzLjU0LjcxLS43MVY5LjE1bDEuNDEgMS40MS43MS0uNzEgMS43OCAxLjc4LTcuNDEgNy40MSAyLjEyIDIuMTJMMTYuMzQgOS43OWMuMzYuMTMuNzUuMjEgMS4xNi4yMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNvb2tpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTAuNVwiLFwiY3lcIjpcIjguNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiMTMuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxNVwiLFwiclwiOlwiMVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS45NSAxMC45OWMtMS43OS0uMDMtMy43LTEuOTUtMi42OC00LjIyLTIuOTcgMS01Ljc4LTEuNTktNS4xOS00LjU2QzcuMTEuNzQgMiA2LjQxIDIgMTJjMCA1LjUyIDQuNDggMTAgMTAgMTAgNS44OSAwIDEwLjU0LTUuMDggOS45NS0xMS4wMXpNMTIgMjBjLTQuNDEgMC04LTMuNTktOC04IDAtMy4zMSAyLjczLTguMTggOC4wOC04LjAyLjQyIDIuNTQgMi40NCA0LjU2IDQuOTkgNC45NC4wNy4zNi41MiAyLjU1IDIuOTIgMy42M0MxOS43IDE2Ljg2IDE2LjA2IDIwIDEyIDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ29yb25hdmlydXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMTJjMCAuNTUtLjQ1IDEtMSAxcy0xLS40NS0xLTEgLjQ1LTEgMS0xIDEgLjQ1IDEgMXptNC4yNS0yYy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bS0zLjUgMGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpNMjIgMTEuMjV2MS41YzAgLjQxLS4zNC43NS0uNzUuNzVzLS43NS0uMzQtLjc1LS43NWgtMS41NGE2Ljk3OCA2Ljk3OCAwIDAgMS0xLjUyIDMuNjVsMS4wOSAxLjA5LjAxLS4wMWMuMjktLjI5Ljc3LS4yOSAxLjA2IDAgLjI5LjI5LjI5Ljc3IDAgMS4wNmwtMS4wNiAxLjA2Yy0uMjkuMjktLjc3LjI5LTEuMDYgMGEuNzUyLjc1MiAwIDAgMS0uMDEtMS4wNWwtMS4wOS0xLjA5YTcuMDE1IDcuMDE1IDAgMCAxLTMuNjQgMS41MXYxLjU0aC4wMWMuNDEgMCAuNzUuMzQuNzUuNzVzLS4zNC43NS0uNzUuNzVoLTEuNWMtLjQxIDAtLjc1LS4zNC0uNzUtLjc1cy4zMy0uNzQuNzQtLjc1di0xLjU1YTYuOTQ4IDYuOTQ4IDAgMCAxLTMuNjMtMS41MWwtMS4wOSAxLjA5LjAxLjAxYy4yOS4yOS4yOS43NyAwIDEuMDYtLjI5LjI5LS43Ny4yOS0xLjA2IDBMNC40IDE4LjU0YS43NTQuNzU0IDAgMCAxIDAtMS4wNmMuMjktLjI5Ljc2LS4yOSAxLjA1LS4wMWwxLjA5LTEuMDlhNi44OSA2Ljg5IDAgMCAxLTEuNS0zLjYzSDMuNWMwIC40MS0uMzQuNzUtLjc1Ljc1UzIgMTMuMTYgMiAxMi43NXYtMS41YzAtLjQxLjM0LS43NS43NS0uNzVzLjc1LjM0Ljc1Ljc1aDEuNTRjLjE1LTEuMzcuNjktMi42MSAxLjUtMy42M0w1LjQ1IDYuNTNjLS4yOS4yOC0uNzYuMjgtMS4wNS0uMDFhLjc1NC43NTQgMCAwIDEgMC0xLjA2TDUuNDYgNC40Yy4yOS0uMjkuNzctLjI5IDEuMDYgMCAuMjkuMjkuMjkuNzcgMCAxLjA2bC0uMDEuMDFMNy42IDYuNTZhNi45ODIgNi45ODIgMCAwIDEgMy42My0xLjUxVjMuNWEuNzUzLjc1MyAwIDAgMS0uNzQtLjc1Ljc3Ljc3IDAgMCAxIC43Ni0uNzVoMS41Yy40MSAwIC43NS4zNC43NS43NXMtLjM0Ljc1LS43NS43NWgtLjAxdjEuNTRjMS4zNy4xNCAyLjYyLjY5IDMuNjQgMS41MWwxLjA5LTEuMDlhLjc0Mi43NDIgMCAwIDEgLjAxLTEuMDVjLjI5LS4yOS43Ny0uMjkgMS4wNiAwbDEuMDYgMS4wNmMuMjkuMjkuMjkuNzcgMCAxLjA2cy0uNzcuMjktMS4wNiAwbC0uMDEtLjAxLTEuMDkgMS4wOGE3LjAyNSA3LjAyNSAwIDAgMSAxLjUyIDMuNjVoMS41NGMwLS40MS4zNC0uNzUuNzUtLjc1cy43NS4zNC43NS43NXpNMTcgMTJjMC0yLjc2LTIuMjQtNS01LTVzLTUgMi4yNC01IDUgMi4yNCA1IDUgNSA1LTIuMjQgNS01em0tNS0xYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTMuNSAwYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bS0xLjc1IDNjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNydWVsdHlGcmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTRjLS4yNC0uMjQtLjQ0LS40OS0uNjUtLjc1QzE3LjUxIDExLjUgMTkgOC41NiAxOSA1YzAtMS45NS0uNzQtMy0yLTMtMS41NCAwLTMuOTYgMi4wNi01IDUuOTdDMTAuOTYgNC4wNiA4LjU0IDIgNyAyIDUuNzQgMiA1IDMuMDUgNSA1YzAgMy41NiAxLjQ5IDYuNSAyLjY1IDguMjUtLjIxLjI2LS40MS41MS0uNjUuNzUtLjI1LjI1LTIgMS4zOS0yIDMuNUM1IDE5Ljk4IDcuMDIgMjIgOS41IDIyYzEuNSAwIDIuNS0uNSAyLjUtLjVzMSAuNSAyLjUuNWMyLjQ4IDAgNC41LTIuMDIgNC41LTQuNSAwLTIuMTEtMS43NS0zLjI1LTItMy41em0tLjEyLTkuOTdjLjA2LjE3LjEyLjQ4LjEyLjk3IDAgMi44NC0xLjExIDUuMjQtMi4wNyA2Ljc4LS4zOC0uMjYtLjgzLS40OC0xLjQtLjYyLjI0LTQuNTIgMi40NC02LjgzIDMuMzUtNy4xM3pNNyA1YzAtLjQ5LjA2LS44LjEyLS45Ny45MS4zIDMuMTEgMi42MSAzLjM2IDcuMTMtLjU4LjE0LTEuMDMuMzUtMS40LjYyQzguMTEgMTAuMjQgNyA3Ljg0IDcgNXptNy41IDE1Yy0xIDAtMS44LS4zMy0yLjIyLS41Ni40Mi0uMTguNzItLjcxLjcyLS45NCAwLS4yOC0uNDUtLjUtMS0uNXMtMSAuMjItMSAuNWMwIC4yMy4zLjc2LjcyLjk0LS40Mi4yMy0xLjIyLjU2LTIuMjIuNTZBMi41IDIuNSAwIDAgMSA3IDE3LjVjMC0uNy40My0xLjI0IDEtMS43My40NC0uMzYuNjEtLjUyIDEuMy0xLjM3Ljc2LS45NSAxLjA5LTEuNCAyLjctMS40czEuOTQuNDUgMi43IDEuNGMuNjkuODUuODYgMS4wMSAxLjMgMS4zNy41Ny40OSAxIDEuMDMgMSAxLjczYTIuNSAyLjUgMCAwIDEtMi41IDIuNXptLS41LTRjMCAuNDEtLjIyLjc1LS41Ljc1cy0uNS0uMzQtLjUtLjc1LjIyLS43NS41LS43NS41LjM0LjUuNzV6bS0zIDBjMCAuNDEtLjIyLjc1LS41Ljc1cy0uNS0uMzQtLjUtLjc1LjIyLS43NS41LS43NS41LjM0LjUuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVDeWNsb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDcuNDdWNS4zNUMyMC4wNSA0Ljc3IDE2LjU2IDQgMTIgNGMtMi4xNSAwLTQuMTEuODYtNS41NCAyLjI0LjEzLS44NS40LTIuNCAxLjAxLTQuMjRINS4zNUM0Ljc3IDMuOTUgNCA3LjQ0IDQgMTJjMCAyLjE1Ljg2IDQuMTEgMi4yNCA1LjU0LS44NS0uMTQtMi40LS40LTQuMjQtMS4wMXYyLjEyQzMuOTUgMTkuMjMgNy40NCAyMCAxMiAyMGMyLjE1IDAgNC4xMS0uODYgNS41NC0yLjI0LS4xNC44NS0uNCAyLjQtMS4wMSA0LjI0aDIuMTJjLjU4LTEuOTUgMS4zNS01LjQ0IDEuMzUtMTAgMC0yLjE1LS44Ni00LjExLTIuMjQtNS41NC44NS4xMyAyLjQuNCA0LjI0IDEuMDF6TTEyIDE4Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA5IDEyIDIgMiA5aDl2MTNoMlY5aDl6TTEyIDQuNDQgMTUuNjYgN0g4LjM0TDEyIDQuNDR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTQuMTQgMTItMS45Ni4zNy44MiA0LjM3VjIyaDJsLjAyLTRIN3Y0aDJ2LTZINC45ek0xOS4xIDE2SDE1djZoMnYtNGgxLjk4bC4wMiA0aDJ2LTUuMjZsLjgyLTQuMzctMS45Ni0uMzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEaXZlcnNpdHkxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI0XCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMS4yMiAxNy41OEEyLjAxIDIuMDEgMCAwIDAgMCAxOS40M1YyMWg0LjV2LTEuNjFjMC0uODMuMjMtMS42MS42My0yLjI5LS4zNy0uMDYtLjc0LS4xLTEuMTMtLjEtLjk5IDAtMS45My4yMS0yLjc4LjU4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjIwXCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuNzggMTcuNThBNi45NSA2Ljk1IDAgMCAwIDIwIDE3Yy0uMzkgMC0uNzYuMDQtMS4xMy4xLjQuNjguNjMgMS40Ni42MyAyLjI5VjIxSDI0di0xLjU3YzAtLjgxLS40OC0xLjUzLTEuMjItMS44NXpNMTYuMjQgMTYuNjVjLTEuMTctLjUyLTIuNjEtLjktNC4yNC0uOS0xLjYzIDAtMy4wNy4zOS00LjI0LjlBMi45ODggMi45ODggMCAwIDAgNiAxOS4zOVYyMWgxMnYtMS42MWMwLTEuMTgtLjY4LTIuMjYtMS43Ni0yLjc0ek04LjA3IDE5YS45Ni45NiAwIDAgMSAuNDktLjUyYzEuMS0uNDkgMi4yNi0uNzMgMy40My0uNzMgMS4xOCAwIDIuMzMuMjUgMy40My43My4yMy4xLjQuMjkuNDkuNTJIOC4wN3pNOSAxMmMwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zLTEuMzQtMy0zLTMtMyAxLjM0LTMgM3ptNCAwYzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xIC40NS0xIDEtMSAxIC40NSAxIDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNDggMTAuODZDMi4xNyAxMC4xIDIgOS4zNiAyIDguNiAyIDYuMDIgNC4wMiA0IDYuNiA0YzIuNjggMCAzLjgyIDEuNzQgNS40IDMuNTlDMTMuNTcgNS43NiAxNC43IDQgMTcuNCA0IDE5Ljk4IDQgMjIgNi4wMiAyMiA4LjZjMCAuNzYtLjE3IDEuNS0uNDggMi4yNi42NS4zMSAxLjE4LjgyIDEuNTMgMS40NC42LTEuMi45NS0yLjQyLjk1LTMuN0MyNCA0LjkgMjEuMSAyIDE3LjQgMmMtMi4wOSAwLTQuMDkuOTctNS40IDIuNTFDMTAuNjkgMi45NyA4LjY5IDIgNi42IDIgMi45IDIgMCA0LjkgMCA4LjZjMCAxLjI4LjM1IDIuNS45NiAzLjcuMzUtLjYyLjg4LTEuMTMgMS41Mi0xLjQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRGl2ZXJzaXR5MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwLjEgMTUuOSAxLjQyLTEuNDJDOC43OSAxMi4wNSA3IDEwLjQxIDcgOC44NSA3IDcuOCA3LjggNyA4Ljg1IDdjMS4xMSAwIDEuNTQuNjUgMi42OCAyaC45M2MxLjEyLTEuMzEgMS41My0yIDIuNjgtMiAuODcgMCAxLjU1LjU0IDEuNzcgMS4zMi4zNS0uMDQuNjgtLjA2IDEtLjA2LjM2IDAgLjcuMDMgMS4wMy4wOEMxOC43IDYuNDMgMTcuMTMgNSAxNS4xNSA1Yy0uMTIgMC0uMjMuMDMtLjM1LjA0LjEyLS4zMy4yLS42Ny4yLTEuMDQgMC0xLjY2LTEuMzQtMy0zLTNTOSAyLjM0IDkgNGMwIC4zNy4wOC43MS4yIDEuMDQtLjEyLS4wMS0uMjMtLjA0LS4zNS0uMDRDNi42OSA1IDUgNi42OSA1IDguODVjMCAyLjQyIDIuMDQgNC4zMSA1LjEgNy4wNXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuNSAxNi4yNGMtLjMyLS4xOC0uNjYtLjI5LTEtLjM1LjA3LS4xLjE1LS4xOC4yMS0uMjggMS4wOC0xLjg3LjQ2LTQuMTgtMS40MS01LjI2LTIuMDktMS4yMS00Ljc2LS4zOS04LjY1LjlsLjUyIDEuOTRjMy40Ny0xLjE0IDUuNzktMS44OCA3LjE0LTEuMS45MS41MyAxLjIgMS42MS42OCAyLjUzLS41Ni45Ni0xLjMzIDEtMy4wNyAxLjMybC0uNDcuODFjLjU4IDEuNjIuOTcgMi4zMy4zOSAzLjMyLS41My45MS0xLjYxIDEuMi0yLjUzLjY4LS4wNi0uMDMtLjExLS4wOS0uMTctLjEzLS4zLjY3LS42NCAxLjI0LTEuMDMgMS43My4wNy4wNC4xMy4wOS4yLjE0IDEuODcgMS4wOCA0LjE4LjQ2IDUuMjYtMS40MS4wNi0uMS4wOS0uMjEuMTQtLjMyLjIyLjI3LjQ4LjUxLjguNjkgMS40My44MyAzLjI3LjM0IDQuMS0xLjFzLjMyLTMuMjktMS4xMS00LjExelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4zMiAxNC4wMWMtLjc0IDMuNTgtMS4yNyA1Ljk1LTIuNjIgNi43My0uOTEuNTMtMiAuMjQtMi41My0uNjgtLjU2LS45Ni0uMi0xLjY2LjM5LTMuMzJsLS40Ni0uODFjLTEuNy0uMzEtMi41LS4zMy0zLjA3LTEuMzItLjUzLS45MS0uMjQtMiAuNjgtMi41My4wOS0uMDUuMTktLjA4LjI5LS4xMS0uMzUtLjU2LS42NC0xLjE3LS44Mi0xLjg1LS4xNi4wNy0uMzIuMTQtLjQ4LjIzLTEuODcgMS4wOC0yLjQ5IDMuMzktMS40MSA1LjI2LjA2LjEuMTQuMTguMjEuMjgtLjM0LjA2LS42OC4xNy0xIC4zNS0xLjQzLjgzLTEuOTMgMi42Ni0xLjEgNC4xczIuNjYgMS45MyA0LjEgMS4xYy4zMi0uMTguNTgtLjQyLjgtLjY5LjA1LjExLjA4LjIyLjE0LjMyIDEuMDggMS44NyAzLjM5IDIuNDkgNS4yNiAxLjQxIDIuMDktMS4yMSAyLjcxLTMuOTMgMy41NS03Ljk0bC0xLjkzLS41M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZURpdmVyc2l0eTMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjMyIDEzLjAxYy45Ni4wMiAxLjg1LjUgMi40NSAxLjM0QTMuOTYxIDMuOTYxIDAgMCAwIDEyIDE2YzEuMjkgMCAyLjUtLjYyIDMuMjMtMS42Ni42LS44NCAxLjQ5LTEuMzIgMi40NS0xLjM0LS43Mi0xLjIyLTMuNi0yLTUuNjgtMi0yLjA3IDAtNC45Ni43OC01LjY4IDIuMDF6TTQgMTNjMS42NiAwIDMtMS4zNCAzLTNTNS42NiA3IDQgN3MtMyAxLjM0LTMgMyAxLjM0IDMgMyAzek0yMCAxM2MxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6TTEyIDEwYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTRoLTMuMjdjLS43NyAwLTEuMzUuNDUtMS42OC45Mi0uMDQuMDYtMS4zNiAyLjA4LTQuMDUgMi4wOC0xLjQzIDAtMy4wMy0uNjQtNC4wNS0yLjA4LS4zOS0uNTUtMS0uOTItMS42OC0uOTJIM2MtMS4xIDAtMiAuOS0yIDJ2NGg3di0yLjI2YzEuMTUuOCAyLjU0IDEuMjYgNCAxLjI2czIuODUtLjQ2IDQtMS4yNlYyMGg3di00YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRG9tYWluQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgN1YzSDJ2MThoMTR2LTJoLTR2LTJoMnYtMmgtMnYtMmgydi0yaC0yVjloOHY2aDJWN0gxMnpNNiAxOUg0di0yaDJ2MnptMC00SDR2LTJoMnYyem0wLTRINFY5aDJ2MnptMC00SDRWNWgydjJ6bTQgMTJIOHYtMmgydjJ6bTAtNEg4di0yaDJ2MnptMC00SDhWOWgydjJ6bTAtNEg4VjVoMnYyem0xNCAxMnYyaC0ydjJoLTJ2LTJoLTJ2LTJoMnYtMmgydjJoMnptLTYtOGgtMnYyaDJ2LTJ6bTAgNGgtMnYyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb21haW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdWM0gydjE4aDIwVjdIMTJ6TTYgMTlINHYtMmgydjJ6bTAtNEg0di0yaDJ2MnptMC00SDRWOWgydjJ6bTAtNEg0VjVoMnYyem00IDEySDh2LTJoMnYyem0wLTRIOHYtMmgydjJ6bTAtNEg4VjloMnYyem0wLTRIOFY1aDJ2MnptMTAgMTJoLTh2LTJoMnYtMmgtMnYtMmgydi0yaC0yVjloOHYxMHptLTItOGgtMnYyaDJ2LTJ6bTAgNGgtMnYyaDJ2LTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVEb3duaGlsbFNraWluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgNC41YzAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMiAyIC45IDIgMnptLTIuNzIgMTYuNC43Ni4yN2E1LjkzMyA1LjkzMyAwIDAgMCA0LjM0LS4xN0wyMiAyMi4xM2MtMS4wNS41NS0yLjI0Ljg3LTMuNS44Ny0uODYgMC0xLjY4LS4xNC0yLjQ1LS40MUwyIDE3LjQ3bC41LTEuNDEgNi45IDIuNTEgMS43Mi00LjQ0LTMuNTctMy43M2MtLjg5LS45NC0uNjctMi40Ny40NS0zLjEybDMuNDgtMi4wMWMxLjEtLjY0IDIuNTItLjEgMi45MSAxLjExbC4zMyAxLjA4YTUuMDE3IDUuMDE3IDAgMCAwIDIuODMgMy4xNGwuNTItMS42IDEuNDMuNDYtMS4xMiAzLjQ1QTcuMDI5IDcuMDI5IDAgMCAxIDEzIDguNTlsLTIuNTMgMS40NSAzLjAzIDMuNDYtMi4yMiA1Ljc2IDMuMDkgMS4xMiAyLjEtNi40NGMuNDYuMTguOTQuMzEgMS40NC40MWwtMi4xMyA2LjU1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWRpdE5vdGlmaWNhdGlvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy41OCA2LjI1IDEuNzcgMS43N0wxNC4zNyAxM0gxMi42di0xLjc3bDQuOTgtNC45OHptMy4yNy0uNDQtMS4wNi0xLjA2Yy0uMi0uMi0uNTEtLjItLjcxIDBsLS44NS44NUwyMCA3LjM3bC44NS0uODVjLjItLjIuMi0uNTIgMC0uNzF6TTE4IDEyLjJWMTdoMnYySDR2LTJoMnYtN2MwLTIuNzkgMS45MS01LjE0IDQuNS01Ljh2LS43YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41di43Yy44Mi4yMSAxLjU3LjU5IDIuMjEgMS4wOWwtMS40MyAxLjQzQTMuODkgMy44OSAwIDAgMCAxMiA2Yy0yLjIxIDAtNCAxLjc5LTQgNHY3aDh2LTIuOGwyLTJ6TTEwIDIwaDRjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRWxkZXJseVdvbWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAxMWMtMS41NiAwLTIuOTItLjktMy41OC0yLjIxbC0uNzktMS42N0MxNC4xMiA3LjEgMTMuNjMgNiAxMi4zNCA2IDguNzIgNiA2IDE2LjY5IDYgMTloMi41bC0yLjEgMi44TDggMjNsMy00aDJ2NGgydi00LjAzTDEzIDEzbC40OS0yLjcxQTYuMDIgNi4wMiAwIDAgMCAxNyAxMi44MXYuNjloMXYtMWMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNVYyM2gxVjEyLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41ek0xMS42IDIuOTFjLS4wNi4xOS0uMS4zOC0uMS41OSAwIDEuMS45IDIgMiAyczItLjkgMi0yLS45LTItMi0yYy0uMjEgMC0uNC4wNC0uNTkuMS0uMTUtLjM1LS41LS42LS45MS0uNi0uNTUgMC0xIC40NS0xIDEgMCAuNDEuMjUuNzYuNi45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVsZGVybHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYuNSA3VjIzaC0xVjEyLjVjMC0uMjgtLjIyLS41LS41LS41cy0uNS4yMi0uNS41djFoLTF2LS42OWE2LjAyIDYuMDIgMCAwIDEtMy41MS0yLjUyYy0uMzEuODctLjQ5IDEuNzgtLjQ5IDIuNzEgMCAuMjMuMDIuNDYuMDMuNjlMMTUgMTYuNVYyM2gtMnYtNWwtMS43OC0yLjU0TDExIDE5bC0zIDQtMS42LTEuMkw5IDE4LjMzVjEzYzAtMS4xNS4xOC0yLjI5LjUtMy4zOWwtMS41Ljg1VjE0SDZWOS4zbDUuNC0zLjA3di4wMWEyIDIgMCAwIDEgMS45NC4wM2MuMzYuMjEuNjMuNTEuOC44NWwuNzkgMS42N0EzLjk4NyAzLjk4NyAwIDAgMCAxOC41IDExYy44MyAwIDEuNS42NyAxLjUgMS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRW1vamlFbW90aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMThjMi4yOCAwIDQuMjItMS42NiA1LTRIN2MuNzggMi4zNCAyLjcyIDQgNSA0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbW9qaUV2ZW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDVoLTJWM0g3djJINWMtMS4xIDAtMiAuOS0yIDJ2MWMwIDIuNTUgMS45MiA0LjYzIDQuMzkgNC45NEE1LjAxIDUuMDEgMCAwIDAgMTEgMTUuOVYxOUg3djJoMTB2LTJoLTR2LTMuMWE1LjAxIDUuMDEgMCAwIDAgMy42MS0yLjk2QzE5LjA4IDEyLjYzIDIxIDEwLjU1IDIxIDhWN2MwLTEuMS0uOS0yLTItMnpNNSA4VjdoMnYzLjgyQzUuODQgMTAuNCA1IDkuMyA1IDh6bTcgNmMtMS42NSAwLTMtMS4zNS0zLTNWNWg2djZjMCAxLjY1LTEuMzUgMy0zIDN6bTctNmMwIDEuMy0uODQgMi40LTIgMi44MlY3aDJ2MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtb2ppRmxhZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNCA5LTEtMkg3VjUuNzJjLjYtLjM0IDEtLjk4IDEtMS43MiAwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJjMCAuNzQuNCAxLjM4IDEgMS43MlYyMWgydi00aDVsMSAyaDdWOWgtNnptNCA4aC00bC0xLTJIN1Y5aDVsMSAyaDV2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtb2ppRm9vZEJldmVyYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxOWgxOHYySDJ6TTIwIDNINHYxMGMwIDIuMjEgMS43OSA0IDQgNGg2YzIuMjEgMCA0LTEuNzkgNC00di0zaDJjMS4xMSAwIDItLjg5IDItMlY1YzAtMS4xMS0uODktMi0yLTJ6bS00IDEwYzAgMS4xLS45IDItMiAySDhjLTEuMSAwLTItLjktMi0yVjVoM3YxLjRMNy4xOSA3Ljg1Yy0uMTIuMDktLjE5LjI0LS4xOS4zOXY0LjI2YzAgLjI4LjIyLjUuNS41aDRjLjI4IDAgLjUtLjIyLjUtLjVWOC4yNGMwLS4xNS0uMDctLjMtLjE5LS4zOUwxMCA2LjRWNWg2djh6TTkuNSA3LjI4bDEuNSAxLjJWMTJIOFY4LjQ4bDEuNS0xLjJ6TTIwIDhoLTJWNWgydjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbW9qaU5hdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk0IDQuODhBMS4zMiAxLjMyIDAgMCAwIDIwLjY4IDRIMTkuNmwtLjMxLS45N0MxOS4xNSAyLjQzIDE4LjYxIDIgMTggMnMtMS4xNS40My0xLjI5IDEuMDRMMTYuNCA0aC0xLjA3Yy0uNTcgMC0xLjA4LjM1LTEuMjYuODgtLjE5LjU2LjA0IDEuMTcuNTYgMS40OGwuODcuNTItLjQgMS4yNGMtLjIzLjU4LS4wNCAxLjI1LjQ1IDEuNjIuMjMuMTcuNTEuMjYuNzguMjYuMzEgMCAuNjEtLjExLjg2LS4zMmwuODEtLjcuODEuN2MuMjUuMjEuNTUuMzIuODYuMzIuMjcgMCAuNTUtLjA5Ljc4LS4yNi41LS4zNy42OC0xLjA0LjQ1LTEuNjJsLS4zOS0xLjI0Ljg3LS41MmMuNTEtLjMxLjc0LS45Mi41Ni0xLjQ4ek0xOCA3Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6TTEzLjQ5IDEwLjUxYy0uNDMtLjQzLS45NC0uNzMtMS40OS0uOTNWOGgtMXYxLjM4Yy0uMTEtLjAxLS4yMy0uMDMtLjM0LS4wMy0xLjAyIDAtMi4wNS4zOS0yLjgzIDEuMTdsLS41LjUtMS4zMy0uNWEzLjAxIDMuMDEgMCAwIDAtMy44MyAxLjgyYy0uMjcuNzUtLjIzIDEuNTcuMTIgMi4yOS4yMy40OC41OC44NyAxIDEuMTYtLjM4IDEuMzUtLjA2IDIuODUgMSAzLjkxLjc4Ljc4IDEuOCAxLjE3IDIuODMgMS4xNy4zNyAwIC43My0uMDcgMS4wOS0uMTcuMjkuNDIuNjguNzcgMS4xNiAxIC40MS4yLjg0LjMgMS4yOC4zLjM0IDAgLjY4LS4wNiAxLjAxLS4xN2EzLjAwNyAzLjAwNyAwIDAgMCAxLjgyLTMuODVsLS40OS0xLjMuNS0uNWMuODctLjg3IDEuMjQtMi4wNCAxLjE0LTMuMTdIMTZ2LTFoLTEuNTljLS4xOS0uNTUtLjQ5LTEuMDYtLjkyLTEuNXptLTUuOTEgOC4zMWMtLjE1LjA0LS4zLjA2LS40Ni4wNi0uNTMgMC0xLjA0LS4yMS0xLjQxLS41OS0uMzgtLjM4LS41OS0uODgtLjU5LTEuNDEgMC0uMTYuMDMtLjMyLjA2LS40Ny4xNC4wMS4yOC4wMy40Mi4wMy44NSAwIDEuNjgtLjIgMi40NC0uNDgtLjMyLjg5LS41NCAxLjg3LS40NiAyLjg2em0tMi45MS00LjUzYy0uMjUtLjA5LS40NS0uMjctLjU3LS41MXMtLjEzLS41MS0uMDQtLjc2Yy4xOS0uNTIuNzYtLjc5IDEuMjYtLjYxbDMuMTYgMS4xOWMtMS4xNS42LTIuNjMgMS4xMS0zLjgxLjY5em02LjMyIDUuNjVjLS4yNS4wOS0uNTIuMDgtLjc2LS4wNGEuOTg5Ljk4OSAwIDAgMS0uNTEtLjU3Yy0uNDItMS4xOC4wOS0yLjY1LjctMy44bDEuMTggMy4xM2MuMTguNTItLjA5IDEuMS0uNjEgMS4yOHptMS4yMS01LjM0LS42MS0xLjYxYzAtLjAxLS4wMS0uMDItLjAyLS4wM2wtLjA2LS4xMmEuNjczLjY3MyAwIDAgMC0uMDctLjExbC0uMDktLjA5LS4wOS0uMDljLS4wMy0uMDMtLjA3LS4wNS0uMTEtLjA3LS4wNC0uMDItLjA3LS4wNS0uMTItLjA2LS4wMSAwLS4wMi0uMDEtLjAzLS4wMmwtMS42LS42YTEuOTY2IDEuOTY2IDAgMCAxIDIuNjcuMTNjLjczLjczLjc3IDEuODguMTMgMi42N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtb2ppT2JqZWN0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNjLS40NiAwLS45My4wNC0xLjQuMTQtMi43Ni41My00Ljk2IDIuNzYtNS40OCA1LjUyLS40OCAyLjYxLjQ4IDUuMDEgMi4yMiA2LjU2LjQzLjM4LjY2LjkxLjY2IDEuNDdWMTljMCAxLjEuOSAyIDIgMmguMjhhMS45OCAxLjk4IDAgMCAwIDMuNDQgMEgxNGMxLjEgMCAyLS45IDItMnYtMi4zMWMwLS41NS4yMi0xLjA5LjY0LTEuNDZBNi45NTYgNi45NTYgMCAwIDAgMTkgMTBjMC0zLjg3LTMuMTMtNy03LTd6bTIgMTRoLTR2LTFoNHYxem0tNCAydi0xaDR2MWgtNHptNS4zMS01LjI2Yy0uMDkuMDgtLjE2LjE4LS4yNC4yNkg4LjkyYy0uMDgtLjA5LS4xNS0uMTktLjI0LS4yNy0xLjMyLTEuMTgtMS45MS0yLjk0LTEuNTktNC43LjM2LTEuOTQgMS45Ni0zLjU1IDMuODktMy45My4zNC0uMDcuNjgtLjEgMS4wMi0uMSAyLjc2IDAgNSAyLjI0IDUgNSAwIDEuNDMtLjYxIDIuNzktMS42OSAzLjc0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDExaDF2M2gtMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOS42NzIgOS41OC43MDctLjcwNiAyLjEyMiAyLjEyMS0uNzA3LjcwN3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIuMjA4IDExLjcxMi0uNzA3LS43MDcgMi4xMjEtMi4xMjEuNzA3LjcwN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVtb2ppUGVvcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuODkgOC4xMUMxNS41IDcuNzIgMTQuODMgNyAxMy41MyA3aC0yLjU0QzguMjQgNi45OSA2IDQuNzUgNiAySDRjMCAzLjE2IDIuMTEgNS44NCA1IDYuNzFWMjJoMnYtNmgydjZoMlYxMC4wNUwxOC45NSAxNGwxLjQxLTEuNDEtNC40Ny00LjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRW1vamlTeW1ib2xzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyaDh2Mkgzek02IDExaDJWN2gzVjVIM3YyaDN6TTEyLjQwNCAyMC4xODJsNy43NzgtNy43NzggMS40MTQgMS40MTQtNy43NzggNy43Nzh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTQuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE5LjVcIixcImN5XCI6XCIxOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxMUEyLjUgMi41IDAgMCAwIDE4IDguNVY0aDNWMmgtNHY0LjUxYy0uNDItLjMyLS45My0uNTEtMS41LS41MWEyLjUgMi41IDAgMCAwIDAgNXpNOS43NCAxNS45NmwtMS40MSAxLjQxLS43MS0uNzEuMzUtLjM1YTIuNDk5IDIuNDk5IDAgMCAwLTEuNzctNC4yNyAyLjQ5OSAyLjQ5OSAwIDAgMC0xLjc3IDQuMjdsLjM1LjM1LTEuMDYgMS4wNmMtLjk4Ljk4LS45OCAyLjU2IDAgMy41NC41LjUgMS4xNC43NCAxLjc4Ljc0czEuMjgtLjI0IDEuNzctLjczbDEuMDYtMS4wNiAxLjQxIDEuNDEgMS40MS0xLjQxLTEuNDEtMS40MSAxLjQxLTEuNDEtMS40MS0xLjQzek01Ljg1IDE0LjJjLjEyLS4xMi4yNi0uMTUuMzUtLjE1cy4yMy4wMy4zNS4xNWMuMTkuMi4xOS41MSAwIC43MWwtLjM1LjM1LS4zNS0uMzZhLjUwMS41MDEgMCAwIDEgMC0uN3ptMCA1LjY1Yy0uMTIuMTItLjI2LjE1LS4zNS4xNXMtLjIzLS4wMy0uMzUtLjE1YS41MTMuNTEzIDAgMCAxIDAtLjcxbDEuMDYtMS4wNi43MS43MS0xLjA3IDEuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVFbW9qaVRyYW5zcG9ydGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNTcgMTAuNjZjLS4xNC0uNC0uNTItLjY2LS45Ny0uNjZoLTcuMTljLS40NiAwLS44My4yNi0uOTguNjZMMTAgMTQuNzdsLjAxIDUuNTFjMCAuMzguMzEuNzIuNjkuNzJoLjYyYy4zOCAwIC42OC0uMzguNjgtLjc2VjE5aDh2MS4yNGMwIC4zOC4zMS43Ni42OS43NmguNjFjLjM4IDAgLjY5LS4zNC42OS0uNzJsLjAxLTEuMzd2LTQuMTRsLTEuNDMtNC4xMXptLTguMTYuMzRoNy4xOWwxLjAzIDNoLTkuMjVsMS4wMy0zek0xMiAxN2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem04IDBjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOWgxVjNIN3Y1SDJ2MTNoMVY5aDVWNGg2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDExaDJ2Mkg1ek0xMCA1aDJ2MmgtMnpNNSAxNWgydjJINXpNNSAxOWgydjJINXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUVuZ2luZWVyaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNWMtMi42NyAwLTggMS4zNC04IDR2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHptLTYgNGMuMjItLjcyIDMuMzEtMiA2LTIgMi43IDAgNS44IDEuMjkgNiAySDN6TTQuNzQgOUg1YzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTRoLjI2Yy4yNyAwIC40OS0uMjIuNDktLjQ5di0uMDJhLjQ5LjQ5IDAgMCAwLS40OS0uNDlIMTNjMC0xLjQ4LS44MS0yLjc1LTItMy40NXYuOTVjMCAuMjgtLjIyLjUtLjUuNXMtLjUtLjIyLS41LS41VjQuMTRDOS42OCA0LjA2IDkuMzUgNCA5IDRzLS42OC4wNi0xIC4xNFY1LjVjMCAuMjgtLjIyLjUtLjUuNVM3IDUuNzggNyA1LjV2LS45NUM1LjgxIDUuMjUgNSA2LjUyIDUgOGgtLjI2YS40OS40OSAwIDAgMC0uNDkuNDl2LjAzYzAgLjI2LjIyLjQ4LjQ5LjQ4ek0xMSA5YzAgMS4xLS45IDItMiAycy0yLS45LTItMmg0ek0yMS45OCA2LjIzbC45My0uODMtLjc1LTEuMy0xLjE5LjM5Yy0uMTQtLjExLS4zLS4yLS40Ny0uMjdMMjAuMjUgM2gtMS41bC0uMjUgMS4yMmMtLjE3LjA3LS4zMy4xNi0uNDguMjdsLTEuMTgtLjM5LS43NSAxLjMuOTMuODNjLS4wMi4xNy0uMDIuMzUgMCAuNTJsLS45My44NS43NSAxLjMgMS4yLS4zOGMuMTMuMS4yOC4xOC40My4yNWwuMjggMS4yM2gxLjVsLjI3LTEuMjJjLjE2LS4wNy4zLS4xNS40NC0uMjVsMS4xOS4zOC43NS0xLjMtLjkzLS44NWMuMDMtLjE5LjAyLS4zNi4wMS0uNTN6TTE5LjUgNy43NWExLjI1IDEuMjUgMCAxIDEgMC0yLjUgMS4yNSAxLjI1IDAgMCAxIDAgMi41ek0xOS40IDEwLjc5bC0uODUuMjhjLS4xLS4wOC0uMjEtLjE0LS4zMy0uMTlsLS4xOC0uODhoLTEuMDdsLS4xOC44N2MtLjEyLjA1LS4yNC4xMi0uMzQuMTlsLS44NC0uMjgtLjU0LjkzLjY2LjU5Yy0uMDEuMTMtLjAxLjI1IDAgLjM3bC0uNjYuNjEuNTQuOTMuODYtLjI3Yy4xLjA3LjIuMTMuMzEuMThsLjE4Ljg4aDEuMDdsLjE5LS44N2MuMTEtLjA1LjIyLS4xMS4zMi0uMThsLjg1LjI3LjU0LS45My0uNjYtLjYxYy4wMS0uMTMuMDEtLjI1IDAtLjM3bC42Ni0uNTktLjUzLS45M3ptLTEuOSAyLjZjLS40OSAwLS44OS0uNC0uODktLjg5cy40LS44OS44OS0uODkuODkuNC44OS44OS0uNC44OS0uODkuODl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGYWNlMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk3IDEzLjUydi0uMDRDMjMuMjEgMTIuMzggMjQgMTAuNzggMjQgOWMwLTMuMzEtMi42OS02LTYtNi0uMjYgMC0uNTIuMDItLjc4LjA2YTUuOTggNS45OCAwIDAgMC0xMC40NCAwQzYuNTIgMy4wMiA2LjI2IDMgNiAzIDIuNjkgMyAwIDUuNjkgMCA5YzAgMS43OC43OSAzLjM4IDIuMDIgNC40OHYuMDRBNi4wMDggNi4wMDggMCAwIDAgMCAxOGMwIDMuMzEgMi42OSA2IDYgNiAxLjM5IDAgMi42Ny0uNDggMy42OS0xLjI4Ljc0LjE4IDEuNTEuMjggMi4zMS4yOHMxLjU3LS4xIDIuMzEtLjI4YzEuMDIuOCAyLjMgMS4yOCAzLjY5IDEuMjggMy4zMSAwIDYtMi42OSA2LTYgMC0xLjc4LS43OS0zLjM4LTIuMDMtNC40OHpNMjIgOWMwIC41NS0uMTIgMS4wNy0uMzIgMS41NEExMCAxMCAwIDAgMCAxNy45OCA1SDE4YzIuMjEgMCA0IDEuNzkgNCA0em0tOS45Ny00YzIuNzMuMDEgNS4xMyAxLjM5IDYuNTcgMy40OC0uNzEuNTctMS42Ljg5LTIuNTMuODlBNC4wNTkgNC4wNTkgMCAwIDEgMTIgNS4zMWMwLS4xLjAyLS4yLjAzLS4zMXpNMTIgMmMxLjI1IDAgMi4zNi41OSAzLjEgMS41LS45OC0uMzItMi4wMi0uNS0zLjEtLjVzLTIuMTIuMTgtMy4xLjVDOS42NCAyLjU5IDEwLjc1IDIgMTIgMnpNNiA1aC4wMmExMCAxMCAwIDAgMC0zLjcgNS41NEMyLjEyIDEwLjA3IDIgOS41NSAyIDljMC0yLjIxIDEuNzktNCA0LTR6bTAgMTdjLTIuMjEgMC00LTEuNzktNC00IDAtLjY5LjE5LTEuMzIuNS0xLjg4LjggMi40NCAyLjUyIDQuNDcgNC43NCA1LjY4LS4zOS4xMy0uOC4yLTEuMjQuMnptLTItOWMwLTMuNzIgMi41Ni02Ljg1IDYtNy43NHYuMDVjMCAzLjM0IDIuNzIgNi4wNiA2LjA2IDYuMDYgMS4yNiAwIDIuNDUtLjM5IDMuNDUtMS4wOS4zMS44Ni40OSAxLjc3LjQ5IDIuNzIgMCA0LjQxLTMuNTkgOC04IDhzLTgtMy41OS04LTh6bTE0IDljLS40NCAwLS44NS0uMDctMS4yNS0uMiAyLjIzLTEuMjEgMy45NC0zLjI0IDQuNzQtNS42OC4zMS41Ni41IDEuMi41IDEuODguMDEgMi4yMS0xLjc4IDQtMy45OSA0elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxNFwiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhY2UzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjkxIDExLjk2QzIyLjM5IDYuMzIgMTcuNjYgMiAxMiAyUzEuNjEgNi4zMiAxLjA5IDExLjk2bC0uOSA5Ljg2Yy0uMSAxLjE3LjgyIDIuMTggMiAyLjE4aDE5LjYyYzEuMTggMCAyLjEtMS4wMSAxLjk5LTIuMThsLS44OS05Ljg2ek0xMyA0LjA3YzIuMjYuMjggNC4yMiAxLjUxIDUuNDkgMy4yOC0uNTguNC0xLjI2LjY1LTEuOTkuNjVDMTQuNTcgOCAxMyA2LjQzIDEzIDQuNXYtLjQzem0tMiAwdi40M0MxMSA2LjQzIDkuNDMgOCA3LjUgOGMtLjczIDAtMS40MS0uMjUtMS45OS0uNjUgMS4yNy0xLjc3IDMuMjMtMyA1LjQ5LTMuMjh6TTQuNTQgOS4xM2MuODcuNTUgMS44OS44NyAyLjk2Ljg3IDEuODYgMCAzLjUtLjkzIDQuNS0yLjM1QzEzIDkuMDcgMTQuNjQgMTAgMTYuNSAxMGMxLjA3IDAgMi4wOS0uMzIgMi45Ni0uODcuMzQuODkuNTQgMS44Ni41NCAyLjg3IDAgNC40MS0zLjU5IDgtOCA4cy04LTMuNTktOC04YzAtMS4wMS4yLTEuOTguNTQtMi44N3pNMTIgMjJIMi4xOWwuNTYtNi4yQzQuMjUgMTkuNDQgNy44MiAyMiAxMiAyMnM3Ljc1LTIuNTYgOS4yNS02LjJsLjU2IDYuMkgxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhY2U0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtLjk2IDAtMS44OC4xNC0yLjc1LjM5QTQuOTg2IDQuOTg2IDAgMCAwIDUgMEMyLjI0IDAgMCAyLjI0IDAgNWMwIDEuOC45NiAzLjM3IDIuMzkgNC4yNUMyLjE0IDEwLjEyIDIgMTEuMDQgMiAxMmMwIDUuNTIgNC40OCAxMCAxMCAxMHMxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAyYzIuOSAwIDUuNDQgMS41NiA2Ljg0IDMuODgtLjQzLjA3LS44OC4xMi0xLjM0LjEyLTIuOSAwLTUuNDQtMS41Ni02Ljg0LTMuODguNDMtLjA3Ljg4LS4xMiAxLjM0LS4xMnpNNC40MiA5LjQ3YTguMDQ2IDguMDQ2IDAgMCAxIDMuNjYtNC40NCA4LjA0NiA4LjA0NiAwIDAgMS0zLjY2IDQuNDR6TTIgNWMwLTEuNjUgMS4zNS0zIDMtMyAuOTUgMCAxLjguNDYgMi4zNSAxLjE1LTEuNzkuOTQtMy4yNiAyLjQxLTQuMiA0LjJDMi40NiA2LjggMiA1Ljk1IDIgNXptMTAgMTVjLTQuNDEgMC04LTMuNTktOC04IDAtLjA1LjAxLS4xLjAxLS4xNSAyLjYtLjk4IDQuNjgtMi45OSA1Ljc0LTUuNTVhOS45NDIgOS45NDIgMCAwIDAgOS45MiAzLjQ2Yy4yMS43MS4zMyAxLjQ2LjMzIDIuMjQgMCA0LjQxLTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFjZTUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOCAwLTEuMTIuMjMtMi4xOC42NS0zLjE1YS40OTUuNDk1IDAgMCAwIC44NS0uMzVjMC0uMjUtLjE5LS40NS0uNDMtLjQ5LjE1LS4yNi4zMi0uNTEuNDktLjc1LS4wMy4wOC0uMDYuMTUtLjA2LjI0IDAgLjI4LjIyLjUuNS41cy41LS4yMi41LS41UzYuMjggNyA2IDdjLS4xMyAwLS4yNS4wNS0uMzQuMTMuNTItLjY4IDEuMTUtMS4yOCAxLjg2LTEuNzZBLjQ5NS40OTUgMCAwIDAgOCA2YS40OTUuNDk1IDAgMCAwIC4xLS45OGMuMTYtLjA5LjMyLS4xNy40OS0uMjUuMDkuMTQuMjQuMjMuNDEuMjMuMjggMCAuNS0uMjIuNS0uNSAwLS4wMy0uMDEtLjA2LS4wMi0uMDkuMzktLjEzLjc5LS4yMyAxLjIxLS4zLS4xMS4xLS4xOS4yMy0uMTkuMzkgMCAuMjguMjIuNS41LjVzLjUtLjIyLjUtLjVhLjUxLjUxIDAgMCAwLS4zLS40NmMuMjYtLjAzLjUzLS4wNC44LS4wNHMuNTQuMDEuOC4wNGMtLjE4LjA4LS4zLjI1LS4zLjQ2IDAgLjI4LjIyLjUuNS41cy41LS4yMi41LS41YzAtLjE2LS4wOC0uMjktLjE5LS4zOC40MS4wNy44Mi4xNyAxLjIxLjMtLjAxLjAyLS4wMi4wNS0uMDIuMDggMCAuMjguMjIuNS41LjUuMTcgMCAuMzItLjA5LjQxLS4yMy4xNy4wOC4zMy4xNi40OS4yNUEuNDk1LjQ5NSAwIDAgMCAxNiA2Yy4yOCAwIC41LS4yMi41LS41IDAtLjA1LS4wMS0uMDktLjAzLS4xMy43MS40OCAxLjM0IDEuMDggMS44NiAxLjc2YS40OTUuNDk1IDAgMCAwLS44My4zN2MwIC4yOC4yMi41LjUuNXMuNS0uMjIuNS0uNWMwLS4wOS0uMDMtLjE2LS4wNy0uMjMuMTguMjQuMzQuNDkuNDkuNzUtLjIzLjAzLS40Mi4yMy0uNDIuNDhhLjQ5NS40OTUgMCAwIDAgLjg1LjM1Yy40Mi45Ny42NSAyLjAzLjY1IDMuMTUgMCA0LjQxLTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTRcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI1LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTdcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjYuNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3XCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEzXCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiNi41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0XCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2XCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwXCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjhcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIi41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjguNVwiLFwiclwiOlwiLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3XCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEzXCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE3XCIsXCJjeVwiOlwiOC41XCIsXCJyXCI6XCIuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjEuMjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZhY2U2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAyYzMuNjggMCA2Ljc4IDIuNTEgNy43MSA1LjktLjYtLjE2LTEuMzMtLjM3LTIuMjYtMi4yNEEyLjk5MiAyLjk5MiAwIDAgMCAxNC43NiA2SDkuMjRjLTEuMTUgMC0yLjE4LjY0LTIuNjkgMS42Ni0uOTMgMS44Ni0xLjU4IDIuMDYtMi4yNiAyLjI0QzUuMjIgNi41MSA4LjMyIDQgMTIgNHptMCAxNmMtNC40MSAwLTgtMy41OS04LTh2LS4wM2MyLjMxLS4yMiAzLjQzLTEuNTkgNC4zNC0zLjQxLjE3LS4zNS41MS0uNTYuOS0uNTZoNS41M2MuMzggMCAuNzIuMjEuODkuNTUuOSAxLjggMS45OSAzLjE5IDQuMzQgMy40MXYuMDNjMCA0LjQyLTMuNTkgOC4wMS04IDguMDF6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCIxLjI1XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxM1wiLFwiclwiOlwiMS4yNVwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRmFjZWJvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMmMwLTUuNTItNC40OC0xMC0xMC0xMFMyIDYuNDggMiAxMmMwIDQuODQgMy40NCA4Ljg3IDggOS44VjE1SDh2LTNoMlY5LjVDMTAgNy41NyAxMS41NyA2IDEzLjUgNkgxNnYzaC0yYy0uNTUgMC0xIC40NS0xIDF2MmgzdjNoLTN2Ni45NWM1LjA1LS41IDktNC43NiA5LTkuOTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGZW1hbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy41IDkuNUMxNy41IDYuNDYgMTUuMDQgNCAxMiA0UzYuNSA2LjQ2IDYuNSA5LjVjMCAyLjcgMS45NCA0LjkzIDQuNSA1LjRWMTdIOXYyaDJ2Mmgydi0yaDJ2LTJoLTJ2LTIuMWMyLjU2LS40NyA0LjUtMi43IDQuNS01LjR6bS05IDBDOC41IDcuNTcgMTAuMDcgNiAxMiA2czMuNSAxLjU3IDMuNSAzLjVTMTMuOTMgMTMgMTIgMTNzLTMuNS0xLjU3LTMuNS0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVGaXJlcGxhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4wMSAxMi40NmMtLjE1LjQyLS4xNS44Mi0uMDggMS4yOC4xLjU1LjMzIDEuMDQuMiAxLjYtLjEzLjU5LS43NyAxLjM4LTEuNTMgMS42MyAxLjI4IDEuMDUgMy4yLjM3IDMuMzktMS4zMi4xNy0xLjU0LTEuNDQtMS45OC0xLjk4LTMuMTl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMnYyMGgyMFYySDJ6bTEwIDE2Yy0xLjU4IDAtMi45Ny0xLjg4LTMtMy4wNiAwLS4wNS0uMDEtLjEzLS4wMS0uMjItLjEzLTEuNzMgMS0zLjIgMi40Ny00LjM3LjQ3IDEuMDEgMS4yNyAyLjAzIDIuNTcgMi45Mi41OC40Mi45Ny44Ni45NyAxLjczIDAgMS42NS0xLjM1IDMtMyAzem04IDJoLTJ2LTJoLTIuMDJBNC45OCA0Ljk4IDAgMCAwIDE3IDE1YzAtMS44OS0xLjA5LTIuODUtMS44NS0zLjM3QzEyLjIgOS42MSAxMyA3IDEzIDdjLTYuNzMgMy41Ny02LjAyIDcuNDctNiA4IC4wMy45Ni40OSAyLjA3IDEuMjMgM0g2djJINFY0aDE2djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lRml0Yml0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuODkgMTMuODljMS4wNCAwIDEuODktLjg1IDEuODktMS44OXMtLjg1LTEuODktMS44OS0xLjg5UzE4IDEwLjk2IDE4IDEycy44NSAxLjg5IDEuODkgMS44OXptLTQuMjQtLjIxYy45MyAwIDEuNjgtLjc1IDEuNjgtMS42OHMtLjc1LTEuNjgtMS42OC0xLjY4Yy0uOTMgMC0xLjY4Ljc1LTEuNjggMS42OHMuNzUgMS42OCAxLjY4IDEuNjh6bTAtNC4yNmMuOTMgMCAxLjY4LS43NSAxLjY4LTEuNjggMC0uOTMtLjc1LTEuNjgtMS42OC0xLjY4LS45MyAwLTEuNjguNzUtMS42OCAxLjY4IDAgLjkzLjc1IDEuNjggMS42OCAxLjY4em0wIDguNTFjLjkzIDAgMS42OC0uNzUgMS42OC0xLjY4IDAtLjkzLS43NS0xLjY4LTEuNjgtMS42OC0uOTMgMC0xLjY4Ljc1LTEuNjggMS42OCAwIC45Mi43NSAxLjY4IDEuNjggMS42OHptLTQuMjQtNC40NmMuODEgMCAxLjQ3LS42NiAxLjQ3LTEuNDdzLS42Ni0xLjQ3LTEuNDctMS40N2MtLjgxIDAtMS40Ny42Ni0xLjQ3IDEuNDdzLjY1IDEuNDcgMS40NyAxLjQ3em0wLTQuMjZjLjgxIDAgMS40Ny0uNjYgMS40Ny0xLjQ3cy0uNjYtMS40Ny0xLjQ3LTEuNDdjLS44MSAwLTEuNDcuNjYtMS40NyAxLjQ3cy42NSAxLjQ3IDEuNDcgMS40N3ptMCA4LjUyYy44MSAwIDEuNDctLjY2IDEuNDctMS40NyAwLS44MS0uNjYtMS40Ny0xLjQ3LTEuNDctLjgxIDAtMS40Ny42Ni0xLjQ3IDEuNDctLjAxLjgxLjY1IDEuNDcgMS40NyAxLjQ3em0wIDQuMjdjLjgxIDAgMS40Ny0uNjYgMS40Ny0xLjQ3IDAtLjgxLS42Ni0xLjQ3LTEuNDctMS40Ny0uODEgMC0xLjQ3LjY2LTEuNDcgMS40Ny0uMDEuODEuNjUgMS40NyAxLjQ3IDEuNDd6bTAtMTcuMDZjLjgxIDAgMS40Ny0uNjYgMS40Ny0xLjQ3UzEyLjIyIDIgMTEuNDEgMmMtLjgxIDAtMS40Ny42Ni0xLjQ3IDEuNDdzLjY1IDEuNDcgMS40NyAxLjQ3em0tNC4yNSA4LjMyYy43IDAgMS4yNi0uNTcgMS4yNi0xLjI2cy0uNTctMS4yNi0xLjI2LTEuMjZhMS4yNjEgMS4yNjEgMCAwIDAgMCAyLjUyem0wIDQuMjVhMS4yNjEgMS4yNjEgMCAwIDAgMC0yLjUyIDEuMjYxIDEuMjYxIDAgMCAwIDAgMi41MnptMC04LjQ5YTEuMjYxIDEuMjYxIDAgMCAwIDAtMi41MiAxLjI2MSAxLjI2MSAwIDAgMCAwIDIuNTJ6bS0zLjg3IDQuMDNhMS4wNSAxLjA1IDAgMSAwIDAtMi4xIDEuMDUgMS4wNSAwIDAgMCAwIDIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZsb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNjcgMTljLTEuOTUgMC0yLjA5IDEtMy4zMyAxLTEuMTkgMC0xLjQyLTEtMy4zMy0xLTEuOTUgMC0yLjEgMS0zLjM0IDEtMS4yNCAwLTEuMzgtMS0zLjMzLTEtMS45NSAwLTIuMSAxLTMuMzQgMXYyYzEuOTUgMCAyLjExLTEgMy4zNC0xIDEuMjQgMCAxLjM4IDEgMy4zMyAxIDEuOTUgMCAyLjEtMSAzLjM0LTEgMS4yMiAwIDEuNCAxIDMuMzMgMSAxLjkzIDAgMi4xLTEgMy4zMy0xIDEuMjIgMCAxLjQgMSAzLjMzIDF2LTJjLTEuMjQgMC0xLjM4LTEtMy4zMy0xek04LjY4IDE3LjVjMS45NSAwIDIuMDktMSAzLjMzLTEgMS4xOSAwIDEuNDIgMSAzLjMzIDEgMS45NSAwIDIuMDktMSAzLjMzLTEgMS4xOSAwIDEuNC45OCAzLjMxIDF2LTJjLS42MyAwLTEtLjI4LTEuNDgtLjU1bC0yLjAyLTcuNTMgMi4wOS44NS43NC0xLjg2TDkuNzggMiAyIDExLjYxbDEuNTcgMS4yMyAxLjM5LTEuNzguOTMgMy40OGMtLjE4LS4wMi0uMzUtLjA1LS41Ni0uMDUtMS45NSAwLTIuMDkgMS0zLjMzIDF2MmMxLjkgMCAyLjE3LTEgMy4zNS0xIDEuMTkuMDEgMS40MiAxLjAxIDMuMzMgMS4wMXptMS43NC0xMy4wOSA1Ljc0IDIuMDkgMi4xNSA4LjAyYy0xLjU0LjExLTEuODIuODktMi44NS45NmwtMS40Mi01LjMxLTMuODYgMS4wNC45MSAzLjM5Yy0xLjEyLjI1LTEuNDEuOS0yLjQyLjktLjE4IDAtLjMzLS4wMi0uNDUtLjA1TDYuNSA5LjA5bDMuOTItNC42OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZvbGxvd1RoZVNpZ25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDUuNWMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6TTUuNzUgOC45IDMgMjNoMi4xbDEuNzUtOEw5IDE3djZoMnYtNy41NUw4Ljk1IDEzLjRsLjYtM0MxMC44NSAxMiAxMi44IDEzIDE1IDEzdi0yYy0xLjg1IDAtMy40NS0xLTQuMzUtMi40NWwtLjk1LTEuNkM5LjM1IDYuMzUgOC43IDYgOCA2Yy0uMjUgMC0uNS4wNS0uNzUuMTVMMiA4LjNWMTNoMlY5LjY1bDEuNzUtLjc1TTEzIDJ2N2gzLjc1djE0aDEuNVY5SDIyVjJoLTl6bTUuMDEgNlY2LjI1SDE0LjV2LTEuNWgzLjUxVjNsMi40OSAyLjVMMTguMDEgOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUZyb250SGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjUgOGMtLjE3IDAtLjM0LjAyLS41LjA1VjQuNWEyLjUgMi41IDAgMCAwLTMuMDQtMi40NEEyLjUwMiAyLjUwMiAwIDAgMCAxMi41IDBjLTEuMDYgMC0xLjk2LjY2LTIuMzMgMS41OUEyLjUgMi41IDAgMCAwIDcgNHYuNTVBMi41IDIuNSAwIDAgMCA0IDd2OC41YzAgNC42OSAzLjgxIDguNSA4LjUgOC41czguNS0zLjgxIDguNS04LjV2LTVBMi41IDIuNSAwIDAgMCAxOC41IDh6bS41IDcuNWE2LjUgNi41IDAgMSAxLTEzIDBWN2MwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXY1aDJWNGMwLS4yOC4yMi0uNS41LS41cy41LjIyLjUuNXY3aDJWMi41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41VjExaDJWNC41YzAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41djguOTJjLTEuNzcuNzctMyAyLjUzLTMgNC41OGgyYzAtMS42NiAxLjM0LTMgMy0zdi00LjVjMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjV2NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdpcmwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA3LjVjLjk3IDAgMS43NS0uNzggMS43NS0xLjc1UzEyLjk3IDQgMTIgNHMtMS43NS43OC0xLjc1IDEuNzVTMTEuMDMgNy41IDEyIDcuNXptMiA4LjV2NGgtNHYtNEg4bDIuMzgtNi4zOGExLjczMyAxLjczMyAwIDAgMSAzLjI0IDBMMTYgMTZoLTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcm91cEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA5VjdoLTJ2MmgtMnYyaDJ2Mmgydi0yaDJWOXpNOCAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6TTggMTNjLTIuNjcgMC04IDEuMzQtOCA0djNoMTZ2LTNjMC0yLjY2LTUuMzMtNC04LTR6bTYgNUgydi0uOTlDMi4yIDE2LjI5IDUuMyAxNSA4IDE1czUuOCAxLjI5IDYgMnYxek0xMi41MSA0LjA1QzEzLjQzIDUuMTEgMTQgNi40OSAxNCA4cy0uNTcgMi44OS0xLjQ5IDMuOTVDMTQuNDcgMTEuNyAxNiAxMC4wNCAxNiA4cy0xLjUzLTMuNy0zLjQ5LTMuOTV6TTE2LjUzIDEzLjgzQzE3LjQyIDE0LjY2IDE4IDE1LjcgMTggMTd2M2gydi0zYzAtMS40NS0xLjU5LTIuNTEtMy40Ny0zLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JvdXBPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA4YzAtMS40Mi0uNS0yLjczLTEuMzMtMy43Ni40Mi0uMTQuODYtLjI0IDEuMzMtLjI0IDIuMjEgMCA0IDEuNzkgNCA0cy0xLjc5IDQtNCA0aC0uMThsLS43Ny0uNzdjLjYtLjk0Ljk1LTIuMDUuOTUtMy4yM3ptNy44MyAxMkgyM3YtM2MwLTIuMTgtMy41OC0zLjQ3LTYuMzQtMy44NyAxLjEuNzUgMS45NSAxLjcxIDIuMjMgMi45NEwyMi44MyAyMHpNOSA2Yy0uMDYgMC0uMTEgMC0uMTYuMDFsLTEuNi0xLjZhMy45OTYgMy45OTYgMCAwIDEgNS4zNSA1LjM1bC0xLjYtMS42Yy4wMS0uMDUuMDEtLjEuMDEtLjE2IDAtMS4xLS45LTItMi0yem0uMTcgNkg5Yy0yLjIxIDAtNC0xLjc5LTQtNHYtLjE3TC42OSAzLjUxIDIuMSAyLjFsMTkuOCAxOS44LTEuNDEgMS40MUwxNyAxOS44M1YyMEgxdi0zYzAtMi42NiA1LjMzLTQgOC00IC4zNyAwIC44LjAzIDEuMjUuMDhMOS4xNyAxMnpNOSAxNWMtMi43IDAtNS44IDEuMjktNiAyLjAxVjE4aDEydi0uMTdsLTIuMTEtMi4xMUMxMS43NiAxNS4zMSAxMC4zMyAxNSA5IDE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JvdXBSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNCA5djJoLTZWOWg2ek04IDRDNS43OSA0IDQgNS43OSA0IDhzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTAgM2MtMi42NyAwLTggMS4zNC04IDR2M2gxNnYtM2MwLTIuNjYtNS4zMy00LTgtNHptNiA1SDJ2LS45OUMyLjIgMTYuMjkgNS4zIDE1IDggMTVzNS44IDEuMjkgNiAydjF6TTEyLjUxIDQuMDVDMTMuNDMgNS4xMSAxNCA2LjQ5IDE0IDhzLS41NyAyLjg5LTEuNDkgMy45NUMxNC40NyAxMS43IDE2IDEwLjA0IDE2IDhzLTEuNTMtMy43LTMuNDktMy45NXptNC4wMiA5Ljc4QzE3LjQyIDE0LjY2IDE4IDE1LjcgMTggMTd2M2gydi0zYzAtMS40NS0xLjU5LTIuNTEtMy40Ny0zLjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTMuNzVjLTIuMzQgMC03IDEuMTctNyAzLjVWMTloMTR2LTEuNzVjMC0yLjMzLTQuNjYtMy41LTctMy41ek00LjM0IDE3Yy44NC0uNTggMi44Ny0xLjI1IDQuNjYtMS4yNXMzLjgyLjY3IDQuNjYgMS4yNUg0LjM0ek05IDEyYzEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzEwLjkzIDUgOSA1IDUuNSA2LjU3IDUuNSA4LjUgNy4wNyAxMiA5IDEyem0wLTVjLjgzIDAgMS41LjY3IDEuNSAxLjVTOS44MyAxMCA5IDEwcy0xLjUtLjY3LTEuNS0xLjVTOC4xNyA3IDkgN3ptNy4wNCA2LjgxYzEuMTYuODQgMS45NiAxLjk2IDEuOTYgMy40NFYxOWg0di0xLjc1YzAtMi4wMi0zLjUtMy4xNy01Ljk2LTMuNDR6TTE1IDEyYzEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzE2LjkzIDUgMTUgNWMtLjU0IDAtMS4wNC4xMy0xLjUuMzUuNjMuODkgMSAxLjk4IDEgMy4xNXMtLjM3IDIuMjYtMSAzLjE1Yy40Ni4yMi45Ni4zNSAxLjUuMzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcm91cHMyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMjcgMTJoMy40NmExLjUgMS41IDAgMCAwIDEuNDgtMS43NWwtLjMtMS43OWEyLjk1MSAyLjk1MSAwIDAgMC01LjgyLjAxbC0uMyAxLjc5Yy0uMTUuOTEuNTUgMS43NCAxLjQ4IDEuNzR6bS43OS0zLjIxYy4wOC0uNDYuNDctLjc5Ljk0LS43OXMuODYuMzMuOTQuNzlsLjIgMS4yMWgtMi4yOGwuMi0xLjIxek0xLjY2IDExLjExYy0uMTMuMjYtLjE4LjU3LS4xLjg4LjE2LjY5Ljc2IDEuMDMgMS41MyAxaDEuOTVjLjgzIDAgMS41MS0uNTggMS41MS0xLjI5IDAtLjE0LS4wMy0uMjctLjA3LS40LS4wMS0uMDMtLjAxLS4wNS4wMS0uMDguMDktLjE2LjE0LS4zNC4xNC0uNTMgMC0uMzEtLjE0LS42LS4zNi0uODItLjAzLS4wMy0uMDMtLjA2LS4wMi0uMS4wNy0uMi4wNy0uNDMuMDEtLjY1YTEuMTIgMS4xMiAwIDAgMC0uOTktLjc0LjA5LjA5IDAgMCAxLS4wNy0uMDNDNS4wMyA4LjE0IDQuNzIgOCA0LjM3IDhjLS4zIDAtLjU3LjEtLjc1LjI2LS4wMy4wMy0uMDYuMDMtLjA5LjAyYTEuMjQgMS4yNCAwIDAgMC0xLjcgMS4wM2MwIC4wMi0uMDEuMDQtLjAzLjA2LS4yOS4yNi0uNDYuNjUtLjQxIDEuMDUuMDMuMjIuMTIuNDMuMjUuNi4wMy4wMi4wMy4wNi4wMi4wOXpNMTYuMjQgMTMuNjVjLTEuMTctLjUyLTIuNjEtLjktNC4yNC0uOS0xLjYzIDAtMy4wNy4zOS00LjI0LjlBMi45ODggMi45ODggMCAwIDAgNiAxNi4zOVYxOGgxMnYtMS42MWMwLTEuMTgtLjY4LTIuMjYtMS43Ni0yLjc0ek04LjA3IDE2YS45Ni45NiAwIDAgMSAuNDktLjUyYzEuMS0uNDkgMi4yNi0uNzMgMy40My0uNzMgMS4xOCAwIDIuMzMuMjUgMy40My43My4yMy4xLjQuMjkuNDkuNTJIOC4wN3pNMS4yMiAxNC41OEEyLjAxIDIuMDEgMCAwIDAgMCAxNi40M1YxOGg0LjV2LTEuNjFjMC0uODMuMjMtMS42MS42My0yLjI5LS4zNy0uMDYtLjc0LS4xLTEuMTMtLjEtLjk5IDAtMS45My4yMS0yLjc4LjU4ek0yMi43OCAxNC41OEE2Ljk1IDYuOTUgMCAwIDAgMjAgMTRjLS4zOSAwLS43Ni4wNC0xLjEzLjEuNC42OC42MyAxLjQ2LjYzIDIuMjlWMThIMjR2LTEuNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1ek0yMiAxMXYtLjVjMC0xLjEtLjktMi0yLTJoLTJjLS40MiAwLS42NS40OC0uMzkuODFsLjcuNjNjLS4xOS4zMS0uMzEuNjctLjMxIDEuMDYgMCAxLjEuOSAyIDIgMnMyLS45IDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUdyb3VwczMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4yNCAxMy42NWMtMS4xNy0uNTItMi42MS0uOS00LjI0LS45LTEuNjMgMC0zLjA3LjM5LTQuMjQuOUEyLjk4OCAyLjk4OCAwIDAgMCA2IDE2LjM5VjE4aDEydi0xLjYxYzAtMS4xOC0uNjgtMi4yNi0xLjc2LTIuNzR6TTguMDcgMTZhLjk2Ljk2IDAgMCAxIC40OS0uNTJjMS4xLS40OSAyLjI2LS43MyAzLjQzLS43MyAxLjE4IDAgMi4zMy4yNSAzLjQzLjczLjIzLjEuNC4yOS40OS41Mkg4LjA3ek0xLjIyIDE0LjU4QTIuMDEgMi4wMSAwIDAgMCAwIDE2LjQzVjE4aDQuNXYtMS42MWMwLS44My4yMy0xLjYxLjYzLTIuMjktLjM3LS4wNi0uNzQtLjEtMS4xMy0uMS0uOTkgMC0xLjkzLjIxLTIuNzguNTh6TTIyLjc4IDE0LjU4QTYuOTUgNi45NSAwIDAgMCAyMCAxNGMtLjM5IDAtLjc2LjA0LTEuMTMuMS40LjY4LjYzIDEuNDYuNjMgMi4yOVYxOEgyNHYtMS41N2MwLS44MS0uNDgtMS41My0xLjIyLTEuODV6TTEyIDEyYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDMgMS4zNCAzIDMgM3ptMC00Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTEuNDk3IDExIDQgOC40OTcgNi41MDMgMTEgNCAxMy41MDN6TTIwIDlsLTIuNSA0aDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVHcm91cHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDEzYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMS4xMyAxLjFjLS4zNy0uMDYtLjc0LS4xLTEuMTMtLjEtLjk5IDAtMS45My4yMS0yLjc4LjU4QTIuMDEgMi4wMSAwIDAgMCAwIDE2LjQzVjE4aDQuNXYtMS42MWMwLS44My4yMy0xLjYxLjYzLTIuMjl6TTIwIDEzYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptNCAzLjQzYzAtLjgxLS40OC0xLjUzLTEuMjItMS44NUE2Ljk1IDYuOTUgMCAwIDAgMjAgMTRjLS4zOSAwLS43Ni4wNC0xLjEzLjEuNC42OC42MyAxLjQ2LjYzIDIuMjlWMThIMjR2LTEuNTd6bS03Ljc2LTIuNzhjLTEuMTctLjUyLTIuNjEtLjktNC4yNC0uOS0xLjYzIDAtMy4wNy4zOS00LjI0LjlBMi45ODggMi45ODggMCAwIDAgNiAxNi4zOVYxOGgxMnYtMS42MWMwLTEuMTgtLjY4LTIuMjYtMS43Ni0yLjc0ek04LjA3IDE2Yy4wOS0uMjMuMTMtLjM5LjkxLS42OS45Ny0uMzggMS45OS0uNTYgMy4wMi0uNTZzMi4wNS4xOCAzLjAyLjU2Yy43Ny4zLjgxLjQ2LjkxLjY5SDguMDd6TTEyIDhjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMW0wLTJjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGFuZHNoYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMjIgMTkuODVjLS4xOC4xOC0uNS4yMS0uNzEgMGEuNTA0LjUwNCAwIDAgMSAwLS43MWwzLjM5LTMuMzktMS40MS0xLjQxLTMuMzkgMy4zOWMtLjE5LjItLjUxLjE5LS43MSAwYS41MDQuNTA0IDAgMCAxIDAtLjcxbDMuMzktMy4zOS0xLjQxLTEuNDEtMy4zOSAzLjM5Yy0uMTguMTgtLjUuMjEtLjcxIDBhLjUxMy41MTMgMCAwIDEgMC0uNzFsMy4zOS0zLjM5LTEuNDItMS40MS0zLjM5IDMuMzljLS4xOC4xOC0uNS4yMS0uNzEgMGEuNTEzLjUxMyAwIDAgMSAwLS43MUw5LjUyIDguNGwxLjg3IDEuODZjLjk1Ljk1IDIuNTkuOTQgMy41NCAwIC45OC0uOTguOTgtMi41NiAwLTMuNTRsLTEuODYtMS44Ni4yOC0uMjhjLjc4LS43OCAyLjA1LS43OCAyLjgzIDBsNC4yNCA0LjI0Yy43OC43OC43OCAyLjA1IDAgMi44M2wtOC4yIDguMnptOS42MS02Ljc4YTQuMDA4IDQuMDA4IDAgMCAwIDAtNS42NmwtNC4yNC00LjI0YTQuMDA4IDQuMDA4IDAgMCAwLTUuNjYgMGwtLjI4LjI4LS4yOC0uMjhhNC4wMDggNC4wMDggMCAwIDAtNS42NiAwTDIuMTcgNi43MWEzLjk5MiAzLjk5MiAwIDAgMC0uNCA1LjE5bDEuNDUtMS40NWEyIDIgMCAwIDEgLjM3LTIuMzNsMy41NC0zLjU0Yy43OC0uNzggMi4wNS0uNzggMi44MyAwbDMuNTYgMy41NmMuMTguMTguMjEuNSAwIC43MS0uMjEuMjEtLjUzLjE4LS43MSAwTDkuNTIgNS41N2wtNS44IDUuNzljLS45OC45Ny0uOTggMi41NiAwIDMuNTQuMzkuMzkuODkuNjMgMS40Mi43YTIuNDU4IDIuNDU4IDAgMCAwIDIuMTIgMi4xMiAyLjQ1OCAyLjQ1OCAwIDAgMCAyLjEyIDIuMTJjLjA3LjU0LjMxIDEuMDMuNyAxLjQyLjQ3LjQ3IDEuMS43MyAxLjc3LjczLjY3IDAgMS4zLS4yNiAxLjc3LS43M2w4LjIxLTguMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWFsdGhBbmRTYWZldHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41IDEzSDh2LTNoMi41VjcuNWgzVjEwSDE2djNoLTIuNXYyLjVoLTNWMTN6TTEyIDIgNCA1djYuMDljMCA1LjA1IDMuNDEgOS43NiA4IDEwLjkxIDQuNTktMS4xNSA4LTUuODYgOC0xMC45MVY1bC04LTN6bTYgOS4wOWMwIDQtMi41NSA3LjctNiA4LjgzLTMuNDUtMS4xMy02LTQuODItNi04Ljgzdi00LjdsNi0yLjI1IDYgMi4yNXY0Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIZWFydEJyb2tlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjUgM2MtLjk2IDAtMS45LjI1LTIuNzMuNjlMMTIgOWgzbC0zIDEwIDEtOWgtM2wxLjU0LTUuMzlDMTAuNDcgMy42MSA5LjAxIDMgNy41IDMgNC40MiAzIDIgNS40MiAyIDguNWMwIDQuMTMgNC4xNiA3LjE4IDEwIDEyLjUgNS40Ny00Ljk0IDEwLTguMjYgMTAtMTIuNUMyMiA1LjQyIDE5LjU4IDMgMTYuNSAzem0tNi4yNiAxMy43M0M2LjQ1IDEzLjM0IDQgMTEgNCA4LjUgNCA2LjU0IDUuNTQgNSA3LjUgNWMuNTkgMCAxLjE5LjE1IDEuNzMuNDJMNy4zNSAxMmgzLjQybC0uNTMgNC43M3ptNC44OS0xLjJMMTcuNjkgN2gtMi45MWwuNjEtMS44MmMuMzYtLjEyLjc0LS4xOCAxLjExLS4xOEMxOC40NiA1IDIwIDYuNTQgMjAgOC41YzAgMi4yMS0yLjAyIDQuNDMtNC44NyA3LjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSGlraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNSA1LjVjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem00IDUuMjhjLTEuMjMtLjM3LTIuMjItMS4xNy0yLjgtMi4xOGwtMS0xLjZjLS40MS0uNjUtMS4xMS0xLTEuODQtMS0uNzggMC0xLjU5LjUtMS43OCAxLjQ0UzcgMjMgNyAyM2gyLjFsMS44LTggMi4xIDJ2Nmgydi03LjVsLTIuMS0yIC42LTNjMSAxLjE1IDIuNDEgMi4wMSA0IDIuMzRWMjNIMTlWOWgtMS41djEuNzh6TTcuNDMgMTMuMTNsLTIuMTItLjQxYS45OTkuOTk5IDAgMCAxLS43OS0xLjE3bC43Ni0zLjkzYTIgMiAwIDAgMSAyLjM0LTEuNThsMS4xNi4yMy0xLjM1IDYuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIaXN0b3J5RWR1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0djEuMzhjLS44My0uMzMtMS43Mi0uNS0yLjYxLS41LTEuNzkgMC0zLjU4LjY4LTQuOTUgMi4wNWwzLjMzIDMuMzNoMS4xMXYxLjExYy44Ni44NiAxLjk4IDEuMzEgMy4xMSAxLjM2VjE1SDZ2M2MwIDEuMS45IDIgMiAyaDEwYzEuNjYgMCAzLTEuMzQgMy0zVjRIOXptLTEuMTEgNi40MVY4LjI2SDUuNjFMNC41NyA3LjIyYTUuMDcgNS4wNyAwIDAgMSAxLjgyLS4zNGMxLjM0IDAgMi41OS41MiAzLjU0IDEuNDZsMS40MSAxLjQxLS4yLjJhMi43IDIuNyAwIDAgMS0xLjkyLjhjLS40NyAwLS45My0uMTItMS4zMy0uMzR6TTE5IDE3YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xdi0yaC02di0yLjU5Yy41Ny0uMjMgMS4xLS41NyAxLjU2LTEuMDNsLjItLjJMMTUuNTkgMTRIMTd2LTEuNDFsLTYtNS45N1Y2aDh2MTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVIaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNSA5LTIuMjUtNGgtMy4zMWwtMS42OS0zaC00LjVMOC4wNiA1SDQuNzVMMi41IDlsMS42OSAzLTEuNjkgMyAyLjI1IDRoMy4zMWwxLjY5IDNoNC41bDEuNjktM2gzLjMxbDIuMjUtNC0xLjY5LTMgMS42OS0zem0tMi4yOSAwLTEuMTIgMmgtMi4xNGwtMS4xMi0yIDEuMTItMmgyLjE0bDEuMTIgMnptLTguMjcgNS0xLjEyLTIgMS4xMi0yaDIuMTJsMS4xMiAyLTEuMTIgMmgtMi4xMnptMi4xNC0xMCAxLjEyIDEuOThMMTMuMDYgOGgtMi4xMkw5LjggNS45OCAxMC45MiA0aDIuMTZ6TTUuOTIgN2gyLjE0bDEuMTIgMi0xLjEyIDJINS45Mkw0Ljc5IDlsMS4xMy0yem0tMS4xMyA4IDEuMTItMmgyLjE0bDEuMTIgMi0xLjEyIDJINS45MmwtMS4xMy0yem02LjEzIDVMOS44IDE4LjAyIDEwLjk0IDE2aDIuMTJsMS4xMyAyLjAyTDEzLjA4IDIwaC0yLjE2em03LjE2LTNoLTIuMTRsLTEuMTItMiAxLjEyLTJoMi4xNGwxLjEyIDItMS4xMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSWNlU2thdGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE3YzAgMS42Ni0xLjM0IDMtMyAzaC0ydi0yaDN2LTRhMy45NiAzLjk2IDAgMCAwLTIuOTEtMy44MmwtMi42Mi0uNzRDMTIuNjIgOS4xOSAxMiA4LjM5IDEyIDcuNVYzSDN2MTVoM3YySDJ2MmgxNmMyLjc2IDAgNS0yLjI0IDUtNWgtMnpNNSAxNlY1aDV2MUg4LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41SDEwbC4xIDFIOC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNWgxLjgxYy40NSAxLjEyIDEuNCAyLjAxIDIuNiAyLjM2bDIuNjIuNzNDMTYuNCAxMi4zMyAxNyAxMy4xIDE3IDE0djJINXptOSA0SDh2LTJoNnYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lSW50ZXJlc3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4wMiAxM2MtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6TTEzIDEzdjhoOHYtOGgtOHptNiA2aC00di00aDR2NHpNNyAybC01IDloMTBMNyAyem0wIDQuMTJMOC42IDlINS40TDcgNi4xMnpNMTkuMjUgMi41Yy0xLjA2IDAtMS44MS41Ni0yLjI1IDEuMTctLjQ0LS42MS0xLjE5LTEuMTctMi4yNS0xLjE3QzEzLjE5IDIuNSAxMiAzLjc4IDEyIDUuMjVjMCAyIDIuNDIgMy40MiA1IDUuNzUgMi41OC0yLjMzIDUtMy43NSA1LTUuNzUgMC0xLjQ3LTEuMTktMi43NS0yLjc1LTIuNzV6TTE3IDguMzVjLTEuNDUtMS4yMi0zLTIuNC0zLTMuMSAwLS40My4zNS0uNzUuNzUtLjc1LjMxIDAgLjUyLjE3LjczLjM3TDE3IDYuM2wxLjUyLTEuNDNjLjIxLS4yLjQyLS4zNy43My0uMzcuNCAwIC43NS4zMi43NS43NSAwIC43LTEuNTUgMS44OC0zIDMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUlvc1NoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYgNS0xLjQyIDEuNDItMS41OS0xLjU5VjE2aC0xLjk4VjQuODNMOS40MiA2LjQyIDggNWw0LTQgNCA0em00IDV2MTFjMCAxLjEtLjkgMi0yIDJINmEyIDIgMCAwIDEtMi0yVjEwYzAtMS4xMS44OS0yIDItMmgzdjJINnYxMWgxMlYxMGgtM1Y4aDNhMiAyIDAgMCAxIDIgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUtheWFraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMjNjLTEuMDMgMC0yLjA2LS4yNS0zLS43NS0xLjg5IDEtNC4xMSAxLTYgMC0xLjg5IDEtNC4xMSAxLTYgMC0uOTUuNS0xLjk3Ljc1LTMgLjc1SDJ2LTJoMWMxLjA0IDAgMi4wOC0uMzUgMy0xIDEuODMgMS4zIDQuMTcgMS4zIDYgMCAxLjgzIDEuMyA0LjE3IDEuMyA2IDAgLjkxLjY1IDEuOTYgMSAzIDFoMXYyaC0xek0xMiA1LjVjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0xMiAxMnMtMS41Mi43MS0zLjkzIDEuMzdjLS44Mi0uMjMtMS41My0uNzUtMi4wNy0xLjM3LS43My44NC0xLjggMS41LTMgMS41cy0yLjI3LS42Ni0zLTEuNWMtLjczLjg0LTEuOCAxLjUtMyAxLjVzLTIuMjctLjY2LTMtMS41Yy0uNTQuNjEtMS4yNSAxLjEzLTIuMDcgMS4zN0MxLjUyIDE4LjIxIDAgMTcuNSAwIDE3LjVzMi45My0xLjM2IDcuMTMtMi4wOGwxLjM1LTQuMTdjLjMxLS45NSAxLjMyLTEuNDcgMi4yNy0xLjE2LjA5LjAzLjE5LjA3LjI3LjExbDIuNDcgMS4zIDIuODQtMS41IDEuNjUtMy43MS0uNTEtMS4zMkwxOC44IDIgMjIgMy40MyAyMC42NyA2LjRsLTEuMzEuNS0zLjcyIDguMzRjNC44NS42MyA4LjM2IDIuMjYgOC4zNiAyLjI2em0tOC45OC00LjU0LTEuNTIuOC0xLjc1LS45Mi0uNzEgMi4xN2MuMzIgMCAuNjQtLjAxLjk2LS4wMS43MSAwIDEuNC4wMyAyLjA3LjA4bC45NS0yLjEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lS2luZ0JlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDEyYzAtMS4xLS45LTItMi0yVjdjMC0xLjEtLjktMi0yLTJINmMtMS4xIDAtMiAuOS0yIDJ2M2MtMS4xIDAtMiAuOS0yIDJ2NWgxLjMzTDQgMTloMWwuNjctMmgxMi42N2wuNjYgMmgxbC42Ny0ySDIydi01em0tNC0yaC01VjdoNXYzek02IDdoNXYzSDZWN3ptLTIgNWgxNnYzSDR2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVLaXRlc3VyZmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgM2MwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem0xNC4wNi0yaC0yLjEyTDE1LjUgMy40NGwxLjA2IDEuMDYgMy41LTMuNXpNMjIgMjN2LTJoLTFjLTEuMDQgMC0yLjA4LS4zNS0zLTEtMS44MyAxLjMtNC4xNyAxLjMtNiAwLTEuODMgMS4zLTQuMTcgMS4zLTYgMC0uOTEuNjUtMS45NiAxLTMgMUgydjJoMWMxLjAzIDAgMi4wNS0uMjUgMy0uNzUgMS44OSAxIDQuMTEgMSA2IDAgMS44OSAxIDQuMTEgMSA2IDAgLjk1LjUgMS45Ny43NSAzIC43NWgxem0tMS05LjcyYzAgMS40NC0yLjE5IDMuNjItNS4wNCA1LjU4LS4zMS4wOS0uNjMuMTQtLjk2LjE0LTEuMiAwLTIuMjctLjY2LTMtMS41LS43My44NC0xLjggMS41LTMgMS41LS45NCAwLTEuODEtLjQxLTIuNDktLjk5LjQ2LS4zOS45Ni0uNzggMS40OS0xLjE3bC0xLjU1LTIuOTdBNC4wNiA0LjA2IDAgMCAxIDYgMTJWOGMwLTEuMS45LTIgMi0yaDNjMS4zOCAwIDIuNjMtLjU2IDMuNTQtMS40NmwxLjQxIDEuNDFBNy4wMTggNy4wMTggMCAwIDEgMTEgOEg5LjZ2My41aDIuOGwxLjY5IDEuODhjMS45NS0uODQgMy43Ny0xLjM4IDUuMDYtMS4zOC44NCAwIDEuODUuMjUgMS44NSAxLjI4em0tOC44Ljk5LS43LS43Ny0yLjUuMS44MyAyLjAxYy41OS0uMzggMS44MS0xLjA2IDIuMzctMS4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUxhbmRzbGlkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDEyIDggOEgydjE0aDIwbC02LTgtNS0yem0xLjUzIDIuNzdMNiAxNi45NWwtMi0uNjd2LTEuODlsMiAuNjcgMy45NS0xLjMyIDIuNTggMS4wM3pNNyAxMGwxLjU3IDIuMDktMi41Ny44Ni0yLS42N1YxMGgzek00IDIwdi0xLjYxbDIgLjY3IDkuMDMtMy4wMUwxOCAyMEg0ek0xNyA2VjFsLTUtMS0zIDJ2NGwzIDIgNS0yem0tNi0yLjkzIDEuNDItLjk1IDIuNTguNTJ2Mi4wMWwtMi43NyAxLjExTDExIDQuOTNWMy4wN3pNMTguNSA3IDE2IDl2M2wyLjUgMiA0LjUtMlY4bC00LjUtMXptMi41IDMuNy0yLjIuOTgtLjgtLjY0VjkuOTZsMS0uOCAyIC40NHYxLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMb2NhdGlvbkNpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDExVjVsLTMtMy0zIDN2MkgzdjE0aDE4VjExaC02em0tOCA4SDV2LTJoMnYyem0wLTRINXYtMmgydjJ6bTAtNEg1VjloMnYyem02IDhoLTJ2LTJoMnYyem0wLTRoLTJ2LTJoMnYyem0wLTRoLTJWOWgydjJ6bTAtNGgtMlY1aDJ2MnptNiAxMmgtMnYtMmgydjJ6bTAtNGgtMnYtMmgydjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVMdWdnYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDE4SDhWOWgxLjV2OXptMy4yNSAwaC0xLjVWOWgxLjV2OXpNMTYgMThoLTEuNVY5SDE2djl6bTEtMTJoLTJWM2MwLS41NS0uNDUtMS0xLTFoLTRjLS41NSAwLTEgLjQ1LTEgMXYzSDdjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDIgMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xaDZjMCAuNTUuNDUgMSAxIDFzMS0uNDUgMS0xYzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS02LjUtMi41aDNWNmgtM1YzLjV6TTE3IDE5SDdWOGgxMHYxMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMTFjMS45MyAwIDMuNSAxLjU3IDMuNSAzLjVTMTEuNDMgMTggOS41IDE4IDYgMTYuNDMgNiAxNC41IDcuNTcgMTEgOS41IDExem0wLTJDNi40NiA5IDQgMTEuNDYgNCAxNC41UzYuNDYgMjAgOS41IDIwczUuNS0yLjQ2IDUuNS01LjVjMC0xLjE2LS4zNi0yLjIzLS45Ny0zLjEyTDE4IDcuNDJWMTBoMlY0aC02djJoMi41OGwtMy45NyAzLjk3QzExLjczIDkuMzYgMTAuNjYgOSA5LjUgOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hbjIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA3aC00Yy0xLjEgMC0yIC45LTIgMnY2aDIuNXY3aDN2LTdIMTZWOWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hbjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA3aC00Yy0xLjEgMC0yIC45LTIgMnY2aDJ2N2g0di03aDJWOWMwLTEuMS0uOS0yLTItMnpNMTIgMS43NTEgMTQuMjQ4IDQgMTIgNi4yNDggOS43NSA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTWFuNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjc1IDdoLTMuNUM5LjA0IDcgOC4xMSA4LjA3IDguMjcgOS4yNkwxMCAyMmg0bDEuNzMtMTIuNzRDMTUuODkgOC4wNyAxNC45NiA3IDEzLjc1IDd6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA3aC00Yy0xLjEgMC0yIC45LTIgMnY2aDJ2N2g0di03aDJWOWMwLTEuMS0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1hc2tzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNSA2Yy0xLjMxIDAtMi4zNyAxLjAxLTIuNDggMi4zLTEuODgtLjUtMi44NC0xLjgtNS4wMi0xLjgtMi4xOSAwLTMuMTQgMS4zLTUuMDIgMS44QzYuODcgNy4wMiA1LjgxIDYgNC41IDZBMi41IDIuNSAwIDAgMCAyIDguNVY5YzAgNiAzLjYgNy44MSA2LjUyIDcuOThDOS41MyAxNy42MiAxMC43MiAxOCAxMiAxOHMyLjQ3LS4zOCAzLjQ4LTEuMDJDMTguNCAxNi44MSAyMiAxNSAyMiA5di0uNUEyLjUgMi41IDAgMCAwIDE5LjUgNnptLTE2IDN2LS41YzAtLjU1LjQ1LTEgMS0xczEgLjQ1IDEgMXYzYzAgMS4yOC4zOCAyLjQ3IDEuMDEgMy40OEM0Ljk5IDE0LjI3IDMuNSAxMi42NSAzLjUgOXpNNyAxMS41VjkuODVjMS4xMi0uMjMgMS45NS0uNjkgMi42Ni0xLjA4QzEwLjQ4IDguMzMgMTEuMDcgOCAxMiA4Yy45MyAwIDEuNTIuMzMgMi4zNC43OC43MS4zOSAxLjU0Ljg0IDIuNjYgMS4wOHYxLjY1YzAgMi43Ni0yLjI0IDUtNSA1cy01LTIuMjUtNS01LjAxek0yMC41IDljMCAzLjY1LTEuNDkgNS4yNy0zLjAxIDUuOTguNjQtMS4wMSAxLjAxLTIuMiAxLjAxLTMuNDh2LTNjMC0uNTUuNDUtMSAxLTFzMSAuNDUgMSAxVjl6bS05LjgxIDEuNDhjLS40NC4yNi0uOTYuNTYtMS42OS43NlYxMC4yYy40OC0uMTcuODQtLjM4IDEuMTgtLjU4QzEwLjcyIDkuMyAxMS4yMyA5IDEyIDlzMS4yNy4zIDEuOC42MmMuMzQuMi43MS40MiAxLjIuNTl2MS4wNGMtLjc1LS4yMS0xLjI2LS41MS0xLjcxLS43OC0uNDYtLjI3LS44LS40Ny0xLjI5LS40N3MtLjg0LjItMS4zMS40OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU1pbGl0YXJ5VGVjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEwLjQzVjJIN3Y4LjQzYzAgLjM1LjE4LjY4LjQ5Ljg2bDQuMTggMi41MS0uOTkgMi4zNC0zLjQxLjI5IDIuNTkgMi4yNEw5LjA3IDIyIDEyIDIwLjIzIDE0LjkzIDIybC0uNzgtMy4zMyAyLjU5LTIuMjQtMy40MS0uMjktLjk5LTIuMzQgNC4xOC0yLjUxYy4zLS4xOC40OC0uNS40OC0uODZ6bS02IC42NC0yLTEuMlY0aDJ2Ny4wN3ptNC0xLjItMiAxLjJWNGgydjUuODd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb29kQmFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTMuNS05Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNXMuNjcgMS41IDEuNSAxLjV6bS03IDBjLjgzIDAgMS41LS42NyAxLjUtMS41UzkuMzMgOCA4LjUgOCA3IDguNjcgNyA5LjUgNy42NyAxMSA4LjUgMTF6bTMuNSAyLjVjLTIuMzMgMC00LjMxIDEuNDYtNS4xMSAzLjVoMTAuMjJjLS44LTIuMDQtMi43OC0zLjUtNS4xMS0zLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVNb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTMuNS05Yy44MyAwIDEuNS0uNjcgMS41LTEuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNXMuNjcgMS41IDEuNSAxLjV6bS03IDBjLjgzIDAgMS41LS42NyAxLjUtMS41UzkuMzMgOCA4LjUgOCA3IDguNjcgNyA5LjUgNy42NyAxMSA4LjUgMTF6bTMuNSA2LjVjMi4zMyAwIDQuMzEtMS40NiA1LjExLTMuNUg2Ljg5Yy44IDIuMDQgMi43OCAzLjUgNS4xMSAzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOaWdodHNTdGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNzggMTcuNTFjLTIuNDcgMC02LjU3LTEuMzMtOC42OC01LjQzLTIuMzMtNC41MS0uNS04LjQ4LjUzLTEwLjA3QzYuMjcgMi4yIDEuOTggNi41OSAxLjk4IDEyYzAgLjE0LjAyLjI4LjAyLjQyLjYxLS4yNiAxLjI4LS40MiAxLjk4LS40MiAwLTMuMDkgMS43My01Ljc3IDQuMy03LjEtLjUgMi4xOS0uNTQgNS4wNCAxLjA0IDguMSAxLjU3IDMuMDQgNC4xOCA0Ljk1IDYuOCA1Ljg2YTggOCAwIDAgMS01LjYxIDEuMDFjLS4zNy43LS45NCAxLjI3LTEuNjQgMS42NC45OC4zMiAyLjAzLjUgMy4xMS41IDMuNSAwIDYuNTgtMS44IDguMzctNC41Mi0uMTcuMDEtLjM3LjAyLS41Ny4wMnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNmgtLjE4QzYuNCAxNC44NCA1LjMgMTQgNCAxNGMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgM2gzYzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vQWR1bHRDb250ZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNNCAxMmMwLTEuODUuNjMtMy41NCAxLjY5LTQuOUw3LjU5IDloMi44M0w3LjEgNS42OUE3LjkyNCA3LjkyNCAwIDAgMSAxMiA0YzQuNDEgMCA4IDMuNTkgOCA4IDAgMS44NS0uNjMgMy41NC0xLjY5IDQuOWwtMS45LTEuOWgtMi44M2wzLjMxIDMuMzFBNy44NzQgNy44NzQgMCAwIDEgMTIgMjBjLTQuNDEgMC04LTMuNTktOC04elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC4yNSAxNC0xLjUtMiAxLjUtMmgtMS41TDEyIDExbC0uNzUtMWgtMS41bDEuNSAyLTEuNSAyaDEuNWwuNzUtMSAuNzUgMXpNOCAxMGwtLjc1IDEtLjc1LTFINWwxLjUgMkw1IDE0aDEuNWwuNzUtMUw4IDE0aDEuNUw4IDEybDEuNS0yek0xNiAxNGwuNzUtMSAuNzUgMUgxOWwtMS41LTIgMS41LTJoLTEuNWwtLjc1IDEtLjc1LTFoLTEuNWwxLjUgMi0xLjUgMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vTHVnZ2FnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2IDEzLjE3LTEuNS0xLjVWOUgxNnY0LjE3em0zLjc4IDkuNDQtMS44NS0xLjg1Yy0uMjguMTUtLjU5LjI0LS45My4yNCAwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMUg5YzAgLjU1LS40NSAxLTEgMXMtMS0uNDUtMS0xYy0xLjEgMC0yLS45LTItMlY4YzAtLjA1LjAyLS4xLjAyLS4xNUwxLjM5IDQuMjIgMi44IDIuODFsMTguMzggMTguMzgtMS40IDEuNDJ6TTE2LjE3IDE5bC0zLjQyLTMuNDJWMThoLTEuNXYtMy45Mkw5LjUgMTIuMzNWMThIOHYtNy4xN2wtMS0xVjE5aDkuMTd6TTEyLjc1IDloLS45MmwuOTIuOTJWOXpNMTkgOHY4LjE3bC0yLTJWOGgtNi4xN2wtLjk5LS45OUw5IDYuMTdWM2MwLS41NS40NS0xIDEtMWg0Yy41NSAwIDEgLjQ1IDEgMXYzaDJjMS4xIDAgMiAuOSAyIDJ6bS04LjUtMmgzVjMuNWgtM1Y2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm9yZGljV2Fsa2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDIzaC0xLjV2LTlIMTl2OXpNNy41MyAxNEg2bC0yIDloMS41M2wyLTl6bTUuOTctOC41YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnpNOS44IDguOSA3IDIzaDIuMWwxLjgtOCAyLjEgMnY2aDJ2LTcuNWwtMi4xLTIgLjYtM0MxNC44IDEyIDE2LjggMTMgMTkgMTN2LTJjLTEuOSAwLTMuNS0xLTQuMy0yLjRsLTEtMS42YTIuMTQ1IDIuMTQ1IDAgMCAwLTIuNjUtLjg0TDYgOC4zVjEzaDJWOS42bDEuOC0uN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU5vdGlmaWNhdGlvbkFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE0djNIOHYtN2MwLTIuMjEgMS43OS00IDQtNCAuODUgMCAxLjY0LjI2IDIuMjguNzJsMS40My0xLjQzQTUuODcgNS44NyAwIDAgMCAxMy41IDQuMnYtLjdjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNXYuN0M3LjkxIDQuODYgNiA3LjIxIDYgMTB2N0g0djJoMTZ2LTJoLTJ2LTNoLTJ6bS00IDhjMS4xIDAgMi0uOSAyLTJoLTRjMCAxLjEuOSAyIDIgMnpNMjQgOGgtM1Y1aC0ydjNoLTN2MmgzdjNoMnYtM2gzVjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RpZmljYXRpb25zQWN0aXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMmMxLjEgMCAyLS45IDItMmgtNGMwIDEuMS45IDIgMiAyem02LTZ2LTVjMC0zLjA3LTEuNjMtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4QzcuNjQgNS4zNiA2IDcuOTIgNiAxMXY1bC0yIDJ2MWgxNnYtMWwtMi0yem0tMiAxSDh2LTZjMC0yLjQ4IDEuNTEtNC41IDQtNC41czQgMi4wMiA0IDQuNXY2ek03LjU4IDQuMDggNi4xNSAyLjY1QzMuNzUgNC40OCAyLjE3IDcuMyAyLjAzIDEwLjVoMmE4LjQ0NSA4LjQ0NSAwIDAgMSAzLjU1LTYuNDJ6bTEyLjM5IDYuNDJoMmMtLjE1LTMuMi0xLjczLTYuMDItNC4xMi03Ljg1bC0xLjQyIDEuNDNhOC40OTUgOC40OTUgMCAwIDEgMy41NCA2LjQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm90aWZpY2F0aW9uc05vbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIyYzEuMSAwIDItLjkgMi0yaC00YzAgMS4xLjkgMiAyIDJ6bTYtNnYtNWMwLTMuMDctMS42My01LjY0LTQuNS02LjMyVjRjMC0uODMtLjY3LTEuNS0xLjUtMS41cy0xLjUuNjctMS41IDEuNXYuNjhDNy42NCA1LjM2IDYgNy45MiA2IDExdjVsLTIgMnYxaDE2di0xbC0yLTJ6bS0yIDFIOHYtNmMwLTIuNDggMS41MS00LjUgNC00LjVzNCAyLjAyIDQgNC41djZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RpZmljYXRpb25zT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMmMxLjEgMCAyLS45IDItMmgtNGMwIDEuMS45IDIgMiAyem0wLTE1LjVjMi40OSAwIDQgMi4wMiA0IDQuNXYuMWwyIDJWMTFjMC0zLjA3LTEuNjMtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4Yy0uMjQuMDYtLjQ3LjE1LS42OS4yM2wxLjY0IDEuNjRjLjE4LS4wMi4zNi0uMDUuNTUtLjA1ek01LjQxIDMuMzUgNCA0Ljc2bDIuODEgMi44MUM2LjI5IDguNTcgNiA5Ljc0IDYgMTF2NWwtMiAydjFoMTQuMjRsMS43NCAxLjc0IDEuNDEtMS40MUw1LjQxIDMuMzV6TTE2IDE3SDh2LTZjMC0uNjguMTItMS4zMi4zNC0xLjlMMTYgMTYuNzZWMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVOb3RpZmljYXRpb25zUGF1c2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgOS44aDIuOGwtMi44IDMuNFYxNWg1di0xLjhoLTIuOGwyLjgtMy40VjhoLTV6TTE4IDE2di01YzAtMy4wNy0xLjYzLTUuNjQtNC41LTYuMzJWNGMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41di42OEM3LjY0IDUuMzYgNiA3LjkyIDYgMTF2NWwtMiAydjFoMTZ2LTFsLTItMnptLTIgMUg4di02YzAtMi40OCAxLjUxLTQuNSA0LTQuNXM0IDIuMDIgNCA0LjV2NnptLTQgNWMxLjEgMCAyLS45IDItMmgtNGMwIDEuMS45IDIgMiAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lTm90aWZpY2F0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJjMS4xIDAgMi0uOSAyLTJoLTRjMCAxLjEuOSAyIDIgMnptNi02di01YzAtMy4wNy0xLjYzLTUuNjQtNC41LTYuMzJWNGMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41di42OEM3LjY0IDUuMzYgNiA3LjkyIDYgMTF2NWwtMiAydjFoMTZ2LTFsLTItMnptLTIgMUg4di02YzAtMi40OCAxLjUxLTQuNSA0LTQuNXM0IDIuMDIgNCA0LjV2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZU91dGRvb3JHcmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDIyYzEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zYy0xLjMgMC0yLjQuODQtMi44MiAySDkuMTRsMS45OS0zLjA2YTYuMzYgNi4zNiAwIDAgMCAxLjc0IDBsMS4wMiAxLjU3Yy40Mi0uNTMuOTYtLjk1IDEuNi0xLjIxbC0uNi0uOTNBNi45OTIgNi45OTIgMCAwIDAgMTkgOEg1YzAgMi44NCAxLjY5IDUuMjcgNC4xMiA2LjM3bC0zLjk1IDYuMDhhMSAxIDAgMCAwIC4yOSAxLjM4IDEgMSAwIDAgMCAxLjM4LS4yOWwxLTEuNTVoNi4zNEMxNC42IDIxLjE2IDE1LjcgMjIgMTcgMjJ6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tOS41OC04aDkuMTZjLS43NyAxLjc2LTIuNTQgMy00LjU4IDNzLTMuODEtMS4yNC00LjU4LTN6TTkuNDEgN2gxYy4xNS0xLjE1LjIzLTEuNjQtLjg5LTIuOTYtLjQyLS41LS42OC0uNzctLjQ2LTIuMDRoLS45OWMtLjIxIDEuMTEuMDMgMi4wNS44OSAyLjk2LjIyLjI0Ljc5LjY3LjQ1IDIuMDR6TTExLjg5IDdoMWMuMTUtMS4xNS4yMy0xLjY0LS44OS0yLjk2LS40Mi0uNS0uNjgtLjc4LS40Ni0yLjA0aC0uOTljLS4yMSAxLjExLjAzIDIuMDUuODkgMi45Ni4yMy4yNC44LjY3LjQ1IDIuMDR6TTE0LjQxIDdoMWMuMTUtMS4xNS4yMy0xLjY0LS44OS0yLjk2LS40Mi0uNS0uNjgtLjc3LS40Ni0yLjA0aC0uOTljLS4yMSAxLjExLjAzIDIuMDUuODkgMi45Ni4yMi4yNC43OS42Ny40NSAyLjA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGFnZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNiAyaDZ2NmgtM2wxLTQtNCAxVjV6TTUgNWg2djNMNyA3bDEgNEg1VjV6bTYgMTRINXYtNmgzbC0xIDQgNC0xdjN6bTggMGgtNnYtM2w0IDEtMS00aDN2NnptLTQuMzctNC4zN0wxMiAxMy43MmwtMi42My45MS45MS0yLjYzLS45MS0yLjYzIDIuNjMuOTEgMi42My0uOTEtLjkxIDIuNjMuOTEgMi42M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhcmFnbGlkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTdjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem0zLjQ4Ljk0QzE0LjY4IDE4LjU0IDE0IDE5IDEyIDE5cy0yLjY4LS40Ni0zLjQ4LTEuMDZDOC4wNCAxNy41NSA3IDE2Ljc2IDcgMTRINWMwIDIuNy45MyA0LjQxIDIuMyA1LjUuNS40IDEuMS43IDEuNy45VjI0aDZ2LTMuNmMuNi0uMiAxLjItLjUgMS43LS45IDEuMzctMS4wOSAyLjMtMi44IDIuMy01LjVoLTJjMCAyLjc2LTEuMDQgMy41NS0xLjUyIDMuOTR6TTIzIDQuMjV2My40OWMwIC44LS44OCAxLjI2LTEuNTYuODMtLjE0LS4wOS0uMjgtLjE4LS40NC0uMjZMMTkgMTNoLTJsLTEuNS02LjI4YTI3Ljg1MiAyNy44NTIgMCAwIDAtNyAwTDcgMTNINUwzIDguMzFjLS4xNi4wOC0uMy4xNy0uNDQuMjZDMS44OCA5IDEgOC41NSAxIDcuNzRWNC4yNUMxIDEuOSA1LjkyIDAgMTIgMHMxMSAxLjkgMTEgNC4yNXpNNi45IDYuOThjLS45My4xOS0xLjc4LjQzLTIuNTMuNzFsMS41MSAzLjU1TDYuOSA2Ljk4em0xMi43My43MWMtLjc1LS4yOC0xLjYtLjUyLTIuNTMtLjcxbDEuMDIgNC4yNSAxLjUxLTMuNTR6TTIxIDQuMzFDMjAuNjUgMy42MyAxNy41NyAyIDEyIDJTMy4zNSAzLjYzIDMgNC4zMXYxLjc3QzUuMzQgNS4wNyA4LjU2IDQuNSAxMiA0LjVzNi42Ni41NyA5IDEuNThWNC4zMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBhcnR5TW9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNGgtMy4xN0wxNSAySDlMNy4xNyA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg0VjZoNC4wNWwuNTktLjY1TDkuODggNGg0LjI0bDEuMjQgMS4zNS41OS42NUgyMHYxMnpNOSAxMmMwLTEuNjYgMS4zNC0zIDMtM2gzLjk4Yy0uOTItMS4yMS0yLjM1LTItMy45OC0yYTUuMDAyIDUuMDAyIDAgMCAwLTQuOSA2aDIuMDhjLS4xMS0uMzEtLjE4LS42NS0uMTgtMXptNiAwYzAgMS42Ni0xLjM0IDMtMyAzSDguMDJjLjkyIDEuMjEgMi4zNSAyIDMuOTggMmE1LjAwMiA1LjAwMiAwIDAgMCA0LjktNmgtMi4wOGMuMTEuMzEuMTguNjUuMTggMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlb3BsZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjY3IDEzLjEzQzE4LjA0IDE0LjA2IDE5IDE1LjMyIDE5IDE3djNoNHYtM2MwLTIuMTgtMy41Ny0zLjQ3LTYuMzMtMy44N3pNMTUgMTJjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTRjLS40NyAwLS45MS4xLTEuMzMuMjRhNS45OCA1Ljk4IDAgMCAxIDAgNy41MmMuNDIuMTQuODYuMjQgMS4zMy4yNHpNOSAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6TTkgMTNjLTIuNjcgMC04IDEuMzQtOCA0djNoMTZ2LTNjMC0yLjY2LTUuMzMtNC04LTR6bTYgNUgzdi0uOTlDMy4yIDE2LjI5IDYuMyAxNSA5IDE1czUuOCAxLjI5IDYgMnYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVvcGxlT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMy43NWMtMi4zNCAwLTcgMS4xNy03IDMuNVYxOWgxNHYtMS43NWMwLTIuMzMtNC42Ni0zLjUtNy0zLjV6TTQuMzQgMTdjLjg0LS41OCAyLjg3LTEuMjUgNC42Ni0xLjI1czMuODIuNjcgNC42NiAxLjI1SDQuMzR6TTkgMTJjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTAuOTMgNSA5IDUgNS41IDYuNTcgNS41IDguNSA3LjA3IDEyIDkgMTJ6bTAtNWMuODMgMCAxLjUuNjcgMS41IDEuNVM5LjgzIDEwIDkgMTBzLTEuNS0uNjctMS41LTEuNVM4LjE3IDcgOSA3em03LjA0IDYuODFjMS4xNi44NCAxLjk2IDEuOTYgMS45NiAzLjQ0VjE5aDR2LTEuNzVjMC0yLjAyLTMuNS0zLjE3LTUuOTYtMy40NHpNMTUgMTJjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTYuOTMgNSAxNSA1Yy0uNTQgMC0xLjA0LjEzLTEuNS4zNS42My44OSAxIDEuOTggMSAzLjE1cy0uMzcgMi4yNi0xIDMuMTVjLjQ2LjIyLjk2LjM1IDEuNS4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlb3BsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMy43NWMtMi4zNCAwLTcgMS4xNy03IDMuNVYxOWgxNHYtMS43NWMwLTIuMzMtNC42Ni0zLjUtNy0zLjV6TTQuMzQgMTdjLjg0LS41OCAyLjg3LTEuMjUgNC42Ni0xLjI1czMuODIuNjcgNC42NiAxLjI1SDQuMzR6TTkgMTJjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTAuOTMgNSA5IDUgNS41IDYuNTcgNS41IDguNSA3LjA3IDEyIDkgMTJ6bTAtNWMuODMgMCAxLjUuNjcgMS41IDEuNVM5LjgzIDEwIDkgMTBzLTEuNS0uNjctMS41LTEuNVM4LjE3IDcgOSA3em03LjA0IDYuODFjMS4xNi44NCAxLjk2IDEuOTYgMS45NiAzLjQ0VjE5aDR2LTEuNzVjMC0yLjAyLTMuNS0zLjE3LTUuOTYtMy40NHpNMTUgMTJjMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTYuOTMgNSAxNSA1Yy0uNTQgMC0xLjA0LjEzLTEuNS4zNS42My44OSAxIDEuOTggMSAzLjE1cy0uMzcgMi4yNi0xIDMuMTVjLjQ2LjIyLjk2LjM1IDEuNS4zNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvbjIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4zOSAxNC41NkMxNi43MSAxMy43IDE0LjUzIDEzIDEyIDEzcy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA0IDE3LjIyVjIwaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTE4IDE4SDZ2LS43OGMwLS4zOC4yLS43Mi41Mi0uODhDNy43MSAxNS43MyA5LjYzIDE1IDEyIDE1YzIuMzcgMCA0LjI5LjczIDUuNDggMS4zNC4zMi4xNi41Mi41LjUyLjg4VjE4ek05Ljc4IDEyaDQuNDRjMS4yMSAwIDIuMTQtMS4wNiAxLjk4LTIuMjZsLS4zMi0yLjQ1QzE1LjU3IDUuMzkgMTMuOTIgNCAxMiA0UzguNDMgNS4zOSA4LjEyIDcuMjlMNy44IDkuNzRjLS4xNiAxLjIuNzcgMi4yNiAxLjk4IDIuMjZ6bS4zMi00LjQxQzEwLjI2IDYuNjcgMTEuMDYgNiAxMiA2czEuNzQuNjcgMS45IDEuNTlsLjMyIDIuNDFIOS43OGwuMzItMi40MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvbjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4zOSAxNC41NkMxNi43MSAxMy43IDE0LjUzIDEzIDEyIDEzcy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA0IDE3LjIyVjIwaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTE4IDE4SDZ2LS43OGMwLS4zOC4yLS43Mi41Mi0uODhDNy43MSAxNS43MyA5LjYzIDE1IDEyIDE1YzIuMzcgMCA0LjI5LjczIDUuNDggMS4zNC4zMi4xNi41Mi41LjUyLjg4VjE4ek0xMCAxMmg0YzEuNjYgMCAzLTEuMzQgMy0zIDAtLjczLS4yNy0xLjQtLjcxLTEuOTIuMTMtLjMzLjIxLS43LjIxLTEuMDhhMyAzIDAgMCAwLTEuODYtMi43N0MxNCAyLjQ4IDEzLjA2IDIgMTIgMnMtMiAuNDgtMi42NCAxLjIzQTMgMyAwIDAgMCA3LjUgNmMwIC4zOC4wOC43NS4yMSAxLjA4QzcuMjcgNy42IDcgOC4yNyA3IDljMCAxLjY2IDEuMzQgMyAzIDN6bS0uNzYtMy42M2MuODctMS4wNC4yNi0yIC4yNi0yLjM3IDAtLjQxLjI0LS43Ny42Mi0uOTIuMjktLjEyLjU1LS4zMS43NS0uNTQuMTctLjIxLjU1LS41NCAxLjEzLS41NHMuOTYuMzMgMS4xMy41M2MuMi4yNC40Ni40Mi43NS41NGExIDEgMCAwIDEgLjYyLjkzYzAgLjM3LS42MSAxLjMzLjI2IDIuMzcuNTguNjkuMDQgMS42My0uNzYgMS42M2gtNGMtLjggMC0xLjM0LS45NC0uNzYtMS42M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvbjQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC4zOSAxNC41NkMxNi43MSAxMy43IDE0LjUzIDEzIDEyIDEzcy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA0IDE3LjIyVjIwaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTE4IDE4SDZ2LS43OGMwLS4zOC4yLS43Mi41Mi0uODhDNy43MSAxNS43MyA5LjYzIDE1IDEyIDE1YzIuMzcgMCA0LjI5LjczIDUuNDggMS4zNC4zMi4xNi41Mi41LjUyLjg4VjE4ek0xMiAxMmMyLjIxIDAgNC0xLjc5IDQtNFY0LjVjMC0uODMtLjY3LTEuNS0xLjUtMS41LS41MiAwLS45OC4yNy0xLjI1LjY3LS4yNy0uNC0uNzMtLjY3LTEuMjUtLjY3cy0uOTguMjctMS4yNS42N2MtLjI3LS40LS43My0uNjctMS4yNS0uNjdDOC42NyAzIDggMy42NyA4IDQuNVY4YzAgMi4yMSAxLjc5IDQgNCA0em0tMi02LjVoNFY4YzAgMS4xLS45IDItMiAycy0yLS45LTItMlY1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25BZGRBbHQxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOGMwLTIuMjEtMS43OS00LTQtNFM1IDUuNzkgNSA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptLTIgMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6TTEgMTh2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHMtOCAxLjM0LTggNHptMiAwYy4yLS43MSAzLjMtMiA2LTIgMi42OSAwIDUuNzggMS4yOCA2IDJIM3ptMTctM3YtM2gzdi0yaC0zVjdoLTJ2M2gtM3YyaDN2M2gyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVyc29uQWRkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOVY2aC0ydjNoLTN2MmgzdjNoMnYtM2gzVjloLTN6TTkgMTJjMi4yMSAwIDQtMS43OSA0LTRzLTEuNzktNC00LTQtNCAxLjc5LTQgNCAxLjc5IDQgNCA0em0wLTZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yem02LjM5IDguNTZDMTMuNzEgMTMuNyAxMS41MyAxMyA5IDEzcy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCAxIDE3LjIyVjIwaDE2di0yLjc4YzAtMS4xMi0uNjEtMi4xNS0xLjYxLTIuNjZ6TTE1IDE4SDN2LS43OGMwLS4zOC4yLS43Mi41Mi0uODhDNC43MSAxNS43MyA2LjYzIDE1IDkgMTVjMi4zNyAwIDQuMjkuNzMgNS40OCAxLjM0LjMyLjE2LjUyLjUuNTIuODhWMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25BZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDEyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptMC02YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptMCA4Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00em0tNiA0Yy4yMi0uNzIgMy4zMS0yIDYtMiAyLjcgMCA1LjggMS4yOSA2IDJIOXptLTMtM3YtM2gzdi0ySDZWN0g0djNIMXYyaDN2M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvbk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwIDE3LjE3LTMuMzctMy4zOGMuNjQuMjIgMS4yMy40OCAxLjc3Ljc2Ljk3LjUxIDEuNTggMS41MiAxLjYgMi42MnptMS4xOSA0LjAyLTEuNDEgMS40MS0yLjYxLTIuNkg0di0yLjc4YzAtMS4xMi42MS0yLjE1IDEuNjEtMi42NiAxLjI5LS42NiAyLjg3LTEuMjIgNC42Ny0xLjQ1TDEuMzkgNC4yMiAyLjggMi44MWwxOC4zOSAxOC4zOHpNMTUuMTcgMThsLTMtM0gxMmMtMi4zNyAwLTQuMjkuNzMtNS40OCAxLjM0LS4zMi4xNi0uNTIuNS0uNTIuODhWMThoOS4xN3pNMTIgNmMxLjEgMCAyIC45IDIgMiAwIC44Ni0uNTQgMS41OS0xLjMgMS44N2wxLjQ4IDEuNDhhMy45OTkgMy45OTkgMCAxIDAtNS41My01LjUzbDEuNDggMS40OEExLjk5IDEuOTkgMCAwIDEgMTIgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBlcnNvbk91dGxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDUuOWEyLjEgMi4xIDAgMSAxIDAgNC4yIDIuMSAyLjEgMCAwIDEgMC00LjJtMCA5YzIuOTcgMCA2LjEgMS40NiA2LjEgMi4xdjEuMUg1LjlWMTdjMC0uNjQgMy4xMy0yLjEgNi4xLTIuMU0xMiA0QzkuNzkgNCA4IDUuNzkgOCA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDljLTIuNjcgMC04IDEuMzQtOCA0djNoMTZ2LTNjMC0yLjY2LTUuMzMtNC04LTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQZXJzb25SZW1vdmVBbHQxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOGMwLTIuMjEtMS43OS00LTQtNFM2IDUuNzkgNiA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptLTIgMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6TTIgMTh2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHMtOCAxLjM0LTggNHptMiAwYy4yLS43MSAzLjMtMiA2LTIgMi42OSAwIDUuNzcgMS4yOCA2IDJINHpNMTcgMTBoNnYyaC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVyc29uUmVtb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOGMwLTIuMjEtMS43OS00LTQtNFM2IDUuNzkgNiA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNHptLTIgMGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6TTIgMTh2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHMtOCAxLjM0LTggNHptMiAwYy4yLS43MSAzLjMtMiA2LTIgMi42OSAwIDUuNzcgMS4yOCA2IDJINHpNMTcgMTBoNnYyaC02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVyc29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMm0wIDEwYzIuNyAwIDUuOCAxLjI5IDYgMkg2Yy4yMy0uNzIgMy4zMS0yIDYtMm0wLTEyQzkuNzkgNCA4IDUuNzkgOCA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDEwYy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGVyc29uYWxJbmp1cnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMGMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAtNmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTYuMzkgOC41NkMxNi43MSAxMS43IDE0LjUzIDExIDEyIDExcy00LjcxLjctNi4zOSAxLjU2QTIuOTcgMi45NyAwIDAgMCA0IDE1LjIyVjIyaDJ2LTYuNzhjMC0uMzguMi0uNzIuNTItLjg4QzcuNzEgMTMuNzMgOS42MyAxMyAxMiAxM2MuNzYgMCAxLjQ3LjA3IDIuMTMuMmwtMS41NSAzLjNIOS43NUM4LjIzIDE2LjUgNyAxNy43MyA3IDE5LjI1UzguMjMgMjIgOS43NSAyMkgxOGMxLjEgMCAyLS45IDItMnYtNC43OGMwLTEuMTItLjYxLTIuMTUtMS42MS0yLjY2ek0xMC45NCAyMEg5Ljc1Yy0uNDEgMC0uNzUtLjM0LS43NS0uNzVzLjM0LS43NS43NS0uNzVoMS44OWwtLjcgMS41ek0xOCAyMGgtNC44NWwyLjk0LTYuMjdjLjU0LjIgMS4wMS40MSAxLjQuNjEuMzEuMTYuNTEuNS41MS44OFYyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBpYW5vT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMTkgMjEuMTkgMi44MSAyLjgxIDEuMzkgNC4yMiAzIDUuODNWMTljMCAxLjEuOSAyIDIgMmgxMy4xN2wxLjYxIDEuNjEgMS40MS0xLjQyek04LjI1IDE5SDVWNy44M2wyIDJ2My42N2MwIC41NS40NSAxIDEgMWguMjVWMTl6bTEuNSAwdi00LjVIMTBjLjQ2IDAgLjgyLS4zMS45NC0uNzNsMy4zMSAzLjMxVjE5aC00LjV6TTExIDguMTcgNS44MyAzSDE5YzEuMSAwIDIgLjkgMiAydjEzLjE3bC0yLTJWNWgtMnY4LjVjMCAuMTktLjA3LjM2LS4xNi41MUwxMyAxMC4xN1Y1aC0ydjMuMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaWFubyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNSAxMS41aC4yNVYxOWgtNC41di00LjVIMTBjLjU1IDAgMS0uNDUgMS0xVjVoMnY4LjVjMCAuNTUuNDUgMSAxIDF6TTUgNWgydjguNWMwIC41NS40NSAxIDEgMWguMjVWMTlINVY1em0xNCAxNGgtMy4yNXYtNC41SDE2Yy41NSAwIDEtLjQ1IDEtMVY1aDJ2MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS40NSAxNi41Mi0zLjAxLTMuMDFjLS4xMS0uMTEtLjI0LS4xMy0uMzEtLjEzcy0uMi4wMi0uMzEuMTNMOC44IDE2LjUzYy0uMzQuMzQtLjg3Ljg5LTIuNjQuODlsMy43MSAzLjdhMyAzIDAgMCAwIDQuMjQgMGwzLjcyLTMuNzFjLS45MSAwLTEuNjctLjE4LTIuMzgtLjg5ek04LjggNy40N2wzLjAyIDMuMDJjLjA4LjA4LjIuMTMuMzEuMTNzLjIzLS4wNS4zMS0uMTNsMi45OS0yLjk5Yy43MS0uNzQgMS41Mi0uOTEgMi40My0uOTFsLTMuNzItMy43MWEzIDMgMCAwIDAtNC4yNCAwbC0zLjcxIDMuN2MxLjc2IDAgMi4zLjU4IDIuNjEuODl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjExIDkuODUtMi4yNS0yLjI2SDE3LjZjLS41NCAwLTEuMDguMjItMS40NS42MWwtMyAzYy0uMjguMjgtLjY1LjQyLTEuMDIuNDJhMS41IDEuNSAwIDAgMS0xLjAyLS40Mkw4LjA5IDguMTdjLS4zOC0uMzgtLjktLjYtMS40NS0uNkg1LjE3bC0yLjI5IDIuM2EzIDMgMCAwIDAgMCA0LjI0bDIuMjkgMi4zaDEuNDhjLjU0IDAgMS4wNi0uMjIgMS40NS0uNmwzLjAyLTMuMDJjLjI4LS4yOC42NS0uNDIgMS4wMi0uNDJzLjc0LjE0IDEuMDIuNDJsMy4wMSAzLjAxYy4zOC4zOC45LjYgMS40NS42aDEuMjZsMi4yNS0yLjI2YTMuMDQyIDMuMDQyIDAgMCAwLS4wMi00LjI5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUGx1c09uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgOEg4djRINHYyaDR2NGgydi00aDR2LTJoLTRWOHptNC41LTEuOTJWNy45bDIuNS0uNVYxOGgyVjVsLTQuNSAxLjA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUG9sbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0ek03IDEwaDJ2N0g3em00LTNoMnYxMGgtMnptNCA2aDJ2NGgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVByZWNpc2lvbk1hbnVmYWN0dXJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS45MyA4LjM1LTMuNiAxLjY4TDE0IDcuN1Y2LjNsMi4zMy0yLjMzIDMuNiAxLjY4Yy4zOC4xOC44Mi4wMSAxLS4zNi4xOC0uMzguMDEtLjgyLS4zNi0xbC0zLjkyLTEuODNhLjk5My45OTMgMCAwIDAtMS4xMy4yTDEzLjc4IDQuNEEuOTc1Ljk3NSAwIDAgMCAxMyA0Yy0uNTUgMC0xIC40NS0xIDF2MUg4LjgyQzguNCA0Ljg0IDcuMyA0IDYgNCA0LjM0IDQgMyA1LjM0IDMgN2MwIDEuMS42IDIuMDUgMS40OCAyLjU4TDcuMDggMThINmMtMS4xIDAtMiAuOS0yIDJ2MWgxM3YtMWMwLTEuMS0uOS0yLTItMmgtMS42Mkw4LjQxIDguNzdjLjE3LS4yNC4zMS0uNDkuNDEtLjc3SDEydjFjMCAuNTUuNDUgMSAxIDEgLjMyIDAgLjYtLjE2Ljc4LS40bDEuNzQgMS43NGMuMy4zLjc1LjM4IDEuMTMuMmwzLjkyLTEuODNjLjM4LS4xOC41NC0uNjIuMzYtMWEuNzUzLjc1MyAwIDAgMC0xLS4zNnpNNiA4Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTUuMTEgMTBIOS4xN2wtMi40Ni04aC4xbDQuMyA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHN5Y2hvbG9neUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljk0IDkuMDZDMTkuNSA1LjczIDE2LjU3IDMgMTMgMyA5LjQ3IDMgNi41NyA1LjYxIDYuMDggOWwtMS45MyAzLjQ4Yy0uNDEuNjYuMDcgMS41Mi44NSAxLjUyaDF2MmMwIDEuMS45IDIgMiAyaDF2M2g3di00LjY4YTcuMDE2IDcuMDE2IDAgMCAwIDMuOTQtNy4yNnptLTUuMDUgNS41Ny0uODkuNDJWMTloLTN2LTNIOHYtNEg2LjdsMS4zMy0yLjMzQzguMjEgNy4wNiAxMC4zNSA1IDEzIDVjMi43NiAwIDUgMi4yNCA1IDUgMCAyLjA5LTEuMjkgMy44OC0zLjExIDQuNjN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgMTIuNTRjLS40MSAwLS43NC4zMS0uNzQuNzMgMCAuNDEuMzMuNzQuNzQuNzQuNDIgMCAuNzMtLjMzLjczLS43NGEuNzEuNzEgMCAwIDAtLjczLS43M3pNMTIuNSA3Yy0xLjAzIDAtMS43NC42Ny0yIDEuNDVsLjk2LjRjLjEzLS4zOS40My0uODYgMS4wNS0uODYuOTUgMCAxLjEzLjg5LjggMS4zNi0uMzIuNDUtLjg2Ljc1LTEuMTQgMS4yNi0uMjMuNC0uMTguODctLjE4IDEuMTZoMS4wNmMwLS41NS4wNC0uNjUuMTMtLjgyLjIzLS40Mi42NS0uNjIgMS4wOS0xLjI3LjQtLjU5LjI1LTEuMzgtLjAxLTEuOC0uMzEtLjQ5LS45LS44OC0xLjc2LS44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVBzeWNob2xvZ3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS44MiA3LjIyLTEgLjRjLS4yMS0uMTYtLjQzLS4yOS0uNjctLjM5TDE0IDYuMTdjLS4wMi0uMS0uMS0uMTctLjItLjE3aC0xLjZjLS4xIDAtLjE4LjA3LS4xOS4xN2wtLjE1IDEuMDZjLS4yNC4xLS40Ny4yMy0uNjcuMzlsLTEtLjRjLS4wOS0uMDMtLjIgMC0uMjQuMDlsLS44IDEuMzhhLjIuMiAwIDAgMCAuMDUuMjZsLjg1LjY2Yy0uMDMuMTItLjA1LjI2LS4wNS4zOXMuMDEuMjYuMDMuMzlsLS44NC42NmEuMTkuMTkgMCAwIDAtLjA1LjI1bC44IDEuMzljLjA1LjA5LjE1LjEyLjI1LjA5bC45OS0uNGMuMjEuMTYuNDMuMjkuNjguMzlsLjE0IDEuMDZjLjAyLjEuMS4xNy4yLjE3aDEuNmMuMSAwIC4xOC0uMDcuMi0uMTdsLjE1LTEuMDZjLjI0LS4xLjQ3LS4yMy42Ny0uMzlsLjk5LjRjLjA5LjA0LjIgMCAuMjQtLjA5bC44LTEuMzljLjA1LS4wOS4wMy0uMTktLjA1LS4yNWwtLjgzLS42NmEyLjU2MSAyLjU2MSAwIDAgMCAwLS43OGwuODUtLjY2YS4yLjIgMCAwIDAgLjA1LS4yNmwtLjgtMS4zOGMtLjA1LS4wOS0uMTYtLjEyLS4yNS0uMDl6TTEzIDExLjQzYTEuNDMgMS40MyAwIDEgMSAwLTIuODYgMS40MyAxLjQzIDAgMCAxIDAgMi44NnpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOTQgOS4wNmMtLjQzLTMuMjctMy4yMy01Ljg2LTYuNTMtNi4wNUMxMy4yNyAzIDEzLjE0IDMgMTMgMyA5LjQ3IDMgNi41NyA1LjYxIDYuMDggOWwtMS45MyAzLjQ4Yy0uNDEuNjYuMDcgMS41Mi44NSAxLjUyaDF2MmMwIDEuMS45IDIgMiAyaDF2M2g3di00LjY4YTcuMDE2IDcuMDE2IDAgMCAwIDMuOTQtNy4yNnptLTUuMDUgNS41Ny0uODkuNDJWMTloLTN2LTNIOHYtNEg2LjdsMS4zMy0yLjMzQzguMjEgNy4wNiAxMC4zNSA1IDEzIDVjMi43NiAwIDUgMi4yNCA1IDUgMCAyLjA5LTEuMjkgMy44OC0zLjExIDQuNjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVQdWJsaWNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA4LjE3IDYuNDkgMy42NkE5LjkxIDkuOTEgMCAwIDEgMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMCAwIDIuMDQtLjYxIDMuOTMtMS42NiA1LjUxbC0xLjQ2LTEuNDZBNy44NDIgNy44NDIgMCAwIDAgMjAgMTJjMC0zLjM1LTIuMDctNi4yMi01LTcuNDFWNWMwIDEuMS0uOSAyLTIgMmgtMnYxLjE3em0xMC4xOSAxMy4wMi0xLjQxIDEuNDEtMi4yNy0yLjI3QTkuODM5IDkuODM5IDAgMCAxIDEyIDIyQzYuNDggMjIgMiAxNy41MiAyIDEyYzAtMi4wNC42MS0zLjkzIDEuNjYtNS41MUwxLjM5IDQuMjIgMi44IDIuODFsMTguMzkgMTguMzh6TTExIDE4Yy0xLjEgMC0yLS45LTItMnYtMWwtNC43OS00Ljc5QzQuMDggMTAuNzkgNCAxMS4zOCA0IDEyYzAgNC4wOCAzLjA1IDcuNDQgNyA3LjkzVjE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUHVibGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek00IDEyYzAtLjYxLjA4LTEuMjEuMjEtMS43OEw4Ljk5IDE1djFjMCAxLjEuOSAyIDIgMnYxLjkzQzcuMDYgMTkuNDMgNCAxNi4wNyA0IDEyem0xMy44OSA1LjRjLS4yNi0uODEtMS0xLjQtMS45LTEuNGgtMXYtM2MwLS41NS0uNDUtMS0xLTFoLTZ2LTJoMmMuNTUgMCAxLS40NSAxLTFWN2gyYzEuMSAwIDItLjkgMi0ydi0uNDFDMTcuOTIgNS43NyAyMCA4LjY1IDIwIDEyYzAgMi4wOC0uODEgMy45OC0yLjExIDUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJlYWxFc3RhdGVBZ2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDYuNVYxNGgtMlY3LjVMMTQgNCA5IDcuNVY5SDdWNi41bDctNSA3IDV6bS01LjUuNWgtMXYxaDFWN3ptLTIgMGgtMXYxaDFWN3ptMiAyaC0xdjFoMVY5em0tMiAwaC0xdjFoMVY5em01LjUgN2gtMmMwLTEuMi0uNzUtMi4yOC0xLjg3LTIuN0w4Ljk3IDExSDF2MTFoNnYtMS40NGw3IDEuOTQgOC0yLjV2LTFjMC0xLjY2LTEuMzQtMy0zLTN6TTMgMjB2LTdoMnY3SDN6bTEwLjk3LjQxTDcgMTguNDhWMTNoMS42MWw1LjgyIDIuMTdjLjM0LjEzLjU3LjQ2LjU3LjgzIDAgMC0xLjk5LS4wNS0yLjMtLjE1bC0yLjM4LS43OS0uNjMgMS45IDIuMzguNzljLjUxLjE3IDEuMDQuMjYgMS41OC4yNkgxOWMuMzkgMCAuNzQuMjMuOS41NmwtNS45MyAxLjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lUmVjb21tZW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEwaC00LjU5bC41OC0zLjQxdi0uMmMtLjAxLS4yNi0uMTItLjUxLS4zLS43TDEyIDVsLTQuNiA1Yy0uMjcuMjYtLjQyLjYyLS40IDF2NWMwIDEuMS45IDIgMiAyaDUuNWMuNTYuMDMgMS4wOC0uMjkgMS4zLS44bDIuMS00LjljLjA4LS4xNS4xMi0uMzMuMS0uNVYxMWMwLS41NS0uNDUtMS0xLTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZWN5Y2xpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Ljc3IDcuMTUgNy4yIDQuNzhsMS4wMy0xLjcxYy4zOS0uNjUgMS4zMy0uNjUgMS43MiAwbDEuNDggMi40Ni0xLjIzIDIuMDYtMSAxLjYyLTMuNDMtMi4wNnptMTUuOTUgNS44Mi0xLjYtMi42Ni0zLjQ2IDJMMTguODcgMTZIMjBhMiAyIDAgMCAwIDItMmMwLS4zNi0uMS0uNzEtLjI4LTEuMDN6TTE2IDIxaDEuNWEyIDIgMCAwIDAgMS43OS0xLjExTDIwLjc0IDE3SDE2di0ybC00IDQgNCA0di0yem0tNi00SDUuN2wtLjg0IDEuNDFjLS4zLjUtLjMyIDEuMTItLjA2IDEuNjUuMjguNTcuODcuOTQgMS41Mi45NEgxMHYtNHptLTMuODgtMi42NSAxLjczIDEuMDRMNi40OCA5LjkgMSAxMS4yN2wxLjcgMS4wMi0uNDEuNjljLS4zNS41OS0uMzggMS4zMS0uMDcgMS45MmwxLjYzIDMuMjYgMi4yNy0zLjgxem0xMC45LTkuMjEtMS4zLTIuMTdDMTUuMzUgMi4zNyAxNC43IDIgMTQgMmgtMy41M2wzLjEyIDUuMi0xLjcyIDEuMDMgNS40OSAxLjM3IDEuMzctNS40OS0xLjcxIDEuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZWR1Y2VDYXBhY2l0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDRjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptNC43OCAzLjU4QTYuOTUgNi45NSAwIDAgMCAxOCA3Yy0uNjcgMC0xLjMxLjEtMS45Mi4yOC41OC41NS45MiAxLjMyLjkyIDIuMTVWMTBoNXYtLjU3YzAtLjgxLS40OC0xLjUzLTEuMjItMS44NXpNNiA2YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMS45MiAxLjI4QzcuMzEgNy4xIDYuNjcgNyA2IDdjLS45OSAwLTEuOTMuMjEtMi43OC41OEEyLjAxIDIuMDEgMCAwIDAgMiA5LjQzVjEwaDV2LS41N2MwLS44My4zNC0xLjYuOTItMi4xNXpNMTAgNGMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem02IDZIOHYtLjU3YzAtLjgxLjQ4LTEuNTMgMS4yMi0xLjg1YTYuOTUgNi45NSAwIDAgMSA1LjU2IDBBMi4wMSAyLjAxIDAgMCAxIDE2IDkuNDNWMTB6bS0xIDZjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptNiA2aC04di0uNTdjMC0uODEuNDgtMS41MyAxLjIyLTEuODVhNi45NSA2Ljk1IDAgMCAxIDUuNTYgMEEyLjAxIDIuMDEgMCAwIDEgMjEgMjEuNDNWMjJ6TTUgMTZjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptNiA2SDN2LS41N2MwLS44MS40OC0xLjUzIDEuMjItMS44NWE2Ljk1IDYuOTUgMCAwIDEgNS41NiAwQTIuMDEgMi4wMSAwIDAgMSAxMSAyMS40M1YyMnptMS43NS05di0yaC0xLjV2Mkg5bDMgMyAzLTNoLTIuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSZW1vdmVNb2RlcmF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgNC4xNCA2IDIuMjV2NC43YzAgMS4xOS0uMjMgMi4zNi0uNjQgMy40NGwxLjUxIDEuNTFjLjcyLTEuNTMgMS4xMy0zLjIyIDEuMTMtNC45NVY1bC04LTMtNS4yMiAxLjk2IDEuNTUgMS41NUwxMiA0LjE0ek0yLjgxIDIuODEgMS4zOSA0LjIyIDQgNi44M3Y0LjI2YzAgNS4wNSAzLjQxIDkuNzYgOCAxMC45MSAxLjcyLS40MyAzLjI4LTEuMzYgNC41NS0yLjYybDMuMjMgMy4yMyAxLjQxLTEuNDFMMi44MSAyLjgxek0xMiAxOS45MmMtMy40NS0xLjEzLTYtNC44Mi02LTguODNWOC44M2w5LjE0IDkuMTRjLS45Ljg4LTEuOTcgMS41Ny0zLjE0IDEuOTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSb2xsZXJTa2F0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTJhMy45NiAzLjk2IDAgMCAwLTIuOTEtMy44MmwtMi42Mi0uNzRDMTMuNjIgNy4xOSAxMyA2LjM5IDEzIDUuNVYxSDR2MTVoMTZ2LTR6bS0yIDJINlYzaDV2MUg5LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41SDExbC4xIDFIOS41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNWgxLjgxYy40NSAxLjEyIDEuNCAyLjAxIDIuNiAyLjM2bDIuNjIuNzNDMTcuNCAxMC4zMyAxOCAxMS4xIDE4IDEydjJ6TTUgMTdjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0wIDRjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMTQtNGMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTAgNGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tNy00Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3ptMCA0Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTYWZldHlEaXZpZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNWgydjE0aC0yVjV6bS02IDdjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0yLjc4IDEuNThhNi45NSA2Ljk1IDAgMCAwLTUuNTYgMEEyLjAxIDIuMDEgMCAwIDAgMSAxNS40M1YxNmg4di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1ek0xOSAxMmMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTIuNzggMS41OGE2Ljk1IDYuOTUgMCAwIDAtNS41NiAwQTIuMDEgMi4wMSAwIDAgMCAxNSAxNS40M1YxNmg4di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2FuaXRpemVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSA2LjVDMTUuNSA1LjY2IDE3IDQgMTcgNHMxLjUgMS42NiAxLjUgMi41YzAgLjgzLS42NyAxLjUtMS41IDEuNXMtMS41LS42Ny0xLjUtMS41em00IDguNWEyLjUgMi41IDAgMCAwIDIuNS0yLjVjMC0xLjY3LTIuNS00LjUtMi41LTQuNVMxNyAxMC44MyAxNyAxMi41YTIuNSAyLjUgMCAwIDAgMi41IDIuNXpNMTMgMTRoLTJ2LTJIOXYySDd2MmgydjJoMnYtMmgydi0yem0zLTJ2OGMwIDEuMS0uOSAyLTIgMkg2Yy0xLjEgMC0yLS45LTItMnYtOGMwLTIuOTcgMi4xNi01LjQzIDUtNS45MVY0SDdWMmg2YzEuMTMgMCAyLjE1LjM5IDIuOTkgMS4wMWwtMS40MyAxLjQzQzE0LjEgNC4xNyAxMy41NyA0IDEzIDRoLTJ2Mi4wOWMyLjg0LjQ4IDUgMi45NCA1IDUuOTF6bS0yIDBjMC0yLjIxLTEuNzktNC00LTRzLTQgMS43OS00IDR2OGg4di04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NhbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMVY4YzQuNTYtLjU4IDgtMy4xIDgtNkgyYzAgMi45IDMuNDQgNS40MiA4IDZ2M2MtMy42OC43My04IDMuNjEtOCAxMWg2di0ySDQuMTNjLjkzLTYuODMgNi42NS03LjIgNy44Ny03LjJzNi45NC4zNyA3Ljg3IDcuMkgxNnYyaDZjMC03LjM5LTQuMzItMTAuMjctOC0xMXptNC44Ny03QzE3LjUgNS4xOSAxNSA2LjEyIDEyIDYuMTJTNi41IDUuMTkgNS4xMyA0aDEzLjc0ek0xMiAyMmMtMS4xIDAtMi0uOS0yLTIgMC0uNTUuMjItMS4wNS41OS0xLjQxQzExLjM5IDE3Ljc5IDE2IDE2IDE2IDE2cy0xLjc5IDQuNjEtMi41OSA1LjQxYy0uMzYuMzctLjg2LjU5LTEuNDEuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTY2hvb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDMgMSA5bDQgMi4xOHY2TDEyIDIxbDctMy44MnYtNmwyLTEuMDlWMTdoMlY5TDEyIDN6bTYuODIgNkwxMiAxMi43MiA1LjE4IDkgMTIgNS4yOCAxOC44MiA5ek0xNyAxNS45OWwtNSAyLjczLTUtMi43M3YtMy43MkwxMiAxNWw1LTIuNzN2My43MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNjaWVuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMS4zMyAxOCAxOEg2bDUtNi42N1Y2aDJtMi45Ni0ySDguMDRjLS40MiAwLS42NS40OC0uMzkuODFMOSA2LjV2NC4xN0wzLjIgMTguNGMtLjQ5LjY2LS4wMiAxLjYuOCAxLjZoMTZjLjgyIDAgMS4yOS0uOTQuOC0xLjZMMTUgMTAuNjdWNi41bDEuMzUtMS42OWMuMjYtLjMzLjAzLS44MS0uMzktLjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2NvcmVib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDloLTIuNWMtLjU1IDAtMSAuNDUtMSAxdjRjMCAuNTUuNDUgMSAxIDFIMThjLjU1IDAgMS0uNDUgMS0xdi00YzAtLjU1LS40NS0xLTEtMXptLS41IDQuNUgxNnYtM2gxLjV2M3ptLTggMS41SDV2LTIuNWMwLS41NS40NS0xIDEtMWgydi0xSDVWOWgzLjVjLjU1IDAgMSAuNDUgMSAxdjEuNWMwIC41NS0uNDUgMS0xIDFoLTJ2MWgzVjE1em0zLjI1LTRoLTEuNVY5LjVoMS41VjExem0wIDMuNWgtMS41VjEzaDEuNXYxLjV6TTIyIDZ2MTJjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yaDNWMmgydjJoNlYyaDJ2MmgzYzEuMSAwIDIgLjkgMiAyem0tMiAxMlY2aC03LjI1djEuNWgtMS41VjZINHYxMmg3LjI1di0xLjVoMS41VjE4SDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2N1YmFEaXZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDEzYzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6bTcuODktMi44OSA0LjUzLTEuMjEtLjc4LTIuOS00LjUzIDEuMjFjLS44LjIxLTEuMjggMS4wNC0xLjA2IDEuODQuMjIuOCAxLjA0IDEuMjggMS44NCAxLjA2ek0yMC41IDUuOSAyMyAzbC0xLTEtMyAzLTIgNC05LjQ4IDIuODdjLS44Mi4yLTEuMzkuODktMS41IDEuNjhMNS4yNCAxOCAyLjQgMjEuOCA0IDIzbDMtNCAxLjE0LTMuMTRMMTQgMTRsNS0zLjUgMS41LTQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNlbGZJbXByb3ZlbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDE2di0yYy0yLjI0IDAtNC4xNi0uOTYtNS42LTIuNjhsLTEuMzQtMS42QTEuOTggMS45OCAwIDAgMCAxMi41MyA5aC0xLjA1Yy0uNTkgMC0xLjE1LjI2LTEuNTMuNzJsLTEuMzQgMS42QzcuMTYgMTMuMDQgNS4yNCAxNCAzIDE0djJjMi43NyAwIDUuMTktMS4xNyA3LTMuMjVWMTVsLTMuODggMS41NWMtLjY3LjI3LTEuMTIuOTMtMS4xMiAxLjY2QzUgMTkuMiA1LjggMjAgNi43OSAyMEg5di0uNWEyLjUgMi41IDAgMCAxIDIuNS0yLjVoM2MuMjggMCAuNS4yMi41LjVzLS4yMi41LS41LjVoLTNjLS44MyAwLTEuNS42Ny0xLjUgMS41di41aDcuMjFjLjk5IDAgMS43OS0uOCAxLjc5LTEuNzkgMC0uNzMtLjQ1LTEuMzktMS4xMi0xLjY2TDE0IDE1di0yLjI1YzEuODEgMi4wOCA0LjIzIDMuMjUgNyAzLjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VudGltZW50RGlzc2F0aXNmaWVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE0Yy0yLjMzIDAtNC4zMiAxLjQ1LTUuMTIgMy41aDEuNjdjLjY5LTEuMTkgMS45Ny0yIDMuNDUtMnMyLjc1LjgxIDMuNDUgMmgxLjY3Yy0uOC0yLjA1LTIuNzktMy41LTUuMTItMy41em0tLjAxLTEyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW50aW1lbnROZXV0cmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE0aDZ2MS41SDl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU2VudGltZW50U2F0aXNmaWVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE2Yy0xLjQ4IDAtMi43NS0uODEtMy40NS0ySDYuODhhNS40OTUgNS40OTUgMCAwIDAgMTAuMjQgMGgtMS42N2MtLjcgMS4xOS0xLjk3IDItMy40NSAyem0tLjAxLTE0QzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW50aW1lbnRWZXJ5RGlzc2F0aXNmaWVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMy41Yy0yLjMzIDAtNC4zMSAxLjQ2LTUuMTEgMy41aDEwLjIyYy0uOC0yLjA0LTIuNzgtMy41LTUuMTEtMy41ek03LjgyIDEybDEuMDYtMS4wNkw5Ljk0IDEyIDExIDEwLjk0IDkuOTQgOS44OCAxMSA4LjgyIDkuOTQgNy43NiA4Ljg4IDguODIgNy44MiA3Ljc2IDYuNzYgOC44MmwxLjA2IDEuMDYtMS4wNiAxLjA2em00LjE3LTEwQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDkuOTkgMTBTMjIgMTcuNTMgMjIgMTIgMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTQuMTgtMTIuMjQtMS4wNiAxLjA2LTEuMDYtMS4wNkwxMyA4LjgybDEuMDYgMS4wNkwxMyAxMC45NCAxNC4wNiAxMmwxLjA2LTEuMDZMMTYuMTggMTJsMS4wNi0xLjA2LTEuMDYtMS4wNiAxLjA2LTEuMDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTZW50aW1lbnRWZXJ5U2F0aXNmaWVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDkuOTkgMTBTMjIgMTcuNTMgMjIgMTIgMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTEtMTAuMDZMMTQuMDYgMTFsMS4wNi0xLjA2TDE2LjE4IDExbDEuMDYtMS4wNi0yLjEyLTIuMTJMMTMgOS45NHptLTQuMTIgMEw5Ljk0IDExIDExIDkuOTQgOC44OCA3LjgyIDYuNzYgOS45NCA3LjgyIDExbDEuMDYtMS4wNnpNMTIgMTcuNWMyLjMzIDAgNC4zMS0xLjQ2IDUuMTEtMy41SDYuODljLjggMi4wNCAyLjc4IDMuNSA1LjExIDMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNldmVyZUNvbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxMC40MSA0LTRMMTQuNTkgNSAxMiA3LjU5VjRoLTJ2My41OUw3LjQxIDUgNiA2LjQxbDQgNFYxMkg4LjQxbC00LTRMMyA5LjQxIDUuNTkgMTJIMnYyaDMuNTlMMyAxNi41OSA0LjQxIDE4bDQtNEgxMHYxLjU5bC00IDRMNy40MSAyMSAxMCAxOC40MVYyMmgydi0zLjU5TDE0LjU5IDIxIDE2IDE5LjU5bC00LTRWMTRoMS41OWw0IDRMMTkgMTYuNTkgMTYuNDEgMTRIMjB2LTJoLTh6TTE5IDJoMnY1aC0yek0xOSA4aDJ2MmgtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxNi4wOGMtLjc2IDAtMS40NC4zLTEuOTYuNzdMOC45MSAxMi43Yy4wNS0uMjMuMDktLjQ2LjA5LS43cy0uMDQtLjQ3LS4wOS0uN2w3LjA1LTQuMTFjLjU0LjUgMS4yNS44MSAyLjA0LjgxIDEuNjYgMCAzLTEuMzQgMy0zcy0xLjM0LTMtMy0zLTMgMS4zNC0zIDNjMCAuMjQuMDQuNDcuMDkuN0w4LjA0IDkuODFDNy41IDkuMzEgNi43OSA5IDYgOWMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgM2MuNzkgMCAxLjUtLjMxIDIuMDQtLjgxbDcuMTIgNC4xNmMtLjA1LjIxLS4wOC40My0uMDguNjUgMCAxLjYxIDEuMzEgMi45MiAyLjkyIDIuOTJzMi45Mi0xLjMxIDIuOTItMi45MmMwLTEuNjEtMS4zMS0yLjkyLTIuOTItMi45MnpNMTggNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xek02IDEzYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTEyIDcuMDJjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjMyIDEwLjU2IDguMzggOS41IDcuMzIgOC40NGwxLjA2LTEuMDZMMTAuNSA5LjVsLTIuMTIgMi4xMi0xLjA2LTEuMDZ6TTQuNSA5Yy4wMyAwIC4wNS4wMS4wOC4wMUE4LjAwMiA4LjAwMiAwIDAgMSAxMiA0YzIuMTkgMCA0LjE2Ljg4IDUuNjEgMi4zLjE1LS42LjQ1LTEuMjkuODEtMS45NkE5Ljk2NSA5Ljk2NSAwIDAgMCAxMS45OSAyYy00Ljg4IDAtOC45NCAzLjUxLTkuODEgOC4xNEMyLjc0IDkuNDQgMy41OSA5IDQuNSA5ek0yMSAxMC41Yy0uNDIgMC0uODItLjA5LTEuMTktLjIyLjEyLjU1LjE5IDEuMTMuMTkgMS43MiAwIDQuNDItMy41OCA4LTggOC0zLjM2IDAtNi4yMy0yLjA3LTcuNDItNS4wMS0uMDMgMC0uMDUuMDEtLjA4LjAxLS41MiAwLTEuMDQtLjE0LTEuNS0uNC0uMzItLjE4LS41OS0uNDItLjgyLS43Ljg5IDQuNjEgNC45MyA4LjEgOS44IDguMUMxNy41MiAyMiAyMiAxNy41MiAyMiAxMmMwLS41NS0uMDYtMS4wOS0uMTQtMS42MmEzLjUgMy41IDAgMCAxLS44Ni4xMnpNMjEgM3MtMiAyLjktMiA0IC45IDIgMiAyIDItLjkgMi0yLTItNC0yLTR6bS01LjM4IDQuMzhMMTMuNSA5LjVsMi4xMiAyLjEyIDEuMDYtMS4wNi0xLjA2LTEuMDYgMS4wNi0xLjA2LTEuMDYtMS4wNnpNOC41NiAxN2MuNjktMS4xOSAxLjk3LTIgMy40NC0yczIuNzUuODEgMy40NCAyaDEuNjhjLS44LTIuMDUtMi43OS0zLjUtNS4xMi0zLjUtLjg3IDAtMS43LjItMi40My41N0w1Ljk5IDEyYzAtLjUyLS4yNi0xLjAyLS43NC0xLjI5LS43Mi0uNDEtMS42My0uMTctMi4wNS41NS0uNDEuNzItLjE3IDEuNjMuNTUgMi4wNS40OC4yOCAxLjA1LjI1IDEuNDkgMGwyLjk3IDEuNzJjLS41Ny41My0xLjAzIDEuMjEtMS4zMyAxLjk3aDEuNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTaWduTGFuZ3VhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMi40OSAxMy0uOTMtMS44NmMtLjM3LS43NC0uMDctMS42NC42Ny0yLjAxbC4yNi0uMTMgNS43MyA1LjQ2Yy41LjQ3Ljc4IDEuMTMuNzggMS44MXY1LjIzYTIuNSAyLjUgMCAwIDEtMi41IDIuNWgtMTFjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFIMTB2LTFINGMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMWg2di0xSDNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFoN3YtMUg0LjVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTFoNy45OXptMS41MS4yVjE1aC0ydjdoNGMuNTUgMCAxLS40NSAxLTF2LTQuNTNjMC0uMjctLjExLS41NC0uMzEtLjczTDE0IDEzLjJ6bS0yLjIyLTYuMDhjLS44NC40LTEuMTcuNjItMS42MyAxLjE5bC0yLjctMi44NUEuOTk2Ljk5NiAwIDEgMSA4LjkgNC4wOWwyLjg4IDMuMDN6TTkuNjQgOS4yMWEzLjQ2IDMuNDYgMCAwIDAtLjIgMS43OWgtLjg2TDYuMzEgOC42MWEuOTg3Ljk4NyAwIDAgMSAuMDQtMS40MS45OTYuOTk2IDAgMCAxIDEuNDEuMDRsMS44OCAxLjk3em0xMC42OSA0LjcuODgtLjgzYy41LS40Ny43OS0xLjEzLjc5LTEuODJWMy4zNWwtLjI3LS4xYy0uNzgtLjI4LTEuNjQuMTItMS45Mi45bC0uNzEgMS45Ni01LjUtNS44YS45OTYuOTk2IDAgMSAwLTEuNDUgMS4zN2wzLjc5IDMuOTktLjczLjY5LTQuODItNS4wOGEuOTk2Ljk5NiAwIDEgMC0xLjQ1IDEuMzdsMy43OCAzLjk4TDE1LjM4IDlsMS45My0xLjg3IDEuMzggMS40NUwyMCA3LjM0djMuN2MwIC4yOC0uMTEuNTQtLjMxLjczbC0uNy42Ni42MS41OGMuMjkuMjcuNTMuNTcuNzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNpbmdsZUJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEyYzAtMS4xLS45LTItMi0yVjdjMC0xLjEtLjktMi0yLTJIOGMtMS4xIDAtMiAuOS0yIDJ2M2MtMS4xIDAtMiAuOS0yIDJ2NWgxLjMzTDYgMTloMWwuNjctMmg4LjY3bC42NiAyaDFsLjY3LTJIMjB2LTV6bS00LTJoLTNWN2gzdjN6TTggN2gzdjNIOFY3em0tMiA1aDEydjNINnYtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNrYXRlYm9hcmRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzYzAtMS4xLjktMiAyLTJzMiAuOSAyIDItLjkgMi0yIDItMi0uOS0yLTJ6TTcuMjUgMjIuNWMtLjQxIDAtLjc1LjM0LS43NS43NXMuMzQuNzUuNzUuNzUuNzUtLjM0Ljc1LS43NS0uMzQtLjc1LS43NS0uNzV6bTguNSAwYy0uNDEgMC0uNzUuMzQtLjc1Ljc1cy4zNC43NS43NS43NS43NS0uMzQuNzUtLjc1LS4zNC0uNzUtLjc1LS43NXptMy40OS0zLjVhLjcyLjcyIDAgMCAwLS41OS4zYy0uNTUuNzMtMS40MiAxLjItMi40IDEuMkgxNnYtNmwtNC4zMi0yLjY3IDEuOC0yLjg5QTYuNTA3IDYuNTA3IDAgMCAwIDE5IDEydi0yYy0xLjg1IDAtMy40NC0xLjEyLTQuMTMtMi43MmwtLjUyLTEuMjFDMTQuMTYgNS42NCAxMy42MSA1IDEyLjcgNUg3TDQuNSA5bDEuNyAxLjA2TDguMSA3aDIuMzVsLTIuNCAzLjg0Yy0uMzEuNS0uMzkgMS4xMS0uMjEgMS42N2wxLjM0IDQuMTUtMy4xMiAzLjc2Yy0uNy0uMTYtMS4zLS41Ny0xLjcxLTEuMTJhLjc0OS43NDkgMCAxIDAtMS4yLjljLjgyIDEuMSAyLjEzIDEuOCAzLjYgMS44aDkuNWMxLjQ3IDAgMi43OC0uNyAzLjYtMS44LjEtLjE0LjE1LS4zLjE1LS40NSAwLS4zOS0uMzItLjc1LS43Ni0uNzV6TTE0IDIwLjVIOC42bDIuOS0zLjUtMS0zLjMgMy41IDIuMnY0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTbGVkZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDQuNWMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6bTguOCAxNS43NGE0LjAwMyA0LjAwMyAwIDAgMS01LjA0IDIuNTdMMSAxNy4zNmwuNDYtMS40MyAzLjkzIDEuMjguNDYtMS40My0zLjkyLTEuMjguNDYtMS40M0w0IDEzLjZWOS41bDUuNDctMi4zNWMuMzktLjE3Ljg0LS4yMSAxLjI4LS4wNy45NS4zMSAxLjQ2IDEuMzIgMS4xNiAyLjI3bC0xLjA1IDMuMjQgMi4xNC0uMzRjLjg5LS4xNSAxLjc2LjMyIDIuMTQgMS4xNGwyLjA4IDQuNTEgMS45My42My0uNDYgMS40My0zLjMyLTEuMDgtLjQ3IDEuNDIgMy4zMiAxLjA4YzEuMzEuNDMgMi43Mi0uMjkgMy4xNS0xLjYxLjQzLTEuMzEtLjI5LTIuNzItMS42MS0zLjE1bC40Ni0xLjQzYzIuMTEuNjkgMy4yNyAyLjk1IDIuNTggNS4wNXpNNiAxNC4yNWwxLjAxLjMzYy0uMjItLjQyLS4yOC0uOTItLjEyLTEuNEw3LjkyIDEwIDYgMTAuODJ2My40M3ptNy45NCA0LjE2LTYuNjYtMi4xNi0uNDYgMS40MyA2LjY2IDIuMTYuNDYtMS40M3ptLjY5LTEuMzYtMS4xOC0yLjU2LTMuOTcuODkgNS4xNSAxLjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU25vd2JvYXJkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgM2MwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yem03LjQgMTcuMDlhLjc0OC43NDggMCAwIDAtLjY0LjE3Yy0uNjkuNi0xLjY0Ljg4LTIuNi42N0wxNyAyMC42OWwtMS02LjE5LTMuMzItMi42NyAxLjgtMi44OUE2LjUwNyA2LjUwNyAwIDAgMCAyMCAxMnYtMmMtMS44NSAwLTMuNDQtMS4xMi00LjEzLTIuNzJsLS41Mi0xLjIxQzE1LjE2IDUuNjQgMTQuNjEgNSAxMy43IDVIOEw1LjUgOWwxLjcgMS4wNkw5LjEgN2gyLjM1bC0yLjUxIDMuOTljLS4yOC40NS0uMzcgMS0uMjUgMS41Mkw5LjUgMTYgNiAxOC4zNWwtLjQ3LS4xYy0uOTYtLjItMS43MS0uODUtMi4xLTEuNjdhLjc0NC43NDQgMCAwIDAtLjUxLS40MmMtLjQzLS4wOS0uODIuMi0uOS41OC0uMDQuMTQtLjAyLjMxLjA1LjQ2LjU4IDEuMjQgMS43MSAyLjIgMy4xNSAyLjUxbDEyLjYzIDIuNjljMS40NC4zMSAyLjg2LS4xMSAzLjktMS4wMS4xMy0uMTEuMjEtLjI2LjI0LS40MS4wNy0uMzgtLjE2LS44LS41OS0uODl6TTguNzMgMTguOTNsMy4wMi0yLjAzLS40NC0zLjMyIDIuODQgMi4wMi43NSA0LjY0LTYuMTctMS4zMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNub3dzaG9laW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSAzLjVjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnpNNi4zMiAxOS4wM2wtMS4xNC0xLjQ3TDQgMTguNWwyLjM4IDMuMDRjLjUxLjY1IDEuMTYgMS4xNSAxLjg4IDEuNDEuMjguMS41My4wNC43Mi0uMTEuMy0uMjMuNDItLjcuMTItMS4wN2EuODQuODQgMCAwIDAtLjMxLS4yMiAyLjk3IDIuOTcgMCAwIDEtMS4xNC0uODNsLS4wOC0uMUwxMSAxOC4ybC44OS0zLjIyIDIuMTEgMnY0LjUyaC0yVjIzaDMuODdjLjgyIDAgMS42MS0uMjEgMi4yNi0uNjEuMjYtLjE2LjM3LS4zOS4zNy0uNjQgMC0uMzgtLjMtLjc1LS43Ny0uNzUtLjEzIDAtLjI2LjA0LS4zNy4xLS40LjIzLS44Ny4zNy0xLjM2LjR2LTYuMDJsLTIuMTEtMiAuNi0zQzE1Ljc5IDExLjk4IDE3LjggMTMgMjAgMTN2LTJjLTEuOSAwLTMuNTEtMS4wMi00LjMxLTIuNDJsLTEtMS41OGMtLjQtLjYtMS0xLTEuNy0xLS43NSAwLTEuNDEuMzQtNS45OSAyLjI4VjEzaDJWOS41OGwxLjc5LS43TDkuMiAxN2wtMi44OCAyLjAzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU29jaWFsRGlzdGFuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDVjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnptNC43OCAzLjU4YTYuOTUgNi45NSAwIDAgMC01LjU2IDBBMi4wMSAyLjAxIDAgMCAwIDIgMTAuNDNWMTFoOHYtLjU3YzAtLjgxLS40OC0xLjUzLTEuMjItMS44NXpNMTggN2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTIuNzggMS41OGE2Ljk1IDYuOTUgMCAwIDAtNS41NiAwQTIuMDEgMi4wMSAwIDAgMCAxNCAxMC40M1YxMWg4di0uNTdjMC0uODEtLjQ4LTEuNTMtMS4yMi0xLjg1em0tMi43NyA0LjQzLTEuNDEgMS40MUwxOC4xNyAxNkg1LjgzbDEuNTgtMS41OUw2IDEzbC00IDQgMy45OSAzLjk5IDEuNDEtMS40MUw1LjgzIDE4aDEyLjM0bC0xLjU4IDEuNThMMTggMjAuOTkgMjIgMTdsLTMuOTktMy45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNvdXRoQW1lcmljYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTQgMTJjMC0xLjk1LjctMy43NCAxLjg3LTUuMTNMOSAxMHYxYzAgMS4xLjkgMiAyIDJ2NS41OWMwIC4yNy4xMS41Mi4yOS43MWwuNzEuN2MtNC40MiAwLTgtMy41OC04LTh6bTkgNy45NFYxOGwzLjc1LTUuNjJjLjE2LS4yNS4yNS0uNTQuMjUtLjgzVjEwLjVjMC0uNTUtLjQ1LTEtMS0xaC0xLjVsLTEuNC0xLjc1Yy0uMzgtLjQ3LS45NS0uNzUtMS41Ni0uNzVIOFY1LjA3QTcuOTcxIDcuOTcxIDAgMCAxIDEyIDRjNC40MSAwIDggMy41OSA4IDggMCA0LjA3LTMuMDYgNy40NC03IDcuOTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNCYXNlYmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTUuNjEgMTYuNzhDNC42IDE1LjQ1IDQgMTMuOCA0IDEycy42LTMuNDUgMS42MS00Ljc4YTUuOTc1IDUuOTc1IDAgMCAxIDAgOS41NnpNMTIgMjBjLTEuODkgMC0zLjYzLS42Ni01LTEuNzYgMS44My0xLjQ3IDMtMy43MSAzLTYuMjRTOC44MyA3LjIzIDcgNS43NkM4LjM3IDQuNjYgMTAuMTEgNCAxMiA0czMuNjMuNjYgNSAxLjc2Yy0xLjgzIDEuNDctMyAzLjcxLTMgNi4yNHMxLjE3IDQuNzcgMyA2LjI0QTcuOTYzIDcuOTYzIDAgMCAxIDEyIDIwem02LjM5LTMuMjJhNS45NzUgNS45NzUgMCAwIDEgMC05LjU2QzE5LjQgOC41NSAyMCAxMC4yIDIwIDEycy0uNiAzLjQ1LTEuNjEgNC43OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c0Jhc2tldGJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek01LjIzIDcuNzVDNi4xIDguNjIgNi43IDkuNzQgNi45MSAxMUg0LjA3YTguMTIgOC4xMiAwIDAgMSAxLjE2LTMuMjV6TTQuMDcgMTNoMi44NGE1Ljk3MiA1Ljk3MiAwIDAgMS0xLjY4IDMuMjVBOC4xMiA4LjEyIDAgMCAxIDQuMDcgMTN6TTExIDE5LjkzYy0xLjczLS4yMi0zLjI5LTEtNC40OS0yLjE0QTcuOTUyIDcuOTUyIDAgMCAwIDguOTMgMTNIMTF2Ni45M3pNMTEgMTFIOC45M0E3Ljk5IDcuOTkgMCAwIDAgNi41IDYuMiA4LjAzNSA4LjAzNSAwIDAgMSAxMSA0LjA3VjExem04LjkzIDBoLTIuODRjLjIxLTEuMjYuODEtMi4zOCAxLjY4LTMuMjUuNi45NyAxLjAxIDIuMDcgMS4xNiAzLjI1ek0xMyA0LjA3YzEuNzMuMjIgMy4yOS45OSA0LjUgMi4xM2E3Ljk5IDcuOTkgMCAwIDAtMi40MyA0LjhIMTNWNC4wN3ptMCAxNS44NlYxM2gyLjA3YTguMDA2IDguMDA2IDAgMCAwIDIuNDIgNC43OUE3Ljk4OCA3Ljk4OCAwIDAgMSAxMyAxOS45M3ptNS43Ny0zLjY4QTYuMDA0IDYuMDA0IDAgMCAxIDE3LjA5IDEzaDIuODRhOC4xMiA4LjEyIDAgMCAxLTEuMTYgMy4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c0NyaWNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS4wNCAxMi43OS04LjUtOC41QzYuMzUgNC4xIDYuMDkgNCA1LjgzIDRzLS41MS4xLS43LjI5TDIuMjkgNy4xM2MtLjM5LjM5LS4zOSAxLjAzIDAgMS40Mmw4LjUgOC41Yy4yLjIuNDUuMjkuNzEuMjkuMjYgMCAuNTEtLjEuNzEtLjI5bDIuODMtMi44M2MuMzktLjQuMzktMS4wNCAwLTEuNDN6bS0zLjU0IDIuMTNMNC40MSA3LjgzbDEuNDItMS40MiA3LjA5IDcuMDktMS40MiAxLjQyek0xNC4zNDEgMTcuNzU2bDEuNDE0LTEuNDE0IDQuMjQzIDQuMjQzLTEuNDE0IDEuNDE0ek0xOC41IDJDMTYuNTcgMiAxNSAzLjU3IDE1IDUuNVMxNi41NyA5IDE4LjUgOSAyMiA3LjQzIDIyIDUuNSAyMC40MyAyIDE4LjUgMnptMCA1Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTcuNjcgNCAxOC41IDRzMS41LjY3IDEuNSAxLjVTMTkuMzMgNyAxOC41IDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNFc3BvcnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNTggMTYuMDktMS4wOS03LjY2QTMuOTk2IDMuOTk2IDAgMCAwIDE2LjUzIDVINy40N0M1LjQ4IDUgMy43OSA2LjQ2IDMuNTEgOC40M2wtMS4wOSA3LjY2QzIuMiAxNy42MyAzLjM5IDE5IDQuOTQgMTljLjY4IDAgMS4zMi0uMjcgMS44LS43NUw5IDE2aDZsMi4yNSAyLjI1Yy40OC40OCAxLjEzLjc1IDEuOC43NSAxLjU2IDAgMi43NS0xLjM3IDIuNTMtMi45MXptLTIuMS43MmEuNTQuNTQgMCAwIDEtLjQyLjE5Yy0uMTUgMC0uMjktLjA2LS4zOS0uMTZMMTUuODMgMTRIOC4xN2wtMi44NCAyLjg0Yy0uMS4xLS4yNC4xNi0uMzkuMTZhLjU0LjU0IDAgMCAxLS40Mi0uMTkuNTIuNTIgMCAwIDEtLjEzLS40NGwxLjA5LTcuNjZDNS42MyA3Ljc0IDYuNDggNyA3LjQ3IDdoOS4wNmMuOTkgMCAxLjg0Ljc0IDEuOTggMS43MmwxLjA5IDcuNjZjLjAzLjItLjA1LjM0LS4xMi40M3pcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA4SDh2Mkg2djFoMnYyaDF2LTJoMnYtMUg5elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE3XCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjlcIixcInJcIjpcIjFcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c0Zvb3RiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMzEgMy42OWMtLjMyLS4zMy0xLjk0LS42OS00LjA1LS42OS0zLjAzIDAtNy4wOS43NS05LjggMy40Ni00LjU5IDQuNTktMy41NiAxMy4wNi0yLjc3IDEzLjg1LjMyLjMzIDEuOTQuNjkgNC4wNS42OSAzLjAzIDAgNy4wOS0uNzUgOS44LTMuNDYgNC41OS00LjU5IDMuNTYtMTMuMDYgMi43Ny0xMy44NXpNNy43NCAxOWMtMS4xNCAwLTIuMDItLjEyLTIuNTMtLjIzLS4xOC0uNzktLjMtMi4yMS0uMTctMy44M2w0LjAxIDQuMDFjLS41Mi4wNC0uOTcuMDUtMS4zMS4wNXptOC4zOS0yLjg3Yy0xLjMzIDEuMzMtMy4wNiAyLjA1LTQuNjYgMi40NGwtNi4wNC02LjA0Yy40Mi0xLjY4IDEuMTYtMy4zNyAyLjQ1LTQuNjUgMS4zMi0xLjMyIDMuMDUtMi4wNCA0LjY0LTIuNDNsNi4wNSA2LjA1Yy0uNDIgMS42Ny0xLjE3IDMuMzUtMi40NCA0LjYzem0yLjgzLTcuMDQtNC4wMy00LjAzYy41Mi0uMDUuOTgtLjA2IDEuMzMtLjA2IDEuMTQgMCAyLjAyLjEyIDIuNTMuMjMuMTguNzkuMyAyLjIyLjE3IDMuODZ6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTguNSAxNC4xIDUuNi01LjYgMS40IDEuNC01LjYgNS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzR29sZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE2YzMuODcgMCA3LTMuMTMgNy03cy0zLjEzLTctNy03LTcgMy4xMy03IDcgMy4xMyA3IDcgN3ptMC0xMmMyLjc2IDAgNSAyLjI0IDUgNXMtMi4yNCA1LTUgNS01LTIuMjQtNS01IDIuMjQtNSA1LTV6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTBcIixcImN5XCI6XCI4XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTRcIixcImN5XCI6XCI4XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIxXCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTloMmMxLjEgMCAyIC45IDIgMnYxaDJ2LTFjMC0xLjEuOS0yIDItMmgydi0ySDd2MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c0d5bW5hc3RpY3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZjMC0xLjEuOS0yIDItMnMyIC45IDIgMi0uOSAyLTIgMi0yLS45LTItMnpNMSA5aDZsNy01IDEuMzEgMS41Mi00LjE3IDIuOThIMTRMMjEuOCA0IDIzIDUuNCAxNC41IDEyIDE0IDIyaC0ybC0uNS0xMEw4IDExSDFWOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c0hhbmRiYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuMjcgNmMtLjU1Ljk1LS4yMiAyLjE4LjczIDIuNzMuOTUuNTUgMi4xOC4yMiAyLjczLS43My41NS0uOTUuMjItMi4xOC0uNzMtMi43My0uOTUtLjU1LTIuMTgtLjIyLTIuNzMuNzN6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE1Ljg0IDEwLjQxLTIuNi0xLjVjLTIuMzgtMS4zOC0zLjItNC40NC0xLjgyLTYuODJsLTEuNzMtMUM4LjEgMy44MyA4LjYgNy4yMSAxMC42NiA5LjRsLTUuMTUgOC45MiAxLjczIDEgMS41LTIuNiAxLjczIDEtMyA1LjIgMS43MyAxIDYuMjktMTAuODlhNS4wMDIgNS4wMDIgMCAwIDEgLjMxIDUuNDZsMS43MyAxYzEuNi0yLjc1IDEuMjgtNi41OC0xLjY5LTkuMDh6TTEyLjc1IDMuOGMuNzIuNDEgMS42My4xNyAyLjA1LS41NS40MS0uNzIuMTctMS42My0uNTUtMi4wNWExLjUwMSAxLjUwMSAwIDAgMC0xLjUgMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzSG9ja2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxN3YzaDJ2LTRIM2MtLjU1IDAtMSAuNDUtMSAxek05IDE2SDV2NGw0LjY5LS4wMWMuMzggMCAuNzItLjIxLjg5LS41NWwuODctMS45LTEuNTktMy40OEw5IDE2ek0yMS43MSAxNi4yOUEuOTk3Ljk5NyAwIDAgMCAyMSAxNmgtMXY0aDJ2LTNjMC0uMjgtLjExLS41My0uMjktLjcxek0xMy42IDEyLjg0IDE3LjY1IDRIMTQuM2wtMS43NiAzLjk3LS40OSAxLjEtLjA1LjE0TDkuNyA0SDYuMzVsNC4wNSA4Ljg0IDEuNTIgMy4zMi4wOC4xOCAxLjQyIDMuMWMuMTcuMzQuNTEuNTUuODkuNTVMMTkgMjB2LTRoLTRsLTEuNC0zLjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzS2FiYWRkaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTYuNVwiLFwiY3lcIjpcIjIuMzhcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQgMTEuODh2LTQuN2wtNS4wNS0yLjE0Yy0uOTctLjQxLTIuMDktLjA2LTIuNjUuODRsLTEgMS42Yy0uNjcgMS4xOC0xLjkxIDIuMDYtMy40MSAyLjMybC4wNi4wNmMuNjkuNjkgMS41MiAxLjA3IDIuNDYgMS4xNy44LS40MiAxLjUyLS45OCAyLjA5LTEuNjRsLjYgMy0xLjE2IDEuMS0uOTQuODl2Ny41aDJ2LTZsMi4xLTIgMS44IDhIMjNsLTIuMTgtMTEtLjYyLTMuMSAxLjguN3YzLjRoMnpNMTAuMjkgOC4wOWMuMjIuMTUuNDcuMjQuNzIuMjkuMTMuMDIuMjUuMDQuMzguMDRzLjI2LS4wMS4zOC0uMDRjLjEzLS4wMi4yNS0uMDYuMzctLjExLjI0LS4xLjQ3LS4yNC42Ni0uNDQuNDktLjQ5LjY3LTEuMTcuNTUtMS44LS4wNy0uMzctLjI1LS43NC0uNTUtMS4wMy0uMTktLjE5LS40Mi0uMzQtLjY2LS40NC0uMTItLjA1LS4yNC0uMDktLjM3LS4xMXMtLjI1LS4wNC0uMzgtLjA0Yy0uMTIgMC0uMjMuMDEtLjM1LjAzLS4xNC4wMi0uMjguMDYtLjQxLjExLS4yMy4xMS0uNDYuMjYtLjY1LjQ1LS4zLjI5LS40OC42Ni0uNTUgMS4wMy0uMTIuNjMuMDYgMS4zMS41NSAxLjguMDkuMS4yLjE4LjMxLjI2elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMS4yNCAxMC41Ni0yLTJjLS4xLS4xLS4yLS4xOC0uMzEtLjI2YTEuOTMgMS45MyAwIDAgMC0uNzItLjI4Yy0uMTMtLjAzLS4yNS0uMDQtLjM4LS4wNC0uNTEgMC0xLjAyLjItMS40MS41OWwtMy4zNCAzLjM0Yy0uNDEuNDEtLjYyLjk4LS41OCAxLjU0IDAgLjE4LjA0LjM3LjExLjU1bDEuMDcgMi45NS0zLjYzIDMuNjNMMS40NiAyMmw0LjI0LTQuMjR2LTIuMjJMNyAxNi43NXY1LjEzaDJ2LTZsLTIuMTItMi4xMiAyLjM2LTIuMzYuNzEuNzFjMS4yOSAxLjI2IDIuOTcgMi4wNCA1LjAzIDIuMDRsLS4xNC0yLjA3Yy0xLjUtLjAyLTIuNy0uNjItMy42LTEuNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNNYXJ0aWFsQXJ0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjggMi04LjIgNi43LTEuMjEtMS4wNCAzLjYtMi4wOEw5LjQxIDEgOCAyLjQxbDIuNzQgMi43NEw1IDguNDZsLTEuMTkgNC4yOUw2LjI3IDE3IDggMTZsLTIuMDMtMy41Mi4zNS0xLjNMOS41IDEzbC41IDloMmwuNS0xMEwyMSAzLjR6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNVwiLFwiY3lcIjpcIjVcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c01tYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMjBjMCAuNTUuNDUgMSAxIDFoOGMuNTUgMCAxLS40NSAxLTF2LTNIN3Yzek0xOCA3Yy0uNTUgMC0xIC40NS0xIDFWNWMwLTEuMS0uOS0yLTItMkg3Yy0xLjEgMC0yIC45LTIgMnY1LjhjMCAuMTMuMDEuMjYuMDQuMzlsLjggNGMuMDkuNDcuNS44Ljk4LjhIMTdjLjU1IDAgMS4wOS0uNDQgMS4yLS45OGwuNzctMy44M2MuMDItLjEyLjAzLS4yNS4wMy0uMzhWOGMwLS41NS0uNDUtMS0xLTF6bS0xIDMuNmMwIC4xMy0uNjQgMy40LS42NCAzLjRINy42NFM3IDEwLjc0IDcgMTAuNlY1aDh2NWgydi42elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDdoNnYzSDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNNb3RvcnNwb3J0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjk2IDExLjIyQzIxLjU3IDcuMDEgMTcuNzYgNCAxMy41NiA0Yy0uMTkgMC0uMzguMDEtLjU3LjAyQzIgNC43NCAyIDE3LjIgMiAxNy4ydi44YzAgMS4xLjkgMiAyIDJoMTBjNC42NyAwIDguNDEtNC4wMSA3Ljk2LTguNzh6bS0xNi43LjM0Yy41Ny0xLjI5IDEuMjgtMi4zNSAyLjE0LTMuMTlsMy42MiAxLjUzYy42LjI1Ljk4LjgzLjk4IDEuNDggMCAuODktLjcyIDEuNjEtMS42MSAxLjYxSDQuNzJjLjE1LS40Ni4zMi0uOTQuNTQtMS40M3ptMTMuMTggNC40OEE2LjAyMiA2LjAyMiAwIDAgMSAxNCAxOEg0di0uOGMwLS4wMi4wMS0uOTIuMjQtMi4yaDYuMTVjMS45OSAwIDMuNjEtMS42MiAzLjYxLTMuNjEgMC0xLjQ1LS44Ny0yLjc2LTIuMi0zLjMyTDkuMyA3LjAxYzEuMS0uNTcgMi4zNy0uOSAzLjgyLS45OS4xNS0uMDIuMy0uMDIuNDQtLjAyIDMuMzEgMCA2LjEzIDIuMzcgNi40MSA1LjQxLjE2IDEuNzItLjM4IDMuMzYtMS41MyA0LjYzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3BvcnRzUnVnYnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC40OSAzLjUxYy0uNTYtLjU2LTIuMTUtLjk3LTQuMTYtLjk3LTMuMDggMC03LjE1Ljk2LTkuOTggMy43OS00LjY5IDQuNy00LjI1IDEyLjc0LTIuODQgMTQuMTYuNTYuNTYgMi4xNS45NyA0LjE2Ljk3IDMuMDggMCA3LjE1LS45NiA5Ljk4LTMuNzkgNC42OS00LjcgNC4yNS0xMi43NCAyLjg0LTE0LjE2ek01LjcxIDE4LjI5Yy42My0xLjg5IDIuMTYtNC45OSA0Ljg3LTcuNyAyLjY4LTIuNjggNS43OC00LjIzIDcuNy00Ljg4LS42MyAxLjg5LTIuMTYgNC45OS00Ljg4IDcuNy0yLjY2IDIuNjgtNS43NiA0LjIzLTcuNjkgNC44OHpNNy43NiA3Ljc2YzIuNjQtMi42NCA2LjM0LTMuMTIgOC4wMy0zLjE5LTIuMDUuOTQtNC40NiAyLjQ2LTYuNjEgNC42MWEyMy4yMDYgMjMuMjA2IDAgMCAwLTQuNjEgNi42M2MuMDktMi40OC44Ny01Ljc0IDMuMTktOC4wNXptOC40OCA4LjQ4Yy0yLjY0IDIuNjQtNi4zNCAzLjEyLTguMDMgMy4xOSAyLjA1LS45NCA0LjQ2LTIuNDYgNi42MS00LjYxIDIuMTYtMi4xNiAzLjY3LTQuNTggNC42Mi02LjYzLS4xIDIuNDgtLjg4IDUuNzQtMy4yIDguMDV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNTb2NjZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDMuMyAxLjM1LS45NWE4LjAxIDguMDEgMCAwIDEgNC4zOCAzLjM0bC0uMzkgMS4zNC0xLjM1LjQ2TDEzIDYuN1Y1LjN6bS0zLjM1LS45NUwxMSA1LjN2MS40TDcuMDEgOS40OWwtMS4zNS0uNDYtLjM5LTEuMzRhOC4xMDMgOC4xMDMgMCAwIDEgNC4zOC0zLjM0ek03LjA4IDE3LjExbC0xLjE0LjFBNy45MzggNy45MzggMCAwIDEgNCAxMmMwLS4xMi4wMS0uMjMuMDItLjM1bDEtLjczIDEuMzguNDggMS40NiA0LjM0LS43OCAxLjM3em03LjQyIDIuNDhjLS43OS4yNi0xLjYzLjQxLTIuNS40MXMtMS43MS0uMTUtMi41LS40MWwtLjY5LTEuNDkuNjQtMS4xaDUuMTFsLjY0IDEuMTEtLjcgMS40OHpNMTQuMjcgMTVIOS43M2wtMS4zNS00LjAyTDEyIDguNDRsMy42MyAyLjU0TDE0LjI3IDE1em0zLjc5IDIuMjEtMS4xNC0uMS0uNzktMS4zNyAxLjQ2LTQuMzQgMS4zOS0uNDcgMSAuNzNjLjAxLjExLjAyLjIyLjAyLjM0IDAgMS45OS0uNzMgMy44MS0xLjk0IDUuMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHNUZW5uaXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS41MiAyLjQ5QzE3LjE4LjE1IDEyLjkuNjIgOS45NyAzLjU1Yy0xLjYgMS42LTIuNTIgMy44Ny0yLjU0IDUuNDYtLjAyIDEuNTguMjYgMy44OS0xLjM1IDUuNWwtNC4yNCA0LjI0IDEuNDIgMS40MiA0LjI0LTQuMjRjMS42MS0xLjYxIDMuOTItMS4zMyA1LjUtMS4zNXMzLjg2LS45NCA1LjQ2LTIuNTRjMi45Mi0yLjkzIDMuNC03LjIxIDEuMDYtOS41NXptLTkuMiA5LjE5Yy0xLjUzLTEuNTMtMS4wNS00LjYxIDEuMDYtNi43MnM1LjE4LTIuNTkgNi43Mi0xLjA2YzEuNTMgMS41MyAxLjA1IDQuNjEtMS4wNiA2Ljcycy01LjE4IDIuNTktNi43MiAxLjA2ek0xOCAxN2MuNTMgMCAxLjA0LjIxIDEuNDEuNTkuNzguNzguNzggMi4wNSAwIDIuODMtLjM3LjM3LS44OC41OC0xLjQxLjU4cy0xLjA0LS4yMS0xLjQxLS41OWMtLjc4LS43OC0uNzgtMi4wNSAwLTIuODMuMzctLjM3Ljg4LS41OCAxLjQxLS41OG0wLTJhMy45OTggMy45OTggMCAwIDAtMi44MyA2LjgzYy43OC43OCAxLjgxIDEuMTcgMi44MyAxLjE3YTMuOTk4IDMuOTk4IDAgMCAwIDIuODMtNi44M0EzLjk5OCAzLjk5OCAwIDAgMCAxOCAxNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVNwb3J0c1ZvbGxleWJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDIuMDdjMy4wNy4zOCA1LjU3IDIuNTIgNi41NCA1LjM2TDEzIDUuNjVWNC4wN3pNOCA1LjA4YzEuMTgtLjY5IDMuMzMtMS4wNiAzLTEuMDJ2Ny4zNWwtMyAxLjczVjUuMDh6TTQuNjMgMTUuMWMtLjQtLjk2LS42My0yLS42My0zLjEgMC0yLjAyLjc2LTMuODYgMi01LjI3djcuNThsLTEuMzcuNzl6bTEuMDEgMS43M0wxMiAxMy4xNWwzIDEuNzMtNi45OCA0LjAzYTcuNzk0IDcuNzk0IDAgMCAxLTIuMzgtMi4wOHpNMTIgMjBjLS41NCAwLTEuMDctLjA2LTEuNTgtLjE2bDYuNTgtMy44IDEuMzYuNzhDMTYuOSAxOC43NSAxNC42IDIwIDEyIDIwem0xLTguNThWNy45Nmw3IDQuMDVjMCAxLjEtLjIzIDIuMTQtLjYzIDMuMDlMMTMgMTEuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTcG9ydHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4yMyA2Yy0xLjY2IDAtMy4yMi42Ni00LjM2IDEuNzNDNi41NCA2LjczIDUuNjEgNiA0LjUgNmEyLjUgMi41IDAgMCAwIDAgNWMuMjEgMCAuNDEtLjAzLjYxLS4wOC0uMDUuMjUtLjA5LjUxLS4xLjc4YTYuMDA2IDYuMDA2IDAgMCAwIDYuNjggNi4yN2MyLjU1LS4yOCA0LjY4LTIuMjYgNS4xOS00Ljc3LjE1LS43MS4xNS0xLjQuMDYtMi4wNi0uMDktLjYuMzgtMS4xMy45OS0xLjEzSDIyVjZIMTEuMjN6TTQuNSA5Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjUuNS4yMi41LjUtLjIyLjUtLjUuNXptNi41IDZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN1cmZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAyM2MtMS4wMyAwLTIuMDYtLjI1LTMtLjc1LTEuODkgMS00LjExIDEtNiAwLTEuODkgMS00LjExIDEtNiAwLS45NS41LTEuOTcuNzUtMyAuNzVIMnYtMmgxYzEuMDQgMCAyLjA4LS4zNSAzLTEgMS44MyAxLjMgNC4xNyAxLjMgNiAwIDEuODMgMS4zIDQuMTcgMS4zIDYgMCAuOTEuNjUgMS45NiAxIDMgMWgxdjJoLTF6TTE3IDEuNWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS0yLjU3IDYuOThMMTIuMTggMTAgMTYgMTN2My44NGMuNTMuMzggMS4wMy43OCAxLjQ5IDEuMTctLjY4LjU4LTEuNTUuOTktMi40OS45OS0xLjIgMC0yLjI3LS42Ni0zLTEuNS0uNzMuODQtMS44IDEuNS0zIDEuNS0uMzMgMC0uNjUtLjA1LS45Ni0uMTRDNS4xOSAxNi45IDMgMTQuNzIgMyAxMy4yOCAzIDEyLjI1IDQuMDEgMTIgNC44NSAxMmMuOTggMCAyLjI4LjMxIDMuNy44M2wtLjUzLTMuMWMtLjExLS42Ny4xOC0xLjM4Ljc4LTEuNzlsMi4xNS0xLjQ1LTItLjM3LTIuODIgMS45M0w1IDYuNCA4LjUgNGw1LjU1IDEuMDNjLjQ1LjA5LjkzLjM3IDEuMjIuODlsLjg4IDEuNTVBNS4wMDcgNS4wMDcgMCAwIDAgMjAuNSAxMHYyYTcuMDEgNy4wMSAwIDAgMS02LjA3LTMuNTJ6TTEwLjMgMTEuMWwuNDQgMi42NWMuOTIuNDIgMi40OCAxLjI3IDMuMjYgMS43NVYxNGwtMy43LTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN3aXRjaEFjY291bnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTAgNWMxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzIDEuMzQgMyAzIDN6bTAtNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem02LTVIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tOS4zMSAxNGE1Ljk3NyA1Ljk3NyAwIDAgMSA2LjYyIDBoLTYuNjJ6bTkuMzEtLjI3QzE4LjUzIDE0LjA2IDE2LjQgMTMgMTQgMTNzLTQuNTMgMS4wNi02IDIuNzNWNGgxMnYxMS43M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRodW1iRG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIixcIm9wYWNpdHlcIjpcIi44N1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAzSDZjLS44MyAwLTEuNTQuNS0xLjg0IDEuMjJsLTMuMDIgNy4wNWMtLjA5LjIzLS4xNC40Ny0uMTQuNzN2MmMwIDEuMS45IDIgMiAyaDYuMzFsLS45NSA0LjU3LS4wMy4zMmMwIC40MS4xNy43OS40NCAxLjA2TDkuODMgMjNsNi41OC02LjU5Yy4zNy0uMzYuNTktLjg2LjU5LTEuNDFWNWMwLTEuMS0uOS0yLTItMnptMCAxMi00LjM0IDQuMzRMMTEuNzcgMTRIM3YtMmwzLTdoOXYxMHptNC0xMmg0djEyaC00elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVGh1bWJVcEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIixcIm9wYWNpdHlcIjpcIi44N1wifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA4aC02LjMxbC45NS00LjU3LjAzLS4zMmMwLS40MS0uMTctLjc5LS40NC0xLjA2TDE0LjE3IDEgNy41OSA3LjU5QzcuMjIgNy45NSA3IDguNDUgNyA5djEwYzAgMS4xLjkgMiAyIDJoOWMuODMgMCAxLjU0LS41IDEuODQtMS4yMmwzLjAyLTcuMDVjLjA5LS4yMy4xNC0uNDcuMTQtLjczdi0yYzAtMS4xLS45LTItMi0yem0wIDQtMyA3SDlWOWw0LjM0LTQuMzRMMTIuMjMgMTBIMjF2MnpNMSA5aDR2MTJIMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRodW5kZXJzdG9ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjkyIDcuMDJDMTcuNDUgNC4xOCAxNC45NyAyIDEyIDIgOS44MiAyIDcuODMgMy4xOCA2Ljc4IDUuMDYgNC4wOSA1LjQxIDIgNy43NCAyIDEwLjUgMiAxMy41MyA0LjQ3IDE2IDcuNSAxNmgxMGMyLjQ4IDAgNC41LTIuMDIgNC41LTQuNWE0LjUgNC41IDAgMCAwLTQuMDgtNC40OHpNMTcuNSAxNGgtMTBDNS41NyAxNCA0IDEyLjQzIDQgMTAuNWEzLjUxIDMuNTEgMCAwIDEgMy4wNC0zLjQ2bC45OS0uMTMuNDktLjg3QTMuOTk4IDMuOTk4IDAgMCAxIDEyIDRjMS45NCAwIDMuNjMgMS40NCAzLjk1IDMuMzVsLjI1IDEuNTIgMS41NC4xNGMxLjI3LjEyIDIuMjYgMS4yMSAyLjI2IDIuNDlhMi41IDIuNSAwIDAgMS0yLjUgMi41ek0xNC44IDE3bC0yLjkgMy4zMiAyIDFMMTEuNTUgMjRoMi42NWwyLjktMy4zMi0yLTFMMTcuNDUgMTd6TTguOCAxN2wtMi45IDMuMzIgMiAxTDUuNTUgMjRIOC4ybDIuOS0zLjMyLTItMUwxMS40NSAxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRvcm5hZG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAzSDFsMTEgMTlMMjMgM3ptLTMuNDcgMi0xLjc0IDNINi4yMUw0LjQ3IDVoMTUuMDZ6bS05LjI3IDEwaDMuNDhMMTIgMTguMDEgMTAuMjYgMTV6bTQuNjQtMkg5LjFsLTEuNzQtM2g5LjI3bC0xLjczIDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmFuc2dlbmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDhjMS45MyAwIDMuNSAxLjU3IDMuNSAzLjVTMTMuOTMgMTUgMTIgMTVzLTMuNS0xLjU3LTMuNS0zLjVTMTAuMDcgOCAxMiA4em00LjUzLjM4IDMuOTctMy45NlY3aDJWMWgtNnYyaDIuNThsLTMuOTcgMy45N0MxNC4yMyA2LjM2IDEzLjE2IDYgMTIgNnMtMi4yMy4zNi0zLjExLjk3bC0uNjUtLjY1IDEuNDEtMS40MS0xLjQxLTEuNDJMNi44MiA0LjkgNC45MiAzSDcuNVYxaC02djZoMlY0LjQybDEuOTEgMS45LTEuNDIgMS40Mkw1LjQgOS4xNWwxLjQxLTEuNDEuNjUuNjVjLS42Ljg4LS45NiAxLjk1LS45NiAzLjExYTUuNSA1LjUgMCAwIDAgNC41IDUuNDFWMTlIOXYyaDJ2Mmgydi0yaDJ2LTJoLTJ2LTIuMDlhNS41IDUuNSAwIDAgMCAzLjUzLTguNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUcmF2ZWxFeHBsb3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMyAxNi45Yy40LS43LjctMS41LjctMi40IDAtMi41LTItNC41LTQuNS00LjVTMTEgMTIgMTEgMTQuNXMyIDQuNSA0LjUgNC41Yy45IDAgMS43LS4zIDIuNC0uN2wzLjIgMy4yIDEuNC0xLjQtMy4yLTMuMnptLTMuOC4xYy0xLjQgMC0yLjUtMS4xLTIuNS0yLjVzMS4xLTIuNSAyLjUtMi41IDIuNSAxLjEgMi41IDIuNS0xLjEgMi41LTIuNSAyLjV6TTEyIDIwdjJDNi40OCAyMiAyIDE3LjUyIDIgMTJTNi40OCAyIDEyIDJjNC44NCAwIDguODcgMy40NCA5LjggOGgtMi4wN0E4IDggMCAwIDAgMTUgNC41OVY1YzAgMS4xLS45IDItMiAyaC0ydjJjMCAuNTUtLjQ1IDEtMSAxSDh2MmgydjNIOWwtNC43OS00Ljc5QzQuMDggMTAuNzkgNCAxMS4zOCA0IDEyYzAgNC40MSAzLjU5IDggOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lVHN1bmFtaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjY3IDE3LjYzYy0zLjggMi44LTYuMTIuNC02LjY3IDAtLjY2LjQ5LTIuOTIgMi43Ni02LjY3IDBDMy40MyAxOS4wMyAyLjY1IDE5IDIgMTl2MmMxLjE2IDAgMi4zLS4zMiAzLjMzLS45M2E2LjUzNSA2LjUzNSAwIDAgMCA2LjY3IDAgNi41MzUgNi41MzUgMCAwIDAgNi42NyAwYzEuMDMuNjEgMi4xNy45MyAzLjMzLjkzdi0yYy0uNjYgMC0xLjUtLjAyLTMuMzMtMS4zN3pNMTkuMzMgMTJIMjJ2LTJoLTIuNjdDMTcuNSAxMCAxNiA4LjUgMTYgNi42N2MwLTEuMDIuMzgtMS43NCAxLjA5LTMuMzQtMS4zNy0uMjEtMi0uMzMtMy4wOS0uMzNDNy4zNiAzIDIuMTUgOC4wMyAyLjAxIDE0LjVsLS4wMSAyYzEuMTYgMCAyLjMtLjMyIDMuMzMtLjkzYTYuNTM1IDYuNTM1IDAgMCAwIDYuNjcgMCA2LjUzNSA2LjUzNSAwIDAgMCA2LjY3IDBjMS4wMy42MSAyLjE3LjkzIDMuMzMuOTN2LTJjLS42NiAwLTEuNS0uMDItMy4zMy0xLjM3LTMuOCAyLjgtNi4xMi40LTYuNjcgMC0uOS42Ny0uNTQuNDEtLjkxLjYzLS43LS45NC0xLjA5LTIuMDYtMS4wOS0zLjI2IDAtMi41OCAxLjc3LTQuNzQgNC4yMS01LjMzLS4xMy41MS0uMjEgMS4wMi0uMjEgMS41QzE0IDkuNjEgMTYuMzkgMTIgMTkuMzMgMTJ6bS0xNCAxLjEzYy0uNjIuNDYtLjgyLjYzLTEuMy44Ny4yNy0zLjUzIDIuMzgtNi40OCA1LjQzLTcuOTZBNy40OSA3LjQ5IDAgMCAwIDggMTAuNWMwIDEuNDIuNCAyLjc3IDEuMTMgMy45NS0uNzIuMDctMS43OS4xNS0zLjgtMS4zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVZhY2NpbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNS41SDhWNGguNWMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtM2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMUg2djEuNUgzYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxVjE1YzAgMS4xLjkgMiAyIDJoMXY0bDIgMS41VjE3aDFjMS4xIDAgMi0uOSAyLTJWNy41Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xek05IDlINy4yNWMtLjQxIDAtLjc1LjM0LS43NS43NXMuMzQuNzUuNzUuNzVIOVYxMkg3LjI1Yy0uNDEgMC0uNzUuMzQtLjc1Ljc1cy4zNC43NS43NS43NUg5VjE1SDVWNy41aDRWOXptMTAuNSAxLjVWMTBjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFoLTVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDF2LjVjMCAuNS0xLjUgMS4xNi0xLjUgM1YyMGMwIDEuMS45IDIgMiAyaDRjMS4xIDAgMi0uOSAyLTJ2LTYuNWMwLTEuODQtMS41LTIuNS0xLjUtM3ptLTMgMFYxMGgxdi41YzAgMS42IDEuNSAyIDEuNSAzdi41aC00di0uNWMwLTEgMS41LTEuNCAxLjUtM3ptMi41IDVWMTdoLTR2LTEuNWg0ek0xNSAyMHYtMS41aDRWMjBoLTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVWb2xjYW5vIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgtN2wtMiA1SDZsLTQgOWgyMEwxOCA4ek03LjMgMTVoMy4wNWwuNS0xLjI2IDEuNS0zLjc0aDQuMTRsMi44NiAxMEg1LjA4bDIuMjItNXpNMTMgMWgydjRoLTJ6TTE2LjEyMSA1LjQ2OCAxOC45NSAyLjY0bDEuNDE0IDEuNDE0LTIuODI5IDIuODI4ek03LjY0IDQuMDVsMS40MTQtMS40MTQgMi44MjggMi44MjktMS40MTQgMS40MTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXYWxsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA0SDZDMy43OSA0IDIgNS43OSAyIDh2OGMwIDIuMjEgMS43OSA0IDQgNGgxMmMyLjIxIDAgNC0xLjc5IDQtNFY4YzAtMi4yMS0xLjc5LTQtNC00em0tMS44NiA5Ljc3Yy0uMjQuMi0uNTcuMjgtLjg4LjJMNC4xNSAxMS4yNUM0LjQ1IDEwLjUyIDUuMTYgMTAgNiAxMGgxMmMuNjcgMCAxLjI2LjM0IDEuNjMuODRsLTMuNDkgMi45M3pNNiA2aDEyYzEuMSAwIDIgLjkgMiAydi41NWMtLjU5LS4zNC0xLjI3LS41NS0yLS41NUg2Yy0uNzMgMC0xLjQxLjIxLTIgLjU1VjhjMC0xLjEuOS0yIDItMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdhdGVyRHJvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJjLTUuMzMgNC41NS04IDguNDgtOCAxMS44IDAgNC45OCAzLjggOC4yIDggOC4yczgtMy4yMiA4LTguMmMwLTMuMzItMi42Ny03LjI1LTgtMTEuOHptMCAxOGMtMy4zNSAwLTYtMi41Ny02LTYuMiAwLTIuMzQgMS45NS01LjQ0IDYtOS4xNCA0LjA1IDMuNyA2IDYuNzkgNiA5LjE0IDAgMy42My0yLjY1IDYuMi02IDYuMnptLTQuMTctNmMuMzcgMCAuNjcuMjYuNzQuNjIuNDEgMi4yMiAyLjI4IDIuOTggMy42NCAyLjg3LjQzLS4wMi43OS4zMi43OS43NSAwIC40LS4zMi43My0uNzIuNzUtMi4xMy4xMy00LjYyLTEuMDktNS4xOS00LjEyYS43NS43NSAwIDAgMSAuNzQtLjg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2F2aW5nSGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMDMgNC45NSAzLjQ5IDguNDljLTMuMzIgMy4zMi0zLjMyIDguNyAwIDEyLjAyczguNyAzLjMyIDEyLjAyIDBsNi4wMS02LjAxYTIuNTE3IDIuNTE3IDAgMCAwLS4zOS0zLjg2bC4zOS0uMzljLjk3LS45Ny45Ny0yLjU2IDAtMy41NC0uMTYtLjE2LS4zNS0uMy0uNTQtLjQxYTIuNDk3IDIuNDk3IDAgMCAwLTMuNzItMy4wNSAyLjUxNyAyLjUxNyAwIDAgMC0zLjg4LS40MmwtMi41MSAyLjUxYTIuNDkzIDIuNDkzIDAgMCAwLTMuODQtLjM5em0xLjQxIDEuNDJjLjItLjIuNTEtLjIuNzEgMCAuMi4yLjIuNTEgMCAuNzFsLTMuMTggMy4xOGEzIDMgMCAwIDEgMCA0LjI0bDEuNDEgMS40MWE1LjAwNCA1LjAwNCAwIDAgMCAxLjEyLTUuMzZsNi4zLTYuM2MuMi0uMi41MS0uMi43MSAwcy4yLjUxIDAgLjcxbC00LjYgNC42IDEuNDEgMS40MSA2LjAxLTYuMDFjLjItLjIuNTEtLjIuNzEgMCAuMi4yLjIuNTEgMCAuNzFsLTYuMDEgNi4wMSAxLjQxIDEuNDEgNC45NS00Ljk1Yy4yLS4yLjUxLS4yLjcxIDAgLjIuMi4yLjUxIDAgLjcxbC01LjY2IDUuNjYgMS40MSAxLjQxIDMuNTQtMy41NGMuMi0uMi41MS0uMi43MSAwIC4yLjIuMi41MSAwIC43MWwtNiA2LjAxYy0yLjU0IDIuNTQtNi42NSAyLjU0LTkuMTkgMHMtMi41NC02LjY1IDAtOS4xOWwzLjUzLTMuNTR6TTIzIDE3YzAgMy4zMS0yLjY5IDYtNiA2di0xLjVjMi40OCAwIDQuNS0yLjAyIDQuNS00LjVIMjN6TTEgN2MwLTMuMzEgMi42OS02IDYtNnYxLjVDNC41MiAyLjUgMi41IDQuNTIgMi41IDdIMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdoYXRzYXBwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMDUgNC45MUE5LjgxNiA5LjgxNiAwIDAgMCAxMi4wNCAyYy01LjQ2IDAtOS45MSA0LjQ1LTkuOTEgOS45MSAwIDEuNzUuNDYgMy40NSAxLjMyIDQuOTVMMi4wNSAyMmw1LjI1LTEuMzhjMS40NS43OSAzLjA4IDEuMjEgNC43NCAxLjIxIDUuNDYgMCA5LjkxLTQuNDUgOS45MS05LjkxIDAtMi42NS0xLjAzLTUuMTQtMi45LTcuMDF6bS03LjAxIDE1LjI0Yy0xLjQ4IDAtMi45My0uNC00LjItMS4xNWwtLjMtLjE4LTMuMTIuODIuODMtMy4wNC0uMi0uMzFhOC4yNjQgOC4yNjQgMCAwIDEtMS4yNi00LjM4YzAtNC41NCAzLjctOC4yNCA4LjI0LTguMjQgMi4yIDAgNC4yNy44NiA1LjgyIDIuNDJhOC4xODMgOC4xODMgMCAwIDEgMi40MSA1LjgzYy4wMiA0LjU0LTMuNjggOC4yMy04LjIyIDguMjN6bTQuNTItNi4xNmMtLjI1LS4xMi0xLjQ3LS43Mi0xLjY5LS44MS0uMjMtLjA4LS4zOS0uMTItLjU2LjEyLS4xNy4yNS0uNjQuODEtLjc4Ljk3LS4xNC4xNy0uMjkuMTktLjU0LjA2LS4yNS0uMTItMS4wNS0uMzktMS45OS0xLjIzLS43NC0uNjYtMS4yMy0xLjQ3LTEuMzgtMS43Mi0uMTQtLjI1LS4wMi0uMzguMTEtLjUxLjExLS4xMS4yNS0uMjkuMzctLjQzcy4xNy0uMjUuMjUtLjQxYy4wOC0uMTcuMDQtLjMxLS4wMi0uNDNzLS41Ni0xLjM0LS43Ni0xLjg0Yy0uMi0uNDgtLjQxLS40Mi0uNTYtLjQzaC0uNDhjLS4xNyAwLS40My4wNi0uNjYuMzEtLjIyLjI1LS44Ni44NS0uODYgMi4wNyAwIDEuMjIuODkgMi40IDEuMDEgMi41Ni4xMi4xNyAxLjc1IDIuNjcgNC4yMyAzLjc0LjU5LjI2IDEuMDUuNDEgMS40MS41Mi41OS4xOSAxLjEzLjE2IDEuNTYuMS40OC0uMDcgMS40Ny0uNiAxLjY3LTEuMTguMjEtLjU4LjIxLTEuMDcuMTQtMS4xOHMtLjIyLS4xNi0uNDctLjI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lV2hhdHNob3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjU3IDEzLjE2Yy0xLjM2LjI4LTIuMTcgMS4xNi0yLjE3IDIuNDEgMCAxLjM0IDEuMTEgMi40MiAyLjQ5IDIuNDIgMi4wNSAwIDMuNzEtMS42NiAzLjcxLTMuNzEgMC0xLjA3LS4xNS0yLjEyLS40Ni0zLjEyLS43OSAxLjA3LTIuMiAxLjcyLTMuNTcgMnpNMTMuNS42N3MuNzQgMi42NS43NCA0LjhjMCAyLjA2LTEuMzUgMy43My0zLjQxIDMuNzMtMi4wNyAwLTMuNjMtMS42Ny0zLjYzLTMuNzNsLjAzLS4zNkM1LjIxIDcuNTEgNCAxMC42MiA0IDE0YzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LThDMjAgOC42MSAxNy40MSAzLjggMTMuNS42N3pNMTIgMjBjLTMuMzEgMC02LTIuNjktNi02IDAtMS41My4zLTMuMDQuODYtNC40M2E1LjU4MiA1LjU4MiAwIDAgMCAzLjk3IDEuNjNjMi42NiAwIDQuNzUtMS44MyA1LjI4LTQuNDNBMTQuNzcgMTQuNzcgMCAwIDEgMTggMTRjMCAzLjMxLTIuNjkgNi02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXb21hbjIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy45NCA4LjMxQzEzLjYyIDcuNTIgMTIuODUgNyAxMiA3cy0xLjYyLjUyLTEuOTQgMS4zMUw3IDE2aDMuNXY2aDN2LTZIMTdsLTMuMDYtNy42OXpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVdvbWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuOTQgOC4zMUMxMy42MiA3LjUyIDEyLjg1IDcgMTIgN3MtMS42Mi41Mi0xLjk0IDEuMzFMNyAxNmgzdjZoNHYtNmgzbC0zLjA2LTcuNjl6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVXb3Jrc3BhY2VQcmVtaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS42OCAxMy42OSAxMiAxMS45M2wyLjMxIDEuNzYtLjg4LTIuODVMMTUuNzUgOWgtMi44NEwxMiA2LjE5IDExLjA5IDlIOC4yNWwyLjMxIDEuODQtLjg4IDIuODV6TTIwIDEwYzAtNC40Mi0zLjU4LTgtOC04cy04IDMuNTgtOCA4YzAgMi4wMy43NiAzLjg3IDIgNS4yOFYyM2w2LTIgNiAydi03LjcyQTcuOTYgNy45NiAwIDAgMCAyMCAxMHptLTgtNmMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNi02LTIuNjktNi02IDIuNjktNiA2LTZ6bTAgMTUtNCAxLjAydi0zLjFjMS4xOC42OCAyLjU0IDEuMDggNCAxLjA4czIuODItLjQgNC0xLjA4djMuMUwxMiAxOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUNoZWNrQm94T3V0bGluZUJsYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1djE0SDVWNWgxNG0wLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lQ2hlY2tCb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpNMTcuOTkgOWwtMS40MS0xLjQyLTYuNTkgNi41OS0yLjU4LTIuNTctMS40MiAxLjQxIDQgMy45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZUluZGV0ZXJtaW5hdGVDaGVja0JveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpNNyAxMWgxMHYySDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVSYWRpb0J1dHRvbkNoZWNrZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4elwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVJhZGlvQnV0dG9uVW5jaGVja2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMFYwelwifSxcImNoaWxkXCI6W119LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YXJCb3JkZXJQdXJwbGU1MDAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDkuMjQtNy4xOS0uNjJMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3IDE4LjE4IDIxbC0xLjYzLTcuMDNMMjIgOS4yNHpNMTIgMTUuNGwtMy43NiAyLjI3IDEtNC4yOC0zLjMyLTIuODggNC4zOC0uMzhMMTIgNi4xbDEuNzEgNC4wNCA0LjM4LjM4LTMuMzIgMi44OCAxIDQuMjhMMTIgMTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YXJCb3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwibm9uZVwiLFwiZFwiOlwiTTAgMGgyNHYyNEgwVjB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIyIDkuMjQtNy4xOS0uNjJMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3IDE4LjE4IDIxbC0xLjYzLTcuMDNMMjIgOS4yNHpNMTIgMTUuNGwtMy43NiAyLjI3IDEtNC4yOC0zLjMyLTIuODggNC4zOC0uMzhMMTIgNi4xbDEuNzEgNC4wNCA0LjM4LjM4LTMuMzIgMi44OCAxIDQuMjhMMTIgMTUuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVN0YXJIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIixcImRcIjpcIk0wIDBoMjR2MjRIMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgOS4yNC03LjE5LS42MkwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjEgMTIgMTcuMjcgMTguMTggMjFsLTEuNjMtNy4wM0wyMiA5LjI0ek0xMiAxNS40VjYuMWwxLjcxIDQuMDQgNC4zOC4zOC0zLjMyIDIuODggMSA0LjI4TDEyIDE1LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGFyT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgOS4yNC03LjE5LS42MkwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjEgMTIgMTcuMjcgMTguMTggMjFsLTEuNjMtNy4wM0wyMiA5LjI0ek0xMiAxNS40bC0zLjc2IDIuMjcgMS00LjI4LTMuMzItMi44OCA0LjM4LS4zOEwxMiA2LjFsMS43MSA0LjA0IDQuMzguMzgtMy4zMiAyLjg4IDEgNC4yOEwxMiAxNS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTWRPdXRsaW5lU3RhclB1cnBsZTUwMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTcuMjcgMTguMTggMjFsLTEuNjQtNy4wM0wyMiA5LjI0bC03LjE5LS42MUwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjEgMTIgMTcuMjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVTdGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiZ1wiLFwiYXR0clwiOntcImZpbGxcIjpcIm5vbmVcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfV19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNy4yNyAxOC4xOCAyMWwtMS42NC03LjAzTDIyIDkuMjRsLTcuMTktLjYxTDEyIDIgOS4xOSA4LjYzIDIgOS4yNGw1LjQ2IDQuNzNMNS44MiAyMSAxMiAxNy4yN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIE1kT3V0bGluZVRvZ2dsZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDBWMHpcIn0sXCJjaGlsZFwiOltdfSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNkg3Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2aDEwYzMuMzEgMCA2LTIuNjkgNi02cy0yLjY5LTYtNi02em0wIDEwSDdjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTRoMTBjMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDR6TTcgOWMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBNZE91dGxpbmVUb2dnbGVPbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJub25lXCIsXCJkXCI6XCJNMCAwaDI0djI0SDB6XCJ9LFwiY2hpbGRcIjpbXX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDZIN2MtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNmgxMGMzLjMxIDAgNi0yLjY5IDYtNnMtMi42OS02LTYtNnptMCAxMEg3Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00aDEwYzIuMjEgMCA0IDEuNzkgNCA0cy0xLjc5IDQtNCA0em0wLTdjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VJZCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IE1kQ2xvc2UsIE1kSG9tZSB9IGZyb20gJ3JlYWN0LWljb25zL21kJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlRHJhd2VyQ29udGV4dCB9IGZyb20gJy4vRHJhd2VyQ29udGV4dC5tanMnO1xuXG5jb25zdCBEcmF3ZXJIZWFkZXIgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBjbG9zZUljb246IENsb3NlSWNvbiA9IE1kQ2xvc2UsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICB0aXRsZSxcbiAgdGl0bGVJY29uOiBUaXRsZUljb24gPSBNZEhvbWUsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgY29uc3QgeyBpZDogbWFpbkRpdklkLCBpc09wZW4sIG9uQ2xvc2UsIHRoZW1lOiByb290VGhlbWUgfSA9IHVzZURyYXdlckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLmhlYWRlciwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWUsIC4uLnByb3BzLCBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiaDVcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmlubmVyLnRpdGxlVGV4dCwgaWQ6IG1haW5EaXZJZCwgY2hpbGRyZW46IFtcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goVGl0bGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgY2xhc3NOYW1lOiB0aGVtZS5pbm5lci50aXRsZUljb24gfSksXG4gICAgICB0aXRsZVxuICAgIF0gfSksXG4gICAgLyogQF9fUFVSRV9fICovIGpzeHMoXCJidXR0b25cIiwgeyBvbkNsaWNrOiBvbkNsb3NlLCBcImRhdGEtdGVzdGlkXCI6IFwiY2xvc2UtZHJhd2VyXCIsIGNsYXNzTmFtZTogdGhlbWUuaW5uZXIuY2xvc2VCdXR0b24sIGNoaWxkcmVuOiBbXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KENsb3NlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuaW5uZXIuY2xvc2VJY29uIH0pLFxuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IFwic3Itb25seVwiLCBjaGlsZHJlbjogXCJDbG9zZSBtZW51XCIgfSlcbiAgICBdIH0pLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5jb2xsYXBzZWRbaXNPcGVuID8gXCJvblwiIDogXCJvZmZcIl0sIGlkOiBgZmxvd2JpdGUtZHJhd2VyLWhlYWRlci0ke2lkfWAsIGNoaWxkcmVuIH0pXG4gIF0gfSk7XG59O1xuRHJhd2VySGVhZGVyLmRpc3BsYXlOYW1lID0gXCJEcmF3ZXIuSGVhZGVyXCI7XG5cbmV4cG9ydCB7IERyYXdlckhlYWRlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RHJhd2VySGVhZGVyLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZURyYXdlckNvbnRleHQgfSBmcm9tICcuL0RyYXdlckNvbnRleHQubWpzJztcblxuY29uc3QgRHJhd2VySXRlbXMgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUgfSA9IHVzZURyYXdlckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLml0ZW1zLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWRyYXdlci1pdGVtc1wiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcbkRyYXdlckl0ZW1zLmRpc3BsYXlOYW1lID0gXCJEcmF3ZXIuSXRlbXNcIjtcblxuZXhwb3J0IHsgRHJhd2VySXRlbXMgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyYXdlckl0ZW1zLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZUlkLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBEcmF3ZXJDb250ZXh0IH0gZnJvbSAnLi9EcmF3ZXJDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBEcmF3ZXJIZWFkZXIgfSBmcm9tICcuL0RyYXdlckhlYWRlci5tanMnO1xuaW1wb3J0IHsgRHJhd2VySXRlbXMgfSBmcm9tICcuL0RyYXdlckl0ZW1zLm1qcyc7XG5cbmNvbnN0IERyYXdlckNvbXBvbmVudCA9ICh7XG4gIGJhY2tkcm9wID0gdHJ1ZSxcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgZWRnZSA9IGZhbHNlLFxuICBwb3NpdGlvbiA9IFwibGVmdFwiLFxuICBvbkNsb3NlLFxuICBvcGVuOiBpc09wZW4gPSBmYWxzZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5kcmF3ZXIsIGN1c3RvbVRoZW1lKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVFc2NhcGVLZXkgPSAoZXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09IFwiRXNjYXBlXCIgJiYgaXNPcGVuICYmIG9uQ2xvc2UpIHtcbiAgICAgICAgb25DbG9zZSgpO1xuICAgICAgfVxuICAgIH07XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlRXNjYXBlS2V5KTtcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlRXNjYXBlS2V5KTtcbiAgfSwgW29uQ2xvc2UsIGlzT3Blbl0pO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoRHJhd2VyQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSwgb25DbG9zZSwgaXNPcGVuLCBpZCB9LCBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImRpdlwiLFxuICAgICAge1xuICAgICAgICBcImFyaWEtbW9kYWxcIjogdHJ1ZSxcbiAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGBkcmF3ZXItZGlhbG9nLSR7aWR9YCxcbiAgICAgICAgcm9sZTogXCJkaWFsb2dcIixcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtZHJhd2VyXCIsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICB0aGVtZS5yb290LmJhc2UsXG4gICAgICAgICAgdGhlbWUucm9vdC5wb3NpdGlvbltwb3NpdGlvbl1baXNPcGVuID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgZWRnZSAmJiAhaXNPcGVuICYmIHRoZW1lLnJvb3QuZWRnZSxcbiAgICAgICAgICBjbGFzc05hbWVcbiAgICAgICAgKSxcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIGNoaWxkcmVuXG4gICAgICB9XG4gICAgKSxcbiAgICBpc09wZW4gJiYgYmFja2Ryb3AgJiYgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IG9uQ2xpY2s6ICgpID0+IG9uQ2xvc2UoKSwgY2xhc3NOYW1lOiB0aGVtZS5yb290LmJhY2tkcm9wIH0pXG4gIF0gfSk7XG59O1xuRHJhd2VyQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJEcmF3ZXJcIjtcbmNvbnN0IERyYXdlciA9IE9iamVjdC5hc3NpZ24oRHJhd2VyQ29tcG9uZW50LCB7XG4gIEhlYWRlcjogRHJhd2VySGVhZGVyLFxuICBJdGVtczogRHJhd2VySXRlbXNcbn0pO1xuXG5leHBvcnQgeyBEcmF3ZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyYXdlci5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBEcm9wZG93bkNvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VEcm9wZG93bkNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERyb3Bkb3duQ29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZURyb3Bkb3duQ29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIERyb3Bkb3duQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IERyb3Bkb3duQ29udGV4dCwgdXNlRHJvcGRvd25Db250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ecm9wZG93bkNvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IHVzZURyb3Bkb3duQ29udGV4dCB9IGZyb20gJy4vRHJvcGRvd25Db250ZXh0Lm1qcyc7XG5cbmNvbnN0IERyb3Bkb3duRGl2aWRlciA9ICh7IGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lIH0gPSB1c2VEcm9wZG93bkNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBjdXN0b21UaGVtZS5kaXZpZGVyID8/IHJvb3RUaGVtZS5mbG9hdGluZy5kaXZpZGVyO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMgfSk7XG59O1xuXG5leHBvcnQgeyBEcm9wZG93bkRpdmlkZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyb3Bkb3duRGl2aWRlci5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3hzLCBGcmFnbWVudCwganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IHVzZURyb3Bkb3duQ29udGV4dCB9IGZyb20gJy4vRHJvcGRvd25Db250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBEcm9wZG93bkRpdmlkZXIgfSBmcm9tICcuL0Ryb3Bkb3duRGl2aWRlci5tanMnO1xuXG5jb25zdCBEcm9wZG93bkhlYWRlciA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSB9ID0gdXNlRHJvcGRvd25Db250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gY3VzdG9tVGhlbWUuaGVhZGVyID8/IHJvb3RUaGVtZS5mbG9hdGluZy5oZWFkZXI7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhGcmFnbWVudCwgeyBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUsIGNsYXNzTmFtZSksIC4uLnByb3BzLCBjaGlsZHJlbiB9KSxcbiAgICAvKiBAX19QVVJFX18gKi8ganN4KERyb3Bkb3duRGl2aWRlciwge30pXG4gIF0gfSk7XG59O1xuXG5leHBvcnQgeyBEcm9wZG93bkhlYWRlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RHJvcGRvd25IZWFkZXIubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4LCBqc3hzIH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdXNlTGlzdEl0ZW0sIHVzZU1lcmdlUmVmcyB9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdCc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgQnV0dG9uQmFzZSB9IGZyb20gJy4uL0J1dHRvbi9CdXR0b25CYXNlLm1qcyc7XG5pbXBvcnQgeyB1c2VEcm9wZG93bkNvbnRleHQgfSBmcm9tICcuL0Ryb3Bkb3duQ29udGV4dC5tanMnO1xuXG5jb25zdCBEcm9wZG93bkl0ZW0gPSBmb3J3YXJkUmVmKFxuICAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBpY29uOiBJY29uLCBvbkNsaWNrLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3QgeyByZWY6IGxpc3RJdGVtUmVmLCBpbmRleCB9ID0gdXNlTGlzdEl0ZW0oeyBsYWJlbDogdHlwZW9mIGNoaWxkcmVuID09PSBcInN0cmluZ1wiID8gY2hpbGRyZW4gOiB2b2lkIDAgfSk7XG4gICAgY29uc3QgcmVmID0gdXNlTWVyZ2VSZWZzKFtmb3J3YXJkZWRSZWYsIGxpc3RJdGVtUmVmXSk7XG4gICAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBhY3RpdmVJbmRleCwgZGlzbWlzc09uQ2xpY2ssIGdldEl0ZW1Qcm9wcywgaGFuZGxlU2VsZWN0IH0gPSB1c2VEcm9wZG93bkNvbnRleHQoKTtcbiAgICBjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZUluZGV4ID09PSBpbmRleDtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuZmxvYXRpbmcuaXRlbSwgY3VzdG9tVGhlbWUpO1xuICAgIGNvbnN0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImxpXCIsIHsgcm9sZTogXCJtZW51aXRlbVwiLCBjbGFzc05hbWU6IHRoZW1lLmNvbnRhaW5lciwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgICAgQnV0dG9uQmFzZSxcbiAgICAgIHtcbiAgICAgICAgcmVmLFxuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSxcbiAgICAgICAgLi4udGhlaXJQcm9wcyxcbiAgICAgICAgLi4uZ2V0SXRlbVByb3BzKHtcbiAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICBvbkNsaWNrPy4oKTtcbiAgICAgICAgICAgIGRpc21pc3NPbkNsaWNrICYmIGhhbmRsZVNlbGVjdChudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICB0YWJJbmRleDogaXNBY3RpdmUgPyAwIDogLTEsXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgSWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgY2xhc3NOYW1lOiB0aGVtZS5pY29uIH0pLFxuICAgICAgICAgIGNoaWxkcmVuXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICApIH0pO1xuICB9XG4pO1xuRHJvcGRvd25JdGVtLmRpc3BsYXlOYW1lID0gXCJEcm9wZG93bkl0ZW1cIjtcblxuZXhwb3J0IHsgRHJvcGRvd25JdGVtIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ecm9wZG93bkl0ZW0ubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4cywganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdXNlTGlzdE5hdmlnYXRpb24sIHVzZVR5cGVhaGVhZCwgRmxvYXRpbmdGb2N1c01hbmFnZXIsIEZsb2F0aW5nTGlzdCB9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdCc7XG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlRWZmZWN0LCBjbG9uZUVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBIaU91dGxpbmVDaGV2cm9uRG93biwgSGlPdXRsaW5lQ2hldnJvblVwLCBIaU91dGxpbmVDaGV2cm9uUmlnaHQsIEhpT3V0bGluZUNoZXZyb25MZWZ0IH0gZnJvbSAncmVhY3QtaWNvbnMvaGknO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlQmFzZUZMb2F0aW5nLCB1c2VGbG9hdGluZ0ludGVyYWN0aW9ucyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZS1mbG9hdGluZy5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vQnV0dG9uL0J1dHRvbi5tanMnO1xuaW1wb3J0ICcuLi9CdXR0b24vQnV0dG9uR3JvdXAubWpzJztcbmltcG9ydCB7IERyb3Bkb3duQ29udGV4dCB9IGZyb20gJy4vRHJvcGRvd25Db250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBEcm9wZG93bkRpdmlkZXIgfSBmcm9tICcuL0Ryb3Bkb3duRGl2aWRlci5tanMnO1xuaW1wb3J0IHsgRHJvcGRvd25IZWFkZXIgfSBmcm9tICcuL0Ryb3Bkb3duSGVhZGVyLm1qcyc7XG5pbXBvcnQgeyBEcm9wZG93bkl0ZW0gfSBmcm9tICcuL0Ryb3Bkb3duSXRlbS5tanMnO1xuXG5jb25zdCBpY29ucyA9IHtcbiAgdG9wOiBIaU91dGxpbmVDaGV2cm9uVXAsXG4gIHJpZ2h0OiBIaU91dGxpbmVDaGV2cm9uUmlnaHQsXG4gIGJvdHRvbTogSGlPdXRsaW5lQ2hldnJvbkRvd24sXG4gIGxlZnQ6IEhpT3V0bGluZUNoZXZyb25MZWZ0XG59O1xuY29uc3QgVHJpZ2dlciA9ICh7XG4gIHJlZnMsXG4gIGNoaWxkcmVuLFxuICBpbmxpbmUsXG4gIHRoZW1lLFxuICBkaXNhYmxlZCxcbiAgc2V0QnV0dG9uV2lkdGgsXG4gIGdldFJlZmVyZW5jZVByb3BzLFxuICByZW5kZXJUcmlnZ2VyLFxuICAuLi5idXR0b25Qcm9wc1xufSkgPT4ge1xuICBjb25zdCByZWYgPSByZWZzLnJlZmVyZW5jZTtcbiAgY29uc3QgYTExeVByb3BzID0gZ2V0UmVmZXJlbmNlUHJvcHMoKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmLmN1cnJlbnQpIHtcbiAgICAgIHNldEJ1dHRvbldpZHRoPy4ocmVmLmN1cnJlbnQuY2xpZW50V2lkdGgpO1xuICAgIH1cbiAgfSwgW3JlZiwgc2V0QnV0dG9uV2lkdGhdKTtcbiAgaWYgKHJlbmRlclRyaWdnZXIpIHtcbiAgICBjb25zdCB0cmlnZ2VyRWxlbWVudCA9IHJlbmRlclRyaWdnZXIodGhlbWUpO1xuICAgIHJldHVybiBjbG9uZUVsZW1lbnQodHJpZ2dlckVsZW1lbnQsIHsgcmVmOiByZWZzLnNldFJlZmVyZW5jZSwgZGlzYWJsZWQsIC4uLmExMXlQcm9wcywgLi4udHJpZ2dlckVsZW1lbnQucHJvcHMgfSk7XG4gIH1cbiAgcmV0dXJuIGlubGluZSA/IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJidXR0b25cIiwgeyB0eXBlOiBcImJ1dHRvblwiLCByZWY6IHJlZnMuc2V0UmVmZXJlbmNlLCBjbGFzc05hbWU6IHRoZW1lPy5pbmxpbmVXcmFwcGVyLCBkaXNhYmxlZCwgLi4uYTExeVByb3BzLCBjaGlsZHJlbiB9KSA6IC8qIEBfX1BVUkVfXyAqLyBqc3goQnV0dG9uLCB7IC4uLmJ1dHRvblByb3BzLCBkaXNhYmxlZCwgdHlwZTogXCJidXR0b25cIiwgcmVmOiByZWZzLnNldFJlZmVyZW5jZSwgLi4uYTExeVByb3BzLCBjaGlsZHJlbiB9KTtcbn07XG5jb25zdCBEcm9wZG93bkNvbXBvbmVudCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGRpc21pc3NPbkNsaWNrID0gdHJ1ZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIGVuYWJsZVR5cGVBaGVhZCA9IHRydWUsXG4gIHJlbmRlclRyaWdnZXIsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2FjdGl2ZUluZGV4LCBzZXRBY3RpdmVJbmRleF0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW3NlbGVjdGVkSW5kZXgsIHNldFNlbGVjdGVkSW5kZXhdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFtidXR0b25XaWR0aCwgc2V0QnV0dG9uV2lkdGhdID0gdXNlU3RhdGUodm9pZCAwKTtcbiAgY29uc3QgZWxlbWVudHNSZWYgPSB1c2VSZWYoW10pO1xuICBjb25zdCBsYWJlbHNSZWYgPSB1c2VSZWYoW10pO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmRyb3Bkb3duLCBjdXN0b21UaGVtZSk7XG4gIGNvbnN0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgY29uc3QgZGF0YVRlc3RJZCA9IHByb3BzW1wiZGF0YS10ZXN0aWRcIl0gfHwgXCJmbG93Yml0ZS1kcm9wZG93bi10YXJnZXRcIjtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCA9IHByb3BzLmlubGluZSA/IFwiYm90dG9tLXN0YXJ0XCIgOiBcImJvdHRvbVwiLFxuICAgIHRyaWdnZXIgPSBcImNsaWNrXCIsXG4gICAgbGFiZWwsXG4gICAgaW5saW5lLFxuICAgIGFycm93SWNvbiA9IHRydWUsXG4gICAgLi4uYnV0dG9uUHJvcHNcbiAgfSA9IHRoZWlyUHJvcHM7XG4gIGNvbnN0IGhhbmRsZVNlbGVjdCA9IHVzZUNhbGxiYWNrKChpbmRleCkgPT4ge1xuICAgIHNldFNlbGVjdGVkSW5kZXgoaW5kZXgpO1xuICAgIHNldE9wZW4oZmFsc2UpO1xuICB9LCBbXSk7XG4gIGNvbnN0IGhhbmRsZVR5cGVhaGVhZE1hdGNoID0gdXNlQ2FsbGJhY2soXG4gICAgKGluZGV4KSA9PiB7XG4gICAgICBpZiAob3Blbikge1xuICAgICAgICBzZXRBY3RpdmVJbmRleChpbmRleCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoYW5kbGVTZWxlY3QoaW5kZXgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW29wZW4sIGhhbmRsZVNlbGVjdF1cbiAgKTtcbiAgY29uc3QgeyBjb250ZXh0LCBmbG9hdGluZ1N0eWxlcywgcmVmcyB9ID0gdXNlQmFzZUZMb2F0aW5nKHtcbiAgICBvcGVuLFxuICAgIHNldE9wZW4sXG4gICAgcGxhY2VtZW50XG4gIH0pO1xuICBjb25zdCBsaXN0TmF2ID0gdXNlTGlzdE5hdmlnYXRpb24oY29udGV4dCwge1xuICAgIGxpc3RSZWY6IGVsZW1lbnRzUmVmLFxuICAgIGFjdGl2ZUluZGV4LFxuICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgb25OYXZpZ2F0ZTogc2V0QWN0aXZlSW5kZXhcbiAgfSk7XG4gIGNvbnN0IHR5cGVhaGVhZCA9IHVzZVR5cGVhaGVhZChjb250ZXh0LCB7XG4gICAgbGlzdFJlZjogbGFiZWxzUmVmLFxuICAgIGFjdGl2ZUluZGV4LFxuICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgb25NYXRjaDogaGFuZGxlVHlwZWFoZWFkTWF0Y2gsXG4gICAgZW5hYmxlZDogZW5hYmxlVHlwZUFoZWFkXG4gIH0pO1xuICBjb25zdCB7IGdldFJlZmVyZW5jZVByb3BzLCBnZXRGbG9hdGluZ1Byb3BzLCBnZXRJdGVtUHJvcHMgfSA9IHVzZUZsb2F0aW5nSW50ZXJhY3Rpb25zKHtcbiAgICBjb250ZXh0LFxuICAgIHJvbGU6IFwibWVudVwiLFxuICAgIHRyaWdnZXIsXG4gICAgaW50ZXJhY3Rpb25zOiBbbGlzdE5hdiwgdHlwZWFoZWFkXVxuICB9KTtcbiAgY29uc3QgSWNvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IFtwXSA9IHBsYWNlbWVudC5zcGxpdChcIi1cIik7XG4gICAgcmV0dXJuIGljb25zW3BdID8/IEhpT3V0bGluZUNoZXZyb25Eb3duO1xuICB9LCBbcGxhY2VtZW50XSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhEcm9wZG93bkNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHsgdGhlbWUsIGFjdGl2ZUluZGV4LCBkaXNtaXNzT25DbGljaywgZ2V0SXRlbVByb3BzLCBoYW5kbGVTZWxlY3QgfSwgY2hpbGRyZW46IFtcbiAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICAgIFRyaWdnZXIsXG4gICAgICB7XG4gICAgICAgIC4uLmJ1dHRvblByb3BzLFxuICAgICAgICByZWZzLFxuICAgICAgICBpbmxpbmUsXG4gICAgICAgIHRoZW1lLFxuICAgICAgICBcImRhdGEtdGVzdGlkXCI6IGRhdGFUZXN0SWQsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5mbG9hdGluZy50YXJnZXQsIGJ1dHRvblByb3BzLmNsYXNzTmFtZSksXG4gICAgICAgIHNldEJ1dHRvbldpZHRoLFxuICAgICAgICBnZXRSZWZlcmVuY2VQcm9wcyxcbiAgICAgICAgcmVuZGVyVHJpZ2dlcixcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICBhcnJvd0ljb24gJiYgLyogQF9fUFVSRV9fICovIGpzeChJY29uLCB7IGNsYXNzTmFtZTogdGhlbWUuYXJyb3dJY29uIH0pXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICApLFxuICAgIG9wZW4gJiYgLyogQF9fUFVSRV9fICovIGpzeChGbG9hdGluZ0ZvY3VzTWFuYWdlciwgeyBjb250ZXh0LCBtb2RhbDogZmFsc2UsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgXCJkaXZcIixcbiAgICAgIHtcbiAgICAgICAgcmVmOiByZWZzLnNldEZsb2F0aW5nLFxuICAgICAgICBzdHlsZTogeyAuLi5mbG9hdGluZ1N0eWxlcywgbWluV2lkdGg6IGJ1dHRvbldpZHRoIH0sXG4gICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1kcm9wZG93blwiLFxuICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogb3BlbixcbiAgICAgICAgLi4uZ2V0RmxvYXRpbmdQcm9wcyh7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgdGhlbWUuZmxvYXRpbmcuYmFzZSxcbiAgICAgICAgICAgIHRoZW1lLmZsb2F0aW5nLmFuaW1hdGlvbixcbiAgICAgICAgICAgIFwiZHVyYXRpb24tMTAwXCIsXG4gICAgICAgICAgICAhb3BlbiAmJiB0aGVtZS5mbG9hdGluZy5oaWRkZW4sXG4gICAgICAgICAgICB0aGVtZS5mbG9hdGluZy5zdHlsZS5hdXRvLFxuICAgICAgICAgICAgY2xhc3NOYW1lXG4gICAgICAgICAgKVxuICAgICAgICB9KSxcbiAgICAgICAgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goRmxvYXRpbmdMaXN0LCB7IGVsZW1lbnRzUmVmLCBsYWJlbHNSZWYsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwidWxcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmNvbnRlbnQsIHRhYkluZGV4OiAtMSwgY2hpbGRyZW4gfSkgfSlcbiAgICAgIH1cbiAgICApIH0pXG4gIF0gfSk7XG59O1xuRHJvcGRvd25Db21wb25lbnQuZGlzcGxheU5hbWUgPSBcIkRyb3Bkb3duXCI7XG5Ecm9wZG93bkhlYWRlci5kaXNwbGF5TmFtZSA9IFwiRHJvcGRvd24uSGVhZGVyXCI7XG5Ecm9wZG93bkRpdmlkZXIuZGlzcGxheU5hbWUgPSBcIkRyb3Bkb3duLkRpdmlkZXJcIjtcbmNvbnN0IERyb3Bkb3duID0gT2JqZWN0LmFzc2lnbihEcm9wZG93bkNvbXBvbmVudCwge1xuICBJdGVtOiBEcm9wZG93bkl0ZW0sXG4gIEhlYWRlcjogRHJvcGRvd25IZWFkZXIsXG4gIERpdmlkZXI6IERyb3Bkb3duRGl2aWRlclxufSk7XG5cbmV4cG9ydCB7IERyb3Bkb3duIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ecm9wZG93bi5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBGcmFnbWVudCwganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IEhlbHBlclRleHQgfSBmcm9tICcuLi9IZWxwZXJUZXh0L0hlbHBlclRleHQubWpzJztcblxuY29uc3QgRmlsZUlucHV0ID0gZm9yd2FyZFJlZihcbiAgKHsgY2xhc3NOYW1lLCBjb2xvciA9IFwiZ3JheVwiLCBoZWxwZXJUZXh0LCBzaXppbmcgPSBcIm1kXCIsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmZpbGVJbnB1dCwgY3VzdG9tVGhlbWUpO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhGcmFnbWVudCwgeyBjaGlsZHJlbjogW1xuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmJhc2UsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5maWVsZC5iYXNlLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgXCJpbnB1dFwiLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgdGhlbWUuZmllbGQuaW5wdXQuYmFzZSxcbiAgICAgICAgICAgIHRoZW1lLmZpZWxkLmlucHV0LmNvbG9yc1tjb2xvcl0sXG4gICAgICAgICAgICB0aGVtZS5maWVsZC5pbnB1dC5zaXplc1tzaXppbmddXG4gICAgICAgICAgKSxcbiAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgICByZWZcbiAgICAgICAgfVxuICAgICAgKSB9KSB9KSxcbiAgICAgIGhlbHBlclRleHQgJiYgLyogQF9fUFVSRV9fICovIGpzeChIZWxwZXJUZXh0LCB7IGNvbG9yLCBjaGlsZHJlbjogaGVscGVyVGV4dCB9KVxuICAgIF0gfSk7XG4gIH1cbik7XG5GaWxlSW5wdXQuZGlzcGxheU5hbWUgPSBcIkZpbGVJbnB1dFwiO1xuXG5leHBvcnQgeyBGaWxlSW5wdXQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZpbGVJbnB1dC5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VJZCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgRmxvYXRpbmdMYWJlbCA9IGZvcndhcmRSZWYoXG4gICh7XG4gICAgbGFiZWwsXG4gICAgaGVscGVyVGV4dCxcbiAgICBjb2xvciA9IFwiZGVmYXVsdFwiLFxuICAgIHNpemluZyA9IFwibWRcIixcbiAgICB2YXJpYW50LFxuICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gICAgY2xhc3NOYW1lLFxuICAgIC4uLnByb3BzXG4gIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHJhbmRvbUlkID0gdXNlSWQoKTtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmZsb2F0aW5nTGFiZWwsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjaGlsZHJlbjogW1xuICAgICAgLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UoXCJyZWxhdGl2ZVwiLCB2YXJpYW50ID09PSBcInN0YW5kYXJkXCIgPyBcInotMFwiIDogXCJcIiksIGNoaWxkcmVuOiBbXG4gICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgXCJpbnB1dFwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgaWQ6IHByb3BzLmlkID8gcHJvcHMuaWQgOiBcImZsb2F0aW5nTGFiZWxcIiArIHJhbmRvbUlkLFxuICAgICAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IFwib3V0bGluZWRfc3VjY2Vzc19oZWxwXCIsXG4gICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuaW5wdXRbY29sb3JdW3ZhcmlhbnRdW3NpemluZ10sIGNsYXNzTmFtZSksXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogXCIgXCIsXG4gICAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvYXRpbmctbGFiZWxcIixcbiAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgICAgICByZWZcbiAgICAgICAgICB9XG4gICAgICAgICksXG4gICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgXCJsYWJlbFwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGh0bWxGb3I6IHByb3BzLmlkID8gcHJvcHMuaWQgOiBcImZsb2F0aW5nTGFiZWxcIiArIHJhbmRvbUlkLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmxhYmVsW2NvbG9yXVt2YXJpYW50XVtzaXppbmddLCBjbGFzc05hbWUpLFxuICAgICAgICAgICAgY2hpbGRyZW46IGxhYmVsXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICBdIH0pLFxuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcInBcIiwgeyBpZDogXCJvdXRsaW5lZF9oZWxwZXJfdGV4dFwiICsgcmFuZG9tSWQsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5oZWxwZXJUZXh0W2NvbG9yXSwgY2xhc3NOYW1lKSwgY2hpbGRyZW46IGhlbHBlclRleHQgfSlcbiAgICBdIH0pO1xuICB9XG4pO1xuRmxvYXRpbmdMYWJlbC5kaXNwbGF5TmFtZSA9IFwiRmxvYXRpbmdMYWJlbFwiO1xuXG5leHBvcnQgeyBGbG9hdGluZ0xhYmVsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GbG9hdGluZ0xhYmVsLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCwganN4cyB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgRm9vdGVyQnJhbmQgPSAoe1xuICBhbHQsXG4gIGNsYXNzTmFtZSxcbiAgY2hpbGRyZW4sXG4gIGhyZWYsXG4gIG5hbWUsXG4gIHNyYyxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuZm9vdGVyLmJyYW5kLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2hpbGRyZW46IGhyZWYgPyAvKiBAX19QVVJFX18gKi8ganN4cyhcImFcIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtZm9vdGVyLWJyYW5kXCIsIGhyZWYsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW46IFtcbiAgICAvKiBAX19QVVJFX18gKi8ganN4KFwiaW1nXCIsIHsgYWx0LCBzcmMsIGNsYXNzTmFtZTogdGhlbWUuaW1nIH0pLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWZvb3Rlci1icmFuZC1zcGFuXCIsIGNsYXNzTmFtZTogdGhlbWUuc3BhbiwgY2hpbGRyZW46IG5hbWUgfSksXG4gICAgY2hpbGRyZW5cbiAgXSB9KSA6IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJpbWdcIixcbiAgICB7XG4gICAgICBhbHQsXG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtZm9vdGVyLWJyYW5kXCIsXG4gICAgICBzcmMsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuaW1nLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHNcbiAgICB9XG4gICkgfSk7XG59O1xuXG5leHBvcnQgeyBGb290ZXJCcmFuZCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Rm9vdGVyQnJhbmQubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4cywganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBGb290ZXJDb3B5cmlnaHQgPSAoe1xuICBieSxcbiAgY2xhc3NOYW1lLFxuICBocmVmLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgeWVhcixcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5mb290ZXIuY29weXJpZ2h0LCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1mb290ZXItY29weXJpZ2h0XCIsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW46IFtcbiAgICBcIlxceEE5IFwiLFxuICAgIHllYXIsXG4gICAgaHJlZiA/IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJhXCIsIHsgaHJlZiwgY2xhc3NOYW1lOiB0aGVtZS5ocmVmLCBjaGlsZHJlbjogYnkgfSkgOiAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1mb290ZXItY29weXJpZ2h0LXNwYW5cIiwgY2xhc3NOYW1lOiB0aGVtZS5zcGFuLCBjaGlsZHJlbjogYnkgfSlcbiAgXSB9KTtcbn07XG5cbmV4cG9ydCB7IEZvb3RlckNvcHlyaWdodCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Rm9vdGVyQ29weXJpZ2h0Lm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgRm9vdGVyRGl2aWRlciA9ICh7IGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5mb290ZXIuZGl2aWRlciwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImhyXCIsIHsgXCJkYXRhLXRlc3RpZFwiOiBcImZvb3Rlci1kaXZpZGVyXCIsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcyB9KTtcbn07XG5cbmV4cG9ydCB7IEZvb3RlckRpdmlkZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZvb3RlckRpdmlkZXIubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBGb290ZXJJY29uID0gKHtcbiAgYXJpYUxhYmVsLFxuICBjbGFzc05hbWUsXG4gIGhyZWYsXG4gIGljb246IEljb24sXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmZvb3Rlci5pY29uLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2hpbGRyZW46IGhyZWYgPyAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwiYVwiLFxuICAgIHtcbiAgICAgIFwiYXJpYS1sYWJlbFwiOiBhcmlhTGFiZWwsXG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtZm9vdGVyLWljb25cIixcbiAgICAgIGhyZWYsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goSWNvbiwgeyBjbGFzc05hbWU6IHRoZW1lLnNpemUgfSlcbiAgICB9XG4gICkgOiAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWZvb3Rlci1pY29uXCIsIGNsYXNzTmFtZTogdGhlbWUuc2l6ZSwgLi4ucHJvcHMgfSkgfSk7XG59O1xuXG5leHBvcnQgeyBGb290ZXJJY29uIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Gb290ZXJJY29uLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgRm9vdGVyTGluayA9ICh7XG4gIGFzOiBDb21wb25lbnQgPSBcImFcIixcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgaHJlZixcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuZm9vdGVyLmdyb3VwTGluay5saW5rLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwibGlcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goQ29tcG9uZW50LCB7IGhyZWYsIGNsYXNzTmFtZTogdGhlbWUuaHJlZiwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pIH0pO1xufTtcblxuZXhwb3J0IHsgRm9vdGVyTGluayB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Rm9vdGVyTGluay5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IEZvb3RlckxpbmtHcm91cCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGNvbCA9IGZhbHNlLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5mb290ZXIuZ3JvdXBMaW5rLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwidWxcIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiZm9vdGVyLWdyb3VwTGlua1wiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY29sICYmIHRoZW1lLmNvbCwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcblxuZXhwb3J0IHsgRm9vdGVyTGlua0dyb3VwIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Gb290ZXJMaW5rR3JvdXAubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBGb290ZXJUaXRsZSA9ICh7XG4gIGFzOiBDb21wb25lbnQgPSBcImgyXCIsXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIHRpdGxlLFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmZvb3Rlci50aXRsZSwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChDb21wb25lbnQsIHsgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWZvb3Rlci10aXRsZVwiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuOiB0aXRsZSB9KTtcbn07XG5cbmV4cG9ydCB7IEZvb3RlclRpdGxlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Gb290ZXJUaXRsZS5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBGb290ZXJCcmFuZCB9IGZyb20gJy4vRm9vdGVyQnJhbmQubWpzJztcbmltcG9ydCB7IEZvb3RlckNvcHlyaWdodCB9IGZyb20gJy4vRm9vdGVyQ29weXJpZ2h0Lm1qcyc7XG5pbXBvcnQgeyBGb290ZXJEaXZpZGVyIH0gZnJvbSAnLi9Gb290ZXJEaXZpZGVyLm1qcyc7XG5pbXBvcnQgeyBGb290ZXJJY29uIH0gZnJvbSAnLi9Gb290ZXJJY29uLm1qcyc7XG5pbXBvcnQgeyBGb290ZXJMaW5rIH0gZnJvbSAnLi9Gb290ZXJMaW5rLm1qcyc7XG5pbXBvcnQgeyBGb290ZXJMaW5rR3JvdXAgfSBmcm9tICcuL0Zvb3RlckxpbmtHcm91cC5tanMnO1xuaW1wb3J0IHsgRm9vdGVyVGl0bGUgfSBmcm9tICcuL0Zvb3RlclRpdGxlLm1qcyc7XG5cbmNvbnN0IEZvb3RlckNvbXBvbmVudCA9ICh7XG4gIGJnRGFyayA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBjb250YWluZXIgPSBmYWxzZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuZm9vdGVyLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwiZm9vdGVyXCIsXG4gICAge1xuICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWZvb3RlclwiLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3QuYmFzZSwgYmdEYXJrICYmIHRoZW1lLnJvb3QuYmdEYXJrLCBjb250YWluZXIgJiYgdGhlbWUucm9vdC5jb250YWluZXIsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApO1xufTtcbkZvb3RlckNvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiRm9vdGVyXCI7XG5Gb290ZXJDb3B5cmlnaHQuZGlzcGxheU5hbWUgPSBcIkZvb3Rlci5Db3B5cmlnaHRcIjtcbkZvb3RlckxpbmsuZGlzcGxheU5hbWUgPSBcIkZvb3Rlci5MaW5rXCI7XG5Gb290ZXJCcmFuZC5kaXNwbGF5TmFtZSA9IFwiRm9vdGVyLkJyYW5kXCI7XG5Gb290ZXJMaW5rR3JvdXAuZGlzcGxheU5hbWUgPSBcIkZvb3Rlci5MaW5rR3JvdXBcIjtcbkZvb3Rlckljb24uZGlzcGxheU5hbWUgPSBcIkZvb3Rlci5JY29uXCI7XG5Gb290ZXJUaXRsZS5kaXNwbGF5TmFtZSA9IFwiRm9vdGVyLlRpdGxlXCI7XG5Gb290ZXJEaXZpZGVyLmRpc3BsYXlOYW1lID0gXCJGb290ZXIuRGl2aWRlclwiO1xuY29uc3QgRm9vdGVyID0gT2JqZWN0LmFzc2lnbihGb290ZXJDb21wb25lbnQsIHtcbiAgQ29weXJpZ2h0OiBGb290ZXJDb3B5cmlnaHQsXG4gIExpbms6IEZvb3RlckxpbmssXG4gIExpbmtHcm91cDogRm9vdGVyTGlua0dyb3VwLFxuICBCcmFuZDogRm9vdGVyQnJhbmQsXG4gIEljb246IEZvb3Rlckljb24sXG4gIFRpdGxlOiBGb290ZXJUaXRsZSxcbiAgRGl2aWRlcjogRm9vdGVyRGl2aWRlclxufSk7XG5cbmV4cG9ydCB7IEZvb3RlciwgRm9vdGVyQ29tcG9uZW50IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Gb290ZXIubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4cywganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEZhUXVvdGVSaWdodCB9IGZyb20gJ3JlYWN0LWljb25zL2ZhNic7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IEhSSWNvbiA9IGZvcndhcmRSZWYoXG4gICh7IHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCBpY29uOiBJY29uID0gRmFRdW90ZVJpZ2h0LCBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuaHIuaWNvbiwgY3VzdG9tVGhlbWUpO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUuYmFzZSwgY2hpbGRyZW46IFtcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgIFwiaHJcIixcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5ockxpbmUsIGNsYXNzTmFtZSksXG4gICAgICAgICAgcm9sZTogXCJzZXBhcmF0b3JcIixcbiAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtaHItaWNvblwiLFxuICAgICAgICAgIHJlZixcbiAgICAgICAgICAuLi5wcm9wc1xuICAgICAgICB9XG4gICAgICApLFxuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUuaWNvbi5iYXNlLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgY2xhc3NOYW1lOiB0aGVtZS5pY29uLmljb24gfSkgfSlcbiAgICBdIH0pO1xuICB9XG4pO1xuXG5leHBvcnQgeyBIUkljb24gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUhSSWNvbi5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBIUlNxdWFyZSA9IGZvcndhcmRSZWYoXG4gICh7IHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuaHIuc3F1YXJlLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcImhyXCIsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLFxuICAgICAgICByb2xlOiBcInNlcGFyYXRvclwiLFxuICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtaHItc3F1YXJlXCIsXG4gICAgICAgIHJlZixcbiAgICAgICAgLi4ucHJvcHNcbiAgICAgIH1cbiAgICApO1xuICB9XG4pO1xuXG5leHBvcnQgeyBIUlNxdWFyZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SFJTcXVhcmUubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4cywganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgSFJUZXh0ID0gZm9yd2FyZFJlZihcbiAgKHsgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIHRleHQsIGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5oci50ZXh0LCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5iYXNlLCBjaGlsZHJlbjogW1xuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgXCJoclwiLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmhyTGluZSwgY2xhc3NOYW1lKSxcbiAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtaHItdGV4dFwiLFxuICAgICAgICAgIHJvbGU6IFwic2VwYXJhdG9yXCIsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIC4uLnByb3BzXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUudGV4dCwgY2hpbGRyZW46IHRleHQgfSlcbiAgICBdIH0pO1xuICB9XG4pO1xuXG5leHBvcnQgeyBIUlRleHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUhSVGV4dC5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBIUlRyaW1tZWQgPSBmb3J3YXJkUmVmKFxuICAoeyB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmhyLnRyaW1tZWQsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwiaHJcIixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksXG4gICAgICAgIHJvbGU6IFwic2VwYXJhdG9yXCIsXG4gICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1oci10cmltbWVkXCIsXG4gICAgICAgIHJlZixcbiAgICAgICAgLi4ucHJvcHNcbiAgICAgIH1cbiAgICApO1xuICB9XG4pO1xuXG5leHBvcnQgeyBIUlRyaW1tZWQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUhSVHJpbW1lZC5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgSFJJY29uIH0gZnJvbSAnLi9IUkljb24ubWpzJztcbmltcG9ydCB7IEhSU3F1YXJlIH0gZnJvbSAnLi9IUlNxdWFyZS5tanMnO1xuaW1wb3J0IHsgSFJUZXh0IH0gZnJvbSAnLi9IUlRleHQubWpzJztcbmltcG9ydCB7IEhSVHJpbW1lZCB9IGZyb20gJy4vSFJUcmltbWVkLm1qcyc7XG5cbmNvbnN0IEhSQ29tcG9uZW50ID0gZm9yd2FyZFJlZigoeyB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5oci5yb290LCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiaHJcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgcm9sZTogXCJzZXBhcmF0b3JcIiwgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWhyXCIsIHJlZiwgLi4ucHJvcHMgfSk7XG59KTtcbkhSQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJIUlwiO1xuSFJUcmltbWVkLmRpc3BsYXlOYW1lID0gXCJIUi5UcmltbWVkXCI7XG5IUkljb24uZGlzcGxheU5hbWUgPSBcIkhSLkljb25cIjtcbkhSVGV4dC5kaXNwbGF5TmFtZSA9IFwiSFIuVGV4dFwiO1xuSFJTcXVhcmUuZGlzcGxheU5hbWUgPSBcIkhSLlNxdWFyZVwiO1xuY29uc3QgSFIgPSBPYmplY3QuYXNzaWduKEhSQ29tcG9uZW50LCB7XG4gIFRyaW1tZWQ6IEhSVHJpbW1lZCxcbiAgSWNvbjogSFJJY29uLFxuICBUZXh0OiBIUlRleHQsXG4gIFNxdWFyZTogSFJTcXVhcmVcbn0pO1xuXG5leHBvcnQgeyBIUiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SFIubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4cywganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuXG5jb25zdCBMaXN0SXRlbSA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGljb246IEljb24sIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkubGlzdC5pdGVtLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcImxpXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLndpdGhJY29uW0ljb24gPyBcIm9uXCIgOiBcIm9mZlwiXSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuOiBbXG4gICAgSWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KEljb24sIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmljb24pIH0pLFxuICAgIGNoaWxkcmVuXG4gIF0gfSk7XG59O1xuXG5leHBvcnQgeyBMaXN0SXRlbSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TGlzdEl0ZW0ubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgTGlzdEl0ZW0gfSBmcm9tICcuL0xpc3RJdGVtLm1qcyc7XG5cbmNvbnN0IExpc3RDb21wb25lbnQgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICB1bnN0eWxlZCxcbiAgbmVzdGVkLFxuICBvcmRlcmVkLFxuICBob3Jpem9udGFsLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5saXN0LCBjdXN0b21UaGVtZSk7XG4gIGNvbnN0IENvbXBvbmVudCA9IG9yZGVyZWQgPyBcIm9sXCIgOiBcInVsXCI7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIENvbXBvbmVudCxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgIHRoZW1lLnJvb3QuYmFzZSxcbiAgICAgICAgdGhlbWUucm9vdC5vcmRlcmVkW29yZGVyZWQgPyBcIm9uXCIgOiBcIm9mZlwiXSxcbiAgICAgICAgdW5zdHlsZWQgJiYgdGhlbWUucm9vdC51bnN0eWxlZCxcbiAgICAgICAgbmVzdGVkICYmIHRoZW1lLnJvb3QubmVzdGVkLFxuICAgICAgICBob3Jpem9udGFsICYmIHRoZW1lLnJvb3QuaG9yaXpvbnRhbCxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlblxuICAgIH1cbiAgKTtcbn07XG5MaXN0Q29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJMaXN0XCI7XG5MaXN0SXRlbS5kaXNwbGF5TmFtZSA9IFwiTGlzdC5JdGVtXCI7XG5jb25zdCBMaXN0ID0gT2JqZWN0LmFzc2lnbihMaXN0Q29tcG9uZW50LCB7IEl0ZW06IExpc3RJdGVtIH0pO1xuXG5leHBvcnQgeyBMaXN0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1MaXN0Lm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCwganN4cyB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgTGlzdEdyb3VwSXRlbSA9ICh7XG4gIGFjdGl2ZTogaXNBY3RpdmUsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGhyZWYsXG4gIGljb246IEljb24sXG4gIG9uQ2xpY2ssXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICBkaXNhYmxlZCxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5saXN0R3JvdXAuaXRlbSwgY3VzdG9tVGhlbWUpO1xuICBjb25zdCBpc0xpbmsgPSB0eXBlb2YgaHJlZiAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgY29uc3QgQ29tcG9uZW50ID0gaXNMaW5rID8gXCJhXCIgOiBcImJ1dHRvblwiO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImxpXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICBDb21wb25lbnQsXG4gICAge1xuICAgICAgaHJlZixcbiAgICAgIG9uQ2xpY2ssXG4gICAgICB0eXBlOiBpc0xpbmsgPyB2b2lkIDAgOiBcImJ1dHRvblwiLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgIHRoZW1lLmxpbmsuYWN0aXZlW2lzQWN0aXZlID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgIHRoZW1lLmxpbmsuZGlzYWJsZWRbZGlzYWJsZWQgPyBcIm9uXCIgOiBcIm9mZlwiXSxcbiAgICAgICAgdGhlbWUubGluay5iYXNlLFxuICAgICAgICB0aGVtZS5saW5rLmhyZWZbaXNMaW5rID8gXCJvblwiIDogXCJvZmZcIl1cbiAgICAgICksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgIEljb24gJiYgLyogQF9fUFVSRV9fICovIGpzeChJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLWxpc3QtZ3JvdXAtaXRlbS1pY29uXCIsIGNsYXNzTmFtZTogdGhlbWUubGluay5pY29uIH0pLFxuICAgICAgICBjaGlsZHJlblxuICAgICAgXVxuICAgIH1cbiAgKSB9KTtcbn07XG5cbmV4cG9ydCB7IExpc3RHcm91cEl0ZW0gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUxpc3RHcm91cEl0ZW0ubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgTGlzdEdyb3VwSXRlbSB9IGZyb20gJy4vTGlzdEdyb3VwSXRlbS5tanMnO1xuXG5jb25zdCBMaXN0R3JvdXBDb21wb25lbnQgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLmxpc3RHcm91cCwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcInVsXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3QuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcbkxpc3RHcm91cENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiTGlzdEdyb3VwXCI7XG5MaXN0R3JvdXBJdGVtLmRpc3BsYXlOYW1lID0gXCJMaXN0R3JvdXAuSXRlbVwiO1xuY29uc3QgTGlzdEdyb3VwID0gT2JqZWN0LmFzc2lnbihMaXN0R3JvdXBDb21wb25lbnQsIHtcbiAgSXRlbTogTGlzdEdyb3VwSXRlbVxufSk7XG5cbmV4cG9ydCB7IExpc3RHcm91cCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TGlzdEdyb3VwLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IE5hdmJhckNvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VOYXZiYXJDb250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChOYXZiYXJDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlTmF2QmFyQ29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIE5hdmJhckNvbnRleHQgcHJvdmlkZXIhXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgeyBOYXZiYXJDb250ZXh0LCB1c2VOYXZiYXJDb250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1OYXZiYXJDb250ZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZU5hdmJhckNvbnRleHQgfSBmcm9tICcuL05hdmJhckNvbnRleHQubWpzJztcblxuY29uc3QgTmF2YmFyQnJhbmQgPSAoe1xuICBhczogQ29tcG9uZW50ID0gXCJhXCIsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUgfSA9IHVzZU5hdmJhckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLmJyYW5kLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KENvbXBvbmVudCwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcblxuZXhwb3J0IHsgTmF2YmFyQnJhbmQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU5hdmJhckJyYW5kLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZU5hdmJhckNvbnRleHQgfSBmcm9tICcuL05hdmJhckNvbnRleHQubWpzJztcblxuY29uc3QgTmF2YmFyQ29sbGFwc2UgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUsIGlzT3BlbiB9ID0gdXNlTmF2YmFyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuY29sbGFwc2UsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtbmF2YmFyLWNvbGxhcHNlXCIsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgdGhlbWUuaGlkZGVuWyFpc09wZW4gPyBcIm9uXCIgOiBcIm9mZlwiXSwgY2xhc3NOYW1lKSxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJ1bFwiLCB7IGNsYXNzTmFtZTogdGhlbWUubGlzdCwgY2hpbGRyZW4gfSlcbiAgICB9XG4gICk7XG59O1xuXG5leHBvcnQgeyBOYXZiYXJDb2xsYXBzZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TmF2YmFyQ29sbGFwc2UubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlTmF2YmFyQ29udGV4dCB9IGZyb20gJy4vTmF2YmFyQ29udGV4dC5tanMnO1xuXG5jb25zdCBOYXZiYXJMaW5rID0gKHtcbiAgYWN0aXZlLFxuICBhczogQ29tcG9uZW50ID0gXCJhXCIsXG4gIGRpc2FibGVkLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgb25DbGljayxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBzZXRJc09wZW4gfSA9IHVzZU5hdmJhckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLmxpbmssIGN1c3RvbVRoZW1lKTtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZXZlbnQpID0+IHtcbiAgICBzZXRJc09wZW4oZmFsc2UpO1xuICAgIG9uQ2xpY2s/LihldmVudCk7XG4gIH07XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwibGlcIiwgeyBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBDb21wb25lbnQsXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICB0aGVtZS5iYXNlLFxuICAgICAgICBhY3RpdmUgJiYgdGhlbWUuYWN0aXZlLm9uLFxuICAgICAgICAhYWN0aXZlICYmICFkaXNhYmxlZCAmJiB0aGVtZS5hY3RpdmUub2ZmLFxuICAgICAgICB0aGVtZS5kaXNhYmxlZFtkaXNhYmxlZCA/IFwib25cIiA6IFwib2ZmXCJdLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICksXG4gICAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW5cbiAgICB9XG4gICkgfSk7XG59O1xuXG5leHBvcnQgeyBOYXZiYXJMaW5rIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1OYXZiYXJMaW5rLm1qcy5tYXBcbiIsIi8vIFRISVMgRklMRSBJUyBBVVRPIEdFTkVSQVRFRFxuaW1wb3J0IHsgR2VuSWNvbiB9IGZyb20gJy4uL2xpYi9pbmRleC5tanMnO1xuZXhwb3J0IGZ1bmN0aW9uIEZhNTAwUHggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAzLjMgMzQ0LjNjLTYuNS0xNC4yLTYuOS0xOC4zIDcuNC0yMy4xIDI1LjYtOCA4IDkuMiA0My4yIDQ5LjJoLjN2LTkzLjljMS4yLTUwLjIgNDQtOTIuMiA5Ny43LTkyLjIgNTMuOSAwIDk3LjcgNDMuNSA5Ny43IDk2LjggMCA2My40LTYwLjggMTEzLjItMTI4LjUgOTMuMy0xMC41LTQuMi0yLjEtMzEuNyA4LjUtMjguNiA1MyAwIDg5LjQtMTAuMSA4OS40LTY0LjQgMC02MS03Ny4xLTg5LjYtMTE2LjktNDQuNi0yMy41IDI2LjQtMTcuNiA0Mi4xLTE3LjYgMTU3LjYgNTAuNyAzMSAxMTguMyAyMiAxNjAuNC0yMC4xIDI0LjgtMjQuOCAzOC41LTU4IDM4LjUtOTMgMC0zNS4yLTEzLjgtNjguMi0zOC44LTkzLjMtMjQuOC0yNC44LTU3LjgtMzguNS05My4zLTM4LjVzLTY4LjggMTMuOC05My41IDM4LjVjLS4zLjMtMTYgMTYuNS0yMS4yIDIzLjlsLS41LjZjLTMuMyA0LjctNi4zIDkuMS0yMC4xIDYuMS02LjktMS43LTE0LjMtNS44LTE0LjMtMTEuOFYyMGMwLTUgMy45LTEwLjUgMTAuNS0xMC41aDI0MS4zYzguMyAwIDguMyAxMS42IDguMyAxNS4xIDAgMy45IDAgMTUuMS04LjMgMTUuMUgxMzAuM3YxMzIuOWguM2MxMDQuMi0xMDkuOCAyODIuOC0zNiAyODIuOCAxMDguOSAwIDE3OC4xLTI0NC44IDIyMC4zLTMxMC4xIDYyLjh6bTYzLjMtMjYwLjhjLS41IDQuMiA0LjYgMjQuNSAxNC42IDIwLjZDMzA2IDU2LjYgMzg0IDE0NC41IDM5MC42IDE0NC41YzQuOCAwIDIyLjgtMTUuMyAxNC4zLTIyLjgtOTMuMi04OS0yMzQuNS01Ny0yMzguMy0zOC4yek0zOTMgNDE0LjdDMjgzIDUyNC42IDk0IDQ3NS41IDYxIDMxMC41YzAtMTIuMi0zMC40LTcuNC0yOC45IDMuMyAyNCAxNzMuNCAyNDYgMjU2LjkgMzgxLjYgMTIxLjMgNi45LTcuOC0xMi42LTI4LjQtMjAuNy0yMC40ek0yMTMuNiAzMDYuNmMwIDQgNC4zIDcuMyA1LjUgOC41IDMgMyA2LjEgNC40IDguNSA0LjQgMy44IDAgMi42LjIgMjIuMy0xOS41IDE5LjYgMTkuMyAxOS4xIDE5LjUgMjIuMyAxOS41IDUuNCAwIDE4LjUtMTAuNCAxMC43LTE4LjJMMjY1LjYgMjg0bDE4LjItMTguMmM2LjMtNi44LTEwLjEtMjEuOC0xNi4yLTE1LjdMMjQ5LjcgMjY4Yy0xOC42LTE4LjgtMTguNC0xOS41LTIxLjUtMTkuNS01IDAtMTggMTEuNy0xMi40IDE3LjNMMjM0IDI4NGMtMTguMSAxNy45LTIwLjQgMTkuMi0yMC40IDIyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFjY2Vzc2libGVJY29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyMy45IDI1NS44TDQxMSA0MTMuMWMtMy4zIDQwLjctNjMuOSAzNS4xLTYwLjYtNC45bDEwLTEyMi41LTQxLjEgMi4zYzEwLjEgMjAuNyAxNS44IDQzLjkgMTUuOCA2OC41IDAgNDEuMi0xNi4xIDc4LjctNDIuMyAxMDYuNWwtMzkuMy0zOS4zYzU3LjktNjMuNyAxMy4xLTE2Ny4yLTc0LTE2Ny4yLTI1LjkgMC00OS41IDkuOS02Ny4yIDI2TDczIDI0My4yYzIyLTIwLjcgNTAuMS0zNS4xIDgxLjQtNDAuMmw3NS4zLTg1LjctNDIuNi0yNC44LTUxLjYgNDZjLTMwIDI2LjgtNzAuNi0xOC41LTQwLjUtNDUuNGw2OC02MC43YzkuOC04LjggMjQuMS0xMC4yIDM1LjUtMy42IDAgMCAxMzkuMyA4MC45IDEzOS41IDgxLjEgMTYuMiAxMC4xIDIwLjcgMzYgNi4xIDUyLjZMMjg1LjcgMjI5bDEwNi4xLTUuOWMxOC41LTEuMSAzMy42IDE0LjQgMzIuMSAzMi43em0tNjQuOS0xNTRjMjguMSAwIDUwLjktMjIuOCA1MC45LTUwLjlDNDA5LjkgMjIuOCAzODcuMSAwIDM1OSAwYy0yOC4xIDAtNTAuOSAyMi44LTUwLjkgNTAuOSAwIDI4LjEgMjIuOCA1MC45IDUwLjkgNTAuOXpNMTc5LjYgNDU2LjVjLTgwLjYgMC0xMjcuNC05MC42LTgyLjctMTU2LjFsLTM5LjctMzkuN0MzNi40IDI4NyAyNCAzMjAuMyAyNCAzNTYuNGMwIDEzMC43IDE1MC43IDIwMS40IDI1MS40IDEyMi41bC0zOS43LTM5LjdjLTE2IDEwLjktMzUuMyAxNy4zLTU2LjEgMTcuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWNjdXNvZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIyLjEgMjUydi0xbC01MS4yLTY1LjhzLTEyIDEuNi0yNSAxNS4xYy05IDkuMy0yNDIuMSAyMzkuMS0yNDMuNCAyNDAuOS03IDEwIDEuNiA2LjggMTUuNyAxLjcuOCAwIDExNC41LTM2LjYgMTE0LjUtMzYuNi41LS42LS4xLS4xLjYtLjYtLjQtNS4xLS44LTI2LjItMS0yNy43LS42LTUuMiAyLjItNi45IDctOC45bDkyLjYtMzMuOGMuNi0uOCA4OC41LTgxLjcgOTAuMi04My4zem0xNjAuMSAxMjAuMWMxMy4zIDE2LjEgMjAuNyAxMy4zIDMwLjggOS4zIDMuMi0xLjIgMTE1LjQtNDcuNiAxMTcuOC00OC45IDgtNC4zLTEuNy0xNi43LTcuMi0yMy40LTIuMS0yLjUtMjA1LjEtMjQ1LjYtMjA3LjItMjQ4LjMtOS43LTEyLjItMTQuMy0xMi45LTM4LjQtMTIuOC0xMC4yIDAtMTA2LjguNS0xMTYuNS42LTE5LjIuMS0zMi45LS4zLTE5LjIgMTYuOUMyNTAgNzUgNDc2LjUgMzY1LjIgNDgyLjIgMzcyLjF6bTE1Mi43IDEuNmMtMi4zLS4zLTI0LjYtNC43LTM4LTcuMiAwIDAtMTE1IDUwLjQtMTE3LjUgNTEuNi0xNiA3LjMtMjYuOS0zLjItMzYuNy0xNC42bC01Ny4xLTc0Yy01LjQtLjktNjAuNC05LjYtNjUuMy05LjMtMy4xLjItOS42LjgtMTQuNCAyLjktNC45IDIuMS0xNDUuMiA1Mi44LTE1MC4yIDU0LjctNS4xIDItMTEuNCAzLjYtMTEuMSA3LjYuMiAyLjUgMiAyLjYgNC42IDMuNSAyLjcuOCAzMDAuOSA2Ny42IDMwOCA2OS4xIDE1LjYgMy4zIDM4LjUgMTAuNSA1My42IDEuNyAyLjEtMS4yIDEyMy44LTc2LjQgMTI1LjgtNzcuOCA1LjQtNCA0LjMtNi44LTEuNy04LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFjcXVpc2l0aW9uc0luY29ycG9yYXRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTcuNDUgNDY4LjJjLTEuMi03LjctMS4zLTcuNi05LjYtNy42LTk5LjguMi0xMTEuOC0yLjQtMTEyLjctMi42LTEyLjMtMS43LTIwLjYtMTAuNS0yMS0yMy4xLS4xLTEuNi0uMi03MS42LTEtMTI5LjEtLjEtNC43IDEuNi02LjQgNS45LTcuNSAxMi41LTMgMjQuOS02LjEgMzcuMy05LjcgNC4zLTEuMyA2LjgtLjIgOC40IDMuNSA0LjUgMTAuMyA4LjggMjAuNiAxMy4yIDMwLjkgMS42IDMuNy4xIDQuNC0zLjQgNC40LTEwLS4yLTIwLS4xLTMwLjQtLjF2MjdoMTE2Yy0xLjQtOS41LTIuNy0xOC4xLTQtMjcuNS03IDAtMTMuOC40LTIwLjQtLjEtMjIuNi0xLjYtMTguMy00LjQtODQtMTU4LjYtOC44LTIwLjEtMjcuOS02Mi4xLTM2LjUtODkuMi00LjQtMTQgNS41LTI1LjQgMTguOS0yNi42IDE4LjYtMS43IDM3LjUtMS42IDU2LjItMiAyMC42LS40IDQxLjItLjQgNjEuOC0uNSAzLjEgMCA0LTEuNCA0LjMtNC4zIDEuMi05LjggMi43LTE5LjUgNC0yOS4yLjgtNS4zIDEuNi0xMC43IDIuNC0xNi4xTDIzLjc1IDBjLTMuNiAwLTUuMyAxLjEtNC42IDUuMyAyLjIgMTMuMi0uOC44IDYuNCA0NS4zIDYzLjQgMCA3MS44LjkgMTAxLjguNSAxMi4zLS4yIDM3IDMuNSAzNy43IDIyLjEuNCAxMS40LTEuMSAxMS4zLTMyLjYgODcuNC01My44IDEyOS44LTUwLjcgMTIwLjMtNjcuMyAxNjEtMS43IDQuMS0zLjYgNS4yLTcuNiA1LjItOC41LS4yLTE3LS4zLTI1LjQuMS0xLjkuMS01LjIgMS44LTUuNSAzLjItMS41IDguMS0yLjIgMTYuMy0zLjIgMjQuOWgxMTQuM3YtMjcuNmMtNi45IDAtMzMuNS40LTM1LjMtMi45IDUuMy0xMi4zIDEwLjQtMjQuNCAxNS43LTM2LjcgMTYuMyA0IDMxLjkgNy44IDQ3LjYgMTEuNyAzLjQuOSA0LjYgMyA0LjYgNi44LS4xIDQyLjkuMSA4NS45LjIgMTI4LjggMCAxMC4yLTUuNSAxOS4xLTE0LjkgMjMuMS02LjUgMi43LTMuMyAzLjQtMTIxLjQgMi40LTUuMyAwLTcuMSAyLTcuNiA2LjgtMS41IDEyLjktMi45IDI1LjktNSAzOC44LS44IDUgMS4zIDUuNyA1LjMgNS43IDE4My4yLjYtMzAuNyAwIDMzNy4xIDAtMi41LTE1LTQuNC0yOS40LTYuNi00My43em0tMTc0LjktMjA1LjdjLTEzLjMtNC4yLTI2LjYtOC4yLTM5LjktMTIuNWE0NC41MyA0NC41MyAwIDAgMS01LjgtMi45YzE3LjItNDQuMyAzNC4yLTg4LjEgNTEuMy0xMzIuMSA3LjUgMi40IDcuOS0uOCA5LjQgMCA5LjMgMjIuNSAxOC4xIDYwLjEgMjcgODIuOCA2LjYgMTYuNyAxMyAzMy41IDE5LjcgNTAuOWEzNS43OCAzNS43OCAwIDAgMS0zLjkgMi4xYy0xMy4xIDMuOS0yNi40IDcuNS0zOS40IDExLjdhMjcuNjYgMjcuNjYgMCAwIDEtMTguNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBZG4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDE2Ny41bDY0LjkgOTguOEgxODMuMWw2NC45LTk4Ljh6TTQ5NiAyNTZjMCAxMzYuOS0xMTEuMSAyNDgtMjQ4IDI0OFMwIDM5Mi45IDAgMjU2IDExMS4xIDggMjQ4IDhzMjQ4IDExMS4xIDI0OCAyNDh6bS05OS44IDgyLjdMMjQ4IDExNS41IDk5LjggMzM4LjdoMzAuNGwzMy42LTUxLjdoMTY4LjZsMzMuNiA1MS43aDMwLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFkdmVyc2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4Mi4xIDMySDI4LjdDNS44IDMyIDAgMzcuOSAwIDYwLjl2MzkwLjJDMCA0NzQuNCA1LjggNDgwIDI4LjcgNDgwaDQ1My40YzI0LjQgMCAyOS45LTUuMiAyOS45LTI5LjdWNjIuMmMwLTI0LjYtNS40LTMwLjItMjkuOS0zMC4yek0xNzguNCAyMjAuM2MtMjcuNS0yMC4yLTcyLjEtOC43LTg0LjIgMjMuNC00LjMgMTEuMS05LjMgOS41LTE3LjUgOC4zLTkuNy0xLjUtMTcuMi0zLjItMjIuNS01LjUtMjguOC0xMS40IDguNi01NS4zIDI0LjktNjQuMyA0MS4xLTIxLjQgODMuNC0yMi4yIDEyNS4zLTQuOCA0MC45IDE2LjggMzQuNSA1OS4yIDM0LjUgMTI4LjUgMi43IDI1LjgtNC4zIDU4LjMgOS4zIDg4LjggMS45IDQuNC40IDcuOS0yLjcgMTAuNy04LjQgNi43LTM5LjMgMi4yLTQ2LjYtNy40LTEuOS0yLjItMS44LTMuNi0zLjktNi4yLTMuNi0zLjktNy4zLTIuMi0xMS45IDEtNTcuNCAzNi40LTE0MC4zIDIxLjQtMTQ3LTQzLjMtMy4xLTI5LjMgMTIuNC01Ny4xIDM5LjYtNzEgMzguMi0xOS41IDExMi4yLTExLjggMTE0LTMwLjkgMS4xLTEwLjItMS45LTIwLjEtMTEuMy0yNy4zem0yODYuNyAyMjJjMCAxNS4xLTExLjEgOS45LTE3LjggOS45SDUyLjRjLTcuNCAwLTE4LjIgNC44LTE3LjgtMTAuNy40LTEzLjkgMTAuNS05LjEgMTcuMS05LjEgMTMyLjMtLjQgMjY0LjUtLjQgMzk2LjggMCA2LjggMCAxNi42LTQuNCAxNi42IDkuOXptMy44LTM0MC41djI5MWMwIDUuNy0uNyAxMy45LTguMSAxMy45LTEyLjQtLjQtMjcuNSA3LjEtMzYuMS01LjYtNS44LTguNy03LjgtNC0xMi40LTEuMi01My40IDI5LjctMTI4LjEgNy4xLTE0NC40LTg1LjItNi4xLTMzLjQtLjctNjcuMSAxNS43LTEwMCAxMS44LTIzLjkgNTYuOS03Ni4xIDEzNi4xLTMwLjV2LTcxYzAtMjYuMi0uMS0yNi4yIDI2LTI2LjIgMy4xIDAgNi42LjQgOS43IDAgMTAuMS0uOCAxMy42IDQuNCAxMy42IDE0LjMtLjEuMi0uMS4zLS4xLjV6bS01MS41IDIzMi4zYy0xOS41IDQ3LjYtNzIuOSA0My4zLTkwIDUuMi0xNS4xLTMzLjMtMTUuNS02OC4yLjQtMTAxLjUgMTYuMy0zNC4xIDU5LjctMzUuNyA4MS41LTQuOCAyMC42IDI4LjggMTQuOSA4NC42IDguMSAxMDEuMXptLTI5NC44IDM1LjNjLTcuNS0xLjMtMzMtMy4zLTMzLjctMjcuOC0uNC0xMy45IDcuOC0yMyAxOS44LTI1LjggMjQuNC01LjkgNDkuMy05LjkgNzMuNy0xNC43IDguOS0yIDcuNCA0LjQgNy44IDkuNSAxLjQgMzMtMjYuMSA1OS4yLTY3LjYgNTguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWZmaWxpYXRldGhlbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU5LjcgMjM3LjRDMTA4LjQgMzA4LjMgNDMuMSAzNDguMiAxNCAzMjYuNi0xNS4yIDMwNC45IDIuOCAyMzAgNTQuMiAxNTkuMWM1MS4zLTcwLjkgMTE2LjYtMTEwLjggMTQ1LjctODkuMiAyOS4xIDIxLjYgMTEuMSA5Ni42LTQwLjIgMTY3LjV6bTM1MS4yLTU3LjNDNDM3LjEgMzAzLjUgMzE5IDM2Ny44IDI0Ni40IDMyMy43Yy0yNS0xNS4yLTQxLjMtNDEuMi00OS03My44LTMzLjYgNjQuOC05Mi44IDExMy44LTE2NC4xIDEzMy4yIDQ5LjggNTkuMyAxMjQuMSA5Ni45IDIwNyA5Ni45IDE1MCAwIDI3MS42LTEyMy4xIDI3MS42LTI3NC45LjEtOC41LS4zLTE2LjgtMS0yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWlyYm5iIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAzNzMuMTJjLTI1LjI0LTMxLjY3LTQwLjA4LTU5LjQzLTQ1LTgzLjE4LTIyLjU1LTg4IDExMi42MS04OCA5MC4wNiAwLTUuNDUgMjQuMjUtMjAuMjkgNTItNDUgODMuMTh6bTEzOC4xNSA3My4yM2MtNDIuMDYgMTguMzEtODMuNjctMTAuODgtMTE5LjMtNTAuNDcgMTAzLjktMTMwLjA3IDQ2LjExLTIwMC0xOC44NS0yMDAtNTQuOTIgMC04NS4xNiA0Ni41MS03My4yOCAxMDAuNSA2LjkzIDI5LjE5IDI1LjIzIDYyLjM5IDU0LjQzIDk5LjUtMzIuNTMgMzYuMDUtNjAuNTUgNTIuNjktODUuMTUgNTQuOTItNTAgNy40My04OS4xMS00MS4wNi03MS4zLTkxLjA5IDE1LjEtMzkuMTYgMTExLjcyLTIzMS4xOCAxMTUuODctMjQxLjU2IDE1Ljc1LTMwLjA3IDI1LjU2LTU3LjQgNTkuMzgtNTcuNCAzMi4zNCAwIDQzLjQgMjUuOTQgNjAuMzcgNTkuODcgMzYgNzAuNjIgODkuMzUgMTc3LjQ4IDExNC44NCAyMzkuMDkgMTMuMTcgMzMuMDctMS4zNyA3MS4yOS0zNy4wMSA4Ni42NHptNDctMTM2LjEyQzI4MC4yNyAzNS45MyAyNzMuMTMgMzIgMjI0IDMyYy00NS41MiAwLTY0Ljg3IDMxLjY3LTg0LjY2IDcyLjc5QzMzLjE4IDMxNy4xIDIyLjg5IDM0Ny4xOSAyMiAzNDkuODEtMy4yMiA0MTkuMTQgNDguNzQgNDgwIDExMS42MyA0ODBjMjEuNzEgMCA2MC42MS02LjA2IDExMi4zNy02Mi40IDU4LjY4IDYzLjc4IDEwMS4yNiA2Mi40IDExMi4zNyA2Mi40IDYyLjg5LjA1IDExNC44NS02MC44NiA4OS42MS0xMzAuMTkuMDItMy44OS0xNi44Mi0zOC45LTE2LjgyLTM5LjU4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbGdvbGlhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyOS4zIDE4Mi42Yy00OS4zIDAtODkuMiAzOS45LTg5LjIgODkuMiAwIDQ5LjMgMzkuOSA4OS4yIDg5LjIgODkuMnM4OS4yLTM5LjkgODkuMi04OS4yYzAtNDkuMy00MC04OS4yLTg5LjItODkuMnptNjIuNyA1Ni42bC01OC45IDMwLjZjLTEuOC45LTMuOC0uNC0zLjgtMi4zVjIwMWMwLTEuNSAxLjMtMi43IDIuNy0yLjYgMjYuMiAxIDQ4LjkgMTUuNyA2MS4xIDM3LjEuNyAxLjMuMiAzLTEuMSAzLjd6TTM4OS4xIDMySDU4LjlDMjYuNCAzMiAwIDU4LjQgMCA5MC45VjQyMWMwIDMyLjYgMjYuNCA1OSA1OC45IDU5SDM4OWMzMi42IDAgNTguOS0yNi40IDU4LjktNTguOVY5MC45QzQ0OCA1OC40IDQyMS42IDMyIDM4OS4xIDMyem0tMjAyLjYgODQuN2MwLTEwLjggOC43LTE5LjUgMTkuNS0xOS41aDQ1LjNjMTAuOCAwIDE5LjUgOC43IDE5LjUgMTkuNXYxNS40YzAgMS44LTEuNyAzLTMuMyAyLjUtMTIuMy0zLjQtMjUuMS01LjEtMzguMS01LjEtMTMuNSAwLTI2LjcgMS44LTM5LjQgNS41LTEuNy41LTMuNC0uOC0zLjQtMi41di0xNS44em0tODQuNCAzN2w5LjItOS4yYzcuNi03LjYgMTkuOS03LjYgMjcuNSAwbDcuNyA3LjdjMS4xIDEuMSAxIDMtLjMgNC02LjIgNC41LTEyLjEgOS40LTE3LjYgMTQuOS01LjQgNS40LTEwLjQgMTEuMy0xNC44IDE3LjQtMSAxLjMtMi45IDEuNS00IC4zbC03LjctNy43Yy03LjYtNy41LTcuNi0xOS44IDAtMjcuNHptMTI3LjIgMjQ0LjhjLTcwIDAtMTI2LjYtNTYuNy0xMjYuNi0xMjYuNnM1Ni43LTEyNi42IDEyNi42LTEyNi42YzcwIDAgMTI2LjYgNTYuNiAxMjYuNiAxMjYuNiAwIDY5LjgtNTYuNyAxMjYuNi0xMjYuNiAxMjYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpcGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3Ny43NCAzMkg3MC4yNkMzMS40MSAzMiAwIDYzLjQxIDAgMTAyLjI2djMwNy40OEMwIDQ0OC41OSAzMS40MSA0ODAgNzAuMjYgNDgwaDMwNy40OGMzOC41MiAwIDY5Ljc2LTMxLjA4IDcwLjI2LTY5LjYtNDUuOTYtMjUuNjItMTEwLjU5LTYwLjM0LTE3MS42LTg4LjQ0LTMyLjA3IDQzLjk3LTg0LjE0IDgxLTE0OC42MiA4MS03MC41OSAwLTkzLjczLTQ1LjMtOTcuMDQtNzYuMzctMy45Ny0zOS4wMSAxNC44OC04MS41IDk5LjUyLTgxLjUgMzUuMzggMCA3OS4zNSAxMC4yNSAxMjcuMTMgMjQuOTYgMTYuNTMtMzAuMDkgMjYuNDUtNjAuMzQgMjYuNDUtNjAuMzRoLTE3OC4ydi0xNi43aDkyLjA4di0zMS4yNEg4OC4yOHYtMTkuMDFoMTA5LjQ0VjkyLjM0aDUwLjkydjUwLjQyaDEwOS40NHYxOS4wMUgyNDguNjN2MzEuMjRoODguNzdzLTE1LjIxIDQ2LjYyLTM4LjM1IDkwLjkyYzQ4LjkzIDE2LjcgMTAwLjAxIDM2LjA0IDE0OC42MiA1Mi43NFYxMDIuMjZDNDQ3LjgzIDYzLjU3IDQxNi40MyAzMiAzNzcuNzQgMzJ6TTQ3LjI4IDMyMi45NWMuOTkgMjAuMTcgMTAuMjUgNTMuNzMgNjkuOTMgNTMuNzMgNTIuMDcgMCA5Mi41OC0zOS42OCAxMTcuODctNzIuOS00NC42My0xOC42OC04NC40OC0zMS40MS0xMDkuNDQtMzEuNDEtNjcuNDUgMC03OS4zNSAzMy4wNi03OC4zNiA1MC41OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW1hem9uUGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDMyNS4zYzIuMy00LjIgNS4yLTQuOSA5LjctMi41IDEwLjQgNS42IDIwLjYgMTEuNCAzMS4yIDE2LjdhNTk1Ljg4IDU5NS44OCAwIDAgMCAxMjcuNCA0Ni4zIDYxNi42MSA2MTYuNjEgMCAwIDAgNjMuMiAxMS44IDYwMy4zMyA2MDMuMzMgMCAwIDAgOTUgNS4yYzE3LjQtLjQgMzQuOC0xLjggNTIuMS0zLjhhNjAzLjY2IDYwMy42NiAwIDAgMCAxNjMuMy00Mi44YzIuOS0xLjIgNS45LTIgOS4xLTEuMiA2LjcgMS44IDkgOSA0LjEgMTMuOWE3MCA3MCAwIDAgMS05LjYgNy40Yy0zMC43IDIxLjEtNjQuMiAzNi40LTk5LjYgNDcuOWE0NzMuMzEgNDczLjMxIDAgMCAxLTc1LjEgMTcuNiA0MzEgNDMxIDAgMCAxLTUzLjIgNC44IDIxLjMgMjEuMyAwIDAgMC0yLjUuM0gzMDhhMjEuMyAyMS4zIDAgMCAwLTIuNS0uM2MtMy42LS4yLTcuMi0uMy0xMC43LS40YTQyNi4zIDQyNi4zIDAgMCAxLTUwLjQtNS4zQTQ0OC40IDQ0OC40IDAgMCAxIDE2NCA0MjBhNDQzLjMzIDQ0My4zMyAwIDAgMS0xNDUuNi04N2MtMS44LTEuNi0zLTMuOC00LjQtNS43ek0xNzIgNjUuMWwtNC4zLjZhODAuOTIgODAuOTIgMCAwIDAtMzggMTUuMWMtMi40IDEuNy00LjYgMy41LTcuMSA1LjRhNC4yOSA0LjI5IDAgMCAxLS40LTEuNGMtLjQtMi43LS44LTUuNS0xLjMtOC4yLS43LTQuNi0zLTYuNi03LjYtNi42aC0xMS41Yy02LjkgMC04LjIgMS4zLTguMiA4LjJ2MjA5LjNjMCAxIDAgMiAuMSAzIC4yIDMgMiA0LjkgNC45IDUgNyAuMSAxNC4xLjEgMjEuMSAwIDIuOSAwIDQuNy0yIDUtNSAuMS0xIC4xLTIgLjEtM3YtNzIuNGMxLjEuOSAxLjcgMS40IDIuMiAxLjkgMTcuOSAxNC45IDM4LjUgMTkuOCA2MSAxNS40IDIwLjQtNCAzNC42LTE2LjUgNDMuOC0zNC45IDctMTMuOSA5LjktMjguNyAxMC4zLTQ0LjEuNS0xNy4xLTEuMi0zMy45LTguMS00OS44LTguNS0xOS42LTIyLjYtMzIuNS00My45LTM2LjktMy4yLS43LTYuNS0xLTkuOC0xLjUtMi44LS4xLTUuNS0uMS04LjMtLjF6TTEyNC42IDEwN2EzLjQ4IDMuNDggMCAwIDEgMS43LTMuM2MxMy43LTkuNSAyOC44LTE0LjUgNDUuNi0xMy4yIDE0LjkgMS4xIDI3LjEgOC40IDMzLjUgMjUuOSAzLjkgMTAuNyA0LjkgMjEuOCA0LjkgMzMgMCAxMC40LS44IDIwLjYtNCAzMC42LTYuOCAyMS4zLTIyLjQgMjkuNC00Mi42IDI4LjUtMTQtLjYtMjYuMi02LTM3LjQtMTMuOWEzLjU3IDMuNTcgMCAwIDEtMS43LTMuM2MuMS0xNC4xIDAtMjguMSAwLTQyLjJzLjEtMjggMC00Mi4xem0yMDUuNy00MS45Yy0xIC4xLTIgLjMtMi45LjRhMTQ4IDE0OCAwIDAgMC0yOC45IDQuMWMtNi4xIDEuNi0xMiAzLjgtMTcuOSA1LjgtMy42IDEuMi01LjQgMy44LTUuMyA3LjcuMSAzLjMtLjEgNi42IDAgOS45LjEgNC44IDIuMSA2LjEgNi44IDQuOSA3LjgtMiAxNS42LTQuMiAyMy41LTUuNyAxMi4zLTIuMyAyNC43LTMuMyAzNy4yLTEuNCA2LjUgMSAxMi42IDIuOSAxNi44IDguNCAzLjcgNC44IDUuMSAxMC41IDUuMyAxNi40LjMgOC4zLjIgMTYuNi4zIDI0LjlhNy44NCA3Ljg0IDAgMCAxLS4yIDEuNGMtLjUtLjEtLjkgMC0xLjMtLjFhMTgwLjU2IDE4MC41NiAwIDAgMC0zMi00LjljLTExLjMtLjYtMjIuNS4xLTMzLjMgMy45LTEyLjkgNC41LTIzLjMgMTIuMy0yOS40IDI0LjktNC43IDkuOC01LjQgMjAuMi0zLjkgMzAuNyAyIDE0IDkgMjQuOCAyMS40IDMxLjcgMTEuOSA2LjYgMjQuOCA3LjQgMzcuOSA1LjQgMTUuMS0yLjMgMjguNS04LjcgNDAuMy0xOC40YTcuMzYgNy4zNiAwIDAgMSAxLjYtMS4xYy42IDMuOCAxLjEgNy40IDEuOCAxMSAuNiAzLjEgMi41IDUuMSA1LjQgNS4yIDUuNC4xIDEwLjkuMSAxNi4zIDBhNC44NCA0Ljg0IDAgMCAwIDQuOC00LjcgMjYuMiAyNi4yIDAgMCAwIC4xLTIuOHYtMTA2YTgwIDgwIDAgMCAwLS45LTEyLjljLTEuOS0xMi45LTcuNC0yMy41LTE5LTMwLjQtNi43LTQtMTQuMS02LTIxLjgtNy4xLTMuNi0uNS03LjItLjgtMTAuOC0xLjMtMy45LjEtNy45LjEtMTEuOS4xem0zNSAxMjcuN2EzLjMzIDMuMzMgMCAwIDEtMS41IDNjLTExLjIgOC4xLTIzLjUgMTMuNS0zNy40IDE0LjktNS43LjYtMTEuNC40LTE2LjgtMS44YTIwLjA4IDIwLjA4IDAgMCAxLTEyLjQtMTMuMyAzMi45IDMyLjkgMCAwIDEtLjEtMTkuNGMyLjUtOC4zIDguNC0xMyAxNi40LTE1LjZhNjEuMzMgNjEuMzMgMCAwIDEgMjQuOC0yLjJjOC40LjcgMTYuNiAyLjMgMjUgMy40IDEuNi4yIDIuMSAxIDIuMSAyLjYtLjEgNC44IDAgOS41IDAgMTQuM3MtLjIgOS40LS4xIDE0LjF6bTI1OS45IDEyOS40Yy0xLTUtNC44LTYuOS05LjEtOC4zYTg4LjQyIDg4LjQyIDAgMCAwLTIxLTMuOSAxNDcuMzIgMTQ3LjMyIDAgMCAwLTM5LjIgMS45Yy0xNC4zIDIuNy0yNy45IDcuMy00MCAxNS42YTEzLjc1IDEzLjc1IDAgMCAwLTMuNyAzLjUgNS4xMSA1LjExIDAgMCAwLS41IDRjLjQgMS41IDIuMSAxLjkgMy42IDEuOGExNi4yIDE2LjIgMCAwIDAgMi4yLS4xYzcuOC0uOCAxNS41LTEuNyAyMy4zLTIuNSAxMS40LTEuMSAyMi45LTEuOCAzNC4zLS45YTcxLjY0IDcxLjY0IDAgMCAxIDE0LjQgMi43YzUuMSAxLjQgNy40IDUuMiA3LjYgMTAuNC40IDgtMS40IDE1LjctMy41IDIzLjMtNC4xIDE1LjQtMTAgMzAuMy0xNS44IDQ1LjFhMTcuNiAxNy42IDAgMCAwLTEgM2MtLjUgMi45IDEuMiA0LjggNC4xIDQuMWExMC41NiAxMC41NiAwIDAgMCA0LjgtMi41IDE0NS45MSAxNDUuOTEgMCAwIDAgMTIuNy0xMy40YzEyLjgtMTYuNCAyMC4zLTM1LjMgMjQuNy01NS42LjgtMy42IDEuNC03LjMgMi4xLTEwLjl2LTE3LjN6TTQ5My4xIDE5OXEtMTkuMzUtNTMuNTUtMzguNy0xMDcuMmMtMi01LjctNC4yLTExLjMtNi4zLTE2LjktMS4xLTIuOS0zLjItNC44LTYuNC00LjgtNy42LS4xLTE1LjItLjItMjIuOS0uMS0yLjUgMC0zLjcgMi0zLjIgNC41YTQzLjEgNDMuMSAwIDAgMCAxLjkgNi4xcTI5LjQgNzIuNzUgNTkuMSAxNDUuNWMxLjcgNC4xIDIuMSA3LjYuMiAxMS44LTMuMyA3LjMtNS45IDE1LTkuMyAyMi4zLTMgNi41LTggMTEuNC0xNS4yIDEzLjNhNDIuMTMgNDIuMTMgMCAwIDEtMTUuNCAxLjFjLTIuNS0uMi01LS44LTcuNS0xLTMuNC0uMi01LjEgMS4zLTUuMiA0LjhxLS4xNSA1IDAgOS45Yy4xIDUuNSAyIDggNy40IDguOWExMDguMTggMTA4LjE4IDAgMCAwIDE2LjkgMmMxNy4xLjQgMzAuNy02LjUgMzkuNS0yMS40YTEzMS42MyAxMzEuNjMgMCAwIDAgOS4yLTE4LjRxMzUuNTUtODkuNyA3MC42LTE3OS42YTI2LjYyIDI2LjYyIDAgMCAwIDEuNi01LjVjLjQtMi44LS45LTQuNC0zLjctNC40LTYuNi0uMS0xMy4zIDAtMTkuOSAwYTcuNTQgNy41NCAwIDAgMC03LjcgNS4yYy0uNSAxLjQtMS4xIDIuNy0xLjYgNC4xbC0zNC44IDEwMGMtMi41IDcuMi01LjEgMTQuNS03LjcgMjIuMi0uNC0xLjEtLjYtMS43LS45LTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW1hem9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ny4yIDE2Mi43Yy00OC43IDEuOC0xNjkuNSAxNS41LTE2OS41IDExNy41IDAgMTA5LjUgMTM4LjMgMTE0IDE4My41IDQzLjIgNi41IDEwLjIgMzUuNCAzNy41IDQ1LjMgNDYuOGw1Ni44LTU2UzM0MSAyODguOSAzNDEgMjYxLjRWMTE0LjNDMzQxIDg5IDMxNi41IDMyIDIyOC43IDMyIDE0MC43IDMyIDk0IDg3IDk0IDEzNi4zbDczLjUgNi44YzE2LjMtNDkuNSA1NC4yLTQ5LjUgNTQuMi00OS41IDQwLjctLjEgMzUuNSAyOS44IDM1LjUgNjkuMXptMCA4Ni44YzAgODAtODQuMiA2OC04NC4yIDE3LjIgMC00Ny4yIDUwLjUtNTYuNyA4NC4yLTU3Ljh2NDAuNnptMTM2IDE2My41Yy03LjcgMTAtNzAgNjctMTc0LjUgNjdTMzQuMiA0MDguNSA5LjcgMzc5Yy02LjgtNy43IDEtMTEuMyA1LjUtOC4zQzg4LjUgNDE1LjIgMjAzIDQ4OC41IDM4Ny43IDQwMWM3LjUtMy43IDEzLjMgMiA1LjUgMTJ6bTM5LjggMi4yYy02LjUgMTUuOC0xNiAyNi44LTIxLjIgMzEtNS41IDQuNS05LjUgMi43LTYuNS0zLjhzMTkuMy00Ni41IDEyLjctNTVjLTYuNS04LjMtMzctNC4zLTQ4LTMuMi0xMC44IDEtMTMgMi0xNC0uMy0yLjMtNS43IDIxLjctMTUuNSAzNy41LTE3LjUgMTUuNy0xLjggNDEtLjggNDYgNS43IDMuNyA1LjEgMCAyNy4xLTYuNSA0My4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbWlsaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwLjEgMzJjLTYxLjkgMC0xMzEuNSAxNi45LTE4NC4yIDU1LjQtNS4xIDMuMS05LjEgOS4yLTcuMiAxOS40IDEuMSA1LjEgNS4xIDI3LjQgMTAuMiAzOS42IDQuMSAxMC4yIDE0LjIgMTAuMiAyMC4zIDYuMSAzMi41LTIyLjMgOTYuNS00Ny43IDE1Mi4zLTQ3LjcgNTcuOSAwIDU4LjkgMjguNCA1OC45IDczLjF2MzguNUMyMDMgMjI3LjcgNzguMiAyNTEgNDYuNyAyNjQuMiAxMS4yIDI4MC41IDE2LjMgMzU3LjcgMTYuMyAzNzZzMTUuMiAxMDQgMTI0LjkgMTA0YzQ3LjggMCAxMTMuNy0yMC43IDE1My4zLTQyLjF2MjUuNGMwIDMgMi4xIDguMiA2LjEgOS4xIDMuMSAxIDUwLjcgMiA1OS45IDJzNjIuNS4zIDY2LjUtLjdjNC4xLTEgNS4xLTYuMSA1LjEtOS4xVjE2OGMtLjEtODAuMy01Ny45LTEzNi0xOTItMTM2em01MC4yIDM0OGMtMjEuNCAxMy4yLTQ4LjcgMjQuNC03OS4xIDI0LjQtNTIuOCAwLTU4LjktMzMuNS01OS00NC43IDAtMTIuMi0zLTQyLjcgMTguMy01Mi45IDI0LjMtMTMuMiA3NS4xLTI5LjQgMTE5LjgtMzMuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5kcm9pZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjAuNTUsMzAxLjkzYTI0LDI0LDAsMSwxLDI0LTI0LDI0LDI0LDAsMCwxLTI0LDI0bS0yNjUuMSwwYTI0LDI0LDAsMSwxLDI0LTI0LDI0LDI0LDAsMCwxLTI0LDI0bTI3My43LTE0NC40OCw0Ny45NC04M2ExMCwxMCwwLDEsMC0xNy4yNy0xMGgwbC00OC41NCw4NC4wN2EzMDEuMjUsMzAxLjI1LDAsMCwwLTI0Ni41NiwwTDExNi4xOCw2NC40NWExMCwxMCwwLDEsMC0xNy4yNywxMGgwbDQ3Ljk0LDgzQzY0LjUzLDIwMi4yMiw4LjI0LDI4NS41NSwwLDM4NEg1NzZjLTguMjQtOTguNDUtNjQuNTQtMTgxLjc4LTE0Ni44NS0yMjYuNTVcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nZWxsaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0Ny4xIDIxNS40YzExLjctMzIuNiA0NS40LTEyNi45IDQ1LjQtMTU3LjEgMC0yNi42LTE1LjctNDguOS00My43LTQ4LjktNDQuNiAwLTg0LjYgMTMxLjctOTcuMSAxNjMuMUMyNDIgMTQ0IDE5Ni42IDAgMTU2LjYgMGMtMzEuMSAwLTQ1LjcgMjIuOS00NS43IDUxLjcgMCAzNS4zIDM0LjIgMTI2LjggNDYuNiAxNjItNi4zLTIuMy0xMy4xLTQuMy0yMC00LjMtMjMuNCAwLTQ4LjMgMjkuMS00OC4zIDUyLjYgMCA4LjkgNC45IDIxLjQgOCAyOS43LTM2LjkgMTAtNTEuMSAzNC42LTUxLjEgNzEuN0M0NiA0MzUuNiAxMTQuNCA1MTIgMjEwLjYgNTEyYzExOCAwIDE5MS40LTg4LjYgMTkxLjQtMjAyLjkgMC00My4xLTYuOS04Mi01NC45LTkzLjd6TTMxMS43IDEwOGM0LTEyLjMgMjEuMS02NC4zIDM3LjEtNjQuMyA4LjYgMCAxMC45IDguOSAxMC45IDE2IDAgMTkuMS0zOC42IDEyNC42LTQ3LjEgMTQ4bC0zNC02IDMzLjEtOTMuN3pNMTQyLjMgNDguM2MwLTExLjkgMTQuNS00NS43IDQ2LjMgNDcuMWwzNC42IDEwMC4zYy0xNS42LTEuMy0yNy43LTMtMzUuNCAxLjQtMTAuOS0yOC44LTQ1LjUtMTE5LjctNDUuNS0xNDguOHpNMTQwIDI0NGMyOS4zIDAgNjcuMSA5NC42IDY3LjEgMTA3LjQgMCA1LjEtNC45IDExLjQtMTAuNiAxMS40LTIwLjkgMC03Ni45LTc2LjktNzYuOS05Ny43LjEtNy43IDEyLjctMjEuMSAyMC40LTIxLjF6bTE4NC4zIDE4Ni4zYy0yOS4xIDMyLTY2LjMgNDguNi0xMDkuNyA0OC42LTU5LjQgMC0xMDYuMy0zMi42LTEyOC45LTg4LjMtMTcuMS00My40IDMuOC02OC4zIDIwLjYtNjguMyAxMS40IDAgNTQuMyA2MC4zIDU0LjMgNzMuMSAwIDQuOS03LjcgOC4zLTExLjcgOC4zLTE2LjEgMC0yMi40LTE1LjUtNTEuMS01MS40LTI5LjcgMjkuNyAyMC41IDg2LjkgNTguMyA4Ni45IDI2LjEgMCA0My4xLTI0LjIgMzgtNDIgMy43IDAgOC4zLjMgMTEuNy0uNiAxLjEgMjcuMSA5LjEgNTkuNCA0MS43IDYxLjcgMC0uOSAyLTcuMSAyLTcuNCAwLTE3LjQtMTAuNi0zMi42LTEwLjYtNTAuMyAwLTI4LjMgMjEuNy01NS43IDQzLjctNzEuNyA4LTYgMTcuNy05LjcgMjcuMS0xMy4xIDkuNy0zLjcgMjAtOCAyNy40LTE1LjQtMS4xLTExLjItNS43LTIxLjEtMTYuOS0yMS4xLTI3LjcgMC0xMjAuNiA0LTEyMC42LTM5LjcgMC02LjcuMS0xMy4xIDE3LjQtMTMuMSAzMi4zIDAgMTE0LjMgOCAxMzguMyAyOS4xIDE4LjEgMTYuMSAyNC4zIDExMy4yLTMxIDE3NC43em0tOTguNi0xMjZjOS43IDMuMSAxOS43IDQgMjkuNyA2LTcuNCA1LjQtMTQgMTItMjAuMyAxOS4xLTIuOC04LjUtNi4yLTE2LjgtOS40LTI1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ3J5Y3JlYXRpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQwIDIzOC4ybC0zLjIgMjguMi0zNC41IDIuMy0yIDE4LjEgMzQuNS0yLjMtMy4yIDI4LjItMzQuNCAyLjItMi4zIDIwLjEgMzQuNC0yLjItMyAyNi4xLTY0LjcgNC4xIDEyLjctMTEzLjJMNTI3IDM2NS4ybC0zMS45IDItMjMuOC0xMTcuOCAzMC4zLTIgMTMuNiA3OS40IDMxLjctODIuNCA5My4xLTYuMnpNNDI2LjggMzcxLjVsMjguMy0xLjhMNDY4IDI0OS42bC0yOC40IDEuOS0xMi44IDEyMHpNMTYyIDM4OC4xbC0xOS40LTM2LTMuNSAzNy40LTI4LjIgMS43IDIuNy0yOS4xYy0xMSAxOC0zMiAzNC4zLTU2LjkgMzUuOEMyMy45IDM5OS45LTMgMzc3IC4zIDMzOS43YzIuNi0yOS4zIDI2LjctNjIuOCA2Ny41LTY1LjQgMzcuNy0yLjQgNDcuNiAyMy4yIDUxLjMgMjguOGwyLjgtMzAuOCAzOC45LTIuNWMyMC4xLTEuMyAzOC43IDMuNyA0Mi41IDIzLjdsMi42LTI2LjYgNjQuOC00LjItMi43IDI3LjktMzYuNCAyLjQtMS43IDE3LjkgMzYuNC0yLjMtMi43IDI3LjktMzYuNCAyLjMtMS45IDE5LjkgMzYuMy0yLjMtMi4xIDIwLjggNTUtMTE3LjIgMjMuOC0xLjZMMzcwLjQgMzY5bDguOS04NS42LTIyLjMgMS40IDIuOS0yNy45IDc1LTQuOS0zIDI4LTI0LjMgMS42LTkuNyA5MS45LTU4IDMuNy00LjMtMTUuNi0zOS40IDIuNS04IDE2LjMtMTI2LjIgNy43em0tNDQuMy03MC4ybC0yNi40IDEuN0M4NC42IDMwNy4yIDc2LjkgMzAzIDY1IDMwMy44Yy0xOSAxLjItMzMuMyAxNy41LTM0LjYgMzMuMy0xLjQgMTYgNy4zIDMyLjUgMjguNyAzMS4yIDEyLjgtLjggMjEuMy04LjYgMjguOS0xOC45bDI3LTEuNyAyLjctMjkuOHptNTYuMS03LjdjMS4yLTEyLjktNy42LTEzLjYtMjYuMS0xMi40bC0yLjcgMjguNWMxNC4yLS45IDI3LjUtMi4xIDI4LjgtMTYuMXptMjEuMSA3MC44bDUuOC02MGMtNSAxMy41LTE0LjcgMjEuMS0yNy45IDI2LjZsMjIuMSAzMy40em0xMzUuNC00NWwtNy45LTM3LjgtMTUuOCAzOS4zIDIzLjctMS41em0tMTcwLjEtNzQuNmwtNC4zLTE3LjUtMzkuNiAyLjYtOC4xIDE4LjItMzEuOSAyLjEgNTctMTIxLjkgMjMuOS0xLjYgMzAuNyAxMDIgOS45LTEwNC43IDI3LTEuOCAzNy44IDYzLjYgNi41LTY2LjYgMjguNS0xLjktNCA0MS4yYzcuNC0xMy41IDIyLjktNDQuNyA2My42LTQ3LjUgNDAuNS0yLjggNTIuNCAyOS4zIDUzLjQgMzAuM2wzLjMtMzIgMzkuMy0yLjdjMTIuNy0uOSAyNy44LjMgMzYuMyA5LjdsLTQuNC0xMS45IDMyLjItMi4yIDEyLjkgNDMuMiAyMy00NS43IDMxLTIuMi00My42IDc4LjQtNC44IDQ0LjMtMjguNCAxLjkgNC44LTQ0LjMtMTUuOC00M2MxIDIyLjMtOS4yIDQwLjEtMzIgNDkuNmwyNS4yIDM4LjgtMzYuNCAyLjQtMTkuMi0zNi44LTQgMzguMy0yOC40IDEuOSAzLjMtMzEuNWMtNi43IDkuMy0xOS43IDM1LjQtNTkuNiAzOC0yNi4yIDEuNy00NS42LTEwLjMtNTUuNC0zOS4ybC00IDQwLjMtMjUgMS42LTM3LjYtNjMuMy02LjMgNjYuMi01Ni44IDMuN3ptMjc2LjYtODIuMWMxMC4yLS43IDE3LjUtMi4xIDIxLjYtNC4zIDQuNS0yLjQgNy02LjQgNy42LTEyLjEuNi01LjMtLjYtOC44LTMuNC0xMC40LTMuNi0yLjEtMTAuNi0yLjgtMjIuOS0ybC0yLjkgMjguOHpNMzI3LjcgMjE0YzUuNiA1LjkgMTIuNyA4LjUgMjEuMyA3LjkgNC43LS4zIDkuMS0xLjggMTMuMy00LjEgNS41LTMgMTAuNi04IDE1LjEtMTQuM2wtMzQuMiAyLjMgMi40LTIzLjkgNjMuMS00LjMgMS4yLTEyLTMxLjIgMi4xYy00LjEtMy43LTcuOC02LjYtMTEuMS04LjEtNC0xLjctOC4xLTIuOC0xMi4yLTIuNS04IC41LTE1LjMgMy42LTIyIDkuMi03LjcgNi40LTEyIDE0LjUtMTIuOSAyNC40LTEuMSA5LjYgMS40IDE3LjMgNy4yIDIzLjN6bS0yMDEuMyA4LjJsMjMuOC0xLjYtOC4zLTM3LjYtMTUuNSAzOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmd1bGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4NS43IDI2OC4xaDc2LjJsLTM4LjEtOTEuNi0zOC4xIDkxLjZ6TTIyMy44IDMyTDE2IDEwNi40bDMxLjggMjc1LjcgMTc2IDk3LjkgMTc2LTk3LjkgMzEuOC0yNzUuN3pNMzU0IDM3My44aC00OC42bC0yNi4yLTY1LjRIMTY4LjZsLTI2LjIgNjUuNEg5My43TDIyMy44IDgxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFwcFN0b3JlSW9zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTEyNyAzODQuNWMtNS41IDkuNi0xNy44IDEyLjgtMjcuMyA3LjMtOS42LTUuNS0xMi44LTE3LjgtNy4zLTI3LjNsMTQuMy0yNC43YzE2LjEtNC45IDI5LjMtMS4xIDM5LjYgMTEuNEwxMjcgMzg0LjV6bTEzOC45LTUzLjlIODRjLTExIDAtMjAtOS0yMC0yMHM5LTIwIDIwLTIwaDUxbDY1LjQtMTEzLjItMjAuNS0zNS40Yy01LjUtOS42LTIuMi0yMS44IDcuMy0yNy4zIDkuNi01LjUgMjEuOC0yLjIgMjcuMyA3LjNsOC45IDE1LjQgOC45LTE1LjRjNS41LTkuNiAxNy44LTEyLjggMjcuMy03LjMgOS42IDUuNSAxMi44IDE3LjggNy4zIDI3LjNsLTg1LjggMTQ4LjZoNjIuMWMyMC4yIDAgMzEuNSAyMy43IDIyLjcgNDB6bTk4LjEgMGgtMjlsMTkuNiAzMy45YzUuNSA5LjYgMi4yIDIxLjgtNy4zIDI3LjMtOS42IDUuNS0yMS44IDIuMi0yNy4zLTcuMy0zMi45LTU2LjktNTcuNS05OS43LTc0LTEyOC4xLTE2LjctMjktNC44LTU4IDcuMS02Ny44IDEzLjEgMjIuNyAzMi43IDU2LjcgNTguOSAxMDJoNTJjMTEgMCAyMCA5IDIwIDIwIDAgMTEuMS05IDIwLTIwIDIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBTdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTUuOSAxMjAuOWw5LjEtMTUuN2M1LjYtOS44IDE4LjEtMTMuMSAyNy45LTcuNSA5LjggNS42IDEzLjEgMTguMSA3LjUgMjcuOWwtODcuNSAxNTEuNWg2My4zYzIwLjUgMCAzMiAyNC4xIDIzLjEgNDAuOEgxMTMuOGMtMTEuMyAwLTIwLjQtOS4xLTIwLjQtMjAuNCAwLTExLjMgOS4xLTIwLjQgMjAuNC0yMC40aDUybDY2LjYtMTE1LjQtMjAuOC0zNi4xYy01LjYtOS44LTIuMy0yMi4yIDcuNS0yNy45IDkuOC01LjYgMjIuMi0yLjMgMjcuOSA3LjVsOC45IDE1Ljd6bS03OC43IDIxOGwtMTkuNiAzNGMtNS42IDkuOC0xOC4xIDEzLjEtMjcuOSA3LjUtOS44LTUuNi0xMy4xLTE4LjEtNy41LTI3LjlsMTQuNi0yNS4yYzE2LjQtNS4xIDI5LjgtMS4yIDQwLjQgMTEuNnptMTY4LjktNjEuN2g1My4xYzExLjMgMCAyMC40IDkuMSAyMC40IDIwLjQgMCAxMS4zLTkuMSAyMC40LTIwLjQgMjAuNGgtMjkuNWwxOS45IDM0LjVjNS42IDkuOCAyLjMgMjIuMi03LjUgMjcuOS05LjggNS42LTIyLjIgMi4zLTI3LjktNy41LTMzLjUtNTguMS01OC43LTEwMS42LTc1LjQtMTMwLjYtMTcuMS0yOS41LTQuOS01OS4xIDcuMi02OS4xIDEzLjQgMjMgMzMuNCA1Ny43IDYwLjEgMTA0ek0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0yMTYgMjQ4YzAgMTE4LjctOTYuMSAyMTYtMjE2IDIxNi0xMTguNyAwLTIxNi05Ni4xLTIxNi0yMTYgMC0xMTguNyA5Ni4xLTIxNiAyMTYtMjE2IDExOC43IDAgMjE2IDk2LjEgMjE2IDIxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXBwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIuMSAyMzkuMWMyMi4yIDAgMjkgMi44IDMzLjUgMTQuNmguOHYtMjIuOWMwLTExLjMtNC44LTE1LjQtMTcuOS0xNS40LTExLjMgMC0xNC40IDIuNS0xNS4xIDEyLjhINC44Yy4zLTEzLjkgMS41LTE5LjEgNS44LTI0LjRDMTcuOSAxOTUgMjkuNSAxOTIgNTYuNyAxOTJjMzMgMCA0Ny4xIDUgNTMuOSAxOC45IDIgNC4zIDQgMTUuNiA0IDIzLjd2NzYuM0g3Ni4zbDEuMy0xOS4xaC0xYy01LjMgMTUuNi0xMy42IDIwLjQtMzUuNSAyMC40LTMwLjMgMC00MS4xLTEwLjEtNDEuMS0zNy4zIDAtMjUuMiAxMi4zLTM1LjggNDIuMS0zNS44em0xNy4xIDQ4LjFjMTMuMSAwIDE2LjktMyAxNi45LTEzLjQgMC05LjEtNC4zLTExLjYtMTkuNi0xMS42LTEzLjEgMC0xNy45IDMtMTcuOSAxMi4xLS4xIDEwLjQgMy43IDEyLjkgMjAuNiAxMi45em03Ny44LTk0LjloMzguM2wtMS41IDIwLjZoLjhjOS4xLTE3LjEgMTUuOS0yMC45IDM3LjUtMjAuOSAxNC40IDAgMjQuNyAzIDMxLjUgOS4xIDkuOCA4LjYgMTIuOCAyMC40IDEyLjggNDguMSAwIDMwLTMgNDMuMS0xMi4xIDUyLjktNi44IDcuMy0xNi40IDEwLjEtMzMuMiAxMC4xLTIwLjQgMC0yOS4yLTUuNS0zMy44LTIxLjJoLS44djcwLjNIMTM3di0xNjl6bTgwLjkgNjAuN2MwLTI3LjUtMy4zLTMyLjUtMjAuNy0zMi41LTE2LjkgMC0yMC43IDUtMjAuNyAyOC43IDAgMjggMy41IDMzLjUgMjEuMiAzMy41IDE2LjQgMCAyMC4yLTUuNiAyMC4yLTI5Ljd6bTU3LjktNjAuN2gzOC4zbC0xLjUgMjAuNmguOGM5LjEtMTcuMSAxNS45LTIwLjkgMzcuNS0yMC45IDE0LjQgMCAyNC43IDMgMzEuNSA5LjEgOS44IDguNiAxMi44IDIwLjQgMTIuOCA0OC4xIDAgMzAtMyA0My4xLTEyLjEgNTIuOS02LjggNy4zLTE2LjQgMTAuMS0zMy4zIDEwLjEtMjAuNCAwLTI5LjItNS41LTMzLjgtMjEuMmgtLjh2NzAuM2gtMzkuNXYtMTY5em04MC45IDYwLjdjMC0yNy41LTMuMy0zMi41LTIwLjctMzIuNS0xNi45IDAtMjAuNyA1LTIwLjcgMjguNyAwIDI4IDMuNSAzMy41IDIxLjIgMzMuNSAxNi40IDAgMjAuMi01LjYgMjAuMi0yOS43em01My44LTMuOGMwLTI1LjQgMy4zLTM3LjggMTIuMy00NS44IDguOC04LjEgMjIuMi0xMS4zIDQ1LjEtMTEuMyA0Mi44IDAgNTUuNyAxMi44IDU1LjcgNTUuN3YxMS4xaC03NS4zYy0uMyAyLS4zIDQtLjMgNC44IDAgMTYuOSA0LjUgMjEuOSAyMC4xIDIxLjkgMTMuOSAwIDE3LjktMyAxNy45LTEzLjloMzcuNXYyLjNjMCA5LjgtMi41IDE4LjktNi44IDI0LjctNy4zIDkuOC0xOS42IDEzLjYtNDQuMyAxMy42LTI3LjUgMC00MS42LTMuMy01MC42LTEyLjMtOC41LTguNS0xMS4zLTIxLjMtMTEuMy01MC44em03Ni40LTExLjZjLS4zLTEuOC0uMy0zLjMtLjMtMy44IDAtMTIuMy0zLjMtMTQuNi0xOS42LTE0LjYtMTQuNCAwLTE3LjEgMy0xOC4xIDE1LjFsLS4zIDMuM2gzOC4zem01NS42LTQ1LjNoMzguM2wtMS44IDE5LjloLjdjNi44LTE0LjkgMTQuNC0yMC4yIDI5LjctMjAuMiAxMC44IDAgMTkuMSAzLjMgMjMuNCA5LjMgNS4zIDcuMyA2LjggMTQuNCA2LjggMzQgMCAxLjUgMCA1IC4yIDkuM2gtMzVjLjMtMS44LjMtMy4zLjMtNCAwLTE1LjQtMi0xOS40LTEwLjMtMTkuNC02LjMgMC0xMC44IDMuMy0xMy4xIDkuMy0xIDMtMSA0LjMtMSAxMi4zdjY4aC0zOC4zVjE5Mi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBsZVBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTYuOSAxNTguNWMtNy41IDguOS0xOS41IDE1LjktMzEuNSAxNC45LTEuNS0xMiA0LjQtMjQuOCAxMS4zLTMyLjYgNy41LTkuMSAyMC42LTE1LjYgMzEuMy0xNi4xIDEuMiAxMi40LTMuNyAyNC43LTExLjEgMzMuOG0xMC45IDE3LjJjLTE3LjQtMS0zMi4zIDkuOS00MC41IDkuOS04LjQgMC0yMS05LjQtMzQuOC05LjEtMTcuOS4zLTM0LjUgMTAuNC00My42IDI2LjUtMTguOCAzMi4zLTQuOSA4MCAxMy4zIDEwNi4zIDguOSAxMyAxOS41IDI3LjMgMzMuNSAyNi44IDEzLjMtLjUgMTguNS04LjYgMzQuNS04LjYgMTYuMSAwIDIwLjggOC42IDM0LjggOC40IDE0LjUtLjMgMjMuNi0xMyAzMi41LTI2IDEwLjEtMTQuOCAxNC4zLTI5LjEgMTQuNS0yOS45LS4zLS4zLTI4LTEwLjktMjguMy00Mi45LS4zLTI2LjggMjEuOS0zOS41IDIyLjktNDAuMy0xMi41LTE4LjYtMzItMjAuNi0zOC44LTIxLjFtMTAwLjQtMzYuMnYxOTQuOWgzMC4zdi02Ni42aDQxLjljMzguMyAwIDY1LjEtMjYuMyA2NS4xLTY0LjNzLTI2LjQtNjQtNjQuMS02NGgtNzMuMnptMzAuMyAyNS41aDM0LjljMjYuMyAwIDQxLjMgMTQgNDEuMyAzOC42cy0xNSAzOC44LTQxLjQgMzguOGgtMzQuOFYxNjV6bTE2Mi4yIDE3MC45YzE5IDAgMzYuNi05LjYgNDQuNi0yNC45aC42djIzLjRoMjh2LTk3YzAtMjguMS0yMi41LTQ2LjMtNTcuMS00Ni4zLTMyLjEgMC01NS45IDE4LjQtNTYuOCA0My42aDI3LjNjMi4zLTEyIDEzLjQtMTkuOSAyOC42LTE5LjkgMTguNSAwIDI4LjkgOC42IDI4LjkgMjQuNXYxMC44bC0zNy44IDIuM2MtMzUuMSAyLjEtNTQuMSAxNi41LTU0LjEgNDEuNS4xIDI1LjIgMTkuNyA0MiA0Ny44IDQyem04LjItMjMuMWMtMTYuMSAwLTI2LjQtNy44LTI2LjQtMTkuNiAwLTEyLjMgOS45LTE5LjQgMjguOC0yMC41bDMzLjYtMi4xdjExYzAgMTguMi0xNS41IDMxLjItMzYgMzEuMnptMTAyLjUgNzQuNmMyOS41IDAgNDMuNC0xMS4zIDU1LjUtNDUuNEw2NDAgMTkzaC0zMC44bC0zNS42IDExNS4xaC0uNkw1MzcuNCAxOTNoLTMxLjZMNTU3IDMzNC45bC0yLjggOC42Yy00LjYgMTQuNi0xMi4xIDIwLjMtMjUuNSAyMC4zLTIuNCAwLTctLjMtOC45LS41djIzLjRjMS44LjQgOS4zLjcgMTEuNi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguNyAyNjguN2MtLjItMzYuNyAxNi40LTY0LjQgNTAtODQuOC0xOC44LTI2LjktNDcuMi00MS43LTg0LjctNDQuNi0zNS41LTIuOC03NC4zIDIwLjctODguNSAyMC43LTE1IDAtNDkuNC0xOS43LTc2LjQtMTkuN0M2My4zIDE0MS4yIDQgMTg0LjggNCAyNzMuNXEwIDM5LjMgMTQuNCA4MS4yYzEyLjggMzYuNyA1OSAxMjYuNyAxMDcuMiAxMjUuMiAyNS4yLS42IDQzLTE3LjkgNzUuOC0xNy45IDMxLjggMCA0OC4zIDE3LjkgNzYuNCAxNy45IDQ4LjYtLjcgOTAuNC04Mi41IDEwMi42LTExOS4zLTY1LjItMzAuNy02MS43LTkwLTYxLjctOTEuOXptLTU2LjYtMTY0LjJjMjcuMy0zMi40IDI0LjgtNjEuOSAyNC03Mi41LTI0LjEgMS40LTUyIDE2LjQtNjcuOSAzNC45LTE3LjUgMTkuOC0yNy44IDQ0LjMtMjUuNiA3MS45IDI2LjEgMiA0OS45LTExLjQgNjkuNS0zNC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnRzdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMzc3LjRsNDMgNzQuM0E1MS4zNSA1MS4zNSAwIDAgMCA5MC45IDQ4MGgyODUuNGwtNTkuMi0xMDIuNnpNNTAxLjggMzUwTDMzNS42IDU5LjNBNTEuMzggNTEuMzggMCAwIDAgMjkwLjIgMzJoLTg4LjRsMjU3LjMgNDQ3LjYgNDAuNy03MC41YzEuOS0zLjIgMjEtMjkuNyAyLTU5LjF6TTI3NSAzMDQuNWwtMTE1LjUtMjAwTDQ0IDMwNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBc3ltbWV0cmlrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxNy41IDMwOS4yYzM4LjgtNDAgNTguMS04MCA1OC41LTExNi4xLjgtNjUuNS01OS40LTExOC4yLTE2OS40LTEzNUMyNzcuOSAzOC40IDExOC4xIDczLjYgMCAxNDAuNSA1MiAxMTQgMTEwLjYgOTIuMyAxNzAuNyA4Mi4zYzc0LjUtMjAuNSAxNTMtMjUuNCAyMjEuMy0xNC44QzU0NC41IDkxLjMgNTg4LjggMTk1IDQ5MC44IDI5OS4yYy0xMC4yIDEwLjgtMjIgMjEuMS0zNSAzMC42TDMwNC45IDEwMy40IDExNC43IDM4OC45Yy02NS42LTI5LjQtNzYuNS05MC4yLTE5LjEtMTUxLjIgMjAuOC0yMi4yIDQ4LjMtNDEuOSA3OS41LTU4LjEgMjAtMTIuMiAzOS43LTIyLjYgNjItMzAuNy02NS4xIDIwLjMtMTIyLjcgNTIuOS0xNjEuNiA5Mi45LTI3LjcgMjguNi00MS40IDU3LjEtNDEuNyA4Mi45LS41IDM1LjEgMjMuNCA2NS4xIDY4LjQgODNsLTM0LjUgNTEuN2gxMDEuNmwyMi0zNC40YzIyLjIgMSA0NS4zIDAgNjguNi0yLjdsLTIyLjggMzcuMWgxMzUuNUwzNDAgNDA2LjNjMTguNi01LjMgMzYuOS0xMS41IDU0LjUtMTguN2w0NS45IDcxLjhINTQyTDQ2OC42IDM0OWMxOC41LTEyLjEgMzUtMjUuNSA0OC45LTM5Ljh6bS0xODcuNiA4MC41bC0yNS00MC42LTMyLjcgNTMuM2MtMjMuNCAzLjUtNDYuNyA1LjEtNjkuMiA0LjRsMTAxLjktMTU5LjMgNzguNyAxMjNjLTE3LjIgNy40LTM1LjMgMTMuOS01My43IDE5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF0bGFzc2lhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTIuMiAyMzYuNGMtNy43LTguMi0xOS43LTcuNy0yNC44IDIuOEwxLjYgNDkwLjJjLTUgMTAgMi40IDIxLjcgMTMuNCAyMS43aDE3NWM1LjguMSAxMS0zLjIgMTMuNC04LjQgMzcuOS03Ny44IDE1LjEtMTk2LjMtNTEuMi0yNjcuMXpNMjQ0LjQgOC4xYy0xMjIuMyAxOTMuNC04LjUgMzQ4LjYgNjUgNDk1LjUgMi41IDUuMSA3LjcgOC40IDEzLjQgOC40SDQ5N2MxMS4yIDAgMTguNC0xMS44IDEzLjQtMjEuNyAwIDAtMjM0LjUtNDcwLjYtMjQwLjQtNDgyLjMtNS4zLTEwLjYtMTguOC0xMC44LTI1LjYuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXVkaWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMTk5Ljl2NTRsLTMyMCAyMDBMMCAyNTR2LTU0bDMyMCAyMDAgMzIwLTIwMC4xem0tMTk0LjUgNzJsNDcuMS0yOS40Yy0zNy4yLTU1LjgtMTAwLjctOTIuNi0xNzIuNy05Mi42LTcyIDAtMTM1LjUgMzYuNy0xNzIuNiA5Mi40aC4zYzIuNS0yLjMgNS4xLTQuNSA3LjctNi43IDg5LjctNzQuNCAyMTkuNC01OC4xIDI5MC4yIDM2LjN6bS0yMjAuMSAxOC44YzE2LjktMTEuOSAzNi41LTE4LjcgNTcuNC0xOC43IDM0LjQgMCA2NS4yIDE4LjQgODYuNCA0Ny42bDQ1LjQtMjguNGMtMjAuOS0yOS45LTU1LjYtNDkuNS05NC44LTQ5LjUtMzguOSAwLTczLjQgMTkuNC05NC40IDQ5ek0xMDMuNiAxNjEuMWMxMzEuOC0xMDQuMyAzMTguMi03Ni40IDQxNy41IDYyLjFsLjcgMSA0OC44LTMwLjRDNTE3LjEgMTEyLjEgNDI0LjggNTguMSAzMTkuOSA1OC4xYy0xMDMuNSAwLTE5Ni42IDUzLjUtMjUwLjUgMTM1LjYgOS45LTEwLjUgMjIuNy0yMy41IDM0LjItMzIuNnptNDY3IDMyLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF1dG9wcmVmaXhlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguNCAxNmwtMTYxIDQ4MGg3Ny41bDI1LjQtODEuNGgxMTkuNUw0MDUgNDk2aDc3LjVMMzE4LjQgMTZ6bS00MC4zIDM0MS45bDQxLjItMTMwLjRoMS41bDQwLjkgMTMwLjRoLTgzLjZ6TTY0MCA0MDVsLTEwLTMxLjRMNDYyLjEgMzU4bDE5LjQgNTYuNUw2NDAgNDA1em0tNDYyLjEtNDdMMTAgMzczLjcgMCA0MDVsMTU4LjUgOS40IDE5LjQtNTYuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXZpYW5leCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTMuMSAzMmgtMzEyYy0zOC45IDAtNzYuMiAzMS4yLTgzLjMgNjkuN0wxLjIgNDEwLjNDLTUuOSA0NDguOCAxOS45IDQ4MCA1OC45IDQ4MGgzMTJjMzguOSAwIDc2LjItMzEuMiA4My4zLTY5LjdsNTYuNy0zMDguNWM3LTM4LjYtMTguOC02OS44LTU3LjgtNjkuOHptLTU4LjIgMzQ3LjNsLTMyIDEzLjUtMTE1LjQtMTEwYy0xNC43IDEwLTI5LjIgMTkuNS00MS43IDI3LjFsMjIuMSA2NC4yLTE3LjkgMTIuNy00MC42LTYxLTUyLjQtNDguMSAxNS43LTE1LjQgNTggMzEuMWM5LjMtMTAuNSAyMC44LTIyLjYgMzIuOC0zNC45TDIwMyAyMjguOWwtNjguOC05OS44IDE4LjgtMjguOSA4LjktNC44TDI2NSAyMDcuOGw0LjkgNC41YzE5LjQtMTguOCAzMy44LTMyLjQgMzMuOC0zMi40IDcuNy02LjUgMjEuNS0yLjkgMzAuNyA3LjkgOSAxMC41IDEwLjYgMjQuNyAyLjcgMzEuMy0xLjggMS4zLTE1LjUgMTEuNC0zNS4zIDI1LjZsNC41IDcuMyA5NC45IDExOS40LTYuMyA3Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF2aWF0byAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDcuMiAyODMuNWwtMTktNDEuOEgzNi4xbC0xOSA0MS44SDBsNjIuMi0xMzEuNCA2Mi4yIDEzMS40aC0xNy4yem0tNDUtOTguMWwtMTkuNiA0Mi41aDM5LjJsLTE5LjYtNDIuNXptMTEyLjcgMTAyLjRsLTYyLjItMTMxLjRoMTcuMWw0NS4xIDk2IDQ1LjEtOTZoMTdsLTYyLjEgMTMxLjR6bTgwLjYtNC4zVjE1Ni40SDI3MXYxMjcuMWgtMTUuNXptMjA5LjEtMTE1LjZ2MTE1LjZoLTE3LjNWMTY3LjloLTQxLjJ2LTExLjVoOTkuNnYxMS41aC00MS4xek02NDAgMjE4LjhjMCA5LjItMS43IDE3LjgtNS4xIDI1LjgtMy40IDgtOC4yIDE1LjEtMTQuMiAyMS4xLTYgNi0xMy4xIDEwLjgtMjEuMSAxNC4yLTggMy40LTE2LjYgNS4xLTI1LjggNS4xcy0xNy44LTEuNy0yNS44LTUuMWMtOC0zLjQtMTUuMS04LjItMjEuMS0xNC4yLTYtNi0xMC44LTEzLTE0LjItMjEuMS0zLjQtOC01LjEtMTYuNi01LjEtMjUuOHMxLjctMTcuOCA1LjEtMjUuOGMzLjQtOCA4LjItMTUuMSAxNC4yLTIxLjEgNi02IDEzLTguNCAyMS4xLTExLjkgOC0zLjQgMTYuNi01LjEgMjUuOC01LjFzMTcuOCAxLjcgMjUuOCA1LjFjOCAzLjQgMTUuMSA1LjggMjEuMSAxMS45IDYgNiAxMC43IDEzLjEgMTQuMiAyMS4xIDMuNCA4IDUuMSAxNi42IDUuMSAyNS44em0tMTUuNSAwYzAtNy4zLTEuMy0xNC0zLjktMjAuMy0yLjYtNi4zLTYuMi0xMS43LTEwLjgtMTYuMy00LjYtNC42LTEwLTguMi0xNi4yLTEwLjktNi4yLTIuNy0xMi44LTQtMTkuOC00cy0xMy42IDEuMy0xOS44IDRjLTYuMiAyLjctMTEuNiA2LjMtMTYuMiAxMC45LTQuNiA0LjYtOC4yIDEwLTEwLjggMTYuMy0yLjYgNi4zLTMuOSAxMy4xLTMuOSAyMC4zIDAgNy4zIDEuMyAxNCAzLjkgMjAuMyAyLjYgNi4zIDYuMiAxMS43IDEwLjggMTYuMyA0LjYgNC42IDEwIDguMiAxNi4yIDEwLjkgNi4yIDIuNyAxMi44IDQgMTkuOCA0czEzLjYtMS4zIDE5LjgtNGM2LjItMi43IDExLjYtNi4zIDE2LjItMTAuOSA0LjYtNC42IDguMi0xMCAxMC44LTE2LjMgMi42LTYuMyAzLjktMTMuMSAzLjktMjAuM3ptLTk0LjggOTYuN3YtNi4zbDg4LjktMTAtMjQyLjkgMTMuNGMuNi0yLjIgMS4xLTQuNiAxLjQtNy4yLjMtMiAuNS00LjIuNi02LjVsNjQuOC04LjEtNjQuOSAxLjljMC0uNC0uMS0uNy0uMS0xLjEtMi44LTE3LjItMjUuNS0yMy43LTI1LjUtMjMuN2wtMS4xLTI2LjNoMjMuOGwxOSA0MS44aDE3LjFMMzQ4LjYgMTUybC02Mi4yIDEzMS40aDE3LjFsMTktNDEuOGgyMy42TDM0NSAyNjhzLTIyLjcgNi41LTI1LjUgMjMuN2MtLjEuMy0uMS43LS4xIDEuMWwtNjQuOS0xLjkgNjQuOCA4LjFjLjEgMi4zLjMgNC40LjYgNi41LjMgMi42LjggNSAxLjQgNy4yTDc4LjQgMjk5LjJsODguOSAxMHY2LjNjLTUuOS45LTEwLjUgNi0xMC41IDEyLjIgMCA2LjggNS42IDEyLjQgMTIuNCAxMi40IDYuOCAwIDEyLjQtNS42IDEyLjQtMTIuNCAwLTYuMi00LjYtMTEuMy0xMC41LTEyLjJ2LTUuOGw4MC4zIDl2NS40Yy01LjcgMS4xLTkuOSA2LjItOS45IDEyLjEgMCA2LjggNS42IDEwLjIgMTIuNCAxMC4yIDYuOCAwIDEyLjQtMy40IDEyLjQtMTAuMiAwLTYtNC4zLTExLTkuOS0xMi4xdi00LjlsMjguNCAzLjJ2MjMuN2gtNS45VjM2MGg1Ljl2LTYuNmg1djYuNmg1Ljl2LTEzLjhoLTUuOVYzMjNsMzguMyA0LjNjOC4xIDExLjQgMTkgMTMuNiAxOSAxMy42bC0uMSA2LjctNS4xLjItLjEgMTIuMWg0LjFsLjEtNWg1LjJsLjEgNWg0LjFsLS4xLTEyLjEtNS4xLS4yLS4xLTYuN3MxMC45LTIuMSAxOS0xMy42bDM4LjMtNC4zdjIzLjJoLTUuOVYzNjBoNS45di02LjZoNXY2LjZoNS45di0xMy44aC01Ljl2LTIzLjdsMjguNC0zLjJ2NC45Yy01LjcgMS4xLTkuOSA2LjItOS45IDEyLjEgMCA2LjggNS42IDEwLjIgMTIuNCAxMC4yIDYuOCAwIDEyLjQtMy40IDEyLjQtMTAuMiAwLTYtNC4zLTExLTkuOS0xMi4xdi01LjRsODAuMy05djUuOGMtNS45LjktMTAuNSA2LTEwLjUgMTIuMiAwIDYuOCA1LjYgMTIuNCAxMi40IDEyLjQgNi44IDAgMTIuNC01LjYgMTIuNC0xMi40LS4yLTYuMy00LjctMTEuNC0xMC43LTEyLjN6bS0yMDAuOC04Ny42bDE5LjYtNDIuNSAxOS42IDQyLjVoLTE3LjlsLTEuNy00MC4zLTEuNyA0MC4zaC0xNy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgwLjQxIDIwMy4wMWMtLjcyIDIyLjY1IDEwLjYgMzIuNjggMTAuODggMzkuMDVhOC4xNjQgOC4xNjQgMCAwIDEtNC4xIDYuMjdsLTEyLjggOC45NmExMC42NiAxMC42NiAwIDAgMS01LjYzIDEuOTJjLS40My0uMDItOC4xOSAxLjgzLTIwLjQ4LTI1LjYxYTc4LjYwOCA3OC42MDggMCAwIDEtNjIuNjEgMjkuNDVjLTE2LjI4Ljg5LTYwLjQtOS4yNC01OC4xMy01Ni4yMS0xLjU5LTM4LjI4IDM0LjA2LTYyLjA2IDcwLjkzLTYwLjA1IDcuMS4wMiAyMS42LjM3IDQ2Ljk5IDYuMjd2LTE1LjYyYzIuNjktMjYuNDYtMTQuNy00Ni45OS00NC44MS00My45MS0yLjQuMDEtMTkuNC0uNS00NS44NCAxMC4xMS03LjM2IDMuMzgtOC4zIDIuODItMTAuNzUgMi44Mi03LjQxIDAtNC4zNi0yMS40OC0yLjk0LTI0LjIgNS4yMS02LjQgMzUuODYtMTguMzUgNjUuOTQtMTguMThhNzYuODU3IDc2Ljg1NyAwIDAgMSA1NS42OSAxNy4yOCA3MC4yODUgNzAuMjg1IDAgMCAxIDE3LjY3IDUyLjM2bC0uMDEgNjkuMjl6TTkzLjk5IDIzNS40YzMyLjQzLS40NyA0Ni4xNi0xOS45NyA0OS4yOS0zMC40NyAyLjQ2LTEwLjA1IDIuMDUtMTYuNDEgMi4wNS0yNy40LTkuNjctMi4zMi0yMy41OS00Ljg1LTM5LjU2LTQuODctMTUuMTUtMS4xNC00Mi44MiA1LjYzLTQxLjc0IDMyLjI2LTEuMjQgMTYuNzkgMTEuMTIgMzEuNCAyOS45NiAzMC40OHptMTcwLjkyIDIzLjA1Yy03Ljg2LjcyLTExLjUyLTQuODYtMTIuNjgtMTAuMzdsLTQ5LjgtMTY0LjY1Yy0uOTctMi43OC0xLjYxLTUuNjUtMS45Mi04LjU4YTQuNjEgNC42MSAwIDAgMSAzLjg2LTUuMjVjLjI0LS4wNC0yLjEzIDAgMjIuMjUgMCA4Ljc4LS44OCAxMS42NCA2LjAzIDEyLjU1IDEwLjM3bDM1LjcyIDE0MC44MyAzMy4xNi0xNDAuODNjLjUzLTMuMjIgMi45NC0xMS4wNyAxMi44LTEwLjI0aDE3LjE2YzIuMTctLjE4IDExLjExLS41IDEyLjY4IDEwLjM3bDMzLjQyIDE0Mi42M0w0MjAuOTggODAuMWMuNDgtMi4xOCAyLjcyLTExLjM3IDEyLjY4LTEwLjM3aDE5LjcyYy44NS0uMTMgNi4xNS0uODEgNS4yNSA4LjU4LS40MyAxLjg1IDMuNDEtMTAuNjYtNTIuNzUgMTY5LjktMS4xNSA1LjUxLTQuODIgMTEuMDktMTIuNjggMTAuMzdoLTE4LjY5Yy0xMC45NCAxLjE1LTEyLjUxLTkuNjYtMTIuNjgtMTAuNzVMMzI4LjY3IDExMC43bC0zMi43OCAxMzYuOTljLS4xNiAxLjA5LTEuNzMgMTEuOS0xMi42OCAxMC43NWgtMTguM3ptMjczLjQ4IDUuNjNjLTUuODguMDEtMzMuOTItLjMtNTcuMzYtMTIuMjlhMTIuODAyIDEyLjgwMiAwIDAgMS03LjgxLTExLjkxdi0xMC43NWMwLTguNDUgNi4yLTYuOSA4LjgzLTUuODkgMTAuMDQgNC4wNiAxNi40OCA3LjE0IDI4LjgxIDkuNiAzNi42NSA3LjUzIDUyLjc3LTIuMyA1Ni43Mi00LjQ4IDEzLjE1LTcuODEgMTQuMTktMjUuNjggNS4yNS0zNC45NS0xMC40OC04Ljc5LTE1LjQ4LTkuMTItNTMuMTMtMjEtNC42NC0xLjI5LTQzLjctMTMuNjEtNDMuNzktNTIuMzYtLjYxLTI4LjI0IDI1LjA1LTU2LjE4IDY5LjUyLTU1Ljk1IDEyLjY3LS4wMSA0Ni40MyA0LjEzIDU1LjU3IDE1LjYyIDEuMzUgMi4wOSAyLjAyIDQuNTUgMS45MiA3LjA0djEwLjExYzAgNC40NC0xLjYyIDYuNjYtNC44NyA2LjY2LTcuNzEtLjg2LTIxLjM5LTExLjE3LTQ5LjE2LTEwLjc1LTYuODktLjM2LTM5Ljg5LjkxLTM4LjQxIDI0Ljk3LS40MyAxOC45NiAyNi42MSAyNi4wNyAyOS43IDI2Ljg5IDM2LjQ2IDEwLjk3IDQ4LjY1IDEyLjc5IDYzLjEyIDI5LjU4IDE3LjE0IDIyLjI1IDcuOSA0OC4zIDQuMzUgNTUuNDQtMTkuMDggMzcuNDktNjguNDIgMzQuNDQtNjkuMjYgMzQuNDJ6bTQwLjIgMTA0Ljg2Yy03MC4wMyA1MS43Mi0xNzEuNjkgNzkuMjUtMjU4LjQ5IDc5LjI1QTQ2OS4xMjcgNDY5LjEyNyAwIDAgMSAyLjgzIDMyNy40NmMtNi41My01Ljg5LS43Ny0xMy45NiA3LjE3LTkuNDdhNjM3LjM3IDYzNy4zNyAwIDAgMCAzMTYuODggODQuMTIgNjMwLjIyIDYzMC4yMiAwIDAgMCAyNDEuNTktNDkuNTVjMTEuNzgtNSAyMS43NyA3LjggMTAuMTIgMTYuMzh6bTI5LjE5LTMzLjI5Yy04Ljk2LTExLjUyLTU5LjI4LTUuMzgtODEuODEtMi42OS02Ljc5Ljc3LTcuOTQtNS4xMi0xLjc5LTkuNDcgNDAuMDctMjguMTcgMTA1Ljg4LTIwLjEgMTEzLjQ0LTEwLjYzIDcuNTUgOS40Ny0yLjA1IDc1LjQxLTM5LjU2IDEwNi45MS01Ljc2IDQuODctMTEuMjcgMi4zLTguNzEtNC4xIDguNDQtMjEuMjUgMjcuMzktNjguNDkgMTguNDMtODAuMDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbmRjYW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Niw4QzExOSw4LDgsMTE5LDgsMjU2UzExOSw1MDQsMjU2LDUwNCw1MDQsMzkzLDUwNCwyNTYsMzkzLDgsMjU2LDhabTQ4LjIsMzI2LjFoLTE4MUwyMDcuOSwxNzhoMTgxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXR0bGVOZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4LjYxIDIyNS42MmMyNi44Ny4xOCAzNS41Ny03LjQzIDM4LjkyLTEyLjM3IDEyLjQ3LTE2LjMyLTcuMDYtNDcuNi01Mi44NS03MS4zMyAxNy43Ni0zMy41OCAzMC4xMS02My42OCAzNi4zNC04NS4zIDMuMzgtMTEuODMgMS4wOS0xOSAuNDUtMjAuMjUtMS43MiAxMC41Mi0xNS44NSA0OC40Ni00OC4yIDEwMC4wNS0yNS0xMS4yMi01Ni41Mi0yMC4xLTkzLjc3LTIzLjgtOC45NC0xNi45NC0zNC44OC02My44Ni02MC40OC04OC45M0MyNTIuMTggNy4xNCAyMzguNyAxLjA3IDIyOC4xOC4yMmgtLjA1Yy0xMy44My0xLjU1LTIyLjY3IDUuODUtMjcuNCAxMS0xNy4yIDE4LjUzLTI0LjMzIDQ4Ljg3LTI1IDg0LjA3LTcuMjQtMTIuMzUtMTcuMTctMjQuNjMtMjguNS0yNS45M2gtLjE4Yy0yMC42Ni0zLjQ4LTM4LjM5IDI5LjIyLTM2IDgxLjI5LTM4LjM2IDEuMzgtNzEgNS43NS05MyAxMS4yMy05LjkgMi40NS0xNi4yMiA3LjI3LTE3Ljc2IDkuNzIgMS0uMzggMjIuNC05LjIyIDExMS41Ni05LjIyIDUuMjIgNTMgMjkuNzUgMTAxLjgyIDI2IDkzLjE5LTkuNzMgMTUuNC0zOC4yNCA2Mi4zNi00Ny4zMSA5Ny43LTUuODcgMjIuODgtNC4zNyAzNy42MS4xNSA0Ny4xNCA1LjU3IDEyLjc1IDE2LjQxIDE2LjcyIDIzLjIgMTguMjYgMjUgNS43MSA1NS4zOC0zLjYzIDg2LjctMjEuMTQtNy41MyAxMi44NC0xMy45IDI4LjUxLTkuMDYgMzkuMzQgNy4zMSAxOS42NSA0NC40OSAxOC42NiA4OC40NC05LjQ1IDIwLjE4IDMyLjE4IDQwLjA3IDU3Ljk0IDU1LjcgNzQuMTJhMzkuNzkgMzkuNzkgMCAwIDAgOC43NSA3LjA5YzUuMTQgMy4yMSA4LjU4IDMuMzcgOC41OCAzLjM3LTguMjQtNi43NS0zNC0zOC02Mi41NC05MS43OCAyMi4yMi0xNiA0NS42NS0zOC44NyA2Ny40Ny02OS4yNyAxMjIuODIgNC42IDE0My4yOS0yNC43NiAxNDgtMzEuNjQgMTQuNjctMTkuODggMy40My01Ny40NC01Ny4zMi05My42OXptLTc3Ljg1IDEwNi4yMmMyMy44MS0zNy43MSAzMC4zNC02Ny43NyAyOS40NS05Mi4zMyAyNy44NiAxNy41NyA0Ny4xOCAzNy41OCA0OS4wNiA1OC44MyAxLjE0IDEyLjkzLTguMSAyOS4xMi03OC41MSAzMy41ek0yMTYuOSAzODcuNjljOS43Ni02LjIzIDE5LjUzLTEzLjEyIDI5LjItMjAuNDkgNi42OCAxMy4zMyAxMy42IDI2LjEgMjAuNiAzOC4xOS00MC42IDIxLjg2LTY4Ljg0IDEyLjc2LTQ5LjgtMTcuN3ptMjE1LTE3MS4zNWMtMTAuMjktNS4zNC0yMS4xNi0xMC4zNC0zMi4zOC0xNS4wNWE3MjIuNDU5IDcyMi40NTkgMCAwIDAgMjIuNzQtMzYuOWMzOS4wNiAyNC4xIDQ1LjkgNTMuMTggOS42NCA1MS45NXpNMjc5LjE4IDM5OGMtNS41MS0xMS4zNS0xMS0yMy41LTE2LjUtMzYuNDQgNDMuMjUgMS4yNyA2Mi40Mi0xOC43MyA2My4yOC0yMC40MSAwIC4wNy0yNSAxNS42NC02Mi41MyAxMi4yNWE3MTguNzggNzE4Ljc4IDAgMCAwIDg1LjA2LTg0cTEzLjA2LTE1LjMxIDI0LjkzLTMxLjExYy0uMzYtLjI5LTEuNTQtMy0xNi41MS0xMi01MS43IDYwLjI3LTEwMi4zNCA5OC0xMzIuNzUgMTE1LjkyLTIwLjU5LTExLjE4LTQwLjg0LTMxLjc4LTU1LjcxLTYxLjQ5LTIwLTM5LjkyLTMwLTgyLjM5LTMxLjU3LTExNi4wNyAxMi4zLjkxIDI1LjI3IDIuMTcgMzguODUgMy44OC0yMi4yOSAzNi44LTE0LjM5IDYzLTEzLjQ3IDY0LjIzIDAtLjA3LS45NS0yOS4xNyAyMC4xNC01OS41N2E2OTUuMjMgNjk1LjIzIDAgMCAwIDQ0LjY3IDE1Mi44NGMuOTMtLjM4IDEuODQuODggMTguNjctOC4yNS0yNi4zMy03NC40Ny0zMy43Ni0xMzguMTctMzQtMTczLjQzIDIwLTEyLjQyIDQ4LjE4LTE5LjggODEuNjMtMTcuODEgNDQuNTcgMi42NyA4Ni4zNiAxNS4yNSAxMTYuMzIgMzAuNzFxLTEwLjY5IDE1LjY2LTIzLjMzIDMyLjQ3QzM2NS42MyAxNTIgMzM5LjEgMTQ1Ljg0IDMzNy41IDE0NmMuMTEgMCAyNS45IDE0LjA3IDQxLjUyIDQ3LjIyYTcxNy42MyA3MTcuNjMgMCAwIDAtMTE1LjM0LTMxLjcxIDY0Ni42MDggNjQ2LjYwOCAwIDAgMC0zOS4zOS02LjA1Yy0uMDcuNDUtMS44MSAxLjg1LTIuMTYgMjAuMzNDMzAwIDE5MC4yOCAzNTguNzggMjE1LjY4IDM4OS4zNiAyMzNjLjc0IDIzLjU1LTYuOTUgNTEuNjEtMjUuNDEgNzkuNTctMjQuNiAzNy4zMS01Ni4zOSA2Ny4yMy04NC43NyA4NS40M3ptMjcuNC0yODdjLTQ0LjU2LTEuNjYtNzMuNTggNy40My05NC42OSAyMC42NyAyLTUyLjMgMjEuMzEtNzYuMzggMzguMjEtNzUuMjhDMjY3IDUyLjE1IDMwNSAxMDguNTUgMzA2LjU4IDExMXptLTEzMC42NSAzLjFjLjQ4IDEyLjExIDEuNTkgMjQuNjIgMy4yMSAzNy4yOC0xNC41NS0uODUtMjguNzQtMS4yNS00Mi40LTEuMjYtLjA4IDMuMjQtLjEyLTUxIDI0LjY3LTQ5LjU5aC4wOWM1Ljc2IDEuMDkgMTAuNjMgNi44OCAxNC40MyAxMy41N3ptLTI4LjA2IDE2MmMyMC43NiAzOS43IDQzLjMgNjAuNTcgNjUuMjUgNzIuMzEtNDYuNzkgMjQuNzYtNzcuNTMgMjAtODQuOTIgNC41MS0uMi0uMjEtMTEuMTMtMTUuMyAxOS42Ny03Ni44MXptMjEwLjA2IDc0LjhcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVoYW5jZVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODYuNSAyOTNjMCAxOS4zLTE0IDI1LjQtMzEuMiAyNS40aC00NS4xdi01Mi45aDQ2YzE4LjYuMSAzMC4zIDcuOCAzMC4zIDI3LjV6bS03LjctODIuM2MwLTE3LjctMTMuNy0yMS45LTI4LjktMjEuOWgtMzkuNnY0NC44SDE1M2MxNS4xIDAgMjUuOC02LjYgMjUuOC0yMi45em0xMzIuMyAyMy4yYy0xOC4zIDAtMzAuNSAxMS40LTMxLjcgMjkuN2g2Mi4yYy0xLjctMTguNS0xMS4zLTI5LjctMzAuNS0yOS43ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTI3MS43IDE4NWg3Ny44di0xOC45aC03Ny44VjE4NXptLTQzIDExMC4zYzAtMjQuMS0xMS40LTQ0LjktMzUtNTEuNiAxNy4yLTguMiAyNi4yLTE3LjcgMjYuMi0zNyAwLTM4LjItMjguNS00Ny41LTYxLjQtNDcuNUg2OHYxOTJoOTMuMWMzNC45LS4yIDY3LjYtMTYuOSA2Ny42LTU1Ljl6TTM4MCAyODAuNWMwLTQxLjEtMjQuMS03NS40LTY3LjYtNzUuNC00Mi40IDAtNzEuMSAzMS44LTcxLjEgNzMuNiAwIDQzLjMgMjcuMyA3MyA3MS4xIDczIDMzLjIgMCA1NC43LTE0LjkgNjUuMS00Ni44aC0zMy43Yy0zLjcgMTEuOS0xOC42IDE4LjEtMzAuMiAxOC4xLTIyLjQgMC0zNC4xLTEzLjEtMzQuMS0zNS4zaDEwMC4yYy4xLTIuMy4zLTQuOC4zLTcuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVoYW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzIgMjM3LjJjMzEuOC0xNS4yIDQ4LjQtMzguMiA0OC40LTc0IDAtNzAuNi01Mi42LTg3LjgtMTEzLjMtODcuOEgwdjM1NC40aDE3MS44YzY0LjQgMCAxMjQuOS0zMC45IDEyNC45LTEwMi45IDAtNDQuNS0yMS4xLTc3LjQtNjQuNy04OS43ek03Ny45IDEzNS45SDE1MWMyOC4xIDAgNTMuNCA3LjkgNTMuNCA0MC41IDAgMzAuMS0xOS43IDQyLjItNDcuNSA0Mi4yaC03OXYtODIuN3ptODMuMyAyMzMuN0g3Ny45VjI3Mmg4NC45YzM0LjMgMCA1NiAxNC4zIDU2IDUwLjYgMCAzNS44LTI1LjkgNDctNTcuNiA0N3ptMzU4LjUtMjQwLjdIMzc2Vjk0aDE0My43djM0Ljl6TTU3NiAzMDUuMmMwLTc1LjktNDQuNC0xMzkuMi0xMjQuOS0xMzkuMi03OC4yIDAtMTMxLjMgNTguOC0xMzEuMyAxMzUuOCAwIDc5LjkgNTAuMyAxMzQuNyAxMzEuMyAxMzQuNyA2MS4zIDAgMTAxLTI3LjYgMTIwLjEtODYuM0g1MDljLTYuNyAyMS45LTM0LjMgMzMuNS01NS43IDMzLjUtNDEuMyAwLTYzLTI0LjItNjMtNjUuM2gxODUuMWMuMy00LjIuNi04LjcuNi0xMy4yek0zOTAuNCAyNzRjMi4zLTMzLjcgMjQuNy01NC44IDU4LjUtNTQuOCAzNS40IDAgNTMuMiAyMC44IDU2LjIgNTQuOEgzOTAuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmltb2JqZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAzMkgzMkMxNC40IDMyIDAgNDYuNCAwIDY0djM4NGMwIDE3LjYgMTQuNCAzMiAzMiAzMmgzODRjMTcuNiAwIDMyLTE0LjQgMzItMzJWNjRjMC0xNy42LTE0LjQtMzItMzItMzJ6bS02NCAyNTcuNGMwIDQ5LjQtMTEuNCA4Mi42LTEwMy44IDgyLjZoLTE2LjljLTQ0LjEgMC02Mi40LTE0LjktNzAuNC0zOC44aC0uOVYzNjhIOTZWMTM2aDY0djc0LjdoMS4xYzQuNi0zMC41IDM5LjctMzguOCA2OS43LTM4LjhoMTcuM2M5Mi40IDAgMTAzLjggMzMuMSAxMDMuOCA4Mi41djM1em0tNjQtMjguOXYyMi45YzAgMjEuNy0zLjQgMzMuOC0zOC40IDMzLjhoLTQ1LjNjLTI4LjkgMC00NC4xLTYuNS00NC4xLTM1Ljd2LTE5YzAtMjkuMyAxNS4yLTM1LjcgNDQuMS0zNS43aDQ1LjNjMzUtLjIgMzguNCAxMiAzOC40IDMzLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpdGJ1Y2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi4yIDMyQTE2IDE2IDAgMCAwIDYgNDcuOGEyNi4zNSAyNi4zNSAwIDAgMCAuMiAyLjhsNjcuOSA0MTIuMWEyMS43NyAyMS43NyAwIDAgMCAyMS4zIDE4LjJoMzI1LjdhMTYgMTYgMCAwIDAgMTYtMTMuNEw1MDUgNTAuN2ExNiAxNiAwIDAgMC0xMy4yLTE4LjMgMjQuNTggMjQuNTggMCAwIDAtMi44LS4yTDIyLjIgMzJ6bTI4NS45IDI5Ny44aC0xMDRsLTI4LjEtMTQ3aDE1Ny4zbC0yNS4yIDE0N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQml0Y29pbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2YzAgMTM2Ljk2Ny0xMTEuMDMzIDI0OC0yNDggMjQ4UzggMzkyLjk2NyA4IDI1NiAxMTkuMDMzIDggMjU2IDhzMjQ4IDExMS4wMzMgMjQ4IDI0OHptLTE0MS42NTEtMzUuMzNjNC45MzctMzIuOTk5LTIwLjE5MS01MC43MzktNTQuNTUtNjIuNTczbDExLjE0Ni00NC43MDItMjcuMjEzLTYuNzgxLTEwLjg1MSA0My41MjRjLTcuMTU0LTEuNzgzLTE0LjUwMi0zLjQ2NC0yMS44MDMtNS4xM2wxMC45MjktNDMuODEtMjcuMTk4LTYuNzgxLTExLjE1MyA0NC42ODZjLTUuOTIyLTEuMzQ5LTExLjczNS0yLjY4Mi0xNy4zNzctNC4wODRsLjAzMS0uMTQtMzcuNTMtOS4zNy03LjIzOSAyOS4wNjJzMjAuMTkxIDQuNjI3IDE5Ljc2NSA0LjkxM2MxMS4wMjIgMi43NTEgMTMuMDE0IDEwLjA0NCAxMi42OCAxNS44MjVsLTEyLjY5NiA1MC45MjVjLjc2LjE5NCAxLjc0NC40NzMgMi44MjkuOTA3LS45MDctLjIyNS0xLjg3Ni0uNDczLTIuODc2LS43MTNsLTE3Ljc5NiA3MS4zMzhjLTEuMzQ5IDMuMzQ4LTQuNzY3IDguMzctMTIuNDcxIDYuNDY0LjI3MS4zOTUtMTkuNzgtNC45MzctMTkuNzgtNC45MzdsLTEzLjUxIDMxLjE0NyAzNS40MTQgOC44MjdjNi41ODggMS42NTEgMTMuMDQ1IDMuMzc5IDE5LjQgNS4wMDZsLTExLjI2MiA0NS4yMTMgMjcuMTgyIDYuNzgxIDExLjE1My00NC43MzNhMTAzOC4yMDkgMTAzOC4yMDkgMCAwIDAgMjEuNjg3IDUuNjI3bC0xMS4xMTUgNDQuNTIzIDI3LjIxMyA2Ljc4MSAxMS4yNjItNDUuMTI4YzQ2LjQwNCA4Ljc4MSA4MS4yOTkgNS4yMzkgOTUuOTg2LTM2LjcyNyAxMS44MzYtMzMuNzktLjU4OS01My4yODEtMjUuMDA0LTY1Ljk5MSAxNy43OC00LjA5OCAzMS4xNzQtMTUuNzkyIDM0Ljc0Ny0zOS45NDl6bS02Mi4xNzcgODcuMTc5Yy04LjQxIDMzLjc5LTY1LjMwOCAxNS41MjMtODMuNzU1IDEwLjk0M2wxNC45NDQtNTkuODk5YzE4LjQ0NiA0LjYwMyA3Ny42IDEzLjcxNyA2OC44MTEgNDguOTU2em04LjQxNy04Ny42NjdjLTcuNjczIDMwLjczNi01NS4wMzEgMTUuMTItNzAuMzkzIDExLjI5MmwxMy41NDgtNTQuMzI3YzE1LjM2MyAzLjgyOCA2NC44MzYgMTAuOTczIDU2Ljg0NSA0My4wMzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzguNCA2Ny4yQzE3My44LTIyIDMyNC41LTI0IDQyMS41IDcxYzE0LjMgMTQuMS02LjQgMzcuMS0yMi40IDIxLjUtODQuOC04Mi40LTIxNS44LTgwLjMtMjk4LjktMy4yLTE2LjMgMTUuMS0zNi41LTguMy0yMS44LTIyLjF6bTk4LjkgNDE4LjZjMTkuMyA1LjcgMjkuMy0yMy42IDcuOS0zMEM3MyA0MjEuOSA5LjQgMzA2LjEgMzcuNyAxOTQuOGM1LTE5LjYtMjQuOS0yOC4xLTMwLjItNy4xLTMyLjEgMTI3LjQgNDEuMSAyNTkuOCAxNjkuOCAyOTguMXptMTQ4LjEtMmMxMjEuOS00MC4yIDE5Mi45LTE2Ni45IDE2NC40LTI5MS00LjUtMTkuNy0zNC45LTEzLjgtMzAgNy45IDI0LjIgMTA3LjctMzcuMSAyMTcuOS0xNDMuMiAyNTMuNC0yMS4yIDctMTAuNCAzNiA4LjggMjkuN3ptLTYyLjktNzlsLjItNzEuOGMwLTguMi02LjYtMTQuOC0xNC44LTE0LjgtOC4yIDAtMTQuOCA2LjctMTQuOCAxNC44bC0uMiA3MS44YzAgOC4yIDYuNiAxNC44IDE0LjggMTQuOHMxNC44LTYuNiAxNC44LTE0Ljh6bTcxLTI2OWMyLjEgOTAuOSA0LjcgMTMxLjktODUuNSAxMzIuNS05Mi41LS43LTg2LjktNDQuMy04NS41LTEzMi41IDAtMjEuOC0zMi41LTE5LjYtMzIuNSAwdjcxLjZjMCA2OS4zIDYwLjcgOTAuOSAxMTggOTAuMSA1Ny4zLjggMTE4LTIwLjggMTE4LTkwLjF2LTcxLjZjMC0xOS42LTMyLjUtMjEuOC0zMi41IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsYWNrVGllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJ2NDQ4aDQ0OFYzMkgwem0zMTYuNSAzMjUuMkwyMjQgNDQ1LjlsLTkyLjUtODguNyA2NC41LTE4NC02NC41LTg2LjZoMTg0LjlMMjUyIDE3My4ybDY0LjUgMTg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbGFja2JlcnJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2NiAxMTYuOWMwIDIzLjQtMTYuNCA0OS4xLTcyLjUgNDkuMUgyMy40bDIxLTg4LjhoNjcuOGM0Mi4xIDAgNTMuOCAyMy4zIDUzLjggMzkuN3ptMTI2LjItMzkuN2gtNjcuOEwyMDUuNyAxNjZoNzAuMWM1My44IDAgNzAuMS0yNS43IDcwLjEtNDkuMS4xLTE2LjQtMTEuNi0zOS43LTUzLjctMzkuN3pNODguOCAyMDguMUgyMUwwIDI5Ni45aDcwLjFjNTYuMSAwIDcyLjUtMjMuNCA3Mi41LTQ5LjEgMC0xNi4zLTExLjctMzkuNy01My44LTM5Ljd6bTE4MC4xIDBoLTY3LjhsLTE4LjcgODguOGg3MC4xYzUzLjggMCA3MC4xLTIzLjQgNzAuMS00OS4xIDAtMTYuMy0xMS43LTM5LjctNTMuNy0zOS43em0xODkuMy01My44aC02Ny44bC0xOC43IDg4LjhoNzAuMWM1My44IDAgNzAuMS0yMy40IDcwLjEtNDkuMS4xLTE2LjMtMTEuNi0zOS43LTUzLjctMzkuN3ptLTI4IDEzNy45aC02Ny44TDM0My43IDM4MWg3MC4xYzU2LjEgMCA3MC4xLTIzLjQgNzAuMS00OS4xIDAtMTYuMy0xMS42LTM5LjctNTMuNy0zOS43ek0yNDAuOCAzNDZIMTczbC0xOC43IDg4LjhoNzAuMWM1Ni4xIDAgNzAuMS0yNS43IDcwLjEtNDkuMS4xLTE2LjMtMTEuNi0zOS43LTUzLjctMzkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxvZ2dlckIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ2LjYgMjIyLjdjLTEuOC04LTYuOC0xNS40LTEyLjUtMTguNS0xLjgtMS0xMy0yLjItMjUtMi43LTIwLjEtLjktMjIuMy0xLjMtMjguNy01LTEwLjEtNS45LTEyLjgtMTIuMy0xMi45LTI5LjUtLjEtMzMtMTMuOC02My43LTQwLjktOTEuMy0xOS4zLTE5LjctNDAuOS0zMy02NS41LTQwLjUtNS45LTEuOC0xOS4xLTIuNC02My4zLTIuOS02OS40LS44LTg0LjguNi0xMDguNCAxMEM0NS45IDU5LjUgMTQuNyA5Ni4xIDMuMyAxNDIuOSAxLjIgMTUxLjcuNyAxNjUuOC4yIDI0Ni44Yy0uNiAxMDEuNS4xIDExNi40IDYuNCAxMzYuNSAxNS42IDQ5LjYgNTkuOSA4Ni4zIDEwNC40IDk0LjMgMTQuOCAyLjcgMTk3LjMgMy4zIDIxNiAuOCAzMi41LTQuNCA1OC0xNy41IDgxLjktNDEuOSAxNy4zLTE3LjcgMjguMS0zNi44IDM1LjItNjIuMSA0LjktMTcuNiA0LjUtMTQyLjggMi41LTE1MS43em0tMzIyLjEtNjMuNmM3LjgtNy45IDEwLTguMiA1OC44LTguMiA0My45IDAgNDUuNC4xIDUxLjggMy40IDkuMyA0LjcgMTMuNCAxMS4zIDEzLjQgMjEuOSAwIDkuNS0zLjggMTYuMi0xMi4zIDIxLjYtNC42IDIuOS03LjMgMy4xLTUwLjMgMy4zLTI2LjUuMi00Ny43LS40LTUwLjgtMS4yLTE2LjYtNC43LTIyLjgtMjguNS0xMC42LTQwLjh6bTE5MS44IDE5OS44bC0xNC45IDIuNC03Ny41LjljLTY4LjEuOC04Ny4zLS40LTkwLjktMi03LjEtMy4xLTEzLjgtMTEuNy0xNC45LTE5LjQtMS4xLTcuMyAyLjYtMTcuMyA4LjItMjIuNCA3LjEtNi40IDEwLjItNi42IDk3LjMtNi43IDg5LjYtLjEgODkuMS0uMSA5Ny42IDcuOCAxMi4xIDExLjMgOS41IDMxLjItNC45IDM5LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsb2dnZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYyLjQgMTk2YzQuOC00LjkgNi4yLTUuMSAzNi40LTUuMSAyNy4yIDAgMjguMS4xIDMyLjEgMi4xIDUuOCAyLjkgOC4zIDcgOC4zIDEzLjYgMCA1LjktMi40IDEwLTcuNiAxMy40LTIuOCAxLjgtNC41IDEuOS0zMS4xIDIuMS0xNi40LjEtMjkuNS0uMi0zMS41LS44LTEwLjMtMi45LTE0LjEtMTcuNy02LjYtMjUuM3ptNjEuNCA5NC41Yy01My45IDAtNTUuOC4yLTYwLjIgNC4xLTMuNSAzLjEtNS43IDkuNC01LjEgMTMuOS43IDQuNyA0LjggMTAuMSA5LjIgMTIgMi4yIDEgMTQuMSAxLjcgNTYuMyAxLjJsNDcuOS0uNiA5LjItMS41YzktNS4xIDEwLjUtMTcuNCAzLjEtMjQuNC01LjMtNC43LTUtNC43LTYwLjQtNC43em0yMjMuNCAxMzAuMWMtMy41IDI4LjQtMjMgNTAuNC01MS4xIDU3LjUtNy4yIDEuOC05LjcgMS45LTE3Mi45IDEuOC0xNTcuOCAwLTE2NS45LS4xLTE3Mi0xLjgtOC40LTIuMi0xNS42LTUuNS0yMi4zLTEwLTUuNi0zLjgtMTMuOS0xMS44LTE3LTE2LjQtMy44LTUuNi04LjItMTUuMy0xMC0yMkMuMSA0MjMgMCA0MjAuMyAwIDI1Ni4zIDAgOTMuMiAwIDg5LjcgMS44IDgyLjYgOC4xIDU3LjkgMjcuNyAzOSA1MyAzMy40YzcuMy0xLjYgMzMyLjEtMS45IDM0MC0uMyAyMS4yIDQuMyAzNy45IDE3LjEgNDcuNiAzNi40IDcuNyAxNS4zIDctMS41IDcuMyAxODAuNi4yIDExNS44IDAgMTY0LjUtLjcgMTcwLjV6bS04NS40LTE4NS4yYy0xLjEtNS00LjItOS42LTcuNy0xMS41LTEuMS0uNi04LTEuMy0xNS41LTEuNy0xMi40LS42LTEzLjgtLjgtMTcuOC0zLjEtNi4yLTMuNi03LjktNy42LTgtMTguMyAwLTIwLjQtOC41LTM5LjQtMjUuMy01Ni41LTEyLTEyLjItMjUuMy0yMC41LTQwLjYtMjUuMS0zLjYtMS4xLTExLjgtMS41LTM5LjItMS44LTQyLjktLjUtNTIuNS40LTY3LjEgNi4yLTI3IDEwLjctNDYuMyAzMy40LTUzLjQgNjIuNC0xLjMgNS40LTEuNiAxNC4yLTEuOSA2NC4zLS40IDYyLjggMCA3Mi4xIDQgODQuNSA5LjcgMzAuNyAzNy4xIDUzLjQgNjQuNiA1OC40IDkuMiAxLjcgMTIyLjIgMi4xIDEzMy43LjUgMjAuMS0yLjcgMzUuOS0xMC44IDUwLjctMjUuOSAxMC43LTEwLjkgMTcuNC0yMi44IDIxLjgtMzguNSAzLjItMTAuOSAyLjktODguNCAxLjctOTMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmx1ZXRvb3RoQiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTYuNDggMjYwLjAyM2w5Mi42MjYtMTAzLjMzM0wxNDMuMTI1IDB2MjA2LjMzbC04Ni4xMTEtODYuMTExLTMxLjQwNiAzMS40MDUgMTA4LjA2MSAxMDguMzk5TDI1LjYwOCAzNjguNDIybDMxLjQwNiAzMS40MDUgODYuMTExLTg2LjExMUwxNDUuODQgNTEybDE0OC41NTItMTQ4LjY0NC05Ny45MTItMTAzLjMzM3ptNDAuODYtMTAyLjk5NmwtNDkuOTc3IDQ5Ljk3OC0uMzM4LTEwMC4yOTUgNTAuMzE1IDUwLjMxN3pNMTg3LjM2MyAzMTMuMDRsNDkuOTc3IDQ5Ljk3OC01MC4zMTUgNTAuMzE2LjMzOC0xMDAuMjk0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbHVldG9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjkyLjYgMTcxLjFMMjQ5LjcgMjE0bC0uMy04NiA0My4yIDQzLjFtLTQzLjIgMjE5LjhsNDMuMS00My4xLTQyLjktNDIuOS0uMiA4NnpNNDE2IDI1OS40QzQxNiA0NjUgMzQ0LjEgNTEyIDIzMC45IDUxMlMzMiA0NjUgMzIgMjU5LjQgMTE1LjQgMCAyMjguNiAwIDQxNiA1My45IDQxNiAyNTkuNHptLTE1OC41IDBsNzkuNC04OC42TDIxMS44IDM2LjV2MTc2LjlMMTM4IDEzOS42bC0yNyAyNi45IDkyLjcgOTMtOTIuNyA5MyAyNi45IDI2LjkgNzMuOC03My44IDIuMyAxNzAgMTI3LjQtMTI3LjUtODMuOS04OC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb290c3RyYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMzLjUsMjAxLjRjMC0yMi4xLTE1LjYtMzQuMy00My0zNC4zaC01MC40djcxLjJoNDIuNUMzMTUuNCwyMzguMiwzMzMuNSwyMjUsMzMzLjUsMjAxLjR6IE01MTcsMTg4LjYgYy05LjUtMzAuOS0xMC45LTY4LjgtOS44LTk4LjFjMS4xLTMwLjUtMjIuNy01OC41LTU0LjctNTguNUgxMjMuN2MtMzIuMSwwLTU1LjgsMjguMS01NC43LDU4LjVjMSwyOS4zLTAuMyw2Ny4yLTkuOCw5OC4xIGMtOS42LDMxLTI1LjcsNTAuNi01Mi4yLDUzLjF2MjguNWMyNi40LDIuNSw0Mi42LDIyLjEsNTIuMiw1My4xYzkuNSwzMC45LDEwLjksNjguOCw5LjgsOTguMWMtMS4xLDMwLjUsMjIuNyw1OC41LDU0LjcsNTguNWgzMjguNyBjMzIuMSwwLDU1LjgtMjguMSw1NC43LTU4LjVjLTEtMjkuMywwLjMtNjcuMiw5LjgtOTguMWM5LjYtMzEsMjUuNy01MC42LDUyLjEtNTMuMXYtMjguNUM1NDIuNywyMzkuMiw1MjYuNSwyMTkuNiw1MTcsMTg4LjZ6IE0zMDAuMiwzNzUuMWgtOTcuOVYxMzYuOGg5Ny40YzQzLjMsMCw3MS43LDIzLjQsNzEuNyw1OS40YzAsMjUuMy0xOS4xLDQ3LjktNDMuNSw1MS44djEuM2MzMy4yLDMuNiw1NS41LDI2LjYsNTUuNSw1OC4zIEMzODMuNCwzNDkuNywzNTIuMSwzNzUuMSwzMDAuMiwzNzUuMXogTTI5MC4yLDI2Ni40aC01MC4xdjc4LjRoNTIuM2MzNC4yLDAsNTIuMy0xMy43LDUyLjMtMzkuNSBDMzQ0LjcsMjc5LjYsMzI2LjEsMjY2LjQsMjkwLjIsMjY2LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ0YyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTAuMjA0IDI0Mi42MzhjMjcuNzMtMTQuMTggNDUuMzc3LTM5LjM5IDQxLjI4LTgxLjMtNS4zNTgtNTcuMzUxLTUyLjQ1OC03Ni41NzMtMTE0Ljg1LTgxLjkyOVYwaC00OC41Mjh2NzcuMjAzYy0xMi42MDUgMC0yNS41MjUuMzE1LTM4LjQ0NC42M1YwaC00OC41Mjh2NzkuNDA5Yy0xNy44NDIuNTM5LTM4LjYyMi4yNzYtOTcuMzcgMHY1MS42NzhjMzguMzE0LS42NzggNTguNDE3LTMuMTQgNjMuMDIzIDIxLjQyN3YyMTcuNDI5Yy0yLjkyNSAxOS40OTItMTguNTI0IDE2LjY4NS01My4yNTUgMTYuMDcxTDMuNzY1IDQ0My42OGM4OC40ODEgMCA5Ny4zNy4zMTUgOTcuMzcuMzE1VjUxMmg0OC41Mjh2LTY3LjA2YzEzLjIzNC4zMTUgMjYuMTU0LjMxNSAzOC40NDQuMzE1VjUxMmg0OC41Mjh2LTY4LjAwNWM4MS4yOTktNC40MTIgMTM1LjY0Ny0yNC44OTQgMTQyLjg5NS0xMDEuNDY3IDUuNjcxLTYxLjQ0Ni0yMy4zMi04OC44NjItNjkuMzI2LTk5Ljg5ek0xNTAuNjA4IDEzNC41NTNjMjcuNDE1IDAgMTEzLjEyNi04LjUwNyAxMTMuMTI2IDQ4LjUyOCAwIDU0LjUxNS04NS43MSA0OC4yMTItMTEzLjEyNiA0OC4yMTJ2LTk2Ljc0em0wIDI1MS43NzZWMjc5LjgyMWMzMi43NzIgMCAxMzMuMTI3LTkuMTM4IDEzMy4xMjcgNTMuMjU1LS4wMDEgNjAuMTg2LTEwMC4zNTUgNTMuMjUzLTEzMy4xMjcgNTMuMjUzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWZmZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI3Ljg0IDM4MC42N2wtMTk2LjUgOTcuODJhMTguNiAxOC42IDAgMCAxLTE0LjY3IDBMMjAuMTYgMzgwLjY3Yy00LTItNC01LjI4IDAtNy4yOUw2Ny4yMiAzNTBhMTguNjUgMTguNjUgMCAwIDEgMTQuNjkgMGwxMzQuNzYgNjdhMTguNTEgMTguNTEgMCAwIDAgMTQuNjcgMGwxMzQuNzYtNjdhMTguNjIgMTguNjIgMCAwIDEgMTQuNjggMGw0Ny4wNiAyMy40M2M0LjA1IDEuOTYgNC4wNSA1LjI0IDAgNy4yNHptMC0xMzYuNTNsLTQ3LjA2LTIzLjQzYTE4LjYyIDE4LjYyIDAgMCAwLTE0LjY4IDBsLTEzNC43NiA2Ny4wOGExOC42OCAxOC42OCAwIDAgMS0xNC42NyAwTDgxLjkxIDIyMC43MWExOC42NSAxOC42NSAwIDAgMC0xNC42OSAwbC00Ny4wNiAyMy40M2MtNCAyLTQgNS4yOSAwIDcuMzFsMTk2LjUxIDk3LjhhMTguNiAxOC42IDAgMCAwIDE0LjY3IDBsMTk2LjUtOTcuOGM0LjA1LTIuMDIgNC4wNS01LjMgMC03LjMxek0yMC4xNiAxMzAuNDJsMTk2LjUgOTAuMjlhMjAuMDggMjAuMDggMCAwIDAgMTQuNjcgMGwxOTYuNTEtOTAuMjljNC0xLjg2IDQtNC44OSAwLTYuNzRMMjMxLjMzIDMzLjRhMTkuODggMTkuODggMCAwIDAtMTQuNjcgMGwtMTk2LjUgOTAuMjhjLTQuMDUgMS44NS00LjA1IDQuODggMCA2Ljc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdXJvbW9iZWxleHBlcnRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJ2MTI4aDEyOFYzMkgwem0xMjAgMTIwSDhWNDBoMTEydjExMnptNDAtMTIwdjEyOGgxMjhWMzJIMTYwem0xMjAgMTIwSDE2OFY0MGgxMTJ2MTEyem00MC0xMjB2MTI4aDEyOFYzMkgzMjB6bTEyMCAxMjBIMzI4VjQwaDExMnYxMTJ6TTAgMTkydjEyOGgxMjhWMTkySDB6bTEyMCAxMjBIOFYyMDBoMTEydjExMnptNDAtMTIwdjEyOGgxMjhWMTkySDE2MHptMTIwIDEyMEgxNjhWMjAwaDExMnYxMTJ6bTQwLTEyMHYxMjhoMTI4VjE5MkgzMjB6bTEyMCAxMjBIMzI4VjIwMGgxMTJ2MTEyek0wIDM1MnYxMjhoMTI4VjM1Mkgwem0xMjAgMTIwSDhWMzYwaDExMnYxMTJ6bTQwLTEyMHYxMjhoMTI4VjM1MkgxNjB6bTEyMCAxMjBIMTY4VjM2MGgxMTJ2MTEyem00MC0xMjB2MTI4aDEyOFYzNTJIMzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdXlOTGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDMyQzEzMy4yNyAzMiA3Ljc5IDEzMi4zMiA3Ljc5IDI1NlMxMzMuMjcgNDgwIDI4OCA0ODBzMjgwLjIxLTEwMC4zMiAyODAuMjEtMjI0UzQ0Mi43MyAzMiAyODggMzJ6bS04NS4zOSAzNTcuMTlMNjQuMSAzOTAuNTVsNzcuMjUtMjkwLjc0aDEzMy40NGM2My4xNSAwIDg0LjkzIDI4LjY1IDc4IDcyLjg0YTYwLjI0IDYwLjI0IDAgMCAxLTEuNSA2Ljg1IDc3LjM5IDc3LjM5IDAgMCAwLTE3LjIxLTEuOTNjLTQyLjM1IDAtNzYuNjkgMzMuODgtNzYuNjkgNzUuNjUgMCAzNy4xNCAyNy4xNCA2OCA2Mi45MyA3NC40NS0xOC4yNCAzNy4xNi01Ni4xNiA2MC45Mi0xMTcuNzEgNjEuNTJ6TTM1OCAyMDcuMTFoMzJsLTIyLjE2IDkwLjMxaC0zNS40MWwtMTEuMTktMzUuNjMtNy44MyAzNS42M2gtMzcuODNsMjYuNjMtOTAuMzFoMzEuMzRsMTUgMzYuNzV6bTE0NS44NiAxODIuMDhIMzA2Ljc5TDMyMi42MyAzMjhhNzguOCA3OC44IDAgMCAwIDExLjQ3LjgzYzQyLjM0IDAgNzYuNjktMzMuODcgNzYuNjktNzUuNjUgMC0zMi42NS0yMS02MC40Ni01MC4zOC03MS4wNmwyMS4zMy04Mi4zNWg5Mi41bC01My4wNSAyMDUuMzZoMTAzLjg3ek0yMTEuNyAyNjkuMzlIMTg3bC0xMy44IDU2LjQ3aDI0LjdjMTYuMTQgMCAzMi4xMS0zLjE4IDM3Ljk0LTI2LjY1IDUuNTYtMjIuMzEtNy45OS0yOS44Mi0yNC4xNC0yOS44MnpNMjMzIDE3MGgtMjEuMzRMMjAwIDIxNy43MWgyMS4zN2MxOCAwIDM1LjM4LTE0LjY0IDM5LjIxLTMwLjE0QzI2NS4yMyAxNjguNzEgMjUxLjA3IDE3MCAyMzMgMTcwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdXlzZWxsYWRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxNTAuN2w0Mi45IDE2MC43aC04NS44TDIyNCAxNTAuN3pNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNjUuMyAzMjUuM2wtOTQuNS0yOTguN0gxNTkuOEw2NS4zIDQwNS4zSDE1NmwxMTEuNy05MS42IDI0LjIgOTEuNmg5MC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYW5hZGlhbk1hcGxlTGVhZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODMuOCAzNTEuN2MyLjUtMi41IDEwNS4yLTkyLjQgMTA1LjItOTIuNGwtMTcuNS03LjVjLTEwLTQuOS03LjQtMTEuNS01LTE3LjQgMi40LTcuNiAyMC4xLTY3LjMgMjAuMS02Ny4zcy00Ny43IDEwLTU3LjcgMTIuNWMtNy41IDIuNC0xMC0yLjUtMTIuNS03LjVzLTE1LTMyLjQtMTUtMzIuNC01Mi42IDU5LjktNTUuMSA2Mi4zYy0xMCA3LjUtMjAuMSAwLTE3LjYtMTAgMC0xMCAyNy42LTEyOS42IDI3LjYtMTI5LjZzLTMwLjEgMTcuNC00MC4xIDIyLjRjLTcuNSA1LTEyLjYgNS0xNy42LTVDMjkzLjUgNzIuMyAyNTUuOSAwIDI1NS45IDBzLTM3LjUgNzIuMy00Mi41IDc5LjhjLTUgMTAtMTAgMTAtMTcuNiA1LTEwLTUtNDAuMS0yMi40LTQwLjEtMjIuNFMxODMuMyAxODIgMTgzLjMgMTkyYzIuNSAxMC03LjUgMTcuNS0xNy42IDEwLTIuNS0yLjUtNTUuMS02Mi4zLTU1LjEtNjIuM1M5OC4xIDE2NyA5NS42IDE3MnMtNSA5LjktMTIuNSA3LjVDNzMgMTc3IDI1LjQgMTY3IDI1LjQgMTY3czE3LjYgNTkuNyAyMC4xIDY3LjNjMi40IDYgNSAxMi41LTUgMTcuNEwyMyAyNTkuM3MxMDIuNiA4OS45IDEwNS4yIDkyLjRjNS4xIDUgMTAgNy41IDUuMSAyMi41LTUuMSAxNS0xMC4xIDM1LjEtMTAuMSAzNS4xczk1LjItMjAuMSAxMDUuMy0yMi42YzguNy0uOSAxOC4zIDIuNSAxOC4zIDEyLjVTMjQxIDUxMiAyNDEgNTEyaDMwcy01LjgtMTAyLjctNS44LTExMi44IDkuNS0xMy40IDE4LjQtMTIuNWMxMCAyLjUgMTA1LjIgMjIuNiAxMDUuMiAyMi42cy01LTIwLjEtMTAtMzUuMSAwLTE3LjUgNS0yMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY0FtYXpvblBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjQuNyAyMDEuOGMuMS0xMS44IDAtMjMuNSAwLTM1LjN2LTM1LjNjMC0xLjMuNC0yIDEuNC0yLjcgMTEuNS04IDI0LjEtMTIuMSAzOC4yLTExLjEgMTIuNS45IDIyLjcgNyAyOC4xIDIxLjcgMy4zIDguOSA0LjEgMTguMiA0LjEgMjcuNyAwIDguNy0uNyAxNy4zLTMuNCAyNS42LTUuNyAxNy44LTE4LjcgMjQuNy0zNS43IDIzLjktMTEuNy0uNS0yMS45LTUtMzEuNC0xMS43LS45LS44LTEuNC0xLjYtMS4zLTIuOHptMTU0LjkgMTQuNmM0LjYgMS44IDkuMyAyIDE0LjEgMS41IDExLjYtMS4yIDIxLjktNS43IDMxLjMtMTIuNS45LS42IDEuMy0xLjMgMS4zLTIuNS0uMS0zLjkgMC03LjkgMC0xMS44IDAtNC0uMS04IDAtMTIgMC0xLjQtLjQtMi0xLjgtMi4yLTctLjktMTMuOS0yLjItMjAuOS0yLjktNy0uNi0xNC0uMy0yMC44IDEuOS02LjcgMi4yLTExLjcgNi4yLTEzLjcgMTMuMS0xLjYgNS40LTEuNiAxMC44LjEgMTYuMiAxLjYgNS41IDUuMiA5LjIgMTAuNCAxMS4yek01NzYgODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS0yMDcuNSAyMy45Yy40IDEuNy45IDMuNCAxLjYgNS4xIDE2LjUgNDAuNiAzMi45IDgxLjMgNDkuNSAxMjEuOSAxLjQgMy41IDEuNyA2LjQuMiA5LjktMi44IDYuMi00LjkgMTIuNi03LjggMTguNy0yLjYgNS41LTYuNyA5LjUtMTIuNyAxMS4yLTQuMiAxLjEtOC41IDEuMy0xMi45LjktMi4xLS4yLTQuMi0uNy02LjMtLjgtMi44LS4yLTQuMiAxLjEtNC4zIDQtLjEgMi44LS4xIDUuNiAwIDguMy4xIDQuNiAxLjYgNi43IDYuMiA3LjUgNC43LjggOS40IDEuNiAxNC4yIDEuNyAxNC4zLjMgMjUuNy01LjQgMzMuMS0xNy45IDIuOS00LjkgNS42LTEwLjEgNy43LTE1LjQgMTkuOC01MC4xIDM5LjUtMTAwLjMgNTkuMi0xNTAuNS42LTEuNSAxLjEtMyAxLjMtNC42LjQtMi40LS43LTMuNi0zLjEtMy43LTUuNi0uMS0xMS4xIDAtMTYuNyAwLTMuMSAwLTUuMyAxLjQtNi40IDQuMy0uNCAxLjEtLjkgMi4zLTEuMyAzLjRsLTI5LjEgODMuN2MtMi4xIDYuMS00LjIgMTIuMS02LjUgMTguNi0uNC0uOS0uNi0xLjQtLjgtMS45LTEwLjgtMjkuOS0yMS42LTU5LjktMzIuNC04OS44LTEuNy00LjctMy41LTkuNS01LjMtMTQuMi0uOS0yLjUtMi43LTQtNS40LTQtNi40LS4xLTEyLjgtLjItMTkuMi0uMS0yLjIgMC0zLjMgMS42LTIuOCAzLjd6TTI0Mi40IDIwNmMxLjcgMTEuNyA3LjYgMjAuOCAxOCAyNi42IDkuOSA1LjUgMjAuNyA2LjIgMzEuNyA0LjYgMTIuNy0xLjkgMjMuOS03LjMgMzMuOC0xNS41LjQtLjMuOC0uNiAxLjQtMSAuNSAzLjIuOSA2LjIgMS41IDkuMi41IDIuNiAyLjEgNC4zIDQuNSA0LjQgNC42LjEgOS4xLjEgMTMuNyAwIDIuMy0uMSAzLjgtMS42IDQtMy45LjEtLjguMS0xLjYuMS0yLjN2LTg4LjhjMC0zLjYtLjItNy4yLS43LTEwLjgtMS42LTEwLjgtNi4yLTE5LjctMTUuOS0yNS40LTUuNi0zLjMtMTEuOC01LTE4LjItNS45LTMtLjQtNi0uNy05LjEtMS4xaC0xMGMtLjguMS0xLjYuMy0yLjUuMy04LjIuNC0xNi4zIDEuNC0yNC4yIDMuNS01LjEgMS4zLTEwIDMuMi0xNSA0LjktMyAxLTQuNSAzLjItNC40IDYuNS4xIDIuOC0uMSA1LjYgMCA4LjMuMSA0LjEgMS44IDUuMiA1LjcgNC4xIDYuNS0xLjcgMTMuMS0zLjUgMTkuNy00LjggMTAuMy0xLjkgMjAuNy0yLjcgMzEuMS0xLjIgNS40LjggMTAuNSAyLjQgMTQuMSA3IDMuMSA0IDQuMiA4LjggNC40IDEzLjcuMyA2LjkuMiAxMy45LjMgMjAuOCAwIC40LS4xLjctLjIgMS4yLS40IDAtLjggMC0xLjEtLjEtOC44LTIuMS0xNy43LTMuNi0yNi44LTQuMS05LjUtLjUtMTguOS4xLTI3LjkgMy4yLTEwLjggMy44LTE5LjUgMTAuMy0yNC42IDIwLjgtNC4xIDguMy00LjYgMTctMy40IDI1Ljh6TTk4LjcgMTA2Ljl2MTc1LjNjMCAuOCAwIDEuNy4xIDIuNS4yIDIuNSAxLjcgNC4xIDQuMSA0LjIgNS45LjEgMTEuOC4xIDE3LjcgMCAyLjUgMCA0LTEuNyA0LjEtNC4xLjEtLjguMS0xLjcuMS0yLjV2LTYwLjdjLjkuNyAxLjQgMS4yIDEuOSAxLjYgMTUgMTIuNSAzMi4yIDE2LjYgNTEuMSAxMi45IDE3LjEtMy40IDI4LjktMTMuOSAzNi43LTI5LjIgNS44LTExLjYgOC4zLTI0LjEgOC43LTM3IC41LTE0LjMtMS0yOC40LTYuOC00MS43LTcuMS0xNi40LTE4LjktMjcuMy0zNi43LTMwLjktMi43LS42LTUuNS0uOC04LjItMS4yaC03Yy0xLjIuMi0yLjQuMy0zLjYuNS0xMS43IDEuNC0yMi4zIDUuOC0zMS44IDEyLjctMiAxLjQtMy45IDMtNS45IDQuNS0uMS0uNS0uMy0uOC0uNC0xLjItLjQtMi4zLS43LTQuNi0xLjEtNi45LS42LTMuOS0yLjUtNS41LTYuNC01LjZoLTkuN2MtNS45LS4xLTYuOSAxLTYuOSA2Ljh6TTQ5My42IDMzOWMtMi43LS43LTUuMSAwLTcuNiAxLTQzLjkgMTguNC04OS41IDMwLjItMTM2LjggMzUuOC0xNC41IDEuNy0yOS4xIDIuOC00My43IDMuMi0yNi42LjctNTMuMi0uOC03OS42LTQuMy0xNy44LTIuNC0zNS41LTUuNy01My05LjktMzctOC45LTcyLjctMjEuNy0xMDYuNy0zOC44LTguOC00LjQtMTcuNC05LjMtMjYuMS0xNC0zLjgtMi4xLTYuMi0xLjUtOC4yIDIuMXYxLjdjMS4yIDEuNiAyLjIgMy40IDMuNyA0LjggMzYgMzIuMiA3Ni42IDU2LjUgMTIyIDcyLjkgMjEuOSA3LjkgNDQuNCAxMy43IDY3LjMgMTcuNSAxNCAyLjMgMjggMy44IDQyLjIgNC41IDMgLjEgNiAuMiA5IC40LjcgMCAxLjQuMiAyLjEuM2gxNy43Yy43LS4xIDEuNC0uMyAyLjEtLjMgMTQuOS0uNCAyOS44LTEuOCA0NC42LTQgMjEuNC0zLjIgNDIuNC04LjEgNjIuOS0xNC43IDI5LjYtOS42IDU3LjctMjIuNCA4My40LTQwLjEgMi44LTEuOSA1LjctMy44IDgtNi4yIDQuMy00LjQgMi4zLTEwLjQtMy4zLTExLjl6bTUwLjQtMjcuN2MtLjgtNC4yLTQtNS44LTcuNi03LTUuNy0xLjktMTEuNi0yLjgtMTcuNi0zLjMtMTEtLjktMjItLjQtMzIuOCAxLjYtMTIgMi4yLTIzLjQgNi4xLTMzLjUgMTMuMS0xLjIuOC0yLjQgMS44LTMuMSAzLS42LjktLjcgMi4zLS41IDMuNC4zIDEuMyAxLjcgMS42IDMgMS41LjYgMCAxLjIgMCAxLjgtLjFsMTkuNS0yLjFjOS42LS45IDE5LjItMS41IDI4LjgtLjggNC4xLjMgOC4xIDEuMiAxMiAyLjIgNC4zIDEuMSA2LjIgNC40IDYuNCA4LjcuMyA2LjctMS4yIDEzLjEtMi45IDE5LjUtMy41IDEyLjktOC4zIDI1LjQtMTMuMyAzNy44LS4zLjgtLjcgMS43LS44IDIuNS0uNCAyLjUgMSA0IDMuNCAzLjUgMS40LS4zIDMtMS4xIDQtMi4xIDMuNy0zLjYgNy41LTcuMiAxMC42LTExLjIgMTAuNy0xMy44IDE3LTI5LjYgMjAuNy00Ni42LjctMyAxLjItNi4xIDEuNy05LjEuMi00LjcuMi05LjYuMi0xNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY0FtZXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI1LjEgMTY3LjhjMC0xNi40LTE0LjEtMTguNC0yNy40LTE4LjRsLTM5LjEtLjN2NjkuM0gyNzV2LTI1LjFoMThjMTguNCAwIDE0LjUgMTAuMyAxNC44IDI1LjFoMTYuNnYtMTMuNWMwLTkuMi0xLjUtMTUuMS0xMS0xOC40IDcuNC0zIDExLjgtMTAuNyAxMS43LTE4Ljd6bS0yOS40IDExLjNIMjc1di0xNS4zaDIxYzUuMSAwIDEwLjcgMSAxMC43IDcuNCAwIDYuNi01LjMgNy45LTExIDcuOXpNMjc5IDI2OC42aC01Mi43bC0yMSAyMi44LTIwLjUtMjIuOGgtNjYuNWwtLjEgNjkuM2g2NS40bDIxLjMtMjMgMjAuNCAyM2gzMi4ybC4xLTIzLjNjMTguOSAwIDQ5LjMgNC42IDQ5LjMtMjMuMyAwLTE3LjMtMTIuMy0yMi43LTI3LjktMjIuN3ptLTEwMy44IDU0LjdoLTQwLjZ2LTEzLjhoMzYuM3YtMTQuMWgtMzYuM3YtMTIuNWg0MS43bDE3LjkgMjAuMnptNjUuOCA4LjJsLTI1LjMtMjguMUwyNDEgMjc2em0zNy44LTMxaC0yMS4ydi0xNy42aDIxLjVjNS42IDAgMTAuMiAyLjMgMTAuMiA4LjQgMCA2LjQtNC42IDkuMi0xMC41IDkuMnptLTMxLjYtMTM2Ljd2LTE0LjZoLTU1LjV2NjkuM2g1NS41di0xNC4zaC0zOC45di0xMy44aDM3Ljh2LTE0LjFoLTM3Ljh2LTEyLjV6TTU3NiAyNTUuNGgtLjJ6bS0xOTQuNiAzMS45YzAtMTYuNC0xNC4xLTE4LjctMjcuMS0xOC43aC0zOS40bC0uMSA2OS4zaDE2LjZsLjEtMjUuM2gxNy42YzExIDAgMTQuOCAyIDE0LjggMTMuOGwtLjEgMTEuNWgxNi42bC4xLTEzLjhjMC04LjktMS44LTE1LjEtMTEtMTguNCA3LjctMy4xIDExLjgtMTAuOCAxMS45LTE4LjR6bS0yOS4yIDExLjJoLTIwLjd2LTE1LjZoMjFjNS4xIDAgMTAuNyAxIDEwLjcgNy40IDAgNi45LTUuNCA4LjItMTEgOC4yem0tMTcyLjgtODB2LTY5LjNoLTI3LjZsLTE5LjcgNDctMjEuNy00N0g4My4zdjY1LjdsLTI4LjEtNjUuN0gzMC43TDEgMjE4LjVoMTcuOWw2LjQtMTUuM2gzNC41bDYuNCAxNS4zSDEwMHYtNTQuMmwyNCA1NC4yaDE0LjZsMjQtNTQuMnY1NC4yek0zMS4yIDE4OC44bDExLjItMjcuNiAxMS41IDI3LjZ6bTQ3Ny40IDE1OC45di00LjVjLTEwLjggNS42LTMuOSA0LjUtMTU2LjcgNC41IDAtMjUuMi4xLTIzLjkgMC0yNS4yLTEuNy0uMS0zLjItLjEtOS40LS4xIDAgMTcuOS0uMSA2LjgtLjEgMjUuM2gtMzkuNmMwLTEyLjEuMS0xNS4zLjEtMjkuMi0xMCA2LTIyLjggNi40LTM0LjMgNi4yIDAgMTQuNy0uMSA4LjMtLjEgMjNoLTQ4LjljLTUuMS01LjctMi43LTMuMS0xNS40LTE3LjQtMy4yIDMuNS0xMi44IDEzLjktMTYuMSAxNy40aC04MnYtOTIuM2g4My4xYzUgNS42IDIuOCAzLjEgMTUuNSAxNy4yIDMuMi0zLjUgMTIuMi0xMy40IDE1LjctMTcuMmg1OGM5LjggMCAxOCAxLjkgMjQuMyA1LjZ2LTUuNmM1NC4zIDAgNjQuMy0xLjQgNzUuNyA1LjF2LTUuMWg3OC4ydjUuMmMxMS40LTYuOSAxOS42LTUuMiA2NC45LTUuMnY1YzEwLjMtNS45IDE2LjYtNS4yIDU0LjMtNVY4MGMwLTI2LjUtMjEuNS00OC00OC00OGgtNDgwYy0yNi41IDAtNDggMjEuNS00OCA0OHYxMDkuOGM5LjQtMjEuOSAxOS43LTQ2IDIzLjEtNTMuOWgzOS43YzQuMyAxMC4xIDEuNiAzLjcgOSAyMS4xdi0yMS4xaDQ2YzIuOSA2LjIgMTEuMSAyNCAxMy45IDMwIDUuOC0xMy42IDEwLjEtMjMuOSAxMi42LTMwaDEwM2MwLS4xIDExLjUgMCAxMS42IDAgNDMuNy4yIDUzLjYtLjggNjQuNCA1LjN2LTUuM0gzNjN2OS4zYzcuNi02LjEgMTcuOS05LjMgMzAuNy05LjNoMjcuNmMwIC41IDEuOS4zIDIuMy4zSDQ1NmM0LjIgOS44IDIuNiA2IDguOCAyMC42di0yMC42aDQzLjNjNC45IDgtMS0xLjggMTEuMiAxOC40di0xOC40aDM5Ljl2OTJoLTQxLjZjLTUuNC05LTEuNC0yLjItMTMuMi0yMS45djIxLjloLTUyLjhjLTYuNC0xNC44LS4xLS4zLTYuNi0xNS4zaC0xOWMtNC4yIDEwLTIuMiA1LjItNi40IDE1LjNoLTI2LjhjLTEyLjMgMC0yMi4zLTMtMjkuNy04Ljl2OC45aC02Ni41Yy0uMy0xMy45LS4xLTI0LjgtLjEtMjQuOC0xLjgtLjMtMy40LS4yLTkuOC0uMnYyNS4xSDE1MS4ydi0xMS40Yy0yLjUgNS42LTIuNyA1LjktNS4xIDExLjRoLTI5LjVjLTQtOC45LTIuOS02LjQtNS4xLTExLjR2MTEuNEg1OC42Yy00LjItMTAuMS0yLjItNS4zLTYuNC0xNS4zSDMzYy00LjIgMTAtMi4yIDUuMi02LjQgMTUuM0gwVjQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODAuMWMyNi41IDAgNDgtMjEuNSA0OC00OHYtOTAuNGMtMTIuNyA4LjMtMzIuNyA2LjEtNjcuNSA2LjF6bTM2LjMtNjQuNUg1NzV2LTE0LjZoLTMyLjljLTEyLjggMC0yMy44IDYuNi0yMy44IDIwLjcgMCAzMyA0Mi43IDEyLjggNDIuNyAyNy40IDAgNS4xLTQuMyA2LjQtOC40IDYuNGgtMzJsLS4xIDE0LjhoMzJjOC40IDAgMTcuNi0xLjggMjIuNS04Ljl2LTI1LjhjLTEwLjUtMTMuOC0zOS4zLTEuMy0zOS4zLTEzLjUgMC01LjggNC42LTYuNSA5LjItNi41em0tNTcgMzkuOGgtMzIuMmwtLjEgMTQuOGgzMi4yYzE0LjggMCAyNi4yLTUuNiAyNi4yLTIyIDAtMzMuMi00Mi45LTExLjItNDIuOS0yNi4zIDAtNS42IDQuOS02LjQgOS4yLTYuNGgzMC40di0xNC42aC0zMy4yYy0xMi44IDAtMjMuNSA2LjYtMjMuNSAyMC43IDAgMzMgNDIuNyAxMi41IDQyLjcgMjcuNC0uMSA1LjQtNC43IDYuNC04LjggNi40em0tNDIuMi00MC4xdi0xNC4zaC01NS4ybC0uMSA2OS4zaDU1LjJsLjEtMTQuMy0zOC42LS4zdi0xMy44SDQ0NXYtMTQuMWgtMzcuOHYtMTIuNXptLTU2LjMtMTA4LjFjLS4zLjItMS40IDIuMi0xLjQgNy42IDAgNiAuOSA3LjcgMS4xIDcuOS4yLjEgMS4xLjUgMy40LjVsNy4zLTE2LjljLTEuMSAwLTIuMS0uMS0zLjEtLjEtNS42IDAtNyAuNy03LjMgMXptMjAuNC0xMC41aC0uMXptLTE2LjItMTUuMmMtMjMuNSAwLTM0IDEyLTM0IDM1LjMgMCAyMi4yIDEwLjIgMzQgMzMgMzRoMTkuMmw2LjQtMTUuM2gzNC4zbDYuNiAxNS4zaDMzLjd2LTUxLjlsMzEuMiA1MS45aDIzLjZ2LTY5aC0xNi45djQ4LjFsLTI5LjEtNDguMWgtMjUuM3Y2NS40bC0yNy45LTY1LjRoLTI0LjhsLTIzLjUgNTQuNWgtNy40Yy0xMy4zIDAtMTYuMS04LjEtMTYuMS0xOS45IDAtMjMuOCAxNS43LTIwIDMzLjEtMTkuN3YtMTUuMnptNDIuMSAxMi4xbDExLjIgMjcuNmgtMjIuOHptLTEwMS4xLTEydjY5LjNoMTYuOXYtNjkuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NBcHBsZVBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDIuMiAyMTguNGMwIDE3LjItMTAuNSAyNy4xLTI5IDI3LjFoLTI0LjN2LTU0LjJoMjQuNGMxOC40IDAgMjguOSA5LjggMjguOSAyNy4xem00Ny41IDYyLjZjMCA4LjMgNy4yIDEzLjcgMTguNSAxMy43IDE0LjQgMCAyNS4yLTkuMSAyNS4yLTIxLjl2LTcuN2wtMjMuNSAxLjVjLTEzLjMuOS0yMC4yIDUuOC0yMC4yIDE0LjR6TTU3NiA3OXYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4Vjc5YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTI3LjggMTk3LjJjOC40LjcgMTYuOC00LjIgMjIuMS0xMC40IDUuMi02LjQgOC42LTE1IDcuNy0yMy43LTcuNC4zLTE2LjYgNC45LTIxLjkgMTEuMy00LjggNS41LTguOSAxNC40LTcuOSAyMi44em02MC42IDc0LjVjLS4yLS4yLTE5LjYtNy42LTE5LjgtMzAtLjItMTguNyAxNS4zLTI3LjcgMTYtMjguMi04LjgtMTMtMjIuNC0xNC40LTI3LjEtMTQuNy0xMi4yLS43LTIyLjYgNi45LTI4LjQgNi45LTUuOSAwLTE0LjctNi42LTI0LjMtNi40LTEyLjUuMi0yNC4yIDcuMy0zMC41IDE4LjYtMTMuMSAyMi42LTMuNCA1NiA5LjMgNzQuNCA2LjIgOS4xIDEzLjcgMTkuMSAyMy41IDE4LjcgOS4zLS40IDEzLTYgMjQuMi02IDExLjMgMCAxNC41IDYgMjQuMyA1LjkgMTAuMi0uMiAxNi41LTkuMSAyMi44LTE4LjIgNi45LTEwLjQgOS44LTIwLjQgMTAtMjF6bTEzNS40LTUzLjRjMC0yNi42LTE4LjUtNDQuOC00NC45LTQ0LjhoLTUxLjJ2MTM2LjRoMjEuMnYtNDYuNmgyOS4zYzI2LjggMCA0NS42LTE4LjQgNDUuNi00NXptOTAgMjMuN2MwLTE5LjctMTUuOC0zMi40LTQwLTMyLjQtMjIuNSAwLTM5LjEgMTIuOS0zOS43IDMwLjVoMTkuMWMxLjYtOC40IDkuNC0xMy45IDIwLTEzLjkgMTMgMCAyMC4yIDYgMjAuMiAxNy4ydjcuNWwtMjYuNCAxLjZjLTI0LjYgMS41LTM3LjkgMTEuNi0zNy45IDI5LjEgMCAxNy43IDEzLjcgMjkuNCAzMy40IDI5LjQgMTMuMyAwIDI1LjYtNi43IDMxLjItMTcuNGguNFYzMTBoMTkuNnYtNjh6TTUxNiAyMTAuOWgtMjEuNWwtMjQuOSA4MC42aC0uNGwtMjQuOS04MC42SDQyMmwzNS45IDk5LjMtMS45IDZjLTMuMiAxMC4yLTguNSAxNC4yLTE3LjkgMTQuMi0xLjcgMC00LjktLjItNi4yLS4zdjE2LjRjMS4yLjQgNi41LjUgOC4xLjUgMjAuNyAwIDMwLjQtNy45IDM4LjktMzEuOEw1MTYgMjEwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjRGluZXJzQ2x1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzkuNyA3OS45Yy05Ni45IDAtMTc1LjggNzguNi0xNzUuOCAxNzUuOCAwIDk2LjkgNzguOSAxNzUuOCAxNzUuOCAxNzUuOCA5Ny4yIDAgMTc1LjgtNzguOSAxNzUuOC0xNzUuOCAwLTk3LjItNzguNi0xNzUuOC0xNzUuOC0xNzUuOHptLTM5LjkgMjc5LjZjLTQxLjctMTUuOS03MS40LTU2LjQtNzEuNC0xMDMuOHMyOS43LTg3LjkgNzEuNC0xMDQuMXYyMDcuOXptNzkuOC4zVjE1MS42YzQxLjcgMTYuMiA3MS40IDU2LjcgNzEuNCAxMDQuMXMtMjkuNyA4Ny45LTcxLjQgMTA0LjF6TTUyOCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTMyOS43IDQ0OGgtOTAuM2MtMTA2LjIgMC0xOTMuOC04NS41LTE5My44LTE5MC4yQzQ1LjYgMTQzLjIgMTMzLjIgNjQgMjM5LjQgNjRoOTAuM2MxMDUgMCAyMDAuNyA3OS4yIDIwMC43IDE5My44IDAgMTA0LjctOTUuNyAxOTAuMi0yMDAuNyAxOTAuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NEaXNjb3ZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjAuNCAxOTYuMWMwLTcuOS01LjUtMTIuMS0xNS42LTEyLjFoLTQuOXYyNC45aDQuN2MxMC4zIDAgMTUuOC00LjQgMTUuOC0xMi44ek01MjggMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tNDQuMSAxMzguOWMyMi42IDAgNTIuOS00LjEgNTIuOSAyNC40IDAgMTIuNi02LjYgMjAuNy0xOC43IDIzLjJsMjUuOCAzNC40aC0xOS42bC0yMi4yLTMyLjhoLTIuMnYzMi44aC0xNnptLTU1LjkuMWg0NS4zdjE0SDQ0NHYxOC4yaDI4LjNWMjE3SDQ0NHYyMi4yaDI5LjNWMjUzSDQyOHptLTY4LjcgMGwyMS45IDU1LjIgMjIuMi01NS4yaDE3LjVsLTM1LjUgODQuMmgtOC42bC0zNS04NC4yem0tNTUuOS0zYzI0LjcgMCA0NC42IDIwIDQ0LjYgNDQuNiAwIDI0LjctMjAgNDQuNi00NC42IDQ0LjYtMjQuNyAwLTQ0LjYtMjAtNDQuNi00NC42IDAtMjQuNyAyMC00NC42IDQ0LjYtNDQuNnptLTQ5LjMgNi4xdjE5Yy0yMC4xLTIwLjEtNDYuOC00LjctNDYuOCAxOSAwIDI1IDI3LjUgMzguNSA0Ni44IDE5LjJ2MTljLTI5LjcgMTQuMy02My4zLTUuNy02My4zLTM4LjIgMC0zMS4yIDMzLjEtNTMgNjMuMy0zOHptLTk3LjIgNjYuM2MxMS40IDAgMjIuNC0xNS4zLTMuMy0yNC40LTE1LTUuNS0yMC4yLTExLjQtMjAuMi0yMi43IDAtMjMuMiAzMC42LTMxLjQgNDkuNy0xNC4zbC04LjQgMTAuOGMtMTAuNC0xMS42LTI0LjktNi4yLTI0LjkgMi41IDAgNC40IDIuNyA2LjkgMTIuMyAxMC4zIDE4LjIgNi42IDIzLjYgMTIuNSAyMy42IDI1LjYgMCAyOS41LTM4LjggMzcuNC01Ni42IDExLjNsMTAuMy05LjljMy43IDcuMSA5LjkgMTAuOCAxNy41IDEwLjh6TTU1LjQgMjUzSDMydi04MmgyMy40YzI2LjEgMCA0NC4xIDE3IDQ0LjEgNDEuMSAwIDE4LjUtMTMuMiA0MC45LTQ0LjEgNDAuOXptNjcuNSAwaC0xNnYtODJoMTZ6TTU0NCA0MzNjMCA4LjItNi44IDE1LTE1IDE1SDEyOGMxODkuNi0zNS42IDM4Mi43LTEzOS4yIDQxNi0xNjB6TTc0LjEgMTkxLjZjLTUuMi00LjktMTEuNi02LjYtMjEuOS02LjZINDh2NTQuMmg0LjJjMTAuMyAwIDE3LTIgMjEuOS02LjQgNS43LTUuMiA4LjktMTIuOCA4LjktMjAuN3MtMy4yLTE1LjUtOC45LTIwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjSmNiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMS41IDI0NC4zVjIxMmM0MS4yIDAgMzguNS4yIDM4LjUuMiA3LjMgMS4zIDEzLjMgNy4zIDEzLjMgMTYgMCA4LjgtNiAxNC41LTEzLjMgMTUuOC0xLjIuNC0zLjMuMy0zOC41LjN6bTQyLjggMjAuMmMtMi44LS43LTMuMy0uNS00Mi44LS41djM1YzM5LjYgMCA0MCAuMiA0Mi44LS41IDcuNS0xLjUgMTMuNS04IDEzLjUtMTcgMC04LjctNi0xNS41LTEzLjUtMTd6TTU3NiA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTgyIDE5Mi4zaC01N2MwIDY3LjEgMTAuNyAxMDkuNy0zNS44IDEwOS43LTE5LjUgMC0zOC44LTUuNy01Ny4yLTE0Ljh2MjhjMzAgOC4zIDY4IDguMyA2OCA4LjMgOTcuOSAwIDgyLTQ3LjcgODItMTMxLjJ6bTE3OC41IDQuNWMtNjMuNC0xNi0xNjUtMTQuOS0xNjUgNTkuMyAwIDc3LjEgMTA4LjIgNzMuNiAxNjUgNTkuMlYyODdDMzEyLjkgMzExLjcgMjUzIDMwOSAyNTMgMjU2czU5LjgtNTUuNiAxMDcuNS0zMS4ydi0yOHpNNTQ0IDI4Ni41YzAtMTguNS0xNi41LTMwLjUtMzgtMzJ2LS44YzE5LjUtMi43IDMwLjMtMTUuNSAzMC4zLTMwLjIgMC0xOS0xNS43LTMwLTM3LTMxIDAgMCA2LjMtLjMtMTIwLjMtLjN2MTI3LjVoMTIyLjdjMjQuMy4xIDQyLjMtMTIuOSA0Mi4zLTMzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjTWFzdGVyY2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODIuOSA0MTAuM2MwIDYuOC00LjYgMTEuNy0xMS4yIDExLjctNi44IDAtMTEuMi01LjItMTEuMi0xMS43IDAtNi41IDQuNC0xMS43IDExLjItMTEuNyA2LjYgMCAxMS4yIDUuMiAxMS4yIDExLjd6bS0zMTAuOC0xMS43Yy03LjEgMC0xMS4yIDUuMi0xMS4yIDExLjcgMCA2LjUgNC4xIDExLjcgMTEuMiAxMS43IDYuNSAwIDEwLjktNC45IDEwLjktMTEuNy0uMS02LjUtNC40LTExLjctMTAuOS0xMS43em0xMTcuNS0uM2MtNS40IDAtOC43IDMuNS05LjUgOC43aDE5LjFjLS45LTUuNy00LjQtOC43LTkuNi04Ljd6bTEwNy44LjNjLTYuOCAwLTEwLjkgNS4yLTEwLjkgMTEuNyAwIDYuNSA0LjEgMTEuNyAxMC45IDExLjcgNi44IDAgMTEuMi00LjkgMTEuMi0xMS43IDAtNi41LTQuNC0xMS43LTExLjItMTEuN3ptMTA1LjkgMjYuMWMwIC4zLjMuNS4zIDEuMSAwIC4zLS4zLjUtLjMgMS4xLS4zLjMtLjMuNS0uNS44LS4zLjMtLjUuNS0xLjEuNS0uMy4zLS41LjMtMS4xLjMtLjMgMC0uNSAwLTEuMS0uMy0uMyAwLS41LS4zLS44LS41LS4zLS4zLS41LS41LS41LS44LS4zLS41LS4zLS44LS4zLTEuMSAwLS41IDAtLjguMy0xLjEgMC0uNS4zLS44LjUtMS4xLjMtLjMuNS0uMy44LS41LjUtLjMuOC0uMyAxLjEtLjMuNSAwIC44IDAgMS4xLjMuNS4zLjguMyAxLjEuNXMuMi42LjUgMS4xem0tMi4yIDEuNGMuNSAwIC41LS4zLjgtLjMuMy0uMy4zLS41LjMtLjggMC0uMyAwLS41LS4zLS44LS4zIDAtLjUtLjMtMS4xLS4zaC0xLjZ2My41aC44VjQyNmguM2wxLjEgMS40aC44bC0xLjEtMS4zek01NzYgODF2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MWMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTY0IDIyMC42YzAgNzYuNSA2Mi4xIDEzOC41IDEzOC41IDEzOC41IDI3LjIgMCA1My45LTguMiA3Ni41LTIzLjEtNzIuOS01OS4zLTcyLjQtMTcxLjIgMC0yMzAuNS0yMi42LTE1LTQ5LjMtMjMuMS03Ni41LTIzLjEtNzYuNC0uMS0xMzguNSA2Mi0xMzguNSAxMzguMnptMjI0IDEwOC44YzcwLjUtNTUgNzAuMi0xNjIuMiAwLTIxNy41LTcwLjIgNTUuMy03MC41IDE2Mi42IDAgMjE3LjV6bS0xNDIuMyA3Ni4zYzAtOC43LTUuNy0xNC40LTE0LjctMTQuNy00LjYgMC05LjUgMS40LTEyLjggNi41LTIuNC00LjEtNi41LTYuNS0xMi4yLTYuNS0zLjggMC03LjYgMS40LTEwLjYgNS40VjM5MmgtOC4ydjM2LjdoOC4yYzAtMTguOS0yLjUtMzAuMiA5LTMwLjIgMTAuMiAwIDguMiAxMC4yIDguMiAzMC4yaDcuOWMwLTE4LjMtMi41LTMwLjIgOS0zMC4yIDEwLjIgMCA4LjIgMTAgOC4yIDMwLjJoOC4ydi0yM3ptNDQuOS0xMy43aC03Ljl2NC40Yy0yLjctMy4zLTYuNS01LjQtMTEuNy01LjQtMTAuMyAwLTE4LjIgOC4yLTE4LjIgMTkuMyAwIDExLjIgNy45IDE5LjMgMTguMiAxOS4zIDUuMiAwIDktMS45IDExLjctNS40djQuNmg3LjlWMzkyem00MC41IDI1LjZjMC0xNS0yMi45LTguMi0yMi45LTE1LjIgMC01LjcgMTEuOS00LjggMTguNS0xLjFsMy4zLTYuNWMtOS40LTYuMS0zMC4yLTYtMzAuMiA4LjIgMCAxNC4zIDIyLjkgOC4zIDIyLjkgMTUgMCA2LjMtMTMuNSA1LjgtMjAuNy44bC0zLjUgNi4zYzExLjIgNy42IDMyLjYgNiAzMi42LTcuNXptMzUuNCA5LjNsLTIuMi02LjhjLTMuOCAyLjEtMTIuMiA0LjQtMTIuMi00LjF2LTE2LjZoMTMuMVYzOTJoLTEzLjF2LTExLjJoLTguMlYzOTJoLTcuNnY3LjNoNy42VjQxNmMwIDE3LjYgMTcuMyAxNC40IDIyLjYgMTAuOXptMTMuMy0xMy40aDI3LjVjMC0xNi4yLTcuNC0yMi42LTE3LjQtMjIuNi0xMC42IDAtMTguMiA3LjktMTguMiAxOS4zIDAgMjAuNSAyMi42IDIzLjkgMzMuOCAxNC4ybC0zLjgtNmMtNy44IDYuNC0xOS42IDUuOC0yMS45LTQuOXptNTkuMS0yMS41Yy00LjYtMi0xMS42LTEuOC0xNS4yIDQuNFYzOTJoLTguMnYzNi43aDguMlY0MDhjMC0xMS42IDkuNS0xMC4xIDEyLjgtOC40bDIuNC03LjZ6bTEwLjYgMTguM2MwLTExLjQgMTEuNi0xNS4xIDIwLjctOC40bDMuOC02LjVjLTExLjYtOS4xLTMyLjctNC4xLTMyLjcgMTUgMCAxOS44IDIyLjQgMjMuOCAzMi43IDE1bC0zLjgtNi41Yy05LjIgNi41LTIwLjcgMi42LTIwLjctOC42em02Ni43LTE4LjNINDA4djQuNGMtOC4zLTExLTI5LjktNC44LTI5LjkgMTMuOSAwIDE5LjIgMjIuNCAyNC43IDI5LjkgMTMuOXY0LjZoOC4yVjM5MnptMzMuNyAwYy0yLjQtMS4yLTExLTIuOS0xNS4yIDQuNFYzOTJoLTcuOXYzNi43aDcuOVY0MDhjMC0xMSA5LTEwLjMgMTIuOC04LjRsMi40LTcuNnptNDAuMy0xNC45aC03Ljl2MTkuM2MtOC4yLTEwLjktMjkuOS01LjEtMjkuOSAxMy45IDAgMTkuNCAyMi41IDI0LjYgMjkuOSAxMy45djQuNmg3Ljl2LTUxLjd6bTcuNi03NS4xdjQuNmguOFYzMDJoMS45di0uOGgtNC42di44aDEuOXptNi42IDEyMy44YzAtLjUgMC0xLjEtLjMtMS42LS4zLS4zLS41LS44LS44LTEuMS0uMy0uMy0uOC0uNS0xLjEtLjgtLjUgMC0xLjEtLjMtMS42LS4zLS4zIDAtLjguMy0xLjQuMy0uNS4zLS44LjUtMS4xLjgtLjUuMy0uOC44LS44IDEuMS0uMy41LS4zIDEuMS0uMyAxLjYgMCAuMyAwIC44LjMgMS40IDAgLjMuMy44LjggMS4xLjMuMy41LjUgMS4xLjguNS4zIDEuMS4zIDEuNC4zLjUgMCAxLjEgMCAxLjYtLjMuMy0uMy44LS41IDEuMS0uOC4zLS4zLjUtLjguOC0xLjEuMy0uNi4zLTEuMS4zLTEuNHptMy4yLTEyNC43aC0xLjRsLTEuNiAzLjUtMS42LTMuNWgtMS40djUuNGguOHYtNC4xbDEuNiAzLjVoMS4xbDEuNC0zLjV2NC4xaDEuMXYtNS40em00LjQtODAuNWMwLTc2LjItNjIuMS0xMzguMy0xMzguNS0xMzguMy0yNy4yIDAtNTMuOSA4LjItNzYuNSAyMy4xIDcyLjEgNTkuMyA3My4yIDE3MS41IDAgMjMwLjUgMjIuNiAxNSA0OS41IDIzLjEgNzYuNSAyMy4xIDc2LjQuMSAxMzguNS02MS45IDEzOC41LTEzOC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY1BheXBhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODYuMyAyNTguMmMwIDEyLjItOS43IDIxLjUtMjIgMjEuNS05LjIgMC0xNi01LjItMTYtMTUgMC0xMi4yIDkuNS0yMiAyMS43LTIyIDkuMyAwIDE2LjMgNS43IDE2LjMgMTUuNXpNODAuNSAyMDkuN2gtNC43Yy0xLjUgMC0zIDEtMy4yIDIuN2wtNC4zIDI2LjcgOC4yLS4zYzExIDAgMTkuNS0xLjUgMjEuNS0xNC4yIDIuMy0xMy40LTYuMi0xNC45LTE3LjUtMTQuOXptMjg0IDBIMzYwYy0xLjggMC0zIDEtMy4yIDIuN2wtNC4yIDI2LjcgOC0uM2MxMyAwIDIyLTMgMjItMTgtLjEtMTAuNi05LjYtMTEuMS0xOC4xLTExLjF6TTU3NiA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTI4LjMgMjE1LjRjMC0yMS0xNi4yLTI4LTM0LjctMjhoLTQwYy0yLjUgMC01IDItNS4yIDQuN0wzMiAyOTQuMmMtLjMgMiAxLjIgNCAzLjIgNGgxOWMyLjcgMCA1LjItMi45IDUuNS01LjdsNC41LTI2LjZjMS03LjIgMTMuMi00LjcgMTgtNC43IDI4LjYgMCA0Ni4xLTE3IDQ2LjEtNDUuOHptODQuMiA4LjhoLTE5Yy0zLjggMC00IDUuNS00LjIgOC4yLTUuOC04LjUtMTQuMi0xMC0yMy43LTEwLTI0LjUgMC00My4yIDIxLjUtNDMuMiA0NS4yIDAgMTkuNSAxMi4yIDMyLjIgMzEuNyAzMi4yIDkgMCAyMC4yLTQuOSAyNi41LTExLjktLjUgMS41LTEgNC43LTEgNi4yIDAgMi4zIDEgNCAzLjIgNEgyMDBjMi43IDAgNS0yLjkgNS41LTUuN2wxMC4yLTY0LjNjLjMtMS45LTEuMi0zLjktMy4yLTMuOXptNDAuNSA5Ny45bDYzLjctOTIuNmMuNS0uNS41LTEgLjUtMS43IDAtMS43LTEuNS0zLjUtMy4yLTMuNWgtMTkuMmMtMS43IDAtMy41IDEtNC41IDIuNWwtMjYuNSAzOS0xMS0zNy41Yy0uOC0yLjItMy00LTUuNS00aC0xOC43Yy0xLjcgMC0zLjIgMS44LTMuMiAzLjUgMCAxLjIgMTkuNSA1Ni44IDIxLjIgNjIuMS0yLjcgMy44LTIwLjUgMjguNi0yMC41IDMxLjYgMCAxLjggMS41IDMuMiAzLjIgMy4yaDE5LjJjMS44LS4xIDMuNS0xLjEgNC41LTIuNnptMTU5LjMtMTA2LjdjMC0yMS0xNi4yLTI4LTM0LjctMjhoLTM5LjdjLTIuNyAwLTUuMiAyLTUuNSA0LjdsLTE2LjIgMTAyYy0uMiAyIDEuMyA0IDMuMiA0aDIwLjVjMiAwIDMuNS0xLjUgNC0zLjJsNC41LTI5YzEtNy4yIDEzLjItNC43IDE4LTQuNyAyOC40IDAgNDUuOS0xNyA0NS45LTQ1Ljh6bTg0LjIgOC44aC0xOWMtMy44IDAtNCA1LjUtNC4zIDguMi01LjUtOC41LTE0LTEwLTIzLjctMTAtMjQuNSAwLTQzLjIgMjEuNS00My4yIDQ1LjIgMCAxOS41IDEyLjIgMzIuMiAzMS43IDMyLjIgOS4zIDAgMjAuNS00LjkgMjYuNS0xMS45LS4zIDEuNS0xIDQuNy0xIDYuMiAwIDIuMyAxIDQgMy4yIDRINDg0YzIuNyAwIDUtMi45IDUuNS01LjdsMTAuMi02NC4zYy4zLTEuOS0xLjItMy45LTMuMi0zLjl6bTQ3LjUtMzMuM2MwLTItMS41LTMuNS0zLjItMy41aC0xOC41Yy0xLjUgMC0zIDEuMi0zLjIgMi43bC0xNi4yIDEwNC0uMy41YzAgMS44IDEuNSAzLjUgMy41IDMuNWgxNi41YzIuNSAwIDUtMi45IDUuMi01LjdMNTQ0IDE5MS4ydi0uM3ptLTkwIDUxLjhjLTEyLjIgMC0yMS43IDkuNy0yMS43IDIyIDAgOS43IDcgMTUgMTYuMiAxNSAxMiAwIDIxLjctOS4yIDIxLjctMjEuNS4xLTkuOC02LjktMTUuNS0xNi4yLTE1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjU3RyaXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5Mi40IDIyMC44Yy04LjkgMC0xOC43IDYuNy0xOC43IDIyLjdoMzYuN2MwLTE2LTkuMy0yMi43LTE4LTIyLjd6TTM3NSAyMjMuNGMtOC4yIDAtMTMuMyAyLjktMTcgN2wuMiA1Mi44YzMuNSAzLjcgOC41IDYuNyAxNi44IDYuNyAxMy4xIDAgMjEuOS0xNC4zIDIxLjktMzMuNCAwLTE4LjYtOS0zMy4yLTIxLjktMzMuMXpNNTI4IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MGMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTIyLjIgMjgxLjFjMCAyNS42LTIwLjMgNDAuMS00OS45IDQwLjMtMTIuMiAwLTI1LjYtMi40LTM4LjgtOC4xdi0zMy45YzEyIDYuNCAyNy4xIDExLjMgMzguOSAxMS4zIDcuOSAwIDEzLjYtMi4xIDEzLjYtOC43IDAtMTctNTQtMTAuNi01NC00OS45IDAtMjUuMiAxOS4yLTQwLjIgNDgtNDAuMiAxMS44IDAgMjMuNSAxLjggMzUuMyA2LjV2MzMuNGMtMTAuOC01LjgtMjQuNS05LjEtMzUuMy05LjEtNy41IDAtMTIuMSAyLjItMTIuMSA3LjcgMCAxNiA1NC4zIDguNCA1NC4zIDUwLjd6bTY4LjgtNTYuNmgtMjdWMjc1YzAgMjAuOSAyMi41IDE0LjQgMjcgMTIuNnYyOC45Yy00LjcgMi42LTEzLjMgNC43LTI0LjkgNC43LTIxLjEgMC0zNi45LTE1LjUtMzYuOS0zNi41bC4yLTExMy45IDM0LjctNy40djMwLjhIMTkxem03NCAyLjRjLTQuNS0xLjUtMTguNy0zLjYtMjcuMSA3LjR2ODQuNGgtMzUuNVYxOTQuMmgzMC43bDIuMiAxMC41YzguMy0xNS4zIDI0LjktMTIuMiAyOS42LTEwLjVoLjF6bTQ0LjEgOTEuOGgtMzUuN1YxOTQuMmgzNS43em0wLTE0Mi45bC0zNS43IDcuNnYtMjguOWwzNS43LTcuNnptNzQuMSAxNDUuNWMtMTIuNCAwLTIwLTUuMy0yNS4xLTlsLS4xIDQwLjItMzUuNSA3LjVWMTk0LjJoMzEuM2wxLjggOC44YzQuOS00LjUgMTMuOS0xMS4xIDI3LjgtMTEuMSAyNC45IDAgNDguNCAyMi41IDQ4LjQgNjMuOCAwIDQ1LjEtMjMuMiA2NS41LTQ4LjYgNjUuNnptMTYwLjQtNTEuNWgtNjkuNWMxLjYgMTYuNiAxMy44IDIxLjUgMjcuNiAyMS41IDE0LjEgMCAyNS4yLTMgMzQuOS03LjlWMzEyYy05LjcgNS4zLTIyLjQgOS4yLTM5LjQgOS4yLTM0LjYgMC01OC44LTIxLjctNTguOC02NC41IDAtMzYuMiAyMC41LTY0LjkgNTQuMy02NC45IDMzLjcgMCA1MS4zIDI4LjcgNTEuMyA2NS4xIDAgMy41LS4zIDEwLjktLjQgMTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NWaXNhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3MC4xIDIzMS4zczcuNiAzNy4yIDkuMyA0NUg0NDZjMy4zLTguOSAxNi00My41IDE2LTQzLjUtLjIuMyAzLjMtOS4xIDUuMy0xNC45bDIuOCAxMy40ek01NzYgODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTE1Mi41IDMzMS4yTDIxNS43IDE3NmgtNDIuNWwtMzkuMyAxMDYtNC4zLTIxLjUtMTQtNzEuNGMtMi4zLTkuOS05LjQtMTIuNy0xOC4yLTEzLjFIMzIuN2wtLjcgMy4xYzE1LjggNCAyOS45IDkuOCA0Mi4yIDE3LjFsMzUuOCAxMzVoNDIuNXptOTQuNC4yTDI3Mi4xIDE3NmgtNDAuMmwtMjUuMSAxNTUuNGg0MC4xem0xMzkuOS01MC44Yy4yLTE3LjctMTAuNi0zMS4yLTMzLjctNDIuMy0xNC4xLTcuMS0yMi43LTExLjktMjIuNy0xOS4yLjItNi42IDcuMy0xMy40IDIzLjEtMTMuNCAxMy4xLS4zIDIyLjcgMi44IDI5LjkgNS45bDMuNiAxLjcgNS41LTMzLjZjLTcuOS0zLjEtMjAuNS02LjYtMzYtNi42LTM5LjcgMC02Ny42IDIxLjItNjcuOCA1MS40LS4zIDIyLjMgMjAgMzQuNyAzNS4yIDQyLjIgMTUuNSA3LjYgMjAuOCAxMi42IDIwLjggMTkuMy0uMiAxMC40LTEyLjYgMTUuMi0yNC4xIDE1LjItMTYgMC0yNC42LTIuNS0zNy43LTguM2wtNS4zLTIuNS01LjYgMzQuOWM5LjQgNC4zIDI2LjggOC4xIDQ0LjggOC4zIDQyLjIuMSA2OS43LTIwLjggNzAtNTN6TTUyOCAzMzEuNEw0OTUuNiAxNzZoLTMxLjFjLTkuNiAwLTE2LjkgMi44LTIxIDEyLjlsLTU5LjcgMTQyLjVINDI2czYuOS0xOS4yIDguNC0yMy4zSDQ4NmMxLjIgNS41IDQuOCAyMy4zIDQuOCAyMy4zSDUyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2VudGVyY29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjkuMiAyNjguNmMtMy44IDM1LjItMzUuNCA2MC42LTcwLjYgNTYuOC0zNS4yLTMuOC02MC42LTM1LjQtNTYuOC03MC42IDMuOC0zNS4yIDM1LjQtNjAuNiA3MC42LTU2LjggMzUuMSAzLjggNjAuNiAzNS40IDU2LjggNzAuNnptLTg1LjggMjM1LjFDOTYuNyA0OTYtOC4yIDM2NS41IDEwLjEgMjI0LjNjMTEuMi04Ni42IDY1LjgtMTU2LjkgMTM5LjEtMTkyIDE2MS03Ny4xIDM0OS43IDM3LjQgMzU0LjcgMjE2LjYgNC4xIDE0Ny0xMTguNCAyNjIuMi0yNjAuNSAyNTQuOHptMTc5LjktMTgwYzI3LjktMTE4LTE2MC41LTIwNS45LTIzNy4yLTIzNC4yLTU3LjUgNTYuMy02OS4xIDE4OC42LTMzLjggMzQ0LjQgNjguOCAxNS44IDE2OS4xLTI2LjQgMjcxLTExMC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDZW50b3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg5LjYgOTcuNWwzMS42IDMxLjctNzYuMyA3Ni41Vjk3LjV6bS0xNjIuNCAzMS43bDc2LjMgNzYuNVY5Ny41aC00NC43em00MS41LTQxLjZoNDQuN3YxMjcuOWwxMC44IDEwLjggMTAuOC0xMC44Vjg3LjZoNDQuN0wyMjQuMiAzMnptMjYuMiAxNjguMWwtMTAuOC0xMC44SDU1LjV2LTQ0LjhMMCAyNTUuN2w1NS41IDU1LjZ2LTQ0LjhoMTI4LjZsMTAuOC0xMC44em03OS4zLTIwLjdoMTA3Ljl2LTQ0LjhsLTMxLjYtMzEuN3ptMTczLjMgMjAuN0wzOTIgMjAwLjF2NDQuOEgyNjQuM2wtMTAuOCAxMC44IDEwLjggMTAuOEgzOTJ2NDQuOGw1NS41LTU1LjZ6TTY1LjQgMTc2LjJsMzIuNS0zMS43IDkwLjMgOTAuNWgxNS4zdi0xNS4zbC05MC4zLTkwLjUgMzEuNi0zMS43SDY1LjR6bTMxNi43LTc4LjdoLTc4LjVsMzEuNiAzMS43LTkwLjMgOTAuNVYyMzVoMTUuM2w5MC4zLTkwLjUgMzEuNiAzMS43ek0yMDMuNSA0MTMuOVYzMDUuOGwtNzYuMyA3Ni41IDMxLjYgMzEuN2g0NC43ek02NS40IDIzNWgxMDguOGwtNzYuMy03Ni41LTMyLjUgMzEuN3ptMzE2LjcgMTAwLjJsLTMxLjYgMzEuNy05MC4zLTkwLjVoLTE1LjN2MTUuM2w5MC4zIDkwLjUtMzEuNiAzMS43aDc4LjV6bTAtNTguOEgyNzQuMmw3Ni4zIDc2LjUgMzEuNi0zMS43em0tNjAuOSAxMDUuOGwtNzYuMy03Ni41djEwOC4xaDQ0Ljd6TTk3LjkgMzUyLjlsNzYuMy03Ni41SDY1LjR2NDQuOHptMTgxLjggNzAuOUgyMzVWMjk1LjlsLTEwLjgtMTAuOC0xMC44IDEwLjh2MTI3LjloLTQ0LjdsNTUuNSA1NS42em0tMTY2LjUtNDEuNmw5MC4zLTkwLjV2LTE1LjNoLTE1LjNsLTkwLjMgOTAuNS0zMi41LTMxLjd2NzguN2g3OS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaHJvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMxLjUgMjE3LjVMNTUuMSAxMDAuMWM0Ny42LTU5LjIgMTE5LTkxLjggMTkyLTkyLjEgNDIuMy0uMyA4NS41IDEwLjUgMTI0LjggMzMuMiA0My40IDI1LjIgNzYuNCA2MS40IDk3LjQgMTAzTDI2NCAxMzMuNGMtNTguMS0zLjQtMTEzLjQgMjkuMy0xMzIuNSA4NC4xem0zMi45IDM4LjVjMCA0Ni4yIDM3LjQgODMuNiA4My42IDgzLjZzODMuNi0zNy40IDgzLjYtODMuNi0zNy40LTgzLjYtODMuNi04My42LTgzLjYgMzcuMy04My42IDgzLjZ6bTMxNC45LTg5LjJMMzM5LjYgMTc0YzM3LjkgNDQuMyAzOC41IDEwOC4yIDYuNiAxNTcuMkwyMzQuMSA1MDMuNmM0Ni41IDIuNSA5NC40LTcuNyAxMzcuOC0zMi45IDEwNy40LTYyIDE1MC45LTE5MiAxMDcuNC0zMDMuOXpNMTMzLjcgMzAzLjZMNDAuNCAxMjAuMUMxNC45IDE1OS4xIDAgMjA1LjkgMCAyNTZjMCAxMjQgOTAuOCAyMjYuNyAyMDkuNSAyNDQuOWw2My43LTEyNC44Yy01Ny42IDEwLjgtMTEzLjItMjAuOC0xMzkuNS03Mi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaHJvbWVjYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ny44LDY0SDY0Yy0yMy42LDAtNDIuNywxOS4xLTQyLjcsNDIuN3Y2My45SDY0di02My45aDM4My44djI5OC42SDI5OC42VjQ0OEg0NDhjMjMuNiwwLDQyLjctMTkuMSw0Mi43LTQyLjdWMTA2LjcgQzQ5MC43LDgzLjEsNDcxLjQsNjQsNDQ3LjgsNjR6IE0yMS4zLDM4My42TDIxLjMsMzgzLjZsMCw2My45aDYzLjlDODUuMiw0MTIuMiw1Ni42LDM4My42LDIxLjMsMzgzLjZMMjEuMywzODMuNnogTTIxLjMsMjk4LjZWMzQxIGM1OC45LDAsMTA2LjYsNDguMSwxMDYuNiwxMDdoNDIuN0MxNzAuNywzNjUuNiwxMDMuNywyOTguNywyMS4zLDI5OC42eiBNMjEzLjQsNDQ4aDQyLjdjLTAuNS0xMjkuNS0xMDUuMy0yMzQuMy0yMzQuOC0yMzQuNmwwLDQyLjQgQzEyNy4zLDI1NS42LDIxMy4zLDM0MiwyMTMuNCw0NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkZmxhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA3LjkwNiwzMTkuOTEzbC0yMzAuOC0yLjkyOGE0LjU4LDQuNTgsMCwwLDEtMy42MzItMS45MjYsNC42NDgsNC42NDgsMCwwLDEtLjQ5NC00LjE0Nyw2LjE0Myw2LjE0MywwLDAsMSw1LjM2MS00LjA3Nkw0MTEuMjgxLDMwMy45YzI3LjYzMS0xLjI2LDU3LjU0Ni0yMy41NzQsNjguMDIyLTUwLjc4NGwxMy4yODYtMzQuNTQyYTcuOTQ0LDcuOTQ0LDAsMCwwLC41MjQtMi45MzYsNy43MzUsNy43MzUsMCwwLDAtLjE2NC0xLjYzMUExNTEuOTEsMTUxLjkxLDAsMCwwLDIwMS4yNTcsMTk4LjQsNjguMTIsNjguMTIsMCwwLDAsOTQuMiwyNjkuNTlDNDEuOTI0LDI3MS4xMDYsMCwzMTMuNzI4LDAsMzY2LjEyYTk2LjA1NCw5Ni4wNTQsMCwwLDAsMS4wMjksMTMuOTU4LDQuNTA4LDQuNTA4LDAsMCwwLDQuNDQ1LDMuODcxbDQyNi4xLjA1MWMuMDQzLDAsLjA4LS4wMTkuMTIyLS4wMmE1LjYwNiw1LjYwNiwwLDAsMCw1LjI3MS00bDMuMjczLTExLjI2NWMzLjktMTMuNCwyLjQ0OC0yNS44LTQuMS0zNC45QzQzMC4xMjQsMzI1LjQyMyw0MjAuMDksMzIwLjQ4Nyw0MDcuOTA2LDMxOS45MTNaTTUxMy44NTYsMjIxLjFjLTIuMTQxLDAtNC4yNzEuMDYyLTYuMzkxLjE2NGEzLjc3MSwzLjc3MSwwLDAsMC0zLjMyNCwyLjY1M2wtOS4wNzcsMzEuMTkzYy0zLjksMTMuNC0yLjQ0OSwyNS43ODYsNC4xLDM0Ljg5LDYuMDIsOC40LDE2LjA1NCwxMy4zMjMsMjguMjM4LDEzLjlsNDkuMiwyLjkzOWE0LjQ5MSw0LjQ5MSwwLDAsMSwzLjUxLDEuODk0LDQuNjQsNC42NCwwLDAsMSwuNTE0LDQuMTY5LDYuMTUzLDYuMTUzLDAsMCwxLTUuMzUxLDQuMDc1bC01MS4xMjUsMi45MzljLTI3Ljc1NCwxLjI3LTU3LjY2OSwyMy41NzQtNjguMTQ1LDUwLjc4NGwtMy42OTUsOS42MDZhMi43MTYsMi43MTYsMCwwLDAsMi40MjcsMy42OGMuMDQ2LDAsLjA4OC4wMTcuMTM2LjAxN2gxNzUuOTFhNC42OSw0LjY5LDAsMCwwLDQuNTM5LTMuMzcsMTI0LjgwNywxMjQuODA3LDAsMCwwLDQuNjgyLTM0QzY0MCwyNzcuMyw1ODMuNTI0LDIyMS4xLDUxMy44NTYsMjIxLjFaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3Vkc2NhbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE4LjEgMTU0bC05LjQgNy42Yy0yMi41LTE5LjMtNTEuNS0zMy42LTgzLjMtMzMuNkMxNTMuOCAxMjggOTYgMTg4LjggOTYgMjYwLjNjMCA2LjYuNCAxMy4xIDEuNCAxOS40LTItNTYgNDEuOC05Ny40IDkyLjYtOTcuNCAyNC4yIDAgNDYuMiA5LjQgNjIuNiAyNC43bC0yNS4yIDIwLjRjLTguMy0uOS0xNi44IDEuOC0yMy4xIDguMS0xMS4xIDExLTExLjEgMjguOSAwIDQwIDExLjEgMTEgMjguOSAxMSA0MCAwIDYuMy02LjMgOS0xNC45IDguMS0yMy4xbDc1LjItODguOGM2LjMtNi41LTMuMy0xNS45LTkuNS05LjZ6bS04My44IDExMS41Yy01LjYgNS41LTE0LjYgNS41LTIwLjIgMC01LjYtNS42LTUuNi0xNC42IDAtMjAuMnMxNC42LTUuNiAyMC4yIDAgNS42IDE0LjcgMCAyMC4yek0yMjQgMzJDMTAwLjUgMzIgMCAxMzIuNSAwIDI1NnMxMDAuNSAyMjQgMjI0IDIyNCAyMjQtMTAwLjUgMjI0LTIyNFMzNDcuNSAzMiAyMjQgMzJ6bTAgMzg0Yy04OC4yIDAtMTYwLTcxLjgtMTYwLTE2MFMxMzUuOCA5NiAyMjQgOTZzMTYwIDcxLjggMTYwIDE2MC03MS44IDE2MC0xNjAgMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZHNtaXRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMzIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzMi41IDQxOS45YzAgNDYuNC0zNy42IDg0LjEtODQgODQuMXMtODQtMzcuNy04NC04NC4xIDM3LjYtODQgODQtODQgODQgMzcuNiA4NCA4NHptLTg0LTI0My45YzQ2LjQgMCA4MC0zNy42IDgwLTg0cy0zMy42LTg0LTgwLTg0LTg4IDM3LjYtODggODQtMjkuNiA3Ni03NiA3Ni04NCA0MS42LTg0IDg4IDM3LjYgODAgODQgODAgODQtMzMuNiA4NC04MCAzMy42LTgwIDgwLTgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZHZlcnNpZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDYxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ4LjYgMzA0YzguMiA2OC41IDY3LjQgMTE1LjUgMTQ2IDExMS4zIDUxLjIgNDMuMyAxMzYuOCA0NS44IDE4Ni40LTUuNiA2OS4yIDEuMSAxMTguNS00NC42IDEzMS41LTk5LjUgMTQuOC02Mi41LTE4LjItMTMyLjUtOTIuMS0xNTUuMS0zMy04OC4xLTEzMS40LTEwMS41LTE4Ni41LTg1LTU3LjMgMTcuMy04NC4zIDUzLjItOTkuMyAxMDkuNy03LjggMi43LTI2LjUgOC45LTQ1IDI0LjEgMTEuNyAwIDE1LjIgOC45IDE1LjIgMTkuNXYyMC40YzAgMTAuNy04LjcgMTkuNS0xOS41IDE5LjVoLTIwLjJjLTEwLjcgMC0xOS41LTYtMTkuNS0xNi43VjI0MEg5OC44Qzk1IDI0MCA4OCAyNDQuMyA4OCAyNTEuOXY0MC40YzAgNi40IDUuMyAxMS44IDExLjcgMTEuOGg0OC45em0yMjcuNCA4Yy0xMC43IDQ2LjMgMjEuNyA3Mi40IDU1LjMgODYuOEMzMjQuMSA0MzIuNiAyNTkuNyAzNDggMjk2IDI4OGMtMzMuMiAyMS42LTMzLjcgNzEuMi0yOS4yIDkyLjktMTcuOS0xMi40LTUzLjgtMzIuNC01Ny40LTc5LjgtMy0zOS45IDIxLjUtNzUuNyA1Ny05My45QzI5NyAxOTEuNCAzNjkuOSAxOTguNyA0MDAgMjQ4Yy0xNC4xLTQ4LTUzLjgtNzAuMS0xMDEuOC03NC44IDMwLjktMzAuNyA2NC40LTUwLjMgMTE0LjItNDMuNyA2OS44IDkuMyAxMzMuMiA4Mi44IDY3LjcgMTUwLjUgMzUtMTYuMyA0OC43LTU0LjQgNDcuNS03Ni45bDEwLjUgMTkuNmMxMS44IDIyIDE1LjIgNDcuNiA5LjQgNzItOS4yIDM5LTQwLjYgNjguOC03OS43IDc2LjUtMzIuMSA2LjMtODMuMS01LjEtOTEuOC01OS4yek0xMjggMjA4SDg4LjJjLTguOSAwLTE2LjItNy4zLTE2LjItMTYuMnYtMzkuNmMwLTguOSA3LjMtMTYuMiAxNi4yLTE2LjJIMTI4YzguOSAwIDE2LjIgNy4zIDE2LjIgMTYuMnYzOS42YzAgOC45LTcuMyAxNi4yLTE2LjIgMTYuMnpNMTAuMSAxNjhDNC41IDE2OCAwIDE2My41IDAgMTU3Ljl2LTI3LjhjMC01LjYgNC41LTEwLjEgMTAuMS0xMC4xaDI3LjdjNS41IDAgMTAuMSA0LjUgMTAuMSAxMC4xdjI3LjhjMCA1LjYtNC41IDEwLjEtMTAuMSAxMC4xSDEwLjF6TTE2OCAxNDIuN3YtMjEuNGMwLTUuMSA0LjItOS4zIDkuMy05LjNoMjEuNGM1LjEgMCA5LjMgNC4yIDkuMyA5LjN2MjEuNGMwIDUuMS00LjIgOS4zLTkuMyA5LjNoLTIxLjRjLTUuMSAwLTkuMy00LjItOS4zLTkuM3pNNTYgMjM1LjV2MjVjMCA2LjMtNS4xIDExLjUtMTEuNCAxMS41SDE5LjRDMTMuMSAyNzIgOCAyNjYuOCA4IDI2MC41di0yNWMwLTYuMyA1LjEtMTEuNSAxMS40LTExLjVoMjUuMWM2LjQgMCAxMS41IDUuMiAxMS41IDExLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGVwZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAyLjI4NSAxNTkuNzA0bC0yMzQtMTU2Yy03Ljk4Ny00LjkxNS0xNi41MTEtNC45Ni0yNC41NzEgMGwtMjM0IDE1NkMzLjcxNCAxNjMuNzAzIDAgMTcwLjg0NyAwIDE3Ny45ODl2MTU1Ljk5OWMwIDcuMTQzIDMuNzE0IDE0LjI4NiA5LjcxNSAxOC4yODZsMjM0IDE1Ni4wMjJjNy45ODcgNC45MTUgMTYuNTExIDQuOTYgMjQuNTcxIDBsMjM0LTE1Ni4wMjJjNi0zLjk5OSA5LjcxNS0xMS4xNDMgOS43MTUtMTguMjg2VjE3Ny45ODljLS4wMDEtNy4xNDItMy43MTUtMTQuMjg2LTkuNzE2LTE4LjI4NXpNMjc4IDYzLjEzMWwxNzIuMjg2IDExNC44NTgtNzYuODU3IDUxLjQyOUwyNzggMTY1LjcwM1Y2My4xMzF6bS00NCAwdjEwMi41NzJsLTk1LjQyOSA2My43MTUtNzYuODU3LTUxLjQyOUwyMzQgNjMuMTMxek00NCAyMTkuMTMybDU1LjE0MyAzNi44NTdMNDQgMjkyLjg0NnYtNzMuNzE0em0xOTAgMjI5LjcxNUw2MS43MTQgMzMzLjk4OWw3Ni44NTctNTEuNDI5TDIzNCAzNDYuMjc1djEwMi41NzJ6bTIyLTE0MC44NThsLTc3LjcxNS01MiA3Ny43MTUtNTIgNzcuNzE1IDUyLTc3LjcxNSA1MnptMjIgMTQwLjg1OFYzNDYuMjc1bDk1LjQyOS02My43MTUgNzYuODU3IDUxLjQyOUwyNzggNDQ4Ljg0N3ptMTkwLTE1Ni4wMDFsLTU1LjE0My0zNi44NTdMNDY4IDIxOS4xMzJ2NzMuNzE0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2RpZXBpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDcyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjIuNSAyMDIuOWMzMC43IDAgMzMuNSA1My4xLS4zIDUzLjFoLTEwLjh2NDQuM2gtMjYuNnYtOTcuNGgzNy43ek00NzIgMzUyLjZDNDI5LjkgNDQ0LjUgMzUwLjQgNTA0IDI0OCA1MDQgMTExIDUwNCAwIDM5MyAwIDI1NlMxMTEgOCAyNDggOGM5Ny40IDAgMTcyLjggNTMuNyAyMTguMiAxMzguNGwtMTg2IDEwOC44TDQ3MiAzNTIuNnptLTM4LjUgMTIuNWwtNjAuMy0zMC43Yy0yNy4xIDQ0LjMtNzAuNCA3MS40LTEyMi40IDcxLjQtODIuNSAwLTE0OS4yLTY2LjctMTQ5LjItMTQ4LjkgMC04Mi41IDY2LjctMTQ5LjIgMTQ5LjItMTQ5LjIgNDguNCAwIDg4LjkgMjMuNSAxMTYuOSA2My40bDU5LjUtMzQuNmMtNDAuNy02Mi42LTEwNC43LTEwMC0xNzkuMi0xMDAtMTIxLjIgMC0yMTkuNSA5OC4zLTIxOS41IDIxOS41UzEyNi44IDQ3NS41IDI0OCA0NzUuNWM3OC42IDAgMTQ2LjUtNDIuMSAxODUuNS0xMTAuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29uZmx1ZW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjMgNDEyLjJjLTQuNSA3LjYtMi4xIDE3LjUgNS41IDIyLjJsMTA1LjkgNjUuMmM3LjcgNC43IDE3LjcgMi40IDIyLjQtNS4zIDAtLjEuMS0uMi4xLS4yIDY3LjEtMTEyLjIgODAuNS05NS45IDI4MC45LS43IDguMSAzLjkgMTcuOC40IDIxLjctNy43LjEtLjEuMS0uMy4yLS40bDUwLjQtMTE0LjFjMy42LTguMS0uMS0xNy42LTguMS0yMS4zLTIyLjItMTAuNC02Ni4yLTMxLjItMTA1LjktNTAuM0MxMjcuNSAxNzkgNDQuNiAzNDUuMyAyLjMgNDEyLjJ6bTUwNy40LTMxMi4xYzQuNS03LjYgMi4xLTE3LjUtNS41LTIyLjJMMzk4LjQgMTIuOGMtNy41LTUtMTcuNi0zLjEtMjIuNiA0LjQtLjIuMy0uNC42LS42IDEtNjcuMyAxMTIuNi04MS4xIDk1LjYtMjgwLjYuOS04LjEtMy45LTE3LjgtLjQtMjEuNyA3LjctLjEuMS0uMS4zLS4yLjRMMjIuMiAxNDEuM2MtMy42IDguMS4xIDE3LjYgOC4xIDIxLjMgMjIuMiAxMC40IDY2LjMgMzEuMiAxMDYgNTAuNCAyNDggMTIwIDMzMC44LTQ1LjQgMzczLjQtMTEyLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbm5lY3RkZXZlbG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU1MC41IDI0MWwtNTAuMDg5LTg2Ljc4NmMxLjA3MS0yLjE0MiAxLjg3NS00LjU1MyAxLjg3NS03LjIzMiAwLTguMDM2LTYuNjk2LTE0LjczMy0xNC43MzItMTUuMDAxbC01NS40NDctOTUuODkzYy41MzYtMS42MDcgMS4wNzEtMy4yMTQgMS4wNzEtNC44MjEgMC04LjU3MS02Ljk2NC0xNS4yNjgtMTUuMjY4LTE1LjI2OC00LjgyMSAwLTguODM5IDIuMTQzLTExLjc4NiA1LjYyNUgyOTkuNTE4QzI5Ni44MzkgMTguMTQzIDI5Mi44MjEgMTYgMjg4IDE2cy04LjgzOSAyLjE0My0xMS41MTggNS42MjVIMTcwLjQxMUMxNjcuNDY0IDE4LjE0MyAxNjMuNDQ3IDE2IDE1OC42MjUgMTZjLTguMzAzIDAtMTUuMjY4IDYuNjk2LTE1LjI2OCAxNS4yNjggMCAxLjYwNy41MzYgMy40ODIgMS4wNzIgNC44MjFsLTU1Ljk4MyA5Ny4yMzNjLTUuMzU2IDIuNDEtOS4xMDcgNy41LTkuMTA3IDEzLjY2MSAwIC41MzUuMjY4IDEuMDcxLjI2OCAxLjYwN2wtNTMuMzA0IDkyLjE0M2MtNy4yMzIgMS4zMzktMTIuNTkgNy41LTEyLjU5IDE1IDAgNy4yMzIgNS4wODkgMTMuMzkzIDEyLjA1NCAxNWw1NS4xNzkgOTUuMzU4Yy0uNTM2IDEuNjA3LS44MDQgMi45NDYtLjgwNCA0LjgyMSAwIDcuMjMyIDUuMDg5IDEzLjM5MyAxMi4wNTQgMTQuNzMybDUxLjY5NyA4OS43MzJjLS41MzYgMS42MDctMS4wNzEgMy40ODItMS4wNzEgNS4zNTcgMCA4LjU3MSA2Ljk2NCAxNS4yNjggMTUuMjY4IDE1LjI2OCA0LjgyMSAwIDguODM5LTIuMTQzIDExLjUxOC01LjM1N2gxMDYuODc1QzI3OS4xNjEgNDkzLjg1NyAyODMuNDQ3IDQ5NiAyODggNDk2czguODM5LTIuMTQzIDExLjUxOC01LjM1N2gxMDcuMTQzYzIuNjc4IDIuOTQ2IDYuNjk2IDQuODIxIDEwLjk4MiA0LjgyMSA4LjU3MSAwIDE1LjI2OC02Ljk2NCAxNS4yNjgtMTUuMjY4IDAtMS42MDctLjI2Ny0yLjk0Ni0uODAzLTQuMjg1bDUxLjY5Ny05MC4yNjhjNi45NjQtMS4zMzkgMTIuMDU0LTcuNSAxMi4wNTQtMTQuNzMyIDAtMS42MDctLjI2OC0zLjIxNC0uODA0LTQuODIxbDU0LjkxMS05NS4zNThjNi45NjQtMS4zMzkgMTIuMzIyLTcuNSAxMi4zMjItMTUtLjAwMi03LjIzMi01LjA5Mi0xMy4zOTMtMTEuNzg4LTE0LjczMnpNMTUzLjUzNSA0NTAuNzMybC00My42Ni03NS44MDNoNDMuNjZ2NzUuODAzem0wLTgzLjgzOWgtNDMuNjZjLS4yNjgtMS4wNzEtLjgwNC0yLjE0Mi0xLjMzOS0zLjIxNGw0NC45OTktNDcuNDF2NTAuNjI0em0wLTYyLjQxMWwtNTAuMzU3IDUzLjMwNGMtMS4zMzktLjUzNi0yLjY3OS0xLjM0LTQuMDE4LTEuNjA3TDQzLjQ0NyAyNTkuNzVjLjUzNS0xLjMzOS41MzUtMi42NzkuNTM1LTQuMDE4czAtMi40MS0uMjY4LTMuNDgybDUxLjk2NS05MGMyLjY3OS0uMjY4IDUuMzU3LTEuMDcyIDcuNzY4LTIuNjc5bDUwLjA4OSA1MS45NjV2OTIuOTQ2em0wLTEwMi4zMjJsLTQ1LjgwMy00Ny40MWMxLjMzOS0yLjE0MyAyLjE0My00LjgyMSAyLjE0My03Ljc2NyAwLS4yNjgtLjI2OC0uODA0LS4yNjgtMS4wNzJsNDMuOTI4LTE1LjgwNHY3Mi4wNTN6bTAtODAuNjI1bC00My42NiAxNS44MDQgNDMuNjYtNzUuNTM2djU5LjczMnptMzI2LjUxOSAzOS4xMDhsLjgwNCAxLjMzOUw0NDUuNSAzMjkuMTI1bC02My43NS02Ny4yMzIgOTguMDM2LTEwMS41MTguMjY4LjI2OHpNMjkxLjc1IDM1NS4xMDdsMTEuNTE4IDExLjc4NkgyODAuNWwxMS4yNS0xMS43ODZ6bS0uMjY4LTExLjI1bC04My4zMDMtODUuNDQ2IDc5LjU1My04NC4zNzUgODMuMDM2IDg3LjU4OS03OS4yODYgODIuMjMyem01LjM1NyA1Ljg5M2w3OS4yODYtODIuMjMyIDY3LjUgNzEuMjUtNS44OTIgMjguMTI1SDMxMy43MTRsLTE2Ljg3NS0xNy4xNDN6TTQxMC40MTEgNDQuMzkzYzEuMDcxLjUzNiAyLjE0MiAxLjA3MiAzLjQ4MiAxLjM0bDU3Ljg1NyAxMDAuNzE0di41MzZjMCAyLjk0Ni44MDMgNS42MjQgMi4xNDMgNy43NjdMMzc2LjM5MyAyNTZsLTgzLjAzNS04Ny41ODlMNDEwLjQxMSA0NC4zOTN6bS05LjEwNy0yLjE0M0wyODcuNzMyIDE2Mi41MThsLTU3LjA1NC02MC4yNjggMTY2LjMzOS02MGg0LjI4N3ptLTEyMy40ODMgMGMyLjY3OCAyLjY3OCA2LjE2IDQuMjg1IDEwLjE3OSA0LjI4NXM3LjUtMS42MDcgMTAuMTc5LTQuMjg1aDc1TDIyNC43ODYgOTUuODIxIDE3My44OTMgNDIuMjVoMTAzLjkyOHptLTExNi4yNDkgNS42MjVsMS4wNzEtMi4xNDJhMzMuODM0IDMzLjgzNCAwIDAgMCAyLjY3OS0uODA0bDUxLjE2MSA1My44NC01NC45MTEgMTkuODIxVjQ3Ljg3NXptMCA3OS4yODZsNjAuODAzLTIxLjk2NCA1OS43MzIgNjMuMjE0LTc5LjU1MyA4NC4xMDctNDAuOTgyLTQyLjA1M3YtODMuMzA0em0wIDkyLjY3OEwxOTggMjU3LjYwN2wtMzYuNDI4IDM4LjMwNHYtNzYuMDcyem0wIDg3Ljg1OGw0Mi4wNTMtNDQuNDY0IDgyLjc2OCA4NS45ODItMTcuMTQzIDE3LjY3OEgxNjEuNTcydi01OS4xOTZ6bTYuOTY0IDE2Mi4wNTNjLTEuNjA3LTEuNjA3LTMuNDgyLTIuNjc4LTUuODkzLTMuNDgybC0xLjA3MS0xLjYwN3YtODkuNzMyaDk5LjkxbC05MS42MDcgOTQuODIxaC0xLjMzOXptMTI5LjkxMSAwYy0yLjY3OS0yLjQxLTYuNDI4LTQuMjg1LTEwLjQ0Ny00LjI4NXMtNy43NjcgMS44NzUtMTAuNDQ3IDQuMjg1aC05Ni40MjlsOTEuNjA3LTk0LjgyMWgzOC4zMDRsOTEuNjA3IDk0LjgyMUgyOTguNDQ3em0xMjAtMTEuNzg2bC00LjI4NiA3LjVjLTEuMzM5LjI2OC0yLjQxLjgwMy0zLjQ4MiAxLjMzOWwtODkuMTk2LTkxLjg3NWgxMTQuMzc2bC0xNy40MTIgODMuMDM2em0xMi44NTYtMjIuMjMybDEyLjg1OC02MC44MDNoMjEuOTY0bC0zNC44MjIgNjAuODAzem0zNC44MjItNjguODM5aC0yMC4zNTdsNC41NTMtMjEuMTYgMTcuMTQzIDE4LjIxNGMtLjUzNS44MDMtMS4wNzEgMS44NzQtMS4zMzkgMi45NDZ6bTY2LjE2MS0xMDcuNDExbC01NS40NDcgOTYuNjk3Yy0xLjMzOS41MzUtMi42NzkgMS4wNzEtNC4wMTggMS44NzRsLTIwLjYyNS0yMS45NjQgMzQuNTU0LTE2My45MjggNDUuODAzIDc5LjI4NmMtLjI2NyAxLjMzOS0uODAzIDIuNjc4LS44MDMgNC4yODUgMCAxLjMzOS4yNjggMi40MTEuNTM2IDMuNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbnRhbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NS40IDMwNWMxNC40IDY3LjEgMjYuNCAxMjkgNjguMiAxNzVIMzRjLTE4LjcgMC0zNC0xNS4yLTM0LTM0VjY2YzAtMTguNyAxNS4yLTM0IDM0LTM0aDU3LjdDNzcuOSA0NC42IDY1LjYgNTkuMiA1NC44IDc1LjZjLTQ1LjQgNzAtMjcgMTQ2LjgtOS40IDIyOS40ek00NzggMzJoLTkwLjJjMjEuNCAyMS40IDM5LjIgNDkuNSA1Mi43IDg0LjFsLTEzNy4xIDI5LjNjLTE0LjktMjktMzcuOC01My4zLTgyLjYtNDMuOS0yNC42IDUuMy00MSAxOS4zLTQ4LjMgMzQuNi04LjggMTguNy0xMy4yIDM5LjggOC4yIDE0MC4zIDIxLjEgMTAwLjIgMzMuNyAxMTcuNyA0OS41IDEzMS4yIDEyLjkgMTEuMSAzMy40IDE3IDU4LjMgMTEuNyA0NC41LTkuNCA1NS43LTQwLjcgNTcuNC03My4ybDEzNy40LTI5LjZjMy4yIDcxLjUtMTguNyAxMjUuMi01Ny40IDE2My42SDQ3OGMxOC43IDAgMzQtMTUuMiAzNC0zNFY2NmMwLTE4LjgtMTUuMi0zNC0zNC0zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ290dG9uQnVyZWF1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3NC4zMSAzMzAuNDFjLTIzLjY2IDkxLjg1LTk0LjIzIDE0NC41OS0yMDEuOSAxNDguMzVWNDI5LjZjMC00OCAyNi40MS03NC4zOSA3NC4zOS03NC4zOSA2MiAwIDk5LjItMzcuMiA5OS4yLTk5LjIxIDAtNjEuMzctMzYuNTMtOTguMjgtOTcuMzgtOTkuMDYtMzMtNjkuMzItMTQ2LjUtNjQuNjUtMTc3LjI0IDBDMTEwLjUyIDE1Ny43MiA3NCAxOTQuNjMgNzQgMjU2YzAgNjIuMTMgMzcuMjcgOTkuNDEgOTkuNCA5OS40MSA0OCAwIDc0LjU1IDI2LjIzIDc0LjU1IDc0LjM5VjQ3OWMtMTM0LjQzLTUtMjExLjEtODUuMDctMjExLjEtMjIzIDAtMTQxLjgyIDgxLjM1LTIyMy4yIDIyMy4yLTIyMy4yIDExNC43NyAwIDE4OS44NCA1My4yIDIxNC42OSAxNDguODFINTAwQzQ3My44OCA3MS41MSAzODguMjIgOCAyNTkuODIgOCAxMDUgOCAxMiAxMDEuMTkgMTIgMjU1LjgyIDEyIDQxMS4xNCAxMDUuMTkgNTA0LjM0IDI1OS44MiA1MDRjMTI4LjI3IDAgMjEzLjg3LTYzLjgxIDIzOS42Ny0xNzMuNTl6TTM1NyAxODIuMzNjNDEuMzcgMy40NSA2NC4yIDI5IDY0LjIgNzMuNjcgMCA0OC0yNi40MyA3NC40MS03NC40IDc0LjQxLTI4LjYxIDAtNDkuMzMtOS41OS02MS41OS0yNy4zMyA4My4wNi0xNi41NSA3NS41OS05OS42NyA3MS43OS0xMjAuNzV6bS04MS42OCA5Ny4zNmMtMi40Ni0xMC4zNC0xNi4zMy04NyA1Ni4yMy05NyAyLjI3IDEwLjA5IDE2LjUyIDg3LjExLTU2LjI2IDk3ek0yNjAgMTMyYzI4LjYxIDAgNDkgOS42NyA2MS40NCAyNy42MS0yOC4zNiA1LjQ4LTQ5LjM2IDIwLjU5LTYxLjU5IDQzLjQ1LTEyLjIzLTIyLjg2LTMzLjIzLTM4LTYxLjYtNDMuNDUgMTIuNDEtMTcuNjkgMzMuMjctMjcuMzUgNjEuNTctMjcuMzV6bS03MS41MiA1MC43MmM3My4xNyAxMC41NyA1OC45MSA4Ni44MSA1Ni40OSA5Ny03Mi40MS05Ljg0LTU5LTg2Ljk1LTU2LjI1LTk3ek0xNzMuMiAzMzAuNDFjLTQ4IDAtNzQuNC0yNi40LTc0LjQtNzQuNDEgMC00NC4zNiAyMi44Ni03MCA2NC4yMi03My42Ny02Ljc1IDM3LjItMS4zOCAxMDYuNTMgNzEuNjUgMTIwLjc1LTEyLjE0IDE3LjYzLTMyLjg0IDI3LjMtNjEuMTQgMjcuM3ptNTMuMjEgMTIuMzlBODAuOCA4MC44IDAgMCAwIDI2MCAzMDkuMjVjNy43NyAxNC40OSAxOS4zMyAyNS41NCAzMy44MiAzMy41NWE4MC4yOCA4MC4yOCAwIDAgMC0zMy41OCAzMy44M2MtOC0xNC41LTE5LjA3LTI2LjIzLTMzLjU2LTMzLjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcGFuZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEwLjMgMjIwLjJjLTUuNi0yNC44LTI2LjktNDEuMi01MS00MS4yaC0zN2MtNy4xIDAtMTIuNSA0LjUtMTQuMyAxMC45TDczLjEgMzIwbDI0LjctLjFjNi44IDAgMTIuMy00LjUgMTQuMi0xMC43bDI1LjgtOTUuN2gxOS44YzguNCAwIDE2LjIgNS42IDE4LjMgMTQuOCAyLjUgMTAuOS01LjkgMjIuNi0xOC4zIDIyLjZoLTEwLjNjLTcgMC0xMi41IDQuNi0xNC4zIDEwLjhsLTYuNCAyMy44aDMyYzM3LjIgMCA1OC4zLTM2LjIgNTEuNy02NS4zem0tMTU2LjUgMjhoMTguNmM2LjkgMCAxMi40LTQuNCAxNC4zLTEwLjlsNi4yLTIzLjZoLTQwQzMwIDIxMy43IDkgMjI3LjggMS43IDI1NC44LTcgMjg4LjYgMTguNSAzMjAgNTIgMzIwaDEyLjRsNy4xLTI2LjFjMS4yLTQuNC0yLjItOC4zLTYuNC04LjNINTMuOGMtMjQuNyAwLTI0LjktMzcuNCAwLTM3LjR6bTI0Ny41LTM0LjhoLTc3LjlsLTMuNSAxMy40Yy0yLjQgOS42IDQuNSAxOC41IDE0LjIgMTguNWg1Ny41YzQgMCAyLjQgNC4zIDIuMSA1LjNsLTguNiAzMS44Yy0uNCAxLjQtLjkgNS4zLTUuNSA1LjNoLTM0LjljLTUuMyAwLTUuMy03LjkgMC03LjloMjEuNmM2LjggMCAxMi4zLTQuNiAxNC4yLTEwLjhsMy41LTEzLjJoLTQ4LjRjLTM5LjIgMC00My42IDYzLjgtLjcgNjMuOGw1Ny41LjJjMTEuMiAwIDIwLjYtNy4yIDIzLjQtMTcuOGwxNC01MS44YzQuOC0xOS4yLTkuNy0zNi44LTI4LjUtMzYuOHpNNjMzLjEgMTc5aC0xOC45Yy00LjkgMC05LjIgMy4yLTEwLjQgNy45TDU2OC4yIDMyMGMyMC43IDAgMzkuOC0xMy44IDQ0LjktMzQuNWwyNi41LTk4LjJjMS4yLTQuMy0yLTguMy02LjUtOC4zem0tMjM2LjMgMzQuN3YuMWgtNDguM2wtMjYuMiA5OGMtMS4yIDQuNCAyLjIgOC4zIDYuNCA4LjNoMTguOWM0LjggMCA5LjItMyAxMC40LTcuOGwxNy4yLTY0SDM5NWMxMi41IDAgMjEuNCAxMS44IDE4LjEgMjMuNGwtMTAuNiA0MGMtMS4yIDQuMyAxLjkgOC4zIDYuNCA4LjNINDI4YzQuNiAwIDkuMS0yLjkgMTAuMy03LjhsOC44LTMzLjFjOS0zMy4xLTE1LjktNjUuNC01MC4zLTY1LjR6bTk4LjMgNzQuNmMtMy42IDAtNi0zLjQtNS4xLTYuN2w4LTMwYy45LTMuOSAzLjctNiA3LjgtNmgzMi45YzIuNiAwIDQuNiAyLjQgMy45IDUuMWwtLjcgMi42Yy0uNiAyLTEuOSAzLTMuOSAzaC0yMS42Yy03IDAtMTIuNiA0LjYtMTQuMiAxMC44bC0zLjUgMTNoNTMuNGMxMC41IDAgMjAuMy02LjYgMjMuMi0xNy42bDMuMi0xMmM0LjktMTkuMS05LjMtMzYuOC0yOC4zLTM2LjhoLTQ3LjNjLTE3LjkgMC0zMy44IDEyLTM4LjYgMjkuNmwtMTAuOCA0MGMtNSAxNy43IDguMyAzNi43IDI4LjMgMzYuN2g2Ni43YzYuOCAwIDEyLjMtNC41IDE0LjItMTAuN2w1LjctMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc0J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxNC45IDE5NC40djEwMS40aC0yOC4zdjEyMC41aC03Ny4xVjI5NS45aC0yOC4zVjE5NC40YzAtNC40IDEuNi04LjIgNC42LTExLjMgMy4xLTMuMSA2LjktNC43IDExLjMtNC43SDI5OWM0LjEgMCA3LjggMS42IDExLjEgNC43IDMuMSAzLjIgNC44IDYuOSA0LjggMTEuM3ptLTEwMS41LTYzLjdjMC0yMy4zIDExLjUtMzUgMzQuNS0zNXMzNC41IDExLjcgMzQuNSAzNWMwIDIzLTExLjUgMzQuNS0zNC41IDM0LjVzLTM0LjUtMTEuNS0zNC41LTM0LjV6TTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNOY0V1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny43IDhDMTAzLjYgOCAwIDEyNC44IDAgMjU2YzAgMTM2LjMgMTExLjcgMjQ4IDI0Ny43IDI0OEMzNzcuOSA1MDQgNDk2IDQwMy4xIDQ5NiAyNTYgNDk2IDExNyAzODguNCA4IDI0Ny43IDh6bS42IDQ1MC43Yy0xMTIgMC0yMDMuNi05Mi41LTIwMy42LTIwMi43IDAtMjMuMiAzLjctNDUuMiAxMC45LTY2bDY1LjcgMjkuMWgtNC43djI5LjVoMjMuM2MwIDYuMi0uNCAzLjItLjQgMTkuNWgtMjIuOHYyOS41aDI3YzExLjQgNjcgNjcuMiAxMDEuMyAxMjQuNiAxMDEuMyAyNi42IDAgNTAuNi03LjkgNjQuOC0xNS44bC0xMC00Ni4xYy04LjcgNC42LTI4LjIgMTAuOC00Ny4zIDEwLjgtMjguMiAwLTU4LjEtMTAuOS02Ny4zLTUwLjJoOTAuM2wxMjguMyA1Ni44Yy0xLjUgMi4xLTU2LjIgMTA0LjMtMTc4LjggMTA0LjN6bS0xNi43LTE5MC42bC0uNS0uNC45LjRoLS40em03Ny4yLTE5LjVoMy43di0yOS41aC03MC4zbC0yOC42LTEyLjZjMi41LTUuNSA1LjQtMTAuNSA4LjgtMTQuMyAxMi45LTE1LjggMzEuMS0yMi40IDUxLjEtMjIuNCAxOC4zIDAgMzUuMyA1LjQgNDYuMSAxMGwxMS42LTQ3LjNjLTE1LTYuNi0zNy0xMi40LTYyLjMtMTIuNC0zOSAwLTcyLjIgMTUuOC05NS45IDQyLjMtNS4zIDYuMS05LjggMTIuOS0xMy45IDIwLjFsLTgxLjYtMzYuMWM2NC42LTk2LjggMTU3LjctOTMuNiAxNzAuNy05My42IDExMyAwIDIwMyA5MC4yIDIwMyAyMDMuNCAwIDE4LjctMi4xIDM2LjMtNi4zIDUyLjlsLTEzNi4xLTYwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc05jSnAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjcgOEMxMDMuNiA4IDAgMTI0LjggMCAyNTZjMCAxMzYuNCAxMTEuOCAyNDggMjQ3LjcgMjQ4QzM3Ny45IDUwNCA0OTYgNDAzLjIgNDk2IDI1NiA0OTYgMTE3LjIgMzg4LjUgOCAyNDcuNyA4em0uNiA0NTAuN2MtMTEyIDAtMjAzLjYtOTIuNS0yMDMuNi0yMDIuNyAwLTIxLjEgMy00MS4yIDktNjAuM2wxMjcgNTYuNWgtMjcuOXYzOC42aDU4LjFsNS43IDExLjh2MTguN2gtNjMuOFYzNjBoNjMuOHY1Nmg2MS43di01Nmg2NC4ydi0zNS43bDgxIDM2LjFjLTEuNSAyLjItNTcuMSA5OC4zLTE3NS4yIDk4LjN6bTg3LjYtMTM3LjNoLTU3LjZ2LTE4LjdsMi45LTUuNiA1NC43IDI0LjN6bTYuNS01MS40di0xNy44aC0zOC42bDYzLTExNkgzMDFsLTQzLjQgOTYtMjMtMTAuMi0zOS42LTg1LjdoLTY1LjhsMjcuMyA1MS04MS45LTM2LjVjMjcuOC00NC4xIDgyLjYtOTguMSAxNzMuNy05OC4xIDExMi44IDAgMjAzIDkwIDIwMyAyMDMuNCAwIDIxLTIuNyA0MC42LTcuOSA1OWwtMTAxLTQ1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc05jIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg3LjQgOCA0OTYgMTE1LjkgNDk2IDI1NmMwIDE0Ny4yLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjEgNTA0IDAgMzkzLjIgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6TTU1LjggMTg5LjFjLTcuNCAyMC40LTExLjEgNDIuNy0xMS4xIDY2LjkgMCAxMTAuOSA5Mi4xIDIwMi40IDIwMy43IDIwMi40IDEyMi40IDAgMTc3LjItMTAxLjggMTc4LjUtMTA0LjFsLTkzLjQtNDEuNmMtNy43IDM3LjEtNDEuMiA1My02OC4yIDU1LjR2MzguMWgtMjguOFYzNjhjLTI3LjUtLjMtNTIuNi0xMC4yLTc1LjMtMjkuN2wzNC4xLTM0LjVjMzEuNyAyOS40IDg2LjQgMzEuOCA4Ni40LTIuMiAwLTYuMi0yLjItMTEuMi02LjYtMTUuMS0xNC4yLTYtMS44LS4xLTIxOS4zLTk3LjR6TTI0OC40IDUyLjNjLTM4LjQgMC0xMTIuNCA4LjctMTcwLjUgOTNsOTQuOCA0Mi41YzEwLTMxLjMgNDAuNC00Mi45IDYzLjgtNDQuM3YtMzguMWgyOC44djM4LjFjMjIuNyAxLjIgNDMuNCA4LjkgNjIgMjNMMjk1IDE5OS43Yy00Mi43LTI5LjktODMuNS04LTcwIDExLjEgNTMuNCAyNC4xIDQzLjggMTkuOCA5MyA0MS42bDEyNy4xIDU2LjdjNC4xLTE3LjQgNi4yLTM1LjEgNi4yLTUzLjEgMC01Ny0xOS44LTEwNS01OS4zLTE0My45LTM5LjMtMzkuOS04Ny4yLTU5LjgtMTQzLjYtNTkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zTmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bTk0IDE0NC4zdjQyLjVIMTYyLjFWMTk3aDE4MC4zem0wIDc5Ljh2NDIuNUgxNjIuMXYtNDIuNWgxODAuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zUGRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMxMDQuNyA4IDAgMTIzLjEgMCAyNTZjMCAxMzguNSAxMTMuNiAyNDggMjQ3LjYgMjQ4QzM3Ny41IDUwNCA0OTYgNDAzLjEgNDk2IDI1NiA0OTYgMTE4LjEgMzg5LjQgOCAyNDcuNiA4em0uOCA0NTAuOGMtMTEyLjUgMC0yMDMuNy05My0yMDMuNy0yMDIuOCAwLTEwNS40IDg1LjUtMjAzLjMgMjAzLjctMjAzLjMgMTEyLjYgMCAyMDIuOSA4OS41IDIwMi44IDIwMy4zIDAgMTIxLjctOTkuNiAyMDIuOC0yMDIuOCAyMDIuOHpNMzE2LjcgMTg2aC01My4ydjEzNy4yaDUzLjJjMjEuNCAwIDcwLTUuMSA3MC02OC42IDAtNjMuNC00OC42LTY4LjYtNzAtNjguNnptLjggMTA4LjVoLTE5Ljl2LTc5LjdsMTkuNC0uMWMzLjggMCAzNS0yLjEgMzUgMzkuOSAwIDI0LjYtMTAuNSAzOS45LTM0LjUgMzkuOXpNMjAzLjcgMTg2aC02OC4ydjEzNy4zaDM0LjZWMjc5aDI3YzU0LjEgMCA1Ny4xLTM3LjUgNTcuMS00Ni41IDAtMzEtMTYuOC00Ni41LTUwLjUtNDYuNXptLTQuOSA2Ny4zaC0yOS4ydi00MS42aDI4LjNjMzAuOSAwIDI4LjggNDEuNi45IDQxLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1BkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5LjEgMCAyNTZjMCAxMzcgMTExIDI0OCAyNDggMjQ4czI0OC0xMTEgMjQ4LTI0OEM0OTYgMTE5LjEgMzg1IDggMjQ4IDh6bTAgNDQ5LjVjLTEzOS4yIDAtMjM1LjgtMTM4LTE5MC4yLTI2Ny45bDc4LjggMzUuMWMtMi4xIDEwLjUtMy4zIDIxLjUtMy4zIDMyLjkgMCA5OSA3My45IDEyNi45IDEyMC40IDEyNi45IDIyLjkgMCA1My41LTYuNyA3OS40LTI5LjVMMjk3IDMxMS4xYy01LjUgNi4zLTE3LjYgMTYuNy0zNi4zIDE2LjctMzcuOCAwLTUzLjctMzkuOS01My45LTcxLjkgMjMwLjQgMTAyLjYgMjE2LjUgOTYuNSAyMTcuOSA5Ni44LTM0LjMgNjIuNC0xMDAuNiAxMDQuOC0xNzYuNyAxMDQuOHptMTk0LjItMTUwbC0yMjQtMTAwYzE4LjgtMzQgNTQuOS0zMC43IDc0LjctMTFsNDAuNC00MS42Yy0yNy4xLTIzLjMtNTgtMjcuNS03OC4xLTI3LjUtNDcuNCAwLTgwLjkgMjAuNS0xMDAuNyA1MS42bC03NC45LTMzLjRjMzYuMS01NC45IDk4LjEtOTEuMiAxNjguNS05MS4yIDExMS4xIDAgMjAxLjUgOTAuNCAyMDEuNSAyMDEuNSAwIDE4LTIuNCAzNS40LTYuOCA1Mi0uMy0uMS0uNC0uMi0uNi0uNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zUmVtaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bTE2MS43IDIwNy43bDQuOSAyLjJ2NzBjLTcuMiAzLjYtNjMuNCAyNy41LTY3LjMgMjguOC02LjUtMS44LTExMy43LTQ2LjgtMTM3LjMtNTYuMmwtNjQuMiAyNi42LTYzLjMtMjcuNXYtNjMuOGw1OS4zLTI0LjhjLS43LS43LS40IDUtLjQtNzAuNGw2Ny4zLTI5LjdMMzYxIDE3OC41djYxLjZsNDkuMSAyMC4zem0tNzAuNCA4MS41di00My44aC0uNHYtMS44bC0xMTMuOC00Ni41VjI5NWwxMTMuOCA0Ni45di0uNGwuNC40em03LjUtNTcuNmwzOS45LTE2LjQtMzYuOC0xNS41LTM5IDE2LjQgMzUuOSAxNS41em01Mi4zIDM4LjF2LTQzTDM1NS4yIDI5OHY0My40bDQ0LjMtMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1NhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zek0xMzcuNyAyMjFjMTMtODMuOSA4MC41LTk1LjcgMTA4LjktOTUuNyA5OS44IDAgMTI3LjUgODIuNSAxMjcuNSAxMzQuMiAwIDYzLjYtNDEgMTMyLjktMTI4LjkgMTMyLjktMzguOSAwLTk5LjEtMjAtMTA5LjQtOTdoNjIuNWMxLjUgMzAuMSAxOS42IDQ1LjIgNTQuNSA0NS4yIDIzLjMgMCA1OC0xOC4yIDU4LTgyLjggMC04Mi41LTQ5LjEtODAuNi01Ni43LTgwLjYtMzMuMSAwLTUxLjcgMTQuNi01NS44IDQzLjhoMTguMmwtNDkuMiA0OS4yLTQ5LTQ5LjJoMTkuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zU2FtcGxpbmdQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem0xMDcgMjA1LjZjLTQuNyAwLTkgMi44LTEwLjcgNy4ybC00IDkuNS0xMS05Mi44Yy0xLjctMTMuOS0yMi0xMy40LTIzLjEuNGwtNC4zIDUxLjQtNS4yLTY4LjhjLTEuMS0xNC4zLTIyLjEtMTQuMi0yMy4yIDBsLTMuNSA0NC45LTUuOS05NC4zYy0uOS0xNC41LTIyLjMtMTQuNC0yMy4yIDBsLTUuMSA4My43LTQuMy02Ni4zYy0uOS0xNC40LTIyLjItMTQuNC0yMy4yIDBsLTUuMyA4MC4yLTQuMS01N2MtMS4xLTE0LjMtMjItMTQuMy0yMy4yLS4ybC03LjcgODkuOC0xLjgtMTIuMmMtMS43LTExLjQtMTcuMS0xMy42LTIyLTMuM2wtMTMuMiAyNy43SDg3LjV2MjMuMmg1MS4zYzQuNCAwIDguNC0yLjUgMTAuNC02LjRsMTAuNyA3My4xYzIgMTMuNSAyMS45IDEzIDIzLjEtLjdsMy44LTQzLjYgNS43IDc4LjNjMS4xIDE0LjQgMjIuMyAxNC4yIDIzLjItLjFsNC42LTcwLjQgNC44IDczLjNjLjkgMTQuNCAyMi4zIDE0LjQgMjMuMi0uMWw0LjktODAuNSA0LjUgNzEuOGMuOSAxNC4zIDIyLjEgMTQuNSAyMy4yLjJsNC42LTU4LjYgNC45IDY0LjRjMS4xIDE0LjMgMjIgMTQuMiAyMy4xLjFsNi44LTgzIDIuNyAyMi4zYzEuNCAxMS44IDE3LjcgMTQuMSAyMi4zIDMuMWwxOC00My40aDUwLjVWMjU4bC01OC40LjN6bS03OCA1LjJoLTIxLjl2MjEuOWMwIDQuMS0zLjMgNy41LTcuNSA3LjUtNC4xIDAtNy41LTMuMy03LjUtNy41di0yMS45aC0yMS45Yy00LjEgMC03LjUtMy4zLTcuNS03LjUgMC00LjEgMy40LTcuNSA3LjUtNy41aDIxLjl2LTIxLjljMC00LjEgMy40LTcuNSA3LjUtNy41czcuNSAzLjMgNy41IDcuNXYyMS45aDIxLjljNC4xIDAgNy41IDMuMyA3LjUgNy41IDAgNC4xLTMuNCA3LjUtNy41IDcuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zU2FtcGxpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bTMuNiA1My4yYzIuOC0uMyAxMS41IDEgMTEuNSAxMS41bDYuNiAxMDcuMiA0LjktNTkuM2MwLTYgNC43LTEwLjYgMTAuNi0xMC42IDUuOSAwIDEwLjYgNC43IDEwLjYgMTAuNiAwIDIuNS0uNS01LjcgNS43IDgxLjVsNS44LTY0LjJjLjMtMi45IDIuOS05LjMgMTAuMi05LjMgMy44IDAgOS45IDIuMyAxMC42IDguOWwxMS41IDk2LjUgNS4zLTEyLjhjMS44LTQuNCA1LjItNi42IDEwLjItNi42aDU4djIxLjNoLTUwLjlsLTE4LjIgNDQuM2MtMy45IDkuOS0xOS41IDkuMS0yMC44LTMuMWwtNC0zMS45LTcuNSA5Mi42Yy0uMyAzLTMgOS4zLTEwLjIgOS4zLTMgMC05LjgtMi4xLTEwLjYtOS4zIDAtMS45LjYgNS44LTYuMi03Ny45bC01LjMgNzIuMmMtMS4xIDQuOC00LjggOS4zLTEwLjYgOS4zLTIuOSAwLTkuOC0yLTEwLjYtOS4zIDAtMS45LjUgNi43LTUuOC04Ny43bC01LjggOTQuOGMwIDYuMy0zLjYgMTIuNC0xMC42IDEyLjQtNS4yIDAtMTAuNi00LjEtMTAuNi0xMmwtNS44LTg3LjdjLTUuOCA5Mi41LTUuMyA4NC01LjMgODUuOS0xLjEgNC44LTQuOCA5LjMtMTAuNiA5LjMtMyAwLTkuOC0yLjEtMTAuNi05LjMgMC0uNy0uNC0xLjEtLjQtMi42bC02LjItODguNkwxODIgMzQ4Yy0uNyA2LjUtNi43IDkuMy0xMC42IDkuMy01LjggMC05LjYtNC4xLTEwLjYtOC45TDE0OS43IDI3MmMtMiA0LTMuNSA4LjQtMTEuMSA4LjRIODcuMnYtMjEuM0gxMzJsMTMuNy0yNy45YzQuNC05LjkgMTguMi03LjIgMTkuOSAyLjdsMy4xIDIwLjQgOC40LTk3LjljMC02IDQuOC0xMC42IDEwLjYtMTAuNi41IDAgMTAuNi0uMiAxMC42IDEyLjRsNC45IDY5LjEgNi42LTkyLjZjMC0xMC4xIDkuNS0xMC42IDEwLjItMTAuNi42IDAgMTAuNi43IDEwLjYgMTAuNmw1LjMgODAuNiA2LjItOTcuOWMuMS0xLjEtLjYtMTAuMyA5LjktMTEuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zU2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bTEwMSAxMzIuNGM3LjggMCAxMy43IDYuMSAxMy43IDEzLjd2MTgyLjVjMCA3LjctNi4xIDEzLjctMTMuNyAxMy43SDIxNC4zYy03LjcgMC0xMy43LTYtMTMuNy0xMy43di01NGgtNTRjLTcuOCAwLTEzLjctNi0xMy43LTEzLjdWMTMxLjFjMC04LjIgNi42LTEyLjcgMTIuNC0xMy43aDEzNi40YzcuNyAwIDEzLjcgNiAxMy43IDEzLjd2NTRoNTR6TTE1OS45IDMwMC4zaDQwLjdWMTk4LjljMC03LjQgNS44LTEyLjYgMTItMTMuN2g1NS44di00MC4zSDE1OS45djE1NS40em0xNzYuMi04OC4xSDIyNy42djE1NS40aDEwOC41VjIxMi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNaZXJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem0tLjQgNjAuNWMtODEuOSAwLTEwMi41IDc3LjMtMTAyLjUgMTQyLjggMCA2NS41IDIwLjYgMTQyLjggMTAyLjUgMTQyLjhTMzUwLjUgMzIxLjUgMzUwLjUgMjU2YzAtNjUuNS0yMC42LTE0Mi44LTEwMi41LTE0Mi44em0wIDUzLjljMy4zIDAgNi40LjUgOS4yIDEuMiA1LjkgNS4xIDguOCAxMi4xIDMuMSAyMS45bC01NC41IDEwMC4yYy0xLjctMTIuNy0xLjktMjUuMS0xLjktMzQuNCAwLTI4LjggMi04OC45IDQ0LjEtODguOXptNDAuOCA0Ni4yYzIuOSAxNS40IDMuMyAzMS40IDMuMyA0Mi43IDAgMjguOS0yIDg4LjktNDQuMSA4OC45LTEzLjUgMC0zMi42LTcuNy0yMC4xLTI2LjRsNjAuOS0xMDUuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0NS44MyAyMTQuODdsLTMzLjIyIDE3LjI4Yy05LjQzLTE5LjU4LTI1LjI0LTE5LjkzLTI3LjQ2LTE5LjkzLTIyLjEzIDAtMzMuMjIgMTQuNjEtMzMuMjIgNDMuODQgMCAyMy41NyA5LjIxIDQzLjg0IDMzLjIyIDQzLjg0IDE0LjQ3IDAgMjQuNjUtNy4wOSAzMC41Ny0yMS4yNmwzMC41NSAxNS41Yy02LjE3IDExLjUxLTI1LjY5IDM4Ljk4LTY1LjEgMzguOTgtMjIuNiAwLTczLjk2LTEwLjMyLTczLjk2LTc3LjA1IDAtNTguNjkgNDMtNzcuMDYgNzIuNjMtNzcuMDYgMzAuNzItLjAxIDUyLjcgMTEuOTUgNjUuOTkgMzUuODZ6bTE0My4wNSAwbC0zMi43OCAxNy4yOGMtOS41LTE5Ljc3LTI1LjcyLTE5LjkzLTI3LjktMTkuOTMtMjIuMTQgMC0zMy4yMiAxNC42MS0zMy4yMiA0My44NCAwIDIzLjU1IDkuMjMgNDMuODQgMzMuMjIgNDMuODQgMTQuNDUgMCAyNC42NS03LjA5IDMwLjU0LTIxLjI2bDMxIDE1LjVjLTIuMSAzLjc1LTIxLjM5IDM4Ljk4LTY1LjA5IDM4Ljk4LTIyLjY5IDAtNzMuOTYtOS44Ny03My45Ni03Ny4wNSAwLTU4LjY3IDQyLjk3LTc3LjA2IDcyLjYzLTc3LjA2IDMwLjcxLS4wMSA1Mi41OCAxMS45NSA2NS41NiAzNS44NnpNMjQ3LjU2IDguMDVDMTA0Ljc0IDguMDUgMCAxMjMuMTEgMCAyNTYuMDVjMCAxMzguNDkgMTEzLjYgMjQ4IDI0Ny41NiAyNDggMTI5LjkzIDAgMjQ4LjQ0LTEwMC44NyAyNDguNDQtMjQ4IDAtMTM3Ljg3LTEwNi42Mi0yNDgtMjQ4LjQ0LTI0OHptLjg3IDQ1MC44MWMtMTEyLjU0IDAtMjAzLjctOTMuMDQtMjAzLjctMjAyLjgxIDAtMTA1LjQyIDg1LjQzLTIwMy4yNyAyMDMuNzItMjAzLjI3IDExMi41MyAwIDIwMi44MiA4OS40NiAyMDIuODIgMjAzLjI2LS4wMSAxMjEuNjktOTkuNjggMjAyLjgyLTIwMi44NCAyMDIuODJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyaXRpY2FsUm9sZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjUuODIgMGMuMjYuMTUgMjE2LjU3IDEyNC41MSAyMTcuMTIgMTI0LjcyIDMgMS4xOCAzLjcgMy40NiAzLjcgNi41NnEtLjExIDEyNS4xNyAwIDI1MC4zNmE1Ljg4IDUuODggMCAwIDEtMy4zOCA1Ljc4Yy0yMS4zNyAxMi0yMDcuODYgMTE4LjI5LTIxOC45MyAxMjQuNThoLTNDMTQyIDQ2Ni4zNCAzLjA4IDM4Ni41NiAyLjkzIDM4Ni40OGEzLjI5IDMuMjkgMCAwIDEtMS44OC0zLjI0YzAtLjg3IDAtMjI1Ljk0LS4wNS0yNTMuMWE1IDUgMCAwIDEgMi45My00LjkzQzI3LjE5IDExMi4xMSAyMTMuMiA2IDIyNC4wNyAwek0yMTUuNCAyMC40MmwtLjIyLS4xNlExMTguMDYgNzUuNTUgMjEgMTMwLjg3YzAgLjEyLjA4LjIzLjEzLjM1bDMwLjg2IDExLjY0Yy03LjcxIDYtOC4zMiA2LTEwLjY1IDUuMTMtLjEgMC0yNC4xNy05LjI4LTI2LjgtMTB2MjMwLjQzYy44OC0xLjQxIDY0LjA3LTExMC45MSA2NC4xMy0xMTEgMS42Mi0yLjgyIDMtMS45MiA5LjEyLTEuNTIgMS40LjA5IDEuNDguMjIuNzggMS40Mi00MS4xOSA3MS4zMy0zNi40IDYzLTY3LjQ4IDExNi45NC0uODEgMS40LS42MSAxLjEzIDEuMjUgMS4xM2gxODYuNWMxLjQ0IDAgMS42OS0uMjMgMS43LTEuNjR2LTguODhjMC0xLjM0IDIuMzYtLjgxLTE4LjM3LTEtNy40Ni0uMDctMTQuMTQtMy4yMi0yMS4zOC0xMi43LTcuMzgtOS42Ni0xNC42Mi0xOS40My0yMS44NS0yOS4yMS0yLjI4LTMuMDgtMy40NS0yLjM4LTE2Ljc2LTIuMzgtMS43NSAwLTEuNzggMC0xLjc2IDEuODIuMjkgMjYuMjEuMTUgMjUuMjcgMSAzMi42Ni41MiA0LjM3IDIuMTYgNC4yIDkuNjkgNC44MSAzLjE0LjI2IDMuODggNC4wOC41MiA0LjkyLTEuNTcuMzktMzEuNi41MS0zMy42Ny0uMWEyLjQyIDIuNDIgMCAwIDEgLjMtNC43M2MzLjI5LS43NiA2LjE2LjgxIDYuNjYtNC40NCAxLjMtMTMuNjYgMS4xNy05IDEuMS03OS40MiAwLTEwLjgyLS4zNS0xMi41OC01LjM2LTEzLjU1LTEuMjItLjI0LTMuNTQtLjE2LTQuNjktLjU1LTIuODgtMS0yLTQuODQgMS43Ny00Ljg1IDMzLjY3IDAgNDYuMDgtMS4wNyA1Ni4wNiA0Ljg2IDcuNzQgNC42MSAxMiAxMS40OCAxMi41MSAyMC40Ljg4IDE0LjU5LTYuNTEgMjIuMzUtMTUgMzIuNTlhMS40NiAxLjQ2IDAgMCAwIDAgMi4yMmMyLjYgMy4yNSA1IDYuNjMgNy43MSA5LjgzIDI3LjU2IDMzLjIzIDI0LjExIDMwLjU0IDQxLjI4IDMzLjA2Ljg5LjEzIDEtLjQyIDEtMS4xNXYtMTFjMC0xIC4zMi0xLjQzIDEuNDEtMS4yNmE3Mi4zNyA3Mi4zNyAwIDAgMCAyMy41OC0uM2MxLjA4LS4xNSAxLjUuMiAxLjQ4IDEuMzMgMCAuMTEuODggMjYuNjkuODcgMjYuOC0uMDUgMS41Mi42NyAxLjYyIDEuODkgMS42MmgxODYuNzFRMzg2LjUxIDMwNC42IDM0NiAyMzQuMzNjMi4yNi0uNjYtLjQgMCA2LjY5LTEuMzkgMi0uMzkgMi4wNS0uNDEgMy4xMSAxLjQ0IDcuMzEgMTIuNjQgNzcuMzEgMTM0IDc3LjM3IDEzNC4wNlYxMzhjLTEuNzIuNS0xMDMuMyAzOC43Mi0xMDUuNzYgMzkuNjgtMS4wOC40Mi0xLjU1LjItMS45MS0uODgtLjYzLTEuOS0xLjM0LTMuNzYtMi4wOS01LjYyLS4zMi0uNzktLjA5LTEuMTMuNjUtMS4zOS4xIDAgOTUuNTMtMzUuODUgMTAzLTM4Ljc3LTY1LjQyLTM3LjU3LTEzMC41Ni03NS0xOTYtMTEyLjZsODYuODIgMTUwLjM5LS4yOC4zM2MtOS41Ny0uOS0xMC40Ni0xLjYtMTEuOC0zLjk0LTEtMS42OS03My41LTEyNy43MS04Mi0xNDIuMTYtOS4xIDE0LjY3LTgzLjU2IDE0Ni4yMS04NS4zNyAxNDYuMzItMi45My4xNy01Ljg4LjA4LTkuMjUuMDhxNDMuMjUtNzQuNzQgODYuMTgtMTQ5em01MS45MyAxMjkuOTJhMzcuNjggMzcuNjggMCAwIDAgNS41NC0uODVjMS42OS0uMyAyLjUzLjIgMi42IDEuOTIgMCAuMTEuMDcgMTkuMDYtLjg2IDIwLjQ1cy0xLjg4IDEuMjItMi42LS4xOWMtNS05LjY5IDYuMjItOS42Ni0zOS4xMi0xMi0uNyAwLTEgLjIzLTEgLjkzIDAgLjEzIDMuNzIgMTIyIDMuNzMgMTIyLjExIDAgLjg5LjUyIDEuMiAxLjIxIDEuNTFhODMuOTIgODMuOTIgMCAwIDEgOC43IDQuMDVjNy4zMSA0LjMzIDExLjM4IDEwLjg0IDEyLjQxIDE5LjMxIDEuNDQgMTEuOC0yLjc3IDM1Ljc3LTMyLjIxIDM3LjE0LTIuNzUuMTMtMjguMjYgMS4wOC0zNC4xNC0yMy4yNS00LjY2LTE5LjI2IDguMjYtMzIuNyAxOS44OS0zNi40YTIuNDUgMi40NSAwIDAgMCAyLTIuNjZjLjEtNS42MyAzLTEwNy4xIDMuNzEtMTIxLjM1LjA1LTEuMDgtLjYyLTEuMTYtMS4zNS0xLjE1LTMyLjM1LjUyLTM2Ljc1LS4zNC00MC4yMiA4LjUyLTIuNDIgNi4xOC00LjE0IDEuMzItMy45NS4yM3ExLjU5LTkgMy4zMS0xOGMuNC0yLjExIDEuNDMtMi42MSAzLjQzLTEuODYgNS41OSAyLjExIDYuNzIgMS43IDM3LjI1IDEuOTIgMS43MyAwIDEuNzgtLjA4IDEuODItMS44NS42OC0yNy40OS41OC0yMi41OSAxLTI5LjU1YTIuNjkgMi42OSAwIDAgMC0xLjYzLTIuOGMtNS42LTIuOTEtOC43NS03LjU1LTguOS0xMy44Ny0uMzUtMTQuODEgMTcuNzItMjEuNjcgMjcuMzgtMTEuNTEgNi44NCA3LjE5IDUuOCAxOC45MS0yLjQ1IDI0LjE1YTQuMzUgNC4zNSAwIDAgMC0yLjIyIDQuMzRjMCAuNTktLjExLTQuMzEgMSAzMC4wNSAwIC45LjQzIDEuMTIgMS4yNCAxLjExLjEgMCAyMy0uMDkgMzQuNDctLjM3ek02OC4yNyAxNDEuN2MxOS44NC00LjUxIDMyLjY4LS41NiA1Mi40OSAxLjY5IDIuNzYuMzEgMy43NCAxLjIyIDMuNjIgNC0uMjEgNS0xLjE2IDIyLjMzLTEuMjQgMjMuMTVhMi42NSAyLjY1IDAgMCAxLTEuNjMgMi4zNGMtNC4wNiAxLjctMy42MS00LjQ1LTQtNy4yOS0zLjEzLTIyLjQzLTczLjg3LTMyLjctNzQuNjMgMjUuNC0uMzEgMjMuOTIgMTcgNTMuNjMgNTQuMDggNTAuODggMjcuMjQtMiAxOS0yMC4xOSAyNC44NC0yMC40N2EyLjcyIDIuNzIgMCAwIDEgMyAzLjM2Yy0xLjgzIDEwLjg1LTMuNDIgMTguOTUtMy40NSAxOS4xNS0xLjU0IDkuMTctODYuNyAyMi4wOS05My4zNS00Mi4wNi0yLjcxLTI1Ljg1IDEwLjQ0LTUzLjM3IDQwLjI3LTYwLjE1em04MCA4Ny42N2gtMTkuNDlhMi41NyAyLjU3IDAgMCAxLTIuNjYtMS43OWMyLjM4LTMuNzUgNS44OS45MiA1Ljg2LTYuMTQtLjA4LTI1Ljc1LjIxLTM4IC4yMy00MC4xIDAtMy40Mi0uNTMtNC42NS0zLjMyLTQuOTQtNy0uNzItMy4xMS0zLjM3LTEuMTEtMy4zOCAxMS44NC0uMSAyMi42Mi0uMTggMzAuMDUuNzIgOC43NyAxLjA3IDE2LjcxIDEyLjYzIDcuOTMgMjIuNjItMiAyLjI1LTQgNC40Mi02LjE0IDYuNzMuOTUgMS4xNSA2LjkgOC44MiAxNy4yOCAxOS42OCAyLjY2IDIuNzggNi4xNSAzLjUxIDkuODggMy4xM2EyLjIxIDIuMjEgMCAwIDAgMi4yMy0yLjEyYy4zLTMuNDIuMjYgNC43My40NS00MC41OCAwLTUuNjUtLjM0LTYuNTgtMy4yMy02LjgzLTMuOTUtLjM1LTQtMi4yNi0uNjktMy4zN2wxOS4wOS0uMDljLjMyIDAgNC40OS41MyAxIDMuMzggMCAuMDUtLjE2IDAtLjI0IDAtMy42MS4yNi0zLjk0IDEtNCA0LjYyLS4yNyA0My45My4wNyA0MC4yMy40MSA0Mi44Mi4xMS44NC4yNyAyLjIzIDUuMSAyLjE0IDIuNDkgMCAzLjg2IDMuMzcgMCAzLjQtMTAuMzcuMDgtMjAuNzQgMC0zMS4xMS4wNy0xMC42NyAwLTEzLjQ3LTYuMi0yNC4yMS0yMC44Mi0xLjYtMi4xOC04LjMxLTIuMzYtOC4yLS4zNy44OCAxNi40NyAwIDE3Ljc4IDQgMTcuNjcgNC43NS0uMSA0LjczIDMuNTcuODMgMy41NXptMjc1LTEwLjE1Yy0xLjIxIDcuMTMuMTcgMTAuMzgtNS4zIDEwLjM0LTYxLjU1LS40Mi00Ny44Mi0uMjItNTAuNzItLjMxYTE4LjQgMTguNCAwIDAgMS0zLjYzLS43M2MtMi41My0uNiAxLjQ4LTEuMjMtLjM4LTUuNi0xLjQzLTMuMzctMi43OC02Ljc4LTQuMTEtMTAuMTlhMS45NCAxLjk0IDAgMCAwLTItMS40NCAxMzggMTM4IDAgMCAwLTE0LjU4LjA3IDIuMjMgMi4yMyAwIDAgMC0xLjYyIDEuMDZjLTEuNTggMy42Mi0zLjA3IDcuMjktNC41MSAxMS0xLjI3IDMuMjMgNy44NiAxLjMyIDEyLjE5IDIuMTYgMyAuNTcgNC41MyAzLjcyLjY2IDMuNzNIMzIyLjljLTIuOTIgMC0zLjA5LTMuMTUtLjc0LTMuMjFhNi4zIDYuMyAwIDAgMCA1LjkyLTMuNDdjMS41LTMgMi44LTYgNC4xMS05LjA5IDE4LjE4LTQyLjE0IDE3LjA2LTQwLjE3IDE4LjQyLTQxLjYxYTEuODMgMS44MyAwIDAgMSAzIDBjMi45MyAzLjM0IDE4LjQgNDQuNzEgMjMuNjIgNTEuOTIgMiAyLjcgNS43NCAyIDYuMzYgMiAzLjYxLjEzIDQtMS4xMSA0LjEzLTQuMjkuMDktMS44Ny4wOCAxLjE3LjA3LTQxLjI0IDAtNC40Ni0yLjM2LTMuNzQtNS41NS00LjI3LS4yNiAwLTIuNTYtLjYzLS4wOC0zLjA2LjIxLS4yLS44OS0uMjQgMjEuNy0uMTUgMi4zMiAwIDUuMzIgMi43NS0xLjIxIDMuNDVhMi41NiAyLjU2IDAgMCAwLTIuNjYgMi44M2MtLjA3IDEuNjMtLjE5IDM4Ljg5LjI5IDQxLjIxYTMuMDYgMy4wNiAwIDAgMCAzLjIzIDIuNDNjMTMuMjUuNDMgMTQuOTIuNDQgMTYtMy40MSAxLjY3LTUuNzggNC4xMy0yLjUyIDMuNzMtLjE5em0tMTA0LjcyIDY0LjM3Yy00LjI0IDAtNC40Mi0zLjM5LS42MS0zLjQxIDM1LjkxLS4xNiAyOC4xMS4zOCAzNy4xOS0uNjUgMS42OC0uMTkgMi4zOC4yNCAyLjI1IDEuODktLjI2IDMuMzktLjY0IDYuNzgtMSAxMC4xNi0uMjUgMi4xNi0zLjIgMi42MS0zLjQtLjE1LS4zOC01LjMxLTIuMTUtNC40NS0xNS42My01LjA4LTEuNTgtLjA3LTEuNjQgMC0xLjY0IDEuNTJWMzA0YzAgMS42NSAwIDEuNiAxLjYyIDEuNDcgMy4xMi0uMjUgMTAuMzEuMzQgMTUuNjktMS41Mi40Ny0uMTYgMy4zLTEuNzkgMy4wNyAxLjc2IDAgLjIxLS43NiAxMC4zNS0xLjE4IDExLjM5LS41MyAxLjI5LTEuODggMS41MS0yLjU4LjMyLTEuMTctMiAwLTUuMDgtMy43MS01LjMtMTUuNDItLjktMTIuOTEtMi41NS0xMi45MSA2IDAgMTIuMjUtLjc2IDE2LjExIDMuODkgMTYuMjQgMTYuNjQuNDggMTQuNCAwIDE2LjQzLTUuNzEuODQtMi4zNyAzLjUtMS43NyAzLjE4LjU4LS40NCAzLjIxLS44NSA2LjQzLTEuMjMgOS42NCAwIC4zNi0uMTYgMi40LTQuNjYgMi4zOS0zNy4xNi0uMDgtMzQuNTQtLjE5LTM1LjIxLS4zMS0yLjcyLS41MS0yLjItMyAuMjItMy40NSAxLjEtLjE5IDQgLjU0IDQuMTYtMi41NiAyLjQ0LTU2LjIyLS4wNy01MS4zNC0zLjkxLTUxLjMzem0tLjQxLTEwOS41MmMyLjQ2LjYxIDMuMTMgMS43NiAyLjk1IDQuNjUtLjMzIDUuMy0uMzQgOS0uNTUgOS42OS0uNjYgMi4yMy0zLjE1IDIuMTItMy4zNC0uMjctLjM4LTQuODEtMy4wNS03LjgyLTcuNTctOS4xNS0yNi4yOC03LjczLTMyLjgxIDE1LjQ2LTI3LjE3IDMwLjIyIDUuODggMTUuNDEgMjIgMTUuOTIgMjguODYgMTMuNzggNS45Mi0xLjg1IDUuODgtNi41IDYuOTEtNy41OCAxLjIzLTEuMyAyLjI1LTEuODQgMy4xMiAxLjEgMCAuMS41NyAxMS44OS02IDEyLjc1LTEuNi4yMS0xOS4zOCAzLjY5LTMyLjY4LTMuMzktMjEtMTEuMTktMTYuNzQtMzUuNDctNi44OC00NS4zMyAxNC0xNC4wNiAzOS45MS03LjA2IDQyLjMyLTYuNDd6TTI4OS44IDI4MC4xNGMzLjI4IDAgMy42NiAzIC4xNiAzLjQzLTIuNjEuMzItNS0uNDItNSA1LjQ2IDAgMi0uMTkgMjkuMDUuNCA0MS40NS4xMSAyLjI5IDEuMTUgMy41MiAzLjQ0IDMuNjUgMjIgMS4yMSAxNC45NS0xLjY1IDE4Ljc5LTYuMzQgMS44My0yLjI0IDIuNzYuODQgMi43NiAxLjA4LjM1IDEzLjYyLTQgMTIuMzktNS4xOSAxMi40bC0zOC4xNi0uMTljLTEuOTMtLjIzLTIuMDYtMy0uNDItMy4zOCAyLS40OCA0Ljk0LjQgNS4xMy0yLjggMS0xNS44Ny41Ny00NC42NS4zNC00Ny44MS0uMjctMy43Ny0yLjgtMy4yNy01LjY4LTMuNzEtMi40Ny0uMzgtMi0zLjIyLjM0LTMuMjIgMS40NS0uMDIgMTcuOTctLjAzIDIzLjA5LS4wMnptLTMxLjYzLTU3Ljc5Yy4wNyA0LjA4IDIuODYgMy40NiA2IDMuNTggMi42MS4xIDIuNTMgMy40MS0uMDcgMy40My02LjQ4IDAtMTMuNyAwLTIxLjYxLS4wNi0zLjg0IDAtMy4zOC0zLjM1IDAtMy4zNyA0LjQ5IDAgMy4yNCAxLjYxIDMuNDEtNDUuNTQgMC01LjA4LTMuMjctMy41NC00LjcyLTQuMjMtMi41OC0xLjIzLTEuMzYtMy4wOS40MS0zLjE1IDEuMjkgMCAyMC4xOS0uNDEgMjEuMTcuMjFzMS44NyAxLjY1LS40MiAyLjg2Yy0xIC41Mi0zLjg2LS4yOC00LjE1IDIuNDcgMCAuMjEtLjgyIDEuNjMtLjA3IDQzLjh6bS0zNi45MSAyNzQuMjdhMi45MyAyLjkzIDAgMCAwIDMuMjYgMGMxNy05Ljc5IDE4Mi0xMDMuNTcgMTk3LjQyLTExMi41MS0uMTQtLjQzIDExLjI2LS4xOC0xODEuNTItLjI3LTEuMjIgMC0xLjU3LjM3LTEuNTMgMS41NiAwIC4xIDEuMjUgNDQuNTEgMS4yMiA1MC4zOGEyOC4zMyAyOC4zMyAwIDAgMS0xLjM2IDcuNzFjLS41NSAxLjgzLjM4LS41LTEzLjUgMzIuMjMtLjczIDEuNzItMSAyLjIxLTItLjA4LTQuMTktMTAuMzQtOC4yOC0yMC43Mi0xMi41Ny0zMWEyMy42IDIzLjYgMCAwIDEtMi0xMC43OWMuMTYtMi40Ni44LTE2LjEyIDEuNTEtNDggMC0xLjk1IDAtMi0yLTJoLTE4M2MyLjU4IDEuNjMgMTc4LjMyIDEwMi41NyAxOTYgMTEyLjc2em0tOTAuOS0xODguNzVjMCAyLjQuMzYgMi43OSAyLjc2IDMgMTEuNTQgMS4xNyAyMSAzLjc0IDI1LjY0LTcuMzIgNi0xNC40NiAyLjY2LTM0LjQxLTEyLjQ4LTM4Ljg0LTItLjU5LTE2LTIuNzYtMTUuOTQgMS41MS4wNSA4LjA0LjAxIDExLjYxLjAyIDQxLjY1em0xMDUuNzUtMTUuMDVjMCAyLjEzIDEuMDcgMzguNjggMS4wOSAzOS4xMy4zNCA5Ljk0LTI1LjU4IDUuNzctMjUuMjMtMi41OS4wOC0yIDEuMzctMzcuNDIgMS4xLTM5LjQzLTE0LjEgNy40NC0xNC40MiA0MC4yMSA2LjQ0IDQ4LjhhMTcuOSAxNy45IDAgMCAwIDIyLjM5LTcuMDdjNC45MS03Ljc2IDYuODQtMjkuNDctNS40My0zOWEyLjUzIDIuNTMgMCAwIDEtLjM2LjEyem0tMTIuMjgtMTk4Yy05LjgzIDAtOS43MyAxNC43NS0uMDcgMTQuODdzMTAuMS0xNC44OC4wNy0xNC45MXptLTgwLjE1IDEwMy44M2MwIDEuOC40MSAyLjQgMi4xNyAyLjU4IDEzLjYyIDEuMzkgMTIuNTEtMTEgMTIuMTYtMTMuMzYtMS42OS0xMS4yMi0xNC4zOC0xMC4yLTE0LjM1LTcuODEuMDUgNC41LS4wMyAxMy42OC4wMiAxOC41OXptMjEyLjMyIDYuNGwtNi4xLTE1Ljg0Yy0yLjE2IDUuNDgtNC4xNiAxMC41Ny02LjIzIDE1Ljg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDc3MzQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJsMzQuOSAzOTUuOEwxOTIgNDgwbDE1Ny4xLTUyLjJMMzg0IDMySDB6bTMxMy4xIDgwbC00LjggNDcuM0wxOTMgMjA4LjZsLS4zLjFoMTExLjVsLTEyLjggMTQ2LjYtOTguMiAyOC43LTk4LjgtMjkuMi02LjQtNzMuOWg0OC45bDMuMiAzOC4zIDUyLjYgMTMuMyA1NC43LTE1LjQgMy43LTYxLjYtMTY2LjMtLjV2LS4xbC0uMi4xLTMuNi00Ni4zTDE5My4xIDE2Mmw2LjUtMi43SDc2LjdMNzAuOSAxMTJoMjQyLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNzczMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDMybC02NCAzNjgtMjIzLjMgODBMMCA0MDBsMTkuNi05NC44aDgybC04IDQwLjZMMjEwIDM5MC4ybDEzNC4xLTQ0LjQgMTguOC05Ny4xSDI5LjVsMTYtODJoMzMzLjdsMTAuNS01Mi43SDU2LjNsMTYuMy04Mkg0ODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUN1dHRsZWZpc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ0IDMwNS41Yy0xNy41IDMxLjYtNTcuNCA1NC41LTk2IDU0LjUtNTYuNiAwLTEwNC00Ny40LTEwNC0xMDRzNDcuNC0xMDQgMTA0LTEwNGMzOC42IDAgNzguNSAyMi45IDk2IDU0LjUgMTMuNy01MC45IDQxLjctOTMuMyA4Ny0xMTcuOEMzODUuNyAzOS4xIDMyMC41IDggMjQ4IDggMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4YzcyLjUgMCAxMzcuNy0zMS4xIDE4My04MC43LTQ1LjMtMjQuNS03My4zLTY2LjktODctMTE3Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURBbmREQmV5b25kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy44IDI0MS41YzEzLjggMCAyMS0xMC4xIDI0LjgtMTcuOS0xLTEuMS01LTQuMi03LjQtNi42LTIuNCA0LjMtOC4yIDEwLjctMTMuOSAxMC43LTEwLjIgMC0xNS40LTE0LjctMy4yLTI2LjYtLjUtLjItNC4zLTEuOC04IDIuNCAwLTMgMS01LjEgMi4xLTYuNi0zLjUgMS4zLTkuOCA1LjYtMTEuNCA3LjkuMi01LjggMS42LTcuNS42LTlsLS4yLS4ycy04LjUgNS42LTkuMyAxNC43YzAgMCAxLjEtMS42IDIuMS0xLjkuNi0uMyAxLjMgMCAuNiAxLjktLjIuNi01LjggMTUuNyA1LjEgMjYtLjYtMS42LTEuOS03LjYgMi40LTEuOS0uMy4xIDUuOCA3LjEgMTUuNyA3LjF6bTUyLjQtMjEuMWMwLTQtNC45LTQuNC01LjYtNC41IDIgMy45LjkgNy41LjIgOSAyLjUtLjQgNS40LTEuNiA1LjQtNC41em0xMC4zIDUuMmMwLTYuNC02LjItMTEuNC0xMy41LTEwLjcgOCAxLjMgNS42IDEzLjgtNSAxMS40IDMuNy0yLjYgMy4yLTkuOS0xLjMtMTIuNSAxLjQgNC4yLTMgOC4yLTcuNCA0LjYtMi40LTEuOS04LTYuNi0xMC42LTguNi0yLjQtMi4xLTUuNS0xLTYuNi0xLjgtMS4zLTEuMS0uNS0zLjgtMi4yLTUtMS42LS44LTMtLjMtNC44LTEtMS42LS42LTIuNy0xLjktMi42LTMuNS0yLjUgNC40IDMuNCA2LjMgNC41IDguNSAxIDEuOS0uOCA0LjggNCA4LjUgMTQuOCAxMS42IDkuMSA4IDEwLjQgMTguMS42IDQuMyA0LjIgNi43IDYuNCA3LjQtMi4xLTEuOS0yLjktNi40IDAtOS4zIDAgMTMuOSAxOS4yIDEzLjMgMjMuMSA2LjQtMi40IDEuMS03LS4yLTktMS45IDcuNyAxIDE0LjItNC4xIDE0LjYtMTAuNnptLTM5LjQtMTguNGMyIC44IDEuNi43IDYuNCA0LjUgMTAuMi0yNC41IDIxLjctMTUuNyAyMi0xNS41IDIuMi0xLjkgOS44LTMuOCAxMy44LTIuNy0yLjQtMi43LTcuNS02LjItMTMuMy02LjItNC43IDAtNy40IDIuMi04IDEuMy0uOC0xLjQgMy4yLTMuNCAzLjItMy40LTUuNC4yLTkuNiA2LjctMTEuMiA1LjktMS4xLS41IDEuNC0zLjcgMS40LTMuNy01LjEgMi45LTkuMyA5LjEtMTAuMiAxMyA0LjYtNS44IDEzLjgtOS44IDE5LjctOS0xMC41LjUtMTkuNSA5LjctMjMuOCAxNS44em0yNDIuNSA1MS45Yy0yMC43IDAtNDAgMS4zLTUwLjMgMi4xbDcuNCA4LjJ2NzcuMmwtNy40IDguMmMxMC40LjggMzAuOSAyLjEgNTEuNiAyLjEgNDIuMSAwIDU5LjEtMjAuNyA1OS4xLTQ4LjkgMC0yOS4zLTIzLjItNDguOS02MC40LTQ4Ljl6bS0xNS4xIDc1LjZ2LTUzLjNjMzAuMS0zLjMgNDYuOCAzLjggNDYuOCAyNi4zIDAgMjUuNi0yMS40IDMwLjItNDYuOCAyN3pNMzAxLjYgMTgxYy0xLTMuNC0uMi02LjkgMS4xLTkuNCAxIDMgMi42IDYuNCA3LjUgOS0uNS0yLjQtLjItNS42LjUtOC0xLjQtNS40IDIuMS05LjkgNi40LTkuOSA2LjkgMCA4LjUgOC44IDQuNyAxNC40IDIuMSAzLjIgNS41IDUuNiA3LjcgNy44IDMuMi0zLjcgNS41LTkuNSA1LjUtMTMuOCAwLTguMi01LjUtMTUuOS0xNi43LTE2LjUtMjAtLjktMjAuMiAxNi42LTIwIDE4LjkuNSA1LjIgMy40IDcuOCAzLjMgNy41em0tLjQgNmMtLjUgMS44LTcgMy43LTEwLjIgNi45IDQuOC0xIDctLjIgNy44IDEuOC41IDEuNC0uMiAzLjQtLjUgNS42IDEuNi0xLjggNy01LjUgMTEtNi4yLTEtLjMtMy40LS44LTQuMy0uOCAyLjktMy40IDkuMy00LjUgMTIuOC0zLjctMi4yLS4yLTYuNyAxLjEtOC41IDIuNiAxLjYuMyAzIC42IDQuMyAxLjEtMi4xLjgtNC44IDMuNC01LjggNi4xIDctNSAxMy4xIDUuMiA3IDguMi44LjIgMi43IDAgMy41LS41LS4zIDEuMS0xLjkgMy0zIDMuNCAyLjkgMCA3LTEuOSA4LjItNC42IDAgMC0xLjguNi0yLjYtLjJzLjMtNC4zLjMtNC4zYy0yLjMgMi45LTMuNC0xLjMtMS4zLTQuMi0xLS4zLTMuNS0uNi00LjYtLjUgMy4yLTEuMSAxMC40LTEuOCAxMS4yLS4zLjYgMS4xLTEgMy40LTEgMy40IDQtLjUgOC4zIDEuMSA2LjcgNS4xIDIuOS0xLjQgNS41LTUuOSA0LjgtMTAuNC0uMyAxLTEuNiAyLjQtMi45IDIuNy4yLTEuNC0xLTIuMi0xLjktMi42IDEuNy05LjYtMTQuNi0xNC4yLTE0LjEtMjMuOS0xIDEuMy0xLjggNS0uOCA3LjEgMi43IDMuMiA4LjcgNi43IDEwLjEgMTIuMi0yLjYtNi40LTE1LjEtMTEuNC0xNC42LTIwLjItMS42IDEuNi0yLjYgNy44LTEuMyAxMSAyLjQgMS40IDQuNSAzLjggNC44IDYuMS0yLjItNS4xLTExLjQtNi4xLTEzLjktMTIuMi0uNiAyLjItLjMgNSAxIDYuNyAwIDAtMi4yLS44LTctLjYgMS43LjYgNS4xIDMuNSA0LjggNS4yem0yNS45IDcuNGMtMi43IDAtMy41LTIuMS00LjItNC4zIDMuMyAxLjMgNC4yIDQuMyA0LjIgNC4zem0zOC45IDMuN2wtMS0uNmMtMS4xLTEtMi45LTEuNC00LjctMS40LTIuOSAwLTUuOCAxLjMtNy41IDMuNC0uOC44LTEuNCAxLjgtMi4xIDIuNnYxNS43YzMuNSAyLjYgNy4xLTIuOSAzLTcuMiAxLjUuMyA0LjYgMi43IDUuMSAzLjIgMCAwIDIuNi0uNSA1LS41IDIuMSAwIDMuOS4zIDUuNiAxLjFWMTk2Yy0xLjEuNS0yLjIgMS0yLjcgMS40ek03OS45IDMwNS45YzE3LjItNC42IDE2LjItMTggMTYuMi0xOS45IDAtMjAuNi0yNC4xLTI1LTM3LTI1SDNsOC4zIDguNnYyOS41SDBsMTEuNCAxNC42VjM0NkwzIDM1NC42YzYxLjcgMCA3My44IDEuNSA4Ni40LTUuOSA2LjctNCA5LjktOS44IDkuOS0xNy42IDAtNS4xIDIuNi0xOC44LTE5LjQtMjUuMnptLTQxLjMtMjcuNWMyMCAwIDI5LjYtLjggMjkuNiA5LjF2M2MwIDEyLjEtMTkgOC44LTI5LjYgOC44em0wIDU5LjJWMzE1YzEyLjIgMCAzMi43LTIuMyAzMi43IDguOHY0LjVoLjJjMCAxMS4yLTEyLjUgOS4zLTMyLjkgOS4zem0xMDEuMi0xOS4zbDIzLjEuMnYtLjJsMTQuMS0yMS4yaC0zNy4ydi0xNC45aDUyLjRsLTE0LjEtMjF2LS4ybC03My41LjIgNy40IDguMnY3Ny4xbC03LjQgOC4yaDgxLjJsMTQuMS0yMS4yLTYwLjEuMnptMjE0LjctNjAuMWMtNzMuOSAwLTc3LjUgOTkuMy0uMyA5OS4zIDc3LjkgMCA3NC4xLTk5LjMuMy05OS4zem0tLjMgNzcuNWMtMzcuNCAwLTM2LjktNTUuMy4yLTU1LjMgMzYuOC4xIDM4LjggNTUuMy0uMiA1NS4zem0tOTEuMy04LjNsNDQuMS02Ni4yaC00MS43bDYuMSA3LjItMjAuNSAzNy4yaC0uM2wtMjEtMzcuMiA2LjQtNy4yaC00NC45bDQ0LjEgNjUuOC4yIDE5LjQtNy43IDguMmg0Mi42bC03LjItOC4yem0tMjguNC0xNTEuM2MxLjYgMS4zIDIuOSAyLjQgMi45IDYuNnYzOC44YzAgNC4yLS44IDUuMy0yLjcgNi40LS4xLjEtNy41IDQuNS03LjkgNC42aDM1LjFjMTAgMCAxNy40LTEuNSAyNi04LjYtLjYtNSAuMi05LjUuOC0xMiAwLS4yLTEuOCAxLjQtMi43IDMuNSAwLTUuNyAxLjYtMTUuNCA5LjYtMjAuNS0uMSAwLTMuNy0uOC05IDEuMSAyLTMuMSAxMC03LjkgMTAuNC03LjktOC4yLTI2LTM4LTIyLjktMzIuMi0yMi45LTMwLjkgMC0zMi42LjMtMzkuOS00IC4xLjguNSA4LjIgOS42IDE0Ljl6bTIxLjUgNS41YzQuNiAwIDIzLjEtMy4zIDIzLjEgMTcuMyAwIDIwLjctMTguNCAxNy4zLTIzLjEgMTcuM3ptMjI4LjkgNzkuNmw3IDguM1YzMTJoLS4zYy01LjQtMTQuNC00Mi4zLTQxLjUtNDUuMi01MC45aC0zMS42bDcuNCA4LjV2NzYuOWwtNy4yIDguM2gzOWwtNy40LTguMnYtNDcuNGguM2MzLjcgMTAuNiA0NC41IDQyLjkgNDguNSA1NS42aDIxLjN2LTg1LjJsNy40LTguM3ptLTEwNi43LTk2LjFjLTMyLjIgMC0zMi44LjItMzkuOS00IC4xLjcuNSA4LjMgOS42IDE0LjkgMy4xIDIgMi45IDQuMyAyLjkgOS41IDEuOC0xLjEgMy44LTIuMiA2LjEtMy0xLjEgMS4xLTIuNyAyLjctMy41IDQuNSAxLTEuMSA3LjUtNS4xIDE0LjYtMy41LTEuNi4zLTQgMS4xLTYuMSAyLjkuMSAwIDIuMS0xLjEgNy41LS4zdi00LjNjNC43IDAgMjMuMS0zLjQgMjMuMSAxNy4zIDAgMjAuNS0xOC41IDE3LjMtMTkuNyAxNy4zIDUuNyA0LjQgNS44IDEyIDIuMiAxNi4zaC4zYzMzLjQgMCAzNi43LTI3LjMgMzYuNy0zNCAwLTMuOC0xLjEtMzItMzMuOC0zMy42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEQW5kRCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04Mi41IDk4LjljLS42LTE3LjIgMi0zMy44IDEyLjctNDguMi4zIDcuNCAxLjIgMTQuNSA0LjIgMjEuNiA1LjktMjcuNSAxOS43LTQ5LjMgNDIuMy02NS41LTEuOSA1LjktMy41IDExLjgtMyAxNy43IDguNy03LjQgMTguOC0xNy44IDQ0LjQtMjIuNyAxNC43LTIuOCAyOS43LTIgNDIuMSAxIDM4LjUgOS4zIDYxIDM0LjMgNjkuNyA3Mi4zIDUuMyAyMy4xLjcgNDUtOC4zIDY2LjQtNS4yIDEyLjQtMTIgMjQuNC0yMC43IDM1LjEtMi0xLjktMy45LTMuOC01LjgtNS42LTQyLjgtNDAuOC0yNi44LTI1LjItMzcuNC0zNy40LTEuMS0xLjItMS0yLjItLjEtMy42IDguMy0xMy41IDExLjgtMjguMiAxMC00NC0xLjEtOS44LTQuMy0xOC45LTExLjMtMjYuMi0xNC41LTE1LjMtMzkuMi0xNS01My41LjYtMTEuNCAxMi41LTE0LjEgMjcuNC0xMC45IDQzLjYuMiAxLjMuNCAyLjcgMCAzLjktMy40IDEzLjctNC42IDI3LjYtMi41IDQxLjYuMS41LjEgMS4xLjEgMS42IDAgLjMtLjEuNS0uMiAxLjEtMjEuOC0xMS0zNi0yOC4zLTQzLjItNTIuMi04LjMgMTcuOC0xMS4xIDM1LjUtNi42IDU0LjEtMTUuNi0xNS4yLTIxLjMtMzQuMy0yMi01NS4yem00NjkuNiAxMjMuMmMtMTEuNi0xMS42LTI1LTIwLjQtNDAuMS0yNi42LTEyLjgtNS4yLTI2LTcuOS0zOS45LTcuMS0xMCAuNi0xOS42IDMuMS0yOSA2LjQtMi41LjktNS4xIDEuNi03LjcgMi4yLTQuOSAxLjItNy4zLTMuMS00LjctNi44IDMuMi00LjYgMy40LTQuMiAxNS0xMiAuNi0uNCAxLjItLjggMi4yLTEuNWgtMi41Yy0uNiAwLTEuMi4yLTEuOS4zLTE5LjMgMy4zLTMwLjcgMTUuNS00OC45IDI5LjYtMTAuNCA4LjEtMTMuOCAzLjgtMTItLjUgMS40LTMuNSAzLjMtNi43IDUuMS0xMCAxLTEuOCAyLjMtMy40IDMuNS01LjEtLjItLjItLjUtLjMtLjctLjUtMjcgMTguMy00Ni43IDQyLjQtNTcuNyA3My4zLjMuMy43LjYgMSAuOS4zLS42LjUtMS4yLjktMS43IDEwLjQtMTIuMSAyMi44LTIxLjggMzYuNi0yOS44IDE4LjItMTAuNiAzNy41LTE4LjMgNTguNy0yMC4yIDQuMy0uNCA4LjctLjEgMTMuMS0uMS0xLjguNy0zLjUuOS01LjMgMS4xLTE4LjUgMi40LTM1LjUgOS01MS41IDE4LjUtMzAuMiAxNy45LTU0LjUgNDIuMi03NS4xIDcwLjQtLjMuNC0uNC45LS43IDEuMyAxNC41IDUuMyAyNCAxNy4zIDM2LjEgMjUuNi4yLS4xLjMtLjIuNC0uNGwxLjItMi43YzEyLjItMjYuOSAyNy01Mi4zIDQ2LjctNzQuNSAxNi43LTE4LjggMzgtMjUuMyA2Mi41LTIwIDUuOSAxLjMgMTEuNCA0LjQgMTcuMiA2LjggMi4zLTEuNCA1LjEtMy4yIDgtNC43IDguNC00LjMgMTcuNC03IDI2LjctOSAxNC43LTMuMSAyOS41LTQuOSA0NC41LTEuM3YtLjVjLS41LS40LTEuMi0uOC0xLjctMS40ek0zMTYuNyAzOTcuNmMtMzkuNC0zMy0yMi44LTE5LjUtNDIuNy0zNS42LS44LjkgMC0uMi0xLjkgMy0xMS4yIDE5LjEtMjUuNSAzNS4zLTQ0IDQ3LjYtMTAuMyA2LjgtMjEuNSAxMS44LTM0LjEgMTEuOC0yMS42IDAtMzguMi05LjUtNDkuNC0yNy44LTEyLTE5LjUtMTMuMy00MC43LTguMi02Mi42IDcuOC0zMy44IDMwLjEtNTUuMiAzOC42LTY0LjMtMTguNy02LjItMzMgMS43LTQ2LjQgMTMuOS44LTEzLjkgNC4zLTI2LjIgMTEuOC0zNy4zLTI0LjMgMTAuNi00NS45IDI1LTY0LjggNDMuOS0uMy01LjggNS40LTQzLjcgNS42LTQ0LjcuMy0yLjctLjYtNS4zLTMtNy40LTI0LjIgMjQuNy00NC41IDUxLjgtNTYuMSA4NC42IDcuNC01LjkgMTQuOS0xMS40IDIzLjYtMTYuMi04LjMgMjIuMy0xOS42IDUyLjgtNy44IDEwMS4xIDQuNiAxOSAxMS45IDM2LjggMjQuMSA1Mi4zIDIuOSAzLjcgNi4zIDYuOSA5LjUgMTAuMy4yLS4yLjQtLjMuNi0uNS0xLjQtNy0yLjItMTQuMS0xLjUtMjEuOSAyLjIgMy4yIDMuOSA2IDUuOSA4LjYgMTIuNiAxNiAyOC43IDI3LjQgNDcuMiAzNS42IDI1IDExLjMgNTEuMSAxMy4zIDc3LjkgOC42IDU0LjktOS43IDkwLjctNDguNiAxMTYtOTguOCAxLTEuOC42LTIuOS0uOS00LjJ6bTE3Mi00Ni40Yy05LjUtMy4xLTIyLjItNC4yLTI4LjctMi45IDkuOSA0IDE0LjEgNi42IDE4LjggMTIgMTIuNiAxNC40IDEwLjQgMzQuNy01LjQgNDUuNi0xMS43IDguMS0yNC45IDEwLjUtMzguOSA5LjEtMS4yLS4xLTIuMy0uNC0zLS42IDIuOC0zLjcgNi03IDguMS0xMC44IDkuNC0xNi44IDUuNC00Mi4xLTguNy01Ni4xLTIuMS0yLjEtNC42LTMuOS03LTUuOS0uMyAxLjMtLjEgMi4xLjEgMi44IDQuMiAxNi42LTguMSAzMi40LTI0LjggMzEuOC03LjYtLjMtMTMuOS0zLjgtMTkuNi04LjUtMTkuNS0xNi4xLTM5LjEtMzIuMS01OC41LTQ4LjMtNS45LTQuOS0xMi41LTguMS0yMC4xLTguNy00LjYtLjQtOS4zLS42LTEzLjktLjktNS45LS40LTguOC0yLjgtMTAuNC04LjQtLjktMy40LTEuNS02LjgtMi4yLTEwLjItMS41LTguMS02LjItMTMtMTQuMy0xNC4yLTQuNC0uNy04LjktMS0xMy4zLTEuNS0xMy0xLjQtMTkuOC03LjQtMjIuNi0yMC4zLTUgMTEtMS42IDIyLjQgNy4zIDI5LjkgNC41IDMuOCA5LjMgNy4zIDEzLjggMTEuMiA0LjYgMy44IDcuNCA4LjcgNy45IDE0LjguNCA0LjcuOCA5LjUgMS44IDE0LjEgMi4yIDEwLjYgOC45IDE4LjQgMTcgMjUuMSAxNi41IDEzLjcgMzMgMjcuMyA0OS41IDQxLjEgMTcuOSAxNSAxMy45IDMyLjggMTMgNTYtLjkgMjIuOSAxMi4yIDQyLjkgMzMuNSA1MS4yIDEgLjQgMiAuNiAzLjYgMS4xLTE1LjctMTguMi0xMC4xLTQ0LjEuNy01Mi4zLjMgMi4yLjQgNC4zLjkgNi40IDkuNCA0NC4xIDQ1LjQgNjQuMiA4NSA1Ni45IDE2LTIuOSAzMC42LTguOSA0Mi45LTE5LjggMi0xLjggMy43LTQuMSA1LjktNi41LTE5LjMgNC42LTM1LjguMS01MC45LTEwLjYuNy0uMyAxLjMtLjMgMS45LS4zIDIxLjMgMS44IDQwLjYtMy40IDU3LTE3LjQgMTkuNS0xNi42IDI2LjYtNDIuOSAxNy40LTY2LTguMy0yMC4xLTIzLjYtMzIuMy00My44LTM4Ljl6TTk5LjQgMTc5LjNjLTUuMy05LjItMTMuMi0xNS42LTIyLjEtMjEuMyAxMy43LS41IDI2LjYuMiAzOS42IDMuNy03LTEyLjItOC41LTI0LjctNS0zOC43IDUuMyAxMS45IDEzLjcgMjAuMSAyMy42IDI2LjggMTkuNyAxMy4yIDM1LjcgMTkuNiA0Ni43IDMwLjIgMy40IDMuMyA2LjMgNy4xIDkuNiAxMC45LS44LTIuMS0xLjQtNC4xLTIuMi02LTUtMTAuNi0xMy0xOC42LTIyLjYtMjUtMS44LTEuMi0yLjgtMi41LTMuNC00LjUtMy4zLTEyLjUtMy0yNS4xLS43LTM3LjYgMS01LjUgMi44LTEwLjkgNC41LTE2LjMuOC0yLjQgMi4zLTQuNiA0LTYuNi42IDYuOSAwIDI1LjUgMTkuNiA0NiAxMC44IDExLjMgMjIuNCAyMS45IDMzLjkgMzIuNyA5IDguNSAxOC4zIDE2LjcgMjUuNSAyNi44IDEuMSAxLjYgMi4yIDMuMyAzLjggNC43LTUtMTMtMTQuMi0yNC4xLTI0LjItMzMuOC05LjYtOS4zLTE5LjQtMTguNC0yOS4yLTI3LjQtMy4zLTMtNC42LTYuNy01LjEtMTAuOS0xLjItMTAuNCAwLTIwLjYgNC4zLTMwLjIuNS0xIDEuMS0yIDEuOS0zLjMuNSA0LjIuNiA3LjkgMS40IDExLjYgNC44IDIzLjEgMjAuNCAzNi4zIDQ5LjMgNjMuNSAxMCA5LjQgMTkuMyAxOS4yIDI1LjYgMzEuNiA0LjggOS4zIDcuMyAxOSA1LjcgMjkuNi0uMS42LjUgMS43IDEuMSAyIDYuMiAyLjYgMTAgNi45IDkuNyAxNC4zIDcuNy0yLjYgMTIuNS04IDE2LjQtMTQuNSA0LjIgMjAuMi05LjEgNTAuMy0yNy4yIDU4LjcuNC00LjUgNS0yMy40LTE2LjUtMjcuNy02LjgtMS4zLTEyLjgtMS4zLTIyLjktMi4xIDQuNy05IDEwLjQtMjAuNi41LTIyLjQtMjQuOS00LjYtNTIuOCAxLjktNTcuOCA0LjYgOC4yLjQgMTYuMyAxIDIzLjUgMy4zLTIgNi41LTQgMTIuNy01LjggMTguOS0xLjkgNi41IDIuMSAxNC42IDkuMyA5LjYgMS4yLS45IDIuMy0xLjkgMy4zLTIuNy0zLjEgMTcuOS0yLjkgMTUuOS0yLjggMTguMy4zIDEwLjIgOS41IDcuOCAxNS43IDcuMy0yLjUgMTEuOC0yOS41IDI3LjMtNDUuNCAyNS44IDctNC43IDEyLjctMTAuMyAxNS45LTE3LjktNi41LjgtMTIuOSAxLjYtMTkuMiAyLjRsLS4zLS45YzQuNy0zLjQgOC03LjggMTAuMi0xMy4xIDguNy0yMS4xLTMuNi0zOC0yNS0zOS45LTkuMS0uOC0xNy44LjgtMjUuOSA1LjUgNi4yLTE1LjYgMTcuMi0yNi42IDMyLjYtMzQuNS0xNS4yLTQuMy04LjktMi43LTI0LjYtNi4zIDE0LjYtOS4zIDMwLjItMTMuMiA0Ni41LTE0LjYtNS4yLTMuMi00OC4xLTMuNi03MC4yIDIwLjkgNy45IDEuNCAxNS41IDIuOCAyMy4yIDQuMi0yMy44IDctNDQgMTkuNy02Mi40IDM1LjYgMS4xLTQuOCAyLjctOS41IDMuMy0xNC4zLjYtNC41LjgtOS4yLjEtMTMuNi0xLjUtOS40LTguOS0xNS4xLTE5LjctMTYuMy03LjktLjktMTUuNi4xLTIzLjMgMS4zLS45LjEtMS43LjMtMi45IDAgMTUuOC0xNC44IDM2LTIxLjcgNTMuMS0zMy41IDYtNC41IDYuOC04LjIgMy0xNC45em0xMjguNCAyNi44YzMuMyAxNiAxMi42IDI1LjUgMjMuOCAyNC4zLTQuNi0xMS4zLTEyLjEtMTkuNS0yMy44LTI0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURhaWx5bW90aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5OC45MywyNjdhNDguNCw0OC40LDAsMCwwLTI0LjM2LTYuMjFxLTE5LjgzLDAtMzMuNDQsMTMuMjd0LTEzLjYxLDMzLjQycTAsMjEuMTYsMTMuMjgsMzQuNnQzMy40MywxMy40NHEyMC41LDAsMzQuMTEtMTMuNzhUMzIyLDMwNy40N0E0Ny4xMyw0Ny4xMywwLDAsMCwzMTUuOSwyODQsNDQuMTMsNDQuMTMsMCwwLDAsMjk4LjkzLDI2N1pNMCwzMlY0ODBINDQ4VjMyWk0zNzQuNzEsNDA1LjI2aC01My4xVjM4MS4zN2gtLjY3cS0xNS43OSwyNi4yLTU1Ljc4LDI2LjItMjcuNTYsMC00OC44OS0xMy4xYTg4LjI5LDg4LjI5LDAsMCwxLTMyLjk0LTM1Ljc3cS0xMS42LTIyLjY4LTExLjU5LTUwLjg5LDAtMjcuNTYsMTEuNzYtNTAuMjJhODkuOSw4OS45LDAsMCwxLDMyLjkzLTM1Ljc4cTIxLjE4LTEzLjA5LDQ3LjcyLTEzLjFhODAuODcsODAuODcsMCwwLDEsMjkuNzQsNS4yMXExMy4yOCw1LjIxLDI1LDE3VjE1M2w1NS43OS0xMi4wOVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGFzaGN1YmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI2LjYgMTA0SDExMC40Yy01MS4xIDAtOTEuMiA0My4zLTkxLjIgOTMuNVY0MjdjMCA1MC41IDQwLjEgODUgOTEuMiA4NWgyMjcuMmM1MS4xIDAgOTEuMi0zNC41IDkxLjItODVWMEwzMjYuNiAxMDR6TTE1My45IDQxNi41Yy0xNy43IDAtMzIuNC0xNS4xLTMyLjQtMzIuOFYyNDAuOGMwLTE3LjcgMTQuNy0zMi41IDMyLjQtMzIuNWgxNDAuN2MxNy43IDAgMzIgMTQuOCAzMiAzMi41djEyMy41bDUxLjEgNTIuM0gxNTMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGVlemVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1MS40NiwyNDQuNzFINTc2VjE3Mkg0NTEuNDZabTAtMTczLjg5djcyLjY3SDU3NlY3MC44MlptMCwyNzUuMDZINTc2VjI3My4ySDQ1MS40NlpNMCw0NDcuMDlIMTI0LjU0VjM3NC40MkgwWm0xNTAuNDcsMEgyNzVWMzc0LjQySDE1MC40N1ptMTUwLjUyLDBINDI1LjUzVjM3NC40MkgzMDFabTE1MC40NywwSDU3NlYzNzQuNDJINDUxLjQ2Wk0zMDEsMzQ1Ljg4SDQyNS41M1YyNzMuMkgzMDFabS0xNTAuNTIsMEgyNzVWMjczLjJIMTUwLjQ3Wm0wLTEwMS4xN0gyNzVWMTcySDE1MC40N1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGVsaWNpb3VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ni41IDY4Yy0uNC0xLjUtLjktMy0xLjQtNC41LS45LTIuNS0yLTQuOC0zLjMtNy4xLTEuNC0yLjQtMy00LjgtNC43LTYuOS0yLjEtMi41LTQuNC00LjgtNi45LTYuOC0xLjEtLjktMi4yLTEuNy0zLjMtMi41LTEuMy0uOS0yLjYtMS43LTQtMi40LTEuOC0xLTMuNi0xLjgtNS41LTIuNS0xLjctLjctMy41LTEuMy01LjQtMS43LTMuOC0xLTcuOS0xLjUtMTItMS41SDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgNC4xLjUgOC4yIDEuNSAxMiAyIDcuNyA1LjggMTQuNiAxMSAyMC4zIDEgMS4xIDIuMSAyLjIgMy4zIDMuMyA1LjcgNS4yIDEyLjYgOSAyMC4zIDExIDMuOCAxIDcuOSAxLjUgMTIgMS41aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMtLjEtNC4xLS42LTguMi0xLjYtMTJ6TTQxNiA0MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDIyNFYyNTZIMzJWODBjMC04LjggNy4yLTE2IDE2LTE2aDE3NnYxOTJoMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZXBsb3lkb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgyLjIgMTM2aDUxLjd2MjM5LjZoLTUxLjd2LTIwLjdjLTE5LjggMjQuOC01Mi44IDI0LjEtNzMuOCAxNC43LTI2LjItMTEuNy00NC4zLTM4LjEtNDQuMy03MS44IDAtMjkuOCAxNC44LTU3LjkgNDMuMy03MC44IDIwLjItOS4xIDUyLjctMTAuNiA3NC44IDEyLjlWMTM2em0tNjQuNyAxNjEuOGMwIDE4LjIgMTMuNiAzMy41IDMzLjIgMzMuNSAxOS44IDAgMzMuMi0xNi40IDMzLjItMzIuOSAwLTE3LjEtMTMuNy0zMy4yLTMzLjItMzMuMi0xOS42IDAtMzMuMiAxNi40LTMzLjIgMzIuNnpNMTg4LjUgMTM2aDUxLjd2MjM5LjZoLTUxLjd2LTIwLjdjLTE5LjggMjQuOC01Mi44IDI0LjEtNzMuOCAxNC43LTI2LjItMTEuNy00NC4zLTM4LjEtNDQuMy03MS44IDAtMjkuOCAxNC44LTU3LjkgNDMuMy03MC44IDIwLjItOS4xIDUyLjctMTAuNiA3NC44IDEyLjlWMTM2em0tNjQuNyAxNjEuOGMwIDE4LjIgMTMuNiAzMy41IDMzLjIgMzMuNSAxOS44IDAgMzMuMi0xNi40IDMzLjItMzIuOSAwLTE3LjEtMTMuNy0zMy4yLTMzLjItMzMuMi0xOS43IDAtMzMuMiAxNi40LTMzLjIgMzIuNnpNNDQ4IDk2YzE3LjUgMCAzMiAxNC40IDMyIDMydjI1NmMwIDE3LjUtMTQuNCAzMi0zMiAzMkg2NGMtMTcuNSAwLTMyLTE0LjQtMzItMzJWMTI4YzAtMTcuNSAxNC40LTMyIDMyLTMyaDM4NG0wLTMySDY0QzI4LjggNjQgMCA5Mi44IDAgMTI4djI1NmMwIDM1LjIgMjguOCA2NCA2NCA2NGgzODRjMzUuMiAwIDY0LTI4LjggNjQtNjRWMTI4YzAtMzUuMi0yOC44LTY0LTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZXNrcHJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwNS45IDUxMmwzMS4xLTM4LjRjMTIuMy0uMiAyNS42LTEuNCAzNi41LTYuNiAzOC45LTE4LjYgMzguNC02MS45IDM4LjMtNjMuOC0uMS01LS44LTQuNC0yOC45LTM3LjRIMzYyYy0uMiA1MC4xLTcuMyA2OC41LTEwLjIgNzUuNy05LjQgMjMuNy00My45IDYyLjgtOTUuMiA2OS40LTguNyAxLjEtMzIuOCAxLjItNTAuNyAxLjF6bTIwMC40LTE2Ny43YzM4LjYgMCA1OC41LTEzLjYgNzMuNy0zMC45bC0xNzUuNS0uMy0xNy40IDMxLjMgMTE5LjItLjF6bS00My42LTIyMy45djE2OC4zaC03My41bC0zMi43IDU1LjVIMjUwYy01Mi4zIDAtNTguMS01Ni41LTU4LjMtNTguOS0xLjItMTMuMi0yMS4zLTExLjYtMjAuMSAxLjggMS40IDE1LjggOC44IDQwIDI2LjQgNTcuMWgtOTFjLTI1LjUgMC0xMTAuOC0yNi44LTEwNy0xMTRWMTYuOUMwIC45IDkuNy4zIDE1IC4xaDgyYy4yIDAgLjMuMS41LjEgNC4zLS40IDUwLjEtMi4xIDUwLjEgNDMuNyAwIDEzLjMgMjAuMiAxMy40IDIwLjIgMCAwLTE4LjItNS41LTMyLjgtMTUuOC00My43aDg0LjJjMTA4LjctLjQgMTI2LjUgNzkuNCAxMjYuNSAxMjAuMnptLTEzMi41IDU2bDY0IDI5LjNjMTMuMy00NS41LTQyLjItNzEuNy02NC0yOS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZXYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIwLjEyIDIwOC4yOWMtMy44OC0yLjktNy43Ny00LjM1LTExLjY1LTQuMzVIOTEuMDN2MTA0LjQ3aDE3LjQ1YzMuODggMCA3Ljc3LTEuNDUgMTEuNjUtNC4zNSAzLjg4LTIuOSA1LjgyLTcuMjUgNS44Mi0xMy4wNnYtNjkuNjVjLS4wMS01LjgtMS45Ni0xMC4xNi01LjgzLTEzLjA2ek00MDQuMSAzMkg0My45QzE5LjcgMzIgLjA2IDUxLjU5IDAgNzUuOHYzNjAuNEMuMDYgNDYwLjQxIDE5LjcgNDgwIDQzLjkgNDgwaDM2MC4yYzI0LjIxIDAgNDMuODQtMTkuNTkgNDMuOS00My44Vjc1LjhjLS4wNi0yNC4yMS0xOS43LTQzLjgtNDMuOS00My44ek0xNTQuMiAyOTEuMTljMCAxOC44MS0xMS42MSA0Ny4zMS00OC4zNiA0Ny4yNWgtNDYuNFYxNzIuOThoNDcuMzhjMzUuNDQgMCA0Ny4zNiAyOC40NiA0Ny4zNyA0Ny4yOGwuMDEgNzAuOTN6bTEwMC42OC04OC42NkgyMDEuNnYzOC40MmgzMi41N3YyOS41N0gyMDEuNnYzOC40MWg1My4yOXYyOS41N2gtNjIuMThjLTExLjE2LjI5LTIwLjQ0LTguNTMtMjAuNzItMTkuNjlWMTkzLjdjLS4yNy0xMS4xNSA4LjU2LTIwLjQxIDE5LjcxLTIwLjY5aDYzLjE5bC0uMDEgMjkuNTJ6bTEwMy42NCAxMTUuMjljLTEzLjIgMzAuNzUtMzYuODUgMjQuNjMtNDcuNDQgMGwtMzguNTMtMTQ0LjhoMzIuNTdsMjkuNzEgMTEzLjcyIDI5LjU3LTExMy43MmgzMi41OGwtMzguNDYgMTQ0Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURldmlhbnRhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDkzLjJsLTk4LjIgMTc5LjEgNy40IDkuNUgzMjB2MTI3LjdIMTU5LjFsLTEzLjUgOS4yLTQzLjcgODRjLS4zIDAtOC42IDguNi05LjIgOS4ySDB2LTkzLjJsOTMuMi0xNzkuNC03LjQtOS4ySDBWMTAyLjVoMTU2bDEzLjUtOS4yIDQzLjctODRjLjMgMCA4LjYtOC42IDkuMi05LjJIMzIwdjkzLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURobCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzggMzAxLjJoNTguN0wzMTkgMjcxaC01OC43TDIzOCAzMDEuMnpNMCAyODIuOXY2LjRoODEuOGw0LjctNi40SDB6TTE3Mi45IDI3MWMtOC43IDAtNi0zLjYtNC42LTUuNSAyLjgtMy44IDcuNi0xMC40IDEwLjQtMTQuMSAyLjgtMy43IDIuOC01LjktMi44LTUuOWgtNTFsLTQxLjEgNTUuOGgxMDAuMWMzMy4xIDAgNTEuNS0yMi41IDU3LjItMzAuM2gtNjguMnptMzE3LjUtNi45bDM5LjMtNTMuNGgtNjIuMmwtMzkuMyA1My40aDYyLjJ6TTk1LjMgMjcxSDB2Ni40aDkwLjZsNC43LTYuNHptMTExLTI2LjZjLTIuOCAzLjgtNy41IDEwLjQtMTAuMyAxNC4yLTEuNCAyLTQuMSA1LjUgNC42IDUuNWg0NS42czcuMy0xMCAxMy41LTE4LjRjOC40LTExLjQuNy0zNS0yOS4yLTM1SDExMi42bC0yMC40IDI3LjhoMTExLjRjNS42IDAgNS41IDIuMiAyLjcgNS45ek0wIDMwMS4yaDczLjFsNC43LTYuNEgwdjYuNHptMzIzIDBoNTguN0w0MDQgMjcxaC01OC43Yy0uMSAwLTIyLjMgMzAuMi0yMi4zIDMwLjJ6bTIyMiAuMWg5NXYtNi40aC05MC4zbC00LjcgNi40em0yMi4zLTMwLjNsLTQuNyA2LjRINjQwVjI3MWgtNzIuN3ptLTEzLjUgMTguM0g2NDB2LTYuNGgtODEuNWwtNC43IDYuNHptLTE2NC4yLTc4LjZsLTIyLjUgMzAuNmgtMjYuMmwyMi41LTMwLjZoLTU4LjdsLTM5LjMgNTMuNEg0MDlsMzkuMy01My40aC01OC43em0zMy41IDYwLjNzLTQuMyA1LjktNi40IDguN2MtNy40IDEwLS45IDIxLjYgMjMuMiAyMS42aDk0LjNsMjIuMy0zMC4zSDQyMy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWFzcG9yYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTEuNjQgMzU0LjU1Yy0xLjQgMC04OCAxMTkuOS04OC43IDExOS45Uzc2LjM0IDQxNCA3NiA0MTMuMjVzODYuNi0xMjUuNyA4Ni42LTEyNy40YzAtMi4yLTEyOS42LTQ0LTEzNy42LTQ3LjEtMS4zLS41IDMxLjQtMTAxLjggMzEuNy0xMDIuMS42LS43IDE0NC40IDQ3IDE0NS41IDQ3IC40IDAgLjktLjYgMS0xLjMuNC0yIDEtMTQ4LjYgMS43LTE0OS42LjgtMS4yIDEwNC41LS43IDEwNS4xLS4zIDEuNSAxIDMuNSAxNTYuMSA2LjEgMTU2LjEgMS40IDAgMTM4LjctNDcgMTM5LjMtNDYuMy44LjkgMzEuOSAxMDIuMiAzMS41IDEwMi42LS45LjktMTQwLjIgNDcuMS0xNDAuNiA0OC44LS4zIDEuNCA4Mi44IDEyMi4xIDgyLjUgMTIyLjlzLTg1LjUgNjMuNS04Ni4zIDYzLjVjLTEtLjItODktMTI1LjUtOTAuOS0xMjUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlnZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MS43IDE3Mi4zSDB2MTc0LjRoMTMyLjdWOTZoLTUxdjc2LjN6bTAgMTMzLjRINTAuOXYtOTIuM2gzMC44djkyLjN6bTI5Ny4yLTEzMy40djE3NC40aDgxLjh2MjguNWgtODEuOFY0MTZINTEyVjE3Mi4zSDM3OC45em04MS44IDEzMy40aC0zMC44di05Mi4zaDMwLjh2OTIuM3ptLTIzNS42IDQxaDgyLjF2MjguNWgtODIuMVY0MTZoMTMzLjNWMTcyLjNIMjI1LjF2MTc0LjR6bTUxLjItMTMzLjNoMzAuOHY5Mi4zaC0zMC44di05Mi4zek0xNTMuMyA5Nmg1MS4zdjUxaC01MS4zVjk2em0wIDc2LjNoNTEuM3YxNzQuNGgtNTEuM1YxNzIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlnaXRhbE9jZWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg3IDQ4MS44aDczLjd2LTczLjZIODd6TTI1LjQgMzQ2LjZ2NjEuNkg4N3YtNjEuNnptNDY2LjItMTY5LjdjLTIzLTc0LjItODIuNC0xMzMuMy0xNTYuNi0xNTYuNkMxNjQuOS0zMi44IDggOTMuNyA4IDI1NS45aDk1LjhjMC0xMDEuOCAxMDEtMTgwLjUgMjA4LjEtMTQxLjcgMzkuNyAxNC4zIDcxLjUgNDYuMSA4NS44IDg1LjcgMzkuMSAxMDctMzkuNyAyMDcuOC0xNDEuNCAyMDh2LjNoLS4zVjUwNGMxNjIuNiAwIDI4OC44LTE1Ni44IDIzNS42LTMyNy4xem0tMjM1LjMgMjMxdi05NS4zaC05NS42djk1LjZIMjU2di0uM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlzY29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjQuNTMxLDY5LjgzNmExLjUsMS41LDAsMCwwLS43NjQtLjdBNDg1LjA2NSw0ODUuMDY1LDAsMCwwLDQwNC4wODEsMzIuMDNhMS44MTYsMS44MTYsMCwwLDAtMS45MjMuOTEsMzM3LjQ2MSwzMzcuNDYxLDAsMCwwLTE0LjksMzAuNiw0NDcuODQ4LDQ0Ny44NDgsMCwwLDAtMTM0LjQyNiwwLDMwOS41NDEsMzA5LjU0MSwwLDAsMC0xNS4xMzUtMzAuNiwxLjg5LDEuODksMCwwLDAtMS45MjQtLjkxQTQ4My42ODksNDgzLjY4OSwwLDAsMCwxMTYuMDg1LDY5LjEzN2ExLjcxMiwxLjcxMiwwLDAsMC0uNzg4LjY3NkMzOS4wNjgsMTgzLjY1MSwxOC4xODYsMjk0LjY5LDI4LjQzLDQwNC4zNTRhMi4wMTYsMi4wMTYsMCwwLDAsLjc2NSwxLjM3NUE0ODcuNjY2LDQ4Ny42NjYsMCwwLDAsMTc2LjAyLDQ3OS45MThhMS45LDEuOSwwLDAsMCwyLjA2My0uNjc2QTM0OC4yLDM0OC4yLDAsMCwwLDIwOC4xMiw0MzAuNGExLjg2LDEuODYsMCwwLDAtMS4wMTktMi41ODgsMzIxLjE3MywzMjEuMTczLDAsMCwxLTQ1Ljg2OC0yMS44NTMsMS44ODUsMS44ODUsMCwwLDEtLjE4NS0zLjEyNmMzLjA4Mi0yLjMwOSw2LjE2Ni00LjcxMSw5LjEwOS03LjEzN2ExLjgxOSwxLjgxOSwwLDAsMSwxLjktLjI1NmM5Ni4yMjksNDMuOTE3LDIwMC40MSw0My45MTcsMjk1LjUsMGExLjgxMiwxLjgxMiwwLDAsMSwxLjkyNC4yMzNjMi45NDQsMi40MjYsNi4wMjcsNC44NTEsOS4xMzIsNy4xNmExLjg4NCwxLjg4NCwwLDAsMS0uMTYyLDMuMTI2LDMwMS40MDcsMzAxLjQwNywwLDAsMS00NS44OSwyMS44MywxLjg3NSwxLjg3NSwwLDAsMC0xLDIuNjExLDM5MS4wNTUsMzkxLjA1NSwwLDAsMCwzMC4wMTQsNDguODE1LDEuODY0LDEuODY0LDAsMCwwLDIuMDYzLjdBNDg2LjA0OCw0ODYuMDQ4LDAsMCwwLDYxMC43LDQwNS43MjlhMS44ODIsMS44ODIsMCwwLDAsLjc2NS0xLjM1MkM2MjMuNzI5LDI3Ny41OTQsNTkwLjkzMywxNjcuNDY1LDUyNC41MzEsNjkuODM2Wk0yMjIuNDkxLDMzNy41OGMtMjguOTcyLDAtNTIuODQ0LTI2LjU4Ny01Mi44NDQtNTkuMjM5UzE5My4wNTYsMjE5LjEsMjIyLjQ5MSwyMTkuMWMyOS42NjUsMCw1My4zMDYsMjYuODIsNTIuODQzLDU5LjIzOUMyNzUuMzM0LDMxMC45OTMsMjUxLjkyNCwzMzcuNTgsMjIyLjQ5MSwzMzcuNThabTE5NS4zOCwwYy0yOC45NzEsMC01Mi44NDMtMjYuNTg3LTUyLjg0My01OS4yMzlTMzg4LjQzNywyMTkuMSw0MTcuODcxLDIxOS4xYzI5LjY2NywwLDUzLjMwNywyNi44Miw1Mi44NDQsNTkuMjM5QzQ3MC43MTUsMzEwLjk5Myw0NDcuNTM4LDMzNy41OCw0MTcuODcxLDMzNy41OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlzY291cnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNS45IDMyQzEwMy4zIDMyIDAgMTMwLjUgMCAyNTIuMSAwIDI1NiAuMSA0ODAgLjEgNDgwbDIyNS44LS4yYzEyMi43IDAgMjIyLjEtMTAyLjMgMjIyLjEtMjIzLjlDNDQ4IDEzNC4zIDM0OC42IDMyIDIyNS45IDMyek0yMjQgMzg0Yy0xOS40IDAtMzcuOS00LjMtNTQuNC0xMi4xTDg4LjUgMzkybDIyLjktNzVjLTkuOC0xOC4xLTE1LjQtMzguOS0xNS40LTYxIDAtNzAuNyA1Ny4zLTEyOCAxMjgtMTI4czEyOCA1Ny4zIDEyOCAxMjgtNTcuMyAxMjgtMTI4IDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9jaHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0MTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5Ny45IDE2MEgyNTZWMTkuNkwzOTcuOSAxNjB6TTMwNCAxOTJ2MTMwYzAgNjYuOC0zNi41IDEwMC4xLTExMy4zIDEwMC4xSDk2Vjg0LjhoOTQuN2MxMiAwIDIzLjEuOCAzMy4xIDIuNXYtODRDMjEyLjkgMS4xIDIwMS40IDAgMTg5LjIgMEgwdjUxMmgxODkuMkMzMjkuNyA1MTIgNDAwIDQ0Ny40IDQwMCAzMTguMVYxOTJoLTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb2NrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ5LjkgMjM2LjNoLTY2LjF2LTU5LjRoNjYuMXY1OS40em0wLTIwNC4zaC02Ni4xdjYwLjdoNjYuMVYzMnptNzguMiAxNDQuOEgzNjJ2NTkuNGg2Ni4xdi01OS40em0tMTU2LjMtNzIuMWgtNjYuMXY2MC4xaDY2LjF2LTYwLjF6bTc4LjEgMGgtNjYuMXY2MC4xaDY2LjF2LTYwLjF6bTI3Ni44IDEwMGMtMTQuNC05LjctNDcuNi0xMy4yLTczLjEtOC40LTMuMy0yNC0xNi43LTQ0LjktNDEuMS02My43bC0xNC05LjMtOS4zIDE0Yy0xOC40IDI3LjgtMjMuNCA3My42LTMuNyAxMDMuOC04LjcgNC43LTI1LjggMTEuMS00OC40IDEwLjdIMi40Yy04LjcgNTAuOCA1LjggMTE2LjggNDQgMTYyLjEgMzcuMSA0My45IDkyLjcgNjYuMiAxNjUuNCA2Ni4yIDE1Ny40IDAgMjczLjktNzIuNSAzMjguNC0yMDQuMiAyMS40LjQgNjcuNi4xIDkxLjMtNDUuMiAxLjUtMi41IDYuNi0xMy4yIDguNS0xNy4xbC0xMy4zLTguOXptLTUxMS4xLTI3LjloLTY2djU5LjRoNjYuMXYtNTkuNHptNzguMSAwaC02Ni4xdjU5LjRoNjYuMXYtNTkuNHptNzguMSAwaC02Ni4xdjU5LjRoNjYuMXYtNTkuNHptLTc4LjEtNzIuMWgtNjYuMXY2MC4xaDY2LjF2LTYwLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyYWZ0MkRpZ2l0YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDM5OC4xbC0xNDQtODIuMnY2NC43aC05MS4zYzMwLjgtMzUgODEuOC05NS45IDExMS44LTE0OS4zIDM1LjItNjIuNiAxNi4xLTEyMy40LTEyLjgtMTUzLjMtNC40LTQuNi02Mi4yLTYyLjktMTY2LTQxLjItNTkuMSAxMi40LTg5LjQgNDMuNC0xMDQuMyA2Ny4zLTEzLjEgMjAuOS0xNyAzOS44LTE4LjIgNDcuNy01LjUgMzMgMTkuNCA2Ny4xIDU2LjcgNjcuMSAzMS43IDAgNTcuMy0yNS43IDU3LjMtNTcuNCAwLTI3LjEtMTkuNy01Mi4xLTQ4LTU2LjggMS44LTcuMyAxNy43LTIxLjEgMjYuMy0yNC43IDQxLjEtMTcuMyA3OCA1LjIgODMuMyAzMy41IDguMyA0NC4zLTM3LjEgOTAuNC02OS43IDEyNy42Qzg0LjUgMzI4LjEgMTguMyAzOTYuOCAwIDQxNS45bDMzNi0uMVY0ODB6TTM2OS45IDM3MWw0Ny4xIDI3LjItNDcuMSAyNy4yek0xMzQuMiAxNjEuNGMwIDEyLjQtMTAgMjIuNC0yMi40IDIyLjRzLTIyLjQtMTAtMjIuNC0yMi40IDEwLTIyLjQgMjIuNC0yMi40IDIyLjQgMTAuMSAyMi40IDIyLjR6TTgyLjUgMzgwLjVjMjUuNi0yNy40IDk3LjctMTA0LjcgMTUwLjgtMTY5LjkgMzUuMS00My4xIDQwLjMtODIuNCAyOC40LTExMi43LTcuNC0xOC44LTE3LjUtMzAuMi0yNC4zLTM1LjcgNDUuMyAyLjEgNjggMjMuNCA4Mi4yIDM4LjMgMCAwIDQyLjQgNDguMiA1LjggMTEzLjMtMzcgNjUuOS0xMTAuOSAxNDcuNS0xMjguNSAxNjYuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJpYmJibGVTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTAuMiAyMjguMmM4LjktNDIuNCAzNy40LTc3LjcgNzUuNy05NS43IDMuNiA0LjkgMjggMzguOCA1MC43IDc5LTY0IDE3LTEyMC4zIDE2LjgtMTI2LjQgMTYuN3pNMzE0LjYgMTU0Yy0zMy42LTI5LjgtNzkuMy00MS4xLTEyMi42LTMwLjYgMy44IDUuMSAyOC42IDM4LjkgNTEgODAgNDguNi0xOC4zIDY5LjEtNDUuOSA3MS42LTQ5LjR6TTE0MC4xIDM2NGM0MC41IDMxLjYgOTMuMyAzNi43IDEzNy4zIDE4LTItMTItMTAtNTMuOC0yOS4yLTEwMy42LTU1LjEgMTguOC05My44IDU2LjQtMTA4LjEgODUuNnptOTguOC0xMDguMmMtMy40LTcuOC03LjItMTUuNS0xMS4xLTIzLjJDMTU5LjYgMjUzIDkzLjQgMjUyLjIgODcuNCAyNTJjMCAxLjQtLjEgMi44LS4xIDQuMiAwIDM1LjEgMTMuMyA2Ny4xIDM1LjEgOTEuNCAyMi4yLTM3LjkgNjcuMS03Ny45IDExNi41LTkxLjh6bTM0LjkgMTYuM2MxNy45IDQ5LjEgMjUuMSA4OS4xIDI2LjUgOTcuNCAzMC43LTIwLjcgNTIuNS01My42IDU4LjYtOTEuNi00LjYtMS41LTQyLjMtMTIuNy04NS4xLTUuOHptLTIwLjMtNDguNGM0LjggOS44IDguMyAxNy44IDEyIDI2LjggNDUuNS01LjcgOTAuNyAzLjQgOTUuMiA0LjQtLjMtMzIuMy0xMS44LTYxLjktMzAuOS04NS4xLTIuOSAzLjktMjUuOCAzMy4yLTc2LjMgNTMuOXpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNjQgMTc2YzAtODguMi03MS44LTE2MC0xNjAtMTYwUzY0IDE2Ny44IDY0IDI1NnM3MS44IDE2MCAxNjAgMTYwIDE2MC03MS44IDE2MC0xNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyaWJiYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4yNTIgOCA4IDExOS4yNTIgOCAyNTZzMTExLjI1MiAyNDggMjQ4IDI0OCAyNDgtMTExLjI1MiAyNDgtMjQ4UzM5Mi43NDggOCAyNTYgOHptMTYzLjk3IDExNC4zNjZjMjkuNTAzIDM2LjA0NiA0Ny4zNjkgODEuOTU3IDQ3LjgzNSAxMzEuOTU1LTYuOTg0LTEuNDc3LTc3LjAxOC0xNS42ODItMTQ3LjUwMi02LjgxOC01Ljc1Mi0xNC4wNDEtMTEuMTgxLTI2LjM5My0xOC42MTctNDEuNjE0IDc4LjMyMS0zMS45NzcgMTEzLjgxOC03Ny40ODIgMTE4LjI4NC04My41MjN6TTM5Ni40MjEgOTcuODdjLTMuODEgNS40MjctMzUuNjk3IDQ4LjI4Ni0xMTEuMDIxIDc2LjUxOS0zNC43MTItNjMuNzc2LTczLjE4NS0xMTYuMTY4LTc5LjA0LTEyNC4wMDggNjcuMTc2LTE2LjE5MyAxMzcuOTY2IDEuMjcgMTkwLjA2MSA0Ny40ODl6bS0yMzAuNDgtMzMuMjVjNS41ODUgNy42NTkgNDMuNDM4IDYwLjExNiA3OC41MzcgMTIyLjUwOS05OS4wODcgMjYuMzEzLTE4Ni4zNiAyNS45MzQtMTk1LjgzNCAyNS44MDlDNjIuMzggMTQ3LjIwNSAxMDYuNjc4IDkyLjU3MyAxNjUuOTQxIDY0LjYyek00NC4xNyAyNTYuMzIzYzAtMi4xNjYuMDQzLTQuMzIyLjEwOC02LjQ3MyA5LjI2OC4xOSAxMTEuOTIgMS41MTMgMjE3LjcwNi0zMC4xNDYgNi4wNjQgMTEuODY4IDExLjg1NyAyMy45MTUgMTcuMTc0IDM1Ljk0OS03Ni41OTkgMjEuNTc1LTE0Ni4xOTQgODMuNTI3LTE4MC41MzEgMTQyLjMwNkM2NC43OTQgMzYwLjQwNSA0NC4xNyAzMTAuNzMgNDQuMTcgMjU2LjMyM3ptODEuODA3IDE2Ny4xMTNjMjIuMTI3LTQ1LjIzMyA4Mi4xNzgtMTAzLjYyMiAxNjcuNTc5LTEzMi43NTYgMjkuNzQgNzcuMjgzIDQyLjAzOSAxNDIuMDUzIDQ1LjE4OSAxNjAuNjM4LTY4LjExMiAyOS4wMTMtMTUwLjAxNSAyMS4wNTMtMjEyLjc2OC0yNy44ODJ6bTI0OC4zOCA4LjQ4OWMtMi4xNzEtMTIuODg2LTEzLjQ0Ni03NC44OTctNDEuMTUyLTE1MS4wMzMgNjYuMzgtMTAuNjI2IDEyNC43IDYuNzY4IDEzMS45NDcgOS4wNTUtOS40NDIgNTguOTQxLTQzLjI3MyAxMDkuODQ0LTkwLjc5NSAxNDEuOTc4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcm9wYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MjggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2NC40IDExNi4zbC0xMzIgODQuMyAxMzIgODQuMy0xMzIgODQuM0wwIDI4NC4xbDEzMi4zLTg0LjNMMCAxMTYuMyAxMzIuMyAzMmwxMzIuMSA4NC4zek0xMzEuNiAzOTUuN2wxMzItODQuMyAxMzIgODQuMy0xMzIgODQuMy0xMzItODQuM3ptMTMyLjgtMTExLjZsMTMyLTg0LjMtMTMyLTgzLjZMMzk1LjcgMzIgNTI4IDExNi4zbC0xMzIuMyA4NC4zTDUyOCAyODQuOGwtMTMyLjMgODQuMy0xMzEuMy04NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJ1cGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxOS41IDExNC43Yy0yMi4yLTE0LTQzLjUtMTkuNS02NC43LTMzLjUtMTMtOC44LTMxLjMtMzAtNDYuNS00OC4zLTIuNyAyOS4zLTExLjUgNDEuMi0yMiA0OS41LTIxLjMgMTctMzQuOCAyMi4yLTUzLjUgMzIuM0MxMTcgMTIzIDMyIDE4MS41IDMyIDI5MC41IDMyIDM5OS43IDEyMy44IDQ4MCAyMjUuOCA0ODAgMzI3LjUgNDgwIDQxNiA0MDYgNDE2IDI5NGMwLTExMi4zLTgzLTE3MS05Ni41LTE3OS4zem0yLjUgMzI1LjZjLTIwLjEgMjAuMS05MC4xIDI4LjctMTE2LjcgNC4yLTQuOC00LjguMy0xMiA2LjUtMTIgMCAwIDE3IDEzLjMgNTEuNSAxMy4zIDI3IDAgNDYtNy43IDU0LjUtMTQgNi4xLTQuNiA4LjQgNC4zIDQuMiA4LjV6bS01NC41LTUyLjZjOC43LTMuNiAyOS0zLjggMzYuOCAxLjMgNC4xIDIuOCAxNi4xIDE4LjggNi4yIDIzLjctOC40IDQuMi0xLjItMTUuNy0yNi41LTE1LjctMTQuNyAwLTE5LjUgNS4yLTI2LjcgMTEtNyA2LTkuOCA4LTEyLjIgNC43LTYtOC4yIDE1LjktMjIuMyAyMi40LTI1ek0zNjAgNDA1Yy0xNS4yLTEtNDUuNS00OC44LTY1LTQ5LjUtMzAuOS0uOS0xMDQuMSA4MC43LTE2MS4zIDQyLTM4LjgtMjYuNi0xNC42LTEwNC44IDUxLjgtMTA1LjIgNDkuNS0uNSA4My44IDQ5IDEwOC41IDQ4LjUgMjEuMy0uMyA2MS44LTQxLjggODEuOC00MS44IDQ4LjcgMCAyMy4zIDEwOS4zLTE1LjggMTA2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEeWFsb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnYxMTkuMmg2NFY5NmgxMDcuMkMyODQuNiA5NiAzNTIgMTc2LjIgMzUyIDI1NS45IDM1MiAzMzIgMjkzLjQgNDE2IDE3MS4yIDQxNkgwdjY0aDE3MS4yQzMzMS45IDQ4MCA0MTYgMzY3LjMgNDE2IDI1NS45YzAtNTguNy0yMi4xLTExMy40LTYyLjMtMTU0LjNDMzA4LjkgNTYgMjQ1LjcgMzIgMTcxLjIgMzJIMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWFybHliaXJkcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuMiA0Ny41YzEuMi0xMyAyMS4zLTE0IDM2LjYtOC43LjkuMyAyNi4yIDkuNyAxOSAxNS4yLTI3LjktNy40LTU2LjQgMTguMi01NS42LTYuNXptLTIwMSA2LjljMzAuNy04LjEgNjIgMjAgNjEuMS03LjEtMS4zLTE0LjItMjMuNC0xNS4zLTQwLjItOS42LTEgLjMtMjguNyAxMC41LTIwLjkgMTYuN3pNMzE5LjQgMTYwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2IDE2LTcuMiAxNi0xNi03LjItMTYtMTYtMTZ6bS0xNTkuNyAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2IDE2LTcuMiAxNi0xNi03LjItMTYtMTYtMTZ6bTMxOC41IDE2My4yYy05LjkgMjQtNDAuNyAxMS02My45LTEuMi0xMy41IDY5LjEtNTguMSAxMTEuNC0xMjYuMyAxMjQuMi4zLjktMi0uMSAyNCAxIDMzLjYgMS40IDYzLjgtMy4xIDk3LjQtOC0xOS44LTEzLjgtMTEuNC0zNy4xLTkuOC0zOC4xIDEuNC0uOSAxNC43IDEuNyAyMS42IDExLjUgOC42LTEyLjUgMjguNC0xNC44IDMwLjItMTMuNiAxLjYgMS4xIDYuNiAyMC45LTYuOSAzNC42IDQuNy0uOSA4LjItMS42IDkuOC0yLjEgMi42LS44IDE3LjcgMTEuMyAzLjEgMTMuMy0xNC4zIDIuMy0yMi42IDUuMS00Ny4xIDEwLjgtNDUuOSAxMC43LTg1LjkgMTEuOC0xMTcuNyAxMi44bDEgMTEuNmMzLjggMTguMS0yMy40IDI0LjMtMjcuNiA2LjIuOCAxNy45LTI3LjEgMjEuOC0yOC40LTFsLS41IDUuM2MtLjcgMTguNC0yOC40IDE3LjktMjguMy0uNi03LjUgMTMuNS0yOC4xIDYuOC0yNi40LTguNWwxLjItMTIuNGMtMzYuNy45LTU5LjcgMy4xLTYxLjggMy4xLTIwLjkgMC0yMC45LTMxLjYgMC0zMS42IDIuNCAwIDI3LjcgMS4zIDYzLjIgMi44LTYxLjEtMTUuNS0xMDMuNy01NS0xMTQuOS0xMTguMi0yNSAxMi44LTU3LjUgMjYuOC02OC4yLjgtMTAuNS0yNS40IDIxLjUtNDIuNiA2Ni44LTczLjQuNy02LjYgMS42LTEzLjMgMi43LTE5LjgtMTQuNC0xOS42LTExLjYtMzYuMy0xNi4xLTYwLjQtMTYuOCAyLjQtMjMuMi05LjEtMjMuNi0yMy4xLjMtNy4zIDIuMS0xNC45IDIuNC0xNS40IDEuMS0xLjggMTAuMS0yIDEyLjctMi42IDYtMzEuNyA1MC42LTMzLjIgOTAuOS0zNC41IDE5LjctMjEuOCA0NS4yLTQxLjUgODAuOS00OC4zQzIwMy4zIDI5IDIxNS4yIDguNSAyMTYuMiA4YzEuNy0uOCAyMS4yIDQuMyAyNi4zIDIzLjIgNS4yLTguOCAxOC4zLTExLjQgMTkuNi0xMC43IDEuMS42IDYuNCAxNS00LjkgMjUuOSA0MC4zIDMuNSA3Mi4yIDI0LjcgOTYgNTAuNyAzNi4xIDEuNSA3MS44IDUuOSA3Ny4xIDM0IDIuNy42IDExLjYuOCAxMi43IDIuNi4zLjUgMi4xIDguMSAyLjQgMTUuNC0uNSAxMy45LTYuOCAyNS40LTIzLjYgMjMuMS0zLjIgMTcuMy0yLjcgMzIuOS04LjcgNDcuNyAyLjQgMTEuNyA0IDIzLjggNC44IDM2LjQgMzcgMjUuNCA3MC4zIDQyLjUgNjAuMyA2Ni45ek0yMDcuNCAxNTkuOWMuOS00NC0zNy45LTQyLjItNzguNi00MC4zLTIxLjcgMS0zOC45IDEuOS00NS41IDEzLjktMTEuNCAyMC45IDUuOSA5Mi45IDIzLjIgMTAxLjIgOS44IDQuNyA3My40IDcuOSA4Ni4zLTcuMSA4LjItOS40IDE1LTQ5LjQgMTQuNi02Ny43em01MiA1OC4zYy00LjMtMTIuNC02LTMwLjEtMTUuMy0zMi43LTItLjUtOS0uNS0xMSAwLTEwIDIuOC0xMC44IDIyLjEtMTcgMzcuMiAxNS40IDAgMTkuMyA5LjcgMjMuNyA5LjcgNC4zIDAgNi4zLTExLjMgMTkuNi0xNC4yem0xMzUuNy04NC43Yy02LjYtMTIuMS0yNC44LTEyLjktNDYuNS0xMy45LTQwLjItMS45LTc4LjItMy44LTc3LjMgNDAuMy0uNSAxOC4zIDUgNTguMyAxMy4yIDY3LjggMTMgMTQuOSA3Ni42IDExLjggODYuMyA3LjEgMTUuOC03LjYgMzYuNS03OC45IDI0LjMtMTAxLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUViYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjA2IDE4OS41bC01NC44IDEwOS45LTU0LjktMTA5LjloLTM3LjVsMTAuOSAyMC42Yy0xMS41LTE5LTM1LjktMjYtNjMuMy0yNi0zMS44IDAtNjcuOSA4LjctNzEuNSA0My4xaDMzLjdjMS40LTEzLjggMTUuNy0yMS44IDM1LTIxLjggMjYgMCA0MSA5LjYgNDEgMzN2My40Yy0xMi43IDAtMjggLjEtNDEuNy40LTQyLjQuOS02OS42IDEwLTc2LjcgMzQuNCAxLTUuMiAxLjUtMTAuNiAxLjUtMTYuMiAwLTUyLjEtMzkuNy03Ni4yLTc1LjQtNzYuMi0yMS4zIDAtNDMgNS41LTU4LjcgMjQuMnYtODAuNmgtMzIuMXYxNjkuNWMwIDEwLjMtLjYgMjIuOS0xLjEgMzMuMWgzMS41Yy43LTYuMyAxLjEtMTIuOSAxLjEtMTkuNSAxMy42IDE2LjYgMzUuNCAyNC45IDU4LjcgMjQuOSAzNi45IDAgNjQuOS0yMS45IDczLjMtNTQuMi0uNSAyLjgtLjcgNS44LS43IDkgMCAyNC4xIDIxLjEgNDUgNjAuNiA0NSAyNi42IDAgNDUuOC01LjcgNjEuOS0yNS41IDAgNi42LjMgMTMuMyAxLjEgMjAuMmgyOS44Yy0uNy04LjItMS0xNy41LTEtMjYuOHYtNjUuNmMwLTkuMy0xLjctMTcuMi00LjgtMjMuOGw2MS41IDExNi4xLTI4LjUgNTQuMWgzNS45TDY0MCAxODkuNXpNMjQzLjcgMzEzLjhjLTI5LjYgMC01MC4yLTIxLjUtNTAuMi01My44IDAtMzIuNCAyMC42LTUzLjggNTAuMi01My44IDI5LjggMCA1MC4yIDIxLjQgNTAuMiA1My44IDAgMzIuMy0yMC40IDUzLjgtNTAuMiA1My44em0yMDAuOS00Ny4zYzAgMzAtMTcuOSA0OC40LTUxLjYgNDguNC0yNS4xIDAtMzUtMTMuNC0zNS0yNS44IDAtMTkuMSAxOC4xLTI0LjQgNDcuMi0yNS4zIDEzLjEtLjUgMjcuNi0uNiAzOS40LS42em0tNDExLjkgMS42aDEyOC44di04LjVjMC01MS43LTMzLjEtNzUuNC03OC40LTc1LjQtNTYuOCAwLTgzIDMwLjgtODMgNzcuNiAwIDQyLjUgMjUuMyA3NCA4Mi41IDc0IDMxLjQgMCA2OC0xMS43IDc0LjQtNDYuMWgtMzMuMWMtMTIgMzUuOC04Ny43IDM2LjctOTEuMi0yMS42em05NS0yMS40SDMzLjNjNi45LTU2LjYgOTIuMS01NC43IDk0LjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWRnZUxlZ2FjeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNS43MSwyMjguMTZsLjM1LS40OGMwLC4xNiwwLC4zMi0uMDcuNDhabTQ2MC41OCwxNS41MWMwLTQ0LTcuNzYtODQuNDYtMjguODEtMTIyLjRDNDE2LjUsNDcuODgsMzQzLjkxLDgsMjU4Ljg5LDgsMTE5LDcuNzIsNDAuNjIsMTEzLjIxLDI2LjA2LDIyNy42OGM0Mi40Mi02MS4zMSwxMTcuMDctMTIxLjM4LDIyMC4zNy0xMjUsMCwwLDEwOS42NywwLDk5LjQyLDEwNUgxNzBjNi4zNy0zNy4zOSwxOC41NS01OSwzNC4zNC03OC45My03NS4wNSwzNC45LTEyMS44NSw5Ni4xLTEyMC43NSwxODguMzIuODMsNzEuNDUsNTAuMTMsMTQ0Ljg0LDEyMC43NSwxNzIsODMuMzUsMzEuODQsMTkyLjc3LDcuMiwyNDAuMTMtMjEuMzNWMzYzLjMxQzM2My42LDQxOS44LDE3My42LDQyNC4yMywxNzIuMjEsMjk1Ljc0SDQ4Ni4yOVYyNDMuNjdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVkZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgxLjkyLDEzNC40OEM0NDAuODcsNTQuMTgsMzUyLjI2LDgsMjU1LjkxLDgsMTM3LjA1LDgsMzcuNTEsOTEuNjgsMTMuNDcsMjAzLjY2YzI2LTQ2LjQ5LDg2LjIyLTc5LjE0LDE0OS40Ni03OS4xNCw3OS4yNywwLDEyMS4wOSw0OC45MywxMjIuMjUsNTAuMTgsMjIsMjMuOCwzMyw1MC4zOSwzMyw4My4xLDAsMTAuNC01LjMxLDI1LjgyLTE1LjExLDM4LjU3LTEuNTcsMi02LjM5LDQuODQtNi4zOSwxMSwwLDUuMDYsMy4yOSw5LjkyLDkuMTQsMTQsMjcuODYsMTkuMzcsODAuMzcsMTYuODEsODAuNTEsMTYuODFBMTE1LjM5LDExNS4zOSwwLDAsMCw0NDQuOTQsMzIyYTExOC45MiwxMTguOTIsMCwwLDAsNTguOTUtMTAyLjQ0QzUwNC4zOSwxNzYuMTMsNDg4LjM5LDE0Ny4yNiw0ODEuOTIsMTM0LjQ4Wk0yMTIuNzcsNDc1LjY3YTE1NC44OCwxNTQuODgsMCwwLDEtNDYuNjQtNDVjLTMyLjk0LTQ3LjQyLTM0LjI0LTk1LjYtMjAuMS0xMzZBMTU1LjUsMTU1LjUsMCwwLDEsMjAzLDIxNS43NWM1OS00NS4yLDk0Ljg0LTUuNjUsOTkuMDYtMWE4MCw4MCwwLDAsMC00Ljg5LTEwLjE0Yy05LjI0LTE1LjkzLTI0LTM2LjQxLTU2LjU2LTUzLjUxLTMzLjcyLTE3LjY5LTcwLjU5LTE4LjU5LTc3LjY0LTE4LjU5LTM4LjcxLDAtNzcuOSwxMy0xMDcuNTMsMzUuNjlDMzUuNjgsMTgzLjMsMTIuNzcsMjA4LjcyLDguNiwyNDNjLTEuMDgsMTIuMzEtMi43NSw2Mi44LDIzLDExOC4yN2EyNDgsMjQ4LDAsMCwwLDI0OC4zLDE0MS42MUMyNDEuNzgsNDk2LjI2LDIxNC4wNSw0NzYuMjQsMjEyLjc3LDQ3NS42N1ptMjUwLjcyLTk4LjMzYTcuNzYsNy43NiwwLDAsMC03LjkyLS4yMywxODEuNjYsMTgxLjY2LDAsMCwxLTIwLjQxLDkuMTIsMTk3LjU0LDE5Ny41NCwwLDAsMS02OS41NSwxMi41MmMtOTEuNjcsMC0xNzEuNTItNjMuMDYtMTcxLjUyLTE0NEE2MS4xMiw2MS4xMiwwLDAsMSwyMDAuNjEsMjI4LDE2OC43MiwxNjguNzIsMCwwLDAsMTYxLjg1LDI3OGMtMTQuOTIsMjkuMzctMzMsODguMTMsMTMuMzMsMTUxLjY2LDYuNTEsOC45MSwyMywzMCw1Niw0Ny42NywyMy41NywxMi42NSw0OSwxOS42MSw3MS43LDE5LjYxLDM1LjE0LDAsMTE1LjQzLTMzLjQ0LDE2My0xMDguODdBNy43NSw3Ljc1LDAsMCwwLDQ2My40OSwzNzcuMzRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVsZW1lbnRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjUuNiAzMkgyMi40QzEwIDMyIDAgNDIgMCA1NC40djQwMy4yQzAgNDcwIDEwIDQ4MCAyMi40IDQ4MGg0MDMuMmMxMi40IDAgMjIuNC0xMCAyMi40LTIyLjRWNTQuNEM0NDggNDIgNDM4IDMyIDQyNS42IDMyTTE2NC4zIDM1NS41aC0zOS44di0xOTloMzkuOHYxOTl6bTE1OS4zIDBIMjA0LjF2LTM5LjhoMTE5LjV2MzkuOHptMC03OS42SDIwNC4xdi0zOS44aDExOS41djM5Ljh6bTAtNzkuN0gyMDQuMXYtMzkuOGgxMTkuNXYzOS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbGxvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTE0My44NCAyODUuMkMzNzUuMzEgMzU4LjUxIDMxNS43OSA0MDQuOCAyNDggNDA0LjhzLTEyNy4zMS00Ni4yOS0xNDMuODQtMTExLjZjLTEuNjUtNy40NCAyLjQ4LTE1LjcxIDkuOTItMTcuMzYgNy40NC0xLjY1IDE1LjcxIDIuNDggMTcuMzYgOS45MiAxNC4wNSA1Mi45MSA2MiA5MC4xMSAxMTYuNTYgOTAuMTFzMTAyLjUxLTM3LjIgMTE2LjU2LTkwLjExYzEuNjUtNy40NCA5LjkyLTEyLjQgMTcuMzYtOS45MiA3LjQ0IDEuNjUgMTIuNCA5LjkyIDkuOTIgMTcuMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVtYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzOS45IDI1NC42Yy0xLjEtMTAuNy0xMC43LTYuOC0xMC43LTYuOHMtMTUuNiAxMi4xLTI5LjMgMTAuN2MtMTMuNy0xLjMtOS40LTMyLTkuNC0zMnMzLTI4LjEtNS4xLTMwLjRjLTguMS0yLjQtMTggNy4zLTE4IDcuM3MtMTIuNCAxMy43LTE4LjMgMzEuMmwtMS42LjVzMS45LTMwLjYtLjMtMzcuNmMtMS42LTMuNS0xNi40LTMuMi0xOC44IDNzLTE0LjIgNDkuMi0xNSA2Ny4yYzAgMC0yMy4xIDE5LjYtNDMuMyAyMi44cy0yNS05LjQtMjUtOS40IDU0LjgtMTUuMyA1Mi45LTU5LjEtNDQuMi0yNy42LTQ5LTI0Yy00LjYgMy41LTI5LjQgMTguNC0zNi42IDU5LjctLjIgMS40LS43IDcuNS0uNyA3LjVzLTIxLjIgMTQuMi0zMyAxOGMwIDAgMzMtNTUuNi03LjMtODAuOS0xMS40LTYuOC0yMS4zLS41LTI3LjIgNS4zIDEzLjYtMTcuMyA0Ni40LTY0LjIgMzYuOS0xMDUuMi01LjgtMjQuNC0xOC0yNy4xLTI5LjItMjMuMS0xNyA2LjctMjMuNSAxNi43LTIzLjUgMTYuN3MtMjIgMzItMjcuMSA3OS41LTEyLjYgMTA1LjEtMTIuNiAxMDUuMS0xMC41IDEwLjItMjAuMiAxMC43LTUuNC0yOC43LTUuNC0yOC43IDcuNS00NC42IDctNTIuMS0xLjEtMTEuNi05LjktMTQuMmMtOC45LTIuNy0xOC41IDguNi0xOC41IDguNnMtMjUuNSAzOC43LTI3LjcgNDQuNmwtMS4zIDIuNC0xLjMtMS42czE4LTUyLjcuOC01My41LTI4LjUgMTguOC0yOC41IDE4LjgtMTkuNiAzMi44LTIwLjQgMzYuNWwtMS4zLTEuNnM4LjEtMzguMiA2LjQtNDcuNmMtMS42LTkuNC0xMC41LTcuNS0xMC41LTcuNXMtMTEuMy0xLjMtMTQuMiA1LjktMTMuNyA1NS4zLTE1IDcwLjdjMCAwLTI4LjIgMjAuMi00Ni44IDIwLjQtMTguNS4zLTE2LjctMTEuOC0xNi43LTExLjhzNjgtMjMuMyA0OS40LTY5LjJjLTguMy0xMS44LTE4LTE1LjUtMzEuNy0xNS4zLTEzLjcuMy0zMC4zIDguNi00MS4zIDMzLjMtNS4zIDExLjgtNi44IDIzLTcuOCAzMS41IDAgMC0xMi4zIDIuNC0xOC44LTIuOXMtMTAgMC0xMCAwLTExLjIgMTQtLjEgMTguMyAyOC4xIDYuMSAyOC4xIDYuMWMxLjYgNy41IDYuMiAxOS41IDE5LjYgMjkuNyAyMC4yIDE1LjMgNTguOC0xLjMgNTguOC0xLjNsMTUuOS04LjhzLjUgMTQuNiAxMi4xIDE2LjcgMTYuNCAxIDM2LjUtNDcuOWMxMS44LTI1IDEyLjYtMjMuNiAxMi42LTIzLjZsMS4zLS4zcy05LjEgNDYuOC01LjYgNTkuN0MxODcuNyAzMTkuNCAyMDMgMzE4IDIwMyAzMThzOC4zIDIuNCAxNS0yMS4yIDE5LjYtNDkuOSAxOS42LTQ5LjloMS42cy01LjYgNDguMSAzIDYzLjcgMzAuOSA1LjMgMzAuOSA1LjMgMTUuNi03LjggMTgtMTAuMmMwIDAgMTguNSAxNS44IDQ0LjYgMTIuOSA1OC4zLTExLjUgNzkuMS0yNS45IDc5LjEtMjUuOXMxMCAyNC40IDQxLjEgMjYuN2MzNS41IDIuNyA1NC44LTE4LjYgNTQuOC0xOC42cy0uMyAxMy41IDEyLjEgMTguNiAyMC43LTIyLjggMjAuNy0yMi44bDIwLjctNTcuMmgxLjlzMS4xIDM3LjMgMjEuNSA0My4yIDQ3LTEzLjcgNDctMTMuNyA2LjQtMy41IDUuMy0xNC4zem0tNTc4IDUuM2MuOC0zMiAyMS44LTQ1LjkgMjktMzkgNy4zIDcgNC42IDIyLTkuMSAzMS40LTEzLjcgOS41LTE5LjkgNy42LTE5LjkgNy42em0yNzIuOC0xMjMuOHMxOS4xLTQ5LjcgMjMuNi0yNS41LTQwIDk2LjItNDAgOTYuMmMuNS0xNi4yIDE2LjQtNzAuNyAxNi40LTcwLjd6bTIyLjggMTM4LjRjLTEyLjYgMzMtNDMuMyAxOS42LTQzLjMgMTkuNnMtMy41LTExLjggNi40LTQ0LjkgMzMuMy0yMC4yIDMzLjMtMjAuMiAxNi4yIDEyLjQgMy42IDQ1LjV6bTg0LjYtMTQuNnMtMy0xMC41IDguMS0zMC42YzExLTIwLjIgMTkuNi05LjEgMTkuNi05LjFzOS40IDEwLjItMS4zIDI1LjUtMjYuNCAxNC4yLTI2LjQgMTQuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW1waXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4Ny42IDU0LjJjLTEwLjgtMi4yLTIyLjEtMy4zLTMzLjUtMy42VjMyLjRjNzguMSAyLjIgMTQ2LjEgNDQgMTg0LjYgMTA2LjZsLTE1LjggOS4xYy02LjEtOS43LTEyLjctMTguOC0yMC4yLTI3LjFsLTE4IDE1LjVjLTI2LTI5LjYtNjEuNC01MC43LTEwMS45LTU4LjRsNC44LTIzLjl6TTUzLjQgMzIyLjRsMjMtNy43Yy02LjQtMTguMy0xMC0zOC4yLTEwLTU4LjdzMy4zLTQwLjQgOS43LTU4LjdsLTIyLjctNy43YzMuNi0xMC44IDguMy0yMS4zIDEzLjYtMzFsLTE1LjgtOS4xQzM0IDE4MSAyNC4xIDIxNy41IDI0LjEgMjU2czEwIDc1IDI3LjEgMTA2LjZsMTUuOC05LjFjLTUuMy0xMC05LjctMjAuMy0xMy42LTMxLjF6TTIxMy4xIDQzNGMtNDAuNC04LTc1LjgtMjkuMS0xMDEuOS01OC43bC0xOCAxNS44Yy03LjUtOC42LTE0LjQtMTcuNy0yMC4yLTI3LjRsLTE2IDkuNGMzOC41IDYyLjMgMTA2LjggMTA0LjMgMTg0LjkgMTA2LjZ2LTE4LjNjLTExLjMtLjMtMjIuNy0xLjctMzMuNS0zLjZsNC43LTIzLjh6TTkzLjMgMTIwLjlsMTggMTUuNWMyNi0yOS42IDYxLjQtNTAuNyAxMDEuOS01OC40bC00LjctMjMuOGMxMC44LTIuMiAyMi4xLTMuMyAzMy41LTMuNlYzMi40QzE2My45IDM0LjYgOTUuOSA3Ni40IDU3LjQgMTM5bDE1LjggOS4xYzYtOS43IDEyLjYtMTguOSAyMC4xLTI3LjJ6bTMwOS40IDI3MC4ybC0xOC0xNS44Yy0yNiAyOS42LTYxLjQgNTAuNy0xMDEuOSA1OC43bDQuNyAyMy44Yy0xMC44IDEuOS0yMi4xIDMuMy0zMy41IDMuNnYxOC4zYzc4LjEtMi4yIDE0Ni40LTQ0LjMgMTg0LjktMTA2LjZsLTE2LjEtOS40Yy01LjcgOS43LTEyLjYgMTguOC0yMC4xIDI3LjR6TTQ5NiAyNTZjMCAxMzctMTExIDI0OC0yNDggMjQ4UzAgMzkzIDAgMjU2IDExMSA4IDI0OCA4czI0OCAxMTEgMjQ4IDI0OHptLTEyLjIgMGMwLTEzMC4xLTEwNS43LTIzNS44LTIzNS44LTIzNS44UzEyLjIgMTI1LjkgMTIuMiAyNTYgMTE3LjkgNDkxLjggMjQ4IDQ5MS44IDQ4My44IDM4Ni4xIDQ4My44IDI1NnptLTM5LTEwNi42bC0xNS44IDkuMWM1LjMgOS43IDEwIDIwLjIgMTMuNiAzMWwtMjIuNyA3LjdjNi40IDE4LjMgOS43IDM4LjIgOS43IDU4LjdzLTMuNiA0MC40LTEwIDU4LjdsMjMgNy43Yy0zLjkgMTAuOC04LjMgMjEtMTMuNiAzMWwxNS44IDkuMUM0NjIgMzMxIDQ3MS45IDI5NC41IDQ3MS45IDI1NnMtOS45LTc1LTI3LjEtMTA2LjZ6bS0xODMgMTc3LjdjMTYuMy0zLjMgMzAuNC0xMS42IDQwLjctMjMuNWw1MS4yIDQ0LjhjMTEuOS0xMy42IDIxLjMtMjkuMyAyNy4xLTQ2LjhsLTY0LjItMjIuMWMyLjUtNy41IDMuOS0xNS4yIDMuOS0yMy41cy0xLjQtMTYuMS0zLjktMjMuNWw2NC41LTIyLjFjLTYuMS0xNy40LTE1LjUtMzMuMi0yNy40LTQ2LjhsLTUxLjIgNDQuOGMtMTAuMi0xMS45LTI0LjQtMjAuNS00MC43LTIzLjhsMTMuMy02Ni40Yy04LjYtMS45LTE3LjctMi44LTI3LjEtMi44LTkuNCAwLTE4LjUuOC0yNy4xIDIuOGwxMy4zIDY2LjRjLTE2LjMgMy4zLTMwLjQgMTEuOS00MC43IDIzLjhsLTUxLjItNDQuOGMtMTEuOSAxMy42LTIxLjMgMjkuMy0yNy40IDQ2LjhsNjQuNSAyMi4xYy0yLjUgNy41LTMuOSAxNS4yLTMuOSAyMy41czEuNCAxNi4xIDMuOSAyMy41bC02NC4yIDIyLjFjNS44IDE3LjQgMTUuMiAzMy4yIDI3LjEgNDYuOGw1MS4yLTQ0LjhjMTAuMiAxMS45IDI0LjQgMjAuMiA0MC43IDIzLjVsLTEzLjMgNjYuN2M4LjYgMS43IDE3LjcgMi44IDI3LjEgMi44IDkuNCAwIDE4LjUtMS4xIDI3LjEtMi44bC0xMy4zLTY2Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVudmlyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyYzQ3Ny42IDAgMzY2LjYgMzE3LjMgMzY3LjEgMzY2LjNMNDQ4IDQ4MGgtMjZsLTcwLjQtNzEuMmMtMzkgNC4yLTEyNC40IDM0LjUtMjE0LjQtMzdDNDcgMzAwLjMgNTIgMjE0LjcgMCAzMnptNzkuNyA0NmMtNDkuNy0yMy41LTUuMiA5LjItNS4yIDkuMiA0NS4yIDMxLjIgNjYgNzMuNyA5MC4yIDExOS45IDMxLjUgNjAuMiA3OSAxMzkuNyAxNDQuMiAxNjcuNyA2NSAyOCAzNC4yIDEyLjUgNi04LjUtMjguMi0yMS4yLTY4LjItODctOTEtMTMwLjItMzEuNy02MC02MS0xMTguNi0xNDQuMi0xNTguMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXJsYW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg3LjIgNTMuNUgwdjQwNWgxMDAuNGMtNDkuNy01Mi42LTc4LjgtMTI1LjMtNzguNy0yMTIuMS0uMS03Ni43IDI0LTE0Mi43IDY1LjUtMTkyLjl6bTIzOC4yIDkuN2MtNDUuOS4xLTg1LjEgMzMuNS04OS4yIDgzLjJoMTY5LjljLTEuMS00OS43LTM0LjUtODMuMS04MC43LTgzLjJ6bTIzMC43LTkuNmguM2wtLjEtLjF6bS4zIDBjMzEuNCA0Mi43IDQ4LjcgOTcuNSA0Ni4yIDE2Mi43LjUgNiAuNSAxMS43IDAgMjQuMUgyMzAuMmMtLjIgMTA5LjcgMzguOSAxOTQuOSAxMzguNiAxOTUuMyA2OC41LS4zIDExOC01MSAxNTEuOS0xMDYuMWw5Ni40IDQ4LjJjLTE3LjQgMzAuOS0zNi41IDU3LjgtNTcuOSA4MC44SDY0MHYtNDA1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFdGhlcmV1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTEuOSAyNjAuOEwxNjAgMzUzLjYgOCAyNjAuOCAxNjAgMGwxNTEuOSAyNjAuOHpNMTYwIDM4My40TDggMjkwLjYgMTYwIDUxMmwxNTItMjIxLjQtMTUyIDkyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV0c3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDM0OGMtMS43NSAxMC43NS0xMy43NSAxMTAtMTUuNSAxMzItMTE3Ljg3OS00LjI5OS0yMTkuODk1LTQuNzQzLTM2OC41IDB2LTI1LjVjNDUuNDU3LTguOTQ4IDYwLjYyNy04LjAxOSA2MS0zNS4yNSAxLjc5My03Mi4zMjIgMy41MjQtMjQ0LjE0MyAwLTMyMi0xLjAyOS0yOC40Ni0xMi4xMy0yNi43NjUtNjEtMzZ2LTI1LjVjNzMuODg2IDIuMzU4IDI1NS45MzMgOC41NTEgMzYyLjk5OS0zLjc1LTMuNSAzOC4yNS03Ljc1IDEyNi41LTcuNzUgMTI2LjVIMzMyQzMyMC45NDcgMTE1LjY2NSAzMTMuMjQxIDY4IDI3Ny4yNSA2OGgtMTM3Yy0xMC4yNSAwLTEwLjc1IDMuNS0xMC43NSA5Ljc1VjI0MS41YzU4IC41IDg4LjUtMi41IDg4LjUtMi41IDI5Ljc3LS45NTEgMjcuNTYtOC41MDIgNDAuNzUtNjUuMjUxaDI1Ljc1Yy00LjQwNyAxMDEuMzUxLTMuOTEgNjEuODI5LTEuNzUgMTYwLjI1SDI1N2MtOS4xNTUtNDAuMDg2LTkuMDY1LTYxLjA0NS0zOS41MDEtNjEuNSAwIDAtMjEuNS0yLTg4LTJ2MTM5YzAgMjYgMTQuMjUgMzguMjUgNDQuMjUgMzguMjVIMjYzYzYzLjYzNiAwIDY2LjU2NC0yNC45OTYgOTguNzUxLTk5Ljc1SDM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXZlcm5vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIwLjgyIDEzMi4yMWMxLjYgMjIuMzEtMTcuNTUgMjEuNTktMjEuNjEgMjEuNTktNjguOTMgMC03My42NC0xLTgzLjU4IDMuMzQtLjU2LjIyLS43NCAwLS4zNy0uMzdMMTIzLjc5IDQ2LjQ1Yy4zOC0uMzcuNi0uMjIuMzguMzctNC4zNSA5Ljk5LTMuMzUgMTUuMDktMy4zNSA4NS4zOXptNzkgMzA4Yy0xNC42OC0zNy4wOCAxMy03Ni45MyA1Mi41Mi03Ni42MiAxNy40OSAwIDIyLjYgMjMuMjEgNy45NSAzMS40Mi02LjE5IDMuMy0yNC45NSAxLjc0LTI1LjE0IDE5LjItLjA1IDE3LjA5IDE5LjY3IDI1IDMxLjIgMjQuODlBNDUuNjQgNDUuNjQgMCAwIDAgMzEyIDM5My40NXYtLjA4YzAtMTEuNjMtNy43OS00Ny4yMi00Ny41NC01NS4zNC03LjcyLTEuNTQtNjUtNi4zNS02OC4zNS01MC41Mi0zLjc0IDE2LjkzLTE3LjQgNjMuNDktNDMuMTEgNjkuMDktOC43NCAxLjk0LTY5LjY4IDcuNjQtMTEyLjkyLTM2Ljc3IDAgMC0xOC41Ny0xNS4yMy0yOC4yMy01Ny45NS0zLjM4LTE1Ljc1LTkuMjgtMzkuNy0xMS4xNC02MiAwLTE4IDExLjE0LTMwLjQ1IDI1LjA3LTMyLjIgODEgMCA5MCAyLjMyIDEwMS03LjggOS44Mi05LjI0IDcuOC0xNS41IDcuOC0xMDIuNzggMS04LjMgNy43OS0zMC44MSA1My40MS0yNC4xNCA2IC44NiAzMS45MSA0LjE4IDM3LjQ4IDMwLjY0bDY0LjI2IDExLjE1YzIwLjQzIDMuNzEgNzAuOTQgNyA4MC42IDU3Ljk0IDIyLjY2IDEyMS4wOSA4LjkxIDIzOC40NiA3LjggMjM4LjQ2QzM2Mi4xNSA0ODUuNTMgMjY3LjA2IDQ4MCAyNjcuMDYgNDgwYy0xOC45NS0uMjMtNTQuMjUtOS40LTY3LjI3LTM5Ljgzem04MC45NC0yMDQuODRjLTEgMS45Mi0yLjIgNiAuODUgNyAxNC4wOSA0LjkzIDM5Ljc1IDYuODQgNDUuODggNS41MyAzLjExLS4yNSAzLjA1LTQuNDMgMi40OC02LjY1LTMuNTMtMjEuODUtNDAuODMtMjYuNS00OS4yNC01LjkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeHBlZGl0ZWRzc2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDQzLjRDMTMwLjYgNDMuNCAzNS40IDEzOC42IDM1LjQgMjU2UzEzMC42IDQ2OC42IDI0OCA0NjguNiA0NjAuNiAzNzMuNCA0NjAuNiAyNTYgMzY1LjQgNDMuNCAyNDggNDMuNHptLTk3LjQgMTMyLjljMC01My43IDQzLjctOTcuNCA5Ny40LTk3LjRzOTcuNCA0My43IDk3LjQgOTcuNHYyNi42YzAgNS0zLjkgOC45LTguOSA4LjloLTE3LjdjLTUgMC04LjktMy45LTguOS04Ljl2LTI2LjZjMC04Mi4xLTEyNC04Mi4xLTEyNCAwdjI2LjZjMCA1LTMuOSA4LjktOC45IDguOWgtMTcuN2MtNSAwLTguOS0zLjktOC45LTguOXYtMjYuNnpNMzg5LjcgMzgwYzAgOS43LTggMTcuNy0xNy43IDE3LjdIMTI0Yy05LjcgMC0xNy43LTgtMTcuNy0xNy43VjIzOC4zYzAtOS43IDgtMTcuNyAxNy43LTE3LjdoMjQ4YzkuNyAwIDE3LjcgOCAxNy43IDE3LjdWMzgwem0tMjQ4LTEzNy4zdjEzMi45YzAgMi41LTEuOSA0LjQtNC40IDQuNGgtOC45Yy0yLjUgMC00LjQtMS45LTQuNC00LjRWMjQyLjdjMC0yLjUgMS45LTQuNCA0LjQtNC40aDguOWMyLjUgMCA0LjQgMS45IDQuNCA0LjR6bTE0MS43IDQ4LjdjMCAxMy03LjIgMjQuNC0xNy43IDMwLjR2MzEuNmMwIDUtMy45IDguOS04LjkgOC45aC0xNy43Yy01IDAtOC45LTMuOS04LjktOC45di0zMS42Yy0xMC41LTYuMS0xNy43LTE3LjQtMTcuNy0zMC40IDAtMTkuNyAxNS44LTM1LjQgMzUuNC0zNS40czM1LjUgMTUuOCAzNS41IDM1LjR6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDc4LjNDMTIxIDQ4Ni4zIDE3LjcgMzgzIDE3LjcgMjU2UzEyMSAyNS43IDI0OCAyNS43IDQ3OC4zIDEyOSA0NzguMyAyNTYgMzc1IDQ4Ni4zIDI0OCA0ODYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZWJvb2tGIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3OS4xNCAyODhsMTQuMjItOTIuNjZoLTg4Ljkxdi02MC4xM2MwLTI1LjM1IDEyLjQyLTUwLjA2IDUyLjI0LTUwLjA2aDQwLjQyVjYuMjZTMjYwLjQzIDAgMjI1LjM2IDBjLTczLjIyIDAtMTIxLjA4IDQ0LjM4LTEyMS4wOCAxMjQuNzJ2NzAuNjJIMjIuODlWMjg4aDgxLjM5djIyNGgxMDAuMTdWMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlYm9va01lc3NlbmdlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYuNTUgOEMxMTYuNTIgOCA4IDExMC4zNCA4IDI0OC41N2MwIDcyLjMgMjkuNzEgMTM0Ljc4IDc4LjA3IDE3Ny45NCA4LjM1IDcuNTEgNi42MyAxMS44NiA4LjA1IDU4LjIzQTE5LjkyIDE5LjkyIDAgMCAwIDEyMiA1MDIuMzFjNTIuOTEtMjMuMyA1My41OS0yNS4xNCA2Mi41Ni0yMi43QzMzNy44NSA1MjEuOCA1MDQgNDIzLjcgNTA0IDI0OC41NyA1MDQgMTEwLjM0IDM5Ni41OSA4IDI1Ni41NSA4em0xNDkuMjQgMTg1LjEzbC03MyAxMTUuNTdhMzcuMzcgMzcuMzcgMCAwIDEtNTMuOTEgOS45M2wtNTguMDgtNDMuNDdhMTUgMTUgMCAwIDAtMTggMGwtNzguMzcgNTkuNDRjLTEwLjQ2IDcuOTMtMjQuMTYtNC42LTE3LjExLTE1LjY3bDczLTExNS41N2EzNy4zNiAzNy4zNiAwIDAgMSA1My45MS05LjkzbDU4LjA2IDQzLjQ2YTE1IDE1IDAgMCAwIDE4IDBsNzguNDEtNTkuMzhjMTAuNDQtNy45OCAyNC4xNCA0LjU0IDE3LjA5IDE1LjYyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlYm9va1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhBNDggNDggMCAwIDAgMCA4MHYzNTJhNDggNDggMCAwIDAgNDggNDhoMTM3LjI1VjMyNy42OWgtNjNWMjU2aDYzdi01NC42NGMwLTYyLjE1IDM3LTk2LjQ4IDkzLjY3LTk2LjQ4IDI3LjE0IDAgNTUuNTIgNC44NCA1NS41MiA0Ljg0djYxaC0zMS4yN2MtMzAuODEgMC00MC40MiAxOS4xMi00MC40MiAzOC43M1YyNTZoNjguNzhsLTExIDcxLjY5aC01Ny43OFY0ODBINDAwYTQ4IDQ4IDAgMCAwIDQ4LTQ4VjgwYTQ4IDQ4IDAgMCAwLTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlYm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2QzUwNCAxMTkgMzkzIDggMjU2IDhTOCAxMTkgOCAyNTZjMCAxMjMuNzggOTAuNjkgMjI2LjM4IDIwOS4yNSAyNDVWMzI3LjY5aC02M1YyNTZoNjN2LTU0LjY0YzAtNjIuMTUgMzctOTYuNDggOTMuNjctOTYuNDggMjcuMTQgMCA1NS41MiA0Ljg0IDU1LjUyIDQuODR2NjFoLTMxLjI4Yy0zMC44IDAtNDAuNDEgMTkuMTItNDAuNDEgMzguNzNWMjU2aDY4Ljc4bC0xMSA3MS42OWgtNTcuNzhWNTAxQzQxMy4zMSA0ODIuMzggNTA0IDM3OS43OCA1MDQgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYW50YXN5RmxpZ2h0R2FtZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyLjg2TDMyLjg2IDI1NiAyNTYgNDc5LjE0IDQ3OS4xNCAyNTYgMjU2IDMyLjg2ek04OC4zNCAyNTUuODNjMS45Ni0yIDExLjkyLTEyLjMgOTYuNDktOTcuNDggNDEuNDUtNDEuNzUgODYuMTktNDMuNzcgMTE5Ljc3LTE4LjY5IDI0LjYzIDE4LjQgNjIuMDYgNTguOSA2Mi4xNSA1OSAuNjguNzQgMS4wNyAyLjg2LjU4IDMuMzgtMTEuMjcgMTEuODQtMjIuNjggMjMuNTQtMzMuNSAzNC42OS0zNC4yMS0zMi4zMS00MC41Mi0zOC4yNC00OC41MS00My45NS0xNy43Ny0xMi42OS00MS40LTEwLjEzLTU2Ljk4IDUuMS0yLjE3IDIuMTMtMS43OSAzLjQzLjEyIDUuMzUgMi45NCAyLjk1IDI4LjEgMjguMzMgMzUuMDkgMzUuNzgtMTEuOTUgMTEuNi0yMy42NiAyMi45Ny0zNS42OSAzNC42Ni0xMi4wMi0xMi41NC0yNC40OC0yNS41My0zNi41NC0zOC4xMS0yMS4zOSAyMS4wOS00MS42OSA0MS4xMS02MS44NSA2MC45OWE0MjU2OS4wMSA0MjU2OS4wMSAwIDAgMS00MS4xMy00MC43MnptMjM0LjgyIDEwMS42Yy0zNS40OSAzNS40My03OC4wOSAzOC4xNC0xMDYuOTkgMjAuNDctMjIuMDgtMTMuNS0zOS4zOC0zMi4wOC03Mi45My02Ni44NCAxMi4wNS0xMi4zNyAyMy43OS0yNC40MiAzNS4zNy0zNi4zMSAzMy4wMiAzMS45MSAzNy4wNiAzNi4wMSA0NC42OCA0Mi4wOSAxOC40OCAxNC43NCA0Mi41MiAxMy42NyA1OS4zMi0xLjggMy42OC0zLjM5IDMuNjktMy42NC4xNC03LjI0LTEwLjU5LTEwLjczLTIxLjE5LTIxLjQ0LTMxLjc3LTMyLjE4LTEuMzItMS4zNC0zLjAzLTIuNDgtLjgtNC42OSAxMC43OS0xMC43MSAyMS40OC0yMS41MiAzMi4yMS0zMi4yOS4yNi0uMjYuNjUtLjM4IDEuOTEtMS4wNyAxMi4zNyAxMi44NyAyNC45MiAyNS45MiAzNy4yNSAzOC43NSAyMS4wMS0yMC43MyA0MS4yNC00MC42OCA2MS4yNS02MC40MiAxMy42OCAxMy40IDI3LjEzIDI2LjU4IDQwLjg2IDQwLjAzLTIwLjE3IDIwLjg2LTgxLjY4IDgyLjcxLTEwMC41IDEwMS41ek0yNTYgMEwwIDI1NmwyNTYgMjU2IDI1Ni0yNTZMMjU2IDB6TTE2IDI1NkwyNTYgMTZsMjQwIDI0MC0yNDAgMjQwTDE2IDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmVkZXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTg2IDI4NC41bDUzLjMtNTkuOWgtNjIuNGwtMjEuNyAyNC44LTIyLjUtMjQuOEg0MTR2LTE2aDU2LjF2LTQ4LjFIMzE4LjlWMjM2aC0uNWMtOS42LTExLTIxLjUtMTQuOC0zNS40LTE0LjgtMjguNCAwLTQ5LjggMTkuNC01Ny4zIDQ0LjktMTgtNTkuNC05Ny40LTU3LjYtMTIxLjktMTR2LTI0LjJINDl2LTI2LjJoNjB2LTQxLjFIMFYzNDVoNDl2LTc3LjVoNDguOWMtMS41IDUuNy0yLjMgMTEuOC0yLjMgMTguMiAwIDczLjEgMTAyLjYgOTEuNCAxMzAuMiAyMy43aC00MmMtMTQuNyAyMC45LTQ1LjggOC45LTQ1LjgtMTQuNmg4NS41YzMuNyAzMC41IDI3LjQgNTYuOSA2MC4xIDU2LjkgMTQuMSAwIDI3LTYuOSAzNC45LTE4LjZoLjVWMzQ1aDIxMi4ybDIyLjEtMjUgMjIuMyAyNUg2NDBsLTU0LTYwLjV6bS00NDYuNy0xNi42YzYuMS0yNi4zIDQxLjctMjUuNiA0Ni41IDBoLTQ2LjV6bTE1My40IDQ4LjljLTM0LjYgMC0zNC02Mi44IDAtNjIuOCAzMi42IDAgMzQuNSA2Mi44IDAgNjIuOHptMTY3LjggMTkuMWgtOTQuNFYxNjkuNGg5NXYzMC4ySDQwNXYzMy45aDU1LjV2MjguMWgtNTYuMXY0NC43aDU2LjF2MjkuNnptLTQ1LjktMzkuOHYtMjQuNGg1Ni4xdi00NGw1MC43IDU3LTUwLjcgNTd2LTQ1LjZoLTU2LjF6bTEzOC42IDEwLjNsLTI2LjEgMjkuNUg0ODlsNDUuNi01MS4yLTQ1LjYtNTEuMmgzOS43bDI2LjYgMjkuMyAyNS42LTI5LjNoMzguNWwtNDUuNCA1MSA0NiA1MS40aC00MC41bC0yNi4zLTI5LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlZG9yYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjUgMzJDMTAxLjMgMzEuNy44IDEzMS43LjQgMjU1LjRMMCA0MjUuN2E1My42IDUzLjYgMCAwIDAgNTMuNiA1My45bDE3MC4yLjRjMTIzLjcuMyAyMjQuMy05OS43IDIyNC42LTIyMy40UzM0OC43IDMyLjMgMjI1IDMyem0xNjkuOCAxNTcuMkwzMzMgMTI2LjZjMi4zLTQuNyAzLjgtOS4yIDMuOC0xNC4zdi0xLjZsNTUuMiA1Ni4xYTEwMSAxMDEgMCAwIDEgMi44IDIyLjR6TTMzMSA5NC4zYTEwNi4wNiAxMDYuMDYgMCAwIDEgNTguNSA2My44bC01NC4zLTU0LjZhMjYuNDggMjYuNDggMCAwIDAtNC4yLTkuMnpNMTE4LjEgMjQ3LjJhNDkuNjYgNDkuNjYgMCAwIDAtNy43IDExLjRsLTguNS04LjVhODUuNzggODUuNzggMCAwIDEgMTYuMi0yLjl6TTk3IDI1MS40bDExLjggMTEuOS0uOSA4YTM0Ljc0IDM0Ljc0IDAgMCAwIDIuNCAxMi41bC0yNy0yNy4yYTgwLjYgODAuNiAwIDAgMSAxMy43LTUuMnptLTE4LjIgNy40bDM4LjIgMzguNGE1My4xNyA1My4xNyAwIDAgMC0xNC4xIDQuN0w2Ny42IDI2NmExMDcgMTA3IDAgMCAxIDExLjItNy4yem0tMTUuMiA5LjhsMzUuMyAzNS41YTY3LjI1IDY3LjI1IDAgMCAwLTEwLjUgOC41TDUzLjUgMjc4YTY0LjMzIDY0LjMzIDAgMCAxIDEwLjEtOS40em0tMTMuMyAxMi4zbDM0LjkgMzVhNTYuODQgNTYuODQgMCAwIDAtNy43IDExLjRsLTM1LjgtMzUuOWMyLjgtMy44IDUuNy03LjIgOC42LTEwLjV6bS0xMSAxNC4zbDM2LjQgMzYuNmE0OC4yOSA0OC4yOSAwIDAgMC0zLjYgMTUuMmwtMzkuNS0zOS44YTk5LjgxIDk5LjgxIDAgMCAxIDYuNy0xMnptLTguOCAxNi4zbDQxLjMgNDEuOGE2My40NyA2My40NyAwIDAgMCA2LjcgMjYuMkwyNS44IDMyNmMxLjQtNC45IDIuOS05LjYgNC43LTE0LjV6bS03LjkgNDNsNjEuOSA2Mi4yYTMxLjI0IDMxLjI0IDAgMCAwLTMuNiAxNC4zdjEuMWwtNTUuNC01NS43YTg4LjI3IDg4LjI3IDAgMCAxLTIuOS0yMS45em01LjMgMzAuN2w1NC4zIDU0LjZhMjguNDQgMjguNDQgMCAwIDAgNC4yIDkuMiAxMDYuMzIgMTA2LjMyIDAgMCAxLTU4LjUtNjMuOHptLTUuMy0zN2E4MC42OSA4MC42OSAwIDAgMSAyLjEtMTdsNzIuMiA3Mi41YTM3LjU5IDM3LjU5IDAgMCAwLTkuOSA4Ljd6bTI1My4zLTUxLjhsLTQyLjYtLjEtLjEgNTZjLS4yIDY5LjMtNjQuNCAxMTUuOC0xMjUuNyAxMDIuOS01LjcgMC0xOS45LTguNy0xOS45LTI0LjJhMjQuODkgMjQuODkgMCAwIDEgMjQuNS0yNC42YzYuMyAwIDYuMyAxLjYgMTUuNyAxLjZhNTUuOTEgNTUuOTEgMCAwIDAgNTYuMS01NS45bC4xLTQ3YzAtNC41LTQuNS05LTguOS05bC0zMy42LS4xYy0zMi42LS4xLTMyLjUtNDkuNC4xLTQ5LjNsNDIuNi4xLjEtNTZhMTA1LjE4IDEwNS4xOCAwIDAgMSAxMDUuNi0xMDUgODYuMzUgODYuMzUgMCAwIDEgMjAuMiAyLjNjMTEuMiAxLjggMTkuOSAxMS45IDE5LjkgMjQgMCAxNS41LTE0LjkgMjcuOC0zMC4zIDIzLjktMjcuNC01LjktNjUuOSAxNC40LTY2IDU0LjlsLS4xIDQ3YTguOTQgOC45NCAwIDAgMCA4LjkgOWwzMy42LjFjMzIuNS4yIDMyLjQgNDkuNS0uMiA0OS40em0yMy41LS4zYTM1LjU4IDM1LjU4IDAgMCAwIDcuNi0xMS40bDguNSA4LjVhMTAyIDEwMiAwIDAgMS0xNi4xIDIuOXptMjEtNC4yTDMwOC42IDI4MGwuOS04LjFhMzQuNzQgMzQuNzQgMCAwIDAtMi40LTEyLjVsMjcgMjcuMmE3NC44OSA3NC44OSAwIDAgMS0xMy43IDUuM3ptMTgtNy40bC0zOC0zOC40YzQuOS0xLjEgOS42LTIuNCAxMy43LTQuN2wzNi4yIDM1LjljLTMuOCAyLjUtNy45IDUtMTEuOSA3LjJ6bTE1LjUtOS44bC0zNS4zLTM1LjVhNjEuMDYgNjEuMDYgMCAwIDAgMTAuNS04LjVsMzQuOSAzNWExMjQuNTYgMTI0LjU2IDAgMCAxLTEwLjEgOXptMTMuMi0xMi4zbC0zNC45LTM1YTYzLjE4IDYzLjE4IDAgMCAwIDcuNy0xMS40bDM1LjggMzUuOWExMzAuMjggMTMwLjI4IDAgMCAxLTguNiAxMC41em0xMS0xNC4zbC0zNi40LTM2LjZhNDguMjkgNDguMjkgMCAwIDAgMy42LTE1LjJsMzkuNSAzOS44YTg3LjcyIDg3LjcyIDAgMCAxLTYuNyAxMnptMTMuNS0zMC45YTE0MC42MyAxNDAuNjMgMCAwIDEtNC43IDE0LjNMMzQ1LjYgMTkwYTU4LjE5IDU4LjE5IDAgMCAwLTcuMS0yNi4yem0xLTUuNmwtNzEuOS03Mi4xYTMyIDMyIDAgMCAwIDkuOS05LjJsNjQuMyA2NC43YTkwLjkzIDkwLjkzIDAgMCAxLTIuMyAxNi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWdtYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA5NS43OTI0QzE0IDQyLjg4NzcgNTYuODg3OCAwIDEwOS43OTMgMEgyNzQuMTYxQzMyNy4wNjYgMCAzNjkuOTU0IDQyLjg4NzcgMzY5Ljk1NCA5NS43OTI0QzM2OS45NTQgMTI5LjI5MiAzNTIuNzU4IDE1OC43NzYgMzI2LjcxMSAxNzUuODk3QzM1Mi43NTggMTkzLjAxOSAzNjkuOTU0IDIyMi41MDIgMzY5Ljk1NCAyNTYuMDAyQzM2OS45NTQgMzA4LjkwNyAzMjcuMDY2IDM1MS43OTUgMjc0LjE2MSAzNTEuNzk1SDI3Mi4wODFDMjQ3LjI3OSAzNTEuNzk1IDIyNC42NzggMzQyLjM2OSAyMDcuNjY2IDMyNi45MDRWNDE1LjE2N0MyMDcuNjY2IDQ2OC43NzcgMTYzLjY1NyA1MTIgMTEwLjMwOSA1MTJDNTcuNTM2MSA1MTIgMTQgNDY5LjI0MyAxNCA0MTYuMjA3QzE0IDM4Mi43MDkgMzEuMTk0NSAzNTMuMjI3IDU3LjIzOTIgMzM2LjEwNUMzMS4xOTQ1IDMxOC45ODMgMTQgMjg5LjUgMTQgMjU2LjAwMkMxNCAyMjIuNTAyIDMxLjE5NiAxOTMuMDE5IDU3LjI0MjUgMTc1Ljg5N0MzMS4xOTYgMTU4Ljc3NiAxNCAxMjkuMjkyIDE0IDk1Ljc5MjRaTTE3Ni4yODggMTkxLjU4N0gxMDkuNzkzQzc0LjIxNzIgMTkxLjU4NyA0NS4zNzc4IDIyMC40MjcgNDUuMzc3OCAyNTYuMDAyQzQ1LjM3NzggMjkxLjQ0IDczLjk5NDggMzIwLjE5NCAxMDkuMzgxIDMyMC40MTZDMTA5LjUxOCAzMjAuNDE1IDEwOS42NTUgMzIwLjQxNSAxMDkuNzkzIDMyMC40MTVIMTc2LjI4OFYxOTEuNTg3Wk0yMDcuNjY2IDI1Ni4wMDJDMjA3LjY2NiAyOTEuNTc3IDIzNi41MDUgMzIwLjQxNyAyNzIuMDgxIDMyMC40MTdIMjc0LjE2MUMzMDkuNzM3IDMyMC40MTcgMzM4LjU3NiAyOTEuNTc3IDMzOC41NzYgMjU2LjAwMkMzMzguNTc2IDIyMC40MjcgMzA5LjczNyAxOTEuNTg3IDI3NC4xNjEgMTkxLjU4N0gyNzIuMDgxQzIzNi41MDUgMTkxLjU4NyAyMDcuNjY2IDIyMC40MjcgMjA3LjY2NiAyNTYuMDAyWk0xMDkuNzkzIDM1MS43OTVDMTA5LjY1NSAzNTEuNzk1IDEwOS41MTggMzUxLjc5NCAxMDkuMzgxIDM1MS43OTRDNzMuOTk0OCAzNTIuMDE1IDQ1LjM3NzggMzgwLjc2OSA0NS4zNzc4IDQxNi4yMDdDNDUuMzc3OCA0NTEuNjUyIDc0LjYwMjUgNDgwLjYyMiAxMTAuMzA5IDQ4MC42MjJDMTQ2LjU5MSA0ODAuNjIyIDE3Ni4yODggNDUxLjE4NiAxNzYuMjg4IDQxNS4xNjdWMzUxLjc5NUgxMDkuNzkzWk0xMDkuNzkzIDMxLjM3NzhDNzQuMjE3MiAzMS4zNzc4IDQ1LjM3NzggNjAuMjE3MyA0NS4zNzc4IDk1Ljc5MjRDNDUuMzc3OCAxMzEuMzY4IDc0LjIxNzIgMTYwLjIwNyAxMDkuNzkzIDE2MC4yMDdIMTc2LjI4OFYzMS4zNzc4SDEwOS43OTNaTTIwNy42NjYgMTYwLjIwN0gyNzQuMTYxQzMwOS43MzcgMTYwLjIwNyAzMzguNTc2IDEzMS4zNjggMzM4LjU3NiA5NS43OTI0QzMzOC41NzYgNjAuMjE3MyAzMDkuNzM3IDMxLjM3NzggMjc0LjE2MSAzMS4zNzc4SDIwNy42NjZWMTYwLjIwN1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlyZWZveEJyb3dzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg5LjM3LDE1Mi44NlptLTU4Ljc0LTI5LjM3QzEzMC43OSwxMjMuNSwxMzAuNzEsMTIzLjUsMTMwLjYzLDEyMy40OVptMzUxLjQyLDQ1LjM1Yy0xMC42MS0yNS41LTMyLjA4LTUzLTQ4Ljk0LTYxLjczLDEzLjcyLDI2Ljg5LDIxLjY3LDUzLjg4LDI0LjcsNzQsMCwwLDAsLjE0LjA1LjQxLTI3LjU4LTY4Ljc1LTc0LjM1LTk2LjQ3LTExMi41NS0xNTYuODMtMS45My0zLjA1LTMuODYtNi4xMS01Ljc0LTkuMzMtMS0xLjY1LTEuODYtMy4zNC0yLjY5LTUuMDVBNDQuODgsNDQuODgsMCwwLDEsMzMzLjI0LjY5YS42My42MywwLDAsMC0uNTUtLjY2LjkuOSwwLDAsMC0uNDYsMGwtLjEyLjA3LS4xOC4xLjEtLjE0Yy01NC4yMywzMS43Ny03Ni43Miw4Ny4zOC04Mi41LDEyMi43OGExMzAsMTMwLDAsMCwwLTQ4LjMzLDEyLjMzLDYuMjUsNi4yNSwwLDAsMC0zLjA5LDcuNzUsNi4xMyw2LjEzLDAsMCwwLDcuNzksMy43OWwuNTItLjIxYTExNy44NCwxMTcuODQsMCwwLDEsNDIuMTEtMTFsMS40Mi0uMWMyLS4xMiw0LS4yLDYtLjIyQTEyMi42MSwxMjIuNjEsMCwwLDEsMjkxLDE0MGMuNjcuMiwxLjMyLjQyLDIsLjYzLDEuODkuNTcsMy43NiwxLjIsNS42MiwxLjg3LDEuMzYuNSwyLjcxLDEsNC4wNSwxLjU4LDEuMDkuNDQsMi4xOC44OCwzLjI1LDEuMzVxMi41MiwxLjEzLDUsMi4zNWMuNzUuMzcsMS41Ljc0LDIuMjUsMS4xM3EyLjQsMS4yNiw0Ljc0LDIuNjMsMS41MS44NywzLDEuOGExMjQuODksMTI0Ljg5LDAsMCwxLDQyLjY2LDQ0LjEzYy0xMy05LjE1LTM2LjM1LTE4LjE5LTU4LjgyLTE0LjI4LDg3Ljc0LDQzLjg2LDY0LjE4LDE5NC45LTU3LjM5LDE4OS4yYTEwOC40MywxMDguNDMsMCwwLDEtMzEuNzQtNi4xMmMtMi40Mi0uOTEtNC44LTEuODktNy4xNi0yLjkzLTEuMzgtLjYzLTIuNzYtMS4yNy00LjEyLTJDMTc0LjUsMzQ2LDE0OS45LDMxNi45MiwxNDYuODMsMjgxLjU5YzAsMCwxMS4yNS00MS45NSw4MC42Mi00MS45NSw3LjUsMCwyOC45My0yMC45MiwyOS4zMy0yNy0uMDktMi00Mi41NC0xOC44Ny01OS4wOS0zNS4xOC04Ljg1LTguNzEtMTMuMDUtMTIuOTEtMTYuNzctMTYuMDZhNjkuNTgsNjkuNTgsMCwwLDAtNi4zMS00Ljc3QTExMy4wNSwxMTMuMDUsMCwwLDEsMTczLjkyLDk3Yy0yNS4wNiwxMS40MS00NC41NSwyOS40NS01OC43MSw0NS4zN2gtLjEyYy05LjY3LTEyLjI1LTktNTIuNjUtOC40My02MS4wOC0uMTItLjUzLTcuMjIsMy42OC04LjE1LDQuMzFhMTc4LjU0LDE3OC41NCwwLDAsMC0yMy44NCwyMC40M0EyMTQsMjE0LDAsMCwwLDUxLjksMTMzLjM2bDAsMGEuMDguMDgsMCwwLDEsMCwwLDIwNS44NCwyMDUuODQsMCwwLDAtMzIuNzMsNzMuOWMtLjA2LjI3LTIuMzMsMTAuMjEtNCwyMi40OHEtLjQyLDIuODctLjc4LDUuNzRjLS41NywzLjY5LTEsNy43MS0xLjQ0LDE0LDAsLjI0LDAsLjQ4LS4wNS43Mi0uMTgsMi43MS0uMzQsNS40MS0uNDksOC4xMiwwLC40MSwwLC44MiwwLDEuMjQsMCwxMzQuNywxMDkuMjEsMjQzLjg5LDI0My45MiwyNDMuODksMTIwLjY0LDAsMjIwLjgyLTg3LjU4LDI0MC40My0yMDIuNjIuNDEtMy4xMi43NC02LjI2LDEuMTEtOS40MSw0Ljg1LTQxLjgzLS41NC04NS43OS0xNS44Mi0xMjIuNTVaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmVmb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAzLjUyLDI0MS40OGMtLjEyLTEuNTYtLjI0LTMuMTItLjI0LTQuNjh2LS4xMmwtLjM2LTQuNjh2LS4xMmEyNDUuODYsMjQ1Ljg2LDAsMCwwLTcuMzItNDEuMTVjMC0uMTIsMC0uMTItLjEyLS4yNGwtMS4wOC00Yy0uMTItLjI0LS4xMi0uNDgtLjI0LS42LS4zNi0xLjItLjcyLTIuNTItMS4wOC0zLjcyLS4xMi0uMjQtLjEyLS42LS4yNC0uODQtLjM2LTEuMi0uNzItMi40LTEuMDgtMy40OC0uMTItLjM2LS4yNC0uNi0uMzYtMS0uMzYtMS4yLS43Mi0yLjI4LTEuMi0zLjQ4bC0uMzYtMS4wOGMtLjM2LTEuMDgtLjg0LTIuMjgtMS4yLTMuMzZhOC4yNyw4LjI3LDAsMCwwLS4zNi0xYy0uNDgtMS4wOC0uODQtMi4yOC0xLjMyLTMuMzYtLjEyLS4yNC0uMjQtLjYtLjM2LS44NC0uNDgtMS4yLTEtMi4yOC0xLjQ0LTMuNDgsMC0uMTItLjEyLS4yNC0uMTItLjM2LTEuNTYtMy44NC0zLjI0LTcuNjgtNS0xMS40bC0uMzYtLjcyYy0uNDgtMS0uODQtMS44LTEuMzItMi42NC0uMjQtLjQ4LS40OC0xLjA4LS43Mi0xLjU2LS4zNi0uODQtLjg0LTEuNTYtMS4yLTIuNC0uMzYtLjYtLjYtMS4yLTEtMS44cy0uODQtMS40NC0xLjItMi4yOGMtLjM2LS42LS43Mi0xLjMyLTEuMDgtMS45MnMtLjg0LTEuNDQtMS4yLTIuMTZhMTguMDcsMTguMDcsMCwwLDAtMS4yLTJjLS4zNi0uNzItLjg0LTEuMzItMS4yLTJzLS44NC0xLjMyLTEuMi0yLS44NC0xLjMyLTEuMi0xLjkyLS44NC0xLjQ0LTEuMzItMi4xNmExNS42MywxNS42MywwLDAsMC0xLjItMS44TDQ2My4yLDExOWExNS42MywxNS42MywwLDAsMC0xLjItMS44Yy0uNDgtLjcyLTEuMDgtMS41Ni0xLjU2LTIuMjgtLjM2LS40OC0uNzItMS4wOC0xLjA4LTEuNTZsLTEuOC0yLjUyYy0uMzYtLjQ4LS42LS44NC0xLTEuMzItMS0xLjMyLTEuOC0yLjUyLTIuNzYtMy43MmEyNDguNzYsMjQ4Ljc2LDAsMCwwLTIzLjUxLTI2LjY0QTE4Ni44MiwxODYuODIsMCwwLDAsNDEyLDYyLjQ2Yy00LTMuNDgtOC4xNi02LjcyLTEyLjQ4LTkuODRhMTYyLjQ5LDE2Mi40OSwwLDAsMC0yNC42LTE1LjEyYy0yLjQtMS4zMi00LjgtMi41Mi03LjItMy43MmEyNTQsMjU0LDAsMCwwLTU1LjQzLTE5LjU2Yy0xLjkyLS4zNi0zLjg0LS44NC01LjY0LTEuMmgtLjEyYy0xLS4xMi0xLjgtLjM2LTIuNzYtLjQ4YTIzNi4zNSwyMzYuMzUsMCwwLDAtMzgtNEgyNTUuMTRhMjM0LjYyLDIzNC42MiwwLDAsMC00NS40OCw1Yy0zMy41OSw3LjA4LTYzLjIzLDIxLjI0LTgyLjkxLDM5LTEuMDgsMS0xLjkyLDEuNjgtMi40LDIuMTZsLS40OC40OEgxMjRsLS4xMi4xMi4xMi0uMTJhLjEyLjEyLDAsMCwwLC4xMi0uMTJsLS4xMi4xMmEuNDIuNDIsMCwwLDEsLjI0LS4xMmMxNC42NC04Ljc2LDM0LjkyLTE2LDQ5LjQ0LTE5LjU2bDUuODgtMS40NGMuMzYtLjEyLjg0LS4xMiwxLjItLjI0LDEuNjgtLjM2LDMuMzYtLjcyLDUuMTYtMS4wOC4yNCwwLC42LS4xMi44NC0uMTJDMjUwLjk0LDIwLjk0LDMxOS4zNCw0MC4xNCwzNjcsODUuNjFhMTcxLjQ5LDE3MS40OSwwLDAsMSwyNi44OCwzMi43NmMzMC4zNiw0OS4yLDI3LjQ4LDExMS4xMSwzLjg0LDE0Ny41OS0zNC40NCw1My0xMTEuMzUsNzEuMjctMTU5LDI0Ljg0YTg0LjE5LDg0LjE5LDAsMCwxLTI1LjU2LTU5LDc0LjA1LDc0LjA1LDAsMCwxLDYuMjQtMzFjMS42OC0zLjg0LDEzLjA4LTI1LjY3LDE4LjI0LTI0LjU5LTEzLjA4LTIuNzYtMzcuNTUsMi42NC01NC43MSwyOC4xOS0xNS4zNiwyMi45Mi0xNC41Miw1OC4yLTUsODMuMjhhMTMyLjg1LDEzMi44NSwwLDAsMS0xMi4xMi0zOS4yNGMtMTIuMjQtODIuNTUsNDMuMzEtMTUzLDk0LjMxLTE3MC41MS0yNy40OC0yNC05Ni40Ny0yMi4zMS0xNDcuNzEsMTUuMzYtMjkuODgsMjItNTEuMjMsNTMuMTYtNjIuNTEsOTAuMzYsMS42OC0yMC44OCw5LjYtNTIuMDgsMjUuOC04My44OC0xNy4xNiw4Ljg4LTM5LDM3LTQ5LjgsNjIuODgtMTUuNiwzNy40My0yMSw4Mi4xOS0xNi4wOCwxMjQuNzkuMzYsMy4yNC43Miw2LjM2LDEuMDgsOS42LDE5LjkyLDExNy4xMSwxMjIsMjA2LjM4LDI0NC43OCwyMDYuMzhDMzkyLjc3LDUwMy40Miw1MDQsMzkyLjE5LDUwNCwyNTUsNTAzLjg4LDI1MC40OCw1MDMuNzYsMjQ1LjkyLDUwMy41MiwyNDEuNDhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcnN0T3JkZXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMCA0ODguMjFDMTE1LjM0IDQ5Ni4yMSA3Ljc5IDM4OC42NiA3Ljc5IDI1NlMxMTUuMzQgMTUuNzkgMjQ4IDE1Ljc5IDQ4OC4yMSAxMjMuMzQgNDg4LjIxIDI1NiAzODAuNjYgNDk2LjIxIDI0OCA0OTYuMjF6bTAtNDU5LjkyQzEyNi42NiAzNi4yOSAyOC4yOSAxMzQuNjYgMjguMjkgMjU2UzEyNi42NiA0NzUuNzEgMjQ4IDQ3NS43MSA0NjcuNzEgMzc3LjM0IDQ2Ny43MSAyNTYgMzY5LjM0IDM2LjI5IDI0OCAzNi4yOXptMCA0MzEuMjJjLTExNi44MSAwLTIxMS41MS05NC42OS0yMTEuNTEtMjExLjUxUzEzMS4xOSA0NC40OSAyNDggNDQuNDkgNDU5LjUxIDEzOS4xOSA0NTkuNTEgMjU2IDM2NC44MSA0NjcuNTEgMjQ4IDQ2Ny41MXptMTg2LjIzLTE2Mi45OGExOTEuNjEzIDE5MS42MTMgMCAwIDEtMjAuMTMgNDguNjlsLTc0LjEzLTM1Ljg4IDYxLjQ4IDU0LjgyYTE5My41MTUgMTkzLjUxNSAwIDAgMS0zNy4yIDM3LjI5bC01NC44LTYxLjU3IDM1Ljg4IDc0LjI3YTE5MC45NDQgMTkwLjk0NCAwIDAgMS00OC42MyAyMC4yM2wtMjcuMjktNzguNDcgNC43OSA4Mi45M2MtOC42MSAxLjE4LTE3LjQgMS44LTI2LjMzIDEuOHMtMTcuNzItLjYyLTI2LjMzLTEuOGw0Ljc2LTgyLjQ2LTI3LjE1IDc4LjAzYTE5MS4zNjUgMTkxLjM2NSAwIDAgMS00OC42NS0yMC4ybDM1LjkzLTc0LjM0LTU0Ljg3IDYxLjY0YTE5My44NSAxOTMuODUgMCAwIDEtMzcuMjItMzcuMjhsNjEuNTktNTQuOS03NC4yNiAzNS45M2ExOTEuNjM4IDE5MS42MzggMCAwIDEtMjAuMTQtNDguNjlsNzcuODQtMjcuMTEtODIuMjMgNC43NmMtMS4xNi04LjU3LTEuNzgtMTcuMzItMS43OC0yNi4yMSAwLTkgLjYzLTE3Ljg0IDEuODItMjYuNTFsODIuMzggNC43Ny03Ny45NC0yNy4xNmExOTEuNzI2IDE5MS43MjYgMCAwIDEgMjAuMjMtNDguNjdsNzQuMjIgMzUuOTItNjEuNTItNTQuODZhMTkzLjg1IDE5My44NSAwIDAgMSAzNy4yOC0zNy4yMmw1NC43NiA2MS41My0zNS44My03NC4xN2ExOTEuNDkgMTkxLjQ5IDAgMCAxIDQ4LjY1LTIwLjEzbDI2Ljg3IDc3LjI1LTQuNzEtODEuNjFjOC42MS0xLjE4IDE3LjM5LTEuOCAyNi4zMi0xLjhzMTcuNzEuNjIgMjYuMzIgMS44bC00Ljc0IDgyLjE2IDI3LjA1LTc3Ljc2YzE3LjI3IDQuNSAzMy42IDExLjM1IDQ4LjYzIDIwLjE3bC0zNS44MiA3NC4xMiA1NC43Mi02MS40N2ExOTMuMTMgMTkzLjEzIDAgMCAxIDM3LjI0IDM3LjIzbC02MS40NSA1NC43NyA3NC4xMi0zNS44NmExOTEuNTE1IDE5MS41MTUgMCAwIDEgMjAuMiA0OC42NWwtNzcuODEgMjcuMSA4Mi4yNC00Ljc1YzEuMTkgOC42NiAxLjgyIDE3LjUgMS44MiAyNi40OSAwIDguODgtLjYxIDE3LjYzLTEuNzggMjYuMTlsLTgyLjEyLTQuNzUgNzcuNzIgMjcuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcnN0T3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuOSAyMjkuMmMuMS0uMS4yLS4zLjMtLjQgMCAuMSAwIC4zLS4xLjRoLS4yek0yMjQgOTYuNmMtNy4xIDAtMTQuNi42LTIxLjQgMS43bDMuNyA2Ny40LTIyLTY0Yy0xNC4zIDMuNy0yNy43IDkuNC00MCAxNi42bDI5LjQgNjEuNC00NS4xLTUwLjljLTExLjQgOC45LTIxLjcgMTkuMS0zMC42IDMwLjlsNTAuNiA0NS40LTYxLjEtMjkuN2MtNy4xIDEyLjMtMTIuOSAyNS43LTE2LjYgNDBsNjQuMyAyMi42LTY4LTRjLS45IDcuMS0xLjQgMTQuNi0xLjQgMjJzLjYgMTQuNiAxLjQgMjEuN2w2Ny43LTQtNjQgMjIuNmMzLjcgMTQuMyA5LjQgMjcuNyAxNi42IDQwLjNsNjEuMS0yOS43TDk3LjcgMzUyYzguOSAxMS43IDE5LjEgMjIuMyAzMC45IDMwLjlsNDQuOS01MC45LTI5LjUgNjEuNGMxMi4zIDcuNCAyNS43IDEzLjEgNDAgMTYuOWwyMi4zLTY0LjYtNCA2OGM3LjEgMS4xIDE0LjYgMS43IDIxLjcgMS43IDcuNCAwIDE0LjYtLjYgMjEuNy0xLjdsLTQtNjguNiAyMi42IDY1LjFjMTQuMy00IDI3LjctOS40IDQwLTE2LjlMMjc0LjkgMzMybDQ0LjkgNTAuOWMxMS43LTguOSAyMi0xOS4xIDMwLjYtMzAuOWwtNTAuNi00NS4xIDYxLjEgMjkuNGM3LjEtMTIuMyAxMi45LTI1LjcgMTYuNi00MC4zbC02NC0yMi4zIDY3LjQgNGMxLjEtNy4xIDEuNC0xNC4zIDEuNC0yMS43cy0uMy0xNC45LTEuNC0yMmwtNjcuNyA0IDY0LTIyLjNjLTMuNy0xNC4zLTkuMS0yOC0xNi42LTQwLjNsLTYwLjkgMjkuNyA1MC42LTQ1LjRjLTguOS0xMS43LTE5LjEtMjItMzAuNi0zMC45bC00NS4xIDUwLjkgMjkuNC02MS4xYy0xMi4zLTcuNC0yNS43LTEzLjEtNDAtMTYuOUwyNDEuNyAxNjZsNC02Ny43Yy03LjEtMS4yLTE0LjMtMS43LTIxLjctMS43ek00NDMuNCAxMjh2MjU2TDIyNCA1MTIgNC42IDM4NFYxMjhMMjI0IDBsMjE5LjQgMTI4em0tMTcuMSAxMC4zTDIyNCAyMC45IDIxLjcgMTM4LjN2MjM1LjFMMjI0IDQ5MS4xbDIwMi4zLTExNy43VjEzOC4zek0yMjQgMzcuMWwxODcuNyAxMDkuNHYyMTguOUwyMjQgNDc0LjkgMzYuMyAzNjUuNFYxNDYuNkwyMjQgMzcuMXptMCA1MC45Yy05Mi4zIDAtMTY2LjkgNzUuMS0xNjYuOSAxNjggMCA5Mi42IDc0LjYgMTY3LjcgMTY2LjkgMTY3LjcgOTIgMCAxNjYuOS03NS4xIDE2Ni45LTE2Ny43IDAtOTIuOS03NC45LTE2OC0xNjYuOS0xNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcnN0ZHJhZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDE5MmgtNjR2MTI4SDE5MnYxMjhIMHYtMjUuNmgxNjYuNHYtMTI4aDEyOHYtMTI4SDM4NFYxOTJ6bS0yNS42IDM4LjR2MTI4aC0xMjh2MTI4SDY0VjUxMmgxOTJWMzg0aDEyOFYyMzAuNGgtMjUuNnptMjUuNiAxOTJoLTg5LjZWNTEySDMyMHYtNjRoNjR2LTI1LjZ6TTAgMHYzODRoMTI4VjI1NmgxMjhWMTI4aDEyOFYwSDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsaWNrciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xNDQuNSAzMTljLTM1LjEgMC02My41LTI4LjQtNjMuNS02My41czI4LjQtNjMuNSA2My41LTYzLjUgNjMuNSAyOC40IDYzLjUgNjMuNS0yOC40IDYzLjUtNjMuNSA2My41em0xNTkgMGMtMzUuMSAwLTYzLjUtMjguNC02My41LTYzLjVzMjguNC02My41IDYzLjUtNjMuNSA2My41IDI4LjQgNjMuNSA2My41LTI4LjQgNjMuNS02My41IDYzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsaXBib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMydjQ0OGg0NDhWMzJIMHptMzU4LjQgMTc5LjJoLTg5LjZ2ODkuNmgtODkuNnY4OS42SDg5LjZWMTIxLjZoMjY4Ljh2ODkuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ny44IDQyNy44YzEyLjkgMTEuNyAzMy43IDMzLjMgMzMuMiA1MC43IDAgLjgtLjEgMS42LS4xIDIuNS0xLjggMTkuOC0xOC44IDMxLjEtMzkuMSAzMS0yNS0uMS0zOS45LTE2LjgtMzguNy0zNS44IDEtMTYuMiAyMC41LTM2LjcgMzIuNC00Ny42IDIuMy0yLjEgMi43LTIuNyA1LjYtMy42IDMuNCAwIDMuOS4zIDYuNyAyLjh6TTMzMS45IDY3LjNjLTE2LjMtMjUuNy0zOC42LTQwLjYtNjMuMy01Mi4xQzI0My4xIDQuNSAyMTQtLjIgMTkyIDBjLTQ0LjEgMC03MS4yIDEzLjItODEuMSAxNy4zQzU3LjMgNDUuMiAyNi41IDg3LjIgMjggMTU4LjZjNy4xIDgyLjIgOTcgMTc2IDE1NS44IDIzMy44IDEuNyAxLjYgNC41IDQuNSA2LjIgNS4xbDMuMy4xYzIuMS0uNyAxLjgtLjUgMy41LTIuMSA1Mi4zLTQ5LjIgMTQwLjctMTQ1LjggMTU1LjktMjE1LjcgNy0zOS4yIDMuMS03Mi41LTIwLjgtMTEyLjV6TTE4Ni44IDM1MS45Yy0yOC01MS4xLTY1LjItMTMwLjctNjkuMy0xODktMy40LTQ3LjUgMTEuNC0xMzEuMiA2OS4zLTEzNi43djMyNS43ek0zMjguNyAxODBjLTE2LjQgNTYuOC03Ny4zIDEyOC0xMTguOSAxNzAuM0MyMzcuNiAyOTguNCAyNzUgMjE3IDI3NyAxNTguNGMxLjYtNDUuOS05LjgtMTA1LjgtNDgtMTMxLjQgODguOCAxOC4zIDExNS41IDk4LjEgOTkuNyAxNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbnRBd2Vzb21lQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEE0OCA0OCAwIDAgMCAwIDgwVjQzMmE0OCA0OCAwIDAgMCA0OCA0OEg0MDBhNDggNDggMCAwIDAgNDgtNDhWODBBNDggNDggMCAwIDAgNDAwIDMyWm0xNiA0MDBhMTYgMTYgMCAwIDEtMTYgMTZINDhhMTYgMTYgMCAwIDEtMTYtMTZWODBBMTYgMTYgMCAwIDEgNDggNjRINDAwYTE2IDE2IDAgMCAxIDE2IDE2Wk0yMDEuNiAxNTJjLTI1LjQgMC0zNy40IDEwLjQtNTcuNiAxNC40VjE2MGExNiAxNiAwIDAgMC0zMiAwVjM1MmExNiAxNiAwIDAgMCAzMiAwVjE5OC40YzIwLjItNCAzMi4yLTE0LjQgNTcuNi0xNC40IDMxLjQgMCA0My4yIDE2IDc0LjYgMTYgMTAuMiAwIDE3LjgtMS40IDI3LjgtNC42djk2Yy0xMCAzLjItMTcuNiA0LjYtMjcuOCA0LjYtMzEuNCAwLTQzLjQtMTYtNzQuNi0xNmE4NS45IDg1LjkgMCAwIDAtMjUuNiA0djMyYTgwIDgwIDAgMCAxIDI1LjYtNGMzMS40IDAgNDMuMiAxNiA3NC42IDE2IDE4LjYgMCAyOC4yLTQuOCA1OS44LTE2VjE1MmMtMzEuNiAxMS4yLTQxLjIgMTYtNTkuOCAxNkMyNDQuOCAxNjggMjMyLjggMTUyIDIwMS42IDE1MlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9udEF3ZXNvbWVGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA0OFYzODRjLTYzIDIzLTgyIDMyLTExOSAzMi02MyAwLTg3LTMyLTE1MC0zMi0yMCAwLTM2IDQtNTEgOFYzMjhjMTUtNCAzMS04IDUxLTggNjMgMCA4NyAzMiAxNTAgMzIgMjAgMCAzNS0zIDU1LTlWMTM1Yy0yMCA2LTM1IDktNTUgOS02MyAwLTg3LTMyLTE1MC0zMi01MSAwLTc1IDIxLTExNSAyOVY0NDhhMzEuNiAzMS42IDAgMCAxLTMyIDMyQTMxLjYgMzEuNiAwIDAgMSAwIDQ0OFY2NEEzMS42IDMxLjYgMCAwIDEgMzIgMzIgMzEuNiAzMS42IDAgMCAxIDY0IDY0Vjc3YzQwLTggNjQtMjkgMTE1LTI5IDYzIDAgODcgMzIgMTUwIDMyQzM2NiA4MCAzODUgNzEgNDQ4IDQ4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250QXdlc29tZUxvZ29GdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzOTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjA5LjcgMTU2LjVjLTU3LjggMC0xMDIgNDMuOS0xMDIgOTkuMSAwIDU2IDQ0LjYgOTkuMSAxMDIgOTkuMSA1Ny40IDAgMTAyLTQzLjEgMTAyLTk5LjFDMTMxMS43IDIwMC40IDEyNjcuNSAxNTYuNSAxMjA5LjcgMTU2LjVabTAgMTUyLjdjLTM1LjEgMC01MS44LTI3LjQtNTEuOC01My4yIDAtMjUuOCAxNi43LTUzLjIgNTEuOC01My4yIDM1LjEgMCA1MS44IDI3LjggNTEuOCA1My4yQzEyNjEuMSAyODEuOCAxMjQ0LjggMzA5LjIgMTIwOS43IDMwOS4yWm05NjIuMS0xMzYuMWMtNC40LTEwLjktMTIuMy0xNi41LTIzLjUtMTYuNXMtMTkuMSA1LjYtMjMuNSAxNi41bC01OS40IDE0NS44Yy03LjIgMTcuNyAyLjggMjcuNCA0LjQgMjlhMjQuNiAyNC42IDAgMCAwIDE3LjUgNi44YzEwLjggMCAxOC43LTYgMjMuMS0xOC4xbDQtMTAuMWg2Ny43bDQgMTAuMWM0LjggMTIuMSAxMi4zIDE4LjEgMjMuMSAxOC4xYTI0LjYgMjQuNiAwIDAgMCAxNy41LTYuOGMxMC0xMC4xIDYuOC0yMi42IDQuNC0yOVptLTQzIDExMy42IDE5LjEtNTYgMTkuMSA1NlptLTU3NC41LTEzMC4xYy0xNC4zIDAtMjQuNyAxMC45LTI0LjcgMjUuNHY3Ni41bC02OC41LTg1LjhjLTQuNC01LjYtMTEuNi0xNi4xLTI1LjUtMTYuMS0xOS4xIDAtMjQuMyAxNy43LTI0LjMgMjUuNFYzMjkuN2MwIDE0LjEgMTAuNCAyNS40IDI0LjcgMjUuNCAxNC4zIDAgMjQuNy0xMC45IDI0LjctMjUuNFYyNTIuOGw2OC45IDg2LjJjNC44IDUuNiAxMS42IDE2LjEgMjUuNSAxNi4xIDE5LjEgMCAyMy45LTE3LjMgMjMuOS0yNS40VjE4MS45QzE1NzkgMTY3LjQgMTU2OC42IDE1Ni41IDE1NTQuMyAxNTYuNVptLTU1NC4xIDEuNkg5MTYuNWMtMTkuOSAwLTI1LjEgMTcuMy0yNS4xIDI1LjRWMzI4LjFjMCAxOS43IDE2LjcgMjUuNCAyNC43IDI1LjQgOCAwIDI0LjctNS4yIDI0LjctMjUuNFYyODVoNDQuNmMxMi44IDAgMjIuNy05LjMgMjIuNy0yMi42IDAtMTcuNy0xNS41LTIyLjEtMjIuNy0yMi4xSDk0MC44VjIwMy42aDU5LjRjMTIuOCAwIDIyLjctOS4zIDIyLjctMjIuNkMxMDIyLjkgMTYzIDEwMDcuMyAxNTguMSAxMDAwLjIgMTU4LjFabTgxNS4xIDBIMTY5MS43Yy03LjIgMC0yMi43IDQuNC0yMi43IDIyLjIgMCAxMy4zIDEwIDIyLjYgMjIuNyAyMi42aDM3VjMyNy43YzAgMTQuMSAxMC40IDI1LjQgMjQuNyAyNS40IDE0LjMgMCAyNC43LTEwLjkgMjQuNy0yNS40VjIwMi44aDM3YzEyLjcgMCAyMi43LTkuMyAyMi43LTIyLjZDMTgzNy45IDE2MyAxODIyLjQgMTU4LjEgMTgxNS4yIDE1OC4xWm0xNzg5LjUtMS42Yy05LjYgMC0xNy41IDYtMjUuMSAxOC4xbC00Ni42IDc2LjFMMzQ4Ni40IDE3NC42cS0xMC44LTE4LjEtMjUuMS0xOC4xYy0xOS41IDAtMjQuNyAxOC4xLTI0LjcgMjUuOFYzMjkuN2MwIDE0LjEgMTAuNCAyNS40IDI0LjcgMjUuNHMyNC43LTEwLjkgMjQuNy0yNS40VjI2Mi44TDM1MTAuNyAzMDIuN2M2LjQgMTAuMSAxMy45IDE1LjMgMjIuMyAxNS4zIDguOCAwIDE1LjktNS4yIDIyLjMtMTUuM2wyNC43LTM5Ljl2NjYuOWMwIDE0LjEgMTAuMyAyNS40IDI0LjcgMjUuNCAxNC4zIDAgMjQuNy0xMC45IDI0LjctMjUuNFYxODIuM0MzNjI5LjQgMTc0LjIgMzYyNC42IDE1Ni41IDM2MDQuNyAxNTYuNVptMjQ4LjYgMTQ5LjhoLTY1LjdWMjcyLjloMzkuNGMxMS45IDAgMjEuMS04LjkgMjEuMS0yMC45IDAtMTIuMS05LjItMjAuOS0yMS4xLTIwLjloLTM5LjRWMjA0LjhoNjIuMWMxMi44IDAgMjIuNy05LjMgMjIuNy0yMi42IDAtMTcuNy0xNS42LTIyLjItMjIuNy0yMi4yaC04Ni40Yy0xOS45IDAtMjUuMSAxNy4zLTI1LjEgMjUuNFYzMjYuNWMwIDguMSA1LjIgMjUuNCAyNS4xIDI1LjRoOTBjMTIuOCAwIDIyLjctOS4zIDIyLjctMjIuNkMzODc2IDMxMS4yIDM4NjAuNSAzMDYuMyAzODUzLjMgMzA2LjNaTTMyMzUgMTU2LjVjLTU3LjggMC0xMDIgNDMuOS0xMDIgOTkuMSAwIDU2IDQ0LjYgOTkuMSAxMDIgOTkuMSA1Ny40IDAgMTAyLTQzLjEgMTAyLTk5LjFDMzMzNyAyMDAuNCAzMjkyLjggMTU2LjUgMzIzNSAxNTYuNVptMCAxNTIuN2MtMzUuMSAwLTUxLjgtMjcuNC01MS44LTUzLjIgMC0yNS44IDE2LjctNTMuMiA1MS44LTUzLjIgMzUuMSAwIDUxLjggMjcuOCA1MS44IDUzLjJDMzI4Ni44IDI4MS44IDMyNzAuMSAzMDkuMiAzMjM1IDMwOS4yWk0yNTUwLjIgMTU2LjVjLTExLjIgMC0xOS4xIDUuNi0yMy4xIDE2LjVsLTM0LjMgOTQuNy0zMS41LTkyLjJjLTQuNC0xMi41LTEyLjMtMTguOS0yNC4zLTE4LjktMTEuOSAwLTE5LjkgNi40LTI0LjMgMTguOWwtMzEuNSA5Mi4yLTM0LjMtOTUuNXEtNS40LTE1LjctMjIuNy0xNS43Yy02LjggMC0xMi4zIDIuNC0xNy41IDcuMy01LjIgNS4yLTEwLjggMTQuNS00LjggMjguNmw1NS44IDE0NS44YzQgMTEuMyAxMS42IDE2LjkgMjMuMSAxNi45cTE2LjcgMCAyMi43LTE2LjlsMzMuNS05MS44IDMzLjUgOTEuOHE2IDE2LjkgMjIuNyAxNi45YzExLjIgMCAxOS4xLTUuNiAyMy4xLTE2LjlsNTUuOC0xNDUuOGMzLjYtOS4zIDQuNC0xOS4zLTQuOC0yOC42QTIzIDIzIDAgMCAwIDI1NTAuMiAxNTYuNVptNDQ0LjIgODEtMjEuOS05LjNjLTExLjktNC44LTE2LjMtOC41LTE2LjMtMTUuN3EwLTEyLjEgMTYuNy0xMi4xYzEyLjcgMCAxOS41IDcuNyAyNC4zIDEwLjkgNy4yIDUuMiAxOC4zIDYuOCAyNy45LTIgMTAuOC0xMC41IDYuOC0yMy44IDEuMi0zMC42LTEyLjMtMTQuOS0zMC4zLTIyLjItNTMuOC0yMi4yLTE5LjEgMC0zNS4xIDUuMi00Ny40IDE1LjctMTIuMyAxMC41LTE4LjcgMjQuMi0xOC43IDQxLjEgMCAyNC4yIDE1LjkgNDMuNSA0Ny44IDU3LjZsMTkuNSA4LjljMTUuOSA2LjggMTkuMSA5LjcgMTkuMSAxNy43IDAgOS4zLTYuNCAxNC4xLTE5LjUgMTQuMS0xOS4xIDAtMzQuNy0xNC45LTM2LjMtMTYuMS0xMC44LTcuMy0yMS41LTItMjYuMyAyLjgtNi44IDYuNC0xMi43IDIwLjkgMy4yIDM2LjIgNi44IDYuNCAxNS41IDExLjcgMjYuNyAxNS4zYTk0LjYgOTQuNiAwIDAgMCAzMi43IDUuNmMxOS45IDAgMzYuNy01LjIgNDkuOC0xNi4xIDEzLjEtMTAuOSAxOS41LTI1LjQgMTkuNS00My41cTAtMjAuNS0xMi0zMy44QzMwMjIuNyAyNTMuMiAzMDEwLjcgMjQ0LjMgMjk5NC40IDIzNy41Wm0tMjA2LjQgNjguOWgtNjUuN1YyNzIuOWgzOS40YzEyIDAgMjEuMS04LjkgMjEuMS0yMC45IDAtMTIuMS05LjItMjAuOS0yMS4xLTIwLjloLTM5LjRWMjA0LjhoNjIuMWMxMi44IDAgMjIuNy05LjMgMjIuNy0yMi42IDAtMTcuNy0xNS41LTIyLjItMjIuNy0yMi4yaC04Ni40Yy0xOS45IDAtMjUuMSAxNy4zLTI1LjEgMjUuNFYzMjYuNWMwIDguMSA1LjIgMjUuNCAyNS4xIDI1LjRoOTBjMTIuNyAwIDIyLjctOS4zIDIyLjctMjIuNkMyODEwLjggMzExLjIgMjc5NS4yIDMwNi4zIDI3ODggMzA2LjNaTTE3OC4zIDQ5LjFjLTUwLjUgMC03NC40IDIwLjctMTE0LjYgMjguN1Y2NUEzMS44IDMxLjggMCAxIDAgMCA2NVY0NDdhMzEuOCAzMS44IDAgMCAwIDYzLjcgMFYxNDEuNGM0MC4yLTggNjQuMS0yOC43IDExNC42LTI4LjcgNjIuNSAwIDg2IDMxLjggMTQ4LjQgMzEuOCAyMC4zIDAgMzUuNC0yLjggNTUuMy05LjJ2MTkxYy0xOS45IDYuNC0zNSA5LjItNTUuMyA5LjItNjIuNSAwLTg2LjQtMzEuOC0xNDguNC0zMS44LTIwLjMgMC0zNi4yIDMuNi01MC45IDhWMzc1LjRhMTU5LjEgMTU5LjEgMCAwIDEgNTAuOS04YzYyLjUgMCA4NiAzMS44IDE0OC40IDMxLjggMzcgMCA1Ni4xLTkuNiAxMTktMzEuOFY0OS4xQzM4Mi44IDcxLjQgMzYzLjcgODAuOSAzMjYuNyA4MC45IDI2NC4yIDgwLjkgMjQwLjQgNDkuMSAxNzguMyA0OS4xWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250QXdlc29tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhBNDggNDggMCAwIDAgMCA4MFY0MzJhNDggNDggMCAwIDAgNDggNDhINDAwYTQ4IDQ4IDAgMCAwIDQ4LTQ4VjgwQTQ4IDQ4IDAgMCAwIDQwMCAzMlpNMzM2IDMxMmMtMzEuNiAxMS4yLTQxLjIgMTYtNTkuOCAxNi0zMS40IDAtNDMuMi0xNi03NC42LTE2YTgwIDgwIDAgMCAwLTI1LjYgNFYyODRhODUuOSA4NS45IDAgMCAxIDI1LjYtNGMzMS4yIDAgNDMuMiAxNiA3NC42IDE2IDEwLjIgMCAxNy44LTEuNCAyNy44LTQuNnYtOTZjLTEwIDMuMi0xNy42IDQuNi0yNy44IDQuNi0zMS40IDAtNDMuMi0xNi03NC42LTE2LTI1LjQgMC0zNy40IDEwLjQtNTcuNiAxNC40VjM1MmExNiAxNiAwIDAgMS0zMiAwVjE2MGExNiAxNiAwIDAgMSAzMiAwdjYuNGMyMC4yLTQgMzIuMi0xNC40IDU3LjYtMTQuNCAzMS4yIDAgNDMuMiAxNiA3NC42IDE2IDE4LjYgMCAyOC4yLTQuOCA1OS44LTE2WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250aWNvbnNGaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTQuNCAyMjRoOTIuNGwtMTUuMiA1MS4yaC03Ni40VjQzM2MwIDgtMi44IDkuMiA0LjQgMTBsNTkuNiA1LjZWNDgzSDB2LTM1LjJsMjkuMi0yLjhjNy4yLS44IDkuMi0zLjIgOS4yLTEwLjhWMjc4LjRjMC0zLjItNC0zLjItOC0zLjJIMFYyMjRoMzguNHYtMjguOGMwLTY4IDM2LjQtOTYgMTA2LTk2IDQ2LjggMCA4OC44IDExLjIgODguOCA3Mi40bC02OS42IDguNGMuNC0yNS42LTYtMzEuNi0yMi40LTMxLjYtMjUuMiAwLTI2IDEzLjYtMjYgMzcuNnYzMmMwIDMuMi00LjggNi0uOCA2ek0zODQgNDgzSDI0My4ydi0zNC40bDI4LTMuNmM3LjItLjggMTAuNC0yLjQgMTAuNC0xMFYyODdjMC01LjYtNC05LjItOS4yLTEwLjhsLTMzLjItOC44IDkuMi00MC40aDExMHYyMDhjMCA4LTMuNiA4LjggNCAxMGwyMS42IDMuNlY0ODN6bS0zMC0zNDcuMmwxMi40IDQ1LjYtMTAgMTAtNDIuOC0yMi44LTQyLjggMjIuOC0xMC0xMCAxMi40LTQ1LjYtMzAtMzYuNCA0LjgtMTBoMzhMMzA3LjIgNTFIMzIwbDIxLjIgMzguNGgzOGw0LjggMTMuMi0zMCAzMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250aWNvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMyem0xODcgMTQwLjljLTE4LjQgMC0xOSA5LjktMTkgMjcuNHYyMy4zYzAgMi40LTMuNSA0LjQtLjYgNC40aDY3LjRsLTExLjEgMzcuM0gxNjh2MTEyLjljMCA1LjgtMiA2LjcgMy4yIDcuM2w0My41IDQuMXYyNS4xSDg0VjM4OWwyMS4zLTJjNS4yLS42IDYuNy0yLjMgNi43LTcuOVYyNjcuN2MwLTIuMy0yLjktMi4zLTUuOC0yLjNIODRWMjI4aDI4di0yMWMwLTQ5LjYgMjYuNS03MCA3Ny4zLTcwIDM0LjEgMCA2NC43IDguMiA2NC43IDUyLjhsLTUwLjcgNi4xYy4zLTE4LjctNC40LTIzLTE2LjMtMjN6bTc0LjMgMjQxLjh2LTI1LjFsMjAuNC0yLjZjNS4yLS42IDcuNi0xLjcgNy42LTcuM1YyNzEuOGMwLTQuMS0yLjktNi43LTYuNy03LjlsLTI0LjItNi40IDYuNy0yOS41aDgwLjJ2MTUxLjdjMCA1LjgtMi42IDYuNCAyLjkgNy4zbDE1LjcgMi42djI1LjF6bTgwLjgtMjU1LjVsOSAzMy4yLTcuMyA3LjMtMzEuMi0xNi42LTMxLjIgMTYuNi03LjMtNy4zIDktMzMuMi0yMS44LTI0LjIgMy41LTkuNmgyNy43bDE1LjUtMjhoOS4zbDE1LjUgMjhoMjcuN2wzLjUgOS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb3J0QXdlc29tZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggMjM3LjRoLTIyLjJjLTIuMSAwLTMuNyAxLjYtMy43IDMuN3Y1MS43YzAgMi4xIDEuNiAzLjcgMy43IDMuN0gyMDhjMi4xIDAgMy43LTEuNiAzLjctMy43di01MS43YzAtMi4xLTEuNi0zLjctMy43LTMuN3ptMTE4LjIgMEgzMDRjLTIuMSAwLTMuNyAxLjYtMy43IDMuN3Y1MS43YzAgMi4xIDEuNiAzLjcgMy43IDMuN2gyMi4yYzIuMSAwIDMuNy0xLjYgMy43LTMuN3YtNTEuN2MtLjEtMi4xLTEuNy0zLjctMy43LTMuN3ptMTMyLTEyNS4xYy0yLjMtMy4yLTQuNi02LjQtNy4xLTkuNS05LjgtMTIuNS0yMC44LTI0LTMyLjgtMzQuNC00LjUtMy45LTkuMS03LjYtMTMuOS0xMS4yLTEuNi0xLjItMy4yLTIuMy00LjgtMy41QzM3MiAzNC4xIDM0MC4zIDIwIDMwNiAxM2MtMTYuMi0zLjMtMzIuOS01LTUwLTVzLTMzLjkgMS43LTUwIDVjLTM0LjMgNy4xLTY2IDIxLjItOTMuMyA0MC44LTEuNiAxLjEtMy4yIDIuMy00LjggMy41LTQuOCAzLjYtOS40IDcuMy0xMy45IDExLjItMyAyLjYtNS45IDUuMy04LjggOHMtNS43IDUuNS04LjQgOC40Yy01LjUgNS43LTEwLjcgMTEuOC0xNS42IDE4LTIuNCAzLjEtNC44IDYuMy03LjEgOS41QzI1LjIgMTUzIDguMyAyMDIuNSA4LjMgMjU2YzAgMiAuMSA0IC4xIDYgLjEuNy4xIDEuMy4xIDIgLjEgMS4zLjEgMi43LjIgNCAwIC44LjEgMS41LjEgMi4zIDAgMS4zLjEgMi41LjIgMy43LjEuOC4xIDEuNi4yIDIuNC4xIDEuMS4yIDIuMy4zIDMuNSAwIC44LjEgMS42LjIgMi40LjEgMS4yLjMgMi40LjQgMy42LjEuOC4yIDEuNS4zIDIuMy4xIDEuMy4zIDIuNi41IDMuOS4xLjYuMiAxLjMuMyAxLjlsLjkgNS43Yy4xLjYuMiAxLjEuMyAxLjcuMyAxLjMuNSAyLjcuOCA0IC4yLjguMyAxLjYuNSAyLjQuMiAxIC41IDIuMS43IDMuMi4yLjkuNCAxLjcuNiAyLjYuMiAxIC40IDIgLjcgMyAuMi45LjUgMS44LjcgMi43LjMgMSAuNSAxLjkuOCAyLjkuMy45LjUgMS44LjggMi43LjIuOS41IDEuOS44IDIuOHMuNSAxLjguOCAyLjdjLjMgMSAuNiAxLjkuOSAyLjguNiAxLjYgMS4xIDMuMyAxLjcgNC45LjQgMSAuNyAxLjkgMSAyLjguMyAxIC43IDIgMS4xIDMgLjMuOC42IDEuNS45IDIuM2wxLjIgM2MuMy43LjYgMS41LjkgMi4yLjQgMSAuOSAyIDEuMyAzbC45IDIuMWMuNSAxIC45IDIgMS40IDMgLjMuNy42IDEuMy45IDIgLjUgMSAxIDIuMSAxLjUgMy4xLjIuNi41IDEuMS44IDEuNy42IDEuMSAxLjEgMi4yIDEuNyAzLjMuMS4yLjIuMy4zLjUgMi4yIDQuMSA0LjQgOC4yIDYuOCAxMi4yLjIuNC41LjguNyAxLjIuNyAxLjEgMS4zIDIuMiAyIDMuMy4zLjUuNi45LjkgMS40LjYgMS4xIDEuMyAyLjEgMiAzLjIuMy41LjYuOS45IDEuNC43IDEuMSAxLjQgMi4xIDIuMSAzLjIuMi40LjUuOC44IDEuMi43IDEuMSAxLjUgMi4yIDIuMyAzLjMuMi4yLjMuNS41LjcgMzcuNSA1MS43IDk0LjQgODguNSAxNjAgOTkuNC45LjEgMS43LjMgMi42LjQgMSAuMiAyLjEuNCAzLjEuNXMxLjkuMyAyLjguNGMxIC4yIDIgLjMgMyAuNC45LjEgMS45LjIgMi45LjNzMS45LjIgMi45LjMgMi4xLjIgMy4xLjNjLjkuMSAxLjguMSAyLjcuMiAxLjEuMSAyLjMuMSAzLjQuMi44IDAgMS43LjEgMi41LjEgMS4zIDAgMi42LjEgMy45LjEuNy4xIDEuNC4xIDIuMS4xIDIgLjEgNCAuMSA2IC4xczQtLjEgNi0uMWMuNyAwIDEuNC0uMSAyLjEtLjEgMS4zIDAgMi42IDAgMy45LS4xLjggMCAxLjctLjEgMi41LS4xIDEuMS0uMSAyLjMtLjEgMy40LS4yLjkgMCAxLjgtLjEgMi43LS4yIDEtLjEgMi4xLS4yIDMuMS0uM3MxLjktLjIgMi45LS4zYy45LS4xIDEuOS0uMiAyLjktLjNzMi0uMyAzLS40IDEuOS0uMyAyLjgtLjRjMS0uMiAyLjEtLjMgMy4xLS41LjktLjEgMS43LS4zIDIuNi0uNCA2NS42LTExIDEyMi41LTQ3LjcgMTYwLjEtMTAyLjQuMi0uMi4zLS41LjUtLjcuOC0xLjEgMS41LTIuMiAyLjMtMy4zLjItLjQuNS0uOC44LTEuMi43LTEuMSAxLjQtMi4xIDIuMS0zLjIuMy0uNS42LS45LjktMS40LjYtMS4xIDEuMy0yLjEgMi0zLjIuMy0uNS42LS45LjktMS40LjctMS4xIDEuMy0yLjIgMi0zLjMuMi0uNC41LS44LjctMS4yIDIuNC00IDQuNi04LjEgNi44LTEyLjIuMS0uMi4yLS4zLjMtLjUuNi0xLjEgMS4xLTIuMiAxLjctMy4zLjItLjYuNS0xLjEuOC0xLjcuNS0xIDEtMi4xIDEuNS0zLjEuMy0uNy42LTEuMy45LTIgLjUtMSAxLTIgMS40LTNsLjktMi4xYy41LTEgLjktMiAxLjMtMyAuMy0uNy42LTEuNS45LTIuMmwxLjItM2MuMy0uOC42LTEuNS45LTIuMy40LTEgLjctMiAxLjEtM3MuNy0xLjkgMS0yLjhjLjYtMS42IDEuMi0zLjMgMS43LTQuOS4zLTEgLjYtMS45LjktMi44cy41LTEuOC44LTIuN2MuMi0uOS41LTEuOS44LTIuOHMuNi0xLjguOC0yLjdjLjMtMSAuNS0xLjkuOC0yLjkuMi0uOS41LTEuOC43LTIuNy4yLTEgLjUtMiAuNy0zIC4yLS45LjQtMS43LjYtMi42LjItMSAuNS0yLjEuNy0zLjIuMi0uOC4zLTEuNi41LTIuNC4zLTEuMy42LTIuNy44LTQgLjEtLjYuMi0xLjEuMy0xLjdsLjktNS43Yy4xLS42LjItMS4zLjMtMS45LjEtMS4zLjMtMi42LjUtMy45LjEtLjguMi0xLjUuMy0yLjMuMS0xLjIuMy0yLjQuNC0zLjYgMC0uOC4xLTEuNi4yLTIuNC4xLTEuMS4yLTIuMy4zLTMuNS4xLS44LjEtMS42LjItMi40LjEgMS43LjEuNS4yLS43IDAtLjguMS0xLjUuMS0yLjMuMS0xLjMuMi0yLjcuMi00IC4xLS43LjEtMS4zLjEtMiAuMS0yIC4xLTQgLjEtNiAwLTUzLjUtMTYuOS0xMDMtNDUuOC0xNDMuN3pNNDQ4IDM3MS41Yy05LjQgMTUuNS0yMC42IDI5LjktMzMuNiA0Mi45LTIwLjYgMjAuNi00NC41IDM2LjctNzEuMiA0OC0xMy45IDUuOC0yOC4yIDEwLjMtNDIuOSAxMy4ydi03NS44YzAtNTguNi04OC42LTU4LjYtODguNiAwdjc1LjhjLTE0LjctMi45LTI5LTcuMy00Mi45LTEzLjItMjYuNy0xMS4zLTUwLjYtMjcuNC03MS4yLTQ4LTEzLTEzLTI0LjItMjcuNC0zMy42LTQyLjl2LTcxLjNjMC0yLjEgMS42LTMuNyAzLjctMy43aDIyLjFjMi4xIDAgMy43IDEuNiAzLjcgMy43VjMyNmgyOS42VjE4MmMwLTIuMSAxLjYtMy43IDMuNy0zLjdoMjIuMWMyLjEgMCAzLjcgMS42IDMuNyAzLjd2MjUuOWgyOS41VjE4MmMwLTIuMSAxLjYtMy43IDMuNy0zLjdIMjA4YzIuMSAwIDMuNyAxLjYgMy43IDMuN3YyNS45aDI5LjVWMTgyYzAtNC44IDYuNS0zLjcgOS41LTMuN1Y4OC4xYy00LjQtMi03LjQtNi43LTcuNC0xMS41IDAtMTYuOCAyNS40LTE2LjggMjUuNCAwIDAgNC44LTMgOS40LTcuNCAxMS41VjkyYzYuMy0xLjQgMTIuNy0yLjMgMTkuMi0yLjMgOS40IDAgMTguNCAzLjUgMjYuMyAzLjUgNy4yIDAgMTUuMi0zLjUgMTkuNC0zLjUgMi4xIDAgMy43IDEuNiAzLjcgMy43djQ4LjRjMCA1LjYtMTguNyA2LjUtMjIuNCA2LjUtOC42IDAtMTYuNi0zLjUtMjUuNC0zLjUtNyAwLTE0LjEgMS4yLTIwLjggMi44djMwLjdjMyAwIDkuNS0xLjEgOS41IDMuN3YyNS45aDI5LjVWMTgyYzAtMi4xIDEuNi0zLjcgMy43LTMuN2gyMi4yYzIuMSAwIDMuNyAxLjYgMy43IDMuN3YyNS45aDI5LjVWMTgyYzAtMi4xIDEuNi0zLjcgMy43LTMuN2gyMi4xYzIuMSAwIDMuNyAxLjYgMy43IDMuN3YxNDRoMjkuNXYtMjUuOGMwLTIuMSAxLjYtMy43IDMuNy0zLjdoMjIuMmMyLjEgMCAzLjcgMS42IDMuNyAzLjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvcnRBd2Vzb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OS4yIDI4Ny45aC0yNy40Yy0yLjYgMC00LjYgMi00LjYgNC42djMyaC0zNi42VjE0Ni4yYzAtMi42LTItNC42LTQuNi00LjZoLTI3LjRjLTIuNiAwLTQuNiAyLTQuNiA0LjZ2MzJoLTM2LjZ2LTMyYzAtMi42LTItNC42LTQuNi00LjZoLTI3LjRjLTIuNiAwLTQuNiAyLTQuNiA0LjZ2MzJoLTM2LjZ2LTMyYzAtNi04LTQuNi0xMS43LTQuNnYtMzhjOC4zLTIgMTcuMS0zLjQgMjUuNy0zLjQgMTAuOSAwIDIwLjkgNC4zIDMxLjQgNC4zIDQuNiAwIDI3LjctMS4xIDI3LjctOHYtNjBjMC0yLjYtMi00LjYtNC42LTQuNi01LjEgMC0xNS4xIDQuMy0yNCA0LjMtOS43IDAtMjAuOS00LjMtMzIuNi00LjMtOCAwLTE2IDEuMS0yMy43IDIuOXYtNC45YzUuNC0yLjYgOS4xLTguMyA5LjEtMTQuMyAwLTIwLjctMzEuNC0yMC44LTMxLjQgMCAwIDYgMy43IDExLjcgOS4xIDE0LjN2MTExLjdjLTMuNyAwLTExLjctMS40LTExLjcgNC42djMyaC0zNi42di0zMmMwLTIuNi0yLTQuNi00LjYtNC42aC0yNy40Yy0yLjYgMC00LjYgMi00LjYgNC42djMySDEyOHYtMzJjMC0yLjYtMi00LjYtNC42LTQuNkg5NmMtMi42IDAtNC42IDItNC42IDQuNnYxNzguM0g1NC44di0zMmMwLTIuNi0yLTQuNi00LjYtNC42SDIyLjhjLTIuNiAwLTQuNiAyLTQuNiA0LjZWNTEyaDE4Mi45di05NmMwLTcyLjYgMTA5LjctNzIuNiAxMDkuNyAwdjk2aDE4Mi45VjI5Mi41Yy4xLTIuNi0xLjktNC42LTQuNS00LjZ6bS0yODguMS00LjVjMCAyLjYtMiA0LjYtNC42IDQuNmgtMjcuNGMtMi42IDAtNC42LTItNC42LTQuNnYtNjRjMC0yLjYgMi00LjYgNC42LTQuNmgyNy40YzIuNiAwIDQuNiAyIDQuNiA0LjZ2NjR6bTE0Ni40IDBjMCAyLjYtMiA0LjYtNC42IDQuNmgtMjcuNGMtMi42IDAtNC42LTItNC42LTQuNnYtNjRjMC0yLjYgMi00LjYgNC42LTQuNmgyNy40YzIuNiAwIDQuNiAyIDQuNiA0LjZ2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvcnVtYmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuOCAzMDkuN0MyIDI5Mi43IDAgMjc1LjUgMCAyNTguMyAwIDEzNSA5OS44IDM1IDIyMy4xIDM1YzE2LjYgMCAzMy4zIDIgNDkuMyA1LjVDMTQ5IDg3LjUgNTEuOSAxODYgNS44IDMwOS43em0zOTIuOS0xODkuMkMzODUgMTAzIDM2OSA4Ny44IDM1MC45IDc1LjJjLTE0OS42IDQ0LjMtMjY2LjMgMTYyLjEtMzA5LjcgMzEyIDEyLjUgMTguMSAyOCAzNS42IDQ1LjIgNDkgNDMuMS0xNTEuMyAxNjEuMi0yNzEuNyAzMTIuMy0zMTUuN3ptMTUuOCAyNTIuN2MxNS4yLTI1LjEgMjUuNC01My43IDI5LjUtODIuOC03OS40IDQyLjktMTQ1IDExMC42LTE4Ny42IDE5MC4zIDMwLTQuNCA1OC45LTE1LjMgODQuNi0zMS4zIDM1IDEzLjEgNzAuOSAyNC4zIDEwNyAzMy42LTkuMy0zNi41LTIwLjQtNzQuNS0zMy41LTEwOS44em0yOS43LTE0NS41Yy0yLjYtMTkuNS03LjktMzguNy0xNS44LTU2LjhDMjkwLjUgMjE2LjcgMTgyIDMyNy41IDEzNy4xIDQ2NmMxOC4xIDcuNiAzNyAxMi41IDU2LjYgMTUuMkMyNDAgMzY3LjEgMzMwLjUgMjc0LjQgNDQ0LjIgMjI3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvdXJzcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM2OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIzLjEgM0g0OS45QzEyLjQgMyAwIDMxLjMgMCA0OS4xdjQzMy44YzAgMjAuMyAxMi4xIDI3LjcgMTguMiAzMC4xIDYuMiAyLjUgMjIuOCA0LjYgMzIuOS03LjFDMTgwIDM1Ni41IDE4Mi4yIDM1NCAxODIuMiAzNTRjMy4xLTMuNCAzLjQtMy4xIDYuOC0zLjFoODMuNGMzNS4xIDAgNDAuNi0yNS4yIDQ0LjMtMzkuN2w0OC42LTI0M0MzNzMuOCAyNS44IDM2My4xIDMgMzIzLjEgM3ptLTE2LjMgNzMuOGwtMTEuNCA1OS43Yy0xLjIgNi41LTkuNSAxMy4yLTE2LjkgMTMuMkgxNzIuMWMtMTIgMC0yMC42IDguMy0yMC42IDIwLjN2MTNjMCAxMiA4LjYgMjAuNiAyMC42IDIwLjZoOTAuNGM4LjMgMCAxNi42IDkuMiAxNC44IDE4LjItMS44IDguOS0xMC41IDUzLjgtMTEuNCA1OC44LS45IDQuOS02LjggMTMuNS0xNi45IDEzLjVoLTczLjVjLTEzLjUgMC0xNy4yIDEuOC0yNi41IDEyLjYgMCAwLTguOSAxMS40LTg5LjUgMTA4LjMtLjkuOS0xLjguNi0xLjgtLjNWNzUuOWMwLTcuNyA2LjgtMTYuNiAxNi42LTE2LjZoMjE5YzguMiAwIDE1LjYgNy43IDEzLjUgMTcuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnJlZUNvZGVDYW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk3LjIyLDk2LjIxYzEwLjM2LTEwLjY1LDE2LTE3LjEyLDE2LTIxLjksMC0yLjc2LTEuOTItNS41MS0zLjgzLTcuNDJBMTQuODEsMTQuODEsMCwwLDAsMTAxLDY0LjA1Yy04LjQ4LDAtMjAuOTIsOC43OS0zNS44NCwyNS42OUMyMy42OCwxMzcsMi41MSwxODIuODEsMy4zNywyNTAuMzRzMTcuNDcsMTE3LDU0LjA2LDE2MS44N0M3Ni4yMiw0MzUuODYsOTAuNjIsNDQ4LDEwMC45LDQ0OGExMy41NSwxMy41NSwwLDAsMCw4LjM3LTMuODRjMS45MS0yLjc2LDMuODEtNS42MywzLjgxLTguMzgsMC01LjYzLTMuODYtMTIuMi0xMy4yLTIwLjU1LTQ0LjQ1LTQyLjMzLTY3LjMyLTk3LTY3LjQ4LTE2NUMzMi4yNSwxODguOCw1NCwxMzcuODMsOTcuMjIsOTYuMjFaTTIzOS40Nyw0MjAuMDdjLjU4LjM3LjkxLjU1LjkxLjU1Wm05My43OS41NS4xNy0uMTNDMzMzLjI0LDQyMC42MiwzMzMuMTcsNDIwLjY3LDMzMy4yNiw0MjAuNjJabTMuMTMtMTU4LjE4Yy0xNi4yNC00LjE1LDUwLjQxLTgyLjg5LTY4LjA1LTE3Ny4xNywwLDAsMTUuNTQsNDkuMzgtNjIuODMsMTU5LjU3LTc0LjI3LDEwNC4zNSwyMy40NiwxNjguNzMsMzQsMTc1LjIzLTYuNzMtNC4zNS00Ny40LTM1LjcsOS41NS0xMjguNjQsMTEtMTguMywyNS41My0zNC44Nyw0My41LTcyLjE2LDAsMCwxNS45MSwyMi40NSw3LjYsNzEuMTNDMjg3LjcsMzY0LDM1NCwzNDIuOTEsMzU1LDM0My45NGMyMi43NSwyNi43OC0xNy43Miw3My41MS0yMS41OCw3Ni41NSw1LjQ5LTMuNjUsMTE3LjcxLTc4LDMzLTE4OC4xQzM2MC40MywyMzguNCwzNTIuNjIsMjY2LjU5LDMzNi4zOSwyNjIuNDRaTTUxMC44OCw4OS42OUM0OTYsNzIuNzksNDgzLjUyLDY0LDQ3NSw2NGExNC44MSwxNC44MSwwLDAsMC04LjM5LDIuODRjLTEuOTEsMS45MS0zLjgzLDQuNjYtMy44Myw3LjQyLDAsNC43OCw1LjYsMTEuMjYsMTYsMjEuOSw0My4yMyw0MS42MSw2NSw5Mi41OSw2NC44MiwxNTQuMDYtLjE2LDY4LTIzLDEyMi42My02Ny40OCwxNjUtOS4zNCw4LjM1LTEzLjE4LDE0LjkyLTEzLjIsMjAuNTUsMCwyLjc1LDEuOSw1LjYyLDMuODEsOC4zOEExMy42MSwxMy42MSwwLDAsMCw0NzUuMSw0NDhjMTAuMjgsMCwyNC42OC0xMi4xMyw0My40Ny0zNS43OSwzNi41OS00NC44NSw1My4xNC05NC4zOCw1NC4wNi0xNjEuODdTNTUyLjMyLDEzNyw1MTAuODgsODkuNjlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZyZWVic2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAzLjcgOTYuMmMxMS4xLTExLjEgMTE1LjUtNzcgMTM5LjItNTMuMiAyMy43IDIzLjctNDIuMSAxMjguMS01My4yIDEzOS4yLTExLjEgMTEuMS0zOS40LjktNjMuMS0yMi45LTIzLjgtMjMuNy0zNC4xLTUyLTIyLjktNjMuMXpNMTA5LjkgNjguMUM3My42IDQ3LjUgMjIgMjQuNiA1LjYgNDEuMWMtMTYuNiAxNi42IDcuMSA2OS40IDI3LjkgMTA1LjcgMTguNS0zMi4yIDQ0LjgtNTkuMyA3Ni40LTc4Ljd6TTQwNi43IDE3NGMzLjMgMTEuMyAyLjcgMjAuNy0yLjcgMjYuMS0yMC4zIDIwLjMtODcuNS0yNy0xMDkuMy03MC4xLTE4LTMyLjMtMTEuMS01My40IDE0LjktNDguNyA1LjctMy42IDEyLjMtNy42IDE5LjYtMTEuNi0yOS44LTE1LjUtNjMuNi0yNC4zLTk5LjUtMjQuMy0xMTkuMSAwLTIxNS42IDk2LjUtMjE1LjYgMjE1LjYgMCAxMTkgOTYuNSAyMTUuNiAyMTUuNiAyMTUuNlM0NDUuMyAzODAuMSA0NDUuMyAyNjFjMC0zOC40LTEwLjEtNzQuNS0yNy43LTEwNS44LTMuOSA3LTcuNiAxMy4zLTEwLjkgMTguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnVsY3J1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NS43NSAxNjQuMTRsLTM1LjM4IDQzLjU1TDI1IDE2NC4xNGwzNS4zOC00My41NXpNMTQ0LjIzIDBsLTIwLjU0IDE5OC4xOEw3Mi43MiAyNTZsNTEgNTcuODJMMTQ0LjIzIDUxMlYzMDAuODlMMTAzLjE1IDI1Nmw0MS4wOC00NC44OXptNzkuNjcgMTY0LjE0bDM1LjM4IDQzLjU1IDM1LjM4LTQzLjU1LTM1LjM4LTQzLjU1em0tNDguNDggNDdMMjE2LjUgMjU2bC00MS4wOCA0NC44OVY1MTJMMTk2IDMxMy44MiAyNDcgMjU2bC01MS01Ny44MkwxNzUuNDIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2FsYWN0aWNSZXB1YmxpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggNTA0QzExMS4yNSA1MDQgMCAzOTIuNzUgMCAyNTZTMTExLjI1IDggMjQ4IDhzMjQ4IDExMS4yNSAyNDggMjQ4LTExMS4yNSAyNDgtMjQ4IDI0OHptMC00NzkuNDdDMTIwLjM3IDI0LjUzIDE2LjUzIDEyOC4zNyAxNi41MyAyNTZTMTIwLjM3IDQ4Ny40NyAyNDggNDg3LjQ3IDQ3OS40NyAzODMuNjMgNDc5LjQ3IDI1NiAzNzUuNjMgMjQuNTMgMjQ4IDI0LjUzem0yNy42MiAyMS44MXYyNC42MmExODUuOTMzIDE4NS45MzMgMCAwIDEgODMuNTcgMzQuNTRsMTcuMzktMTcuMzZjLTI4Ljc1LTIyLjA2LTYzLjMtMzYuODktMTAwLjk2LTQxLjh6bS01NS4zNy4wN2MtMzcuNjQgNC45NC03Mi4xNiAxOS44LTEwMC44OCA0MS44NWwxNy4yOCAxNy4zNmguMDhjMjQuMDctMTcuODQgNTIuNTUtMzAuMDYgODMuNTItMzQuNjdWNDYuNDF6bTEyLjI1IDUwLjE3djgyLjg3Yy0xMC4wNCAyLjAzLTE5LjQyIDUuOTQtMjcuNjcgMTEuNDJsLTU4LjYyLTU4LjU5LTIxLjkzIDIxLjkzIDU4LjY3IDU4LjY3Yy01LjQ3IDguMjMtOS40NSAxNy41OS0xMS40NyAyNy42MmgtODIuOXYzMWg4Mi45YzIuMDIgMTAuMDIgNi4wMSAxOS4zMSAxMS40NyAyNy41NGwtNTguNjcgNTguNjkgMjEuOTMgMjEuOTMgNTguNjItNTguNjJhNzcuODczIDc3Ljg3MyAwIDAgMCAyNy42NyAxMS40N3Y4Mi45aDMxdi04Mi45YzEwLjA1LTIuMDMgMTkuMzctNi4wNiAyNy42Mi0xMS41NWw1OC42NyA1OC42OSAyMS45My0yMS45My01OC42Ny01OC42OWM1LjQ2LTguMjMgOS40Ny0xNy41MiAxMS41LTI3LjU0aDgyLjg3di0zMWgtODIuODdjLTIuMDItMTAuMDItNi4wMy0xOS4zOC0xMS41LTI3LjYybDU4LjY3LTU4LjY3LTIxLjkzLTIxLjkzLTU4LjY3IDU4LjY3Yy04LjI1LTUuNDktMTcuNTctOS40Ny0yNy42Mi0xMS41Vjk2LjU4aC0zMXptMTgzLjI0IDMwLjcybC0xNy4zNiAxNy4zNmExODYuMzM3IDE4Ni4zMzcgMCAwIDEgMzQuNjcgODMuNjdoMjQuNjJjLTQuOTUtMzcuNjktMTkuODMtNzIuMjktNDEuOTMtMTAxLjAzem0tMzM1LjU1LjEzYy0yMi4wNiAyOC43Mi0zNi45MSA2My4yNi00MS44NSAxMDAuOTFoMjQuNjVjNC42LTMwLjk2IDE2Ljc2LTU5LjQ1IDM0LjU5LTgzLjUybC0xNy4zOS0xNy4zOXpNMzguMzQgMjgzLjY3YzQuOTIgMzcuNjQgMTkuNzUgNzIuMTggNDEuOCAxMDAuOWwxNy4zNi0xNy4zOWMtMTcuODEtMjQuMDctMjkuOTItNTIuNTctMzQuNTEtODMuNTJIMzguMzR6bTM5NC43IDBjLTQuNjEgMzAuOTktMTYuOCA1OS41LTM0LjY3IDgzLjZsMTcuMzYgMTcuMzZjMjIuMDgtMjguNzQgMzYuOTgtNjMuMjkgNDEuOTMtMTAwLjk2aC0yNC42MnpNMTM2LjY2IDQwNi4zOGwtMTcuMzYgMTcuMzZjMjguNzMgMjIuMDkgNjMuMyAzNi45OCAxMDAuOTYgNDEuOTN2LTI0LjY0Yy0zMC45OS00LjYzLTU5LjUzLTE2Ljc5LTgzLjYtMzQuNjV6bTIyMi41My4wNWMtMjQuMDkgMTcuODQtNTIuNTggMzAuMDgtODMuNTcgMzQuNjd2MjQuNTdjMzcuNjctNC45MiA3Mi4yMS0xOS43OSAxMDAuOTYtNDEuODVsLTE3LjMxLTE3LjM5aC0uMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdhbGFjdGljU2VuYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OS44NiAzMy40OHYyNi4wN0MyMzYuMjggODAuMTcgMjI2IDE2OC4xNCAyMjUuMzkgMjc0LjljMTEuNzQtMTUuNjIgMTkuMTMtMzMuMzMgMTkuMTMtNDguMjR2LTE2Ljg4Yy0uMDMtNS4zMi43NS0xMC41MyAyLjE5LTE1LjY1LjY1LTIuMTQgMS4zOS00LjA4IDIuNjItNS44MiAxLjIzLTEuNzUgMy40My0zLjc5IDYuNjgtMy43OSAzLjI0IDAgNS40NSAyLjA1IDYuNjggMy43OSAxLjIzIDEuNzUgMS45NyAzLjY4IDIuNjIgNS44MiAxLjQ0IDUuMTIgMi4yMiAxMC4zMyAyLjE5IDE1LjY1djE2Ljg4YzAgMTQuOTEgNy4zOSAzMi42MiAxOS4xMyA0OC4yNC0uNjMtMTA2Ljc2LTEwLjkxLTE5NC43My0yNC40OS0yMTUuMzVWMzMuNDhoLTEyLjI4em0tMjYuMzQgMTQ3Ljc3Yy05LjUyIDIuMTUtMTguNyA1LjE5LTI3LjQ2IDkuMDggOC45IDE2LjEyIDkuNzYgMzIuNjQgMS43MSAzNy4yOS04IDQuNjItMjEuODUtNC4yMy0zMS4zNi0xOS44Mi0xMS41OCA4Ljc5LTIxLjg4IDE5LjMyLTMwLjU2IDMxLjA5IDE0LjczIDkuNjIgMjIuODkgMjIuOTIgMTguMzIgMzAuNjYtNC41NCA3LjctMjAuMDMgNy4xNC0zNS40Ny0uOTYtNS43OCAxMy4yNS05Ljc1IDI3LjUxLTExLjY1IDQyLjQyIDkuNjguMTggMTguNjcgMi4zOCAyNi4xOCA2LjA0IDE3Ljc4LS4zIDMyLjc3LTEuOTYgNDAuNDktNC4yMiA1LjU1LTI2LjM1IDIzLjAyLTQ4LjIzIDQ2LjMyLTU5LjUxLjczLTI1LjU1IDEuODgtNDkuNjcgMy40OC03Mi4wN3ptNjQuOTYgMGMxLjU5IDIyLjQgMi43NSA0Ni41MiAzLjQ3IDcyLjA3IDIzLjI5IDExLjI4IDQwLjc3IDMzLjE2IDQ2LjMyIDU5LjUxIDcuNzIgMi4yNiAyMi43MSAzLjkyIDQwLjQ5IDQuMjIgNy41MS0zLjY2IDE2LjUtNS44NSAyNi4xOC02LjA0LTEuOS0xNC45MS01Ljg2LTI5LjE3LTExLjY1LTQyLjQyLTE1LjQ0IDguMS0zMC45MyA4LjY2LTM1LjQ3Ljk2LTQuNTctNy43NCAzLjYtMjEuMDUgMTguMzItMzAuNjYtOC42OC0xMS43Ny0xOC45OC0yMi4zLTMwLjU2LTMxLjA5LTkuNTEgMTUuNTktMjMuMzYgMjQuNDQtMzEuMzYgMTkuODItOC4wNS00LjY1LTcuMTktMjEuMTYgMS43MS0zNy4yOWExNDcuNDkgMTQ3LjQ5IDAgMCAwLTI3LjQ1LTkuMDh6bS0zMi40OCA4LjZjLTMuMjMgMC01Ljg2IDguODEtNi4wOSAxOS45M2gtLjA1djE2Ljg4YzAgNDEuNDItNDkuMDEgOTUuMDQtOTMuNDkgOTUuMDQtNTIgMC0xMjIuNzUtMS40NS0xNTYuMzcgMjkuMTd2Mi41MWM5LjQyIDE3LjEyIDIwLjU4IDMzLjE3IDMzLjE4IDQ3Ljk3QzQ1LjcgMzgwLjI2IDg0Ljc3IDM2MC40IDE0MS4yIDM2MGM0NS42OCAxLjAyIDc5LjAzIDIwLjMzIDkwLjc2IDQwLjg3LjAxLjAxLS4wMS4wNCAwIC4wNSA3LjY3IDIuMTQgMTUuODUgMy4yMyAyNC4wNCAzLjIxIDguMTkuMDIgMTYuMzctMS4wNyAyNC4wNC0zLjIxLjAxLS4wMS0uMDEtLjA0IDAtLjA1IDExLjc0LTIwLjU0IDQ1LjA4LTM5Ljg1IDkwLjc2LTQwLjg3IDU2LjQzLjM5IDk1LjQ5IDIwLjI2IDEwOC4wMiA0MS4zNSAxMi42LTE0LjggMjMuNzYtMzAuODYgMzMuMTgtNDcuOTd2LTIuNTFjLTMzLjYxLTMwLjYyLTEwNC4zNy0yOS4xNy0xNTYuMzctMjkuMTctNDQuNDggMC05My40OS01My42Mi05My40OS05NS4wNHYtMTYuODhoLS4wNWMtLjIzLTExLjEyLTIuODYtMTkuOTMtNi4wOS0xOS45M3ptMCA5Ni41OWMyMi40MiAwIDQwLjYgMTguMTggNDAuNiA0MC42cy0xOC4xOCA0MC42NS00MC42IDQwLjY1LTQwLjYtMTguMjMtNDAuNi00MC42NWMwLTIyLjQyIDE4LjE4LTQwLjYgNDAuNi00MC42em0wIDcuNjRjLTE4LjE5IDAtMzIuOTYgMTQuNzctMzIuOTYgMzIuOTZTMjM3LjgxIDM2MCAyNTYgMzYwczMyLjk2LTE0Ljc3IDMyLjk2LTMyLjk2LTE0Ljc3LTMyLjk2LTMyLjk2LTMyLjk2em0wIDYuMTRjMTQuODEgMCAyNi44MiAxMi4wMSAyNi44MiAyNi44MnMtMTIuMDEgMjYuODItMjYuODIgMjYuODItMjYuODItMTIuMDEtMjYuODItMjYuODIgMTIuMDEtMjYuODIgMjYuODItMjYuODJ6bS0xMTQuOCA2Ni42N2MtMTAuMTkuMDctMjEuNi4zNi0zMC41IDEuNjYuNDMgNC40MiAxLjUxIDE4LjYzIDcuMTEgMjkuNzYgOS4xMS0yLjU2IDE4LjM2LTMuOSAyNy42Mi0zLjkgNDEuMjguOTQgNzEuNDggMzQuMzUgNzguMjYgNzQuNDdsLjExIDQuN2MxMC40IDEuOTEgMjEuMTkgMi45NCAzMi4yMSAyLjk0IDExLjAzIDAgMjEuODEtMS4wMiAzMi4yMS0yLjk0bC4xMS00LjdjNi43OC00MC4xMiAzNi45OC03My41MyA3OC4yNi03NC40NyA5LjI2IDAgMTguNTEgMS4zNCAyNy42MiAzLjkgNS42LTExLjEzIDYuNjgtMjUuMzQgNy4xMS0yOS43Ni04LjktMS4zLTIwLjMyLTEuNTgtMzAuNS0xLjY2LTE4Ljc2LjQyLTM1LjE5IDQuMTctNDguNjEgOS42Ny0xMi41NCAxNi4wMy0yOS4xNiAzMC4wMy00OS41OCAzMy4wNy0uMDkuMDItLjE3LjA0LS4yNy4wNS0uMDUuMDEtLjExLjA0LS4xNi4wNS01LjI0IDEuMDctMTAuNjMgMS42LTE2LjE5IDEuNi01LjU1IDAtMTAuOTUtLjUzLTE2LjE5LTEuNi0uMDUtLjAxLS4xMS0uMDQtLjE2LS4wNS0uMS0uMDItLjE3LS4wNC0uMjctLjA1LTIwLjQyLTMuMDMtMzcuMDMtMTcuMDQtNDkuNTgtMzMuMDctMTMuNDItNS40OS0yOS44Ni05LjI1LTQ4LjYxLTkuNjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdldFBvY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcuNiA2NGgtMzY3QzE4LjUgNjQgMCA4Mi41IDAgMTA0LjZ2MTM1LjJDMCAzNjQuNSA5OS43IDQ2NCAyMjQuMiA0NjRjMTI0IDAgMjIzLjgtOTkuNSAyMjMuOC0yMjQuMlYxMDQuNmMwLTIyLjQtMTcuNy00MC42LTQwLjQtNDAuNnptLTE2MiAyNjguNWMtMTIuNCAxMS44LTMxLjQgMTEuMS00Mi40IDBDODkuNSAyMjMuNiA4OC4zIDIyNy40IDg4LjMgMjA5LjNjMC0xNi45IDEzLjgtMzAuNyAzMC43LTMwLjcgMTcgMCAxNi4xIDMuOCAxMDUuMiA4OS4zIDkwLjYtODYuOSA4OC42LTg5LjMgMTA1LjUtODkuMyAxNi45IDAgMzAuNyAxMy44IDMwLjcgMzAuNyAwIDE3LjgtMi45IDE1LjctMTE0LjggMTIzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdnQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NyA4QzEyMCA4IDkgMTE5IDkgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzk0IDggMjU3IDh6bS00OS41IDM3NC44TDgxLjggMjU3LjFsMTI1LjctMTI1LjcgMzUuMiAzNS40LTI0LjIgMjQuMi0xMS4xLTExLjEtNzcuMiA3Ny4yIDc3LjIgNzcuMiAyNi42LTI2LjYtNTMuMS01Mi45IDI0LjQtMjQuNCA3Ny4yIDc3LjItNzUgNzUuMnptOTktMi4ybC0zNS4yLTM1LjIgMjQuMS0yNC40IDExLjEgMTEuMSA3Ny4yLTc3LjItNzcuMi03Ny4yLTI2LjUgMjYuNSA1My4xIDUyLjktMjQuNCAyNC40LTc3LjItNzcuMiA3NS03NUw0MzIuMiAyNTUgMzA2LjUgMzgwLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3OS4yIDIzMC40bDEwMi40IDEwMi40LTEwMi40IDEwMi40TDAgMjU2IDE3OS4yIDc2LjhsNDQuOCA0NC44LTI1LjYgMjUuNi0xOS4yLTE5LjItMTI4IDEyOCAxMjggMTI4IDUxLjUtNTEuNS03Ny4xLTc2LjUgMjUuNi0yNS42ek0zMzIuOCA3Ni44TDIzMC40IDE3OS4ybDEwMi40IDEwMi40IDI1LjYtMjUuNi03Ny4xLTc2LjUgNTEuNS01MS41IDEyOCAxMjgtMTI4IDEyOC0xOS4yLTE5LjItMjUuNiAyNS42IDQ0LjggNDQuOEw1MTIgMjU2IDMzMi44IDc2Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzkuNTUgMjM2LjA1TDI0NCA0MC40NWEyOC44NyAyOC44NyAwIDAgMC00MC44MSAwbC00MC42NiA0MC42MyA1MS41MiA1MS41MmMyNy4wNi05LjE0IDUyLjY4IDE2Ljc3IDQzLjM5IDQzLjY4bDQ5LjY2IDQ5LjY2YzM0LjIzLTExLjggNjEuMTggMzEgMzUuNDcgNTYuNjktMjYuNDkgMjYuNDktNzAuMjEtMi44Ny01Ni0zNy4zNEwyNDAuMjIgMTk5djEyMS44NWMyNS4zIDEyLjU0IDIyLjI2IDQxLjg1IDkuMDggNTVhMzQuMzQgMzQuMzQgMCAwIDEtNDguNTUgMGMtMTcuNTctMTcuNi0xMS4wNy00Ni45MSAxMS4yNS01NnYtMTIzYy0yMC44LTguNTEtMjQuNi0zMC43NC0xOC42NC00NUwxNDIuNTcgMTAxIDguNDUgMjM1LjE0YTI4Ljg2IDI4Ljg2IDAgMCAwIDAgNDAuODFsMTk1LjYxIDE5NS42YTI4Ljg2IDI4Ljg2IDAgMCAwIDQwLjggMGwxOTQuNjktMTk0LjY5YTI4Ljg2IDI4Ljg2IDAgMCAwIDAtNDAuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDAuNTkgMzM0LjI0YzQ4LjU3IDMuMzEgNTguOTUgMi4xMSA1OC45NSAxMS45NCAwIDIwLTY1LjU1IDIwLjA2LTY1LjU1IDEuNTIuMDEtNS4wOSAzLjI5LTkuNCA2LjYtMTMuNDZ6bTI3Ljk1LTExNi42NGMtMzIuMjkgMC0zMy43NSA0NC40Ny0uNzUgNDQuNDcgMzIuNTEgMCAzMS43MS00NC40Ny43NS00NC40N3pNNDQ4IDgwdjM1MmE0OCA0OCAwIDAgMS00OCA0OEg0OGE0OCA0OCAwIDAgMS00OC00OFY4MGE0OCA0OCAwIDAgMSA0OC00OGgzNTJhNDggNDggMCAwIDEgNDggNDh6bS0yMjcgNjkuMzFjMCAxNC40OSA4LjM4IDIyLjg4IDIyLjg2IDIyLjg4IDE0Ljc0IDAgMjMuMTMtOC4zOSAyMy4xMy0yMi44OFMyNTguNjIgMTI3IDI0My44OCAxMjdjLTE0LjQ4IDAtMjIuODggNy44NC0yMi44OCAyMi4zMXpNMTk5LjE4IDE5NWgtNDkuNTVjLTI1LTYuNTUtODEuNTYtNC44NS04MS41NiA0Ni43NSAwIDE4LjggOS40IDMyIDIxLjg1IDM4LjExQzc0LjIzIDI5NC4yMyA2Ni44IDMwMSA2Ni44IDMxMC42YzAgNi44NyAyLjc5IDEzLjIyIDExLjE4IDE2Ljc2LTguOSA4LjQtMTQgMTQuNDgtMTQgMjUuOTJDNjQgMzczLjM1IDgxLjUzIDM4NSAxMjcuNTIgMzg1YzQ0LjIyIDAgNjkuODctMTYuNTEgNjkuODctNDUuNzMgMC0zNi42Ny0yOC4yMy0zNS4zMi05NC43Ny0zOS4zOGw4LjM4LTEzLjQzYzE3IDQuNzQgNzQuMTkgNi4yMyA3NC4xOS00Mi40MyAwLTExLjY5LTQuODMtMTkuODItOS40LTI1LjY3bDIzLjM4LTEuNzh6bTg0LjM0IDEwOS44NGwtMTMtMS43OGMtMy44Mi0uNTEtNC4wNy0xLTQuMDctNS4wOVYxOTIuNTJoLTUyLjZsLTIuNzkgMjAuNTdjMTUuNzUgNS41NSAxNyA0Ljg2IDE3IDEwLjE3VjI5OGMwIDUuNjItLjMxIDQuNTgtMTcgNi44N3YyMC4wNmg3Mi40MnpNMzg0IDMxNWwtNi44Ny0yMi4zN2MtNDAuOTMgMTUuMzctMzcuODUtMTIuNDEtMzcuODUtMTYuNzN2LTYwLjcyaDM3Ljg1di0yNS40MWgtMzUuODJjLTIuODcgMC0yIDIuNTItMi0zOC42M2gtMjQuMThjLTIuNzkgMjcuNy0xMS42OCAzOC44OC0zNCA0MS40MnYyMi42MmMyMC40NyAwIDE5LjgyLS44NSAxOS44MiAyLjU0djY2LjU3YzAgMjguNzIgMTEuNDMgNDAuOTEgNDEuNjcgNDAuOTEgMTQuNDUgMCAzMC40NS00LjgzIDQxLjM4LTEwLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYuMjkgMTU4LjM5SDEzN0M5NyAxNDcuOSA2LjUxIDE1MC42MyA2LjUxIDIzMy4xOGMwIDMwLjA5IDE1IDUxLjIzIDM1IDYxLTI1LjEgMjMtMzcgMzMuODUtMzcgNDkuMjEgMCAxMSA0LjQ3IDIxLjE0IDE3Ljg5IDI2LjgxQzguMTMgMzgzLjYxIDAgMzkzLjM1IDAgNDExLjY1YzAgMzIuMTEgMjguMDUgNTAuODIgMTAxLjYzIDUwLjgyIDcwLjc1IDAgMTExLjc5LTI2LjQyIDExMS43OS03My4xOCAwLTU4LjY2LTQ1LjE2LTU2LjUtMTUxLjYzLTYzbDEzLjQzLTIxLjU1YzI3LjI3IDcuNTggMTE4LjcgMTAgMTE4LjctNjcuODkgMC0xOC43LTcuNzMtMzEuNzEtMTUtNDEuMDdsMzcuNDEtMi44NHptLTYzLjQyIDI0MS45YzAgMzIuMDYtMTA0Ljg5IDMyLjEtMTA0Ljg5IDIuNDMgMC04LjE0IDUuMjctMTUgMTAuNTctMjEuNTQgNzcuNzEgNS4zIDk0LjMyIDMuMzcgOTQuMzIgMTkuMTF6bS01MC44MS0xMzQuNThjLTUyLjggMC01MC40Ni03MS4xNiAxLjItNzEuMTYgNDkuNTQgMCA1MC44MiA3MS4xNi0xLjIgNzEuMTZ6bTEzMy4zIDEwMC41MXYtMzIuMWMyNi43NS0zLjY2IDI3LjI0LTIgMjcuMjQtMTFWMjAzLjYxYzAtOC41LTIuMDUtNy4zOC0yNy4yNC0xNi4yNmw0LjQ3LTMyLjkySDMyNHYxNjguNzFjMCA2LjUxLjQgNy4zMiA2LjUxIDguMTRsMjAuNzMgMi44NHYzMi4xem01Mi40NS0yNDQuMzFjLTIzLjE3IDAtMzYuNTktMTMuNDMtMzYuNTktMzYuNjFzMTMuNDItMzUuNzcgMzYuNTktMzUuNzdjMjMuNTggMCAzNyAxMi42MiAzNyAzNS43N3MtMTMuNDIgMzYuNjEtMzcgMzYuNjF6TTUxMiAzNTAuNDZjLTE3LjQ5IDguNTMtNDMuMSAxNi4yNi02Ni4yOCAxNi4yNi00OC4zOCAwLTY2LjY3LTE5LjUtNjYuNjctNjUuNDZWMTk0Ljc1YzAtNS40MiAxLjA1LTQuMDYtMzEuNzEtNC4wNlYxNTQuNWMzNS43OC00LjA3IDUwLTIyIDU0LjQ3LTY2LjI3aDM4LjYzYzAgNjUuODMtMS4zNCA2MS44MSAzLjI2IDYxLjgxSDUwMXY0MC42NWgtNjAuNTZ2OTcuMTVjMCA2LjkyLTQuOTIgNTEuNDEgNjAuNTcgMjYuODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdGh1YkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODYuMSAzMjguN2MwIDIwLjktMTAuOSA1NS4xLTM2LjcgNTUuMXMtMzYuNy0zNC4yLTM2LjctNTUuMSAxMC45LTU1LjEgMzYuNy01NS4xIDM2LjcgMzQuMiAzNi43IDU1LjF6TTQ4MCAyNzguMmMwIDMxLjktMy4yIDY1LjctMTcuNSA5NS0zNy45IDc2LjYtMTQyLjEgNzQuOC0yMTYuNyA3NC44LTc1LjggMC0xODYuMiAyLjctMjI1LjYtNzQuOC0xNC42LTI5LTIwLjItNjMuMS0yMC4yLTk1IDAtNDEuOSAxMy45LTgxLjUgNDEuNS0xMTMuNi01LjItMTUuOC03LjctMzIuNC03LjctNDguOCAwLTIxLjUgNC45LTMyLjMgMTQuNi01MS44IDQ1LjMgMCA3NC4zIDkgMTA4LjggMzYgMjktNi45IDU4LjgtMTAgODguNy0xMCAyNyAwIDU0LjIgMi45IDgwLjQgOS4yIDM0LTI2LjcgNjMtMzUuMiAxMDcuOC0zNS4yIDkuOCAxOS41IDE0LjYgMzAuMyAxNC42IDUxLjggMCAxNi40LTIuNiAzMi43LTcuNyA0OC4yIDI3LjUgMzIuNCAzOSA3Mi4zIDM5IDExNC4yem0tNjQuMyA1MC41YzAtNDMuOS0yNi43LTgyLjYtNzMuNS04Mi42LTE4LjkgMC0zNyAzLjQtNTYgNi0xNC45IDIuMy0yOS44IDMuMi00NS4xIDMuMi0xNS4yIDAtMzAuMS0uOS00NS4xLTMuMi0xOC43LTIuNi0zNy02LTU2LTYtNDYuOCAwLTczLjUgMzguNy03My41IDgyLjYgMCA4Ny44IDgwLjQgMTAxLjMgMTUwLjQgMTAxLjNoNDguMmM3MC4zIDAgMTUwLjYtMTMuNCAxNTAuNi0xMDEuM3ptLTgyLjYtNTUuMWMtMjUuOCAwLTM2LjcgMzQuMi0zNi43IDU1LjFzMTAuOSA1NS4xIDM2LjcgNTUuMSAzNi43LTM0LjIgMzYuNy01NS4xLTEwLjktNTUuMS0zNi43LTU1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdGh1YlNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yNzcuMyA0MTUuN2MtOC40IDEuNS0xMS41LTMuNy0xMS41LTggMC01LjQuMi0zMyAuMi01NS4zIDAtMTUuNi01LjItMjUuNS0xMS4zLTMwLjcgMzctNC4xIDc2LTkuMiA3Ni03My4xIDAtMTguMi02LjUtMjcuMy0xNy4xLTM5IDEuNy00LjMgNy40LTIyLTEuNy00NS0xMy45LTQuMy00NS43IDE3LjktNDUuNyAxNy45LTEzLjItMy43LTI3LjUtNS42LTQxLjYtNS42LTE0LjEgMC0yOC40IDEuOS00MS42IDUuNiAwIDAtMzEuOC0yMi4yLTQ1LjctMTcuOS05LjEgMjIuOS0zLjUgNDAuNi0xLjcgNDUtMTAuNiAxMS43LTE1LjYgMjAuOC0xNS42IDM5IDAgNjMuNiAzNy4zIDY5IDc0LjMgNzMuMS00LjggNC4zLTkuMSAxMS43LTEwLjYgMjIuMy05LjUgNC4zLTMzLjggMTEuNy00OC4zLTEzLjktOS4xLTE1LjgtMjUuNS0xNy4xLTI1LjUtMTcuMS0xNi4yLS4yLTEuMSAxMC4yLTEuMSAxMC4yIDEwLjggNSAxOC40IDI0LjIgMTguNCAyNC4yIDkuNyAyOS43IDU2LjEgMTkuNyA1Ni4xIDE5LjcgMCAxMy45LjIgMzYuNS4yIDQwLjYgMCA0LjMtMyA5LjUtMTEuNSA4LTY2LTIyLjEtMTEyLjItODQuOS0xMTIuMi0xNTguMyAwLTkxLjggNzAuMi0xNjEuNSAxNjItMTYxLjVTMzg4IDE2NS42IDM4OCAyNTcuNGMuMSA3My40LTQ0LjcgMTM2LjMtMTEwLjcgMTU4LjN6bS05OC4xLTYxLjFjLTEuOS40LTMuNy0uNC0zLjktMS43LS4yLTEuNSAxLjEtMi44IDMtMy4yIDEuOS0uMiAzLjcuNiAzLjkgMS45LjMgMS4zLTEgMi42LTMgM3ptLTkuNS0uOWMwIDEuMy0xLjUgMi40LTMuNSAyLjQtMi4yLjItMy43LS45LTMuNy0yLjQgMC0xLjMgMS41LTIuNCAzLjUtMi40IDEuOS0uMiAzLjcuOSAzLjcgMi40em0tMTMuNy0xLjFjLS40IDEuMy0yLjQgMS45LTQuMSAxLjMtMS45LS40LTMuMi0xLjktMi44LTMuMi40LTEuMyAyLjQtMS45IDQuMS0xLjUgMiAuNiAzLjMgMi4xIDIuOCAzLjR6bS0xMi4zLTUuNGMtLjkgMS4xLTIuOC45LTQuMy0uNi0xLjUtMS4zLTEuOS0zLjItLjktNC4xLjktMS4xIDIuOC0uOSA0LjMuNiAxLjMgMS4zIDEuOCAzLjMuOSA0LjF6bS05LjEtOS4xYy0uOS42LTIuNiAwLTMuNy0xLjVzLTEuMS0zLjIgMC0zLjljMS4xLS45IDIuOC0uMiAzLjcgMS4zIDEuMSAxLjUgMS4xIDMuMyAwIDQuMXptLTYuNS05LjdjLS45LjktMi40LjQtMy41LS42LTEuMS0xLjMtMS4zLTIuOC0uNC0zLjUuOS0uOSAyLjQtLjQgMy41LjYgMS4xIDEuMyAxLjMgMi44LjQgMy41em0tNi43LTcuNGMtLjQuOS0xLjcgMS4xLTIuOC40LTEuMy0uNi0xLjktMS43LTEuNS0yLjYuNC0uNiAxLjUtLjkgMi44LS40IDEuMy43IDEuOSAxLjggMS41IDIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0aHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2NS45IDM5Ny40YzAgMi0yLjMgMy42LTUuMiAzLjYtMy4zLjMtNS42LTEuMy01LjYtMy42IDAtMiAyLjMtMy42IDUuMi0zLjYgMy0uMyA1LjYgMS4zIDUuNiAzLjZ6bS0zMS4xLTQuNWMtLjcgMiAxLjMgNC4zIDQuMyA0LjkgMi42IDEgNS42IDAgNi4yLTJzLTEuMy00LjMtNC4zLTUuMmMtMi42LS43LTUuNS4zLTYuMiAyLjN6bTQ0LjItMS43Yy0yLjkuNy00LjkgMi42LTQuNiA0LjkuMyAyIDIuOSAzLjMgNS45IDIuNiAyLjktLjcgNC45LTIuNiA0LjYtNC42LS4zLTEuOS0zLTMuMi01LjktMi45ek0yNDQuOCA4QzEwNi4xIDggMCAxMTMuMyAwIDI1MmMwIDExMC45IDY5LjggMjA1LjggMTY5LjUgMjM5LjIgMTIuOCAyLjMgMTcuMy01LjYgMTcuMy0xMi4xIDAtNi4yLS4zLTQwLjQtLjMtNjEuNCAwIDAtNzAgMTUtODQuNy0yOS44IDAgMC0xMS40LTI5LjEtMjcuOC0zNi42IDAgMC0yMi45LTE1LjcgMS42LTE1LjQgMCAwIDI0LjkgMiAzOC42IDI1LjggMjEuOSAzOC42IDU4LjYgMjcuNSA3Mi45IDIwLjkgMi4zLTE2IDguOC0yNy4xIDE2LTMzLjctNTUuOS02LjItMTEyLjMtMTQuMy0xMTIuMy0xMTAuNSAwLTI3LjUgNy42LTQxLjMgMjMuNi01OC45LTIuNi02LjUtMTEuMS0zMy4zIDIuNi02Ny45IDIwLjktNi41IDY5IDI3IDY5IDI3IDIwLTUuNiA0MS41LTguNSA2Mi44LTguNXM0Mi44IDIuOSA2Mi44IDguNWMwIDAgNDguMS0zMy42IDY5LTI3IDEzLjcgMzQuNyA1LjIgNjEuNCAyLjYgNjcuOSAxNiAxNy43IDI1LjggMzEuNSAyNS44IDU4LjkgMCA5Ni41LTU4LjkgMTA0LjItMTE0LjggMTEwLjUgOS4yIDcuOSAxNyAyMi45IDE3IDQ2LjQgMCAzMy43LS4zIDc1LjQtLjMgODMuNiAwIDYuNSA0LjYgMTQuNCAxNy4zIDEyLjFDNDI4LjIgNDU3LjggNDk2IDM2Mi45IDQ5NiAyNTIgNDk2IDExMy4zIDM4My41IDggMjQ0LjggOHpNOTcuMiAzNTIuOWMtMS4zIDEtMSAzLjMuNyA1LjIgMS42IDEuNiAzLjkgMi4zIDUuMiAxIDEuMy0xIDEtMy4zLS43LTUuMi0xLjYtMS42LTMuOS0yLjMtNS4yLTF6bS0xMC44LTguMWMtLjcgMS4zLjMgMi45IDIuMyAzLjkgMS42IDEgMy42LjcgNC4zLS43LjctMS4zLS4zLTIuOS0yLjMtMy45LTItLjYtMy42LS4zLTQuMy43em0zMi40IDM1LjZjLTEuNiAxLjMtMSA0LjMgMS4zIDYuMiAyLjMgMi4zIDUuMiAyLjYgNi41IDEgMS4zLTEuMy43LTQuMy0xLjMtNi4yLTIuMi0yLjMtNS4yLTIuNi02LjUtMXptLTExLjQtMTQuN2MtMS42IDEtMS42IDMuNiAwIDUuOSAxLjYgMi4zIDQuMyAzLjMgNS42IDIuMyAxLjYtMS4zIDEuNi0zLjkgMC02LjItMS40LTIuMy00LTMuMy01LjYtMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0a3Jha2VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1OTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2NS43IDExOC4xYy0yLjMtNi4xLTkuMy05LjItMTUuMy02LjYtNS43IDIuNC04LjUgOC45LTYuMyAxNC42IDEwLjkgMjkgMTYuOSA2MC41IDE2LjkgOTMuMyAwIDEzNC42LTEwMC4zIDI0NS43LTIzMC4yIDI2Mi43VjM1OC40YzcuOS0xLjUgMTUuNS0zLjYgMjMtNi4ydjEwNGMxMDYuNy0yNS45IDE4NS45LTEyMi4xIDE4NS45LTIzNi44IDAtOTEuOC01MC44LTE3MS44LTEyNS44LTIxMy4zLTUuNy0zLjItMTMtLjktMTUuOSA1LTIuNyA1LjUtLjYgMTIuMiA0LjcgMTUuMSA2Ny45IDM3LjYgMTEzLjkgMTEwIDExMy45IDE5My4yIDAgOTMuMy01Ny45IDE3My4xLTEzOS44IDIwNS40di05Mi4yYzE0LjItNC41IDI0LjktMTcuNyAyNC45LTMzLjUgMC0xMy4xLTYuOC0yNC40LTE3LjMtMzAuNSA4LjMtNzkuNSA0NC41LTU4LjYgNDQuNS04My45VjE3MGMwLTM4LTg3LjktMTYxLjgtMTI5LTE2NC43LTIuNS0uMi01LS4yLTcuNiAwQzI1MS4xIDguMyAxNjMuMiAxMzIgMTYzLjIgMTcwdjE0LjhjMCAyNS4zIDM2LjMgNC4zIDQ0LjUgODMuOS0xMC42IDYuMS0xNy4zIDE3LjQtMTcuMyAzMC41IDAgMTUuOCAxMC42IDI5IDI0LjggMzMuNXY5Mi4yYy04MS45LTMyLjItMTM5LjgtMTEyLTEzOS44LTIwNS40IDAtODMuMSA0Ni0xNTUuNSAxMTMuOS0xOTMuMiA1LjQtMyA3LjQtOS42IDQuNy0xNS4xLTIuOS01LjktMTAuMS04LjItMTUuOS01LTc1IDQxLjUtMTI1LjggMTIxLjUtMTI1LjggMjEzLjMgMCAxMTQuNyA3OS4yIDIxMC44IDE4NS45IDIzNi44di0xMDRjNy42IDIuNSAxNS4xIDQuNiAyMyA2LjJ2MTIzLjdDMTMxLjQgNDY1LjIgMzEgMzU0LjEgMzEgMjE5LjVjMC0zMi44IDYtNjQuMyAxNi45LTkzLjMgMi4yLTUuOC0uNi0xMi4yLTYuMy0xNC42LTYtMi42LTEzIC40LTE1LjMgNi42QzE0LjUgMTQ5LjcgOCAxODMuOCA4IDIxOS41YzAgMTU1LjEgMTIyLjYgMjgxLjYgMjc2LjMgMjg3LjhWMzYxLjRjNi44LjQgMTUgLjUgMjMuNCAwdjE0NS44QzQ2MS40IDUwMS4xIDU4NCAzNzQuNiA1ODQgMjE5LjVjMC0zNS43LTYuNS02OS44LTE4LjMtMTAxLjR6TTM2NS45IDI3NS41YzEzIDAgMjMuNyAxMC41IDIzLjcgMjMuNyAwIDEzLjEtMTAuNiAyMy43LTIzLjcgMjMuNy0xMyAwLTIzLjctMTAuNS0yMy43LTIzLjcgMC0xMy4xIDEwLjYtMjMuNyAyMy43LTIzLjd6bS0xMzkuOCA0Ny4zYy0xMy4yIDAtMjMuNy0xMC43LTIzLjctMjMuN3MxMC41LTIzLjcgMjMuNy0yMy43YzEzLjEgMCAyMy43IDEwLjYgMjMuNyAyMy43IDAgMTMtMTAuNSAyMy43LTIzLjcgMjMuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0bGFiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwNS4yIDI0LjljLTMuMS04LjktMTUuNy04LjktMTguOSAwTDI5LjggMTk5LjdoMTMyYy0uMSAwLTU2LjYtMTc0LjgtNTYuNi0xNzQuOHpNLjkgMjg3LjdjLTIuNiA4IC4zIDE2LjkgNy4xIDIybDI0Ny45IDE4NC0yMjYuMi0yOTR6bTE2MC44LTg4bDk0LjMgMjk0IDk0LjMtMjk0em0zNDkuNCA4OGwtMjguOC04OC0yMjYuMyAyOTQgMjQ3LjktMTg0YzYuOS01LjEgOS43LTE0IDcuMi0yMnpNNDI1LjcgMjQuOWMtMy4xLTguOS0xNS43LTguOS0xOC45IDBsLTU2LjYgMTc0LjhoMTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHaXR0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjYuNCAzMjIuNUgxNlYwaDUwLjR2MzIyLjV6TTE2Ni45IDc2LjFoLTUwLjRWNTEyaDUwLjRWNzYuMXptMTAwLjYgMGgtNTAuNFY1MTJoNTAuNFY3Ni4xek0zNjggNzZoLTUwLjR2MjQ3SDM2OFY3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xpZGVHIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNy4xIDIxMS4yYy0zLjUtMS40LTExLjYtMy44LTE1LjQtMy44LTM3LjEgMC02Mi4yIDE2LjgtOTMuNSAzNC41bC0uOS0uOWM3LTQ3LjMgMjMuNS05MS45IDIzLjUtMTQwLjRDMzIwLjggMjkuMSAyODIuNiAwIDIxMi40IDAgOTcuMyAwIDM5IDExMy43IDM5IDE5OC40IDM5IDI4Ni4zIDkwLjMgMzM1IDE3Ny42IDMzNWMxMiAwIDExLTEgMTEgMy44LTE2LjkgMTI4LjktOTAuOCAxMzMuMS05MC44IDk0LjYgMC0zOS4yIDQ1LTU4LjYgNDUuNS02MS0uMy0xMi4yLTQ3LTI3LjYtNTguOS0yNy42LTMzLjkuMS01Mi40IDUxLjItNTIuNCA3OS4zQzMyIDQ3NiA2NC44IDUxMiAxMTcuNSA1MTJjNzcuNCAwIDEzNC03Ny44IDE1MS40LTE0NS40IDE1LjEtNjAuNSAxMS4yLTYzLjMgMTkuNy02Ny42IDMyLjItMTYuMiA1Ny41LTI3IDkzLjgtMjcgMTcuOCAwIDMwLjUgMy43IDU4LjkgOC40IDIuOSAwIDYuNy0yLjkgNi43LTUuOCAwLTgtMzMuNC02MC41LTQwLjktNjMuNHptLTE3NS4zLTg0LjRjLTkuMyA0NC43LTE4LjYgODkuNi0yNy44IDEzNC4zLTIuMyAxMC4yLTEzLjMgNy44LTIyIDcuOC0zOC4zIDAtNDktNDEuOC00OS03My4xIDAtNDcgMTgtMTA5LjMgNjEuOC0xMzMuNCA3LTQuMSAxNC44LTYuNyAyMi42LTYuNyAxOC42IDAgMjAgMTMuMyAyMCAyOC43LS4xIDE0LjMtMi43IDI4LjUtNS42IDQyLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Mi44IDE0OC42YzAgOC44LTEuNiAxNy43LTMuNCAyNi40LTUuOCAyNy44LTExLjYgNTUuOC0xNy4zIDgzLjYtMS40IDYuMy04LjMgNC45LTEzLjcgNC45LTIzLjggMC0zMC41LTI2LTMwLjUtNDUuNSAwLTI5LjMgMTEuMi02OC4xIDM4LjUtODMuMSA0LjMtMi41IDkuMi00LjIgMTQuMS00LjIgMTEuNCAwIDEyLjMgOC4zIDEyLjMgMTcuOXpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNjQgMTg3YzAtNS4xLTIwLjgtMzcuNy0yNS41LTM5LjUtMi4yLS45LTcuMi0yLjMtOS42LTIuMy0yMy4xIDAtMzguNyAxMC41LTU4LjIgMjEuNWwtLjUtLjVjNC4zLTI5LjQgMTQuNi01Ny4yIDE0LjYtODcuNCAwLTQ0LjYtMjMuOC02Mi43LTY3LjUtNjIuNy03MS43IDAtMTA4IDcwLjgtMTA4IDEyMy41IDAgNTQuNyAzMiA4NSA4Ni4zIDg1IDcuNSAwIDYuOS0uNiA2LjkgMi4zLTEwLjUgODAuMy01Ni41IDgyLjktNTYuNSA1OC45IDAtMjQuNCAyOC0zNi41IDI4LjMtMzgtLjItNy42LTI5LjMtMTcuMi0zNi43LTE3LjItMjEuMSAwLTMyLjcgMzMtMzIuNyA1MC42IDAgMzIuMyAyMC40IDU0LjcgNTMuMyA1NC43IDQ4LjIgMCA4My40LTQ5LjcgOTQuMy05MS43IDkuNC0zNy43IDctMzkuNCAxMi4zLTQyLjEgMjAtMTAuMSAzNS44LTE2LjggNTguNC0xNi44IDExLjEgMCAxOSAyLjMgMzYuNyA1LjIgMS44LjEgNC4xLTEuNyA0LjEtMy41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb2ZvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQwMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI0IDMxOS44aC0xMy4ydjM0LjdjLTI0LjUgMjMuMS01Ni4zIDM1LjgtODkuOSAzNS44LTczLjIgMC0xMzIuNC02MC4yLTEzMi40LTEzNC40IDAtNzQuMSA1OS4yLTEzNC40IDEzMi40LTEzNC40IDM1LjMgMCA2OC42IDE0IDkzLjYgMzkuNGw2Mi4zLTYzLjNDMzM1IDU1LjMgMjc5LjcgMzIgMjIwLjcgMzIgOTggMzIgMCAxMzIuNiAwIDI1NmMwIDEyMi41IDk3IDIyNCAyMjAuNyAyMjQgNjMuMiAwIDEyNC41LTI2LjIgMTcxLTgyLjUtMi0yNy42LTEzLjQtNzcuNy02Ny43LTc3Ljd6bS0xMi4xLTExMi41SDIwNS42djg5SDMyNGMzMy41IDAgNjAuNSAxNS4xIDc2IDQxLjh2LTMwLjZjMC02NS4yLTQwLjQtMTAwLjItODguMS0xMDAuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29vZHJlYWRzRyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Mi42IDQwMy4zaDIuOGMxMi43IDAgMjUuNSAwIDM4LjIuMSAxLjYgMCAzLjEtLjQgMy42IDIuMSA3LjEgMzQuOSAzMCA1NC42IDYyLjkgNjMuOSAyNi45IDcuNiA1NC4xIDcuOCA4MS4zIDEuOCAzMy44LTcuNCA1Ni0yOC4zIDY4LTYwLjQgOC0yMS41IDEwLjctNDMuOCAxMS02Ni41LjEtNS44LjMtNDctLjItNTIuOGwtLjktLjNjLS44IDEuNS0xLjcgMi45LTIuNSA0LjQtMjIuMSA0My4xLTYxLjMgNjcuNC0xMDUuNCA2OS4xLTEwMyA0LTE2OS40LTU3LTE3Mi0xNzYuMi0uNS0yMy43IDEuOC00Ni45IDguMy02OS43QzU4LjMgNDcuNyAxMTIuMy42IDE5MS42IDBjNjEuMy0uNCAxMDEuNSAzOC43IDExNi4yIDcwLjMuNSAxLjEgMS4zIDIuMyAyLjQgMS45VjEwLjZoNDQuM2MwIDI4MC4zLjEgMzMyLjIuMSAzMzIuMi0uMSA3OC41LTI2LjcgMTQzLjctMTAzIDE2Mi4yLTY5LjUgMTYuOS0xNTkgNC44LTE5Ni01Ny4yLTgtMTMuNS0xMS44LTI4LjMtMTMtNDQuNXpNMTg4LjkgMzYuNWMtNTIuNS0uNS0xMDguNSA0MC43LTExNSAxMzMuOC00LjEgNTkgMTQuOCAxMjIuMiA3MS41IDE0OC42IDI3LjYgMTIuOSA3NC4zIDE1IDEwOC4zLTguNyA0Ny42LTMzLjIgNjIuNy05NyA1NC44LTE1NC05LjctNzEuMS00Ny44LTEyMC0xMTkuNi0xMTkuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29vZHJlYWRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5OS45IDE5MS4yYzUuMSAzNy4zLTQuNyA3OS0zNS45IDEwMC43LTIyLjMgMTUuNS01Mi44IDE0LjEtNzAuOCA1LjctMzcuMS0xNy4zLTQ5LjUtNTguNi00Ni44LTk3LjIgNC4zLTYwLjkgNDAuOS04Ny45IDc1LjMtODcuNSA0Ni45LS4yIDcxLjggMzEuOCA3OC4yIDc4LjN6TTQ0OCA4OHYzMzZjMCAzMC45LTI1LjEgNTYtNTYgNTZINTZjLTMwLjkgMC01Ni0yNS4xLTU2LTU2Vjg4YzAtMzAuOSAyNS4xLTU2IDU2LTU2aDMzNmMzMC45IDAgNTYgMjUuMSA1NiA1NnpNMzMwIDMxMy4ycy0uMS0zNC0uMS0yMTcuM2gtMjl2NDAuM2MtLjguMy0xLjItLjUtMS42LTEuMi05LjYtMjAuNy0zNS45LTQ2LjMtNzYtNDYtNTEuOS40LTg3LjIgMzEuMi0xMDAuNiA3Ny44LTQuMyAxNC45LTUuOCAzMC4xLTUuNSA0NS42IDEuNyA3Ny45IDQ1LjEgMTE3LjggMTEyLjQgMTE1LjIgMjguOS0xLjEgNTQuNS0xNyA2OS00NS4yLjUtMSAxLjEtMS45IDEuNy0yLjkuMi4xLjQuMS42LjIuMyAzLjguMiAzMC43LjEgMzQuNS0uMiAxNC44LTIgMjkuNS03LjIgNDMuNS03LjggMjEtMjIuMyAzNC43LTQ0LjUgMzkuNS0xNy44IDMuOS0zNS42IDMuOC01My4yLTEuMi0yMS41LTYuMS0zNi41LTE5LTQxLjEtNDEuOC0uMy0xLjYtMS4zLTEuMy0yLjMtMS4zaC0yNi44Yy44IDEwLjYgMy4yIDIwLjMgOC41IDI5LjIgMjQuMiA0MC41IDgyLjcgNDguNSAxMjguMiAzNy40IDQ5LjktMTIuMyA2Ny4zLTU0LjkgNjcuNC0xMDYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29vZ2xlRHJpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM5IDMxNC45TDE3NS40IDMyaDE2MS4ybDE2My42IDI4Mi45SDMzOXptLTEzNy41IDIzLjZMMTIwLjkgNDgwaDMxMC41TDUxMiAzMzguNUgyMDEuNXpNMTU0LjEgNjcuNEwwIDMzOC41IDgwLjYgNDgwIDIzNyAyMDguOCAxNTQuMSA2Ny40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVQYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA1LjcyLDIxNXY0MS4yNWg1Ny4xYTQ5LjY2LDQ5LjY2LDAsMCwxLTIxLjE0LDMyLjZjLTkuNTQsNi41NS0yMS43MiwxMC4yOC0zNiwxMC4yOC0yNy42LDAtNTAuOTMtMTguOTEtNTkuMy00NC4yMmE2NS42MSw2NS42MSwwLDAsMSwwLTQxbDAsMGM4LjM3LTI1LjQ2LDMxLjctNDQuMzcsNTkuMy00NC4zN2E1Ni40Myw1Ni40MywwLDAsMSw0MC41MSwxNi4wOEwxNzYuNDcsMTU1YTEwMS4yNCwxMDEuMjQsMCwwLDAtNzAuNzUtMjcuODQsMTA1LjU1LDEwNS41NSwwLDAsMC05NC4zOCw1OS4xMSwxMDcuNjQsMTA3LjY0LDAsMCwwLDAsOTYuMTh2LjE1YTEwNS40MSwxMDUuNDEsMCwwLDAsOTQuMzgsNTljMjguNDcsMCw1Mi41NS05LjUzLDcwLTI1LjkxLDIwLTE4LjYxLDMxLjQxLTQ2LjE1LDMxLjQxLTc4LjkxQTEzMy43NiwxMzMuNzYsMCwwLDAsMjA1LjM4LDIxNVptMzg5LjQxLTRjLTEwLjEzLTkuMzgtMjMuOTMtMTQuMTQtNDEuMzktMTQuMTQtMjIuNDYsMC0zOS4zNCw4LjM0LTUwLjUsMjQuODZsMjAuODUsMTMuMjZxMTEuNDUtMTcsMzEuMjYtMTdhMzQuMDUsMzQuMDUsMCwwLDEsMjIuNzUsOC43OUEyOC4xNCwyOC4xNCwwLDAsMSw0ODcuNzksMjQ4djUuNTFjLTkuMS01LjA3LTIwLjU1LTcuNzUtMzQuNjQtNy43NS0xNi40NCwwLTI5LjY1LDMuODgtMzkuNDksMTEuNzdzLTE0LjgyLDE4LjMxLTE0LjgyLDMxLjU2YTM5Ljc0LDM5Ljc0LDAsMCwwLDEzLjk0LDMxLjI3YzkuMjUsOC4zNCwyMSwxMi41MSwzNC43OSwxMi41MSwxNi4yOSwwLDI5LjIxLTcuMywzOS0yMS44OWgxdjE3LjcyaDIyLjYxVjI1MEM1MTAuMjUsMjMzLjQ1LDUwNS4yNiwyMjAuMzQsNDk1LjEzLDIxMVpNNDc1LjksMzAwLjNhMzcuMzIsMzcuMzIsMCwwLDEtMjYuNTcsMTEuMTZBMjguNjEsMjguNjEsMCwwLDEsNDMxLDMwNS4yMWExOS40MSwxOS40MSwwLDAsMS03Ljc3LTE1LjYzYzAtNywzLjIyLTEyLjgxLDkuNTQtMTcuNDJzMTQuNTMtNywyNC4wNy03QzQ3MCwyNjUsNDgwLjMsMjY4LDQ4Ny42NCwyNzMuOTQsNDg3LjY0LDI4NC4wNyw0ODMuNjgsMjkyLjg1LDQ3NS45LDMwMC4zWm0tOTMuNjUtMTQyQTU1LjcxLDU1LjcxLDAsMCwwLDM0MS43NCwxNDJIMjc5LjA3VjMyOC43NEgzMDIuN1YyNTMuMWgzOWMxNiwwLDI5LjUtNS4zNiw0MC41MS0xNS45My44OC0uODksMS43Ni0xLjc5LDIuNjUtMi42OEE1NC40NSw1NC40NSwwLDAsMCwzODIuMjUsMTU4LjI2Wm0tMTYuNTgsNjIuMjNhMzAuNjUsMzAuNjUsMCwwLDEtMjMuMzQsOS42OEgzMDIuN1YxNjVoMzkuNjNhMzIsMzIsMCwwLDEsMjIuNiw5LjIzQTMzLjE4LDMzLjE4LDAsMCwxLDM2NS42NywyMjAuNDlaTTYxNC4zMSwyMDEsNTc3Ljc3LDI5Mi43aC0uNDVMNTM5LjksMjAxSDUxNC4yMUw1NjYsMzIwLjU1bC0yOS4zNSw2NC4zMkg1NjFMNjQwLDIwMVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29vZ2xlUGxheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjUuMyAyMzQuM0wxMDQuNiAxM2wyODAuOCAxNjEuMi02MC4xIDYwLjF6TTQ3IDBDMzQgNi44IDI1LjMgMTkuMiAyNS4zIDM1LjN2NDQxLjNjMCAxNi4xIDguNyAyOC41IDIxLjcgMzUuM2wyNTYuNi0yNTZMNDcgMHptNDI1LjIgMjI1LjZsLTU4LjktMzQuMS02NS43IDY0LjUgNjUuNyA2NC41IDYwLjEtMzQuMWMxOC0xNC4zIDE4LTQ2LjUtMS4yLTYwLjh6TTEwNC42IDQ5OWwyODAuOC0xNjEuMi02MC4xLTYwLjFMMTA0LjYgNDk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVQbHVzRyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODYuMDYxIDIyOC40OTZjMS44MzQgOS42OTIgMy4xNDMgMTkuMzg0IDMuMTQzIDMxLjk1NkMzODkuMjA0IDM3MC4yMDUgMzE1LjU5OSA0NDggMjA0LjggNDQ4Yy0xMDYuMDg0IDAtMTkyLTg1LjkxNS0xOTItMTkyczg1LjkxNi0xOTIgMTkyLTE5MmM1MS44NjQgMCA5NS4wODMgMTguODU5IDEyOC42MTEgNTAuMjkybC01Mi4xMjYgNTAuMDNjLTE0LjE0NS0xMy42MjEtMzkuMDI4LTI5LjU5OS03Ni40ODUtMjkuNTk5LTY1LjQ4NCAwLTExOC45MiA1NC4yMjEtMTE4LjkyIDEyMS4yNzcgMCA2Ny4wNTYgNTMuNDM2IDEyMS4yNzcgMTE4LjkyIDEyMS4yNzcgNzUuOTYxIDAgMTA0LjUxMy01NC43NDUgMTA4Ljk2NS04Mi43NzNIMjA0Ljh2LTY2LjAwOWgxODEuMjYxem0xODUuNDA2IDYuNDM3VjE3OS4yaC01Ni4wMDF2NTUuNzMzaC01NS43MzN2NTYuMDAxaDU1LjczM3Y1NS43MzNoNTYuMDAxdi01NS43MzNINjI3LjJ2LTU2LjAwMWgtNTUuNzMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVQbHVzU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE2NCAzNTZjLTU1LjMgMC0xMDAtNDQuNy0xMDAtMTAwczQ0LjctMTAwIDEwMC0xMDBjMjcgMCA0OS41IDkuOCA2NyAyNi4ybC0yNy4xIDI2LjFjLTcuNC03LjEtMjAuMy0xNS40LTM5LjgtMTUuNC0zNC4xIDAtNjEuOSAyOC4yLTYxLjkgNjMuMiAwIDM0LjkgMjcuOCA2My4yIDYxLjkgNjMuMiAzOS42IDAgNTQuNC0yOC41IDU2LjgtNDMuMUgxNjR2LTM0LjRoOTQuNGMxIDUgMS42IDEwLjEgMS42IDE2LjYgMCA1Ny4xLTM4LjMgOTcuNi05NiA5Ny42em0yMjAtODEuOGgtMjl2MjloLTI5LjJ2LTI5aC0yOVYyNDVoMjl2LTI5SDM1NXYyOWgyOXYyOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Niw4QzExOS4xLDgsOCwxMTkuMSw4LDI1NlMxMTkuMSw1MDQsMjU2LDUwNCw1MDQsMzkyLjksNTA0LDI1NiwzOTIuOSw4LDI1Niw4Wk0xODUuMywzODBhMTI0LDEyNCwwLDAsMSwwLTI0OGMzMS4zLDAsNjAuMSwxMSw4MywzMi4zbC0zMy42LDMyLjZjLTEzLjItMTIuOS0zMS4zLTE5LjEtNDkuNC0xOS4xLTQyLjksMC03Ny4yLDM1LjUtNzcuMiw3OC4xUzE0Mi4zLDMzNCwxODUuMywzMzRjMzIuNiwwLDY0LjktMTkuMSw3MC4xLTUzLjNIMTg1LjNWMjM4LjFIMzAyLjJhMTA5LjIsMTA5LjIsMCwwLDEsMS45LDIwLjdjMCw3MC44LTQ3LjUsMTIxLjItMTE4LjgsMTIxLjJaTTQxNS41LDI3My44djM1LjVIMzgwVjI3My44SDM0NC41VjIzOC4zSDM4MFYyMDIuOGgzNS41djM1LjVoMzUuMnYzNS41WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVXYWxsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU2LjggMTI2LjhjMzcuNiA2MC42IDY0LjIgMTEzLjEgODQuMyAxNjIuNS04LjMgMzMuOC0xOC44IDY2LjUtMzEuMyA5OC4zLTEzLjItNTIuMy0yNi41LTEwMS4zLTU2LTE0OC41IDYuNS0zNi40IDIuMy03My42IDMtMTEyLjN6TTEwOS4zIDIwMEgxNi4xYy02LjUgMC0xMC41IDcuNS02LjUgMTIuN0M1MS44IDI2NyA4MS4zIDMzMC41IDEwMS4zIDQwMGgxMDMuNWMtMTYuMi02OS43LTM4LjctMTMzLjctODIuNS0xOTMuNS0zLTQtOC02LjUtMTMtNi41em00Ny44LTg4YzY4LjUgMTA4IDEzMCAyMzQuNSAxMzguMiAzNjhINDA5Yy0xMi0xMzgtNjguNC0yNjUtMTQzLjItMzY4SDE1Ny4xem0yNTEuOC02OC41Yy0xLjgtNi44LTguMi0xMS41LTE1LjItMTEuNWgtODguM2MtNS4zIDAtOSA1LTcuOCAxMC4zIDEzLjIgNDYuNSAyMi4zIDk1LjUgMjYuNSAxNDYgNDguMiA4Ni4yIDc5LjcgMTc4LjMgOTAuNiAyNzAuOCAxNS44LTYwLjUgMjUuMy0xMzMuNSAyNS4zLTIwMyAwLTczLjYtMTIuMS0xNDUuMS0zMS4xLTIxMi42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4IDI2MS44QzQ4OCA0MDMuMyAzOTEuMSA1MDQgMjQ4IDUwNCAxMTAuOCA1MDQgMCAzOTMuMiAwIDI1NlMxMTAuOCA4IDI0OCA4YzY2LjggMCAxMjMgMjQuNSAxNjYuMyA2NC45bC02Ny41IDY0LjlDMjU4LjUgNTIuNiA5NC4zIDExNi42IDk0LjMgMjU2YzAgODYuNSA2OS4xIDE1Ni42IDE1My43IDE1Ni42IDk4LjIgMCAxMzUtNzAuNCAxNDAuOC0xMDYuOUgyNDh2LTg1LjNoMjM2LjFjMi4zIDEyLjcgMy45IDI0LjkgMy45IDQxLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyYXRpcGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4xIDggMCAxMTkuMSAwIDI1NnMxMTEuMSAyNDggMjQ4IDI0OCAyNDgtMTExLjEgMjQ4LTI0OFMzODQuOSA4IDI0OCA4em0xMTQuNiAyMjYuNGwtMTEzIDE1Mi43LTExMi43LTE1Mi43Yy04LjctMTEuOS0xOS4xLTUwLjQgMTMuNi03MiAyOC4xLTE4LjEgNTQuNi00LjIgNjguNSAxMS45IDE1LjkgMTcuOSA0Ni42IDE2LjkgNjEuNyAwIDEzLjktMTYuMSA0MC40LTMwIDY4LjEtMTEuOSAzMi45IDIxLjYgMjIuNiA2MCAxMy44IDcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmF2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMS4xIDIxMmM0LjQgNC40IDQuNCAxMS45IDAgMTYuM2wtOS43IDkuN2MtNC40IDQuNy0xMS45IDQuNy0xNi42IDBsLTEwLjUtMTAuNWMtNC40LTQuNy00LjQtMTEuOSAwLTE2LjZsOS43LTkuN2M0LjQtNC40IDExLjktNC40IDE2LjYgMGwxMC41IDEwLjh6bS0zMC4yLTE5LjdjMy0zIDMtNy44IDAtMTAuNS0yLjgtMy03LjUtMy0xMC41IDAtMi44IDIuOC0yLjggNy41IDAgMTAuNSAzLjEgMi44IDcuOCAyLjggMTAuNSAwem0tMjYgNS4zYy0zIDIuOC0zIDcuNSAwIDEwLjIgMi44IDMgNy41IDMgMTAuNSAwIDIuOC0yLjggMi44LTcuNSAwLTEwLjItMy0zLTcuNy0zLTEwLjUgMHptNzIuNS0xMy4zYy0xOS45LTE0LjQtMzMuOC00My4yLTExLjktNjguMSAyMS42LTI0LjkgNDAuNy0xNy4yIDU5LjguOCAxMS45IDExLjMgMjkuMyAyNC45IDE3LjIgNDguMi0xMi41IDIzLjUtNDUuMSAzMy4yLTY1LjEgMTkuMXptNDcuNy00NC41Yy04LjktMTAtMjMuMyA2LjktMTUuNSAxNi4xIDcuNCA5IDMyLjEgMi40IDE1LjUtMTYuMXpNNTA0IDI1NmMwIDEzNy0xMTEgMjQ4LTI0OCAyNDhTOCAzOTMgOCAyNTYgMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4em0tNjYuMiA0Mi42YzIuNS0xNi4xLTIwLjItMTYuNi0yNS4yLTI1LjctMTMuNi0yNC4xLTI3LjctMzYuOC01NC41LTMwLjQgMTEuNi04IDIzLjUtNi4xIDIzLjUtNi4xLjMtNi40IDAtMTMtOS40LTI0LjkgMy45LTEyLjUuMy0yMi40LjMtMjIuNCAxNS41LTguNiAyNi44LTI0LjQgMjkuMS00My4yIDMuNi0zMS0xOC44LTU5LjItNDkuOC02Mi44LTIyLjEtMi41LTQzLjcgNy43LTU0LjMgMjUuNy0yMy4yIDQwLjEgMS40IDcwLjkgMjIuNCA4MS40LTE0LjQtMS40LTM0LjMtMTEuOS00MC4xLTM0LjMtNi42LTI1LjcgMi44LTQ5LjggOC45LTYxLjQgMCAwLTQuNC01LjgtOC04LjkgMCAwLTEzLjggMC0yNC42IDUuMyAxMS45LTE1LjIgMjUuMi0xNC40IDI1LjItMTQuNCAwLTYuNC0uNi0xNC45LTMuNi0yMS42LTUuNC0xMS0yMy44LTEyLjktMzEuNyAyLjguMS0uMi4zLS40LjQtLjUtNSAxMS45LTEuMSA1NS45IDE2LjkgODcuMi0yLjUgMS40LTkuMSA2LjEtMTMgMTAtMjEuNiA5LjctNTYuMiA2MC4zLTU2LjIgNjAuMy0yOC4yIDEwLjgtNzcuMiA1MC45LTcwLjYgNzkuNy4zIDMgMS40IDUuNSAzIDcuNS0yLjggMi4yLTUuNSA1LTguMyA4LjMtMTEuOSAxMy44LTUuMyAzNS4yIDE3LjcgMjQuNCAxNS44LTcuMiAyOS42LTIwLjIgMzYuMy0zMC40IDAgMC01LjUtNS0xNi4zLTQuNCAyNy43LTYuNiAzNC4zLTkuNCA0Ni4yLTkuMSA4IDMuOSA4LTM0LjMgOC0zNC4zIDAtMTQuNy0yLjItMzEtMTEuMS00MS41IDEyLjUgMTIuMiAyOS4xIDMyLjcgMjggNjAuNi0uOCAxOC4zLTE1LjIgMjMtMTUuMiAyMy05LjEgMTYuNi00My4yIDY1LjktMzAuNCAxMDYgMCAwLTkuNy0xNC45LTEwLjItMjIuMS0xNy40IDE5LjQtNDYuNSA1Mi4zLTI0LjYgNjQuNSAyNi42IDE0LjcgMTA4LjgtODguNiAxMjYuMi0xNDIuMyAzNC42LTIwLjggNTUuNC00Ny4zIDYzLjktNjUgMjIgNDMuNSA5NS4zIDk0LjUgMTAxLjEgNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaXBmaXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMi41IDMwMS40YzAtNzMuOCAxMDUuMS0xMjIuNSAxMDUuMS0yMDMgMC00Ny4xLTM0LTg4LTM5LjEtOTAuNC40IDMuMy42IDYuNy42IDEwQzE3OS4xIDExMC4xIDMyIDE3MS45IDMyIDI4Ni42YzAgNDkuOCAzMi4yIDc5LjIgNjYuNSAxMDguMyA2NS4xIDQ2LjcgNzguMSA3MS40IDc4LjEgODYuNiAwIDEwLjEtNC44IDE3LTQuOCAyMi4zIDEzLjEtMTYuNyAxNy40LTMxLjkgMTcuNS00Ni40IDAtMjkuNi0yMS43LTU2LjMtNDQuMi04Ni41LTE2LTIyLjMtMzIuNi00Mi42LTMyLjYtNjkuNXptMjA1LjMtMzljLTEyLjEtNjYuOC03OC0xMjQuNC05NC43LTEzMC45bDQgNy4yYzIuNCA1LjEgMy40IDEwLjkgMy40IDE3LjEgMCA0NC43LTU0LjIgMTExLjItNTYuNiAxMTYuNy0yLjIgNS4xLTMuMiAxMC41LTMuMiAxNS44IDAgMjAuMSAxNS4yIDQyLjEgMTcuOSA0Mi4xIDIuNCAwIDU2LjYtNTUuNCA1OC4xLTg3LjcgNi40IDExLjcgOS4xIDIyLjYgOS4xIDMzLjQgMCA0MS4yLTQxLjggOTYuOS00MS44IDk2LjkgMCAxMS42IDMxLjkgNTMuMiAzNS41IDUzLjIgMSAwIDIuMi0xLjQgMy4yLTIuNCAzNy45LTM5LjMgNjcuMy04NSA2Ny4zLTEzNi44IDAtOC0uNy0xNi4yLTIuMi0yNC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcnVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MS4zIDE4OS4zYy0xLjEgMTAgNS4yIDE5LjEgNS4yIDE5LjEuNy03LjUgMi4yLTEyLjggNC0xNi42LjQgMTAuMyAzLjIgMjMuNSAxMi44IDM0LjEgNi45IDcuNiAzNS42IDIzLjMgNTQuOSA2LjEgMSAyLjQgMi4xIDUuMyAzIDguNSAyLjkgMTAuMy0yLjcgMjUuMy0yLjcgMjUuM3MxNS4xLTE3LjEgMTMuOS0zMi41YzEwLjgtLjUgMjEuNC04LjQgMjEuMS0xOS41IDAgMC0xOC45IDEwLjQtMzUuNS04LjgtOS43LTExLjItNDAuOS00Mi04My4xLTMxLjggNC4zIDEgOC45IDIuNCAxMy41IDQuMWgtLjFjLTQuMiAyLTYuNSA3LjEtNyAxMnptMjguMy0xLjhjMTkuNSAxMSAzNy40IDI1LjcgNDQuOSAzNy01LjcgMy4zLTIxLjcgMTAuNC0zOC0xLjctMTAuMy03LjYtOS44LTI2LjItNi45LTM1LjN6bTE0Mi4xIDQ1LjhjLTEuMiAxNS41IDEzLjkgMzIuNSAxMy45IDMyLjVzLTUuNi0xNS0yLjctMjUuM2MuOS0zLjIgMi02IDMtOC41IDE5LjMgMTcuMyA0OCAxLjUgNTQuOC02LjEgOS42LTEwLjYgMTIuMy0yMy44IDEyLjgtMzQuMSAxLjggMy44IDMuNCA5LjEgNCAxNi42IDAgMCA2LjQtOS4xIDUuMi0xOS4xLS42LTUtMi45LTEwLTctMTEuOGgtLjFjNC42LTEuOCA5LjItMy4yIDEzLjUtNC4xLTQyLjMtMTAuMi03My40IDIwLjYtODMuMSAzMS44LTE2LjcgMTkuMi0zNS41IDguOC0zNS41IDguOC0uMiAxMC45IDEwLjQgMTguOSAyMS4yIDE5LjN6bTYyLjctNDUuOGMzIDkuMSAzLjQgMjcuNy03IDM1LjQtMTYuMyAxMi4xLTMyLjIgNS0zNy45IDEuNiA3LjUtMTEuNCAyNS40LTI2IDQ0LjktMzd6TTE2MCA0MTguNWgtMjkuNGMtNS41IDAtOC4yIDEuNi05LjUgMi45LTEuOSAyLTIuMiA0LjctLjkgOC4xIDMuNSA5LjEgMTEuNCAxNi41IDEzLjcgMTguNiAzLjEgMi43IDcuNSA0LjMgMTEuOCA0LjMgNC40IDAgOC4zLTEuNyAxMS00LjYgNy41LTguMiAxMS45LTE3LjEgMTMtMTkuOC42LTEuNSAxLjMtNC41LS45LTYuOC0xLjgtMS44LTQuNy0yLjctOC44LTIuN3ptMTg5LjItMTAxLjJjLTIuNCAxNy45LTEzIDMzLjgtMjQuNiA0My43LTMuMS0yMi43LTMuNy01NS41LTMuNy02Mi40IDAtMTQuNyA5LjUtMjQuNSAxMi4yLTI2LjEgMi41LTEuNSA1LjQtMyA4LjMtNC42IDE4LTkuNiA0MC40LTIxLjYgNDAuNC00My43IDAtMTYuMi05LjMtMjMuMi0xNS40LTI3LjgtLjgtLjYtMS41LTEuMS0yLjItMS43LTIuMS0xLjctMy43LTMtNC4zLTQuNC00LjQtOS44LTMuNi0zNC4yLTEuNy0zNy42LjYtLjYgMTYuNy0yMC45IDExLjgtMzkuMi0yLTcuNC02LjktMTMuMy0xNC4xLTE3LTUuMy0yLjctMTEuOS00LjItMTkuNS00LjUtLjEtMi0uNS0zLjktLjktNS45LS42LTIuNi0xLjEtNS4zLS45LTguMS40LTQuNy44LTkgMi4yLTExLjMgOC40LTEzLjMgMjguOC0xNy42IDI5LTE3LjZsMTIuMy0yLjQtOC4xLTkuNWMtLjEtLjItMTcuMy0xNy41LTQ2LjMtMTcuNS03LjkgMC0xNiAxLjMtMjQuMSAzLjktMjQuMiA3LjgtNDIuOSAzMC41LTQ5LjQgMzkuMy0zLjEtMS02LjMtMS45LTkuNi0yLjctNC4yLTE1LjggOS0zOC41IDktMzguNXMtMTMuNi0zLTMzLjcgMTUuMmMtMi42LTYuNS04LjEtMjAuNS0xLjgtMzcuMkMxODQuNiAxMC4xIDE3Ny4yIDI2IDE3NSA0MC40Yy03LjYtNS40LTYuNy0yMy4xLTcuMi0yNy42LTcuNS45LTI5LjIgMjEuOS0yOC4yIDQ4LjMtMiAuNS0zLjkgMS4xLTUuOSAxLjctNi41LTguOC0yNS4xLTMxLjUtNDkuNC0zOS4zLTcuOS0yLjItMTYtMy41LTIzLjktMy41LTI5IDAtNDYuMSAxNy4zLTQ2LjMgMTcuNUw2IDQ2LjlsMTIuMyAyLjRjLjIgMCAyMC42IDQuMyAyOSAxNy42IDEuNCAyLjIgMS44IDYuNiAyLjIgMTEuMy4yIDIuOC0uNCA1LjUtLjkgOC4xLS40IDEuOS0uOCAzLjktLjkgNS45LTcuNy4zLTE0LjIgMS44LTE5LjUgNC41LTcuMiAzLjctMTIuMSA5LjYtMTQuMSAxNy01IDE4LjIgMTEuMiAzOC41IDExLjggMzkuMiAxLjkgMy40IDIuNyAyNy44LTEuNyAzNy42LS42IDEuNC0yLjIgMi43LTQuMyA0LjQtLjcuNS0xLjQgMS4xLTIuMiAxLjctNi4xIDQuNi0xNS40IDExLjctMTUuNCAyNy44IDAgMjIuMSAyMi40IDM0LjEgNDAuNCA0My43IDMgMS42IDUuOCAzLjEgOC4zIDQuNiAyLjcgMS42IDEyLjIgMTEuNCAxMi4yIDI2LjEgMCA2LjktLjYgMzkuNy0zLjcgNjIuNC0xMS42LTkuOS0yMi4yLTI1LjktMjQuNi00My44IDAgMC0yOS4yIDIyLjYtMjAuNiA3MC44IDUuMiAyOS41IDIzLjIgNDYuMSA0NyA1NC43IDguOCAxOS4xIDI5LjQgNDUuNyA2Ny4zIDQ5LjZDMTQzIDUwNC4zIDE2MyA1MTIgMTkyLjIgNTEyaC4yYzI5LjEgMCA0OS4xLTcuNyA2My42LTE5LjUgMzcuOS0zLjkgNTguNS0zMC41IDY3LjMtNDkuNiAyMy44LTguNyA0MS43LTI1LjIgNDctNTQuNyA4LjItNDguNC0yMS4xLTcwLjktMjEuMS03MC45ek0zMDUuNyAzNy43YzUuNi0xLjggMTEuNi0yLjcgMTcuNy0yLjcgMTEgMCAxOS45IDMgMjQuNyA1LTMuMSAxLjQtNi40IDMuMi05LjcgNS4zLTIuNC0uNC01LjYtLjgtOS4yLS44LTEwLjUgMC0yMC41IDMuMS0yOC43IDguOS0xMi4zIDguNy0xOCAxNi45LTIwLjcgMjIuNC0yLjItMS4zLTQuNS0yLjUtNy4xLTMuNy0xLjYtLjgtMy4xLTEuNS00LjctMi4yIDYuMS05LjEgMTkuOS0yNi41IDM3LjctMzIuMnptMjEgMTguMmMtLjggMS0xLjYgMi4xLTIuMyAzLjItMy4zIDUuMi0zLjkgMTEuNi00LjQgMTcuOC0uNSA2LjQtMS4xIDEyLjUtNC40IDE3LTQuMi44LTguMSAxLjctMTEuNSAyLjctMi4zLTMuMS01LjYtNy0xMC41LTExLjIgMS40LTQuOCA1LjUtMTYuMSAxMy41LTIyLjUgNS42LTQuMyAxMi4yLTYuNyAxOS42LTd6TTQ1LjYgNDUuM2MtMy4zLTIuMi02LjYtNC05LjctNS4zIDQuOC0yIDEzLjctNSAyNC43LTUgNi4xIDAgMTIgLjkgMTcuNyAyLjcgMTcuOCA1LjggMzEuNiAyMy4yIDM3LjcgMzIuMS0xLjYuNy0zLjIgMS40LTQuOCAyLjItMi41IDEuMi00LjkgMi41LTcuMSAzLjctMi42LTUuNC04LjMtMTMuNy0yMC43LTIyLjQtOC4zLTUuOC0xOC4yLTguOS0yOC44LTguOS0zLjQuMS02LjYuNS05IC45em00NC43IDQwLjFjLTQuOSA0LjItOC4zIDgtMTAuNSAxMS4yLTMuNC0uOS03LjMtMS45LTExLjUtMi43QzY1IDg5LjUgNjQuNSA4My40IDY0IDc3Yy0uNS02LjItMS4xLTEyLjYtNC40LTE3LjgtLjctMS4xLTEuNS0yLjItMi4zLTMuMiA3LjQuMyAxNCAyLjYgMTkuNSA3IDggNi4zIDEyLjEgMTcuNiAxMy41IDIyLjR6TTU4LjEgMjU5LjljLTIuNy0xLjYtNS42LTMuMS04LjQtNC42LTE0LjktOC0zMC4yLTE2LjMtMzAuMi0zMC41IDAtMTEuMSA0LjMtMTQuNiA4LjktMTguMmwuNS0uNGMuNy0uNiAxLjQtMS4yIDIuMi0xLjgtLjkgNy4yLTEuOSAxMy4zLTIuNyAxNC45IDAgMCAxMi4xLTE1IDE1LjctNDQuMyAxLjQtMTEuNS0xLjEtMzQuMy01LjEtNDMgLjIgNC45IDAgOS44LS4zIDE0LjQtLjQtLjgtLjgtMS42LTEuMy0yLjItMy4yLTQtMTEuOC0xNy41LTkuNC0yNi42LjktMy41IDMuMS02IDYuNy03LjggMy44LTEuOSA4LjgtMi45IDE1LjEtMi45IDEyLjMgMCAyNS45IDMuNyAzMi45IDYgMjUuMSA4IDU1LjQgMzAuOSA2NC4xIDM3LjcuMi4yLjQuMy40LjNsNS42IDMuOS0zLjUtNS44Yy0uMi0uMy0xOS4xLTMxLjQtNTMuMi00Ni41IDItMi45IDcuNC04LjEgMjEuNi0xNS4xIDIxLjQtMTAuNSA0Ni41LTE1LjggNzQuMy0xNS44IDI3LjkgMCA1Mi45IDUuMyA3NC4zIDE1LjggMTQuMiA2LjkgMTkuNiAxMi4yIDIxLjYgMTUuMS0zNCAxNS4xLTUyLjkgNDYuMi01My4xIDQ2LjVsLTMuNSA1LjggNS42LTMuOXMuMi0uMS40LS4zYzguNy02LjggMzktMjkuOCA2NC4xLTM3LjcgNy0yLjIgMjAuNi02IDMyLjktNiA2LjMgMCAxMS4zIDEgMTUuMSAyLjkgMy41IDEuOCA1LjcgNC40IDYuNyA3LjggMi41IDkuMS02LjEgMjIuNi05LjQgMjYuNi0uNS42LS45IDEuMy0xLjMgMi4yLS4zLTQuNi0uNS05LjUtLjMtMTQuNC00IDguOC02LjUgMzEuNS01LjEgNDMgMy42IDI5LjMgMTUuNyA0NC4zIDE1LjcgNDQuMy0uOC0xLjYtMS44LTcuNy0yLjctMTQuOS43LjYgMS41IDEuMiAyLjIgMS44bC41LjRjNC42IDMuNyA4LjkgNy4xIDguOSAxOC4yIDAgMTQuMi0xNS40IDIyLjUtMzAuMiAzMC41LTIuOSAxLjUtNS43IDMuMS04LjQgNC42LTguNyA1LTE4IDE2LjctMTkuMSAzNC4yLS45IDE0LjYuOSA0OS45IDMuNCA3NS45LTEyLjQgNC44LTI2LjcgNi40LTM5LjcgNi44LTItNC4xLTMuOS04LjUtNS41LTEzLjEtLjctMi0xOS42LTUxLjEtMjYuNC02Mi4yIDUuNSAzOSAxNy41IDczLjcgMjMuNSA4OS42LTMuNS0uNS03LjMtLjctMTEuNy0uN2gtMTE3Yy00LjQgMC04LjMuMy0xMS43LjcgNi0xNS45IDE4LjEtNTAuNiAyMy41LTg5LjYtNi44IDExLjItMjUuNyA2MC4zLTI2LjQgNjIuMi0xLjYgNC42LTMuNSA5LTUuNSAxMy4xLTEzLS40LTI3LjItMi0zOS43LTYuOCAyLjUtMjYgNC4zLTYxLjIgMy40LTc1LjktLjktMTcuNC0xMC4zLTI5LjItMTktMzQuMnpNMzQuOCA0MDQuNmMtMTIuMS0yMC04LjctNTQuMS0zLjctNTkuMSAxMC45IDM0LjQgNDcuMiA0NC4zIDc0LjQgNDUuNC0yLjcgNC4yLTUuMiA3LjYtNyAxMGwtMS40IDEuNGMtNy4yIDcuOC04LjYgMTguNS00LjEgMzEuOC0yMi43LS4xLTQ2LjMtOS44LTU4LjItMjkuNXptNDUuNyA0My41YzYgMS4xIDEyLjIgMS45IDE4LjYgMi40IDMuNSA4IDcuNCAxNS45IDEyLjMgMjMuMS0xNC40LTUuOS0yNC40LTE2LTMwLjktMjUuNXpNMTkyIDQ5OC4yYy02MC42LS4xLTc4LjMtNDUuOC04NC45LTY0LjctMy43LTEwLjUtMy40LTE4LjIuOS0yMy4xIDIuOS0zLjMgOS41LTcuMiAyNC42LTcuMmgxMTguOGMxNS4xIDAgMjEuOCAzLjkgMjQuNiA3LjIgNC4yIDQuOCA0LjUgMTIuNi45IDIzLjEtNi42IDE4LjgtMjQuMyA2NC42LTg0LjkgNjQuN3ptODAuNi0yNC42YzQuOS03LjIgOC44LTE1LjEgMTIuMy0yMy4xIDYuNC0uNSAxMi42LTEuMyAxOC42LTIuNC02LjUgOS41LTE2LjUgMTkuNi0zMC45IDI1LjV6bTc2LjYtNjljLTEyIDE5LjctMzUuNiAyOS4zLTU4LjEgMjkuNyA0LjUtMTMuMyAzLjEtMjQuMS00LjEtMzEuOC0uNC0uNS0uOS0xLTEuNC0xLjUtMS44LTIuNC00LjMtNS44LTctMTAgMjcuMi0xLjIgNjMuNS0xMSA3NC40LTQ1LjQgNSA1IDguNCAzOS4xLTMuOCA1OXpNMTkxLjkgMTg3LjdoLjJjMTIuNy0uMSAyNy4yLTE3LjggMjcuMi0xNy44LTkuOSA2LTE4LjggOC4xLTI3LjMgOC4zLTguNS0uMi0xNy40LTIuMy0yNy4zLTguMyAwIDAgMTQuNSAxNy42IDI3LjIgMTcuOHptNjEuNyAyMzAuN2gtMjkuNGMtNC4yIDAtNy4yLjktOC45IDIuNy0yLjIgMi4zLTEuNSA1LjItLjkgNi43IDEgMi42IDUuNSAxMS4zIDEzIDE5LjMgMi43IDIuOSA2LjYgNC41IDExIDQuNXM4LjctMS42IDExLjgtNC4yYzIuMy0yIDEwLjItOS4yIDEzLjctMTguMSAxLjMtMy4zIDEtNi0uOS03LjktMS4zLTEuMy00LTIuOS05LjQtM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3VpbGRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDMuNDI3LDY0SDQuNTcxYzAsMTAzLjI2LDIyLjE5MiwxODAuMDYsNDMuNDE4LDIyMi4zNThDMTEyLjA0Niw0MTQuMTM1LDIyNCw0NDgsMjI1LjI1Niw0NDhhMzEyLjgyNCwzMTIuODI0LDAsMCwwLDE0MC41NS0xMDMuNDc3YzI1LjkwNy0zMy45MjMsNTMuMS04Ny4xOSw2NS45MTYtMTQ1Ljc2MUgxNzEuODMzYzQuMTQsMzYuNDI5LDIyLjE3Nyw2Ny45NDYsNDUuMSw4Ni45NDRoODguNTg5Yy0xNy4wMTIsMjguMjEzLTQ4LjE4Niw1NC40LTgwLjQ1Niw2OS40ODItMzEuMjMyLTEzLjI1OS02OS4wOS00Ni41NDQtOTYuNTQ4LTk4LjM2Mi0yNi43MjYtNTMuODMzLTI3LjA5Mi0xMDUuODgzLTI3LjA5Mi0xMDUuODgzSDQzNy41NzNBNjI1LjkxLDYyNS45MSwwLDAsMCw0NDMuNDI3LDY0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHdWxwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOS44IDM5MS4xbC0xNC4xIDI0LjYtNC42IDgwLjJjMCA4LjktMjguMyAxNi4xLTYzLjEgMTYuMXMtNjMuMS03LjItNjMuMS0xNi4xbC01LjgtNzkuNC0xNC45LTI1LjRjNDEuMiAxNy4zIDEyNiAxNi43IDE2NS42IDB6bS0xOTYtMjUzLjNsMTMuNiAxMjUuNWM1LjktMjAgMjAuOC00NyA0MC01NS4yIDYuMy0yLjcgMTIuNy0yLjcgMTguNy45IDUuMiAzIDkuNiA5LjMgMTAuMSAxMS44IDEuMiA2LjUtMiA5LjEtNC41IDkuMS0zIDAtNS4zLTQuNi02LjgtNy4zLTQuMS03LjMtMTAuMy03LjYtMTYuOS0yLjgtNi45IDUtMTIuOSAxMy40LTE3LjEgMjAuNy01LjEgOC44LTkuNCAxOC41LTEyIDI4LjItMS41IDUuNi0yLjkgMTQuNi0uNiAxOS45IDEgMi4yIDIuNSAzLjYgNC45IDMuNiA1IDAgMTIuMy02LjYgMTUuOC0xMC4xIDQuNS00LjUgMTAuMy0xMS41IDEyLjUtMTZsNS4yLTE1LjVjMi42LTYuOCA5LjktNS42IDkuOSAwIDAgMTAuMi0zLjcgMTMuNi0xMCAzNC43LTUuOCAxOS41LTcuNiAyNS44LTcuNiAyNS44LS43IDIuOC0zLjQgNy41LTYuMyA3LjUtMS4yIDAtMi4xLS40LTIuNi0xLjItMS0xLjQtLjktNS4zLS44LTYuMy4yLTMuMiA2LjMtMjIuMiA3LjMtMjUuMi0yIDIuMi00LjEgNC40LTYuNCA2LjYtNS40IDUuMS0xNC4xIDExLjgtMjEuNSAxMS44LTMuNCAwLTUuNi0uOS03LjctMi40bDcuNiA3OS42YzIgNSAzOS4yIDE3LjEgODguMiAxNy4xIDQ5LjEgMCA4Ni4zLTEyLjIgODguMi0xNy4xbDEwLjktOTQuNmMtNS43IDUuMi0xMi4zIDExLjYtMTkuNiAxNC44LTUuNCAyLjMtMTcuNCAzLjgtMTcuNC01LjcgMC01LjIgOS4xLTE0LjggMTQuNC0yMS41IDEuNC0xLjcgNC43LTUuOSA0LjctOC4xIDAtMi45LTYtMi4yLTExLjcgMi41LTMuMiAyLjctNi4yIDYuMy04LjcgOS43LTQuMyA2LTYuNiAxMS4yLTguNSAxNS41LTYuMiAxNC4yLTQuMSA4LjYtOS4xIDIyLTUgMTMuMy00LjIgMTEuOC01LjIgMTQtLjkgMS45LTIuMiAzLjUtNCA0LjUtMS45IDEtNC41LjktNi4xLS4zLS45LS42LTEuMy0xLjktMS4zLTMuNyAwLS45LjEtMS44LjMtMi43IDEuNS02LjEgNy44LTE4LjEgMTUtMzQuMyAxLjYtMy43IDEtMi42LjgtMi4zLTYuMiA2LTEwLjkgOC45LTE0LjQgMTAuNS01LjggMi42LTEzIDIuNi0xNC41LTQuMS0uMS0uNC0uMS0uOC0uMi0xLjItMTEuOCA5LjItMjQuMyAxMS43LTIwLTguMS00LjYgOC4yLTEyLjYgMTQuOS0yMi40IDE0LjktNC4xIDAtNy4xLTEuNC04LjYtNS4xLTIuMy01LjUgMS4zLTE0LjkgNC42LTIzLjggMS43LTQuNSA0LTkuOSA3LjEtMTYuMiAxLjYtMy40IDQuMi01LjQgNy42LTQuNS42LjIgMS4xLjQgMS42LjcgMi42IDEuOCAxLjYgNC41LjMgNy4yLTMuOCA3LjUtNy4xIDEzLTkuMyAyMC44LS45IDMuMy0yIDkgMS41IDkgMi40IDAgNC43LS44IDYuOS0yLjQgNC42LTMuNCA4LjMtOC41IDExLjEtMTMuNSAyLTMuNiA0LjQtOC4zIDUuNi0xMi4zLjUtMS43IDEuMS0zLjMgMS44LTQuOCAxLjEtMi41IDIuNi01LjEgNS4yLTUuMSAxLjMgMCAyLjQuNSAzLjIgMS41IDEuNyAyLjIgMS4zIDQuNS40IDYuOS0yIDUuNi00LjcgMTAuNi02LjkgMTYuNy0xLjMgMy41LTIuNyA4LTIuNyAxMS43IDAgMy40IDMuNyAyLjYgNi44IDEuMiAyLjQtMS4xIDQuOC0yLjggNi44LTQuNSAxLjItNC45LjktMy44IDI2LjQtNjguMiAxLjMtMy4zIDMuNy00LjcgNi4xLTQuNyAxLjIgMCAyLjIuNCAzLjIgMS4xIDEuNyAxLjMgMS43IDQuMSAxIDYuMi0uNyAxLjktLjYgMS4zLTQuNSAxMC41LTUuMiAxMi4xLTguNiAyMC44LTEzLjIgMzEuOS0xLjkgNC42LTcuNyAxOC45LTguNyAyMi4zLS42IDIuMi0xLjMgNS44IDEgNS44IDUuNCAwIDE5LjMtMTMuMSAyMy4xLTE3IC4yLS4zLjUtLjQuOS0uNi42LTEuOSAxLjItMy43IDEuNy01LjUgMS40LTMuOCAyLjctOC4yIDUuMy0xMS4zLjgtMSAxLjctMS42IDIuNy0xLjYgMi44IDAgNC4yIDEuMiA0LjIgNCAwIDEuMS0uNyA1LjEtMS4xIDYuMiAxLjQtMS41IDIuOS0zIDQuNS00LjUgMTUtMTMuOSAyNS43LTYuOCAyNS43LjIgMCA3LjQtOC45IDE3LjctMTMuOCAyMy40LTEuNiAxLjktNC45IDUuNC01IDYuNCAwIDEuMy45IDEuOCAyLjIgMS44IDIgMCA2LjQtMy41IDgtNC43IDUtMy45IDExLjgtOS45IDE2LjYtMTQuMWwxNC44LTEzNi44Yy0zMC41IDE3LjEtMTk3LjYgMTcuMi0yMjguMy4yem0yMjkuNy04LjVjMCAyMS0yMzEuMiAyMS0yMzEuMiAwIDAtOC44IDUxLjgtMTUuOSAxMTUuNi0xNS45IDkgMCAxNy44LjEgMjYuMy40bDEyLjYtNDguN0wyMjguMS42YzEuNC0xLjQgNS44LS4yIDkuOSAzLjVzNi42IDcuOSA1LjMgOS4zbC0uMS4xTDE4NS45IDc0bC0xMCA0MC43YzM5LjkgMi42IDY3LjYgOC4xIDY3LjYgMTQuNnptLTY5LjQgNC42YzAtLjgtLjktMS41LTIuNS0yLjFsLS4yLjhjMCAxLjMtNSAyLjQtMTEuMSAyLjRzLTExLjEtMS4xLTExLjEtMi40YzAtLjEgMC0uMi4xLS4zbC4yLS43Yy0xLjguNi0zIDEuNC0zIDIuMyAwIDIuMSA2LjIgMy43IDEzLjcgMy43IDcuNy4xIDEzLjktMS42IDEzLjktMy43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYWNrZXJOZXdzU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTIxLjIgMjI5LjJIMjFjLjEtLjEuMi0uMy4zLS40IDAgLjEgMCAuMy0uMS40em0yMTggNTMuOVYzODRoLTMxLjRWMjgxLjNMMTI4IDEyOGgzNy4zYzUyLjUgOTguMyA0OS4yIDEwMS4yIDU5LjMgMTI1LjYgMTIuMy0yNyA1LjgtMjQuNCA2MC42LTEyNS42SDMyMGwtODAuOCAxNTUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFja2VyTmV3cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMydjQ0OGg0NDhWMzJIMHptMjEuMiAxOTcuMkgyMWMuMS0uMS4yLS4zLjMtLjQgMCAuMSAwIC4zLS4xLjR6bTIxOCA1My45VjM4NGgtMzEuNFYyODEuM0wxMjggMTI4aDM3LjNjNTIuNSA5OC4zIDQ5LjIgMTAxLjIgNTkuMyAxMjUuNiAxMi4zLTI3IDUuOC0yNC40IDYwLjYtMTI1LjZIMzIwbC04MC44IDE1NS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYWNrZXJyYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3Ny41IDEyOEM0NjMgMTAzLjA1IDI4NS4xMyAwIDI1Ni4xNiAwUzQ5LjI1IDEwMi43OSAzNC44NCAxMjhzLTE0LjQ5IDIzMC44IDAgMjU2IDE5Mi4zOCAxMjggMjIxLjMyIDEyOFM0NjMgNDA5LjA4IDQ3Ny40OSAzODRzMTQuNTEtMjMxIC4wMS0yNTZ6TTMxNi4xMyA0MTQuMjJjLTQgMC00MC45MS0zNS43Ny0zOC0zOC42OS44Ny0uODcgNi4yNi0xLjQ4IDE3LjU1LTEuODMgMC0yNi4yMy41OS02OC41OS45NC04Ni4zMiAwLTItLjQ0LTMuNDMtLjQ0LTUuODVoLTc5LjkzYzAgNy4xLS40NiAzNi4yIDEuMzcgNzIuODguMjMgNC41NC0xLjU4IDYtNS43NCA1Ljk0LTEwLjEzIDAtMjAuMjctLjExLTMwLjQxLS4wOC00LjEgMC01Ljg3LTEuNTMtNS43NC02LjExLjkyLTMzLjQ0IDMtODQtLjE1LTIxMi42N3YtMy4xN2MtOS42Ny0uMzUtMTYuMzgtMS0xNy4yNi0xLjg0LTIuOTItMi45MiAzNC41NC0zOC42OSAzOC40OS0zOC42OXM0MS4xNyAzNS43OCAzOC4yNyAzOC42OWMtLjg3Ljg3LTcuOSAxLjQ5LTE2Ljc3IDEuODR2My4xNmMtMi40MiAyNS43NS0yIDc5LjU5LTIuNjMgMTA1LjM5aDgwLjI2YzAtNC41NS4zOS0zNC43NC0xLjItODMuNjQtLjEtMy4zOS45NS01LjE3IDQuMjEtNS4yIDExLjA3LS4wOCAyMi4xNS0uMTMgMzMuMjMtLjA2IDMuNDYgMCA0LjU3IDEuNzIgNC41IDUuMzhDMzMzIDM1NC42NCAzMzYgMzQxLjI5IDMzNiAzNzMuNjljOC44Ny4zNSAxNi44MiAxIDE3LjY5IDEuODQgMi44OCAyLjkxLTMzLjYyIDM4LjY5LTM3LjU4IDM4LjY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIaXBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1MS42IDE1Ny42YzAtMS45LS45LTIuOC0yLjgtMi44aC00MC45Yy0xLjYgMC0yLjcgMS40LTIuNyAyLjh2MjAxLjhjMCAxLjQgMS4xIDIuOCAyLjcgMi44aDQwLjljMS45IDAgMi44LS45IDIuOC0yLjh6TTE1Ni41IDE2OGMtMTYuMS0xMS44LTM2LjMtMTcuOS02MC4zLTE4LTE4LjEtLjEtMzQuNiAzLjctNDkuOCAxMS40VjgwLjJjMC0xLjgtLjktMi43LTIuOC0yLjdIMi43Yy0xLjggMC0yLjcuOS0yLjcgMi43djI3OS4yYzAgMS45LjkgMi44IDIuNyAyLjhoNDFjMS45IDAgMi44LS45IDIuOC0yLjhWMjIzLjNjMC0uOC0yLjgtMjcgNDUuOC0yNyA0OC41IDAgNDUuOCAyNi4xIDQ1LjggMjd2MTIyLjZjMCA5IDcuMyAxNi4zIDE2LjQgMTYuM2gyNy4zYzEuOCAwIDIuNy0uOSAyLjctMi44VjIyMy4zYzAtMjMuNC05LjMtNDEuOC0yOC01NS4zem00NzguNCAxMTAuMWMtNi44LTE1LjctMTguNC0yNy0zNC45LTM0LjFsLTU3LjYtMjUuM2MtOC42LTMuNi05LjItMTEuMi0yLjYtMTYuMSA3LjQtNS41IDQ0LjMtMTMuOSA4NCA2LjggMS43IDEgNC0uMyA0LTIuNHYtNDQuN2MwLTEuMy0uNi0yLjEtMS45LTIuNi0xNy43LTYuNi0zNi4xLTkuOS01NS4xLTkuOS0yNi41IDAtNDUuMyA1LjgtNTguNSAxNS40LS41LjQtMjguNCAyMC0yMi43IDUzLjcgMy40IDE5LjYgMTUuOCAzNC4yIDM3LjIgNDMuNmw1My42IDIzLjVjMTEuNiA1LjEgMTUuMiAxMy4zIDEyLjIgMjEuMi0zLjcgOS4xLTEzLjIgMTMuNi0zNi41IDEzLjYtMjQuMyAwLTQ0LjctOC45LTU4LjQtMTkuMS0yLjEtMS40LTQuNC4yLTQuNCAyLjN2MzQuNGMwIDEwLjQgNC45IDE3LjMgMTQuNiAyMC43IDE1LjYgNS41IDMxLjYgOC4yIDQ4LjIgOC4yIDEyLjcgMCAyNS44LTEuMiAzNi4zLTQuMy43LS4zIDM2LTguOSA0NS42LTQ1LjggMy41LTEzLjUgMi40LTI2LjUtMy4xLTM5LjF6TTM3Ni4yIDE0OS44Yy0zMS43IDAtMTA0LjIgMjAuMS0xMDQuMiAxMDMuNXYxODMuNWMwIC44LjYgMi43IDIuNyAyLjdoNDAuOWMxLjkgMCAyLjgtLjkgMi44LTIuN1YzNDhjMTYuNSAxMi43IDM1LjggMTkuMSA1Ny43IDE5LjEgNjAuNSAwIDEwOC43LTQ4LjUgMTA4LjctMTA4LjcuMS02MC4zLTQ4LjItMTA4LjYtMTA4LjYtMTA4LjZ6bTAgMTcwLjljLTE3LjIgMC0zMS45LTYuMS00NC0xOC4yLTEyLjItMTIuMi0xOC4yLTI2LjgtMTguMi00NCAwLTM0LjUgMjcuNi02Mi4yIDYyLjItNjIuMiAzNC41IDAgNjIuMiAyNy42IDYyLjIgNjIuMi4xIDM0LjMtMjcuMyA2Mi4yLTYyLjIgNjIuMnpNMjI4LjMgNzIuNWMtMTUuOSAwLTI4LjggMTIuOS0yOC45IDI4LjkgMCAxNS42IDEyLjcgMjguOSAyOC45IDI4LjlzMjguOS0xMy4xIDI4LjktMjguOWMwLTE2LjItMTMtMjguOS0yOC45LTI4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpcmVBSGVscGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0My4xIDBINzEuOUM2Ny45IDM3LjMgMzcuNCA2Ny44IDAgNzEuN3YzNzEuNWMzNy40IDQuOSA2NiAzMi40IDcxLjkgNjguOGgzNzIuMmMzLTM2LjQgMzIuNS02NS44IDY3LjktNjkuOFY3MS43Yy0zNi40LTUuOS02NS0zNS4zLTY4LjktNzEuN3ptLTM3IDQwNC45Yy0zNi4zIDAtMTguOC0yLTU1LjEtMi0zNS44IDAtMjEgMi01Ni4xIDItNS45IDAtNC45LTguMiAwLTkuOCAyMi44LTcuNiAyMi45LTEwLjIgMjQuNi0xMi44IDEwLjQtMTUuNiA1LjktODMgNS45LTExMyAwLTUuMy02LjQtMTIuOC0xMy44LTEyLjhIMjAwLjRjLTcuNCAwLTEzLjggNy41LTEzLjggMTIuOCAwIDMwLTQuNSA5Ny40IDUuOSAxMTMgMS43IDIuNSAxLjggNS4yIDI0LjYgMTIuOCA0LjkgMS42IDYgOS44IDAgOS44LTM1LjEgMC0yMC4zLTItNTYuMS0yLTM2LjMgMC0xOC44IDItNTUuMSAyLTcuOSAwLTUuOC0xMC44IDAtMTAuOCAxMC4yLTMuNCAxMy41LTMuNSAyMS43LTEzLjggNy43LTEyLjkgNy45LTQ0LjQgNy45LTEyNy44VjE1MS4zYzAtMjIuMi0xMi4yLTI4LjMtMjguNi0zMi40LTguOC0yLjItNC0xMS44IDEtMTEuOCAzNi41IDAgMjAuNiAyIDU3LjEgMiAzMi43IDAgMTYuNS0yIDQ5LjItMiAzLjMgMCA4LjUgOC4zIDEgMTAuOC00LjkgMS42LTI3LjYgMy43LTI3LjYgMzkuMyAwIDQ1LjYtLjIgNTUuOCAxIDY4LjggMCAxLjMgMi4zIDEyLjggMTIuOCAxMi44aDEwOS4yYzEwLjUgMCAxMi44LTExLjUgMTIuOC0xMi44IDEuMi0xMyAxLTIzLjIgMS02OC44IDAtMzUuNi0yMi43LTM3LjctMjcuNi0zOS4zLTcuNS0yLjUtMi4zLTEwLjggMS0xMC44IDMyLjcgMCAxNi41IDIgNDkuMiAyIDM2LjUgMCAyMC42LTIgNTcuMS0yIDQuOSAwIDkuOSA5LjYgMSAxMS44LTE2LjQgNC4xLTI4LjYgMTAuMy0yOC42IDMyLjR2MTAxLjJjMCA4My40LjEgMTE0LjkgNy45IDEyNy44IDguMiAxMC4yIDExLjQgMTAuNCAyMS43IDEzLjggNS44IDAgNy44IDEwLjggMCAxMC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2MC4zNTMsMjU0Ljg3OCwxMzEuNTM4LDMzLjFhMi4yMDgsMi4yMDgsMCwwLDAtMy44MjkuMDA5TC4zLDI1NC44ODdBMi4yMzQsMi4yMzQsMCwwLDAsLjMsMjU3LjEyMkwxMjkuMTE2LDQ3OC45YTIuMjA4LDIuMjA4LDAsMCwwLDMuODMtLjAwOUwyNjAuMzU4LDI1Ny4xMTNBMi4yMzksMi4yMzksMCwwLDAsMjYwLjM1MywyNTQuODc4Wm0zOS4wNzgtMjUuNzEzYTIuMTksMi4xOSwwLDAsMCwxLjksMS4xMTFoNjYuNTA5YTIuMjI2LDIuMjI2LDAsMCwwLDEuOS0zLjM0MUwyNTkuMTE1LDMzLjExMWEyLjE4NywyLjE4NywwLDAsMC0xLjktMS4xMTFIMTkwLjcwN2EyLjIyNiwyLjIyNiwwLDAsMC0xLjksMy4zNDFaTTUxMS43LDI1NC44ODYsMzg0LjksMzMuMTEyQTIuMiwyLjIsMCwwLDAsMzgyLjk5LDMyaC02Ni42YTIuMjI2LDIuMjI2LDAsMCwwLTEuOTA2LDMuMzRMNDQwLjY1MiwyNTYsMzE0LjQ4MSw0NzYuNjZhMi4yMjYsMi4yMjYsMCwwLDAsMS45MDYsMy4zNGg2Ni42YTIuMiwyLjIsMCwwLDAsMS45MDYtMS4xMTJMNTExLjcsMjU3LjExNEEyLjI0MywyLjI0MywwLDAsMCw1MTEuNywyNTQuODg2Wk0zNjYuMDE2LDI4NC45MTdIMjk5LjUwOGEyLjE4NywyLjE4NywwLDAsMC0xLjksMS4xMTFsLTEwOC44LDE5MC42MzFhMi4yMjYsMi4yMjYsMCwwLDAsMS45LDMuMzQxaDY2LjUwOWEyLjE4NywyLjE4NywwLDAsMCwxLjktMS4xMTFsMTA4LjgtMTkwLjYzMUEyLjIyNiwyLjIyNiwwLDAsMCwzNjYuMDE2LDI4NC45MTdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvb2xpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NC41IDM1MmwzOC4zLjhjLTEzLjItNC42LTI2LTEwLjItMzguMy0xNi44em01Ny43LTUuM3Y1LjNsLTE5LjQuOGMzNi41IDEyLjUgNjkuOSAxNC4yIDk0LjcgNy4yLTE5LjkuMi00NS44LTIuNi03NS4zLTEzLjN6bTQwOC45LTExNS4yYzE1LjkgMCAyOC45LTEyLjkgMjguOS0yOC45cy0xMi45LTI0LjUtMjguOS0yNC41Yy0xNS45IDAtMjguOSA4LjYtMjguOSAyNC41czEyLjkgMjguOSAyOC45IDI4Ljl6bS0yOSAxMjAuNUg2NDBWMjQxLjVoLTU3Ljl6bS03My43IDBoNTcuOVYxNTYuN0w1MDguNCAxODR6bS0zMS0xMTkuNGMtMTguMi0xOC4yLTUwLjQtMTcuMS01MC40LTE3LjFzLTMyLjMtMS4xLTUwLjQgMTcuMWMtMTguMiAxOC4yLTE2LjggMzMuOS0xNi44IDUyLjZzLTEuNCAzNC4zIDE2LjggNTIuNSA1MC40IDE3LjEgNTAuNCAxNy4xIDMyLjMgMS4xIDUwLjQtMTcuMWMxOC4yLTE4LjIgMTYuOC0zMy44IDE2LjgtNTIuNS0uMS0xOC44IDEuMy0zNC41LTE2LjgtNTIuNnptLTM5LjggNzEuOWMwIDMuNi0xLjggMTIuNS0xMC43IDEyLjVzLTEwLjctOC45LTEwLjctMTIuNXYtNDAuNGMwLTguNyA3LjMtMTAuOSAxMC43LTEwLjlzMTAuNyAyLjEgMTAuNyAxMC45em0tMTA2LjItNzEuOWMtMTguMi0xOC4yLTUwLjQtMTcuMS01MC40LTE3LjFzLTMyLjItMS4xLTUwLjQgMTcuMWMtMS45IDEuOS0zLjcgMy45LTUuMyA2LTM4LjItMjkuNi03Mi41LTQ2LjUtMTAyLjEtNjEuMXYtMjAuN2wtMjIuNSAxMC42Yy01NC40LTIyLjEtODktMTguMi05Ny4zLjEgMCAwLTI0LjkgMzIuOCA2MS44IDExMC44VjM1Mmg1Ny45di0yOC42Yy02LjUtNC4yLTEzLTguNy0xOS40LTEzLjYtMTQuOC0xMS4yLTI3LjQtMjEuNi0zOC40LTMxLjR2LTMxYzEzLjEgMTQuNyAzMC41IDMxLjQgNTMuNCA1MC4zbDQuNSAzLjZ2LTI5LjhjMC02LjkgMS43LTE4LjIgMTAuOC0xOC4yczEwLjYgNi45IDEwLjYgMTVWMzE3YzE4IDEyLjIgMzcuMyAyMi4xIDU3LjcgMjkuNnYtOTMuOWMwLTE4LjctMTMuNC0zNy40LTQwLjYtMzcuNC0xNS44LS4xLTMwLjUgOC4yLTM4LjUgMjEuOXYtNTQuM2M0MS45IDIwLjkgODMuOSA0Ni41IDk5LjkgNTguMy0xMC4yIDE0LjYtOS4zIDI4LjEtOS4zIDQzLjcgMCAxOC43LTEuNCAzNC4zIDE2LjggNTIuNXM1MC40IDE3LjEgNTAuNCAxNy4xIDMyLjMgMS4xIDUwLjQtMTcuMWMxOC4yLTE4LjIgMTYuNy0zMy44IDE2LjctNTIuNSAwLTE4LjUgMS41LTM0LjItMTYuNy01Mi4zek02NS4yIDE4NHY2My4zYy00OC43LTU0LjUtMzguOS03Ni0zNS4yLTc5LjEgMTMuNS0xMS40IDM3LjUtOCA2NC40IDIuMXptMjI2LjUgMTIwLjVjMCAzLjYtMS44IDEyLjUtMTAuNyAxMi41cy0xMC43LTguOS0xMC43LTEyLjV2LTQwLjRjMC04LjcgNy4zLTEwLjkgMTAuNy0xMC45czEwLjcgMi4xIDEwLjcgMTAuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9ybmJpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzYuMzggMzcwLjNhMzcuOCAzNy44IDAgMSAxLTMyLjA3LTMyLjQyYy03OC4yOC0xMTEuMzUgNTItMTkwLjUzIDUyLTE5MC41My01Ljg2IDQzLTguMjQgOTEuMTYtOC4yNCA5MS4xNi02Ny4zMSA0MS40OS45MyA2NC4wNiAzOS44MSA3Mi44N2ExNDAuMzggMTQwLjM4IDAgMCAwIDEzMS42NiA5MS45NGMxLjkyIDAgMy43Ny0uMjEgNS42Ny0uMjhsLjExIDE4Ljg2Yy05OS4yMiAxLjM5LTE1OC43LTI5LjE0LTE4OC45NC01MS42em0xMDgtMzI3LjdBMzcuNTcgMzcuNTcgMCAwIDAgMTgxIDIxLjQ1YTM3Ljk1IDM3Ljk1IDAgMSAwLTMxLjE3IDU0LjIyYy0yMi41NSAyOS45MS01My44MyA4OS41Ny01Mi40MiAxOTBsMjEuODQtLjE1YzAtLjktLjE0LTEuNzctLjE0LTIuNjhBMTQwLjQyIDE0MC40MiAwIDAgMSAyMDcgMTMyLjcxYzgtMzcuNzEgMzAuNy0xMTQuMyA3My44LTQ0LjI5IDAgMCA0OC4xNCAyLjM4IDkxLjE4IDguMjQgMCAwLTc3Ljg0LTEyOC0xODcuNTktNTQuMDZ6bTMwNC4xOSAxMzQuMTdhMzcuOTQgMzcuOTQgMCAxIDAtNTMuODQtMjguN0M0MDMgMTI2LjEzIDM0NC44OSA5OSAyNTEuMjggMTAwLjMzbC4xNCAyMi41YzIuNy0uMTUgNS4zOS0uNDEgOC4xNC0uNDFhMTQwLjM3IDE0MC4zNyAwIDAgMSAxMzAuNDkgODguNzZjMzkuMSA5IDEwNS4wNiAzMS41OCAzOC40NiA3Mi41NCAwIDAtMi4zNCA0OC4xMy04LjIxIDkxLjE2IDAgMCAxMzMuNDUtODEuMTYgNDktMTk0LjYxYTM3LjQ1IDM3LjQ1IDAgMCAwIDE5LjMxLTMuNXpNMzc0LjA2IDQzNi4yNGMyMS40My0zMi40NiA0Ni40Mi04OS42OSA0NS4xNC0xNzkuNjZsLTE5LjUyLjE0Yy4wOCAyLjA2LjMgNC4wNy4zIDYuMTVhMTQwLjM0IDE0MC4zNCAwIDAgMS05MS4zOSAxMzEuNDVjLTguODUgMzguOTUtMzEuNDQgMTA2LjY2LTcyLjc3IDM5LjQ5IDAgMC00OC4xMi0yLjM0LTkxLjE5LTguMjIgMCAwIDc5LjkyIDEzMS4zNCAxOTEuOSA1MWEzNy41IDM3LjUgMCAwIDAgMy42NCAxNCAzNy45MyAzNy45MyAwIDEgMCAzMy44OS01NC4yOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG90amFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNC45IDE2MS41QzM0MC4yIDI5IDEyMS4xIDAgMTIxLjEgMFMyMjIuMiAxMTAuNCA5MyAxOTcuN0MxMS4zIDI1Mi44LTIxIDMyNC40IDE0IDQwMi42YzI2LjggNTkuOSA4My41IDg0LjMgMTQ0LjYgOTMuNC0yOS4yLTU1LjEtNi42LTEyMi40LTQuMS0xMjkuNiA1Ny4xIDg2LjQgMTY1IDAgMTEwLjgtOTMuOSA3MSAxNS40IDgxLjYgMTM4LjYgMjcuMSAyMTUuNSA4MC41LTI1LjMgMTM0LjEtODguOSAxNDguOC0xNDUuNiAxNS41LTU5LjMgMy43LTEyNy45LTI2LjMtMTgwLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXp6IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3NS45IDMzMC43SDE3MS4zVjQ4MEgxN1YzMmgxMDkuNXYxMDQuNWwzMDUuMSA4NS42VjQ4MEgyNzUuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSHRtbDUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMmwzNC45IDM5NS44TDE5MS41IDQ4MGwxNTcuNi01Mi4yTDM4NCAzMkgwem0zMDguMiAxMjcuOUgxMjQuNGw0LjEgNDkuNGgxNzUuNmwtMTMuNiAxNDguNC05Ny45IDI3di4zaC0xLjFsLTk4LjctMjcuMy02LTc1LjhoNDcuN0wxMzggMzIwbDUzLjUgMTQuNSA1My43LTE0LjUgNi02Mi4ySDg0LjNMNzEuNSAxMTIuMmgyNDEuMWwtNC40IDQ3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUh1YnNwb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY3LjQgMjExLjZjLTI1LjEgMjMuNy00MC44IDU3LjMtNDAuOCA5NC42IDAgMjkuMyA5LjcgNTYuMyAyNiA3OEwyMDMuMSA0MzRjLTQuNC0xLjYtOS4xLTIuNS0xNC0yLjUtMTAuOCAwLTIwLjkgNC4yLTI4LjUgMTEuOC03LjYgNy42LTExLjggMTcuOC0xMS44IDI4LjZzNC4yIDIwLjkgMTEuOCAyOC41YzcuNiA3LjYgMTcuOCAxMS42IDI4LjUgMTEuNiAxMC44IDAgMjAuOS0zLjkgMjguNi0xMS42IDcuNi03LjYgMTEuOC0xNy44IDExLjgtMjguNSAwLTQuMi0uNi04LjItMS45LTEyLjFsNTAtNTAuMmMyMiAxNi45IDQ5LjQgMjYuOSA3OS4zIDI2LjkgNzEuOSAwIDEzMC01OC4zIDEzMC0xMzAuMiAwLTY1LjItNDcuNy0xMTkuMi0xMTAuMi0xMjguN1YxMTZjMTcuNS03LjQgMjguMi0yMy44IDI4LjItNDIuOSAwLTI2LjEtMjAuOS00Ny45LTQ3LTQ3LjlTMzExLjIgNDcgMzExLjIgNzMuMWMwIDE5LjEgMTAuNyAzNS41IDI4LjIgNDIuOXY2MS4yYy0xNS4yIDIuMS0yOS42IDYuNy00Mi43IDEzLjYtMjcuNi0yMC45LTExNy41LTg1LjctMTY4LjktMTI0LjggMS4yLTQuNCAyLTkgMi0xMy44QzEyOS44IDIzLjQgMTA2LjMgMCA3Ny40IDAgNDguNiAwIDI1LjIgMjMuNCAyNS4yIDUyLjJjMCAyOC45IDIzLjQgNTIuMyA1Mi4yIDUyLjMgOS44IDAgMTguOS0yLjkgMjYuOC03LjZsMTYzLjIgMTE0Ljd6bTg5LjUgMTYzLjZjLTM4LjEgMC02OS0zMC45LTY5LTY5czMwLjktNjkgNjktNjkgNjkgMzAuOSA2OSA2OS0zMC45IDY5LTY5IDY5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJZGVhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjUuNjEsMTY1LjQ4YTQ5LjA3LDQ5LjA3LDAsMSwwLDQ5LjA2LDQ5LjA2QTQ5LjA4LDQ5LjA4LDAsMCwwLDEyNS42MSwxNjUuNDhaTTg2LjE1LDQyNS44NGg3OC45NFYyODUuMzJIODYuMTVabTE1MS40Ni0yMTEuNmMwLTIwLTEwLTIyLjUzLTE4Ljc0LTIyLjUzSDIwNC44MlYyMzcuNWgxNC4wNUMyMjguNjIsMjM3LjUsMjM3LjYxLDIzNC42OSwyMzcuNjEsMjE0LjI0Wm0yMDEuNjksNDZWMTY4LjkzaDIyLjc1VjIzNy41aDMzLjY5QzQ4Ni41LDExMy4wOCwzODguNjEsODYuMTksMjk5LjY3LDg2LjE5SDIwNC44NFYxNjloMTRjMjUuNiwwLDQxLjUsMTcuMzUsNDEuNSw0NS4yNiwwLDI4LjgxLTE1LjUyLDQ2LTQxLjUsNDZoLTE0VjQyNS44OGg5NC44M2MxNDQuNjEsMCwxOTQuOTQtNjcuMTYsMTk2LjcyLTE2NS42NFptLTEwOS43NSwwSDI3My4zVjE2OWg1NC40M3YyMi43M0gyOTZ2MTAuNThoMzBWMjI1SDI5NlYyMzcuNWgzMy41MVptNzQuNjYsMC01LjE2LTE3LjY3SDM2OS4zMWwtNS4xOCwxNy42N0gzNDAuNDdMMzY4LDE2OC45MmgzMi4zNWwyNy41Myw5MS4zNFpNMjk5LjY1LDMySDMyVjQ4MEgyOTkuNjVjMTYxLjg1LDAsMjUxLTc5LjczLDI1MS0yMjQuNTJDNTUwLjYyLDE3Miw1MTgsMzIsMjk5LjY1LDMyWm0wLDQyNi45Mkg1My4wN1Y1My4wN0gyOTkuNjVjMTQyLjEsMCwyMjkuOSw2NC42MSwyMjkuOSwyMDIuNDFDNTI5LjU1LDM4OS41Nyw0NDguNTUsNDU4LjkyLDI5OS42NSw0NTguOTJabTgzLjg2LTI2NC44NUwzNzYsMjE5Ljg4SDM5Mi40bC03LjUyLTI1LjgxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbWRiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTIxLjMgMjI5LjJIMjFjLjEtLjEuMi0uMy4zLS40ek05NyAzMTkuOEg2NFYxOTJoMzN6bTExMy4yIDBoLTI4Ljd2LTg2LjRsLTExLjYgODYuNGgtMjAuNmwtMTIuMi04NC41djg0LjVoLTI5VjE5Mmg0Mi44YzMuMyAxOS44IDYgMzkuOSA4LjcgNTkuOWw3LjYtNTkuOWg0M3ptMTEuNCAwVjE5MmgyNC42YzE3LjYgMCA0NC43LTEuNiA0OSAyMC45IDEuNyA3LjYgMS40IDE2LjMgMS40IDI0LjQgMCA4OC41IDExLjEgODIuNi03NSA4Mi41em0xNjAuOS0yOS4yYzAgMTUuNy0yLjQgMzAuOS0yMi4yIDMwLjktOSAwLTE1LjItMy0yMC45LTkuOGwtMS45IDguMWgtMjkuOFYxOTJoMzEuN3Y0MS43YzYtNi41IDEyLTkuMiAyMC45LTkuMiAyMS40IDAgMjIuMiAxMi44IDIyLjIgMzAuMXpNMjY1IDIyOS45YzAtOS43IDEuNi0xNi0xMC4zLTE2djgzLjdjMTIuMi4zIDEwLjMtOC43IDEwLjMtMTguNHptODUuNSAyNi4xYzAtNS40IDEuMS0xMi43LTYuMi0xMi43LTYgMC00LjkgOC45LTQuOSAxMi43IDAgLjYtMS4xIDM5LjYgMS4xIDQ0LjcuOCAxLjYgMi4yIDIuNCAzLjggMi40IDcuOCAwIDYuMi05IDYuMi0xNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbm5vc29mdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjIuNTU5LDE1OS43MWEyNy4zNzksMjcuMzc5LDAsMCwwLTEzLjg2Ni0yMy4zMzcsMjYuNDIsMjYuNDIsMCwwLDAtMjYuMjExLjEzM0w3My45NDMsMzE0LjY0N1YxNzYuMjYxYTExLjk1NSwxMS45NTUsMCwwLDEsNi4wNDctMTAuMzRMMjE4LjA2Niw4Ni4yMDhhMTIuMTUzLDEyLjE1MywwLDAsMSwxMS45MjIuMDI1bDMyLjY1NiwxOC44NTNMMTEyLjU4MSwxOTEuNzIzdjU2TDM1OS42NDIsMTA1LjA4NiwyNDEuMTI5LDM2LjY3OWMtMTAuOTkyLTYuMTI5LTIyLjMtNi4yNTUtMzMuOC0uMjdsLTE2NC42LDk1LjAyNmMtMTAuNjM0LDYuMTItMTYuNzcxLDE2LjM5LTE3LjI5LDI5LjEyNGwwLDE5MS41Yy4xNywxMC4xMzUsNS4wOCwxOC42NzIsMTMuNDc0LDIzLjQyOGEyNy4wMzcsMjcuMDM3LDAsMCwwLDI2LjczNi0uMDQ1TDM3NC4wNTcsMTk3LjM3NlYzMzUuNjU3YTExLjk3NiwxMS45NzYsMCwwLDEtNS45MiwxMC4zNjhMMjMwLjAyNSw0MjUuNzdhMTIuMTc1LDEyLjE3NSwwLDAsMS0xMS45MzcuMDYybC0zMi43MjMtMTguOSwxNTAuMDUxLTg2LjYyN3YtNTZMODguMzY3LDQwNi45MzJsMTE4Ljc5NCw2OC41ODNhMzMuODgsMzMuODgsMCwwLDAsMzQuMjUtLjMyN2wxNjQuNTI3LTk0Ljk5NWMxMC43NDYtNi42MzEsMTYuNjQ5LTE3LjExOCwxNi42MjQtMjkuNTI4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbnN0YWdyYW1TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0LDIwMi42NkE1My4zNCw1My4zNCwwLDEsMCwyNzcuMzYsMjU2LDUzLjM4LDUzLjM4LDAsMCwwLDIyNCwyMDIuNjZabTEyNC43MS00MWE1NCw1NCwwLDAsMC0zMC40MS0zMC40MWMtMjEtOC4yOS03MS02LjQzLTk0LjMtNi40M3MtNzMuMjUtMS45My05NC4zMSw2LjQzYTU0LDU0LDAsMCwwLTMwLjQxLDMwLjQxYy04LjI4LDIxLTYuNDMsNzEuMDUtNi40Myw5NC4zM1M5MSwzMjkuMjYsOTkuMzIsMzUwLjMzYTU0LDU0LDAsMCwwLDMwLjQxLDMwLjQxYzIxLDguMjksNzEsNi40Myw5NC4zMSw2LjQzczczLjI0LDEuOTMsOTQuMy02LjQzYTU0LDU0LDAsMCwwLDMwLjQxLTMwLjQxYzguMzUtMjEsNi40My03MS4wNSw2LjQzLTk0LjMzUzM1Ny4xLDE4Mi43NCwzNDguNzUsMTYxLjY3Wk0yMjQsMzM4YTgyLDgyLDAsMSwxLDgyLTgyQTgxLjksODEuOSwwLDAsMSwyMjQsMzM4Wm04NS4zOC0xNDguM2ExOS4xNCwxOS4xNCwwLDEsMSwxOS4xMy0xOS4xNEExOS4xLDE5LjEsMCwwLDEsMzA5LjQyLDE4OS43NFpNNDAwLDMySDQ4QTQ4LDQ4LDAsMCwwLDAsODBWNDMyYTQ4LDQ4LDAsMCwwLDQ4LDQ4SDQwMGE0OCw0OCwwLDAsMCw0OC00OFY4MEE0OCw0OCwwLDAsMCw0MDAsMzJaTTM4Mi44OCwzMjJjLTEuMjksMjUuNjMtNy4xNCw0OC4zNC0yNS44NSw2N3MtNDEuNCwyNC42My02NywyNS44NWMtMjYuNDEsMS40OS0xMDUuNTksMS40OS0xMzIsMC0yNS42My0xLjI5LTQ4LjI2LTcuMTUtNjctMjUuODVzLTI0LjYzLTQxLjQyLTI1Ljg1LTY3Yy0xLjQ5LTI2LjQyLTEuNDktMTA1LjYxLDAtMTMyLDEuMjktMjUuNjMsNy4wNy00OC4zNCwyNS44NS02N3M0MS40Ny0yNC41Niw2Ny0yNS43OGMyNi40MS0xLjQ5LDEwNS41OS0xLjQ5LDEzMiwwLDI1LjYzLDEuMjksNDguMzMsNy4xNSw2NywyNS44NXMyNC42Myw0MS40MiwyNS44NSw2Ny4wNUMzODQuMzcsMjE2LjQ0LDM4NC4zNywyOTUuNTYsMzgyLjg4LDMyMlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW5zdGFncmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNC4xIDE0MWMtNjMuNiAwLTExNC45IDUxLjMtMTE0LjkgMTE0LjlzNTEuMyAxMTQuOSAxMTQuOSAxMTQuOVMzMzkgMzE5LjUgMzM5IDI1NS45IDI4Ny43IDE0MSAyMjQuMSAxNDF6bTAgMTg5LjZjLTQxLjEgMC03NC43LTMzLjUtNzQuNy03NC43czMzLjUtNzQuNyA3NC43LTc0LjcgNzQuNyAzMy41IDc0LjcgNzQuNy0zMy42IDc0LjctNzQuNyA3NC43em0xNDYuNC0xOTQuM2MwIDE0LjktMTIgMjYuOC0yNi44IDI2LjgtMTQuOSAwLTI2LjgtMTItMjYuOC0yNi44czEyLTI2LjggMjYuOC0yNi44IDI2LjggMTIgMjYuOCAyNi44em03Ni4xIDI3LjJjLTEuNy0zNS45LTkuOS02Ny43LTM2LjItOTMuOS0yNi4yLTI2LjItNTgtMzQuNC05My45LTM2LjItMzctMi4xLTE0Ny45LTIuMS0xODQuOSAwLTM1LjggMS43LTY3LjYgOS45LTkzLjkgMzYuMXMtMzQuNCA1OC0zNi4yIDkzLjljLTIuMSAzNy0yLjEgMTQ3LjkgMCAxODQuOSAxLjcgMzUuOSA5LjkgNjcuNyAzNi4yIDkzLjlzNTggMzQuNCA5My45IDM2LjJjMzcgMi4xIDE0Ny45IDIuMSAxODQuOSAwIDM1LjktMS43IDY3LjctOS45IDkzLjktMzYuMiAyNi4yLTI2LjIgMzQuNC01OCAzNi4yLTkzLjkgMi4xLTM3IDIuMS0xNDcuOCAwLTE4NC44ek0zOTguOCAzODhjLTcuOCAxOS42LTIyLjkgMzQuNy00Mi42IDQyLjYtMjkuNSAxMS43LTk5LjUgOS0xMzIuMSA5cy0xMDIuNyAyLjYtMTMyLjEtOWMtMTkuNi03LjgtMzQuNy0yMi45LTQyLjYtNDIuNi0xMS43LTI5LjUtOS05OS41LTktMTMyLjFzLTIuNi0xMDIuNyA5LTEzMi4xYzcuOC0xOS42IDIyLjktMzQuNyA0Mi42LTQyLjYgMjkuNS0xMS43IDk5LjUtOSAxMzIuMS05czEwMi43LTIuNiAxMzIuMSA5YzE5LjYgNy44IDM0LjcgMjIuOSA0Mi42IDQyLjYgMTEuNyAyOS41IDkgOTkuNSA5IDEzMi4xczIuNyAxMDIuNy05IDEzMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbnN0YWxvZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTMuMzg0LDQ4MEgzODcuMTEzTDUwMi41NTQsMjc1Ljc2NSwyMDQuMjI5LDMzMy4yMTFaTTUwNC43MjYsMjQwLjA3OCwzODcuMTEzLDMySDE1NS42NjlMMzYwLjIzLDI2Ny45Wk0xMjQuMzg2LDQ4LjgwOSw3LjI3NCwyNTYsMTIzLjIzNiw0NjEuMTU0LDIyNS42MjcsMTY1LjU2MVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW50ZXJjb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkyIDMySDU2QzI1LjEgMzIgMCA1Ny4xIDAgODh2MzM2YzAgMzAuOSAyNS4xIDU2IDU2IDU2aDMzNmMzMC45IDAgNTYtMjUuMSA1Ni01NlY4OGMwLTMwLjktMjUuMS01Ni01Ni01NnptLTEwOC4zIDgyLjFjMC0xOS44IDI5LjktMTkuOCAyOS45IDB2MTk5LjVjMCAxOS44LTI5LjkgMTkuOC0yOS45IDBWMTE0LjF6bS03NC42LTcuNWMwLTE5LjggMjkuOS0xOS44IDI5LjkgMHYyMTYuNWMwIDE5LjgtMjkuOSAxOS44LTI5LjkgMFYxMDYuNnptLTc0LjcgNy41YzAtMTkuOCAyOS45LTE5LjggMjkuOSAwdjE5OS41YzAgMTkuOC0yOS45IDE5LjgtMjkuOSAwVjExNC4xek01OS43IDE0NGMwLTE5LjggMjkuOS0xOS44IDI5LjkgMHYxMzQuM2MwIDE5LjgtMjkuOSAxOS44LTI5LjkgMFYxNDR6bTMyMy40IDIyNy44Yy03Mi44IDYzLTI0MS43IDY1LjQtMzE4LjEgMC0xNS0xMi44IDQuNC0zNS41IDE5LjQtMjIuNyA2NS45IDU1LjMgMjE2LjEgNTMuOSAyNzkuMyAwIDE0LjktMTIuOSAzNC4zIDkuOCAxOS40IDIyLjd6bTUuMi05My41YzAgMTkuOC0yOS45IDE5LjgtMjkuOSAwVjE0NGMwLTE5LjggMjkuOS0xOS44IDI5LjkgMHYxMzQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW50ZXJuZXRFeHBsb3JlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODMuMDQ5IDE1OS43MDZjMTAuODU1LTI0LjU3NSAyMS40MjQtNjAuNDM4IDIxLjQyNC04Ny44NzEgMC03Mi43MjItNzkuNjQxLTk4LjM3MS0yMDkuNjczLTM4LjU3Ny0xMDcuNjMyLTcuMTgxLTIxMS4yMjEgNzMuNjctMjM3LjA5OCAxODYuNDU3IDMwLjg1Mi0zNC44NjIgNzguMjcxLTgyLjI5OCAxMjEuOTc3LTEwMS4xNThDMTI1LjQwNCAxNjYuODUgNzkuMTI4IDIyOC4wMDIgNDMuOTkyIDI5MS43MjUgMjMuMjQ2IDMyOS42NTEgMCAzOTAuOTQgMCA0MzYuNzQ3YzAgOTguNTc1IDkyLjg1NCA4Ni41IDE4MC4yNTEgNDIuMDA2IDMxLjQyMyAxNS40MyA2Ni41NTkgMTUuNTczIDEwMS42OTUgMTUuNTczIDk3LjEyNCAwIDE4NC4yNDktNTQuMjk0IDIxNi44MTQtMTQ2LjAyMkgzNzcuOTI3Yy01Mi41MDkgODguNTkzLTE5Ni44MTkgNTIuOTk2LTE5Ni44MTktNDcuNDM2SDUwOS45YzYuNDA3LTQzLjU4MS0xLjY1NS05NS43MTUtMjYuODUxLTE0MS4xNjJ6TTY0LjU1OSAzNDYuODc3YzE3LjcxMSA1MS4xNSA1My43MDMgOTUuODcxIDEwMC4yNjYgMTIzLjMwNC04OC43NDEgNDguOTQtMTczLjI2NyAyOS4wOTYtMTAwLjI2Ni0xMjMuMzA0em0xMTUuOTc3LTEwOC44NzNjMi01NS4xNTEgNTAuMjc2LTk0Ljg3MSAxMDMuOTgtOTQuODcxIDUzLjQxOCAwIDEwMS45ODEgMzkuNzIgMTAzLjk4MSA5NC44NzFIMTgwLjUzNnptMTg0LjUzNi0xODcuNmMyMS40MjUtMTAuMjg3IDQ4LjU2My0yMi4wMDMgNzIuNTU4LTIyLjAwMyAzMS40MjIgMCA1NC4yNzQgMjEuNzE3IDU0LjI3NCA1My43MjIgMCAyMC4wMDMtNy40MjcgNDkuMDA3LTE0LjU2OSA2Ny44NjctMjYuMjgtNDIuMjkyLTY1Ljk4Ni04MS41ODQtMTEyLjI2My05OS41ODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUludmlzaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNy40IDMySDQwLjZDMTguMiAzMiAwIDUwLjIgMCA3Mi42djM2Ni44QzAgNDYxLjggMTguMiA0ODAgNDAuNiA0ODBoMzY2LjhjMjIuNCAwIDQwLjYtMTguMiA0MC42LTQwLjZWNzIuNmMwLTIyLjQtMTguMi00MC42LTQwLjYtNDAuNnpNMTc2LjEgMTQ1LjZjLjQgMjMuNC0yMi40IDI3LjMtMjYuNiAyNy40LTE0LjkgMC0yNy4xLTEyLTI3LjEtMjcgLjEtMzUuMiA1My4xLTM1LjUgNTMuNy0uNHpNMzMyLjggMzc3Yy02NS42IDAtMzQuMS03NC0yNS0xMDYuNiAxNC4xLTQ2LjQtNDUuMi01OS01OS45LjdsLTI1LjggMTAzLjNIMTc3bDguMS0zMi41Yy0zMS41IDUxLjgtOTQuNiA0NC40LTk0LjYtNC4zLjEtMTQuMy45LTE0IDIzLTEwNC4xSDgxLjdsOS43LTM1LjZoNzYuNGMtMzMuNiAxMzMuNy0zMi42IDEyNi45LTMyLjkgMTM4LjIgMCAyMC45IDQwLjkgMTMuNSA1Ny40LTIzLjJsMTkuOC03OS40aC0zMi4zbDkuNy0zNS42aDY4LjhsLTguOSA0MC41YzQwLjUtNzUuNSAxMjcuOS00Ny44IDEwMS44IDM4LTE0LjIgNTEuMS0xNC42IDUwLjctMTQuOSA1OC44IDAgMTUuNSAxNy41IDIyLjYgMzEuOC0xNi45TDM4NiAzMjVjLTEwLjUgMzYuNy0yOS40IDUyLTUzLjIgNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUlveGhvc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjE2IDE2MGgtNjcuM0M1MTEuMiA3MC43IDQyMi45IDggMzIwIDggMTgzIDggNzIgMTE5IDcyIDI1NmMwIDE2LjQgMS42IDMyLjUgNC43IDQ4SDI0Yy0xMy4zIDAtMjQgMTAuOC0yNCAyNCAwIDEzLjMgMTAuNyAyNCAyNCAyNGg2Ny4zYzM3LjUgODkuMyAxMjUuOCAxNTIgMjI4LjcgMTUyIDEzNyAwIDI0OC0xMTEgMjQ4LTI0OCAwLTE2LjQtMS42LTMyLjUtNC43LTQ4SDYxNmMxMy4zIDAgMjQtMTAuOCAyNC0yNCAwLTEzLjMtMTAuNy0yNC0yNC0yNHptLTk2IDk2YzAgMTEwLjUtODkuNSAyMDAtMjAwIDIwMC03NS43IDAtMTQxLjYtNDItMTc1LjUtMTA0SDQyNGMxMy4zIDAgMjQtMTAuOCAyNC0yNCAwLTEzLjMtMTAuNy0yNC0yNC0yNEgxMjUuOGMtMy44LTE1LjQtNS44LTMxLjQtNS44LTQ4IDAtMTEwLjUgODkuNS0yMDAgMjAwLTIwMCA3NS43IDAgMTQxLjYgNDIgMTc1LjUgMTA0SDIxNmMtMTMuMyAwLTI0IDEwLjgtMjQgMjQgMCAxMy4zIDEwLjcgMjQgMjQgMjRoMjk4LjJjMy44IDE1LjQgNS44IDMxLjQgNS44IDQ4em0tMzA0LTI0aDIwOGMxMy4zIDAgMjQgMTAuNyAyNCAyNCAwIDEzLjItMTAuNyAyNC0yNCAyNEgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0IDAtMTMuMiAxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJdGNoSW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzEuOTIgMzQuNzdDNTAuMiA0Ny42NyA3LjQgOTYuODQgNyAxMDkuNzN2MjEuMzRjMCAyNy4wNiAyNS4yOSA1MC44NCA0OC4yNSA1MC44NCAyNy41NyAwIDUwLjU0LTIyLjg1IDUwLjU0LTUwIDAgMjcuMTIgMjIuMTggNTAgNDkuNzYgNTBzNDktMjIuODUgNDktNTBjMCAyNy4xMiAyMy41OSA1MCA1MS4xNiA1MGguNWMyNy41NyAwIDUxLjE2LTIyLjg1IDUxLjE2LTUwIDAgMjcuMTIgMjEuNDcgNTAgNDkgNTBzNDkuNzYtMjIuODUgNDkuNzYtNTBjMCAyNy4xMiAyMyA1MCA1MC41NCA1MCAyMyAwIDQ4LjI1LTIzLjc4IDQ4LjI1LTUwLjg0di0yMS4zNGMtLjQtMTIuOS00My4yLTYyLjA3LTY0LjkyLTc1QzM3Mi41NiAzMi40IDMyNS43NiAzMiAyNTYgMzJTOTEuMTQgMzMuMSA3MS45MiAzNC43N3ptMTMyLjMyIDEzNC4zOWMtMjIgMzguNC03Ny45IDM4LjcxLTk5Ljg1LjI1LTEzLjE3IDIzLjE0LTQzLjE3IDMyLjA3LTU2IDI3LjY2LTMuODcgNDAuMTUtMTMuNjcgMjM3LjEzIDE3LjczIDI2OS4xNSA4MCAxOC42NyAzMDIuMDggMTguMTIgMzc5Ljc2IDAgMzEuNjUtMzIuMjcgMjEuMzItMjMyIDE3Ljc1LTI2OS4xNS0xMi45MiA0LjQ0LTQyLjg4LTQuNi01Ni0yNy42Ni0yMiAzOC41Mi03Ny44NSAzOC4xLTk5Ljg1LS4yNC03LjEgMTIuNDktMjMuMDUgMjguOTQtNTEuNzYgMjguOTRhNTcuNTQgNTcuNTQgMCAwIDEtNTEuNzUtMjguOTR6bS00MS41OCA1My43N2MxNi40NyAwIDMxLjA5IDAgNDkuMjIgMTkuNzhhNDM2LjkxIDQzNi45MSAwIDAgMSA4OC4xOCAwQzMxOC4yMiAyMjMgMzMyLjg1IDIyMyAzNDkuMzEgMjIzYzUyLjMzIDAgNjUuMjIgNzcuNTMgODMuODcgMTQ0LjQ1IDE3LjI2IDYyLjE1LTUuNTIgNjMuNjctMzMuOTUgNjMuNzMtNDIuMTUtMS41Ny02NS40OS0zMi4xOC02NS40OS02Mi43OS0zOS4yNSA2LjQzLTEwMS45MyA4Ljc5LTE1NS41NSAwIDAgMzAuNjEtMjMuMzQgNjEuMjItNjUuNDkgNjIuNzktMjguNDItLjA2LTUxLjItMS41OC0zMy45NC02My43MyAxOC42Ny02NyAzMS41Ni0xNDQuNDUgODMuODgtMTQ0LjQ1ek0yNTYgMjcwLjc5cy00NC4zOCA0MC43Ny01Mi4zNSA1NS4yMWwyOS0xLjE3djI1LjMyYzAgMS41NSAyMS4zNC4xNiAyMy4zMy4xNiAxMS42NS41NCAyMy4zMSAxIDIzLjMxLS4xNnYtMjUuMjhsMjkgMS4xN2MtOC0xNC40OC01Mi4zNS01NS4yNC01Mi4zNS01NS4yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSXR1bmVzTm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODEuOSAzODguMmMtNi40IDI3LjQtMjcuMiA0Mi44LTU1LjEgNDgtMjQuNSA0LjUtNDQuOSA1LjYtNjQuNS0xMC4yLTIzLjktMjAuMS0yNC4yLTUzLjQtMi43LTc0LjQgMTctMTYuMiA0MC45LTE5LjUgNzYuOC0yNS44IDYtMS4xIDExLjItMi41IDE1LjYtNy40IDYuNC03LjIgNC40LTQuMSA0LjQtMTYzLjIgMC0xMS4yLTUuNS0xNC4zLTE3LTEyLjMtOC4yIDEuNC0xODUuNyAzNC42LTE4NS43IDM0LjYtMTAuMiAyLjItMTMuNCA1LjItMTMuNCAxNi43IDAgMjM0LjcgMS4xIDIyMy45LTIuNSAyMzkuNS00LjIgMTguMi0xNS40IDMxLjktMzAuMiAzOS41LTE2LjggOS4zLTQ3LjIgMTMuNC02My40IDEwLjQtNDMuMi04LjEtNTguNC01OC0yOS4xLTg2LjYgMTctMTYuMiA0MC45LTE5LjUgNzYuOC0yNS44IDYtMS4xIDExLjItMi41IDE1LjYtNy40IDEwLjEtMTEuNSAxLjgtMjU2LjYgNS4yLTI3MC4yLjgtNS4yIDMtOS42IDcuMS0xMi45IDQuMi0zLjUgMTEuOC01LjUgMTMuNC01LjUgMjA0LTM4LjIgMjI4LjktNDMuMSAyMzIuNC00My4xIDExLjUtLjggMTguMSA2IDE4LjEgMTcuNi4yIDM0NC41IDEuMSAzMjYtMS44IDMzOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJdHVuZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIzLjYgODAuM0MxMjkgODAuMyA1Mi41IDE1NyA1Mi41IDI1MS41UzEyOSA0MjIuOCAyMjMuNiA0MjIuOHMxNzEuMi03Ni43IDE3MS4yLTE3MS4yYzAtOTQuNi03Ni43LTE3MS4zLTE3MS4yLTE3MS4zem03OS40IDI0MGMtMy4yIDEzLjYtMTMuNSAyMS4yLTI3LjMgMjMuOC0xMi4xIDIuMi0yMi4yIDIuOC0zMS45LTUtMTEuOC0xMC0xMi0yNi40LTEuNC0zNi44IDguNC04IDIwLjMtOS42IDM4LTEyLjggMy0uNSA1LjYtMS4yIDcuNy0zLjcgMy4yLTMuNiAyLjItMiAyLjItODAuOCAwLTUuNi0yLjctNy4xLTguNC02LjEtNCAuNy05MS45IDE3LjEtOTEuOSAxNy4xLTUgMS4xLTYuNyAyLjYtNi43IDguMyAwIDExNi4xLjUgMTEwLjgtMS4yIDExOC41LTIuMSA5LTcuNiAxNS44LTE0LjkgMTkuNi04LjMgNC42LTIzLjQgNi42LTMxLjQgNS4yLTIxLjQtNC0yOC45LTI4LjctMTQuNC00Mi45IDguNC04IDIwLjMtOS42IDM4LTEyLjggMy0uNSA1LjYtMS4yIDcuNy0zLjcgNS01LjcuOS0xMjcgMi42LTEzMy43LjQtMi42IDEuNS00LjggMy41LTYuNCAyLjEtMS43IDUuOC0yLjcgNi43LTIuNyAxMDEtMTkgMTEzLjMtMjEuNCAxMTUuMS0yMS40IDUuNy0uNCA5IDMgOSA4LjctLjEgMTcwLjYuNCAxNjEuNC0xIDE2Ny42ek0zNDUuMiAzMkgxMDIuOEM0NS45IDMyIDAgNzcuOSAwIDEzNC44djI0Mi40QzAgNDM0LjEgNDUuOSA0ODAgMTAyLjggNDgwaDI0Mi40YzU3IDAgMTAyLjgtNDUuOSAxMDIuOC0xMDIuOFYxMzQuOEM0NDggNzcuOSA0MDIuMSAzMiAzNDUuMiAzMnpNMjIzLjYgNDQ0Yy0xMDYuMyAwLTE5Mi41LTg2LjItMTkyLjUtMTkyLjVTMTE3LjMgNTkgMjIzLjYgNTlzMTkyLjUgODYuMiAxOTIuNSAxOTIuNVMzMjkuOSA0NDQgMjIzLjYgNDQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKYXZhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3Ny43NCAzMTIuOWM5LjgtNi43IDIzLjQtMTIuNSAyMy40LTEyLjVzLTM4LjcgNy03Ny4yIDEwLjJjLTQ3LjEgMy45LTk3LjcgNC43LTEyMy4xIDEuMy02MC4xLTggMzMtMzAuMSAzMy0zMC4xcy0zNi4xLTIuNC04MC42IDE5Yy01Mi41IDI1LjQgMTMwIDM3IDIyNC41IDEyLjF6bS04NS40LTMyLjFjLTE5LTQyLjctODMuMS04MC4yIDAtMTQ1LjhDMjk2IDUzLjIgMjQyLjg0IDAgMjQyLjg0IDBjMjEuNSA4NC41LTc1LjYgMTEwLjEtMTEwLjcgMTYyLjYtMjMuOSAzNS45IDExLjcgNzQuNCA2MC4yIDExOC4yem0xMTQuNi0xNzYuMmMuMSAwLTE3NS4yIDQzLjgtOTEuNSAxNDAuMiAyNC43IDI4LjQtNi41IDU0LTYuNSA1NHM2Mi43LTMyLjQgMzMuOS03Mi45Yy0yNi45LTM3LjgtNDcuNS01Ni42IDY0LjEtMTIxLjN6bS02LjEgMjcwLjVhMTIuMTkgMTIuMTkgMCAwIDEtMiAyLjZjMTI4LjMtMzMuNyA4MS4xLTExOC45IDE5LjgtOTcuM2ExNy4zMyAxNy4zMyAwIDAgMC04LjIgNi4zIDcwLjQ1IDcwLjQ1IDAgMCAxIDExLTNjMzEtNi41IDc1LjUgNDEuNS0yMC42IDkxLjR6TTM0OCA0MzcuNHMxNC41IDExLjktMTUuOSAyMS4yYy01Ny45IDE3LjUtMjQwLjggMjIuOC0yOTEuNi43LTE4LjMtNy45IDE2LTE5IDI2LjgtMjEuMyAxMS4yLTIuNCAxNy43LTIgMTcuNy0yLTIwLjMtMTQuMy0xMzEuMyAyOC4xLTU2LjQgNDAuMkMyMzIuODQgNTA5LjQgNDAxIDQ2MS4zIDM0OCA0MzcuNHpNMTI0LjQ0IDM5NmMtNzguNyAyMiA0Ny45IDY3LjQgMTQ4LjEgMjQuNWExODUuODkgMTg1Ljg5IDAgMCAxLTI4LjItMTMuOGMtNDQuNyA4LjUtNjUuNCA5LjEtMTA2IDQuNS0zMy41LTMuOC0xMy45LTE1LjItMTMuOS0xNS4yem0xNzkuOCA5Ny4yYy03OC43IDE0LjgtMTc1LjggMTMuMS0yMzMuMyAzLjYgMC0uMSAxMS44IDkuNyA3Mi40IDEzLjYgOTIuMiA1LjkgMjMzLjgtMy4zIDIzNy4xLTQ2LjkgMCAwLTYuNCAxNi41LTc2LjIgMjkuN3pNMjYwLjY0IDM1M2MtNTkuMiAxMS40LTkzLjUgMTEuMS0xMzYuOCA2LjYtMzMuNS0zLjUtMTEuNi0xOS43LTExLjYtMTkuNy04Ni44IDI4LjggNDguMiA2MS40IDE2OS41IDI1LjlhNjAuMzcgNjAuMzcgMCAwIDEtMjEuMS0xMi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKZWRpT3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk4LjUgMzczLjZjOTUuOS0xMjIuMSAxNy4yLTIzMy4xIDE3LjItMjMzLjEgNDUuNCA4NS44LTQxLjQgMTcwLjUtNDEuNCAxNzAuNSAxMDUtMTcxLjUtNjAuNS0yNzEuNS02MC41LTI3MS41IDk2LjkgNzIuNy0xMC4xIDE5MC43LTEwLjEgMTkwLjcgODUuOCAxNTguNC02OC42IDIzMC4xLTY4LjYgMjMwLjFzLS40LTE2LjktMi4yLTg1LjdjNC4zIDQuNSAzNC41IDM2LjIgMzQuNSAzNi4ybC0yNC4yLTQ3LjQgNjIuNi05LjEtNjIuNi05LjEgMjAuMi01NS41LTMxLjQgNDUuOWMtMi4yLTg3LjctNy44LTMwNS4xLTcuOS0zMDYuOXYtMi40IDEtMSAyLjRjMCAxLTUuNiAyMTktNy45IDMwNi45bC0zMS40LTQ1LjkgMjAuMiA1NS41LTYyLjYgOS4xIDYyLjYgOS4xLTI0LjIgNDcuNCAzNC41LTM2LjJjLTEuOCA2OC44LTIuMiA4NS43LTIuMiA4NS43cy0xNTQuNC03MS43LTY4LjYtMjMwLjFjMCAwLTEwNy0xMTguMS0xMC4xLTE5MC43IDAgMC0xNjUuNSA5OS45LTYwLjUgMjcxLjUgMCAwLTg2LjgtODQuOC00MS40LTE3MC41IDAgMC03OC43IDExMSAxNy4yIDIzMy4xIDAgMC0yNi4yLTE2LjEtNDkuNC03Ny43IDAgMCAxNi45IDE4My4zIDIyMiAxODUuN2g0LjFjMjA1LTIuNCAyMjItMTg1LjcgMjIyLTE4NS43LTIzLjYgNjEuNS00OS45IDc3LjctNDkuOSA3Ny43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKZW5raW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4Ny4xIDQyNWMtMS40LTExLjItMTktMjMuMS0yOC4yLTMxLjktNS4xLTUtMjktMjMuMS0zMC40LTI5LjktMS40LTYuNiA5LjctMjEuNSAxMy4zLTI4LjkgNS4xLTEwLjcgOC44LTIzLjcgMTEuMy0zMi42IDE4LjgtNjYuMSAyMC43LTE1Ni45LTYuMi0yMTEuMi0xMC4yLTIwLjYtMzguNi00OS01Ni40LTYyLjUtNDItMzEuNy0xMTkuNi0zNS4zLTE3MC4xLTE2LjYtMTQuMSA1LjItMjcuOCA5LjgtNDAuMSAxNy4xLTMzLjEgMTkuNC02OC4zIDMyLjUtNzguMSA3MS42LTI0LjIgMTAuOC0zMS41IDQxLjgtMzAuMyA3Ny44LjIgNyA0LjEgMTUuOCAyLjcgMjIuNC0uNyAzLjMtNS4yIDcuNi02LjEgOS44LTExLjYgMjcuNy0yLjMgNjQgMTEuMSA4My43IDguMSAxMS45IDIxLjUgMjIuNCAzOS4yIDI1LjIuNyAxMC42IDMuMyAxOS43IDguMiAzMC40IDMuMSA2LjggMTQuNyAxOSAxMC40IDI3LjctMi4yIDQuNC0yMSAxMy44LTI3LjMgMTcuNkM4OSA0MDcuMiA3My43IDQxNSA1NC4yIDQyOWMtMTIuNiA5LTMyLjMgMTAuMi0yOS4yIDMxLjEgMi4xIDE0LjEgMTAuMSAzMS42IDE0LjcgNDUuOC43IDIgMS40IDQuMSAyLjEgNmg0MjJjNC45LTE1LjMgOS43LTMwLjkgMTQuNi00Ny4yIDMuNC0xMS40IDEwLjItMjcuOCA4LjctMzkuN3pNMjA1LjkgMzMuN2MxLjgtLjUgMy40LjcgNC45IDIuNC0uMiA1LjItNS40IDUuMS04LjkgNi44LTUuNCA2LjctMTMuNCA5LjgtMjAgMTcuMi02LjggNy41LTE0LjQgMjcuNy0yMy40IDMwLTQuNSAxLjEtOS43LS44LTEzLjYtLjUtMTAuNC43LTE3LjcgNi0yOC4zIDcuNSAxMy42LTI5LjkgNTYuMS01NCA4OS4zLTYzLjR6bS0xMDQuOCA5My42YzEzLjUtMTQuOSAzMi4xLTI0LjEgNTQuOC0yNS45IDExLjcgMjkuNy04LjQgNjUtLjkgOTcuNiAyLjMgOS45IDEwLjIgMjUuNC0yLjQgMjUuNy4zLTI4LjMtMzQuOC00Ni4zLTYxLjMtMjkuNi0xLjgtMjEuNS00LjktNTEuNyA5LjgtNjcuOHptMzYuNyAyMDAuMmMtMS00LjEtMi43LTEyLjktMi4zLTE1LjEgMS42LTguNyAxNy4xLTEyLjUgMTEtMjQuNy0xMS4zLS4xLTEzLjggMTAuMi0yNC4xIDExLjMtMjYuNyAyLjYtNDUuNi0zNS40LTQ0LjQtNTguNCAxLTE5LjUgMTcuNi0zOC4yIDQwLjEtMzUuOCAxNiAxLjggMjEuNCAxOS4yIDI0LjUgMzQuNyA5LjIuNSAyMi41LS40IDI2LjktNy42LS42LTE3LjUtOC44LTMxLjYtOC4yLTQ3LjcgMS0zMC4zIDE3LjUtNTcuNiA0LjgtODcuNCAxMy42LTMwLjkgNTMuNS01NS4zIDgzLjEtNzAgMzYuNi0xOC4zIDk0LjktMy43IDEyOS4zIDE1LjggMTkuNyAxMS4xIDM0LjQgMzIuNyA0OC4zIDUwLjctMTkuNS01LjgtMzYuMSA0LjItMzMuMSAyMC4zIDE2LjMtMTQuOSA0NC4yLS4yIDUyLjUgMTYuNCA3LjkgMTUuOCA3LjggMzkuMyA5IDYyLjggMi45IDU3LTEwLjQgMTE1LjktMzkuMSAxNTcuMS03LjcgMTEtMTQuMSAyMy0yNC45IDMwLjYtMjYgMTguMi02NS40IDM0LjctOTkuMiAyMy40LTQ0LjctMTUtNjUtNDQuOC04OS41LTc4LjguNyAxOC43IDEzLjggMzQuMSAyNi44IDQ4LjQgMTEuMyAxMi41IDI1IDI2LjYgMzkuNyAzMi40LTEyLjMtMi45LTMxLjEtMy44LTM2LjIgNy4yLTI4LjYtMS45LTU1LjEtNC44LTY4LjctMjQuMi0xMC42LTE1LjQtMjEuNC00MS40LTI2LjMtNjEuNHptMjIyIDEyNC4xYzQuMS0zIDExLjEtMi45IDE3LjQtMy42LTUuNC0yLjctMTMtMy43LTE5LjMtMi4yLS4xLTQuMi0yLTYuOC0zLjItMTAuMiAxMC42LTMuOCAzNS41LTI4LjUgNDkuNi0yMC4zIDYuNyAzLjkgOS41IDI2LjIgMTAuMSAzNyAuNCA5LS44IDE4LTQuNSAyMi44LTE4LjgtLjYtMzUuOC0yLjgtNTAuNy03IC45LTYuMS0xLTEyLjEuNi0xNi41em0tMTcuMi0yMGMtMTYuOC44LTI2LTEuMi0zOC4zLTEwLjguMi0uOCAxLjQtLjUgMS41LTEuNCAxOCA4IDQwLjgtMy4zIDU5LTQuOS03LjkgNS4xLTE0LjYgMTEuNi0yMi4yIDE3LjF6bS0xMi4xIDMzLjJjLTEuNi05LjQtMy41LTEyLTIuOC0yMC4yIDI1LTE2LjYgMjkuNyAyOC42IDIuOCAyMC4yek0yMjYgNDM4LjZjLTExLjYtLjctNDguMS0xNC0zOC41LTIzLjcgOS40IDYuNSAyNy41IDQuOSA0MS4zIDcuMy44IDQuNC0yLjggMTAuMi0yLjggMTYuNHpNNTcuNyA0OTcuMWMtNC4zLTEyLjctOS4yLTI1LjEtMTQuOC0zNi45IDMwLjgtMjMuOCA2NS4zLTQ4LjkgMTAyLjItNjMuNSAyLjgtMS4xIDIzLjIgMjUuNCAyNi4yIDI3LjYgMTYuNSAxMS43IDM3IDIxIDU2LjIgMzAuMiAxLjIgOC44IDMuOSAyMC4yIDguNyAzNS41LjcgMi4zIDEuNCA0LjcgMi4yIDcuMkg1Ny43em0yNDAuNiA1LjdoLS44Yy4zLS4yLjUtLjQuOC0uNXYuNXptNy41LTUuN2MyLjEtMS40IDQuMy0yLjggNi40LTQuMyAxLjEgMS40IDIuMiAyLjggMy4yIDQuM2gtOS42em0xNS4xLTI0LjdjLTEwLjggNy4zLTIwLjYgMTguMy0zMy4zIDI1LjItNiAzLjMtMjcgMTEuNy0zMy40IDEwLjItMy42LS44LTMuOS01LjMtNS40LTkuNS0zLjEtOS0xMC4xLTIzLjQtMTAuOC0zNy0uOC0xNy4yLTIuNS00NiAxNi00Mi40IDE0LjkgMi45IDMyLjMgOS43IDQzLjkgMTYuMSA3LjEgMy45IDExLjEgOC42IDIxLjkgOS41LS4xIDEuNC0uMSAyLjgtLjIgNC4zLTUuOSAzLjktMTUuMyAzLjgtMjEuOCA3LjEgOS41LjQgMTcgMi43IDIzLjUgNS45LS4xIDMuNC0uMyA3LS40IDEwLjZ6bTUzLjQgMjQuN2gtMTRjLS4xLTMuMi0yLjgtNS44LTYuMS01LjhzLTUuOSAyLjYtNi4xIDUuOGgtMTcuNGMtMi44LTQuNC01LjctOC42LTguOS0xMi41IDIuMS0yLjIgNC00LjcgNi02LjkgOSAzLjcgMTQuOC00LjkgMjEuNy00LjIgNy45LjggMTQuMiAxMS43IDI1LjQgMTFsLS42IDEyLjZ6bTguNyAwYy4yLTQgLjQtNy44LjYtMTEuNSAxNS42LTcuMyAyOSAxLjMgMzUuNyAxMS41SDM4M3ptODMuNC0zN2MtMi4zIDExLjItNS44IDI0LTkuOSAzNy4xLS4yLS4xLS40LS4xLS42LS4xSDQyOGMuNi0xLjEgMS4yLTIuMiAxLjktMy4zLTIuNi02LjEtOS04LjctMTAuOS0xNS41IDEyLjEtMjIuNyA2LjUtOTMuNC0yNC4yLTc4LjUgNC4zLTYuMyAxNS42LTExLjUgMjAuOC0xOS4zIDEzIDEwLjQgMjAuOCAyMC4zIDMzLjIgMzEuNCA2LjggNiAyMCAxMy4zIDIxLjQgMjMuMS44IDUuNS0yLjYgMTguOS0zLjggMjUuMXpNMjIyLjIgMTMwLjVjNS40LTE0LjkgMjcuMi0zNC43IDQ1LTMyIDcuNyAxLjIgMTggOC4yIDEyLjIgMTcuNy0zMC4yLTctNDUuMiAxMi42LTU0LjQgMzMuMS04LjEtMi00LjktMTMuMS0yLjgtMTguOHptMTg0LjEgNjMuMWM4LjItMy42IDIyLjQtLjcgMjkuNi01LjMtNC4yLTExLjUtMTAuMy0yMS40LTkuMy0zNy43LjUgMCAxIDAgMS40LjEgNi44IDE0LjIgMTIuNyAyOS4yIDIxLjQgNDEuNy01LjcgMTMuNS00My42IDI1LjQtNDMuMSAxLjJ6bTIwLjQtNDN6bS0xMTcuMiA0NS43Yy02LjgtMTAuOS0xOS0zMi41LTE0LjUtNDUuMyA2LjUgMTEuOSA4LjYgMjQuNCAxNy44IDMzLjMgNC4xIDQgMTIuMiA5IDguMiAyMC4yLS45IDIuNy03LjggOC42LTExLjcgOS43LTE0LjQgNC4zLTQ3LjkuOS0zNi42LTE3LjEgMTEuOS43IDI3LjkgNy44IDM2LjgtLjh6bTI3LjMgNzBjMy44IDYuNiAxLjQgMTguNyAxMi4xIDIwLjYgMjAuMiAzLjQgNDMuNi0xMi4zIDU4LjEtMTcuOCA5LTE1LjItLjgtMjAuNy04LjktMzAuNS0xNi42LTIwLTM4LjgtNDQuOC0zOC03NC43IDYuNy00LjkgNy4zIDcuNCA4LjIgOS43IDguNyAyMC4zIDMwLjQgNDYuMiA0Ni4zIDYzLjUgMy45IDQuMyAxMC4zIDguNCAxMSAxMS4yIDIuMSA4LjItNS40IDE4LTQuNSAyMy41LTIxLjcgMTMuOS00NS44IDI5LjEtODEuNCAyNS42LTcuNC02LjctMTAuMy0yMS40LTIuOS0zMS4xem0tMjAxLjMtOS4yYy02LjgtMy45LTguNC0yMS0xNi40LTIxLjQtMTEuNC0uNy05LjMgMjIuMi05LjMgMzUuNS03LjgtNy4xLTkuMi0yOS4xLTMuNS00MC4zLTYuNi0zLjItOS41IDMuNi0xMy4xIDUuOSA0LjctMzQuMSA0OS44LTE1LjggNDIuMyAyMC4zem0yOTkuNiAyOC44Yy0xMC4xIDE5LjItMjQuNCA0MC40LTU0IDQxLS42LTYuMi0xLjEtMTUuNiAwLTE5LjQgMjIuNy0yLjIgMzYuNi0xMy43IDU0LTIxLjZ6bS0xNDEuOSAxMi40YzE4LjkgOS45IDUzLjYgMTEgNzkuMyAxMC4yIDEuNCA1LjYgMS4zIDEyLjYgMS40IDE5LjQtMzMgMS44LTcyLTYuNC04MC43LTI5LjZ6bTkyLjIgNDYuN2MtMS43IDQuMy01LjMgOS4zLTkuOCAxMS4xLTEyLjEgNC45LTQ1LjYgOC43LTYyLjQtLjMtMTAuNy01LjctMTcuNS0xOC41LTIzLjQtMjYtMi44LTMuNi0xNi45LTEyLjktLjItMTIuOSAxMy4xIDMyLjcgNTggMjkgOTUuOCAyOC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKaXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5MCAyNDEuN0M0MTcuMSAxNjkgMzIwLjYgNzEuOCAyNDguNSAwIDgzIDE2NC45IDYgMjQxLjcgNiAyNDEuN2MtNy45IDcuOS03LjkgMjAuNyAwIDI4LjdDMTM4LjggNDAyLjcgNjcuOCAzMzEuOSAyNDguNSA1MTJjMzc5LjQtMzc4IDE1LjctMTYuNyAyNDEuNS0yNDEuNyA4LTcuOSA4LTIwLjcgMC0yOC42em0tMjQxLjUgOTBsLTc2LTc1LjcgNzYtNzUuNyA3NiA3NS43LTc2IDc1Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpvZ2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3OC4xIDQ1QzMzNy42IDE5LjkgMjkyLjYgOCAyNDguMiA4IDE2NSA4IDgzLjggNDkuOSAzNi45IDEyNS45Yy03MS45IDExNi42LTM1LjYgMjY5LjMgODEgMzQxLjJzMjY5LjMgMzUuNiAzNDEuMi04MC45YzcxLjktMTE2LjYgMzUuNi0yNjkuNC04MS0zNDEuMnptNTEuOCAzMjMuMmMtNDAuNCA2NS41LTExMC40IDEwMS41LTE4MiAxMDEuNS02LjggMC0xMy42LS40LTIwLjQtMS05LTEzLjYtMTkuOS0zMy4zLTIzLjctNDIuNC01LjctMTMuNy0yNy4yLTQ1LjYgMzEuMi02Ny4xIDUxLjctMTkuMSAxNzYuNy0xNi41IDIwOC44LTE3LjYtNCA5LTguNiAxNy45LTEzLjkgMjYuNnptLTIwMC44LTg2LjNjLTU1LjUtMS40LTgxLjctMjAuOC01OC41LTQ4LjJzNTEuMS00MC43IDY4LjktNTEuMmMxNy45LTEwLjUgMjcuMy0zMy43LTIzLjYtMjkuN0M4Ny4zIDE2MS41IDQ4LjYgMjUyLjEgMzcuNiAyOTNjLTguOC00OS43LS4xLTEwMi43IDI4LjUtMTQ5LjFDMTI4IDQzLjQgMjU5LjYgMTIuMiAzNjAuMSA3NC4xYzc0LjggNDYuMSAxMTEuMiAxMzAuOSA5OS4zIDIxMi43LTI0LjktLjUtMTc5LjMtMy42LTIzMC4zLTQuOXptMTgzLjgtNTQuOGMtMjIuNy02LTU3IDExLjMtODYuNyAyNy4yLTI5LjcgMTUuOC0zMS4xIDguMi0zMS4xIDguMnM0MC4yLTI4LjEgNTAuNy0zNC41IDMxLjktMTQgMTMuNC0yNC42Yy0zLjItMS44LTYuNy0yLjctMTAuNC0yLjctMTcuOCAwLTQxLjUgMTguNy02Ny41IDM1LjYtMzEuNSAyMC41LTY1LjMgMzEuMy02NS4zIDMxLjNsMTY5LjUtMS42IDQ2LjUtMjMuNHMzLjYtOS41LTE5LjEtMTUuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSm9vbWxhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS42IDkyLjFDLjYgNTguOCAyNy40IDMyIDYwLjQgMzJjMzAgMCA1NC41IDIxLjkgNTkuMiA1MC4yIDMyLjYtNy42IDY3LjEuNiA5Ni41IDMwbC00NC4zIDQ0LjNjLTIwLjUtMjAuNS00Mi42LTE2LjMtNTUuNC0zLjUtMTQuMyAxNC4zLTE0LjMgMzcuOSAwIDUyLjJsOTkuNSA5OS41LTQ0IDQ0LjNjLTg3LjctODcuMi00OS43LTQ5LjctOTkuOC05OS43LTI2LjgtMjYuNS0zNS02NC44LTI0LjgtOTguOUMyMC40IDE0NC42LjYgMTIwLjcuNiA5Mi4xem0xMjkuNSAxMTYuNGw0NC4zIDQ0LjNjMTAtMTAgODkuNy04OS43IDk5LjctOTkuOCAxNC4zLTE0LjMgMzcuNi0xNC4zIDUxLjkgMCAxMi44IDEyLjggMTcgMzUtMy41IDU1LjRsNDQgNDQuM2MzMS4yLTMxLjIgMzguNS02Ny42IDI4LjktMTAxLjIgMjkuMi00LjEgNTEuOS0yOS4yIDUxLjktNTkuNSAwLTMzLjItMjYuOC02MC4xLTU5LjgtNjAuMS0zMC4zIDAtNTUuNCAyMi41LTU5LjUgNTEuNi0zMy44LTkuOS03MS43LTEuNS05OC4zIDI1LjEtMTguMyAxOS4xLTcxLjEgNzEuNS05OS42IDk5Ljl6bTI2Ni4zIDE1Mi4yYzguMi0zMi43LS45LTY4LjUtMjYuMy05My45LTExLjgtMTIuMiA1IDQuNy05OS41LTk5LjdsLTQ0LjMgNDQuMyA5OS43IDk5LjdjMTQuMyAxNC4zIDE0LjMgMzcuNiAwIDUxLjktMTIuOCAxMi44LTM1IDE3LTU1LjQtMy41bC00NCA0NC4zYzI3LjYgMzAuMiA2OCAzOC44IDEwMi43IDI4IDUuNSAyNy40IDI5LjcgNDguMSA1OC45IDQ4LjEgMzMgMCA1OS44LTI2LjggNTkuOC02MC4xIDAtMzAuMi0yMi41LTU1LTUxLjYtNTkuMXptLTg0LjMtNTMuMWwtNDQtNDQuM2MtODcgODYuNC01MC40IDUwLjQtOTkuNyA5OS44LTE0LjMgMTQuMy0zNy42IDE0LjMtNTEuOSAwLTEzLjEtMTMuNC0xNi45LTM1LjMgMy4yLTU1LjRsLTQ0LTQ0LjNjLTMwLjIgMzAuMi0zOCA2NS4yLTI5LjUgOTguMy0yNi43IDYtNDYuMiAyOS45LTQ2LjIgNTguMkMwIDQ1My4yIDI2LjggNDgwIDU5LjggNDgwYzI4LjYgMCA1Mi41LTE5LjggNTguNi00Ni43IDMyLjcgOC4yIDY4LjUtLjYgOTQuMi0yNiAzMi4xLTMyIDEyLjItMTIuNCA5OS41LTk5Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpzU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTI0My44IDM4MS40YzAgNDMuNi0yNS42IDYzLjUtNjIuOSA2My41LTMzLjcgMC01My4yLTE3LjQtNjMuMi0zOC41bDM0LjMtMjAuN2M2LjYgMTEuNyAxMi42IDIxLjYgMjcuMSAyMS42IDEzLjggMCAyMi42LTUuNCAyMi42LTI2LjVWMjM3LjdoNDIuMXYxNDMuN3ptOTkuNiA2My41Yy0zOS4xIDAtNjQuNC0xOC42LTc2LjctNDNsMzQuMy0xOS44YzkgMTQuNyAyMC44IDI1LjYgNDEuNSAyNS42IDE3LjQgMCAyOC42LTguNyAyOC42LTIwLjggMC0xNC40LTExLjQtMTkuNS0zMC43LTI4bC0xMC41LTQuNWMtMzAuNC0xMi45LTUwLjUtMjkuMi01MC41LTYzLjUgMC0zMS42IDI0LjEtNTUuNiA2MS42LTU1LjYgMjYuOCAwIDQ2IDkuMyA1OS44IDMzLjdMMzY4IDI5MGMtNy4yLTEyLjktMTUtMTgtMjcuMS0xOC0xMi4zIDAtMjAuMSA3LjgtMjAuMSAxOCAwIDEyLjYgNy44IDE3LjcgMjUuOSAyNS42bDEwLjUgNC41YzM1LjggMTUuMyA1NS45IDMxIDU1LjkgNjYuMiAwIDM3LjgtMjkuOCA1OC42LTY5LjcgNTguNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMySDB6bTI0My44IDM0OS40YzAgNDMuNi0yNS42IDYzLjUtNjIuOSA2My41LTMzLjcgMC01My4yLTE3LjQtNjMuMi0zOC41bDM0LjMtMjAuN2M2LjYgMTEuNyAxMi42IDIxLjYgMjcuMSAyMS42IDEzLjggMCAyMi42LTUuNCAyMi42LTI2LjVWMjM3LjdoNDIuMXYxNDMuN3ptOTkuNiA2My41Yy0zOS4xIDAtNjQuNC0xOC42LTc2LjctNDNsMzQuMy0xOS44YzkgMTQuNyAyMC44IDI1LjYgNDEuNSAyNS42IDE3LjQgMCAyOC42LTguNyAyOC42LTIwLjggMC0xNC40LTExLjQtMTkuNS0zMC43LTI4bC0xMC41LTQuNWMtMzAuNC0xMi45LTUwLjUtMjkuMi01MC41LTYzLjUgMC0zMS42IDI0LjEtNTUuNiA2MS42LTU1LjYgMjYuOCAwIDQ2IDkuMyA1OS44IDMzLjdMMzY4IDI5MGMtNy4yLTEyLjktMTUtMTgtMjcuMS0xOC0xMi4zIDAtMjAuMSA3LjgtMjAuMSAxOCAwIDEyLjYgNy44IDE3LjcgMjUuOSAyNS42bDEwLjUgNC41YzM1LjggMTUuMyA1NS45IDMxIDU1LjkgNjYuMiAwIDM3LjgtMjkuOCA1OC42LTY5LjcgNTguNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSnNmaWRkbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEwLjYzNCAyMzcuNDYyYy00LjcyNy0yLjYyMS01LjY2NC01Ljc0OC02LjM4MS0xMC43NzYtMi4zNTItMTYuNDg4LTMuNTM5LTMzLjYxOS05LjA5Ny00OS4wOTUtMzUuODk1LTk5Ljk1Ny0xNTMuOTktMTQzLjM4Ni0yNDYuODQ5LTkxLjY0Ni0yNy4zNyAxNS4yNS00OC45NzEgMzYuMzY5LTY1LjQ5MyA2My45MDMtMy4xODQtMS41MDgtNS40NTgtMi43MS03LjgyNC0zLjY4Ni0zMC4xMDItMTIuNDIxLTU5LjA0OS0xMC4xMjEtODUuMzMxIDkuMTY3LTI1LjUzMSAxOC43MzctMzYuNDIyIDQ0LjU0OC0zMi42NzYgNzYuNDA4LjM1NSAzLjAyNS0xLjk2NyA3LjYyMS00LjUxNCA5LjU0NS0zOS43MTIgMjkuOTkyLTU2LjAzMSA3OC4wNjUtNDEuOTAyIDEyNC42MTUgMTMuODMxIDQ1LjU2OSA1Ny41MTQgNzkuNzk2IDEwNS42MDggODEuNDMzIDMwLjI5MSAxLjAzMSA2MC42MzcuNTQ2IDkwLjk1OS41MzkgODQuMDQxLS4wMjEgMTY4LjA5LjUzMSAyNTIuMTItLjQ4IDUyLjY2NC0uNjM0IDk2LjEwOC0zNi44NzMgMTA4LjIxMi04Ny4yOTMgMTEuNTQtNDguMDc0LTExLjE0NC05Ny4zLTU2LjgzMi0xMjIuNjM0em0yMS4xMDcgMTU2Ljg4Yy0xOC4yMyAyMi40MzItNDIuMzQzIDM1LjI1My03MS4yOCAzNS42NS01Ni44NzQuNzgxLTExMy43NjcuMjMtMTcwLjY1Mi4yMyAwIC43LTE2My4wMjguMTU5LTE2My43MjguMTU0LTQzLjg2MS0uMzMyLTc2LjczOS0xOS43NjYtOTUuMTc1LTU5Ljk5NS0xOC45MDItNDEuMjQ1LTQuMDA0LTkwLjg0OCAzNC4xODYtMTE2LjEwNiA5LjE4Mi02LjA3MyAxMi41MDUtMTEuNTY2IDEwLjA5Ni0yMy4xMzYtNS40OS0yNi4zNjEgNC40NTMtNDcuOTU2IDI2LjQyLTYyLjk4MSAyMi45ODctMTUuNzIzIDQ3LjQyMi0xNi4xNDYgNzIuMDM0LTMuMDgzIDEwLjI2OSA1LjQ1IDE0LjYwNyAxMS41NjQgMjIuMTk4LTIuNTI3IDE0LjIyMi0yNi4zOTkgMzQuNTU3LTQ2LjcyNyA2MC42NzEtNjEuMjk0IDk3LjQ2LTU0LjM2NiAyMjguMzcgNy41NjggMjMwLjI0IDEzMi42OTcuMTIyIDguMTUgMi40MTIgMTIuNDI4IDkuODQ4IDE1Ljg5NCA1Ny41NiAyNi44MjkgNzQuNDU2IDk2LjEyMiAzNS4xNDIgMTQ0LjQ5N3ptLTg3Ljc4OS04MC40OTljLTUuODQ4IDMxLjE1Ny0zNC42MjIgNTUuMDk2LTY2LjY2NiA1NS4wOTUtMTYuOTUzLS4wMDEtMzIuMDU4LTYuNTQ1LTQ0LjA3OS0xNy43MDUtMjcuNjk3LTI1LjcxMy03MS4xNDEtNzQuOTgtOTUuOTM3LTkzLjM4Ny0yMC4wNTYtMTQuODg4LTQxLjk5LTEyLjMzMy02MC4yNzIgMy43ODItNDkuOTk2IDQ0LjA3MSAxNS44NTkgMTIxLjc3NSA2Ny4wNjMgNzcuMTg4IDQuNTQ4LTMuOTYgNy44NC05LjU0MyAxMi43NDQtMTIuODQ0IDguMTg0LTUuNTA5IDIwLjc2Ni0uODg0IDEzLjE2OCAxMC42MjItMTcuMzU4IDI2LjI4NC00OS4zMyAzOC4xOTctNzguODYzIDI5LjMwMS0yOC44OTctOC43MDQtNDguODQtMzUuOTY4LTQ4LjYyNi03MC4xNzkgMS4yMjUtMjIuNDg1IDEyLjM2NC00My4wNiAzNS40MTQtNTUuOTY1IDIyLjU3NS0xMi42MzggNDYuMzY5LTEzLjE0NiA2Ni45OTEgMi40NzRDMjk1LjY4IDI4MC43IDMyMC40NjcgMzIzLjk3IDM1Mi4xODUgMzQzLjQ3YzI0LjU1OCAxNS4wOTkgNTQuMjU0IDcuMzYzIDY4LjgyMy0xNy41MDYgMjguODMtNDkuMjA5LTM0LjU5Mi0xMDUuMDE2LTc4Ljg2OC02My40Ni0zLjk4OSAzLjc0NC02LjkxNyA4LjkzMi0xMS40MSAxMS43Mi0xMC45NzUgNi44MTEtMTcuMzMzLTQuMTEzLTEyLjgwOS0xMC4zNTMgMjAuNzAzLTI4LjU1NCA1MC40NjQtNDAuNDQgODMuMjcxLTI4LjIxNCAzMS40MjkgMTEuNzE0IDQ5LjEwOCA0NC4zNjYgNDIuNzYgNzguMTg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLYWdnbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0LjIgNTAxLjVMMTU4LjQgMzIwLjMgMjk4LjIgMTg1YzIuNi0yLjcgMS43LTEwLjUtNS4zLTEwLjVoLTY5LjJjLTMuNSAwLTcgMS44LTEwLjUgNS4zTDgwLjkgMzEzLjVWNy41cTAtNy41LTcuNS03LjVIMjEuNVExNCAwIDE0IDcuNXY0OTdxMCA3LjUgNy41IDcuNWg1MS45cTcuNSAwIDcuNS03LjV2LTEwOWwzMC44LTI5LjMgMTEwLjUgMTQwLjZjMyAzLjUgNi41IDUuMyAxMC41IDUuM2g2Ni45cTUuMjUgMCA2LTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtleWJhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg2LjE3IDQxOWExOCAxOCAwIDEgMCAxOCAxOCAxOCAxOCAwIDAgMC0xOC0xOHptMTExLjkyLTE0Ny42Yy05LjUtMTQuNjItMzkuMzctNTIuNDUtODcuMjYtNzMuNzFxLTkuMS00LjA2LTE4LjM4LTcuMjdhNzguNDMgNzguNDMgMCAwIDAtNDcuODgtMTA0LjEzYy0xMi40MS00LjEtMjMuMzMtNi0zMi40MS01Ljc3LS42LTItMS44OS0xMSA5LjQtMzVMMTk4LjY2IDMybC01LjQ4IDcuNTZjLTguNjkgMTIuMDYtMTYuOTIgMjMuNTUtMjQuMzQgMzQuODlhNTEgNTEgMCAwIDAtOC4yOS0xLjI1Yy00MS41My0yLjQ1LTM5LTIuMzMtNDEuMDYtMi4zMy01MC42MSAwLTUwLjc1IDUyLjEyLTUwLjc1IDQ1Ljg4bC0yLjM2IDM2LjY4Yy0xLjYxIDI3IDE5Ljc1IDUwLjIxIDQ3LjYzIDUxLjg1bDguOTMuNTRhMjE0IDIxNCAwIDAgMC00Ni4yOSAzNS41NEMxNCAzMDQuNjYgMTQgMzc0IDE0IDQyOS43N3YzMy42NGwyMy4zMi0yOS44YTE0OC42IDE0OC42IDAgMCAwIDE0LjU2IDM3LjU2YzUuNzggMTAuMTMgMTQuODcgOS40NSAxOS42NCA3LjMzIDQuMjEtMS44NyAxMC02LjkyIDMuNzUtMjAuMTFhMTc4LjI5IDE3OC4yOSAwIDAgMS0xNS43Ni01My4xM2w0Ni44Mi01OS44My0yNC42NiA3NC4xMWM1OC4yMy00Mi40IDE1Ny4zOC02MS43NiAyMzYuMjUtMzguNTkgMzQuMiAxMC4wNSA2Ny40NS42OSA4NC43NC0yMy44NC43Mi0xIDEuMi0yLjE2IDEuODUtMy4yMmExNTYuMDkgMTU2LjA5IDAgMCAxIDIuOCAyOC40M2MwIDIzLjMtMy42OSA1Mi45My0xNC44OCA4MS42NC0yLjUyIDYuNDYgMS43NiAxNC41IDguNiAxNS43NCA3LjQyIDEuNTcgMTUuMzMtMy4xIDE4LjM3LTExLjE1QzQyOSA0NDMgNDM0IDQxNCA0MzQgMzgyLjMyYzAtMzguNTgtMTMtNzcuNDYtMzUuOTEtMTEwLjkyek0xNDIuMzcgMTI4LjU4bC0xNS43LS45My0xLjM5IDIxLjc5IDEzLjEzLjc4YTkzIDkzIDAgMCAwIC4zMiAxOS41N2wtMjIuMzgtMS4zNGExMi4yOCAxMi4yOCAwIDAgMS0xMS43Ni0xMi43OUwxMDcgMTE5YzEtMTIuMTcgMTMuODctMTEuMjcgMTMuMjYtMTEuMzJsMjkuMTEgMS43M2ExNDQuMzUgMTQ0LjM1IDAgMCAwLTcgMTkuMTd6bTE0OC40MiAxNzIuMThhMTAuNTEgMTAuNTEgMCAwIDEtMTQuMzUtMS4zOWwtOS42OC0xMS40OS0zNC40MiAyN2E4LjA5IDguMDkgMCAwIDEtMTEuMTMtMS4wOGwtMTUuNzgtMTguNjRhNy4zOCA3LjM4IDAgMCAxIDEuMzQtMTAuMzRsMzQuNTctMjcuMTgtMTQuMTQtMTYuNzQtMTcuMDkgMTMuNDVhNy43NSA3Ljc1IDAgMCAxLTEwLjU5LTFzLTMuNzItNC40Mi0zLjgtNC41M2E3LjM4IDcuMzggMCAwIDEgMS4zNy0xMC4zNEwyMTQgMjI1LjE5cy0xOC41MS0yMi0xOC42LTIyLjE0YTkuNTYgOS41NiAwIDAgMSAxLjc0LTEzLjQyIDEwLjM4IDEwLjM4IDAgMCAxIDE0LjMgMS4zN2w4MS4wOSA5Ni4zMmE5LjU4IDkuNTggMCAwIDEtMS43NCAxMy40NHpNMTg3LjQ0IDQxOWExOCAxOCAwIDEgMCAxOCAxOCAxOCAxOCAwIDAgMC0xOC0xOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2V5Y2RuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzLjggNDA5LjNsNjAuNS01OWMzMi4xIDQyLjggNzEuMSA2NiAxMjYuNiA2Ny40IDMwLjUuNyA2MC4zLTcgODYuNC0yMi40IDUuMSA1LjMgMTguNSAxOS41IDIwLjkgMjItMzIuMiAyMC43LTY5LjYgMzEuMS0xMDguMSAzMC4yLTQzLjMtMS4xLTg0LjYtMTYuNy0xMTcuNy00NC40LjMtLjYtMzguMiAzNy41LTM4LjYgMzcuOSA5LjUgMjkuOC0xMy4xIDYyLjQtNDYuMyA2Mi40QzIwLjcgNTAzLjMgMCA0ODEuNyAwIDQ1NC45YzAtMzQuMyAzMy4xLTU2LjYgNjMuOC00NS42em0zNTQuOS0yNTIuNGMxOS4xIDMxLjMgMjkuNiA2Ny40IDI4LjcgMTA0LTEuMSA0NC44LTE5IDg3LjUtNDguNiAxMjEgLjMuMyAyMy44IDI1LjIgMjQuMSAyNS41IDkuNi0xLjMgMTkuMiAyIDI1LjkgOS4xIDExLjMgMTIgMTAuOSAzMC45LTEuMSA0Mi40LTEyIDExLjMtMzAuOSAxMC45LTQyLjQtMS4xLTYuNy03LTkuNC0xNi44LTcuNi0yNi4zLTI0LjktMjYuNi00NC40LTQ3LjItNDQuNC00Ny4yIDQyLjctMzQuMSA2My4zLTc5LjYgNjQuNC0xMjQuMi43LTI4LjktNy4yLTU3LjItMjEuMS04Mi4ybDIyLjEtMjF6TTEwNCA1My4xYzYuNyA3IDkuNCAxNi44IDcuNiAyNi4zbDQ1LjkgNDguMWMtNC43IDMuOC0xMy4zIDEwLjQtMjIuOCAyMS4zLTI1LjQgMjguNS0zOS42IDY0LjgtNDAuNyAxMDIuOS0uNyAyOC45IDYuMSA1Ny4yIDIwIDgyLjRsLTIyIDIxLjVDNzIuNyAzMjQgNjMuMSAyODcuOSA2NC4yIDI1MC45YzEtNDQuNiAxOC4zLTg3LjYgNDcuNS0xMjEuMWwtMjUuMy0yNi40Yy05LjYgMS4zLTE5LjItMi0yNS45LTkuMS0xMS4zLTEyLTEwLjktMzAuOSAxLjEtNDIuNEM3My41IDQwLjcgOTIuMiA0MSAxMDQgNTMuMXpNNDY0LjkgOGMyNiAwIDQ3LjEgMjIuNCA0Ny4xIDQ4LjNTNDkwLjkgMTA0IDQ2NC45IDEwNGMtNi4zLjEtMTQtMS4xLTE1LjktMS44bC02Mi45IDU5LjdjLTMyLjctNDMuNi03Ni43LTY1LjktMTI2LjktNjcuMi0zMC41LS43LTYwLjMgNi44LTg2LjIgMjIuNGwtMjEuMS0yMkMxODQuMSA3NC4zIDIyMS41IDY0IDI2MCA2NC45YzQzLjMgMS4xIDg0LjYgMTYuNyAxMTcuNyA0NC42bDQxLjEtMzguNmMtMS41LTQuNy0yLjItOS42LTIuMi0xNC41QzQxNi41IDI5LjcgNDM4LjkgOCA0NjQuOSA4ek0yNTYuNyAxMTMuNGM1LjUgMCAxMC45LjQgMTYuNCAxLjEgNzguMSA5LjggMTMzLjQgODEuMSAxMjMuOCAxNTkuMS05LjggNzguMS04MS4xIDEzMy40LTE1OS4xIDEyMy44LTc4LjEtOS44LTEzMy40LTgxLjEtMTIzLjgtMTU5LjIgOS4zLTcyLjQgNzAuMS0xMjQuNiAxNDIuNy0xMjQuOHptLTU5IDExOS40Yy42IDIyLjcgMTIuMiA0MS44IDMyLjQgNTIuMmwtMTEgNTEuN2g3My43bC0xMS01MS43YzIwLjEtMTAuOSAzMi4xLTI5IDMyLjQtNTIuMi0uNC0zMi44LTI1LjgtNTcuNS01OC4zLTU4LjMtMzIuMS44LTU3LjMgMjQuOC01OC4yIDU4LjN6TTI1NiAxNjBcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2lja3N0YXJ0ZXJLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0Ny4zIDExNC40YzAtNTYuMi0zMi41LTgyLjQtNzMuNC04Mi40QzI2LjIgMzIgMCA2OC4yIDAgMTEzLjR2MjgzYzAgNDcuMyAyNS4zIDgzLjQgNzQuOSA4My40IDM5LjggMCA3Mi40LTI1LjYgNzIuNC04My40di03Ni41bDExMi4xIDEzOC4zYzIyLjcgMjcuMiA3Mi4xIDMwLjcgMTAzLjIgMCAyNy0yNy42IDI3LjMtNjcuNCA3LjQtOTIuMmwtOTAuOC0xMTQuOCA3NC45LTEwNy40YzE3LjQtMjQuNyAxNy41LTYzLjEtMTAuNC04OS44LTMwLjMtMjktODIuNC0zMS42LTExMy42IDEyLjhMMTQ3LjMgMTg1di03MC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaWNrc3RhcnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgNDgwSDQ4Yy0yNi40IDAtNDgtMjEuNi00OC00OFY4MGMwLTI2LjQgMjEuNi00OCA0OC00OGgzNTJjMjYuNCAwIDQ4IDIxLjYgNDggNDh2MzUyYzAgMjYuNC0yMS42IDQ4LTQ4IDQ4ek0xOTkuNiAxNzguNWMwLTMwLjctMTcuNi00NS4xLTM5LjctNDUuMS0yNS44IDAtNDAgMTkuOC00MCA0NC41djE1NC44YzAgMjUuOCAxMy43IDQ1LjYgNDAuNSA0NS42IDIxLjUgMCAzOS4yLTE0IDM5LjItNDUuNnYtNDEuOGw2MC42IDc1LjdjMTIuMyAxNC45IDM5IDE2LjggNTUuOCAwIDE0LjYtMTUuMSAxNC44LTM2LjggNC01MC40bC00OS4xLTYyLjggNDAuNS01OC43YzkuNC0xMy41IDkuNS0zNC41LTUuNi00OS4xLTE2LjQtMTUuOS00NC42LTE3LjMtNjEuNCA3bC00NC44IDY0Ljd2LTM4Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtvcnZ1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODYuNSAzNGgtMzI3QzI2LjggMzQgMCA2MC44IDAgOTMuNXYzMjcuMUMwIDQ1My4yIDI2LjggNDgwIDU5LjUgNDgwaDMyNy4xYzMzIDAgNTkuNS0yNi44IDU5LjUtNTkuNXYtMzI3QzQ0NiA2MC44IDQxOS4yIDM0IDM4Ni41IDM0ek04Ny4xIDEyMC44aDk2djExNmw2MS44LTExNmgxMTAuOWwtODEuMiAxMzJIODcuMXYtMTMyem0xNjEuOCAyNzIuMWwtNjUuNy0xMTMuNnYxMTMuNmgtOTZWMjYyLjFoMTkxLjVsODguNiAxMzAuOEgyNDguOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFyYXZlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQuNCwxMTUuODNhNS43Miw1LjcyLDAsMCwwLS4yOC0uNjgsOC41Miw4LjUyLDAsMCwwLS41My0xLjI1LDYsNiwwLDAsMC0uNTQtLjcxLDkuMzYsOS4zNiwwLDAsMC0uNzItLjk0Yy0uMjMtLjIyLS41Mi0uNC0uNzctLjZhOC44NCw4Ljg0LDAsMCwwLS45LS42OEw0MDQuNCw1NS41NWE4LDgsMCwwLDAtOCwwTDMwMC4xMiwxMTFoMGE4LjA3LDguMDcsMCwwLDAtLjg4LjY5LDcuNjgsNy42OCwwLDAsMC0uNzguNiw4LjIzLDguMjMsMCwwLDAtLjcyLjkzYy0uMTcuMjQtLjM5LjQ1LS41NC43MWE5LjcsOS43LDAsMCwwLS41MiwxLjI1Yy0uMDguMjMtLjIxLjQ0LS4yOC42OGE4LjA4LDguMDgsMCwwLDAtLjI4LDIuMDhWMjIzLjE4bC04MC4yMiw0Ni4xOVY2My40NGE3LjgsNy44LDAsMCwwLS4yOC0yLjA5Yy0uMDYtLjI0LS4yLS40NS0uMjgtLjY4YTguMzUsOC4zNSwwLDAsMC0uNTItMS4yNGMtLjE0LS4yNi0uMzctLjQ3LS41NC0uNzJhOS4zNiw5LjM2LDAsMCwwLS43Mi0uOTQsOS40Niw5LjQ2LDAsMCwwLS43OC0uNiw5LjgsOS44LDAsMCwwLS44OC0uNjhoMEwxMTUuNjEsMS4wN2E4LDgsMCwwLDAtOCwwTDExLjM0LDU2LjQ5aDBhNi41Miw2LjUyLDAsMCwwLS44OC42OSw3LjgxLDcuODEsMCwwLDAtLjc5LjYsOC4xNSw4LjE1LDAsMCwwLS43MS45M2MtLjE4LjI1LS40LjQ2LS41NS43MmE3Ljg4LDcuODgsMCwwLDAtLjUxLDEuMjQsNi40Niw2LjQ2LDAsMCwwLS4yOS42Nyw4LjE4LDguMTgsMCwwLDAtLjI4LDIuMXYzMjkuN2E4LDgsMCwwLDAsNCw2Ljk1bDE5Mi41LDExMC44NGE4LjgzLDguODMsMCwwLDAsMS4zMy41NGMuMjEuMDguNDEuMi42My4yNmE3LjkyLDcuOTIsMCwwLDAsNC4xLDBjLjItLjA1LjM3LS4xNi41NS0uMjJhOC42LDguNiwwLDAsMCwxLjQtLjU4TDQwNC40LDQwMC4wOWE4LDgsMCwwLDAsNC02Ljk1VjI4Ny44OGw5Mi4yNC01My4xMWE4LDgsMCwwLDAsNC03VjExNy45MkE4LjYzLDguNjMsMCwwLDAsNTA0LjQsMTE1LjgzWk0xMTEuNiwxNy4yOGgwbDgwLjE5LDQ2LjE1LTgwLjIsNDYuMThMMzEuNDEsNjMuNDRabTg4LjI1LDYwVjI3OC42bC00Ni41MywyNi43OS0zMy42OSwxOS40VjEyMy41bDQ2LjUzLTI2Ljc5Wm0wLDQxMi43OEwyMy4zNywzODguNVY3Ny4zMkw1Ny4wNiw5Ni43bDQ2LjUyLDI2LjhWMzM4LjY4YTYuOTQsNi45NCwwLDAsMCwuMTIuOSw4LDgsMCwwLDAsLjE2LDEuMThoMGE1LjkyLDUuOTIsMCwwLDAsLjM4LjksNi4zOCw2LjM4LDAsMCwwLC40MiwxdjBhOC41NCw4LjU0LDAsMCwwLC42Ljc4LDcuNjIsNy42MiwwLDAsMCwuNjYuODRsMCwwYy4yMy4yMi41Mi4zOC43Ny41OGE4LjkzLDguOTMsMCwwLDAsLjg2LjY2bDAsMCwwLDAsOTIuMTksNTIuMThabTgtMTA2LjE3LTgwLjA2LTQ1LjMyLDg0LjA5LTQ4LjQxLDkyLjI2LTUzLjExLDgwLjEzLDQ2LjEzLTU4LjgsMzMuNTZabTE4NC41Miw0LjU3TDIxNS44OCw0OTAuMTFWMzk3LjhMMzQ2LjYsMzIzLjJsNDUuNzctMjYuMTVabTAtMTE5LjEzTDM1OC42OCwyNTBsLTQ2LjUzLTI2Ljc5VjEzMS43OWwzMy42OSwxOS40TDM5Mi4zNywxNzhabTgtMTA1LjI4LTgwLjItNDYuMTcsODAuMi00Ni4xNiw4MC4xOCw0Ni4xNVptOCwxMDUuMjhWMTc4TDQ1NSwxNTEuMTlsMzMuNjgtMTkuNHY5MS4zOWgwWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXN0Zm1TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptLTkyLjIgMzEyLjljLTYzLjQgMC04NS40LTI4LjYtOTcuMS02NC4xLTE2LjMtNTEtMjEuNS04NC4zLTYzLTg0LjMtMjIuNCAwLTQ1LjEgMTYuMS00NS4xIDYxLjIgMCAzNS4yIDE4IDU3LjIgNDMuMyA1Ny4yIDI4LjYgMCA0Ny42LTIxLjMgNDcuNi0yMS4zbDExLjcgMzEuOXMtMTkuOCAxOS40LTYxLjIgMTkuNGMtNTEuMyAwLTc5LjktMzAuMS03OS45LTg1LjggMC01Ny45IDI4LjYtOTIgODIuNS05MiA3My41IDAgODAuOCA0MS40IDEwMC44IDEwMS45IDguOCAyNi44IDI0LjIgNDYuMiA2MS4yIDQ2LjIgMjQuOSAwIDM4LjEtNS41IDM4LjEtMTkuMSAwLTE5LjktMjEuOC0yMi00OS45LTI4LjYtMzAuNC03LjMtNDIuNS0yMy4xLTQyLjUtNDggMC00MCAzMi4zLTUyLjQgNjUuMi01Mi40IDM3LjQgMCA2MC4xIDEzLjYgNjMgNDYuNmwtMzYuNyA0LjRjLTEuNS0xNS44LTExLTIyLjQtMjguNi0yMi40LTE2LjEgMC0yNiA3LjMtMjYgMTkuOCAwIDExIDQuOCAxNy42IDIwLjkgMjEuMyAzMi43IDcuMSA3MS44IDEyIDcxLjggNTcuNS4xIDM2LjctMzAuNyA1MC42LTc2LjEgNTAuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFzdGZtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNS44IDM2Ny4xbC0xOC44LTUxcy0zMC41IDM0LTc2LjIgMzRjLTQwLjUgMC02OS4yLTM1LjItNjkuMi05MS41IDAtNzIuMSAzNi40LTk3LjkgNzIuMS05Ny45IDY2LjUgMCA3NC44IDUzLjMgMTAwLjkgMTM0LjkgMTguOCA1Ni45IDU0IDEwMi42IDE1NS40IDEwMi42IDcyLjcgMCAxMjItMjIuMyAxMjItODAuOSAwLTcyLjktNjIuNy04MC42LTExNS05Mi4xLTI1LjgtNS45LTMzLjQtMTYuNC0zMy40LTM0IDAtMTkuOSAxNS44LTMxLjcgNDEuNi0zMS43IDI4LjIgMCA0My40IDEwLjYgNDUuNyAzNS44bDU4LjYtN2MtNC43LTUyLjgtNDEuMS03NC41LTEwMC45LTc0LjUtNTIuOCAwLTEwNC40IDE5LjktMTA0LjQgODMuOSAwIDM5LjkgMTkuNCA2NS4xIDY4IDc2LjggNDQuOSAxMC42IDc5LjggMTMuOCA3OS44IDQ1LjcgMCAyMS43LTIxLjEgMzAuNS02MSAzMC41LTU5LjIgMC04My45LTMxLjEtOTcuOS03My45LTMyLTk2LjgtNDMuNi0xNjMtMTYxLjMtMTYzQzQ1LjcgMTEzLjggMCAxNjguMyAwIDI2MWMwIDg5LjEgNDUuNyAxMzcuMiAxMjcuOSAxMzcuMiA2Ni4yIDAgOTcuOS0zMS4xIDk3LjktMzEuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGVhbnB1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODYuNTM5IDExMS40ODVsMTUuMDk2IDI0OC45NTUtMTAuOTc5LS4yNzVjLTM2LjIzMi0uODI0LTcxLjY0IDguNzgzLTEwMi42NTcgMjcuOTk3LTMxLjAxNi0xOS4yMTQtNjYuNDI0LTI3Ljk5Ny0xMDIuNjU3LTI3Ljk5Ny00NS41NjQgMC04Mi4wNyAxMC43MDUtMTIzLjUxNiAyNy43MjNMOTMuMTE3IDEyOS42YzI4LjU0Ni0xMS44MDMgNjEuNDg0LTE4LjExNSA5Mi4yMjYtMTguMTE1IDQxLjE3MyAwIDczLjgzNiAxMy4xNzUgMTAyLjY1NyA0Mi41NDQgMjcuNzIzLTI4LjI3MSA1OS4wMTMtNDEuNzIxIDk4LjUzOS00Mi41NDR6TTU2OS4wNyA0NDhjLTI1LjUyNiAwLTQ3LjQ4NS01LjIxNS03MC41NDItMTUuNjQ1LTM0LjMxLTE1LjY0NS02OS45OTMtMjQuOTc4LTEwNy44NzEtMjQuOTc4LTM4Ljk3NyAwLTc0LjkzNCAxMi45MDEtMTAyLjY1NyA0MC42MjMtMjcuNzIzLTI3LjcyMy02My42OC00MC42MjMtMTAyLjY1Ny00MC42MjMtMzcuODc4IDAtNzMuNTYxIDkuMzMzLTEwNy44NzEgMjQuOTc4QzU1LjIzOSA0NDIuMjM2IDMyLjczMSA0NDggOC4zMDMgNDQ4SDYuOTNMNDkuNDc1IDk4Ljg1OUM4OC43MjYgNzYuNjI2IDEzNi40ODYgNjQgMTgxLjc3NSA2NCAyMTguODMgNjQgMjU2Ljk4NCA3MS42ODUgMjg4IDkzLjA5NSAzMTkuMDE2IDcxLjY4NSAzNTcuMTcgNjQgMzk0LjIyNSA2NGM0NS4yODkgMCA5My4wNDkgMTIuNjI2IDEzMi4zIDM0Ljg1OUw1NjkuMDcgNDQ4em0tNDMuMzY4LTQ0Ljc0MWwtMzQuMDM2LTI4MC4yNDZjLTMwLjc0Mi0xMy45OTktNjcuMjQ4LTIxLjQxLTEwMS4wMDktMjEuNDEtMzguNDI4IDAtNzQuMzg1IDEyLjA3Ny0xMDIuNjU3IDM4LjcwMi0yOC4yNzItMjYuNjI1LTY0LjIyOC0zOC43MDItMTAyLjY1Ny0zOC43MDItMzMuNzYxIDAtNzAuMjY3IDcuNDExLTEwMS4wMDkgMjEuNDFMNTAuMjk4IDQwMy4yNTljNDcuMjExLTE5LjQ4NyA4Mi44OTQtMzMuNDg2IDEzNS4wNDUtMzMuNDg2IDM3LjYwNCAwIDcwLjgxNyA5LjYwNiAxMDIuNjU3IDI5LjY0NCAzMS44NC0yMC4wMzggNjUuMDUyLTI5LjY0NCAxMDIuNjU3LTI5LjY0NCA1Mi4xNTEgMCA4Ny44MzQgMTMuOTk5IDEzNS4wNDUgMzMuNDg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxMi43IDIxOWMwLTIwLjUgMy4yLTMyLjYgMy4yLTU0LjYgMC0zNC4yLTEyLjYtNDUuMi00MC41LTQ1LjJoLTIwLjV2MjQuMmg2LjNjMTQuMiAwIDE3LjMgNC43IDE3LjMgMjIuMSAwIDE2LjMtMS42IDMyLjYtMS42IDUxLjUgMCAyNC4yIDcuOSAzMy42IDIzLjYgMzcuM3YxLjZjLTE1LjggMy43LTIzLjYgMTMuMS0yMy42IDM3LjMgMCAxOC45IDEuNiAzNC4yIDEuNiA1MS41IDAgMTcuOS0zLjcgMjIuNi0xNy4zIDIyLjZ2LjVoLTYuM1YzOTNoMjAuNWMyNy44IDAgNDAuNS0xMSA0MC41LTQ1LjIgMC0yMi42LTMuMi0zNC4yLTMuMi01NC42IDAtMTEgNi44LTIyLjYgMjcuMy0yMy42di0yNy4zYy0yMC41LS43LTI3LjMtMTIuMy0yNy4zLTIzLjN6bS0xMDUuNiAzMmMtMTUuOC02LjMtMzAuNS0xMC0zMC41LTIwLjUgMC03LjkgNi4zLTEyLjYgMTcuOS0xMi42czIyLjEgNC43IDMzLjYgMTMuMWwyMS0yNy44Yy0xMy4xLTEwLTMxLTIwLjUtNTUuMi0yMC41LTM1LjcgMC01OS45IDIwLjUtNTkuOSA0OS40IDAgMjUuNyAyMi42IDM4LjkgNDEuNSA0Ni4yIDE2LjMgNi4zIDMyLjEgMTEuNiAzMi4xIDIyLjEgMCA3LjktNi4zIDEzLjEtMjAuNSAxMy4xLTEzLjEgMC0yNi4zLTUuMy00MC41LTE2LjNsLTIxIDMwLjVjMTUuOCAxMy4xIDM5LjkgMjIuMSA1OS45IDIyLjEgNDIgMCA2NC42LTIyLjEgNjQuNi01MXMtMjIuNS00MS00My00Ny44em0tMzU4LjkgNTkuNGMtMy43IDAtOC40LTMuMi04LjQtMTMuMVYxMTkuMUg2NS4yYy0yOC40IDAtNDEgMTEtNDEgNDUuMiAwIDIyLjYgMy4yIDM1LjIgMy4yIDU0LjYgMCAxMS02LjggMjIuNi0yNy4zIDIzLjZ2MjcuM2MyMC41LjUgMjcuMyAxMi4xIDI3LjMgMjMuMSAwIDE5LjQtMy4yIDMxLTMuMiA1My42IDAgMzQuMiAxMi42IDQ1LjIgNDAuNSA0NS4yaDIwLjV2LTI0LjJoLTYuM2MtMTMuMSAwLTE3LjMtNS4zLTE3LjMtMjIuNnMxLjYtMzIuMSAxLjYtNTEuNWMwLTI0LjItNy45LTMzLjYtMjMuNi0zNy4zdi0xLjZjMTUuOC0zLjcgMjMuNi0xMy4xIDIzLjYtMzcuMyAwLTE4LjktMS42LTM0LjItMS42LTUxLjVzMy43LTIyLjEgMTcuMy0yMi4xSDkzdjE1MC44YzAgMzIuMSAxMSA1My4xIDQzLjEgNTMuMSAxMCAwIDE3LjktMS42IDIzLjYtMy43bC01LjMtMzQuMmMtMy4xLjgtNC42LjgtNi4yLjh6TTM3OS45IDI1MWMtMTYuMy02LjMtMzEtMTAtMzEtMjAuNSAwLTcuOSA2LjMtMTIuNiAxNy45LTEyLjYgMTEuNiAwIDIyLjEgNC43IDMzLjYgMTMuMWwyMS0yNy44Yy0xMy4xLTEwLTMxLTIwLjUtNTUuMi0yMC41LTM1LjcgMC01OS45IDIwLjUtNTkuOSA0OS40IDAgMjUuNyAyMi42IDM4LjkgNDEuNSA0Ni4yIDE2LjMgNi4zIDMyLjEgMTEuNiAzMi4xIDIyLjEgMCA3LjktNi4zIDEzLjEtMjAuNSAxMy4xLTEzLjEgMC0yNi4zLTUuMy00MC41LTE2LjNsLTIwLjUgMzAuNWMxNS44IDEzLjEgMzkuOSAyMi4xIDU5LjkgMjIuMSA0MiAwIDY0LjYtMjIuMSA2NC42LTUxIC4xLTI4LjktMjIuNS00MS00My00Ny44em0tMTU1LTY4LjhjLTM4LjQgMC03NS4xIDMyLjEtNzQuMSA4Mi41IDAgNTIgMzQuMiA4Mi41IDc5LjMgODIuNSAxOC45IDAgMzkuOS02LjggNTYuMi0xNy45bC0xNS44LTI3LjhjLTExLjYgNi44LTIyLjYgMTAtMzQuMiAxMC0yMSAwLTM3LjMtMTAtNDEuNS0zNC4ySDI5MGMuNS0zLjcgMS42LTExIDEuNi0xOS40LjYtNDIuNi0yMi42LTc1LjctNjYuNy03NS43em0tMzAgNjYuMmMzLjItMjEgMTUuOC0zMSAzMC41LTMxIDE4LjkgMCAyNi4zIDEzLjEgMjYuMyAzMWgtNTYuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzIuMSAyMDQuMnY3MS4xYzAgMS44LTEuNCAzLjItMy4yIDMuMmgtMTEuNGMtMS4xIDAtMi4xLS42LTIuNi0xLjNsLTMyLjYtNDR2NDIuMmMwIDEuOC0xLjQgMy4yLTMuMiAzLjJoLTExLjRjLTEuOCAwLTMuMi0xLjQtMy4yLTMuMnYtNzEuMWMwLTEuOCAxLjQtMy4yIDMuMi0zLjJIMjE5YzEgMCAyLjEuNSAyLjYgMS40bDMyLjYgNDR2LTQyLjJjMC0xLjggMS40LTMuMiAzLjItMy4yaDExLjRjMS44LS4xIDMuMyAxLjQgMy4zIDMuMXptLTgyLTMuMmgtMTEuNGMtMS44IDAtMy4yIDEuNC0zLjIgMy4ydjcxLjFjMCAxLjggMS40IDMuMiAzLjIgMy4yaDExLjRjMS44IDAgMy4yLTEuNCAzLjItMy4ydi03MS4xYzAtMS43LTEuNC0zLjItMy4yLTMuMnptLTI3LjUgNTkuNmgtMzEuMXYtNTYuNGMwLTEuOC0xLjQtMy4yLTMuMi0zLjJoLTExLjRjLTEuOCAwLTMuMiAxLjQtMy4yIDMuMnY3MS4xYzAgLjkuMyAxLjYuOSAyLjIuNi41IDEuMy45IDIuMi45aDQ1LjdjMS44IDAgMy4yLTEuNCAzLjItMy4ydi0xMS40YzAtMS43LTEuNC0zLjItMy4xLTMuMnpNMzMyLjEgMjAxaC00NS43Yy0xLjcgMC0zLjIgMS40LTMuMiAzLjJ2NzEuMWMwIDEuNyAxLjQgMy4yIDMuMiAzLjJoNDUuN2MxLjggMCAzLjItMS40IDMuMi0zLjJ2LTExLjRjMC0xLjgtMS40LTMuMi0zLjItMy4ySDMwMXYtMTJoMzEuMWMxLjggMCAzLjItMS40IDMuMi0zLjJWMjM0YzAtMS44LTEuNC0zLjItMy4yLTMuMkgzMDF2LTEyaDMxLjFjMS44IDAgMy4yLTEuNCAzLjItMy4ydi0xMS40Yy0uMS0xLjctMS41LTMuMi0zLjItMy4yek00NDggMTEzLjdWMzk5Yy0uMSA0NC44LTM2LjggODEuMS04MS43IDgxSDgxYy00NC44LS4xLTgxLjEtMzYuOS04MS04MS43VjExM2MuMS00NC44IDM2LjktODEuMSA4MS43LTgxSDM2N2M0NC44LjEgODEuMSAzNi44IDgxIDgxLjd6bS02MS42IDEyMi42YzAtNzMtNzMuMi0xMzIuNC0xNjMuMS0xMzIuNC04OS45IDAtMTYzLjEgNTkuNC0xNjMuMSAxMzIuNCAwIDY1LjQgNTggMTIwLjIgMTM2LjQgMTMwLjYgMTkuMSA0LjEgMTYuOSAxMS4xIDEyLjYgMzYuOC0uNyA0LjEtMy4zIDE2LjEgMTQuMSA4LjggMTcuNC03LjMgOTMuOS01NS4zIDEyOC4yLTk0LjcgMjMuNi0yNiAzNC45LTUyLjMgMzQuOS04MS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW5rZWRpbkluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwMC4yOCA0NDhINy40VjE0OC45aDkyLjg4ek01My43OSAxMDguMUMyNC4wOSAxMDguMSAwIDgzLjUgMCA1My44YTUzLjc5IDUzLjc5IDAgMCAxIDEwNy41OCAwYzAgMjkuNy0yNC4xIDU0LjMtNTMuNzkgNTQuM3pNNDQ3LjkgNDQ4aC05Mi42OFYzMDIuNGMwLTM0LjctLjctNzkuMi00OC4yOS03OS4yLTQ4LjI5IDAtNTUuNjkgMzcuNy01NS42OSA3Ni43VjQ0OGgtOTIuNzhWMTQ4LjloODkuMDh2NDAuOGgxLjNjMTIuNC0yMy41IDQyLjY5LTQ4LjMgODcuODgtNDguMyA5NCAwIDExMS4yOCA2MS45IDExMS4yOCAxNDIuM1Y0NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpbmtlZGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAzMkgzMS45QzE0LjMgMzIgMCA0Ni41IDAgNjQuM3YzODMuNEMwIDQ2NS41IDE0LjMgNDgwIDMxLjkgNDgwSDQxNmMxNy42IDAgMzItMTQuNSAzMi0zMi4zVjY0LjNjMC0xNy44LTE0LjQtMzIuMy0zMi0zMi4zek0xMzUuNCA0MTZINjlWMjAyLjJoNjYuNVY0MTZ6bS0zMy4yLTI0M2MtMjEuMyAwLTM4LjUtMTcuMy0zOC41LTM4LjVTODAuOSA5NiAxMDIuMiA5NmMyMS4yIDAgMzguNSAxNy4zIDM4LjUgMzguNSAwIDIxLjMtMTcuMiAzOC41LTM4LjUgMzguNXptMjgyLjEgMjQzaC02Ni40VjMxMmMwLTI0LjgtLjUtNTYuNy0zNC41LTU2LjctMzQuNiAwLTM5LjkgMjctMzkuOSA1NC45VjQxNmgtNjYuNFYyMDIuMmg2My43djI5LjJoLjljOC45LTE2LjggMzAuNi0zNC41IDYyLjktMzQuNSA2Ny4yIDAgNzkuNyA0NC4zIDc5LjcgMTAxLjlWNDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW5vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM3LjQgMjI2LjNjLS4zLS45LS45LTEuNC0xLjQtMmwtNzAtMzguNmMtLjktLjYtMi0uNi0zLjEgMGwtNTguOSAzNmMtLjkuNi0xLjQgMS43LTEuNCAyLjZsLS45IDMxLjQtMjQtMTZjLS45LS42LTIuMy0uNi0zLjEgMEwyNDAgMjYwLjlsLTEuNC0zNS4xYzAtLjktLjYtMi0xLjQtMi4zbC0zNi0yNC4zIDMzLjctMTcuNGMxLjEtLjYgMS43LTEuNyAxLjctMi45bC01LjctMTMyLjNjMC0uOS0uOS0yLTEuNy0yLjZMMTM4LjYuM2MtLjktLjMtMS43LS4zLTIuMy0uM0wxMi42IDM4LjZjLTEuNC42LTIuMyAyLTIgMy43TDM4IDE3NS40Yy45IDMuNCAzNCAyNy40IDM4LjYgMzAuOWwtMjYuOSAxMi45Yy0xLjQuOS0yIDIuMy0xLjcgMy40bDIwLjYgMTAwLjNjLjYgMi45IDIzLjcgMjMuMSAyNy4xIDI2LjNsLTE3LjQgMTAuNmMtLjkuNi0xLjcgMi0xLjQgMy4xIDEuNCA3LjEgMTUuNCA3Ny43IDE2LjkgNzkuMWw2NS4xIDY5LjFjLjYuNiAxLjQuNiAyLjMuOS42IDAgMS4xLS4zIDEuNy0uNmw4My43LTY2LjljLjktLjYgMS4xLTEuNCAxLjEtMi4zbC0yLTQ2IDI4IDIzLjdjMS4xLjkgMi45LjkgNCAwbDY2LjktNTMuNGMuOS0uNiAxLjEtMS40IDEuMS0yLjNsMi4zLTMzLjQgMjAuMyAxNGMxLjEuOSAyLjYuOSAzLjcgMGw1NC42LTQzLjdjLjYtLjMgMS4xLTEuMSAxLjEtMiAuOS02LjUgMTAuMy03MC44IDkuNy03Mi44em0tMjA0LjggNC44bDQgOTIuNi05MC42IDYxLjItMTQtOTYuNiAxMDAuNi01Ny4yem0tNy43LTE4MGw1LjQgMTI2LTEwNi42IDU1LjRMMTA0IDk3LjdsMTIwLjktNDYuNnpNNDQgMTczLjFMMTggNDhsNzkuNyA0OS40IDE5LjQgMTMyLjlMNDQgMTczLjF6bTMwLjYgMTQ3LjhMNTUuNyAyMzBsNzAgNTguMyAxMy43IDkzLjQtNjQuOC02MC44em0yNC4zIDExNy43bC0xMy43LTY3LjEgNjEuNyA2MC45IDkuNyA2Ny40LTU3LjctNjEuMnptNjQuNSA2NC41bC0xMC42LTcwLjkgODUuNy02MS40IDMuMSA3MC03OC4yIDYyLjN6bTgyLTExNS4xYzAtMy40LjktMjIuOS0yLTI1LjFsLTI0LjMtMjAgMjIuMy0xNC45YzIuMy0xLjcgMS4xLTUuNyAxLjEtOGwyOS40IDIyLjYuNiA2OC4zLTI3LjEtMjIuOXptOTQuMy0yNS40bC02MC45IDQ4LjYtLjYtNjguNiA2NS43LTQ2LjktNC4yIDY2Ljl6bTI3LjctMjUuN2wtMTkuMS0xMy40IDItMzRjLjMtLjktLjMtMi0xLjEtMi42TDMwOCAyNTkuN2wuNi0zMCA2NC42IDQwLjYtNS44IDY2LjZ6bTU0LjYtMzkuOGwtNDguMyAzOC4zIDUuNy02NS4xIDUxLjEtMzYuNi04LjUgNjMuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGludXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIwLjggMTIzLjNjMSAuNSAxLjggMS43IDMgMS43IDEuMSAwIDIuOC0uNCAyLjktMS41LjItMS40LTEuOS0yLjMtMy4yLTIuOS0xLjctLjctMy45LTEtNS41LS4xLS40LjItLjguNy0uNiAxLjEuMyAxLjMgMi4zIDEuMSAzLjQgMS43em0tMjEuOSAxLjdjMS4yIDAgMi0xLjIgMy0xLjcgMS4xLS42IDMuMS0uNCAzLjUtMS42LjItLjQtLjItLjktLjYtMS4xLTEuNi0uOS0zLjgtLjYtNS41LjEtMS4zLjYtMy40IDEuNS0zLjIgMi45LjEgMSAxLjggMS41IDIuOCAxLjR6TTQyMCA0MDMuOGMtMy42LTQtNS4zLTExLjYtNy4yLTE5LjctMS44LTguMS0zLjktMTYuOC0xMC41LTIyLjQtMS4zLTEuMS0yLjYtMi4xLTQtMi45LTEuMy0uOC0yLjctMS41LTQuMS0yIDkuMi0yNy4zIDUuNi01NC41LTMuNy03OS4xLTExLjQtMzAuMS0zMS4zLTU2LjQtNDYuNS03NC40LTE3LjEtMjEuNS0zMy43LTQxLjktMzMuNC03MkMzMTEuMSA4NS40IDMxNS43LjEgMjM0LjggMCAxMzIuNC0uMiAxNTggMTAzLjQgMTU2LjkgMTM1LjJjLTEuNyAyMy40LTYuNCA0MS44LTIyLjUgNjQuNy0xOC45IDIyLjUtNDUuNSA1OC44LTU4LjEgOTYuNy02IDE3LjktOC44IDM2LjEtNi4yIDUzLjMtNi41IDUuOC0xMS40IDE0LjctMTYuNiAyMC4yLTQuMiA0LjMtMTAuMyA1LjktMTcgOC4zcy0xNCA2LTE4LjUgMTQuNWMtMi4xIDMuOS0yLjggOC4xLTIuOCAxMi40IDAgMy45LjYgNy45IDEuMiAxMS44IDEuMiA4LjEgMi41IDE1LjcuOCAyMC44LTUuMiAxNC40LTUuOSAyNC40LTIuMiAzMS43IDMuOCA3LjMgMTEuNCAxMC41IDIwLjEgMTIuMyAxNy4zIDMuNiA0MC44IDIuNyA1OS4zIDEyLjUgMTkuOCAxMC40IDM5LjkgMTQuMSA1NS45IDEwLjQgMTEuNi0yLjYgMjEuMS05LjYgMjUuOS0yMC4yIDEyLjUtLjEgMjYuMy01LjQgNDguMy02LjYgMTQuOS0xLjIgMzMuNiA1LjMgNTUuMSA0LjEuNiAyLjMgMS40IDQuNiAyLjUgNi43di4xYzguMyAxNi43IDIzLjggMjQuMyA0MC4zIDIzIDE2LjYtMS4zIDM0LjEtMTEgNDguMy0yNy45IDEzLjYtMTYuNCAzNi0yMy4yIDUwLjktMzIuMiA3LjQtNC41IDEzLjQtMTAuMSAxMy45LTE4LjMuNC04LjItNC40LTE3LjMtMTUuNS0yOS43ek0yMjMuNyA4Ny4zYzkuOC0yMi4yIDM0LjItMjEuOCA0NC0uNCA2LjUgMTQuMiAzLjYgMzAuOS00LjMgNDAuNC0xLjYtLjgtNS45LTIuNi0xMi42LTQuOSAxLjEtMS4yIDMuMS0yLjcgMy45LTQuNiA0LjgtMTEuOC0uMi0yNy05LjEtMjcuMy03LjMtLjUtMTMuOSAxMC44LTExLjggMjMtNC4xLTItOS40LTMuNS0xMy00LjQtMS02LjktLjMtMTQuNiAyLjktMjEuOHpNMTgzIDc1LjhjMTAuMSAwIDIwLjggMTQuMiAxOS4xIDMzLjUtMy41IDEtNy4xIDIuNS0xMC4yIDQuNiAxLjItOC45LTMuMy0yMC4xLTkuNi0xOS42LTguNC43LTkuOCAyMS4yLTEuOCAyOC4xIDEgLjggMS45LS4yLTUuOSA1LjUtMTUuNi0xNC42LTEwLjUtNTIuMSA4LjQtNTIuMXptLTEzLjYgNjAuN2M2LjItNC42IDEzLjYtMTAgMTQuMS0xMC41IDQuNy00LjQgMTMuNS0xNC4yIDI3LjktMTQuMiA3LjEgMCAxNS42IDIuMyAyNS45IDguOSA2LjMgNC4xIDExLjMgNC40IDIyLjYgOS4zIDguNCAzLjUgMTMuNyA5LjcgMTAuNSAxOC4yLTIuNiA3LjEtMTEgMTQuNC0yMi43IDE4LjEtMTEuMSAzLjYtMTkuOCAxNi0zOC4yIDE0LjktMy45LS4yLTctMS05LjYtMi4xLTgtMy41LTEyLjItMTAuNC0yMC0xNS04LjYtNC44LTEzLjItMTAuNC0xNC43LTE1LjMtMS40LTQuOSAwLTkgNC4yLTEyLjN6bTMuMyAzMzRjLTIuNyAzNS4xLTQzLjkgMzQuNC03NS4zIDE4LTI5LjktMTUuOC02OC42LTYuNS03Ni41LTIxLjktMi40LTQuNy0yLjQtMTIuNyAyLjYtMjYuNHYtLjJjMi40LTcuNi42LTE2LS42LTIzLjktMS4yLTcuOC0xLjgtMTUgLjktMjAgMy41LTYuNyA4LjUtOS4xIDE0LjgtMTEuMyAxMC4zLTMuNyAxMS44LTMuNCAxOS42LTkuOSA1LjUtNS43IDkuNS0xMi45IDE0LjMtMTggNS4xLTUuNSAxMC04LjEgMTcuNy02LjkgOC4xIDEuMiAxNS4xIDYuOCAyMS45IDE2bDE5LjYgMzUuNmM5LjUgMTkuOSA0My4xIDQ4LjQgNDEgNjguOXptLTEuNC0yNS45Yy00LjEtNi42LTkuNi0xMy42LTE0LjQtMTkuNiA3LjEgMCAxNC4yLTIuMiAxNi43LTguOSAyLjMtNi4yIDAtMTQuOS03LjQtMjQuOS0xMy41LTE4LjItMzguMy0zMi41LTM4LjMtMzIuNS0xMy41LTguNC0yMS4xLTE4LjctMjQuNi0yOS45cy0zLTIzLjMtLjMtMzUuMmM1LjItMjIuOSAxOC42LTQ1LjIgMjcuMi01OS4yIDIuMy0xLjcuOCAzLjItOC43IDIwLjgtOC41IDE2LjEtMjQuNCA1My4zLTIuNiA4Mi40LjYtMjAuNyA1LjUtNDEuOCAxMy44LTYxLjUgMTItMjcuNCAzNy4zLTc0LjkgMzkuMy0xMTIuNyAxLjEuOCA0LjYgMy4yIDYuMiA0LjEgNC42IDIuNyA4LjEgNi43IDEyLjYgMTAuMyAxMi40IDEwIDI4LjUgOS4yIDQyLjQgMS4yIDYuMi0zLjUgMTEuMi03LjUgMTUuOS05IDkuOS0zLjEgMTcuOC04LjYgMjIuMy0xNSA3LjcgMzAuNCAyNS43IDc0LjMgMzcuMiA5NS43IDYuMSAxMS40IDE4LjMgMzUuNSAyMy42IDY0LjYgMy4zLS4xIDcgLjQgMTAuOSAxLjQgMTMuOC0zNS43LTExLjctNzQuMi0yMy4zLTg0LjktNC43LTQuNi00LjktNi42LTIuNi02LjUgMTIuNiAxMS4yIDI5LjIgMzMuNyAzNS4yIDU5IDIuOCAxMS42IDMuMyAyMy43LjQgMzUuNyAxNi40IDYuOCAzNS45IDE3LjkgMzAuNyAzNC44LTIuMi0uMS0zLjIgMC00LjIgMCAzLjItMTAuMS0zLjktMTcuNi0yMi44LTI2LjEtMTkuNi04LjYtMzYtOC42LTM4LjMgMTIuNS0xMi4xIDQuMi0xOC4zIDE0LjctMjEuNCAyNy4zLTIuOCAxMS4yLTMuNiAyNC43LTQuNCAzOS45LS41IDcuNy0zLjYgMTgtNi44IDI5LTMyLjEgMjIuOS03Ni43IDMyLjktMTE0LjMgNy4yem0yNTcuNC0xMS41Yy0uOSAxNi44LTQxLjIgMTkuOS02My4yIDQ2LjUtMTMuMiAxNS43LTI5LjQgMjQuNC00My42IDI1LjVzLTI2LjUtNC44LTMzLjctMTkuM2MtNC43LTExLjEtMi40LTIzLjEgMS4xLTM2LjMgMy43LTE0LjIgOS4yLTI4LjggOS45LTQwLjYuOC0xNS4yIDEuNy0yOC41IDQuMi0zOC43IDIuNi0xMC4zIDYuNi0xNy4yIDEzLjctMjEuMS4zLS4yLjctLjMgMS0uNS44IDEzLjIgNy4zIDI2LjYgMTguOCAyOS41IDEyLjYgMy4zIDMwLjctNy41IDM4LjQtMTYuMyA5LS4zIDE1LjctLjkgMjIuNiA1LjEgOS45IDguNSA3LjEgMzAuMyAxNy4xIDQxLjYgMTAuNiAxMS42IDE0IDE5LjUgMTMuNyAyNC42ek0xNzMuMyAxNDguN2MyIDEuOSA0LjcgNC41IDggNy4xIDYuNiA1LjIgMTUuOCAxMC42IDI3LjMgMTAuNiAxMS42IDAgMjIuNS01LjkgMzEuOC0xMC44IDQuOS0yLjYgMTAuOS03IDE0LjgtMTAuNHM1LjktNi4zIDMuMS02LjYtMi42IDIuNi02IDUuMWMtNC40IDMuMi05LjcgNy40LTEzLjkgOS44LTcuNCA0LjItMTkuNSAxMC4yLTI5LjkgMTAuMnMtMTguNy00LjgtMjQuOS05LjdjLTMuMS0yLjUtNS43LTUtNy43LTYuOS0xLjUtMS40LTEuOS00LjYtNC4zLTQuOS0xLjQtLjEtMS44IDMuNyAxLjcgNi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMeWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgODEuMWg3Ny44djIwOC43YzAgMzMuMSAxNSA1Mi44IDI3LjIgNjEtMTIuNyAxMS4xLTUxLjIgMjAuOS04MC4yLTIuOEM3LjggMzM0IDAgMzEwLjcgMCAyODlWODEuMXptNDg1LjkgMTczLjV2LTIyaDIzLjh2LTc2LjhoLTI2LjFjLTEwLjEtNDYuMy01MS4yLTgwLjctMTAwLjMtODAuNy01Ni42IDAtMTAyLjcgNDYtMTAyLjcgMTAyLjdWMzU3YzE2IDIuMyAzNS40LS4zIDUxLjctMTQgMTcuMS0xNCAyNC44LTM3LjIgMjQuOC01OXYtNi43aDM4Ljh2LTc2LjhoLTM4Ljh2LTIzLjNjMC0zNC42IDUyLjItMzQuNiA1Mi4yIDB2NzcuMWMwIDU2LjYgNDYgMTAyLjcgMTAyLjcgMTAyLjd2LTc2LjVjLTE0LjUgMC0yNi4xLTExLjctMjYuMS0yNS45em0tMjk0LjMtOTl2MTEzYzAgMTUuNC0yMy44IDE1LjQtMjMuOCAwdi0xMTNIOTF2MTMyLjdjMCAyMy44IDggNTQgNDUgNjMuOSAzNyA5LjggNTguMi0xMC42IDU4LjItMTAuNi0yLjEgMTMuNC0xNC41IDIzLjMtMzQuOSAyNS4zLTE1LjUgMS42LTM1LjItMy42LTQ1LTcuOHY3MC4zYzI1LjEgNy41IDUxLjUgOS44IDc3LjYgNC43IDQ3LjEtOS4xIDc2LjgtNDguNCA3Ni44LTEwMC44VjE1NS4xaC03Ny4xdi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWdlbnRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0NS43IDEyNy45VjM4NGwtNjMuNCAzNi41VjE2NC43TDIyMy44IDczLjEgNjUuMiAxNjQuN2wuNCAyNTUuOUwyLjMgMzg0VjEyOC4xTDIyNC4yIDBsMjIxLjUgMTI3Ljl6TTI1NS42IDQyMC41TDIyNCA0MzguOWwtMzEuOC0xOC4ydi0yNTZsLTYzLjMgMzYuNi4xIDI1NS45IDk0LjkgNTQuOSA5NS4xLTU0Ljl2LTI1NmwtNjMuNC0zNi42djI1NS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWlsY2hpbXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMwLjYxIDI0My41MmEzNi4xNSAzNi4xNSAwIDAgMSA5LjMgMGMxLjY2LTMuODMgMS45NS0xMC40My40NS0xNy42MS0yLjIzLTEwLjY3LTUuMjUtMTcuMTQtMTEuNDgtMTYuMTNzLTYuNDcgOC43NC00LjI0IDE5LjQyYzEuMjYgNiAzLjQ5IDExLjE0IDYgMTQuMzJ6TTI3Ny4wNSAyNTJjNC40NyAyIDcuMiAzLjI2IDguMjggMi4xMyAxLjg5LTEuOTQtMy40OC05LjM5LTEyLjEyLTEzLjA5YTMxLjQ0IDMxLjQ0IDAgMCAwLTMwLjYxIDMuNjhjLTMgMi4xOC01LjgxIDUuMjItNS40MSA3LjA2Ljg1IDMuNzQgMTAtMi43MSAyMi42LTMuNDggNy0uNDQgMTIuOCAxLjc1IDE3LjI2IDMuNzF6bS05IDUuMTNjLTkuMDcgMS40Mi0xNSA2LjUzLTEzLjQ3IDEwLjEuOS4zNCAxLjE3LjgxIDUuMjEtLjgxYTM3IDM3IDAgMCAxIDE4LjcyLTEuOTVjMi45Mi4zNCA0LjMxLjUyIDQuOTQtLjQ5IDEuNDYtMi4yMi01LjcxLTgtMTUuMzktNi44NXptNTQuMTcgMTcuMWMzLjM4LTYuODctMTAuOS0xMy45My0xNC4zLTdzMTAuOTIgMTMuODggMTQuMzIgNi45N3ptMTUuNjYtMjAuNDdjLTcuNjYtLjEzLTcuOTUgMTUuOC0uMjYgMTUuOTNzNy45OC0xNS44MS4yOC0xNS45NnptLTIxOC43OSA3OC45Yy0xLjMyLjMxLTYgMS40NS04LjQ3LTIuMzUtNS4yLTggMTEuMTEtMjAuMzggMy0zNS43Ny05LjEtMTcuNDctMjcuODItMTMuNTQtMzUuMDUtNS41NC04LjcxIDkuNi04LjcyIDIzLjU0LTUgMjQuMDggNC4yNy41NyA0LjA4LTYuNDcgNy4zOC0xMS42M2ExMi44MyAxMi44MyAwIDAgMSAxNy44NS0zLjcyYzExLjU5IDcuNTkgMS4zNyAxNy43NiAyLjI4IDI4LjYyIDEuMzkgMTYuNjggMTguNDIgMTYuMzcgMjEuNTggOWEyLjA4IDIuMDggMCAwIDAtLjItMi4zM2MuMDMuODkuNjgtMS4zLTMuMzUtLjM5em0yOTkuNzItMTcuMDdjLTMuMzUtMTEuNzMtMi41Ny05LjIyLTYuNzgtMjAuNTIgMi40NS0zLjY3IDE1LjI5LTI0LTMuMDctNDMuMjUtMTAuNC0xMC45Mi0zMy45LTE2LjU0LTQxLjEtMTguNTQtMS41LTExLjM5IDQuNjUtNTguNy0yMS41Mi04MyAyMC43OS0yMS41NSAzMy43Ni00NS4yOSAzMy43My02NS42NS0uMDYtMzkuMTYtNDguMTUtNTEtMTA3LjQyLTI2LjQ3bC0xMi41NSA1LjMzYy0uMDYtLjA1LTIyLjcxLTIyLjI3LTIzLjA1LTIyLjU3QzE2OS41LTE4LTQxLjc3IDIxNi44MSAyNS43OCAyNzMuODVsMTQuNzYgMTIuNTFhNzIuNDkgNzIuNDkgMCAwIDAtNC4xIDMzLjVjMy4zNiAzMy40IDM2IDYwLjQyIDY3LjUzIDYwLjM4IDU3LjczIDEzMy4wNiAyNjcuOSAxMzMuMjggMzIyLjI5IDMgMS43NC00LjQ3IDkuMTEtMjQuNjEgOS4xMS00Mi4zOHMtMTAuMDktMjUuMjctMTYuNTMtMjUuMjd6bS0zMTYgNDguMTZjLTIyLjgyLS42MS00Ny40Ni0yMS4xNS00OS45MS00NS41MS02LjE3LTYxLjMxIDc0LjI2LTc1LjI3IDg0LTEyLjMzIDQuNTQgMjkuNjQtNC42NyA1OC40OS0zNC4xMiA1Ny44MXpNODQuMyAyNDkuNTVDNjkuMTQgMjUyLjUgNTUuNzggMjYxLjA5IDQ3LjYgMjczYy00Ljg4LTQuMDctMTQtMTItMTUuNTktMTUtMTMuMDEtMjQuODUgMTQuMjQtNzMgMzMuMy0xMDAuMjFDMTEyLjQyIDkwLjU2IDE4Ni4xOSAzOS42OCAyMjAuMzYgNDguOTFjNS41NSAxLjU3IDIzLjk0IDIyLjg5IDIzLjk0IDIyLjg5cy0zNC4xNSAxOC45NC02NS44IDQ1LjM1Yy00Mi42NiAzMi44NS03NC44OSA4MC41OS05NC4yIDEzMi40ek0zMjMuMTggMzUwLjdzLTM1Ljc0IDUuMy02OS41MS03LjA3YzYuMjEtMjAuMTYgMjcgNi4xIDk2LjQtMTMuODEgMTUuMjktNC4zOCAzNS4zNy0xMyA1MS0yNS4zNWExMDIuODUgMTAyLjg1IDAgMCAxIDcuMTIgMjQuMjhjMy42Ni0uNjYgMTQuMjUtLjUyIDExLjQ0IDE4LjEtMy4yOSAxOS44Ny0xMS43MyAzNi0yNS45MyA1MC44NEExMDYuODYgMTA2Ljg2IDAgMCAxIDM2Mi41NSA0MjFhMTMyLjQ1IDEzMi40NSAwIDAgMS0yMC4zNCA4LjU4Yy01My41MSAxNy40OC0xMDguMy0xLjc0LTEyNi00M2E2Ni4zMyA2Ni4zMyAwIDAgMS0zLjU1LTkuNzRjLTcuNTMtMjcuMi0xLjE0LTU5LjgzIDE4Ljg0LTgwLjM3IDEuMjMtMS4zMSAyLjQ4LTIuODUgMi40OC00Ljc5YTguNDUgOC40NSAwIDAgMC0xLjkyLTQuNTRjLTctMTAuMTMtMzEuMTktMjcuNC0yNi4zMy02MC44MyAzLjUtMjQgMjQuNDktNDAuOTEgNDQuMDctMzkuOTFsNSAuMjljOC40OC41IDE1Ljg5IDEuNTkgMjIuODggMS44OCAxMS42OS41IDIyLjItMS4xOSAzNC42NC0xMS41NiA0LjItMy41IDcuNTctNi41NCAxMy4yNi03LjUxYTE3LjQ1IDE3LjQ1IDAgMCAxIDEzLjYgMi4yNGMxMCA2LjY0IDExLjQgMjIuNzMgMTEuOTIgMzQuNDkuMjkgNi43MiAxLjEgMjMgMS4zOCAyNy42My42MyAxMC42NyAzLjQzIDEyLjE3IDkuMTEgMTQgMy4xOSAxLjA1IDYuMTUgMS44MyAxMC41MSAzLjA2IDEzLjIxIDMuNzEgMjEgNy40OCAyNiAxMi4zMWExNi4zOCAxNi4zOCAwIDAgMSA0Ljc0IDkuMjljMS41NiAxMS4zNy04LjgyIDI1LjQtMzYuMzEgMzguMTYtNDYuNzEgMjEuNjgtOTMuNjggMTQuNDUtMTAwLjQ4IDEzLjY4LTIwLjE1LTIuNzEtMzEuNjMgMjMuMzItMTkuNTUgNDEuMTUgMjIuNjQgMzMuNDEgMTIyLjQgMjAgMTUxLjM3LTIxLjM1LjY5LTEgLjEyLTEuNTktLjczLTEtNDEuNzcgMjguNTgtOTcuMDYgMzguMjEtMTI4LjQ2IDI2LTQuNzctMS44NS0xNC43My02LjQ0LTE1Ljk0LTE2LjY3IDQzLjYgMTMuNDkgNzEgLjc0IDcxIC43NHMyLjAzLTIuNzktLjU2LTIuNTN6bS02OC40Ny01Ljd6bS04My40LTE4Ny41YzE2Ljc0LTE5LjM1IDM3LjM2LTM2LjE4IDU1LjgzLTQ1LjYzYS43My43MyAwIDAgMSAxIDFjLTEuNDYgMi42Ni00LjI5IDguMzQtNS4xOSAxMi42NWEuNzUuNzUgMCAwIDAgMS4xNi43OWMxMS40OS03LjgzIDMxLjQ4LTE2LjIyIDQ5LTE3LjNhLjc3Ljc3IDAgMCAxIC41MiAxLjM4IDQxLjg2IDQxLjg2IDAgMCAwLTcuNzEgNy43NC43NS43NSAwIDAgMCAuNTkgMS4xOWMxMi4zMS4wOSAyOS42NiA0LjQgNDEgMTAuNzQuNzYuNDMuMjIgMS45MS0uNjQgMS43Mi02OS41NS0xNS45NC0xMjMuMDggMTguNTMtMTM0LjUgMjYuODNhLjc2Ljc2IDAgMCAxLTEtMS4xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFuZGFsb3JpYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMyLjI3IDUxMS44OWMtMS0zLjI2LTEuNjktMTUuODMtMS4zOS0yNC41OC41NS0xNS44OSAxLTI0LjcyIDEuNC0yOC43Ni42NC02LjIgMi44Ny0yMC43MiAzLjI4LTIxLjM4LjYtMSAuNC0yNy44Ny0uMjQtMzMuMTMtLjMxLTIuNTgtLjYzLTExLjktLjY5LTIwLjczLS4xMy0xNi40Ny0uNTMtMjAuMTItMi43My0yNC43Ni0xLjEtMi4zMi0xLjIzLTMuODQtMS0xMS40M2E5Mi4zOCA5Mi4zOCAwIDAgMC0uMzQtMTIuNzFjLTItMTMtMy40Ni0yNy43LTMuMjUtMzMuOXMuNDMtNy4xNSAyLjA2LTkuNjdjMy4wNS00LjcxIDYuNTEtMTQgOC42Mi0yMy4yNyAyLjI2LTkuODYgMy44OC0xNy4xOCA0LjU5LTIwLjc0YTEwOS41NCAxMDkuNTQgMCAwIDEgNC40Mi0xNS4wNWMyLjI3LTYuMjUgMi40OS0xNS4zOS4zNy0xNS4zOS0uMyAwLTEuMzggMS4yMi0yLjQxIDIuNzFzLTQuNzYgNC44LTguMjkgNy4zNmMtOC4zNyA2LjA4LTExLjcgOS4zOS0xMi42NiAxMi41OHMtMSA3LjIzLS4xNiA3Ljc2Yy4zNC4yMSAxLjI5IDIuNCAyLjExIDQuODhhMjguODMgMjguODMgMCAwIDEgLjcyIDE1LjM2Yy0uMzkgMS43Ny0xIDUuNDctMS40NiA4LjIzcy0xIDYuNDYtMS4yNSA4LjIyYTkuODUgOS44NSAwIDAgMS0xLjU1IDQuMjZjLTEgMS0xLjE0LjkxLTIuMDUtLjUzYTE0Ljg3IDE0Ljg3IDAgMCAxLTEuNDQtNC43NWMtLjI1LTEuNzQtMS42My03LjExLTMuMDgtMTEuOTMtMy4yOC0xMC45LTMuNTItMTYuMTUtMS0yMWExNC4yNCAxNC4yNCAwIDAgMCAxLjY3LTQuNjFjMC0yLjM5LTIuMi01LjMyLTcuNDEtOS44OS03LTYuMTgtOC42My03LjkyLTEwLjIzLTExLjMtMS43MS0zLjYtMy4wNi00LjA2LTQuNTQtMS41NC0xLjc4IDMtMi42IDkuMTEtMyAyMmwtLjM0IDEyLjE5IDIgMi4yNWMzLjIxIDMuNyAxMi4wNyAxNi40NSAxMy43OCAxOS44MyAzLjQxIDYuNzQgNC4zNCAxMS42OSA0LjQxIDIzLjU2cy45NSAyMi43NSAyIDI0LjcxYy4zNi42Ni41MSAxLjM1LjM0IDEuNTJzLjQxIDIuMDkgMS4yOSA0LjI3YTM4LjE0IDM4LjE0IDAgMCAxIDIuMDYgOSA5MSA5MSAwIDAgMCAxLjcxIDEwLjM3YzIuMjMgOS41NiAyLjc3IDE0LjA4IDIuMzkgMjAuMTQtLjIgMy4yNy0uNTMgMTEuMDctLjczIDE3LjMyLTEuMzEgNDEuNzYtMS44NSA1OC0yIDYxLjIxLS4xMiAyLS4zOSAxMS41MS0uNiAyMS4wNy0uMzYgMTYuMy0xLjMgMjcuMzctMi40MiAyOC42NS0uNjQuNzMtOC4wNy00LjkxLTEyLjUyLTkuNDktMy43NS0zLjg3LTQtNC43OS0yLjgzLTkuOTUuNy0zIDIuMjYtMTguMjkgMy4zMy0zMi42Mi4zNi00Ljc4LjgxLTEwLjUgMS0xMi43MS44My05LjM3IDEuNjYtMjAuMzUgMi42MS0zNC43OC41Ni04LjQ2IDEuMzMtMTYuNDQgMS43Mi0xNy43M3MuODktOS44OSAxLjEzLTE5LjExbC40My0xNi43Ny0yLjI2LTQuM2MtMS43Mi0zLjI4LTQuODctNi45NC0xMy4yMi0xNS4zNC02LTYuMDctMTEuODQtMTIuMy0xMi45MS0xMy44NWwtMS45NS0yLjgxLjc1LTEwLjljMS4wOS0xNS43MSAxLjEtNDguNTcgMC01OS4wNmwtLjg5LTguNy0zLjI4LTQuNTJjLTUuODYtOC4wOC01LjgtNy43NS02LjIyLTMzLjI3LS4xLTYuMDctLjM4LTExLjUtLjYzLTEyLjA2LS44My0xLjg3LTMuMDUtMi42Ni04LjU0LTMuMDUtOC44Ni0uNjItMTEtMS45LTIzLjg1LTE0LjU1LTYuMTUtNi0xMi4zNC0xMi0xMy43NS0xMy4xOS0yLjgxLTIuNDItMi43OS0yLS41Ni05LjYzbDEuMzUtNC42NS0xLjY5LTNhMzIuMjIgMzIuMjIgMCAwIDAtMi41OS00LjA3Yy0xLjMzLTEuNTEtNS41LTEwLjg5LTYtMTMuNDlhNC4yNCA0LjI0IDAgMCAxIC44Ny0zLjljMi4yMy0yLjg2IDMuNC01LjY4IDQuNDUtMTAuNzMgMi4zMy0xMS4xOSA3Ljc0LTI2LjA5IDEwLjYtMjkuMjIgMy4xOC0zLjQ3IDcuNy0xIDkuNDEgNSAxLjM0IDQuNzkgMS4zNyA5Ljc5LjEgMTguNTVhMTAxLjIgMTAxLjIgMCAwIDAtMSAxMS4xMWMwIDQgLjE5IDQuNjkgMi4yNSA3LjM5IDMuMzMgNC4zNyA3LjczIDcuNDEgMTUuMiAxMC41MmExOC42NyAxOC42NyAwIDAgMSA0LjcyIDIuODVjMTEuMTcgMTAuNzIgMTguNjIgMTYuMTggMjIuOTUgMTYuODUgNS4xOC44IDggNC41NCAxMCAxMy4zOSAxLjMxIDUuNjUgNCAxMS4xNCA1LjQ2IDExLjE0YTkuMzggOS4zOCAwIDAgMCAzLjMzLTEuMzljMi0xLjIyIDIuMjUtMS43MyAyLjI1LTQuMThhMTMyLjg4IDEzMi44OCAwIDAgMC0yLTE3Ljg0Yy0uMzctMS42Ni0uNzgtNC4wNi0uOTMtNS4zNXMtLjYxLTMuODUtMS01LjY5Yy0yLjU1LTExLjE2LTMuNjUtMTUuNDYtNC4xLTE2LTEuNTUtMi00LjA4LTEwLjItNC45My0xNS45Mi0xLjY0LTExLjExLTQtMTQuMjMtMTIuOTEtMTcuMzlBNDMuMTUgNDMuMTUgMCAwIDEgMTY1LjI0IDc4Yy0xLjE1LTEtNC0zLjIyLTYuMzUtNS4wNnMtNC40MS0zLjUzLTQuNi0zLjc2YTIyLjcgMjIuNyAwIDAgMC0yLjY5LTJjLTYuMjQtNC4yMi04Ljg0LTctMTEuMjYtMTJsLTIuNDQtNS0uMjItMTMtLjIyLTEzIDYuOTEtNi41NWMzLjk1LTMuNzUgOC40OC03LjM1IDEwLjU5LTguNDMgMy4zMS0xLjY5IDQuNDUtMS44OSAxMS4zNy0yIDguNTMtLjE5IDEwLjEyIDAgMTEuNjYgMS41NnMxLjM2IDYuNC0uMjkgOC41YTYuNjYgNi42NiAwIDAgMC0xLjM0IDIuMzJjMCAuNTgtMi42MSA0LjkxLTUuNDIgOWEzMC4zOSAzMC4zOSAwIDAgMC0yLjM3IDYuODJjMjAuNDQgMTMuMzkgMjEuNTUgMy43NyAxNC4wNyAyOUwxOTQgNjYuOTJjMy4xMS04LjY2IDYuNDctMTcuMjYgOC42MS0yNi4yMi4yOS03LjYzLTEyLTQuMTktMTUuNC04LjY4LTIuMzMtNS45MyAzLjEzLTE0LjE4IDYuMDYtMTkuMiAxLjYtMi4zNCA2LjYyLTQuNyA4LjgyLTQuMTUuODguMjIgNC4xNi0uMzUgNy4zNy0xLjI4YTQ1LjMgNDUuMyAwIDAgMSA3LjU1LTEuNjggMjkuNTcgMjkuNTcgMCAwIDAgNi0xLjI5YzMuNjUtMS4xMSA0LjUtMS4xNyA2LjM1LS40YTI5LjU0IDI5LjU0IDAgMCAwIDUuODIgMS4zNiAxOC4xOCAxOC4xOCAwIDAgMSA2IDEuOTEgMjIuNjcgMjIuNjcgMCAwIDAgNSAyLjE3YzIuNTEuNjggMyAuNTcgNy4wNS0xLjY3bDQuMzUtMi40TDI2OC4zMiA1YzEwLjQ0LS40IDEwLjgxLS40NyAxNS4yNi0yLjY4TDI4OC4xNiAwbDIuNDYgMS40M2MxLjc2IDEgMy4xNCAyLjczIDQuODUgNiAyLjM2IDQuNTEgMi4zOCA0LjU4IDEuMzcgNy4zNy0uODggMi40NC0uODkgMy4zLS4xIDYuMzlhMzUuNzYgMzUuNzYgMCAwIDAgMi4xIDUuOTEgMTMuNTUgMTMuNTUgMCAwIDEgMS4zMSA0Yy4zMSA0LjMzIDAgNS4zLTIuNDEgNi45Mi0yLjE3IDEuNDctNyA3LjkxLTcgOS4zNGExNC43NyAxNC43NyAwIDAgMS0xLjA3IDNjLTUgMTEuNTEtNi43NiAxMy41Ni0xNC4yNiAxNy05LjIgNC4yLTEyLjMgNS4xOS0xNi4yMSA1LjE5LTMuMSAwLTQgLjI1LTQuNTQgMS4yNmExOC4zMyAxOC4zMyAwIDAgMS00LjA5IDMuNzEgMTMuNjIgMTMuNjIgMCAwIDAtNC4zOCA0Ljc4IDUuODkgNS44OSAwIDAgMS0yLjQ5IDIuOTEgNi44OCA2Ljg4IDAgMCAwLTIuNDUgMS43MSA2Ny42MiA2Ny42MiAwIDAgMS03IDUuMzhjLTMuMzMgMi4zNC02Ljg3IDUtNy44NyA2QTcuMjcgNy4yNyAwIDAgMSAyMjQgMTAwYTUuNzYgNS43NiAwIDAgMC0yLjEzIDEuNjVjLTEuMzEgMS4zOS0xLjQ5IDIuMTEtMS4xNCA0LjZhMzYuNDUgMzYuNDUgMCAwIDAgMS40MiA1Ljg4YzEuMzIgMy44IDEuMzEgNy44NiAwIDEwLjU3cy0uODkgNi42NSAxLjM1IDkuNTljMiAyLjYzIDIuMTYgNC41Ni43MSA4Ljg0YTMzLjQ1IDMzLjQ1IDAgMCAwLTEuMDYgOC45MWMwIDQuODguMjIgNi4yOCAxLjQ2IDguMzhzMS44MiAyLjQ4IDMuMjQgMi4zMmMyLS4yMyAyLjMtMS4wNSA0LjcxLTEyLjEyIDIuMTgtMTAgMy43MS0xMS45MiAxMy43Ni0xNy4wOCAyLjk0LTEuNTEgNy40Ni00IDEwLTUuNDRzNi43OS0zLjY5IDkuMzctNC45MWE0MC4wOSA0MC4wOSAwIDAgMCAxNS4yMi0xMS42N2M3LjExLTguNzkgMTAtMTYuMjIgMTIuODUtMzMuM2ExOC4zNyAxOC4zNyAwIDAgMSAyLjg2LTcuNzMgMjAuMzkgMjAuMzkgMCAwIDAgMi44OS03LjMxYzEtNS4zIDIuODUtOS4wOCA1LjU4LTExLjUxIDQuNy00LjE4IDYtMS4wOSA0LjU5IDEwLjg3LS40NiAzLjg2LTEuMSAxMC4zMy0xLjQ0IDE0LjM4bC0uNjEgNy4zNiA0LjQ1IDQuMDkgNC40NSA0LjA5LjExIDguNDJjLjA2IDQuNjMuNDcgOS41My45MiAxMC44OWwuODIgMi40Ny02LjQzIDYuMjhjLTguNTQgOC4zMy0xMi44OCAxMy45My0xNi43NiAyMS42MS0xLjc3IDMuNDktMy43NCA3LjExLTQuMzggOC0yLjE4IDMuMTEtNi40NiAxMy04Ljc2IDIwLjI2bC0yLjI5IDcuMjItNyA2LjQ5Yy0zLjgzIDMuNTctOCA3LjI1LTkuMTcgOC4xNy0zLjA1IDIuMzItNC4yNiA1LjE1LTQuMjYgMTBhMTQuNjIgMTQuNjIgMCAwIDAgMS41OSA3LjI2IDQyIDQyIDAgMCAxIDIuMDkgNC44MyA5LjI4IDkuMjggMCAwIDAgMS41NyAyLjg5YzEuNCAxLjU5IDEuOTIgMTYuMTIuODMgMjMuMjItLjY4IDQuNDgtMy42MyAxMi00LjcgMTItMS43OSAwLTQuMDYgOS4yNy01LjA3IDIwLjc0LS4xOCAyLS42MiA1Ljk0LTEgOC43cy0xIDEwLTEuMzUgMTYuMDVjLS43NyAxMi4yMi0uMTkgMTguNzcgMiAyMy4xNSAzLjQxIDYuNjkuNTIgMTIuNjktMTEgMjIuODRsLTQgMy40OS4wNyA1LjE5YTQwLjgxIDQwLjgxIDAgMCAwIDEuMTQgOC44N2M0LjYxIDE2IDQuNzMgMTYuOTIgNC4zOCAzNy4xMy0uNDYgMjYuNC0uMjYgNDAuMjcuNjMgNDQuMTVhNjEuMzEgNjEuMzEgMCAwIDEgMS4wOCA3Yy4xNyAyIC42NiA1LjMzIDEuMDggNy4zNi40NyAyLjI2Ljc4IDExIC43OSAyMi43NHYxOS4wNmwtMS44MSAyLjYzYy0yLjcxIDMuOTEtMTUuMTEgMTMuNTQtMTUuNDkgMTIuMjl6bTI5LjUzLTQ1LjExYy0uMTgtLjMtLjMzLTYuODctLjMzLTE0LjU5IDAtMTQuMDYtLjg5LTI3LjU0LTIuMjYtMzQuNDUtLjQtMi0uODEtOS43LS45LTE3LjA2LS4xNS0xMS45My0xLjQtMjQuMzctMi42NC0yNi4zOC0uNjYtMS4wNy0zLTE3LjY2LTMtMjEuMyAwLTQuMjMgMS02IDUuMjgtOS4xM3M0Ljg2LTMuMTQgNS40OC0uNzJjLjI4IDEuMSAxLjQ1IDUuNjIgMi42IDEwIDMuOTMgMTUuMTIgNC4xNCAxNi4yNyA0LjA1IDIxLjc0LS4xIDUuNzgtLjEzIDYuMTMtMS43NCAxNy43My0xIDcuMDctMS4xNyAxMi4zOS0xIDI4LjQzLjE3IDE5LjQtLjY0IDM1LjczLTIgNDEuMjctLjcxIDIuNzgtMi44IDUuNDgtMy40MyA0LjQzem0tNzEtMzcuNThhMTAxIDEwMSAwIDAgMS0xLjczLTEwLjc5IDEwMC41IDEwMC41IDAgMCAwLTEuNzMtMTAuNzkgMzcuNTMgMzcuNTMgMCAwIDEtMS02LjQ5Yy0uMzEtMy4xOS0uOTEtNy40Ni0xLjMzLTkuNDgtMS00Ljc5LTMuMzUtMTkuMzUtMy40Mi0yMS4wNyAwLS43NC0uMzQtNC4wNS0uNy03LjM2LS42Ny02LjIxLS44NC0yNy42Ny0uMjItMjguMjkgMS0xIDYuNjMgMi43NiAxMS4zMyA3LjQzbDUuMjggNS4yNS0uNDUgNi40N2MtLjI1IDMuNTYtLjYgMTAuMjMtLjc4IDE0Ljgzcy0uNDkgOS44Ny0uNjcgMTEuNzEtLjYxIDkuMzYtLjk0IDE2LjcyYy0uNzkgMTcuNDEtMS45NCAzMS4yOS0yLjY1IDMyYS42Mi42MiAwIDAgMS0xLS4xNHptLTg3LjE4LTI2Ni41OWMyMS4wNyAxMi43OSAxNy44NCAxNC4xNSAyOC40OSAxNy42NiAxMyA0LjI5IDE4Ljg3IDcuMTMgMjMuMTUgMTYuODdDMTExLjYgMjMzLjI4IDg2LjI1IDI1NSA3OC41NSAyNjhjLTMxIDUyLTYgMTAxLjU5IDYyLjc1IDg3LjIxLTE0LjE4IDI5LjIzLTc4IDI4LjYzLTk4LjY4LTQuOS0yNC42OC0zOS45NS0yMi4wOS0xMTguMyA2MS0xODcuNjZ6bTIxMC43OSAxNzljNTYuNjYgNi44OCA4Mi4zMi0zNy43NCA0Ni41NC04OS4yMyAwIDAtMjYuODctMjkuMzQtNjQuMjgtNjggMy0xNS40NSA5LjQ5LTMyLjEyIDMwLjU3LTUzLjgyIDg5LjIgNjMuNTEgOTIgMTQxLjYxIDkyLjQ2IDE0OS4zNiA0LjMgNzAuNjQtNzguNyA5MS4xOC0xMDUuMjkgNjEuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcmtkb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU5My44IDU5LjFINDYuMkMyMC43IDU5LjEgMCA3OS44IDAgMTA1LjJ2MzAxLjVjMCAyNS41IDIwLjcgNDYuMiA0Ni4yIDQ2LjJoNTQ3LjdjMjUuNSAwIDQ2LjItMjAuNyA0Ni4xLTQ2LjFWMTA1LjJjMC0yNS40LTIwLjctNDYuMS00Ni4yLTQ2LjF6TTMzOC41IDM2MC42SDI3N3YtMTIwbC02MS41IDc2LjktNjEuNS03Ni45djEyMEg5Mi4zVjE1MS40aDYxLjVsNjEuNSA3Ni45IDYxLjUtNzYuOWg2MS41djIwOS4yem0xMzUuMyAzLjFMMzgxLjUgMjU2SDQ0M1YxNTEuNGg2MS41VjI1Nkg1NjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hc3RvZG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMyAxNzkuMTFjMC05Ny4yLTYzLjcxLTEyNS43LTYzLjcxLTEyNS43LTYyLjUyLTI4LjctMjI4LjU2LTI4LjQtMjkwLjQ4IDAgMCAwLTYzLjcyIDI4LjUtNjMuNzIgMTI1LjcgMCAxMTUuNy02LjYgMjU5LjQgMTA1LjYzIDI4OS4xIDQwLjUxIDEwLjcgNzUuMzIgMTMgMTAzLjMzIDExLjQgNTAuODEtMi44IDc5LjMyLTE4LjEgNzkuMzItMTguMWwtMS43LTM2LjlzLTM2LjMxIDExLjQtNzcuMTIgMTAuMWMtNDAuNDEtMS40LTgzLTQuNC04OS42My01NGExMDIuNTQgMTAyLjU0IDAgMCAxLS45LTEzLjljODUuNjMgMjAuOSAxNTguNjUgOS4xIDE3OC43NSA2LjcgNTYuMTItNi43IDEwNS00MS4zIDExMS4yMy03Mi45IDkuOC00OS44IDktMTIxLjUgOS0xMjEuNXptLTc1LjEyIDEyNS4yaC00Ni42M3YtMTE0LjJjMC00OS43LTY0LTUxLjYtNjQgNi45djYyLjVoLTQ2LjMzVjE5N2MwLTU4LjUtNjQtNTYuNi02NC02Ljl2MTE0LjJIOTAuMTljMC0xMjIuMS01LjItMTQ3LjkgMTguNDEtMTc1IDI1LjktMjguOSA3OS44Mi0zMC44IDEwMy44MyA2LjFsMTEuNiAxOS41IDExLjYtMTkuNWMyNC4xMS0zNy4xIDc4LjEyLTM0LjggMTAzLjgzLTYuMSAyMy43MSAyNy4zIDE4LjQgNTMgMTguNCAxNzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1heGNkbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjEuMSA0NDIuN2gtOTcuNEw0MTUuNiAyMDBjMi4zLTEwLjIuOS0xOS41LTQuNC0yNS43LTUtNi4xLTEzLjctOS42LTI0LjItOS42aC00OS4zbC01OS41IDI3OGgtOTcuNGw1OS41LTI3OGgtODMuNGwtNTkuNSAyNzhIMGw1OS41LTI3OC00NC42LTk1LjRIMzg3YzM5LjQgMCA3NS4zIDE2LjMgOTguMyA0NC45IDIzLjMgMjguNiAzMS44IDY3LjQgMjMuNiAxMDUuOWwtNDcuOCAyMjIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWRiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjM3IDE2MC40MUw3IDM1Mmg0My45MWw1LjU5LTc5LjgzTDg0LjQzIDM1Mmg0NC43MWwyNS41NC03Ny40MyA0Ljc5IDc3LjQzSDIwNWwtMTIuNzktMTkxLjU5SDE0Ni43TDEwNiAyNzcuNzQgNjMuNjcgMTYwLjQxem0yODEgMGgtNDcuOVYzNTJoNDcuOXM5NSAuOCA5NC4yLTk1Ljc5Yy0uNzgtOTQuMjEtOTQuMTgtOTUuNzgtOTQuMTgtOTUuNzh6bS0xLjIgMTQ2LjQ2VjIwNC43OHM0NiA0LjI3IDQ2LjggNTAuNTctNDYuNzggNTEuNTQtNDYuNzggNTEuNTR6bTIzOC4yOS03NC4yNGE1Ni4xNiA1Ni4xNiAwIDAgMCA4LTM4LjMxYy01LjM0LTM1Ljc2LTU1LjA4LTM0LjMyLTU1LjA4LTM0LjMyaC01MS45djE5MS41OEg0ODJzODcgNC43OSA4Ny02My44NWMwLTQzLjE0LTMzLjUyLTU1LjA4LTMzLjUyLTU1LjA4em0tNTEuOS0zMS45NHMxMy41Ny0xLjU5IDE2IDkuNTljMS40MyA2LjY2LTQgMTItNCAxMmgtMTJ2LTIxLjU3em0tLjEgMTA5LjQ2bC4xLTI0LjkyVjI2N2guMDhzNDEuNTgtNC43MyA0MS4xOSAyMi40M2MtLjMzIDI1LjY1LTQxLjM1IDIwLjc0LTQxLjM1IDIwLjc0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWRhcHBzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExOC4zIDIzOC40YzMuNS0xMi41IDYuOS0zMy42IDEzLjItMzMuNiA4LjMgMS44IDkuNiAyMy40IDE4LjYgMzYuNiA0LjYtMjMuNSA1LjMtODUuMSAxNC4xLTg2LjcgOS0uNyAxOS43IDY2LjUgMjIgNzcuNSA5LjkgNC4xIDQ4LjkgNi42IDQ4LjkgNi42IDEuOSA3LjMtMjQgNy42LTQwIDcuOC00LjYgMTQuOC01LjQgMjcuNy0xMS40IDI4LTQuNy4yLTguMi0yOC44LTE3LjUtNDkuNmwtOS40IDY1LjVjLTQuNCAxMy0xNS41LTIyLjUtMjEuOS0zOS4zLTMuMy0uMS02Mi40LTEuNi00Ny42LTcuOGwzMS01ek0yMjggNDQ4YzIxLjIgMCAyMS4yLTMyIDAtMzJIOTJjLTIxLjIgMC0yMS4yIDMyIDAgMzJoMTM2em0tMjQgNjRjMjEuMiAwIDIxLjItMzIgMC0zMmgtODhjLTIxLjIgMC0yMS4yIDMyIDAgMzJoODh6bTM0LjItMTQxLjVjMy4yLTE4LjkgNS4yLTM2LjQgMTEuOS00OC44IDcuOS0xNC43IDE2LjEtMjguMSAyNC00MSAyNC42LTQwLjQgNDUuOS03NS4yIDQ1LjktMTI1LjVDMzIwIDY5LjYgMjQ4LjIgMCAxNjAgMFMwIDY5LjYgMCAxNTUuMmMwIDUwLjIgMjEuMyA4NS4xIDQ1LjkgMTI1LjUgNy45IDEyLjkgMTYgMjYuMyAyNCA0MSA2LjcgMTIuNSA4LjcgMjkuOCAxMS45IDQ4LjkgMy41IDIxIDM2LjEgMTUuNyAzMi42LTUuMS0zLjYtMjEuNy01LjYtNDAuNy0xNS4zLTU4LjZDNjYuNSAyNDYuNSAzMyAyMTEuMyAzMyAxNTUuMiAzMyA4Ny4zIDkwIDMyIDE2MCAzMnMxMjcgNTUuMyAxMjcgMTIzLjJjMCA1Ni4xLTMzLjUgOTEuMy02Ni4xIDE1MS42LTkuNyAxOC0xMS43IDM3LjQtMTUuMyA1OC42LTMuNCAyMC42IDI5IDI2LjQgMzIuNiA1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZGl1bU0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzEuNSAxNDIuM2MuNi01LjktMS43LTExLjgtNi4xLTE1LjhMMjAuMyA3Mi4xVjY0aDE0MC4ybDEwOC40IDIzNy43TDM2NC4yIDY0aDEzMy43djguMWwtMzguNiAzN2MtMy4zIDIuNS01IDYuNy00LjMgMTAuOHYyNzJjLS43IDQuMSAxIDguMyA0LjMgMTAuOGwzNy43IDM3djguMUgzMDcuM3YtOC4xbDM5LjEtMzcuOWMzLjgtMy44IDMuOC01IDMuOC0xMC44VjE3MS4yTDI0MS41IDQ0Ny4xaC0xNC43TDEwMC40IDE3MS4ydjE4NC45Yy0xLjEgNy44IDEuNSAxNS42IDcgMjEuMmw1MC44IDYxLjZ2OC4xaC0xNDR2LThMNjUgMzc3LjNjNS40LTUuNiA3LjktMTMuNSA2LjUtMjEuMlYxNDIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVkaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJ2NDQ4aDQ0OFYzMkgwem0zNzIuMiAxMDYuMWwtMjQgMjNjLTIuMSAxLjYtMy4xIDQuMi0yLjcgNi43djE2OS4zYy0uNCAyLjYuNiA1LjIgMi43IDYuN2wyMy41IDIzdjUuMWgtMTE4VjM2N2wyNC4zLTIzLjZjMi40LTIuNCAyLjQtMy4xIDIuNC02LjdWMTk5LjhsLTY3LjYgMTcxLjZoLTkuMUwxMjUgMTk5Ljh2MTE1Yy0uNyA0LjggMSA5LjcgNC40IDEzLjJsMzEuNiAzOC4zdjUuMUg3MS4ydi01LjFsMzEuNi0zOC4zYzMuNC0zLjUgNC45LTguNCA0LjEtMTMuMnYtMTMzYy40LTMuNy0xLTcuMy0zLjgtOS44TDc1IDEzOC4xVjEzM2g4Ny4zbDY3LjQgMTQ4TDI4OSAxMzMuMWg4My4ydjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZHJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NDQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMy43IDI1NmMwIDEyMS44IDgzLjkgMjIyLjggMTkzLjUgMjQxLjEtMTguNyA0LjUtMzguMiA2LjktNTguMiA2LjlDMTExLjQgNTA0IDAgMzkzIDAgMjU2UzExMS40IDggMjQ4LjkgOGMyMC4xIDAgMzkuNiAyLjQgNTguMiA2LjlDMTk3LjUgMzMuMiAxMTMuNyAxMzQuMiAxMTMuNyAyNTZtMjk3LjQgMTAwLjNjLTc3LjcgNTUuNC0xNzkuNiA0Ny41LTI0MC40LTE0LjYgNS41IDE0LjEgMTIuNyAyNy43IDIxLjcgNDAuNSA2MS42IDg4LjIgMTgyLjQgMTA5LjMgMjY5LjcgNDcgODcuMy02Mi4zIDEwOC4xLTE4NC4zIDQ2LjUtMjcyLjYtOS0xMi45LTE5LjMtMjQuMy0zMC41LTM0LjIgMzcuNCA3OC44IDEwLjcgMTc4LjUtNjcgMjMzLjltLTIxOC44LTI0NGMtMS40IDEtMi43IDIuMS00IDMuMSA2NC4zLTE3LjggMTM1LjkgNCAxNzguOSA2MC41IDM1LjcgNDcgNDIuOSAxMDYuNiAyNC40IDE1OCA1Ni43LTU2LjIgNjcuNi0xNDIuMSAyMi4zLTIwMS44LTUwLTY1LjUtMTQ5LjEtNzQuNC0yMjEuNi0xOS44TTI5NiAyMjRjLTQuNCAwLTgtMy42LTgtOHYtNDBjMC00LjQtMy42LTgtOC04aC00OGMtNC40IDAtOCAzLjYtOCA4djQwYzAgNC40LTMuNiA4LTggOGgtNDBjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDhoNDBjNC40IDAgOCAzLjYgOCA4djQwYzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LTh2LTQwYzAtNC40IDMuNi04IDgtOGg0MGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOGgtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZXR1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05OSA0MTQuM2MxLjEgNS43LTIuMyAxMS4xLTggMTIuMy01LjQgMS4xLTEwLjktMi4zLTEyLTgtMS4xLTUuNCAyLjMtMTEuMSA3LjctMTIuMyA1LjQtMS4yIDExLjEgMi4zIDEyLjMgOHptMTQzLjEgNzEuNGMtNi4zIDQuNi04IDEzLjQtMy43IDIwIDQuNiA2LjYgMTMuNCA4LjMgMjAgMy43IDYuMy00LjYgOC0xMy40IDMuNC0yMC00LjItNi41LTEzLjEtOC4zLTE5LjctMy43em0tODYtNDYyLjNjNi4zLTEuNCAxMC4zLTcuNyA4LjktMTQtMS4xLTYuNi03LjQtMTAuNi0xMy43LTkuMS02LjMgMS40LTEwLjMgNy43LTkuMSAxNCAxLjQgNi42IDcuNiAxMC42IDEzLjkgOS4xek0zNC40IDIyNi4zYy0xMC02LjktMjMuNy00LjMtMzAuNiA2LTYuOSAxMC00LjMgMjQgNS43IDMwLjkgMTAgNy4xIDIzLjcgNC42IDMwLjYtNS43IDYuOS0xMC40IDQuMy0yNC4xLTUuNy0zMS4yem0yNzItMTcwLjljMTAuNi02LjMgMTMuNy0yMCA3LjctMzAuMy02LjMtMTAuNi0xOS43LTE0LTMwLTcuN3MtMTMuNyAyMC03LjQgMzAuNmM2IDEwLjMgMTkuNCAxMy43IDI5LjcgNy40em0tMTkxLjEgNThjNy43LTUuNCA5LjQtMTYgNC4zLTIzLjdzLTE1LjctOS40LTIzLjEtNC4zYy03LjcgNS40LTkuNCAxNi00LjMgMjMuNyA1LjEgNy44IDE1LjYgOS41IDIzLjEgNC4zem0zNzIuMyAxNTZjLTcuNCAxLjctMTIuMyA5LjEtMTAuNiAxNi45IDEuNCA3LjQgOC45IDEyLjMgMTYuMyAxMC42IDcuNC0xLjQgMTIuMy04LjkgMTAuNi0xNi42LTEuNS03LjQtOC45LTEyLjMtMTYuMy0xMC45em0zOS43LTU2LjhjLTEuMS01LjctNi42LTkuMS0xMi04LTUuNyAxLjEtOS4xIDYuOS04IDEyLjYgMS4xIDUuNCA2LjYgOS4xIDEyLjMgOCA1LjQtMS41IDkuMS02LjkgNy43LTEyLjZ6TTQ0NyAxMzguOWMtOC42IDYtMTAuNiAxNy43LTQuOSAyNi4zIDUuNyA4LjYgMTcuNCAxMC42IDI2IDQuOSA4LjMtNiAxMC4zLTE3LjcgNC42LTI2LjMtNS43LTguNy0xNy40LTEwLjktMjUuNy00Ljl6bS02LjMgMTM5LjRjMjYuMyA0My4xIDE1LjEgMTAwLTI2LjMgMTI5LjEtMTcuNCAxMi4zLTM3LjEgMTcuNy01Ni45IDE3LjEtMTIgNDcuMS02OS40IDY0LjYtMTA1LjEgMzIuNi0xLjEuOS0yLjYgMS43LTMuNyAyLjktMzkuMSAyNy4xLTkyLjMgMTcuNC0xMTkuNC0yMi4zLTkuNy0xNC4zLTE0LjYtMzAuNi0xNS4xLTQ2LjktNjUuNC0xMC45LTkwLTk0LTQxLjEtMTM5LjctMjguMy00Ni45LjYtMTA3LjQgNTMuNC0xMTQuOUMxNTEuNiA3MCAyMzQuMSAzOC42IDI5MC4xIDgyYzY3LjQtMjIuMyAxMzYuMyAyOS40IDEzMC45IDEwMS4xIDQxLjEgMTIuNiA1Mi44IDY2LjkgMTkuNyA5NS4yem0tNzAgNzQuM2MtMy4xLTIwLjYtNDAuOS00LjYtNDMuMS0yNy4xLTMuMS0zMiA0My43LTEwMS4xIDQwLTEyOC0zLjQtMjQtMTkuNC0yOS4xLTMzLjQtMjkuNC0xMy40LS4zLTE2LjkgMi0yMS40IDQuNi0yLjkgMS43LTYuNiA0LjktMTEuNy0uMy02LjMtNi0xMS4xLTExLjctMTkuNC0xMi45LTEyLjMtMi0xNy43IDItMjYuNiA5LjctMy40IDIuOS0xMiAxMi45LTIwIDkuMS0zLjQtMS43LTE1LjQtNy43LTI0LTExLjQtMTYuMy03LjEtNDAgNC42LTQ4LjYgMjAtMTIuOSAyMi45LTM4IDExMy4xLTQxLjcgMTI1LjEtOC42IDI2LjYgMTAuOSA0OC42IDM2LjkgNDcuMSAxMS4xLS42IDE4LjMtNC42IDI1LjQtMTcuNCA0LTcuNCA0MS43LTEwNy43IDQ0LjYtMTEyLjYgMi0zLjQgOC45LTggMTQuNi01LjEgNS43IDMuMSA2LjkgOS40IDYgMTUuMS0xLjEgOS43LTI4IDcwLjktMjguOSA3Ny43LTMuNCAyMi45IDI2LjkgMjYuNiAzOC42IDQgMy43LTcuMSA0NS43LTkyLjYgNDkuNC05OC4zIDQuMy02LjMgNy40LTguMyAxMS43LTggMy4xIDAgOC4zLjkgNy4xIDEwLjktMS40IDkuNC0zNS4xIDcyLjMtMzguOSA4Ny43LTQuNiAyMC42IDYuNiA0MS40IDI0LjkgNTAuNiAxMS40IDUuNyA2Mi41IDE1LjcgNTguNS0xMS4xem01LjcgOTIuM2MtMTAuMyA3LjQtMTIuOSAyMi01LjcgMzIuNiA3LjEgMTAuNiAyMS40IDEzLjEgMzIgNiAxMC42LTcuNCAxMy4xLTIyIDYtMzIuNi03LjQtMTAuNi0yMS43LTEzLjUtMzIuMy02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWdhcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTQuNSAyMDkuNnY2Ni4ybDMzLjUgMzMuNSAzMy4zLTMzLjN2LTY2LjRsLTMzLjQtMzMuNHpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMTQ1LjEgNDE0LjRMMzY3IDQ0MS42bC0yNi0xOS4ydi02NS41bC0zMy40LTMzLjQtMzMuNCAzMy40djY1LjVMMjQ4IDQ0MS42bC0yNi4xLTE5LjJ2LTY1LjVsLTMzLjQtMzMuNC0zMy41IDMzLjR2NjUuNWwtMjYuMSAxOS4yLTI2LjEtMTkuMnYtODdsNTkuNS01OS41VjE4OGw1OS41LTU5LjVWNTIuOWwyNi4xLTE5LjJMMjc0IDUyLjl2NzUuNmw1OS41IDU5LjV2ODcuNmw1OS43IDU5Ljd2ODcuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVuZGVsZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0LjYgMzI1LjJjLTEyLjMtMTIuNC0yOS43LTE5LjItNDguNC0xNy4yLTQzLjMtMS00OS43LTM0LjktMzcuNS05OC44IDIyLjgtNTcuNS0xNC45LTEzMS41LTg3LjQtMTMwLjgtNzcuNC43LTgxLjcgODItMTMwLjkgODItNDguMSAwLTU0LTgxLjMtMTMwLjktODItNzIuOS0uOC0xMTAuMSA3My4zLTg3LjQgMTMwLjggMTIuMiA2My45IDUuOCA5Ny44LTM3LjUgOTguOC0yMS4yLTIuMy0zNyA2LjUtNTMgMjIuNS0xOS45IDE5LjctMTkuMyA5NC44IDQyLjYgMTAyLjYgNDcuMSA1LjkgODEuNi00Mi45IDYxLjItODcuOC00Ny4zLTEwMy43IDE4NS45LTEwNi4xIDE0Ni41LTguMi0uMS4xLS4yLjItLjMuNC0yNi44IDQyLjggNi44IDk3LjQgNTguOCA5NS4yIDUyLjEgMi4xIDg1LjQtNTIuNiA1OC44LTk1LjItLjEtLjItLjItLjMtLjMtLjQtMzkuNC05Ny45IDE5My44LTk1LjUgMTQ2LjUgOC4yLTQuNiAxMC02LjcgMjEuMy01LjcgMzMgNC45IDUzLjQgNjguNyA3NC4xIDEwNC45IDM1LjIgMTcuOC0xNC44IDIzLjEtNjUuNiAwLTg4LjN6bS0zMDMuOS0xOS4xaC0uNmMtNDMuNCAwLTYyLjgtMzcuNS02Mi44LTYyLjggMC0zNC43IDI4LjItNjIuOCA2Mi44LTYyLjhoLjZjMzQuNyAwIDYyLjggMjguMSA2Mi44IDYyLjggMCAyNS0xOS4yIDYyLjgtNjIuOCA2Mi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWNyb2Jsb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk5LjM2LDM2Mi4yM2MyOS40OS0zNC42OSw0Ny4xLTc4LjM0LDQ3LjEtMTI1Ljc5QzQ0Ni40NiwxMjMuNDksMzQ2Ljg2LDMyLDIyNCwzMlMxLjU0LDEyMy40OSwxLjU0LDIzNi40NCwxMDEuMTQsNDQwLjg3LDIyNCw0NDAuODdhMjM5LjI4LDIzOS4yOCwwLDAsMCw3OS40NC0xMy40NCw3LjE4LDcuMTgsMCwwLDEsOC4xMiwyLjU2YzE4LjU4LDI1LjA5LDQ3LjYxLDQyLjc0LDc5Ljg5LDQ5LjkyYTQuNDIsNC40MiwwLDAsMCw1LjIyLTMuNDMsNC4zNyw0LjM3LDAsMCwwLS44NS0zLjYyLDg3LDg3LDAsMCwxLDMuNjktMTEwLjY5Wk0zMjkuNTIsMjEyLjRsLTU3LjMsNDMuNDlMMjkzLDMyNC43NWE2LjUsNi41LDAsMCwxLTkuOTQsNy4yMkwyMjQsMjkwLjkyLDE2NC45NCwzMzJhNi41MSw2LjUxLDAsMCwxLTkuOTUtNy4yMmwyMC43OS02OC44Ni01Ny4zLTQzLjQ5YTYuNSw2LjUsMCwwLDEsMy44LTExLjY4bDcxLjg4LTEuNTEsMjMuNjYtNjcuOTJhNi41LDYuNSwwLDAsMSwxMi4yOCwwbDIzLjY2LDY3LjkyLDcxLjg4LDEuNTFhNi41LDYuNSwwLDAsMSwzLjg4LDExLjY4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWNyb3NvZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMmgyMTQuNnYyMTQuNkgwVjMyem0yMzMuNCAwSDQ0OHYyMTQuNkgyMzMuNFYzMnpNMCAyNjUuNGgyMTQuNlY0ODBIMFYyNjUuNHptMjMzLjQgMEg0NDhWNDgwSDIzMy40VjI2NS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2NHYzNDguOWMwIDU2LjIgODggNTguMSA4OCAwVjE3NC4zYzcuOS01Mi45IDg4LTUwLjQgODggNi41djE3NS4zYzAgNTcuOSA5NiA1OCA5NiAwVjI0MGM1LjMtNTQuNyA4OC01Mi41IDg4IDQuM3YyMy44YzAgNTkuOSA4OCA1Ni42IDg4IDBWNjRIMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWl4Y2xvdWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI0LjQzIDIxOS43MjlDNDE2LjEyNCAxMzQuNzI3IDM0NC4xMzUgNjggMjU2LjkxOSA2OGMtNzIuMjY2IDAtMTM2LjIyNCA0Ni41MTYtMTU5LjIwNSAxMTQuMDc0LTU0LjU0NSA4LjAyOS05Ni42MyA1NC44MjItOTYuNjMgMTExLjU4MiAwIDYyLjI5OCA1MC42NjggMTEyLjk2NiAxMTMuMjQzIDExMi45NjZoMjg5LjYxNGM1Mi4zMjkgMCA5NC45NjktNDIuMzYyIDk0Ljk2OS05NC42OTMgMC00NS4xMzEtMzIuMTE4LTgzLjA2My03NC40OC05Mi4yem0tMjAuNDg5IDE0NC41M0gxMTQuMzI3Yy0zOS4wNCAwLTcwLjg4MS0zMS41NjQtNzAuODgxLTcwLjYwNHMzMS44NDEtNzAuNjA0IDcwLjg4MS03MC42MDRjMTguODI3IDAgMzYuNTQ4IDcuNDc1IDQ5LjgzOCAyMC43NjYgMTkuOTYzIDE5Ljk2MyA1MC4xMzMtMTAuMjI3IDMwLjE4LTMwLjE4LTE0LjY3NS0xNC4zOTgtMzIuNjcyLTI0LjM2NS01Mi4wNTMtMjkuMzQ5IDE5LjkzNS00NC4zIDY0Ljc5LTczLjkyNiAxMTQuNjI4LTczLjkyNiA2OS40OTYgMCAxMjUuOTc5IDU2LjQ4MyAxMjUuOTc5IDEyNS43MDIgMCAxMy41NjgtMi4yMTUgMjYuODU3LTYuMzY5IDM5LjU5NC04Ljk0MyAyNy41MTcgMzIuMTMzIDM4LjkzOSA0MC4xNDcgMTMuMjkgMi43NjktOC4zMDYgNC45ODQtMTYuODg5IDYuMzY5LTI1LjQ3MiAxOS4zODEgNy40NzYgMzMuNTAyIDI2LjMwMyAzMy41MDIgNDguNDUzIDAgMjguNzk1LTIzLjUzNSA1Mi4zMy01Mi42MDcgNTIuMzN6bTIzNS4wNjktNTIuMzNjMCA0NC4wMjQtMTIuNzM3IDg2LjM4Ni0zNy4xMDIgMTIyLjY1Ny00LjE1MyA2LjA5Mi0xMC43OTggOS40MTQtMTcuNzIgOS40MTQtMTYuMzE3IDAtMjcuMTI3LTE4LjgyNi0xNy40NDMtMzIuOTQ5IDE5LjM4MS0yOS4zNDkgMjkuOTAzLTYzLjY4MiAyOS45MDMtOTkuMTIycy0xMC41MjEtNjkuNzczLTI5LjkwMy05OC44NDVjLTE1LjY1NS0yMi44MzEgMTkuMzYxLTQ3LjI0IDM1LjE2My0yMy41MzQgMjQuMzY2IDM1Ljk5MyAzNy4xMDIgNzguMzU2IDM3LjEwMiAxMjIuMzc5em0tNzAuODggMGMwIDMxLjU2NS05LjEzNyA2Mi4wMjEtMjYuODU3IDg4LjMyNS00LjE1MyA2LjA5MS0xMC43OTggOS4xMzYtMTcuNzIgOS4xMzYtMTcuMjAxIDAtMjcuMDIyLTE4Ljk3OS0xNy40NDMtMzIuOTQ4IDEzLjAxMy0xOS4xMDQgMTkuNjU4LTQxLjI1NSAxOS42NTgtNjQuNTEzIDAtMjIuOTgxLTYuNjQ1LTQ1LjQwOC0xOS42NTgtNjQuNTEyLTE1Ljc2MS0yMi45ODYgMTkuMDA4LTQ3LjA5NSAzNS4xNjMtMjMuNTM1IDE3LjcxOSAyNi4wMjYgMjYuODU3IDU2LjQ4MyAyNi44NTcgODguMDQ3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaXhlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTQuNTcsNzYuMDdhNDUuNzEsNDUuNzEsMCwwLDAtNjcuNTEtNi40MWMtMTcuNTgsMTYuMTgtMTksNDMuNTItNC43NSw2Mi43N2w5MS43OCwxMjNMNDEuNzYsMzc5LjU4Yy0xNC4yMywxOS4yNS0xMy4xMSw0Ni41OSw0Ljc0LDYyLjc3QTQ1LjcxLDQ1LjcxLDAsMCwwLDExNCw0MzUuOTRMMjQyLjg5LDI2Mi43YTEyLjE0LDEyLjE0LDAsMCwwLDAtMTQuMjNaTTQ3MC4yNCwzNzkuNTgsMzc3LjkxLDI1NS40NWw5MS43OC0xMjNjMTQuMjItMTkuMjUsMTIuODMtNDYuNTktNC43NS02Mi43N2E0NS43MSw0NS43MSwwLDAsMC02Ny41MSw2LjQxbC0xMjgsMTcyLjEyYTEyLjE0LDEyLjE0LDAsMCwwLDAsMTQuMjNMMzk4LDQzNS45NGE0NS43MSw0NS43MSwwLDAsMCw2Ny41MSw2LjQxQzQ4My4zNSw0MjYuMTcsNDg0LjQ3LDM5OC44Myw0NzAuMjQsMzc5LjU4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaXp1bmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkuMSAwIDI1NmMwIDEzNyAxMTEgMjQ4IDI0OCAyNDhzMjQ4LTExMSAyNDgtMjQ4QzQ5NiAxMTkuMSAzODUgOCAyNDggOHptLTgwIDM1MS45Yy0zMS40IDEwLjYtNTguOCAyNy4zLTgwIDQ4LjJWMTM2YzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDB2MjIzLjl6bTEyMC05LjljLTEyLjktMi0yNi4yLTMuMS0zOS44LTMuMS0xMy44IDAtMjcuMiAxLjEtNDAuMiAzLjFWMTM2YzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDB2MjE0em0xMjAgNTcuN2MtMjEuMi0yMC44LTQ4LjYtMzcuNC04MC00OFYxMzZjMC0yMi4xIDE3LjktNDAgNDAtNDBzNDAgMTcuOSA0MCA0MHYyNzEuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9keCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTYgMjQxLjhsMzYuNyAyMy43VjQ4MGwtMTMzLTgzLjhMMzU2IDI0MS44ek00NDAgNzVIMjI2LjNsLTIzIDM3LjggMTUzLjUgOTYuNUw0NDAgNzV6bS04OSAxNDIuOEw1NS4yIDMydjIxNC41bDQ2IDI5TDM1MSAyMTcuOHpNOTcgMjk0LjJMOCA0MzdoMjEzLjdsMTI1LTIwMC41TDk3IDI5NC4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb25lcm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDM4NGgxMDguNEM0MTcgNDU1LjkgMzM4LjEgNTA0IDI0OCA1MDRTNzkgNDU1LjkgMzUuNiAzODRIMTQ0VjI1Ni4yTDI0OCAzNjFsMTA0LTEwNXYxMjh6TTg4IDMzNlYxMjhsMTU5LjQgMTU5LjRMNDA4IDEyOHYyMDhoNzQuOGM4LjUtMjUuMSAxMy4yLTUyIDEzLjItODBDNDk2IDExOSAzODUgOCAyNDggOFMwIDExOSAwIDI1NmMwIDI4IDQuNiA1NC45IDEzLjIgODBIODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5hcHN0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk4LjMgMzczLjZjLTE0LjIgMTMuNi0zMS4zIDI0LjEtNTAuNCAzMC41LTE5LTYuNC0zNi4yLTE2LjktNTAuMy0zMC41aDEwMC43em00NC0xOTkuNmMyMC0xNi45IDQzLjYtMjkuMiA2OS42LTM2LjJWMjk5YzAgMjE5LjQtMzI4IDIxNy42LTMyOCAuM1YxMzcuN2MyNS45IDYuOSA0OS42IDE5LjYgNjkuNSAzNi40IDU2LjgtNDAgMTMyLjUtMzkuOSAxODguOS0uMXptLTIwOC44LTU4LjVjNjQuNC02MCAxNjQuMy02MC4xIDIyOC45LS4yLTcuMSAzLjUtMTMuOSA3LjMtMjAuNiAxMS41LTU4LjctMzAuNS0xMjkuMi0zMC40LTE4Ny45LjEtNi4zLTQtMTMuOS04LjItMjAuNC0xMS40ek00My44IDkzLjJ2NjkuM2MtNTguNCAzNi41LTU4LjQgMTIxLjEuMSAxNTguMyAyNi40IDI0NS4xIDM4MS43IDI0MC4zIDQwNy42IDEuNWwuMy0xLjdjNTguNy0zNi4zIDU4LjktMTIxLjcuMi0xNTguMlY5My4yYy0xNy4zLjUtMzQgMy01MC4xIDcuNC04Mi05MS41LTIyNS41LTkxLjUtMzA3LjUuMS0xNi4zLTQuNC0zMy4xLTctNTAuNi03LjV6TTI1OS4yIDM1MnMzNi0uMyA2MS4zLTEuNWMxMC4yLS41IDIxLjEtNCAyNS41LTYuNSAyNi4zLTE1LjEgMjUuNC0zOS4yIDI2LjItNDcuNC03OS41LS42LTk5LjktMy45LTExMyA1NS40em0tMTM1LjUtNTUuM2MuOCA4LjItLjEgMzIuMyAyNi4yIDQ3LjQgNC40IDIuNSAxNS4yIDYgMjUuNSA2LjUgMjUuMyAxLjEgNjEuMyAxLjUgNjEuMyAxLjUtMTMuMi01OS40LTMzLjctNTYuMS0xMTMtNTUuNHptMTY5LjEgMTIzLjRjLTMuMi01LjMtNi45LTcuMy02LjktNy4zLTI0LjggNy4zLTUyLjIgNi45LTc1LjkgMCAwIDAtMi45IDEuNS02LjQgNi42LTIuOCA0LjEtMy43IDkuNi0zLjcgOS42IDI5LjEgMTcuNiA2Ny4xIDE3LjYgOTYuMiAwLS4xLS4xLS4zLTQtMy4zLTguOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmVvcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTUuNDQgNTEyaC05NS4xMUwyMTIuMTIgMzU3LjQ2djkxLjFMMTI1LjY5IDUxMkgyOFYyOS44Mkw2OC40NyAwaDEwOC4wNWwxMjMuNzQgMTc2LjEzVjYzLjQ1TDM4Ni42OSAwaDk3LjY5djQ2MS41ek0zOC43NyAzNS4yN1Y0OTZsNzItNTIuODhWMTk0bDIxNS41IDMwNy42NGg4NC43OWw1Mi4zNS0zOC4xN2gtNzguMjdMNjkgMTN6bTgyLjU0IDQ2Ni42MWw4MC01OC43OHYtMTAxbC03OS43Ni0xMTQuNHYyMjAuOTRMNDkgNTAxLjg5aDcyLjM0ek04MC42MyAxMC43N2wzMTAuNiA0NDIuNTdoODIuMzdWMTAuNzdoLTc5Ljc1djMxNy41NkwxNzAuOTEgMTAuNzd6TTMxMSAxOTEuNjVsNzIgMTAyLjgxVjE1LjkzbC03MiA1M3YxMjIuNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5pbWJsciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDYuNiAyOTkuMjljMTUuNTcgMCAyNy4xNSAxMS40NiAyNy4xNSAyN3MtMTEuNjIgMjctMjcuMTUgMjdjLTE1LjcgMC0yNy4xNS0xMS41Ny0yNy4xNS0yN3MxMS41NS0yNyAyNy4xNS0yN3pNMTEzIDMyNi4yNWMwLTE1LjYxIDExLjY4LTI3IDI3LjE1LTI3czI3LjE1IDExLjQ2IDI3LjE1IDI3LTExLjQ3IDI3LTI3LjE1IDI3Yy0xNS40NCAwLTI3LjE1LTExLjMxLTI3LjE1LTI3TTE5MS43NiAxNTlDMTU3IDE1OSA4OS40NSAxNzguNzcgNTkuMjUgMjI3TDE0IDB2MzM1LjQ4QzE0IDQzMy4xMyA5My42MSA1MTIgMTkxLjc2IDUxMnMxNzcuNzYtNzguOTUgMTc3Ljc2LTE3Ni41MlMyOTAuMTMgMTU5IDE5MS43NiAxNTl6bTAgMzA4LjEyYy03My4yNyAwLTEzMi41MS01OC45LTEzMi41MS0xMzEuNTlzNTkuMjQtMTMxLjU5IDEzMi41MS0xMzEuNTkgMTMyLjUxIDU4Ljg2IDEzMi41MSAxMzEuNTRTMjY1IDQ2Ny4wNyAxOTEuNzYgNDY3LjA3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOb2RlSnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDUwOGMtNi43IDAtMTMuNS0xLjgtMTkuNC01LjJsLTYxLjctMzYuNWMtOS4yLTUuMi00LjctNy0xLjctOCAxMi4zLTQuMyAxNC44LTUuMiAyNy45LTEyLjcgMS40LS44IDMuMi0uNSA0LjYuNGw0Ny40IDI4LjFjMS43IDEgNC4xIDEgNS43IDBsMTg0LjctMTA2LjZjMS43LTEgMi44LTMgMi44LTVWMTQ5LjNjMC0yLjEtMS4xLTQtMi45LTUuMUwyMjYuOCAzNy43Yy0xLjctMS00LTEtNS43IDBMMzYuNiAxNDQuM2MtMS44IDEtMi45IDMtMi45IDUuMXYyMTMuMWMwIDIgMS4xIDQgMi45IDQuOWw1MC42IDI5LjJjMjcuNSAxMy43IDQ0LjMtMi40IDQ0LjMtMTguN1YxNjcuNWMwLTMgMi40LTUuMyA1LjQtNS4zaDIzLjRjMi45IDAgNS40IDIuMyA1LjQgNS4zVjM3OGMwIDM2LjYtMjAgNTcuNi01NC43IDU3LjYtMTAuNyAwLTE5LjEgMC00Mi41LTExLjZsLTQ4LjQtMjcuOUM4LjEgMzg5LjIuNyAzNzYuMy43IDM2Mi40VjE0OS4zYzAtMTMuOCA3LjQtMjYuOCAxOS40LTMzLjdMMjA0LjYgOWMxMS43LTYuNiAyNy4yLTYuNiAzOC44IDBsMTg0LjcgMTA2LjdjMTIgNi45IDE5LjQgMTkuOCAxOS40IDMzLjd2MjEzLjFjMCAxMy44LTcuNCAyNi43LTE5LjQgMzMuN0wyNDMuNCA1MDIuOGMtNS45IDMuNC0xMi42IDUuMi0xOS40IDUuMnptMTQ5LjEtMjEwLjFjMC0zOS45LTI3LTUwLjUtODMuNy01OC01Ny40LTcuNi02My4yLTExLjUtNjMuMi0yNC45IDAtMTEuMSA0LjktMjUuOSA0Ny40LTI1LjkgMzcuOSAwIDUxLjkgOC4yIDU3LjcgMzMuOC41IDIuNCAyLjcgNC4yIDUuMiA0LjJoMjRjMS41IDAgMi45LS42IDMuOS0xLjdzMS41LTIuNiAxLjQtNC4xYy0zLjctNDQuMS0zMy02NC42LTkyLjItNjQuNi01Mi43IDAtODQuMSAyMi4yLTg0LjEgNTkuNSAwIDQwLjQgMzEuMyA1MS42IDgxLjggNTYuNiA2MC41IDUuOSA2NS4yIDE0LjggNjUuMiAyNi43IDAgMjAuNi0xNi42IDI5LjQtNTUuNSAyOS40LTQ4LjkgMC01OS42LTEyLjMtNjMuMi0zNi42LS40LTIuNi0yLjYtNC41LTUuMy00LjVoLTIzLjljLTMgMC01LjMgMi40LTUuMyA1LjMgMCAzMS4xIDE2LjkgNjguMiA5Ny44IDY4LjIgNTguNC0uMSA5Mi0yMy4yIDkyLTYzLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE2LjMgNDUyYy0yLjEgMC00LjItLjYtNi4xLTEuNkwyOTEgNDM5Yy0yLjktMS42LTEuNS0yLjItLjUtMi41IDMuOC0xLjMgNC42LTEuNiA4LjctNCAuNC0uMiAxLS4xIDEuNC4xbDE0LjggOC44Yy41LjMgMS4zLjMgMS44IDBMMzc1IDQwOGMuNS0uMy45LS45LjktMS42di02Ni43YzAtLjctLjMtMS4zLS45LTEuNmwtNTcuOC0zMy4zYy0uNS0uMy0xLjItLjMtMS44IDBsLTU3LjggMzMuM2MtLjYuMy0uOSAxLS45IDEuNnY2Ni43YzAgLjYuNCAxLjIuOSAxLjVsMTUuOCA5LjFjOC42IDQuMyAxMy45LS44IDEzLjktNS44di02NS45YzAtLjkuNy0xLjcgMS43LTEuN2g3LjNjLjkgMCAxLjcuNyAxLjcgMS43djY1LjljMCAxMS41LTYuMiAxOC0xNy4xIDE4LTMuMyAwLTYgMC0xMy4zLTMuNmwtMTUuMi04LjdjLTMuNy0yLjItNi4xLTYuMi02LjEtMTAuNXYtNjYuN2MwLTQuMyAyLjMtOC40IDYuMS0xMC41bDU3LjgtMzMuNGMzLjctMi4xIDguNS0yLjEgMTIuMSAwbDU3LjggMzMuNGMzLjcgMi4yIDYuMSA2LjIgNi4xIDEwLjV2NjYuN2MwIDQuMy0yLjMgOC40LTYuMSAxMC41bC01Ny44IDMzLjRjLTEuNyAxLjEtMy44IDEuNy02IDEuN3ptNDYuNy02NS44YzAtMTIuNS04LjQtMTUuOC0yNi4yLTE4LjItMTgtMi40LTE5LjgtMy42LTE5LjgtNy44IDAtMy41IDEuNS04LjEgMTQuOC04LjEgMTEuOSAwIDE2LjMgMi42IDE4LjEgMTAuNi4yLjguOCAxLjMgMS42IDEuM2g3LjVjLjUgMCAuOS0uMiAxLjItLjUuMy0uNC41LS44LjQtMS4zLTEuMi0xMy44LTEwLjMtMjAuMi0yOC44LTIwLjItMTYuNSAwLTI2LjMgNy0yNi4zIDE4LjYgMCAxMi43IDkuOCAxNi4xIDI1LjYgMTcuNyAxOC45IDEuOSAyMC40IDQuNiAyMC40IDguMyAwIDYuNS01LjIgOS4yLTE3LjQgOS4yLTE1LjMgMC0xOC43LTMuOC0xOS44LTExLjQtLjEtLjgtLjgtMS40LTEuNy0xLjRoLTcuNWMtLjkgMC0xLjcuNy0xLjcgMS43IDAgOS43IDUuMyAyMS4zIDMwLjYgMjEuMyAxOC41IDAgMjktNy4yIDI5LTE5Ljh6bTU0LjUtNTAuMWMwIDYuMS01IDExLjEtMTEuMSAxMS4xcy0xMS4xLTUtMTEuMS0xMS4xYzAtNi4zIDUuMi0xMS4xIDExLjEtMTEuMSA2LS4xIDExLjEgNC44IDExLjEgMTEuMXptLTEuOCAwYzAtNS4yLTQuMi05LjMtOS40LTkuMy01LjEgMC05LjMgNC4xLTkuMyA5LjMgMCA1LjIgNC4yIDkuNCA5LjMgOS40IDUuMi0uMSA5LjQtNC4zIDkuNC05LjR6bS00LjUgNi4yaC0yLjZjLS4xLS42LS41LTMuOC0uNS0zLjktLjItLjctLjQtMS4xLTEuMy0xLjFoLTIuMnY1aC0yLjR2LTEyLjVoNC4zYzEuNSAwIDQuNCAwIDQuNCAzLjMgMCAyLjMtMS41IDIuOC0yLjQgMy4xIDEuNy4xIDEuOCAxLjIgMi4xIDIuOC4xIDEgLjMgMi43LjYgMy4zem0tMi44LTguOGMwLTEuNy0xLjItMS43LTEuOC0xLjdoLTJ2My41aDEuOWMxLjYgMCAxLjktMS4xIDEuOS0xLjh6TTEzNy4zIDE5MWMwLTIuNy0xLjQtNS4xLTMuNy02LjRsLTYxLjMtMzUuM2MtMS0uNi0yLjItLjktMy40LTFoLS42Yy0xLjIgMC0yLjMuNC0zLjQgMUwzLjcgMTg0LjZDMS40IDE4NS45IDAgMTg4LjQgMCAxOTFsLjEgOTVjMCAxLjMuNyAyLjUgMS44IDMuMiAxLjEuNyAyLjUuNyAzLjcgMEw0MiAyNjguM2MyLjMtMS40IDMuNy0zLjggMy43LTYuNHYtNDQuNGMwLTIuNiAxLjQtNS4xIDMuNy02LjRsMTUuNS04LjljMS4yLS43IDIuNC0xIDMuNy0xIDEuMyAwIDIuNi4zIDMuNyAxbDE1LjUgOC45YzIuMyAxLjMgMy43IDMuOCAzLjcgNi40djQ0LjRjMCAyLjYgMS40IDUuMSAzLjcgNi40bDM2LjQgMjAuOWMxLjEuNyAyLjYuNyAzLjcgMCAxLjEtLjYgMS44LTEuOSAxLjgtMy4ybC4yLTk1ek00NzIuNSA4Ny4zdjE3Ni40YzAgMi42LTEuNCA1LjEtMy43IDYuNGwtNjEuMyAzNS40Yy0yLjMgMS4zLTUuMSAxLjMtNy40IDBsLTYxLjMtMzUuNGMtMi4zLTEuMy0zLjctMy44LTMuNy02LjR2LTcwLjhjMC0yLjYgMS40LTUuMSAzLjctNi40bDYxLjMtMzUuNGMyLjMtMS4zIDUuMS0xLjMgNy40IDBsMTUuMyA4LjhjMS43IDEgMy45LS4zIDMuOS0yLjJ2LTk0YzAtMi44IDMtNC42IDUuNS0zLjJsMzYuNSAyMC40YzIuMyAxLjIgMy44IDMuNyAzLjggNi40em0tNDYgMTI4LjljMC0uNy0uNC0xLjMtLjktMS42bC0yMS0xMi4yYy0uNi0uMy0xLjMtLjMtMS45IDBsLTIxIDEyLjJjLS42LjMtLjkuOS0uOSAxLjZ2MjQuM2MwIC43LjQgMS4zLjkgMS42bDIxIDEyLjFjLjYuMyAxLjMuMyAxLjggMGwyMS0xMi4xYy42LS4zLjktLjkuOS0xLjZ2LTI0LjN6bTIwOS44LS43YzIuMy0xLjMgMy43LTMuOCAzLjctNi40VjE5MmMwLTIuNi0xLjQtNS4xLTMuNy02LjRsLTYwLjktMzUuNGMtMi4zLTEuMy01LjEtMS4zLTcuNCAwbC02MS4zIDM1LjRjLTIuMyAxLjMtMy43IDMuOC0zLjcgNi40djcwLjhjMCAyLjcgMS40IDUuMSAzLjcgNi40bDYwLjkgMzQuN2MyLjIgMS4zIDUgMS4zIDcuMyAwbDM2LjgtMjAuNWMyLjUtMS40IDIuNS01IDAtNi40TDU1MCAyNDEuNmMtMS4yLS43LTEuOS0xLjktMS45LTMuMnYtMjIuMmMwLTEuMy43LTIuNSAxLjktMy4ybDE5LjItMTEuMWMxLjEtLjcgMi42LS43IDMuNyAwbDE5LjIgMTEuMWMxLjEuNyAxLjkgMS45IDEuOSAzLjJ2MTcuNGMwIDIuOCAzLjEgNC42IDUuNiAzLjJsMzYuNy0yMS4zek01NTkgMjE5Yy0uNC4zLS43LjctLjcgMS4ydjEzLjZjMCAuNS4zIDEgLjcgMS4ybDExLjggNi44Yy40LjMgMSAuMyAxLjQgMEw1ODQgMjM1Yy40LS4zLjctLjcuNy0xLjJ2LTEzLjZjMC0uNS0uMy0xLS43LTEuMmwtMTEuOC02LjhjLS40LS4zLTEtLjMtMS40IDBMNTU5IDIxOXptLTI1NC4yIDQzLjV2LTcwLjRjMC0yLjYtMS42LTUuMS0zLjktNi40bC02MS4xLTM1LjJjLTIuMS0xLjItNS0xLjQtNy40IDBsLTYxLjEgMzUuMmMtMi4zIDEuMy0zLjkgMy43LTMuOSA2LjR2NzAuNGMwIDIuOCAxLjkgNS4yIDQgNi40bDYxLjIgMzUuMmMyLjQgMS40IDUuMiAxLjMgNy40IDBsNjEtMzUuMmMxLjgtMSAzLjEtMi43IDMuNi00LjcuMS0uNS4yLTEuMS4yLTEuN3ptLTc0LjMtMTI0LjlsLS44LjVoMS4xbC0uMy0uNXptNzYuMiAxMzAuMmwtLjQtLjd2LjlsLjQtLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5wbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMjg4aC0zMnYtNjRoMzJ2NjR6bTI4OC0xMjh2MTkySDI4OHYzMkgxNjB2LTMySDBWMTYwaDU3NnptLTQxNiAzMkgzMnYxMjhoNjR2LTk2aDMydjk2aDMyVjE5MnptMTYwIDBIMTkydjE2MGg2NHYtMzJoNjRWMTkyem0yMjQgMEgzNTJ2MTI4aDY0di05NmgzMnY5NmgzMnYtOTZoMzJ2OTZoMzJWMTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOczggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA0LjMyNCwyNjkuMTcyaDI2LjA2N1YyNDIuOTk0SDEwNC4zMjRabTUyLjQ2Ni0yNi4xNzgtLjA1NS0yNi4xNzh2LS45NDFhMzkuMzI1LDM5LjMyNSwwLDAsMC03OC42NDQuOTQxdi4xNjZoMjYuNHYtLjE2NmExMi45OCwxMi45OCwwLDAsMSwyNS45NTYsMHYyNi4xNzhabTUyLjM1NiwyNS44NDZhOTEuMSw5MS4xLDAsMCwxLTkxLjEsOTEuMWgtLjYwOWE5MS4xLDkxLjEsMCwwLDEtOTEuMS05MS4xSDB2LjE2NkExMTcuMzMsMTE3LjMzLDAsMCwwLDExNy40NCwzODYuMjhoLjc3NUExMTcuMzMxLDExNy4zMzEsMCwwLDAsMjM1LjQ5LDI2OC44NFYyNDIuODI4SDIwOS4xNDZabS0xNTcuMjMzLDBhNjUuMzYyLDY1LjM2MiwwLDAsMCwxMzAuNzIzLDBIMTU2LjI5MmEzOS4wMjMsMzkuMDIzLDAsMCwxLTc4LjAzNSwwVjI0Mi44ODNINTEuOTY4di0yNi42MkE2NS40Miw2NS40MiwwLDAsMSwxODIuOCwyMTcuNDh2MjUuMjkzaDI2LjM0NFYyMTcuNDhhOTEuNzYxLDkxLjc2MSwwLDAsMC0xODMuNTIyLDB2MjUuNEg1MS45MTNabTQxOC40LTcxLjE3M2MxMy42NywwLDI0LjU3Myw2LjY0MiwzMC4wNTIsMTguMjY0bC43MTksMS41NDksMjMuMjQ1LTExLjUxMS0uNjA5LTEuNDM5Yy04LjAyNS0xOS4yNi0yOC41LTMxLjI3LTUzLjQwNy0zMS4yNy0yMy4xMzQsMC00My42MTEsMTEuNC01MC45NzIsMjguNDQ3LS4xMjMsMjYuODc2LS4xNTgsMjMuOSwwLDI0Ljg1LDQuNywxMS4wMTMsMTQuNTU1LDE5LjM3LDI4LjY2OCwyNC4yNDFhMTAyLjAzMywxMDIuMDMzLDAsMCwwLDE5LjgxMywzLjk4NGM1LjQ3OS43MiwxMC42MjYsMS4zODQsMTUuODI5LDMuMSw2LjM2NCwyLjEsMTAuNDYsNS4yNTcsMTIuODQsOS44NTF2OS44NTFjLTMuNzA4LDcuNTI3LTEzLjc4MSwxMi4zNDItMjUuNzkxLDEyLjM0Mi0xNC4zMzQsMC0yNS45NTYtNi45MTgtMzEuOTMzLTE5LjAzOWwtLjcyLTEuNDk0TDQxNS4wMjYsMjgwLjlsLjU1MywxLjQzOWM3LjkxNSwxOS40MjYsMjkuNjA5LDMyLjA0NCw1NS4yODksMzIuMDQ0LDIzLjYzMiwwLDQ0LjYwOC0xMS40LDUyLjMtMjguNDQ3bC4xNjYtMjUuOS0uMTY2LS42NjRjLTQuODctMTEuMDE0LTE1LjIxOS0xOS42NDctMjguOTQ0LTI0LjI0MS03LjY5My0yLjcxMi0xNC4zMzUtMy42LTIwLjctNC40MjdhODMuNzc3LDgzLjc3NywwLDAsMS0xNC44MzItMi44NzhjLTYuMzEtMS45MzctMTAuNC01LjA5Mi0xMi42MTktOS42M3YtOC40MTJDNDQ5LjQ1LDIwMi40MjcsNDU4Ljk2OSwxOTcuNjY3LDQ3MC4zMTUsMTk3LjY2N1pNMjg3LjU2OCwzMTEuMzQ0aDI2LjA2N3YtNjguNEgyODcuNTY4Wm0zNTIuMjY2LTUzLjNjLTIuOTMzLTYuMjU0LTguMy0xMi4wMS0xNS40NDEtMTYuNzE0QTM3Ljk5LDM3Ljk5LDAsMCwwLDYzNy40LDIyNmwuMTY2LTI1LjM0Ny0uMTY2LS42NjRDNjMwLjAzOCwxODQsNjEwLjY2NywxNzMuMjYsNTg5LjI1LDE3My4yNlM1NDguNDYxLDE4NCw1NDEuMSwxOTkuOTkybC0uMTY2LDI1LjM0Ny4xNjYuNjY0YTM5LjY0MywzOS42NDMsMCwwLDAsMTMuMDA2LDE1LjMzMWMtNy4yLDQuNy0xMi41MDgsMTAuNDYtMTUuNDQxLDE2LjcxNGwtLjE2NiwyOC44ODkuMTY2LjcyYzcuNTgyLDE1Ljk5NCwyNy44OTMsMjYuNzMxLDUwLjU4NSwyNi43MzFzNDMuMDU3LTEwLjczNyw1MC41ODQtMjYuNzMxbC4xNjYtMjguODlabS03My4yMi01MC44MDZjMy42LTYuMzEsMTIuNTYzLTEwLjUxNiwyMi41OC0xMC41MTZzMTkuMDM4LDQuMjA2LDIyLjYzNiwxMC41MTZ2MTMuNzI1Yy0zLjU0Miw2LjItMTIuNTYzLDEwLjM0OS0yMi42MzYsMTAuMzQ5cy0xOS4wOTQtNC4xNS0yMi41OC0xMC4zNDlabTQ3LjMxOSw3Mi4xNjljLTMuNzY0LDYuNjQxLTEzLjMzOCwxMC45LTI0LjY4MywxMC45LTExLjEyNSwwLTIwLjk3Ni00LjM3Mi0yNC42ODQtMTAuOVYyNjMuMjVjMy43MDgtNi4zMDksMTMuNS0xMC41MTUsMjQuNjg0LTEwLjUxNSwxMS4zNDUsMCwyMC45MTksNC4xNSwyNC42ODMsMTAuNTE1Wk0zNzYuNCwyNjUuOTYybC01OS44MjctODkuNzEzaC0yOXY0MC42MjNoMjYuNTF2LjM4N2w2Mi41MzksOTQuMDg1SDQwMi4zVjE3Ni4yNDlIMzc2LjRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU51dHJpdGlvbml4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0MDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg4IDguMVMyMjEuNC0uMSAyMDkgMTEyLjVjMCAwIDE5LjEtNzQuOSAxMDMtNDAuNiAwIDAtMTcuNyA3NC04OCA1NiAwIDAgMTQuNi01NC42IDY2LjEtNTYuNiAwIDAtMzkuOS0xMC4zLTgyLjEgNDguOCAwIDAtMTkuOC05NC41LTkzLjYtOTkuNyAwIDAgNzUuMiAxOS40IDc3LjYgMTA3LjUgMCAuMS0xMDYuNCA3LTEwNC0xMTkuOHptMzEyIDMxNS42YzAgNDguNS05LjcgOTUuMy0zMiAxMzIuMy00Mi4yIDMwLjktMTA1IDQ4LTE2OCA0OC02Mi45IDAtMTI1LjgtMTcuMS0xNjgtNDhDOS43IDQxOSAwIDM3Mi4yIDAgMzIzLjcgMCAyNzUuMyAxNy43IDIyOSA0MCAxOTJjNDIuMi0zMC45IDk3LjEtNDguNiAxNjAtNDguNiA2MyAwIDExNy44IDE3LjYgMTYwIDQ4LjYgMjIuMyAzNyA0MCA4My4zIDQwIDEzMS43ek0xMjAgNDI4YzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHpNMTkyIDQyOGMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6TTI2NCA0MjhjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4em0wLTY2LjJjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4em0wLTY2LjJjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4ek0zMzYgNDI4YzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMjQtMzkuNmMtNC44LTIyLjMtNy40LTM2LjktMTYtNTYtMzguOC0xOS45LTkwLjUtMzItMTQ0LTMyUzk0LjggMTgwLjEgNTYgMjAwYy04LjggMTkuNS0xMS4yIDMzLjktMTYgNTYgNDIuMi03LjkgOTguNy0xNC44IDE2MC0xNC44czExNy44IDYuOSAxNjAgMTQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2N0b3B1c0RlcGxveSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTUuNiwzNDkuMmMtNDUuODkxLTM5LjA5LTM2LjY3LTc3Ljg3Ny0xNi4wOTUtMTI4LjExQzQ3NS4xNiwxMzQuMDQsNDE1Ljk2NywzNC4xNCwzMjkuOTMsOC4zLDIzNy4wNC0xOS42LDEzNC4yNTIsMjQuMzQxLDk5LjY3NywxMTcuMTQ3YTE4MC44NjIsMTgwLjg2MiwwLDAsMC0xMC45ODgsNzMuNTQ0YzEuNzMzLDI5LjU0MywxNC43MTcsNTIuOTcsMjQuMDksODAuMywxNy4yLDUwLjE2MS0yOC4xLDkyLjc0My02Ni42NjIsMTE3LjU4Mi00Ni44MDYsMzAuMi0zNi4zMTksMzkuODU3LTguNDI4LDQxLjg1OCwyMy4zNzgsMS42OCw0NC40NzgtNC41NDgsNjUuMjY1LTE1LjA0NSw5LjItNC42NDcsNDAuNjg3LTE4LjkzMSw0NS4xMy0yOC41ODhDMTM1LjksNDEzLjM4OCwxMTEuMTIyLDQ1OS41LDEyNi42MjEsNDg4LjljMTkuMSwzNi4yMjksNjcuMTEyLTMxLjc3LDc2LjcwOS00NS44MTIsOC41OTEtMTIuNTcyLDQyLjk2My04MS4yNzksNjMuNjI3LTQ2LjkyNiwxOC44NjUsMzEuMzYxLDguNiw3Ni4zOTEsMzUuNzM4LDEwNC42MjIsMzIuODU0LDM0LjIsNTEuMTU1LTE4LjMxMiw1MS40MTItNDQuMjIxLjE2My0xNi40MTEtNi4xLTk1Ljg1MiwyOS45LTU5Ljk0NEM0MDUuNDI4LDQxOCw0MzYuOTEyLDQ2Ny44LDQ3Mi41NjgsNDYzLjY0MmMzOC43MzYtNC41MTYtMjIuMTIzLTY3Ljk2Ny0yOC4yNjItNzguNjk1LDUuMzkzLDQuMjc5LDUzLjY2NSwzNC4xMjgsNTMuODE4LDkuNTJDNDk4LjIzNCwzNzUuNjc4LDQ2OC4wMzksMzU5LjgsNDU1LjYsMzQ5LjJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9kbm9rbGFzc25pa2lTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg0LjIgMTc3LjFjMC0yMi4xIDE3LjktNDAgMzkuOC00MHMzOS44IDE3LjkgMzkuOCA0MGMwIDIyLTE3LjkgMzkuOC0zOS44IDM5LjhzLTM5LjgtMTcuOS0zOS44LTM5Ljh6TTQ0OCA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHptLTMwNS4xIDk3LjFjMCA0NC42IDM2LjQgODAuOSA4MS4xIDgwLjlzODEuMS0zNi4yIDgxLjEtODAuOWMwLTQ0LjgtMzYuNC04MS4xLTgxLjEtODEuMXMtODEuMSAzNi4yLTgxLjEgODEuMXptMTc0LjUgOTAuN2MtNC42LTkuMS0xNy4zLTE2LjgtMzQuMS0zLjYgMCAwLTIyLjcgMTgtNTkuMyAxOHMtNTkuMy0xOC01OS4zLTE4Yy0xNi44LTEzLjItMjkuNS01LjUtMzQuMSAzLjYtNy45IDE2LjEgMS4xIDIzLjcgMjEuNCAzNyAxNy4zIDExLjEgNDEuMiAxNS4yIDU2LjYgMTYuOGwtMTIuOSAxMi45Yy0xOC4yIDE4LTM1LjUgMzUuNS00Ny43IDQ3LjctMTcuNiAxNy42IDEwLjcgNDUuOCAyOC40IDI4LjZsNDcuNy00Ny45YzE4LjIgMTguMiAzNS43IDM1LjcgNDcuNyA0Ny45IDE3LjYgMTcuMiA0Ni0xMC43IDI4LjYtMjguNmwtNDcuNy00Ny43LTEzLTEyLjljMTUuNS0xLjYgMzkuMS01LjkgNTYuMi0xNi44IDIwLjQtMTMuMyAyOS4zLTIxIDIxLjUtMzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9kbm9rbGFzc25pa2kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc1LjEgMzM0Yy0yNy40IDE3LjQtNjUuMSAyNC4zLTkwIDI2LjlsMjAuOSAyMC42IDc2LjMgNzYuM2MyNy45IDI4LjYtMTcuNSA3My4zLTQ1LjcgNDUuNy0xOS4xLTE5LjQtNDcuMS00Ny40LTc2LjMtNzYuNkw4NCA1MDMuNGMtMjguMiAyNy41LTczLjYtMTcuNi00NS40LTQ1LjcgMTkuNC0xOS40IDQ3LjEtNDcuNCA3Ni4zLTc2LjNsMjAuNi0yMC42Yy0yNC42LTIuNi02Mi45LTkuMS05MC42LTI2LjktMzIuNi0yMS00Ni45LTMzLjMtMzQuMy01OSA3LjQtMTQuNiAyNy43LTI2LjkgNTQuNi01LjcgMCAwIDM2LjMgMjguOSA5NC45IDI4LjlzOTQuOS0yOC45IDk0LjktMjguOWMyNi45LTIxLjEgNDcuMS04LjkgNTQuNiA1LjcgMTIuNCAyNS43LTEuOSAzOC0zNC41IDU5LjF6TTMwLjMgMTI5LjdDMzAuMyA1OCA4OC42IDAgMTYwIDBzMTI5LjcgNTggMTI5LjcgMTI5LjdjMCA3MS40LTU4LjMgMTI5LjQtMTI5LjcgMTI5LjRzLTEyOS43LTU4LTEyOS43LTEyOS40em02NiAwYzAgMzUuMSAyOC42IDYzLjcgNjMuNyA2My43czYzLjctMjguNiA2My43LTYzLjdjMC0zNS40LTI4LjYtNjQtNjMuNy02NHMtNjMuNyAyOC42LTYzLjcgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9sZFJlcHVibGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzNS43NiAxMC4yM2M3LjUtLjMxIDE1LS4yOCAyMi41LS4wOSAzLjYxLjE0IDcuMi40IDEwLjc5LjczIDQuOTIuMjcgOS43OSAxLjAzIDE0LjY3IDEuNjIgMi45My40MyA1LjgzLjk4IDguNzUgMS40NiA3LjkgMS4zMyAxNS42NyAzLjI4IDIzLjM5IDUuNCAxMi4yNCAzLjQ3IDI0LjE5IDcuOTIgMzUuNzYgMTMuMjEgMjYuNTYgMTIuMjQgNTAuOTQgMjkuMjEgNzEuNjMgNDkuODggMjAuMDMgMjAuMDkgMzYuNzIgNDMuNTUgNDguODkgNjkuMTkgMS4xMyAyLjU5IDIuNDQgNS4xIDMuNDcgNy43NCAyLjgxIDYuNDMgNS4zOSAxMi45NyA3LjU4IDE5LjYzIDQuMTQgMTIuMzMgNy4zNCAyNC45OSA5LjQyIDM3LjgzLjU3IDMuMTQgMS4wNCA2LjMgMS40IDkuNDcuNTUgMy44My45NCA3LjY5IDEuMTggMTEuNTYuODMgOC4zNC44NCAxNi43My43NyAyNS4xLS4wNyA0Ljk3LS4yNiA5Ljk0LS43NSAxNC44OS0uMjQgMy4zOC0uNTEgNi43Ni0uOTggMTAuMTItLjM5IDIuNzItLjYzIDUuNDYtMS4xMSA4LjE3LS45IDUuMTUtMS43IDEwLjMxLTIuODcgMTUuNDEtNC4xIDE4LjUtMTAuMyAzNi41NS0xOC41MSA1My42My0xNS43NyAzMi44My0zOC44MyA2Mi4xNy02Ny4xMiA4NS4xMmEyNDYuNTAzIDI0Ni41MDMgMCAwIDEtNTYuOTEgMzQuODZjLTYuMjEgMi42OC0xMi40NiA1LjI1LTE4Ljg3IDcuNDEtMy41MSAxLjE2LTcuMDEgMi4zOC0xMC41NyAzLjM5LTYuNjIgMS44OC0xMy4yOSAzLjY0LTIwLjA0IDUtNC42Ni45MS05LjM0IDEuNzMtMTQuMDMgMi40OC01LjI1LjY2LTEwLjUgMS40NC0xNS43OSAxLjc0LTYuNjkuNjYtMTMuNDEuODQtMjAuMTIuODEtNi44Mi4wMy0xMy42NS0uMTItMjAuNDUtLjc5LTMuMjktLjIzLTYuNTctLjUtOS44My0uOTUtMi43Mi0uMzktNS40Ni0uNjMtOC4xNy0xLjExLTQuMTItLjcyLTguMjUtMS4zNy0xMi4zNS0yLjIyLTQuMjUtLjk0LTguNDktMS44OS0xMi42OS0zLjAyLTguNjMtMi4xNy0xNy4wOC01LjAxLTI1LjQxLTguMTMtMTAuNDktNC4xMi0yMC43OS04Ljc1LTMwLjY0LTE0LjI1LTIuMTQtMS4xNS00LjI4LTIuMjktNi4zNS0zLjU3LTExLjIyLTYuNTgtMjEuODYtMTQuMS0zMS45Mi0yMi4zNC0zNC42OC0yOC40MS02MS40MS02Ni40My03Ni4zNS0xMDguNy0zLjA5LTguNzQtNS43MS0xNy42NS03LjgtMjYuNjgtMS40OC02LjE2LTIuNTItMTIuNDItMy41OC0xOC42Ni0uNC0yLjM1LS42MS00LjczLS45NS03LjA5LS42LTMuOTYtLjc1LTcuOTYtMS4xNy0xMS45NC0uOC05LjQ3LS43MS0xOC45OS0uNTEtMjguNDkuMTQtMy41MS4zNC03LjAxLjctMTAuNTEuMzEtMy4xNy40Ni02LjM3LjkyLTkuNTIuNDEtMi44MS42NS01LjY1IDEuMTYtOC40NC43LTMuOTQgMS4zLTcuOSAyLjEyLTExLjgyIDMuNDMtMTYuNTIgOC40Ny0zMi43MyAxNS4yNi00OC4xOCAxLjE1LTIuOTIgMi41OS01LjcyIDMuODYtOC41OSA4LjA1LTE2LjcxIDE3LjktMzIuNTYgMjkuNDktNDcuMDYgMjAtMjUuMzggNDUuMS00Ni42OCA3My4yNy02Mi40NyA3LjUtNC4xNSAxNS4xNi04LjA1IDIzLjA3LTExLjM3IDE1LjgyLTYuODggMzIuNDEtMTEuOTUgNDkuMzEtMTUuMzggMy41MS0uNjcgNy4wNC0xLjI0IDEwLjU2LTEuODUgMi42Mi0uNDcgNS4yOC0uNyA3LjkxLTEuMDggMy41My0uNTMgNy4xLS42OCAxMC42NS0xLjA0IDIuNDYtLjI0IDQuOTEtLjM2IDcuMzYtLjUxbTguNjQgMjQuNDFjLTkuMjMuMS0xOC40My45OS0yNy41NyAyLjIzLTcuMyAxLjA4LTE0LjUzIDIuNi0yMS43MSA0LjMtMTMuOTEgMy41LTI3LjQ4IDguMzQtNDAuNDYgMTQuNDItMTAuNDYgNC45OS0yMC41OSAxMC43LTMwLjE4IDE3LjIyLTQuMTggMi45Mi04LjQgNS44LTEyLjM0IDkuMDMtNS4wOCAzLjk3LTkuOTggOC4xNy0xNC42OCAxMi41OS0yLjUxIDIuMjQtNC44MSA0LjctNy4yMiA3LjA2LTI4LjIyIDI4Ljc5LTQ4LjQ0IDY1LjM5LTU3LjUgMTA0LjY5LTIuMDQgOC40NC0zLjU0IDE3LjAyLTQuNDQgMjUuNjUtMS4xIDguODktMS40NCAxNy44NS0xLjQxIDI2LjguMTEgNy4xNC4zOCAxNC4yOCAxLjIyIDIxLjM3LjYyIDcuMTIgMS44NyAxNC4xNiAzLjIgMjEuMTggMS4wNyA0LjY1IDIuMDMgOS4zMiAzLjMzIDEzLjkxIDYuMjkgMjMuMzggMTYuNSA0NS43IDMwLjA3IDY1Ljc1IDguNjQgMTIuOTggMTguNzggMjQuOTMgMjkuOTggMzUuNzcgMTYuMjggMTUuODIgMzUuMDUgMjkuMDQgNTUuMzQgMzkuMjIgNy4yOCAzLjUyIDE0LjY2IDYuODcgMjIuMjcgOS42MyA1LjA0IDEuNzYgMTAuMDYgMy41NyAxNS4yMiA0Ljk4IDExLjI2IDMuMjMgMjIuNzcgNS42IDM0LjM5IDcuMDYgMi45MS4yOSA1LjgxLjYxIDguNzIuOSAxMy44MiAxLjA4IDI3Ljc0IDEgNDEuNTQtLjQzIDQuNDUtLjYgOC45Mi0uOTkgMTMuMzUtMS43OCAzLjYzLS42NyA3LjI4LTEuMjUgMTAuODctMi4xIDQuMTMtLjk4IDguMjgtMS45MSAxMi4zNi0zLjA3IDI2LjUtNy4zNCA1MS41OC0xOS43MSA3My41OC0zNi4yIDE1Ljc4LTExLjgyIDI5Ljk2LTI1Ljc2IDQyLjEyLTQxLjI4IDMuMjYtNC4wMiA2LjE3LTguMzEgOS4xMy0xMi41NSAzLjM5LTUuMDYgNi41OC0xMC4yNSA5LjYtMTUuNTQgMi40LTQuNDQgNC43NC04LjkxIDYuOTUtMTMuNDUgNS42OS0xMi4wNSAxMC4yOC0yNC42MiAxMy43NS0zNy40OSAyLjU5LTEwLjAxIDQuNzUtMjAuMTYgNS45LTMwLjQ1IDEuNzctMTMuNDcgMS45NC0yNy4xIDEuMjktNDAuNjUtLjI5LTMuODktLjY3LTcuNzctMS0xMS42Ni0yLjIzLTE5LjA4LTYuNzktMzcuOTEtMTMuODItNTUuOC01Ljk1LTE1LjEzLTEzLjUzLTI5LjYzLTIyLjYxLTQzLjEzLTEyLjY5LTE4LjgtMjguMjQtMzUuNjgtNDUuOTctNDkuODMtMjUuMDUtMjAtNTQuNDctMzQuNTUtODUuNjUtNDIuMDgtNy43OC0xLjkzLTE1LjY5LTMuMzQtMjMuNjMtNC40NS0zLjkxLS41OS03Ljg1LS44Mi0xMS43Ny0xLjI0LTcuMzktLjU3LTE0LjgxLS43Mi0yMi4yMi0uNTh6TTEzOS4yNiA4My41M2MxMy4zLTguODkgMjguMDgtMTUuMzggNDMuMy0yMC4xOC0zLjE3IDEuNzctNi40NCAzLjM4LTkuNTMgNS4yOS0xMS4yMSA2LjY4LTIxLjUyIDE0LjktMzAuMzggMjQuNDktNi44IDcuNDMtMTIuNzYgMTUuNzMtMTcuMDEgMjQuODktMy4yOSA2Ljg2LTUuNjQgMTQuMTktNi44NiAyMS43MS0uOTMgNC44NS0xLjMgOS44MS0xLjE3IDE0Ljc1LjEzIDEzLjY2IDQuNDQgMjcuMDggMTEuMjkgMzguODIgNS45MiAxMC4yMiAxMy42MyAxOS4zMyAyMi4zNiAyNy4yNiA0Ljg1IDQuMzYgMTAuMjQgOC4wOSAxNC45NSAxMi42IDIuMjYgMi4xOSA0LjQ5IDQuNDIgNi40MyA2LjkxIDIuNjIgMy4zMSA0Ljg5IDYuOTkgNS45OSAxMS4xLjkgMy4wMi42NiA2LjIuNjkgOS4zMS4wMiA0LjEtLjA0IDguMi4wMyAxMi4zLjE0IDMuNTQtLjAyIDcuMDkuMTEgMTAuNjMuMDggMi4zOC4wMiA0Ljc2LjA1IDcuMTQuMTYgNS43Ny4wNiAxMS41My4xNSAxNy4zLjExIDIuOTEuMDIgNS44Mi4xMyA4Ljc0LjAzIDEuNjMuMTMgMy4yOC0uMDMgNC45MS0uOTEuMTItMS44Mi4xOC0yLjczLjE2LTEwLjk5IDAtMjEuODgtMi42My0zMS45NS02LjkzLTYtMi43LTExLjgxLTUuODktMTcuMDktOS44My01Ljc1LTQuMTktMTEuMDktOC45Ni0xNS43OS0xNC4zMS02LjUzLTcuMjQtMTEuOTgtMTUuMzktMTYuNjItMjMuOTUtMS4wNy0yLjAzLTIuMjQtNC4wMi0zLjE4LTYuMTItMS4xNi0yLjY0LTIuNjItNS4xNC0zLjY3LTcuODItNC4wNS05LjY4LTYuNTctMTkuOTQtOC4wOC0zMC4zMS0uNDktNC40NC0xLjA5LTguODgtMS4yLTEzLjM1LS43LTE1LjczLjg0LTMxLjU1IDQuNjctNDYuODIgMi4xMi04LjE1IDQuNzctMTYuMTggOC4zMS0yMy44MyA2LjMyLTE0LjIgMTUuMzQtMjcuMTggMjYuMy0zOC4xOSA2LjI4LTYuMiAxMy4xMy0xMS44NCAyMC41My0xNi42N3ptMTc1LjM3LTIwLjEyYzIuNzQuNzQgNS40MSAxLjc0IDguMDkgMi42OCA2LjM2IDIuMzMgMTIuNjggNC44NCAxOC43MSA3Ljk2IDEzLjExIDYuNDQgMjUuMzEgMTQuODEgMzUuODIgMjQuOTcgMTAuMiA5Ljk1IDE4Ljc0IDIxLjYgMjUuMTQgMzQuMzQgMS4yOCAyLjc1IDIuNjQgNS40NiAzLjgxIDguMjYgNi4zMSAxNS4xIDEwIDMxLjI2IDExLjIzIDQ3LjU3LjQxIDQuNTQuNDQgOS4wOS40NSAxMy42NC4wNyAxMS42NC0xLjQ5IDIzLjI1LTQuMyAzNC41My0xLjk3IDcuMjctNC4zNSAxNC40OS03Ljg2IDIxLjE4LTMuMTggNi42NC02LjY4IDEzLjE2LTEwLjg0IDE5LjI0LTYuOTQgMTAuNDctMTUuNiAxOS44Ny0yNS44MiAyNy4yMi0xMC40OCA3LjY0LTIyLjY0IDEzLjAyLTM1LjQgMTUuMzgtMy41MS42OS03LjA4IDEuMDgtMTAuNjYgMS4yMS0xLjg1LjA2LTMuNzIuMTYtNS41Ni0uMS0uMjgtMi4xNSAwLTQuMzEtLjAxLTYuNDYtLjAzLTMuNzMuMTQtNy40NS4xLTExLjE3LjE5LTcuMDIuMDItMTQuMDUuMjEtMjEuMDcuMDMtMi4zOC0uMDMtNC43Ni4wMy03LjE0LjE3LTUuMDctLjA0LTEwLjE0LjE0LTE1LjIxLjEtMi45OS0uMjQtNi4wNC41MS04Ljk2LjY2LTIuNSAxLjc4LTQuODYgMy4wOS03LjA4IDQuNDYtNy4zMSAxMS4wNi0xMi45NiAxNy42OC0xOC4yNiA1LjM4LTQuMTggMTAuNDctOC43NyAxNS4wMi0xMy44NCA3LjY4LTguMzcgMTQuMTctMTcuODggMTguNzgtMjguMjcgMi41LTUuOTMgNC41Mi0xMi4xIDUuNTUtMTguNDYuODYtNC4zNyAxLjA2LTguODMgMS4wMS0xMy4yNy0uMDItNy44NS0xLjQtMTUuNjUtMy42NC0yMy4xNy0xLjc1LTUuNzMtNC4yNy0xMS4xOC03LjA5LTE2LjQ1LTMuODctNi45My04LjY1LTEzLjMxLTEzLjk2LTE5LjItOS45NC0xMC44NS0yMS43NS0xOS45NC0zNC42LTI3LjEtMS44NS0xLjAyLTMuODQtMS44Mi01LjYzLTIuOTd6bS0xMDAuOCA1OC40NWMuOTgtMS4xOCAxLjk5LTIuMzMgMy4xMi0zLjM4LS42MS45My0xLjI3IDEuODEtMS45NSAyLjY4LTMuMSAzLjg4LTUuNTQgOC4zMS03LjAzIDEzLjA2LS44NyAzLjI3LTEuNjggNi42LTEuNzMgMTAtLjA3IDIuNTItLjA4IDUuMDcuMzIgNy41NyAxLjEzIDcuNjMgNC4zMyAxNC44NSA4Ljc3IDIxLjEyIDIgMi43IDQuMjUgNS4yNyA2LjkyIDcuMzMgMS42MiAxLjI3IDMuNTMgMi4wOSA1LjM0IDMuMDUgMy4xMSAxLjY4IDYuMzIgMy4yMyA5LjA3IDUuNDggMi42NyAyLjA5IDQuNTUgNS4zMyA0LjQgOC43OS0uMDEgNzMuNjcgMCAxNDcuMzQtLjAxIDIyMS4wMiAwIDEuMzUtLjA4IDIuNy4wNCA0LjA0LjEzIDEuNDguODIgMi44MyAxLjQ3IDQuMTUuODYgMS42NiAxLjc4IDMuMzQgMy4xOCA0LjYyLjg1Ljc3IDEuOTcgMS40IDMuMTUgMS4yNCAxLjUtLjIgMi42Ni0xLjM1IDMuNDUtMi41Ny45Ni0xLjUxIDEuNjgtMy4xNiAyLjI4LTQuODUuNzYtMi4xMy40NC00LjQyLjU0LTYuNjMuMTQtNC4wMy0uMDItOC4wNi4xNC0xMi4wOS4wMy01Ljg5LjAzLTExLjc3LjA2LTE3LjY2LjE0LTMuNjIuMDMtNy4yNC4xMS0xMC44Ni4xNS00LjAzLS4wMi04LjA2LjE0LTEyLjA5LjAzLTUuOTkuMDMtMTEuOTguMDctMTcuOTcuMTQtMy42Mi4wMi03LjI0LjExLTEwLjg2LjE0LTMuOTMtLjAyLTcuODYuMTQtMTEuNzguMDMtNS45OS4wMy0xMS45OC4wNi0xNy45Ny4xNi0zLjk0LS4wMS03Ljg4LjE5LTExLjgyLjI5IDEuNDQuMTMgMi45Mi4yMiA0LjM4LjE5IDMuNjEuNDIgNy4yMy43NiAxMC44NC4zMiAzLjQ0LjQ0IDYuODkuODYgMTAuMzIuMzcgMy4xLjUxIDYuMjIuOTUgOS4zMS41NyA0LjA5Ljg3IDguMjEgMS41NCAxMi4yOSAxLjQ2IDkuMDQgMi44MyAxOC4xMSA1LjA5IDI2Ljk5IDEuMTMgNC44MiAyLjQgOS42MSA0IDE0LjMgMi41NCA3LjkgNS43MiAxNS42NyAxMC4zMSAyMi42MiAxLjczIDIuNjQgMy44NyA0Ljk4IDYuMSA3LjIxLjI3LjI1LjU1LjUxLjg4LjcxLjYuMjUgMS4zMS0uMDcgMS43LS41Ny43MS0uODggMS4xNy0xLjk0IDEuNy0yLjkzIDQuMDUtNy44IDguMTgtMTUuNTYgMTIuMzQtMjMuMzEuNy0xLjMxIDEuNDQtMi42MiAyLjU2LTMuNjEgMS43NS0xLjU3IDMuODQtMi42OSA1Ljk4LTMuNjMgMi44OC0xLjIyIDUuOS0yLjE5IDkuMDMtMi40MiA2LjU4LS42MiAxMy4xMS43NSAxOS41NiAxLjg1IDMuNjkuNTggNy40IDEuMTcgMTEuMTMgMS40MSAzLjc0LjEgNy40OC4wNSAxMS4yMS0uMjggOC41NS0uOTIgMTYuOTktMi45NiAyNC45NC02LjI1IDUuMy0yLjI0IDEwLjQ2LTQuODMgMTUuMzEtNy45MyAxMS40Ni03LjIxIDIxLjQ2LTE2LjU3IDMwLjA0LTI3LjAxIDEuMTctMS40MiAyLjI1LTIuOSAzLjQ2LTQuMjgtMS4yIDMuMjQtMi42NyA2LjM3LTQuMTYgOS40OC0xLjI1IDIuOS0yLjg0IDUuNjEtNC4yNyA4LjQyLTUuMTYgOS42My0xMS4wMiAxOC45MS0xNy43NSAyNy41Mi00LjAzIDUuMjEtOC41MyAxMC4wNS0xMy4zMyAxNC41Ny02LjY0IDYuMDUtMTQuMDcgMTEuMzctMjIuNDMgMTQuNzYtOC4yMSAzLjM3LTE3LjMxIDQuNjMtMjYuMDkgMy4yOS0zLjU2LS41OC03LjAxLTEuNjktMTAuNDEtMi44OC0yLjc5LS45Ny01LjM5LTIuMzgtOC4wMy0zLjY5LTMuNDMtMS43MS02LjY0LTMuODEtOS43MS02LjA4IDIuNzEgMy4wNiA1LjY5IDUuODYgOC43IDguNjEgNC4yNyAzLjc2IDguNzQgNy4zMSAxMy42MyAxMC4yMyAzLjk4IDIuNDUgOC4yOSA0LjQgMTIuODQgNS41MSAxLjQ2LjM3IDIuOTYuNDYgNC40NS42LTEuMjUgMS4xLTIuNjMgMi4wNC0zLjk5IDIuOTgtOS42MSA2LjU0LTIwLjAxIDExLjg2LTMwLjY5IDE2LjQzLTIwLjg2IDguNy00My4xNyAxMy45Ny02NS43NCAxNS4zNC00LjY2LjI0LTkuMzIuMzYtMTMuOTguMzYtNC45OC0uMTEtOS45Ny0uMTMtMTQuOTItLjY1LTExLjItLjc2LTIyLjI5LTIuNzMtMzMuMTctNS40My0xMC4zNS0yLjcxLTIwLjU1LTYuMTItMzAuMy0xMC41NS04LjcxLTMuODYtMTcuMTItOC40Mi0yNC45OS0xMy43OS0xLjgzLTEuMzEtMy43NC0yLjUzLTUuMzctNC4wOCA2LjYtMS4xOSAxMy4wMy0zLjM5IDE4Ljk5LTYuNDggNS43NC0yLjg2IDEwLjk5LTYuNjYgMTUuNjMtMTEuMDcgMi4yNC0yLjE5IDQuMjktNC41OSA2LjE5LTcuMDktMy40MyAyLjEzLTYuOTMgNC4xNS0xMC42MiA1Ljc4LTQuNDEgMi4xNi05LjA3IDMuNzctMTMuODEgNS4wMi01LjczIDEuNTItMTEuNzQgMS43My0xNy42MSAxLjE0LTguMTMtLjk1LTE1Ljg2LTQuMjctMjIuNTEtOC45OC00LjMyLTIuOTQtOC4yMi02LjQzLTExLjk2LTEwLjA2LTkuOTMtMTAuMTYtMTguMi0yMS44MS0yNS42Ni0zMy44Ni0zLjk0LTYuMjctNy41My0xMi43NS0xMS4xMi0xOS4yMi0xLjA1LTIuMDQtMi4xNS00LjA1LTMuMTgtNi4xIDIuODUgMi45MiA1LjU3IDUuOTcgOC40MyA4Ljg4IDguOTkgOC45NyAxOC41NiAxNy40NCAyOS4xNiAyNC40OCA3LjU1IDQuOSAxNS42NyA5LjIzIDI0LjU2IDExLjAzIDMuMTEuNzMgNi4zMi40NyA5LjQ3LjgxIDIuNzcuMjggNS41Ni4yIDguMzQuMyA1LjA1LjA2IDEwLjExLjA0IDE1LjE2LS4xNiAzLjY1LS4xNiA3LjI3LS42NiAxMC44OS0xLjA5IDIuMDctLjI1IDQuMTEtLjcxIDYuMTQtMS4yIDMuODgtLjk1IDguMTEtLjk2IDExLjgzLjYxIDQuNzYgMS44NSA4LjQ0IDUuNjQgMTEuMzggOS43MSAyLjE2IDMuMDIgNC4wNiA2LjIyIDUuNjYgOS41OCAxLjE2IDIuNDMgMi40NiA0Ljc5IDMuNTUgNy4yNiAxIDIuMjQgMi4xNSA0LjQyIDMuNDIgNi41Mi42NyAxLjAyIDEuNCAyLjE1IDIuNjIgMi41NSAxLjA2LS43NSAxLjcxLTEuOTEgMi4yOC0zLjAzIDIuMS00LjE2IDMuNDItOC42NSA0Ljg5LTEzLjA1IDIuMDItNi41OSAzLjc4LTEzLjI3IDUuMTktMjAuMDIgMi4yMS05LjI1IDMuMjUtMTguNzIgNC41NC0yOC4xMy41Ni0zLjk4LjgzLTcuOTkgMS4zMS0xMS45Ny44Ny0xMC42NCAxLjktMjEuMjcgMi4yNC0zMS45NC4wOC0xLjg2LjI0LTMuNzEuMjUtNS41Ny4wMS00LjM1LjI1LTguNjkuMjItMTMuMDMtLjAxLTIuMzgtLjAxLTQuNzYgMC03LjEzLjA1LTUuMDctLjItMTAuMTQtLjIyLTE1LjIxLS4yLTYuNjEtLjcxLTEzLjItMS4yOS0xOS43OC0uNzMtNS44OC0xLjU1LTExLjc4LTMuMTItMTcuNTEtMi4wNS03Ljc1LTUuNTktMTUuMDMtOS44LTIxLjgyLTMuMTYtNS4wNy02Ljc5LTkuODgtMTEuMDktMTQuMDMtMy44OC0zLjg2LTguNTgtNy4wOC0xMy45NC04LjQ1LTEuNS0uNDEtMy4wNi0uNDUtNC41OS0uNjQuMDctMi45OS43LTUuOTMgMS4yNi04Ljg1IDEuNTktNy43MSAzLjgtMTUuMyA2Ljc2LTIyLjYgMS41Mi00LjAzIDMuNDEtNy45IDUuMzktMTEuNzIgMy40NS02LjU2IDcuNjItMTIuNzkgMTIuNDYtMTguNDZ6bTMxLjI3IDEuN2MuMzUtLjA2LjcxLS4xMiAxLjA3LS4xOS4xOSAxLjc5LjA5IDMuNTguMSA1LjM3djM4LjEzYy0uMDEgMS43NC4xMyAzLjQ5LS4xNSA1LjIyLS4zNi0uMDMtLjcxLS4wNS0xLjA2LS4wNS0uOTUtMy43NS0xLjcyLTcuNTUtMi42Mi0xMS4zMS0uMzgtMS41My0uNTgtMy4wOS0xLjA3LTQuNTktMS43LS4yNC0zLjQzLS4xNy01LjE1LS4yLTUuMDYtLjAxLTEwLjEzIDAtMTUuMTktLjAxLTEuNjYtLjAxLTMuMzIuMDktNC45OC0uMDMtLjAzLS4zOS0uMjYtLjkxLjE2LTEuMTggMS4yOC0uNjUgMi43Mi0uODggNC4wNi0xLjM1IDMuNDMtMS4xNCA2Ljg4LTIuMTYgMTAuMzEtMy4zMSAxLjM5LS40OCAyLjktLjcyIDQuMTYtMS41NC4wNC0uNTYuMDItMS4xMy0uMDUtMS42OC0xLjIzLS41NS0yLjUzLS44Ny0zLjgxLTEuMjgtMy4xMy0xLjAzLTYuMjktMS45Ni05LjQxLTMuMDItMS43OS0uNjItMy42Ny0xLTUuNDEtMS43OS0uMDMtLjM3LS4wNy0uNzMtLjExLTEuMDkgNS4wOS0uMTkgMTAuMi4wNiAxNS4zLS4xMiAzLjM2LS4xMyA2LjczLjA4IDEwLjA5LS4wNy4xMi0uMzkuMjYtLjc3LjM3LTEuMTYgMS4wOC00Ljk0IDIuMzMtOS44MyAzLjM5LTE0Ljc1em01Ljk3LS4yYy4zNi4wNS43Mi4xMiAxLjA4LjIuOTggMy44NSAxLjczIDcuNzYgMi43MSAxMS42MS4zNiAxLjQyLjU2IDIuODggMS4wMyA0LjI3IDIuNTMuMTggNS4wNy0uMDEgNy42MS4wNSA1LjE2LjEyIDEwLjMzLjEyIDE1LjQ5LjA3Ljc2LS4wMSAxLjUyLjAzIDIuMjguMDgtLjA0LjM2LS4wNy43Mi0uMSAxLjA4LTEuODIuODMtMy43OCAxLjI1LTUuNjcgMS44OS0zLjczIDEuMjMtNy40OCAyLjM5LTExLjIyIDMuNTctLjU3LjE3LTEuMTIuNDItMS42Ny42NC0uMTUuNTUtLjE4IDEuMTItLjEyIDEuNjkuODcuNDggMS44Mi44MSAyLjc3IDEuMDkgNC44OCAxLjUyIDkuNzMgMy4xNCAxNC42MyA0LjYuMzguMTMuNzguMjcgMS4xMy40OS40LjI3LjIzLjc5LjE1IDEuMTgtMS42Ni4xMy0zLjMxLjAzLTQuOTcuMDQtNS4xNy4wMS0xMC4zMy0uMDEtMTUuNS4wMS0xLjYxLjAzLTMuMjItLjAyLTQuODIuMjEtLjUyIDEuNjctLjcyIDMuNDItMS4xNyA1LjExLS45NCAzLjU3LTEuNTIgNy4yNC0yLjU0IDEwLjc4LS4zNi4wMS0uNzEuMDItMS4wNi4wNi0uMjktMS43My0uMTUtMy40OC0uMTUtNS4yMnYtMzguMTNjLjAyLTEuNzgtLjA4LTMuNTguMTEtNS4zN3pNNjUuMDUgMTY4LjMzYzEuMTItMi4xNSAyLjA4LTQuNCAzLjM3LTYuNDYtMS44MiA3LjU2LTIuOTEgMTUuMjctMy42MiAyMy0uOCA3LjcxLS44NSAxNS40OS0uNTQgMjMuMjMgMS4wNSAxOS45NCA1LjU0IDM5LjgzIDE0LjIzIDU3Ljg4IDIuOTkgNS45OSA2LjM1IDExLjgzIDEwLjUgMTcuMTEgNi4xMiA3LjQ3IDEyLjUzIDE0Ljc2IDE5Ljg0IDIxLjA5IDQuOCA0LjEgOS45OSA3Ljc4IDE1LjU0IDEwLjggMy4yNyAxLjY1IDYuNTEgMy4zOSA5Ljk0IDQuNjggNS4wMSAyLjAzIDEwLjE5IDMuNjEgMTUuNDIgNC45NCAzLjgzLjk2IDcuNzggMS40MSAxMS41MiAyLjcxIDUgMS41NyA5LjQ3IDQuNjEgMTMuMDMgOC40MyA0LjkzIDUuMjMgOC4wOSAxMS44NyAxMC4yIDE4LjY3Ljk5IDIuOSAxLjU5IDUuOTEgMi4xNyA4LjkyLjE1Ljc1LjIyIDEuNTIuMTYgMi4yOS02LjUgMi43OC0xMy4yNiA1LjA2LTIwLjI2IDYuMTgtNC4xMS43OC04LjI5Ljk5LTEyLjQ2IDEuMDgtMTAuMjUuMjQtMjAuNDctMS43Ni0zMC4xMi01LjEyLTMuNzQtMS40Mi03LjQ5LTIuODUtMTEuMDMtNC43Mi04LjA2LTMuODQtMTUuNjQtOC43LTIyLjQ2LTE0LjQ2LTIuOTItMi41NS01LjgzLTUuMTMtOC40LTguMDMtOS4xNi05LjgzLTE2LjMtMjEuNDEtMjEuNzktMzMuNjUtMi4zOS01LjU1LTQuNjEtMTEuMTgtNi4zNy0xNi45Ni0xLjE3LTMuOTQtMi4zNi03Ljg5LTMuMjYtMTEuOTEtLjc1LTIuOTQtMS4yMi01Ljk1LTEuODctOC45Mi0uNDYtMi4xNC0uNjktNC4zMi0xLjAzLTYuNDgtLjg1LTUuNDMtMS4yOC0xMC45My0xLjMzLTE2LjQzLjExLTYuMTguMjUtMTIuMzcgMS4wNy0xOC41LjQtMi44Ni42Ny01Ljc0IDEuMTUtOC42Ljk4LTUuNyAyLjE0LTExLjM3IDMuNzEtMTYuOTMgMy4wOS0xMS42NSA3LjQ4LTIyLjk1IDEyLjY5LTMzLjg0em0zNjMuNzMtNi40NGMxLjEgMS42NiAxLjkxIDMuNDggMi43OCA1LjI2IDIuMSA0LjQ1IDQuMjQgOC45IDYuMDIgMTMuNDkgNy42MSAxOC43NiAxMi4zIDM4Ljc5IDEzLjA0IDU5LjA1LjAyIDEuNzYuMDcgMy41Mi4xMSA1LjI5LjEzIDkuNTctMS4yNyAxOS4wOS0zLjE4IDI4LjQ1LS43MyAzLjU5LTEuNTQgNy4xNy0yLjU4IDEwLjY5LTQuMDQgMTQuNzItMTAgMjktMTguNDEgNDEuNzgtOC4yMSAxMi41Ny0xOS4wMSAyMy41NS0zMS44NCAzMS40MS01LjczIDMuNTktMTEuNzkgNi42NC0xOC4wNSA5LjE5LTUuNzggMi4xOS0xMS43MSA0LjAzLTE3LjggNS4xMS02LjQgMS4wNS0xMi45MSAxLjUyLTE5LjQgMS4yMy03LjkyLS40OC0xNS43OC0yLjA3LTIzLjIxLTQuODUtMS45NC0uOC0zLjk0LTEuNDYtNS44NC0yLjMzLS4yMS0xLjUxLjI1LTIuOTkuNTMtNC40NiAxLjE2LTUuNzQgMy4wMy0xMS4zNiA1LjctMTYuNTggMi4zNy00LjUxIDUuNTItOC42NSA5LjQ2LTExLjkgMi40My0yLjA1IDUuMjQtMy42MSA4LjE2LTQuODMgMy41OC0xLjUgNy40Ny0xLjk3IDExLjI0LTIuODMgNy4yMy0xLjcxIDE0LjM3LTMuOTMgMjEuMTUtNyAxMC4zNS00LjY1IDE5LjcxLTExLjM4IDI3LjY1LTE5LjQ2IDEuNTktMS42MSAzLjIzLTMuMTggNC43NC00Ljg3IDMuMzctMy43NiA2LjcxLTcuNTcgOS44NS0xMS41MyA3LjQ4LTEwLjA3IDEyLjgyLTIxLjU5IDE2LjcxLTMzLjQ4IDEuNTgtNS4zIDMuMjEtMTAuNiA0LjIxLTE2LjA1LjYzLTIuODcgMS4wNC01Ljc4IDEuNTItOC42OC44Ny02LjA5IDEuNTktMTIuMjIgMS42OC0xOC4zOC4xMi02LjY1LjE0LTEzLjMyLS41My0xOS45NC0uNzMtNy45OS0xLjg3LTE1Ljk2LTMuNzEtMjMuNzh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9wZW5jYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyMy4zIDQ0MC43YzAgMjUuMy0yMC4zIDQ1LjYtNDUuNiA0NS42cy00NS44LTIwLjMtNDUuOC00NS42IDIwLjYtNDUuOCA0NS44LTQ1LjhjMjUuNCAwIDQ1LjYgMjAuNSA0NS42IDQ1Ljh6bS0yNTMuOS00NS44Yy0yNS4zIDAtNDUuNiAyMC42LTQ1LjYgNDUuOHMyMC4zIDQ1LjYgNDUuNiA0NS42IDQ1LjgtMjAuMyA0NS44LTQ1LjYtMjAuNS00NS44LTQ1LjgtNDUuOHptMjkxLjctMjcwQzE1OC45IDEyNC45IDgxLjkgMTEyLjEgMCAyNS43YzM0LjQgNTEuNyA1My4zIDE0OC45IDM3My4xIDE0NC4yIDMzMy4zLTUgMTMwIDg2LjEgNzAuOCAxODguOSAxODYuNy0xNjYuNyAzMTkuNC0yMzMuOSAxNy4yLTIzMy45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPcGVuaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcxLjUgNDMybC02OCAzMkM4OC41IDQ1My43IDAgMzkyLjUgMCAzMTguMmMwLTcxLjUgODIuNS0xMzEgMTkxLjctMTQ0LjN2NDNjLTcxLjUgMTIuNS0xMjQgNTMtMTI0IDEwMS4zIDAgNTEgNTguNSA5My4zIDEzNS43IDEwM3YtMzQwbDY4LTMzLjJ2Mzg0ek00NDggMjkxbC0xMzEuMy0yOC41IDM2LjgtMjAuN2MtMTkuNS0xMS41LTQzLjUtMjAtNzAtMjQuOHYtNDNjNDYuMiA1LjUgODcuNyAxOS41IDEyMC4zIDM5LjNsMzUtMTkuOEw0NDggMjkxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPcGVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuOSAzMi43Yy0xNzAuMiAwLTI1Mi42IDIyMy44LTE0Ny41IDM1NS4xIDM2LjUgNDUuNCA4OC42IDc1LjYgMTQ3LjUgNzUuNiAzNi4zIDAgNzAuMy0xMS4xIDk5LjQtMzAuNC00My44IDM5LjItMTAxLjkgNjMtMTY1LjMgNjMtMy45IDAtOCAwLTExLjktLjNDMTA0LjYgNDg5LjYgMCAzODEuMSAwIDI0OCAwIDExMSAxMTEgMCAyNDggMGguOGM2My4xLjMgMTIwLjcgMjQuMSAxNjQuNCA2My4xLTI5LTE5LjQtNjMuMS0zMC40LTk5LjMtMzAuNHptMTAxLjggMzk3LjdjLTQwLjkgMjQuNy05MC43IDIzLjYtMTMyLTUuOCA1Ni4yLTIwLjUgOTcuNy05MS42IDk3LjctMTc2LjYgMC04NC43LTQxLjItMTU1LjgtOTcuNC0xNzYuNiA0MS44LTI5LjIgOTEuMi0zMC4zIDEzMi45LTUgMTA1LjkgOTguNyAxMDUuNSAyNjUuNy0xLjIgMzY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPcHRpbk1vbnN0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTcyLjYgNDIxLjRjNS42LTkuNSA0LjctMTUuMi01LjQtMTEuNi0zLTQuOS03LTkuNS0xMS4xLTEzLjggMi45LTkuNy0uNy0xNC4yLTEwLjgtOS4yLTQuNi0zLjItMTAuMy02LjUtMTUuOS05LjIgMC0xNS4xLTExLjYtMTEuNi0xNy42LTUuNy0xMC40LTEuNS0xOC43LS4zLTI2LjggNS43LjMtNi41LjMtMTMgLjMtMTkuNyAxMi42IDAgNDAuMi0xMSA0NS45LTM2LjIgMS40LTYuOCAxLjYtMTMuOC0uMy0yMS45LTMtMTMuNS0xNC4zLTIxLjMtMjUuMS0yNS43LS44LTUuOS03LjYtMTQuMy0xNC45LTE1LjlzLTEyLjQgNC45LTE0LjEgMTAuM2MtOC41IDAtMTkuMiAyLjgtMjEuMSA4LjQtNS40LS41LTExLjEtMS40LTE2LjgtMS45IDIuNy0xLjkgNS40LTMuNSA4LjQtNC42IDUuNC05LjIgMTQuNi0xMS40IDI1LjctMTEuNlYyNTZjMTkuNS0uNSA0My01LjkgNTMuOC0xOC4xIDEyLjctMTMuOCAxNC42LTM3LjMgMTIuNC01NS4xLTIuNC0xNy4zLTkuNy0zNy42LTI0LjYtNDguMS04LjQtNS45LTIxLjYtLjgtMjIuNyA5LjUtMi4yIDE5LjYgMS4yIDMwLTM4LjYgMjUuMS0xMC4zLTIzLjgtMjQuNi00NC42LTQyLjctNjBDMzQxIDQ5LjYgMjQyLjkgNTUuNSAxNjYuNCA3MS43YzE5LjcgNC42IDQxLjEgOC42IDU5LjcgMTYuNS0yNi4yIDIuNC01Mi43IDExLjMtNzYuMiAyMy4yLTMyLjggMTctNDQgMjkuOS01Ni43IDQyLjQgMTQuOS0yLjIgMjguOS01LjEgNDMuOC0zLjgtOS43IDUuNC0xOC40IDEyLjItMjYuNSAyMC0yNS44LjktMjMuOC01LjMtMjYuMi0yNS45LTEuMS0xMC41LTE0LjMtMTUuNC0yMi43LTkuNy0yOC4xIDE5LjktMzMuNSA3OS45LTEyLjIgMTAzLjUgMTAuOCAxMi4yIDM1LjEgMTcuMyA1NC45IDE3LjgtLjMgMS4xLS4zIDEuOS0uMyAyLjcgMTAuOC41IDE5LjUgMi43IDI0LjYgMTEuNiAzIDEuMSA1LjcgMi43IDguMSA0LjYtNS40LjUtMTEuMSAxLjQtMTYuNSAxLjktMy4zLTYuNi0xMy43LTguMS0yMS4xLTguMS0xLjYtNS43LTYuNS0xMi4yLTE0LjEtMTAuMy02LjggMS45LTE0LjEgMTAtMTQuOSAxNS45LTIyLjUgOS41LTMwLjEgMjYuOC0yNS4xIDQ3LjYgNS4zIDI0LjggMzMgMzYuMiA0NS45IDM2LjJ2MTkuN2MtNi42LTUtMTQuMy03LjUtMjYuOC01LjctNS41LTUuNS0xNy4zLTEwLjEtMTcuMyA1LjctNS45IDIuNy0xMS40IDUuOS0xNS45IDkuMi05LjgtNC45LTEzLjYtMS43LTExLjEgOS4yLTQuMSA0LjMtNy44IDguNi0xMS4xIDEzLjgtMTAuMi0zLjctMTEgMi4yLTUuNCAxMS42LTEuMSAzLjUtMS42IDctMS45IDEwLjgtLjUgMzEuNiA0NC42IDY0IDczLjUgNjUuMSAxNy4zLjUgMzQuNi04LjQgNDMtMjMuNSAxMTMuMiA0LjkgMjI2LjcgNC4xIDM0MC4yIDAgOC4xIDE1LjEgMjUuNCAyNC4zIDQyLjcgMjMuNSAyOS4yLTEuMSA3NC4zLTMzLjUgNzMuNS02NS4xLjItMy43LS43LTcuMi0xLjctMTAuN3ptLTczLjgtMjU0YzEuMS0zIDIuNC04LjQgMi40LTE0LjYgMC01LjkgNi44LTguMSAxNC4xLS44IDExLjEgMTEuNiAxNC45IDQwLjUgMTMuOCA1MS4xLTQuMS0xMy42LTEzLTI5LTMwLjMtMzUuN3ptLTQuNiA2LjdjMTkuNSA2LjIgMjguNiAyNy42IDI5LjcgNDguOS0xLjEgMi43LTMgNS40LTQuOSA3LjYtNS43IDUuOS0xNS40IDEwLTI2LjIgMTIuMiA0LjMtMjEuMy4zLTQ3LjMtMTIuNy02MyA0LjktLjggMTAuOS0yLjQgMTQuMS01Ljd6bS0yNC4xIDYuOGMxMy44IDExLjkgMjAgMzkuMiAxNC4xIDYzLjUtNC4xLjUtOC4xLjgtMTEuNi44LTEuOS0yMS45LTYuOC00NC0xNC4zLTY0LjYgMy43LjMgOC4xLjMgMTEuOC4zek00Ny41IDIwM2MtMS4xLTEwLjUgMi40LTM5LjUgMTMuOC01MS4xIDctNy4zIDE0LjEtNS4xIDE0LjEuOCAwIDYuMiAxLjQgMTEuNiAyLjQgMTQuNi0xNy4zIDYuOC0yNi4yIDIyLjItMzAuMyAzNS43em05LjcgMjcuNmMtMS45LTIuMi0zLjUtNC45LTQuOS03LjYgMS40LTIxLjMgMTAuMy00Mi43IDI5LjctNDguOSAzLjIgMy4yIDkuMiA0LjkgMTQuMSA1LjctMTMgMTUuNy0xNyA0MS42LTEyLjcgNjMtMTAuOC0yLjItMjAuNS02LTI2LjItMTIuMnptNDcuOSAxNC42Yy00LjEgMC04LjEtLjMtMTIuNy0uOC00LjYtMTguNi0xLjktMzguOSA1LjQtNTN2LjNsMTIuMi01LjFjNC45LTEuOSA5LjctMy44IDE0LjktNC45LTEwLjcgMTkuNy0xNy40IDQxLjMtMTkuOCA2My41em0xODQtMTYyLjdjNDEuOSAwIDc2LjIgMzQgNzYuMiA3NS45IDAgNDIuMi0zNC4zIDc2LjItNzYuMiA3Ni4ycy03Ni4yLTM0LTc2LjItNzYuMmMwLTQxLjggMzQuMy03NS45IDc2LjItNzUuOXptMTE1LjYgMTc0LjNjLS4zIDE3LjgtNyA0OC45LTIzIDU3LTEzLjIgNi42LTYuNS03LjUtMTYuNS01OC4xIDEzLjMuMyAyNi42LjMgMzkuNSAxLjF6bS01NC0xLjZjLjggNC45IDMuOCA0MC4zLTEuNiA0MS45LTExLjYgMy41LTQwIDQuMy01MS4xLTEuMS00LjEtMy00LjYtMzUuOS00LjMtNDEuMXYuM2MxOC45LS4zIDM4LjEtLjMgNTcgMHpNMjc4LjMgMzA5Yy0xMyAzLjUtNDEuNiA0LjEtNTQuNi0xLjYtNi41LTIuNy0zLjgtNDIuNC0xLjktNTEuNiAxOS4yLS41IDM4LjQtLjUgNTcuOC0uOHYuM2MxLjEgOC4zIDMuMyA1MS4yLTEuMyA1My43em0tMTA2LjUtNTEuMWMxMi4yLS44IDI0LjYtMS40IDM2LjgtMS42LTIuNCAxNS40LTMgNDMuNS00LjkgNTIuMi0xLjEgNi44LTQuMyA2LjgtOS43IDQuMy0yMS45LTkuOC0yNy42LTM1LjItMjIuMi01NC45em0tMzUuNCAzMS4zYzcuOC0xLjEgMTUuNy0xLjkgMjMuNS0yLjcgMS42IDYuMiAzLjggMTEuOSA3IDE3LjYgMTAgMTcgNDQgMzUuNyA0NS4xIDcgNi4yIDE0LjkgNDAuOCAxMi4yIDU0LjkgMTAuOCAxNS43LTEuNCAyMy44LTEuNCAyNi44LTE0LjMgMTIuNCA0LjMgMzAuOCA0LjEgNDQgMyAxMS4zLS44IDIwLjgtLjUgMjQuNi04LjkgMS4xIDUuMSAxLjkgMTEuNiA0LjYgMTYuOCAxMC44IDIxLjMgMzcuMyAxLjQgNDYuOC0zMS42IDguNi44IDE3LjYgMS45IDI2LjUgMi43LS40IDEuMy0zLjggNy4zIDcuMyAxMS42LTQ3LjYgNDctOTUuNyA4Ny44LTE2My4yIDEwNy02My4yLTIwLjgtMTEyLjEtNTkuNS0xNTUuOS0xMDYuNSA5LjYtMy40IDEwLjQtOC44IDgtMTIuNXptLTIxLjYgMTcyLjVjLTMuOCAxNy44LTIxLjkgMjkuNy0zOS43IDI4LjktMTkuMi0uOC00Ni41LTE3LTU5LjItMzYuNS0yLjctMzEuMSA0My44LTYxLjMgNjYuMi01NC42IDE0LjkgNC4zIDI3LjggMzAuOCAzMy41IDU0IDAgMy0uMyA1LjctLjggOC4yem0tOC43LTY2Yy0uNS0xMy41LS41LTI3LS4zLTQwLjVoLjNjMi43LTEuNiA1LjctMy44IDcuOC02LjUgNi41LTEuNiAxMy01LjEgMTUuMS05LjIgMy4zLTcuMS03LTcuNS01LjQtMTIuNCAyLjctMS4xIDUuNy0yLjIgNy44LTMuNSAyOS4yIDI5LjIgNTguNiA1Ni41IDk3LjMgNzctMzYuOCAxMS4zLTcyLjQgMjcuNi0xMDUuOSA0Ny0xLjItMTguNi03LjctMzUuOS0xNi43LTUxLjl6bTMzNy42IDY0LjZjLTEwMyAzLjUtMjA2LjIgNC4xLTMwOS40IDAgMCAuMyAwIC4zLS4zLjN2LS4zaC4zYzM1LjEtMjEuNiA3Mi4yLTM5LjIgMTEyLjQtNTAuOCAxMS42IDUuMSAyMyA5LjUgMzQuOSAxMy4yIDIuMi44IDIuMi44IDQuMyAwIDE0LjMtNC4xIDI4LjQtOS4yIDQyLjItMTUuNCA0MS41IDExLjcgNzguOCAzMS43IDExNS42IDUzem0xMC41LTEyLjRjLTM1LjktMTkuNS03My0zNS45LTExMS45LTQ3LjYgMzguMS0yMCA3MS45LTQ3LjMgMTAzLjUtNzYuNyAyLjIgMS40IDQuNiAyLjQgNy42IDMuMiAwIC44LjMgMS45LjUgMi40LTQuNiAyLjctNy44IDYuMi01LjkgMTAuMyAyLjIgMy44IDguNiA3LjYgMTUuMSA4LjkgMi40IDIuNyA1LjEgNS4xIDguMSA2LjggMCAxMy44LS4zIDI3LjYtLjggNDEuM2wuMy0uM2MtOS4zIDE1LjktMTUuNSAzNy0xNi41IDUxLjd6bTEwNS45IDYuMmMtMTIuNyAxOS41LTQwIDM1LjctNTkuMiAzNi41LTE5LjMuOS00MC41LTEzLjItNDAuNS0zNyA1LjctMjMuMiAxOC45LTQ5LjcgMzMuNS01NCAyMi43LTYuOSA2OS4yIDIzLjQgNjYuMiA1NC41ek0zNzIuOSA3NS4yYy0zLjgtNzIuMS0xMDAuOC03OS43LTEyNi0yMy41IDQ0LjYtMjQuMyA5MC4zLTE1LjcgMTI2IDIzLjV6TTc0LjggNDA3LjFjLTE1LjcgMS42LTQ5LjUgMjUuNC00OS41IDQzLjIgMCAxMS42IDE1LjcgMTkuNSAzMi4yIDE0LjkgMTIuMi0zLjIgMzEuMS0xNy42IDM1LjktMjcuMyA2LTExLjYtMy43LTMyLjctMTguNi0zMC44em0yMTUuOS0xNzYuMmMyOC42IDAgNTEuOS0yMS42IDUxLjktNDguNCAwLTM2LjEtNDAuNS01OC4xLTcyLjItNDQuMyA5LjUgMyAxNi41IDExLjYgMTYuNSAyMS42IDAgMjMuMy0zMy4zIDMyLTQ2LjUgMTEuMy03LjMgMzQuMSAxOS40IDU5LjggNTAuMyA1OS44ek02OCA0NzQuMWMuNSA2LjUgMTIuMiAxMi43IDIxLjYgOS41IDYuOC0yLjcgMTQuNi0xMC41IDE3LjMtMTYuMiAzLTctMS4xLTIwLTkuNy0xOC40LTguOSAxLjYtMjkuNyAxNi43LTI5LjIgMjUuMXptNDMzLjItNjdjLTE0LjktMS45LTI0LjYgMTkuMi0xOC45IDMwLjggNC45IDkuNyAyNC4xIDI0LjEgMzYuMiAyNy4zIDE2LjUgNC42IDMyLjItMy4yIDMyLjItMTQuOSAwLTE3LjgtMzMuOC00MS42LTQ5LjUtNDMuMnpNNDc4LjggNDQ5Yy04LjQtMS42LTEyLjQgMTEuMy05LjUgMTguNCAyLjQgNS43IDEwLjMgMTMuNSAxNy4zIDE2LjIgOS4yIDMuMiAyMS4xLTMgMjEuMy05LjUuOS04LjQtMjAuMi0yMy41LTI5LjEtMjUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT3JjaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk0Ljc1IDE4OC4xOWgtNDUuOTJWMzQyaDQ3LjQ3YzY3LjYyIDAgODMuMTItNTEuMzQgODMuMTItNzYuOTEgMC00MS42NC0yNi41NC03Ni45LTg0LjY3LTc2Ljl6TTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bS04MC43OSAzNjAuNzZoLTI5Ljg0di0yMDcuNWgyOS44NHptLTE0LjkyLTIzMS4xNGExOS41NyAxOS41NyAwIDEgMSAxOS41Ny0xOS41NyAxOS42NCAxOS42NCAwIDAgMS0xOS41NyAxOS41N3pNMzAwIDM2OWgtODFWMTYxLjI2aDgwLjZjNzYuNzMgMCAxMTAuNDQgNTQuODMgMTEwLjQ0IDEwMy44NUM0MTAgMzE4LjM5IDM2OC4zOCAzNjkgMzAwIDM2OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT3NpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMjY2LjQ0QzEwLjMgMTMwLjY0IDEwNS40IDM0IDIyMS44IDE4LjM0YzEzOC44LTE4LjYgMjU1LjYgNzUuOCAyNzggMjAxLjEgMjEuMyAxMTguOC00NCAyMzAtMTUxLjYgMjc0LTkuMyAzLjgtMTQuNCAxLjctMTgtNy43cS0yNi43LTY5LjQ1LTUzLjQtMTM5Yy0zLjEtOC4xLTEtMTMuMiA3LTE2LjggMjQuMi0xMSAzOS4zLTI5LjQgNDMuMy01NS44YTcxLjQ3IDcxLjQ3IDAgMCAwLTY0LjUtODIuMmMtMzktMy40LTcxLjggMjMuNy03Ny41IDU5LjctNS4yIDMzIDExLjEgNjMuNyA0MS45IDc3LjcgOS42IDQuNCAxMS41IDguNiA3LjggMTguNHEtMjYuODUgNjkuOS01My43IDEzOS45Yy0yLjYgNi45LTguMyA5LjMtMTUuNSA2LjUtNTIuNi0yMC4zLTEwMS40LTYxLTEzMC44LTExOS0yNC45LTQ5LjItMjUuMi04Ny43LTI2LjgtMTA4Ljd6bTIwLjktMS45Yy40IDYuNi42IDE0LjMgMS4zIDIyLjEgNi4zIDcxLjkgNDkuNiAxNDMuNSAxMzEgMTgzLjEgMy4yIDEuNSA0LjQuOCA1LjYtMi4zcTIyLjM1LTU4LjY1IDQ1LTExNy4zYzEuMy0zLjMuNi00LjgtMi40LTYuNy0zMS42LTE5LjktNDcuMy00OC41LTQ1LjYtODYgMS0yMS42IDkuMy00MC41IDIzLjgtNTYuMyAzMC0zMi43IDc3LTM5LjggMTE1LjUtMTcuNmE5MS42NCA5MS42NCAwIDAgMSA0NS4yIDkwLjRjLTMuNiAzMC42LTE5LjMgNTMuOS00NS43IDY5LjgtMi43IDEuNi0zLjUgMi45LTIuMyA2cTIyLjggNTguOCA0NS4yIDExNy43YzEuMiAzLjEgMi40IDMuOCA1LjYgMi4zIDM1LjUtMTYuNiA2NS4yLTQwLjMgODguMS03MiAzNC44LTQ4LjIgNDkuMS0xMDEuOSA0Mi4zLTE2MS0xMy43LTExNy41LTExOS40LTIxNC44LTI1NS41LTE5OC0xMDYuMSAxMy0xOTUuMyAxMDIuNS0xOTcuMSAyMjUuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFnZTQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDUwNEMxMTEgNTA0IDAgMzkzIDAgMjU2UzExMSA4IDI0OCA4YzIwLjkgMCA0MS4zIDIuNiA2MC43IDcuNUw0Mi4zIDM5MkgyNDh2MTEyem0wLTE0My42VjE0Ni44TDk4LjYgMzYwLjRIMjQ4em05NiAzMS42djkyLjdjNDUuNy0xOS4yIDg0LjUtNTEuNyAxMTEuNC05Mi43SDM0NHptNTcuNC0xMzguMmwtMjEuMiA4LjQgMjEuMiA4LjN2LTE2Ljd6bS0yMC4zIDU0LjVjLTYuNyAwLTggNi4zLTggMTIuOXY3LjdoMTYuMnYtMTBjMC01LjktMi4zLTEwLjYtOC4yLTEwLjZ6TTQ5NiAyNTZjMCAzNy4zLTguMiA3Mi43LTIzIDEwNC40SDM0NFYyNy4zQzQzMy4zIDY0LjggNDk2IDE1My4xIDQ5NiAyNTZ6TTM2MC40IDE0My42aDY4LjJWOTZoLTEzLjl2MzIuNmgtMTMuOVY5OWgtMTMuOXYyOS42aC0xMi43Vjk2aC0xMy45djQ3LjZ6bTY4LjEgMTg1LjNINDAydi0xMWMwLTE1LjQtNS42LTI1LjItMjAuOS0yNS4yLTE1LjQgMC0yMC43IDEwLjYtMjAuNyAyNS45djI1LjNoNjguMnYtMTV6bTAtMTAzbC02OC4yIDI5LjdWMjY4bDY4LjIgMjkuNXYtMTYuNmwtMTQuNC01Ljd2LTI2LjVsMTQuNC01Ljl2LTE2Ljl6bS00LjgtNjguNWgtMzUuNlYxODRINDAydi0xMi4yaDExYzguNiAxNS44IDEuMyAzNS4zLTE4LjYgMzUuMy0yMi41IDAtMjguMy0yNS4zLTE1LjUtMzcuN2wtMTEuNi0xMC42Yy0xNi4yIDE3LjUtMTIuMiA2My45IDI3LjEgNjMuOSAzNCAwIDQ0LjctMzUuOSAyOS4zLTY1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhZ2VsaW5lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzEyLjdjLTU1LjEgMTM2LjctMTg3LjEgNTQtMTg3LjEgNTQtNDAuNSA4MS44LTEwNy40IDEzNC40LTE4NC42IDEzNC43LTE2LjEgMC0xNi42LTI0LjQgMC0yNC40IDY0LjQtLjMgMTIwLjUtNDIuNyAxNTcuMi0xMTAuMS00MS4xIDE1LjktMTE4LjYgMjcuOS0xNjEuNi04Mi4yIDEwOS00NC45IDE1OS4xIDExLjIgMTc4LjMgNDUuNSA5LjktMjQuNCAxNy01MC45IDIxLjYtNzkuNyAwIDAtMTM5LjcgMjEuOS0xNDkuNS05OC4xIDExOS4xLTQ3LjkgMTUyLjYgNzYuNyAxNTIuNiA3Ni43IDEuNi0xNi43IDMuMy01Mi42IDMuMy01My40IDAgMC0xMDYuMy03My43LTM4LjEtMTY1LjIgMTI0LjYgNDMgNjEuNCAxNjIuNCA2MS40IDE2Mi40LjUgMS42LjUgMjMuOCAwIDMzLjQgMCAwIDQ1LjItODkgMTM2LjQtNTcuNS00LjIgMTM0LTE0MS45IDEwNi40LTE0MS45IDEwNi40LTQuNCAyNy40LTExLjIgNTMuNC0yMCA3Ny41IDAgMCA4My05MS44IDE3Mi0yMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFsZmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NC45IDE5My45YzAtNDcuNC01NS4yLTQ0LjItOTUuNC0yOS44LTEuMyAzOS40LTIuNSA4MC43LTMgMTE5LjguNyAyLjggMi42IDYuMiAxNS4xIDYuMiAzNi44IDAgODMuNC00Mi44IDgzLjMtOTYuMnptLTE5NC41IDcyLjJjLjIgMCA2LjUtMi43IDExLjItMi43IDI2LjYgMCAyMC43IDQ0LjEtMTQuNCA0NC4xLTIxLjUgMC0zNy4xLTE4LjEtMzcuMS00MyAwLTQyIDQyLjktOTUuNiAxMDAuNy0xMjYuNSAxLTEyLjQgMy0yMiAxMC41LTI4LjIgMTEuMi05IDI2LjYtMy41IDI5LjUgMTEuMSA3Mi4yLTIyLjIgMTM1LjIgMSAxMzUuMiA3MiAwIDc3LjktNzkuMyAxNTIuNi0xNDAuMSAxMzguMi0uMSAzOS40LjkgNzQuNCAyLjcgMTAwdi4yYy4yIDMuNC42IDEyLjUtNS4zIDE5LjEtOS42IDEwLjYtMzMuNCAxMC0zNi40LTIyLjMtNC4xLTQ0LjQuMi0yMDYuMSAxLjQtMjQyLjUtMjEuNSAxNS01OC41IDUwLjMtNTguNSA3NS45LjIgMi41LjQgNCAuNiA0LjZ6TTggMTgxLjFzLS4xIDM3LjQgMzguNCAzNy40aDMwbDIyLjQgMjE3LjJzMCA0NC4zIDQ0LjcgNDQuM2gyODguOXM0NC43LS40IDQ0LjctNDQuM2wyMi40LTIxNy4yaDMwczM4LjQgMS4yIDM4LjQtMzcuNGMwIDAgLjEtMzcuNC0zOC40LTM3LjRoLTMwLjFjLTcuMy0yNS42LTMwLjItNzQuMy0xMTkuNC03NC4zaC0yOFY1MC4zcy0yLjctMTguNC0yMS4xLTE4LjRoLTg1LjhzLTIxLjEgMC0yMS4xIDE4LjR2MTkuMWgtMjguMXMtMTA1IDQuMi0xMjAuNSA3NC4zaC0yOVM4IDE0Mi41IDggMTgxLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhdHJlb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDE5NC44YzAgMTAxLjMtODIuNCAxODMuOC0xODMuOCAxODMuOC0xMDEuNyAwLTE4NC40LTgyLjQtMTg0LjQtMTgzLjggMC0xMDEuNiA4Mi43LTE4NC4zIDE4NC40LTE4NC4zQzQyOS42IDEwLjUgNTEyIDkzLjIgNTEyIDE5NC44ek0wIDUwMS41aDkwdi00OTFIMHY0OTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBheXBhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTEuNCAyOTUuOWMtMy41IDE5LjItMTcuNCAxMDguNy0yMS41IDEzNC0uMyAxLjgtMSAyLjUtMyAyLjVIMTIuM2MtNy42IDAtMTMuMS02LjYtMTIuMS0xMy45TDU4LjggNDYuNmMxLjUtOS42IDEwLjEtMTYuOSAyMC0xNi45IDE1Mi4zIDAgMTY1LjEtMy43IDIwNCAxMS40IDYwLjEgMjMuMyA2NS42IDc5LjUgNDQgMTQwLjMtMjEuNSA2Mi42LTcyLjUgODkuNS0xNDAuMSA5MC4zLTQzLjQuNy02OS41LTctNzUuMyAyNC4yek0zNTcuMSAxNTJjLTEuOC0xLjMtMi41LTEuOC0zIDEuMy0yIDExLjQtNS4xIDIyLjUtOC44IDMzLjYtMzkuOSAxMTMuOC0xNTAuNSAxMDMuOS0yMDQuNSAxMDMuOS02LjEgMC0xMC4xIDMuMy0xMC45IDkuNC0yMi42IDE0MC40LTI3LjEgMTY5LjctMjcuMSAxNjkuNy0xIDcuMSAzLjUgMTIuOSAxMC42IDEyLjloNjMuNWM4LjYgMCAxNS43LTYuMyAxNy40LTE0LjkuNy01LjQtMS4xIDYuMSAxNC40LTkxLjMgNC42LTIyIDE0LjMtMTkuNyAyOS4zLTE5LjcgNzEgMCAxMjYuNC0yOC44IDE0Mi45LTExMi4zIDYuNS0zNC44IDQuNi03MS40LTIzLjgtOTIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVubnlBcmNhZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIxLjkxIDE2NC4yN2MtNC40OSAxOS40NS0xLjQgNi4wNi0xNS4xIDY1LjI5bDM5LjczLTEwLjYxYy0yMi4zNC00OS42MS0xNy4yOS0zOC40MS0yNC42My01NC42OHptLTIwNi4wOSA1MS4xMWMtMjAuMTkgNS40LTExLjMxIDMuMDMtMzkuNjMgMTAuNThsNC40NiA0Ni4xOWMyOC4xNy03LjU5IDIwLjYyLTUuNTcgMzQuODItOS4zNCA0Mi4zLTkuNzkgMzIuODUtNTYuNDIuMzUtNDcuNDN6bTMyNi4xNi0yNi4xOWwtNDUuNDctOTkuMmMtNS42OS0xMi4zNy0xOS40Ni0xOC44NC0zMi42Mi0xNS4zMy03MC4yNyAxOC43NS0zOC43MiAxMC4zMi0xMzUuNTkgMzYuMjNhMjcuNjE4IDI3LjYxOCAwIDAgMC0xOC44OSAxNy40MUMxNDQuMjYgMTEzLjI3IDAgMTUzLjc1IDAgMjI2LjY3YzAgMzMuNSAzMC42NyA2Ny4xMSA4MC45IDk1LjM3bDEuNzQgMTcuODhhMjcuODkxIDI3Ljg5MSAwIDAgMC0xNy43NyAyOC42N2w0LjMgNDQuNDhjMS4zOSAxNC4zMSAxMy40MyAyNS4yMSAyNy44IDI1LjIgNS4xOC0uMDEtMy4wMSAxLjc4IDEyMi41My0zMS43NiAxMi41Ny0zLjM3IDIxLjEyLTE1LjAyIDIwLjU4LTI4LjAyIDIxNi41OSA0NS41IDQwMS45OS01Ljk4IDM5OS44OS04NC44My4wMS0yOC4xNS0yMi4xOS02Ni41Ni05Ny45OS0xMDQuNDd6TTI1NS4xNCAyOTguM2wtMjEuOTEgNS44OC00OC40NCAxMi45MSAyLjQ2IDIzLjU1IDIwLjUzLTUuNTEgNC41MSA0NC41MS0xMTUuMzEgMzAuNzgtNC4zLTQ0LjUyIDIwLjAyLTUuMzUtMTEuMTEtMTE0LjY0LTIwLjEyIDUuMzktNC4zNS00NC41YzE3OC4xNS00Ny41NCAxNzAuMTgtNDYuNDIgMTg2LjIyLTQ2LjY1IDU2LjY2LTEuMTMgNjQuMTUgNzEuODQgNDIuNTUgMTA0LjQzYTg2LjcgODYuNyAwIDAgMS01MC43NSAzMy43MnptMTk5LjE4IDE2LjYybC0zLjg5LTM5LjQ5IDE0LjktMy45OC02LjYxLTE0LjY4LTU3Ljc2IDE1LjQyLTQuMSAxNy41NCAxOS4yLTUuMTIgNC4wNSAzOS41NC0xMTIuODUgMzAuMDctNC40Ni00NC40MyAyMC45OS01LjU5IDMzLjA4LTEyNi40Ny0xNy4xNSA0LjU2LTQuMi00NC40OGM5My4zNi0yNC45OSA2NS4wMS0xNy40MSAxMzUuNTktMzYuMjRsNjYuNjcgMTQ1LjQ3IDIwLjc5LTUuNTYgNC4zIDQ0LjQ4LTEwOC41NSAyOC45NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyYnl0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDUuMzE0LDI4NC41NzhIMjQ2LjZWMzgzLjNoNTguNzExcTI0LjQyMywwLDM4LjE5My0xMy43N3QxMy43Ny0zNi4xMXEwLTIxLjgyNi0xNC4wMzItMzUuMzM1VDMwNS4zMTQsMjg0LjU3OFpNMTQ5LjQzNSwxMjguN0g5MC43MjR2OTguNzIzaDU4LjcxMXEyNC40MiwwLDM4LjE5LTEzLjc3M3QxMy43Ny0zNi4xMDdxMC0yMS44MjYtMTQuMDI5LTM1LjMzOFQxNDkuNDM1LDEyOC43Wk0zNjYuNjQ3LDMySDgxLjM1M0E4MS40NDUsODEuNDQ1LDAsMCwwLDAsMTEzLjM1MlYzOTguNjQ3QTgxLjQ0NSw4MS40NDUsMCwwLDAsODEuMzUzLDQ4MEgzNjYuNjQ3QTgxLjQ0NSw4MS40NDUsMCwwLDAsNDQ4LDM5OC42NDdWMTEzLjM1MkE4MS40NDUsODEuNDQ1LDAsMCwwLDM2Ni42NDcsMzJabTYzLjYzNSwzNjYuNjQ3YTYzLjcwNiw2My43MDYsMCwwLDEtNjMuNjM1LDYzLjYzNUg4MS4zNTNhNjMuNzA2LDYzLjcwNiwwLDAsMS02My42MzUtNjMuNjM1VjExMy4zNTJBNjMuNzA2LDYzLjcwNiwwLDAsMSw4MS4zNTMsNDkuNzE4SDM2Ni42NDdhNjMuNzA2LDYzLjcwNiwwLDAsMSw2My42MzUsNjMuNjM0Wk0zMDUuMzE0LDEyOC43SDI0Ni42djk4LjcyM2g1OC43MTFxMjQuNDIzLDAsMzguMTkzLTEzLjc3M3QxMy43Ny0zNi4xMDdxMC0yMS44MjYtMTQuMDMyLTM1LjMzOFQzMDUuMzE0LDEyOC43WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJpc2NvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcwIDYzLjZDMzMxLjQgMjIuNiAyODAuNSAwIDIyNi42IDAgMTExLjkgMCAxOC41IDk2LjIgMTguNSAyMTQuNGMwIDc1LjEgNTcuOCAxNTkuOCA4Mi43IDE5Mi43QzEzNy44IDQ1NS41IDE5Mi42IDUxMiAyMjYuNiA1MTJjNDEuNiAwIDExMi45LTk0LjIgMTIwLjktMTA1IDI0LjYtMzMuMSA4Mi0xMTguMyA4Mi0xOTIuNiAwLTU2LjUtMjEuMS0xMTAuMS01OS41LTE1MC44ek0yMjYuNiA0OTMuOWMtNDIuNSAwLTE5MC0xNjcuMy0xOTAtMjc5LjQgMC0xMDcuNCA4My45LTE5Ni4zIDE5MC0xOTYuMyAxMDAuOCAwIDE4NC43IDg5IDE4NC43IDE5Ni4zLjEgMTEyLjEtMTQ3LjQgMjc5LjQtMTg0LjcgMjc5LjR6TTMzOCAyMDYuOGMwIDU5LjEtNTEuMSAxMDkuNy0xMTAuOCAxMDkuNy0xMDAuNiAwLTE1MC43LTEwOC4yLTkyLjktMTgxLjh2LjRjMCAyNC41IDIwLjEgNDQuNCA0NC44IDQ0LjQgMjQuNyAwIDQ0LjgtMTkuOSA0NC44LTQ0LjQgMC0xOC4yLTExLjEtMzMuOC0yNi45LTQwLjcgNzYuNi0xOS4yIDE0MSAzOS4zIDE0MSAxMTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhhYnJpY2F0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIzIDI2Mi4xbC0uMS0xM3MyMS43LTE5LjggMjEuMS0yMS4ybC05LjUtMjBjLS42LTEuNC0yOS41LS41LTI5LjUtLjVsLTkuNC05LjNzLjItMjguNS0xLjItMjkuMWwtMjAuMS05LjJjLTEuNC0uNi0yMC43IDIxLTIwLjcgMjFsLTEzLjEtLjJzLTIwLjUtMjEuNC0yMS45LTIwLjhsLTIwIDguM2MtMS40LjUuMiAyOC45LjIgMjguOWwtOS4xIDkuMXMtMjkuMi0uOS0yOS43LjRsLTguMSAxOS44Yy0uNiAxLjQgMjEgMjEgMjEgMjFsLjEgMTIuOXMtMjEuNyAxOS44LTIxLjEgMjEuMmw5LjUgMjBjLjYgMS40IDI5LjUuNSAyOS41LjVsOS40IDkuM3MtLjIgMzEuOCAxLjIgMzIuM2wyMC4xIDguM2MxLjQuNiAyMC43LTIzLjUgMjAuNy0yMy41bDEzLjEuMnMyMC41IDIzLjggMjEuOCAyMy4zbDIwLTcuNWMxLjQtLjYtLjItMzIuMS0uMi0zMi4xbDkuMS05LjFzMjkuMi45IDI5LjctLjVsOC4xLTE5LjhjLjctMS4xLTIwLjktMjAuNy0yMC45LTIwLjd6bS00NC45LTguN2MuNyAxNy4xLTEyLjggMzEuNi0zMC4xIDMyLjQtMTcuMy44LTMyLjEtMTIuNS0zMi44LTI5LjYtLjctMTcuMSAxMi44LTMxLjYgMzAuMS0zMi4zIDE3LjMtLjggMzIuMSAxMi41IDMyLjggMjkuNXptMjAxLjItMzcuOWwtOTctOTctLjEuMWMtNzUuMS03My4zLTE5NS40LTcyLjgtMjY5LjggMS42LTUwLjkgNTEtMjcuOCAyNy45LTk1LjcgOTUuMy0yMi4zIDIyLjMtMjIuMyA1OC43IDAgODEgNjkuOSA2OS40IDQ2LjQgNDYgOTcuNCA5N2wuMS0uMWM3NS4xIDczLjMgMTk1LjQgNzIuOSAyNjkuOC0xLjYgNTEtNTAuOSAyNy45LTI3LjkgOTUuMy05NS4zIDIyLjMtMjIuMyAyMi4zLTU4LjcgMC04MXpNMTQwLjQgMzYzLjhjLTU5LjYtNTkuNS01OS42LTE1NiAwLTIxNS41IDU5LjUtNTkuNiAxNTYtNTkuNSAyMTUuNiAwIDU5LjUgNTkuNSA1OS42IDE1NiAwIDIxNS42LTU5LjYgNTkuNS0xNTYgNTkuNC0yMTUuNi0uMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvZW5peEZyYW1ld29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTIuOSAzNDQuM2MzLjgtLjEgMjIuOC0xLjQgMjUuNi0yLjItMi40LTIuNi00My42LTEtNjgtNDkuNi00LjMtOC42LTcuNS0xNy42LTYuNC0yNy42IDIuOS0yNS41IDMyLjktMzAgNTItMTguNSAzNiAyMS42IDYzLjMgOTEuMyAxMTMuNyA5Ny41IDM3IDQuNSA4NC42LTE3IDEwOC4yLTQ1LjQtLjYtLjEtLjgtLjItMS0uMS0uNC4xLS44LjItMS4xLjMtMzMuMyAxMi4xLTk0LjMgOS43LTEzNC43LTE0LjgtMzcuNi0yMi44LTUzLjEtNTguNy01MS44LTc0LjYgMS44LTIxLjMgMjIuOS0yMy4yIDM1LjktMTkuNiAxNC40IDMuOSAyNC40IDE3LjYgMzguOSAyNy40IDE1LjYgMTAuNCAzMi45IDEzLjcgNTEuMyAxMC4zIDE0LjktMi43IDM0LjQtMTIuMyAzNi41LTE0LjUtMS4xLS4xLTEuOC0uMS0yLjUtLjItNi4yLS42LTEyLjQtLjgtMTguNS0xLjdDMjc5LjggMTk0LjUgMjYyLjEgNDcuNCAxMzguNSAzNy45IDk0LjIgMzQuNSAzOS4xIDQ2IDIuMiA3Mi45Yy0uOC42LTEuNSAxLjItMi4yIDEuOC4xLjIuMS4zLjIuNS44IDAgMS42LS4xIDIuNC0uMiA2LjMtMSAxMi41LS44IDE4LjcuMyAyMy44IDQuMyA0Ny43IDIzLjEgNTUuOSA3Ni41IDUuMyAzNC4zLS43IDUwLjggOCA4Ni4xIDE5IDc3LjEgOTEgMTA3LjYgMTI3LjcgMTA2LjR6TTc1LjMgNjQuOWMtLjktMS0uOS0xLjItMS4zLTIgMTIuMS0yLjYgMjQuMi00LjEgMzYuNi00LjgtMS4xIDE0LjctMjIuMiAyMS4zLTM1LjMgNi44em0xOTYuOSAzNTAuNWMtNDIuOCAxLjItOTItMjYuNy0xMjMuNS02MS40LTQuNi01LTE2LjgtMjAuMi0xOC42LTIzLjRsLjQtLjRjNi42IDQuMSAyNS43IDE4LjYgNTQuOCAyNyAyNC4yIDcgNDguMSA2LjMgNzEuNi0zLjMgMjIuNy05LjMgNDEtLjUgNDMuMSAyLjktMTguNSAzLjgtMjAuMSA0LjQtMjQgNy45LTUuMSA0LjQtNC42IDExLjcgNyAxNy4yIDI2LjIgMTIuNCA2My0yLjggOTcuMiAyNS40IDIuNCAyIDguMSA3LjggMTAuMSAxMC43LS4xLjItLjMuMy0uNC41LTQuOC0xLjUtMTYuNC03LjUtNDAuMi05LjMtMjQuNy0yLTQ2LjMgNS4zLTc3LjUgNi4yem0xNzQuOC0yNTJjMTYuNC01LjIgNDEuMy0xMy40IDY2LjUtMy4zIDE2LjEgNi41IDI2LjIgMTguNyAzMi4xIDM0LjYgMy41IDkuNCA1LjEgMTkuNyA1LjEgMjguNy0uMiAwLS40IDAtLjYuMS0uMi0uNC0uNC0uOS0uNS0xLjMtNS0yMi0yOS45LTQzLjgtNjcuNi0yOS45LTUwLjIgMTguNi0xMzAuNCA5LjctMTc2LjktNDgtLjctLjktMi40LTEuNy0xLjMtMy4yLjEtLjIgMi4xLjYgMyAxLjMgMTguMSAxMy40IDM4LjMgMjEuOSA2MC4zIDI2LjIgMzAuNSA2LjEgNTQuNiAyLjkgNzkuOS01LjJ6bTEwMi43IDExNy41Yy0zMi40LjItMzMuOCA1MC4xLTEwMy42IDY0LjQtMTguMiAzLjctMzguNyA0LjYtNDQuOSA0LjJ2LS40YzIuOC0xLjUgMTQuNy0yLjYgMjkuNy0xNi42IDcuOS03LjMgMTUuMy0xNS4xIDIyLjgtMjIuOSAxOS41LTIwLjIgNDEuNC00Mi4yIDgxLjktMzkgMjMuMSAxLjggMjkuMyA4LjIgMzYuMSAxMi43LjMuMi40LjUuNy45LS41IDAtLjcuMS0uOSAwLTctMi43LTE0LjMtMy4zLTIxLjgtMy4zem0tMTIuMy0yNC4xYy0uMS4yLS4xLjQtLjIuNi0yOC45LTQuNC00OC03LjktNjguNSA0LTE3IDkuOS0zMS40IDIwLjUtNjIgMjQuNC0yNy4xIDMuNC00NS4xIDIuNC02Ni4xLTgtLjMtLjItLjYtLjQtMS0uNiAwLS4yLjEtLjMuMS0uNSAyNC45IDMuOCAzNi40IDUuMSA1NS41LTUuOCAyMi4zLTEyLjkgNDAuMS0yNi42IDcxLjMtMzEgMjkuNi00LjEgNTEuMyAyLjUgNzAuOSAxNi45ek0yNjguNiA5Ny4zYy0uNi0uNi0xLjEtMS4yLTIuMS0yLjMgNy42IDAgMjkuNy0xLjIgNTMuNCA4LjQgMTkuNyA4IDMyLjIgMjEgNTAuMiAzMi45IDExLjEgNy4zIDIzLjQgOS4zIDM2LjQgOC4xIDQuMy0uNCA4LjUtMS4yIDEyLjgtMS43LjQtLjEuOSAwIDEuNS4zLS42LjQtMS4yLjktMS44IDEuMi04LjEgNC0xNi43IDYuMy0yNS42IDcuMS0yNi4xIDIuNi01MC4zLTMuNy03My40LTE1LjQtMTkuMy05LjktMzYuNC0yMi45LTUxLjQtMzguNnpNNjQwIDMzNS43Yy0zLjUgMy4xLTIyLjcgMTEuNi00Mi43IDUuMy0xMi4zLTMuOS0xOS41LTE0LjktMzEuNi0yNC4xLTEwLTcuNi0yMC45LTcuOS0yOC4xLTguNC42LS44LjktMS4yIDEuMi0xLjQgMTQuOC05LjIgMzAuNS0xMi4yIDQ3LjMtNi41IDEyLjUgNC4yIDE5LjIgMTMuNSAzMC40IDI0LjIgMTAuOCAxMC40IDIxIDkuOSAyMy4xIDEwLjUuMS0uMS4yIDAgLjQuNHptLTIxMi41IDEzN2MyLjIgMS4yIDEuNiAxLjUgMS41IDItMTguNS0xLjQtMzMuOS03LjYtNDYuOC0yMi4yLTIxLjgtMjQuNy00MS43LTI3LjktNDguNi0yOS43LjUtLjIuOC0uNCAxLjEtLjQgMTMuMS4xIDI2LjEuNyAzOC45IDMuOSAyNS4zIDYuNCAzNSAyNS40IDQxLjYgMzUuMyAzLjIgNC44IDcuMyA4LjMgMTIuMyAxMS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9lbml4U3F1YWRyb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNjMuMzhDMTQyLjQ5IDI3LjI1IDIwMS41NSA3LjMxIDI2MC41MSA4LjgxYzI5LjU4LS4zOCA1OS4xMSA1LjM3IDg2LjkxIDE1LjMzLTI0LjEzLTQuNjMtNDktNi4zNC03My4zOC0yLjQ1QzIzMS4xNyAyNyAxOTEgNDguODQgMTYyLjIxIDgwLjg3YzUuNjctMSAxMC43OC0zLjY3IDE2LTUuODYgMTguMTQtNy44NyAzNy40OS0xMy4yNiA1Ny4yMy0xNC44MyAxOS43NC0yLjEzIDM5LjY0LS40MyA1OS4yOCAxLjkyLTE0LjQyIDIuNzktMjkuMTIgNC41Ny00MyA5LjU5LTM0LjQzIDExLjA3LTY1LjI3IDMzLjE2LTg2LjMgNjIuNjMtMTMuOCAxOS43MS0yMy42MyA0Mi44Ni0yNC42NyA2Ny4xMy0uMzUgMTYuNDkgNS4yMiAzNC44MSAxOS44MyA0NGE1My4yNyA1My4yNyAwIDAgMCAzNy41MiA2Ljc0YzE1LjQ1LTIuNDYgMzAuMDctOC42NCA0My42LTE2LjMzIDExLjUyLTYuODIgMjIuNjctMTQuNTUgMzItMjQuMjUgMy43OS0zLjIyIDIuNTMtOC40NSAyLjYyLTEyLjc5LTIuMTItLjM0LTQuMzgtMS4xMS02LjMuM2EyMDMgMjAzIDAgMCAxLTM1LjgyIDE1LjM3Yy0yMCA2LjE3LTQyLjE2IDguNDYtNjIuMS43OCAxMi43OSAxLjczIDI2LjA2LjMxIDM3Ljc0LTUuNDQgMjAuMjMtOS43MiAzNi44MS0yNS4yIDU0LjQ0LTM4Ljc3YTUyNi41NyA1MjYuNTcgMCAwIDEgODguOS01NS4zMWMyNS43MS0xMiA1Mi45NC0yMi43OCA4MS41Ny0yNC4xMi0xNS42MyAxMy43Mi0zMi4xNSAyNi41Mi00Ni43OCA0MS4zOC0xNC41MSAxNC0yNy40NiAyOS41LTQwLjExIDQ1LjE4LTMuNTIgNC42LTguOTUgNi45NC0xMy41OCAxMC4xNmExNTAuNyAxNTAuNyAwIDAgMC01MS44OSA2MC4xYy05LjMzIDE5LjY4LTE0LjUgNDEuODUtMTEuNzcgNjMuNjUgMS45NCAxMy42OSA4LjcxIDI3LjU5IDIwLjkgMzQuOTEgMTIuOSA4IDI5LjA1IDguMDcgNDMuNDggNS4xIDMyLjgtNy40NSA2MS40My0yOC44OSA4MS01NS44NCAyMC40NC0yNy41MiAzMC41Mi02Mi4yIDI5LjE2LTk2LjM1LS41Mi03LjUtMS41Ny0xNS0xLjY2LTIyLjQ5IDggMTkuNDggMTQuODIgMzkuNzEgMTYuNjUgNjAuODMgMiAxNC4yOC43NSAyOC43Ni0xLjYyIDQyLjktMS45MSAxMS01LjY3IDIxLjUxLTcuNzggMzIuNDNhMTY1IDE2NSAwIDAgMCAzOS4zNC04MS4wNyAxODMuNjQgMTgzLjY0IDAgMCAwLTE0LjIxLTEwNC42NGMyMC43OCAzMiAzMi4zNCA2OS41OCAzNS43MSAxMDcuNDguNDkgMTIuNzMuNDkgMjUuNTEgMCAzOC4yM0EyNDMuMjEgMjQzLjIxIDAgMCAxIDQ4MiAzNzEuMzRjLTI2LjEyIDQ3LjM0LTY4IDg1LjYzLTExNy4xOSAxMDgtNzguMjkgMzYuMjMtMTc0LjY4IDMxLjMyLTI0OC0xNC42OEEyNDguMzQgMjQ4LjM0IDAgMCAxIDI1LjM2IDM2NiAyMzguMzQgMjM4LjM0IDAgMCAxIDAgMjczLjA4di0zMS4zNEMzLjkzIDE3MiA0MC44NyAxMDUuODIgOTYgNjMuMzhtMjIyIDgwLjMzYTc5LjEzIDc5LjEzIDAgMCAwIDE2LTQuNDhjNS0xLjc3IDkuMjQtNS45NCAxMC4zMi0xMS4yMi04Ljk2IDQuOTktMTcuOTggOS45Mi0yNi4zMiAxNS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDEwNC41YzE3MS40IDAgMzAzLjIgNzIuMiAzMDMuMiAxNTEuNVM0OTEuMyA0MDcuNSAzMjAgNDA3LjVjLTE3MS40IDAtMzAzLjItNzIuMi0zMDMuMi0xNTEuNVMxNDguNyAxMDQuNSAzMjAgMTA0LjVtMC0xNi44QzE0My4zIDg3LjcgMCAxNjMgMCAyNTZzMTQzLjMgMTY4LjMgMzIwIDE2OC4zUzY0MCAzNDkgNjQwIDI1NiA0OTYuNyA4Ny43IDMyMCA4Ny43ek0yMTguMiAyNDIuNWMtNy45IDQwLjUtMzUuOCAzNi4zLTcwLjEgMzYuM2wxMy43LTcwLjZjMzggMCA2My44LTQuMSA1Ni40IDM0LjN6TTk3LjQgMzUwLjNoMzYuN2w4LjctNDQuOGM0MS4xIDAgNjYuNiAzIDkwLjItMTkuMSAyNi4xLTI0IDMyLjktNjYuNyAxNC4zLTg4LjEtOS43LTExLjItMjUuMy0xNi43LTQ2LjUtMTYuN2gtNzAuN0w5Ny40IDM1MC4zem0xODUuNy0yMTMuNmgzNi41bC04LjcgNDQuOGMzMS41IDAgNjAuNy0yLjMgNzQuOCAxMC43IDE0LjggMTMuNiA3LjcgMzEtOC4zIDExMy4xaC0zN2MxNS40LTc5LjQgMTguMy04NiAxMi43LTkyLTUuNC01LjgtMTcuNy00LjYtNDcuNC00LjZsLTE4LjggOTYuNmgtMzYuNWwzMi43LTE2OC42ek01MDUgMjQyLjVjLTggNDEuMS0zNi43IDM2LjMtNzAuMSAzNi4zbDEzLjctNzAuNmMzOC4yIDAgNjMuOC00LjEgNTYuNCAzNC4zek0zODQuMiAzNTAuM0g0MjFsOC43LTQ0LjhjNDMuMiAwIDY3LjEgMi41IDkwLjItMTkuMSAyNi4xLTI0IDMyLjktNjYuNyAxNC4zLTg4LjEtOS43LTExLjItMjUuMy0xNi43LTQ2LjUtMTYuN0g0MTdsLTMyLjggMTY4Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDQgMjQ2Yy0zLjItMi02LjMtMi45LTEwLjEtMi45LTYuNiAwLTEyLjYgMy4yLTE5LjMgMy43bDEuNyA0Ljl6bTEzNS45IDE5Ny45Yy0xOSAwLTY0LjEgOS41LTc5LjkgMTkuOGw2LjkgNDUuMWMzNS43IDYuMSA3MC4xIDMuNiAxMDYtOS44LTQuOC0xMC0yMy41LTU1LjEtMzMtNTUuMXpNMzQwLjggMTc3YzYuNiAyLjggMTEuNSA5LjIgMjIuNyAyMi4xIDItMS40IDcuNS01LjIgNy41LTguNiAwLTQuOS0xMS44LTEzLjItMTMuMi0yMyAxMS4yLTUuNyAyNS4yLTYgMzcuNi04LjkgNjguMS0xNi40IDExNi4zLTUyLjkgMTQ2LjgtMTE2LjdDNTQ4LjMgMjkuMyA1NTQgMTYuMSA1NTQuNiAybC0yIDIuNmMtMjguNCA1MC0zMyA2My4yLTgxLjMgMTAwLTMxLjkgMjQuNC02OS4yIDQwLjItMTA2LjYgNTQuNmwtNi4zLS4zdi0yMS44Yy0xOS42IDEuNi0xOS43LTE0LjYtMzEuNi0yMy0xOC43IDIwLjYtMzEuNiA0MC44LTU4LjkgNTEuMS0xMi43IDQuOC0xOS42IDEwLTI1LjkgMjEuOCAzNC45LTE2LjQgOTEuMi0xMy41IDk4LjgtMTB6TTU1NS41IDBsLS42IDEuMS0uMy45LjYtLjZ6bS01OS4yIDM4Mi4xYy0zMy45LTU2LjktNzUuMy0xMTguNC0xNTAtMTE1LjVsLS4zLTZjLTEuMS0xMy41IDMyLjggMy4yIDM1LjEtMzFsLTE0LjQgNy4yYy0xOS44LTQ1LjctOC42LTU0LjMtNjUuNS01NC4zLTE0LjcgMC0yNi43IDEuNy00MS40IDQuNiAyLjkgMTguNiAyLjIgMzYuNy0xMC45IDUwLjNsMTkuNSA1LjVjLTEuNyAzLjItMi45IDYuMy0yLjkgOS44IDAgMjEgNDIuOCAyLjkgNDIuOCAzMy42IDAgMTguNC0zNi44IDYwLjEtNTQuOSA2MC4xLTggMC01My43LTUwLTUzLjQtNjAuMWwuMy00LjYgNTIuMy0xMS41YzEzLTIuNiAxMi4zLTIyLjctMi45LTIyLjctMy43IDAtNDMuMSA5LjItNDkuNCAxMC42LTItNS4yLTcuNS0xNC4xLTEzLjgtMTQuMS0zLjIgMC02LjMgMy4yLTkuNSA0LTkuMiAyLjYtMzEgMi45LTIxLjUgMjAuMUwxNS45IDI5OC41Yy01LjUgMS4xLTguOSA2LjMtOC45IDExLjggMCA2IDUuNSAxMC45IDExLjUgMTAuOSA4IDAgMTMxLjMtMjguNCAxNDcuNC0zMi4yIDIuNiAzLjIgNC42IDYuMyA3LjggOC42IDIwLjEgMTQuNCA1OS44IDg1LjkgNzYuNCA4NS45IDI0LjEgMCA1OC0yMi40IDcxLjMtNDEuOSAzLjItNC4zIDYuOS03LjUgMTIuNC02LjkuNiAxMy44LTMxLjYgMzQuMi0zMyA0My43LTEuNCAxMC4yLTEgMzUuMi0uMyA0MS4xIDI2LjcgOC4xIDUyLTMuNiA3Ny45LTIuOSA0LjMtMjEgMTAuNi00MS45IDkuOC02My41bC0uMy05LjVjLTEuNC0zNC4yLTEwLjktMzguNS0zNC44LTU4LjYtMS4xLTEuMS0yLjYtMi42LTMuNy00IDIuMi0xLjQgMS4xLTEgNC42LTEuNyA4OC41IDAgNTYuMyAxODMuNiAxMTEuNSAyMjkuOSAzMy4xLTE1IDcyLjUtMjcuOSAxMDMuNS00Ny4yLTI5LTI1LjYtNTIuNi00NS43LTcyLjctNzkuOXptLTE5Ni4yIDQ2LjF2MjcuMmwxMS44LTMuNC0yLjktMjMuOHptLTY4LjctMTUwLjRsMjQuMSA2MS4yIDIxLTEzLjgtMzEuMy01MC45em04NC40IDE1NC45bDIgMTIuNGM5LTEuNSA1OC40LTYuNiA1OC40LTE0LjEgMC0xLjQtLjYtMy4yLS45LTQuNi0yNi44IDAtMzYuOSAzLjgtNTkuNSA2LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlckhhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMjQuOWMtODAuOCA1My42LTg5LjQgOTIuNS05Ni40IDEwNC40LTYuNyAxMi4yLTExLjcgNjAuMy0yMy4zIDgzLjYtMTEuNyAyMy42LTU0LjIgNDIuMi02Ni4xIDUwLTExLjcgNy44LTI4LjMgMzguMS00MS45IDY0LjItMTA4LjEtNC40LTE2Ny40IDM4LjgtMjU5LjIgOTMuNiAyOS40LTkuNyA0My4zLTE2LjcgNDMuMy0xNi43IDk0LjItMzYgMTM5LjMtNjguMyAyODEuMS00OS4yIDEuMSAwIDEuOS42IDIuOC44IDMuOSAyLjIgNS4zIDYuOSAzLjEgMTAuOGwtNTMuOSA5NS44Yy0yLjUgNC43LTcuOCA3LjItMTMuMSA2LjEtMTI2LjgtMjMuOC0yMjYuOSAxNy4zLTMxOC45IDE4LjZDMjQuMSA0ODggMCA0NTMuNCAwIDQ1MS44YzAtMS4xLjYtMS43IDEuNy0xLjcgMCAwIDM4LjMgMCAxMDMuMS0xNS4zQzE3OC40IDI5NC41IDI0NCAyNDUuNCAzMTUuNCAyNDUuNGMwIDAgNzEuNyAwIDkwLjYgNjEuOSAyMi44LTM5LjcgMjguMy00OS4yIDI4LjMtNDkuMiA1LjMtOS40IDM1LTc3LjIgODYuNC0xNDEuNCA1MS41LTY0IDkwLjQtNzkuOSAxMTkuMy05MS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaWVkUGlwZXJQcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDUuMyAxNzQuNmMwIDIxLjEtMTQuMiAzOC4xLTMxLjcgMzguMS03LjEgMC0xMi44LTEuMi0xNy4yLTMuN3YtNjhjNC40LTIuNyAxMC4xLTQuMiAxNy4yLTQuMiAxNy41IDAgMzEuNyAxNi45IDMxLjcgMzcuOHptNTIuNiA2N2MtNy4xIDAtMTIuOCAxLjUtMTcuMiA0LjJ2NjhjNC40IDIuNSAxMC4xIDMuNyAxNy4yIDMuNyAxNy40IDAgMzEuNy0xNi45IDMxLjctMzcuOCAwLTIxLjEtMTQuMy0zOC4xLTMxLjctMzguMXpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0xODUgMjU1LjFjNDEgMCA3NC4yLTM1LjYgNzQuMi03OS42IDAtNDQtMzMuMi03OS42LTc0LjItNzkuNi0xMiAwLTI0LjEgMy4yLTM0LjYgOC44aC00NS43VjMxMWw1MS44LTEwLjF2LTUwLjZjOC42IDMuMSAxOC4xIDQuOCAyOC41IDQuOHptMTU4LjQgMjUuM2MwLTQ0LTMzLjItNzkuNi03My45LTc5LjYtMy4yIDAtNi40LjItOS42LjctMy43IDEyLjUtMTAuMSAyMy44LTE5LjIgMzMuNC0xMy44IDE1LTMyLjIgMjMuOC01MS44IDI0LjhWNDE2bDUxLjgtMTAuMXYtNTAuNmM4LjYgMy4yIDE4LjIgNC43IDI4LjcgNC43IDQwLjggMCA3NC0zNS42IDc0LTc5LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlclNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0MTlMMCA0NzkuMmwuOC0zMjhDLjggODUuMyA1NCAzMiAxMjAgMzJoMzI3LjJjLTkzIDI4LjktMTg5LjkgOTQuMi0yNTMuOSAxNjguNkMxMjIuNyAyODIgODIuNiAzMzggMzIgNDE5TTQ0OCAzMlMzMDUuMiA5OC44IDI2MS42IDE5OS4xYy0yMy4yIDUzLjYtMjguOSAxMTguMS03MSAxNTguNi0yOC45IDI3LjgtNjkuOCAzOC4yLTEwNS4zIDU2LjMtMjMuMiAxMi02Ni40IDQwLjUtODQuOSA2NmgzMjguNGM2NiAwIDExOS4zLTUzLjMgMTE5LjMtMTE5LjItLjEgMC0uMS0zMjguOC0uMS0zMjguOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGllZFBpcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1NS45MywyMy4yQzQyOS4yMywzMCwzODcuNzksNTEuNjksMzQxLjM1LDkwLjY2QTIwNiwyMDYsMCwwLDAsMjQwLDY0QzEyNS4xMyw2NCwzMiwxNTcuMTIsMzIsMjcyczkzLjEzLDIwOCwyMDgsMjA4LDIwOC05My4xMywyMDgtMjA4YTIwNy4yNSwyMDcuMjUsMCwwLDAtNTguNzUtMTQ0LjgxLDE1NS4zNSwxNTUuMzUsMCwwLDAtMTcsMjcuNEExNzYuMTYsMTc2LjE2LDAsMCwxLDQxNy4xLDI3MmMwLDk3LjY2LTc5LjQ0LDE3Ny4xMS0xNzcuMDksMTc3LjExYTE3NS44MSwxNzUuODEsMCwwLDEtODcuNjMtMjMuNGM4Mi45NC0xMDcuMzMsMTUwLjc5LTM3Ljc3LDE4NC4zMS0yMjYuNjUsNS43OS0zMi42MiwyOC05NC4yNiwxMjYuMjMtMTYwLjE4QzQ3MSwzMy40NSw0NjUuMzUsMjAuOCw0NTUuOTMsMjMuMlpNMTI1LDQwNi40QTE3Ni42NiwxNzYuNjYsMCwwLDEsNjIuOSwyNzJDNjIuOSwxNzQuMzQsMTQyLjM1LDk0LjksMjQwLDk0LjlhMTc0LDE3NCwwLDAsMSw3Ni42MywxNy43NUMyNTAuNjQsMTc0Ljc2LDE4OS43NywyNjUuNTIsMTI1LDQwNi40WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaW50ZXJlc3RQIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwNCA2LjVDMTAxLjQgNi41IDAgNzQuOSAwIDE4NS42IDAgMjU2IDM5LjYgMjk2IDYzLjYgMjk2YzkuOSAwIDE1LjYtMjcuNiAxNS42LTM1LjQgMC05LjMtMjMuNy0yOS4xLTIzLjctNjcuOCAwLTgwLjQgNjEuMi0xMzcuNCAxNDAuNC0xMzcuNCA2OC4xIDAgMTE4LjUgMzguNyAxMTguNSAxMDkuOCAwIDUzLjEtMjEuMyAxNTIuNy05MC4zIDE1Mi43LTI0LjkgMC00Ni4yLTE4LTQ2LjItNDMuOCAwLTM3LjggMjYuNC03NC40IDI2LjQtMTEzLjQgMC02Ni4yLTkzLjktNTQuMi05My45IDI1LjggMCAxNi44IDIuMSAzNS40IDkuNiA1MC43LTEzLjggNTkuNC00MiAxNDcuOS00MiAyMDkuMSAwIDE4LjkgMi43IDM3LjUgNC41IDU2LjQgMy40IDMuOCAxLjcgMy40IDYuOSAxLjUgNTAuNC02OSA0OC42LTgyLjUgNzEuNC0xNzIuOCAxMi4zIDIzLjQgNDQuMSAzNiA2OS4zIDM2IDEwNi4yIDAgMTUzLjktMTAzLjUgMTUzLjktMTk2LjhDMzg0IDcxLjMgMjk4LjIgNi41IDIwNCA2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpbnRlcmVzdFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDE1NC40YzkuOC0xNi40IDIyLjQtNDAgMjcuNC01OS4zIDMtMTEuNSAxNS4zLTU4LjQgMTUuMy01OC40IDggMTUuMyAzMS40IDI4LjIgNTYuMyAyOC4yIDc0LjEgMCAxMjcuNC02OC4xIDEyNy40LTE1Mi43IDAtODEuMS02Ni4yLTE0MS44LTE1MS40LTE0MS44LTEwNiAwLTE2Mi4yIDcxLjEtMTYyLjIgMTQ4LjYgMCAzNiAxOS4yIDgwLjggNDkuOCA5NS4xIDQuNyAyLjIgNy4xIDEuMiA4LjItMy4zLjgtMy40IDUtMjAuMSA2LjgtMjcuOC42LTIuNS4zLTQuNi0xLjctNy0xMC4xLTEyLjMtMTguMy0zNC45LTE4LjMtNTYgMC01NC4yIDQxLTEwNi42IDExMC45LTEwNi42IDYwLjMgMCAxMDIuNiA0MS4xIDEwMi42IDk5LjkgMCA2Ni40LTMzLjUgMTEyLjQtNzcuMiAxMTIuNC0yNC4xIDAtNDIuMS0xOS45LTM2LjQtNDQuNCA2LjktMjkuMiAyMC4zLTYwLjcgMjAuMy04MS44IDAtNTMtNzUuNS00NS43LTc1LjUgMjUgMCAyMS43IDcuMyAzNi41IDcuMyAzNi41LTMxLjQgMTMyLjgtMzYuMSAxMzQuNS0yOS42IDE5Mi42bDIuMi44SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpbnRlcmVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OC0yNS42IDAtNTAuMi0zLjktNzMuNC0xMS4xIDEwLjEtMTYuNSAyNS4yLTQzLjUgMzAuOC02NSAzLTExLjYgMTUuNC01OSAxNS40LTU5IDguMSAxNS40IDMxLjcgMjguNSA1Ni44IDI4LjUgNzQuOCAwIDEyOC43LTY4LjggMTI4LjctMTU0LjMgMC04MS45LTY2LjktMTQzLjItMTUyLjktMTQzLjItMTA3IDAtMTYzLjkgNzEuOC0xNjMuOSAxNTAuMSAwIDM2LjQgMTkuNCA4MS43IDUwLjMgOTYuMSA0LjcgMi4yIDcuMiAxLjIgOC4zLTMuMy44LTMuNCA1LTIwLjMgNi45LTI4LjEuNi0yLjUuMy00LjctMS43LTcuMS0xMC4xLTEyLjUtMTguMy0zNS4zLTE4LjMtNTYuNiAwLTU0LjcgNDEuNC0xMDcuNiAxMTItMTA3LjYgNjAuOSAwIDEwMy42IDQxLjUgMTAzLjYgMTAwLjkgMCA2Ny4xLTMzLjkgMTEzLjYtNzggMTEzLjYtMjQuMyAwLTQyLjYtMjAuMS0zNi43LTQ0LjggNy0yOS41IDIwLjUtNjEuMyAyMC41LTgyLjYgMC0xOS0xMC4yLTM0LjktMzEuNC0zNC45LTI0LjkgMC00NC45IDI1LjctNDQuOSA2MC4yIDAgMjIgNy40IDM2LjggNy40IDM2LjhzLTI0LjUgMTAzLjgtMjkgMTIzLjJjLTUgMjEuNC0zIDUxLjYtLjkgNzEuMkM2NS40IDQ1MC45IDAgMzYxLjEgMCAyNTYgMCAxMTkgMTExIDggMjQ4IDhzMjQ4IDExMSAyNDggMjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGF5c3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzAuOSAzNzIuM2MtMTEuMyAxNC4yLTM4LjggMjQuMy0zOC44IDI0LjNMMzI3IDQ3MC4ydi01NC4zbDE1MC45LTUzLjhjMTcuMS02LjEgMTkuOC0xNC44IDUuOC0xOS40LTEzLjktNC42LTM5LjEtMy4zLTU2LjIgMi45TDMyNyAzODEuMXYtNTYuNGMyMy4yLTcuOCA0Ny4xLTEzLjYgNzUuNy0xNi44IDQwLjktNC41IDkwLjkuNiAxMzAuMiAxNS41IDQ0LjIgMTQgNDkuMiAzNC43IDM4IDQ4Ljl6bS0yMjQuNC05Mi41di0xMzljMC0xNi4zLTMtMzEuMy0xOC4zLTM1LjYtMTEuNy0zLjgtMTkgNy4xLTE5IDIzLjR2MzQ3LjlsLTkzLjgtMjkuOFYzMmMzOS45IDcuNCA5OCAyNC45IDEyOS4yIDM1LjRDNDI0LjEgOTQuNyA0NTEgMTI4LjcgNDUxIDIwNS4yYzAgNzQuNS00NiAxMDIuOC0xMDQuNSA3NC42ek00My4yIDQxMC4yYy00NS40LTEyLjgtNTMtMzkuNS0zMi4zLTU0LjggMTkuMS0xNC4yIDUxLjctMjQuOSA1MS43LTI0LjlsMTM0LjUtNDcuOHY1NC41bC05Ni44IDM0LjZjLTE3LjEgNi4xLTE5LjcgMTQuOC01LjggMTkuNCAxMy45IDQuNiAzOS4xIDMuMyA1Ni4yLTIuOWw0Ni40LTE2Ljl2NDguOGMtNTEuNiA5LjMtMTAxLjQgNy4zLTE1My45LTEwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQcm9kdWN0SHVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjYuMyAyMTguOGMwIDIwLjUtMTYuNyAzNy4yLTM3LjIgMzcuMmgtNzAuM3YtNzQuNGg3MC4zYzIwLjUgMCAzNy4yIDE2LjcgMzcuMiAzNy4yek01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6bS0xMjguMS0zNy4yYzAtNDcuOS0zOC45LTg2LjgtODYuOC04Ni44SDE2OS4ydjI0OGg0OS42di03NC40aDcwLjNjNDcuOSAwIDg2LjgtMzguOSA4Ni44LTg2Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVB1c2hlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDMyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcgMTExLjlsLTk4LjUtOSAxNC0zMy40YzEwLjQtMjMuNS0xMC44LTQwLjQtMjguNy0zN0wyMi41IDc2LjljLTE1LjEgMi43LTI2IDE4LjMtMjEuNCAzNi42bDEwNS4xIDM0OC4zYzYuNSAyMS4zIDM2LjcgMjQuMiA0Ny43IDdsMzUuMy04MC44IDIzNS4yLTIzMS4zYzE2LjQtMTYuOCA0LjMtNDIuOS0xNy40LTQ0Ljh6TTI5Ny42IDUzLjZjNS4xLS43IDcuNSAyLjUgNS4yIDcuNEwyODYgMTAwLjkgMTA4LjYgODQuNmwxODktMzF6TTIyLjcgMTA3LjljLTMuMS01LjEgMS0xMCA2LjEtOS4xbDI0OC43IDIyLjctOTYuOSAyMzAuN0wyMi43IDEwNy45ek0xMzYgNDU2LjRjLTIuNiA0LTcuOSAzLjEtOS40LTEuMkw0My41IDE3OS43bDEyNy43IDE5Ny42Yy03IDE1LTM1LjIgNzkuMS0zNS4yIDc5LjF6bTI3Mi44LTMxNC41TDIxMC4xIDMzNy4zbDg5LjctMjEzLjcgMTA2LjQgOS43YzQgMS4xIDUuNyA1LjMgMi42IDguNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHl0aG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOS44IDIwMC41Yy03LjctMzAuOS0yMi4zLTU0LjItNTMuNC01NC4yaC00MC4xdjQ3LjRjMCAzNi44LTMxLjIgNjcuOC02Ni44IDY3LjhIMTcyLjdjLTI5LjIgMC01My40IDI1LTUzLjQgNTQuM3YxMDEuOGMwIDI5IDI1LjIgNDYgNTMuNCA1NC4zIDMzLjggOS45IDY2LjMgMTEuNyAxMDYuOCAwIDI2LjktNy44IDUzLjQtMjMuNSA1My40LTU0LjN2LTQwLjdIMjI2LjJ2LTEzLjZoMTYwLjJjMzEuMSAwIDQyLjYtMjEuNyA1My40LTU0LjIgMTEuMi0zMy41IDEwLjctNjUuNyAwLTEwOC42ek0yODYuMiA0MDRjMTEuMSAwIDIwLjEgOS4xIDIwLjEgMjAuMyAwIDExLjMtOSAyMC40LTIwLjEgMjAuNC0xMSAwLTIwLjEtOS4yLTIwLjEtMjAuNC4xLTExLjMgOS4xLTIwLjMgMjAuMS0yMC4zek0xNjcuOCAyNDguMWgxMDYuOGMyOS43IDAgNTMuNC0yNC41IDUzLjQtNTQuM1Y5MS45YzAtMjktMjQuNC01MC43LTUzLjQtNTUuNi0zNS44LTUuOS03NC43LTUuNi0xMDYuOC4xLTQ1LjIgOC01My40IDI0LjctNTMuNCA1NS42djQwLjdoMTA2Ljl2MTMuNmgtMTQ3Yy0zMS4xIDAtNTguMyAxOC43LTY2LjggNTQuMi05LjggNDAuNy0xMC4yIDY2LjEgMCAxMDguNiA3LjYgMzEuNiAyNS43IDU0LjIgNTYuOCA1NC4ySDEwMXYtNDguOGMwLTM1LjMgMzAuNS02Ni40IDY2LjgtNjYuNHptLTYuNy0xNDIuNmMtMTEuMSAwLTIwLjEtOS4xLTIwLjEtMjAuMy4xLTExLjMgOS0yMC40IDIwLjEtMjAuNCAxMSAwIDIwLjEgOS4yIDIwLjEgMjAuNHMtOSAyMC4zLTIwLjEgMjAuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMzLjc1NCA0MjAuNDQ1Yy0xMS41MjYgMS4zOTMtNDQuODYtNTIuNzQxLTQ0Ljg2LTUyLjc0MSAwIDMxLjM0NS0xNi4xMzYgNzIuMjQ3LTUxLjA1MSAxMDEuNzg2IDE2Ljg0MiA1LjE5MiA1NC44NDMgMTkuMTY3IDQ1LjgwMyAzNC40MjEtNy4zMTYgMTIuMzQzLTEyNS41MSA3Ljg4MS0xNTkuNjMyIDQuMDM3LTM0LjEyMiAzLjg0NC0xNTIuMzE2IDguMzA2LTE1OS42MzItNC4wMzctOS4wNDUtMTUuMjUgMjguOTE4LTI5LjIxNCA0NS43ODMtMzQuNDE1LTM0LjkyLTI5LjUzOS01MS4wNTktNzAuNDQ1LTUxLjA1OS0xMDEuNzkyIDAgMC0zMy4zMzQgNTQuMTM0LTQ0Ljg1OSA1Mi43NDEtNS4zNy0uNjUtMTIuNDI0LTI5LjY0NCA5LjM0Ny05OS43MDQgMTAuMjYxLTMzLjAyNCAyMS45OTUtNjAuNDc4IDQwLjE0NC0xMDUuNzc5QzYwLjY4MyA5OC4wNjMgMTA4Ljk4Mi4wMDYgMjI0IDBjMTEzLjczNy4wMDYgMTYzLjE1NiA5Ni4xMzMgMTYwLjI2NCAyMTQuOTYzIDE4LjExOCA0NS4yMjMgMjkuOTEyIDcyLjg1IDQwLjE0NCAxMDUuNzc4IDIxLjc2OCA3MC4wNiAxNC43MTYgOTkuMDUzIDkuMzQ2IDk5LjcwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVpbnNjYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy42IDQ3NC42aC0xYTE1OC4xIDE1OC4xIDAgMCAxIDAtMzE2LjJjOTQuOSAwIDE2OC4yIDgzLjEgMTU3IDE3Ni42IDQgNS4xIDguMiA5LjYgMTEuMiAxNS4zIDEzLjQtMzAuMyAyMC4zLTYyLjQgMjAuMy05Ny43QzUwMS4xIDExNy41IDM5MS42IDggMjU2LjUgOFMxMiAxMTcuNSAxMiAyNTIuNnMxMDkuNSAyNDQuNiAyNDQuNSAyNDQuNmEyMzcuMzYgMjM3LjM2IDAgMCAwIDcwLjQtMTAuMWMtNS4yLTMuNS04LjktOC4xLTEzLjMtMTIuNXptLS4xLS4xbC40LjF6bTc4LjQtMTY4LjlhOTkuMiA5OS4yIDAgMSAwIDk5LjIgOTkuMiA5OS4xOCA5OS4xOCAwIDAgMC05OS4yLTk5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVF1b3JhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC41IDM4Ni43aC0yOS4zYy0xLjUgMTMuNS0xMC41IDMwLjgtMzMgMzAuOC0yMC41IDAtMzUuMy0xNC4yLTQ5LjUtMzUuOCA0NC4yLTM0LjIgNzQuNy04Ny41IDc0LjctMTUzQzQwMy41IDExMS4yIDMwNi44IDMyIDIwNSAzMiAxMDUuMyAzMiA3LjMgMTExLjcgNy4zIDIyOC43YzAgMTM0LjEgMTMxLjMgMjIxLjYgMjQ5IDE4OUMyNzYgNDUxLjMgMzAyIDQ4MCAzNTEuNSA0ODBjODEuOCAwIDkwLjgtNzUuMyA4OS05My4zek0yOTcgMzI5LjJDMjc3LjUgMzAwIDI1My4zIDI3NyAyMDUuNSAyNzdjLTMwLjUgMC01NC4zIDEwLTY5IDIyLjhsMTIuMiAyNC4zYzYuMi0zIDEzLTQgMTkuOC00IDM1LjUgMCA1My43IDMwLjggNjkuMiA2MS4zLTEwIDMtMjAuNyA0LjItMzIuNyA0LjItNzUgMC0xMDcuNS01My0xMDcuNS0xNTYuN0M5Ny41IDEyNC41IDEzMCA3MSAyMDUgNzFjNzYuMiAwIDEwOC43IDUzLjUgMTA4LjcgMTU3LjcuMSA0MS44LTUuNCA3NS42LTE2LjcgMTAwLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJQcm9qZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1ODEgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU4MSAyMjYuNkM1ODEgMTE5LjEgNDUwLjkgMzIgMjkwLjUgMzJTMCAxMTkuMSAwIDIyNi42QzAgMzIyLjQgMTAzLjMgNDAyIDIzOS40IDQxOC4xVjQ4MGg5OS4xdi02MS41YzI0LjMtMi43IDQ3LjYtNy40IDY5LjQtMTMuOUw0NDggNDgwaDExMmwtNjcuNC0xMTMuN2M1NC41LTM1LjQgODguNC04NC45IDg4LjQtMTM5Ljd6bS00NjYuOCAxNC41YzAtNzMuNSA5OC45LTEzMyAyMjAuOC0xMzNzMjExLjkgNDAuNyAyMTEuOSAxMzNjMCA1MC4xLTI2LjUgODUtNzAuMyAxMDYuNC0yLjQtMS42LTQuNy0yLjktNi40LTMuNy0xMC4yLTUuMi0yNy44LTEwLjUtMjcuOC0xMC41czg2LjYtNi40IDg2LjYtOTIuNy05MC42LTg3LjktOTAuNi04Ny45aC0xOTlWMzYxYy03NC4xLTIxLjUtMTI1LjItNjcuMS0xMjUuMi0xMTkuOXptMjI1LjEgMzguM3YtNTUuNmM1Ny44IDAgODcuOC02LjggODcuOCAyNy4zIDAgMzYuNS0zOC4yIDI4LjMtODcuOCAyOC4zem0tLjkgNzIuNUgzNjVjMTAuOCAwIDE4LjkgMTEuNyAyNCAxOS4yLTE2LjEgMS45LTMzIDIuOC01MC42IDIuOXYtMjIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmFzcGJlcnJ5UGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQwNyA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyIDIzMi41bC0zLjctNi41Yy4xLTQ2LjQtMjEuNC02NS4zLTQ2LjUtNzkuNyA3LjYtMiAxNS40LTMuNiAxNy42LTEzLjIgMTMuMS0zLjMgMTUuOC05LjQgMTcuMS0xNS44IDMuNC0yLjMgMTQuOC04LjcgMTMuNi0xOS43IDYuNC00LjQgMTAtMTAuMSA4LjEtMTguMSA2LjktNy41IDguNy0xMy43IDUuOC0xOS40IDguMy0xMC4zIDQuNi0xNS42IDEuMS0yMC45IDYuMi0xMS4yLjctMjMuMi0xNi42LTIxLjItNi45LTEwLjEtMjEuOS03LjgtMjQuMi03LjgtMi42LTMuMi02LTYtMTYuNS00LjctNi44LTYuMS0xNC40LTUtMjIuMy0yLjEtOS4zLTcuMy0xNS41LTEuNC0yMi42LjhDMjcxLjYuNiAyNjkgNS41IDI2My41IDcuNmMtMTIuMy0yLjYtMTYuMSAzLTIyIDguOWwtNi45LS4xYy0xOC42IDEwLjgtMjcuOCAzMi44LTMxLjEgNDQuMS0zLjMtMTEuMy0xMi41LTMzLjMtMzEuMS00NC4xbC02LjkuMWMtNS45LTUuOS05LjctMTEuNS0yMi04LjktNS42LTItOC4xLTctMTkuNC0zLjQtNC42LTEuNC04LjktNC40LTEzLjktNC4zLTIuNi4xLTUuNSAxLTguNyAzLjUtNy45LTMtMTUuNS00LTIyLjMgMi4xLTEwLjUtMS4zLTE0IDEuNC0xNi41IDQuNy0yLjMgMC0xNy4zLTIuMy0yNC4yIDcuOEMyMS4yIDE2IDE1LjggMjggMjIgMzkuMmMtMy41IDUuNC03LjIgMTAuNyAxLjEgMjAuOS0yLjkgNS43LTEuMSAxMS45IDUuOCAxOS40LTEuOCA4IDEuOCAxMy43IDguMSAxOC4xLTEuMiAxMSAxMC4yIDE3LjQgMTMuNiAxOS43IDEuMyA2LjQgNCAxMi40IDE3LjEgMTUuOCAyLjIgOS41IDEwIDExLjIgMTcuNiAxMy4yLTI1LjEgMTQuNC00Ni42IDMzLjMtNDYuNSA3OS43bC0zLjcgNi41Yy0yOC44IDE3LjItNTQuNyA3Mi43LTE0LjIgMTE3LjcgMi42IDE0LjEgNy4xIDI0LjIgMTEgMzUuNCA1LjkgNDUuMiA0NC41IDY2LjMgNTQuNiA2OC44IDE0LjkgMTEuMiAzMC44IDIxLjggNTIuMiAyOS4yQzE1OSA1MDQuMiAxODEgNTEyIDIwMyA1MTJoMWMyMi4xIDAgNDQtNy44IDY0LjItMjguNCAyMS41LTcuNCAzNy4zLTE4IDUyLjItMjkuMiAxMC4yLTIuNSA0OC43LTIzLjYgNTQuNi02OC44IDMuOS0xMS4yIDguNC0yMS4zIDExLTM1LjQgNDAuNi00NS4xIDE0LjctMTAwLjUtMTQtMTE3Ljd6bS0yMi4yLThjLTEuNSAxOC43LTk4LjktNjUuMS04Mi4xLTY3LjkgNDUuNy03LjUgODMuNiAxOS4yIDgyLjEgNjcuOXptLTQzIDkzLjFjLTI0LjUgMTUuOC01OS44IDUuNi03OC44LTIyLjhzLTE0LjYtNjQuMiA5LjktODBjMjQuNS0xNS44IDU5LjgtNS42IDc4LjggMjIuOHMxNC42IDY0LjItOS45IDgwek0yMzguOSAyOS4zYy44IDQuMiAxLjggNi44IDIuOSA3LjYgNS40LTUuOCA5LjgtMTEuNyAxNi44LTE3LjMgMCAzLjMtMS43IDYuOCAyLjUgOS40IDMuNy01IDguOC05LjUgMTUuNS0xMy4zLTMuMiA1LjYtLjYgNy4zIDEuMiA5LjYgNS4xLTQuNCAxMC04LjggMTkuNC0xMi4zLTIuNiAzLjEtNi4yIDYuMi0yLjQgOS44IDUuMy0zLjMgMTAuNi02LjYgMjMuMS04LjktMi44IDMuMS04LjcgNi4zLTUuMSA5LjQgNi42LTIuNSAxNC00LjQgMjIuMS01LjQtMy45IDMuMi03LjEgNi4zLTMuOSA4LjggNy4xLTIuMiAxNi45LTUuMSAyNi40LTIuNmwtNiA2LjFjLS43LjggMTQuMS42IDIzLjkuOC0zLjYgNS03LjIgOS43LTkuMyAxOC4yIDEgMSA1LjguNCAxMC40IDAtNC43IDkuOS0xMi44IDEyLjMtMTQuNyAxNi42IDIuOSAyLjIgNi44IDEuNiAxMS4yLjEtMy40IDYuOS0xMC40IDExLjctMTYgMTcuMyAxLjQgMSAzLjkgMS42IDkuNy45LTUuMiA1LjUtMTEuNCAxMC41LTE4LjggMTUgMS4zIDEuNSA1LjggMS41IDEwIDEuNi02LjcgNi41LTE1LjMgOS45LTIzLjQgMTQuMiA0IDIuNyA2LjkgMi4xIDEwIDIuMS01LjcgNC43LTE1LjQgNy4xLTI0LjQgMTAgMS43IDIuNyAzLjQgMy40IDcuMSA0LjEtOS41IDUuMy0yMy4yIDIuOS0yNyA1LjYuOSAyLjcgMy42IDQuNCA2LjcgNS44LTE1LjQuOS01Ny4zLS42LTY1LjQtMzIuMyAxNS43LTE3LjMgNDQuNC0zNy41IDkzLjctNjIuNi0zOC40IDEyLjgtNzMgMzAtMTAyIDUzLjUtMzQuMy0xNS45LTEwLjgtNTUuOSA1LjgtNzEuOHptLTM0LjQgMTE0LjZjMjQuMi0uMyA1NC4xIDE3LjggNTQgMzQuNy0uMSAxNS0yMSAyNy4xLTUzLjggMjYuOS0zMi4xLS40LTUzLjctMTUuMi01My42LTI5LjggMC0xMS45IDI2LjItMzIuNSA1My40LTMxLjh6bS0xMjMtMTIuOGMzLjctLjcgNS40LTEuNSA3LjEtNC4xLTktMi44LTE4LjctNS4zLTI0LjQtMTAgMy4xIDAgNiAuNyAxMC0yLjEtOC4xLTQuMy0xNi43LTcuNy0yMy40LTE0LjIgNC4yLS4xIDguNyAwIDEwLTEuNi03LjQtNC41LTEzLjYtOS41LTE4LjgtMTUgNS44LjcgOC4zLjEgOS43LS45LTUuNi01LjYtMTIuNy0xMC40LTE2LTE3LjMgNC4zIDEuNSA4LjMgMiAxMS4yLS4xLTEuOS00LjItMTAtNi43LTE0LjctMTYuNiA0LjYuNCA5LjQgMSAxMC40IDAtMi4xLTguNS01LjgtMTMuMy05LjMtMTguMiA5LjgtLjEgMjQuNiAwIDIzLjktLjhsLTYtNi4xYzkuNS0yLjUgMTkuMy40IDI2LjQgMi42IDMuMi0yLjUtLjEtNS42LTMuOS04LjggOC4xIDEuMSAxNS40IDIuOSAyMi4xIDUuNCAzLjUtMy4xLTIuMy02LjMtNS4xLTkuNCAxMi41IDIuMyAxNy44IDUuNiAyMy4xIDguOSAzLjgtMy42LjItNi43LTIuNC05LjggOS40IDMuNCAxNC4zIDcuOSAxOS40IDEyLjMgMS43LTIuMyA0LjQtNCAxLjItOS42IDYuNyAzLjggMTEuOCA4LjMgMTUuNSAxMy4zIDQuMS0yLjYgMi41LTYuMiAyLjUtOS40IDcgNS42IDExLjQgMTEuNSAxNi44IDE3LjMgMS4xLS44IDItMy40IDIuOS03LjYgMTYuNiAxNS45IDQwLjEgNTUuOSA2IDcxLjgtMjktMjMuNS02My42LTQwLjctMTAyLTUzLjUgNDkuMyAyNSA3OCA0NS4zIDkzLjcgNjIuNi04IDMxLjgtNTAgMzMuMi02NS40IDMyLjMgMy4xLTEuNCA1LjgtMy4yIDYuNy01LjgtNC0yLjgtMTcuNi0uNC0yNy4yLTUuNnptNjAuMSAyNC4xYzE2LjggMi44LTgwLjYgODYuNS04Mi4xIDY3LjktMS41LTQ4LjcgMzYuNS03NS41IDgyLjEtNjcuOXpNMzguMiAzNDJjLTIzLjctMTguOC0zMS4zLTczLjcgMTIuNi05OC4zIDI2LjUtNyA5IDEwNy44LTEyLjYgOTguM3ptOTEgOTguMmMtMTMuMyA3LjktNDUuOCA0LjctNjguOC0yNy45LTE1LjUtMjcuNC0xMy41LTU1LjItMi42LTYzLjQgMTYuMy05LjggNDEuNSAzLjQgNjAuOSAyNS42IDE2LjkgMjAgMjQuNiA1NS4zIDEwLjUgNjUuN3ptLTI2LjQtMTE5LjdjLTI0LjUtMTUuOC0yOC45LTUxLjYtOS45LTgwczU0LjMtMzguNiA3OC44LTIyLjggMjguOSA1MS42IDkuOSA4MGMtMTkuMSAyOC40LTU0LjQgMzguNi03OC44IDIyLjh6TTIwNSA0OTZjLTI5LjQgMS4yLTU4LjItMjMuNy01Ny44LTMyLjMtLjQtMTIuNyAzNS44LTIyLjYgNTkuMy0yMiAyMy43LTEgNTUuNiA3LjUgNTUuNyAxOC45LjUgMTEtMjguOCAzNS45LTU3LjIgMzUuNHptNTguOS0xMjQuOWMuMiAyOS43LTI2LjIgNTMuOC01OC44IDU0LTMyLjYuMi01OS4yLTIzLjgtNTkuNC01My40di0uNmMtLjItMjkuNyAyNi4yLTUzLjggNTguOC01NCAzMi42LS4yIDU5LjIgMjMuOCA1OS40IDUzLjR2LjZ6bTgyLjIgNDIuN2MtMjUuMyAzNC42LTU5LjYgMzUuOS03Mi4zIDI2LjMtMTMuMy0xMi40LTMuMi01MC45IDE1LjEtNzIgMjAuOS0yMy4zIDQzLjMtMzguNSA1OC45LTI2LjYgMTAuNSAxMC4zIDE2LjcgNDkuMS0xLjcgNzIuM3ptMjIuOS03My4yYy0yMS41IDkuNC0zOS0xMDUuMy0xMi42LTk4LjMgNDMuOSAyNC43IDM2LjMgNzkuNiAxMi42IDk4LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJhdmVscnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk4LjI1MiwyMzQuMjIzYy0xLjIwOC0xMC4zNC0xLjctMjAuODI2LTMuNzQ2LTMxYTMxMC4zMDYsMzEwLjMwNiwwLDAsMC05LjYyMi0zNi42LDE4NC4wNjgsMTg0LjA2OCwwLDAsMC0zMC44NzQtNTcuNSwyNTEuMTU0LDI1MS4xNTQsMCwwLDAtMTguODE4LTIxLjY4OSwyMzcuMzYyLDIzNy4zNjIsMCwwLDAtNDcuMTEzLTM2LjExNkEyNDAuOCwyNDAuOCwwLDAsMCwzMzEuMzU2LDI2LjY1Yy0xMS4wMTgtMy4xLTIyLjI3Mi01LjQzMS0zMy41MTUtNy42MTUtNi43OC0xLjMxNC0xMy43NDktMS42NjctMjAuNjI3LTIuNDgyLS4zMTYtLjAzNi0uNi0uMzU4LS45LS41NTNxLTE2LjE0My4wMDktMzIuMjg4LjAwNmMtMi40MS4zODktNC44MDguOTI1LTcuMjM2LDEuMTVhMTc5LjMzMSwxNzkuMzMxLDAsMCwwLTM0LjI1Niw3LjEsMjIxLjUsMjIxLjUsMCwwLDAtMzkuNzY4LDE2LjM1NSwyODEuMzg1LDI4MS4zODUsMCwwLDAtMzguMDgsMjQuMTU4Yy02LjE2Nyw0LjYxLTEyLjI2OCw5LjM2LTE3Ljk3NCwxNC41MThDOTYuNTM5LDg4LjQ5NCw4Ni4zNCw5Ny43Miw3Ni43ODUsMTA3LjU1NWEyNDMuODc4LDI0My44NzgsMCwwLDAtMzMuNjQ4LDQzLjk1LDIwNi40ODgsMjA2LjQ4OCwwLDAsMC0yMC40OTQsNDQuNiwxOTguMiwxOTguMiwwLDAsMC03LjY5MSwzNC43NTlBMjAxLjEzLDIwMS4xMywwLDAsMCwxMy40LDI2Ni4zODVhMjk5LjcxNiwyOTkuNzE2LDAsMCwwLDQuNDI1LDQwLjI0LDIyNi44NjUsMjI2Ljg2NSwwLDAsMCwxNi43Myw1My4zLDIxMC41NDMsMjEwLjU0MywwLDAsMCwyNCwzOS41MjgsMjEzLjU4OSwyMTMuNTg5LDAsMCwwLDI2LjM1OCwyOC40MTZBMjUxLjMxMywyNTEuMzEzLDAsMCwwLDEyNi43LDQ1OC40NTVhMjg3LjgzMSwyODcuODMxLDAsMCwwLDU1LjksMjUuMjc3LDI2OS41LDI2OS41LDAsMCwwLDQwLjY0MSw5LjgzNWM2LjA3MSwxLjAxLDEyLjI3NSwxLjI1MywxOC40MTIsMS44NzNhNC4xNDksNC4xNDksMCwwLDEsMS4xOS41NmgzMi4yODljMi41MDctLjM4OSw1LS45MzcsNy41MjctMS4xNDMsMTYuMzM2LTEuMzMyLDMyLjEwNy01LjMzNSw0Ny40ODktMTAuNzE3QTIxOS45OTIsMjE5Ljk5MiwwLDAsMCwzNzkuMSw0NjAuMzIyYzkuNzQ5LTYuNDQ3LDE5LjM5NS0xMy4wNzcsMjguNzM3LTIwLjEsNS43ODUtNC4zNDgsMTAuOTg4LTkuNSwxNi4zLTE0LjQ1NywzLjk2NC0zLjcsNy43NjQtNy41NzgsMTEuNTEtMTEuNWEyMzIuMTYyLDIzMi4xNjIsMCwwLDAsMzEuNDI3LTQxLjYzOWM5LjU0Mi0xNi4wNDUsMTcuMzU1LTMyLjkwNSwyMi4zLTUwLjkyNiwyLjg1OS0xMC40MTMsNC45NDctMjEuMDQ1LDcuMDE3LTMxLjY1MiwxLjAzMi01LjI3OSwxLjI1MS0xMC43MjMsMS44Ny0xNi4wODcuMDM2LS4zMTcuMzU4LS42LjU1Mi0uOVYyMzYuMDA1QTkuNzU3LDkuNzU3LDAsMCwxLDQ5OC4yNTIsMjM0LjIyM1ptLTE2MS4xMTctMS4xNXMtMTYuNTcyLTIuOTgtMjguNDctMi45OGMtMjcuMiwwLTMzLjU3LDE0LjktMzMuNTcsMzcuMDRWMzYwLjhIMjAxLjU4MlYxNzAuMDYySDI3NS4xdjMxLjkzMWM4LjkyNC0yNi44MjIsMjYuNzcxLTM2LjE4OSw2Mi4wNC0zNi4xODlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlYWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxOC4yIDE3Ny4yYy01LjQtMS44LTEwLjgtMy41LTE2LjItNS4xLjktMy43IDEuNy03LjQgMi41LTExLjEgMTIuMy01OS42IDQuMi0xMDcuNS0yMy4xLTEyMy4zLTI2LjMtMTUuMS02OS4yLjYtMTEyLjYgMzguNC00LjMgMy43LTguNSA3LjYtMTIuNSAxMS41LTIuNy0yLjYtNS41LTUuMi04LjMtNy43LTQ1LjUtNDAuNC05MS4xLTU3LjQtMTE4LjQtNDEuNS0yNi4yIDE1LjItMzQgNjAuMy0yMyAxMTYuNyAxLjEgNS42IDIuMyAxMS4xIDMuNyAxNi43LTYuNCAxLjgtMTIuNyAzLjgtMTguNiA1LjlDMzguMyAxOTYuMiAwIDIyNS40IDAgMjU1LjZjMCAzMS4yIDQwLjggNjIuNSA5Ni4zIDgxLjUgNC41IDEuNSA5IDMgMTMuNiA0LjMtMS41IDYtMi44IDExLjktNCAxOC0xMC41IDU1LjUtMi4zIDk5LjUgMjMuOSAxMTQuNiAyNyAxNS42IDcyLjQtLjQgMTE2LjYtMzkuMSAzLjUtMy4xIDctNi4zIDEwLjUtOS43IDQuNCA0LjMgOSA4LjQgMTMuNiAxMi40IDQyLjggMzYuOCA4NS4xIDUxLjcgMTExLjIgMzYuNiAyNy0xNS42IDM1LjgtNjIuOSAyNC40LTEyMC41LS45LTQuNC0xLjktOC45LTMtMTMuNSAzLjItLjkgNi4zLTEuOSA5LjQtMi45IDU3LjctMTkuMSA5OS41LTUwIDk5LjUtODEuNyAwLTMwLjMtMzkuNC01OS43LTkzLjgtNzguNHpNMjgyLjkgOTIuM2MzNy4yLTMyLjQgNzEuOS00NS4xIDg3LjctMzYgMTYuOSA5LjcgMjMuNCA0OC45IDEyLjggMTAwLjQtLjcgMy40LTEuNCA2LjctMi4zIDEwLTIyLjItNS00NC43LTguNi02Ny4zLTEwLjYtMTMtMTguNi0yNy4yLTM2LjQtNDIuNi01My4xIDMuOS0zLjcgNy43LTcuMiAxMS43LTEwLjd6TTE2Ny4yIDMwNy41YzUuMSA4LjcgMTAuMyAxNy40IDE1LjggMjUuOS0xNS42LTEuNy0zMS4xLTQuMi00Ni40LTcuNSA0LjQtMTQuNCA5LjktMjkuMyAxNi4zLTQ0LjUgNC42IDguOCA5LjMgMTcuNSAxNC4zIDI2LjF6bS0zMC4zLTEyMC4zYzE0LjQtMy4yIDI5LjctNS44IDQ1LjYtNy44LTUuMyA4LjMtMTAuNSAxNi44LTE1LjQgMjUuNC00LjkgOC41LTkuNyAxNy4yLTE0LjIgMjYtNi4zLTE0LjktMTEuNi0yOS41LTE2LTQzLjZ6bTI3LjQgNjguOWM2LjYtMTMuOCAxMy44LTI3LjMgMjEuNC00MC42czE1LjgtMjYuMiAyNC40LTM4LjljMTUtMS4xIDMwLjMtMS43IDQ1LjktMS43czMxIC42IDQ1LjkgMS43YzguNSAxMi42IDE2LjYgMjUuNSAyNC4zIDM4LjdzMTQuOSAyNi43IDIxLjcgNDAuNGMtNi43IDEzLjgtMTMuOSAyNy40LTIxLjYgNDAuOC03LjYgMTMuMy0xNS43IDI2LjItMjQuMiAzOS0xNC45IDEuMS0zMC40IDEuNi00Ni4xIDEuNnMtMzAuOS0uNS00NS42LTEuNGMtOC43LTEyLjctMTYuOS0yNS43LTI0LjYtMzlzLTE0LjgtMjYuOC0yMS41LTQwLjZ6bTE4MC42IDUxLjJjNS4xLTguOCA5LjktMTcuNyAxNC42LTI2LjcgNi40IDE0LjUgMTIgMjkuMiAxNi45IDQ0LjMtMTUuNSAzLjUtMzEuMiA2LjItNDcgOCA1LjQtOC40IDEwLjUtMTcgMTUuNS0yNS42em0xNC40LTc2LjVjLTQuNy04LjgtOS41LTE3LjYtMTQuNS0yNi4yLTQuOS04LjUtMTAtMTYuOS0xNS4zLTI1LjIgMTYuMSAyIDMxLjUgNC43IDQ1LjkgOC00LjYgMTQuOC0xMCAyOS4yLTE2LjEgNDMuNHpNMjU2LjIgMTE4LjNjMTAuNSAxMS40IDIwLjQgMjMuNCAyOS42IDM1LjgtMTkuOC0uOS0zOS43LS45LTU5LjUgMCA5LjgtMTIuOSAxOS45LTI0LjkgMjkuOS0zNS44ek0xNDAuMiA1N2MxNi44LTkuOCA1NC4xIDQuMiA5My40IDM5IDIuNSAyLjIgNSA0LjYgNy42IDctMTUuNSAxNi43LTI5LjggMzQuNS00Mi45IDUzLjEtMjIuNiAyLTQ1IDUuNS02Ny4yIDEwLjQtMS4zLTUuMS0yLjQtMTAuMy0zLjUtMTUuNS05LjQtNDguNC0zLjItODQuOSAxMi42LTk0em0tMjQuNSAyNjMuNmMtNC4yLTEuMi04LjMtMi41LTEyLjQtMy45LTIxLjMtNi43LTQ1LjUtMTcuMy02My0zMS4yLTEwLjEtNy0xNi45LTE3LjgtMTguOC0yOS45IDAtMTguMyAzMS42LTQxLjcgNzcuMi01Ny42IDUuNy0yIDExLjUtMy44IDE3LjMtNS41IDYuOCAyMS43IDE1IDQzIDI0LjUgNjMuNi05LjYgMjAuOS0xNy45IDQyLjUtMjQuOCA2NC41em0xMTYuNiA5OGMtMTYuNSAxNS4xLTM1LjYgMjcuMS01Ni40IDM1LjMtMTEuMSA1LjMtMjMuOSA1LjgtMzUuMyAxLjMtMTUuOS05LjItMjIuNS00NC41LTEzLjUtOTIgMS4xLTUuNiAyLjMtMTEuMiAzLjctMTYuNyAyMi40IDQuOCA0NSA4LjEgNjcuOSA5LjggMTMuMiAxOC43IDI3LjcgMzYuNiA0My4yIDUzLjQtMy4yIDMuMS02LjQgNi4xLTkuNiA4Ljl6bTI0LjUtMjQuM2MtMTAuMi0xMS0yMC40LTIzLjItMzAuMy0zNi4zIDkuNi40IDE5LjUuNiAyOS41LjYgMTAuMyAwIDIwLjQtLjIgMzAuNC0uNy05LjIgMTIuNy0xOS4xIDI0LjgtMjkuNiAzNi40em0xMzAuNyAzMGMtLjkgMTIuMi02LjkgMjMuNi0xNi41IDMxLjMtMTUuOSA5LjItNDkuOC0yLjgtODYuNC0zNC4yLTQuMi0zLjYtOC40LTcuNS0xMi43LTExLjUgMTUuMy0xNi45IDI5LjQtMzQuOCA0Mi4yLTUzLjYgMjIuOS0xLjkgNDUuNy01LjQgNjguMi0xMC41IDEgNC4xIDEuOSA4LjIgMi43IDEyLjIgNC45IDIxLjYgNS43IDQ0LjEgMi41IDY2LjN6bTE4LjItMTA3LjVjLTIuOC45LTUuNiAxLjgtOC41IDIuNi03LTIxLjgtMTUuNi00My4xLTI1LjUtNjMuOCA5LjYtMjAuNCAxNy43LTQxLjQgMjQuNS02Mi45IDUuMiAxLjUgMTAuMiAzLjEgMTUgNC43IDQ2LjYgMTYgNzkuMyAzOS44IDc5LjMgNTggMCAxOS42LTM0LjkgNDQuOS04NC44IDYxLjR6bS0xNDkuNy0xNWMyNS4zIDAgNDUuOC0yMC41IDQ1LjgtNDUuOHMtMjAuNS00NS44LTQ1LjgtNDUuOGMtMjUuMyAwLTQ1LjggMjAuNS00NS44IDQ1LjhzMjAuNSA0NS44IDQ1LjggNDUuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVhY3RldXJvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjUwLjYgMjExLjc0bDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjMtNy4xLS4xLTIuMy02LjgtMi4zIDYuOC03LjIuMSA1LjcgNC4zem02My43IDBsNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuMy03LjItLjEtMi4zLTYuOC0yLjMgNi44LTcuMi4xIDUuNyA0LjN6bS05MS4zIDUwLjVoLTMuNGMtNC44IDAtMy44IDQtMy44IDEyLjEgMCA0LjctMi4zIDYuMS01LjggNi4xcy01LjgtMS40LTUuOC02LjF2LTM2LjZjMC00LjcgMi4zLTYuMSA1LjgtNi4xczUuOCAxLjQgNS44IDYuMWMwIDcuMi0uNyAxMC41IDMuOCAxMC41aDMuNGM0LjctLjEgMy44LTMuOSAzLjgtMTIuMyAwLTkuOS02LjctMTQuMS0xNi44LTE0LjFoLS4yYy0xMC4xIDAtMTYuOCA0LjItMTYuOCAxNC4xVjI3NmMwIDEwLjQgNi43IDE0LjEgMTYuOCAxNC4xaC4yYzEwLjEgMCAxNi44LTMuOCAxNi44LTE0LjEgMC05Ljg2IDEuMS0xMy43Ni0zLjgtMTMuNzZ6bS04MC43IDE3LjRoLTE0Ljd2LTE5LjNIMTM5YzIuNSAwIDMuOC0xLjMgMy44LTMuOHYtMi4xYzAtMi41LTEuMy0zLjgtMy44LTMuOGgtMTEuNHYtMTguM0gxNDJjMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44aC0yMS43Yy0yLjQtLjEtMy43IDEuMy0zLjcgMy44djU5LjFjMCAyLjUgMS4zIDMuOCAzLjggMy44aDIxLjljMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44em0tNDItMTguNWM0LjYtMiA3LjMtNiA3LjMtMTIuNHYtMTEuOWMwLTEwLjEtNi43LTE0LjEtMTYuOC0xNC4xSDc3LjRjLTIuNSAwLTMuOCAxLjMtMy44IDMuOHY1OS4xYzAgMi41IDEuMyAzLjggMy44IDMuOGgzLjRjMi41IDAgMy44LTEuMyAzLjgtMy44di0yMi45aDUuNmw3LjQgMjMuNWE0LjEgNC4xIDAgMCAwIDQuMyAzLjJoMy4zYzIuOCAwIDQtMS44IDMuMi00LjR6bS0zLjgtMTRjMCA0LjgtMi41IDYuMS02LjEgNi4xaC01Ljh2LTIwLjloNS44YzMuNiAwIDYuMSAxLjMgNi4xIDYuMXpNMTc2IDIyNmEzLjgyIDMuODIgMCAwIDAtNC4yLTMuNGgtNi45YTMuNjggMy42OCAwIDAgMC00IDMuNGwtMTEgNTkuMmMtLjUgMi43LjkgNC4xIDMuNCA0LjFoM2EzLjc0IDMuNzQgMCAwIDAgNC4xLTMuNWwxLjgtMTEuM2gxMi4ybDEuOCAxMS4zYTMuNzQgMy43NCAwIDAgMCA0LjEgMy41aDMuNWMyLjYgMCAzLjktMS40IDMuNC00LjF6bS0xMi4zIDM5LjNsNC43LTI5LjcgNC43IDI5Ljd6bTg5LjMgMjAuMnYtNTMuMmg3LjVjMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44aC0yNS44Yy0yLjUgMC0zLjggMS4zLTMuOCAzLjh2Mi4xYzAgMi41IDEuMyAzLjggMy44IDMuOGg3LjN2NTMuMmMwIDIuNSAxLjMgMy44IDMuOCAzLjhoMy40YzIuNS4wNCAzLjgtMS4zIDMuOC0zLjc2em0yNDgtLjhoLTE5LjRWMjU4aDE2LjFhMS44OSAxLjg5IDAgMCAwIDItMnYtLjhhMS44OSAxLjg5IDAgMCAwLTItMmgtMTYuMXYtMjUuOGgxOS4xYTEuODkgMS44OSAwIDAgMCAyLTJ2LS44YTEuNzcgMS43NyAwIDAgMC0yLTEuOWgtMjIuMmExLjYyIDEuNjIgMCAwIDAtMiAxLjh2NjNhMS44MSAxLjgxIDAgMCAwIDIgMS45SDUwMWExLjgxIDEuODEgMCAwIDAgMi0xLjl2LS44YTEuODQgMS44NCAwIDAgMC0yLTEuOTZ6bS05My4xLTYyLjloLS44Yy0xMC4xIDAtMTUuMyA0LjctMTUuMyAxNC4xVjI3NmMwIDkuMyA1LjIgMTQuMSAxNS4zIDE0LjFoLjhjMTAuMSAwIDE1LjMtNC44IDE1LjMtMTQuMXYtNDAuMWMwLTkuMzYtNS4yLTE0LjA2LTE1LjMtMTQuMDZ6bTEwLjIgNTIuNGMtLjEgOC0zIDExLjEtMTAuNSAxMS4xcy0xMC41LTMuMS0xMC41LTExLjF2LTM2LjZjMC03LjkgMy0xMS4xIDEwLjUtMTEuMXMxMC41IDMuMiAxMC41IDExLjF6bS00Ni41LTE0LjVjNi4xLTEuNiA5LjItNi4xIDkuMi0xMy4zdi05LjdjMC05LjQtNS4yLTE0LjEtMTUuMy0xNC4xaC0xMy43YTEuODEgMS44MSAwIDAgMC0yIDEuOXY2M2ExLjgxIDEuODEgMCAwIDAgMiAxLjloMS4yYTEuNzQgMS43NCAwIDAgMCAxLjktMS45di0yNi45aDExLjZsMTAuNCAyNy4yYTIuMzIgMi4zMiAwIDAgMCAyLjMgMS41aDEuNWMxLjQgMCAyLTEgMS41LTIuM3ptLTYuNC0zLjlIMzU1di0yOC41aDEwLjJjNy41IDAgMTAuNSAzLjEgMTAuNSAxMS4xdjYuNGMwIDcuODQtMyAxMS4wNC0xMC41IDExLjA0em04NS45LTMzLjFoLTEzLjdhMS42MiAxLjYyIDAgMCAwLTIgMS44djYzYTEuODEgMS44MSAwIDAgMCAyIDEuOWgxLjJhMS43NCAxLjc0IDAgMCAwIDEuOS0xLjl2LTI2LjFoMTAuNmMxMC4xIDAgMTUuMy00LjggMTUuMy0xNC4xdi0xMC41YzAtOS40LTUuMi0xNC4xLTE1LjMtMTQuMXptMTAuMiAyMi44YzAgNy45LTMgMTEuMS0xMC41IDExLjFoLTEwLjJ2LTI5LjJoMTAuMmM3LjUtLjEgMTAuNSAzLjEgMTAuNSAxMXpNMjU5LjUgMzA4bC0yLjMtNi44LTIuMyA2LjgtNy4xLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjN6bTIyNy42LTEzNi4xYTM2NC40MiAzNjQuNDIgMCAwIDAtMzUuNi0xMS4zYzE5LjYtNzggMTEuNi0xMzQuNy0yMi4zLTE1My45QzM5NC43LTEyLjY2IDM0My4zIDExIDI5MSA2MS45NHE1LjEgNC45NSAxMC4yIDEwLjJjODIuNS04MCAxMTkuNi01My41IDEyMC45LTUyLjggMjIuNCAxMi43IDM2IDU1LjggMTUuNSAxMzcuOGE1ODcuODMgNTg3LjgzIDAgMCAwLTg0LjYtMTNDMjgxLjEgNDMuNjQgMjEyLjQgMiAxNzAuOCAyIDE0MCAyIDEyNyAyMyAxMjMuMiAyOS43NGMtMTguMSAzMi0xMy4zIDg0LjIuMSAxMzMuOC03MC41IDIwLjMtMTIwLjcgNTQuMS0xMjAuMyA5NSAuNSA1OS42IDEwMy4yIDg3LjggMTIyLjEgOTIuOC0yMC41IDgxLjktMTAuMSAxMzUuNiAyMi4zIDE1My45IDI4IDE1LjggNzUuMSA2IDEzOC4yLTU1LjJxLTUuMS00Ljk1LTEwLjItMTAuMmMtODIuNSA4MC0xMTkuNyA1My41LTEyMC45IDUyLjgtMjIuMy0xMi42LTM2LTU1LjYtMTUuNS0xMzcuOSAxMi40IDIuOSA0MS44IDkuNSA4NC42IDEzIDcxLjkgMTAwLjQgMTQwLjYgMTQyIDE4Mi4xIDE0MiAzMC44IDAgNDMuOC0yMSA0Ny42LTI3LjcgMTgtMzEuOSAxMy4zLTg0LjEtLjEtMTMzLjggMTUyLjMtNDMuOCAxNTYuMi0xMzAuMiAzMy45LTE3Ni4zek0xMzUuOSAzNi44NGMyLjktNS4xIDExLjktMjAuMyAzNC45LTIwLjMgMzYuOCAwIDk4LjggMzkuNiAxNjMuMyAxMjYuMmE3MTQgNzE0IDAgMCAwLTkzLjkuOSA1NDcuNzYgNTQ3Ljc2IDAgMCAxIDQyLjItNTIuNFEyNzcuMyA4NiAyNzIuMiA4MWE1OTguMjUgNTk4LjI1IDAgMCAwLTUwLjcgNjQuMiA1NjkuNjkgNTY5LjY5IDAgMCAwLTg0LjQgMTQuNmMtLjItMS40LTI0LjMtODIuMi0xLjItMTIzem0zMDQuOCA0MzguM2MtMi45IDUuMS0xMS44IDIwLjMtMzQuOSAyMC4zLTM2LjcgMC05OC43LTM5LjQtMTYzLjMtMTI2LjJhNjk1LjM4IDY5NS4zOCAwIDAgMCA5My45LS45IDU0Ny43NiA1NDcuNzYgMCAwIDEtNDIuMiA1Mi40cTUuMSA1LjI1IDEwLjIgMTAuMmE1ODguNDcgNTg4LjQ3IDAgMCAwIDUwLjctNjQuMmM0Ny4zLTQuNyA4MC4zLTEzLjUgODQuNC0xNC42IDIyLjcgODQuNCA0LjUgMTE3IDEuMiAxMjN6bTkuMS0xMzguNmMtMy42LTExLjktNy43LTI0LjEtMTIuNC0zNi40YTEyLjY3IDEyLjY3IDAgMCAxLTEwLjctNS43bC0uMS4xYTE5LjYxIDE5LjYxIDAgMCAxLTUuNCAzLjZjNS43IDE0LjMgMTAuNiAyOC40IDE0LjcgNDIuMmE1MzUuMyA1MzUuMyAwIDAgMS03MiAxM2MzLjUtNS4zIDE3LjItMjYuMiAzMi4yLTU0LjJhMjQuNiAyNC42IDAgMCAxLTYtMy4yYy0xLjEgMS4yLTMuNiA0LjItMTAuOSA0LjItNi4yIDExLjItMTcuNCAzMC45LTMzLjkgNTUuMmE3MTEuOTEgNzExLjkxIDAgMCAxLTExMi40IDFjLTcuOS0xMS4yLTIxLjUtMzEuMS0zNi44LTU3LjhhMjEgMjEgMCAwIDEtMy0xLjVjLTEuOSAxLjYtMy45IDMuMi0xMi42IDMuMiA2LjMgMTEuMiAxNy41IDMwLjcgMzMuOCA1NC42YTU0OC44MSA1NDguODEgMCAwIDEtNzIuMi0xMS43cTUuODUtMjEgMTQuMS00Mi45Yy0zLjIgMC01LjQuMi04LjQtMWExNy41OCAxNy41OCAwIDAgMS02LjkgMWMtNC45IDEzLjQtOS4xIDI2LjUtMTIuNyAzOS40Qy0zMS43IDI5Ny0xMi4xIDIxNiAxMjYuNyAxNzUuNjRjMy42IDExLjkgNy43IDI0LjEgMTIuNCAzNi40IDEwLjQgMCAxMi45IDMuNCAxNC40IDUuM2ExMiAxMiAwIDAgMSAyLjMtMi4yYy01LjgtMTQuNy0xMC45LTI5LjItMTUuMi00My4zIDctMS44IDMyLjQtOC40IDcyLTEzLTE1LjkgMjQuMy0yNi43IDQzLjktMzIuOCA1NS4zYTE0LjIyIDE0LjIyIDAgMCAxIDYuNCA4IDIzLjQyIDIzLjQyIDAgMCAxIDEwLjItOC40YzYuNS0xMS43IDE3LjktMzEuOSAzNC44LTU2LjlhNzExLjcyIDcxMS43MiAwIDAgMSAxMTIuNC0xYzMxLjUgNDQuNiAyOC45IDQ4LjEgNDIuNSA2NC41YTIxLjQyIDIxLjQyIDAgMCAxIDEwLjQtNy40Yy02LjQtMTEuNC0xNy42LTMxLTM0LjMtNTUuNSA0MC40IDQuMSA2NSAxMCA3Mi4yIDExLjctNCAxNC40LTguOSAyOS4yLTE0LjYgNDQuMmEyMC43NCAyMC43NCAwIDAgMSA2LjggNC4zbC4xLjFhMTIuNzIgMTIuNzIgMCAwIDEgOC45LTUuNmM0LjktMTMuNCA5LjItMjYuNiAxMi44LTM5LjVhMzU5LjcxIDM1OS43MSAwIDAgMSAzNC41IDExYzEwNi4xIDM5LjkgNzQgODcuOSA3Mi42IDkwLjQtMTkuOCAzNS4xLTgwLjEgNTUuMi0xMDUuNyA2Mi41em0tMTE0LjQtMTE0aC0xLjJhMS43NCAxLjc0IDAgMCAwLTEuOSAxLjl2NDkuOGMwIDcuOS0yLjYgMTEuMS0xMC4xIDExLjFzLTEwLjEtMy4xLTEwLjEtMTEuMXYtNDkuOGExLjY5IDEuNjkgMCAwIDAtMS45LTEuOUgzMDlhMS44MSAxLjgxIDAgMCAwLTIgMS45djUxLjVjMCA5LjYgNSAxNC4xIDE1LjEgMTQuMWguNGMxMC4xIDAgMTUuMS00LjYgMTUuMS0xNC4xdi01MS41YTIgMiAwIDAgMC0yLjItMS45ek0zMjEuNyAzMDhsLTIuMy02LjgtMi4zIDYuOC03LjEuMSA1LjcgNC4zLTIuMSA2LjggNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuM3ptLTMxLjEgNy40bC0yLjMtNi44LTIuMyA2LjgtNy4xLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjN6bTUuMS0zMC44aC0xOS40di0yNi43aDE2LjFhMS44OSAxLjg5IDAgMCAwIDItMnYtLjhhMS44OSAxLjg5IDAgMCAwLTItMmgtMTYuMXYtMjUuOGgxOS4xYTEuODkgMS44OSAwIDAgMCAyLTJ2LS44YTEuNzcgMS43NyAwIDAgMC0yLTEuOWgtMjIuMmExLjgxIDEuODEgMCAwIDAtMiAxLjl2NjNhMS44MSAxLjgxIDAgMCAwIDIgMS45aDIyLjVhMS43NyAxLjc3IDAgMCAwIDItMS45di0uOGExLjgzIDEuODMgMCAwIDAtMi0yLjA2em0tNy40LTk5LjRMMjg2IDE5MmwtNy4xLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjMtNy4xLS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWFkbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4LjMgNDYuNUgzODguNWMtNDguMSAwLTg5LjkgMzMuMy0xMDAuNCA4MC4zLTEwLjYtNDctNTIuMy04MC4zLTEwMC40LTgwLjNINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djI0NS44YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDg5LjdjMTAyLjIgMCAxMzIuNyAyNC40IDE0Ny4zIDc1IC43IDIuOCA1LjIgMi44IDYgMCAxNC43LTUwLjYgNDUuMi03NSAxNDcuMy03NUg1MjhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWOTQuNmMwLTI2LjQtMjEuMy00Ny45LTQ3LjctNDguMXpNMjQyIDMxMS45YzAgMS45LTEuNSAzLjUtMy41IDMuNUg3OC4yYy0xLjkgMC0zLjUtMS41LTMuNS0zLjVWMjg5YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjV2MjIuOXptMC02MC45YzAgMS45LTEuNSAzLjUtMy41IDMuNUg3OC4yYy0xLjkgMC0zLjUtMS41LTMuNS0zLjV2LTIyLjljMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNVYyNTF6bTAtNjAuOWMwIDEuOS0xLjUgMy41LTMuNSAzLjVINzguMmMtMS45IDAtMy41LTEuNS0zLjUtMy41di0yMi45YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjV2MjIuOXptMjU5LjMgMTIxLjdjMCAxLjktMS41IDMuNS0zLjUgMy41SDMzNy41Yy0xLjkgMC0zLjUtMS41LTMuNS0zLjV2LTIyLjljMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNXYyMi45em0wLTYwLjljMCAxLjktMS41IDMuNS0zLjUgMy41SDMzNy41Yy0xLjkgMC0zLjUtMS41LTMuNS0zLjVWMjI4YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjV2MjIuOXptMC02MC45YzAgMS45LTEuNSAzLjUtMy41IDMuNUgzMzcuNWMtMS45IDAtMy41LTEuNS0zLjUtMy41di0yMi44YzAtMS45IDEuNS0zLjUgMy41LTMuNWgxNjAuNGMxLjkgMCAzLjUgMS41IDMuNSAzLjVWMTkwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWJlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYuNSA1MDRDMTE3LjIgNTA0IDkgMzg3LjggMTMuMiAyNDkuOSAxNiAxNzAuNyA1Ni40IDk3LjcgMTI5LjcgNDkuNWMuMyAwIDEuOS0uNiAxLjEuOC01LjggNS41LTExMS4zIDEyOS44LTE0LjEgMjI2LjQgNDkuOCA0OS41IDkwIDIuNSA5MCAyLjUgMzguNS01MC4xLS42LTEyNS45LS42LTEyNS45LTEwLTI0LjktNDUuNy00MC4xLTQ1LjctNDAuMWwyOC44LTMxLjhjMjQuNCAxMC41IDQzLjIgMzguNyA0My4yIDM4LjcuOC0yOS42LTIxLjktNjEuNC0yMS45LTYxLjRMMjU1LjEgOGw0NC4zIDUwLjFjLTIwLjUgMjguOC0yMS45IDYyLjYtMjEuOSA2Mi42IDEzLjgtMjMgNDMuNS0zOS4zIDQzLjUtMzkuM2wyOC41IDMxLjhjLTI3LjQgOC45LTQ1LjQgMzkuOS00NS40IDM5LjktMTUuOCAyOC41LTI3LjEgODkuNC42IDEyNy4zIDMyLjQgNDQuNiA4Ny43LTIuOCA4Ny43LTIuOCAxMDIuNy05MS45LTEwLjUtMjI1LTEwLjUtMjI1LTYuMS01LjUuOC0yLjguOC0yLjggNTAuMSAzNi41IDExNC42IDg0LjQgMTE2LjIgMjA0LjhDNTAwLjkgNDAwLjIgMzk5IDUwNCAyNTYuNSA1MDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZFJpdmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1My4yIDMySDk0LjhDNDIuNCAzMiAwIDc0LjQgMCAxMjYuOHYyNTguNEMwIDQzNy42IDQyLjQgNDgwIDk0LjggNDgwaDI1OC40YzUyLjQgMCA5NC44LTQyLjQgOTQuOC05NC44VjEyNi44YzAtNTIuNC00Mi40LTk0LjgtOTQuOC05NC44ek0xNDQuOSAyMDAuOXY1Ni4zYzAgMjctMjEuOSA0OC45LTQ4LjkgNDguOVYxNTEuOWMwLTEzLjIgMTAuNy0yMy45IDIzLjktMjMuOWgxNTQuMmMwIDI3LTIxLjkgNDguOS00OC45IDQ4LjloLTU2LjNjLTEyLjMtLjYtMjQuNiAxMS42LTI0IDI0em0xNzYuMyA3MmgtNTYuM2MtMTIuMy0uNi0yNC42IDExLjYtMjQgMjR2NTYuM2MwIDI3LTIxLjkgNDguOS00OC45IDQ4LjlWMjQ3LjljMC0xMy4yIDEwLjctMjMuOSAyMy45LTIzLjloMTU0LjJjMCAyNy0yMS45IDQ4LjktNDguOSA0OC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWRkaXRBbGllbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDAuMyAyMDMuNWMtMTUgMC0yOC4yIDYuMi0zNy45IDE1LjktMzUuNy0yNC43LTgzLjgtNDAuNi0xMzcuMS00Mi4zTDI5MyA1Mi4zbDg4LjIgMTkuOGMwIDIxLjYgMTcuNiAzOS4yIDM5LjIgMzkuMiAyMiAwIDM5LjctMTguMSAzOS43LTM5LjdzLTE3LjYtMzkuNy0zOS43LTM5LjdjLTE1LjQgMC0yOC43IDkuMy0zNS4zIDIybC05Ny40LTIxLjZjLTQuOS0xLjMtOS43IDIuMi0xMSA3LjFMMjQ2LjMgMTc3Yy01Mi45IDIuMi0xMDAuNSAxOC4xLTEzNi4zIDQyLjgtOS43LTEwLjEtMjMuNC0xNi4zLTM4LjQtMTYuMy01NS42IDAtNzMuOCA3NC42LTIyLjkgMTAwLjEtMS44IDcuOS0yLjYgMTYuMy0yLjYgMjQuNyAwIDgzLjggOTQuNCAxNTEuNyAyMTAuMyAxNTEuNyAxMTYuNCAwIDIxMC44LTY3LjkgMjEwLjgtMTUxLjcgMC04LjQtLjktMTcuMi0zLjEtMjUuMSA0OS45LTI1LjYgMzEuNS05OS43LTIzLjgtOTkuN3pNMTI5LjQgMzA4LjljMC0yMiAxNy42LTM5LjcgMzkuNy0zOS43IDIxLjYgMCAzOS4yIDE3LjYgMzkuMiAzOS43IDAgMjEuNi0xNy42IDM5LjItMzkuMiAzOS4yLTIyIC4xLTM5LjctMTcuNi0zOS43LTM5LjJ6bTIxNC4zIDkzLjVjLTM2LjQgMzYuNC0xMzkuMSAzNi40LTE3NS41IDAtNC0zLjUtNC05LjcgMC0xMy43IDMuNS0zLjUgOS43LTMuNSAxMy4yIDAgMjcuOCAyOC41IDEyMCAyOSAxNDkgMCAzLjUtMy41IDkuNy0zLjUgMTMuMiAwIDQuMSA0IDQuMSAxMC4yLjEgMTMuN3ptLS44LTU0LjJjLTIxLjYgMC0zOS4yLTE3LjYtMzkuMi0zOS4yIDAtMjIgMTcuNi0zOS43IDM5LjItMzkuNyAyMiAwIDM5LjcgMTcuNiAzOS43IDM5LjctLjEgMjEuNS0xNy43IDM5LjItMzkuNyAzOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWRkaXRTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjgzLjIgMzQ1LjVjMi43IDIuNyAyLjcgNi44IDAgOS4yLTI0LjUgMjQuNS05My44IDI0LjYtMTE4LjQgMC0yLjctMi40LTIuNy02LjUgMC05LjIgMi40LTIuNCA2LjUtMi40IDguOSAwIDE4LjcgMTkuMiA4MSAxOS42IDEwMC41IDAgMi40LTIuMyA2LjYtMi4zIDkgMHptLTkxLjMtNTMuOGMwLTE0LjktMTEuOS0yNi44LTI2LjUtMjYuOC0xNC45IDAtMjYuOCAxMS45LTI2LjggMjYuOCAwIDE0LjYgMTEuOSAyNi41IDI2LjggMjYuNSAxNC42IDAgMjYuNS0xMS45IDI2LjUtMjYuNXptOTAuNy0yNi44Yy0xNC42IDAtMjYuNSAxMS45LTI2LjUgMjYuOCAwIDE0LjYgMTEuOSAyNi41IDI2LjUgMjYuNSAxNC45IDAgMjYuOC0xMS45IDI2LjgtMjYuNSAwLTE0LjktMTEuOS0yNi44LTI2LjgtMjYuOHpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tOTkuNyAxNDAuNmMtMTAuMSAwLTE5IDQuMi0yNS42IDEwLjctMjQuMS0xNi43LTU2LjUtMjcuNC05Mi41LTI4LjZsMTguNy04NC4yIDU5LjUgMTMuNGMwIDE0LjYgMTEuOSAyNi41IDI2LjUgMjYuNSAxNC45IDAgMjYuOC0xMi4yIDI2LjgtMjYuOCAwLTE0LjYtMTEuOS0yNi44LTI2LjgtMjYuOC0xMC40IDAtMTkuMyA2LjItMjMuOCAxNC45bC02NS43LTE0LjZjLTMuMy0uOS02LjUgMS41LTcuNCA0LjhsLTIwLjUgOTIuOGMtMzUuNyAxLjUtNjcuOCAxMi4yLTkxLjkgMjguOS02LjUtNi44LTE1LjgtMTEtMjUuOS0xMS0zNy41IDAtNDkuOCA1MC40LTE1LjUgNjcuNS0xLjIgNS40LTEuOCAxMS0xLjggMTYuNyAwIDU2LjUgNjMuNyAxMDIuMyAxNDEuOSAxMDIuMyA3OC41IDAgMTQyLjItNDUuOCAxNDIuMi0xMDIuMyAwLTUuNy0uNi0xMS42LTIuMS0xNyAzMy42LTE3LjIgMjEuMi02Ny4yLTE2LjEtNjcuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMS41IDMwNS41Yy0xMy44IDAtMjQuOS0xMS4xLTI0LjktMjQuNiAwLTEzLjggMTEuMS0yNC45IDI0LjktMjQuOSAxMy42IDAgMjQuNiAxMS4xIDI0LjYgMjQuOSAwIDEzLjYtMTEuMSAyNC42LTI0LjYgMjQuNnpNNTA0IDI1NmMwIDEzNy0xMTEgMjQ4LTI0OCAyNDhTOCAzOTMgOCAyNTYgMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4em0tMTMyLjMtNDEuMmMtOS40IDAtMTcuNyAzLjktMjMuOCAxMC0yMi40LTE1LjUtNTIuNi0yNS41LTg2LjEtMjYuNmwxNy40LTc4LjMgNTUuNCAxMi41YzAgMTMuNiAxMS4xIDI0LjYgMjQuNiAyNC42IDEzLjggMCAyNC45LTExLjMgMjQuOS0yNC45cy0xMS4xLTI0LjktMjQuOS0yNC45Yy05LjcgMC0xOCA1LjgtMjIuMSAxMy44bC02MS4yLTEzLjZjLTMtLjgtNi4xIDEuNC02LjkgNC40bC0xOS4xIDg2LjRjLTMzLjIgMS40LTYzLjEgMTEuMy04NS41IDI2LjgtNi4xLTYuNC0xNC43LTEwLjItMjQuMS0xMC4yLTM0LjkgMC00Ni4zIDQ2LjktMTQuNCA2Mi44LTEuMSA1LTEuNyAxMC4yLTEuNyAxNS41IDAgNTIuNiA1OS4yIDk1LjIgMTMyIDk1LjIgNzMuMSAwIDEzMi4zLTQyLjYgMTMyLjMtOTUuMiAwLTUuMy0uNi0xMC44LTEuOS0xNS44IDMxLjMtMTYgMTkuOC02Mi41LTE0LjktNjIuNXpNMzAyLjggMzMxYy0xOC4yIDE4LjItNzYuMSAxNy45LTkzLjYgMC0yLjItMi4yLTYuMS0yLjItOC4zIDAtMi41IDIuNS0yLjUgNi40IDAgOC42IDIyLjggMjIuOCA4Ny4zIDIyLjggMTEwLjIgMCAyLjUtMi4yIDIuNS02LjEgMC04LjYtMi4yLTIuMi02LjEtMi4yLTguMyAwem03LjctNzVjLTEzLjYgMC0yNC42IDExLjEtMjQuNiAyNC45IDAgMTMuNiAxMS4xIDI0LjYgMjQuNiAyNC42IDEzLjggMCAyNC45LTExLjEgMjQuOS0yNC42IDAtMTMuOC0xMS0yNC45LTI0LjktMjQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0MS41MiAyODUuNTZjMzMuNjUgMCA4Mi4zNC02Ljk0IDgyLjM0LTQ3IC4yMi02Ljc0Ljg2LTEuODItMjAuODgtOTYuMjQtNC42Mi0xOS4xNS04LjY4LTI3Ljg0LTQyLjMxLTQ0LjY1LTI2LjA5LTEzLjM0LTgyLjkyLTM1LjM3LTk5LjczLTM1LjM3LTE1LjY2IDAtMjAuMiAyMC4xNy0zOC44NyAyMC4xNy0xOCAwLTMxLjMxLTE1LjA2LTQ4LjEyLTE1LjA2LTE2LjE0IDAtMjYuNjYgMTEtMzQuNzggMzMuNjItMjcuNSA3Ny41NS0yNi4yOCA3NC4yNy0yNi4xMiA3OC4yNyAwIDI0LjggOTcuNjQgMTA2LjExIDIyOC40NyAxMDYuMTFNNDI5IDI1NC44NGM0LjY1IDIyIDQuNjUgMjQuMzUgNC42NSAyNy4yNSAwIDM3LjY2LTQyLjMzIDU4LjU2LTk4IDU4LjU2LTEyNS43NC4wOC0yMzUuOTEtNzMuNjUtMjM1LjkxLTEyMi4zM2E0OS41NSA0OS41NSAwIDAgMSA0LjA2LTE5LjcyQzU4LjU2IDIwMC44NiAwIDIwOC45MyAwIDI2MC42M2MwIDg0LjY3IDIwMC42MyAxODkgMzU5LjQ5IDE4OSAxMjEuNzkgMCAxNTIuNTEtNTUuMDggMTUyLjUxLTk4LjU4IDAtMzQuMjEtMjkuNTktNzMuMDUtODIuOTMtOTYuMjRcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVucmVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNCAxNjkuMWMwIDExMC40LTYxIDIwNS40LTE0Ny42IDI0Ny40QzMwIDM3My4yIDggMzE3LjcgOCAyNTYuNiA4IDEzMy45IDk3LjEgMzIuMiAyMTQgMTIuNXYxNTYuNnpNMjU1IDUwNGMtNDIuOSAwLTgzLjMtMTEtMTE4LjUtMzAuNEMxOTMuNyA0MzcuNSAyMzkuOSAzODIuOSAyNTUgMzE5YzE1LjUgNjMuOSA2MS43IDExOC41IDExOC44IDE1NC43QzMzOC43IDQ5MyAyOTguMyA1MDQgMjU1IDUwNHptMTkwLjYtODcuNUMzNTkgMzc0LjUgMjk4IDI3OS42IDI5OCAxNjkuMVYxMi41YzExNi45IDE5LjcgMjA2IDEyMS40IDIwNiAyNDQuMSAwIDYxLjEtMjIgMTE2LjYtNTguNCAxNTkuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVwbHlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA0ODBIMTI4QzU3LjYgNDgwIDAgNDIyLjQgMCAzNTJWMTYwQzAgODkuNiA1Ny42IDMyIDEyOCAzMmgxOTJjNzAuNCAwIDEyOCA1Ny42IDEyOCAxMjh2MTkyYzAgNzAuNC01Ny42IDEyOC0xMjggMTI4ek0xOTMuNCAyNzMuMmMtNi4xLTItMTEuNi0zLjEtMTYuNC0zLjEtNy4yIDAtMTMuNSAxLjktMTguOSA1LjYtNS40IDMuNy05LjYgOS0xMi44IDE1LjhoLTEuMWwtNC4yLTE4LjNoLTI4djEzOC45aDM2LjF2LTg5LjdjMS41LTUuNCA0LjQtOS44IDguNy0xMy4yIDQuMy0zLjQgOS44LTUuMSAxNi4yLTUuMSA0LjYgMCA5LjggMSAxNS42IDMuMWw0LjgtMzR6bTExNS4yIDEwMy40Yy0zLjIgMi40LTcuNyA0LjgtMTMuNyA3LjEtNiAyLjMtMTIuOCAzLjUtMjAuNCAzLjUtMTIuMiAwLTIxLjEtMy0yNi41LTguOS01LjUtNS45LTguNS0xNC43LTktMjYuNGg4My4zYy45LTQuOCAxLjYtOS40IDIuMS0xMy45LjUtNC40LjctOC42LjctMTIuNSAwLTEwLjctMS42LTE5LjctNC43LTI2LjktMy4yLTcuMi03LjMtMTMtMTIuNS0xNy4yLTUuMi00LjMtMTEuMS03LjMtMTcuOC05LjItNi43LTEuOC0xMy41LTIuOC0yMC42LTIuOC0yMS4xIDAtMzcuNSA2LjEtNDkuMiAxOC4zcy0xNy41IDMwLjUtMTcuNSA1NWMwIDIyLjggNS4yIDQwLjcgMTUuNiA1My43IDEwLjQgMTMuMSAyNi44IDE5LjYgNDkuMiAxOS42IDEwLjcgMCAyMC45LTEuNSAzMC40LTQuNiA5LjUtMy4xIDE3LjEtNi44IDIyLjYtMTEuMmwtMTItMjMuNnptLTIxLjgtNzAuM2MzLjggNS40IDUuMyAxMy4xIDQuNiAyMy4xaC01MS43Yy45LTkuNCAzLjctMTcgOC4yLTIyLjYgNC41LTUuNiAxMS41LTguNSAyMS04LjUgOC4yLS4xIDE0LjEgMi42IDE3LjkgOHptNzkuOSAyLjVjNC4xIDMuOSA5LjQgNS44IDE2LjEgNS44IDcgMCAxMi42LTEuOSAxNi43LTUuOHM2LjEtOS4xIDYuMS0xNS42LTItMTEuNi02LjEtMTUuNGMtNC4xLTMuOC05LjYtNS43LTE2LjctNS43LTYuNyAwLTEyIDEuOS0xNi4xIDUuNy00LjEgMy44LTYuMSA4LjktNi4xIDE1LjRzMiAxMS43IDYuMSAxNS42em0wIDEwMC41YzQuMSAzLjkgOS40IDUuOCAxNi4xIDUuOCA3IDAgMTIuNi0xLjkgMTYuNy01LjhzNi4xLTkuMSA2LjEtMTUuNi0yLTExLjYtNi4xLTE1LjRjLTQuMS0zLjgtOS42LTUuNy0xNi43LTUuNy02LjcgMC0xMiAxLjktMTYuMSA1LjctNC4xIDMuOC02LjEgOC45LTYuMSAxNS40IDAgNi42IDIgMTEuNyA2LjEgMTUuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVzZWFyY2hnYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJ2NDQ4aDQ0OFYzMkgwem0yNjIuMiAzMzQuNGMtNi42IDMtMzMuMiA2LTUwLTE0LjItOS4yLTEwLjYtMjUuMy0zMy4zLTQyLjItNjMuNi04LjkgMC0xNC43IDAtMjEuNC0uNnY0Ni40YzAgMjMuNSA2IDIxLjIgMjUuOCAyMy45djguMWMtNi45LS4zLTIzLjEtLjgtMzUuNi0uOC0xMy4xIDAtMjYuMS42LTMzLjYuOHYtOC4xYzE1LjUtMi45IDIyLTEuMyAyMi0yMy45VjIyNWMwLTIyLjYtNi40LTIxLTIyLTIzLjlWMTkzYzI1LjggMSA1My4xLS42IDcwLjktLjYgMzEuNyAwIDU1LjkgMTQuNCA1NS45IDQ1LjYgMCAyMS4xLTE2LjcgNDIuMi0zOS4yIDQ3LjUgMTMuNiAyNC4yIDMwIDQ1LjYgNDIuMiA1OC45IDcuMiA3LjggMTcuMiAxNC43IDI3LjIgMTQuN3Y3LjN6bTIyLjktMTM1Yy0yMy4zIDAtMzIuMi0xNS43LTMyLjItMzIuMlYxNjdjMC0xMi4yIDguOC0zMC40IDM0LTMwLjRzMzAuNCAxNy45IDMwLjQgMTcuOWwtMTAuNyA3LjJzLTUuNS0xMi41LTE5LjctMTIuNWMtNy45IDAtMTkuNyA3LjMtMTkuNyAxOS43djI2LjhjMCAxMy40IDYuNiAyMy4zIDE3LjkgMjMuMyAxNC4xIDAgMjEuNS0xMC45IDIxLjUtMjYuOGgtMTcuOXYtMTAuN2gzMC40YzAgMjAuNSA0LjcgNDkuOS0zNCA0OS45em0tMTE2LjUgNDQuN2MtOS40IDAtMTMuNi0uMy0yMC0uOHYtNjkuN2M2LjQtLjYgMTUtLjYgMjIuNS0uNiAyMy4zIDAgMzcuMiAxMi4yIDM3LjIgMzQuNSAwIDIxLjktMTUgMzYuNi0zOS43IDM2LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlc29sdmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODEuMiAyNzguMmM0Ni0xMy4zIDQ5LjYtMjMuNSA0NC00My40TDMxNCAxOTUuNWMtNi4xLTIwLjktMTguNC0yOC4xLTcxLjEtMTIuOEw1NC43IDIzNi44bDI4LjYgOTguNiAxOTcuOS01Ny4yek0yNDguNSA4QzEzMS40IDggMzMuMiA4OC43IDcuMiAxOTcuNWwyMjEuOS02My45YzM0LjgtMTAuMiA1NC4yLTExLjcgNzkuMy04LjIgMzYuMyA2LjEgNTIuNyAyNSA2MS40IDU1LjJsMTAuNyAzNy44YzguMiAyOC4xIDEgNTAuNi0yMy41IDczLjYtMTkuNCAxNy40LTMxLjIgMjQuNS02MS40IDMzLjJMMjAzIDM1MS44bDIyMC40IDI3LjEgOS43IDM0LjItNDguMSAxMy4zLTI4Ni44LTM3LjMgMjMgODAuMmMzNi44IDIyIDgwLjMgMzQuNyAxMjYuMyAzNC43IDEzNyAwIDI0OC41LTExMS40IDI0OC41LTI0OC4zQzQ5NyAxMTkuNCAzODUuNSA4IDI0OC41IDh6TTM4LjMgMzg4LjZMMCAyNTYuOGMwIDQ4LjUgMTQuMyA5My40IDM4LjMgMTMxLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJldiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODkuNjcgMjc0Ljg5YTY1LjU3IDY1LjU3IDAgMSAxLTY1LjU2LTY1LjU2IDY1LjY0IDY1LjY0IDAgMCAxIDY1LjU2IDY1LjU2em0xMzkuNTUtNS4wNWgtLjEzYTIwNC42OSAyMDQuNjkgMCAwIDAtNzQuMzItMTUzbC00NS4zOCAyNi4yYTE1Ny4wNyAxNTcuMDcgMCAwIDEgNzEuODEgMTMxLjg0QzM4MS4yIDM2MS41IDMxMC43MyA0MzIgMjI0LjExIDQzMlM2NyAzNjEuNSA2NyAyNzQuODhjMC04MS44OCA2My0xNDkuMjcgMTQzLTE1Ni40M3YzOS4xMmwxMDguNzctNjIuNzlMMjEwIDMydjM4LjMyYy0xMDYuNyA3LjI1LTE5MSA5Ni0xOTEgMjA0LjU3IDAgMTExLjU5IDg5LjEyIDIwMi4yOSAyMDAuMDYgMjA1di4xMWgyMTAuMTZWMjY5Ljg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2NrZXRjaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4NC4wNDYsMjI0LjhhMzQuMTE0LDM0LjExNCwwLDEsMCwzNC4zMTcsMzQuMTEzQTM0LjIxNywzNC4yMTcsMCwwLDAsMjg0LjA0NiwyMjQuOFptLTExMC40NSwwYTM0LjExNCwzNC4xMTQsMCwxLDAsMzQuMzE3LDM0LjExM0EzNC4yMTcsMzQuMjE3LDAsMCwwLDE3My42LDIyNC44Wm0yMjAuOTIzLDBhMzQuMTE0LDM0LjExNCwwLDEsMCwzNC4zMTcsMzQuMTEzQTM0LjIxNSwzNC4yMTUsMCwwLDAsMzk0LjUxOSwyMjQuOFptMTUzLjgwNy01NS4zMTljLTE1LjUzNS0yNC4xNzItMzcuMzEtNDUuNTctNjQuNjgxLTYzLjYxOC01Mi44ODYtMzQuODE3LTEyMi4zNzQtNTQtMTk1LjY2Ni01NGE0MDUuOTc1LDQwNS45NzUsMCwwLDAtNzIuMDMyLDYuMzU3LDIzOC41MjQsMjM4LjUyNCwwLDAsMC00OS41MS0zNi41ODhDOTkuNjg0LTExLjcsNDAuODU5LjcxMSwxMS4xMzUsMTEuNDIxQTE0LjI5MSwxNC4yOTEsMCwwLDAsNS41OCwzNC43ODJDMjYuNTQyLDU2LjQ1OCw2MS4yMjIsOTkuMyw1Mi43LDEzOC4yNTJjLTMzLjE0MiwzMy45LTUxLjExMiw3NC43NzYtNTEuMTEyLDExNy4zMzcsMCw0My4zNzIsMTcuOTcsODQuMjQ4LDUxLjExMiwxMTguMTQ4LDguNTI2LDM4Ljk1Ni0yNi4xNTQsODEuODE2LTQ3LjExNiwxMDMuNDkxYTE0LjI4NCwxNC4yODQsMCwwLDAsNS41NTUsMjMuMzRjMjkuNzI0LDEwLjcwOSw4OC41NDksMjMuMTQ3LDE1NS4zMjQtMTAuMmEyMzguNjc5LDIzOC42NzksMCwwLDAsNDkuNTEtMzYuNTg5QTQwNS45NzIsNDA1Ljk3MiwwLDAsMCwyODgsNDYwLjE0YzczLjMxMywwLDE0Mi44LTE5LjE1OSwxOTUuNjY3LTUzLjk3NSwyNy4zNzEtMTguMDQ5LDQ5LjE0NS0zOS40MjYsNjQuNjc5LTYzLjYxOSwxNy4zMDktMjYuOTIzLDI2LjA3LTU1LjkxNiwyNi4wNy04Ni4xMjVDNTc0LjM5NCwyMjUuNCw1NjUuNjM0LDE5Ni40Myw1NDguMzI2LDE2OS40ODVaTTI4NC45ODcsNDA5LjlhMzQ1LjY1LDM0NS42NSwwLDAsMS04OS40NDYtMTEuNWwtMjAuMTI5LDE5LjM5M2ExODQuMzY2LDE4NC4zNjYsMCwwLDEtMzcuMTM4LDI3LjU4NSwxNDUuNzY3LDE0NS43NjcsMCwwLDEtNTIuNTIyLDE0Ljg3Yy45ODMtMS43NzEsMS44ODEtMy41NjMsMi44NDItNS4zNTZxMzAuMjU4LTU1LjY4LDE2LjMyNS0xMDAuMDc4Yy0zMi45OTItMjUuOTYyLTUyLjc3OC01OS4yLTUyLjc3OC05NS40LDAtODMuMSwxMDQuMjU0LTE1MC40NjksMjMyLjg0Ni0xNTAuNDY5czIzMi44NjcsNjcuMzczLDIzMi44NjcsMTUwLjQ2OUM1MTcuODU0LDM0Mi41MjUsNDEzLjYsNDA5LjksMjg0Ljk4Nyw0MDkuOVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9ja3JtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0xNTcuNCA0MTkuNWgtOTBsLTExMi0xMzEuM2MtMTcuOS0yMC40LTMuOS01Ni4xIDI2LjYtNTYuMWg3NS4zbC04NC42LTk5LjMtODQuMyA5OC45aC05MEwxOTMuNSA2Ny4yYzE0LjQtMTguNCA0MS4zLTE3LjMgNTQuNSAwbDE1Ny43IDE4NS4xYzE5IDIyLjggMiA1Ny4yLTI3LjYgNTYuMS0uNiAwLTc0LjIuMi03NC4yLjJsMTAxLjUgMTE4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1c3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA4LjUyLDI0OS43NSw0ODYuNywyMzYuMjRjLS4xNy0yLS4zNC0zLjkzLS41NS01Ljg4bDE4LjcyLTE3LjVhNy4zNSw3LjM1LDAsMCwwLTIuNDQtMTIuMjVsLTI0LTljLS41NC0xLjg4LTEuMDgtMy43OC0xLjY3LTUuNjRsMTUtMjAuODNhNy4zNSw3LjM1LDAsMCwwLTQuNzktMTEuNTRsLTI1LjQyLTQuMTVjLS45LTEuNzMtMS43OS0zLjQ1LTIuNzMtNS4xNWwxMC42OC0yMy40MmE3LjM1LDcuMzUsMCwwLDAtNi45NS0xMC4zOWwtMjUuODIuOTFxLTEuNzktMi4yMi0zLjYxLTQuNEw0MzksODEuODRBNy4zNiw3LjM2LDAsMCwwLDQzMC4xNiw3M0w0MDUsNzguOTNxLTIuMTctMS44My00LjQtMy42MWwuOTEtMjUuODJhNy4zNSw3LjM1LDAsMCwwLTEwLjM5LTdMMzY3LjcsNTMuMjNjLTEuNy0uOTQtMy40My0xLjg0LTUuMTUtMi43M0wzNTguNCwyNS4wOGE3LjM1LDcuMzUsMCwwLDAtMTEuNTQtNC43OUwzMjYsMzUuMjZjLTEuODYtLjU5LTMuNzUtMS4xMy01LjY0LTEuNjdsLTktMjRhNy4zNSw3LjM1LDAsMCwwLTEyLjI1LTIuNDRsLTE3LjUsMTguNzJjLTEuOTUtLjIxLTMuOTEtLjM4LTUuODgtLjU1TDI2Mi4yNSwzLjQ4YTcuMzUsNy4zNSwwLDAsMC0xMi41LDBMMjM2LjI0LDI1LjNjLTIsLjE3LTMuOTMuMzQtNS44OC41NUwyMTIuODYsNy4xM2E3LjM1LDcuMzUsMCwwLDAtMTIuMjUsMi40NGwtOSwyNGMtMS44OS41NS0zLjc5LDEuMDgtNS42NiwxLjY4bC0yMC44Mi0xNWE3LjM1LDcuMzUsMCwwLDAtMTEuNTQsNC43OWwtNC4xNSwyNS40MWMtMS43My45LTMuNDUsMS43OS01LjE2LDIuNzNMMTIwLjg4LDQyLjU1YTcuMzUsNy4zNSwwLDAsMC0xMC4zOSw3bC45MiwyNS44MWMtMS40OSwxLjE5LTMsMi4zOS00LjQyLDMuNjFMODEuODQsNzNBNy4zNiw3LjM2LDAsMCwwLDczLDgxLjg0TDc4LjkzLDEwN2MtMS4yMywxLjQ1LTIuNDMsMi45My0zLjYyLDQuNDFsLTI1LjgxLS45MWE3LjQyLDcuNDIsMCwwLDAtNi4zNywzLjI2LDcuMzUsNy4zNSwwLDAsMC0uNTcsNy4xM2wxMC42NiwyMy40MWMtLjk0LDEuNy0xLjgzLDMuNDMtMi43Myw1LjE2TDI1LjA4LDE1My42YTcuMzUsNy4zNSwwLDAsMC00Ljc5LDExLjU0bDE1LDIwLjgyYy0uNTksMS44Ny0xLjEzLDMuNzctMS42OCw1LjY2bC0yNCw5YTcuMzUsNy4zNSwwLDAsMC0yLjQ0LDEyLjI1bDE4LjcyLDE3LjVjLS4yMSwxLjk1LS4zOCwzLjkxLS41NSw1Ljg4TDMuNDgsMjQ5Ljc1YTcuMzUsNy4zNSwwLDAsMCwwLDEyLjVMMjUuMywyNzUuNzZjLjE3LDIsLjM0LDMuOTIuNTUsNS44N0w3LjEzLDI5OS4xM2E3LjM1LDcuMzUsMCwwLDAsMi40NCwxMi4yNWwyNCw5Yy41NSwxLjg5LDEuMDgsMy43OCwxLjY4LDUuNjVsLTE1LDIwLjgzYTcuMzUsNy4zNSwwLDAsMCw0Ljc5LDExLjU0bDI1LjQyLDQuMTVjLjksMS43MiwxLjc5LDMuNDUsMi43Myw1LjE0TDQyLjU2LDM5MS4xMmE3LjM1LDcuMzUsMCwwLDAsLjU3LDcuMTMsNy4xMyw3LjEzLDAsMCwwLDYuMzcsMy4yNmwyNS44My0uOTFxMS43NywyLjIyLDMuNiw0LjRMNzMsNDMwLjE2QTcuMzYsNy4zNiwwLDAsMCw4MS44NCw0MzlMMTA3LDQzMy4wN3EyLjE4LDEuODMsNC40MSwzLjYxbC0uOTIsMjUuODJhNy4zNSw3LjM1LDAsMCwwLDEwLjM5LDYuOTVsMjMuNDMtMTAuNjhjMS42OS45NCwzLjQyLDEuODMsNS4xNCwyLjczbDQuMTUsMjUuNDJhNy4zNCw3LjM0LDAsMCwwLDExLjU0LDQuNzhsMjAuODMtMTVjMS44Ni42LDMuNzYsMS4xMyw1LjY1LDEuNjhsOSwyNGE3LjM2LDcuMzYsMCwwLDAsMTIuMjUsMi40NGwxNy41LTE4LjcyYzEuOTUuMjEsMy45Mi4zOCw1Ljg4LjU1bDEzLjUxLDIxLjgyYTcuMzUsNy4zNSwwLDAsMCwxMi41LDBsMTMuNTEtMjEuODJjMi0uMTcsMy45My0uMzQsNS44OC0uNTZsMTcuNSwxOC43M2E3LjM2LDcuMzYsMCwwLDAsMTIuMjUtMi40NGw5LTI0YzEuODktLjU1LDMuNzgtMS4wOCw1LjY1LTEuNjhsMjAuODIsMTVhNy4zNCw3LjM0LDAsMCwwLDExLjU0LTQuNzhsNC4xNS0yNS40MmMxLjcyLS45LDMuNDUtMS43OSw1LjE1LTIuNzNsMjMuNDIsMTAuNjhhNy4zNSw3LjM1LDAsMCwwLDEwLjM5LTYuOTVsLS45MS0yNS44MnEyLjIyLTEuNzksNC40LTMuNjFMNDMwLjE2LDQzOWE3LjM2LDcuMzYsMCwwLDAsOC44NC04Ljg0TDQzMy4wNyw0MDVxMS44My0yLjE3LDMuNjEtNC40bDI1LjgyLjkxYTcuMjMsNy4yMywwLDAsMCw2LjM3LTMuMjYsNy4zNSw3LjM1LDAsMCwwLC41OC03LjEzTDQ1OC43NywzNjcuN2MuOTQtMS43LDEuODMtMy40MywyLjczLTUuMTVsMjUuNDItNC4xNWE3LjM1LDcuMzUsMCwwLDAsNC43OS0xMS41NGwtMTUtMjAuODNjLjU5LTEuODcsMS4xMy0zLjc2LDEuNjctNS42NWwyNC05YTcuMzUsNy4zNSwwLDAsMCwyLjQ0LTEyLjI1bC0xOC43Mi0xNy41Yy4yMS0xLjk1LjM4LTMuOTEuNTUtNS44N2wyMS44Mi0xMy41MWE3LjM1LDcuMzUsMCwwLDAsMC0xMi41Wm0tMTUxLDEyOS4wOEExMy45MSwxMy45MSwwLDAsMCwzNDEsMzg5LjUxbC03LjY0LDM1LjY3QTE4Ny41MSwxODcuNTEsMCwwLDEsMTc3LDQyNC40NGwtNy42NC0zNS42NmExMy44NywxMy44NywwLDAsMC0xNi40Ni0xMC42OGwtMzEuNTEsNi43NmExODcuMzgsMTg3LjM4LDAsMCwxLTE2LjI2LTE5LjIxSDI1OC4zYzEuNzIsMCwyLjg5LS4yOSwyLjg5LTEuOTFWMzA5LjU1YzAtMS41Ny0xLjE3LTEuOTEtMi44OS0xLjkxSDIxMy40N2wuMDUtMzQuMzVIMjYyYzQuNDEsMCwyMy42NiwxLjI4LDI5Ljc5LDI1Ljg3LDEuOTEsNy41NSw2LjE3LDMyLjE0LDkuMDYsNDAsMi44OSw4LjgyLDE0LjYsMjYuNDYsMjcuMSwyNi40Nkg0MDdhMTg3LjMsMTg3LjMsMCwwLDEtMTcuMzQsMjAuMDlabTI1Ljc3LDM0LjQ5QTE1LjI0LDE1LjI0LDAsMSwxLDM2OCwzOTguMDhoLjQ0QTE1LjIzLDE1LjIzLDAsMCwxLDM4My4yNCw0MTMuMzJabS0yMjUuNjItLjY4YTE1LjI0LDE1LjI0LDAsMSwxLTE1LjI1LTE1LjI1aC40NUExNS4yNSwxNS4yNSwwLDAsMSwxNTcuNjIsNDEyLjY0Wk02OS41NywyMzQuMTVsMzIuODMtMTQuNmExMy44OCwxMy44OCwwLDAsMCw3LjA2LTE4LjMzTDEwMi42OSwxODZoMjYuNTZWMzA1LjczSDc1LjY1QTE4Ny42NSwxODcuNjUsMCwwLDEsNjkuNTcsMjM0LjE1Wk01OC4zMSwxOTguMDlhMTUuMjQsMTUuMjQsMCwwLDEsMTUuMjMtMTUuMjVINzRhMTUuMjQsMTUuMjQsMCwxLDEtMTUuNjcsMTUuMjRabTE1NS4xNiwyNC40OS4wNS0zNS4zMmg2My4yNmMzLjI4LDAsMjMuMDcsMy43NywyMy4wNywxOC42MiwwLDEyLjI5LTE1LjE5LDE2LjctMjcuNjgsMTYuN1pNMzk5LDMwNi43MWMtOS44LDEuMTMtMjAuNjMtNC4xMi0yMi0xMC4wOS01Ljc4LTMyLjQ5LTE1LjM5LTM5LjQtMzAuNTctNTEuNCwxOC44Ni0xMS45NSwzOC40Ni0yOS42NCwzOC40Ni01My4yNiwwLTI1LjUyLTE3LjQ5LTQxLjU5LTI5LjQtNDkuNDgtMTYuNzYtMTEtMzUuMjgtMTMuMjMtNDAuMjctMTMuMjNIMTE2LjMyQTE4Ny40OSwxODcuNDksMCwwLDEsMjIxLjIxLDcwLjA2bDIzLjQ3LDI0LjZhMTMuODIsMTMuODIsMCwwLDAsMTkuNi40NGwyNi4yNi0yNWExODcuNTEsMTg3LjUxLDAsMCwxLDEyOC4zNyw5MS40M2wtMTgsNDAuNTdBMTQsMTQsMCwwLDAsNDA4LDIyMC40M2wzNC41OSwxNS4zM2ExODcuMTIsMTg3LjEyLDAsMCwxLC40LDMyLjU0SDQyMy43MWMtMS45MSwwLTIuNjksMS4yNy0yLjY5LDMuMTN2OC44MkM0MjEsMzAxLDQwOS4zMSwzMDUuNTgsMzk5LDMwNi43MVpNMjQwLDYwLjIxQTE1LjI0LDE1LjI0LDAsMCwxLDI1NS4yMSw0NWguNDVBMTUuMjQsMTUuMjQsMCwxLDEsMjQwLDYwLjIxWk00MzYuODQsMjE0YTE1LjI0LDE1LjI0LDAsMSwxLDAtMzAuNDhoLjQ0YTE1LjI0LDE1LjI0LDAsMCwxLS40NCwzMC40OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2FmYXJpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3NC42OSwyNzQuNjlsLTM3LjM4LTM3LjM4TDE2NiwzNDZaTTI1Niw4QzExOSw4LDgsMTE5LDgsMjU2UzExOSw1MDQsMjU2LDUwNCw1MDQsMzkzLDUwNCwyNTYsMzkzLDgsMjU2LDhaTTQxMS44NSwxODIuNzlsMTQuNzgtNi4xM0E4LDgsMCwwLDEsNDM3LjA4LDE4MWgwYTgsOCwwLDAsMS00LjMzLDEwLjQ2TDQxOCwxOTcuNTdhOCw4LDAsMCwxLTEwLjQ1LTQuMzNoMEE4LDgsMCwwLDEsNDExLjg1LDE4Mi43OVpNMzE0LjQzLDk0bDYuMTItMTQuNzhBOCw4LDAsMCwxLDMzMSw3NC45MmgwYTgsOCwwLDAsMSw0LjMzLDEwLjQ1bC02LjEzLDE0Ljc4YTgsOCwwLDAsMS0xMC40NSw0LjMzaDBBOCw4LDAsMCwxLDMxNC40Myw5NFpNMjU2LDYwaDBhOCw4LDAsMCwxLDgsOFY4NGE4LDgsMCwwLDEtOCw4aDBhOCw4LDAsMCwxLTgtOFY2OEE4LDgsMCwwLDEsMjU2LDYwWk0xODEsNzQuOTJhOCw4LDAsMCwxLDEwLjQ2LDQuMzNMMTk3LjU3LDk0YTgsOCwwLDEsMS0xNC43OCw2LjEybC02LjEzLTE0Ljc4QTgsOCwwLDAsMSwxODEsNzQuOTJabS02My41OCw0Mi40OWgwYTgsOCwwLDAsMSwxMS4zMSwwTDE0MCwxMjguNzJBOCw4LDAsMCwxLDE0MCwxNDBoMGE4LDgsMCwwLDEtMTEuMzEsMGwtMTEuMzEtMTEuMzFBOCw4LDAsMCwxLDExNy40MSwxMTcuNDFaTTYwLDI1NmgwYTgsOCwwLDAsMSw4LThIODRhOCw4LDAsMCwxLDgsOGgwYTgsOCwwLDAsMS04LDhINjhBOCw4LDAsMCwxLDYwLDI1NlptNDAuMTUsNzMuMjEtMTQuNzgsNi4xM0E4LDgsMCwwLDEsNzQuOTIsMzMxaDBhOCw4LDAsMCwxLDQuMzMtMTAuNDZMOTQsMzE0LjQzYTgsOCwwLDAsMSwxMC40NSw0LjMzaDBBOCw4LDAsMCwxLDEwMC4xNSwzMjkuMjFabTQuMzMtMTM2aDBBOCw4LDAsMCwxLDk0LDE5Ny41N2wtMTQuNzgtNi4xMkE4LDgsMCwwLDEsNzQuOTIsMTgxaDBhOCw4LDAsMCwxLDEwLjQ1LTQuMzNsMTQuNzgsNi4xM0E4LDgsMCwwLDEsMTA0LjQ4LDE5My4yNFpNMTk3LjU3LDQxOGwtNi4xMiwxNC43OGE4LDgsMCwwLDEtMTQuNzktNi4xMmw2LjEzLTE0Ljc4QTgsOCwwLDEsMSwxOTcuNTcsNDE4Wk0yNjQsNDQ0YTgsOCwwLDAsMS04LDhoMGE4LDgsMCwwLDEtOC04VjQyOGE4LDgsMCwwLDEsOC04aDBhOCw4LDAsMCwxLDgsOFptNjctNi45MmgwYTgsOCwwLDAsMS0xMC40Ni00LjMzTDMxNC40Myw0MThhOCw4LDAsMCwxLDQuMzMtMTAuNDVoMGE4LDgsMCwwLDEsMTAuNDUsNC4zM2w2LjEzLDE0Ljc4QTgsOCwwLDAsMSwzMzEsNDM3LjA4Wm02My41OC00Mi40OWgwYTgsOCwwLDAsMS0xMS4zMSwwTDM3MiwzODMuMjhBOCw4LDAsMCwxLDM3MiwzNzJoMGE4LDgsMCwwLDEsMTEuMzEsMGwxMS4zMSwxMS4zMUE4LDgsMCwwLDEsMzk0LjU5LDM5NC41OVpNMjg2LjI1LDI4Ni4yNSwxMTAuMzQsNDAxLjY2LDIyNS43NSwyMjUuNzUsNDAxLjY2LDExMC4zNFpNNDM3LjA4LDMzMWgwYTgsOCwwLDAsMS0xMC40NSw0LjMzbC0xNC43OC02LjEzYTgsOCwwLDAsMS00LjMzLTEwLjQ1aDBBOCw4LDAsMCwxLDQxOCwzMTQuNDNsMTQuNzgsNi4xMkE4LDgsMCwwLDEsNDM3LjA4LDMzMVpNNDQ0LDI2NEg0MjhhOCw4LDAsMCwxLTgtOGgwYTgsOCwwLDAsMSw4LThoMTZhOCw4LDAsMCwxLDgsOGgwQTgsOCwwLDAsMSw0NDQsMjY0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYWxlc2ZvcmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OC44OSAyNDUuNjRoLTI2LjM1Yy42OS01LjE2IDMuMzItMTQuMTIgMTMuNjQtMTQuMTIgNi43NSAwIDExLjk3IDMuODIgMTIuNzEgMTQuMTJ6bTEzNi42Ni0xMy44OGMtLjQ3IDAtMTQuMTEtMS43Ny0xNC4xMSAyMHMxMy42MyAyMCAxNC4xMSAyMGMxMyAwIDE0LjExLTEzLjU0IDE0LjExLTIwIDAtMjEuNzYtMTMuNjYtMjAtMTQuMTEtMjB6bS0yNDMuMjIgMjMuNzZhOC42MyA4LjYzIDAgMCAwLTMuMjkgNy4yOWMwIDQuNzggMi4wOCA2LjA1IDMuMjkgNy4wNSA0LjcgMy43IDE1LjA3IDIuMTIgMjAuOTMuOTV2LTE2Ljk0Yy01LjMyLTEuMDctMTYuNzMtMS45Ni0yMC45MyAxLjY1ek02NDAgMjMyYzAgODcuNTgtODAgMTU0LjM5LTE2NS4zNiAxMzYuNDMtMTguMzcgMzMtNzAuNzMgNzAuNzUtMTMyLjIgNDEuNjMtNDEuMTYgOTYuMDUtMTc3Ljg5IDkyLjE4LTIxMy44MS01LjE3QzguOTEgNDI4Ljc4LTUwLjE5IDI2Ni41MiA1My4zNiAyMDUuNjEgMTguNjEgMTI2LjE4IDc2IDMyIDE2Ny42NyAzMmExMjQuMjQgMTI0LjI0IDAgMCAxIDk4LjU2IDQ4LjdjMjAuNy0yMS40IDQ5LjQtMzQuODEgODEuMTUtMzQuODEgNDIuMzQgMCA3OSAyMy41MiA5OC44IDU4LjU3QzUzOSA2My43OCA2NDAgMTMyLjY5IDY0MCAyMzJ6bS01MTkuNTUgMzEuOGMwLTExLjc2LTExLjY5LTE1LjE3LTE3Ljg3LTE3LjE3LTUuMjctMi4xMS0xMy40MS0zLjUxLTEzLjQxLTguOTQgMC05LjQ2IDE3LTYuNjYgMjUuMTctMi4xMiAwIDAgMS4xNy43MSAxLjY0LS40Ny4yNC0uNyAyLjM2LTYuNTggMi41OS03LjI5YTEuMTMgMS4xMyAwIDAgMC0uNy0xLjQxYy0xMi4zMy03LjYzLTQwLjctOC41MS00MC43IDEyLjcgMCAxMi40NiAxMS40OSAxNS40NCAxNy44OCAxNy4xNyA0LjcyIDEuNTggMTMuMTcgMyAxMy4xNyA4LjcgMCA0LTMuNTMgNy4wNi05LjE3IDcuMDZhMzEuNzYgMzEuNzYgMCAwIDEtMTktNi4zNWMtLjQ3LS4yMy0xLjQyLS43MS0xLjY1LjcxbC0yLjQgNy40N2MtLjQ3Ljk0LjIzIDEuMTguMjMgMS40MSAxLjc1IDEuNCAxMC4zIDYuNTkgMjIuODIgNi41OSAxMy4xNyAwIDIxLjQtNy4wNiAyMS40LTE4LjExem0zMi00Mi41OGMtMTAuMTMgMC0xOC42NiAzLjE3LTIxLjQgNS4xOGExIDEgMCAwIDAtLjI0IDEuNDFsMi41OSA3LjA2YTEgMSAwIDAgMCAxLjE4LjdjLjY1IDAgNi44LTQgMTYuOTMtNCA0IDAgNy4wNi43MSA5LjE4IDIuMzYgMy42IDIuOCAzLjA2IDguMjkgMy4wNiAxMC41OC00Ljc5LS4zLTE5LjExLTMuNDQtMjkuNDEgMy43NmExNi45MiAxNi45MiAwIDAgMC03LjM0IDE0LjU0YzAgNS45IDEuNTEgMTAuNCA2LjU5IDE0LjM1IDEyLjI0IDguMTYgMzYuMjggMiAzOC4xIDEuNDEgMS41OC0uMzIgMy41My0uNjYgMy41My0xLjg4di0zMy44OGMuMDQtNC42MS4zMi0yMS42NC0yMi43OC0yMS42NHpNMTk5IDIwMC4yNGExLjExIDEuMTEgMCAwIDAtMS4xOC0xLjE4SDE4OGExLjExIDEuMTEgMCAwIDAtMS4xNyAxLjE4djc5YTEuMTEgMS4xMSAwIDAgMCAxLjE3IDEuMThoOS44OGExLjExIDEuMTEgMCAwIDAgMS4xOC0xLjE4em01NS43NSAyOC45M2MtMi4xLTIuMzEtNi43OS03LjUzLTE3LjY1LTcuNTMtMy41MSAwLTE0LjE2LjIzLTIwLjcgOC45NC02LjM1IDcuNjMtNi41OCAxOC4xMS02LjU4IDIxLjQxIDAgMy4xMi4xNSAxNC4yNiA3LjA2IDIxLjE3IDIuNjQgMi45MSA5LjA2IDguMjMgMjIuODEgOC4yMyAxMC44MiAwIDE2LjQ3LTIuMzUgMTguNTgtMy43Ni40Ny0uMjQuNzEtLjcxLjI0LTEuODhsLTIuMzUtNi44M2ExLjI2IDEuMjYgMCAwIDAtMS40MS0uN2MtMi41OS45NC02LjM1IDIuODItMTUuMjkgMi44Mi0xNy40MiAwLTE2Ljg1LTE0Ljc0LTE2Ljk0LTE2LjdoMzcuMTdhMS4yMyAxLjIzIDAgMCAwIDEuMTctLjk0Yy0uMjkgMCAyLjA3LTE0LjctNi4wOS0yNC4yM3ptMzYuNjkgNTIuNjljMTMuMTcgMCAyMS40MS03LjA2IDIxLjQxLTE4LjExIDAtMTEuNzYtMTEuNy0xNS4xNy0xNy44OC0xNy4xNy00LjE0LTEuNjYtMTMuNDEtMy4zOC0xMy40MS04Ljk0IDAtMy43NiAzLjI5LTYuMzUgOC40Ny02LjM1YTM4LjExIDM4LjExIDAgMCAxIDE2LjcgNC4yM3MxLjE4LjcxIDEuNjUtLjQ3Yy4yMy0uNyAyLjM1LTYuNTggMi41OC03LjI5YTEuMTMgMS4xMyAwIDAgMC0uNy0xLjQxYy03LjkxLTQuOS0xNi43NC00Ljk0LTIwLjIzLTQuOTQtMTIgMC0yMC40NiA3LjI5LTIwLjQ2IDE3LjY0IDAgMTIuNDYgMTEuNDggMTUuNDQgMTcuODcgMTcuMTcgNi4xMSAyIDEzLjE3IDMuMjYgMTMuMTcgOC43IDAgNC0zLjUyIDcuMDYtOS4xNyA3LjA2YTMxLjggMzEuOCAwIDAgMS0xOS02LjM1IDEgMSAwIDAgMC0xLjY1LjcxbC0yLjM1IDcuNTJjLS40Ny45NC4yMyAxLjE4LjIzIDEuNDEgMS43MiAxLjQgMTAuMzMgNi41OSAyMi43OSA2LjU5ek0zNTcuMDkgMjI0YzAtLjcxLS4yNC0xLjE4LTEuMTgtMS4xOGgtMTEuNzZjMC0uMTQuOTQtOC45NCA0LjQ3LTEyLjQ3IDQuMTYtNC4xNSAxMS43Ni0xLjY0IDEyLTEuNjQgMS4xNy40NyAxLjQxIDAgMS42NC0uNDdsMi44My03Ljc3Yy43LS45NCAwLTEuMTctLjI0LTEuNDEtNS4wOS0yLTE3LjM1LTIuODctMjQuNDYgNC4yNC01LjQ4IDUuNDgtNyAxMy45Mi04IDE5LjUyaC04LjQ3YTEuMjggMS4yOCAwIDAgMC0xLjE3IDEuMThsLTEuNDIgNy43NmMwIC43LjI0IDEuMTcgMS4xOCAxLjE3aDguMjNjLTguNTEgNDcuOS04Ljc1IDUwLjIxLTEwLjM1IDU1LjUyLTEuMDggMy42Mi0zLjI5IDYuOS01Ljg4IDcuNzYtLjA5IDAtMy44OCAxLjY4LTkuNjQtLjI0IDAgMC0uOTQtLjQ3LTEuNDEuNzEtLjI0LjcxLTIuNTkgNi44Mi0yLjgzIDcuNTNzMCAxLjQxLjQ3IDEuNDFjNS4xMSAyIDEzIDEuNzcgMTcuODggMCA2LjI4LTIuMjggOS43Mi03Ljg5IDExLjUzLTEyLjk0IDIuNzUtNy43MSAyLjgxLTkuNzkgMTEuNzYtNTkuNzRoMTIuMjNhMS4yOSAxLjI5IDAgMCAwIDEuMTgtMS4xOHptNTMuMzkgMTZjLS41Ni0xLjY4LTUuMS0xOC4xMS0yNS4xNy0xOC4xMS0xNS4yNSAwLTIzIDEwLTI1LjE2IDE4LjExLTEgMy0zLjE4IDE0IDAgMjMuNTIuMDkuMyA0LjQxIDE4LjEyIDI1LjE2IDE4LjEyIDE0Ljk1IDAgMjIuOS05LjYxIDI1LjE3LTE4LjEyIDMuMjEtOS42MSAxLjAxLTIwLjUyIDAtMjMuNTJ6bTQ1LjQtMTYuN2MtNS0xLjY1LTE2LjYyLTEuOS0yMi4xMSA1LjQxdi00LjQ3YTEuMTEgMS4xMSAwIDAgMC0xLjE4LTEuMTdoLTkuNGExLjExIDEuMTEgMCAwIDAtMS4xOCAxLjE3djU1LjI4YTEuMTIgMS4xMiAwIDAgMCAxLjE4IDEuMThoOS42NGExLjEyIDEuMTIgMCAwIDAgMS4xOC0xLjE4di0yNy43N2MwLTIuOTEuMDUtMTEuMzcgNC40Ni0xNS4wNSA0LjktNC45IDEyLTMuMzYgMTMuNDEtMy4wNmExLjU3IDEuNTcgMCAwIDAgMS40MS0uOTQgNzQgNzQgMCAwIDAgMy4wNi04IDEuMTYgMS4xNiAwIDAgMC0uNDctMS40MXptNDYuODEgNTQuMWwtMi4xMi03LjI5Yy0uNDctMS4xOC0xLjQxLS43MS0xLjQxLS43MS00LjIzIDEuODItMTAuMTUgMS44OS0xMS4yOSAxLjg5LTQuNjQgMC0xNy4xNy0xLjEzLTE3LjE3LTE5Ljc2IDAtNi4yMyAxLjg1LTE5Ljc2IDE2LjQ3LTE5Ljc2YTM0Ljg1IDM0Ljg1IDAgMCAxIDExLjUyIDEuNjVzLjk0LjQ3IDEuMTgtLjcxYy45NC0yLjU5IDEuNjQtNC40NyAyLjU5LTcuNTMuMjMtLjk0LS40Ny0xLjE3LS43MS0xLjE3LTExLjU5LTMuODctMjIuMzQtMi41My0yNy43NiAwLTEuNTkuNzQtMTYuMjMgNi40OS0xNi4yMyAyNy41MiAwIDIuOS0uNTggMzAuMTEgMjguOTQgMzAuMTFhNDQuNDUgNDQuNDUgMCAwIDAgMTUuNTItMi44MyAxLjMgMS4zIDAgMCAwIC40Ny0xLjQyem01My44Ny0zOS41MmMtLjgtMy01LjM3LTE2LjIzLTIyLjM1LTE2LjIzLTE2IDAtMjMuNTIgMTAuMTEtMjUuNjQgMTguNTlhMzguNTggMzguNTggMCAwIDAtMS42NSAxMS43NmMwIDI1Ljg3IDE4Ljg0IDI5LjQgMjkuODggMjkuNCAxMC44MiAwIDE2LjQ2LTIuMzUgMTguNTgtMy43Ni40Ny0uMjQuNzEtLjcxLjI0LTEuODhsLTIuMzYtNi44M2ExLjI2IDEuMjYgMCAwIDAtMS40MS0uN2MtMi41OS45NC02LjM1IDIuODItMTUuMjkgMi44Mi0xNy40MiAwLTE2Ljg1LTE0Ljc0LTE2LjkzLTE2LjdoMzcuMTZhMS4yNSAxLjI1IDAgMCAwIDEuMTgtLjk0Yy0uMjQtLjAxLjk0LTcuMDctMS40MS0xNS41NHptLTIzLjI5LTYuMzVjLTEwLjMzIDAtMTMgOS0xMy42NCAxNC4xMkg1NDZjLS44OC0xMS45Mi03LjYyLTE0LjEzLTEyLjczLTE0LjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMS44NCAzNzguOTJjLS4zLjYtLjYgMS4wOCAwIDB6bTI0OS4xMy04N2ExMzEuMTYgMTMxLjE2IDAgMCAwLTU4IDEzLjVjLTUuOS0xMS45LTEyLTIyLjMtMTMtMzAuMS0xLjItOS4xLTIuNS0xNC41LTEuMS0yNS4zczcuNy0yNi4xIDcuNi0yNy4yLTEuNC02LjYtMTQuMy02LjctMjQgMi41LTI1LjI5IDUuOWExMjIuODMgMTIyLjgzIDAgMCAwLTUuMyAxOS4xYy0yLjMgMTEuNy0yNS43OSA1My41LTM5LjA5IDc1LjMtNC40LTguNS04LjEtMTYtOC45LTIyLTEuMi05LjEtMi41LTE0LjUtMS4xLTI1LjNzNy43LTI2LjEgNy42LTI3LjItMS40LTYuNi0xNC4yOS02LjctMjQgMi41LTI1LjMgNS45LTIuNyAxMS40LTUuMyAxOS4xLTMzLjg5IDc3LjMtNDIuMDggOTUuNGMtNC4yIDkuMi03LjggMTYuNi0xMC40IDIxLjYtLjQuOC0uNyAxLjMtLjkgMS43LjMtLjUuNS0xIC41LS44LTIuMiA0LjMtMy41IDYuNy0zLjUgNi43di4xYy0xLjcgMy4yLTMuNiA2LjEtNC41IDYuMS0uNiAwLTEuOS04LjQuMy0xOS45IDQuNy0yNC4yIDE1LjgtNjEuOCAxNS43LTYzLjEtLjEtLjcgMi4xLTcuMi03LjMtMTAuNy05LjEtMy4zLTEyLjQgMi4yLTEzLjIgMi4ycy0xLjQgMi0xLjQgMiAxMC4xLTQyLjQtMTkuMzktNDIuNGMtMTguNCAwLTQ0IDIwLjItNTYuNTggMzguNS03LjkgNC4zLTI1IDEzLjYtNDMgMjMuNS02LjkgMy44LTE0IDcuNy0yMC43IDExLjQtLjUtLjUtLjktMS0xLjQtMS41LTM1Ljc5LTM4LjItMTAxLjg3LTY1LjItOTkuMDctMTE2LjUgMS0xOC43IDcuNS02Ny44IDEyNy4wNy0xMjcuNCA5OC00OC44IDE3Ni4zNS0zNS40IDE4OS44NC01LjYgMTkuNCA0Mi41LTQxLjg5IDEyMS42LTE0My42NiAxMzMtMzguNzkgNC4zLTU5LjE4LTEwLjctNjQuMjgtMTYuMy01LjMtNS45LTYuMS02LjItOC4xLTUuMS0zLjMgMS44LTEuMiA3IDAgMTAuMSAzIDcuOSAxNS41IDIxLjkgMzYuNzkgMjguOSAxOC43IDYuMSA2NC4xOCA5LjUgMTE5LjE3LTExLjggNjEuNzgtMjMuOCAxMDkuODctOTAuMSA5NS43Ny0xNDUuNkMzODYuNTIgMTguMzIgMjkzLS4xOCAyMDQuNTcgMzEuMjJjLTUyLjY5IDE4LjctMTA5LjY3IDQ4LjEtMTUwLjY2IDg2LjQtNDguNjkgNDUuNi01Ni40OCA4NS4zLTUzLjI4IDEwMS45IDExLjM5IDU4LjkgOTIuNTcgOTcuMyAxMjUuMDYgMTI1LjctMS42LjktMy4xIDEuNy00LjUgMi41LTE2LjI5IDguMS03OC4xOCA0MC41LTkzLjY3IDc0LjctMTcuNSAzOC44IDIuOSA2Ni42IDE2LjI5IDcwLjQgNDEuNzkgMTEuNiA4NC41OC05LjMgMTA3LjU3LTQzLjZzMjAuMi03OS4xIDkuNi05OS41Yy0uMS0uMy0uMy0uNS0uNC0uOCA0LjItMi41IDguNS01IDEyLjgtNy41IDguMjktNC45IDE2LjM5LTkuNCAyMy40OS0xMy4zLTQgMTAuOC02LjkgMjMuOC04LjQgNDIuNi0xLjggMjIgNy4zIDUwLjUgMTkuMSA2MS43IDUuMiA0LjkgMTEuNDkgNSAxNS4zOSA1IDEzLjggMCAyMC0xMS40IDI2Ljg5LTI1IDguNS0xNi42IDE2LTM1LjkgMTYtMzUuOXMtOS40IDUyLjIgMTYuMyA1Mi4yYzkuMzkgMCAxOC43OS0xMi4xIDIzLTE4LjN2LjFzLjItLjQuNy0xLjJjMS0xLjUgMS41LTIuNCAxLjUtMi40di0uM2MzLjgtNi41IDEyLjEtMjEuNCAyNC41OS00NiAxNi4yLTMxLjggMzEuNjktNzEuNSAzMS42OS03MS41YTIwMS4yNCAyMDEuMjQgMCAwIDAgNi4yIDI1LjhjMi44IDkuNSA4LjcgMTkuOSAxMy40IDMwLTMuOCA1LjItNi4xIDguMi02LjEgOC4yYS4zMS4zMSAwIDAgMCAuMS4yYy0zIDQtNi40IDguMy05LjkgMTIuNS0xMi43OSAxNS4yLTI4IDMyLjYtMzAgMzcuNi0yLjQgNS45LTEuOCAxMC4zIDIuOCAxMy43IDMuNCAyLjYgOS40IDMgMTUuNjkgMi41IDExLjUtLjggMTkuNi0zLjYgMjMuNS01LjRhODIuMiA4Mi4yIDAgMCAwIDIwLjE5LTEwLjZjMTIuNS05LjIgMjAuMS0yMi40IDE5LjQtMzkuOC0uNC05LjYtMy41LTE5LjItNy4zLTI4LjIgMS4xLTEuNiAyLjMtMy4zIDMuNC01QzQzNC44IDMwMS43MiA0NTAuMSAyNzAgNDUwLjEgMjcwYTIwMS4yNCAyMDEuMjQgMCAwIDAgNi4yIDI1LjhjMi40IDguMSA3LjA5IDE3IDExLjM5IDI1LjctMTguNTkgMTUuMS0zMC4wOSAzMi42LTM0LjA5IDQ0LjEtNy40IDIxLjMtMS42IDMwLjkgOS4zIDMzLjEgNC45IDEgMTEuOS0xLjMgMTcuMS0zLjVhNzkuNDYgNzkuNDYgMCAwIDAgMjEuNTktMTEuMWMxMi41LTkuMiAyNC41OS0yMi4xIDIzLjc5LTM5LjYtLjMtNy45LTIuNS0xNS44LTUuNC0yMy40IDE1LjctNi42IDM2LjA5LTEwLjIgNjIuMDktNy4yIDU1LjY4IDYuNSA2Ni41OCA0MS4zIDY0LjQ4IDU1LjhzLTEzLjggMjIuNi0xNy43IDI1LTUuMSAzLjMtNC44IDUuMWMuNSAyLjYgMi4zIDIuNSA1LjYgMS45IDQuNi0uOCAyOS4xOS0xMS44IDMwLjI5LTM4LjcgMS42LTM0LTMxLjA5LTcxLjQtODktNzEuMXptLTQyOS4xOCAxNDQuN2MtMTguMzkgMjAuMS00NC4xOSAyNy43LTU1LjI4IDIxLjNDNTQuNjEgNDUxIDU5LjMxIDQyMS40MiA4MiA0MDBjMTMuOC0xMyAzMS41OS0yNSA0My4zOS0zMi40IDIuNy0xLjYgNi42LTQgMTEuNC02LjkuOC0uNSAxLjItLjcgMS4yLS43LjktLjYgMS45LTEuMSAyLjktMS43IDguMjkgMzAuNC4zIDU3LjItMTkuMSA3OC4zem0xMzQuMzYtOTEuNGMtNi40IDE1LjctMTkuODkgNTUuNy0yOC4wOSA1My42LTctMS44LTExLjMtMzIuMy0xLjQtNjIuMyA1LTE1LjEgMTUuNi0zMy4xIDIxLjktNDAuMSAxMC4wOS0xMS4zIDIxLjE5LTE0LjkgMjMuNzktMTAuNCAzLjUgNS45LTEyLjIgNDkuNC0xNi4yIDU5LjJ6bTExMSA1M2MtMi43IDEuNC01LjIgMi4zLTYuNCAxLjYtLjktLjUgMS4xLTIuNCAxLjEtMi40czEzLjktMTQuOSAxOS40LTIxLjdjMy4yLTQgNi45LTguNyAxMC44OS0xMy45IDAgLjUuMSAxIC4xIDEuNi0uMTMgMTcuOS0xNy4zMiAzMC0yNS4xMiAzNC44em04NS41OC0xOS41Yy0yLTEuNC0xLjctNi4xIDUtMjAuNyAyLjYtNS43IDguNTktMTUuMyAxOS0yNC41YTM2LjE4IDM2LjE4IDAgMCAxIDEuOSAxMC44Yy0uMSAyMi41LTE2LjIgMzAuOS0yNS44OSAzNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY2hsaXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUwLjUgMTU3LjdsLTU0LjItNDYuMSA3My40LTM5IDc4LjMgNDQuMi05Ny41IDQwLjl6TTE5MiAxMjIuMWw0NS43LTI4LjIgMzQuNyAzNC42LTU1LjQgMjktMjUtMzUuNHptLTY1LjEgNi42bDMxLjktMjIuMUwxNzYgMTM1bC0zNi43IDIyLjUtMTIuNC0yOC44em0tMjMuMyA4OC4ybC04LjgtMzQuOCAyOS42LTE4LjMgMTMuMSAzNS4zLTMzLjkgMTcuOHptLTIxLjItODMuN2wyMy45LTE4LjEgOC45IDI0LTI2LjcgMTguMy02LjEtMjQuMnpNNTkgMjA2LjVsLTMuNi0yOC40IDIyLjMtMTUuNSA2LjEgMjguN0w1OSAyMDYuNXptLTMwLjYgMTYuNmwyMC44LTEyLjggMy4zIDMzLjQtMjIuOSAxMi0xLjItMzIuNnpNMS40IDI2OGwxOS4yLTEwLjIuNCAzOC4yLTIxIDguOEwxLjQgMjY4em01OS4xIDU5LjNsLTI4LjMgOC4zLTEuNi00Ni44IDI1LjEtMTAuNyA0LjggNDkuMnpNOTkgMjYzLjJsLTMxLjEgMTMtNS4yLTQwLjhMOTAuMSAyMjFsOC45IDQyLjJ6TTEyMy4yIDM3N2wtNDEuNiA1LjktOC4xLTYzLjUgMzUuMi0xMC44IDE0LjUgNjguNHptMjguNS0xMzkuOWwyMS4yIDU3LjEtNDYuMiAxMy42LTEzLjctNTQuMSAzOC43LTE2LjZ6bTg1LjcgMjMwLjVsLTcwLjktMy4zLTI0LjMtOTUuOCA1NS4yLTguNiA0MCAxMDcuN3ptLTg0LjktMjc5LjdsNDIuMi0yMi40IDI4IDQ1LjktNTAuOCAyMS4zLTE5LjQtNDQuOHptNDEgOTQuOWw2MS4zLTE4LjcgNTIuOCA4Ni42LTc5LjggMTEuMy0zNC4zLTc5LjJ6bTUxLjQtODUuNmw2Ny4zLTI4LjggNjUuNSA2NS40LTg4LjYgMjYuMi00NC4yLTYyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjcmliZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Mi4zIDI1Mi43Yy0xNi4xLTE5LTI0LjctNDUuOS0yNC44LTc5LjkgMC0xMDAuNCA3NS4yLTE1My4xIDE2Ny4yLTE1My4xIDk4LjYtMS42IDE1Ni44IDQ5IDE4NC4zIDcwLjZsLTUwLjUgNzIuMS0zNy4zLTI0LjYgMjYuOS0zOC42Yy0zNi41LTI0LTc5LjQtMzYuNS0xMjMtMzUuOC01MC43LS44LTExMS43IDI3LjItMTExLjcgNzYuMiAwIDE4LjcgMTEuMiAyMC43IDI4LjYgMTUuNiAyMy4zLTUuMyA0MS45LjYgNTUuOCAxNCAyNi40IDI0LjMgMjMuMiA2Ny42LS43IDkxLjktMjkuMiAyOS41LTg1LjIgMjcuMy0xMTQuOC04LjR6bTMxNy43IDUuOWMtMTUuNS0xOC44LTM4LjktMjkuNC02My4yLTI4LjYtMzguMS0yLTcxLjEgMjgtNzAuNSA2Ny4yLS43IDE2LjggNiAzMyAxOC40IDQ0LjMgMTQuMSAxMy45IDMzIDE5LjcgNTYuMyAxNC40IDE3LjQtNS4xIDI4LjYtMy4xIDI4LjYgMTUuNiAwIDQuMy0uNSA4LjUtMS40IDEyLjctMTYuNyA0MC45LTU5LjUgNjQuNC0xMjEuNCA2NC40LTUxLjkuMi0xMDIuNC0xNi40LTE0NC4xLTQ3LjNsMzMuNy0zOS40LTM1LjYtMjcuNEwwIDQwNi4zbDE1LjQgMTMuOGM1Mi41IDQ2LjggMTIwLjQgNzIuNSAxOTAuNyA3Mi4yIDUxLjQgMCA5NC40LTEwLjUgMTMzLjYtNDQuMSA1Ny4xLTUxLjQgNTQuMi0xNDkuMiAyMC4zLTE4OS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZWFyY2hlbmdpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDYwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjAuNiAxMzAuM2wtNjcuMiAyOC4yVjQzLjJMOTguNyAyMzMuNWw1NC43LTI0LjJ2MTMwLjNsNjcuMi0yMDkuM3ptLTgzLjItOTYuN2wtMS4zIDQuNy0xNS4yIDUyLjlDODAuNiAxMDYuNyA1MiAxNDUuOCA1MiAxOTEuNWMwIDUyLjMgMzQuMyA5NS45IDgzLjQgMTA1LjV2NTMuNkM1Ny41IDM0MC4xIDAgMjcyLjQgMCAxOTEuNmMwLTgwLjUgNTkuOC0xNDcuMiAxMzcuNC0xNTh6bTMxMS40IDQ0Ny4yYy0xMS4yIDExLjItMjMuMSAxMi4zLTI4LjYgMTAuNS01LjQtMS44LTI3LjEtMTkuOS02MC40LTQ0LjQtMzMuMy0yNC42LTMzLjYtMzUuNy00My01Ni43LTkuNC0yMC45LTMwLjQtNDIuNi01Ny41LTUyLjRsLTkuNy0xNC43Yy0yNC43IDE2LjktNTMgMjYuOS04MS4zIDI4LjdsMi4xLTYuNiAxNS45LTQ5LjVjNDYuNS0xMS45IDgwLjktNTQgODAuOS0xMDQuMiAwLTU0LjUtMzguNC0xMDIuMS05Ni0xMDcuMVYzMi4zQzI1NC40IDM3LjQgMzIwIDEwNi44IDMyMCAxOTEuNmMwIDMzLjYtMTEuMiA2NC43LTI5IDkwLjRsMTQuNiA5LjZjOS44IDI3LjEgMzEuNSA0OCA1Mi40IDU3LjRzMzIuMiA5LjcgNTYuOCA0M2MyNC42IDMzLjIgNDIuNyA1NC45IDQ0LjUgNjAuM3MuNyAxNy4zLTEwLjUgMjguNXptLTkuOS0xNy45YzAtNC40LTMuNi04LTgtOHMtOCAzLjYtOCA4IDMuNiA4IDggOCA4LTMuNiA4LTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlbGxjYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1My40IDMySDk0LjdDNDIuNiAzMiAwIDc0LjYgMCAxMjYuNnYyNTguN0MwIDQzNy40IDQyLjYgNDgwIDk0LjcgNDgwaDI1OC43YzUyLjEgMCA5NC43LTQyLjYgOTQuNy05NC42VjEyNi42YzAtNTItNDIuNi05NC42LTk0LjctOTQuNnptLTUwIDMxNi40Yy0yNy45IDQ4LjItODkuOSA2NC45LTEzOC4yIDM3LjItMjIuOSAzOS44LTU0LjkgOC42LTQyLjMtMTMuMmwxNS43LTI3LjJjNS45LTEwLjMgMTkuMi0xMy45IDI5LjUtNy45IDE4LjYgMTAuOC0uMS0uMSAxOC41IDEwLjcgMjcuNiAxNS45IDYzLjQgNi4zIDc5LjQtMjEuMyAxNS45LTI3LjYgNi4zLTYzLjQtMjEuMy03OS40LTE3LjgtMTAuMi0uNi0uNC0xOC42LTEwLjYtMjQuNi0xNC4yLTMuNC01MS45IDIxLjYtMzcuNSAxOC42IDEwLjgtLjEtLjEgMTguNSAxMC43IDQ4LjQgMjggNjUuMSA5MC4zIDM3LjIgMTM4LjV6bTIxLjgtMjA4LjhjLTE3IDI5LjUtMTYuMyAyOC44LTE5IDMxLjUtNi41IDYuNS0xNi4zIDguNy0yNi41IDMuNi0xOC42LTEwLjguMS4xLTE4LjUtMTAuNy0yNy42LTE1LjktNjMuNC02LjMtNzkuNCAyMS4zcy02LjMgNjMuNCAyMS4zIDc5LjRjMCAwIDE4LjUgMTAuNiAxOC42IDEwLjYgMjQuNiAxNC4yIDMuNCA1MS45LTIxLjYgMzcuNS0xOC42LTEwLjguMS4xLTE4LjUtMTAuNy00OC4yLTI3LjgtNjQuOS05MC4xLTM3LjEtMTM4LjQgMjcuOS00OC4yIDg5LjktNjQuOSAxMzguMi0zNy4ybDQuOC04LjRjMTQuMy0yNC45IDUyLTMuMyAzNy43IDIxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlbGxzeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MzkuNzEgMjM3LjMwOGMzLjA2NC0xMi4yNTcgNC4yOS0yNC44MjEgNC4yOS0zNy4zODRDNTQ0IDEwNy4zODIgNDY4LjYxOCAzMiAzNzYuMDc2IDMyYy03Ny4yMiAwLTE0NC42MzQgNTMuMDEyLTE2My4wMiAxMjcuNzgxLTE1LjMyMi0xMy4xNzYtMzQuOTM0LTIwLjUzLTU1LjE1Ny0yMC41My00Ni4yNzEgMC04My45NjIgMzcuNjktODMuOTYyIDgzLjk2MSAwIDcuMzU0LjkyIDE1LjAxNSAzLjA2NSAyMi4zNjktNDIuOSAyMC4yMjUtNzAuNzg1IDYzLjczOC03MC43ODUgMTExLjIzNEM2LjIxNiA0MjQuODQzIDYxLjY4IDQ4MCAxMjkuNDAxIDQ4MGgzODEuMTk4YzY3LjcyIDAgMTIzLjE4NC01NS4xNTcgMTIzLjE4NC0xMjMuMTg0LjAwMS01Ni4zODQtMzguOTE2LTEwNi4wMjUtOTQuMDczLTExOS41MDh6TTE5OS44OCA0MDEuNTU0YzAgOC4yNzQtNy4wNDggMTUuMzIxLTE1LjMyMSAxNS4zMjFIMTUzLjYxYy04LjI3NCAwLTE1LjMyMS03LjA0OC0xNS4zMjEtMTUuMzIxVjI5MC42MjZjMC04LjI3MyA3LjA0OC0xNS4zMjEgMTUuMzIxLTE1LjMyMWgzMC45NDljOC4yNzQgMCAxNS4zMjEgNy4wNDggMTUuMzIxIDE1LjMyMXYxMTAuOTI4em04OS40NzcgMGMwIDguMjc0LTcuMDQ4IDE1LjMyMS0xNS4zMjIgMTUuMzIxaC0zMC45NDljLTguMjc0IDAtMTUuMzIxLTcuMDQ4LTE1LjMyMS0xNS4zMjFWMjcwLjA5NmMwLTguMjc0IDcuMDQ4LTE1LjMyMSAxNS4zMjEtMTUuMzIxaDMwLjk0OWM4LjI3NCAwIDE1LjMyMiA3LjA0OCAxNS4zMjIgMTUuMzIxdjEzMS40NTh6bTg5LjQ3NyAwYzAgOC4yNzQtNy4wNDcgMTUuMzIxLTE1LjMyMSAxNS4zMjFoLTMwLjk0OWMtOC4yNzQgMC0xNS4zMjItNy4wNDgtMTUuMzIyLTE1LjMyMVYyMzguODRjMC04LjI3NCA3LjA0OC0xNS4zMjEgMTUuMzIyLTE1LjMyMWgzMC45NDljOC4yNzQgMCAxNS4zMjEgNy4wNDggMTUuMzIxIDE1LjMyMXYxNjIuNzE0em04Ny4wMjcgMGMwIDguMjc0LTcuMDQ4IDE1LjMyMS0xNS4zMjIgMTUuMzIxaC0yOC40OTdjLTguMjc0IDAtMTUuMzIxLTcuMDQ4LTE1LjMyMS0xNS4zMjFWMTc2Ljk0MWMwLTguNTc5IDcuMDQ3LTE1LjYyOCAxNS4zMjEtMTUuNjI4aDI4LjQ5N2M4LjI3NCAwIDE1LjMyMiA3LjA0OCAxNS4zMjIgMTUuNjI4djIyNC42MTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlcnZpY2VzdGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04OCAyMTZjODEuNyAxMC4yIDI3My43IDEwMi4zIDMwNCAyMzJIMGM5OS41LTguMSAxODQuNS0xMzcgODgtMjMyem0zMi0xNTJjMzIuMyAzNS42IDQ3LjcgODMuOSA0Ni40IDEzMy42QzI0OS4zIDIzMS4zIDM3My43IDMyMS4zIDQwMCA0NDhoOTZDNDU1LjMgMjMxLjkgMjIyLjggNzkuNSAxMjAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaXJ0c2luYnVsayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDAgNDEwLjNsMzAuNiAxMy40IDQuNC05LjktMzAuNi0xMy40em0zOS40IDE3LjVsMzAuNiAxMy40IDQuNC05LjktMzAuNi0xMy40em0xNzIuMS0xNGw0LjQgOS45IDMwLjYtMTMuNC00LjQtOS45ek0xNzkuMSA0NDVsMzAuMyAxMy43IDQuNC05LjktMzAuMy0xMy40ek02MC40IDM5Mi44TDkxIDQwNi4ybDQuNC05LjYtMzAuNi0xMy43em0yMTEuNCAzOC41bDQuNCA5LjkgMzAuNi0xMy40LTQuNC05Ljl6bS0zOS4zIDE3LjVsNC40IDkuOSAzMC42LTEzLjctNC40LTkuNnptMTE4LjQtNTIuMmw0LjQgOS42IDMwLjYtMTMuNC00LjQtOS45ek0xNzAgNDYuNmgtMzMuNXYxMC41SDE3MHptLTQ3LjIgMEg4OS4ydjEwLjVoMzMuNXptLTQ3LjMgMEg0Mi4zdjEwLjVoMzMuM3ptMTQxLjUgMGgtMzMuMnYxMC41SDIxN3ptOTQuNSAwSDI3OHYxMC41aDMzLjV6bTQ3LjMgMGgtMzMuNXYxMC41aDMzLjV6bS05NC42IDBIMjMxdjEwLjVoMzMuMnptMTQxLjUgMGgtMzMuM3YxMC41aDMzLjN6TTUyLjggMzUxLjFINDJ2MzMuNWgxMC44em03MC0yMTUuOUg4OS4ydjEwLjVoMzMuNXptLTcwIDEwLjZoMjIuOHYtMTAuNUg0MnYzMy41aDEwLjh6bTE2OC45IDIyOC42YzUwLjUgMCA5MS4zLTQwLjggOTEuMy05MS4zIDAtNTAuMi00MC44LTkxLjMtOTEuMy05MS4zLTUwLjIgMC05MS4zIDQxLjEtOTEuMyA5MS4zIDAgNTAuNSA0MS4xIDkxLjMgOTEuMyA5MS4zem0tNDguMi0xMTEuMWMwLTI1LjQgMjkuNS0zMS44IDQ5LjYtMzEuOCAxNi45IDAgMjkuMiA1LjggNDQuMyAxMmwtOC44IDE2LjloLS45Yy02LjQtOS45LTI0LjgtMTMuMS0zNS42LTEzLjEtOSAwLTI5LjggMS44LTI5LjggMTQuOSAwIDIxLjYgNzguNS0xMC4yIDc4LjUgMzcuOSAwIDI1LjQtMzEuNSAzMS4yLTUxIDMxLjItMTguMSAwLTMyLjQtMi45LTQ3LjItMTIuMmw5LTE4LjRoLjljNi4xIDEyLjIgMjMuNiAxNC45IDM1LjkgMTQuOSA4LjcgMCAzMi43LTEuMiAzMi43LTE0LjMgMC0yNi4xLTc3LjYgNi4zLTc3LjYtMzh6TTUyLjggMTc4LjRINDJWMjEyaDEwLjh6bTM0Mi40IDIwNi4ySDQwNnYtMzMuNWgtMTAuOHpNNTIuOCAzMDcuOUg0MnYzMy41aDEwLjh6TTAgMy43djQwNmwyMjEuNyA5OC42TDQ0OCA0MDkuN1YzLjd6bTQxOC44IDM4Ny4xTDIyMiA0NzYuNSAyOS4yIDM5MC44VjEyMC43aDM4OS43djI3MC4xem0wLTI5OS4zSDI5LjJWMzIuOWgzODkuN3Y1OC42em0tMzY2IDEzMC4xSDQydjMzLjVoMTAuOHptMCA0My4ySDQydjMzLjVoMTAuOHpNMTcwIDEzNS4yaC0zMy41djEwLjVIMTcwem0yMjUuMiAxNjMuMUg0MDZ2LTMzLjVoLTEwLjh6bTAtNDMuMkg0MDZ2LTMzLjVoLTEwLjh6TTIxNyAxMzUuMmgtMzMuMnYxMC41SDIxN3pNMzk1LjIgMjEySDQwNnYtMzMuNWgtMTAuOHptMCAxMjkuNUg0MDZWMzA4aC0xMC44em0tMTMxLTIwNi4zSDIzMXYxMC41aDMzLjJ6bTQ3LjMgMEgyNzh2MTAuNWgzMy41em04My43IDMzLjZINDA2di0zMy41aC0zMy41djEwLjVoMjIuOHptLTM2LjQtMzMuNmgtMzMuNXYxMC41aDMzLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob3BpZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg4LjMyLDEwNC4xYTQuNjYsNC42NiwwLDAsMC00LjQtNGMtMiwwLTM3LjIzLS44LTM3LjIzLS44cy0yMS42MS0yMC44Mi0yOS42Mi0yOC44M1Y1MDMuMkw0NDIuNzYsNDcyUzM4OC43MiwxMDYuNSwzODguMzIsMTA0LjFaTTI4OC42NSw3MC40N2ExMTYuNjcsMTE2LjY3LDAsMCwwLTcuMjEtMTcuNjFDMjcxLDMyLjg1LDI1NS40MiwyMiwyMzcsMjJhMTUsMTUsMCwwLDAtNCwuNGMtLjQtLjgtMS4yLTEuMi0xLjYtMkMyMjMuNCwxMS42MywyMTMsNy42MywyMDAuNTgsOGMtMjQsLjgtNDgsMTgtNjcuMjUsNDguODMtMTMuNjEsMjEuNjItMjQsNDguODQtMjYuODIsNzAuMDYtMjcuNjIsOC40LTQ2LjgzLDE0LjQxLTQ3LjIzLDE0LjgxLTE0LDQuNC0xNC40MSw0LjgtMTYsMTgtMS4yLDEwLTM4LDI5MS44Mi0zOCwyOTEuODJMMzA3Ljg2LDUwNFY2NS42N2E0MS42Niw0MS42NiwwLDAsMC00LjQuNFMyOTcuODYsNjcuNjcsMjg4LjY1LDcwLjQ3Wk0yMzMuNDEsODcuNjljLTE2LDQuOC0zMy42MywxMC40LTUwLjg0LDE1LjYxLDQuOC0xOC44MiwxNC40MS0zNy42MywyNS42Mi01MCw0LjQtNC40LDEwLjQxLTkuNjEsMTcuMjEtMTIuODFDMjMyLjIxLDU0Ljg2LDIzMy44MSw3NC40OCwyMzMuNDEsODcuNjlaTTIwMC41OCwyNC40NEEyNy40OSwyNy40OSwwLDAsMSwyMTUsMjhjLTYuNCwzLjItMTIuODEsOC40MS0xOC44MSwxNC40MS0xNS4yMSwxNi40Mi0yNi44Miw0Mi0zMS42Miw2Ni40NS0xNC40Miw0LjQxLTI4LjgzLDguODEtNDIsMTIuODFDMTMxLjMzLDgzLjI4LDE2My43NSwyNS4yNCwyMDAuNTgsMjQuNDRaTTE1NC4xNSwyNDQuNjFjMS42LDI1LjYxLDY5LjI1LDMxLjIyLDczLjI1LDkxLjY2LDIuOCw0Ny42NC0yNS4yMiw4MC4wNi02NS42NSw4Mi40Ny00OC44MywzLjItNzUuNjUtMjUuNjItNzUuNjUtMjUuNjJsMTAuNC00NHMyNi44MiwyMC40Miw0OC40NCwxOC44MmMxNC0uOCwxOS4yMi0xMi40MSwxOC44MS0yMC40Mi0yLTMzLjYyLTU3LjI0LTMxLjYyLTYwLjg0LTg2Ljg2LTMuMi00Ni40NCwyNy4yMi05My4yNyw5NC40Ny05Ny42OCwyNi0xLjYsMzkuMjMsNC44MSwzOS4yMyw0LjgxTDIyMS40LDIyNS4zOXMtMTcuMjEtOC0zNy42My02LjRDMTU0LjE1LDIyMSwxNTMuNzUsMjM5LjgsMTU0LjE1LDI0NC42MVpNMjQ5LjQyLDgyLjg4YzAtMTItMS42LTI5LjIyLTcuMjEtNDMuNjMsMTguNDIsMy42LDI3LjIyLDI0LDMxLjIzLDM2LjQzUTI2Mi42Myw3OC42OCwyNDkuNDIsODIuODhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob3B3YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMy41IDQ1NS40MUEyNDYuMTcgMjQ2LjE3IDAgMCAxIDI1NiA1MDRDMTE4LjgxIDUwNCA4IDM5MyA4IDI1NiA4IDExOC44MSAxMTkgOCAyNTYgOGEyNDcuMzkgMjQ3LjM5IDAgMCAxIDE2NS43IDYzLjUgMy41NyAzLjU3IDAgMCAxLTIuODYgNi4xOEE0MTguNjIgNDE4LjYyIDAgMCAwIDM2Mi4xMyA3NGMtMTI5LjM2IDAtMjIyLjQgNTMuNDctMjIyLjQgMTU1LjM1IDAgMTA5IDkyLjEzIDE0NS44OCAxNzYuODMgMTc4LjczIDMzLjY0IDEzIDY1LjQgMjUuMzYgODcgNDEuNTlhMy41OCAzLjU4IDAgMCAxIDAgNS43MnpNNTAzIDIzMy4wOWEzLjY0IDMuNjQgMCAwIDAtMS4yNy0yLjQ0Yy01MS43Ni00My05My42Mi02MC40OC0xNDQuNDgtNjAuNDgtODQuMTMgMC04MC4yNSA1Mi4xNy04MC4yNSA1My42MyAwIDQyLjYgNTIuMDYgNjIgMTEyLjM0IDg0LjQ5IDMxLjA3IDExLjU5IDYzLjE5IDIzLjU3IDkyLjY4IDM5LjkzYTMuNTcgMy41NyAwIDAgMCA1LTEuODJBMjQ5IDI0OSAwIDAgMCA1MDMgMjMzLjA5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaW1wbHlidWlsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODEuMiA2NGgtMTA2Yy0xNC41IDAtMjYuNiAxMS44LTI2LjYgMjYuM3YzOS42SDE2My4zVjkwLjNjMC0xNC41LTEyLTI2LjMtMjYuNi0yNi4zaC0xMDZDMTYuMSA2NCA0LjMgNzUuOCA0LjMgOTAuM3YzMzEuNGMwIDE0LjUgMTEuOCAyNi4zIDI2LjYgMjYuM2g0NTAuNGMxNC44IDAgMjYuNi0xMS44IDI2LjYtMjYuM1Y5MC4zYy0uMi0xNC41LTEyLTI2LjMtMjYuNy0yNi4zek0xNDkuOCAzNTUuOGMtMzYuNiAwLTY2LjQtMjkuNy02Ni40LTY2LjQgMC0zNi45IDI5LjctNjYuNiA2Ni40LTY2LjYgMzYuOSAwIDY2LjYgMjkuNyA2Ni42IDY2LjYgMCAzNi43LTI5LjcgNjYuNC02Ni42IDY2LjR6bTIxMi40IDBjLTM2LjkgMC02Ni42LTI5LjctNjYuNi02Ni42IDAtMzYuNiAyOS43LTY2LjQgNjYuNi02Ni40IDM2LjYgMCA2Ni40IDI5LjcgNjYuNCA2Ni40IDAgMzYuOS0yOS44IDY2LjYtNjYuNCA2Ni42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaXN0cml4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA0NDlMMzAxLjIgMzAwLjJjMjAtMjcuOSAzMS45LTYyLjIgMzEuOS05OS4yIDAtOTMuMS03NC43LTE2OC45LTE2Ni41LTE2OC45Qzc0LjcgMzIgMCAxMDcuOCAwIDIwMC45czc0LjcgMTY4LjkgMTY2LjUgMTY4LjljMzkuOCAwIDc2LjMtMTQuMiAxMDUtMzcuOWwxNDYgMTQ4LjEgMzAuNS0zMXpNMTY2LjUgMzMwLjhjLTcwLjYgMC0xMjguMS01OC4zLTEyOC4xLTEyOS45Uzk1LjkgNzEgMTY2LjUgNzFzMTI4LjEgNTguMyAxMjguMSAxMjkuOS01Ny40IDEyOS45LTEyOC4xIDEyOS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaXRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJsNjkuNzEgMTE4Ljc1LTU4Ljg2LTExLjUyIDY5Ljg0IDkxLjAzYTE0Ni43NDEgMTQ2Ljc0MSAwIDAgMCAwIDUxLjQ1bC02OS44NCA5MS4wMyA1OC44Ni0xMS41MkwwIDQ4MGwxMTguNzUtNjkuNzEtMTEuNTIgNTguODYgOTEuMDMtNjkuODRjMTcuMDIgMy4wNCAzNC40NyAzLjA0IDUxLjQ4IDBsOTEuMDMgNjkuODQtMTEuNTItNTguODZMNDQ4IDQ4MGwtNjkuNzEtMTE4Ljc4IDU4Ljg2IDExLjUyLTY5Ljg0LTkxLjAzYzMuMDMtMTcuMDEgMy4wNC0zNC40NCAwLTUxLjQ1bDY5Ljg0LTkxLjAzLTU4Ljg2IDExLjUyTDQ0OCAzMmwtMTE4Ljc1IDY5LjcxIDExLjUyLTU4LjktOTEuMDYgNjkuODdjLTguNS0xLjUyLTE3LjEtMi4yOS0yNS43MS0yLjI5cy0xNy4yMS43OC0yNS43MSAyLjI5bC05MS4wNi02OS44NyAxMS41MiA1OC45TDAgMzJ6bTIyNCA5OS43OGMzMS44IDAgNjMuNiAxMi4xMiA4Ny44NSAzNi4zNyA0OC41IDQ4LjUgNDguNDkgMTI3LjIxIDAgMTc1LjdzLTEyNy4yIDQ4LjQ2LTE3NS43LS4wM2MtNDguNS00OC41LTQ4LjQ5LTEyNy4yMSAwLTE3NS43IDI0LjI0LTI0LjI1IDU2LjA1LTM2LjM0IDg3Ljg1LTM2LjM0em0wIDM2LjY2Yy0yMi40MiAwLTQ0LjgzIDguNTItNjEuOTIgMjUuNjEtMzQuMTggMzQuMTgtMzQuMTkgODkuNjggMCAxMjMuODdzODkuNjUgMzQuMTggMTIzLjg0IDBjMzQuMTgtMzQuMTggMzQuMTktODkuNjggMC0xMjMuODctMTcuMDktMTcuMDktMzkuNS0yNS42MS02MS45Mi0yNS42MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2tldGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3LjUgMTYyLjJMOSAxODcuMWg5MC41bDYuOS0xMzAuNy03OC45IDEwNS44ek0zOTYuMyA0NS43TDI2Ny43IDMybDEzNS43IDE0Ny4yLTcuMS0xMzMuNXpNMTEyLjIgMjE4LjNsLTExLjItMjJIOS45TDIzNC44IDQ1OHptMi0zMS4yaDI4NGwtODEuNS04OC41TDI1Ni4zIDMzem0yOTcuMyA5LjFMMjc3LjYgNDU4bDIyNC44LTI2MS43aC05MC45ek00MTUuNCA2OUw0MDYgNTYuNGwuOSAxNy4zIDYuMSAxMTMuNGg5MC4zek0xMTMuNSA5My41bC00LjYgODUuNkwyNDQuNyAzMiAxMTYuMSA0NS43em0yODcuNyAxMDIuN2gtMjkwbDQyLjQgODIuOUwyNTYuMyA0ODBsMTQ0LjktMjgzLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNreWF0bGFzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAzMjkuM2MwIDY1LjktNTIuNSAxMTQuNC0xMTcuNSAxMTQuNC0xNjUuOSAwLTE5Ni42LTI0OS43LTM1OS43LTI0OS43LTE0Ni45IDAtMTQ3LjEgMjEyLjIgNS42IDIxMi4yIDQyLjUgMCA5MC45LTE3LjggMTI1LjMtNDIuNSA1LjYtNC4xIDE2LjktMTYuMyAyMi44LTE2LjNzMTAuOSA1IDEwLjkgMTAuOWMwIDcuOC0xMy4xIDE5LjEtMTguNyAyNC4xLTQwLjkgMzUuNi0xMDAuMyA2MS4yLTE1NC43IDYxLjItODMuNC4xLTE1NC01OS0xNTQtMTQ0LjlzNjcuNS0xNDkuMSAxNTIuOC0xNDkuMWMxODUuMyAwIDIyMi41IDI0NS45IDM2MS45IDI0NS45IDk5LjkgMCA5NC44LTEzOS43IDMuNC0xMzkuNy0xNy41IDAtMzUgMTEuNi00Ni45IDExLjYtOC40IDAtMTUuOS03LjItMTUuOS0xNS42IDAtMTEuNiA1LjMtMjMuNyA1LjMtMzYuMyAwLTY2LjYtNTAuOS0xMTQuNy0xMTYuOS0xMTQuNy01My4xIDAtODAgMzYuOS04OC44IDM2LjktNi4yIDAtMTEuMi01LTExLjItMTEuMiAwLTUuNiA0LjEtMTAuMyA3LjgtMTQuNCAyNS4zLTI4LjggNjQuNy00My43IDEwMi44LTQzLjcgNzkuNCAwIDEzOS4xIDU4LjQgMTM5LjEgMTM3LjggMCA2LjktLjMgMTMuNy0xLjIgMjAuNiAxMS45LTMuMSAyNC4xLTQuNyAzNS45LTQuNyA2MC43IDAgMTExLjkgNDUuMyAxMTEuOSAxMDcuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2t5cGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI0LjcgMjk5LjhjMi45LTE0IDQuNy0yOC45IDQuNy00My44IDAtMTEzLjUtOTEuOS0yMDUuMy0yMDUuMy0yMDUuMy0xNC45IDAtMjkuNyAxLjctNDMuOCA0LjdDMTYxLjMgNDAuNyAxMzcuNyAzMiAxMTIgMzIgNTAuMiAzMiAwIDgyLjIgMCAxNDRjMCAyNS43IDguNyA0OS4zIDIzLjMgNjguMi0yLjkgMTQtNC43IDI4LjktNC43IDQzLjggMCAxMTMuNSA5MS45IDIwNS4zIDIwNS4zIDIwNS4zIDE0LjkgMCAyOS43LTEuNyA0My44LTQuNyAxOSAxNC42IDQyLjYgMjMuMyA2OC4yIDIzLjMgNjEuOCAwIDExMi01MC4yIDExMi0xMTIgLjEtMjUuNi04LjYtNDkuMi0yMy4yLTY4LjF6bS0xOTQuNiA5MS41Yy02NS42IDAtMTIwLjUtMjkuMi0xMjAuNS02NSAwLTE2IDktMzAuNiAyOS41LTMwLjYgMzEuMiAwIDM0LjEgNDQuOSA4OC4xIDQ0LjkgMjUuNyAwIDQyLjMtMTEuNCA0Mi4zLTI2LjMgMC0xOC43LTE2LTIxLjYtNDItMjgtNjIuNS0xNS40LTExNy44LTIyLTExNy44LTg3LjIgMC01OS4yIDU4LjYtODEuMSAxMDkuMS04MS4xIDU1LjEgMCAxMTAuOCAyMS45IDExMC44IDU1LjQgMCAxNi45LTExLjQgMzEuOC0zMC4zIDMxLjgtMjguMyAwLTI5LjItMzMuNS03NS0zMy41LTI1LjcgMC00MiA3LTQyIDIyLjUgMCAxOS44IDIwLjggMjEuOCA2OS4xIDMzIDQxLjQgOS4zIDkwLjcgMjYuOCA5MC43IDc3LjYgMCA1OS4xLTU3LjEgODYuNS0xMTIgODYuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2xhY2tIYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ni4yIDI3MC40Yy02LjItMTktMjYuOS0yOS4xLTQ2LTIyLjlsLTQ1LjQgMTUuMS0zMC4zLTkwIDQ1LjQtMTUuMWMxOS4xLTYuMiAyOS4xLTI2LjggMjMtNDUuOS02LjItMTktMjYuOS0yOS4xLTQ2LTIyLjlsLTQ1LjQgMTUuMS0xNS43LTQ3Yy02LjItMTktMjYuOS0yOS4xLTQ2LTIyLjktMTkuMSA2LjItMjkuMSAyNi44LTIzIDQ1LjlsMTUuNyA0Ny05My40IDMxLjItMTUuNy00N2MtNi4yLTE5LTI2LjktMjkuMS00Ni0yMi45LTE5LjEgNi4yLTI5LjEgMjYuOC0yMyA0NS45bDE1LjcgNDctNDUuMyAxNWMtMTkuMSA2LjItMjkuMSAyNi44LTIzIDQ1LjkgNSAxNC41IDE5LjEgMjQgMzMuNiAyNC42IDYuOCAxIDEyLTEuNiA1Ny43LTE2LjhsMzAuMyA5MEw3OCAzNTQuOGMtMTkgNi4yLTI5LjEgMjYuOS0yMyA0NS45IDUgMTQuNSAxOS4xIDI0IDMzLjYgMjQuNiA2LjggMSAxMi0xLjYgNTcuNy0xNi44bDE1LjcgNDdjNS45IDE2LjkgMjQuNyAyOSA0NiAyMi45IDE5LjEtNi4yIDI5LjEtMjYuOCAyMy00NS45bC0xNS43LTQ3IDkzLjYtMzEuMyAxNS43IDQ3YzUuOSAxNi45IDI0LjcgMjkgNDYgMjIuOSAxOS4xLTYuMiAyOS4xLTI2LjggMjMtNDUuOWwtMTUuNy00NyA0NS40LTE1LjFjMTktNiAyOS4xLTI2LjcgMjIuOS00NS43em0tMjU0LjEgNDcuMmwtMzAuMy05MC4yIDkzLjUtMzEuMyAzMC4zIDkwLjItOTMuNSAzMS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NC4xMiAzMTUuMWMwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZTMCAzNDEgMCAzMTUuMWMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZoNDcuMDZ2NDcuMDZ6bTIzLjcyIDBjMC0yNS45IDIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2czQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2djExNy44NGMwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZzLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2VjMxNS4xem00Ny4wNi0xODguOThjLTI1LjkgMC00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNlMxMzkgMzIgMTY0LjkgMzJzNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZ2NDcuMDZIMTY0Ljl6bTAgMjMuNzJjMjUuOSAwIDQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2cy0yMS4xNiA0Ny4wNi00Ny4wNiA0Ny4wNkg0Ny4wNkMyMS4xNiAyNDMuOTYgMCAyMjIuOCAwIDE5Ni45czIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2SDE2NC45em0xODguOTggNDcuMDZjMC0yNS45IDIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2IDI1LjkgMCA0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNnMtMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZoLTQ3LjA2VjE5Ni45em0tMjMuNzIgMGMwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDYtMjUuOSAwLTQ3LjA2LTIxLjE2LTQ3LjA2LTQ3LjA2Vjc5LjA2YzAtMjUuOSAyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNiAyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZWMTk2Ljl6TTI4My4xIDM4NS44OGMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDYgMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2LTI1LjkgMC00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNnYtNDcuMDZoNDcuMDZ6bTAtMjMuNzJjLTI1LjkgMC00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNiAwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDZoMTE3Ljg0YzI1LjkgMCA0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNiAwIDI1LjktMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZIMjgzLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNsaWRlc2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg3LjcgMTUzLjdjLTM0IDAtNjEuNyAyNS43LTYxLjcgNTcuNyAwIDMxLjcgMjcuNyA1Ny43IDYxLjcgNTcuN3M2MS43LTI2IDYxLjctNTcuN2MwLTMyLTI3LjctNTcuNy02MS43LTU3Ljd6bTE0My40IDBjLTM0IDAtNjEuNyAyNS43LTYxLjcgNTcuNyAwIDMxLjcgMjcuNyA1Ny43IDYxLjcgNTcuNyAzNC4zIDAgNjEuNy0yNiA2MS43LTU3LjcuMS0zMi0yNy40LTU3LjctNjEuNy01Ny43em0xNTYuNiA5MGwtNiA0LjNWNDkuN2MwLTI3LjQtMjAuNi00OS43LTQ2LTQ5LjdINzYuNmMtMjUuNCAwLTQ2IDIyLjMtNDYgNDkuN1YyNDhjLTItMS40LTQuMy0yLjktNi4zLTQuMy0xNS4xLTEwLjYtMjUuMSA0LTE2IDE3LjcgMTguMyAyMi42IDUzLjEgNTAuMyAxMDYuMyA3MkM1OC4zIDUyNS4xIDI1MiA1NTUuNyAyNDguOSA0NTcuNWMwLS43LjMtNTYuNi4zLTk2LjYgNS4xIDEuMSA5LjQgMi4zIDEzLjcgMy4xIDAgMzkuNy4zIDkyLjguMyA5My41LTMuMSA5OC4zIDE5MC42IDY3LjcgMTM0LjMtMTI0IDUzLjEtMjEuNyA4OC00OS40IDEwNi4zLTcyIDkuMS0xMy44LS45LTI4LjMtMTYuMS0xNy44em0tMzAuNSAxOS4yYy02OC45IDM3LjQtMTI4LjMgMzEuMS0xNjAuNiAyOS43LTIzLjctLjktMzIuNiA5LjEtMzMuNyAyNC45LTEwLjMtNy43LTE4LjYtMTUuNS0yMC4zLTE3LjEtNS4xLTUuNC0xMy43LTgtMjcuMS03LjctMzEuNyAxLjEtODkuNyA3LjQtMTU3LjQtMjhWNzIuM2MwLTM0LjkgOC45LTQ1LjcgNDAuNi00NS43aDMxNy43YzMwLjMgMCA0MC45IDEyLjkgNDAuOSA0NS43djE5MC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbmFwY2hhdEdob3N0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMC44NDYgMzkyLjY3M2MtNS4yMTEgMTIuMTU3LTI3LjIzOSAyMS4wODktNjcuMzYgMjcuMzE4LTIuMDY0IDIuNzg2LTMuNzc1IDE0LjY4Ni02LjUwNyAyMy45NTYtMS42MjUgNS41NjYtNS42MjMgOC44NjktMTIuMTI4IDguODY5bC0uMjk3LS4wMDVjLTkuMzk1IDAtMTkuMjAzLTQuMzIzLTM4Ljg1Mi00LjMyMy0yNi41MjEgMC0zNS42NjIgNi4wNDMtNTYuMjU0IDIwLjU4OC0yMS44MzIgMTUuNDM4LTQyLjc3MSAyOC43NjQtNzQuMDI3IDI3LjM5OS0zMS42NDYgMi4zMzQtNTguMDI1LTE2LjkwOC03Mi44NzEtMjcuNDA0LTIwLjcxNC0xNC42NDMtMjkuODI4LTIwLjU4Mi01Ni4yNDEtMjAuNTgyLTE4Ljg2NCAwLTMwLjczNiA0LjcyLTM4Ljg1MiA0LjcyLTguMDczIDAtMTEuMjEzLTQuOTIyLTEyLjQyMi05LjA0LTIuNzAzLTkuMTg5LTQuNDA0LTIxLjI2My02LjUyMy0yNC4xMy0yMC42NzktMy4yMDktNjcuMzEtMTEuMzQ0LTY4LjQ5OC0zMi4xNWExMC42MjcgMTAuNjI3IDAgMCAxIDguODc3LTExLjA2OWM2OS41ODMtMTEuNDU1IDEwMC45MjQtODIuOTAxIDEwMi4yMjctODUuOTM0LjA3NC0uMTc2LjE1NS0uMzQ0LjIzNy0uNTE1IDMuNzEzLTcuNTM3IDQuNTQ0LTEzLjg0OSAyLjQ2My0xOC43NTMtNS4wNS0xMS44OTYtMjYuODcyLTE2LjE2NC0zNi4wNTMtMTkuNzk2LTIzLjcxNS05LjM2Ni0yNy4wMTUtMjAuMTI4LTI1LjYxMi0yNy41MDQgMi40MzctMTIuODM2IDIxLjcyNS0yMC43MzUgMzMuMDAyLTE1LjQ1MyA4LjkxOSA0LjE4MSAxNi44NDMgNi4yOTcgMjMuNTQ3IDYuMjk3IDUuMDIyIDAgOC4yMTItMS4yMDQgOS45Ni0yLjE3MS0yLjA0My0zNS45MzYtNy4xMDEtODcuMjkgNS42ODctMTE1Ljk2OUMxNTguMTIyIDIxLjMwNCAyMjkuNzA1IDE1LjQyIDI1MC44MjYgMTUuNDJjLjk0NCAwIDkuMTQxLS4wODkgMTAuMTEtLjA4OSA1Mi4xNDggMCAxMDIuMjU0IDI2Ljc4IDEyNi43MjMgODEuNjQzIDEyLjc3NyAyOC42NSA3Ljc0OSA3OS43OTIgNS42OTUgMTE2LjAwOSAxLjU4Mi44NzIgNC4zNTcgMS45NDIgOC41OTkgMi4xMzkgNi4zOTctLjI4NiAxMy44MTUtMi4zODkgMjIuMDY5LTYuMjU3IDYuMDg1LTIuODQ2IDE0LjQwNi0yLjQ2MSAyMC40OC4wNThsLjAyOS4wMWM5LjQ3NiAzLjM4NSAxNS40MzkgMTAuMjE1IDE1LjU4OSAxNy44Ny4xODQgOS43NDctOC41MjIgMTguMTY1LTI1Ljg3OCAyNS4wMTgtMi4xMTguODM1LTQuNjk0IDEuNjU1LTcuNDM0IDIuNTI1LTkuNzk3IDMuMTA2LTI0LjYgNy44MDUtMjguNjE2IDE3LjI3MS0yLjA3OSA0LjkwNC0xLjI1NiAxMS4yMTEgMi40NiAxOC43NDguMDg3LjE2OC4xNjYuMzQyLjIzOS41MTUgMS4zMDEgMy4wMyAzMi42MTUgNzQuNDYgMTAyLjIzIDg1LjkzNCA2LjQyNyAxLjA1OCAxMS4xNjMgNy44NzcgNy43MjUgMTUuODU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbmFwY2hhdFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tNi41IDMxNC45Yy0zLjUgOC4xLTE4LjEgMTQtNDQuOCAxOC4yLTEuNCAxLjktMi41IDkuOC00LjMgMTUuOS0xLjEgMy43LTMuNyA1LjktOC4xIDUuOWgtLjJjLTYuMiAwLTEyLjgtMi45LTI1LjgtMi45LTE3LjYgMC0yMy43IDQtMzcuNCAxMy43LTE0LjUgMTAuMy0yOC40IDE5LjEtNDkuMiAxOC4yLTIxIDEuNi0zOC42LTExLjItNDguNS0xOC4yLTEzLjgtOS43LTE5LjgtMTMuNy0zNy40LTEzLjctMTIuNSAwLTIwLjQgMy4xLTI1LjggMy4xLTUuNCAwLTcuNS0zLjMtOC4zLTYtMS44LTYuMS0yLjktMTQuMS00LjMtMTYtMTMuOC0yLjEtNDQuOC03LjUtNDUuNS0yMS40LS4yLTMuNiAyLjMtNi44IDUuOS03LjQgNDYuMy03LjYgNjcuMS01NS4xIDY4LTU3LjEgMC0uMS4xLS4yLjItLjMgMi41LTUgMy05LjIgMS42LTEyLjUtMy40LTcuOS0xNy45LTEwLjctMjQtMTMuMi0xNS44LTYuMi0xOC0xMy40LTE3LTE4LjMgMS42LTguNSAxNC40LTEzLjggMjEuOS0xMC4zIDUuOSAyLjggMTEuMiA0LjIgMTUuNyA0LjIgMy4zIDAgNS41LS44IDYuNi0xLjQtMS40LTIzLjktNC43LTU4IDMuOC03Ny4xQzE1OS4xIDEwMCAyMDYuNyA5NiAyMjAuNyA5NmMuNiAwIDYuMS0uMSA2LjctLjEgMzQuNyAwIDY4IDE3LjggODQuMyA1NC4zIDguNSAxOS4xIDUuMiA1My4xIDMuOCA3Ny4xIDEuMS42IDIuOSAxLjMgNS43IDEuNCA0LjMtLjIgOS4yLTEuNiAxNC43LTQuMiA0LTEuOSA5LjYtMS42IDEzLjYgMCA2LjMgMi4zIDEwLjMgNi44IDEwLjQgMTEuOS4xIDYuNS01LjcgMTIuMS0xNy4yIDE2LjYtMS40LjYtMy4xIDEuMS00LjkgMS43LTYuNSAyLjEtMTYuNCA1LjItMTkgMTEuNS0xLjQgMy4zLS44IDcuNSAxLjYgMTIuNS4xLjEuMS4yLjIuMy45IDIgMjEuNyA0OS41IDY4IDU3LjEgNCAxIDcuMSA1LjUgNC45IDEwLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNuYXBjaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTE2OS41IDMzOC45Yy0zLjUgOC4xLTE4LjEgMTQtNDQuOCAxOC4yLTEuNCAxLjktMi41IDkuOC00LjMgMTUuOS0xLjEgMy43LTMuNyA1LjktOC4xIDUuOWgtLjJjLTYuMiAwLTEyLjgtMi45LTI1LjgtMi45LTE3LjYgMC0yMy43IDQtMzcuNCAxMy43LTE0LjUgMTAuMy0yOC40IDE5LjEtNDkuMiAxOC4yLTIxIDEuNi0zOC42LTExLjItNDguNS0xOC4yLTEzLjgtOS43LTE5LjgtMTMuNy0zNy40LTEzLjctMTIuNSAwLTIwLjQgMy4xLTI1LjggMy4xLTUuNCAwLTcuNS0zLjMtOC4zLTYtMS44LTYuMS0yLjktMTQuMS00LjMtMTYtMTMuOC0yLjEtNDQuOC03LjUtNDUuNS0yMS40LS4yLTMuNiAyLjMtNi44IDUuOS03LjQgNDYuMy03LjYgNjcuMS01NS4xIDY4LTU3LjEgMC0uMS4xLS4yLjItLjMgMi41LTUgMy05LjIgMS42LTEyLjUtMy40LTcuOS0xNy45LTEwLjctMjQtMTMuMi0xNS44LTYuMi0xOC0xMy40LTE3LTE4LjMgMS42LTguNSAxNC40LTEzLjggMjEuOS0xMC4zIDUuOSAyLjggMTEuMiA0LjIgMTUuNyA0LjIgMy4zIDAgNS41LS44IDYuNi0xLjQtMS40LTIzLjktNC43LTU4IDMuOC03Ny4xQzE4My4xIDEwMCAyMzAuNyA5NiAyNDQuNyA5NmMuNiAwIDYuMS0uMSA2LjctLjEgMzQuNyAwIDY4IDE3LjggODQuMyA1NC4zIDguNSAxOS4xIDUuMiA1My4xIDMuOCA3Ny4xIDEuMS42IDIuOSAxLjMgNS43IDEuNCA0LjMtLjIgOS4yLTEuNiAxNC43LTQuMiA0LTEuOSA5LjYtMS42IDEzLjYgMCA2LjMgMi4zIDEwLjMgNi44IDEwLjQgMTEuOS4xIDYuNS01LjcgMTIuMS0xNy4yIDE2LjYtMS40LjYtMy4xIDEuMS00LjkgMS43LTYuNSAyLjEtMTYuNCA1LjItMTkgMTEuNS0xLjQgMy4zLS44IDcuNSAxLjYgMTIuNS4xLjEuMS4yLjIuMy45IDIgMjEuNyA0OS41IDY4IDU3LjEgNCAxIDcuMSA1LjUgNC45IDEwLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvdW5kY2xvdWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTExLjQgMjU2LjNsNS44IDY1LTUuOCA2OC4zYy0uMyAyLjUtMi4yIDQuNC00LjQgNC40cy00LjItMS45LTQuMi00LjRsLTUuNi02OC4zIDUuNi02NWMwLTIuMiAxLjktNC4yIDQuMi00LjIgMi4yIDAgNC4xIDIgNC40IDQuMnptMjEuNC00NS42Yy0yLjggMC00LjcgMi4yLTUgNWwtNSAxMDUuNiA1IDY4LjNjLjMgMi44IDIuMiA1IDUgNSAyLjUgMCA0LjctMi4yIDQuNy01bDUuOC02OC4zLTUuOC0xMDUuNmMwLTIuOC0yLjItNS00LjctNXptMjUuNS0yNC4xYy0zLjEgMC01LjMgMi4yLTUuNiA1LjNsLTQuNCAxMzAgNC40IDY3LjhjLjMgMy4xIDIuNSA1LjMgNS42IDUuMyAyLjggMCA1LjMtMi4yIDUuMy01LjNsNS4zLTY3LjgtNS4zLTEzMGMwLTMuMS0yLjUtNS4zLTUuMy01LjN6TTcuMiAyODMuMmMtMS40IDAtMi4yIDEuMS0yLjUgMi41TDAgMzIxLjNsNC43IDM1Yy4zIDEuNCAxLjEgMi41IDIuNSAyLjVzMi4yLTEuMSAyLjUtMi41bDUuNi0zNS01LjYtMzUuNmMtLjMtMS40LTEuMS0yLjUtMi41LTIuNXptMjMuNi0yMS45Yy0xLjQgMC0yLjUgMS4xLTIuNSAyLjVsLTYuNCA1Ny41IDYuNCA1Ni4xYzAgMS43IDEuMSAyLjggMi41IDIuOHMyLjUtMS4xIDIuOC0yLjVsNy4yLTU2LjQtNy4yLTU3LjVjLS4zLTEuNC0xLjQtMi41LTIuOC0yLjV6bTI1LjMtMTEuNGMtMS43IDAtMy4xIDEuNC0zLjMgMy4zTDQ3IDMyMS4zbDUuOCA2NS44Yy4zIDEuNyAxLjcgMy4xIDMuMyAzLjEgMS43IDAgMy4xLTEuNCAzLjEtMy4xbDYuOS02NS44LTYuOS02OC4xYzAtMS45LTEuNC0zLjMtMy4xLTMuM3ptMjUuMy0yLjJjLTEuOSAwLTMuNiAxLjQtMy42IDMuNmwtNS44IDcwIDUuOCA2Ny44YzAgMi4yIDEuNyAzLjYgMy42IDMuNnMzLjYtMS40IDMuOS0zLjZsNi40LTY3LjgtNi40LTcwYy0uMy0yLjItMi0zLjYtMy45LTMuNnptMjQxLjQtMTEwLjljLTEuMS0uOC0yLjgtMS40LTQuMi0xLjQtMi4yIDAtNC4yLjgtNS42IDEuOS0xLjkgMS43LTMuMSA0LjItMy4zIDYuN3YuOGwtMy4zIDE3Ni43IDEuNyAzMi41IDEuNyAzMS43Yy4zIDQuNyA0LjIgOC42IDguOSA4LjZzOC42LTMuOSA4LjYtOC42bDMuOS02NC4yLTMuOS0xNzcuNWMtLjQtMy0yLTUuOC00LjUtNy4yem0tMjYuNyAxNS4zYy0xLjQtLjgtMi44LTEuNC00LjQtMS40cy0zLjEuNi00LjQgMS40Yy0yLjIgMS40LTMuNiAzLjktMy42IDYuN2wtLjMgMS43LTIuOCAxNjAuOHMwIC4zIDMuMSA2NS42di4zYzAgMS43LjYgMy4zIDEuNyA0LjcgMS43IDEuOSAzLjkgMy4xIDYuNCAzLjEgMi4yIDAgNC4yLTEuMSA1LjYtMi41IDEuNy0xLjQgMi41LTMuMyAyLjUtNS42bC4zLTYuNyAzLjEtNTguNi0zLjMtMTYyLjhjLS4zLTIuOC0xLjctNS4zLTMuOS02Ljd6bS0xMTEuNCAyMi41Yy0zLjEgMC01LjggMi44LTUuOCA2LjFsLTQuNCAxNDAuNiA0LjQgNjcuMmMuMyAzLjMgMi44IDUuOCA1LjggNS44IDMuMyAwIDUuOC0yLjUgNi4xLTUuOGw1LTY3LjItNS0xNDAuNmMtLjItMy4zLTIuNy02LjEtNi4xLTYuMXptMzc2LjcgNjIuOGMtMTAuOCAwLTIxLjEgMi4yLTMwLjYgNi4xLTYuNC03MC44LTY1LjgtMTI2LjQtMTM4LjMtMTI2LjQtMTcuOCAwLTM1IDMuMy01MC4zIDkuNC02LjEgMi4yLTcuOCA0LjQtNy44IDkuMnYyNDkuN2MwIDUgMy45IDguNiA4LjYgOS4yaDIxOC4zYzQzLjMgMCA3OC42LTM1IDc4LjYtNzguMy4xLTQzLjYtMzUuMi03OC45LTc4LjUtNzguOXptLTI5Ni43LTYwLjNjLTQuMiAwLTcuNSAzLjMtNy44IDcuOGwtMy4zIDEzNi43IDMuMyA2NS42Yy4zIDQuMiAzLjYgNy41IDcuOCA3LjUgNC4yIDAgNy41LTMuMyA3LjUtNy41bDMuOS02NS42LTMuOS0xMzYuN2MtLjMtNC41LTMuMy03LjgtNy41LTcuOHptLTUzLjYtNy44Yy0zLjMgMC02LjQgMy4xLTYuNCA2LjdsLTMuOSAxNDUuMyAzLjkgNjYuOWMuMyAzLjYgMy4xIDYuNCA2LjQgNi40IDMuNiAwIDYuNC0yLjggNi43LTYuNGw0LjQtNjYuOS00LjQtMTQ1LjNjLS4zLTMuNi0zLjEtNi43LTYuNy02Ljd6bTI2LjcgMy40Yy0zLjkgMC02LjkgMy4xLTYuOSA2LjlMMjI3IDMyMS4zbDMuOSA2Ni40Yy4zIDMuOSAzLjEgNi45IDYuOSA2LjlzNi45LTMuMSA2LjktNi45bDQuMi02Ni40LTQuMi0xNDEuN2MwLTMuOS0zLTYuOS02LjktNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3VyY2V0cmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyNy4yIDIwM2MwLTExMi4xLTkwLjktMjAzLTIwMy0yMDNDMTEyLjEtLjIgMjEuMiA5MC42IDIxIDIwMi42QTIwMi44NiAyMDIuODYgMCAwIDAgMTYxLjUgMzk2djEwMS43YTE0LjMgMTQuMyAwIDAgMCAxNC4zIDE0LjNoOTYuNGExNC4zIDE0LjMgMCAwIDAgMTQuMy0xNC4zVjM5Ni4xQTIwMy4xOCAyMDMuMTggMCAwIDAgNDI3LjIgMjAzem0tMjcxLjYgMGMwLTkwLjggMTM3LjMtOTAuOCAxMzcuMyAwLS4xIDg5LjktMTM3LjMgOTEtMTM3LjMgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BlYWthcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzOTEuNzhDLTE1LjQxIDMwMy41OS04IDE2Ny40MiA4MC42NCA4Ny42NHMyMjQuOC03MyAzMDQuMjEgMTUuMjQgNzIgMjI0LjM2LTE2LjY0IDMwNC4xNGMtMTguNzQgMTYuODcgNjQgNDMuMDkgNDIgNTIuMjYtODIuMDYgMzQuMjEtMjUzLjkxIDM1LTM0Ni4yMy02Ny41em0yMTMuMzEtMjExLjZsMzguNS00MC44NmMtOS42MS04Ljg5LTMyLTI2LjgzLTc2LjE3LTI3LjYtNTIuMzMtLjkxLTk1Ljg2IDI4LjMtOTYuNzcgODAtLjIgMTEuMzMuMjkgMzYuNzIgMjkuNDIgNTQuODMgMzQuNDYgMjEuNDIgODYuNTIgMjEuNTEgODYgNTIuMjYtLjM3IDIxLjI4LTI2LjQyIDI1LjgxLTM4LjU5IDI1LjYtMy0uMDUtMzAuMjMtLjQ2LTQ3LjYxLTI0LjYybC00MCA0Mi42MWMyOC4xNiAyNyA1OSAzMi42MiA4My40OSAzMy4wNSAxMC4yMy4xOCA5Ni40Mi4zMyA5Ny44NC04MSAuMjgtMTUuODEtMi4wNy0zOS43Mi0yOC44Ni01Ni41OS0zNC4zNi0yMS42NC04NS0xOS40NS04NC40My00OS43NS40MS0yMy4yNSAzMS0yNS4zNyAzNy41My0yNS4yNi40MyAwIDI2LjYyLjI2IDM5LjYyIDE3LjM3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGVha2VyRGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTMuODYgMjk2SDEwMGExMDAgMTAwIDAgMCAxIDAtMjAwaDEzMi44NGE0MCA0MCAwIDAgMSAwIDgwSDk4Yy0yNi40NyAwLTI2LjQ1IDQwIDAgNDBoMTEzLjgyYTEwMCAxMDAgMCAwIDEgMCAyMDBINDBhNDAgNDAgMCAwIDEgMC04MGgxNzMuODZjMjYuNDggMCAyNi40Ni00MCAwLTQwek0yOTggNDE2YTEyMC4yMSAxMjAuMjEgMCAwIDAgNTEuMTEtODBoNjQuNTVhMTkuODMgMTkuODMgMCAwIDAgMTkuNjYtMjBWMTk2YTE5LjgzIDE5LjgzIDAgMCAwLTE5LjY2LTIwSDI5Ni40MmE2MC43NyA2MC43NyAwIDAgMCAwLTgwaDEzNi45M2M0My40NCAwIDc4LjY1IDM1LjgyIDc4LjY1IDgwdjE2MGMwIDQ0LjE4LTM1LjIxIDgwLTc4LjY1IDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcG90aWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4xIDggMCAxMTkuMSAwIDI1NnMxMTEuMSAyNDggMjQ4IDI0OCAyNDgtMTExLjEgMjQ4LTI0OFMzODQuOSA4IDI0OCA4em0xMDAuNyAzNjQuOWMtNC4yIDAtNi44LTEuMy0xMC43LTMuNi02Mi40LTM3LjYtMTM1LTM5LjItMjA2LjctMjQuNS0zLjkgMS05IDIuNi0xMS45IDIuNi05LjcgMC0xNS44LTcuNy0xNS44LTE1LjggMC0xMC4zIDYuMS0xNS4yIDEzLjYtMTYuOCA4MS45LTE4LjEgMTY1LjYtMTYuNSAyMzcgMjYuMiA2LjEgMy45IDkuNyA3LjQgOS43IDE2LjVzLTcuMSAxNS40LTE1LjIgMTUuNHptMjYuOS02NS42Yy01LjIgMC04LjctMi4zLTEyLjMtNC4yLTYyLjUtMzctMTU1LjctNTEuOS0yMzguNi0yOS40LTQuOCAxLjMtNy40IDIuNi0xMS45IDIuNi0xMC43IDAtMTkuNC04LjctMTkuNC0xOS40czUuMi0xNy44IDE1LjUtMjAuN2MyNy44LTcuOCA1Ni4yLTEzLjYgOTcuOC0xMy42IDY0LjkgMCAxMjcuNiAxNi4xIDE3NyA0NS41IDguMSA0LjggMTEuMyAxMSAxMS4zIDE5LjctLjEgMTAuOC04LjUgMTkuNS0xOS40IDE5LjV6bTMxLTc2LjJjLTUuMiAwLTguNC0xLjMtMTIuOS0zLjktNzEuMi00Mi41LTE5OC41LTUyLjctMjgwLjktMjkuNy0zLjYgMS04LjEgMi42LTEyLjkgMi42LTEzLjIgMC0yMy4zLTEwLjMtMjMuMy0yMy42IDAtMTMuNiA4LjQtMjEuMyAxNy40LTIzLjkgMzUuMi0xMC4zIDc0LjYtMTUuMiAxMTcuNS0xNS4yIDczIDAgMTQ5LjUgMTUuMiAyMDUuNCA0Ny44IDcuOCA0LjUgMTIuOSAxMC43IDEyLjkgMjIuNiAwIDEzLjYtMTEgMjMuMy0yMy4yIDIzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZXNwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni4xMiAzNDMuMzRjLTkuNjUgOS42NS05LjY1IDI1LjI5IDAgMzQuOTQgOS42NSA5LjY1IDI1LjI5IDkuNjUgMzQuOTQgMEwzNzguMjQgMjIxLjFjMTkuMjktMTkuMjkgNTAuNTctMTkuMjkgNjkuODYgMHMxOS4yOSA1MC41NyAwIDY5Ljg2TDI5My45NSA0NDUuMWMxOS4yNyAxOS4yOSA1MC41MyAxOS4zMSA2OS44Mi4wNGwuMDQtLjA0IDExOS4yNS0xMTkuMjRjMzguNTktMzguNTkgMzguNTktMTAxLjE0IDAtMTM5LjcyLTM4LjU5LTM4LjU5LTEwMS4xNS0zOC41OS0xMzkuNzIgMGwtMTU3LjIyIDE1Ny4yem0yNDQuNTMtMTA0LjhjLTkuNjUtOS42NS0yNS4yOS05LjY1LTM0LjkzIDBsLTE1Ny4yIDE1Ny4xOGMtMTkuMjcgMTkuMjktNTAuNTMgMTkuMzEtNjkuODIuMDVsLS4wNS0uMDVjLTkuNjQtOS42NC0yNS4yNy05LjY1LTM0LjkyLS4wMWwtLjAxLjAxYy05LjY1IDkuNjQtOS42NiAyNS4yOC0uMDIgMzQuOTNsLjAyLjAyYzM4LjU4IDM4LjU3IDEwMS4xNCAzOC41NyAxMzkuNzIgMGwxNTcuMi0xNTcuMmM5LjY1LTkuNjUgOS42NS0yNS4yOS4wMS0zNC45M3ptLTI2MS45OSA4Ny4zM2wxNTcuMTgtMTU3LjE4YzkuNjQtOS42NSA5LjY0LTI1LjI5IDAtMzQuOTQtOS42NC05LjY0LTI1LjI3LTkuNjQtMzQuOTEgMEwxMzMuNzIgMjkwLjkzYy0xOS4yOCAxOS4yOS01MC41NiAxOS4zLTY5Ljg1LjAxbC0uMDEtLjAxYy0xOS4yOS0xOS4yOC0xOS4zMS01MC41NC0uMDMtNjkuODRsLjAzLS4wM0wyMTguMDMgNjYuODljLTE5LjI4LTE5LjI5LTUwLjU1LTE5LjMtNjkuODUtLjAybC0uMDIuMDJMMjguOTMgMTg2LjE0Yy0zOC41OCAzOC41OS0zOC41OCAxMDEuMTQgMCAxMzkuNzIgMzguNiAzOC41OSAxMDEuMTMgMzguNTkgMTM5LjczLjAxem0tODcuMzMtNTIuNGM5LjY0IDkuNjQgMjUuMjcgOS42NCAzNC45MSAwbDE1Ny4yMS0xNTcuMTljMTkuMjgtMTkuMjkgNTAuNTUtMTkuMyA2OS44NC0uMDJsLjAyLjAyYzkuNjUgOS42NSAyNS4yOSA5LjY1IDM0LjkzIDAgOS42NS05LjY1IDkuNjUtMjUuMjkgMC0zNC45My0zOC41OS0zOC41OS0xMDEuMTMtMzguNTktMTM5LjcyIDBMODEuMzMgMjM4LjU0Yy05LjY1IDkuNjQtOS42NSAyNS4yOC0uMDEgMzQuOTNoLjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFja0V4Y2hhbmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjcgMzMyLjNoNDEyLjd2MjJjMCAzNy43LTI5LjMgNjgtNjUuMyA2OGgtMTlMMjU5LjMgNTEydi04OS43SDgzYy0zNiAwLTY1LjMtMzAuMy02NS4zLTY4di0yMnptMC0yMy42aDQxMi43di04NUgxNy43djg1em0wLTEwOS40aDQxMi43di04NUgxNy43djg1ek0zNjUgMEg4M0M0NyAwIDE3LjcgMzAuMyAxNy43IDY3LjdWOTBoNDEyLjdWNjcuN0M0MzAuMyAzMC4zIDQwMSAwIDM2NSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFja092ZXJmbG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5MC43IDMxMUw5NSAyNjkuNyA4Ni44IDMwOWwxOTUuNyA0MXptNTEtODdMMTg4LjIgOTUuN2wtMjUuNSAzMC44IDE1My41IDEyOC4zem0tMzEuMiAzOS43TDEyOS4yIDE3OWwtMTYuNyAzNi41TDI5My43IDMwMHpNMjYyIDMybC0zMiAyNCAxMTkuMyAxNjAuMyAzMi0yNHptMjAuNSAzMjhoLTIwMHYzOS43aDIwMHptMzkuNyA4MEg0Mi43VjMyMGgtNDB2MTYwaDM1OS41VjMyMGgtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YWNrcGF0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDQuNiAyMzIuNGMwIDguNS00LjI2IDIwLjQ5LTIxLjM0IDIwLjQ5aC0xOS42MXYtNDEuNDdoMTkuNjFjMTcuMTMgMCAyMS4zNCAxMi4zNiAyMS4zNCAyMC45OHpNNDQ4IDMydjQ0OEgwVjMyek0xNTEuMyAyODcuODRjMC0yMS4yNC0xMi4xMi0zNC41NC00Ni43Mi00NC44NS0yMC41Ny03LjQxLTI2LTEwLjkxLTI2LTE4LjYzczctMTQuNjEgMjAuNDEtMTQuNjFjMTQuMDkgMCAyMC43OSA4LjQ1IDIwLjc5IDE4LjM1aDMwLjdsLjE5LS41N2MuNS0xOS41Ny0xNS4wNi00MS42NS01MS4xMi00MS42NS0yMy4zNyAwLTUyLjU1IDEwLjc1LTUyLjU1IDM4LjI5IDAgMTkuNCA5LjI1IDMxLjI5IDUwLjc0IDQ0LjM3IDE3LjI2IDYuMTUgMjEuOTEgMTAuNCAyMS45MSAxOS40OCAwIDE1LjItMTkuMTMgMTQuMjMtMTkuNDcgMTQuMjMtMjAuNCAwLTI1LjY1LTkuMS0yNS42NS0yMS45aC0zMC44bC0uMTguNTZjLS42OCAzMS4zMiAyOC4zOCA0NS4yMiA1Ni42MyA0NS4yMiAyOS45OCAwIDUxLjEyLTEzLjU1IDUxLjEyLTM4LjI5em0xMjUuMzgtNTUuNjNjMC0yNS4zLTE4LjQzLTQ1LjQ2LTUzLjQyLTQ1LjQ2aC01MS43OHYxMzguMThoMzIuMTd2LTQ3LjM2aDE5LjYxYzMwLjI1IDAgNTMuNDItMTUuOTUgNTMuNDItNDUuMzZ6TTI5Ny45NCAzMjVMMzQ3IDE4Ni43OGgtMzEuMDlMMjY4IDMyNXptMTA2LjUyLTEzOC4yMmgtMzEuMDlMMzI1LjQ2IDMyNWgyOS45NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RheWxpbmtlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODIuNyAyOTIuNWwyLjcgMi43LTE3MC0xNjcuM2MtMy41LTMuNS05LjctMy43LTEzLjgtLjVMMTQ0LjMgMTcxYy00LjIgMy4yLTQuNiA4LjctMS4xIDEyLjJsNjguMSA2NC4zYzMuNiAzLjUgOS45IDMuNyAxNCAuNWwuMS0uMWM0LjEtMy4yIDEwLjQtMyAxNCAuNWw4NCA4MS4zYzMuNiAzLjUgMy4yIDktLjkgMTIuMmwtOTMuMiA3NGMtNC4yIDMuMy0xMC41IDMuMS0xNC4yLS40TDYzLjIgMjY4Yy0zLjUtMy41LTkuNy0zLjctMTMuOS0uNUwzLjUgMzAyLjRjLTQuMiAzLjItNC43IDguNy0xLjIgMTIuMkwyMTEgNTEwLjdzNy40IDYuOCAxNy4zLS44bDE5OC0xNjMuOWM0LTMuMiA0LjQtOC43LjctMTIuMnptNTQuNS04My40TDIyNi43IDIuNWMtMS41LTEuMi04LTUuNS0xNi4zIDEuMUwzLjYgMTY1LjdjLTQuMiAzLjItNC44IDguNy0xLjIgMTIuMmw0Mi4zIDQxLjcgMTcxLjcgMTY1LjFjMy43IDMuNSAxMC4xIDMuNyAxNC4zLjRsNTAuMi0zOC44LS4zLS4zIDcuNy02YzQuMi0zLjIgNC42LTguNy45LTEyLjJsLTU3LjEtNTQuNGMtMy42LTMuNS0xMC0zLjctMTQuMi0uNWwtLjEuMWMtNC4yIDMuMi0xMC41IDMuMS0xNC4yLS40TDEwOSAxODAuOGMtMy42LTMuNS0zLjEtOC45IDEuMS0xMi4ybDkyLjItNzEuNWM0LjEtMy4yIDEwLjMtMyAxMy45LjVsMTYwLjQgMTU5YzMuNyAzLjUgMTAgMy43IDE0LjEuNWw0NS44LTM1LjhjNC4xLTMuMiA0LjQtOC43LjctMTIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RlYW1TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg1LjIgMzU2LjVjNy43LTE4LjUtMS0zOS43LTE5LjYtNDcuNGwtMjkuNS0xMi4yYzExLjQtNC4zIDI0LjMtNC41IDM2LjQuNSAxMi4yIDUuMSAyMS42IDE0LjYgMjYuNyAyNi43IDUgMTIuMiA1IDI1LjYtLjEgMzcuNy0xMC41IDI1LjEtMzkuNCAzNy02NC42IDI2LjUtMTEuNi00LjgtMjAuNC0xMy42LTI1LjQtMjQuMmwyOC41IDExLjhjMTguNiA3LjggMzkuOS0uOSA0Ny42LTE5LjR6TTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjE2MC43bDExNi42IDQ4LjFjMTItOC4yIDI2LjItMTIuMSA0MC43LTExLjNsNTUuNC04MC4ydi0xLjFjMC00OC4yIDM5LjMtODcuNSA4Ny42LTg3LjVzODcuNiAzOS4zIDg3LjYgODcuNWMwIDQ5LjItNDAuOSA4OC43LTg5LjYgODcuNWwtNzkgNTYuM2MxLjYgMzguNS0yOS4xIDY4LjgtNjUuNyA2OC44LTMxLjggMC01OC41LTIyLjctNjQuNS01Mi43TDAgMzE5LjJWNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptLTk5LjcgMjIyLjVjLTMyLjIgMC01OC40LTI2LjEtNTguNC01OC4zczI2LjItNTguMyA1OC40LTU4LjMgNTguNCAyNi4yIDU4LjQgNTguMy0yNi4yIDU4LjMtNTguNCA1OC4zem0uMS0xNC42YzI0LjIgMCA0My45LTE5LjYgNDMuOS00My44IDAtMjQuMi0xOS42LTQzLjgtNDMuOS00My44LTI0LjIgMC00My45IDE5LjYtNDMuOSA0My44IDAgMjQuMiAxOS43IDQzLjggNDMuOSA0My44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGVhbVN5bWJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTUuNSAxNzcuNWMwIDMzLjgtMjcuNSA2MS02MSA2MS0zMy44IDAtNjEtMjcuMy02MS02MXMyNy4zLTYxIDYxLTYxYzMzLjUgMCA2MSAyNy4yIDYxIDYxem01Mi41LjJjMCA2My01MSAxMTMuOC0xMTMuNyAxMTMuOEwyMjUgMzcxLjNjLTQgNDMtNDAuNSA3Ni44LTg0LjUgNzYuOC00MC41IDAtNzQuNy0yOC44LTgzLTY3TDAgMzU4VjI1MC43TDk3LjIgMjkwYzE1LjEtOS4yIDMyLjItMTMuMyA1Mi0xMS41bDcxLTEwMS43Yy41LTYyLjMgNTEuNS0xMTIuOCAxMTQtMTEyLjhDMzk3IDY0IDQ0OCAxMTUgNDQ4IDE3Ny43ek0yMDMgMzYzYzAtMzQuNy0yNy44LTYyLjUtNjIuNS02Mi41LTQuNSAwLTkgLjUtMTMuNSAxLjVsMjYgMTAuNWMyNS41IDEwLjIgMzggMzkgMjcuNyA2NC41LTEwLjIgMjUuNS0zOS4yIDM4LTY0LjcgMjcuNS0xMC4yLTQtMjAuNS04LjMtMzAuNy0xMi4yIDEwLjUgMTkuNyAzMS4yIDMzLjIgNTUuMiAzMy4yIDM0LjcgMCA2Mi41LTI3LjggNjIuNS02Mi41em0yMDcuNS0xODUuM2MwLTQyLTM0LjMtNzYuMi03Ni4yLTc2LjItNDIuMyAwLTc2LjUgMzQuMi03Ni41IDc2LjIgMCA0Mi4yIDM0LjMgNzYuMiA3Ni41IDc2LjIgNDEuOS4xIDc2LjItMzMuOSA3Ni4yLTc2LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0ZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAyNTZjMCAxMzctMTExLjIgMjQ4LTI0OC40IDI0OC0xMTMuOCAwLTIwOS42LTc2LjMtMjM5LTE4MC40bDk1LjIgMzkuM2M2LjQgMzIuMSAzNC45IDU2LjQgNjguOSA1Ni40IDM5LjIgMCA3MS45LTMyLjQgNzAuMi03My41bDg0LjUtNjAuMmM1Mi4xIDEuMyA5NS44LTQwLjkgOTUuOC05My41IDAtNTEuNi00Mi05My41LTkzLjctOTMuNXMtOTMuNyA0Mi05My43IDkzLjV2MS4yTDE3Ni42IDI3OWMtMTUuNS0uOS0zMC43IDMuNC00My41IDEyLjFMMCAyMzYuMUMxMC4yIDEwOC40IDExNy4xIDggMjQ3LjYgOCAzODQuOCA4IDQ5NiAxMTkgNDk2IDI1NnpNMTU1LjcgMzg0LjNsLTMwLjUtMTIuNmE1Mi43OSA1Mi43OSAwIDAgMCAyNy4yIDI1LjhjMjYuOSAxMS4yIDU3LjgtMS42IDY5LTI4LjQgNS40LTEzIDUuNS0yNy4zLjEtNDAuMy01LjQtMTMtMTUuNS0yMy4yLTI4LjUtMjguNi0xMi45LTUuNC0yNi43LTUuMi0zOC45LS42bDMxLjUgMTNjMTkuOCA4LjIgMjkuMiAzMC45IDIwLjkgNTAuNy04LjMgMTkuOS0zMSAyOS4yLTUwLjggMjF6bTE3My44LTEyOS45Yy0zNC40IDAtNjIuNC0yOC02Mi40LTYyLjNzMjgtNjIuMyA2Mi40LTYyLjMgNjIuNCAyOCA2Mi40IDYyLjMtMjcuOSA2Mi4zLTYyLjQgNjIuM3ptLjEtMTUuNmMyNS45IDAgNDYuOS0yMSA0Ni45LTQ2LjggMC0yNS45LTIxLTQ2LjgtNDYuOS00Ni44cy00Ni45IDIxLTQ2LjkgNDYuOGMuMSAyNS44IDIxLjEgNDYuOCA0Ni45IDQ2Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0aWNrZXJNdWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2MS43IDE5OS42Yy0xLjMuMy4zIDAgMCAwem0tNi4yLTc3LjRjLTcuNy0yMi4zLTUuMS03LjItMTMuNC0zNi45LTEuNi02LjUtMy42LTE0LjUtNi4yLTIwLTQuNC04LjctNC42LTcuNS00LjYtOS41IDAtNS4zIDMwLjctNDUuMyAxOS00Ni45LTUuNy0uNi0xMi4yIDExLjYtMjAuNiAxNy04LjYgNC4yLTggNS0xMC4zIDUtMi42IDAtNS43LTMtNi4yLTUtMi01LjcgMS45LTI1LjktMy42LTI1LjktMy42IDAtMTIuMyAyNC44LTE3IDI1LjgtNS4yIDEuMy0yNy45LTExLjQtNzUuMSAxOC0yNS4zIDEzLjItODYuOSA2NS4yLTg3IDY1LjMtNi43IDQuNy0yMCA0LjctMzUuNSAxNi00NC40IDMwLjEtMTA5LjYgOS40LTExMC43IDktMTEwLjYtMjYuOC0xMjgtMTUuMi0xNTkgMTEuNS0yMC44IDE3LjktMjMuNyAzNi41LTI0LjIgMzguOS00LjIgMjAuNCA1LjIgNDguMyA2LjcgNjQuMyAxLjggMTkuMy0yLjcgMTcuNyA3LjcgOTguMy41IDEgNC4xIDAgNS4xIDEuNSAwIDguNC0zLjggMTIuMS00LjEgMTMtMS41IDQuNS0xLjUgMTAuNSAwIDE2IDIuMyA4LjIgOC4yIDM3LjIgOC4yIDQ2LjkgMCA0MS44LjQgNDQgMi42IDQ5LjQgMy45IDEwIDEyLjUgOS4xIDE3IDEyIDMuMSAzLjUtLjUgOC41IDEgMTIuNS41IDIgMy42IDQgNi4yIDUgOS4yIDMuNiAyNyAuMyAyOS45LTIuNSAxLjYtMS41LjUtNC41IDMuMS01IDUuMSAwIDEwLjgtLjUgMTQuNC0yLjUgNS4xLTIuNSA0LjEtNiAxLjUtMTAuNS0uNC0uOC03LTEzLjMtOS44LTE2LTIuMS0yLTUuMS0zLTcuMi00LjUtNS44LTQuOS0xMC4zLTE5LjQtMTAuMy0xOS41LTQuNi0xOS40LTEwLjMtNDYuMy00LjEtNjYuOCA0LjYtMTcuMiAzOS41LTg3LjcgMzkuNi04Ny44IDQuMS02LjUgMTctMTEuNSAyNy4zLTcgNiAxLjkgMTkuMyAyMiA2NS40IDMwLjkgNDcuOSA4LjcgOTcuNC0yIDExMi4yLTIgMi44IDItMS45IDEzLS41IDM4LjkgMCAyNi40LS40IDEzLjctNC4xIDI5LjktMi4yIDkuNyAzLjQgMjMuMi0xLjUgNDYuOS0xLjQgOS44LTkuOSAzMi43LTguMiA0My40LjUgMSAxIDIgMS41IDMuNS41IDQuNSAxLjUgOC41IDQuNiAxMCA3LjMgMy42IDEyLTMuNSA5LjggMTEuNS0uNyAzLjEtMi42IDEyIDEuNSAxNSA0LjQgMy43IDMwLjYgMy40IDM2LjUuNSAyLjYtMS41IDEuNi00LjUgNi40LTcuNCAxLjktLjkgMTEuMy0uNCAxMS4zLTYuNS4zLTEuOC05LjItMTkuOS05LjMtMjAtMi42LTMuNS05LjItNC41LTExLjMtOC02LjktMTAuMS0xLjctNTIuNi41LTU5LjQgMy0xMSA1LjYtMjIuNCA4LjctMzIuNCAxMS00Mi41IDEwLjMtNTAuNiAxNi41LTY4LjMuOC0xLjggNi40LTIzLjEgMTAuMy0yOS45IDkuMy0xNyAyMS43LTMyLjQgMzMuNS00Ny40IDE4LTIyLjkgMzQtNDYuOSA1Mi02OS44IDYuMS03IDguMi0xMy43IDE4LTggMTAuOCA1LjcgMjEuNiA3IDMxLjkgMTcgMTQuNiAxMi44IDEwLjIgMTguMiAxMS44IDIyLjkgMS41IDUgNy43IDEwLjUgMTQuOSA5LjUgMTAuNC0yIDEzLTIuNSAxMy40LTIuNSAyLjYtLjUgNS43LTUgNy4yLTggMy4xLTUuNSA3LjItOSA3LjItMTYuNSAwLTcuNy0uNC0yLjgtMjAuNi01Mi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHJhdmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU4LjQgMEw3IDI5Mmg4OS4ybDYyLjItMTE2LjFMMjIwLjEgMjkyaDg4LjV6bTE1MC4yIDI5MmwtNDMuOSA4OC4yLTQ0LjYtODguMmgtNjcuNmwxMTIuMiAyMjAgMTExLjUtMjIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHJpcGVTIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1NS4zIDE1NC42YzAtMjIuMyAxOC42LTMwLjkgNDguNC0zMC45IDQzLjQgMCA5OC41IDEzLjMgMTQxLjkgMzYuN1YyNi4xQzI5OC4zIDcuMiAyNTEuMSAwIDIwMy44IDAgODguMSAwIDExIDYwLjQgMTEgMTYxLjRjMCAxNTcuOSAyMTYuOCAxMzIuMyAyMTYuOCAyMDAuNCAwIDI2LjQtMjIuOSAzNC45LTU0LjcgMzQuOS00Ny4yIDAtMTA4LjItMTkuNS0xNTYuMS00NS41djEyOC41YTM5Ni4wOSAzOTYuMDkgMCAwIDAgMTU2IDMyLjRjMTE4LjYgMCAyMDAuMy01MSAyMDAuMy0xNTMuNiAwLTE3MC4yLTIxOC0xMzkuNy0yMTgtMjAzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0cmlwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjUgMTQ0LjdsLTQzLjMgOS4yLS4yIDE0Mi40YzAgMjYuMyAxOS44IDQzLjMgNDYuMSA0My4zIDE0LjYgMCAyNS4zLTIuNyAzMS4yLTUuOXYtMzMuOGMtNS43IDIuMy0zMy43IDEwLjUtMzMuNy0xNS43VjIyMWgzMy43di0zNy44aC0zMy43em04OS4xIDUxLjZsLTIuNy0xMy4xSDIxM3YxNTMuMmg0NC4zVjIzMy4zYzEwLjUtMTMuOCAyOC4yLTExLjEgMzMuOS05LjN2LTQwLjhjLTYtMi4xLTI2LjctNi0zNy4xIDEzLjF6bTkyLjMtNzIuM2wtNDQuNiA5LjV2MzYuMmw0NC42LTkuNXpNNDQuOSAyMjguM2MwLTYuOSA1LjgtOS42IDE1LjEtOS43IDEzLjUgMCAzMC43IDQuMSA0NC4yIDExLjR2LTQxLjhjLTE0LjctNS44LTI5LjQtOC4xLTQ0LjEtOC4xLTM2IDAtNjAgMTguOC02MCA1MC4yIDAgNDkuMiA2Ny41IDQxLjIgNjcuNSA2Mi40IDAgOC4yLTcuMSAxMC45LTE3IDEwLjktMTQuNyAwLTMzLjctNi4xLTQ4LjYtMTQuMnY0MGMxNi41IDcuMSAzMy4yIDEwLjEgNDguNSAxMC4xIDM2LjkgMCA2Mi4zLTE1LjggNjIuMy00Ny44IDAtNTIuOS02Ny45LTQzLjQtNjcuOS02My40ek02NDAgMjYxLjZjMC00NS41LTIyLTgxLjQtNjQuMi04MS40cy02Ny45IDM1LjktNjcuOSA4MS4xYzAgNTMuNSAzMC4zIDc4LjIgNzMuNSA3OC4yIDIxLjIgMCAzNy4xLTQuOCA0OS4yLTExLjV2LTMzLjRjLTEyLjEgNi4xLTI2IDkuOC00My42IDkuOC0xNy4zIDAtMzIuNS02LjEtMzQuNS0yNi45aDg2LjljLjItMi4zLjYtMTEuNi42LTE1Ljl6bS04Ny45LTE2LjhjMC0yMCAxMi4zLTI4LjQgMjMuNC0yOC40IDEwLjkgMCAyMi41IDguNCAyMi41IDI4LjR6bS0xMTIuOS02NC42Yy0xNy40IDAtMjguNiA4LjItMzQuOCAxMy45bC0yLjMtMTFIMzYzdjIwNC44bDQ0LjQtOS40LjEtNTAuMmM2LjQgNC43IDE1LjkgMTEuMiAzMS40IDExLjIgMzEuOCAwIDYwLjgtMjMuMiA2MC44LTc5LjYuMS01MS42LTI5LjMtNzkuNy02MC41LTc5Ljd6bS0xMC42IDEyMi41Yy0xMC40IDAtMTYuNi0zLjgtMjAuOS04LjRsLS4zLTY2YzQuNi01LjEgMTEtOC44IDIxLjItOC44IDE2LjIgMCAyNy40IDE4LjIgMjcuNCA0MS40LjEgMjMuOS0xMC45IDQxLjgtMjcuNCA0MS44em0tMTI2LjcgMzMuN2g0NC42VjE4My4yaC00NC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHVkaW92aW5hcmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwLjMgMTg3LjdsNC4yIDI4djI4bC0yNS4xIDQ0LjEtMzkuOCA3OC40LTU2LjEgNjcuNS03OS4xIDM3LjgtMTcuNyAyNC41LTcuNyAxMi05LjYgNHMxNy4zLTYzLjYgMTkuNC02My42YzIuMSAwIDIwLjMuNyAyMC4zLjdsNjYuNy0zOC42LTkyLjUgMjYuMS01NS45IDM2LjgtMjIuOCAyOC02LjYgMS40IDIwLjgtNzMuNiA2LjktNS41IDIwLjcgMTIuOSA4OC4zLTQ1LjIgNTYuOC01MS41IDE0LjgtNjguNC0xMjUuNCAyMy4zIDE1LjItMTguMi0xNzMuNC01My4zIDgxLjktMTAuNS0xNjYtMTIyLjlMMTMzLjUgMTA4IDMyLjIgMGwyNTIuOSAxMjYuNi0zMS41LTM4TDM3OCAxNjMgMjM0LjcgNjRsMTguNyAzOC40LTQ5LjYtMTguMUwxNTguMyAwbDE5NC42IDEyMkwzMTAgNjYuMmwxMDggOTYuNCAxMi04LjktMjEtMTYuNCA0LjItMzcuOEw0NTEgODkuMWwyOS4yIDI0LjcgMTEuNSA0LjItNyA2LjIgOC41IDEyLTEzLjEgNy40LTEwLjMgMjAuMiAxMC41IDIzLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0dW1ibGV1cG9uQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTAgMTc3LjVjLTkuOCAwLTE3LjggOC0xNy44IDE3Ljh2MTA2LjljMCA0MC45LTMzLjkgNzMuOS03NC45IDczLjktNDEuNCAwLTc0LjktMzMuNS03NC45LTc0Ljl2LTQ2LjVoNTcuM3Y0NS44YzAgMTAgOCAxNy44IDE3LjggMTcuOHMxNy44LTcuOSAxNy44LTE3LjhWMjAwLjFjMC00MCAzNC4yLTcyLjEgNzQuNy03Mi4xIDQwLjcgMCA3NC43IDMyLjMgNzQuNyA3Mi42djIzLjdsLTM0LjEgMTAuMS0yMi45LTEwLjd2LTIwLjZjLjEtOS42LTcuOS0xNy42LTE3LjctMTcuNnptMTY3LjYgMTIzLjZjMCA0MS40LTMzLjUgNzQuOS03NC45IDc0LjktNDEuMiAwLTc0LjktMzMuMi03NC45LTc0LjJWMjYzbDIyLjkgMTAuNyAzNC4xLTEwLjF2NDcuMWMwIDkuOCA4IDE3LjYgMTcuOCAxNy42czE3LjgtNy45IDE3LjgtMTcuNnYtNDhoNTcuM2MtLjEgNDUuOS0uMSA0Ni40LS4xIDQ2LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0dW1ibGV1cG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi45IDI2NnY2OS43YzAgNjIuMS01MC4zIDExMi40LTExMi40IDExMi40LTYxLjggMC0xMTIuNC00OS44LTExMi40LTExMS4zdi03MC4ybDM0LjMgMTYgNTEuMS0xNS4yVjMzOGMwIDE0LjcgMTIgMjYuNSAyNi43IDI2LjVTNDE3IDM1Mi43IDQxNyAzMzh2LTcyaDg1Ljl6bS0yMjQuNy01OC4ybDM0LjMgMTYgNTEuMS0xNS4yVjE3M2MwLTYwLjUtNTEuMS0xMDktMTEyLjEtMTA5LTYwLjggMC0xMTIuMSA0OC4yLTExMi4xIDEwOC4ydjE2Mi40YzAgMTQuOS0xMiAyNi43LTI2LjcgMjYuN1M4NiAzNDkuNSA4NiAzMzQuNlYyNjZIMHY2OS43QzAgMzk3LjcgNTAuMyA0NDggMTEyLjQgNDQ4YzYxLjYgMCAxMTIuNC00OS41IDExMi40LTExMC44VjE3Ni45YzAtMTQuNyAxMi0yNi43IDI2LjctMjYuN3MyNi43IDEyIDI2LjcgMjYuN3YzMC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdXBlcnBvd2VycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzJjLTgzLjMgMTEtMTY2LjggMjItMjUwIDMzLTkyIDEyLjUtMTYzLjMgODYuNy0xNjkgMTgwLTMuMyA1NS41IDE4IDEwOS41IDU3LjggMTQ4LjJMMCA0ODBjODMuMy0xMSAxNjYuNS0yMiAyNDkuOC0zMyA5MS44LTEyLjUgMTYzLjMtODYuOCAxNjguNy0xNzkuOCAzLjUtNTUuNS0xOC0xMDkuNS01Ny43LTE0OC4yTDQ0OCAzMnptLTc5LjcgMjMyLjNjLTQuMiA3OS41LTc0IDEzOS4yLTE1Mi44IDEzNC41LTc5LjUtNC43LTE0MC43LTcxLTEzNi4zLTE1MSA0LjUtNzkuMiA3NC4zLTEzOS4zIDE1My0xMzQuNSA3OS4zIDQuNyAxNDAuNSA3MSAxMzYuMSAxNTF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1cHBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMjYyLjVjMCA2NC4xLTEwOSAxMTYuMS0yNDMuNSAxMTYuMS0yNC44IDAtNDguNi0xLjgtNzEuMS01IDcuNy40IDE1LjUuNiAyMy40LjYgMTM0LjUgMCAyNDMuNS01Ni45IDI0My41LTEyNy4xIDAtMjkuNC0xOS4xLTU2LjQtNTEuMi03OCA2MCAyMS4xIDk4LjkgNTUuMSA5OC45IDkzLjR6TTQ3LjcgMjI3LjljLS4xLTcwLjIgMTA4LjgtMTI3LjMgMjQzLjMtMTI3LjYgNy45IDAgMTUuNi4yIDIzLjMuNS0yMi41LTMuMi00Ni4zLTQuOS03MS00LjlDMTA4LjggOTYuMy0uMSAxNDguNSAwIDIxMi42Yy4xIDM4LjMgMzkuMSA3Mi4zIDk5LjMgOTMuMy0zMi4zLTIxLjUtNTEuNS00OC42LTUxLjYtNzh6bTYwLjIgMzkuOXMxMC41IDEzLjIgMjkuMyAxMy4yYzE3LjkgMCAyOC40LTExLjUgMjguNC0yNS4xIDAtMjgtNDAuMi0yNS4xLTQwLjItMzkuNyAwLTUuNCA1LjMtOS4xIDEyLjUtOS4xIDUuNyAwIDExLjMgMi42IDExLjMgNi42djMuOWgxNC4ydi03LjljMC0xMi4xLTE1LjQtMTYuOC0yNS40LTE2LjgtMTYuNSAwLTI4LjUgMTAuMi0yOC41IDI0LjEgMCAyNi42IDQwLjIgMjUuNCA0MC4yIDM5LjkgMCA2LjYtNS44IDEwLjEtMTIuMyAxMC4xLTExLjkgMC0yMC43LTEwLjEtMjAuNy0xMC4xbC04LjggMTAuOXptMTIwLjgtNzMuNnY1NC40YzAgMTEuMy03LjEgMTcuOC0xNy44IDE3LjgtMTAuNyAwLTE3LjgtNi41LTE3LjgtMTcuN3YtNTQuNWgtMTUuOHY1NWMwIDE4LjkgMTMuNCAzMS45IDMzLjcgMzEuOSAyMC4xIDAgMzMuNC0xMyAzMy40LTMxLjl2LTU1aC0xNS43em0zNC40IDg1LjRoMTUuOHYtMjkuNWgxNS41YzE2IDAgMjcuMi0xMS41IDI3LjItMjguMXMtMTEuMi0yNy44LTI3LjItMjcuOGgtMzkuMXYxMy40aDcuOHY3MnptMTUuOC00M3YtMjkuMWgxMi45YzguNyAwIDEzLjcgNS43IDEzLjcgMTQuNCAwIDguOS01LjEgMTQuNy0xNCAxNC43aC0xMi42em01NyA0M2gxNS44di0yOS41aDE1LjVjMTYgMCAyNy4yLTExLjUgMjcuMi0yOC4xcy0xMS4yLTI3LjgtMjcuMi0yNy44aC0zOS4xdjEzLjRoNy44djcyem0xNS43LTQzdi0yOS4xaDEyLjljOC43IDAgMTMuNyA1LjcgMTMuNyAxNC40IDAgOC45LTUgMTQuNy0xNCAxNC43aC0xMi42em01Ny4xIDM0LjhjMCA1LjggMi40IDguMiA4LjIgOC4yaDM3LjZjNS44IDAgOC4yLTIuNCA4LjItOC4ydi0xM2gtMTQuM3Y1LjJjMCAxLjctMSAyLjYtMi42IDIuNmgtMTguNmMtMS43IDAtMi42LTEtMi42LTIuNnYtNjEuMmMwLTUuNy0yLjQtOC4yLTguMi04LjJINDAxdjEzLjRoNS4yYzEuNyAwIDIuNiAxIDIuNiAyLjZ2NjEuMnptNjMuNCAwYzAgNS44IDIuNCA4LjIgOC4yIDguMkg1MTljNS43IDAgOC4yLTIuNCA4LjItOC4ydi0xM2gtMTQuM3Y1LjJjMCAxLjctMSAyLjYtMi42IDIuNmgtMTkuN2MtMS43IDAtMi42LTEtMi42LTIuNnYtMjAuM2gyNy43di0xMy40SDQ4OHYtMjIuNGgxOS4yYzEuNyAwIDIuNiAxIDIuNiAyLjZ2NS4ySDUyNHYtMTNjMC01LjctMi41LTguMi04LjItOC4yaC01MS42djEzLjRoNy44djYzLjl6bTU4LjktNzZ2NS45aDEuNnYtNS45aDIuN3YtMS4yaC03djEuMmgyLjd6bTUuNy0xLjJ2Ny4xaDEuNXYtNS43bDIuMyA1LjdoMS4zbDIuMy01Ljd2NS43aDEuNXYtNy4xaC0yLjNsLTIuMSA1LjEtMi4xLTUuMWgtMi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3MS4wOCAxMDIuNjZzLS4zIDE4LjMtLjMgMjAuM2MtOS4xLTMtNzQuNC0yNC4xLTEzNS43LTI2LjMtNTEuOS0xLjgtMTIyLjgtNC4zLTIyMyA1Ny4zLTE5LjQgMTIuNC03My45IDQ2LjEtOTkuNiAxMDkuN0M3IDI3Ny0uMTIgMzA3IDcgMzM1LjA2YTExMSAxMTEgMCAwIDAgMTYuNSAzNS43YzE3LjQgMjUgNDYuNiA0MS42IDc4LjEgNDQuNCA0NC40IDMuOSA3OC4xLTE2IDkwLTUzLjMgOC4yLTI1LjggMC02My42LTMxLjUtODIuOS0yNS42LTE1LjctNTMuMy0xMi4xLTY5LjItMS42LTEzLjkgOS4yLTIxLjggMjMuNS0yMS42IDM5LjIuMyAyNy44IDI0LjMgNDIuNiA0MS41IDQyLjZhNDkgNDkgMCAwIDAgMTUuOC0yLjdjNi41LTEuOCAxMy4zLTYuNSAxMy4zLTE0LjkgMC0xMi4xLTExLjYtMTQuOC0xNi44LTEzLjktMi45LjUtNC41IDItMTEuOCAyLjQtMi0uMi0xMi0zLjEtMTItMTRWMzE2Yy4yLTEyLjMgMTMuMi0xOCAyNS41LTE2LjkgMzIuMyAyLjggNDcuNyA0MC43IDI4LjUgNjUuNy0xOC4zIDIzLjctNzYuNiAyMy4yLTk5LjctMjAuNC0yNi00OS4yIDEyLjctMTExLjIgODctOTguNCAzMy4yIDUuNyA4My42IDM1LjUgMTAyLjQgMTA0LjNoNDUuOWMtNS43LTE3LjYtOC45LTY4LjMgNDIuNy02OC4zIDU2LjcgMCA2My45IDM5LjkgNzkuOCA2OC4zSDQ2MGMtMTIuOC0xOC4zLTIxLjctMzguNy0xOC45LTU1LjggNS42LTMzLjggMzkuNy0xOC40IDgyLjQtMTcuNCA2Ni41LjQgMTAyLjEtMjcgMTAzLjEtMjggMy43LTMuMSA2LjUtMTUuOCA3LTE3LjcgMS4zLTUuMS0zLjItMi40LTMuMi0yLjQtOC43IDUuMi0zMC41IDE1LjItNTAuOSAxNS42LTI1LjMuNS03Ni4yLTI1LjQtODEuNi0yOC4yLS4zLS40LjEgMS4yLTExLTI1LjUgODguNCA1OC4zIDExOC4zIDQwLjUgMTQ1LjIgMjEuNy44LS42IDQuMy0yLjkgMy42LTUuNy0xMy44LTQ4LjEtMjIuNC02Mi43LTM0LjUtNjkuNi0zNy0yMS42LTEyNS0zNC43LTEyOS4yLTM1LjMuMS0uMS0uOS0uMy0uOS43em02MC40IDcyLjhhMzcuNTQgMzcuNTQgMCAwIDEgMzguOS0zNi4zYzMzLjQgMS4yIDQ4LjggNDIuMyAyNC40IDY1LjItMjQuMiAyMi43LTY0LjQgNC42LTYzLjMtMjguOXptMzguNi0yNS4zYTI2LjI3IDI2LjI3IDAgMSAwIDI1LjQgMjcuMiAyNi4xOSAyNi4xOSAwIDAgMC0yNS40LTI3LjJ6bTQuMyAyOC44Yy0xNS40IDAtMTUuNC0xNS42IDAtMTUuNnMxNS40IDE1LjY0IDAgMTUuNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN3aWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAxNTYuMDljMC00LjUxLS4wOC05LS4yLTEzLjUyYTE5Ni4zMSAxOTYuMzEgMCAwIDAtMi41OC0yOS40MiA5OS42MiA5OS42MiAwIDAgMC05LjIyLTI4QTk0LjA4IDk0LjA4IDAgMCAwIDM5NC44NCA0NGE5OS4xNyA5OS4xNyAwIDAgMC0yOC05LjIyIDE5NSAxOTUgMCAwIDAtMjkuNDMtMi41OWMtNC41MS0uMTItOS0uMTctMTMuNTItLjJIMTI0LjE0Yy00LjUxIDAtOSAuMDgtMTMuNTIuMi0yLjQ1LjA3LTQuOTEuMTUtNy4zNy4yN2ExNzEuNjggMTcxLjY4IDAgMCAwLTIyLjA2IDIuMzIgMTAzLjA2IDEwMy4wNiAwIDAgMC0yMS4yMSA2LjFxLTMuNDYgMS40NS02LjgxIDMuMTJhOTQuNjYgOTQuNjYgMCAwIDAtMTguMzkgMTIuMzJjLTEuODggMS42MS0zLjY5IDMuMjgtNS40MyA1QTkzLjg2IDkzLjg2IDAgMCAwIDEyIDg1LjE3YTk5LjQ1IDk5LjQ1IDAgMCAwLTkuMjIgMjggMTk2LjMxIDE5Ni4zMSAwIDAgMC0yLjU0IDI5LjRjLS4xMyA0LjUxLS4xOCA5LS4yMSAxMy41MnYxOTkuODNjMCA0LjUxLjA4IDkgLjIxIDEzLjUxYTE5Ni4wOCAxOTYuMDggMCAwIDAgMi41OCAyOS40MiA5OS4zIDk5LjMgMCAwIDAgOS4yMiAyOEE5NC4zMSA5NC4zMSAwIDAgMCA1My4xNyA0NjhhOTkuNDcgOTkuNDcgMCAwIDAgMjggOS4yMSAxOTUgMTk1IDAgMCAwIDI5LjQzIDIuNTljNC41LjEyIDkgLjE3IDEzLjUyLjJIMzIzLjkxYzQuNTEgMCA5LS4wOCAxMy41Mi0uMmExOTYuNTkgMTk2LjU5IDAgMCAwIDI5LjQ0LTIuNTkgOTkuNTcgOTkuNTcgMCAwIDAgMjgtOS4yMUE5NC4yMiA5NC4yMiAwIDAgMCA0MzYgNDI2Ljg0YTk5LjMgOTkuMyAwIDAgMCA5LjIyLTI4IDE5NC43OSAxOTQuNzkgMCAwIDAgMi41OS0yOS40MmMuMTItNC41LjE3LTkgLjItMTMuNTFWMTcyLjE0Yy0uMDEtNS4zNS0uMDEtMTAuNy0uMDEtMTYuMDV6bS02OS44OCAyNDFjLTIwLTM4LjkzLTU3LjIzLTI5LjI3LTc2LjMxLTE5LjQ3LTEuNzIgMS0zLjQ4IDItNS4yNSAzbC0uNDIuMjVjLTM5LjUgMjEtOTIuNTMgMjIuNTQtMTQ1Ljg1LS4zOEEyMzQuNjQgMjM0LjY0IDAgMCAxIDQ1IDI5MC4xMmEyMzAuNjMgMjMwLjYzIDAgMCAwIDM5LjE3IDIzLjM3YzU2LjM2IDI2LjQgMTEzIDI0LjQ5IDE1MyAwLTU3LTQzLjg1LTEwNC42LTEwMS0xNDEuMDktMTQ3LjIyYTE5Ny4wOSAxOTcuMDkgMCAwIDEtMTguNzgtMjUuOWM0My43IDQwIDExMi43IDkwLjIyIDEzNy40OCAxMDQuMTItNTIuNTctNTUuNDktOTguODktMTIzLjk0LTk2LjcyLTEyMS43NCA4Mi43OSA4My40MiAxNTkuMTggMTMwLjU5IDE1OS4xOCAxMzAuNTkgMi44OCAxLjU4IDUgMi44NSA2LjczIDRhMTI3LjQ0IDEyNy40NCAwIDAgMCA0LjE2LTEyLjQ3YzEzLjIyLTQ4LjMzLTEuNjYtMTAzLjU4LTM1LjMxLTE0OS4yQzMyOS42MSAxNDEuNzUgMzc1IDIyOS4zNCAzNTYuNCAzMDMuNDJjLS40NCAxLjczLS45NSAzLjQtMS40NCA1LjA5IDM4LjUyIDQ3LjQgMjguMDQgOTguMTcgMjMuMTMgODguNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN5bWZvbnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMTMzLjc0IDE0My41NGMtMTEuNDcuNDEtMTkuNC02LjQ1LTE5Ljc3LTE2Ljg3LS4yNy05LjE4IDYuNjgtMTMuNDQgNi41My0xOC44NS0uMjMtNi41NS0xMC4xNi02LjgyLTEyLjg3LTYuNjctMzkuNzggMS4yOS00OC41OSA1Ny01OC44OSAxMTMuODUgMjEuNDMgMy4xNSAzNi42NS0uNzIgNDUuMTQtNi4yMiAxMi03Ljc1LTMuMzQtMTUuNzItMS40Mi0yNC41NiA0LTE4LjE2IDMyLjU1LTE5IDMyIDUuMy0uMzYgMTcuODYtMjUuOTIgNDEuODEtNzcuNiAzNS43LTEwLjc2IDU5LjUyLTE4LjM1IDExNS01OC4yIDE2MS43Mi0yOSAzNC40Ni01OC40IDM5LjgyLTcxLjU4IDQwLjI2LTI0LjY1Ljg1LTQxLTEyLjMxLTQxLjU4LTI5Ljg0LS41Ni0xNyAxNC40NS0yNi4yNiAyNC4zMS0yNi41OSAyMS44OS0uNzUgMzAuMTIgMjUuNjcgMTQuODggMzQtMTIuMDkgOS43MS4xMSAxMi42MSAyLjA1IDEyLjU1IDEwLjQyLS4zNiAxNy4zNC01LjUxIDIyLjE4LTkgMjQtMjAgMzMuMjQtNTQuODYgNDUuMzUtMTE4LjM1IDguMTktNDkuNjYgMTctNzggMTguMjMtODItMTYuOTMtMTIuNzUtMjcuMDgtMjguNTUtNDkuODUtMzQuNzItMTUuNjEtNC4yMy0yNS4xMi0uNjMtMzEuODEgNy44My03LjkyIDEwLTUuMjkgMjMgMi4zNyAzMC43bDEyLjYzIDE0YzE1LjUxIDE3LjkzIDI0IDMxLjg3IDIwLjggNTAuNjItNS4wNiAyOS45My00MC43MiA1Mi45LTgyLjg4IDM5Ljk0LTM2LTExLjExLTQyLjctMzYuNTYtMzguMzgtNTAuNjIgNy41MS0yNC4xNSA0Mi4zNi0xMS43MiAzNC42MiAxMy42LTIuNzkgOC42LTQuOTIgOC42OC02LjI4IDEzLjA3LTQuNTYgMTQuNzcgNDEuODUgMjguNCA1MS0xLjM5IDQuNDctMTQuNTItNS4zLTIxLjcxLTIyLjI1LTM5Ljg1LTI4LjQ3LTMxLjc1LTE2LTY1LjQ5IDIuOTUtNzkuNjdDMjA0LjIzIDE0MC4xMyAyNTEuOTQgMTk3IDI2MiAyMDUuMjljMzcuMTctMTA5IDEwMC41My0xMDUuNDYgMTAyLjQzLTEwNS41MyAyNS4xNi0uODEgNDQuMTkgMTAuNTkgNDQuODMgMjguNjUuMjUgNy42OS00LjE3IDIyLjU5LTE5LjUyIDIzLjEzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZWFtc3BlYWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ0LjIgMzQ2Ljc5YzIuNC0xMi4zLTEyLTMwLTMyLjQtNDguNy0yMC45LTE5LjItNDguMi0zOS4xLTYzLjQtNDYuNi0yMS43LTEyLTQxLjctMS44LTQ2LjMgMjIuNy01IDI2LjIgMCA1MS40IDE0LjUgNzMuOSAxMC4yIDE1LjUgMjUuNCAyMi43IDQzLjQgMjQgMTEuNi42IDUyLjUgMi4yIDYxLjctMSAxMS45LTQuMyAyMC4xLTExLjggMjIuNS0yNC4zem0yMDUgMjAuOGE1LjIyIDUuMjIgMCAwIDAtOC4zIDIuNGMtOCAyNS40LTQ0LjcgMTEyLjUtMTcyLjEgMTIxLjUtMTQ5LjcgMTAuNSA4MC4zIDQzLjYgMTQ1LjQtNi40IDIyLjctMTcuNCA0Ny42LTM1IDQ2LjYtODUuNC0uNC0xMC4xLTQuOS0yNi42OS0xMS42LTMyLjF6bTYyLTEyMi40Yy0uMy0xOC45LTguNi0zMy40LTI2LTQyLjItMi45LTEuMy01LTIuNy01LjktNi40QTIyMi42NCAyMjIuNjQgMCAwIDAgNDM4LjkgMTAzYy0xLjEtMS41LTMuNS0zLjItMi4yLTUgOC41LTExLjUtLjMtMTgtNy0yNC40UTMyMS40LTMxLjExIDE3Ny40IDEzLjA5Yy00MC4xIDEyLjMtNzMuOSAzNS42LTEwMiA2Ny40LTQgNC4zLTYuNyA5LjEtMyAxNC41IDMgNCAxLjMgNi4yLTEgOS4zQzUxLjYgMTMyIDM4LjIgMTYyLjU5IDMyLjEgMTk2Yy0uNyA0LjMtMi45IDYtNi40IDcuOC0xNC4yIDctMjIuNSAxOC41LTI0LjkgMzRMMCAyNjQuMjl2MjAuOWMwIDMwLjggMjEgNTAuNCA1MS44IDQ5IDcuNy0uMyAxMS43LTQuMyAxMi0xMS41IDItNzcuNS0yLjQtOTUuNCAzLjctMTI1LjhDOTIuMSA3Mi4zOSAyMzQuMyA1IDM0NS4zIDY1LjM5IDQxMS40IDEwMiA0NDUuNyAxNTkgNDQ3LjYgMjM0Ljc5Yy44IDI4LjIgMCA1Ni41IDAgODQuNiAwIDcgMi4yIDEyLjUgOS40IDE0LjIgMjQuMSA1IDQ5LjItMTIgNTMuMi0zNi43IDIuOS0xNy4xIDEtMzQuNSAxLTUxLjd6bS0xNTkuNiAxMzEuNWMzNi41IDIuOCA1OS4zLTI4LjUgNTguNC02MC41LTIuMS00NS4yLTY2LjItMTYuNS04Ny44LTgtNzMuMiAyOC4xLTQ1IDU0LjktMjIuMiA2MC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZWxlZ3JhbVBsYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ni43IDk4LjZsLTY3LjYgMzE4LjhjLTUuMSAyMi41LTE4LjQgMjguMS0zNy4zIDE3LjVsLTEwMy03NS45LTQ5LjcgNDcuOGMtNS41IDUuNS0xMC4xIDEwLjEtMjAuNyAxMC4xbDcuNC0xMDQuOSAxOTAuOS0xNzIuNWM4LjMtNy40LTEuOC0xMS41LTEyLjktNC4xTDExNy44IDI4NCAxNi4yIDI1Mi4yYy0yMi4xLTYuOS0yMi41LTIyLjEgNC42LTMyLjdMNDE4LjIgNjYuNGMxOC40LTYuOSAzNC41IDQuMSAyOC41IDMyLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbGVncmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTEyMS44IDE2OS45bC00MC43IDE5MS44Yy0zIDEzLjYtMTEuMSAxNi45LTIyLjQgMTAuNWwtNjItNDUuNy0yOS45IDI4LjhjLTMuMyAzLjMtNi4xIDYuMS0xMi41IDYuMWw0LjQtNjMuMSAxMTQuOS0xMDMuOGM1LTQuNC0xLjEtNi45LTcuNy0yLjVsLTE0MiA4OS40LTYxLjItMTkuMWMtMTMuMy00LjItMTMuNi0xMy4zIDIuOC0xOS43bDIzOS4xLTkyLjJjMTEuMS00IDIwLjggMi43IDE3LjIgMTkuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVuY2VudFdlaWJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcyLjMgNDk1LjhjMS40IDE5LjktMjcuNiAyMi4yLTI5LjcgMi45QzMxIDM2OC44IDczLjcgMjU5LjIgMTQ0IDE4NS41Yy0xNS42LTM0IDkuMi03Ny4xIDUwLjYtNzcuMSAzMC4zIDAgNTUuMSAyNC42IDU1LjEgNTUuMSAwIDQ0LTQ5LjUgNzAuOC04Ni45IDQ1LjEtNjUuNyA3MS4zLTEwMS40IDE2OS44LTkwLjUgMjg3LjJ6TTE5MiAuMUM2Ni4xLjEtMTIuMyAxMzQuMyA0My43IDI0Mi40IDUyLjQgMjU5LjggNzkgMjQ2LjkgNzAgMjI5IDIzLjcgMTM2LjQgOTEgMjkuOCAxOTIgMjkuOGM3NS40IDAgMTM2LjkgNjEuNCAxMzYuOSAxMzYuOSAwIDkwLjgtODYuOSAxNTMuOS0xNjcuNyAxMzMuMS0xOS4xLTQuMS0yNS42IDI0LjQtNi42IDI5LjEgMTEwLjcgMjMuMiAyMDQtNjAgMjA0LTE2Mi4zQzM1OC42IDc0LjcgMjg0IC4xIDE5MiAuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhlUmVkWWV0aSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODguMjMgMjQxLjdsMjAuNyA3LjFjLTkuNi0yMy45LTIzLjktMzctMzEuNy00NC44bDcuMS0xOC4yYy4yIDAgMTIuMy0yNy44LTIuNS0zMC43LS42LTExLjMtNi42LTI3LTE4LjQtMjctNy42LTEwLjYtMTcuNy0xMi4zLTMwLjctNS45YTEyMi4yIDEyMi4yIDAgMCAwLTI1LjMgMTYuNWMtNS4zLTYuNC0zIC40LTMtMjkuOC0zNy4xLTI0LjMtNDUuNC0xMS43LTc0LjggM2wuNS41YTIzOS4zNiAyMzkuMzYgMCAwIDAtNjguNC0xMy4zYy01LjUtOC43LTE4LjYtMTkuMS0yNS4xLTI1LjFsMjQuOCA3LjFjLTUuNS01LjUtMjYuOC0xMi45LTM0LjItMTUuMiAxOC4yLTQuMSAyOS44LTIwLjggNDIuNS0zMy0zNC45LTEwLjEtNjcuOS01LjktOTcuOSAxMS44bDEyLTQ0LjJMMTgyIDBjLTMxLjYgMjQuMi0zMyA0MS45LTMzLjcgNDUuNS0uOS0yLjQtNi4zLTE5LjYtMTUuMi0yN2EzNS4xMiAzNS4xMiAwIDAgMC0uNSAyNS4zYzMgOC40IDUuOSAxNC44IDguNCAxOC45LTE2LTMuMy0yOC4zLTQuOS00OS4yIDBoLTMuN2wzMyAxNC4zYTE5NC4yNiAxOTQuMjYgMCAwIDAtNDYuNyA2Ny40bC0xLjcgOC40IDEuNyAxLjcgNy42LTQuN2MtMy4zIDExLjYtNS4zIDE5LjQtNi42IDI1LjhhMjAwLjE4IDIwMC4xOCAwIDAgMC0yNy44IDQwLjNjLTE1IDEtMzEuOCAxMC44LTQwLjMgMTQuM2wzIDMuNCAyOC44IDFjLS41IDEtLjcgMi4yLTEuMiAzLjItNy4zIDYuNC0zOS44IDM3LjctMzMgODAuN2wyMC4yLTIyLjRjLjUgMS43LjcgMy40IDEuMiA1LjIgMCAyNS41LjQgODkuNiA2NC45IDE1MC41IDQzLjYgNDAgOTYgNjAuMiAxNTcuNSA2MC4yIDEyMS43IDAgMjIzLTg3LjMgMjIzLTIxMS41IDYuOC05LjctMS4yIDMgMTYuNy0yNS4xbDEzIDE0LjMgMi41LS41QTE4MS44NCAxODEuODQgMCAwIDAgNDk1IDI1NWE0NC43NCA0NC43NCAwIDAgMC02LjgtMTMuM3pNMzk4IDExMS4ybC0uNSAyMS45YzUuNSAxOC4xIDE2LjkgMTcuMiAyMi40IDE3LjJsLTMuNC00LjcgMjIuNC01LjRhMjQyLjQ0IDI0Mi40NCAwIDAgMS0yNyAwYzEyLjgtMi4xIDMzLjMtMjkgNDMtMTEuMyAzLjQgNy42IDYuNCAxNy4yIDkuMyAyNy44bDEuNy01LjlhNTYuMzggNTYuMzggMCAwIDEtMS43LTE1LjJjNS40LjUgOC44IDMuNCA5LjMgMTAuMS41IDYuNCAxLjcgMTQuOCAzLjQgMjUuM2w0LjctMTEuM2M0LjYgMCA0LjUtMy42LTIuNSAyMC43LTIwLjktOC43LTM1LjEtOC40LTQ2LjUtOC40bDE4LjItMTZjLTI1LjMgOC4yLTMzIDEwLjgtNTQuOCAyMC45LTEuMS01LjQtNS0xMy41LTE2LTE5LjktMy4yIDMuOC0yLjguOS0uNyAxNC44aC0yLjVhNjIuMzIgNjIuMzIgMCAwIDAtOC40LTIzLjFsNC4yLTMuNGM4LjQtNy4xIDExLjgtMTQuMyAxMC42LTIxLjktLjUtNi40LTUuNC0xMy41LTEzLjUtMjAuNyA1LjYtMy40IDE1LjItLjQgMjguMyA4LjV6bS0zOS42LTEwLjFjMi43IDEuOSAxMS40IDUuNCAxOC45IDE3LjIgNC4yIDguNCA0IDkuOCAzLjQgMTEuMS0uNSAyLjQtLjUgNC4zLTMgNy4xLTEuNyAyLjUtNS40IDQuNy0xMS44IDcuNi03LjYtMTMtMTYuNS0yMy42LTI3LjgtMzEuMnpNOTEgMTQzLjFsMS4yLTEuN2MxLjItMi45IDQuMi03LjYgOS4zLTE1LjJsMi41LTMuNC0xMyAxMi4zIDUuNC00LjctMTAuMSA5LjMtNC4yIDEuMmMxMi4zLTI0LjEgMjMuMS00MS4zIDMyLjUtNTAuMiA5LjMtOS4zIDE2LTE2IDIwLjItMTkuNGwtNi40IDEuMmMtMTEuMy00LjItMTkuNC03LjEtMjQuOC04LjQgMi41LS41IDMuNy0uNSAzLjItLjUgMTAuMyAwIDE3LjUuNSAyMC45IDEuMmE1Mi4zNSA1Mi4zNSAwIDAgMCAxNiAyLjVsLjUtMS43LTguNC0zNS44IDEzLjUgMjlhNDIuODkgNDIuODkgMCAwIDAgNS45LTE0LjNjMS43LTYuNCA1LjQtMTMgMTAuMS0xOS40czcuNi0xMC42IDkuMy0xMS4zYTIzNC42OCAyMzQuNjggMCAwIDAtNi40IDI1LjNsLTEuNyA3LjEtLjUgNC43IDIuNSAyLjVDMTkwLjQgMzkuOSAyMTQgMzQgMjM5LjggMzQuNWwyMS4xLjVjLTExLjggMTMuNS0yNy44IDIxLjktNDguNSAyNC44YTIwMS4yNiAyMDEuMjYgMCAwIDEtMjMuNCAyLjlsLS4yLS41LTIuNS0xLjJhMjAuNzUgMjAuNzUgMCAwIDAtMTQgMmMtMi41LS4yLTQuOS0uNS03LjEtLjdsLTIuNSAxLjcuNSAxLjJjMiAuMiAzLjkuNSA2LjIuN2wtMiAzLjQgMy40LS41LTEwLjYgMTEuM2MtNC4yIDMtNS40IDYuNC00LjIgOS4zbDUuNC0zLjRoMS4yYTM5LjQgMzkuNCAwIDAgMSAyNS4zLTE1LjJ2LTNjNi40LjUgMTMgMSAxOS40IDEuMiA2LjQgMCA4LjQuNSA1LjQgMS4yYTE4OS42IDE4OS42IDAgMCAxIDIwLjcgMTMuNWMxMy41IDEwLjEgMjMuNiAyMS45IDMwIDM1LjQgOC44IDE4LjIgMTMuNSAzNy4xIDEzLjUgNTYuNmExNDEuMTMgMTQxLjEzIDAgMCAxLTMgMjguMyAyMDkuOTEgMjA5LjkxIDAgMCAxLTE2IDQ2bDIuNS41YzE4LjItMTkuNyA0MS45LTE2IDQ5LjItMTZsLTYuNCA1LjkgMjIuNCAxNy43LTEuNyAzMC43Yy01LjQtMTIuMy0xNi41LTIxLjEtMzMtMjcuOCAxNi41IDE0LjggMjMuNiAyMS4xIDIxLjkgMjAuMi00LjgtMi44LTMuNS0xLjktMTAuOC0zLjcgNC4xIDQuMSAxNy41IDE4LjggMTguMiAyMC43bC4yLjItLjIuMmMwIDEuOCAxLjYtMS4yLTE0IDIyLjktNzUuMi0xNS4zLTEwNi4yNy00Mi43LTE0MS4yLTYzLjJsMTEuOCAxLjJjLTExLjgtMTguNS0xNS42LTE3LjctMzguNC0yNi4xTDE0OSAyMjVjLTguOC0zLTE4LjItMy0yOC4zLjVsNy42LTEwLjYtMS4yLTEuN2MtMTQuOSA0LjMtMTkuOCA5LjItMjIuNiAxMS4zLTEuMS01LjUtMi44LTEyLjQtMTIuMy0yOC44bC0xLjIgMjctMTMuMi01YzEuNS0yNS4yIDUuNC01MC41IDEzLjItNzQuNnptMjc2LjUgMzMwYy00OS45IDI1LTU2LjEgMjIuNC01OSAyMy45LTI5LjgtMTEuOC01MC45LTMxLjctNjMuNS01OC44bDMwIDE2LjVjLTkuOC05LjMtMTguMy0xNi41LTM4LjQtNDQuM2wxMS44IDIzLjEtMTcuNy03LjZjMTQuMiAyMS4xIDIzLjUgNTEuNyA2Ni42IDczLjUtMTIwLjggMjQuMi0xOTktNzIuMS0yMDAuOS03NC4zYTI2Mi41NyAyNjIuNTcgMCAwIDAgMzUuNCAyNC44YzMuNCAxLjcgNy4xIDIuNSAxMC4xIDEuMmwtMTYtMjAuN2M5LjIgNC4yIDkuNSA0LjUgNjkuMSAyOS00Mi41LTIwLjctNzMuOC00MC44LTkzLjItNjAuMi0uNSA2LjQtMS4yIDEwLjEtMS4yIDEwLjFhODAuMjUgODAuMjUgMCAwIDEgMjAuNyAyNi42Yy0zOS0xOC45LTU3LjYtNDcuNi03MS4zLTgyLjYgNDkuOSA1NS4xIDExOC45IDM3LjUgMTIwLjUgMzcuMSAzNC44IDE2LjQgNjkuOSAyMy42IDExMy45IDEwLjYgMy4zIDAgMjAuMyAxNyAyNS4zIDM5LjFsNC4yLTMtMi41LTIzLjZjOSA5IDI0LjkgMjIuNiAzNC40IDEzLTE1LjYtNS4zLTIzLjUtOS41LTI5LjUtMzEuNyA0LjYgNC4yIDcuNiA5IDI3LjggMTVsMS4yLTEuMi0xMC41LTE0LjJjMTEuNy00LjgtMy41IDEgMzItMTAuOCA0LjMgMzQuMyA5IDQ5LjIuNyA4OS41em0xMTUuMy0yMTQuNGwtMi41LjUgMyA5LjNjLTMuNSA1LjktMjMuNyA0NC4zLTcxLjYgNzkuNy0zOS41IDI5LjgtNzYuNiAzOS4xLTgwLjkgNDAuM2wtNy42LTcuMS0xLjIgMyAxNC4zIDE2LTcuMS00LjcgMy40IDQuMmgtMS4ybC0yMS45LTEzLjUgOS4zIDI2LjYtMTktMjcuOS0xLjIgMi41IDcuNiAyOWMtNi4xLTguMi0yMS0zMi42LTU2LjgtMzkuNmwzMi41IDIxLjJhMjE0LjgyIDIxNC44MiAwIDAgMS05My4yLTYuNGMtNC4yLTEuMi04LjktMi41LTEzLjUtNC4ybDEuMi0zLTQ0LjgtMjIuNCAyNi4xIDIyLjRjLTU3LjcgOS4xLTExMy0yNS40LTEyNi40LTgzLjRsLTIuNS0xNi40LTIyLjI3IDIyLjNjMTkuNS01Ny41IDI1LjYtNTcuOSA1MS40LTcwLjEtOS4xLTUuMy0xLjYtMy4zLTM4LjQtOS4zIDE1LjgtNS44IDMzLTE1LjQgNzMgNS4yYTE4LjUgMTguNSAwIDAgMSAzLjctMS43Yy42LTMuMi40LS44IDEtMTEuOCAzLjkgMTAgMy42IDguNyAzIDkuM2wxLjcuNWMxMi43LTYuNSA4LjktNC41IDE3LTguOWwtNS40IDEzLjUgMjIuMy01LjgtOC40IDguNCAyLjUgMi41YzQuNS0xLjggMzAuMyAzLjQgNDAuOCAxNmwtMjMuNi0yLjVjMzkuNCAyMyA1MS41IDU0IDU1LjggNjkuNmwxLjctMS4yYy0yLjgtMjIuMy0xMi40LTMzLjktMTYtNDAuMSA0LjIgNSAzOS4yIDM0LjYgMTEwLjQgNDYtMTEuMy0uNS0yMy4xIDUuNC0zNC45IDE4LjlsNDYuNy0yMC4yLTkuMyAyMS45YzcuNi0xMC4xIDE0LjgtMjMuNiAyMS4yLTM5LjZ2LS41bDEuMi0zLTEuMiAxNmMxMy41LTQxLjggMjUuMy03OC41IDM1LjQtMTA5LjdsMTMuNS0yNy44di0ybC01LjQtNC4yaDEwLjFsNS45IDQuMiAyLjUtMS4yLTMuNC0xNiAxMi4zIDE4LjkgNDEuOC0yMC4yLTE0LjggMTMgLjUgMi45IDE3LjctLjVhMTg0IDE4NCAwIDAgMSAzMyA0LjJsLTIzLjYgMi41LTEuMiAzIDI2LjYgMjMuMWEyNTQuMjEgMjU0LjIxIDAgMCAxIDI3IDMyYy0xMS4yLTMuMy0xMC4zLTMuNC0yMS4yLTMuNGwxMi4zIDMyLjV6bS02LjEtNzEuM2wtMy45IDEzLTE0LjMtMTEuOHptLTI1NC44IDcuMWMxLjcgMTAuNiA0LjcgMTcuNyA4LjggMjEuOS05LjMgNi42LTI3LjUgMTMuOS00Ni41IDE2bC41IDEuMmE1MC4yMiA1MC4yMiAwIDAgMCAyNC44LTIuNWwtNy4xIDEzYzQuMi0xLjcgMTAuMS03LjEgMTcuNy0xNC44IDExLjktNS41IDEyLjctNS4xIDIwLjItMTYtMTIuNy02LjQtMTUuNy0xMy43LTE4LjQtMTguOHptMy43LTEwMi4zYy02LjQtMy40LTEwLjYgMy0xMi4zIDE4LjlzMi41IDI5LjUgMTEuOCAzOS42IDE4LjIgMTAuNiAyNi4xIDMgMy40LTIzLjYtMTEuMy00Ny43YTM5LjU3IDM5LjU3IDAgMCAwLTE0LjI3LTEzLjh6bS00LjcgNDYuM2M1LjQgMi4yIDEwLjUgMS45IDEyLjMtMTAuNnYtNC43bC0xLjIuNWMtNC4zLTMuMS0yLjUtNC41LTEuNy02LjJsLjUtLjVjLS45LTEuMi01LTguMS0xMi41IDQuNy0uNS0xMy41LjUtMjEuOSAzLTI0LjggMS4yLTIuNSA0LjctMS4yIDExLjMgNC4yIDYuNCA1LjQgMTEuMyAxNiAxNS4yIDMyLjUgNi41IDI4LTE5LjggMjYuMi0yNi45IDQuOXptLTQ1LTUuNWMxLjYuMyA5LjMtMS4xIDkuMy0xNC44aC0uNWMtNS40LTEuMS0yLjItNS41LS43LTUuOS0xLjctMy0zLjQtNC4yLTUuNC00LjctOC4xIDAtMTEuNiAxMi43LTguMSAyMS4yYTcuNTEgNy41MSAwIDAgMCA1LjQzIDQuMnpNMjE2IDgyLjlsLTIuNS41LjUgM2E0OC45NCA0OC45NCAwIDAgMSAyNi4xIDUuOWMtMi41LTUuNS0xMC0xNC4zLTI4LjMtMTQuM2wuNSAyLjV6bS03MS44IDQ5LjRjMjEuNyAxNi44IDE2LjUgMjEuNCA0Ni41IDIzLjZsLTIuOS00LjdhNDIuNjcgNDIuNjcgMCAwIDAgMTQuOC0yOC4zYzEuNy0xNi0xLjItMjkuNS04LjgtNDEuM2wxMy03LjZhMi4yNiAyLjI2IDAgMCAwLS41LTEuNyAxNC4yMSAxNC4yMSAwIDAgMC0xMy41IDEuN2MtMTIuNyA2LjctMjggMjAuOS0yOSAyMi40LTEuNyAxLjctMy40IDUuOS01LjQgMTMuNWE5OS42MSA5OS42MSAwIDAgMC0yLjkgMjMuNmMtNC43LTgtMTAuNS02LjQtMTkuOS01LjlsNy4xIDcuNmMtMTYuNSAwLTIzLjMgMTUuNC0yMy42IDE2IDYuOCAwIDQuNi03LjYgMzAtMTIuMy00LjMtNi4zLTMuMy01LTQuOS02LjZ6bTE4LjctMTguN2MxLjItNy42IDMuNC0xMyA2LjQtMTcuMiA1LjQtNi40IDEwLjYtMTAuMSAxNi0xMS44IDQuMi0xLjcgNy4xIDEuMiAxMC4xIDkuM2E3Mi4xNCA3Mi4xNCAwIDAgMSAzIDI1LjNjLS41IDkuMy0zLjQgMTcuMi04LjQgMjMuMS0yLjkgMy40LTUuNCA1LjktNi40IDcuNmEzOS4yMSAzOS4yMSAwIDAgMS0xMS4zLS41bC03LjEtMy40LTUuNC02LjRjLjgtMTAgMS4zLTE4LjggMy4xLTI2em00MiA1Ni4xYy0zNC44IDE0LjQtMzQuNyAxNC0zNi4xIDE0LjMtMjAuOCA0LjctMTktMjQuNC0xOC45LTI0LjhsNS45LTEuMi0uNS0yLjVjLTIwLjItMi42LTMxIDQuMi0zMi41IDQuOS41LjUgMyAzLjQgNS45IDkuMyA0LjItNi40IDguOC0xMC4xIDE1LjItMTAuNmE4My40NyA4My40NyAwIDAgMCAxLjcgMzMuN2MuMS41IDIuNiAxNy40IDI3LjUgMjQuMSAxMS4zIDMgMjcgMS4yIDQ4LjktNS40bC05LjIuNWMtNC4yLTE0LjgtNi40LTI0LjgtNS45LTI5LjUgMTEuMy04LjggMjEuOS0xMS4zIDMwLjctNy42aDIuNWwtMTEuOC03LjYtNy4xLjVjLTUuOSAxLjItMTIuMyA0LjItMTkuNCA4LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZW1lY28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAyLjkgOC40M2M5LjktNS43MyAyNi01LjgyIDM1Ljk1LS4yMUw0MzAgMTE1Ljg1YzEwIDUuNiAxOCAxOS40NCAxOCAzMC44NlYzNjRjMCAxMS40NC04LjA2IDI1LjI5LTE4IDMxTDIzOC44MSA1MDMuNzRjLTkuOTMgNS42Ni0yNiA1LjU3LTM1Ljg1LS4yMUwxNy44NiAzOTUuMTJDOCAzODkuMzQgMCAzNzUuMzggMCAzNjRWMTQ2LjcxYzAtMTEuNDQgOC0yNS4zNiAxNy45MS0zMS4wOHptLTc3LjQgMTk5LjgzYy0xNS45NCAwLTMxLjg5LjE0LTQ3LjgzLjE0djEwMS40NUg5Ni44VjI4MGgyOC43YzQ5LjcxIDAgNDkuNTYtNzEuNzQgMC03MS43NHptMTQwLjE0IDEwMC4yOWwtMzAuNzMtMzQuNjRjMzctNy41MSAzNC44LTY1LjIzLTEwLjg3LTY1LjUxLTE2LjA5IDAtMzIuMTctLjE0LTQ4LjI2LS4xNHYxMDEuNTloMTkuMTN2LTMzLjkxaDE4LjQxbDI5LjU2IDMzLjkxaDIyLjc2em0tNDEuNTktODIuMzJjMjMuMzQgMCAyMy4yNiAzMi40NiAwIDMyLjQ2aC0yOS4xM3YtMzIuNDZ6bS05NS41Ni0xLjZjMjEuMTggMCAyMS4xMSAzOC44NSAwIDM4Ljg1SDk2LjE4di0zOC44NHptMTkyLjY1LTE4LjI1Yy02OC40NiAwLTcxIDEwNS44IDAgMTA1LjggNjkuNDgtLjAxIDY5LjQxLTEwNS44IDAtMTA1Ljh6bTAgMTcuMzljNDQuMTIgMCA0NC44IDcwLjg2IDAgNzAuODZzLTQ0LjQzLTcwLjg2IDAtNzAuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZW1laXNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggODguMjg2YzAtMTAgNi4yODYtMjEuNzE0IDE3LjcxNS0yMS43MTQgMTEuMTQyIDAgMTcuNzE0IDExLjcxNCAxNy43MTQgMjEuNzE0IDAgMTAuMjg1LTYuNTcyIDIxLjcxNC0xNy43MTQgMjEuNzE0QzIxNC4yODYgMTEwIDIwOCA5OC41NzEgMjA4IDg4LjI4NnptMzA0IDE2MGMwIDM2LjAwMS0xMS40MjkgMTAyLjI4Ni0zNi4yODYgMTI5LjcxNC0yMi44NTggMjQuODU4LTg3LjQyOCA2MS4xNDMtMTIwLjg1NyA3MC41NzJsLTEuMTQzLjI4NnYzMi41NzFjMCAxNi4yODYtMTIuNTcyIDMwLjU3MS0yOS4xNDMgMzAuNTcxLTEwIDAtMTkuNDI5LTUuNzE0LTI0LjU3Mi0xNC4yODYtNS40MjcgOC41NzItMTQuODU2IDE0LjI4Ni0yNC44NTYgMTQuMjg2LTEwIDAtMTkuNDI5LTUuNzE0LTI0Ljg1OC0xNC4yODYtNS4xNDIgOC41NzItMTQuNTcxIDE0LjI4Ni0yNC41NyAxNC4yODYtMTAuMjg2IDAtMTkuNDI5LTUuNzE0LTI0Ljg1OC0xNC4yODYtNS4xNDMgOC41NzItMTQuNTcxIDE0LjI4Ni0yNC41NzEgMTQuMjg2LTE4Ljg1NyAwLTI5LjQyOS0xNS43MTQtMjkuNDI5LTMyLjg1Ny0xNi4yODYgMTIuMjg1LTM1LjcxNSAxOS40MjgtNTYuNTcxIDE5LjQyOC0yMiAwLTQzLjQyOS04LjI4NS02MC4yODYtMjIuODU3IDEwLjI4NS0uMjg2IDIwLjU3MS0yLjI4NiAzMC4yODUtNS43MTQtMjAuODU3LTUuNzE0LTM5LjQyOC0xOC44NTctNTItMzYuMjg2IDIxLjM3IDQuNjQ1IDQ2LjIwOSAxLjY3MyA2Ny4xNDMtMTEuMTQzLTIyLTIyLTU2LjU3MS01OC44NTctNjguNTcyLTg3LjQyOEMxLjE0MyAzMjEuNzE0IDAgMzAzLjcxNCAwIDI4OS40MjljMC00OS43MTQgMjAuMjg2LTE2MCA4Ni4yODYtMTYwIDEwLjU3MSAwIDE4Ljg1NyA0Ljg1OCAyMy4xNDMgMTQuODU3YTE1OC43OTIgMTU4Ljc5MiAwIDAgMSAxMi0xNS40MjhjMi0yLjU3MiA1LjcxNC01LjQyOSA3LjE0My04LjI4NiA3Ljk5OS0xMi41NzEgMTEuNzE0LTIxLjE0MiAyMS43MTQtMzRDMTgyLjU3MSA0NS40MjggMjMyIDE3LjE0MyAyODUuMTQzIDE3LjE0M2M2IDAgMTIgLjI4NSAxNy43MTQgMS4xNDNDMzEzLjcxNCA2LjU3MSAzMjguODU3IDAgMzQ0LjU3MiAwYzE0LjU3MSAwIDI5LjcxNCA2IDQwIDE2LjI4Ni44NTcuODU4IDEuNDI4IDIuMjg2IDEuNDI4IDMuNDI4IDAgMy43MTQtMTAuMjg1IDEzLjQyOS0xMi44NTcgMTYuMjg2IDQuMjg2IDEuNDI5IDE1LjcxNCA2Ljg1OCAxNS43MTQgMTIgMCAyLjg1Ny0yLjg1NyA1LjE0My00LjU3MSA3LjE0MyAzMS40MjkgMjcuNzE0IDQ5LjQyOSA2Ny4xNDMgNTYuMjg2IDEwOCA0LjI4Ni01LjE0MyAxMC4yODUtOC41NzIgMTcuMTQzLTguNTcyIDEwLjU3MSAwIDIwLjg1NyA3LjE0NCAyOC41NzEgMTQuMDAxQzUwNy4xNDMgMTg3LjE0MyA1MTIgMjIxLjcxNCA1MTIgMjQ4LjI4NnpNMTg4IDg5LjQyOGMwIDE4LjI4NiAxMi41NzEgMzcuMTQzIDMyLjI4NiAzNy4xNDMgMTkuNzE0IDAgMzIuMjg1LTE4Ljg1NyAzMi4yODUtMzcuMTQzIDAtMTgtMTIuNTcxLTM2Ljg1Ny0zMi4yODUtMzYuODU3LTE5LjcxNSAwLTMyLjI4NiAxOC44NTgtMzIuMjg2IDM2Ljg1N3pNMjM3LjcxNCAxOTRjMC0xOS43MTQgMy43MTQtMzkuMTQzIDguNTcxLTU4LjI4Ni01Mi4wMzkgNzkuNTM0LTEzLjUzMSAxODQuNTcxIDY4Ljg1OCAxODQuNTcxIDIxLjQyOCAwIDQyLjU3MS03LjcxNCA2MC0yMCAyLTcuNDI5IDMuNzE0LTE0Ljg1NyAzLjcxNC0yMi41NzIgMC0xNC4yODYtNi4yODYtMjEuNDI4LTIwLjU3Mi0yMS40MjgtNC41NzEgMC05LjE0My44NTctMTMuNDI5IDEuNzE0LTYzLjM0MyAxMi42NjgtMTA3LjE0MiAzLjY2OS0xMDcuMTQyLTYzLjk5OXptLTQxLjE0MiAyNTQuODU4YzAtMTEuMTQzLTguODU4LTIwLjg1Ny0yMC4yODYtMjAuODU3LTExLjQyOSAwLTIwIDkuNzE1LTIwIDIwLjg1N3YzMi41NzFjMCAxMS4xNDMgOC41NzEgMjEuMTQyIDIwIDIxLjE0MiAxMS40MjggMCAyMC4yODYtOS43MTUgMjAuMjg2LTIxLjE0MnYtMzIuNTcxem00OS4xNDMgMGMwLTExLjE0My04LjU3Mi0yMC44NTctMjAtMjAuODU3LTExLjQyOSAwLTIwLjI4NiA5LjcxNS0yMC4yODYgMjAuODU3djMyLjU3MWMwIDExLjE0MyA4Ljg1NyAyMS4xNDIgMjAuMjg2IDIxLjE0MiAxMS40MjggMCAyMC0xMCAyMC0yMS4xNDJ2LTMyLjU3MXptNDkuNzEzIDBjMC0xMS4xNDMtOC44NTctMjAuODU3LTIwLjI4NS0yMC44NTctMTEuNDI5IDAtMjAuMjg2IDkuNzE1LTIwLjI4NiAyMC44NTd2MzIuNTcxYzAgMTEuMTQzIDguODU3IDIxLjE0MiAyMC4yODYgMjEuMTQyIDExLjQyOCAwIDIwLjI4NS05LjcxNSAyMC4yODUtMjEuMTQydi0zMi41NzF6bTQ5LjcxNSAwYzAtMTEuMTQzLTguODU3LTIwLjg1Ny0yMC4yODYtMjAuODU3LTExLjQyOCAwLTIwLjI4NiA5LjcxNS0yMC4yODYgMjAuODU3djMyLjU3MWMwIDExLjE0MyA4Ljg1OCAyMS4xNDIgMjAuMjg2IDIxLjE0MiAxMS40MjkgMCAyMC4yODYtMTAgMjAuMjg2LTIxLjE0MnYtMzIuNTcxek00MjEuNzE0IDI4NmMtMzAuODU3IDU5LjE0Mi05MC4yODUgMTAyLjU3Mi0xNTguNTcxIDEwMi41NzItOTYuNTcxIDAtMTYwLjU3MS04NC41NzItMTYwLjU3MS0xNzYuNTcyIDAtMTYuODU3IDItMzMuNDI5IDYtNDkuNzE0LTIwIDMzLjcxNS0yOS43MTQgNzIuNTcyLTI5LjcxNCAxMTEuNDI5IDAgNjAuMjg2IDI0Ljg1NyAxMjEuNzE1IDcxLjQyOSAxNjAuODU3IDUuMTQzLTkuNzE0IDE0Ljg1Ny0xNi4yODYgMjYtMTYuMjg2IDEwIDAgMTkuNDI4IDUuNzE0IDI0LjU3MSAxNC4yODYgNS40MjktOC41NzEgMTQuNTcxLTE0LjI4NiAyNC44NTgtMTQuMjg2IDEwIDAgMTkuNDI4IDUuNzE0IDI0LjU3MSAxNC4yODYgNS40MjktOC41NzEgMTQuODU3LTE0LjI4NiAyNC44NTgtMTQuMjg2IDEwIDAgMTkuNDI4IDUuNzE0IDI0Ljg1NyAxNC4yODYgNS4xNDMtOC41NzEgMTQuNTcxLTE0LjI4NiAyNC41NzItMTQuMjg2IDEwLjg1NyAwIDIwLjg1NyA2LjU3MiAyNS43MTQgMTYgNDMuNDI3LTM2LjI4NiA2OC41NjktOTIgNzEuNDI2LTE0OC4yODZ6bTEwLjU3Mi05OS43MTRjMC01My43MTQtMzQuNTcxLTEwNS43MTQtOTIuNTcyLTEwNS43MTQtMzAuMjg1IDAtNTguNTcxIDE1LjE0My03OC44NTcgMzYuODU3QzI0MC44NjIgMTgzLjgxMiAyMzMuNDEgMjU0IDMwMi4yODYgMjU0YzI4LjgwNSAwIDk3LjM1Ny0yOC41MzggODQuMjg2IDM2Ljg1NyAyOC44NTctMjYgNDUuNzE0LTY1LjcxNCA0NS43MTQtMTA0LjU3MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhpbmtQZWFrcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjUuNCA0MDkuNGw4Ny4xLTE1MC4yLTMyLS4zLTU1LjEgOTVMMjU5LjIgMCAyMyA0MDcuNGwzMiAuM0wyNTkuMiA1NS42em0tMzU1LjMtNDQuMWgzMi4xbDExNy40LTIwMi41TDQ2MyA1MTEuOWwzMi41LjEtMjM1LjgtNDA0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRpa3RvayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDgsMjA5LjkxYTIxMC4wNiwyMTAuMDYsMCwwLDEtMTIyLjc3LTM5LjI1VjM0OS4zOEExNjIuNTUsMTYyLjU1LDAsMSwxLDE4NSwxODguMzFWMjc4LjJhNzQuNjIsNzQuNjIsMCwxLDAsNTIuMjMsNzEuMThWMGw4OCwwYTEyMS4xOCwxMjEuMTgsMCwwLDAsMS44NiwyMi4xN2gwQTEyMi4xOCwxMjIuMTgsMCwwLDAsMzgxLDEwMi4zOWExMjEuNDMsMTIxLjQzLDAsMCwwLDY3LDIwLjE0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFkZUZlZGVyYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDguOGMtMTM3IDAtMjQ4IDExMS0yNDggMjQ4czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDgtMTExLTI0OC0yNDgtMjQ4em0wIDQ4Mi44Yy0xMjkuNyAwLTIzNC44LTEwNS4xLTIzNC44LTIzNC44UzExOC4zIDIyIDI0OCAyMnMyMzQuOCAxMDUuMSAyMzQuOCAyMzQuOFMzNzcuNyA0OTEuNiAyNDggNDkxLjZ6bTE1NS4xLTMyOC41di00Ni44SDIwOS4zVjE5OEg1NC4ybDM2LjcgNDZoMTE3Ljd2MTk2LjhoNDguOFYyNDVoODMuM3YtNDdoLTgzLjN2LTM0LjhoMTQ1Ljd6bS03My4zIDQ1LjF2MjMuOWgtODIuOXYxOTcuNGgtMjYuOFYyMzIuMUg5Ni4zbC0yMC4xLTIzLjloMTQzLjl2LTgwLjZoMTcxLjhWMTUyaC0xNDV2NTYuMnptLTE2MS4zLTY5bC0xMi40LTIwLjcgMi4xIDIzLjgtMjMuNSA1LjQgMjMuMyA1LjQtMi4xIDI0IDEyLjMtMjAuNSAyMi4yIDkuNS0xNS43LTE4LjEgMTUuOC0xOC4xem0tMjkuNi0xOS43bDkuMy0xMS41LTEyLjcgNS45LTgtMTIuNCAxLjcgMTMuOS0xNC4zIDMuOCAxMy43IDIuNy0uOCAxNC43IDYuOC0xMi4yIDEzLjggNS4zem0xNjUuNCAxNDUuMmwtMTMuMSA1LjYtNy4zLTEyLjIgMS4zIDE0LjItMTMuOSAzLjIgMTMuOSAzLjItMS4yIDE0LjIgNy4zLTEyLjIgMTMuMSA1LjUtOS40LTEwLjd6bTEwNi45LTc3LjJsLTIwLjkgOS4xLTEyLTE5LjYgMi4yIDIyLjctMjIuMyA1LjQgMjIuMiA0LjktMS44IDIyLjkgMTEuNS0xOS42IDIxLjIgOC44LTE1LjEtMTd6TTI0OCAyOS45Yy0xMjUuMyAwLTIyNi45IDEwMS42LTIyNi45IDIyNi45UzEyMi43IDQ4My43IDI0OCA0ODMuN3MyMjYuOS0xMDEuNiAyMjYuOS0yMjYuOVMzNzMuMyAyOS45IDI0OCAyOS45ek0zNDIuNiAxOTZ2NTFoLTgzLjN2MTk1LjdoLTUyLjdWMjQ1LjlIODkuOWwtNDAtNDkuOWgxNTcuNHYtODEuNmgxOTcuOHY1MC43SDI1OS40VjE5NnpNMjQ4IDQzLjJjNjAuMyAwIDExNC44IDI1IDE1My42IDY1LjJIMjAyLjVWMTkwSDQ1LjFDNzMuMSAxMDQuOCAxNTMuNCA0My4yIDI0OCA0My4yem0wIDQyNy4xYy0xMTcuOSAwLTIxMy42LTk1LjYtMjEzLjYtMjEzLjUgMC0yMS4yIDMuMS00MS44IDguOS02MS4xTDg3LjEgMjUyaDExNC43djE5Ni44aDY0LjZWMjUzaDgzLjN2LTYyLjdoLTgzLjJ2LTE5LjJoMTQ1LjZ2LTUwLjhjMzAuOCAzNyA0OS4zIDg0LjYgNDkuMyAxMzYuNS4xIDExNy45LTk1LjUgMjEzLjUtMjEzLjQgMjEzLjV6TTE3OC44IDI3NWwtMTEtMjEuNCAxLjcgMjQuNS0yMy43IDMuOSAyMy44IDUuOS0zLjcgMjMuOCAxMy0yMC45IDIxLjUgMTAuOC0xNS44LTE4LjggMTYuOS0xNy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmVsbG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkyLjMgMzJINTYuMUMyNS4xIDMyIDAgNTcuMSAwIDg4Yy0uMSAwIDAtNCAwIDMzNiAwIDMwLjkgMjUuMSA1NiA1NiA1NmgzMzYuMmMzMC44LS4yIDU1LjctMjUuMiA1NS43LTU2Vjg4Yy4xLTMwLjgtMjQuOC01NS44LTU1LjYtNTZ6TTE5NyAzNzEuM2MtLjIgMTQuNy0xMi4xIDI2LjYtMjYuOSAyNi42SDg3LjRjLTE0LjguMS0yNi45LTExLjgtMjctMjYuNlYxMTcuMWMwLTE0LjggMTItMjYuOSAyNi45LTI2LjloODIuOWMxNC44IDAgMjYuOSAxMiAyNi45IDI2Ljl2MjU0LjJ6bTE5My4xLTExMmMwIDE0LjgtMTIgMjYuOS0yNi45IDI2LjloLTgxYy0xNC44IDAtMjYuOS0xMi0yNi45LTI2LjlWMTE3LjJjMC0xNC44IDEyLTI2LjkgMjYuOC0yNi45aDgxLjFjMTQuOCAwIDI2LjkgMTIgMjYuOSAyNi45djE0Mi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmlwYWR2aXNvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjguOTEsMTc4LjgyLDU3NiwxMjcuNThINDcxLjY2YTMyNi4xMSwzMjYuMTEsMCwwLDAtMzY3LDBIMGw0Ny4wOSw1MS4yNEExNDMuOTExLDE0My45MTEsMCwwLDAsMjQxLjg2LDM5MC43M0wyODgsNDQwLjkzbDQ2LjExLTUwLjE3QTE0My45NCwxNDMuOTQsMCwwLDAsNTc1Ljg4LDI4NS4xOGgtLjAzQTE0My41NiwxNDMuNTYsMCwwLDAsNTI4LjkxLDE3OC44MlpNMTQ0LjA2LDM4Mi41N2E5Ny4zOSw5Ny4zOSwwLDEsMSw5Ny4zOS05Ny4zOUE5Ny4zOSw5Ny4zOSwwLDAsMSwxNDQuMDYsMzgyLjU3Wk0yODgsMjgyLjM3YzAtNjQuMDktNDYuNjItMTE5LjA4LTEwOC4wOS0xNDIuNTlhMjgxLDI4MSwwLDAsMSwyMTYuMTcsMEMzMzQuNjEsMTYzLjMsMjg4LDIxOC4yOSwyODgsMjgyLjM3Wm0xNDMuODgsMTAwLjJoLS4wMWE5Ny40MDUsOTcuNDA1LDAsMSwxLC4wMSwwWk0xNDQuMDYsMjM0LjEyaC0uMDFhNTEuMDYsNTEuMDYsMCwxLDAsNTEuMDYsNTEuMDZ2LS4xMUE1MSw1MSwwLDAsMCwxNDQuMDYsMjM0LjEyWm0yODcuODIsMGE1MS4wNiw1MS4wNiwwLDEsMCw1MS4wNiw1MS4wNkE1MS4wNiw1MS4wNiwwLDAsMCw0MzEuODgsMjM0LjEyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUdW1ibHJTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptLTgyLjMgMzY0LjJjLTguNSA5LjEtMzEuMiAxOS44LTYwLjkgMTkuOC03NS41IDAtOTEuOS01NS41LTkxLjktODcuOXYtOTBoLTI5LjdjLTMuNCAwLTYuMi0yLjgtNi4yLTYuMnYtNDIuNWMwLTQuNSAyLjgtOC41IDcuMS0xMCAzOC44LTEzLjcgNTAuOS00Ny41IDUyLjctNzMuMi41LTYuOSA0LjEtMTAuMiAxMC0xMC4yaDQ0LjNjMy40IDAgNi4yIDIuOCA2LjIgNi4ydjcyaDUxLjljMy40IDAgNi4yIDIuOCA2LjIgNi4ydjUxLjFjMCAzLjQtMi44IDYuMi02LjIgNi4yaC01Mi4xVjMyMWMwIDIxLjQgMTQuOCAzMy41IDQyLjUgMjIuNCAzLTEuMiA1LjYtMiA4LTEuNCAyLjIuNSAzLjYgMi4xIDQuNiA0LjlsMTMuOCA0MC4yYzEgMy4yIDIgNi43LS4zIDkuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHVtYmxyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwOS44IDQ4MC4zYy0xMy42IDE0LjUtNTAgMzEuNy05Ny40IDMxLjctMTIwLjggMC0xNDctODguOC0xNDctMTQwLjZ2LTE0NEgxNy45Yy01LjUgMC0xMC00LjUtMTAtMTB2LTY4YzAtNy4yIDQuNS0xMy42IDExLjMtMTYgNjItMjEuOCA4MS41LTc2IDg0LjMtMTE3LjEuOC0xMSA2LjUtMTYuMyAxNi4xLTE2LjNoNzAuOWM1LjUgMCAxMCA0LjUgMTAgMTB2MTE1LjJoODNjNS41IDAgMTAgNC40IDEwIDkuOXY4MS43YzAgNS41LTQuNSAxMC0xMCAxMGgtODMuNFYzNjBjMCAzNC4yIDIzLjcgNTMuNiA2OCAzNS44IDQuOC0xLjkgOS0zLjIgMTIuNy0yLjIgMy41LjkgNS44IDMuNCA3LjQgNy45bDIyIDY0LjNjMS44IDUgMy4zIDEwLjYtLjQgMTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHdpdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5MS4xNywxMDMuNDdIMzUyLjU0djEwOS43aDM4LjYzWk0yODUsMTAzSDI0Ni4zN1YyMTIuNzVIMjg1Wk0xMjAuODMsMCwyNC4zMSw5MS40MlY0MjAuNThIMTQwLjE0VjUxMmw5Ni41My05MS40Mmg3Ny4yNUw0ODcuNjksMjU2VjBaTTQ0OS4wNywyMzcuNzVsLTc3LjIyLDczLjEySDI5NC42MWwtNjcuNiw2NHYtNjRIMTQwLjE0VjM2LjU4SDQ0OS4wN1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHdpdHRlclNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tNDguOSAxNTguOGMuMiAyLjguMiA1LjcuMiA4LjUgMCA4Ni43LTY2IDE4Ni42LTE4Ni42IDE4Ni42LTM3LjIgMC03MS43LTEwLjgtMTAwLjctMjkuNCA1LjMuNiAxMC40LjggMTUuOC44IDMwLjcgMCA1OC45LTEwLjQgODEuNC0yOC0yOC44LS42LTUzLTE5LjUtNjEuMy00NS41IDEwLjEgMS41IDE5LjIgMS41IDI5LjYtMS4yLTMwLTYuMS01Mi41LTMyLjUtNTIuNS02NC40di0uOGM4LjcgNC45IDE4LjkgNy45IDI5LjYgOC4zYTY1LjQ0NyA2NS40NDcgMCAwIDEtMjkuMi01NC42YzAtMTIuMiAzLjItMjMuNCA4LjktMzMuMSAzMi4zIDM5LjggODAuOCA2NS44IDEzNS4yIDY4LjYtOS4zLTQ0LjUgMjQtODAuNiA2NC04MC42IDE4LjkgMCAzNS45IDcuOSA0Ny45IDIwLjcgMTQuOC0yLjggMjktOC4zIDQxLjYtMTUuOC00LjkgMTUuMi0xNS4yIDI4LTI4LjggMzYuMSAxMy4yLTEuNCAyNi01LjEgMzcuOC0xMC4yLTguOSAxMy4xLTIwLjEgMjQuNy0zMi45IDM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUd2l0dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1OS4zNyAxNTEuNzE2Yy4zMjUgNC41NDguMzI1IDkuMDk3LjMyNSAxMy42NDUgMCAxMzguNzItMTA1LjU4MyAyOTguNTU4LTI5OC41NTggMjk4LjU1OC01OS40NTIgMC0xMTQuNjgtMTcuMjE5LTE2MS4xMzctNDcuMTA2IDguNDQ3Ljk3NCAxNi41NjggMS4yOTkgMjUuMzQgMS4yOTkgNDkuMDU1IDAgOTQuMjEzLTE2LjU2OCAxMzAuMjc0LTQ0LjgzMi00Ni4xMzItLjk3NS04NC43OTItMzEuMTg4LTk4LjExMi03Mi43NzIgNi40OTguOTc0IDEyLjk5NSAxLjYyNCAxOS44MTggMS42MjQgOS40MjEgMCAxOC44NDMtMS4zIDI3LjYxNC0zLjU3My00OC4wODEtOS43NDctODQuMTQzLTUxLjk4LTg0LjE0My0xMDIuOTg1di0xLjI5OWMxMy45NjkgNy43OTcgMzAuMjE0IDEyLjY3IDQ3LjQzMSAxMy4zMTktMjguMjY0LTE4Ljg0My00Ni43ODEtNTEuMDA1LTQ2Ljc4MS04Ny4zOTEgMC0xOS40OTIgNS4xOTctMzcuMzYgMTQuMjk0LTUyLjk1NCA1MS42NTUgNjMuNjc1IDEyOS4zIDEwNS4yNTggMjE2LjM2NSAxMDkuODA3LTEuNjI0LTcuNzk3LTIuNTk5LTE1LjkxOC0yLjU5OS0yNC4wNCAwLTU3LjgyOCA0Ni43ODItMTA0LjkzNCAxMDQuOTM0LTEwNC45MzQgMzAuMjEzIDAgNTcuNTAyIDEyLjY3IDc2LjY3IDMzLjEzNyAyMy43MTUtNC41NDggNDYuNDU2LTEzLjMyIDY2LjU5OS0yNS4zNC03Ljc5OCAyNC4zNjYtMjQuMzY2IDQ0LjgzMy00Ni4xMzIgNTcuODI3IDIxLjExNy0yLjI3MyA0MS41ODQtOC4xMjIgNjAuNDI2LTE2LjI0My0xNC4yOTIgMjAuNzkxLTMyLjE2MSAzOS4zMDgtNTIuNjI4IDU0LjI1M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHlwbzMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc4LjcgNzguNGMwLTI0LjcgNS40LTMyLjQgMTMuOS0zOS40LTY5LjUgOC41LTE0OS4zIDM0LTE3Ni4zIDY2LjQtNS40IDcuNy05LjMgMjAuOC05LjMgMzcuMUM3IDI0NiAxMTMuOCA0ODAgMTkxLjEgNDgwYzM2LjMgMCA5Ny4zLTU5LjUgMTQ2LjctMTM5LTcgMi4zLTExLjYgMi4zLTE4LjUgMi4zLTU3LjIgMC0xNDAuNi0xOTguNS0xNDAuNi0yNjQuOXpNMzAxLjUgMzJjLTMwLjEgMC00MS43IDUuNC00MS43IDM2LjMgMCA2Ni40IDUzLjggMTk4LjUgMTAxLjcgMTk4LjUgMjYuMyAwIDc4LjgtOTkuNyA3OC44LTE4Mi4zIDAtNDAuOS02Ny01Mi41LTEzOC44LTUyLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVViZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE0LjEgMzJIMzMuOUMxNS4yIDMyIDAgNDcuMiAwIDY1LjlWNDQ2YzAgMTguOCAxNS4yIDM0IDMzLjkgMzRINDE0YzE4LjcgMCAzMy45LTE1LjIgMzMuOS0zMy45VjY1LjlDNDQ4IDQ3LjIgNDMyLjggMzIgNDE0LjEgMzJ6TTIzNy42IDM5MS4xQzE2MyAzOTguNiA5Ni40IDM0NC4yIDg4LjkgMjY5LjZoOTQuNFYyOTBjMCAzLjcgMyA2LjggNi44IDYuOEgyNThjMy43IDAgNi44LTMgNi44LTYuOHYtNjcuOWMwLTMuNy0zLTYuOC02LjgtNi44aC02Ny45Yy0zLjcgMC02LjggMy02LjggNi44djIwLjRIODguOWM3LTY5LjQgNjUuNC0xMjIuMiAxMzUuMS0xMjIuMiA2OS43IDAgMTI4LjEgNTIuOCAxMzUuMSAxMjIuMiA3LjUgNzQuNS00Ni45IDE0MS4xLTEyMS41IDE0OC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVYnVudHUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptNTIuNyA5M2M4LjgtMTUuMiAyOC4zLTIwLjUgNDMuNS0xMS43IDE1LjMgOC44IDIwLjUgMjguMyAxMS43IDQzLjYtOC44IDE1LjItMjguMyAyMC41LTQzLjUgMTEuNy0xNS4zLTguOS0yMC41LTI4LjQtMTEuNy00My42ek04Ny40IDI4Ny45Yy0xNy42IDAtMzEuOS0xNC4zLTMxLjktMzEuOSAwLTE3LjYgMTQuMy0zMS45IDMxLjktMzEuOSAxNy42IDAgMzEuOSAxNC4zIDMxLjkgMzEuOSAwIDE3LjYtMTQuMyAzMS45LTMxLjkgMzEuOXptMjguMSAzLjFjMjIuMy0xNy45IDIyLjQtNTEuOSAwLTY5LjkgOC42LTMyLjggMjkuMS02MC43IDU2LjUtNzkuMWwyMy43IDM5LjZjLTUxLjUgMzYuMy01MS41IDExMi41IDAgMTQ4LjhMMTcyIDM3MGMtMjcuNC0xOC4zLTQ3LjgtNDYuMy01Ni41LTc5em0yMjguNyAxMzEuN2MtMTUuMyA4LjgtMzQuNyAzLjYtNDMuNS0xMS43LTguOC0xNS4zLTMuNi0zNC44IDExLjctNDMuNiAxNS4yLTguOCAzNC43LTMuNiA0My41IDExLjcgOC44IDE1LjMgMy42IDM0LjgtMTEuNyA0My42em0uMy02OS41Yy0yNi43LTEwLjMtNTYuMSA2LjYtNjAuNSAzNS01LjIgMS40LTQ4LjkgMTQuMy05Ni43LTkuNGwyMi41LTQwLjNjNTcgMjYuNSAxMjMuNC0xMS43IDEyOC45LTc0LjRsNDYuMS43Yy0yLjMgMzQuNS0xNy4zIDY1LjUtNDAuMyA4OC40em0tNS45LTEwNS4zYy01LjQtNjItNzEuMy0xMDEuMi0xMjguOS03NC40bC0yMi41LTQwLjNjNDcuOS0yMy43IDkxLjUtMTAuOCA5Ni43LTkuNCA0LjQgMjguMyAzMy44IDQ1LjMgNjAuNSAzNSAyMy4xIDIyLjkgMzggNTMuOSA0MC4yIDg4LjVsLTQ2IC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVaWtpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDMuOSAxMjh2MjU2TDIxOCA1MTIgMCAzODRWMTY5LjdsODcuNiA0NS4xdjExN2wxMzMuNSA3NS41IDEzNS44LTc1LjV2LTE1MWwtMTAxLjEtNTcuNiA4Ny42LTUzLjFMNDQzLjkgMTI4ek0zMDguNiA0OS4xTDIyMy44IDBsLTg4LjYgNTQuOCA4NiA0Ny4zIDg3LjQtNTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVtYnJhY28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU1LjM1IDhDMTE4LjM2IDcuODMgNy4xNCAxMTguNzIgNyAyNTUuNjhjLS4wNyAxMzcgMTExIDI0OC4yIDI0OCAyNDguMjcgMTM2Ljg1IDAgMjQ3LjgyLTExMC43IDI0OC0yNDcuNjdTMzkyLjM0IDguMTcgMjU1LjM1IDh6bTE0NSAyNjZxLTEuMTQgNDAuNjgtMTQgNjV0LTQzLjUxIDM1cS0zMC42MSAxMC43LTg1LjQ1IDEwLjQ3aC00LjZxLTU0Ljc4LjIyLTg1LjQ0LTEwLjQ3dC00My41Mi0zNXEtMTIuODUtMjQuMzYtMTQtNjVhMjI0LjgxIDIyNC44MSAwIDAgMSAwLTMwLjcxIDQxOC4zNyA0MTguMzcgMCAwIDEgMy42LTQzLjg4YzEuODgtMTMuMzkgMy41Ny0yMi41OCA1LjQtMzIgMS00Ljg4IDEuMjgtNi40MiAxLjgyLTguNDVhNS4wOSA1LjA5IDAgMCAxIDQuOS0zLjg5aC42OWwzMiA1YTUuMDcgNS4wNyAwIDAgMSA0LjE2IDUgNSA1IDAgMCAxIDAgLjc3bC0xLjcgOC43OHEtMi40MSAxMy4yNS00Ljg0IDMzLjY4YTM4MC42MiAzODAuNjIgMCAwIDAtMi42NCA0Mi4xNXEtLjI4IDQwLjQzIDguMTMgNTkuODNhNDMuODcgNDMuODcgMCAwIDAgMzEuMzEgMjUuMThBMjQzIDI0MyAwIDAgMCAyNTAgMzQwLjZoMTAuMjVhMjQyLjY0IDI0Mi42NCAwIDAgMCA1Ny4yNy01LjE2IDQzLjg2IDQzLjg2IDAgMCAwIDMxLjE1LTI1LjIzcTguNTMtMTkuNDIgOC4xMy01OS43OGEzODggMzg4IDAgMCAwLTIuNi00Mi4xNXEtMi40OC0yMC4zOC00Ljg5LTMzLjY4bC0xLjY5LTguNzhhNSA1IDAgMCAxIDAtLjc3IDUgNSAwIDAgMSA0LjItNWwzMi01aC44MmE1IDUgMCAwIDEgNC45IDMuODljLjU1IDIuMDUuODEgMy41NyAxLjgzIDguNDUgMS44MiA5LjYyIDMuNTIgMTguNzggNS4zOSAzMmE0MTUuNzEgNDE1LjcxIDAgMCAxIDMuNjEgNDMuODggMjI4LjA2IDIyOC4wNiAwIDAgMS0uMDQgMzAuNzN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuY2hhcnRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzEuNzMsMjMyLjgxM0E1LjM4MSw1LjM4MSwwLDAsMCwxNzYuNywyMjkuNSw0OC4wODEsNDguMDgxLDAsMCwxLDE5MS42LDIwNC4yNDRjMS4yNDMtLjgyOCwxLjY1Ny0yLjQ4NCwxLjY1Ny00LjE0MWE0LjIyLDQuMjIsMCwwLDAtMi4wNzEtMy4zMTJMNzQuNDI5LDEyOC40NzMsMTQ4Ljk1OCw4NWE5Ljk0MSw5Ljk0MSwwLDAsMCw0Ljk2OC04LjI4MSw5LjEwOCw5LjEwOCwwLDAsMC00Ljk2OC04LjI4MUwxMjYuNiw1NS42YTkuNzQ4LDkuNzQ4LDAsMCwwLTkuNTIzLDBsLTEwMC4yLDU3Ljk2NmE5Ljk0Myw5Ljk0MywwLDAsMC00Ljk2OSw4LjI4MVYyMzYuOTU0YTkuMTA5LDkuMTA5LDAsMCwwLDQuOTY5LDguMjgxTDM5LjIzNSwyNTguMDdhOC44MjksOC44MjksMCwwLDAsNC45NjgsMS4yNDIsOS40LDkuNCwwLDAsMCw2LjYyNS0yLjQ4NCwxMC44LDEwLjgsMCwwLDAsMi45LTcuMDM5VjE2NC41TDE2OS42NiwyMzIuNEE0LjUsNC41LDAsMCwwLDE3MS43MywyMzIuODEzWk0zMjMuMjcyLDM3Ny43M2ExMi40NzgsMTIuNDc4LDAsMCwwLTQuOTY5LDEuMjQybC03NC41MjgsNDMuMDYyVjI4Ny44ODJjMC0yLjktMi45LTUuOC02LjIxMS00LjU1NWE1My4wMzYsNTMuMDM2LDAsMCwxLTI4Ljk4NC40MTQsNC44Niw0Ljg2LDAsMCwwLTYuMjEsNC41NTVWNDIxLjYxOWwtNzQuNTI5LTQzLjA2MWE4LjgzLDguODMsMCwwLDAtNC45NjktMS4yNDIsOS42MzEsOS42MzEsMCwwLDAtOS41MjMsOS41MjN2MjYuMDg1YTkuMTA3LDkuMTA3LDAsMCwwLDQuOTY5LDguMjgxbDEwMC4yLDU3LjU1M0E4LjgyOSw4LjgyOSwwLDAsMCwyMjMuNDg2LDQ4MGExMS4wMjcsMTEuMDI3LDAsMCwwLDQuOTY5LTEuMjQybDEwMC4yLTU3LjU1M2E5Ljk0MSw5Ljk0MSwwLDAsMCw0Ljk2OC04LjI4MVYzODYuODM5QzMzMi44LDM4Mi4yODUsMzI4LjI0LDM3Ny43MywzMjMuMjcyLDM3Ny43M1pNMjg2LjAwNyw3OGEyMywyMywwLDEsMC0yMy0yM0EyMywyMywwLDAsMCwyODYuMDA3LDc4Wm02My42MjctMTAuMDg2YTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDM0OS42MzQsNjcuOTE0Wk00MTIuODE2LDE1MS42YTIzLDIzLDAsMSwwLTIzLTIzQTIzLDIzLDAsMCwwLDQxMi44MTYsMTUxLjZabS02My4xODItOS4yYTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDM0OS42MzQsMTQyLjRabS02My42MjcsODMuMjQ0YTIzLDIzLDAsMSwwLTIzLTIzQTIzLDIzLDAsMCwwLDI4Ni4wMDcsMjI1LjY0OFptLTYyLjA3NCwzNi4zNThhMjMsMjMsMCwxLDAtMjMtMjNBMjMsMjMsMCwwLDAsMjIzLjkzMywyNjIuMDA2Wm0xODguODgzLTgyLjM1OGEyMywyMywwLDEsMCwyMywyM0EyMywyMywwLDAsMCw0MTIuODE2LDE3OS42NDhabTAsNzIuMjcyYTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDQxMi44MTYsMjUxLjkyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmlyZWdpc3RyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNDgwYzM5LjUgMCA3Ni4yLTExLjggMTA2LjgtMzIuMkg4NS4zQzExNS44IDQ2OC4yIDE1Mi41IDQ4MCAxOTIgNDgwem0tODkuMS0xOTMuMXYtMTIuNEgwdjEyLjRjMCAyLjUgMCA1IC4xIDcuNGgxMDMuMWMtLjItMi40LS4zLTQuOS0uMy03LjR6bTIwLjUgNTdIOC41YzIuNiA4LjUgNS44IDE2LjggOS42IDI0LjhoMTM4LjNjLTEyLjktNS43LTI0LjEtMTQuMi0zMy0yNC44em0tMTcuNy0zNC43SDEuM2MuOSA3LjYgMi4yIDE1IDMuOSAyMi4zaDEwOS43Yy00LTYuOS03LjItMTQuNC05LjItMjIuM3ptLTIuOC02OS4zSDB2MTcuM2gxMDIuOXptMC0xNzMuMkgwdjQuOWgxMDIuOXptMC0zNC43SDB2Mi41aDEwMi45em0wIDY5LjNIMHY3LjRoMTAyLjl6bTAgMTA0SDB2MTQuOGgxMDIuOXptMC02OS4zSDB2OS45aDEwMi45em0wIDM0LjZIMFYxODNoMTAyLjl6bTE2Ni4yIDE2MC45aDEwOS43YzEuOC03LjMgMy4xLTE0LjcgMy45LTIyLjNIMjc4LjNjLTIuMSA3LjktNS4yIDE1LjQtOS4yIDIyLjN6bTEyLTE4NS43SDM4NFYxMzZIMjgxLjF6bTAgMzcuMkgzODR2LTEyLjRIMjgxLjF6bTAtNzQuM0gzODR2LTcuNEgyODEuMXptMC03Ni43djIuNUgzODRWMzJ6bS0yMDMgNDEwLjloMjI3LjdjMTEuOC04LjcgMjIuNy0xOC42IDMyLjItMjkuN0g0NC45YzkuNiAxMSAyMS40IDIxIDMzLjIgMjkuN3ptMjAzLTM3MS4zSDM4NHYtNC45SDI4MS4xem0wIDE0OC41SDM4NHYtMTQuOEgyODEuMXpNMzguOCA0MDUuN2gzMDUuM2M2LjctOC41IDEyLjYtMTcuNiAxNy44LTI3LjJIMjNjNS4yIDkuNiA5LjIgMTguNyAxNS44IDI3LjJ6bTE4OC44LTM3LjFIMzY3YzMuNy04IDUuOC0xNi4yIDguNS0yNC44aC0xMTVjLTguOCAxMC43LTIwLjEgMTkuMi0zMi45IDI0Ljh6bTUzLjUtODEuN2MwIDIuNS0uMSA1LS40IDcuNGgxMDMuMWMuMS0yLjUuMi00LjkuMi03LjR2LTEyLjRIMjgxLjF6bTAtMjkuN0gzODR2LTE3LjNIMjgxLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5OC4xMSwyMDYuNCw0NDUuMzEsMTQuNzIsMjQ4LjIsNjYuMDgsMjE5LDExNi4xNGwtNTkuMi0uNDNMMTUuNTQsMjU2LDE1OS44MiwzOTYuMzJsNTkuMTctLjQzLDI5LjI0LDUwLDE5Ny4wOCw1MS4zNiw1Mi44LTE5MS42Mi0zMC00OS42M1pNMjIzLjc3LDEyNC4yLDM3NC41NSw4Ni41MSwyODgsMjMyLjMzSDExNC44N1ptMCwyNjMuNjNMMTE0Ljg3LDI3OS43MUgyODhsODYuNTUsMTQ1LjgxWm0xOTMsMTRMMzMwLjE3LDI1Nmw4Ni41OC0xNDUuODRMNDU4LjU2LDI1NlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5zcGxhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4LDIzMC4xN1Y0ODBIMFYyMzAuMTdIMTQxLjEzVjM1NS4wOUgzMDYuODdWMjMwLjE3Wk0zMDYuODcsMzJIMTQxLjEzVjE1Ni45MUgzMDYuODdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVudGFwcGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAxLjMgNDkuOWMtNzkuOCAxNjAuMS04NC42IDE1Mi41LTg3LjkgMTczLjJsLTUuMiAzMi44Yy0xLjkgMTItNi42IDIzLjUtMTMuNyAzMy40TDE0NS42IDQ5Ny4xYy03LjYgMTAuNi0yMC40IDE2LjItMzMuNCAxNC42LTQwLjMtNS03Ny44LTMyLjItOTUuMy02OC41LTUuNy0xMS44LTQuNS0yNS44IDMuMS0zNi40bDE0OC45LTIwNy45YzcuMS05LjkgMTYuNC0xOCAyNy4yLTIzLjdsMjkuMy0xNS41YzE4LjUtOS44IDkuNy0xMS45IDEzNS42LTEzOC45IDEtNC44IDEtNy4zIDMuNi04IDMtLjcgNi42LTEgNi4zLTQuNmwtLjQtNC42Yy0uMi0xLjkgMS4zLTMuNiAzLjItMy42IDQuNS0uMSAxMy4yIDEuMiAyNS42IDEwIDEyLjMgOC45IDE2LjQgMTYuOCAxNy43IDIxLjEuNiAxLjgtLjYgMy43LTIuNCA0LjJsLTQuNSAxLjFjLTMuNC45LTIuNSA0LjQtMi4zIDcuNC4xIDIuOC0yLjMgMy42LTYuNSA2LjF6TTIzMC4xIDM2LjRjMy40LjkgMi41IDQuNCAyLjMgNy40LS4yIDIuNyAyLjEgMy41IDYuNCA2IDcuOSAxNS45IDE1LjMgMzAuNSAyMi4yIDQ0IC43IDEuMyAyLjMgMS41IDMuMy41IDExLjItMTIgMjQuNi0yNi4yIDQwLjUtNDIuNiAxLjMtMS40IDEuNC0zLjUuMS00LjktOC04LjItMTYuNS0xNi45LTI1LjYtMjYuMS0xLTQuNy0xLTcuMy0zLjYtOC0zLS44LTYuNi0xLTYuMy00LjYuMy0zLjMgMS40LTguMS0yLjgtOC4yLTQuNS0uMS0xMy4yIDEuMS0yNS42IDEwLTEyLjMgOC45LTE2LjQgMTYuOC0xNy43IDIxLjEtMS40IDQuMiAzLjYgNC42IDYuOCA1LjR6TTYyMCA0MDYuN0w0NzEuMiAxOTguOGMtMTMuMi0xOC41LTI2LjYtMjMuNC01Ni40LTM5LjEtMTEuMi01LjktMTQuMi0xMC45LTMwLjUtMjguOS0xLTEuMS0yLjktLjktMy42LjUtNDYuMyA4OC44LTQ3LjEgODIuOC00OSA5NC44LTEuNyAxMC43LTEuMyAyMCAuMyAyOS44IDEuOSAxMiA2LjYgMjMuNSAxMy43IDMzLjRsMTQ4LjkgMjA3LjljNy42IDEwLjYgMjAuMiAxNi4yIDMzLjEgMTQuNyA0MC4zLTQuOSA3OC0zMiA5NS43LTY4LjYgNS40LTExLjkgNC4zLTI1LjktMy40LTM2LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVwcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDMuMiAzMDNjLTUuMiAzLjYtMzIuNiAxMy4xLTMyLjYtMTlWMTgwSDM3Ljl2MTAyLjZjMCA3NC45IDgwLjIgNTEuMSA5Ny45IDM5VjE4MGgtMzIuNnpNNCA3NC44MnYyMjAuOWMwIDEwMy43IDc0LjkgMTM1LjIgMTg3LjcgMTg0LjEgMTEyLjQtNDguOSAxODcuNy04MC4yIDE4Ny43LTE4NC4xVjc0LjgyYy0xMTYuMy02MS42LTI4MS44LTQ5LjYtMzc1LjQgMHptMzU4LjEgMjIwLjljMCA4Ni42LTUzLjIgMTEzLjYtMTcwLjQgMTY1LjMtMTE3LjUtNTEuOC0xNzAuNS03OC43LTE3MC41LTE2NS4zdi0xMjYuNGMxMDIuMy05My44IDIzMS42LTEwMCAzNDAuOS04OS44em0tMjA5LjYtMTA3LjR2MjEyLjhoMzIuN3YtNjguN2MyNC40IDcuMyA3MS43LTIuNiA3MS43LTc4LjUgMC05Ny40LTgwLjctODAuOTItMTA0LjQtNjUuNnptMzIuNyAxMTcuM3YtMTAwLjNjOC40LTQuMiAzOC40LTEyLjcgMzguNCA0OS4zIDAgNjcuOS0zNi40IDUxLjgtMzguNCA1MXptNzkuMS04Ni40Yy4xIDQ3LjMgNTEuNiA0Mi41IDUyLjIgNzAuNC42IDIzLjUtMzAuNCAyMy01MC44IDQuOXYzMC4xYzM2LjIgMjEuNSA4MS45IDguMSA4My4yLTMzLjUgMS43LTUxLjUtNTQuMS00Ni42LTUzLjQtNzMuMi42LTIwLjMgMzAuNi0yMC41IDQ4LjUtMi4ydi0yOC40Yy0yOC41LTIyLTc5LjktOS4yLTc5LjcgMzEuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MS41IDI1NmMwIDMuMS0xLjcgNi4xLTQuNSA3LjVMNTQ3LjkgMzE3Yy0xLjQuOC0yLjggMS40LTQuNSAxLjQtMS40IDAtMy4xLS4zLTQuNS0xLjEtMi44LTEuNy00LjUtNC41LTQuNS03Ljh2LTM1LjZIMjk1LjdjMjUuMyAzOS42IDQwLjUgMTA2LjkgNjkuNiAxMDYuOUgzOTJWMzU0YzAtNSAzLjktOC45IDguOS04LjlINDkwYzUgMCA4LjkgMy45IDguOSA4Ljl2ODkuMWMwIDUtMy45IDguOS04LjkgOC45aC04OS4xYy01IDAtOC45LTMuOS04LjktOC45di0yNi43aC0yNi43Yy03NS40IDAtODEuMS0xNDIuNS0xMjQuNy0xNDIuNUgxNDAuM2MtOC4xIDMwLjYtMzUuOSA1My41LTY5IDUzLjVDMzIgMzI3LjMgMCAyOTUuMyAwIDI1NnMzMi03MS4zIDcxLjMtNzEuM2MzMy4xIDAgNjEgMjIuOCA2OSA1My41IDM5LjEgMCA0My45IDkuNSA3NC42LTYwLjRDMjU1IDg4LjcgMjczIDk1LjcgMzIzLjggOTUuN2M3LjUtMjAuOSAyNy0zNS42IDUwLjQtMzUuNiAyOS41IDAgNTMuNSAyMy45IDUzLjUgNTMuNXMtMjMuOSA1My41LTUzLjUgNTMuNWMtMjMuNCAwLTQyLjktMTQuOC01MC40LTM1LjZIMjk0Yy0yOS4xIDAtNDQuMyA2Ny40LTY5LjYgMTA2LjloMzEwLjF2LTM1LjZjMC0zLjMgMS43LTYuMSA0LjUtNy44IDIuOC0xLjcgNi40LTEuNCA4LjkuM2w4OS4xIDUzLjVjMi44IDEuMSA0LjUgNC4xIDQuNSA3LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDYwLjMgMjQxLjdjMjUuOC00MS4zIDE1LjItNDguOC0xMS43LTQ4LjhoLTI3Yy0uMSAwLTEuNS0xLjQtMTAuOSA4LTExLjIgNS42LTM3LjkgNi4zLTM3LjkgOC43IDAgNC41IDcwLjMtMy4xIDg4LjEgMCA5LjUgMS41LTEuNSAyMC40LTQuNCAzMi0uNSA0LjUgMi40IDIuMyAzLjguMXptLTExMi4xIDIyLjZjNjQtMjEuMyA5Ny4zLTIzLjkgMTAyLTI2LjIgNC40LTIuOS00LjQtNi42LTI2LjItNS44LTUxLjcgMi4yLTEzNy42IDM3LjEtMTcyLjYgNTMuOWwtMzAuNy05My4zaDE5Ni42Yy0yLjctMjguMi0xNTIuOS0yMi42LTMzNy45LTIyLjZMMjcgNDE1LjhjMTk2LjQtOTcuMyAyNTguOS0xMzAuMyAzMjEuMi0xNTEuNXpNOTQuNyA5NmMyNTMuMyA1My43IDMzMCA2NS43IDMzMi4xIDg1LjIgMzYuNCAwIDQ1LjkgMCA1Mi40IDYuNiAyMS4xIDE5LjctMTQuNiA2Ny43LTE0LjYgNjcuNy00LjQgMi45LTQwNi40IDE2MC4yLTQwNi40IDE2MC4yaDQyMy4xTDU0OSA5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNzdW5uYWggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU2LjggMjg1LjFsNS43IDE0LjRoLTguMmMtMS4zLTMuMi0zLjEtNy43LTMuOC05LjUtMi41LTYuMy0xLjEtOC40IDAtMTAgMS45LTIuNyAzLjItNC40IDMuNi01LjIgMCAyLjIuOCA1LjcgMi43IDEwLjN6bTI5Ny4zIDE4LjhjLTIuMSAxMy44LTUuNyAyNy4xLTEwLjUgMzkuN2w0MyAyMy40LTQ0LjgtMTguOGMtNS4zIDEzLjItMTIgMjUuNi0xOS45IDM3LjJsMzQuMiAzMC4yLTM2LjgtMjYuNGMtOC40IDExLjgtMTggMjIuNi0yOC43IDMyLjNsMjQuOSAzNC43LTI4LjEtMzEuOGMtMTEgOS42LTIzLjEgMTgtMzYuMSAyNS4xbDE1LjcgMzcuMi0xOS4zLTM1LjNjLTEzLjEgNi44LTI3IDEyLjEtNDEuNiAxNS45bDYuNyAzOC40LTEwLjUtMzcuNGMtMTQuMyAzLjQtMjkuMiA1LjMtNDQuNSA1LjRMMjU2IDUxMmwtMS45LTM4LjRjLTE1LjMtLjEtMzAuMi0yLTQ0LjUtNS4zTDE5OSA1MDUuNmw2LjctMzguMmMtMTQuNi0zLjctMjguNi05LjEtNDEuNy0xNS44bC0xOS4yIDM1LjEgMTUuNi0zN2MtMTMtNy0yNS4yLTE1LjQtMzYuMi0yNS4xbC0yNy45IDMxLjYgMjQuNy0zNC40Yy0xMC43LTkuNy0yMC40LTIwLjUtMjguOC0zMi4zbC0zNi41IDI2LjIgMzMuOS0yOS45Yy03LjktMTEuNi0xNC42LTI0LjEtMjAtMzcuM2wtNDQuNCAxOC43TDY3LjggMzQ0Yy00LjgtMTIuNy04LjQtMjYuMS0xMC41LTM5LjlsLTUxIDkgNTAuMy0xNC4yYy0xLjEtOC41LTEuNy0xNy4xLTEuNy0yNS45IDAtNC43LjItOS40LjUtMTQuMUwwIDI1Nmw1Ni0yLjhjMS4zLTEzLjEgMy44LTI1LjggNy41LTM4LjFMNi40IDE5OWw1OC45IDEwLjRjNC0xMiA5LjEtMjMuNSAxNS4yLTM0LjRsLTU1LjEtMzAgNTguMyAyNC42QzkwIDE1OSA5Ny4yIDE0OS4yIDEwNS4zIDE0MEw1NS44IDk2LjRsNTMuOSAzOC43YzguMS04LjYgMTctMTYuNSAyNi42LTIzLjZsLTQwLTU1LjYgNDUuNiA1MS42YzkuNS02LjYgMTkuNy0xMi4zIDMwLjMtMTcuMmwtMjcuMy02NC45IDMzLjggNjIuMWMxMC41LTQuNCAyMS40LTcuOSAzMi43LTEwLjRMMTk5IDYuNGwxOS41IDY5LjJjMTEtMi4xIDIyLjMtMy4yIDMzLjgtMy40TDI1NiAwbDMuNiA3Mi4yYzExLjUuMiAyMi44IDEuNCAzMy44IDMuNUwzMTMgNi40bC0xMi40IDcwLjdjMTEuMyAyLjYgMjIuMiA2LjEgMzIuNiAxMC41bDMzLjktNjIuMi0yNy40IDY1LjFjMTAuNiA0LjkgMjAuNyAxMC43IDMwLjIgMTcuMmw0NS44LTUxLjgtNDAuMSA1NS45YzkuNSA3LjEgMTguNCAxNSAyNi41IDIzLjZsNTQuMi0zOC45LTQ5LjcgNDMuOWM4IDkuMSAxNS4yIDE4LjkgMjEuNSAyOS40bDU4LjctMjQuNy01NS41IDMwLjJjNi4xIDEwLjkgMTEuMSAyMi4zIDE1LjEgMzQuM2w1OS4zLTEwLjQtNTcuNSAxNi4yYzMuNyAxMi4yIDYuMiAyNC45IDcuNSAzNy45TDUxMiAyNTZsLTU2IDIuOGMuMyA0LjYuNSA5LjMuNSAxNC4xIDAgOC43LS42IDE3LjMtMS42IDI1LjhsNTAuNyAxNC4zLTUxLjUtOS4xem0tMjEuOC0zMWMwLTk3LjUtNzktMTc2LjUtMTc2LjUtMTc2LjVzLTE3Ni41IDc5LTE3Ni41IDE3Ni41IDc5IDE3Ni41IDE3Ni41IDE3Ni41IDE3Ni41LTc5IDE3Ni41LTE3Ni41em0tMjQgMGMwIDg0LjMtNjguMyAxNTIuNi0xNTIuNiAxNTIuNnMtMTUyLjYtNjguMy0xNTIuNi0xNTIuNiA2OC4zLTE1Mi42IDE1Mi42LTE1Mi42IDE1Mi42IDY4LjMgMTUyLjYgMTUyLjZ6TTE5NSAyNDFjMCAyLjEgMS4zIDMuOCAzLjYgNS4xIDMuMyAxLjkgNi4yIDQuNiA4LjIgOC4yIDIuOC01LjcgNC4zLTkuNSA0LjMtMTEuMiAwLTIuMi0xLjEtNC40LTMuMi03LTIuMS0yLjUtMy4yLTUuMi0zLjMtNy43LTYuNSA2LjgtOS42IDEwLjktOS42IDEyLjZ6bS00MC43LTE5YzAgMi4xIDEuMyAzLjggMy42IDUuMSAzLjUgMS45IDYuMiA0LjYgOC4yIDguMiAyLjgtNS43IDQuMy05LjUgNC4zLTExLjIgMC0yLjItMS4xLTQuNC0zLjItNy0yLjEtMi41LTMuMi01LjItMy4zLTcuNy02LjUgNi44LTkuNiAxMC45LTkuNiAxMi42em0tMTkgMGMwIDIuMSAxLjMgMy44IDMuNiA1LjEgMy4zIDEuOSA2LjIgNC42IDguMiA4LjIgMi44LTUuNyA0LjMtOS41IDQuMy0xMS4yIDAtMi4yLTEuMS00LjQtMy4yLTctMi4xLTIuNS0zLjItNS4yLTMuMy03LjctNi40IDYuOC05LjYgMTAuOS05LjYgMTIuNnptMjA0LjkgODcuOWMtOC40LTMtOC43LTYuOC04LjctMTUuNlYxODJjLTguMiAxMi41LTE0LjIgMTguNi0xOCAxOC42IDYuMyAxNC40IDkuNSAyMy45IDkuNSAyOC4zdjY0LjNjMCAyLjItMi4yIDYuNS00LjcgNi41aC0xOGMtMi44LTcuNS0xMC4yLTI2LjktMTUuMy00MC4zLTIgMi41LTcuMiA5LjItMTAuNyAxMy43IDIuNCAxLjYgNC4xIDMuNiA1LjIgNi4zIDIuNiA2LjcgNi40IDE2LjUgNy45IDIwLjJoLTkuMmMtMy45LTEwLjQtOS42LTI1LjQtMTEuOC0zMS4xLTIgMi41LTcuMiA5LjItMTAuNyAxMy43IDIuNCAxLjYgNC4xIDMuNiA1LjIgNi4zLjggMiAyLjggNy4zIDQuMyAxMC45SDI1NmMtMS41LTQuMS01LjYtMTQuNi04LjQtMjItMiAyLjUtNy4yIDkuMi0xMC43IDEzLjcgMi41IDEuNiA0LjMgMy42IDUuMiA2LjMuMi42LjUgMS40LjYgMS43SDIyNWMtNC42LTEzLjktMTEuNC0yNy43LTExLjQtMzQuMSAwLTIuMi4zLTUuMSAxLjEtOC4yLTguOCAxMC44LTE0IDE1LjktMTQgMjUgMCA3LjUgMTAuNCAyOC4zIDEwLjQgMzMuMyAwIDEuNy0uNSAzLjMtMS40IDQuOS05LjYtMTIuNy0xNS41LTIwLjctMTguOC0yMC43aC0xMmwtMTEuMi0yOGMtMy44LTkuNi01LjctMTYtNS43LTE4LjggMC0zLjguNS03LjcgMS43LTEyLjItMSAxLjMtMy43IDQuNy01LjUgNy4xLS44LTIuMS0zLjEtNy43LTQuNi0xMS41LTIuMSAyLjUtNy41IDkuMS0xMS4yIDEzLjYuOSAyLjMgMy4zIDguMSA0LjkgMTIuMi0yLjUgMy4zLTkuMSAxMS44LTEzLjYgMTcuNy00IDUuMy01LjggMTMuMy0yLjcgMjEuOCAyLjUgNi43IDIgNy45LTEuNyAxNC4xSDE5MWM1LjUgMCAxNC4zIDE0IDE1LjUgMjIgMTMuMi0xNiAxNS40LTE5LjYgMTYuOC0yMS42aDEwN2MzLjkgMCA3LjItMS45IDkuOS01Ljh6bTIwLjEtMjYuNlYxODEuN2MtOSAxMi41LTE1LjkgMTguNi0yMC43IDE4LjYgNy4xIDE0LjQgMTAuNyAyMy45IDEwLjcgMjguM3Y2Ni4zYzAgMTcuNSA4LjYgMjAuNCAyNCAyMC40IDguMSAwIDEyLjUtLjggMTMuNy0yLjctNC4zLTEuNi03LjYtMi41LTkuOS0zLjMtOC4xLTMuMi0xNy44LTcuNC0xNy44LTI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWYWFkaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0LjUgMTQwLjdjMS41LTE3LjYgNC45LTUyLjcgNDkuOC01Mi43aDk4LjZjMjAuNyAwIDMyLjEtNy44IDMyLjEtMjEuNlY1NC4xYzAtMTIuMiA5LjMtMjIuMSAyMS41LTIyLjFTNDQ4IDQxLjkgNDQ4IDU0LjF2MzYuNWMwIDQyLjktMjEuNSA2Mi02Ni44IDYySDI4MC43Yy0zMC4xIDAtMzMgMTQuNy0zMyAyNy4xIDAgMS4zLS4xIDIuNS0uMiAzLjctLjcgMTIuMy0xMC45IDIyLjItMjMuNCAyMi4ycy0yMi43LTkuOC0yMy40LTIyLjJjLS4xLTEuMi0uMi0yLjQtLjItMy43IDAtMTIuMy0zLTI3LjEtMzMtMjcuMUg2Ni44Yy00NS4zIDAtNjYuOC0xOS4xLTY2LjgtNjJWNTQuMUMwIDQxLjkgOS40IDMyIDIxLjYgMzJzMjEuNSA5LjkgMjEuNSAyMi4xdjEyLjNDNDMuMSA4MC4yIDU0LjUgODggNzUuMiA4OGg5OC42YzQ0LjggMCA0OC4zIDM1LjEgNDkuOCA1Mi43aC45ek0yMjQgNDU2YzExLjUgMCAyMS40LTcgMjUuNy0xNi4zIDEuMS0xLjggOTcuMS0xNjkuNiA5OC4yLTE3MS40IDExLjktMTkuNi0zLjItNDQuMy0yNy4yLTQ0LjMtMTMuOSAwLTIzLjMgNi40LTI5LjggMjAuM0wyMjQgMzYybC02Ni45LTExNy43Yy02LjQtMTMuOS0xNS45LTIwLjMtMjkuOC0yMC4zLTI0IDAtMzkuMSAyNC42LTI3LjIgNDQuMyAxLjEgMS45IDk3LjEgMTY5LjYgOTguMiAxNzEuNCA0LjMgOS4zIDE0LjIgMTYuMyAyNS43IDE2LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpYWNvaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMyaC02NGwtODAuNyAxOTJoLTk0LjVMNjQgMzJIMGw0OCAxMTJIMHY0OGg2OC41bDEzLjggMzJIMHY0OGgxMDIuOEwxOTIgNDgwbDg5LjItMjA4SDM4NHYtNDhoLTgyLjNsMTMuOC0zMkgzODR2LTQ4aC00OGw0OC0xMTJ6TTE5MiAzMzZsLTI3LTY0aDU0bC0yNyA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlhZGVvU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTI4MC43IDM4MS4yYy00Mi40IDQ2LjItMTIwIDQ2LjYtMTYyLjQgMC02OC03My42LTE5LjgtMTk2LjEgODEuMi0xOTYuMSAxMy4zIDAgMjYuNiAyLjEgMzkuMSA2LjctNC4zIDguNC03LjMgMTcuNi04LjQgMjcuMS05LjctNC4xLTIwLjItNi0zMC43LTYtNDguOCAwLTg0LjYgNDEuNy04NC42IDg4LjkgMCA0MyAyOC41IDc4LjcgNjkuNSA4NS45IDYxLjUtMjQgNzIuOS0xMTcuNiA3Mi45LTE3NSAwLTcuMyAwLTE0LjgtLjYtMjIuMS0xMS4yLTMyLjktMjYuNi02NC42LTQ0LjItOTQuNSAyNy4xIDE4LjMgNDEuOSA2Mi41IDQ0LjIgOTQuMXYuNGM3LjcgMjIuNSAxMS44IDQ2LjIgMTEuOCA3MCAwIDU0LjEtMjEuOSA5OS02OC4zIDEyOC4ybC0yLjQuMmM1MCAxIDg2LjItMzguNiA4Ni4yLTg3LjIgMC0xMi4yLTIuMS0yNC4zLTYuOS0zNS43IDkuNS0xLjkgMTguNS01LjYgMjYuNC0xMC41IDE1LjMgMzYuNiAxMi42IDg3LjMtMjIuOCAxMjUuNnpNMzA5IDIzMy43Yy0xMy4zIDAtMjUuMS03LjEtMzQuNC0xNi4xIDIxLjktMTIgNDkuNi0zMC43IDYyLjMtNTMgMS41LTMgNC4xLTguNiA0LjUtMTItMTIuNSAyNy45LTQ0LjIgNDkuOC03My45IDU2LjctNC43LTcuMy03LjUtMTUuNS03LjUtMjQuMyAwLTEwLjMgNS4yLTI0LjEgMTIuOS0zMS42IDIxLjYtMjAuNSA1My04LjUgNzIuNC01MCAzMi41IDQ2LjIgMTMuMSAxMzAuMy0zNi4zIDEzMC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWFkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc2LjIgMTUwLjV2LjdDMjU4LjMgOTguNiAyMzMuNiA0Ny44IDIwNS40IDBjNDMuMyAyOS4yIDY3IDEwMCA3MC44IDE1MC41em0zMi43IDEyMS43YzcuNiAxOC4yIDExIDM3LjUgMTEgNTcgMCA3Ny43LTU3LjggMTQxLTEzNy44IDEzOS40bDMuOC0uM2M3NC4yLTQ2LjcgMTA5LjMtMTE4LjYgMTA5LjMtMjA1LjEgMC0zOC4xLTYuNS03NS45LTE4LjktMTEyIDEgMTEuNyAxIDIzLjcgMSAzNS40IDAgOTEuOC0xOC4xIDI0MS42LTExNi42IDI4MEM5NSA0NTUuMiA0OS40IDM5OCA0OS40IDMyOS4yYzAtNzUuNiA1Ny40LTE0Mi4zIDEzNS40LTE0Mi4zIDE2LjggMCAzMy43IDMuMSA0OS4xIDkuNiAxLjctMTUuMSA2LjUtMjkuOSAxMy40LTQzLjMtMTkuOS03LjItNDEuMi0xMC43LTYyLjUtMTAuNy0xNjEuNSAwLTIzOC43IDE5NS45LTEyOS45IDMxMy43IDY3LjkgNzQuNiAxOTIgNzMuOSAyNTkuOCAwIDU2LjYtNjEuMyA2MC45LTE0Mi40IDM2LjQtMjAxLTEyLjcgOC0yNy4xIDEzLjktNDIuMiAxN3pNNDE4LjEgMTEuN2MtMzEgNjYuNS04MS4zIDQ3LjItMTE1LjggODAuMS0xMi40IDEyLTIwLjYgMzQtMjAuNiA1MC41IDAgMTQuMSA0LjUgMjcuMSAxMiAzOC44IDQ3LjQtMTEgOTguMy00NiAxMTguMi05MC43LS43IDUuNS00LjggMTQuNC03LjIgMTkuMi0yMC4zIDM1LjctNjQuNiA2NS42LTk5LjcgODQuOSAxNC44IDE0LjQgMzMuNyAyNS44IDU1IDI1LjggNzkgMCAxMTAuMS0xMzQuNiA1OC4xLTIwOC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWJlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDQgNDkuOUM0MzEuMyAzOC4yIDM3OS45LjkgMjY1LjMuNGMwIDAtMTM1LjEtOC4xLTIwMC45IDUyLjNDMjcuOCA4OS4zIDE0LjkgMTQzIDEzLjUgMjA5LjVjLTEuNCA2Ni41LTMuMSAxOTEuMSAxMTcgMjI0LjloLjFsLS4xIDUxLjZzLS44IDIwLjkgMTMgMjUuMWMxNi42IDUuMiAyNi40LTEwLjcgNDIuMy0yNy44IDguNy05LjQgMjAuNy0yMy4yIDI5LjgtMzMuNyA4Mi4yIDYuOSAxNDUuMy04LjkgMTUyLjUtMTEuMiAxNi42LTUuNCAxMTAuNS0xNy40IDEyNS43LTE0MiAxNS44LTEyOC42LTcuNi0yMDkuOC00OS44LTI0Ni41ek00NTcuOSAyODdjLTEyLjkgMTA0LTg5IDExMC42LTEwMyAxMTUuMS02IDEuOS02MS41IDE1LjctMTMxLjIgMTEuMiAwIDAtNTIgNjIuNy02OC4yIDc5LTUuMyA1LjMtMTEuMSA0LjgtMTEtNS43IDAtNi45LjQtODUuNy40LTg1LjctLjEgMC0uMSAwIDAgMC0xMDEuOC0yOC4yLTk1LjgtMTM0LjMtOTQuNy0xODkuOCAxLjEtNTUuNSAxMS42LTEwMSA0Mi42LTEzMS42IDU1LjctNTAuNSAxNzAuNC00MyAxNzAuNC00MyA5Ni45LjQgMTQzLjMgMjkuNiAxNTQuMSAzOS40IDM1LjcgMzAuNiA1My45IDEwMy44IDQwLjYgMjExLjF6bS0xMzktODAuOGMuNCA4LjYtMTIuNSA5LjItMTIuOS42LTEuMS0yMi0xMS40LTMyLjctMzIuNi0zMy45LTguNi0uNS03LjgtMTMuNC43LTEyLjkgMjcuOSAxLjUgNDMuNCAxNy41IDQ0LjggNDYuMnptMjAuMyAxMS4zYzEtNDIuNC0yNS41LTc1LjYtNzUuOC03OS4zLTguNS0uNi03LjYtMTMuNS45LTEyLjkgNTggNC4yIDg4LjkgNDQuMSA4Ny44IDkyLjUtLjEgOC42LTEzLjEgOC4yLTEyLjktLjN6bTQ3IDEzLjRjLjEgOC42LTEyLjkgOC43LTEyLjkuMS0uNi04MS41LTU0LjktMTI1LjktMTIwLjgtMTI2LjQtOC41LS4xLTguNS0xMi45IDAtMTIuOSA3My43LjUgMTMzIDUxLjQgMTMzLjcgMTM5LjJ6TTM3NC45IDMyOXYuMmMtMTAuOCAxOS0zMSA0MC01MS44IDMzLjNsLS4yLS4zYy0yMS4xLTUuOS03MC44LTMxLjUtMTAyLjItNTYuNS0xNi4yLTEyLjgtMzEtMjcuOS00Mi40LTQyLjQtMTAuMy0xMi45LTIwLjctMjguMi0zMC44LTQ2LjYtMjEuMy0zOC41LTI2LTU1LjctMjYtNTUuNy02LjctMjAuOCAxNC4yLTQxIDMzLjMtNTEuOGguMmM5LjItNC44IDE4LTMuMiAyMy45IDMuOSAwIDAgMTIuNCAxNC44IDE3LjcgMjIuMSA1IDYuOCAxMS43IDE3LjcgMTUuMiAyMy44IDYuMSAxMC45IDIuMyAyMi0zLjcgMjYuNmwtMTIgOS42Yy02LjEgNC45LTUuMyAxNC01LjMgMTRzMTcuOCA2Ny4zIDg0LjMgODQuM2MwIDAgOS4xLjggMTQtNS4zbDkuNi0xMmM0LjYtNiAxNS43LTkuOCAyNi42LTMuNyAxNC43IDguMyAzMy40IDIxLjIgNDUuOCAzMi45IDcgNS43IDguNiAxNC40IDMuOCAyMy42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaW1lb1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMTYuMiAxNDkuNmMtMS40IDMxLjEtMjMuMiA3My44LTY1LjMgMTI3LjktNDMuNSA1Ni41LTgwLjMgODQuOC0xMTAuNCA4NC44LTE4LjcgMC0zNC40LTE3LjItNDcuMy01MS42LTI1LjItOTIuMy0zNS45LTE0Ni40LTU2LjctMTQ2LjQtMi40IDAtMTAuOCA1LTI1LjEgMTUuMUw2NCAxOTJjMzYuOS0zMi40IDcyLjEtNjguNCA5NC4xLTcwLjQgMjQuOS0yLjQgNDAuMiAxNC42IDQ2IDUxLjEgMjAuNSAxMjkuNiAyOS42IDE0OS4yIDY2LjggOTAuNSAxMy40LTIxLjIgMjAuNi0zNy4yIDIxLjUtNDguMyAzLjQtMzIuOC0yNS42LTMwLjYtNDUuMi0yMi4yIDE1LjctNTEuNSA0NS44LTc2LjUgOTAuMS03NS4xIDMyLjkgMSA0OC40IDIyLjQgNDYuNSA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmltZW9WIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ny44IDE1My42Yy0yIDQzLjYtMzIuNCAxMDMuMy05MS40IDE3OS4xLTYwLjkgNzkuMi0xMTIuNCAxMTguOC0xNTQuNiAxMTguOC0yNi4xIDAtNDguMi0yNC4xLTY2LjMtNzIuM0MxMDAuMyAyNTAgODUuMyAxNzQuMyA1Ni4yIDE3NC4zYy0zLjQgMC0xNS4xIDcuMS0zNS4yIDIxLjFMMCAxNjguMmM1MS42LTQ1LjMgMTAwLjktOTUuNyAxMzEuOC05OC41IDM0LjktMy40IDU2LjMgMjAuNSA2NC40IDcxLjUgMjguNyAxODEuNSA0MS40IDIwOC45IDkzLjYgMTI2LjcgMTguNy0yOS42IDI4LjgtNTIuMSAzMC4yLTY3LjYgNC44LTQ1LjktMzUuOC00Mi44LTYzLjMtMzEgMjItNzIuMSA2NC4xLTEwNy4xIDEyNi4yLTEwNS4xIDQ1LjggMS4yIDY3LjUgMzEuMSA2NC45IDg5LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpbWVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMy4yIDMySDQ0LjhDMjAuMSAzMiAwIDUyLjEgMCA3Ni44djM1OC40QzAgNDU5LjkgMjAuMSA0ODAgNDQuOCA0ODBoMzU4LjRjMjQuNyAwIDQ0LjgtMjAuMSA0NC44LTQ0LjhWNzYuOGMwLTI0LjctMjAuMS00NC44LTQ0LjgtNDQuOHpNMzc3IDE4MC44Yy0xLjQgMzEuNS0yMy40IDc0LjctNjYgMTI5LjQtNDQgNTcuMi04MS4zIDg1LjgtMTExLjcgODUuOC0xOC45IDAtMzQuOC0xNy40LTQ3LjktNTIuMy0yNS41LTkzLjMtMzYuNC0xNDgtNTcuNC0xNDgtMi40IDAtMTAuOSA1LjEtMjUuNCAxNS4ybC0xNS4yLTE5LjZjMzcuMy0zMi44IDcyLjktNjkuMiA5NS4yLTcxLjIgMjUuMi0yLjQgNDAuNyAxNC44IDQ2LjUgNTEuNyAyMC43IDEzMS4yIDI5LjkgMTUxIDY3LjYgOTEuNiAxMy41LTIxLjQgMjAuOC0zNy43IDIxLjgtNDguOSAzLjUtMzMuMi0yNS45LTMwLjktNDUuOC0yMi40IDE1LjktNTIuMSA0Ni4zLTc3LjQgOTEuMi03NiAzMy4zLjkgNDkgMjIuNSA0Ny4xIDY0Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDI1NC43djUyLjFjLTE4LjQgNC4yLTM2LjkgNi4xLTUyLjEgNi4xLTM2LjkgNzcuNC0xMDMgMTQzLjgtMTI1LjEgMTU2LjItMTQgNy45LTI3LjEgOC40LTQyLjctLjhDMTM3IDQ1MiAzNC4yIDM2Ny43IDAgMTAyLjdoNzQuNUM5My4yIDI2MS44IDEzOSAzNDMuNCAxODkuMyA0MDQuNWMyNy45LTI3LjkgNTQuOC02NS4xIDc1LjYtMTA2LjktNDkuOC0yNS4zLTgwLjEtODAuOS04MC4xLTE0NS42IDAtNjUuNiAzNy43LTExNS4xIDEwMi4yLTExNS4xIDExNC45IDAgMTA2LjIgMTI3LjkgODEuNiAxODEuNSAwIDAtNDYuNCA5LjItNjMuNS0yMC41IDMuNC0xMS4zIDguMi0zMC44IDguMi00OC41IDAtMzEuMy0xMS4zLTQ2LjYtMjguNC00Ni42LTE4LjIgMC0zMC44IDE3LjEtMzAuOCA1MCAuMSA3OS4yIDU5LjQgMTE4LjcgMTI5LjkgMTAxLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NSAxMTcuN2MzLjctMTIuNSAwLTIxLjctMTcuOC0yMS43aC01OC45Yy0xNSAwLTIxLjkgNy45LTI1LjYgMTYuNyAwIDAtMzAgNzMuMS03Mi40IDEyMC41LTEzLjcgMTMuNy0yMCAxOC4xLTI3LjUgMTguMS0zLjcgMC05LjQtNC40LTkuNC0xNi45VjExNy43YzAtMTUtNC4yLTIxLjctMTYuNi0yMS43aC05Mi42Yy05LjQgMC0xNSA3LTE1IDEzLjUgMCAxNC4yIDIxLjIgMTcuNSAyMy40IDU3LjV2ODYuOGMwIDE5LTMuNCAyMi41LTEwLjkgMjIuNS0yMCAwLTY4LjYtNzMuNC05Ny40LTE1Ny40LTUuOC0xNi4zLTExLjUtMjIuOS0yNi42LTIyLjlIMzguOGMtMTYuOCAwLTIwLjIgNy45LTIwLjIgMTYuNyAwIDE1LjYgMjAgOTMuMSA5My4xIDE5NS41QzE2MC40IDM3OC4xIDIyOSA0MTYgMjkxLjQgNDE2YzM3LjUgMCA0Mi4xLTguNCA0Mi4xLTIyLjkgMC02Ni44LTMuNC03My4xIDE1LjQtNzMuMSA4LjcgMCAyMy43IDQuNCA1OC43IDM4LjEgNDAgNDAgNDYuNiA1Ny45IDY5IDU3LjloNTguOWMxNi44IDAgMjUuMy04LjQgMjAuNC0yNS0xMS4yLTM0LjktODYuOS0xMDYuNy05MC4zLTExMS41LTguNy0xMS4yLTYuMi0xNi4yIDAtMjYuMi4xLS4xIDcyLTEwMS4zIDc5LjQtMTM1LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZudiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDQuOSAzNTJjLTM0LjEgMC00Ni40LTMwLjQtNDYuNC0zMC40TDIuNiAyMTAuMVMtNy44IDE5MiAxMyAxOTJoMzIuOGMxMC40IDAgMTMuMiA4LjcgMTguOCAxOC4xbDM2LjcgNzQuNXM1LjIgMTMuMSAyMS4xIDEzLjEgMjEuMS0xMy4xIDIxLjEtMTMuMWwzNi43LTc0LjVjNS42LTkuNSA4LjQtMTguMSAxOC44LTE4LjFoMzIuOGMyMC44IDAgMTAuNCAxOC4xIDEwLjQgMTguMWwtNTUuOCAxMTEuNVMxNzQuMiAzNTIgMTQwIDM1MmgtMzUuMXptMzk1IDBjLTM0LjEgMC00Ni40LTMwLjQtNDYuNC0zMC40bC01NS45LTExMS41UzM4Ny4yIDE5MiA0MDggMTkyaDMyLjhjMTAuNCAwIDEzLjIgOC43IDE4LjggMTguMWwzNi43IDc0LjVzNS4yIDEzLjEgMjEuMSAxMy4xIDIxLjEtMTMuMSAyMS4xLTEzLjFsMzYuOC03NC41YzUuNi05LjUgOC40LTE4LjEgMTguOC0xOC4xSDYyN2MyMC44IDAgMTAuNCAxOC4xIDEwLjQgMTguMWwtNTUuOSAxMTEuNVM1NjkuMyAzNTIgNTM1LjEgMzUyaC0zNS4yek0zMzcuNiAxOTJjMzQuMSAwIDQ2LjQgMzAuNCA0Ni40IDMwLjRsNTUuOSAxMTEuNXMxMC40IDE4LjEtMTAuNCAxOC4xaC0zMi44Yy0xMC40IDAtMTMuMi04LjctMTguOC0xOC4xbC0zNi43LTc0LjVzLTUuMi0xMy4xLTIxLjEtMTMuMWMtMTUuOSAwLTIxLjEgMTMuMS0yMS4xIDEzLjFsLTM2LjcgNzQuNWMtNS42IDkuNC04LjQgMTguMS0xOC44IDE4LjFoLTMyLjljLTIwLjggMC0xMC40LTE4LjEtMTAuNC0xOC4xbDU1LjktMTExLjVzMTIuMi0zMC40IDQ2LjQtMzAuNGgzNS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWdWVqcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTYuOSA2NC4zSDI4MGwtNTYgODguNi00OC04OC42SDBMMjI0IDQ0OCA0NDggNjQuM2gtOTEuMXptLTMwMS4yIDMyaDUzLjhMMjI0IDI5NC41IDMzOC40IDk2LjNoNTMuOEwyMjQgMzg0LjUgNTUuNyA5Ni4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYXRjaG1hbk1vbml0b3JpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2LDE2QzEyMy40NTIsMTYsMTYsMTIzLjQ1MiwxNiwyNTZTMTIzLjQ1Miw0OTYsMjU2LDQ5Niw0OTYsMzg4LjU0OCw0OTYsMjU2LDM4OC41NDgsMTYsMjU2LDE2Wk0xMjEuNjksNDI5LjEyMkM3MC4wNTYsMzg4Ljk3MiwzNi43NDEsMzI2LjMyMiwzNi43NDEsMjU2YTIxOC41MTksMjE4LjUxOSwwLDAsMSw5LjU4Ny02NC4xMjJsMTAyLjktMTcuODk1LS4xMjEsMTAuOTY3LTEzLjk0MywyLjAxM3MtLjE0NCwxMi41LS4xNDQsMTkuNTQ5YTEyLjc3OCwxMi43NzgsMCwwLDAsNC44ODcsMTAuMzQ5bDkuNDY4LDcuNFptMTA1LjY5Mi0yODMuMjcsOC40OC03LjYxOHM2LjkzNC01LjM4LS4xNDMtOS4zNDRjLTcuMTg4LTQuMDI0LTM5LjUzLTM0LjUtMzkuNTMtMzQuNS01LjM0OC01LjQ3Ny04LjI1Ny03LjM0Ny0xNS40NiwwLDAsMC0zMi4zNDIsMzAuNDc0LTM5LjUyOSwzNC41LTcuMDc4LDMuOTY0LS4xNDQsOS4zNDQtLjE0NCw5LjM0NGw4LjQ4MSw3LjYxOC0uMDQ4LDQuMzY5TDc1Ljk4MiwxMzEuMDQ1YzM5LjY0NC01Ni45MzgsMTA1LjUzMi05NC4zLDE4MC4wMTgtOTQuM0EyMTguNzU0LDIxOC43NTQsMCwwLDEsNDIwLjkzNCwxMTEuNzdsLTE5My41MTIsMzcuN1ptMzQuMDYzLDMyOS4yNjktMzMuOS0yNTAuODU3LDkuNDY3LTcuNGExMi43NzgsMTIuNzc4LDAsMCwwLDQuODg4LTEwLjM0OWMwLTcuMDQ0LS4xNDQtMTkuNTQ5LS4xNDQtMTkuNTQ5bC0xMy45NDMtMi4wMTMtLjExNi0xMC40NzQsMjQxLjcxMSwzMS4zOTFBMjE4Ljg3MiwyMTguODcyLDAsMCwxLDQ3NS4yNTksMjU2QzQ3NS4yNTksMzc1LjA3NCwzNzkuODMxLDQ3Mi4yMTIsMjYxLjQ0NSw0NzUuMTIxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi4xNyAyMDEuNjdDNTE2LjY5IDI4Ny41MyA0NzEuMjMgMzY5LjU5IDM4OSA0MDkuOGMxMyAzNC4xLTEyLjQgNzAuMi00OC4zMiA3MC4yYTUxLjY4IDUxLjY4IDAgMCAxLTUxLjU3LTQ5Yy02LjQ0LjE5LTY0LjIgMC03Ni4zMy0uNjRBNTEuNjkgNTEuNjkgMCAwIDEgMTU5IDQ3OS45MmMtMzMuODYtMS4zNi01Ny45NS0zNC44NC00Ny02Ny45Mi0zNy4yMS0xMy4xMS03Mi41NC0zNC44Ny05OS42Mi03MC44LTEzLTE3LjI4LS40OC00MS44IDIwLjg0LTQxLjggNDYuMzEgMCAzMi4yMi01NC4xNyA0My4xNS0xMTAuMjZDOTQuOCA5NS4yIDE5My4xMiAzMiAyODguMDkgMzJjMTAyLjQ4IDAgMTk3LjE1IDcwLjY3IDIxNC4wOCAxNjkuNjd6TTM3My41MSAzODguMjhjNDItMTkuMTggODEuMzMtNTYuNzEgOTYuMjktMTAyLjE0IDQwLjQ4LTEyMy4wOS02NC4xNS0yMjgtMTgxLjcxLTIyOC04My40NSAwLTE3MC4zMiA1NS40Mi0xODYuMDcgMTM2LTkuNTMgNDguOTEgNSAxMzEuMzUtNjguNzUgMTMxLjM1QzU4LjIxIDM1OC42IDkxLjYgMzc4LjExIDEyNyAzODkuNTRjMjQuNjYtMjEuOCA2My44Ny0xNS40NyA3OS44MyAxNC4zNCAxNC4yMiAxIDc5LjE5IDEuMTggODcuOS44MmE1MS42OSA1MS42OSAwIDAgMSA3OC43OC0xNi40MnpNMjA1LjEyIDE4Ny4xM2MwLTM0Ljc0IDUwLjg0LTM0Ljc1IDUwLjg0IDBzLTUwLjg0IDM0Ljc0LTUwLjg0IDB6bTExNi41NyAwYzAtMzQuNzQgNTAuODYtMzQuNzUgNTAuODYgMHMtNTAuODYgMzQuNzUtNTAuODYgMHptLTEyMi42MSA3MC42OWMtMy40NC0xNi45NCAyMi4xOC0yMi4xOCAyNS42Mi01LjIxbC4wNi4yOGM0LjE0IDIxLjQyIDI5Ljg1IDQ0IDY0LjEyIDQzLjA3IDM1LjY4LS45NCA1OS4yNS0yMi4yMSA2NC4xMS00Mi43NyA0LjQ2LTE2LjA1IDI4LjYtMTAuMzYgMjUuNDcgNi01LjIzIDIyLjE4LTMxLjIxIDYyLTkxLjQ2IDYyLjktNDIuNTUgMC04MC44OC0yNy44NC04Ny45LTY0LjI1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWVibHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI1LjA5IDY1LjgzYy0zOS44OCAwLTczLjI4IDI1LjczLTgzLjY2IDY0LjMzLTE4LjE2LTU4LjA2LTY1LjUtNjQuMzMtODQuOTUtNjQuMzMtMTkuNzggMC02Ni44IDYuMjgtODUuMjggNjQuMzMtMTAuMzgtMzguNi00My40NS02NC4zMy04My42Ni02NC4zM0MzOC41OSA2NS44MyAwIDk5LjcyIDAgMTQzLjAzYzAgMjguOTYgNC4xOCAzMy4yNyA3Ny4xNyAyMzMuNDggMjIuMzcgNjAuNTcgNjcuNzcgNjkuMzUgOTIuNzQgNjkuMzUgMzkuMjMgMCA3MC4wNC0xOS40NiA4NS45My01My45OCAxNS44OSAzNC44MyA0Ni42OSA1NC4yOSA4NS45MyA1NC4yOSAyNC45NyAwIDcwLjM2LTkuMSA5Mi43NC02OS42NyA3Ni41NS0yMDguNjUgNzcuNS0yMDUuNTggNzcuNS0yMjcuMi42My00OC4zMi0zNi4wMS04My40Ny04Ni45Mi04My40N3ptMjYuMzQgMTE0LjgxbC02NS41NyAxNzYuNDRjLTcuOTIgMjEuNDktMjEuMjIgMzcuMjItNDYuMjQgMzcuMjItMjMuNDQgMC0zNy4zOC0xMi40MS00NC4wMy0zMy45bC0zOS4yOC0xMTcuNDJoLS45NUwyMTYuMDggMzYwLjRjLTYuOTYgMjEuNS0yMC45IDMzLjYtNDQuMDIgMzMuNi0yNS4wMiAwLTM4LjMzLTE1Ljc0LTQ2LjI0LTM3LjIyTDYwLjg4IDE4MS41NWMtNS4zOC0xNC44My03LjkyLTIzLjkxLTcuOTItMzQuNSAwLTE2LjM0IDE1Ljg0LTI5LjM2IDM4LjMzLTI5LjM2IDE4LjY5IDAgMzEuOTkgMTEuOCAzNi4xMSAyOS4wNWw0NC4wMyAxMzkuODJoLjk1bDQ0LjY2LTEzNi43OWM2LjAyLTE5LjY3IDE2LjQ3LTMyLjA4IDM4Ljk2LTMyLjA4czMyLjk0IDEyLjExIDM4Ljk2IDMyLjA4bDQ0LjY2IDEzNi43OWguOTVsNDQuMDMtMTM5LjgyYzQuMTItMTcuMjUgMTcuNDItMjkuMDUgMzYuMTEtMjkuMDUgMjIuMTcgMCAzOC4zMyAxMy4zMiAzOC4zMyAzNS43MS0uMzIgNy44Ny00LjEyIDE2LjA0LTcuNjEgMjcuMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdlaWJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNyAxNzcuNmM3LjYtMjQtMTMuNC00Ni44LTM3LjQtNDEuNy0yMiA0LjgtMjguOC0yOC4xLTcuMS0zMi44IDUwLjEtMTAuOSA5Mi4zIDM3LjEgNzYuNSA4NC44LTYuOCAyMS4yLTM4LjggMTAuOC0zMi0xMC4zek0yMTQuOCA0NDYuN0MxMDguNSA0NDYuNyAwIDM5NS4zIDAgMzEwLjRjMC00NC4zIDI4LTk1LjQgNzYuMy0xNDMuN0MxNzYgNjcgMjc5LjUgNjUuOCAyNDkuOSAxNjFjLTQgMTMuMSAxMi4zIDUuNyAxMi4zIDYgNzkuNS0zMy42IDE0MC41LTE2LjggMTE0IDUxLjQtMy43IDkuNCAxLjEgMTAuOSA4LjMgMTMuMSAxMzUuNyA0Mi4zIDM0LjggMjE1LjItMTY5LjcgMjE1LjJ6bTE0My43LTE0Ni4zYy01LjQtNTUuNy03OC41LTk0LTE2My40LTg1LjctODQuOCA4LjYtMTQ4LjggNjAuMy0xNDMuNCAxMTZzNzguNSA5NCAxNjMuNCA4NS43Yzg0LjgtOC42IDE0OC44LTYwLjMgMTQzLjQtMTE2ek0zNDcuOSAzNS4xYy0yNS45IDUuNi0xNi44IDQzLjcgOC4zIDM4LjMgNzIuMy0xNS4yIDEzNC44IDUyLjggMTExLjcgMTI0LTcuNCAyNC4yIDI5LjEgMzcgMzcuNCAxMiAzMS45LTk5LjgtNTUuMS0xOTUuOS0xNTcuNC0xNzQuM3ptLTc4LjUgMzExYy0xNy4xIDM4LjgtNjYuOCA2MC0xMDkuMSA0Ni4zLTQwLjgtMTMuMS01OC01My40LTQwLjMtODkuNyAxNy43LTM1LjQgNjMuMS01NS40IDEwMy40LTQ1LjEgNDIgMTAuOCA2My4xIDUwLjIgNDYgODguNXptLTg2LjMtMzBjLTEyLjktNS40LTMwIC4zLTM4IDEyLjktOC4zIDEyLjktNC4zIDI4IDguNiAzNCAxMy4xIDYgMzAuOC4zIDM5LjEtMTIuOSA4LTEzLjEgMy43LTI4LjMtOS43LTM0em0zMi42LTEzLjRjLTUuMS0xLjctMTEuNC42LTE0LjMgNS40LTIuOSA1LjEtMS40IDEwLjYgMy43IDEyLjkgNS4xIDIgMTEuNy0uMyAxNC42LTUuNCAyLjgtNS4yIDEuMS0xMC45LTQtMTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2VpeGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NS4yIDE2Ny42YzYuNCAwIDEyLjYuMyAxOC44IDEuMUMzODcuNCA5MC4zIDMwMy4zIDMyIDIwNy43IDMyIDEwMC41IDMyIDEzIDEwNC44IDEzIDE5Ny40YzAgNTMuNCAyOS4zIDk3LjUgNzcuOSAxMzEuNmwtMTkuMyA1OC42IDY4LTM0LjFjMjQuNCA0LjggNDMuOCA5LjcgNjguMiA5LjcgNi4yIDAgMTIuMS0uMyAxOC4zLS44LTQtMTIuOS02LjItMjYuNi02LjItNDAuOC0uMS04NC45IDcyLjktMTU0IDE2NS4zLTE1NHptLTEwNC41LTUyLjljMTQuNSAwIDI0LjIgOS43IDI0LjIgMjQuNCAwIDE0LjUtOS43IDI0LjItMjQuMiAyNC4yLTE0LjggMC0yOS4zLTkuNy0yOS4zLTI0LjIuMS0xNC43IDE0LjYtMjQuNCAyOS4zLTI0LjR6bS0xMzYuNCA0OC42Yy0xNC41IDAtMjkuMy05LjctMjkuMy0yNC4yIDAtMTQuOCAxNC44LTI0LjQgMjkuMy0yNC40IDE0LjggMCAyNC40IDkuNyAyNC40IDI0LjQgMCAxNC42LTkuNiAyNC4yLTI0LjQgMjQuMnpNNTYzIDMxOS40YzAtNzcuOS03Ny45LTE0MS4zLTE2NS40LTE0MS4zLTkyLjcgMC0xNjUuNCA2My40LTE2NS40IDE0MS4zUzMwNSA0NjAuNyAzOTcuNiA0NjAuN2MxOS4zIDAgMzguOS01LjEgNTguNi05LjlsNTMuNCAyOS4zLTE0LjgtNDguNkM1MzQgNDAyLjEgNTYzIDM2My4yIDU2MyAzMTkuNHptLTIxOS4xLTI0LjVjLTkuNyAwLTE5LjMtOS43LTE5LjMtMTkuNiAwLTkuNyA5LjctMTkuMyAxOS4zLTE5LjMgMTQuOCAwIDI0LjQgOS43IDI0LjQgMTkuMyAwIDEwLTkuNyAxOS42LTI0LjQgMTkuNnptMTA3LjEgMGMtOS43IDAtMTkuMy05LjctMTkuMy0xOS42IDAtOS43IDkuNy0xOS4zIDE5LjMtMTkuMyAxNC41IDAgMjQuNCA5LjcgMjQuNCAxOS4zLjEgMTAtOS45IDE5LjYtMjQuNCAxOS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaGF0c2FwcFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTIyLjhjLTcyLjcgMC0xMzEuOCA1OS4xLTEzMS45IDEzMS44IDAgMjQuOSA3IDQ5LjIgMjAuMiA3MC4xbDMuMSA1LTEzLjMgNDguNiA0OS45LTEzLjEgNC44IDIuOWMyMC4yIDEyIDQzLjQgMTguNCA2Ny4xIDE4LjRoLjFjNzIuNiAwIDEzMy4zLTU5LjEgMTMzLjMtMTMxLjggMC0zNS4yLTE1LjItNjguMy00MC4xLTkzLjItMjUtMjUtNTgtMzguNy05My4yLTM4Ljd6bTc3LjUgMTg4LjRjLTMuMyA5LjMtMTkuMSAxNy43LTI2LjcgMTguOC0xMi42IDEuOS0yMi40LjktNDcuNS05LjktMzkuNy0xNy4yLTY1LjctNTcuMi02Ny43LTU5LjgtMi0yLjYtMTYuMi0yMS41LTE2LjItNDFzMTAuMi0yOS4xIDEzLjktMzMuMWMzLjYtNCA3LjktNSAxMC42LTUgMi42IDAgNS4zIDAgNy42LjEgMi40LjEgNS43LS45IDguOSA2LjggMy4zIDcuOSAxMS4yIDI3LjQgMTIuMiAyOS40czEuNyA0LjMuMyA2LjljLTcuNiAxNS4yLTE1LjcgMTQuNi0xMS42IDIxLjYgMTUuMyAyNi4zIDMwLjYgMzUuNCA1My45IDQ3LjEgNCAyIDYuMyAxLjcgOC42LTEgMi4zLTIuNiA5LjktMTEuNiAxMi41LTE1LjUgMi42LTQgNS4zLTMuMyA4LjktMiAzLjYgMS4zIDIzLjEgMTAuOSAyNy4xIDEyLjlzNi42IDMgNy42IDQuNmMuOSAxLjkuOSA5LjktMi40IDE5LjF6TTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTIyMy45IDQxMy4yYy0yNi42IDAtNTIuNy02LjctNzUuOC0xOS4zTDY0IDQxNmwyMi41LTgyLjJjLTEzLjktMjQtMjEuMi01MS4zLTIxLjItNzkuM0M2NS40IDE2Ny4xIDEzNi41IDk2IDIyMy45IDk2YzQyLjQgMCA4Mi4yIDE2LjUgMTEyLjIgNDYuNSAyOS45IDMwIDQ3LjkgNjkuOCA0Ny45IDExMi4yIDAgODcuNC03Mi43IDE1OC41LTE2MC4xIDE1OC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaGF0c2FwcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODAuOSA5Ny4xQzMzOSA1NS4xIDI4My4yIDMyIDIyMy45IDMyYy0xMjIuNCAwLTIyMiA5OS42LTIyMiAyMjIgMCAzOS4xIDEwLjIgNzcuMyAyOS42IDExMUwwIDQ4MGwxMTcuNy0zMC45YzMyLjQgMTcuNyA2OC45IDI3IDEwNi4xIDI3aC4xYzEyMi4zIDAgMjI0LjEtOTkuNiAyMjQuMS0yMjIgMC01OS4zLTI1LjItMTE1LTY3LjEtMTU3em0tMTU3IDM0MS42Yy0zMy4yIDAtNjUuNy04LjktOTQtMjUuN2wtNi43LTQtNjkuOCAxOC4zTDcyIDM1OS4ybC00LjQtN2MtMTguNS0yOS40LTI4LjItNjMuMy0yOC4yLTk4LjIgMC0xMDEuNyA4Mi44LTE4NC41IDE4NC42LTE4NC41IDQ5LjMgMCA5NS42IDE5LjIgMTMwLjQgNTQuMSAzNC44IDM0LjkgNTYuMiA4MS4yIDU2LjEgMTMwLjUgMCAxMDEuOC04NC45IDE4NC42LTE4Ni42IDE4NC42em0xMDEuMi0xMzguMmMtNS41LTIuOC0zMi44LTE2LjItMzcuOS0xOC01LjEtMS45LTguOC0yLjgtMTIuNSAyLjgtMy43IDUuNi0xNC4zIDE4LTE3LjYgMjEuOC0zLjIgMy43LTYuNSA0LjItMTIgMS40LTMyLjYtMTYuMy01NC0yOS4xLTc1LjUtNjYtNS43LTkuOCA1LjctOS4xIDE2LjMtMzAuMyAxLjgtMy43LjktNi45LS41LTkuNy0xLjQtMi44LTEyLjUtMzAuMS0xNy4xLTQxLjItNC41LTEwLjgtOS4xLTkuMy0xMi41LTkuNS0zLjItLjItNi45LS4yLTEwLjYtLjItMy43IDAtOS43IDEuNC0xNC44IDYuOS01LjEgNS42LTE5LjQgMTktMTkuNCA0Ni4zIDAgMjcuMyAxOS45IDUzLjcgMjIuNiA1Ny40IDIuOCAzLjcgMzkuMSA1OS43IDk0LjggODMuOCAzNS4yIDE1LjIgNDkgMTYuNSA2Ni42IDEzLjkgMTAuNy0xLjYgMzIuOC0xMy40IDM3LjQtMjYuNCA0LjYtMTMgNC42LTI0LjEgMy4yLTI2LjQtMS4zLTIuNS01LTMuOS0xMC41LTYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2htY3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDE2MXYtMjEuM2wtMjguNS04LjgtMi4yLTEwLjQgMjAuMS0yMC43TDQyNyA4MC40bC0yOSA3LjUtNy4yLTcuNSA3LjUtMjguMi0xOS4xLTExLjYtMjEuMyAyMS0xMC43LTMuMi03LTI2LjRoLTIyLjZsLTYuMiAyNi40LTEyLjEgMy4yLTE5LjctMjEtMTkuNCAxMSA4LjEgMjcuNy04LjEgOC40LTI4LjUtNy41LTExIDE5LjEgMjAuNyAyMS0yLjkgMTAuNC0yOC41IDcuOC0uMyAyMS43IDI4LjggNy41IDIuNCAxMi4xLTIwLjEgMTkuOSAxMC40IDE4LjUgMjkuNi03LjUgNy4yIDguNi04LjEgMjYuOSAxOS45IDExLjYgMTkuNC0yMC40IDExLjYgMi45IDYuNyAyOC41IDIyLjYuMyA2LjctMjguOCAxMS42LTMuNSAyMC43IDIxLjYgMjAuNC0xMi4xLTguOC0yOCA3LjgtOC4xIDI4LjggOC44IDEwLjMtMjAuMS0yMC45LTE4LjggMi4yLTEyLjEgMjkuMS03em0tMTE5LjIgNDUuMmMtMzEuMyAwLTU2LjgtMjUuNC01Ni44LTU2LjhzMjUuNC01Ni44IDU2LjgtNTYuOCA1Ni44IDI1LjQgNTYuOCA1Ni44YzAgMzEuNS0yNS40IDU2LjgtNTYuOCA1Ni44em03Mi4zIDE2LjRsNDYuOSAxNC41VjI3N2wtNTUuMSAxMy40LTQuMSAyMi43IDM4LjkgMzUuMy0xOS4yIDM3LjktNTQtMTYuNy0xNC42IDE1LjIgMTYuNyA1Mi41LTM4LjMgMjIuNy0zOC45LTQwLjUtMjEuNyA2LjYtMTIuNiA1NC00Mi40LS41LTEyLjYtNTMuNi0yMS43LTUuNi0zNi40IDM4LjQtMzcuNC0yMS43IDE1LjItNTAuNS0xMy43LTE2LjEtNTUuNSAxNC4xLTE5LjctMzQuOCAzNy45LTM3LjQtNC44LTIyLjgtNTQtMTQuMS41LTQwLjlMNTQgMjE5LjlsNS43LTE5LjctMzguOS0zOS40TDQxLjUgMTI1bDUzLjYgMTQuMSAxNS4yLTE1LjctMTUuMi01MiAzNi40LTIwLjcgMzYuOCAzOS40TDE5MSA4NGwxMS42LTUySDI0NWwxMS42IDQ1LjlMMjM0IDcybC02LjMtMS43LTMuMyA1LjctMTEgMTkuMS0zLjMgNS42IDQuNiA0LjYgMTcuMiAxNy40LS4zIDEtMjMuOCA2LjUtNi4yIDEuNy0uMSA2LjQtLjIgMTIuOUMxNTMuOCAxNjEuNiAxMTggMjA0IDExOCAyNTQuN2MwIDU4LjMgNDcuMyAxMDUuNyAxMDUuNyAxMDUuNyA1MC41IDAgOTIuNy0zNS40IDEwMy4yLTgyLjhsMTMuMi4yIDYuOS4xIDEuNi02LjcgNS42LTI0IDEuOS0uNiAxNy4xIDE3LjggNC43IDQuOSA1LjgtMy40IDIwLjQtMTIuMSA1LjgtMy41LTItNi41LTYuOC0yMS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaWtpcGVkaWFXIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCA1MS4ybC0uMyAxMi4yYy0yOC4xLjgtNDUgMTUuOC01NS44IDQwLjMtMjUgNTcuOC0xMDMuMyAyNDAtMTU1LjMgMzU4LjZINDE1bC04MS45LTE5My4xYy0zMi41IDYzLjYtNjguMyAxMzAtOTkuMiAxOTMuMS0uMy4zLTE1IDAtMTUtLjNDMTcyIDM1Mi4zIDEyMi44IDI0My40IDc1LjggMTMzLjQgNjQuNCAxMDYuNyAyNi40IDYzLjQuMiA2My43YzAtMy4xLS4zLTEwLS4zLTE0LjJoMTYxLjl2MTMuOWMtMTkuMiAxLjEtNTIuOCAxMy4zLTQzLjMgMzQuMiAyMS45IDQ5LjcgMTAzLjYgMjQwLjMgMTI1LjYgMjg4LjYgMTUtMjkuNyA1Ny44LTEwOS4yIDc1LjMtMTQyLjgtMTMuOS0yOC4zLTU4LjYtMTMzLjktNzIuOC0xNjAtOS43LTE3LjgtMzYuMS0xOS40LTU1LjgtMTkuN1Y0OS44bDE0Mi41LjN2MTMuMWMtMTkuNC42LTM4LjEgNy44LTI5LjQgMjYuMSAxOC45IDQwIDMwLjYgNjguMSA0OC4xIDEwNC43IDUuNi0xMC44IDM0LjctNjkuNCA0OC4xLTEwMC44IDguOS0yMC42LTMuOS0yOC42LTM4LjYtMjkuNC4zLTMuNiAwLTEwLjMuMy0xMy42IDQ0LjQtLjMgMTExLjEtLjMgMTIzLjEtLjZ2MTMuNmMtMjIuNS44LTQ1LjggMTIuOC01OC4xIDMxLjdsLTU5LjIgMTIyLjhjNi40IDE2LjEgNjMuMyAxNDIuOCA2OS4yIDE1Ni43TDU1OS4yIDkxLjhjLTguNi0yMy4xLTM2LjQtMjguMS00Ny4yLTI4LjNWNDkuNmwxMjcuOCAxLjEuMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kb3dzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTMuN2wxODMuNi0yNS4zdjE3Ny40SDBWOTMuN3ptMCAzMjQuNmwxODMuNiAyNS4zVjI2OC40SDB2MTQ5Ljl6bTIwMy44IDI4TDQ0OCA0ODBWMjY4LjRIMjAzLjh2MTc3Ljl6bTAtMzgwLjZ2MTgwLjFINDQ4VjMyTDIwMy44IDY1Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpeCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTMuMzggMTMxLjY5YzAgMTMuMDMgMi4wOCAzMi42OS0yOC42OCA0My44My05LjUyIDMuNDUtMTUuOTUgOS42Ni0xNS45NSA5LjY2IDAtMzEgNC43Mi00Mi4yMiAxNy40LTQ4Ljg2IDkuNzUtNS4xMSAyNy4yMy00LjYzIDI3LjIzLTQuNjN6bS0xMTUuOCAzNS41NGwtMzQuMjQgMTMyLjY2LTI4LjQ4LTEwOC41N2MtNy42OS0zMS45OS0yMC44MS00OC41My00OC40My00OC41My0yNy4zNyAwLTQwLjY2IDE2LjE4LTQ4LjQzIDQ4LjUzTDg5LjUyIDI5OS44OSA1NS4yOCAxNjcuMjNDNDkuNzMgMTQwLjUxIDIzLjg2IDEyOC45NiAwIDEzMS45Nmw2NS41NyAyNDcuOTNzMjEuNjMgMS41NiAzMi40Ni0zLjk2YzE0LjIyLTcuMjUgMjAuOTgtMTIuODQgMjkuNTktNDYuNTcgNy42Ny0zMC4wNyAyOS4xMS0xMTguNDEgMzEuMTItMTI0LjcgNC43Ni0xNC45NCAxMS4wOS0xMy44MSAxNS40IDAgMS45NyA2LjMgMjMuNDUgOTQuNjMgMzEuMTIgMTI0LjcgOC42IDMzLjczIDE1LjM3IDM5LjMyIDI5LjU5IDQ2LjU3IDEwLjgyIDUuNTIgMzIuNDYgMy45NiAzMi40NiAzLjk2bDY1LjU3LTI0Ny45M2MtMjQuNDItMy4wNy00OS44MiA4LjkzLTU1LjMgMzUuMjd6bTExNS43OCA1LjIxcy00LjEgNi4zNC0xMy40NiAxMS41N2MtNi4wMSAzLjM2LTExLjc4IDUuNjQtMTcuOTcgOC42MS0xNS4xNCA3LjI2LTEzLjE4IDEzLjk1LTEzLjE4IDM1LjJ2MTUyLjA3czE2LjU1IDIuMDkgMjcuMzctMy40M2MxMy45My03LjEgMTcuMTMtMTMuOTUgMTcuMjYtNDQuNzhWMTgxLjQxbC0uMDIuMDF2LTguOTh6bTE2My40NCA4NC4wOEw2NDAgMTMyLjc4cy0zNS4xMS01Ljk4LTUyLjUgOS44NWMtMTMuMyAxMi4xLTI0LjQxIDI5LjU1LTU0LjE4IDcyLjQ3LS40Ny43My02LjI1IDEwLjU0LTEzLjA3IDAtMjkuMjktNDIuMjMtNDAuOC02MC4yOS01NC4xOC03Mi40Ny0xNy4zOS0xNS44My01Mi41LTkuODUtNTIuNS05Ljg1bDgzLjIgMTIzLjc0LTgyLjk3IDEyMy4zNnMzNi41NyA0LjYyIDUzLjk1LTExLjIxYzExLjQ5LTEwLjQ2IDE3LjU4LTIwLjM3IDUyLjUxLTcwLjcyIDYuODEtMTAuNTIgMTIuNTctLjc3IDEzLjA3IDAgMjkuNCA0Mi4zOCAzOS4yMyA1OC4wNiA1My4xNCA3MC43MiAxNy4zOSAxNS44MyA1My4zMiAxMS4yMSA1My4zMiAxMS4yMUw1NTYuOCAyNTYuNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpemFyZHNPZlRoZUNvYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxOS4xOSAzNDUuNjljLTEuOSAxLjM4LTExLjA3IDguNDQtLjI2IDIzLjU3IDQuNjQgNi40MiAxNC4xMSAxMi43OSAyMS43MyA2LjU1IDYuNS00Ljg4IDcuMzUtMTIuOTIuMjYtMjMuMDQtNS40Ny03Ljc2LTE0LjI4LTEyLjg4LTIxLjczLTcuMDh6bTMzNi43NSA3NS45NGMtLjM0IDEuNy0uNTUgMS42Ny43OSAwIDIuMDktNC4xOSA0LjE5LTEwLjIxIDQuOTgtMTkuOSAzLjE0LTM4LjQ5LTQwLjMzLTcxLjQ5LTEwMS4zNC03OC4wMy01NC43My02LjAyLTEyNC4zOCA5LjE3LTE4OC44IDYwLjQ5bC0uMjYgMS41N2MyLjYyIDQuOTggNC45OCAxMC43NCAzLjQgMjEuMjFsLjc5LjI2YzYzLjg5LTU4LjQgMTMxLjE5LTc3LjI1IDE4NC4zNS03My44NSA1OC40IDMuNjcgMTAwLjAzIDM0LjA0IDEwMC4wMyA2OC4wOC0uMDEgOS45Ni0yLjYzIDE1LjcyLTMuOTQgMjAuMTd6TTM5Mi4yOCAyNDAuNDJjLjc5IDcuMDcgNC4xOSAxMC4yMSA5LjE3IDEwLjQ3IDUuNS4yNiA5LjQzLTIuNjIgMTAuNDctNi41NS43OS0zLjQgMi4wOS0yOS44NSAyLjA5LTI5Ljg1cy0xMS4yNiA2LjU1LTE0LjkzIDEwLjQ3Yy0zLjY2IDMuNjgtNy4zMyA4LjM5LTYuOCAxNS40NnptLTUwLjAyLTE1MS4xQzEzNy43NSA4OS4zMiAxMy4xIDIyNi44Ljc5IDI0MS4yYy0xLjA1LjUyLTEuMzEuNzkuNzkgMS4zMSA2MC40OSAxNi41IDE1NS44MSA4MS4xOCAxOTYuMTMgMjAyLjE2bDEuMDUuMjZjNTUuMjUtNjkuOTIgMTQwLjg4LTEyOC4wNSAyMzYuOTktMTI4LjA1IDgwLjkyIDAgMTMwLjE1IDQyLjE2IDEzMC4xNSA4MC4zOSAwIDE4LjMzLTYuNTUgMzMuNTItMjIuMjYgNDYuMzUgMCAuOTYtLjIuNzkuNzkuNzkgMTQuNjYtMTAuNzQgMjcuNS0yOC44IDI3LjUtNDguMTggMC0yMi43OC0xMi4wNS0zOC4yMy0xMi4wNS0zOC4yMyA3LjA3IDcuMDcgMTAuNzQgMTYuMjQgMTAuNzQgMTYuMjQgNS43Ni00MC44NSAyNi45Ny02Mi4zMiAyNi45Ny02Mi4zMi0yLjM2LTkuNjktNi44MS0xNy44MS02LjgxLTE3LjgxIDcuNTkgOC4xMiAxNC40IDI3LjUgMTQuNCA0MS4zNyAwIDEwLjQ3LTMuNCAyMi43OC0xMi41NyAzMS45NWwuMjYuNTJjOC4xMi00Ljk4IDE2LjUtMTYuNzYgMTYuNS0zNy45NyAwLTE1LjcxLTQuNzEtMjUuOTItNC43MS0yNS45MiA1Ljc2LTUuMjQgMTEuMjYtOS4xNyAxNS45Ny0xMS43OC43OSAzLjQgMi4wOSA5LjY5IDIuMzYgMTQuOTMgMCAxLjA1Ljc5IDEuODMgMS4wNSAwIC43OS01Ljc2LS4yNi0xNi4yNC0uMjYtMTYuNSA2LjAyLTMuMTQgOS42OS00LjQ1IDkuNjktNC40NUM2MTcuNzQgMTc2IDQ4OS40MyA4OS4zMiAzNDIuMjYgODkuMzJ6bS05OS4yNCAyODkuNjJjLTExLjA2IDguOTktMjQuMiA0LjA4LTMwLjY0LTQuMTktNy40NS05LjU4LTYuNzYtMjQuMDkgNC4xOS0zMi40NyAxNC44NS0xMS4zNSAyNy4wOC0uNDkgMzEuMTYgNS41LjI4LjM5IDEyLjEzIDE2LjU3LTQuNzEgMzEuMTZ6bTIuMDktMTM2LjQzbDkuNDMtMTcuODEgMTEuNzggNzAuOTYtMTIuNTcgNi4wMi0yNC42Mi0yOC44IDE0LjE0LTI2LjcxIDMuNjcgNC40NS0xLjgzLTguMTF6bTE4LjU5IDExNy41OGwtLjI2LS4yNmMyLjA1LTQuMS0yLjUtNi42MS0xNy41NC0zMS42OS0xLjMxLTIuMzYtMy4xNC0yLjg4LTQuNDUtMi42MmwtLjI2LS41MmM3Ljg2LTUuNzYgMTUuNDUtMTAuMjEgMjUuNC0xNS43MWwuNTIuMjZjMS4zMSAxLjgzIDIuMDkgMi44OCAzLjQgNC43MWwtLjI2LjUyYy0xLjA1LS4yNi0yLjM2LS43OS01LjI0LjI2LTIuMDkuNzktNy44NiAzLjY3LTEyLjMxIDcuNTl2MS4zMWMxLjU3IDIuMzYgMy45MyA2LjU1IDUuNzYgOS42OWguMjZjMTAuMDUtNi4yOCA3LjU2LTQuNTUgMTEuNTItNy44NmguMjZjLjUyIDEuODMuNTIgMS44MyAxLjgzIDUuNWwtLjI2LjI2Yy0zLjA2LjYxLTQuNjUuMzQtMTEuNTIgNS41di4yNmM5LjQ2IDE3LjAyIDExLjAxIDE2Ljc1IDEyLjU3IDE1Ljk3bC4yNi4yNmMtMi4zNCAxLjU5LTYuMjcgNC4yMS05LjY4IDYuNTd6bTU1LjI2LTMyLjQ3Yy0zLjE0IDEuNTctNi4wMiAyLjg4LTkuOTUgNC45OGwtLjI2LS4yNmMxLjI5LTIuNTkgMS4xNi0yLjcxLTExLjc4LTMyLjQ3bC0uMjYtLjI2Yy0uMTUgMC04LjkgMy42NS05Ljk1IDcuMzNoLS41MmwtMS4wNS01Ljc2LjI2LS41MmM3LjI5LTQuNTYgMjUuNTMtMTEuNjQgMjcuNzYtMTIuNTdsLjUyLjI2IDMuMTQgNC45OC0uMjYuNTJjLTMuNTMtMS43Ni03LjM1Ljc2LTEyLjMxIDIuNjJ2LjI2YzEyLjMxIDMyLjAxIDEyLjY3IDMwLjY0IDE0LjY2IDMwLjY0di4yNXptNDQuNzctMTYuNWMtNC4xOSAxLjA1LTUuMjQgMS4zMS05LjY5IDIuODhsLS4yNi0uMjYuNTItNC40NWMtMS4wNS0zLjQtMy4xNC0xMS41Mi0zLjY3LTEzLjYybC0uMjYtLjI2Yy0zLjQuNzktOC45IDIuNjItMTIuODMgMy45M2wtLjI2LjI2Yy43OSAyLjYyIDMuMTQgOS45NSA0LjE5IDEzLjg4Ljc5IDIuMzYgMS44MyAyLjg4IDIuODggMy4xNHYuNTJjLTMuNjcgMS4wNS03LjA3IDIuNjItMTAuMjEgMy45M2wtLjI2LS4yNmMxLjA1LTEuMzEgMS4wNS0yLjg4LjI2LTQuOTgtMS4wNS0zLjE0LTguMTItMjMuODMtOS4xNy0yNy4yMy0uNTItMS44My0xLjU3LTMuMTQtMi42Mi0zLjE0di0uNTJjMy4xNC0xLjA1IDYuMDItMi4wOSAxMC43NC0zLjRsLjI2LjI2LS4yNiA0LjcxYzEuMzEgMy45MyAyLjM2IDcuNTkgMy4xNCA5LjY5aC4yNmMzLjkzLTEuMzEgOS40My0yLjg4IDEyLjgzLTMuOTNsLjI2LS4yNi0yLjYyLTkuNDNjLS41Mi0xLjgzLTEuMDUtMy40LTIuNjItMy45M3YtLjI2YzQuNDUtMS4wNSA3LjMzLTEuODMgMTAuNzQtMi4zNmwuMjYuMjZjLTEuMDUgMS4zMS0xLjA1IDIuODgtLjUyIDQuNDUgMS41NyA2LjI4IDQuNzEgMjAuNDMgNi4yOCAyNi40NS41NCAyLjYyIDEuODUgMy40MSAyLjYzIDMuOTN6bTMyLjIxLTYuODFsLS4yNi4yNmMtNC43MS41Mi0xNC4xNCAyLjM2LTIyLjUyIDQuMTlsLS4yNi0uMjYuNzktNC4xOWMtMS41Ny03Ljg2LTMuNC0xOC41OS00Ljk4LTI2LjE5LS4yNi0xLjgzLS43OS0yLjg4LTIuNjItMy42N2wuNzktLjUyYzkuMTctMS41NyAyMC4xNi0yLjM2IDI0Ljg4LTIuNjJsLjI2LjI2Yy41MiAyLjM2Ljc5IDMuMTQgMS41NyA1LjVsLS4yNi4yNmMtMS4xNC0xLjE0LTMuMzQtMy4yLTE2LjI0LS43OWwtLjI2LjI2Yy4yNiAxLjU3IDEuMDUgNi41NSAxLjU3IDkuOTVsLjI2LjI2YzkuNTItMS42OCA0Ljc2LS4wNiAxMC43NC0yLjM2aC4yNmMwIDEuNTctLjI2IDEuODMtLjI2IDUuMjRoLS4yNmMtNC44MS0xLjAzLTIuMTUtLjktMTAuMjEgMGwtLjI2LjI2Yy4yNiAyLjA5IDEuNTcgOS40MyAyLjA5IDEyLjU3bC4yNi4yNmMxLjE1LjM4IDE0LjIxLS42NSAxNi4yNC00LjcxaC4yNmMtLjUzIDIuMzgtMS4wNSA0LjIxLTEuNTggNi4wNHptMTAuNzQtNDQuNTFjLTQuNDUgMi4zNi04LjEyIDIuODgtMTEgMi44OC0uMjUuMDItMTEuNDEgMS4wOS0xNy41NC05Ljk1LTYuNzQtMTAuNzktLjk4LTI1LjIgNS41LTMxLjY5IDguOC04LjEyIDIzLjM1LTEwLjEgMjguNTQtMTcuMDIgOC4wMy0xMC4zMy0xMy4wNC0yMi4zMS0yOS41OS01Ljc2bC0yLjYyLTIuODggNS4yNC0xNi4yNGMyNS41OS0xLjU3IDQ1LjItMy4wNCA1MC4wMiAxNi4yNC43OSAzLjE0IDAgOS40My0uMjYgMTIuMDUgMCAyLjYyLTEuODMgMTguODUtMi4wOSAyMy4wNC0uNTIgNC4xOS0uNzkgMTguMzMtLjc5IDIwLjY5LjI2IDIuMzYuNTIgNC4xOSAxLjU3IDUuNSAxLjU3IDEuODMgNS43NiAxLjgzIDUuNzYgMS44M2wtLjc5IDQuNzFjLTExLjgyLTEuMDctMTAuMjgtLjU5LTIwLjQzLTEuMDUtMy4yMi01LjE1LTIuMjMtMy4yOC00LjE5LTcuODYgMCAuMDEtNC4xOSAzLjk0LTcuMzMgNS41MXptMzcuMTggMjEuMjFjLTYuMzUtMTAuNTgtMTkuODItNy4xNi0yMS43MyA1LjUtMi42MyAxNy4wOCAxNC4zIDE5Ljc5IDIwLjY5IDEwLjIxbC4yNi4yNmMtLjUyIDEuODMtMS44MyA2LjAyLTEuODMgNi4yOGwtLjUyLjUyYy0xMC4zIDYuODctMjguNS0yLjUtMjUuNjYtMTguNTkgMS45NC0xMC44NyAxNC40NC0xOC45MyAyOC44LTkuOTVsLjI2LjUyYzAgMS4wNi0uMjcgMy40MS0uMjcgNS4yNXptNS43Ny04Ny43M3YtNi41NWMuNjkgMCAxOS42NSAzLjI4IDI3Ljc2IDcuMzNsLTEuNTcgMTcuNTRzMTAuMjEtOS40MyAxNS40NS0xMC43NGM1LjI0LTEuNTcgMTQuOTMgNy4zMyAxNC45MyA3LjMzbC0xMS4yNiAxMS4yNmMtMTIuMDctNi4zNS0xOS41OS0uMDgtMjAuNjkuNzktNS4yOSAzOC43Mi04LjYgNDIuMTcgNC40NSA0Ni4wOWwtLjUyIDQuNzFjLTE3LjU1LTQuMjktMTguNTMtNC41LTM2LjkyLTcuMzNsLjc5LTQuNzFjNy4yNSAwIDcuNDgtNS4zMiA3LjU5LTYuODEgMCAwIDQuOTgtNTMuMTYgNC45OC01NS4yNS0uMDItMi44Ny00Ljk5LTMuNjYtNC45OS0zLjY2em0xMC45OSAxMTQuNDRjLTguMTItMi4wOS0xNC4xNC0xMS0xMC43NC0yMC42OSAzLjE0LTkuNDMgMTIuMzEtMTIuMzEgMTguODUtMTAuMjEgOS4xNyAyLjYyIDEyLjgzIDExLjc4IDEwLjc0IDE5LjM4LTIuNjEgOC45LTkuNDIgMTMuODctMTguODUgMTEuNTJ6bTQyLjE2IDkuNjljLTIuMzYtLjUyLTcuMDctMi4zNi04LjY0LTIuODh2LS4yNmwxLjU3LTEuODNjLjU5LTguMjQuNTktNy4yNy4yNi03LjU5LTQuODItMS44MS02LjY2LTIuMzYtNy4wNy0yLjM2LTEuMzEgMS44My0yLjg4IDQuNDUtMy42NyA1LjVsLS43OSAzLjR2LjI2Yy0xLjMxLS4yNi0zLjkzLTEuMzEtNi4wMi0xLjU3di0uMjZsMi42Mi0xLjgzYzMuNC00LjcxIDkuOTUtMTQuMTQgMTMuODgtMjAuMTZ2LTIuMDlsLjUyLS4yNmMyLjA5Ljc5IDUuNSAyLjA5IDcuNTkgMi44OC40OC40OC4xOC0xLjg3LTEuMDUgMjUuMTQtLjI0IDEuODEuMDIgMi42LjggMy45MXptLTQuNzEtODkuODJjMTEuMjUtMTguMjcgMzAuNzYtMTYuMTkgMzQuMDQtMy40TDUzOS43IDE5OGMyLjM0LTYuMjUtMi44Mi05LjktNC40NS0xMS4yNmwxLjgzLTMuNjdjMTIuMjIgMTAuMzcgMTYuMzggMTMuOTcgMjIuNTIgMjAuNDMtMjUuOTEgNzMuMDctMzAuNzYgODAuODEtMjQuNjIgODQuMzJsLTEuODMgNC40NWMtNi4zNy0zLjM1LTguOS00LjQyLTE3LjgxLTguNjRsMi4wOS02LjgxYy0uMjYtLjI2LTMuOTMgMy45My05LjY5IDMuNjctMTkuMDYtMS4zLTIyLjg5LTMxLjc1LTkuNjctNTIuOXptMjkuMzMgNzkuMzRjMC01LjcxLTYuMzQtNy44OS03Ljg2LTUuMjQtMS4zMSAyLjA5IDEuMDUgNC45OCAyLjg4IDguMzggMS41NyAyLjYyIDIuNjIgNi4yOCAxLjA1IDkuNDMtMi42NCA2LjM0LTEyLjQgNS4zMS0xNS40NS0uNzkgMC0uNy0uMjcuMDkgMS44My00LjcxbC43OS0uMjZjLS41NyA1LjY2IDYuMDYgOS42MSA4LjM4IDQuOTggMS4wNS0yLjA5LS41Mi01LjUtMi4wOS04LjM4LTEuNTctMi42Mi0zLjY3LTYuMjgtMS44My05LjY5IDIuNzItNS4wNiAxMS4yNS00LjQ3IDE0LjY2IDIuMzZ2LjUybC0yLjM2IDMuNHptMjEuMjEgMTMuMzZjLTEuOTYtMy4yNy0uOTEtMi4xNC00LjQ1LTQuNzFoLS4yNmMtMi4zNiA0LjE5LTUuNzYgMTAuNDctOC42NCAxNi4yNC0xLjMxIDIuMzYtMS4wNSAzLjQtLjc5IDMuOTNsLS4yNi4yNi01Ljc2LTQuNDUuMjYtLjI2IDIuMDktMS4zMWMzLjE0LTUuNzYgNi41NS0xMi4wNSA5LjE3LTE3LjAydi0uMjZjLTIuNjQtMS45OC0xLjIyLTEuNTEtNi4wMi0xLjgzdi0uMjZsMy4xNC0zLjRoLjI2YzMuNjcgMi4zNiA5Ljk1IDYuODEgMTIuMzEgOC45bC4yNi4yNi0xLjMxIDMuOTF6bTI3LjIzLTQ0LjI2bC0yLjg4LTIuODhjLjc5LTIuMzYgMS44My00Ljk4IDIuMDktNy41OS43NS05Ljc0LTExLjUyLTExLjg0LTExLjUyLTQuOTggMCA0Ljk4IDcuODYgMTkuMzggNy44NiAyNy43NiAwIDEwLjIxLTUuNzYgMTUuNzEtMTMuODggMTYuNS04LjM4Ljc5LTIwLjE2LTEwLjQ3LTIwLjE2LTEwLjQ3bDQuOTgtMTQuNCAyLjg4IDIuMDljLTIuOTcgMTcuOCAxNy42OCAyMC4zNyAxMy4zNSA1LjI0LTEuMDYtNC4wMi0xOC43NS0zNC4yIDIuMDktMzguMjMgMTMuNjItMi4zNiAyMy4wNCAxNi41IDIzLjA0IDE2LjVsLTcuODUgMTAuNDZ6bTM1LjYyLTEwLjIxYy0xMS0zMC4zOC02MC40OS0xMjcuNTMtMTkxLjk1LTEyOS42Mi01My40Mi0xLjA1LTk0LjI3IDE1LjQ1LTEzMi43NiAzNy45N2w4NS42My05LjE3LTkxLjM5IDIwLjY5IDI1LjE0IDE5LjY0LTMuOTMtMTYuNWM3LjUtMS43MSAzOS4xNS04LjQ1IDY2Ljc3LTguOWwtMjIuMjYgODAuMzljMTMuNjEtLjcgMTguOTctOC45OCAxOS42NC0yMi43OGw0Ljk4LTEuMDUuMjYgMjYuNzFjLTIyLjQ2IDMuMjEtMzcuMyA2LjY5LTQ5LjQ5IDkuOTVsMTMuMDktNDMuMjEtNjEuNTQtMzYuNjYgMi4zNiA4LjEyIDEwLjIxIDQuOThjNi4yOCAxOC41OSAxOS4zOCA1Ni41NiAyMC40MyA1OC42NiAxLjk1IDQuMjggMy4xNiA1Ljc4IDEyLjA1IDQuNDVsMS4wNSA0Ljk4Yy0xNi4wOCA0Ljg2LTIzLjY2IDcuNjEtMzkuMDIgMTQuNGwtMi4zNi00LjcxYzQuNC0yLjk0IDguNzMtMy45NCA1LjUtMTIuODMtMjMuNy02Mi41LTIxLjQ4LTU4LjE0LTIyLjc4LTU5LjQ0bDIuMzYtNC40NSAzMy41MiA2Ny4zYy0zLjg0LTExLjg3IDEuNjggMS42OS0zMi45OS03OC44MmwtNDEuOSA4OC41MSA0LjcxLTEzLjg4LTM1Ljg4LTQyLjE2IDI3Ljc2IDkzLjQ4LTExLjc4IDguMzhDOTUgMjI4LjU4IDEwMS4wNSAyMzEuODcgOTMuMjMgMjMxLjUyYy01LjUtLjI2LTEzLjYyIDUuNS0xMy42MiA1LjVMNzQuNjMgMjMxYzMwLjU2LTIzLjUzIDMxLjYyLTI0LjMzIDU4LjQtNDIuNjhsNC4xOSA3LjA3cy01Ljc2IDQuMTktNy44NiA3LjA3Yy01LjkgOS4yOCAxLjY3IDEzLjI4IDYxLjggNzUuNjhsLTE4Ljg1LTU4LjkyIDM5LjgtMTAuMjEgMjUuNjYgMzAuNjQgNC40NS0xMi4zMS00Ljk4LTI0LjYyIDEzLjA5LTMuNC41MiAzLjE0IDMuNjctMTAuNDctOTQuMjcgMjkuMzMgMTEuMjYtNC45OC0xMy42Mi00Mi40MiAxNy4yOC05LjE3IDMwLjExIDM2LjE0IDI4LjU0LTEzLjA5Yy0xLjQxLTcuNDctMi40Ny0xNC41LTQuNzEtMTkuNjRsMTcuMjggMTMuODggNC43MS0yLjA5LTU5LjE4LTQyLjY4IDIzLjA4IDExLjVjMTguOTgtNi4wNyAyNS4yMy03LjQ3IDMyLjIxLTkuNjlsMi42MiAxMWMtMTIuNTUgMTIuNTUgMS40MyAxNi44MiA2LjU1IDE5LjM4bC0xMy42Mi02MS4wMSAxMi4wNSAyOC4yOGM0LjE5LTEuMzEgNy4zMy0yLjA5IDcuMzMtMi4wOWwyLjYyIDguNjRzLTMuMTQgMS4wNS02LjI4IDIuMDlsOC45IDIwLjk1IDMzLjc4LTY1LjczLTIwLjY5IDYxLjAxYzQyLjQyLTI0LjA5IDgxLjQ0LTM2LjY2IDEzMS45OC0zNS44OCA2Ny4wNCAxLjA1IDE2Ny4zMyA0MC44NSAxOTkuOCAxMzkuODMuNzggMi4xLS4wMSAyLjYzLS43OS4yN3pNMjAzLjQ4IDE1Mi40M3MxLjgzLS41MiA0LjE5LTEuMzFsOS40MyA3LjU5Yy0uNCAwLTMuNDQtLjI1LTExLjI2IDIuMzZsLTIuMzYtOC42NHptMTQzLjc2IDM4LjVjLTEuNTctLjYtMjYuNDYtNC44MS0zMy4yNiAyMC42OWwyMS43MyAxNy4wMiAxMS41My0zNy43MXpNMzE4LjQzIDY3LjA3Yy01OC40IDAtMTA2LjA1IDEyLjA1LTExNC45NiAxNC40di43OWM4LjM4IDIuMDkgMTQuNCA0LjE5IDIxLjIxIDExLjc4bDEuNTcuMjZjNi41NS0xLjgzIDQ4Ljk3LTEzLjg4IDExMC4yNC0xMy44OCAxODAuMTYgMCAzMDEuNjcgMTE2Ljc5IDMwMS42NyAyMjMuMzd2OS45NWMwIDEuMzEuNzkgMi42MiAxLjA1LjUyLjUyLTIuMDkuNzktOC42NC43OS0xOS42NC4yNi04My43OS05Ni42My0yMjcuNTUtMzIxLjU3LTIyNy41NXptMjExLjA2IDE2OS42OGMxLjMxLTUuNzYgMC0xMi4zMS03LjMzLTEzLjA5LTkuNjItMS4xMy0xNi4xNCAyMy43OS0xNy4wMiAzMy41Mi0uNzkgNS41LTEuMzEgMTQuOTMgNi4wMiAxNC45MyA0LjY4LS4wMSA5LjcyLS45MSAxOC4zMy0zNS4zNnptLTYxLjUzIDQyLjk1Yy0yLjYyLS43OS05LjQzLS43OS0xMi41NyAxMC40Ny0xLjgzIDYuODEuNTIgMTMuMzUgNi4wMiAxNC42NiAzLjY3IDEuMDUgOC45LjUyIDExLjc4LTEwLjc0IDIuNjItOS45NC0xLjgzLTEzLjYxLTUuMjMtMTQuMzl6TTQ5MSAzMDAuNjVjMS44My41MiAzLjE0IDEuMDUgNS43NiAxLjgzIDAtMS44My41Mi04LjM4Ljc5LTEyLjA1LTEuMDUgMS4zMS01LjUgOC4xMi02LjU1IDkuOTV2LjI3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXb2R1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3OC40MTQgMzM5LjcwNkgxNDEuMUwxMTIuMTY2IDIyMy40NzVoLS40NzhMODMuMjI4IDMzOS43MDZINDUuMkwwIDE2OC45NDZIMzcuNTQ4TDY0LjU3NCAyODUuMTc3aC40NzhMOTQuNzA3IDE2OC45NDZoMzUuMTU3bDI5LjE3OCAxMTcuNjY3aC40NzlMMTg3LjUgMTY4Ljk0NmgzNi44MzF6TTI3MS40IDIxMi43MTNjMzguOTg0IDAgNjQuMSAyNS44MjggNjQuMSA2NS4yOTEgMCAzOS4yMjItMjUuMTExIDY1LjA1LTY0LjEgNjUuMDUtMzguNzQzIDAtNjMuODU1LTI1LjgyOC02My44NTUtNjUuMDVDMjA3LjU0NyAyMzguNTQxIDIzMi42NTkgMjEyLjcxMyAyNzEuNCAyMTIuNzEzem0wIDEwNC43NTNjMjMuMiAwIDMwLjEzMy0xOS44NTIgMzAuMTMzLTM5LjQ2MiAwLTE5Ljg1Mi02LjkzNC0zOS43LTMwLjEzMy0zOS43LTI3LjcgMC0yOS44OTQgMTkuODUtMjkuODk0IDM5LjdDMjQxLjUwOCAyOTcuNjE0IDI0OC40NDMgMzE3LjQ2NiAyNzEuNCAzMTcuNDY2ek00MzUuMDg0IDMyMy45MjJoLS40NzhjLTcuODkzIDEzLjM5Mi0yMS43NjUgMTkuMTMyLTM3LjU0OCAxOS4xMzItMzcuMzEgMC01NS40ODUtMzIuMDQ1LTU1LjQ4NS02Ni4yNDYgMC0zMy4yNDMgMTguNDE1LTY0LjA5NSA1NC43NjctNjQuMDk1IDE0LjU4OSAwIDI4LjkzOCA2LjIxOCAzNi44MzEgMTguNDE2aC4yNFYxNjguOTQ2aDMzLjk2djE3MC43Nkg0MzUuMDg0ek00MDUuNDI4IDIzOC4zYy0yMi4yNCAwLTI5Ljg5NCAxOS4xMzQtMjkuODk0IDM5LjQ2MyAwIDE5LjM3MSA4Ljg0OCAzOS43IDI5Ljg5NCAzOS43IDIyLjQ4MiAwIDI5LjE3OC0xOS42MTMgMjkuMTc4LTM5Ljk0QzQzNC42MDYgMjU3LjQzNiA0MjcuNDMyIDIzOC4zIDQwNS40MjggMjM4LjN6TTU5Mi45NiAzMzkuNzA2SDU2MC42NzNWMzIyLjQ4N2gtLjcxOGMtOC42MDkgMTMuODctMjMuNDM2IDIwLjU2Ny0zNy43ODYgMjAuNTY3LTM2LjExMyAwLTQ1LjItMjAuMzI4LTQ1LjItNTAuOTQxVjIxNi4wNjFoMzMuOTU5VjI4NS45YzAgMjAuMzI5IDUuOTc5IDMwLjM3MiAyMS43NjUgMzAuMzcyIDE4LjQxNSAwIDI2LjMwNi0xMC4yODMgMjYuMzA2LTM1LjM5M1YyMTYuMDYxSDU5Mi45NnpNNjAyLjQ1MyAzMDIuODc2SDY0MHYzNi44M0g2MDIuNDUzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXb2xmUGFja0JhdHRhbGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjcuNzMgNDcxLjUzbDEwLjU2IDE1Ljg0IDUuMjgtMTIuMzIgNS4yOCA3VjUxMmMyMS4wNi03LjkyIDIxLjExLTY2Ljg2IDI1LjUxLTk3LjIxIDQuNjItMzEuODktLjg4LTkyLjgxIDgxLjM3LTE0OS4xMS04Ljg4LTIzLjYxLTEyLTQ5LjQzLTIuNjQtODAuMDVDNDIxIDE4OSA0NDcgMTk2LjIxIDQ1Ni40MyAyMzkuNzNsLTMwLjM1IDguMzZjMTEuMTUgMjMgMTcgNDYuNzYgMTMuMiA3Mi4xNEw0MTIgMzEzLjE4bC02LjE2IDMzLjQzLTE4LjQ3LTctOC44IDMzLjM5LTE5LjM1LTcgMjYuMzkgMjEuMTEgOC44LTI4LjE1TDQxOSAzNjQuMmw3LTM1LjYzIDI2LjM5IDE0LjUyYy4yNS0yMCA3LTU4LjA2LTguOC04NC40NWwyNi4zOSA1LjI4YzQtMjIuMDctMi4zOC0zOS4yMS03LjkyLTU2Ljc0bDIyLjQzIDkuNjhjLS40NC0yNS4wNy0yOS45NC01Ni43OS02MS41OC01OC41LTIwLjIyLTEuMDktNTYuNzQtMjUuMTctNTQuMS01MS45IDItMTkuODcgMTcuNDUtNDIuNjIgNDMuMTEtNDkuNy00NCAzNi41MS05LjY4IDY3LjMgNS4yOCA3My40NiA0LjQtMTEuNDQgMTcuNTQtNjkuMDggMC0xMzAuMi00MC4zOSAyMi44Ny04OS42NSA2NS4xLTkzLjIgMTQ3Ljc5bC01OCAzOC43MS0zLjUyIDkzLjI1TDM2OS43OCAyMjBsNyA3LTE3LjU5IDMuNTItNDQgMzguNzEtMTUuODQtNS4yOC0yOC4xIDQ5LjI1LTMuNTIgMTE5LjY0IDIxLjExIDE1Ljg0LTMyLjU1IDE1Ljg0LTMyLjU1LTE1Ljg0IDIxLjExLTE1Ljg0LTMuNTItMTE5LjY0LTI4LjE1LTQ5LjI2LTE1Ljg0IDUuMjgtNDQtMzguNzEtMTcuNTgtMy41MSA3LTcgMTA3LjMzIDU5LjgyLTMuNTItOTMuMjUtNTguMDYtMzguNzFDMTg1IDY1LjEgMTM1Ljc3IDIyLjg3IDk1LjMgMGMtMTcuNTQgNjEuMTItNC40IDExOC43NiAwIDEzMC4yIDE1LTYuMTYgNDkuMjYtMzYuOTUgNS4yOC03My40NiAyNS42NiA3LjA4IDQxLjE1IDI5LjgzIDQzLjExIDQ5LjcgMi42MyAyNi43NC0zMy44OCA1MC44MS01NC4xIDUxLjktMzEuNjUgMS43Mi02MS4xNSAzMy40NC02MS41OSA1OC41MWwyMi40My05LjY4Yy01LjU0IDE3LjUzLTExLjkxIDM0LjY3LTcuOTIgNTYuNzRsMjYuMzktNS4yOGMtMTUuNzYgMjYuMzktOS4wNSA2NC40My04LjggODQuNDVsMjYuMzktMTQuNTIgNyAzNS42MyAyNC42My01LjI4IDguOCAyOC4xNUwxNTMuMzUgMzY2IDEzNCAzNzNsLTguOC0zMy40My0xOC40NyA3LTYuMTYtMzMuNDMtMjcuMjcgN2MtMy44Mi0yNS4zOCAyLTQ5LjEgMTMuMi03Mi4xNGwtMzAuMzUtOC4zNmM5LjQtNDMuNTIgMzUuNDctNTAuNzcgNjMuMzQtNTQuMSA5LjM2IDMwLjYyIDYuMjQgNTYuNDUtMi42NCA4MC4wNSA4Mi4yNSA1Ni4zIDc2Ljc1IDExNy4yMyA4MS4zNyAxNDkuMTEgNC40IDMwLjM1IDQuNDUgODkuMjkgMjUuNTEgOTcuMjF2LTI5LjgzbDUuMjgtNyA1LjI4IDEyLjMyIDEwLjU2LTE1Ljg0IDExLjQ0IDIxLjExIDExLjQzLTIxLjF6bTc5LjE3LTk1TDMzMS4wNiAzNjZjNy40Ny00LjM2IDEzLjc2LTguNDIgMTkuMzUtMTIuMzItLjYgNy4yMi0uMjcgMTMuODQtMy41MSAyMi44NHptMjguMTUtNDkuMjZjLS40IDEwLjk0LS45IDIxLjY2LTEuNzYgMzEuNjctNy44NS0xLjg2LTE1LjU3LTMuOC0yMS4xMS03IDguMjQtNy45NCAxNS41NS0xNi4zMiAyMi44Ny0yNC42OHptMjQuNjMgNS4yOGMwLTEzLjQzLTIuMDUtMjQuMjEtNS4yOC0zMy40M2EyMzUgMjM1IDAgMCAxLTE4LjQ3IDI3LjI3em0zLjUyLTgwLjk0YzE5LjQ0IDEyLjgxIDI3LjggMzMuNjYgMjkuOTEgNTYuMy0xMi4zMi00LjUzLTI0LjYzLTkuMzEtMzYuOTUtMTAuNTYgNS4wNi0xMiA2LjY1LTI4LjE0IDctNDUuNzR6bS0xLjc2LTQ1Ljc0Yy44MSAxNC4zIDEuODQgMjguODIgMS43NiA0Mi4yMyAxOS4yMi04LjExIDI5Ljc4LTkuNzIgNDQtMTQuMDgtMTAuNjEtMTguOTYtMjcuMi0yNS41My00NS43Ni0yOC4xNnpNMTY1LjY4IDM3Ni41MkwxODEuNTIgMzY2Yy03LjQ3LTQuMzYtMTMuNzYtOC40Mi0xOS4zNS0xMi4zMi42IDcuMjYuMjcgMTMuODggMy41MSAyMi44OHptLTI4LjE1LTQ5LjI2Yy40IDEwLjk0LjkgMjEuNjYgMS43NiAzMS42NyA3Ljg1LTEuODYgMTUuNTctMy44IDIxLjExLTctOC4yNC03LjkzLTE1LjU1LTE2LjMxLTIyLjg3LTI0LjY3em0tMjQuNjQgNS4yOGMwLTEzLjQzIDItMjQuMjEgNS4yOC0zMy40M2EyMzUgMjM1IDAgMCAwIDE4LjQ3IDI3LjI3em0tMy41Mi04MC45NGMtMTkuNDQgMTIuODEtMjcuOCAzMy42Ni0yOS45MSA1Ni4zIDEyLjMyLTQuNTMgMjQuNjMtOS4zMSAzNy0xMC41Ni01LTEyLTYuNjUtMjguMTQtNy00NS43NHptMS43Ni00NS43NGMtLjgxIDE0LjMtMS44NCAyOC44Mi0xLjc2IDQyLjIzLTE5LjIyLTguMTEtMjkuNzgtOS43Mi00NC0xNC4wOCAxMC42My0xOC45NSAyNy4yMy0yNS41MiA0NS43Ni0yOC4xNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV29yZHByZXNzU2ltcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4zIDggOCAxMTkuMiA4IDI1NmMwIDEzNi43IDExMS4zIDI0OCAyNDggMjQ4czI0OC0xMTEuMyAyNDgtMjQ4QzUwNCAxMTkuMiAzOTIuNyA4IDI1NiA4ek0zMyAyNTZjMC0zMi4zIDYuOS02MyAxOS4zLTkwLjdsMTA2LjQgMjkxLjRDODQuMyA0MjAuNSAzMyAzNDQuMiAzMyAyNTZ6bTIyMyAyMjNjLTIxLjkgMC00My0zLjItNjMtOS4xbDY2LjktMTk0LjQgNjguNSAxODcuOGMuNSAxLjEgMSAyLjEgMS42IDMuMS0yMy4xIDguMS00OCAxMi42LTc0IDEyLjZ6bTMwLjctMzI3LjVjMTMuNC0uNyAyNS41LTIuMSAyNS41LTIuMSAxMi0xLjQgMTAuNi0xOS4xLTEuNC0xOC40IDAgMC0zNi4xIDIuOC01OS40IDIuOC0yMS45IDAtNTguNy0yLjgtNTguNy0yLjgtMTItLjctMTMuNCAxNy43LTEuNCAxOC40IDAgMCAxMS40IDEuNCAyMy40IDIuMWwzNC43IDk1LjJMMjAwLjYgMzkzbC04MS4yLTI0MS41YzEzLjQtLjcgMjUuNS0yLjEgMjUuNS0yLjEgMTItMS40IDEwLjYtMTkuMS0xLjQtMTguNCAwIDAtMzYuMSAyLjgtNTkuNCAyLjgtNC4yIDAtOS4xLS4xLTE0LjQtLjNDMTA5LjYgNzMgMTc4LjEgMzMgMjU2IDMzYzU4IDAgMTEwLjkgMjIuMiAxNTAuNiA1OC41LTEtLjEtMS45LS4yLTIuOS0uMi0yMS45IDAtMzcuNCAxOS4xLTM3LjQgMzkuNiAwIDE4LjQgMTAuNiAzMy45IDIxLjkgNTIuMyA4LjUgMTQuOCAxOC40IDMzLjkgMTguNCA2MS41IDAgMTkuMS03LjMgNDEuMi0xNyA3Mi4xbC0yMi4yIDc0LjMtODAuNy0yMzkuNnptODEuNCAyOTcuMmw2OC4xLTE5Ni45YzEyLjctMzEuOCAxNy01Ny4yIDE3LTc5LjkgMC04LjItLjUtMTUuOC0xLjUtMjIuOSAxNy40IDMxLjggMjcuMyA2OC4yIDI3LjMgMTA3IDAgODIuMy00NC42IDE1NC4xLTExMC45IDE5Mi43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXb3JkcHJlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjEuNyAxNjkuNGwxMDEuNSAyNzhDOTIuMiA0MTMgNDMuMyAzNDAuMiA0My4zIDI1NmMwLTMwLjkgNi42LTYwLjEgMTguNC04Ni42em0zMzcuOSA3NS45YzAtMjYuMy05LjQtNDQuNS0xNy41LTU4LjctMTAuOC0xNy41LTIwLjktMzIuNC0yMC45LTQ5LjkgMC0xOS42IDE0LjgtMzcuOCAzNS43LTM3LjguOSAwIDEuOC4xIDIuOC4yLTM3LjktMzQuNy04OC4zLTU1LjktMTQzLjctNTUuOS03NC4zIDAtMTM5LjcgMzguMS0xNzcuOCA5NS45IDUgLjIgOS43LjMgMTMuNy4zIDIyLjIgMCA1Ni43LTIuNyA1Ni43LTIuNyAxMS41LS43IDEyLjggMTYuMiAxLjQgMTcuNSAwIDAtMTEuNSAxLjMtMjQuMyAybDc3LjUgMjMwLjRMMjQ5LjggMjQ3bC0zMy4xLTkwLjhjLTExLjUtLjctMjIuMy0yLTIyLjMtMi0xMS41LS43LTEwLjEtMTguMiAxLjMtMTcuNSAwIDAgMzUuMSAyLjcgNTYgMi43IDIyLjIgMCA1Ni43LTIuNyA1Ni43LTIuNyAxMS41LS43IDEyLjggMTYuMiAxLjQgMTcuNSAwIDAtMTEuNSAxLjMtMjQuMyAybDc2LjkgMjI4LjcgMjEuMi03MC45YzktMjkuNCAxNi01MC41IDE2LTY4Ljd6bS0xMzkuOSAyOS4zbC02My44IDE4NS41YzE5LjEgNS42IDM5LjIgOC43IDYwLjEgOC43IDI0LjggMCA0OC41LTQuMyA3MC42LTEyLjEtLjYtLjktMS4xLTEuOS0xLjUtMi45bC02NS40LTE3OS4yem0xODMtMTIwLjdjLjkgNi44IDEuNCAxNCAxLjQgMjEuOSAwIDIxLjYtNCA0NS44LTE2LjIgNzYuMmwtNjUgMTg3LjlDNDI2LjIgNDAzIDQ2OC43IDMzNC41IDQ2OC43IDI1NmMwLTM3LTkuNC03MS44LTI2LTEwMi4xek01MDQgMjU2YzAgMTM2LjgtMTExLjMgMjQ4LTI0OCAyNDhDMTE5LjIgNTA0IDggMzkyLjcgOCAyNTYgOCAxMTkuMiAxMTkuMiA4IDI1NiA4YzEzNi43IDAgMjQ4IDExMS4yIDI0OCAyNDh6bS0xMS40IDBjMC0xMzAuNS0xMDYuMi0yMzYuNi0yMzYuNi0yMzYuNkMxMjUuNSAxOS40IDE5LjQgMTI1LjUgMTkuNCAyNTZTMTI1LjYgNDkyLjYgMjU2IDQ5Mi42YzEzMC41IDAgMjM2LjYtMTA2LjEgMjM2LjYtMjM2LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdwYmVnaW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDYyLjc5OSAzMjIuMzc0QzUxOS4wMSAzODYuNjgyIDQ2Ni45NjEgNDgwIDM3MC45NDQgNDgwYy0zOS42MDIgMC03OC44MjQtMTcuNjg3LTEwMC4xNDItNTAuMDQtNi44ODcuMzU2LTIyLjcwMi4zNTYtMjkuNTkgMEMyMTkuODQ4IDQ2Mi4zODEgMTgwLjU4OCA0ODAgMTQxLjA2OSA0ODBjLTk1LjQ5IDAtMTQ4LjM0OC05Mi45OTYtOTEuODU1LTE1Ny42MjZDLTI5LjkyNSAxOTAuNTIzIDgwLjQ3OSAzMiAyNTYuMDA2IDMyYzE3NS42MzIgMCAyODUuODcgMTU4LjYyNiAyMDYuNzkzIDI5MC4zNzR6bS0zMzkuNjQ3LTgyLjk3Mmg0MS41Mjl2LTU4LjA3NWgtNDEuNTI5djU4LjA3NXptMjE3LjE4IDg2LjA3MnYtMjMuODM5Yy02MC41MDYgMjAuOTE1LTEzMi4zNTUgOS4xOTgtMTg3LjU4OS0zMy45NzFsLjI0NiAyNC44OTdjNTEuMTAxIDQ2LjM2NyAxMzEuNzQ2IDU3Ljg3NSAxODcuMzQzIDMyLjkxM3ptLTE1MC43NTMtODYuMDcyaDE2Ni4wNTh2LTU4LjA3NUgxODkuNTc5djU4LjA3NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV3BleHBsb3JlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMjU2YzAgMTQxLjItMTE0LjcgMjU2LTI1NiAyNTZDMTE0LjggNTEyIDAgMzk3LjMgMCAyNTZTMTE0LjcgMCAyNTYgMHMyNTYgMTE0LjcgMjU2IDI1NnptLTMyIDBjMC0xMjMuMi0xMDAuMy0yMjQtMjI0LTIyNEMxMzIuNSAzMiAzMiAxMzIuNSAzMiAyNTZzMTAwLjUgMjI0IDIyNCAyMjQgMjI0LTEwMC41IDIyNC0yMjR6TTE2MC45IDEyNC42bDg2LjkgMzcuMS0zNy4xIDg2LjktODYuOS0zNy4xIDM3LjEtODYuOXptMTEwIDE2OS4xbDQ2LjYgOTRoLTE0LjZsLTUwLTEwMC00OC45IDEwMGgtMTRsNTEuMS0xMDYuOS0yMi4zLTkuNCA2LTE0IDY4LjYgMjkuMS02IDE0LjMtMTYuNS03LjF6bS0xMS44LTExNi4zbDY4LjYgMjkuNC0yOS40IDY4LjNMMjMwIDI0NmwyOS4xLTY4LjZ6bTgwLjMgNDIuOWw1NC42IDIzLjEtMjMuNCA1NC4zLTU0LjMtMjMuMSAyMy4xLTU0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdwZm9ybXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDc1LjJ2MzYxLjdjMCAyNC4zLTE5IDQzLjItNDMuMiA0My4ySDQzLjJDMTkuMyA0ODAgMCA0NjEuNCAwIDQzNi44Vjc1LjJDMCA1MS4xIDE4LjggMzIgNDMuMiAzMmgzNjEuN2MyNCAwIDQzLjEgMTguOCA0My4xIDQzLjJ6bS0zNy4zIDM2MS42Vjc1LjJjMC0zLTIuNi01LjgtNS44LTUuOGgtOS4zTDI4NS4zIDE0NCAyMjQgOTQuMSAxNjIuOCAxNDQgNTIuNSA2OS4zaC05LjNjLTMuMiAwLTUuOCAyLjgtNS44IDUuOHYzNjEuN2MwIDMgMi42IDUuOCA1LjggNS44aDM2MS43YzMuMi4xIDUuOC0yLjcgNS44LTUuOHpNMTUwLjIgMTg2djM3SDc2Ljd2LTM3aDczLjV6bTAgNzQuNHYzNy4zSDc2Ljd2LTM3LjNoNzMuNXptMTEuMS0xNDcuM2w1NC00My43SDk2LjhsNjQuNSA0My43em0yMTAgNzIuOXYzN2gtMTk2di0zN2gxOTZ6bTAgNzQuNHYzNy4zaC0xOTZ2LTM3LjNoMTk2em0tODQuNi0xNDcuM2w2NC41LTQzLjdIMjMyLjhsNTMuOSA0My43ek0zNzEuMyAzMzV2MzcuM2gtOTkuNFYzMzVoOTkuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV3ByZXNzciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEuMDMgOCAwIDExOS4wMyAwIDI1NnMxMTEuMDMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMyAyNDgtMjQ4UzM4NC45NyA4IDI0OCA4em0xNzEuMzMgMTU4LjZjLTE1LjE4IDM0LjUxLTMwLjM3IDY5LjAyLTQ1LjYzIDEwMy41LTIuNDQgNS41MS02Ljg5IDguMjQtMTIuOTcgOC4yNC0yMy4wMi0uMDEtNDYuMDMuMDYtNjkuMDUtLjA1LTUuMTItLjAzLTguMjUgMS44OS0xMC4zNCA2LjcyLTEwLjE5IDIzLjU2LTIwLjYzIDQ3LTMwLjk1IDcwLjUtMS41NCAzLjUxLTQuMDYgNS4yOS03LjkyIDUuMjktNDUuOTQtLjAxLTkxLjg3LS4wMi0xMzcuODEgMC0zLjEzIDAtNS42My0xLjE1LTcuNzItMy40NS0xMS4yMS0xMi4zMy0yMi40Ni0yNC42My0zMy42OC0zNi45NC0yLjY5LTIuOTUtMi43OS02LjE4LTEuMjEtOS43MyA4LjY2LTE5LjU0IDE3LjI3LTM5LjEgMjUuODktNTguNjYgMTIuOTMtMjkuMzUgMjUuODktNTguNjkgMzguNzUtODguMDggMS43LTMuODggNC4yOC01LjY4IDguNTQtNS42NSAxNC4yNC4xIDI4LjQ4LjAyIDQyLjcyLjA1IDYuMjQuMDEgOS4yIDQuODQgNi42NiAxMC41OS0xMy42IDMwLjc3LTI3LjE3IDYxLjU1LTQwLjc0IDkyLjMzLTUuNzIgMTIuOTktMTEuNDIgMjUuOTktMTcuMDkgMzktMy45MSA4Ljk1IDcuMDggMTEuOTcgMTAuOTUgNS42LjIzLS4zNy0xLjQyIDQuMTggMzAuMDEtNjcuNjkgMS4zNi0zLjEgMy40MS00LjQgNi43Ny00LjM5IDE1LjIxLjA4IDMwLjQzLjAyIDQ1LjY0LjA0IDUuNTYuMDEgNy45MSAzLjY0IDUuNjYgOC43NS04LjMzIDE4Ljk2LTE2LjcxIDM3LjktMjQuOTggNTYuODktNC45OCAxMS40MyA4LjA4IDEyLjQ5IDExLjI4IDUuMzMuMDQtLjA4IDI3Ljg5LTYzLjMzIDMyLjE5LTczLjE2IDIuMDItNC42MSA1LjQ0LTYuNTEgMTAuMzUtNi41IDI2LjQzLjA1IDUyLjg2IDAgNzkuMjkuMDUgMTIuNDQuMDIgMTMuOTMtMTMuNjUgMy45LTEzLjY0LTI1LjI2LjAzLTUwLjUyLjAyLTc1Ljc4LjAyLTYuMjcgMC03Ljg0LTIuNDctNS4yNy04LjI3IDUuNzgtMTMuMDYgMTEuNTktMjYuMTEgMTcuMy0zOS4yMSAxLjczLTMuOTYgNC41Mi01Ljc5IDguODQtNS43OCAyMy4wOS4wNiAyNS45OC4wMiAxMzAuNzguMDMgNi4wOC0uMDEgOC4wMyAyLjc5IDUuNjIgOC4yN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWGJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjkuOSAzMTguMmM0NC4zIDU0LjMgNjQuNyA5OC44IDU0LjQgMTE4LjctNy45IDE1LjEtNTYuNyA0NC42LTkyLjYgNTUuOS0yOS42IDkuMy02OC40IDEzLjMtMTAwLjQgMTAuMi0zOC4yLTMuNy03Ni45LTE3LjQtMTEwLjEtMzlDOTMuMyA0NDUuOCA4NyA0MzguMyA4NyA0MjMuNGMwLTI5LjkgMzIuOS04Mi4zIDg5LjItMTQyLjEgMzItMzMuOSA3Ni41LTczLjcgODEuNC03Mi42IDkuNCAyLjEgODQuMyA3NS4xIDExMi4zIDEwOS41ek0xODguNiAxNDMuOGMtMjkuNy0yNi45LTU4LjEtNTMuOS04Ni40LTYzLjQtMTUuMi01LjEtMTYuMy00LjgtMjguNyA4LjEtMjkuMiAzMC40LTUzLjUgNzkuNy02MC4zIDEyMi40LTUuNCAzNC4yLTYuMSA0My44LTQuMiA2MC41IDUuNiA1MC41IDE3LjMgODUuNCA0MC41IDEyMC45IDkuNSAxNC42IDEyLjEgMTcuMyA5LjMgOS45LTQuMi0xMS0uMy0zNy41IDkuNS02NCAxNC4zLTM5IDUzLjktMTEyLjkgMTIwLjMtMTk0LjR6bTMxMS42IDYzLjVDNDgzLjMgMTI3LjMgNDMyLjcgNzcgNDI1LjYgNzdjLTcuMyAwLTI0LjIgNi41LTM2IDEzLjktMjMuMyAxNC41LTQxIDMxLjQtNjQuMyA1Mi44QzM2Ny43IDE5NyA0MjcuNSAyODMuMSA0NDguMiAzNDZjNi44IDIwLjcgOS43IDQxLjEgNy40IDUyLjMtMS43IDguNS0xLjcgOC41IDEuNCA0LjYgNi4xLTcuNyAxOS45LTMxLjMgMjUuNC00My41IDcuNC0xNi4yIDE1LTQwLjIgMTguNi01OC43IDQuMy0yMi41IDMuOS03MC44LS44LTkzLjR6TTE0MS4zIDQzQzE4OSA0MC41IDI1MSA3Ny41IDI1NS42IDc4LjRjLjcuMSAxMC40LTQuMiAyMS42LTkuNyA2My45LTMxLjEgOTQtMjUuOCAxMDcuNC0yNS4yLTYzLjktMzkuMy0xNTIuNy01MC0yMzMuOS0xMS43LTIzLjQgMTEuMS0yNCAxMS45LTkuNCAxMS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYaW5nU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE0MC40IDMyMC4ySDkzLjhjLTUuNSAwLTguNy01LjMtNi0xMC4zbDQ5LjMtODYuN2MuMSAwIC4xLS4xIDAtLjJsLTMxLjQtNTRjLTMtNS42LjItMTAuMSA2LTEwLjFoNDYuNmM1LjIgMCA5LjUgMi45IDEyLjkgOC43bDMxLjkgNTUuM2MtMS4zIDIuMy0xOCAzMS43LTUwLjEgODguMi0zLjUgNi4yLTcuNyA5LjEtMTIuNiA5LjF6bTIxOS43LTIxNC4xTDI1Ny4zIDI4Ni44di4ybDY1LjUgMTE5YzIuOCA1LjEuMSAxMC4xLTYgMTAuMWgtNDYuNmMtNS41IDAtOS43LTIuOS0xMi45LTguN2wtNjYtMTIwLjNjMi4zLTQuMSAzNi44LTY0LjkgMTAzLjQtMTgyLjMgMy4zLTUuOCA3LjQtOC43IDEyLjUtOC43aDQ2LjljNS43LS4xIDguOCA0LjcgNiAxMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjIuNyAyMTBjLTEuOCAzLjMtMjUuMiA0NC40LTcwLjEgMTIzLjUtNC45IDguMy0xMC44IDEyLjUtMTcuNyAxMi41SDkuOGMtNy43IDAtMTIuMS03LjUtOC41LTE0LjRsNjktMTIxLjNjLjIgMCAuMi0uMSAwLS4zbC00My45LTc1LjZjLTQuMy03LjguMy0xNC4xIDguNS0xNC4xSDEwMGM3LjMgMCAxMy4zIDQuMSAxOCAxMi4ybDQ0LjcgNzcuNXpNMzgyLjYgNDYuMWwtMTQ0IDI1M3YuM0wzMzAuMiA0NjZjMy45IDcuMS4yIDE0LjEtOC41IDE0LjFoLTY1LjJjLTcuNiAwLTEzLjYtNC0xOC0xMi4ybC05Mi40LTE2OC41YzMuMy01LjggNTEuNS05MC44IDE0NC44LTI1NS4yIDQuNi04LjEgMTAuNC0xMi4yIDE3LjUtMTIuMmg2NS43YzggMCAxMi4zIDYuNyA4LjUgMTQuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWUNvbWJpbmF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDMydjQ0OEgwVjMyaDQ0OHpNMjM2IDI4Ny41TDMxMy41IDE0MmgtMzIuN0wyMzUgMjMzYy00LjcgOS4zLTkgMTguMy0xMi44IDI2LjhMMjEwIDIzM2wtNDUuMi05MWgtMzVsNzYuNyAxNDMuOHY5NC41SDIzNnYtOTIuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWFob28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIzLjY5LDE0MS4wNiwxNjcsMjg0LjIzLDExMSwxNDEuMDZIMTQuOTNMMTIwLjc2LDM5MC4xOSw4Mi4xOSw0ODBoOTQuMTdMMzE3LjI3LDE0MS4wNlptMTA1LjQsMTM1Ljc5YTU4LjIyLDU4LjIyLDAsMSwwLDU4LjIyLDU4LjIyQTU4LjIyLDU4LjIyLDAsMCwwLDMyOS4wOSwyNzYuODVaTTM5NC42NSwzMmwtOTMsMjIzLjQ3SDQwNi40NEw0OTkuMDcsMzJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlhbW1lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjEuNzggMTUyLjE3QTIzLjA2IDIzLjA2IDAgMCAwIDQwMC45IDExMmMtLjgzLjQzLTEuNzEuOS0yLjYzIDEuNC0xNS4yNSA4LjQtMTE4LjMzIDgwLjYyLTEwNi42OSA4OC43N3M4Mi4wNC0yMy42MSAxMzAuMi01MHptMCAyMTcuMTdjLTQ4LjE2LTI2LjM4LTExOC42NC01OC4xLTEzMC4yLTUwczkxLjQyIDgwLjM1IDEwNi42OSA4OC43NGMuOTIuNTEgMS44IDEgMi42MyAxLjQxYTIzLjA3IDIzLjA3IDAgMCAwIDIwLjg4LTQwLjE1ek00NjQuMjEgMjM3Yy0uOTUgMC0xLjk1LS4wNi0zLS4wNi0xNy40IDAtMTQyLjUyIDEzLjc2LTEzNi4yNCAyNi41MXM4My4zIDE4Ljc0IDEzOC4yMSAxOC43NmEyMyAyMyAwIDAgMCAxLTQ1LjIxek0zMSA5Ni42NWEyNC44OCAyNC44OCAwIDAgMSA0Ni4xNC0xOC40bDgxIDIwNS4wNmgxLjIxbDc3LTIwMy41M2EyMy41MiAyMy41MiAwIDAgMSA0NC40NSAxNS4yN0wxNzEuMiAzNjguNDRDMTUyLjY1IDQxNS42NiAxMzQuMDggNDQ4IDc3LjkxIDQ0OGExMzkuNjcgMTM5LjY3IDAgMCAxLTIzLjgxLTEuOTUgMjEuMzEgMjEuMzEgMCAwIDEgNi45LTQxLjc3Yy42Ni4wNiAxMC45MS42NiAxMy44Ni42NiAzMC40NyAwIDQzLjc0LTE4Ljk0IDU4LjA3LTU5LjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZYW5kZXhJbnRlcm5hdGlvbmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOS41IDUxMlYzNDUuOUwxOC41IDQ4aDU1LjhsODEuOCAyMjkuN0wyNTAuMiAwaDUxLjNMMTgwLjggMzQ3LjhWNTEyaC01MS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZYW5kZXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUzLjEgMzE1LjhMNjUuNyA1MTJIMmw5Ni0yMDkuOGMtNDUuMS0yMi45LTc1LjItNjQuNC03NS4yLTE0MS4xQzIyLjcgNTMuNyA5MC44IDAgMTcxLjcgMEgyNTR2NTEyaC01NS4xVjMxNS44aC00NS44em00NS44LTI2OS4zaC0yOS40Yy00NC40IDAtODcuNCAyOS40LTg3LjQgMTE0LjYgMCA4Mi4zIDM5LjQgMTA4LjggODcuNCAxMDguOGgyOS40VjQ2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlhcm4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkzLjkgMzQ1LjJjLTM5IDkuMy00OC40IDMyLjEtMTA0IDQ3LjQgMCAwLTIuNyA0LTEwLjQgNS44LTEzLjQgMy4zLTYzLjkgNi02OC41IDYuMS0xMi40LjEtMTkuOS0zLjItMjItOC4yLTYuNC0xNS4zIDkuMi0yMiA5LjItMjItOC4xLTUtOS05LjktOS44LTguMS0yLjQgNS44LTMuNiAyMC4xLTEwLjEgMjYuNS04LjggOC45LTI1LjUgNS45LTM1LjMuOC0xMC44LTUuNy44LTE5LjIuOC0xOS4ycy01LjggMy40LTEwLjUtMy42Yy02LTkuMy0xNy4xLTM3LjMgMTEuNS02Mi0xLjMtMTAuMS00LjYtNTMuNyA0MC42LTg1LjYgMCAwLTIwLjYtMjIuOC0xMi45LTQzLjMgNS0xMy40IDctMTMuMyA4LjYtMTMuOSA1LjctMi4yIDExLjMtNC42IDE1LjQtOS4xIDIwLjYtMjIuMiA0Ni44LTE4IDQ2LjgtMThzMTIuNC0zNy44IDIzLjktMzAuNGMzLjUgMi4zIDE2LjMgMzAuNiAxNi4zIDMwLjZzMTMuNi03LjkgMTUuMS01YzguMiAxNiA5LjIgNDYuNSA1LjYgNjUuMS02LjEgMzAuNi0yMS40IDQ3LjEtMjcuNiA1Ny41LTEuNCAyLjQgMTYuNSAxMCAyNy44IDQxLjMgMTAuNCAyOC42IDEuMSA1Mi43IDIuOCA1NS4zLjggMS40IDEzLjcuOCAzNi40LTEzLjIgMTIuOC03LjkgMjguMS0xNi45IDQ1LjQtMTcgMTYuNy0uNSAxNy42IDE5LjIgNC45IDIyLjJ6TTQ5NiAyNTZjMCAxMzYuOS0xMTEuMSAyNDgtMjQ4IDI0OFMwIDM5Mi45IDAgMjU2IDExMS4xIDggMjQ4IDhzMjQ4IDExMS4xIDI0OCAyNDh6bS03OS4zIDc1LjJjLTEuNy0xMy42LTEzLjItMjMtMjgtMjIuOC0yMiAuMy00MC41IDExLjctNTIuOCAxOS4yLTQuOCAzLTguOSA1LjItMTIuNCA2LjggMy4xLTQ0LjUtMjIuNS03My4xLTI4LjctNzkuNCA3LjgtMTEuMyAxOC40LTI3LjggMjMuNC01My4yIDQuMy0yMS43IDMtNTUuNS02LjktNzQuNS0xLjYtMy4xLTcuNC0xMS4yLTIxLTcuNC05LjctMjAtMTMtMjIuMS0xNS42LTIzLjgtMS4xLS43LTIzLjYtMTYuNC00MS40IDI4LTEyLjIuOS0zMS4zIDUuMy00Ny41IDIyLjgtMiAyLjItNS45IDMuOC0xMC4xIDUuNGguMWMtOC40IDMtMTIuMyA5LjktMTYuOSAyMi4zLTYuNSAxNy40LjIgMzQuNiA2LjggNDUuNy0xNy44IDE1LjktMzcgMzkuOC0zNS43IDgyLjUtMzQgMzYtMTEuOCA3My01LjYgNzkuNi0xLjYgMTEuMSAzLjcgMTkuNCAxMiAyMy44IDEyLjYgNi43IDMwLjMgOS42IDQzLjkgMi44IDQuOSA1LjIgMTMuOCAxMC4xIDMwIDEwLjEgNi44IDAgNTgtMi45IDcyLjYtNi41IDYuOC0xLjYgMTEuNS00LjUgMTQuNi03LjEgOS44LTMuMSAzNi44LTEyLjMgNjIuMi0yOC43IDE4LTExLjcgMjQuMi0xNC4yIDM3LjYtMTcuNCAxMi45LTMuMiAyMS0xNS4xIDE5LjQtMjguMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWVscCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Mi45IDI0MC4zMmw5OS42MiA0OC42MWMxOS4yIDkuNCAxNi4yIDM3LjUxLTQuNSA0Mi43MUwzMC41IDM1OC40NWEyMi43OSAyMi43OSAwIDAgMS0yOC4yMS0xOS42IDE5Ny4xNiAxOTcuMTYgMCAwIDEgOS04NS4zMiAyMi44IDIyLjggMCAwIDEgMzEuNjEtMTMuMjF6bTQ0IDIzOS4yNWExOTkuNDUgMTk5LjQ1IDAgMCAwIDc5LjQyIDMyLjExQTIyLjc4IDIyLjc4IDAgMCAwIDE5Mi45NCA0OTBsMy45LTExMC44MmMuNy0yMS4zLTI1LjUtMzEuOTEtMzkuODEtMTYuMWwtNzQuMjEgODIuNGEyMi44MiAyMi44MiAwIDAgMCA0LjA5IDM0LjA5em0xNDUuMzQtMTA5LjkybDU4LjgxIDk0YTIyLjkzIDIyLjkzIDAgMCAwIDM0IDUuNSAxOTguMzYgMTk4LjM2IDAgMCAwIDUyLjcxLTY3LjYxQTIzIDIzIDAgMCAwIDM2NC4xNyAzNzBsLTEwNS40Mi0zNC4yNmMtMjAuMzEtNi41LTM3LjgxIDE1LjgtMjYuNTEgMzMuOTF6bTE0OC4zMy0xMzIuMjNhMTk3LjQ0IDE5Ny40NCAwIDAgMC01MC40MS02OS4zMSAyMi44NSAyMi44NSAwIDAgMC0zNCA0LjRsLTYyIDkxLjkyYy0xMS45IDE3LjcgNC43IDQwLjYxIDI1LjIgMzQuNzFMMzY2IDI2OC42M2EyMyAyMyAwIDAgMCAxNC42MS0zMS4yMXpNNjIuMTEgMzAuMThhMjIuODYgMjIuODYgMCAwIDAtOS45IDMybDEwNC4xMiAxODAuNDRjMTEuNyAyMC4yIDQyLjYxIDExLjkgNDIuNjEtMTEuNFYyMi44OGEyMi42NyAyMi42NyAwIDAgMC0yNC41LTIyLjggMzIwLjM3IDMyMC4zNyAwIDAgMC0xMTIuMzMgMzAuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWW9hc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTEuMyA3NmgxODZsLTcgMTguOWgtMTc5Yy0zOS43IDAtNzEuOSAzMS42LTcxLjkgNzAuM3YyMDUuNGMwIDM1LjQgMjQuOSA3MC4zIDg0IDcwLjNWNDYwSDkxLjNDNDEuMiA0NjAgMCA0MTkuOCAwIDM3MC41VjE2NS4yQzAgMTE1LjkgNDAuNyA3NiA5MS4zIDc2em0yMjkuMS01Nmg2Ni41QzI0My4xIDM5OC4xIDI0MS4yIDQxOC45IDIwMi4yIDQ1OS4zYy0yMC44IDIxLjYtNDkuMyAzMS43LTc4LjMgMzIuN3YtNTEuMWM0OS4yLTcuNyA2NC42LTQ5LjkgNjQuNi03NS4zIDAtMjAuMS42LTEyLjYtODIuMS0yMjMuMmg2MS40TDIxOC4yIDI5OSAzMjAuNCAyMHpNNDQ4IDE2MS41VjQ2MEgyMzRjNi42LTkuNiAxMC43LTE2LjMgMTIuMS0xOS40aDE4Mi41VjE2MS41YzAtMzIuNS0xNy4xLTUxLjktNDguMi02Mi45bDYuNy0xNy42YzQxLjcgMTMuNiA2MC45IDQzLjEgNjAuOSA4MC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZb3V0dWJlU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni44IDIwMi4xbDk1LjIgNTQuMS05NS4yIDU0LjFWMjAyLjF6TTQ0OCA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHptLTQyIDE3Ni4zczAtNTkuNi03LjYtODguMmMtNC4yLTE1LjgtMTYuNS0yOC4yLTMyLjItMzIuNEMzMzcuOSAxMjggMjI0IDEyOCAyMjQgMTI4cy0xMTMuOSAwLTE0Mi4yIDcuN2MtMTUuNyA0LjItMjggMTYuNi0zMi4yIDMyLjQtNy42IDI4LjUtNy42IDg4LjItNy42IDg4LjJzMCA1OS42IDcuNiA4OC4yYzQuMiAxNS44IDE2LjUgMjcuNyAzMi4yIDMxLjlDMTEwLjEgMzg0IDIyNCAzODQgMjI0IDM4NHMxMTMuOSAwIDE0Mi4yLTcuN2MxNS43LTQuMiAyOC0xNi4xIDMyLjItMzEuOSA3LjYtMjguNSA3LjYtODguMSA3LjYtODguMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWW91dHViZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDkuNjU1IDEyNC4wODNjLTYuMjgxLTIzLjY1LTI0Ljc4Ny00Mi4yNzYtNDguMjg0LTQ4LjU5N0M0NTguNzgxIDY0IDI4OCA2NCAyODggNjRTMTE3LjIyIDY0IDc0LjYyOSA3NS40ODZjLTIzLjQ5NyA2LjMyMi00Mi4wMDMgMjQuOTQ3LTQ4LjI4NCA0OC41OTctMTEuNDEyIDQyLjg2Ny0xMS40MTIgMTMyLjMwNS0xMS40MTIgMTMyLjMwNXMwIDg5LjQzOCAxMS40MTIgMTMyLjMwNWM2LjI4MSAyMy42NSAyNC43ODcgNDEuNSA0OC4yODQgNDcuODIxQzExNy4yMiA0NDggMjg4IDQ0OCAyODggNDQ4czE3MC43OCAwIDIxMy4zNzEtMTEuNDg2YzIzLjQ5Ny02LjMyMSA0Mi4wMDMtMjQuMTcxIDQ4LjI4NC00Ny44MjEgMTEuNDEyLTQyLjg2NyAxMS40MTItMTMyLjMwNSAxMS40MTItMTMyLjMwNXMwLTg5LjQzOC0xMS40MTItMTMyLjMwNXptLTMxNy41MSAyMTMuNTA4VjE3NS4xODVsMTQyLjczOSA4MS4yMDUtMTQyLjczOSA4MS4yMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVpoaWh1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3MC41NCAxNDguMTN2MjE3LjU0bDIzLjQzLjAxIDcuNzEgMjYuMzcgNDIuMDEtMjYuMzdoNDkuNTNWMTQ4LjEzSDE3MC41NHptOTcuNzUgMTkzLjkzaC0yNy45NGwtMjcuOSAxNy41MS01LjA4LTE3LjQ3LTExLjktLjA0VjE3MS43NWg3Mi44MnYxNzAuMzF6bS0xMTguNDYtOTQuMzlIOTcuNWMxLjc0LTI3LjEgMi4yLTUxLjU5IDIuMi03My40Nmg1MS4xNnMxLjk3LTIyLjU2LTguNTgtMjIuMzFoLTg4LjVjMy40OS0xMy4xMiA3Ljg3LTI2LjY2IDEzLjEyLTQwLjY3IDAgMC0yNC4wNyAwLTMyLjI3IDIxLjU3LTMuMzkgOC45LTEzLjIxIDQzLjE0LTMwLjcgNzguMTIgNS44OS0uNjQgMjUuMzctMS4xOCAzNi44NC0yMi4yMSAyLjExLTUuODkgMi41MS02LjY2IDUuMTQtMTQuNTNoMjguODdjMCAxMC41LTEuMiA2Ni44OC0xLjY4IDczLjQ0SDIwLjgzYy0xMS43NCAwLTE1LjU2IDIzLjYyLTE1LjU2IDIzLjYyaDY1LjU4QzY2LjQ1IDMyMS4xIDQyLjgzIDM2My4xMiAwIDM5Ni4zNGMyMC40OSA1Ljg1IDQwLjkxLS45MyA1MS05LjkgMCAwIDIyLjk4LTIwLjkgMzUuNTktNjkuMjVsNTMuOTYgNjQuOTRzNy45MS0yNi44OS0xLjI0LTM5Ljk5Yy03LjU4LTguOTItMjguMDYtMzMuMDYtMzYuNzktNDEuODFMODcuOSAzMTEuOTVjNC4zNi0xMy45OCA2Ljk5LTI3LjU1IDcuODctNDAuNjdoNjEuNjVzLS4wOS0yMy42Mi03LjU5LTIzLjYydi4wMXptNDEyLjAyLTEuNmMyMC44My0yNS42NCA0NC45OC01OC41NyA0NC45OC01OC41N3MtMTguNjUtMTQuOC0yNy4zOC00LjA2Yy02IDguMTUtMzYuODMgNDguMi0zNi44MyA0OC4ybDE5LjIzIDE0LjQzem0tMTUwLjA5LTU5LjA5Yy05LjAxLTguMjUtMjUuOTEgMi4xMy0yNS45MSAyLjEzczM5LjUyIDU1LjA0IDQxLjEyIDU3LjQ1bDE5LjQ2LTEzLjczcy0yNS42Ny0zNy42MS0zNC42Ni00NS44NmgtLjAxek02NDAgMjU4LjM1Yy0xOS43OCAwLTEzMC45MS45My0xMzEuMDYuOTN2LTEwMWM0LjgxIDAgMTIuNDItLjQgMjIuODUtMS4yIDQwLjg4LTIuNDEgNzAuMTMtNCA4Ny43Ny00LjgxIDAgMCAxMi4yMi0yNy4xOS0uNTktMzMuNDQtMy4wNy0xLjE4LTIzLjE3IDQuNTgtMjMuMTcgNC41OHMtMTY1LjIyIDE2LjQ5LTIzMi4zNiAxOC4wNWMxLjYgOC44MiA3LjYyIDE3LjA4IDE1Ljc4IDE5LjU1IDEzLjMxIDMuNDggMjIuNjkgMS43IDQ5LjE1Ljg5IDI0LjgzLTEuNiA0My42OC0yLjQzIDU2LjUxLTIuNDN2OTkuODFIMzUxLjQxczIuODIgMjIuMzEgMjUuNTEgMjIuODVoMTA3Ljk0djcwLjkyYzAgMTMuOTctMTEuMTkgMjEuOTktMjQuNDggMjEuMTItMTQuMDguMTEtMjYuMDgtMS4xNS00MS42OS0xLjgxIDEuOTkgMy45NyA2LjMzIDE0LjM5IDE5LjMxIDIxLjg0IDkuODggNC44MSAxNi4xNyA2LjU3IDI2LjAyIDYuNTcgMjkuNTYgMCA0NS42Ny0xNy4yOCA0NC44OS00NS4zMXYtNzMuMzJoMTIyLjM2YzkuNjggMCA4LjctMjMuNzggOC43LTIzLjc4bC4wMy0uMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ny41MiAyNzJoMzYuOTZMMTc2IDIxOC43OCAxNTcuNTIgMjcyek0zNTIgMjU2Yy0xMy4yMyAwLTI0IDEwLjc3LTI0IDI0czEwLjc3IDI0IDI0IDI0IDI0LTEwLjc3IDI0LTI0LTEwLjc3LTI0LTI0LTI0ek00NjQgNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2Mjg4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTI1MC41OCAzNTJoLTE2Ljk0Yy02LjgxIDAtMTIuODgtNC4zMi0xNS4xMi0xMC43NUwyMTEuMTUgMzIwaC03MC4yOWwtNy4zOCAyMS4yNUExNiAxNiAwIDAgMSAxMTguMzYgMzUyaC0xNi45NGMtMTEuMDEgMC0xOC43My0xMC44NS0xNS4xMi0yMS4yNUwxNDAgMTc2LjEyQTIzLjk5NSAyMy45OTUgMCAwIDEgMTYyLjY3IDE2MGgyNi42NkEyMy45OSAyMy45OSAwIDAgMSAyMTIgMTc2LjEzbDUzLjY5IDE1NC42MmMzLjYxIDEwLjQtNC4xMSAyMS4yNS0xNS4xMSAyMS4yNXpNNDI0IDMzNmMwIDguODQtNy4xNiAxNi0xNiAxNmgtMTZjLTQuODUgMC05LjA0LTIuMjctMTEuOTgtNS42OC04LjYyIDMuNjYtMTguMDkgNS42OC0yOC4wMiA1LjY4LTM5LjcgMC03Mi0zMi4zLTcyLTcyczMyLjMtNzIgNzItNzJjOC40NiAwIDE2LjQ2IDEuNzMgMjQgNC40MlYxNzZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMTZjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBZGRyZXNzQm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzYgMTYwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0yMFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDMyMGMyNi41IDAgNDgtMjEuNSA0OC00OHYtNDhoMjBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTIwdi02NGgyMGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMjB2LTY0aDIwem0tMjI4LTMyYzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHptMTEyIDIzNi44YzAgMTAuNi0xMCAxOS4yLTIyLjQgMTkuMkgxMTguNEMxMDYgMzg0IDk2IDM3NS40IDk2IDM2NC44di0xOS4yYzAtMzEuOCAzMC4xLTU3LjYgNjcuMi01Ny42aDVjMTIuMyA1LjEgMjUuNyA4IDM5LjggOHMyNy42LTIuOSAzOS44LThoNWMzNy4xIDAgNjcuMiAyNS44IDY3LjIgNTcuNnYxOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBZGRyZXNzQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjggMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMzUyIDk2YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHptMTEyIDIzNi44YzAgMTAuNi0xMCAxOS4yLTIyLjQgMTkuMkg4Ni40Qzc0IDM4NCA2NCAzNzUuNCA2NCAzNjQuOHYtMTkuMmMwLTMxLjggMzAuMS01Ny42IDY3LjItNTcuNmg1YzEyLjMgNS4xIDI1LjcgOCAzOS44IDhzMjcuNi0yLjkgMzkuOC04aDVjMzcuMSAwIDY3LjIgMjUuOCA2Ny4yIDU3LjZ2MTkuMnpNNTEyIDMxMmMwIDQuNC0zLjYgOC04IDhIMzYwYy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxNDRjNC40IDAgOCAzLjYgOCA4djE2em0wLTY0YzAgNC40LTMuNiA4LTggOEgzNjBjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDE0NGM0LjQgMCA4IDMuNiA4IDh2MTZ6bTAtNjRjMCA0LjQtMy42IDgtOCA4SDM2MGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTQ0YzQuNCAwIDggMy42IDggOHYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWRqdXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMjU2YzAgMTM2Ljk2NiAxMTEuMDMzIDI0OCAyNDggMjQ4czI0OC0xMTEuMDM0IDI0OC0yNDhTMzkyLjk2NiA4IDI1NiA4IDggMTE5LjAzMyA4IDI1NnptMjQ4IDE4NFY3MmMxMDEuNzA1IDAgMTg0IDgyLjMxMSAxODQgMTg0IDAgMTAxLjcwNS04Mi4zMTEgMTg0LTE4NCAxODR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFpckZyZXNoZW5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTYwSDk2QzQzIDE2MCAwIDIwMyAwIDI1NlY0ODBDMCA0OTcuNjI1IDE0LjM3NSA1MTIgMzIgNTEySDI4OEMzMDUuNjI1IDUxMiAzMjAgNDk3LjYyNSAzMjAgNDgwVjI1NkMzMjAgMjAzIDI3NyAxNjAgMjI0IDE2MFpNMTYwIDQxNkMxMTUuODc1IDQxNiA4MCAzODAuMTI1IDgwIDMzNlMxMTUuODc1IDI1NiAxNjAgMjU2UzI0MCAyOTEuODc1IDI0MCAzMzZTMjA0LjEyNSA0MTYgMTYwIDQxNlpNMjI0IDMyQzIyNCAxNC4zNzUgMjA5LjYyNSAwIDE5MiAwSDEyOEMxMTAuMzc1IDAgOTYgMTQuMzc1IDk2IDMyVjEyOEgyMjRWMzJaTTM4MS43ODEgNTEuNTc4QzM4MyA1MC45NjkgMzg0IDQ5LjM1OSAzODQgNDhDMzg0IDQ2LjYyNSAzODMgNDUuMDMxIDM4MS43ODEgNDQuNDIyTDM1MiAzMkwzMzkuNTYyIDIuMjE5QzMzOC45NjkgMSAzMzcuMzc1IDAgMzM2IDBTMzMzLjAzMSAxIDMzMi40MDYgMi4yMTlMMzIwIDMyTDI5MC4yMTkgNDQuNDIyQzI4OSA0NS4wMzEgMjg4IDQ2LjYyNSAyODggNDhDMjg4IDQ5LjM1OSAyODkgNTAuOTY5IDI5MC4yMTkgNTEuNTc4TDMyMCA2NEwzMzIuNDA2IDkzLjc4MUMzMzMuMDMxIDk1IDMzNC42MjUgOTYgMzM2IDk2UzMzOC45NjkgOTUgMzM5LjU2MiA5My43ODFMMzUyIDY0TDM4MS43ODEgNTEuNTc4Wk00NDggNjRMNDYwLjQwNiA5My43ODFDNDYxLjAzMSA5NSA0NjIuNjI1IDk2IDQ2NCA5NlM0NjYuOTY5IDk1IDQ2Ny41NjIgOTMuNzgxTDQ4MCA2NEw1MDkuNzgxIDUxLjU3OEM1MTEgNTAuOTY5IDUxMiA0OS4zNTkgNTEyIDQ4QzUxMiA0Ni42MjUgNTExIDQ1LjAzMSA1MDkuNzgxIDQ0LjQyMkw0ODAgMzJMNDY3LjU2MiAyLjIxOUM0NjYuOTY5IDEgNDY1LjM3NSAwIDQ2NCAwUzQ2MS4wMzEgMSA0NjAuNDA2IDIuMjE5TDQ0OCAzMkw0MTguMjE5IDQ0LjQyMkM0MTcgNDUuMDMxIDQxNiA0Ni42MjUgNDE2IDQ4QzQxNiA0OS4zNTkgNDE3IDUwLjk2OSA0MTguMjE5IDUxLjU3OEw0NDggNjRaTTQ4MCAyMjRMNDY3LjU2MiAxOTQuMjE5QzQ2Ni45NjkgMTkzIDQ2NS4zNzUgMTkyIDQ2NCAxOTJTNDYxLjAzMSAxOTMgNDYwLjQwNiAxOTQuMjE5TDQ0OCAyMjRMNDE4LjIxOSAyMzYuNDIyQzQxNyAyMzcuMDMxIDQxNiAyMzguNjI1IDQxNiAyNDBDNDE2IDI0MS4zNTkgNDE3IDI0Mi45NjkgNDE4LjIxOSAyNDMuNTc4TDQ0OCAyNTZMNDYwLjQwNiAyODUuNzgxQzQ2MS4wMzEgMjg3IDQ2Mi42MjUgMjg4IDQ2NCAyODhTNDY2Ljk2OSAyODcgNDY3LjU2MiAyODUuNzgxTDQ4MCAyNTZMNTA5Ljc4MSAyNDMuNTc4QzUxMSAyNDIuOTY5IDUxMiAyNDEuMzU5IDUxMiAyNDBDNTEyIDIzOC42MjUgNTExIDIzNy4wMzEgNTA5Ljc4MSAyMzYuNDIyTDQ4MCAyMjRaTTQ0NS43ODEgMTQ3LjU3OEM0NDcgMTQ2Ljk2OSA0NDggMTQ1LjM1OSA0NDggMTQ0QzQ0OCAxNDIuNjI1IDQ0NyAxNDEuMDMxIDQ0NS43ODEgMTQwLjQyMkw0MTYgMTI4TDQwMy41NjIgOTguMjE5QzQwMi45NjkgOTcgNDAxLjM3NSA5NiA0MDAgOTZTMzk3LjAzMSA5NyAzOTYuNDA2IDk4LjIxOUwzODQgMTI4TDM1NC4yMTkgMTQwLjQyMkMzNTMgMTQxLjAzMSAzNTIgMTQyLjYyNSAzNTIgMTQ0QzM1MiAxNDUuMzU5IDM1MyAxNDYuOTY5IDM1NC4yMTkgMTQ3LjU3OEwzODQgMTYwTDM5Ni40MDYgMTg5Ljc4MUMzOTcuMDMxIDE5MSAzOTguNjI1IDE5MiA0MDAgMTkyUzQwMi45NjkgMTkxIDQwMy41NjIgMTg5Ljc4MUw0MTYgMTYwTDQ0NS43ODEgMTQ3LjU3OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpZ25DZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDE2MEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wIDI1NkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek0xMDguMSA5NmgyMzEuODFBMTIuMDkgMTIuMDkgMCAwIDAgMzUyIDgzLjlWNDQuMDlBMTIuMDkgMTIuMDkgMCAwIDAgMzM5LjkxIDMySDEwOC4xQTEyLjA5IDEyLjA5IDAgMCAwIDk2IDQ0LjA5VjgzLjlBMTIuMSAxMi4xIDAgMCAwIDEwOC4xIDk2em0yMzEuODEgMjU2QTEyLjA5IDEyLjA5IDAgMCAwIDM1MiAzMzkuOXYtMzkuODFBMTIuMDkgMTIuMDkgMCAwIDAgMzM5LjkxIDI4OEgxMDguMUExMi4wOSAxMi4wOSAwIDAgMCA5NiAzMDAuMDl2MzkuODFhMTIuMSAxMi4xIDAgMCAwIDEyLjEgMTIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpZ25KdXN0aWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMiA0MTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xMjhIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xMjhIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xMjhIMTZBMTYgMTYgMCAwIDAgMCA0OHYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFsaWduTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi44MyAzNTJoMjYyLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDI4OCAzMzkuMTd2LTM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDI3NS4xNyAyODhIMTIuODNBMTIuODIgMTIuODIgMCAwIDAgMCAzMDAuODN2MzguMzRBMTIuODIgMTIuODIgMCAwIDAgMTIuODMgMzUyem0wLTI1NmgyNjIuMzRBMTIuODIgMTIuODIgMCAwIDAgMjg4IDgzLjE3VjQ0LjgzQTEyLjgyIDEyLjgyIDAgMCAwIDI3NS4xNyAzMkgxMi44M0ExMi44MiAxMi44MiAwIDAgMCAwIDQ0LjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDEyLjgzIDk2ek00MzIgMTYwSDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgMjU2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFsaWduUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMjI0aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZ6bTQxNiAxOTJIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMy4xNy0zODRIMTcyLjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE2MCA0NC44M3YzOC4zNEExMi44MiAxMi44MiAwIDAgMCAxNzIuODMgOTZoMjYyLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCA4My4xN1Y0NC44M0ExMi44MiAxMi44MiAwIDAgMCA0MzUuMTcgMzJ6bTAgMjU2SDE3Mi44M0ExMi44MiAxMi44MiAwIDAgMCAxNjAgMzAwLjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDE3Mi44MyAzNTJoMjYyLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCAzMzkuMTd2LTM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQzNS4xNyAyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFsbGVyZ2llcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMTEyYy0xNy42IDAtMzIgMTQuNC0zMiAzMnY3MmMwIDQuNC0zLjYgOC04IDhoLTE2Yy00LjQgMC04LTMuNi04LThWNjRjMC0xNy42LTE0LjQtMzItMzItMzJzLTMyIDE0LjQtMzIgMzJ2MTUyYzAgNC40LTMuNiA4LTggOGgtMTZjLTQuNCAwLTgtMy42LTgtOFYzMmMwLTE3LjYtMTQuNC0zMi0zMi0zMnMtMzIgMTQuNC0zMiAzMnYxODRjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04VjY0YzAtMTcuNi0xNC40LTMyLTMyLTMyUzk2IDQ2LjQgOTYgNjR2MjQxbC0yMy42LTMyLjVjLTEzLTE3LjktMzgtMjEuOC01NS45LTguOHMtMjEuOCAzOC04LjggNTUuOWwxMjUuNiAxNzIuN2M5IDEyLjQgMjMuNSAxOS44IDM4LjggMTkuOGgxOTcuNmMyMi4zIDAgNDEuNi0xNS4zIDQ2LjctMzdsMjYuNS0xMTIuN2MzLjItMTMuNyA0LjktMjguMyA1LjEtNDIuM1YxNDRjMC0xNy42LTE0LjQtMzItMzItMzJ6TTE3NiA0MTZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMC05NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em02NCAxMjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMC05NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em02NCAzMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0zMiA2NGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0zMi0xMjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW1idWxhbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCAzNTJoLTE2VjI0My45YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlMNDk0IDExMC4xYy05LTktMjEuMi0xNC4xLTMzLjktMTQuMUg0MTZWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djMyMGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgxNmMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDEyOGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2ek0xNjAgNDY0Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptMTQ0LTI0OGMwIDQuNC0zLjYgOC04IDhoLTU2djU2YzAgNC40LTMuNiA4LTggOGgtNDhjLTQuNCAwLTgtMy42LTgtOHYtNTZoLTU2Yy00LjQgMC04LTMuNi04LTh2LTQ4YzAtNC40IDMuNi04IDgtOGg1NnYtNTZjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHY1Nmg1NmM0LjQgMCA4IDMuNiA4IDh2NDh6bTE3NiAyNDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em04MC0yMDhINDE2VjE0NGg0NC4xbDk5LjkgOTkuOVYyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFtZXJpY2FuU2lnbkxhbmd1YWdlSW50ZXJwcmV0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5MC41NDcgMTg5LjAzOWMtMjAuMjk1LTEwLjE0OS00NC4xNDctMTEuMTk5LTY0LjczOS0zLjg5IDQyLjYwNiAwIDcxLjIwOCAyMC40NzUgODUuNTc4IDUwLjU3NiA4LjU3NiAxNy44OTktNS4xNDggMzguMDcxLTIzLjYxNyAzOC4wNzEgMTguNDI5IDAgMzIuMjExIDIwLjEzNiAyMy42MTcgMzguMDcxLTE0LjcyNSAzMC44NDYtNDYuMTIzIDUwLjg1NC04MC4yOTggNTAuODU0LS41NTcgMC05NC40NzEtOC42MTUtOTQuNDcxLTguNjE1bC02Ni40MDYgMzMuMzQ3Yy05LjM4NCA0LjY5My0xOS44MTUuMzc5LTIzLjg5NS03Ljc4MUwxLjg2IDI5MC43NDdjLTQuMTY3LTguNjE1LTEuMTExLTE4Ljg5NyA2Ljk0Ni0yMy42MjFsNTguMDcyLTMzLjA2OUwxMDggMTU5Ljg2MWM2LjM5LTU3LjI0NSAzNC43MzEtMTA5Ljc2NyA3OS43NDMtMTQ2LjcyNiAxMS4zOTEtOS40NDggMjguMzQxLTcuNzgxIDM3LjUxIDMuNjEzIDkuNDQ2IDExLjM5NCA3Ljc4IDI4LjA2Ny0zLjYxMiAzNy41MTYtMTIuNTAzIDEwLjU1OS0yMy42MTggMjIuNTA5LTMyLjUwOSAzNS41NyAyMS42NzItMTQuNzI5IDQ2LjY3OS0yNC43MzIgNzQuMTg2LTI4LjA2NyAxNC43MjUtMS45NDUgMjguMDYzIDguMzM2IDI5LjczIDIzLjA2NSAxLjk0NSAxNC43MjgtOC4zMzYgMjguMDY3LTIzLjA2MiAyOS43MzQtMTYuMTE2IDEuOTQ1LTMxLjEyIDcuNTAzLTQ0LjE3OCAxNS4yODQgMjYuMTE0LTUuNzEzIDU4LjcxMi0zLjEzOCA4OC4wNzkgMTEuMTE1IDEzLjMzNiA2LjY2OSAxOC44OTMgMjIuNTA5IDEyLjIyNCAzNS44NDgtNi4zODkgMTMuMDYtMjIuNTA0IDE4LjYxNy0zNS41NjQgMTIuMjI2em0tMjcuMjI5IDY5LjQ3MmMtNi4xMTItMTIuNTA1LTE4LjMzOC0yMC4yODYtMzIuMjMxLTIwLjI4NmEzNS40NiAzNS40NiAwIDAgMC0zNS41NjUgMzUuNTdjMCAyMS40MjggMTcuODA4IDM1LjU3IDM1LjU2NSAzNS41NyAxMy44OTMgMCAyNi4xMTktNy43ODEgMzIuMjMxLTIwLjI4NiA0LjQ0Ni05LjQ0OSAxMy42MTQtMTUuMDA2IDIzLjMzOS0xNS4yODQtOS43MjUtLjI3Ny0xOC44OTMtNS44MzUtMjMuMzM5LTE1LjI4NHptMzc0LjgyMS0zNy4yMzdjNC4xNjggOC42MTUgMS4xMTEgMTguODk3LTYuOTQ2IDIzLjYyMWwtNTguMDcxIDMzLjA2OUw1MzIgMzUyLjE2Yy02LjM5IDU3LjI0NS0zNC43MzEgMTA5Ljc2Ny03OS43NDMgMTQ2LjcyNi0xMC45MzIgOS4xMTItMjcuNzk5IDguMTQ0LTM3LjUxLTMuNjEzLTkuNDQ2LTExLjM5NC03Ljc4LTI4LjA2NyAzLjYxMy0zNy41MTYgMTIuNTAzLTEwLjU1OSAyMy42MTctMjIuNTA5IDMyLjUwOC0zNS41Ny0yMS42NzIgMTQuNzI5LTQ2LjY3OSAyNC43MzItNzQuMTg2IDI4LjA2Ny0xMC4wMjEgMi41MDYtMjcuNTUyLTUuNjQzLTI5LjczLTIzLjA2NS0xLjk0NS0xNC43MjggOC4zMzYtMjguMDY3IDIzLjA2Mi0yOS43MzQgMTYuMTE2LTEuOTQ2IDMxLjEyLTcuNTAzIDQ0LjE3OC0xNS4yODQtMjYuMTE0IDUuNzEzLTU4LjcxMiAzLjEzOC04OC4wNzktMTEuMTE1LTEzLjMzNi02LjY2OS0xOC44OTMtMjIuNTA5LTEyLjIyNC0zNS44NDggNi4zODktMTMuMDYxIDIyLjUwNS0xOC42MTkgMzUuNTY1LTEyLjIyNyAyMC4yOTUgMTAuMTQ5IDQ0LjE0NyAxMS4xOTkgNjQuNzM5IDMuODktNDIuNjA2IDAtNzEuMjA4LTIwLjQ3NS04NS41NzgtNTAuNTc2LTguNTc2LTE3Ljg5OSA1LjE0OC0zOC4wNzEgMjMuNjE3LTM4LjA3MS0xOC40MjkgMC0zMi4yMTEtMjAuMTM2LTIzLjYxNy0zOC4wNzEgMTQuMDMzLTI5LjM5NiA0NC4wMzktNTAuODg3IDgxLjk2Ni01MC44NTRsOTIuODAzIDguNjE1IDY2LjQwNi0zMy4zNDdjOS40MDgtNC43MDQgMTkuODI4LS4zNTQgMjMuODk0IDcuNzgxbDQ0LjQ1NSA4OC45MjZ6bS0yMjkuMjI3LTE4LjYxOGMtMTMuODkzIDAtMjYuMTE5IDcuNzgxLTMyLjIzMSAyMC4yODYtNC40NDYgOS40NDktMTMuNjE0IDE1LjAwNi0yMy4zMzkgMTUuMjg0IDkuNzI1LjI3OCAxOC44OTMgNS44MzYgMjMuMzM5IDE1LjI4NCA2LjExMiAxMi41MDUgMTguMzM4IDIwLjI4NiAzMi4yMzEgMjAuMjg2YTM1LjQ2IDM1LjQ2IDAgMCAwIDM1LjU2NS0zNS41N2MwLTIxLjQyOS0xNy44MDgtMzUuNTctMzUuNTY1LTM1LjU3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmNob3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuOTcxIDM1MmgzMi4zOTRDNjcuMTcyIDQ1NC43MzUgMTgxLjk0NCA1MTIgMjg4IDUxMmMxMDYuMjI5IDAgMjIwLjg1My01Ny4zOCAyNDIuNjM1LTE2MGgzMi4zOTRjMTAuNjkxIDAgMTYuMDQ1LTEyLjkyNiA4LjQ4NS0yMC40ODVsLTY3LjAyOS02Ny4wMjljLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMGwtNjcuMDI5IDY3LjAyOWMtNy41NiA3LjU2LTIuMjA2IDIwLjQ4NSA4LjQ4NSAyMC40ODVoMzUuMTQ2Yy0yMC4yOSA1NC4zMTctODQuOTYzIDg2LjU4OC0xNDQuMTE3IDk0LjAxNVYyNTZoNTJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNTJ2LTUuNDdjMzcuMjgxLTEzLjE3OCA2My45OTUtNDguNzI1IDY0LTkwLjUxOEMzODQuMDA1IDQzLjc3MiAzNDEuNjA1LjczOCAyODkuMzcuMDEgMjM1LjcyMy0uNzM5IDE5MiA0Mi41MjUgMTkyIDk2YzAgNDEuNzk4IDI2LjcxNiA3Ny4zNSA2NCA5MC41M1YxOTJoLTUyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNTJ2MTkwLjAxNWMtNTguOTM2LTcuMzk5LTEyMy44Mi0zOS42NzktMTQ0LjExNy05NC4wMTVoMzUuMTQ2YzEwLjY5MSAwIDE2LjA0NS0xMi45MjYgOC40ODUtMjAuNDg1bC02Ny4wMjktNjcuMDI5Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMNC40ODUgMzMxLjUxNUMtMy4wNzQgMzM5LjA3NCAyLjI4IDM1MiAxMi45NzEgMzUyek0yODggNjRjMTcuNjQ1IDAgMzIgMTQuMzU1IDMyIDMycy0xNC4zNTUgMzItMzIgMzItMzItMTQuMzU1LTMyLTMyIDE0LjM1NS0zMiAzMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVEb3VibGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0MyAyNTYuM0w3IDEyMC4zYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWwyMi42LTIyLjZjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsOTYuNCA5Ni40IDk2LjQtOTYuNGM5LjQtOS40IDI0LjYtOS40IDMzLjkgMEwzMTMgODYuM2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtMTM2IDEzNmMtOS40IDkuNS0yNC42IDkuNS0zNCAuMXptMzQgMTkybDEzNi0xMzZjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlsLTIyLjYtMjIuNmMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMMTYwIDM1Mi4xbC05Ni40LTk2LjRjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDcgMjc4LjNjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDEzNiAxMzZjOS40IDkuNSAyNC42IDkuNSAzNCAuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVEb3VibGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyMy43IDIzOWwxMzYtMTM2YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDIyLjYgMjIuNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUwzMTkuOSAyNTZsOTYuNCA5Ni40YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45TDM5My43IDQwOWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTEzNi0xMzZjLTkuNS05LjQtOS41LTI0LjYtLjEtMzR6bS0xOTIgMzRsMTM2IDEzNmM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwyMi42LTIyLjZjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlMMTI3LjkgMjU2bDk2LjQtOTYuNGM5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyMDEuNyAxMDNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC0xMzYgMTM2Yy05LjUgOS40LTkuNSAyNC42LS4xIDM0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdsZURvdWJsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNC4zIDI3M2wtMTM2IDEzNmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTIyLjYtMjIuNmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsOTYuNC05Ni40LTk2LjQtOTYuNGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlMNTQuMyAxMDNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTM2IDEzNmM5LjUgOS40IDkuNSAyNC42LjEgMzR6bTE5Mi0zNGwtMTM2LTEzNmMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTIyLjYgMjIuNmMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsOTYuNCA5Ni40LTk2LjQgOTYuNGMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsMjIuNiAyMi42YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDEzNi0xMzZjOS40LTkuMiA5LjQtMjQuNCAwLTMzLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlRG91YmxlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc3IDI1NS43bDEzNiAxMzZjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTIyLjYgMjIuNmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMTYwIDM1MS45bC05Ni40IDk2LjRjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDcgNDI1LjdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDEzNi0xMzZjOS40LTkuNSAyNC42LTkuNSAzNC0uMXptLTM0LTE5Mkw3IDE5OS43Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWwyMi42IDIyLjZjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsOTYuNC05Ni40IDk2LjQgOTYuNGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwyMi42LTIyLjZjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlsLTEzNi0xMzZjLTkuMi05LjQtMjQuNC05LjQtMzMuOCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQzIDM1Mi4zTDcgMjE2LjNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDIyLjYtMjIuNmM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw5Ni40IDk2LjQgOTYuNC05Ni40YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDIyLjYgMjIuNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtMTM2IDEzNmMtOS4yIDkuNC0yNC40IDkuNC0zMy44IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMS43IDIzOWwxMzYtMTM2YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDIyLjYgMjIuNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUwxMjcuOSAyNTZsOTYuNCA5Ni40YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45TDIwMS43IDQwOWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTEzNi0xMzZjLTkuNS05LjQtOS41LTI0LjYtLjEtMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0LjMgMjczbC0xMzYgMTM2Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtMjIuNi0yMi42Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw5Ni40LTk2LjQtOTYuNC05Ni40Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOUw1NC4zIDEwM2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwxMzYgMTM2YzkuNSA5LjQgOS41IDI0LjYuMSAzNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzcgMTU5LjdsMTM2IDEzNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtMjIuNiAyMi42Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwxNjAgMjU1LjlsLTk2LjQgOTYuNGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMNyAzMjkuN2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsMTM2LTEzNmM5LjQtOS41IDI0LjYtOS41IDM0LS4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4ek0xMzYgMjQwYzAtOS4zIDQuMS0xNy41IDEwLjUtMjMuNGwtMzEtOS4zYy04LjUtMi41LTEzLjMtMTEuNS0xMC43LTE5LjkgMi41LTguNSAxMS40LTEzLjIgMTkuOS0xMC43bDgwIDI0YzguNSAyLjUgMTMuMyAxMS41IDEwLjcgMTkuOS0yLjEgNi45LTguNCAxMS40LTE1LjMgMTEuNC0uNSAwLTEuMS0uMi0xLjctLjIuNyAyLjcgMS43IDUuMyAxLjcgOC4yIDAgMTcuNy0xNC4zIDMyLTMyIDMyUzEzNiAyNTcuNyAxMzYgMjQwem0xNjggMTU0LjJjLTI3LjgtMzMuNC04NC4yLTMzLjQtMTEyLjEgMC0xMy41IDE2LjMtMzguMi00LjItMjQuNi0yMC41IDIwLTI0IDQ5LjQtMzcuOCA4MC42LTM3LjhzNjAuNiAxMy44IDgwLjYgMzcuOGMxMy44IDE2LjUtMTEuMSAzNi42LTI0LjUgMjAuNXptNzYuNi0xODYuOWwtMzEgOS4zYzYuMyA1LjggMTAuNSAxNC4xIDEwLjUgMjMuNCAwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmMwLTIuOS45LTUuNiAxLjctOC4yLS42LjEtMS4xLjItMS43LjItNi45IDAtMTMuMi00LjUtMTUuMy0xMS40LTIuNS04LjUgMi4zLTE3LjQgMTAuNy0xOS45bDgwLTI0YzguNC0yLjUgMTcuNCAyLjMgMTkuOSAxMC43IDIuNSA4LjUtMi4zIDE3LjQtMTAuOCAxOS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmtoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5NiAyNTZoLTQ0LjYyQzI3Mi40NiAyMjIuMDEgMjg4IDE4MS42NSAyODggMTQ0IDI4OCA1NS42MyAyMzAuNjkgMCAxNjAgMFMzMiA1NS42MyAzMiAxNDRjMCAzNy42NSAxNS41NCA3OC4wMSAzNi42MiAxMTJIMjRjLTEzLjI1IDAtMjQgMTAuNzQtMjQgMjR2MzJjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGg5NnYxNTJjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGgzMmMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0VjMzNmg5NmMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di0zMmMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0ek0xNjAgODBjMjkuNjEgMCA0OCAyNC41MiA0OCA2NCAwIDM0LjY2LTI3LjE0IDc4LjE0LTQ4IDEwMC44Ny0yMC44Ni0yMi43Mi00OC02Ni4yMS00OC0xMDAuODcgMC0zOS40OCAxOC4zOS02NCA0OC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXBwbGVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUwLjg1IDEyOWMyNS45NyA0LjY3IDQ3LjI3IDE4LjY3IDYzLjkyIDQyIDE0LjY1IDIwLjY3IDI0LjY0IDQ2LjY3IDI5Ljk2IDc4IDQuNjcgMjguNjcgNC4zMiA1Ny4zMy0xIDg2LTcuOTkgNDcuMzMtMjMuOTcgODctNDcuOTQgMTE5LTI4LjY0IDM4LjY3LTY0LjU5IDU4LTEwNy44NyA1OC0xMC42NiAwLTIyLjMtMy4zMy0zNC45Ni0xMC04LjY2LTUuMzMtMTguMzEtOC0yOC45Ny04cy0yMC4zIDIuNjctMjguOTcgOGMtMTIuNjYgNi42Ny0yNC4zIDEwLTM0Ljk2IDEwLTQzLjI4IDAtNzkuMjMtMTkuMzMtMTA3Ljg3LTU4LTIzLjk3LTMyLTM5Ljk1LTcxLjY3LTQ3Ljk0LTExOS01LjMyLTI4LjY3LTUuNjctNTcuMzMtMS04NiA1LjMyLTMxLjMzIDE1LjMxLTU3LjMzIDI5Ljk2LTc4IDE2LjY1LTIzLjMzIDM3Ljk1LTM3LjMzIDYzLjkyLTQyIDE1Ljk4LTIuNjcgMzcuOTUtLjMzIDY1LjkyIDcgMjMuOTcgNi42NyA0NC4yOCAxNC42NyA2MC45MyAyNCAxNi42NS05LjMzIDM2Ljk2LTE3LjMzIDYwLjkzLTI0IDI3Ljk4LTcuMzMgNDkuOTYtOS42NyA2NS45NC03em0tNTQuOTQtNDFjLTkuMzIgOC42Ny0yMS42NSAxNS0zNi45NiAxOS0xMC42NiAzLjMzLTIyLjMgNS0zNC45NiA1bC0xNC45OC0xYy0xLjMzLTkuMzMtMS4zMy0yMCAwLTMyIDIuNjctMjQgMTAuMzItNDIuMzMgMjIuOTctNTUgOS4zMi04LjY3IDIxLjY1LTE1IDM2Ljk2LTE5IDEwLjY2LTMuMzMgMjIuMy01IDM0Ljk2LTVsMTQuOTggMSAxIDE1YzAgMTIuNjctMS42NyAyNC4zMy00Ljk5IDM1LTMuOTkgMTUuMzMtMTAuMzEgMjcuNjctMTguOTggMzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDM4NGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjBIMzJ2Mjg4em0xNjAtMjEyYzAtNi42IDUuNC0xMiAxMi0xMmgxMDRjNi42IDAgMTIgNS40IDEyIDEydjhjMCA2LjYtNS40IDEyLTEyIDEySDIwNGMtNi42IDAtMTItNS40LTEyLTEydi04ek00ODAgMzJIMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoNDgwYzguOCAwIDE2LTcuMiAxNi0xNlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJjaHdheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjAgNDQ4aC0xNlY5NkgzMnYzNTJIMTYuMDJjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2SDE3NmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYzMjBjMC01My4wMiA0Mi45OC05NiA5Ni05NnM5NiA0Mi45OCA5NiA5NmwuMDIgMTYwdjE2YzAgOC44NCA3LjE2IDE2IDE2IDE2SDU2MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bTAtNDQ4SDE2QzcuMTYgMCAwIDcuMTYgMCAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg1NDRjOC44NCAwIDE2LTcuMTYgMTYtMTZWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93QWx0Q2lyY2xlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6TTIxMiAxNDB2MTE2aC03MC45Yy0xMC43IDAtMTYuMSAxMy04LjUgMjAuNWwxMTQuOSAxMTQuM2M0LjcgNC43IDEyLjIgNC43IDE2LjkgMGwxMTQuOS0xMTQuM2M3LjYtNy42IDIuMi0yMC41LTguNS0yMC41SDMwMFYxNDBjMC02LjYtNS40LTEyLTEyLTEyaC02NGMtNi42IDAtMTIgNS40LTEyIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0FsdENpcmNsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUwNEMxMTkgNTA0IDggMzkzIDggMjU2UzExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OC0xMTEgMjQ4LTI0OCAyNDh6bTExNi0yOTJIMjU2di03MC45YzAtMTAuNy0xMy0xNi4xLTIwLjUtOC41TDEyMS4yIDI0Ny41Yy00LjcgNC43LTQuNyAxMi4yIDAgMTYuOWwxMTQuMyAxMTQuOWM3LjYgNy42IDIwLjUgMi4yIDIwLjUtOC41VjMwMGgxMTZjNi42IDAgMTItNS40IDEyLTEydi02NGMwLTYuNi01LjQtMTItMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93QWx0Q2lyY2xlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhjMTM3IDAgMjQ4IDExMSAyNDggMjQ4UzM5MyA1MDQgMjU2IDUwNCA4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHpNMTQwIDMwMGgxMTZ2NzAuOWMwIDEwLjcgMTMgMTYuMSAyMC41IDguNWwxMTQuMy0xMTQuOWM0LjctNC43IDQuNy0xMi4yIDAtMTYuOWwtMTE0LjMtMTE1Yy03LjYtNy42LTIwLjUtMi4yLTIwLjUgOC41VjIxMkgxNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY2NGMwIDYuNiA1LjQgMTIgMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93QWx0Q2lyY2xlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyNTZDOCAxMTkgMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NnptMjkyIDExNlYyNTZoNzAuOWMxMC43IDAgMTYuMS0xMyA4LjUtMjAuNUwyNjQuNSAxMjEuMmMtNC43LTQuNy0xMi4yLTQuNy0xNi45IDBsLTExNSAxMTQuM2MtNy42IDcuNi0yLjIgMjAuNSA4LjUgMjAuNUgyMTJ2MTE2YzAgNi42IDUuNCAxMiAxMiAxMmg2NGM2LjYgMCAxMi01LjQgMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93Q2lyY2xlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6bS0xNDMuNi0yOC45TDI4OCAzMDIuNlYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRoLTE2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxODIuNmwtNzIuNC03NS41Yy05LjMtOS43LTI0LjgtOS45LTM0LjMtLjRsLTEwLjkgMTFjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45TDIzOSA0MDQuM2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwxMzIuNy0xMzIuN2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOWwtMTAuOS0xMWMtOS41LTkuNS0yNS05LjMtMzQuMy40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0NpcmNsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUwNEMxMTkgNTA0IDggMzkzIDggMjU2UzExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OC0xMTEgMjQ4LTI0OCAyNDh6bTI4LjktMTQzLjZMMjA5LjQgMjg4SDM5MmMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtMTZjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjA5LjRsNzUuNS03Mi40YzkuNy05LjMgOS45LTI0LjguNC0zNC4zbC0xMS0xMC45Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwxMDcuNyAyMzljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDEzMi43IDEzMi43YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDExLTEwLjljOS41LTkuNSA5LjMtMjUtLjQtMzQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dDaXJjbGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOGMxMzcgMCAyNDggMTExIDI0OCAyNDhTMzkzIDUwNCAyNTYgNTA0IDggMzkzIDggMjU2IDExOSA4IDI1NiA4em0tMjguOSAxNDMuNmw3NS41IDcyLjRIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxNmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxODIuNmwtNzUuNSA3Mi40Yy05LjcgOS4zLTkuOSAyNC44LS40IDM0LjNsMTEgMTAuOWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMEw0MDQuMyAyNzNjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlMMjcxLjYgMTA2LjNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC0xMSAxMC45Yy05LjUgOS42LTkuMyAyNS4xLjQgMzQuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dDaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDI1NkM4IDExOSAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDgtMTExIDI0OC0yNDggMjQ4UzggMzkzIDggMjU2em0xNDMuNiAyOC45bDcyLjQtNzUuNVYzOTJjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjA5LjRsNzIuNCA3NS41YzkuMyA5LjcgMjQuOCA5LjkgMzQuMy40bDEwLjktMTFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlMMjczIDEwNy43Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwxMDYuMyAyNDAuNGMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsMTAuOSAxMWM5LjYgOS41IDI1LjEgOS4zIDM0LjQtLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTMuMSAyMjIuNWwyMi4yIDIyLjJjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMMjQxIDQ3M2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMTIuNyAyNzguNmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsMjIuMi0yMi4yYzkuNS05LjUgMjUtOS4zIDM0LjMuNEwxODQgMzQzLjRWNTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjR2Mjg3LjRsMTE0LjgtMTIwLjVjOS4zLTkuOCAyNC44LTEwIDM0LjMtLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTcuNSA0NDUuMWwtMjIuMiAyMi4yYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEw3IDI3M2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlMMjAxLjQgNDQuN2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwyMi4yIDIyLjJjOS41IDkuNSA5LjMgMjUtLjQgMzQuM0wxMzYuNiAyMTZINDI0YzEzLjMgMCAyNCAxMC43IDI0IDI0djMyYzAgMTMuMy0xMC43IDI0LTI0IDI0SDEzNi42bDEyMC41IDExNC44YzkuOCA5LjMgMTAgMjQuOC40IDM0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkwLjUgNjYuOWwyMi4yLTIyLjJjOS40LTkuNCAyNC42LTkuNCAzMy45IDBMNDQxIDIzOWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUwyNDYuNiA0NjcuM2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTIyLjItMjIuMmMtOS41LTkuNS05LjMtMjUgLjQtMzQuM0wzMTEuNCAyOTZIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0di0zMmMwLTEzLjMgMTAuNy0yNCAyNC0yNGgyODcuNEwxOTAuOSAxMDEuMmMtOS44LTkuMy0xMC0yNC44LS40LTM0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQuOSAyODkuNWwtMjIuMi0yMi4yYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOUwyMDcgMzljOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTk0LjMgMTk0LjNjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMNDEzIDI4OS40Yy05LjUgOS41LTI1IDkuMy0zNC4zLS40TDI2NCAxNjguNlY0NTZjMCAxMy4zLTEwLjcgMjQtMjQgMjRoLTMyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYxNjguNkw2OS4yIDI4OS4xYy05LjMgOS44LTI0LjggMTAtMzQuMy40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NBbHRIIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3Ny45NDEgMTY5Ljk0MVYyMTZIMTM0LjA1OXYtNDYuMDU5YzAtMjEuMzgyLTI1Ljg1MS0zMi4wOS00MC45NzEtMTYuOTcxTDcuMDI5IDIzOS4wMjljLTkuMzczIDkuMzczLTkuMzczIDI0LjU2OCAwIDMzLjk0MWw4Ni4wNTkgODYuMDU5YzE1LjExOSAxNS4xMTkgNDAuOTcxIDQuNDExIDQwLjk3MS0xNi45NzFWMjk2aDI0My44ODJ2NDYuMDU5YzAgMjEuMzgyIDI1Ljg1MSAzMi4wOSA0MC45NzEgMTYuOTcxbDg2LjA1OS04Ni4wNTljOS4zNzMtOS4zNzMgOS4zNzMtMjQuNTY4IDAtMzMuOTQxbC04Ni4wNTktODYuMDU5Yy0xNS4xMTktMTUuMTItNDAuOTcxLTQuNDEyLTQwLjk3MSAxNi45N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzQWx0ViAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTQuMDU5IDM3Ny45NDFIMTY4VjEzNC4wNTloNDYuMDU5YzIxLjM4MiAwIDMyLjA5LTI1Ljg1MSAxNi45NzEtNDAuOTcxTDE0NC45NzEgNy4wMjljLTkuMzczLTkuMzczLTI0LjU2OC05LjM3My0zMy45NDEgMEwyNC45NzEgOTMuMDg4Yy0xNS4xMTkgMTUuMTE5LTQuNDExIDQwLjk3MSAxNi45NzEgNDAuOTcxSDg4djI0My44ODJINDEuOTQxYy0yMS4zODIgMC0zMi4wOSAyNS44NTEtMTYuOTcxIDQwLjk3MWw4Ni4wNTkgODYuMDU5YzkuMzczIDkuMzczIDI0LjU2OCA5LjM3MyAzMy45NDEgMGw4Ni4wNTktODYuMDU5YzE1LjEyLTE1LjExOSA0LjQxMi00MC45NzEtMTYuOTctNDAuOTcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyLjIwMSA0MjUuNzc1bC03OS4xOTYgNzkuMTk2Yy05LjM3MyA5LjM3My0yNC41NjggOS4zNzMtMzMuOTQxIDBsLTc5LjE5Ni03OS4xOTZjLTE1LjExOS0xNS4xMTktNC40MTEtNDAuOTcxIDE2Ljk3MS00MC45N2g1MS4xNjJMMjI4IDI4NEgxMjcuMTk2djUxLjE2MmMwIDIxLjM4Mi0yNS44NTEgMzIuMDktNDAuOTcxIDE2Ljk3MUw3LjAyOSAyNzIuOTM3Yy05LjM3My05LjM3My05LjM3My0yNC41NjkgMC0zMy45NDFMODYuMjI1IDE1OS44YzE1LjExOS0xNS4xMTkgNDAuOTcxLTQuNDExIDQwLjk3MSAxNi45NzFWMjI4SDIyOFYxMjcuMTk2aC01MS4yM2MtMjEuMzgyIDAtMzIuMDktMjUuODUxLTE2Ljk3MS00MC45NzFsNzkuMTk2LTc5LjE5NmM5LjM3My05LjM3MyAyNC41NjgtOS4zNzMgMzMuOTQxIDBsNzkuMTk2IDc5LjE5NmMxNS4xMTkgMTUuMTE5IDQuNDExIDQwLjk3MS0xNi45NzEgNDAuOTcxaC01MS4xNjJWMjI4aDEwMC44MDR2LTUxLjE2MmMwLTIxLjM4MiAyNS44NTEtMzIuMDkgNDAuOTctMTYuOTcxbDc5LjE5NiA3OS4xOTZjOS4zNzMgOS4zNzMgOS4zNzMgMjQuNTY5IDAgMzMuOTQxTDQyNS43NzMgMzUyLjJjLTE1LjExOSAxNS4xMTktNDAuOTcxIDQuNDExLTQwLjk3LTE2Ljk3MVYyODRIMjg0djEwMC44MDRoNTEuMjNjMjEuMzgyIDAgMzIuMDkgMjUuODUxIDE2Ljk3MSA0MC45NzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFzc2lzdGl2ZUxpc3RlbmluZ1N5c3RlbXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE2IDI2MGMwIDE1LjQ2NC0xMi41MzYgMjgtMjggMjhzLTI4LTEyLjUzNi0yOC0yOGMwLTQ0LjExMiAzNS44ODgtODAgODAtODBzODAgMzUuODg4IDgwIDgwYzAgMTUuNDY0LTEyLjUzNiAyOC0yOCAyOHMtMjgtMTIuNTM2LTI4LTI4YzAtMTMuMjM0LTEwLjc2Ny0yNC0yNC0yNHMtMjQgMTAuNzY2LTI0IDI0em0yNC0xNzZjLTk3LjA0NyAwLTE3NiA3OC45NTMtMTc2IDE3NiAwIDE1LjQ2NCAxMi41MzYgMjggMjggMjhzMjgtMTIuNTM2IDI4LTI4YzAtNjYuMTY4IDUzLjgzMi0xMjAgMTIwLTEyMHMxMjAgNTMuODMyIDEyMCAxMjBjMCA3NS4xNjQtNzEuMDA5IDcwLjMxMS03MS45OTcgMTQzLjYyMkwyODggNDA0YzAgMjguNjczLTIzLjMyNyA1Mi01MiA1Mi0xNS40NjQgMC0yOCAxMi41MzYtMjggMjhzMTIuNTM2IDI4IDI4IDI4YzU5LjQ3NSAwIDEwNy44NzYtNDguMzI4IDEwOC0xMDcuNzc0LjU5NS0zNC40MjggNzItNDguMjQgNzItMTQ0LjIyNiAwLTk3LjA0Ny03OC45NTMtMTc2LTE3Ni0xNzZ6bS04MCAyMzZjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnpNMzIgNDQ4Yy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTQ4MC0xODcuOTkzYzAtMS41MTgtLjAxMi0zLjAyNS0uMDQ1LTQuNTMxQzUxMC4wNzYgMTQwLjUyNSA0MzYuMTU3IDM4LjQ3IDMyNy45OTQgMS41MTFjLTE0LjYzMy00Ljk5OC0zMC41NDkgMi44MDktMzUuNTUgMTcuNDQyLTUgMTQuNjMzIDIuODEgMzAuNTQ5IDE3LjQ0MiAzNS41NSA4NS45MDYgMjkuMzU0IDE0NC42MSAxMTAuNTEzIDE0Ni4wNzcgMjAxLjk1M2wuMDAzLjE4OGMuMDI2IDEuMTE4LjAzMyAyLjIzNi4wMzMgMy4zNjMgMCAxNS40NjQgMTIuNTM2IDI4IDI4IDI4czI4LjAwMS0xMi41MzYgMjguMDAxLTI4ek0xNTIuOTcxIDQzOS4wMjlsLTgwLTgwTDM5LjAzIDM5Mi45N2w4MCA4MCAzMy45NDEtMzMuOTQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBc3RlcmlzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzguMjEgMzM0LjA5M0wzMzYgMjU2bDE0Mi4yMS03OC4wOTNjMTEuNzk1LTYuNDc3IDE1Ljk2MS0yMS4zODQgOS4yMzItMzMuMDM3bC0xOS40OC0zMy43NDFjLTYuNzI4LTExLjY1My0yMS43Mi0xNS40OTktMzMuMjI3LTguNTIzTDI5NiAxODYuNzE4bDMuNDc1LTE2Mi4yMDRDMjk5Ljc2MyAxMS4wNjEgMjg4LjkzNyAwIDI3NS40OCAwaC0zOC45NmMtMTMuNDU2IDAtMjQuMjgzIDExLjA2MS0yMy45OTQgMjQuNTE0TDIxNiAxODYuNzE4IDc3LjI2NSAxMDIuNjA3Yy0xMS41MDYtNi45NzYtMjYuNDk5LTMuMTMtMzMuMjI3IDguNTIzbC0xOS40OCAzMy43NDFjLTYuNzI4IDExLjY1My0yLjU2MiAyNi41NiA5LjIzMyAzMy4wMzdMMTc2IDI1NiAzMy43OSAzMzQuMDkzYy0xMS43OTUgNi40NzctMTUuOTYxIDIxLjM4NC05LjIzMiAzMy4wMzdsMTkuNDggMzMuNzQxYzYuNzI4IDExLjY1MyAyMS43MjEgMTUuNDk5IDMzLjIyNyA4LjUyM0wyMTYgMzI1LjI4MmwtMy40NzUgMTYyLjIwNEMyMTIuMjM3IDUwMC45MzkgMjIzLjA2NCA1MTIgMjM2LjUyIDUxMmgzOC45NjFjMTMuNDU2IDAgMjQuMjgzLTExLjA2MSAyMy45OTUtMjQuNTE0TDI5NiAzMjUuMjgybDEzOC43MzUgODQuMTExYzExLjUwNiA2Ljk3NiAyNi40OTkgMy4xMyAzMy4yMjctOC41MjNsMTkuNDgtMzMuNzQxYzYuNzI4LTExLjY1MyAyLjU2My0yNi41NTktOS4yMzItMzMuMDM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTguOTQxIDggOCAxMTguOTE5IDggMjU2YzAgMTM3LjA1OSAxMTAuOTE5IDI0OCAyNDggMjQ4IDQ4LjE1NCAwIDk1LjM0Mi0xNC4xNCAxMzUuNDA4LTQwLjIyMyAxMi4wMDUtNy44MTUgMTQuNjI1LTI0LjI4OCA1LjU1Mi0zNS4zNzJsLTEwLjE3Ny0xMi40MzNjLTcuNjcxLTkuMzcxLTIxLjE3OS0xMS42NjctMzEuMzczLTUuMTI5QzMyNS45MiA0MjkuNzU3IDI5MS4zMTQgNDQwIDI1NiA0NDBjLTEwMS40NTggMC0xODQtODIuNTQyLTE4NC0xODRTMTU0LjU0MiA3MiAyNTYgNzJjMTAwLjEzOSAwIDE4NCA1Ny42MTkgMTg0IDE2MCAwIDM4Ljc4Ni0yMS4wOTMgNzkuNzQyLTU4LjE3IDgzLjY5My0xNy4zNDktLjQ1NC0xNi45MS0xMi44NTctMTMuNDc2LTMwLjAyNGwyMy40MzMtMTIxLjExQzM5NC42NTMgMTQ5Ljc1IDM4My4zMDggMTM2IDM2OC4yMjUgMTM2aC00NC45ODFhMTMuNTE4IDEzLjUxOCAwIDAgMC0xMy40MzIgMTEuOTkzbC0uMDEuMDkyYy0xNC42OTctMTcuOTAxLTQwLjQ0OC0yMS43NzUtNTkuOTcxLTIxLjc3NS03NC41OCAwLTEzNy44MzEgNjIuMjM0LTEzNy44MzEgMTUxLjQ2IDAgNjUuMzAzIDM2Ljc4NSAxMDUuODcgOTYgMTA1Ljg3IDI2Ljk4NCAwIDU3LjM2OS0xNS42MzcgNzQuOTkxLTM4LjMzMyA5LjUyMiAzNC4xMDQgNDAuNjEzIDM0LjEwMyA3MC43MSAzNC4xMDNDNDYyLjYwOSAzNzkuNDEgNTA0IDMwNy43OTggNTA0IDIzMiA1MDQgOTUuNjUzIDM5NC4wMjMgOCAyNTYgOHptLTIxLjY4IDMwNC40M2MtMjIuMjQ5IDAtMzYuMDctMTUuNjIzLTM2LjA3LTQwLjc3MSAwLTQ0Ljk5MyAzMC43NzktNzIuNzI5IDU4LjYzLTcyLjcyOSAyMi4yOTIgMCAzNS42MDEgMTUuMjQxIDM1LjYwMSA0MC43NyAwIDQ1LjA2MS0zMy44NzUgNzIuNzMtNTguMTYxIDcyLjczelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdGxhcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguMzggMjA4aC0zOS4wOWMtMS40OSAyNy4wMy02LjU0IDUxLjM1LTE0LjIxIDcwLjQxIDI3LjcxLTEzLjI0IDQ4LjAyLTM5LjE5IDUzLjMtNzAuNDF6bTAtMzJjLTUuMjktMzEuMjItMjUuNTktNTcuMTctNTMuMy03MC40MSA3LjY4IDE5LjA2IDEyLjcyIDQzLjM4IDE0LjIxIDcwLjQxaDM5LjA5ek0yMjQgOTcuMzFjLTcuNjkgNy40NS0yMC43NyAzNC40Mi0yMy40MyA3OC42OWg0Ni44N2MtMi42Ny00NC4yNi0xNS43NS03MS4yNC0yMy40NC03OC42OXptLTQxLjA4IDguMjhjLTI3LjcxIDEzLjI0LTQ4LjAyIDM5LjE5LTUzLjMgNzAuNDFoMzkuMDljMS40OS0yNy4wMyA2LjUzLTUxLjM1IDE0LjIxLTcwLjQxem0wIDE3Mi44MmMtNy42OC0xOS4wNi0xMi43Mi00My4zOC0xNC4yMS03MC40MWgtMzkuMDljNS4yOCAzMS4yMiAyNS41OSA1Ny4xNyA1My4zIDcwLjQxek0yNDcuNDMgMjA4aC00Ni44N2MyLjY2IDQ0LjI2IDE1Ljc0IDcxLjI0IDIzLjQzIDc4LjY5IDcuNy03LjQ1IDIwLjc4LTM0LjQzIDIzLjQ0LTc4LjY5ek00NDggMzU4LjRWMjUuNmMwLTE2LTkuNi0yNS42LTI1LjYtMjUuNkg5NkM0MS42IDAgMCA0MS42IDAgOTZ2MzIwYzAgNTQuNCA0MS42IDk2IDk2IDk2aDMyNi40YzEyLjggMCAyNS42LTkuNiAyNS42LTI1LjZ2LTE2YzAtNi40LTMuMi0xMi44LTkuNi0xOS4yLTMuMi0xNi0zLjItNjAuOCAwLTczLjYgNi40LTMuMiA5LjYtOS42IDkuNi0xOS4yek0yMjQgNjRjNzAuNjkgMCAxMjggNTcuMzEgMTI4IDEyOHMtNTcuMzEgMTI4LTEyOCAxMjhTOTYgMjYyLjY5IDk2IDE5MiAxNTMuMzEgNjQgMjI0IDY0em0xNjAgMzg0SDk2Yy0xOS4yIDAtMzItMTIuOC0zMi0zMnMxNi0zMiAzMi0zMmgyODh2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF0b20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIzLjk5OTA4LDIyNGEzMiwzMiwwLDEsMCwzMi4wMDc4MiwzMkEzMi4wNjQzMSwzMi4wNjQzMSwwLDAsMCwyMjMuOTk5MDgsMjI0Wm0yMTQuMTcyLTk2Yy0xMC44NzctMTkuNS00MC41MDk3OS01MC43NS0xMTYuMjc1NDQtNDEuODc1QzMwMC4zOTE2OCwzNC44NzUsMjY3LjYzMzg2LDAsMjIzLjk5OTA4LDBzLTc2LjM5MDY2LDM0Ljg3NS05Ny44OTY1Myw4Ni4xMjVDNTAuMzM2OSw3Ny4zNzUsMjAuNzA2LDEwOC41LDkuODI5MDcsMTI4LTYuNTQ5ODQsMTU3LjM3NS01LjE3NDg0LDIwMS4xMjUsMzQuOTU4LDI1Ni01LjE3NDg0LDMxMC44NzUtNi41NDk4NCwzNTQuNjI1LDkuODI5MDcsMzg0YzI5LjEzMDg3LDUyLjM3NSwxMDEuNjQ2NTIsNDMuNjI1LDExNi4yNzM0OCw0MS44NzVDMTQ3LjYwODQyLDQ3Ny4xMjUsMTgwLjM2NDI5LDUxMiwyMjMuOTk5MDgsNTEyczc2LjM5MjYtMzQuODc1LDk3Ljg5NjUyLTg2LjEyNWMxNC42Mjg5MSwxLjc1LDg3LjE0NDU2LDEwLjUsMTE2LjI3NTQ0LTQxLjg3NUM0NTQuNTUsMzU0LjYyNSw0NTMuMTc1LDMxMC44NzUsNDEzLjA0MDE3LDI1Niw0NTMuMTc1LDIwMS4xMjUsNDU0LjU1LDE1Ny4zNzUsNDM4LjE3MSwxMjhaTTYzLjMzODg2LDM1MmMtNC03LjI1LS4xMjUtMjQuNzUsMTUuMDAzOTEtNDguMjUsNi44NzY5NSw2LjUsMTQuMTI4OTEsMTIuODc1LDIxLjg4MDg3LDE5LjEyNSwxLjYyNSwxMy43NSw0LDI3LjEyNSw2Ljc1LDQwLjEyNUM4Mi4zNDQ3MiwzNjMuODc1LDY3LjA5MDgxLDM1OC42MjUsNjMuMzM4ODYsMzUyWm0zNi44ODQ3OC0xNjIuODc1Yy03Ljc1Miw2LjI1LTE1LjAwMzkyLDEyLjYyNS0yMS44ODA4NywxOS4xMjUtMTUuMTI4OTEtMjMuNS0xOS4wMDM5Mi00MS0xNS4wMDM5MS00OC4yNSwzLjM3Ny02LjEyNSwxNi4zNzg5MS0xMS41LDM3Ljg4NDc4LTExLjUsMS43NSwwLDMuODc1LjM3NSw1Ljc1LjM3NUMxMDQuMDk4NjQsMTYyLjI1LDEwMS44NDg2NCwxNzUuNjI1LDEwMC4yMjM2NCwxODkuMTI1Wk0yMjMuOTk5MDgsNjRjOS41MDE5NSwwLDIyLjI1NTg2LDEzLjUsMzMuODgyODIsMzcuMjUtMTEuMjUyLDMuNzUtMjIuNTAzOTEsOC0zMy44ODI4MiwxMi44NzUtMTEuMzc3LTQuODc1LTIyLjYyODkyLTkuMTI1LTMzLjg4MjgzLTEyLjg3NUMyMDEuNzQ1MTYsNzcuNSwyMTQuNDk3MTIsNjQsMjIzLjk5OTA4LDY0Wm0wLDM4NGMtOS41MDIsMC0yMi4yNTM5Mi0xMy41LTMzLjg4MjgzLTM3LjI1LDExLjI1MzkxLTMuNzUsMjIuNTA1ODctOCwzMy44ODI4My0xMi44NzVDMjM1LjM3OCw0MDIuNzUsMjQ2LjYyOTk0LDQwNywyNTcuODgxOSw0MTAuNzUsMjQ2LjI1NDk0LDQzNC41LDIzMy41MDEsNDQ4LDIyMy45OTkwOCw0NDhabTAtMTEyYTgwLDgwLDAsMSwxLDgwLTgwQTgwLjAwMDIzLDgwLjAwMDIzLDAsMCwxLDIyMy45OTkwOCwzMzZaTTM4NC42NTkzLDM1MmMtMy42MjUsNi42MjUtMTkuMDAzOTIsMTEuODc1LTQzLjYzNDc5LDExLDIuNzUyLTEzLDUuMTI3LTI2LjM3NSw2Ljc1Mi00MC4xMjUsNy43NTE5NS02LjI1LDE1LjAwMzkxLTEyLjYyNSwyMS44Nzg5MS0xOS4xMjVDMzg0Ljc4NDMsMzI3LjI1LDM4OC42NTkzLDM0NC43NSwzODQuNjU5MywzNTJaTTM2OS42NTUzOCwyMDguMjVjLTYuODc1LTYuNS0xNC4xMjctMTIuODc1LTIxLjg3ODkxLTE5LjEyNS0xLjYyNS0xMy41LTMuODc1LTI2Ljg3NS02Ljc1Mi00MC4yNSwxLjg3NSwwLDQuMDAyLS4zNzUsNS43NTItLjM3NSwyMS41MDM5MSwwLDM0LjUwNzgyLDUuMzc1LDM3Ljg4MjgzLDExLjVDMzg4LjY1OTMsMTY3LjI1LDM4NC43ODQzLDE4NC43NSwzNjkuNjU1MzgsMjA4LjI1WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdWRpb0Rlc2NyaXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2Mi45MjUgMjM4LjcwOWw4LjgyMiAzMC42NTVoLTI1LjYwNmw5LjA0MS0zMC42NTJjMS4yNzctNC40MjEgMi42NTEtOS45OTQgMy44NzItMTUuMjQ1IDEuMjIgNS4yNTEgMi41OTQgMTAuODIzIDMuODcxIDE1LjI0MnptMTY2LjQ3NC0zMi4wOTloLTE0LjUyM3Y5OC43ODFoMTQuNTIzYzI5Ljc3NiAwIDQ2LjE3NS0xNy42NzggNDYuMTc1LTQ5Ljc3NiAwLTMyLjIzOS0xNy40OS00OS4wMDUtNDYuMTc1LTQ5LjAwNXpNNTEyIDExMnYyODhjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxMTJjMC0yNi41MSAyMS40OS00OCA0OC00OGg0MTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHpNMjQ1LjQ1OSAzMzYuMTM5bC01Ny4wOTctMTY4QTEyLjAwMSAxMi4wMDEgMCAwIDAgMTc3IDE2MGgtMzUuODk0YTEyLjAwMSAxMi4wMDEgMCAwIDAtMTEuMzYyIDguMTM5bC01Ny4wOTcgMTY4QzcwLjAwMyAzNDMuOTIyIDc1Ljc4OSAzNTIgODQuMDA5IDM1MmgyOS4xMzNhMTIgMTIgMCAwIDAgMTEuNTM1LTguNjkzbDguNTc0LTI5LjkwNmg1MS4zNjdsOC43OTMgMjkuOTc3QTEyIDEyIDAgMCAwIDIwNC45MjYgMzUyaDI5LjE3MmM4LjIyIDAgMTQuMDA2LTguMDc4IDExLjM2MS0xNS44NjF6bTE4NC43MDEtODAuNTI1YzAtNTguOTc3LTM3LjkxOS05NS42MTQtOTguOTYtOTUuNjE0aC01Ny4zNjZjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTY4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJIMzMxLjJjNjEuMDQxIDAgOTguOTYtMzYuOTMzIDk4Ljk2LTk2LjM4NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXdhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTcuMTIgMzYyLjYzYy04LjY5LTguNjktNC4xNi02LjI0LTI1LjEyLTExLjg1LTkuNTEtMi41NS0xNy44Ny03LjQ1LTI1LjQzLTEzLjMyTDEuMiA0NDguN2MtNC4zOSAxMC43NyAzLjgxIDIyLjQ3IDE1LjQzIDIyLjAzbDUyLjY5LTIuMDFMMTA1LjU2IDUwN2M4IDguNDQgMjIuMDQgNS44MSAyNi40My00Ljk2bDUyLjA1LTEyNy42MmMtMTAuODQgNi4wNC0yMi44NyA5LjU4LTM1LjMxIDkuNTgtMTkuNSAwLTM3LjgyLTcuNTktNTEuNjEtMjEuMzd6TTM4Mi44IDQ0OC43bC00NS4zNy0xMTEuMjRjLTcuNTYgNS44OC0xNS45MiAxMC43Ny0yNS40MyAxMy4zMi0yMS4wNyA1LjY0LTE2LjQ1IDMuMTgtMjUuMTIgMTEuODUtMTMuNzkgMTMuNzgtMzIuMTIgMjEuMzctNTEuNjIgMjEuMzctMTIuNDQgMC0yNC40Ny0zLjU1LTM1LjMxLTkuNThMMjUyIDUwMi4wNGM0LjM5IDEwLjc3IDE4LjQ0IDEzLjQgMjYuNDMgNC45NmwzNi4yNS0zOC4yOCA1Mi42OSAyLjAxYzExLjYyLjQ0IDE5LjgyLTExLjI3IDE1LjQzLTIyLjAzek0yNjMgMzQwYzE1LjI4LTE1LjU1IDE3LjAzLTE0LjIxIDM4Ljc5LTIwLjE0IDEzLjg5LTMuNzkgMjQuNzUtMTQuODQgMjguNDctMjguOTggNy40OC0yOC40IDUuNTQtMjQuOTcgMjUuOTUtNDUuNzUgMTAuMTctMTAuMzUgMTQuMTQtMjUuNDQgMTAuNDItMzkuNTgtNy40Ny0yOC4zOC03LjQ4LTI0LjQyIDAtNTIuODMgMy43Mi0xNC4xNC0uMjUtMjkuMjMtMTAuNDItMzkuNTgtMjAuNDEtMjAuNzgtMTguNDctMTcuMzYtMjUuOTUtNDUuNzUtMy43Mi0xNC4xNC0xNC41OC0yNS4xOS0yOC40Ny0yOC45OC0yNy44OC03LjYxLTI0LjUyLTUuNjItNDQuOTUtMjYuNDEtMTAuMTctMTAuMzUtMjUtMTQuNC0zOC44OS0xMC42MS0yNy44NyA3LjYtMjMuOTggNy42MS01MS45IDAtMTMuODktMy43OS0yOC43Mi4yNS0zOC44OSAxMC42MS0yMC40MSAyMC43OC0xNy4wNSAxOC44LTQ0Ljk0IDI2LjQxLTEzLjg5IDMuNzktMjQuNzUgMTQuODQtMjguNDcgMjguOTgtNy40NyAyOC4zOS01LjU0IDI0Ljk3LTI1Ljk1IDQ1Ljc1LTEwLjE3IDEwLjM1LTE0LjE1IDI1LjQ0LTEwLjQyIDM5LjU4IDcuNDcgMjguMzYgNy40OCAyNC40IDAgNTIuODItMy43MiAxNC4xNC4yNSAyOS4yMyAxMC40MiAzOS41OSAyMC40MSAyMC43OCAxOC40NyAxNy4zNSAyNS45NSA0NS43NSAzLjcyIDE0LjE0IDE0LjU4IDI1LjE5IDI4LjQ3IDI4Ljk4QzEwNC42IDMyNS45NiAxMDYuMjcgMzI1IDEyMSAzNDBjMTMuMjMgMTMuNDcgMzMuODQgMTUuODggNDkuNzQgNS44MmEzOS42NzYgMzkuNjc2IDAgMCAxIDQyLjUzIDBjMTUuODkgMTAuMDYgMzYuNSA3LjY1IDQ5LjczLTUuODJ6TTk3LjY2IDE3NS45NmMwLTUzLjAzIDQyLjI0LTk2LjAyIDk0LjM0LTk2LjAyczk0LjM0IDQyLjk5IDk0LjM0IDk2LjAyLTQyLjI0IDk2LjAyLTk0LjM0IDk2LjAyLTk0LjM0LTQyLjk5LTk0LjM0LTk2LjAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWJ5Q2FycmlhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0LjggMTdjLTExLjMtMTcuOC0zNy4yLTIyLjgtNTQtOS40QzM1LjMgNTEuOSAwIDExOCAwIDE5MmgyNTZMMTQ0LjggMTd6TTQ5NiA5NmgtNDhjLTM1LjMgMC02NCAyOC43LTY0IDY0djY0SDBjMCA1MC42IDIzIDk2LjQgNjAuMyAxMzAuN0MyNS43IDM2My42IDAgMzk0LjcgMCA0MzJjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTguOS0xLjgtMTcuMi00LjQtMjUuMiAyMS42IDUuOSA0NC42IDkuMiA2OC40IDkuMnM0Ni45LTMuMyA2OC40LTkuMmMtMi43IDgtNC40IDE2LjMtNC40IDI1LjIgMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTM3LjMtMjUuNy02OC40LTYwLjMtNzcuM0M0MjUgMzIwLjQgNDQ4IDI3NC42IDQ0OCAyMjR2LTY0aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2ek04MCA0NjRjLTE3LjYgMC0zMi0xNC40LTMyLTMyczE0LjQtMzIgMzItMzIgMzIgMTQuNCAzMiAzMi0xNC40IDMyLTMyIDMyem0zMjAtMzJjMCAxNy42LTE0LjQgMzItMzIgMzJzLTMyLTE0LjQtMzItMzIgMTQuNC0zMiAzMi0zMiAzMiAxNC40IDMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAxNjBjNDQuMiAwIDgwLTM1LjggODAtODBTMjM2LjIgMCAxOTIgMHMtODAgMzUuOC04MCA4MCAzNS44IDgwIDgwIDgwem0tNTMuNCAyNDguOGwyNS42LTMyLTYxLjUtNTEuMkw1Ni44IDM4M2MtMTEuNCAxNC4yLTExLjcgMzQuNC0uOCA0OWw0OCA2NGM3LjkgMTAuNSAxOS45IDE2IDMyIDE2IDguMyAwIDE2LjgtMi42IDI0LTggMTcuNy0xMy4yIDIxLjItMzguMyA4LTU2bC0yOS40LTM5LjJ6bTE0Mi43LTgzLjJsLTYxLjUgNTEuMiAyNS42IDMyTDIxNiA0NDhjLTEzLjIgMTcuNy05LjcgNDIuOCA4IDU2IDcuMiA1LjQgMTUuNiA4IDI0IDggMTIuMiAwIDI0LjItNS41IDMyLTE2bDQ4LTY0YzEwLjktMTQuNiAxMC42LTM0LjgtLjgtNDlsLTQ1LjktNTcuNHpNMzc2LjcgMTQ1Yy0xMi43LTE4LjEtMzcuNi0yMi40LTU1LjctOS44bC00MC42IDI4LjVjLTUyLjcgMzctMTI0LjIgMzctMTc2LjggMEw2MyAxMzUuM0M0NC45IDEyMi42IDIwIDEyNyA3LjMgMTQ1LTUuNCAxNjMuMS0xIDE4OCAxNyAyMDAuN2w0MC42IDI4LjVjMTcgMTEuOSAzNS40IDIwLjkgNTQuNCAyNy45VjI4OGgxNjB2LTMwLjhjMTktNyAzNy40LTE2IDU0LjQtMjcuOWw0MC42LTI4LjVjMTguMS0xMi44IDIyLjQtMzcuNyA5LjctNTUuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFja3NwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NiA2NEgyMDUuMjZBNjMuOTcgNjMuOTcgMCAwIDAgMTYwIDgyLjc1TDkuMzcgMjMzLjM3Yy0xMi41IDEyLjUtMTIuNSAzMi43NiAwIDQ1LjI1TDE2MCA0MjkuMjVjMTIgMTIgMjguMjggMTguNzUgNDUuMjUgMTguNzVINTc2YzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWMTI4YzAtMzUuMzUtMjguNjUtNjQtNjQtNjR6bS04NC42OSAyNTQuMDZjNi4yNSA2LjI1IDYuMjUgMTYuMzggMCAyMi42M2wtMjIuNjIgMjIuNjJjLTYuMjUgNi4yNS0xNi4zOCA2LjI1LTIyLjYzIDBMMzg0IDMwMS4yNWwtNjIuMDYgNjIuMDZjLTYuMjUgNi4yNS0xNi4zOCA2LjI1LTIyLjYzIDBsLTIyLjYyLTIyLjYyYy02LjI1LTYuMjUtNi4yNS0xNi4zOCAwLTIyLjYzTDMzOC43NSAyNTZsLTYyLjA2LTYyLjA2Yy02LjI1LTYuMjUtNi4yNS0xNi4zOCAwLTIyLjYzbDIyLjYyLTIyLjYyYzYuMjUtNi4yNSAxNi4zOC02LjI1IDIyLjYzIDBMMzg0IDIxMC43NWw2Mi4wNi02Mi4wNmM2LjI1LTYuMjUgMTYuMzgtNi4yNSAyMi42MyAwbDIyLjYyIDIyLjYyYzYuMjUgNi4yNSA2LjI1IDE2LjM4IDAgMjIuNjNMNDI5LjI1IDI1Nmw2Mi4wNiA2Mi4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFja3dhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNSAyODAuNmwxOTIgMTYwYzIwLjYgMTcuMiA1Mi41IDIuOCA1Mi41LTI0LjZWOTZjMC0yNy40LTMxLjktNDEuOC01Mi41LTI0LjZsLTE5MiAxNjBjLTE1LjMgMTIuOC0xNS4zIDM2LjQgMCA0OS4yem0yNTYgMGwxOTIgMTYwYzIwLjYgMTcuMiA1Mi41IDIuOCA1Mi41LTI0LjZWOTZjMC0yNy40LTMxLjktNDEuOC01Mi41LTI0LjZsLTE5MiAxNjBjLTE1LjMgMTIuOC0xNS4zIDM2LjQgMCA0OS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWNvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTguOTIgMzM2LjM5YzM0Ljg5LTM0Ljg5IDQ0LjItNTkuNyA1NC4wNS04NiAxMC42MS0yOC4yOSAyMS41OS01Ny41NCA2MS4zNy05Ny4zNHM2OS4wNS01MC43NyA5Ny4zNS02MS4zOGMyMy44OC05IDQ2LjY0LTE3LjY4IDc2Ljc5LTQ1LjM3TDQ3MC44MSA4LjkxYTMxIDMxIDAgMCAwLTQwLjE4LTIuODNjLTEzLjY0IDEwLjEtMjUuMTUgMTQuMzktNDEgMjAuM0MyNDcgNzkuNTIgMjA5LjI2IDE5MS4yOSAyMDAuNjUgMjE0LjFjLTI5Ljc1IDc4LjgzLTg5LjU1IDk0LjY4LTk4LjcyIDk4LjA5LTI0Ljg2IDkuMjYtNTQuNzMgMjAuMzgtOTEuMDcgNTAuMzZDLTMgMzc0LTMuNjMgMzk1IDkuMDcgNDA3LjYxbDM1Ljc2IDM1LjUxQzgwIDQxMC41MiAxMDcgNDAwLjE1IDEzMyAzOTAuMzljMjYuMjctOS44NCA1MS4wNi0xOS4xMiA4NS45Mi01NHptMzQ4LTIzMmwtMzUuNzUtMzUuNTFjLTM1LjE5IDMyLjYzLTYyLjE4IDQzLTg4LjI1IDUyLjc5LTI2LjI2IDkuODUtNTEuMDYgMTkuMTYtODUuOTUgNTRzLTQ0LjE5IDU5LjY5LTU0IDg2QzI5Mi4zMyAyOTAgMjgxLjM0IDMxOS4yMiAyNDEuNTUgMzU5cy02OSA1MC43My05Ny4zIDYxLjMyYy0yMy44NiA5LTQ2LjYxIDE3LjY2LTc2LjcyIDQ1LjMzbDM3LjY4IDM3LjQzYTMxIDMxIDAgMCAwIDQwLjE4IDIuODJjMTMuNi0xMC4wNiAyNS4wOS0xNC4zNCA0MC45NC0yMC4yNCAxNDIuMi01MyAxODAtMTY0LjEgMTg4Ljk0LTE4Ny42OUM0MDUgMjE5LjE4IDQ2NC44IDIwMy4zIDQ3NCAxOTkuODZjMjQuODctOS4yNyA1NC43NC0yMC40IDkxLjExLTUwLjQxIDEzLjg5LTExLjQgMTQuNTItMzIuNDUgMS44Mi00NS4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFjdGVyaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyLjM1LDIyNi40QTE3LjcxLDE3LjcxLDAsMCwwLDI4MS40NiwyMDNsLTQtOS4wOGExMjEuMjksMTIxLjI5LDAsMCwxLDEyLjM2LTMuMDhBODMuMzQsODMuMzQsMCwwLDAsMzIzLjU3LDE3N2wxMCw5YTE3Ljc2LDE3Ljc2LDAsMSwwLDIzLjkyLTI2LjI3bC05LjcyLTguNzZhODMuMTIsODMuMTIsMCwwLDAsMTEuNjUtNDguMThsMTEuODUtMy41MWExNy43MywxNy43MywwLDEsMC0xMC4xNS0zNGwtMTEuMzQsMy4zNmE4NCw4NCwwLDAsMC0zNi4zOC0zNS41N2wyLjg0LTEwLjg1YTE3LjgsMTcuOCwwLDAsMC0zNC40Ny04LjkzbC0yLjgyLDEwLjc4YTgzLjI1LDgzLjI1LDAsMCwwLTE2Ljc0LDEuMUMyNTAuODMsMjcsMjQwLDMwLjIyLDIyOS4xLDMzLjM5bC0zLjM4LTkuNDZhMTcuOCwxNy44LDAsMCwwLTMzLjU2LDExLjg5bDMuNDksOS44YTI4Ni43NCwyODYuNzQsMCwwLDAtNDMuOTQsMjMuNTdsLTYuMzItOC40M2ExNy45LDE3LjksMCwwLDAtMjQuOTQtMy42QTE3LjY5LDE3LjY5LDAsMCwwLDExNi44NCw4Mmw2LjQ1LDguNjFhMjg2LjU5LDI4Ni41OSwwLDAsMC0zNC45NSwzNS4zM2wtOC44Mi02LjQyYTE3Ljg0LDE3Ljg0LDAsMCwwLTI0Ljg5LDMuODYsMTcuNjYsMTcuNjYsMCwwLDAsMy44OCwyNC43N2w4Ljg4LDYuNDdhMjg2LjYsMjg2LjYsMCwwLDAtMjMsNDMuOTFsLTEwLjQ4LTMuNTlhMTcuNzMsMTcuNzMsMCwxLDAtMTEuNTksMzMuNTJMMzIuNjcsMjMyYy0yLjc5LDEwLTUuNzksMTkuODQtNy41MiwzMC4yMmE4My4xNiw4My4xNiwwLDAsMC0uODIsMTlsLTExLjU4LDMuNDNhMTcuNzMsMTcuNzMsMCwxLDAsMTAuMTMsMzRsMTEuMjctMy4zM2E4My41MSw4My41MSwwLDAsMCwzNi4zOSwzNS40M2wtMi44OCwxMS4wNmExNy44MSwxNy44MSwwLDAsMCwzNC40OCw4LjkybDIuODctMTFjMSwwLDIuMDcuMjYsMy4xLjI2YTgzLjM5LDgzLjM5LDAsMCwwLDQ1LjY1LTEzLjg4bDguNTksOC44YTE3Ljc3LDE3Ljc3LDAsMCwwLDI1LjU2LTI0LjdsLTkuMTQtOS4zN2E4My40MSw4My40MSwwLDAsMCwxMi4wOC0zMS4wNSwxMTkuMDgsMTE5LjA4LDAsMCwxLDMuODctMTUuNTNsOSw0LjIyYTE3Ljc0LDE3Ljc0LDAsMSwwLDE1LjE1LTMyLjA5bC04LjgtNC4xMWMuNjctMSwxLjItMi4wOCwxLjktMy4wNWExMTkuODksMTE5Ljg5LDAsMCwxLDcuODctOS40MSwxMjEuNzMsMTIxLjczLDAsMCwxLDExLjY1LTExLjQsMTE5LjQ5LDExOS40OSwwLDAsMSw5Ljk0LTcuODJjMS4xMi0uNzcsMi4zMi0xLjQyLDMuNDctMi4xNWwzLjkyLDguODVhMTcuODYsMTcuODYsMCwwLDAsMTYuMzIsMTAuNThBMTguMTQsMTguMTQsMCwwLDAsMjcyLjM1LDIyNi40Wk0xMjgsMjU2YTMyLDMyLDAsMSwxLDMyLTMyQTMyLDMyLDAsMCwxLDEyOCwyNTZabTgwLTk2YTE2LDE2LDAsMSwxLDE2LTE2QTE2LDE2LDAsMCwxLDIwOCwxNjBabTQzMS4yNiw0NS4zYTE3Ljc5LDE3Ljc5LDAsMCwwLTE3LjA2LTEyLjY5LDE3LjU1LDE3LjU1LDAsMCwwLTUuMDguNzRsLTExLjI3LDMuMzNhODMuNjEsODMuNjEsMCwwLDAtMzYuMzktMzUuNDNsMi44OC0xMS4wNmExNy44MSwxNy44MSwwLDAsMC0zNC40OC04LjkxbC0yLjg3LDExYy0xLDAtMi4wNy0uMjYtMy4xLS4yNmE4My4zMiw4My4zMiwwLDAsMC00NS42NSwxMy44OWwtOC41OS04LjgxYTE3Ljc3LDE3Ljc3LDAsMCwwLTI1LjU2LDI0LjdsOS4xNCw5LjM3YTgzLjI4LDgzLjI4LDAsMCwwLTEyLjA4LDMxLjA2LDExOS4zNCwxMTkuMzQsMCwwLDEtMy44NywxNS41MmwtOS00LjIyYTE3Ljc0LDE3Ljc0LDAsMSwwLTE1LjE1LDMyLjA5bDguOCw0LjExYy0uNjcsMS0xLjIsMi4wOC0xLjg5LDMuMDVhMTE3LjcxLDExNy43MSwwLDAsMS03Ljk0LDkuNDcsMTE5LDExOSwwLDAsMS0xMS41NywxMS4zMywxMjEuNTksMTIxLjU5LDAsMCwxLTEwLDcuODNjLTEuMTIuNzctMi4zMiwxLjQyLTMuNDcsMi4xNWwtMy45Mi04Ljg1YTE3Ljg2LDE3Ljg2LDAsMCwwLTE2LjMyLTEwLjU4LDE4LjE0LDE4LjE0LDAsMCwwLTcuMTgsMS41QTE3LjcxLDE3LjcxLDAsMCwwLDM1OC41NCwzMDlsNCw5LjA4YTExOC43MSwxMTguNzEsMCwwLDEtMTIuMzYsMy4wOCw4My4zNCw4My4zNCwwLDAsMC0zMy43NywxMy45bC0xMC05YTE3Ljc3LDE3Ljc3LDAsMSwwLTIzLjkyLDI2LjI4bDkuNzIsOC43NWE4My4xMiw4My4xMiwwLDAsMC0xMS42NSw0OC4xOGwtMTEuODYsMy41MWExNy43MywxNy43MywwLDEsMCwxMC4xNiwzNGwxMS4zNC0zLjM2QTg0LDg0LDAsMCwwLDMyNi42MSw0NzlsLTIuODQsMTAuODVhMTcuOCwxNy44LDAsMCwwLDM0LjQ3LDguOTNMMzYxLjA2LDQ4OGE4My4zLDgzLjMsMCwwLDAsMTYuNzQtMS4xYzExLjM3LTEuODksMjIuMjQtNS4wNywzMy4xLTguMjRsMy4zOCw5LjQ2YTE3LjgsMTcuOCwwLDAsMCwzMy41Ni0xMS44OWwtMy40OS05Ljc5YTI4Ny42NiwyODcuNjYsMCwwLDAsNDMuOTQtMjMuNThsNi4zMiw4LjQzYTE3Ljg4LDE3Ljg4LDAsMCwwLDI0LjkzLDMuNkExNy42NywxNy42NywwLDAsMCw1MjMuMTYsNDMwbC02LjQ1LTguNjFhMjg3LjM3LDI4Ny4zNywwLDAsMCwzNC45NS0zNS4zNGw4LjgyLDYuNDJhMTcuNzYsMTcuNzYsMCwxLDAsMjEtMjguNjNsLTguODgtNi40NmEyODcuMTcsMjg3LjE3LDAsMCwwLDIzLTQzLjkybDEwLjQ4LDMuNTlhMTcuNzMsMTcuNzMsMCwxLDAsMTEuNTktMzMuNTJMNjA3LjMzLDI4MGMyLjc5LTEwLDUuNzktMTkuODQsNy41Mi0zMC4yMWE4My4yNyw4My4yNywwLDAsMCwuODItMTkuMDVsMTEuNTgtMy40M0ExNy43LDE3LjcsMCwwLDAsNjM5LjI2LDIwNS4zWk00MTYsNDE2YTMyLDMyLDAsMSwxLDMyLTMyQTMyLDMyLDAsMCwxLDQxNiw0MTZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhY3Rlcml1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTEsMTAyLjkzQTIzLjc2LDIzLjc2LDAsMCwwLDQ4MS40Nyw4N2wtMTUuMTIsNC40OGExMTEuODUsMTExLjg1LDAsMCwwLTQ4LjUtNDcuNDJsMy43OS0xNC40N2EyMy43NCwyMy43NCwwLDAsMC00Ni0xMS45MWwtMy43NiwxNC4zN2ExMTEuOTQsMTExLjk0LDAsMCwwLTIyLjMzLDEuNDcsMzg2Ljc0LDM4Ni43NCwwLDAsMC00NC4zMywxMC40MWwtNC4zLTEyYTIzLjc0LDIzLjc0LDAsMCwwLTQ0Ljc1LDE1Ljg1bDQuMywxMi4wNWEzODMuNCwzODMuNCwwLDAsMC01OC42OSwzMS44M2wtOC0xMC42M2EyMy44NSwyMy44NSwwLDAsMC0zMy4yNC00LjgsMjMuNTcsMjMuNTcsMCwwLDAtNC44MywzMy4wOWw4LDEwLjYzYTM4Ni4xNCwzODYuMTQsMCwwLDAtNDYuNyw0Ny40NGwtMTEtOGEyMy42OCwyMy42OCwwLDEsMC0yOCwzOC4xN2wxMS4wOSw4LjA2YTM4My40NSwzODMuNDUsMCwwLDAtMzAuOTIsNTguNzVsLTEyLjkzLTQuNDNhMjMuNjUsMjMuNjUsMCwxLDAtMTUuNDcsNDQuNjlsMTMsNC40OGEzODUuODEsMzg1LjgxLDAsMCwwLTkuMyw0MC41M0ExMTEuNTgsMTExLjU4LDAsMCwwLDMyLjQ0LDM3NUwxNywzNzkuNTZhMjMuNjQsMjMuNjQsMCwwLDAsMTMuNTEsNDUuMzFsMTUtNC40NGExMTEuNDksMTExLjQ5LDAsMCwwLDQ4LjUzLDQ3LjI0bC0zLjg1LDE0Ljc1YTIzLjY2LDIzLjY2LDAsMCwwLDE3LDI4LjgzLDI0LjcsMjQuNywwLDAsMCw2LC43NSwyMy43MywyMy43MywwLDAsMCwyMy0xNy43TDE0MCw0NzkuNjdjMS4zNy4wNSwyLjc3LjM1LDQuMTMuMzVBMTExLjIyLDExMS4yMiwwLDAsMCwyMDUsNDYxLjVsMTEuNDUsMTEuNzRhMjMuNywyMy43LDAsMCwwLDM0LjA4LTMyLjkzbC0xMi4xOS0xMi41YTExMSwxMTEsMCwwLDAsMTYuMTEtNDEuNCwxNTguNjksMTU4LjY5LDAsMCwxLDUuMTYtMjAuNzFsMTIsNS42NGEyMy42NiwyMy42NiwwLDEsMCwyMC4xOS00Mi43OWwtMTEuNzItNS40OWMuODktMS4zMiwxLjU5LTIuNzcsMi41Mi00LjA2YTE1Ny44NiwxNTcuODYsMCwwLDEsMTAuNDYtMTIuNDksMTU5LjUsMTU5LjUsMCwwLDEsMTUuNTktMTUuMjgsMTYyLjE4LDE2Mi4xOCwwLDAsMSwxMy4yMy0xMC40YzEuNS0xLDMuMS0xLjg5LDQuNjMtMi44N2w1LjIzLDExLjhhMjMuNzQsMjMuNzQsMCwwLDAsNDMuNDgtMTkuMDhsLTUuMzYtMTIuMTFhMTU4Ljg3LDE1OC44NywwLDAsMSwxNi40OS00LjEsMTExLDExMSwwLDAsMCw0NS0xOC41NGwxMy4zMywxMmEyMy42OSwyMy42OSwwLDEsMCwzMS44OC0zNWwtMTIuOTQtMTEuNjdBMTEwLjgzLDExMC44MywwLDAsMCw0NzkuMjEsMTM3TDQ5NSwxMzIuMzJBMjMuNjEsMjMuNjEsMCwwLDAsNTExLDEwMi45M1pNMTYwLDM2OGE0OCw0OCwwLDEsMSw0OC00OEE0OCw0OCwwLDAsMSwxNjAsMzY4Wm04MC0xMzZhMjQsMjQsMCwxLDEsMjQtMjRBMjQsMjQsMCwwLDEsMjQwLDIzMlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFoYWkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2LjI1IDIwMi41MmwtMTEwLTE1LjQ0IDQxLjgyLTEwNC4zNGM2LjY3LTE2LjY0LTExLjYtMzIuMTgtMjYuNTktMjIuNjNMMzA3LjQ0IDEyMCAyNzMuMzUgMTIuODJDMjcwLjY0IDQuMjcgMjYzLjMyIDAgMjU2IDBjLTcuMzIgMC0xNC42NCA0LjI3LTE3LjM1IDEyLjgybC0zNC4wOSAxMDcuMTktOTQuMDQtNTkuODljLTE0Ljk5LTkuNTUtMzMuMjUgNS45OS0yNi41OSAyMi42M2w0MS44MiAxMDQuMzQtMTEwIDE1LjQzYy0xNy41NCAyLjQ2LTIxLjY4IDI2LjI3LTYuMDMgMzQuNjdsOTguMTYgNTIuNjYtNzQuNDggODMuNTRjLTEwLjkyIDEyLjI1LTEuNzIgMzAuOTMgMTMuMjkgMzAuOTMgMS4zMSAwIDIuNjctLjE0IDQuMDctLjQ1bDEwOC41Ny0yMy42NS00LjExIDExMi41NWMtLjQzIDExLjY1IDguODcgMTkuMjIgMTguNDEgMTkuMjIgNS4xNSAwIDEwLjM5LTIuMjEgMTQuMi03LjE4bDY4LjE4LTg4LjkgNjguMTggODguOWMzLjgxIDQuOTcgOS4wNCA3LjE4IDE0LjIgNy4xOCA5LjU0IDAgMTguODQtNy41NyAxOC40MS0xOS4yMmwtNC4xMS0xMTIuNTUgMTA4LjU3IDIzLjY1YzE3LjM2IDMuNzYgMjkuMjEtMTcuMiAxNy4zNS0zMC40OWwtNzQuNDgtODMuNTQgOTguMTYtNTIuNjZjMTUuNjQtOC4zOSAxMS41LTMyLjItNi4wNC0zNC42NnpNMzM4LjUxIDMxMS42OGwtNTEuODktMTEuMyAxLjk3IDUzLjc5TDI1NiAzMTEuNjhsLTMyLjU5IDQyLjQ5IDEuOTYtNTMuNzktNTEuODkgMTEuMyAzNS42LTM5LjkzLTQ2LjkyLTI1LjE3IDUyLjU3LTcuMzgtMTkuOTktNDkuODcgNDQuOTUgMjguNjJMMjU2IDE2Ni43MmwxNi4yOSA1MS4yMyA0NC45NS0yOC42Mi0xOS45OSA0OS44NyA1Mi41NyA3LjM4LTQ2LjkyIDI1LjE3IDM1LjYxIDM5LjkzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWxhbmNlU2NhbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCA0NDhIMzUyVjE1My4yNWMyMC40Mi04Ljk0IDM2LjEtMjYuMjIgNDMuMzgtNDcuNDdsMTMyLTQ0LjI2YzguMzgtMi44MSAxMi44OS0xMS44OCAxMC4wOC0yMC4yNmwtMTAuMTctMzAuMzRDNTI0LjQ4IDIuNTQgNTE1LjQxLTEuOTcgNTA3LjAzLjg0TDM4OS4xMSA0MC4zN0MzNzUuMyAxNi4zNiAzNDkuNjkgMCAzMjAgMGMtNDQuMTggMC04MCAzNS44Mi04MCA4MCAwIDMuNDMuNTkgNi43MSAxLjAxIDEwLjAzbC0xMjguMzkgNDMuMDVjLTguMzggMi44MS0xMi44OSAxMS44OC0xMC4wOCAyMC4yNmwxMC4xNyAzMC4zNGMyLjgxIDguMzggMTEuODggMTIuODkgMjAuMjYgMTAuMDhsMTQyLjA1LTQ3LjYzYzQuMDcgMi43NyA4LjQzIDUuMTIgMTIuOTkgNy4xMlY0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMjI0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMtLjAxLTguODQtNy4xNy0xNi0xNi4wMS0xNnptMTExLjk4LTE0NGMwLTE2LjE4IDEuMzQtOC43My04NS4wNS0xODEuNTEtMTcuNjUtMzUuMjktNjguMTktMzUuMzYtODUuODcgMC04Ny4xMiAxNzQuMjYtODUuMDQgMTY1Ljg0LTg1LjA0IDE4MS41MUgzODRjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MGgtLjAyek00NDAgMjg4bDcyLTE0NCA3MiAxNDRINDQwem0tMjY5LjA3LTM3LjUxYy0xNy42NS0zNS4yOS02OC4xOS0zNS4zNi04NS44NyAwQy0yLjA2IDQyNC43NS4wMiA0MTYuMzMuMDIgNDMySDBjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MGgtLjAyYzAtMTYuMTggMS4zNC04LjczLTg1LjA1LTE4MS41MXpNNTYgNDE2bDcyLTE0NCA3MiAxNDRINTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbGFuY2VTY2FsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDQ2NHYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgyMjRjOC44NCAwIDE2LTcuMTYgMTYtMTZWMTUzLjI1YzQuNTYtMiA4LjkyLTQuMzUgMTIuOTktNy4xMmwxNDIuMDUgNDcuNjNjOC4zOCAyLjgxIDE3LjQ1LTEuNzEgMjAuMjYtMTAuMDhsMTAuMTctMzAuMzRjMi44MS04LjM4LTEuNzEtMTcuNDUtMTAuMDgtMjAuMjZsLTEyOC40LTQzLjA1Yy40Mi0zLjMyIDEuMDEtNi42IDEuMDEtMTAuMDMgMC00NC4xOC0zNS44Mi04MC04MC04MC0yOS42OSAwLTU1LjMgMTYuMzYtNjkuMTEgNDAuMzdMMTMyLjk2LjgzYy04LjM4LTIuODEtMTcuNDUgMS43MS0yMC4yNiAxMC4wOGwtMTAuMTcgMzAuMzRjLTIuODEgOC4zOCAxLjcxIDE3LjQ1IDEwLjA4IDIwLjI2bDEzMiA0NC4yNmM3LjI4IDIxLjI1IDIyLjk2IDM4LjU0IDQzLjM4IDQ3LjQ3VjQ0OEgxMTJjLTguODQgMC0xNiA3LjE2LTE2IDE2ek0wIDMwNGMwIDQ0LjE4IDU3LjMxIDgwIDEyOCA4MHMxMjgtMzUuODIgMTI4LTgwaC0uMDJjMC0xNS42NyAyLjA4LTcuMjUtODUuMDUtMTgxLjUxLTE3LjY4LTM1LjM2LTY4LjIyLTM1LjI5LTg1Ljg3IDBDLTEuMzIgMjk1LjI3LjAyIDI4Ny44Mi4wMiAzMDRIMHptNTYtMTZsNzItMTQ0IDcyIDE0NEg1NnptMzI4LjAyIDE0NEgzODRjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MGgtLjAyYzAtMTUuNjcgMi4wOC03LjI1LTg1LjA1LTE4MS41MS0xNy42OC0zNS4zNi02OC4yMi0zNS4yOS04NS44NyAwLTg2LjM4IDE3Mi43OC04NS4wNCAxNjUuMzMtODUuMDQgMTgxLjUxek00NDAgNDE2bDcyLTE0NCA3MiAxNDRINDQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWxhbmNlU2NhbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMzNmgtLjAyYzAtMTYuMTggMS4zNC04LjczLTg1LjA1LTE4MS41MS0xNy42NS0zNS4yOS02OC4xOS0zNS4zNi04NS44NyAwQy0yLjA2IDMyOC43NS4wMiAzMjAuMzMuMDIgMzM2SDBjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MHpNMTI4IDE3Nmw3MiAxNDRINTZsNzItMTQ0em01MTEuOTggMTYwYzAtMTYuMTggMS4zNC04LjczLTg1LjA1LTE4MS41MS0xNy42NS0zNS4yOS02OC4xOS0zNS4zNi04NS44NyAwLTg3LjEyIDE3NC4yNi04NS4wNCAxNjUuODQtODUuMDQgMTgxLjUxSDM4NGMwIDQ0LjE4IDU3LjMxIDgwIDEyOCA4MHMxMjgtMzUuODIgMTI4LTgwaC0uMDJ6TTQ0MCAzMjBsNzItMTQ0IDcyIDE0NEg0NDB6bTg4IDEyOEgzNTJWMTUzLjI1YzIzLjUxLTEwLjI5IDQxLjE2LTMxLjQ4IDQ2LjM5LTU3LjI1SDUyOGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlY0OGMwLTguODQtNy4xNi0xNi0xNi0xNkgzODMuNjRDMzY5LjA0IDEyLjY4IDM0Ni4wOSAwIDMyMCAwcy00OS4wNCAxMi42OC02My42NCAzMkgxMTJjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDEyOS42MWM1LjIzIDI1Ljc2IDIyLjg3IDQ2Ljk2IDQ2LjM5IDU3LjI1VjQ0OEgxMTJjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkuMDM0IDggOCAxMTkuMDMzIDggMjU2czExMS4wMzQgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMzQgMjQ4LTI0OFMzOTIuOTY3IDggMjU2IDh6bTEzMC4xMDggMTE3Ljg5MmM2NS40NDggNjUuNDQ4IDcwIDE2NS40ODEgMjAuNjc3IDIzNS42MzdMMTUwLjQ3IDEwNS4yMTZjNzAuMjA0LTQ5LjM1NiAxNzAuMjI2LTQ0LjczNSAyMzUuNjM4IDIwLjY3NnpNMTI1Ljg5MiAzODYuMTA4Yy02NS40NDgtNjUuNDQ4LTcwLTE2NS40ODEtMjAuNjc3LTIzNS42MzdMMzYxLjUzIDQwNi43ODRjLTcwLjIwMyA0OS4zNTYtMTcwLjIyNiA0NC43MzYtMjM1LjYzOC0yMC42NzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbmRBaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxNjB2MTkyYzAgMzUuMyAyOC43IDY0IDY0IDY0aDk2Vjk2SDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NHptNTc2LTY0aC05NnYzMjBoOTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0ek0xOTIgNDE2aDI1NlY5NkgxOTJ2MzIwem0xNzYtMjMyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptMCA5NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNC0yNC0xMC43LTI0LTI0IDEwLjctMjQgMjQtMjR6bS05Ni05NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNC0yNC0xMC43LTI0LTI0IDEwLjctMjQgMjQtMjR6bTAgOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXJjb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDQ4VjY0aDE4djM4NEgwem0yNi44NTctLjI3M1Y2NEgzNnYzODMuNzI3aC05LjE0M3ptMjcuMTQzIDBWNjRoOC44NTd2MzgzLjcyN0g1NHptNDQuODU3IDBWNjRoOC44NTd2MzgzLjcyN2gtOC44NTd6bTM2IDBWNjRoMTcuNzE0djM4My43MjdoLTE3LjcxNHptNDQuODU3IDBWNjRoOC44NTd2MzgzLjcyN2gtOC44NTd6bTE4IDBWNjRoOC44NTd2MzgzLjcyN2gtOC44NTd6bTE4IDBWNjRoOC44NTd2MzgzLjcyN2gtOC44NTd6bTM1LjcxNSAwVjY0aDE4djM4My43MjdoLTE4em00NC44NTcgMFY2NGgxOHYzODMuNzI3aC0xOHptMzUuOTk5IDBWNjRoMTguMDAxdjM4My43MjdoLTE4LjAwMXptMzYuMDAxIDBWNjRoMTguMDAxdjM4My43MjdoLTE4LjAwMXptMjYuODU3IDBWNjRoMTh2MzgzLjcyN2gtMTh6bTQ1LjE0MyAwVjY0aDI2Ljg1N3YzODMuNzI3aC0yNi44NTd6bTM1LjcxNCAwVjY0aDkuMTQzdjM4My43MjdINDc2em0xOCAuMjczVjY0aDE4djM4NGgtMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTMyaDQxNmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2Vjc2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZIMTZDNy4xNjMgNjAgMCA2Ny4xNjMgMCA3NnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2em0wIDE2MGg0MTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtNDBjMC04LjgzNy03LjE2My0xNi0xNi0xNkgxNmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2em0wIDE2MGg0MTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtNDBjMC04LjgzNy03LjE2My0xNi0xNi0xNkgxNmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXNlYmFsbEJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4LjUgMzYzLjlsMjguOC0xMy45YzExLjEgMjIuOSAyNiA0My4yIDQ0LjEgNjAuOSAzNC00Mi41IDU0LjUtOTYuMyA1NC41LTE1NC45IDAtNTguNS0yMC40LTExMi4yLTU0LjItMTU0LjYtMTcuOCAxNy4zLTMyLjYgMzcuMS00My42IDU5LjVsLTI4LjctMTQuMWMxMi44LTI2IDMwLTQ5IDUwLjgtNjlDMzc1LjYgMzQuNyAzMTUgOCAyNDggOCAxODEuMSA4IDEyMC41IDM0LjYgNzUuOSA3Ny43YzIwLjcgMTkuOSAzNy45IDQyLjkgNTAuNyA2OC44bC0yOC43IDE0LjFjLTExLTIyLjMtMjUuNy00Mi4xLTQzLjUtNTkuNEMyMC40IDE0My43IDAgMTk3LjQgMCAyNTZjMCA1OC42IDIwLjQgMTEyLjMgNTQuNCAxNTQuNyAxOC4yLTE3LjcgMzMuMi0zOCA0NC4zLTYxbDI4LjggMTMuOWMtMTIuOSAyNi43LTMwLjMgNTAuMy01MS41IDcwLjcgNDQuNSA0My4xIDEwNS4xIDY5LjcgMTcyIDY5LjcgNjYuOCAwIDEyNy4zLTI2LjUgMTcxLjktNjkuNS0yMS4xLTIwLjQtMzguNS00My45LTUxLjQtNzAuNnptLTIyOC4zLTMybC0zMC41LTkuOGMxNC45LTQ2LjQgMTIuNy05My44LS42LTEzNGwzMC40LTEwYzE1IDQ1LjYgMTggOTkuOS43IDE1My44em0yMTYuMy0xNTMuNGwzMC40IDEwYy0xMy4yIDQwLjEtMTUuNSA4Ny41LS42IDEzNGwtMzAuNSA5LjhjLTE3LjMtNTQtMTQuMy0xMDguMy43LTE1My44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXNrZXRiYWxsQmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTIuMyAxMC4zYy00My44IDYuMy04Ni4yIDI0LjEtMTIyLjIgNTMuOGw3Ny40IDc3LjRjMjcuOC0zNS44IDQzLjMtODEuMiA0NC44LTEzMS4yek0yNDggMjIyTDQwNS45IDY0LjFjLTQyLjQtMzUtOTMuNi01My41LTE0NS41LTU2LjEtMS4yIDYzLjktMjEuNSAxMjIuMy01OC43IDE2Ny43TDI0OCAyMjJ6TTU2LjEgOTguMWMtMjkuNyAzNi00Ny41IDc4LjQtNTMuOCAxMjIuMiA1MC0xLjUgOTUuNS0xNyAxMzEuMi00NC44TDU2LjEgOTguMXptMjcyLjIgMjA0LjJjNDUuMy0zNy4xIDEwMy43LTU3LjQgMTY3LjctNTguNy0yLjYtNTEuOS0yMS4xLTEwMy4xLTU2LjEtMTQ1LjVMMjgyIDI1Nmw0Ni4zIDQ2LjN6TTI0OCAyOTBMOTAuMSA0NDcuOWM0Mi40IDM0LjkgOTMuNiA1My41IDE0NS41IDU2LjEgMS4zLTY0IDIxLjYtMTIyLjQgNTguNy0xNjcuN0wyNDggMjkwem0xOTEuOSAxMjMuOWMyOS43LTM2IDQ3LjUtNzguNCA1My44LTEyMi4yLTUwLjEgMS42LTk1LjUgMTcuMS0xMzEuMiA0NC44bDc3LjQgNzcuNHpNMTY3LjcgMjA5LjdDMTIyLjMgMjQ2LjkgNjMuOSAyNjcuMyAwIDI2OC40YzIuNiA1MS45IDIxLjEgMTAzLjEgNTYuMSAxNDUuNUwyMTQgMjU2bC00Ni4zLTQ2LjN6bTExNiAyOTJjNDMuOC02LjMgODYuMi0yNC4xIDEyMi4yLTUzLjhsLTc3LjQtNzcuNGMtMjcuNyAzNS43LTQzLjIgODEuMi00NC44IDEzMS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyLDM4NGE5NS40LDk1LjQsMCwwLDAsMzIsNzEuMDlWNDk2YTE2LDE2LDAsMCwwLDE2LDE2aDMyYTE2LDE2LDAsMCwwLDE2LTE2VjQ4MEgzODR2MTZhMTYsMTYsMCwwLDAsMTYsMTZoMzJhMTYsMTYsMCwwLDAsMTYtMTZWNDU1LjA5QTk1LjQsOTUuNCwwLDAsMCw0ODAsMzg0VjMzNkgzMlpNNDk2LDI1Nkg4MFY2OS4yNWEyMS4yNiwyMS4yNiwwLDAsMSwzNi4yOC0xNWwxOS4yNywxOS4yNmMtMTMuMTMsMjkuODgtNy42MSw1OS4xMSw4LjYyLDc5LjczbC0uMTcuMTdBMTYsMTYsMCwwLDAsMTQ0LDE3NmwxMS4zMSwxMS4zMWExNiwxNiwwLDAsMCwyMi42MywwTDI4My4zMSw4MS45NGExNiwxNiwwLDAsMCwwLTIyLjYzTDI3Miw0OGExNiwxNiwwLDAsMC0yMi42MiwwbC0uMTcuMTdjLTIwLjYyLTE2LjIzLTQ5LjgzLTIxLjc1LTc5LjczLTguNjJMMTUwLjIyLDIwLjI4QTY5LjI1LDY5LjI1LDAsMCwwLDMyLDY5LjI1VjI1NkgxNkExNiwxNiwwLDAsMCwwLDI3MnYxNmExNiwxNiwwLDAsMCwxNiwxNkg0OTZhMTYsMTYsMCwwLDAsMTYtMTZWMjcyQTE2LDE2LDAsMCwwLDQ5NiwyNTZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlFbXB0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDQgMTYwdjY0aDMydjY0aC0zMnY2NEg2NFYxNjBoNDgwbTE2LTY0SDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djIyNGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDUxMmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4di0xNmg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYxODRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0aC04di0xNmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXR0ZXJ5RnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDQgMTYwdjY0aDMydjY0aC0zMnY2NEg2NFYxNjBoNDgwbTE2LTY0SDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djIyNGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDUxMmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4di0xNmg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYxODRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0aC04di0xNmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0tNDggOTZIOTZ2MTI4aDQxNlYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAxNjB2NjRoMzJ2NjRoLTMydjY0SDY0VjE2MGg0ODBtMTYtNjRINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNTEyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTE2aDhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTh2LTE2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS0yNDAgOTZIOTZ2MTI4aDIyNFYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlRdWFydGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAxNjB2NjRoMzJ2NjRoLTMydjY0SDY0VjE2MGg0ODBtMTYtNjRINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNTEyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTE2aDhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTh2LTE2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS0zMzYgOTZIOTZ2MTI4aDEyOFYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlUaHJlZVF1YXJ0ZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAxNjB2NjRoMzJ2NjRoLTMydjY0SDY0VjE2MGg0ODBtMTYtNjRINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNTEyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTE2aDhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTh2LTE2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS0xNDQgOTZIOTZ2MTI4aDMyMFYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgMjU2YzQ0LjExIDAgODAtMzUuODkgODAtODBzLTM1Ljg5LTgwLTgwLTgwLTgwIDM1Ljg5LTgwIDgwIDM1Ljg5IDgwIDgwIDgwem0zNTItMTI4SDMwNGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTQ0SDY0VjgwYzAtOC44NC03LjE2LTE2LTE2LTE2SDE2QzcuMTYgNjQgMCA3MS4xNiAwIDgwdjM1MmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNDhoNTEydjQ4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2VjI0MGMwLTYxLjg2LTUwLjE0LTExMi0xMTItMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCZWVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCA5NmgtNDhWNTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI0QzEwLjc0NSAzMiAwIDQyLjc0NSAwIDU2djQwMGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMjcyYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtNDIuMTFsODAuNjA2LTM1Ljk3N0M0MjkuMzk2IDM2NS4wNjMgNDQ4IDMzNi4zODggNDQ4IDMwNC44NlYxNzZjMC00NC4xMTItMzUuODg4LTgwLTgwLTgwem0xNiAyMDguODZhMTYuMDE4IDE2LjAxOCAwIDAgMS05LjQ3OSAxNC42MTFMMzIwIDM0My44MDVWMTYwaDQ4YzguODIyIDAgMTYgNy4xNzggMTYgMTZ2MTI4Ljg2ek0yMDggMzg0Yy04LjgzNiAwLTE2LTcuMTY0LTE2LTE2VjE0NGMwLTguODM2IDcuMTY0LTE2IDE2LTE2czE2IDcuMTY0IDE2IDE2djIyNGMwIDguODM2LTcuMTY0IDE2LTE2IDE2em0tOTYgMGMtOC44MzYgMC0xNi03LjE2NC0xNi0xNlYxNDRjMC04LjgzNiA3LjE2NC0xNiAxNi0xNnMxNiA3LjE2NCAxNiAxNnYyMjRjMCA4LjgzNi03LjE2NCAxNi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVsbFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzMy44MiA0NTguMWwtOTAuNjItNzAuMDVjLjE5LTEuMzguOC0yLjY2LjgtNC4wNi4wNS03LjU1LTIuNjEtMTUuMjctOC42MS0yMS43MS0xOS4zMi0yMC43Ni01NS40Ny01MS45OS01NS40Ny0xNTQuMjkgMC03Ny43LTU0LjQ4LTEzOS45LTEyNy45NC0xNTUuMTZWMzJjMC0xNy42Ny0xNC4zMi0zMi0zMS45OC0zMnMtMzEuOTggMTQuMzMtMzEuOTggMzJ2MjAuODRjLTQwLjMzIDguMzgtNzQuNjYgMzEuMDctOTcuNTkgNjIuNTdMNDUuNDcgMy4zN0MzOC40OS0yLjA1IDI4LjQzLS44IDIzLjAxIDYuMThMMy4zNyAzMS40NUMtMi4wNSAzOC40Mi0uOCA0OC40NyA2LjE4IDUzLjlsNTg4LjM1IDQ1NC43M2M2Ljk4IDUuNDMgMTcuMDMgNC4xNyAyMi40Ni0yLjgxbDE5LjY0LTI1LjI3YzUuNDItNi45NyA0LjE3LTE3LjAyLTIuODEtMjIuNDV6TTE1Ny4yMyAyNTEuNTRjLTguNjEgNjcuOTYtMzYuNDEgOTMuMzMtNTIuNjIgMTEwLjc1LTYgNi40NS04LjY2IDE0LjE2LTguNjEgMjEuNzEuMTEgMTYuNCAxMi45OCAzMiAzMi4xIDMyaDI0MS45MkwxNTcuMjMgMjUxLjU0ek0zMjAgNTEyYzM1LjMyIDAgNjMuOTctMjguNjUgNjMuOTctNjRIMjU2LjAzYzAgMzUuMzUgMjguNjUgNjQgNjMuOTcgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDUxMmMzNS4zMiAwIDYzLjk3LTI4LjY1IDYzLjk3LTY0SDE2MC4wM2MwIDM1LjM1IDI4LjY1IDY0IDYzLjk3IDY0em0yMTUuMzktMTQ5LjcxYy0xOS4zMi0yMC43Ni01NS40Ny01MS45OS01NS40Ny0xNTQuMjkgMC03Ny43LTU0LjQ4LTEzOS45LTEyNy45NC0xNTUuMTZWMzJjMC0xNy42Ny0xNC4zMi0zMi0zMS45OC0zMnMtMzEuOTggMTQuMzMtMzEuOTggMzJ2MjAuODRDMTE4LjU2IDY4LjEgNjQuMDggMTMwLjMgNjQuMDggMjA4YzAgMTAyLjMtMzYuMTUgMTMzLjUzLTU1LjQ3IDE1NC4yOS02IDYuNDUtOC42NiAxNC4xNi04LjYxIDIxLjcxLjExIDE2LjQgMTIuOTggMzIgMzIuMSAzMmgzODMuOGMxOS4xMiAwIDMyLTE1LjYgMzIuMS0zMiAuMDUtNy41NS0yLjYxLTE1LjI3LTguNjEtMjEuNzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlemllckN1cnZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCAzMmgtOTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTIwOCA4OGgtODQuNzVDMTEzLjc1IDY0LjU2IDkwLjg0IDQ4IDY0IDQ4IDI4LjY2IDQ4IDAgNzYuNjUgMCAxMTJzMjguNjYgNjQgNjQgNjRjMjYuODQgMCA0OS43NS0xNi41NiA1OS4yNS00MGg3OS43M2MtNTUuMzcgMzIuNTItOTUuODYgODcuMzItMTA5LjU0IDE1Mmg0OS40YzExLjMtNDEuNjEgMzYuNzctNzcuMjEgNzEuMDQtMTAxLjU2LTMuNy04LjA4LTUuODgtMTYuOTktNS44OC0yNi40NFY4OHptLTQ4IDIzMkg2NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTU3NiA0OGMtMjYuODQgMC00OS43NSAxNi41Ni01OS4yNSA0MEg0MzJ2NzJjMCA5LjQ1LTIuMTkgMTguMzYtNS44OCAyNi40NCAzNC4yNyAyNC4zNSA1OS43NCA1OS45NSA3MS4wNCAxMDEuNTZoNDkuNGMtMTMuNjgtNjQuNjgtNTQuMTctMTE5LjQ4LTEwOS41NC0xNTJoNzkuNzNjOS41IDIzLjQ0IDMyLjQxIDQwIDU5LjI1IDQwIDM1LjM0IDAgNjQtMjguNjUgNjQtNjRzLTI4LjY2LTY0LTY0LTY0em0wIDI3MmgtOTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzU4LjRWMjUuNmMwLTE2LTkuNi0yNS42LTI1LjYtMjUuNkg5NkM0MS42IDAgMCA0MS42IDAgOTZ2MzIwYzAgNTQuNCA0MS42IDk2IDk2IDk2aDMyNi40YzEyLjggMCAyNS42LTkuNiAyNS42LTI1LjZ2LTE2YzAtNi40LTMuMi0xMi44LTkuNi0xOS4yLTMuMi0xNi0zLjItNjAuOCAwLTczLjYgNi40LTMuMiA5LjYtOS42IDkuNi0xOS4yek0xNDQgMTQ0YzAtOC44NCA3LjE2LTE2IDE2LTE2aDQ4VjgwYzAtOC44NCA3LjE2LTE2IDE2LTE2aDMyYzguODQgMCAxNiA3LjE2IDE2IDE2djQ4aDQ4YzguODQgMCAxNiA3LjE2IDE2IDE2djMyYzAgOC44NC03LjE2IDE2LTE2IDE2aC00OHYxMTJjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTMyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNlYxOTJoLTQ4Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMzJ6bTIzNi44IDMwNEg5NmMtMTkuMiAwLTMyLTEyLjgtMzItMzJzMTYtMzIgMzItMzJoMjg0Ljh2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpY3ljbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyLjUwOSAxOTIuMDAxYy0xNi4zNzMtLjA2NC0zMi4wMyAyLjk1NS00Ni40MzYgOC40OTVsLTc3LjY4LTEyNS4xNTNBMjQgMjQgMCAwIDAgMzY4LjAwMSA2NGgtNjRjLTguODM3IDAtMTYgNy4xNjMtMTYgMTZ2MTZjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmg1MC42NDlsMTQuODk2IDI0SDI1Ni4wMDJ2LTE2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZoLTg3LjQ1OWMtMTMuNDQxIDAtMjQuNzc3IDEwLjk5OS0yNC41MzYgMjQuNDM3LjIzMiAxMy4wNDQgMTAuODc2IDIzLjU2MyAyMy45OTUgMjMuNTYzaDQ4LjcyNmwtMjkuNDE3IDQ3LjUyYy0xMy40MzMtNC44My0yNy45MDQtNy40ODMtNDIuOTkyLTcuNTJDNTguMDk0IDE5MS44My40MTIgMjQ5LjAxMi4wMDIgMzE5LjIzNi0uNDEzIDM5MC4yNzkgNTcuMDU1IDQ0OCAxMjguMDAyIDQ0OGM1OS42NDIgMCAxMDkuNzU4LTQwLjc5MyAxMjMuOTY3LTk2aDUyLjAzM2EyNCAyNCAwIDAgMCAyMC40MDYtMTEuMzY3TDQxMC4zNyAyMDEuNzdsMTQuOTM4IDI0LjA2N2MtMjUuNDU1IDIzLjQ0OC00MS4zODUgNTcuMDgxLTQxLjMwNyA5NC40MzcuMTQ1IDY4LjgzMyA1Ny44OTkgMTI3LjA1MSAxMjYuNzI5IDEyNy43MTkgNzAuNjA2LjY4NSAxMjguMTgxLTU1LjgwMyAxMjkuMjU1LTEyNS45OTYgMS4wODYtNzAuOTQxLTU2LjUyNi0xMjkuNzItMTI3LjQ3Ni0xMjkuOTk2ek0xODYuNzUgMjY1Ljc3MmM5LjcyNyAxMC41MjkgMTYuNjczIDIzLjY2MSAxOS42NDIgMzguMjI4aC00My4zMDZsMjMuNjY0LTM4LjIyOHpNMTI4LjAwMiA0MDBjLTQ0LjExMiAwLTgwLTM1Ljg4OC04MC04MHMzNS44ODgtODAgODAtODBjNS44NjkgMCAxMS41ODYuNjUzIDE3LjA5OSAxLjg1OWwtNDUuNTA1IDczLjUwOUM4OS43MTUgMzMxLjMyNyAxMDEuMjEzIDM1MiAxMjAuMDAyIDM1Mmg4MS4zYy0xMi4zNyAyOC4yMjUtNDAuNTYyIDQ4LTczLjMgNDh6bTE2Mi42My05NmgtMzUuNjI0Yy0zLjk2LTMxLjc1Ni0xOS41NTYtNTkuODk0LTQyLjM4My04MC4wMjZMMjM3LjM3MSAxODRoMTI3LjU0N2wtNzQuMjg2IDEyMHptMjE3LjA1NyA5NS44ODZjLTQxLjAzNi0yLjE2NS03NC4wNDktMzUuNjkyLTc1LjYyNy03Ni43NTUtLjgxMi0yMS4xMjEgNi42MzMtNDAuNTE4IDE5LjMzNS01NS4yNjNsNDQuNDMzIDcxLjU4NmM0LjY2IDcuNTA4IDE0LjUyNCA5LjgxNiAyMi4wMzIgNS4xNTZsMTMuNTk0LTguNDM3YzcuNTA4LTQuNjYgOS44MTctMTQuNTI0IDUuMTU2LTIyLjAzMmwtNDQuNDY4LTcxLjY0M2E3OS45MDEgNzkuOTAxIDAgMCAxIDE5Ljg1OC0yLjQ5N2M0NC4xMTIgMCA4MCAzNS44ODggODAgODAtLjAwMSA0NS41NC0zOC4yNTIgODIuMzE2LTg0LjMxMyA3OS44ODV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpa2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgOTZhNDggNDggMCAxIDAtNDgtNDggNDggNDggMCAwIDAgNDggNDh6bS00IDEyMWEzMS45IDMxLjkgMCAwIDAgMjAgN2g2NGEzMiAzMiAwIDAgMCAwLTY0aC01Mi43OEwzNTYgMTAzYTMxLjk0IDMxLjk0IDAgMCAwLTQwLjgxLjY4bC0xMTIgOTZhMzIgMzIgMCAwIDAgMy4wOCA1MC45MkwyODggMzA1LjEyVjQxNmEzMiAzMiAwIDAgMCA2NCAwVjI4OGEzMiAzMiAwIDAgMC0xNC4yNS0yNi42MmwtNDEuMzYtMjcuNTcgNTguMjUtNDkuOTJ6bTExNiAzOWExMjggMTI4IDAgMSAwIDEyOCAxMjggMTI4IDEyOCAwIDAgMC0xMjgtMTI4em0wIDE5MmE2NCA2NCAwIDEgMSA2NC02NCA2NCA2NCAwIDAgMS02NCA2NHpNMTI4IDI1NmExMjggMTI4IDAgMSAwIDEyOCAxMjggMTI4IDEyOCAwIDAgMC0xMjgtMTI4em0wIDE5MmE2NCA2NCAwIDEgMSA2NC02NCA2NCA2NCAwIDAgMS02NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmlub2N1bGFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTY0Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OGg5NlY0OHpNNjMuOTEgMTU5Ljk5QzYxLjQgMjUzLjg0IDMuNDYgMjc0LjIyIDAgNDA0djQ0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYyODhoMzJWMTI4SDk1Ljg0Yy0xNy42MyAwLTMxLjQ1IDE0LjM3LTMxLjkzIDMxLjk5em0zODQuMTggMGMtLjQ4LTE3LjYyLTE0LjMtMzEuOTktMzEuOTMtMzEuOTlIMzIwdjE2MGgzMnYxNjBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi00NGMtMy40Ni0xMjkuNzgtNjEuNC0xNTAuMTYtNjMuOTEtMjQ0LjAxek0xNzYgMzJoLTY0Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OGg5NlY0OGMwLTguODQtNy4xNi0xNi0xNi0xNnptNDggMjU2aDY0VjEyOGgtNjR2MTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaW9oYXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg3LjkgMTEyYzE4LjYgMCAzNi4yIDMuOCA1Mi44IDkuNiAxMy4zLTEwLjMgMjMuNi0yNC4zIDI5LjUtNDAuNy0yNS4yLTEwLjktNTMtMTctODIuMi0xNy0yOS4xIDAtNTYuOSA2LTgyLjEgMTYuOSA1LjkgMTYuNCAxNi4yIDMwLjQgMjkuNSA0MC43IDE2LjUtNS43IDM0LTkuNSA1Mi41LTkuNXpNMTYzLjYgNDM4LjdjMTItMTEuOCAyMC40LTI2LjQgMjQuNS00Mi40LTMyLjktMjYuNC01NC44LTY1LjMtNTguOS0xMDkuNi04LjUtMi44LTE3LjItNC42LTI2LjQtNC42LTcuNiAwLTE1LjIgMS0yMi41IDMuMSA0LjEgNjIuOCAzNS44IDExOCA4My4zIDE1My41em0yMjQuMi00Mi42YzQuMSAxNiAxMi41IDMwLjcgMjQuNSA0Mi41IDQ3LjQtMzUuNSA3OS4xLTkwLjcgODMtMTUzLjUtNy4yLTItMTQuNy0zLTIyLjItMy05LjIgMC0xOCAxLjktMjYuNiA0LjctNC4xIDQ0LjItMjYgODIuOS01OC43IDEwOS4zem0xMTMuNS0yMDVjLTE3LjYtMTAuNC0zNi4zLTE2LjYtNTUuMy0xOS45IDYtMTcuNyAxMC0zNi40IDEwLTU2LjIgMC00MS0xNC41LTgwLjgtNDEtMTEyLjItMi41LTMtNi42LTMuNy0xMC0xLjgtMy4zIDEuOS00LjggNi0zLjYgOS43IDQuNSAxMy44IDYuNiAyNi4zIDYuNiAzOC41IDAgNjcuOC01My44IDEyMi45LTEyMCAxMjIuOVMxNjggMTE3IDE2OCA0OS4yYzAtMTIuMSAyLjItMjQuNyA2LjYtMzguNSAxLjItMy43LS4zLTcuOC0zLjYtOS43LTMuNC0xLjktNy41LTEuMi0xMCAxLjhDMTM0LjYgMzQuMiAxMjAgNzQgMTIwIDExNWMwIDE5LjggMy45IDM4LjUgMTAgNTYuMi0xOC45IDMuMy0zNy43IDkuNS01NS4zIDE5LjktMzQuNiAyMC41LTYxIDUzLjMtNzQuMyA5Mi40LTEuMyAzLjcuMiA3LjcgMy41IDkuOCAzLjMgMiA3LjUgMS4zIDEwLTEuNiA5LjQtMTAuOCAxOS0xOS4xIDI5LjItMjUuMSA1Ny4zLTMzLjkgMTMwLjgtMTMuNyAxNjMuOSA0NSAzMy4xIDU4LjcgMTMuNCAxMzQtNDMuOSAxNjcuOS0xMC4yIDYuMS0yMiAxMC40LTM1LjggMTMuNC0zLjcuOC02LjQgNC4yLTYuNCA4LjEuMSA0IDIuNyA3LjMgNi41IDggMzkuNyA3LjggODAuNi44IDExNS4yLTE5LjcgMTgtMTAuNiAzMi45LTI0LjUgNDUuMy00MC4xIDEyLjQgMTUuNiAyNy4zIDI5LjUgNDUuMyA0MC4xIDM0LjYgMjAuNSA3NS41IDI3LjUgMTE1LjIgMTkuNyAzLjgtLjcgNi40LTQgNi41LTggMC0zLjktMi42LTcuMy02LjQtOC4xLTEzLjktMi45LTI1LjYtNy4zLTM1LjgtMTMuNC01Ny4zLTMzLjktNzctMTA5LjItNDMuOS0xNjcuOXMxMDYuNi03OC45IDE2My45LTQ1YzEwLjIgNi4xIDE5LjggMTQuMyAyOS4yIDI1LjEgMi41IDIuOSA2LjcgMy42IDEwIDEuNnM0LjgtNi4xIDMuNS05LjhjLTEzLjEtMzkuMS0zOS41LTcyLTc0LjEtOTIuNHptLTIxMy40IDEyOWMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpcnRoZGF5Q2FrZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzg0Yy0yOC4wMiAwLTMxLjI2LTMyLTc0LjUtMzItNDMuNDMgMC00Ni44MjUgMzItNzQuNzUgMzItMjcuNjk1IDAtMzEuNDU0LTMyLTc0Ljc1LTMyLTQyLjg0MiAwLTQ3LjIxOCAzMi03NC41IDMyLTI4LjE0OCAwLTMxLjIwMi0zMi03NC43NS0zMi00My41NDcgMC00Ni42NTMgMzItNzQuNzUgMzJ2LTgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDE2VjExMmg2NHYxNDRoNjRWMTEyaDY0djE0NGg2NFYxMTJoNjR2MTQ0aDE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djgwem0wIDEyOEgwdi05NmM0My4zNTYgMCA0Ni43NjctMzIgNzQuNzUtMzIgMjcuOTUxIDAgMzEuMjUzIDMyIDc0Ljc1IDMyIDQyLjg0MyAwIDQ3LjIxNy0zMiA3NC41LTMyIDI4LjE0OCAwIDMxLjIwMSAzMiA3NC43NSAzMiA0My4zNTcgMCA0Ni43NjctMzIgNzQuNzUtMzIgMjcuNDg4IDAgMzEuMjUyIDMyIDc0LjUgMzJ2OTZ6TTk2IDk2Yy0xNy43NSAwLTMyLTE0LjI1LTMyLTMyIDAtMzEgMzItMjMgMzItNjQgMTIgMCAzMiAyOS41IDMyIDU2cy0xNC4yNSA0MC0zMiA0MHptMTI4IDBjLTE3Ljc1IDAtMzItMTQuMjUtMzItMzIgMC0zMSAzMi0yMyAzMi02NCAxMiAwIDMyIDI5LjUgMzIgNTZzLTE0LjI1IDQwLTMyIDQwem0xMjggMGMtMTcuNzUgMC0zMi0xNC4yNS0zMi0zMiAwLTMxIDMyLTIzIDMyLTY0IDEyIDAgMzIgMjkuNSAzMiA1NnMtMTQuMjUgNDAtMzIgNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsZW5kZXJQaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTIgNjRoMTY2LjU0TDU3NiAwSDE5MnYzNTJoMjg4bDE3LjQ2LTY0SDM5MmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDExNC4xOGwxNy40Ni02NEgzOTJjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxNDAuMzZsMTcuNDYtNjRIMzkyYy00LjQyIDAtOC0zLjU4LTgtOFY3MmMwLTQuNDIgMy41OC04IDgtOHpNMTU4LjggMzM1LjAxbC0yNS43OC02My4yNmMtMi43OC02LjgxLTkuOC0xMC45OS0xNy4yNC0xMC4yNmwtNDUuMDMgNC40MmMtMTcuMjgtNDYuOTQtMTcuNjUtOTkuNzggMC0xNDcuNzJsNDUuMDMgNC40MmM3LjQzLjczIDE0LjQ2LTMuNDYgMTcuMjQtMTAuMjZsMjUuNzgtNjMuMjZjMy4wMi03LjM5LjItMTUuODUtNi42OC0yMC4wN2wtMzkuMjgtMjQuMUM5OC41MS0zLjg3IDgwLjA5LS41IDY4Ljk1IDExLjk3Yy05Mi41NyAxMDMuNi05MiAyNTkuNTUgMi4xIDM2Mi40OSA5Ljg3IDEwLjggMjkuMTIgMTIuNDggNDEuNjUgNC44bDM5LjQxLTI0LjE4YzYuODktNC4yMiA5LjctMTIuNjcgNi42OS0yMC4wN3pNNDgwIDM4NEgxOTJjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzNTJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0zNS4zNS0yOC42NS02NC02NC02NHptLTE0NCA5NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxlbmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMzg0SDE2MGMtMzUuMzUgMC02NCAyOC42NS02NCA2NHYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyMGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0em0tMTI4IDk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem00MC00MTZoMTY2LjU0TDUxMiAwSDQ4QzIxLjQ5IDAgMCAyMS40OSAwIDQ4djE2MGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDEwMy4yN2w4LjczIDk2aDI1NmwxNy40Ni02NEgzMjhjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxMTQuMThsMTcuNDYtNjRIMzI4Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTQwLjM2bDE3LjQ2LTY0SDMyOGMtNC40MiAwLTgtMy41OC04LThWNzJjMC00LjQyIDMuNTgtOCA4LTh6TTY0IDE5MlY2NGg2OS44MmwxMS42NCAxMjhINjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsaW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4MC4xNSA1MTAuODM3YTggOCAwIDAgMS0xMC45ODktMi42ODdsLTEyNS4zMy0yMDYuNDI3YTMxLjkyMyAzMS45MjMgMCAwIDAgMTIuOTU4LTkuNDg1bDEyNi4wNDggMjA3LjYwOGE4IDggMCAwIDEtMi42ODcgMTAuOTkxek0xNDIuODAzIDMxNC4zMzhsLTMyLjU0IDg5LjQ4NSAzNi4xMiA4OC4yODVjNi42OTMgMTYuMzYgMjUuMzc3IDI0LjE5MiA0MS43MzMgMTcuNTAxIDE2LjM1Ny02LjY5MiAyNC4xOTMtMjUuMzc2IDE3LjUwMS00MS43MzRsLTYyLjgxNC0xNTMuNTM3ek05NiA4OGMyNC4zMDEgMCA0NC0xOS42OTkgNDQtNDRTMTIwLjMwMSAwIDk2IDAgNTIgMTkuNjk5IDUyIDQ0czE5LjY5OSA0NCA0NCA0NHptMTU0LjgzNyAxNjkuMTI4bC0xMjAtMTUyYy00LjczMy01Ljk5NS0xMS43NS05LjEwOC0xOC44MzctOS4xMTJWOTZIODB2LjAyNmMtNy4xNDYuMDAzLTE0LjIxNyAzLjE2MS0xOC45NDQgOS4yNEwwIDE4My43NjZ2OTUuNjk0YzAgMTMuNDU1IDExLjAxMSAyNC43OTEgMjQuNDY0IDI0LjUzNkMzNy41MDUgMzAzLjc0OCA0OCAyOTMuMSA0OCAyODB2LTc5Ljc2NmwxNi0yMC41NzF2MTQwLjY5OEw5LjkyNyA0NjkuMDU1Yy02LjA0IDE2LjYwOSAyLjUyOCAzNC45NjkgMTkuMTM4IDQxLjAwOSAxNi42MDIgNi4wMzkgMzQuOTY4LTIuNTI0IDQxLjAwOS0xOS4xMzhMMTM2IDMwOS42MzhWMjAyLjQ0MWwtMzEuNDA2LTM5LjgxNmE0IDQgMCAxIDEgNi4yNjktNC45NzFsMTAyLjMgMTI5LjIxN2M5LjE0NSAxMS41ODQgMjQuMzY4IDExLjMzOSAzMy43MDggMy45NjUgMTAuNDEtOC4yMTYgMTIuMTU5LTIzLjMzNCAzLjk2Ni0zMy43MDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcyLjIgMjI2LjhjLTE0LjYtMi45LTI4LjIgOC45LTI4LjIgMjMuOFYzMDFjMCAxMC4yIDcuMSAxOC40IDE2LjcgMjIgMTguMiA2LjggMzEuMyAyNC40IDMxLjMgNDUgMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0SDI0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNDhjMCA4OS41IDgyLjEgMTYwLjIgMTc1IDE0MC43IDU0LjQtMTEuNCA5OC4zLTU1LjQgMTA5LjctMTA5LjcgMTcuNC04Mi45LTM3LTE1Ny4yLTExMi41LTE3Mi4yek0yMDkgMGMtOS4yLS41LTE3IDYuOC0xNyAxNnYzMS42YzAgOC41IDYuNiAxNS41IDE1IDE1LjkgMTI5LjQgNyAyMzMuNCAxMTIgMjQwLjkgMjQxLjUuNSA4LjQgNy41IDE1IDE1LjkgMTVoMzIuMWM5LjIgMCAxNi41LTcuOCAxNi0xN0M1MDMuNCAxMzkuOCAzNzIuMiA4LjYgMjA5IDB6bS4zIDk2Yy05LjMtLjctMTcuMyA2LjctMTcuMyAxNi4xdjMyLjFjMCA4LjQgNi41IDE1LjMgMTQuOCAxNS45IDc2LjggNi4zIDEzOCA2OC4yIDE0NC45IDE0NS4yLjggOC4zIDcuNiAxNC43IDE1LjkgMTQuN2gzMi4yYzkuMyAwIDE2LjgtOCAxNi4xLTE3LjMtOC40LTExMC4xLTk2LjUtMTk4LjItMjA2LjYtMjA2Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMzLjQ5IDIzOGExMjIgMTIyIDAgMCAwIDI3LTY1LjIxQzM2Ny44NyA5Ni40OSAzMDggMzIgMjMzLjQyIDMySDM0YTE2IDE2IDAgMCAwLTE2IDE2djQ4YTE2IDE2IDAgMCAwIDE2IDE2aDMxLjg3djI4OEgzNGExNiAxNiAwIDAgMC0xNiAxNnY0OGExNiAxNiAwIDAgMCAxNiAxNmgyMDkuMzJjNzAuOCAwIDEzNC4xNC01MS43NSAxNDEtMTIyLjQgNC43NC00OC40NS0xNi4zOS05Mi4wNi01MC44My0xMTkuNnpNMTQ1LjY2IDExMmg4Ny43NmE0OCA0OCAwIDAgMSAwIDk2aC04Ny43NnptODcuNzYgMjg4aC04Ny43NlYyODhoODcuNzZhNTYgNTYgMCAwIDEgMCAxMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk2IDE2MEgxODAuNmw0Mi42LTEyOS44QzIyNy4yIDE1IDIxNS43IDAgMjAwIDBINTZDNDQgMCAzMy44IDguOSAzMi4yIDIwLjhsLTMyIDI0MEMtMS43IDI3NS4yIDkuNSAyODggMjQgMjg4aDExOC43TDk2LjYgNDgyLjVjLTMuNiAxNS4yIDggMjkuNSAyMy4zIDI5LjUgOC40IDAgMTYuNC00LjQgMjAuOC0xMmwxNzYtMzA0YzkuMy0xNS45LTIuMi0zNi0yMC43LTM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb21iIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC41IDg4LjVsLTUyIDUyTDQxNSAxNjdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTE3LjQgMTcuNGMxMS44IDI2LjEgMTguNCA1NS4xIDE4LjQgODUuNiAwIDExNC45LTkzLjEgMjA4LTIwOCAyMDhTMCA0MTguOSAwIDMwNCA5My4xIDk2IDIwOCA5NmMzMC41IDAgNTkuNSA2LjYgODUuNiAxOC40TDMxMSA5N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwyNi41IDI2LjUgNTItNTIgMTcuMSAxN3pNNTAwIDYwaC0yNGMtNi42IDAtMTIgNS40LTEyIDEyczUuNCAxMiAxMiAxMmgyNGM2LjYgMCAxMi01LjQgMTItMTJzLTUuNC0xMi0xMi0xMnpNNDQwIDBjLTYuNiAwLTEyIDUuNC0xMiAxMnYyNGMwIDYuNiA1LjQgMTIgMTIgMTJzMTItNS40IDEyLTEyVjEyYzAtNi42LTUuNC0xMi0xMi0xMnptMzMuOSA1NWwxNy0xN2M0LjctNC43IDQuNy0xMi4zIDAtMTctNC43LTQuNy0xMi4zLTQuNy0xNyAwbC0xNyAxN2MtNC43IDQuNy00LjcgMTIuMyAwIDE3IDQuOCA0LjcgMTIuNCA0LjcgMTcgMHptLTY3LjggMGM0LjcgNC43IDEyLjMgNC43IDE3IDAgNC43LTQuNyA0LjctMTIuMyAwLTE3bC0xNy0xN2MtNC43LTQuNy0xMi4zLTQuNy0xNyAwLTQuNyA0LjctNC43IDEyLjMgMCAxN2wxNyAxN3ptNjcuOCAzNGMtNC43LTQuNy0xMi4zLTQuNy0xNyAwLTQuNyA0LjctNC43IDEyLjMgMCAxN2wxNyAxN2M0LjcgNC43IDEyLjMgNC43IDE3IDAgNC43LTQuNyA0LjctMTIuMyAwLTE3bC0xNy0xN3pNMTEyIDI3MmMwLTM1LjMgMjguNy02NCA2NC02NCA4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmMtNTIuOSAwLTk2IDQzLjEtOTYgOTYgMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01OTguODggMjQ0LjU2YzI1LjItMTIuNiA0MS4xMi0zOC4zNiA0MS4xMi02Ni41M3YtNy42NEM2NDAgMTI5LjMgNjA2LjcgOTYgNTY1LjYxIDk2Yy0zMi4wMiAwLTYwLjQ0IDIwLjQ5LTcwLjU3IDUwLjg2LTcuNjggMjMuMDMtMTEuNiA0NS4xNC0zOC4xMSA0NS4xNEgxODMuMDZjLTI3LjM4IDAtMzEuNTgtMjUuNTQtMzguMTEtNDUuMTRDMTM0LjgzIDExNi40OSAxMDYuNCA5NiA3NC4zOSA5NiAzMy4zIDk2IDAgMTI5LjMgMCAxNzAuMzl2Ny42NGMwIDI4LjE3IDE1LjkyIDUzLjkzIDQxLjEyIDY2LjUzIDkuNDMgNC43MSA5LjQzIDE4LjE3IDAgMjIuODhDMTUuOTIgMjgwLjA0IDAgMzA1LjggMCAzMzMuOTd2Ny42NEMwIDM4Mi43IDMzLjMgNDE2IDc0LjM4IDQxNmMzMi4wMiAwIDYwLjQ0LTIwLjQ5IDcwLjU3LTUwLjg2IDcuNjgtMjMuMDMgMTEuNi00NS4xNCAzOC4xMS00NS4xNGgyNzMuODdjMjcuMzggMCAzMS41OCAyNS41NCAzOC4xMSA0NS4xNEM1MDUuMTcgMzk1LjUxIDUzMy42IDQxNiA1NjUuNjEgNDE2YzQxLjA4IDAgNzQuMzgtMzMuMyA3NC4zOC03NC4zOXYtNy42NGMwLTI4LjE4LTE1LjkyLTUzLjkzLTQxLjEyLTY2LjUzLTkuNDItNC43MS05LjQyLTE4LjE3LjAxLTIyLjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb25nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMi41IDUxMmMyMy4xOCAwIDQ0LjQzLTEyLjU4IDU2LTMyLjY2QzM3NC42OSA0NTEuMjYgMzg0IDQxOC43NSAzODQgMzg0YzAtMzYuMTItMTAuMDgtNjkuODEtMjcuNDQtOTguNjJMNDAwIDI0MS45NGw5LjM4IDkuMzhjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwxMS4zLTExLjMyYzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjNsLTUyLjY5LTUyLjY5Yy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwbC0xMS4zMSAxMS4zMWMtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2w5LjM4IDkuMzgtMzkuNDEgMzkuNDFjLTExLjU2LTExLjM3LTI0LjUzLTIxLjMzLTM4LjY1LTI5LjUxVjYzLjc0bDE1Ljk3LS4wMmM4LjgyLS4wMSAxNS45Ny03LjE2IDE1Ljk4LTE1Ljk4bC4wNC0zMS43MkMzMjAgNy4xNyAzMTIuODItLjAxIDMwMy45NyAwTDgwLjAzLjI2Yy04LjgyLjAxLTE1Ljk3IDcuMTYtMTUuOTggMTUuOThsLS4wNCAzMS43M2MtLjAxIDguODUgNy4xNyAxNi4wMiAxNi4wMiAxNi4wMUw5NiA2My45NnYxNTMuOTNDMzguNjcgMjUxLjEgMCAzMTIuOTcgMCAzODRjMCAzNC43NSA5LjMxIDY3LjI3IDI1LjUgOTUuMzRDMzcuMDggNDk5LjQyIDU4LjMzIDUxMiA4MS41IDUxMmgyMjF6TTEyMC4wNiAyNTkuNDNMMTQ0IDI0NS41NlY2My45MWw5Ni0uMTF2MTgxLjc2bDIzLjk0IDEzLjg3YzI0LjgxIDE0LjM3IDQ0LjEyIDM1LjczIDU2LjU2IDYwLjU3aC0yNTdjMTIuNDUtMjQuODQgMzEuNzUtNDYuMiA1Ni41Ni02MC41N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va0RlYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDEzNmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNi0xNiA3LjItMTYgMTYgNy4yIDE2IDE2IDE2em0xNzYgMjIyLjRWMjUuNmMwLTE2LTkuNi0yNS42LTI1LjYtMjUuNkg5NkM0MS42IDAgMCA0MS42IDAgOTZ2MzIwYzAgNTQuNCA0MS42IDk2IDk2IDk2aDMyNi40YzEyLjggMCAyNS42LTkuNiAyNS42LTI1LjZ2LTE2YzAtNi40LTMuMi0xMi44LTkuNi0xOS4yLTMuMi0xNi0zLjItNjAuOCAwLTczLjYgNi40LTMuMiA5LjYtOS42IDkuNi0xOS4yek0yNDAgNTZjNDQuMiAwIDgwIDI4LjcgODAgNjQgMCAyMC45LTEyLjcgMzkuMi0zMiA1MC45VjE4NGMwIDguOC03LjIgMTYtMTYgMTZoLTY0Yy04LjggMC0xNi03LjItMTYtMTZ2LTEzLjFjLTE5LjMtMTEuNy0zMi0zMC0zMi01MC45IDAtMzUuMyAzNS44LTY0IDgwLTY0ek0xMjQuOCAyMjMuM2w2LjMtMTQuN2MxLjctNC4xIDYuNC01LjkgMTAuNS00LjJsOTguMyA0Mi4xIDk4LjQtNDIuMWM0LjEtMS43IDguOC4xIDEwLjUgNC4ybDYuMyAxNC43YzEuNyA0LjEtLjEgOC44LTQuMiAxMC41TDI4MC42IDI2NGw3MC4zIDMwLjFjNC4xIDEuNyA1LjkgNi40IDQuMiAxMC41bC02LjMgMTQuN2MtMS43IDQuMS02LjQgNS45LTEwLjUgNC4yTDI0MCAyODEuNGwtOTguMyA0Mi4yYy00LjEgMS43LTguOC0uMS0xMC41LTQuMmwtNi4zLTE0LjdjLTEuNy00LjEuMS04LjggNC4yLTEwLjVsNzAuNC0zMC4xLTcwLjUtMzAuM2MtNC4xLTEuNy01LjktNi40LTQuMi0xMC41em0yNTYgMjI0LjdIOTZjLTE5LjIgMC0zMi0xMi44LTMyLTMyczE2LTMyIDMyLTMyaDI4NC44ek0yMDggMTM2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2LTE2IDcuMi0xNiAxNiA3LjIgMTYgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2tNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzNTguNFYyNS42YzAtMTYtOS42LTI1LjYtMjUuNi0yNS42SDk2QzQxLjYgMCAwIDQxLjYgMCA5NnYzMjBjMCA1NC40IDQxLjYgOTYgOTYgOTZoMzI2LjRjMTIuOCAwIDI1LjYtOS42IDI1LjYtMjUuNnYtMTZxMC05LjYtOS42LTE5LjJjLTMuMi0xNi0zLjItNjAuOCAwLTczLjZxOS42LTQuOCA5LjYtMTkuMnpNMTQ0IDE2OGE4IDggMCAwIDEgOC04aDU2di01NmE4IDggMCAwIDEgOC04aDQ4YTggOCAwIDAgMSA4IDh2NTZoNTZhOCA4IDAgMCAxIDggOHY0OGE4IDggMCAwIDEtOCA4aC01NnY1NmE4IDggMCAwIDEtOCA4aC00OGE4IDggMCAwIDEtOC04di01NmgtNTZhOCA4IDAgMCAxLTgtOHptMjM2LjggMjgwSDk2Yy0xOS4yIDAtMzItMTIuOC0zMi0zMnMxNi0zMiAzMi0zMmgyODQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va09wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQyLjIyIDMyLjA1Yy01NC44IDMuMTEtMTYzLjcyIDE0LjQzLTIzMC45NiA1NS41OS00LjY0IDIuODQtNy4yNyA3Ljg5LTcuMjcgMTMuMTd2MzYzLjg3YzAgMTEuNTUgMTIuNjMgMTguODUgMjMuMjggMTMuNDkgNjkuMTgtMzQuODIgMTY5LjIzLTQ0LjMyIDIxOC43LTQ2LjkyIDE2Ljg5LS44OSAzMC4wMi0xNC40MyAzMC4wMi0zMC42NlY2Mi43NWMuMDEtMTcuNzEtMTUuMzUtMzEuNzQtMzMuNzctMzAuN3pNMjY0LjczIDg3LjY0QzE5Ny41IDQ2LjQ4IDg4LjU4IDM1LjE3IDMzLjc4IDMyLjA1IDE1LjM2IDMxLjAxIDAgNDUuMDQgMCA2Mi43NVY0MDAuNmMwIDE2LjI0IDEzLjEzIDI5Ljc4IDMwLjAyIDMwLjY2IDQ5LjQ5IDIuNiAxNDkuNTkgMTIuMTEgMjE4Ljc3IDQ2Ljk1IDEwLjYyIDUuMzUgMjMuMjEtMS45NCAyMy4yMS0xMy40NlYxMDAuNjNjMC01LjI5LTIuNjItMTAuMTQtNy4yNy0xMi45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9va1JlYWRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgOTZjMC01My4wMi00Mi45OC05Ni05Ni05NnMtOTYgNDIuOTgtOTYgOTYgNDIuOTggOTYgOTYgOTYgOTYtNDIuOTggOTYtOTZ6TTIzMy41OSAyNDEuMWMtNTkuMzMtMzYuMzItMTU1LjQzLTQ2LjMtMjAzLjc5LTQ5LjA1QzEzLjU1IDE5MS4xMyAwIDIwMy41MSAwIDIxOS4xNHYyMjIuOGMwIDE0LjMzIDExLjU5IDI2LjI4IDI2LjQ5IDI3LjA1IDQzLjY2IDIuMjkgMTMxLjk5IDEwLjY4IDE5My4wNCA0MS40MyA5LjM3IDQuNzIgMjAuNDgtMS43MSAyMC40OC0xMS44N1YyNTIuNTZjLS4wMS00LjY3LTIuMzItOC45NS02LjQyLTExLjQ2em0yNDguNjEtNDkuMDVjLTQ4LjM1IDIuNzQtMTQ0LjQ2IDEyLjczLTIwMy43OCA0OS4wNS00LjEgMi41MS02LjQxIDYuOTYtNi40MSAxMS42M3YyNDUuNzljMCAxMC4xOSAxMS4xNCAxNi42MyAyMC41NCAxMS45IDYxLjA0LTMwLjcyIDE0OS4zMi0zOS4xMSAxOTIuOTctNDEuNCAxNC45LS43OCAyNi40OS0xMi43MyAyNi40OS0yNy4wNlYyMTkuMTRjLS4wMS0xNS42My0xMy41Ni0yOC4wMS0yOS44MS0yNy4wOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzYwVjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0SDk2QzQzIDAgMCA0MyAwIDk2djMyMGMwIDUzIDQzIDk2IDk2IDk2aDMyOGMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtMTZjMC03LjUtMy41LTE0LjMtOC45LTE4LjctNC4yLTE1LjQtNC4yLTU5LjMgMC03NC43IDUuNC00LjMgOC45LTExLjEgOC45LTE4LjZ6TTEyOCAxMzRjMC0zLjMgMi43LTYgNi02aDIxMmMzLjMgMCA2IDIuNyA2IDZ2MjBjMCAzLjMtMi43IDYtNiA2SDEzNGMtMy4zIDAtNi0yLjctNi02di0yMHptMCA2NGMwLTMuMyAyLjctNiA2LTZoMjEyYzMuMyAwIDYgMi43IDYgNnYyMGMwIDMuMy0yLjcgNi02IDZIMTM0Yy0zLjMgMC02LTIuNy02LTZ2LTIwem0yNTMuNCAyNTBIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyIDAtMTcuNiAxNC40LTMyIDMyLTMyaDI4NS40Yy0xLjkgMTcuMS0xLjkgNDYuOSAwIDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb29rbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDUxMlY0OEMwIDIxLjQ5IDIxLjQ5IDAgNDggMGgyODhjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHY0NjRMMTkyIDQwMCAwIDUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9yZGVyQWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAzMkgzMkEzMiAzMiAwIDAgMCAwIDY0djM4NGEzMiAzMiAwIDAgMCAzMiAzMmgzODRhMzIgMzIgMCAwIDAgMzItMzJWNjRhMzIgMzIgMCAwIDAtMzItMzJ6bS0zMiA2NHYxMjhIMjU2Vjk2em0tMTkyIDB2MTI4SDY0Vjk2ek02NCA0MTZWMjg4aDEyOHYxMjh6bTE5MiAwVjI4OGgxMjh2MTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3JkZXJOb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MCAyMjRoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptOTYgMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bS0yODggMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em05NiAxOTJoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptOTYgMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtOTZoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xOTJoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMjQwIDMyMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTE5MmgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tOTYgMjg4aC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2LTM4NGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2IDBoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2em05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpNNDggMjI0SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMCAxOTJIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTk2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xOTJIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTk2SDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2IDBoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3JkZXJTdHlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDAgNDE2aC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bS05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTE5MiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2LTE5MmgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wIDk2aC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgOTZoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0yODhoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC05NkgzMkEzMiAzMiAwIDAgMCAwIDY0djQwMGExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlY5NmgzNjhhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvd2xpbmdCYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTEyMCAxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem02NC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMnptNDggMTQ0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm94T3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjUuNyAyNTZjLTE2LjkgMC0zMi44LTktNDEuNC0yMy40TDMyMCAxMjZsLTY0LjIgMTA2LjZjLTguNyAxNC41LTI0LjYgMjMuNS00MS41IDIzLjUtNC41IDAtOS0uNi0xMy4zLTEuOUw2NCAyMTV2MTc4YzAgMTQuNyAxMCAyNy41IDI0LjIgMzFsMjE2LjIgNTQuMWMxMC4yIDIuNSAyMC45IDIuNSAzMSAwTDU1MS44IDQyNGMxNC4yLTMuNiAyNC4yLTE2LjQgMjQuMi0zMVYyMTVsLTEzNyAzOS4xYy00LjMgMS4zLTguOCAxLjktMTMuMyAxLjl6bTIxMi42LTExMi4yTDU4Ni44IDQxYy0zLjEtNi4yLTkuOC05LjgtMTYuNy04LjlMMzIwIDY0bDkxLjcgMTUyLjFjMy44IDYuMyAxMS40IDkuMyAxOC41IDcuM2wxOTcuOS01Ni41YzkuOS0yLjkgMTQuNy0xMy45IDEwLjItMjMuMXpNNTMuMiA0MUwxLjcgMTQzLjhjLTQuNiA5LjIuMyAyMC4yIDEwLjEgMjNsMTk3LjkgNTYuNWM3LjEgMiAxNC43LTEgMTguNS03LjNMMzIwIDY0IDY5LjggMzIuMWMtNi45LS44LTEzLjUgMi43LTE2LjYgOC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3hUaXNzdWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgzLjg4LDI4Ny44Mmw2NC0xOTJIMzM4LjQ3YTcwLjIsNzAuMiwwLDAsMS02Ni41OS00OCw3MC4yMSw3MC4yMSwwLDAsMC02Ni42LTQ4SDYzLjg4bDY0LDI4OFptLTM4NCwxOTJhMzIsMzIsMCwwLDAsMzIsMzJoNDQ4YTMyLDMyLDAsMCwwLDMyLTMydi02NEgtLjEyWm00ODAtMjU2SDQzOC45NGwtMjEuMzMsNjRoMTQuMjdhMTYsMTYsMCwwLDEsMCwzMmgtMzUyYTE2LDE2LDAsMSwxLDAtMzJIOTUuMDlsLTE0LjIyLTY0aC00OWEzMiwzMiwwLDAsMC0zMiwzMnYxMjhoNTEydi0xMjhBMzIsMzIsMCwwLDAsNDc5Ljg4LDIyMy44MlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwOS41IDE4NC42TDQ1OC45IDMyLjhDNDUyLjQgMTMuMiA0MzQuMSAwIDQxMy40IDBIMjcydjE5MmgyMzguN2MtLjQtMi41LS40LTUtMS4yLTcuNHpNMjQwIDBIOTguNmMtMjAuNyAwLTM5IDEzLjItNDUuNSAzMi44TDIuNSAxODQuNmMtLjggMi40LS44IDQuOS0xLjIgNy40SDI0MFYwek0wIDIyNHYyNDBjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjIyNEgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3hlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjAgMjg4aC04MHY5NmwtMzItMjEuMy0zMiAyMS4zdi05NmgtODBjLTguOCAwLTE2IDcuMi0xNiAxNnYxOTJjMCA4LjggNy4yIDE2IDE2IDE2aDIyNGM4LjggMCAxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNnptLTM4NC02NGgyMjRjOC44IDAgMTYtNy4yIDE2LTE2VjE2YzAtOC44LTcuMi0xNi0xNi0xNmgtODB2OTZsLTMyLTIxLjNMMjU2IDk2VjBoLTgwYy04LjggMC0xNiA3LjItMTYgMTZ2MTkyYzAgOC44IDcuMiAxNiAxNiAxNnptNjQgNjRoLTgwdjk2bC0zMi0yMS4zTDk2IDM4NHYtOTZIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYxOTJjMCA4LjggNy4yIDE2IDE2IDE2aDIyNGM4LjggMCAxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJhaWxsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMjU2YzAgMzUuMzQ2LTI4LjY1NCA2NC02NCA2NFMwIDI5MS4zNDYgMCAyNTZzMjguNjU0LTY0IDY0LTY0IDY0IDI4LjY1NCA2NCA2NHpNNjQgMzg0Yy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTAtMzUyQzI4LjY1NCAzMiAwIDYwLjY1NCAwIDk2czI4LjY1NCA2NCA2NCA2NCA2NC0yOC42NTQgNjQtNjQtMjguNjU0LTY0LTY0LTY0em0xNjAgMTkyYy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTAgMTYwYy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTAtMzUyYy0zNS4zNDYgMC02NCAyOC42NTQtNjQgNjRzMjguNjU0IDY0IDY0IDY0IDY0LTI4LjY1NCA2NC02NC0yOC42NTQtNjQtNjQtNjR6bTIyNCAxOTJjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnptMCAxNjBjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnptMC0zNTJjLTM1LjM0NiAwLTY0IDI4LjY1NC02NCA2NHMyOC42NTQgNjQgNjQgNjQgNjQtMjguNjU0IDY0LTY0LTI4LjY1NC02NC02NC02NHptMTYwIDE5MmMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyem0wIDE2MGMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyem0wLTMyMGMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggMGMtMjkuOSAwLTU0LjcgMjAuNS02MS44IDQ4LjItLjggMC0xLjQtLjItMi4yLS4yLTM1LjMgMC02NCAyOC43LTY0IDY0IDAgNC44LjYgOS41IDEuNyAxNEM1Mi41IDEzOCAzMiAxNjYuNiAzMiAyMDBjMCAxMi42IDMuMiAyNC4zIDguMyAzNC45QzE2LjMgMjQ4LjcgMCAyNzQuMyAwIDMwNGMwIDMzLjMgMjAuNCA2MS45IDQ5LjQgNzMuOS0uOSA0LjYtMS40IDkuMy0xLjQgMTQuMSAwIDM5LjggMzIuMiA3MiA3MiA3MiA0LjEgMCA4LjEtLjUgMTItMS4yIDkuNiAyOC41IDM2LjIgNDkuMiA2OCA0OS4yIDM5LjggMCA3Mi0zMi4yIDcyLTcyVjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0em0zNjggMzA0YzAtMjkuNy0xNi4zLTU1LjMtNDAuMy02OS4xIDUuMi0xMC42IDguMy0yMi4zIDguMy0zNC45IDAtMzMuNC0yMC41LTYyLTQ5LjctNzQgMS00LjUgMS43LTkuMiAxLjctMTQgMC0zNS4zLTI4LjctNjQtNjQtNjQtLjggMC0xLjUuMi0yLjIuMkM0MjIuNyAyMC41IDM5Ny45IDAgMzY4IDBjLTM1LjMgMC02NCAyOC42LTY0IDY0djM3NmMwIDM5LjggMzIuMiA3MiA3MiA3MiAzMS44IDAgNTguNC0yMC43IDY4LTQ5LjIgMy45LjcgNy45IDEuMiAxMiAxLjIgMzkuOCAwIDcyLTMyLjIgNzItNzIgMC00LjgtLjUtOS41LTEuNC0xNC4xIDI5LTEyIDQ5LjQtNDAuNiA0OS40LTczLjl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyZWFkU2xpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBDMTA4IDAgMCA5My40IDAgMTY5LjE0IDAgMTk5LjQ0IDI0LjI0IDIyNCA2NCAyMjR2MjU2YzAgMTcuNjcgMTYuMTIgMzIgMzYgMzJoMzc2YzE5Ljg4IDAgMzYtMTQuMzMgMzYtMzJWMjI0YzM5Ljc2IDAgNjQtMjQuNTYgNjQtNTQuODZDNTc2IDkzLjQgNDY4IDAgMjg4IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyaWVmY2FzZU1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDEyOGgtODBWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhIMTc2Yy0yNi41IDAtNDggMjEuNS00OCA0OHY0OEg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2Mjg4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFYxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE5MiA5NmgxMjh2MzJIMTkyVjk2em0xNjAgMjQ4YzAgNC40LTMuNiA4LTggOGgtNTZ2NTZjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di01NmgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDhjMC00LjQgMy42LTggOC04aDU2di01NmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djU2aDU2YzQuNCAwIDggMy42IDggOHY0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJpZWZjYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAzMzZjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTk2Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtNDhIMHYxNDRjMCAyNS42IDIyLjQgNDggNDggNDhoNDE2YzI1LjYgMCA0OC0yMi40IDQ4LTQ4VjI4OEgzMjB2NDh6bTE0NC0yMDhoLTgwVjgwYzAtMjUuNi0yMi40LTQ4LTQ4LTQ4SDE3NmMtMjUuNiAwLTQ4IDIyLjQtNDggNDh2NDhINDhjLTI1LjYgMC00OCAyMi40LTQ4IDQ4djgwaDUxMnYtODBjMC0yNS42LTIyLjQtNDgtNDgtNDh6bS0xNDQgMEgxOTJWOTZoMTI4djMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcm9hZGNhc3RUb3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTAuOTQgMTkyaDMzLjczYzExLjAxIDAgMTguNjEtMTAuODMgMTQuODYtMjEuMTgtNC45My0xMy41OC03LjU1LTI3Ljk4LTcuNTUtNDIuODJzMi42Mi0yOS4yNCA3LjU1LTQyLjgyQzIwMy4yOSA3NC44MyAxOTUuNjggNjQgMTg0LjY3IDY0aC0zMy43M2MtNy4wMSAwLTEzLjQ2IDQuNDktMTUuNDEgMTEuMjNDMTMwLjY0IDkyLjIxIDEyOCAxMDkuODggMTI4IDEyOGMwIDE4LjEyIDIuNjQgMzUuNzkgNy41NCA1Mi43NiAxLjk0IDYuNzQgOC4zOSAxMS4yNCAxNS40IDExLjI0ek04OS45MiAyMy4zNEM5NS41NiAxMi43MiA4Ny45NyAwIDc1Ljk2IDBINDAuNjNjLTYuMjcgMC0xMi4xNCAzLjU5LTE0Ljc0IDkuMzFDOS40IDQ1LjU0IDAgODUuNjUgMCAxMjhjMCAyNC43NSAzLjEyIDY4LjMzIDI2LjY5IDExOC44NiAyLjYyIDUuNjMgOC40MiA5LjE0IDE0LjYxIDkuMTRoMzQuODRjMTIuMDIgMCAxOS42MS0xMi43NCAxMy45NS0yMy4zNy00OS43OC05My4zMi0xNi43MS0xNzguMTUtLjE3LTIwOS4yOXpNNjE0LjA2IDkuMjlDNjExLjQ2IDMuNTggNjA1LjYgMCA1OTkuMzMgMGgtMzUuNDJjLTExLjk4IDAtMTkuNjYgMTIuNjYtMTQuMDIgMjMuMjUgMTguMjcgMzQuMjkgNDguNDIgMTE5LjQyLjI4IDIwOS4yMy01LjcyIDEwLjY4IDEuOCAyMy41MiAxMy45MSAyMy41MmgzNS4yM2M2LjI3IDAgMTIuMTMtMy41OCAxNC43My05LjI5QzYzMC41NyAyMTAuNDggNjQwIDE3MC4zNiA2NDAgMTI4cy05LjQyLTgyLjQ4LTI1Ljk0LTExOC43MXpNNDg5LjA2IDY0aC0zMy43M2MtMTEuMDEgMC0xOC42MSAxMC44My0xNC44NiAyMS4xOCA0LjkzIDEzLjU4IDcuNTUgMjcuOTggNy41NSA0Mi44MnMtMi42MiAyOS4yNC03LjU1IDQyLjgyYy0zLjc2IDEwLjM1IDMuODUgMjEuMTggMTQuODYgMjEuMThoMzMuNzNjNy4wMiAwIDEzLjQ2LTQuNDkgMTUuNDEtMTEuMjQgNC45LTE2Ljk3IDcuNTMtMzQuNjQgNy41My01Mi43NiAwLTE4LjEyLTIuNjQtMzUuNzktNy41NC01Mi43Ni0xLjk0LTYuNzUtOC4zOS0xMS4yNC0xNS40LTExLjI0em0tMTE2LjMgMTAwLjEyYzcuMDUtMTAuMjkgMTEuMi0yMi43MSAxMS4yLTM2LjEyIDAtMzUuMzUtMjguNjMtNjQtNjMuOTYtNjQtMzUuMzIgMC02My45NiAyOC42NS02My45NiA2NCAwIDEzLjQxIDQuMTUgMjUuODMgMTEuMiAzNi4xMmwtMTMwLjUgMzEzLjQxYy0zLjQgOC4xNS40NiAxNy41MiA4LjYxIDIwLjkybDI5LjUxIDEyLjMxYzguMTUgMy40IDE3LjUyLS40NiAyMC45MS04LjYxTDI0NC45NiAzODRoMTUwLjA3bDQ5LjIgMTE4LjE1YzMuNCA4LjE2IDEyLjc2IDEyLjAxIDIwLjkxIDguNjFsMjkuNTEtMTIuMzFjOC4xNS0zLjQgMTItMTIuNzcgOC42MS0yMC45MmwtMTMwLjUtMzEzLjQxek0yNzEuNjIgMzIwTDMyMCAyMDMuODEgMzY4LjM4IDMyMGgtOTYuNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ni40NyAyMTYuNzdsODYuNzMgMTA5LjE4cy0xNi42IDEwMi4zNi03Ni41NyAxNTAuMTJDMjA2LjY2IDUyMy44NSAwIDUxMC4xOSAwIDUxMC4xOXMzLjgtMjMuMTQgMTEtNTUuNDNsOTQuNjItMTEyLjE3YzMuOTctNC43LS44Ny0xMS42Mi02LjY1LTkuNWwtNjAuNCAyMi4wOWMxNC40NC00MS42NiAzMi43Mi04MC4wNCA1NC42LTk3LjQ3IDU5Ljk3LTQ3Ljc2IDE2My4zLTQwLjk0IDE2My4zLTQwLjk0ek02MzYuNTMgMzEuMDNsLTE5Ljg2LTI1Yy01LjQ5LTYuOS0xNS41Mi04LjA1LTIyLjQxLTIuNTZsLTIzMi40OCAxNzcuOC0zNC4xNC00Mi45N2MtNS4wOS02LjQxLTE1LjE0LTUuMjEtMTguNTkgMi4yMWwtMjUuMzMgNTQuNTUgODYuNzMgMTA5LjE4IDU4LjgtMTIuNDVjOC0xLjY5IDExLjQyLTExLjIgNi4zNC0xNy42bC0zNC4wOS00Mi45MiAyMzIuNDgtMTc3LjhjNi44OS01LjQ4IDguMDQtMTUuNTMgMi41NS0yMi40NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJ1c2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDBIMzJDMTQuMzMgMCAwIDE0LjMzIDAgMzJ2MjI0aDM4NFYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0wIDMyMGMwIDM1LjM1IDI4LjY2IDY0IDY0IDY0aDY0djY0YzAgMzUuMzUgMjguNjYgNjQgNjQgNjRzNjQtMjguNjUgNjQtNjR2LTY0aDY0YzM1LjM0IDAgNjQtMjguNjUgNjQtNjR2LTMySDB2MzJ6bTE5MiAxMDRjMTMuMjUgMCAyNCAxMC43NCAyNCAyNCAwIDEzLjI1LTEwLjc1IDI0LTI0IDI0cy0yNC0xMC43NS0yNC0yNGMwLTEzLjI2IDEwLjc1LTI0IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTExLjk4OCAyODguOWMtLjQ3OCAxNy40My0xNS4yMTcgMzEuMS0zMi42NTMgMzEuMUg0MjR2MTZjMCAyMS44NjQtNC44ODIgNDIuNTg0LTEzLjYgNjEuMTQ1bDYwLjIyOCA2MC4yMjhjMTIuNDk2IDEyLjQ5NyAxMi40OTYgMzIuNzU4IDAgNDUuMjU1LTEyLjQ5OCAxMi40OTctMzIuNzU5IDEyLjQ5Ni00NS4yNTYgMGwtNTQuNzM2LTU0LjczNkMzNDUuODg2IDQ2Ny45NjUgMzE0LjM1MSA0ODAgMjgwIDQ4MFYyMzZjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjRjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjQ0Yy0zNC4zNTEgMC02NS44ODYtMTIuMDM1LTkwLjYzNi0zMi4xMDhsLTU0LjczNiA1NC43MzZjLTEyLjQ5OCAxMi40OTctMzIuNzU5IDEyLjQ5Ni00NS4yNTYgMC0xMi40OTYtMTIuNDk3LTEyLjQ5Ni0zMi43NTggMC00NS4yNTVsNjAuMjI4LTYwLjIyOEM5Mi44ODIgMzc4LjU4NCA4OCAzNTcuODY0IDg4IDMzNnYtMTZIMzIuNjY2QzE1LjIzIDMyMCAuNDkxIDMwNi4zMy4wMTMgMjg4LjktLjQ4NCAyNzAuODE2IDE0LjAyOCAyNTYgMzIgMjU2aDU2di01OC43NDVsLTQ2LjYyOC00Ni42MjhjLTEyLjQ5Ni0xMi40OTctMTIuNDk2LTMyLjc1OCAwLTQ1LjI1NSAxMi40OTgtMTIuNDk3IDMyLjc1OC0xMi40OTcgNDUuMjU2IDBMMTQxLjI1NSAxNjBoMjI5LjQ4OWw1NC42MjctNTQuNjI3YzEyLjQ5OC0xMi40OTcgMzIuNzU4LTEyLjQ5NyA0NS4yNTYgMCAxMi40OTYgMTIuNDk3IDEyLjQ5NiAzMi43NTggMCA0NS4yNTVMNDI0IDE5Ny4yNTVWMjU2aDU2YzE3Ljk3MiAwIDMyLjQ4NCAxNC44MTYgMzEuOTg4IDMyLjl6TTI1NyAwYy02MS44NTYgMC0xMTIgNTAuMTQ0LTExMiAxMTJoMjI0QzM2OSA1MC4xNDQgMzE4Ljg1NiAwIDI1NyAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWlsZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzYgNDgwaC0yMFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRINTZDNDIuNzQ1IDAgMzIgMTAuNzQ1IDMyIDI0djQ1NkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyMGg0NDh2LTIwYzAtNi42MjctNS4zNzMtMTItMTItMTJ6TTEyOCA3NmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMmgtNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJWNzZ6bTAgOTZjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQwYzAgNi42MjctNS4zNzMgMTItMTIgMTJoLTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi00MHptNTIgMTQ4aC00MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtNDBjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQwYzAgNi42MjctNS4zNzMgMTItMTIgMTJ6bTc2IDE2MGgtNjR2LTg0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY4NHptNjQtMTcyYzAgNi42MjctNS4zNzMgMTItMTIgMTJoLTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi00MGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDB6bTAtOTZjMCA2LjYyNy01LjM3MyAxMi0xMiAxMmgtNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTQwYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY0MHptMC05NmMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC00MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMlY3NmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1bGxob3JuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NiAyNDBjMC0yMy42My0xMi45NS00NC4wNC0zMi01NS4xMlYzMi4wMUM1NDQgMjMuMjYgNTM3LjAyIDAgNTEyIDBjLTcuMTIgMC0xNC4xOSAyLjM4LTE5Ljk4IDcuMDJsLTg1LjAzIDY4LjAzQzM2NC4yOCAxMDkuMTkgMzEwLjY2IDEyOCAyNTYgMTI4SDY0Yy0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0djk2YzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzMuN2MtMS4zOSAxMC40OC0yLjE4IDIxLjE0LTIuMTggMzIgMCAzOS43NyA5LjI2IDc3LjM1IDI1LjU2IDExMC45NCA1LjE5IDEwLjY5IDE2LjUyIDE3LjA2IDI4LjQgMTcuMDZoNzQuMjhjMjYuMDUgMCA0MS42OS0yOS44NCAyNS45LTUwLjU2LTE2LjQtMjEuNTItMjYuMTUtNDguMzYtMjYuMTUtNzcuNDQgMC0xMS4xMSAxLjYyLTIxLjc5IDQuNDEtMzJIMjU2YzU0LjY2IDAgMTA4LjI4IDE4LjgxIDE1MC45OCA1Mi45NWw4NS4wMyA2OC4wM2EzMi4wMjMgMzIuMDIzIDAgMCAwIDE5Ljk4IDcuMDJjMjQuOTIgMCAzMi0yMi43OCAzMi0zMlYyOTUuMTNDNTYzLjA1IDI4NC4wNCA1NzYgMjYzLjYzIDU3NiAyNDB6bS05NiAxNDEuNDJsLTMzLjA1LTI2LjQ0QzM5Mi45NSAzMTEuNzggMzI1LjEyIDI4OCAyNTYgMjg4di05NmM2OS4xMiAwIDEzNi45NS0yMy43OCAxOTAuOTUtNjYuOThMNDgwIDk4LjU4djI4Mi44NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVsbHNleWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMCA0MzJjLTEwMS42OSAwLTE4NC04Mi4yOS0xODQtMTg0IDAtMTAxLjY5IDgyLjI5LTE4NCAxODQtMTg0IDEwMS42OSAwIDE4NCA4Mi4yOSAxODQgMTg0IDAgMTAxLjY5LTgyLjI5IDE4NC0xODQgMTg0em0wLTMxMmMtNzAuNjkgMC0xMjggNTcuMzEtMTI4IDEyOHM1Ny4zMSAxMjggMTI4IDEyOCAxMjgtNTcuMzEgMTI4LTEyOC01Ny4zMS0xMjgtMTI4LTEyOHptMCAxOTJjLTM1LjI5IDAtNjQtMjguNzEtNjQtNjRzMjguNzEtNjQgNjQtNjQgNjQgMjguNzEgNjQgNjQtMjguNzEgNjQtNjQgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1cm4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBDNzkuNyAxMDEuMyAwIDIyMC45IDAgMzAwLjUgMCA0MjUgNzkgNTEyIDE5MiA1MTJzMTkyLTg3IDE5Mi0yMTEuNWMwLTc5LjktODAuMi0xOTkuNi0xOTItMzAwLjV6bTAgNDQ4Yy01Ni41IDAtOTYtMzktOTYtOTQuOCAwLTEzLjUgNC42LTYxLjUgOTYtMTYxLjIgOTEuNCA5OS43IDk2IDE0Ny43IDk2IDE2MS4yIDAgNTUuOC0zOS41IDk0LjgtOTYgOTQuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVzQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OCAxMjhoLThWODBjMC00NC44LTk5LjItODAtMjI0LTgwUzMyIDM1LjIgMzIgODB2NDhoLThjLTEzLjI1IDAtMjQgMTAuNzQtMjQgMjR2ODBjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGg4djE2MGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJoMTkydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJoNi40YzE2IDAgMjUuNi0xMi44IDI1LjYtMjUuNlYyNTZoOGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di04MGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0ek0xNjAgNzJjMC00LjQyIDMuNTgtOCA4LThoMTc2YzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDE2OGMtNC40MiAwLTgtMy41OC04LThWNzJ6bS00OCAzMjhjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTEyOC0xMTJIMTI4Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMydi05NmMwLTE3LjY3IDE0LjMzLTMyIDMyLTMyaDExMnYxNjB6bTMyIDBWMTI4aDExMmMxNy42NyAwIDMyIDE0LjMzIDMyIDMydjk2YzAgMTcuNjctMTQuMzMgMzItMzIgMzJIMjcyem0xMjggMTEyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4IDEyOGgtOFY4MGMwLTQ0LjgtOTkuMi04MC0yMjQtODBTMzIgMzUuMiAzMiA4MHY0OGgtOGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY4MGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDh2MTYwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmgxOTJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmg2LjRjMTYgMCAyNS42LTEyLjggMjUuNi0yNS42VjI1Nmg4YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTgwYzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6TTExMiA0MDBjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTE2LTExMmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMlYxMjhjMC0xNy42NyAxNC4zMy0zMiAzMi0zMmgyNTZjMTcuNjcgMCAzMiAxNC4zMyAzMiAzMnYxMjhjMCAxNy42Ny0xNC4zMyAzMi0zMiAzMkgxMjh6bTI3MiAxMTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1c2luZXNzVGltZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMjI0Yy03OS41OSAwLTE0NCA2NC40MS0xNDQgMTQ0czY0LjQxIDE0NCAxNDQgMTQ0IDE0NC02NC40MSAxNDQtMTQ0LTY0LjQxLTE0NC0xNDQtMTQ0em02NCAxNTAuMjljMCA1LjM0LTQuMzcgOS43MS05LjcxIDkuNzFoLTYwLjU3Yy01LjM0IDAtOS43MS00LjM3LTkuNzEtOS43MXYtNzYuNTdjMC01LjM0IDQuMzctOS43MSA5LjcxLTkuNzFoMTIuNTdjNS4zNCAwIDkuNzEgNC4zNyA5LjcxIDkuNzFWMzUyaDM4LjI5YzUuMzQgMCA5LjcxIDQuMzcgOS43MSA5LjcxdjEyLjU4ek00OTYgMTkyYzUuNCAwIDEwLjcyLjMzIDE2IC44MVYxNDRjMC0yNS42LTIyLjQtNDgtNDgtNDhoLTgwVjQ4YzAtMjUuNi0yMi40LTQ4LTQ4LTQ4SDE3NmMtMjUuNiAwLTQ4IDIyLjQtNDggNDh2NDhINDhjLTI1LjYgMC00OCAyMi40LTQ4IDQ4djgwaDM5NS4xMmMyOC42LTIwLjA5IDYzLjM1LTMyIDEwMC44OC0zMnpNMzIwIDk2SDE5MlY2NGgxMjh2MzJ6bTYuODIgMjI0SDIwOGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTQ4SDB2MTQ0YzAgMjUuNiAyMi40IDQ4IDQ4IDQ4aDI5MS40M0MzMjcuMSA0MjMuOTYgMzIwIDM5Ni44MiAzMjAgMzY4YzAtMTYuNjYgMi40OC0zMi43MiA2LjgyLTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxjdWxhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAwSDQ4QzIyLjQgMCAwIDIyLjQgMCA0OHY0MTZjMCAyNS42IDIyLjQgNDggNDggNDhoMzUyYzI1LjYgMCA0OC0yMi40IDQ4LTQ4VjQ4YzAtMjUuNi0yMi40LTQ4LTQ4LTQ4ek0xMjggNDM1LjJjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44SDc2LjhjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNHptMC0xMjhjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44SDc2LjhjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNHptMTI4IDEyOGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTM4LjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNHptMC0xMjhjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjRjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjR6bTEyOCAxMjhjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjhWMjY4LjhjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djE2Ni40em0wLTI1NmMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhINzYuOGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44Vjc2LjhDNjQgNzAuNCA3MC40IDY0IDc2LjggNjRoMjk0LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djEwMi40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTkySDB2Mjcyem0zMjAtMTk2YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MHptMCAxMjhjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwek0xOTIgMjY4YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MHptMCAxMjhjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwek02NCAyNjhjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJINzZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDB6bTAgMTI4YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEySDc2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwek00MDAgNjRoLTQ4VjE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgxNjBWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjQ4aDQ0OHYtNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbGVuZGFyQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM2IDE2MEgxMmMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMzZjMC0yNi41MSAyMS40OS00OCA0OC00OGg0OFYxMmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NTJoMTI4VjEyYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY1Mmg0OGMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djM2YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6TTEyIDE5Mmg0MjRjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNjBjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYyMDRjMC02LjYyNyA1LjM3My0xMiAxMi0xMnptMzMzLjI5NiA5NS45NDdsLTI4LjE2OS0yOC4zOThjLTQuNjY3LTQuNzA1LTEyLjI2NS00LjczNi0xNi45Ny0uMDY4TDE5NC4xMiAzNjQuNjY1bC00NS45OC00Ni4zNTJjLTQuNjY3LTQuNzA1LTEyLjI2Ni00LjczNi0xNi45NzEtLjA2OGwtMjguMzk3IDI4LjE3Yy00LjcwNSA0LjY2Ny00LjczNiAxMi4yNjUtLjA2OCAxNi45N2w4Mi42MDEgODMuMjY5YzQuNjY3IDQuNzA1IDEyLjI2NSA0LjczNiAxNi45Ny4wNjhsMTQyLjk1My0xNDEuODA1YzQuNzA1LTQuNjY3IDQuNzM2LTEyLjI2NS4wNjgtMTYuOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbGVuZGFyRGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxOTJIMHYyNzJ6bTY0LTE5MmMwLTguOCA3LjItMTYgMTYtMTZoOTZjOC44IDAgMTYgNy4yIDE2IDE2djk2YzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2di05NnpNNDAwIDY0aC00OFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhIMTYwVjE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnY0OGg0NDh2LTQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzNiAxNjBIMTJjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMzZjMC0yNi41IDIxLjUtNDggNDgtNDhoNDhWMTJjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY1MmgxMjhWMTJjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY1Mmg0OGMyNi41IDAgNDggMjEuNSA0OCA0OHYzNmMwIDYuNi01LjQgMTItMTIgMTJ6TTEyIDE5Mmg0MjRjNi42IDAgMTIgNS40IDEyIDEydjI2MGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMjA0YzAtNi42IDUuNC0xMiAxMi0xMnptMzA0IDE5MmM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMkgxMzJjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMTg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhclBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM2IDE2MEgxMmMtNi42IDAtMTItNS40LTEyLTEydi0zNmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djM2YzAgNi42LTUuNCAxMi0xMiAxMnpNMTIgMTkyaDQyNGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjYwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyMDRjMC02LjYgNS40LTEyIDEyLTEyem0zMTYgMTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNjB2LTYwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY2MGgtNjBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoNjB2NjBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNjBoNjBjNi42IDAgMTItNS40IDEyLTEydi00MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FsZW5kYXJUaW1lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzYgMTYwSDEyYy02LjYgMC0xMi01LjQtMTItMTJ2LTM2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoMTI4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2MzZjMCA2LjYtNS40IDEyLTEyIDEyek0xMiAxOTJoNDI0YzYuNiAwIDEyIDUuNCAxMiAxMnYyNjBjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjIwNGMwLTYuNiA1LjQtMTIgMTItMTJ6bTI1Ny4zIDE2MGw0OC4xLTQ4LjFjNC43LTQuNyA0LjctMTIuMyAwLTE3bC0yOC4zLTI4LjNjLTQuNy00LjctMTIuMy00LjctMTcgMEwyMjQgMzA2LjdsLTQ4LjEtNDguMWMtNC43LTQuNy0xMi4zLTQuNy0xNyAwbC0yOC4zIDI4LjNjLTQuNyA0LjctNC43IDEyLjMgMCAxN2w0OC4xIDQ4LjEtNDguMSA0OC4xYy00LjcgNC43LTQuNyAxMi4zIDAgMTdsMjguMyAyOC4zYzQuNyA0LjcgMTIuMyA0LjcgMTcgMGw0OC4xLTQ4LjEgNDguMSA0OC4xYzQuNyA0LjcgMTIuMyA0LjcgMTcgMGwyOC4zLTI4LjNjNC43LTQuNyA0LjctMTIuMyAwLTE3TDI2OS4zIDM1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FsZW5kYXJXZWVrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxOTJIMHYyNzJ6bTY0LTE5MmMwLTguOCA3LjItMTYgMTYtMTZoMjg4YzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnYtNjR6TTQwMCA2NGgtNDhWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDE2MFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2NDhoNDQ4di00OGMwLTI2LjUtMjEuNS00OC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FsZW5kYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTkyaDQyNGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjYwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyMDRjMC02LjYgNS40LTEyIDEyLTEyem00MzYtNDR2LTM2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4aC00OFYxMmMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NTJIMTYwVjEyYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY1Mkg0OEMyMS41IDY0IDAgODUuNSAwIDExMnYzNmMwIDYuNiA1LjQgMTIgMTIgMTJoNDI0YzYuNiAwIDEyLTUuNCAxMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FtZXJhUmV0cm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMzJDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4em0wIDMyaDEwNmMzLjMgMCA2IDIuNyA2IDZ2MjBjMCAzLjMtMi43IDYtNiA2SDM4Yy0zLjMgMC02LTIuNy02LTZWODBjMC04LjggNy4yLTE2IDE2LTE2em00MjYgOTZIMzhjLTMuMyAwLTYtMi43LTYtNnYtMzZjMC0zLjMgMi43LTYgNi02aDEzOGwzMC4yLTQ1LjNjMS4xLTEuNyAzLTIuNyA1LTIuN0g0NjRjOC44IDAgMTYgNy4yIDE2IDE2djc0YzAgMy4zLTIuNyA2LTYgNnpNMjU2IDQyNGMtNjYuMiAwLTEyMC01My44LTEyMC0xMjBzNTMuOC0xMjAgMTIwLTEyMCAxMjAgNTMuOCAxMjAgMTIwLTUzLjggMTIwLTEyMCAxMjB6bTAtMjA4Yy00OC41IDAtODggMzkuNS04OCA4OHMzOS41IDg4IDg4IDg4IDg4LTM5LjUgODgtODgtMzkuNS04OC04OC04OHptLTQ4IDEwNGMtOC44IDAtMTYtNy4yLTE2LTE2IDAtMzUuMyAyOC43LTY0IDY0LTY0IDguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2Yy0xNy42IDAtMzIgMTQuNC0zMiAzMiAwIDguOC03LjIgMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMTQ0djI4OGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDg4bDEyLjMtMzIuOWM3LTE4LjcgMjQuOS0zMS4xIDQ0LjktMzEuMWgxMjUuNWMyMCAwIDM3LjkgMTIuNCA0NC45IDMxLjFMMzc2IDk2aDg4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0zNzYgMjg4YzAtNjYuMi01My44LTEyMC0xMjAtMTIwcy0xMjAgNTMuOC0xMjAgMTIwIDUzLjggMTIwIDEyMCAxMjAgMTIwLTUzLjggMTIwLTEyMHptLTMyIDBjMCA0OC41LTM5LjUgODgtODggODhzLTg4LTM5LjUtODgtODggMzkuNS04OCA4OC04OCA4OCAzOS41IDg4IDg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYW1wZ3JvdW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCA0NDhoLTI0LjY4TDM1OS41NCAxMTcuNzVsNTMuNDEtNzMuNTVjNS4xOS03LjE1IDMuNjEtMTcuMTYtMy41NC0yMi4zNWwtMjUuOS0xOC43OWMtNy4xNS01LjE5LTE3LjE1LTMuNjEtMjIuMzUgMy41NUwzMjAgNjMuMyAyNzguODMgNi42Yy01LjE5LTcuMTUtMTUuMi04Ljc0LTIyLjM1LTMuNTVsLTI1Ljg4IDE4LjhjLTcuMTUgNS4xOS04Ljc0IDE1LjItMy41NCAyMi4zNWw1My40MSA3My41NUw0MC42OCA0NDhIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDYwOGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTMyMCAyODhsMTE2LjM2IDE2MEgyMDMuNjRMMzIwIDI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FuZHlDYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5Ny41IDkyQzQ2OS42IDMzLjEgNDExLjggMCAzNTIuNCAwYy0yNy45IDAtNTYuMiA3LjMtODEuOCAyMi42TDI0My4xIDM5Yy0xNS4yIDkuMS0yMC4xIDI4LjctMTEgNDMuOWwzMi44IDU0LjljNiAxMCAxNi42IDE1LjYgMjcuNSAxNS42IDUuNiAwIDExLjItMS41IDE2LjQtNC41bDI3LjUtMTYuNGM1LjEtMy4xIDEwLjgtNC41IDE2LjQtNC41IDEwLjkgMCAyMS41IDUuNiAyNy41IDE1LjYgOS4xIDE1LjEgNC4xIDM0LjgtMTEgNDMuOUwxNS42IDM5Ny42Yy0xNS4yIDkuMS0yMC4xIDI4LjctMTEgNDMuOWwzMi44IDU0LjljNiAxMCAxNi42IDE1LjYgMjcuNSAxNS42IDUuNiAwIDExLjItMS41IDE2LjQtNC41TDQyOC42IDMwMWM3MS43LTQyLjkgMTA0LjYtMTMzLjUgNjguOS0yMDl6bS0xNzcuNyAxM2wtMi41IDEuNUwyOTYuOCA0NWM5LjctNC43IDE5LjgtOC4xIDMwLjMtMTAuMmwyMC42IDYxLjhjLTkuOC44LTE5LjQgMy4zLTI3LjkgOC40ek0xNDUuOSA0MzEuOGwtNjAuNS0zOC41IDMwLjgtMTguMyA2MC41IDM4LjUtMzAuOCAxOC4zem0xMDcuNS02My45bC02MC41LTM4LjUgMzAuOC0xOC4zIDYwLjUgMzguNS0zMC44IDE4LjN6TTM2NC4zIDMwMmwtNjAuNS0zOC41IDMwLjgtMTguMyA2MC41IDM4LjUtMzAuOCAxOC4zem0yMC40LTE5Ny4zbDQ2LTQ2YzguNCA2LjUgMTYgMTQuMSAyMi42IDIyLjZMNDA3LjYgMTI3Yy01LjctOS4zLTEzLjctMTYuOS0yMi45LTIyLjN6bTgyLjEgMTA3LjhsLTU5LjUtMTkuOGMzLjItNS4zIDUuOC0xMC45IDcuNC0xNy4xIDEuMS00LjUgMS43LTkuMSAxLjgtMTMuNmw2MC40IDIwLjFjLTIuMSAxMC40LTUuNSAyMC42LTEwLjEgMzAuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FubmFiaXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAzLjQ3IDM2MC4yNWMtMS41Ni0uODItMzIuMzktMTYuODktNzYuNzgtMjUuODEgNjQuMjUtNzUuMTIgODQuMDUtMTYxLjY3IDg0LjkzLTE2NS42NCAxLjE4LTUuMzMtLjQ0LTEwLjktNC4zLTE0Ljc3LTMuMDMtMy4wNC03LjEyLTQuNy0xMS4zMi00LjctMS4xNCAwLTIuMjkuMTItMy40NC4zOC0zLjg4Ljg1LTg2LjU0IDE5LjU5LTE2MC41OCA3OS43Ni4wMS0xLjQ2LjAxLTIuOTMuMDEtNC40IDAtMTE4Ljc5LTU5Ljk4LTIxMy43Mi02Mi41My0yMTcuN0ExNS45NzMgMTUuOTczIDAgMCAwIDI1NiAwYy01LjQ1IDAtMTAuNTMgMi43OC0xMy40NyA3LjM3LTIuNTUgMy45OC02Mi41MyA5OC45MS02Mi41MyAyMTcuNyAwIDEuNDcuMDEgMi45NC4wMSA0LjQtNzQuMDMtNjAuMTYtMTU2LjY5LTc4LjktMTYwLjU4LTc5Ljc2LTEuMTQtLjI1LTIuMjktLjM4LTMuNDQtLjM4LTQuMiAwLTguMjkgMS42Ni0xMS4zMiA0LjdBMTUuOTg2IDE1Ljk4NiAwIDAgMCAuMzggMTY4LjhjLjg4IDMuOTcgMjAuNjggOTAuNTIgODQuOTMgMTY1LjY0LTQ0LjM5IDguOTItNzUuMjEgMjQuOTktNzYuNzggMjUuODFhMTYuMDAzIDE2LjAwMyAwIDAgMC0uMDIgMjguMjljMi40NSAxLjI5IDYwLjc2IDMxLjcyIDEzMy40OSAzMS43MiA2LjE0IDAgMTEuOTYtLjEgMTcuNS0uMzEtMTEuMzcgMjIuMjMtMTYuNTIgMzguMzEtMTYuODEgMzkuMjItMS44IDUuNjgtLjI5IDExLjg5IDMuOTEgMTYuMTFhMTYuMDE5IDE2LjAxOSAwIDAgMCAxNi4xIDMuOTljMS44My0uNTcgMzcuNzItMTEuOTkgNzcuMy0zOS4yOVY1MDRjMCA0LjQyIDMuNTggOCA4IDhoMTZjNC40MiAwIDgtMy41OCA4LTh2LTY0LjAxYzM5LjU4IDI3LjMgNzUuNDcgMzguNzEgNzcuMyAzOS4yOWExNi4wMTkgMTYuMDE5IDAgMCAwIDE2LjEtMy45OWM0LjItNC4yMiA1LjcxLTEwLjQzIDMuOTEtMTYuMTEtLjI5LS45MS01LjQ1LTE2Ljk5LTE2LjgxLTM5LjIyIDUuNTQuMjEgMTEuMzcuMzEgMTcuNS4zMSA3Mi43MiAwIDEzMS4wNC0zMC40MyAxMzMuNDktMzEuNzIgNS4yNC0yLjc4IDguNTItOC4yMiA4LjUxLTE0LjE1LS4wMS01Ljk0LTMuMjktMTEuMzktOC41My0xNC4xNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2Fwc3VsZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTU1LjMgMzAwLjFMNDI0LjIgMTEyLjhDNDAxLjkgODEgMzY2LjQgNjQgMzMwLjQgNjRjLTIyLjYgMC00NS41IDYuNy02NS41IDIwLjctMTkuNyAxMy44LTMzLjcgMzIuOC00MS41IDUzLjhDMjIwLjUgNzkuMiAxNzIgMzIgMTEyIDMyIDUwLjEgMzIgMCA4Mi4xIDAgMTQ0djIyNGMwIDYxLjkgNTAuMSAxMTIgMTEyIDExMnMxMTItNTAuMSAxMTItMTEyVjIxOC45YzMuMyA4LjYgNy4zIDE3LjEgMTIuOCAyNUwzNjggNDMxLjJjMjIuMiAzMS44IDU3LjcgNDguOCA5My44IDQ4LjggMjIuNyAwIDQ1LjUtNi43IDY1LjUtMjAuNyA1MS43LTM2LjIgNjQuMi0xMDcuNSAyOC0xNTkuMnpNMTYwIDI1Nkg2NFYxNDRjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHYxMTJ6bTE5NC44IDQ0LjlsLTY1LjYtOTMuN2MtNy43LTExLTEwLjctMjQuNC04LjMtMzcuNiAyLjMtMTMuMiA5LjctMjQuOCAyMC43LTMyLjUgOC41LTYgMTguNS05LjEgMjguOC05LjEgMTYuNSAwIDMxLjkgOCA0MS4zIDIxLjVsNjUuNiA5My43LTgyLjUgNTcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOC42NiAyMTIuMzNsLTExLjI0LTI4LjEtMTkuOTMtNDkuODNDMzkwLjM4IDkxLjYzIDM0OS41NyA2NCAzMDMuNSA2NGgtMTI3Yy00Ni4wNiAwLTg2Ljg4IDI3LjYzLTEwMy45OSA3MC40bC0xOS45MyA0OS44My0xMS4yNCAyOC4xQzE3LjIyIDIyMS41IDAgMjQ0LjY2IDAgMjcydjQ4YzAgMTYuMTIgNi4xNiAzMC42NyAxNiA0MS45M1Y0MTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmgyNTZ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi01NC4wN2M5Ljg0LTExLjI1IDE2LTI1LjggMTYtNDEuOTN2LTQ4YzAtMjcuMzQtMTcuMjItNTAuNS00MS4zNC01OS42N3ptLTMwNi43My01NC4xNmM3LjI5LTE4LjIyIDI0Ljk0LTMwLjE3IDQ0LjU3LTMwLjE3aDEyN2MxOS42MyAwIDM3LjI4IDExLjk1IDQ0LjU3IDMwLjE3TDM2OCAyMDhIMTEybDE5LjkzLTQ5Ljgzek04MCAzMTkuOGMtMTkuMiAwLTMyLTEyLjc2LTMyLTMxLjlTNjAuOCAyNTYgODAgMjU2czQ4IDI4LjcxIDQ4IDQ3Ljg1LTI4LjggMTUuOTUtNDggMTUuOTV6bTMyMCAwYy0xOS4yIDAtNDggMy4xOS00OC0xNS45NVMzODAuOCAyNTYgNDAwIDI1NnMzMiAxMi43NiAzMiAzMS45LTEyLjggMzEuOS0zMiAzMS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJCYXR0ZXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAxMjhoLTMyVjgwYzAtOC44NC03LjE2LTE2LTE2LTE2aC05NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhIMTkyVjgwYzAtOC44NC03LjE2LTE2LTE2LTE2SDgwYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYyNTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg0NDhjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYxNjBjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNMTkyIDI2NGMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDExMmM0LjQyIDAgOCAzLjU4IDggOHYxNnptMjU2IDBjMCA0LjQyLTMuNTggOC04IDhoLTQwdjQwYzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTQwaC00MGMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDQwdi00MGMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHY0MGg0MGM0LjQyIDAgOCAzLjU4IDggOHYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyQ3Jhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQzLjI1IDIyMC44MWwtMTIuNDIgNDYuMzdjLTMuMDEgMTEuMjUtMy42MyAyMi44OS0yLjQxIDM0LjM5bC0zNS4yIDI4Ljk4Yy02LjU3IDUuNDEtMTYuMzEtLjQzLTE0LjYyLTguNzdsMTUuNDQtNzYuNjhjMS4wNi01LjI2LTIuNjYtMTAuMjgtOC0xMC43OWwtNzcuODYtNy41NWMtOC40Ny0uODItMTEuMjMtMTEuODMtNC4xNC0xNi41NGw2NS4xNS00My4zYzQuNDYtMi45NyA1LjM4LTkuMTUgMS45OC0xMy4yOUwyMS40NiA5My4yMmMtNS40MS02LjU3LjQzLTE2LjMgOC43OC0xNC42Mmw3Ni42OCAxNS40NGM1LjI2IDEuMDYgMTAuMjgtMi42NiAxMC44LThsNy41NS03Ny44NmMuODItOC40OCAxMS44My0xMS4yMyAxNi41NS00LjE0bDQzLjMgNjUuMTRjMi45NyA0LjQ2IDkuMTUgNS4zOCAxMy4yOSAxLjk4bDYwLjQtNDkuNzFjNi41Ny01LjQxIDE2LjMuNDMgMTQuNjIgOC43N0wyNjIuMSA4Ni4zOGMtMi43MSAzLjA1LTUuNDMgNi4wOS03LjkxIDkuNGwtMzIuMTUgNDIuOTctMTAuNzEgMTQuMzJjLTMyLjczIDguNzYtNTkuMTggMzQuNTMtNjguMDggNjcuNzR6bTQ5NC41NyAxMzIuNTFsLTEyLjQyIDQ2LjM2Yy0zLjEzIDExLjY4LTkuMzggMjEuNjEtMTcuNTUgMjkuMzZhNjYuODc2IDY2Ljg3NiAwIDAgMS04Ljc2IDdsLTEzLjk5IDUyLjIzYy0xLjE0IDQuMjctMy4xIDguMS01LjY1IDExLjM4LTcuNjcgOS44NC0yMC43NCAxNC42OC0zMy41NCAxMS4yNUw1MTUgNTAyLjYyYy0xNy4wNy00LjU3LTI3LjItMjIuMTItMjIuNjMtMzkuMTlsOC4yOC0zMC45MS0yNDcuMjgtNjYuMjYtOC4yOCAzMC45MWMtNC41NyAxNy4wNy0yMi4xMiAyNy4yLTM5LjE5IDIyLjYzbC0zMC45MS04LjI4Yy0xMi44LTMuNDMtMjEuNy0xNC4xNi0yMy40Mi0yNi41MS0uNTctNC4xMi0uMzUtOC40Mi43OS0xMi42OGwxMy45OS01Mi4yM2E2Ni42MiA2Ni42MiAwIDAgMS00LjA5LTEwLjQ1Yy0zLjItMTAuNzktMy42NS0yMi41Mi0uNTItMzQuMmwxMi40Mi00Ni4zN2M1LjMxLTE5LjggMTkuMzYtMzQuODMgMzYuODktNDIuMjFhNjQuMzM2IDY0LjMzNiAwIDAgMSAxOC40OS00LjcybDE4LjEzLTI0LjIzIDMyLjE1LTQyLjk3YzMuNDUtNC42MSA3LjE5LTguOSAxMS4yLTEyLjg0IDgtNy44OSAxNy4wMy0xNC40NCAyNi43NC0xOS41MSA0Ljg2LTIuNTQgOS44OS00LjcxIDE1LjA1LTYuNDkgMTAuMzMtMy41OCAyMS4xOS01LjYzIDMyLjI0LTYuMDQgMTEuMDUtLjQxIDIyLjMxLjgyIDMzLjQzIDMuOGwxMjIuNjggMzIuODdjMTEuMTIgMi45OCAyMS40OCA3LjU0IDMwLjg1IDEzLjQzYTExMS4xMSAxMTEuMTEgMCAwIDEgMzQuNjkgMzQuNWM4LjgyIDEzLjg4IDE0LjY0IDI5Ljg0IDE2LjY4IDQ2Ljk5bDYuMzYgNTMuMjkgMy41OSAzMC4wNWE2NC40OSA2NC40OSAwIDAgMSAyMi43NCAyOS45M2M0LjM5IDExLjg4IDUuMjkgMjUuMTkgMS43NSAzOC4zOXpNMjU1LjU4IDIzNC4zNGMtMTguNTUtNC45Ny0zNC4yMSA0LjA0LTM5LjE3IDIyLjUzLTQuOTYgMTguNDkgNC4xMSAzNC4xMiAyMi42NSAzOS4wOSAxOC41NSA0Ljk3IDQ1LjU0IDE1LjUxIDUwLjQ5LTIuOTggNC45Ni0xOC40OS0xNS40My01My42Ny0zMy45Ny01OC42NHptMjkwLjYxIDI4LjE3bC02LjM2LTUzLjI5Yy0uNTgtNC44Ny0xLjg5LTkuNTMtMy44Mi0xMy44Ni01LjgtMTIuOTktMTcuMi0yMy4wMS0zMS40Mi0yNi44MmwtMTIyLjY4LTMyLjg3YTQ4LjAwOCA0OC4wMDggMCAwIDAtNTAuODYgMTcuNjFsLTMyLjE1IDQyLjk3IDE3MiA0Ni4wOCA3NS4yOSAyMC4xOHptMTguNDkgNTQuNjVjLTE4LjU1LTQuOTctNTMuOCAxNS4zMS01OC43NSAzMy43OS00Ljk1IDE4LjQ5IDIzLjY5IDIyLjg2IDQyLjI0IDI3LjgzIDE4LjU1IDQuOTcgMzQuMjEtNC4wNCAzOS4xNy0yMi41MyA0Ljk1LTE4LjQ4LTQuMTEtMzQuMTItMjIuNjYtMzkuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhclNpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDE5MmgtMTZMNDE5LjIyIDU2LjAyQTY0LjAyNSA2NC4wMjUgMCAwIDAgMzY5LjI0IDMySDE1NS4zM2MtMjYuMTcgMC00OS43IDE1LjkzLTU5LjQyIDQwLjIzTDQ4IDE5NC4yNkMyMC40NCAyMDEuNCAwIDIyNi4yMSAwIDI1NnYxMTJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDhjMCA1My4wMiA0Mi45OCA5NiA5NiA5NnM5Ni00Mi45OCA5Ni05NmgxMjhjMCA1My4wMiA0Mi45OCA5NiA5NiA5NnM5Ni00Mi45OCA5Ni05Nmg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtODBjMC01My4wMi00Mi45OC05Ni05Ni05NnpNMTYwIDQzMmMtMjYuNDcgMC00OC0yMS41My00OC00OHMyMS41My00OCA0OC00OCA0OCAyMS41MyA0OCA0OC0yMS41MyA0OC00OCA0OHptNzItMjQwSDExNi45M2wzOC40LTk2SDIzMnY5NnptNDggMFY5Nmg4OS4yNGw3Ni44IDk2SDI4MHptMjAwIDI0MGMtMjYuNDcgMC00OC0yMS41My00OC00OHMyMS41My00OCA0OC00OCA0OCAyMS41MyA0OCA0OC0yMS41MyA0OC00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5OS45OSAxNzZoLTU5Ljg3bC0xNi42NC00MS42QzQwNi4zOCA5MS42MyAzNjUuNTcgNjQgMzE5LjUgNjRoLTEyN2MtNDYuMDYgMC04Ni44OCAyNy42My0xMDMuOTkgNzAuNEw3MS44NyAxNzZIMTIuMDFDNC4yIDE3Ni0xLjUzIDE4My4zNC4zNyAxOTAuOTFsNiAyNEM3LjcgMjIwLjI1IDEyLjUgMjI0IDE4LjAxIDIyNGgyMC4wN0MyNC42NSAyMzUuNzMgMTYgMjUyLjc4IDE2IDI3MnY0OGMwIDE2LjEyIDYuMTYgMzAuNjcgMTYgNDEuOTNWNDE2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJoMjU2djMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNTQuMDdjOS44NC0xMS4yNSAxNi0yNS44IDE2LTQxLjkzdi00OGMwLTE5LjIyLTguNjUtMzYuMjctMjIuMDctNDhINDk0YzUuNTEgMCAxMC4zMS0zLjc1IDExLjY0LTkuMDlsNi0yNGMxLjg5LTcuNTctMy44NC0xNC45MS0xMS42NS0xNC45MXptLTM1Mi4wNi0xNy44M2M3LjI5LTE4LjIyIDI0Ljk0LTMwLjE3IDQ0LjU3LTMwLjE3aDEyN2MxOS42MyAwIDM3LjI4IDExLjk1IDQ0LjU3IDMwLjE3TDM4NCAyMDhIMTI4bDE5LjkzLTQ5Ljgzek05NiAzMTkuOGMtMTkuMiAwLTMyLTEyLjc2LTMyLTMxLjlTNzYuOCAyNTYgOTYgMjU2czQ4IDI4LjcxIDQ4IDQ3Ljg1LTI4LjggMTUuOTUtNDggMTUuOTV6bTMyMCAwYy0xOS4yIDAtNDggMy4xOS00OC0xNS45NVMzOTYuOCAyNTYgNDE2IDI1NnMzMiAxMi43NiAzMiAzMS45LTEyLjggMzEuOS0zMiAzMS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJhdmFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiwyMDhhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsNDE2LDIwOFpNNjI0LDMyMEg1NzZWMTYwQTE2MCwxNjAsMCwwLDAsNDE2LDBINjRBNjQsNjQsMCwwLDAsMCw2NFYzMjBhNjQsNjQsMCwwLDAsNjQsNjRIOTZhOTYsOTYsMCwwLDAsMTkyLDBINjI0YTE2LDE2LDAsMCwwLDE2LTE2VjMzNkExNiwxNiwwLDAsMCw2MjQsMzIwWk0xOTIsNDMyYTQ4LDQ4LDAsMSwxLDQ4LTQ4QTQ4LjA1LDQ4LjA1LDAsMCwxLDE5Miw0MzJabTY0LTI0MGEzMiwzMiwwLDAsMS0zMiwzMkg5NmEzMiwzMiwwLDAsMS0zMi0zMlYxMjhBMzIsMzIsMCwwLDEsOTYsOTZIMjI0YTMyLDMyLDAsMCwxLDMyLDMyWk00NDgsMzIwSDMyMFYxMjhhMzIsMzIsMCwwLDEsMzItMzJoNjRhMzIsMzIsMCwwLDEsMzIsMzJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmV0RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMS4zIDE5MmgyNTcuM2MxNy44IDAgMjYuNyAyMS41IDE0LjEgMzQuMUwxNzQuMSAzNTQuOGMtNy44IDcuOC0yMC41IDcuOC0yOC4zIDBMMTcuMiAyMjYuMUM0LjYgMjEzLjUgMTMuNSAxOTIgMzEuMyAxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmV0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMTI3LjMzOHYyNTcuMzI0YzAgMTcuODE4LTIxLjU0MyAyNi43NDEtMzQuMTQyIDE0LjE0MkwyOS4xOTYgMjcwLjE0MmMtNy44MS03LjgxLTcuODEtMjAuNDc0IDAtMjguMjg0bDEyOC42NjItMTI4LjY2MmMxMi41OTktMTIuNiAzNC4xNDItMy42NzYgMzQuMTQyIDE0LjE0MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyZXRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDM4NC42NjJWMTI3LjMzOGMwLTE3LjgxOCAyMS41NDMtMjYuNzQxIDM0LjE0Mi0xNC4xNDJsMTI4LjY2MiAxMjguNjYyYzcuODEgNy44MSA3LjgxIDIwLjQ3NCAwIDI4LjI4NEwzNC4xNDIgMzk4LjgwNEMyMS41NDMgNDExLjQwNCAwIDQwMi40OCAwIDM4NC42NjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmV0U3F1YXJlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTkyLjUgMjIwLjVsMTIzIDEyM2M0LjcgNC43IDEyLjMgNC43IDE3IDBsMTIzLTEyM2M3LjYtNy42IDIuMi0yMC41LTguNS0yMC41SDEwMWMtMTAuNyAwLTE2LjEgMTIuOS04LjUgMjAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyZXRTcXVhcmVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCA0ODBINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OHpNMjU5LjUxNSAxMjQuNDg1bC0xMjMuMDMgMTIzLjAzYy00LjY4NiA0LjY4Ni00LjY4NiAxMi4yODQgMCAxNi45NzFsMTIzLjAyOSAxMjMuMDI5YzcuNTYgNy41NiAyMC40ODUgMi4yMDYgMjAuNDg1LTguNDg1VjEzMi45NzFjLjAwMS0xMC42OTEtMTIuOTI1LTE2LjA0NS0yMC40ODQtOC40ODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmV0U3F1YXJlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMzJoMzUyYzI2LjUxIDAgNDggMjEuNDkgNDggNDh2MzUyYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OHptMTQwLjQ4NSAzNTUuNTE1bDEyMy4wMjktMTIzLjAyOWM0LjY4Ni00LjY4NiA0LjY4Ni0xMi4yODQgMC0xNi45NzFsLTEyMy4wMjktMTIzLjAzYy03LjU2LTcuNTYtMjAuNDg1LTIuMjA2LTIwLjQ4NSA4LjQ4NXYyNDYuMDU5YzAgMTAuNjkxIDEyLjkyNiAxNi4wNDUgMjAuNDg1IDguNDg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJldFNxdWFyZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDMyVjgwYzAtMjYuNTEgMjEuNDktNDggNDgtNDhoMzUyYzI2LjUxIDAgNDggMjEuNDkgNDggNDh2MzUyYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDh6bTM1NS41MTUtMTQwLjQ4NWwtMTIzLjAzLTEyMy4wM2MtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDkyLjQ4NSAyOTEuNTE1Yy03LjU2IDcuNTYtMi4yMDYgMjAuNDg1IDguNDg1IDIwLjQ4NWgyNDYuMDU5YzEwLjY5MSAwIDE2LjA0NS0xMi45MjYgOC40ODYtMjAuNDg1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJldFVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OC42NjIgMzUySDMxLjMzOGMtMTcuODE4IDAtMjYuNzQxLTIxLjU0My0xNC4xNDItMzQuMTQybDEyOC42NjItMTI4LjY2MmM3LjgxLTcuODEgMjAuNDc0LTcuODEgMjguMjg0IDBsMTI4LjY2MiAxMjguNjYyYzEyLjYgMTIuNTk5IDMuNjc2IDM0LjE0Mi0xNC4xNDIgMzQuMTQyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJyb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk4LjIgMTU2LjZjLTUyLjctMjUuNy0xMTQuNS0xMC41LTE1MC4yIDMyLjhsNTUuMiA1NS4yYzYuMyA2LjMgNi4zIDE2LjQgMCAyMi42LTMuMSAzLjEtNy4yIDQuNy0xMS4zIDQuN3MtOC4yLTEuNi0xMS4zLTQuN0wxMzAuNCAyMTcgMi4zIDQ3OS43Yy0yLjkgNi0zLjEgMTMuMyAwIDE5LjcgNS40IDExLjEgMTguOSAxNS43IDMwIDEwLjNsMTMzLjYtNjUuMi00OS4yLTQ5LjJjLTYuMy02LjItNi4zLTE2LjQgMC0yMi42IDYuMy02LjIgMTYuNC02LjIgMjIuNiAwbDU3IDU3IDEwMi00OS44YzI0LTExLjcgNDQuNS0zMS4zIDU3LjEtNTcuMSAzMC4xLTYxLjcgNC41LTEzNi4xLTU3LjItMTY2LjJ6bTkyLjEtMzQuOUM0MDkuOCA4MSAzOTkuNyAzMi45IDM2MCAwYy01MC4zIDQxLjctNTIuNSAxMDcuNS03LjkgMTUxLjlsOCA4YzQ0LjQgNDQuNiAxMTAuMyA0Mi40IDE1MS45LTcuOS0zMi45LTM5LjctODEtNDkuOC0xMjEuNy0zMC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJ0QXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNC43MTcgMzIwSDIxMS41NzJsNi41NDUgMzJoMjY4LjQxOGMxNS40MDEgMCAyNi44MTYgMTQuMzAxIDIzLjQwMyAyOS4zMTlsLTUuNTE3IDI0LjI3NkM1MjMuMTEyIDQxNC42NjggNTM2IDQzMy44MjggNTM2IDQ1NmMwIDMxLjIwMi0yNS41MTkgNTYuNDQ0LTU2LjgyNCA1NS45OTQtMjkuODIzLS40MjktNTQuMzUtMjQuNjMxLTU1LjE1NS01NC40NDctLjQ0LTE2LjI4NyA2LjA4NS0zMS4wNDkgMTYuODAzLTQxLjU0OEgyMzEuMTc2QzI0MS41NTMgNDI2LjE2NSAyNDggNDQwLjMyNiAyNDggNDU2YzAgMzEuODEzLTI2LjUyOCA1Ny40MzEtNTguNjcgNTUuOTM4LTI4LjU0LTEuMzI1LTUxLjc1MS0yNC4zODUtNTMuMjUxLTUyLjkxNy0xLjE1OC0yMi4wMzQgMTAuNDM2LTQxLjQ1NSAyOC4wNTEtNTEuNTg2TDkzLjg4MyA2NEgyNEMxMC43NDUgNjQgMCA1My4yNTUgMCA0MFYyNEMwIDEwLjc0NSAxMC43NDUgMCAyNCAwaDEwMi41MjljMTEuNDAxIDAgMjEuMjI4IDguMDIxIDIzLjUxMyAxOS4xOUwxNTkuMjA4IDY0SDU1MS45OWMxNS40MDEgMCAyNi44MTYgMTQuMzAxIDIzLjQwMyAyOS4zMTlsLTQ3LjI3MyAyMDhDNTI1LjYzNyAzMTIuMjQ2IDUxNS45MjMgMzIwIDUwNC43MTcgMzIwek00MDMuMDI5IDE5MkgzNjB2LTYwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjYwaC00My4wMjljLTEwLjY5MSAwLTE2LjA0NSAxMi45MjYtOC40ODUgMjAuNDg1bDY3LjAyOSA2Ny4wMjljNC42ODYgNC42ODYgMTIuMjg0IDQuNjg2IDE2Ljk3MSAwbDY3LjAyOS02Ny4wMjljNy41NTktNy41NTkgMi4yMDUtMjAuNDg1LTguNDg2LTIwLjQ4NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FydFBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0LjcxNyAzMjBIMjExLjU3Mmw2LjU0NSAzMmgyNjguNDE4YzE1LjQwMSAwIDI2LjgxNiAxNC4zMDEgMjMuNDAzIDI5LjMxOWwtNS41MTcgMjQuMjc2QzUyMy4xMTIgNDE0LjY2OCA1MzYgNDMzLjgyOCA1MzYgNDU2YzAgMzEuMjAyLTI1LjUxOSA1Ni40NDQtNTYuODI0IDU1Ljk5NC0yOS44MjMtLjQyOS01NC4zNS0yNC42MzEtNTUuMTU1LTU0LjQ0Ny0uNDQtMTYuMjg3IDYuMDg1LTMxLjA0OSAxNi44MDMtNDEuNTQ4SDIzMS4xNzZDMjQxLjU1MyA0MjYuMTY1IDI0OCA0NDAuMzI2IDI0OCA0NTZjMCAzMS44MTMtMjYuNTI4IDU3LjQzMS01OC42NyA1NS45MzgtMjguNTQtMS4zMjUtNTEuNzUxLTI0LjM4NS01My4yNTEtNTIuOTE3LTEuMTU4LTIyLjAzNCAxMC40MzYtNDEuNDU1IDI4LjA1MS01MS41ODZMOTMuODgzIDY0SDI0QzEwLjc0NSA2NCAwIDUzLjI1NSAwIDQwVjI0QzAgMTAuNzQ1IDEwLjc0NSAwIDI0IDBoMTAyLjUyOWMxMS40MDEgMCAyMS4yMjggOC4wMjEgMjMuNTEzIDE5LjE5TDE1OS4yMDggNjRINTUxLjk5YzE1LjQwMSAwIDI2LjgxNiAxNC4zMDEgMjMuNDAzIDI5LjMxOWwtNDcuMjczIDIwOEM1MjUuNjM3IDMxMi4yNDYgNTE1LjkyMyAzMjAgNTA0LjcxNyAzMjB6TTQwOCAxNjhoLTQ4di00MGMwLTguODM3LTcuMTYzLTE2LTE2LTE2aC0xNmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnY0MGgtNDhjLTguODM3IDAtMTYgNy4xNjMtMTYgMTZ2MTZjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmg0OHY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2aDE2YzguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTQwaDQ4YzguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTE2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhc2hSZWdpc3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTEuMSAzNzguOGwtMjYuNy0xNjBjLTIuNi0xNS40LTE1LjktMjYuNy0zMS42LTI2LjdIMjA4di02NGg5NmM4LjggMCAxNi03LjIgMTYtMTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2SDQ4Yy04LjggMC0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2aDk2djY0SDU5LjFjLTE1LjYgMC0yOSAxMS4zLTMxLjYgMjYuN0wuOCAzNzguN2MtLjYgMy41LS45IDctLjkgMTAuNVY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMydi05MC43Yy4xLTMuNS0uMi03LS44LTEwLjV6TTI4MCAyNDhjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZoLTE2Yy04LjggMC0xNi03LjItMTYtMTZ2LTE2em0tMzIgNjRoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNmgtMTZjLTguOCAwLTE2LTcuMi0xNi0xNnYtMTZjMC04LjggNy4yLTE2IDE2LTE2em0tMzItODBjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNmgtMTZjLTguOCAwLTE2LTcuMi0xNi0xNnYtMTZjMC04LjggNy4yLTE2IDE2LTE2aDE2ek04MCA4MFY0OGgxOTJ2MzJIODB6bTQwIDIwMGgtMTZjLTguOCAwLTE2LTcuMi0xNi0xNnYtMTZjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmMwIDguOC03LjIgMTYtMTYgMTZ6bTE2IDY0di0xNmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNmgtMTZjLTguOCAwLTE2LTcuMi0xNi0xNnptMjE2IDExMmMwIDQuNC0zLjYgOC04IDhIMTY4Yy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxNzZjNC40IDAgOCAzLjYgOCA4djE2em0yNC0xMTJjMCA4LjgtNy4yIDE2LTE2IDE2aC0xNmMtOC44IDAtMTYtNy4yLTE2LTE2di0xNmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2em00OC04MGMwIDguOC03LjIgMTYtMTYgMTZoLTE2Yy04LjggMC0xNi03LjItMTYtMTZ2LTE2YzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTAuNTkgMTkyYy0yMC4xOCAwLTEwNi44MiAxLjk4LTE2Mi41OSA4NS45NVYxOTJjMC01Mi45NC00My4wNi05Ni05Ni05Ni0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyYzE3LjY0IDAgMzIgMTQuMzYgMzIgMzJ2MjU2YzAgMzUuMyAyOC43IDY0IDY0IDY0aDE3NmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMzJsMTI4LTk2djE0NGMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyODkuODZjLTEwLjI5IDIuNjctMjAuODkgNC41NC0zMiA0LjU0LTYxLjgxIDAtMTEzLjUyLTQ0LjA1LTEyNS40MS0xMDIuNHpNNDQ4IDk2aC02NGwtNjQtNjR2MTM0LjRjMCA1My4wMiA0Mi45OCA5NiA5NiA5NnM5Ni00Mi45OCA5Ni05NlYzMmwtNjQgNjR6bS03MiA4MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNiAxNiA3LjE2IDE2IDE2LTcuMTYgMTYtMTYgMTZ6bTgwIDBjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTYgMTYgNy4xNiAxNiAxNi03LjE2IDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDZXJ0aWZpY2F0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTguNjIyIDI1NS45Mmw0NS45ODUtNDUuMDA1YzEzLjcwOC0xMi45NzcgNy4zMTYtMzYuMDM5LTEwLjY2NC00MC4zMzlsLTYyLjY1LTE1Ljk5IDE3LjY2MS02Mi4wMTVjNC45OTEtMTcuODM4LTExLjgyOS0zNC42NjMtMjkuNjYxLTI5LjY3MWwtNjEuOTk0IDE3LjY2Ny0xNS45ODQtNjIuNjcxQzMzNy4wODUuMTk3IDMxMy43NjUtNi4yNzYgMzAwLjk5IDcuMjI4TDI1NiA1My41NyAyMTEuMDExIDcuMjI5Yy0xMi42My0xMy4zNTEtMzYuMDQ3LTcuMjM0LTQwLjMyNSAxMC42NjhsLTE1Ljk4NCA2Mi42NzEtNjEuOTk1LTE3LjY2N0M3NC44NyA1Ny45MDcgNTguMDU2IDc0LjczOCA2My4wNDYgOTIuNTcybDE3LjY2MSA2Mi4wMTUtNjIuNjUgMTUuOTlDLjA2OSAxNzQuODc4LTYuMzEgMTk3Ljk0NCA3LjM5MiAyMTAuOTE1bDQ1Ljk4NSA0NS4wMDUtNDUuOTg1IDQ1LjAwNGMtMTMuNzA4IDEyLjk3Ny03LjMxNiAzNi4wMzkgMTAuNjY0IDQwLjMzOWw2Mi42NSAxNS45OS0xNy42NjEgNjIuMDE1Yy00Ljk5MSAxNy44MzggMTEuODI5IDM0LjY2MyAyOS42NjEgMjkuNjcxbDYxLjk5NC0xNy42NjcgMTUuOTg0IDYyLjY3MWM0LjQzOSAxOC41NzUgMjcuNjk2IDI0LjAxOCA0MC4zMjUgMTAuNjY4TDI1NiA0NTguNjFsNDQuOTg5IDQ2LjAwMWMxMi41IDEzLjQ4OCAzNS45ODcgNy40ODYgNDAuMzI1LTEwLjY2OGwxNS45ODQtNjIuNjcxIDYxLjk5NCAxNy42NjdjMTcuODM2IDQuOTk0IDM0LjY1MS0xMS44MzcgMjkuNjYxLTI5LjY3MWwtMTcuNjYxLTYyLjAxNSA2Mi42NS0xNS45OWMxNy45ODctNC4zMDIgMjQuMzY2LTI3LjM2NyAxMC42NjQtNDAuMzM5bC00NS45ODQtNDUuMDA0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFpciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgMTI4YzAtMjkuNSAxNi4yLTU1IDQwLTY4LjlWMjU2aDQ4VjQ4aDQ4djIwOGg0OFY1OS4xYzIzLjggMTMuOSA0MCAzOS40IDQwIDY4Ljl2MTI4aDQ4VjEyOEMzODQgNTcuMyAzMjYuNyAwIDI1NiAwaC02NEMxMjEuMyAwIDY0IDU3LjMgNjQgMTI4djEyOGg0OHptMzM0LjMgMjEzLjlsLTEwLjctMzJjLTQuNC0xMy4xLTE2LjYtMjEuOS0zMC40LTIxLjlINDIuN2MtMTMuOCAwLTI2IDguOC0zMC40IDIxLjlsLTEwLjcgMzJDLTUuMiAzNjIuNiAxMC4yIDM4NCAzMiAzODR2MTEyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzg0aDI1NnYxMTJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzODRjMjEuOCAwIDM3LjItMjEuNCAzMC4zLTQyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYWxrYm9hcmRUZWFjaGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCAzNTJjLTIuMzkgMC00Ljc4LjM1LTcuMDYgMS4wOUMxODcuOTggMzU3LjMgMTc0LjM1IDM2MCAxNjAgMzYwYy0xNC4zNSAwLTI3Ljk4LTIuNy00MC45NS02LjkxLTIuMjgtLjc0LTQuNjYtMS4wOS03LjA1LTEuMDlDNDkuOTQgMzUyLS4zMyA0MDIuNDggMCA0NjQuNjIuMTQgNDkwLjg4IDIxLjczIDUxMiA0OCA1MTJoMjI0YzI2LjI3IDAgNDcuODYtMjEuMTIgNDgtNDcuMzguMzMtNjIuMTQtNDkuOTQtMTEyLjYyLTExMi0xMTIuNjJ6bS00OC0zMmM1My4wMiAwIDk2LTQyLjk4IDk2LTk2cy00Mi45OC05Ni05Ni05Ni05NiA0Mi45OC05NiA5NiA0Mi45OCA5NiA5NiA5NnpNNTkyIDBIMjA4Yy0yNi40NyAwLTQ4IDIyLjI1LTQ4IDQ5LjU5Vjk2YzIzLjQyIDAgNDUuMSA2Ljc4IDY0IDE3LjhWNjRoMzUydjI4OGgtNjR2LTY0SDM4NHY2NGgtNzYuMjRjMTkuMSAxNi42OSAzMy4xMiAzOC43MyAzOS42OSA2NEg1OTJjMjYuNDcgMCA0OC0yMi4yNSA0OC00OS41OVY0OS41OUM2NDAgMjIuMjUgNjE4LjQ3IDAgNTkyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYWxrYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNjRoNDQ4djM1Mmg2NFY0MGMwLTIyLjA2LTE3Ljk0LTQwLTQwLTQwSDcyQzQ5Ljk0IDAgMzIgMTcuOTQgMzIgNDB2Mzc2aDY0VjY0em01MjggMzg0SDQ4MHYtNjRIMjg4djY0SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg2MDhjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFyZ2luZ1N0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDQ0OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzIwYzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnptMjA4LTMyMFY4MGMwLTguODQtNy4xNi0xNi0xNi0xNnMtMTYgNy4xNi0xNiAxNnY0OGgtMzJWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZzLTE2IDcuMTYtMTYgMTZ2NDhoLTE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDM1Ljc2IDIzLjYyIDY1LjY5IDU2IDc1LjkzdjExOC40OWMwIDEzLjk1LTkuNSAyNi45Mi0yMy4yNiAyOS4xOUM0MzEuMjIgNDAyLjUgNDE2IDM4OC45OSA0MTYgMzcydi0yOGMwLTQ4LjYtMzkuNC04OC04OC04OGgtOFY2NGMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0SDk2QzYwLjY1IDAgMzIgMjguNjUgMzIgNjR2MzUyaDI4OFYzMDRoOGMyMi4wOSAwIDQwIDE3LjkxIDQwIDQwdjI0LjYxYzAgMzkuNjcgMjguOTIgNzUuMTYgNjguNDEgNzkuMDFDNDgxLjcxIDQ1Mi4wNSA1MjAgNDE2LjQxIDUyMCAzNzJWMjUxLjkzYzMyLjM4LTEwLjI0IDU2LTQwLjE3IDU2LTc1Ljkzdi0zMmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMTZ6bS0yODMuOTEgNDcuNzZsLTkzLjcgMTM5Yy0yLjIgMy4zMy02LjIxIDUuMjQtMTAuMzkgNS4yNC03LjY3IDAtMTMuNDctNi4yOC0xMS42Ny0xMi45MkwxNjcuMzUgMjI0SDEwOGMtNy4yNSAwLTEyLjg1LTUuNTktMTEuODktMTEuODlsMTYtMTA3QzExMi45IDk5LjkgMTE3Ljk4IDk2IDEyNCA5Nmg2OGM3Ljg4IDAgMTMuNjIgNi41NCAxMS42IDEzLjIxTDE5MiAxNjBoNTcuN2M5LjI0IDAgMTUuMDEgOC43OCAxMC4zOSAxNS43NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hhcnRBcmVhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMCAzODRjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMkgxMmMtNi42IDAtMTItNS40LTEyLTEyVjc2YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2MzA4aDQzNnpNMzcyLjcgMTU5LjVMMjg4IDIxNmwtODUuMy0xMTMuN2MtNS4xLTYuOC0xNS41LTYuMy0xOS45IDFMOTYgMjQ4djEwNGgzODRsLTg5LjktMTg3LjhjLTMuMi02LjUtMTEuNC04LjctMTcuNC00Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYXJ0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzMi44IDMyMGgzOC40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOFYxNzIuOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYxMzQuNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6bTk2IDBoMzguNGM2LjQgMCAxMi44LTYuNCAxMi44LTEyLjhWNzYuOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYyMzAuNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6bS0yODggMGgzOC40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOHYtNzAuNGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHY3MC40YzAgNi40IDYuNCAxMi44IDEyLjggMTIuOHptOTYgMGgzOC40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOFYxMDguOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYxOTguNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6TTQ5NiAzODRINjRWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiA2NCAwIDcxLjE2IDAgODB2MzM2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNDY0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hhcnRMaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAzODRINjRWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiA2NCAwIDcxLjE2IDAgODB2MzM2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNDY0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNNDY0IDk2SDM0NS45NGMtMjEuMzggMC0zMi4wOSAyNS44NS0xNi45NyA0MC45N2wzMi40IDMyLjRMMjg4IDI0Mi43NWwtNzMuMzctNzMuMzdjLTEyLjUtMTIuNS0zMi43Ni0xMi41LTQ1LjI1IDBsLTY4LjY5IDY4LjY5Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDIyLjYyIDIyLjYyYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBMMTkyIDIzNy4yNWw3My4zNyA3My4zN2MxMi41IDEyLjUgMzIuNzYgMTIuNSA0NS4yNSAwbDk2LTk2IDMyLjQgMzIuNGMxNS4xMiAxNS4xMiA0MC45NyA0LjQxIDQwLjk3LTE2Ljk3VjExMmMuMDEtOC44NC03LjE1LTE2LTE1Ljk5LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFydFBpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTQ0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjcuNzkgMjg4SDI5MC41bDE1OC4wMyAxNTguMDNjNi4wNCA2LjA0IDE1Ljk4IDYuNTMgMjIuMTkuNjggMzguNy0zNi40NiA2NS4zMi04NS42MSA3My4xMy0xNDAuODYgMS4zNC05LjQ2LTYuNTEtMTcuODUtMTYuMDYtMTcuODV6bS0xNS44My02NC44QzUwMy43MiAxMDMuNzQgNDA4LjI2IDguMjggMjg4LjguMDQgMjc5LjY4LS41OSAyNzIgNy4xIDI3MiAxNi4yNFYyNDBoMjIzLjc3YzkuMTQgMCAxNi44Mi03LjY4IDE2LjE5LTE2Ljh6TTIyNCAyODhWNTAuNzFjMC05LjU1LTguMzktMTcuNC0xNy44NC0xNi4wNkM4Ni45OSA1MS40OS00LjEgMTU1LjYuMTQgMjgwLjM3IDQuNSA0MDguNTEgMTE0LjgzIDUxMy41OSAyNDMuMDMgNTExLjk4YzUwLjQtLjYzIDk2Ljk3LTE2Ljg3IDEzNS4yNi00NC4wMyA3LjktNS42IDguNDItMTcuMjMgMS41Ny0yNC4wOEwyMjQgMjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVja0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2YzAgMTM2Ljk2Ny0xMTEuMDMzIDI0OC0yNDggMjQ4UzggMzkyLjk2NyA4IDI1NiAxMTkuMDMzIDggMjU2IDhzMjQ4IDExMS4wMzMgMjQ4IDI0OHpNMjI3LjMxNCAzODcuMzE0bDE4NC0xODRjNi4yNDgtNi4yNDggNi4yNDgtMTYuMzc5IDAtMjIuNjI3bC0yMi42MjctMjIuNjI3Yy02LjI0OC02LjI0OS0xNi4zNzktNi4yNDktMjIuNjI4IDBMMjE2IDMwOC4xMThsLTcwLjA1OS03MC4wNTljLTYuMjQ4LTYuMjQ4LTE2LjM3OS02LjI0OC0yMi42MjggMGwtMjIuNjI3IDIyLjYyN2MtNi4yNDggNi4yNDgtNi4yNDggMTYuMzc5IDAgMjIuNjI3bDEwNCAxMDRjNi4yNDkgNi4yNDkgMTYuMzc5IDYuMjQ5IDIyLjYyOC4wMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZWNrRG91YmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNSAxNzQuOGwtMzkuNi0zOS42Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwxOTIgMzc0LjcgODAuNiAyNjMuMmMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMNyAzMDIuOWMtOS40IDkuNC05LjQgMjQuNiAwIDM0TDE3NSA1MDVjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsMjk2LTI5Ni4yYzkuNC05LjUgOS40LTI0LjcuMS0zNHptLTMyNC4zIDEwNmM2LjIgNi4zIDE2LjQgNi4zIDIyLjYgMGwyMDgtMjA4LjJjNi4yLTYuMyA2LjItMTYuNCAwLTIyLjZMMzY2LjEgNC43Yy02LjItNi4zLTE2LjQtNi4zLTIyLjYgMEwxOTIgMTU2LjJsLTU1LjQtNTUuNWMtNi4yLTYuMy0xNi40LTYuMy0yMi42IDBMNjguNyAxNDZjLTYuMiA2LjMtNi4yIDE2LjQgMCAyMi42bDExMiAxMTIuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlY2tTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDQ4MEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDM1MmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djM1MmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4em0tMjA0LjY4Ni05OC4wNTlsMTg0LTE4NGM2LjI0OC02LjI0OCA2LjI0OC0xNi4zNzkgMC0yMi42MjdsLTIyLjYyNy0yMi42MjdjLTYuMjQ4LTYuMjQ4LTE2LjM3OS02LjI0OS0yMi42MjggMEwxODQgMzAyLjc0NWwtNzAuMDU5LTcwLjA1OWMtNi4yNDgtNi4yNDgtMTYuMzc5LTYuMjQ4LTIyLjYyOCAwbC0yMi42MjcgMjIuNjI3Yy02LjI0OCA2LjI0OC02LjI0OCAxNi4zNzkgMCAyMi42MjdsMTA0IDEwNGM2LjI0OSA2LjI1IDE2LjM3OSA2LjI1IDIyLjYyOC4wMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3My44OTggNDM5LjQwNGwtMTY2LjQtMTY2LjRjLTkuOTk3LTkuOTk3LTkuOTk3LTI2LjIwNiAwLTM2LjIwNGwzNi4yMDMtMzYuMjA0YzkuOTk3LTkuOTk4IDI2LjIwNy05Ljk5OCAzNi4yMDQgMEwxOTIgMzEyLjY5IDQzMi4wOTUgNzIuNTk2YzkuOTk3LTkuOTk3IDI2LjIwNy05Ljk5NyAzNi4yMDQgMGwzNi4yMDMgMzYuMjA0YzkuOTk3IDkuOTk3IDkuOTk3IDI2LjIwNiAwIDM2LjIwNGwtMjk0LjQgMjk0LjQwMWMtOS45OTggOS45OTctMjYuMjA3IDkuOTk3LTM2LjIwNC0uMDAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVlc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyODh2MTYwYTMyIDMyIDAgMCAwIDMyIDMyaDQ0OGEzMiAzMiAwIDAgMCAzMi0zMlYyODh6TTI5OS44MyAzMmEzMiAzMiAwIDAgMC0yMS4xMyA3TDAgMjU2aDUxMmMwLTExOS44OS05NC0yMTcuOC0yMTIuMTctMjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc0Jpc2hvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDI4Ny44OGMwIDUxLjY0IDIyLjE0IDczLjgzIDU2IDg0LjZWNDE2aDE5MnYtNDMuNTJjMzMuODYtMTAuNzcgNTYtMzMgNTYtODQuNiAwLTMwLjYxLTEwLjczLTY3LjEtMjYuNjktMTAyLjU2TDE4NSAyODUuNjVhOCA4IDAgMCAxLTExLjMxIDBsLTExLjMxLTExLjMxYTggOCAwIDAgMSAwLTExLjMxTDI3MC4yNyAxNTUuMWMtMjAuOC0zNy45MS00Ni40Ny03Mi4xLTcwLjg3LTkyLjU5QzIxMy40IDU5LjA5IDIyNCA0Ny4wNSAyMjQgMzJhMzIgMzIgMCAwIDAtMzItMzJoLTY0YTMyIDMyIDAgMCAwLTMyIDMyYzAgMTUgMTAuNiAyNy4wOSAyNC42IDMwLjUxQzY3LjgxIDEwNi44IDggMjE0LjUgOCAyODcuODh6TTMwNCA0NDhIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMjg4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3NCb2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTUuOS4yaC02NHY2NGg2NHpNMCA2NC4xN3Y2NGg2NHYtNjR6TTEyOCAuMkg2NHY2NGg2NHptNjQgMjU1Ljl2NjRoNjR2LTY0ek0wIDE5Mi4xMnY2NGg2NHYtNjR6TTM4My44NS4yaC02NHY2NGg2NHptMTI4IDBoLTY0djY0aDY0ek0xMjggMjU2LjFINjR2NjRoNjR6TTUxMS44IDQ0OHYtNjRoLTY0djY0em0wLTEyOHYtNjRoLTY0djY0ek0zODMuODUgNTEyaDY0di02NGgtNjR6bTEyOC0zMTkuODh2LTY0aC02NHY2NHpNMTI4IDUxMmg2NHYtNjRoLTY0ek0wIDUxMmg2NHYtNjRIMHptMjU1LjkgMGg2NHYtNjRoLTY0ek0wIDMyMC4wN3Y2NGg2NHYtNjR6bTMxOS44OC0xOTEuOTJ2LTY0aC02NHY2NHptLTY0IDEyOGg2NHYtNjRoLTY0em0tNjQgMTI4djY0aDY0di02NHptMTI4LTY0aDY0di02NGgtNjR6bTAtMTI3Ljk1aDY0di02NGgtNjR6bTAgMTkxLjkzdjY0aDY0di02NHpNNjQgMzg0LjA1djY0aDY0di02NHptMTI4LTI1NS45di02NGgtNjR2NjR6bTE5MS45MiAyNTUuOWg2NHYtNjRoLTY0em0tMTI4LTE5MS45M3YtNjRoLTY0djY0em0xMjgtMTI3Ljk1djY0aDY0di02NHptLTEyOCAyNTUuOXY2NGg2NHYtNjR6bS02NC0xMjcuOTVIMTI4djY0aDY0em0xOTEuOTIgNjRoNjR2LTY0aC02NHpNMTI4IDEyOC4xNUg2NHY2NGg2NHptMCAxOTEuOTJ2NjRoNjR2LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc0tpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDQ0OEg0OGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzNTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0xNi0yODhIMjU2di00OGg0MGE4IDggMCAwIDAgOC04VjU2YTggOCAwIDAgMC04LThoLTQwVjhhOCA4IDAgMCAwLTgtOGgtNDhhOCA4IDAgMCAwLTggOHY0MGgtNDBhOCA4IDAgMCAwLTggOHY0OGE4IDggMCAwIDAgOCA4aDQwdjQ4SDMyYTMyIDMyIDAgMCAwLTMwLjUyIDQxLjU0TDc0LjU2IDQxNmgyOTguODhsNzMuMDgtMjE0LjQ2QTMyIDMyIDAgMCAwIDQxNiAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzS25pZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDI3Mi40N2w0MC42MyAxOC4wNmEzMiAzMiAwIDAgMCAyNC44OC40N2wxMi43OC01LjEyYTMyIDMyIDAgMCAwIDE4Ljc2LTIwLjVsOS4yMi0zMC42NWEyNCAyNCAwIDAgMSAxMi41NS0xNS42NUwxNTkuOTQgMjA4djUwLjMzYTQ4IDQ4IDAgMCAxLTI2LjUzIDQyLjk0bC01Ny4yMiAyOC42NUE4MCA4MCAwIDAgMCAzMiA0MDEuNDhWNDE2aDMxOS44NlYyMjRjMC0xMDYtODUuOTItMTkyLTE5MS45Mi0xOTJIMTJBMTIgMTIgMCAwIDAgMCA0NGExNi45IDE2LjkgMCAwIDAgMS43OSA3LjU4TDE2IDgwbC05IDlhMjQgMjQgMCAwIDAtNyAxN3YxMzcuMjFhMzIgMzIgMCAwIDAgMTkgMjkuMjZ6TTUyIDEyOGEyMCAyMCAwIDEgMS0yMCAyMCAyMCAyMCAwIDAgMSAyMC0yMHptMzE2IDMyMEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzNTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc1Bhd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA1LjEgMjI0SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDE2djUuNDljMCA0NC00LjE0IDg2LjYtMjQgMTIyLjUxaDE3NmMtMTkuODktMzUuOTEtMjQtNzguNTEtMjQtMTIyLjUxVjI4OGgxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTI1LjFjMjkuMzktMTguMzggNDkuMS01MC43OCA0OS4xLTg4YTEwNCAxMDQgMCAwIDAtMjA4IDBjMCAzNy4yMiAxOS43MSA2OS42MiA0OS4xIDg4ek0zMDQgNDQ4SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI4OGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzUXVlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDExMmE1NiA1NiAwIDEgMC01Ni01NiA1NiA1NiAwIDAgMCA1NiA1NnptMTc2IDMzNkg4MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzNTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em03Mi44Ny0yNjMuODRsLTI4LjUxLTE1LjkyYy03LjQ0LTUtMTYuOTEtMi40Ni0yMi4yOSA0LjY4YTQ3LjU5IDQ3LjU5IDAgMCAxLTQ3LjIzIDE4LjIzQzM4My43IDE4Ni44NiAzNjggMTY0LjkzIDM2OCAxNDEuNGExMy40IDEzLjQgMCAwIDAtMTMuNC0xMy40aC0zOC43N2MtNiAwLTExLjYxIDQtMTIuODYgOS45MWE0OCA0OCAwIDAgMS05My45NCAwYy0xLjI1LTUuOTItNi44Mi05LjkxLTEyLjg2LTkuOTFIMTU3LjRhMTMuNCAxMy40IDAgMCAwLTEzLjQgMTMuNGMwIDI1LjY5LTE5IDQ4Ljc1LTQ0LjY3IDUwLjQ5YTQ3LjUgNDcuNSAwIDAgMS00MS41NC0xOS4xNWMtNS4yOC03LjA5LTE0LjczLTkuNDUtMjIuMDktNC41NGwtMjguNTcgMTZhMTYgMTYgMCAwIDAtNS40NCAyMC40N0wxMDQuMjQgNDE2aDMwMy41MmwxMDIuNTUtMjExLjM3YTE2IDE2IDAgMCAwLTUuNDQtMjAuNDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzUm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjggMzJoLTU2YTE2IDE2IDAgMCAwLTE2IDE2djQ4aC00OFY0OGExNiAxNiAwIDAgMC0xNi0xNmgtODBhMTYgMTYgMCAwIDAtMTYgMTZ2NDhIODguMVY0OGExNiAxNiAwIDAgMC0xNi0xNkgxNkExNiAxNiAwIDAgMCAwIDQ4djE3Nmw2NCAzMmMwIDQ4LjMzLTEuNTQgOTUtMTMuMjEgMTYwaDI4Mi40MkMzMjEuNTQgMzUxIDMyMCAzMDMuNzIgMzIwIDI1Nmw2NC0zMlY0OGExNiAxNiAwIDAgMC0xNi0xNnpNMjI0IDMyMGgtNjR2LTY0YTMyIDMyIDAgMCAxIDY0IDB6bTE0NCAxMjhIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzUyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzQgMjA4SDY0YTE2IDE2IDAgMCAwLTE2IDE2djE2YTE2IDE2IDAgMCAwIDE2IDE2aDE1Ljk0QTUzNS43OCA1MzUuNzggMCAwIDEgNjQgMzg0aDEyOGE1MzUuNzggNTM1Ljc4IDAgMCAxLTE1Ljk0LTEyOEgxOTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTE2YTE2IDE2IDAgMCAwLTE2LTE2aC0xMGwzMy44OS05MC4zOGExNiAxNiAwIDAgMC0xNS0yMS42MkgxNDRWNjRoMjRhOCA4IDAgMCAwIDgtOFY0MGE4IDggMCAwIDAtOC04aC0yNFY4YTggOCAwIDAgMC04LThoLTE2YTggOCAwIDAgMC04IDh2MjRIODhhOCA4IDAgMCAwLTggOHYxNmE4IDggMCAwIDAgOCA4aDI0djMySDU1LjA5YTE2IDE2IDAgMCAwLTE1IDIxLjYyem0xNzMuMTYgMjUxLjU4TDIyNCA0NDh2LTE2YTE2IDE2IDAgMCAwLTE2LTE2SDQ4YTE2IDE2IDAgMCAwLTE2IDE2djE2TDguODUgNDU5LjU4QTE2IDE2IDAgMCAwIDAgNDczLjg5VjQ5NmExNiAxNiAwIDAgMCAxNiAxNmgyMjRhMTYgMTYgMCAwIDAgMTYtMTZ2LTIyLjExYTE2IDE2IDAgMCAwLTguODQtMTQuMzF6bTkyLjc3LTE1Ny43OGwtMy4yOSA4Mi4yaDEyNi43MmwtMy4yOS04Mi4yMSAyNC42LTIwLjc5QTMyIDMyIDAgMCAwIDQ5NiAyNTYuNTRWMTk4YTYgNiAwIDAgMC02LTZoLTI2LjM4YTYgNiAwIDAgMC02IDZ2MjZoLTI0Ljcxdi0yNmE2IDYgMCAwIDAtNi02SDM3My4xYTYgNiAwIDAgMC02IDZ2MjZoLTI0Ljcxdi0yNmE2IDYgMCAwIDAtNi02SDMxMGE2IDYgMCAwIDAtNiA2djU4LjZhMzIgMzIgMCAwIDAgMTEuMzYgMjQuNHpNMzg0IDMwNGExNiAxNiAwIDAgMSAzMiAwdjMyaC0zMnptMTE5LjE2IDE1NS41OEw0ODAgNDQ4di0xNmExNiAxNiAwIDAgMC0xNi0xNkgzMzZhMTYgMTYgMCAwIDAtMTYgMTZ2MTZsLTIzLjE1IDExLjU4YTE2IDE2IDAgMCAwLTguODUgMTQuMzFWNDk2YTE2IDE2IDAgMCAwIDE2IDE2aDE5MmExNiAxNiAwIDAgMCAxNi0xNnYtMjIuMTFhMTYgMTYgMCAwIDAtOC44NC0xNC4zMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkNpcmNsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0IDI1NmMwIDEzNy0xMTEgMjQ4LTI0OCAyNDhTOCAzOTMgOCAyNTYgMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4ek0yNzMgMzY5LjlsMTM1LjUtMTM1LjVjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlsLTE3LTE3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwyNTYgMjg1LjEgMTU0LjQgMTgzLjVjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC0xNyAxN2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlMMjM5IDM2OS45YzkuNCA5LjQgMjQuNiA5LjQgMzQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkNpcmNsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUwNEMxMTkgNTA0IDggMzkzIDggMjU2UzExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OC0xMTEgMjQ4LTI0OCAyNDh6TTE0Mi4xIDI3M2wxMzUuNSAxMzUuNWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwxNy0xN2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyMjYuOSAyNTZsMTAxLjYtMTAxLjZjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlsLTE3LTE3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwxNDIuMSAyMzljLTkuNCA5LjQtOS40IDI0LjYgMCAzNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkNpcmNsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4YzEzNyAwIDI0OCAxMTEgMjQ4IDI0OFMzOTMgNTA0IDI1NiA1MDQgOCAzOTMgOCAyNTYgMTE5IDggMjU2IDh6bTExMy45IDIzMUwyMzQuNCAxMDMuNWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTE3IDE3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOUwyODUuMSAyNTYgMTgzLjUgMzU3LjZjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDE3IDE3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDM2OS45IDI3M2M5LjQtOS40IDkuNC0yNC42IDAtMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXZyb25DaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDI1NkM4IDExOSAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDgtMTExIDI0OC0yNDggMjQ4UzggMzkzIDggMjU2em0yMzEtMTEzLjlMMTAzLjUgMjc3LjZjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDE3IDE3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDI1NiAyMjYuOWwxMDEuNiAxMDEuNmM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwxNy0xN2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyNzMgMTQyLjFjLTkuNC05LjQtMjQuNi05LjQtMzQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA3LjAyOSAzODEuNDc2TDEyLjY4NiAxODcuMTMyYy05LjM3My05LjM3My05LjM3My0yNC41NjkgMC0zMy45NDFsMjIuNjY3LTIyLjY2N2M5LjM1Ny05LjM1NyAyNC41MjItOS4zNzUgMzMuOTAxLS4wNEwyMjQgMjg0LjUwNWwxNTQuNzQ1LTE1NC4wMjFjOS4zNzktOS4zMzUgMjQuNTQ0LTkuMzE3IDMzLjkwMS4wNGwyMi42NjcgMjIuNjY3YzkuMzczIDkuMzczIDkuMzczIDI0LjU2OSAwIDMzLjk0MUwyNDAuOTcxIDM4MS40NzZjLTkuMzczIDkuMzcyLTI0LjU2OSA5LjM3Mi0zMy45NDIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQuNTIgMjM5LjAzTDIyOC44NyA0NC42OWM5LjM3LTkuMzcgMjQuNTctOS4zNyAzMy45NCAwbDIyLjY3IDIyLjY3YzkuMzYgOS4zNiA5LjM3IDI0LjUyLjA0IDMzLjlMMTMxLjQ5IDI1NmwxNTQuMDIgMTU0Ljc1YzkuMzQgOS4zOCA5LjMyIDI0LjU0LS4wNCAzMy45bC0yMi42NyAyMi42N2MtOS4zNyA5LjM3LTI0LjU3IDkuMzctMzMuOTQgMEwzNC41MiAyNzIuOTdjLTkuMzctOS4zNy05LjM3LTI0LjU3IDAtMzMuOTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXZyb25SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODUuNDc2IDI3Mi45NzFMOTEuMTMyIDQ2Ny4zMTRjLTkuMzczIDkuMzczLTI0LjU2OSA5LjM3My0zMy45NDEgMGwtMjIuNjY3LTIyLjY2N2MtOS4zNTctOS4zNTctOS4zNzUtMjQuNTIyLS4wNC0zMy45MDFMMTg4LjUwNSAyNTYgMzQuNDg0IDEwMS4yNTVjLTkuMzM1LTkuMzc5LTkuMzE3LTI0LjU0NC4wNC0zMy45MDFsMjIuNjY3LTIyLjY2N2M5LjM3My05LjM3MyAyNC41NjktOS4zNzMgMzMuOTQxIDBMMjg1LjQ3NSAyMzkuMDNjOS4zNzMgOS4zNzIgOS4zNzMgMjQuNTY4LjAwMSAzMy45NDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXZyb25VcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDAuOTcxIDEzMC41MjRsMTk0LjM0MyAxOTQuMzQzYzkuMzczIDkuMzczIDkuMzczIDI0LjU2OSAwIDMzLjk0MWwtMjIuNjY3IDIyLjY2N2MtOS4zNTcgOS4zNTctMjQuNTIyIDkuMzc1LTMzLjkwMS4wNEwyMjQgMjI3LjQ5NSA2OS4yNTUgMzgxLjUxNmMtOS4zNzkgOS4zMzUtMjQuNTQ0IDkuMzE3LTMzLjkwMS0uMDRsLTIyLjY2Ny0yMi42NjdjLTkuMzczLTkuMzczLTkuMzczLTI0LjU2OSAwLTMzLjk0MUwyMDcuMDMgMTMwLjUyNWM5LjM3Mi05LjM3MyAyNC41NjgtOS4zNzMgMzMuOTQxLS4wMDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoaWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyMCA3MmMwLTM5Ljc2NSAzMi4yMzUtNzIgNzItNzJzNzIgMzIuMjM1IDcyIDcyYzAgMzkuNzY0LTMyLjIzNSA3Mi03MiA3MnMtNzItMzIuMjM2LTcyLTcyem0yNTQuNjI3IDEuMzczYy0xMi40OTYtMTIuNDk3LTMyLjc1OC0xMi40OTctNDUuMjU0IDBMMjQyLjc0NSAxNjBIMTQxLjI1NEw1NC42MjcgNzMuMzczYy0xMi40OTYtMTIuNDk3LTMyLjc1OC0xMi40OTctNDUuMjU0IDAtMTIuNDk3IDEyLjQ5Ny0xMi40OTcgMzIuNzU4IDAgNDUuMjU1TDEwNCAyMTMuMjU0VjQ4MGMwIDE3LjY3MyAxNC4zMjcgMzIgMzIgMzJoMTZjMTcuNjczIDAgMzItMTQuMzI3IDMyLTMyVjM2OGgxNnYxMTJjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMyaDE2YzE3LjY3MyAwIDMyLTE0LjMyNyAzMi0zMlYyMTMuMjU0bDk0LjYyNy05NC42MjdjMTIuNDk3LTEyLjQ5NyAxMi40OTctMzIuNzU3IDAtNDUuMjU0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaHVyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0LjQ2IDI0Ni42OEwzNTIgMTc5LjJWMTI4aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjgwYzAtOC44NC03LjE2LTE2LTE2LTE2aC00OFYxNmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4aC00OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDh2NTEuMmwtMTEyLjQ2IDY3LjQ4QTMxLjk5NyAzMS45OTcgMCAwIDAgMTYwIDI3NC4xMlY1MTJoOTZ2LTk2YzAtMzUuMzUgMjguNjUtNjQgNjQtNjRzNjQgMjguNjUgNjQgNjR2OTZoOTZWMjc0LjEyYzAtMTEuMjQtNS45LTIxLjY2LTE1LjU0LTI3LjQ0ek0wIDM5NS45NlY0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTEyVjMyMEwxOS4zOSAzNjYuNTRBMzIuMDI0IDMyLjAyNCAwIDAgMCAwIDM5NS45NnptNjIwLjYxLTI5LjQyTDUxMiAzMjB2MTkyaDExMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYzOTUuOTZjMC0xMi44LTcuNjMtMjQuMzctMTkuMzktMjkuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZU5vdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAzOS4wNTZ2MTYuNjU5YzAgMTAuODA0IDcuMjgxIDIwLjE1OSAxNy42ODYgMjMuMDY2QzM4My4yMDQgMTAwLjQzNCA0NDAgMTcxLjUxOCA0NDAgMjU2YzAgMTAxLjY4OS04Mi4yOTUgMTg0LTE4NCAxODQtMTAxLjY4OSAwLTE4NC04Mi4yOTUtMTg0LTE4NCAwLTg0LjQ3IDU2Ljc4Ni0xNTUuNTY0IDEzNC4zMTItMTc3LjIxOUMyMTYuNzE5IDc1Ljg3NCAyMjQgNjYuNTE3IDIyNCA1NS43MTJWMzkuMDY0YzAtMTUuNzA5LTE0LjgzNC0yNy4xNTMtMzAuMDQ2LTIzLjIzNEM4Ni42MDMgNDMuNDgyIDcuMzk0IDE0MS4yMDYgOC4wMDMgMjU3LjMzMmMuNzIgMTM3LjA1MiAxMTEuNDc3IDI0Ni45NTYgMjQ4LjUzMSAyNDYuNjY3QzM5My4yNTUgNTAzLjcxMSA1MDQgMzkyLjc4OCA1MDQgMjU2YzAtMTE1LjYzMy03OS4xNC0yMTIuNzc5LTE4Ni4yMTEtMjQwLjIzNkMzMDIuNjc4IDExLjg4OSAyODggMjMuNDU2IDI4OCAzOS4wNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxNiAxOTJINDgwVjI0YzAtMTMuMjYtMTAuNzQtMjQtMjQtMjRIMzEyYy0xMy4yNiAwLTI0IDEwLjc0LTI0IDI0djcyaC02NFYxNmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djgwaC02NFYxNmMwLTguODQtNy4xNi0xNi0xNi0xNkg4MGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2ODBIMjRjLTEzLjI2IDAtMjQgMTAuNzQtMjQgMjR2MzYwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTc2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMjE2YzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6TTEyOCA0MDRjMCA2LjYzLTUuMzcgMTItMTIgMTJINzZjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMC05NmMwIDYuNjMtNS4zNyAxMi0xMiAxMkg3NmMtNi42MyAwLTEyLTUuMzctMTItMTJ2LTQwYzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwem0wLTk2YzAgNi42My01LjM3IDEyLTEyIDEySDc2Yy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTEyOCAxOTJjMCA2LjYzLTUuMzcgMTItMTIgMTJoLTQwYy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTAtOTZjMCA2LjYzLTUuMzcgMTItMTIgMTJoLTQwYy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTAtOTZjMCA2LjYzLTUuMzcgMTItMTIgMTJoLTQwYy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTE2MCA5NmMwIDYuNjMtNS4zNyAxMi0xMiAxMmgtNDBjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMC05NmMwIDYuNjMtNS4zNyAxMi0xMiAxMmgtNDBjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMC05NmMwIDYuNjMtNS4zNyAxMi0xMiAxMmgtNDBjLTYuNjMgMC0xMi01LjM3LTEyLTEyVjc2YzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwem0xNjAgMjg4YzAgNi42My01LjM3IDEyLTEyIDEyaC00MGMtNi42MyAwLTEyLTUuMzctMTItMTJ2LTQwYzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwem0wLTk2YzAgNi42My01LjM3IDEyLTEyIDEyaC00MGMtNi42MyAwLTEyLTUuMzctMTItMTJ2LTQwYzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbGluaWNNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxMTVMNjkuNDcgMzA3LjcxYy0xLjYyIDEuNDYtMy42OSAyLjE0LTUuNDcgMy4zNVY0OTZhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2VjMxMS4xYy0xLjctMS4xNi0zLjcyLTEuODItNS4yNi0zLjJ6bTk2IDI2MWE4IDggMCAwIDEtOCA4aC01NnY1NmE4IDggMCAwIDEtOCA4aC00OGE4IDggMCAwIDEtOC04di01NmgtNTZhOCA4IDAgMCAxLTgtOHYtNDhhOCA4IDAgMCAxIDgtOGg1NnYtNTZhOCA4IDAgMCAxIDgtOGg0OGE4IDggMCAwIDEgOCA4djU2aDU2YTggOCAwIDAgMSA4IDh6bTE4Ni42OS0xMzkuNzJsLTI1NS45NC0yMjZhMzkuODUgMzkuODUgMCAwIDAtNTMuNDUgMGwtMjU2IDIyNmExNiAxNiAwIDAgMC0xLjIxIDIyLjZMMjUuNSAyODIuN2ExNiAxNiAwIDAgMCAyMi42IDEuMjFMMjc3LjQyIDgxLjYzYTE2IDE2IDAgMCAxIDIxLjE3IDBMNTI3LjkxIDI4My45YTE2IDE2IDAgMCAwIDIyLjYtMS4yMWwyMS40LTIzLjgyYTE2IDE2IDAgMCAwLTEuMjItMjIuNTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsaXBib2FyZENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiA2NGgtODBjMC0zNS4zLTI4LjctNjQtNjQtNjRzLTY0IDI4LjctNjQgNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE5MiA0MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNC0yNC0xMC43LTI0LTI0IDEwLjctMjQgMjQtMjR6bTEyMS4yIDIzMS44bC0xNDMgMTQxLjhjLTQuNyA0LjctMTIuMyA0LjYtMTctLjFsLTgyLjYtODMuM2MtNC43LTQuNy00LjYtMTIuMy4xLTE3TDk5LjEgMjg1YzQuNy00LjcgMTIuMy00LjYgMTcgLjFsNDYgNDYuNCAxMDYtMTA1LjJjNC43LTQuNyAxMi4zLTQuNiAxNyAuMWwyOC4yIDI4LjRjNC43IDQuOCA0LjYgMTIuMy0uMSAxN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xpcGJvYXJkTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgNjRoLTgwYzAtMzUuMy0yOC43LTY0LTY0LTY0cy02NCAyOC43LTY0IDY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek05NiA0MjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjQgMjQgMTAuNyAyNCAyNC0xMC43IDI0LTI0IDI0em0wLTk2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0IDI0IDEwLjcgMjQgMjQtMTAuNyAyNC0yNCAyNHptMC05NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNCAyNCAxMC43IDI0IDI0LTEwLjcgMjQtMjQgMjR6bTk2LTE5MmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNC0yNC0xMC43LTI0LTI0IDEwLjctMjQgMjQtMjR6bTEyOCAzNjhjMCA0LjQtMy42IDgtOCA4SDE2OGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTQ0YzQuNCAwIDggMy42IDggOHYxNnptMC05NmMwIDQuNC0zLjYgOC04IDhIMTY4Yy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxNDRjNC40IDAgOCAzLjYgOCA4djE2em0wLTk2YzAgNC40LTMuNiA4LTggOEgxNjhjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDE0NGM0LjQgMCA4IDMuNiA4IDh2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsaXBib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMTEydjM1MmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjExMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDgwYzAtMzUuMjkgMjguNzEtNjQgNjQtNjRzNjQgMjguNzEgNjQgNjRoODBjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHpNMTkyIDQwYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjRzMTAuNzQ1IDI0IDI0IDI0IDI0LTEwLjc0NSAyNC0yNC0xMC43NDUtMjQtMjQtMjRtOTYgMTE0di0yMGE2IDYgMCAwIDAtNi02SDEwMmE2IDYgMCAwIDAtNiA2djIwYTYgNiAwIDAgMCA2IDZoMTgwYTYgNiAwIDAgMCA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Niw4QzExOSw4LDgsMTE5LDgsMjU2UzExOSw1MDQsMjU2LDUwNCw1MDQsMzkzLDUwNCwyNTYsMzkzLDgsMjU2LDhabTkyLjQ5LDMxM2gwbC0yMCwyNWExNiwxNiwwLDAsMS0yMi40OSwyLjVoMGwtNjctNDkuNzJhNDAsNDAsMCwwLDEtMTUtMzEuMjNWMTEyYTE2LDE2LDAsMCwxLDE2LTE2aDMyYTE2LDE2LDAsMCwxLDE2LDE2VjI1Nmw1OCw0Mi41QTE2LDE2LDAsMCwxLDM0OC40OSwzMjFaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAwYzI2LjUxIDAgNDggMjEuNDkgNDggNDh2Mjg4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhIMTc2Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjQ4YzAtMjYuNTEgMjEuNDktNDggNDgtNDhoMjg4TTE3NiA0MTZjLTQ0LjExMiAwLTgwLTM1Ljg4OC04MC04MFYxMjhINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2Mjg4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMjg4YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTQ4SDE3NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvc2VkQ2FwdGlvbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2Mjg4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTIxOC4xIDI4Ny43YzIuOC0yLjUgNy4xLTIuMSA5LjIuOWwxOS41IDI3LjdjMS43IDIuNCAxLjUgNS42LS41IDcuNy01My42IDU2LjgtMTcyLjggMzIuMS0xNzIuOC02Ny45IDAtOTcuMyAxMjEuNy0xMTkuNSAxNzIuNS03MC4xIDIuMSAyIDIuNSAzLjIgMSA1LjdsLTE3LjUgMzAuNWMtMS45IDMuMS02LjIgNC05LjEgMS43LTQwLjgtMzItOTQuNi0xNC45LTk0LjYgMzEuMi4xIDQ4IDUxLjEgNzAuNSA5Mi4zIDMyLjZ6bTE5MC40IDBjMi44LTIuNSA3LjEtMi4xIDkuMi45bDE5LjUgMjcuN2MxLjcgMi40IDEuNSA1LjYtLjUgNy43LTUzLjUgNTYuOS0xNzIuNyAzMi4xLTE3Mi43LTY3LjkgMC05Ny4zIDEyMS43LTExOS41IDE3Mi41LTcwLjEgMi4xIDIgMi41IDMuMiAxIDUuN0w0MjAgMjIyLjJjLTEuOSAzLjEtNi4yIDQtOS4xIDEuNy00MC44LTMyLTk0LjYtMTQuOS05NC42IDMxLjIgMCA0OCA1MSA3MC41IDkyLjIgMzIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWREb3dubG9hZEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MzcuNiAyMjYuNmM0LjEtMTAuNyA2LjQtMjIuNCA2LjQtMzQuNiAwLTUzLTQzLTk2LTk2LTk2LTE5LjcgMC0zOC4xIDYtNTMuMyAxNi4yQzM2NyA2NC4yIDMxNS4zIDMyIDI1NiAzMmMtODguNCAwLTE2MCA3MS42LTE2MCAxNjAgMCAyLjcuMSA1LjQuMiA4LjFDNDAuMiAyMTkuOCAwIDI3My4yIDAgMzM2YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0aDM2OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOCAwLTYxLjktNDQtMTEzLjYtMTAyLjQtMTI1LjR6bS0xMzIuOSA4OC43TDI5OS4zIDQyMC43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMEwxNzEuMyAzMTUuM2MtMTAuMS0xMC4xLTIuOS0yNy4zIDExLjMtMjcuM0gyNDhWMTc2YzAtOC44IDcuMi0xNiAxNi0xNmg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MTEyaDY1LjRjMTQuMiAwIDIxLjQgMTcuMiAxMS4zIDI3LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkTWVhdGJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMzUyYy0yNi41IDAtNDggMjEuNS00OCA0OHMyMS41IDQ4IDQ4IDQ4IDQ4LTIxLjUgNDgtNDgtMjEuNS00OC00OC00OHptNDE2IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4czIxLjUgNDggNDggNDggNDgtMjEuNSA0OC00OC0yMS41LTQ4LTQ4LTQ4em0tMTE5IDExLjFjNC42LTE0LjUgMS42LTMwLjgtOS44LTQyLjMtMTEuNS0xMS41LTI3LjgtMTQuNC00Mi4zLTkuOS03LTEzLjUtMjAuNy0yMy0zNi45LTIzcy0yOS45IDkuNS0zNi45IDIzYy0xNC41LTQuNi0zMC44LTEuNi00Mi4zIDkuOS0xMS41IDExLjUtMTQuNCAyNy44LTkuOSA0Mi4zLTEzLjUgNy0yMyAyMC43LTIzIDM2LjlzOS41IDI5LjkgMjMgMzYuOWMtNC42IDE0LjUtMS42IDMwLjggOS45IDQyLjMgOC4yIDguMiAxOC45IDEyLjMgMjkuNyAxMi4zIDQuMyAwIDguNS0xLjEgMTIuNi0yLjUgNyAxMy41IDIwLjcgMjMgMzYuOSAyM3MyOS45LTkuNSAzNi45LTIzYzQuMSAxLjMgOC4zIDIuNSAxMi42IDIuNSAxMC44IDAgMjEuNS00LjEgMjkuNy0xMi4zIDExLjUtMTEuNSAxNC40LTI3LjggOS44LTQyLjMgMTMuNS03IDIzLTIwLjcgMjMtMzYuOXMtOS41LTI5LjktMjMtMzYuOXpNNTEyIDIyNGMwLTUzLTQzLTk2LTk2LTk2LS42IDAtMS4xLjItMS42LjIgMS4xLTUuMiAxLjYtMTAuNiAxLjYtMTYuMiAwLTQ0LjItMzUuOC04MC04MC04MC0yNC42IDAtNDYuMyAxMS4zLTYxIDI4LjhDMjU2LjQgMjQuOCAyMTkuMyAwIDE3NiAwIDExNC4xIDAgNjQgNTAuMSA2NCAxMTJjMCA3LjMuOCAxNC4zIDIuMSAyMS4yQzI3LjggMTQ1LjggMCAxODEuNSAwIDIyNGMwIDUzIDQzIDk2IDk2IDk2aDQzLjRjMy42LTggOC40LTE1LjQgMTQuOC0yMS44IDEzLjUtMTMuNSAzMS41LTIxLjEgNTAuOC0yMS4zIDEzLjUtMTMuMiAzMS43LTIwLjkgNTEtMjAuOXMzNy41IDcuNyA1MSAyMC45YzE5LjMuMiAzNy4zIDcuOCA1MC44IDIxLjMgNi40IDYuNCAxMS4zIDEzLjggMTQuOCAyMS44SDQxNmM1MyAwIDk2LTQzIDk2LTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZE1vb25SYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MC41IDIyNS41Yy02LjktMzcuMi0zOS4zLTY1LjUtNzguNS02NS41LTEyLjMgMC0yMy45IDMtMzQuMyA4LTE3LjQtMjQuMS00NS42LTQwLTc3LjctNDAtNTMgMC05NiA0My05NiA5NiAwIC41LjIgMS4xLjIgMS42QzI3LjYgMjMyLjkgMCAyNjUuMiAwIDMwNGMwIDQ0LjIgMzUuOCA4MCA4MCA4MGgyNTZjNDQuMiAwIDgwLTM1LjggODAtODAgMC0zOS4yLTI4LjItNzEuNy02NS41LTc4LjV6bTIxNy40LTEuN2MtNzAuNCAxMy4zLTEzNS00MC4zLTEzNS0xMTAuOCAwLTQwLjYgMjEuOS03OCA1Ny41LTk4LjEgNS41LTMuMSA0LjEtMTEuNC0yLjEtMTIuNUM0NzkuNi44IDQ3MC43IDAgNDYxLjggMGMtNzcuOSAwLTE0MS4xIDYxLjItMTQ0LjQgMTM3LjkgMjYuNyAxMS45IDQ4LjIgMzMuOCA1OC45IDYxLjcgMzcuMSAxNC4zIDY0IDQ3LjQgNzAuMiA4Ni44IDUuMS41IDEwIDEuNSAxNS4yIDEuNSA0NC43IDAgODUuNi0yMC4yIDExMi42LTUzLjMgNC4yLTQuOC0uMi0xMi02LjQtMTAuOHpNMzY0LjUgNDE4LjFjLTcuNi00LjMtMTcuNC0xLjgtMjEuOCA2bC0zNi42IDY0Yy00LjQgNy43LTEuNyAxNy40IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWwzNi42LTY0YzQuMy03LjcgMS43LTE3LjQtNi0yMS44em0tOTYgMGMtNy42LTQuMy0xNy40LTEuOC0yMS44IDZsLTM2LjYgNjRjLTQuNCA3LjctMS43IDE3LjQgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDM2LjYtNjRjNC4zLTcuNyAxLjctMTcuNC02LTIxLjh6bS05NiAwYy03LjYtNC4zLTE3LjQtMS44LTIxLjggNmwtMzYuNiA2NGMtNC40IDcuNy0xLjcgMTcuNCA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsMzYuNi02NGM0LjMtNy43IDEuNy0xNy40LTYtMjEuOHptLTk2IDBjLTcuNi00LjMtMTcuNC0xLjgtMjEuOCA2bC0zNi42IDY0Yy00LjQgNy43LTEuNyAxNy40IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWwzNi42LTY0YzQuMy03LjcgMS43LTE3LjQtNi0yMS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZE1vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQyLjggMzUyLjdjNS43LTkuNiA5LjItMjAuNyA5LjItMzIuNyAwLTM1LjMtMjguNy02NC02NC02NC0xNy4yIDAtMzIuOCA2LjktNDQuMyAxNy45LTE2LjMtMjkuNi00Ny41LTQ5LjktODMuNy00OS45LTUzIDAtOTYgNDMtOTYgOTYgMCAyIC41IDMuOC42IDUuN0MyNy4xIDMzOC44IDAgMzc0LjEgMCA0MTZjMCA1MyA0MyA5NiA5NiA5NmgyNDBjNDQuMiAwIDgwLTM1LjggODAtODAgMC00MS45LTMyLjMtNzUuOC03My4yLTc5LjN6bTIyMi41LTU0LjNjLTkzLjEgMTcuNy0xNzguNS01My43LTE3OC41LTE0Ny43IDAtNTQuMiAyOS0xMDQgNzYuMS0xMzAuOCA3LjMtNC4xIDUuNC0xNS4xLTIuOC0xNi43QzQ0OC40IDEuMSA0MzYuNyAwIDQyNSAwIDMxOS4xIDAgMjMzLjEgODUuOSAyMzMuMSAxOTJjMCA4LjUuNyAxNi44IDEuOCAyNSA1LjkgNC4zIDExLjYgOC45IDE2LjcgMTQuMiAxMS40LTQuNyAyMy43LTcuMiAzNi40LTcuMiA1Mi45IDAgOTYgNDMuMSA5NiA5NiAwIDMuNi0uMiA3LjItLjYgMTAuNyAyMy42IDEwLjggNDIuNCAyOS41IDUzLjUgNTIuNiA1NC40LTMuNCAxMDMuNy0yOS4zIDEzNy4xLTcwLjQgNS4zLTYuNS0uNS0xNi4xLTguNy0xNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZFJhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDEyOGMtLjYgMC0xLjEuMi0xLjYuMiAxLjEtNS4yIDEuNi0xMC42IDEuNi0xNi4yIDAtNDQuMi0zNS44LTgwLTgwLTgwLTI0LjYgMC00Ni4zIDExLjMtNjEgMjguOEMyNTYuNCAyNC44IDIxOS4zIDAgMTc2IDAgMTE0LjEgMCA2NCA1MC4xIDY0IDExMmMwIDcuMy44IDE0LjMgMi4xIDIxLjJDMjcuOCAxNDUuOCAwIDE4MS41IDAgMjI0YzAgNTMgNDMgOTYgOTYgOTZoMzIwYzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2ek04OCAzNzQuMmMtMTIuOCA0NC40LTQwIDU2LjQtNDAgODcuNyAwIDI3LjcgMjEuNSA1MC4xIDQ4IDUwLjFzNDgtMjIuNCA0OC01MC4xYzAtMzEuNC0yNy4yLTQzLjEtNDAtODcuNy0yLjItOC4xLTEzLjUtOC41LTE2IDB6bTE2MCAwYy0xMi44IDQ0LjQtNDAgNTYuNC00MCA4Ny43IDAgMjcuNyAyMS41IDUwLjEgNDggNTAuMXM0OC0yMi40IDQ4LTUwLjFjMC0zMS40LTI3LjItNDMuMS00MC04Ny43LTIuMi04LjEtMTMuNS04LjUtMTYgMHptMTYwIDBjLTEyLjggNDQuNC00MCA1Ni40LTQwIDg3LjcgMCAyNy43IDIxLjUgNTAuMSA0OCA1MC4xczQ4LTIyLjQgNDgtNTAuMWMwLTMxLjQtMjcuMi00My4xLTQwLTg3LjctMi4yLTguMS0xMy41LTguNS0xNiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZFNob3dlcnNIZWF2eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODMuOSAzNzAuMWMtNy42LTQuNC0xNy40LTEuOC0yMS44IDZsLTY0IDExMmMtNC40IDcuNy0xLjcgMTcuNSA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsNjQtMTEyYzQuNC03LjYgMS43LTE3LjQtNi0yMS44em05NiAwYy03LjYtNC40LTE3LjQtMS44LTIxLjggNmwtNjQgMTEyYy00LjQgNy43LTEuNyAxNy41IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWw2NC0xMTJjNC40LTcuNiAxLjctMTcuNC02LTIxLjh6bS0xOTIgMGMtNy42LTQuNC0xNy40LTEuOC0yMS44IDZsLTY0IDExMmMtNC40IDcuNy0xLjcgMTcuNSA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsNjQtMTEyYzQuNC03LjYgMS43LTE3LjQtNi0yMS44em0zODQgMGMtNy42LTQuNC0xNy40LTEuOC0yMS44IDZsLTY0IDExMmMtNC40IDcuNy0xLjcgMTcuNSA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsNjQtMTEyYzQuNC03LjYgMS43LTE3LjQtNi0yMS44em0tOTYgMGMtNy42LTQuNC0xNy40LTEuOC0yMS44IDZsLTY0IDExMmMtNC40IDcuNy0xLjcgMTcuNSA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsNjQtMTEyYzQuNC03LjYgMS43LTE3LjQtNi0yMS44ek00MTYgMTI4Yy0uNiAwLTEuMS4yLTEuNi4yIDEuMS01LjIgMS42LTEwLjYgMS42LTE2LjIgMC00NC4yLTM1LjgtODAtODAtODAtMjQuNiAwLTQ2LjMgMTEuMy02MSAyOC44QzI1Ni40IDI0LjggMjE5LjMgMCAxNzYgMCAxMTQuMiAwIDY0IDUwLjEgNjQgMTEyYzAgNy4zLjggMTQuMyAyLjEgMjEuMkMyNy44IDE0NS44IDAgMTgxLjUgMCAyMjRjMCA1MyA0MyA5NiA5NiA5NmgzMjBjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkU3VuUmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTAuNSAyMjUuNWMtNi45LTM3LjItMzkuMy02NS41LTc4LjUtNjUuNS0xMi4zIDAtMjMuOSAzLTM0LjMgOC0xNy40LTI0LjEtNDUuNi00MC03Ny43LTQwLTUzIDAtOTYgNDMtOTYgOTYgMCAuNS4yIDEuMS4yIDEuNkMxODcuNiAyMzMgMTYwIDI2NS4yIDE2MCAzMDRjMCA0NC4yIDM1LjggODAgODAgODBoMjU2YzQ0LjIgMCA4MC0zNS44IDgwLTgwIDAtMzkuMi0yOC4yLTcxLjctNjUuNS03OC41em0tMzg2LjQgMzQuNGMtMzcuNC0zNy40LTM3LjQtOTguMyAwLTEzNS44IDM0LjYtMzQuNiA4OS4xLTM2LjggMTI2LjctNy40IDIwLTEyLjkgNDMuNi0yMC43IDY5LjItMjAuNy43IDAgMS4zLjIgMiAuMmw4LjktMjYuN2MzLjQtMTAuMi02LjMtMTkuOC0xNi41LTE2LjRsLTc1LjMgMjUuMS0zNS41LTcxYy00LjgtOS42LTE4LjUtOS42LTIzLjMgMGwtMzUuNSA3MS03NS4zLTI1LjFjLTEwLjItMy40LTE5LjggNi4zLTE2LjQgMTYuNWwyNS4xIDc1LjMtNzEgMzUuNWMtOS42IDQuOC05LjYgMTguNSAwIDIzLjNsNzEgMzUuNS0yNS4xIDc1LjNjLTMuNCAxMC4yIDYuMyAxOS44IDE2LjUgMTYuNWw1OS4yLTE5LjdjLS4yLTIuNC0uNy00LjctLjctNy4yIDAtMTIuNSAyLjMtMjQuNSA2LjItMzUuOS0zLjYtMi43LTcuMS01LjItMTAuMi04LjN6bTY5LjgtNThjNC4zLTI0LjUgMTUuOC00Ni40IDMxLjktNjQtOS44LTYuMi0yMS40LTkuOS0zMy44LTkuOS0zNS4zIDAtNjQgMjguNy02NCA2NCAwIDE4LjcgOC4yIDM1LjQgMjEuMSA0Ny4xIDExLjMtMTUuOSAyNi42LTI4LjkgNDQuOC0zNy4yem0zMzAuNiAyMTYuMmMtNy42LTQuMy0xNy40LTEuOC0yMS44IDZsLTM2LjYgNjRjLTQuNCA3LjctMS43IDE3LjQgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDM2LjYtNjRjNC4zLTcuNyAxLjctMTcuNC02LTIxLjh6bS05NiAwYy03LjYtNC4zLTE3LjQtMS44LTIxLjggNmwtMzYuNiA2NGMtNC40IDcuNy0xLjcgMTcuNCA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsMzYuNi02NGM0LjMtNy43IDEuNy0xNy40LTYtMjEuOHptLTk2IDBjLTcuNi00LjMtMTcuNC0xLjgtMjEuOCA2bC0zNi42IDY0Yy00LjQgNy43LTEuNyAxNy40IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWwzNi42LTY0YzQuMy03LjcgMS43LTE3LjQtNi0yMS44em0tOTYgMGMtNy42LTQuMy0xNy40LTEuOC0yMS44IDZsLTM2LjYgNjRjLTQuNCA3LjctMS43IDE3LjQgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDM2LjYtNjRjNC4zLTcuNyAxLjctMTcuNC02LTIxLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkU3VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NS4yIDMyNS43Yy4yLTEuOS44LTMuNy44LTUuNiAwLTM1LjMtMjguNy02NC02NC02NC0xMi42IDAtMjQuMiAzLjgtMzQuMSAxMC0xNy42LTM4LjgtNTYuNS02Ni0xMDEuOS02Ni02MS44IDAtMTEyIDUwLjEtMTEyIDExMiAwIDMgLjcgNS44LjkgOC43LTQ5LjYgMy43LTg4LjkgNDQuNy04OC45IDk1LjMgMCA1MyA0MyA5NiA5NiA5NmgyNzJjNTMgMCA5Ni00MyA5Ni05NiAwLTQyLjEtMjcuMi03Ny40LTY0LjgtOTAuNHptLTQzMC40LTIyLjZjLTQzLjctNDMuNy00My43LTExNC43IDAtMTU4LjMgNDMuNy00My43IDExNC43LTQzLjcgMTU4LjQgMCA5LjcgOS43IDE2LjkgMjAuOSAyMi4zIDMyLjcgOS44LTMuNyAyMC4xLTYgMzAuNy03LjVMMzg2IDgxLjFjNC0xMS45LTcuMy0yMy4xLTE5LjItMTkuMkwyNzkgOTEuMiAyMzcuNSA4LjRDMjMyLTIuOCAyMTYtMi44IDIxMC40IDguNEwxNjkgOTEuMiA4MS4xIDYxLjlDNjkuMyA1OCA1OCA2OS4zIDYxLjkgODEuMWwyOS4zIDg3LjgtODIuOCA0MS41Yy0xMS4yIDUuNi0xMS4yIDIxLjUgMCAyNy4xbDgyLjggNDEuNC0yOS4zIDg3LjhjLTQgMTEuOSA3LjMgMjMuMSAxOS4yIDE5LjJsNzYuMS0yNS4zYzYuMS0xMi40IDE0LTIzLjcgMjMuNi0zMy41LTEzLjEtNS40LTI1LjQtMTMuNC0zNi0yNHptLTQuOC03OS4yYzAgNDAuOCAyOS4zIDc0LjggNjcuOSA4Mi4zIDgtNC43IDE2LjMtOC44IDI1LjItMTEuNyA1LjQtNDQuMyAzMS04Mi41IDY3LjQtMTA1QzI4Ny4zIDE2MC40IDI1OCAxNDAgMjI0IDE0MGMtNDYuMyAwLTg0IDM3LjYtODQgODMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRVcGxvYWRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTM3LjYgMjI2LjZjNC4xLTEwLjcgNi40LTIyLjQgNi40LTM0LjYgMC01My00My05Ni05Ni05Ni0xOS43IDAtMzguMSA2LTUzLjMgMTYuMkMzNjcgNjQuMiAzMTUuMyAzMiAyNTYgMzJjLTg4LjQgMC0xNjAgNzEuNi0xNjAgMTYwIDAgMi43LjEgNS40LjIgOC4xQzQwLjIgMjE5LjggMCAyNzMuMiAwIDMzNmMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NGgzNjhjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjggMC02MS45LTQ0LTExMy42LTEwMi40LTEyNS40ek0zOTMuNCAyODhIMzI4djExMmMwIDguOC03LjIgMTYtMTYgMTZoLTQ4Yy04LjggMC0xNi03LjItMTYtMTZWMjg4aC02NS40Yy0xNC4zIDAtMjEuNC0xNy4yLTExLjMtMjcuM2wxMDUuNC0xMDUuNGM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMGwxMDUuNCAxMDUuNGMxMC4xIDEwLjEgMi45IDI3LjMtMTEuMyAyNy4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MzcuNiAyMjYuNmM0LjEtMTAuNyA2LjQtMjIuNCA2LjQtMzQuNiAwLTUzLTQzLTk2LTk2LTk2LTE5LjcgMC0zOC4xIDYtNTMuMyAxNi4yQzM2NyA2NC4yIDMxNS4zIDMyIDI1NiAzMmMtODguNCAwLTE2MCA3MS42LTE2MCAxNjAgMCAyLjcuMSA1LjQuMiA4LjFDNDAuMiAyMTkuOCAwIDI3My4yIDAgMzM2YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0aDM2OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOCAwLTYxLjktNDQtMTEzLjYtMTAyLjQtMTI1LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvY2t0YWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5NiA0NjRoLTU2VjMzOC43OGwxNjguNzQtMTY4LjczYzE1LjUyLTE1LjUyIDQuNTMtNDIuMDUtMTcuNDItNDIuMDVIMjQuNjhjLTIxLjk1IDAtMzIuOTQgMjYuNTMtMTcuNDIgNDIuMDVMMTc2IDMzOC43OFY0NjRoLTU2Yy0yMi4wOSAwLTQwIDE3LjkxLTQwIDQwIDAgNC40MiAzLjU4IDggOCA4aDI0MGM0LjQyIDAgOC0zLjU4IDgtOCAwLTIyLjA5LTE3LjkxLTQwLTQwLTQwek00MzIgMGMtNjIuNjEgMC0xMTUuMzUgNDAuMi0xMzUuMTggOTZoNTIuNTRjMTYuNjUtMjguNTUgNDcuMjctNDggODIuNjQtNDggNTIuOTMgMCA5NiA0My4wNiA5NiA5NnMtNDMuMDcgOTYtOTYgOTZjLTE0LjA0IDAtMjcuMjktMy4yLTM5LjMyLTguNjRsLTM1LjI2IDM1LjI2QzM3OS4yMyAyNzkuOTIgNDA0LjU5IDI4OCA0MzIgMjg4Yzc5LjUzIDAgMTQ0LTY0LjQ3IDE0NC0xNDRTNTExLjUzIDAgNDMyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGVCcmFuY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDE0NGMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MGMwIDM2LjQgMjQuMyA2Ny4xIDU3LjUgNzYuOC0uNiAxNi4xLTQuMiAyOC41LTExIDM2LjktMTUuNCAxOS4yLTQ5LjMgMjIuNC04NS4yIDI1LjctMjguMiAyLjYtNTcuNCA1LjQtODEuMyAxNi45di0xNDRjMzIuNS0xMC4yIDU2LTQwLjUgNTYtNzYuMyAwLTQ0LjItMzUuOC04MC04MC04MFMwIDM1LjggMCA4MGMwIDM1LjggMjMuNSA2Ni4xIDU2IDc2LjN2MTk5LjNDMjMuNSAzNjUuOSAwIDM5Ni4yIDAgNDMyYzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0zNC0yMS4yLTYzLjEtNTEuMi03NC42IDMuMS01LjIgNy44LTkuOCAxNC45LTEzLjQgMTYuMi04LjIgNDAuNC0xMC40IDY2LjEtMTIuOCA0Mi4yLTMuOSA5MC04LjQgMTE4LjItNDMuNCAxNC0xNy40IDIxLjEtMzkuOCAyMS42LTY3LjkgMzEuNi0xMC44IDU0LjQtNDAuNyA1NC40LTc1Ljl6TTgwIDY0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2LTE2LTcuMi0xNi0xNiA3LjItMTYgMTYtMTZ6bTAgMzg0Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6bTIyNC0zMjBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTYtMTYtNy4yLTE2LTE2IDcuMi0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzguOSA1MTEuNWwtNjEtMTcuN2MtNi40LTEuOC0xMC04LjUtOC4yLTE0LjlMMzQ2LjIgOC43YzEuOC02LjQgOC41LTEwIDE0LjktOC4ybDYxIDE3LjdjNi40IDEuOCAxMCA4LjUgOC4yIDE0LjlMMjkzLjggNTAzLjNjLTEuOSA2LjQtOC41IDEwLjEtMTQuOSA4LjJ6bS0xMTQtMTEyLjJsNDMuNS00Ni40YzQuNi00LjkgNC4zLTEyLjctLjgtMTcuMkwxMTcgMjU2bDkwLjYtNzkuN2M1LjEtNC41IDUuNS0xMi4zLjgtMTcuMmwtNDMuNS00Ni40Yy00LjUtNC44LTEyLjEtNS4xLTE3LS41TDMuOCAyNDcuMmMtNS4xIDQuNy01LjEgMTIuOCAwIDE3LjVsMTQ0LjEgMTM1LjFjNC45IDQuNiAxMi41IDQuNCAxNy0uNXptMzI3LjIuNmwxNDQuMS0xMzUuMWM1LjEtNC43IDUuMS0xMi44IDAtMTcuNUw0OTIuMSAxMTIuMWMtNC44LTQuNS0xMi40LTQuMy0xNyAuNUw0MzEuNiAxNTljLTQuNiA0LjktNC4zIDEyLjcuOCAxNy4yTDUyMyAyNTZsLTkwLjYgNzkuN2MtNS4xIDQuNS01LjUgMTIuMy0uOCAxNy4ybDQzLjUgNDYuNGM0LjUgNC45IDEyLjEgNS4xIDE3IC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2ZmZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDM4NGgxOTJjNTMgMCA5Ni00MyA5Ni05NmgzMmM3MC42IDAgMTI4LTU3LjQgMTI4LTEyOFM1ODIuNiAzMiA1MTIgMzJIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyMzJjMCA1MyA0MyA5NiA5NiA5NnpNNTEyIDk2YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0aC0zMlY5NmgzMnptNDcuNyAzODRINDguM2MtNDcuNiAwLTYxLTY0LTM2LTY0aDU4My4zYzI1IDAgMTEuOCA2NC0zNS45IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg3LjQgMzE1LjdsLTQyLjYtMjQuNmM0LjMtMjMuMiA0LjMtNDcgMC03MC4ybDQyLjYtMjQuNmM0LjktMi44IDcuMS04LjYgNS41LTE0LTExLjEtMzUuNi0zMC02Ny44LTU0LjctOTQuNi0zLjgtNC4xLTEwLTUuMS0xNC44LTIuM0wzODAuOCAxMTBjLTE3LjktMTUuNC0zOC41LTI3LjMtNjAuOC0zNS4xVjI1LjhjMC01LjYtMy45LTEwLjUtOS40LTExLjctMzYuNy04LjItNzQuMy03LjgtMTA5LjIgMC01LjUgMS4yLTkuNCA2LjEtOS40IDExLjdWNzVjLTIyLjIgNy45LTQyLjggMTkuOC02MC44IDM1LjFMODguNyA4NS41Yy00LjktMi44LTExLTEuOS0xNC44IDIuMy0yNC43IDI2LjctNDMuNiA1OC45LTU0LjcgOTQuNi0xLjcgNS40LjYgMTEuMiA1LjUgMTRMNjcuMyAyMjFjLTQuMyAyMy4yLTQuMyA0NyAwIDcwLjJsLTQyLjYgMjQuNmMtNC45IDIuOC03LjEgOC42LTUuNSAxNCAxMS4xIDM1LjYgMzAgNjcuOCA1NC43IDk0LjYgMy44IDQuMSAxMCA1LjEgMTQuOCAyLjNsNDIuNi0yNC42YzE3LjkgMTUuNCAzOC41IDI3LjMgNjAuOCAzNS4xdjQ5LjJjMCA1LjYgMy45IDEwLjUgOS40IDExLjcgMzYuNyA4LjIgNzQuMyA3LjggMTA5LjIgMCA1LjUtMS4yIDkuNC02LjEgOS40LTExLjd2LTQ5LjJjMjIuMi03LjkgNDIuOC0xOS44IDYwLjgtMzUuMWw0Mi42IDI0LjZjNC45IDIuOCAxMSAxLjkgMTQuOC0yLjMgMjQuNy0yNi43IDQzLjYtNTguOSA1NC43LTk0LjYgMS41LTUuNS0uNy0xMS4zLTUuNi0xNC4xek0yNTYgMzM2Yy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29ncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIuMSAxOTFsLTguMiAxNC4zYy0zIDUuMy05LjQgNy41LTE1LjEgNS40LTExLjgtNC40LTIyLjYtMTAuNy0zMi4xLTE4LjYtNC42LTMuOC01LjgtMTAuNS0yLjgtMTUuN2w4LjItMTQuM2MtNi45LTgtMTIuMy0xNy4zLTE1LjktMjcuNGgtMTYuNWMtNiAwLTExLjItNC4zLTEyLjItMTAuMy0yLTEyLTIuMS0yNC42IDAtMzcuMSAxLTYgNi4yLTEwLjQgMTIuMi0xMC40aDE2LjVjMy42LTEwLjEgOS0xOS40IDE1LjktMjcuNGwtOC4yLTE0LjNjLTMtNS4yLTEuOS0xMS45IDIuOC0xNS43IDkuNS03LjkgMjAuNC0xNC4yIDMyLjEtMTguNiA1LjctMi4xIDEyLjEuMSAxNS4xIDUuNGw4LjIgMTQuM2MxMC41LTEuOSAyMS4yLTEuOSAzMS43IDBMNTUyIDYuM2MzLTUuMyA5LjQtNy41IDE1LjEtNS40IDExLjggNC40IDIyLjYgMTAuNyAzMi4xIDE4LjYgNC42IDMuOCA1LjggMTAuNSAyLjggMTUuN2wtOC4yIDE0LjNjNi45IDggMTIuMyAxNy4zIDE1LjkgMjcuNGgxNi41YzYgMCAxMS4yIDQuMyAxMi4yIDEwLjMgMiAxMiAyLjEgMjQuNiAwIDM3LjEtMSA2LTYuMiAxMC40LTEyLjIgMTAuNGgtMTYuNWMtMy42IDEwLjEtOSAxOS40LTE1LjkgMjcuNGw4LjIgMTQuM2MzIDUuMiAxLjkgMTEuOS0yLjggMTUuNy05LjUgNy45LTIwLjQgMTQuMi0zMi4xIDE4LjYtNS43IDIuMS0xMi4xLS4xLTE1LjEtNS40bC04LjItMTQuM2MtMTAuNCAxLjktMjEuMiAxLjktMzEuNyAwem0tMTAuNS01OC44YzM4LjUgMjkuNiA4Mi40LTE0LjMgNTIuOC01Mi44LTM4LjUtMjkuNy04Mi40IDE0LjMtNTIuOCA1Mi44ek0zODYuMyAyODYuMWwzMy43IDE2LjhjMTAuMSA1LjggMTQuNSAxOC4xIDEwLjUgMjkuMS04LjkgMjQuMi0yNi40IDQ2LjQtNDIuNiA2NS44LTcuNCA4LjktMjAuMiAxMS4xLTMwLjMgNS4zbC0yOS4xLTE2LjhjLTE2IDEzLjctMzQuNiAyNC42LTU0LjkgMzEuN3YzMy42YzAgMTEuNi04LjMgMjEuNi0xOS43IDIzLjYtMjQuNiA0LjItNTAuNCA0LjQtNzUuOSAwLTExLjUtMi0yMC0xMS45LTIwLTIzLjZWNDE4Yy0yMC4zLTcuMi0zOC45LTE4LTU0LjktMzEuN0w3NCA0MDNjLTEwIDUuOC0yMi45IDMuNi0zMC4zLTUuMy0xNi4yLTE5LjQtMzMuMy00MS42LTQyLjItNjUuNy00LTEwLjkuNC0yMy4yIDEwLjUtMjkuMWwzMy4zLTE2LjhjLTMuOS0yMC45LTMuOS00Mi40IDAtNjMuNEwxMiAyMDUuOGMtMTAuMS01LjgtMTQuNi0xOC4xLTEwLjUtMjkgOC45LTI0LjIgMjYtNDYuNCA0Mi4yLTY1LjggNy40LTguOSAyMC4yLTExLjEgMzAuMy01LjNsMjkuMSAxNi44YzE2LTEzLjcgMzQuNi0yNC42IDU0LjktMzEuN1Y1Ny4xYzAtMTEuNSA4LjItMjEuNSAxOS42LTIzLjUgMjQuNi00LjIgNTAuNS00LjQgNzYtLjEgMTEuNSAyIDIwIDExLjkgMjAgMjMuNnYzMy42YzIwLjMgNy4yIDM4LjkgMTggNTQuOSAzMS43bDI5LjEtMTYuOGMxMC01LjggMjIuOS0zLjYgMzAuMyA1LjMgMTYuMiAxOS40IDMzLjIgNDEuNiA0Mi4xIDY1LjggNCAxMC45LjEgMjMuMi0xMCAyOS4xbC0zMy43IDE2LjhjMy45IDIxIDMuOSA0Mi41IDAgNjMuNXptLTExNy42IDIxLjFjNTkuMi03Ny0yOC43LTE2NC45LTEwNS43LTEwNS43LTU5LjIgNzcgMjguNyAxNjQuOSAxMDUuNyAxMDUuN3ptMjQzLjQgMTgyLjdsLTguMiAxNC4zYy0zIDUuMy05LjQgNy41LTE1LjEgNS40LTExLjgtNC40LTIyLjYtMTAuNy0zMi4xLTE4LjYtNC42LTMuOC01LjgtMTAuNS0yLjgtMTUuN2w4LjItMTQuM2MtNi45LTgtMTIuMy0xNy4zLTE1LjktMjcuNGgtMTYuNWMtNiAwLTExLjItNC4zLTEyLjItMTAuMy0yLTEyLTIuMS0yNC42IDAtMzcuMSAxLTYgNi4yLTEwLjQgMTIuMi0xMC40aDE2LjVjMy42LTEwLjEgOS0xOS40IDE1LjktMjcuNGwtOC4yLTE0LjNjLTMtNS4yLTEuOS0xMS45IDIuOC0xNS43IDkuNS03LjkgMjAuNC0xNC4yIDMyLjEtMTguNiA1LjctMi4xIDEyLjEuMSAxNS4xIDUuNGw4LjIgMTQuM2MxMC41LTEuOSAyMS4yLTEuOSAzMS43IDBsOC4yLTE0LjNjMy01LjMgOS40LTcuNSAxNS4xLTUuNCAxMS44IDQuNCAyMi42IDEwLjcgMzIuMSAxOC42IDQuNiAzLjggNS44IDEwLjUgMi44IDE1LjdsLTguMiAxNC4zYzYuOSA4IDEyLjMgMTcuMyAxNS45IDI3LjRoMTYuNWM2IDAgMTEuMiA0LjMgMTIuMiAxMC4zIDIgMTIgMi4xIDI0LjYgMCAzNy4xLTEgNi02LjIgMTAuNC0xMi4yIDEwLjRoLTE2LjVjLTMuNiAxMC4xLTkgMTkuNC0xNS45IDI3LjRsOC4yIDE0LjNjMyA1LjIgMS45IDExLjktMi44IDE1LjctOS41IDcuOS0yMC40IDE0LjItMzIuMSAxOC42LTUuNyAyLjEtMTIuMS0uMS0xNS4xLTUuNGwtOC4yLTE0LjNjLTEwLjQgMS45LTIxLjIgMS45LTMxLjcgMHpNNTAxLjYgNDMxYzM4LjUgMjkuNiA4Mi40LTE0LjMgNTIuOC01Mi44LTM4LjUtMjkuNi04Mi40IDE0LjMtNTIuOCA1Mi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2lucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQwNS4zVjQ0OGMwIDM1LjMgODYgNjQgMTkyIDY0czE5Mi0yOC43IDE5Mi02NHYtNDIuN0MzNDIuNyA0MzQuNCAyNjcuMiA0NDggMTkyIDQ0OFM0MS4zIDQzNC40IDAgNDA1LjN6TTMyMCAxMjhjMTA2IDAgMTkyLTI4LjcgMTkyLTY0UzQyNiAwIDMyMCAwIDEyOCAyOC43IDEyOCA2NHM4NiA2NCAxOTIgNjR6TTAgMzAwLjRWMzUyYzAgMzUuMyA4NiA2NCAxOTIgNjRzMTkyLTI4LjcgMTkyLTY0di01MS42Yy00MS4zIDM0LTExNi45IDUxLjYtMTkyIDUxLjZTNDEuMyAzMzQuNCAwIDMwMC40em00MTYgMTFjNTcuMy0xMS4xIDk2LTMxLjcgOTYtNTUuNHYtNDIuN2MtMjMuMiAxNi40LTU3LjMgMjcuNi05NiAzNC41djYzLjZ6TTE5MiAxNjBDODYgMTYwIDAgMTk1LjggMCAyNDBzODYgODAgMTkyIDgwIDE5Mi0zNS44IDE5Mi04MC04Ni04MC0xOTItODB6bTIxOS4zIDU2LjNjNjAtMTAuOCAxMDAuNy0zMiAxMDAuNy01Ni4zdi00Mi43Yy0zNS41IDI1LjEtOTYuNSAzOC42LTE2MC43IDQxLjggMjkuNSAxNC4zIDUxLjIgMzMuNSA2MCA1Ny4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2x1bW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODBjMC0yNi41MS0yMS40OS00OC00OC00OHpNMjI0IDQxNkg2NFYxNjBoMTYwdjI1NnptMjI0IDBIMjg4VjE2MGgxNjB2MjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21tZW50QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAwSDY0QzI4LjcgMCAwIDI4LjcgMCA2NHYyODhjMCAzNS4zIDI4LjcgNjQgNjQgNjRoOTZ2ODRjMCA5LjggMTEuMiAxNS41IDE5LjEgOS43TDMwNCA0MTZoMTQ0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21tZW50RG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAzMkMxMTQuNjIgMzIgMCAxMjUuMTIgMCAyNDBjMCA0OS41NiAyMS40MSA5NS4wMSA1Ny4wMiAxMzAuNzRDNDQuNDYgNDIxLjA1IDIuNyA0NjUuOTcgMi4yIDQ2Ni41QTcuOTk1IDcuOTk1IDAgMCAwIDggNDgwYzY2LjI2IDAgMTE1Ljk5LTMxLjc1IDE0MC42LTUxLjM4QzE4MS4yOSA0NDAuOTMgMjE3LjU5IDQ0OCAyNTYgNDQ4YzE0MS4zOCAwIDI1Ni05My4xMiAyNTYtMjA4UzM5Ny4zOCAzMiAyNTYgMzJ6bTI0IDMwMi40NFYzNTJjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTE2Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMTcuNzNjLTExLjQyLTEuMzUtMjIuMjgtNS4xOS0zMS43OC0xMS40Ni02LjIyLTQuMTEtNi44Mi0xMy4xMS0xLjU1LTE4LjM4bDE3LjUyLTE3LjUyYzMuNzQtMy43NCA5LjMxLTQuMjQgMTQuMTEtMi4wMyAzLjE4IDEuNDYgNi42NiAyLjIyIDEwLjI2IDIuMjJoMzIuNzhjNC42NiAwIDguNDQtMy43OCA4LjQ0LTguNDIgMC0zLjc1LTIuNTItNy4wOC02LjEyLTguMTFsLTUwLjA3LTE0LjNjLTIyLjI1LTYuMzUtNDAuMDEtMjQuNzEtNDIuOTEtNDcuNjctNC4wNS0zMi4wNyAxOS4wMy01OS40MyA0OS4zMi02My4wNVYxMjhjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMTZjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTcuNzNjMTEuNDIgMS4zNSAyMi4yOCA1LjE5IDMxLjc4IDExLjQ2IDYuMjIgNC4xMSA2LjgyIDEzLjExIDEuNTUgMTguMzhsLTE3LjUyIDE3LjUyYy0zLjc0IDMuNzQtOS4zMSA0LjI0LTE0LjExIDIuMDNhMjQuNTE2IDI0LjUxNiAwIDAgMC0xMC4yNi0yLjIyaC0zMi43OGMtNC42NiAwLTguNDQgMy43OC04LjQ0IDguNDIgMCAzLjc1IDIuNTIgNy4wOCA2LjEyIDguMTFsNTAuMDcgMTQuM2MyMi4yNSA2LjM2IDQwLjAxIDI0LjcxIDQyLjkxIDQ3LjY3IDQuMDUgMzIuMDYtMTkuMDMgNTkuNDItNDkuMzIgNjMuMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnREb3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAzMkMxMTQuNiAzMiAwIDEyNS4xIDAgMjQwYzAgNDkuNiAyMS40IDk1IDU3IDEzMC43QzQ0LjUgNDIxLjEgMi43IDQ2NiAyLjIgNDY2LjVjLTIuMiAyLjMtMi44IDUuNy0xLjUgOC43UzQuOCA0ODAgOCA0ODBjNjYuMyAwIDExNi0zMS44IDE0MC42LTUxLjQgMzIuNyAxMi4zIDY5IDE5LjQgMTA3LjQgMTkuNCAxNDEuNCAwIDI1Ni05My4xIDI1Ni0yMDhTMzk3LjQgMzIgMjU2IDMyek0xMjggMjcyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTI4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xMjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnRNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAzMkMxMTQuNjIgMzIgMCAxMjUuMTIgMCAyNDBjMCA0OS41NiAyMS40MSA5NSA1NyAxMzAuNzRDNDQuNDYgNDIxLjA1IDIuNyA0NjYgMi4yIDQ2Ni41QTggOCAwIDAgMCA4IDQ4MGM2Ni4yNiAwIDExNi0zMS43NSAxNDAuNi01MS4zOEEzMDQuNjYgMzA0LjY2IDAgMCAwIDI1NiA0NDhjMTQxLjM5IDAgMjU2LTkzLjEyIDI1Ni0yMDhTMzk3LjM5IDMyIDI1NiAzMnptOTYgMjMyYTggOCAwIDAgMS04IDhoLTU2djU2YTggOCAwIDAgMS04IDhoLTQ4YTggOCAwIDAgMS04LTh2LTU2aC01NmE4IDggMCAwIDEtOC04di00OGE4IDggMCAwIDEgOC04aDU2di01NmE4IDggMCAwIDEgOC04aDQ4YTggOCAwIDAgMSA4IDh2NTZoNTZhOCA4IDAgMCAxIDggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDI0MGMwIDQ5LjYgMjEuNCA5NSA1NyAxMzAuNy0xMi42IDUwLjMtNTQuMyA5NS4yLTU0LjggOTUuOC0yLjIgMi4zLTIuOCA1LjctMS41IDguNyAxLjMgMi45IDQuMSA0LjggNy4zIDQuOCA2Ni4zIDAgMTE2LTMxLjggMTQwLjYtNTEuNCAzMi43IDEyLjMgNjkgMTkuNCAxMDcuNCAxOS40IDI3LjQgMCA1My43LTMuNiA3OC40LTEwTDcyLjkgMTg2LjRjLTUuNiAxNy4xLTguOSAzNS04LjkgNTMuNnptNTY5LjggMjE4LjFsLTExNC40LTg4LjRDNTU0LjYgMzM0LjEgNTc2IDI4OS4yIDU3NiAyNDBjMC0xMTQuOS0xMTQuNi0yMDgtMjU2LTIwOC02NS4xIDAtMTI0LjIgMjAuMS0xNjkuNCA1Mi43TDQ1LjUgMy40QzM4LjUtMiAyOC41LS44IDIzIDYuMkwzLjQgMzEuNGMtNS40IDctNC4yIDE3IDIuOCAyMi40bDU4OC40IDQ1NC43YzcgNS40IDE3IDQuMiAyMi41LTIuOGwxOS42LTI1LjNjNS40LTYuOCA0LjEtMTYuOS0yLjktMjIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJDMTE0LjYgMzIgMCAxMjUuMSAwIDI0MGMwIDQ5LjYgMjEuNCA5NSA1NyAxMzAuN0M0NC41IDQyMS4xIDIuNyA0NjYgMi4yIDQ2Ni41Yy0yLjIgMi4zLTIuOCA1LjctMS41IDguN1M0LjggNDgwIDggNDgwYzY2LjMgMCAxMTYtMzEuOCAxNDAuNi01MS40IDMyLjcgMTIuMyA2OSAxOS40IDEwNy40IDE5LjQgMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudHNEb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDE5MmMwLTg4LjM3LTkzLjEyLTE2MC0yMDgtMTYwUzAgMTAzLjYzIDAgMTkyYzAgMzQuMjcgMTQuMTMgNjUuOTUgMzcuOTcgOTEuOThDMjQuNjEgMzE0LjIyIDIuNTIgMzM4LjE2IDIuMiAzMzguNUE3Ljk5NSA3Ljk5NSAwIDAgMCA4IDM1MmMzNi41OCAwIDY2LjkzLTEyLjI1IDg4LjczLTI0Ljk4QzEyOC45MyAzNDIuNzYgMTY3LjAyIDM1MiAyMDggMzUyYzExNC44OCAwIDIwOC03MS42MyAyMDgtMTYwem0tMjI0IDk2di0xNi4yOWMtMTEuMjktLjU4LTIyLjI3LTQuNTItMzEuMzctMTEuMzUtMy45LTIuOTMtNC4xLTguNzctLjU3LTEyLjE0bDExLjc1LTExLjIxYzIuNzctMi42NCA2Ljg5LTIuNzYgMTAuMTMtLjczIDMuODcgMi40MiA4LjI2IDMuNzIgMTIuODIgMy43MmgyOC4xMWM2LjUgMCAxMS44LTUuOTIgMTEuOC0xMy4xOSAwLTUuOTUtMy42MS0xMS4xOS04Ljc3LTEyLjczbC00NS0xMy41Yy0xOC41OS01LjU4LTMxLjU4LTIzLjQyLTMxLjU4LTQzLjM5IDAtMjQuNTIgMTkuMDUtNDQuNDQgNDIuNjctNDUuMDdWOTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTYuMjljMTEuMjkuNTggMjIuMjcgNC41MSAzMS4zNyAxMS4zNSAzLjkgMi45MyA0LjEgOC43Ny41NyAxMi4xNGwtMTEuNzUgMTEuMjFjLTIuNzcgMi42NC02Ljg5IDIuNzYtMTAuMTMuNzMtMy44Ny0yLjQzLTguMjYtMy43Mi0xMi44Mi0zLjcyaC0yOC4xMWMtNi41IDAtMTEuOCA1LjkyLTExLjggMTMuMTkgMCA1Ljk1IDMuNjEgMTEuMTkgOC43NyAxMi43M2w0NSAxMy41YzE4LjU5IDUuNTggMzEuNTggMjMuNDIgMzEuNTggNDMuMzkgMCAyNC41My0xOS4wNSA0NC40NC00Mi42NyA0NS4wN1YyODhjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptMzQ2LjAxIDEyMy45OUM1NjEuODcgMzg1Ljk2IDU3NiAzNTQuMjcgNTc2IDMyMGMwLTY2Ljk0LTUzLjQ5LTEyNC4yLTEyOS4zMy0xNDguMDcuODYgNi42IDEuMzMgMTMuMjkgMS4zMyAyMC4wNyAwIDEwNS44Ny0xMDcuNjYgMTkyLTI0MCAxOTItMTAuNzggMC0yMS4zMi0uNzctMzEuNzMtMS44OEMyMDcuOCA0MzkuNjMgMjgxLjc3IDQ4MCAzNjggNDgwYzQwLjk4IDAgNzkuMDctOS4yNCAxMTEuMjctMjQuOThDNTAxLjA3IDQ2Ny43NSA1MzEuNDIgNDgwIDU2OCA0ODBjMy4yIDAgNi4wOS0xLjkxIDcuMzQtNC44NCAxLjI3LTIuOTQuNjYtNi4zNC0xLjU1LTguNjctLjMxLS4zMy0yMi40Mi0yNC4yNC0zNS43OC01NC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21tZW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMTkyYzAtODguNC05My4xLTE2MC0yMDgtMTYwUzAgMTAzLjYgMCAxOTJjMCAzNC4zIDE0LjEgNjUuOSAzOCA5Mi0xMy40IDMwLjItMzUuNSA1NC4yLTM1LjggNTQuNS0yLjIgMi4zLTIuOCA1LjctMS41IDguN1M0LjggMzUyIDggMzUyYzM2LjYgMCA2Ni45LTEyLjMgODguNy0yNSAzMi4yIDE1LjcgNzAuMyAyNSAxMTEuMyAyNSAxMTQuOSAwIDIwOC03MS42IDIwOC0xNjB6bTEyMiAyMjBjMjMuOS0yNiAzOC01Ny43IDM4LTkyIDAtNjYuOS01My41LTEyNC4yLTEyOS4zLTE0OC4xLjkgNi42IDEuMyAxMy4zIDEuMyAyMC4xIDAgMTA1LjktMTA3LjcgMTkyLTI0MCAxOTItMTAuOCAwLTIxLjMtLjgtMzEuNy0xLjlDMjA3LjggNDM5LjYgMjgxLjggNDgwIDM2OCA0ODBjNDEgMCA3OS4xLTkuMiAxMTEuMy0yNSAyMS44IDEyLjcgNTIuMSAyNSA4OC43IDI1IDMuMiAwIDYuMS0xLjkgNy4zLTQuOCAxLjMtMi45LjctNi4zLTEuNS04LjctLjMtLjMtMjIuNC0yNC4yLTM1LjgtNTQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tcGFjdERpc2MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNODggMjU2SDU2YzAtMTA1LjkgODYuMS0xOTIgMTkyLTE5MnYzMmMtODguMiAwLTE2MCA3MS44LTE2MCAxNjB6bTE2MCA5NmMtNTMgMC05Ni00My05Ni05NnM0My05NiA5Ni05NiA5NiA0MyA5NiA5Ni00MyA5Ni05NiA5NnptMC0xMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21wYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNS4zOCAyMzMuMzdjLTEyLjUgMTIuNS0xMi41IDMyLjc2IDAgNDUuMjUgMTIuNDkgMTIuNSAzMi43NiAxMi41IDQ1LjI1IDAgMTIuNS0xMi41IDEyLjUtMzIuNzYgMC00NS4yNS0xMi41LTEyLjQ5LTMyLjc2LTEyLjQ5LTQ1LjI1IDB6TTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTEyNi4xNCAxNDguMDVMMzA4LjE3IDMwMC40YTMxLjkzOCAzMS45MzggMCAwIDEtMTUuNzcgMTUuNzdsLTE0NC4zNCA2NS45N2MtMTYuNjUgNy42MS0zMy44MS05LjU1LTI2LjItMjYuMmw2NS45OC0xNDQuMzVhMzEuOTM4IDMxLjkzOCAwIDAgMSAxNS43Ny0xNS43N2wxNDQuMzQtNjUuOTdjMTYuNjUtNy42IDMzLjggOS41NSAyNi4xOSAyNi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21wcmVzc0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjY4NiA0MjcuMzE0TDEwNCAzMjhsLTMyLjkyMi0zMS4wMjlDNTUuOTU4IDI4MS44NTEgNjYuNjY2IDI1NiA4OC4wNDggMjU2aDExMkMyMTMuMzAzIDI1NiAyMjQgMjY2Ljc0NSAyMjQgMjgwdjExMmMwIDIxLjM4Mi0yNS44MDMgMzIuMDktNDAuOTIyIDE2Ljk3MUwxNTIgMzc2bC05OS4zMTQgOTkuMzE0Yy02LjI0OCA2LjI0OC0xNi4zNzkgNi4yNDgtMjIuNjI3IDBMNC42ODYgNDQ5Ljk0MWMtNi4yNDgtNi4yNDgtNi4yNDgtMTYuMzc5IDAtMjIuNjI3ek00NDMuMzE0IDg0LjY4NkwzNDQgMTg0bDMyLjkyMiAzMS4wMjljMTUuMTIgMTUuMTIgNC40MTIgNDAuOTcxLTE2Ljk3IDQwLjk3MWgtMTEyQzIzNC42OTcgMjU2IDIyNCAyNDUuMjU1IDIyNCAyMzJWMTIwYzAtMjEuMzgyIDI1LjgwMy0zMi4wOSA0MC45MjItMTYuOTcxTDI5NiAxMzZsOTkuMzE0LTk5LjMxNGM2LjI0OC02LjI0OCAxNi4zNzktNi4yNDggMjIuNjI3IDBsMjUuMzczIDI1LjM3M2M2LjI0OCA2LjI0OCA2LjI0OCAxNi4zNzkgMCAyMi42Mjd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbXByZXNzQXJyb3dzQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMCAyODhIODhjLTIxLjQgMC0zMi4xIDI1LjgtMTcgNDFsMzIuOSAzMS05OS4yIDk5LjNjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42bDI1LjQgMjUuNGM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMEwxNTIgNDA4bDMxLjEgMzNjMTUuMSAxNS4xIDQwLjkgNC40IDQwLjktMTdWMzEyYzAtMTMuMy0xMC43LTI0LTI0LTI0em0xMTItNjRoMTEyYzIxLjQgMCAzMi4xLTI1LjkgMTctNDFsLTMzLTMxIDk5LjMtOTkuM2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNkw0ODEuOSA0LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDM2MCAxMDRsLTMxLjEtMzNDMzEzLjggNTUuOSAyODggNjYuNiAyODggODh2MTEyYzAgMTMuMyAxMC43IDI0IDI0IDI0em05NiAxMzZsMzMtMzEuMWMxNS4xLTE1LjEgNC40LTQwLjktMTctNDAuOUgzMTJjLTEzLjMgMC0yNCAxMC43LTI0IDI0djExMmMwIDIxLjQgMjUuOSAzMi4xIDQxIDE3bDMxLTMyLjkgOTkuMyA5OS4zYzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDI1LjQtMjUuNGM2LjItNi4yIDYuMi0xNi40IDAtMjIuNkw0MDggMzYwek0xODMgNzEuMUwxNTIgMTA0IDUyLjcgNC43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw0LjcgMzAuMWMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZMMTA0IDE1MmwtMzMgMzEuMUM1NS45IDE5OC4yIDY2LjYgMjI0IDg4IDIyNGgxMTJjMTMuMyAwIDI0LTEwLjcgMjQtMjRWODhjMC0yMS4zLTI1LjktMzItNDEtMTYuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tcHJlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM2IDE5MkgzMTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjQ0YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2ODRoODRjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMnptLTI3Ni0yNFY0NGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2ODRIMTJjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMTI0YzEzLjMgMCAyNC0xMC43IDI0LTI0em0wIDMwMFYzNDRjMC0xMy4zLTEwLjctMjQtMjQtMjRIMTJjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoODR2ODRjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnptMTkyIDB2LTg0aDg0YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEySDMxMmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MTI0YzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbmNpZXJnZUJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDEzMC41NFYxMTJoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTk2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNnYxOC41NEMxMTUuNDkgMTQ2LjExIDMyIDIzOS4xOCAzMiAzNTJoNDQ4YzAtMTEyLjgyLTgzLjQ5LTIwNS44OS0xOTItMjIxLjQ2ek00OTYgMzg0SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0ODBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb29raWVCaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMC41MiAyNTUuODJjLTY5Ljk3LS44NS0xMjYuNDctNTcuNjktMTI2LjQ3LTEyNy44Ni03MC4xNyAwLTEyNy01Ni40OS0xMjcuODYtMTI2LjQ1LTI3LjI2LTQuMTQtNTUuMTMuMy03OS43MiAxMi44MmwtNjkuMTMgMzUuMjJhMTMyLjIyMSAxMzIuMjIxIDAgMCAwLTU3Ljc5IDU3LjgxbC0zNS4xIDY4Ljg4YTEzMi42NDUgMTMyLjY0NSAwIDAgMC0xMi44MiA4MC45NWwxMi4wOCA3Ni4yN2ExMzIuNTIxIDEzMi41MjEgMCAwIDAgMzcuMTYgNzIuOTZsNTQuNzcgNTQuNzZhMTMyLjAzNiAxMzIuMDM2IDAgMCAwIDcyLjcxIDM3LjA2bDc2LjcxIDEyLjE1YzI3LjUxIDQuMzYgNTUuNy0uMTEgODAuNTMtMTIuNzZsNjkuMTMtMzUuMjFhMTMyLjI3MyAxMzIuMjczIDAgMCAwIDU3Ljc5LTU3LjgxbDM1LjEtNjguODhjMTIuNTYtMjQuNjQgMTcuMDEtNTIuNTggMTIuOTEtNzkuOTF6TTE3NiAzNjhjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTMyLTE2MGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTYwIDEyOGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29va2llIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMC4zNyAyNTQuNzlsLTEyLjA4LTc2LjI2YTEzMi40OTMgMTMyLjQ5MyAwIDAgMC0zNy4xNi03Mi45NWwtNTQuNzYtNTQuNzVjLTE5LjczLTE5LjcyLTQ1LjE4LTMyLjctNzIuNzEtMzcuMDVsLTc2LjctMTIuMTVjLTI3LjUxLTQuMzYtNTUuNjkuMTEtODAuNTIgMTIuNzZMMTA3LjMyIDQ5LjZhMTMyLjI1IDEzMi4yNSAwIDAgMC01Ny43OSA1Ny44bC0zNS4xIDY4Ljg4YTEzMi42MDIgMTMyLjYwMiAwIDAgMC0xMi44MiA4MC45NGwxMi4wOCA3Ni4yN2ExMzIuNDkzIDEzMi40OTMgMCAwIDAgMzcuMTYgNzIuOTVsNTQuNzYgNTQuNzVhMTMyLjA4NyAxMzIuMDg3IDAgMCAwIDcyLjcxIDM3LjA1bDc2LjcgMTIuMTRjMjcuNTEgNC4zNiA1NS42OS0uMTEgODAuNTItMTIuNzVsNjkuMTItMzUuMjFhMTMyLjMwMiAxMzIuMzAyIDAgMCAwIDU3Ljc5LTU3LjhsMzUuMS02OC44N2MxMi43MS0yNC45NiAxNy4yLTUzLjMgMTIuODItODAuOTZ6TTE3NiAzNjhjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTMyLTE2MGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTYwIDEyOGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29weSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNDQ4djQwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyNGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0VjEyMGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoNzJ2Mjk2YzAgMzAuODc5IDI1LjEyMSA1NiA1NiA1NmgxNjh6bTAtMzQ0VjBIMTUyYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MzY4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgyNzJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjEyOEgzNDRjLTEzLjIgMC0yNC0xMC44LTI0LTI0em0xMjAuOTcxLTMxLjAyOUwzNzUuMDI5IDcuMDI5QTI0IDI0IDAgMCAwIDM1OC4wNTkgMEgzNTJ2OTZoOTZ2LTYuMDU5YTI0IDI0IDAgMCAwLTcuMDI5LTE2Ljk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb3B5cmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0xMTcuMTM0IDM0Ni43NTNjLTEuNTkyIDEuODY3LTM5Ljc3NiA0NS43MzEtMTA5Ljg1MSA0NS43MzEtODQuNjkyIDAtMTQ0LjQ4NC02My4yNi0xNDQuNDg0LTE0NS41NjcgMC04MS4zMDMgNjIuMDA0LTE0My40MDEgMTQzLjc2Mi0xNDMuNDAxIDY2Ljk1NyAwIDEwMS45NjUgMzcuMzE1IDEwMy40MjIgMzguOTA0YTEyIDEyIDAgMCAxIDEuMjM4IDE0LjYyM2wtMjIuMzggMzQuNjU1Yy00LjA0OSA2LjI2Ny0xMi43NzQgNy4zNTEtMTguMjM0IDIuMjk1LS4yMzMtLjIxNC0yNi41MjktMjMuODgtNjEuODgtMjMuODgtNDYuMTE2IDAtNzMuOTE2IDMzLjU3NS03My45MTYgNzYuMDgyIDAgMzkuNjAyIDI1LjUxNCA3OS42OTIgNzQuMjc3IDc5LjY5MiAzOC42OTcgMCA2NS4yOC0yOC4zMzggNjUuNTQ0LTI4LjYyNSA1LjEzMi01LjU2NSAxNC4wNTktNS4wMzMgMTguNTA4IDEuMDUzbDI0LjU0NyAzMy41NzJhMTIuMDAxIDEyLjAwMSAwIDAgMS0uNTUzIDE0Ljg2NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ291Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDIyNHY2NGgzMjB2LTY0YzAtMzUuMyAyOC43LTY0IDY0LTY0aDMyYzAtNTMtNDMtOTYtOTYtOTZIMTYwYy01MyAwLTk2IDQzLTk2IDk2aDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0em00MTYtMzJoLTMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5NkgxMjh2LTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NCAwIDIzLjYgMTMgNDQgMzIgNTUuMVY0MzJjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNnYtMTZoMzg0djE2YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZWMzExLjFjMTktMTEuMSAzMi0zMS41IDMyLTU1LjEgMC0zNS4zLTI4LjctNjQtNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWRpdENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0MzJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI1NkgwdjE3NnptMTkyLTY4YzAtNi42IDUuNC0xMiAxMi0xMmgxMzZjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMkgyMDRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDB6bS0xMjggMGMwLTYuNiA1LjQtMTIgMTItMTJoNzJjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMkg3NmMtNi42IDAtMTItNS40LTEyLTEydi00MHpNNTc2IDgwdjQ4SDBWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoNDgwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm9wQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OCAzNTJoLTQwVjk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJIMTkydjk2aDE2MHYzMjhjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGg0OGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di00MGg0MGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di00OGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0ek0xNjAgMjRjMC0xMy4yNi0xMC43NS0yNC0yNC0yNEg4OEM3NC43NSAwIDY0IDEwLjc0IDY0IDI0djQwSDI0QzEwLjc1IDY0IDAgNzQuNzQgMCA4OHY0OGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQwdjI1NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDIyNHYtOTZIMTYwVjI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OCAzNTJoLTQwVjEwOS4yNWw1OS4zMS01OS4zMWM2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzTDQ4NC42OSA0LjY5Yy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwTDQwMi43NSA2NEgxOTJ2OTZoMTE0Ljc1TDE2MCAzMDYuNzVWMjRjMC0xMy4yNi0xMC43NS0yNC0yNC0yNEg4OEM3NC43NSAwIDY0IDEwLjc0IDY0IDI0djQwSDI0QzEwLjc1IDY0IDAgNzQuNzQgMCA4OHY0OGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQwdjI2NGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDIzMnYtOTZIMjA1LjI1TDM1MiAyMDUuMjVWNDg4YzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoNDhjMTMuMjUgMCAyNC0xMC43NSAyNC0yNHYtNDBoNDBjMTMuMjUgMCAyNC0xMC43NSAyNC0yNHYtNDhjMC0xMy4yNi0xMC43NS0yNC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3Jvc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDEyOGgtOTZWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NnYyMjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjI1Nmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm9zc2hhaXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMCAyMjRoLTMwLjM2NEM0NTUuNzI0IDEzMC4zMjUgMzgxLjY3NSA1Ni4yNzYgMjg4IDQyLjM2NFYxMmMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYzMC4zNjRDMTMwLjMyNSA1Ni4yNzYgNTYuMjc2IDEzMC4zMjUgNDIuMzY0IDIyNEgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDMwLjM2NEM1Ni4yNzYgMzgxLjY3NSAxMzAuMzI1IDQ1NS43MjQgMjI0IDQ2OS42MzZWNTAwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtMzAuMzY0QzM4MS42NzUgNDU1LjcyNCA0NTUuNzI0IDM4MS42NzUgNDY5LjYzNiAyODhINTAwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJ6TTI4OCA0MDQuNjM0VjM2NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MC42MzRDMTY1LjgyNiAzOTIuMjMyIDExOS43ODMgMzQ2LjI0MyAxMDcuMzY2IDI4OEgxNDhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDAuNjM0QzExOS43NjggMTY1LjgyNiAxNjUuNzU3IDExOS43ODMgMjI0IDEwNy4zNjZWMTQ4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDAuNjM0QzM0Ni4xNzQgMTE5Ljc2OCAzOTIuMjE3IDE2NS43NTcgNDA0LjYzNCAyMjRIMzY0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDAuNjM0QzM5Mi4yMzIgMzQ2LjE3NCAzNDYuMjQzIDM5Mi4yMTcgMjg4IDQwNC42MzR6TTI4OCAyNTZjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMycy0zMi0xNC4zMjctMzItMzJjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyczMyIDE0LjMyNyAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDQgMzJoLTE2LjM2QzUxMy4wNCAxMi42OCA0OTAuMDkgMCA0NjQgMGMtNDQuMTggMC04MCAzNS44Mi04MCA4MHYyMC45OEwxMi4wOSAzOTMuNTdBMzAuMjE2IDMwLjIxNiAwIDAgMCAwIDQxNy43NGMwIDIyLjQ2IDIzLjY0IDM3LjA3IDQzLjczIDI3LjAzTDE2NS4yNyAzODRoOTYuNDlsNDQuNDEgMTIwLjFjMi4yNyA2LjIzIDkuMTUgOS40NCAxNS4zOCA3LjE3bDIyLjU1LTguMjFjNi4yMy0yLjI3IDkuNDQtOS4xNSA3LjE3LTE1LjM4TDMxMi45NCAzODRIMzUyYzEuOTEgMCAzLjc2LS4yMyA1LjY2LS4yOWw0NC41MSAxMjAuMzhjMi4yNyA2LjIzIDkuMTUgOS40NCAxNS4zOCA3LjE3bDIyLjU1LTguMjFjNi4yMy0yLjI3IDkuNDQtOS4xNSA3LjE3LTE1LjM4bC00MS4yNC0xMTEuNTNDNDg1Ljc0IDM1Mi44IDU0NCAyNzkuMjYgNTQ0IDE5MnYtODBsOTYtMTZjMC0zNS4zNS00Mi45OC02NC05Ni02NHptLTgwIDcyYy0xMy4yNSAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzUtMjQgMjQtMjRzMjQgMTAuNzQgMjQgMjRjMCAxMy4yNS0xMC43NSAyNC0yNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3Jvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4IDQ0OEgxMTJjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNDE2YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2em02NC0zMjBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4IDAgNy4xIDEuNiAxMy43IDQuNCAxOS44TDQ3NiAyMzkuMmMtMTUuNCA5LjItMzUuMyA0LTQ0LjItMTEuNkwzNTAuMyA4NUMzNjEgNzYuMiAzNjggNjMgMzY4IDQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4YzAgMTUgNyAyOC4yIDE3LjcgMzdsLTgxLjUgMTQyLjZjLTguOSAxNS42LTI4LjkgMjAuOC00NC4yIDExLjZsLTcyLjMtNDMuNGMyLjctNiA0LjQtMTIuNyA0LjQtMTkuOCAwLTI2LjUtMjEuNS00OC00OC00OFMwIDE0OS41IDAgMTc2czIxLjUgNDggNDggNDhjMi42IDAgNS4yLS40IDcuNy0uOEwxMjggNDE2aDM4NGw3Mi4zLTE5Mi44YzIuNS40IDUuMS44IDcuNy44IDI2LjUgMCA0OC0yMS41IDQ4LTQ4cy0yMS41LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcnV0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA3LjMxIDE4NS43MWwtMTgxLTE4MWExNiAxNiAwIDAgMC0yMi42MiAwTDI4MSAyNy4zMWExNiAxNiAwIDAgMCAwIDIyLjYzbDE4MSAxODFhMTYgMTYgMCAwIDAgMjIuNjMgMGwyMi42Mi0yMi42M2ExNiAxNiAwIDAgMCAuMDYtMjIuNnptLTE3OS41NCA2Ni40MWwtNjcuODktNjcuODkgNTUuMS01NS4xLTQ1LjI1LTQ1LjI1LTEwOS42NyAxMDkuNjdhOTYuMDggOTYuMDggMCAwIDAtMjUuNjcgNDYuMjlMMTA2LjY1IDM2MC4xbC0xMDIgMTAyYTE2IDE2IDAgMCAwIDAgMjIuNjNsMjIuNjIgMjIuNjJhMTYgMTYgMCAwIDAgMjIuNjMgMGwxMDItMTAyIDEyMC4yNS0yNy43NWE5NS44OCA5NS44OCAwIDAgMCA0Ni4yOS0yNS42NWwxMDkuNjgtMTA5LjY4TDM4Mi44NyAxOTd6bS01NC41NyA1NC41N2EzMiAzMiAwIDAgMS0xNS40NSA4LjU0bC03OS4zIDE4LjMyIDE4LjMtNzkuM2EzMi4yMiAzMi4yMiAwIDAgMSA4LjU2LTE1LjQ1bDkuMzEtOS4zMSA2Ny44OSA2Ny44OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3ViZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzkuMSA2LjNsLTIwOCA3OGMtMTguNyA3LTMxLjEgMjUtMzEuMSA0NXYyMjUuMWMwIDE4LjIgMTAuMyAzNC44IDI2LjUgNDIuOWwyMDggMTA0YzEzLjUgNi44IDI5LjQgNi44IDQyLjkgMGwyMDgtMTA0YzE2LjMtOC4xIDI2LjUtMjQuOCAyNi41LTQyLjlWMTI5LjNjMC0yMC0xMi40LTM3LjktMzEuMS00NC45bC0yMDgtNzhDMjYyIDIuMiAyNTAgMi4yIDIzOS4xIDYuM3pNMjU2IDY4LjRsMTkyIDcydjEuMWwtMTkyIDc4LTE5Mi03OHYtMS4xbDE5Mi03MnptMzIgMzU2VjI3NS41bDE2MC02NXYxMzMuOWwtMTYwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDdWJlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODguNiAyNTAuMkwzOTIgMjE0VjEwNS41YzAtMTUtOS4zLTI4LjQtMjMuNC0zMy43bC0xMDAtMzcuNWMtOC4xLTMuMS0xNy4xLTMuMS0yNS4zIDBsLTEwMCAzNy41Yy0xNC4xIDUuMy0yMy40IDE4LjctMjMuNCAzMy43VjIxNGwtOTYuNiAzNi4yQzkuMyAyNTUuNSAwIDI2OC45IDAgMjgzLjlWMzk0YzAgMTMuNiA3LjcgMjYuMSAxOS45IDMyLjJsMTAwIDUwYzEwLjEgNS4xIDIyLjEgNS4xIDMyLjIgMGwxMDMuOS01MiAxMDMuOSA1MmMxMC4xIDUuMSAyMi4xIDUuMSAzMi4yIDBsMTAwLTUwYzEyLjItNi4xIDE5LjktMTguNiAxOS45LTMyLjJWMjgzLjljMC0xNS05LjMtMjguNC0yMy40LTMzLjd6TTM1OCAyMTQuOGwtODUgMzEuOXYtNjguMmw4NS0zN3Y3My4zek0xNTQgMTA0LjFsMTAyLTM4LjIgMTAyIDM4LjJ2LjZsLTEwMiA0MS40LTEwMi00MS40di0uNnptODQgMjkxLjFsLTg1IDQyLjV2LTc5LjFsODUtMzguOHY3NS40em0wLTExMmwtMTAyIDQxLjQtMTAyLTQxLjR2LS42bDEwMi0zOC4yIDEwMiAzOC4ydi42em0yNDAgMTEybC04NSA0Mi41di03OS4xbDg1LTM4Ljh2NzUuNHptMC0xMTJsLTEwMiA0MS40LTEwMi00MS40di0uNmwxMDItMzguMiAxMDIgMzguMnYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3OC4wNiAyNTZMNDQ0LjQ4IDg5LjU3YzQuNjktNC42OSA0LjY5LTEyLjI5IDAtMTYuOTctMzIuOC0zMi44LTg1Ljk5LTMyLjgtMTE4Ljc5IDBMMjEwLjE4IDE4OC4xMmwtMjQuODYtMjQuODZjNC4zMS0xMC45MiA2LjY4LTIyLjgxIDYuNjgtMzUuMjYgMC01My4wMi00Mi45OC05Ni05Ni05NlMwIDc0Ljk4IDAgMTI4czQyLjk4IDk2IDk2IDk2YzQuNTQgMCA4Ljk5LS4zMiAxMy4zNi0uOTNMMTQyLjI5IDI1NmwtMzIuOTMgMzIuOTNjLTQuMzctLjYxLTguODMtLjkzLTEzLjM2LS45My01My4wMiAwLTk2IDQyLjk4LTk2IDk2czQyLjk4IDk2IDk2IDk2IDk2LTQyLjk4IDk2LTk2YzAtMTIuNDUtMi4zNy0yNC4zNC02LjY4LTM1LjI2bDI0Ljg2LTI0Ljg2TDMyNS42OSA0MzkuNGMzMi44IDMyLjggODUuOTkgMzIuOCAxMTguNzkgMCA0LjY5LTQuNjggNC42OS0xMi4yOCAwLTE2Ljk3TDI3OC4wNiAyNTZ6TTk2IDE2MGMtMTcuNjQgMC0zMi0xNC4zNi0zMi0zMnMxNC4zNi0zMiAzMi0zMiAzMiAxNC4zNiAzMiAzMi0xNC4zNiAzMi0zMiAzMnptMCAyNTZjLTE3LjY0IDAtMzItMTQuMzYtMzItMzJzMTQuMzYtMzIgMzItMzIgMzIgMTQuMzYgMzIgMzItMTQuMzYgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURhdGFiYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA3My4xNDN2NDUuNzE0QzQ0OCAxNTkuMTQzIDM0Ny42NjcgMTkyIDIyNCAxOTJTMCAxNTkuMTQzIDAgMTE4Ljg1N1Y3My4xNDNDMCAzMi44NTcgMTAwLjMzMyAwIDIyNCAwczIyNCAzMi44NTcgMjI0IDczLjE0M3pNNDQ4IDE3NnYxMDIuODU3QzQ0OCAzMTkuMTQzIDM0Ny42NjcgMzUyIDIyNCAzNTJTMCAzMTkuMTQzIDAgMjc4Ljg1N1YxNzZjNDguMTI1IDMzLjE0MyAxMzYuMjA4IDQ4LjU3MiAyMjQgNDguNTcyUzM5OS44NzQgMjA5LjE0MyA0NDggMTc2em0wIDE2MHYxMDIuODU3QzQ0OCA0NzkuMTQzIDM0Ny42NjcgNTEyIDIyNCA1MTJTMCA0NzkuMTQzIDAgNDM4Ljg1N1YzMzZjNDguMTI1IDMzLjE0MyAxMzYuMjA4IDQ4LjU3MiAyMjQgNDguNTcyUzM5OS44NzQgMzY5LjE0MyA0NDggMzM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZWFmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNiAyNjBjMCAxNS40NjQtMTIuNTM2IDI4LTI4IDI4cy0yOC0xMi41MzYtMjgtMjhjMC00NC4xMTIgMzUuODg4LTgwIDgwLTgwczgwIDM1Ljg4OCA4MCA4MGMwIDE1LjQ2NC0xMi41MzYgMjgtMjggMjhzLTI4LTEyLjUzNi0yOC0yOGMwLTEzLjIzNC0xMC43NjctMjQtMjQtMjRzLTI0IDEwLjc2Ni0yNCAyNHptMjQtMTc2Yy05Ny4wNDcgMC0xNzYgNzguOTUzLTE3NiAxNzYgMCAxNS40NjQgMTIuNTM2IDI4IDI4IDI4czI4LTEyLjUzNiAyOC0yOGMwLTY2LjE2OCA1My44MzItMTIwIDEyMC0xMjBzMTIwIDUzLjgzMiAxMjAgMTIwYzAgNzUuMTY0LTcxLjAwOSA3MC4zMTEtNzEuOTk3IDE0My42MjJMMjg4IDQwNGMwIDI4LjY3My0yMy4zMjcgNTItNTIgNTItMTUuNDY0IDAtMjggMTIuNTM2LTI4IDI4czEyLjUzNiAyOCAyOCAyOGM1OS40NzUgMCAxMDcuODc2LTQ4LjMyOCAxMDgtMTA3Ljc3NC41OTUtMzQuNDI4IDcyLTQ4LjI0IDcyLTE0NC4yMjYgMC05Ny4wNDctNzguOTUzLTE3Ni0xNzYtMTc2em0yNjguNDg1LTUyLjIwMUw0ODAuMiAzLjUxNWMtNC42ODctNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDM3Ni4yIDkwLjU0NGMtNC42ODYgNC42ODYtNC42ODYgMTIuMjg0IDAgMTYuOTcxbDI4LjI4NSAyOC4yODVjNC42ODYgNC42ODYgMTIuMjg0IDQuNjg2IDE2Ljk3IDBsODcuMDMtODcuMDI5YzQuNjg3LTQuNjg4IDQuNjg3LTEyLjI4NiAwLTE2Ljk3MnpNMTY4Ljk3IDMxNC43NDVjLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NyAwTDMuNTE1IDQ2My4yM2MtNC42ODYgNC42ODYtNC42ODYgMTIuMjg0IDAgMTYuOTcxTDMxLjggNTA4LjQ4NWM0LjY4NyA0LjY4NiAxMi4yODQgNC42ODYgMTYuOTcxIDBMMTk3LjI1NiAzNjBjNC42ODYtNC42ODYgNC42ODYtMTIuMjg0IDAtMTYuOTcxbC0yOC4yODYtMjguMjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZW1vY3JhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzcuMyAyNTYuOWwtMTkuNi0yOS40Yy0yOC4yLTQyLjMtNzUuMy02Ny41LTEyNi4xLTY3LjVIMjU2bC04MS4yLTgxLjJjMjAuMS0yMC4xIDIyLjYtNTEuMSA3LjUtNzMuOS0zLjQtNS4yLTEwLjgtNS45LTE1LjItMS41bC00MS44IDQxLjhMODIuNCAyLjRjLTMuNi0zLjYtOS42LTMtMTIuNCAxLjItMTIuMyAxOC42LTEwLjMgNDQgNi4xIDYwLjQgMy4zIDMuMyA3LjMgNS4zIDExLjMgNy41LTIuMiAxLjctNC43IDMuMS02LjQgNS40TDYuNCAxNzYuMmMtNy4zIDkuNy04LjQgMjIuNy0zIDMzLjVsMTQuMyAyOC42YzUuNCAxMC44IDE2LjUgMTcuNyAyOC42IDE3LjdoMzFjOC41IDAgMTYuNi0zLjQgMjIuNi05LjRMMTM4IDIxMmw1NCAxMDhoMzUydi03Ny44YzE2LjIgMTIuMiAxOC4zIDE3LjYgNDAuMSA1MC4zIDQuOSA3LjQgMTQuOCA5LjMgMjIuMiA0LjRsMjYuNi0xNy43YzcuMy01IDkuMy0xNC45IDQuNC0yMi4zem0tMzQxLjEtMTMuNmwtMTYuNSAxNi4xIDMuOSAyMi43Yy43IDQuMS0zLjYgNy4yLTcuMiA1LjNMMjU2IDI3Ni43bC0yMC40IDEwLjdjLTMuNiAxLjktNy45LTEuMi03LjItNS4zbDMuOS0yMi43LTE2LjUtMTYuMWMtMy0yLjktMS4zLTcuOSAyLjgtOC41bDIyLjgtMy4zIDEwLjItMjAuN2MxLjgtMy43IDcuMS0zLjcgOSAwbDEwLjIgMjAuNyAyMi44IDMuM2M0IC42IDUuNiA1LjYgMi42IDguNXptMTEyIDBsLTE2LjUgMTYuMSAzLjkgMjIuN2MuNyA0LjEtMy42IDcuMi03LjIgNS4zTDM2OCAyNzYuN2wtMjAuNCAxMC43Yy0zLjYgMS45LTcuOS0xLjItNy4yLTUuM2wzLjktMjIuNy0xNi41LTE2LjFjLTMtMi45LTEuMy03LjkgMi44LTguNWwyMi44LTMuMyAxMC4yLTIwLjdjMS44LTMuNyA3LjEtMy43IDkgMGwxMC4yIDIwLjcgMjIuOCAzLjNjNCAuNiA1LjYgNS42IDIuNiA4LjV6bTExMiAwbC0xNi41IDE2LjEgMy45IDIyLjdjLjcgNC4xLTMuNiA3LjItNy4yIDUuM0w0ODAgMjc2LjdsLTIwLjQgMTAuN2MtMy42IDEuOS03LjktMS4yLTcuMi01LjNsMy45LTIyLjctMTYuNS0xNi4xYy0zLTIuOS0xLjMtNy45IDIuOC04LjVsMjIuOC0zLjMgMTAuMi0yMC43YzEuOC0zLjcgNy4xLTMuNyA5IDBsMTAuMiAyMC43IDIyLjggMy4zYzQgLjYgNS42IDUuNiAyLjYgOC41ek0xOTIgNDk2YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZ2LTgwaDE2MHY4MGMwIDguOCA3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2VjM1MkgxOTJ2MTQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZXNrdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHYzMjBjMCAyNi41IDIxLjUgNDggNDggNDhoMTkybC0xNiA0OGgtNzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMjcyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0aC03MmwtMTYtNDhoMTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMTYgMzUySDY0VjY0aDQ0OHYyODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURoYXJtYWNoYWtyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTUgMjI1LjA2bC0xNy4yMiAxLjA4Yy01LjI3LTM5LjQ5LTIwLjc5LTc1LjY0LTQzLjg2LTEwNS44NGwxMi45NS0xMS40M2M2LjkyLTYuMTEgNy4yNS0xNi43OS43My0yMy4zMUw0MjYuNDQgNjQuNGMtNi41My02LjUzLTE3LjIxLTYuMTktMjMuMzEuNzNMMzkxLjcgNzguMDdjLTMwLjItMjMuMDYtNjYuMzUtMzguNTgtMTA1LjgzLTQzLjg2TDI4Ni45NCAxN2MuNTgtOS4yMS02Ljc0LTE3LTE1Ljk3LTE3aC0yOS45NGMtOS4yMyAwLTE2LjU0IDcuNzktMTUuOTcgMTdsMS4wOCAxNy4yMmMtMzkuNDkgNS4yNy03NS42NCAyMC43OS0xMDUuODMgNDMuODZsLTExLjQzLTEyLjk1Yy02LjExLTYuOTItMTYuNzktNy4yNS0yMy4zMS0uNzNMNjQuNCA4NS41NmMtNi41MyA2LjUzLTYuMTkgMTcuMjEuNzMgMjMuMzFsMTIuOTUgMTEuNDNjLTIzLjA2IDMwLjItMzguNTggNjYuMzUtNDMuODYgMTA1Ljg0TDE3IDIyNS4wNmMtOS4yMS0uNTgtMTcgNi43NC0xNyAxNS45N3YyOS45NGMwIDkuMjMgNy43OSAxNi41NCAxNyAxNS45N2wxNy4yMi0xLjA4YzUuMjcgMzkuNDkgMjAuNzkgNzUuNjQgNDMuODYgMTA1LjgzbC0xMi45NSAxMS40M2MtNi45MiA2LjExLTcuMjUgMTYuNzktLjczIDIzLjMxbDIxLjE3IDIxLjE3YzYuNTMgNi41MyAxNy4yMSA2LjE5IDIzLjMxLS43M2wxMS40My0xMi45NWMzMC4yIDIzLjA2IDY2LjM1IDM4LjU4IDEwNS44NCA0My44NkwyMjUuMDYgNDk1Yy0uNTggOS4yMSA2Ljc0IDE3IDE1Ljk3IDE3aDI5Ljk0YzkuMjMgMCAxNi41NC03Ljc5IDE1Ljk3LTE3bC0xLjA4LTE3LjIyYzM5LjQ5LTUuMjcgNzUuNjQtMjAuNzkgMTA1Ljg0LTQzLjg2bDExLjQzIDEyLjk1YzYuMTEgNi45MiAxNi43OSA3LjI1IDIzLjMxLjczbDIxLjE3LTIxLjE3YzYuNTMtNi41MyA2LjE5LTE3LjIxLS43My0yMy4zMWwtMTIuOTUtMTEuNDNjMjMuMDYtMzAuMiAzOC41OC02Ni4zNSA0My44Ni0xMDUuODNsMTcuMjIgMS4wOGM5LjIxLjU4IDE3LTYuNzQgMTctMTUuOTd2LTI5Ljk0Yy0uMDEtOS4yMy03LjgtMTYuNTQtMTcuMDEtMTUuOTd6TTI4MS44NCA5OC42MWMyNC44MSA0LjA3IDQ3LjYzIDEzLjY2IDY3LjIzIDI3Ljc4bC00Mi42MiA0OC4yOWMtOC43My01LjQ0LTE4LjMyLTkuNTQtMjguNjItMTEuOTVsNC4wMS02NC4xMnptLTUxLjY4IDBsNC4wMSA2NC4xMmMtMTAuMjkgMi40MS0xOS44OSA2LjUyLTI4LjYyIDExLjk1bC00Mi42Mi00OC4yOWMxOS42LTE0LjEyIDQyLjQyLTIzLjcxIDY3LjIzLTI3Ljc4em0tMTAzLjc3IDY0LjMzbDQ4LjMgNDIuNjFjLTUuNDQgOC43My05LjU0IDE4LjMzLTExLjk2IDI4LjYybC02NC4xMi00LjAxYzQuMDctMjQuODEgMTMuNjYtNDcuNjIgMjcuNzgtNjcuMjJ6bS0yNy43OCAxMTguOWw2NC4xMi00LjAxYzIuNDEgMTAuMjkgNi41MiAxOS44OSAxMS45NSAyOC42MmwtNDguMjkgNDIuNjJjLTE0LjEyLTE5LjYtMjMuNzEtNDIuNDItMjcuNzgtNjcuMjN6bTEzMS41NSAxMzEuNTVjLTI0LjgxLTQuMDctNDcuNjMtMTMuNjYtNjcuMjMtMjcuNzhsNDIuNjEtNDguM2M4LjczIDUuNDQgMTguMzMgOS41NCAyOC42MiAxMS45NmwtNCA2NC4xMnpNMjU2IDI4OGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMjUuODQgMTI1LjM5bC00LjAxLTY0LjEyYzEwLjI5LTIuNDEgMTkuODktNi41MiAyOC42Mi0xMS45Nmw0Mi42MSA0OC4zYy0xOS42IDE0LjEyLTQyLjQxIDIzLjcxLTY3LjIyIDI3Ljc4em0xMDMuNzctNjQuMzNsLTQ4LjI5LTQyLjYyYzUuNDQtOC43MyA5LjU0LTE4LjMyIDExLjk1LTI4LjYybDY0LjEyIDQuMDFjLTQuMDcgMjQuODItMTMuNjYgNDcuNjQtMjcuNzggNjcuMjN6bS0zNi4zNC0xMTQuODljLTIuNDEtMTAuMjktNi41Mi0xOS44OS0xMS45Ni0yOC42Mmw0OC4zLTQyLjYxYzE0LjEyIDE5LjYgMjMuNzEgNDIuNDIgMjcuNzggNjcuMjNsLTY0LjEyIDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpYWdub3NlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMjU2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2LTE2IDcuMi0xNiAxNiA3LjIgMTYgMTYgMTZ6bS0xNzYtODBjNDguNSAwIDg4LTM5LjUgODgtODhTMzY4LjUgMCAzMjAgMHMtODggMzkuNS04OCA4OCAzOS41IDg4IDg4IDg4ek01OS44IDM2NGMxMC4yIDE1LjMgMjkuMyAxNy44IDQyLjkgOS44IDE2LjItOS42IDU2LjItMzEuNyAxMDUuMy00OC42VjQxNmgyMjR2LTkwLjdjNDkuMSAxNi44IDg5LjEgMzkgMTA1LjMgNDguNiAxMy42IDggMzIuNyA1LjMgNDIuOS05LjhsMTcuOC0yNi43YzguOC0xMy4yIDcuNi0zNC42LTEwLTQ1LjEtMTEuOS03LjEtMjkuNy0xNy01MS4xLTI3LjQtMjguMSA0Ni4xLTk5LjQgMTcuOC04Ny43LTM1LjFDNDA5LjMgMjE3LjIgMzY1LjEgMjA4IDMyMCAyMDhjLTU3IDAtMTEyLjkgMTQuNS0xNjAgMzIuMi0uMiA0MC4yLTQ3LjYgNjMuMy03OS4yIDM2LTExLjIgNi0yMS4zIDExLjYtMjguNyAxNi0xNy42IDEwLjUtMTguOCAzMS44LTEwIDQ1LjFMNTkuOCAzNjR6TTM2OCAzNDRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0em0tOTYtOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0em0tMTYwIDhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTYtMTYgNy4yLTE2IDE2IDcuMiAxNiAxNiAxNnptNTEyIDE5MkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg2MDhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpY2VEMjAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA2Ljc1IDIxNS4wNkwxLjIgMzcwLjk1Yy0zLjA4IDUgLjEgMTEuNSA1LjkzIDEyLjE0bDIwOC4yNiAyMi4wNy0xMDguNjQtMTkwLjF6TTcuNDEgMzE1LjQzTDgyLjcgMTkzLjA4IDYuMDYgMTQ3LjFjLTIuNjctMS42LTYuMDYuMzItNi4wNiAzLjQzdjE2Mi44MWMwIDQuMDMgNS4yOSA1LjUzIDcuNDEgMi4wOXpNMTguMjUgNDIzLjZsMTk0LjQgODcuNjZjNS4zIDIuNDUgMTEuMzUtMS40MyAxMS4zNS03LjI2di02NS42N2wtMjAzLjU1LTIyLjNjLTQuNDUtLjUtNi4yMyA1LjU5LTIuMiA3LjU3em04MS4yMi0yNTcuNzhMMTc5LjQgMjIuODhjNC4zNC03LjA2LTMuNTktMTUuMjUtMTAuNzgtMTEuMTRMMTcuODEgMTEwLjM1Yy0yLjQ3IDEuNjItMi4zOSA1LjI2LjEzIDYuNzhsODEuNTMgNDguNjl6TTI0MCAxNzZoMTA5LjIxTDI1My42MyA3LjYyQzI1MC41IDIuNTQgMjQ1LjI1IDAgMjQwIDBzLTEwLjUgMi41NC0xMy42MyA3LjYyTDEzMC43OSAxNzZIMjQwem0yMzMuOTQtMjguOWwtNzYuNjQgNDUuOTkgNzUuMjkgMTIyLjM1YzIuMTEgMy40NCA3LjQxIDEuOTQgNy40MS0yLjFWMTUwLjUzYzAtMy4xMS0zLjM5LTUuMDMtNi4wNi0zLjQzem0tOTMuNDEgMTguNzJsODEuNTMtNDguN2MyLjUzLTEuNTIgMi42LTUuMTYuMTMtNi43OGwtMTUwLjgxLTk4LjZjLTcuMTktNC4xMS0xNS4xMiA0LjA4LTEwLjc4IDExLjE0bDc5LjkzIDE0Mi45NHptNzkuMDIgMjUwLjIxTDI1NiA0MzguMzJ2NjUuNjdjMCA1Ljg0IDYuMDUgOS43MSAxMS4zNSA3LjI2bDE5NC40LTg3LjY2YzQuMDMtMS45NyAyLjI1LTguMDYtMi4yLTcuNTZ6bS04Ni4zLTIwMC45N2wtMTA4LjYzIDE5MC4xIDIwOC4yNi0yMi4wN2M1LjgzLS42NSA5LjAxLTcuMTQgNS45My0xMi4xNEwzNzMuMjUgMjE1LjA2ek0yNDAgMjA4SDEzOS41N0wyNDAgMzgzLjc1IDM0MC40MyAyMDhIMjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlRDYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIyLjE5IDEwOS45NUwyNTYuMjEgOS4wN2MtMTkuOTEtMTIuMS00NC41Mi0xMi4xLTY0LjQzIDBMMjUuODEgMTA5Ljk1Yy01LjMyIDMuMjMtNS4yOSAxMS4yNy4wNiAxNC40NkwyMjQgMjQyLjU1bDE5OC4xNC0xMTguMTRjNS4zNS0zLjE5IDUuMzgtMTEuMjIuMDUtMTQuNDZ6bTEzLjg0IDQ0LjYzTDI0MCAyNzEuNDZ2MjIzLjgyYzAgMTIuODggMTMuMzkgMjAuOTEgMjQuMDUgMTQuNDNsMTUyLjE2LTkyLjQ4YzE5LjY4LTExLjk2IDMxLjc5LTMzLjk0IDMxLjc5LTU3Ljd2LTE5Ny43YzAtNi40MS02LjY0LTEwLjQzLTExLjk3LTcuMjV6TTAgMTYxLjgzdjE5Ny43YzAgMjMuNzcgMTIuMTEgNDUuNzQgMzEuNzkgNTcuN2wxNTIuMTYgOTIuNDdjMTAuNjcgNi40OCAyNC4wNS0xLjU0IDI0LjA1LTE0LjQzVjI3MS40NkwxMS45NyAxNTQuNThDNi42NCAxNTEuNCAwIDE1NS40MiAwIDE2MS44M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZUZpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMySDY0QzI4LjY1IDMyIDAgNjAuNjUgMCA5NnYzMjBjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMjBjMzUuMzUgMCA2NC0yOC42NSA2NC02NFY5NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0ek0xMjggMzg0Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptOTYgOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTk2IDk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZUZvdXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMySDY0QzI4LjY1IDMyIDAgNjAuNjUgMCA5NnYzMjBjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMjBjMzUuMzUgMCA2NC0yOC42NSA2NC02NFY5NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0ek0xMjggMzg0Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTkyIDE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC0xOTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpY2VPbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMySDY0QzI4LjY1IDMyIDAgNjAuNjUgMCA5NnYzMjBjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMjBjMzUuMzUgMCA2NC0yOC42NSA2NC02NFY5NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0ek0yMjQgMjg4Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlU2l4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMkg2NEMyOC42NSAzMiAwIDYwLjY1IDAgOTZ2MzIwYzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzIwYzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWOTZjMC0zNS4zNS0yOC42NS02NC02NC02NHpNMTI4IDM4NGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC05NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC05NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTkyIDE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC05NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC05NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZVRocmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMkg2NEMyOC42NSAzMiAwIDYwLjY1IDAgOTZ2MzIwYzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzIwYzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWOTZjMC0zNS4zNS0yOC42NS02NC02NC02NHpNMTI4IDE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptOTYgOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTk2IDk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWNlVHdvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMkg2NEMyOC42NSAzMiAwIDYwLjY1IDAgOTZ2MzIwYzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzIwYzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWOTZjMC0zNS4zNS0yOC42NS02NC02NC02NHpNMTI4IDE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTkyIDE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01OTIgMTkySDQ3My4yNmMxMi42OSAyOS41OSA3LjEyIDY1LjItMTcgODkuMzJMMzIwIDQxNy41OFY0NjRjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgyMjRjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYyNDBjMC0yNi41MS0yMS40OS00OC00OC00OHpNNDgwIDM3NmMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6bS00Ni4zNy0xODYuN0wyNTguNyAxNC4zN2MtMTkuMTYtMTkuMTYtNTAuMjMtMTkuMTYtNjkuMzkgMEwxNC4zNyAxODkuM2MtMTkuMTYgMTkuMTYtMTkuMTYgNTAuMjMgMCA2OS4zOUwxODkuMyA0MzMuNjNjMTkuMTYgMTkuMTYgNTAuMjMgMTkuMTYgNjkuMzkgMEw0MzMuNjMgMjU4LjdjMTkuMTYtMTkuMTcgMTkuMTYtNTAuMjQgMC02OS40ek05NiAyNDhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0em0xMjggMTI4Yy0xMy4yNSAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzUtMjQgMjQtMjRzMjQgMTAuNzQgMjQgMjRjMCAxMy4yNS0xMC43NSAyNC0yNCAyNHptMC0xMjhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0em0wLTEyOGMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6bTEyOCAxMjhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWdpdGFsVGFjaG9ncmFwaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDggOTZIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MjU2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTc2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMTI4YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTMwNCAzNTJjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04di04YzAtNC40MiAzLjU4LTggOC04aDIyNGM0LjQyIDAgOCAzLjU4IDggOHY4ek03MiAyODh2LTE2YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDgwYy00LjQyIDAtOC0zLjU4LTgtOHptNjQgMHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptNjQgMHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptNjQgMHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptNDAtNjRjMCA4Ljg0LTcuMTYgMTYtMTYgMTZIODBjLTguODQgMC0xNi03LjE2LTE2LTE2di00OGMwLTguODQgNy4xNi0xNiAxNi0xNmgyMDhjOC44NCAwIDE2IDcuMTYgMTYgMTZ2NDh6bTI3MiAxMjhjMCA0LjQyLTMuNTggOC04IDhIMzQ0Yy00LjQyIDAtOC0zLjU4LTgtOHYtOGMwLTQuNDIgMy41OC04IDgtOGgyMjRjNC40MiAwIDggMy41OCA4IDh2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlyZWN0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuNjEgMjMzLjMyTDI3OC42OCA5LjM5Yy0xMi41Mi0xMi41Mi0zMi44My0xMi41Mi00NS4zNiAwTDkuMzkgMjMzLjMyYy0xMi41MiAxMi41My0xMi41MiAzMi44MyAwIDQ1LjM2bDIyMy45MyAyMjMuOTNjMTIuNTIgMTIuNTMgMzIuODMgMTIuNTMgNDUuMzYgMGwyMjMuOTMtMjIzLjkzYzEyLjUyLTEyLjUzIDEyLjUyLTMyLjgzIDAtNDUuMzZ6bS0xMDAuOTggMTIuNTZsLTg0LjIxIDc3LjczYy01LjEyIDQuNzMtMTMuNDMgMS4xLTEzLjQzLTUuODhWMjY0aC05NnY2NGMwIDQuNDItMy41OCA4LTggOGgtMzJjLTQuNDIgMC04LTMuNTgtOC04di04MGMwLTE3LjY3IDE0LjMzLTMyIDMyLTMyaDExMnYtNTMuNzNjMC02Ljk3IDguMy0xMC42MSAxMy40My01Ljg4bDg0LjIxIDc3LjczYzMuNDMgMy4xNyAzLjQzIDguNTkgMCAxMS43NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlzZWFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzIuMjkgMTk1LjlsLTY3LjA2LTIzYy0xOS4yOC02LjYtMzMuNTQtMjAuOTItMzguMTQtMzguMzFsLTE2LTYwLjQ1Yy0xMS41OC00My43Ny03Ni41Ny01Ny4xMy0xMTAtMjIuNjJMMTk1IDk5LjI0Yy0xMy4yNiAxMy43MS0zMy41NCAyMC45My01NC4yIDE5LjMxbC03MS45LTUuNjJjLTUyLTQuMDctODYuOTMgNDQuODktNTkgODIuODRsMzguNTQgNTIuNDJjMTEuMDggMTUuMDcgMTIuODIgMzMuODYgNC42NCA1MC4yNGwtMjguNDMgNTdDNCAzOTYuNjcgNDcuNDYgNDQwLjI5IDk4LjExIDQyOS4yM2w3MC0xNS4yOGMyMC4xMS00LjM5IDQxLjQ1IDAgNTcuMDcgMTEuNzNsNTQuMzIgNDAuODNjMzkuMzIgMjkuNTYgMTAxIDcuNTcgMTA0LjQ1LTM3LjIybDQuNy02MS44NmMxLjM1LTE3LjggMTIuOC0zMy44NyAzMC42My00M2w2Mi0zMS43NGM0NC44NC0yMi45NiAzOS41NS04MC4xNy04Ljk5LTk2Ljc5ek0xNjAgMjU2YTMyIDMyIDAgMSAxIDMyLTMyIDMyIDMyIDAgMCAxLTMyIDMyem0xMjggOTZhMzIgMzIgMCAxIDEgMzItMzIgMzIgMzIgMCAwIDEtMzIgMzJ6bTE2LTEyOGExNiAxNiAwIDEgMSAxNi0xNiAxNiAxNiAwIDAgMS0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGl2aWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAzNTJjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjRzMjguNjUgNjQgNjQgNjQgNjQtMjguNjUgNjQtNjQtMjguNjUtNjQtNjQtNjR6bTAtMTkyYzM1LjM1IDAgNjQtMjguNjUgNjQtNjRzLTI4LjY1LTY0LTY0LTY0LTY0IDI4LjY1LTY0IDY0IDI4LjY1IDY0IDY0IDY0em0xOTIgNDhIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzODRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGl6enkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptLTk2IDIwNi42bC0yOC43IDI4LjdjLTE0LjggMTQuOC0zNy44LTcuNS0yMi42LTIyLjZsMjguNy0yOC43LTI4LjctMjguN2MtMTUtMTUgNy43LTM3LjYgMjIuNi0yMi42bDI4LjcgMjguNyAyOC43LTI4LjdjMTUtMTUgMzcuNiA3LjcgMjIuNiAyMi42TDE3NC42IDE5MmwyOC43IDI4LjdjMTUuMiAxNS4yLTcuOSAzNy40LTIyLjYgMjIuNkwxNTIgMjE0LjZ6TTI0OCA0MTZjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjQgNjQgMjguNyA2NCA2NC0yOC43IDY0LTY0IDY0em0xNDcuMy0xOTUuM2MxNS4yIDE1LjItNy45IDM3LjQtMjIuNiAyMi42TDM0NCAyMTQuNmwtMjguNyAyOC43Yy0xNC44IDE0LjgtMzcuOC03LjUtMjIuNi0yMi42bDI4LjctMjguNy0yOC43LTI4LjdjLTE1LTE1IDcuNy0zNy42IDIyLjYtMjIuNmwyOC43IDI4LjcgMjguNy0yOC43YzE1LTE1IDM3LjYgNy43IDIyLjYgMjIuNkwzNjYuNiAxOTJsMjguNyAyOC43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEbmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjEgNDk0LjFjLTEuMSA5LjUgNi4zIDE3LjggMTUuOSAxNy44bDMyLjMuMWM4LjEgMCAxNC45LTUuOSAxNi0xMy45LjctNC45IDEuOC0xMS4xIDMuNC0xOC4xSDM4MGMxLjYgNi45IDIuOSAxMy4yIDMuNSAxOC4xIDEuMSA4IDcuOSAxNCAxNiAxMy45bDMyLjMtLjFjOS42IDAgMTcuMS04LjMgMTUuOS0xNy44LTQuNi0zNy45LTI1LjYtMTI5LTExOC45LTIwNy43LTE3LjYgMTIuNC0zNy4xIDI0LjItNTguNSAzNS40IDYuMiA0LjYgMTEuNCA5LjQgMTcgMTQuMkgxNTkuN2MyMS4zLTE4LjEgNDctMzUuNiA3OC43LTUxLjRDNDEwLjUgMTk5LjEgNDQyLjEgNjUuOCA0NDcuOSAxNy45IDQ0OSA4LjQgNDQxLjYuMSA0MzIgLjFMMzk5LjYgMGMtOC4xIDAtMTQuOSA1LjktMTYgMTMuOS0uNyA0LjktMS44IDExLjEtMy40IDE4LjFINjcuOGMtMS42LTctMi43LTEzLjEtMy40LTE4LjEtMS4xLTgtNy45LTE0LTE2LTEzLjlMMTYuMS4xQzYuNS4xLTEgOC40LjEgMTcuOSA1LjMgNjAuOCAzMS40IDE3MS44IDE2MCAyNTYgMzEuNSAzNDAuMiA1LjMgNDUxLjIuMSA0OTQuMXpNMjI0IDIxOS42Yy0yNS4xLTEzLjctNDYuNC0yOC40LTY0LjMtNDMuNmgxMjguNWMtMTcuOCAxNS4yLTM5LjEgMzAtNjQuMiA0My42ek0zNTUuMSA5NmMtNS44IDEwLjQtMTIuOCAyMS4xLTIxIDMySDExNGMtOC4zLTEwLjktMTUuMy0yMS42LTIxLTMyaDI2Mi4xek05Mi45IDQxNmM1LjgtMTAuNCAxMi44LTIxLjEgMjEtMzJoMjE5LjRjOC4zIDEwLjkgMTUuNCAyMS42IDIxLjIgMzJIOTIuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5OC4wNiwyMjQsNDQ4LDI3Ny41NVY0OTZhMTYsMTYsMCwwLDEtMTYsMTZIMzY4YTE2LDE2LDAsMCwxLTE2LTE2VjM4NEgxOTJWNDk2YTE2LDE2LDAsMCwxLTE2LDE2SDExMmExNiwxNiwwLDAsMS0xNi0xNlYyODIuMDlDNTguODQsMjY4Ljg0LDMyLDIzMy42NiwzMiwxOTJhMzIsMzIsMCwwLDEsNjQsMCwzMi4wNiwzMi4wNiwwLDAsMCwzMiwzMlpNNTQ0LDExMnYzMmE2NCw2NCwwLDAsMS02NCw2NEg0NDh2MzUuNThMMzIwLDE5Ny44N1Y0OGMwLTE0LjI1LDE3LjIyLTIxLjM5LDI3LjMxLTExLjMxTDM3NC41OSw2NGg1My42M2MxMC45MSwwLDIzLjc1LDcuOTIsMjguNjIsMTcuNjlMNDY0LDk2aDY0QTE2LDE2LDAsMCwxLDU0NCwxMTJabS0xMTIsMGExNiwxNiwwLDEsMC0xNiwxNkExNiwxNiwwLDAsMCw0MzIsMTEyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb2xsYXJTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyODggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOS4yIDIzMy40bC0xMDgtMzEuNkM4OC43IDE5OC4yIDgwIDE4Ni41IDgwIDE3My41YzAtMTYuMyAxMy4yLTI5LjUgMjkuNS0yOS41aDY2LjNjMTIuMiAwIDI0LjIgMy43IDM0LjIgMTAuNSA2LjEgNC4xIDE0LjMgMy4xIDE5LjUtMmwzNC44LTM0YzcuMS02LjkgNi4xLTE4LjQtMS44LTI0LjVDMjM4IDc0LjggMjA3LjQgNjQuMSAxNzYgNjRWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4aC0yLjVDNDUuOCA2NC01LjQgMTE4LjcuNSAxODMuNmM0LjIgNDYuMSAzOS40IDgzLjYgODMuOCA5Ni42bDEwMi41IDMwYzEyLjUgMy43IDIxLjIgMTUuMyAyMS4yIDI4LjMgMCAxNi4zLTEzLjIgMjkuNS0yOS41IDI5LjVoLTY2LjNDMTAwIDM2OCA4OCAzNjQuMyA3OCAzNTcuNWMtNi4xLTQuMS0xNC4zLTMuMS0xOS41IDJsLTM0LjggMzRjLTcuMSA2LjktNi4xIDE4LjQgMS44IDI0LjUgMjQuNSAxOS4yIDU1LjEgMjkuOSA4Ni41IDMwdjQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ2LTQ4LjJjNDYuNi0uOSA5MC4zLTI4LjYgMTA1LjctNzIuNyAyMS41LTYxLjYtMTQuNi0xMjQuOC03Mi41LTE0MS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb2xseUZsYXRiZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDMyMGgzODRjOC44IDAgMTYtNy4yIDE2LTE2VjQ4YzAtOC44LTcuMi0xNi0xNi0xNkg0NDh2MTI4bC00OC0zMi00OCAzMlYzMkgyMDhjLTguOCAwLTE2IDcuMi0xNiAxNnYyNTZjMCA4LjggNy4yIDE2IDE2IDE2em00MTYgNjRIMTI4VjE2YzAtOC44LTcuMi0xNi0xNi0xNkgxNkM3LjIgMCAwIDcuMiAwIDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHYzNjhjMCA4LjggNy4yIDE2IDE2IDE2aDgyLjljLTEuOCA1LTIuOSAxMC40LTIuOSAxNiAwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4YzAtNS42LTEuMi0xMS0yLjktMTZINDUxYy0xLjggNS0yLjkgMTAuNC0yLjkgMTYgMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OGMwLTUuNi0xLjItMTEtMi45LTE2SDYyNGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9sbHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk0LjIgMjc3LjdjMTggNSAzNC43IDEzLjQgNDkuNSAyNC43bDE2MS41LTUzLjhjOC40LTIuOCAxMi45LTExLjkgMTAuMS0yMC4yTDQ1NC45IDQ3LjJjLTIuOC04LjQtMTEuOS0xMi45LTIwLjItMTAuMWwtNjEuMSAyMC40IDMzLjEgOTkuNEwzNDYgMTc3bC0zMy4xLTk5LjQtNjEuNiAyMC41Yy04LjQgMi44LTEyLjkgMTEuOS0xMC4xIDIwLjJsNTMgMTU5LjR6bTI4MSA0OC43TDU2NSAyOTZjLTIuOC04LjQtMTEuOS0xMi45LTIwLjItMTAuMWwtMjEzLjUgNzEuMmMtMTcuMi0yMi00My42LTM2LjQtNzMuNS0zN0wxNTguNCAyMS45QzE1NCA4LjggMTQxLjggMCAxMjggMEgxNkM3LjIgMCAwIDcuMiAwIDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg4OC45bDkyLjIgMjc2LjdjLTI2LjEgMjAuNC00MS43IDUzLjYtMzYgOTAuNSA2LjEgMzkuNCAzNy45IDcyLjMgNzcuMyA3OS4yIDYwLjIgMTAuNyAxMTIuMy0zNC44IDExMy40LTkyLjZsMjEzLjMtNzEuMmM4LjMtMi44IDEyLjktMTEuOCAxMC4xLTIwLjJ6TTI1NiA0NjRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb25hdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQxNmMxMTQuOSAwIDIwOC05My4xIDIwOC0yMDhTMzcwLjkgMCAyNTYgMCA0OCA5My4xIDQ4IDIwOHM5My4xIDIwOCAyMDggMjA4ek0yMzMuOCA5Ny40VjgwLjZjMC05LjIgNy40LTE2LjYgMTYuNi0xNi42aDExLjFjOS4yIDAgMTYuNiA3LjQgMTYuNiAxNi42djE3YzE1LjUuOCAzMC41IDYuMSA0MyAxNS40IDUuNiA0LjEgNi4yIDEyLjMgMS4yIDE3LjFMMzA2IDE0NS42Yy0zLjggMy43LTkuNSAzLjgtMTQgMS01LjQtMy40LTExLjQtNS4xLTE3LjgtNS4xaC0zOC45Yy05IDAtMTYuMyA4LjItMTYuMyAxOC4zIDAgOC4yIDUgMTUuNSAxMi4xIDE3LjZsNjIuMyAxOC43YzI1LjcgNy43IDQzLjcgMzIuNCA0My43IDYwLjEgMCAzNC0yNi40IDYxLjUtNTkuMSA2Mi40djE2LjhjMCA5LjItNy40IDE2LjYtMTYuNiAxNi42aC0xMS4xYy05LjIgMC0xNi42LTcuNC0xNi42LTE2LjZ2LTE3Yy0xNS41LS44LTMwLjUtNi4xLTQzLTE1LjQtNS42LTQuMS02LjItMTIuMy0xLjItMTcuMWwxNi4zLTE1LjVjMy44LTMuNyA5LjUtMy44IDE0LTEgNS40IDMuNCAxMS40IDUuMSAxNy44IDUuMWgzOC45YzkgMCAxNi4zLTguMiAxNi4zLTE4LjMgMC04LjItNS0xNS41LTEyLjEtMTcuNmwtNjIuMy0xOC43Yy0yNS43LTcuNy00My43LTMyLjQtNDMuNy02MC4xLjEtMzQgMjYuNC02MS41IDU5LjEtNjIuNHpNNDgwIDM1MmgtMzIuNWMtMTkuNiAyNi00NC42IDQ3LjctNzMgNjRoNjMuOGM1LjMgMCA5LjYgMy42IDkuNiA4djE2YzAgNC40LTQuMyA4LTkuNiA4SDczLjZjLTUuMyAwLTkuNi0zLjYtOS42LTh2LTE2YzAtNC40IDQuMy04IDkuNi04aDYzLjhjLTI4LjQtMTYuMy01My4zLTM4LTczLTY0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb29yQ2xvc2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCA0NDhINTEyVjUwLjhDNTEyIDIyLjc4IDQ5MC40NyAwIDQ2NCAwSDE3NS45OWMtMjYuNDcgMC00OCAyMi43OC00OCA1MC44VjQ0OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjA4YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNNDE1Ljk5IDI4OGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMmMuMDEgMTcuNjctMTQuMzIgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvb3JPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCA0NDhoLTgwVjExMy40NUM1NDQgODYuMTkgNTIyLjQ3IDY0IDQ5NiA2NEgzODR2NjRoOTZ2Mzg0aDE0NGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTMxMi4yNCAxLjAxbC0xOTIgNDkuNzRDMTA1Ljk5IDU0LjQ0IDk2IDY3LjcgOTYgODIuOTJWNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMzZWMzMuMThjMC0yMS41OC0xOS41Ni0zNy40MS0zOS43Ni0zMi4xN3pNMjY0IDI4OGMtMTMuMjUgMC0yNC0xNC4zMy0yNC0zMnMxMC43NS0zMiAyNC0zMiAyNCAxNC4zMyAyNCAzMi0xMC43NSAzMi0yNCAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG90Q2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4wMzMgOCA4IDExOS4wMzMgOCAyNTZzMTExLjAzMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzMyAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOHptODAgMjQ4YzAgNDQuMTEyLTM1Ljg4OCA4MC04MCA4MHMtODAtMzUuODg4LTgwLTgwIDM1Ljg4OC04MCA4MC04MCA4MCAzNS44ODggODAgODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDE2Ny4ydi0yOC4xYy0yOC4yLTM2LjMtNDcuMS03OS4zLTU0LjEtMTI1LjItMi4xLTEzLjUtMTktMTguOC0yNy44LTguMy0yMS4xIDI0LjktMzcuNyA1NC4xLTQ4LjkgODYuNSAzNC4yIDM4LjMgODAgNjQuNiAxMzAuOCA3NS4xek00MDAgNjRjLTQ0LjIgMC04MCAzNS45LTgwIDgwLjF2NTkuNEMyMTUuNiAxOTcuMyAxMjcgMTMzIDg3IDQxLjhjLTUuNS0xMi41LTIzLjItMTMuMi0yOS0uOUM0MS40IDc2IDMyIDExNS4yIDMyIDE1Ni42YzAgNzAuOCAzNC4xIDEzNi45IDg1LjEgMTg1LjkgMTMuMiAxMi43IDI2LjEgMjMuMiAzOC45IDMyLjhsLTE0My45IDM2QzEuNCA0MTQtMy40IDQyNi40IDIuNiA0MzUuNyAyMCA0NjIuNiA2MyA1MDguMiAxNTUuOCA1MTJjOCAuMyAxNi0yLjYgMjIuMS03LjlsNjUuMi01Ni4xSDMyMGM4OC40IDAgMTYwLTcxLjUgMTYwLTE1OS45VjEyOGwzMi02NEg0MDB6bTAgOTYuMWMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYgMGg4MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHYxNjhoODcuN2MxNy44IDAgMjYuNyAyMS41IDE0LjEgMzQuMUwyNjkuNyAzNzguM2MtNy41IDcuNS0xOS44IDcuNS0yNy4zIDBMOTAuMSAyMjYuMWMtMTIuNi0xMi42LTMuNy0zNC4xIDE0LjEtMzQuMUgxOTJWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6bTI5NiAzNzZ2MTEyYzAgMTMuMy0xMC43IDI0LTI0IDI0SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYzNzZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTQ2LjdsNDkgNDljMjAuMSAyMC4xIDUyLjUgMjAuMSA3Mi42IDBsNDktNDlINDg4YzEzLjMgMCAyNCAxMC43IDI0IDI0em0tMTI0IDg4YzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMCA5IDIwIDIwIDIwIDIwLTkgMjAtMjB6bTY0IDBjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwIDkgMjAgMjAgMjAgMjAtOSAyMC0yMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJhZnRpbmdDb21wYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1Ny4wMSAzNDQuNDJjLTI1LjA1IDIwLjMzLTUyLjYzIDM3LjE4LTgyLjU0IDQ5LjA1bDU0LjM4IDk0LjE5IDUzLjk1IDIzLjA0YzkuODEgNC4xOSAyMC44OS0yLjIxIDIyLjE3LTEyLjhsNy4wMi01OC4yNS01NC45OC05NS4yM3ptNDIuNDktOTQuNTZjNC44Ni03LjY3IDEuODktMTcuOTktNi4wNS0yMi4zOWwtMjguMDctMTUuNTdjLTcuNDgtNC4xNS0xNi42MS0xLjQ2LTIxLjI2IDUuNzJDNDAzLjAxIDI4MS4xNSAzMzIuMjUgMzIwIDI1NiAzMjBjLTIzLjkzIDAtNDcuMjMtNC4yNS02OS40MS0xMS41M2w2Ny4zNi0xMTYuNjhjLjcuMDIgMS4zNC4yMSAyLjA0LjIxczEuMzUtLjE5IDIuMDQtLjIxbDUxLjA5IDg4LjVjMzEuMjMtOC45NiA1OS41Ni0yNS43NSA4Mi42MS00OC45MmwtNTEuNzktODkuNzFDMzQ3LjM5IDEyOC4wMyAzNTIgMTEyLjYzIDM1MiA5NmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2cy05NiA0Mi45OC05NiA5NmMwIDE2LjYzIDQuNjEgMzIuMDMgMTIuMDUgNDUuNjZsLTY4LjMgMTE4LjMxYy0xMi41NS0xMS42MS0yMy45Ni0yNC41OS0zMy42OC0zOS00Ljc5LTcuMS0xMy45Ny05LjYyLTIxLjM4LTUuMzNsLTI3Ljc1IDE2LjA3Yy03Ljg1IDQuNTQtMTAuNjMgMTQuOS01LjY0IDIyLjQ3IDE1LjU3IDIzLjY0IDM0LjY5IDQ0LjIxIDU1Ljk4IDYyLjAyTDAgNDM5LjY2bDcuMDIgNTguMjVjMS4yOCAxMC41OSAxMi4zNiAxNi45OSAyMi4xNyAxMi44bDUzLjk1LTIzLjA0IDcwLjgtMTIyLjYzQzE4Ni4xMyAzNzcuMjggMjIwLjYyIDM4NCAyNTYgMzg0Yzk5LjA1IDAgMTkwLjg4LTUxLjAxIDI0My41LTEzNC4xNHpNMjU2IDY0YzE3LjY3IDAgMzIgMTQuMzMgMzIgMzJzLTE0LjMzIDMyLTMyIDMyLTMyLTE0LjMzLTMyLTMyIDE0LjMzLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcmFnb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMzIgMjU1Ljc4TDE5MiAyMjMuOTZsLTkxLjI4IDY4LjY5Yy0xMC4wOCAxMC4wOC0yLjk0IDI3LjMxIDExLjMxIDI3LjMxaDIyMi43Yy05LjQ0LTI2LjQtMTQuNzMtNTQuNDctMTQuNzMtODMuMzh2LTQyLjI3bC0xMTkuNzMtODcuNmMtMjMuODItMTUuODgtNTUuMjktMTQuMDEtNzcuMDYgNC41OUw1LjgxIDIyNy42NGMtMTIuMzggMTAuMzMtMy40NSAzMC40MiAxMi41MSAyOC4xNHptNTU2Ljg3IDM0LjFsLTEwMC42Ni01MC4zMUE0Ny45OTIgNDcuOTkyIDAgMCAxIDQ0OCAxOTYuNjV2LTM2LjY5aDY0bDI4LjA5IDIyLjYzYzYgNiAxNC4xNCA5LjM3IDIyLjYzIDkuMzdoMzAuOTdhMzIgMzIgMCAwIDAgMjguNjItMTcuNjlsMTQuMzEtMjguNjJhMzIuMDA1IDMyLjAwNSAwIDAgMC0zLjAyLTMzLjUxbC03NC41My05OS4zOEM1NTMuMDIgNC43IDU0My41NCAwIDUzMy40NyAwSDI5Ni4wMmMtNy4xMyAwLTEwLjcgOC41Ny01LjY2IDEzLjYxTDM1MiA2My45NiAyOTIuNDIgODguOGMtNS45IDIuOTUtNS45IDExLjM2IDAgMTQuMzFMMzUyIDEyNy45NnYxMDguNjJjMCA3Mi4wOCAzNi4wMyAxMzkuMzkgOTYgMTc5LjM4LTE5NS41OSA2LjgxLTM0NC41NiA0MS4wMS00MzQuMSA2MC45MUM1Ljc4IDQ3OC42NyAwIDQ4NS44OCAwIDQ5NC4yIDAgNTA0IDcuOTUgNTEyIDE3Ljc2IDUxMmg0OTkuMDhjNjMuMjkuMDEgMTE5LjYxLTQ3LjU2IDEyMi45OS0xMTAuNzYgMi41Mi00Ny4yOC0yMi43My05MC40LTY0LjY0LTExMS4zNnpNNDg5LjE4IDY2LjI1bDQ1LjY1IDExLjQxYy0yLjc1IDEwLjkxLTEyLjQ3IDE4Ljg5LTI0LjEzIDE4LjI2LTEyLjk2LS43MS0yNS44NS0xMi41My0yMS41Mi0yOS42N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJhd1BvbHlnb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDM1MmMtLjM1IDAtLjY3LjEtMS4wMi4xbC0zOS4yLTY1LjMyYzUuMDctOS4xNyA4LjIyLTE5LjU2IDguMjItMzAuNzhzLTMuMTQtMjEuNjEtOC4yMi0zMC43OGwzOS4yLTY1LjMyYy4zNS4wMS42Ny4xIDEuMDIuMSAzNS4zNSAwIDY0LTI4LjY1IDY0LTY0cy0yOC42NS02NC02NC02NGMtMjMuNjMgMC00NC4wNCAxMi45NS01NS4xMiAzMkgxMTkuMTJDMTA4LjA0IDQ0Ljk1IDg3LjYzIDMyIDY0IDMyIDI4LjY1IDMyIDAgNjAuNjUgMCA5NmMwIDIzLjYzIDEyLjk1IDQ0LjA0IDMyIDU1LjEydjIwOS43NUMxMi45NSAzNzEuOTYgMCAzOTIuMzcgMCA0MTZjMCAzNS4zNSAyOC42NSA2NCA2NCA2NCAyMy42MyAwIDQ0LjA0LTEyLjk1IDU1LjEyLTMyaDIwOS43NWMxMS4wOSAxOS4wNSAzMS40OSAzMiA1NS4xMiAzMiAzNS4zNSAwIDY0LTI4LjY1IDY0LTY0IC4wMS0zNS4zNS0yOC42NC02NC02My45OS02NHptLTI4OCA4Ljg4VjE1MS4xMkE2My44MjUgNjMuODI1IDAgMCAwIDExOS4xMiAxMjhoMjA4LjM2bC0zOC40NiA2NC4xYy0uMzUtLjAxLS42Ny0uMS0xLjAyLS4xLTM1LjM1IDAtNjQgMjguNjUtNjQgNjRzMjguNjUgNjQgNjQgNjRjLjM1IDAgLjY3LS4xIDEuMDItLjFsMzguNDYgNjQuMUgxMTkuMTJBNjMuNzQ4IDYzLjc0OCAwIDAgMCA5NiAzNjAuODh6TTI3MiAyNTZjMC04LjgyIDcuMTgtMTYgMTYtMTZzMTYgNy4xOCAxNiAxNi03LjE4IDE2LTE2IDE2LTE2LTcuMTgtMTYtMTZ6TTQwMCA5NmMwIDguODItNy4xOCAxNi0xNiAxNnMtMTYtNy4xOC0xNi0xNiA3LjE4LTE2IDE2LTE2IDE2IDcuMTggMTYgMTZ6TTY0IDgwYzguODIgMCAxNiA3LjE4IDE2IDE2cy03LjE4IDE2LTE2IDE2LTE2LTcuMTgtMTYtMTYgNy4xOC0xNiAxNi0xNnpNNDggNDE2YzAtOC44MiA3LjE4LTE2IDE2LTE2czE2IDcuMTggMTYgMTYtNy4xOCAxNi0xNiAxNi0xNi03LjE4LTE2LTE2em0zMzYgMTZjLTguODIgMC0xNi03LjE4LTE2LTE2czcuMTgtMTYgMTYtMTYgMTYgNy4xOCAxNiAxNi03LjE4IDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcnVtU3RlZWxwYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDMyQzEyOC45NCAzMiAwIDg5LjMxIDAgMTYwdjE5MmMwIDcwLjY5IDEyOC45NCAxMjggMjg4IDEyOHMyODgtNTcuMzEgMjg4LTEyOFYxNjBjMC03MC42OS0xMjguOTQtMTI4LTI4OC0xMjh6bS04Mi45OSAxNTguMzZjLTQuNDUgMTYuNjEtMTQuNTQgMzAuNTctMjguMzEgNDAuNDhDMTAwLjIzIDIxNy40NiA0OCAxOTAuNzggNDggMTYwYzAtMzAuMTYgNTAuMTEtNTYuMzkgMTI0LjA0LTcwLjAzbDI1LjYgNDQuMzRjOS44NiAxNy4wOSAxMi40OCAzNi45OSA3LjM3IDU2LjA1ek0yODggMjQwYy0yMS4wOCAwLTQxLjQxLTEtNjAuODktMi43IDguMDYtMjYuMTMgMzIuMTUtNDUuMyA2MC44OS00NS4zczUyLjgzIDE5LjE3IDYwLjg5IDQ1LjNDMzI5LjQxIDIzOSAzMDkuMDggMjQwIDI4OCAyNDB6bTY0LTE0NGMwIDM1LjI5LTI4LjcxIDY0LTY0IDY0cy02NC0yOC43MS02NC02NFY4Mi45NmMyMC40LTEuODggNDEuOC0yLjk2IDY0LTIuOTZzNDMuNiAxLjA4IDY0IDIuOTZWOTZ6bTQ2LjkzIDEzNC45Yy0xMy44MS05LjkxLTIzLjk0LTIzLjktMjguNC00MC41NC01LjExLTE5LjA2LTIuNDktMzguOTYgNy4zOC01Ni4wNGwyNS42NS00NC40MkM0NzcuNzIgMTAzLjUgNTI4IDEyOS43OSA1MjggMTYwYzAgMzAuODMtNTIuNCA1Ny41NC0xMjkuMDcgNzAuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJ1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzEuMzQgMTIyLjA1bDczLjUzLTQ3LjQyYTE2IDE2IDAgMCAwIDQuNDQtMjIuMTlsLTguODctMTMuMzFhMTYgMTYgMCAwIDAtMjIuMTktNC40NGwtMTEwLjA2IDcxQzMxOC40MyA5Ni45MSAyNzEuMjIgOTYgMjU2IDk2IDIxOS41NSA5NiAwIDEwMC41NSAwIDIwOC4xNXYxNjAuMjNjMCAzMC4yNyAyNy41IDU3LjY4IDcyIDc3Ljg2di0xMDEuOWEyNCAyNCAwIDEgMSA0OCAwdjExOC45M2MzMy4wNSA5LjExIDcxLjA3IDE1LjA2IDExMiAxNi43M1YzNzYuMzlhMjQgMjQgMCAxIDEgNDggMFY0ODBjNDAuOTMtMS42NyA3OC45NS03LjYyIDExMi0xNi43M1YzNDQuMzRhMjQgMjQgMCAxIDEgNDggMHYxMDEuOWM0NC41LTIwLjE4IDcyLTQ3LjU5IDcyLTc3Ljg2VjIwOC4xNWMwLTQzLjMyLTM1Ljc2LTY5Ljc2LTgwLjY2LTg2LjF6TTI1NiAyNzIuMjRjLTExNC44OCAwLTIwOC0yOC42OS0yMDgtNjQuMDlzOTMuMTItNjQuMDggMjA4LTY0LjA4YzE3LjE1IDAgMzMuNzMuNzEgNDkuNjggMS45MWwtNzIuODEgNDdhMTYgMTYgMCAwIDAtNC40MyAyMi4xOWw4Ljg3IDEzLjMxYTE2IDE2IDAgMCAwIDIyLjE5IDQuNDRsMTE4LjY0LTc2LjUyQzQzMC4wOSAxNjggNDY0IDE4Ni44NCA0NjQgMjA4LjE1YzAgMzUuNC05My4xMyA2NC4wOS0yMDggNjQuMDl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURydW1zdGlja0JpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDYyLjggNDkuNTdhMTY5LjQ0IDE2OS40NCAwIDAgMC0yMzkuNSAwQzE4Ny44MiA4NSAxNjAuMTMgMTI4IDE2MC4xMyAxOTJ2ODUuODNsLTQwLjYyIDQwLjU5Yy05LjcgOS42OS0yNCAxMS4wNy0zNi43OCA2YTYwLjMzIDYwLjMzIDAgMCAwLTY1IDk4LjcyQzMzIDQzOC4zOSA1NC4yNCA0NDIuNyA3My44NSA0MzguMjFjLTQuNSAxOS42LS4xOCA0MC44MyAxNS4xIDU2LjFhNjAuMzUgNjAuMzUgMCAwIDAgOTguOC02NWMtNS4wOS0xMi43My0zLjcyLTI3IDYtMzYuNzVMMjM0LjM2IDM1Mmg4NS44OWExODcuODcgMTg3Ljg3IDAgMCAwIDYxLjg5LTEwYy0zOS42NC00My44OS0zOS44My0xMTAuMjMgMS4wNS0xNTEuMDcgMzQuMzgtMzQuMzYgODYuNzYtMzkuNDYgMTI4Ljc0LTE2LjggMS4zLTQ0Ljk2LTE0LjgxLTkwLjI4LTQ5LjEzLTEyNC41NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHVtYmJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA0IDk2SDU2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxMDRIOGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGgyNHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0em01MjggMTI4aC0yNFYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRoLTQ4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjg4aDI0YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04ek00NTYgMzJoLTQ4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxNjhIMjU2VjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0aC00OGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDAwYzAgMTMuMyAxMC43IDI0IDI0IDI0aDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjI4OGgxMjh2MTY4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEdW1wc3RlckZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE4LjcgMTA0LjFsLjItLjItMTQuNC03MkgzMDR2MTI4aDYwLjhjMTYuMi0xOS4zIDM0LjItMzguMiA1My45LTU1Ljh6TTI3MiAzMkgxNzEuNWwtMjUuNiAxMjhIMjcyVjMyem0xODkuMyA3Mi4xYzE4LjIgMTYuMyAzNS41IDMzLjcgNTEuMSA1MS41IDUuNy01LjYgMTEuNC0xMS4xIDE3LjMtMTYuM2wyMS4zLTE5IDIxLjMgMTljMS4xLjkgMi4xIDIuMSAzLjEgMy4xLS4xLS44LjItMS41IDAtMi4zbC0yNC05NkM1NDkuNyAzNyA1NDMuMyAzMiA1MzYgMzJoLTk4LjlsMTIuMyA2MS41IDExLjkgMTAuNnpNMTYgMTYwaDk3LjNsMjUuNi0xMjhINDBjLTcuMyAwLTEzLjcgNS0xNS41IDEyLjFsLTI0IDk2Qy0yIDE1MC4yIDUuNiAxNjAgMTYgMTYwem0zMjQuNiAzMkgzMmw0IDMySDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDI4bDIwIDE2MHYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di0xNmgyMDguOGMtMzAuMi0zMy43LTQ4LjgtNzcuOS00OC44LTEyNi40IDAtMzUuOSAxOS45LTgyLjkgNTIuNi0xMjkuNnptMjEwLjUtMjguOGMtMTQuOSAxMy4zLTI4LjMgMjcuMi00MC4yIDQxLjItMTkuNS0yNS44LTQzLjYtNTItNzEtNzYuNC03MC4yIDYyLjctMTIwIDE0NC4zLTEyMCAxOTMuNiAwIDg3LjUgNzEuNiAxNTguNCAxNjAgMTU4LjRzMTYwLTcwLjkgMTYwLTE1OC40Yy4xLTM2LjYtMzctMTEyLjItODguOC0xNTguNHptLTE4LjYgMjI5LjRjLTE0LjcgMTAuNy0zMi45IDE3LTUyLjUgMTctNDkgMC04OC45LTMzLjUtODguOS04OCAwLTI3LjEgMTYuNS01MSA0OS40LTkxLjkgNC43IDUuNiA2Ny4xIDg4LjEgNjcuMSA4OC4xbDM5LjgtNDdjMi44IDQuOCA1LjQgOS41IDcuNyAxNCAxOC42IDM2LjcgMTAuOCA4My42LTIyLjYgMTA3Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUR1bXBzdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2MCAxNjBjMTAuNCAwIDE4LTkuOCAxNS41LTE5LjlsLTI0LTk2QzU0OS43IDM3IDU0My4zIDMyIDUzNiAzMmgtOTguOWwyNS42IDEyOEg1NjB6TTI3MiAzMkgxNzEuNWwtMjUuNiAxMjhIMjcyVjMyem0xMzIuNSAwSDMwNHYxMjhoMTI2LjFMNDA0LjUgMzJ6TTE2IDE2MGg5Ny4zbDI1LjYtMTI4SDQwYy03LjMgMC0xMy43IDUtMTUuNSAxMi4xbC0yNCA5NkMtMiAxNTAuMiA1LjYgMTYwIDE2IDE2MHptNTQ0IDY0aC0yMGw0LTMySDMybDQgMzJIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMjhsMjAgMTYwdjE2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ2LTE2aDMyMHYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di0xNmwyMC0xNjBoMjhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUR1bmdlb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4LjczIDE5NS4zMmwtODIuODEtNTEuNzZjLTguMDQtNS4wMi0xOC45OS0yLjE3LTIyLjkzIDYuNDVBMjU0LjE5IDI1NC4xOSAwIDAgMCAuNTQgMjM5LjI4Qy0uMDUgMjQ4LjM3IDcuNTkgMjU2IDE2LjY5IDI1Nmg5Ny4xM2M3Ljk2IDAgMTQuMDgtNi4yNSAxNS4wMS0xNC4xNiAxLjA5LTkuMzMgMy4yNC0xOC4zMyA2LjI0LTI2Ljk0IDIuNTYtNy4zNC4yNS0xNS40Ni02LjM0LTE5LjU4ek0zMTkuMDMgOEMyOTguODYgMi44MiAyNzcuNzcgMCAyNTYgMHMtNDIuODYgMi44Mi02My4wMyA4Yy05LjE3IDIuMzUtMTMuOTEgMTIuNi0xMC4zOSAyMS4zOWwzNy40NyAxMDQuMDNBMTYuMDAzIDE2LjAwMyAwIDAgMCAyMzUuMSAxNDRoNDEuOGM2Ljc1IDAgMTIuNzctNC4yMyAxNS4wNS0xMC41OGwzNy40Ny0xMDQuMDNjMy41Mi04Ljc5LTEuMjItMTkuMDMtMTAuMzktMjEuMzl6TTExMiAyODhIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDk2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnptMCAxMjhIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDk2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnptNzcuMzEtMjgzLjY3bC0zNi4zMi05MC44Yy0zLjUzLTguODMtMTQuMTMtMTIuOTktMjIuNDItOC4zMWEyNTcuMzA4IDI1Ny4zMDggMCAwIDAtNzEuNjEgNTkuODljLTYuMDYgNy4zMi0zLjg1IDE4LjQ4IDQuMjIgMjMuNTJsODIuOTMgNTEuODNjNi41MSA0LjA3IDE0LjY2IDIuNjIgMjAuMTEtMi43OSA1LjE4LTUuMTUgMTAuNzktOS44NSAxNi43OS0xNC4wNSA2LjI4LTQuNDEgOS4xNS0xMi4xNyA2LjMtMTkuMjl6TTM5OC4xOCAyNTZoOTcuMTNjOS4xIDAgMTYuNzQtNy42MyAxNi4xNS0xNi43MmEyNTQuMTM1IDI1NC4xMzUgMCAwIDAtMjIuNDUtODkuMjdjLTMuOTQtOC42Mi0xNC44OS0xMS40Ny0yMi45My02LjQ1bC04Mi44MSA1MS43NmMtNi41OSA0LjEyLTguOSAxMi4yNC02LjM0IDE5LjU4IDMuMDEgOC42MSA1LjE1IDE3LjYyIDYuMjQgMjYuOTQuOTMgNy45MSA3LjA1IDE0LjE2IDE1LjAxIDE0LjE2em01NC44NS0xNjIuODlhMjU3LjMwOCAyNTcuMzA4IDAgMCAwLTcxLjYxLTU5Ljg5Yy04LjI4LTQuNjgtMTguODgtLjUyLTIyLjQyIDguMzFsLTM2LjMyIDkwLjhjLTIuODUgNy4xMi4wMiAxNC44OCA2LjMgMTkuMjggNiA0LjIgMTEuNjEgOC45IDE2Ljc5IDE0LjA1IDUuNDQgNS40MSAxMy42IDYuODYgMjAuMTEgMi43OWw4Mi45My01MS44M2M4LjA3LTUuMDMgMTAuMjktMTYuMTkgNC4yMi0yMy41MXpNNDk2IDI4OGgtOTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDk2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnptMCAxMjhoLTk2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY2NGMwIDguODQgNy4xNiAxNiAxNiAxNmg5NmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNjRjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTI0MCAxNzcuNjJWNDcyYzAgNC40MiAzLjU4IDggOCA4aDE2YzQuNDIgMCA4LTMuNTggOC04VjE3Ny42MmMtNS4yMy0uODktMTAuNTItMS42Mi0xNi0xLjYycy0xMC43Ny43My0xNiAxLjYyem0tNjQgNDEuNTFWNDcyYzAgNC40MiAzLjU4IDggOCA4aDE2YzQuNDIgMCA4LTMuNTggOC04VjE4OS4zNmMtMTIuNzggNy40NS0yMy44NCAxNy40Ny0zMiAyOS43N3ptMTI4LTI5Ljc3VjQ3MmMwIDQuNDIgMy41OCA4IDggOGgxNmM0LjQyIDAgOC0zLjU4IDgtOFYyMTkuMTNjLTguMTYtMTIuMy0xOS4yMi0yMi4zMi0zMi0yOS43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWRpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDIuNiA4My4ybDkwLjIgOTAuMmMzLjggMy44IDMuOCAxMCAwIDEzLjhMMjc0LjQgNDA1LjZsLTkyLjggMTAuM2MtMTIuNCAxLjQtMjIuOS05LjEtMjEuNS0yMS41bDEwLjMtOTIuOEwzODguOCA4My4yYzMuOC0zLjggMTAtMy44IDEzLjggMHptMTYyLTIyLjlsLTQ4LjgtNDguOGMtMTUuMi0xNS4yLTM5LjktMTUuMi01NS4yIDBsLTM1LjQgMzUuNGMtMy44IDMuOC0zLjggMTAgMCAxMy44bDkwLjIgOTAuMmMzLjggMy44IDEwIDMuOCAxMy44IDBsMzUuNC0zNS40YzE1LjItMTUuMyAxNS4yLTQwIDAtNTUuMnpNMzg0IDM0Ni4yVjQ0OEg2NFYxMjhoMjI5LjhjMy4yIDAgNi4yLTEuMyA4LjUtMy41bDQwLTQwYzcuNi03LjYgMi4yLTIwLjUtOC41LTIwLjVINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYzMDYuMmMwLTEwLjctMTIuOS0xNi0yMC41LTguNWwtNDAgNDBjLTIuMiAyLjMtMy41IDUuMy0zLjUgOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFZ2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBDODYgMCAwIDIxNCAwIDMyMHM4NiAxOTIgMTkyIDE5MiAxOTItODYgMTkyLTE5MlMyOTggMCAxOTIgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDM4NHY2NGMwIDE3LjY3My0xNC4zMjcgMzItMzIgMzJIMzJjLTE3LjY3MyAwLTMyLTE0LjMyNy0zMi0zMnYtNjRjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyaDM4NGMxNy42NzMgMCAzMiAxNC4zMjcgMzIgMzJ6TTQ4LjA1MyAzMjBoMzUxLjg4NmM0MS42NTEgMCA2My41ODEtNDkuNjc0IDM1LjM4My04MC40MzVMMjU5LjM4MyA0Ny41NThjLTE5LjAxNC0yMC43NDMtNTEuNzUxLTIwLjc0NC03MC43NjcgMEwxMi42NyAyMzkuNTY1Qy0xNS40NzUgMjcwLjI2OCA2LjMyNCAzMjAgNDguMDUzIDMyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWxsaXBzaXNIIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyOCAyNTZjMCAzOS44LTMyLjIgNzItNzIgNzJzLTcyLTMyLjItNzItNzIgMzIuMi03MiA3Mi03MiA3MiAzMi4yIDcyIDcyem0xMDQtNzJjLTM5LjggMC03MiAzMi4yLTcyIDcyczMyLjIgNzIgNzIgNzIgNzItMzIuMiA3Mi03Mi0zMi4yLTcyLTcyLTcyem0tMzUyIDBjLTM5LjggMC03MiAzMi4yLTcyIDcyczMyLjIgNzIgNzIgNzIgNzItMzIuMiA3Mi03Mi0zMi4yLTcyLTcyLTcyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbGxpcHNpc1YgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDE5MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMTg0YzM5LjggMCA3MiAzMi4yIDcyIDcycy0zMi4yIDcyLTcyIDcyLTcyLTMyLjItNzItNzIgMzIuMi03MiA3Mi03MnpNMjQgODBjMCAzOS44IDMyLjIgNzIgNzIgNzJzNzItMzIuMiA3Mi03MlMxMzUuOCA4IDk2IDggMjQgNDAuMiAyNCA4MHptMCAzNTJjMCAzOS44IDMyLjIgNzIgNzIgNzJzNzItMzIuMiA3Mi03Mi0zMi4yLTcyLTcyLTcyLTcyIDMyLjItNzIgNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVudmVsb3BlT3BlblRleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDIxNmgxNjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE3NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZ6bS0xNiA4MGMwIDguODQgNy4xNiAxNiAxNiAxNmgxNjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE3NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZ6bTk2IDEyMS4xM2MtMTYuNDIgMC0zMi44NC01LjA2LTQ2Ljg2LTE1LjE5TDAgMjUwLjg2VjQ2NGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjI1MC44NkwzMDIuODYgNDAxLjk0Yy0xNC4wMiAxMC4xMi0zMC40NCAxNS4xOS00Ni44NiAxNS4xOXptMjM3LjYxLTI1NC4xOGMtOC44NS02Ljk0LTE3LjI0LTEzLjQ3LTI5LjYxLTIyLjgxVjk2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDhoLTc3LjU1Yy0zLjA0LTIuMi01Ljg3LTQuMjYtOS4wNC02LjU2QzMxMi42IDI5LjE3IDI3OS4yLS4zNSAyNTYgMGMtMjMuMi0uMzUtNTYuNTkgMjkuMTctNzMuNDEgNDEuNDQtMy4xNyAyLjMtNiA0LjM2LTkuMDQgNi41Nkg5NmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY0NC4xNGMtMTIuMzcgOS4zMy0yMC43NiAxNS44Ny0yOS42MSAyMi44MUE0Ny45OTUgNDcuOTk1IDAgMCAwIDAgMjAwLjcydjEwLjY1bDk2IDY5LjM1Vjk2aDMyMHYxODQuNzJsOTYtNjkuMzV2LTEwLjY1YzAtMTQuNzQtNi43OC0yOC42Ny0xOC4zOS0zNy43N3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW52ZWxvcGVPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiA0NjRjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYyMDAuNzI0YTQ4IDQ4IDAgMCAxIDE4LjM4Ny0zNy43NzZjMjQuOTEzLTE5LjUyOSA0NS41MDEtMzUuMzY1IDE2NC4yLTEyMS41MTFDMTk5LjQxMiAyOS4xNyAyMzIuNzk3LS4zNDcgMjU2IC4wMDNjMjMuMTk4LS4zNTQgNTYuNTk2IDI5LjE3MiA3My40MTMgNDEuNDMzIDExOC42ODcgODYuMTM3IDEzOS4zMDMgMTAxLjk5NSAxNjQuMiAxMjEuNTEyQTQ4IDQ4IDAgMCAxIDUxMiAyMDAuNzI0VjQ2NHptLTY1LjY2Ni0xOTYuNjA1Yy0yLjU2My0zLjcyOC03LjctNC41OTUtMTEuMzM5LTEuOTA3LTIyLjg0NSAxNi44NzMtNTUuNDYyIDQwLjcwNS0xMDUuNTgyIDc3LjA3OS0xNi44MjUgMTIuMjY2LTUwLjIxIDQxLjc4MS03My40MTMgNDEuNDMtMjMuMjExLjM0NC01Ni41NTktMjkuMTQzLTczLjQxMy00MS40My01MC4xMTQtMzYuMzctODIuNzM0LTYwLjIwNC0xMDUuNTgyLTc3LjA3OS0zLjYzOS0yLjY4OC04Ljc3Ni0xLjgyMS0xMS4zMzkgMS45MDdsLTkuMDcyIDEzLjE5NmE3Ljk5OCA3Ljk5OCAwIDAgMCAxLjgzOSAxMC45NjdjMjIuODg3IDE2Ljg5OSA1NS40NTQgNDAuNjkgMTA1LjMwMyA3Ni44NjggMjAuMjc0IDE0Ljc4MSA1Ni41MjQgNDcuODEzIDkyLjI2NCA0Ny41NzMgMzUuNzI0LjI0MiA3MS45NjEtMzIuNzcxIDkyLjI2My00Ny41NzMgNDkuODUtMzYuMTc5IDgyLjQxOC01OS45NyAxMDUuMzAzLTc2Ljg2OGE3Ljk5OCA3Ljk5OCAwIDAgMCAxLjgzOS0xMC45NjdsLTkuMDcxLTEzLjE5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW52ZWxvcGVTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjQ5IDMyIDAgNTMuNDkgMCA4MHYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY4MGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4ek0xNzguMTE3IDI2Mi4xMDRDODcuNDI5IDE5Ni4yODcgODguMzUzIDE5Ni4xMjEgNjQgMTc3LjE2N1YxNTJjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDI3MmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MjUuMTY3Yy0yNC4zNzEgMTguOTY5LTIzLjQzNCAxOS4xMjQtMTE0LjExNyA4NC45MzgtMTAuNSA3LjY1NS0zMS4zOTIgMjYuMTItNDUuODgzIDI1Ljg5NC0xNC41MDMuMjE4LTM1LjM2Ny0xOC4yMjctNDUuODgzLTI1Ljg5NXpNMzg0IDIxNy43NzVWMzYwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEg4OGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0VjIxNy43NzVjMTMuOTU4IDEwLjc5NCAzMy4zMjkgMjUuMjM2IDk1LjMwMyA3MC4yMTQgMTQuMTYyIDEwLjM0MSAzNy45NzUgMzIuMTQ1IDY0LjY5NCAzMi4wMSAyNi44ODcuMTM0IDUxLjAzNy0yMi4wNDEgNjQuNzItMzIuMDI1IDYxLjk1OC00NC45NjUgODEuMzI1LTU5LjQwNiA5NS4yODMtNzAuMTk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbnZlbG9wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuMyAxOTAuOGMzLjktMy4xIDkuNy0uMiA5LjcgNC43VjQwMGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTk1LjZjMC01IDUuNy03LjggOS43LTQuNyAyMi40IDE3LjQgNTIuMSAzOS41IDE1NC4xIDExMy42IDIxLjEgMTUuNCA1Ni43IDQ3LjggOTIuMiA0Ny42IDM1LjcuMyA3Mi0zMi44IDkyLjMtNDcuNiAxMDItNzQuMSAxMzEuNi05Ni4zIDE1NC0xMTMuN3pNMjU2IDMyMGMyMy4yLjQgNTYuNi0yOS4yIDczLjQtNDEuNCAxMzIuNy05Ni4zIDE0Mi44LTEwNC43IDE3My40LTEyOC43IDUuOC00LjUgOS4yLTExLjUgOS4yLTE4Ljl2LTE5YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjE5YzAgNy40IDMuNCAxNC4zIDkuMiAxOC45IDMwLjYgMjMuOSA0MC43IDMyLjQgMTczLjQgMTI4LjcgMTYuOCAxMi4yIDUwLjIgNDEuOCA3My40IDQxLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVxdWFscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMzA0SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzg0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTAtMTkySDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzg0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVyYXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTcuOTQxIDI3My45NDFjMTguNzQ1LTE4Ljc0NSAxOC43NDUtNDkuMTM3IDAtNjcuODgybC0xNjAtMTYwYy0xOC43NDUtMTguNzQ1LTQ5LjEzNi0xOC43NDYtNjcuODgzIDBsLTI1NiAyNTZjLTE4Ljc0NSAxOC43NDUtMTguNzQ1IDQ5LjEzNyAwIDY3Ljg4Mmw5NiA5NkE0OC4wMDQgNDguMDA0IDAgMCAwIDE0NCA0ODBoMzU2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJIMzU1Ljg4M2wxNDIuMDU4LTE0Mi4wNTl6bS0zMDIuNjI3LTYyLjYyN2wxMzcuMzczIDEzNy4zNzNMMjY1LjM3MyA0MTZIMTUwLjYyOGwtODAtODAgMTI0LjY4Ni0xMjQuNjg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFdGhlcm5ldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMTkyaC00OHYtNDhjMC04LjgtNy4yLTE2LTE2LTE2aC00OFY4MGMwLTguOC03LjItMTYtMTYtMTZIMTQ0Yy04LjggMC0xNiA3LjItMTYgMTZ2NDhIODBjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djIyNGMwIDguOCA3LjIgMTYgMTYgMTZoODBWMzIwaDMydjEyOGg2NFYzMjBoMzJ2MTI4aDY0VjMyMGgzMnYxMjhoNjRWMzIwaDMydjEyOGg4MGM4LjggMCAxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXVyb1NpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEwLjcwNiA0MTMuNzY1Yy0xLjMxNC02LjYzLTcuODM1LTEwLjg3Mi0xNC40MjQtOS4zNjktMTAuNjkyIDIuNDM5LTI3LjQyMiA1LjQxMy00NS40MjYgNS40MTMtNTYuNzYzIDAtMTAxLjkyOS0zNC43OS0xMjEuNDYxLTg1LjQ0OWgxMTMuNjg5YTEyIDEyIDAgMCAwIDExLjcwOC05LjM2OWw2LjM3My0yOC4zNmMxLjY4Ni03LjUwMi00LjAxOS0xNC42MzEtMTEuNzA4LTE0LjYzMUgxMTUuMjJjLTEuMjEtMTQuMzI4LTEuNDE0LTI4LjI4Ny4xMzctNDIuMjQ1SDI2MS45NWExMiAxMiAwIDAgMCAxMS43MjMtOS40MzRsNi41MTItMjkuNzU1YzEuNjM4LTcuNDg0LTQuMDYxLTE0LjU2Ni0xMS43MjMtMTQuNTY2SDEzMC4xODRjMjAuNjMzLTQ0Ljk5MSA2Mi42OS03NS4wMyAxMTcuNjE5LTc1LjAzIDE0LjQ4NiAwIDI4LjU2NCAyLjI1IDM3Ljg1MSA0LjE0NSA2LjIxNiAxLjI2OCAxMi4zNDctMi40OTggMTQuMDAyLTguNjIzbDExLjk5MS00NC4zNjhjMS44MjItNi43NDEtMi40NjUtMTMuNjE2LTkuMzI2LTE0LjkxN0MyOTAuMjE3IDM0LjkxMiAyNzAuNzEgMzIgMjQ5LjYzNSAzMiAxNTIuNDUxIDMyIDc0LjAzIDkyLjI1MiA0NS4wNzUgMTc2SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI5Ljc1NWMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDIxLjU2OWMtMS4wMDkgMTMuNjA3LTEuMTgxIDI5LjI4Ny0uMTgxIDQyLjI0NUgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOC4zNmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDMwLjExNEM2Ny4xMzkgNDE0LjY5MiAxNDUuMjY0IDQ4MCAyNDkuNjM1IDQ4MGMyNi4zMDEgMCA0OC41NjItNC41NDQgNjEuMTAxLTcuNzg4IDYuMTY3LTEuNTk1IDEwLjAyNy03LjcwOCA4Ljc4OC0xMy45NTdsLTguODE4LTQ0LjQ5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeGNoYW5nZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDE2OHYtMTZjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDM2MFY4MGMwLTIxLjM2NyAyNS44OTktMzIuMDQyIDQwLjk3MS0xNi45NzFsODAgODBjOS4zNzIgOS4zNzMgOS4zNzIgMjQuNTY5IDAgMzMuOTQxbC04MCA4MEM0MDkuOTU2IDI3MS45ODIgMzg0IDI2MS40NTYgMzg0IDI0MHYtNDhIMjRjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHptNDg4IDE1MkgxMjh2LTQ4YzAtMjEuMzE0LTI1Ljg2Mi0zMi4wOC00MC45NzEtMTYuOTcxbC04MCA4MGMtOS4zNzIgOS4zNzMtOS4zNzIgMjQuNTY5IDAgMzMuOTQxbDgwIDgwQzEwMi4wNTcgNDYzLjk5NyAxMjggNDUzLjQzNyAxMjggNDMydi00OGgzNjBjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV4Y2xhbWF0aW9uQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNCAyNTZjMCAxMzYuOTk3LTExMS4wNDMgMjQ4LTI0OCAyNDhTOCAzOTIuOTk3IDggMjU2QzggMTE5LjA4MyAxMTkuMDQzIDggMjU2IDhzMjQ4IDExMS4wODMgMjQ4IDI0OHptLTI0OCA1MGMtMjUuNDA1IDAtNDYgMjAuNTk1LTQ2IDQ2czIwLjU5NSA0NiA0NiA0NiA0Ni0yMC41OTUgNDYtNDYtMjAuNTk1LTQ2LTQ2LTQ2em0tNDMuNjczLTE2NS4zNDZsNy40MTggMTM2Yy4zNDcgNi4zNjQgNS42MDkgMTEuMzQ2IDExLjk4MiAxMS4zNDZoNDguNTQ2YzYuMzczIDAgMTEuNjM1LTQuOTgyIDExLjk4Mi0xMS4zNDZsNy40MTgtMTM2Yy4zNzUtNi44NzQtNS4wOTgtMTIuNjU0LTExLjk4Mi0xMi42NTRoLTYzLjM4M2MtNi44ODQgMC0xMi4zNTYgNS43OC0xMS45ODEgMTIuNjU0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeGNsYW1hdGlvblRyaWFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2OS41MTcgNDQwLjAxM0M1ODcuOTc1IDQ3Mi4wMDcgNTY0LjgwNiA1MTIgNTI3Ljk0IDUxMkg0OC4wNTRjLTM2LjkzNyAwLTU5Ljk5OS00MC4wNTUtNDEuNTc3LTcxLjk4N0wyNDYuNDIzIDIzLjk4NWMxOC40NjctMzIuMDA5IDY0LjcyLTMxLjk1MSA4My4xNTQgMGwyMzkuOTQgNDE2LjAyOHpNMjg4IDM1NGMtMjUuNDA1IDAtNDYgMjAuNTk1LTQ2IDQ2czIwLjU5NSA0NiA0NiA0NiA0Ni0yMC41OTUgNDYtNDYtMjAuNTk1LTQ2LTQ2LTQ2em0tNDMuNjczLTE2NS4zNDZsNy40MTggMTM2Yy4zNDcgNi4zNjQgNS42MDkgMTEuMzQ2IDExLjk4MiAxMS4zNDZoNDguNTQ2YzYuMzczIDAgMTEuNjM1LTQuOTgyIDExLjk4Mi0xMS4zNDZsNy40MTgtMTM2Yy4zNzUtNi44NzQtNS4wOTgtMTIuNjU0LTExLjk4Mi0xMi42NTRoLTYzLjM4M2MtNi44ODQgMC0xMi4zNTYgNS43OC0xMS45ODEgMTIuNjU0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgNDMyYzAgNDQuMTEyLTM1Ljg4OCA4MC04MCA4MHMtODAtMzUuODg4LTgwLTgwIDM1Ljg4OC04MCA4MC04MCA4MCAzNS44ODggODAgODB6TTI1LjI2IDI1LjE5OWwxMy42IDI3MkMzOS40OTkgMzA5Ljk3MiA1MC4wNDEgMzIwIDYyLjgzIDMyMGg2Ni4zNGMxMi43ODkgMCAyMy4zMzEtMTAuMDI4IDIzLjk3LTIyLjgwMWwxMy42LTI3MkMxNjcuNDI1IDExLjQ5IDE1Ni40OTYgMCAxNDIuNzcgMEg0OS4yM0MzNS41MDQgMCAyNC41NzUgMTEuNDkgMjUuMjYgMjUuMTk5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeHBhbmRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEyLjY4NiAzMTUuMzE0TDEyMCA0MDhsMzIuOTIyIDMxLjAyOWMxNS4xMiAxNS4xMiA0LjQxMiA0MC45NzEtMTYuOTcgNDAuOTcxaC0xMTJDMTAuNjk3IDQ4MCAwIDQ2OS4yNTUgMCA0NTZWMzQ0YzAtMjEuMzgyIDI1LjgwMy0zMi4wOSA0MC45MjItMTYuOTcxTDcyIDM2MGw5Mi42ODYtOTIuNjg2YzYuMjQ4LTYuMjQ4IDE2LjM3OS02LjI0OCAyMi42MjcgMGwyNS4zNzMgMjUuMzczYzYuMjQ5IDYuMjQ4IDYuMjQ5IDE2LjM3OCAwIDIyLjYyN3ptMjIuNjI4LTExOC42MjhMMzI4IDEwNGwtMzIuOTIyLTMxLjAyOUMyNzkuOTU4IDU3Ljg1MSAyOTAuNjY2IDMyIDMxMi4wNDggMzJoMTEyQzQzNy4zMDMgMzIgNDQ4IDQyLjc0NSA0NDggNTZ2MTEyYzAgMjEuMzgyLTI1LjgwMyAzMi4wOS00MC45MjIgMTYuOTcxTDM3NiAxNTJsLTkyLjY4NiA5Mi42ODZjLTYuMjQ4IDYuMjQ4LTE2LjM3OSA2LjI0OC0yMi42MjcgMGwtMjUuMzczLTI1LjM3M2MtNi4yNDktNi4yNDgtNi4yNDktMTYuMzc4IDAtMjIuNjI3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeHBhbmRBcnJvd3NBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDM0NHYxMTJhMjMuOTQgMjMuOTQgMCAwIDEtMjQgMjRIMzEyYy0yMS4zOSAwLTMyLjA5LTI1LjktMTctNDFsMzYuMi0zNi4yTDIyNCAyOTUuNiAxMTYuNzcgNDAyLjkgMTUzIDQzOWMxNS4wOSAxNS4xIDQuMzkgNDEtMTcgNDFIMjRhMjMuOTQgMjMuOTQgMCAwIDEtMjQtMjRWMzQ0YzAtMjEuNCAyNS44OS0zMi4xIDQxLTE3bDM2LjE5IDM2LjJMMTg0LjQ2IDI1NiA3Ny4xOCAxNDguNyA0MSAxODVjLTE1LjEgMTUuMS00MSA0LjQtNDEtMTdWNTZhMjMuOTQgMjMuOTQgMCAwIDEgMjQtMjRoMTEyYzIxLjM5IDAgMzIuMDkgMjUuOSAxNyA0MWwtMzYuMiAzNi4yTDIyNCAyMTYuNGwxMDcuMjMtMTA3LjNMMjk1IDczYy0xNS4wOS0xNS4xLTQuMzktNDEgMTctNDFoMTEyYTIzLjk0IDIzLjk0IDAgMCAxIDI0IDI0djExMmMwIDIxLjQtMjUuODkgMzIuMS00MSAxN2wtMzYuMTktMzYuMkwyNjMuNTQgMjU2bDEwNy4yOCAxMDcuM0w0MDcgMzI3LjFjMTUuMS0xNS4yIDQxLTQuNSA0MSAxNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeHBhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxODBWNTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTI0YzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJINjR2ODRjMCA2LjYtNS40IDEyLTEyIDEySDEyYy02LjYgMC0xMi01LjQtMTItMTJ6TTI4OCA0NHY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoODR2ODRjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMlY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgzMDBjLTYuNiAwLTEyIDUuNC0xMiAxMnptMTQ4IDI3NmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY4NGgtODRjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMTI0YzEzLjMgMCAyNC0xMC43IDI0LTI0VjMzMmMwLTYuNi01LjQtMTItMTItMTJ6TTE2MCA0Njh2LTQwYzAtNi42LTUuNC0xMi0xMi0xMkg2NHYtODRjMC02LjYtNS40LTEyLTEyLTEySDEyYy02LjYgMC0xMiA1LjQtMTIgMTJ2MTI0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDEyNGM2LjYgMCAxMi01LjQgMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV4dGVybmFsTGlua0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIsMzIwSDQwMGExNiwxNiwwLDAsMC0xNiwxNlY0NDhINjRWMTI4SDIwOGExNiwxNiwwLDAsMCwxNi0xNlY4MGExNiwxNiwwLDAsMC0xNi0xNkg0OEE0OCw0OCwwLDAsMCwwLDExMlY0NjRhNDgsNDgsMCwwLDAsNDgsNDhINDAwYTQ4LDQ4LDAsMCwwLDQ4LTQ4VjMzNkExNiwxNiwwLDAsMCw0MzIsMzIwWk00ODgsMGgtMTI4Yy0yMS4zNywwLTMyLjA1LDI1LjkxLTE3LDQxbDM1LjczLDM1LjczTDEzNSwzMjAuMzdhMjQsMjQsMCwwLDAsMCwzNEwxNTcuNjcsMzc3YTI0LDI0LDAsMCwwLDM0LDBMNDM1LjI4LDEzMy4zMiw0NzEsMTY5YzE1LDE1LDQxLDQuNSw0MS0xN1YyNEEyNCwyNCwwLDAsMCw0ODgsMFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXh0ZXJuYWxMaW5rU3F1YXJlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA4MHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDM1MmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4em0tODggMTZIMjQ4LjAyOWMtMjEuMzEzIDAtMzIuMDggMjUuODYxLTE2Ljk3MSA0MC45NzFsMzEuOTg0IDMxLjk4N0w2Ny41MTUgMzY0LjQ4NWMtNC42ODYgNC42ODYtNC42ODYgMTIuMjg0IDAgMTYuOTcxbDMxLjAyOSAzMS4wMjljNC42ODcgNC42ODYgMTIuMjg1IDQuNjg2IDE2Ljk3MSAwbDE5NS41MjYtMTk1LjUyNiAzMS45ODggMzEuOTkxQzM1OC4wNTggMjYzLjk3NyAzODQgMjUzLjQyNSAzODQgMjMxLjk3OVYxMjBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeWVEcm9wcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwLjc1IDMzMy4yNWMtMTIgMTItMTguNzUgMjguMjgtMTguNzUgNDUuMjZWNDI0TDAgNDgwbDMyIDMyIDU2LTMyaDQ1LjQ5YzE2Ljk3IDAgMzMuMjUtNi43NCA0NS4yNS0xOC43NGwxMjYuNjQtMTI2LjYyLTEyOC0xMjhMNTAuNzUgMzMzLjI1ek00ODMuODggMjguMTJjLTM3LjQ3LTM3LjUtOTguMjgtMzcuNS0xMzUuNzUgMGwtNzcuMDkgNzcuMDktMTMuMS0xMy4xYy05LjQ0LTkuNDQtMjQuNjUtOS4zMS0zMy45NCAwbC00MC45NyA0MC45N2MtOS4zNyA5LjM3LTkuMzcgMjQuNTcgMCAzMy45NGwxNjEuOTQgMTYxLjk0YzkuNDQgOS40NCAyNC42NSA5LjMxIDMzLjk0IDBMNDE5Ljg4IDI4OGM5LjM3LTkuMzcgOS4zNy0yNC41NyAwLTMzLjk0bC0xMy4xLTEzLjEgNzcuMDktNzcuMDljMzcuNTEtMzcuNDggMzcuNTEtOTguMjYuMDEtMTM1Ljc1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeWVTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgNDAwYy03NS44NSAwLTEzNy4yNS01OC43MS0xNDIuOS0xMzMuMTFMNzIuMiAxODUuODJjLTEzLjc5IDE3LjMtMjYuNDggMzUuNTktMzYuNzIgNTUuNTlhMzIuMzUgMzIuMzUgMCAwIDAgMCAyOS4xOUM4OS43MSAzNzYuNDEgMTk3LjA3IDQ0OCAzMjAgNDQ4YzI2LjkxIDAgNTIuODctNCA3Ny44OS0xMC40NkwzNDYgMzk3LjM5YTE0NC4xMyAxNDQuMTMgMCAwIDEtMjYgMi42MXptMzEzLjgyIDU4LjFsLTExMC41NS04NS40NGEzMzEuMjUgMzMxLjI1IDAgMCAwIDgxLjI1LTEwMi4wNyAzMi4zNSAzMi4zNSAwIDAgMCAwLTI5LjE5QzU1MC4yOSAxMzUuNTkgNDQyLjkzIDY0IDMyMCA2NGEzMDguMTUgMzA4LjE1IDAgMCAwLTE0Ny4zMiAzNy43TDQ1LjQ2IDMuMzdBMTYgMTYgMCAwIDAgMjMgNi4xOEwzLjM3IDMxLjQ1QTE2IDE2IDAgMCAwIDYuMTggNTMuOWw1ODguMzYgNDU0LjczYTE2IDE2IDAgMCAwIDIyLjQ2LTIuODFsMTkuNjQtMjUuMjdhMTYgMTYgMCAwIDAtMi44Mi0yMi40NXptLTE4My43Mi0xNDJsLTM5LjMtMzAuMzhBOTQuNzUgOTQuNzUgMCAwIDAgNDE2IDI1NmE5NC43NiA5NC43NiAwIDAgMC0xMjEuMzEtOTIuMjFBNDcuNjUgNDcuNjUgMCAwIDEgMzA0IDE5MmE0Ni42NCA0Ni42NCAwIDAgMS0xLjU0IDEwbC03My42MS01Ni44OUExNDIuMzEgMTQyLjMxIDAgMCAxIDMyMCAxMTJhMTQzLjkyIDE0My45MiAwIDAgMSAxNDQgMTQ0YzAgMjEuNjMtNS4yOSA0MS43OS0xMy45IDYwLjExelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTcyLjUyIDI0MS40QzUxOC4yOSAxMzUuNTkgNDEwLjkzIDY0IDI4OCA2NFM1Ny42OCAxMzUuNjQgMy40OCAyNDEuNDFhMzIuMzUgMzIuMzUgMCAwIDAgMCAyOS4xOUM1Ny43MSAzNzYuNDEgMTY1LjA3IDQ0OCAyODggNDQ4czIzMC4zMi03MS42NCAyODQuNTItMTc3LjQxYTMyLjM1IDMyLjM1IDAgMCAwIDAtMjkuMTl6TTI4OCA0MDBhMTQ0IDE0NCAwIDEgMSAxNDQtMTQ0IDE0My45MyAxNDMuOTMgMCAwIDEtMTQ0IDE0NHptMC0yNDBhOTUuMzEgOTUuMzEgMCAwIDAtMjUuMzEgMy43OSA0Ny44NSA0Ny44NSAwIDAgMS02Ni45IDY2LjlBOTUuNzggOTUuNzggMCAxIDAgMjg4IDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1Mi41NyAxMjhjLTI4LjA5IDAtNTQuMDkgNC41Mi03Ny4wNiAxMi44NmwxMi40MS0xMjMuMTFDMjg5IDcuMzEgMjc5LjgxLTEuMTggMjY5LjMzLjEzIDE4OS42MyAxMC4xMyAxMjggNzcuNjQgMTI4IDE1OS40M2MwIDI4LjA5IDQuNTIgNTQuMDkgMTIuODYgNzcuMDZMMTcuNzUgMjI0LjA4QzcuMzEgMjIzLTEuMTggMjMyLjE5LjEzIDI0Mi42N2MxMCA3OS43IDc3LjUxIDE0MS4zMyAxNTkuMyAxNDEuMzMgMjguMDkgMCA1NC4wOS00LjUyIDc3LjA2LTEyLjg2bC0xMi40MSAxMjMuMTFjLTEuMDUgMTAuNDMgOC4xMSAxOC45MyAxOC41OSAxNy42MiA3OS43LTEwIDE0MS4zMy03Ny41MSAxNDEuMzMtMTU5LjMgMC0yOC4wOS00LjUyLTU0LjA5LTEyLjg2LTc3LjA2bDEyMy4xMSAxMi40MWMxMC40NCAxLjA1IDE4LjkzLTguMTEgMTcuNjItMTguNTktMTAtNzkuNy03Ny41MS0xNDEuMzMtMTU5LjMtMTQxLjMzek0yNTYgMjg4YTMyIDMyIDAgMSAxIDMyLTMyIDMyIDMyIDAgMCAxLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYXN0QmFja3dhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0MzZWNzZjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnYxNTEuOUwyMzUuNSA3MS40QzI1Ni4xIDU0LjMgMjg4IDY4LjYgMjg4IDk2djEzMS45TDQ1OS41IDcxLjRDNDgwLjEgNTQuMyA1MTIgNjguNiA1MTIgOTZ2MzIwYzAgMjcuNC0zMS45IDQxLjctNTIuNSAyNC42TDI4OCAyODUuM1Y0MTZjMCAyNy40LTMxLjkgNDEuNy01Mi41IDI0LjZMNjQgMjg1LjNWNDM2YzAgNi42LTUuNCAxMi0xMiAxMkgxMmMtNi42IDAtMTItNS40LTEyLTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYXN0Rm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgNzZ2MzYwYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMlYyODQuMUwyNzYuNSA0NDAuNmMtMjAuNiAxNy4yLTUyLjUgMi44LTUyLjUtMjQuNlYyODQuMUw1Mi41IDQ0MC42QzMxLjkgNDU3LjggMCA0NDMuNCAwIDQxNlY5NmMwLTI3LjQgMzEuOS00MS43IDUyLjUtMjQuNkwyMjQgMjI2LjhWOTZjMC0yNy40IDMxLjktNDEuNyA1Mi41LTI0LjZMNDQ4IDIyNi44Vjc2YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhdWNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIsMjU2SDMxMy4zOWMtMTUuNzEtMTMuNDQtMzUuNDYtMjMuMDctNTcuMzktMjhWMTgwLjQ0bC0zMi0zLjM4LTMyLDMuMzhWMjI4Yy0yMS45Myw1LTQxLjY4LDE0LjYtNTcuMzksMjhIMTZBMTYsMTYsMCwwLDAsMCwyNzJ2OTZhMTYsMTYsMCwwLDAsMTYsMTZoOTIuNzlDMTI5LjM4LDQyMS43MywxNzMsNDQ4LDIyNCw0NDhzOTQuNjItMjYuMjcsMTE1LjIxLTY0SDM1MmEzMiwzMiwwLDAsMSwzMiwzMiwzMiwzMiwwLDAsMCwzMiwzMmg2NGEzMiwzMiwwLDAsMCwzMi0zMkExNjAsMTYwLDAsMCwwLDM1MiwyNTZaTTgxLjU5LDE1OS45MWwxNDIuNDEtMTUsMTQyLjQxLDE1YzkuNDIsMSwxNy41OS02LjgxLDE3LjU5LTE2LjhWMTEyLjg5YzAtMTAtOC4xNy0xNy44LTE3LjU5LTE2LjgxTDI1NiwxMDcuNzRWODBhMTYsMTYsMCwwLDAtMTYtMTZIMjA4YTE2LDE2LDAsMCwwLTE2LDE2djI3Ljc0TDgxLjU5LDk2LjA4QzcyLjE3LDk1LjA5LDY0LDEwMi45LDY0LDExMi44OXYzMC4yMkM2NCwxNTMuMSw3Mi4xNywxNjAuOTEsODEuNTksMTU5LjkxWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDE2MFY3Ny4yNWEzMiAzMiAwIDAgMC05LjM4LTIyLjYzTDQyNS4zNyA5LjM3QTMyIDMyIDAgMCAwIDQwMi43NSAwSDE2MGEzMiAzMiAwIDAgMC0zMiAzMnY0NDhhMzIgMzIgMCAwIDAgMzIgMzJoMzIwYTMyIDMyIDAgMCAwIDMyLTMyVjE5MmEzMiAzMiAwIDAgMC0zMi0zMnpNMjg4IDQzMmExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZ2LTMyYTE2IDE2IDAgMCAxIDE2LTE2aDMyYTE2IDE2IDAgMCAxIDE2IDE2em0wLTEyOGExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZ2LTMyYTE2IDE2IDAgMCAxIDE2LTE2aDMyYTE2IDE2IDAgMCAxIDE2IDE2em0xMjggMTI4YTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoMzJhMTYgMTYgMCAwIDEgMTYgMTZ6bTAtMTI4YTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoMzJhMTYgMTYgMCAwIDEgMTYgMTZ6bTAtMTEySDE5MlY2NGgxNjB2NDhhMTYgMTYgMCAwIDAgMTYgMTZoNDh6TTY0IDEyOEgzMmEzMiAzMiAwIDAgMC0zMiAzMnYzMjBhMzIgMzIgMCAwIDAgMzIgMzJoMzJhMzIgMzIgMCAwIDAgMzItMzJWMTYwYTMyIDMyIDAgMCAwLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGZWF0aGVyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAwQzQ2MC4yMiAzLjU2IDk2LjQ0IDM4LjIgNzEuMDEgMjg3LjYxYy0zLjA5IDI2LjY2LTQuODQgNTMuNDQtNS45OSA4MC4yNGwxNzguODctMTc4LjY5YzYuMjUtNi4yNSAxNi40LTYuMjUgMjIuNjUgMHM2LjI1IDE2LjM4IDAgMjIuNjNMNy4wNCA0NzEuMDNjLTkuMzggOS4zNy05LjM4IDI0LjU3IDAgMzMuOTQgOS4zOCA5LjM3IDI0LjU5IDkuMzcgMzMuOTggMGw1Ny4xMy01Ny4wN2M0Mi4wOS0uMTQgODQuMTUtMi41MyAxMjUuOTYtNy4zNiA1My40OC01LjQ0IDk3LjAyLTI2LjQ3IDEzMi41OC01Ni41NEgyNTUuNzRsMTQ2Ljc5LTQ4Ljg4YzExLjI1LTE0Ljg5IDIxLjM3LTMwLjcxIDMwLjQ1LTQ3LjEyaC04MS4xNGwxMDYuNTQtNTMuMjFDNTAwLjI5IDEzMi44NiA1MTAuMTkgMjYuMjYgNTEyIDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlYXRoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY3LjE0IDQ0Ljg0Yy02Mi41NS02Mi40OC0xNjEuNjctNjQuNzgtMjUyLjI4IDI1LjczLTc4LjYxIDc4LjUyLTYwLjk4IDYwLjkyLTg1Ljc1IDg1LjY2LTYwLjQ2IDYwLjM5LTcwLjM5IDE1MC44My02My42NCAyMTEuMTdsMTc4LjQ0LTE3OC4yNWM2LjI2LTYuMjUgMTYuNC02LjI1IDIyLjY1IDBzNi4yNSAxNi4zOCAwIDIyLjYzTDcuMDQgNDcxLjAzYy05LjM4IDkuMzctOS4zOCAyNC41NyAwIDMzLjk0IDkuMzggOS4zNyAyNC42IDkuMzcgMzMuOTggMGw2Ni4xLTY2LjAzQzE1OS40MiA0NTQuNjUgMjc5IDQ1Ny4xMSAzNTMuOTUgMzg0aC05OC4xOWwxNDcuNTctNDkuMTRjNDkuOTktNDkuOTMgMzYuMzgtMzYuMTggNDYuMzEtNDYuODZoLTk3Ljc4bDEzMS41NC00My44YzQ1LjQ0LTc0LjQ2IDM0LjMxLTE0OC44NC0xNi4yNi0xOTkuMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlbWFsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMGMzNS4zNDYgMCA2NCAyOC42NTQgNjQgNjRzLTI4LjY1NCA2NC02NCA2NGMtMzUuMzQ2IDAtNjQtMjguNjU0LTY0LTY0UzkyLjY1NCAwIDEyOCAwbTExOS4yODMgMzU0LjE3OWwtNDgtMTkyQTI0IDI0IDAgMCAwIDE3NiAxNDRoLTExLjM2Yy0yMi43MTEgMTAuNDQzLTQ5LjU5IDEwLjg5NC03My4yOCAwSDgwYTI0IDI0IDAgMCAwLTIzLjI4MyAxOC4xNzlsLTQ4IDE5MkM0LjkzNSAzNjkuMzA1IDE2LjM4MyAzODQgMzIgMzg0aDU2djEwNGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjM4NGg1NmMxNS41OTEgMCAyNy4wNzEtMTQuNjcxIDIzLjI4My0yOS44MjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpZ2h0ZXJKZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDIyNGwtMTI4LTE2LTQ4LTE2aC0yNEwyMjcuMTU4IDQ0aDM5LjUwOUMyNzguMzMzIDQ0IDI4OCA0MS4zNzUgMjg4IDM4cy05LjY2Ny02LTIxLjMzMy02SDE1MnYxMmgxNnYxNjRoLTQ4bC02Ni42NjctODBIMTguNjY3TDggMTM4LjY2N1YyMDhoOHYxNmg0OHYyLjY2NmwtNjQgOHY0Mi42NjdsNjQgOFYyODhIMTZ2MTZIOHY2OS4zMzNMMTguNjY3IDM4NGgzNC42NjdMMTIwIDMwNGg0OHYxNjRoLTE2djEyaDExNC42NjdjMTEuNjY3IDAgMjEuMzMzLTIuNjI1IDIxLjMzMy02cy05LjY2Ny02LTIxLjMzMy02aC0zOS41MDlMMzQ0IDMyMGgyNGw0OC0xNiAxMjgtMTZjOTYtMjEuMzMzIDk2LTI2LjU4MyA5Ni0zMiAwLTUuNDE3IDAtMTAuNjY3LTk2LTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptNjQgMjM2YzAgNi42LTUuNCAxMi0xMiAxMkgxMDhjLTYuNiAwLTEyLTUuNC0xMi0xMnYtOGMwLTYuNiA1LjQtMTIgMTItMTJoMTY4YzYuNiAwIDEyIDUuNCAxMiAxMnY4em0wLTY0YzAgNi42LTUuNCAxMi0xMiAxMkgxMDhjLTYuNiAwLTEyLTUuNC0xMi0xMnYtOGMwLTYuNiA1LjQtMTIgMTItMTJoMTY4YzYuNiAwIDEyIDUuNCAxMiAxMnY4em0wLTcydjhjMCA2LjYtNS40IDEyLTEyIDEySDEwOGMtNi42IDAtMTItNS40LTEyLTEydi04YzAtNi42IDUuNC0xMiAxMi0xMmgxNjhjNi42IDAgMTIgNS40IDEyIDEyem05Ni0xMTQuMXY2LjFIMjU2VjBoNi4xYzYuNCAwIDEyLjUgMi41IDE3IDdsOTcuOSA5OGM0LjUgNC41IDcgMTAuNiA3IDE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVBcmNoaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3NyAxMDVMMjc5LjEgN2MtNC41LTQuNS0xMC42LTctMTctN0gyNTZ2MTI4aDEyOHYtNi4xYzAtNi4zLTIuNS0xMi40LTctMTYuOXpNMTI4LjQgMzM2Yy0xNy45IDAtMzIuNCAxMi4xLTMyLjQgMjcgMCAxNSAxNC42IDI3IDMyLjUgMjdzMzIuNC0xMi4xIDMyLjQtMjctMTQuNi0yNy0zMi41LTI3ek0yMjQgMTM2VjBoLTYzLjZ2MzJoLTMyVjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6TTk1LjkgMzJoMzJ2MzJoLTMyem0zMi4zIDM4NGMtMzMuMiAwLTU4LTMwLjQtNTEuNC02Mi45TDk2LjQgMjU2di0zMmgzMnYtMzJoLTMydi0zMmgzMnYtMzJoLTMyVjk2aDMyVjY0aDMydjMyaC0zMnYzMmgzMnYzMmgtMzJ2MzJoMzJ2MzJoLTMydjMyaDIyLjFjNS43IDAgMTAuNyA0LjEgMTEuOCA5LjdsMTcuMyA4Ny43YzYuNCAzMi40LTE4LjQgNjIuNi01MS40IDYyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVBdWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTM2VjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bS02NCAyNjhjMCAxMC43LTEyLjkgMTYtMjAuNSA4LjVMMTA0IDM3Nkg3NmMtNi42IDAtMTItNS40LTEyLTEydi01NmMwLTYuNiA1LjQtMTIgMTItMTJoMjhsMzUuNS0zNi41YzcuNi03LjYgMjAuNS0yLjIgMjAuNSA4LjV2MTM2em0zMy4yLTQ3LjZjOS4xLTkuMyA5LjEtMjQuMSAwLTMzLjQtMjIuMS0yMi44IDEyLjItNTYuMiAzNC40LTMzLjUgMjcuMiAyNy45IDI3LjIgNzIuNCAwIDEwMC40LTIxLjggMjIuMy01Ni45LTEwLjQtMzQuNC0zMy41em04Ni0xMTcuMWM1NC40IDU1LjkgNTQuNCAxNDQuOCAwIDIwMC44LTIxLjggMjIuNC01Ny0xMC4zLTM0LjQtMzMuNSAzNi4yLTM3LjIgMzYuMy05Ni41IDAtMTMzLjgtMjIuMS0yMi44IDEyLjMtNTYuMyAzNC40LTMzLjV6TTM4NCAxMjEuOXY2LjFIMjU2VjBoNi4xYzYuNCAwIDEyLjUgMi41IDE3IDdsOTcuOSA5OGM0LjUgNC41IDcgMTAuNiA3IDE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxMjEuOTQxVjEyOEgyNTZWMGg2LjA1OWM2LjM2NSAwIDEyLjQ3IDIuNTI5IDE2Ljk3MSA3LjAyOWw5Ny45NDEgOTcuOTQxQTI0LjAwNSAyNC4wMDUgMCAwIDEgMzg0IDEyMS45NDF6TTI0OCAxNjBjLTEzLjIgMC0yNC0xMC44LTI0LTI0VjBIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHY0NjRjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMzNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTYwSDI0OHpNMTIzLjIwNiA0MDAuNTA1YTUuNCA1LjQgMCAwIDEtNy42MzMuMjQ2bC02NC44NjYtNjAuODEyYTUuNCA1LjQgMCAwIDEgMC03Ljg3OWw2NC44NjYtNjAuODEyYTUuNCA1LjQgMCAwIDEgNy42MzMuMjQ2bDE5LjU3OSAyMC44ODVhNS40IDUuNCAwIDAgMS0uMzcyIDcuNzQ3TDEwMS42NSAzMzZsNDAuNzYzIDM1Ljg3NGE1LjQgNS40IDAgMCAxIC4zNzIgNy43NDdsLTE5LjU3OSAyMC44ODR6bTUxLjI5NSA1MC40NzlsLTI3LjQ1My03Ljk3YTUuNDAyIDUuNDAyIDAgMCAxLTMuNjgxLTYuNjkybDYxLjQ0LTIxMS42MjZhNS40MDIgNS40MDIgMCAwIDEgNi42OTItMy42ODFsMjcuNDUyIDcuOTdhNS40IDUuNCAwIDAgMSAzLjY4IDYuNjkybC02MS40NCAyMTEuNjI2YTUuMzk3IDUuMzk3IDAgMCAxLTYuNjkgMy42ODF6bTE2MC43OTItMTExLjA0NWwtNjQuODY2IDYwLjgxMmE1LjQgNS40IDAgMCAxLTcuNjMzLS4yNDZsLTE5LjU4LTIwLjg4NWE1LjQgNS40IDAgMCAxIC4zNzItNy43NDdMMjg0LjM1IDMzNmwtNDAuNzYzLTM1Ljg3NGE1LjQgNS40IDAgMCAxLS4zNzItNy43NDdsMTkuNTgtMjAuODg1YTUuNCA1LjQgMCAwIDEgNy42MzMtLjI0Nmw2NC44NjYgNjAuODEyYTUuNCA1LjQgMCAwIDEtLjAwMSA3Ljg3OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUNvbnRyYWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHpNNjQgNzJjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04Vjcyem0wIDY0YzAtNC40MiAzLjU4LTggOC04aDgwYzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZ6bTE5Mi44MSAyNDhIMzA0YzguODQgMCAxNiA3LjE2IDE2IDE2cy03LjE2IDE2LTE2IDE2aC00Ny4xOWMtMTYuNDUgMC0zMS4yNy05LjE0LTM4LjY0LTIzLjg2LTIuOTUtNS45Mi04LjA5LTYuNTItMTAuMTctNi41MnMtNy4yMi41OS0xMC4wMiA2LjE5bC03LjY3IDE1LjM0YTE1Ljk4NiAxNS45ODYgMCAwIDEtMTQuMzEgOC44NGMtLjM4IDAtLjc1LS4wMi0xLjE0LS4wNS02LjQ1LS40NS0xMi00Ljc1LTE0LjAzLTEwLjg5TDE0NCAzNTQuNTlsLTEwLjYxIDMxLjg4Yy01Ljg5IDE3LjY2LTIyLjM4IDI5LjUzLTQxIDI5LjUzSDgwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2aDEyLjM5YzQuODMgMCA5LjExLTMuMDggMTAuNjQtNy42NmwxOC4xOS01NC42NGMzLjMtOS44MSAxMi40NC0xNi40MSAyMi43OC0xNi40MXMxOS40OCA2LjU5IDIyLjc3IDE2LjQxbDEzLjg4IDQxLjY0YzE5Ljc3LTE2LjE5IDU0LjA1LTkuNyA2NiAxNC4xNiAyLjAyIDQuMDYgNS45NiA2LjUgMTAuMTYgNi41ek0zNzcgMTA1TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVDc3YgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em0tOTYgMTQ0YzAgNC40Mi0zLjU4IDgtOCA4aC04Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg4YzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4aC04Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4di0zMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDhjNC40MiAwIDggMy41OCA4IDh2MTZ6bTQ0LjI3IDEwNEgxNjBjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxMi4yN2M1Ljk1IDAgMTAuNDEtMy41IDEwLjQxLTYuNjIgMC0xLjMtLjc1LTIuNjYtMi4xMi0zLjg0bC0yMS44OS0xOC43N2MtOC40Ny03LjIyLTEzLjMzLTE3LjQ4LTEzLjMzLTI4LjE0IDAtMjEuMyAxOS4wMi0zOC42MiA0Mi40MS0zOC42MkgyMDBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTEyLjI3Yy01Ljk1IDAtMTAuNDEgMy41LTEwLjQxIDYuNjIgMCAxLjMuNzUgMi42NiAyLjEyIDMuODRsMjEuODkgMTguNzdjOC40NyA3LjIyIDEzLjMzIDE3LjQ4IDEzLjMzIDI4LjE0LjAxIDIxLjI5LTE5IDM4LjYyLTQyLjM5IDM4LjYyek0yNTYgMjY0djIwLjhjMCAyMC4yNyA1LjcgNDAuMTcgMTYgNTYuODggMTAuMy0xNi43IDE2LTM2LjYxIDE2LTU2Ljg4VjI2NGMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHYyMC44YzAgMzUuNDgtMTIuODggNjguODktMzYuMjggOTQuMDktMy4wMiAzLjI1LTcuMjcgNS4xMS0xMS43MiA1LjExcy04LjctMS44Ni0xMS43Mi01LjExYy0yMy40LTI1LjItMzYuMjgtNTguNjEtMzYuMjgtOTQuMDlWMjY0YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4em0xMjEtMTU5TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTM2VjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTc2LjQ1IDIxMS4zNmwtOTYuNDIgOTUuN2MtNi42NSA2LjYxLTE3LjM5IDYuNjEtMjQuMDQgMGwtOTYuNDItOTUuN0M3My40MiAzMzcuMjkgODAuNTQgMzIwIDk0LjgyIDMyMEgxNjB2LTgwYzAtOC44NCA3LjE2LTE2IDE2LTE2aDMyYzguODQgMCAxNiA3LjE2IDE2IDE2djgwaDY1LjE4YzE0LjI4IDAgMjEuNCAxNy4yOSAxMS4yNyAyNy4zNnpNMzc3IDEwNUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlRXhjZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em02MC4xIDEwNi41TDIyNCAzMzZsNjAuMSA5My41YzUuMSA4LS42IDE4LjUtMTAuMSAxOC41aC0zNC45Yy00LjQgMC04LjUtMi40LTEwLjYtNi4zQzIwOC45IDQwNS41IDE5MiAzNzMgMTkyIDM3M2MtNi40IDE0LjgtMTAgMjAtMzYuNiA2OC44LTIuMSAzLjktNi4xIDYuMy0xMC41IDYuM0gxMTBjLTkuNSAwLTE1LjItMTAuNS0xMC4xLTE4LjVsNjAuMy05My41LTYwLjMtOTMuNWMtNS4yLTggLjYtMTguNSAxMC4xLTE4LjVoMzQuOGM0LjQgMCA4LjUgMi40IDEwLjYgNi4zIDI2LjEgNDguOCAyMCAzMy42IDM2LjYgNjguNSAwIDAgNi4xLTExLjcgMzYuNi02OC41IDIuMS0zLjkgNi4yLTYuMyAxMC42LTYuM0gyNzRjOS41LS4xIDE1LjIgMTAuNCAxMC4xIDE4LjR6TTM4NCAxMjEuOXY2LjFIMjU2VjBoNi4xYzYuNCAwIDEyLjUgMi41IDE3IDdsOTcuOSA5OGM0LjUgNC41IDcgMTAuNiA3IDE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVFeHBvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDEyMS45YzAtNi4zLTIuNS0xMi40LTctMTYuOUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4ek01NzEgMzA4bC05NS43LTk2LjRjLTEwLjEtMTAuMS0yNy40LTMtMjcuNCAxMS4zVjI4OGgtNjR2NjRoNjR2NjUuMmMwIDE0LjMgMTcuMyAyMS40IDI3LjQgMTEuM0w1NzEgMzMyYzYuNi02LjYgNi42LTE3LjQgMC0yNHptLTM3OSAyOHYtMzJjMC04LjggNy4yLTE2IDE2LTE2aDE3NlYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNFYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjM1MkgyMDhjLTguOCAwLTE2LTcuMi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUltYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxMjEuOTQxVjEyOEgyNTZWMGg2LjA1OWEyNCAyNCAwIDAgMSAxNi45NyA3LjAyOWw5Ny45NDEgOTcuOTQxYTI0LjAwMiAyNC4wMDIgMCAwIDEgNy4wMyAxNi45NzF6TTI0OCAxNjBjLTEzLjIgMC0yNC0xMC44LTI0LTI0VjBIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHY0NjRjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMzNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTYwSDI0OHptLTEzNS40NTUgMTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHMtMjEuNDkgNDgtNDggNDgtNDgtMjEuNDktNDgtNDggMjEuNDkxLTQ4IDQ4LTQ4em0yMDggMjQwaC0yNTZsLjQ4NS00OC40ODVMMTA0LjU0NSAzMjhjNC42ODYtNC42ODYgMTEuNzk5LTQuMjAxIDE2LjQ4NS40ODVMMTYwLjU0NSAzNjggMjY0LjA2IDI2NC40ODVjNC42ODYtNC42ODYgMTIuMjg0LTQuNjg2IDE2Ljk3MSAwTDMyMC41NDUgMzA0djExMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUltcG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAyODhjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMTEydi02NHptNDg5LTE4M0w0MDcuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDM4NHYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45em0tMTUzIDMxVjBIMTUyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNjRoMTI4di02NS4yYzAtMTQuMyAxNy4zLTIxLjQgMjcuNC0xMS4zTDM3OSAzMDhjNi42IDYuNyA2LjYgMTcuNCAwIDI0bC05NS43IDk2LjRjLTEwLjEgMTAuMS0yNy40IDMtMjcuNC0xMS4zVjM1MkgxMjh2MTM2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMzc2Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUludm9pY2VEb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc3IDEwNUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45em0tMTUzIDMxVjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6TTY0IDcyYzAtNC40MiAzLjU4LTggOC04aDgwYzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOFY3MnptMCA4MHYtMTZjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04em0xNDQgMjYzLjg4VjQ0MGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di0yNC4yOWMtMTEuMjktLjU4LTIyLjI3LTQuNTItMzEuMzctMTEuMzUtMy45LTIuOTMtNC4xLTguNzctLjU3LTEyLjE0bDExLjc1LTExLjIxYzIuNzctMi42NCA2Ljg5LTIuNzYgMTAuMTMtLjczIDMuODcgMi40MiA4LjI2IDMuNzIgMTIuODIgMy43MmgyOC4xMWM2LjUgMCAxMS44LTUuOTIgMTEuOC0xMy4xOSAwLTUuOTUtMy42MS0xMS4xOS04Ljc3LTEyLjczbC00NS0xMy41Yy0xOC41OS01LjU4LTMxLjU4LTIzLjQyLTMxLjU4LTQzLjM5IDAtMjQuNTIgMTkuMDUtNDQuNDQgNDIuNjctNDUuMDdWMjMyYzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djI0LjI5YzExLjI5LjU4IDIyLjI3IDQuNTEgMzEuMzcgMTEuMzUgMy45IDIuOTMgNC4xIDguNzcuNTcgMTIuMTRsLTExLjc1IDExLjIxYy0yLjc3IDIuNjQtNi44OSAyLjc2LTEwLjEzLjczLTMuODctMi40My04LjI2LTMuNzItMTIuODItMy43MmgtMjguMTFjLTYuNSAwLTExLjggNS45Mi0xMS44IDEzLjE5IDAgNS45NSAzLjYxIDExLjE5IDguNzcgMTIuNzNsNDUgMTMuNWMxOC41OSA1LjU4IDMxLjU4IDIzLjQyIDMxLjU4IDQzLjM5IDAgMjQuNTMtMTkuMDUgNDQuNDQtNDIuNjcgNDUuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVJbnZvaWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAyNTZIOTZ2NjRoMTkydi02NHptODktMTUxTDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6bS0xNTMgMzFWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHpNNjQgNzJjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04Vjcyem0wIDY0YzAtNC40MiAzLjU4LTggOC04aDgwYzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZ6bTI1NiAzMDRjMCA0LjQyLTMuNTggOC04IDhoLTgwYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZ6bTAtMjAwdjk2YzAgOC44NC03LjE2IDE2LTE2IDE2SDgwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtOTZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMjI0YzguODQgMCAxNiA3LjE2IDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlTWVkaWNhbEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMTM2VjBIODhDNzQuNyAwIDY0IDEwLjcgNjQgMjR2MjMySDhjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDhoMTQwLjljMyAwIDUuOCAxLjcgNy4yIDQuNGwxOS45IDM5LjggNTYuOC0xMTMuN2MyLjktNS45IDExLjQtNS45IDE0LjMgMGwzNC43IDY5LjVIMzUyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2aC04OS45TDI0MCAyNzUuOGwtNTYuOCAxMTMuN2MtMi45IDUuOS0xMS40IDUuOS0xNC4zIDBMMTM0LjEgMzIwSDY0djE2OGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDMxMmMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTE1My0zMUwzNDMuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDMyMHYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzcgMTA1TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6bS0xNTMgMzFWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptNjQgMTYwdjQ4YzAgNC40LTMuNiA4LTggOGgtNTZ2NTZjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di01NmgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDhjMC00LjQgMy42LTggOC04aDU2di01NmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djU2aDU2YzQuNCAwIDggMy42IDggOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVBkZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODEuOSAyNTYuMWMtNS0xNi00LjktNDYuOS0yLTQ2LjkgOC40IDAgNy42IDM2LjkgMiA0Ni45em0tMS43IDQ3LjJjLTcuNyAyMC4yLTE3LjMgNDMuMy0yOC40IDYyLjcgMTguMy03IDM5LTE3LjIgNjIuOS0yMS45LTEyLjctOS42LTI0LjktMjMuNC0zNC41LTQwLjh6TTg2LjEgNDI4LjFjMCAuOCAxMy4yLTUuNCAzNC45LTQwLjItNi43IDYuMy0yOS4xIDI0LjUtMzQuOSA0MC4yek0yNDggMTYwaDEzNnYzMjhjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjI0QzAgMTAuNyAxMC43IDAgMjQgMGgyMDB2MTM2YzAgMTMuMiAxMC44IDI0IDI0IDI0em0tOCAxNzEuOGMtMjAtMTIuMi0zMy4zLTI5LTQyLjctNTMuOCA0LjUtMTguNSAxMS42LTQ2LjYgNi4yLTY0LjItNC43LTI5LjQtNDIuNC0yNi41LTQ3LjgtNi44LTUgMTguMy0uNCA0NC4xIDguMSA3Ny0xMS42IDI3LjYtMjguNyA2NC42LTQwLjggODUuOC0uMSAwLS4xLjEtLjIuMS0yNy4xIDEzLjktNzMuNiA0NC41LTU0LjUgNjggNS42IDYuOSAxNiAxMCAyMS41IDEwIDE3LjkgMCAzNS43LTE4IDYxLjEtNjEuOCAyNS44LTguNSA1NC4xLTE5LjEgNzktMjMuMiAyMS43IDExLjggNDcuMSAxOS41IDY0IDE5LjUgMjkuMiAwIDMxLjItMzIgMTkuNy00My40LTEzLjktMTMuNi01NC4zLTkuNy03My42LTcuMnpNMzc3IDEwNUwyNzkgN2MtNC41LTQuNS0xMC42LTctMTctN2gtNnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45em0tNzQuMSAyNTUuM2M0LjEtMi43LTIuNS0xMS45LTQyLjgtOSAzNy4xIDE1LjggNDIuOCA5IDQyLjggOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVBvd2VycG9pbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkzLjcgMjcxLjJjOC44IDAgMTUuNSAyLjcgMjAuMyA4LjEgOS42IDEwLjkgOS44IDMyLjctLjIgNDQuMS00LjkgNS42LTExLjkgOC41LTIxLjEgOC41aC0yNi45di02MC43aDI3Ljl6TTM3NyAxMDVMMjc5IDdjLTQuNS00LjUtMTAuNi03LTE3LTdoLTZ2MTI4aDEyOHYtNi4xYzAtNi4zLTIuNS0xMi40LTctMTYuOXptLTE1MyAzMVYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em01MyAxNjUuMmMwIDkwLjMtODguOCA3Ny42LTExMS4xIDc3LjZWNDM2YzAgNi42LTUuNCAxMi0xMiAxMmgtMzAuOGMtNi42IDAtMTItNS40LTEyLTEyVjIzNi4yYzAtNi42IDUuNC0xMiAxMi0xMmg4MWM0NC41IDAgNzIuOSAzMi44IDcyLjkgNzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVQcmVzY3JpcHRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em02OC41MyAxNzkuNDhsMTEuMzEgMTEuMzFjNi4yNSA2LjI1IDYuMjUgMTYuMzggMCAyMi42M2wtMjkuOSAyOS45TDMwNCA0MDkuMzhjNi4yNSA2LjI1IDYuMjUgMTYuMzggMCAyMi42M2wtMTEuMzEgMTEuMzFjLTYuMjUgNi4yNS0xNi4zOCA2LjI1LTIyLjYzIDBMMjQwIDQxMy4yNWwtMzAuMDYgMzAuMDZjLTYuMjUgNi4yNS0xNi4zOCA2LjI1LTIyLjYzIDBMMTc2IDQzMmMtNi4yNS02LjI1LTYuMjUtMTYuMzggMC0yMi42M2wzMC4wNi0zMC4wNkwxNDYuNzQgMzIwSDEyOHY0OGMwIDguODQtNy4xNiAxNi0xNiAxNkg5NmMtOC44NCAwLTE2LTcuMTYtMTYtMTZWMjA4YzAtOC44NCA3LjE2LTE2IDE2LTE2aDgwYzM1LjM1IDAgNjQgMjguNjUgNjQgNjQgMCAyNC4yMi0xMy42MiA0NS4wNS0zMy40NiA1NS45MkwyNDAgMzQ1LjM4bDI5LjktMjkuOWM2LjI1LTYuMjUgMTYuMzgtNi4yNSAyMi42MyAwek0xNzYgMjcyaC00OHYtMzJoNDhjOC44MiAwIDE2IDcuMTggMTYgMTZzLTcuMTggMTYtMTYgMTZ6bTIwOC0xNTAuMXY2LjFIMjU2VjBoNi4xYzYuNCAwIDEyLjUgMi41IDE3IDdsOTcuOSA5OGM0LjUgNC41IDcgMTAuNiA3IDE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVTaWduYXR1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE4LjE3IDQyNC4xNGMtMi45NS01LjkyLTguMDktNi41Mi0xMC4xNy02LjUycy03LjIyLjU5LTEwLjAyIDYuMTlsLTcuNjcgMTUuMzRjLTYuMzcgMTIuNzgtMjUuMDMgMTEuMzctMjkuNDgtMi4wOUwxNDQgMzg2LjU5bC0xMC42MSAzMS44OGMtNS44OSAxNy42Ni0yMi4zOCAyOS41My00MSAyOS41M0g4MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNmgxMi4zOWM0LjgzIDAgOS4xMS0zLjA4IDEwLjY0LTcuNjZsMTguMTktNTQuNjRjMy4zLTkuODEgMTIuNDQtMTYuNDEgMjIuNzgtMTYuNDFzMTkuNDggNi41OSAyMi43NyAxNi40MWwxMy44OCA0MS42NGMxOS43NS0xNi4xOSA1NC4wNi05LjcgNjYgMTQuMTYgMS44OSAzLjc4IDUuNDkgNS45NSA5LjM2IDYuMjZ2LTgyLjEybDEyOC0xMjcuMDlWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjRWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtNDBsLTEyOC0uMTFjLTE2LjEyLS4zMS0zMC41OC05LjI4LTM3LjgzLTIzLjc1ek0zODQgMTIxLjljMC02LjMtMi41LTEyLjQtNy0xNi45TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMXptLTk2IDIyNS4wNlY0MTZoNjguOTlsMTYxLjY4LTE2Mi43OC02Ny44OC02Ny44OEwyODggMzQ2Ljk2em0yODAuNTQtMTc5LjYzbC0zMS44Ny0zMS44N2MtOS45NC05Ljk0LTI2LjA3LTkuOTQtMzYuMDEgMGwtMjcuMjUgMjcuMjUgNjcuODggNjcuODggMjcuMjUtMjcuMjVjOS45NS05Ljk0IDkuOTUtMjYuMDcgMC0zNi4wMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTM2VjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTY1LjE4IDIxNi4wMUgyMjR2ODBjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTMyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtODBIOTQuODJjLTE0LjI4IDAtMjEuNDEtMTcuMjktMTEuMjctMjcuMzZsOTYuNDItOTUuN2M2LjY1LTYuNjEgMTcuMzktNi42MSAyNC4wNCAwbDk2LjQyIDk1LjdjMTAuMTUgMTAuMDcgMy4wMyAyNy4zNi0xMS4yNSAyNy4zNnpNMzc3IDEwNUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDEyMS45NDFWMTI4SDI1NlYwaDYuMDU5YzYuMzY1IDAgMTIuNDcgMi41MjkgMTYuOTcxIDcuMDI5bDk3Ljk0MSA5Ny45NDFBMjQuMDA1IDI0LjAwNSAwIDAgMSAzODQgMTIxLjk0MXpNMjI0IDEzNlYwSDI0QzEwLjc0NSAwIDAgMTAuNzQ1IDAgMjR2NDY0YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em05NiAxNDQuMDE2djExMS45NjNjMCAyMS40NDUtMjUuOTQzIDMxLjk5OC00MC45NzEgMTYuOTcxTDIyNCAzNTMuOTQxVjM5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIODhjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNFYyODBjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDExMmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MzguMDU5bDU1LjAyOS01NS4wMTNjMTUuMDExLTE1LjAxIDQwLjk3MS00LjQ5MSA0MC45NzEgMTYuOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVXb3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptNTcuMSAxMjBIMzA1YzcuNyAwIDEzLjQgNy4xIDExLjcgMTQuN2wtMzggMTY4Yy0xLjIgNS41LTYuMSA5LjMtMTEuNyA5LjNoLTM4Yy01LjUgMC0xMC4zLTMuOC0xMS42LTkuMS0yNS44LTEwMy41LTIwLjgtODEuMi0yNS42LTExMC41aC0uNWMtMS4xIDE0LjMtMi40IDE3LjQtMjUuNiAxMTAuNS0xLjMgNS4zLTYuMSA5LjEtMTEuNiA5LjFIMTE3Yy01LjYgMC0xMC41LTMuOS0xMS43LTkuNGwtMzcuOC0xNjhjLTEuNy03LjUgNC0xNC42IDExLjctMTQuNmgyNC41YzUuNyAwIDEwLjcgNCAxMS44IDkuNyAxNS42IDc4IDIwLjEgMTA5LjUgMjEgMTIyLjIgMS42LTEwLjIgNy4zLTMyLjcgMjkuNC0xMjIuNyAxLjMtNS40IDYuMS05LjEgMTEuNy05LjFoMjkuMWM1LjYgMCAxMC40IDMuOCAxMS43IDkuMiAyNCAxMDAuNCAyOC44IDEyNCAyOS42IDEyOS40LS4yLTExLjItMi42LTE3LjggMjEuNi0xMjkuMiAxLTUuNiA1LjktOS41IDExLjUtOS41ek0zODQgMTIxLjl2Ni4xSDI1NlYwaDYuMWM2LjQgMCAxMi41IDIuNSAxNyA3bDk3LjkgOThjNC41IDQuNSA3IDEwLjYgNyAxNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptMTYwLTE0LjF2Ni4xSDI1NlYwaDYuMWM2LjQgMCAxMi41IDIuNSAxNyA3bDk3LjkgOThjNC41IDQuNSA3IDEwLjYgNyAxNi45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxsRHJpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMzIwcy02NCA5Mi42NS02NCAxMjhjMCAzNS4zNSAyOC42NiA2NCA2NCA2NHM2NC0yOC42NSA2NC02NC02NC0xMjgtNjQtMTI4em0tOS4zNy0xMDIuOTRMMjk0Ljk0IDkuMzdDMjg4LjY5IDMuMTIgMjgwLjUgMCAyNzIuMzEgMHMtMTYuMzggMy4xMi0yMi42MiA5LjM3bC04MS41OCA4MS41OEw4MS45MyA0Ljc2Yy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MiAwTDM2LjY5IDI3LjM4Yy02LjI0IDYuMjUtNi4yNCAxNi4zOCAwIDIyLjYybDg2LjE5IDg2LjE4LTk0Ljc2IDk0Ljc2Yy0zNy40OSAzNy40OC0zNy40OSA5OC4yNiAwIDEzNS43NWwxMTcuMTkgMTE3LjE5YzE4Ljc0IDE4Ljc0IDQzLjMxIDI4LjEyIDY3Ljg3IDI4LjEyIDI0LjU3IDAgNDkuMTMtOS4zNyA2Ny44Ny0yOC4xMmwyMjEuNTctMjIxLjU3YzEyLjUtMTIuNSAxMi41LTMyLjc1LjAxLTQ1LjI1em0tMTE2LjIyIDcwLjk3SDY1LjkzYzEuMzYtMy44NCAzLjU3LTcuOTggNy40My0xMS44M2wxMy4xNS0xMy4xNSA4MS42MS04MS42MSA1OC42IDU4LjZjMTIuNDkgMTIuNDkgMzIuNzUgMTIuNDkgNDUuMjQgMHMxMi40OS0zMi43NSAwLTQ1LjI0bC01OC42LTU4LjYgNTguOTUtNTguOTUgMTYyLjQ0IDE2Mi40NC00OC4zNCA0OC4zNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuNjMgMjE3LjA2TDI5NC45NCA5LjM3QzI4OC42OSAzLjEyIDI4MC41IDAgMjcyLjMxIDBzLTE2LjM4IDMuMTItMjIuNjIgOS4zN2wtODEuNTggODEuNThMODEuOTMgNC43N2MtNi4yNC02LjI1LTE2LjM4LTYuMjUtMjIuNjIgMEwzNi42OSAyNy4zOGMtNi4yNCA2LjI1LTYuMjQgMTYuMzggMCAyMi42M2w4Ni4xOSA4Ni4xOC05NC43NiA5NC43NmMtMzcuNDkgMzcuNDktMzcuNDkgOTguMjYgMCAxMzUuNzVsMTE3LjE5IDExNy4xOWMxOC43NSAxOC43NCA0My4zMSAyOC4xMiA2Ny44NyAyOC4xMiAyNC41NyAwIDQ5LjEzLTkuMzcgNjcuODgtMjguMTJsMjIxLjU3LTIyMS41N2MxMi40OS0xMi41IDEyLjQ5LTMyLjc2IDAtNDUuMjZ6bS0xMTYuMjIgNzAuOTdINjUuOTNjMS4zNi0zLjg0IDMuNTctNy45OCA3LjQzLTExLjgzbDEzLjE1LTEzLjE1IDgxLjYxLTgxLjYxIDU4LjYxIDU4LjZjMTIuNDkgMTIuNDkgMzIuNzUgMTIuNDkgNDUuMjQgMCAxMi40OS0xMi40OSAxMi40OS0zMi43NSAwLTQ1LjI0bC01OC42MS01OC42IDU4Ljk1LTU4Ljk1IDE2Mi40NSAxNjIuNDQtNDguMzUgNDguMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbG0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4IDY0aC04djIwYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMlY2NEg5NnYyMGMwIDYuNi01LjQgMTItMTIgMTJINDRjLTYuNiAwLTEyLTUuNC0xMi0xMlY2NGgtOEMxMC43IDY0IDAgNzQuNyAwIDg4djMzNmMwIDEzLjMgMTAuNyAyNCAyNCAyNGg4di0yMGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjIwaDMyMHYtMjBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnYyMGg4YzEzLjMgMCAyNC0xMC43IDI0LTI0Vjg4YzAtMTMuMy0xMC43LTI0LTI0LTI0ek05NiAzNzJjMCA2LjYtNS40IDEyLTEyIDEySDQ0Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtOTZjMCA2LjYtNS40IDEyLTEyIDEySDQ0Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtOTZjMCA2LjYtNS40IDEyLTEyIDEySDQ0Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTI3MiAyMDhjMCA2LjYtNS40IDEyLTEyIDEySDE1NmMtNi42IDAtMTItNS40LTEyLTEydi05NmMwLTYuNiA1LjQtMTIgMTItMTJoMjAwYzYuNiAwIDEyIDUuNCAxMiAxMnY5NnptMC0xNjhjMCA2LjYtNS40IDEyLTEyIDEySDE1NmMtNi42IDAtMTItNS40LTEyLTEydi05NmMwLTYuNiA1LjQtMTIgMTItMTJoMjAwYzYuNiAwIDEyIDUuNCAxMiAxMnY5NnptMTEyIDE1MmMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtOTZjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwem0wLTk2YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4Ny45NzYgMEgyNC4wMjhDMi43MSAwLTguMDQ3IDI1Ljg2NiA3LjA1OCA0MC45NzFMMTkyIDIyNS45NDFWNDMyYzAgNy44MzEgMy44MjEgMTUuMTcgMTAuMjM3IDE5LjY2Mmw4MCA1NS45OEMyOTguMDIgNTE4LjY5IDMyMCA1MDcuNDkzIDMyMCA0ODcuOThWMjI1Ljk0MWwxODQuOTQ3LTE4NC45N0M1MjAuMDIxIDI1Ljg5NiA1MDkuMzM4IDAgNDg3Ljk3NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaW5nZXJwcmludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYuMTIgMjQ1Ljk2Yy0xMy4yNSAwLTI0IDEwLjc0LTI0IDI0IDEuMTQgNzIuMjUtOC4xNCAxNDEuOS0yNy43IDIxMS41NS0yLjczIDkuNzIgMi4xNSAzMC40OSAyMy4xMiAzMC40OSAxMC40OCAwIDIwLjExLTYuOTIgMjMuMDktMTcuNTIgMTMuNTMtNDcuOTEgMzEuMDQtMTI1LjQxIDI5LjQ4LTIyNC41Mi4wMS0xMy4yNS0xMC43My0yNC0yMy45OS0yNHptLS44Ni04MS43M0MxOTQgMTY0LjE2IDE1MS4yNSAyMTEuMyAxNTIuMSAyNjUuMzJjLjc1IDQ3Ljk0LTMuNzUgOTUuOTEtMTMuMzcgMTQyLjU1LTIuNjkgMTIuOTggNS42NyAyNS42OSAxOC42NCAyOC4zNiAxMy4wNSAyLjY3IDI1LjY3LTUuNjYgMjguMzYtMTguNjQgMTAuMzQtNTAuMDkgMTUuMTctMTAxLjU4IDE0LjM3LTE1My4wMi0uNDEtMjUuOTUgMTkuOTItNTIuNDkgNTQuNDUtNTIuMzQgMzEuMzEuNDcgNTcuMTUgMjUuMzQgNTcuNjIgNTUuNDcuNzcgNDguMDUtMi44MSA5Ni4zMy0xMC42MSAxNDMuNTUtMi4xNyAxMy4wNiA2LjY5IDI1LjQyIDE5Ljc2IDI3LjU4IDE5Ljk3IDMuMzMgMjYuODEtMTUuMSAyNy41OC0xOS43NyA4LjI4LTUwLjAzIDEyLjA2LTEwMS4yMSAxMS4yNy0xNTIuMTEtLjg4LTU1LjgtNDcuOTQtMTAxLjg4LTEwNC45MS0xMDIuNzJ6bS0xMTAuNjktMTkuNzhjLTEwLjMtOC4zNC0yNS4zNy02LjgtMzMuNzYgMy40OC0yNS42MiAzMS41LTM5LjM5IDcxLjI4LTM4Ljc1IDExMiAuNTkgMzcuNTgtMi40NyA3NS4yNy05LjExIDExMi4wNS0yLjM0IDEzLjA1IDYuMzEgMjUuNTMgMTkuMzYgMjcuODkgMjAuMTEgMy41IDI3LjA3LTE0LjgxIDI3Ljg5LTE5LjM2IDcuMTktMzkuODQgMTAuNS04MC42NiA5Ljg2LTEyMS4zMy0uNDctMjkuODggOS4yLTU3Ljg4IDI4LTgwLjk3IDguMzUtMTAuMjggNi43OS0yNS4zOS0zLjQ5LTMzLjc2em0xMDkuNDctNjIuMzNjLTE1LjQxLS40MS0zMC44NyAxLjQ0LTQ1Ljc4IDQuOTctMTIuODkgMy4wNi0yMC44NyAxNS45OC0xNy44MyAyOC44OSAzLjA2IDEyLjg5IDE2IDIwLjgzIDI4Ljg5IDE3LjgzIDExLjA1LTIuNjEgMjIuNDctMy43NyAzNC0zLjY5IDc1LjQzIDEuMTMgMTM3LjczIDYxLjUgMTM4Ljg4IDEzNC41OC41OSAzNy44OC0xLjI4IDc2LjExLTUuNTggMTEzLjYzLTEuNSAxMy4xNyA3Ljk1IDI1LjA4IDIxLjExIDI2LjU4IDE2LjcyIDEuOTUgMjUuNTEtMTEuODggMjYuNTgtMjEuMTFhOTI5LjA2IDkyOS4wNiAwIDAgMCA1Ljg5LTExOS44NWMtMS41Ni05OC43NS04NS4wNy0xODAuMzMtMTg2LjE2LTE4MS44M3ptMjUyLjA3IDEyMS40NWMtMi44Ni0xMi45Mi0xNS41MS0yMS4yLTI4LjYxLTE4LjI3LTEyLjk0IDIuODYtMjEuMTIgMTUuNjYtMTguMjYgMjguNjEgNC43MSAyMS40MSA0LjkxIDM3LjQxIDQuNyA2MS42LS4xMSAxMy4yNyAxMC41NSAyNC4wOSAyMy44IDI0LjJoLjJjMTMuMTcgMCAyMy44OS0xMC42MSAyNC0yMy44LjE4LTIyLjE4LjQtNDQuMTEtNS44My03Mi4zNHptLTQwLjEyLTkwLjcyQzQxNy4yOSA0My40NiAzMzcuNiAxLjI5IDI1Mi44MS4wMiAxODMuMDItLjgyIDExOC40NyAyNC45MSA3MC40NiA3Mi45NCAyNC4wOSAxMTkuMzctLjkgMTgxLjA0LjE0IDI0Ni42NWwtLjEyIDIxLjQ3Yy0uMzkgMTMuMjUgMTAuMDMgMjQuMzEgMjMuMjggMjQuNjkuMjMuMDIuNDguMDIuNzIuMDIgMTIuOTIgMCAyMy41OS0xMC4zIDIzLjk3LTIzLjNsLjE2LTIzLjY0Yy0uODMtNTIuNSAxOS4xNi0xMDEuODYgNTYuMjgtMTM5IDM4Ljc2LTM4LjggOTEuMzQtNTkuNjcgMTQ3LjY4LTU4Ljg2IDY5LjQ1IDEuMDMgMTM0LjczIDM1LjU2IDE3NC42MiA5Mi4zOSA3LjYxIDEwLjg2IDIyLjU2IDEzLjQ1IDMzLjQyIDUuODYgMTAuODQtNy42MiAxMy40Ni0yMi41OSA1Ljg0LTMzLjQzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMy41NiA1MS4yYy0yMC44IDE5LjMtMzkuNTggMzkuNTktNTYuMjIgNTkuOTdDMjQwLjA4IDczLjYyIDIwNi4yOCAzNS41MyAxNjggMCA2OS43NCA5MS4xNyAwIDIwOS45NiAwIDI4MS42IDAgNDA4Ljg1IDEwMC4yOSA1MTIgMjI0IDUxMnMyMjQtMTAzLjE1IDIyNC0yMzAuNGMwLTUzLjI3LTUxLjk4LTE2My4xNC0xMjQuNDQtMjMwLjR6bS0xOS40NyAzNDAuNjVDMjgyLjQzIDQwNy4wMSAyNTUuNzIgNDE2IDIyNi44NiA0MTYgMTU0LjcxIDQxNiA5NiAzNjguMjYgOTYgMjkwLjc1YzAtMzguNjEgMjQuMzEtNzIuNjMgNzIuNzktMTMwLjc1IDYuOTMgNy45OCA5OC44MyAxMjUuMzQgOTguODMgMTI1LjM0bDU4LjYzLTY2Ljg4YzQuMTQgNi44NSA3LjkxIDEzLjU1IDExLjI3IDE5Ljk3IDI3LjM1IDUyLjE5IDE1LjgxIDExOC45Ny0zMy40MyAxNTMuNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmVFeHRpbmd1aXNoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM0LjAyNyAyNi4zMjlsLTE2OCAyOEMyNTQuNjkzIDU2LjIxOCAyNTYgNjcuOCAyNTYgNzJoLTU4LjMzMkMyMDguMzUzIDM2LjEwOCAxODEuNDQ2IDAgMTQ0IDBjLTM5LjQzNSAwLTY2LjM2OCAzOS42NzYtNTIuMjI4IDc2LjIwMy01Mi4wMzkgMTMuMDUxLTc1LjM4MSA1NC4yMTMtOTAuMDQ5IDkwLjg4NC00LjkyMyAxMi4zMDcgMS4wNjMgMjYuMjc0IDEzLjM3IDMxLjE5NyAxMi4zMTcgNC45MjYgMjYuMjc5LTEuMDc1IDMxLjE5Ni0xMy4zN0M3NS4wNTggMTEyLjk5IDEwNi45NjQgMTIwIDE2OCAxMjB2MjcuMDc2Yy00MS41NDMgMTAuODYyLTcyIDQ5LjIzNS03MiA5NC4xMjlWNDg4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxNDRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0MGMwLTQ0LjczMS0zMC41OTYtODIuMzEyLTcyLTkyLjk3VjEyMGg0MGMwIDIuOTc0LTEuNzAzIDE1LjcxNiAxMC4wMjcgMTcuNjcxbDE2OCAyOEM0NDEuMzQyIDE2Ni44OSA0NDggMTYxLjI1IDQ0OCAxNTMuODM0VjM4LjE2NmMwLTcuNDE2LTYuNjU4LTEzLjA1Ni0xMy45NzMtMTEuODM3ek0xNDQgNzJjLTguODIyIDAtMTYtNy4xNzgtMTYtMTZzNy4xNzgtMTYgMTYtMTYgMTYgNy4xNzggMTYgMTYtNy4xNzggMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE2IDIzLjg2YzAtMjMuOC0zMC42NS0zMi43Ny00NC4xNS0xMy4wNEM0OCAxOTEuODUgMjI0IDIwMCAyMjQgMjg4YzAgMzUuNjMtMjkuMTEgNjQuNDYtNjQuODUgNjMuOTktMzUuMTctLjQ1LTYzLjE1LTI5Ljc3LTYzLjE1LTY0Ljk0di04NS41MWMwLTIxLjctMjYuNDctMzIuMjMtNDEuNDMtMTYuNUMyNy44IDIxMy4xNiAwIDI2MS4zMyAwIDMyMGMwIDEwNS44NyA4Ni4xMyAxOTIgMTkyIDE5MnMxOTItODYuMTMgMTkyLTE5MmMwLTE3MC4yOS0xNjgtMTkzLTE2OC0yOTYuMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcnN0QWlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4VjMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB6bTEyOCA0MDBoMzIwVjMySDEyOHY0NDh6bTY0LTI0OGMwLTQuNCAzLjYtOCA4LThoNTZ2LTU2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2NTZoNTZjNC40IDAgOCAzLjYgOCA4djQ4YzAgNC40LTMuNiA4LTggOGgtNTZ2NTZjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di01NmgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDh6TTUyOCAzMmgtNDh2NDQ4aDQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNy4xIDk2Yy04OS45NyAwLTE2OC41NCA1NC43Ny0yMTIuMjcgMTAxLjYzTDI3LjUgMTMxLjU4Yy0xMi4xMy05LjE4LTMwLjI0LjYtMjcuMTQgMTQuNjZMMjQuNTQgMjU2IC4zNSAzNjUuNzdjLTMuMSAxNC4wNiAxNS4wMSAyMy44MyAyNy4xNCAxNC42Nmw4Ny4zMy02Ni4wNUMxNTguNTUgMzYxLjIzIDIzNy4xMyA0MTYgMzI3LjEgNDE2IDQ2NC41NiA0MTYgNTc2IDI4OCA1NzYgMjU2UzQ2NC41NiA5NiAzMjcuMSA5NnptODcuNDMgMTg0Yy0xMy4yNSAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzUtMjQgMjQtMjQgMTMuMjYgMCAyNCAxMC43NCAyNCAyNCAwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXN0UmFpc2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NS45OCAxNjBWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNDYuOTNjNS4wMi0xLjc4IDEwLjM0LTIuOTMgMTUuOTctMi45M2g0OC4wM3ptMTI4IDk1Ljk5Yy0uMDEtMzUuMzQtMjguNjYtNjMuOTktNjMuOTktNjMuOTlIMjA3Ljg1Yy04Ljc4IDAtMTUuOSA3LjA3LTE1LjkgMTUuODV2LjU2YzAgMjYuMjcgMjEuMyA0Ny41OSA0Ny41NyA0Ny41OWgzNS4yNmM5LjY4IDAgMTMuMiAzLjU4IDEzLjIgOHYxNi4yYzAgNC4yOS0zLjU5IDcuNzgtNy44OCA4LTQ0LjUyIDIuMjgtNjQuMTYgMjQuNzEtOTYuMDUgNzIuNTVsLTYuMzEgOS40N2E3Ljk5NCA3Ljk5NCAwIDAgMS0xMS4wOSAyLjIybC0xMy4zMS04Ljg4YTcuOTk0IDcuOTk0IDAgMCAxLTIuMjItMTEuMDlsNi4zMS05LjQ3YzE1LjczLTIzLjYgMzAuMi00My4yNiA0Ny4zMS01OC4wOC0xNy4yNy01LjUxLTMxLjQtMTguMTItMzguODctMzQuNDUtNi41OSAzLjQxLTEzLjk2IDUuNTItMjEuODcgNS41MmgtMzJjLTEyLjM0IDAtMjMuNDktNC44MS0zMi0xMi40OEM3MS40OCAyNTEuMTkgNjAuMzMgMjU2IDQ4IDI1NkgxNmMtNS42NCAwLTEwLjk3LTEuMTUtMTYtMi45NXY3Ny45M2MwIDMzLjk1IDEzLjQ4IDY2LjUgMzcuNDkgOTAuNTFMNjMuOTkgNDQ4djY0aDI1NS45OHYtNjMuOTZsMzUuOTEtMzUuOTJBOTYuMDM1IDk2LjAzNSAwIDAgMCAzODQgMzQ0LjIxbC0uMDItODguMjJ6bS0zMi4wMS05MC4wOVY0OGMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djExMmgzMmMxMS4yOCAwIDIxLjk0IDIuMzEgMzIgNS45ek0xNiAyMjRoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiA2NCAwIDcxLjE2IDAgODB2MTI4YzAgOC44NCA3LjE2IDE2IDE2IDE2em05NS45OSAwaDMyYzguODQgMCAxNi03LjE2IDE2LTE2VjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTYwYzAgOC44NCA3LjE2IDE2IDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGFnQ2hlY2tlcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0My4yIDE4OS45VjI1OGMyNi4xIDUuOSA0OS4zIDE1LjYgNzMuNiAyMi4zdi02OC4yYy0yNi01LjgtNDkuNC0xNS41LTczLjYtMjIuMnptMjIzLjMtMTIzYy0zNC4zIDE1LjktNzYuNSAzMS45LTExNyAzMS45QzI5NiA5OC44IDI1MS43IDY0IDE4NC4zIDY0Yy0yNSAwLTQ3LjMgNC40LTY4IDEyIDIuOC03LjMgNC4xLTE1LjIgMy42LTIzLjZDMTE4LjEgMjQgOTQuOCAxLjIgNjYuMyAwIDM0LjMtMS4zIDggMjQuMyA4IDU2YzAgMTkgOS41IDM1LjggMjQgNDUuOVY0ODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTZjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTk0LjRjMjguMy0xMi4xIDYzLjYtMjIuMSAxMTQuNC0yMi4xIDUzLjYgMCA5Ny44IDM0LjggMTY1LjIgMzQuOCA0OC4yIDAgODYuNy0xNi4zIDEyMi41LTQwLjkgOC43LTYgMTMuOC0xNS44IDEzLjgtMjYuNFY5NS45Yy4xLTIzLjMtMjQuMi0zOC44LTQ1LjQtMjl6TTE2OS42IDMyNS41Yy0yNS44IDIuNy01MCA4LjItNzMuNiAxNi42di03MC41YzI2LjItOS4zIDQ3LjUtMTUgNzMuNi0xNy40ek00NjQgMTkxYy0yMy42IDkuOC00Ni4zIDE5LjUtNzMuNiAyMy45VjI4NmMyNC44LTMuNCA1MS40LTExLjggNzMuNi0yNnY3MC41Yy0yNS4xIDE2LjEtNDguNSAyNC43LTczLjYgMjcuMVYyODZjLTI3IDMuNy00Ny45IDEuNS03My42LTUuNnY2Ny40Yy0yMy45LTcuNC00Ny4zLTE2LjctNzMuNi0yMS4zVjI1OGMtMTkuNy00LjQtNDAuOC02LjgtNzMuNi0zLjh2LTcwYy0yMi40IDMuMS00NC42IDEwLjItNzMuNiAyMC45di03MC41YzMzLjItMTIuMiA1MC4xLTE5LjggNzMuNi0yMnY3MS42YzI3LTMuNyA0OC40LTEuMyA3My42IDUuN3YtNjcuNGMyMy43IDcuNCA0Ny4yIDE2LjcgNzMuNiAyMS4zdjY4LjRjMjMuNyA1LjMgNDcuNiA2LjkgNzMuNiAyLjdWMTQzYzI3LTQuOCA1Mi4zLTEzLjYgNzMuNi0yMi41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGFnVXNhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDBDMTQuMyAwIDAgMTQuMyAwIDMydjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyQzY0IDE0LjMgNDkuNyAwIDMyIDB6bTI2Ny45IDMwMy42Yy01Ny4yLTE1LjEtMTExLjctMjguOC0yMDMuOSAxMS4xVjM4NGMxODUuNy05Mi4yIDIyMS43IDUzLjMgMzk3LjUtMjMuMSAxMS40LTUgMTguNS0xNi41IDE4LjUtMjguOHYtMzZjLTQzLjYgMTcuMy04MC4yIDI0LjEtMTEyLjEgMjQuMS0zNy40LS4xLTY4LjktOC40LTEwMC0xNi42em0wLTk2Yy01Ny4yLTE1LjEtMTExLjctMjguOC0yMDMuOSAxMS4xdjYxLjVjOTQuOC0zNy42IDE1NC42LTIyLjcgMjEyLjEtNy42IDU3LjIgMTUuMSAxMTEuNyAyOC44IDIwMy45LTExLjFWMjAwYy00My42IDE3LjMtODAuMiAyNC4xLTExMi4xIDI0LjEtMzcuNCAwLTY4LjktOC4zLTEwMC0xNi41em05LjUtMTI1LjljNTEuOCAxNS42IDk3LjQgMjkgMjAyLjYtMjAuMVYzMC44YzAtMjUuMS0yNi44LTM4LjEtNDkuNC0yNi42QzI5MS4zIDkxLjUgMzA1LjQtNjIuMiA5NiAzMi40djE1MS45Yzk0LjgtMzcuNSAxNTQuNi0yMi43IDIxMi4xLTcuNiA1Ny4yIDE1IDExMS43IDI4LjcgMjAzLjktMTEuMVY5Ni43Yy01My42IDIzLjUtOTMuMyAzMS40LTEyNi4xIDMxLjRzLTU5LTcuOC04NS43LTE1LjljLTQtMS4yLTguMS0yLjQtMTIuMS0zLjVWNzUuNWM3LjIgMiAxNC4zIDQuMSAyMS4zIDYuMnpNMTYwIDEyOC4xYy04LjggMC0xNi03LjEtMTYtMTYgMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMSAxNiAxNi03LjIgMTYtMTYgMTZ6bTAtNTUuOGMtOC44IDAtMTYtNy4xLTE2LTE2IDAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjEgMTYgMTZjMCA4LjgtNy4yIDE2LTE2IDE2em02NCA0Ny45Yy04LjggMC0xNi03LjEtMTYtMTYgMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMSAxNiAxNmMwIDguOC03LjIgMTYtMTYgMTZ6bTAtNTUuOWMtOC44IDAtMTYtNy4xLTE2LTE2IDAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjEgMTYgMTZjMCA4LjgtNy4yIDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0OS41NjUgOTguNzgzQzI5NS45NzggOTguNzgzIDI1MS43MjEgNjQgMTg0LjM0OCA2NGMtMjQuOTU1IDAtNDcuMzA5IDQuMzg0LTY4LjA0NSAxMi4wMTNhNTUuOTQ3IDU1Ljk0NyAwIDAgMCAzLjU4Ni0yMy41NjJDMTE4LjExNyAyNC4wMTUgOTQuODA2IDEuMjA2IDY2LjMzOC4wNDggMzQuMzQ1LTEuMjU0IDggMjQuMjk2IDggNTZjMCAxOS4wMjYgOS40OTcgMzUuODI1IDI0IDQ1Ljk0NVY0ODhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDE2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtOTQuNGMyOC4zMTEtMTIuMDY0IDYzLjU4Mi0yMi4xMjIgMTE0LjQzNS0yMi4xMjIgNTMuNTg4IDAgOTcuODQ0IDM0Ljc4MyAxNjUuMjE3IDM0Ljc4MyA0OC4xNjkgMCA4Ni42NjctMTYuMjk0IDEyMi41MDUtNDAuODU4QzUwNi44NCAzNTkuNDUyIDUxMiAzNDkuNTcxIDUxMiAzMzkuMDQ1di0yNDMuMWMwLTIzLjM5My0yNC4yNjktMzguODctNDUuNDg1LTI5LjAxNi0zNC4zMzggMTUuOTQ4LTc2LjQ1NCAzMS44NTQtMTE2Ljk1IDMxLjg1NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmxhc2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM3LjIgNDAzLjVMMzIwIDIxNVY2NGg4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0SDEyMGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoOHYxNTFMMTAuOCA0MDMuNUMtMTguNSA0NTAuNiAxNS4zIDUxMiA3MC45IDUxMmgzMDYuMmM1NS43IDAgODkuNC02MS41IDYwLjEtMTA4LjV6TTEzNy45IDMyMGw0OC4yLTc3LjZjMy43LTUuMiA1LjgtMTEuNiA1LjgtMTguNFY2NGg2NHYxNjBjMCA2LjkgMi4yIDEzLjIgNS44IDE4LjRsNDguMiA3Ny42aC0xNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsdXNoZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ0IDIwMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6bS0xOTIgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTgwIDIyNGMwLTM5LjggMzIuMi03MiA3Mi03MnM3MiAzMi4yIDcyIDcyLTMyLjIgNzItNzIgNzItNzItMzIuMi03Mi03MnptMjMyIDE3NkgxODRjLTIxLjIgMC0yMS4yLTMyIDAtMzJoMTI4YzIxLjIgMCAyMS4yIDMyIDAgMzJ6bTMyLTEwNGMtMzkuOCAwLTcyLTMyLjItNzItNzJzMzIuMi03MiA3Mi03MiA3MiAzMi4yIDcyIDcyLTMyLjIgNzItNzIgNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbGRlck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAxMjhIMjcybC02NC02NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjI4OGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjE3NmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0tOTYgMTY4YzAgOC44NC03LjE2IDE2LTE2IDE2SDE2MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTE2YzAtOC44NCA3LjE2LTE2IDE2LTE2aDE5MmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9sZGVyT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzIuNjk0IDI5Mi4wOTNMNTAwLjI3IDQxNi4yNDhBNjMuOTk3IDYzLjk5NyAwIDAgMSA0NDQuOTg5IDQ0OEg0NS4wMjVjLTE4LjUyMyAwLTMwLjA2NC0yMC4wOTMtMjAuNzMxLTM2LjA5M2w3Mi40MjQtMTI0LjE1NUE2NCA2NCAwIDAgMSAxNTIgMjU2aDM5OS45NjRjMTguNTIzIDAgMzAuMDY0IDIwLjA5MyAyMC43MyAzNi4wOTN6TTE1MiAyMjRoMzI4di00OGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4SDI3MmwtNjQtNjRINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYyNzguMDQ2bDY5LjA3Ny0xMTguNDE4Qzg2LjIxNCAyNDIuMjUgMTE3Ljk4OSAyMjQgMTUyIDIyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9sZGVyUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQsMTI4SDI3MkwyMDgsNjRINDhBNDgsNDgsMCwwLDAsMCwxMTJWNDAwYTQ4LDQ4LDAsMCwwLDQ4LDQ4SDQ2NGE0OCw0OCwwLDAsMCw0OC00OFYxNzZBNDgsNDgsMCwwLDAsNDY0LDEyOFpNMzU5LjUsMjk2YTE2LDE2LDAsMCwxLTE2LDE2aC02NHY2NGExNiwxNiwwLDAsMS0xNiwxNmgtMTZhMTYsMTYsMCwwLDEtMTYtMTZWMzEyaC02NGExNiwxNiwwLDAsMS0xNi0xNlYyODBhMTYsMTYsMCwwLDEsMTYtMTZoNjRWMjAwYTE2LDE2LDAsMCwxLDE2LTE2aDE2YTE2LDE2LDAsMCwxLDE2LDE2djY0aDY0YTE2LDE2LDAsMCwxLDE2LDE2WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDEyOEgyNzJsLTY0LTY0SDQ4QzIxLjQ5IDY0IDAgODUuNDkgMCAxMTJ2Mjg4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTc2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDQxNmgtMjMuNDFMMjc3Ljg4IDUzLjY5QTMyIDMyIDAgMCAwIDI0Ny41OCAzMmgtNDcuMTZhMzIgMzIgMCAwIDAtMzAuMyAyMS42OUwzOS40MSA0MTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNmgtMTkuNThsMjMuMy02NGgxNTIuNTZsMjMuMyA2NEgzMDRhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMTc2Ljg1IDI3MkwyMjQgMTQyLjUxIDI3MS4xNSAyNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvb3RiYWxsQmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODEuNSA2MC4zYy00LjgtMTguMi0xOS4xLTMyLjUtMzcuMy0zNy40QzQyMC4zIDE2LjUgMzgzIDguOSAzMzkuNCA4TDQ5NiAxNjQuOGMtLjgtNDMuNS04LjItODAuNi0xNC41LTEwNC41em0tNDY3IDM5MS40YzQuOCAxOC4yIDE5LjEgMzIuNSAzNy4zIDM3LjQgMjMuOSA2LjQgNjEuMiAxNCAxMDQuOCAxNC45TDAgMzQ3LjJjLjggNDMuNSA4LjIgODAuNiAxNC41IDEwNC41ek00LjIgMjgzLjRMMjIwLjQgNTAwYzEzMi41LTE5LjQgMjQ4LjgtMTE4LjcgMjcxLjUtMjcxLjRMMjc1LjYgMTJDMTQzLjEgMzEuNCAyNi44IDEzMC43IDQuMiAyODMuNHptMzE3LjMtMTIzLjZjMy4xLTMuMSA4LjItMy4xIDExLjMgMGwxMS4zIDExLjNjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtMjguMyAyOC4zIDI4LjMgMjguM2MzLjEgMy4xIDMuMSA4LjIgMCAxMS4zbC0xMS4zIDExLjNjLTMuMSAzLjEtOC4yIDMuMS0xMS4zIDBsLTI4LjMtMjguMy0yMi42IDIyLjcgMjguMyAyOC4zYzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMEwyNDggMjc4LjZsLTIyLjYgMjIuNiAyOC4zIDI4LjNjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtMTEuMyAxMS4zYy0zLjEgMy4xLTguMiAzLjEtMTEuMyAwbC0yOC4zLTI4LjMtMjguMyAyOC4zYy0zLjEgMy4xLTguMiAzLjEtMTEuMyAwbC0xMS4zLTExLjNjLTMuMS0zLjEtMy4xLTguMiAwLTExLjNsMjguMy0yOC4zLTI4LjMtMjguMmMtMy4xLTMuMS0zLjEtOC4yIDAtMTEuM2wxMS4zLTExLjNjMy4xLTMuMSA4LjItMy4xIDExLjMgMGwyOC4zIDI4LjMgMjIuNi0yMi42LTI4LjMtMjguM2MtMy4xLTMuMS0zLjEtOC4yIDAtMTEuM2wxMS4zLTExLjNjMy4xLTMuMSA4LjItMy4xIDExLjMgMGwyOC4zIDI4LjMgMjIuNi0yMi42LTI4LjMtMjguM2MtMy4xLTMuMS0zLjEtOC4yIDAtMTEuM2wxMS4zLTExLjNjMy4xLTMuMSA4LjItMy4xIDExLjMgMGwyOC4zIDI4LjMgMjguMy0yOC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb3J3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMC41IDIzMS40bC0xOTItMTYwQzI4Ny45IDU0LjMgMjU2IDY4LjYgMjU2IDk2djMyMGMwIDI3LjQgMzEuOSA0MS44IDUyLjUgMjQuNmwxOTItMTYwYzE1LjMtMTIuOCAxNS4zLTM2LjQgMC00OS4yem0tMjU2IDBsLTE5Mi0xNjBDMzEuOSA1NC4zIDAgNjguNiAwIDk2djMyMGMwIDI3LjQgMzEuOSA0MS44IDUyLjUgMjQuNmwxOTItMTYwYzE1LjMtMTIuOCAxNS4zLTM2LjQgMC00OS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGcm9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ni41MyA5Ny40M0M0MzkuNjcgNjAuMjMgNDA3LjE5IDMyIDM2OCAzMmMtMzkuMjMgMC03MS43MiAyOC4yOS03OC41NCA2NS41NEMxMjYuNzUgMTEyLjk2LS41IDI1MC4xMiAwIDQxNi45OC4xMSA0NTEuOSAyOS4wOCA0ODAgNjQgNDgwaDMwNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNiAwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC03OS40OWwzNS44LTQ4LjMzYzI0LjE0LTM2LjIzIDEwLjM1LTg4LjI4LTMzLjcxLTEwNi42LTIzLjg5LTkuOTMtNTEuNTUtNC42NS03Mi4yNCAxMC44OGwtMzIuNzYgMjQuNTljLTcuMDYgNS4zMS0xNy4wOSAzLjkxLTIyLjQxLTMuMTktNS4zLTcuMDgtMy44OC0xNy4xMSAzLjE5LTIyLjQxbDM0Ljc4LTI2LjA5YzM2Ljg0LTI3LjY2IDg4LjI4LTI3LjYyIDEyNS4xMyAwIDEwLjg3IDguMTUgNDUuODcgMzkuMDYgNDAuOCA5My4yMUw0NjkuNjIgNDgwSDU2MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNiAwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC01My42M2wtOTguNTItMTA0LjY4IDE1NC40NC04Ni42NUE1OC4xNiA1OC4xNiAwIDAgMCA1NzYgMTg5Ljk0YzAtMjEuNC0xMS43Mi00MC45NS0zMC40OC01MS4yMy00MC41Ni0yMi4yMi05OC45OS00MS4yOC05OC45OS00MS4yOHpNMzY4IDEzNmMtMTMuMjYgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc0LTI0IDI0LTI0IDEzLjI1IDAgMjQgMTAuNzQgMjQgMjQgMCAxMy4yNS0xMC43NSAyNC0yNCAyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnJvd25PcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTEzNiAyMDhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzJ6bTE4Ny4zIDE4My4zYy0zMS4yLTkuNi01OS40LTE1LjMtNzUuMy0xNS4zcy00NC4xIDUuNy03NS4zIDE1LjNjLTExLjUgMy41LTIyLjUtNi4zLTIwLjUtMTguMSA3LTQwIDYwLjEtNjEuMiA5NS44LTYxLjJzODguOCAyMS4zIDk1LjggNjEuMmMyIDExLjktOS4xIDIxLjYtMjAuNSAxOC4xek0zMjggMjQwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnJvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptODAgMTY4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptLTE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptMTcwLjIgMjE4LjJDMzE1LjggMzY3LjQgMjgyLjkgMzUyIDI0OCAzNTJzLTY3LjggMTUuNC05MC4yIDQyLjJjLTEzLjUgMTYuMy0zOC4xLTQuMi0yNC42LTIwLjVDMTYxLjcgMzM5LjYgMjAzLjYgMzIwIDI0OCAzMjBzODYuMyAxOS42IDExNC43IDUzLjhjMTMuNiAxNi4yLTExIDM2LjctMjQuNSAyMC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGdW5uZWxEb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMzLjQ2IDE2NS45NGwxMDEuMi0xMTEuODdDNTU0LjYxIDM0LjEyIDU0MC40OCAwIDUxMi4yNiAwSDMxLjc0QzMuNTIgMC0xMC42MSAzNC4xMiA5LjM0IDU0LjA3TDE5MiAyNTZ2MTU1LjkyYzAgMTIuNTkgNS45MyAyNC40NCAxNiAzMmw3OS45OSA2MGMyMC44NiAxNS42NCA0OC40NyA2Ljk3IDU5LjIyLTEzLjU3QzMxMC44IDQ1NS4zOCAyODggNDA2LjM1IDI4OCAzNTJjMC04OS43OSA2Mi4wNS0xNjUuMTcgMTQ1LjQ2LTE4Ni4wNnpNNDgwIDE5MmMtODguMzcgMC0xNjAgNzEuNjMtMTYwIDE2MHM3MS42MyAxNjAgMTYwIDE2MCAxNjAtNzEuNjMgMTYwLTE2MC03MS42My0xNjAtMTYwLTE2MHptMTYgMjM5Ljg4VjQ0OGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di0xNi4yOWMtMTEuMjktLjU4LTIyLjI3LTQuNTItMzEuMzctMTEuMzUtMy45LTIuOTMtNC4xLTguNzctLjU3LTEyLjE0bDExLjc1LTExLjIxYzIuNzctMi42NCA2Ljg5LTIuNzYgMTAuMTMtLjczIDMuODcgMi40MiA4LjI2IDMuNzIgMTIuODIgMy43MmgyOC4xMWM2LjUgMCAxMS44LTUuOTIgMTEuOC0xMy4xOSAwLTUuOTUtMy42MS0xMS4xOS04Ljc3LTEyLjczbC00NS0xMy41Yy0xOC41OS01LjU4LTMxLjU4LTIzLjQyLTMxLjU4LTQzLjM5IDAtMjQuNTIgMTkuMDUtNDQuNDQgNDIuNjctNDUuMDdWMjU2YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djE2LjI5YzExLjI5LjU4IDIyLjI3IDQuNTEgMzEuMzcgMTEuMzUgMy45IDIuOTMgNC4xIDguNzcuNTcgMTIuMTRsLTExLjc1IDExLjIxYy0yLjc3IDIuNjQtNi44OSAyLjc2LTEwLjEzLjczLTMuODctMi40My04LjI2LTMuNzItMTIuODItMy43MmgtMjguMTFjLTYuNSAwLTExLjggNS45Mi0xMS44IDEzLjE5IDAgNS45NSAzLjYxIDExLjE5IDguNzcgMTIuNzNsNDUgMTMuNWMxOC41OSA1LjU4IDMxLjU4IDIzLjQyIDMxLjU4IDQzLjM5IDAgMjQuNTMtMTkuMDQgNDQuNDQtNDIuNjcgNDUuMDd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZ1dGJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2YzAgMTM2Ljk2Ny0xMTEuMDMzIDI0OC0yNDggMjQ4UzggMzkyLjk2NyA4IDI1NiAxMTkuMDMzIDggMjU2IDhzMjQ4IDExMS4wMzMgMjQ4IDI0OHptLTQ4IDBsLS4wMDMtLjI4Mi0yNi4wNjQgMjIuNzQxLTYyLjY3OS01OC41IDE2LjQ1NC04NC4zNTUgMzQuMzAzIDMuMDcyYy0yNC44ODktMzQuMjE2LTYwLjAwNC02MC4wODktMTAwLjcwOS03My4xNDFsMTMuNjUxIDMxLjkzOUwyNTYgMTM5bC03NC45NTMtNDEuNTI1IDEzLjY1MS0zMS45MzljLTQwLjYzMSAxMy4wMjgtNzUuNzggMzguODctMTAwLjcwOSA3My4xNDFsMzQuNTY1LTMuMDczIDE2LjE5MiA4NC4zNTUtNjIuNjc4IDU4LjUtMjYuMDY0LTIyLjc0MS0uMDAzLjI4MmMwIDQzLjAxNSAxMy40OTcgODMuOTUyIDM4LjQ3MiAxMTcuOTkxbDcuNzA0LTMzLjg5NyA4NS4xMzggMTAuNDQ3IDM2LjMwMSA3Ny44MjYtMjkuOTAyIDE3Ljc4NmM0MC4yMDIgMTMuMTIyIDg0LjI5IDEzLjE0OCAxMjQuNTcyIDBsLTI5LjkwMi0xNy43ODYgMzYuMzAxLTc3LjgyNiA4NS4xMzgtMTAuNDQ3IDcuNzA0IDMzLjg5N0M0NDIuNTAzIDMzOS45NTIgNDU2IDI5OS4wMTUgNDU2IDI1NnptLTI0OC4xMDIgNjkuNTcxbC0yOS44OTQtOTEuMzEyTDI1NiAxNzcuNzMybDc3Ljk5NiA1Ni41MjctMjkuNjIyIDkxLjMxMmgtOTYuNDc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHYW1lcGFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MC4wNyA5NkgxNjBhMTYwIDE2MCAwIDEgMCAxMTQuMjQgMjcyaDkxLjUyQTE2MCAxNjAgMCAxIDAgNDgwLjA3IDk2ek0yNDggMjY4YTEyIDEyIDAgMCAxLTEyIDEyaC01MnY1MmExMiAxMiAwIDAgMS0xMiAxMmgtMjRhMTIgMTIgMCAwIDEtMTItMTJ2LTUySDg0YTEyIDEyIDAgMCAxLTEyLTEydi0yNGExMiAxMiAwIDAgMSAxMi0xMmg1MnYtNTJhMTIgMTIgMCAwIDEgMTItMTJoMjRhMTIgMTIgMCAwIDEgMTIgMTJ2NTJoNTJhMTIgMTIgMCAwIDEgMTIgMTJ6bTIxNiA3NmE0MCA0MCAwIDEgMSA0MC00MCA0MCA0MCAwIDAgMS00MCA0MHptNjQtOTZhNDAgNDAgMCAxIDEgNDAtNDAgNDAgNDAgMCAwIDEtNDAgNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdhc1B1bXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDQ0OEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMjBjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bTE1Ny4yLTM0MC43bC04MS04MWMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBsLTExLjMgMTEuM2MtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZMNDE2IDk3LjlWMTYwYzAgMjguMSAyMC45IDUxLjMgNDggNTUuMlYzNzZjMCAxMy4yLTEwLjggMjQtMjQgMjRzLTI0LTEwLjgtMjQtMjR2LTMyYzAtNDguNi0zOS40LTg4LTg4LTg4aC04VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDk2QzYwLjcgMCAzMiAyOC43IDMyIDY0djM1MmgyODhWMzA0aDhjMjIuMSAwIDQwIDE3LjkgNDAgNDB2MjcuOGMwIDM3LjcgMjcgNzIgNjQuNSA3NS45IDQzIDQuMyA3OS41LTI5LjUgNzkuNS03MS43VjE1Mi42YzAtMTctNi44LTMzLjMtMTguOC00NS4zek0yNTYgMTkySDk2VjY0aDE2MHYxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdhdmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNC45NzEgMTk5LjM2MmwtMjIuNjI3LTIyLjYyN2MtOS4zNzMtOS4zNzMtMjQuNTY5LTkuMzczLTMzLjk0MSAwbC01LjY1NyA1LjY1N0wzMjkuNjA4IDY5LjI1NWw1LjY1Ny01LjY1N2M5LjM3My05LjM3MyA5LjM3My0yNC41NjkgMC0zMy45NDFMMzEyLjYzOCA3LjAyOWMtOS4zNzMtOS4zNzMtMjQuNTY5LTkuMzczLTMzLjk0MSAwTDE1NC4yNDYgMTMxLjQ4Yy05LjM3MyA5LjM3My05LjM3MyAyNC41NjkgMCAzMy45NDFsMjIuNjI3IDIyLjYyN2M5LjM3MyA5LjM3MyAyNC41NjkgOS4zNzMgMzMuOTQxIDBsNS42NTctNS42NTcgMzkuNTk4IDM5LjU5OC04MS4wNCA4MS4wNC01LjY1Ny01LjY1N2MtMTIuNDk3LTEyLjQ5Ny0zMi43NTgtMTIuNDk3LTQ1LjI1NSAwTDkuMzczIDQxMi4xMThjLTEyLjQ5NyAxMi40OTctMTIuNDk3IDMyLjc1OCAwIDQ1LjI1NWw0NS4yNTUgNDUuMjU1YzEyLjQ5NyAxMi40OTcgMzIuNzU4IDEyLjQ5NyA0NS4yNTUgMGwxMTQuNzQ1LTExNC43NDVjMTIuNDk3LTEyLjQ5NyAxMi40OTctMzIuNzU4IDAtNDUuMjU1bC01LjY1Ny01LjY1NyA4MS4wNC04MS4wNCAzOS41OTggMzkuNTk4LTUuNjU3IDUuNjU3Yy05LjM3MyA5LjM3My05LjM3MyAyNC41NjkgMCAzMy45NDFsMjIuNjI3IDIyLjYyN2M5LjM3MyA5LjM3MyAyNC41NjkgOS4zNzMgMzMuOTQxIDBsMTI0LjQ1MS0xMjQuNDUxYzkuMzcyLTkuMzcyIDkuMzcyLTI0LjU2OCAwLTMzLjk0MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2VtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4NS41IDBMNTc2IDE2MEg0NzQuOUw0MDUuNyAwaDc5Ljh6bS0xMjggMGw2OS4yIDE2MEgxNDkuM0wyMTguNSAwaDEzOXptLTI2NyAwaDc5LjhsLTY5LjIgMTYwSDBMOTAuNSAwek0wIDE5MmgxMDAuN2wxMjMgMjUxLjdjMS41IDMuMS0yLjcgNS45LTUgMy4zTDAgMTkyem0xNDguMiAwaDI3OS42bC0xMzcgMzE4LjJjLTEgMi40LTQuNSAyLjQtNS41IDBMMTQ4LjIgMTkyem0yMDQuMSAyNTEuN2wxMjMtMjUxLjdINTc2TDM1Ny4zIDQ0Ni45Yy0yLjMgMi43LTYuNS0uMS01LTMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2VuZGVybGVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjg4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgMTc2YzQ0LjEgMCA4MCAzNS45IDgwIDgwcy0zNS45IDgwLTgwIDgwLTgwLTM1LjktODAtODAgMzUuOS04MCA4MC04MG0wLTY0QzY0LjUgMTEyIDAgMTc2LjUgMCAyNTZzNjQuNSAxNDQgMTQ0IDE0NCAxNDQtNjQuNSAxNDQtMTQ0LTY0LjUtMTQ0LTE0NC0xNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdob3N0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni4xLjA5QzgxLjAxIDMuMjQgMCA5NC45MiAwIDIwMC4wNXYyNjMuOTJjMCAxNC4yNiAxNy4yMyAyMS4zOSAyNy4zMSAxMS4zMWwyNC45Mi0xOC41M2M2LjY2LTQuOTUgMTYtMy45OSAyMS41MSAyLjIxbDQyLjk1IDQ4LjM1YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsNDAuNzItNDUuODVjNi4zNy03LjE3IDE3LjU2LTcuMTcgMjMuOTIgMGw0MC43MiA0NS44NWM2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDQyLjk1LTQ4LjM1YzUuNTEtNi4yIDE0Ljg1LTcuMTcgMjEuNTEtMi4yMWwyNC45MiAxOC41M2MxMC4wOCAxMC4wOCAyNy4zMSAyLjk0IDI3LjMxLTExLjMxVjE5MkMzODQgODQgMjk0LjgzLTMuMTcgMTg2LjEuMDl6TTEyOCAyMjRjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTEyOCAwYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHaWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgxNjBWMzIwSDMydjEyOHptMjU2IDMyaDE2MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMjBIMjg4djE2MHptMTkyLTMyMGgtNDIuMWM2LjItMTIuMSAxMC4xLTI1LjUgMTAuMS00MCAwLTQ4LjUtMzkuNS04OC04OC04OC00MS42IDAtNjguNSAyMS4zLTEwMyA2OC4zLTM0LjUtNDctNjEuNC02OC4zLTEwMy02OC4zLTQ4LjUgMC04OCAzOS41LTg4IDg4IDAgMTQuNSAzLjggMjcuOSAxMC4xIDQwSDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY4MGMwIDguOCA3LjIgMTYgMTYgMTZoNDgwYzguOCAwIDE2LTcuMiAxNi0xNnYtODBjMC0xNy43LTE0LjMtMzItMzItMzJ6bS0zMjYuMSAwYy0yMi4xIDAtNDAtMTcuOS00MC00MHMxNy45LTQwIDQwLTQwYzE5LjkgMCAzNC42IDMuMyA4Ni4xIDgwaC04Ni4xem0yMDYuMSAwaC04Ni4xYzUxLjQtNzYuNSA2NS43LTgwIDg2LjEtODAgMjIuMSAwIDQwIDE3LjkgNDAgNDBzLTE3LjkgNDAtNDAgNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpZnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MC42IDE5NC4xYzEuOS0zMC44IDE3LjMtNjEuMiA0NC03OS44QzI3OS40IDEwMy41IDI2OC43IDk2IDI1NiA5NmgtMjkuNGwzMC43LTIyYzcuMi01LjEgOC45LTE1LjEgMy43LTIyLjNsLTkuMy0xM2MtNS4xLTcuMi0xNS4xLTguOS0yMi4zLTMuN2wtMzIgMjIuOSAxMS41LTMwLjZjMy4xLTguMy0xLjEtMTcuNS05LjQtMjAuNmwtMTUtNS42Yy04LjMtMy4xLTE3LjUgMS4xLTIwLjYgOS40bC0xOS45IDUzLTE5LjktNTMuMUMxMjEgMi4xIDExMS44LTIuMSAxMDMuNSAxbC0xNSA1LjZDODAuMiA5LjcgNzYgMTkgNzkuMiAyNy4ybDExLjUgMzAuNkw1OC42IDM1Yy03LjItNS4xLTE3LjItMy41LTIyLjMgMy43bC05LjMgMTNjLTUuMSA3LjItMy41IDE3LjIgMy43IDIyLjNsMzAuNyAyMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDE2OC45Yy01LjUtOS41LTguOS0yMC4zLTguOS0zMlYyNTZjMC0yOS45IDIwLjgtNTUgNDguNi02MS45ek0yMjQgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDE2MFYzODRIMjI0djk2em0yMjQgMzJoMTYwYzE3LjcgMCAzMi0xNC4zIDMyLTMydi05Nkg0NDh2MTI4em0xNjAtMjg4aC0yMC40YzIuNi03LjYgNC40LTE1LjUgNC40LTIzLjggMC0zNS41LTI3LTcyLjItNzIuMS03Mi4yLTQ4LjEgMC03NS45IDQ3LjctODcuOSA3NS4zLTEyLjEtMjcuNi0zOS45LTc1LjMtODcuOS03NS4zLTQ1LjEgMC03Mi4xIDM2LjctNzIuMSA3Mi4yIDAgOC4zIDEuNyAxNi4yIDQuNCAyMy44SDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZoMTkyVjIyNGgxNS4zbC43LS4yLjcuMkg0NDh2MTI4aDE5MnYtOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6bS0yNzIgMGMtMi43LTEuNC01LjEtMy03LjItNC44LTcuMy02LjQtOC44LTEzLjgtOC44LTE5IDAtOS43IDYuNC0yNC4yIDI0LjEtMjQuMiAxOC43IDAgMzUuNiAyNy40IDQ0LjUgNDhIMzM2em0xOTkuMi00LjhjLTIuMSAxLjgtNC41IDMuNC03LjIgNC44aC01Mi42YzguOC0yMC4zIDI1LjgtNDggNDQuNS00OCAxNy43IDAgMjQuMSAxNC41IDI0LjEgMjQuMiAwIDUuMi0xLjUgMTIuNi04LjggMTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsYXNzQ2hlZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzOS40IDQzMy42Yy04LjQtMjAuNC0zMS44LTMwLjEtNTIuMi0yMS42bC0yMi4xIDkuMi0zOC43LTEwMS45YzQ3LjktMzUgNjQuOC0xMDAuMyAzNC41LTE1Mi44TDQ3NC4zIDE2Yy04LTEzLjktMjUuMS0xOS43LTQwLTEzLjZMMzIwIDQ5LjggMjA1LjcgMi40Yy0xNC45LTYuMi0zMi0uMy00MCAxMy42TDc5LjEgMTY2LjVDNDguOSAyMTkgNjUuNyAyODQuMyAxMTMuNiAzMTkuMkw3NC45IDQyMS4xbC0yMi4xLTkuMmMtMjAuNC04LjUtNDMuNyAxLjItNTIuMiAyMS42LTEuNyA0LjEuMiA4LjggNC4zIDEwLjVsMTYyLjMgNjcuNGM0LjEgMS43IDguNy0uMiAxMC40LTQuMyA4LjQtMjAuNC0xLjItNDMuOC0yMS42LTUyLjNsLTIyLjEtOS4yTDE3My4zIDM0MmM0LjQuNSA4LjggMS4zIDEzLjEgMS4zIDUxLjcgMCA5OS40LTMzLjEgMTEzLjQtODUuM2wyMC4yLTc1LjQgMjAuMiA3NS40YzE0IDUyLjIgNjEuNyA4NS4zIDExMy40IDg1LjMgNC4zIDAgOC43LS44IDEzLjEtMS4zTDUwNiA0NDUuNmwtMjIuMSA5LjJjLTIwLjQgOC41LTMwLjEgMzEuOS0yMS42IDUyLjMgMS43IDQuMSA2LjQgNiAxMC40IDQuM0w2MzUuMSA0NDRjNC0xLjcgNi02LjMgNC4zLTEwLjR6TTI3NS45IDE2Mi4xbC0xMTIuMS00Ni41IDM2LjUtNjMuNCA5NC41IDM5LjItMTguOSA3MC43em04OC4yIDBsLTE4LjktNzAuNyA5NC41LTM5LjIgMzYuNSA2My40LTExMi4xIDQ2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsYXNzTWFydGluaUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuMDUgNTcuNkM1MjMuMyAzNi4zNCA1MDguMjUgMCA0NzguMiAwSDMzLjhDMy43NSAwLTExLjMgMzYuMzQgOS45NSA1Ny42TDIyNCAyNzEuNjRWNDY0aC01NmMtMjIuMDkgMC00MCAxNy45MS00MCA0MCAwIDQuNDIgMy41OCA4IDggOGgyNDBjNC40MiAwIDgtMy41OCA4LTggMC0yMi4wOS0xNy45MS00MC00MC00MGgtNTZWMjcxLjY0TDUwMi4wNSA1Ny42ek00NDMuNzcgNDhsLTQ4IDQ4SDExNi4yNGwtNDgtNDhoMzc1LjUzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbGFzc01hcnRpbmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAyLjA1IDU3LjZDNTIzLjMgMzYuMzQgNTA4LjI1IDAgNDc4LjIgMEgzMy44QzMuNzUgMC0xMS4zIDM2LjM0IDkuOTUgNTcuNkwyMjQgMjcxLjY0VjQ2NGgtNTZjLTIyLjA5IDAtNDAgMTcuOTEtNDAgNDAgMCA0LjQyIDMuNTggOCA4IDhoMjQwYzQuNDIgMCA4LTMuNTggOC04IDAtMjIuMDktMTcuOTEtNDAtNDAtNDBoLTU2VjI3MS42NEw1MDIuMDUgNTcuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xhc3NXaGlza2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAzMkgzMkMxMi41IDMyLTIuNCA0OS4yLjMgNjguNWw1NiAzNTYuNWM0LjUgMzEuNSAzMS41IDU0LjkgNjMuNCA1NC45aDI3M2MzMS44IDAgNTguOS0yMy40IDYzLjQtNTQuOWw1NS42LTM1Ni41QzUxNC40IDQ5LjIgNDk5LjUgMzIgNDgwIDMyem0tMzcuNCA2NGwtMzAgMTkyaC0zMTNMNjkuNCA5NmgzNzMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xhc3NlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzQuMSAyODAuMzdMNTI4Ljc1IDk4LjY2Yy01LjkxLTIzLjctMjEuNTktNDQuMDUtNDMtNTUuODEtMjEuNDQtMTEuNzMtNDYuOTctMTQuMTEtNzAuMTktNi4zM2wtMTUuMjUgNS4wOGMtOC4zOSAyLjc5LTEyLjkyIDExLjg2LTEwLjEyIDIwLjI0bDUuMDYgMTUuMThjMi43OSA4LjM4IDExLjg1IDEyLjkxIDIwLjIzIDEwLjEybDEzLjE4LTQuMzljMTAuODctMy42MiAyMy0zLjU3IDMzLjE2IDEuNzMgMTAuMjkgNS4zNyAxNy41NyAxNC41NiAyMC4zNyAyNS44MmwzOC40NiAxNTMuODJjLTIyLjE5LTYuODEtNDkuNzktMTIuNDYtODEuMi0xMi40Ni0zNC43NyAwLTczLjk4IDcuMDItMTE0Ljg1IDI2Ljc0aC03My4xOGMtNDAuODctMTkuNzQtODAuMDgtMjYuNzUtMTE0Ljg2LTI2Ljc1LTMxLjQyIDAtNTkuMDIgNS42NS04MS4yMSAxMi40NmwzOC40Ni0xNTMuODNjMi43OS0xMS4yNSAxMC4wOS0yMC40NSAyMC4zOC0yNS44MSAxMC4xNi01LjMgMjIuMjgtNS4zNSAzMy4xNS0xLjczbDEzLjE3IDQuMzljOC4zOCAyLjc5IDE3LjQ0LTEuNzQgMjAuMjMtMTAuMTJsNS4wNi0xNS4xOGMyLjgtOC4zOC0xLjczLTE3LjQ1LTEwLjEyLTIwLjI0bC0xNS4yNS01LjA4Yy0yMy4yMi03Ljc4LTQ4Ljc1LTUuNDEtNzAuMTkgNi4zMy0yMS40MSAxMS43Ny0zNy4wOSAzMi4xMS00MyA1NS44TDEuOSAyODAuMzdBNjQuMjE4IDY0LjIxOCAwIDAgMCAwIDI5NS44NnY3MC4yNUMwIDQyOS4wMSA1MS41OCA0ODAgMTE1LjIgNDgwaDM3LjEyYzYwLjI4IDAgMTEwLjM3LTQ1Ljk0IDExNC44OC0xMDUuMzdsMi45My0zOC42M2gzNS43NWwyLjkzIDM4LjYzQzMxMy4zMSA0MzQuMDYgMzYzLjQgNDgwIDQyMy42OCA0ODBoMzcuMTJjNjMuNjIgMCAxMTUuMi01MC45OSAxMTUuMi0xMTMuODh2LTcwLjI1YzAtNS4yMy0uNjQtMTAuNDMtMS45LTE1LjV6bS0zNzAuNzIgODkuNDJjLTEuOTcgMjUuOTEtMjQuNCA0Ni4yMS01MS4wNiA0Ni4yMUgxMTUuMkM4Ni45NyA0MTYgNjQgMzkzLjYyIDY0IDM2Ni4xMXYtMzcuNTRjMTguMTItNi40OSA0My40Mi0xMi45MiA3Mi41OC0xMi45MiAyMy44NiAwIDQ3LjI2IDQuMzMgNjkuOTMgMTIuOTJsLTMuMTMgNDEuMjJ6TTUxMiAzNjYuMTJjMCAyNy41MS0yMi45NyA0OS44OC01MS4yIDQ5Ljg4aC0zNy4xMmMtMjYuNjcgMC00OS4xLTIwLjMtNTEuMDYtNDYuMjFsLTMuMTMtNDEuMjJjMjIuNjctOC41OSA0Ni4wOC0xMi45MiA2OS45NS0xMi45MiAyOS4xMiAwIDU0LjQzIDYuNDQgNzIuNTUgMTIuOTN2MzcuNTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsb2JlQWZyaWNhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTE2MCAyMTUuNXY2LjkzYzAgNS44Ny0zLjMyIDExLjI0LTguNTcgMTMuODZsLTE1LjM5IDcuN2ExNS40ODUgMTUuNDg1IDAgMCAxLTE1LjUzLS45N2wtMTguMjEtMTIuMTRhMTUuNTIgMTUuNTIgMCAwIDAtMTMuNS0xLjgxbC0yLjY1Ljg4Yy05LjcgMy4yMy0xMy42NiAxNC43OS03Ljk5IDIzLjNsMTMuMjQgMTkuODZjMi44NyA0LjMxIDcuNzEgNi45IDEyLjg5IDYuOWg4LjIxYzguNTYgMCAxNS41IDYuOTQgMTUuNSAxNS41djExLjM0YzAgMy4zNS0xLjA5IDYuNjItMy4xIDkuM2wtMTguNzQgMjQuOThjLTEuNDIgMS45LTIuMzkgNC4xLTIuODMgNi40M2wtNC4zIDIyLjgzYy0uNjIgMy4yOS0yLjI5IDYuMjktNC43NiA4LjU2YTE1OS42MDggMTU5LjYwOCAwIDAgMC0yNSAyOS4xNmwtMTMuMDMgMTkuNTVhMjcuNzU2IDI3Ljc1NiAwIDAgMS0yMy4wOSAxMi4zNmMtMTAuNTEgMC0yMC4xMi01Ljk0LTI0LjgyLTE1LjM0YTc4LjkwMiA3OC45MDIgMCAwIDEtOC4zMy0zNS4yOVYzNjcuNWMwLTguNTYtNi45NC0xNS41LTE1LjUtMTUuNWgtMjUuODhjLTE0LjQ5IDAtMjguMzgtNS43Ni0zOC42My0xNmE1NC42NTkgNTQuNjU5IDAgMCAxLTE2LTM4LjYzdi0xNC4wNmMwLTE3LjE5IDguMS0zMy4zOCAyMS44NS00My43bDI3LjU4LTIwLjY5YTU0LjY2MyA1NC42NjMgMCAwIDEgMzIuNzgtMTAuOTNoLjg5YzguNDggMCAxNi44NSAxLjk3IDI0LjQzIDUuNzdsMTQuNzIgNy4zNmMzLjY4IDEuODQgNy45MyAyLjE0IDExLjgzLjg0bDQ3LjMxLTE1Ljc3YzYuMzMtMi4xMSAxMC42LTguMDMgMTAuNi0xNC43IDAtOC41Ni02Ljk0LTE1LjUtMTUuNS0xNS41aC0xMC4wOWMtNC4xMSAwLTguMDUtMS42My0xMC45Ni00LjU0bC02LjkyLTYuOTJhMTUuNDkzIDE1LjQ5MyAwIDAgMC0xMC45Ni00LjU0SDE5OS41Yy04LjU2IDAtMTUuNS02Ljk0LTE1LjUtMTUuNXYtNC40YzAtNy4xMSA0Ljg0LTEzLjMxIDExLjc0LTE1LjA0bDE0LjQ1LTMuNjFjMy43NC0uOTQgNy0zLjIzIDkuMTQtNi40NGw4LjA4LTEyLjExYzIuODctNC4zMSA3LjcxLTYuOSAxMi44OS02LjloMjQuMjFjOC41NiAwIDE1LjUtNi45NCAxNS41LTE1LjV2LTIxLjdDMzU5LjIzIDcxLjYzIDQyMi44NiAxMzEuMDIgNDQxLjkzIDIwOEg0MjMuNWMtOC41NiAwLTE1LjUgNi45NC0xNS41IDE1LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsb2JlQW1lcmljYXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptODIuMjkgMzU3LjZjLTMuOSAzLjg4LTcuOTkgNy45NS0xMS4zMSAxMS4yOC0yLjk5IDMtNS4xIDYuNy02LjE3IDEwLjcxLTEuNTEgNS42Ni0yLjczIDExLjM4LTQuNzcgMTYuODdsLTE3LjM5IDQ2Ljg1Yy0xMy43NiAzLTI4IDQuNjktNDIuNjUgNC42OXYtMjcuMzhjMS42OS0xMi42Mi03LjY0LTM2LjI2LTIyLjYzLTUxLjI1LTYtNi05LjM3LTE0LjE0LTkuMzctMjIuNjN2LTMyLjAxYzAtMTEuNjQtNi4yNy0yMi4zNC0xNi40Ni0yNy45Ny0xNC4zNy03Ljk1LTM0LjgxLTE5LjA2LTQ4LjgxLTI2LjExLTExLjQ4LTUuNzgtMjIuMS0xMy4xNC0zMS42NS0yMS43NWwtLjgtLjcyYTExNC43OTIgMTE0Ljc5MiAwIDAgMS0xOC4wNi0yMC43NGMtOS4zOC0xMy43Ny0yNC42Ni0zNi40Mi0zNC41OS01MS4xNCAyMC40Ny00NS41IDU3LjM2LTgyLjA0IDEwMy4yLTEwMS44OWwyNC4wMSAxMi4wMUMyMDMuNDggODkuNzQgMjE2IDgyLjAxIDIxNiA3MC4xMXYtMTEuM2M3Ljk5LTEuMjkgMTYuMTItMi4xMSAyNC4zOS0yLjQybDI4LjMgMjguM2M2LjI1IDYuMjUgNi4yNSAxNi4zOCAwIDIyLjYzTDI2NCAxMTJsLTEwLjM0IDEwLjM0Yy0zLjEyIDMuMTItMy4xMiA4LjE5IDAgMTEuMzFsNC42OSA0LjY5YzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtOCA4YTguMDA4IDguMDA4IDAgMCAxLTUuNjYgMi4zNGgtOC45OWMtMi4wOCAwLTQuMDguODEtNS41OCAyLjI3bC05LjkyIDkuNjVhOC4wMDggOC4wMDggMCAwIDAtMS41OCA5LjMxbDE1LjU5IDMxLjE5YzIuNjYgNS4zMi0xLjIxIDExLjU4LTcuMTUgMTEuNThoLTUuNjRjLTEuOTMgMC0zLjc5LS43LTUuMjQtMS45NmwtOS4yOC04LjA2YTE2LjAxNyAxNi4wMTcgMCAwIDAtMTUuNTUtMy4xbC0zMS4xNyAxMC4zOWExMS45NSAxMS45NSAwIDAgMC04LjE3IDExLjM0YzAgNC41MyAyLjU2IDguNjYgNi42MSAxMC42OWwxMS4wOCA1LjU0YzkuNDEgNC43MSAxOS43OSA3LjE2IDMwLjMxIDcuMTZzMjIuNTkgMjcuMjkgMzIgMzJoNjYuNzVjOC40OSAwIDE2LjYyIDMuMzcgMjIuNjMgOS4zN2wxMy42OSAxMy42OWEzMC41MDMgMzAuNTAzIDAgMCAxIDguOTMgMjEuNTcgNDYuNTM2IDQ2LjUzNiAwIDAgMS0xMy43MiAzMi45OHpNNDE3IDI3NC4yNWMtNS43OS0xLjQ1LTEwLjg0LTUtMTQuMTUtOS45N2wtMTcuOTgtMjYuOTdhMjMuOTcgMjMuOTcgMCAwIDEgMC0yNi42MmwxOS41OS0yOS4zOGMyLjMyLTMuNDcgNS41LTYuMjkgOS4yNC04LjE1bDEyLjk4LTYuNDlDNDQwLjIgMTkzLjU5IDQ0OCAyMjMuODcgNDQ4IDI1NmMwIDguNjctLjc0IDE3LjE2LTEuODIgMjUuNTRMNDE3IDI3NC4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xvYmVBc2lhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bS0xMS4zNCAyNDAuMjNjLTIuODkgNC44Mi04LjEgNy43Ny0xMy43MiA3Ljc3aC0uMzFjLTQuMjQgMC04LjMxIDEuNjktMTEuMzEgNC42OWwtNS42NiA1LjY2Yy0zLjEyIDMuMTItMy4xMiA4LjE5IDAgMTEuMzFsNS42NiA1LjY2YzMgMyA0LjY5IDcuMDcgNC42OSAxMS4zMVYzMDRjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTYuMTFjLTYuMDYgMC0xMS42LTMuNDItMTQuMzEtOC44NWwtMjIuNjItNDUuMjNjLTIuNDQtNC44OC04Ljk1LTUuOTQtMTIuODEtMi4wOGwtMTkuNDcgMTkuNDZjLTMgMy03LjA3IDQuNjktMTEuMzEgNC42OUg1MC44MUM0OS4xMiAyNzcuNTUgNDggMjY2LjkyIDQ4IDI1NmMwLTExMC4yOCA4OS43Mi0yMDAgMjAwLTIwMCAyMS41MSAwIDQyLjIgMy41MSA2MS42MyA5LjgybC01MC4xNiAzOC41M2MtNS4xMSAzLjQxLTQuNjMgMTEuMDYuODYgMTMuODFsMTAuODMgNS40MWM1LjQyIDIuNzEgOC44NCA4LjI1IDguODQgMTQuMzFWMjE2YzAgNC40Mi0zLjU4IDgtOCA4aC0zLjA2Yy0zLjAzIDAtNS44LTEuNzEtNy4xNS00LjQyLTEuNTYtMy4xMi01Ljk2LTMuMjktNy43Ni0uM2wtMTcuMzcgMjguOTV6TTQwOCAzNTguNDNjMCA0LjI0LTEuNjkgOC4zMS00LjY5IDExLjMxbC05LjU3IDkuNTdjLTMgMy03LjA3IDQuNjktMTEuMzEgNC42OWgtMTUuMTZjLTQuMjQgMC04LjMxLTEuNjktMTEuMzEtNC42OWwtMTMuMDEtMTMuMDFhMjYuNzY3IDI2Ljc2NyAwIDAgMC0yNS40Mi03LjA0bC0yMS4yNyA1LjMyYy0xLjI3LjMyLTIuNTcuNDgtMy44OC40OGgtMTAuMzRjLTQuMjQgMC04LjMxLTEuNjktMTEuMzEtNC42OWwtMTEuOTEtMTEuOTFhOC4wMDggOC4wMDggMCAwIDEtMi4zNC01LjY2di0xMC4yYzAtMy4yNyAxLjk5LTYuMjEgNS4wMy03LjQzbDM5LjM0LTE1Ljc0YzEuOTgtLjc5IDMuODYtMS44MiA1LjU5LTMuMDVsMjMuNzEtMTYuODlhNy45NzggNy45NzggMCAwIDEgNC42NC0xLjQ4aDEyLjA5YzMuMjMgMCA2LjE1IDEuOTQgNy4zOSA0LjkzbDUuMzUgMTIuODVhNCA0IDAgMCAwIDMuNjkgMi40NmgzLjhjMS43OCAwIDMuMzUtMS4xOCAzLjg0LTIuODhsNC4yLTE0LjQ3Yy41LTEuNzEgMi4wNi0yLjg4IDMuODQtMi44OGg2LjA2YzIuMjEgMCA0IDEuNzkgNCA0djEyLjkzYzAgMi4xMi44NCA0LjE2IDIuMzQgNS42NmwxMS45MSAxMS45MWMzIDMgNC42OSA3LjA3IDQuNjkgMTEuMzF2MjQuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xvYmVFdXJvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMjAwIDI0OGMwIDIyLjUtMy45IDQ0LjItMTAuOCA2NC40aC0yMC4zYy00LjMgMC04LjQtMS43LTExLjQtNC44bC0zMi0zMi42Yy00LjUtNC42LTQuNS0xMi4xLjEtMTYuN2wxMi41LTEyLjV2LTguN2MwLTMtMS4yLTUuOS0zLjMtOGwtOS40LTkuNGMtMi4xLTIuMS01LTMuMy04LTMuM2gtMTZjLTYuMiAwLTExLjMtNS4xLTExLjMtMTEuMyAwLTMgMS4yLTUuOSAzLjMtOGw5LjQtOS40YzIuMS0yLjEgNS0zLjMgOC0zLjNoMzJjNi4yIDAgMTEuMy01LjEgMTEuMy0xMS4zdi05LjRjMC02LjItNS4xLTExLjMtMTEuMy0xMS4zaC0zNi43Yy04LjggMC0xNiA3LjItMTYgMTZ2NC41YzAgNi45LTQuNCAxMy0xMC45IDE1LjJsLTMxLjYgMTAuNWMtMy4zIDEuMS01LjUgNC4xLTUuNSA3LjZ2Mi4yYzAgNC40LTMuNiA4LTggOGgtMTZjLTQuNCAwLTgtMy42LTgtOHMtMy42LTgtOC04SDI0N2MtMyAwLTUuOCAxLjctNy4yIDQuNGwtOS40IDE4LjdjLTIuNyA1LjQtOC4yIDguOC0xNC4zIDguOEgxOTRjLTguOCAwLTE2LTcuMi0xNi0xNlYxOTljMC00LjIgMS43LTguMyA0LjctMTEuM2wyMC4xLTIwLjFjNC42LTQuNiA3LjItMTAuOSA3LjItMTcuNSAwLTMuNCAyLjItNi41IDUuNS03LjZsNDAtMTMuM2MxLjctLjYgMy4yLTEuNSA0LjQtMi43bDI2LjgtMjYuOGMyLjEtMi4xIDMuMy01IDMuMy04IDAtNi4yLTUuMS0xMS4zLTExLjMtMTEuM0gyNThsLTE2IDE2djhjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04di0yMGMwLTIuNSAxLjItNC45IDMuMi02LjRsMjguOS0yMS43YzEuOS0uMSAzLjgtLjMgNS43LS4zQzM1OC4zIDU2IDQ0OCAxNDUuNyA0NDggMjU2ek0xMzAuMSAxNDkuMWMwLTMgMS4yLTUuOSAzLjMtOGwyNS40LTI1LjRjMi4xLTIuMSA1LTMuMyA4LTMuMyA2LjIgMCAxMS4zIDUuMSAxMS4zIDExLjN2MTZjMCAzLTEuMiA1LjktMy4zIDhsLTkuNCA5LjRjLTIuMSAyLjEtNSAzLjMtOCAzLjNoLTE2Yy02LjIgMC0xMS4zLTUuMS0xMS4zLTExLjN6bTEyOCAzMDYuNHYtNy4xYzAtOC44LTcuMi0xNi0xNi0xNmgtMjAuMmMtMTAuOCAwLTI2LjctNS4zLTM1LjQtMTEuOGwtMjIuMi0xNi43Yy0xMS41LTguNi0xOC4yLTIyLjEtMTguMi0zNi40di0yMy45YzAtMTYgOC40LTMwLjggMjIuMS0zOWw0Mi45LTI1LjdjNy4xLTQuMiAxNS4yLTYuNSAyMy40LTYuNWgzMS4yYzEwLjkgMCAyMS40IDMuOSAyOS42IDEwLjlsNDMuMiAzNy4xaDE4LjNjOC41IDAgMTYuNiAzLjQgMjIuNiA5LjRsMTcuMyAxNy4zYzMuNCAzLjQgOC4xIDUuMyAxMi45IDUuM0g0MjNjLTMyLjQgNTguOS05My44IDk5LjUtMTY0LjkgMTAzLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsb2JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNi41IDE2MEMzMjIgNzAuNyAyODcuOCA4IDI0OCA4cy03NCA2Mi43LTg4LjUgMTUyaDE3N3pNMTUyIDI1NmMwIDIyLjIgMS4yIDQzLjUgMy4zIDY0aDE4NS4zYzIuMS0yMC41IDMuMy00MS44IDMuMy02NHMtMS4yLTQzLjUtMy4zLTY0SDE1NS4zYy0yLjEgMjAuNS0zLjMgNDEuOC0zLjMgNjR6bTMyNC43LTk2Yy0yOC42LTY3LjktODYuNS0xMjAuNC0xNTgtMTQxLjYgMjQuNCAzMy44IDQxLjIgODQuNyA1MCAxNDEuNmgxMDh6TTE3Ny4yIDE4LjRDMTA1LjggMzkuNiA0Ny44IDkyLjEgMTkuMyAxNjBoMTA4YzguNy01Ni45IDI1LjUtMTA3LjggNDkuOS0xNDEuNnpNNDg3LjQgMTkySDM3Mi43YzIuMSAyMSAzLjMgNDIuNSAzLjMgNjRzLTEuMiA0My0zLjMgNjRoMTE0LjZjNS41LTIwLjUgOC42LTQxLjggOC42LTY0cy0zLjEtNDMuNS04LjUtNjR6TTEyMCAyNTZjMC0yMS41IDEuMi00MyAzLjMtNjRIOC42QzMuMiAyMTIuNSAwIDIzMy44IDAgMjU2czMuMiA0My41IDguNiA2NGgxMTQuNmMtMi0yMS0zLjItNDIuNS0zLjItNjR6bTM5LjUgOTZjMTQuNSA4OS4zIDQ4LjcgMTUyIDg4LjUgMTUyczc0LTYyLjcgODguNS0xNTJoLTE3N3ptMTU5LjMgMTQxLjZjNzEuNC0yMS4yIDEyOS40LTczLjcgMTU4LTE0MS42aC0xMDhjLTguOCA1Ni45LTI1LjYgMTA3LjgtNTAgMTQxLjZ6TTE5LjMgMzUyYzI4LjYgNjcuOSA4Ni41IDEyMC40IDE1OCAxNDEuNi0yNC40LTMzLjgtNDEuMi04NC43LTUwLTE0MS42aC0xMDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvbGZCYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0MTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDQxNmgyMjRjMCAxNy43LTE0LjMgMzItMzIgMzJoLTE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYyMGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTIwYzAtMTcuNy0xNC4zLTMyLTMyLTMyaC0xNmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6bTMyMC0yMDhjMCA3NC4yLTM5IDEzOS4yLTk3LjUgMTc2aC0yMjFDMzkgMzQ3LjIgMCAyODIuMiAwIDIwOCAwIDkzLjEgOTMuMSAwIDIwOCAwczIwOCA5My4xIDIwOCAyMDh6bS0xODAuMSA0My45YzE4LjMgMCAzMy4xLTE0LjggMzMuMS0zMy4xIDAtMTQuNC05LjMtMjYuMy0yMi4xLTMwLjkgOS42IDI2LjgtMTUuNiA1MS4zLTQxLjkgNDEuOSA0LjYgMTIuOCAxNi41IDIyLjEgMzAuOSAyMi4xem00OS4xIDQ2LjljMC0xNC40LTkuMy0yNi4zLTIyLjEtMzAuOSA5LjYgMjYuOC0xNS42IDUxLjMtNDEuOSA0MS45IDQuNiAxMi44IDE2LjUgMjIuMSAzMC45IDIyLjEgMTguMyAwIDMzLjEtMTQuOSAzMy4xLTMzLjF6bTY0LTY0YzAtMTQuNC05LjMtMjYuMy0yMi4xLTMwLjkgOS42IDI2LjgtMTUuNiA1MS4zLTQxLjkgNDEuOSA0LjYgMTIuOCAxNi41IDIyLjEgMzAuOSAyMi4xIDE4LjMgMCAzMy4xLTE0LjkgMzMuMS0zMy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb3B1cmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAzNTJoLTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZoLTE2di04MGMwLTguOC03LjItMTYtMTYtMTZoLTE2VjE2YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djE2aC02NFYxNmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnYxNmgtNjRWMTZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2MTZoLTY0VjE2YzAtOC44LTcuMi0xNi0xNi0xNlM5NiA3LjIgOTYgMTZ2MTEySDgwYy04LjggMC0xNiA3LjItMTYgMTZ2ODBINDhjLTguOCAwLTE2IDcuMi0xNiAxNnYxMTJIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYxMjhjMCA4LjggNy4yIDE2IDE2IDE2aDgwVjM1MmgzMlYyMjRoMzJ2LTk2aDMydjk2aC0zMnYxMjhoLTMydjE2MGg4MHYtODBjMC04LjggNy4yLTE2IDE2LTE2aDY0YzguOCAwIDE2IDcuMiAxNiAxNnY4MGg4MFYzNTJoLTMyVjIyNGgtMzJ2LTk2aDMydjk2aDMydjEyOGgzMnYxNjBoODBjOC44IDAgMTYtNy4yIDE2LTE2VjM2OGMwLTguOC03LjItMTYtMTYtMTZ6TTIzMiAxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnY0OGgtNDh6bTU2IDE3NmgtNjR2LTY0YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyYWR1YXRpb25DYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjIyLjM0IDE1My4yTDM0My40IDY3LjVjLTE1LjItNC42Ny0zMS42LTQuNjctNDYuNzkgMEwxNy42NiAxNTMuMmMtMjMuNTQgNy4yMy0yMy41NCAzOC4zNiAwIDQ1LjU5bDQ4LjYzIDE0Ljk0Yy0xMC42NyAxMy4xOS0xNy4yMyAyOS4yOC0xNy44OCA0Ni45QzM4Ljc4IDI2Ni4xNSAzMiAyNzYuMTEgMzIgMjg4YzAgMTAuNzggNS42OCAxOS44NSAxMy44NiAyNS42NUwyMC4zMyA0MjguNTNDMTguMTEgNDM4LjUyIDI1LjcxIDQ0OCAzNS45NCA0NDhoNTYuMTFjMTAuMjQgMCAxNy44NC05LjQ4IDE1LjYyLTE5LjQ3TDgyLjE0IDMxMy42NUM5MC4zMiAzMDcuODUgOTYgMjk4Ljc4IDk2IDI4OGMwLTExLjU3LTYuNDctMjEuMjUtMTUuNjYtMjYuODcuNzYtMTUuMDIgOC40NC0yOC4zIDIwLjY5LTM2LjcyTDI5Ni42IDI4NC41YzkuMDYgMi43OCAyNi40NCA2LjI1IDQ2Ljc5IDBsMjc4Ljk1LTg1LjdjMjMuNTUtNy4yNCAyMy41NS0zOC4zNiAwLTQ1LjZ6TTM1Mi43OSAzMTUuMDljLTI4LjUzIDguNzYtNTIuODQgMy45Mi02NS41OSAwbC0xNDUuMDItNDQuNTVMMTI4IDM4NGMwIDM1LjM1IDg1Ljk2IDY0IDE5MiA2NHMxOTItMjguNjUgMTkyLTY0bC0xNC4xOC0xMTMuNDctMTQ1LjAzIDQ0LjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmVhdGVyVGhhbkVxdWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU1LjIyIDEwNy42OWwxNzUuNTYgNjguMDktMTc1LjQ0IDY4LjA1Yy0xOC4zOSA2LjAzLTI3Ljg4IDI0LjM5LTIxLjIgNDFsMTIuMDkgMzAuMDhjNi42OCAxNi42MSAyNi45OSAyNS4xOSA0NS4zOCAxOS4xNUwzOTMuMDIgMjE0LjJjMTMuNzctNC41MiAyMi45OC0xNi42MSAyMi45OC0zMC4xN3YtMTUuOTZjMC0xMy41Ni05LjIxLTI1LjY1LTIyLjk4LTMwLjE3TDkxLjMgMTcuOTJjLTE4LjI5LTYtMzguNTEgMi41My00NS4xNSAxOS4wNkwzNC4xMiA2Ni45Yy02LjY0IDE2LjUzIDIuODEgMzQuNzkgMjEuMSA0MC43OXpNNDI0IDQwMEgyNGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY0OGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQwMGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di00OGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmVhdGVyVGhhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjUuNTIgMjA5Ljg1TDU5LjIyIDY3LjAxYy0xNi4wNi03LjQ5LTM1LjE1LS41NC00Mi42NCAxNS41MkwzLjAxIDExMS42MWMtNy40OSAxNi4wNi0uNTQgMzUuMTUgMTUuNTIgNDIuNjRMMjM2Ljk2IDI1Ni4xIDE4LjQ5IDM1Ny45OUMyLjQ3IDM2NS40Ni00LjQ2IDM4NC41IDMuMDEgNDAwLjUybDEzLjUyIDI5QzI0IDQ0NS41NCA0My4wNCA0NTIuNDcgNTkuMDYgNDQ1bDMwNi40Ny0xNDIuOTFhMzIuMDAzIDMyLjAwMyAwIDAgMCAxOC40OC0yOXYtMzQuMjNjLS4wMS0xMi40NS03LjIxLTIzLjc2LTE4LjQ5LTI5LjAxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmltYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTE0NCA0MDBoLThjLTE3LjcgMC0zMi0xNC4zLTMyLTMydi04aDQwdjQwem0wLTU2aC00MHYtOGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg4djQwem0tOC0xMzZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzJ6bTcyIDE5MmgtNDh2LTQwaDQ4djQwem0wLTU2aC00OHYtNDBoNDh2NDB6bTY0IDU2aC00OHYtNDBoNDh2NDB6bTAtNTZoLTQ4di00MGg0OHY0MHptNjQgNTZoLTQ4di00MGg0OHY0MHptMC01NmgtNDh2LTQwaDQ4djQwem0tOC0xMDRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem02NCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJoLTh2LTQwaDQwdjh6bTAtMjRoLTQwdi00MGg4YzE3LjcgMCAzMiAxNC4zIDMyIDMydjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaW5BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptNjMuNyAxMjguN2M3LjYtMTEuNCAyNC43LTExLjcgMzIuNyAwIDEyLjQgMTguNCAxNS4xIDM2LjkgMTUuNyA1NS4zLS41IDE4LjQtMy4zIDM2LjktMTUuNyA1NS4zLTcuNiAxMS40LTI0LjcgMTEuNy0zMi43IDAtMTIuNC0xOC40LTE1LjEtMzYuOS0xNS43LTU1LjMuNS0xOC40IDMuMy0zNi45IDE1LjctNTUuM3ptLTE2MCAwYzcuNi0xMS40IDI0LjctMTEuNyAzMi43IDAgMTIuNCAxOC40IDE1LjEgMzYuOSAxNS43IDU1LjMtLjUgMTguNC0zLjMgMzYuOS0xNS43IDU1LjMtNy42IDExLjQtMjQuNyAxMS43LTMyLjcgMC0xMi40LTE4LjQtMTUuMS0zNi45LTE1LjctNTUuMy41LTE4LjQgMy4zLTM2LjkgMTUuNy01NS4zek0yNDggNDMyYy02MC42IDAtMTM0LjUtMzguMy0xNDMuOC05My4zLTItMTEuOCA5LjMtMjEuNiAyMC43LTE3LjlDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuNC0zLjcgMjIuNiA2LjEgMjAuNyAxNy45LTkuMyA1NS04My4yIDkzLjMtMTQzLjggOTMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpbkJlYW1Td2VhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTA0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTYgMTI4YzI2LjUgMCA0OC0yMSA0OC00NyAwLTIwLTI4LjUtNjAuNC00MS42LTc3LjgtMy4yLTQuMy05LjYtNC4zLTEyLjggMEM0MzYuNSAyMC42IDQwOCA2MSA0MDggODFjMCAyNiAyMS41IDQ3IDQ4IDQ3em0wIDMyYy00NC4xIDAtODAtMzUuNC04MC03OSAwLTQuNC4zLTE0LjIgOC4xLTMyLjJDMzQ1IDIzLjEgMjk4LjMgOCAyNDggOCAxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4YzAtMzUuMS03LjQtNjguNC0yMC41LTk4LjYtNi4zIDEuNS0xMi43IDIuNi0xOS41IDIuNnptLTEyOC04YzIzLjggMCA1Mi43IDI5LjMgNTYgNzEuNC43IDguNi0xMC44IDEyLTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjEgNy40LTE1LjYgNC0xNC45LTQuNSAzLjEtNDIuMSAzMi03MS40IDU1LjgtNzEuNHptLTE2MCAwYzIzLjggMCA1Mi43IDI5LjMgNTYgNzEuNC43IDguNi0xMC44IDEyLTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjIgNy40LTE1LjYgNC0xNC45LTQuNSAzLjEtNDIuMSAzMi03MS40IDU1LjgtNzEuNHptODAgMjgwYy02MC42IDAtMTM0LjUtMzguMy0xNDMuOC05My4zLTItMTEuOCA5LjMtMjEuNiAyMC43LTE3LjlDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuNS0zLjcgMjIuNiA2LjIgMjAuNyAxNy45LTkuMyA1NS04My4yIDkzLjMtMTQzLjggOTMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpbkJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptODAgMTQ0YzIzLjggMCA1Mi43IDI5LjMgNTYgNzEuNC43IDguNi0xMC44IDExLjktMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMSA3LjMtMTUuNiA0LTE0LjktNC41IDMuMS00Mi4xIDMyLTcxLjQgNTUuOC03MS40em0tMTYwIDBjMjMuOCAwIDUyLjcgMjkuMyA1NiA3MS40LjcgOC42LTEwLjggMTEuOS0xNC45IDQuNWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4yIDcuNC0xNS42IDQtMTQuOS00LjUgMy4xLTQyLjEgMzItNzEuNCA1NS44LTcxLjR6bTgwIDI4MGMtNjAuNiAwLTEzNC41LTM4LjMtMTQzLjgtOTMuMy0yLTExLjkgOS40LTIxLjYgMjAuNy0xNy45QzE1NS4xIDMzMC41IDIwMCAzMzYgMjQ4IDMzNnM5Mi45LTUuNSAxMjMuMS0xNS4yYzExLjQtMy43IDIyLjYgNi4xIDIwLjcgMTcuOS05LjMgNTUtODMuMiA5My4zLTE0My44IDkzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaW5IZWFydHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNOTAuNCAxODMuNmM2LjctMTcuNiAyNi43LTI2LjcgNDQuOS0yMS45bDcuMSAxLjkgMi03LjFjNS0xOC4xIDIyLjgtMzAuOSA0MS41LTI3LjkgMjEuNCAzLjQgMzQuNCAyNC4yIDI4LjggNDQuNUwxOTUuMyAyNDNjLTEuMiA0LjUtNS45IDcuMi0xMC41IDZsLTcwLjItMTguMmMtMjAuNC01LjQtMzEuOS0yNy0yNC4yLTQ3LjJ6TTI0OCA0MzJjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS44IDkuMi0yMS41IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS40LTMuNiAyMi42IDYuMSAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zem0xMzMuNC0yMDEuM2wtNzAuMiAxOC4yYy00LjUgMS4yLTkuMi0xLjUtMTAuNS02TDI4MS4zIDE3M2MtNS42LTIwLjMgNy40LTQxLjEgMjguOC00NC41IDE4LjYtMyAzNi40IDkuOCA0MS41IDI3LjlsMiA3LjEgNy4xLTEuOWMxOC4yLTQuNyAzOC4yIDQuMyA0NC45IDIxLjkgNy43IDIwLjMtMy44IDQxLjktMjQuMiA0Ny4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluU3F1aW50VGVhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA5LjYgMTExLjljMjIuNi0zLjIgNzMuNS0xMiA4OC4zLTI2LjggMTkuMi0xOS4yIDE4LjktNTAuNi0uNy03MC4yUzQ0Ni01IDQyNi45IDE0LjJjLTE0LjggMTQuOC0yMy41IDY1LjctMjYuOCA4OC4zLS44IDUuNSAzLjkgMTAuMiA5LjUgOS40ek0xMDIuNCA0MDAuMWMtMjIuNiAzLjItNzMuNSAxMi04OC4zIDI2LjgtMTkuMSAxOS4xLTE4LjggNTAuNi44IDcwLjJzNTEgMTkuOSA3MC4yLjdjMTQuOC0xNC44IDIzLjUtNjUuNyAyNi44LTg4LjMuOC01LjUtMy45LTEwLjItOS41LTkuNHptMzExLjctMjU2LjVjLTMzIDMuOS00OC42LTI1LjEtNDUuNy00NS43IDMuNC0yNCA3LjQtNDIuMSAxMS41LTU2LjVDMjg1LjEtMTMuNCAxNjEuOC0uNSA4MC42IDgwLjYtLjUgMTYxLjctMTMuNCAyODUgNDEuNCAzNzkuOWMxNC40LTQuMSAzMi40LTggNTYuNS0xMS41IDMzLjItMy45IDQ4LjYgMjUuMiA0NS43IDQ1LjctMy40IDI0LTcuNCA0Mi4xLTExLjUgNTYuNSA5NC44IDU0LjggMjE4LjEgNDEuOSAyOTkuMy0zOS4yczk0LTIwNC40IDM5LjItMjk5LjNjLTE0LjQgNC4xLTMyLjUgOC01Ni41IDExLjV6TTI1NS43IDEwNmMzLjMtMTMuMiAyMi40LTExLjUgMjMuNiAxLjhsNC44IDUyLjMgNTIuMyA0LjhjMTMuNCAxLjIgMTQuOSAyMC4zIDEuOCAyMy42bC05MC41IDIyLjZjLTguOSAyLjItMTYuNy01LjktMTQuNS0xNC41bDIyLjUtOTAuNnptLTkwLjkgMjMwLjNMMTYwIDI4NGwtNTIuMy00LjhjLTEzLjQtMS4yLTE0LjktMjAuMy0xLjgtMjMuNmw5MC41LTIyLjZjOC44LTIuMiAxNi43IDUuOCAxNC41IDE0LjVMMTg4LjMgMzM4Yy0zLjEgMTMuMi0yMi4yIDExLjctMjMuNS0xLjd6bTIxNS43IDQ0LjJjLTI5LjMgMjkuMy03NS43IDUwLjQtMTE2LjcgNTAuNC0xOC45IDAtMzYuNi00LjUtNTEtMTQuNy05LjgtNi45LTguNy0yMS44IDItMjcuMiAyOC4zLTE0LjYgNjMuOS00Mi40IDk3LjgtNzYuM3M2MS43LTY5LjYgNzYuMy05Ny44YzUuNC0xMC41IDIwLjItMTEuOSAyNy4zLTIgMzIuMyA0NS4zIDcuMSAxMjQuNy0zNS43IDE2Ny42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluU3F1aW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTMzLjggMTg5LjdsODAtNDhjMTEuNi02LjkgMjQgNy43IDE1LjQgMThMMzQzLjYgMjA4bDMzLjYgNDAuM2M4LjcgMTAuNC0zLjkgMjQuOC0xNS40IDE4bC04MC00OGMtNy43LTQuNy03LjctMTUuOSAwLTIwLjZ6bS0xNjMtMzBjLTguNi0xMC4zIDMuOC0yNC45IDE1LjQtMThsODAgNDhjNy44IDQuNyA3LjggMTUuOSAwIDIwLjZsLTgwIDQ4Yy0xMS41IDYuOC0yNC03LjYtMTUuNC0xOGwzMy42LTQwLjMtMzMuNi00MC4zek0yNDggNDMyYy02MC42IDAtMTM0LjUtMzguMy0xNDMuOC05My4zLTItMTEuOSA5LjQtMjEuNiAyMC43LTE3LjlDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuNS0zLjcgMjIuNiA2LjIgMjAuNyAxNy45LTkuMyA1NS04My4yIDkzLjMtMTQzLjggOTMuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpblN0YXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTk0LjYgMTY4LjlsMzQuOS01IDE1LjUtMzEuNmMyLjktNS44IDExLTUuOCAxMy45IDBsMTUuNSAzMS42IDM0LjkgNWM2LjIgMSA4LjkgOC42IDQuMyAxMy4ybC0yNS40IDI0LjYgNiAzNC45YzEgNi4yLTUuMyAxMS0xMSA3LjlMMTUyIDIzMy4zbC0zMS4zIDE2LjNjLTUuNyAzLjEtMTItMS43LTExLTcuOWw2LTM0LjktMjUuNC0yNC42Yy00LjYtNC43LTEuOS0xMi4zIDQuMy0xMy4zek0yNDggNDMyYy02MC42IDAtMTM0LjUtMzguMy0xNDMuOC05My4zLTItMTEuOCA5LjMtMjEuNSAyMC43LTE3LjlDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuNS0zLjcgMjIuNiA2LjEgMjAuNyAxNy45LTkuMyA1NS04My4yIDkzLjMtMTQzLjggOTMuM3ptMTU3LjctMjQ5LjlsLTI1LjQgMjQuNiA2IDM0LjljMSA2LjItNS4zIDExLTExIDcuOUwzNDQgMjMzLjNsLTMxLjMgMTYuM2MtNS43IDMuMS0xMi0xLjctMTEtNy45bDYtMzQuOS0yNS40LTI0LjZjLTQuNS00LjYtMS45LTEyLjIgNC4zLTEzLjJsMzQuOS01IDE1LjUtMzEuNmMyLjktNS44IDExLTUuOCAxMy45IDBsMTUuNSAzMS42IDM0LjkgNWM2LjMuOSA5IDguNSA0LjQgMTMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpblRlYXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwMi40IDI1Ni4xYy0yMi42IDMuMi03My41IDEyLTg4LjMgMjYuOC0xOS4xIDE5LjEtMTguOCA1MC42LjggNzAuMnM1MSAxOS45IDcwLjIuN2MxNC44LTE0LjggMjMuNS02NS43IDI2LjgtODguMy44LTUuNS0zLjktMTAuMi05LjUtOS40em01MjMuNCAyNi44Yy0xNC44LTE0LjgtNjUuNy0yMy41LTg4LjMtMjYuOC01LjUtLjgtMTAuMyAzLjktOS41IDkuNSAzLjIgMjIuNiAxMiA3My41IDI2LjggODguMyAxOS4yIDE5LjIgNTAuNiAxOC45IDcwLjItLjdzMjAtNTEuMi44LTcwLjN6bS0xMjkuNC0xMi44Yy0zLjgtMjYuNiAxOS4xLTQ5LjUgNDUuNy00NS43IDguOSAxLjMgMTYuOCAyLjcgMjQuMyA0LjFDNTUyLjcgMTA0LjUgNDQ3LjcgOCAzMjAgOFM4Ny4zIDEwNC41IDczLjYgMjI4LjVjNy41LTEuNCAxNS40LTIuOCAyNC4zLTQuMSAzMy4yLTMuOSA0OC42IDI1LjMgNDUuNyA0NS43LTExLjggODIuMy0yOS45IDEwMC40LTM1LjggMTA2LjQtLjkuOS0yIDEuNi0zIDIuNSA0Mi43IDc0LjYgMTIzIDEyNSAyMTUuMiAxMjVzMTcyLjUtNTAuNCAyMTUuMi0xMjUuMWMtMS0uOS0yLjEtMS41LTMtMi41LTUuOS01LjktMjQtMjQtMzUuOC0xMDYuM3pNNDAwIDE1MmMyMy44IDAgNTIuNyAyOS4zIDU2IDcxLjQuNyA4LjYtMTAuOCAxMi0xNC45IDQuNWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4yIDcuNC0xNS42IDQtMTQuOS00LjUgMy4xLTQyLjEgMzItNzEuNCA1NS44LTcxLjR6bS0xNjAgMGMyMy44IDAgNTIuNyAyOS4zIDU2IDcxLjQuNyA4LjYtMTAuOCAxMi0xNC45IDQuNWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4yIDcuNC0xNS42IDQtMTQuOS00LjUgMy4xLTQyLjEgMzItNzEuNCA1NS44LTcxLjR6bTgwIDI4MGMtNjAuNiAwLTEzNC41LTM4LjMtMTQzLjgtOTMuMy0yLTExLjcgOS4yLTIxLjYgMjAuNy0xNy45QzIyNy4xIDMzMC41IDI3MiAzMzYgMzIwIDMzNnM5Mi45LTUuNSAxMjMuMS0xNS4yYzExLjQtMy43IDIyLjYgNi4xIDIwLjcgMTcuOS05LjMgNTUtODMuMiA5My4zLTE0My44IDkzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaW5Ub25ndWVTcXVpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjkzLjEgMzc0LjZjLTE0LjQtNi41LTMxLjEgMi4yLTM0LjYgMTcuNmwtMS44IDcuOGMtMi4xIDkuMi0xNS4yIDkuMi0xNy4zIDBsLTEuOC03LjhjLTMuNS0xNS40LTIwLjItMjQuMS0zNC42LTE3LjYtLjkuNC4zLS4yLTE4LjkgOS40djYzYzAgMzUuMiAyOCA2NC41IDYzLjEgNjQuOSAzNS43LjUgNjQuOS0yOC40IDY0LjktNjR2LTY0Yy0xOS41LTkuNi0xOC4yLTguOS0xOS05LjN6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2YzAgMTA2LjMgNjcgMTk2LjcgMTYxIDIzMi01LjYtMTIuMi05LTI1LjctOS00MHYtNDUuNWMtMjQuNy0xNi4yLTQzLjUtMzguMS00Ny44LTYzLjgtMi0xMS44IDkuMi0yMS41IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS40LTMuNyAyMi42IDYuMSAyMC43IDE3LjktNC4zIDI1LjctMjMuMSA0Ny42LTQ3LjggNjMuOFY0NDhjMCAxNC4zLTMuNCAyNy44LTkgNDAgOTQtMzUuMyAxNjEtMTI1LjcgMTYxLTIzMkM0OTYgMTE5IDM4NSA4IDI0OCA4em0tMzMuOCAyMTAuM2wtODAgNDhjLTExLjUgNi44LTI0LTcuNi0xNS40LTE4bDMzLjYtNDAuMy0zMy42LTQwLjNjLTguNi0xMC4zIDMuOC0yNC45IDE1LjQtMThsODAgNDhjNy43IDQuNyA3LjcgMTUuOSAwIDIwLjZ6bTE2MyAzMGM4LjcgMTAuNC0zLjkgMjQuOC0xNS40IDE4bC04MC00OGMtNy44LTQuNy03LjgtMTUuOSAwLTIwLjZsODAtNDhjMTEuNy02LjkgMjMuOSA3LjcgMTUuNCAxOEwzNDMuNiAyMDhsMzMuNiA0MC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluVG9uZ3VlV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDQgMTg0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZjMCAxMDYuMyA2NyAxOTYuNyAxNjEgMjMyLTUuNi0xMi4yLTktMjUuNy05LTQwdi00NS41Yy0yNC43LTE2LjItNDMuNS0zOC4xLTQ3LjgtNjMuOC0yLTExLjggOS4zLTIxLjUgMjAuNy0xNy45QzE1NS4xIDMzMC41IDIwMCAzMzYgMjQ4IDMzNnM5Mi45LTUuNSAxMjMuMS0xNS4yYzExLjUtMy43IDIyLjYgNi4xIDIwLjcgMTcuOS00LjMgMjUuNy0yMy4xIDQ3LjYtNDcuOCA2My44VjQ0OGMwIDE0LjMtMy40IDI3LjgtOSA0MCA5NC0zNS4zIDE2MS0xMjUuNyAxNjEtMjMyQzQ5NiAxMTkgMzg1IDggMjQ4IDh6bS01NiAyMjVsLTkuNS04LjVjLTE0LjgtMTMuMi00Ni4yLTEzLjItNjEgMEwxMTIgMjMzYy04LjUgNy40LTIxLjYuMy0xOS44LTEwLjggNC0yNS4yIDM0LjItNDIuMSA1OS45LTQyLjFTMjA4IDE5NyAyMTIgMjIyLjJjMS42IDExLjEtMTEuNiAxOC4yLTIwIDEwLjh6bTE1MiAzOWMtMzUuMyAwLTY0LTI4LjctNjQtNjRzMjguNy02NCA2NC02NCA2NCAyOC43IDY0IDY0LTI4LjcgNjQtNjQgNjR6bS01MC45IDEwMi42Yy0xNC40LTYuNS0zMS4xIDIuMi0zNC42IDE3LjZsLTEuOCA3LjhjLTIuMSA5LjItMTUuMiA5LjItMTcuMyAwbC0xLjgtNy44Yy0zLjUtMTUuNC0yMC4yLTI0LjEtMzQuNi0xNy42LS45LjQuMy0uMi0xOC45IDkuNHY2M2MwIDM1LjIgMjggNjQuNSA2My4xIDY0LjkgMzUuNy41IDY0LjktMjguNCA2NC45LTY0di02NGMtMTkuNS05LjYtMTguMi04LjktMTktOS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluVG9uZ3VlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2YzAgMTA2LjMgNjcgMTk2LjcgMTYxIDIzMi01LjYtMTIuMi05LTI1LjctOS00MHYtNDUuNWMtMjQuNy0xNi4yLTQzLjUtMzguMS00Ny44LTYzLjgtMi0xMS44IDkuMy0yMS41IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS40LTMuNiAyMi42IDYuMSAyMC43IDE3LjktNC4zIDI1LjctMjMuMSA0Ny42LTQ3LjggNjMuOFY0NDhjMCAxNC4zLTMuNCAyNy44LTkgNDAgOTQtMzUuMyAxNjEtMTI1LjcgMTYxLTIzMkM0OTYgMTE5IDM4NSA4IDI0OCA4em0tODAgMjMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTYwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0tMzQuOSAxMzQuNmMtMTQuNC02LjUtMzEuMSAyLjItMzQuNiAxNy42bC0xLjggNy44Yy0yLjEgOS4yLTE1LjIgOS4yLTE3LjMgMGwtMS44LTcuOGMtMy41LTE1LjQtMjAuMi0yNC4xLTM0LjYtMTcuNi0uOS40LjMtLjItMTguOSA5LjR2NjNjMCAzNS4yIDI4IDY0LjUgNjMuMSA2NC45IDM1LjcuNSA2NC45LTI4LjQgNjQuOS02NHYtNjRjLTE5LjUtOS42LTE4LjItOC45LTE5LTkuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpbldpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZjMCAxMzcgMTExIDI0OCAyNDggMjQ4czI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOCAwIDExOSAwIDI1NnptMjAwLTQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMnptMTY4IDI1bC05LjUtOC41Yy0xNC44LTEzLjItNDYuMi0xMy4yLTYxIDBMMjg4IDIzM2MtOC4zIDcuNC0yMS42LjQtMTkuOC0xMC44IDQtMjUuMiAzNC4yLTQyLjEgNTkuOS00Mi4xUzM4NCAxOTcgMzg4IDIyMi4yYzEuNiAxMS0xMS41IDE4LjItMjAgMTAuOHptLTI0My4xIDg3LjhDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuMy0zLjcgMjIuNiA2IDIwLjcgMTcuOS05LjIgNTUtODMuMiA5My4zLTE0My44IDkzLjNzLTEzNC41LTM4LjMtMTQzLjgtOTMuM2MtMi0xMS45IDkuMy0yMS42IDIwLjctMTcuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em04MCAxNjhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem0tMTYwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem04MCAyNTZjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS44IDkuMy0yMS42IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS4zLTMuNyAyMi42IDYuMSAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmlwSG9yaXpvbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAyODhIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0xNjAgMGgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0xNjAgMGgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek05NiA5NkgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTE2MCAwaC02NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTE2MCAwaC02NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaXBMaW5lc1ZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDQ5NlYxNmMwLTguOC03LjItMTYtMTYtMTZINDhjLTguOCAwLTE2IDcuMi0xNiAxNnY0ODBjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnptMTI4IDBWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4MGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmlwTGluZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDI4OEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0ODBjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bTAtMTI4SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4MGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpcFZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDMySDMyQzE0LjMzIDMyIDAgNDYuMzMgMCA2NHY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMCAxNjBIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0wIDE2MEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTI4OCAzMmgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTAgMTYwaC02NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTAgMTYwaC02NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUd1aXRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuNjMgMzlMNDczIDkuMzdhMzIgMzIgMCAwIDAtNDUuMjYgMEwzODEuNDYgNTUuN2EzNS4xNCAzNS4xNCAwIDAgMC04LjUzIDEzLjc5TDM2MC43NyAxMDZsLTc2LjI2IDc2LjI2Yy0xMi4xNi04Ljc2LTI1LjUtMTUuNzQtNDAuMS0xOS4xNC0zMy40NS03Ljc4LTY3LS44OC04OS44OCAyMmE4Mi40NSA4Mi40NSAwIDAgMC0yMC4yNCAzMy40N2MtNiAxOC41Ni0yMy4yMSAzMi42OS00Mi4xNSAzNC40Ni0yMy43IDIuMjctNDUuNzMgMTEuNDUtNjIuNjEgMjguNDRDLTE2LjExIDMyNy03LjkgNDA5IDQ3LjU4IDQ2NC40NVMxODUgNTI4IDIzMC41NiA0ODIuNTJjMTctMTYuODggMjYuMTYtMzguOSAyOC40NS02Mi43MSAxLjc2LTE4Ljg1IDE1Ljg5LTM2LjEzIDM0LjQzLTQyLjE0YTgyLjYgODIuNiAwIDAgMCAzMy40OC0yMC4yNWMyMi44Ny0yMi44OCAyOS43NC01Ni4zNiAyMi04OS43NS0zLjM5LTE0LjY0LTEwLjM3LTI4LTE5LjE2LTQwLjJMNDA2IDE1MS4yM2wzNi40OC0xMi4xNmEzNS4xNCAzNS4xNCAwIDAgMCAxMy43OS04LjUzbDQ2LjMzLTQ2LjMyYTMyIDMyIDAgMCAwIC4wMy00NS4yMnpNMjA4IDM1MmE0OCA0OCAwIDEgMSA0OC00OCA0OCA0OCAwIDAgMS00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggODB2MzUyYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHptLTExMiA0OGgtMzJjLTguODM3IDAtMTYgNy4xNjMtMTYgMTZ2ODBIMTYwdi04MGMwLTguODM3LTcuMTYzLTE2LTE2LTE2aC0zMmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnYyMjRjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmgzMmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di04MGgxMjh2ODBjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmgzMmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2VjE0NGMwLTguODM3LTcuMTYzLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW1idXJnZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDI1Nkg0OGE0OCA0OCAwIDAgMCAwIDk2aDQxNmE0OCA0OCAwIDAgMCAwLTk2em0xNiAxMjhIMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MTZhNjQgNjQgMCAwIDAgNjQgNjRoMzUyYTY0IDY0IDAgMCAwIDY0LTY0di0xNmExNiAxNiAwIDAgMC0xNi0xNnpNNTguNjQgMjI0aDM5NC43MmMzNC41NyAwIDU0LjYyLTQzLjkgMzQuODItNzUuODhDNDQ4IDgzLjIgMzU5LjU1IDMyLjEgMjU2IDMyYy0xMDMuNTQuMS0xOTIgNTEuMi0yMzIuMTggMTE2LjExQzQgMTgwLjA5IDI0LjA3IDIyNCA1OC42NCAyMjR6TTM4NCAxMTJhMTYgMTYgMCAxIDEtMTYgMTYgMTYgMTYgMCAwIDEgMTYtMTZ6TTI1NiA4MGExNiAxNiAwIDEgMS0xNiAxNiAxNiAxNiAwIDAgMSAxNi0xNnptLTEyOCAzMmExNiAxNiAwIDEgMS0xNiAxNiAxNiAxNiAwIDAgMSAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFtbWVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3MS4zMSAxOTMuOTRsLTIyLjYzLTIyLjYzYy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwbC0xMS4zMSAxMS4zMS0yOC45LTI4LjljNS42My0yMS4zMS4zNi00NC45LTE2LjM1LTYxLjYxbC00NS4yNS00NS4yNWMtNjIuNDgtNjIuNDgtMTYzLjc5LTYyLjQ4LTIyNi4yOCAwbDkwLjUxIDQ1LjI1djE4Ljc1YzAgMTYuOTcgNi43NCAzMy4yNSAxOC43NSA0NS4yNWw0OS4xNCA0OS4xNGMxNi43MSAxNi43MSA0MC4zIDIxLjk4IDYxLjYxIDE2LjM1bDI4LjkgMjguOS0xMS4zMSAxMS4zMWMtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wyMi42MyAyMi42M2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDkwLjUxLTkwLjUxYzYuMjMtNi4yNCA2LjIzLTE2LjM3LS4wMi0yMi42MnptLTI4Ni43Mi0xNS4yYy0zLjctMy43LTYuODQtNy43OS05Ljg1LTExLjk1TDE5LjY0IDQwNC45NmMtMjUuNTcgMjMuODgtMjYuMjYgNjQuMTktMS41MyA4OC45M3M2NS4wNSAyNC4wNSA4OC45My0xLjUzbDIzOC4xMy0yNTUuMDdjLTMuOTYtMi45MS03LjktNS44Ny0xMS40NC05LjQxbC00OS4xNC00OS4xNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFtc2EgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA5LjM0IDMwNy4yNUM1MDQuMjggMjk1LjU2IDQ5Mi43NSAyODggNDgwIDI4OGgtNjRWODBjMC0yMi0xOC00MC00MC00MHMtNDAgMTgtNDAgNDB2MTM0YzAgNS41Mi00LjQ4IDEwLTEwIDEwaC0yMGMtNS41MiAwLTEwLTQuNDgtMTAtMTBWNDBjMC0yMi0xOC00MC00MC00MHMtNDAgMTgtNDAgNDB2MTc0YzAgNS41Mi00LjQ4IDEwLTEwIDEwaC0yMGMtNS41MiAwLTEwLTQuNDgtMTAtMTBWODBjMC0yMi0xOC00MC00MC00MFM5NiA1OCA5NiA4MHYyMDhIMzJjLTEyLjc1IDAtMjQuMjggNy41Ni0yOS4zNCAxOS4yNWEzMS45NjYgMzEuOTY2IDAgMCAwIDUuOTQgMzQuNThsMTAyLjY5IDExMC4wM0MxNDYuOTcgNDkwLjA4IDE5OS42OSA1MTIgMjU2IDUxMnMxMDkuMDMtMjEuOTIgMTQ0LjcyLTYwLjE0TDUwMy40IDM0MS44M2EzMS45NjYgMzEuOTY2IDAgMCAwIDUuOTQtMzQuNTh6TTI1NiA0MTZjLTUzLjAyIDAtOTYtNjQtOTYtNjRzNDIuOTgtNjQgOTYtNjQgOTYgNjQgOTYgNjQtNDIuOTggNjQtOTYgNjR6bTAtOTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJzMTQuMzMgMzIgMzIgMzIgMzItMTQuMzMgMzItMzItMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRIb2xkaW5nSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc1LjMgMjUwLjVjNyA3LjQgMTguNCA3LjQgMjUuNSAwbDEwOC45LTExNC4yYzMxLjYtMzMuMiAyOS44LTg4LjItNS42LTExOC44LTMwLjgtMjYuNy03Ni43LTIxLjktMTA0LjkgNy43TDI4OCAzNi45bC0xMS4xLTExLjZDMjQ4LjctNC40IDIwMi44LTkuMiAxNzIgMTcuNWMtMzUuMyAzMC42LTM3LjIgODUuNi01LjYgMTE4LjhsMTA4LjkgMTE0LjJ6bTI5MCA3Ny42Yy0xMS44LTEwLjctMzAuMi0xMC00Mi42IDBMNDMwLjMgNDAyYy0xMS4zIDkuMS0yNS40IDE0LTQwIDE0SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg3OC4zYzE1LjkgMCAzMC43LTEwLjkgMzMuMy0yNi42IDMuMy0yMC0xMi4xLTM3LjQtMzEuNi0zNy40SDE5MmMtMjcgMC01My4xIDkuMy03NC4xIDI2LjNMNzEuNCAzODRIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnY5NmMwIDguOCA3LjIgMTYgMTYgMTZoMzU2LjhjMTQuNSAwIDI4LjYtNC45IDQwLTE0TDU2NCAzNzdjMTUuMi0xMi4xIDE2LjQtMzUuMyAxLjMtNDguOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEhvbGRpbmdNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1OS44OCwxNzUuODJoNjR2NjRhMTYsMTYsMCwwLDAsMTYsMTZoNjRhMTYsMTYsMCwwLDAsMTYtMTZ2LTY0aDY0YTE2LDE2LDAsMCwwLDE2LTE2di02NGExNiwxNiwwLDAsMC0xNi0xNmgtNjR2LTY0YTE2LDE2LDAsMCwwLTE2LTE2aC02NGExNiwxNiwwLDAsMC0xNiwxNnY2NGgtNjRhMTYsMTYsMCwwLDAtMTYsMTZ2NjRBMTYsMTYsMCwwLDAsMTU5Ljg4LDE3NS44MlpNNTY4LjA3LDMzNi4xM2EzOS45MSwzOS45MSwwLDAsMC01NS45My04LjQ3TDM5Mi40Nyw0MTUuODRIMjcxLjg2YTE2LDE2LDAsMCwxLDAtMzJIMzUwLjFjMTYsMCwzMC43NS0xMC44NywzMy4zNy0yNi42MWEzMi4wNiwzMi4wNiwwLDAsMC0zMS42Mi0zNy4zOGgtMTYwYTExNy43LDExNy43LDAsMCwwLTc0LjEyLDI2LjI1bC00Ni41LDM3Ljc0SDE1Ljg3YTE2LjExLDE2LjExLDAsMCwwLTE2LDE2djk2YTE2LjExLDE2LjExLDAsMCwwLDE2LDE2aDM0N2ExMDQuOCwxMDQuOCwwLDAsMCw2MS43LTIwLjI3TDU1OS42LDM5MkE0MCw0MCwwLDAsMCw1NjguMDcsMzM2LjEzWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kSG9sZGluZ1VzZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzEuMDYsMTQ0LjNsNTQuMjcsMTQuM2E4LjU5LDguNTksMCwwLDEsNi42Myw4LjFjMCw0LjYtNC4wOSw4LjQtOS4xMiw4LjRoLTM1LjZhMzAsMzAsMCwwLDEtMTEuMTktMi4yYy01LjI0LTIuMi0xMS4yOC0xLjctMTUuMywybC0xOSwxNy41YTExLjY4LDExLjY4LDAsMCwwLTIuMjUsMi42NiwxMS40MiwxMS40MiwwLDAsMCwzLjg4LDE1Ljc0LDgzLjc3LDgzLjc3LDAsMCwwLDM0LjUxLDExLjVWMjQwYzAsOC44LDcuODMsMTYsMTcuMzcsMTZoMTcuMzdjOS41NSwwLDE3LjM4LTcuMiwxNy4zOC0xNlYyMjIuNGMzMi45My0zLjYsNTcuODQtMzEsNTMuNS02My0zLjE1LTIzLTIyLjQ2LTQxLjMtNDYuNTYtNDcuN0wyODIuNjgsOTcuNGE4LjU5LDguNTksMCwwLDEtNi42My04LjFjMC00LjYsNC4wOS04LjQsOS4xMi04LjRoMzUuNkEzMCwzMCwwLDAsMSwzMzIsODMuMWM1LjIzLDIuMiwxMS4yOCwxLjcsMTUuMy0ybDE5LTE3LjVBMTEuMzEsMTEuMzEsMCwwLDAsMzY4LjQ3LDYxYTExLjQzLDExLjQzLDAsMCwwLTMuODQtMTUuNzgsODMuODIsODMuODIsMCwwLDAtMzQuNTItMTEuNVYxNmMwLTguOC03LjgyLTE2LTE3LjM3LTE2SDI5NS4zN0MyODUuODIsMCwyNzgsNy4yLDI3OCwxNlYzMy42Yy0zMi44OSwzLjYtNTcuODUsMzEtNTMuNTEsNjNDMjI3LjYzLDExOS42LDI0NywxMzcuOSwyNzEuMDYsMTQ0LjNaTTU2NS4yNywzMjguMWMtMTEuOC0xMC43LTMwLjItMTAtNDIuNiwwTDQzMC4yNyw0MDJhNjMuNjQsNjMuNjQsMCwwLDEtNDAsMTRIMjcyYTE2LDE2LDAsMCwxLDAtMzJoNzguMjljMTUuOSwwLDMwLjcxLTEwLjksMzMuMjUtMjYuNmEzMS4yLDMxLjIsMCwwLDAsLjQ2LTUuNDZBMzIsMzIsMCwwLDAsMzUyLDMyMEgxOTJhMTE3LjY2LDExNy42NiwwLDAsMC03NC4xLDI2LjI5TDcxLjQsMzg0SDE2QTE2LDE2LDAsMCwwLDAsNDAwdjk2YTE2LDE2LDAsMCwwLDE2LDE2SDM3Mi43N2E2NCw2NCwwLDAsMCw0MC0xNEw1NjQsMzc3YTMyLDMyLDAsMCwwLDEuMjgtNDguOVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEhvbGRpbmdXYXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMjU2YzUzIDAgOTYtNDIuMSA5Ni05NCAwLTQwLTU3LjEtMTIwLjctODMuMi0xNTUuNi02LjQtOC41LTE5LjItOC41LTI1LjYgMEMyNDkuMSA0MS4zIDE5MiAxMjIgMTkyIDE2MmMwIDUxLjkgNDMgOTQgOTYgOTR6bTI3Ny4zIDcyLjFjLTExLjgtMTAuNy0zMC4yLTEwLTQyLjYgMEw0MzAuMyA0MDJjLTExLjMgOS4xLTI1LjQgMTQtNDAgMTRIMjcyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDc4LjNjMTUuOSAwIDMwLjctMTAuOSAzMy4zLTI2LjYgMy4zLTIwLTEyLjEtMzcuNC0zMS42LTM3LjRIMTkyYy0yNyAwLTUzLjEgOS4zLTc0LjEgMjYuM0w3MS40IDM4NEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNmgzNTYuOGMxNC41IDAgMjguNi00LjkgNDAtMTRMNTY0IDM3N2MxNS4yLTEyLjEgMTYuNC0zNS4zIDEuMy00OC45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kSG9sZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjUuMyAzMjguMWMtMTEuOC0xMC43LTMwLjItMTAtNDIuNiAwTDQzMC4zIDQwMmMtMTEuMyA5LjEtMjUuNCAxNC00MCAxNEgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoNzguM2MxNS45IDAgMzAuNy0xMC45IDMzLjMtMjYuNiAzLjMtMjAtMTIuMS0zNy40LTMxLjYtMzcuNEgxOTJjLTI3IDAtNTMuMSA5LjMtNzQuMSAyNi4zTDcxLjQgMzg0SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2aDM1Ni44YzE0LjUgMCAyOC42LTQuOSA0MC0xNEw1NjQgMzc3YzE1LjItMTIuMSAxNi40LTM1LjMgMS4zLTQ4Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRMaXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDQ4MGgxOTJWMzYzLjc3OGE5NS45OTggOTUuOTk4IDAgMCAwLTE0LjgzMy01MS4yNjNMMzk4LjEyNyA1NC4zNjhBNDggNDggMCAwIDAgMzU3LjU0NCAzMkgyNEMxMC43NDUgMzIgMCA0Mi43NDUgMCA1NnYxNmMwIDMwLjkyOCAyNS4wNzIgNTYgNTYgNTZoMjI5Ljk4MWMxMi44NDQgMCAyMS41NTYgMTMuMDY3IDE2LjYxNSAyNC45MjNsLTIxLjQxIDUxLjM4NUEzMiAzMiAwIDAgMSAyNTEuNjQ4IDIyNEgxMjhjLTM1LjM0NiAwLTY0IDI4LjY1NC02NCA2NHY4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxNDcuNDA2YTQ3Ljk5NSA0Ny45OTUgMCAwIDEgMjUuNjkyIDcuNDU1bDExMS43NDggNzAuODExQTI0LjAwMSAyNC4wMDEgMCAwIDEgMzg0IDQxOC41MzlWNDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kTWlkZGxlRmluZ2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3OS45MyAzMTcuMTJhMzcuMzMgMzcuMzMgMCAwIDAtMjguMjgtMzYuMTlMNDE2IDI3MnYtNDkuNTljMC0xMS40NC05LjY5LTIxLjI5LTIzLjE1LTIzLjU0bC0zOC40LTYuNEMzMzYuNjMgMTg5LjUgMzIwIDIwMC44NiAzMjAgMjE2djMyYTggOCAwIDAgMS0xNiAwVjUwYzAtMjYuMjgtMjAuMjUtNDkuMi00Ni41Mi01MEE0OCA0OCAwIDAgMCAyMDggNDh2MjAwYTggOCAwIDAgMS0xNiAwdi0zMmMwLTE1LjE1LTE2LjYzLTI2LjUxLTM0LjQ1LTIzLjU0bC0zMC42OCA1LjEyYy0xOCAzLTMwLjg3IDE2LjEyLTMwLjg3IDMxLjM4VjM3NmE4IDggMCAwIDEtMTYgMHYtNzZsLTI3LjM2IDE1QTM3LjM0IDM3LjM0IDAgMCAwIDMyIDM0OC40djczLjQ3YTM3LjMxIDM3LjMxIDAgMCAwIDEwLjkzIDI2LjM5bDMwLjkzIDMwLjkzQTExMiAxMTIgMCAwIDAgMTUzLjA1IDUxMmgyMTVBMTEyIDExMiAwIDAgMCA0ODAgNDAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUGFwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA4Ljc4MSAxMjguMDA3QzM4Ni4zNTYgMTI3LjU3OCAzNjggMTQ2LjM2IDM2OCAxNjguNzlWMjU2aC04Vjc5Ljc5YzAtMjIuNDMtMTguMzU2LTQxLjIxMi00MC43ODEtNDAuNzgzQzI5Ny40ODggMzkuNDIzIDI4MCA1Ny4xNjkgMjgwIDc5djE3N2gtOFY0MC43OUMyNzIgMTguMzYgMjUzLjY0NC0uNDIyIDIzMS4yMTkuMDA3IDIwOS40ODguNDIzIDE5MiAxOC4xNjkgMTkyIDQwdjIxNmgtOFY4MC43OWMwLTIyLjQzLTE4LjM1Ni00MS4yMTItNDAuNzgxLTQwLjc4M0MxMjEuNDg4IDQwLjQyMyAxMDQgNTguMTY5IDEwNCA4MHYyMzUuOTkybC0zMS42NDgtNDMuNTE5Yy0xMi45OTMtMTcuODY2LTM4LjAwOS0yMS44MTctNTUuODc3LTguODIzLTE3Ljg2NSAxMi45OTQtMjEuODE1IDM4LjAxLTguODIyIDU1Ljg3N2wxMjUuNjAxIDE3Mi43MDVBNDggNDggMCAwIDAgMTcyLjA3MyA1MTJoMTk3LjU5YzIyLjI3NCAwIDQxLjYyMi0xNS4zMjQgNDYuNzI0LTM3LjAwNmwyNi41MDgtMTEyLjY2YTE5Mi4wMTEgMTkyLjAxMSAwIDAgMCA1LjEwNC00My45NzVWMTY4Yy4wMDEtMjEuODMxLTE3LjQ4Ny0zOS41NzctMzkuMjE4LTM5Ljk5M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBlYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwOCAyMTZjLTIyLjA5MiAwLTQwIDE3LjkwOS00MCA0MGgtOHYtMzJjMC0yMi4wOTEtMTcuOTA4LTQwLTQwLTQwcy00MCAxNy45MDktNDAgNDB2MzJoLThWNDhjMC0yNi41MS0yMS40OS00OC00OC00OHMtNDggMjEuNDktNDggNDh2MjA4aC0xMy41NzJMOTIuNjg4IDc4LjQ0OUM4Mi45OTQgNTMuNzc0IDU1LjEzNCA0MS42MyAzMC40NjEgNTEuMzI0IDUuNzg3IDYxLjAxNy02LjM1NiA4OC44NzcgMy4zMzcgMTEzLjU1MWw3NC43NjUgMTkwLjM0Mi0zMS4wOSAyNC44NzJjLTE1LjM4MSAxMi4zMDYtMTkuNTE1IDMzLjk3OC05Ljc0MSA1MS4wODFsNjQgMTEyQTM5Ljk5OCAzOS45OTggMCAwIDAgMTM2IDUxMmgyNDBjMTguNTYyIDAgMzQuNjg2LTEyLjc3IDM4LjkzNy0zMC44MzhsMzItMTM2QTM5Ljk3IDM5Ljk3IDAgMCAwIDQ0OCAzMzZ2LTgwYzAtMjIuMDkxLTE3LjkwOC00MC00MC00MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBvaW50RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05MS44MjYgNDY3LjJWMzE3Ljk2NmMtOC4yNDggNS44NDEtMTYuNTU4IDEwLjU3LTI0LjkxOCAxNC4xNTNDMzUuMDk4IDM0NS43NTItLjAxNCAzMjIuMjIyIDAgMjg4Yy4wMDgtMTguNjE2IDEwLjg5Ny0zMi4yMDMgMjkuMDkyLTQwIDI4LjI4Ni0xMi4xMjIgNjQuMzI5LTc4LjY0OCA3Ny4zMjMtMTA3LjUzNCA3Ljk1Ni0xNy44NTcgMjUuNDc5LTI4LjQ1MyA0My44NDUtMjguNDY0bC4wMDEtLjAwMmgxNzEuNTI2YzExLjgxMiAwIDIxLjg5NyA4LjU5NiAyMy43MDMgMjAuMjY5IDcuMjUgNDYuODM3IDM4LjQ4MyA2MS43NiAzOC4zMTUgMTIzLjczMS0uMDA3IDIuNzI0LjE5NSAxMy4yNTQuMTk1IDE2IDAgNTAuNjU0LTIyLjEyMiA4MS41NzQtNzEuMjYzIDcyLjYtOS4yOTcgMTguNTk3LTM5LjQ4NiAzMC43MzgtNjIuMzE1IDE2LjQ1LTIxLjE3NyAyNC42NDUtNTMuODk2IDIyLjYzOS03MC45NDQgNi4yOTlWNDY3LjJjMCAyNC4xNS0yMC4yMDEgNDQuOC00My44MjYgNDQuOC0yMy4yODMgMC00My44MjYtMjEuMzUtNDMuODI2LTQ0Ljh6TTExMiA3MlYyNGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoMTkyYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHY0OGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMTM2Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjR6bTIxMi0yNGMwLTExLjA0Ni04Ljk1NC0yMC0yMC0yMHMtMjAgOC45NTQtMjAgMjAgOC45NTQgMjAgMjAgMjAgMjAtOC45NTQgMjAtMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRQb2ludExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQuOCAxNTUuODI2aDE0OS4yMzRjLTUuODQxLTguMjQ4LTEwLjU3LTE2LjU1OC0xNC4xNTMtMjQuOTE4QzE2Ni4yNDggOTkuMDk4IDE4OS43NzggNjMuOTg2IDIyNCA2NGMxOC42MTYuMDA4IDMyLjIwMyAxMC44OTcgNDAgMjkuMDkyIDEyLjEyMiAyOC4yODYgNzguNjQ4IDY0LjMyOSAxMDcuNTM0IDc3LjMyMyAxNy44NTcgNy45NTYgMjguNDUzIDI1LjQ3OSAyOC40NjQgNDMuODQ1bC4wMDIuMDAxdjE3MS41MjZjMCAxMS44MTItOC41OTYgMjEuODk3LTIwLjI2OSAyMy43MDMtNDYuODM3IDcuMjUtNjEuNzYgMzguNDgzLTEyMy43MzEgMzguMzE1LTIuNzI0LS4wMDctMTMuMjU0LjE5NS0xNiAuMTk1LTUwLjY1NCAwLTgxLjU3NC0yMi4xMjItNzIuNi03MS4yNjMtMTguNTk3LTkuMjk3LTMwLjczOC0zOS40ODYtMTYuNDUtNjIuMzE1LTI0LjY0NS0yMS4xNzctMjIuNjM5LTUzLjg5Ni02LjI5OS03MC45NDRINDQuOGMtMjQuMTUgMC00NC44LTIwLjIwMS00NC44LTQzLjgyNiAwLTIzLjI4MyAyMS4zNS00My44MjYgNDQuOC00My44MjZ6TTQ0MCAxNzZoNDhjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0djE5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRoLTQ4Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRWMjAwYzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNHptMjQgMjEyYzExLjA0NiAwIDIwLTguOTU0IDIwLTIwcy04Ljk1NC0yMC0yMC0yMC0yMCA4Ljk1NC0yMCAyMCA4Ljk1NCAyMCAyMCAyMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBvaW50UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDE5OS42NTJjMCAyMy42MjUtMjAuNjUgNDMuODI2LTQ0LjggNDMuODI2aC05OS44NTFjMTYuMzQgMTcuMDQ4IDE4LjM0NiA0OS43NjYtNi4yOTkgNzAuOTQ0IDE0LjI4OCAyMi44MjkgMi4xNDcgNTMuMDE3LTE2LjQ1IDYyLjMxNUMzNTMuNTc0IDQyNS44NzggMzIyLjY1NCA0NDggMjcyIDQ0OGMtMi43NDYgMC0xMy4yNzYtLjIwMy0xNi0uMTk1LTYxLjk3MS4xNjgtNzYuODk0LTMxLjA2NS0xMjMuNzMxLTM4LjMxNUMxMjAuNTk2IDQwNy42ODMgMTEyIDM5Ny41OTkgMTEyIDM4NS43ODZWMjE0LjI2MWwuMDAyLS4wMDFjLjAxMS0xOC4zNjYgMTAuNjA3LTM1Ljg4OSAyOC40NjQtNDMuODQ1IDI4Ljg4Ni0xMi45OTQgOTUuNDEzLTQ5LjAzOCAxMDcuNTM0LTc3LjMyMyA3Ljc5Ny0xOC4xOTQgMjEuMzg0LTI5LjA4NCA0MC0yOS4wOTIgMzQuMjIyLS4wMTQgNTcuNzUyIDM1LjA5OCA0NC4xMTkgNjYuOTA4LTMuNTgzIDguMzU5LTguMzEyIDE2LjY3LTE0LjE1MyAyNC45MThINDY3LjJjMjMuNDUgMCA0NC44IDIwLjU0MyA0NC44IDQzLjgyNnpNOTYgMjAwdjE5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMjRjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNFYyMDBjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDQ4YzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHpNNjggMzY4YzAtMTEuMDQ2LTguOTU0LTIwLTIwLTIwcy0yMCA4Ljk1NC0yMCAyMCA4Ljk1NCAyMCAyMCAyMCAyMC04Ljk1NCAyMC0yMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBvaW50VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTM1LjY1MiAwYzIzLjYyNSAwIDQzLjgyNiAyMC42NSA0My44MjYgNDQuOHY5OS44NTFjMTcuMDQ4LTE2LjM0IDQ5Ljc2Ni0xOC4zNDYgNzAuOTQ0IDYuMjk5IDIyLjgyOS0xNC4yODggNTMuMDE3LTIuMTQ3IDYyLjMxNSAxNi40NUMzNjEuODc4IDE1OC40MjYgMzg0IDE4OS4zNDYgMzg0IDI0MGMwIDIuNzQ2LS4yMDMgMTMuMjc2LS4xOTUgMTYgLjE2OCA2MS45NzEtMzEuMDY1IDc2Ljg5NC0zOC4zMTUgMTIzLjczMUMzNDMuNjgzIDM5MS40MDQgMzMzLjU5OSA0MDAgMzIxLjc4NiA0MDBIMTUwLjI2MWwtLjAwMS0uMDAyYy0xOC4zNjYtLjAxMS0zNS44ODktMTAuNjA3LTQzLjg0NS0yOC40NjRDOTMuNDIxIDM0Mi42NDggNTcuMzc3IDI3Ni4xMjIgMjkuMDkyIDI2NCAxMC44OTcgMjU2LjIwMy4wMDggMjQyLjYxNiAwIDIyNGMtLjAxNC0zNC4yMjIgMzUuMDk4LTU3Ljc1MiA2Ni45MDgtNDQuMTE5IDguMzU5IDMuNTgzIDE2LjY3IDguMzEyIDI0LjkxOCAxNC4xNTNWNDQuOGMwLTIzLjQ1IDIwLjU0My00NC44IDQzLjgyNi00NC44ek0xMzYgNDE2aDE5MmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2NDhjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDEzNmMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di00OGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjR6bTE2OCAyOGMtMTEuMDQ2IDAtMjAgOC45NTQtMjAgMjBzOC45NTQgMjAgMjAgMjAgMjAtOC45NTQgMjAtMjAtOC45NTQtMjAtMjAtMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRQb2ludGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAyNDB2OTZjMCAzLjA4NC0uMzU2IDYuMTU5LTEuMDYzIDkuMTYybC0zMiAxMzZDNDEwLjY4NiA0OTkuMjMgMzk0LjU2MiA1MTIgMzc2IDUxMkgxNjhhNDAuMDA0IDQwLjAwNCAwIDAgMS0zMi4zNS0xNi40NzNsLTEyNy45OTctMTc2Yy0xMi45OTMtMTcuODY2LTkuMDQzLTQyLjg4MyA4LjgyMi01NS44NzYgMTcuODY3LTEyLjk5NCA0Mi44ODQtOS4wNDMgNTUuODc3IDguODIzTDEwNCAzMTUuOTkyVjQwYzAtMjIuMDkxIDE3LjkwOC00MCA0MC00MHM0MCAxNy45MDkgNDAgNDB2MjAwaDh2LTQwYzAtMjIuMDkxIDE3LjkwOC00MCA0MC00MHM0MCAxNy45MDkgNDAgNDB2NDBoOHYtMjRjMC0yMi4wOTEgMTcuOTA4LTQwIDQwLTQwczQwIDE3LjkwOSA0MCA0MHYyNGg4YzAtMjIuMDkxIDE3LjkwOC00MCA0MC00MHM0MCAxNy45MDkgNDAgNDB6bS0yNTYgODBoLTh2OTZoOHYtOTZ6bTg4IDBoLTh2OTZoOHYtOTZ6bTg4IDBoLTh2OTZoOHYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRSb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NC44IDgwYy0yNi45LS40LTQ4LjggMjEuMi00OC44IDQ4aC04Vjk2LjhjMC0yNi4zLTIwLjktNDguMy00Ny4yLTQ4LjgtMjYuOS0uNC00OC44IDIxLjItNDguOCA0OHYzMmgtOFY4MC44YzAtMjYuMy0yMC45LTQ4LjMtNDcuMi00OC44LTI2LjktLjQtNDguOCAyMS4yLTQ4LjggNDh2NDhoLThWOTYuOGMwLTI2LjMtMjAuOS00OC4zLTQ3LjItNDguOC0yNi45LS40LTQ4LjggMjEuMi00OC44IDQ4djEzNmwtOC03LjF2LTQ4LjFjMC0yNi4zLTIwLjktNDguMy00Ny4yLTQ4LjhDMjEuOSAxMjcuNiAwIDE0OS4yIDAgMTc2djY2LjRjMCAyNy40IDExLjcgNTMuNSAzMi4yIDcxLjhsMTExLjcgOTkuM2MxMC4yIDkuMSAxNi4xIDIyLjIgMTYuMSAzNS45djYuN2MwIDEzLjMgMTAuNyAyNCAyNCAyNGgyNDBjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTIuOWMwLTEyLjggMi42LTI1LjUgNy41LTM3LjNsNDktMTE2LjNjNS0xMS44IDcuNS0yNC41IDcuNS0zNy4zVjEyOC44YzAtMjYuMy0yMC45LTQ4LjQtNDcuMi00OC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kU2Npc3NvcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE2IDQ0MGMwLTIyLjA5MiAxNy45MDktNDAgNDAtNDB2LThoLTMyYy0yMi4wOTEgMC00MC0xNy45MDgtNDAtNDBzMTcuOTA5LTQwIDQwLTQwaDMydi04SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4aDIwOHYtMTMuNTcybC0xNzcuNTUxLTY5Ljc0Yy0yNC42NzQtOS42OTQtMzYuODE4LTM3LjU1NS0yNy4xMjUtNjIuMjI4IDkuNjkzLTI0LjY3NCAzNy41NTQtMzYuODE3IDYyLjIyOC0yNy4xMjRsMTkwLjM0MiA3NC43NjUgMjQuODcyLTMxLjA5YzEyLjMwNi0xNS4zODEgMzMuOTc4LTE5LjUxNSA1MS4wODEtOS43NDFsMTEyIDY0QTQwLjAwMiA0MC4wMDIgMCAwIDEgNTEyIDE2OHYyNDBjMCAxOC41NjItMTIuNzcgMzQuNjg2LTMwLjgzOCAzOC45MzdsLTEzNiAzMkEzOS45ODIgMzkuOTgyIDAgMCAxIDMzNiA0ODBoLTgwYy0yMi4wOTEgMC00MC0xNy45MDgtNDAtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRTcGFya2xlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDYuNjYsMTcwLjY0bC4wOSwwLDQ5LjU1LTIwLjY1YTcuMzIsNy4zMiwwLDAsMCwzLjY4LTZoMGE3LjI5LDcuMjksMCwwLDAtMy42OC02bC00OS41Ny0yMC42Ny0uMDcsMEw4Niw2Ny42OGE2LjY2LDYuNjYsMCwwLDAtMTEuOTIsMGwtMjAuNyw0OS42My0uMDUsMEwzLjcsMTM4QTcuMjksNy4yOSwwLDAsMCwwLDE0NEgwYTcuMzIsNy4zMiwwLDAsMCwzLjY4LDZMNTMuMjcsMTcwLjZsLjA3LDBMNzQsMjIwLjI2YTYuNjUsNi42NSwwLDAsMCwxMS45MiwwbDIwLjY5LTQ5LjYyWk00NzEuMzgsNDY3LjQxbC0xLS40Mi0xLS41YTM4LjY3LDM4LjY3LDAsMCwxLDAtNjkuMTRsMS0uNDksMS0uNDMsMzcuNDktMTUuNjMsMTUuNjMtMzcuNDguNDEtMSwuNDctLjk1YzMuODUtNy43NCwxMC41OC0xMy42MywxOC4zNS0xNy4zNCwwLTEuMzMuMjUtMi42OS4yNy00VjE0NGEzMiwzMiwwLDAsMC02NCwwdjcyYTgsOCwwLDAsMS04LDhINDU2YTgsOCwwLDAsMS04LThWNjRhMzIsMzIsMCwwLDAtNjQsMFYyMTZhOCw4LDAsMCwxLTgsOEgzNjBhOCw4LDAsMCwxLTgtOFYzMmEzMiwzMiwwLDAsMC02NCwwVjIxNmE4LDgsMCwwLDEtOCw4SDI2NGE4LDgsMCwwLDEtOC04VjY0YTMyLDMyLDAsMCwwLTY0LDB2MjQxbC0yMy41OS0zMi40OWE0MCw0MCwwLDAsMC02NC43MSw0Ny4wOUwyMjkuMyw0OTIuMjFBNDguMDcsNDguMDcsMCwwLDAsMjY4LjA5LDUxMkg0NjUuN2MxOS4yNCwwLDM1LjY1LTExLjczLDQzLjI0LTI4Ljc5bC0uMDctLjE3Wk0zNDkuNzksMzM5LjUyLDMyMCwzNTEuOTNsLTEyLjQyLDI5Ljc4YTQsNCwwLDAsMS03LjE1LDBMMjg4LDM1MS45M2wtMjkuNzktMTIuNDFhNCw0LDAsMCwxLDAtNy4xNkwyODgsMzE5Ljk0bDEyLjQyLTI5Ljc4YTQsNCwwLDAsMSw3LjE1LDBMMzIwLDMxOS45NGwyOS43OSwxMi40MmE0LDQsMCwwLDEsMCw3LjE2Wk02NDAsNDMxLjkxYTcuMjgsNy4yOCwwLDAsMC0zLjY4LTZsLTQ5LjU3LTIwLjY3LS4wNywwTDU2NiwzNTUuNjNhNi42Niw2LjY2LDAsMCwwLTExLjkyLDBsLTIwLjcsNDkuNjMtLjA1LDBMNDgzLjcsNDI2YTcuMjgsNy4yOCwwLDAsMC0zLjY4LDZoMGE3LjI5LDcuMjksMCwwLDAsMy42OCw1Ljk1bDQ5LjU3LDIwLjY3LjA3LDBMNTU0LDUwOC4yMWE2LjY1LDYuNjUsMCwwLDAsMTEuOTIsMGwyMC42OS00OS42MmgwbC4wOSwwLDQ5LjU1LTIwLjY2YTcuMjksNy4yOSwwLDAsMCwzLjY4LTUuOTVoMFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFNwb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMC45MDA1LDE0NS4yNzAyNyw0NDIuNjA0LDQzMi4wOTM5MUExMDMuOTk1MDcsMTAzLjk5NTA3LDAsMCwxLDM0MS40Mzc0NSw1MTJIMjE0LjA3NGExMzUuOTY5NjgsMTM1Ljk2OTY4LDAsMCwxLTkzLjE4NDg5LTM2Ljk1MjkxTDEyLjU5MDcyLDM3My4xMjcyM2EzOS45OTIsMzkuOTkyLDAsMCwxLDU0LjgxMjItNTguMjQ5ODhsNjAuNTkzNDIsNTcuMDI1Mjh2MGEyODMuMjQ4NDksMjgzLjI0ODQ5LDAsMCwwLTExLjY3MDMtODAuNDY3MzRMNzMuNjM3MjYsMTQ3LjM2MDExYTQwLjAwNTc1LDQwLjAwNTc1LDAsMSwxLDc2LjcxODMzLTIyLjcxODdsMzcuMTU0NTgsMTI1LjM5NDc3YTguMzMxMTMsOC4zMzExMywwLDAsMCwxNi4wNTY1Ni00LjQ0MTRMMTUzLjI2MTgzLDQ5Ljk1NDA2QTM5Ljk5NjM4LDM5Ljk5NjM4LDAsMSwxLDIzMC43MzAxNSwzMC4wMTY2bDU2LjA5NDkxLDIxOC4xNTgyNWExMC40MjA0NywxMC40MjA0NywwLDAsMCwyMC4zMDAxOC0uNTAxTDM0NC44MDc2Niw2My45Njk2NmE0MC4wNTIsNDAuMDUyLDAsMCwxLDUxLjMwMjQ1LTMwLjA4OTNjMTkuODYwNzMsNi4yOTk4LDMwLjg2MjYyLDI3LjY3Mzc4LDI2LjY3NTY0LDQ4LjA4NDg3bC0zMy44Mzg2OSwxNjQuOTY2YTcuNTUxNzIsNy41NTE3MiwwLDAsMCwxNC43NDQwNiwzLjI2NjZsMjkuMzk3My0xMjMuNDU4NzRhMzkuOTk0MTQsMzkuOTk0MTQsMCwxLDEsNzcuODEyMDgsMTguNTMxMjFaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzSGVscGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODggMTkySDMzNnY1NmMwIDM5LjctMzIuMyA3Mi03MiA3MnMtNzItMzIuMy03Mi03MlYxMjYuNGwtNjQuOSAzOUMxMDcuOCAxNzYuOSA5NiAxOTcuOCA5NiAyMjAuMnY0Ny4zbC04MCA0Ni4yQy43IDMyMi41LTQuNiAzNDIuMSA0LjMgMzU3LjRsODAgMTM4LjZjOC44IDE1LjMgMjguNCAyMC41IDQzLjcgMTEuN0wyMzEuNCA0NDhIMzY4YzM1LjMgMCA2NC0yOC43IDY0LTY0aDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMydi02NGg4YzEzLjMgMCAyNC0xMC43IDI0LTI0di00OGMwLTEzLjMtMTAuNy0yNC0yNC0yNHptMTQ3LjctMzcuNEw1NTUuNyAxNkM1NDYuOS43IDUyNy4zLTQuNSA1MTIgNC4zTDQwOC42IDY0SDMwNi40Yy0xMiAwLTIzLjcgMy40LTMzLjkgOS43TDIzOSA5NC42Yy05LjQgNS44LTE1IDE2LjEtMTUgMjcuMVYyNDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBzNDAtMTcuOSA0MC00MHYtODhoMTg0YzMwLjkgMCA1NiAyNS4xIDU2IDU2djI4LjVsODAtNDYuMmMxNS4zLTguOSAyMC41LTI4LjQgMTEuNy00My43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc1dhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2LDIyNGE0OCw0OCwwLDEsMC00OC00OEE0OCw0OCwwLDAsMCw0OTYsMjI0Wk0zMTEuNDcsMTc4LjQ1QTU2Ljc3LDU2Ljc3LDAsMCwxLDMyOCwxNzZhNTYsNTYsMCwwLDEsMTksMy40OWwxNS4zNS00OC42MUEyNCwyNCwwLDAsMCwzNDIsOTkuNzRjLTExLjUzLTEuMzUtMjIuMjEsNi40NC0yNS43MSwxNy41MWwtMjAuOSw2Ni4xN1pNOTMuNjUsMzg2LjMzYy44LS4xOSwxLjU0LS41NCwyLjM1LS43MVYzNTkuOTNhMTU2LDE1NiwwLDAsMSwxMDcuMDYtMTQ4bDczLjctMjIuNzZMMzEwLjkyLDgxLjA1YTI0LDI0LDAsMCwwLTIwLjMzLTMxLjExYy0xMS41My0xLjM0LTIyLjIyLDYuNDUtMjUuNzIsMTcuNTJMMjMxLjQyLDE3My44OGE4LDgsMCwwLDEtMTUuMjYtNC44M0wyNTkuNTMsMzEuMjZBMjQsMjQsMCwwLDAsMjM5LjIuMTVDMjI3LjY3LTEuMTksMjE3LDYuNiwyMTMuNDksMTcuNjZMMTY1LjU2LDE2OS4zN2E4LDgsMCwxLDEtMTUuMjYtNC44MmwzOC41Ni0xMjJhMjQsMjQsMCwwLDAtMjAuMzMtMzEuMTFDMTU3LDEwLDE0Ni4zMiwxNy44MywxNDIuODIsMjguOWwtNjAsMTg5Ljg1TDgwLjc2LDE2OC43QTI0LDI0LDAsMCwwLDU2LjksMTQ0LjU1Yy0xMy4yMy0uMDUtMjQuNzIsMTAuNTQtMjQuOSwyMy44NlYyODEuMTRBMTIzLjY5LDEyMy42OSwwLDAsMCw5My42NSwzODYuMzNaTTUxOS4xLDMzNkgzNjBhOCw4LDAsMCwxLDAtMTZINDg4YTI0LDI0LDAsMCwwLDIzLjU0LTI4Ljc2QzUwOS4zNSwyNzkuODQsNDk4LjcxLDI3Miw0ODcuMSwyNzJIMjg4bDQ3LjA5LTE3LjA2YTI0LDI0LDAsMCwwLTE0LjE4LTQ1Ljg4TDIxMy4xOSwyNDIuMzFBMTIzLjg4LDEyMy44OCwwLDAsMCwxMjgsMzYwdjI1LjY1YTc5Ljc4LDc5Ljc4LDAsMCwxLDU4LDEwOC42M0ExMTguOSwxMTguOSwwLDAsMCwyNDgsNTEySDQ1NmEyNCwyNCwwLDAsMCwyMy41NC0yOC43NkM0NzcuMzUsNDcxLjg0LDQ2Ni43MSw0NjQsNDU1LjEsNDY0SDM2MGE4LDgsMCwwLDEsMC0xNkg0ODhhMjQsMjQsMCwwLDAsMjMuNTQtMjguNzZDNTA5LjM1LDQwNy44NCw0OTguNzEsNDAwLDQ4Ny4xLDQwMEgzNjBhOCw4LDAsMCwxLDAtMTZINTIwYTI0LDI0LDAsMCwwLDIzLjU0LTI4Ljc2QzU0MS4zNSwzNDMuODQsNTMwLjcxLDMzNiw1MTkuMSwzMzZaTTQxNiw2NGEzMiwzMiwwLDEsMC0zMi0zMkEzMiwzMiwwLDAsMCw0MTYsNjRaTTExMiw0MTZhNDgsNDgsMCwxLDAsNDgsNDhBNDgsNDgsMCwwLDAsMTEyLDQxNlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA0LjggMjMwLjRjLTEwLjYtMTQuMS0zMC43LTE3LTQ0LjgtNi40LTE0LjEgMTAuNi0xNyAzMC43LTYuNCA0NC44bDM4LjEgNTAuOGM0LjggNi40IDQuMSAxNS4zLTEuNSAyMC45bC0xMi44IDEyLjhjLTYuNyA2LjctMTcuNiA2LjItMjMuNi0xLjFMNjQgMjQ0LjRWOTZjMC0xNy43LTE0LjMtMzItMzItMzJTMCA3OC4zIDAgOTZ2MjE4LjRjMCAxMC45IDMuNyAyMS41IDEwLjUgMzBsMTA0LjEgMTM0LjNjNSA2LjUgOC40IDEzLjkgMTAuNCAyMS43IDEuOCA2LjkgOC4xIDExLjYgMTUuMyAxMS42SDI3MmM4LjggMCAxNi03LjIgMTYtMTZWMzg0YzAtMjcuNy05LTU0LjYtMjUuNi03Ni44bC01Ny42LTc2Ljh6TTYwOCA2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MTQ4LjRsLTg5LjggMTA3LjhjLTYgNy4yLTE3IDcuNy0yMy42IDEuMWwtMTIuOC0xMi44Yy01LjYtNS42LTYuMy0xNC41LTEuNS0yMC45bDM4LjEtNTAuOGMxMC42LTE0LjEgNy43LTM0LjItNi40LTQ0LjgtMTQuMS0xMC42LTM0LjItNy43LTQ0LjggNi40bC01Ny42IDc2LjhDMzYxIDMyOS40IDM1MiAzNTYuMyAzNTIgMzg0djExMmMwIDguOCA3LjIgMTYgMTYgMTZoMTMxLjdjNy4xIDAgMTMuNS00LjcgMTUuMy0xMS42IDItNy44IDUuNC0xNS4yIDEwLjQtMjEuN2wxMDQuMS0xMzQuM2M2LjgtOC41IDEwLjUtMTkuMSAxMC41LTMwVjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc2hha2VBbHRTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTguNTksMTk1LjYsNTA0LjIsMzEzLjhhNjMuNCw2My40LDAsMCwxLDIyLjIxLDM3LjkxSDYyNGExNi4wNSwxNi4wNSwwLDAsMCwxNi0xNlYxNDMuOTFBMTYsMTYsMCwwLDAsNjI0LDEyOEg1MTJMNDU3LjQxLDczLjQxQTMyLDMyLDAsMCwwLDQzNC44LDY0SDM0OC45MWEzMiwzMiwwLDAsMC0yMS42MSw4LjQxbC04OC4xMiw4MC42OC0yNS42OS0xOS44NUwyODkuMDksNjRIMjA1LjNhMzIsMzIsMCwwLDAtMjIuNiw5LjQxbC0yMC4zNCwyMC4zTDQ1LjQ3LDMuMzhBMTYsMTYsMCwwLDAsMjMsNi4xOUwzLjM4LDMxLjQ2QTE2LDE2LDAsMCwwLDYuMTksNTMuOTFMNTk0LjU0LDUwOC42M0ExNiwxNiwwLDAsMCw2MTcsNTA1LjgybDE5LjY0LTI1LjI3YTE2LDE2LDAsMCwwLTIuODEtMjIuNDVMMzAzLjQsMjAyLjcybDMyLjY5LTI5LjkyLDI3LTI0LjdhMTYsMTYsMCwwLDEsMjEuNjEsMjMuNjFaTTE2LDEyOEExNi4wNSwxNi4wNSwwLDAsMCwwLDE0NFYzMzUuOTFhMTYsMTYsMCwwLDAsMTYsMTZIMTQ2LjNsOTAuNSw4MS44OWE2NCw2NCwwLDAsMCw5MC05LjNsLjItLjIsMTcuOTEsMTUuNWEzNy4xNiwzNy4xNiwwLDAsMCw1Mi4yOS01LjM5bDguOC0xMC44MkwyMy41NiwxMjhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzaGFrZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAsMTI4LjIxVjM4NEg2NGEzMiwzMiwwLDAsMCwzMi0zMlYxODRMMjMuODMsMTI4LjIxWk00OCwzMjAuMWExNiwxNiwwLDEsMS0xNiwxNkExNiwxNiwwLDAsMSw0OCwzMjAuMVptODAsMzEuODFoMTguM2w5MC41LDgxLjg5YTY0LDY0LDAsMCwwLDkwLTkuM2wuMi0uMiwxNy45MSwxNS41YTM3LjE2LDM3LjE2LDAsMCwwLDUyLjI5LTUuMzlsOC44LTEwLjgyTDEyOCwyMDguNzJabTQxNi0yMjMuN1YzNTIuMWEzMiwzMiwwLDAsMCwzMiwzMmg2NFYxMjguMjFaTTU5MiwzNTIuMWExNiwxNiwwLDEsMSwxNi0xNkExNiwxNiwwLDAsMSw1OTIsMzUyLjFaTTMwMy4zMywyMDIuNjdsNTkuNTgtNTQuNTdhMTYsMTYsMCwwLDEsMjEuNTksMjMuNjFMMzU4LjQxLDE5NS42LDUwNCwzMTMuOGE3My4wOCw3My4wOCwwLDAsMSw3LjkxLDcuN1YxMjhMNDU3LjMsNzMuNDFBMzEuNzYsMzEuNzYsMCwwLDAsNDM0LjcsNjRIMzQ4LjhhMzEuOTMsMzEuOTMsMCwwLDAtMjEuNiw4LjQxbC04OC4wNyw4MC42NC0yNS42NC0xOS44MUwyODkuMDksNjRIMjA1LjNhMzIsMzIsMCwwLDAtMjIuNiw5LjQxTDE2Mi4zNiw5My43Miw0NS40NywzLjM4QTE2LDE2LDAsMCwwLDIzLDYuMTlMMy4zOCwzMS40NkExNiwxNiwwLDAsMCw2LjE5LDUzLjkxTDU5NC41Myw1MDguNjNBMTYsMTYsMCwwLDAsNjE3LDUwNS44MmwxOS42NS0yNS4yN2ExNiwxNiwwLDAsMC0yLjgyLTIyLjQ1WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc2hha2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM0LjcgNjRoLTg1LjljLTggMC0xNS43IDMtMjEuNiA4LjRsLTk4LjMgOTBjLS4xLjEtLjIuMy0uMy40LTE2LjYgMTUuNi0xNi4zIDQwLjUtMi4xIDU2IDEyLjcgMTMuOSAzOS40IDE3LjYgNTYuMSAyLjcuMS0uMS4zLS4xLjQtLjJsNzkuOS03My4yYzYuNS01LjkgMTYuNy01LjUgMjIuNiAxIDYgNi41IDUuNSAxNi42LTEgMjIuNmwtMjYuMSAyMy45TDUwNCAzMTMuOGMyLjkgMi40IDUuNSA1IDcuOSA3LjdWMTI4bC01NC42LTU0LjZjLTUuOS02LTE0LjEtOS40LTIyLjYtOS40ek01NDQgMTI4LjJ2MjIzLjljMCAxNy43IDE0LjMgMzIgMzIgMzJoNjRWMTI4LjJoLTk2em00OCAyMjMuOWMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2ek0wIDM4NGg2NGMxNy43IDAgMzItMTQuMyAzMi0zMlYxMjguMkgwVjM4NHptNDgtNjMuOWM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNi0xNi03LjItMTYtMTZjMC04LjkgNy4yLTE2IDE2LTE2em00MzUuOSAxOC42TDMzNC42IDIxNy41bC0zMCAyNy41Yy0yOS43IDI3LjEtNzUuMiAyNC41LTEwMS43LTQuNC0yNi45LTI5LjQtMjQuOC03NC45IDQuNC0xMDEuN0wyODkuMSA2NGgtODMuOGMtOC41IDAtMTYuNiAzLjQtMjIuNiA5LjRMMTI4IDEyOHYyMjMuOWgxOC4zbDkwLjUgODEuOWMyNy40IDIyLjMgNjcuNyAxOC4xIDkwLTkuM2wuMi0uMiAxNy45IDE1LjVjMTUuOSAxMyAzOS40IDEwLjUgNTIuMy01LjRsMzEuNC0zOC42IDUuNCA0LjRjMTMuNyAxMS4xIDMzLjkgOS4xIDQ1LTQuN2w5LjUtMTEuN2MxMS4yLTEzLjggOS4xLTMzLjktNC42LTQ1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbnVraWFoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMiAxNjBjLTQuNDIgMC04IDMuNTgtOCA4djEyMGgzMlYxNjhjMC00LjQyLTMuNTgtOC04LThoLTE2em0tNjQgMGMtNC40MiAwLTggMy41OC04IDh2MTIwaDMyVjE2OGMwLTQuNDItMy41OC04LTgtOGgtMTZ6bTIyNCAwYy00LjQyIDAtOCAzLjU4LTggOHYxMjBoMzJWMTY4YzAtNC40Mi0zLjU4LTgtOC04aC0xNnptNjQgMGMtNC40MiAwLTggMy41OC04IDh2MTIwaDMyVjE2OGMwLTQuNDItMy41OC04LTgtOGgtMTZ6bTg4IDhjMC00LjQyLTMuNTgtOC04LThoLTE2Yy00LjQyIDAtOCAzLjU4LTggOHYxMjBoMzJWMTY4em0tNDQwLThjLTQuNDIgMC04IDMuNTgtOCA4djEyMGgzMlYxNjhjMC00LjQyLTMuNTgtOC04LThoLTE2em01MjAgMGgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djExMmMwIDE3LjY3LTE0LjMzIDMyLTMyIDMySDM1MlYxMjhjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxOTJIOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJWMTc2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxMTJjMCA1My4wMiA0Mi45OCA5NiA5NiA5NmgxOTJ2NjRIMTEyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0MTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2SDM1MnYtNjRoMTkyYzUzLjAyIDAgOTYtNDIuOTggOTYtOTZWMTc2YzAtOC44NC03LjE2LTE2LTE2LTE2em0tMTYtMzJjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1M2MDggNDggNjA4IDQ4cy0yNCAzOC42MS0yNCA1My4zM1M1OTQuNzUgMTI4IDYwOCAxMjh6bS01NzYgMGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzMyIDQ4IDMyIDQ4IDggODYuNjEgOCAxMDEuMzMgMTguNzUgMTI4IDMyIDEyOHptMjg4LTQ4YzEzLjI1IDAgMjQtMTEuOTQgMjQtMjYuNjdTMzIwIDAgMzIwIDBzLTI0IDM4LjYxLTI0IDUzLjMzUzMwNi43NSA4MCAzMjAgODB6bS0yMDggNDhjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1MxMTIgNDggMTEyIDQ4cy0yNCAzOC42MS0yNCA1My4zM1M5OC43NSAxMjggMTEyIDEyOHptNjQgMGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzE3NiA0OCAxNzYgNDhzLTI0IDM4LjYxLTI0IDUzLjMzUzE2Mi43NSAxMjggMTc2IDEyOHptNjQgMGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzI0MCA0OCAyNDAgNDhzLTI0IDM4LjYxLTI0IDUzLjMzUzIyNi43NSAxMjggMjQwIDEyOHptMTYwIDBjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1M0MDAgNDggNDAwIDQ4cy0yNCAzOC42MS0yNCA1My4zM1MzODYuNzUgMTI4IDQwMCAxMjh6bTY0IDBjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1M0NjQgNDggNDY0IDQ4cy0yNCAzOC42MS0yNCA1My4zM1M0NTAuNzUgMTI4IDQ2NCAxMjh6bTY0IDBjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1M1MjggNDggNTI4IDQ4cy0yNCAzOC42MS0yNCA1My4zM1M1MTQuNzUgMTI4IDUyOCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhcmRIYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDI4OGMwLTgwLjI1LTQ5LjI4LTE0OC45Mi0xMTkuMTktMTc3LjYyTDMyMCAxOTJWODBhMTYgMTYgMCAwIDAtMTYtMTZoLTk2YTE2IDE2IDAgMCAwLTE2IDE2djExMmwtNDAuODEtODEuNjJDODEuMjggMTM5LjA4IDMyIDIwNy43NSAzMiAyODh2NjRoNDQ4em0xNiA5NkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0ODBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYXNodGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC42NjcgMTgyLjEwOWw3LjE0My00MGMxLjMxMy03LjM1NS00LjM0Mi0xNC4xMDktMTEuODEzLTE0LjEwOWgtNzQuODFsMTQuNjIzLTgxLjg5MUMzNzcuMTIzIDM4Ljc1NCAzNzEuNDY4IDMyIDM2My45OTcgMzJoLTQwLjYzMmExMiAxMiAwIDAgMC0xMS44MTMgOS44OTFMMjk2LjE3NSAxMjhIMTk3LjU0bDE0LjYyMy04MS44OTFDMjEzLjQ3NyAzOC43NTQgMjA3LjgyMiAzMiAyMDAuMzUgMzJoLTQwLjYzMmExMiAxMiAwIDAgMC0xMS44MTMgOS44OTFMMTMyLjUyOCAxMjhINTMuNDMyYTEyIDEyIDAgMCAwLTExLjgxMyA5Ljg5MWwtNy4xNDMgNDBDMzMuMTYzIDE4NS4yNDYgMzguODE4IDE5MiA0Ni4yODkgMTkyaDc0LjgxTDk4LjI0MiAzMjBIMTkuMTQ2YTEyIDEyIDAgMCAwLTExLjgxMyA5Ljg5MWwtNy4xNDMgNDBDLTEuMTIzIDM3Ny4yNDYgNC41MzIgMzg0IDEyLjAwMyAzODRoNzQuODFMNzIuMTkgNDY1Ljg5MUM3MC44NzcgNDczLjI0NiA3Ni41MzIgNDgwIDg0LjAwMyA0ODBoNDAuNjMyYTEyIDEyIDAgMCAwIDExLjgxMy05Ljg5MUwxNTEuODI2IDM4NGg5OC42MzRsLTE0LjYyMyA4MS44OTFDMjM0LjUyMyA0NzMuMjQ2IDI0MC4xNzggNDgwIDI0Ny42NSA0ODBoNDAuNjMyYTEyIDEyIDAgMCAwIDExLjgxMy05Ljg5MUwzMTUuNDcyIDM4NGg3OS4wOTZhMTIgMTIgMCAwIDAgMTEuODEzLTkuODkxbDcuMTQzLTQwYzEuMzEzLTcuMzU1LTQuMzQyLTE0LjEwOS0xMS44MTMtMTQuMTA5aC03NC44MWwyMi44NTctMTI4aDc5LjA5NmExMiAxMiAwIDAgMCAxMS44MTMtOS44OTF6TTI2MS44ODkgMzIwaC05OC42MzRsMjIuODU3LTEyOGg5OC42MzRsLTIyLjg1NyAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhdENvd2JveVNpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjYwLjggMjkxLjA2Yy0yOC42My0yMi45NC02Mi0zNS4wNi05Ni40LTM1LjA2Qzg3IDI1NiAyMS40NyAzMTguNzIgMS40MyA0MTIuMDZjLTMuNTUgMTYuNi0uNDMgMzMuODMgOC41NyA0Ny4zQzE4Ljc1IDQ3Mi40NyAzMS44MyA0ODAgNDUuODggNDgwSDU5MmMtMTAzLjIxIDAtMTU1LTM3LjA3LTIzMy4xOS0xMDQuNDZ6bTIzNC42NS0xOC4yOUw0NjguNCAxMTYuMkE2NCA2NCAwIDAgMCAzOTIgNjQuNDFMMjAwLjg1IDEwNWE2NCA2NCAwIDAgMC01MC4zNSA1NS43OUwxNDMuNjEgMjI2YzYuOS0uODMgMTMuNy0yIDIwLjc5LTIgNDEuNzkgMCA4MiAxNC41NSAxMTcuMjkgNDIuODJsOTggODQuNDhDNDUwLjc2IDQxMi41NCA0OTQuOSA0NDggNTkyIDQ0OGE0OCA0OCAwIDAgMCA0OC00OGMwLTI1LjM5LTI5LjYtMTE5LjMzLTE0NC41NS0xMjcuMjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhdENvd2JveSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTAgMjk2LjlDNDgwLjUxIDIzOS41MSA0NTAuNTEgNjQgMzkyLjMgNjRjLTE0IDAtMjYuNDkgNS45My0zNyAxNGE1OC4yMSA1OC4yMSAwIDAgMS03MC41OCAwYy0xMC41MS04LTIzLTE0LTM3LTE0LTU4LjIgMC04OC4yIDE3NS40Ny05Ny43MSAyMzIuODhDMTg4LjgxIDMwOS40NyAyNDMuNzMgMzIwIDMyMCAzMjBzMTMxLjIzLTEwLjUxIDE3MC0yMy4xem0xNDIuOS0zNy4xOGExNiAxNiAwIDAgMC0xOS43NSAxLjVjLTEgLjktMTAxLjI3IDkwLjc4LTI5My4xNiA5MC43OC0xOTAuODIgMC0yOTIuMjItODkuOTQtMjkzLjI0LTkwLjg0QTE2IDE2IDAgMCAwIDEgMjc4LjUzQzEuNzMgMjgwLjU1IDc4LjMyIDQ4MCAzMjAgNDgwczMxOC4yNy0xOTkuNDUgMzE5LTIwMS40N2ExNiAxNiAwIDAgMC02LjA5LTE4LjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYXRXaXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDQ0OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDgwYzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnptLTMwNC02NGwtNjQtMzIgNjQtMzIgMzItNjQgMzIgNjQgNjQgMzItNjQgMzItMTYgMzJoMjA4bC04Ni40MS0yMDEuNjNhNjMuOTU1IDYzLjk1NSAwIDAgMS0xLjg5LTQ1LjQ1TDQxNiAwIDIyOC40MiAxMDcuMTlhMTI3Ljk4OSAxMjcuOTg5IDAgMCAwLTUzLjQ2IDU5LjE1TDY0IDQxNmgxNDRsLTE2LTMyem02NC0yMjRsMTYtMzIgMTYgMzIgMzIgMTYtMzIgMTYtMTYgMzItMTYtMzItMzItMTYgMzItMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzYgMzA0djk2YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDh2LTk2YzAtMjYuNTEgMjEuNDktNDggNDgtNDhoNDgwYzI2LjUxIDAgNDggMjEuNDkgNDggNDh6bS00OC04MGE3OS41NTcgNzkuNTU3IDAgMCAxIDMwLjc3NyA2LjE2NUw0NjIuMjUgODUuMzc0QTQ4LjAwMyA0OC4wMDMgMCAwIDAgNDIyLjMxMSA2NEgxNTMuNjg5YTQ4IDQ4IDAgMCAwLTM5LjkzOCAyMS4zNzRMMTcuMjIzIDIzMC4xNjVBNzkuNTU3IDc5LjU1NyAwIDAgMSA0OCAyMjRoNDgwem0tNDggOTZjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnptLTk2IDBjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhZFNpZGVDb3VnaFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1NC4xMSwzMTkuMjFjMTkuNTYtMy44MSwzMS42Mi0yNSwyMy4xMS00NC4yMS0yMS00Ny4xMi00OC41LTE1MS43NS03My4xMi0xODYuNzVBMjA4LjEzLDIwOC4xMywwLDAsMCwyMzQuMSwwSDE5MkExOTAuNjQsMTkwLjY0LDAsMCwwLDg0LjE4LDMzLjNMNDUuNDYsMy4zOEExNiwxNiwwLDAsMCwyMyw2LjE5TDMuMzcsMzEuNDZBMTYsMTYsMCwwLDAsNi4xOCw1My45MUw1OTQuNTMsNTA4LjYzQTE2LDE2LDAsMCwwLDYxNyw1MDUuODJsMTkuNjQtMjUuMjdhMTYsMTYsMCwwLDAtMi44MS0yMi40NVpNMzEzLjM5LDIxMC40NSwyNjMuNjEsMTcyYzUuODgtNy4xNCwxNC40My0xMiwyNC4zNi0xMmEzMi4wNiwzMi4wNiwwLDAsMSwzMiwzMkMzMjAsMTk5LDMxNy4yNCwyMDUuMTcsMzEzLjM5LDIxMC40NVpNNjE2LDMwNGEyNCwyNCwwLDEsMC0yNC0yNEEyNCwyNCwwLDAsMCw2MTYsMzA0Wm0tNjQsNjRhMjQsMjQsMCwxLDAtMjQtMjRBMjQsMjQsMCwwLDAsNTUyLDM2OFpNMjg4LDM4NGEzMiwzMiwwLDAsMSwzMi0zMmgxOS41NEwyMC43MywxMDUuNTlBMTkwLjg2LDE5MC44NiwwLDAsMCwwLDE5MmMwLDU2Ljc1LDI0Ljc1LDEwNy42Miw2NCwxNDIuODhWNTEySDI4OFY0ODBoNjRhNjQsNjQsMCwwLDAsNjQtNjRIMzIwQTMyLDMyLDAsMCwxLDI4OCwzODRabTMyOC0yNGEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw2MTYsMzYwWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkU2lkZUNvdWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxNiwzMDRhMjQsMjQsMCwxLDAtMjQtMjRBMjQsMjQsMCwwLDAsNjE2LDMwNFpNNTUyLDQxNmEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw1NTIsNDE2Wm0tNjQtNTZhMjQsMjQsMCwxLDAsMjQsMjRBMjQsMjQsMCwwLDAsNDg4LDM2MFpNNjE2LDQ2NGEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw2MTYsNDY0Wm0wLTEwNGEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw2MTYsMzYwWm0tNjQtNDBhMjQsMjQsMCwxLDAsMjQsMjRBMjQsMjQsMCwwLDAsNTUyLDMyMFptLTc0Ljc4LTQ1Yy0yMS00Ny4xMi00OC41LTE1MS43NS03My4xMi0xODYuNzVBMjA4LjEzLDIwOC4xMywwLDAsMCwyMzQuMSwwSDE5MkM4NiwwLDAsODYsMCwxOTJjMCw1Ni43NSwyNC43NSwxMDcuNjIsNjQsMTQyLjg4VjUxMkgyODhWNDgwaDY0YTY0LDY0LDAsMCwwLDY0LTY0SDMyMGEzMiwzMiwwLDAsMSwwLTY0aDk2VjMyMGgzMkEzMiwzMiwwLDAsMCw0NzcuMjIsMjc1Wk0yODgsMjI0YTMyLDMyLDAsMSwxLDMyLTMyQTMyLjA3LDMyLjA3LDAsMCwxLDI4OCwyMjRaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRTaWRlTWFzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uMTUsMTg0LjQyQy0yLjE3LDI0NC4yMSwyMywyOTguMDYsNjQsMzM0Ljg4VjUxMkgyMjRWMzE2LjUxTDMuNjcsMTU2LjI1QTE4Mi4yOCwxODIuMjgsMCwwLDAsLjE1LDE4NC40MlpNNTA5LjIyLDI3NWMtMjEtNDcuMTItNDguNS0xNTEuNzUtNzMuMTItMTg2Ljc1QTIwOC4xMSwyMDguMTEsMCwwLDAsMjY2LjExLDBIMjAwQzExNywwLDQyLjQ4LDUwLjU3LDEzLjI1LDEyMy42NUwyMzkuMjEsMjg4SDUxMS43NkEzMS4zNSwzMS4zNSwwLDAsMCw1MDkuMjIsMjc1Wk0zMjAsMjI0YTMyLDMyLDAsMSwxLDMyLTMyQTMyLjA3LDMyLjA3LDAsMCwxLDMyMCwyMjRabTE2LDE0NEg0OTZsMTYtNDhIMjU2VjUxMkg0MDEuODhhNjQsNjQsMCwwLDAsNjAuNzEtNDMuNzZMNDY0LDQ2NEgzMzZhMTYsMTYsMCwwLDEsMC0zMkg0NzQuNjdsMTAuNjctMzJIMzM2YTE2LDE2LDAsMCwxLDAtMzJaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRTaWRlVmlydXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyLDI0MGExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwyNzIsMjQwWm0tNjQtNjRhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMjA4LDE3NlptMzAxLjIsOTljLTIwLjkzLTQ3LjEyLTQ4LjQzLTE1MS43My03My4wNy0xODYuNzVBMjA3LjksMjA3LjksMCwwLDAsMjY2LjA5LDBIMTkyQzg2LDAsMCw4NiwwLDE5MkExOTEuMjMsMTkxLjIzLDAsMCwwLDY0LDMzNC44MVY1MTJIMzIwVjQ0OGg2NGE2NCw2NCwwLDAsMCw2NC02NFYzMjBINDgwQTMyLDMyLDAsMCwwLDUwOS4yLDI3NVpNMzY4LDI0MEgzNTUuODhjLTI4LjUxLDAtNDIuNzksMzQuNDctMjIuNjMsNTQuNjNsOC41OCw4LjU3YTE2LDE2LDAsMSwxLTIyLjYzLDIyLjYzbC04LjU3LTguNThDMjkwLjQ3LDI5Ny4wOSwyNTYsMzExLjM3LDI1NiwzMzkuODhWMzUyYTE2LDE2LDAsMCwxLTMyLDBWMzM5Ljg4YzAtMjguNTEtMzQuNDctNDIuNzktNTQuNjMtMjIuNjNsLTguNTcsOC41OGExNiwxNiwwLDAsMS0yMi42My0yMi42M2w4LjU4LTguNTdjMjAuMTYtMjAuMTYsNS44OC01NC42My0yMi42My01NC42M0gxMTJhMTYsMTYsMCwwLDEsMC0zMmgxMi4xMmMyOC41MSwwLDQyLjc5LTM0LjQ3LDIyLjYzLTU0LjYzbC04LjU4LTguNTdhMTYsMTYsMCwwLDEsMjIuNjMtMjIuNjNsOC41Nyw4LjU4YzIwLjE2LDIwLjE2LDU0LjYzLDUuODgsNTQuNjMtMjIuNjNWOTZhMTYsMTYsMCwwLDEsMzIsMHYxMi4xMmMwLDI4LjUxLDM0LjQ3LDQyLjc5LDU0LjYzLDIyLjYzbDguNTctOC41OGExNiwxNiwwLDAsMSwyMi42MywyMi42M2wtOC41OCw4LjU3QzMxMy4wOSwxNzMuNTMsMzI3LjM3LDIwOCwzNTUuODgsMjA4SDM2OGExNiwxNiwwLDAsMSwwLDMyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA5NnYzMjBoMzJhMTYgMTYgMCAwIDEgMTYgMTZ2MzJhMTYgMTYgMCAwIDEtMTYgMTZIMzIwYTE2IDE2IDAgMCAxLTE2LTE2di0zMmExNiAxNiAwIDAgMSAxNi0xNmgzMlYyODhIMTYwdjEyOGgzMmExNiAxNiAwIDAgMSAxNiAxNnYzMmExNiAxNiAwIDAgMS0xNiAxNkgzMmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoMzJWOTZIMzJhMTYgMTYgMCAwIDEtMTYtMTZWNDhhMTYgMTYgMCAwIDEgMTYtMTZoMTYwYTE2IDE2IDAgMCAxIDE2IDE2djMyYTE2IDE2IDAgMCAxLTE2IDE2aC0zMnYxMjhoMTkyVjk2aC0zMmExNiAxNiAwIDAgMS0xNi0xNlY0OGExNiAxNiAwIDAgMSAxNi0xNmgxNjBhMTYgMTYgMCAwIDEgMTYgMTZ2MzJhMTYgMTYgMCAwIDEtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRwaG9uZXNBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDI4OGgtMTZjLTM1LjM1IDAtNjQgMjguNy02NCA2NC4xMnY2My43NmMwIDM1LjQxIDI4LjY1IDY0LjEyIDY0IDY0LjEyaDE2YzE3LjY3IDAgMzItMTQuMzYgMzItMzIuMDZWMzIwLjA2YzAtMTcuNzEtMTQuMzMtMzIuMDYtMzItMzIuMDZ6bTIwOCAwaC0xNmMtMTcuNjcgMC0zMiAxNC4zNS0zMiAzMi4wNnYxMjcuODhjMCAxNy43IDE0LjMzIDMyLjA2IDMyIDMyLjA2aDE2YzM1LjM1IDAgNjQtMjguNzEgNjQtNjQuMTJ2LTYzLjc2YzAtMzUuNDEtMjguNjUtNjQuMTItNjQtNjQuMTJ6TTI1NiAzMkMxMTIuOTEgMzIgNC41NyAxNTEuMTMgMCAyODh2MTEyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2VjI4OGMwLTExNC42NyA5My4zMy0yMDcuOCAyMDgtMjA3LjgyIDExNC42Ny4wMiAyMDggOTMuMTUgMjA4IDIwNy44MnYxMTJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjg4QzUwNy40MyAxNTEuMTMgMzk5LjA5IDMyIDI1NiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhZHBob25lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJDMTE0LjUyIDMyIDAgMTQ2LjQ5NiAwIDI4OHY0OGEzMiAzMiAwIDAgMCAxNy42ODkgMjguNjIybDE0LjM4MyA3LjE5MUMzNC4wODMgNDMxLjkwMyA4My40MjEgNDgwIDE0NCA0ODBoMjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI4MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTI0Yy0zMS4zNDIgMC01OS42NzEgMTIuODc5LTgwIDMzLjYyN1YyODhjMC0xMDUuODY5IDg2LjEzMS0xOTIgMTkyLTE5MnMxOTIgODYuMTMxIDE5MiAxOTJ2MS42MjdDNDI3LjY3MSAyNjguODc5IDM5OS4zNDIgMjU2IDM2OCAyNTZoLTI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTc2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgyNGM2MC41NzkgMCAxMDkuOTE3LTQ4LjA5OCAxMTEuOTI4LTEwOC4xODdsMTQuMzgyLTcuMTkxQTMyIDMyIDAgMCAwIDUxMiAzMzZ2LTQ4YzAtMTQxLjQ3OS0xMTQuNDk2LTI1Ni0yNTYtMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAyMDhjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMTZjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2NDhjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgxNmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjIwOHptMTc2IDE0NGMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0di00OGMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0aC0xNmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMTJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgxNnpNMjU2IDBDMTEzLjE4IDAgNC41OCAxMTguODMgMCAyNTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtMTE0LjY5IDkzLjMxLTIwOCAyMDgtMjA4czIwOCA5My4zMSAyMDggMjA4aC0uMTJjLjA4IDIuNDMuMTIgMTY1LjcyLjEyIDE2NS43MiAwIDIzLjM1LTE4LjkzIDQyLjI4LTQyLjI4IDQyLjI4SDMyMGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4aC0zMmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OGgxODEuNzJjNDkuODYgMCA5MC4yOC00MC40MiA5MC4yOC05MC4yOFYyNTZDNTA3LjQyIDExOC44MyAzOTguODIgMCAyNTYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRCcm9rZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDczLjcgNzMuOGwtMi40LTIuNWMtNDYtNDctMTE4LTUxLjctMTY5LjYtMTQuOEwzMzYgMTU5LjlsLTk2IDY0IDQ4IDEyOC0xNDQtMTQ0IDk2LTY0LTI4LjYtODYuNUMxNTkuNyAxOS42IDg3IDI0IDQwLjcgNzEuNGwtMi40IDIuNEMtMTAuNCAxMjMuNi0xMi41IDIwMi45IDMxIDI1NmwyMTIuMSAyMTguNmM3LjEgNy4zIDE4LjYgNy4zIDI1LjcgMEw0ODEgMjU1LjljNDMuNS01MyA0MS40LTEzMi4zLTcuMy0xODIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDYyLjMgNjIuNkM0MDcuNSAxNS45IDMyNiAyNC4zIDI3NS43IDc2LjJMMjU2IDk2LjVsLTE5LjctMjAuM0MxODYuMSAyNC4zIDEwNC41IDE1LjkgNDkuNyA2Mi42Yy02Mi44IDUzLjYtNjYuMSAxNDkuOC05LjkgMjA3LjlsMTkzLjUgMTk5LjhjMTIuNSAxMi45IDMyLjggMTIuOSA0NS4zIDBsMTkzLjUtMTk5LjhjNTYuMy01OC4xIDUzLTE1NC4zLTkuOC0yMDcuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRiZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMC4yIDI0My44bC00OS43IDk5LjRjLTYgMTIuMS0yMy40IDExLjctMjguOS0uNmwtNTYuOS0xMjYuMy0zMCA3MS43SDYwLjZsMTgyLjUgMTg2LjVjNy4xIDcuMyAxOC42IDcuMyAyNS43IDBMNDUxLjQgMjg4SDM0Mi4zbC0yMi4xLTQ0LjJ6TTQ3My43IDczLjlsLTIuNC0yLjVjLTUxLjUtNTIuNi0xMzUuOC01Mi42LTE4Ny40IDBMMjU2IDEwMGwtMjcuOS0yOC41Yy01MS41LTUyLjctMTM1LjktNTIuNy0xODcuNCAwbC0yLjQgMi40Qy0xMC40IDEyMy43LTEyLjUgMjAzIDMxIDI1NmgxMDIuNGwzNS45LTg2LjJjNS40LTEyLjkgMjMuNi0xMy4yIDI5LjQtLjRsNTguMiAxMjkuMyA0OS05Ny45YzUuOS0xMS44IDIyLjctMTEuOCAyOC42IDBsMjcuNiA1NS4ySDQ4MWM0My41LTUzIDQxLjQtMTMyLjMtNy4zLTE4Mi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWxpY29wdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNCAzODRoMjcyYzE3LjY3IDAgMzItMTQuMzMgMzItMzIgMC0xMjMuNzEtMTAwLjI5LTIyNC0yMjQtMjI0VjY0aDE3NmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNmMwLTguODQtNy4xNi0xNi0xNi0xNkgxNDRjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE3NnY2NEgxMTJMNjguOCA3MC40QzY1Ljc4IDY2LjM3IDYxLjAzIDY0IDU2IDY0SDE2LjAxQzUuNiA2NC0yLjA0IDczLjc4LjQ5IDgzLjg4TDMyIDE5MmwxNjAgNjQgODYuNCAxMTUuMkEzMS45OTIgMzEuOTkyIDAgMCAwIDMwNCAzODR6bTExMi0xODguNDlDNDc4LjU1IDIwOC4zIDUyOC4wMyAyNTcuNDQgNTQwLjc5IDMyMEg0MTZWMTk1LjUxem0yMTkuMzcgMjYzLjNsLTIyLjE1LTIyLjJjLTYuMjUtNi4yNi0xNi4yNC02LjEtMjIuNjQuMDEtNy4wOSA2Ljc3LTEzLjg0IDExLjI1LTI0LjY0IDExLjI1SDI0MGMtOC44NCAwLTE2IDcuMTgtMTYgMTYuMDN2MzIuMDZjMCA4Ljg1IDcuMTYgMTYuMDMgMTYgMTYuMDNoMzI1Ljk0YzE0Ljg4IDAgMzUuMy0uNDcgNjguNDUtMjkuNTIgNy4wMi02LjE0IDcuNTctMTcuMDUuOTgtMjMuNjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpZ2hsaWdodGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NDQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDc5Ljk4TDk5LjkyIDUxMmwzNS40NS0zNS40NS02Ny4wNC02Ny4wNEwwIDQ3OS45OHptMTI0LjYxLTI0MC4wMWEzNi41OTIgMzYuNTkyIDAgMCAwLTEwLjc5IDM4LjFsMTMuMDUgNDIuODMtNTAuOTMgNTAuOTQgOTYuMjMgOTYuMjMgNTAuODYtNTAuODYgNDIuNzQgMTMuMDhjMTMuNzMgNC4yIDI4LjY1LS4wMSAzOC4xNS0xMC43OGwzNS41NS00MS42NC0xNzMuMzQtMTczLjM0LTQxLjUyIDM1LjQ0em00MDMuMzEtMTYwLjdsLTYzLjItNjMuMmMtMjAuNDktMjAuNDktNTMuMzgtMjEuNTItNzUuMTItMi4zNUwxOTAuNTUgMTgzLjY4bDE2OS43NyAxNjkuNzhMNTMwLjI3IDE1NC40YzE5LjE4LTIxLjc0IDE4LjE1LTU0LjYzLTIuMzUtNzUuMTN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpa2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MC45NSA0NzIuMjNjLTQuMjggMTcuMTYgNi4xNCAzNC41MyAyMy4yOCAzOC44MSAyLjYxLjY2IDUuMjIuOTUgNy44Ljk1IDE0LjMzIDAgMjcuMzctOS43IDMxLjAyLTI0LjIzbDI1LjI0LTEwMC45Ny01Mi43OC01Mi43OC0zNC41NiAxMzguMjJ6bTE0Ljg5LTE5Ni4xMkwxMzcgMTE3YzIuMTktOC40Mi0zLjE0LTE2Ljk1LTExLjkyLTE5LjA2LTQzLjg4LTEwLjUyLTg4LjM1IDE1LjA3LTk5LjMyIDU3LjE3TC40OSAyNTMuMjRjLTIuMTkgOC40MiAzLjE0IDE2Ljk1IDExLjkyIDE5LjA2bDYzLjU2IDE1LjI1YzguNzkgMi4xIDE3LjY4LTMuMDIgMTkuODctMTEuNDR6TTM2OCAxNjBoLTE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmgtMzQuNzVsLTQ2Ljc4LTQ2Ljc4QzI0My4zOCAxMzQuMTEgMjI4LjYxIDEyOCAyMTIuOTEgMTI4Yy0yNy4wMiAwLTUwLjQ3IDE4LjMtNTcuMDMgNDQuNTJsLTI2LjkyIDEwNy43MmEzMi4wMTIgMzIuMDEyIDAgMCAwIDguNDIgMzAuMzlMMjI0IDM5Ny4yNVY0ODBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMnMzMi0xNC4zMyAzMi0zMnYtODIuNzVjMC0xNy4wOS02LjY2LTMzLjE2LTE4Ljc1LTQ1LjI1bC00Ni44Mi00Ni44MmMuMTUtLjUuNDktLjg5LjYyLTEuNDFsMTkuODktNzkuNTcgMjIuNDMgMjIuNDNjNiA2IDE0LjE0IDkuMzggMjIuNjIgOS4zOGg0OHYyNDBjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWMTc2Yy4wMS04Ljg0LTcuMTUtMTYtMTUuOTktMTZ6TTI0MCA5NmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4UzI2Ni41MSAwIDI0MCAwcy00OCAyMS40OS00OCA0OCAyMS40OSA0OCA0OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGlwcG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTgxLjEyIDk2LjJjLTI3LjY3LS4xNS01Mi41IDE3LjU4LTc2LjYgMjYuNjJDNDg5Ljk4IDg4LjI3IDQ1NS44MyA2NCA0MTYgNjRjLTExLjI4IDAtMjEuOTUgMi4zLTMyIDUuODhWNTZjMC0xMy4yNi0xMC43NS0yNC0yNC0yNGgtMTZjLTEzLjI1IDAtMjQgMTAuNzQtMjQgMjR2NDguOThDMjg2LjAxIDc5LjU4IDI0MS4yNCA2NCAxOTIgNjQgODUuOTYgNjQgMCAxMzUuNjQgMCAyMjR2MjQwYzAgOC44NCA3LjE2IDE2IDE2IDE2aDY0YzguODQgMCAxNi03LjE2IDE2LTE2di03MC43OUMxMjguMzUgNDA3LjU3IDE2Ni43MiA0MTYgMjA4IDQxNnM3OS42NS04LjQzIDExMi0yMi43OVY0NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjRjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjg4aDEyOHYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTIuMDJjMC0zNC4wOS0yNC43OS02Ny41OS01OC44OC02Ny43OHpNNDQ4IDE3NmMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNiAxNiA3LjE2IDE2IDE2LTcuMTYgMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpc3RvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0IDI1NS41MzFjLjI1MyAxMzYuNjQtMTExLjE4IDI0OC4zNzItMjQ3LjgyIDI0OC40NjgtNTkuMDE1LjA0Mi0xMTMuMjIzLTIwLjUzLTE1NS44MjItNTQuOTExLTExLjA3Ny04Ljk0LTExLjkwNS0yNS41NDEtMS44MzktMzUuNjA3bDExLjI2Ny0xMS4yNjdjOC42MDktOC42MDkgMjIuMzUzLTkuNTUxIDMxLjg5MS0xLjk4NEMxNzMuMDYyIDQyNS4xMzUgMjEyLjc4MSA0NDAgMjU2IDQ0MGMxMDEuNzA1IDAgMTg0LTgyLjMxMSAxODQtMTg0IDAtMTAxLjcwNS04Mi4zMTEtMTg0LTE4NC0xODQtNDguODE0IDAtOTMuMTQ5IDE4Ljk2OS0xMjYuMDY4IDQ5LjkzMmw1MC43NTQgNTAuNzU0YzEwLjA4IDEwLjA4IDIuOTQxIDI3LjMxNC0xMS4zMTMgMjcuMzE0SDI0Yy04LjgzNyAwLTE2LTcuMTYzLTE2LTE2VjM4LjYyN2MwLTE0LjI1NCAxNy4yMzQtMjEuMzkzIDI3LjMxNC0xMS4zMTRsNDkuMzcyIDQ5LjM3MkMxMjkuMjA5IDM0LjEzNiAxODkuNTUyIDggMjU2IDhjMTM2LjgxIDAgMjQ3Ljc0NyAxMTAuNzggMjQ4IDI0Ny41MzF6bS0xODAuOTEyIDc4Ljc4NGw5LjgyMy0xMi42M2M4LjEzOC0xMC40NjMgNi4yNTMtMjUuNTQyLTQuMjEtMzMuNjc5TDI4OCAyNTYuMzQ5VjE1MmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTE2Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTM1LjY1MWw2NS40MDkgNTAuODc0YzEwLjQ2MyA4LjEzNyAyNS41NDEgNi4yNTMgMzMuNjc5LTQuMjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvY2tleVB1Y2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxNjBjMC01MyAxMTQuNi05NiAyNTYtOTZzMjU2IDQzIDI1NiA5Ni0xMTQuNiA5Ni0yNTYgOTZTMCAyMTMgMCAxNjB6bTAgODIuMlYzNTJjMCA1MyAxMTQuNiA5NiAyNTYgOTZzMjU2LTQzIDI1Ni05NlYyNDIuMmMtMTEzLjQgODIuMy0zOTguNSA4Mi40LTUxMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb2xseUJlcnJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAxOTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDgtNDggMjEuNS00OCA0OCAyMS41IDQ4IDQ4IDQ4em0xMTItNDhjMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OC0yMS41LTQ4LTQ4LTQ4LTQ4IDIxLjUtNDggNDh6bS0zMi00OGMyNi41IDAgNDgtMjEuNSA0OC00OFMyNTAuNSAwIDIyNCAwcy00OCAyMS41LTQ4IDQ4IDIxLjUgNDggNDggNDh6bS0xNi4yIDEzOS4xYy4xLTEyLjQtMTMuMS0yMC4xLTIzLjgtMTMuNy0zNC4zIDIwLjMtNzEuNCAzMi43LTEwOC43IDM2LjItOS43LjktMTUuNiAxMS4zLTExLjYgMjAuMiA2LjIgMTMuOSAxMS4xIDI4LjYgMTQuNyA0My44IDMuNiAxNS4yLTUuMyAzMC42LTIwLjIgMzUuMS0xNC45IDQuNS0zMC4xIDcuNi00NS4zIDkuMS05LjcgMS0xNS43IDExLjMtMTEuNyAyMC4yIDE1IDMyLjggMjIuOSA2OS41IDIzIDEwNy43LjEgMTQuNCAxNS4yIDIzLjEgMjcuNiAxNiAzMy4yLTE5IDY4LjktMzAuNSAxMDQuOC0zMy45IDkuNy0uOSAxNS42LTExLjMgMTEuNi0yMC4yLTYuMi0xMy45LTExLjEtMjguNi0xNC43LTQzLjgtMy42LTE1LjIgNS4zLTMwLjYgMjAuMi0zNS4xIDE0LjktNC41IDMwLjEtNy42IDQ1LjMtOS4xIDkuNy0xIDE1LjctMTEuMyAxMS43LTIwLjItMTUuNS0zNC4yLTIzLjMtNzIuNS0yMi45LTExMi4zek00MzUgMzY1LjZjLTE1LjItMS42LTMwLjMtNC43LTQ1LjMtOS4xLTE0LjktNC41LTIzLjgtMTkuOS0yMC4yLTM1LjEgMy42LTE1LjIgOC41LTI5LjggMTQuNy00My44IDQtOC45LTEuOS0xOS4zLTExLjYtMjAuMi0zNy4zLTMuNS03NC40LTE1LjktMTA4LjctMzYuMi0xMC43LTYuMy0yMy45IDEuNC0yMy44IDEzLjcgMCAxLjYtLjIgMy4yLS4yIDQuOS4yIDMzLjMgNyA2NS43IDE5LjkgOTQgNS43IDEyLjQgNS4yIDI2LjYtLjYgMzguOSA0LjkgMS4yIDkuOSAyLjIgMTQuOCAzLjcgMTQuOSA0LjUgMjMuOCAxOS45IDIwLjIgMzUuMS0zLjYgMTUuMi04LjUgMjkuOC0xNC43IDQzLjgtNCA4LjkgMS45IDE5LjMgMTEuNiAyMC4yIDM1LjkgMy40IDcxLjYgMTQuOSAxMDQuOCAzMy45IDEyLjUgNy4xIDI3LjYtMS42IDI3LjYtMTYgLjItMzguMiA4LTc1IDIzLTEwNy43IDQuMy04LjctMS44LTE5LjEtMTEuNS0yMC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4MC4zNyAxNDguMjZMOTYgMzAwLjExVjQ2NGExNiAxNiAwIDAgMCAxNiAxNmwxMTIuMDYtLjI5YTE2IDE2IDAgMCAwIDE1LjkyLTE2VjM2OGExNiAxNiAwIDAgMSAxNi0xNmg2NGExNiAxNiAwIDAgMSAxNiAxNnY5NS42NGExNiAxNiAwIDAgMCAxNiAxNi4wNUw0NjQgNDgwYTE2IDE2IDAgMCAwIDE2LTE2VjMwMEwyOTUuNjcgMTQ4LjI2YTEyLjE5IDEyLjE5IDAgMCAwLTE1LjMgMHpNNTcxLjYgMjUxLjQ3TDQ4OCAxODIuNTZWNDQuMDVhMTIgMTIgMCAwIDAtMTItMTJoLTU2YTEyIDEyIDAgMCAwLTEyIDEydjcyLjYxTDMxOC40NyA0M2E0OCA0OCAwIDAgMC02MSAwTDQuMzQgMjUxLjQ3YTEyIDEyIDAgMCAwLTEuNiAxNi45bDI1LjUgMzFBMTIgMTIgMCAwIDAgNDUuMTUgMzAxbDIzNS4yMi0xOTMuNzRhMTIuMTkgMTIuMTkgMCAwIDEgMTUuMyAwTDUzMC45IDMwMWExMiAxMiAwIDAgMCAxNi45LTEuNmwyNS41LTMxYTEyIDEyIDAgMCAwLTEuNy0xNi45M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9yc2VIZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwOS44IDMzMi41bC02OS45LTE2NC4zYy0xNC45LTQxLjItNTAuNC03MS05My03OS4yIDE4LTEwLjYgNDYuMy0zNS45IDM0LjItODIuMy0xLjMtNS03LjEtNy45LTEyLTYuMUwxNjYuOSA3Ni4zQzM1LjkgMTIzLjQgMCAyMzguOSAwIDM5OC44VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgyMzYuMmMyMy44IDAgMzkuMy0yNSAyOC42LTQ2LjNMMjU2IDM4NHYtLjdjLTQ1LjYtMy41LTg0LjYtMzAuNy0xMDQuMy02OS42LTEuNi0zLjEtLjktNi45IDEuNi05LjNsMTIuMS0xMi4xYzMuOS0zLjkgMTAuNi0yLjcgMTIuOSAyLjQgMTQuOCAzMy43IDQ4LjIgNTcuNCA4Ny40IDU3LjQgMTcuMiAwIDMzLTUuMSA0Ni44LTEzLjJsNDYgNjMuOWM2IDguNCAxNS43IDEzLjMgMjYgMTMuM2g1MC4zYzguNSAwIDE2LjYtMy40IDIyLjYtOS40bDQ1LjMtMzkuOGM4LjktOS4xIDExLjctMjIuNiA3LjEtMzQuNHpNMzI4IDIyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNCAyNCAxMC43IDI0IDI0LTEwLjcgMjQtMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvcnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NS45MiA3Ni42Yy0uMDEtOC4xMy0zLjAyLTE1Ljg3LTguNTgtMjEuOC0zLjc4LTQuMDMtOC41OC05LjEyLTEzLjY5LTE0LjUgMTEuMDYtNi44NCAxOS41LTE3LjQ5IDIyLjE4LTMwLjY2QzU3Ni44NSA0LjY4IDU3Mi45NiAwIDU2Ny45IDBINDQ3LjkyYy03MC42OSAwLTEyOCA1Ny4zMS0xMjggMTI4SDE2MGMtMjguODQgMC01NC40IDEyLjk4LTcyIDMzLjExVjE2MGMtNDguNTMgMC04OCAzOS40Ny04OCA4OHY1NmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNTZjMC0xMy4yMiA2Ljg3LTI0LjM5IDE2Ljc4LTMxLjY4LS4yMSAyLjU4LS43OCA1LjA1LS43OCA3LjY4IDAgMjcuNjQgMTEuODQgNTIuMzYgMzAuNTQgNjkuODhsLTI1LjcyIDY4LjZhNjMuOTQ1IDYzLjk0NSAwIDAgMC0yLjE2IDM3Ljk5bDI0Ljg1IDk5LjQxQTE1Ljk4MiAxNS45ODIgMCAwIDAgMTA3LjAyIDUxMmg2NS45NmMxMC40MSAwIDE4LjA1LTkuNzggMTUuNTItMTkuODhsLTI2LjMxLTEwNS4yNiAyMy44NC02My41OUwzMjAgMzQ1LjZWNDk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDY0YzguODQgMCAxNi03LjE2IDE2LTE2VjMxOC4yMmMxOS43NC0yMC4xOSAzMi00Ny43NSAzMi03OC4yMiAwLS4yMi0uMDctLjQyLS4wOC0uNjRWMTM2Ljg5bDE2IDcuMTEgMTguOSAzNy43YzcuNDUgMTQuODcgMjUuMDUgMjEuNTUgNDAuNDkgMTUuMzdsMzIuNTUtMTMuMDJhMzEuOTk3IDMxLjk5NyAwIDAgMCAyMC4xMi0yOS43NGwtLjA2LTc3Ljcxem0tNjQgMTkuNGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNiAxNiA3LjE2IDE2IDE2LTcuMTYgMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvc3BpdGFsQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCA5Nkg0MTZWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzY4YzAgOC44IDcuMiAxNiAxNiAxNmg1NDRjOC44IDAgMTYtNy4yIDE2LTE2VjEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMTYwIDQzNmMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtMTI4YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMTYwIDEyOGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtMTI4YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMTYtMTcwYzAgMy4zLTIuNyA2LTYgNmgtMjZ2MjZjMCAzLjMtMi43IDYtNiA2aC0yMGMtMy4zIDAtNi0yLjctNi02di0yNmgtMjZjLTMuMyAwLTYtMi43LTYtNnYtMjBjMC0zLjMgMi43LTYgNi02aDI2Vjg2YzAtMy4zIDIuNy02IDYtNmgyMGMzLjMgMCA2IDIuNyA2IDZ2MjZoMjZjMy4zIDAgNiAyLjcgNiA2djIwem0xNDQgMjk4YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMC0xMjhjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3NwaXRhbFN5bWJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMEMxMTQuNiAwIDAgMTE0LjYgMCAyNTZzMTE0LjYgMjU2IDI1NiAyNTYgMjU2LTExNC42IDI1Ni0yNTZTMzk3LjQgMCAyNTYgMHptMTEyIDM3NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTg4aC05NnY4OGMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LThWMTM2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2ODhoOTZ2LTg4YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MjQwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3NwaXRhbFVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDMyMGE5NiA5NiAwIDEgMC05Ni05NiA5NiA5NiAwIDAgMCA5NiA5NnptNDggMzJhMjIuODggMjIuODggMCAwIDAtNy4wNiAxLjA5IDEyNC43NiAxMjQuNzYgMCAwIDEtODEuODkgMEEyMi44MiAyMi44MiAwIDAgMCA0MzIgMzUyYTExMiAxMTIgMCAwIDAtMTEyIDExMi42MmMuMTQgMjYuMjYgMjEuNzMgNDcuMzggNDggNDcuMzhoMjI0YzI2LjI3IDAgNDcuODYtMjEuMTIgNDgtNDcuMzhBMTEyIDExMiAwIDAgMCA1MjggMzUyem0tMTk4LjA5IDEwLjQ1QTE0NS4xOSAxNDUuMTkgMCAwIDEgMzUyIDM0NC42MlYxMjhhMzIgMzIgMCAwIDAtMzItMzJoLTMyVjMyYTMyIDMyIDAgMCAwLTMyLTMySDk2YTMyIDMyIDAgMCAwLTMyIDMydjY0SDMyYTMyIDMyIDAgMCAwLTMyIDMydjM2OGExNiAxNiAwIDAgMCAxNiAxNmgyODguMzFBNzguNjIgNzguNjIgMCAwIDEgMjg4IDQ2NC43OWExNDMuMDYgMTQzLjA2IDAgMCAxIDQxLjkxLTEwMi4zNHpNMTQ0IDQwNGExMiAxMiAwIDAgMS0xMiAxMkg5MmExMiAxMiAwIDAgMS0xMi0xMnYtNDBhMTIgMTIgMCAwIDEgMTItMTJoNDBhMTIgMTIgMCAwIDEgMTIgMTJ6bTAtMTI4YTEyIDEyIDAgMCAxLTEyIDEySDkyYTEyIDEyIDAgMCAxLTEyLTEydi00MGExMiAxMiAwIDAgMSAxMi0xMmg0MGExMiAxMiAwIDAgMSAxMiAxMnptNDgtMTIyYTYgNiAwIDAgMS02IDZoLTIwYTYgNiAwIDAgMS02LTZ2LTI2aC0yNmE2IDYgMCAwIDEtNi02di0yMGE2IDYgMCAwIDEgNi02aDI2VjcwYTYgNiAwIDAgMSA2LTZoMjBhNiA2IDAgMCAxIDYgNnYyNmgyNmE2IDYgMCAwIDEgNiA2djIwYTYgNiAwIDAgMS02IDZoLTI2em04MCAyNTBhMTIgMTIgMCAwIDEtMTIgMTJoLTQwYTEyIDEyIDAgMCAxLTEyLTEydi00MGExMiAxMiAwIDAgMSAxMi0xMmg0MGExMiAxMiAwIDAgMSAxMiAxMnptMC0xMjhhMTIgMTIgMCAwIDEtMTIgMTJoLTQwYTEyIDEyIDAgMCAxLTEyLTEydi00MGExMiAxMiAwIDAgMSAxMi0xMmg0MGExMiAxMiAwIDAgMSAxMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9zcGl0YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDQ5MnYyMEgwdi0yMGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDIwVjEyMGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoODhWMjRjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDExMmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2NzJoODhjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0djM2MGgyMGM2LjYyNyAwIDEyIDUuMzczIDEyIDEyek0zMDggMTkyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJ6bS0xNjggNjRoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMnptMTA0IDEyOGgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2ODRoNjR2LTg0YzAtNi42MjctNS4zNzMtMTItMTItMTJ6bTY0LTk2aC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJ6bS0xMTYgMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MHpNMTgyIDk2aDI2djI2YTYgNiAwIDAgMCA2IDZoMjBhNiA2IDAgMCAwIDYtNlY5NmgyNmE2IDYgMCAwIDAgNi02VjcwYTYgNiAwIDAgMC02LTZoLTI2VjM4YTYgNiAwIDAgMC02LTZoLTIwYTYgNiAwIDAgMC02IDZ2MjZoLTI2YTYgNiAwIDAgMC02IDZ2MjBhNiA2IDAgMCAwIDYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG90VHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNC4yMSAxNzcuNjVjMS4wMiA4LjIxIDcuNzUgMTQuMzUgMTUuNzUgMTQuMzVoMTYuMTJjOS41MSAwIDE3LjA4LTguNTcgMTYtMTguMzUtNC4zNC0zOS4xMS0yMi40LTc0LjUzLTUwLjEzLTk3LjE2LTE3LjM3LTE0LjE3LTI4LjgyLTM2Ljc1LTMxLjk4LTYyLjE1QzM3OC45NiA2LjE0IDM3Mi4yMiAwIDM2NC4yMyAwaC0xNi4xMmMtOS41MSAwLTE3LjA5IDguNTctMTYgMTguMzUgNC4zNCAzOS4xMSAyMi40IDc0LjUzIDUwLjEzIDk3LjE2IDE3LjM2IDE0LjE3IDI4LjgyIDM2Ljc1IDMxLjk3IDYyLjE0em0tMTA4IDBjMS4wMiA4LjIxIDcuNzUgMTQuMzUgMTUuNzUgMTQuMzVoMTYuMTJjOS41MSAwIDE3LjA4LTguNTcgMTYtMTguMzUtNC4zNC0zOS4xMS0yMi40LTc0LjUzLTUwLjEzLTk3LjE2LTE3LjM3LTE0LjE3LTI4LjgyLTM2Ljc1LTMxLjk4LTYyLjE1QzI3MC45NiA2LjE0IDI2NC4yMiAwIDI1Ni4yMyAwaC0xNi4xMmMtOS41MSAwLTE3LjA5IDguNTctMTYgMTguMzUgNC4zNCAzOS4xMSAyMi40IDc0LjUzIDUwLjEzIDk3LjE2IDE3LjM2IDE0LjE3IDI4LjgyIDM2Ljc1IDMxLjk3IDYyLjE0ek00ODAgMjU2SDI1NmwtMTEwLjkzLTgzLjJhNjMuOTkgNjMuOTkgMCAwIDAtMzguNC0xMi44SDY0Yy0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0djIyNGMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0aDM4NGMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0VjI4OGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0xMjggNDQwYzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LThWMzI4YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djExMnptOTYgMGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04VjMyOGMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHYxMTJ6bTk2IDBjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOFYzMjhjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTEyem05NiAwYzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LThWMzI4YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djExMnpNNjQgMTI4YzM1LjM1IDAgNjQtMjguNjUgNjQtNjRTOTkuMzUgMCA2NCAwIDAgMjguNjUgMCA2NHMyOC42NSA2NCA2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG90ZG9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OC41NiAyMy40NGE4MCA4MCAwIDAgMC0xMTMuMTIgMGwtMzUyIDM1MmE4MCA4MCAwIDEgMCAxMTMuMTIgMTEzLjEybDM1Mi0zNTJhODAgODAgMCAwIDAgMC0xMTMuMTJ6bS00OS45MyA5NS4xOWMtMTkuNiAxOS41OS0zNy41MiAyMi42Ny01MS45MyAyNS4xNEMzNzMuNzYgMTQ2IDM2NC40IDE0Ny42IDM1MiAxNjBzLTE0IDIxLjc2LTE2LjIzIDM0LjcxYy0yLjQ4IDE0LjQtNS41NSAzMi4zMy0yNS4xNSA1MS45MnMtMzcuNTIgMjIuNjctNTEuOTIgMjUuMTVDMjQ1Ljc1IDI3NCAyMzYuNCAyNzUuNiAyMjQgMjg4cy0xNCAyMS43NS0xNi4yMyAzNC43Yy0yLjQ3IDE0LjQtNS41NCAzMi4zMy0yNS4xNCA1MS45MnMtMzcuNTMgMjIuNjgtNTEuOTMgMjUuMTVDMTE3Ljc2IDQwMiAxMDguNCA0MDMuNiA5NiA0MTZhMTYgMTYgMCAwIDEtMjIuNjMtMjIuNjNjMTkuNi0xOS41OSAzNy41Mi0yMi42NyA1MS45Mi0yNS4xNCAxMy0yLjIyIDIyLjMtMy44MiAzNC43MS0xNi4yM3MxNC0yMS43NSAxNi4yMi0zNC43YzIuNDgtMTQuNCA1LjU1LTMyLjMzIDI1LjE1LTUxLjkyczM3LjUyLTIyLjY3IDUxLjkyLTI1LjE0YzEzLTIuMjIgMjIuMy0zLjgzIDM0LjctMTYuMjNzMTQtMjEuNzYgMTYuMjQtMzQuNzFjMi40Ny0xNC40IDUuNTQtMzIuMzMgMjUuMTQtNTEuOTJzMzcuNTItMjIuNjggNTEuOTItMjUuMTVDMzk0LjI0IDExMCA0MDMuNTkgMTA4LjQxIDQxNiA5NmExNiAxNiAwIDAgMSAyMi42MyAyMi42M3pNMzEuNDQgMzIyLjE4TDMyMi4xOCAzMS40NGwtMTEuNTQtMTEuNTVjLTI1LTI1LTYzLjg1LTI2LjY2LTg2Ljc5LTMuNzJMMTYuMTcgMjIzLjg1Yy0yMi45NCAyMi45NC0yMS4yNyA2MS43OSAzLjcyIDg2Ljc4em00NDkuMTItMTMyLjM2TDE4OS44MiA0ODAuNTZsMTEuNTQgMTEuNTVjMjUgMjUgNjMuODUgMjYuNjYgODYuNzkgMy43MmwyMDcuNjgtMjA3LjY4YzIyLjk0LTIyLjk0IDIxLjI3LTYxLjc5LTMuNzItODYuNzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdGVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2MCA2NGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNmMwLTguODQtNy4xNi0xNi0xNi0xNkgxNkM3LjE2IDAgMCA3LjE2IDAgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTUuOTh2Mzg0SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgyNDB2LTgwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2ODBoMjQwYzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMTZWNjRoMTZ6bS0zMDQgNDQuOGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTM4LjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNHptMCA5NmMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTM4LjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNHptLTEyOC05NmMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTM4LjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNHpNMTc5LjIgMjU2aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjRjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjRjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44ek0xOTIgMzg0YzAtNTMuMDIgNDIuOTgtOTYgOTYtOTZzOTYgNDIuOTggOTYgOTZIMTkyem0yNTYtMTQwLjhjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjRjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjR6bTAtOTZjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjRjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXJnbGFzc0VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjAgNjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyNEMxMC43NDUgMCAwIDEwLjc0NSAwIDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNCAwIDkwLjk2NSA1MS4wMTYgMTY3LjczNCAxMjAuODQyIDE5MkM3NS4wMTYgMjgwLjI2NiAyNCAzNTcuMDM1IDI0IDQ0OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjQgMC05MC45NjUtNTEuMDE2LTE2Ny43MzQtMTIwLjg0Mi0xOTJDMzA4Ljk4NCAyMzEuNzM0IDM2MCAxNTQuOTY1IDM2MCA2NHpNMTkyIDIwOGMtNTcuNzg3IDAtMTA0LTY2LjUxOC0xMDQtMTQ0aDIwOGMwIDc3Ljk0NS00Ni41MSAxNDQtMTA0IDE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91cmdsYXNzSGFsZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjAgMEgyNEMxMC43NDUgMCAwIDEwLjc0NSAwIDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNCAwIDkwLjk2NSA1MS4wMTYgMTY3LjczNCAxMjAuODQyIDE5MkM3NS4wMTYgMjgwLjI2NiAyNCAzNTcuMDM1IDI0IDQ0OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjQgMC05MC45NjUtNTEuMDE2LTE2Ny43MzQtMTIwLjg0Mi0xOTJDMzA4Ljk4NCAyMzEuNzM0IDM2MCAxNTQuOTY1IDM2MCA2NGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMjRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0em0tNzUuMDc4IDM4NEg5OS4wOGMxNy4wNTktNDYuNzk3IDUyLjA5Ni04MCA5Mi45Mi04MCA0MC44MjEgMCA3NS44NjIgMzMuMTk2IDkyLjkyMiA4MHptLjAxOS0yNTZIOTkuMDc4QzkxLjk4OCAxMDguNTQ4IDg4IDg2Ljc0OCA4OCA2NGgyMDhjMCAyMi44MDUtMy45ODcgNDQuNTg3LTExLjA1OSA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91cmdsYXNzU3RhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzYwIDBIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjQgMCA5MC45NjUgNTEuMDE2IDE2Ny43MzQgMTIwLjg0MiAxOTJDNzUuMDE2IDI4MC4yNjYgMjQgMzU3LjAzNSAyNCA0NDhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzM2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtMTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0IDAtOTAuOTY1LTUxLjAxNi0xNjcuNzM0LTEyMC44NDItMTkyQzMwOC45ODQgMjMxLjczNCAzNjAgMTU0Ljk2NSAzNjAgNjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHptLTY0IDQ0OEg4OGMwLTc3LjQ1OCA0Ni4yMDQtMTQ0IDEwNC0xNDQgNTcuNzg2IDAgMTA0IDY2LjUxNyAxMDQgMTQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VyZ2xhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzYwIDY0YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjQgMCA5MC45NjUgNTEuMDE2IDE2Ny43MzQgMTIwLjg0MiAxOTJDNzUuMDE2IDI4MC4yNjYgMjQgMzU3LjAzNSAyNCA0NDhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzM2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtMTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0IDAtOTAuOTY1LTUxLjAxNi0xNjcuNzM0LTEyMC44NDItMTkyQzMwOC45ODQgMjMxLjczNCAzNjAgMTU0Ljk2NSAzNjAgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXNlRGFtYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxMTQuOTZMNjkuNDcgMzA3LjcxYy0xLjYyIDEuNDYtMy42OSAyLjE0LTUuNDcgMy4zNVY0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTQ5LjIzTDE5MiA0MzkuMTlsMTA0LjExLTY0LTYwLjE2LTExOS4yMkwzODQgMzkyLjc1bC0xMDQuMTEgNjRMMzE5LjgxIDUxMkg0OTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWMzExLjFjLTEuNy0xLjE2LTMuNzItMS44Mi01LjI2LTMuMkwyODggMTE0Ljk2em0yODIuNjkgMTIxLjMyTDUxMiAxODQuNDVWNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTY0Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY1MS42OUwzMTQuNzUgMTAuMzFDMzA3LjEyIDMuNDUgMjk3LjU2LjAxIDI4OCAwcy0xOS4xIDMuNDEtMjYuNyAxMC4yN0w1LjMxIDIzNi4yOGMtNi41NyA1LjkxLTcuMTIgMTYuMDItMS4yMSAyMi42bDIxLjQgMjMuODJjNS45IDYuNTcgMTYuMDIgNy4xMiAyMi42IDEuMjFMMjc3LjQyIDgxLjYzYzYuMDUtNS4zMyAxNS4xMi01LjMzIDIxLjE3IDBMNTI3LjkxIDI4My45YzYuNTcgNS45IDE2LjY5IDUuMzYgMjIuNi0xLjIxbDIxLjQtMjMuODJjNS45LTYuNTcgNS4zNi0xNi42OS0xLjIyLTIyLjU5elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VzZVVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTcwLjY5LDIzNi4yNyw1MTIsMTg0LjQ0VjQ4YTE2LDE2LDAsMCwwLTE2LTE2SDQzMmExNiwxNiwwLDAsMC0xNiwxNlY5OS42N0wzMTQuNzgsMTAuM0MzMDguNSw0LjYxLDI5Ni41MywwLDI4OCwwcy0yMC40Niw0LjYxLTI2Ljc0LDEwLjNsLTI1NiwyMjZBMTguMjcsMTguMjcsMCwwLDAsMCwyNDguMmExOC42NCwxOC42NCwwLDAsMCw0LjA5LDEwLjcxTDI1LjUsMjgyLjdhMjEuMTQsMjEuMTQsMCwwLDAsMTIsNS4zLDIxLjY3LDIxLjY3LDAsMCwwLDEwLjY5LTQuMTFsMTUuOS0xNFY0ODBhMzIsMzIsMCwwLDAsMzIsMzJINDgwYTMyLDMyLDAsMCwwLDMyLTMyVjI2OS44OGwxNS45MSwxNEEyMS45NCwyMS45NCwwLDAsMCw1MzguNjMsMjg4YTIwLjg5LDIwLjg5LDAsMCwwLDExLjg3LTUuMzFsMjEuNDEtMjMuODFBMjEuNjQsMjEuNjQsMCwwLDAsNTc2LDI0OC4xOSwyMSwyMSwwLDAsMCw1NzAuNjksMjM2LjI3Wk0yODgsMTc2YTY0LDY0LDAsMSwxLTY0LDY0QTY0LDY0LDAsMCwxLDI4OCwxNzZaTTQwMCw0NDhIMTc2YTE2LDE2LDAsMCwxLTE2LTE2LDk2LDk2LDAsMCwxLDk2LTk2aDY0YTk2LDk2LDAsMCwxLDk2LDk2QTE2LDE2LDAsMCwxLDQwMCw0NDhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhyeXZuaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4IDI0MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTQxLjg2YzEzLjQxLTI4LjYzIDEzLjc0LTYzLjMzLTQuMTMtOTQuMDVDMzAzLjM0IDQ5Ljg0IDI2Ny4xIDMyIDIyOS45NiAzMmgtNzguODJjLTI0LjMyIDAtNDcuODYgOC41My02Ni41NCAyNC4wOUw3Mi44MyA2NS45Yy0xMC4xOCA4LjQ5LTExLjU2IDIzLjYyLTMuMDcgMzMuOGwyMC40OSAyNC41OWM4LjQ5IDEwLjE5IDIzLjYyIDExLjU2IDMzLjgxIDMuMDdsMTEuNzMtOS43OGM0LjMyLTMuNiA5Ljc3LTUuNTcgMTUuMzktNS41N2g4My42MmMxMS42OSAwIDIxLjIgOS41MiAyMS4yIDIxLjIgMCA1LjkxLTIuNDggMTEuNTgtNi44MSAxNS41OEwyMTkuNyAxNzZIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDEzNC4zN2wtMzQuNjcgMzJIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQxLjg2Yy0xMy40MSAyOC42My0xMy43NCA2My4zMyA0LjEzIDk0LjA1QzgwLjY2IDQ2Mi4xNSAxMTYuOSA0ODAgMTU0LjA0IDQ4MGg3OC44MmMyNC4zMiAwIDQ3Ljg2LTguNTMgNjYuNTQtMjQuMDlsMTEuNzctOS44MWMxMC4xOC04LjQ5IDExLjU2LTIzLjYyIDMuMDctMzMuOGwtMjAuNDktMjQuNTljLTguNDktMTAuMTktMjMuNjItMTEuNTYtMzMuODEtMy4wN2wtMTEuNzUgOS44YTIzLjk5MiAyMy45OTIgMCAwIDEtMTUuMzYgNS41NkgxNDkuMmMtMTEuNjkgMC0yMS4yLTkuNTItMjEuMi0yMS4yIDAtNS45MSAyLjQ4LTExLjU4IDYuODEtMTUuNThMMTY0LjMgMzM2SDM2OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMjMzLjYzbDM0LjY3LTMySDM2OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSUN1cnNvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTIuMDQ4VjEyLjA2NUMyNTYgNS40OTYgMjUwLjcyNi4xNDggMjQ0LjE1OC4wNjYgMjExLjYyMS0uMzQ0IDE2Ni40NjkuMDExIDEyOCAzNy45NTkgOTAuMjY2LjczNiA0Ni45NzktLjExNCAxMS45MTMuMTE0IDUuMzE4LjE1NyAwIDUuNTE5IDAgMTIuMTE0djM5LjY0NWMwIDYuNjg3IDUuNDU4IDEyLjA3OCAxMi4xNDUgMTEuOTk4QzM4LjExMSA2My40NDcgOTYgNjcuMjQzIDk2IDExMi4xODJWMjI0SDYwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMzZ2MTEyYzAgNDQuOTMyLTU2LjA3NSA0OC4wMzEtODMuOTUgNDcuOTU5QzUuNDA0IDQ0Ny45NDIgMCA0NTMuMzA2IDAgNDU5Ljk1MnYzOS45ODNjMCA2LjU2OSA1LjI3NCAxMS45MTcgMTEuODQyIDExLjk5OSAzMi41MzcuNDA5IDc3LjY4OS4wNTQgMTE2LjE1OC0zNy44OTQgMzcuNzM0IDM3LjIyMyA4MS4wMjEgMzguMDczIDExNi4wODcgMzcuODQ1IDYuNTk1LS4wNDMgMTEuOTEzLTUuNDA1IDExLjkxMy0xMlY0NjAuMjRjMC02LjY4Ny01LjQ1OC0xMi4wNzgtMTIuMTQ1LTExLjk5OEMyMTcuODg5IDQ0OC41NTMgMTYwIDQ0NC45MzkgMTYwIDQwMFYyODhoMzZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMzZWMTEyLjE4MmMwLTQ0LjkzMiA1Ni4wNzUtNDguMjEzIDgzLjk1LTQ4LjE0MiA2LjY0Ni4wMTggMTIuMDUtNS4zNDYgMTIuMDUtMTEuOTkyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJY2VDcmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjggMTYwaC0uOTRhMTQ0IDE0NCAwIDEgMC0yODYuMTIgMEg4MGE0OCA0OCAwIDAgMCAwIDk2aDI4OGE0OCA0OCAwIDAgMCAwLTk2ek0xOTUuMzggNDkzLjY5YTMxLjUyIDMxLjUyIDAgMCAwIDU3LjI0IDBMMzUyIDI4OEg5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWNpY2xlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTEuNCAzNy45QzUxNS4xIDE4LjIgNTAwIDAgNDgwIDBIMzJDMTAuNiAwLTQuOCAyMC43IDEuNCA0MS4ybDg3LjEgMjczLjRjMi41IDcuMiAxMi43IDcuMiAxNS4xIDBMMTQwIDE5MC41bDQ0LjIgMTg3LjNjMS45IDguMyAxMy43IDguMyAxNS42IDBsNDYuNS0xOTYuOSAzNC4xIDEzMy40YzIuMyA3LjYgMTMgNy42IDE1LjMgMGw0NS44LTE3Mi41IDY2LjcgMzYzLjhjMS43IDguNiAxNCA4LjYgMTUuNyAwbDg3LjUtNDY3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUljb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExNi42NSAyMTkuMzVhMTUuNjggMTUuNjggMCAwIDAgMjIuNjUgMGw5Ni43NS05OS44M2MyOC4xNS0yOSAyNi41LTc3LjEtNC45MS0xMDMuODhDMjAzLjc1LTcuNyAxNjMtMy41IDEzNy44NiAyMi40NEwxMjggMzIuNThsLTkuODUtMTAuMTRDOTMuMDUtMy41IDUyLjI1LTcuNyAyNC44NiAxNS42NGMtMzEuNDEgMjYuNzgtMzMgNzQuODUtNSAxMDMuODh6bTE0My45MiAxMDAuNDloLTQ4bC03LjA4LTE0LjI0YTI3LjM5IDI3LjM5IDAgMCAwLTI1LjY2LTE3Ljc4aC03MS43MWEyNy4zOSAyNy4zOSAwIDAgMC0yNS42NiAxNy43OGwtNyAxNC4yNGgtNDhBMjcuNDUgMjcuNDUgMCAwIDAgMCAzNDcuM3YxMzcuMjVBMjcuNDQgMjcuNDQgMCAwIDAgMjcuNDMgNTEyaDIzMy4xNEEyNy40NSAyNy40NSAwIDAgMCAyODggNDg0LjU1VjM0Ny4zYTI3LjQ1IDI3LjQ1IDAgMCAwLTI3LjQzLTI3LjQ2ek0xNDQgNDY4YTUyIDUyIDAgMSAxIDUyLTUyIDUyIDUyIDAgMCAxLTUyIDUyem0zNTUuNC0xMTUuOWgtNjAuNThsMjIuMzYtNTAuNzVjMi4xLTYuNjUtMy45My0xMy4yMS0xMi4xOC0xMy4yMWgtNzUuNTljLTYuMyAwLTExLjY2IDMuOS0xMi41IDkuMWwtMTYuOCAxMDYuOTNjLTEgNi4zIDQuODggMTEuODkgMTIuNSAxMS44OWg2Mi4zMWwtMjQuMiA4M2MtMS44OSA2LjY1IDQuMiAxMi45IDEyLjIzIDEyLjlhMTMuMjYgMTMuMjYgMCAwIDAgMTAuOTItNS4yNWw5Mi40LTEzOC45MWM0Ljg4LTYuOTEtMS4xNi0xNS43LTEwLjg3LTE1Ljd6TTQ3OC4wOC4zM0wzMjkuNTEgMjMuMTdDMzE0Ljg3IDI1LjQyIDMwNCAzOC45MiAzMDQgNTQuODNWMTYxLjZhODMuMjUgODMuMjUgMCAwIDAtMTYtMS43Yy0zNS4zNSAwLTY0IDIxLjQ4LTY0IDQ4czI4LjY1IDQ4IDY0IDQ4YzM1LjIgMCA2My43My0yMS4zMiA2NC00Ny42NlY5OS42NmwxMTItMTcuMjJ2NDcuMThhODMuMjUgODMuMjUgMCAwIDAtMTYtMS43Yy0zNS4zNSAwLTY0IDIxLjQ4LTY0IDQ4czI4LjY1IDQ4IDY0IDQ4YzM1LjIgMCA2My43My0yMS4zMiA2NC00Ny42NlYzMmMwLTE5LjQ4LTE2LTM0LjQyLTMzLjkyLTMxLjY3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJZEJhZGdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xNDQgMzJoOTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZoLTk2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em00OCAxMjhjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjQtNjQtMjguNy02NC02NCAyOC43LTY0IDY0LTY0em0xMTIgMjM2LjhjMCAxMC42LTEwIDE5LjItMjIuNCAxOS4ySDEwMi40QzkwIDQxNiA4MCA0MDcuNCA4MCAzOTYuOHYtMTkuMmMwLTMxLjggMzAuMS01Ny42IDY3LjItNTcuNmg1YzEyLjMgNS4xIDI1LjcgOCAzOS44IDhzMjcuNi0yLjkgMzkuOC04aDVjMzcuMSAwIDY3LjIgMjUuOCA2Ny4yIDU3LjZ2MTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWRDYXJkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCA2NEgzODR2OTZIMTkyVjY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yODggMjI0YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHptOTMuMyAyMjRIMTk0LjdjLTEwLjQgMC0xOC44LTEwLTE1LjYtMTkuOCA4LjMtMjUuNiAzMi40LTQ0LjIgNjAuOS00NC4yaDguMmMxMi4zIDUuMSAyNS43IDggMzkuOCA4czI3LjYtMi45IDM5LjgtOGg4LjJjMjguNCAwIDUyLjUgMTguNSA2MC45IDQ0LjIgMy4yIDkuOC01LjIgMTkuOC0xNS42IDE5Ljh6TTM1MiAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMmgtNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2aDEyOFYzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjE2aDU3NlY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMCA0MzJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjEyOEgwdjMwNHptMzUyLTIzMmMwLTQuNCAzLjYtOCA4LThoMTQ0YzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIMzYwYy00LjQgMC04LTMuNi04LTh2LTE2em0wIDY0YzAtNC40IDMuNi04IDgtOGgxNDRjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEgzNjBjLTQuNCAwLTgtMy42LTgtOHYtMTZ6bTAgNjRjMC00LjQgMy42LTggOC04aDE0NGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDM2MGMtNC40IDAtOC0zLjYtOC04di0xNnpNMTc2IDE5MmMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NC02NC0yOC43LTY0LTY0IDI4LjctNjQgNjQtNjR6TTY3LjEgMzk2LjJDNzUuNSAzNzAuNSA5OS42IDM1MiAxMjggMzUyaDguMmMxMi4zIDUuMSAyNS43IDggMzkuOCA4czI3LjYtMi45IDM5LjgtOGg4LjJjMjguNCAwIDUyLjUgMTguNSA2MC45IDQ0LjIgMy4yIDkuOS01LjIgMTkuOC0xNS42IDE5LjhIODIuN2MtMTAuNCAwLTE4LjgtMTAtMTUuNi0xOS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJZ2xvbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMzMuOWMtMTAuNS0xLjItMjEuMi0xLjktMzItMS45LTk5LjggMC0xODcuOCA1MC44LTIzOS40IDEyOEgzMjBWMzMuOXpNOTYgMTkySDMwLjNDMTEuMSAyMzAuNiAwIDI3NCAwIDMyMGg5NlYxOTJ6TTM1MiAzOS40VjE2MGgxNzUuNEM0ODcuMiA5OS45IDQyNC44IDU1LjkgMzUyIDM5LjR6TTQ4MCAzMjBoOTZjMC00Ni0xMS4xLTg5LjQtMzAuMy0xMjhINDgwdjEyOHptLTY0IDY0djk2aDEyOGMxNy43IDAgMzItMTQuMyAzMi0zMnYtOTZINDExLjVjMi42IDEwLjMgNC41IDIwLjkgNC41IDMyem0zMi0xOTJIMTI4djEyOGg0OS44YzIyLjItMzguMSA2My02NCAxMTAuMi02NHM4OCAyNS45IDExMC4yIDY0SDQ0OFYxOTJ6TTAgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDEyOHYtOTZjMC0xMS4xIDEuOS0yMS43IDQuNS0zMkgwdjk2em0yODgtMTYwYy01MyAwLTk2IDQzLTk2IDk2djk2aDE5MnYtOTZjMC01My00My05Ni05Ni05NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDQ0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxMTJjMC0yNi41MSAyMS40OS00OCA0OC00OGg0MTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYyODhjMCAyNi41MS0yMS40OSA0OC00OCA0OHpNMTEyIDEyMGMtMzAuOTI4IDAtNTYgMjUuMDcyLTU2IDU2czI1LjA3MiA1NiA1NiA1NiA1Ni0yNS4wNzIgNTYtNTYtMjUuMDcyLTU2LTU2LTU2ek02NCAzODRoMzg0VjI3MmwtODcuNTE1LTg3LjUxNWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDIwOCAzMjBsLTU1LjUxNS01NS41MTVjLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEw2NCAzMzZ2NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUltYWdlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgNDE2djE2YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWMTc2YzAtMjYuNTEgMjEuNDktNDggNDgtNDhoMTZ2MjA4YzAgNDQuMTEyIDM1Ljg4OCA4MCA4MCA4MGgzMzZ6bTk2LTgwVjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDhIMTQ0Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djI1NmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDM4NGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4ek0yNTYgMTI4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4IDIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4em0tOTYgMTQ0bDU1LjUxNS01NS41MTVjNC42ODYtNC42ODYgMTIuMjg0LTQuNjg2IDE2Ljk3MSAwTDI3MiAyNTZsMTM1LjUxNS0xMzUuNTE1YzQuNjg2LTQuNjg2IDEyLjI4NC00LjY4NiAxNi45NzEgMEw1MTIgMjA4djExMkgxNjB2LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjcuOTM4IDI0My45MDhMNDYyLjI1IDg1LjM3NEE0OC4wMDMgNDguMDAzIDAgMCAwIDQyMi4zMTEgNjRIMTUzLjY4OWE0OCA0OCAwIDAgMC0zOS45MzggMjEuMzc0TDguMDYyIDI0My45MDhBNDcuOTk0IDQ3Ljk5NCAwIDAgMCAwIDI3MC41MzNWNDAwYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDgwYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMjcwLjUzM2E0Ny45OTQgNDcuOTk0IDAgMCAwLTguMDYyLTI2LjYyNXpNMTYyLjI1MiAxMjhoMjUxLjQ5N2w4NS4zMzMgMTI4SDM3NmwtMzIgNjRIMjMybC0zMi02NEg3Ni45MThsODUuMzM0LTEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW5kZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3LjMxIDM2My4zbDk2LTk2YTE2IDE2IDAgMCAwIDAtMjIuNjJsLTk2LTk2QzE3LjI3IDEzOC42NiAwIDE0NS43OCAwIDE2MHYxOTJjMCAxNC4zMSAxNy4zMyAyMS4zIDI3LjMxIDExLjN6TTQzMiA0MTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMy4xNy0xMjhIMjA0LjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE5MiAzMDAuODN2MzguMzRBMTIuODIgMTIuODIgMCAwIDAgMjA0LjgzIDM1MmgyMzAuMzRBMTIuODIgMTIuODIgMCAwIDAgNDQ4IDMzOS4xN3YtMzguMzRBMTIuODIgMTIuODIgMCAwIDAgNDM1LjE3IDI4OHptMC0xMjhIMjA0LjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE5MiAxNzIuODN2MzguMzRBMTIuODIgMTIuODIgMCAwIDAgMjA0LjgzIDIyNGgyMzAuMzRBMTIuODIgMTIuODIgMCAwIDAgNDQ4IDIxMS4xN3YtMzguMzRBMTIuODIgMTIuODIgMCAwIDAgNDM1LjE3IDE2MHpNNDMyIDMySDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmR1c3RyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzUuMTE1IDE2My43ODFMMzM2IDI1Mi4zMDl2LTY4LjI4YzAtMTguOTE2LTIwLjkzMS0zMC4zOTktMzYuODg1LTIwLjI0OEwxNjAgMjUyLjMwOVY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRDMTAuNzQ1IDMyIDAgNDIuNzQ1IDAgNTZ2NDAwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGg0NjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NC4wMjljMC0xOC45MTctMjAuOTMxLTMwLjM5OS0zNi44ODUtMjAuMjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmZpbml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzEuMSA5NkM0MDUgOTYgMzUzLjMgMTM3LjMgMzIwIDE3NC42IDI4Ni43IDEzNy4zIDIzNSA5NiAxNjguOSA5NiA3NS44IDk2IDAgMTY3LjggMCAyNTZzNzUuOCAxNjAgMTY4LjkgMTYwYzY2LjEgMCAxMTcuOC00MS4zIDE1MS4xLTc4LjYgMzMuMyAzNy4zIDg1IDc4LjYgMTUxLjEgNzguNiA5My4xIDAgMTY4LjktNzEuOCAxNjguOS0xNjBTNTY0LjIgOTYgNDcxLjEgOTZ6TTE2OC45IDMyMGMtNDAuMiAwLTcyLjktMjguNy03Mi45LTY0czMyLjctNjQgNzIuOS02NGMzOC4yIDAgNzMuNCAzNi4xIDk0IDY0LTIwLjQgMjcuNi01NS45IDY0LTk0IDY0em0zMDIuMiAwYy0zOC4yIDAtNzMuNC0zNi4xLTk0LTY0IDIwLjQtMjcuNiA1NS45LTY0IDk0LTY0IDQwLjIgMCA3Mi45IDI4LjcgNzIuOSA2NHMtMzIuNyA2NC03Mi45IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmZvQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4wNDMgOCA4IDExOS4wODMgOCAyNTZjMCAxMzYuOTk3IDExMS4wNDMgMjQ4IDI0OCAyNDhzMjQ4LTExMS4wMDMgMjQ4LTI0OEM1MDQgMTE5LjA4MyAzOTIuOTU3IDggMjU2IDh6bTAgMTEwYzIzLjE5NiAwIDQyIDE4LjgwNCA0MiA0MnMtMTguODA0IDQyLTQyIDQyLTQyLTE4LjgwNC00Mi00MiAxOC44MDQtNDIgNDItNDJ6bTU2IDI1NGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC04OGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxMnYtNjRoLTEyYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDY0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MTAwaDEyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluZm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDE5MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNDI0LjIyOWgyMFYyNzkuNzcxSDIwYy0xMS4wNDYgMC0yMC04Ljk1NC0yMC0yMFYyMTJjMC0xMS4wNDYgOC45NTQtMjAgMjAtMjBoMTEyYzExLjA0NiAwIDIwIDguOTU0IDIwIDIwdjIxMi4yMjloMjBjMTEuMDQ2IDAgMjAgOC45NTQgMjAgMjBWNDkyYzAgMTEuMDQ2LTguOTU0IDIwLTIwIDIwSDIwYy0xMS4wNDYgMC0yMC04Ljk1NC0yMC0yMHYtNDcuNzcxYzAtMTEuMDQ2IDguOTU0LTIwIDIwLTIwek05NiAwQzU2LjIzNSAwIDI0IDMyLjIzNSAyNCA3MnMzMi4yMzUgNzIgNzIgNzIgNzItMzIuMjM1IDcyLTcyUzEzNS43NjQgMCA5NiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJdGFsaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDQ4djMyYTE2IDE2IDAgMCAxLTE2IDE2aC02Mi43NmwtODAgMzIwSDIwOGExNiAxNiAwIDAgMSAxNiAxNnYzMmExNiAxNiAwIDAgMS0xNiAxNkgxNmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoNjIuNzZsODAtMzIwSDExMmExNiAxNiAwIDAgMS0xNi0xNlY0OGExNiAxNiAwIDAgMSAxNi0xNmgxOTJhMTYgMTYgMCAwIDEgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUplZGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTM1Ljk1MzA4LDM1MmMtNDIuNjQwNjksOTQuMTcxODgtMTM3LjY0MDg2LDE2MC0yNDcuOTg0OCwxNjBxLTYuMzk4NDQsMC0xMi44NDM3Ny0uMjk2ODhDMTcxLjE1NTU4LDUwNi45Mzc1LDgxLjI2NDgxLDQ0Mi4yMzQzOCw0MC4wMTQ3NCwzNTJINzkuOTM2NjhMMjEuMzI3MiwyOTMuNDA2MjVhMjY0LjgyNTIyLDI2NC44MjUyMiwwLDAsMS01LjEwOTM4LTM5LjQyMTg3LDI3My42NjUzLDI3My42NjUzLDAsMCwxLC41LTI5Ljk4NDM4SDYzLjkzNjY1TDIyLjU0NiwxODIuNjI1QTI2OS43OTc4MiwyNjkuNzk3ODIsMCwwLDEsMTMwLjUxNDg5LDIwLjU0Njg4YTE2LjA2MzkzLDE2LjA2MzkzLDAsMCwxLDkuMjgxMjctMywxNi4zNjMzMiwxNi4zNjMzMiwwLDAsMSwxMy41LDcuMjUsMTYuMDI3MzksMTYuMDI3MzksMCwwLDEsMS42MjUsMTUuMDkzNzQsMTM4LjM4NywxMzguMzg3LDAsMCwwLTkuODQzNzYsNTEuMjY1NjNjMCw0NS4xMDkzNywyMS4wNDY5MSw4Ni41NzgxMyw1Ny43MTg4NCwxMTMuNzM0MzdhMTYuMjk5ODksMTYuMjk5ODksMCwwLDEsMS4yMDMxMywyNS4zOTA2M2MtMjYuNTQ2OTIsMjMuOTg0MzctNDEuMTcxOTQsNTYuNS00MS4xNzE5NCw5MS41NzgxMywwLDYwLjAzMTI0LDQyLjk1MzE5LDExMC4yODEyNCw5OS44OTA3OSwxMjEuOTIxODdsMi41LTY1LjI2NTYzTDIzOC4wNjIsMzk3YTguMzM5MTEsOC4zMzkxMSwwLDAsMS0xMC0uNzUsOC4wMjUsOC4wMjUsMCwwLDEtMS4zOTA2My05LjkzNzVsMjAuMTI1LTMzLjc2NTYyLTQyLjA2MjU3LTguNzM0MzhhNy45ODk4LDcuOTg5OCwwLDAsMSwwLTE1LjY1NjI1bDQyLjA2MjU3LTguNzE4NzUtMjAuMTA5NDEtMzMuNzM0MzhhNy45OTEyMiw3Ljk5MTIyLDAsMCwxLDExLjM1OTM5LTEwLjcxODc0TDI2OC40MzcsMjk1LjY0MDYyLDI3OS45NTI2NSw3LjY3MTg4YTcuOTcxMzgsNy45NzEzOCwwLDAsMSw4LTcuNjcxODhoLjA0Njg3YTguMDIwNjQsOC4wMjA2NCwwLDAsMSw3Ljk1MzE0LDcuNzAzMTJMMzA3LjQ4Mzk0LDI5NS42MjVsMzAuMzkwNjgtMjAuNjcxODhhOC4wODMyNyw4LjA4MzI3LDAsMCwxLDEwLC44MTI1LDcuOTk4NjYsNy45OTg2NiwwLDAsMSwxLjM5MDYyLDkuOTA2MjZMMzI5LjEyNDYxLDMxOS40Mzc1bDQyLjA3ODE5LDguNzM0MzhhNy45OTM3Myw3Ljk5MzczLDAsMCwxLDAsMTUuNjU2MjRsLTQyLjA3ODE5LDguNzE4NzYsMjAuMTA5NCwzMy43MzQzN2E3Ljk3NzkxLDcuOTc3OTEsMCwwLDEtMS4zMjgxMiw5LjkyMTg3QTguMjU3MzksOC4yNTczOSwwLDAsMSwzMzcuODc0NjIsMzk3TDMxMC43MDI3LDM3OC41MzEyNWwyLjUsNjUuMzQzNzVjNDguNDg0NDYtOS40MDYyNSw4Ny41NzgyOC00OC4xNTYyNSw5Ny4zMTI2Ny05Ni41QTEyMy41MjY1MiwxMjMuNTI2NTIsMCwwLDAsMzcxLjk1MjgsMjMwLjI5Njg4YTE2LjMwNjM0LDE2LjMwNjM0LDAsMCwxLDEuMjAzMTMtMjUuNDIxODhjMzYuNjU2MzEtMjcuMTcxODgsNTcuNjg3Ni02OC42MDkzOCw1Ny42ODc2LTExMy43MzQzOGExMzguMDE2ODksMTM4LjAxNjg5LDAsMCwwLTkuODU5MzktNTEuMzEyNSwxNS45ODEzMiwxNS45ODEzMiwwLDAsMSwxLjYwOTM3LTE1LjA5Mzc0LDE2LjM2OTE0LDE2LjM2OTE0LDAsMCwxLDEzLjUtNy4yMzQzOCwxNi4wMjQ1MywxNi4wMjQ1MywwLDAsMSw5LjI1LDIuOTg0MzhBMjcxLjI2OTQ3LDI3MS4yNjk0NywwLDAsMSw1NTMuMjUsMTgyLjc2NTYyTDUxMS45OTk5MiwyMjRoNDYuOTUzMkM1NTkuMzEyNSwyMjkuNzY1NjIsNTYwLDIzNS40NTMxMiw1NjAsMjQxLjI2NTYyYTI3MC4wOTIsMjcwLjA5MiwwLDAsMS01LjEyNSw1MS44NTkzOEw0OTUuOTg0MjcsMzUyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKb2ludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDQuMzQgMTgxLjFjMjIuMzggMTUuNjggMzUuNjYgNDEuMTYgMzUuNjYgNjguNTlWMjgwYzAgNC40MiAzLjU4IDggOCA4aDQ4YzQuNDIgMCA4LTMuNTggOC04di0zMC4zMWMwLTQzLjI0LTIxLjAxLTgzLjQxLTU2LjM0LTEwOC4wNkM0NjMuODUgMTI1LjAyIDQ0OCA5OS4zNCA0NDggNzAuMzFWOGMwLTQuNDItMy41OC04LTgtOGgtNDhjLTQuNDIgMC04IDMuNTgtOCA4djY2LjRjMCA0My42OSAyNC41NiA4MS42MyA2MC4zNCAxMDYuN3pNMTk0Ljk3IDM1OC45OEMxMjYuMDMgMzcwLjA3IDU5LjY5IDM5NC42OSAwIDQzMmM4My42NSA1Mi4yOCAxODAuMyA4MCAyNzguOTQgODBoODguNTdMMjU0Ljc5IDM4MC40OWMtMTQuNzQtMTcuMi0zNy40NS0yNS4xMS01OS44Mi0yMS41MXpNNTUzLjI4IDg3LjA5Yy01LjY3LTMuOC05LjI4LTkuOTYtOS4yOC0xNi43OFY4YzAtNC40Mi0zLjU4LTgtOC04aC00OGMtNC40MiAwLTggMy41OC04IDh2NjIuMzFjMCAyMi4wMiAxMC4xNyA0My40MSAyOC42NCA1NS4zOUM1NTAuNzkgMTUzLjA0IDU3NiAxOTkuNTQgNTc2IDI0OS42OVYyODBjMCA0LjQyIDMuNTggOCA4IDhoNDhjNC40MiAwIDgtMy41OCA4LTh2LTMwLjMxYzAtNjUuNDQtMzIuNDEtMTI2LjE5LTg2LjcyLTE2Mi42ek0zNjAuODkgMzUyLjA1Yy0zNC40LjA2LTg2LjgxLjE1LTg4LjIxLjE3bDExNy44IDEzNy40M0E2My45ODcgNjMuOTg3IDAgMCAwIDQzOS4wNyA1MTJoODguNDVMNDA5LjU3IDM3NC40YTYzLjk1NSA2My45NTUgMCAwIDAtNDguNjgtMjIuMzV6TTYxNiAzNTJINDMybDExNy45OSAxMzcuNjVBNjMuOTg3IDYzLjk4NyAwIDAgMCA1OTguNTggNTEySDYxNmMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0VjM3NmMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKb3VybmFsV2hpbGxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOC40MDYyNSwzNzcuNTkzNzVjLTMuMjAzMTMsMTIuODEyNS0zLjIwMzEzLDU3LjYwOTM3LDAsNzMuNjA5MzdRNDQ3Ljk5MjIsNDYwLjc4OTA3LDQ0OCw0NzAuNDA2MjV2MTZjMCwxNi0xMi43OTY4OCwyNS41OTM3NS0yNS41OTM3NSwyNS41OTM3NUg5NmMtNTQuNDA2MjUsMC05Ni00MS41OTM3NS05Ni05NlY5NkMwLDQxLjU5Mzc1LDQxLjU5Mzc1LDAsOTYsMEg0MjIuNDA2MjVDNDM4LjQwNjI1LDAsNDQ4LDkuNTkzNzUsNDQ4LDI1LjU5Mzc1djMzMi44MTI1UTQ0OCwzNzIuNzk2ODgsNDM4LjQwNjI1LDM3Ny41OTM3NVpNMzgwLjc5Njg4LDM4NEg5NmMtMTYsMC0zMiwxMi43OTY4OC0zMiwzMnMxMi43OTY4OCwzMiwzMiwzMkgzODAuNzk2ODhaTTEyOC4wMTU2MiwxNzYuMDE1NjJjMCwuNTE1NjMuMTQwNjMuOTg0MzguMTQwNjMsMS41bDM3LjEwOTM3LDMyLjQ2ODc2QTcuOTk5NTQsNy45OTk1NCwwLDAsMSwxNjAsMjI0aC0uMDE1NjJhOS4xNzY3OCw5LjE3Njc4LDAsMCwxLTUuMjUtMS45ODQzOEwxMzEuMTQwNjIsMjAxLjM3NUMxNDIuNjg3NSwyNTAuOTUzMTIsMTg2LjkwNjI1LDI4OCwyNDAsMjg4czk3LjMxMjUtMzcuMDQ2ODgsMTA4Ljg3NS04Ni42MjVsLTIzLjU5Mzc1LDIwLjY0MDYyYTguMDI1MTYsOC4wMjUxNiwwLDAsMS01LjI2NTYzLDEuOTY4NzZIMzIwYTkuMTQ2NDEsOS4xNDY0MSwwLDAsMS02LjAxNTYyLTIuNzE4NzZBOS4yNjUwOCw5LjI2NTA4LDAsMCwxLDMxMiwyMTZhOS4wOTcsOS4wOTcsMCwwLDEsMi43MzQzOC02LjAxNTYybDM3LjEwOTM3LTMyLjQ2ODc2Yy4wMTU2My0uNTMxMjQuMTU2MjUtMSwuMTU2MjUtMS41MTU2MiwwLTExLjA0Njg4LTIuMDkzNzUtMjEuNTE1NjItNS4wNjI1MS0zMS41OTM3NWwtMjEuMjY1NjIsMjEuMjVhOC4wMDQ2Nyw4LjAwNDY3LDAsMCwxLTExLjMyODEyLTExLjMxMjVsMjYuNDIxODctMjYuNDA2MjVhMTExLjgxNTE3LDExMS44MTUxNywwLDAsMC00Ni4zNTkzNy00OS4yNjU2Miw2My4wMjMzNiw2My4wMjMzNiwwLDAsMS0xNC4wNjI1LDgyLjY0MDYyQTU1LjgzODQ2LDU1LjgzODQ2LDAsMCwxLDI1MS42MjUsMjU0LjczNDM4bC0xLjQyMTg4LTM0LjI4MTI2LDEyLjY3MTg4LDguNjI1YTMuOTY3LDMuOTY3LDAsMCwwLDIuMjUuNjg3NSwzLjk4MDU5LDMuOTgwNTksMCwwLDAsMy40Mzc0OS02LjAzMTI0bC04LjUzMTI0LTE0LjMxMjUsMTcuOTA2MjUtMy43MTg3NmE0LjAwNjQ3LDQuMDA2NDcsMCwwLDAsMC03Ljg0Mzc0bC0xNy45MDYyNS0zLjcxODc2LDguNTMxMjQtMTQuMzEyNWEzLjk4MDU5LDMuOTgwNTksMCwwLDAtMy40Mzc0OS02LjAzMTI0LDQuNzI2LDQuNzI2LDAsMCwwLTIuMjUuNjcxODdMMjQ4LjY4NzUsMTg0LjEyNSwyNDQsNzEuODI4MTJhNC4wMDM4Niw0LjAwMzg2LDAsMCwwLTgsMGwtNC42MjUsMTEwLjgxMjUtMTItOC4xNTYyNGE0LjAwMyw0LjAwMywwLDAsMC01LjY4NzUxLDUuMzU5MzdsOC41MzEyNiwxNC4zMTI1TDIwNC4zMTI1LDE5Ny44NzVhMy45OTY4NiwzLjk5Njg2LDAsMCwwLDAsNy44MjgxMmwxNy45MDYyNSwzLjczNDM4LTguNTMxMjYsMTQuMjk2ODhhNC43MjQ2OSw0LjcyNDY5LDAsMCwwLS41NjI0OSwyLjA0Njg3LDQuNTk1NDcsNC41OTU0NywwLDAsMCwxLjI1LDIuOTA2MjUsNC4wMTA1OSw0LjAxMDU5LDAsMCwwLDIuNzUsMS4wOTM3NSw0LjA5MDE2LDQuMDkwMTYsMCwwLDAsMi4yNS0uNjg3NWwxMC4zNTkzNy03LjA0Njg3TDIyOC4zNzUsMjU0Ljc2NTYyYTU1Ljg2NDE0LDU1Ljg2NDE0LDAsMCwxLTI4LjcxODc1LTkzLjQ1MzEyLDYzLjAxMTE5LDYzLjAxMTE5LDAsMCwxLTE0LjA0Njg4LTgyLjY1NjI1LDExMS45MzE1OCwxMTEuOTMxNTgsMCwwLDAtNDYuMzc1LDQ5LjI2NTYzbDI2LjQyMTg3LDI2LjQyMTg3YTcuOTk5MTcsNy45OTkxNywwLDAsMS0xMS4zMTI1LDExLjMxMjVsLTIxLjI2NTYzLTIxLjI2NTYzQzEzMC4wOTM3NSwxNTQuNDg0MzgsMTI4LDE2NC45NTMxMiwxMjguMDE1NjIsMTc2LjAxNTYyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLYWFiYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NTQuMTIgODMuNTFMMzE4LjM2IDQuOTNhOTUuOTYyIDk1Ljk2MiAwIDAgMC02MC43MSAwTDIxLjg4IDgzLjUxQTMyLjAwNiAzMi4wMDYgMCAwIDAgMCAxMTMuODd2NDkuMDFsMjY1LjAyLTc5LjUxYzE1LjAzLTQuNSAzMC45Mi00LjUgNDUuOTggMGwyNjUgNzkuNTF2LTQ5LjAxYzAtMTMuNzctOC44MS0yNi0yMS44OC0zMC4zNnptLTI3OS45IDMwLjUyTDAgMTk2LjN2MjI4LjM4YzAgMTUgMTAuNDIgMjcuOTggMjUuMDYgMzEuMjRsMjQyLjEyIDUzLjhhOTUuOTM3IDk1LjkzNyAwIDAgMCA0MS42NSAwbDI0Mi4xMi01My44YzE0LjY0LTMuMjUgMjUuMDYtMTYuMjQgMjUuMDYtMzEuMjRWMTk2LjI5bC0yNzQuMi04Mi4yNmMtOS4wNC0yLjcyLTE4LjU5LTIuNzItMjcuNTkgMHpNMTI4IDIzMC4xMWMwIDMuNjEtMi40MSA2Ljc3LTUuODkgNy43MmwtODAgMjEuODJDMzcuMDIgMjYxLjAzIDMyIDI1Ny4yIDMyIDI1MS45M3YtMTYuNThjMC0zLjYxIDIuNDEtNi43NyA1Ljg5LTcuNzJsODAtMjEuODJjNS4wOS0xLjM5IDEwLjExIDIuNDQgMTAuMTEgNy43MnYxNi41OHptMTQ0LTM5LjI4YzAgMy42MS0yLjQxIDYuNzctNS44OSA3LjcybC05NiAyNi4xOGMtNS4wOSAxLjM5LTEwLjExLTIuNDQtMTAuMTEtNy43MnYtMTYuNThjMC0zLjYxIDIuNDEtNi43NyA1Ljg5LTcuNzJsOTYtMjYuMThjNS4wOS0xLjM5IDEwLjExIDIuNDQgMTAuMTEgNy43MnYxNi41OHptMTc2IDIyLjdjMC01LjI4IDUuMDItOS4xMSAxMC4xMS03LjcybDgwIDIxLjgyYzMuNDguOTUgNS44OSA0LjExIDUuODkgNy43MnYxNi41OGMwIDUuMjgtNS4wMiA5LjExLTEwLjExIDcuNzJsLTgwLTIxLjgyYTcuOTk3IDcuOTk3IDAgMCAxLTUuODktNy43MnYtMTYuNTh6bS0xNDQtMzkuMjdjMC01LjI4IDUuMDItOS4xMSAxMC4xMS03LjcybDk2IDI2LjE4YzMuNDguOTUgNS44OSA0LjExIDUuODkgNy43MnYxNi41OGMwIDUuMjgtNS4wMiA5LjExLTEwLjExIDcuNzJsLTk2LTI2LjE4YTcuOTk3IDcuOTk3IDAgMCAxLTUuODktNy43MnYtMTYuNTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMTc2LjAwMUM1MTIgMjczLjIwMyA0MzMuMjAyIDM1MiAzMzYgMzUyYy0xMS4yMiAwLTIyLjE5LTEuMDYyLTMyLjgyNy0zLjA2OWwtMjQuMDEyIDI3LjAxNEEyMy45OTkgMjMuOTk5IDAgMCAxIDI2MS4yMjMgMzg0SDIyNHY0MGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRoLTQwdjQwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyNGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di03OC4wNTljMC02LjM2NSAyLjUyOS0xMi40NyA3LjAyOS0xNi45NzFsMTYxLjgwMi0xNjEuODAyQzE2My4xMDggMjEzLjgxNCAxNjAgMTk1LjI3MSAxNjAgMTc2IDE2MCA3OC43OTggMjM4Ljc5Ny4wMDEgMzM1Ljk5OSAwIDQzMy40ODgtLjAwMSA1MTIgNzguNTExIDUxMiAxNzYuMDAxek0zMzYgMTI4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhzNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDgtNDggMjEuNDktNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtleWJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCA0NDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWMTEyYzAtMjYuNTEgMjEuNDktNDggNDgtNDhoNDgwYzI2LjUxIDAgNDggMjEuNDkgNDggNDh2Mjg4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDh6TTEyOCAxODB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJINzZjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bS0zMzYgOTZ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptLTMzNiA5NnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMkg3NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTI4OCAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDE3MmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDIzMmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtoYW5kYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTUuODEgNjZjLTYuMzctMy41LTE0LjM3LTIuMzMtMTkuMzYgMy4wMmExNS45NzQgMTUuOTc0IDAgMCAwLTEuOTEgMTkuNTJjMTYuNDkgMjYuMTYgMjUuMiA1Ni4zOSAyNS4yIDg3LjQxLS4xOSA1My4yNS0yNi43NyAxMDIuNjktNzEuMjcgMTMyLjQxbC03Ni42MyA1My4zNXYtMjAuMWw0NC4wNS0zNi4wOWMzLjkyLTQuMiA1LTEwLjA5IDIuODEtMTUuMjhMMzEwLjg1IDI3M2MzMy44NC0xOS4yNiA1Ni45NC01NS4yNSA1Ni45NC05Ni45OSAwLTQwLjc5LTIyLjAyLTc2LjEzLTU0LjU5LTk1LjcxbDUuMjItMTEuNDRjMi4zNC01LjUzLjkzLTExLjgzLTMuNTctMTYuMDRMMjU1Ljg2IDBsLTU4Ljk5IDUyLjgxYy00LjUgNC4yMS01LjkgMTAuNTEtMy41NyAxNi4wNGw1LjIyIDExLjQ0Yy0zMi41NyAxOS41OC01NC41OSA1NC45My01NC41OSA5NS43MiAwIDQxLjc1IDIzLjA5IDc3LjczIDU2Ljk0IDk2Ljk5bC03Ljg1IDE3LjI0Yy0yLjE5IDUuMTgtMS4xIDExLjA3IDIuODEgMTUuMjhsNDQuMDUgMzYuMDl2MTkuOWwtNzYuNTktNTMuMzNDMTE5LjAyIDI3OC42MiA5Mi40NCAyMjkuMTkgOTIuMjYgMTc2YzAtMzEuMDggOC43MS02MS4zMSAyNS4yLTg3LjQ3IDMuODctNi4xNiAyLjQtMTMuNzctMi41OS0xOS4wOC01LTUuMzQtMTMuNjgtNi4yLTIwLjAyLTIuN0MxNi4zMiAxMDkuNi0yMi4zIDIwNS4zIDEzLjM2IDI5NS45OWM3LjA3IDE3Ljk5IDE3Ljg5IDM0LjM4IDMwLjQ2IDQ5LjA2bDU1Ljk3IDY1LjM2YzQuODcgNS42OSAxMy4wNCA3LjI0IDE5LjY1IDMuNzJsNzkuMzUtNDIuMjNMMjI4IDM5Mi4yM2wtNDcuMDggMzIuNzhjLTEuNjctLjM3LTMuMjMtMS4wMS01LjAxLTEuMDEtMTMuMjUgMC0yMy45OSAxMC43NC0yMy45OSAyNCAwIDEzLjI1IDEwLjc0IDI0IDIzLjk5IDI0IDEyLjEgMCAyMS42OS05LjExIDIzLjMzLTIwLjc2bDQwLjYzLTI4LjI4djI5Ljk1Yy05LjM5IDUuNTctMTUuOTkgMTUuMzgtMTUuOTkgMjcuMSAwIDE3LjY3IDE0LjMyIDMyIDMxLjk4IDMyczMxLjk4LTE0LjMzIDMxLjk4LTMyYzAtMTEuNzEtNi42MS0yMS41Mi0xNS45OS0yNy4xdi0zMC4xNWw0MC45MSAyOC40OEMzMTQuNDEgNDYyLjg5IDMyNCA0NzIgMzM2LjA5IDQ3MmMxMy4yNSAwIDIzLjk5LTEwLjc1IDIzLjk5LTI0IDAtMTMuMjYtMTAuNzQtMjQtMjMuOTktMjQtMS43OCAwLTMuMzQuNjQtNS4wMSAxLjAxTDI4NCAzOTIuMjNsMjkuMjEtMjAuMzQgNzkuMzUgNDIuMjNjNi42MSAzLjUyIDE0Ljc4IDEuOTcgMTkuNjUtMy43MWw1Mi41MS02MS4zMWMxOC44Ny0yMi4wMiAzNC00Ny41IDQxLjI1LTc1LjU5IDIxLjYyLTgzLjY2LTE2LjQ1LTE2Ny4yNy05MC4xNi0yMDcuNTF6bS05NS45OSAxMTBjMCAyMi4zLTExLjQ5IDQxLjkyLTI4LjgzIDUzLjM4bC01LjY1LTEyLjQxYy04Ljc1LTI0LjUyLTguNzUtNTEuMDQgMC03NS41Nmw3LjgzLTE3LjE4YzE2LjA3IDExLjY1IDI2LjY1IDMwLjQ1IDI2LjY1IDUxLjc3em0tMTI3LjkzIDBjMC0yMS4zMiAxMC41OC00MC4xMiAyNi42Ni01MS43Nmw3LjgzIDE3LjE4YzguNzUgMjQuNTIgOC43NSA1MS4wMyAwIDc1LjU2bC01LjY1IDEyLjQxYy0xNy4zNC0xMS40Ni0yOC44NC0zMS4wOS0yOC44NC01My4zOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2lzc0JlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptLTM5IDIxOS45bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjIgNy40LTE1LjYgNC0xNC45LTQuNSAzLjMtNDIuMSAzMi4yLTcxLjQgNTYtNzEuNHM1Mi43IDI5LjMgNTYgNzEuNGMuNSA4LjUtMTAuOSAxMi0xNS4xIDQuNXpNMzA0IDM5NmMwIDE5LjItMjguNyA0MS41LTcxLjUgNDQtOC41LjgtMTIuMS0xMS44LTMuNi0xNS40bDE3LTcuMmMxMy01LjUgMjAuOC0xMy41IDIwLjgtMjEuNXMtNy44LTE2LTIwLjgtMjEuNWwtMTctNy4yYy02LTIuNS02LjEtMTIuMiAwLTE0LjhsMTctNy4yYzEzLTUuNSAyMC44LTEzLjUgMjAuOC0yMS41cy03LjgtMTYtMjAuOC0yMS41bC0xNy03LjJjLTguNi0zLjYtNC44LTE2LjUgMy42LTE1LjQgNDIuOCAyLjUgNzEuNSAyNC44IDcxLjUgNDQgMCAxMy0xMy40IDI3LjMtMzUuMiAzNkMyOTAuNiAzNjguNyAzMDQgMzgzIDMwNCAzOTZ6bTY1LTE2OC4xbC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjEgNy4zLTE1LjYgNC0xNC45LTQuNSAzLjMtNDIuMSAzMi4yLTcxLjQgNTYtNzEuNHM1Mi43IDI5LjMgNTYgNzEuNGMuNSA4LjUtMTAuOSAxMi0xNS4xIDQuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2lzc1dpbmtIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTA0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDEuMSA0MDIuNWMtOC0yMC44LTMxLjUtMzEuNS01My4xLTI1LjlsLTguNCAyLjItMi4zLTguNGMtNS45LTIxLjQtMjctMzYuNS00OS0zMy0yNS4yIDQtNDAuNiAyOC42LTM0IDUyLjZsMjIuOSA4Mi42YzEuNSA1LjMgNyA4LjUgMTIuNCA3LjFsODMtMjEuNWMyNC4xLTYuMyAzNy43LTMxLjggMjguNS01NS43em0tMTc3LjYtNGMtNS42LTIwLjMtMi4zLTQyIDktNTkuNyAyOS43LTQ2LjMgOTguNy00NS41IDEyNy44IDQuMyA2LjQuMSAxMi42IDEuNCAxOC42IDIuOSAxMC45LTI3LjkgMTcuMS01OC4yIDE3LjEtOTBDNDk2IDExOSAzODUgOCAyNDggOFMwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDhjMzUuNCAwIDY4LjktNy41IDk5LjQtMjAuOS0uMy0uNy0yMy45LTg0LjYtMjMuOS04NC42ek0xNjggMjQwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTIwIDE1NmMwIDE5LjItMjguNyA0MS41LTcxLjUgNDQtOC41LjgtMTIuMS0xMS44LTMuNi0xNS40bDE3LTcuMmMxMy01LjUgMjAuOC0xMy41IDIwLjgtMjEuNXMtNy44LTE2LTIwLjgtMjEuNWwtMTctNy4yYy02LTIuNS01LjctMTIuMyAwLTE0LjhsMTctNy4yYzEzLTUuNSAyMC44LTEzLjUgMjAuOC0yMS41cy03LjgtMTYtMjAuOC0yMS41bC0xNy03LjJjLTguOC0zLjctNC42LTE2LjYgMy42LTE1LjQgNDIuOCAyLjUgNzEuNSAyNC44IDcxLjUgNDQgMCAxMy0xMy40IDI3LjMtMzUuMiAzNkMyNzQuNiAzNjguNyAyODggMzgzIDI4OCAzOTZ6bTE2LTE3OWMtOC4zIDcuNC0yMS42LjQtMTkuOC0xMC44IDQtMjUuMiAzNC4yLTQyLjEgNTkuOS00Mi4xUzQwMCAxODEgNDA0IDIwNi4yYzEuNyAxMS4xLTExLjMgMTguMy0xOS44IDEwLjhsLTkuNS04LjVjLTE0LjgtMTMuMi00Ni4yLTEzLjItNjEgMEwzMDQgMjE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bS04MCAyMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xMzYgMTU2YzAgMTkuMi0yOC43IDQxLjUtNzEuNSA0NC04LjUuOC0xMi4xLTExLjgtMy42LTE1LjRsMTctNy4yYzEzLTUuNSAyMC44LTEzLjUgMjAuOC0yMS41cy03LjgtMTYtMjAuOC0yMS41bC0xNy03LjJjLTYtMi41LTYuMS0xMi4yIDAtMTQuOGwxNy03LjJjMTMtNS41IDIwLjgtMTMuNSAyMC44LTIxLjVzLTcuOC0xNi0yMC44LTIxLjVsLTE3LTcuMmMtOC42LTMuNi00LjgtMTYuNSAzLjYtMTUuNCA0Mi44IDIuNSA3MS41IDI0LjggNzEuNSA0NCAwIDEzLTEzLjQgMjcuMy0zNS4yIDM2QzI5MC42IDM2OC43IDMwNCAzODMgMzA0IDM5NnptMjQtMTU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2l3aUJpcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc1LjgxIDIxNy45OEM1NzIuNjQgMTU3LjQxIDUxOC4yOCAxMTIgNDU3LjYzIDExMmgtOS4zN2MtNTIuODIgMC0xMDQuMjUtMTYuMjUtMTQ3Ljc0LTQ2LjI0LTQxLjk5LTI4Ljk2LTk2LjA0LTQxLjYyLTE1My4yMS0yOC43QzEyOS4zIDQxLjEyLS4wOCA3OC4yNCAwIDIyNGMuMDQgNzAuOTUgMzguNjggMTMyLjggOTUuOTkgMTY2LjAxVjQ2NGMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNTQuMjZjMTUuMzYgMy45NiAzMS40IDYuMjYgNDggNi4yNiA1LjQ0IDAgMTAuNjgtLjczIDE2LTEuMThWNDY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di01OS40M2MxNC4yNC01LjA2IDI3Ljg4LTExLjM5IDQwLjM0LTE5LjUxQzM0Mi4wNyAzNTUuMjUgMzkzLjg2IDMzNiA0NDguNDYgMzM2YzI1LjQ4IDAgMTYuMDEtLjMxIDIzLjA1LS43OGw3NC40MSAxMzYuNDRjMi44NiA1LjIzIDguMyA4LjM0IDE0LjA1IDguMzQgMS4zMSAwIDIuNjQtLjE2IDMuOTUtLjUgNy4wOS0xLjggMTIuMDUtOC4xOSAxMi4wNS0xNS41IDAgMCAuMTQtMjQwLjI0LS4xNi0yNDYuMDJ6TTQ2My45NyAyNDhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0em04MCAxNTMuMjVsLTM5Ljg2LTczLjA4YzE1LjEyLTUuODMgMjguNzMtMTQuNiAzOS44Ni0yNS45OHY5OS4wNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFuZG1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAxLjYyIDkyLjExTDI2Ny4yNCAyLjA0YTMxLjk1OCAzMS45NTggMCAwIDAtMjIuNDcgMEwxMC4zOCA5Mi4xMUExNi4wMDEgMTYuMDAxIDAgMCAwIDAgMTA3LjA5VjE0NGMwIDguODQgNy4xNiAxNiAxNiAxNmg0ODBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTM2LjkxYzAtNi42Ny00LjE0LTEyLjY0LTEwLjM4LTE0Ljk4ek02NCAxOTJ2MTYwSDQ4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OGg0NDh2LTQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNlYxOTJoLTY0djE2MGgtOTZWMTkyaC02NHYxNjBoLTk2VjE5Mkg2NHptNDMyIDI1NkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDgwYzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFuZ3VhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUyLjEgMjM2LjJjLTMuNS0xMi4xLTcuOC0zMy4yLTcuOC0zMy4yaC0uNXMtNC4zIDIxLjEtNy44IDMzLjJsLTExLjEgMzcuNUgxNjN6TTYxNiA5NkgzMzZ2MzIwaDI4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjR6bS0yNCAxMjBjMCA2LjYtNS40IDEyLTEyIDEyaC0xMS40Yy02LjkgMjMuNi0yMS43IDQ3LjQtNDIuNyA2OS45IDguNCA2LjQgMTcuMSAxMi41IDI2LjEgMTggNS41IDMuNCA3LjMgMTAuNSA0LjEgMTYuMmwtNy45IDEzLjljLTMuNCA1LjktMTAuOSA3LjgtMTYuNyA0LjMtMTIuNi03LjgtMjQuNS0xNi4xLTM1LjQtMjQuOS0xMC45IDguNy0yMi43IDE3LjEtMzUuNCAyNC45LTUuOCAzLjUtMTMuMyAxLjYtMTYuNy00LjNsLTcuOS0xMy45Yy0zLjItNS42LTEuNC0xMi44IDQuMi0xNi4yIDkuMy01LjcgMTgtMTEuNyAyNi4xLTE4LTcuOS04LjQtMTQuOS0xNy0yMS0yNS43LTQtNS43LTIuMi0xMy42IDMuNy0xNy4xbDYuNS0zLjkgNy4zLTQuM2M1LjQtMy4yIDEyLjQtMS43IDE2IDMuNCA1IDcgMTAuOCAxNCAxNy40IDIwLjkgMTMuNS0xNC4yIDIzLjgtMjguOSAzMC00My4ySDQxMmMtNi42IDAtMTItNS40LTEyLTEydi0xNmMwLTYuNiA1LjQtMTIgMTItMTJoNjR2LTE2YzAtNi42IDUuNC0xMiAxMi0xMmgxNmM2LjYgMCAxMiA1LjQgMTIgMTJ2MTZoNjRjNi42IDAgMTIgNS40IDEyIDEyek0wIDEyMHYyNzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMjgwVjk2SDI0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptNTguOSAyMTYuMUwxMTYuNCAxNjdjMS43LTQuOSA2LjItOC4xIDExLjQtOC4xaDMyLjVjNS4xIDAgOS43IDMuMyAxMS40IDguMWw1Ny41IDE2OS4xYzIuNiA3LjgtMy4xIDE1LjktMTEuNCAxNS45aC0yMi45YTEyIDEyIDAgMCAxLTExLjUtOC42bC05LjQtMzEuOWgtNjAuMmwtOS4xIDMxLjhjLTEuNSA1LjEtNi4yIDguNy0xMS41IDguN0g3MC4zYy04LjIgMC0xNC04LjEtMTEuNC0xNS45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXB0b3BDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NS4wMyAyNjEuNjVjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwxMS4zMS0xMS4zMWM2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzTDI1My4yNSAxOTJsMzUuNzEtMzUuNzJjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtMTEuMzEtMTEuMzFjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTU4LjM0IDU4LjM0Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDU4LjM1IDU4LjM0em05Ni4wMS0xMS4zbDExLjMxIDExLjMxYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsNTguMzQtNTguMzRjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtNTguMzQtNTguMzRjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTExLjMxIDExLjMxYy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzTDM4Ni43NSAxOTJsLTM1LjcxIDM1LjcyYy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzek02MjQgNDE2SDM4MS41NGMtLjc0IDE5LjgxLTE0LjcxIDMyLTMyLjc0IDMySDI4OGMtMTguNjkgMC0zMy4wMi0xNy40Ny0zMi43Ny0zMkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgMzUuMiAyOC44IDY0IDY0IDY0aDUxMmMzNS4yIDAgNjQtMjguOCA2NC02NHYtMTZjMC04LjgtNy4yLTE2LTE2LTE2ek01NzYgNDhjMC0yNi40LTIxLjYtNDgtNDgtNDhIMTEyQzg1LjYgMCA2NCAyMS42IDY0IDQ4djMzNmg1MTJWNDh6bS02NCAyNzJIMTI4VjY0aDM4NHYyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcHRvcEhvdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiwyODhIMjA4YTE2LDE2LDAsMCwxLTE2LTE2VjIwOGExNiwxNiwwLDAsMSwxNi0xNmg2NGExNiwxNiwwLDAsMSwxNiwxNnYzNy4xMkMyOTkuMTEsMjMyLjI0LDMxNSwyMjQsMzMyLjgsMjI0SDQ2OS43NGw2LjY1LTcuNTNBMTYuNTEsMTYuNTEsMCwwLDAsNDgwLDIwN2ExNi4zMSwxNi4zMSwwLDAsMC00Ljc1LTEwLjYxTDQxNiwxNDRWNDhhMTYsMTYsMCwwLDAtMTYtMTZIMzY4YTE2LDE2LDAsMCwwLTE2LDE2Vjg3LjNMMjYzLjUsOC45MkMyNTgsNCwyNDcuNDUsMCwyNDAuMDUsMHMtMTcuOTMsNC0yMy40Nyw4LjkyTDQuNzgsMTk2LjQyQTE2LjE1LDE2LjE1LDAsMCwwLDAsMjA3YTE2LjQsMTYuNCwwLDAsMCwzLjU1LDkuMzlMMjIuMzQsMjM3LjdBMTYuMjIsMTYuMjIsMCwwLDAsMzMsMjQyLjQ4LDE2LjUxLDE2LjUxLDAsMCwwLDQyLjM0LDIzOUw2NCwyMTkuODhWMzg0YTMyLDMyLDAsMCwwLDMyLDMySDI3MlpNNjI5LjMzLDQ0OEg1OTJWMjg4YzAtMTcuNjctMTIuODktMzItMjguOC0zMkgzMzIuOGMtMTUuOTEsMC0yOC44LDE0LjMzLTI4LjgsMzJWNDQ4SDI2Ni42N0ExMC42NywxMC42NywwLDAsMCwyNTYsNDU4LjY3djEwLjY2QTQyLjgyLDQyLjgyLDAsMCwwLDI5OC42LDUxMkg1OTcuNEE0Mi44Miw0Mi44MiwwLDAsMCw2NDAsNDY5LjMzVjQ1OC42N0ExMC42NywxMC42NywwLDAsMCw2MjkuMzMsNDQ4Wk01NDQsNDQ4SDM1MlYzMDRINTQ0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXB0b3BNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMiAyMjRoNTZ2NTZhOCA4IDAgMCAwIDggOGg0OGE4IDggMCAwIDAgOC04di01Nmg1NmE4IDggMCAwIDAgOC04di00OGE4IDggMCAwIDAtOC04aC01NnYtNTZhOCA4IDAgMCAwLTgtOGgtNDhhOCA4IDAgMCAwLTggOHY1NmgtNTZhOCA4IDAgMCAwLTggOHY0OGE4IDggMCAwIDAgOCA4ek01NzYgNDhhNDguMTQgNDguMTQgMCAwIDAtNDgtNDhIMTEyYTQ4LjE0IDQ4LjE0IDAgMCAwLTQ4IDQ4djMzNmg1MTJ6bS02NCAyNzJIMTI4VjY0aDM4NHptMTEyIDk2SDM4MS41NGMtLjc0IDE5LjgxLTE0LjcxIDMyLTMyLjc0IDMySDI4OGMtMTguNjkgMC0zMy0xNy40Ny0zMi43Ny0zMkgxNmExNiAxNiAwIDAgMC0xNiAxNnYxNmE2NC4xOSA2NC4xOSAwIDAgMCA2NCA2NGg1MTJhNjQuMTkgNjQuMTkgMCAwIDAgNjQtNjR2LTE2YTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXB0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDQxNkgzODEuNTRjLS43NCAxOS44MS0xNC43MSAzMi0zMi43NCAzMkgyODhjLTE4LjY5IDAtMzMuMDItMTcuNDctMzIuNzctMzJIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMwIDM1LjIgMjguOCA2NCA2NCA2NGg1MTJjMzUuMiAwIDY0LTI4LjggNjQtNjR2LTE2YzAtOC44LTcuMi0xNi0xNi0xNnpNNTc2IDQ4YzAtMjYuNC0yMS42LTQ4LTQ4LTQ4SDExMkM4NS42IDAgNjQgMjEuNiA2NCA0OHYzMzZoNTEyVjQ4em0tNjQgMjcySDEyOFY2NGgzODR2MjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXVnaEJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMjQgMTk5LjRjMy4zLTQyLjEgMzIuMi03MS40IDU2LTcxLjRzNTIuNyAyOS4zIDU2IDcxLjRjLjcgOC42LTEwLjggMTEuOS0xNC45IDQuNWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4yIDcuNC0xNS44IDQuMS0xNS4xLTQuNXptLTE2MCAwYzMuMy00Mi4xIDMyLjItNzEuNCA1Ni03MS40czUyLjcgMjkuMyA1NiA3MS40Yy43IDguNi0xMC44IDExLjktMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMyA3LjQtMTUuOCA0LTE1LjEtNC41ek0zOTguOSAzMDZDMzkwIDM3NyAzMjkuNCA0MzIgMjU2IDQzMmgtMTZjLTczLjQgMC0xMzQtNTUtMTQyLjktMTI2LTEuMi05LjUgNi4zLTE4IDE1LjktMThoMjcwYzkuNiAwIDE3LjEgOC40IDE1LjkgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhdWdoU3F1aW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTMzLjggMTYxLjdsODAtNDhjMTEuNi02LjkgMjQgNy43IDE1LjQgMThMMzQzLjYgMTgwbDMzLjYgNDAuM2M4LjcgMTAuNC0zLjkgMjQuOC0xNS40IDE4bC04MC00OGMtNy43LTQuNy03LjctMTUuOSAwLTIwLjZ6bS0xNjMtMzBjLTguNi0xMC4zIDMuOC0yNC45IDE1LjQtMThsODAgNDhjNy44IDQuNyA3LjggMTUuOSAwIDIwLjZsLTgwIDQ4Yy0xMS41IDYuOC0yNC03LjYtMTUuNC0xOGwzMy42LTQwLjMtMzMuNi00MC4zek0zOTguOSAzMDZDMzkwIDM3NyAzMjkuNCA0MzIgMjU2IDQzMmgtMTZjLTczLjQgMC0xMzQtNTUtMTQyLjktMTI2LTEuMi05LjUgNi4zLTE4IDE1LjktMThoMjcwYzkuNiAwIDE3LjEgOC40IDE1LjkgMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhdWdoV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0yMC4xIDE5OC4xYzQtMjUuMiAzNC4yLTQyLjEgNTkuOS00Mi4xczU1LjkgMTYuOSA1OS45IDQyLjFjMS43IDExLjEtMTEuNCAxOC4zLTE5LjggMTAuOGwtOS41LTguNWMtMTQuOC0xMy4yLTQ2LjItMTMuMi02MSAwTDI4OCAyMTdjLTguNCA3LjQtMjEuNi4zLTE5LjktMTAuOXpNMTY4IDE2MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bTIzMC45IDE0NkMzOTAgMzc3IDMyOS40IDQzMiAyNTYgNDMyaC0xNmMtNzMuNCAwLTEzNC01NS0xNDIuOS0xMjYtMS4yLTkuNSA2LjMtMTggMTUuOS0xOGgyNzBjOS42IDAgMTcuMSA4LjQgMTUuOSAxOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGF1Z2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptODAgMTUyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptLTE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptODggMjcyaC0xNmMtNzMuNCAwLTEzNC01NS0xNDIuOS0xMjYtMS4yLTkuNSA2LjMtMTggMTUuOS0xOGgyNzBjOS42IDAgMTcuMSA4LjQgMTUuOSAxOC04LjkgNzEtNjkuNSAxMjYtMTQyLjkgMTI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXllckdyb3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjQxIDE0OC4wMmwyMzIuOTQgMTA1LjY3YzYuOCAzLjA5IDE0LjQ5IDMuMDkgMjEuMjkgMGwyMzIuOTQtMTA1LjY3YzE2LjU1LTcuNTEgMTYuNTUtMzIuNTIgMC00MC4wM0wyNjYuNjUgMi4zMWEyNS42MDcgMjUuNjA3IDAgMCAwLTIxLjI5IDBMMTIuNDEgMTA3Ljk4Yy0xNi41NSA3LjUxLTE2LjU1IDMyLjUzIDAgNDAuMDR6bTQ4Ny4xOCA4OC4yOGwtNTguMDktMjYuMzMtMTYxLjY0IDczLjI3Yy03LjU2IDMuNDMtMTUuNTkgNS4xNy0yMy44NiA1LjE3cy0xNi4yOS0xLjc0LTIzLjg2LTUuMTdMNzAuNTEgMjA5Ljk3bC01OC4xIDI2LjMzYy0xNi41NSA3LjUtMTYuNTUgMzIuNSAwIDQwbDIzMi45NCAxMDUuNTljNi44IDMuMDggMTQuNDkgMy4wOCAyMS4yOSAwTDQ5OS41OSAyNzYuM2MxNi41NS03LjUgMTYuNTUtMzIuNSAwLTQwem0wIDEyNy44bC01Ny44Ny0yNi4yMy0xNjEuODYgNzMuMzdjLTcuNTYgMy40My0xNS41OSA1LjE3LTIzLjg2IDUuMTdzLTE2LjI5LTEuNzQtMjMuODYtNS4xN0w3MC4yOSAzMzcuODcgMTIuNDEgMzY0LjFjLTE2LjU1IDcuNS0xNi41NSAzMi41IDAgNDBsMjMyLjk0IDEwNS41OWM2LjggMy4wOCAxNC40OSAzLjA4IDIxLjI5IDBMNDk5LjU5IDQwNC4xYzE2LjU1LTcuNSAxNi41NS0zMi41IDAtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlYWYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ2LjIgOS43Yy01LjYtMTIuNS0yMS42LTEzLTI4LjMtMS4yQzQ4Ni45IDYyLjQgNDMxLjQgOTYgMzY4IDk2aC04MEMxODIgOTYgOTYgMTgyIDk2IDI4OGMwIDcgLjggMTMuNyAxLjUgMjAuNUMxNjEuMyAyNjIuOCAyNTMuNCAyMjQgMzg0IDIyNGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkMxMzIuNiAyNTYgMjYgNDEwLjEgMi40IDQ2OGMtNi42IDE2LjMgMS4yIDM0LjkgMTcuNSA0MS42IDE2LjQgNi44IDM1LTEuMSA0MS44LTE3LjMgMS41LTMuNiAyMC45LTQ3LjkgNzEuOS05MC42IDMyLjQgNDMuOSA5NCA4NS44IDE3NC45IDc3LjJDNDY1LjUgNDY3LjUgNTc2IDMyNi43IDU3NiAxNTQuM2MwLTUwLjItMTAuOC0xMDIuMi0yOS44LTE0NC42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZW1vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODkuMDM4IDIyLjk2M0M0NjUuOTQ0LS4xMyA0MzQuNjQ4LTUuOTMgNDEzLjk0NyA2LjEyOWMtNTguOTA2IDM0LjMxMi0xODEuMjUtNTMuMDc3LTMyMS4wNzMgODYuNzQ2UzQwLjQ0MSAzNTUuMDQxIDYuMTI5IDQxMy45NDVjLTEyLjA1OSAyMC43MDItNi4yNiA1MS45OTkgMTYuODMzIDc1LjA5MyAyMy4wOTUgMjMuMDk1IDU0LjM5MiAyOC44OTEgNzUuMDk1IDE2LjgzMiA1OC45MDEtMzQuMzEgMTgxLjI0NiA1My4wNzkgMzIxLjA2OC04Ni43NDNTNDcxLjU2IDE1Ni45NiA1MDUuODcxIDk4LjA1NmMxMi4wNTktMjAuNzAyIDYuMjYxLTUxLjk5OS0xNi44MzMtNzUuMDkzek0yNDMuODgxIDk1LjUyMmMtNTguMTg5IDE0LjU0Ny0xMzMuODA4IDkwLjE1NS0xNDguMzU4IDE0OC4zNTgtMS44MTcgNy4yNy04LjM0MiAxMi4xMjQtMTUuNTExIDEyLjEyNC0xLjI4NCAwLTIuNTktLjE1Ni0zLjg5My0uNDgxLTguNTcyLTIuMTQ0LTEzLjc4NC0xMC44My0xMS42NDItMTkuNDAzQzgxLjkwMSAxNjYuNDI3IDE2Ni4zMTYgODEuOTMgMjM2LjExOSA2NC40NzhjOC41NzUtMi4xNDMgMTcuMjYxIDMuMDY5IDE5LjQwMyAxMS42NDJzLTMuMDY5IDE3LjI1OS0xMS42NDEgMTkuNDAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZXNzVGhhbkVxdWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0Ljk4IDIxNC4ybDMwMS40MSAxMTkuODdjMTguMzkgNi4wMyAzOC43MS0yLjU0IDQ1LjM4LTE5LjE1bDEyLjA5LTMwLjA4YzYuNjgtMTYuNjEtMi44Mi0zNC45Ny0yMS4yMS00MWwtMTc1LjQ0LTY4LjA1IDE3NS41Ni02OC4wOWMxOC4yOS02IDI3Ljc0LTI0LjI3IDIxLjEtNDAuNzlsLTEyLjAzLTI5LjkyYy02LjY0LTE2LjUzLTI2Ljg2LTI1LjA2LTQ1LjE1LTE5LjA2TDU0Ljk4IDEzNy44OUM0MS4yMSAxNDIuNDEgMzIgMTU0LjUgMzIgMTY4LjA3djE1Ljk2YzAgMTMuNTYgOS4yMSAyNS42NSAyMi45OCAzMC4xN3pNNDI0IDQwMEgyNGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY0OGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQwMGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di00OGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZXNzVGhhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjUuNDYgMzU3Ljc0TDE0Ny4wNCAyNTUuODlsMjE4LjQ3LTEwMS44OGMxNi4wMi03LjQ3IDIyLjk1LTI2LjUxIDE1LjQ4LTQyLjUzbC0xMy41Mi0yOUMzNjAgNjYuNDYgMzQwLjk2IDU5LjUzIDMyNC45NCA2N0wxOC40OCAyMDkuOTFhMzIuMDE0IDMyLjAxNCAwIDAgMC0xOC40OCAyOXYzNC4yNGMwIDEyLjQ0IDcuMjEgMjMuNzUgMTguNDggMjlsMzA2LjMxIDE0Mi44M2MxNi4wNiA3LjQ5IDM1LjE1LjU0IDQyLjY0LTE1LjUybDEzLjU2LTI5LjA4YzcuNDktMTYuMDYuNTQtMzUuMTUtMTUuNTMtNDIuNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxldmVsRG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuNTUzIDM5Mi4zMzFMMjA5LjU4NyA1MDQuMzM0Yy05LjQ4NSAxMC4yMTQtMjUuNjc2IDEwLjIyOS0zNS4xNzQgMEw3MC40MzggMzkyLjMzMUM1Ni4yMzIgMzc3LjAzMSA2Ny4wNjIgMzUyIDg4LjAyNSAzNTJIMTUyVjgwSDY4LjAyNGExMS45OTYgMTEuOTk2IDAgMCAxLTguNDg1LTMuNTE1bC01Ni01NkMtNC4wMjEgMTIuOTI2IDEuMzMzIDAgMTIuMDI0IDBIMjA4YzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHYzMjhoNjMuOTY2YzIwLjg3OCAwIDMxLjg1MSAyNC45NjkgMTcuNTg3IDQwLjMzMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGV2ZWxVcEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuNTUzIDExOS42NjlMMjA5LjU4NyA3LjY2NmMtOS40ODUtMTAuMjE0LTI1LjY3Ni0xMC4yMjktMzUuMTc0IDBMNzAuNDM4IDExOS42NjlDNTYuMjMyIDEzNC45NjkgNjcuMDYyIDE2MCA4OC4wMjUgMTYwSDE1MnYyNzJINjguMDI0YTExLjk5NiAxMS45OTYgMCAwIDAtOC40ODUgMy41MTVsLTU2IDU2Qy00LjAyMSA0OTkuMDc0IDEuMzMzIDUxMiAxMi4wMjQgNTEySDIwOGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTYwaDYzLjk2NmMyMC44NzggMCAzMS44NTEtMjQuOTY5IDE3LjU4Ny00MC4zMzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpZmVSaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4wMzMgOCA4IDExOS4wMzMgOCAyNTZzMTExLjAzMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzMyAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOHptMTczLjY5NiAxMTkuNTU5bC02My4zOTkgNjMuMzk5Yy0xMC45ODctMTguNTU5LTI2LjY3LTM0LjI1Mi00NS4yNTUtNDUuMjU1bDYzLjM5OS02My4zOTlhMjE4LjM5NiAyMTguMzk2IDAgMCAxIDQ1LjI1NSA0NS4yNTV6TTI1NiAzNTJjLTUzLjAxOSAwLTk2LTQyLjk4MS05Ni05NnM0Mi45ODEtOTYgOTYtOTYgOTYgNDIuOTgxIDk2IDk2LTQyLjk4MSA5Ni05NiA5NnpNMTI3LjU1OSA4Mi4zMDRsNjMuMzk5IDYzLjM5OWMtMTguNTU5IDEwLjk4Ny0zNC4yNTIgMjYuNjctNDUuMjU1IDQ1LjI1NWwtNjMuMzk5LTYzLjM5OWEyMTguMzcyIDIxOC4zNzIgMCAwIDEgNDUuMjU1LTQ1LjI1NXpNODIuMzA0IDM4NC40NDFsNjMuMzk5LTYzLjM5OWMxMC45ODcgMTguNTU5IDI2LjY3IDM0LjI1MiA0NS4yNTUgNDUuMjU1bC02My4zOTkgNjMuMzk5YTIxOC4zOTYgMjE4LjM5NiAwIDAgMS00NS4yNTUtNDUuMjU1em0zMDIuMTM3IDQ1LjI1NWwtNjMuMzk5LTYzLjM5OWMxOC41NTktMTAuOTg3IDM0LjI1Mi0yNi42NyA0NS4yNTUtNDUuMjU1bDYzLjM5OSA2My4zOTlhMjE4LjQwMyAyMTguNDAzIDAgMCAxLTQ1LjI1NSA0NS4yNTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpZ2h0YnVsYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzUyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05Ni4wNiA0NTQuMzVjLjAxIDYuMjkgMS44NyAxMi40NSA1LjM2IDE3LjY5bDE3LjA5IDI1LjY5YTMxLjk5IDMxLjk5IDAgMCAwIDI2LjY0IDE0LjI4aDYxLjcxYTMxLjk5IDMxLjk5IDAgMCAwIDI2LjY0LTE0LjI4bDE3LjA5LTI1LjY5YTMxLjk4OSAzMS45ODkgMCAwIDAgNS4zNi0xNy42OWwuMDQtMzguMzVIOTYuMDFsLjA1IDM4LjM1ek0wIDE3NmMwIDQ0LjM3IDE2LjQ1IDg0Ljg1IDQzLjU2IDExNS43OCAxNi41MiAxOC44NSA0Mi4zNiA1OC4yMyA1Mi4yMSA5MS40NS4wNC4yNi4wNy41Mi4xMS43OGgxNjAuMjRjLjA0LS4yNi4wNy0uNTEuMTEtLjc4IDkuODUtMzMuMjIgMzUuNjktNzIuNiA1Mi4yMS05MS40NUMzMzUuNTUgMjYwLjg1IDM1MiAyMjAuMzcgMzUyIDE3NiAzNTIgNzguNjEgMjcyLjkxLS4zIDE3NS40NSAwIDczLjQ0LjMxIDAgODIuOTcgMCAxNzZ6bTE3Ni04MGMtNDQuMTEgMC04MCAzNS44OS04MCA4MCAwIDguODQtNy4xNiAxNi0xNiAxNnMtMTYtNy4xNi0xNi0xNmMwLTYxLjc2IDUwLjI0LTExMiAxMTItMTEyIDguODQgMCAxNiA3LjE2IDE2IDE2cy03LjE2IDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNi42MTIgMTg1LjM5MWM1OS43NDcgNTkuODA5IDU4LjkyNyAxNTUuNjk4LjM2IDIxNC41OS0uMTEuMTItLjI0LjI1LS4zNi4zN2wtNjcuMiA2Ny4yYy01OS4yNyA1OS4yNy0xNTUuNjk5IDU5LjI2Mi0yMTQuOTYgMC01OS4yNy01OS4yNi01OS4yNy0xNTUuNyAwLTIxNC45NmwzNy4xMDYtMzcuMTA2YzkuODQtOS44NCAyNi43ODYtMy4zIDI3LjI5NCAxMC42MDYuNjQ4IDE3LjcyMiAzLjgyNiAzNS41MjcgOS42OSA1Mi43MjEgMS45ODYgNS44MjIuNTY3IDEyLjI2Mi0zLjc4MyAxNi42MTJsLTEzLjA4NyAxMy4wODdjLTI4LjAyNiAyOC4wMjYtMjguOTA1IDczLjY2LTEuMTU1IDEwMS45NiAyOC4wMjQgMjguNTc5IDc0LjA4NiAyOC43NDkgMTAyLjMyNS41MWw2Ny4yLTY3LjE5YzI4LjE5MS0yOC4xOTEgMjguMDczLTczLjc1NyAwLTEwMS44My0zLjcwMS0zLjY5NC03LjQyOS02LjU2NC0xMC4zNDEtOC41NjlhMTYuMDM3IDE2LjAzNyAwIDAgMS02Ljk0Ny0xMi42MDZjLS4zOTYtMTAuNTY3IDMuMzQ4LTIxLjQ1NiAxMS42OTgtMjkuODA2bDIxLjA1NC0yMS4wNTVjNS41MjEtNS41MjEgMTQuMTgyLTYuMTk5IDIwLjU4NC0xLjczMWExNTIuNDgyIDE1Mi40ODIgMCAwIDEgMjAuNTIyIDE3LjE5N3pNNDY3LjU0NyA0NC40NDljLTU5LjI2MS01OS4yNjItMTU1LjY5LTU5LjI3LTIxNC45NiAwbC02Ny4yIDY3LjJjLS4xMi4xMi0uMjUuMjUtLjM2LjM3LTU4LjU2NiA1OC44OTItNTkuMzg3IDE1NC43ODEuMzYgMjE0LjU5YTE1Mi40NTQgMTUyLjQ1NCAwIDAgMCAyMC41MjEgMTcuMTk2YzYuNDAyIDQuNDY4IDE1LjA2NCAzLjc4OSAyMC41ODQtMS43MzFsMjEuMDU0LTIxLjA1NWM4LjM1LTguMzUgMTIuMDk0LTE5LjIzOSAxMS42OTgtMjkuODA2YTE2LjAzNyAxNi4wMzcgMCAwIDAtNi45NDctMTIuNjA2Yy0yLjkxMi0yLjAwNS02LjY0LTQuODc1LTEwLjM0MS04LjU2OS0yOC4wNzMtMjguMDczLTI4LjE5MS03My42MzkgMC0xMDEuODNsNjcuMi02Ny4xOWMyOC4yMzktMjguMjM5IDc0LjMtMjguMDY5IDEwMi4zMjUuNTEgMjcuNzUgMjguMyAyNi44NzIgNzMuOTM0LTEuMTU1IDEwMS45NmwtMTMuMDg3IDEzLjA4N2MtNC4zNSA0LjM1LTUuNzY5IDEwLjc5LTMuNzgzIDE2LjYxMiA1Ljg2NCAxNy4xOTQgOS4wNDIgMzQuOTk5IDkuNjkgNTIuNzIxLjUwOSAxMy45MDYgMTcuNDU0IDIwLjQ0NiAyNy4yOTQgMTAuNjA2bDM3LjEwNi0zNy4xMDZjNTkuMjcxLTU5LjI1OSA1OS4yNzEtMTU1LjY5OS4wMDEtMjE0Ljk1OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlyYVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcxLjk5NCAyNTZoLTQ4LjAxOUMzMTcuNjQgMjU2IDMxMiAyNjAuOTEyIDMxMiAyNjcuMjQ2IDMxMiAzNjggMjMwLjE3OSA0MTYgMTQ0IDQxNlYyNTYuNzgxbDEzNC42MDMtMjkuOTEyQTEyIDEyIDAgMCAwIDI4OCAyMTUuMTU1di00MC45NzZjMC03LjY3Ny03LjEwOS0xMy4zOC0xNC42MDMtMTEuNzE0TDE0NCAxOTEuMjE5VjE2MC43OGwxMzQuNjAzLTI5LjkxMkExMiAxMiAwIDAgMCAyODggMTE5LjE1NFY3OC4xNzljMC03LjY3Ny03LjEwOS0xMy4zOC0xNC42MDMtMTEuNzE0TDE0NCA5NS4yMTlWNDRjMC02LjYyNy01LjM3My0xMi0xMi0xMkg3NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY2OC45OTdMOS4zOTcgMTI1LjEzMUExMiAxMiAwIDAgMCAwIDEzNi44NDV2NDAuOTc2YzAgNy42NzcgNy4xMDkgMTMuMzggMTQuNjAzIDExLjcxNEw2NCAxNzguNTU4djMwLjQzOUw5LjM5NyAyMjEuMTMxQTEyIDEyIDAgMCAwIDAgMjMyLjg0NXY0MC45NzZjMCA3LjY3NyA3LjEwOSAxMy4zOCAxNC42MDMgMTEuNzE0TDY0IDI3NC41NThWNDY4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNzkuNTgzYzEzNC4wOTEgMCAyMjMuMjU1LTc3LjgzNCAyMjguNDA4LTIxMS41OTIuMjYxLTYuNzgyLTUuMjExLTEyLjQwOC0xMS45OTctMTIuNDA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaXN0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCA0ODBINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGg0MTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OHpNMTI4IDEyMGMtMjIuMDkxIDAtNDAgMTcuOTA5LTQwIDQwczE3LjkwOSA0MCA0MCA0MCA0MC0xNy45MDkgNDAtNDAtMTcuOTA5LTQwLTQwLTQwem0wIDk2Yy0yMi4wOTEgMC00MCAxNy45MDktNDAgNDBzMTcuOTA5IDQwIDQwIDQwIDQwLTE3LjkwOSA0MC00MC0xNy45MDktNDAtNDAtNDB6bTAgOTZjLTIyLjA5MSAwLTQwIDE3LjkwOS00MCA0MHMxNy45MDkgNDAgNDAgNDAgNDAtMTcuOTA5IDQwLTQwLTE3LjkwOS00MC00MC00MHptMjg4LTEzNnYtMzJjMC02LjYyNy01LjM3My0xMi0xMi0xMkgyMDRjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MzJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyMDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMCA5NnYtMzJjMC02LjYyNy01LjM3My0xMi0xMi0xMkgyMDRjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MzJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyMDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMCA5NnYtMzJjMC02LjYyNy01LjM3My0xMi0xMi0xMkgyMDRjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MzJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyMDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlzdE9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxLjc3IDQwMWwxNy41LTIwLjE1YTE5LjkyIDE5LjkyIDAgMCAwIDUuMDctMTQuMTl2LTMuMzFDODQuMzQgMzU2IDgwLjUgMzUyIDczIDM1MkgxNmE4IDggMCAwIDAtOCA4djE2YTggOCAwIDAgMCA4IDhoMjIuODNhMTU3LjQxIDE1Ny40MSAwIDAgMC0xMSAxMi4zMWwtNS42MSA3Yy00IDUuMDctNS4yNSAxMC4xMy0yLjggMTQuODhsMS4wNSAxLjkzYzMgNS43NiA2LjI5IDcuODggMTIuMjUgNy44OGg0LjczYzEwLjMzIDAgMTUuOTQgMi40NCAxNS45NCA5LjA5IDAgNC43Mi00LjIgOC4yMi0xNC4zNiA4LjIyYTQxLjU0IDQxLjU0IDAgMCAxLTE1LjQ3LTMuMTJjLTYuNDktMy44OC0xMS43NC0zLjUtMTUuNiAzLjEybC01LjU5IDkuMzFjLTMuNzIgNi4xMy0zLjE5IDExLjcyIDIuNjMgMTUuOTQgNy43MSA0LjY5IDIwLjM4IDkuNDQgMzcgOS40NCAzNC4xNiAwIDQ4LjUtMjIuNzUgNDguNS00NC4xMi0uMDMtMTQuMzgtOS4xMi0yOS43Ni0yOC43My0zNC44OHpNNDk2IDIyNEgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xNjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNlY4MGExNiAxNiAwIDAgMC0xNi0xNnptMCAzMjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6TTE2IDE2MGg2NGE4IDggMCAwIDAgOC04di0xNmE4IDggMCAwIDAtOC04SDY0VjQwYTggOCAwIDAgMC04LThIMzJhOCA4IDAgMCAwLTcuMTQgNC40MmwtOCAxNkE4IDggMCAwIDAgMjQgNjRoOHY2NEgxNmE4IDggMCAwIDAtOCA4djE2YTggOCAwIDAgMCA4IDh6bS0zLjkxIDE2MEg4MGE4IDggMCAwIDAgOC04di0xNmE4IDggMCAwIDAtOC04SDQxLjMyYzMuMjktMTAuMjkgNDguMzQtMTguNjggNDguMzQtNTYuNDQgMC0yOS4wNi0yNS0zOS41Ni00NC40Ny0zOS41Ni0yMS4zNiAwLTMzLjggMTAtNDAuNDYgMTguNzUtNC4zNyA1LjU5LTMgMTAuODQgMi44IDE1LjM3bDguNTggNi44OGM1LjYxIDQuNTYgMTEgMi40NyAxNi4xMi0yLjQ0YTEzLjQ0IDEzLjQ0IDAgMCAxIDkuNDYtMy44NGMzLjMzIDAgOS4yOCAxLjU2IDkuMjggOC43NUM1MSAyNDguMTkgMCAyNTcuMzEgMCAzMDQuNTl2NEMwIDMxNiA1LjA4IDMyMCAxMi4wOSAzMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpc3RVbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCA0OGE0OCA0OCAwIDEgMCA0OCA0OCA0OCA0OCAwIDAgMC00OC00OHptMCAxNjBhNDggNDggMCAxIDAgNDggNDggNDggNDggMCAwIDAtNDgtNDh6bTAgMTYwYTQ4IDQ4IDAgMSAwIDQ4IDQ4IDQ4IDQ4IDAgMCAwLTQ4LTQ4em00NDggMTZIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtMzIwSDE3NmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMjBhMTYgMTYgMCAwIDAgMTYtMTZWODBhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgMTYwSDE3NmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMjBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgwIDM2OEgxNmExNiAxNiAwIDAgMC0xNiAxNnY2NGExNiAxNiAwIDAgMCAxNiAxNmg2NGExNiAxNiAwIDAgMCAxNi0xNnYtNjRhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtMzIwSDE2QTE2IDE2IDAgMCAwIDAgNjR2NjRhMTYgMTYgMCAwIDAgMTYgMTZoNjRhMTYgMTYgMCAwIDAgMTYtMTZWNjRhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgMTYwSDE2YTE2IDE2IDAgMCAwLTE2IDE2djY0YTE2IDE2IDAgMCAwIDE2IDE2aDY0YTE2IDE2IDAgMCAwIDE2LTE2di02NGExNiAxNiAwIDAgMC0xNi0xNnptNDE2IDE3NkgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0zMjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNlY4MGExNiAxNiAwIDAgMC0xNi0xNnptMCAxNjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvY2F0aW9uQXJyb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ0LjUyIDMuNTJMMjguNzQgMTk1LjQyYy00Ny45NyAyMi4zOS0zMS45OCA5Mi43NSAxOS4xOSA5Mi43NWgxNzUuOTF2MTc1LjkxYzAgNTEuMTcgNzAuMzYgNjcuMTcgOTIuNzUgMTkuMTlsMTkxLjktNDE1Ljc4YzE1Ljk5LTM4LjM5LTI1LjU5LTc5Ljk3LTYzLjk3LTYzLjk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMb2NrT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjMuNSAwQzMzOS41LjMgMjcyIDY5LjUgMjcyIDE1My41VjIyNEg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MTkyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYyNzJjMC0yNi41LTIxLjUtNDgtNDgtNDhoLTQ4di03MS4xYzAtMzkuNiAzMS43LTcyLjUgNzEuMy03Mi45IDQwLS40IDcyLjcgMzIuMSA3Mi43IDcydjgwYzAgMTMuMyAxMC43IDI0IDI0IDI0aDMyYzEzLjMgMCAyNC0xMC43IDI0LTI0di04MEM1NzYgNjggNTA3LjUtLjMgNDIzLjUgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMjI0aC0yNHYtNzJDMzc2IDY4LjIgMzA3LjggMCAyMjQgMFM3MiA2OC4yIDcyIDE1MnY3Mkg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MTkyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYyNzJjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0xMDQgMEgxNTJ2LTcyYzAtMzkuNyAzMi4zLTcyIDcyLTcyczcyIDMyLjMgNzIgNzJ2NzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvbmdBcnJvd0FsdERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY4IDM0NS45NDFWNDRjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNTZjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MzAxLjk0MUg0MS45NDFjLTIxLjM4MiAwLTMyLjA5IDI1Ljg1MS0xNi45NzEgNDAuOTcxbDg2LjA1OSA4Ni4wNTljOS4zNzMgOS4zNzMgMjQuNTY5IDkuMzczIDMzLjk0MSAwbDg2LjA1OS04Ni4wNTljMTUuMTE5LTE1LjExOSA0LjQxMS00MC45NzEtMTYuOTcxLTQwLjk3MUgxNjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvbmdBcnJvd0FsdExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTM0LjA1OSAyOTZINDM2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTU2YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTM0LjA1OXYtNDYuMDU5YzAtMjEuMzgyLTI1Ljg1MS0zMi4wOS00MC45NzEtMTYuOTcxTDcuMDI5IDIzOS4wMjljLTkuMzczIDkuMzczLTkuMzczIDI0LjU2OSAwIDMzLjk0MWw4Ni4wNTkgODYuMDU5YzE1LjExOSAxNS4xMTkgNDAuOTcxIDQuNDExIDQwLjk3MS0xNi45NzFWMjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMb25nQXJyb3dBbHRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuOTQxIDIxNkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY1NmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDMwMS45NDF2NDYuMDU5YzAgMjEuMzgyIDI1Ljg1MSAzMi4wOSA0MC45NzEgMTYuOTcxbDg2LjA1OS04Ni4wNTljOS4zNzMtOS4zNzMgOS4zNzMtMjQuNTY5IDAtMzMuOTQxbC04Ni4wNTktODYuMDU5Yy0xNS4xMTktMTUuMTE5LTQwLjk3MS00LjQxMS00MC45NzEgMTYuOTcxVjIxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9uZ0Fycm93QWx0VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODggMTY2LjA1OVY0NjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg1NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyVjE2Ni4wNTloNDYuMDU5YzIxLjM4MiAwIDMyLjA5LTI1Ljg1MSAxNi45NzEtNDAuOTcxbC04Ni4wNTktODYuMDU5Yy05LjM3My05LjM3My0yNC41NjktOS4zNzMtMzMuOTQxIDBsLTg2LjA1OSA4Ni4wNTljLTE1LjExOSAxNS4xMTktNC40MTEgNDAuOTcxIDE2Ljk3MSA0MC45NzFIODh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvd1Zpc2lvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjkuMzQ0IDIzMS42MzFDNTEyLjk2IDEzNS45NDkgNDA3LjgxIDcyIDI4OCA3MmMtMjguNDY4IDAtNTYuMTAyIDMuNjE5LTgyLjQ1MSAxMC40MDlMMTUyLjc3OCAxMC4yNGMtNy42MDEtMTAuODU4LTIyLjU2NC0xMy41LTMzLjQyMy01LjlsLTEzLjExNCA5LjE3OGMtMTAuODYgNy42MDEtMTMuNTAyIDIyLjU2Ni01LjkgMzMuNDI2bDQzLjEzMSA1OC4zOTVDODkuNDQ5IDEzMS43MyA0MC4yMjggMTc0LjY4MyA2LjY4MiAyMzEuNTgxYy0uMDEuMDE3LS4wMjMuMDMzLS4wMzQuMDUtOC43NjUgMTQuODc1LTguOTY0IDMzLjUyOCAwIDQ4LjczOSAzOC41IDY1LjMzMiA5OS43NDIgMTE1Ljg2MiAxNzIuODU5IDE0MS4zNDlMNTUuMzE2IDI0NC4zMDJBMjcyLjE5NCAyNzIuMTk0IDAgMCAxIDgzLjYxIDIwOC4zOWwxMTkuNCAxNzAuNThoLjAxbDQwLjYzIDU4LjA0YTMzMC4wNTUgMzMwLjA1NSAwIDAgMCA3OC45NCAxLjE3bC0xODkuOTgtMjcxLjRhMjc3LjYyOCAyNzcuNjI4IDAgMCAxIDM4Ljc3Ny0yMS41NjNsMjUxLjgzNiAzNTYuNTQ0YzcuNjAxIDEwLjg1OCAyMi41NjQgMTMuNDk5IDMzLjQyMyA1LjlsMTMuMTE0LTkuMTc4YzEwLjg2LTcuNjAxIDEzLjUwMi0yMi41NjcgNS45LTMzLjQyNmwtNDMuMTItNTguMzc3LS4wMDctLjAwOWM1Ny4xNjEtMjcuOTc4IDEwNC44MzUtNzIuMDQgMTM2LjgxLTEyNi4zMDFhNDcuOTM4IDQ3LjkzOCAwIDAgMCAuMDAxLTQ4LjczOXpNMzkwLjAyNiAzNDUuOTRsLTE5LjA2Ni0yNy4yM2MyNC42ODItMzIuNTY3IDI3LjcxMS03Ni4zNTMgOC44LTExMS42OHYuMDNjMCAyMy42NS0xOS4xNyA0Mi44Mi00Mi44MiA0Mi44Mi0yMy44MjggMC00Mi44Mi0xOS4zNDktNDIuODItNDIuODIgMC0yMy42NSAxOS4xNy00Mi44MiA0Mi44Mi00Mi44MmguMDNjLTI0Ljc1LTEzLjI0OS01My41MjItMTUuNjQzLTc5LjUxLTcuNjhsLTE5LjA2OC0yNy4yMzdDMjUzLjc1OCAxMjMuMzA2IDI3MC40ODggMTIwIDI4OCAxMjBjNzUuMTYyIDAgMTM2IDYwLjgyNiAxMzYgMTM2IDAgMzQuNTA0LTEyLjgzMyA2NS45NzUtMzMuOTc0IDg5Ljk0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMdWdnYWdlQ2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMzIwaDMyVjk2aC0zMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxNjBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMnptMzUyLTMyVjEyOGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC0zMnYyMjRoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnptNDggOTZIMTI4VjE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE2QzcuMTYgMCAwIDcuMTYgMCAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0OHYzNjhjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoODIuOTRjLTEuNzkgNS4wMy0yLjk0IDEwLjM2LTIuOTQgMTYgMCAyNi41MSAyMS40OSA0OCA0OCA0OHM0OC0yMS40OSA0OC00OGMwLTUuNjQtMS4xNS0xMC45Ny0yLjk0LTE2aDE5Ny44OGMtMS43OSA1LjAzLTIuOTQgMTAuMzYtMi45NCAxNiAwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4czQ4LTIxLjQ5IDQ4LTQ4YzAtNS42NC0xLjE1LTEwLjk3LTIuOTQtMTZINjI0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNNDgwIDk2VjQ4YzAtMjYuNTEtMjEuNDktNDgtNDgtNDhoLTk2Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djI3MmgxOTJWOTZ6bS00OCAwaC05NlY0OGg5NnY0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTHVuZ3NWaXJ1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDQsMTUwLjY4VjE2QTE2LDE2LDAsMCwwLDMyOCwwSDMxMmExNiwxNiwwLDAsMC0xNiwxNlYxNTAuNjhhNDYuNDUsNDYuNDUsMCwwLDEsNDgsMFpNMTk1LjU0LDQ0NC40NmE0OC4wNiw0OC4wNiwwLDAsMSwwLTY3Ljg4bDguNTgtOC41OEgxOTJhNDgsNDgsMCwwLDEsMC05NmgxMi4xMmwtOC41OC04LjU3YTQ4LDQ4LDAsMCwxLDYwLjQ2LTc0VjE2MS43NUMyNTYsMTI1LjM4LDIyNC42Miw5NiwxODYsOTZjLTQ0LDAtNTgsMjguNS04MC4xMiw2My4xM2E4MTkuNTIsODE5LjUyLDAsMCwwLTEwMiwyMzFBMTEzLjE2LDExMy4xNiwwLDAsMCwwLDQxOS43NUMwLDQ4MSw2Mi41LDUyNS4yNiwxMjUuMjUsNTA4LjM4bDU5LjUtMTUuODdhOTguNTEsOTguNTEsMCwwLDAsNTIuNS0zNC43NSw0Ni40OSw0Ni40OSwwLDAsMS00MS43MS0xMy4zWm0yMjYuMjktMjIuNjNhMTYsMTYsMCwwLDAsMC0yMi42MmwtOC41OC04LjU4QzM5My4wOSwzNzAuNDcsNDA3LjM3LDMzNiw0MzUuODgsMzM2SDQ0OGExNiwxNiwwLDAsMCwwLTMySDQzNS44OGMtMjguNTEsMC00Mi43OS0zNC40Ny0yMi42My01NC42Mmw4LjU4LTguNThhMTYsMTYsMCwwLDAtMjIuNjMtMjIuNjNsLTguNTcsOC41OEMzNzAuNDcsMjQ2LjkxLDMzNiwyMzIuNjMsMzM2LDIwNC4xMlYxOTJhMTYsMTYsMCwwLDAtMzIsMHYxMi4xMmMwLDI4LjUxLTM0LjQ3LDQyLjc5LTU0LjYzLDIyLjYzbC04LjU3LTguNThhMTYsMTYsMCwwLDAtMjIuNjMsMjIuNjNsOC41OCw4LjU4YzIwLjE2LDIwLjE1LDUuODgsNTQuNjItMjIuNjMsNTQuNjJIMTkyYTE2LDE2LDAsMCwwLDAsMzJoMTIuMTJjMjguNTEsMCw0Mi43OSwzNC40NywyMi42Myw1NC42M2wtOC41OCw4LjU4YTE2LDE2LDAsMSwwLDIyLjYzLDIyLjYybDguNTctOC41N0MyNjkuNTMsMzkzLjEsMzA0LDQwNy4zOCwzMDQsNDM1Ljg4VjQ0OGExNiwxNiwwLDAsMCwzMiwwVjQzNS44OGMwLTI4LjUsMzQuNDctNDIuNzgsNTQuNjMtMjIuNjJsOC41Nyw4LjU3YTE2LDE2LDAsMCwwLDIyLjYzLDBaTTI4OCwzMDRhMTYsMTYsMCwxLDEsMTYtMTZBMTYsMTYsMCwwLDEsMjg4LDMwNFptNjQsNjRhMTYsMTYsMCwxLDEsMTYtMTZBMTYsMTYsMCwwLDEsMzUyLDM2OFptMjg0LjEyLDIyLjEzYTgxOS41Miw4MTkuNTIsMCwwLDAtMTAyLTIzMUM1MTIsMTI0LjUsNDk4LDk2LDQ1NCw5NmMtMzguNjIsMC03MCwyOS4zOC03MCw2NS43NXYyNy43MmE0OCw0OCwwLDAsMSw2MC40Niw3NEw0MzUuODgsMjcySDQ0OGE0OCw0OCwwLDAsMSwwLDk2SDQzNS44OGw4LjU4LDguNThhNDcuNyw0Ny43LDAsMCwxLTQxLjcxLDgxLjE4LDk4LjUxLDk4LjUxLDAsMCwwLDUyLjUsMzQuNzVsNTkuNSwxNS44N0M1NzcuNSw1MjUuMjYsNjQwLDQ4MSw2NDAsNDE5Ljc1QTExMy4xNiwxMTMuMTYsMCwwLDAsNjM2LjEyLDM5MC4xM1pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTHVuZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjM2LjExIDM5MC4xNUM2MTQuNDQgMzA4Ljg1IDU4MC4wNyAyMzEgNTM0LjEgMTU5LjEzIDUxMS45OCAxMjQuNTYgNDk4LjAzIDk2IDQ1NC4wNSA5NiA0MTUuMzYgOTYgMzg0IDEyNS40MiAzODQgMTYxLjcxdjYwLjExbC0zMi44OC0yMS45MmExNS45OTYgMTUuOTk2IDAgMCAxLTcuMTItMTMuMzFWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNzAuNTljMCA1LjM1LTIuNjcgMTAuMzQtNy4xMiAxMy4zMUwyNTYgMjIxLjgydi02MC4xMUMyNTYgMTI1LjQyIDIyNC42NCA5NiAxODUuOTUgOTZjLTQzLjk4IDAtNTcuOTMgMjguNTYtODAuMDUgNjMuMTNDNTkuOTMgMjMxIDI1LjU2IDMwOC44NSAzLjg5IDM5MC4xNSAxLjMgMzk5Ljg0IDAgNDA5Ljc5IDAgNDE5Ljc4YzAgNjEuMjMgNjIuNDggMTA1LjQ0IDEyNS4yNCA4OC42Mmw1OS41LTE1Ljk1YzQyLjE4LTExLjMgNzEuMjYtNDcuNDcgNzEuMjYtODguNjJ2LTg3LjQ5bC04NS44NCA1Ny4yM2E3Ljk5MiA3Ljk5MiAwIDAgMS0xMS4wOS0yLjIybC04Ljg4LTEzLjMxYTcuOTkyIDcuOTkyIDAgMCAxIDIuMjItMTEuMDlMMzIwIDIzNS4yM2wxNjcuNTkgMTExLjcyYTcuOTk0IDcuOTk0IDAgMCAxIDIuMjIgMTEuMDlsLTguODggMTMuMzFhNy45OTQgNy45OTQgMCAwIDEtMTEuMDkgMi4yMkwzODQgMzE2LjM0djg3LjQ5YzAgNDEuMTUgMjkuMDggNzcuMzEgNzEuMjYgODguNjJsNTkuNSAxNS45NUM1NzcuNTIgNTI1LjIyIDY0MCA0ODEuMDEgNjQwIDQxOS43OGMwLTkuOTktMS4zLTE5Ljk0LTMuODktMjkuNjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hZ2ljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA5NmwxNi0zMiAzMi0xNi0zMi0xNi0xNi0zMi0xNiAzMi0zMiAxNiAzMiAxNiAxNiAzMnpNODAgMTYwbDI2LjY2LTUzLjMzTDE2MCA4MGwtNTMuMzQtMjYuNjdMODAgMCA1My4zNCA1My4zMyAwIDgwbDUzLjM0IDI2LjY3TDgwIDE2MHptMzUyIDEyOGwtMjYuNjYgNTMuMzNMMzUyIDM2OGw1My4zNCAyNi42N0w0MzIgNDQ4bDI2LjY2LTUzLjMzTDUxMiAzNjhsLTUzLjM0LTI2LjY3TDQzMiAyODh6bTcwLjYyLTE5My43N0w0MTcuNzcgOS4zOEM0MTEuNTMgMy4xMiA0MDMuMzQgMCAzOTUuMTUgMGMtOC4xOSAwLTE2LjM4IDMuMTItMjIuNjMgOS4zOEw5LjM4IDM3Mi41MmMtMTIuNSAxMi41LTEyLjUgMzIuNzYgMCA0NS4yNWw4NC44NSA4NC44NWM2LjI1IDYuMjUgMTQuNDQgOS4zNyAyMi42MiA5LjM3IDguMTkgMCAxNi4zOC0zLjEyIDIyLjYzLTkuMzdsMzYzLjE0LTM2My4xNWMxMi41LTEyLjQ4IDEyLjUtMzIuNzUgMC00NS4yNHpNMzU5LjQ1IDIwMy40NmwtNTAuOTEtNTAuOTEgODYuNi04Ni42IDUwLjkxIDUwLjkxLTg2LjYgODYuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFnbmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2NC4wNyAxNDguMUgxMmExMiAxMiAwIDAgMS0xMi0xMnYtODBhMzYgMzYgMCAwIDEgMzYtMzZoMTA0YTM2IDM2IDAgMCAxIDM2IDM2djgwYTExLjg5IDExLjg5IDAgMCAxLTExLjkzIDEyem0zNDcuOTMtMTJWNTZhMzYgMzYgMCAwIDAtMzYtMzZIMzcyYTM2IDM2IDAgMCAwLTM2IDM2djgwYTEyIDEyIDAgMCAwIDEyIDEyaDE1MmExMS44OSAxMS44OSAwIDAgMCAxMi0xMS45em0tMTY0IDQ0YTEyIDEyIDAgMCAwLTEyIDEydjUyYzAgMTI4LjEtMTYwIDEyNy45LTE2MCAwdi01MmExMiAxMiAwIDAgMC0xMi0xMkgxMi4xYTEyIDEyIDAgMCAwLTEyIDEyLjFjLjEgMjEuNC42IDQwLjMgMCA1My4zIDAgMTUwLjYgMTM2LjE3IDI0Ni42IDI1Ni43NSAyNDYuNnMyNTUtOTYgMjU1LTI0Ni43Yy0uNi0xMi44LS4yLTMzIDAtNTMuMmExMiAxMiAwIDAgMC0xMi0xMi4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWlsQnVsayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgNDQ4Yy0yNS42IDAtNTEuMi0yMi40LTY0LTMyLTY0LTQ0LjgtODMuMi02MC44LTk2LTcwLjRWNDgwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMjU2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzQ1LjZjLTEyLjggOS42LTMyIDI1LjYtOTYgNzAuNC0xMi44IDkuNi0zOC40IDMyLTY0IDMyem0xMjgtMTkySDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjE2YzI1LjYgMTkuMiAyMi40IDE5LjIgMTE1LjIgODYuNCA5LjYgNi40IDI4LjggMjUuNiA0NC44IDI1LjZzMzUuMi0xOS4yIDQ0LjgtMjIuNGM5Mi44LTY3LjIgODkuNi02Ny4yIDExNS4yLTg2LjRWMjg4YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTI1Ni05NkgyMjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJoOTZjMzMuMjEgMCA2MC41OSAyNS40MiA2My43MSA1Ny44MmwuMjktLjIyVjQxNmgxOTJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYxOTJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptLTMyIDEyOGgtNjR2LTY0aDY0djY0em0tMzUyLTk2YzAtMzUuMjkgMjguNzEtNjQgNjQtNjRoMjI0VjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIOTZDNzguMzMgMCA2NCAxNC4zMyA2NCAzMnYxOTJoOTZ2LTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAxOTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDBjMzUuMzQ2IDAgNjQgMjguNjU0IDY0IDY0cy0yOC42NTQgNjQtNjQgNjQtNjQtMjguNjU0LTY0LTY0UzYwLjY1NCAwIDk2IDBtNDggMTQ0aC0xMS4zNmMtMjIuNzExIDEwLjQ0My00OS41OSAxMC44OTQtNzMuMjggMEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHYxMzZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDE2djEzNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoNjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjM1MmgxNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTkyYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcE1hcmtlZEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMGMtNjkuNTkgMC0xMjYgNTYuNDEtMTI2IDEyNiAwIDU2LjI2IDgyLjM1IDE1OC44IDExMy45IDE5Ni4wMiA2LjM5IDcuNTQgMTcuODIgNy41NCAyNC4yIDBDMzMxLjY1IDI4NC44IDQxNCAxODIuMjYgNDE0IDEyNiA0MTQgNTYuNDEgMzU3LjU5IDAgMjg4IDB6bTAgMTY4Yy0yMy4yIDAtNDItMTguOC00Mi00MnMxOC44LTQyIDQyLTQyIDQyIDE4LjggNDIgNDItMTguOCA0Mi00MiA0MnpNMjAuMTIgMjE1Ljk1QTMyLjAwNiAzMi4wMDYgMCAwIDAgMCAyNDUuNjZ2MjUwLjMyYzAgMTEuMzIgMTEuNDMgMTkuMDYgMjEuOTQgMTQuODZMMTYwIDQ0OFYyMTQuOTJjLTguODQtMTUuOTgtMTYuMDctMzEuNTQtMjEuMjUtNDYuNDJMMjAuMTIgMjE1Ljk1ek0yODggMzU5LjY3Yy0xNC4wNyAwLTI3LjM4LTYuMTgtMzYuNTEtMTYuOTYtMTkuNjYtMjMuMi00MC41Ny00OS42Mi01OS40OS03Ni43MnYxODJsMTkyIDY0VjI2NmMtMTguOTIgMjcuMDktMzkuODIgNTMuNTItNTkuNDkgNzYuNzItOS4xMyAxMC43Ny0yMi40NCAxNi45NS0zNi41MSAxNi45NXptMjY2LjA2LTE5OC41MUw0MTYgMjI0djI4OGwxMzkuODgtNTUuOTVBMzEuOTk2IDMxLjk5NiAwIDAgMCA1NzYgNDI2LjM0VjE3Ni4wMmMwLTExLjMyLTExLjQzLTE5LjA2LTIxLjk0LTE0Ljg2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXBNYXJrZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBjLTY5LjU5IDAtMTI2IDU2LjQxLTEyNiAxMjYgMCA1Ni4yNiA4Mi4zNSAxNTguOCAxMTMuOSAxOTYuMDIgNi4zOSA3LjU0IDE3LjgyIDcuNTQgMjQuMiAwQzMzMS42NSAyODQuOCA0MTQgMTgyLjI2IDQxNCAxMjYgNDE0IDU2LjQxIDM1Ny41OSAwIDI4OCAwek0yMC4xMiAyMTUuOTVBMzIuMDA2IDMyLjAwNiAwIDAgMCAwIDI0NS42NnYyNTAuMzJjMCAxMS4zMiAxMS40MyAxOS4wNiAyMS45NCAxNC44NkwxNjAgNDQ4VjIxNC45MmMtOC44NC0xNS45OC0xNi4wNy0zMS41NC0yMS4yNS00Ni40MkwyMC4xMiAyMTUuOTV6TTI4OCAzNTkuNjdjLTE0LjA3IDAtMjcuMzgtNi4xOC0zNi41MS0xNi45Ni0xOS42Ni0yMy4yLTQwLjU3LTQ5LjYyLTU5LjQ5LTc2LjcydjE4MmwxOTIgNjRWMjY2Yy0xOC45MiAyNy4wOS0zOS44MiA1My41Mi01OS40OSA3Ni43Mi05LjEzIDEwLjc3LTIyLjQ0IDE2Ljk1LTM2LjUxIDE2Ljk1em0yNjYuMDYtMTk4LjUxTDQxNiAyMjR2Mjg4bDEzOS44OC01NS45NUEzMS45OTYgMzEuOTk2IDAgMCAwIDU3NiA0MjYuMzRWMTc2LjAyYzAtMTEuMzItMTEuNDMtMTkuMDYtMjEuOTQtMTQuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcE1hcmtlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzIuMjY4IDUwMS42N0MyNi45NyAyOTEuMDMxIDAgMjY5LjQxMyAwIDE5MiAwIDg1Ljk2MSA4NS45NjEgMCAxOTIgMHMxOTIgODUuOTYxIDE5MiAxOTJjMCA3Ny40MTMtMjYuOTcgOTkuMDMxLTE3Mi4yNjggMzA5LjY3LTkuNTM1IDEzLjc3NC0yOS45MyAxMy43NzMtMzkuNDY0IDB6TTE5MiAyNzJjNDQuMTgzIDAgODAtMzUuODE3IDgwLTgwcy0zNS44MTctODAtODAtODAtODAgMzUuODE3LTgwIDgwIDM1LjgxNyA4MCA4MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFwTWFya2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Mi4yNjggNTAxLjY3QzI2Ljk3IDI5MS4wMzEgMCAyNjkuNDEzIDAgMTkyIDAgODUuOTYxIDg1Ljk2MSAwIDE5MiAwczE5MiA4NS45NjEgMTkyIDE5MmMwIDc3LjQxMy0yNi45NyA5OS4wMzEtMTcyLjI2OCAzMDkuNjctOS41MzUgMTMuNzc0LTI5LjkzIDEzLjc3My0zOS40NjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFwUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyODggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAzMTYuOTR2MTU2LjY5bDIyLjAyIDMzLjAyYzQuNzUgNy4xMiAxNS4yMiA3LjEyIDE5Ljk3IDBMMTc2IDQ3My42M1YzMTYuOTRjLTEwLjM5IDEuOTItMjEuMDYgMy4wNi0zMiAzLjA2cy0yMS42MS0xLjE0LTMyLTMuMDZ6TTE0NCAwQzY0LjQ3IDAgMCA2NC40NyAwIDE0NHM2NC40NyAxNDQgMTQ0IDE0NCAxNDQtNjQuNDcgMTQ0LTE0NFMyMjMuNTMgMCAxNDQgMHptMCA3NmMtMzcuNSAwLTY4IDMwLjUtNjggNjggMCA2LjYyLTUuMzggMTItMTIgMTJzLTEyLTUuMzgtMTItMTJjMC01MC43MyA0MS4yOC05MiA5Mi05MiA2LjYyIDAgMTIgNS4zOCAxMiAxMnMtNS4zOCAxMi0xMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFwU2lnbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA3LjMxIDg0LjY5TDQ2NCA0MS4zN2MtNi02LTE0LjE0LTkuMzctMjIuNjMtOS4zN0gyODhWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNkg1NmMtMTMuMjUgMC0yNCAxMC43NS0yNCAyNHY4MGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDM4NS4zN2M4LjQ5IDAgMTYuNjItMy4zNyAyMi42My05LjM3bDQzLjMxLTQzLjMxYzYuMjUtNi4yNiA2LjI1LTE2LjM4IDAtMjIuNjN6TTIyNCA0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZWMzg0aC02NHYxMTJ6bTIzMi0yNzJIMjg4di0zMmgtNjR2MzJINzAuNjNjLTguNDkgMC0xNi42MiAzLjM3LTIyLjYzIDkuMzdMNC42OSAyNzYuNjljLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNMNDggMzQyLjYzYzYgNiAxNC4xNCA5LjM3IDIyLjYzIDkuMzdINDU2YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTgwYzAtMTMuMjUtMTAuNzUtMjQtMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDExNy42NnYzNDYuMzJjMCAxMS4zMiAxMS40MyAxOS4wNiAyMS45NCAxNC44NkwxNjAgNDE2VjMyTDIwLjEyIDg3Ljk1QTMyLjAwNiAzMi4wMDYgMCAwIDAgMCAxMTcuNjZ6TTE5MiA0MTZsMTkyIDY0Vjk2TDE5MiAzMnYzODR6TTU1NC4wNiAzMy4xNkw0MTYgOTZ2Mzg0bDEzOS44OC01NS45NUEzMS45OTYgMzEuOTk2IDAgMCAwIDU3NiAzOTQuMzRWNDguMDJjMC0xMS4zMi0xMS40My0xOS4wNi0yMS45NC0xNC44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFya2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkzLjk1IDI5MC4wM0EzMjcuMDM4IDMyNy4wMzggMCAwIDAgLjE3IDQ4NS4xMWwtLjAzLjIzYy0xLjcgMTUuMjggMTEuMjEgMjguMiAyNi40OSAyNi41MWEzMjcuMDIgMzI3LjAyIDAgMCAwIDE5NS4zNC05My44bDc1LjQtNzUuNC0xMjguMDItMTI4LjAyLTc1LjQgNzUuNHpNNDg1LjQ5IDI2LjUxYy0zNS4zNS0zNS4zNS05Mi42Ny0zNS4zNS0xMjguMDIgMGwtMjEuNzYgMjEuNzYtMzYuNTYtMzYuNTVjLTE1LjYyLTE1LjYyLTQwLjk1LTE1LjYyLTU2LjU2IDBMMTM4LjQ3IDExNS44NGMtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wyMi42MiAyMi42MmM2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDg3LjE1LTg3LjE1IDE5LjU5IDE5LjU5TDE5MS45OCAxOTIgMzIwIDMyMC4wMmwxNjUuNDktMTY1LjQ5YzM1LjM1LTM1LjM1IDM1LjM1LTkyLjY2IDAtMTI4LjAyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJzRG91YmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0MCAwaC03OWMtMTAuNyAwLTE2IDEyLjktOC41IDIwLjVsMTYuOSAxNi45LTQ4LjcgNDguN0MxOTguNSA3Mi4xIDE3Mi4yIDY0IDE0NCA2NCA2NC41IDY0IDAgMTI4LjUgMCAyMDhzNjQuNSAxNDQgMTQ0IDE0NCAxNDQtNjQuNSAxNDQtMTQ0YzAtMjguMi04LjEtNTQuNS0yMi4xLTc2LjdsNDguNy00OC43IDE2LjkgMTYuOWMyLjQgMi40IDUuNSAzLjUgOC40IDMuNSA2LjIgMCAxMi4xLTQuOCAxMi4xLTEyVjEyYzAtNi42LTUuNC0xMi0xMi0xMnpNMTQ0IDI4OGMtNDQuMSAwLTgwLTM1LjktODAtODBzMzUuOS04MCA4MC04MCA4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODB6bTM1Ni0xMjguMWgtNzljLTEwLjcgMC0xNiAxMi45LTguNSAyMC41bDE2LjkgMTYuOS00OC43IDQ4LjdjLTE4LjItMTEuNC0zOS0xOC45LTYxLjUtMjEuMy0yLjEgMjEuOC04LjIgNDMuMy0xOC40IDYzLjMgMS4xIDAgMi4yLS4xIDMuMi0uMSA0NC4xIDAgODAgMzUuOSA4MCA4MHMtMzUuOSA4MC04MCA4MC04MC0zNS45LTgwLTgwYzAtMS4xIDAtMi4yLjEtMy4yLTIwIDEwLjItNDEuNSAxNi40LTYzLjMgMTguNEMxNjguNCA0NTUuNiAyMjkuNiA1MTIgMzA0IDUxMmM3OS41IDAgMTQ0LTY0LjUgMTQ0LTE0NCAwLTI4LjItOC4xLTU0LjUtMjIuMS03Ni43bDQ4LjctNDguNyAxNi45IDE2LjljMi40IDIuNCA1LjQgMy41IDguNCAzLjUgNi4yIDAgMTIuMS00LjggMTIuMS0xMnYtNzljMC02LjctNS40LTEyLjEtMTItMTIuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFyc1N0cm9rZUggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDc2LjIgMjQ3LjVsLTU1LjktNTUuOWMtNy42LTcuNi0yMC41LTIuMi0yMC41IDguNVYyMjRIMzc2di0yMGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2MjBoLTI3LjZjLTUuOC0yNS42LTE4LjctNDkuOS0zOC42LTY5LjhDMTg5LjYgOTggOTguNCA5OCA0Mi4yIDE1NC4yYy01Ni4yIDU2LjItNTYuMiAxNDcuNCAwIDIwMy42IDU2LjIgNTYuMiAxNDcuNCA1Ni4yIDIwMy42IDAgMTkuOS0xOS45IDMyLjgtNDQuMiAzOC42LTY5LjhIMzEydjIwYzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTIwaDIzLjl2MjMuOWMwIDEwLjcgMTIuOSAxNiAyMC41IDguNWw1NS45LTU1LjljNC42LTQuNyA0LjYtMTIuMy0uMS0xN3ptLTI3NS42IDY1LjFjLTMxLjIgMzEuMi04MS45IDMxLjItMTEzLjEgMC0zMS4yLTMxLjItMzEuMi04MS45IDAtMTEzLjEgMzEuMi0zMS4yIDgxLjktMzEuMiAxMTMuMSAwIDMxLjIgMzEuMSAzMS4yIDgxLjkgMCAxMTMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFyc1N0cm9rZVYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI4OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ1LjggMjM0LjJjLTE5LjktMTkuOS00NC4yLTMyLjgtNjkuOC0zOC42di0yNS40aDIwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0yMFY4MS40aDIzLjljMTAuNyAwIDE2LTEyLjkgOC41LTIwLjVMMTUyLjUgNS4xYy00LjctNC43LTEyLjMtNC43LTE3IDBMNzkuNiA2MWMtNy42IDcuNi0yLjIgMjAuNSA4LjUgMjAuNUgxMTJ2MjQuN0g5MmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgyMHYyNS40Yy0yNS42IDUuOC00OS45IDE4LjctNjkuOCAzOC42LTU2LjIgNTYuMi01Ni4yIDE0Ny40IDAgMjAzLjYgNTYuMiA1Ni4yIDE0Ny40IDU2LjIgMjAzLjYgMCA1Ni4zLTU2LjIgNTYuMy0xNDcuNCAwLTIwMy42em0tNDUuMiAxNTguNGMtMzEuMiAzMS4yLTgxLjkgMzEuMi0xMTMuMSAwLTMxLjItMzEuMi0zMS4yLTgxLjkgMC0xMTMuMSAzMS4yLTMxLjIgODEuOS0zMS4yIDExMy4xIDAgMzEuMiAzMS4xIDMxLjIgODEuOSAwIDExMy4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJzU3Ryb2tlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3MiA2NGgtNzljLTEwLjcgMC0xNiAxMi45LTguNSAyMC41bDE2LjkgMTYuOS0xNy41IDE3LjUtMTQuMS0xNC4xYy00LjctNC43LTEyLjMtNC43LTE3IDBMMjI0LjUgMTMzYy00LjcgNC43LTQuNyAxMi4zIDAgMTdsMTQuMSAxNC4xLTE4IDE4Yy0yMi4yLTE0LTQ4LjUtMjIuMS03Ni43LTIyLjFDNjQuNSAxNjAgMCAyMjQuNSAwIDMwNHM2NC41IDE0NCAxNDQgMTQ0IDE0NC02NC41IDE0NC0xNDRjMC0yOC4yLTguMS01NC41LTIyLjEtNzYuN2wxOC0xOCAxNC4xIDE0LjFjNC43IDQuNyAxMi4zIDQuNyAxNyAwbDI4LjMtMjguM2M0LjctNC43IDQuNy0xMi4zIDAtMTdMMzI5LjIgMTY0bDE3LjUtMTcuNSAxNi45IDE2LjljNy42IDcuNiAyMC41IDIuMiAyMC41LTguNVY3NmMtLjEtNi42LTUuNS0xMi0xMi4xLTEyek0xNDQgMzg0Yy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzIgNjRoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktODAuNyA4MC43Yy0yMi4yLTE0LTQ4LjUtMjIuMS03Ni43LTIyLjFDNjQuNSAxNjAgMCAyMjQuNSAwIDMwNHM2NC41IDE0NCAxNDQgMTQ0IDE0NC02NC41IDE0NC0xNDRjMC0yOC4yLTguMS01NC41LTIyLjEtNzYuN2w4MC43LTgwLjcgMTYuOSAxNi45YzcuNiA3LjYgMjAuNSAyLjIgMjAuNS04LjVWNzZjMC02LjYtNS40LTEyLTEyLTEyek0xNDQgMzg0Yy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAuNjcgNjRjLTQ0Mi42IDAtMzU3LjU3IDM4NC0xNTguNDYgMzg0IDM5LjkgMCA3Ny40Ny0yMC42OSAxMDEuNDItNTUuODZsMjUuNzMtMzcuNzljMTUuNjYtMjIuOTkgNDYuOTctMjIuOTkgNjIuNjMgMGwyNS43MyAzNy43OUM0MDEuNjYgNDI3LjMxIDQzOS4yMyA0NDggNDc5LjEzIDQ0OGMxODkuODYgMCAyOTAuNjMtMzg0LTE1OC40Ni0zODR6TTE4NCAzMDguMzZjLTQxLjA2IDAtNjcuNzYtMjUuNjYtODAuMDgtNDEuMDUtNS4yMy02LjUzLTUuMjMtMTYuMDkgMC0yMi42MyAxMi4zMi0xNS40IDM5LjAxLTQxLjA1IDgwLjA4LTQxLjA1czY3Ljc2IDI1LjY2IDgwLjA4IDQxLjA1YzUuMjMgNi41MyA1LjIzIDE2LjA5IDAgMjIuNjMtMTIuMzIgMTUuNC0zOS4wMiA0MS4wNS04MC4wOCA0MS4wNXptMjcyIDBjLTQxLjA2IDAtNjcuNzYtMjUuNjYtODAuMDgtNDEuMDUtNS4yMy02LjUzLTUuMjMtMTYuMDkgMC0yMi42MyAxMi4zMi0xNS40IDM5LjAxLTQxLjA1IDgwLjA4LTQxLjA1czY3Ljc2IDI1LjY2IDgwLjA4IDQxLjA1YzUuMjMgNi41MyA1LjIzIDE2LjA5IDAgMjIuNjMtMTIuMzIgMTUuNC0zOS4wMiA0MS4wNS04MC4wOCA0MS4wNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVkYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIzLjc1IDEzMC43NUwxNTQuNjIgMTUuNTRBMzEuOTk3IDMxLjk5NyAwIDAgMCAxMjcuMTggMEgxNi4wM0MzLjA4IDAtNC41IDE0LjU3IDIuOTIgMjUuMThsMTExLjI3IDE1OC45NmMyOS43Mi0yNy43NyA2Ny41Mi00Ni44MyAxMDkuNTYtNTMuMzl6TTQ5NS45NyAwSDM4NC44MmMtMTEuMjQgMC0yMS42NiA1LjktMjcuNDQgMTUuNTRsLTY5LjEzIDExNS4yMWM0Mi4wNCA2LjU2IDc5Ljg0IDI1LjYyIDEwOS41NiA1My4zOEw1MDkuMDggMjUuMThDNTE2LjUgMTQuNTcgNTA4LjkyIDAgNDk1Ljk3IDB6TTI1NiAxNjBjLTk3LjIgMC0xNzYgNzguOC0xNzYgMTc2czc4LjggMTc2IDE3NiAxNzYgMTc2LTc4LjggMTc2LTE3Ni03OC44LTE3Ni0xNzYtMTc2em05Mi41MiAxNTcuMjZsLTM3LjkzIDM2Ljk2IDguOTcgNTIuMjJjMS42IDkuMzYtOC4yNiAxNi41MS0xNi42NSAxMi4wOUwyNTYgMzkzLjg4bC00Ni45IDI0LjY1Yy04LjQgNC40NS0xOC4yNS0yLjc0LTE2LjY1LTEyLjA5bDguOTctNTIuMjItMzcuOTMtMzYuOTZjLTYuODItNi42NC0zLjA1LTE4LjIzIDYuMzUtMTkuNTlsNTIuNDMtNy42NCAyMy40My00Ny41MmMyLjExLTQuMjggNi4xOS02LjM5IDEwLjI4LTYuMzkgNC4xMSAwIDguMjIgMi4xNCAxMC4zMyA2LjM5bDIzLjQzIDQ3LjUyIDUyLjQzIDcuNjRjOS40IDEuMzYgMTMuMTcgMTIuOTUgNi4zNSAxOS41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVka2l0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDQ4MGgzMjBWMTI4aC0zMlY4MGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4SDE3NmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY0OEg5NnYzNTJ6bTk2LTM4NGgxMjh2MzJIMTkyVjk2em0zMjAgODB2MjU2YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhoLTE2VjEyOGgxNmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4ek02NCA0ODBINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWMTc2YzAtMjYuNTEgMjEuNDktNDggNDgtNDhoMTZ2MzUyem0yODgtMjA4djMyYzAgOC44MzctNy4xNjMgMTYtMTYgMTZoLTQ4djQ4YzAgOC44MzctNy4xNjMgMTYtMTYgMTZoLTMyYy04LjgzNyAwLTE2LTcuMTYzLTE2LTE2di00OGgtNDhjLTguODM3IDAtMTYtNy4xNjMtMTYtMTZ2LTMyYzAtOC44MzcgNy4xNjMtMTYgMTYtMTZoNDh2LTQ4YzAtOC44MzcgNy4xNjMtMTYgMTYtMTZoMzJjOC44MzcgMCAxNiA3LjE2MyAxNiAxNnY0OGg0OGM4LjgzNyAwIDE2IDcuMTYzIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWhCbGFuayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0tODAgMjMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTYwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWhSb2xsaW5nRXllcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4ek04OCAyMjRjMC0yNC4zIDEzLjctNDUuMiAzMy42LTU2LS43IDIuNi0xLjYgNS4yLTEuNiA4IDAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC0yLjgtLjktNS40LTEuNi04IDE5LjkgMTAuOCAzMy42IDMxLjcgMzMuNiA1NiAwIDM1LjMtMjguNyA2NC02NCA2NHMtNjQtMjguNy02NC02NHptMjI0IDE3NkgxODRjLTIxLjIgMC0yMS4yLTMyIDAtMzJoMTI4YzIxLjIgMCAyMS4yIDMyIDAgMzJ6bTMyLTExMmMtMzUuMyAwLTY0LTI4LjctNjQtNjQgMC0yNC4zIDEzLjctNDUuMiAzMy42LTU2LS43IDIuNi0xLjYgNS4yLTEuNiA4IDAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC0yLjgtLjktNS40LTEuNi04IDE5LjkgMTAuOCAzMy42IDMxLjcgMzMuNiA1NiAwIDM1LjMtMjguNyA2NC02NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bS04MCAxNjhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem0xNzYgMTkySDE1MmMtMjEuMiAwLTIxLjItMzIgMC0zMmgxOTJjMjEuMiAwIDIxLjIgMzIgMCAzMnptLTE2LTEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lbW9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMTMwLjk0Vjk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgNjQgMCA3OC4zMyAwIDk2djM0Ljk0YzE4LjYgNi42MSAzMiAyNC4xOSAzMiA0NS4wNnMtMTMuNCAzOC40NS0zMiA0NS4wNlYzMjBoNjQwdi05OC45NGMtMTguNi02LjYxLTMyLTI0LjE5LTMyLTQ1LjA2czEzLjQtMzguNDUgMzItNDUuMDZ6TTIyNCAyNTZoLTY0VjEyOGg2NHYxMjh6bTEyOCAwaC02NFYxMjhoNjR2MTI4em0xMjggMGgtNjRWMTI4aDY0djEyOHpNMCA0NDhoNjR2LTI2LjY3YzAtOC44NCA3LjE2LTE2IDE2LTE2czE2IDcuMTYgMTYgMTZWNDQ4aDEyOHYtMjYuNjdjMC04Ljg0IDcuMTYtMTYgMTYtMTZzMTYgNy4xNiAxNiAxNlY0NDhoMTI4di0yNi42N2MwLTguODQgNy4xNi0xNiAxNi0xNnMxNiA3LjE2IDE2IDE2VjQ0OGgxMjh2LTI2LjY3YzAtOC44NCA3LjE2LTE2IDE2LTE2czE2IDcuMTYgMTYgMTZWNDQ4aDY0di05Nkgwdjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZW5vcmFoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAxMjhoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNDRoNjRWMTQ0YzAtOC44NC03LjE2LTE2LTE2LTE2em05NiAwaC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTQ0aDY0VjE0NGMwLTguODQtNy4xNi0xNi0xNi0xNnptMTkyIDBoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNDRoNjRWMTQ0YzAtOC44NC03LjE2LTE2LTE2LTE2em05NiAwaC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTQ0aDY0VjE0NGMwLTguODQtNy4xNi0xNi0xNi0xNnptODAtMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlM2MDggMCA2MDggMHMtMzIgNDYuMzMtMzIgNjQgMTQuMzMgMzIgMzIgMzJ6bS05NiAwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJTNTEyIDAgNTEyIDBzLTMyIDQ2LjMzLTMyIDY0IDE0LjMzIDMyIDMyIDMyem0tOTYgMGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyUzQxNiAwIDQxNiAwcy0zMiA0Ni4zMy0zMiA2NCAxNC4zMyAzMiAzMiAzMnptLTk2IDBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlMzMjAgMCAzMjAgMHMtMzIgNDYuMzMtMzIgNjQgMTQuMzMgMzIgMzIgMzJ6bS05NiAwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJTMjI0IDAgMjI0IDBzLTMyIDQ2LjMzLTMyIDY0IDE0LjMzIDMyIDMyIDMyem0tOTYgMGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyUzEyOCAwIDEyOCAwIDk2IDQ2LjMzIDk2IDY0czE0LjMzIDMyIDMyIDMyem0tOTYgMGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyUzMyIDAgMzIgMCAwIDQ2LjMzIDAgNjRzMTQuMzMgMzIgMzIgMzJ6bTU0NCAxOTJjMCAxNy42Ny0xNC4zMyAzMi0zMiAzMkgzNTJWMTQ0YzAtOC44NC03LjE2LTE2LTE2LTE2aC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTc2SDk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyVjE0NGMwLTguODQtNy4xNi0xNi0xNi0xNkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTQ0YzAgNTMuMDIgNDIuOTggOTYgOTYgOTZoMTkydjY0SDExMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDE2YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNkgzNTJ2LTY0aDE5MmM1My4wMiAwIDk2LTQyLjk4IDk2LTk2VjE0NGMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djE0NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVyY3VyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjg4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMjA4YzAtNDQuMi0xOS45LTgzLjctNTEuMi0xMTAuMSAyLjUtMS44IDQuOS0zLjggNy4yLTUuOCAyNC43LTIxLjIgMzkuOC00OC44IDQzLjItNzguOC45LTcuMS00LjctMTMuMy0xMS45LTEzLjNoLTQwLjVDMjI5IDAgMjI0LjEgNC4xIDIyMyA5LjhjLTIuNCAxMi41LTkuNiAyNC4zLTIwLjcgMzMuOEMxODcgNTYuOCAxNjYuMyA2NCAxNDQgNjRzLTQzLTcuMi01OC40LTIwLjRDNzQuNSAzNC4xIDY3LjQgMjIuMyA2NC45IDkuOCA2My44IDQuMSA1OC45IDAgNTMuMiAwSDEyLjdDNS41IDAtLjEgNi4yLjggMTMuMyA0LjIgNDMuNCAxOS4yIDcxIDQ0IDkyLjJjMi4zIDIgNC43IDMuOSA3LjIgNS44QzE5LjkgMTI0LjMgMCAxNjMuOCAwIDIwOGMwIDY4LjUgNDcuOSAxMjUuOSAxMTIgMTQwLjRWNDAwSDc2Yy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDM2djM2YzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTM2aDM2YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0zNnYtNTEuNmM2NC4xLTE0LjUgMTEyLTcxLjkgMTEyLTE0MC40em0tMjI0IDBjMC00NC4xIDM1LjktODAgODAtODBzODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwLTgwLTM1LjktODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1ldGVvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTEuMzI4LDIwLjgwMjdjLTExLjYwNzU5LDM4LjcwMjY0LTM0LjMwNzI0LDExMS43MDE3My02MS4zMDMxMSwxODcuNzAwNzcsNi45OTg5MywyLjA5MzcyLDEzLjQwNDIsNCwxOC42MDY1Myw1LjU5MzY4YTE2LjA2MTU4LDE2LjA2MTU4LDAsMCwxLDkuNDk4NTQsMjIuOTA2Yy0yMi4xMDYsNDIuMjk2MzUtODIuNjkwNDcsMTUyLjc5NS0xNDIuNDc4MTksMjE0LjQwMzU2LS45OTk4NCwxLjA5MzczLTEuOTk5NjksMi41LTIuOTk5NTQsMy40OTk5NUExOTQuODMwNDYsMTk0LjgzMDQ2LDAsMSwxLDU3LjA4NSwxNzkuNDEwMDljLjk5OTg1LTEsMi40MDU4OC0yLDMuNDk5NDctMyw2MS41OTk5NC01OS45MDU0OSwxNzEuOTczNjctMTIwLjQwNDczLDIxNC4zNzM0My0xNDIuNDk4MmExNi4wNTgsMTYuMDU4LDAsMCwxLDIyLjkwMjc0LDkuNDk5ODhjMS41OTM1MSw1LjA5MzY4LDMuNDk5NDcsMTEuNTkzNiw1LjU5MjksMTguNTkzNTFDMzc5LjM0ODE4LDM1LjAwNTY1LDQ1Mi40MzA3NCwxMi4zMDI4MSw0OTEuMTI3OTQuNzA5MjFBMTYuMTgzMjUsMTYuMTgzMjUsMCwwLDEsNTExLjMyOCwyMC44MDI3Wk0zMTkuOTUxLDMyMC4wMDIwN0ExMjcuOTgwNDEsMTI3Ljk4MDQxLDAsMSwwLDE5MS45NzA2MSw0NDguMDAwNDYsMTI3Ljk3NTczLDEyNy45NzU3MywwLDAsMCwzMTkuOTUxLDMyMC4wMDIwN1ptLTEyNy45ODA0MS0zMS45OTk2YTMxLjk5NTEsMzEuOTk1MSwwLDEsMS0zMS45OTUxLTMxLjk5OTZBMzEuOTU5LDMxLjk1OSwwLDAsMSwxOTEuOTcwNjEsMjg4LjAwMjQ3Wm0zMS45OTUxLDc5Ljk5OWExNS45OTc1NSwxNS45OTc1NSwwLDEsMS0xNS45OTc1NS0xNS45OTk4QTE2LjA0OTc1LDE2LjA0OTc1LDAsMCwxLDIyMy45NjU3MSwzNjguMDAxNDdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvY2hpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgNDh2NDE2YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhIMTQ0Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjQ4YzAtMjYuNTEgMjEuNDktNDggNDgtNDhoMjI0YzI2LjUxIDAgNDggMjEuNDkgNDggNDh6bTk2IDU4djEyYTYgNiAwIDAgMS02IDZoLTE4djZhNiA2IDAgMCAxLTYgNmgtNDJWODhoNDJhNiA2IDAgMCAxIDYgNnY2aDE4YTYgNiAwIDAgMSA2IDZ6bTAgOTZ2MTJhNiA2IDAgMCAxLTYgNmgtMTh2NmE2IDYgMCAwIDEtNiA2aC00MnYtNDhoNDJhNiA2IDAgMCAxIDYgNnY2aDE4YTYgNiAwIDAgMSA2IDZ6bTAgOTZ2MTJhNiA2IDAgMCAxLTYgNmgtMTh2NmE2IDYgMCAwIDEtNiA2aC00MnYtNDhoNDJhNiA2IDAgMCAxIDYgNnY2aDE4YTYgNiAwIDAgMSA2IDZ6bTAgOTZ2MTJhNiA2IDAgMCAxLTYgNmgtMTh2NmE2IDYgMCAwIDEtNiA2aC00MnYtNDhoNDJhNiA2IDAgMCAxIDYgNnY2aDE4YTYgNiAwIDAgMSA2IDZ6TTMwIDM3Nmg0MnY0OEgzMGE2IDYgMCAwIDEtNi02di02SDZhNiA2IDAgMCAxLTYtNnYtMTJhNiA2IDAgMCAxIDYtNmgxOHYtNmE2IDYgMCAwIDEgNi02em0wLTk2aDQydjQ4SDMwYTYgNiAwIDAgMS02LTZ2LTZINmE2IDYgMCAwIDEtNi02di0xMmE2IDYgMCAwIDEgNi02aDE4di02YTYgNiAwIDAgMSA2LTZ6bTAtOTZoNDJ2NDhIMzBhNiA2IDAgMCAxLTYtNnYtNkg2YTYgNiAwIDAgMS02LTZ2LTEyYTYgNiAwIDAgMSA2LTZoMTh2LTZhNiA2IDAgMCAxIDYtNnptMC05Nmg0MnY0OEgzMGE2IDYgMCAwIDEtNi02di02SDZhNiA2IDAgMCAxLTYtNnYtMTJhNiA2IDAgMCAxIDYtNmgxOHYtNmE2IDYgMCAwIDEgNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWNyb3Bob25lQWx0U2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjMzLjgyIDQ1OC4xTDQ3Ni4yNiAzMzYuMzNDNDg4Ljc0IDMxMi4yMSA0OTYgMjg0Ljk4IDQ5NiAyNTZ2LTQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhjMCAxNy45Mi0zLjk2IDM0LjgtMTAuNzIgNTAuMmwtMjYuNTUtMjAuNTJjMy4xLTkuNCA1LjI4LTE5LjIyIDUuMjgtMjkuNjdoLTQzLjY3bC00MS40LTMySDQxNnYtMzJoLTg1LjMzYy01Ljg5IDAtMTAuNjctMy41OC0xMC42Ny04di0xNmMwLTQuNDIgNC43OC04IDEwLjY3LThINDE2di0zMmgtODUuMzNjLTUuODkgMC0xMC42Ny0zLjU4LTEwLjY3LTh2LTE2YzAtNC40MiA0Ljc4LTggMTAuNjctOEg0MTZjMC01My4wMi00Mi45OC05Ni05Ni05NnMtOTYgNDIuOTgtOTYgOTZ2NDUuMzZMNDUuNDcgMy4zN0MzOC40OS0yLjA1IDI4LjQzLS44IDIzLjAxIDYuMThMMy4zNyAzMS40NUMtMi4wNSAzOC40Mi0uOCA0OC40NyA2LjE4IDUzLjlsNTg4LjM2IDQ1NC43M2M2Ljk4IDUuNDMgMTcuMDMgNC4xNyAyMi40Ni0yLjgxbDE5LjY0LTI1LjI3YzUuNDEtNi45NyA0LjE2LTE3LjAyLTIuODItMjIuNDV6TTQwMCA0NjRoLTU2di0zMy43OGMxMS43MS0xLjYyIDIzLjEtNC4yOCAzMy45Ni04LjA4bC01MC40LTM4Ljk2Yy02LjcxLjQtMTMuNDEuODctMjAuMzUuMi01NS44NS01LjQ1LTk4Ljc0LTQ4LjYzLTExMS4xOC0xMDEuODVMMTQ0IDI0MS4zMXY2Ljg1YzAgODkuNjQgNjMuOTcgMTY5LjU1IDE1MiAxODEuNjlWNDY0aC01NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTYwYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWljcm9waG9uZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzUyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgMTkyaC0xNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhjMCA3NC44LTY0LjQ5IDEzNC44Mi0xNDAuNzkgMTI3LjM4Qzk2LjcxIDM3Ni44OSA0OCAzMTcuMTEgNDggMjUwLjNWMjA4YzAtOC44NC03LjE2LTE2LTE2LTE2SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0MC4xNmMwIDg5LjY0IDYzLjk3IDE2OS41NSAxNTIgMTgxLjY5VjQ2NEg5NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTYwYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTguODQtNy4xNi0xNi0xNi0xNmgtNTZ2LTMzLjc3QzI4NS43MSA0MTguNDcgMzUyIDM0NC45IDM1MiAyNTZ2LTQ4YzAtOC44NC03LjE2LTE2LTE2LTE2ek0xNzYgMzUyYzUzLjAyIDAgOTYtNDIuOTggOTYtOTZoLTg1LjMzYy01Ljg5IDAtMTAuNjctMy41OC0xMC42Ny04di0xNmMwLTQuNDIgNC43OC04IDEwLjY3LThIMjcydi0zMmgtODUuMzNjLTUuODkgMC0xMC42Ny0zLjU4LTEwLjY3LTh2LTE2YzAtNC40MiA0Ljc4LTggMTAuNjctOEgyNzJ2LTMyaC04NS4zM2MtNS44OSAwLTEwLjY3LTMuNTgtMTAuNjctOHYtMTZjMC00LjQyIDQuNzgtOCAxMC42Ny04SDI3MmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2UzgwIDQyLjk4IDgwIDk2djE2MGMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWNyb3Bob25lU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjMzLjgyIDQ1OC4xbC0xNTcuOC0xMjEuOTZDNDg4LjYxIDMxMi4xMyA0OTYgMjg1LjAxIDQ5NiAyNTZ2LTQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhjMCAxNy45Mi0zLjk2IDM0LjgtMTAuNzIgNTAuMmwtMjYuNTUtMjAuNTJjMy4xLTkuNCA1LjI4LTE5LjIyIDUuMjgtMjkuNjdWOTZjMC01My4wMi00Mi45OC05Ni05Ni05NnMtOTYgNDIuOTgtOTYgOTZ2NDUuMzZMNDUuNDcgMy4zN0MzOC40OS0yLjA1IDI4LjQzLS44IDIzLjAxIDYuMThMMy4zNyAzMS40NUMtMi4wNSAzOC40Mi0uOCA0OC40NyA2LjE4IDUzLjlsNTg4LjM2IDQ1NC43M2M2Ljk4IDUuNDMgMTcuMDMgNC4xNyAyMi40Ni0yLjgxbDE5LjY0LTI1LjI3YzUuNDEtNi45NyA0LjE2LTE3LjAyLTIuODItMjIuNDV6TTQwMCA0NjRoLTU2di0zMy43N2MxMS42Ni0xLjYgMjIuODUtNC41NCAzMy42Ny04LjMxbC01MC4xMS0zOC43M2MtNi43MS40LTEzLjQxLjg3LTIwLjM1LjItNTUuODUtNS40NS05OC43NC00OC42My0xMTEuMTgtMTAxLjg1TDE0NCAyNDEuMzF2Ni44NWMwIDg5LjY0IDYzLjk3IDE2OS41NSAxNTIgMTgxLjY5VjQ2NGgtNTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djE2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvcGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM1MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDM1MmM1My4wMiAwIDk2LTQyLjk4IDk2LTk2Vjk2YzAtNTMuMDItNDIuOTgtOTYtOTYtOTZTODAgNDIuOTggODAgOTZ2MTYwYzAgNTMuMDIgNDIuOTggOTYgOTYgOTZ6bTE2MC0xNjBoLTE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OGMwIDc0LjgtNjQuNDkgMTM0LjgyLTE0MC43OSAxMjcuMzhDOTYuNzEgMzc2Ljg5IDQ4IDMxNy4xMSA0OCAyNTAuM1YyMDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djQwLjE2YzAgODkuNjQgNjMuOTcgMTY5LjU1IDE1MiAxODEuNjlWNDY0SDk2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2aC01NnYtMzMuNzdDMjg1LjcxIDQxOC40NyAzNTIgMzQ0LjkgMzUyIDI1NnYtNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3Jvc2NvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDMyMGgxMnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmg0MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZoMTJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyVjE2YzAtOC44NC03LjE2LTE2LTE2LTE2aC02NGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MjI0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJ6bTMwNCAxMjhoLTEuMjlDNDkzLjI0IDQxMy45OSA1MTIgMzY5LjIgNTEyIDMyMGMwLTEwNS44OC04Ni4xMi0xOTItMTkyLTE5MnY2NGM3MC41OCAwIDEyOCA1Ny40MiAxMjggMTI4cy01Ny40MiAxMjgtMTI4IDEyOEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OCAwIDguODQgNy4xNiAxNiAxNiAxNmg0ODBjOC44NCAwIDE2LTcuMTYgMTYtMTYgMC0yNi41MS0yMS40OS00OC00OC00OHptLTM2MC0zMmgyMDhjNC40MiAwIDgtMy41OCA4LTh2LTE2YzAtNC40Mi0zLjU4LTgtOC04SDEwNGMtNC40MiAwLTggMy41OC04IDh2MTZjMCA0LjQyIDMuNTggOCA4IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pbnVzQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6TTEyNCAyOTZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNTZjMC02LjYgNS40LTEyIDEyLTEyaDI2NGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTZjMCA2LjYtNS40IDEyLTEyIDEySDEyNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWludXNTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNOTIgMjk2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTU2YzAtNi42IDUuNC0xMiAxMi0xMmgyNjRjNi42IDAgMTIgNS40IDEyIDEydjU2YzAgNi42LTUuNCAxMi0xMiAxMkg5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDIwOEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDM4NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaXR0ZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4IDQxNkg0OGMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMjBjOC44IDAgMTYtNy4yIDE2LTE2di02NGMwLTguOC03LjItMTYtMTYtMTZ6bTU3LTIwOS4xYy0yNy4yLTIyLjYtNjcuNS0xOS05MC4xIDguMmwtMjAuOSAyNS0yOS42LTEyOC40Yy0xOC03Ny41LTk1LjQtMTI1LjktMTcyLjgtMTA4QzM0LjIgMjEuNi0xNC4yIDk4LjkgMy43IDE3Ni40TDUxLjYgMzg0aDMwOWw3Mi41LTg3YzIyLjctMjcuMiAxOS02Ny41LTguMS05MC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb2JpbGVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDBINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyMjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE2MCA0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xMTItMTA4YzAgNi42LTUuNCAxMi0xMiAxMkg2MGMtNi42IDAtMTItNS40LTEyLTEyVjYwYzAtNi42IDUuNC0xMiAxMi0xMmgyMDBjNi42IDAgMTIgNS40IDEyIDEydjMxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9iaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjI0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xNjAgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAyODhoLTE2di04OGMwLTQuNDItMy41OC04LTgtOGgtMTMuNThjLTQuNzQgMC05LjM3IDEuNC0xMy4zMSA0LjAzbC0xNS4zMyAxMC4yMmE3Ljk5NCA3Ljk5NCAwIDAgMC0yLjIyIDExLjA5bDguODggMTMuMzFhNy45OTQgNy45OTQgMCAwIDAgMTEuMDkgMi4yMmwuNDctLjMxVjI4OGgtMTZjLTQuNDIgMC04IDMuNTgtOCA4djE2YzAgNC40MiAzLjU4IDggOCA4aDY0YzQuNDIgMCA4LTMuNTggOC04di0xNmMwLTQuNDItMy41OC04LTgtOHpNNjA4IDY0SDMyQzE0LjMzIDY0IDAgNzguMzMgMCA5NnYzMjBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NzZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY5NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek00OCA0MDB2LTY0YzM1LjM1IDAgNjQgMjguNjUgNjQgNjRINDh6bTAtMjI0di02NGg2NGMwIDM1LjM1LTI4LjY1IDY0LTY0IDY0em0yNzIgMTkyYy01My4wMiAwLTk2LTUwLjE1LTk2LTExMiAwLTYxLjg2IDQyLjk4LTExMiA5Ni0xMTJzOTYgNTAuMTQgOTYgMTEyYzAgNjEuODctNDMgMTEyLTk2IDExMnptMjcyIDMyaC02NGMwLTM1LjM1IDI4LjY1LTY0IDY0LTY0djY0em0wLTIyNGMtMzUuMzUgMC02NC0yOC42NS02NC02NGg2NHY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsV2F2ZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjEuMTYgNTQuNDZDNTgyLjM3IDM4LjE5IDU0My41NSAzMiA1MDQuNzUgMzJjLTEyMy4xNy0uMDEtMjQ2LjMzIDYyLjM0LTM2OS41IDYyLjM0LTMwLjg5IDAtNjEuNzYtMy45Mi05Mi42NS0xMy43Mi0zLjQ3LTEuMS02Ljk1LTEuNjItMTAuMzUtMS42MkMxNS4wNCA3OSAwIDkyLjMyIDAgMTEwLjgxdjMxNy4yNmMwIDEyLjYzIDcuMjMgMjQuNiAxOC44NCAyOS40NkM1Ny42MyA0NzMuODEgOTYuNDUgNDgwIDEzNS4yNSA0ODBjMTIzLjE3IDAgMjQ2LjM0LTYyLjM1IDM2OS41MS02Mi4zNSAzMC44OSAwIDYxLjc2IDMuOTIgOTIuNjUgMTMuNzIgMy40NyAxLjEgNi45NSAxLjYyIDEwLjM1IDEuNjIgMTcuMjEgMCAzMi4yNS0xMy4zMiAzMi4yNS0zMS44MVY4My45M2MtLjAxLTEyLjY0LTcuMjQtMjQuNi0xOC44NS0yOS40N3pNMzIwIDM1MmMtNDQuMTkgMC04MC00Mi45OS04MC05NiAwLTUzLjAyIDM1LjgyLTk2IDgwLTk2czgwIDQyLjk4IDgwIDk2YzAgNTMuMDMtMzUuODMgOTYtODAgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5QmlsbFdhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjIxLjE2IDU0LjQ2QzU4Mi4zNyAzOC4xOSA1NDMuNTUgMzIgNTA0Ljc1IDMyYy0xMjMuMTctLjAxLTI0Ni4zMyA2Mi4zNC0zNjkuNSA2Mi4zNC0zMC44OSAwLTYxLjc2LTMuOTItOTIuNjUtMTMuNzItMy40Ny0xLjEtNi45NS0xLjYyLTEwLjM1LTEuNjJDMTUuMDQgNzkgMCA5Mi4zMiAwIDExMC44MXYzMTcuMjZjMCAxMi42MyA3LjIzIDI0LjYgMTguODQgMjkuNDZDNTcuNjMgNDczLjgxIDk2LjQ1IDQ4MCAxMzUuMjUgNDgwYzEyMy4xNyAwIDI0Ni4zNC02Mi4zNSAzNjkuNTEtNjIuMzUgMzAuODkgMCA2MS43NiAzLjkyIDkyLjY1IDEzLjcyIDMuNDcgMS4xIDYuOTUgMS42MiAxMC4zNSAxLjYyIDE3LjIxIDAgMzIuMjUtMTMuMzIgMzIuMjUtMzEuODFWODMuOTNjLS4wMS0xMi42NC03LjI0LTI0LjYtMTguODUtMjkuNDd6TTQ4IDEzMi4yMmMyMC4xMiA1LjA0IDQxLjEyIDcuNTcgNjIuNzIgOC45M0MxMDQuODQgMTcwLjU0IDc5IDE5Mi42OSA0OCAxOTIuNjl2LTYwLjQ3em0wIDI4NXYtNDcuNzhjMzQuMzcgMCA2Mi4xOCAyNy4yNyA2My43MSA2MS40LTIyLjUzLTEuODEtNDMuNTktNi4zMS02My43MS0xMy42MnpNMzIwIDM1MmMtNDQuMTkgMC04MC00Mi45OS04MC05NiAwLTUzLjAyIDM1LjgyLTk2IDgwLTk2czgwIDQyLjk4IDgwIDk2YzAgNTMuMDMtMzUuODMgOTYtODAgOTZ6bTI3MiAyNy43OGMtMTcuNTItNC4zOS0zNS43MS02Ljg1LTU0LjMyLTguNDQgNS44Ny0yNi4wOCAyNy41LTQ1Ljg4IDU0LjMyLTQ5LjI4djU3Ljcyem0wLTIzNi4xMWMtMzAuODktMy45MS01NC44Ni0yOS43LTU1LjgxLTYxLjU1IDE5LjU0IDIuMTcgMzguMDkgNi4yMyA1NS44MSAxMi42NnY0OC44OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYwOCA2NEgzMkMxNC4zMyA2NCAwIDc4LjMzIDAgOTZ2MzIwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTc2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNNDggNDAwdi02NGMzNS4zNSAwIDY0IDI4LjY1IDY0IDY0SDQ4em0wLTIyNHYtNjRoNjRjMCAzNS4zNS0yOC42NSA2NC02NCA2NHptMjcyIDE3NmMtNDQuMTkgMC04MC00Mi45OS04MC05NiAwLTUzLjAyIDM1LjgyLTk2IDgwLTk2czgwIDQyLjk4IDgwIDk2YzAgNTMuMDMtMzUuODMgOTYtODAgOTZ6bTI3MiA0OGgtNjRjMC0zNS4zNSAyOC42NS02NCA2NC02NHY2NHptMC0yMjRjLTM1LjM1IDAtNjQtMjguNjUtNjQtNjRoNjR2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5Q2hlY2tBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjA4IDMySDMyQzE0LjMzIDMyIDAgNDYuMzMgMCA2NHYzODRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NzZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0xNzYgMzI3Ljg4VjM0NGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di0xNi4yOWMtMTEuMjktLjU4LTIyLjI3LTQuNTItMzEuMzctMTEuMzUtMy45LTIuOTMtNC4xLTguNzctLjU3LTEyLjE0bDExLjc1LTExLjIxYzIuNzctMi42NCA2Ljg5LTIuNzYgMTAuMTMtLjczIDMuODcgMi40MiA4LjI2IDMuNzIgMTIuODIgMy43MmgyOC4xMWM2LjUgMCAxMS44LTUuOTIgMTEuOC0xMy4xOSAwLTUuOTUtMy42MS0xMS4xOS04Ljc3LTEyLjczbC00NS0xMy41Yy0xOC41OS01LjU4LTMxLjU4LTIzLjQyLTMxLjU4LTQzLjM5IDAtMjQuNTIgMTkuMDUtNDQuNDQgNDIuNjctNDUuMDdWMTUyYzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djE2LjI5YzExLjI5LjU4IDIyLjI3IDQuNTEgMzEuMzcgMTEuMzUgMy45IDIuOTMgNC4xIDguNzcuNTcgMTIuMTRsLTExLjc1IDExLjIxYy0yLjc3IDIuNjQtNi44OSAyLjc2LTEwLjEzLjczLTMuODctMi40My04LjI2LTMuNzItMTIuODItMy43MmgtMjguMTFjLTYuNSAwLTExLjggNS45Mi0xMS44IDEzLjE5IDAgNS45NSAzLjYxIDExLjE5IDguNzcgMTIuNzNsNDUgMTMuNWMxOC41OSA1LjU4IDMxLjU4IDIzLjQyIDMxLjU4IDQzLjM5IDAgMjQuNTMtMTkuMDUgNDQuNDQtNDIuNjcgNDUuMDd6TTQxNiAzMTJjMCA0LjQyLTMuNTggOC04IDhIMjk2Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTEyYzQuNDIgMCA4IDMuNTggOCA4djE2em0xNjAgMGMwIDQuNDItMy41OCA4LTggOGgtODBjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGg4MGM0LjQyIDAgOCAzLjU4IDggOHYxNnptMC05NmMwIDQuNDItMy41OCA4LTggOEgyOTZjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgyNzJjNC40MiAwIDggMy41OCA4IDh2MTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5Q2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0NDhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NzZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYxMjhIMHYzMjB6bTQ0OC0yMDhjMC04Ljg0IDcuMTYtMTYgMTYtMTZoOTZjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MzJjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTk2Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMzJ6bTAgMTIwYzAtNC40MiAzLjU4LTggOC04aDExMmM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg0NTZjLTQuNDIgMC04LTMuNTgtOC04di0xNnpNNjQgMjY0YzAtNC40MiAzLjU4LTggOC04aDMwNGM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2em0wIDk2YzAtNC40MiAzLjU4LTggOC04aDE3NmM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2ek02MjQgMzJIMTZDNy4xNiAzMiAwIDM5LjE2IDAgNDh2NDhoNjQwVjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb251bWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjggNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgzNTJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2em0tNzguODYtMzQ3LjI2YTMxLjk3IDMxLjk3IDAgMCAwLTkuMjEtMTkuNDRMMjAzLjMxIDQuNjljLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTc2LjYgNzYuNjFhMzEuOTcgMzEuOTcgMCAwIDAtOS4yMSAxOS40NEw2NCA0MTZoMjU2bC0zMC44Ni0zMTUuMjZ6TTI0MCAzMDcuMmMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTcwLjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoNzAuNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODMuMjExIDUxMmM3OC45NjIgMCAxNTEuMDc5LTM1LjkyNSAxOTguODU3LTk0Ljc5MiA3LjA2OC04LjcwOC0uNjM5LTIxLjQzLTExLjU2Mi0xOS4zNS0xMjQuMjAzIDIzLjY1NC0yMzguMjYyLTcxLjU3Ni0yMzguMjYyLTE5Ni45NTQgMC03Mi4yMjIgMzguNjYyLTEzOC42MzUgMTAxLjQ5OC0xNzQuMzk0IDkuNjg2LTUuNTEyIDcuMjUtMjAuMTk3LTMuNzU2LTIyLjIzQTI1OC4xNTYgMjU4LjE1NiAwIDAgMCAyODMuMjExIDBjLTE0MS4zMDkgMC0yNTYgMTE0LjUxMS0yNTYgMjU2IDAgMTQxLjMwOSAxMTQuNTExIDI1NiAyNTYgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3J0YXJQZXN0bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAxLjU0IDYwLjkxYzE3LjIyLTE3LjIyIDEyLjUxLTQ2LjI1LTkuMjctNTcuMTRhMzUuNjk2IDM1LjY5NiAwIDAgMC0zNy4zNyAzLjM3TDI1MS4wOSAxNjBoMTUxLjM3bDk5LjA4LTk5LjA5ek00OTYgMTkySDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmMwIDgwLjk4IDUwLjIgMTUwLjExIDEyMS4xMyAxNzguMzItMTIuNzYgMTYuODctMjEuNzIgMzYuOC0yNC45NSA1OC42OS0xLjQ2IDkuOTIgNi4wNCAxOC45OCAxNi4wNyAxOC45OGgyMjMuNWMxMC4wMyAwIDE3LjUzLTkuMDYgMTYuMDctMTguOTgtMy4yMi0yMS44OS0xMi4xOC00MS44Mi0yNC45NS01OC42OUM0MjkuOCA0MDYuMTEgNDgwIDMzNi45OCA0ODAgMjU2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9zcXVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDgwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYxNjBIMHYzMjB6bTU3OS4xNi0xOTJjMTcuODYtMTcuMzkgMjguODQtMzcuMzQgMjguODQtNTguOTEgMC01Mi44Ni00MS43OS05My43OS04Ny45Mi0xMjIuOS00MS45NC0yNi40Ny04MC42My01Ny43Ny0xMTEuOTYtOTYuMjJMNDAwIDBsLTguMTIgOS45N2MtMzEuMzMgMzguNDUtNzAuMDEgNjkuNzYtMTExLjk2IDk2LjIyQzIzMy43OSAxMzUuMyAxOTIgMTc2LjIzIDE5MiAyMjkuMDljMCAyMS41NyAxMC45OCA0MS41MiAyOC44NCA1OC45MWgzNTguMzJ6TTYwOCAzMjBIMTkyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMydi02NGMwLTE3LjY3IDE0LjMzLTMyIDMyLTMyczMyIDE0LjMzIDMyIDMydjY0aDY0di03MmMwLTQ4IDQ4LTcyIDQ4LTcyczQ4IDI0IDQ4IDcydjcyaDY0di02NGMwLTE3LjY3IDE0LjMzLTMyIDMyLTMyczMyIDE0LjMzIDMyIDMydjY0aDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzUyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTY0IDBTMCAzMiAwIDk2djMyaDEyOFY5NmMwLTY0LTY0LTk2LTY0LTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3RvcmN5Y2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMi45IDE5MmMtMTQuOS0uMS0yOS4xIDIuMy00Mi40IDYuOUw0MzcuNiAxNDRINTIwYzEzLjMgMCAyNC0xMC43IDI0LTI0Vjg4YzAtMTMuMy0xMC43LTI0LTI0LTI0aC00NS4zYy02LjggMC0xMy4zIDIuOS0xNy44IDcuOWwtMzcuNSA0MS43LTIyLjgtMzhDMzkyLjIgNjguNCAzODQuNCA2NCAzNzYgNjRoLTgwYy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDY2LjRsMTkuMiAzMkgyMjcuOWMtMTcuNy0yMy4xLTQ0LjktNDAtOTkuOS00MEg3Mi41QzU5IDEwNCA0Ny43IDExNSA0OCAxMjguNWMuMiAxMyAxMC45IDIzLjUgMjQgMjMuNWg1NmMyNC41IDAgMzguNyAxMC45IDQ3LjggMjQuOGwtMTEuMyAyMC41Yy0xMy0zLjktMjYuOS01LjctNDEuMy01LjJDNTUuOSAxOTQuNSAxLjYgMjQ5LjYgMCAzMTdjLTEuNiA3Mi4xIDU2LjMgMTMxIDEyOCAxMzEgNTkuNiAwIDEwOS43LTQwLjggMTI0LTk2aDg0LjJjMTMuNyAwIDI0LjYtMTEuNCAyNC0yNS4xLTIuMS00Ny4xIDE3LjUtOTMuNyA1Ni4yLTEyNWwxMi41IDIwLjhjLTI3LjYgMjMuNy00NS4xIDU4LjktNDQuOCA5OC4yLjUgNjkuNiA1Ny4yIDEyNi41IDEyNi44IDEyNy4xIDcxLjYuNyAxMjkuOC01Ny41IDEyOS4yLTEyOS4xLS43LTY5LjYtNTcuNi0xMjYuNC0xMjcuMi0xMjYuOXpNMTI4IDQwMGMtNDQuMSAwLTgwLTM1LjktODAtODBzMzUuOS04MCA4MC04MGM0LjIgMCA4LjQuMyAxMi41IDFMOTkgMzE2LjRjLTguOCAxNiAyLjggMzUuNiAyMSAzNS42aDgxLjNjLTEyLjQgMjguMi00MC42IDQ4LTczLjMgNDh6bTQ2My45LTc1LjZjLTIuMiA0MC42LTM1IDczLjQtNzUuNSA3NS41LTQ2LjEgMi41LTg0LjQtMzQuMy04NC40LTc5LjkgMC0yMS40IDguNC00MC44IDIyLjEtNTUuMWw0OS40IDgyLjRjNC41IDcuNiAxNC40IDEwIDIyIDUuNWwxMy43LTguMmM3LjYtNC41IDEwLTE0LjQgNS41LTIybC00OC42LTgwLjljNS4yLTEuMSAxMC41LTEuNiAxNS45LTEuNiA0NS42LS4xIDgyLjMgMzguMiA3OS45IDg0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vdW50YWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzNC45MiA0NjIuN2wtMjg4LTQ0OEMzNDEuMDMgNS41NCAzMzAuODkgMCAzMjAgMHMtMjEuMDMgNS41NC0yNi45MiAxNC43bC0yODggNDQ4YTMyLjAwMSAzMi4wMDEgMCAwIDAtMS4xNyAzMi42NEEzMi4wMDQgMzIuMDA0IDAgMCAwIDMyIDUxMmg1NzZjMTEuNzEgMCAyMi40OC02LjM5IDI4LjA5LTE2LjY3YTMxLjk4MyAzMS45ODMgMCAwIDAtMS4xNy0zMi42M3pNMzIwIDkxLjE4TDQwNS4zOSAyMjRIMzIwbC02NCA2NC0zOC4wNi0zOC4wNkwzMjAgOTEuMTh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vdXNlUG9pbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDIuMTg5IDMyOS4xMjZIMTk2LjEwNWw1NS44MzEgMTM1Ljk5M2MzLjg4OSA5LjQyOC0uNTU1IDE5Ljk5OS05LjQ0NCAyMy45OTlsLTQ5LjE2NSAyMS40MjdjLTkuMTY1IDQtMTkuNDQzLS41NzEtMjMuMzMyLTkuNzE0bC01My4wNTMtMTI5LjEzNi04Ni42NjQgODkuMTM4QzE4LjcyOSA0NzIuNzEgMCA0NjMuNTU0IDAgNDQ3Ljk3N1YxOC4yOTlDMCAxLjg5OSAxOS45MjEtNi4wOTYgMzAuMjc3IDUuNDQzbDI4NC40MTIgMjkyLjU0MmMxMS40NzIgMTEuMTc5IDMuMDA3IDMxLjE0MS0xMi41IDMxLjE0MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW91c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzNTJhMTYwIDE2MCAwIDAgMCAxNjAgMTYwaDY0YTE2MCAxNjAgMCAwIDAgMTYwLTE2MFYyMjRIMHpNMTc2IDBoLTE2QTE2MCAxNjAgMCAwIDAgMCAxNjB2MzJoMTc2em00OCAwaC0xNnYxOTJoMTc2di0zMkExNjAgMTYwIDAgMCAwIDIyNCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNdWdIb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI3LjEgMTQ2LjVjMS4zIDcuNyA4IDEzLjUgMTYgMTMuNWgxNi41YzkuOCAwIDE3LjYtOC41IDE2LjMtMTgtMy44LTI4LjItMTYuNC01NC4yLTM2LjYtNzQuNy0xNC40LTE0LjctMjMuNi0zMy4zLTI2LjQtNTMuNUMxMTEuOCA1LjkgMTA1IDAgOTYuOCAwSDgwLjRDNzAuNiAwIDYzIDguNSA2NC4xIDE4YzMuOSAzMS45IDE4IDYxLjMgNDAuNiA4NC40IDEyIDEyLjIgMTkuNyAyNy41IDIyLjQgNDQuMXptMTEyIDBjMS4zIDcuNyA4IDEzLjUgMTYgMTMuNWgxNi41YzkuOCAwIDE3LjYtOC41IDE2LjMtMTgtMy44LTI4LjItMTYuNC01NC4yLTM2LjYtNzQuNy0xNC40LTE0LjctMjMuNi0zMy4zLTI2LjQtNTMuNUMyMjMuOCA1LjkgMjE3IDAgMjA4LjggMGgtMTYuNGMtOS44IDAtMTcuNSA4LjUtMTYuMyAxOCAzLjkgMzEuOSAxOCA2MS4zIDQwLjYgODQuNCAxMiAxMi4yIDE5LjcgMjcuNSAyMi40IDQ0LjF6TTQwMCAxOTJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjE5MmMwIDUzIDQzIDk2IDk2IDk2aDE5MmM1MyAwIDk2LTQzIDk2LTk2aDE2YzYxLjggMCAxMTItNTAuMiAxMTItMTEycy01MC4yLTExMi0xMTItMTEyem0wIDE2MGgtMTZ2LTk2aDE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNdXNpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzAuMzggMS41MUwxNTAuNDEgOTZBMzIgMzIgMCAwIDAgMTI4IDEyNi41MXYyNjEuNDFBMTM5IDEzOSAwIDAgMCA5NiAzODRjLTUzIDAtOTYgMjguNjYtOTYgNjRzNDMgNjQgOTYgNjQgOTYtMjguNjYgOTYtNjRWMjE0LjMybDI1Ni03NXYxODQuNjFhMTM4LjQgMTM4LjQgMCAwIDAtMzItMy45M2MtNTMgMC05NiAyOC42Ni05NiA2NHM0MyA2NCA5NiA2NCA5Ni0yOC42NSA5Ni02NFYzMmEzMiAzMiAwIDAgMC00MS42Mi0zMC40OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmV0d29ya1dpcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAyNjR2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDM0NHYtNDBoNzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDIyNGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMjhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg3MnY0MEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTA0djQwSDY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDE2MGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjM1MmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC01NnYtNDBoMzA0djQwaC01NmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMjhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgxNjBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYzNTJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtNTZ2LTQwaDEwNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnpNMjU2IDEyOFY2NGgxMjh2NjRIMjU2em0tNjQgMzIwSDk2di02NGg5NnY2NHptMzUyIDBoLTk2di02NGg5NnY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmV1dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyODggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxNzZjMC03OS41LTY0LjUtMTQ0LTE0NC0xNDRTMCA5Ni41IDAgMTc2YzAgNjguNSA0Ny45IDEyNS45IDExMiAxNDAuNFY0NjhjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMlYzMTYuNGM2NC4xLTE0LjUgMTEyLTcxLjkgMTEyLTE0MC40em0tMTQ0IDgwYy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmV3c3BhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU1MiA2NEg4OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djhIMjRjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYyNzJjMCAzMC45MjggMjUuMDcyIDU2IDU2IDU2aDQ3MmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4Vjg4YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHpNNTYgNDAwYTggOCAwIDAgMS04LThWMTQ0aDE2djI0OGE4IDggMCAwIDEtOCA4em0yMzYtMTZIMTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi04YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTUyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2OGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyem0yMDggMEgzNDhjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LThjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNTJjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY4YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6bS0yMDgtOTZIMTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi04YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTUyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2OGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyem0yMDggMEgzNDhjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LThjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNTJjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY4YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6bTAtOTZIMTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi00MGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDM2MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQwYzAgNi42MjctNS4zNzMgMTItMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5vdEVxdWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAyMDhjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMjMuODhsNTEuODctNjYuODFjNS4zNy03LjAyIDQuMDQtMTcuMDYtMi45Ny0yMi40M0w0MTUuNjEgMy4zYy03LjAyLTUuMzgtMTcuMDYtNC4wNC0yMi40NCAyLjk3TDMxMS4wOSAxMTJIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgyMDQuNTZsLTc0LjUzIDk2SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTUuNDlsLTUxLjg3IDY2LjgxYy01LjM3IDcuMDEtNC4wNCAxNy4wNSAyLjk3IDIyLjQzTDY0IDUwOC43YzcuMDIgNS4zOCAxNy4wNiA0LjA0IDIyLjQzLTIuOTdMMTY4LjUyIDQwMEg0MTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgyNDMuMDVsNzQuNTMtOTZINDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOb3Rlc01lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDY0aC04MGMwLTM1LjMtMjguNy02NC02NC02NHMtNjQgMjguNy02NCA2NEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjExMmMwLTI2LjUtMjEuNS00OC00OC00OHpNMTkyIDQwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptOTYgMzA0YzAgNC40LTMuNiA4LTggOGgtNTZ2NTZjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di01NmgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDhjMC00LjQgMy42LTggOC04aDU2di01NmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djU2aDU2YzQuNCAwIDggMy42IDggOHY0OHptMC0xOTJjMCA0LjQtMy42IDgtOCA4SDEwNGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTc2YzQuNCAwIDggMy42IDggOHYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2JqZWN0R3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDEyOFY5NmgyMGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyVjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjIwSDY0VjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJDNS4zNzMgMzIgMCAzNy4zNzMgMCA0NHY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDIwdjMyMEgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTIwaDM4NHYyMGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTIwVjEyOHpNOTYgMjc2VjE0MGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE2OGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjEzNmMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDEwOGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnptMzIwIDk2YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMjM2Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi01Mmg3MmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTcyaDg0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MTM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPYmplY3RVbmdyb3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyMHYyNmE2IDYgMCAwIDEtNiA2SDZhNiA2IDAgMCAxLTYtNnYtNTJhNiA2IDAgMCAxIDYtNmgyNlY5Nkg2YTYgNiAwIDAgMS02LTZWMzhhNiA2IDAgMCAxIDYtNmg1MmE2IDYgMCAwIDEgNiA2djI2aDI4OFYzOGE2IDYgMCAwIDEgNi02aDUyYTYgNiAwIDAgMSA2IDZ2NTJhNiA2IDAgMCAxLTYgNmgtMjZ2MTkyaDI2YTYgNiAwIDAgMSA2IDZ2NTJhNiA2IDAgMCAxLTYgNmgtNTJhNiA2IDAgMCAxLTYtNnYtMjZINjR6bTQ4MC02NHYtMzJoMjZhNiA2IDAgMCAwIDYtNnYtNTJhNiA2IDAgMCAwLTYtNmgtNTJhNiA2IDAgMCAwLTYgNnYyNkg0MDh2NzJoOGMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2NjRjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0aC02NGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di04SDE5MnY3MmgtMjZhNiA2IDAgMCAwLTYgNnY1MmE2IDYgMCAwIDAgNiA2aDUyYTYgNiAwIDAgMCA2LTZ2LTI2aDI4OHYyNmE2IDYgMCAwIDAgNiA2aDUyYTYgNiAwIDAgMCA2LTZ2LTUyYTYgNiAwIDAgMC02LTZoLTI2VjI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2lsQ2FuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyOS44IDE2MC4zMUw0MTYgMjI0bC01MC40OS0yNS4yNGE2NC4wNyA2NC4wNyAwIDAgMC0yOC42Mi02Ljc2SDI4MHYtNDhoNTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE3NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNTZ2NDhoLTU2TDM3LjcyIDE2Ni44NmEzMS45IDMxLjkgMCAwIDAtNS43OS0uNTNDMTQuNjcgMTY2LjMzIDAgMTgwLjM2IDAgMTk4LjM0djk0Ljk1YzAgMTUuNDYgMTEuMDYgMjguNzIgMjYuMjggMzEuNDhMOTYgMzM3LjQ2VjM4NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDI3NC42M2M4LjU1IDAgMTYuNzUtMy40MiAyMi43Ni05LjUxbDIxMi4yNi0yMTQuNzVjMS41LTEuNSAyLjM0LTMuNTQgMi4zNC01LjY2VjE2OGMuMDEtNS4zMS01LjA4LTkuMTUtMTAuMTktNy42OXpNOTYgMjg4LjY3bC00OC04Ljczdi02Mi40M2w0OCA4LjczdjYyLjQzem00NTMuMzMgODQuNjZjMCAyMy41NiAxOS4xIDQyLjY3IDQyLjY3IDQyLjY3czQyLjY3LTE5LjEgNDIuNjctNDIuNjdTNTkyIDI4OCA1OTIgMjg4cy00Mi42NyA2MS43Ny00Mi42NyA4NS4zM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzYwLjYgNjAuOTRhMTAuNDMgMTAuNDMgMCAwIDAgMTQuNzYgMGwyMS41Ny0yMS41NmExMC40MyAxMC40MyAwIDAgMCAwLTE0Ljc2TDM3NS4zNSAzLjA2Yy00LjA4LTQuMDctMTAuNjgtNC4wNy0xNC43NiAwbC0yMS41NyAyMS41NmExMC40MyAxMC40MyAwIDAgMCAwIDE0Ljc2bDIxLjU4IDIxLjU2ek00MTIuMTEgMTkyYy0yNi42OSAwLTUxLjc3IDEwLjM5LTcwLjY0IDI5LjI1bC0yNC4yNSAyNC4yNWMtNi43OCA2Ljc3LTE1Ljc4IDEwLjUtMjUuMzggMTAuNUgyNDVjMTAuNTQtMjIuMSAxNC4xNy00OC4xMSA3LjczLTc1LjIzLTEwLjEtNDIuNTUtNDYuMzYtNzYuMTEtODkuNTItODMuMTktMzYuMTUtNS45My03MC45IDUuMDQtOTYuMDEgMjguNzgtNy4zNiA2Ljk2LTYuOTcgMTguODUgMS4xMiAyNC45M2wyNi4xNSAxOS42M2M1LjcyIDQuMyAxMy42NiA0LjMyIDE5LjItLjIxIDguNDUtNi45IDE5LjAyLTEwLjcxIDMwLjI3LTEwLjcxIDI2LjQ3IDAgNDguMDEgMjEuNTMgNDguMDEgNDhzLTIxLjU0IDQ4LTQ4LjAxIDQ4aC0zMS45Yy0xMS45NiAwLTE5Ljc0IDEyLjU4LTE0LjM5IDIzLjI4bDE2LjA5IDMyLjE3YzIuNTMgNS4wNiA3LjYgOC4xIDEzLjE3IDguNTVoMzMuMDNjMzUuMyAwIDY0LjAxIDI4LjcgNjQuMDEgNjRzLTI4LjcxIDY0LTY0LjAxIDY0Yy05Ni4wMiAwLTEyMi4zNS01NC4wMi0xNDUuMTUtOTIuMDMtNC41My03LjU1LTE0Ljc3LTMuNTgtMTQuNzkgNS4yMkMtLjA5IDQxNiA0MS4xMyA1MTIgMTU5Ljk0IDUxMmM3MC41OSAwIDEyOC4wMi01Ny40MiAxMjguMDItMTI4IDAtMjMuNDItNi43OC00NS4xLTE3LjgxLTY0aDIxLjY5YzI2LjY5IDAgNTEuNzctMTAuMzkgNzAuNjQtMjkuMjVsMjQuMjUtMjQuMjVjNi43OC02Ljc3IDE1Ljc4LTEwLjUgMjUuMzgtMTAuNSAxOS43OCAwIDM1Ljg4IDE2LjA5IDM1Ljg4IDM1Ljg4VjM5MmMwIDEzLjIzLTE4Ljc3IDI0LTMyLjAxIDI0LTM5LjQgMC02Ni42Ny0yNC4yNC04MS44Mi00Mi44OS00Ljc3LTUuODctMTQuMi0yLjU0LTE0LjIgNS4wMlY0MTZzMCA2NCA5Ni4wMiA2NGM0OC41NCAwIDk2LjAyLTM5LjQ3IDk2LjAyLTg4VjI5MS44OGMwLTU1LjA4LTQ0LjgtOTkuODgtOTkuODktOTkuODh6bTQyLjE4LTEyNC43M2MtODUuNTUgNjUuMTItMTY5LjA1IDIuNzUtMTcyLjU4LjA1LTYuMDItNC42Mi0xNC40NC00LjM4LTIwLjE0LjU1LTUuNzQgNC45Mi03LjI3IDEzLjE3LTMuNjYgMTkuOCAxLjYxIDIuOTUgNDAuMzcgNzIuMzQgMTE4LjggNzIuMzQgNzkuOTIgMCA5OC43OC0zMS4zNiAxMDEuNzUtMzcuNjYgMS4wMi0yLjEyIDEuNTMtNC40NyAxLjUzLTYuODNWODBjMC0xMy4yMi0xNS4xNC0yMC42OS0yNS43LTEyLjczelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPdHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDggMzJoLTMybC0xMy4yNS0xMy4yNUE2My45NyA2My45NyAwIDAgMCA1MTcuNDkgMEg0OTdjLTExLjE0IDAtMjIuMDggMi45MS0zMS43NSA4LjQzTDMxMiA5NmgtNTZDMTQ5Ljk2IDk2IDY0IDE4MS45NiA2NCAyODh2MS42MWMwIDMyLjc1LTE2IDYyLjE0LTM5LjU2IDg0Ljg5LTE4LjE5IDE3LjU4LTI4LjEgNDMuNjgtMjMuMTkgNzEuOCA2Ljc2IDM4LjggNDIuOSA2NS43IDgyLjI4IDY1LjdIMTkyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJzLTE0LjMzLTMyLTMyLTMySDgwYy04LjgzIDAtMTYtNy4xNy0xNi0xNnM3LjE3LTE2IDE2LTE2aDIyNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtNjRsMTQ5LjQ5LTgwLjVMNDQ4IDQxNmg4MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMjguMjJsLTU1LjExLTExMC4yMUw1MjEuMTQgMTkySDU0NGM1My4wMiAwIDk2LTQyLjk4IDk2LTk2VjY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bS05NiAxNmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnMtNy4xNiAxNi0xNiAxNi0xNi03LjE2LTE2LTE2IDcuMTYtMTYgMTYtMTZ6bTMyIDk2aC0zNC45Nkw0MDcuMiAxOTguODRsLTEzLjc3LTI3LjU1TDUxMiAxMTJoNzcuMDVjLTYuNjIgMTguNTgtMjQuMjIgMzItNDUuMDUgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU91dGRlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAwLjY5IDM2My4yOWMxMCAxMCAyNy4zMSAyLjkzIDI3LjMxLTExLjMxVjE2MGMwLTE0LjMyLTE3LjMzLTIxLjMxLTI3LjMxLTExLjMxbC05NiA5NmExNiAxNiAwIDAgMCAwIDIyLjYyek00MzIgNDE2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTMuMTctMTI4SDIwNC44M0ExMi44MiAxMi44MiAwIDAgMCAxOTIgMzAwLjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDIwNC44MyAzNTJoMjMwLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCAzMzkuMTd2LTM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQzNS4xNyAyODh6bTAtMTI4SDIwNC44M0ExMi44MiAxMi44MiAwIDAgMCAxOTIgMTcyLjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDIwNC44MyAyMjRoMjMwLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCAyMTEuMTd2LTM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQzNS4xNyAxNjB6TTQzMiAzMkgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFnZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDY0SDY0YTY0IDY0IDAgMCAwLTY0IDY0djI1NmE2NCA2NCAwIDAgMCA2NCA2NGgzODRhNjQgNjQgMCAwIDAgNjQtNjRWMTI4YTY0IDY0IDAgMCAwLTY0LTY0ek0xNjAgMzY4SDgwYTE2IDE2IDAgMCAxLTE2LTE2di0xNmExNiAxNiAwIDAgMSAxNi0xNmg4MHptMTI4LTE2YTE2IDE2IDAgMCAxLTE2IDE2aC04MHYtNDhoODBhMTYgMTYgMCAwIDEgMTYgMTZ6bTE2MC0xMjhhMzIgMzIgMCAwIDEtMzIgMzJIOTZhMzIgMzIgMCAwIDEtMzItMzJ2LTY0YTMyIDMyIDAgMCAxIDMyLTMyaDMyMGEzMiAzMiAwIDAgMSAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFpbnRCcnVzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjcuMDIgMzA5LjM0Yy00MC4xMiAyLjU4LTc2LjUzIDE3Ljg2LTk3LjE5IDcyLjMtMi4zNSA2LjIxLTggOS45OC0xNC41OSA5Ljk4LTExLjExIDAtNDUuNDYtMjcuNjctNTUuMjUtMzQuMzVDMCA0MzkuNjIgMzcuOTMgNTEyIDEyOCA1MTJjNzUuODYgMCAxMjgtNDMuNzcgMTI4LTEyMC4xOSAwLTMuMTEtLjY1LTYuMDgtLjk3LTkuMTNsLTg4LjAxLTczLjM0ek00NTcuODkgMGMtMTUuMTYgMC0yOS4zNyA2LjcxLTQwLjIxIDE2LjQ1QzIxMy4yNyAxOTkuMDUgMTkyIDIwMy4zNCAxOTIgMjU3LjA5YzAgMTMuNyAzLjI1IDI2Ljc2IDguNzMgMzguN2w2My44MiA1My4xOGM3LjIxIDEuOCAxNC42NCAzLjAzIDIyLjM5IDMuMDMgNjIuMTEgMCA5OC4xMS00NS40NyAyMTEuMTYtMjU2LjQ2IDcuMzgtMTQuMzUgMTMuOS0yOS44NSAxMy45LTQ1Ljk5QzUxMiAyMC42NCA0ODYgMCA0NTcuODkgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFpbnRSb2xsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDEyOFYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDMyQzE0LjMzIDAgMCAxNC4zMyAwIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzUyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ6bTMyLTY0djEyOGMwIDE3LjY3LTE0LjMzIDMyLTMyIDMySDI1NmMtMzUuMzUgMC02NCAyOC42NS02NCA2NHYzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMjhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjM1MmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMydi0zMmgxNjBjNTMuMDIgMCA5Ni00Mi45OCA5Ni05NnYtNjRjMC0zNS4zNS0yOC42NS02NC02NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFsZXR0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDQuMyA1QzEwNC45IDI0LjQgMjQuOCAxMDQuMyA1LjIgMjAzLjRjLTM3IDE4NyAxMzEuNyAzMjYuNCAyNTguOCAzMDYuNyA0MS4yLTYuNCA2MS40LTU0LjYgNDIuNS05MS43LTIzLjEtNDUuNCA5LjktOTguNCA2MC45LTk4LjRoNzkuN2MzNS44IDAgNjQuOC0yOS42IDY0LjktNjUuM0M1MTEuNSA5Ny4xIDM2OC4xLTI2LjkgMjA0LjMgNXpNOTYgMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMzItMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTI4LTY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTI4IDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFsbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAyNTZoMzUyYzguOCAwIDE2LTcuMiAxNi0xNlYxNmMwLTguOC03LjItMTYtMTYtMTZIMzg0djEyOGwtNjQtMzItNjQgMzJWMEgxNDRjLTguOCAwLTE2IDcuMi0xNiAxNnYyMjRjMCA4LjggNy4yIDE2IDE2IDE2em00ODAgMTI4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djY0SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDYwOGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNmgtNDh2LTY0aDQ4em0tMzM2IDY0SDEyOHYtNjRoMTYwdjY0em0yMjQgMEgzNTJ2LTY0aDE2MHY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFwZXJQbGFuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzYgMy4yTDEyLjUgMjcwLjZjLTE4LjEgMTAuNC0xNS44IDM1LjYgMi4yIDQzLjJMMTIxIDM1OC40bDI4Ny4zLTI1My4yYzUuNS00LjkgMTMuMyAyLjYgOC42IDguM0wxNzYgNDA3djgwLjVjMCAyMy42IDI4LjUgMzIuOSA0Mi41IDE1LjhMMjgyIDQyNmwxMjQuNiA1Mi4yYzE0LjIgNiAzMC40LTIuOSAzMy0xOC4ybDcyLTQzMkM1MTUgNy44IDQ5My4zLTYuOCA0NzYgMy4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXBlcmNsaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMuMjQ2IDQ2Ni4xNDJjLTU4LjQzLTYwLjI4OS01Ny4zNDEtMTU3LjUxMSAxLjM4Ni0yMTcuNTgxTDI1NC4zOTIgMzRjNDQuMzE2LTQ1LjMzMiAxMTYuMzUxLTQ1LjMzNiAxNjAuNjcxIDAgNDMuODkgNDQuODk0IDQzLjk0MyAxMTcuMzI5IDAgMTYyLjI3NkwyMzIuMjE0IDM4My4xMjhjLTI5Ljg1NSAzMC41MzctNzguNjMzIDMwLjExMS0xMDcuOTgyLS45OTgtMjguMjc1LTI5Ljk3LTI3LjM2OC03Ny40NzMgMS40NTItMTA2Ljk1M2wxNDMuNzQzLTE0Ni44MzVjNi4xODItNi4zMTQgMTYuMzEyLTYuNDIyIDIyLjYyNi0uMjQxbDIyLjg2MSAyMi4zNzljNi4zMTUgNi4xODIgNi40MjIgMTYuMzEyLjI0MSAyMi42MjZMMTcxLjQyNyAzMTkuOTI3Yy00LjkzMiA1LjA0NS01LjIzNiAxMy40MjgtLjY0OCAxOC4yOTIgNC4zNzIgNC42MzQgMTEuMjQ1IDQuNzExIDE1LjY4OC4xNjVsMTgyLjg0OS0xODYuODUxYzE5LjYxMy0yMC4wNjIgMTkuNjEzLTUyLjcyNS0uMDExLTcyLjc5OC0xOS4xODktMTkuNjI3LTQ5Ljk1Ny0xOS42MzctNjkuMTU0IDBMOTAuMzkgMjkzLjI5NWMtMzQuNzYzIDM1LjU2LTM1LjI5OSA5My4xMi0xLjE5MSAxMjguMzEzIDM0LjAxIDM1LjA5MyA4OC45ODUgMzUuMTM3IDEyMy4wNTguMjg2bDE3Mi4wNi0xNzUuOTk5YzYuMTc3LTYuMzE5IDE2LjMwNy02LjQzMyAyMi42MjYtLjI1NmwyMi44NzcgMjIuMzY0YzYuMzE5IDYuMTc3IDYuNDM0IDE2LjMwNy4yNTYgMjIuNjI2bC0xNzIuMDYgMTc1Ljk5OGMtNTkuNTc2IDYwLjkzOC0xNTUuOTQzIDYwLjIxNi0yMTQuNzctLjQ4NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFyYWNodXRlQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMS45IDE3NWMtOS4xLTc1LjYtNzguNC0xMzIuNC0xNTguMy0xNTguN0MzOTAgNTUuNyA0MTYgMTE2LjkgNDE2IDE5MmgyOC4xTDMyNy41IDMyMS41Yy0yLjUtLjYtNC44LTEuNS03LjUtMS41aC00OFYxOTJoMTEyQzM4NCA3Ni44IDMxNS4xIDAgMjU2IDBTMTI4IDc2LjggMTI4IDE5MmgxMTJ2MTI4aC00OGMtMi43IDAtNSAuOS03LjUgMS41TDY3LjkgMTkySDk2YzAtNzUuMSAyNi0xMzYuMyA2Mi40LTE3NS43Qzc4LjUgNDIuNyA5LjIgOTkuNS4xIDE3NWMtMS4xIDkuMSA2LjggMTcgMTYgMTdoOC43bDEzNi43IDE1MS45Yy0uNyAyLjYtMS42IDUuMi0xLjYgOC4xdjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgxMjhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMi45LS45LTUuNC0xLjYtOC4xTDQ4Ny4xIDE5Mmg4LjdjOS4zIDAgMTcuMi03LjggMTYuMS0xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFyYWdyYXBoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA0OHYzMmExNiAxNiAwIDAgMS0xNiAxNmgtNDh2MzY4YTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNlY5NmgtMzJ2MzY4YTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNlYzNTJoLTMyYTE2MCAxNjAgMCAwIDEgMC0zMjBoMjQwYTE2IDE2IDAgMCAxIDE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXJraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTI0MCAzMjBoLTQ4djQ4YzAgOC44LTcuMiAxNi0xNiAxNmgtMzJjLTguOCAwLTE2LTcuMi0xNi0xNlYxNDRjMC04LjggNy4yLTE2IDE2LTE2aDk2YzUyLjkgMCA5NiA0My4xIDk2IDk2cy00My4xIDk2LTk2IDk2em0wLTEyOGgtNDh2NjRoNDhjMTcuNiAwIDMyLTE0LjQgMzItMzJzLTE0LjQtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhc3Nwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOS42MiAxNzZoMzkuMDljMS40OS0yNy4wMyA2LjU0LTUxLjM1IDE0LjIxLTcwLjQxLTI3LjcxIDEzLjI0LTQ4LjAyIDM5LjE5LTUzLjMgNzAuNDF6bTAgMzJjNS4yOSAzMS4yMiAyNS41OSA1Ny4xNyA1My4zIDcwLjQxLTcuNjgtMTkuMDYtMTIuNzItNDMuMzgtMTQuMjEtNzAuNDFoLTM5LjA5ek0yMjQgMjg2LjY5YzcuNjktNy40NSAyMC43Ny0zNC40MiAyMy40My03OC42OWgtNDYuODdjMi42NyA0NC4yNiAxNS43NSA3MS4yNCAyMy40NCA3OC42OXpNMjAwLjU3IDE3Nmg0Ni44N2MtMi42Ni00NC4yNi0xNS43NC03MS4yNC0yMy40My03OC42OS03LjcgNy40NS0yMC43OCAzNC40My0yMy40NCA3OC42OXptNjQuNTEgMTAyLjQxYzI3LjcxLTEzLjI0IDQ4LjAyLTM5LjE5IDUzLjMtNzAuNDFoLTM5LjA5Yy0xLjQ5IDI3LjAzLTYuNTMgNTEuMzUtMTQuMjEgNzAuNDF6TTQxNiAwSDY0QzI4LjY1IDAgMCAyOC42NSAwIDY0djM4NGMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0aDM1MmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bS04MCA0MTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDIyNGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNnptLTExMi05NmMtNzAuNjkgMC0xMjgtNTcuMzEtMTI4LTEyOFMxNTMuMzEgNjQgMjI0IDY0czEyOCA1Ny4zMSAxMjggMTI4LTU3LjMxIDEyOC0xMjggMTI4em00MS4wOC0yMTQuNDFjNy42OCAxOS4wNiAxMi43MiA0My4zOCAxNC4yMSA3MC40MWgzOS4wOWMtNS4yOC0zMS4yMi0yNS41OS01Ny4xNy01My4zLTcwLjQxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXN0YWZhcmlhbmlzbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQuNTQgMzQ3LjY3Yy0zMi43LTEyLjUyLTU3LjM2IDQuMjUtNzUuMzcgMTYuNDUtMTcuMDYgMTEuNTMtMjMuMjUgMTQuNDItMzEuNDEgMTEuMzYtOC4xMi0zLjA5LTEwLjgzLTkuMzgtMTUuODktMjkuMzgtMy4zMy0xMy4xNS03LjQ0LTI5LjMyLTE3Ljk1LTQyLjY1IDIuMjQtMi45MSA0LjQzLTUuNzkgNi4zOC04LjU3QzUwMC40NyAzMDQuNDUgNTEzLjcxIDMxMiA1MzIgMzEyYzMzLjk1IDAgNTAuODctMjUuNzggNjIuMDYtNDIuODMgMTAuNTktMTYuMTQgMTUtMjEuMTcgMjEuOTQtMjEuMTcgMTMuMjUgMCAyNC0xMC43NSAyNC0yNHMtMTAuNzUtMjQtMjQtMjRjLTMzLjk1IDAtNTAuODcgMjUuNzgtNjIuMDYgNDIuODMtMTAuNiAxNi4xNC0xNSAyMS4xNy0yMS45NCAyMS4xNy0xNy4zMSAwLTM3LjQ4LTYxLjQzLTk3LjI2LTEwMS45MWwxNy4yNS0zNC41QzQ4NS40MyAxMjUuNSA1MTIgOTcuOTggNTEyIDY0YzAtMzUuMzUtMjguNjUtNjQtNjQtNjRzLTY0IDI4LjY1LTY0IDY0YzAgMTMuMDIgMy45NCAyNS4xIDEwLjYyIDM1LjIxbC0xOC4xNSAzNi4zYy0xNi45OC00LjYtMzUuNi03LjUxLTU2LjQ2LTcuNTFzLTM5LjQ5IDIuOTEtNTYuNDYgNy41MWwtMTguMTUtMzYuM0MyNTIuMDYgODkuMSAyNTYgNzcuMDIgMjU2IDY0YzAtMzUuMzUtMjguNjUtNjQtNjQtNjRzLTY0IDI4LjY1LTY0IDY0YzAgMzMuOTggMjYuNTYgNjEuNSA2MC4wMiA2My42bDE3LjI1IDM0LjVDMTQ1LjY4IDIwMi40NCAxMjUuMTUgMjY0IDEwOCAyNjRjLTYuOTQgMC0xMS4zNC01LjAzLTIxLjk0LTIxLjE3Qzc0Ljg4IDIyNS43OCA1Ny45NiAyMDAgMjQgMjAwYy0xMy4yNSAwLTI0IDEwLjc1LTI0IDI0czEwLjc1IDI0IDI0IDI0YzYuOTQgMCAxMS4zNCA1LjAzIDIxLjk0IDIxLjE3QzU3LjEzIDI4Ni4yMiA3NC4wNSAzMTIgMTA4IDMxMmMxOC4yOSAwIDMxLjUzLTcuNTUgNDEuNy0xNy4xMSAxLjk1IDIuNzkgNC4xNCA1LjY2IDYuMzggOC41Ny0xMC41MSAxMy4zMy0xNC42MiAyOS41LTE3Ljk1IDQyLjY1LTUuMDYgMjAtNy43NyAyNi4yOC0xNS44OSAyOS4zOC04LjExIDMuMDYtMTQuMzMuMTctMzEuNDEtMTEuMzYtMTguMDMtMTIuMi00Mi43Mi0yOC45Mi03NS4zNy0xNi40NS0xMi4zOSA0LjcyLTE4LjU5IDE4LjU4LTEzLjg3IDMwLjk3IDQuNzIgMTIuNDEgMTguNjEgMTguNjEgMzAuOTcgMTMuODggOC4xNi0zLjA5IDE0LjM0LS4xOSAzMS4zOSAxMS4zNiAxMy41NSA5LjE2IDMwLjgzIDIwLjg2IDUyLjQyIDIwLjg0IDcuMTcgMCAxNC44My0xLjI4IDIyLjk3LTQuMzkgMzIuNjYtMTIuNDQgMzkuOTgtNDEuMzMgNDUuMzMtNjIuNDQgMi4yMS04LjcyIDMuOTktMTQuNDkgNS45NS0xOC44NyAxNi42MiAxMy42MSAzNi45NSAyNS44OCA2MS42NCAzNC4xNy05Ljk2IDM3LTMyLjE4IDkwLjgtNjAuMjYgOTAuOC0xMy4yNSAwLTI0IDEwLjc1LTI0IDI0czEwLjc1IDI0IDI0IDI0YzY2Ljc0IDAgOTcuMDUtODguNjMgMTA3LjQyLTEyOS4xNCA2LjY5LjYgMTMuNDIgMS4xNCAyMC41OCAxLjE0czEzLjg5LS41NCAyMC41OC0xLjE0QzM1MC45NSA0MjMuMzcgMzgxLjI2IDUxMiA0NDggNTEyYzEzLjI1IDAgMjQtMTAuNzUgMjQtMjRzLTEwLjc1LTI0LTI0LTI0Yy0yNy45NCAwLTUwLjIxLTUzLjgxLTYwLjIyLTkwLjgxIDI0LjY5LTguMjkgNDUtMjAuNTYgNjEuNjItMzQuMTYgMS45NiA0LjM4IDMuNzQgMTAuMTUgNS45NSAxOC44NyA1LjM0IDIxLjExIDEyLjY3IDUwIDQ1LjMzIDYyLjQ0IDguMTQgMy4xMSAxNS44IDQuMzkgMjIuOTcgNC4zOSAyMS41OSAwIDM4Ljg3LTExLjY5IDUyLjQyLTIwLjg0IDE3LjA1LTExLjU1IDIzLjI4LTE0LjQ1IDMxLjM5LTExLjM2IDEyLjM5IDQuNzUgMjYuMjctMS40NyAzMC45Ny0xMy44OCA0LjcxLTEyLjQtMS40OS0yNi4yNi0xMy44OS0zMC45OHpNNDQ4IDQ4YzguODIgMCAxNiA3LjE4IDE2IDE2cy03LjE4IDE2LTE2IDE2LTE2LTcuMTgtMTYtMTYgNy4xOC0xNiAxNi0xNnptLTI1NiAwYzguODIgMCAxNiA3LjE4IDE2IDE2cy03LjE4IDE2LTE2IDE2LTE2LTcuMTgtMTYtMTYgNy4xOC0xNiAxNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFzdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDE4NGMwLTMwLjg3OSAyNS4xMjItNTYgNTYtNTZoMTM2VjU2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNGgtODAuNjFDMjA0LjMwNiAxMi44OSAxODMuNjM3IDAgMTYwIDBzLTQ0LjMwNiAxMi44OS01NS4zOSAzMkgyNEMxMC43NDUgMzIgMCA0Mi43NDUgMCA1NnYzMzZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwNFYxODR6bTMyLTE0NGMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjRzLTEwLjc0NSAyNC0yNCAyNC0yNC0xMC43NDUtMjQtMjQgMTAuNzQ1LTI0IDI0LTI0em0xODQgMjQ4aDEwNHYyMDBjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDE4NGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0VjE4NGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoMTM2djEwNGMwIDEzLjIgMTAuOCAyNCAyNCAyNHptMTA0LTM4LjA1OVYyNTZoLTk2di05Nmg2LjA1OWEyNCAyNCAwIDAgMSAxNi45NyA3LjAyOWw2NS45NDEgNjUuOTQxYTI0LjAwMiAyNC4wMDIgMCAwIDEgNy4wMyAxNi45NzF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhdXNlQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bS0xNiAzMjhjMCA4LjgtNy4yIDE2LTE2IDE2aC00OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2djE2MHptMTEyIDBjMCA4LjgtNy4yIDE2LTE2IDE2aC00OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2djE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGF1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0IDQ3OUg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNzljMC0yNi41IDIxLjUtNDggNDgtNDhoOTZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4em0zMDQtNDhWNzljMC0yNi41LTIxLjUtNDgtNDgtNDhoLTk2Yy0yNi41IDAtNDggMjEuNS00OCA0OHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMjI0Yy03OS40MSAwLTE5MiAxMjIuNzYtMTkyIDIwMC4yNSAwIDM0LjkgMjYuODEgNTUuNzUgNzEuNzQgNTUuNzUgNDguODQgMCA4MS4wOS0yNS4wOCAxMjAuMjYtMjUuMDggMzkuNTEgMCA3MS44NSAyNS4wOCAxMjAuMjYgMjUuMDggNDQuOTMgMCA3MS43NC0yMC44NSA3MS43NC01NS43NUM0NDggMzQ2Ljc2IDMzNS40MSAyMjQgMjU2IDIyNHptLTE0Ny4yOC0xMi42MWMtMTAuNC0zNC42NS00Mi40NC01Ny4wOS03MS41Ni01MC4xMy0yOS4xMiA2Ljk2LTQ0LjI5IDQwLjY5LTMzLjg5IDc1LjM0IDEwLjQgMzQuNjUgNDIuNDQgNTcuMDkgNzEuNTYgNTAuMTMgMjkuMTItNi45NiA0NC4yOS00MC42OSAzMy44OS03NS4zNHptODQuNzItMjAuNzhjMzAuOTQtOC4xNCA0Ni40Mi00OS45NCAzNC41OC05My4zNnMtNDYuNTItNzIuMDEtNzcuNDYtNjMuODctNDYuNDIgNDkuOTQtMzQuNTggOTMuMzZjMTEuODQgNDMuNDIgNDYuNTMgNzIuMDIgNzcuNDYgNjMuODd6bTI4MS4zOS0yOS4zNGMtMjkuMTItNi45Ni02MS4xNSAxNS40OC03MS41NiA1MC4xMy0xMC40IDM0LjY1IDQuNzcgNjguMzggMzMuODkgNzUuMzQgMjkuMTIgNi45NiA2MS4xNS0xNS40OCA3MS41Ni01MC4xMyAxMC40LTM0LjY1LTQuNzctNjguMzgtMzMuODktNzUuMzR6bS0xNTYuMjcgMjkuMzRjMzAuOTQgOC4xNCA2NS42Mi0yMC40NSA3Ny40Ni02My44NyAxMS44NC00My40Mi0zLjY0LTg1LjIxLTM0LjU4LTkzLjM2cy02NS42MiAyMC40NS03Ny40NiA2My44N2MtMTEuODQgNDMuNDIgMy42NCA4NS4yMiAzNC41OCA5My4zNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMTg0IDI0OGMwIDMxLjkzLTguMiA2MS45Ny0yMi41NyA4OC4xN0wyODAgMjQwLjYzVjc0Ljk3Yzg2LjIzIDE1LjIxIDE1MiA5MC41IDE1MiAxODEuMDN6TTIxNiA0MzcuMDNjLTMzLjg2LTUuOTctNjQuNDktMjEuMi04OS4yOS00My4wMkwyMTYgMzIyLjU3djExNC40NnptNjQtMTE0LjQ2TDM2OS4yOSAzOTRjLTI0LjggMjEuODItNTUuNDMgMzcuMDUtODkuMjkgNDMuMDJWMzIyLjU3em0tNjQtMjQ3LjZ2MTY1LjY2TDg2LjU3IDM0NC4xN0M3Mi4yIDMxNy45NyA2NCAyODcuOTMgNjQgMjU2YzAtOTAuNTMgNjUuNzctMTY1LjgyIDE1Mi0xODEuMDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlbkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTcuOTQgNzQuMTdsLTYwLjExLTYwLjExYy0xOC43NS0xOC43NS00OS4xNi0xOC43NS02Ny45MSAwbC01Ni41NSA1Ni41NSAxMjguMDIgMTI4LjAyIDU2LjU1LTU2LjU1YzE4Ljc1LTE4Ljc1IDE4Ljc1LTQ5LjE1IDAtNjcuOTF6bS0yNDYuOC0yMC41M2MtMTUuNjItMTUuNjItNDAuOTQtMTUuNjItNTYuNTYgMEw3NS44IDE3Mi40M2MtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42MmwyMi42MyAyMi42M2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDEwMS44Mi0xMDEuODIgMjIuNjMgMjIuNjJMOTMuOTUgMjkwLjAzQTMyNy4wMzggMzI3LjAzOCAwIDAgMCAuMTcgNDg1LjExbC0uMDMuMjNjLTEuNyAxNS4yOCAxMS4yMSAyOC4yIDI2LjQ5IDI2LjUxYTMyNy4wMiAzMjcuMDIgMCAwIDAgMTk1LjM0LTkzLjhsMTk2Ljc5LTE5Ni43OS04Mi43Ny04Mi43Ny04NC44NS04NC44NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuRmFuY3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzkuMTggMjgyLjk0YTMyLjAwNSAzMi4wMDUgMCAwIDAtMjAuMjQgMjAuMjRMMCA0ODBsNC42OSA0LjY5IDkyLjg5LTkyLjg5Yy0uNjYtMi41Ni0xLjU3LTUuMDMtMS41Ny03LjggMC0xNy42NyAxNC4zMy0zMiAzMi0zMnMzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMmMtMi43NyAwLTUuMjQtLjkxLTcuOC0xLjU3bC05Mi44OSA5Mi44OUwzMiA1MTJsMTc2LjgyLTU4Ljk0YTMxLjk4MyAzMS45ODMgMCAwIDAgMjAuMjQtMjAuMjRsMzMuMDctODQuMDctOTguODgtOTguODgtODQuMDcgMzMuMDd6TTM2OS4yNSAyOC4zMkwxODYuMTQgMjI3LjgxbDk3Ljg1IDk3Ljg1IDE5OS40OS0xODMuMTFDNTY4LjQgNjcuNDggNDQzLjczLTU1Ljk0IDM2OS4yNSAyOC4zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuTmliIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzNi42IDEzOC43OWE2NC4wMDMgNjQuMDAzIDAgMCAwLTQzLjMxIDQxLjM1TDAgNDYwbDE0LjY5IDE0LjY5TDE2NC44IDMyNC41OGMtMi45OS02LjI2LTQuOC0xMy4xOC00LjgtMjAuNTggMC0yNi41MSAyMS40OS00OCA0OC00OHM0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OGMtNy40IDAtMTQuMzItMS44MS0yMC41OC00LjhMMzcuMzEgNDk3LjMxIDUyIDUxMmwyNzkuODYtOTMuMjlhNjQuMDAzIDY0LjAwMyAwIDAgMCA0MS4zNS00My4zMUw0MTYgMjI0IDI4OCA5NmwtMTUxLjQgNDIuNzl6bTM2MS4zNC02NC42MmwtNjAuMTEtNjAuMTFjLTE4Ljc1LTE4Ljc1LTQ5LjE2LTE4Ljc1LTY3LjkxIDBsLTU2LjU1IDU2LjU1IDEyOC4wMiAxMjguMDIgNTYuNTUtNTYuNTVjMTguNzUtMTguNzUgMTguNzUtNDkuMTUgMC02Ny45MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCA0ODBINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDh6TTIzOC4xIDE3Ny45TDEwMi40IDMxMy42bC02LjMgNTcuMWMtLjggNy42IDUuNiAxNC4xIDEzLjMgMTMuM2w1Ny4xLTYuM0wzMDIuMiAyNDJjMi4zLTIuMyAyLjMtNi4xIDAtOC41TDI0Ni43IDE3OGMtMi41LTIuNC02LjMtMi40LTguNi0uMXpNMzQ1IDE2NS4xTDMxNC45IDEzNWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTIzLjEgMjMuMWMtMi4zIDIuMy0yLjMgNi4xIDAgOC41bDU1LjUgNTUuNWMyLjMgMi4zIDYuMSAyLjMgOC41IDBMMzQ1IDE5OWM5LjMtOS4zIDkuMy0yNC41IDAtMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5MC43NCA5My4yNGwxMjguMDIgMTI4LjAyLTI3Ny45OSAyNzcuOTktMTE0LjE0IDEyLjZDMTEuMzUgNTEzLjU0LTEuNTYgNTAwLjYyLjE0IDQ4NS4zNGwxMi43LTExNC4yMiAyNzcuOS0yNzcuODh6bTIwNy4yLTE5LjA2bC02MC4xMS02MC4xMWMtMTguNzUtMTguNzUtNDkuMTYtMTguNzUtNjcuOTEgMGwtNTYuNTUgNTYuNTUgMTI4LjAyIDEyOC4wMiA1Ni41NS01Ni41NWMxOC43NS0xOC43NiAxOC43NS00OS4xNiAwLTY3LjkxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW5jaWxBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk3LjkgMTQyLjFsLTQ2LjEgNDYuMWMtNC43IDQuNy0xMi4zIDQuNy0xNyAwbC0xMTEtMTExYy00LjctNC43LTQuNy0xMi4zIDAtMTdsNDYuMS00Ni4xYzE4LjctMTguNyA0OS4xLTE4LjcgNjcuOSAwbDYwLjEgNjAuMWMxOC44IDE4LjcgMTguOCA0OS4xIDAgNjcuOXpNMjg0LjIgOTkuOEwyMS42IDM2Mi40LjQgNDgzLjljLTIuOSAxNi40IDExLjQgMzAuNiAyNy44IDI3LjhsMTIxLjUtMjEuMyAyNjIuNi0yNjIuNmM0LjctNC43IDQuNy0xMi4zIDAtMTdsLTExMS0xMTFjLTQuOC00LjctMTIuNC00LjctMTcuMSAwek0xMjQuMSAzMzkuOWMtNS41LTUuNS01LjUtMTQuMyAwLTE5LjhsMTU0LTE1NGM1LjUtNS41IDE0LjMtNS41IDE5LjggMHM1LjUgMTQuMyAwIDE5LjhsLTE1NCAxNTRjLTUuNSA1LjUtMTQuMyA1LjUtMTkuOCAwek04OCA0MjRoNDh2MzYuM2wtNjQuNSAxMS4zLTMxLjEtMzEuMUw1MS43IDM3Nkg4OHY0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuY2lsUnVsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA5LjQ2IDI0NC4wNGwxMzQuNTgtMTM0LjU2LTQ0LjEyLTQ0LjEyLTYxLjY4IDYxLjY4YTcuOTE5IDcuOTE5IDAgMCAxLTExLjIxIDBsLTExLjIxLTExLjIxYy0zLjEtMy4xLTMuMS04LjEyIDAtMTEuMjFsNjEuNjgtNjEuNjgtMzMuNjQtMzMuNjVDMTMxLjQ3LTMuMSAxMTEuMzktMy4xIDk5IDkuMjlMOS4yOSA5OWMtMTIuMzggMTIuMzktMTIuMzkgMzIuNDcgMCA0NC44NmwxMDAuMTcgMTAwLjE4em0zODguNDctMTE2LjhjMTguNzYtMTguNzYgMTguNzUtNDkuMTcgMC02Ny45M2wtNDUuMjUtNDUuMjVjLTE4Ljc2LTE4Ljc2LTQ5LjE4LTE4Ljc2LTY3Ljk1IDBsLTQ2LjAyIDQ2LjAxIDExMy4yIDExMy4yIDQ2LjAyLTQ2LjAzek0zMTYuMDggODIuNzFsLTI5NyAyOTYuOTZMLjMyIDQ4Ny4xMWMtMi41MyAxNC40OSAxMC4wOSAyNy4xMSAyNC41OSAyNC41NmwxMDcuNDUtMTguODRMNDI5LjI4IDE5NS45IDMxNi4wOCA4Mi43MXptMTg2LjYzIDI4NS40M2wtMzMuNjQtMzMuNjQtNjEuNjggNjEuNjhjLTMuMSAzLjEtOC4xMiAzLjEtMTEuMjEgMGwtMTEuMjEtMTEuMjFjLTMuMDktMy4xLTMuMDktOC4xMiAwLTExLjIxbDYxLjY4LTYxLjY4LTQ0LjE0LTQ0LjE0TDI2Ny45MyA0MDIuNWwxMDAuMjEgMTAwLjJjMTIuMzkgMTIuMzkgMzIuNDcgMTIuMzkgNDQuODYgMGw4OS43MS04OS43YzEyLjM5LTEyLjM5IDEyLjM5LTMyLjQ3IDAtNDQuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlb3BsZUFycm93cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiwxMjhBNjQsNjQsMCwxLDAsMzIsNjQsNjQsNjQsMCwwLDAsOTYsMTI4Wm0wLDE3Ni4wOGE0NC4xMSw0NC4xMSwwLDAsMSwxMy42NC0zMkwxODEuNzcsMjA0YzEuNjUtMS41NSwzLjc3LTIuMzEsNS42MS0zLjU3QTYzLjkxLDYzLjkxLDAsMCwwLDEyOCwxNjBINjRBNjQsNjQsMCwwLDAsMCwyMjR2OTZhMzIsMzIsMCwwLDAsMzIsMzJWNDgwYTMyLDMyLDAsMCwwLDMyLDMyaDY0YTMyLDMyLDAsMCwwLDMyLTMyVjM4My42MWwtNTAuMzYtNDcuNTNBNDQuMDgsNDQuMDgsMCwwLDEsOTYsMzA0LjA4Wk00ODAsMTI4YTY0LDY0LDAsMSwwLTY0LTY0QTY0LDY0LDAsMCwwLDQ4MCwxMjhabTMyLDMySDQ0OGE2My45MSw2My45MSwwLDAsMC01OS4zOCw0MC40MmMxLjg0LDEuMjcsNCwyLDUuNjIsMy41OWw3Mi4xMiw2OC4wNmE0NC4zNyw0NC4zNywwLDAsMSwwLDY0TDQxNiwzODMuNjJWNDgwYTMyLDMyLDAsMCwwLDMyLDMyaDY0YTMyLDMyLDAsMCwwLDMyLTMyVjM1MmEzMiwzMiwwLDAsMCwzMi0zMlYyMjRBNjQsNjQsMCwwLDAsNTEyLDE2MFpNNDQ0LjQsMjk1LjM0bC03Mi4xMi02OC4wNkExMiwxMiwwLDAsMCwzNTIsMjM2djM2SDIyNFYyMzZhMTIsMTIsMCwwLDAtMjAuMjgtOC43M0wxMzEuNiwyOTUuMzRhMTIuNCwxMi40LDAsMCwwLDAsMTcuNDdsNzIuMTIsNjguMDdBMTIsMTIsMCwwLDAsMjI0LDM3Mi4xNFYzMzZIMzUydjM2LjE0YTEyLDEyLDAsMCwwLDIwLjI4LDguNzRsNzIuMTItNjguMDdBMTIuNCwxMi40LDAsMCwwLDQ0NC40LDI5NS4zNFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVvcGxlQ2FycnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzE1NC41IDAgMTI4IDAgODAgMjEuNSA4MCA0OHMyMS41IDQ4IDQ4IDQ4em0zODQgMGMyNi41IDAgNDgtMjEuNSA0OC00OFM1MzguNSAwIDUxMiAwcy00OCAyMS41LTQ4IDQ4IDIxLjUgNDggNDggNDh6bTEyNS43IDM3Mi4xbC00NC0xMTAtNDEuMSA0Ni40LTIgMTguMiAyNy43IDY5LjJjNSAxMi41IDE3IDIwLjEgMjkuNyAyMC4xIDQgMCA4LS43IDExLjktMi4zIDE2LjQtNi42IDI0LjQtMjUuMiAxNy44LTQxLjZ6bS0zNC4yLTIwOS44TDU4NSAxNzguMWMtNC42LTIwLTE4LjYtMzYuOC0zNy41LTQ0LjktMTguNS04LTM5LTYuNy01Ni4xIDMuMy0yMi43IDEzLjQtMzkuNyAzNC41LTQ4LjEgNTkuNEw0MzIgMjI5LjggNDE2IDI0MHYtOTZjMC04LjgtNy4yLTE2LTE2LTE2SDI0MGMtOC44IDAtMTYgNy4yLTE2IDE2djk2bC0xNi4xLTEwLjItMTEuMy0zMy45Yy04LjMtMjUtMjUuNC00Ni00OC4xLTU5LjQtMTcuMi0xMC0zNy42LTExLjMtNTYuMS0zLjMtMTguOSA4LjEtMzIuOSAyNC45LTM3LjUgNDQuOWwtMTguNCA4MC4yYy00LjYgMjAgLjcgNDEuMiAxNC40IDU2LjdsNjcuMiA3NS45IDEwLjEgOTIuNkMxMzAgNDk5LjggMTQzLjggNTEyIDE2MCA1MTJjMS4yIDAgMi4zLS4xIDMuNS0uMiAxNy42LTEuOSAzMC4yLTE3LjcgMjguMy0zNS4zbC0xMC4xLTkyLjhjLTEuNS0xMy02LjktMjUuMS0xNS42LTM1bC00My4zLTQ5IDE3LjYtNzAuMyA2LjggMjAuNGM0LjEgMTIuNSAxMS45IDIzLjQgMjQuNSAzMi42bDUxLjEgMzIuNWM0LjYgMi45IDEyLjEgNC42IDE3LjIgNWgxNjBjNS4xLS40IDEyLjYtMi4xIDE3LjItNWw1MS4xLTMyLjVjMTIuNi05LjIgMjAuNC0yMCAyNC41LTMyLjZsNi44LTIwLjQgMTcuNiA3MC4zLTQzLjMgNDljLTguNyA5LjktMTQuMSAyMi0xNS42IDM1bC0xMC4xIDkyLjhjLTEuOSAxNy42IDEwLjggMzMuNCAyOC4zIDM1LjMgMS4yLjEgMi4zLjIgMy41LjIgMTYuMSAwIDMwLTEyLjEgMzEuOC0yOC41bDEwLjEtOTIuNiA2Ny4yLTc1LjljMTMuNi0xNS41IDE5LTM2LjcgMTQuNC01Ni43ek00Ni4zIDM1OC4xbC00NCAxMTBjLTYuNiAxNi40IDEuNCAzNSAxNy44IDQxLjYgMTYuOCA2LjYgMzUuMS0xLjcgNDEuNi0xNy44bDI3LjctNjkuMi0yLTE4LjItNDEuMS00Ni40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXBwZXJIb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMwLjY3IDI2My4xMlYxNzMuNGwtNTIuNzUtMjQuMjJDMjE5LjQ0IDIxOC43NiAxOTcuNTggNDAwIDU2IDQwMGE1NiA1NiAwIDAgMCAwIDExMmMyMTIuNjQgMCAzNzAuNjUtMTIyLjg3IDQxOS4xOC0yMTAuMzRsLTM3LjA1LTM4LjU0em0xMzEuMDktMTI4LjM3QzQ5My45MiA3NC45MSA0NzcuMTggMjYuNDggNDU4LjYyIDNhOCA4IDAgMCAwLTExLjkzLS41OWwtMjIuOSAyM2E4LjA2IDguMDYgMCAwIDAtLjg5IDEwLjIzYzYuODYgMTAuMzYgMTcuMDUgMzUuMS0xLjQgNzIuMzJBMTQyLjg1IDE0Mi44NSAwIDAgMCAzNjQuMzQgOTZjLTI4IDAtNTQgOC41NC03Ni4zNCAyMi41OWw3NC42NyAzNC4yOXY3OC4yNGg4OS4wOUw1MDYuNDQgMjg4YzMuMjYtMTIuNjIgNS41Ni0yNS42MyA1LjU2LTM5LjMxYTE1NCAxNTQgMCAwIDAtNTAuMjQtMTEzLjk0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJjZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAyMjRjNjEuOSAwIDExMi01MC4xIDExMi0xMTJTMTczLjkgMCAxMTIgMCAwIDUwLjEgMCAxMTJzNTAuMSAxMTIgMTEyIDExMnptMC0xNjBjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDgtNDgtMjEuNS00OC00OCAyMS41LTQ4IDQ4LTQ4em0yMjQgMjI0Yy02MS45IDAtMTEyIDUwLjEtMTEyIDExMnM1MC4xIDExMiAxMTIgMTEyIDExMi01MC4xIDExMi0xMTItNTAuMS0xMTItMTEyLTExMnptMCAxNjBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4ek0zOTIuMy4ybDMxLjYtLjFjMTkuNC0uMSAzMC45IDIxLjggMTkuNyAzNy44TDc3LjQgNTAxLjZhMjMuOTUgMjMuOTUgMCAwIDEtMTkuNiAxMC4ybC0zMy40LjFjLTE5LjUgMC0zMC45LTIxLjktMTkuNy0zNy44bDM2OC00NjMuN0MzNzcuMiA0IDM4NC41LjIgMzkyLjMuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyY2VudGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDkuMjUgMTczLjI1YzI0Ljk5LTI0Ljk5IDI0Ljk5LTY1LjUyIDAtOTAuNTEtMjQuOTktMjQuOTktNjUuNTItMjQuOTktOTAuNTEgMC0yNC45OSAyNC45OS0yNC45OSA2NS41MiAwIDkwLjUxIDI1IDI1IDY1LjUyIDI1IDkwLjUxIDB6bTI1NiAxNjUuNDljLTI0Ljk5LTI0Ljk5LTY1LjUyLTI0Ljk5LTkwLjUxIDAtMjQuOTkgMjQuOTktMjQuOTkgNjUuNTIgMCA5MC41MSAyNC45OSAyNC45OSA2NS41MiAyNC45OSA5MC41MSAwIDI1LTI0Ljk5IDI1LTY1LjUxIDAtOTAuNTF6bS0xLjk0LTIzMS40M2wtMjIuNjItMjIuNjJjLTEyLjUtMTIuNS0zMi43Ni0xMi41LTQ1LjI1IDBMMjAuNjkgMzU5LjQ0Yy0xMi41IDEyLjUtMTIuNSAzMi43NiAwIDQ1LjI1bDIyLjYyIDIyLjYyYzEyLjUgMTIuNSAzMi43NiAxMi41IDQ1LjI1IDBsMjc0Ljc1LTI3NC43NWMxMi41LTEyLjQ5IDEyLjUtMzIuNzUgMC00NS4yNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyc29uQm9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDQ5NmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyMGgtNjR2MTc2em0zMi0yNzJoLTUwLjlsLTQ1LjItNDUuM0MxMTUuOCAxNjYuNiA5OS43IDE2MCA4Mi43IDE2MEg2NGMtMTcuMSAwLTMzLjIgNi43LTQ1LjMgMTguOEM2LjcgMTkwLjkgMCAyMDcgMCAyMjQuMUwuMiAzMjAgMCA0ODBjMCAxNy43IDE0LjMgMzIgMzEuOSAzMiAxNy42IDAgMzItMTQuMyAzMi0zMmwuMS0xMDAuN2MuOS41IDEuNiAxLjMgMi41IDEuN2wyOS4xIDQzdjU2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ2LTU2LjVjMC05LjktMi4zLTE5LjgtNi43LTI4LjZsLTQxLjItNjEuM1YyNTNsMjAuOSAyMC45YzkuMSA5LjEgMjEuMSAxNC4xIDMzLjkgMTQuMUgyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJ6TTY0IDEyOGMyNi41IDAgNDgtMjEuNSA0OC00OFM5MC41IDMyIDY0IDMyIDE2IDUzLjUgMTYgODBzMjEuNSA0OCA0OCA0OHptMjI0LTk2bDMxLjUgMjIzLjEtMzAuOSAxNTQuNmMtNC4zIDIxLjYgMTMgMzguMyAzMS40IDM4LjMgMTUuMiAwIDI4LTkuMSAzMi4zLTMwLjQuOSAxNi45IDE0LjYgMzAuNCAzMS43IDMwLjQgMTcuNyAwIDMyLTE0LjMgMzItMzIgMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYwSDI4OHYzMnptLTk2IDB2MTYwaDY0VjBoLTMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNNTQ0IDBoLTMydjQ5NmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9uZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTcuMzkgMzYxLjhsLTExMi00OGEyNCAyNCAwIDAgMC0yOCA2LjlsLTQ5LjYgNjAuNkEzNzAuNjYgMzcwLjY2IDAgMCAxIDEzMC42IDIwNC4xMWw2MC42LTQ5LjZhMjMuOTQgMjMuOTQgMCAwIDAgNi45LTI4bC00OC0xMTJBMjQuMTYgMjQuMTYgMCAwIDAgMTIyLjYuNjFsLTEwNCAyNEEyNCAyNCAwIDAgMCAwIDQ4YzAgMjU2LjUgMjA3LjkgNDY0IDQ2NCA0NjRhMjQgMjQgMCAwIDAgMjMuNC0xOC42bDI0LTEwNGEyNC4yOSAyNC4yOSAwIDAgMC0xNC4wMS0yNy42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9uZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2OC4yIDM4MS40bC00OS42LTYwLjZjLTYuOC04LjMtMTguMi0xMS4xLTI4LTYuOWwtMTEyIDQ4Yy0xMC43IDQuNi0xNi41IDE2LjEtMTMuOSAyNy41bDI0IDEwNGMyLjUgMTAuOCAxMi4xIDE4LjYgMjMuNCAxOC42IDEwMC43IDAgMTkzLjctMzIuNCAyNjkuNy04Ni45bC04MC02MS44Yy0xMC45IDYuNS0yMi4xIDEyLjctMzMuNiAxOC4xem0zNjUuNiA3Ni43TDQ3NS4xIDMzNS41QzUzNy45IDI1Ni40IDU3NiAxNTYuOSA1NzYgNDhjMC0xMS4yLTcuNy0yMC45LTE4LjYtMjMuNGwtMTA0LTI0Yy0xMS4zLTIuNi0yMi45IDMuMy0yNy41IDEzLjlsLTQ4IDExMmMtNC4yIDkuOC0xLjQgMjEuMyA2LjkgMjhsNjAuNiA0OS42Yy0xMi4yIDI2LjEtMjcuOSA1MC4zLTQ2IDcyLjhMNDUuNSAzLjRDMzguNS0yIDI4LjUtLjggMjMgNi4yTDMuNCAzMS40Yy01LjQgNy00LjIgMTcgMi44IDIyLjRsNTg4LjQgNDU0LjdjNyA1LjQgMTcgNC4yIDIyLjUtMi44bDE5LjYtMjUuM2M1LjQtNi44IDQuMS0xNi45LTIuOS0yMi4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9uZVNxdWFyZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhBNDggNDggMCAwIDAgMCA4MHYzNTJhNDggNDggMCAwIDAgNDggNDhoMzUyYTQ4IDQ4IDAgMCAwIDQ4LTQ4VjgwYTQ4IDQ4IDAgMCAwLTQ4LTQ4em0tMTYuMzkgMzA3LjM3bC0xNSA2NUExNSAxNSAwIDAgMSAzNTQgNDE2QzE5NCA0MTYgNjQgMjg2LjI5IDY0IDEyNmExNS43IDE1LjcgMCAwIDEgMTEuNjMtMTQuNjFsNjUtMTVBMTguMjMgMTguMjMgMCAwIDEgMTQ0IDk2YTE2LjI3IDE2LjI3IDAgMCAxIDEzLjc5IDkuMDlsMzAgNzBBMTcuOSAxNy45IDAgMCAxIDE4OSAxODFhMTcgMTcgMCAwIDEtNS41IDExLjYxbC0zNy44OSAzMWEyMzEuOTEgMjMxLjkxIDAgMCAwIDExMC43OCAxMTAuNzhsMzEtMzcuODlBMTcgMTcgMCAwIDEgMjk5IDI5MWExNy44NSAxNy44NSAwIDAgMSA1LjkxIDEuMjFsNzAgMzBBMTYuMjUgMTYuMjUgMCAwIDEgMzg0IDMzNmExNy40MSAxNy40MSAwIDAgMS0uMzkgMy4zN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvbmVTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjQ5IDMyIDAgNTMuNDkgMCA4MHYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY4MGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4ek05NCA0MTZjLTcuMDMzIDAtMTMuMDU3LTQuODczLTE0LjYxNi0xMS42MjdsLTE0Ljk5OC02NWExNSAxNSAwIDAgMSA4LjcwNy0xNy4xNmw2OS45OTgtMjkuOTk5YTE1IDE1IDAgMCAxIDE3LjUxOCA0LjI4OWwzMC45OTcgMzcuODg1YzQ4Ljk0NC0yMi45NjMgODguMjk3LTYyLjg1OCAxMTAuNzgxLTExMC43OGwtMzcuODg2LTMwLjk5N2ExNS4wMDEgMTUuMDAxIDAgMCAxLTQuMjg5LTE3LjUxOGwzMC02OS45OThhMTUgMTUgMCAwIDEgMTcuMTYtOC43MDdsNjUgMTQuOTk4QTE0Ljk5NyAxNC45OTcgMCAwIDEgMzg0IDEyNmMwIDE2MC4yOTItMTI5Ljk0NSAyOTAtMjkwIDI5MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvbmVWb2x1bWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTcuMzMzIDUwNi45NjZjLTEyOS44NzQtMTI5Ljg3NC0xMjkuNjgxLTM0MC4yNTIgMC00NjkuOTMzIDUuNjk4LTUuNjk4IDE0LjUyNy02LjYzMiAyMS4yNjMtMi40MjJsNjQuODE3IDQwLjUxM2ExNy4xODcgMTcuMTg3IDAgMCAxIDYuODQ5IDIwLjk1OGwtMzIuNDA4IDgxLjAyMWExNy4xODggMTcuMTg4IDAgMCAxLTE3LjY2OSAxMC43MTlsLTU1LjgxLTUuNThjLTIxLjA1MSA1OC4yNjEtMjAuNjEyIDEyMi40NzEgMCAxNzkuNTE1bDU1LjgxMS01LjU4MWExNy4xODggMTcuMTg4IDAgMCAxIDE3LjY2OSAxMC43MTlsMzIuNDA4IDgxLjAyMmExNy4xODggMTcuMTg4IDAgMCAxLTYuODQ5IDIwLjk1OGwtNjQuODE3IDQwLjUxM2ExNy4xOSAxNy4xOSAwIDAgMS0yMS4yNjQtMi40MjJ6TTI0Ny4xMjYgOTUuNDczYzExLjgzMiAyMC4wNDcgMTEuODMyIDQ1LjAwOCAwIDY1LjA1NS0zLjk1IDYuNjkzLTEzLjEwOCA3Ljk1OS0xOC43MTggMi41ODFsLTUuOTc1LTUuNzI2Yy0zLjkxMS0zLjc0OC00Ljc5My05LjYyMi0yLjI2MS0xNC40MWEzMi4wNjMgMzIuMDYzIDAgMCAwIDAtMjkuOTQ1Yy0yLjUzMy00Ljc4OC0xLjY1LTEwLjY2MiAyLjI2MS0xNC40MWw1Ljk3NS01LjcyNmM1LjYxLTUuMzc4IDE0Ljc2OC00LjExMiAxOC43MTggMi41ODF6bTkxLjc4Ny05MS4xODdjNjAuMTQgNzEuNjA0IDYwLjA5MiAxNzUuODgyIDAgMjQ3LjQyOC00LjQ3NCA1LjMyNy0xMi41MyA1Ljc0Ni0xNy41NTIuOTMzbC01Ljc5OC01LjU1N2MtNC41Ni00LjM3MS00Ljk3Ny0xMS41MjktLjkzLTE2LjM3OSA0OS42ODctNTkuNTM4IDQ5LjY0Ni0xNDUuOTMzIDAtMjA1LjQyMi00LjA0Ny00Ljg1LTMuNjMxLTEyLjAwOC45My0xNi4zNzlsNS43OTgtNS41NTdjNS4wMjItNC44MTMgMTMuMDc4LTQuMzk0IDE3LjU1Mi45MzN6bS00NS45NzIgNDQuOTQxYzM2LjA1IDQ2LjMyMiAzNi4xMDggMTExLjE0OSAwIDE1Ny41NDYtNC4zOSA1LjY0MS0xMi42OTcgNi4yNTEtMTcuODU2IDEuMzA0bC01LjgxOC01LjU3OWMtNC40LTQuMjE5LTQuOTk4LTExLjA5NS0xLjI4NS0xNS45MzEgMjYuNTM2LTM0LjU2NCAyNi41MzQtODIuNTcyIDAtMTE3LjEzNC0zLjcxMy00LjgzNi0zLjExNS0xMS43MTEgMS4yODUtMTUuOTMxbDUuODE4LTUuNTc5YzUuMTU5LTQuOTQ3IDEzLjQ2Ni00LjMzNyAxNy44NTYgMS4zMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5My40IDI0LjZsLTEwNC0yNGMtMTEuMy0yLjYtMjIuOSAzLjMtMjcuNSAxMy45bC00OCAxMTJjLTQuMiA5LjgtMS40IDIxLjMgNi45IDI4bDYwLjYgNDkuNmMtMzYgNzYuNy05OC45IDE0MC41LTE3Ny4yIDE3Ny4ybC00OS42LTYwLjZjLTYuOC04LjMtMTguMi0xMS4xLTI4LTYuOWwtMTEyIDQ4QzMuOSAzNjYuNS0yIDM3OC4xLjYgMzg5LjRsMjQgMTA0QzI3LjEgNTA0LjIgMzYuNyA1MTIgNDggNTEyYzI1Ni4xIDAgNDY0LTIwNy41IDQ2NC00NjQgMC0xMS4yLTcuNy0yMC45LTE4LjYtMjMuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvdG9WaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDggMEgxNjBhMzIgMzIgMCAwIDAtMzIgMzJ2OTZoMTYwVjY0aDE5MnYzMjBoMTI4YTMyIDMyIDAgMCAwIDMyLTMyVjMyYTMyIDMyIDAgMCAwLTMyLTMyek0yMzIgMTAzYTkgOSAwIDAgMS05IDloLTMwYTkgOSAwIDAgMS05LTlWNzNhOSA5IDAgMCAxIDktOWgzMGE5IDkgMCAwIDEgOSA5em0zNTIgMjA4YTkgOSAwIDAgMS05IDloLTMwYTkgOSAwIDAgMS05LTl2LTMwYTkgOSAwIDAgMSA5LTloMzBhOSA5IDAgMCAxIDkgOXptMC0xMDRhOSA5IDAgMCAxLTkgOWgtMzBhOSA5IDAgMCAxLTktOXYtMzBhOSA5IDAgMCAxIDktOWgzMGE5IDkgMCAwIDEgOSA5em0wLTEwNGE5IDkgMCAwIDEtOSA5aC0zMGE5IDkgMCAwIDEtOS05VjczYTkgOSAwIDAgMSA5LTloMzBhOSA5IDAgMCAxIDkgOXptLTE2OCA1N0gzMmEzMiAzMiAwIDAgMC0zMiAzMnYyODhhMzIgMzIgMCAwIDAgMzIgMzJoMzg0YTMyIDMyIDAgMCAwIDMyLTMyVjE5MmEzMiAzMiAwIDAgMC0zMi0zMnpNOTYgMjI0YTMyIDMyIDAgMSAxLTMyIDMyIDMyIDMyIDAgMCAxIDMyLTMyem0yODggMjI0SDY0di0zMmw2NC02NCAzMiAzMiAxMjgtMTI4IDk2IDk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaWdneUJhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTYwIDIyNGgtMjkuNWMtOC44LTIwLTIxLjYtMzcuNy0zNy40LTUyLjVMNTEyIDk2aC0zMmMtMjkuNCAwLTU1LjQgMTMuNS03MyAzNC4zLTcuNi0xLjEtMTUuMS0yLjMtMjMtMi4zSDI1NmMtNzcuNCAwLTE0MS45IDU1LTE1Ni44IDEyOEg1NmMtMTQuOCAwLTI2LjUtMTMuNS0yMy41LTI4LjhDMzQuNyAyMTUuOCA0NS40IDIwOCA1NyAyMDhoMWMzLjMgMCA2LTIuNyA2LTZ2LTIwYzAtMy4zLTIuNy02LTYtNi0yOC41IDAtNTMuOSAyMC40LTU3LjUgNDguNkMtMy45IDI1OC44IDIyLjcgMjg4IDU2IDI4OGg0MGMwIDUyLjIgMjUuNCA5OC4xIDY0IDEyNy4zVjQ5NmMwIDguOCA3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2di00OGgxMjh2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNnYtODAuN2MxMS44LTguOSAyMi4zLTE5LjQgMzEuMy0zMS4zSDU2MGM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNnptLTEyOCA2NGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2ek0yNTYgOTZoMTI4YzUuNCAwIDEwLjcuNCAxNS45LjggMC0uMy4xLS41LjEtLjggMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAyLjEuNSA0LjEuNiA2LjIgMTUuMi0zLjkgMzEtNi4yIDQ3LjQtNi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaWxscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgMzJDNTAuMSAzMiAwIDgyLjEgMCAxNDR2MjI0YzAgNjEuOSA1MC4xIDExMiAxMTIgMTEyczExMi01MC4xIDExMi0xMTJWMTQ0YzAtNjEuOS01MC4xLTExMi0xMTItMTEyem00OCAyMjRINjRWMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2MTEyem0xMzkuNy0yOS43Yy0zLjUtMy41LTkuNC0zLjEtMTIuMy44LTQ1LjMgNjIuNS00MC40IDE1MC4xIDE1LjkgMjA2LjQgNTYuMyA1Ni4zIDE0My45IDYxLjIgMjA2LjQgMTUuOSA0LTIuOSA0LjMtOC44LjgtMTIuM0wyOTkuNyAyMjYuM3ptMjI5LjgtMTljLTU2LjMtNTYuMy0xNDMuOS02MS4yLTIwNi40LTE1LjktNCAyLjktNC4zIDguOC0uOCAxMi4zbDIxMC44IDIxMC44YzMuNSAzLjUgOS40IDMuMSAxMi4zLS44IDQ1LjMtNjIuNiA0MC41LTE1MC4xLTE1LjktMjA2LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpenphU2xpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU4Ljg3LjE1Yy0xNi4xNi0xLjUyLTMxLjIgOC40Mi0zNS4zMyAyNC4xMmwtMTQuODEgNTYuMjdjMTg3LjYyIDUuNDkgMzE0LjU0IDEzMC42MSAzMjIuNDggMzE3bDU2Ljk0LTE1Ljc4YzE1LjcyLTQuMzYgMjUuNDktMTkuNjggMjMuNjItMzUuOUM0OTAuODkgMTY1LjA4IDM0MC43OCAxNy4zMiAxNTguODcuMTV6bS01OC40NyAxMTJMLjU1IDQ5MS42NGExNi4yMSAxNi4yMSAwIDAgMCAyMCAxOS43NWwzNzktMTA1LjFjLTQuMjctMTc0Ljg5LTEyMy4wOC0yOTIuMTQtMjk5LjE1LTI5NC4xek0xMjggNDE2YTMyIDMyIDAgMSAxIDMyLTMyIDMyIDMyIDAgMCAxLTMyIDMyem00OC0xNTJhMzIgMzIgMCAxIDEgMzItMzIgMzIgMzIgMCAwIDEtMzIgMzJ6bTEwNCAxMDRhMzIgMzIgMCAxIDEgMzItMzIgMzIgMzIgMCAwIDEtMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYWNlT2ZXb3JzaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyMC42MSAzNjYuNTVMNTEyIDMyMHYxOTJoMTEyYzguODQgMCAxNi03LjE2IDE2LTE2VjM5NS45NmEzMiAzMiAwIDAgMC0xOS4zOS0yOS40MXpNMCAzOTUuOTZWNDk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDExMlYzMjBMMTkuMzkgMzY2LjU1QTMyIDMyIDAgMCAwIDAgMzk1Ljk2em00NjQuNDYtMTQ5LjI4TDQxNiAyMTcuNlYxMDIuNjNjMC04LjQ5LTMuMzctMTYuNjItOS4zOC0yMi42M0wzMzEuMzEgNC42OWMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjIgMEwyMzMuMzggODBjLTYgNi05LjM4IDE0LjE0LTkuMzggMjIuNjNWMjE3LjZsLTQ4LjQ2IDI5LjA4QTMxLjk5NyAzMS45OTcgMCAwIDAgMTYwIDI3NC4xMlY1MTJoOTZ2LTk2YzAtMzUuMzUgMjguNjYtNjQgNjQtNjRzNjQgMjguNjUgNjQgNjR2OTZoOTZWMjc0LjEyYzAtMTEuMjQtNS45LTIxLjY2LTE1LjU0LTI3LjQ0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGFuZUFycml2YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDQ0OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjA4YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNNDQuODEgMjA1LjY2bDg4Ljc0IDgwYTYyLjYwNyA2Mi42MDcgMCAwIDAgMjUuNDcgMTMuOTNsMjg3LjYgNzguMzVjMjYuNDggNy4yMSA1NC41NiA4LjcyIDgxIDEuMzYgMjkuNjctOC4yNyA0My40NC0yMS4yMSA0Ny4yNS0zNS43MSAzLjgzLTE0LjUtMS43My0zMi43MS0yMy4zNy01NC45Ni0xOS4yOC0xOS44Mi00NC4zNS0zMi43OS03MC44My00MGwtOTcuNTEtMjYuNTZMMjgyLjggMzAuMjJjLTEuNTEtNS44MS01Ljk1LTEwLjM1LTExLjY2LTExLjkxTDIwNi4wNS41OGMtMTAuNTYtMi44OC0yMC45IDUuMzItMjAuNzEgMTYuNDRsNDcuOTIgMTY0LjIxLTEwMi4yLTI3Ljg0LTI3LjU5LTY3Ljg4Yy0xLjkzLTQuODktNi4wMS04LjU3LTExLjAyLTkuOTNMNTIuNzIgNjQuNzVjLTEwLjM0LTIuODItMjAuNTMgNS0yMC43MiAxNS44OGwuMjMgMTAxLjc4Yy4xOSA4LjkxIDYuMDMgMTcuMzQgMTIuNTggMjMuMjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lRGVwYXJ0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCA0NDhIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDYwOGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTgwLjU1IDM0MS4yN2M2LjI4IDYuODQgMTUuMSAxMC43MiAyNC4zMyAxMC43MWwxMzAuNTQtLjE4YTY1LjYyIDY1LjYyIDAgMCAwIDI5LjY0LTcuMTJsMjkwLjk2LTE0Ny42NWMyNi43NC0xMy41NyA1MC43MS0zMi45NCA2Ny4wMi01OC4zMSAxOC4zMS0yOC40OCAyMC4zLTQ5LjA5IDEzLjA3LTYzLjY1LTcuMjEtMTQuNTctMjQuNzQtMjUuMjctNTguMjUtMjcuNDUtMjkuODUtMS45NC01OS41NCA1LjkyLTg2LjI4IDE5LjQ4bC05OC41MSA0OS45OS0yMTguNy04Mi4wNmExNy43OTkgMTcuNzk5IDAgMCAwLTE4LTEuMTFMOTAuNjIgNjcuMjljLTEwLjY3IDUuNDEtMTMuMjUgMTkuNjUtNS4xNyAyOC41M2wxNTYuMjIgOTguMS0xMDMuMjEgNTIuMzgtNzIuMzUtMzYuNDdhMTcuODA0IDE3LjgwNCAwIDAgMC0xNi4wNy4wMkw5LjkxIDIzMC4yMmMtMTAuNDQgNS4zLTEzLjE5IDE5LjEyLTUuNTcgMjguMDhsNzYuMjEgODIuOTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIuNDgsMTQ3Ljg4LDY0LDI1NiwzMi40OCwzNjQuMTNBMTYsMTYsMCwwLDAsNDgsMzg0SDg4YTE2LDE2LDAsMCwwLDEyLjgtNi40MUwxNDQsMzIwSDI0Ni44NWwtNDksMTcxLjU5QTE2LDE2LDAsMCwwLDIxMy4yLDUxMmg2NS41YTE2LDE2LDAsMCwwLDEzLjg5LTguMDZsNjYuNi0xMTYuNTRMMzQuMzUsMTM2LjM0QTE1LjQ3LDE1LjQ3LDAsMCwwLDMyLjQ4LDE0Ny44OFpNNjMzLjgyLDQ1OC4wOSw0NTUuMTQsMzIwSDUxMmMzNS4zNCwwLDk2LTI4LjY2LDk2LTY0cy02MC42Ni02NC05Ni02NEgzOTcuN0wyOTIuNjEsOC4wNkMyOTAuMDYsMy42MSwyODMuODQsMCwyNzguNzEsMEgyMTMuMmExNiwxNiwwLDAsMC0xNS4zOCwyMC4zOWwzNi45NCwxMjkuMjlMNDUuNDYsMy4zOEExNiwxNiwwLDAsMCwyMyw2LjE5TDMuMzcsMzEuNDVBMTYsMTYsMCwwLDAsNi4xOCw1My45MUw1OTQuNTQsNTA4LjYzQTE2LDE2LDAsMCwwLDYxNyw1MDUuODFsMTkuNjQtMjUuMjZBMTYsMTYsMCwwLDAsNjMzLjgyLDQ1OC4wOVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxhbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDE5MkgzNjUuNzFMMjYwLjYxIDguMDZBMTYuMDE0IDE2LjAxNCAwIDAgMCAyNDYuNzEgMGgtNjUuNWMtMTAuNjMgMC0xOC4zIDEwLjE3LTE1LjM4IDIwLjM5TDIxNC44NiAxOTJIMTEybC00My4yLTU3LjZjLTMuMDItNC4wMy03Ljc3LTYuNC0xMi44LTYuNEgxNi4wMUM1LjYgMTI4LTIuMDQgMTM3Ljc4LjQ5IDE0Ny44OEwzMiAyNTYgLjQ5IDM2NC4xMkMtMi4wNCAzNzQuMjIgNS42IDM4NCAxNi4wMSAzODRINTZjNS4wNCAwIDkuNzgtMi4zNyAxMi44LTYuNEwxMTIgMzIwaDEwMi44NmwtNDkuMDMgMTcxLjZjLTIuOTIgMTAuMjIgNC43NSAyMC40IDE1LjM4IDIwLjRoNjUuNWM1Ljc0IDAgMTEuMDQtMy4wOCAxMy44OS04LjA2TDM2NS43MSAzMjBINDgwYzM1LjM1IDAgOTYtMjguNjUgOTYtNjRzLTYwLjY1LTY0LTk2LTY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGF5Q2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTExNS43IDI3MmwtMTc2IDEwMWMtMTUuOCA4LjgtMzUuNy0yLjUtMzUuNy0yMVYxNTJjMC0xOC40IDE5LjgtMjkuOCAzNS43LTIxbDE3NiAxMDdjMTYuNCA5LjIgMTYuNCAzMi45IDAgNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI0LjQgMjE0LjdMNzIuNCA2LjZDNDMuOC0xMC4zIDAgNi4xIDAgNDcuOVY0NjRjMCAzNy41IDQwLjcgNjAuMSA3Mi40IDQxLjNsMzUyLTIwOGMzMS40LTE4LjUgMzEuNS02NC4xIDAtODIuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1ZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAsMzJhMzIsMzIsMCwwLDAtNjQsMHY5Nmg2NFptNDgsMTI4SDE2QTE2LDE2LDAsMCwwLDAsMTc2djMyYTE2LDE2LDAsMCwwLDE2LDE2SDMydjMyQTE2MC4wNywxNjAuMDcsMCwwLDAsMTYwLDQxMi44VjUxMmg2NFY0MTIuOEExNjAuMDcsMTYwLjA3LDAsMCwwLDM1MiwyNTZWMjI0aDE2YTE2LDE2LDAsMCwwLDE2LTE2VjE3NkExNiwxNiwwLDAsMCwzNjgsMTYwWk0xMjgsMzJhMzIsMzIsMCwwLDAtNjQsMHY5Nmg2NFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1c0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0xNDQgMjc2YzAgNi42LTUuNCAxMi0xMiAxMmgtOTJ2OTJjMCA2LjYtNS40IDEyLTEyIDEyaC01NmMtNi42IDAtMTItNS40LTEyLTEydi05MmgtOTJjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNTZjMC02LjYgNS40LTEyIDEyLTEyaDkydi05MmMwLTYuNiA1LjQtMTIgMTItMTJoNTZjNi42IDAgMTIgNS40IDEyIDEydjkyaDkyYzYuNiAwIDEyIDUuNCAxMiAxMnY1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1c1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMzIgMjUyYzAgNi42LTUuNCAxMi0xMiAxMmgtOTJ2OTJjMCA2LjYtNS40IDEyLTEyIDEyaC01NmMtNi42IDAtMTItNS40LTEyLTEydi05Mkg5MmMtNi42IDAtMTItNS40LTEyLTEydi01NmMwLTYuNiA1LjQtMTIgMTItMTJoOTJ2LTkyYzAtNi42IDUuNC0xMiAxMi0xMmg1NmM2LjYgMCAxMiA1LjQgMTIgMTJ2OTJoOTJjNi42IDAgMTIgNS40IDEyIDEydjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAyMDhIMjcyVjY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjE0NEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDE0NHYxNDRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjMwNGgxNDRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUG9kY2FzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjcuNDI5IDQ4OC41NjNDMjYyLjI4NiA1MDcuNTczIDI0Mi44NTggNTEyIDIyNCA1MTJjLTE4Ljg1NyAwLTM4LjI4Ni00LjQyNy00My40MjgtMjMuNDM3QzE3Mi45MjcgNDYwLjEzNCAxNjAgMzg4Ljg5OCAxNjAgMzU1Ljc1YzAtMzUuMTU2IDMxLjE0Mi00My43NSA2NC00My43NXM2NCA4LjU5NCA2NCA0My43NWMwIDMyLjk0OS0xMi44NzEgMTA0LjE3OS0yMC41NzEgMTMyLjgxM3pNMTU2Ljg2NyAyODguNTU0Yy0xOC42OTMtMTguMzA4LTI5Ljk1OC00NC4xNzMtMjguNzg0LTcyLjU5OSAyLjA1NC00OS43MjQgNDIuMzk1LTg5Ljk1NiA5Mi4xMjQtOTEuODgxQzI3NC44NjIgMTIxLjk1OCAzMjAgMTY1LjgwNyAzMjAgMjIwYzAgMjYuODI3LTExLjA2NCA1MS4xMTYtMjguODY2IDY4LjU1Mi0yLjY3NSAyLjYyLTIuNDAxIDYuOTg2LjYyOCA5LjE4NyA5LjMxMiA2Ljc2NSAxNi40NiAxNS4zNDMgMjEuMjM0IDI1LjM2MyAxLjc0MSAzLjY1NCA2LjQ5NyA0LjY2IDkuNDQ5IDEuODkxIDI4LjgyNi0yNy4wNDMgNDYuNTUzLTY1Ljc4MyA0NS41MTEtMTA4LjU2NS0xLjg1NS03Ni4yMDYtNjMuNTk1LTEzOC4yMDgtMTM5Ljc5My0xNDAuMzY5QzE0Ni44NjkgNzMuNzUzIDgwIDEzOS4yMTUgODAgMjIwYzAgNDEuMzYxIDE3LjUzMiA3OC43IDQ1LjU1IDEwNC45ODkgMi45NTMgMi43NzEgNy43MTEgMS43NyA5LjQ1My0xLjg4NyA0Ljc3NC0xMC4wMjEgMTEuOTIzLTE4LjU5OCAyMS4yMzUtMjUuMzYzIDMuMDI5LTIuMiAzLjMwNC02LjU2Ni42MjktOS4xODV6TTIyNCAwQzEwMC4yMDQgMCAwIDEwMC4xODUgMCAyMjRjMCA4OS45OTIgNTIuNjAyIDE2NS42NDcgMTI1LjczOSAyMDEuNDA4IDQuMzMzIDIuMTE4IDkuMjY3LTEuNTQ0IDguNTM1LTYuMzEtMi4zODItMTUuNTEyLTQuMzQyLTMwLjk0Ni01LjQwNi00NC4zMzktLjE0Ni0xLjgzNi0xLjE0OS0zLjQ4Ni0yLjY3OC00LjUxMi00Ny40LTMxLjgwNi03OC41NjQtODYuMDE2LTc4LjE4Ny0xNDcuMzQ3LjU5Mi05Ni4yMzcgNzkuMjktMTc0LjY0OCAxNzUuNTI5LTE3NC44OTlDMzIwLjc5MyA0Ny43NDcgNDAwIDEyNi43OTcgNDAwIDIyNGMwIDYxLjkzMi0zMi4xNTggMTE2LjQ5LTgwLjY1IDE0Ny44NjctLjk5OSAxNC4wMzctMy4wNjkgMzAuNTg4LTUuNjI0IDQ3LjIzLS43MzIgNC43NjcgNC4yMDMgOC40MjkgOC41MzUgNi4zMUMzOTUuMjI3IDM4OS43MjcgNDQ4IDMxNC4xODcgNDQ4IDIyNCA0NDggMTAwLjIwNSAzNDcuODE1IDAgMjI0IDB6bTAgMTYwYy0zNS4zNDYgMC02NCAyOC42NTQtNjQgNjRzMjguNjU0IDY0IDY0IDY0IDY0LTI4LjY1NCA2NC02NC0yOC42NTQtNjQtNjQtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvbGxIIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA0MzJWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4ek0xMTIgMTkyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMzJjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMTI4YzguODQgMCAxNiA3LjE2IDE2IDE2djMyYzAgOC44NC03LjE2IDE2LTE2IDE2SDExMnptMCA5NmMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTMyYzAtOC44NCA3LjE2LTE2IDE2LTE2aDIyNGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYzMmMwIDguODQtNy4xNiAxNi0xNiAxNkgxMTJ6bTAgOTZjLTguODQgMC0xNi03LjE2LTE2LTE2di0zMmMwLTguODQgNy4xNi0xNiAxNi0xNmg2NGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYzMmMwIDguODQtNy4xNiAxNi0xNiAxNmgtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTYwIDM2OGMwIDguODQtNy4xNiAxNi0xNiAxNmgtMzJjLTguODQgMC0xNi03LjE2LTE2LTE2VjI0MGMwLTguODQgNy4xNi0xNiAxNi0xNmgzMmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYxMjh6bTk2IDBjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTMyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNlYxNDRjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMzJjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MjI0em05NiAwYzAgOC44NC03LjE2IDE2LTE2IDE2aC0zMmMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTY0YzAtOC44NCA3LjE2LTE2IDE2LTE2aDMyYzguODQgMCAxNiA3LjE2IDE2IDE2djY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQb29TdG9ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDggMzM2aC01Ny43bDE3LjMtNjQuOWMyLTcuNi0zLjctMTUuMS0xMS42LTE1LjFoLTY4Yy02IDAtMTEuMSA0LjUtMTEuOSAxMC40bC0xNiAxMjBjLTEgNy4yIDQuNiAxMy42IDExLjkgMTMuNmg1OS4zbC0yMyA5Ny4yYy0xLjggNy42IDQgMTQuOCAxMS43IDE0LjggNC4yIDAgOC4yLTIuMiAxMC40LTZsODgtMTUyYzQuNi04LTEuMi0xOC0xMC40LTE4em02Ni40LTExMS4zYzUuOS05LjYgOS42LTIwLjYgOS42LTMyLjcgMC0zNS4zLTI4LjctNjQtNjQtNjRoLTUuOWMzLjYtMTAuMSA1LjktMjAuNyA1LjktMzIgMC01My00My05Ni05Ni05Ni01LjIgMC0xMC4yLjctMTUuMSAxLjVDMjE4LjMgMTQuNiAyMjQgMzAuNiAyMjQgNDhjMCA0NC4yLTM1LjggODAtODAgODBoLTE2Yy0zNS4zIDAtNjQgMjguNy02NCA2NCAwIDEyLjEgMy43IDIzLjEgOS42IDMyLjdDMzIuNiAyMjggMCAyNjIuMiAwIDMwNGMwIDQ0IDM2IDgwIDgwIDgwaDQ4LjNjLjEtLjYgMC0xLjIgMC0xLjhsMTYtMTIwYzMtMjEuOCAyMS43LTM4LjIgNDMuNy0zOC4yaDY4YzEzLjggMCAyNi41IDYuMyAzNC45IDE3LjJzMTEuMiAyNC44IDcuNiAzOC4xbC02LjYgMjQuN2gxNmMxNS43IDAgMzAuMyA4LjQgMzguMSAyMiA3LjggMTMuNiA3LjggMzAuNSAwIDQ0bC04LjEgMTRoMzBjNDQgMCA4MC0zNiA4MC04MCAuMS00MS44LTMyLjUtNzYtNzMuNS03OS4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQb28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDUxLjQgMzY5LjFDNDY4LjcgMzU2IDQ4MCAzMzUuNCA0ODAgMzEyYzAtMzkuOC0zMi4yLTcyLTcyLTcyaC0xNC4xYzEzLjQtMTEuNyAyMi4xLTI4LjggMjIuMS00OCAwLTM1LjMtMjguNy02NC02NC02NGgtNS45YzMuNi0xMC4xIDUuOS0yMC43IDUuOS0zMiAwLTUzLTQzLTk2LTk2LTk2LTUuMiAwLTEwLjIuNy0xNS4xIDEuNUMyNTAuMyAxNC42IDI1NiAzMC42IDI1NiA0OGMwIDQ0LjItMzUuOCA4MC04MCA4MGgtMTZjLTM1LjMgMC02NCAyOC43LTY0IDY0IDAgMTkuMiA4LjcgMzYuMyAyMi4xIDQ4SDEwNGMtMzkuOCAwLTcyIDMyLjItNzIgNzIgMCAyMy40IDExLjMgNDQgMjguNiA1Ny4xQzI2LjMgMzc0LjYgMCA0MDQuMSAwIDQ0MGMwIDM5LjggMzIuMiA3MiA3MiA3MmgzNjhjMzkuOCAwIDcyLTMyLjIgNzItNzIgMC0zNS45LTI2LjMtNjUuNC02MC42LTcwLjl6TTE5MiAyNTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem0xNTkuNSAxMzlDMzQxIDQyMi45IDI5MyA0NDggMjU2IDQ0OHMtODUtMjUuMS05NS41LTUzYy0yLTUuMyAyLTExIDcuOC0xMWgxNzUuNGM1LjggMCA5LjggNS43IDcuOCAxMXpNMzIwIDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDUxLjM2IDM2OS4xNEM0NjguNjYgMzU1Ljk5IDQ4MCAzMzUuNDEgNDgwIDMxMmMwLTM5Ljc3LTMyLjI0LTcyLTcyLTcyaC0xNC4wN2MxMy40Mi0xMS43MyAyMi4wNy0yOC43OCAyMi4wNy00OCAwLTM1LjM1LTI4LjY1LTY0LTY0LTY0aC01Ljg4YzMuNTctMTAuMDUgNS44OC0yMC43MiA1Ljg4LTMyIDAtNTMuMDItNDIuOTgtOTYtOTYtOTYtNS4xNyAwLTEwLjE1Ljc0LTE1LjExIDEuNTJDMjUwLjMxIDE0LjY0IDI1NiAzMC42MiAyNTYgNDhjMCA0NC4xOC0zNS44MiA4MC04MCA4MGgtMTZjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjQgMCAxOS4yMiA4LjY1IDM2LjI3IDIyLjA3IDQ4SDEwNGMtMzkuNzYgMC03MiAzMi4yMy03MiA3MiAwIDIzLjQxIDExLjM0IDQzLjk5IDI4LjY0IDU3LjE0QzI2LjMxIDM3NC42MiAwIDQwNC4xMiAwIDQ0MGMwIDM5Ljc2IDMyLjI0IDcyIDcyIDcyaDM2OGMzOS43NiAwIDcyLTMyLjI0IDcyLTcyIDAtMzUuODgtMjYuMzEtNjUuMzgtNjAuNjQtNzAuODZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvcnRyYWl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xOTIgMTI4YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHptMTEyIDIzNi44YzAgMTAuNi0xMCAxOS4yLTIyLjQgMTkuMkgxMDIuNEM5MCAzODQgODAgMzc1LjQgODAgMzY0Ljh2LTE5LjJjMC0zMS44IDMwLjEtNTcuNiA2Ny4yLTU3LjZoNWMxMi4zIDUuMSAyNS43IDggMzkuOCA4czI3LjYtMi45IDM5LjgtOGg1YzM3LjEgMCA2Ny4yIDI1LjggNjcuMiA1Ny42djE5LjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvdW5kU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDggMzUyaC00NS40OTVjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NTAuODQ4SDEyOFYyODhoODRjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtODR2LTYzLjU1NmMwLTMyLjI2NiAyNC41NjItNTcuMDg2IDYxLjc5Mi01Ny4wODYgMjMuNjU4IDAgNDUuODc4IDExLjUwNSA1Ny42NTIgMTguODQ5IDUuMTUxIDMuMjEzIDExLjg4OCAyLjA1MSAxNS42ODgtMi42ODVsMjguNDkzLTM1LjUxM2M0LjIzMy01LjI3NiAzLjI3OS0xMy4wMDUtMi4xMTktMTcuMDgxQzI3My4xMjQgNTQuNTYgMjM2LjU3NiAzMiAxODcuOTMxIDMyIDEwNi4wMjYgMzIgNDggODQuNzQyIDQ4IDE1Ny45NjFWMjI0SDIwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjh2MTI4SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjk2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJWMzY0YzAtNi42MjctNS4zNzMtMTItMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvd2VyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCA1NC4xYzYzIDQ1IDEwNCAxMTguNiAxMDQgMjAxLjkgMCAxMzYuOC0xMTAuOCAyNDcuNy0yNDcuNSAyNDhDMTIwIDUwNC4zIDguMiAzOTMgOCAyNTYuNCA3LjkgMTczLjEgNDguOSA5OS4zIDExMS44IDU0LjJjMTEuNy04LjMgMjgtNC44IDM1IDcuN0wxNjIuNiA5MGM1LjkgMTAuNSAzLjEgMjMuOC02LjYgMzEtNDEuNSAzMC44LTY4IDc5LjYtNjggMTM0LjktLjEgOTIuMyA3NC41IDE2OC4xIDE2OCAxNjguMSA5MS42IDAgMTY4LjYtNzQuMiAxNjgtMTY5LjEtLjMtNTEuOC0yNC43LTEwMS44LTY4LjEtMTM0LTkuNy03LjItMTIuNC0yMC41LTYuNS0zMC45bDE1LjgtMjguMWM3LTEyLjQgMjMuMi0xNi4xIDM0LjgtNy44ek0yOTYgMjY0VjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0aC0zMmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MjQwYzAgMTMuMyAxMC43IDI0IDI0IDI0aDMyYzEzLjMgMCAyNC0xMC43IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQcmF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAxMjhjMzUuMzUgMCA2NC0yOC42NSA2NC02NFMyOTEuMzUgMCAyNTYgMHMtNjQgMjguNjUtNjQgNjQgMjguNjUgNjQgNjQgNjR6bS0zMC42MyAxNjkuNzVjMTQuMDYgMTYuNzIgMzkgMTkuMDkgNTUuOTcgNS4yMmw4OC03Mi4wMmMxNy4wOS0xMy45OCAxOS41OS0zOS4xOSA1LjYyLTU2LjI4LTEzLjk3LTE3LjExLTM5LjE5LTE5LjU5LTU2LjMxLTUuNjJsLTU3LjQ0IDQ3LTM4LjkxLTQ2LjMxYy0xNS40NC0xOC4zOS0zOS4yMi0yNy45Mi02NC0yNS4zMy0yNC4xOSAyLjQ4LTQ1LjI1IDE2LjI3LTU2LjM3IDM2LjkybC00OS4zNyA5Mi4wM2MtMjMuNCA0My42NC04LjY5IDk2LjM3IDM0LjE5IDEyMy43NUwxMzEuNTYgNDMySDQwYy0yMi4wOSAwLTQwIDE3LjkxLTQwIDQwczE3LjkxIDQwIDQwIDQwaDIwOGMzNC4wOCAwIDUzLjc3LTQyLjc5IDI4LjI4LTY4LjI4TDE2Ni40MiAzMzMuODZsMzQuOC02NC44NyAyNC4xNSAyOC43NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJheWluZ0hhbmRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiAxOTEuOTFjLTE3LjYgMC0zMiAxNC40LTMyIDMydjgwYzAgOC44NC03LjE2IDE2LTE2IDE2cy0xNi03LjE2LTE2LTE2di03Ni41NWMwLTE3LjM5IDQuNzItMzQuNDcgMTMuNjktNDkuMzlsNzcuNzUtMTI5LjU5YzkuMDktMTUuMTYgNC4xOS0zNC44MS0xMC45Ny00My45MS0xNC40NS04LjY3LTMyLjcyLTQuMy00Mi4zIDkuMjEtLjIuMjMtLjYyLjIxLS43OS40OGwtMTE3LjI2IDE3NS45QzExNy41NiAyMDUuOSAxMTIgMjI0LjMxIDExMiAyNDMuMjl2ODAuMjNsLTkwLjEyIDMwLjA0QTMxLjk3NCAzMS45NzQgMCAwIDAgMCAzODMuOTF2OTZjMCAxMC44MiA4LjUyIDMyIDMyIDMyIDIuNjkgMCA1LjQxLS4zNCA4LjA2LTEuMDNsMTc5LjE5LTQ2LjYyQzI2OS4xNiA0NDkuOTkgMzA0IDQwMy44IDMwNCAzNTEuOTF2LTEyOGMwLTE3LjYtMTQuNC0zMi0zMi0zMnptMzQ2LjEyIDE2MS43M0w1MjggMzIzLjZ2LTgwLjIzYzAtMTguOTgtNS41Ni0zNy4zOS0xNi4xMi01My4yM0wzOTQuNjIgMTQuMjVjLS4xOC0uMjctLjU5LS4yNC0uNzktLjQ4LTkuNTgtMTMuNTEtMjcuODUtMTcuODgtNDIuMy05LjIxLTE1LjE2IDkuMDktMjAuMDYgMjguNzUtMTAuOTcgNDMuOTFsNzcuNzUgMTI5LjU5YzguOTcgMTQuOTIgMTMuNjkgMzIgMTMuNjkgNDkuMzlWMzA0YzAgOC44NC03LjE2IDE2LTE2IDE2cy0xNi03LjE2LTE2LTE2di04MGMwLTE3LjYtMTQuNC0zMi0zMi0zMnMtMzIgMTQuNC0zMiAzMnYxMjhjMCA1MS44OSAzNC44NCA5OC4wOCA4NC43NSAxMTIuMzRsMTc5LjE5IDQ2LjYyYzIuNjYuNjkgNS4zOCAxLjAzIDguMDYgMS4wMyAyMy40OCAwIDMyLTIxLjE4IDMyLTMydi05NmMwLTEzLjc3LTguODEtMjUuOTktMjEuODgtMzAuMzV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVByZXNjcmlwdGlvbkJvdHRsZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjAgMEgyNEMxMC44IDAgMCAxMC44IDAgMjR2NDhjMCAxMy4yIDEwLjggMjQgMjQgMjRoMzM2YzEzLjIgMCAyNC0xMC44IDI0LTI0VjI0YzAtMTMuMi0xMC44LTI0LTI0LTI0ek0zMiA0ODBjMCAxNy42IDE0LjQgMzIgMzIgMzJoMjU2YzE3LjYgMCAzMi0xNC40IDMyLTMyVjEyOEgzMnYzNTJ6bTY0LTE4NGMwLTQuNCAzLjYtOCA4LThoNTZ2LTU2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2NTZoNTZjNC40IDAgOCAzLjYgOCA4djQ4YzAgNC40LTMuNiA4LTggOGgtNTZ2NTZjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di01NmgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVByZXNjcmlwdGlvbkJvdHRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAxOTJoMTIwYzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIMzJ2NjRoMTIwYzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIMzJ2NjRoMTIwYzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIMzJ2NjRjMCAxNy42IDE0LjQgMzIgMzIgMzJoMjU2YzE3LjYgMCAzMi0xNC40IDMyLTMyVjEyOEgzMnY2NHpNMzYwIDBIMjRDMTAuOCAwIDAgMTAuOCAwIDI0djQ4YzAgMTMuMiAxMC44IDI0IDI0IDI0aDMzNmMxMy4yIDAgMjQtMTAuOCAyNC0yNFYyNGMwLTEzLjItMTAuOC0yNC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJlc2NyaXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMS4yNiAzNTJsNzguMDYtNzguMDZjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtMjIuNjMtMjIuNjNjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBMMjU2IDMwNi43NGwtODMuOTYtODMuOTZDMjE5LjMxIDIxNi44IDI1NiAxNzYuODkgMjU2IDEyOGMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2SDE2QzcuMTYgMzIgMCAzOS4xNiAwIDQ4djI1NmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtODBoMTguNzVsMTI4IDEyOC03OC4wNiA3OC4wNmMtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wyMi42MyAyMi42M2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwTDI1NiAzOTcuMjVsNzguMDYgNzguMDZjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwyMi42My0yMi42M2M2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzTDMwMS4yNiAzNTJ6TTY0IDk2aDk2YzE3LjY0IDAgMzIgMTQuMzYgMzIgMzJzLTE0LjM2IDMyLTMyIDMySDY0Vjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQcmludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMTkyVjc3LjI1YzAtOC40OS0zLjM3LTE2LjYyLTkuMzctMjIuNjNMMzkzLjM3IDkuMzdjLTYtNi0xNC4xNC05LjM3LTIyLjYzLTkuMzdIOTZDNzguMzMgMCA2NCAxNC4zMyA2NCAzMnYxNjBjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2MTEyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4djk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzIwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjI1NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0em0tNjQgMjU2SDEyOHYtOTZoMjU2djk2em0wLTIyNEgxMjhWNjRoMTkydjQ4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4djk2em00OCA3MmMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVByb2NlZHVyZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4IDIyNEgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnYxNDRINjRWMTQ0YzAtOC44LTcuMi0xNi0xNi0xNkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djM1MmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di00OGg1MTJ2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzMzZjMC02MS45LTUwLjEtMTEyLTExMi0xMTJ6TTEzNiA5NmgxMjYuMWwyNy42IDU1LjJjNS45IDExLjggMjIuNyAxMS44IDI4LjYgMEwzNjggNTEuOCAzOTAuMSA5Nkg1MTJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZINDA5LjlMMzgyLjMgOC44QzM3Ni40LTMgMzU5LjYtMyAzNTMuNyA4LjhMMzA0IDEwOC4ybC0xOS45LTM5LjhjLTEuNC0yLjctNC4xLTQuNC03LjItNC40SDEzNmMtNC40IDAtOCAzLjYtOCA4djE2YzAgNC40IDMuNiA4IDggOHptMjQgMjU2YzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0LTY0IDI4LjctNjQgNjQgMjguNyA2NCA2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJvamVjdERpYWdyYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMyMEgyNTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTI4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTI4YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzUyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTE5MiAzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDMyQzE0LjMzIDAgMCAxNC4zMyAwIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk1LjcybDczLjE2IDEyOC4wNEMyMTEuOTggMzAwLjk4IDIzMi40IDI4OCAyNTYgMjg4aC4yOEwxOTIgMTc1LjUxVjEyOGgyMjRWNjRIMTkyVjMyek02MDggMEg0ODBjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTI4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTI4YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHVtcE1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjM1LjUxLDE1OS44Mkg4NC4yNEE2NCw2NCwwLDAsMCwyMC41MSwyMThMLjE0LDQ0MmE2NCw2NCwwLDAsMCw2My43NCw2OS44aDE5MkE2NCw2NCwwLDAsMCwzMTkuNjEsNDQyTDI5OS4yNCwyMThBNjQsNjQsMCwwLDAsMjM1LjUxLDE1OS44MlptNC4zNywxNzMuMzNhMTMuMzUsMTMuMzUsMCwwLDEtMTMuMzQsMTMuMzRoLTQwdjQwYTEzLjMzLDEzLjMzLDAsMCwxLTEzLjMzLDEzLjMzSDE0Ni41NGExMy4zMywxMy4zMywwLDAsMS0xMy4zMy0xMy4zM3YtNDBoLTQwYTEzLjM0LDEzLjM0LDAsMCwxLTEzLjMzLTEzLjM0VjMwNi40OWExMy4zMywxMy4zMywwLDAsMSwxMy4zMy0xMy4zNGg0MHYtNDBhMTMuMzMsMTMuMzMsMCwwLDEsMTMuMzMtMTMuMzNoMjYuNjdhMTMuMzMsMTMuMzMsMCwwLDEsMTMuMzMsMTMuMzN2NDBoNDBhMTMuMzQsMTMuMzQsMCwwLDEsMTMuMzQsMTMuMzRaTTM3OS4xOSw5My44OCwzMzUuODcsNTAuNTZhNjQsNjQsMCwwLDAtNDUuMjQtMTguNzRIMjIzLjg4YTMyLDMyLDAsMCwwLTMyLTMyaC02NGEzMiwzMiwwLDAsMC0zMiwzMnY5NmgxMjh2LTMyaDY2Ljc1bDQzLjMxLDQzLjMxYTE2LDE2LDAsMCwwLDIyLjYzLDBsMjIuNjItMjIuNjJBMTYsMTYsMCwwLDAsMzc5LjE5LDkzLjg4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQdW1wU29hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzUuNjMsMTYwSDg0LjM3YTY0LDY0LDAsMCwwLTYzLjc0LDU4LjIxTC4yNyw0NDIuMjFBNjQsNjQsMCwwLDAsNjQsNTEySDI1NmE2NCw2NCwwLDAsMCw2My43NC02OS43OWwtMjAuMzYtMjI0QTY0LDY0LDAsMCwwLDIzNS42MywxNjBaTTE2MCw0MTZjLTMzLjEyLDAtNjAtMjYuMzMtNjAtNTguNzUsMC0yNSwzNS43LTc1LjQ3LDUyLTk3LjI3QTEwLDEwLDAsMCwxLDE2OCwyNjBjMTYuMzMsMjEuOCw1Miw3Mi4yNyw1Miw5Ny4yN0MyMjAsMzg5LjY3LDE5My4xMiw0MTYsMTYwLDQxNlpNMzc5LjMxLDk0LjA2LDMzNiw1MC43NEE2NCw2NCwwLDAsMCwyOTAuNzUsMzJIMjI0QTMyLDMyLDAsMCwwLDE5MiwwSDEyOEEzMiwzMiwwLDAsMCw5NiwzMnY5NkgyMjRWOTZoNjYuNzVsNDMuMzEsNDMuMzFhMTYsMTYsMCwwLDAsMjIuNjMsMGwyMi42Mi0yMi42MkExNiwxNiwwLDAsMCwzNzkuMzEsOTQuMDZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVB1enpsZVBpZWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxOS40NDIgMjg4LjY1MWMtNDEuNTE5IDAtNTkuNSAzMS41OTMtODIuMDU4IDMxLjU5M0MzNzcuNDA5IDMyMC4yNDQgNDMyIDE0NCA0MzIgMTQ0cy0xOTYuMjg4IDgwLTE5Ni4yODgtMy4yOTdjMC0zNS44MjcgMzYuMjg4LTQ2LjI1IDM2LjI4OC04NS45ODVDMjcyIDE5LjIxNiAyNDMuODg1IDAgMjEwLjUzOSAwYy0zNC42NTQgMC02Ni4zNjYgMTguODkxLTY2LjM2NiA1Ni4zNDYgMCA0MS4zNjQgMzEuNzExIDU5LjI3NyAzMS43MTEgODEuNzVDMTc1Ljg4NSAyMDcuNzE5IDAgMTY2Ljc1OCAwIDE2Ni43NTh2MzMzLjIzN3MxNzguNjM1IDQxLjA0NyAxNzguNjM1LTI4LjY2MmMwLTIyLjQ3My00MC00MC4xMDctNDAtODEuNDcxIDAtMzcuNDU2IDI5LjI1LTU2LjM0NiA2My41NzctNTYuMzQ2IDMzLjY3MyAwIDYxLjc4OCAxOS4yMTYgNjEuNzg4IDU0LjcxNyAwIDM5LjczNS0zNi4yODggNTAuMTU4LTM2LjI4OCA4NS45ODUgMCA2MC44MDMgMTI5LjY3NSAyNS43MyAxODEuMjMgMjUuNzMgMCAwLTM0LjcyNS0xMjAuMTAxIDI1LjgyNy0xMjAuMTAxIDM1Ljk2MiAwIDQ2LjQyMyAzNi4xNTIgODYuMzA4IDM2LjE1MkM1NTYuNzEyIDQxNiA1NzYgMzg3Ljk5IDU3NiAzNTQuNDQzYzAtMzQuMTk5LTE4Ljk2Mi02NS43OTItNTYuNTU4LTY1Ljc5MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXJjb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjI0aDE5MlYzMkgwdjE5MnpNNjQgOTZoNjR2NjRINjRWOTZ6bTE5Mi02NHYxOTJoMTkyVjMySDI1NnptMTI4IDEyOGgtNjRWOTZoNjR2NjR6TTAgNDgwaDE5MlYyODhIMHYxOTJ6bTY0LTEyOGg2NHY2NEg2NHYtNjR6bTM1Mi02NGgzMnYxMjhoLTk2di0zMmgtMzJ2OTZoLTY0VjI4OGg5NnYzMmg2NHYtMzJ6bTAgMTYwaDMydjMyaC0zMnYtMzJ6bS02NCAwaDMydjMyaC0zMnYtMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVF1ZXN0aW9uQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNCAyNTZjMCAxMzYuOTk3LTExMS4wNDMgMjQ4LTI0OCAyNDhTOCAzOTIuOTk3IDggMjU2QzggMTE5LjA4MyAxMTkuMDQzIDggMjU2IDhzMjQ4IDExMS4wODMgMjQ4IDI0OHpNMjYyLjY1NSA5MGMtNTQuNDk3IDAtODkuMjU1IDIyLjk1Ny0xMTYuNTQ5IDYzLjc1OC0zLjUzNiA1LjI4Ni0yLjM1MyAxMi40MTUgMi43MTUgMTYuMjU4bDM0LjY5OSAyNi4zMWM1LjIwNSAzLjk0NyAxMi42MjEgMy4wMDggMTYuNjY1LTIuMTIyIDE3Ljg2NC0yMi42NTggMzAuMTEzLTM1Ljc5NyA1Ny4zMDMtMzUuNzk3IDIwLjQyOSAwIDQ1LjY5OCAxMy4xNDggNDUuNjk4IDMyLjk1OCAwIDE0Ljk3Ni0xMi4zNjMgMjIuNjY3LTMyLjUzNCAzMy45NzZDMjQ3LjEyOCAyMzguNTI4IDIxNiAyNTQuOTQxIDIxNiAyOTZ2NGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDU2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTEuMzMzYzAtMjguNDYyIDgzLjE4Ni0yOS42NDcgODMuMTg2LTEwNi42NjcgMC01OC4wMDItNjAuMTY1LTEwMi0xMTYuNTMxLTEwMnpNMjU2IDMzOGMtMjUuMzY1IDAtNDYgMjAuNjM1LTQ2IDQ2IDAgMjUuMzY0IDIwLjYzNSA0NiA0NiA0NnM0Ni0yMC42MzYgNDYtNDZjMC0yNS4zNjUtMjAuNjM1LTQ2LTQ2LTQ2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRdWVzdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDIuMDIxIDBDMTIyLjIwMiAwIDcwLjUwMyAzMi43MDMgMjkuOTE0IDkxLjAyNmMtNy4zNjMgMTAuNTgtNS4wOTMgMjUuMDg2IDUuMTc4IDMyLjg3NGw0My4xMzggMzIuNzA5YzEwLjM3MyA3Ljg2NSAyNS4xMzIgNi4wMjYgMzMuMjUzLTQuMTQ4IDI1LjA0OS0zMS4zODEgNDMuNjMtNDkuNDQ5IDgyLjc1Ny00OS40NDkgMzAuNzY0IDAgNjguODE2IDE5Ljc5OSA2OC44MTYgNDkuNjMxIDAgMjIuNTUyLTE4LjYxNyAzNC4xMzQtNDguOTkzIDUxLjE2NC0zNS40MjMgMTkuODYtODIuMjk5IDQ0LjU3Ni04Mi4yOTkgMTA2LjQwNVYzMjBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDcyLjQ3MWMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTUuNzczYzAtNDIuODYgMTI1LjI2OC00NC42NDUgMTI1LjI2OC0xNjAuNjI3QzM3Ny41MDQgNjYuMjU2IDI4Ni45MDIgMCAyMDIuMDIxIDB6TTE5MiAzNzMuNDU5Yy0zOC4xOTYgMC02OS4yNzEgMzEuMDc1LTY5LjI3MSA2OS4yNzEgMCAzOC4xOTUgMzEuMDc1IDY5LjI3IDY5LjI3MSA2OS4yN3M2OS4yNzEtMzEuMDc1IDY5LjI3MS02OS4yNzEtMzEuMDc1LTY5LjI3LTY5LjI3MS02OS4yN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVpZGRpdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ni41IDIxNi44TDM0My4yIDMyNnMtMTYuNiAxMDIuNC03Ni42IDE1MC4xQzIwNi43IDUyMy44IDAgNTEwLjIgMCA1MTAuMnMzLjgtMjMuMSAxMS01NS40bDk0LjYtMTEyLjJjNC00LjctLjktMTEuNi02LjYtOS41bC02MC40IDIyLjFjMTQuNC00MS43IDMyLjctODAgNTQuNi05Ny41IDU5LjktNDcuOCAxNjMuMy00MC45IDE2My4zLTQwLjl6bTIzOCAxMzVjLTQ0IDAtNzkuOCAzNS44LTc5LjggNzkuOSAwIDQ0LjEgMzUuNyA3OS45IDc5LjggNzkuOSA0NC4xIDAgNzkuOC0zNS44IDc5LjgtNzkuOSAwLTQ0LjItMzUuOC03OS45LTc5LjgtNzkuOXpNNjM2LjUgMzFMNjE2LjcgNmMtNS41LTYuOS0xNS41LTgtMjIuNC0yLjZMMzYxLjggMTgxLjNsLTM0LjEtNDNjLTUuMS02LjQtMTUuMS01LjItMTguNiAyLjJsLTI1LjMgNTQuNiA4Ni43IDEwOS4yIDU4LjgtMTIuNGM4LTEuNyAxMS40LTExLjIgNi4zLTE3LjZsLTM0LjEtNDIuOUw2MzQgNTMuNWM2LjktNS41IDgtMTUuNiAyLjUtMjIuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVvdGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAyNTZoLTgwdi02NGMwLTM1LjMgMjguNy02NCA2NC02NGg4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0aC04Yy04OC40IDAtMTYwIDcxLjYtMTYwIDE2MHYyNDBjMCAyNi41IDIxLjUgNDggNDggNDhoMTI4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjMwNGMwLTI2LjUtMjEuNS00OC00OC00OHptLTI4OCAwSDk2di02NGMwLTM1LjMgMjguNy02NCA2NC02NGg4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0aC04QzcxLjYgMzIgMCAxMDMuNiAwIDE5MnYyNDBjMCAyNi41IDIxLjUgNDggNDggNDhoMTI4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjMwNGMwLTI2LjUtMjEuNS00OC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVvdGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMzJIMzM2Yy0yNi41IDAtNDggMjEuNS00OCA0OHYxMjhjMCAyNi41IDIxLjUgNDggNDggNDhoODB2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRoLThjLTEzLjMgMC0yNCAxMC43LTI0IDI0djQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDhjODguNCAwIDE2MC03MS42IDE2MC0xNjBWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0yODggMEg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjEyOGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg4MHY2NGMwIDM1LjMtMjguNyA2NC02NCA2NGgtOGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoOGM4OC40IDAgMTYwLTcxLjYgMTYwLTE2MFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVyYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDM1OC40VjI1LjZjMC0xNi05LjYtMjUuNi0yNS42LTI1LjZIOTZDNDEuNiAwIDAgNDEuNiAwIDk2djMyMGMwIDU0LjQgNDEuNiA5NiA5NiA5NmgzMjYuNGMxMi44IDAgMjUuNi05LjYgMjUuNi0yNS42di0xNmMwLTYuNC0zLjItMTIuOC05LjYtMTkuMi0zLjItMTYtMy4yLTYwLjggMC03My42IDYuNC0zLjIgOS42LTkuNiA5LjYtMTkuMnpNMzAxLjA4IDE0NS44MmMuNi0xLjIxIDEuNzYtMS44MiAyLjkyLTEuODJzMi4zMi42MSAyLjkyIDEuODJsMTEuMTggMjIuNjUgMjUgMy42M2MyLjY3LjM5IDMuNzQgMy42NyAxLjgxIDUuNTZsLTE4LjA5IDE3LjYzIDQuMjcgMjQuODljLjM2IDIuMTEtMS4zMSAzLjgyLTMuMjEgMy44Mi0uNSAwLTEuMDItLjEyLTEuNTItLjM4TDMwNCAyMTEuODdsLTIyLjM2IDExLjc1Yy0uNS4yNi0xLjAyLjM4LTEuNTIuMzgtMS45IDAtMy41Ny0xLjcxLTMuMjEtMy44Mmw0LjI3LTI0Ljg5LTE4LjA5LTE3LjYzYy0xLjk0LTEuODktLjg3LTUuMTcgMS44MS01LjU2bDI0Ljk5LTMuNjMgMTEuMTktMjIuNjV6bS01Ny44OS02OS4wMWMxMy42NyAwIDI3LjI2IDIuNDkgNDAuMzggNy40MWE2Ljc3NSA2Ljc3NSAwIDEgMS0yLjM4IDEzLjEyYy0uNjcgMC0zLjA5LS4yMS00LjEzLS4yMS01Mi4zMSAwLTk0Ljg2IDQyLjU1LTk0Ljg2IDk0Ljg2IDAgNTIuMyA0Mi41NSA5NC44NiA5NC44NiA5NC44NiAxLjAzIDAgMy40OC0uMjEgNC4xMy0uMjEgMy45MyAwIDYuOCAzLjE0IDYuOCA2Ljc4IDAgMi45OC0xLjk0IDUuNTEtNC42MiA2LjQyLTEzLjA3IDQuODctMjYuNTkgNy4zNC00MC4xOSA3LjM0QzE3OS42NyAzMDcuMTkgMTI4IDI1NS41MSAxMjggMTkyYzAtNjMuNTIgNTEuNjctMTE1LjE5IDExNS4xOS0xMTUuMTl6TTM4MC44IDQ0OEg5NmMtMTkuMiAwLTMyLTEyLjgtMzItMzJzMTYtMzIgMzItMzJoMjg0Ljh2NjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJhZGlhdGlvbkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTIgMjU2aDc5LjFjOS4yIDAgMTYuOS03LjcgMTYtMTYuOC00LjYtNDMuNi0yNy04MS44LTU5LjUtMTA3LjgtNy42LTYuMS0xOC44LTQuNS0yNCAzLjhMMjgxLjkgMjAyYzE4IDExLjIgMzAuMSAzMS4yIDMwLjEgNTR6bS05Ny44IDU0LjFMMTcyLjQgMzc3Yy00LjkgNy44LTIuNCAxOC40IDUuOCAyMi41IDIxLjEgMTAuNCA0NC43IDE2LjUgNjkuOCAxNi41czQ4LjctNi4xIDY5LjktMTYuNWM4LjItNC4xIDEwLjYtMTQuNyA1LjgtMjIuNWwtNDEuOC02Ni45Yy05LjggNi4yLTIxLjQgOS45LTMzLjggOS45cy0yNC4xLTMuNy0zMy45LTkuOXpNMTA0LjkgMjU2SDE4NGMwLTIyLjggMTIuMS00Mi44IDMwLjItNTQuMWwtNDEuNy02Ni44Yy01LjItOC4zLTE2LjQtOS45LTI0LTMuOC0zMi42IDI2LTU0LjkgNjQuMi01OS41IDEwNy44LTEuMSA5LjIgNi43IDE2LjkgMTUuOSAxNi45ek0yNDggNTA0YzEzNyAwIDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDh6bTAtNDMyYzEwMS41IDAgMTg0IDgyLjUgMTg0IDE4NHMtODIuNSAxODQtMTg0IDE4NFM2NCAzNTcuNSA2NCAyNTYgMTQ2LjUgNzIgMjQ4IDcyem0wIDIxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJhZGlhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjguMiAyNTUuOGgxNTEuNmM5LjEgMCAxNi44LTcuNyAxNi4yLTE2LjgtNS4xLTc1LjgtNDQuNC0xNDIuMi0xMDIuNS0xODQuMi03LjQtNS4zLTE3LjktMi45LTIyLjcgNC44TDI5MC40IDE4OGMyMi42IDE0LjMgMzcuOCAzOS4yIDM3LjggNjcuOHptLTM3LjggNjcuN2MtMTIuMyA3LjctMjYuOCAxMi40LTQyLjQgMTIuNC0xNS42IDAtMzAtNC43LTQyLjQtMTIuNEwxMjUuMiA0NTJjLTQuOCA3LjctMi40IDE4LjEgNS42IDIyLjRDMTY1LjcgNDkzLjIgMjA1LjYgNTA0IDI0OCA1MDRzODIuMy0xMC44IDExNy4yLTI5LjZjOC00LjMgMTAuNC0xNC44IDUuNi0yMi40bC04MC40LTEyOC41ek0yNDggMzAzLjhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDgtNDggMjEuNS00OCA0OCAyMS41IDQ4IDQ4IDQ4em0tMjMxLjgtNDhoMTUxLjZjMC0yOC42IDE1LjItNTMuNSAzNy44LTY3LjdMMTI1LjIgNTkuN2MtNC44LTcuNy0xNS4zLTEwLjItMjIuNy00LjhDNDQuNCA5Ni45IDUuMSAxNjMuMyAwIDIzOS4xYy0uNiA5IDcuMSAxNi43IDE2LjIgMTYuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmFpbmJvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjguMyAzMi43QzExNS40IDQyLjkgMCAxNzYuOSAwIDMzMC4yVjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyMEM2NCAxODYuOCAxODAuOSA4MC4zIDMxNy41IDk3LjkgNDMwLjQgMTEyLjQgNTEyIDIxNCA1MTIgMzI3LjhWNDY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwYzAtMTY1LjMtMTQwLTI5OC42LTMwNy43LTI4Ny4zem0tNS42IDk2LjlDMTY2IDE0MiA5NiAyMjkuMSA5NiAzMjYuN1Y0NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzMjBjMC03NC44IDY0LjUtMTM0LjggMTQwLjgtMTI3LjQgNjYuNSA2LjUgMTE1LjIgNjYuMiAxMTUuMiAxMzMuMVY0NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzMjBjMC0xMTQuMi0xMDAuMi0yMDUuNC0yMTcuMy0xOTAuNHptNi4yIDk2LjNjLTQ1LjYgOC45LTc2LjkgNTEuNS03Ni45IDk3LjlWNDY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwYzAtMTcuNiAxNC4zLTMyIDMyLTMyczMyIDE0LjQgMzIgMzJ2MTQ0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwYzAtNTkuMi01My44LTEwNi0xMTUuMS05NC4xelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSYW5kb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0Ljk3MSAzNTkuMDI5YzkuMzczIDkuMzczIDkuMzczIDI0LjU2OSAwIDMzLjk0MWwtODAgNzkuOTg0Yy0xNS4wMSAxNS4wMS00MC45NzEgNC40OS00MC45NzEtMTYuOTcxVjQxNmgtNTguNzg1YTEyLjAwNCAxMi4wMDQgMCAwIDEtOC43NzMtMy44MTJsLTcwLjU1Ni03NS41OTYgNTMuMzMzLTU3LjE0M0wzNTIgMzM2aDMydi0zOS45ODFjMC0yMS40MzggMjUuOTQzLTMxLjk5OCA0MC45NzEtMTYuOTcxbDgwIDc5Ljk4MXpNMTIgMTc2aDg0bDUyLjc4MSA1Ni41NTEgNTMuMzMzLTU3LjE0My03MC41NTYtNzUuNTk2QTExLjk5OSAxMS45OTkgMCAwIDAgMTIyLjc4NSA5NkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY1NmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyem0zNzIgMHYzOS45ODRjMCAyMS40NiAyNS45NjEgMzEuOTggNDAuOTcxIDE2Ljk3MWw4MC03OS45ODRjOS4zNzMtOS4zNzMgOS4zNzMtMjQuNTY5IDAtMzMuOTQxbC04MC03OS45ODFDNDA5Ljk0MyAyNC4wMjEgMzg0IDM0LjU4MiAzODQgNTYuMDE5Vjk2aC01OC43ODVhMTIuMDA0IDEyLjAwNCAwIDAgMC04Ljc3MyAzLjgxMkw5NiAzMzZIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NTZjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxMTAuNzg1YzMuMzI2IDAgNi41MDMtMS4zODEgOC43NzMtMy44MTJMMzUyIDE3NmgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVjZWlwdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTguNCAzLjJMMzIwIDQ4IDI2NS42IDMuMmExNS45IDE1LjkgMCAwIDAtMTkuMiAwTDE5MiA0OCAxMzcuNiAzLjJhMTUuOSAxNS45IDAgMCAwLTE5LjIgMEw2NCA0OCAyNS42IDMuMkMxNS00LjcgMCAyLjggMCAxNnY0ODBjMCAxMy4yIDE1IDIwLjcgMjUuNiAxMi44TDY0IDQ2NGw1NC40IDQ0LjhhMTUuOSAxNS45IDAgMCAwIDE5LjIgMEwxOTIgNDY0bDU0LjQgNDQuOGExNS45IDE1LjkgMCAwIDAgMTkuMiAwTDMyMCA0NjRsMzguNCA0NC44YzEwLjUgNy45IDI1LjYuNCAyNS42LTEyLjhWMTZjMC0xMy4yLTE1LTIwLjctMjUuNi0xMi44ek0zMjAgMzYwYzAgNC40LTMuNiA4LTggOEg3MmMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMjQwYzQuNCAwIDggMy42IDggOHYxNnptMC05NmMwIDQuNC0zLjYgOC04IDhINzJjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDI0MGM0LjQgMCA4IDMuNiA4IDh2MTZ6bTAtOTZjMCA0LjQtMy42IDgtOCA4SDcyYy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgyNDBjNC40IDAgOCAzLjYgOCA4djE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWNvcmRWaW55bCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMTUyYTEwNCAxMDQgMCAxIDAgMTA0IDEwNCAxMDQgMTA0IDAgMCAwLTEwNC0xMDR6bTAgMTI4YTI0IDI0IDAgMSAxIDI0LTI0IDI0IDI0IDAgMCAxLTI0IDI0em0wLTI3MkMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0wIDM3NmExMjggMTI4IDAgMSAxIDEyOC0xMjggMTI4IDEyOCAwIDAgMS0xMjggMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWN5Y2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4NC41NjEgMjYxLjkwM2MzLjIzMiAxMy45OTctMTIuMTIzIDI0LjYzNS0yNC4wNjggMTcuMTY4bC00MC43MzYtMjUuNDU1LTUwLjg2NyA4MS40MDJDNTUuNjA2IDM1Ni4yNzMgNzAuOTYgMzg0IDk2LjAxMiAzODRIMTQ4YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkg5Ni4xMTVjLTc1LjMzNCAwLTEyMS4zMDItODMuMDQ4LTgxLjQwOC0xNDYuODhsNTAuODIyLTgxLjM4OC00MC43MjUtMjUuNDQ4Yy0xMi4wODEtNy41NDctOC45NjYtMjUuOTYxIDQuODc5LTI5LjE1OGwxMTAuMjM3LTI1LjQ1YzguNjExLTEuOTg4IDE3LjIwMSAzLjM4MSAxOS4xODkgMTEuOTlsMjUuNDUyIDExMC4yMzd6bTk4LjU2MS0xODIuOTE1bDQxLjI4OSA2Ni4wNzYtNDAuNzQgMjUuNDU3Yy0xMi4wNTEgNy41MjgtOSAyNS45NTMgNC44NzkgMjkuMTU4bDExMC4yMzcgMjUuNDVjOC42NzIgMS45OTkgMTcuMjE1LTMuNDM4IDE5LjE4OS0xMS45OWwyNS40NS0xMTAuMjM3YzMuMTk3LTEzLjg0NC0xMS45OS0yNC43MTktMjQuMDY4LTE3LjE2OGwtNDAuNjg3IDI1LjQyNC00MS4yNjMtNjYuMDgyYy0zNy41MjEtNjAuMDMzLTEyNS4yMDktNjAuMTcxLTE2Mi44MTYgMGwtMTcuOTYzIDI4Ljc2NmMtMy41MSA1LjYyLTEuOCAxMy4wMjEgMy44MiAxNi41MzNsMzMuOTE5IDIxLjE5NWM1LjYyIDMuNTEyIDEzLjAyNCAxLjgwMyAxNi41MzYtMy44MTdsMTcuOTYxLTI4Ljc0M2MxMi43MTItMjAuMzQxIDQxLjk3My0xOS42NzYgNTQuMjU3LS4wMjJ6TTQ5Ny4yODggMzAxLjEybC0yNy41MTUtNDQuMDY1Yy0zLjUxMS01LjYyMy0xMC45MTYtNy4zMzQtMTYuNTM4LTMuODIxbC0zMy44NjEgMjEuMTU5Yy01LjYyIDMuNTEyLTcuMzMgMTAuOTE1LTMuODE4IDE2LjUzNmwyNy41NjQgNDQuMTEyYzEzLjI1NyAyMS4yMTEtMi4wNTcgNDguOTYtMjcuMTM2IDQ4Ljk2SDMyMFYzMzYuMDJjMC0xNC4yMTMtMTcuMjQyLTIxLjM4My0yNy4zMTMtMTEuMzEzbC04MCA3OS45ODFjLTYuMjQ5IDYuMjQ4LTYuMjQ5IDE2LjM3OSAwIDIyLjYyN2w4MCA3OS45ODlDMzAyLjY4OSA1MTcuMzA4IDMyMCA1MTAuMyAzMjAgNDk1Ljk4OVY0NDhoOTUuODhjNzUuMjc0IDAgMTIxLjMzNS04Mi45OTcgODEuNDA4LTE0Ni44OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkb0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYuNDU1IDhjNjYuMjY5LjExOSAxMjYuNDM3IDI2LjIzMyAxNzAuODU5IDY4LjY4NWwzNS43MTUtMzUuNzE1QzQ3OC4xNDkgMjUuODUxIDUwNCAzNi41NTkgNTA0IDU3Ljk0MVYxOTJjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDM0NS45NDFjLTIxLjM4MiAwLTMyLjA5LTI1Ljg1MS0xNi45NzEtNDAuOTcxbDQxLjc1LTQxLjc1Yy0zMC44NjQtMjguODk5LTcwLjgwMS00NC45MDctMTEzLjIzLTQ1LjI3My05Mi4zOTgtLjc5OC0xNzAuMjgzIDczLjk3Ny0xNjkuNDg0IDE2OS40NDJDODguNzY0IDM0OC4wMDkgMTYyLjE4NCA0MjQgMjU2IDQyNGM0MS4xMjcgMCA3OS45OTctMTQuNjc4IDExMC42MjktNDEuNTU2IDQuNzQzLTQuMTYxIDExLjkwNi0zLjkwOCAxNi4zNjguNTUzbDM5LjY2MiAzOS42NjJjNC44NzIgNC44NzIgNC42MzEgMTIuODE1LS40ODIgMTcuNDMzQzM3OC4yMDIgNDc5LjgxMyAzMTkuOTI2IDUwNCAyNTYgNTA0IDExOS4wMzQgNTA0IDguMDAxIDM5Mi45NjcgOCAyNTYuMDAyIDcuOTk5IDExOS4xOTMgMTE5LjY0NiA3Ljc1NSAyNTYuNDU1IDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAwLjMzIDBoLTQ3LjQxYTEyIDEyIDAgMCAwLTEyIDEyLjU3bDQgODIuNzZBMjQ3LjQyIDI0Ny40MiAwIDAgMCAyNTYgOEMxMTkuMzQgOCA3LjkgMTE5LjUzIDggMjU2LjE5IDguMSAzOTMuMDcgMTE5LjEgNTA0IDI1NiA1MDRhMjQ3LjEgMjQ3LjEgMCAwIDAgMTY2LjE4LTYzLjkxIDEyIDEyIDAgMCAwIC40OC0xNy40M2wtMzQtMzRhMTIgMTIgMCAwIDAtMTYuMzgtLjU1QTE3NiAxNzYgMCAxIDEgNDAyLjEgMTU3LjhsLTEwMS41My00Ljg3YTEyIDEyIDAgMCAwLTEyLjU3IDEydjQ3LjQxYTEyIDEyIDAgMCAwIDEyIDEyaDIwMC4zM2ExMiAxMiAwIDAgMCAxMi0xMlYxMmExMiAxMiAwIDAgMC0xMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnaXN0ZXJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODUuMzYzIDIwNy40NzVjMCAxOC42LTkuODMxIDI4LjQzMS0yOC40MzEgMjguNDMxaC0yOS44NzZ2LTU2LjE0aDIzLjM3OGMyOC42NjggMCAzNC45MjkgOC43NzMgMzQuOTI5IDI3LjcwOXpNNTA0IDI1NmMwIDEzNi45NjctMTExLjAzMyAyNDgtMjQ4IDI0OFM4IDM5Mi45NjcgOCAyNTYgMTE5LjAzMyA4IDI1NiA4czI0OCAxMTEuMDMzIDI0OCAyNDh6TTM2My40MTEgMzYwLjQxNGMtNDYuNzI5LTg0LjgyNS00My4yOTktNzguNjM2LTQ0LjcwMi04MC45OCAyMy40MzItMTUuMTcyIDM3Ljk0NS00Mi45NzkgMzcuOTQ1LTc0LjQ4NiAwLTU0LjI0NC0zMS41LTg5LjI1Mi0xMDUuNDk4LTg5LjI1MmgtNzAuNjY3Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjRWMzcyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgyMi41NjdjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di03MS42NjNoMjUuNTU2bDQ0LjEyOSA4Mi45MzdhMjQuMDAxIDI0LjAwMSAwIDAgMCAyMS4xODggMTIuNzI3aDI0LjQ2NGMxOC4yNjEtLjAwMSAyOS44MjktMTkuNTkxIDIxLjAxOC0zNS41ODd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlbW92ZUZvcm1hdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgNDE2aC0xMS4xN2w5LjI2LTI3Ljc3TDI2NyAzMzYuNCAyNDAuNDkgNDE2SDIwOGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0yOTcuODIgNDIuMUwzNzcgMjU5LjU5IDQyNi4xNyAxMTJINTQ0djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDE3NmExNiAxNiAwIDAgMC0xNiAxNnY0My45TDQ1LjQ2IDMuMzhBMTYgMTYgMCAwIDAgMjMgNi4xOUwzLjM3IDMxLjQ2YTE2IDE2IDAgMCAwIDIuODEgMjIuNDVsNTg4LjM2IDQ1NC43MmExNiAxNiAwIDAgMCAyMi40Ni0yLjgxbDE5LjY0LTI1LjI3YTE2IDE2IDAgMCAwLTIuODItMjIuNDV6TTMwOS45MSAyMDcuNzZMMjI0IDE0MS4zNlYxMTJoMTE3LjgzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXBseUFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzYuMzA5IDE4OS44MzZMMzEyLjMxMyAzNy44NTFDMzI3LjcyIDI0LjU0NiAzNTIgMzUuMzQ4IDM1MiA1Ni4wMTV2ODIuNzYzYzEyOS4xODIgMTAuMjMxIDIyNCA1Mi4yMTIgMjI0IDE4My41NDggMCA2MS40NDEtMzkuNTgyIDEyMi4zMDktODMuMzMzIDE1NC4xMzItMTMuNjUzIDkuOTMxLTMzLjExMS0yLjUzMy0yOC4wNzctMTguNjMxIDM4LjUxMi0xMjMuMTYyLTMuOTIyLTE2OS40ODItMTEyLjU5LTE4Mi4wMTV2ODQuMTc1YzAgMjAuNzAxLTI0LjMgMzEuNDUzLTM5LjY4NyAxOC4xNjRMMTM2LjMwOSAyMjYuMTY0Yy0xMS4wNzEtOS41NjEtMTEuMDg2LTI2Ljc1MyAwLTM2LjMyOHptLTEyOCAzNi4zMjhMMTg0LjMxMyAzNzguMTVDMTk5LjcgMzkxLjQzOSAyMjQgMzgwLjY4NyAyMjQgMzU5Ljk4NnYtMTUuODE4bC0xMDguNjA2LTkzLjc4NUE1NS45NiA1NS45NiAwIDAgMSA5NiAyMDcuOTk4YTU1Ljk1MyA1NS45NTMgMCAwIDEgMTkuMzkzLTQyLjM4TDIyNCA3MS44MzJWNTYuMDE1YzAtMjAuNjY3LTI0LjI4LTMxLjQ2OS0zOS42ODctMTguMTY0TDguMzA5IDE4OS44MzZjLTExLjA4NiA5LjU3NS0xMS4wNzEgMjYuNzY3IDAgMzYuMzI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXBseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjMwOSAxODkuODM2TDE4NC4zMTMgMzcuODUxQzE5OS43MTkgMjQuNTQ2IDIyNCAzNS4zNDcgMjI0IDU2LjAxNXY4MC4wNTNjMTYwLjYyOSAxLjgzOSAyODggMzQuMDMyIDI4OCAxODYuMjU4IDAgNjEuNDQxLTM5LjU4MSAxMjIuMzA5LTgzLjMzMyAxNTQuMTMyLTEzLjY1MyA5LjkzMS0zMy4xMTEtMi41MzMtMjguMDc3LTE4LjYzMSA0NS4zNDQtMTQ1LjAxMi0yMS41MDctMTgzLjUxLTE3Ni41OS0xODUuNzQyVjM2MGMwIDIwLjctMjQuMyAzMS40NTMtMzkuNjg3IDE4LjE2NGwtMTc2LjAwNC0xNTJjLTExLjA3MS05LjU2Mi0xMS4wODYtMjYuNzUzIDAtMzYuMzI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXB1YmxpY2FuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAxOTJjMC04OC40LTcxLjYtMTYwLTE2MC0xNjBIMTYwQzcxLjYgMzIgMCAxMDMuNiAwIDE5MnY2NGg1NDR2LTY0em0tMzY3LjctMjEuNmwtMTkuOCAxOS4zIDQuNyAyNy4zYy44IDQuOS00LjMgOC42LTguNyA2LjNMMTI4IDIxMC40bC0yNC41IDEyLjljLTQuMyAyLjMtOS41LTEuNC04LjctNi4zbDQuNy0yNy4zLTE5LjgtMTkuM2MtMy42LTMuNS0xLjYtOS41IDMuMy0xMC4ybDI3LjQtNCAxMi4yLTI0LjhjMi4yLTQuNSA4LjYtNC40IDEwLjcgMGwxMi4yIDI0LjggMjcuNCA0YzUgLjcgNi45IDYuNyAzLjQgMTAuMnptMTQ0IDBsLTE5LjggMTkuMyA0LjcgMjcuM2MuOCA0LjktNC4zIDguNi04LjcgNi4zTDI3MiAyMTAuNGwtMjQuNSAxMi45Yy00LjMgMi4zLTkuNS0xLjQtOC43LTYuM2w0LjctMjcuMy0xOS44LTE5LjNjLTMuNi0zLjUtMS42LTkuNSAzLjMtMTAuMmwyNy40LTQgMTIuMi0yNC44YzIuMi00LjUgOC42LTQuNCAxMC43IDBsMTIuMiAyNC44IDI3LjQgNGM1IC43IDYuOSA2LjcgMy40IDEwLjJ6bTE0NCAwbC0xOS44IDE5LjMgNC43IDI3LjNjLjggNC45LTQuMyA4LjYtOC43IDYuM0w0MTYgMjEwLjRsLTI0LjUgMTIuOWMtNC4zIDIuMy05LjUtMS40LTguNy02LjNsNC43LTI3LjMtMTkuOC0xOS4zYy0zLjYtMy41LTEuNi05LjUgMy4zLTEwLjJsMjcuNC00IDEyLjItMjQuOGMyLjItNC41IDguNi00LjQgMTAuNyAwbDEyLjIgMjQuOCAyNy40IDRjNSAuNyA2LjkgNi43IDMuNCAxMC4yek02MjQgMzIwaC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI4OEgwdjE3NmMwIDguOCA3LjIgMTYgMTYgMTZoOTZjOC44IDAgMTYtNy4yIDE2LTE2di04MGgxOTJ2ODBjMCA4LjggNy4yIDE2IDE2IDE2aDk2YzguOCAwIDE2LTcuMiAxNi0xNlYzNTJoMzJ2NDMuM2MwIDQxLjggMzAgODAuMSA3MS42IDg0LjMgNDcuOCA0LjkgODguNC0zMi43IDg4LjQtNzkuNnYtNjRjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXN0cm9vbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMTI4YzM1LjMgMCA2NC0yOC43IDY0LTY0UzE2My4zIDAgMTI4IDAgNjQgMjguNyA2NCA2NHMyOC43IDY0IDY0IDY0em0zODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NFM1NDcuMyAwIDUxMiAwcy02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6bTEyNy4zIDIyNi41bC00NS42LTE4NS44Yy0zLjMtMTMuNS0xNS41LTIzLTI5LjgtMjQuMi0xNSA5LjctMzIuOCAxNS41LTUyIDE1LjUtMTkuMiAwLTM3LTUuOC01Mi0xNS41LTE0LjMgMS4yLTI2LjUgMTAuNy0yOS44IDI0LjJsLTQ1LjYgMTg1LjhDMzgxIDM2OS42IDM5MyAzODQgNDA5LjIgMzg0SDQ2NHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMzg0aDU0LjhjMTYuMiAwIDI4LjItMTQuNCAyNC41LTI5LjV6TTMzNiAwaC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4MGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjE2YzAtOC44LTcuMi0xNi0xNi0xNnpNMTgwLjEgMTQ0LjRjLTE1IDkuOC0zMi45IDE1LjYtNTIuMSAxNS42LTE5LjIgMC0zNy4xLTUuOC01Mi4xLTE1LjZDNTEuMyAxNDYuNSAzMiAxNjYuOSAzMiAxOTJ2MTM2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDh2MTM2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0VjM1Mmg4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE5MmMwLTI1LjEtMTkuMy00NS41LTQzLjktNDcuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmV0d2VldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjkuNjU3IDM0My41OThMNTI4Ljk3MSA0NDQuMjg0Yy05LjM3MyA5LjM3Mi0yNC41NjggOS4zNzItMzMuOTQxIDBMMzk0LjM0MyAzNDMuNTk4Yy05LjM3My05LjM3My05LjM3My0yNC41NjkgMC0zMy45NDFsMTAuODIzLTEwLjgyM2M5LjU2Mi05LjU2MiAyNS4xMzMtOS4zNCAzNC40MTkuNDkyTDQ4MCAzNDIuMTE4VjE2MEgyOTIuNDUxYTI0LjAwNSAyNC4wMDUgMCAwIDEtMTYuOTcxLTcuMDI5bC0xNi0xNkMyNDQuMzYxIDEyMS44NTEgMjU1LjA2OSA5NiAyNzYuNDUxIDk2SDUyMGMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MjIyLjExOGw0MC40MTYtNDIuNzkyYzkuMjg1LTkuODMxIDI0Ljg1Ni0xMC4wNTQgMzQuNDE5LS40OTJsMTAuODIzIDEwLjgyM2M5LjM3MiA5LjM3MiA5LjM3MiAyNC41NjktLjAwMSAzMy45NDF6bS0yNjUuMTM4IDE1LjQzMUEyMy45OTkgMjMuOTk5IDAgMCAwIDM0Ny41NDggMzUySDE2MFYxNjkuODgxbDQwLjQxNiA0Mi43OTJjOS4yODYgOS44MzEgMjQuODU2IDEwLjA1NCAzNC40MTkuNDkxbDEwLjgyMi0xMC44MjJjOS4zNzMtOS4zNzMgOS4zNzMtMjQuNTY5IDAtMzMuOTQxTDE0NC45NzEgNjcuNzE2Yy05LjM3My05LjM3My0yNC41NjktOS4zNzMtMzMuOTQxIDBMMTAuMzQzIDE2OC40MDJjLTkuMzczIDkuMzczLTkuMzczIDI0LjU2OSAwIDMzLjk0MWwxMC44MjIgMTAuODIyYzkuNTYyIDkuNTYyIDI1LjEzMyA5LjM0IDM0LjQxOS0uNDkxTDk2IDE2OS44ODFWMzkyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgyNDMuNTQ5YzIxLjM4MiAwIDMyLjA5LTI1Ljg1MSAxNi45NzEtNDAuOTcxbC0xNi4wMDEtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJpYmJvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjEgNDQ0LjNjLTkuNiAxMC44LTcuNSAyNy42IDQuNSAzNS43bDY4LjggMjcuOWM5LjkgNi43IDIzLjMgNSAzMS4zLTMuOGw5MS44LTEwMS45LTc5LjItODcuOS0xMTcuMiAxMzB6bTQzNS44IDBzLTI5Mi0zMjQuNi0yOTUuNC0zMzAuMWMxNS40LTguNCA0MC4yLTE3LjkgNzcuNS0xNy45czYyLjEgOS41IDc3LjUgMTcuOWMtMy4zIDUuNi01NiA2NC42LTU2IDY0LjZsNzkuMSA4Ny43IDM0LjItMzhjMjguNy0zMS45IDMzLjMtNzguNiAxMS40LTExNS41bC00My43LTczLjVjLTQuMy03LjItOS45LTEzLjMtMTYuOC0xOC00MC43LTI3LjYtMTI3LjQtMjkuNy0xNzEuNCAwLTYuOSA0LjctMTIuNSAxMC44LTE2LjggMThsLTQzLjYgNzMuMmMtMS41IDIuNS0zNy4xIDYyLjIgMTEuNSAxMTZMMzM3LjUgNTA0YzggOC45IDIxLjQgMTAuNSAzMS4zIDMuOGw2OC44LTI3LjljMTEuOS04IDE0LTI0LjggNC4zLTM1LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDY0QzExMC4wNiA2NCAwIDEyNS45MSAwIDIwOHY5OC4xM0MwIDM4NC40OCAxMTQuNjIgNDQ4IDI1NiA0NDhzMjU2LTYzLjUyIDI1Ni0xNDEuODdWMjA4YzAtODIuMDktMTEwLjA2LTE0NC0yNTYtMTQ0em0wIDY0YzEwNi4wNCAwIDE5MiAzNS44MiAxOTIgODAgMCA5LjI2LTMuOTcgMTguMTItMTAuOTEgMjYuMzlDMzkyLjE1IDIwOC4yMSAzMjguMjMgMTkyIDI1NiAxOTJzLTEzNi4xNSAxNi4yMS0xODEuMDkgNDIuMzlDNjcuOTcgMjI2LjEyIDY0IDIxNy4yNiA2NCAyMDhjMC00NC4xOCA4NS45Ni04MCAxOTItODB6TTEyMC40MyAyNjQuNjRDMTU1LjA0IDI0OS45MyAyMDEuNjQgMjQwIDI1NiAyNDBzMTAwLjk2IDkuOTMgMTM1LjU3IDI0LjY0QzM1Ni44NCAyNzkuMDcgMzA4LjkzIDI4OCAyNTYgMjg4cy0xMDAuODQtOC45My0xMzUuNTctMjMuMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTczLjE5IDQwMi42N2wtMTM5Ljc5LTMyMEM0MjguNDMgNzEuMjkgNDE3LjYgNjQgNDA1LjY4IDY0aC05Ny41OWwyLjQ1IDIzLjE2Yy41IDQuNzItMy4yMSA4Ljg0LTcuOTYgOC44NGgtMjkuMTZjLTQuNzUgMC04LjQ2LTQuMTItNy45Ni04Ljg0TDI2Ny45MSA2NGgtOTcuNTljLTExLjkzIDAtMjIuNzYgNy4yOS0yNy43MyAxOC42N0wyLjggNDAyLjY3Qy02LjQ1IDQyMy44NiA4LjMxIDQ0OCAzMC41NCA0NDhoMTk2Ljg0bDEwLjMxLTk3LjY4Yy44Ni04LjE0IDcuNzItMTQuMzIgMTUuOTEtMTQuMzJoNjguOGM4LjE5IDAgMTUuMDUgNi4xOCAxNS45MSAxNC4zMkwzNDguNjIgNDQ4aDE5Ni44NGMyMi4yMyAwIDM2Ljk5LTI0LjE0IDI3LjczLTQ1LjMzek0yNjAuNCAxMzUuMTZhOCA4IDAgMCAxIDcuOTYtNy4xNmgzOS4yOWM0LjA5IDAgNy41MyAzLjA5IDcuOTYgNy4xNmw0LjYgNDMuNThjLjc1IDcuMDktNC44MSAxMy4yNi0xMS45MyAxMy4yNmgtNDAuNTRjLTcuMTMgMC0xMi42OC02LjE3LTExLjkzLTEzLjI2bDQuNTktNDMuNTh6TTMxNS42NCAzMDRoLTU1LjI5Yy05LjUgMC0xNi45MS04LjIzLTE1LjkxLTE3LjY4bDUuMDctNDhjLjg2LTguMTQgNy43Mi0xNC4zMiAxNS45MS0xNC4zMmg0NS4xNWM4LjE5IDAgMTUuMDUgNi4xOCAxNS45MSAxNC4zMmw1LjA3IDQ4YzEgOS40NS02LjQxIDE3LjY4LTE1LjkxIDE3LjY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2JvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiwyMjRINjRWNDE2SDMyQTMxLjk2MTY2LDMxLjk2MTY2LDAsMCwxLDAsMzg0VjI1NkEzMS45NjE2NiwzMS45NjE2NiwwLDAsMSwzMiwyMjRabTUxMi00OFY0NDhhNjQuMDYzMjgsNjQuMDYzMjgsMCwwLDEtNjQsNjRIMTYwYTY0LjA2MzI4LDY0LjA2MzI4LDAsMCwxLTY0LTY0VjE3NmE3OS45NzQsNzkuOTc0LDAsMCwxLDgwLTgwSDI4OFYzMmEzMiwzMiwwLDAsMSw2NCwwVjk2SDQ2NEE3OS45NzQsNzkuOTc0LDAsMCwxLDU0NCwxNzZaTTI2NCwyNTZhNDAsNDAsMCwxLDAtNDAsNDBBMzkuOTk3LDM5Ljk5NywwLDAsMCwyNjQsMjU2Wm0tOCwxMjhIMTkydjMyaDY0Wm05NiwwSDI4OHYzMmg2NFpNNDU2LDI1NmE0MCw0MCwwLDEsMC00MCw0MEEzOS45OTcsMzkuOTk3LDAsMCwwLDQ1NiwyNTZabS04LDEyOEgzODR2MzJoNjRaTTY0MCwyNTZWMzg0YTMxLjk2MTY2LDMxLjk2MTY2LDAsMCwxLTMyLDMySDU3NlYyMjRoMzJBMzEuOTYxNjYsMzEuOTYxNjYsMCwwLDEsNjQwLDI1NlpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm9ja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNS4xMjAxOSwxOS4wOTM3NWMtMS4xODk0NS01LjUzMTI1LTYuNjU4MTktMTEtMTIuMjA3LTEyLjE4NzVDNDYwLjcxNiwwLDQzNS41MDcsMCw0MTAuNDA3NDcsMCwzMDcuMTc1MjMsMCwyNDUuMjY5MDksNTUuMjAzMTIsMTk5LjA1MjM4LDEyOEg5NC44Mzc3MmMtMTYuMzQ3NjMuMDE1NjItMzUuNTU2NTgsMTEuODc1LTQyLjg4NjY0LDI2LjQ4NDM4TDIuNTE1NjIsMjUzLjI5Njg4QTI4LjQsMjguNCwwLDAsMCwwLDI2NGEyNC4wMDg2NywyNC4wMDg2NywwLDAsMCwyNC4wMDU4MiwyNEgxMjcuODE2MThsLTIyLjQ3NDU3LDIyLjQ2ODc1Yy0xMS4zNjUyMSwxMS4zNjEzMy0xMi45OTYwNywzMi4yNTc4MSwwLDQ1LjI1TDE1Ni4yNDU4Miw0MDYuNjI1YzExLjE1NjIzLDExLjE4NzUsMzIuMTU2MTksMTMuMTU2MjUsNDUuMjc3MjYsMGwyMi40NzQ1Ny0yMi40Njg3NVY0ODhhMjQuMDA4NjcsMjQuMDA4NjcsMCwwLDAsMjQuMDA1ODEsMjQsMjguNTU5MzQsMjguNTU5MzQsMCwwLDAsMTAuNzA3LTIuNTE1NjJsOTguNzI4MzQtNDkuMzkwNjNjMTQuNjI4ODgtNy4yOTY4NywyNi41MDc3Ni0yNi41LDI2LjUwNzc2LTQyLjg1OTM3VjMxMi43OTY4OGM3Mi41OTc1My00Ni4zMTI1LDEyOC4wMzQ5My0xMDguNDA2MjYsMTI4LjAzNDkzLTIxMS4wOTM3NkM1MTIuMDc1MjYsNzYuNSw1MTIuMDc1MjYsNTEuMjk2ODgsNTA1LjEyMDE5LDE5LjA5Mzc1Wk0zODQuMDQwMzMsMTY4QTQwLDQwLDAsMSwxLDQyNC4wNSwxMjgsNDAuMDIzMjIsNDAuMDIzMjIsMCwwLDEsMzg0LjA0MDMzLDE2OFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUm91dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDMyMGgtOTZjLTE3LjYgMC0zMi0xNC40LTMyLTMyczE0LjQtMzIgMzItMzJoOTZzOTYtMTA3IDk2LTE2MC00My05Ni05Ni05Ni05NiA0My05NiA5NmMwIDI1LjUgMjIuMiA2My40IDQ1LjMgOTZIMzIwYy01Mi45IDAtOTYgNDMuMS05NiA5NnM0My4xIDk2IDk2IDk2aDk2YzE3LjYgMCAzMiAxNC40IDMyIDMycy0xNC40IDMyLTMyIDMySDE4NS41Yy0xNiAyNC44LTMzLjggNDcuNy00Ny4zIDY0SDQxNmM1Mi45IDAgOTYtNDMuMSA5Ni05NnMtNDMuMS05Ni05Ni05NnptMC0yNTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyek05NiAyNTZjLTUzIDAtOTYgNDMtOTYgOTZzOTYgMTYwIDk2IDE2MCA5Ni0xMDcgOTYtMTYwLTQzLTk2LTk2LTk2em0wIDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJzc1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDM1MmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6TTExMiA0MTZjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bTE1Ny41MzMgMGgtMzQuMzM1Yy02LjAxMSAwLTExLjA1MS00LjYzNi0xMS40NDItMTAuNjM0LTUuMjE0LTgwLjA1LTY5LjI0My0xNDMuOTItMTQ5LjEyMy0xNDkuMTIzLTUuOTk3LS4zOS0xMC42MzMtNS40MzEtMTAuNjMzLTExLjQ0MXYtMzQuMzM1YzAtNi41MzUgNS40NjgtMTEuNzc3IDExLjk5NC0xMS40MjUgMTEwLjU0NiA1Ljk3NCAxOTguOTk3IDk0LjUzNiAyMDQuOTY0IDIwNC45NjQuMzUyIDYuNTI2LTQuODkgMTEuOTk0LTExLjQyNSAxMS45OTR6bTEwMy4wMjcgMGgtMzQuMzM0Yy02LjE2MSAwLTExLjE3NS00Ljg4Mi0xMS40MjctMTEuMDM4LTUuNTk4LTEzNi41MzUtMTE1LjIwNC0yNDYuMTYxLTI1MS43Ni0yNTEuNzZDNjguODgyIDE1Mi45NDkgNjQgMTQ3LjkzNSA2NCAxNDEuNzc0VjEwNy40NGMwLTYuNDU0IDUuMzM4LTExLjY2NCAxMS43ODctMTEuNDMyIDE2Ny44MyA2LjAyNSAzMDIuMjEgMTQxLjE5MSAzMDguMjA1IDMwOC4yMDUuMjMyIDYuNDQ5LTQuOTc4IDExLjc4Ny0xMS40MzIgMTEuNzg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4LjA4MSA0MTUuOTU5YzAgMzUuMzY5LTI4LjY3MiA2NC4wNDEtNjQuMDQxIDY0LjA0MVMwIDQ1MS4zMjggMCA0MTUuOTU5czI4LjY3Mi02NC4wNDEgNjQuMDQxLTY0LjA0MSA2NC4wNCAyOC42NzMgNjQuMDQgNjQuMDQxem0xNzUuNjYgNDcuMjVjLTguMzU0LTE1NC42LTEzMi4xODUtMjc4LjU4Ny0yODYuOTUtMjg2Ljk1QzcuNjU2IDE3NS43NjUgMCAxODMuMTA1IDAgMTkyLjI1M3Y0OC4wNjljMCA4LjQxNSA2LjQ5IDE1LjQ3MiAxNC44ODcgMTYuMDE4IDExMS44MzIgNy4yODQgMjAxLjQ3MyA5Ni43MDIgMjA4Ljc3MiAyMDguNzcyLjU0NyA4LjM5NyA3LjYwNCAxNC44ODcgMTYuMDE4IDE0Ljg4N2g0OC4wNjljOS4xNDkuMDAxIDE2LjQ4OS03LjY1NSAxNS45OTUtMTYuNzl6bTE0NC4yNDkuMjg4QzQzOS41OTYgMjI5LjY3NyAyNTEuNDY1IDQwLjQ0NSAxNi41MDMgMzIuMDEgNy40NzMgMzEuNjg2IDAgMzguOTgxIDAgNDguMDE2djQ4LjA2OGMwIDguNjI1IDYuODM1IDE1LjY0NSAxNS40NTMgMTUuOTk5IDE5MS4xNzkgNy44MzkgMzQ0LjYyNyAxNjEuMzE2IDM1Mi40NjUgMzUyLjQ2NS4zNTMgOC42MTggNy4zNzMgMTUuNDUzIDE1Ljk5OSAxNS40NTNoNDguMDY4YzkuMDM0LS4wMDEgMTYuMzI5LTcuNDc0IDE2LjAwNS0xNi41MDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1YmxlU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzkuMzYgMzIwQzMyNC40OCAzMjAgMzg0IDI2MC41NDIgMzg0IDE3NS4wNzFTMzI0LjQ4IDMyIDIzOS4zNiAzMkg3NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyMDYuNjMySDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEyVjMwOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDUydjMySDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNTJ2NTJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg1OC41NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi01MkgzMDhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxNDYuNTZ2LTMyaDkyLjh6bS05Mi44LTIxOS4yNTJoNzguNzJjNDYuNzIgMCA3NC44OCAyOS4xMSA3NC44OCA3NC4zMjMgMCA0NS44MzItMjguMTYgNzUuNTYxLTc2LjE2IDc1LjU2MWgtNzcuNDRWMTAwLjc0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVsZXJDb21iaW5lZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMjg4aC01NmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDU2di02NGgtNTZjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGg1NlY5NmgtNTZjLTQuNDIgMC04LTMuNTgtOC04VjcyYzAtNC40MiAzLjU4LTggOC04aDU2VjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgMCAwIDE0LjMzIDAgMzJ2NDQ4YzAgMi43Ny45MSA1LjI0IDEuNTcgNy44TDE2MCAzMjkuMzhWMjg4em0zMjAgNjRoLTMydjU2YzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTU2aC02NHY1NmMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di01NmgtNjR2NTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtNTZoLTQxLjM3TDI0LjIgNTEwLjQzYzIuNTYuNjYgNS4wNCAxLjU3IDcuOCAxLjU3aDQ0OGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdWxlckhvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDEyOGgtNDh2ODhjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtODhoLTY0djg4YzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTg4aC02NHY4OGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di04OGgtNjR2ODhjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtODhoLTY0djg4YzAgNC40Mi0zLjU4IDgtOCA4SDg4Yy00LjQyIDAtOC0zLjU4LTgtOHYtODhIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTkyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTEyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMTYwYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1bGVyVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY4IDQxNmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDg4di02NGgtODhjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGg4OHYtNjRoLTg4Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoODh2LTY0aC04OGMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDg4VjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgMCAwIDE0LjMzIDAgMzJ2NDQ4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTkyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0aC04OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjM1LjcgMTY3LjJMNTU2LjEgMzEuN2MtOC44LTE1LTI4LjMtMjAuMS00My41LTExLjVsLTY5IDM5LjFMNTAzLjMgMTYxYzIuMiAzLjguOSA4LjUtMi45IDEwLjdsLTEzLjggNy44Yy0zLjggMi4yLTguNy45LTEwLjktMi45TDQxNiA3NWwtNTUuMiAzMS4zIDI3LjkgNDcuNGMyLjIgMy44LjkgOC41LTIuOSAxMC43bC0xMy44IDcuOGMtMy44IDIuMi04LjcuOS0xMC45LTIuOUwzMzMuMiAxMjIgMjc4IDE1My4zIDMzNy44IDI1NWMyLjIgMy43LjkgOC41LTIuOSAxMC43bC0xMy44IDcuOGMtMy44IDIuMi04LjcuOS0xMC45LTIuOWwtNTkuNy0xMDEuNy01NS4yIDMxLjMgMjcuOSA0Ny40YzIuMiAzLjguOSA4LjUtMi45IDEwLjdsLTEzLjggNy44Yy0zLjggMi4yLTguNy45LTEwLjktMi45bC0yNy45LTQ3LjUtNTUuMiAzMS4zIDU5LjcgMTAxLjdjMi4yIDMuNy45IDguNS0yLjkgMTAuN2wtMTMuOCA3LjhjLTMuOCAyLjItOC43LjktMTAuOS0yLjlMODQuOSAyNjIuOWwtNjkgMzkuMUMuNyAzMTAuNy00LjYgMzI5LjggNC4yIDM0NC44bDc5LjYgMTM1LjZjOC44IDE1IDI4LjMgMjAuMSA0My41IDExLjVMNjI0LjEgMjEwYzE1LjItOC42IDIwLjQtMjcuOCAxMS42LTQyLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1bm5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDk2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhTMjk4LjUxIDAgMjcyIDBzLTQ4IDIxLjQ5LTQ4IDQ4IDIxLjQ5IDQ4IDQ4IDQ4ek0xMTMuNjkgMzE3LjQ3bC0xNC44IDM0LjUySDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyaDc3LjQ1YzE5LjI1IDAgMzYuNTgtMTEuNDQgNDQuMTEtMjkuMDlsOC43OS0yMC41Mi0xMC42Ny02LjNjLTE3LjMyLTEwLjIzLTMwLjA2LTI1LjM3LTM3Ljk5LTQyLjYxek0zODQgMjIzLjk5aC00NC4wM2wtMjYuMDYtNTMuMjVjLTEyLjUtMjUuNTUtMzUuNDUtNDQuMjMtNjEuNzgtNTAuOTRsLTcxLjA4LTIxLjE0Yy0yOC4zLTYuOC01Ny43Ny0uNTUtODAuODQgMTcuMTRsLTM5LjY3IDMwLjQxYy0xNC4wMyAxMC43NS0xNi42OSAzMC44My01LjkyIDQ0Ljg2czMwLjg0IDE2LjY2IDQ0Ljg2IDUuOTJsMzkuNjktMzAuNDFjNy42Ny01Ljg5IDE3LjQ0LTggMjUuMjctNi4xNGwxNC43IDQuMzctMzcuNDYgODcuMzljLTEyLjYyIDI5LjQ4LTEuMzEgNjQuMDEgMjYuMyA4MC4zMWw4NC45OCA1MC4xNy0yNy40NyA4Ny43M2MtNS4yOCAxNi44NiA0LjExIDM0LjgxIDIwLjk3IDQwLjA5IDMuMTkgMSA2LjQxIDEuNDggOS41OCAxLjQ4IDEzLjYxIDAgMjYuMjMtOC43NyAzMC41Mi0yMi40NWwzMS42NC0xMDEuMDZjNS45MS0yMC43Ny0yLjg5LTQzLjA4LTIxLjY0LTU0LjM5bC02MS4yNC0zNi4xNCAzMS4zMS03OC4yOCAyMC4yNyA0MS40M2M4IDE2LjM0IDI0LjkyIDI2Ljg5IDQzLjExIDI2Ljg5SDM4NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMycy0xNC4zMy0zMS45OS0zMi0zMS45OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVwZWVTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwOCA5NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyVjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJDNS4zNzMgMzIgMCAzNy4zNzMgMCA0NHY0NC43NDhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg4NS4yOGMyNy4zMDggMCA0OC4yNjEgOS45NTggNjAuOTcgMjcuMjUySDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTU4Ljc1N2MtNi4yMTcgMzYuMDg2LTMyLjk2MSA1OC42MzItNzQuNzU3IDU4LjYzMkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY1My4wMTJjMCAzLjM0OSAxLjQgNi41NDYgMy44NjEgOC44MThsMTY1LjA1MiAxNTIuMzU2YTEyLjAwMSAxMi4wMDEgMCAwIDAgOC4xMzkgMy4xODJoODIuNTYyYzEwLjkyNCAwIDE2LjE2Ni0xMy40MDggOC4xMzktMjAuODE4TDExNi44NzEgMzE5LjkwNmM3Ni40OTktMi4zNCAxMzEuMTQ0LTUzLjM5NSAxMzguMzE4LTEyNy45MDZIMzA4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTU4LjY5Yy0zLjQ4Ni0xMS41NDEtOC4yOC0yMi4yNDYtMTQuMjUyLTMySDMwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2FkQ3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2YzAgOTAuMSA0OC4yIDE2OC43IDEyMCAyMTIuMVYyODhjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYxOTYuN2MyOS41IDEyLjQgNjIgMTkuMyA5NiAxOS4zczY2LjUtNi45IDk2LTE5LjNWMjg4YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2MTgwLjFDNDQ3LjggNDI0LjcgNDk2IDM0NiA0OTYgMjU2IDQ5NiAxMTkgMzg1IDggMjQ4IDh6bS02NS41IDIxNi41Yy0xNC44LTEzLjItNDYuMi0xMy4yLTYxIDBMMTEyIDIzM2MtMy44IDMuMy05LjMgNC0xMy43IDEuNi00LjQtMi40LTYuOS03LjQtNi4xLTEyLjQgNC0yNS4yIDM0LjItNDIuMSA1OS45LTQyLjFTMjA4IDE5NyAyMTIgMjIyLjJjLjggNS0xLjcgMTAtNi4xIDEyLjQtNS44IDMuMS0xMS4yLjctMTMuNy0xLjZsLTkuNy04LjV6TTI0OCA0MTZjLTI2LjUgMC00OC0yOC43LTQ4LTY0czIxLjUtNjQgNDgtNjQgNDggMjguNyA0OCA2NC0yMS41IDY0LTQ4IDY0em0xNDkuOC0xODEuNWMtNS44IDMuMS0xMS4yLjctMTMuNy0xLjZsLTkuNS04LjVjLTE0LjgtMTMuMi00Ni4yLTEzLjItNjEgMEwzMDQgMjMzYy0zLjggMy4zLTkuMyA0LTEzLjcgMS42LTQuNC0yLjQtNi45LTcuNC02LjEtMTIuNCA0LTI1LjIgMzQuMi00Mi4xIDU5LjktNDIuMVM0MDAgMTk3IDQwNCAyMjIuMmMuNiA0LjktMS44IDkuOS02LjIgMTIuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2FkVGVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em04MCAxNjhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyek0xNTIgNDE2Yy0yNi41IDAtNDgtMjEtNDgtNDcgMC0yMCAyOC41LTYwLjQgNDEuNi03Ny44IDMuMi00LjMgOS42LTQuMyAxMi44IDBDMTcxLjUgMzA4LjYgMjAwIDM0OSAyMDAgMzY5YzAgMjYtMjEuNSA0Ny00OCA0N3ptMTYtMTc2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTcwLjIgMTU0LjJDMzE1LjggMzY3LjQgMjgyLjkgMzUyIDI0OCAzNTJjLTIxLjIgMC0yMS4yLTMyIDAtMzIgNDQuNCAwIDg2LjMgMTkuNiAxMTQuNyA1My44IDEzLjggMTYuNC0xMS4yIDM2LjUtMjQuNSAyMC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYXRlbGxpdGVEaXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNS40NDk1NCw0NjIuNTljNy4zOTE1Nyw3LjI5NzkyLDYuMTg4MjksMjAuMDk2NjEtMy4wMDAzOCwyNS4wMDM1Ni03Ny43MTMsNDEuODAyODEtMTc2LjcyNTU5LDI5LjkxMDUtMjQyLjM0MzMxLTM1LjcwODJDLTUuNDk2MjQsMzg2LjI4MjI3LTE3LjQwNCwyODcuMzYyLDI0LjQxMzgxLDIwOS41NTRjNC44OTEyNS05LjA5NSwxNy42ODk3NS0xMC4yOTgzNCwyNS4wMDMxOC0zLjAwMDQzTDE2Ni4yMjg3MiwzMjMuMzY3MDhsMjcuMzk0MTEtMjcuMzk0NTJjLS42ODc1OS0yLjYwOTc0LTEuNTk0LTUuMDAwNzEtMS41OTQtNy44MTM2MWEzMi4wMDQwNywzMi4wMDQwNywwLDEsMSwzMi4wMDQwNywzMi4wMDQ1NWMtMi43OTcyMywwLTUuMjAzNzgtLjg5MDc1LTcuNzk3ODYtMS41OTRsLTI3LjQwOTc0LDI3LjQxMDE1Wk01MTEuOTc1OCwzMDMuMDY3MzJhMTYuMTAzMzYsMTYuMTAzMzYsMCwwLDEtMTYuMDAyLDE3LjAwMjQySDQ2My44NjAzMWExNS45Njk1NiwxNS45Njk1NiwwLDAsMS0xNS44OTI2NS0xNS4wMDIxM0M0NDAuNDY2NzEsMTc1LjU0OTIsMzM2LjQ1MzQ4LDcwLjUzNDI3LDIwNy4wMzA3OCw2My41MzMyOGExNS44NDQ4NiwxNS44NDQ4NiwwLDAsMS0xNS4wMDE5MS0xNS45MDg1MlYxNi4wMjY1MkExNi4wOTM4OSwxNi4wOTM4OSwwLDAsMSwyMDkuMDMxLjAyNDI1QzM3Mi4yNTQ5MSw4LjYxOTIyLDUwMy40NzQ3MiwxMzkuODQxLDUxMS45NzU4LDMwMy4wNjczMlptLTk2LjAxMjIxLS4yOTY5MmExNi4yMTA5MywxNi4yMTA5MywwLDAsMS0xNi4xMTE0MiwxNy4yOTkzNEgzNjcuNjQ1YTE2LjA2ODYyLDE2LjA2ODYyLDAsMCwxLTE1Ljg5MjY1LTE0LjcwNTIyYy02LjkwNzEyLTc3LjAxMDk0LTY4LjExOC0xMzguOTEwMzctMTQ0LjkyNDY3LTE0NS4yMjM3NmExNS45NCwxNS45NCwwLDAsMS0xNC43OTg3Ni0xNS44OTI4OVYxMTIuMTMzOTNhMTYuMTM0LDE2LjEzNCwwLDAsMSwxNy4yOTkwOC0xNi4wOTZDMzE5LjQ1MTMyLDEwNC41MzkxLDQwNy41NTYyNywxOTIuNjQ1MzgsNDE1Ljk2MzU5LDMwMi43NzA0WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYXRlbGxpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAyLjYwOTY5LDMxMC4wNDIwNmwtOTYuNzAzOTMsOTYuNzE2MjVhMzEuODgxNTEsMzEuODgxNTEsMCwwLDEtNDUuMDA3NjUsMEwyODAuNTcyLDMyNi4zNDExNWwtOS44OTIzMSw5LjkwNzU5YTE5MC41NjM0MywxOTAuNTYzNDMsMCwwLDEtNS40MDcxNiwxNjguNTIyODdjLTQuNTAwNzcsOC41MDExNS0xNi4zOTM0Miw5LjU5NTA1LTIzLjIwNzA3LDIuNzk3MjVMMTM0LjU0NzE1LDQwMC4wNTQyOGwtMTcuNzk5OSwxNy43OTkyOWMuNzAzMjQsMi42MDk3MiwxLjYwOTY1LDUuMDAwNjcsMS42MDk2NSw3Ljc5NzkzYTMyLjAwNTQ0LDMyLjAwNTQ0LDAsMSwxLTMyLjAwNTQ0LTMyLjAwNDM0YzIuNzk3MzUsMCw1LjE4ODM4LjkwNjM3LDcuNzk4MiwxLjYwOTU5bDE3Ljc5OTktMTcuNzk5MjlMNC40MzEyOSwyNjkuOTQyODdjLTYuNzk4LTYuODEzNDItNS43MDQwOS0xOC42MTE5LDIuNzk3MzUtMjMuMjA2MjdhMTkwLjU4MTYxLDE5MC41ODE2MSwwLDAsMSwxNjguNTI4NjQtNS40MDdsOS43OTg1NC05Ljc5ODIxLTgwLjMxMDUzLTgwLjQxNzE2YTMyLjAwMiwzMi4wMDIsMCwwLDEsMC00NS4wOTk4N0wyMDEuOTY0NzQsOS4yOTgxNEEzMS42MjYzOSwzMS42MjYzOSwwLDAsMSwyMjQuNDY4NjgsMGEzMS45OTk1MSwzMS45OTk1MSwwLDAsMSwyMi41OTc1OSw5LjI5ODE0bDgwLjMyNjE1LDgwLjMwNzc3LDQ3LjgwNS00Ny44OTcxM2EzMy42MDc1LDMzLjYwNzUsMCwwLDEsNDcuNTA4MDgsMGw0Ny41MDgwNyw0Ny41MDY0NWEzMy42MzMwOCwzMy42MzMwOCwwLDAsMSwwLDQ3LjUwNjQ0bC00Ny44MDUsNDcuODk3MTNMNTAyLjcxOTA4LDI2NS4wMzZBMzEuNzg5MzgsMzEuNzg5MzgsMCwwLDEsNTAyLjYwOTY5LDMxMC4wNDIwNlpNMjE5LjU2MTU5LDE5Ny40MzNsNzMuODI1MDUtNzMuODIyNTItNjguOTE4LTY4LjktNzMuODA5NDIsNzMuODA2ODlabTIzNy43NDM1Miw5MC4xMDYtNjguOTAyMzMtNjguOTE1Ni03My44MjUsNzMuODIyNTIsNjguOTE4LDY4LjlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNhdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMzLjk0MSAxMjkuOTQxbC04My44ODItODMuODgyQTQ4IDQ4IDAgMCAwIDMxNi4xMTggMzJINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDM1MmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjE2My44ODJhNDggNDggMCAwIDAtMTQuMDU5LTMzLjk0MXpNMjI0IDQxNmMtMzUuMzQ2IDAtNjQtMjguNjU0LTY0LTY0IDAtMzUuMzQ2IDI4LjY1NC02NCA2NC02NHM2NCAyOC42NTQgNjQgNjRjMCAzNS4zNDYtMjguNjU0IDY0LTY0IDY0em05Ni0zMDQuNTJWMjEyYzAgNi42MjctNS4zNzMgMTItMTIgMTJINzZjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJWMTA4YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMjI4LjUyYzMuMTgzIDAgNi4yMzUgMS4yNjQgOC40ODUgMy41MTVsMy40OCAzLjQ4QTExLjk5NiAxMS45OTYgMCAwIDEgMzIwIDExMS40OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2Nob29sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjI0djI3MmMwIDguODQgNy4xNiAxNiAxNiAxNmg4MFYxOTJIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ6bTM2MC00OGgtMjR2LTQwYzAtNC40Mi0zLjU4LTgtOC04aC0xNmMtNC40MiAwLTggMy41OC04IDh2NjRjMCA0LjQyIDMuNTggOCA4IDhoNDhjNC40MiAwIDgtMy41OCA4LTh2LTE2YzAtNC40Mi0zLjU4LTgtOC04em0xMzcuNzUtNjMuOTZsLTE2MC0xMDYuNjdhMzIuMDIgMzIuMDIgMCAwIDAtMzUuNSAwbC0xNjAgMTA2LjY3QTMyLjAwMiAzMi4wMDIgMCAwIDAgMTI4IDEzOC42NlY1MTJoMTI4VjM2OGMwLTguODQgNy4xNi0xNiAxNi0xNmg5NmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYxNDRoMTI4VjEzOC42N2MwLTEwLjctNS4zNS0yMC43LTE0LjI1LTI2LjYzek0zMjAgMjU2Yy00NC4xOCAwLTgwLTM1LjgyLTgwLTgwczM1LjgyLTgwIDgwLTgwIDgwIDM1LjgyIDgwIDgwLTM1LjgyIDgwLTgwIDgwem0yODgtNjRoLTY0djMyMGg4MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyMjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NyZXdkcml2ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDBMMzIwIDk2djYyLjA2bC04My4wMyA4My4wM2M2Ljc5IDQuMjUgMTMuMjcgOS4wNiAxOS4wNyAxNC44NyA1LjggNS44IDEwLjYyIDEyLjI4IDE0Ljg3IDE5LjA3TDM1My45NCAxOTJINDE2bDk2LTEyOC02NC02NHpNMTI4IDI3OC41OUwxMC45MiAzOTUuNjdjLTE0LjU1IDE0LjU1LTE0LjU1IDM4LjE1IDAgNTIuNzFsNTIuNyA1Mi43YzE0LjU2IDE0LjU2IDM4LjE1IDE0LjU2IDUyLjcxIDBMMjMzLjQxIDM4NGMyOS4xMS0yOS4xMSAyOS4xMS03Ni4zIDAtMTA1LjQxcy03Ni4zLTI5LjExLTEwNS40MSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY3JvbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDggMEMyMS41MyAwIDAgMjEuNTMgMCA0OHY2NGMwIDguODQgNy4xNiAxNiAxNiAxNmg4MFY0OEM5NiAyMS41MyA3NC40NyAwIDQ4IDB6bTIwOCA0MTIuNTdWMzUyaDI4OFY5NmMwLTUyLjk0LTQzLjA2LTk2LTk2LTk2SDExMS41OUMxMjEuNzQgMTMuNDEgMTI4IDI5LjkyIDEyOCA0OHYzNjhjMCAzOC44NyAzNC42NSA2OS42NSA3NC43NSA2My4xMkMyMzQuMjIgNDc0IDI1NiA0NDQuNDYgMjU2IDQxMi41N3pNMjg4IDM4NHYzMmMwIDUyLjkzLTQzLjA2IDk2LTk2IDk2aDMzNmM2MS44NiAwIDExMi01MC4xNCAxMTItMTEyIDAtOC44NC03LjE2LTE2LTE2LTE2SDI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2RDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAwSDEyOEwwIDEyOHYzMjBjMCAzNS4zIDI4LjcgNjQgNjQgNjRoMjU2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0ek0xNjAgMTYwaC00OFY2NGg0OHY5NnptODAgMGgtNDhWNjRoNDh2OTZ6bTgwIDBoLTQ4VjY0aDQ4djk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZWFyY2hEb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA1LjA0IDQ0Mi42NmwtOTkuNzEtOTkuNjljLTQuNS00LjUtMTAuNi03LTE3LTdoLTE2LjNjMjcuNi0zNS4zIDQ0LTc5LjY5IDQ0LTEyNy45OUM0MTYuMDMgOTMuMDkgMzIyLjkyIDAgMjA4LjAyIDBTMCA5My4wOSAwIDIwNy45OHM5My4xMSAyMDcuOTggMjA4LjAyIDIwNy45OGM0OC4zIDAgOTIuNzEtMTYuNCAxMjguMDEtNDR2MTYuM2MwIDYuNCAyLjUgMTIuNSA3IDE3bDk5LjcxIDk5LjY5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDI4LjMtMjguM2M5LjQtOS40IDkuNC0yNC41OS4xLTMzLjk5em0tMjk3LjAyLTkwLjdjLTc5LjU0IDAtMTQ0LTY0LjM0LTE0NC0xNDMuOTggMC03OS41MyA2NC4zNS0xNDMuOTggMTQ0LTE0My45OCA3OS41NCAwIDE0NCA2NC4zNCAxNDQgMTQzLjk4IDAgNzkuNTMtNjQuMzUgMTQzLjk4LTE0NCAxNDMuOTh6bTI3LjExLTE1Mi41NGwtNDUuMDEtMTMuNWMtNS4xNi0xLjU1LTguNzctNi43OC04Ljc3LTEyLjczIDAtNy4yNyA1LjMtMTMuMTkgMTEuOC0xMy4xOWgyOC4xMWM0LjU2IDAgOC45NiAxLjI5IDEyLjgyIDMuNzIgMy4yNCAyLjAzIDcuMzYgMS45MSAxMC4xMy0uNzNsMTEuNzUtMTEuMjFjMy41My0zLjM3IDMuMzMtOS4yMS0uNTctMTIuMTQtOS4xLTYuODMtMjAuMDgtMTAuNzctMzEuMzctMTEuMzVWMTEyYzAtNC40Mi0zLjU4LTgtOC04aC0xNmMtNC40MiAwLTggMy41OC04IDh2MTYuMTJjLTIzLjYzLjYzLTQyLjY4IDIwLjU1LTQyLjY4IDQ1LjA3IDAgMTkuOTcgMTIuOTkgMzcuODEgMzEuNTggNDMuMzlsNDUuMDEgMTMuNWM1LjE2IDEuNTUgOC43NyA2Ljc4IDguNzcgMTIuNzMgMCA3LjI3LTUuMyAxMy4xOS0xMS44IDEzLjE5aC0yOC4xYy00LjU2IDAtOC45Ni0xLjI5LTEyLjgyLTMuNzItMy4yNC0yLjAzLTcuMzYtMS45MS0xMC4xMy43M2wtMTEuNzUgMTEuMjFjLTMuNTMgMy4zNy0zLjMzIDkuMjEuNTcgMTIuMTQgOS4xIDYuODMgMjAuMDggMTAuNzcgMzEuMzcgMTEuMzVWMzA0YzAgNC40MiAzLjU4IDggOCA4aDE2YzQuNDIgMCA4LTMuNTggOC04di0xNi4xMmMyMy42My0uNjMgNDIuNjgtMjAuNTQgNDIuNjgtNDUuMDcgMC0xOS45Ny0xMi45OS0zNy44MS0zMS41OS00My4zOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VhcmNoTG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA1LjA0IDQ0Mi42NmwtOTkuNzEtOTkuNjljLTQuNS00LjUtMTAuNi03LTE3LTdoLTE2LjNjMjcuNi0zNS4zIDQ0LTc5LjY5IDQ0LTEyNy45OUM0MTYuMDMgOTMuMDkgMzIyLjkyIDAgMjA4LjAyIDBTMCA5My4wOSAwIDIwNy45OHM5My4xMSAyMDcuOTggMjA4LjAyIDIwNy45OGM0OC4zIDAgOTIuNzEtMTYuNCAxMjguMDEtNDR2MTYuM2MwIDYuNCAyLjUgMTIuNSA3IDE3bDk5LjcxIDk5LjY5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDI4LjMtMjguM2M5LjQtOS40IDkuNC0yNC41OS4xLTMzLjk5em0tMjk3LjAyLTkwLjdjLTc5LjU0IDAtMTQ0LTY0LjM0LTE0NC0xNDMuOTggMC03OS41MyA2NC4zNS0xNDMuOTggMTQ0LTE0My45OCA3OS41NCAwIDE0NCA2NC4zNCAxNDQgMTQzLjk4IDAgNzkuNTMtNjQuMzUgMTQzLjk4LTE0NCAxNDMuOTh6bS4wMi0yMzkuOTZjLTQwLjc4IDAtNzMuODQgMzMuMDUtNzMuODQgNzMuODMgMCAzMi45NiA0OC4yNiA5My4wNSA2Ni43NSAxMTQuODZhOS4yNCA5LjI0IDAgMCAwIDE0LjE4IDBjMTguNDktMjEuODEgNjYuNzUtODEuODkgNjYuNzUtMTE0Ljg2IDAtNDAuNzgtMzMuMDYtNzMuODMtNzMuODQtNzMuODN6bTAgOTZjLTEzLjI2IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZWFyY2hNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgMTkydjMyYzAgNi42LTUuNCAxMi0xMiAxMkgxMjRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMzJjMC02LjYgNS40LTEyIDEyLTEyaDE2OGM2LjYgMCAxMiA1LjQgMTIgMTJ6bTIwMSAyODQuN0w0NzYuNyA1MDVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDM0MyA0MDUuM2MtNC41LTQuNS03LTEwLjYtNy0xN1YzNzJjLTM1LjMgMjcuNi03OS43IDQ0LTEyOCA0NEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMHMyMDggOTMuMSAyMDggMjA4YzAgNDguMy0xNi40IDkyLjctNDQgMTI4aDE2LjNjNi40IDAgMTIuNSAyLjUgMTcgN2w5OS43IDk5LjdjOS4zIDkuNCA5LjMgMjQuNiAwIDM0ek0zNDQgMjA4YzAtNzUuMi02MC44LTEzNi0xMzYtMTM2UzcyIDEzMi44IDcyIDIwOHM2MC44IDEzNiAxMzYgMTM2IDEzNi02MC44IDEzNi0xMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlYXJjaFBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDE5MnYzMmMwIDYuNi01LjQgMTItMTIgMTJoLTU2djU2YzAgNi42LTUuNCAxMi0xMiAxMmgtMzJjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNTZoLTU2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTMyYzAtNi42IDUuNC0xMiAxMi0xMmg1NnYtNTZjMC02LjYgNS40LTEyIDEyLTEyaDMyYzYuNiAwIDEyIDUuNCAxMiAxMnY1Nmg1NmM2LjYgMCAxMiA1LjQgMTIgMTJ6bTIwMSAyODQuN0w0NzYuNyA1MDVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDM0MyA0MDUuM2MtNC41LTQuNS03LTEwLjYtNy0xN1YzNzJjLTM1LjMgMjcuNi03OS43IDQ0LTEyOCA0NEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMHMyMDggOTMuMSAyMDggMjA4YzAgNDguMy0xNi40IDkyLjctNDQgMTI4aDE2LjNjNi40IDAgMTIuNSAyLjUgMTcgN2w5OS43IDk5LjdjOS4zIDkuNCA5LjMgMjQuNiAwIDM0ek0zNDQgMjA4YzAtNzUuMi02MC44LTEzNi0xMzYtMTM2UzcyIDEzMi44IDcyIDIwOHM2MC44IDEzNiAxMzYgMTM2IDEzNi02MC44IDEzNi0xMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDUgNDQyLjdMNDA1LjMgMzQzYy00LjUtNC41LTEwLjYtNy0xNy03SDM3MmMyNy42LTM1LjMgNDQtNzkuNyA0NC0xMjhDNDE2IDkzLjEgMzIyLjkgMCAyMDggMFMwIDkzLjEgMCAyMDhzOTMuMSAyMDggMjA4IDIwOGM0OC4zIDAgOTIuNy0xNi40IDEyOC00NHYxNi4zYzAgNi40IDIuNSAxMi41IDcgMTdsOTkuNyA5OS43YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDI4LjMtMjguM2M5LjQtOS40IDkuNC0yNC42LjEtMzR6TTIwOCAzMzZjLTcwLjcgMC0xMjgtNTcuMi0xMjgtMTI4IDAtNzAuNyA1Ny4yLTEyOCAxMjgtMTI4IDcwLjcgMCAxMjggNTcuMiAxMjggMTI4IDAgNzAuNy01Ny4yIDEyOC0xMjggMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZWVkbGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA5NkgwYzAgMTIzLjcgMTAwLjMgMjI0IDIyNCAyMjR2MTQ0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwQzI4OCAxOTYuMyAxODcuNyA5NiA2NCA5NnptMzg0LTY0Yy04NC4yIDAtMTU3LjQgNDYuNS0xOTUuNyAxMTUuMiAyNy43IDMwLjIgNDguMiA2Ni45IDU5IDEwNy42QzQyNCAyNDMuMSA1MTIgMTQ3LjkgNTEyIDMyaC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VydmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAxNjBIMzJjLTE3LjY3MyAwLTMyLTE0LjMyNy0zMi0zMlY2NGMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJoNDQ4YzE3LjY3MyAwIDMyIDE0LjMyNyAzMiAzMnY2NGMwIDE3LjY3My0xNC4zMjcgMzItMzIgMzJ6bS00OC04OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0czEwLjc0NSAyNCAyNCAyNCAyNC0xMC43NDUgMjQtMjQtMTAuNzQ1LTI0LTI0LTI0em0tNjQgMGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0czEwLjc0NSAyNCAyNCAyNCAyNC0xMC43NDUgMjQtMjQtMTAuNzQ1LTI0LTI0LTI0em0xMTIgMjQ4SDMyYy0xNy42NzMgMC0zMi0xNC4zMjctMzItMzJ2LTY0YzAtMTcuNjczIDE0LjMyNy0zMiAzMi0zMmg0NDhjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMydjY0YzAgMTcuNjczLTE0LjMyNyAzMi0zMiAzMnptLTQ4LTg4Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjRzMTAuNzQ1IDI0IDI0IDI0IDI0LTEwLjc0NSAyNC0yNC0xMC43NDUtMjQtMjQtMjR6bS02NCAwYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjRzMTAuNzQ1IDI0IDI0IDI0IDI0LTEwLjc0NSAyNC0yNC0xMC43NDUtMjQtMjQtMjR6bTExMiAyNDhIMzJjLTE3LjY3MyAwLTMyLTE0LjMyNy0zMi0zMnYtNjRjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyaDQ0OGMxNy42NzMgMCAzMiAxNC4zMjcgMzIgMzJ2NjRjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMyem0tNDgtODhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHMxMC43NDUgMjQgMjQgMjQgMjQtMTAuNzQ1IDI0LTI0LTEwLjc0NS0yNC0yNC0yNHptLTY0IDBjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHMxMC43NDUgMjQgMjQgMjQgMjQtMTAuNzQ1IDI0LTI0LTEwLjc0NS0yNC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hhcGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCwyNTZBMTI4LDEyOCwwLDEsMCwyNTYsMzg0LDEyOCwxMjgsMCwwLDAsMTI4LDI1NlptMzc5LTU0Ljg2TDQwMC4wNywxOC4yOWEzNy4yNiwzNy4yNiwwLDAsMC02NC4xNCwwTDIyOSwyMDEuMTRDMjE0Ljc2LDIyNS41MiwyMzIuNTgsMjU2LDI2MS4wOSwyNTZINDc0LjkxQzUwMy40MiwyNTYsNTIxLjI0LDIyNS41Miw1MDcsMjAxLjE0Wk00ODAsMjg4SDMyMGEzMiwzMiwwLDAsMC0zMiwzMlY0ODBhMzIsMzIsMCwwLDAsMzIsMzJINDgwYTMyLDMyLDAsMCwwLDMyLTMyVjMyMEEzMiwzMiwwLDAsMCw0ODAsMjg4WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGFyZUFsdFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggODB2MzUyYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHpNMzA0IDI5NmMtMTQuNTYyIDAtMjcuODIzIDUuNTYxLTM3Ljc4MyAxNC42NzFsLTY3Ljk1OC00MC43NzVhNTYuMzM5IDU2LjMzOSAwIDAgMCAwLTI3Ljc5M2w2Ny45NTgtNDAuNzc1QzI3Ni4xNzcgMjEwLjQzOSAyODkuNDM4IDIxNiAzMDQgMjE2YzMwLjkyOCAwIDU2LTI1LjA3MiA1Ni01NnMtMjUuMDcyLTU2LTU2LTU2LTU2IDI1LjA3Mi01NiA1NmMwIDQuNzk3LjYwNSA5LjQ1MyAxLjc0IDEzLjg5N2wtNjcuOTU4IDQwLjc3NUMxNzEuODIzIDIwNS41NjEgMTU4LjU2MiAyMDAgMTQ0IDIwMGMtMzAuOTI4IDAtNTYgMjUuMDcyLTU2IDU2czI1LjA3MiA1NiA1NiA1NmMxNC41NjIgMCAyNy44MjMtNS41NjEgMzcuNzgzLTE0LjY3MWw2Ny45NTggNDAuNzc1YTU2LjA4OCA1Ni4wODggMCAwIDAtMS43NCAxMy44OTdjMCAzMC45MjggMjUuMDcyIDU2IDU2IDU2czU2LTI1LjA3MiA1Ni01NkMzNjAgMzIxLjA3MiAzMzQuOTI4IDI5NiAzMDQgMjk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGFyZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMzIwYy0yMi42MDggMC00My4zODcgNy44MTktNTkuNzkgMjAuODk1bC0xMDIuNDg2LTY0LjA1NGE5Ni41NTEgOTYuNTUxIDAgMCAwIDAtNDEuNjgzbDEwMi40ODYtNjQuMDU0QzMwOC42MTMgMTg0LjE4MSAzMjkuMzkyIDE5MiAzNTIgMTkyYzUzLjAxOSAwIDk2LTQyLjk4MSA5Ni05NlM0MDUuMDE5IDAgMzUyIDBzLTk2IDQyLjk4MS05NiA5NmMwIDcuMTU4Ljc5IDE0LjEzIDIuMjc2IDIwLjg0MUwxNTUuNzkgMTgwLjg5NUMxMzkuMzg3IDE2Ny44MTkgMTE4LjYwOCAxNjAgOTYgMTYwYy01My4wMTkgMC05NiA0Mi45ODEtOTYgOTZzNDIuOTgxIDk2IDk2IDk2YzIyLjYwOCAwIDQzLjM4Ny03LjgxOSA1OS43OS0yMC44OTVsMTAyLjQ4NiA2NC4wNTRBOTYuMzAxIDk2LjMwMSAwIDAgMCAyNTYgNDE2YzAgNTMuMDE5IDQyLjk4MSA5NiA5NiA5NnM5Ni00Mi45ODEgOTYtOTYtNDIuOTgxLTk2LTk2LTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGFyZVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjguNDgyIDE3Ny40NDhMNDI0LjQ3OSAzMTMuNDMzQzQwOS4zIDMyNy43NjggMzg0IDMxNy4xNCAzODQgMjk1Ljk4NXYtNzEuOTYzYy0xNDQuNTc1Ljk3LTIwNS41NjYgMzUuMTEzLTE2NC43NzUgMTcxLjM1MyA0LjQ4MyAxNC45NzMtMTIuODQ2IDI2LjU2Ny0yNS4wMDYgMTcuMzNDMTU1LjI1MiAzODMuMTA1IDEyMCAzMjYuNDg4IDEyMCAyNjkuMzM5YzAtMTQzLjkzNyAxMTcuNTk5LTE3Mi41IDI2NC0xNzMuMzEyVjI0LjAxMmMwLTIxLjE3NCAyNS4zMTctMzEuNzY4IDQwLjQ3OS0xNy40NDhsMTQ0LjAwMyAxMzUuOTg4YzEwLjAyIDkuNDYzIDEwLjAyOCAyNS40MjUgMCAzNC44OTZ6TTM4NCAzNzkuMTI4VjQ0OEg2NFYxMjhoNTAuOTE2YTExLjk5IDExLjk5IDAgMCAwIDguNjQ4LTMuNjkzYzE0Ljk1My0xNS41NjggMzIuMjM3LTI3Ljg5IDUxLjAxNC0zNy42NzZDMTg1LjcwOCA4MC44MyAxODEuNTg0IDY0IDE2OS4wMzMgNjRINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OHYtODguODA2YzAtOC4yODgtOC4xOTctMTQuMDY2LTE2LjAxMS0xMS4zMDJhNzEuODMgNzEuODMgMCAwIDEtMzQuMTg5IDMuMzc3Yy03LjI3LTEuMDQ2LTEzLjggNC41MTQtMTMuOCAxMS44NTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMy42OTEgMTg5LjgzNkwzMjcuNjg3IDM3Ljg1MUMzMTIuMjgxIDI0LjU0NiAyODggMzUuMzQ3IDI4OCA1Ni4wMTV2ODAuMDUzQzEyNy4zNzEgMTM3LjkwNyAwIDE3MC4xIDAgMzIyLjMyNmMwIDYxLjQ0MSAzOS41ODEgMTIyLjMwOSA4My4zMzMgMTU0LjEzMiAxMy42NTMgOS45MzEgMzMuMTExLTIuNTMzIDI4LjA3Ny0xOC42MzFDNjYuMDY2IDMxMi44MTQgMTMyLjkxNyAyNzQuMzE2IDI4OCAyNzIuMDg1VjM2MGMwIDIwLjcgMjQuMyAzMS40NTMgMzkuNjg3IDE4LjE2NGwxNzYuMDA0LTE1MmMxMS4wNzEtOS41NjIgMTEuMDg2LTI2Ljc1MyAwLTM2LjMyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hla2VsU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggMTY4djE2OGMwIDguODQgNy4xNiAxNiAxNiAxNmg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNjhjMC03NS4xMS02MC44OS0xMzYtMTM2LTEzNkgyNEMxMC43NSAzMiAwIDQyLjc0IDAgNTZ2NDA4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjExMmgxMTJjMzAuOTMgMCA1NiAyNS4wNyA1NiA1NnpNNDMyIDMyaC00OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2Mjk2YzAgMzAuOTMtMjUuMDcgNTYtNTYgNTZIMjAwVjE3NmMwLTguODQtNy4xNi0xNi0xNi0xNmgtNDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djI4MGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDE2OGM3NS4xMSAwIDEzNi02MC44OSAxMzYtMTM2VjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGllbGRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY2LjUgODMuN2wtMTkyLTgwYTQ4LjE1IDQ4LjE1IDAgMCAwLTM2LjkgMGwtMTkyIDgwQzI3LjcgOTEuMSAxNiAxMDguNiAxNiAxMjhjMCAxOTguNSAxMTQuNSAzMzUuNyAyMjEuNSAzODAuMyAxMS44IDQuOSAyNS4xIDQuOSAzNi45IDBDMzYwLjEgNDcyLjYgNDk2IDM0OS4zIDQ5NiAxMjhjMC0xOS40LTExLjctMzYuOS0yOS41LTQ0LjN6TTI1Ni4xIDQ0Ni4zbC0uMS0zODEgMTc1LjkgNzMuM2MtMy4zIDE1MS40LTgyLjEgMjYxLjEtMTc1LjggMzA3Ljd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaWVsZFZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCwxOTJhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMjI0LDE5MlpNNDY2LjUsODMuNjhsLTE5Mi04MEE1Ny40LDU3LjQsMCwwLDAsMjU2LjA1LDBhNTcuNCw1Ny40LDAsMCwwLTE4LjQ2LDMuNjdsLTE5Miw4MEE0Ny45Myw0Ny45MywwLDAsMCwxNiwxMjhDMTYsMzI2LjUsMTMwLjUsNDYzLjcyLDIzNy41LDUwOC4zMmE0OC4wOSw0OC4wOSwwLDAsMCwzNi45MSwwQzM2MC4wOSw0NzIuNjEsNDk2LDM0OS4zLDQ5NiwxMjhBNDgsNDgsMCwwLDAsNDY2LjUsODMuNjhaTTM4NCwyNTZIMzcxLjg4Yy0yOC41MSwwLTQyLjc5LDM0LjQ3LTIyLjYzLDU0LjYzbDguNTgsOC41N2ExNiwxNiwwLDEsMS0yMi42MywyMi42M2wtOC41Ny04LjU4QzMwNi40NywzMTMuMDksMjcyLDMyNy4zNywyNzIsMzU1Ljg4VjM2OGExNiwxNiwwLDAsMS0zMiwwVjM1NS44OGMwLTI4LjUxLTM0LjQ3LTQyLjc5LTU0LjYzLTIyLjYzbC04LjU3LDguNThhMTYsMTYsMCwwLDEtMjIuNjMtMjIuNjNsOC41OC04LjU3YzIwLjE2LTIwLjE2LDUuODgtNTQuNjMtMjIuNjMtNTQuNjNIMTI4YTE2LDE2LDAsMCwxLDAtMzJoMTIuMTJjMjguNTEsMCw0Mi43OS0zNC40NywyMi42My01NC42M2wtOC41OC04LjU3YTE2LDE2LDAsMCwxLDIyLjYzLTIyLjYzbDguNTcsOC41OGMyMC4xNiwyMC4xNiw1NC42Myw1Ljg4LDU0LjYzLTIyLjYzVjExMmExNiwxNiwwLDAsMSwzMiwwdjEyLjEyYzAsMjguNTEsMzQuNDcsNDIuNzksNTQuNjMsMjIuNjNsOC41Ny04LjU4YTE2LDE2LDAsMCwxLDIyLjYzLDIyLjYzbC04LjU4LDguNTdDMzI5LjA5LDE4OS41MywzNDMuMzcsMjI0LDM3MS44OCwyMjRIMzg0YTE2LDE2LDAsMCwxLDAsMzJabS05NiwwYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDI4OCwyNTZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2LjYxNiAzNzIuNjM5bDcwLjAxMi03MC4wMTJjMTYuODk5LTE2LjkgOS45NDItNDUuNzcxLTEyLjgzNi01My4wOTJMNTEyIDIzNi4xMDJWOTZjMC0xNy42NzMtMTQuMzI3LTMyLTMyLTMyaC02NFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjQ4Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2NDBoLTY0Yy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJ2MTQwLjEwMmwtNDEuNzkyIDEzLjQzM2MtMjIuNzUzIDcuMzEzLTI5Ljc1NCAzNi4xNzMtMTIuODM2IDUzLjA5Mmw3MC4wMTIgNzAuMDEyQzEyNS44MjggNDE2LjI4NyA4NS41ODcgNDQ4IDI0IDQ0OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNCA2MS4wMjMgMCAxMDcuNDk5LTIwLjYxIDE0My4yNTgtNTkuMzk2QzE4MS42NzcgNDg3LjQzMiAyMTYuMDIxIDUxMiAyNTYgNTEyaDEyOGMzOS45NzkgMCA3NC4zMjMtMjQuNTY4IDg4Ljc0Mi01OS4zOTZDNTA4LjQ5NSA0OTEuMzg0IDU1NC45NjggNTEyIDYxNiA1MTJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjQtNjAuODE3IDAtMTAxLjU0Mi0zMS4wMDEtMTE5LjM4NC03NS4zNjF6TTE5MiAxMjhoMjU2djg3LjUzMWwtMTE4LjIwOC0zNy45OTVhMzEuOTk1IDMxLjk5NSAwIDAgMC0xOS41ODQgMEwxOTIgMjE1LjUzMVYxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaXBwaW5nRmFzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQgMzUyaC0xNlYyNDMuOWMwLTEyLjctNS4xLTI0LjktMTQuMS0zMy45TDQ5NCAxMTAuMWMtOS05LTIxLjItMTQuMS0zMy45LTE0LjFINDE2VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDExMkM4NS41IDAgNjQgMjEuNSA2NCA0OHY0OEg4Yy00LjQgMC04IDMuNi04IDh2MTZjMCA0LjQgMy42IDggOCA4aDI3MmM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDQwYy00LjQgMC04IDMuNi04IDh2MTZjMCA0LjQgMy42IDggOCA4aDIwOGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDhjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDhoMjA4YzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhINjR2MTI4YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZoMTI4YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZoNDhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6TTE2MCA0NjRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em0zMjAgMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6bTgwLTIwOEg0MTZWMTQ0aDQ0LjFsOTkuOSA5OS45VjI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hvZVByaW50cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMTYwaDMyVjMyaC0zMmMtMzUuMzUgMC02NCAyOC42NS02NCA2NHMyOC42NSA2NCA2NCA2NHpNMCA0MTZjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMlYzNTJINjRjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR6bTMzNy40Ni0xMjhjLTM0LjkxIDAtNzYuMTYgMTMuMTItMTA0LjczIDMyLTI0Ljc5IDE2LjM4LTQ0LjUyIDMyLTEwNC43MyAzMnYxMjhsNTcuNTMgMTUuOTdjMjYuMjEgNy4yOCA1My4wMSAxMy4xMiA4MC4zMSAxNS4wNSAzMi42OSAyLjMxIDY1LjYuNjcgOTcuNTgtNi4yQzQ3Mi45IDQ4MS4zIDUxMiA0MjkuMjIgNTEyIDM4NGMwLTY0LTg0LjE4LTk2LTE3NC41NC05NnpNNDkxLjQyIDcuMTlDNDU5LjQ0LjMyIDQyNi41My0xLjMzIDM5My44NC45OWMtMjcuMyAxLjkzLTU0LjEgNy43Ny04MC4zMSAxNS4wNEwyNTYgMzJ2MTI4YzYwLjIgMCA3OS45NCAxNS42MiAxMDQuNzMgMzIgMjguNTcgMTguODggNjkuODIgMzIgMTA0LjczIDMyQzU1NS44MiAyMjQgNjQwIDE5MiA2NDAgMTI4YzAtNDUuMjItMzkuMS05Ny4zLTE0OC41OC0xMjAuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob3BwaW5nQmFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAxNjB2LTMyQzM1MiA1Ny40MiAyOTQuNTc5IDAgMjI0IDAgMTUzLjQyIDAgOTYgNTcuNDIgOTYgMTI4djMySDB2MjcyYzAgNDQuMTgzIDM1LjgxNyA4MCA4MCA4MGgyODhjNDQuMTgzIDAgODAtMzUuODE3IDgwLTgwVjE2MGgtOTZ6bS0xOTItMzJjMC0zNS4yOSAyOC43MS02NCA2NC02NHM2NCAyOC43MSA2NCA2NHYzMkgxNjB2LTMyem0xNjAgMTIwYy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRzMTAuNzQ1LTI0IDI0LTI0IDI0IDEwLjc0NSAyNCAyNC0xMC43NDUgMjQtMjQgMjR6bS0xOTIgMGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0czEwLjc0NS0yNCAyNC0yNCAyNCAxMC43NDUgMjQgMjQtMTAuNzQ1IDI0LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG9wcGluZ0Jhc2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzYgMjE2djE2YzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNGgtOGwtMjYuMTEzIDE4Mi43ODhDNTE0LjUwOSA0NjIuNDM1IDQ5NC4yNTcgNDgwIDQ3MC4zNyA0ODBIMTA1LjYzYy0yMy44ODcgMC00NC4xMzktMTcuNTY1LTQ3LjUxOC00MS4yMTJMMzIgMjU2aC04Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjR2LTE2YzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNGg2Ny4zNDFsMTA2Ljc4LTE0Ni44MjFjMTAuMzk1LTE0LjI5MiAzMC40MDctMTcuNDUzIDQ0LjcwMS03LjA1OCAxNC4yOTMgMTAuMzk1IDE3LjQ1MyAzMC40MDggNy4wNTggNDQuNzAxTDE3MC40NzcgMTkyaDIzNS4wNDZMMzI2LjEyIDgyLjgyMWMtMTAuMzk1LTE0LjI5Mi03LjIzNC0zNC4zMDYgNy4wNTktNDQuNzAxIDE0LjI5MS0xMC4zOTUgMzQuMzA2LTcuMjM1IDQ0LjcwMSA3LjA1OEw0ODQuNjU5IDE5Mkg1NTJjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0ek0zMTIgMzkyVjI4MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRzLTI0IDEwLjc0NS0yNCAyNHYxMTJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0czI0LTEwLjc0NSAyNC0yNHptMTEyIDBWMjgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHMtMjQgMTAuNzQ1LTI0IDI0djExMmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRzMjQtMTAuNzQ1IDI0LTI0em0tMjI0IDBWMjgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHMtMjQgMTAuNzQ1LTI0IDI0djExMmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRzMjQtMTAuNzQ1IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG9wcGluZ0NhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4LjEyIDMwMS4zMTlsNDcuMjczLTIwOEM1NzguODA2IDc4LjMwMSA1NjcuMzkxIDY0IDU1MS45OSA2NEgxNTkuMjA4bC05LjE2Ni00NC44MUMxNDcuNzU4IDguMDIxIDEzNy45MyAwIDEyNi41MjkgMEgyNEMxMC43NDUgMCAwIDEwLjc0NSAwIDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGg2OS44ODNsNzAuMjQ4IDM0My40MzVDMTQ3LjMyNSA0MTcuMSAxMzYgNDM1LjIyMiAxMzYgNDU2YzAgMzAuOTI4IDI1LjA3MiA1NiA1NiA1NnM1Ni0yNS4wNzIgNTYtNTZjMC0xNS42NzQtNi40NDctMjkuODM1LTE2LjgyNC00MGgyMDkuNjQ3QzQzMC40NDcgNDI2LjE2NSA0MjQgNDQwLjMyNiA0MjQgNDU2YzAgMzAuOTI4IDI1LjA3MiA1NiA1NiA1NnM1Ni0yNS4wNzIgNTYtNTZjMC0yMi4xNzItMTIuODg4LTQxLjMzMi0zMS41NzktNTAuNDA1bDUuNTE3LTI0LjI3NmMzLjQxMy0xNS4wMTgtOC4wMDItMjkuMzE5LTIzLjQwMy0yOS4zMTlIMjE4LjExN2wtNi41NDUtMzJoMjkzLjE0NWMxMS4yMDYgMCAyMC45Mi03Ljc1NCAyMy40MDMtMTguNjgxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG93ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0LDMyMGExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwzMDQsMzIwWm0zMi05NmExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwzMzYsMjI0Wm0zMiw2NGExNiwxNiwwLDEsMC0xNi0xNkExNiwxNiwwLDAsMCwzNjgsMjg4Wm0tMzIsMzJhMTYsMTYsMCwxLDAtMTYtMTZBMTYsMTYsMCwwLDAsMzM2LDMyMFptLTMyLTY0YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDMwNCwyNTZabTEyOC0zMmExNiwxNiwwLDEsMC0xNi0xNkExNiwxNiwwLDAsMCw0MzIsMjI0Wm0tNDgsMTZhMTYsMTYsMCwxLDAsMTYtMTZBMTYsMTYsMCwwLDAsMzg0LDI0MFptLTE2LTQ4YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDM2OCwxOTJabTk2LDMyYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDQ2NCwyMjRabTMyLTMyYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDQ5NiwxOTJabS02NCw2NGExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCw0MzIsMjU2Wm0tMzIsMzJhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsNDAwLDI4OFptLTY0LDY0YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDMzNiwzNTJabS0zMiwzMmExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwzMDQsMzg0Wm02NC02NGExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwzNjgsMzIwWm0yMS42NS0yMTguMzUtMTEuMy0xMS4zMWExNiwxNiwwLDAsMC0yMi42MywwTDM1MC4wNSw5NkExMTEuMTksMTExLjE5LDAsMCwwLDI3Miw2NGMtMTkuMjQsMC0zNy4wOCw1LjMtNTIuOSwxMy44NWwtMTAtMTBBMTIxLjcyLDEyMS43MiwwLDAsMCwxMjMuNDQsMzJDNTUuNDksMzEuNSwwLDkyLjkxLDAsMTYwLjg1VjQ2NGExNiwxNiwwLDAsMCwxNiwxNkg0OGExNiwxNiwwLDAsMCwxNi0xNlYxNTguNGMwLTMwLjE1LDIxLTU4LjIsNTEtNjEuOTNhNTguMzgsNTguMzgsMCwwLDEsNDguOTMsMTYuNjdsMTAsMTBDMTY1LjMsMTM4LjkyLDE2MCwxNTYuNzYsMTYwLDE3NmExMTEuMjMsMTExLjIzLDAsMCwwLDMyLDc4LjA1bC01LjY2LDUuNjdhMTYsMTYsMCwwLDAsMCwyMi42MmwxMS4zLDExLjMxYTE2LDE2LDAsMCwwLDIyLjYzLDBMMzg5LjY1LDEyNC4yOEExNiwxNiwwLDAsMCwzODkuNjUsMTAxLjY1WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaHV0dGxlVmFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyOC44OCAyMTAuNjVMNDk0LjM5IDQ5LjI3QTQ4LjAxIDQ4LjAxIDAgMCAwIDQ1Ny41MiAzMkgzMkMxNC4zMyAzMiAwIDQ2LjMzIDAgNjR2Mjg4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMCA1My4wMiA0Mi45OCA5NiA5NiA5NnM5Ni00Mi45OCA5Ni05NmgxMjhjMCA1My4wMiA0Mi45OCA5NiA5NiA5NnM5Ni00Mi45OCA5Ni05NmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjI0MS4zOGMwLTExLjIzLTMuOTQtMjIuMS0xMS4xMi0zMC43M3pNNjQgMTkyVjk2aDk2djk2SDY0em05NiAyNDBjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bTE2MC0yNDBoLTk2Vjk2aDk2djk2em0xNjAgMjQwYy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4LTIxLjQ5IDQ4LTQ4IDQ4em0tOTYtMjQwVjk2aDY2LjAybDgwIDk2SDM4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2lnbkluQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiA0NDhoLTg0Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg4NGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJoLTg0Yy02LjYgMC0xMi01LjQtMTItMTJWNzZjMC02LjYgNS40LTEyIDEyLTEyaDg0YzUzIDAgOTYgNDMgOTYgOTZ2MTkyYzAgNTMtNDMgOTYtOTYgOTZ6bS00Ny0yMDFMMjAxIDc5Yy0xNS0xNS00MS00LjUtNDEgMTd2OTZIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0djk2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDEzNnY5NmMwIDIxLjUgMjYgMzIgNDEgMTdsMTY4LTE2OGM5LjMtOS40IDkuMy0yNC42IDAtMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25MYW5ndWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05MS40MzQgNDgzLjk4N2MtLjMwNy0xNi4wMTggMTMuMTA5LTI5LjEyOSAyOS4xMy0yOS4xMjloNjIuMjkzdi01LjcxNEg1Ni45OTNjLTE2LjAyMSAwLTI5LjQzNy0xMy4xMTEtMjkuMTMtMjkuMTI5QzI4LjE2IDQwNC40OTEgNDAuODM1IDM5MiA1Ni40MjggMzkyaDEyNi40Mjl2LTUuNzE0SDI5LjEzNmMtMTYuMDIxIDAtMjkuNDM3LTEzLjExMS0yOS4xMy0yOS4xMjkuMjk3LTE1LjUyMiAxMi45NzMtMjguMDEzIDI4LjU2Ni0yOC4wMTNoMTU0LjI4NnYtNS43MTRINTcuNzA3Yy0xNi4wMjEgMC0yOS40MzctMTMuMTExLTI5LjEzLTI5LjEyOS4yOTctMTUuNTIyIDEyLjk3My0yOC4wMTMgMjguNTY2LTI4LjAxM2gxNjguNTY2bC0zMS4wODUtMjIuNjA2Yy0xMi43NjItOS4yODEtMTUuNTgzLTI3LjE0OS02LjMwMi0zOS45MTIgOS4yODEtMTIuNzYxIDI3LjE1LTE1LjU4MiAzOS45MTItNi4zMDJsMTIzLjM2MSA4OS43MTVhMzQuMjg3IDM0LjI4NyAwIDAgMSAxNC4xMiAyNy43Mjh2MTQxLjEzNmMwIDE1LjkxLTEwLjk0NiAyOS43My0yNi40MzMgMzMuMzc0bC04MC40NzEgMTguOTM0YTEzNy4xNiAxMzcuMTYgMCAwIDEtMzEuNDExIDMuNjQ2SDEyMGMtMTUuNTkzLS4wMDEtMjguMjY5LTEyLjQ5Mi0yOC41NjYtMjguMDE0em03My4yNDktMjI1LjcwMWgzNi40MjNsLTExLjE4Ny04LjEzNmMtMTguNTc5LTEzLjUxMS0yMC4zMTMtNDAuODg3LTMuMTctNTYuNTM2bC0xMy4wMDQtMTYuN2MtOS44NDMtMTIuNjQxLTI4LjQzLTE1LjE3MS00MC44OC01LjA4OC0xMi4wNjUgOS43NzEtMTQuMTMzIDI3LjQ0Ny00LjU1MyAzOS43NWwzNi4zNzEgNDYuNzF6bTI4My4yOTgtMi4xMDNsLTUuMDAzLTE1Mi40NTJjLS41MTgtMTUuNzcxLTEzLjcyMi0yOC4xMzYtMjkuNDkzLTI3LjYxOS0xNS43NzMuNTE4LTI4LjEzNyAxMy43MjItMjcuNjE5IDI5LjQ5M2wxLjI2MiAzOC40MTVMMjgzLjU2NSAxMS4wMTljLTkuNTgtMTIuMzAzLTI3LjIyMy0xNC42My0zOS42NTMtNS4zMjgtMTIuODI3IDkuNTk5LTE0LjkyOSAyOC4yNC01LjA4NiA0MC44ODFsNzYuODg5IDk4Ljc0NS00LjUwOSAzLjUxMS05NC43OS0xMjEuNzM0Yy05LjU4LTEyLjMwMy0yNy4yMjMtMTQuNjMtMzkuNjUzLTUuMzI4LTEyLjgyNyA5LjU5OS0xNC45MjkgMjguMjQtNS4wODYgNDAuODgxbDk0LjQ0MyAxMjEuMjg4LTQuNTA5IDMuNTExLTc3LjY3NS05OS43NTRjLTkuNTgtMTIuMzAzLTI3LjIyMy0xNC42My0zOS42NTMtNS4zMjgtMTIuODI3IDkuNTk5LTE0LjkyOSAyOC4yNC01LjA4NiA0MC44ODFsNTIuMDUzIDY2Ljg0OWMxMi40OTctOC4yNTcgMjkuMDU1LTguMjg1IDQxLjY5LjkwNGwxMjMuMzYgODkuNzE0YzEwLjkwNCA3LjkzIDE3LjQxNSAyMC43MTUgMTcuNDE1IDM0LjE5OHYxNi45OTlsNjEuMDY0LTQ3LjU0OWEzNC4yODUgMzQuMjg1IDAgMCAwIDEzLjIwMi0yOC4xNzd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25PdXRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk3IDI3M0wzMjkgNDQxYy0xNSAxNS00MSA0LjUtNDEtMTd2LTk2SDE1MmMtMTMuMyAwLTI0LTEwLjctMjQtMjR2LTk2YzAtMTMuMyAxMC43LTI0IDI0LTI0aDEzNlY4OGMwLTIxLjQgMjUuOS0zMiA0MS0xN2wxNjggMTY4YzkuMyA5LjQgOS4zIDI0LjYgMCAzNHpNMTkyIDQzNnYtNDBjMC02LjYtNS40LTEyLTEyLTEySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJoODRjNi42IDAgMTItNS40IDEyLTEyVjc2YzAtNi42LTUuNC0xMi0xMi0xMkg5NmMtNTMgMC05NiA0My05NiA5NnYxOTJjMCA1MyA0MyA5NiA5NiA5Nmg4NGM2LjYgMCAxMi01LjQgMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDY0SDEyOFYxNmMwLTguOC03LjItMTYtMTYtMTZIODBjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgxNkM3LjIgNjQgMCA3MS4yIDAgODB2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djM2OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjEyOGgzNjhjOC44IDAgMTYtNy4yIDE2LTE2VjgwYzAtOC44LTcuMi0xNi0xNi0xNnpNMTYwIDM4NGgzMjBWMTYwSDE2MHYyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYgMjg4aC00OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTkyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjMwNGMwLTguODQtNy4xNi0xNi0xNi0xNnpNODggMzg0SDQwYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY5NmMwIDguODQgNy4xNiAxNiAxNiAxNmg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtOTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bTI1Ni0xOTJoLTQ4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYyODhjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjA4YzAtOC44NC03LjE2LTE2LTE2LTE2em0xMjgtOTZoLTQ4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzODRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZWMTEyYzAtOC44NC03LjE2LTE2LTE2LTE2ek02MDAgMGgtNDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4MGMwIDguODQgNy4xNiAxNiAxNiAxNmg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2lnbmF0dXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyMy4yIDE5MmMtNTEuOCAzLjUtMTI1LjcgNTQuNy0xNjMuMSA3MS41LTI5LjEgMTMuMS01NC4yIDI0LjQtNzYuMSAyNC40LTIyLjYgMC0yNi0xNi4yLTIxLjMtNTEuOSAxLjEtOCAxMS43LTc5LjItNDIuNy03Ni4xLTI1LjEgMS41LTY0LjMgMjQuOC0xNjkuNSAxMjZMMTkyIDE4Mi4yYzMwLjQtNzUuOS01My4yLTE1MS41LTEyOS43LTEwMi44TDcuNCAxMTYuM0MwIDEyMS0yLjIgMTMwLjkgMi41IDEzOC40bDE3LjIgMjdjNC43IDcuNSAxNC42IDkuNyAyMi4xIDQuOWw1OC0zOC45YzE4LjQtMTEuNyA0MC43IDcuMiAzMi43IDI3LjFMMzQuMyA0MDQuMUMyNy41IDQyMSAzNyA0NDggNjQgNDQ4YzguMyAwIDE2LjUtMy4yIDIyLjYtOS40IDQyLjItNDIuMiAxNTQuNy0xNTAuNyAyMTEuMi0xOTUuOC0yLjIgMjguNS0yLjEgNTguOSAyMC42IDgzLjggMTUuMyAxNi44IDM3LjMgMjUuMyA2NS41IDI1LjMgMzUuNiAwIDY4LTE0LjYgMTAyLjMtMzAgMzMtMTQuOCA5OS02Mi42IDEzOC40LTY1LjggOC41LS43IDE1LjItNy4zIDE1LjItMTUuOHYtMzIuMWMuMi05LjEtNy41LTE2LjgtMTYuNi0xNi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaW1DYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjR2Mzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0aDI1NmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhMMjU2IDBINjRDMjguNyAwIDAgMjguNyAwIDY0em0yMjQgMTkyaC02NHYtNjRoNjR2NjR6bTk2IDBoLTY0di02NGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnYzMnptLTY0IDEyOGg2NHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMmgtMzJ2LTY0em0tOTYgMGg2NHY2NGgtNjR2LTY0em0tOTYgMGg2NHY2NEg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ2LTMyem0wLTk2aDI1NnY2NEg2NHYtNjR6bTAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJoMzJ2NjRINjR2LTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyLDQxNmE5Niw5NiwwLDAsMCw5Niw5NkgzODRhOTYsOTYsMCwwLDAsOTYtOTZWMzg0SDMyWk00OTYsMjg4SDQwMFYyNTZoNjRhMTYsMTYsMCwwLDAsMTYtMTZWMjI0YTE2LDE2LDAsMCwwLTE2LTE2SDM4NGEzMiwzMiwwLDAsMC0zMiwzMnY0OEgyODhWOTZhMzIsMzIsMCwwLDEsNjQsMHYxNmExNiwxNiwwLDAsMCwxNiwxNmgzMmExNiwxNiwwLDAsMCwxNi0xNlY5NkE5Ni4xNiw5Ni4xNiwwLDAsMCwzMDAuODcsMS44NkMyNTUuMjksMTAuNzEsMjI0LDUzLjM2LDIyNCw5OS43OVYyODhIMTYwVjI0MGEzMiwzMiwwLDAsMC0zMi0zMkg0OGExNiwxNiwwLDAsMC0xNiwxNnYxNmExNiwxNiwwLDAsMCwxNiwxNmg2NHYzMkgxNkExNiwxNiwwLDAsMCwwLDMwNHYzMmExNiwxNiwwLDAsMCwxNiwxNkg0OTZhMTYsMTYsMCwwLDAsMTYtMTZWMzA0QTE2LDE2LDAsMCwwLDQ5NiwyODhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpdGVtYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDM1MkgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bS0yNC04MGgxOTJ2NDhoNDh2LTQ4aDE5MnY0OGg0OHYtNTcuNTljMC0yMS4xNy0xNy4yMy0zOC40MS0zOC40MS0zOC40MUgzNDR2LTY0aDQwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgyNTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg0MHY2NEg5NC40MUM3My4yMyAyMjQgNTYgMjQxLjIzIDU2IDI2Mi40MVYzMjBoNDh2LTQ4em0yNjQgODBoLTk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMjQwIDBoLTk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2thdGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhzMjEuNSA0OCA0OCA0OCA0OC0yMS41IDQ4LTQ4LTIxLjUtNDgtNDgtNDh6bTAgNDQ4Yy04LjggMC0xNiA3LjItMTYgMTZzLTcuMiAxNi0xNiAxNmgtOTZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDggMC04LjgtNy4yLTE2LTE2LTE2em0tMjgyLjIgOC42Yy02LjIgNi4yLTE2LjQgNi4zLTIyLjYgMGwtNjcuOS02Ny45Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDY3LjkgNjcuOWM5LjQgOS40IDIxLjcgMTQgMzQgMTRzMjQuNi00LjcgMzMuOS0xNGM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnMtMTYuNC02LjMtMjIuNyAwem01Ni4xLTE3OS44bC05My43IDkzLjdjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4yIDYuMiA2LjIgMTQuNCA5LjQgMjIuNiA5LjRzMTYuNC0zLjEgMjIuNi05LjRsOTEuOS05MS45LTMwLjItMzAuMmMtNS01LTkuNC0xMC43LTEzLjItMTYuOHpNMTI4IDE2MGgxMDUuNWwtMjAuMSAxNy4yYy0xMy41IDExLjUtMjEuNiAyOC40LTIyLjMgNDYuMS0uNyAxNy44IDYuMSAzNS4yIDE4LjcgNDcuN2w3OC4yIDc4LjJWNDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ2LTg5LjRjMC0xMi42LTUuMS0yNS0xNC4xLTMzLjlsLTYxLTYxYy41LS40IDEuMi0uNiAxLjctMS4xbDgyLjMtODIuM2MxMS41LTExLjUgMTQuOS0yOC42IDguNy00My42LTYuMi0xNS0yMC43LTI0LjctMzctMjQuN0gxMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNraWluZ05vcmRpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhTMzYyLjUgMCAzMzYgMHMtNDggMjEuNS00OCA0OCAyMS41IDQ4IDQ4IDQ4em0yMTYgMzIwYy0xMy4yIDAtMjQgMTAuNy0yNCAyNCAwIDEzLjItMTAuOCAyNC0yNCAyNGgtNjkuNUw0NjAgMjg1LjZjMTEuNy00LjcgMjAuMS0xNi4yIDIwLjEtMjkuNiAwLTE3LjctMTQuMy0zMi0zMi0zMmgtNDRMMzc4IDE3MC44Yy0xMi41LTI1LjUtMzUuNS00NC4yLTYxLjgtNTAuOUwyNDUgOTguN2MtMjguMy02LjgtNTcuOC0uNS04MC44IDE3LjFsLTM5LjcgMzAuNGMtMTQgMTAuNy0xNi43IDMwLjgtNS45IDQ0LjkuNy45IDEuNyAxLjMgMi40IDIuMUw2Ni45IDQ2NEgyNGMtMTMuMiAwLTI0IDEwLjctMjQgMjRzMTAuOCAyNCAyNCAyNGg0ODBjMzkuNyAwIDcyLTMyLjMgNzItNzIgMC0xMy4yLTEwLjgtMjQtMjQtMjR6bS0yNjAuNSA0OGgtOTYuOWw0My4xLTkxLTIyLTEzYy0xMi4xLTcuMi0yMS45LTE2LjktMjkuNS0yNy44TDEyMy43IDQ2NEg5OS41bDUyLjMtMjYxLjRjNC4xLTEgOC4xLTIuOSAxMS43LTUuNmwzOS43LTMwLjRjNy43LTUuOSAxNy40LTggMjUuMy02LjFsMTQuNyA0LjQtMzcuNSA4Ny40Yy0xMi42IDI5LjUtMS4zIDY0IDI2LjMgODAuM2w4NSA1MC4yLTI1LjUgODEuMnptMTEwLjYgMGgtNDMuNmwyMy42LTc1LjVjNS45LTIwLjgtMi45LTQzLjEtMjEuNi01NC40TDI5OS4zIDI5OGwzMS4zLTc4LjMgMjAuMyA0MS40YzggMTYuMyAyNC45IDI2LjkgNDMuMSAyNi45aDMzLjNsLTI1LjIgMTc2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTa2lpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzQ1OC41IDAgNDMyIDBzLTQ4IDIxLjUtNDggNDggMjEuNSA0OCA0OCA0OHptNzMgMzU2LjFjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwLTEyLjEgMTIuMS0zMC41IDE1LjQtNDUuMSA4LjdsLTEzNS44LTcwLjIgNDkuMi03My44YzEyLjctMTkgMTAuMi00NC41LTYtNjAuNkwyOTMgMjE1LjdsLTEwNy01My4xYy0yLjkgMTkuOSAzLjQgNDAgMTcuNyA1NC40bDc1LjEgNzUuMi00NS45IDY4LjhMMzUgMjU4LjdjLTExLjctNi0yNi4yLTEuNS0zMi4zIDEwLjMtNi4xIDExLjgtMS41IDI2LjMgMTAuMyAzMi4zbDM5MS45IDIwMi41YzExLjkgNS41IDI0LjUgOC4xIDM3LjEgOC4xIDIzLjIgMCA0Ni05IDYzLTI2IDkuMy05LjMgOS4zLTI0LjUgMC0zMy44ek0xMjAgOTEuNmwtMTEuNSAyMi41YzE0LjQgNy4zIDMxLjIgNC45IDQyLjgtNC44bDQ3LjIgMjMuNGMtLjEuMS0uMS4yLS4yLjNsMTE0LjUgNTYuOCAzMi40LTEzIDYuNCAxOS4xYzQgMTIuMSAxMi42IDIyIDI0IDI3LjdsNTguMSAyOWMxNS45IDcuOSAzNSAxLjUgNDIuOS0xNC4zIDcuOS0xNS44IDEuNS0zNS0xNC4zLTQyLjlsLTUyLjEtMjYuMS0xNy4xLTUxLjJjLTguMS0yNC4yLTQwLjktNTYuNi04NC41LTM5LjJsLTgxLjIgMzIuNS02Mi41LTMxYy4zLTE0LjUtNy4yLTI4LjYtMjAuOS0zNS42bC0xMS4xIDIxLjdoLS4ybC0zNC40LTdjLTEuOC0uNC0zLjcuMi01IDEuNy0xLjkgMi4yLTEuNyA1LjUuNSA3LjRsMjYuMiAyM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2t1bGxDcm9zc2JvbmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOS4xNSA0NTMuMDZMMjk3LjE3IDM4NGwxNDEuOTktNjkuMDZjNy45LTMuOTUgMTEuMTEtMTMuNTYgNy4xNS0yMS40Nkw0MzIgMjY0Ljg1Yy0zLjk1LTcuOS0xMy41Ni0xMS4xMS0yMS40Ny03LjE2TDIyNCAzNDguNDEgMzcuNDcgMjU3LjY5Yy03LjktMy45NS0xNy41MS0uNzUtMjEuNDcgNy4xNkwxLjY5IDI5My40OGMtMy45NSA3LjktLjc1IDE3LjUxIDcuMTUgMjEuNDZMMTUwLjgzIDM4NCA4Ljg1IDQ1My4wNmMtNy45IDMuOTUtMTEuMTEgMTMuNTYtNy4xNSAyMS40N2wxNC4zMSAyOC42M2MzLjk1IDcuOSAxMy41NiAxMS4xMSAyMS40NyA3LjE1TDIyNCA0MTkuNTlsMTg2LjUzIDkwLjcyYzcuOSAzLjk1IDE3LjUxLjc1IDIxLjQ3LTcuMTVsMTQuMzEtMjguNjNjMy45NS03LjkxLjc0LTE3LjUyLTcuMTYtMjEuNDd6TTE1MCAyMzcuMjhsLTUuNDggMjUuODdjLTIuNjcgMTIuNjIgNS40MiAyNC44NSAxNi40NSAyNC44NWgxMjYuMDhjMTEuMDMgMCAxOS4xMi0xMi4yMyAxNi40NS0yNC44NWwtNS41LTI1Ljg3YzQxLjc4LTIyLjQxIDcwLTYyLjc1IDcwLTEwOS4yOEMzNjggNTcuMzEgMzAzLjUzIDAgMjI0IDBTODAgNTcuMzEgODAgMTI4YzAgNDYuNTMgMjguMjIgODYuODcgNzAgMTA5LjI4ek0yODAgMTEyYzE3LjY1IDAgMzIgMTQuMzUgMzIgMzJzLTE0LjM1IDMyLTMyIDMyLTMyLTE0LjM1LTMyLTMyIDE0LjM1LTMyIDMyLTMyem0tMTEyIDBjMTcuNjUgMCAzMiAxNC4zNSAzMiAzMnMtMTQuMzUgMzItMzIgMzItMzItMTQuMzUtMzItMzIgMTQuMzUtMzIgMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNrdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwQzExNC42IDAgMCAxMDAuMyAwIDIyNGMwIDcwLjEgMzYuOSAxMzIuNiA5NC41IDE3My43IDkuNiA2LjkgMTUuMiAxOC4xIDEzLjUgMjkuOWwtOS40IDY2LjJjLTEuNCA5LjYgNiAxOC4yIDE1LjcgMTguMkgxOTJ2LTU2YzAtNC40IDMuNi04IDgtOGgxNmM0LjQgMCA4IDMuNiA4IDh2NTZoNjR2LTU2YzAtNC40IDMuNi04IDgtOGgxNmM0LjQgMCA4IDMuNiA4IDh2NTZoNzcuN2M5LjcgMCAxNy4xLTguNiAxNS43LTE4LjJsLTkuNC02Ni4yYy0xLjctMTEuNyAzLjgtMjMgMTMuNS0yOS45QzQ3NS4xIDM1Ni42IDUxMiAyOTQuMSA1MTIgMjI0IDUxMiAxMDAuMyAzOTcuNCAwIDI1NiAwem0tOTYgMzIwYy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0IDY0IDI4LjcgNjQgNjQtMjguNyA2NC02NCA2NHptMTkyIDBjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjQgNjQgMjguNyA2NCA2NC0yOC43IDY0LTY0IDY0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01OTQuNTMgNTA4LjYzTDYuMTggNTMuOWMtNi45Ny01LjQyLTguMjMtMTUuNDctMi44MS0yMi40NUwyMy4wMSA2LjE4QzI4LjQzLS44IDM4LjQ5LTIuMDYgNDUuNDcgMy4zN0w2MzMuODIgNDU4LjFjNi45NyA1LjQyIDguMjMgMTUuNDcgMi44MSAyMi40NWwtMTkuNjQgMjUuMjdjLTUuNDIgNi45OC0xNS40OCA4LjIzLTIyLjQ2IDIuODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNsZWlnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MTIuNyAzNTAuN2wtOS4zLTcuNGMtNi45LTUuNS0xNy00LjQtMjIuNSAyLjVsLTEwIDEyLjVjLTUuNSA2LjktNC40IDE3IDIuNSAyMi41bDkuMyA3LjRjNS45IDQuNyA5LjIgMTEuNyA5LjIgMTkuMiAwIDEzLjYtMTEgMjQuNi0yNC42IDI0LjZINDhjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZoNTE2YzM5IDAgNzMuNy0yOS4zIDc1LjktNjguMyAxLjQtMjMuOC04LjctNDYuMy0yNy4yLTYxek0zMiAyMjRjMCA1OS42IDQwLjkgMTA5LjIgOTYgMTIzLjVWNDAwaDY0di00OGgxOTJ2NDhoNjR2LTQ4YzUzIDAgOTYtNDMgOTYtOTZ2LTk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyaC05NnY2NGMwIDM1LjMtMjguNyA2NC02NCA2NGgtMjAuN2MtNjUuOCAwLTEyNS45LTM3LjItMTU1LjMtOTYtMjkuNC01OC44LTg5LjYtOTYtMTU1LjMtOTZIMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NHMxNC4zIDMyIDMyIDMydjEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2xpZGVyc0ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDM4NEgxNjB2LTE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnYxNkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg4MHYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di0xNmgzMzZjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bTAtMTYwaC04MHYtMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djE2SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMzNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di0xNmg4MGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnptMC0xNjBIMjg4VjQ4YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnYxNkgxNkM3LjIgNjQgMCA3MS4yIDAgODB2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDIwOHYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di0xNmgyMDhjOC44IDAgMTYtNy4yIDE2LTE2VjgwYzAtOC44LTcuMi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU21pbGVCZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTExMiAyMjMuNGMzLjMtNDIuMSAzMi4yLTcxLjQgNTYtNzEuNHM1Mi43IDI5LjMgNTYgNzEuNGMuNyA4LjYtMTAuOCAxMS45LTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjMgNy40LTE1LjggNC0xNS4xLTQuNXptMjUwLjggMTIyLjhDMzM0LjMgMzgwLjQgMjkyLjUgNDAwIDI0OCA0MDBzLTg2LjMtMTkuNi0xMTQuOC01My44Yy0xMy41LTE2LjMgMTEtMzYuNyAyNC42LTIwLjUgMjIuNCAyNi45IDU1LjIgNDIuMiA5MC4yIDQyLjJzNjcuOC0xNS40IDkwLjItNDIuMmMxMy42LTE2LjIgMzguMSA0LjMgMjQuNiAyMC41em02LjItMTE4LjNsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMSA3LjMtMTUuNiA0LTE0LjktNC41IDMuMy00Mi4xIDMyLjItNzEuNCA1Ni03MS40czUyLjcgMjkuMyA1NiA3MS40Yy42IDguNi0xMSAxMS45LTE1LjEgNC41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbWlsZVdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyNTZjMCAxMzcgMTExIDI0OCAyNDggMjQ4czI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOCAwIDExOSAwIDI1NnptMjAwLTQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMnptMTU4LjUgMTYuNWMtMTQuOC0xMy4yLTQ2LjItMTMuMi02MSAwTDI4OCAyMzNjLTguMyA3LjQtMjEuNi40LTE5LjgtMTAuOCA0LTI1LjIgMzQuMi00Mi4xIDU5LjktNDIuMVMzODQgMTk3IDM4OCAyMjIuMmMxLjcgMTEuMS0xMS40IDE4LjMtMTkuOCAxMC44bC05LjctOC41ek0xNTcuOCAzMjUuOEMxODAuMiAzNTIuNyAyMTMgMzY4IDI0OCAzNjhzNjcuOC0xNS40IDkwLjItNDIuMmMxMy42LTE2LjIgMzguMSA0LjIgMjQuNiAyMC41QzMzNC4zIDM4MC40IDI5Mi41IDQwMCAyNDggNDAwcy04Ni4zLTE5LjYtMTE0LjgtNTMuOGMtMTMuNS0xNi4zIDExLjItMzYuNyAyNC42LTIwLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNtaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTgwIDE2OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bS0xNjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bTE5NC44IDE3MC4yQzMzNC4zIDM4MC40IDI5Mi41IDQwMCAyNDggNDAwcy04Ni4zLTE5LjYtMTE0LjgtNTMuOGMtMTMuNi0xNi4zIDExLTM2LjcgMjQuNi0yMC41IDIyLjQgMjYuOSA1NS4yIDQyLjIgOTAuMiA0Mi4yczY3LjgtMTUuNCA5MC4yLTQyLjJjMTMuNC0xNi4yIDM4LjEgNC4yIDI0LjYgMjAuNXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU21vZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQgMzY4SDgwYy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDU0NGM4LjggMCAxNi03LjIgMTYtMTZ2LTE2YzAtOC44LTcuMi0xNi0xNi0xNnptLTQ4MCA5NkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgOC44IDcuMiAxNiAxNiAxNmgxMjhjOC44IDAgMTYtNy4yIDE2LTE2di0xNmMwLTguOC03LjItMTYtMTYtMTZ6bTQxNiAwSDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgOC44IDcuMiAxNiAxNiAxNmgzMzZjOC44IDAgMTYtNy4yIDE2LTE2di0xNmMwLTguOC03LjItMTYtMTYtMTZ6TTE0NCAyODhoMTU2LjFjMjIuNSAxOS43IDUxLjYgMzIgODMuOSAzMnM2MS4zLTEyLjMgODMuOS0zMkg1MjhjNjEuOSAwIDExMi01MC4xIDExMi0xMTJTNTg5LjkgNjQgNTI4IDY0Yy0xOCAwLTM0LjcgNC42LTQ5LjcgMTIuMUM0NTQgMzEgNDA2LjggMCAzNTIgMGMtNDEgMC03Ny44IDE3LjMtMTA0IDQ0LjhDMjIxLjggMTcuMyAxODUgMCAxNDQgMCA2NC41IDAgMCA2NC41IDAgMTQ0czY0LjUgMTQ0IDE0NCAxNDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNtb2tpbmdCYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzA0YzAgOC44IDcuMiAxNiAxNiAxNmgxMTcuNWwtOTYtOTZIMTEyYy04LjggMC0xNiA3LjItMTYgMTZ2NjR6TTI1NiAwQzExNC42IDAgMCAxMTQuNiAwIDI1NnMxMTQuNiAyNTYgMjU2IDI1NiAyNTYtMTE0LjYgMjU2LTI1NlMzOTcuNCAwIDI1NiAwem0wIDQ0OGMtMTA1LjkgMC0xOTItODYuMS0xOTItMTkyIDAtNDEuNCAxMy4zLTc5LjcgMzUuNy0xMTEuMWwyNjcuNCAyNjcuNEMzMzUuNyA0MzQuNyAyOTcuNCA0NDggMjU2IDQ0OHptNDUuMi0xOTJIMzg0djMyaC01MC44bC0zMi0zMnptMTExLjEgMTExLjFMMzY1LjIgMzIwSDQwMGM4LjggMCAxNi03LjIgMTYtMTZ2LTY0YzAtOC44LTcuMi0xNi0xNi0xNkgyNjkuMkwxNDQuOSA5OS43QzE3Ni4zIDc3LjMgMjE0LjYgNjQgMjU2IDY0YzEwNS45IDAgMTkyIDg2LjEgMTkyIDE5MiAwIDQxLjQtMTMuMyA3OS43LTM1LjcgMTExLjF6TTMyMC42IDEyOGMtMTUuNiAwLTI4LjYtMTEuMi0zMS40LTI1LjktLjctMy42LTQtNi4xLTcuNy02LjFoLTE2LjJjLTUgMC04LjcgNC41LTggOS40IDQuNiAzMC45IDMxLjIgNTQuNiA2My4zIDU0LjYgMTUuNiAwIDI4LjYgMTEuMiAzMS40IDI1LjkuNyAzLjYgNCA2LjEgNy43IDYuMWgxNi4yYzUgMCA4LjctNC41IDgtOS40LTQuNi0zMC45LTMxLjItNTQuNi02My4zLTU0LjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNtb2tpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjMyIDM1MmgtNDhjLTQuNCAwLTggMy42LTggOHYxNDRjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOFYzNjBjMC00LjQtMy42LTgtOC04ek01NTMuMyA4Ny4xYy01LjctMy44LTkuMy0xMC05LjMtMTYuOFY4YzAtNC40LTMuNi04LTgtOGgtNDhjLTQuNCAwLTggMy42LTggOHY2Mi4zYzAgMjIgMTAuMiA0My40IDI4LjYgNTUuNCA0Mi4yIDI3LjMgNjcuNCA3My44IDY3LjQgMTI0VjI4MGMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04di0zMC4zYzAtNjUuNS0zMi40LTEyNi4yLTg2LjctMTYyLjZ6TTQzMiAzNTJINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM4NGM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNnptLTMyIDExMkgyMjR2LTY0aDE3NnY2NHptODcuNy0zMjIuNEM0NjMuOCAxMjUgNDQ4IDk5LjMgNDQ4IDcwLjNWOGMwLTQuNC0zLjYtOC04LThoLTQ4Yy00LjQgMC04IDMuNi04IDh2NjYuNGMwIDQzLjcgMjQuNiA4MS42IDYwLjMgMTA2LjcgMjIuNCAxNS43IDM1LjcgNDEuMiAzNS43IDY4LjZWMjgwYzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LTh2LTMwLjNjMC00My4zLTIxLTgzLjQtNTYuMy0xMDguMXpNNTM2IDM1MmgtNDhjLTQuNCAwLTggMy42LTggOHYxNDRjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOFYzNjBjMC00LjQtMy42LTgtOC04elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyQzExNC42IDMyIDAgMTI1LjEgMCAyNDBjMCA0OS42IDIxLjQgOTUgNTcgMTMwLjdDNDQuNSA0MjEuMSAyLjcgNDY2IDIuMiA0NjYuNWMtMi4yIDIuMy0yLjggNS43LTEuNSA4LjcgMS4zIDMgNC4xIDQuOCA3LjMgNC44IDY2LjMgMCAxMTYtMzEuOCAxNDAuNi01MS40IDMyLjcgMTIuMyA2OSAxOS40IDEwNy40IDE5LjQgMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMnpNMTI4LjIgMzA0SDExNmMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTIuM2M2IDAgMTAuNC0zLjUgMTAuNC02LjYgMC0xLjMtLjgtMi43LTIuMS0zLjhsLTIxLjktMTguOGMtOC41LTcuMi0xMy4zLTE3LjUtMTMuMy0yOC4xIDAtMjEuMyAxOS0zOC42IDQyLjQtMzguNkgxNTZjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOGgtMTIuM2MtNiAwLTEwLjQgMy41LTEwLjQgNi42IDAgMS4zLjggMi43IDIuMSAzLjhsMjEuOSAxOC44YzguNSA3LjIgMTMuMyAxNy41IDEzLjMgMjguMS4xIDIxLjMtMTkgMzguNi00Mi40IDM4LjZ6bTE5MS44LThjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04di02OC4ybC0yNC44IDU1LjhjLTIuOSA1LjktMTEuNCA1LjktMTQuMyAwTDIyNCAyMjcuOFYyOTZjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04VjE5MmMwLTguOCA3LjItMTYgMTYtMTZoMTZjNi4xIDAgMTEuNiAzLjQgMTQuMyA4LjhsMTcuNyAzNS40IDE3LjctMzUuNGMyLjctNS40IDguMy04LjggMTQuMy04LjhoMTZjOC44IDAgMTYgNy4yIDE2IDE2djEwNHptNDguMyA4SDM1NmMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTIuM2M2IDAgMTAuNC0zLjUgMTAuNC02LjYgMC0xLjMtLjgtMi43LTIuMS0zLjhsLTIxLjktMTguOGMtOC41LTcuMi0xMy4zLTE3LjUtMTMuMy0yOC4xIDAtMjEuMyAxOS0zOC42IDQyLjQtMzguNkgzOTZjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOGgtMTIuM2MtNiAwLTEwLjQgMy41LTEwLjQgNi42IDAgMS4zLjggMi43IDIuMSAzLjhsMjEuOSAxOC44YzguNSA3LjIgMTMuMyAxNy41IDEzLjMgMjguMS4xIDIxLjMtMTguOSAzOC42LTQyLjMgMzguNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU25vd2JvYXJkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMiA5NmMyNi41IDAgNDgtMjEuNSA0OC00OFM0NTguNSAwIDQzMiAwcy00OCAyMS41LTQ4IDQ4IDIxLjUgNDggNDggNDh6bTI4LjggMTUzLjZjNS44IDQuMyAxMi41IDYuNCAxOS4yIDYuNCA5LjcgMCAxOS4zLTQuNCAyNS42LTEyLjggMTAuNi0xNC4xIDcuOC0zNC4yLTYuNC00NC44bC0xMTEuNC04My41Yy0xMy44LTEwLjMtMjkuMS0xOC40LTQ1LjQtMjMuOGwtNjMuNy0yMS4yLTI2LjEtNTIuMUMyNDQuNyAyIDIyNS41LTQuNCAyMDkuNyAzLjVjLTE1LjggNy45LTIyLjIgMjcuMS0xNC4zIDQyLjlsMjkuMSA1OC4xYzUuNyAxMS40IDE1LjYgMTkuOSAyNy43IDI0bDE2LjQgNS41LTQxLjIgMjAuNmMtMjEuOCAxMC45LTM1LjQgMzIuOC0zNS40IDU3LjJ2NTMuMWwtNzQuMSAyNC43Yy0xNi44IDUuNi0yNS44IDIzLjctMjAuMiA0MC41IDEuNyA1LjIgNC45IDkuNCA4LjcgMTIuOWwtMzguNy0xNC4xYy05LjctMy41LTE3LjQtMTAuNi0yMS44LTIwLTUuNi0xMi0xOS45LTE3LjItMzEuOS0xMS42cy0xNy4yIDE5LjktMTEuNiAzMS45YzkuOCAyMSAyNy4xIDM2LjkgNDguOSA0NC44bDM2NC44IDEzMi43YzkuNyAzLjUgMTkuNyA1LjMgMjkuNyA1LjMgMTIuNSAwIDI0LjktMi43IDM2LjUtOC4yIDEyLTUuNiAxNy4yLTE5LjkgMTEuNi0zMS45UzQ3NCA0NTQuNyA0NjIgNDYwLjNjLTkuMyA0LjQtMTkuOCA0LjgtMjkuNSAxLjNsLTkwLjgtMzMuMWM4LjctNC4xIDE1LjYtMTEuOCAxNy44LTIxLjlsMjEuOS0xMDJjMy45LTE4LjItMy4yLTM3LjItMTguMS00OC40bC01Mi0zOSA2Ni0zMC41IDgzLjUgNjIuOXptLTE0NC40IDUxLjdsLTE5LjcgOTJjLTEuNSA3LjEtLjEgMTMuOSAyLjggMjBsLTE2OS40LTYxLjZjMi43LS4yIDUuNC0uNCA4LTEuM2w4NS0yOC40YzE5LjYtNi41IDMyLjgtMjQuOCAzMi44LTQ1LjVWMjU2bDYwLjUgNDUuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU25vd2ZsYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC4zIDM0NS4ybC0zMy44LTE5LjUgMjYtN2M4LjItMi4yIDEzLjEtMTAuNyAxMC45LTE4LjlsLTQtMTQuOWMtMi4yLTguMi0xMC43LTEzLjEtMTguOS0xMC45bC03MC44IDE5LTYzLjktMzcgNjMuOC0zNi45IDcwLjggMTljOC4yIDIuMiAxNi43LTIuNyAxOC45LTEwLjlsNC0xNC45YzIuMi04LjItMi43LTE2LjctMTAuOS0xOC45bC0yNi03IDMzLjgtMTkuNWM3LjQtNC4zIDkuOS0xMy43IDUuNy0yMS4xTDQzMC40IDExOWMtNC4zLTcuNC0xMy43LTkuOS0yMS4xLTUuN2wtMzMuOCAxOS41IDctMjZjMi4yLTguMi0yLjctMTYuNy0xMC45LTE4LjlsLTE0LjktNGMtOC4yLTIuMi0xNi43IDIuNy0xOC45IDEwLjlsLTE5IDcwLjgtNjIuOCAzNi4ydi03Ny41bDUzLjctNTMuN2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtMTEuMy0xMS4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwyNTYgNTYuNFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDAuNGwtMTkuNy0xOS43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwxMzguMyA0OGMtNi4zIDYuMi02LjMgMTYuNCAwIDIyLjZsNTMuNyA1My43djc3LjVsLTYyLjgtMzYuMi0xOS03MC44Yy0yLjItOC4yLTEwLjctMTMuMS0xOC45LTEwLjlsLTE0LjkgNGMtOC4yIDIuMi0xMy4xIDEwLjctMTAuOSAxOC45bDcgMjYtMzMuOC0xOS41Yy03LjQtNC4zLTE2LjgtMS43LTIxLjEgNS43TDIuMSAxNDUuN2MtNC4zIDcuNC0xLjcgMTYuOCA1LjcgMjEuMWwzMy44IDE5LjUtMjYgN2MtOC4zIDIuMi0xMy4yIDEwLjctMTEgMTlsNCAxNC45YzIuMiA4LjIgMTAuNyAxMy4xIDE4LjkgMTAuOWw3MC44LTE5IDYzLjggMzYuOS02My44IDM2LjktNzAuOC0xOWMtOC4yLTIuMi0xNi43IDIuNy0xOC45IDEwLjlsLTQgMTQuOWMtMi4yIDguMiAyLjcgMTYuNyAxMC45IDE4LjlsMjYgNy0zMy44IDE5LjZjLTcuNCA0LjMtOS45IDEzLjctNS43IDIxLjFsMTUuNSAyNi44YzQuMyA3LjQgMTMuNyA5LjkgMjEuMSA1LjdsMzMuOC0xOS41LTcgMjZjLTIuMiA4LjIgMi43IDE2LjcgMTAuOSAxOC45bDE0LjkgNGM4LjIgMi4yIDE2LjctMi43IDE4LjktMTAuOWwxOS03MC44IDYyLjgtMzYuMnY3Ny41bC01My43IDUzLjdjLTYuMyA2LjItNi4zIDE2LjQgMCAyMi42bDExLjMgMTEuM2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGwxOS43LTE5LjdWNDk2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ2LTQwLjRsMTkuNyAxOS43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDExLjMtMTEuM2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNkwyNTYgMzg3Ljd2LTc3LjVsNjIuOCAzNi4yIDE5IDcwLjhjMi4yIDguMiAxMC43IDEzLjEgMTguOSAxMC45bDE0LjktNGM4LjItMi4yIDEzLjEtMTAuNyAxMC45LTE4LjlsLTctMjYgMzMuOCAxOS41YzcuNCA0LjMgMTYuOCAxLjcgMjEuMS01LjdsMTUuNS0yNi44YzQuMy03LjMgMS44LTE2LjgtNS42LTIxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbm93bWFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMC45IDE1Mi4zbC01LjktMTQuNWMtMy4zLTgtMTIuNi0xMS45LTIwLjgtOC43TDQ1NiAxNDAuNnYtMjljMC04LjYtNy4yLTE1LjYtMTYtMTUuNmgtMTZjLTguOCAwLTE2IDctMTYgMTUuNnY0Ni45YzAgLjUuMyAxIC4zIDEuNWwtNTYuNCAyM2MtNS45LTEwLTEzLjMtMTguOS0yMi0yNi42IDEzLjYtMTYuNiAyMi0zNy40IDIyLTYwLjUgMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAyMy4xIDguNSA0My45IDIyIDYwLjUtOC43IDcuNy0xNiAxNi42LTIyIDI2LjZsLTU2LjQtMjNjLjEtLjUuMy0xIC4zLTEuNXYtNDYuOUMxMDQgMTAzIDk2LjggOTYgODggOTZINzJjLTguOCAwLTE2IDctMTYgMTUuNnYyOWwtMjguMS0xMS41Yy04LjItMy4yLTE3LjUuNy0yMC44IDguN2wtNS45IDE0LjVjLTMuMyA4IC43IDE3LjEgOC45IDIwLjNsMTM1LjIgNTUuMmMtLjQgNC0xLjIgOC0xLjIgMTIuMiAwIDEwLjEgMS43IDE5LjYgNC4yIDI4LjlDMTIwLjkgMjk2LjQgMTA0IDMzNC4yIDEwNCAzNzZjMCA1NCAyOC40IDEwMC45IDcwLjggMTI3LjggOS4zIDUuOSAyMC4zIDguMiAzMS4zIDguMmg5OS4yYzEzLjMgMCAyNi4zLTQuMSAzNy4yLTExLjcgNDYuNS0zMi4zIDc0LjQtODkuNCA2Mi45LTE1Mi42LTUuNS0zMC4yLTIwLjUtNTcuNi00MS42LTc5IDIuNS05LjIgNC4yLTE4LjcgNC4yLTI4LjcgMC00LjItLjgtOC4xLTEuMi0xMi4yTDUwMiAxNzIuNmM4LjEtMy4xIDEyLjEtMTIuMiA4LjktMjAuM3pNMjI0IDk2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6bTMyIDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0wLTY0Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6bTAtNjRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMC04OHMtMTYtMjMuMi0xNi0zMiA3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTE2IDMyLTE2IDMyem0zMi01NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbm93cGxvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjAgMzc2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHptODAgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6bTgwIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjQgMjQtMTAuNyAyNC0yNC0xMC43LTI0LTI0LTI0em04MCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHptMjM4LjYgNDkuNGMtMTQuNS0xNC41LTIyLjYtMzQuMS0yMi42LTU0LjZWMjY5LjJjMC0yMC41IDguMS00MC4xIDIyLjYtNTQuNmwzNi43LTM2LjdjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTIyLjYtMjIuNmMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBsLTM2LjcgMzYuN2MtMjYuNSAyNi41LTQxLjQgNjIuNC00MS40IDk5LjlWMjg4aC02NHYtNTAuOWMwLTguNy0xLjgtMTcuMi01LjItMjUuMkwzNjQuNSAyOS4xQzM1Ni45IDExLjQgMzM5LjYgMCAzMjAuMyAwSDE3NmMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MTEyaC0xNmMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2OTEuMkMyNi4zIDMxNy4yIDAgMzU1LjQgMCA0MDBjMCA2MS45IDUwLjEgMTEyIDExMiAxMTJoMjU2YzYxLjkgMCAxMTItNTAuMSAxMTItMTEyIDAtMTcuMy00LjItMzMuNC0xMS4yLTQ4SDUxMnYxOC43YzAgMzcuNSAxNC45IDczLjQgNDEuNCA5OS45bDM2LjcgMzYuN2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGwyMi42LTIyLjZjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTM2LjctMzYuN3pNMTkyIDY0aDExNy44bDY4LjYgMTYwSDI1NmwtNjQtNjRWNjR6bTE3NiAzODRIMTEyYy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4aDI1NmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYsMTkyYTk1LjQyLDk1LjQyLDAsMCwxLTMwLjk0LDcwLjIxQTk1LjgsOTUuOCwwLDAsMSwzNTIsNDQ4SDE2MGE5Niw5NiwwLDAsMSwwLTE5Mmg4OC45MUE5NS4zLDk1LjMsMCwwLDEsMjI0LDE5Mkg5NkE5Niw5NiwwLDAsMCwwLDI4OFY0MTZhOTYsOTYsMCwwLDAsOTYsOTZINDE2YTk2LDk2LDAsMCwwLDk2LTk2VjI4OEE5Niw5NiwwLDAsMCw0MTYsMTkyWm0tOTYsNjRhNjQsNjQsMCwxLDAtNjQtNjRBNjQsNjQsMCwwLDAsMzIwLDI1NlpNMjA4LDk2YTQ4LDQ4LDAsMSwwLTQ4LTQ4QTQ4LDQ4LDAsMCwwLDIwOCw5NlpNMzg0LDY0YTMyLDMyLDAsMSwwLTMyLTMyQTMyLDMyLDAsMCwwLDM4NCw2NFpNMTYwLDI4OGE2NCw2NCwwLDAsMCwwLDEyOEgzNTJhNjQsNjQsMCwwLDAsMC0xMjhaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvY2tzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNC42NiAzMTEuMDFMMjg4IDI1NlY5NkgxMjh2MTc2bC04Ni42NSA2NC42MWMtMzkuNCAyOS41Ni01My44NiA4NC40Mi0yOS4yMSAxMjcuMDZDMzAuMzkgNDk1LjI1IDYzLjI3IDUxMiA5Ni4wOCA1MTJjMjAuMDMgMCA0MC4yNS02LjI1IDU3LjUyLTE5LjJsMjEuODYtMTYuMzljLTI5Ljg1LTU1LjM4LTEzLjU0LTEyNS44NCAzOS4yLTE2NS40ek0yODggMzJjMC0xMS4wNSAzLjA3LTIxLjMgOC4wMi0zMC4zOEMyOTMuNC45MiAyOTAuODUgMCAyODggMEgxNjBjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJoMTYwVjMyek00ODAgMEgzNTJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJoMTkyVjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTMyMCAyNzJsLTg2LjEzIDY0LjYxYy0zOS40IDI5LjU2LTUzLjg2IDg0LjQyLTI5LjIxIDEyNy4wNiAxOC4yNSAzMS41OCA1MC42MSA0OC4zMyA4My40MiA0OC4zMyAyMC4wMyAwIDQwLjI1LTYuMjUgNTcuNTItMTkuMmwxMTUuMi04Ni40QTEyNy45OTcgMTI3Ljk5NyAwIDAgMCA1MTIgMzA0Vjk2SDMyMHYxNzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvbGFyUGFuZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMxLjk4IDQ0OC4wMWwtNDcuOTcuMDVWNDE2aC0xMjh2MzIuMjFsLTQ3Ljk4LjA1Yy04LjgyLjAxLTE1Ljk3IDcuMTYtMTUuOTggMTUuOTlsLS4wNSAzMS43M2MtLjAxIDguODUgNy4xNyAxNi4wMyAxNi4wMiAxNi4wMmwyMjMuOTYtLjI2YzguODItLjAxIDE1Ljk3LTcuMTYgMTUuOTgtMTUuOThsLjA0LTMxLjczYy4wMS04Ljg1LTcuMTctMTYuMDMtMTYuMDItMTYuMDJ6TTU4NS4yIDI2Ljc0QzU4Mi41OCAxMS4zMSA1NjguOTkgMCA1NTMuMDYgMEg4Ni45M0M3MSAwIDU3LjQxIDExLjMxIDU0Ljc5IDI2Ljc0LTMuMzIgMzY5LjE2LjA0IDM0OC4wOC4wMyAzNTJjLS4wMyAxNy4zMiAxNC4yOSAzMiAzMi42IDMyaDU3NC43NGMxOC4yMyAwIDMyLjUxLTE0LjU2IDMyLjU5LTMxLjc5LjAyLTQuMDggMy4zNSAxNi45NS01NC43Ni0zMjUuNDd6TTI1OS44MyA2NGgxMjAuMzNsOS43NyA5NkgyNTAuMDZsOS43Ny05NnptLTc1LjE3IDI1Nkg3MS4wOUw5MC4xIDIwOGgxMDUuOTdsLTExLjQxIDExMnptMTYuMjktMTYwSDk4LjI0bDE2LjI5LTk2aDk2LjE5bC05Ljc3IDk2em0zMi44MiAxNjBsMTEuNC0xMTJoMTQ5LjY1bDExLjQgMTEySDIzMy43N3ptMTk1LjUtMjU2aDk2LjE5bDE2LjI5IDk2SDQzOS4wNGwtOS43Ny05NnptMjYuMDYgMjU2bC0xMS40LTExMkg1NDkuOWwxOS4wMSAxMTJINDU1LjMzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0QWxwaGFEb3duQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAzNTJoLTQ4VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMwNEgxNmMtMTQuMTkgMC0yMS4zNiAxNy4yNC0xMS4yOSAyNy4zMWw4MCA5NmExNiAxNiAwIDAgMCAyMi42MiAwbDgwLTk2QzE5Ny4zNSAzNjkuMjYgMTkwLjIyIDM1MiAxNzYgMzUyem0xMTItMTI4aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTU2bDYxLjI2LTcwLjQ1QTMyIDMyIDAgMCAwIDQzMiA2NS42M1Y0OGExNiAxNiAwIDAgMC0xNi0xNkgyODhhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNTZsLTYxLjI2IDcwLjQ1QTMyIDMyIDAgMCAwIDI3MiAxOTAuMzdWMjA4YTE2IDE2IDAgMCAwIDE2IDE2em0xNTkuMDYgMjM0LjYybC01OS4yNy0xNjBBMTYgMTYgMCAwIDAgMzcyLjcyIDI4OGgtNDEuNDRhMTYgMTYgMCAwIDAtMTUuMDcgMTAuNjJsLTU5LjI3IDE2MEExNiAxNiAwIDAgMCAyNzIgNDgwaDI0LjgzYTE2IDE2IDAgMCAwIDE1LjIzLTExLjA4bDQuNDItMTIuOTJoNzFsNC40MSAxMi45MkExNiAxNiAwIDAgMCA0MDcuMTYgNDgwSDQzMmExNiAxNiAwIDAgMCAxNS4wNi0yMS4zOHpNMzM1LjYxIDQwMEwzNTIgMzUybDE2LjM5IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0QWxwaGFEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAzNTJoLTQ4VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMwNEgxNmMtMTQuMTkgMC0yMS4zNiAxNy4yNC0xMS4yOSAyNy4zMWw4MCA5NmExNiAxNiAwIDAgMCAyMi42MiAwbDgwLTk2QzE5Ny4zNSAzNjkuMjYgMTkwLjIyIDM1MiAxNzYgMzUyem0yNDAtNjRIMjg4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDU2bC02MS4yNiA3MC40NUEzMiAzMiAwIDAgMCAyNzIgNDQ2LjM3VjQ2NGExNiAxNiAwIDAgMCAxNiAxNmgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2aC01Nmw2MS4yNi03MC40NUEzMiAzMiAwIDAgMCA0MzIgMzIxLjYzVjMwNGExNiAxNiAwIDAgMC0xNi0xNnptMzEuMDYtODUuMzhsLTU5LjI3LTE2MEExNiAxNiAwIDAgMCAzNzIuNzIgMzJoLTQxLjQ0YTE2IDE2IDAgMCAwLTE1LjA3IDEwLjYybC01OS4yNyAxNjBBMTYgMTYgMCAwIDAgMjcyIDIyNGgyNC44M2ExNiAxNiAwIDAgMCAxNS4yMy0xMS4wOGw0LjQyLTEyLjkyaDcxbDQuNDEgMTIuOTJBMTYgMTYgMCAwIDAgNDA3LjE2IDIyNEg0MzJhMTYgMTYgMCAwIDAgMTUuMDYtMjEuMzh6TTMzNS42MSAxNDRMMzUyIDk2bDE2LjM5IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0QWxwaGFVcEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxNjBoNDh2MzA0YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2MGg0OGMxNC4yMSAwIDIxLjM4LTE3LjI0IDExLjMxLTI3LjMxbC04MC05NmExNiAxNiAwIDAgMC0yMi42MiAwbC04MCA5NkMtNS4zNSAxNDIuNzQgMS43OCAxNjAgMTYgMTYwem0yNzIgNjRoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNmgtNTZsNjEuMjYtNzAuNDVBMzIgMzIgMCAwIDAgNDMyIDY1LjYzVjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDI4OGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg1NmwtNjEuMjYgNzAuNDVBMzIgMzIgMCAwIDAgMjcyIDE5MC4zN1YyMDhhMTYgMTYgMCAwIDAgMTYgMTZ6bTE1OS4wNiAyMzQuNjJsLTU5LjI3LTE2MEExNiAxNiAwIDAgMCAzNzIuNzIgMjg4aC00MS40NGExNiAxNiAwIDAgMC0xNS4wNyAxMC42MmwtNTkuMjcgMTYwQTE2IDE2IDAgMCAwIDI3MiA0ODBoMjQuODNhMTYgMTYgMCAwIDAgMTUuMjMtMTEuMDhsNC40Mi0xMi45Mmg3MWw0LjQxIDEyLjkyQTE2IDE2IDAgMCAwIDQwNy4xNiA0ODBINDMyYTE2IDE2IDAgMCAwIDE1LjA2LTIxLjM4ek0zMzUuNjEgNDAwTDM1MiAzNTJsMTYuMzkgNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnRBbHBoYVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE2MGg0OHYzMDRhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWMTYwaDQ4YzE0LjIxIDAgMjEuMzgtMTcuMjQgMTEuMzEtMjcuMzFsLTgwLTk2YTE2IDE2IDAgMCAwLTIyLjYyIDBsLTgwIDk2Qy01LjM1IDE0Mi43NCAxLjc4IDE2MCAxNiAxNjB6bTQwMCAxMjhIMjg4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDU2bC02MS4yNiA3MC40NUEzMiAzMiAwIDAgMCAyNzIgNDQ2LjM3VjQ2NGExNiAxNiAwIDAgMCAxNiAxNmgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2aC01Nmw2MS4yNi03MC40NUEzMiAzMiAwIDAgMCA0MzIgMzIxLjYzVjMwNGExNiAxNiAwIDAgMC0xNi0xNnptMzEuMDYtODUuMzhsLTU5LjI3LTE2MEExNiAxNiAwIDAgMCAzNzIuNzIgMzJoLTQxLjQ0YTE2IDE2IDAgMCAwLTE1LjA3IDEwLjYybC01OS4yNyAxNjBBMTYgMTYgMCAwIDAgMjcyIDIyNGgyNC44M2ExNiAxNiAwIDAgMCAxNS4yMy0xMS4wOGw0LjQyLTEyLjkyaDcxbDQuNDEgMTIuOTJBMTYgMTYgMCAwIDAgNDA3LjE2IDIyNEg0MzJhMTYgMTYgMCAwIDAgMTUuMDYtMjEuMzh6TTMzNS42MSAxNDRMMzUyIDk2bDE2LjM5IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0QW1vdW50RG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDAgOTZoNjRhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZoLTY0YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2em0wIDEyOGgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2SDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNnptMjU2IDE5MkgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMjU2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptLTI1Ni02NGgxOTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2SDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNnptLTY0IDBoLTQ4VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMwNEgxNmMtMTQuMTkgMC0yMS4zNyAxNy4yNC0xMS4yOSAyNy4zMWw4MCA5NmExNiAxNiAwIDAgMCAyMi42MiAwbDgwLTk2QzE5Ny4zNSAzNjkuMjYgMTkwLjIyIDM1MiAxNzYgMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0QW1vdW50RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgNDE2aC02NGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg2NGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bS0xMjgtNjRoLTQ4VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMwNEgxNmMtMTQuMTkgMC0yMS4zNyAxNy4yNC0xMS4yOSAyNy4zMWw4MCA5NmExNiAxNiAwIDAgMCAyMi42MiAwbDgwLTk2QzE5Ny4zNSAzNjkuMjYgMTkwLjIyIDM1MiAxNzYgMzUyem0yNTYtMTkySDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgxOTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tNjQgMTI4SDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek00OTYgMzJIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI1NmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ydEFtb3VudFVwQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MCA5Nmg2NGExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNmgtNjRhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZ6bTAgMTI4aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2em0yNTYgMTkySDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyNTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tMjU2LTY0aDE5MmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2ek0xNiAxNjBoNDh2MzA0YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2MGg0OGMxNC4yMSAwIDIxLjM5LTE3LjI0IDExLjMxLTI3LjMxbC04MC05NmExNiAxNiAwIDAgMC0yMi42MiAwbC04MCA5NkMtNS4zNSAxNDIuNzQgMS43OCAxNjAgMTYgMTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0QW1vdW50VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDQxNmgtNjRhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNjRhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek0xNiAxNjBoNDh2MzA0YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2MGg0OGMxNC4yMSAwIDIxLjM4LTE3LjI0IDExLjMxLTI3LjMxbC04MC05NmExNiAxNiAwIDAgMC0yMi42MiAwbC04MCA5NkMtNS4zNSAxNDIuNzQgMS43NyAxNjAgMTYgMTYwem00MTYgMEgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTkyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptLTY0IDEyOEgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNNDk2IDMySDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyNTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxIDI4OGgyMzhjMjEuNCAwIDMyLjEgMjUuOSAxNyA0MUwxNzcgNDQ4Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwyNCAzMjljLTE1LjEtMTUuMS00LjQtNDEgMTctNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnROdW1lcmljRG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgMzUyaC00OFY0OGExNiAxNiAwIDAgMC0xNi0xNkg4MGExNiAxNiAwIDAgMC0xNiAxNnYzMDRIMTZjLTE0LjE5IDAtMjEuMzYgMTcuMjQtMTEuMjkgMjcuMzFsODAgOTZhMTYgMTYgMCAwIDAgMjIuNjIgMGw4MC05NkMxOTcuMzUgMzY5LjI2IDE5MC4yMiAzNTIgMTc2IDM1MnptMjI0IDY0aC0xNlYzMDRhMTYgMTYgMCAwIDAtMTYtMTZoLTQ4YTE2IDE2IDAgMCAwLTE0LjI5IDguODNsLTE2IDMyQTE2IDE2IDAgMCAwIDMwNCAzNTJoMTZ2NjRoLTE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDk2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMzMwLjE3IDM0LjkxYTc5IDc5IDAgMCAwLTU1IDU0LjE3Yy0xNC4yNyA1MS4wNSAyMS4xOSA5Ny43NyA2OC44MyAxMDIuNTNhODQuMDcgODQuMDcgMCAwIDEtMjAuODUgMTIuOTFjLTcuNTcgMy40LTEwLjggMTIuNDctOC4xOCAyMC4zNGw5LjkgMjBjMi44NyA4LjYzIDEyLjUzIDEzLjQ5IDIwLjkgOS45MSA1OC0yNC43NyA4Ni4yNS02MS42MSA4Ni4yNS0xMzJWMTEyYy0uMDItNTEuMjEtNDguNC05MS4zNC0xMDEuODUtNzcuMDl6TTM1MiAxMzJhMjAgMjAgMCAxIDEgMjAtMjAgMjAgMjAgMCAwIDEtMjAgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnROdW1lcmljRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgOTZoMTZ2NjRoLTE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDk2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNmgtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZoLTQ4YTE2IDE2IDAgMCAwLTE0LjI5IDguODNsLTE2IDMyQTE2IDE2IDAgMCAwIDMwNCA5NnptMjYuMTUgMTYyLjkxYTc5IDc5IDAgMCAwLTU1IDU0LjE3Yy0xNC4yNSA1MS4wNSAyMS4yMSA5Ny43NyA2OC44NSAxMDIuNTNhODQuMDcgODQuMDcgMCAwIDEtMjAuODUgMTIuOTFjLTcuNTcgMy40LTEwLjggMTIuNDctOC4xOCAyMC4zNGw5LjkgMjBjMi44NyA4LjYzIDEyLjUzIDEzLjQ5IDIwLjkgOS45MSA1OC0yNC43NiA4Ni4yNS02MS42MSA4Ni4yNS0xMzJWMzM2Yy0uMDItNTEuMjEtNDguNC05MS4zNC0xMDEuODUtNzcuMDl6TTM1MiAzNTZhMjAgMjAgMCAxIDEgMjAtMjAgMjAgMjAgMCAwIDEtMjAgMjB6bS0xNzYtNGgtNDhWNDhhMTYgMTYgMCAwIDAtMTYtMTZIODBhMTYgMTYgMCAwIDAtMTYgMTZ2MzA0SDE2Yy0xNC4xOSAwLTIxLjM2IDE3LjI0LTExLjI5IDI3LjMxbDgwIDk2YTE2IDE2IDAgMCAwIDIyLjYyIDBsODAtOTZDMTk3LjM1IDM2OS4yNiAxOTAuMjIgMzUyIDE3NiAzNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnROdW1lcmljVXBBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA3LjMxIDM2LjY5YTE2IDE2IDAgMCAwLTIyLjYyIDBsLTgwIDk2Qy01LjM1IDE0Mi43NCAxLjc4IDE2MCAxNiAxNjBoNDh2MzA0YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2MGg0OGMxNC4yMSAwIDIxLjM4LTE3LjI0IDExLjMxLTI3LjMxek00MDAgNDE2aC0xNlYzMDRhMTYgMTYgMCAwIDAtMTYtMTZoLTQ4YTE2IDE2IDAgMCAwLTE0LjI5IDguODNsLTE2IDMyQTE2IDE2IDAgMCAwIDMwNCAzNTJoMTZ2NjRoLTE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDk2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMzMwLjE3IDM0LjkxYTc5IDc5IDAgMCAwLTU1IDU0LjE3Yy0xNC4yNyA1MS4wNSAyMS4xOSA5Ny43NyA2OC44MyAxMDIuNTNhODQuMDcgODQuMDcgMCAwIDEtMjAuODUgMTIuOTFjLTcuNTcgMy40LTEwLjggMTIuNDctOC4xOCAyMC4zNGw5LjkgMjBjMi44NyA4LjYzIDEyLjUzIDEzLjQ5IDIwLjkgOS45MSA1OC0yNC43NyA4Ni4yNS02MS42MSA4Ni4yNS0xMzJWMTEyYy0uMDItNTEuMjEtNDguNC05MS4zNC0xMDEuODUtNzcuMDl6TTM1MiAxMzJhMjAgMjAgMCAxIDEgMjAtMjAgMjAgMjAgMCAwIDEtMjAgMjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnROdW1lcmljVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMwLjE3IDI1OC45MWE3OSA3OSAwIDAgMC01NSA1NC4xN2MtMTQuMjcgNTEuMDUgMjEuMTkgOTcuNzcgNjguODMgMTAyLjUzYTg0LjA3IDg0LjA3IDAgMCAxLTIwLjg1IDEyLjkxYy03LjU3IDMuNC0xMC44IDEyLjQ3LTguMTggMjAuMzRsOS45IDIwYzIuODcgOC42MyAxMi41MyAxMy40OSAyMC45IDkuOTEgNTgtMjQuNzYgODYuMjUtNjEuNjEgODYuMjUtMTMyVjMzNmMtLjAyLTUxLjIxLTQ4LjQtOTEuMzQtMTAxLjg1LTc3LjA5ek0zNTIgMzU2YTIwIDIwIDAgMSAxIDIwLTIwIDIwIDIwIDAgMCAxLTIwIDIwek0zMDQgOTZoMTZ2NjRoLTE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDk2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNmgtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZoLTQ4YTE2IDE2IDAgMCAwLTE0LjI5IDguODNsLTE2IDMyQTE2IDE2IDAgMCAwIDMwNCA5NnpNMTA3LjMxIDM2LjY5YTE2IDE2IDAgMCAwLTIyLjYyIDBsLTgwIDk2Qy01LjM1IDE0Mi43NCAxLjc4IDE2MCAxNiAxNjBoNDh2MzA0YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2MGg0OGMxNC4yMSAwIDIxLjM4LTE3LjI0IDExLjMxLTI3LjMxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc5IDIyNEg0MWMtMjEuNCAwLTMyLjEtMjUuOS0xNy00MUwxNDMgNjRjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTE5IDExOWMxNS4yIDE1LjEgNC41IDQxLTE2LjkgNDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDEgMjg4aDIzOGMyMS40IDAgMzIuMSAyNS45IDE3IDQxTDE3NyA0NDhjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDI0IDMyOWMtMTUuMS0xNS4xLTQuNC00MSAxNy00MXptMjU1LTEwNUwxNzcgNjRjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDI0IDE4M2MtMTUuMSAxNS4xLTQuNCA0MSAxNyA0MWgyMzhjMjEuNCAwIDMyLjEtMjUuOSAxNy00MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2OC4yNSAxOTJjLTI5LjA0LjEzLTEzNS4wMSA2LjE2LTIxMy44NCA4My0zMy4xMiAyOS42My01My4zNiA2My4zLTY2LjQxIDk0Ljg2LTEzLjA1LTMxLjU2LTMzLjI5LTY1LjIzLTY2LjQxLTk0Ljg2LTc4LjgzLTc2Ljg0LTE4NC44LTgyLjg3LTIxMy44NC04My00LjQxLS4wMi03Ljc5IDMuNC03Ljc1IDcuODIuMjMgMjcuOTIgNy4xNCAxMjYuMTQgODguNzcgMTk5LjNDMTcyLjc5IDQ4MC45NCAyNTYgNDgwIDI4OCA0ODBzMTE1LjE5Ljk1IDE5OS4yMy04MC44OGM4MS42NC03My4xNyA4OC41NC0xNzEuMzggODguNzctMTk5LjMuMDQtNC40Mi0zLjM0LTcuODQtNy43NS03Ljgyek0yODcuOTggMzAyLjZjMTIuODItMTguODUgMjcuNi0zNS43OCA0NC4wOS01MC41MiAxOS4wOS0xOC42MSAzOS41OC0zMy4zIDYwLjI2LTQ1LjE4LTE2LjQ0LTcwLjUtNTEuNzItMTMzLjA1LTk2LjczLTE3Mi4yMi00LjExLTMuNTgtMTEuMDItMy41OC0xNS4xNCAwLTQ0Ljk5IDM5LjE0LTgwLjI3IDEwMS42My05Ni43NCAxNzIuMDcgMjAuMzcgMTEuNyA0MC41IDI2LjE0IDU5LjIyIDQ0LjM5YTI4Mi43NjggMjgyLjc2OCAwIDAgMSA0NS4wNCA1MS40NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BhY2VTaHV0dGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU5Mi42MDQgMjA4LjI0NEM1NTkuNzM1IDE5Mi44MzYgNTE1Ljc3NyAxODQgNDcyIDE4NEgxODYuMzI3Yy00Ljk1Mi02LjU1NS0xMC41ODUtMTEuOTc4LTE2LjcyLTE2SDM3NkMyMjkuMTU3IDEzNy43NDcgMjE5LjQwMyAzMiA5Ni4wMDMgMzJIOTZ2MTI4SDgwVjMyYy0yNi41MSAwLTQ4IDI4LjY1NC00OCA2NHY2NGMtMjMuMTk3IDAtMzIgMTAuMDMyLTMyIDI0djQwYzAgMTMuOTgzIDguODE5IDI0IDMyIDI0djE2Yy0yMy4xOTcgMC0zMiAxMC4wMzItMzIgMjR2NDBjMCAxMy45ODMgOC44MTkgMjQgMzIgMjR2NjRjMCAzNS4zNDYgMjEuNDkgNjQgNDggNjRWMzUyaDE2djEyOGguMDAzYzEyMy40IDAgMTMzLjE1NC0xMDUuNzQ3IDI3OS45OTctMTM2SDE2OS42MDZjNi4xMzUtNC4wMjIgMTEuNzY4LTkuNDQ1IDE2LjcyLTE2SDQ3MmM0My43NzcgMCA4Ny43MzUtOC44MzYgMTIwLjYwNC0yNC4yNDRDNjIyLjI4MiAyODkuODQ1IDY0MCAyNzEuOTkyIDY0MCAyNTZzLTE3LjcxOC0zMy44NDUtNDcuMzk2LTQ3Ljc1NnpNNDg4IDI5NmE4IDggMCAwIDEtOC04di02NGE4IDggMCAwIDEgOC04YzMxLjkwOSAwIDMxLjk0MiA4MCAwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGVsbENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiAyNTZoOTEuMzZjNDMuMiAwIDgyLTMyLjIgODQuNTEtNzUuMzRhNzkuODIgNzkuODIgMCAwIDAtMjUuMjYtNjMuMDcgNzkuODEgNzkuODEgMCAwIDAgOS4wNi00NC45MUM0MjcuOSAzMC41NyAzODkuMyAwIDM0NyAwaC03NWExNiAxNiAwIDAgMC0xNiAxNnYyMjRhMTYgMTYgMCAwIDAgMTYgMTZ6bTQwLTIwMGg0MGEyNCAyNCAwIDAgMSAwIDQ4aC00MHptMCA5Nmg1NmEyNCAyNCAwIDAgMSAwIDQ4aC01NnpNMTU1LjEyIDIyLjI1QTMyIDMyIDAgMCAwIDEyNC42NCAwSDk5LjM2YTMyIDMyIDAgMCAwLTMwLjQ4IDIyLjI1TC41OSAyMzUuNzNBMTYgMTYgMCAwIDAgMTYgMjU2aDI0LjkzYTE2IDE2IDAgMCAwIDE1LjQyLTExLjczTDY4LjI5IDIwOGg4Ny40MmwxMS45NCAzNi4yN0ExNiAxNiAwIDAgMCAxODMuMDcgMjU2SDIwOGExNiAxNiAwIDAgMCAxNS40Mi0yMC4yN3pNODkuMzcgMTQ0TDExMiA3NS4zbDIyLjYzIDY4Ljd6bTQ4MiAxMzIuNDhsLTQ1LjIxLTQ1LjNhMTUuODggMTUuODggMCAwIDAtMjIuNTkgMGwtMTUxLjUgMTUxLjUtNTUuNDEtNTUuNWExNS44OCAxNS44OCAwIDAgMC0yMi41OSAwbC00NS4zIDQ1LjNhMTYgMTYgMCAwIDAgMCAyMi41OWwxMTIgMTEyLjIxYTE1Ljg5IDE1Ljg5IDAgMCAwIDIyLjYgMGwyMDgtMjA4LjIxYTE2IDE2IDAgMCAwLS4wMi0yMi41OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BpZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MS4xNyAxNjcuMzVMMTc3LjEgMTc2aDQuNjdsNS4yMi0yNi4xMmMuNzItMy41OCAxLjgtNy41OCAzLjIxLTExLjc5bC0yMC4yOS00MC41OCAyMy44LTcxLjM5YzIuNzktOC4zOC0xLjczLTE3LjQ0LTEwLjEyLTIwLjI0TDE2OC40Mi44MmMtOC4zOC0yLjgtMTcuNDUgMS43My0yMC4yNCAxMC4xMmwtMjUuODkgNzcuNjhhMzIuMDQgMzIuMDQgMCAwIDAgMS43MyAyNC40M2wyNy4xNSA1NC4zem00MjIuMTQgMTgyLjAzbC01Mi43NS03OS4xMmEzMi4wMDIgMzIuMDAyIDAgMCAwLTI2LjYyLTE0LjI1SDQxNmw2OC45OS0yNC4zNmEzMi4wMyAzMi4wMyAwIDAgMCAxNi41MS0xMi42MWw1My42LTgwLjQxYzQuOS03LjM1IDIuOTEtMTcuMjktNC40NC0yMi4xOWwtMTMuMzEtOC44OGMtNy4zNS00LjktMTcuMjktMi45MS0yMi4xOSA0LjQ0bC01MC41NiA3NS44M0w0MDQuMSAyMDhIMzY4bC0xMC4zNy01MS44NUMzNTUuNDQgMTQ1LjE4IDM0MC4yNiA5NiAyODggOTZjLTUyLjI2IDAtNjcuNDQgNDkuMTgtNjkuNjMgNjAuMTVMMjA4IDIwOGgtMzYuMWwtNjAuNDktMjAuMTdMNjAuODQgMTEyYy00LjktNy4zNS0xNC44My05LjM0LTIyLjE5LTQuNDRsLTEzLjMxIDguODhjLTcuMzUgNC45LTkuMzQgMTQuODMtNC40NCAyMi4xOWw1My42IDgwLjQxYTMyLjAzIDMyLjAzIDAgMCAwIDE2LjUxIDEyLjYxTDE2MCAyNTZIODIuMDZhMzIuMDIgMzIuMDIgMCAwIDAtMjYuNjMgMTQuMjVMMi42OSAzNDkuMzhjLTQuOSA3LjM1LTIuOTIgMTcuMjkgNC40NCAyMi4xOWwxMy4zMSA4Ljg4YzcuMzUgNC45IDE3LjI5IDIuOTEgMjIuMTktNC40NGw0OC03Mmg0Ny4wNmwtNjAuODMgOTcuMzNBMzEuOTg4IDMxLjk4OCAwIDAgMCA3MiA0MTguM1Y0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTczLjExbDc0LjA4LTExOC41M2MtMS4wMSAxNC4wNS0yLjA4IDI4LjExLTIuMDggNDIuMjFDMTkyIDM5OS42NCAyMzIuNzYgNDQ4IDI4OCA0NDhzOTYtNDguMzYgOTYtMTAxLjQzYzAtMTQuMS0xLjA4LTI4LjE2LTIuMDgtNDIuMjFMNDU2IDQyMi44OVY0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTc3LjcxYzAtNi0xLjY5LTExLjg4LTQuODYtMTYuOTZMNDM4LjMxIDMwNGg0Ny4wNmw0OCA3MmM0LjkgNy4zNSAxNC44NCA5LjM0IDIyLjE5IDQuNDRsMTMuMzEtOC44OGM3LjM2LTQuOSA5LjM0LTE0LjgzIDQuNDQtMjIuMTh6TTQwNi4wOSA5Ny41MWwtMjAuMjkgNDAuNThjMS40MSA0LjIxIDIuNDkgOC4yMSAzLjIxIDExLjc5bDUuMjIgMjYuMTJoNC42N2wyNS45My04LjY1IDI3LjE1LTU0LjNhMzEuOTk1IDMxLjk5NSAwIDAgMCAxLjczLTI0LjQzbC0yNS44OS03Ny42OEM0MjUuMDMgMi41NiA0MTUuOTYtMS45OCA0MDcuNTguODJsLTE1LjE3IDUuMDZjLTguMzggMi44LTEyLjkxIDExLjg2LTEwLjEyIDIwLjI0bDIzLjggNzEuMzl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwaW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDQ4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4IDIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4em0tNDggMzY4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4LTIxLjQ5LTQ4LTQ4LTQ4em0yMDgtMjA4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4LTIxLjQ5LTQ4LTQ4LTQ4ek05NiAyNTZjMC0yNi41MS0yMS40OS00OC00OC00OFMwIDIyOS40OSAwIDI1NnMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OHptMTIuOTIyIDk5LjA3OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OGMwLTI2LjUwOS0yMS40OTEtNDgtNDgtNDh6bTI5NC4xNTYgMGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OGMwLTI2LjUwOS0yMS40OS00OC00OC00OHpNMTA4LjkyMiA2MC45MjJjLTI2LjUxIDAtNDggMjEuNDktNDggNDhzMjEuNDkgNDggNDggNDggNDgtMjEuNDkgNDgtNDgtMjEuNDkxLTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGxvdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3Mi4yOSAxOTUuODlsLTY3LjA2LTIyLjk1Yy0xOS4yOC02LjYtMzMuNTQtMjAuOTItMzguMTQtMzguM0wzNTEuMSA3NC4xOWMtMTEuNTgtNDMuNzctNzYuNTctNTcuMTMtMTA5Ljk4LTIyLjYybC00Ni4xNCA0Ny42N2MtMTMuMjYgMTMuNzEtMzMuNTQgMjAuOTMtNTQuMiAxOS4zMWwtNzEuODgtNS42MmMtNTIuMDUtNC4wNy04Ni45MyA0NC44OC01OS4wMyA4Mi44M2wzOC41NCA1Mi40MmMxMS4wOCAxNS4wNyAxMi44MiAzMy44NiA0LjY0IDUwLjI0TDI0LjYyIDM1NS40Yy0yMC41OSA0MS4yNSAyMi44NCA4NC44NyA3My40OSA3My44MWw2OS45Ni0xNS4yOGMyMC4xMS00LjM5IDQxLjQ1IDAgNTcuMDcgMTEuNzNsNTQuMzIgNDAuODNjMzkuMzIgMjkuNTYgMTAxLjA0IDcuNTcgMTA0LjQ1LTM3LjIybDQuNy02MS44NmMxLjM1LTE3Ljc5IDEyLjgtMzMuODYgMzAuNjMtNDIuOTlsNjItMzEuNzRjNDQuODgtMjIuOTYgMzkuNTktODAuMTctOC45NS05Ni43OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3ByYXlDYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2aDEyOFYzMnptMjU2IDk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyem0tMjU2IDMySDk2Yy01My4wMiAwLTk2IDQyLjk4LTk2IDk2djIyNGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDI1NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjI1NmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2em0tNjQgMjU2Yy00NC4xOCAwLTgwLTM1LjgyLTgwLTgwczM1LjgyLTgwIDgwLTgwIDgwIDM1LjgyIDgwIDgwLTM1LjgyIDgwLTgwIDgwek00ODAgOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnMtMTQuMzMtMzItMzItMzItMzIgMTQuMzMtMzIgMzIgMTQuMzMgMzIgMzIgMzJ6bS05NiAzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnMxNC4zMyAzMiAzMiAzMiAzMi0xNC4zMyAzMi0zMi0xNC4zMy0zMi0zMi0zMnptLTk2LTk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyem05NiAwYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyem05NiAxOTJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJzMTQuMzMgMzIgMzIgMzIgMzItMTQuMzMgMzItMzItMTQuMzMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZUZ1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDUxMkgwVjBoNTEydjUxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlUm9vdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzEuMzEgMjUxLjMxbC0yMi42Mi0yMi42MmMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMEw0ODAgMjc0Ljc1bC00Ni4wNi00Ni4wNmMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtMjIuNjIgMjIuNjJjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNMNDM0Ljc1IDMyMGwtNDYuMDYgNDYuMDZjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsMjIuNjIgMjIuNjJjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMEw0ODAgMzY1LjI1bDQ2LjA2IDQ2LjA2YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMjIuNjItMjIuNjJjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M0w1MjUuMjUgMzIwbDQ2LjA2LTQ2LjA2YzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjN6TTU1MiAwSDMwNy42NWMtMTQuNTQgMC0yNy4yNiA5LjgtMzAuOTUgMjMuODdsLTg0Ljc5IDMyMi44LTU4LjQxLTEwNi4xQTMyLjAwOCAzMi4wMDggMCAwIDAgMTA1LjQ3IDIyNEgyNGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY0OGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQzLjYybDg4Ljg4IDE2My43M0MxNjguOTkgNTAzLjUgMTg2LjMgNTEyIDIwNC45NCA1MTJjMTcuMjcgMCA0NC40NC05IDU0LjI4LTQxLjQ4TDM1Ny4wMyA5Nkg1NTJjMTMuMjUgMCAyNC0xMC43NSAyNC0yNFYyNGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhbXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNTEyaDQ0OHYtNjRIMzJ2NjR6bTM4NC0yNTZoLTY2LjU2Yy0xNi4yNiAwLTI5LjQ0LTEzLjE4LTI5LjQ0LTI5LjQ0di05LjQ2YzAtMjcuMzcgOC44OC01My40MSAyMS40Ni03Ny43MiA5LjExLTE3LjYxIDEyLjktMzguMzkgOS4wNS02MC40Mi02Ljc3LTM4Ljc4LTM4LjQ3LTcwLjctNzcuMjYtNzcuNDVDMjEyLjYyLTkuMDQgMTYwIDM3LjMzIDE2MCA5NmMwIDE0LjE2IDMuMTIgMjcuNTQgOC42OSAzOS41OEMxODIuMDIgMTY0LjQzIDE5MiAxOTQuNyAxOTIgMjI2LjQ5di4wN2MwIDE2LjI2LTEzLjE4IDI5LjQ0LTI5LjQ0IDI5LjQ0SDk2Yy01My4wMiAwLTk2IDQyLjk4LTk2IDk2djMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNDQ4YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyYzAtNTMuMDItNDIuOTgtOTYtOTYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YXJBbmRDcmVzY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDAuNDcgNDY2LjM2Yy0xLjQ1IDAtNi44OS40Ni05LjE4LjQ2LTExNi4yNSAwLTIxMC44Mi05NC41Ny0yMTAuODItMjEwLjgyUzIxNS4wNCA0NS4xOCAzMzEuMjkgNDUuMThjMi4zMiAwIDcuNy40NiA5LjE4LjQ2IDcuMTMgMCAxMy4zMy01LjAzIDE0Ljc1LTEyLjA3IDEuNDYtNy4yNS0yLjU1LTE0LjQ5LTkuNDctMTcuMDlDMzE2LjU4IDUuNTQgMjg2LjM5IDAgMjU2IDAgMTE0Ljg0IDAgMCAxMTQuODQgMCAyNTZzMTE0Ljg0IDI1NiAyNTYgMjU2YzMwLjIzIDAgNjAuMjgtNS40OSA4OS4zMi0xNi4zMiA1Ljk2LTIuMDIgMTAuMjgtNy42NCAxMC4yOC0xNC4yNiAwLTguMDktNi4zOS0xNS4wNi0xNS4xMy0xNS4wNnptMTYyLjk5LTI1Mi41bC03Ni4zOC0xMS4xLTM0LjE2LTY5LjIxYy0xLjgzLTMuNy01LjM4LTUuNTUtOC45My01LjU1cy03LjEgMS44NS04LjkzIDUuNTVsLTM0LjE2IDY5LjIxLTc2LjM4IDExLjFjLTguMTcgMS4xOC0xMS40MyAxMS4yMi01LjUyIDE2Ljk5bDU1LjI3IDUzLjg3LTEzLjA1IDc2LjA3Yy0xLjExIDYuNDQgNC4wMSAxMS42NiA5LjgxIDExLjY2IDEuNTMgMCAzLjExLS4zNiA0LjY0LTEuMTdMMzg0IDMzNS4zN2w2OC4zMSAzNS45MWMxLjUzLjggMy4xMSAxLjE3IDQuNjQgMS4xNyA1LjggMCAxMC45Mi01LjIzIDkuODEtMTEuNjZsLTEzLjA1LTc2LjA3IDU1LjI3LTUzLjg3YzUuOTEtNS43NyAyLjY1LTE1LjgxLTUuNTItMTYuOTl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YXJIYWxmQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwOC41NSAxNzEuNTFMMzYyLjE4IDE1MC4yIDI5Ni43NyAxNy44MUMyOTAuODkgNS45OCAyNzkuNDIgMCAyNjcuOTUgMGMtMTEuNCAwLTIyLjc5IDUuOS0yOC42OSAxNy44MWwtNjUuNDMgMTMyLjM4LTE0Ni4zOCAyMS4yOWMtMjYuMjUgMy44LTM2Ljc3IDM2LjA5LTE3Ljc0IDU0LjU5bDEwNS44OSAxMDMtMjUuMDYgMTQ1LjQ4Qzg2Ljk4IDQ5NS4zMyAxMDMuNTcgNTEyIDEyMi4xNSA1MTJjNC45MyAwIDEwLTEuMTcgMTQuODctMy43NWwxMzAuOTUtNjguNjggMTMwLjk0IDY4LjdjNC44NiAyLjU1IDkuOTIgMy43MSAxNC44MyAzLjcxIDE4LjYgMCAzNS4yMi0xNi42MSAzMS42Ni0zNy40bC0yNS4wMy0xNDUuNDkgMTA1LjkxLTEwMi45OGMxOS4wNC0xOC41IDguNTItNTAuOC0xNy43My01NC42em0tMTIxLjc0IDEyMy4ybC0xOC4xMiAxNy42MiA0LjI4IDI0Ljg4IDE5LjUyIDExMy40NS0xMDIuMTMtNTMuNTktMjIuMzgtMTEuNzQuMDMtMzE3LjE5IDUxLjAzIDEwMy4yOSAxMS4xOCAyMi42MyAyNS4wMSAzLjY0IDExNC4yMyAxNi42My04Mi42NSA4MC4zOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhckhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBjLTExLjQgMC0yMi44IDUuOS0yOC43IDE3LjhMMTk0IDE1MC4yIDQ3LjkgMTcxLjRjLTI2LjIgMy44LTM2LjcgMzYuMS0xNy43IDU0LjZsMTA1LjcgMTAzLTI1IDE0NS41Yy00LjUgMjYuMSAyMyA0NiA0Ni40IDMzLjdMMjg4IDQzOS42VjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YXJPZkRhdmlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NjQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNS42OCAyNTZsNTMuMjEtODkuMzlDNDczLjMgMTQyLjQgNDU1LjQ4IDExMiA0MjYuODggMTEySDMxOS45NmwtNTUuOTUtOTMuOThDMjU2Ljg2IDYuMDEgMjQ0LjQzIDAgMjMyIDBzLTI0Ljg2IDYuMDEtMzIuMDEgMTguMDJMMTQ0LjA0IDExMkgzNy4xMWMtMjguNiAwLTQ2LjQyIDMwLjQtMzIuMDEgNTQuNjFMNTguMzIgMjU2IDUuMSAzNDUuMzlDLTkuMzEgMzY5LjYgOC41MSA0MDAgMzcuMTEgNDAwaDEwNi45M2w1NS45NSA5My45OEMyMDcuMTQgNTA1Ljk5IDIxOS41NyA1MTIgMjMyIDUxMnMyNC44Ni02LjAxIDMyLjAxLTE4LjAyTDMxOS45NiA0MDBoMTA2LjkzYzI4LjYgMCA0Ni40Mi0zMC40IDMyLjAxLTU0LjYxTDQwNS42OCAyNTZ6bS0xMi43OC04OGwtMTkuOCAzMy4yNkwzNTMuMyAxNjhoMzkuNnptLTUyLjM5IDg4bC01Mi4zOSA4OEgxNzUuODhsLTUyLjM5LTg4IDUyLjM4LTg4aDExMi4yNWw1Mi4zOSA4OHpNMjMyIDczLjcyTDI1NC43OSAxMTJoLTQ1LjU3TDIzMiA3My43MnpNNzEuMSAxNjhoMzkuNmwtMTkuOCAzMy4yNkw3MS4xIDE2OHptMCAxNzZsMTkuOC0zMy4yNkwxMTAuNyAzNDRINzEuMXpNMjMyIDQzOC4yOEwyMDkuMjEgNDAwaDQ1LjU3TDIzMiA0MzguMjh6TTM1My4yOSAzNDRsMTkuOC0zMy4yNkwzOTIuOSAzNDRoLTM5LjYxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFyT2ZMaWZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3MS45OSAzMzQuNDNMMzM2LjA2IDI1NmwxMzUuOTMtNzguNDNjNy42Ni00LjQyIDEwLjI4LTE0LjIgNS44Ni0yMS44NmwtMzIuMDItNTUuNDNjLTQuNDItNy42NS0xNC4yMS0xMC4yOC0yMS44Ny01Ljg2bC0xMzUuOTMgNzguNDNWMTZjMC04Ljg0LTcuMTctMTYtMTYuMDEtMTZoLTY0LjA0Yy04Ljg0IDAtMTYuMDEgNy4xNi0xNi4wMSAxNnYxNTYuODZMNTYuMDQgOTQuNDNjLTcuNjYtNC40Mi0xNy40NS0xLjc5LTIxLjg3IDUuODZMMi4xNSAxNTUuNzFjLTQuNDIgNy42NS0xLjggMTcuNDQgNS44NiAyMS44NkwxNDMuOTQgMjU2IDguMDEgMzM0LjQzYy03LjY2IDQuNDItMTAuMjggMTQuMjEtNS44NiAyMS44NmwzMi4wMiA1NS40M2M0LjQyIDcuNjUgMTQuMjEgMTAuMjcgMjEuODcgNS44NmwxMzUuOTMtNzguNDNWNDk2YzAgOC44NCA3LjE3IDE2IDE2LjAxIDE2aDY0LjA0YzguODQgMCAxNi4wMS03LjE2IDE2LjAxLTE2VjMzOS4xNGwxMzUuOTMgNzguNDNjNy42NiA0LjQyIDE3LjQ1IDEuOCAyMS44Ny01Ljg2bDMyLjAyLTU1LjQzYzQuNDItNy42NSAxLjgtMTcuNDMtNS44Ni0yMS44NXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTkuMyAxNy44TDE5NCAxNTAuMiA0Ny45IDE3MS41Yy0yNi4yIDMuOC0zNi43IDM2LjEtMTcuNyA1NC42bDEwNS43IDEwMy0yNSAxNDUuNWMtNC41IDI2LjMgMjMuMiA0NiA0Ni40IDMzLjdMMjg4IDQzOS42bDEzMC43IDY4LjdjMjMuMiAxMi4yIDUwLjktNy40IDQ2LjQtMzMuN2wtMjUtMTQ1LjUgMTA1LjctMTAzYzE5LTE4LjUgOC41LTUwLjgtMTcuNy01NC42TDM4MiAxNTAuMiAzMTYuNyAxNy44Yy0xMS43LTIzLjYtNDUuNi0yMy45LTU3LjQgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RlcEJhY2t3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDQ2OFY0NGMwLTYuNiA1LjQtMTIgMTItMTJoNDhjNi42IDAgMTIgNS40IDEyIDEydjE3Ni40bDE5NS41LTE4MUMzNTIuMSAyMi4zIDM4NCAzNi42IDM4NCA2NHYzODRjMCAyNy40LTMxLjkgNDEuNy01Mi41IDI0LjZMMTM2IDI5Mi43VjQ2OGMwIDYuNi01LjQgMTItMTIgMTJINzZjLTYuNiAwLTEyLTUuNC0xMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RlcEZvcndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDQ0djQyNGMwIDYuNi01LjQgMTItMTIgMTJoLTQ4Yy02LjYgMC0xMi01LjQtMTItMTJWMjkxLjZsLTE5NS41IDE4MUM5NS45IDQ4OS43IDY0IDQ3NS40IDY0IDQ0OFY2NGMwLTI3LjQgMzEuOS00MS43IDUyLjUtMjQuNkwzMTIgMjE5LjNWNDRjMC02LjYgNS40LTEyIDEyLTEyaDQ4YzYuNiAwIDEyIDUuNCAxMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RldGhvc2NvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ3LjEgMTEyYy0zNC4yLjUtNjIuMyAyOC40LTYzIDYyLjYtLjUgMjQuMyAxMi41IDQ1LjYgMzIgNTYuOFYzNDRjMCA1Ny4zLTUwLjIgMTA0LTExMiAxMDQtNjAgMC0xMDkuMi00NC4xLTExMS45LTk5LjJDMjY1IDMzMy44IDMyMCAyNjkuMiAzMjAgMTkyVjM2LjZjMC0xMS40LTguMS0yMS4zLTE5LjMtMjMuNUwyMzcuOC41Yy0xMy0yLjYtMjUuNiA1LjgtMjguMiAxOC44TDIwNi40IDM1Yy0yLjYgMTMgNS44IDI1LjYgMTguOCAyOC4ybDMwLjcgNi4xdjEyMS40YzAgNTIuOS00Mi4yIDk2LjctOTUuMSA5Ny4yLTUzLjQuNS05Ni45LTQyLjctOTYuOS05NlY2OS40bDMwLjctNi4xYzEzLTIuNiAyMS40LTE1LjIgMTguOC0yOC4ybC0zLjEtMTUuN0MxMDcuNyA2LjQgOTUuMS0yIDgyLjEuNkwxOS4zIDEzQzguMSAxNS4zIDAgMjUuMSAwIDM2LjZWMTkyYzAgNzcuMyA1NS4xIDE0MiAxMjguMSAxNTYuOEMxMzAuNyA0MzkuMiAyMDguNiA1MTIgMzA0IDUxMmM5NyAwIDE3Ni03NS40IDE3Ni0xNjhWMjMxLjRjMTkuMS0xMS4xIDMyLTMxLjcgMzItNTUuNCAwLTM1LjctMjkuMi02NC41LTY0LjktNjR6bS45IDgwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0aWNreU5vdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEyIDMyMGgxMzZWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjRDMTAuNyAzMiAwIDQyLjcgMCA1NnY0MDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMjY0VjM0NGMwLTEzLjIgMTAuOC0yNCAyNC0yNHptMTI5IDU1bC05OCA5OGMtNC41IDQuNS0xMC42IDctMTcgN2gtNlYzNTJoMTI4djYuMWMwIDYuMy0yLjUgMTIuNC03IDE2Ljl6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3BDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptOTYgMzI4YzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3B3YXRjaDIwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5OC41LDE5MC45MWwuNTktLjYxLDI2LjU5LTI2LjU4YTE2LDE2LDAsMCwwLDAtMjIuNjNMNDAzLDExOC40MWExNiwxNiwwLDAsMC0yMi42MywwbC0yNC42OCwyNC42OEEyMDYuNjgsMjA2LjY4LDAsMCwwLDI1Niw5OC41VjY0aDMyYTE2LDE2LDAsMCwwLDE2LTE2VjE2QTE2LDE2LDAsMCwwLDI4OCwwSDE2MGExNi4wNSwxNi4wNSwwLDAsMC0xNiwxNlY0OGExNi4wNSwxNi4wNSwwLDAsMCwxNiwxNmgzMlY5OC41QTIwNy45MiwyMDcuOTIsMCwwLDAsMTYuMDksMjk3LjU3QzEyLjY0LDQxMS41LDEwNi43Niw1MTAuMjIsMjIwLjcyLDUxMiwzMzcuMTMsNTEzLjc3LDQzMiw0MjAsNDMyLDMwNEEyMDYsMjA2LDAsMCwwLDM5OC41LDE5MC45MVpNMjA0LjM3LDM3Ny41NWE4LjIsOC4yLDAsMCwxLDguMzIsOC4wN3YyMi4zMWE4LjIsOC4yLDAsMCwxLTguMzIsOC4wN0gxMjEuNTJhMTYuNDYsMTYuNDYsMCwwLDEtMTYuNjEtMTcuNjJjMi43OC0zNS4yMiwxNC42Ny01Ny40MSwzOC40NS05MS4zNywyMC40Mi0yOS4xOSwyNy4xLTM3LjMyLDI3LjEtNjIuMzQsMC0xNi45Mi0xLjc5LTI0LjI3LTEyLjIxLTI0LjI3LTkuMzksMC0xMi42OSw3LjQtMTIuNjksMjIuNjh2NS4yM2E4LjIsOC4yLDAsMCwxLTguMzMsOC4wN2gtMjQuOWE4LjIsOC4yLDAsMCwxLTguMzMtOC4wN3YtNC4wN2MwLTI3LjMsOC40OC02MC4yNCw1Ni40My02MC4yNCw0MywwLDU1LjU3LDI1Ljg1LDU1LjU3LDYxLDAsMzUuNTgtMTIuNDQsNTEuMjEtMzQuMzUsODEuMzEtMTEuNTYsMTUtMjQuNjEsMzUuNTctMjYuNDEsNTEuMlpNMzQ0LDM1Mi4zMmMwLDM1LjE2LTEyLjMsNjMuNjgtNTcuMjMsNjMuNjhDMjQzLjE5LDQxNiwyMzIsMzg2LjQ4LDIzMiwzNTIuNTVWMjQ3LjIyYzAtNDAuNzMsMTkuNTgtNjMuMjIsNTYuMi02My4yMkMzMjUsMTg0LDM0NCwyMDYuNjQsMzQ0LDI0NS4zWk0yODcuODcsMjIxLjczYy05LjQxLDAtMTMuMjMsNy41LTEzLjIzLDIwVjM1Ny42OGMwLDEzLjExLDMuNTksMjAuNTksMTMuMjMsMjAuNTlzMTMtOCwxMy0yMS4yN1YyNDEuMDZDMzAwLjg5LDIyOS43OSwyOTcuODgsMjIxLjczLDI4Ny44NywyMjEuNzNaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3B3YXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIgMzA0YzAgMTE0LjktOTMuMSAyMDgtMjA4IDIwOFMxNiA0MTguOSAxNiAzMDRjMC0xMDQgNzYuMy0xOTAuMiAxNzYtMjA1LjVWNjRoLTI4Yy02LjYgMC0xMi01LjQtMTItMTJWMTJjMC02LjYgNS40LTEyIDEyLTEyaDEyMGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC0yOHYzNC41YzM3LjUgNS44IDcxLjcgMjEuNiA5OS43IDQ0LjZsMjcuNS0yNy41YzQuNy00LjcgMTIuMy00LjcgMTcgMGwyOC4zIDI4LjNjNC43IDQuNyA0LjcgMTIuMyAwIDE3bC0yOS40IDI5LjQtLjYuNkM0MTkuNyAyMjMuMyA0MzIgMjYyLjIgNDMyIDMwNHptLTE3NiAzNlYxODguNWMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJWMzQwYzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3JlQWx0U2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuODksMTIzLjYyLDUuNTEsMTQyLjJjLTE0LjIsMjEuMywxLDQ5LjgsMjYuNTksNDkuOGg3NC4yNlpNNTc2LDQxMy40MlYyMjRINTEyVjM2NEwzODQsMjY1VjIyNEgzMzAuOTJsLTQxLjQtMzJINjA4YzI1LjUsMCw0MC43LTI4LjUsMjYuNTktNDkuOGwtODUuMjktMTI4QTMyLjE4LDMyLjE4LDAsMCwwLDUyMi42LDBIMTE3LjQyQTMxLjg3LDMxLjg3LDAsMCwwLDkwLjgxLDE0LjJsLTEwLjY2LDE2TDQ1LjQ2LDMuMzhBMTYsMTYsMCwwLDAsMjMsNi4xOUwzLjM3LDMxLjQ2QTE2LDE2LDAsMCwwLDYuMTgsNTMuOTFMNTk0LjUzLDUwOC42M0ExNiwxNiwwLDAsMCw2MTcsNTA1LjgxbDE5LjY0LTI1LjI2YTE2LDE2LDAsMCwwLTIuODEtMjIuNDVaTTMyMCwzODRIMTI4VjIyNEg2NFY0ODBhMzIsMzIsMCwwLDAsMzIsMzJIMzUyYTMyLDMyLDAsMCwwLDMyLTMyVjQwNi41OWwtNjQtNDkuNDdaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3JlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAzODRIMTI4VjIyNEg2NHYyNTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoMjU2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIyNGgtNjR2MTYwem0zMTQuNi0yNDEuOGwtODUuMy0xMjhjLTYtOC45LTE2LTE0LjItMjYuNy0xNC4ySDExNy40Yy0xMC43IDAtMjAuNyA1LjMtMjYuNiAxNC4ybC04NS4zIDEyOGMtMTQuMiAyMS4zIDEgNDkuOCAyNi42IDQ5LjhINjA4YzI1LjUgMCA0MC43LTI4LjUgMjYuNi00OS44ek01MTIgNDk2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjI0aC02NHYyNzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3JlU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIxLjUxLDM4NFYyODQuMmExMTkuNDMsMTE5LjQzLDAsMCwxLTI4LDMuOCwxMjMuNDYsMTIzLjQ2LDAsMCwxLTE3LjEtMS4yLDExNC44OCwxMTQuODgsMCwwLDEtMTUuNTgtMy42VjQ4MGMwLDE3LjcsMTMuNTksMzIsMzAuNCwzMkg1MDUuNzVMMzQ4LjQyLDM4NFptLTI4LTEyOC4wOWMyNS4xLDAsNDcuMjktMTAuNzIsNjQtMjcuMjRMMjQsMTIwLjA1Yy0zMC41Miw1My4zOS0yLjQ1LDEyNi41Myw1Ni40OSwxMzVBOTUuNjgsOTUuNjgsMCwwLDAsOTMuNDgsMjU1LjkxWk02MDIuMTMsNDU4LjA5LDU0Ny4yLDQxMy40MVYyODMuMmE5My41LDkzLjUsMCwwLDEtMTUuNTcsMy42LDEyNy4zMSwxMjcuMzEsMCwwLDEtMTcuMjksMS4yLDExNC44OSwxMTQuODksMCwwLDEtMjgtMy44djc5LjY4TDM0OC41MiwyNTEuNzdhODguMDYsODguMDYsMCwwLDAsMjUuNDEsNC4xNGMyOC4xMSwwLDUzLTEzLDcwLjExLTMzLjExLDE3LjE5LDIwLjExLDQyLjA4LDMzLjExLDcwLjExLDMzLjExYTk0LjMxLDk0LjMxLDAsMCwwLDEzLS45MWM1OS42Ni04LjQxLDg4LTgyLjgsNTYuMDYtMTM2LjRMNTIxLjU1LDE1QTMwLjEsMzAuMSwwLDAsMCw0OTUuODEsMEgxMTJBMzAuMTEsMzAuMTEsMCwwLDAsODYuMjcsMTVMNzYuODgsMzAuNzgsNDMuMTksMy4zOEExNC42OCwxNC42OCwwLDAsMCwyMS44Niw2LjE5TDMuMiwzMS40NUExNi41OCwxNi41OCwwLDAsMCw1Ljg3LDUzLjkxTDU2NC44MSw1MDguNjNhMTQuNjksMTQuNjksMCwwLDAsMjEuMzMtMi44MmwxOC42Ni0yNS4yNkExNi41OCwxNi41OCwwLDAsMCw2MDIuMTMsNDU4LjA5WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjE2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDIgMTE4LjZMNTM3LjEgMTVDNTMxLjMgNS43IDUyMSAwIDUxMCAwSDEwNkM5NSAwIDg0LjcgNS43IDc4LjkgMTVMMTQgMTE4LjZjLTMzLjUgNTMuNS0zLjggMTI3LjkgNTguOCAxMzYuNCA0LjUuNiA5LjEuOSAxMy43LjkgMjkuNiAwIDU1LjgtMTMgNzMuOC0zMy4xIDE4IDIwLjEgNDQuMyAzMy4xIDczLjggMzMuMSAyOS42IDAgNTUuOC0xMyA3My44LTMzLjEgMTggMjAuMSA0NC4zIDMzLjEgNzMuOCAzMy4xIDI5LjYgMCA1NS44LTEzIDczLjgtMzMuMSAxOC4xIDIwLjEgNDQuMyAzMy4xIDczLjggMzMuMSA0LjcgMCA5LjItLjMgMTMuNy0uOSA2Mi44LTguNCA5Mi42LTgyLjggNTktMTM2LjR6TTUyOS41IDI4OGMtMTAgMC0xOS45LTEuNS0yOS41LTMuOFYzODRIMTE2di05OS44Yy05LjYgMi4yLTE5LjUgMy44LTI5LjUgMy44LTYgMC0xMi4xLS40LTE4LTEuMi01LjYtLjgtMTEuMS0yLjEtMTYuNC0zLjZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMlYyODMuMmMtNS40IDEuNi0xMC44IDIuOS0xNi40IDMuNi02LjEuOC0xMi4xIDEuMi0xOC4yIDEuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RyZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDEyOGg0MTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiAzMiAwIDM5LjE2IDAgNDh2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZ6bTQ4MCA4MEg4MGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDE2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnptLTY0IDE3NkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDE2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RyZWV0VmlldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjcuOSAzMjkuNzZjLTQuNjIgNS4zLTkuNzggMTAuMS0xNS45IDEzLjY1djIyLjk0YzY2LjUyIDkuMzQgMTEyIDI4LjA1IDExMiA0OS42NSAwIDMwLjkzLTkzLjEyIDU2LTIwOCA1NlM0OCA0NDYuOTMgNDggNDE2YzAtMjEuNiA0NS40OC00MC4zIDExMi00OS42NXYtMjIuOTRjLTYuMTItMy41NS0xMS4yOC04LjM1LTE1LjktMTMuNjVDNTguODcgMzQ1LjM0IDAgMzc4LjA1IDAgNDE2YzAgNTMuMDIgMTE0LjYyIDk2IDI1NiA5NnMyNTYtNDIuOTggMjU2LTk2YzAtMzcuOTUtNTguODctNzAuNjYtMTQ0LjEtODYuMjR6TTI1NiAxMjhjMzUuMzUgMCA2NC0yOC42NSA2NC02NFMyOTEuMzUgMCAyNTYgMHMtNjQgMjguNjUtNjQgNjQgMjguNjUgNjQgNjQgNjR6bS02NCAxOTJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4aC0xMS44Yy0xMS4wNyA1LjAzLTIzLjI2IDgtMzYuMiA4cy0yNS4xMy0yLjk3LTM2LjItOEgyMDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RyaWtldGhyb3VnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMjI0SDI5My45bC04Ny4xNy0yNi44M0E0My41NSA0My41NSAwIDAgMSAyMTkuNTUgMTEyaDY2Ljc5QTQ5Ljg5IDQ5Ljg5IDAgMCAxIDMzMSAxMzkuNThhMTYgMTYgMCAwIDAgMjEuNDYgNy4xNWw0Mi45NC0yMS40N2ExNiAxNiAwIDAgMCA3LjE2LTIxLjQ2bC0uNTMtMUExMjggMTI4IDAgMCAwIDI4Ny41MSAzMmgtNjhhMTIzLjY4IDEyMy42OCAwIDAgMC0xMjMgMTM1LjY0YzIgMjAuODkgMTAuMSAzOS44MyAyMS43OCA1Ni4zNkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0ODBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tMTgwLjI0IDk2QTQzIDQzIDAgMCAxIDMzNiAzNTYuNDUgNDMuNTkgNDMuNTkgMCAwIDEgMjkyLjQ1IDQwMGgtNjYuNzlBNDkuODkgNDkuODkgMCAwIDEgMTgxIDM3Mi40MmExNiAxNiAwIDAgMC0yMS40Ni03LjE1bC00Mi45NCAyMS40N2ExNiAxNiAwIDAgMC03LjE2IDIxLjQ2bC41MyAxQTEyOCAxMjggMCAwIDAgMjI0LjQ5IDQ4MGg2OGExMjMuNjggMTIzLjY4IDAgMCAwIDEyMy0xMzUuNjQgMTE0LjI1IDExNC4yNSAwIDAgMC01LjM0LTI0LjM2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHJvb3B3YWZlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODguMTIgMjEwLjc0TDE0Mi44NiAyNTZsNDUuMjUgNDUuMjVMMjMzLjM3IDI1NmwtNDUuMjUtNDUuMjZ6bTExMy4xMy0yMi42MkwyNTYgMTQyLjg2bC00NS4yNSA0NS4yNUwyNTYgMjMzLjM3bDQ1LjI1LTQ1LjI1em0tOTAuNSAxMzUuNzZMMjU2IDM2OS4xNGw0NS4yNi00NS4yNkwyNTYgMjc4LjYzbC00NS4yNSA0NS4yNXpNMjU2IDBDMTE0LjYyIDAgMCAxMTQuNjIgMCAyNTZzMTE0LjYyIDI1NiAyNTYgMjU2IDI1Ni0xMTQuNjIgMjU2LTI1NlMzOTcuMzggMCAyNTYgMHptMTg2LjY4IDI5NS42bC0xMS4zMSAxMS4zMWMtMy4xMiAzLjEyLTguMTkgMy4xMi0xMS4zMSAwbC0yOC4yOS0yOC4yOS00NS4yNSA0NS4yNSAzMy45NCAzMy45NCAxNi45Ny0xNi45N2MzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMTEuMzEgMTEuMzFjMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxbC0xNi45NyAxNi45NyAxNi45NyAxNi45N2MzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFsLTExLjMxIDExLjMxYy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTE2Ljk3LTE2Ljk3LTE2Ljk3IDE2Ljk3Yy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTExLjMxLTExLjMxYy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMTYuOTctMTYuOTctMzMuOTQtMzMuOTQtNDUuMjYgNDUuMjYgMjguMjkgMjguMjljMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxbC0xMS4zMSAxMS4zMWMtMy4xMiAzLjEyLTguMTkgMy4xMi0xMS4zMSAwTDI1NiA0MTQuMzlsLTI4LjI5IDI4LjI5Yy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTExLjMxLTExLjMxYy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMjguMjktMjguMjktNDUuMjUtNDUuMjYtMzMuOTQgMzMuOTQgMTYuOTcgMTYuOTdjMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxbC0xMS4zMSAxMS4zMWMtMy4xMiAzLjEyLTguMTkgMy4xMi0xMS4zMSAwbC0xNi45Ny0xNi45Ny0xNi45NyAxNi45N2MtMy4xMiAzLjEyLTguMTkgMy4xMi0xMS4zMSAwbC0xMS4zMS0xMS4zMWMtMy4xMi0zLjEyLTMuMTItOC4xOSAwLTExLjMxbDE2Ljk3LTE2Ljk3LTE2Ljk3LTE2Ljk3Yy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMTEuMzEtMTEuMzFjMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDE2Ljk3IDE2Ljk3IDMzLjk0LTMzLjk0LTQ1LjI1LTQ1LjI1LTI4LjI5IDI4LjI5Yy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBMNjkuMzIgMjk1LjZjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMUw5Ny42MSAyNTZsLTI4LjI5LTI4LjI5Yy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMTEuMzEtMTEuMzFjMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDI4LjI5IDI4LjI5IDQ1LjI1LTQ1LjI2LTMzLjk0LTMzLjk0LTE2Ljk3IDE2Ljk3Yy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTExLjMxLTExLjMxYy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMTYuOTctMTYuOTctMTYuOTctMTYuOTdjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxMS4zMS0xMS4zMWMzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMTYuOTcgMTYuOTcgMTYuOTctMTYuOTdjMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDExLjMxIDExLjMxYzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtMTYuOTcgMTYuOTcgMzMuOTQgMzMuOTQgNDUuMjYtNDUuMjUtMjguMjktMjguMjljLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxMS4zMS0xMS4zMWMzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBMMjU2IDk3LjYxbDI4LjI5LTI4LjI5YzMuMTItMy4xMiA4LjE5LTMuMTIgMTEuMzEgMGwxMS4zMSAxMS4zMWMzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFsLTI4LjI5IDI4LjI5IDQ1LjI2IDQ1LjI1IDMzLjk0LTMzLjk0LTE2Ljk3LTE2Ljk3Yy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMTEuMzEtMTEuMzFjMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDE2Ljk3IDE2Ljk3IDE2Ljk3LTE2Ljk3YzMuMTItMy4xMiA4LjE5LTMuMTIgMTEuMzEgMGwxMS4zMSAxMS4zMWMzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFsLTE2Ljk3IDE2Ljk3IDE2Ljk3IDE2Ljk3YzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtMTEuMzEgMTEuMzFjLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMGwtMTYuOTctMTYuOTctMzMuOTQgMzMuOTQgNDUuMjUgNDUuMjYgMjguMjktMjguMjljMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDExLjMxIDExLjMxYzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMUw0MTQuMzkgMjU2bDI4LjI5IDI4LjI4YTguMDE1IDguMDE1IDAgMCAxIDAgMTEuMzJ6TTI3OC42MyAyNTZsNDUuMjYgNDUuMjVMMzY5LjE0IDI1NmwtNDUuMjUtNDUuMjZMMjc4LjYzIDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Vic2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiA0NDhoLTE2VjMwNGExNiAxNiAwIDAgMC0xNi0xNmgtNDhhMTYgMTYgMCAwIDAtMTQuMjkgOC44M2wtMTYgMzJBMTYgMTYgMCAwIDAgNDAwIDM1MmgxNnY5NmgtMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoOTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek0zMzYgNjRoLTY3YTE2IDE2IDAgMCAwLTEzLjE0IDYuODdsLTc5LjkgMTE1LTc5LjktMTE1QTE2IDE2IDAgMCAwIDgzIDY0SDE2QTE2IDE2IDAgMCAwIDAgODB2NDhhMTYgMTYgMCAwIDAgMTYgMTZoMzMuNDhsNzcuODEgMTEyLTc3LjgxIDExMkgxNmExNiAxNiAwIDAgMC0xNiAxNnY0OGExNiAxNiAwIDAgMCAxNiAxNmg2N2ExNiAxNiAwIDAgMCAxMy4xNC02Ljg3bDc5LjktMTE1IDc5LjkgMTE1QTE2IDE2IDAgMCAwIDI2OSA0NDhoNjdhMTYgMTYgMCAwIDAgMTYtMTZ2LTQ4YTE2IDE2IDAgMCAwLTE2LTE2aC0zMy40OGwtNzcuODEtMTEyIDc3LjgxLTExMkgzMzZhMTYgMTYgMCAwIDAgMTYtMTZWODBhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1YndheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZ2MjU2YzAgNTEuODE1LTYxLjYyNCA5Ni0xMzAuMDIyIDk2bDYyLjk4IDQ5LjcyMUMzODYuOTA1IDUwMi40MTcgMzgzLjU2MiA1MTIgMzc2IDUxMkg3MmMtNy41NzggMC0xMC44OTItOS41OTQtNC45NTctMTQuMjc5TDEzMC4wMjIgNDQ4QzYxLjgyIDQ0OCAwIDQwMy45NTQgMCAzNTJWOTZDMCA0Mi45ODEgNjQgMCAxMjggMGgxOTJjNjUgMCAxMjggNDIuOTgxIDEyOCA5NnpNMjAwIDIzMlYxMjBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDcyYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTEyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0em0yMDAgMFYxMjBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI3MmMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djExMmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTA0YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHptLTQ4IDU2Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4LTIxLjQ5LTQ4LTQ4LTQ4em0tMjU2IDBjLTI2LjUxIDAtNDggMjEuNDktNDggNDhzMjEuNDkgNDggNDggNDggNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1aXRjYXNlUm9sbGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgMTYwSDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djIyNGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDE2djE2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmgxMjh2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2aDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMjA4YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS0xNiAyMTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgyNDBjNC40MiAwIDggMy41OCA4IDh2MTZ6bTAtOTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgyNDBjNC40MiAwIDggMy41OCA4IDh2MTZ6TTE0NCA0OGg5NnY4MGg0OFY0OGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4aC05NmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY4MGg0OFY0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VpdGNhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDQ4MGgyNTZWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhIMTc2Yy0yNi41IDAtNDggMjEuNS00OCA0OHY0MDB6bTY0LTM4NGgxMjh2MzJIMTkyVjk2em0zMjAgODB2MjU2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4aC00OFYxMjhoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTk2IDQ4MEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTc2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4djM1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAxNjBjLTUyLjkgMC05NiA0My4xLTk2IDk2czQzLjEgOTYgOTYgOTYgOTYtNDMuMSA5Ni05Ni00My4xLTk2LTk2LTk2em0yNDYuNCA4MC41bC05NC43LTQ3LjMgMzMuNS0xMDAuNGM0LjUtMTMuNi04LjQtMjYuNS0yMS45LTIxLjlsLTEwMC40IDMzLjUtNDcuNC05NC44Yy02LjQtMTIuOC0yNC42LTEyLjgtMzEgMGwtNDcuMyA5NC43TDkyLjcgNzAuOGMtMTMuNi00LjUtMjYuNSA4LjQtMjEuOSAyMS45bDMzLjUgMTAwLjQtOTQuNyA0Ny40Yy0xMi44IDYuNC0xMi44IDI0LjYgMCAzMWw5NC43IDQ3LjMtMzMuNSAxMDAuNWMtNC41IDEzLjYgOC40IDI2LjUgMjEuOSAyMS45bDEwMC40LTMzLjUgNDcuMyA5NC43YzYuNCAxMi44IDI0LjYgMTIuOCAzMSAwbDQ3LjMtOTQuNyAxMDAuNCAzMy41YzEzLjYgNC41IDI2LjUtOC40IDIxLjktMjEuOWwtMzMuNS0xMDAuNCA5NC43LTQ3LjNjMTMtNi41IDEzLTI0LjcuMi0zMS4xem0tMTU1LjkgMTA2Yy00OS45IDQ5LjktMTMxLjEgNDkuOS0xODEgMC00OS45LTQ5LjktNDkuOS0xMzEuMSAwLTE4MSA0OS45LTQ5LjkgMTMxLjEtNDkuOSAxODEgMCA0OS45IDQ5LjkgNDkuOSAxMzEuMSAwIDE4MXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VwZXJzY3JpcHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDE2MGgtMTZWMTZhMTYgMTYgMCAwIDAtMTYtMTZoLTQ4YTE2IDE2IDAgMCAwLTE0LjI5IDguODNsLTE2IDMyQTE2IDE2IDAgMCAwIDQwMCA2NGgxNnY5NmgtMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoOTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek0zMzYgNjRoLTY3YTE2IDE2IDAgMCAwLTEzLjE0IDYuODdsLTc5LjkgMTE1LTc5LjktMTE1QTE2IDE2IDAgMCAwIDgzIDY0SDE2QTE2IDE2IDAgMCAwIDAgODB2NDhhMTYgMTYgMCAwIDAgMTYgMTZoMzMuNDhsNzcuODEgMTEyLTc3LjgxIDExMkgxNmExNiAxNiAwIDAgMC0xNiAxNnY0OGExNiAxNiAwIDAgMCAxNiAxNmg2N2ExNiAxNiAwIDAgMCAxMy4xNC02Ljg3bDc5LjktMTE1IDc5LjkgMTE1QTE2IDE2IDAgMCAwIDI2OSA0NDhoNjdhMTYgMTYgMCAwIDAgMTYtMTZ2LTQ4YTE2IDE2IDAgMCAwLTE2LTE2aC0zMy40OGwtNzcuODEtMTEyIDc3LjgxLTExMkgzMzZhMTYgMTYgMCAwIDAgMTYtMTZWODBhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1cnByaXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTEzNiAyMDhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzJ6bTExMiAyMDhjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjQgNjQgMjguNyA2NCA2NC0yOC43IDY0LTY0IDY0em04MC0xNzZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTd2F0Y2hib29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzNC42NiwxNjcuNzFoMEwzNDQuNSw3Ny4zNmEzMS44MywzMS44MywwLDAsMC00NS0uMDdoMGwtLjA3LjA3TDIyNCwxNTIuODhWNDI0TDQzNC42NiwyMTIuOUEzMiwzMiwwLDAsMCw0MzQuNjYsMTY3LjcxWk00ODAsMzIwSDM3My4wOUwxODYuNjgsNTA2LjUxYy0yLjA2LDIuMDctNC41LDMuNTgtNi42OCw1LjQ5SDQ4MGEzMiwzMiwwLDAsMCwzMi0zMlYzNTJBMzIsMzIsMCwwLDAsNDgwLDMyMFpNMTkyLDMyQTMyLDMyLDAsMCwwLDE2MCwwSDMyQTMyLDMyLDAsMCwwLDAsMzJWNDE2YTk2LDk2LDAsMCwwLDE5MiwwWk05Niw0NDBhMjQsMjQsMCwxLDEsMjQtMjRBMjQsMjQsMCwwLDEsOTYsNDQwWm0zMi0xODRINjRWMTkyaDY0Wm0wLTEyOEg2NFY2NGg2NFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3dpbW1lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODkuNjEgMzEwLjU4YzMuNTQgMy4yNiAxNS4yNyA5LjQyIDM0LjM5IDkuNDJzMzAuODYtNi4xNiAzNC4zOS05LjQyYzE2LjAyLTE0Ljc3IDM0LjUtMjIuNTggNTMuNDYtMjIuNThoMTYuM2MxOC45NiAwIDM3LjQ1IDcuODEgNTMuNDYgMjIuNTggMy41NCAzLjI2IDE1LjI3IDkuNDIgMzQuMzkgOS40MnMzMC44Ni02LjE2IDM0LjM5LTkuNDJjMTQuODYtMTMuNzEgMzEuODgtMjEuMTIgNDkuMzktMjIuMTZsLTExMi44NC04MC42IDE4LTEyLjg2YzMuNjQtMi41OCA4LjI4LTMuNTIgMTIuNjItMi42MWwxMDAuMzUgMjEuNTNjMjUuOTEgNS41MyA1MS40NC0xMC45NyA1Ny0zNi44OCA1LjU1LTI1LjkyLTEwLjk1LTUxLjQ0LTM2Ljg4LTU3TDQzNy42OCA5OC40N2MtMzAuNzMtNi41OC02My4wMi4xMi04OC41NiAxOC4zOGwtODAuMDIgNTcuMTdjLTEwLjM4IDcuMzktMTkuMzYgMTYuNDQtMjYuNzIgMjYuOTRMMTczLjc1IDI5OWM1LjQ3IDMuMjMgMTAuODIgNi45MyAxNS44NiAxMS41OHpNNjI0IDM1MmgtMTZjLTI2LjA0IDAtNDUuOC04LjQyLTU2LjA5LTE3LjktOC45LTguMjEtMTkuNjYtMTQuMS0zMS43Ny0xNC4xaC0xNi4zYy0xMi4xMSAwLTIyLjg3IDUuODktMzEuNzcgMTQuMUM0NjEuOCAzNDMuNTggNDQyLjA0IDM1MiA0MTYgMzUycy00NS44LTguNDItNTYuMDktMTcuOWMtOC45LTguMjEtMTkuNjYtMTQuMS0zMS43Ny0xNC4xaC0xNi4zYy0xMi4xMSAwLTIyLjg3IDUuODktMzEuNzcgMTQuMUMyNjkuOCAzNDMuNTggMjUwLjA0IDM1MiAyMjQgMzUycy00NS44LTguNDItNTYuMDktMTcuOWMtOC45LTguMjEtMTkuNjYtMTQuMS0zMS43Ny0xNC4xaC0xNi4zYy0xMi4xMSAwLTIyLjg3IDUuODktMzEuNzcgMTQuMUM3Ny44IDM0My41OCA1OC4wNCAzNTIgMzIgMzUySDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmMzOC42MiAwIDcyLjcyLTEyLjE5IDk2LTMxLjg0IDIzLjI4IDE5LjY2IDU3LjM4IDMxLjg0IDk2IDMxLjg0czcyLjcyLTEyLjE5IDk2LTMxLjg0YzIzLjI4IDE5LjY2IDU3LjM4IDMxLjg0IDk2IDMxLjg0czcyLjcyLTEyLjE5IDk2LTMxLjg0YzIzLjI4IDE5LjY2IDU3LjM4IDMxLjg0IDk2IDMxLjg0aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnptLTUxMi05NmM0NC4xOCAwIDgwLTM1LjgyIDgwLTgwcy0zNS44Mi04MC04MC04MC04MCAzNS44Mi04MCA4MCAzNS44MiA4MCA4MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3dpbW1pbmdQb29sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCA0MTZoLTE2Yy0yNi4wNCAwLTQ1LjgtOC40Mi01Ni4wOS0xNy45LTguOS04LjIxLTE5LjY2LTE0LjEtMzEuNzctMTQuMWgtMTYuM2MtMTIuMTEgMC0yMi44NyA1Ljg5LTMxLjc3IDE0LjFDNDYxLjggNDA3LjU4IDQ0Mi4wNCA0MTYgNDE2IDQxNnMtNDUuOC04LjQyLTU2LjA5LTE3LjljLTguOS04LjIxLTE5LjY2LTE0LjEtMzEuNzctMTQuMWgtMTYuM2MtMTIuMTEgMC0yMi44NyA1Ljg5LTMxLjc3IDE0LjFDMjY5LjggNDA3LjU4IDI1MC4wNCA0MTYgMjI0IDQxNnMtNDUuOC04LjQyLTU2LjA5LTE3LjljLTguOS04LjIxLTE5LjY2LTE0LjEtMzEuNzctMTQuMWgtMTYuM2MtMTIuMTEgMC0yMi44NyA1Ljg5LTMxLjc3IDE0LjFDNzcuOCA0MDcuNTggNTguMDQgNDE2IDMyIDQxNkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjMzguNjIgMCA3Mi43Mi0xMi4xOSA5Ni0zMS44NCAyMy4yOCAxOS42NiA1Ny4zOCAzMS44NCA5NiAzMS44NHM3Mi43Mi0xMi4xOSA5Ni0zMS44NGMyMy4yOCAxOS42NiA1Ny4zOCAzMS44NCA5NiAzMS44NHM3Mi43Mi0xMi4xOSA5Ni0zMS44NGMyMy4yOCAxOS42NiA1Ny4zOCAzMS44NCA5NiAzMS44NGgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bS00MDAtMzJ2LTk2aDE5MnY5NmMxOS4xMiAwIDMwLjg2LTYuMTYgMzQuMzktOS40MiA5LjE3LTguNDYgMTkuMi0xNC4zNCAyOS42MS0xOC4wN1YxMjhjMC0xNy42NCAxNC4zNi0zMiAzMi0zMnMzMiAxNC4zNiAzMiAzMnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC01Mi45NC00My4wNi05Ni05Ni05NnMtOTYgNDMuMDYtOTYgOTZ2OTZIMjI0di05NmMwLTE3LjY0IDE0LjM2LTMyIDMyLTMyczMyIDE0LjM2IDMyIDMydjE2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTUyLjk0LTQzLjA2LTk2LTk2LTk2cy05NiA0My4wNi05NiA5NnYyMjguNWMxMC40MSAzLjczIDIwLjQ0IDkuNjIgMjkuNjEgMTguMDcgMy41MyAzLjI3IDE1LjI3IDkuNDMgMzQuMzkgOS40M3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3luYWdvZ3VlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcwIDE5Ni41MUw2LjY3IDI2OC4yOUEyNi42NDMgMjYuNjQzIDAgMCAwIDAgMjg1LjkzVjUxMmgxMjhWMjM5LjU4bC0zOC00My4wN2MtNS4zMS02LjAxLTE0LjY5LTYuMDEtMjAgMHptNTYzLjMzIDcxLjc4TDU3MCAxOTYuNTFjLTUuMzEtNi4wMi0xNC42OS02LjAyLTIwIDBsLTM4IDQzLjA3VjUxMmgxMjhWMjg1LjkzYzAtNi41LTIuMzctMTIuNzctNi42Ny0xNy42NHpNMzM5Ljk5IDcuMDFjLTExLjY5LTkuMzUtMjguMjktOS4zNS0zOS45OCAwbC0xMjggMTAyLjRBMzIuMDA1IDMyLjAwNSAwIDAgMCAxNjAgMTM0LjRWNTEyaDk2di05Mi41N2MwLTMxLjg4IDIxLjc4LTYxLjQzIDUzLjI1LTY2LjU1QzM0OS4zNCAzNDYuMzUgMzg0IDM3Ny4xMyAzODQgNDE2djk2aDk2VjEzNC40YzAtOS43Mi00LjQyLTE4LjkyLTEyLjAxLTI0Ljk5bC0xMjgtMTAyLjR6bTUyLjA3IDIxNS41NWMxLjk4IDMuMTUtLjI5IDcuMjQtNCA3LjI0aC0zOC45NEwzMjQgMjY5Ljc5Yy0xLjg1IDIuOTUtNi4xNSAyLjk1LTggMGwtMjUuMTItMzkuOThoLTM4Ljk0Yy0zLjcyIDAtNS45OC00LjA5LTQtNy4yNGwxOS4yLTMwLjU2LTE5LjItMzAuNTZjLTEuOTgtMy4xNS4yOS03LjI0IDQtNy4yNGgzOC45NGwyNS4xMi00MGMxLjg1LTIuOTUgNi4xNS0yLjk1IDggMGwyNS4xMiAzOS45OGgzOC45NWMzLjcxIDAgNS45OCA0LjA5IDQgNy4yNEwzNzIuODcgMTkybDE5LjE5IDMwLjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTeW5jQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3MC43MiAxMzMuMjhDMzM5LjQ1OCAxMDQuMDA4IDI5OC44ODggODcuOTYyIDI1NS44NDggODhjLTc3LjQ1OC4wNjgtMTQ0LjMyOCA1My4xNzgtMTYyLjc5MSAxMjYuODUtMS4zNDQgNS4zNjMtNi4xMjIgOS4xNS0xMS42NTEgOS4xNUgyNC4xMDNjLTcuNDk4IDAtMTMuMTk0LTYuODA3LTExLjgwNy0xNC4xNzZDMzMuOTMzIDk0LjkyNCAxMzQuODEzIDggMjU2IDhjNjYuNDQ4IDAgMTI2Ljc5MSAyNi4xMzYgMTcxLjMxNSA2OC42ODVMNDYzLjAzIDQwLjk3QzQ3OC4xNDkgMjUuODUxIDUwNCAzNi41NTkgNTA0IDU3Ljk0MVYxOTJjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDM0NS45NDFjLTIxLjM4MiAwLTMyLjA5LTI1Ljg1MS0xNi45NzEtNDAuOTcxbDQxLjc1LTQxLjc0OXpNMzIgMjk2aDEzNC4wNTljMjEuMzgyIDAgMzIuMDkgMjUuODUxIDE2Ljk3MSA0MC45NzFsLTQxLjc1IDQxLjc1YzMxLjI2MiAyOS4yNzMgNzEuODM1IDQ1LjMxOSAxMTQuODc2IDQ1LjI4IDc3LjQxOC0uMDcgMTQ0LjMxNS01My4xNDQgMTYyLjc4Ny0xMjYuODQ5IDEuMzQ0LTUuMzYzIDYuMTIyLTkuMTUgMTEuNjUxLTkuMTVoNTcuMzA0YzcuNDk4IDAgMTMuMTk0IDYuODA3IDExLjgwNyAxNC4xNzZDNDc4LjA2NyA0MTcuMDc2IDM3Ny4xODcgNTA0IDI1NiA1MDRjLTY2LjQ0OCAwLTEyNi43OTEtMjYuMTM2LTE3MS4zMTUtNjguNjg1TDQ4Ljk3IDQ3MS4wM0MzMy44NTEgNDg2LjE0OSA4IDQ3NS40NDEgOCA0NTQuMDU5VjMyMGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN5bmMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQwLjY1IDEyLjU3bDQgODIuNzdBMjQ3LjE2IDI0Ny4xNiAwIDAgMCAyNTUuODMgOEMxMzQuNzMgOCAzMy45MSA5NC45MiAxMi4yOSAyMDkuODJBMTIgMTIgMCAwIDAgMjQuMDkgMjI0aDQ5LjA1YTEyIDEyIDAgMCAwIDExLjY3LTkuMjYgMTc1LjkxIDE3NS45MSAwIDAgMSAzMTctNTYuOTRsLTEwMS40Ni00Ljg2YTEyIDEyIDAgMCAwLTEyLjU3IDEydjQ3LjQxYTEyIDEyIDAgMCAwIDEyIDEySDUwMGExMiAxMiAwIDAgMCAxMi0xMlYxMmExMiAxMiAwIDAgMC0xMi0xMmgtNDcuMzdhMTIgMTIgMCAwIDAtMTEuOTggMTIuNTd6TTI1NS44MyA0MzJhMTc1LjYxIDE3NS42MSAwIDAgMS0xNDYtNzcuOGwxMDEuOCA0Ljg3YTEyIDEyIDAgMCAwIDEyLjU3LTEydi00Ny40YTEyIDEyIDAgMCAwLTEyLTEySDEyYTEyIDEyIDAgMCAwLTEyIDEyVjUwMGExMiAxMiAwIDAgMCAxMiAxMmg0Ny4zNWExMiAxMiAwIDAgMCAxMi0xMi42bC00LjE1LTgyLjU3QTI0Ny4xNyAyNDcuMTcgMCAwIDAgMjU1LjgzIDUwNGMxMjEuMTEgMCAyMjEuOTMtODYuOTIgMjQzLjU1LTIwMS44MmExMiAxMiAwIDAgMC0xMS44LTE0LjE4aC00OS4wNWExMiAxMiAwIDAgMC0xMS42NyA5LjI2QTE3NS44NiAxNzUuODYgMCAwIDEgMjU1LjgzIDQzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3lyaW5nZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDEuNSAxNzQuOGw1NS43IDU1LjhjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtMTEuMyAxMS4zYy0zLjEgMy4xLTguMiAzLjEtMTEuMyAwbC01NS43LTU1LjgtNDUuMyA0NS4zIDU1LjggNTUuOGMzLjEgMy4xIDMuMSA4LjIgMCAxMS4zbC0xMS4zIDExLjNjLTMuMSAzLjEtOC4yIDMuMS0xMS4zIDBMMTExIDI2NS4ybC0yNi40IDI2LjRjLTE3LjMgMTcuMy0yNS42IDQxLjEtMjMgNjUuNGw3LjEgNjMuNkwyLjMgNDg3Yy0zLjEgMy4xLTMuMSA4LjIgMCAxMS4zbDExLjMgMTEuM2MzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDY2LjMtNjYuMyA2My42IDcuMWMyMy45IDIuNiA0Ny45LTUuNCA2NS40LTIzbDE4MS45LTE4MS45LTEzNS43LTEzNS43LTY0LjkgNjV6bTMwOC4yLTkzLjNMNDMwLjUgMi4zYy0zLjEtMy4xLTguMi0zLjEtMTEuMyAwbC0xMS4zIDExLjNjLTMuMSAzLjEtMy4xIDguMiAwIDExLjNsMjguMyAyOC4zLTQ1LjMgNDUuMy01Ni42LTU2LjYtMTctMTdjLTMuMS0zLjEtOC4yLTMuMS0xMS4zIDBsLTMzLjkgMzMuOWMtMy4xIDMuMS0zLjEgOC4yIDAgMTEuM2wxNyAxN0w0MjQuOCAyMjNsMTcgMTdjMy4xIDMuMSA4LjIgMy4xIDExLjMgMGwzMy45LTM0YzMuMS0zLjEgMy4xLTguMiAwLTExLjNsLTczLjUtNzMuNSA0NS4zLTQ1LjMgMjguMyAyOC4zYzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsMTEuMy0xMS4zYzMuMS0zLjIgMy4xLTguMiAwLTExLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxlVGVubmlzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5Ni4yIDI5Ni41QzUyNy43IDIxOC43IDUxMiAxMjYuMiA0NDkgNjMuMSAzNjUuMS0yMSAyMjktMjEgMTQ1LjEgNjMuMWwtNTYgNTYuMSAyMTEuNSAyMTEuNWM0Ni4xLTYyLjEgMTMxLjUtNzcuNCAxOTUuNi0zNC4yem0tMjE3LjkgNzkuN0w1Ny45IDE1NS45Yy0yNy4zIDQ1LjMtMjEuNyAxMDUgMTcuMyAxNDQuMWwzNC41IDM0LjZMNi43IDQyNGMtOC42IDcuNS05LjEgMjAuNy0xIDI4LjhsNTMuNCA1My41YzggOC4xIDIxLjIgNy42IDI4LjctMUwxNzcuMSA0MDJsMzUuNyAzNS43YzE5LjcgMTkuNyA0NC42IDMwLjUgNzAuMyAzMy4zLTcuMS0xNy0xMS0zNS42LTExLTU1LjEtLjEtMTMuOCAyLjUtMjcgNi4yLTM5Ljd6TTQxNiAzMjBjLTUzIDAtOTYgNDMtOTYgOTZzNDMgOTYgOTYgOTYgOTYtNDMgOTYtOTYtNDMtOTYtOTYtOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODBjMC0yNi41MS0yMS40OS00OC00OC00OHpNMjI0IDQxNkg2NHYtOTZoMTYwdjk2em0wLTE2MEg2NHYtOTZoMTYwdjk2em0yMjQgMTYwSDI4OHYtOTZoMTYwdjk2em0wLTE2MEgyODh2LTk2aDE2MHY5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFibGV0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yMjQgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTc2LTEwOGMwIDYuNi01LjQgMTItMTIgMTJINjBjLTYuNiAwLTEyLTUuNC0xMi0xMlY2MGMwLTYuNiA1LjQtMTIgMTItMTJoMzI4YzYuNiAwIDEyIDUuNCAxMiAxMnYzMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OHpNMjI0IDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxldHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDE5MkM3OC45IDE5MiAxMi41IDI1MC41LjEgMzI2LjdjLS44IDQuOCAzLjMgOS4zIDguMyA5LjNoMzAzLjNjNSAwIDkuMS00LjUgOC4zLTkuM0MzMDcuNSAyNTAuNSAyNDEuMSAxOTIgMTYwIDE5MnptMTUxLjYgMTc2SDguNGMtNSAwLTkuMSA0LjUtOC4zIDkuM0MxMi41IDQ1My41IDc4LjkgNTEyIDE2MCA1MTJzMTQ3LjUtNTguNSAxNTkuOS0xMzQuN2MuOC00LjgtMy4zLTkuMy04LjMtOS4zek01OTMuNCA0Ni42Yy01Ni41LTU2LjUtMTQ0LjItNjEuNC0yMDYuOS0xNi00IDIuOS00LjMgOC45LS44IDEyLjNMNTk3IDI1NC4zYzMuNSAzLjUgOS41IDMuMiAxMi4zLS44IDQ1LjUtNjIuNyA0MC42LTE1MC40LTE1LjktMjA2Ljl6TTM2MyA2NS43Yy0zLjUtMy41LTkuNS0zLjItMTIuMy44LTQ1LjQgNjIuNy00MC41IDE1MC40IDE1LjkgMjA2LjkgNTYuNSA1Ni41IDE0NC4yIDYxLjQgMjA2LjkgMTUuOSA0LTIuOSA0LjMtOC45LjgtMTIuM0wzNjMgNjUuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFjaG9tZXRlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJDMTI4Ljk0IDMyIDAgMTYwLjk0IDAgMzIwYzAgNTIuOCAxNC4yNSAxMDIuMjYgMzkuMDYgMTQ0LjggNS42MSA5LjYyIDE2LjMgMTUuMiAyNy40NCAxNS4yaDQ0M2MxMS4xNCAwIDIxLjgzLTUuNTggMjcuNDQtMTUuMkM1NjEuNzUgNDIyLjI2IDU3NiAzNzIuOCA1NzYgMzIwYzAtMTU5LjA2LTEyOC45NC0yODgtMjg4LTI4OHptMCA2NGMxNC43MSAwIDI2LjU4IDEwLjEzIDMwLjMyIDIzLjY1LTEuMTEgMi4yNi0yLjY0IDQuMjMtMy40NSA2LjY3bC05LjIyIDI3LjY3Yy01LjEzIDMuNDktMTAuOTcgNi4wMS0xNy42NCA2LjAxLTE3LjY3IDAtMzItMTQuMzMtMzItMzJTMjcwLjMzIDk2IDI4OCA5NnpNOTYgMzg0Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem00OC0xNjBjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTI0Ni43Ny03Mi40MWwtNjEuMzMgMTg0QzM0My4xMyAzNDcuMzMgMzUyIDM2NC41NCAzNTIgMzg0YzAgMTEuNzItMy4zOCAyMi41NS04Ljg4IDMySDIzMi44OGMtNS41LTkuNDUtOC44OC0yMC4yOC04Ljg4LTMyIDAtMzMuOTQgMjYuNS02MS40MyA1OS45LTYzLjU5bDYxLjM0LTE4NC4wMWM0LjE3LTEyLjU2IDE3LjczLTE5LjQ1IDMwLjM2LTE1LjE3IDEyLjU3IDQuMTkgMTkuMzUgMTcuNzkgMTUuMTcgMzAuMzZ6bTE0LjY2IDU3LjJsMTUuNTItNDYuNTVjMy40Ny0xLjI5IDcuMTMtMi4yMyAxMS4wNS0yLjIzIDE3LjY3IDAgMzIgMTQuMzMgMzIgMzJzLTE0LjMzIDMyLTMyIDMyYy0xMS4zOC0uMDEtMjAuODktNi4yOC0yNi41Ny0xNS4yMnpNNDgwIDM4NGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjUyLjExOFY0OEMwIDIxLjQ5IDIxLjQ5IDAgNDggMGgyMDQuMTE4YTQ4IDQ4IDAgMCAxIDMzLjk0MSAxNC4wNTlsMjExLjg4MiAyMTEuODgyYzE4Ljc0NSAxOC43NDUgMTguNzQ1IDQ5LjEzNyAwIDY3Ljg4MkwyOTMuODIzIDQ5Ny45NDFjLTE4Ljc0NSAxOC43NDUtNDkuMTM3IDE4Ljc0NS02Ny44ODIgMEwxNC4wNTkgMjg2LjA1OUE0OCA0OCAwIDAgMSAwIDI1Mi4xMTh6TTExMiA2NGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OC0yMS40OS00OC00OC00OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTcuOTQxIDIyNS45NDFMMjg2LjA1OSAxNC4wNTlBNDggNDggMCAwIDAgMjUyLjExOCAwSDQ4QzIxLjQ5IDAgMCAyMS40OSAwIDQ4djIwNC4xMThhNDggNDggMCAwIDAgMTQuMDU5IDMzLjk0MWwyMTEuODgyIDIxMS44ODJjMTguNzQ0IDE4Ljc0NSA0OS4xMzYgMTguNzQ2IDY3Ljg4MiAwbDIwNC4xMTgtMjA0LjExOGMxOC43NDUtMTguNzQ1IDE4Ljc0NS00OS4xMzcgMC02Ny44ODJ6TTExMiAxNjBjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bTUxMy45NDEgMTMzLjgyM0w0MjEuODIzIDQ5Ny45NDFjLTE4Ljc0NSAxOC43NDUtNDkuMTM3IDE4Ljc0NS02Ny44ODIgMGwtLjM2LS4zNkw1MjcuNjQgMzIzLjUyMmMxNi45OTktMTYuOTk5IDI2LjM2LTM5LjYgMjYuMzYtNjMuNjRzLTkuMzYyLTQ2LjY0MS0yNi4zNi02My42NEwzMzEuMzk3IDBoNDguNzIxYTQ4IDQ4IDAgMCAxIDMzLjk0MSAxNC4wNTlsMjExLjg4MiAyMTEuODgyYzE4Ljc0NSAxOC43NDUgMTguNzQ1IDQ5LjEzNyAwIDY3Ljg4MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTkyYy0zNS4zIDAtNjQgMjguNy02NCA2NHMyOC43IDY0IDY0IDY0IDY0LTI4LjcgNjQtNjQtMjguNy02NC02NC02NHptNDAwIDIyNEgzODAuNmM0MS41LTQwLjcgNjcuNC05Ny4zIDY3LjQtMTYwIDAtMTIzLjctMTAwLjMtMjI0LTIyNC0yMjRTMCAxMzIuMyAwIDI1NnMxMDAuMyAyMjQgMjI0IDIyNGg0MDBjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bS00MDAtNjRjLTUzIDAtOTYtNDMtOTYtOTZzNDMtOTYgOTYtOTYgOTYgNDMgOTYgOTYtNDMgOTYtOTYgOTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhc2tzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzOS42MSAzNS41YTEyIDEyIDAgMCAwLTE3IDBMNTguOTMgOTguODFsLTIyLjctMjIuMTJhMTIgMTIgMCAwIDAtMTcgMEwzLjUzIDkyLjQxYTEyIDEyIDAgMCAwIDAgMTdsNDcuNTkgNDcuNGExMi43OCAxMi43OCAwIDAgMCAxNy42MSAwbDE1LjU5LTE1LjYyTDE1Ni41MiA2OWExMi4wOSAxMi4wOSAwIDAgMCAuMDktMTd6bTAgMTU5LjE5YTEyIDEyIDAgMCAwLTE3IDBsLTYzLjY4IDYzLjcyLTIyLjctMjIuMWExMiAxMiAwIDAgMC0xNyAwTDMuNTMgMjUyYTEyIDEyIDAgMCAwIDAgMTdMNTEgMzE2LjVhMTIuNzcgMTIuNzcgMCAwIDAgMTcuNiAwbDE1LjctMTUuNjkgNzIuMi03Mi4yMmExMiAxMiAwIDAgMCAuMDktMTYuOXpNNjQgMzY4Yy0yNi40OSAwLTQ4LjU5IDIxLjUtNDguNTkgNDhTMzcuNTMgNDY0IDY0IDQ2NGE0OCA0OCAwIDAgMCAwLTk2em00MzIgMTZIMjA4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI4OGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtMzIwSDIwOGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyODhhMTYgMTYgMCAwIDAgMTYtMTZWODBhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgMTYwSDIwOGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyODhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYXhpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2MiAyNDEuNjRsLTIyLTg0Ljg0Yy05LjYtMzUuMi00MS42LTYwLjgtNzYuOC02MC44SDM1MlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDE5MmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmgtMTEuMmMtMzUuMiAwLTY3LjIgMjUuNi03Ni44IDYwLjhsLTIyIDg0Ljg0QzIxLjQxIDI0OC4wNCAwIDI3My40NyAwIDMwNHY0OGMwIDIzLjYzIDEyLjk1IDQ0LjA0IDMyIDU1LjEyVjQ0OGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyaDI1NnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTQwLjg4YzE5LjA1LTExLjA5IDMyLTMxLjUgMzItNTUuMTJ2LTQ4YzAtMzAuNTMtMjEuNDEtNTUuOTYtNTAtNjIuMzZ6TTk2IDM1MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMjAuNTUtMTEybDE3LjItNjYuMzZjMi4yMy04LjE2IDkuNTktMTMuNjQgMTUuMDYtMTMuNjRoMjE0LjRjNS40NyAwIDEyLjgzIDUuNDggMTQuODUgMTIuODZMMzk1LjQ1IDI0MGgtMjc4Ljl6TTQxNiAzNTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlZXRoT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDQgMEg5NkM0Mi45OCAwIDAgNDIuOTggMCA5NnY2NGMwIDM1LjM1IDI4LjY2IDY0IDY0IDY0aDUxMmMzNS4zNCAwIDY0LTI4LjY1IDY0LTY0Vjk2YzAtNTMuMDItNDIuOTgtOTYtOTYtOTZ6TTE2MCAxNzZjMCA4Ljg0LTcuMTYgMTYtMTYgMTZIODBjLTguODQgMC0xNi03LjE2LTE2LTE2di0zMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4czQ4IDIxLjQ5IDQ4IDQ4djMyem0xNDQgMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtODBjLTguODQgMC0xNi03LjE2LTE2LTE2di01NmMwLTMwLjkzIDI1LjA3LTU2IDU2LTU2czU2IDI1LjA3IDU2IDU2djU2em0xNDQgMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtODBjLTguODQgMC0xNi03LjE2LTE2LTE2di01NmMwLTMwLjkzIDI1LjA3LTU2IDU2LTU2czU2IDI1LjA3IDU2IDU2djU2em0xMjggMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtNjRjLTguODQgMC0xNi03LjE2LTE2LTE2di0zMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4czQ4IDIxLjQ5IDQ4IDQ4djMyem0wIDE0NEg2NGMtMzUuMzQgMC02NCAyOC42NS02NCA2NHYzMmMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2aDQ0OGM1My4wMiAwIDk2LTQyLjk4IDk2LTk2di0zMmMwLTM1LjM1LTI4LjY2LTY0LTY0LTY0em0tNDE2IDgwYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4di0zMmMwLTguODQgNy4xNi0xNiAxNi0xNmg2NGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYzMnptMTQ0LThjMCAzMC45My0yNS4wNyA1Ni01NiA1NnMtNTYtMjUuMDctNTYtNTZ2LTI0YzAtOC44NCA3LjE2LTE2IDE2LTE2aDgwYzguODQgMCAxNiA3LjE2IDE2IDE2djI0em0xNDQgMGMwIDMwLjkzLTI1LjA3IDU2LTU2IDU2cy01Ni0yNS4wNy01Ni01NnYtMjRjMC04Ljg0IDcuMTYtMTYgMTYtMTZoODBjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MjR6bTEyOCA4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4di0zMmMwLTguODQgNy4xNi0xNiAxNi0xNmg2NGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVldGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDBIOTZDNDIuOTggMCAwIDQyLjk4IDAgOTZ2MzIwYzAgNTMuMDIgNDIuOTggOTYgOTYgOTZoNDQ4YzUzLjAyIDAgOTYtNDIuOTggOTYtOTZWOTZjMC01My4wMi00Mi45OC05Ni05Ni05NnpNMTYwIDM2OGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4cy00OC0yMS40OS00OC00OHYtNjRjMC04Ljg0IDcuMTYtMTYgMTYtMTZoNjRjOC44NCAwIDE2IDcuMTYgMTYgMTZ2NjR6bTAtMTI4YzAgOC44NC03LjE2IDE2LTE2IDE2SDgwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtNjRjMC0yNi41MSAyMS40OS00OCA0OC00OHM0OCAyMS40OSA0OCA0OHY2NHptMTQ0IDEyMGMwIDMwLjkzLTI1LjA3IDU2LTU2IDU2cy01Ni0yNS4wNy01Ni01NnYtNTZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoODBjOC44NCAwIDE2IDcuMTYgMTYgMTZ2NTZ6bTAtMTIwYzAgOC44NC03LjE2IDE2LTE2IDE2aC04MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTg4YzAtMzAuOTMgMjUuMDctNTYgNTYtNTZzNTYgMjUuMDcgNTYgNTZ2ODh6bTE0NCAxMjBjMCAzMC45My0yNS4wNyA1Ni01NiA1NnMtNTYtMjUuMDctNTYtNTZ2LTU2YzAtOC44NCA3LjE2LTE2IDE2LTE2aDgwYzguODQgMCAxNiA3LjE2IDE2IDE2djU2em0wLTEyMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtODBjLTguODQgMC0xNi03LjE2LTE2LTE2di04OGMwLTMwLjkzIDI1LjA3LTU2IDU2LTU2czU2IDI1LjA3IDU2IDU2djg4em0xMjggMTI4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4di02NGMwLTguODQgNy4xNi0xNiAxNi0xNmg2NGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnY2NHptMC0xMjhjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTY0Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtNjRjMC0yNi41MSAyMS40OS00OCA0OC00OHM0OCAyMS40OSA0OCA0OHY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAwYy01Mi45IDAtOTYgNDMuMS05NiA5NnM0My4xIDk2IDk2IDk2IDk2LTQzLjEgOTYtOTYtNDMuMS05Ni05Ni05NnptMCAxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0tMTYwLTE2QzI1NiA1MC4xIDIwNS45IDAgMTQ0IDBTMzIgNTAuMSAzMiAxMTJ2MTY2LjVDMTIuMyAzMDMuMiAwIDMzNCAwIDM2OGMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NHMxNDQtNjQuNSAxNDQtMTQ0YzAtMzQtMTIuMy02NC45LTMyLTg5LjVWMTEyek0xNDQgNDQ4Yy00NC4xIDAtODAtMzUuOS04MC04MCAwLTI1LjUgMTIuMi00OC45IDMyLTYzLjhWMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2MTkyLjJjMTkuOCAxNC44IDMyIDM4LjMgMzIgNjMuOCAwIDQ0LjEtMzUuOSA4MC04MCA4MHptMTYtMTI1LjFWMTEyYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djIxMC45Yy0xOC42IDYuNi0zMiAyNC4yLTMyIDQ1LjEgMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OGMwLTIwLjktMTMuNC0zOC41LTMyLTQ1LjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbXBlcmF0dXJlTG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAwYy01Mi45IDAtOTYgNDMuMS05NiA5NnM0My4xIDk2IDk2IDk2IDk2LTQzLjEgOTYtOTYtNDMuMS05Ni05Ni05NnptMCAxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0tMTYwLTE2QzI1NiA1MC4xIDIwNS45IDAgMTQ0IDBTMzIgNTAuMSAzMiAxMTJ2MTY2LjVDMTIuMyAzMDMuMiAwIDMzNCAwIDM2OGMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NHMxNDQtNjQuNSAxNDQtMTQ0YzAtMzQtMTIuMy02NC45LTMyLTg5LjVWMTEyek0xNDQgNDQ4Yy00NC4xIDAtODAtMzUuOS04MC04MCAwLTI1LjUgMTIuMi00OC45IDMyLTYzLjhWMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2MTkyLjJjMTkuOCAxNC44IDMyIDM4LjMgMzIgNjMuOCAwIDQ0LjEtMzUuOSA4MC04MCA4MHptMTYtMTI1LjFWMzA0YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djE4LjljLTE4LjYgNi42LTMyIDI0LjItMzIgNDUuMSAwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4YzAtMjAuOS0xMy40LTM4LjUtMzItNDUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVuZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyIDE2MEgxMmMtNi42IDAtMTIgNS40LTEyIDEydjU2YzAgNi42IDUuNCAxMiAxMiAxMmgxNDB2MjI4YzAgNi42IDUuNCAxMiAxMiAxMmg1NmM2LjYgMCAxMi01LjQgMTItMTJWMjQwaDE0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTU2YzAtNi42LTUuNC0xMi0xMi0xMnptMC0xMjhIMTJDNS40IDMyIDAgMzcuNCAwIDQ0djU2YzAgNi42IDUuNCAxMiAxMiAxMmgzNjBjNi42IDAgMTItNS40IDEyLTEyVjQ0YzAtNi42LTUuNC0xMi0xMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVybWluYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU3Ljk4MSAyNzIuOTcxTDYzLjYzOCA0NjcuMzE0Yy05LjM3MyA5LjM3My0yNC41NjkgOS4zNzMtMzMuOTQxIDBMNy4wMjkgNDQ0LjY0N2MtOS4zNTctOS4zNTctOS4zNzUtMjQuNTIyLS4wNC0zMy45MDFMMTYxLjAxMSAyNTYgNi45OSAxMDEuMjU1Yy05LjMzNS05LjM3OS05LjMxNy0yNC41NDQuMDQtMzMuOTAxbDIyLjY2Ny0yMi42NjdjOS4zNzMtOS4zNzMgMjQuNTY5LTkuMzczIDMzLjk0MSAwTDI1Ny45ODEgMjM5LjAzYzkuMzczIDkuMzcyIDkuMzczIDI0LjU2OCAwIDMzLjk0MXpNNjQwIDQ1NnYtMzJjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDMxMmMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djMyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMDRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZXh0SGVpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNCAzMkgxNkExNiAxNiAwIDAgMCAwIDQ4djk2YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmg1NnYzMDRIODBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTYwYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNmgtNDBWMTEyaDU2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2em0yNTYgMzM2aC00OFYxNDRoNDhjMTQuMzEgMCAyMS4zMy0xNy4zMSAxMS4zMS0yNy4zMWwtODAtODBhMTYgMTYgMCAwIDAtMjIuNjIgMGwtODAgODBDMzc5LjM2IDEyNiAzODQuMzYgMTQ0IDQwMCAxNDRoNDh2MjI0aC00OGMtMTQuMzEgMC0yMS4zMiAxNy4zMS0xMS4zMSAyNy4zMWw4MCA4MGExNiAxNiAwIDAgMCAyMi42MiAwbDgwLTgwQzU4MC42NCAzODYgNTc1LjY0IDM2OCA1NjAgMzY4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZXh0V2lkdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDMySDE2QTE2IDE2IDAgMCAwIDAgNDh2ODBhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTE2aDEyMHYxMTJoLTI0YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTI0VjExMmgxMjB2MTZhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6bS02OC42OSAyNjAuNjlDMzU0IDI4My4zNiAzMzYgMjg4LjM2IDMzNiAzMDR2NDhIMTEydi00OGMwLTE0LjMxLTE3LjMxLTIxLjMyLTI3LjMxLTExLjMxbC04MCA4MGExNiAxNiAwIDAgMCAwIDIyLjYybDgwIDgwQzk0IDQ4NC42NCAxMTIgNDc5LjY0IDExMiA0NjR2LTQ4aDIyNHY0OGMwIDE0LjMxIDE3LjMxIDIxLjMzIDI3LjMxIDExLjMxbDgwLTgwYTE2IDE2IDAgMCAwIDAtMjIuNjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoTGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk2IDMyaDE5MmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MTYwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyOTZjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNFY1NmMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjR6bS04MCAwSDI0QzEwLjc0NSAzMiAwIDQyLjc0NSAwIDU2djE2MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTkyYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6TTAgMjk2djE2MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTkyYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyOTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR6bTI5NiAxODRoMTkyYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyOTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI5NmMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE2MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDkuMzMzIDIxNnY4MGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMjRjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHYtODBjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDEwMS4zMzNjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0ek0wIDM3NnY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTAxLjMzM2MxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0ek0xMjUuMzMzIDMySDI0QzEwLjc0NSAzMiAwIDQyLjc0NSAwIDU2djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDEuMzMzYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6bTgwIDQ0OEg0ODhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di04MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjA1LjMzM2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNHptLTI0LTQyNHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRINDg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjA1LjMzM2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0em0yNCAyNjRINDg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDIwNS4zMzNjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0OS4zMzMgNTZ2ODBjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDI0Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRWNTZjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDEwMS4zMzNjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0em0xODEuMzM0IDI0MHYtODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDIwNS4zMzNjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTAxLjMzM2MxMy4yNTYgMCAyNC4wMDEtMTAuNzQ1IDI0LjAwMS0yNHptMzItMjQwdjgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNEg0ODhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjU2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgzODYuNjY3Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR6bS0zMiA4MFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjA1LjMzM2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDEuMzMzYzEzLjI1NiAwIDI0LjAwMS0xMC43NDUgMjQuMDAxLTI0em0tMjA1LjMzNCA1NkgyNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDEuMzMzYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0ek0wIDM3NnY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTAxLjMzM2MxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0em0zODYuNjY3LTU2SDQ4OGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgzODYuNjY3Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0em0wIDE2MEg0ODhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di04MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMzg2LjY2N2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNHpNMTgxLjMzMyAzNzZ2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwMS4zMzNjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di04MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjA1LjMzM2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVhdGVyTWFza3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA2Ljg2IDI0NS4xNWMtMzUuODggMTAuNDUtNTkuOTUgNDEuMi01Ny41MyA3NC4xIDExLjQtMTIuNzIgMjguODEtMjMuNyA0OS45LTMwLjkybDcuNjMtNDMuMTh6TTk1LjgxIDI5NUw2NC4wOCAxMTUuNDljLS4yOS0xLjYyLjI4LTIuNjIuMjQtMi42NSA1Ny43Ni0zMi4wNiAxMjMuMTItNDkuMDEgMTg5LjAxLTQ5LjAxIDEuNjEgMCAzLjIzLjE3IDQuODUuMTkgMTMuOTUtMTMuNDcgMzEuNzMtMjIuODMgNTEuNTktMjYgMTguODktMy4wMiAzOC4wNS00LjU1IDU3LjE4LTUuMzItOS45OS0xMy45NS0yNC40OC0yNC4yMy00MS43Ny0yN0MzMDEuMjcgMS44OSAyNzcuMjQgMCAyNTMuMzIgMCAxNzYuNjYgMCAxMDEuMDIgMTkuNDIgMzMuMiA1Ny4wNiA5LjAzIDcwLjQ4LTMuOTIgOTguNDggMS4wNSAxMjYuNThsMzEuNzMgMTc5LjUxYzE0LjIzIDgwLjUyIDEzNi4zMyAxNDIuMDggMjA0LjQ1IDE0Mi4wOCAzLjU5IDAgNi43NS0uNDYgMTAuMDEtLjgtMTMuNTItMTcuMDgtMjguOTQtNDAuNDgtMzkuNS02Ny41OC00Ny42MS0xMi45OC0xMDYuMDYtNTEuNjItMTExLjkzLTg0Ljc5em05Ny41NS0xMzcuNDZjLS43My00LjEyLTIuMjMtNy44Ny00LjA3LTExLjQtOC4yNSA4LjkxLTIwLjY3IDE1Ljc1LTM1LjMyIDE4LjMyLTE0LjY1IDIuNTgtMjguNjcuNC0zOS40OC01LjE3LS41MiAzLjk0LS42NCA3Ljk4LjA5IDEyLjEgMy44NCAyMS43IDI0LjU4IDM2LjE5IDQ2LjM0IDMyLjM3IDIxLjc1LTMuODIgMzYuMjgtMjQuNTIgMzIuNDQtNDYuMjJ6TTYwNi44IDEyMC45Yy04OC45OC00OS4zOC0xOTEuNDMtNjcuNDEtMjkxLjk4LTUxLjM1LTI3LjMxIDQuMzYtNDkuMDggMjYuMjYtNTQuMDQgNTQuMzZsLTMxLjczIDE3OS41MWMtMTUuMzkgODcuMDUgOTUuMjggMTk2LjI3IDE1OC4zMSAyMDcuMzUgNjMuMDMgMTEuMDkgMjA0LjQ3LTUzLjc5IDIxOS44Ni0xNDAuODRsMzEuNzMtMTc5LjUxYzQuOTctMjguMTEtNy45OC01Ni4xMS0zMi4xNS02OS41MnptLTI3My4yNCA5Ni44YzMuODQtMjEuNyAyNC41OC0zNi4xOSA0Ni4zNC0zMi4zNiAyMS43NiAzLjgzIDM2LjI4IDI0LjUyIDMyLjQ1IDQ2LjIyLS43MyA0LjEyLTIuMjMgNy44Ny00LjA3IDExLjQtOC4yNS04LjkxLTIwLjY3LTE1Ljc1LTM1LjMyLTE4LjMyLTE0LjY1LTIuNTgtMjguNjctLjQtMzkuNDggNS4xNy0uNTMtMy45NS0uNjUtNy45OS4wOC0xMi4xMXptNzAuNDcgMTk4Ljc2Yy01NS42OC05Ljc5LTkzLjUyLTU5LjI3LTg5LjA0LTExMi45IDIwLjYgMjUuNTQgNTYuMjEgNDYuMTcgOTkuNDkgNTMuNzggNDMuMjggNy42MSA4My44Mi4zNyAxMTEuOTMtMTYuNi0xNC4xOCA1MS45NC02Ni43MSA4NS41MS0xMjIuMzggNzUuNzJ6bTEzMC4zLTE1MS4zNGMtOC4yNS04LjkxLTIwLjY4LTE1Ljc1LTM1LjMzLTE4LjMyLTE0LjY1LTIuNTgtMjguNjctLjQtMzkuNDggNS4xNy0uNTItMy45NC0uNjQtNy45OC4wOS0xMi4xIDMuODQtMjEuNyAyNC41OC0zNi4xOSA0Ni4zNC0zMi4zNyAyMS43NSAzLjgzIDM2LjI4IDI0LjUyIDMyLjQ1IDQ2LjIyLS43MyA0LjEzLTIuMjMgNy44OC00LjA3IDExLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZXJtb21ldGVyRW1wdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDM4NGMwIDM1LjM0Ni0yOC42NTQgNjQtNjQgNjRzLTY0LTI4LjY1NC02NC02NGMwLTM1LjM0NiAyOC42NTQtNjQgNjQtNjRzNjQgMjguNjU0IDY0IDY0em0zMi04NC42NTNjMTkuOTEyIDIyLjU2MyAzMiA1Mi4xOTQgMzIgODQuNjUzIDAgNzAuNjk2LTU3LjMwMyAxMjgtMTI4IDEyOC0uMjk5IDAtLjYwOS0uMDAxLS45MDktLjAwM0M1Ni43ODkgNTExLjUwOS0uMzU3IDQ1My42MzYuMDAyIDM4My4zMzMuMTY2IDM1MS4xMzUgMTIuMjI1IDMyMS43NTUgMzIgMjk5LjM0N1Y5NmMwLTUzLjAxOSA0Mi45ODEtOTYgOTYtOTZzOTYgNDIuOTgxIDk2IDk2djIwMy4zNDd6TTIwOCAzODRjMC0zNC4zMzktMTkuMzctNTIuMTktMzItNjYuNTAyVjk2YzAtMjYuNDY3LTIxLjUzMy00OC00OC00OFM4MCA2OS41MzMgODAgOTZ2MjIxLjQ5OGMtMTIuNzMyIDE0LjQyOC0zMS44MjUgMzIuMS0zMS45OTkgNjYuMDgtLjIyNCA0My44NzYgMzUuNTYzIDgwLjExNiA3OS40MjMgODAuNDJMMTI4IDQ2NGM0NC4xMTIgMCA4MC0zNS44ODggODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZXJtb21ldGVyRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgOTZjMC01My4wMTktNDIuOTgxLTk2LTk2LTk2UzMyIDQyLjk4MSAzMiA5NnYyMDMuMzQ3QzEyLjIyNSAzMjEuNzU2LjE2NiAzNTEuMTM2LjAwMiAzODMuMzMzYy0uMzU5IDcwLjMwMyA1Ni43ODcgMTI4LjE3NiAxMjcuMDg5IDEyOC42NjQuMjk5LjAwMi42MS4wMDMuOTA5LjAwMyA3MC42OTggMCAxMjgtNTcuMzA0IDEyOC0xMjggMC0zMi40NTktMTIuMDg4LTYyLjA5LTMyLTg0LjY1M1Y5NnptLTk2IDM2OGwtLjU3Ni0uMDAyYy00My44Ni0uMzA0LTc5LjY0Ny0zNi41NDQtNzkuNDIzLTgwLjQyLjE3My0zMy45OCAxOS4yNjYtNTEuNjUyIDMxLjk5OS02Ni4wOFY5NmMwLTI2LjQ2NyAyMS41MzMtNDggNDgtNDhzNDggMjEuNTMzIDQ4IDQ4djIyMS40OThjMTIuNjMgMTQuMzEyIDMyIDMyLjE2NCAzMiA2Ni41MDIgMCA0NC4xMTItMzUuODg4IDgwLTgwIDgwem02NC04MGMwIDM1LjM0Ni0yOC42NTQgNjQtNjQgNjRzLTY0LTI4LjY1NC02NC02NGMwLTIzLjY4NSAxMi44NzYtNDQuMzQ5IDMyLTU1LjQxN1Y5NmMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJzMzIgMTQuMzI3IDMyIDMydjIzMi41ODNjMTkuMTI0IDExLjA2OCAzMiAzMS43MzIgMzIgNTUuNDE3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVybW9tZXRlckhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDM4NGMwIDM1LjM0Ni0yOC42NTQgNjQtNjQgNjRzLTY0LTI4LjY1NC02NC02NGMwLTIzLjY4NSAxMi44NzYtNDQuMzQ5IDMyLTU1LjQxN1YyMjRjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyczMyIDE0LjMyNyAzMiAzMnYxMDQuNTgzYzE5LjEyNCAxMS4wNjggMzIgMzEuNzMyIDMyIDU1LjQxN3ptMzItODQuNjUzYzE5LjkxMiAyMi41NjMgMzIgNTIuMTk0IDMyIDg0LjY1MyAwIDcwLjY5Ni01Ny4zMDMgMTI4LTEyOCAxMjgtLjI5OSAwLS42MDktLjAwMS0uOTA5LS4wMDNDNTYuNzg5IDUxMS41MDktLjM1NyA0NTMuNjM2LjAwMiAzODMuMzMzLjE2NiAzNTEuMTM1IDEyLjIyNSAzMjEuNzU1IDMyIDI5OS4zNDdWOTZjMC01My4wMTkgNDIuOTgxLTk2IDk2LTk2czk2IDQyLjk4MSA5NiA5NnYyMDMuMzQ3ek0yMDggMzg0YzAtMzQuMzM5LTE5LjM3LTUyLjE5LTMyLTY2LjUwMlY5NmMwLTI2LjQ2Ny0yMS41MzMtNDgtNDgtNDhTODAgNjkuNTMzIDgwIDk2djIyMS40OThjLTEyLjczMiAxNC40MjgtMzEuODI1IDMyLjEtMzEuOTk5IDY2LjA4LS4yMjQgNDMuODc2IDM1LjU2MyA4MC4xMTYgNzkuNDIzIDgwLjQyTDEyOCA0NjRjNDQuMTEyIDAgODAtMzUuODg4IDgwLTgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVybW9tZXRlclF1YXJ0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDM4NGMwIDM1LjM0Ni0yOC42NTQgNjQtNjQgNjRzLTY0LTI4LjY1NC02NC02NGMwLTIzLjY4NSAxMi44NzYtNDQuMzQ5IDMyLTU1LjQxN1YyODhjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyczMyIDE0LjMyNyAzMiAzMnY0MC41ODNjMTkuMTI0IDExLjA2OCAzMiAzMS43MzIgMzIgNTUuNDE3em0zMi04NC42NTNjMTkuOTEyIDIyLjU2MyAzMiA1Mi4xOTQgMzIgODQuNjUzIDAgNzAuNjk2LTU3LjMwMyAxMjgtMTI4IDEyOC0uMjk5IDAtLjYwOS0uMDAxLS45MDktLjAwM0M1Ni43ODkgNTExLjUwOS0uMzU3IDQ1My42MzYuMDAyIDM4My4zMzMuMTY2IDM1MS4xMzUgMTIuMjI1IDMyMS43NTUgMzIgMjk5LjM0N1Y5NmMwLTUzLjAxOSA0Mi45ODEtOTYgOTYtOTZzOTYgNDIuOTgxIDk2IDk2djIwMy4zNDd6TTIwOCAzODRjMC0zNC4zMzktMTkuMzctNTIuMTktMzItNjYuNTAyVjk2YzAtMjYuNDY3LTIxLjUzMy00OC00OC00OFM4MCA2OS41MzMgODAgOTZ2MjIxLjQ5OGMtMTIuNzMyIDE0LjQyOC0zMS44MjUgMzIuMS0zMS45OTkgNjYuMDgtLjIyNCA0My44NzYgMzUuNTYzIDgwLjExNiA3OS40MjMgODAuNDJMMTI4IDQ2NGM0NC4xMTIgMCA4MC0zNS44ODggODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZXJtb21ldGVyVGhyZWVRdWFydGVycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMzg0YzAgMzUuMzQ2LTI4LjY1NCA2NC02NCA2NC0zNS4zNDYgMC02NC0yOC42NTQtNjQtNjQgMC0yMy42ODUgMTIuODc2LTQ0LjM0OSAzMi01NS40MTdWMTYwYzAtMTcuNjczIDE0LjMyNy0zMiAzMi0zMnMzMiAxNC4zMjcgMzIgMzJ2MTY4LjU4M2MxOS4xMjQgMTEuMDY4IDMyIDMxLjczMiAzMiA1NS40MTd6bTMyLTg0LjY1M2MxOS45MTIgMjIuNTYzIDMyIDUyLjE5NCAzMiA4NC42NTMgMCA3MC42OTYtNTcuMzAzIDEyOC0xMjggMTI4LS4yOTkgMC0uNjA5LS4wMDEtLjkwOS0uMDAzQzU2Ljc4OSA1MTEuNTA5LS4zNTcgNDUzLjYzNi4wMDIgMzgzLjMzMy4xNjYgMzUxLjEzNSAxMi4yMjUgMzIxLjc1NSAzMiAyOTkuMzQ3Vjk2YzAtNTMuMDE5IDQyLjk4MS05NiA5Ni05NnM5NiA0Mi45ODEgOTYgOTZ2MjAzLjM0N3pNMjA4IDM4NGMwLTM0LjMzOS0xOS4zNy01Mi4xOS0zMi02Ni41MDJWOTZjMC0yNi40NjctMjEuNTMzLTQ4LTQ4LTQ4UzgwIDY5LjUzMyA4MCA5NnYyMjEuNDk4Yy0xMi43MzIgMTQuNDI4LTMxLjgyNSAzMi4xLTMxLjk5OSA2Ni4wOC0uMjI0IDQzLjg3NiAzNS41NjMgODAuMTE2IDc5LjQyMyA4MC40MkwxMjggNDY0YzQ0LjExMiAwIDgwLTM1Ljg4OCA4MC04MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhlcm1vbWV0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDc2LjggMjAuNGMtMzcuNS0zMC43LTk1LjUtMjYuMy0xMzEuOSAxMC4ybC00NS43IDQ2IDUwLjUgNTAuNWMzLjEgMy4xIDMuMSA4LjIgMCAxMS4zbC0xMS4zIDExLjNjLTMuMSAzLjEtOC4yIDMuMS0xMS4zIDBsLTUwLjQtNTAuNS00NS4xIDQ1LjQgNTAuMyA1MC40YzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMEwyMDkgMTY3LjRsLTQ1LjEgNDUuNEwyMTQgMjYzYzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMGwtNTAuMS01MC4yTDk2IDI4MS4xVjM4Mkw3IDQ3MWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjkgOS40IDkuNCAyNC42IDkuNCAzMy45IDBsODktODloOTkuOUw0ODQgMTYyLjZjMzQuOS0zNC45IDQyLjItMTAxLjUtNy4yLTE0Mi4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaHVtYnNEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNTZ2MjQwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGg4MGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWNTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI0QzEwLjc0NSAzMiAwIDQyLjc0NSAwIDU2em00MCAyMDBjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0czI0IDEwLjc0NSAyNCAyNC0xMC43NDUgMjQtMjQgMjQtMjQtMTAuNzQ1LTI0LTI0em0yNzIgMjU2Yy0yMC4xODMgMC0yOS40ODUtMzkuMjkzLTMzLjkzMS01Ny43OTUtNS4yMDYtMjEuNjY2LTEwLjU4OS00NC4wNy0yNS4zOTMtNTguOTAyLTMyLjQ2OS0zMi41MjQtNDkuNTAzLTczLjk2Ny04OS4xMTctMTEzLjExMWExMS45OCAxMS45OCAwIDAgMS0zLjU1OC04LjUyMVY1OS45MDFjMC02LjU0MSA1LjI0My0xMS44NzggMTEuNzgzLTExLjk5OCAxNS44MzEtLjI5IDM2LjY5NC05LjA3OSA1Mi42NTEtMTYuMTc4QzI1Ni4xODkgMTcuNTk4IDI5NS43MDkuMDE3IDM0My45OTUgMGgyLjg0NGM0Mi43NzcgMCA5My4zNjMuNDEzIDExMy43NzQgMjkuNzM3IDguMzkyIDEyLjA1NyAxMC40NDYgMjcuMDM0IDYuMTQ4IDQ0LjYzMiAxNi4zMTIgMTcuMDUzIDI1LjA2MyA0OC44NjMgMTYuMzgyIDc0Ljc1NyAxNy41NDQgMjMuNDMyIDE5LjE0MyA1Ni4xMzIgOS4zMDggNzkuNDY5bC4xMS4xMWMxMS44OTMgMTEuOTQ5IDE5LjUyMyAzMS4yNTkgMTkuNDM5IDQ5LjE5Ny0uMTU2IDMwLjM1Mi0yNi4xNTcgNTguMDk4LTU5LjU1MyA1OC4wOThIMzUwLjcyM0MzNTguMDMgMzY0LjM0IDM4NCAzODguMTMyIDM4NCA0MzAuNTQ4IDM4NCA1MDQgMzM2IDUxMiAzMTIgNTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaHVtYnNVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDQgMjI0SDI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MjQwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGg4MGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMjQ4YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHpNNjQgNDcyYy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRzMTAuNzQ1LTI0IDI0LTI0IDI0IDEwLjc0NSAyNCAyNC0xMC43NDUgMjQtMjQgMjR6TTM4NCA4MS40NTJjMCA0Mi40MTYtMjUuOTcgNjYuMjA4LTMzLjI3NyA5NC41NDhoMTAxLjcyM2MzMy4zOTcgMCA1OS4zOTcgMjcuNzQ2IDU5LjU1MyA1OC4wOTguMDg0IDE3LjkzOC03LjU0NiAzNy4yNDktMTkuNDM5IDQ5LjE5N2wtLjExLjExYzkuODM2IDIzLjMzNyA4LjIzNyA1Ni4wMzctOS4zMDggNzkuNDY5IDguNjgxIDI1Ljg5NS0uMDY5IDU3LjcwNC0xNi4zODIgNzQuNzU3IDQuMjk4IDE3LjU5OCAyLjI0NCAzMi41NzUtNi4xNDggNDQuNjMyQzQ0MC4yMDIgNTExLjU4NyAzODkuNjE2IDUxMiAzNDYuODM5IDUxMmwtMi44NDUtLjAwMWMtNDguMjg3LS4wMTctODcuODA2LTE3LjU5OC0xMTkuNTYtMzEuNzI1LTE1Ljk1Ny03LjA5OS0zNi44MjEtMTUuODg3LTUyLjY1MS0xNi4xNzgtNi41NC0uMTItMTEuNzgzLTUuNDU3LTExLjc4My0xMS45OTh2LTIxMy43N2MwLTMuMiAxLjI4Mi02LjI3MSAzLjU1OC04LjUyMSAzOS42MTQtMzkuMTQ0IDU2LjY0OC04MC41ODcgODkuMTE3LTExMy4xMTEgMTQuODA0LTE0LjgzMiAyMC4xODgtMzcuMjM2IDI1LjM5My01OC45MDJDMjgyLjUxNSAzOS4yOTMgMjkxLjgxNyAwIDMxMiAwYzI0IDAgNzIgOCA3MiA4MS40NTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRodW1idGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTguMDI4IDIxNC4yNjdMMjg1Ljc5MyA5NkgzMjhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEg1NkM0Mi43NDUgMCAzMiAxMC43NDUgMzIgMjR2NDhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDQyLjIwN0w4NS45NzIgMjE0LjI2N0MzNy40NjUgMjM2LjgyIDAgMjc3LjI2MSAwIDMyOGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTM2djEwNC4wMDdjMCAxLjI0Mi4yODkgMi40NjcuODQ1IDMuNTc4bDI0IDQ4YzIuOTQxIDUuODgyIDExLjM2NCA1Ljg5MyAxNC4zMTEgMGwyNC00OGE4LjAwOCA4LjAwOCAwIDAgMCAuODQ1LTMuNTc4VjM1MmgxMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0LS4wMDEtNTEuMTgzLTM3Ljk4My05MS40Mi04NS45NzMtMTEzLjczM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGlja2V0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAxNjBoMzIwdjE5MkgxMjhWMTYwem00MDAgOTZjMCAyNi41MSAyMS40OSA0OCA0OCA0OHY5NmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4di05NmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4cy0yMS40OS00OC00OC00OHYtOTZjMC0yNi41MSAyMS40OS00OCA0OC00OGg0ODBjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHY5NmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHptLTQ4LTEwNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMTIwYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MjA4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGltZXNDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMTIxLjYgMzEzLjFjNC43IDQuNyA0LjcgMTIuMyAwIDE3TDMzOCAzNzcuNmMtNC43IDQuNy0xMi4zIDQuNy0xNyAwTDI1NiAzMTJsLTY1LjEgNjUuNmMtNC43IDQuNy0xMi4zIDQuNy0xNyAwTDEzNC40IDMzOGMtNC43LTQuNy00LjctMTIuMyAwLTE3bDY1LjYtNjUtNjUuNi02NS4xYy00LjctNC43LTQuNy0xMi4zIDAtMTdsMzkuNi0zOS42YzQuNy00LjcgMTIuMy00LjcgMTcgMGw2NSA2NS43IDY1LjEtNjUuNmM0LjctNC43IDEyLjMtNC43IDE3IDBsMzkuNiAzOS42YzQuNyA0LjcgNC43IDEyLjMgMCAxN0wzMTIgMjU2bDY1LjYgNjUuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGltZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM1MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQyLjcyIDI1NmwxMDAuMDctMTAwLjA3YzEyLjI4LTEyLjI4IDEyLjI4LTMyLjE5IDAtNDQuNDhsLTIyLjI0LTIyLjI0Yy0xMi4yOC0xMi4yOC0zMi4xOS0xMi4yOC00NC40OCAwTDE3NiAxODkuMjggNzUuOTMgODkuMjFjLTEyLjI4LTEyLjI4LTMyLjE5LTEyLjI4LTQ0LjQ4IDBMOS4yMSAxMTEuNDVjLTEyLjI4IDEyLjI4LTEyLjI4IDMyLjE5IDAgNDQuNDhMMTA5LjI4IDI1NiA5LjIxIDM1Ni4wN2MtMTIuMjggMTIuMjgtMTIuMjggMzIuMTkgMCA0NC40OGwyMi4yNCAyMi4yNGMxMi4yOCAxMi4yOCAzMi4yIDEyLjI4IDQ0LjQ4IDBMMTc2IDMyMi43MmwxMDAuMDcgMTAwLjA3YzEyLjI4IDEyLjI4IDMyLjIgMTIuMjggNDQuNDggMGwyMi4yNC0yMi4yNGMxMi4yOC0xMi4yOCAxMi4yOC0zMi4xOSAwLTQ0LjQ4TDI0Mi43MiAyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRpbnRTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzMuODIgNDU4LjFMNDk0Ljk3IDM1MC43OGMuNTItNS41NyAxLjAzLTExLjE2IDEuMDMtMTYuODcgMC0xMTEuNzYtOTkuNzktMTUzLjM0LTE0Ni43OC0zMTEuODItNy45NC0yOC43OC00OS40NC0zMC4xMi01OC40NCAwLTE1LjUyIDUyLjM0LTM2Ljg3IDkxLjk2LTU4LjQ5IDEyNS42OEw0NS40NyAzLjM3QzM4LjQ5LTIuMDUgMjguNDMtLjggMjMuMDEgNi4xOEwzLjM3IDMxLjQ1Qy0yLjA1IDM4LjQyLS44IDQ4LjQ3IDYuMTggNTMuOWw1ODguMzYgNDU0LjczYzYuOTggNS40MyAxNy4wMyA0LjE3IDIyLjQ2LTIuODFsMTkuNjQtMjUuMjdjNS40MS02Ljk3IDQuMTYtMTcuMDItMi44Mi0yMi40NXpNMTQ0IDMzMy45MUMxNDQgNDMyLjM1IDIyMi43MiA1MTIgMzIwIDUxMmM0NC43MSAwIDg1LjM3LTE2Ljk2IDExNi40LTQ0LjdMMTYyLjcyIDI1NS43OGMtMTEuNDEgMjMuNS0xOC43MiA0OC4zNS0xOC43MiA3OC4xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzUyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDUuMjIgMjIuMDljLTcuOTQtMjguNzgtNDkuNDQtMzAuMTItNTguNDQgMEMxMDAuMDEgMTc5Ljg1IDAgMjIyLjcyIDAgMzMzLjkxIDAgNDMyLjM1IDc4LjcyIDUxMiAxNzYgNTEyczE3Ni03OS42NSAxNzYtMTc4LjA5YzAtMTExLjc1LTk5Ljc5LTE1My4zNC0xNDYuNzgtMzExLjgyek0xNzYgNDQ4Yy02MS43NSAwLTExMi01MC4yNS0xMTItMTEyIDAtOC44NCA3LjE2LTE2IDE2LTE2czE2IDcuMTYgMTYgMTZjMCA0NC4xMSAzNS44OSA4MCA4MCA4MCA4Ljg0IDAgMTYgNy4xNiAxNiAxNnMtNy4xNiAxNi0xNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGlyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMzMuOCAxODkuN2w4MC00OGMxMS42LTYuOSAyNCA3LjcgMTUuNCAxOEwzNDMuNiAyMDhsMzMuNiA0MC4zYzguNyAxMC40LTMuOSAyNC44LTE1LjQgMThsLTgwLTQ4Yy03LjctNC43LTcuNy0xNS45IDAtMjAuNnptLTE2My0zMGMtOC42LTEwLjMgMy44LTI0LjkgMTUuNC0xOGw4MCA0OGM3LjggNC43IDcuOCAxNS45IDAgMjAuNmwtODAgNDhjLTExLjUgNi44LTI0LTcuNi0xNS40LTE4bDMzLjYtNDAuMy0zMy42LTQwLjN6TTI0OCAyODhjNTEuOSAwIDExNS4zIDQzLjggMTIzLjIgMTA2LjcgMS43IDEzLjYtOCAyNC42LTE3LjcgMjAuNC0yNS45LTExLjEtNjQuNC0xNy40LTEwNS41LTE3LjRzLTc5LjYgNi4zLTEwNS41IDE3LjRjLTkuOCA0LjItMTkuNC03LTE3LjctMjAuNEMxMzIuNyAzMzEuOCAxOTYuMSAyODggMjQ4IDI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9nZ2xlT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCA2NEgxOTJDODUuOTYxIDY0IDAgMTQ5Ljk2MSAwIDI1NnM4NS45NjEgMTkyIDE5MiAxOTJoMTkyYzEwNi4wMzkgMCAxOTItODUuOTYxIDE5Mi0xOTJTNDkwLjAzOSA2NCAzODQgNjR6TTY0IDI1NmMwLTcwLjc0MSA1Ny4yNDktMTI4IDEyOC0xMjggNzAuNzQxIDAgMTI4IDU3LjI0OSAxMjggMTI4IDAgNzAuNzQxLTU3LjI0OSAxMjgtMTI4IDEyOC03MC43NDEgMC0xMjgtNTcuMjQ5LTEyOC0xMjh6bTMyMCAxMjhoLTQ4LjkwNWM2NS4yMTctNzIuODU4IDY1LjIzNi0xODMuMTIgMC0yNTZIMzg0YzcwLjc0MSAwIDEyOCA1Ny4yNDkgMTI4IDEyOCAwIDcwLjc0LTU3LjI0OSAxMjgtMTI4IDEyOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9nZ2xlT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDY0SDE5MkM4NiA2NCAwIDE1MCAwIDI1NnM4NiAxOTIgMTkyIDE5MmgxOTJjMTA2IDAgMTkyLTg2IDE5Mi0xOTJTNDkwIDY0IDM4NCA2NHptMCAzMjBjLTcwLjggMC0xMjgtNTcuMy0xMjgtMTI4IDAtNzAuOCA1Ny4zLTEyOCAxMjgtMTI4IDcwLjggMCAxMjggNTcuMyAxMjggMTI4IDAgNzAuOC01Ny4zIDEyOC0xMjggMTI4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2lsZXRQYXBlclNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0LDE5MlYzNjQuMTNjMCw0MS4xMi05Ljc1LDYyLjc1LTMxLjEyLDEyNi44N0ExNiwxNiwwLDAsMCw0OCw1MTJIMzI4Ljg2YTMxLjg3LDMxLjg3LDAsMCwwLDMwLjM4LTIxLjg3YzkuMzEtMjcuODMsMTgtNTMuMzUsMjIuMTgtODUuNTVsLTMxNi0yNDQuMjVDNjQuNTMsMTcwLjY2LDY0LDE4MS4xOSw2NCwxOTJaTTYzMy44Miw0NTguMDlsLTEwMi03OC44MUM1NzUuMjgsMzYwLjkxLDYwOCwyODQuMzIsNjA4LDE5Miw2MDgsODYsNTY1LDAsNTEyLDBzLTk2LDg2LTk2LDE5MmMwLDQyLDcsODAuNCwxOC40MywxMTJMMzg0LDI2NVYxOTJjMC04My42MiwyMy42My0xNTMuNSw2MC41LTE5MkgxNjBjLTIzLjMzLDAtNDQuNjMsMTYuODMtNjEuMjYsNDQuNTNMNDUuNDYsMy4zOEExNiwxNiwwLDAsMCwyMyw2LjE5TDMuMzcsMzEuNDVBMTYsMTYsMCwwLDAsNi4xOCw1My45MUw1OTQuNTQsNTA4LjYzQTE2LDE2LDAsMCwwLDYxNyw1MDUuODFsMTkuNjQtMjUuMjZBMTYsMTYsMCwwLDAsNjMzLjgyLDQ1OC4wOVpNNTEyLDI1NmMtMTcuNjMsMC0zMi0yOC42Mi0zMi02NHMxNC4zNy02NCwzMi02NCwzMiwyOC42MywzMiw2NFM1MjkuNjIsMjU2LDUxMiwyNTZaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvaWxldFBhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwQzc0Ljk4IDAgMzIgODUuOTYgMzIgMTkydjE3Mi4wN2MwIDQxLjEyLTkuOCA2Mi43Ny0zMS4xNyAxMjYuODdDLTIuNjIgNTAxLjMgNS4wOSA1MTIgMTYuMDEgNTEyaDI4MC45MmMxMy43NyAwIDI2LTguODEgMzAuMzYtMjEuODggMTIuODMtMzguNDggMjQuNzEtNzIuNCAyNC43MS0xMjYuMDVWMTkyYzAtODMuNiAyMy42Ny0xNTMuNTIgNjAuNDQtMTkySDEyOHpNOTYgMjI0Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2IDE2IDcuMTYgMTYgMTYtNy4xNiAxNi0xNiAxNnptNjQgMGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNiAxNiA3LjE2IDE2IDE2LTcuMTYgMTYtMTYgMTZ6bTY0IDBjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTYgMTYgNy4xNiAxNiAxNi03LjE2IDE2LTE2IDE2em02NCAwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2IDE2IDcuMTYgMTYgMTYtNy4xNiAxNi0xNiAxNnpNNDgwIDBjLTUzLjAyIDAtOTYgODUuOTYtOTYgMTkyczQyLjk4IDE5MiA5NiAxOTIgOTYtODUuOTYgOTYtMTkyUzUzMy4wMiAwIDQ4MCAwem0wIDI1NmMtMTcuNjcgMC0zMi0yOC42NS0zMi02NHMxNC4zMy02NCAzMi02NCAzMiAyOC42NSAzMiA2NC0xNC4zMyA2NC0zMiA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9pbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCA0OGM4LjggMCAxNi03LjIgMTYtMTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2SDE2QzcuMiAwIDAgNy4yIDAgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDE2djE1Ni43QzExLjggMjE0LjggMCAyMjYuOSAwIDI0MGMwIDY3LjIgMzQuNiAxMjYuMiA4Ni44IDE2MC41bC0yMS40IDcwLjJDNTkuMSA0OTEuMiA3NC41IDUxMiA5NiA1MTJoMTkyYzIxLjUgMCAzNi45LTIwLjggMzAuNi00MS4zbC0yMS40LTcwLjJDMzQ5LjQgMzY2LjIgMzg0IDMwNy4yIDM4NCAyNDBjMC0xMy4xLTExLjgtMjUuMi0zMi0zNS4zVjQ4aDE2ek04MCA3MmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEg4OGMtNC40IDAtOC0zLjYtOC04Vjcyem0xMTIgMjAwYy03Ny4xIDAtMTM5LjYtMTQuMy0xMzkuNi0zMnM2Mi41LTMyIDEzOS42LTMyIDEzOS42IDE0LjMgMTM5LjYgMzItNjIuNSAzMi0xMzkuNiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9vbGJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuNjMgMjE0LjYzbC00NS4yNS00NS4yNWMtNi02LTE0LjE0LTkuMzctMjIuNjMtOS4zN0gzODRWODBjMC0yNi41MS0yMS40OS00OC00OC00OEgxNzZjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2ODBINzcuMjVjLTguNDkgMC0xNi42MiAzLjM3LTIyLjYzIDkuMzdMOS4zNyAyMTQuNjNjLTYgNi05LjM3IDE0LjE0LTkuMzcgMjIuNjNWMzIwaDEyOHYtMTZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMzJjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTZoMTI4di0xNmMwLTguODQgNy4xNi0xNiAxNi0xNmgzMmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYxNmgxMjh2LTgyLjc1YzAtOC40OC0zLjM3LTE2LjYyLTkuMzctMjIuNjJ6TTMyMCAxNjBIMTkyVjk2aDEyOHY2NHptNjQgMjA4YzAgOC44NC03LjE2IDE2LTE2IDE2aC0zMmMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTE2SDE5MnYxNmMwIDguODQtNy4xNiAxNi0xNiAxNmgtMzJjLTguODQgMC0xNi03LjE2LTE2LTE2di0xNkgwdjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNDQ4YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2SDM4NHYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9vbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAxLjEgMzk1LjdMMzg0IDI3OC42Yy0yMy4xLTIzLjEtNTcuNi0yNy42LTg1LjQtMTMuOUwxOTIgMTU4LjFWOTZMNjQgMCAwIDY0bDk2IDEyOGg2Mi4xbDEwNi42IDEwNi42Yy0xMy42IDI3LjgtOS4yIDYyLjMgMTMuOSA4NS40bDExNy4xIDExNy4xYzE0LjYgMTQuNiAzOC4yIDE0LjYgNTIuNyAwbDUyLjctNTIuN2MxNC41LTE0LjYgMTQuNS0zOC4yIDAtNTIuN3pNMzMxLjcgMjI1YzI4LjMgMCA1NC45IDExIDc0LjkgMzFsMTkuNCAxOS40YzE1LjgtNi45IDMwLjgtMTYuNSA0My44LTI5LjUgMzcuMS0zNy4xIDQ5LjctODkuMyAzNy45LTEzNi43LTIuMi05LTEzLjUtMTIuMS0yMC4xLTUuNWwtNzQuNCA3NC40LTY3LjktMTEuM0wzMzQgOTguOWw3NC40LTc0LjRjNi42LTYuNiAzLjQtMTcuOS01LjctMjAuMi00Ny40LTExLjctOTkuNi45LTEzNi42IDM3LjktMjguNSAyOC41LTQxLjkgNjYuMS00MS4yIDEwMy42bDgyLjEgODIuMWM4LjEtMS45IDE2LjUtMi45IDI0LjctMi45em0tMTAzLjkgODJsLTU2LjctNTYuN0wxOC43IDQwMi44Yy0yNSAyNS0yNSA2NS41IDAgOTAuNXM2NS41IDI1IDkwLjUgMGwxMjMuNi0xMjMuNmMtNy42LTE5LjktOS45LTQxLjYtNS02Mi43ek02NCA0NzJjLTEzLjIgMC0yNC0xMC44LTI0LTI0IDAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRjMCAxMy4yLTEwLjcgMjQtMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvb3RoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0My45OCA5Ni4yNWMtMTEuMDEtNDUuMjItNDcuMTEtODIuMDYtOTIuMDEtOTMuNzItMzIuMTktOC4zNi02MyA1LjEtODkuMTQgMjQuMzMtMy4yNSAyLjM5LTYuOTYgMy43My0xMC41IDUuNDhsMjguMzIgMTguMjFjNy40MiA0Ljc3IDkuNTggMTQuNjcgNC44IDIyLjExLTQuNDYgNi45NS0xNC4yNyA5Ljg2LTIyLjExIDQuOEwxNjIuODMgMTIuODRjLTIwLjctMTAuODUtNDMuMzgtMTYuNC02Ni44MS0xMC4zMS00NC45IDExLjY3LTgxIDQ4LjUtOTIuMDEgOTMuNzItMTAuMTMgNDEuNjItLjQyIDgwLjgxIDIxLjUgMTEwLjQzIDIzLjM2IDMxLjU3IDMyLjY4IDY4LjY2IDM2LjI5IDEwNy4zNSA0LjQgNDcuMTYgMTAuMzMgOTQuMTYgMjAuOTQgMTQwLjMybDcuOCAzMy45NWMzLjE5IDEzLjg3IDE1LjQ5IDIzLjcgMjkuNjcgMjMuNyAxMy45NyAwIDI2LjE1LTkuNTUgMjkuNTQtMjMuMTZsMzQuNDctMTM4LjQyYzQuNTYtMTguMzIgMjAuOTYtMzEuMTYgMzkuNzYtMzEuMTZzMzUuMiAxMi44NSAzOS43NiAzMS4xNmwzNC40NyAxMzguNDJjMy4zOSAxMy42MSAxNS41NyAyMy4xNiAyOS41NCAyMy4xNiAxNC4xOCAwIDI2LjQ4LTkuODMgMjkuNjctMjMuN2w3LjgtMzMuOTVjMTAuNjEtNDYuMTUgMTYuNTMtOTMuMTYgMjAuOTQtMTQwLjMyIDMuNjEtMzguNyAxMi45My03NS43OCAzNi4yOS0xMDcuMzUgMjEuOTUtMjkuNjEgMzEuNjYtNjguOCAyMS41My0xMTAuNDN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvcmFoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMC4wNSAzNjYuNDhsMTcuNzItMjkuNjRoLTM1LjQ2em05OS4yMS0xNjZIMzgyLjRsMTguNDYgMzAuODJ6TTQ4IDBDMjEuNDkgMCAwIDE0LjMzIDAgMzJ2NDQ4YzAgMTcuNjcgMjEuNDkgMzIgNDggMzJzNDgtMTQuMzMgNDgtMzJWMzJDOTYgMTQuMzMgNzQuNTEgMCA0OCAwem0xNzIuNzQgMzExLjVoMzYuODVsLTE4LjQ2LTMwLjgyem0xNjEuNzEgMGgzNi44NmwtMTguNDUtMzAuOHpNMTI4IDQ2NGgzODRWNDhIMTI4em02Ni43Ny0yNzguMTNhMjEuMjIgMjEuMjIgMCAwIDEgMTguNDgtMTAuNzFoNTkuNDVsMjkuMTMtNDguNzFhMjEuMTMgMjEuMTMgMCAwIDEgMTguMjItMTAuMzdBMjAuNzYgMjAuNzYgMCAwIDEgMzM4IDEyNi4yOWwyOS4yNSA0OC44Nmg1OS41MmEyMS4xMiAyMS4xMiAwIDAgMSAxOC4xIDMyTDQxNS42MyAyNTYgNDQ1IDMwNWEyMC42OSAyMC42OSAwIDAgMSAuMjQgMjEuMTIgMjEuMjUgMjEuMjUgMCAwIDEtMTguNDggMTAuNzJoLTU5LjQ3bC0yOS4xMyA0OC43YTIxLjEzIDIxLjEzIDAgMCAxLTE4LjE2IDEwLjQgMjAuNzkgMjAuNzkgMCAwIDEtMTgtMTAuMjJsLTI5LjI1LTQ4Ljg4aC01OS41YTIxLjExIDIxLjExIDAgMCAxLTE4LjEtMzJMMjI0LjM2IDI1NiAxOTUgMjA3YTIwLjcgMjAuNyAwIDAgMS0uMjMtMjEuMTN6TTU5MiAwYy0yNi41MSAwLTQ4IDE0LjMzLTQ4IDMydjQ0OGMwIDE3LjY3IDIxLjQ5IDMyIDQ4IDMyczQ4LTE0LjMzIDQ4LTMyVjMyYzAtMTcuNjctMjEuNDktMzItNDgtMzJ6TTMyMCAxNDUuNTNsLTE3Ljc4IDI5LjYyaDM1LjQ2em0tNjIuNDUgNTVoLTM2LjgxbDE4LjQ0IDMwLjh6bTI5LjU4IDExMWg2NS43OUwzODYuMDkgMjU2bC0zMy4yMy01NS41MmgtNjUuNzlMMjUzLjkgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb3JpaUdhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc2LjQ1IDMyaC0yNDAuOUEzMDMuMTcgMzAzLjE3IDAgMCAxIDAgMHY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMydjY0SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0OHYyNDBjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjU2aDI1NnYyNDBjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjU2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNmgtNDh2LTY0aDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMGEzMDMuMTcgMzAzLjE3IDAgMCAxLTEzNS41NSAzMnpNMTI4IDEyOGg5NnY2NGgtOTZ2LTY0em0yNTYgNjRoLTk2di02NGg5NnY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhY3RvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjggMzM2Yy00OC42IDAtODggMzkuNC04OCA4OHMzOS40IDg4IDg4IDg4IDg4LTM5LjQgODgtODgtMzkuNC04OC04OC04OHptMCAxMTJjLTEzLjIzIDAtMjQtMTAuNzctMjQtMjRzMTAuNzctMjQgMjQtMjQgMjQgMTAuNzcgMjQgMjQtMTAuNzcgMjQtMjQgMjR6bTgwLTI4OGgtNjR2LTQwLjJjMC0xNC4xMiA0LjctMjcuNzYgMTMuMTUtMzguODQgNC40Mi01LjggMy41NS0xNC4wNi0xLjMyLTE5LjQ5TDUzNC4yIDM3LjNjLTYuNjYtNy40NS0xOC4zMi02LjkyLTI0LjcuNzhDNDkwLjU4IDYwLjkgNDgwIDg5LjgxIDQ4MCAxMTkuOFYxNjBIMzc3LjY3TDMyMS41OCAyOS4xNEE0Ny45MTQgNDcuOTE0IDAgMCAwIDI3Ny40NSAwSDE0NGMtMjYuNDcgMC00OCAyMS41My00OCA0OHYxNDYuNTJjLTguNjMtNi43My0yMC45Ni02LjQ2LTI4Ljg5IDEuNDdMMzYgMjI3LjFjLTguNTkgOC41OS04LjU5IDIyLjUyIDAgMzEuMTFsNS4wNiA1LjA2Yy00Ljk5IDkuMjYtOC45NiAxOC44Mi0xMS45MSAyOC43MkgyMmMtMTIuMTUgMC0yMiA5Ljg1LTIyIDIydjQ0YzAgMTIuMTUgOS44NSAyMiAyMiAyMmg3LjE0YzIuOTYgOS45MSA2LjkyIDE5LjQ2IDExLjkxIDI4LjczbC01LjA2IDUuMDZjLTguNTkgOC41OS04LjU5IDIyLjUyIDAgMzEuMTFMNjcuMSA0NzZjOC41OSA4LjU5IDIyLjUyIDguNTkgMzEuMTEgMGw1LjA2LTUuMDZjOS4yNiA0Ljk5IDE4LjgyIDguOTYgMjguNzIgMTEuOTFWNDkwYzAgMTIuMTUgOS44NSAyMiAyMiAyMmg0NGMxMi4xNSAwIDIyLTkuODUgMjItMjJ2LTcuMTRjOS45LTIuOTUgMTkuNDYtNi45MiAyOC43Mi0xMS45MWw1LjA2IDUuMDZjOC41OSA4LjU5IDIyLjUyIDguNTkgMzEuMTEgMGwzMS4xMS0zMS4xMWM4LjU5LTguNTkgOC41OS0yMi41MiAwLTMxLjExbC01LjA2LTUuMDZjNC45OS05LjI2IDguOTYtMTguODIgMTEuOTEtMjguNzJIMzMwYzEyLjE1IDAgMjItOS44NSAyMi0yMnYtNmg4MC41NGMyMS45MS0yOC45OSA1Ni4zMi00OCA5NS40Ni00OCAxOC42NCAwIDM2LjA3IDQuNjEgNTEuOCAxMi4ybDUwLjgyLTUwLjgyYzYtNiA5LjM3LTE0LjE0IDkuMzctMjIuNjNWMTkyYy4wMS0xNy42Ny0xNC4zMi0zMi0zMS45OS0zMnpNMTc2IDQxNmMtNDQuMTggMC04MC0zNS44Mi04MC04MHMzNS44Mi04MCA4MC04MCA4MCAzNS44MiA4MCA4MC0zNS44MiA4MC04MCA4MHptMjItMjU2aC0zOFY2NGgxMDYuODlsNDEuMTUgOTZIMTk4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFkZW1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjYwLjYgOTZIMTJjLTYuNiAwLTEyIDUuNC0xMiAxMnY0My4xYzAgNi42IDUuNCAxMiAxMiAxMmg4NS4xVjQwNGMwIDYuNiA1LjQgMTIgMTIgMTJoNTQuM2M2LjYgMCAxMi01LjQgMTItMTJWMTYzLjFoODUuMWM2LjYgMCAxMi01LjQgMTItMTJWMTA4Yy4xLTYuNi01LjMtMTItMTEuOS0xMnpNNjQwIDQwM2wtMjQtMjk2Yy0uNS02LjItNS43LTExLTEyLTExaC02NS40Yy01LjEgMC05LjcgMy4zLTExLjMgOC4xbC00My44IDEyNy4xYy03LjIgMjAuNi0xNi4xIDUyLjgtMTYuMSA1Mi44aC0uOXMtOC45LTMyLjItMTYuMS01Mi44bC00My44LTEyNy4xYy0xLjctNC44LTYuMi04LjEtMTEuMy04LjFoLTY1LjRjLTYuMiAwLTExLjQgNC44LTEyIDExbC0yNC40IDI5NmMtLjYgNyA0LjkgMTMgMTIgMTNIMzYwYzYuMyAwIDExLjUtNC45IDEyLTExLjJsOS4xLTEzMi45YzEuOC0yNC4yIDAtNTMuNyAwLTUzLjdoLjlzMTAuNyAzMy42IDE3LjkgNTMuN2wzMC43IDg0LjdjMS43IDQuNyA2LjIgNy45IDExLjMgNy45aDUwLjNjNS4xIDAgOS42LTMuMiAxMS4zLTcuOWwzMC43LTg0LjdjNy4yLTIwLjEgMTcuOS01My43IDE3LjktNTMuN2guOXMtMS44IDI5LjUgMCA1My43bDkuMSAxMzIuOWMuNCA2LjMgNS43IDExLjIgMTIgMTEuMkg2MjhjNyAwIDEyLjUtNiAxMi0xM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhZmZpY0xpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxOTJoLTY0di0zNy44OGMzNy4yLTEzLjIyIDY0LTQ4LjM4IDY0LTkwLjEyaC02NFYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDk2Qzc4LjMzIDAgNjQgMTQuMzMgNjQgMzJ2MzJIMGMwIDQxLjc0IDI2LjggNzYuOSA2NCA5MC4xMlYxOTJIMGMwIDQxLjc0IDI2LjggNzYuOSA2NCA5MC4xMlYzMjBIMGMwIDQyLjg0IDI4LjI1IDc4LjY5IDY2Ljk5IDkxLjA1Qzc5LjQyIDQ2OC43MiAxMzAuNiA1MTIgMTkyIDUxMnMxMTIuNTgtNDMuMjggMTI1LjAxLTEwMC45NUMzNTUuNzUgMzk4LjY5IDM4NCAzNjIuODQgMzg0IDMyMGgtNjR2LTM3Ljg4YzM3LjItMTMuMjIgNjQtNDguMzggNjQtOTAuMTJ6TTE5MiA0MTZjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bTAtMTI4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4LTIxLjQ5IDQ4LTQ4IDQ4em0wLTEyOGMtMjYuNTEgMC00OC0yMS40OS00OC00OHMyMS40OS00OCA0OC00OCA0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhaWxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQsMzIwSDU0NFY4MGExNiwxNiwwLDAsMC0xNi0xNkgxNkExNiwxNiwwLDAsMCwwLDgwVjM2OGExNiwxNiwwLDAsMCwxNiwxNkg2NS42MWM3LjgzLTU0LjIxLDU0LTk2LDExMC4zOS05NnMxMDIuNTYsNDEuNzksMTEwLjM5LDk2SDYyNGExNiwxNiwwLDAsMCwxNi0xNlYzMzZBMTYsMTYsMCwwLDAsNjI0LDMyMFpNOTYsMjQzLjY4YTE3Ni4yOSwxNzYuMjksMCwwLDAtMzIsMjAuNzFWMTM2YTgsOCwwLDAsMSw4LThIODhhOCw4LDAsMCwxLDgsOFptOTYtMTguNTRjLTUuMzEtLjQ5LTEwLjU3LTEuMTQtMTYtMS4xNHMtMTAuNjkuNjUtMTYsMS4xNFYxMzZhOCw4LDAsMCwxLDgtOGgxNmE4LDgsMCwwLDEsOCw4Wm05NiwzOS4yNWExNzYuMjksMTc2LjI5LDAsMCwwLTMyLTIwLjcxVjEzNmE4LDgsMCwwLDEsOC04aDE2YTgsOCwwLDAsMSw4LDhaTTM4NCwzMjBIMzUyVjEzNmE4LDgsMCwwLDEsOC04aDE2YTgsOCwwLDAsMSw4LDhabTk2LDBINDQ4VjEzNmE4LDgsMCwwLDEsOC04aDE2YTgsOCwwLDAsMSw4LDhabS0zMDQsMGE4MCw4MCwwLDEsMCw4MCw4MEE4MCw4MCwwLDAsMCwxNzYsMzIwWm0wLDExMmEzMiwzMiwwLDEsMSwzMi0zMkEzMiwzMiwwLDAsMSwxNzYsNDMyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZ2MjU2YzAgNTEuODE1LTYxLjYyNCA5Ni0xMzAuMDIyIDk2bDYyLjk4IDQ5LjcyMUMzODYuOTA1IDUwMi40MTcgMzgzLjU2MiA1MTIgMzc2IDUxMkg3MmMtNy41NzggMC0xMC44OTItOS41OTQtNC45NTctMTQuMjc5TDEzMC4wMjIgNDQ4QzYxLjgyIDQ0OCAwIDQwMy45NTQgMCAzNTJWOTZDMCA0Mi45ODEgNjQgMCAxMjggMGgxOTJjNjUgMCAxMjggNDIuOTgxIDEyOCA5NnptLTQ4IDEzNlYxMjBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDcyYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTEyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMDRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0em0tMTc2IDY0Yy0zMC45MjggMC01NiAyNS4wNzItNTYgNTZzMjUuMDcyIDU2IDU2IDU2IDU2LTI1LjA3MiA1Ni01Ni0yNS4wNzItNTYtNTYtNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyUzMwNS43IDAgMjg4IDBzLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMjIzLjUtMTIuMWMtMi4zLTguNi0xMS0xMy42LTE5LjYtMTEuM2wtNDgwIDEyOGMtOC41IDIuMy0xMy42IDExLTExLjMgMTkuNkMyLjUgMTk1LjMgOC45IDIwMCAxNiAyMDBjMS40IDAgMi44LS4yIDQuMS0uNUwyNDAgMTQwLjhWMjI0SDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYyMjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzg0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1NmMwLTE3LjctMTQuMy0zMi0zMi0zMkgyNzJ2LTkxLjdsMjI4LjEtNjAuOGM4LjYtMi4zIDEzLjYtMTEuMSAxMS40LTE5LjZ6TTE3NiAzODRIODB2LTk2aDk2djk2em0xNjAtOTZoOTZ2OTZoLTk2di05NnptLTMyIDB2OTZoLTk2di05Nmg5NnpNMTkyIDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhbnNnZW5kZXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY4IDBoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktODAuNyA4MC43QzI5NC41IDEwNC4xIDI2OC4yIDk2IDI0MCA5NmMtMjguMiAwLTU0LjUgOC4xLTc2LjcgMjIuMWwtMTYuNS0xNi41IDE5LjgtMTkuOGM0LjctNC43IDQuNy0xMi4zIDAtMTdsLTI4LjMtMjguM2MtNC43LTQuNy0xMi4zLTQuNy0xNyAwbC0xOS44IDE5LjgtMTktMTkgMTYuOS0xNi45QzEwNy4xIDEyLjkgMTAxLjcgMCA5MSAwSDEyQzUuNCAwIDAgNS40IDAgMTJ2NzljMCAxMC43IDEyLjkgMTYgMjAuNSA4LjVsMTYuOS0xNi45IDE5IDE5LTE5LjggMTkuOGMtNC43IDQuNy00LjcgMTIuMyAwIDE3bDI4LjMgMjguM2M0LjcgNC43IDEyLjMgNC43IDE3IDBsMTkuOC0xOS44IDE2LjUgMTYuNUMxMDQuMSAxODUuNSA5NiAyMTEuOCA5NiAyNDBjMCA2OC41IDQ3LjkgMTI1LjkgMTEyIDE0MC40VjQwOGgtMzZjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMzZ2MjhjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMjhoMzZjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTM2di0yNy42YzY0LjEtMTQuNiAxMTItNzEuOSAxMTItMTQwLjQgMC0yOC4yLTguMS01NC41LTIyLjEtNzYuN2w4MC43LTgwLjcgMTYuOSAxNi45YzcuNiA3LjYgMjAuNSAyLjIgMjAuNS04LjVWMTJjMC02LjYtNS40LTEyLTEyLTEyek0yNDAgMzIwYy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhbnNnZW5kZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyIDBoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktODAuNyA4MC43QzE5OC41IDEwNC4xIDE3Mi4yIDk2IDE0NCA5NiA2NC41IDk2IDAgMTYwLjUgMCAyNDBjMCA2OC41IDQ3LjkgMTI1LjkgMTEyIDE0MC40VjQwOEg3NmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgzNnYyOGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEydi0yOGgzNmM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMzZ2LTI3LjZjNjQuMS0xNC42IDExMi03MS45IDExMi0xNDAuNCAwLTI4LjItOC4xLTU0LjUtMjIuMS03Ni43bDgwLjctODAuNyAxNi45IDE2LjljNy42IDcuNiAyMC41IDIuMiAyMC41LTguNVYxMmMwLTYuNi01LjQtMTItMTItMTJ6TTE0NCAzMjBjLTQ0LjEgMC04MC0zNS45LTgwLTgwczM1LjktODAgODAtODAgODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFzaEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0NjRhNDggNDggMCAwIDAgNDggNDhoMjg4YTQ4IDQ4IDAgMCAwIDQ4LTQ4VjEyOEgzMnptMjcyLTI1NmExNiAxNiAwIDAgMSAzMiAwdjIyNGExNiAxNiAwIDAgMS0zMiAwem0tOTYgMGExNiAxNiAwIDAgMSAzMiAwdjIyNGExNiAxNiAwIDAgMS0zMiAwem0tOTYgMGExNiAxNiAwIDAgMSAzMiAwdjIyNGExNiAxNiAwIDAgMS0zMiAwek00MzIgMzJIMzEybC05LjQtMTguN0EyNCAyNCAwIDAgMCAyODEuMSAwSDE2Ni44YTIzLjcyIDIzLjcyIDAgMCAwLTIxLjQgMTMuM0wxMzYgMzJIMTZBMTYgMTYgMCAwIDAgMCA0OHYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYXNoUmVzdG9yZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0NjRhNDggNDggMCAwIDAgNDggNDhoMjg4YTQ4IDQ4IDAgMCAwIDQ4LTQ4VjEyOEgzMnptOTEuMzEtMTcyLjhsODkuMzgtOTQuMjZhMTUuNDEgMTUuNDEgMCAwIDEgMjIuNjIgMGw4OS4zOCA5NC4yNmMxMC4wOCAxMC42MiAyLjk0IDI4LjgtMTEuMzIgMjguOEgyNTZ2MTEyYTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNlYzMjBoLTU3LjM3Yy0xNC4yNiAwLTIxLjQtMTguMTgtMTEuMzItMjguOHpNNDMyIDMySDMxMmwtOS40LTE4LjdBMjQgMjQgMCAwIDAgMjgxLjEgMEgxNjYuOGEyMy43MiAyMy43MiAwIDAgMC0yMS40IDEzLjNMMTM2IDMySDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFzaFJlc3RvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTMuMiA0NjdhNDggNDggMCAwIDAgNDcuOSA0NWgyNDUuOGE0OCA0OCAwIDAgMCA0Ny45LTQ1TDQxNiAxMjhIMzJ6bTcwLjExLTE3NS44bDg5LjM4LTk0LjI2YTE1LjQxIDE1LjQxIDAgMCAxIDIyLjYyIDBsODkuMzggOTQuMjZjMTAuMDggMTAuNjIgMi45NCAyOC44LTExLjMyIDI4LjhIMjU2djExMmExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZWMzIwaC01Ny4zN2MtMTQuMjYgMC0yMS40LTE4LjE4LTExLjMyLTI4Ljh6TTQzMiAzMkgzMTJsLTkuNC0xOC43QTI0IDI0IDAgMCAwIDI4MS4xIDBIMTY2LjhhMjMuNzIgMjMuNzIgMCAwIDAtMjEuNCAxMy4zTDEzNiAzMkgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDMySDMxMmwtOS40LTE4LjdBMjQgMjQgMCAwIDAgMjgxLjEgMEgxNjYuOGEyMy43MiAyMy43MiAwIDAgMC0yMS40IDEzLjNMMTM2IDMySDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2ek01My4yIDQ2N2E0OCA0OCAwIDAgMCA0Ny45IDQ1aDI0NS44YTQ4IDQ4IDAgMCAwIDQ3LjktNDVMNDE2IDEyOEgzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzguMzEgMzc4LjQ5TDI5OC40MiAyODhoMzAuNjNjOS4wMSAwIDE2Ljk4LTUgMjAuNzgtMTMuMDYgMy44LTguMDQgMi41NS0xNy4yNi0zLjI4LTI0LjA1TDI2OC40MiAxNjBoMjguODljOS4xIDAgMTcuMy01LjM1IDIwLjg2LTEzLjYxIDMuNTItOC4xMyAxLjg2LTE3LjU5LTQuMjQtMjQuMDhMMjAzLjY2IDQuODNjLTYuMDMtNi40NS0xNy4yOC02LjQ1LTIzLjMyIDBMNzAuMDYgMTIyLjMxYy02LjEgNi40OS03Ljc1IDE1Ljk1LTQuMjQgMjQuMDhDNjkuMzggMTU0LjY1IDc3LjU5IDE2MCA4Ni42OSAxNjBoMjguODlsLTc4LjE0IDkwLjkxYy01LjgxIDYuNzgtNy4wNiAxNS45OS0zLjI3IDI0LjA0QzM3Ljk3IDI4MyA0NS45MyAyODggNTQuOTUgMjg4aDMwLjYzTDUuNjkgMzc4LjQ5Yy02IDYuNzktNy4zNiAxNi4wOS0zLjU2IDI0LjI2IDMuNzUgOC4wNSAxMiAxMy4yNSAyMS4wMSAxMy4yNUgxNjB2MjQuNDVsLTMwLjI5IDQ4LjRjLTUuMzIgMTAuNjQgMi40MiAyMy4xNiAxNC4zMSAyMy4xNmg5NS45NmMxMS44OSAwIDE5LjYzLTEyLjUyIDE0LjMxLTIzLjE2TDIyNCA0NDAuNDVWNDE2aDEzNi44NmM5LjAxIDAgMTcuMjYtNS4yIDIxLjAxLTEzLjI1IDMuOC04LjE3IDIuNDQtMTcuNDctMy41Ni0yNC4yNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJvcGh5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU1MiA2NEg0NDhWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRIMTUyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY0MEgyNEMxMC43IDY0IDAgNzQuNyAwIDg4djU2YzAgMzUuNyAyMi41IDcyLjQgNjEuOSAxMDAuNyAzMS41IDIyLjcgNjkuOCAzNy4xIDExMCA0MS43QzIwMy4zIDMzOC41IDI0MCAzNjAgMjQwIDM2MHY3MmgtNDhjLTM1LjMgMC02NCAyMC43LTY0IDU2djEyYzAgNi42IDUuNCAxMiAxMiAxMmgyOTZjNi42IDAgMTItNS40IDEyLTEydi0xMmMwLTM1LjMtMjguNy01Ni02NC01NmgtNDh2LTcyczM2LjctMjEuNSA2OC4xLTczLjZjNDAuMy00LjYgNzguNi0xOSAxMTAtNDEuNyAzOS4zLTI4LjMgNjEuOS02NSA2MS45LTEwMC43Vjg4YzAtMTMuMy0xMC43LTI0LTI0LTI0ek05OS4zIDE5Mi44Qzc0LjkgMTc1LjIgNjQgMTU1LjYgNjQgMTQ0di0xNmg2NC4yYzEgMzIuNiA1LjggNjEuMiAxMi44IDg2LjItMTUuMS01LjItMjkuMi0xMi40LTQxLjctMjEuNHpNNTEyIDE0NGMwIDE2LjEtMTcuNyAzNi4xLTM1LjMgNDguOC0xMi41IDktMjYuNyAxNi4yLTQxLjggMjEuNCA3LTI1IDExLjgtNTMuNiAxMi44LTg2LjJINTEydjE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja0xvYWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAuMiAzNzUuNmMyLjMgOC41IDExLjEgMTMuNiAxOS42IDExLjNsMjE2LjQtNThjOC41LTIuMyAxMy42LTExLjEgMTEuMy0xOS42bC00OS43LTE4NS41Yy0yLjMtOC41LTExLjEtMTMuNi0xOS42LTExLjNMMTUxIDEzMy4zbDI0LjggOTIuNy02MS44IDE2LjUtMjQuOC05Mi43LTc3LjMgMjAuN0MzLjQgMTcyLjgtMS43IDE4MS42LjYgMTkwLjFsNDkuNiAxODUuNXpNMzg0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMyMy42TDUuOSA0NTBjLTQuMyAxLjItNi44IDUuNi01LjYgOS44bDEyLjYgNDYuM2MxLjIgNC4zIDUuNiA2LjggOS44IDUuNmwzOTMuNy0xMDcuNEM0MTguOCA0NjQuMSA0NjcuNiA1MTIgNTI4IDUxMmM2MS45IDAgMTEyLTUwLjEgMTEyLTExMlYwSDM4NHptMTQ0IDQ0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrTW9uc3RlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQgMjI0aC0xNnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtNzMuNkw0MTkuMjIgMjQuMDJBNjQuMDI1IDY0LjAyNSAwIDAgMCAzNjkuMjQgMEgyNTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZINDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djgwSDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNi43MmMyOS4yMS0zOC42NSA3NS4xLTY0IDEyNy4yOC02NHM5OC4wNyAyNS4zNSAxMjcuMjggNjRoNjUuNDVjMjkuMjEtMzguNjUgNzUuMS02NCAxMjcuMjgtNjRzOTguMDcgMjUuMzUgMTI3LjI4IDY0SDYyNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bS0zMzYtOTZWNjRoODEuMjRsNTEuMiA2NEgyODh6bTMwNCAyMjRoLTUuMmMtMi4yLTcuMzMtNS4wNy0xNC4yOC04LjY1LTIwLjg5bDMuNjctMy42N2M2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzbC0yMi42My0yMi42M2MtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtMy42NyAzLjY3QTExMC44NSAxMTAuODUgMCAwIDAgNTEyIDI3Ny4yVjI3MmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djUuMmMtNy4zMyAyLjItMTQuMjggNS4wNy0yMC44OSA4LjY1bC0zLjY3LTMuNjdjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTIyLjYzIDIyLjYzYy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDMuNjcgMy42N0ExMTAuODUgMTEwLjg1IDAgMCAwIDM3My4yIDM1MkgzNjhjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDUuMmMyLjIgNy4zMyA1LjA3IDE0LjI4IDguNjUgMjAuODlsLTMuNjcgMy42N2MtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wyMi42MyAyMi42M2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDMuNjctMy42N2M2LjYxIDMuNTcgMTMuNTcgNi40NSAyMC45IDguNjV2NS4yYzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di01LjJjNy4zMy0yLjIgMTQuMjgtNS4wNyAyMC45LTguNjVsMy42NyAzLjY3YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMjIuNjMtMjIuNjNjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtMy42Ny0zLjY3YTExMC44NSAxMTAuODUgMCAwIDAgOC42NS0yMC44OWg1LjJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYy0uMDItOC44NC03LjE4LTE2LTE2LjAyLTE2em0tMTEyIDgwYy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4LTIxLjQ5IDQ4LTQ4IDQ4em0tMjA4LTgwaC01LjJjLTIuMi03LjMzLTUuMDctMTQuMjgtOC42NS0yMC44OWwzLjY3LTMuNjdjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtMjIuNjMtMjIuNjNjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTMuNjcgMy42N0ExMTAuODUgMTEwLjg1IDAgMCAwIDE5MiAyNzcuMlYyNzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY1LjJjLTcuMzMgMi4yLTE0LjI4IDUuMDctMjAuODkgOC42NWwtMy42Ny0zLjY3Yy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwTDU4LjE4IDMwNC44Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDMuNjcgMy42N2ExMTAuODUgMTEwLjg1IDAgMCAwLTguNjUgMjAuODlINDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDUuMmMyLjIgNy4zMyA1LjA3IDE0LjI4IDguNjUgMjAuODlsLTMuNjcgMy42N2MtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wyMi42MyAyMi42M2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDMuNjctMy42N2M2LjYxIDMuNTcgMTMuNTcgNi40NSAyMC45IDguNjV2NS4yYzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di01LjJjNy4zMy0yLjIgMTQuMjgtNS4wNyAyMC45LTguNjVsMy42NyAzLjY3YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMjIuNjMtMjIuNjNjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtMy42Ny0zLjY3YTExMC44NSAxMTAuODUgMCAwIDAgOC42NS0yMC44OWg1LjJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyQzI4OCAzNTkuMTYgMjgwLjg0IDM1MiAyNzIgMzUyem0tMTEyIDgwYy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4LTIxLjQ5IDQ4LTQ4IDQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja01vdmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjEuMyAyMzcuM2wtNTguNS01OC41Yy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43SDQ4MFY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDMyIDAgNDYuMyAwIDY0djMzNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MCAyNi4zIDAgNDkuNC0xMi45IDY0LTMyLjQgMTQuNiAxOS42IDM3LjcgMzIuNCA2NCAzMi40IDQ0LjIgMCA4MC0zNS44IDgwLTgwIDAtNS41LS42LTEwLjgtMS42LTE2aDE2My4yYy0xLjEgNS4yLTEuNiAxMC41LTEuNiAxNiAwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtNS41LS42LTEwLjgtMS42LTE2SDYyNGM4LjggMCAxNi03LjIgMTYtMTZ2LTg1LjVjMC0xNy02LjctMzMuMi0xOC43LTQ1LjJ6TTgwIDQzMmMtMTcuNiAwLTMyLTE0LjQtMzItMzJzMTQuNC0zMiAzMi0zMiAzMiAxNC40IDMyIDMyLTE0LjQgMzItMzIgMzJ6bTEyOCAwYy0xNy42IDAtMzItMTQuNC0zMi0zMnMxNC40LTMyIDMyLTMyIDMyIDE0LjQgMzIgMzItMTQuNCAzMi0zMiAzMnptMjcyLTIyNGgzNy41YzQuMyAwIDguMyAxLjcgMTEuMyA0LjdsNDMuMyA0My4zSDQ4MHYtNDh6bTQ4IDIyNGMtMTcuNiAwLTMyLTE0LjQtMzItMzJzMTQuNC0zMiAzMi0zMiAzMiAxNC40IDMyIDMyLTE0LjQgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrUGlja3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCAyODhoLTE2di02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC00OEw0MTkuMjIgNTYuMDJBNjQuMDI1IDY0LjAyNSAwIDAgMCAzNjkuMjQgMzJIMjU2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOEg2NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDkuNjFjLS43NiA1LjI3LTEuNjEgMTAuNTItMS42MSAxNiAwIDYxLjg2IDUwLjE0IDExMiAxMTIgMTEyczExMi01MC4xNCAxMTItMTEyYzAtNS40OC0uODUtMTAuNzMtMS42MS0xNmg2Ny4yM2MtLjc2IDUuMjctMS42MSAxMC41Mi0xLjYxIDE2IDAgNjEuODYgNTAuMTQgMTEyIDExMiAxMTJzMTEyLTUwLjE0IDExMi0xMTJjMC01LjQ4LS44NS0xMC43My0xLjYxLTE2SDYyNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTI4OCA5Nmg4MS4yNGw3Ni44IDk2SDI4OFY5NnpNMTc2IDQxNmMtMjYuNDcgMC00OC0yMS41My00OC00OHMyMS41My00OCA0OC00OCA0OCAyMS41MyA0OCA0OC0yMS41MyA0OC00OCA0OHptMjg4IDBjLTI2LjQ3IDAtNDgtMjEuNTMtNDgtNDhzMjEuNTMtNDggNDgtNDggNDggMjEuNTMgNDggNDgtMjEuNTMgNDgtNDggNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCAzNTJoLTE2VjI0My45YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlMNDk0IDExMC4xYy05LTktMjEuMi0xNC4xLTMzLjktMTQuMUg0MTZWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djMyMGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgxNmMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDEyOGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2ek0xNjAgNDY0Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptMzIwIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em04MC0yMDhINDE2VjE0NGg0NC4xbDk5LjkgOTkuOVYyNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRzaGlydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzEuMiA5Ni41TDQzNi41IDBDNDE2LjQgMjcuOCAzNzEuOSA0Ny4yIDMyMCA0Ny4yUzIyMy42IDI3LjggMjAzLjUgMEw4LjggOTYuNWMtNy45IDQtMTEuMSAxMy42LTcuMiAyMS41bDU3LjIgMTE0LjVjNCA3LjkgMTMuNiAxMS4xIDIxLjUgNy4ybDU2LjYtMjcuN2MxMC42LTUuMiAyMyAyLjUgMjMgMTQuNFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoMjU2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIyNi4zYzAtMTEuOCAxMi40LTE5LjYgMjMtMTQuNGw1Ni42IDI3LjdjNy45IDQgMTcuNS44IDIxLjUtNy4yTDYzOC4zIDExOGM0LTcuOS44LTE3LjYtNy4xLTIxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjM3IDEwMy44MjJjMTM4LjUzMi0xMzguNTMyIDM2Mi45MzYtMTM4LjMyNiA1MDEuMjYyIDAgNi4wNzggNi4wNzggNy4wNzQgMTUuNDk2IDIuNTgzIDIyLjY4MWwtNDMuMjE0IDY5LjEzOGExOC4zMzIgMTguMzMyIDAgMCAxLTIyLjM1NiA3LjMwNWwtODYuNDIyLTM0LjU2OWExOC4zMzUgMTguMzM1IDAgMCAxLTExLjQzNC0xOC44NDZMMzUxLjc0MSA5MGMtNjIuMTQ1LTIyLjQ1NC0xMzAuNjM2LTIxLjk4Ni0xOTEuNDgzIDBsNS45NTMgNTkuNTMyYTE4LjMzMSAxOC4zMzEgMCAwIDEtMTEuNDM0IDE4Ljg0NmwtODYuNDIzIDM0LjU2OGExOC4zMzQgMTguMzM0IDAgMCAxLTIyLjM1Ni03LjMwNUwyLjc4NyAxMjYuNTAyYTE4LjMzMyAxOC4zMzMgMCAwIDEgMi41ODMtMjIuNjh6TTk2IDMwOHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMkg0NGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptLTMzNiA5NnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMkg5MmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6TTk2IDUwMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMkg0NGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTI4OCAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDE0MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDIzMmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU5MiAwSDQ4QTQ4IDQ4IDAgMCAwIDAgNDh2MzIwYTQ4IDQ4IDAgMCAwIDQ4IDQ4aDI0MHYzMkgxMTJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNkgzNTJ2LTMyaDI0MGE0OCA0OCAwIDAgMCA0OC00OFY0OGE0OCA0OCAwIDAgMC00OC00OHptLTE2IDM1Mkg2NFY2NGg1MTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVtYnJlbGxhQmVhY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE1LjM4IDEzNi45bDEwMi4xMSAzNy4xOGMzNS4xOS04MS41NCA4Ni4yMS0xNDQuMjkgMTM5LTE3My43LTk1Ljg4LTQuODktMTg4Ljc4IDM2Ljk2LTI0OC41MyAxMTEuOC02LjY5IDguNC0yLjY2IDIxLjA1IDcuNDIgMjQuNzJ6bTEzMi4yNSA0OC4xNmwyMzguNDggODYuODNjMzUuNzYtMTIxLjM4IDE4LjctMjMxLjY2LTQyLjYzLTI1My45OC03LjQtMi43LTE1LjEzLTQtMjMuMDktNC01OC4wMi4wMS0xMjguMjcgNjkuMTctMTcyLjc2IDE3MS4xNXpNNTIxLjQ4IDYwLjVjNi4yMiAxNi4zIDEwLjgzIDM0LjYgMTMuMiA1NS4xOSA1Ljc0IDQ5Ljg5LTEuNDIgMTA4LjIzLTE4Ljk1IDE2Ni45OGwxMDIuNjIgMzcuMzZjMTAuMDkgMy42NyAyMS4zMS0zLjQzIDIxLjU3LTE0LjE3IDIuMzItOTUuNjktNDEuOTEtMTg3LjQ0LTExOC40NC0yNDUuMzZ6TTU2MCA0NDcuOThIMzIxLjA2TDM4NiAyNjkuNWwtNjAuMTQtMjEuOS03Mi45IDIwMC4zN0gxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTYuMDF2MzIuMDFDMCA1MDQuODMgNy4xNiA1MTIgMTYgNTEyaDU0NGM4Ljg0IDAgMTYtNy4xNyAxNi0xNi4wMXYtMzIuMDFjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVtYnJlbGxhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NS43IDI4MC44QzU0Ny4xIDE0NC41IDQzNy4zIDYyLjYgMzIwIDQ5LjlWMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2MTcuOUMxMzguMyA2Mi42IDI5LjUgMTQ0LjUuMyAyODAuOGMtMi4yIDEwLjEgOC41IDIxLjMgMTguNyAxMS40IDUyLTU1IDEwNy43LTUyLjQgMTU4LjYgMzcgNS4zIDkuNSAxNC45IDguNiAxOS43IDAgMjAuMi0zNS40IDQ0LjktNzMuMiA5MC43LTczLjIgNTguNSAwIDg4LjIgNjguOCA5MC43IDczLjIgNC44IDguNiAxNC40IDkuNSAxOS43IDAgNTEtODkuNSAxMDcuMS05MS40IDE1OC42LTM3IDEwLjMgMTAgMjAuOS0xLjMgMTguNy0xMS40ek0yNTYgMzAxLjdWNDMyYzAgOC44LTcuMiAxNi0xNiAxNi03LjggMC0xMy4yLTUuMy0xNS4xLTEwLjctNS45LTE2LjctMjQuMS0yNS40LTQwLjgtMTkuNS0xNi43IDUuOS0yNS40IDI0LjItMTkuNSA0MC44IDExLjIgMzEuOSA0MS42IDUzLjMgNzUuNCA1My4zIDQ0LjEgMCA4MC0zNS45IDgwLTgwVjMwMS42Yy05LjEtNy45LTE5LjgtMTMuNi0zMi0xMy42LTEyLjMuMS0yMi40IDQuOC0zMiAxMy43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmRlcmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNjRoMzJ2MTYwYzAgODguMjIgNzEuNzggMTYwIDE2MCAxNjBzMTYwLTcxLjc4IDE2MC0xNjBWNjRoMzJhMTYgMTYgMCAwIDAgMTYtMTZWMTZhMTYgMTYgMCAwIDAtMTYtMTZIMjcyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMydjE2MGE4MCA4MCAwIDAgMS0xNjAgMFY2NGgzMmExNiAxNiAwIDAgMCAxNi0xNlYxNmExNiAxNiAwIDAgMC0xNi0xNkgzMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNnptNDAwIDM4NEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmRvQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NS41NDUgOGMtNjYuMjY5LjExOS0xMjYuNDM4IDI2LjIzMy0xNzAuODYgNjguNjg1TDQ4Ljk3MSA0MC45NzFDMzMuODUxIDI1Ljg1MSA4IDM2LjU1OSA4IDU3Ljk0MVYxOTJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEzNC4wNTljMjEuMzgyIDAgMzIuMDktMjUuODUxIDE2Ljk3MS00MC45NzFsLTQxLjc1LTQxLjc1YzMwLjg2NC0yOC44OTkgNzAuODAxLTQ0LjkwNyAxMTMuMjMtNDUuMjczIDkyLjM5OC0uNzk4IDE3MC4yODMgNzMuOTc3IDE2OS40ODQgMTY5LjQ0MkM0MjMuMjM2IDM0OC4wMDkgMzQ5LjgxNiA0MjQgMjU2IDQyNGMtNDEuMTI3IDAtNzkuOTk3LTE0LjY3OC0xMTAuNjMtNDEuNTU2LTQuNzQzLTQuMTYxLTExLjkwNi0zLjkwOC0xNi4zNjguNTUzTDg5LjM0IDQyMi42NTljLTQuODcyIDQuODcyLTQuNjMxIDEyLjgxNS40ODIgMTcuNDMzQzEzMy43OTggNDc5LjgxMyAxOTIuMDc0IDUwNCAyNTYgNTA0YzEzNi45NjYgMCAyNDcuOTk5LTExMS4wMzMgMjQ4LTI0Ny45OThDNTA0LjAwMSAxMTkuMTkzIDM5Mi4zNTQgNy43NTUgMjU1LjU0NSA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMi4zMzMgMjI0LjMzM0gxMmMtNi42MjcgMC0xMi01LjM3My0xMi0xMlYxMkMwIDUuMzczIDUuMzczIDAgMTIgMGg0OGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjc4LjExMkMxMTcuNzczIDM5LjI3OSAxODQuMjYgNy40NyAyNTguMTc1IDguMDA3YzEzNi45MDYuOTk0IDI0Ni40NDggMTExLjYyMyAyNDYuMTU3IDI0OC41MzJDNTA0LjA0MSAzOTMuMjU4IDM5My4xMiA1MDQgMjU2LjMzMyA1MDRjLTY0LjA4OSAwLTEyMi40OTYtMjQuMzEzLTE2Ni41MS02NC4yMTUtNS4wOTktNC42MjItNS4zMzQtMTIuNTU0LS40NjctMTcuNDJsMzMuOTY3LTMzLjk2N2M0LjQ3NC00LjQ3NCAxMS42NjItNC43MTcgMTYuNDAxLS41MjVDMTcwLjc2IDQxNS4zMzYgMjExLjU4IDQzMiAyNTYuMzMzIDQzMmM5Ny4yNjggMCAxNzYtNzguNzE2IDE3Ni0xNzYgMC05Ny4yNjctNzguNzE2LTE3Ni0xNzYtMTc2LTU4LjQ5NiAwLTExMC4yOCAyOC40NzYtMTQyLjI3NCA3Mi4zMzNoOTguMjc0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDhjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5pdmVyc2FsQWNjZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA0OGMxMTQuOTUzIDAgMjA4IDkzLjAyOSAyMDggMjA4IDAgMTE0Ljk1My05My4wMjkgMjA4LTIwOCAyMDgtMTE0Ljk1MyAwLTIwOC05My4wMjktMjA4LTIwOCAwLTExNC45NTMgOTMuMDI5LTIwOCAyMDgtMjA4bTAtNDBDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0wIDU2QzE0OS45NjEgNjQgNjQgMTQ5Ljk2MSA2NCAyNTZzODUuOTYxIDE5MiAxOTIgMTkyIDE5Mi04NS45NjEgMTkyLTE5MlMzNjIuMDM5IDY0IDI1NiA2NHptMCA0NGMxOS44ODIgMCAzNiAxNi4xMTggMzYgMzZzLTE2LjExOCAzNi0zNiAzNi0zNi0xNi4xMTgtMzYtMzYgMTYuMTE4LTM2IDM2LTM2em0xMTcuNzQxIDk4LjAyM2MtMjguNzEyIDYuNzc5LTU1LjUxMSAxMi43NDgtODIuMTQgMTUuODA3Ljg1MSAxMDEuMDIzIDEyLjMwNiAxMjMuMDUyIDI1LjAzNyAxNTUuNjIxIDMuNjE3IDkuMjYtLjk1NyAxOS42OTgtMTAuMjE3IDIzLjMxNS05LjI2MSAzLjYxNy0xOS42OTktLjk1Ny0yMy4zMTYtMTAuMjE3LTguNzA1LTIyLjMwOC0xNy4wODYtNDAuNjM2LTIyLjI2MS03OC41NDloLTkuNjg2Yy01LjE2NyAzNy44NTEtMTMuNTM0IDU2LjIwOC0yMi4yNjIgNzguNTQ5LTMuNjE1IDkuMjU1LTE0LjA1IDEzLjgzNi0yMy4zMTUgMTAuMjE3LTkuMjYtMy42MTctMTMuODM0LTE0LjA1Ni0xMC4yMTctMjMuMzE1IDEyLjcxMy0zMi41NDEgMjQuMTg1LTU0LjU0MSAyNS4wMzctMTU1LjYyMS0yNi42MjktMy4wNTgtNTMuNDI4LTkuMDI3LTgyLjE0MS0xNS44MDctOC42LTIuMDMxLTEzLjkyNi0xMC42NDgtMTEuODk1LTE5LjI0OXMxMC42NDctMTMuOTI2IDE5LjI0OS0xMS44OTVjOTYuNjg2IDIyLjgyOSAxMjQuMjgzIDIyLjc4MyAyMjAuNzc1IDAgOC41OTktMi4wMyAxNy4yMTggMy4yOTQgMTkuMjQ5IDExLjg5NSAyLjAyOSA4LjYwMS0zLjI5NyAxNy4yMTktMTEuODk3IDE5LjI0OXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5pdmVyc2l0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMTI4djE2YTggOCAwIDAgMS04IDhoLTI0djEyYzAgNi42MjctNS4zNzMgMTItMTIgMTJINjBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTEySDI0YTggOCAwIDAgMS04LTh2LTE2YTggOCAwIDAgMSA0Ljk0MS03LjM5MmwyMzItODhhNy45OTYgNy45OTYgMCAwIDEgNi4xMTggMGwyMzIgODhBOCA4IDAgMCAxIDQ5NiAxMjh6bS0yNCAzMDRINDBjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNmE4IDggMCAwIDAgOCA4aDQ2NGE4IDggMCAwIDAgOC04di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6TTk2IDE5MnYxOTJINjBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjBoNDE2di0yMGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0zNlYxOTJoLTY0djE5MmgtNjRWMTkyaC02NHYxOTJoLTY0VjE5Mkg5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5saW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNC4wODMgNDA1LjkwN2M0LjY4NiA0LjY4NiA0LjY4NiAxMi4yODQgMCAxNi45NzFsLTQ0LjY3NCA0NC42NzRjLTU5LjI2MyA1OS4yNjItMTU1LjY5MyA1OS4yNjYtMjE0Ljk2MSAwLTU5LjI2NC01OS4yNjUtNTkuMjY0LTE1NS42OTYgMC0yMTQuOTZsNDQuNjc1LTQ0LjY3NWM0LjY4Ni00LjY4NiAxMi4yODQtNC42ODYgMTYuOTcxIDBsMzkuNTk4IDM5LjU5OGM0LjY4NiA0LjY4NiA0LjY4NiAxMi4yODQgMCAxNi45NzFsLTQ0LjY3NSA0NC42NzRjLTI4LjA3MiAyOC4wNzMtMjguMDcyIDczLjc1IDAgMTAxLjgyMyAyOC4wNzIgMjguMDcyIDczLjc1IDI4LjA3MyAxMDEuODI0IDBsNDQuNjc0LTQ0LjY3NGM0LjY4Ni00LjY4NiAxMi4yODQtNC42ODYgMTYuOTcxIDBsMzkuNTk3IDM5LjU5OHptLTU2LjU2OC0yNjAuMjE2YzQuNjg2IDQuNjg2IDEyLjI4NCA0LjY4NiAxNi45NzEgMGw0NC42NzQtNDQuNjc0YzI4LjA3Mi0yOC4wNzUgNzMuNzUtMjguMDczIDEwMS44MjQgMCAyOC4wNzIgMjguMDczIDI4LjA3MiA3My43NSAwIDEwMS44MjNsLTQ0LjY3NSA0NC42NzRjLTQuNjg2IDQuNjg2LTQuNjg2IDEyLjI4NCAwIDE2Ljk3MWwzOS41OTggMzkuNTk4YzQuNjg2IDQuNjg2IDEyLjI4NCA0LjY4NiAxNi45NzEgMGw0NC42NzUtNDQuNjc1YzU5LjI2NS01OS4yNjUgNTkuMjY1LTE1NS42OTUgMC0yMTQuOTYtNTkuMjY2LTU5LjI2NC0xNTUuNjk1LTU5LjI2NC0yMTQuOTYxIDBsLTQ0LjY3NCA0NC42NzRjLTQuNjg2IDQuNjg2LTQuNjg2IDEyLjI4NCAwIDE2Ljk3MWwzOS41OTcgMzkuNTk4em0yMzQuODI4IDM1OS4yOGwyMi42MjctMjIuNjI3YzkuMzczLTkuMzczIDkuMzczLTI0LjU2OSAwLTMzLjk0MUw2My41OTggNy4wMjljLTkuMzczLTkuMzczLTI0LjU2OS05LjM3My0zMy45NDEgMEw3LjAyOSAyOS42NTdjLTkuMzczIDkuMzczLTkuMzczIDI0LjU2OSAwIDMzLjk0MWw0NDEuMzczIDQ0MS4zNzNjOS4zNzMgOS4zNzIgMjQuNTY5IDkuMzcyIDMzLjk0MSAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmxvY2tBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDI1NkgxNTJWMTUyLjljMC0zOS42IDMxLjctNzIuNSA3MS4zLTcyLjkgNDAtLjQgNzIuNyAzMi4xIDcyLjcgNzJ2MTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTE2QzM3NiA2OCAzMDcuNS0uMyAyMjMuNSAwIDEzOS41LjMgNzIgNjkuNSA3MiAxNTMuNVYyNTZINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djE2MGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzA0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yNjQgNDA4YzAgMjIuMS0xNy45IDQwLTQwIDQwcy00MC0xNy45LTQwLTQwdi00OGMwLTIyLjEgMTcuOS00MCA0MC00MHM0MCAxNy45IDQwIDQwdjQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDI1NkgxNTJWMTUyLjljMC0zOS42IDMxLjctNzIuNSA3MS4zLTcyLjkgNDAtLjQgNzIuNyAzMi4xIDcyLjcgNzJ2MTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTE2QzM3NiA2OCAzMDcuNS0uMyAyMjMuNSAwIDEzOS41LjMgNzIgNjkuNSA3MiAxNTMuNVYyNTZINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djE2MGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzA0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVcGxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk2IDM4NGgtODBjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE5MmgtODcuN2MtMTcuOCAwLTI2LjctMjEuNS0xNC4xLTM0LjFMMjQyLjMgNS43YzcuNS03LjUgMTkuOC03LjUgMjcuMyAwbDE1Mi4yIDE1Mi4yYzEyLjYgMTIuNiAzLjcgMzQuMS0xNC4xIDM0LjFIMzIwdjE2OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHptMjE2LTh2MTEyYzAgMTMuMy0xMC43IDI0LTI0IDI0SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYzNzZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTM2djhjMCAzMC45IDI1LjEgNTYgNTYgNTZoODBjMzAuOSAwIDU2LTI1LjEgNTYtNTZ2LThoMTM2YzEzLjMgMCAyNCAxMC43IDI0IDI0em0tMTI0IDg4YzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMCA5IDIwIDIwIDIwIDIwLTkgMjAtMjB6bTY0IDBjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwIDkgMjAgMjAgMjAgMjAtOSAyMC0yMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckFsdFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzMy44IDQ1OC4xTDM4OS42IDI2OS4zQzQzMy44IDI0NC43IDQ2NCAxOTguMSA0NjQgMTQ0IDQ2NCA2NC41IDM5OS41IDAgMzIwIDBjLTY3LjEgMC0xMjMgNDYuMS0xMzkgMTA4LjJMNDUuNSAzLjRDMzguNS0yIDI4LjUtLjggMjMgNi4yTDMuNCAzMS40Yy01LjQgNy00LjIgMTcgMi44IDIyLjRsNTg4LjQgNDU0LjdjNyA1LjQgMTcgNC4yIDIyLjUtMi44bDE5LjYtMjUuM2M1LjQtNi44IDQuMS0xNi45LTIuOS0yMi4zek0xOTguNCAzMjBDMTI0LjIgMzIwIDY0IDM4MC4yIDY0IDQ1NC40djkuNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzODIuMkwyNDUuOCAzMjBoLTQ3LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDI4OGM3OS41IDAgMTQ0LTY0LjUgMTQ0LTE0NFMzMzUuNSAwIDI1NiAwIDExMiA2NC41IDExMiAxNDRzNjQuNSAxNDQgMTQ0IDE0NHptMTI4IDMyaC01NS4xYy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2SDEyOEM1Ny4zIDMyMCAwIDM3Ny4zIDAgNDQ4djE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OHYtMTZjMC03MC43LTU3LjMtMTI4LTEyOC0xMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJBc3Ryb25hdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMjI0aDEzLjVjMjQuNyA1Ni41IDgwLjkgOTYgMTQ2LjUgOTZzMTIxLjgtMzkuNSAxNDYuNS05NkgzODRjOC44IDAgMTYtNy4yIDE2LTE2di05NmMwLTguOC03LjItMTYtMTYtMTZoLTEzLjVDMzQ1LjggMzkuNSAyODkuNiAwIDIyNCAwUzEwMi4yIDM5LjUgNzcuNSA5Nkg2NGMtOC44IDAtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNnptNDAtODhjMC0yMi4xIDIxLjUtNDAgNDgtNDBoMTQ0YzI2LjUgMCA0OCAxNy45IDQ4IDQwdjI0YzAgNTMtNDMgOTYtOTYgOTZoLTQ4Yy01MyAwLTk2LTQzLTk2LTk2di0yNHptNzIgNzJsMTItMzYgMzYtMTItMzYtMTItMTItMzYtMTIgMzYtMzYgMTIgMzYgMTIgMTIgMzZ6bTE1MS42IDExMy40QzI5Ny43IDM0MC43IDI2Mi4yIDM1MiAyMjQgMzUycy03My43LTExLjMtMTAzLjYtMzAuNkM1Mi45IDMyOC41IDAgMzg1IDAgNDU0LjR2OS42YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDgwdi02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgxMjhjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRoODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTkuNmMwLTY5LjQtNTIuOS0xMjUuOS0xMjAuNC0xMzN6TTI3MiA0NDhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTYgMTYtNy4yIDE2LTE2LTcuMi0xNi0xNi0xNnptLTk2IDBjLTguOCAwLTE2IDcuMi0xNiAxNnY0OGgzMnYtNDhjMC04LjgtNy4yLTE2LTE2LTE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTg5LjYgMzJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQxLjZjMC03NC4yLTYwLjItMTM0LjQtMTM0LjQtMTM0LjR6bTMyMy0xMjguNGwtMjcuOC0yOC4xYy00LjYtNC43LTEyLjEtNC43LTE2LjgtLjFsLTEwNC44IDEwNC00NS41LTQ1LjhjLTQuNi00LjctMTIuMS00LjctMTYuOC0uMWwtMjguMSAyNy45Yy00LjcgNC42LTQuNyAxMi4xLS4xIDE2LjhsODEuNyA4Mi4zYzQuNiA0LjcgMTIuMSA0LjcgMTYuOC4xbDE0MS4zLTE0MC4yYzQuNi00LjcgNC43LTEyLjIuMS0xNi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgOTZjNDguNiAwIDg4IDM5LjQgODggODhzLTM5LjQgODgtODggODgtODgtMzkuNC04OC04OCAzOS40LTg4IDg4LTg4em0wIDM0NGMtNTguNyAwLTExMS4zLTI2LjYtMTQ2LjUtNjguMiAxOC44LTM1LjQgNTUuNi01OS44IDk4LjUtNTkuOCAyLjQgMCA0LjguNCA3LjEgMS4xIDEzIDQuMiAyNi42IDYuOSA0MC45IDYuOSAxNC4zIDAgMjgtMi43IDQwLjktNi45IDIuMy0uNyA0LjctMS4xIDcuMS0xLjEgNDIuOSAwIDc5LjcgMjQuNCA5OC41IDU5LjhDMzU5LjMgNDIxLjQgMzA2LjcgNDQ4IDI0OCA0NDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJDbG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMjI0Yy03OS42IDAtMTQ0IDY0LjQtMTQ0IDE0NHM2NC40IDE0NCAxNDQgMTQ0IDE0NC02NC40IDE0NC0xNDQtNjQuNC0xNDQtMTQ0LTE0NHptNjQgMTUwLjNjMCA1LjMtNC40IDkuNy05LjcgOS43aC02MC42Yy01LjMgMC05LjctNC40LTkuNy05Ljd2LTc2LjZjMC01LjMgNC40LTkuNyA5LjctOS43aDEyLjZjNS4zIDAgOS43IDQuNCA5LjcgOS43VjM1MmgzOC4zYzUuMyAwIDkuNyA0LjQgOS43IDkuN3YxMi42ek0zMjAgMzY4YzAtMjcuOCA2LjctNTQuMSAxOC4yLTc3LjUtOC0xLjUtMTYuMi0yLjUtMjQuNi0yLjVoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNDcuMWMtNDUuMy0zMS45LTc1LjEtODQuNS03NS4xLTE0NHptLTk2LTExMmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJDb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjEwLjUgMzczLjNjMi42LTE0LjEgMi42LTI4LjUgMC00Mi42bDI1LjgtMTQuOWMzLTEuNyA0LjMtNS4yIDMuMy04LjUtNi43LTIxLjYtMTguMi00MS4yLTMzLjItNTcuNC0yLjMtMi41LTYtMy4xLTktMS40bC0yNS44IDE0LjljLTEwLjktOS4zLTIzLjQtMTYuNS0zNi45LTIxLjN2LTI5LjhjMC0zLjQtMi40LTYuNC01LjctNy4xLTIyLjMtNS00NS00LjgtNjYuMiAwLTMuMy43LTUuNyAzLjctNS43IDcuMXYyOS44Yy0xMy41IDQuOC0yNiAxMi0zNi45IDIxLjNsLTI1LjgtMTQuOWMtMi45LTEuNy02LjctMS4xLTkgMS40LTE1IDE2LjItMjYuNSAzNS44LTMzLjIgNTcuNC0xIDMuMy40IDYuOCAzLjMgOC41bDI1LjggMTQuOWMtMi42IDE0LjEtMi42IDI4LjUgMCA0Mi42bC0yNS44IDE0LjljLTMgMS43LTQuMyA1LjItMy4zIDguNSA2LjcgMjEuNiAxOC4yIDQxLjEgMzMuMiA1Ny40IDIuMyAyLjUgNiAzLjEgOSAxLjRsMjUuOC0xNC45YzEwLjkgOS4zIDIzLjQgMTYuNSAzNi45IDIxLjN2MjkuOGMwIDMuNCAyLjQgNi40IDUuNyA3LjEgMjIuMyA1IDQ1IDQuOCA2Ni4yIDAgMy4zLS43IDUuNy0zLjcgNS43LTcuMXYtMjkuOGMxMy41LTQuOCAyNi0xMiAzNi45LTIxLjNsMjUuOCAxNC45YzIuOSAxLjcgNi43IDEuMSA5LTEuNCAxNS0xNi4yIDI2LjUtMzUuOCAzMy4yLTU3LjQgMS0zLjMtLjQtNi44LTMuMy04LjVsLTI1LjgtMTQuOXpNNDk2IDQwMC41Yy0yNi44IDAtNDguNS0yMS44LTQ4LjUtNDguNXMyMS44LTQ4LjUgNDguNS00OC41IDQ4LjUgMjEuOCA0OC41IDQ4LjUtMjEuNyA0OC41LTQ4LjUgNDguNXpNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTIwMS4yIDIyNi41Yy0yLjMtMS4yLTQuNi0yLjYtNi44LTMuOWwtNy45IDQuNmMtNiAzLjQtMTIuOCA1LjMtMTkuNiA1LjMtMTAuOSAwLTIxLjQtNC42LTI4LjktMTIuNi0xOC4zLTE5LjgtMzIuMy00My45LTQwLjItNjkuNi01LjUtMTcuNyAxLjktMzYuNCAxNy45LTQ1LjdsNy45LTQuNmMtLjEtMi42LS4xLTUuMiAwLTcuOGwtNy45LTQuNmMtMTYtOS4yLTIzLjQtMjgtMTcuOS00NS43LjktMi45IDIuMi01LjggMy4yLTguNy0zLjgtLjMtNy41LTEuMi0xMS40LTEuMmgtMTYuN2MtMjIuMiAxMC4yLTQ2LjkgMTYtNzIuOSAxNnMtNTAuNi01LjgtNzIuOS0xNmgtMTYuN0M2MC4yIDI4OCAwIDM0OC4yIDAgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMxMC4xIDAgMTkuNS0zLjIgMjcuMi04LjUtMS4yLTMuOC0yLTcuNy0yLTExLjh2LTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckVkaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTg5LjYgMzJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyNzQuOWMtMi40LTYuOC0zLjQtMTQtMi42LTIxLjNsNi44LTYwLjkgMS4yLTExLjEgNy45LTcuOSA3Ny4zLTc3LjNjLTI0LjUtMjcuNy02MC00NS41LTk5LjktNDUuNXptNDUuMyAxNDUuM2wtNi44IDYxYy0xLjEgMTAuMiA3LjUgMTguOCAxNy42IDE3LjZsNjAuOS02LjggMTM3LjktMTM3LjktNzEuNy03MS43LTEzNy45IDEzNy44ek02MzMgMjY4LjlMNTk1LjEgMjMxYy05LjMtOS4zLTI0LjUtOS4zLTMzLjggMGwtMzcuOCAzNy44LTQuMSA0LjEgNzEuOCA3MS43IDQxLjgtNDEuOGM5LjMtOS40IDkuMy0yNC41IDAtMzMuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckZyaWVuZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDI1NmM2MS45IDAgMTEyLTUwLjEgMTEyLTExMlMyNTMuOSAzMiAxOTIgMzIgODAgODIuMSA4MCAxNDRzNTAuMSAxMTIgMTEyIDExMnptNzYuOCAzMmgtOC4zYy0yMC44IDEwLTQzLjkgMTYtNjguNSAxNnMtNDcuNi02LTY4LjUtMTZoLTguM0M1MS42IDI4OCAwIDMzOS42IDAgNDAzLjJWNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OHYtMjguOGMwLTYzLjYtNTEuNi0xMTUuMi0xMTUuMi0xMTUuMnpNNDgwIDI1NmM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05Ni05NiA0My05NiA5NiA0MyA5NiA5NiA5NnptNDggMzJoLTMuOGMtMTMuOSA0LjgtMjguNiA4LTQ0LjIgOHMtMzAuMy0zLjItNDQuMi04SDQzMmMtMjAuNCAwLTM5LjIgNS45LTU1LjcgMTUuNCAyNC40IDI2LjMgMzkuNyA2MS4yIDM5LjcgOTkuOHYzOC40YzAgMi4yLS41IDQuMy0uNiA2LjRINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4IDAtNjEuOS01MC4xLTExMi0xMTItMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyR3JhZHVhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE5LjQgMzIwLjZMMjI0IDQxNmwtOTUuNC05NS40QzU3LjEgMzIzLjcgMCAzODIuMiAwIDQ1NC40djkuNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTkuNmMwLTcyLjItNTcuMS0xMzAuNy0xMjguNi0xMzMuOHpNMTMuNiA3OS44bDYuNCAxLjV2NTguNGMtNyA0LjItMTIgMTEuNS0xMiAyMC4zIDAgOC40IDQuNiAxNS40IDExLjEgMTkuN0wzLjUgMjQyYy0xLjcgNi45IDIuMSAxNCA3LjYgMTRoNDEuOGM1LjUgMCA5LjMtNy4xIDcuNi0xNGwtMTUuNi02Mi4zQzUxLjQgMTc1LjQgNTYgMTY4LjQgNTYgMTYwYzAtOC44LTUtMTYuMS0xMi0yMC4zVjg3LjFsNjYgMTUuOWMtOC42IDE3LjItMTQgMzYuNC0xNCA1NyAwIDcwLjcgNTcuMyAxMjggMTI4IDEyOHMxMjgtNTcuMyAxMjgtMTI4YzAtMjAuNi01LjMtMzkuOC0xNC01N2w5Ni4zLTIzLjJjMTguMi00LjQgMTguMi0yNy4xIDAtMzEuNWwtMTkwLjQtNDZjLTEzLTMuMS0yNi43LTMuMS0zOS43IDBMMTMuNiA0OC4yYy0xOC4xIDQuNC0xOC4xIDI3LjIgMCAzMS42elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VySW5qdXJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzcuMzcgMTEuOThDMjYxLjA4IDQuNDcgMjQzLjExIDAgMjI0IDBjLTUzLjY5IDAtOTkuNSAzMy4xMy0xMTguNTEgODBoODEuMTlsOTAuNjktNjguMDJ6TTM0Mi41MSA4MGMtNy45LTE5LjQ3LTIwLjY3LTM2LjItMzYuNDktNDkuNTJMMjM5Ljk5IDgwaDEwMi41MnpNMjI0IDI1NmM3MC42OSAwIDEyOC01Ny4zMSAxMjgtMTI4IDAtNS40OC0uOTUtMTAuNy0xLjYxLTE2SDk3LjYxYy0uNjcgNS4zLTEuNjEgMTAuNTItMS42MSAxNiAwIDcwLjY5IDU3LjMxIDEyOCAxMjggMTI4ek04MCAyOTkuN1Y1MTJoMTI4LjI2bC05OC40NS0yMjEuNTJBMTMyLjgzNSAxMzIuODM1IDAgMCAwIDgwIDI5OS43ek0wIDQ2NGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4VjMyMC4yNEMxOC44OCAzNDQuODkgMCAzODEuMjYgMCA0MjIuNFY0NjR6bTI1Ni00OGgtNTUuMzhsNDIuNjcgOTZIMjU2YzI2LjQ3IDAgNDgtMjEuNTMgNDgtNDhzLTIxLjUzLTQ4LTQ4LTQ4em01Ny42LTEyOGgtMTYuNzFjLTIyLjI0IDEwLjE4LTQ2Ljg4IDE2LTcyLjg5IDE2cy01MC42NS01LjgyLTcyLjg5LTE2aC03LjM3bDQyLjY3IDk2SDI1NmM0NC4xMSAwIDgwIDM1Ljg5IDgwIDgwIDAgMTguMDgtNi4yNiAzNC41OS0xNi40MSA0OEg0MDBjMjYuNTEgMCA0OC0yMS40OSA0OC00OHYtNDEuNmMwLTc0LjIzLTYwLjE3LTEzNC40LTEzNC40LTEzNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMjU2QTEyOCAxMjggMCAxIDAgOTYgMTI4YTEyOCAxMjggMCAwIDAgMTI4IDEyOHptOTYgNjRhNjMuMDggNjMuMDggMCAwIDEgOC4xLTMwLjVjLTQuOC0uNS05LjUtMS41LTE0LjUtMS41aC0xNi43YTE3NC4wOCAxNzQuMDggMCAwIDEtMTQ1LjggMGgtMTYuN0ExMzQuNDMgMTM0LjQzIDAgMCAwIDAgNDIyLjRWNDY0YTQ4IDQ4IDAgMCAwIDQ4IDQ4aDI4MC45YTYzLjU0IDYzLjU0IDAgMCAxLTguOS0zMnptMjg4LTMyaC0zMnYtODBhODAgODAgMCAwIDAtMTYwIDB2ODBoLTMyYTMyIDMyIDAgMCAwLTMyIDMydjE2MGEzMiAzMiAwIDAgMCAzMiAzMmgyMjRhMzIgMzIgMCAwIDAgMzItMzJWMzIwYTMyIDMyIDAgMCAwLTMyLTMyek00OTYgNDMyYTMyIDMyIDAgMSAxIDMyLTMyIDMyIDMyIDAgMCAxLTMyIDMyem0zMi0xNDRoLTY0di04MGEzMiAzMiAwIDAgMSA2NCAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyTWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6TTEwNCA0MjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNC0xMC43LTI0LTI0LTI0LTI0IDEwLjctMjQgMjR6bTIxNi0xMzUuNHY0OWMzNi41IDcuNCA2NCAzOS44IDY0IDc4LjR2NDEuN2MwIDcuNi01LjQgMTQuMi0xMi45IDE1LjdsLTMyLjIgNi40Yy00LjMuOS04LjUtMS45LTkuNC02LjNsLTMuMS0xNS43Yy0uOS00LjMgMS45LTguNiA2LjMtOS40bDE5LjMtMy45VjQxNmMwLTYyLjgtOTYtNjUuMS05NiAxLjl2MjYuN2wxOS4zIDMuOWM0LjMuOSA3LjEgNS4xIDYuMyA5LjRsLTMuMSAxNS43Yy0uOSA0LjMtNS4xIDcuMS05LjQgNi4zbC0zMS4yLTQuMmMtNy45LTEuMS0xMy44LTcuOC0xMy44LTE1LjlWNDE2YzAtMzguNiAyNy41LTcwLjkgNjQtNzguNHYtNDUuMmMtMi4yLjctNC40IDEuMS02LjYgMS45LTE4IDYuMy0zNy4zIDkuOC01Ny40IDkuOHMtMzkuNC0zLjUtNTcuNC05LjhjLTcuNC0yLjYtMTQuOS00LjItMjIuNi01LjJ2ODEuNmMyMy4xIDYuOSA0MCAyOC4xIDQwIDUzLjQgMCAzMC45LTI1LjEgNTYtNTYgNTZzLTU2LTI1LjEtNTYtNTZjMC0yNS4zIDE2LjktNDYuNSA0MC01My40di04MC40QzQ4LjUgMzAxIDAgMzU1LjggMCA0MjIuNHY0NC44QzAgNDkxLjkgMjAuMSA1MTIgNDQuOCA1MTJoMzU4LjRjMjQuNyAwIDQ0LjgtMjAuMSA0NC44LTQ0Ljh2LTQ0LjhjMC03Mi01Ni44LTEzMC4zLTEyOC0xMzMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCAyMDhINDMyYy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDE5MmM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnptLTQwMCA0OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTg5LjYgMzJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQxLjZjMC03NC4yLTYwLjItMTM0LjQtMTM0LjQtMTM0LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJOaW5qYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjUuNCAyODkuMkwyMjQgMzkwLjYgMTIyLjYgMjg5LjJDNTQgMjk1LjMgMCAzNTIuMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQxLjZjMC03MC4yLTU0LTEyNy4xLTEyMi42LTEzMy4yek0zMiAxOTJjMjcuMyAwIDUxLjgtMTEuNSA2OS4yLTI5LjcgMTUuMSA1My45IDY0IDkzLjcgMTIyLjggOTMuNyA3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwYy01MC40IDAtOTMuNiAyOS40LTExNC41IDcxLjhDOTIuMSA0Ny44IDY0IDMyIDMyIDMyYzAgMzMuNCAxNy4xIDYyLjggNDMuMSA4MC0yNiAxNy4yLTQzLjEgNDYuNi00My4xIDgwem0xNDQtOTZoOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJIMTQ0YzAtMTcuNyAxNC4zLTMyIDMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyTnVyc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE5LjQxLDMyMCwyMjQsNDE1LjM5LDEyOC41OSwzMjBDNTcuMSwzMjMuMSwwLDM4MS42LDAsNDUzLjc5QTU4LjIxLDU4LjIxLDAsMCwwLDU4LjIxLDUxMkgzODkuNzlBNTguMjEsNTguMjEsMCwwLDAsNDQ4LDQ1My43OUM0NDgsMzgxLjYsMzkwLjksMzIzLjEsMzE5LjQxLDMyMFpNMjI0LDMwNEExMjgsMTI4LDAsMCwwLDM1MiwxNzZWNjUuODJhMzIsMzIsMCwwLDAtMjAuNzYtMzBMMjQ2LjQ3LDQuMDdhNjQsNjQsMCwwLDAtNDQuOTQsMEwxMTYuNzYsMzUuODZBMzIsMzIsMCwwLDAsOTYsNjUuODJWMTc2QTEyOCwxMjgsMCwwLDAsMjI0LDMwNFpNMTg0LDcxLjY3YTUsNSwwLDAsMSw1LTVoMjEuNjdWNDVhNSw1LDAsMCwxLDUtNWgxNi42NmE1LDUsMCwwLDEsNSw1VjY2LjY3SDI1OWE1LDUsMCwwLDEsNSw1Vjg4LjMzYTUsNSwwLDAsMS01LDVIMjM3LjMzVjExNWE1LDUsMCwwLDEtNSw1SDIxNS42N2E1LDUsMCwwLDEtNS01VjkzLjMzSDE4OWE1LDUsMCwwLDEtNS01Wk0xNDQsMTYwSDMwNHYxNmE4MCw4MCwwLDAsMS0xNjAsMFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDIwOGgtNjR2LTY0YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGgtNjRjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNjR2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtNjRoNjRjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bS00MDAgNDhjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4em04OS42IDMyaC0xNi43Yy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2aC0xNi43QzYwLjIgMjg4IDAgMzQ4LjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00MS42YzAtNzQuMi02MC4yLTEzNC40LTEzNC40LTEzNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyU2VjcmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4My45IDMwOC4zbDIzLjktNjIuNmM0LTEwLjUtMy43LTIxLjctMTUtMjEuN2gtNTguNWMxMS0xOC45IDE3LjgtNDAuNiAxNy44LTY0di0uM2MzOS4yLTcuOCA2NC0xOS4xIDY0LTMxLjcgMC0xMy4zLTI3LjMtMjUuMS03MC4xLTMzLTkuMi0zMi44LTI3LTY1LjgtNDAuNi04Mi44LTkuNS0xMS45LTI1LjktMTUuNi0zOS41LTguOGwtMjcuNiAxMy44Yy05IDQuNS0xOS42IDQuNS0yOC42IDBMMTgyLjEgMy40Yy0xMy42LTYuOC0zMC0zLjEtMzkuNSA4LjgtMTMuNSAxNy0zMS40IDUwLTQwLjYgODIuOC00Mi43IDcuOS03MCAxOS43LTcwIDMzIDAgMTIuNiAyNC44IDIzLjkgNjQgMzEuN3YuM2MwIDIzLjQgNi44IDQ1LjEgMTcuOCA2NEg1Ni4zYy0xMS41IDAtMTkuMiAxMS43LTE0LjcgMjIuM2wyNS44IDYwLjJDMjcuMyAzMjkuOCAwIDM3Mi43IDAgNDIyLjR2NDQuOEMwIDQ5MS45IDIwLjEgNTEyIDQ0LjggNTEyaDM1OC40YzI0LjcgMCA0NC44LTIwLjEgNDQuOC00NC44di00NC44YzAtNDguNC0yNS44LTkwLjQtNjQuMS0xMTQuMXpNMTc2IDQ4MGwtNDEuNi0xOTIgNDkuNiAzMiAyNCA0MC0zMiAxMjB6bTk2IDBsLTMyLTEyMCAyNC00MCA0OS42LTMyTDI3MiA0ODB6bTQxLjctMjk4LjVjLTMuOSAxMS45LTcgMjQuNi0xNi41IDMzLjQtMTAuMSA5LjMtNDggMjIuNC02NC0yNS0yLjgtOC40LTE1LjQtOC40LTE4LjMgMC0xNyA1MC4yLTU2IDMyLjQtNjQgMjUtOS41LTguOC0xMi43LTIxLjUtMTYuNS0zMy40LS44LTIuNS02LjMtNS43LTYuMy01Ljh2LTEwLjhjMjguMyAzLjYgNjEgNS44IDk2IDUuOHM2Ny43LTIuMSA5Ni01Ljh2MTAuOGMtLjEuMS01LjYgMy4yLTYuNCA1Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJTaGllbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjIyLjMgMjcxLjFsLTExNS4yLTQ1Yy00LjEtMS42LTEyLjYtMy43LTIyLjIgMGwtMTE1LjIgNDVjLTEwLjcgNC4yLTE3LjcgMTQtMTcuNyAyNC45IDAgMTExLjYgNjguNyAxODguOCAxMzIuOSAyMTMuOSA5LjYgMy43IDE4IDEuNiAyMi4yIDBDNTU4LjQgNDg5LjkgNjQwIDQyMC41IDY0MCAyOTZjMC0xMC45LTctMjAuNy0xNy43LTI0Ljl6TTQ5NiA0NjIuNFYyNzMuM2w5NS41IDM3LjNjLTUuNiA4Ny4xLTYwLjkgMTM1LjQtOTUuNSAxNTEuOHpNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTk2IDQwYzAtMi41LjgtNC44IDEuMS03LjItMi41LS4xLTQuOS0uOC03LjUtLjhoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjNi44IDAgMTMuMy0xLjUgMTkuMi00LTU0LTQyLjktOTkuMi0xMTYuNy05OS4yLTIxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzMy44IDQ1OC4xTDM2Mi4zIDI0OC4zQzQxMi4xIDIzMC43IDQ0OCAxODMuOCA0NDggMTI4IDQ0OCA1Ny4zIDM5MC43IDAgMzIwIDBjLTY3LjEgMC0xMjEuNSA1MS44LTEyNi45IDExNy40TDQ1LjUgMy40QzM4LjUtMiAyOC41LS44IDIzIDYuMkwzLjQgMzEuNGMtNS40IDctNC4yIDE3IDIuOCAyMi40bDU4OC40IDQ1NC43YzcgNS40IDE3IDQuMiAyMi41LTIuOGwxOS42LTI1LjNjNS40LTYuOCA0LjEtMTYuOS0yLjktMjIuM3pNOTYgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MC4yTDIwNy40IDI5MC4zQzE0NC4yIDMwMS4zIDk2IDM1NiA5NiA0MjIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclRhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzAuNiAzNjQuOWwtOTAuMy05MC4yYy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43aC03OS4zYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3OS4yYzAgMTcgNi43IDMzLjIgMTguNyA0NS4ybDkwLjMgOTAuMmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw5Mi41LTkyLjVjMTIuNi0xMi41IDEyLjYtMzIuNy4xLTQ1LjJ6bS0xODIuOC0yMWMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNCAyNCAxMC43IDI0IDI0YzAgMTMuMi0xMC43IDI0LTI0IDI0em0tMjIzLjgtODhjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhDMzUyIDU3LjMgMjk0LjcgMCAyMjQgMFM5NiA1Ny4zIDk2IDEyOGMwIDcwLjYgNTcuMyAxMjcuOSAxMjggMTI3Ljl6bTEyNy44IDExMS4yVjI5NGMtMTIuMi0zLjYtMjQuOS02LjItMzguMi02LjJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODcuOSAwIDM0OC4xIDAgNDIyLjN2NDEuNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMTUuNSAwIDI5LjEtNy41IDM3LjktMTguOWwtNTgtNThjLTE4LjEtMTguMS0yOC4xLTQyLjItMjguMS02Ny45elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyVGllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4em05NS44IDMyLjZMMjcyIDQ4MGwtMzItMTM2IDMyLTU2aC05NmwzMiA1Ni0zMiAxMzYtNDcuOC0xOTEuNEM1Ni45IDI5MiAwIDM1MC4zIDAgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OHYtNDEuNmMwLTcyLjEtNTYuOS0xMzAuNC0xMjguMi0xMzMuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclRpbWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU4OS42IDI0MGw0NS42LTQ1LjZjNi4zLTYuMyA2LjMtMTYuNSAwLTIyLjhsLTIyLjgtMjIuOGMtNi4zLTYuMy0xNi41LTYuMy0yMi44IDBMNTQ0IDE5NC40bC00NS42LTQ1LjZjLTYuMy02LjMtMTYuNS02LjMtMjIuOCAwbC0yMi44IDIyLjhjLTYuMyA2LjMtNi4zIDE2LjUgMCAyMi44bDQ1LjYgNDUuNi00NS42IDQ1LjZjLTYuMyA2LjMtNi4zIDE2LjUgMCAyMi44bDIyLjggMjIuOGM2LjMgNi4zIDE2LjUgNi4zIDIyLjggMGw0NS42LTQ1LjYgNDUuNiA0NS42YzYuMyA2LjMgMTYuNSA2LjMgMjIuOCAwbDIyLjgtMjIuOGM2LjMtNi4zIDYuMy0xNi41IDAtMjIuOEw1ODkuNiAyNDB6TTIyNCAyNTZjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4em04OS42IDMyaC0xNi43Yy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2aC0xNi43QzYwLjIgMjg4IDAgMzQ4LjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00MS42YzAtNzQuMi02MC4yLTEzNC40LTEzNC40LTEzNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4em04OS42IDMyaC0xNi43Yy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2aC0xNi43QzYwLjIgMjg4IDAgMzQ4LjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00MS42YzAtNzQuMi02MC4yLTEzNC40LTEzNC40LTEzNC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2Vyc0NvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MTAuNSAzNDEuM2MyLjYtMTQuMSAyLjYtMjguNSAwLTQyLjZsMjUuOC0xNC45YzMtMS43IDQuMy01LjIgMy4zLTguNS02LjctMjEuNi0xOC4yLTQxLjItMzMuMi01Ny40LTIuMy0yLjUtNi0zLjEtOS0xLjRsLTI1LjggMTQuOWMtMTAuOS05LjMtMjMuNC0xNi41LTM2LjktMjEuM3YtMjkuOGMwLTMuNC0yLjQtNi40LTUuNy03LjEtMjIuMy01LTQ1LTQuOC02Ni4yIDAtMy4zLjctNS43IDMuNy01LjcgNy4xdjI5LjhjLTEzLjUgNC44LTI2IDEyLTM2LjkgMjEuM2wtMjUuOC0xNC45Yy0yLjktMS43LTYuNy0xLjEtOSAxLjQtMTUgMTYuMi0yNi41IDM1LjgtMzMuMiA1Ny40LTEgMy4zLjQgNi44IDMuMyA4LjVsMjUuOCAxNC45Yy0yLjYgMTQuMS0yLjYgMjguNSAwIDQyLjZsLTI1LjggMTQuOWMtMyAxLjctNC4zIDUuMi0zLjMgOC41IDYuNyAyMS42IDE4LjIgNDEuMSAzMy4yIDU3LjQgMi4zIDIuNSA2IDMuMSA5IDEuNGwyNS44LTE0LjljMTAuOSA5LjMgMjMuNCAxNi41IDM2LjkgMjEuM3YyOS44YzAgMy40IDIuNCA2LjQgNS43IDcuMSAyMi4zIDUgNDUgNC44IDY2LjIgMCAzLjMtLjcgNS43LTMuNyA1LjctNy4xdi0yOS44YzEzLjUtNC44IDI2LTEyIDM2LjktMjEuM2wyNS44IDE0LjljMi45IDEuNyA2LjcgMS4xIDktMS40IDE1LTE2LjIgMjYuNS0zNS44IDMzLjItNTcuNCAxLTMuMy0uNC02LjgtMy4zLTguNWwtMjUuOC0xNC45ek00OTYgMzY4LjVjLTI2LjggMC00OC41LTIxLjgtNDguNS00OC41czIxLjgtNDguNSA0OC41LTQ4LjUgNDguNSAyMS44IDQ4LjUgNDguNS0yMS43IDQ4LjUtNDguNSA0OC41ek05NiAyMjRjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjQtNjQgMjguNy02NCA2NCAyOC43IDY0IDY0IDY0em0yMjQgMzJjMS45IDAgMy43LS41IDUuNi0uNiA4LjMtMjEuNyAyMC41LTQyLjEgMzYuMy01OS4yIDcuNC04IDE3LjktMTIuNiAyOC45LTEyLjYgNi45IDAgMTMuNyAxLjggMTkuNiA1LjNsNy45IDQuNmMuOC0uNSAxLjYtLjkgMi40LTEuNCA3LTE0LjYgMTEuMi0zMC44IDExLjItNDggMC02MS45LTUwLjEtMTEyLTExMi0xMTJTMjA4IDgyLjEgMjA4IDE0NGMwIDYxLjkgNTAuMSAxMTIgMTEyIDExMnptMTA1LjIgMTk0LjVjLTIuMy0xLjItNC42LTIuNi02LjgtMy45LTguMiA0LjgtMTUuMyA5LjgtMjcuNSA5LjgtMTAuOSAwLTIxLjQtNC42LTI4LjktMTIuNi0xOC4zLTE5LjgtMzIuMy00My45LTQwLjItNjkuNi0xMC43LTM0LjUgMjQuOS00OS43IDI1LjgtNTAuMy0uMS0yLjYtLjEtNS4yIDAtNy44bC03LjktNC42Yy0zLjgtMi4yLTctNS05LjgtOC4xLTMuMy4yLTYuNS42LTkuOC42LTI0LjYgMC00Ny42LTYtNjguNS0xNmgtOC4zQzE3OS42IDI4OCAxMjggMzM5LjYgMTI4IDQwMy4yVjQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyNTUuNGMtMy43LTYtNi4yLTEyLjgtNi4yLTIwLjN2LTkuMnpNMTczLjEgMjc0LjZDMTYxLjUgMjYzLjEgMTQ1LjYgMjU2IDEyOCAyNTZINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0djMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY1LjljNi4zLTQ3LjQgMzQuOS04Ny4zIDc1LjItMTA5LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJzU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMyLjY1LDIxMi4zMiwzNi4yMSwxMzcuNzhBNjMuNCw2My40LDAsMCwwLDMyLDE2MGE2My44NCw2My44NCwwLDAsMCwxMDAuNjUsNTIuMzJabTQwLjQ0LDYyLjI4QTYzLjc5LDYzLjc5LDAsMCwwLDEyOCwyNTZINjRBNjQuMDYsNjQuMDYsMCwwLDAsMCwzMjB2MzJhMzIsMzIsMCwwLDAsMzIsMzJIOTcuOTFBMTQ2LjYyLDE0Ni42MiwwLDAsMSwxNzMuMDksMjc0LjZaTTU0NCwyMjRhNjQsNjQsMCwxLDAtNjQtNjRBNjQuMDYsNjQuMDYsMCwwLDAsNTQ0LDIyNFpNNTAwLjU2LDM1NS4xMWExMTQuMjQsMTE0LjI0LDAsMCwwLTg0LjQ3LTY1LjI4TDM2MSwyNDcuMjNjNDEuNDYtMTYuMyw3MS01NS45Miw3MS0xMDMuMjNBMTExLjkzLDExMS45MywwLDAsMCwzMjAsMzJjLTU3LjE0LDAtMTAzLjY5LDQyLjgzLTExMC42LDk4LjA4TDQ1LjQ2LDMuMzhBMTYsMTYsMCwwLDAsMjMsNi4xOUwzLjM3LDMxLjQ2QTE2LDE2LDAsMCwwLDYuMTgsNTMuOTFMNTk0LjUzLDUwOC42M0ExNiwxNiwwLDAsMCw2MTcsNTA1LjgybDE5LjY0LTI1LjI3YTE2LDE2LDAsMCwwLTIuODEtMjIuNDVaTTEyOCw0MDMuMjFWNDMyYTQ4LDQ4LDAsMCwwLDQ4LDQ4SDQ2NGE0Ny40NSw0Ny40NSwwLDAsMCwxMi41Ny0xLjg3TDIzMiwyODkuMTNDMTczLjc0LDI5NC44MywxMjgsMzQzLjQyLDEyOCw0MDMuMjFaTTU3NiwyNTZINTEyYTYzLjc5LDYzLjc5LDAsMCwwLTQ1LjA5LDE4LjZBMTQ2LjI5LDE0Ni4yOSwwLDAsMSw1NDIsMzg0aDY2YTMyLDMyLDAsMCwwLDMyLTMyVjMyMEE2NC4wNiw2NC4wNiwwLDAsMCw1NzYsMjU2WlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAyMjRjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjQtNjQgMjguNy02NCA2NCAyOC43IDY0IDY0IDY0em00NDggMGMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NC02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6bTMyIDMyaC02NGMtMTcuNiAwLTMzLjUgNy4xLTQ1LjEgMTguNiA0MC4zIDIyLjEgNjguOSA2MiA3NS4xIDEwOS40aDY2YzE3LjcgMCAzMi0xNC4zIDMyLTMydi0zMmMwLTM1LjMtMjguNy02NC02NC02NHptLTI1NiAwYzYxLjkgMCAxMTItNTAuMSAxMTItMTEyUzM4MS45IDMyIDMyMCAzMiAyMDggODIuMSAyMDggMTQ0czUwLjEgMTEyIDExMiAxMTJ6bTc2LjggMzJoLTguM2MtMjAuOCAxMC00My45IDE2LTY4LjUgMTZzLTQ3LjYtNi02OC41LTE2aC04LjNDMTc5LjYgMjg4IDEyOCAzMzkuNiAxMjggNDAzLjJWNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OHYtMjguOGMwLTYzLjYtNTEuNi0xMTUuMi0xMTUuMi0xMTUuMnptLTIyMy43LTEzLjRDMTYxLjUgMjYzLjEgMTQ1LjYgMjU2IDEyOCAyNTZINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0djMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY1LjljNi4zLTQ3LjQgMzQuOS04Ny4zIDc1LjItMTA5LjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVV0ZW5zaWxTcG9vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAuMSAzMS45Yy01NS01NS4xLTE2NC45LTM0LjUtMjI3LjggMjguNS00OS4zIDQ5LjMtNTUuMSAxMTAtMjguOCAxNjAuNEw5IDQxMy4yYy0xMS42IDEwLjUtMTIuMSAyOC41LTEgMzkuNUw1OS4zIDUwNGMxMSAxMSAyOS4xIDEwLjUgMzkuNS0xLjFsMTkyLjQtMjE0LjRjNTAuNCAyNi4zIDExMS4xIDIwLjUgMTYwLjQtMjguOCA2My02Mi45IDgzLjYtMTcyLjggMjguNS0yMjcuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXRlbnNpbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA3LjkgMTUuMmMuOCA0LjcgMTYuMSA5NC41IDE2LjEgMTI4LjggMCA1Mi4zLTI3LjggODkuNi02OC45IDEwNC42TDE2OCA0ODYuN2MuNyAxMy43LTEwLjIgMjUuMy0yNCAyNS4zSDgwYy0xMy43IDAtMjQuNy0xMS41LTI0LTI1LjNsMTIuOS0yMzguMUMyNy43IDIzMy42IDAgMTk2LjIgMCAxNDQgMCAxMDkuNiAxNS4zIDE5LjkgMTYuMSAxNS4yIDE5LjMtNS4xIDYxLjQtNS40IDY0IDE2LjN2MTQxLjJjMS4zIDMuNCAxNS4xIDMuMiAxNiAwIDEuNC0yNS4zIDcuOS0xMzkuMiA4LTE0MS44IDMuMy0yMC44IDQ0LjctMjAuOCA0Ny45IDAgLjIgMi43IDYuNiAxMTYuNSA4IDE0MS44LjkgMy4yIDE0LjggMy40IDE2IDBWMTYuM2MyLjYtMjEuNiA0NC44LTIxLjQgNDgtMS4xem0xMTkuMiAyODUuN2wtMTUgMTg1LjFjLTEuMiAxNCA5LjkgMjYgMjMuOSAyNmg1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYyNGMwLTEzLjItMTAuNy0yNC0yNC0yNC04Mi41IDAtMjIxLjQgMTc4LjUtNjQuOSAzMDAuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVjdG9yU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAxMjhWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtOTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJIMTYwYzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgMCAwIDE0LjMzIDAgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMnYxOTJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyaDE5MmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJWMTYwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ6bS05Ni02NGgzMnYzMmgtMzJWNjR6TTY0IDY0aDMydjMySDY0VjY0em0zMiAzODRINjR2LTMyaDMydjMyem0zNTIgMGgtMzJ2LTMyaDMydjMyem0tMzItOTZoLTMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMySDE2MHYtMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkg5NlYxNjBoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY5NmgxOTJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMnYxOTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZlbnVzRG91YmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxNzZjMC03OS41LTY0LjUtMTQ0LTE0NC0xNDRTMCA5Ni41IDAgMTc2YzAgNjguNSA0Ny45IDEyNS45IDExMiAxNDAuNFYzNjhINzZjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMzZ2MzZjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMzZoMzZjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTM2di01MS42YzY0LjEtMTQuNSAxMTItNzEuOSAxMTItMTQwLjR6bS0yMjQgMGMwLTQ0LjEgMzUuOS04MCA4MC04MHM4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODAtODAtMzUuOS04MC04MHptMzM2IDE0MC40VjM2OGgzNmM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC0zNnYzNmMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTM2aC0zNmMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoMzZ2LTUxLjZjLTIxLjItNC44LTQwLjYtMTQuMy01Ny4yLTI3LjMgMTQtMTYuNyAyNS0zNiAzMi4xLTU3LjEgMTQuNSAxNC44IDM0LjcgMjQgNTcuMSAyNCA0NC4xIDAgODAtMzUuOSA4MC04MHMtMzUuOS04MC04MC04MGMtMjIuMyAwLTQyLjYgOS4yLTU3LjEgMjQtNy4xLTIxLjEtMTgtNDAuNC0zMi4xLTU3LjFDMzAzLjQgNDMuNiAzMzQuMyAzMiAzNjggMzJjNzkuNSAwIDE0NCA2NC41IDE0NCAxNDQgMCA2OC41LTQ3LjkgMTI1LjktMTEyIDE0MC40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWZW51c01hcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTY0IDBoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktNDguNyA0OC43QzQyMi41IDcyLjEgMzk2LjIgNjQgMzY4IDY0Yy0zMy43IDAtNjQuNiAxMS42LTg5LjIgMzAuOSAxNCAxNi43IDI1IDM2IDMyLjEgNTcuMSAxNC41LTE0LjggMzQuNy0yNCA1Ny4xLTI0IDQ0LjEgMCA4MCAzNS45IDgwIDgwcy0zNS45IDgwLTgwIDgwYy0yMi4zIDAtNDIuNi05LjItNTcuMS0yNC03LjEgMjEuMS0xOCA0MC40LTMyLjEgNTcuMSAyNC41IDE5LjQgNTUuNSAzMC45IDg5LjIgMzAuOSA3OS41IDAgMTQ0LTY0LjUgMTQ0LTE0NCAwLTI4LjItOC4xLTU0LjUtMjIuMS03Ni43bDQ4LjctNDguNyAxNi45IDE2LjljMi40IDIuNCA1LjQgMy41IDguNCAzLjUgNi4yIDAgMTIuMS00LjggMTIuMS0xMlYxMmMwLTYuNi01LjQtMTItMTItMTJ6TTE0NCA2NEM2NC41IDY0IDAgMTI4LjUgMCAyMDhjMCA2OC41IDQ3LjkgMTI1LjkgMTEyIDE0MC40VjQwMEg3NmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgzNnYzNmMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEydi0zNmgzNmM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMzZ2LTUxLjZjNjQuMS0xNC42IDExMi03MS45IDExMi0xNDAuNCAwLTc5LjUtNjQuNS0xNDQtMTQ0LTE0NHptMCAyMjRjLTQ0LjEgMC04MC0zNS45LTgwLTgwczM1LjktODAgODAtODAgODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWZW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjg4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMTc2YzAtNzkuNS02NC41LTE0NC0xNDQtMTQ0UzAgOTYuNSAwIDE3NmMwIDY4LjUgNDcuOSAxMjUuOSAxMTIgMTQwLjRWMzY4SDc2Yy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDM2djM2YzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTM2aDM2YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0zNnYtNTEuNmM2NC4xLTE0LjUgMTEyLTcxLjkgMTEyLTE0MC40em0tMjI0IDBjMC00NC4xIDM1LjktODAgODAtODBzODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwLTgwLTM1LjktODAtODB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZlc3RQYXRjaGVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzNy4yNTIsMjM5Ljg3NywzODQsMTYwVjMyQTMyLDMyLDAsMCwwLDM1MiwwSDMyMGEyMy45ODIsMjMuOTgyLDAsMCwwLTEzLjMxMiw0LjAzMWwtMjUsMTYuNjcyYTEwMy43OTQsMTAzLjc5NCwwLDAsMS0xMTUuMzc2LDBsLTI1LTE2LjY3MkEyMy45ODIsMjMuOTgyLDAsMCwwLDEyOCwwSDk2QTMyLDMyLDAsMCwwLDY0LDMyVjE2MEwxMC43NDgsMjM5Ljg3N0E2NCw2NCwwLDAsMCwwLDI3NS4zNzdWNDgwYTMyLDMyLDAsMCwwLDMyLDMySDE5MlYyODhhMzEuOTg3LDMxLjk4NywwLDAsMSwxLjY0My0xMC4xMTlMMjA3LjEzNSwyMzcuNCwxNTAuMTg4LDY2LjU2MUExNTEuNTc5LDE1MS41NzksMCwwLDAsMjI0LDg2LjIzNGExNTEuNTY1LDE1MS41NjUsMCwwLDAsNzMuODExLTE5LjY2OEwyMjQsMjg4VjUxMkg0MTZhMzIsMzIsMCwwLDAsMzItMzJWMjc1LjM3N0E2NCw2NCwwLDAsMCw0MzcuMjUyLDIzOS44NzdaTTYzLjUsMjcyLjQ4NGExMi4wMSwxMi4wMSwwLDAsMSwxNy0xNi45NjhsMTUuNSwxNS41LDE1LjUtMTUuNWExMi4wMSwxMi4wMSwwLDAsMSwxNywxNi45NjhMMTEyLjk4NCwyODgsMTI4LjUsMzAzLjUxNmExMi4wMSwxMi4wMSwwLDAsMS0xNywxNi45NjhMOTYsMzA0Ljk4NGwtMTUuNSwxNS41YTEyLjAxLDEyLjAxLDAsMCwxLTE3LTE2Ljk2OEw3OS4wMTYsMjg4Wk05Niw0NTZhNDAsNDAsMCwxLDEsNDAtNDBBNDAsNDAsMCwwLDEsOTYsNDU2Wk0zNTkuMjI3LDMzNS43ODUsMzEwLjcsMzM2YTYuNjcxLDYuNjcxLDAsMCwxLTYuNy02LjdsLjIxNS00OC41NzRBMjQuOTg3LDI0Ljk4NywwLDAsMSwzMzEuNDMsMjU2LjFjMTIuNzg5LDEuMTYyLDIyLjEyOSwxMi42MTksMjIuMDU2LDI1LjQxOWwtLjAzNyw1LjA1Nyw1LjA1MS0uMDM3YzEyLjgyNi0uMDM1LDI0LjIzNiw5LjI3NSwyNS40LDIyLjA3NkEyNC45NDgsMjQuOTQ4LDAsMCwxLDM1OS4yMjcsMzM1Ljc4NVpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzcuMjUyLDIzOS44NzcsMzg0LDE2MFYzMkEzMiwzMiwwLDAsMCwzNTIsMEgzMjBhMjQuMDIxLDI0LjAyMSwwLDAsMC0xMy4zMTIsNC4wMzFsLTI1LDE2LjY3MmExMDMuNzk0LDEwMy43OTQsMCwwLDEtMTE1LjM3NiwwbC0yNS0xNi42NzJBMjQuMDIxLDI0LjAyMSwwLDAsMCwxMjgsMEg5NkEzMiwzMiwwLDAsMCw2NCwzMlYxNjBMMTAuNzQ4LDIzOS44NzdBNjQsNjQsMCwwLDAsMCwyNzUuMzc3VjQ4MGEzMiwzMiwwLDAsMCwzMiwzMkgxOTJWMjg4YTMxLjk4NywzMS45ODcsMCwwLDEsMS42NDMtMTAuMTE5TDIwNy4xMzUsMjM3LjQsMTUwLjE4OCw2Ni41NjRBMTUxLjUxOCwxNTEuNTE4LDAsMCwwLDIyNCw4Ni4yMzRhMTUxLjU1LDE1MS41NSwwLDAsMCw3My44MTItMTkuNjcyTDIyNCwyODhWNTEySDQxNmEzMiwzMiwwLDAsMCwzMi0zMlYyNzUuMzc3QTY0LDY0LDAsMCwwLDQzNy4yNTIsMjM5Ljg3N1pNMTMxLjMxMiwzNzEuMzEybC00OCw0OGExNiwxNiwwLDAsMS0yMi42MjQtMjIuNjI0bDQ4LTQ4YTE2LDE2LDAsMCwxLDIyLjYyNCwyMi42MjRabTI1Niw0OGExNS45OTIsMTUuOTkyLDAsMCwxLTIyLjYyNCwwbC00OC00OGExNiwxNiwwLDAsMSwyMi42MjQtMjIuNjI0bDQ4LDQ4QTE1Ljk5MywxNS45OTMsMCwwLDEsMzg3LjMxMiw0MTkuMzEyWlwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3Ny43IDE4Ni4xTDMwOS41IDE4LjNjLTMuMS0zLjEtOC4yLTMuMS0xMS4zIDBsLTM0IDMzLjljLTMuMSAzLjEtMy4xIDguMiAwIDExLjNsMTEuMiAxMS4xTDMzIDMxNi41Yy0zOC44IDM4LjctNDUuMSAxMDItOS40IDE0My41IDIwLjYgMjQgNDkuNSAzNiA3OC40IDM1LjkgMjYuNCAwIDUyLjgtMTAgNzIuOS0zMC4xbDI0Ni4zLTI0NS43IDExLjIgMTEuMWMzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDM0LTMzLjljMy4xLTMgMy4xLTguMSAwLTExLjJ6TTMxOCAyNTZIMTYxbDE0OC0xNDcuNyA3OC41IDc4LjNMMzE4IDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlhbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzIgNjRoMjR2MjQwYzAgNDQuMSAzNS45IDgwIDgwIDgwczgwLTM1LjkgODAtODBWNjRoMjRjNC40IDAgOC0zLjYgOC04VjhjMC00LjQtMy42LTgtOC04SDcyYy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4em03MiAwaDY0djk2aC02NFY2NHptNDgwIDM4NEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg2MDhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6TTM2MCA2NGgyNHYyNDBjMCA0NC4xIDM1LjkgODAgODAgODBzODAtMzUuOSA4MC04MFY2NGgyNGM0LjQgMCA4LTMuNiA4LThWOGMwLTQuNC0zLjYtOC04LThIMzYwYy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4em03MiAwaDY0djk2aC02NFY2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlkZW9TbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzMuOCA0NTguMWwtNTUtNDIuNWMxNS40LTEuNCAyOS4yLTEzLjcgMjkuMi0zMS4xdi0yNTdjMC0yNS41LTI5LjEtNDAuNC01MC40LTI1LjhMNDQ4IDE3Ny4zdjEzNy4ybC0zMi0yNC43di0xNzhjMC0yNi40LTIxLjQtNDcuOC00Ny44LTQ3LjhIMTIzLjlMNDUuNSAzLjRDMzguNS0yIDI4LjUtLjggMjMgNi4yTDMuNCAzMS40Yy01LjQgNy00LjIgMTcgMi44IDIyLjRMNDIuNyA4MiA0MTYgMzcwLjZsMTc4LjUgMTM4YzcgNS40IDE3IDQuMiAyMi41LTIuOGwxOS42LTI1LjNjNS41LTYuOSA0LjItMTctMi44LTIyLjR6TTMyIDQwMC4yYzAgMjYuNCAyMS40IDQ3LjggNDcuOCA0Ny44aDI4OC40YzExLjIgMCAyMS40LTQgMjkuNi0xMC41TDMyIDE1NC43djI0NS41elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYuMiA2NEg0Ny44QzIxLjQgNjQgMCA4NS40IDAgMTExLjh2Mjg4LjRDMCA0MjYuNiAyMS40IDQ0OCA0Ny44IDQ0OGgyODguNGMyNi40IDAgNDcuOC0yMS40IDQ3LjgtNDcuOFYxMTEuOGMwLTI2LjQtMjEuNC00Ny44LTQ3LjgtNDcuOHptMTg5LjQgMzcuN0w0MTYgMTc3LjN2MTU3LjRsMTA5LjYgNzUuNWMyMS4yIDE0LjYgNTAuNC0uMyA1MC40LTI1LjhWMTI3LjVjMC0yNS40LTI5LjEtNDAuNC01MC40LTI1Ljh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpaGFyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzIuODggNDAwLjcxTDU0NCAzNTJ2LTY0bDU1LjE2LTE3LjY5YzExLjc5LTUuOSAxMS43OS0yMi43MiAwLTI4LjYyTDQ4MCAxOTJ2LTY0bDI3LjMxLTE2LjNjNy43Mi03LjcyIDUuNjEtMjAuNzQtNC4xNi0yNS42MkwzMjAgMCAxMzYuODUgODYuMDdjLTkuNzcgNC44OC0xMS44OCAxNy45LTQuMTYgMjUuNjJMMTYwIDEyOHY2NEw0MC44NCAyNDEuNjljLTExLjc5IDUuOS0xMS43OSAyMi43MiAwIDI4LjYyTDk2IDI4OHY2NEw3LjEyIDQwMC43MWMtNS40MiAzLjYyLTcuNyA5LjYzLTcgMTUuMjkuNjIgNS4wMSAzLjU3IDkuNzUgOC43MiAxMi4zM0w2NCA0NDh2NDhjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTQ4aDE2MHY0OGMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNDhoMTYwdjQ4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di00OGw1NS4xNS0xOS42N2M1LjE2LTIuNTggOC4xLTcuMzIgOC43Mi0xMi4zMy43MS01LjY3LTEuNTctMTEuNjgtNi45OS0xNS4yOXpNMjI0IDEyOGgxOTJ2NjRIMjI0di02NHptLTY0IDIyNHYtNjRoMzIwdjY0SDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlydXNTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTQsMjI3LjZIOTIuNEM3Ni43LDIyNy42LDY0LDI0MC4zLDY0LDI1NnMxMi43LDI4LjQsMjguNCwyOC40SDExNGM1MC43LDAsNzYuMSw2MS4zLDQwLjIsOTcuMUwxMzksMzk2LjggYy0xMS41LDEwLjctMTIuMiwyOC43LTEuNiw0MC4yczI4LjcsMTIuMiw0MC4yLDEuNmMwLjUtMC41LDEuMS0xLDEuNi0xLjZsMTUuMi0xNS4yYzM1LjgtMzUuOCw5Ny4xLTEwLjUsOTcuMSw0MC4ydjIxLjUgYzAsMTUuNywxMi44LDI4LjQsMjguNSwyOC40YzE1LjcsMCwyOC40LTEyLjcsMjguNC0yOC40VjQ2MmMwLTI2LjYsMTctNDUuOSwzOC4yLTUzLjRsLTI0NC41LTE4OSBDMTMzLjcsMjI0LjcsMTIzLjksMjI3LjUsMTE0LDIyNy42eiBNNjE3LDUwNS44bDE5LjYtMjUuM2M1LjQtNyw0LjItMTctMi44LTIyLjVMNDcwLjYsMzMyYzQuMi0yNS40LDI0LjktNDcuNSw1NS40LTQ3LjVoMjEuNSBjMTUuNywwLDI4LjQtMTIuNywyOC40LTI4LjRzLTEyLjctMjguNC0yOC40LTI4LjRINTI2Yy01MC43LDAtNzYuMS02MS4zLTQwLjItOTcuMWwxNS4yLTE1LjNjMTAuNy0xMS41LDEwLTI5LjUtMS42LTQwLjIgYy0xMC45LTEwLjEtMjcuNy0xMC4xLTM4LjYsMGwtMTUuMiwxNS4yYy0zNS44LDM1LjgtOTcuMSwxMC41LTk3LjEtNDAuMlYyOC41QzM0OC40LDEyLjcsMzM1LjcsMCwzMjAsMCBjLTE1LjcsMC0yOC40LDEyLjctMjguNCwyOC40VjUwYzAsNTAuNy02MS4zLDc2LjEtOTcuMSw0MC4yTDE3OS4yLDc1Yy0xMS4xLTExLjEtMjkuNC0xMC42LTQwLjUsMC41TDQ1LjUsMy40IGMtNy01LjQtMTctNC4yLTIyLjUsMi44TDMuNCwzMS41Yy01LjQsNy00LjIsMTcsMi44LDIyLjVsNTg4LjQsNDU0LjdDNjAxLjUsNTE0LjEsNjExLjYsNTEyLjgsNjE3LDUwNS44eiBNMzM1LjQsMjI3LjVsLTYyLjktNDguNiBjNC45LTEuOCwxMC4yLTIuOCwxNS40LTIuOWMyNi41LDAsNDgsMjEuNSw0OCw0OEMzMzYsMjI1LjIsMzM1LjUsMjI2LjMsMzM1LjQsMjI3LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4My41NSwyMjcuNTVINDYyYy01MC42OCwwLTc2LjA3LTYxLjI3LTQwLjIzLTk3LjExTDQzNywxMTUuMTlBMjguNDQsMjguNDQsMCwwLDAsMzk2LjgsNzVMMzgxLjU2LDkwLjIyYy0zNS44NCwzNS44My05Ny4xMSwxMC40NS05Ny4xMS00MC4yM1YyOC40NGEyOC40NSwyOC40NSwwLDAsMC01Ni45LDBWNTBjMCw1MC42OC02MS4yNyw3Ni4wNi05Ny4xMSw0MC4yM0wxMTUuMiw3NUEyOC40NCwyOC40NCwwLDAsMCw3NSwxMTUuMTlsMTUuMjUsMTUuMjVjMzUuODQsMzUuODQsMTAuNDUsOTcuMTEtNDAuMjMsOTcuMTFIMjguNDVhMjguNDUsMjguNDUsMCwxLDAsMCw1Ni44OUg1MGM1MC42OCwwLDc2LjA3LDYxLjI4LDQwLjIzLDk3LjEyTDc1LDM5Ni44QTI4LjQ1LDI4LjQ1LDAsMCwwLDExNS4yLDQzN2wxNS4yNC0xNS4yNWMzNS44NC0zNS44NCw5Ny4xMS0xMC40NSw5Ny4xMSw0MC4yM3YyMS41NGEyOC40NSwyOC40NSwwLDAsMCw1Ni45LDBWNDYyYzAtNTAuNjgsNjEuMjctNzYuMDcsOTcuMTEtNDAuMjNMMzk2LjgsNDM3QTI4LjQ1LDI4LjQ1LDAsMCwwLDQzNywzOTYuOGwtMTUuMjUtMTUuMjRjLTM1Ljg0LTM1Ljg0LTEwLjQ1LTk3LjEyLDQwLjIzLTk3LjEyaDIxLjU0YTI4LjQ1LDI4LjQ1LDAsMSwwLDAtNTYuODlaTTIyNCwyNzJhNDgsNDgsMCwxLDEsNDgtNDhBNDgsNDgsMCwwLDEsMjI0LDI3MlptODAsNTZhMjQsMjQsMCwxLDEsMjQtMjRBMjQsMjQsMCwwLDEsMzA0LDMyOFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlydXNlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQsMzUySDYxMS44OGMtMjguNTEsMC00Mi43OS0zNC40Ny0yMi42My01NC42M2w4LjU4LTguNTdhMTYsMTYsMCwxLDAtMjIuNjMtMjIuNjNsLTguNTcsOC41OEM1NDYuNDcsMjk0LjkxLDUxMiwyODAuNjMsNTEyLDI1Mi4xMlYyNDBhMTYsMTYsMCwwLDAtMzIsMHYxMi4xMmMwLDI4LjUxLTM0LjQ3LDQyLjc5LTU0LjYzLDIyLjYzbC04LjU3LTguNThhMTYsMTYsMCwwLDAtMjIuNjMsMjIuNjNsOC41OCw4LjU3YzIwLjE2LDIwLjE2LDUuODgsNTQuNjMtMjIuNjMsNTQuNjNIMzY4YTE2LDE2LDAsMCwwLDAsMzJoMTIuMTJjMjguNTEsMCw0Mi43OSwzNC40NywyMi42Myw1NC42M2wtOC41OCw4LjU3YTE2LDE2LDAsMSwwLDIyLjYzLDIyLjYzbDguNTctOC41OGMyMC4xNi0yMC4xNiw1NC42My01Ljg4LDU0LjYzLDIyLjYzVjQ5NmExNiwxNiwwLDAsMCwzMiwwVjQ4My44OGMwLTI4LjUxLDM0LjQ3LTQyLjc5LDU0LjYzLTIyLjYzbDguNTcsOC41OGExNiwxNiwwLDEsMCwyMi42My0yMi42M2wtOC41OC04LjU3QzU2OS4wOSw0MTguNDcsNTgzLjM3LDM4NCw2MTEuODgsMzg0SDYyNGExNiwxNiwwLDAsMCwwLTMyWk00ODAsMzg0YTMyLDMyLDAsMSwxLDMyLTMyQTMyLDMyLDAsMCwxLDQ4MCwzODRaTTM0Ni41MSwyMTMuMzNoMTYuMTZhMjEuMzMsMjEuMzMsMCwwLDAsMC00Mi42NkgzNDYuNTFjLTM4LDAtNTcuMDUtNDYtMzAuMTctNzIuODRsMTEuNDMtMTEuNDRBMjEuMzMsMjEuMzMsMCwwLDAsMjk3LjYsNTYuMjNMMjg2LjE3LDY3LjY2Yy0yNi44OCwyNi44OC03Mi44NCw3Ljg1LTcyLjg0LTMwLjE3VjIxLjMzYTIxLjMzLDIxLjMzLDAsMCwwLTQyLjY2LDBWMzcuNDljMCwzOC00Niw1Ny4wNS03Mi44NCwzMC4xN0w4Ni40LDU2LjIzQTIxLjMzLDIxLjMzLDAsMCwwLDU2LjIzLDg2LjM5TDY3LjY2LDk3LjgzYzI2Ljg4LDI2Ljg4LDcuODUsNzIuODQtMzAuMTcsNzIuODRIMjEuMzNhMjEuMzMsMjEuMzMsMCwwLDAsMCw0Mi42NkgzNy40OWMzOCwwLDU3LjA1LDQ2LDMwLjE3LDcyLjg0TDU2LjIzLDI5Ny42QTIxLjMzLDIxLjMzLDAsMSwwLDg2LjQsMzI3Ljc3bDExLjQzLTExLjQzYzI2Ljg4LTI2Ljg4LDcyLjg0LTcuODUsNzIuODQsMzAuMTd2MTYuMTZhMjEuMzMsMjEuMzMsMCwwLDAsNDIuNjYsMFYzNDYuNTFjMC0zOCw0Ni01Ny4wNSw3Mi44NC0zMC4xN2wxMS40MywxMS40M2EyMS4zMywyMS4zMywwLDAsMCwzMC4xNy0zMC4xN2wtMTEuNDMtMTEuNDNDMjg5LjQ2LDI1OS4yOSwzMDguNDksMjEzLjMzLDM0Ni41MSwyMTMuMzNaTTE2MCwxOTJhMzIsMzIsMCwxLDEsMzItMzJBMzIsMzIsMCwwLDEsMTYwLDE5MlptODAsMzJhMTYsMTYsMCwxLDEsMTYtMTZBMTYsMTYsMCwwLDEsMjQwLDIyNFpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm9pY2VtYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAxMjhhMTQ0IDE0NCAwIDAgMC0xMTkuNzQgMjI0SDI2My43NEExNDQgMTQ0IDAgMSAwIDE0NCA0MTZoMzUyYTE0NCAxNDQgMCAwIDAgMC0yODh6TTY0IDI3MmE4MCA4MCAwIDEgMSA4MCA4MCA4MCA4MCAwIDAgMS04MC04MHptNDMyIDgwYTgwIDgwIDAgMSAxIDgwLTgwIDgwIDgwIDAgMCAxLTgwIDgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2xsZXliYWxsQmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzEuMzkgMjQzLjQ4YTI4NS41NiAyODUuNTYgMCAwIDAtMjIuNy0xMDUuN2MtOTAuOCA0Mi40LTE1Ny41IDEyMi40LTE4MC4zIDIxNi44YTI0OSAyNDkgMCAwIDAgNTYuOSA4MS4xIDMzMy44NyAzMzMuODcgMCAwIDEgMTQ2LjEtMTkyLjJ6bS0zNi45LTEzNC40YTI4NC4yMyAyODQuMjMgMCAwIDAtNTcuNC03MC43Yy05MSA0OS44LTE0NC44IDE1Mi45LTEyNSAyNjIuMiAzMy40LTgzLjEgOTguNC0xNTIgMTgyLjQtMTkxLjV6bTE4Ny42IDE2NS4xYzguNi05OS44LTI3LjMtMTk3LjUtOTcuNS0yNjQuNC0xNC43LTEuNy01MS42LTUuNS05OC45IDguNUEzMzMuODcgMzMzLjg3IDAgMCAxIDI3OS4xOSAyNDFhMjg1IDI4NSAwIDAgMCAxMDIuOSAzMy4xOHptLTEyNC43IDkuNWEyODYuMzMgMjg2LjMzIDAgMCAwLTgwLjIgNzIuNmM4MiA1Ny4zIDE4NC41IDc1LjEgMjc3LjUgNDcuOGEyNDcuMTUgMjQ3LjE1IDAgMCAwIDQyLjItODkuOSAzMzYuMSAzMzYuMSAwIDAgMS04MC45IDEwLjRjLTU0LjYtLjEtMTA4LjktMTQuMS0xNTguNi00MC45em0tOTguMyA5OS43Yy0xNS4yIDI2LTI1LjcgNTQuNC0zMi4xIDg0LjJhMjQ3LjA3IDI0Ny4wNyAwIDAgMCAyODktMjIuMWMtMTEyLjkgMTYuMS0yMDMuMy0yNC44LTI1Ni45LTYyLjF6bTE4MC4zLTM2MC42YzU1LjMgNzAuNCA4Mi41IDE2MS4yIDc0LjYgMjUzLjZhMjg2LjU5IDI4Ni41OSAwIDAgMCA4OS43LTE0LjJjMC0yIC4zLTQgLjMtNiAwLTEwNy44LTY4LjctMTk5LjEtMTY0LjYtMjMzLjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZvbHVtZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE1LjAzIDcyLjA0TDEyNi4wNiAxNjFIMjRjLTEzLjI2IDAtMjQgMTAuNzQtMjQgMjR2MTQ0YzAgMTMuMjUgMTAuNzQgMjQgMjQgMjRoMTAyLjA2bDg4Ljk3IDg4Ljk1YzE1LjAzIDE1LjAzIDQwLjk3IDQuNDcgNDAuOTctMTYuOTdWODkuMDJjMC0yMS40Ny0yNS45Ni0zMS45OC00MC45Ny0xNi45OHptMTIzLjIgMTA4LjA4Yy0xMS41OC02LjMzLTI2LjE5LTIuMTYtMzIuNjEgOS40NS02LjM5IDExLjYxLTIuMTYgMjYuMiA5LjQ1IDMyLjYxQzMyNy45OCAyMjkuMjggMzM2IDI0Mi42MiAzMzYgMjU3YzAgMTQuMzgtOC4wMiAyNy43Mi0yMC45MiAzNC44MS0xMS42MSA2LjQxLTE1Ljg0IDIxLTkuNDUgMzIuNjEgNi40MyAxMS42NiAyMS4wNSAxNS44IDMyLjYxIDkuNDUgMjguMjMtMTUuNTUgNDUuNzctNDUgNDUuNzctNzYuODhzLTE3LjU0LTYxLjMyLTQ1Ljc4LTc2Ljg3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2x1bWVNdXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNS4wMyA3MS4wNUwxMjYuMDYgMTYwSDI0Yy0xMy4yNiAwLTI0IDEwLjc0LTI0IDI0djE0NGMwIDEzLjI1IDEwLjc0IDI0IDI0IDI0aDEwMi4wNmw4OC45NyA4OC45NWMxNS4wMyAxNS4wMyA0MC45NyA0LjQ3IDQwLjk3LTE2Ljk3Vjg4LjAyYzAtMjEuNDYtMjUuOTYtMzEuOTgtNDAuOTctMTYuOTd6TTQ2MS42NCAyNTZsNDUuNjQtNDUuNjRjNi4zLTYuMyA2LjMtMTYuNTIgMC0yMi44MmwtMjIuODItMjIuODJjLTYuMy02LjMtMTYuNTItNi4zLTIyLjgyIDBMNDE2IDIxMC4zNmwtNDUuNjQtNDUuNjRjLTYuMy02LjMtMTYuNTItNi4zLTIyLjgyIDBsLTIyLjgyIDIyLjgyYy02LjMgNi4zLTYuMyAxNi41MiAwIDIyLjgyTDM3MC4zNiAyNTZsLTQ1LjYzIDQ1LjYzYy02LjMgNi4zLTYuMyAxNi41MiAwIDIyLjgybDIyLjgyIDIyLjgyYzYuMyA2LjMgMTYuNTIgNi4zIDIyLjgyIDBMNDE2IDMwMS42NGw0NS42NCA0NS42NGM2LjMgNi4zIDE2LjUyIDYuMyAyMi44MiAwbDIyLjgyLTIyLjgyYzYuMy02LjMgNi4zLTE2LjUyIDAtMjIuODJMNDYxLjY0IDI1NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm9sdW1lT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNSA3MWwtODkgODlIMjRhMjQgMjQgMCAwIDAtMjQgMjR2MTQ0YTI0IDI0IDAgMCAwIDI0IDI0aDEwMi4wNkwyMTUgNDQxYzE1IDE1IDQxIDQuNDcgNDEtMTdWODhjMC0yMS40Ny0yNi0zMi00MS0xN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm9sdW1lVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE1LjAzIDcxLjA1TDEyNi4wNiAxNjBIMjRjLTEzLjI2IDAtMjQgMTAuNzQtMjQgMjR2MTQ0YzAgMTMuMjUgMTAuNzQgMjQgMjQgMjRoMTAyLjA2bDg4Ljk3IDg4Ljk1YzE1LjAzIDE1LjAzIDQwLjk3IDQuNDcgNDAuOTctMTYuOTdWODguMDJjMC0yMS40Ni0yNS45Ni0zMS45OC00MC45Ny0xNi45N3ptMjMzLjMyLTUxLjA4Yy0xMS4xNy03LjMzLTI2LjE4LTQuMjQtMzMuNTEgNi45NS03LjM0IDExLjE3LTQuMjIgMjYuMTggNi45NSAzMy41MSA2Ni4yNyA0My40OSAxMDUuODIgMTE2LjYgMTA1LjgyIDE5NS41OCAwIDc4Ljk4LTM5LjU1IDE1Mi4wOS0xMDUuODIgMTk1LjU4LTExLjE3IDcuMzItMTQuMjkgMjIuMzQtNi45NSAzMy41IDcuMDQgMTAuNzEgMjEuOTMgMTQuNTYgMzMuNTEgNi45NUM1MjguMjcgNDM5LjU4IDU3NiAzNTEuMzMgNTc2IDI1NlM1MjguMjcgNzIuNDMgNDQ4LjM1IDE5Ljk3ek00ODAgMjU2YzAtNjMuNTMtMzIuMDYtMTIxLjk0LTg1Ljc3LTE1Ni4yNC0xMS4xOS03LjE0LTI2LjAzLTMuODItMzMuMTIgNy40NnMtMy43OCAyNi4yMSA3LjQxIDMzLjM2QzQwOC4yNyAxNjUuOTcgNDMyIDIwOS4xMSA0MzIgMjU2cy0yMy43MyA5MC4wMy02My40OCAxMTUuNDJjLTExLjE5IDcuMTQtMTQuNSAyMi4wNy03LjQxIDMzLjM2IDYuNTEgMTAuMzYgMjEuMTIgMTUuMTQgMzMuMTIgNy40NkM0NDcuOTQgMzc3Ljk0IDQ4MCAzMTkuNTQgNDgwIDI1NnptLTE0MS43Ny03Ni44N2MtMTEuNTgtNi4zMy0yNi4xOS0yLjE2LTMyLjYxIDkuNDUtNi4zOSAxMS42MS0yLjE2IDI2LjIgOS40NSAzMi42MUMzMjcuOTggMjI4LjI4IDMzNiAyNDEuNjMgMzM2IDI1NmMwIDE0LjM4LTguMDIgMjcuNzItMjAuOTIgMzQuODEtMTEuNjEgNi40MS0xNS44NCAyMS05LjQ1IDMyLjYxIDYuNDMgMTEuNjYgMjEuMDUgMTUuOCAzMi42MSA5LjQ1IDI4LjIzLTE1LjU1IDQ1Ljc3LTQ1IDQ1Ljc3LTc2Ljg4cy0xNy41NC02MS4zMi00NS43OC03Ni44NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm90ZVllYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDggMzIwaC02NHY2NGgyMi40YzUuMyAwIDkuNiAzLjYgOS42IDh2MTZjMCA0LjQtNC4zIDgtOS42IDhINzMuNmMtNS4zIDAtOS42LTMuNi05LjYtOHYtMTZjMC00LjQgNC4zLTggOS42LThIOTZ2LTY0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg1NzZjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tOTYgNjRWNjQuM2MwLTE3LjktMTQuNS0zMi4zLTMyLjMtMzIuM0gxNjAuNEMxNDIuNSAzMiAxMjggNDYuNSAxMjggNjQuM1YzODRoMzg0ek0yMTEuMiAyMDJsMjUuNS0yNS4zYzQuMi00LjIgMTEtNC4yIDE1LjIuMWw0MS4zIDQxLjYgOTUuMi05NC40YzQuMi00LjIgMTEtNC4yIDE1LjIuMWwyNS4zIDI1LjVjNC4yIDQuMiA0LjIgMTEtLjEgMTUuMkwzMDAuNSAyOTJjLTQuMiA0LjItMTEgNC4yLTE1LjItLjFsLTc0LjEtNzQuN2MtNC4zLTQuMi00LjItMTEgMC0xNS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWckNhcmRib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDggNjRIMzJDMTQuMzMgNjQgMCA3OC4zMyAwIDk2djMyMGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDE2MC4yMmMyNS4xOSAwIDQ4LjAzLTE0Ljc3IDU4LjM2LTM3Ljc0bDI3Ljc0LTYxLjY0QzI4Ni4yMSAzMzEuMDggMzAyLjM1IDMyMCAzMjAgMzIwczMzLjc5IDExLjA4IDQxLjY4IDI4LjYybDI3Ljc0IDYxLjY0QzM5OS43NSA0MzMuMjMgNDIyLjYgNDQ4IDQ0Ny43OCA0NDhINjA4YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNMTYwIDMwNGMtMzUuMzUgMC02NC0yOC42NS02NC02NHMyOC42NS02NCA2NC02NCA2NCAyOC42NSA2NCA2NC0yOC42NSA2NC02NCA2NHptMzIwIDBjLTM1LjM1IDAtNjQtMjguNjUtNjQtNjRzMjguNjUtNjQgNjQtNjQgNjQgMjguNjUgNjQgNjQtMjguNjUgNjQtNjQgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhbGtpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzIzNC41IDAgMjA4IDBzLTQ4IDIxLjUtNDggNDggMjEuNSA0OCA0OCA0OHptOTQuNSAxNDkuMWwtMjMuMy0xMS44LTkuNy0yOS40Yy0xNC43LTQ0LjYtNTUuNy03NS44LTEwMi4yLTc1LjktMzYtLjEtNTUuOSAxMC4xLTkzLjMgMjUuMi0yMS42IDguNy0zOS4zIDI1LjItNDkuNyA0Ni4yTDE3LjYgMjEzYy03LjggMTUuOC0xLjUgMzUgMTQuMiA0Mi45IDE1LjYgNy45IDM0LjYgMS41IDQyLjUtMTQuM0w4MSAyMjhjMy41LTcgOS4zLTEyLjUgMTYuNS0xNS40bDI2LjgtMTAuOC0xNS4yIDYwLjdjLTUuMiAyMC44LjQgNDIuOSAxNC45IDU4LjhsNTkuOSA2NS40YzcuMiA3LjkgMTIuMyAxNy40IDE0LjkgMjcuN2wxOC4zIDczLjNjNC4zIDE3LjEgMjEuNyAyNy42IDM4LjggMjMuMyAxNy4xLTQuMyAyNy42LTIxLjcgMjMuMy0zOC44bC0yMi4yLTg5Yy0yLjYtMTAuMy03LjctMTkuOS0xNC45LTI3LjdsLTQ1LjUtNDkuNyAxNy4yLTY4LjcgNS41IDE2LjVjNS4zIDE2LjEgMTYuNyAyOS40IDMxLjcgMzdsMjMuMyAxMS44YzE1LjYgNy45IDM0LjYgMS41IDQyLjUtMTQuMyA3LjctMTUuNyAxLjQtMzUuMS0xNC4zLTQzek03My42IDM4NS44Yy0zLjIgOC4xLTggMTUuNC0xNC4yIDIxLjVsLTUwIDUwLjFjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjcgMTIuNSA0NS4yIDBsNTkuNC01OS40YzYuMS02LjEgMTAuOS0xMy40IDE0LjItMjEuNWwxMy41LTMzLjhjLTU1LjMtNjAuMy0zOC43LTQxLjgtNDcuNC01My43bC0yMC43IDUxLjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhbGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjEuMiAxMjhIODBjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTZoMzg0YzguODQgMCAxNi03LjE2IDE2LTE2IDAtMjYuNTEtMjEuNDktNDgtNDgtNDhINjRDMjguNjUgMzIgMCA2MC42NSAwIDk2djMyMGMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0aDM5Ny4yYzI4LjAyIDAgNTAuOC0yMS41MyA1MC44LTQ4VjE3NmMwLTI2LjQ3LTIyLjc4LTQ4LTUwLjgtNDh6TTQxNiAzMzZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhcmVob3VzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMzUySDEzNi40Yy00LjQgMC04IDMuNi04IDhsLS4xIDQ4YzAgNC40IDMuNiA4IDggOEg1MDRjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LTh6bTAgOTZIMTM2LjFjLTQuNCAwLTggMy42LTggOGwtLjEgNDhjMCA0LjQgMy42IDggOCA4aDM2OGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHptMC0xOTJIMTM2LjZjLTQuNCAwLTggMy42LTggOGwtLjEgNDhjMCA0LjQgMy42IDggOCA4SDUwNGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHptMTA2LjUtMTM5TDMzOC40IDMuN2E0OC4xNSA0OC4xNSAwIDAgMC0zNi45IDBMMjkuNSAxMTdDMTEuNyAxMjQuNSAwIDE0MS45IDAgMTYxLjNWNTA0YzAgNC40IDMuNiA4IDggOGg4MGM0LjQgMCA4LTMuNiA4LThWMjU2YzAtMTcuNiAxNC42LTMyIDMyLjYtMzJoMzgyLjhjMTggMCAzMi42IDE0LjQgMzIuNiAzMnYyNDhjMCA0LjQgMy42IDggOCA4aDgwYzQuNCAwIDgtMy42IDgtOFYxNjEuM2MwLTE5LjQtMTEuNy0zNi44LTI5LjUtNDQuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2F0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTYyLjEgMzgzLjljLTIxLjUtMi40LTQyLjEtMTAuNS01Ny45LTIyLjktMTQuMS0xMS4xLTM0LjItMTEuMy00OC4yIDAtMzcuOSAzMC40LTEwNy4yIDMwLjQtMTQ1LjctMS41LTEzLjUtMTEuMi0zMy05LjEtNDYuNyAxLjgtMzggMzAuMS0xMDYuOSAzMC0xNDUuMi0xLjctMTMuNS0xMS4yLTMzLjMtOC45LTQ3LjEgMi0xNS41IDEyLjItMzYgMjAuMS01Ny43IDIyLjQtNy45LjgtMTMuNiA3LjgtMTMuNiAxNS43djMyLjJjMCA5LjEgNy42IDE2LjggMTYuNyAxNiAyOC44LTIuNSA1Ni4xLTExLjQgNzkuNC0yNS45IDU2LjUgMzQuNiAxMzcgMzQuMSAxOTIgMCA1Ni41IDM0LjYgMTM3IDM0LjEgMTkyIDAgMjMuMyAxNC4yIDUwLjkgMjMuMyA3OS4xIDI1LjggOS4xLjggMTYuNy02LjkgMTYuNy0xNnYtMzEuNmMuMS04LTUuNy0xNS40LTEzLjgtMTYuM3ptMC0xNDRjLTIxLjUtMi40LTQyLjEtMTAuNS01Ny45LTIyLjktMTQuMS0xMS4xLTM0LjItMTEuMy00OC4yIDAtMzcuOSAzMC40LTEwNy4yIDMwLjQtMTQ1LjctMS41LTEzLjUtMTEuMi0zMy05LjEtNDYuNyAxLjgtMzggMzAuMS0xMDYuOSAzMC0xNDUuMi0xLjctMTMuNS0xMS4yLTMzLjMtOC45LTQ3LjEgMi0xNS41IDEyLjItMzYgMjAuMS01Ny43IDIyLjQtNy45LjgtMTMuNiA3LjgtMTMuNiAxNS43djMyLjJjMCA5LjEgNy42IDE2LjggMTYuNyAxNiAyOC44LTIuNSA1Ni4xLTExLjQgNzkuNC0yNS45IDU2LjUgMzQuNiAxMzcgMzQuMSAxOTIgMCA1Ni41IDM0LjYgMTM3IDM0LjEgMTkyIDAgMjMuMyAxNC4yIDUwLjkgMjMuMyA3OS4xIDI1LjggOS4xLjggMTYuNy02LjkgMTYuNy0xNnYtMzEuNmMuMS04LTUuNy0xNS40LTEzLjgtMTYuM3ptMC0xNDRDNTQwLjYgOTMuNCA1MjAgODUuNCA1MDQuMiA3MyA0OTAuMSA2MS45IDQ3MCA2MS43IDQ1NiA3M2MtMzcuOSAzMC40LTEwNy4yIDMwLjQtMTQ1LjctMS41LTEzLjUtMTEuMi0zMy05LjEtNDYuNyAxLjgtMzggMzAuMS0xMDYuOSAzMC0xNDUuMi0xLjctMTMuNS0xMS4yLTMzLjMtOC45LTQ3LjEgMi0xNS41IDEyLjItMzYgMjAuMS01Ny43IDIyLjQtNy45LjgtMTMuNiA3LjgtMTMuNiAxNS43djMyLjJjMCA5LjEgNy42IDE2LjggMTYuNyAxNiAyOC44LTIuNSA1Ni4xLTExLjQgNzkuNC0yNS45IDU2LjUgMzQuNiAxMzcgMzQuMSAxOTIgMCA1Ni41IDM0LjYgMTM3IDM0LjEgMTkyIDAgMjMuMyAxNC4yIDUwLjkgMjMuMyA3OS4xIDI1LjggOS4xLjggMTYuNy02LjkgMTYuNy0xNnYtMzEuNmMuMS04LTUuNy0xNS40LTEzLjgtMTYuM3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2F2ZVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzYgNDgwSDMyNGEzNiAzNiAwIDAgMS0zNi0zNlY5NmgtOTZ2MTU2YTM2IDM2IDAgMCAxLTM2IDM2SDE2YTE2IDE2IDAgMCAxLTE2LTE2di0zMmExNiAxNiAwIDAgMSAxNi0xNmgxMTJWNjhhMzYgMzYgMCAwIDEgMzYtMzZoMTUyYTM2IDM2IDAgMCAxIDM2IDM2djM0OGg5NlYyNjBhMzYgMzYgMCAwIDEgMzYtMzZoMTQwYTE2IDE2IDAgMCAxIDE2IDE2djMyYTE2IDE2IDAgMCAxLTE2IDE2SDUxMnYxNTZhMzYgMzYgMCAwIDEtMzYgMzZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdlaWdodEhhbmdpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEwLjI4IDQ0NS44NmwtNzMuMDMtMjkyLjEzYy0zLjgtMTUuMTktMTYuNDQtMjUuNzItMzAuODctMjUuNzJoLTYwLjI1YzMuNTctMTAuMDUgNS44OC0yMC43MiA1Ljg4LTMyIDAtNTMuMDItNDIuOTgtOTYtOTYtOTZzLTk2IDQyLjk4LTk2IDk2YzAgMTEuMjggMi4zIDIxLjk1IDUuODggMzJoLTYwLjI1Yy0xNC40MyAwLTI3LjA4IDEwLjU0LTMwLjg3IDI1LjcyTDEuNzIgNDQ1Ljg2Qy02LjYxIDQ3OS4xNyAxNi4zOCA1MTIgNDguMDMgNTEyaDQxNS45NWMzMS42NCAwIDU0LjYzLTMyLjgzIDQ2LjMtNjYuMTR6TTI1NiAxMjhjLTE3LjY0IDAtMzItMTQuMzYtMzItMzJzMTQuMzYtMzIgMzItMzIgMzIgMTQuMzYgMzIgMzItMTQuMzYgMzItMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdlaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNjRoLTI1Ljk4QzQzOC40NCA5Mi4yOCA0NDggMTI1LjAxIDQ0OCAxNjBjMCAxMDUuODctODYuMTMgMTkyLTE5MiAxOTJTNjQgMjY1Ljg3IDY0IDE2MGMwLTM0Ljk5IDkuNTYtNjcuNzIgMjUuOTgtOTZINjRDMjguNzEgNjQgMCA5Mi43MSAwIDEyOHYzMjBjMCAzNS4yOSAyOC43MSA2NCA2NCA2NGgzODRjMzUuMjkgMCA2NC0yOC43MSA2NC02NFYxMjhjMC0zNS4yOS0yOC43MS02NC02NC02NHpNMjU2IDMyMGM4OC4zNyAwIDE2MC03MS42MyAxNjAtMTYwUzM0NC4zNyAwIDI1NiAwIDk2IDcxLjYzIDk2IDE2MHM3MS42MyAxNjAgMTYwIDE2MHptLS4zLTE1MS45NGwzMy41OC03OC4zNmMzLjUtOC4xNyAxMi45NC0xMS45MiAyMS4wMy04LjQxIDguMTIgMy40OCAxMS44OCAxMi44OSA4LjQxIDIxbC0zMy42NyA3OC41NUMyOTEuNzMgMTg4IDI5NiAxOTcuNDUgMjk2IDIwOGMwIDIyLjA5LTE3LjkxIDQwLTQwIDQwcy00MC0xNy45MS00MC00MGMwLTIxLjk4IDE3Ljc2LTM5Ljc3IDM5LjctMzkuOTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdoZWVsY2hhaXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2LjEwMSAzODUuNjY5bDE0LjIyNyAyOC42NjNjMy45MjkgNy45MTUuNjk3IDE3LjUxNi03LjIxOCAyMS40NDVsLTY1LjQ2NSAzMi44ODZjLTE2LjA0OSA3Ljk2Ny0zNS41NTYgMS4xOTQtNDMuMTg5LTE1LjA1NUwzMzEuNjc5IDMyMEgxOTJjLTE1LjkyNSAwLTI5LjQyNi0xMS43MS0zMS42NzktMjcuNDc1QzEyNi40MzMgNTUuMzA4IDEyOC4zOCA3MC4wNDQgMTI4IDY0YzAtMzYuMzU4IDMwLjMxOC02NS42MzUgNjcuMDUyLTYzLjkyOSAzMy4yNzEgMS41NDUgNjAuMDQ4IDI4LjkwNSA2MC45MjUgNjIuMjAxLjg2OCAzMi45MzMtMjMuMTUyIDYwLjQyMy01NC42MDggNjUuMDM5bDQuNjcgMzIuNjlIMzM2YzguODM3IDAgMTYgNy4xNjMgMTYgMTZ2MzJjMCA4LjgzNy03LjE2MyAxNi0xNiAxNkgyMTUuMTgybDQuNTcyIDMySDM1MmEzMiAzMiAwIDAgMSAyOC45NjIgMTguMzkyTDQzOC40NzcgMzk2LjhsMzYuMTc4LTE4LjM0OWM3LjkxNS0zLjkyOSAxNy41MTctLjY5NyAyMS40NDYgNy4yMTh6TTMxMS4zNTggMzUyaC0yNC41MDZjLTcuNzg4IDU0LjIwNC01NC41MjggOTYtMTEwLjg1MiA5Ni02MS43NTcgMC0xMTItNTAuMjQzLTExMi0xMTIgMC00MS41MDUgMjIuNjk0LTc3LjgwOSA1Ni4zMjQtOTcuMTU2LTMuNzEyLTI1Ljk2NS02Ljg0NC00Ny44Ni05LjQ4OC02Ni4zMzNDNDUuOTU2IDE5OC40NjQgMCAyNjEuOTYzIDAgMzM2YzAgOTcuMDQ3IDc4Ljk1MyAxNzYgMTc2IDE3NiA3MS44NyAwIDEzMy44MDYtNDMuMzA4IDE2MS4xMS0xMDUuMTkyTDMxMS4zNTggMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaWZpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzNC45MSAxNTQuODhDNDU3Ljc0LTguOTkgMTgyLjE5LTguOTMgNS4wOSAxNTQuODhjLTYuNjYgNi4xNi02Ljc5IDE2LjU5LS4zNSAyMi45OGwzNC4yNCAzMy45N2M2LjE0IDYuMSAxNi4wMiA2LjIzIDIyLjQuMzggMTQ1LjkyLTEzMy42OCAzNzEuMy0xMzMuNzEgNTE3LjI1IDAgNi4zOCA1Ljg1IDE2LjI2IDUuNzEgMjIuNC0uMzhsMzQuMjQtMzMuOTdjNi40My02LjM5IDYuMy0xNi44Mi0uMzYtMjIuOTh6TTMyMCAzNTJjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjRzMjguNjUgNjQgNjQgNjQgNjQtMjguNjUgNjQtNjQtMjguNjUtNjQtNjQtNjR6bTIwMi42Ny04My41OWMtMTE1LjI2LTEwMS45My0yOTAuMjEtMTAxLjgyLTQwNS4zNCAwLTYuOSA2LjEtNy4xMiAxNi42OS0uNTcgMjMuMTVsMzQuNDQgMzMuOTljNiA1LjkyIDE1LjY2IDYuMzIgMjIuMDUuOCA4My45NS03Mi41NyAyMDkuNzQtNzIuNDEgMjkzLjQ5IDAgNi4zOSA1LjUyIDE2LjA1IDUuMTMgMjIuMDUtLjhsMzQuNDQtMzMuOTljNi41Ni02LjQ2IDYuMzMtMTcuMDYtLjU2LTIzLjE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ni43IDI1NkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgxNDIuMmMxNS45IDAgMzAuOCAxMC45IDMzLjQgMjYuNiAzLjMgMjAtMTIuMSAzNy40LTMxLjYgMzcuNC0xNC4xIDAtMjYuMS05LjItMzAuNC0yMS45LTIuMS02LjMtOC42LTEwLjEtMTUuMi0xMC4xSDgxLjZjLTkuOCAwLTE3LjcgOC44LTE1LjkgMTguNCA4LjYgNDQuMSA0Ny42IDc3LjYgOTQuMiA3Ny42IDU3LjEgMCAxMDIuNy01MC4xIDk1LjItMTA4LjZDMjQ5IDI5MSAyMDUuNCAyNTYgMTU2LjcgMjU2ek0xNiAyMjRoMzM2YzU5LjcgMCAxMDYuOC01NC44IDkzLjgtMTE2LjctNy42LTM2LjItMzYuOS02NS41LTczLjEtNzMuMS01NS40LTExLjYtMTA1LjEgMjQuOS0xMTQuOSA3NS41LTEuOSA5LjYgNi4xIDE4LjMgMTUuOCAxOC4zaDMyLjhjNi43IDAgMTMuMS0zLjggMTUuMi0xMC4xQzMyNS45IDEwNS4yIDMzNy45IDk2IDM1MiA5NmMxOS40IDAgMzQuOSAxNy40IDMxLjYgMzcuNC0yLjYgMTUuNy0xNy40IDI2LjYtMzMuNCAyNi42SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2em0zODQgMzJIMjQzLjdjMTkuMyAxNi42IDMzLjIgMzguOCAzOS44IDY0SDQwMGMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OGMtMTcuOSAwLTMzLjMtOS45LTQxLjYtMjQuNC0yLjktNS04LjctNy42LTE0LjUtNy42aC0zMy44Yy0xMC45IDAtMTkgMTAuOC0xNS4zIDIxLjEgMTcuOCA1MC42IDcwLjUgODQuOCAxMjkuNCA3Mi4zIDQxLjItOC43IDc1LjEtNDEuNiA4NC43LTgyLjdDNTI2IDMyMS41IDQ3MC41IDI1NiA0MDAgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kb3dDbG9zZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tODMuNiAyOTAuNWM0LjggNC44IDQuOCAxMi42IDAgMTcuNGwtNDAuNSA0MC41Yy00LjggNC44LTEyLjYgNC44LTE3LjQgMEwyNTYgMzEzLjNsLTY2LjUgNjcuMWMtNC44IDQuOC0xMi42IDQuOC0xNy40IDBsLTQwLjUtNDAuNWMtNC44LTQuOC00LjgtMTIuNiAwLTE3LjRsNjcuMS02Ni41LTY3LjEtNjYuNWMtNC44LTQuOC00LjgtMTIuNiAwLTE3LjRsNDAuNS00MC41YzQuOC00LjggMTIuNi00LjggMTcuNCAwbDY2LjUgNjcuMSA2Ni41LTY3LjFjNC44LTQuOCAxMi42LTQuOCAxNy40IDBsNDAuNSA0MC41YzQuOCA0LjggNC44IDEyLjYgMCAxNy40TDMxMy4zIDI1Nmw2Ny4xIDY2LjV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmRvd01heGltaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0xNiAxNjBINjR2LTg0YzAtNi42IDUuNC0xMiAxMi0xMmgzNjBjNi42IDAgMTIgNS40IDEyIDEydjg0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kb3dNaW5pbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMzUySDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHYzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTMyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kb3dSZXN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiA0OHYyODhjMCAyNi41LTIxLjUgNDgtNDggNDhoLTQ4VjE3NmMwLTQ0LjEtMzUuOS04MC04MC04MEgxMjhWNDhjMC0yNi41IDIxLjUtNDggNDgtNDhoMjg4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0zODQgMTc2djI4OGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTc2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDI4OGMyNi41IDAgNDggMjEuNSA0OCA0OHptLTY4IDI4YzAtNi42LTUuNC0xMi0xMi0xMkg3NmMtNi42IDAtMTIgNS40LTEyIDEydjUyaDI1MnYtNTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmVCb3R0bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA3LjMxIDcyLjU3TDQzOS40MyA0LjY5Yy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwbC0yMi42MyAyMi42M2MtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wtNzYuNjcgNzYuNjdjLTQ2LjU4LTE5LjctMTAyLjQtMTAuNzMtMTQwLjM3IDI3LjIzTDE4Ljc1IDMxMi4yM2MtMjQuOTkgMjQuOTktMjQuOTkgNjUuNTIgMCA5MC41MWw5MC41MSA5MC41MWMyNC45OSAyNC45OSA2NS41MiAyNC45OSA5MC41MSAwbDE1OC4zOS0xNTguMzljMzcuOTYtMzcuOTYgNDYuOTMtOTMuNzkgMjcuMjMtMTQwLjM3bDc2LjY3LTc2LjY3YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMjIuNjMtMjIuNjNjNi4yNC02LjI0IDYuMjQtMTYuMzctLjAxLTIyLjYyek0xNzkuMjIgNDIzLjI5bC05MC41MS05MC41MSAxMjIuMDQtMTIyLjA0IDkwLjUxIDkwLjUxLTEyMi4wNCAxMjIuMDR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpbmVHbGFzc0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjg4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYgNDY0aC00MFYzNDYuODFjNjguNDctMTUuODkgMTE4LjA1LTc5LjkxIDExMS40LTE1NC4xNmwtMTUuOTUtMTc4LjFDMjcwLjcxIDYuMzEgMjYzLjkgMCAyNTUuNzQgMEgzMi4yNmMtOC4xNSAwLTE0Ljk3IDYuMzEtMTUuNyAxNC41NUwuNiAxOTIuNjZDLTYuMDUgMjY2LjkxIDQzLjUzIDMzMC45MyAxMTIgMzQ2LjgyVjQ2NEg3MmMtMjIuMDkgMC00MCAxNy45MS00MCA0MCAwIDQuNDIgMy41OCA4IDggOGgyMDhjNC40MiAwIDgtMy41OCA4LTggMC0yMi4wOS0xNy45MS00MC00MC00MHpNNjEuNzUgNDhoMTY0LjVsNy4xNyA4MEg1NC41OGw3LjE3LTgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5lR2xhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI4OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE2IDQ2NGgtNDBWMzQ2LjgxYzY4LjQ3LTE1Ljg5IDExOC4wNS03OS45MSAxMTEuNC0xNTQuMTZsLTE1Ljk1LTE3OC4xQzI3MC43MSA2LjMxIDI2My45IDAgMjU1Ljc0IDBIMzIuMjZjLTguMTUgMC0xNC45NyA2LjMxLTE1LjcgMTQuNTVMLjYgMTkyLjY2Qy02LjA1IDI2Ni45MSA0My41MyAzMzAuOTMgMTEyIDM0Ni44MlY0NjRINzJjLTIyLjA5IDAtNDAgMTcuOTEtNDAgNDAgMCA0LjQyIDMuNTggOCA4IDhoMjA4YzQuNDIgMCA4LTMuNTggOC04IDAtMjIuMDktMTcuOTEtNDAtNDAtNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvblNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTY0IDE5MmM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDhsMTguNi04MC42YzEuNy03LjUtNC0xNC43LTExLjctMTQuN2gtNDYuMWMtNS43IDAtMTAuNiA0LTExLjcgOS41TDQ1MC43IDEyOEgzNDAuOGwtMTkuNy04NmMtMS4zLTUuNS02LjEtOS4zLTExLjctOS4zaC00NGMtNS42IDAtMTAuNCAzLjgtMTEuNyA5LjNsLTIwIDg2SDEyNWwtMTcuNS04NS43Yy0xLjEtNS42LTYuMS05LjYtMTEuOC05LjZINTMuNmMtNy43IDAtMTMuNCA3LjEtMTEuNyAxNC42TDYwIDEyOEgxMmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg2Mi4zbDcuMiAzMkgxMmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg4My45bDQwLjkgMTgyLjZjMS4yIDUuNSA2LjEgOS40IDExLjcgOS40aDU2LjhjNS42IDAgMTAuNC0zLjkgMTEuNy05LjNMMjU5LjMgMjg4aDU1LjFsNDIuNCAxODIuN2MxLjMgNS40IDYuMSA5LjMgMTEuNyA5LjNoNTYuOGM1LjYgMCAxMC40LTMuOSAxMS43LTkuM0w0NzkuMSAyODhINTY0YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC03MC4xbDcuNC0zMnpNMTgzLjggMzQyYy02LjIgMjUuOC02LjggNDcuMi03LjMgNDcuMmgtMS4xcy0xLjctMjItNi44LTQ3LjJsLTExLTU0aDM4Ljh6bTI3LjUtMTE4aC02Ni44bC02LjUtMzJoODAuOHptNjIuOSAwbDItOC42YzEuOS04IDMuNS0xNiA0LjgtMjMuNGgxMS44YzEuMyA3LjQgMi45IDE1LjQgNC44IDIzLjRsMiA4LjZ6bTEzMC45IDExOGMtNS4xIDI1LjItNi44IDQ3LjItNi44IDQ3LjJoLTEuMWMtLjYgMC0xLjEtMjEuNC03LjMtNDcuMmwtMTIuNC01NGgzOS4xem0yNS4yLTExOGgtNjcuNGwtNy4zLTMyaDgxLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdyZW5jaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDcuNzMgMTA5LjFjLTIuMjQtOS4wMy0xMy41NC0xMi4wOS0yMC4xMi01LjUxbC03NC4zNiA3NC4zNi02Ny44OC0xMS4zMS0xMS4zMS02Ny44OCA3NC4zNi03NC4zNmM2LjYyLTYuNjIgMy40My0xNy45LTUuNjYtMjAuMTYtNDcuMzgtMTEuNzQtOTkuNTUuOTEtMTM2LjU4IDM3LjkzLTM5LjY0IDM5LjY0LTUwLjU1IDk3LjEtMzQuMDUgMTQ3LjJMMTguNzQgNDAyLjc2Yy0yNC45OSAyNC45OS0yNC45OSA2NS41MSAwIDkwLjUgMjQuOTkgMjQuOTkgNjUuNTEgMjQuOTkgOTAuNSAwbDIxMy4yMS0yMTMuMjFjNTAuMTIgMTYuNzEgMTA3LjQ3IDUuNjggMTQ3LjM3LTM0LjIyIDM3LjA3LTM3LjA3IDQ5LjctODkuMzIgMzcuOTEtMTM2Ljczek02NCA0NzJjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYUmF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MCAzODRjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTYgMTYtNy4yIDE2LTE2LTcuMi0xNi0xNi0xNnptMTYwIDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2LTE2IDcuMi0xNiAxNiA3LjIgMTYgMTYgMTZ6TTYyNCAwSDE2QzcuMiAwIDAgNy4yIDAgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDYwOGM4LjggMCAxNi03LjIgMTYtMTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2em0wIDQ0OGgtNDhWOTZINjR2MzUySDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDYwOGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpNNDgwIDI0OGMwIDQuNC0zLjYgOC04IDhIMzM2djMyaDEwNGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDMzNnYzMmg2NGMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OC00OC0yMS41LTQ4LTQ4di0xNmgtNjR2MTZjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDggMjEuNS00OCA0OC00OGg2NHYtMzJIMjAwYy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxMDR2LTMySDE2OGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTM2di0zMkgyMDBjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDEwNHYtMjRjMC00LjQgMy42LTggOC04aDE2YzQuNCAwIDggMy42IDggOHYyNGgxMDRjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEgzMzZ2MzJoMTM2YzQuNCAwIDggMy42IDggOHYxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWVuU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTEuMiAzMmgtNjUuM2MtNC42IDAtOC44IDIuNi0xMC44IDYuN2wtNTUuNCAxMTMuMmMtMTQuNSAzNC43LTI3LjEgNzEuOS0yNy4xIDcxLjloLTEuM3MtMTIuNi0zNy4yLTI3LjEtNzEuOUwxMDguOCAzOC43Yy0yLTQuMS02LjItNi43LTEwLjgtNi43SDMyLjhjLTkuMSAwLTE0LjggOS43LTEwLjYgMTcuNkwxMDIuMyAyMDBINDRjLTYuNiAwLTEyIDUuNC0xMiAxMnYzMmMwIDYuNiA1LjQgMTIgMTIgMTJoODguMmwxOS44IDM3LjJWMzIwSDQ0Yy02LjYgMC0xMiA1LjQtMTIgMTJ2MzJjMCA2LjYgNS40IDEyIDEyIDEyaDEwOHY5MmMwIDYuNiA1LjQgMTIgMTIgMTJoNTZjNi42IDAgMTItNS40IDEyLTEydi05MmgxMDhjNi42IDAgMTItNS40IDEyLTEydi0zMmMwLTYuNi01LjQtMTItMTItMTJIMjMydi0yNi44bDE5LjgtMzcuMkgzNDBjNi42IDAgMTItNS40IDEyLTEydi0zMmMwLTYuNi01LjQtMTItMTItMTJoLTU4LjNsODAuMS0xNTAuNGM0LjMtNy45LTEuNS0xNy42LTEwLjYtMTcuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWluWWFuZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEuMDMgOCAwIDExOS4wMyAwIDI1NnMxMTEuMDMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMyAyNDgtMjQ4UzM4NC45NyA4IDI0OCA4em0wIDM3NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC0xMjhjLTUzLjAyIDAtOTYgNDIuOTgtOTYgOTZzNDIuOTggOTYgOTYgOTZjLTEwNi4wNCAwLTE5Mi04NS45Ni0xOTItMTkyUzE0MS45NiA2NCAyNDggNjRjNTMuMDIgMCA5NiA0Mi45OCA5NiA5NnMtNDIuOTggOTYtOTYgOTZ6bTAtMTI4Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdBZGRyZXNzQm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzYgMTYwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0yMFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDMyMGMyNi41IDAgNDgtMjEuNSA0OC00OHYtNDhoMjBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTIwdi02NGgyMGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMjB2LTY0aDIwem0tNjggMzA0SDQ4VjQ4aDMyMHY0MTZ6TTIwOCAyNTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjQtNjQgMjguNy02NCA2NCAyOC43IDY0IDY0IDY0em0tODkuNiAxMjhoMTc5LjJjMTIuNCAwIDIyLjQtOC42IDIyLjQtMTkuMnYtMTkuMmMwLTMxLjgtMzAuMS01Ny42LTY3LjItNTcuNi0xMC44IDAtMTguNyA4LTQ0LjggOC0yNi45IDAtMzMuNC04LTQ0LjgtOC0zNy4xIDAtNjcuMiAyNS44LTY3LjIgNTcuNnYxOS4yYzAgMTAuNiAxMCAxOS4yIDIyLjQgMTkuMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQWRkcmVzc0NhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MGMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptMCA0MDBINDhWODBoNDgwdjM1MnpNMjA4IDI1NmMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NC02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6bS04OS42IDEyOGgxNzkuMmMxMi40IDAgMjIuNC04LjYgMjIuNC0xOS4ydi0xOS4yYzAtMzEuOC0zMC4xLTU3LjYtNjcuMi01Ny42LTEwLjggMC0xOC43IDgtNDQuOCA4LTI2LjkgMC0zMy40LTgtNDQuOC04LTM3LjEgMC02Ny4yIDI1LjgtNjcuMiA1Ny42djE5LjJjMCAxMC42IDEwIDE5LjIgMjIuNCAxOS4yek0zNjAgMzIwaDExMmM0LjQgMCA4LTMuNiA4LTh2LTE2YzAtNC40LTMuNi04LTgtOEgzNjBjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDh6bTAtNjRoMTEyYzQuNCAwIDgtMy42IDgtOHYtMTZjMC00LjQtMy42LTgtOC04SDM2MGMtNC40IDAtOCAzLjYtOCA4djE2YzAgNC40IDMuNiA4IDggOHptMC02NGgxMTJjNC40IDAgOC0zLjYgOC04di0xNmMwLTQuNC0zLjYtOC04LThIMzYwYy00LjQgMC04IDMuNi04IDh2MTZjMCA0LjQgMy42IDggOCA4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdBbmdyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTAtMTQ0Yy0zMy42IDAtNjUuMiAxNC44LTg2LjggNDAuNi04LjUgMTAuMi03LjEgMjUuMyAzLjEgMzMuOHMyNS4zIDcuMiAzMy44LTNjMjQuOC0yOS43IDc1LTI5LjcgOTkuOCAwIDguMSA5LjcgMjMuMiAxMS45IDMzLjggMyAxMC4yLTguNSAxMS41LTIzLjYgMy4xLTMzLjgtMjEuNi0yNS44LTUzLjItNDAuNi04Ni44LTQwLjZ6bS00OC03MmMxMC4zIDAgMTkuOS02LjcgMjMtMTcuMSAzLjgtMTIuNy0zLjQtMjYuMS0xNi4xLTI5LjlsLTgwLTI0Yy0xMi44LTMuOS0yNi4xIDMuNC0yOS45IDE2LjEtMy44IDEyLjcgMy40IDI2LjEgMTYuMSAyOS45bDI4LjIgOC41Yy0zLjEgNC45LTUuMyAxMC40LTUuMyAxNi42IDAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjQgMzItMzIuMXptMTk5LTU0LjljLTMuOC0xMi43LTE3LjEtMTkuOS0yOS45LTE2LjFsLTgwIDI0Yy0xMi43IDMuOC0xOS45IDE3LjItMTYuMSAyOS45IDMuMSAxMC40IDEyLjcgMTcuMSAyMyAxNy4xIDAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC02LjItMi4yLTExLjctNS4zLTE2LjZsMjguMi04LjVjMTIuNy0zLjcgMTkuOS0xNy4xIDE2LjEtMjkuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQXJyb3dBbHRDaXJjbGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTAgNDQ4Yy0xMTAuNSAwLTIwMC04OS41LTIwMC0yMDBTMTQ1LjUgNTYgMjU2IDU2czIwMCA4OS41IDIwMCAyMDAtODkuNSAyMDAtMjAwIDIwMHptLTMyLTMxNnYxMTZoLTY3Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWw5OSA5OWM0LjcgNC43IDEyLjMgNC43IDE3IDBsOTktOTljNy42LTcuNiAyLjItMjAuNS04LjUtMjAuNWgtNjdWMTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQXJyb3dBbHRDaXJjbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMjU2YzAgMTM3IDExMSAyNDggMjQ4IDI0OHMyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDggOCAxMTkgOCAyNTZ6bTQ0OCAwYzAgMTEwLjUtODkuNSAyMDAtMjAwIDIwMFM1NiAzNjYuNSA1NiAyNTYgMTQ1LjUgNTYgMjU2IDU2czIwMCA4OS41IDIwMCAyMDB6bS03Mi0yMHY0MGMwIDYuNi01LjQgMTItMTIgMTJIMjU2djY3YzAgMTAuNy0xMi45IDE2LTIwLjUgOC41bC05OS05OWMtNC43LTQuNy00LjctMTIuMyAwLTE3bDk5LTk5YzcuNi03LjYgMjAuNS0yLjIgMjAuNSA4LjV2NjdoMTE2YzYuNiAwIDEyIDUuNCAxMiAxMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQXJyb3dBbHRDaXJjbGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2QzUwNCAxMTkgMzkzIDggMjU2IDhTOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OHptLTQ0OCAwYzAtMTEwLjUgODkuNS0yMDAgMjAwLTIwMHMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDBTNTYgMzY2LjUgNTYgMjU2em03MiAyMHYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDExNnYtNjdjMC0xMC43IDEyLjktMTYgMjAuNS04LjVsOTkgOTljNC43IDQuNyA0LjcgMTIuMyAwIDE3bC05OSA5OWMtNy42IDcuNi0yMC41IDIuMi0yMC41LTguNXYtNjdIMTQwYy02LjYgMC0xMi01LjQtMTItMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Fycm93QWx0Q2lyY2xlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUwNGMxMzcgMCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4em0wLTQ0OGMxMTAuNSAwIDIwMCA4OS41IDIwMCAyMDBzLTg5LjUgMjAwLTIwMCAyMDBTNTYgMzY2LjUgNTYgMjU2IDE0NS41IDU2IDI1NiA1NnptMjAgMzI4aC00MGMtNi42IDAtMTItNS40LTEyLTEyVjI1NmgtNjdjLTEwLjcgMC0xNi0xMi45LTguNS0yMC41bDk5LTk5YzQuNy00LjcgMTIuMy00LjcgMTcgMGw5OSA5OWM3LjYgNy42IDIuMiAyMC41LTguNSAyMC41aC02N3YxMTZjMCA2LjYtNS40IDEyLTEyIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdCZWxsU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjMzLjk5IDQ3MS4wMkwzNiAzLjUxQzI5LjEtMi4wMSAxOS4wMy0uOSAxMy41MSA2bC0xMCAxMi40OUMtMi4wMiAyNS4zOS0uOSAzNS40NiA2IDQwLjk4bDU5OCA0NjcuNTFjNi45IDUuNTIgMTYuOTYgNC40IDIyLjQ5LTIuNDlsMTAtMTIuNDljNS41Mi02LjkgNC40MS0xNi45Ny0yLjUtMjIuNDl6TTE2My41MyAzNjhjMTYuNzEtMjIuMDMgMzQuNDgtNTUuOCA0MS40LTExMC41OGwtNDUuNDctMzUuNTVjLTMuMjcgOTAuNzMtMzYuNDcgMTIwLjY4LTU0Ljg0IDE0MC40Mi02IDYuNDUtOC42NiAxNC4xNi04LjYxIDIxLjcxLjExIDE2LjQgMTIuOTggMzIgMzIuMSAzMmgyNzkuNjZsLTYxLjQtNDhIMTYzLjUzek0zMjAgOTZjNjEuODYgMCAxMTIgNTAuMTQgMTEyIDExMiAwIC4yLS4wNi4zOC0uMDYuNTguMDIgMTYuODQgMS4xNiAzMS43NyAyLjc5IDQ1LjczbDU5LjUzIDQ2LjU0Yy04LjMxLTIyLjEzLTE0LjM0LTUxLjQ5LTE0LjM0LTkyLjg1IDAtNzcuNy01NC40OC0xMzkuOS0xMjcuOTQtMTU1LjE2VjMyYzAtMTcuNjctMTQuMzItMzItMzEuOTgtMzJzLTMxLjk4IDE0LjMzLTMxLjk4IDMydjIwLjg0Yy0yNi4wMiA1LjQxLTQ5LjQ1IDE2Ljk0LTY5LjEzIDMyLjcybDM4LjE3IDI5Ljg0QzI3NSAxMDMuMTggMjk2LjY1IDk2IDMyMCA5NnptMCA0MTZjMzUuMzIgMCA2My45Ny0yOC42NSA2My45Ny02NEgyNTYuMDNjMCAzNS4zNSAyOC42NSA2NCA2My45NyA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQmVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzkuMzkgMzYyLjI5Yy0xOS4zMi0yMC43Ni01NS40Ny01MS45OS01NS40Ny0xNTQuMjkgMC03Ny43LTU0LjQ4LTEzOS45LTEyNy45NC0xNTUuMTZWMzJjMC0xNy42Ny0xNC4zMi0zMi0zMS45OC0zMnMtMzEuOTggMTQuMzMtMzEuOTggMzJ2MjAuODRDMTE4LjU2IDY4LjEgNjQuMDggMTMwLjMgNjQuMDggMjA4YzAgMTAyLjMtMzYuMTUgMTMzLjUzLTU1LjQ3IDE1NC4yOS02IDYuNDUtOC42NiAxNC4xNi04LjYxIDIxLjcxLjExIDE2LjQgMTIuOTggMzIgMzIuMSAzMmgzODMuOGMxOS4xMiAwIDMyLTE1LjYgMzIuMS0zMiAuMDUtNy41NS0yLjYxLTE1LjI3LTguNjEtMjEuNzF6TTY3LjUzIDM2OGMyMS4yMi0yNy45NyA0NC40Mi03NC4zMyA0NC41My0xNTkuNDIgMC0uMi0uMDYtLjM4LS4wNi0uNTggMC02MS44NiA1MC4xNC0xMTIgMTEyLTExMnMxMTIgNTAuMTQgMTEyIDExMmMwIC4yLS4wNi4zOC0uMDYuNTguMTEgODUuMSAyMy4zMSAxMzEuNDYgNDQuNTMgMTU5LjQySDY3LjUzek0yMjQgNTEyYzM1LjMyIDAgNjMuOTctMjguNjUgNjMuOTctNjRIMTYwLjAzYzAgMzUuMzUgMjguNjUgNjQgNjMuOTcgNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Jvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAwSDQ4QzIxLjQ5IDAgMCAyMS40OSAwIDQ4djQ2NGwxOTItMTEyIDE5MiAxMTJWNDhjMC0yNi41MS0yMS40OS00OC00OC00OHptMCA0MjguNDNsLTE0NC04NC0xNDQgODRWNTRhNiA2IDAgMCAxIDYtNmgyNzZjMy4zMTQgMCA2IDIuNjgzIDYgNS45OTZWNDI4LjQzelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdCdWlsZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMTQ4di00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnptMTQwIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMnptLTEyOCA5Nmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJ6bTEyOCAwaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMnptLTc2IDg0di00MGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnptNzYgMTJoNDBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyem0xODAgMTI0djM2SDB2LTM2YzAtNi42IDUuNC0xMiAxMi0xMmgxOS41VjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0aDMzN2MxMy4zIDAgMjQgMTAuNyAyNCAyNHY0NDBINDM2YzYuNiAwIDEyIDUuNCAxMiAxMnpNNzkuNSA0NjNIMTkydi02N2MwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjY3aDExMi41VjQ5TDgwIDQ4bC0uNSA0MTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0OCAyODhoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyem0xMDgtMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEyem05NiAwdi00MGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnptLTk2IDk2di00MGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnptLTk2IDB2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEyem0xOTIgMHYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ6bTk2LTI2MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2VjE2MEg0OHYyOThjMCAzLjMgMi43IDYgNiA2aDM0MGMzLjMgMCA2LTIuNyA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDY0aC00OFYxMmMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY1MkgxNjBWMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NTJINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxMTJjMC0yNi41MS0yMS40OS00OC00OC00OHptLTYgNDAwSDU0YTYgNiAwIDAgMS02LTZWMTYwaDM1MnYyOThhNiA2IDAgMCAxLTYgNnptLTUyLjg0OS0yMDAuNjVMMTk4Ljg0MiA0MDQuNTE5Yy00LjcwNSA0LjY2Ny0xMi4zMDMgNC42MzctMTYuOTcxLS4wNjhsLTc1LjA5MS03NS42OTljLTQuNjY3LTQuNzA1LTQuNjM3LTEyLjMwMy4wNjgtMTYuOTcxbDIyLjcxOS0yMi41MzZjNC43MDUtNC42NjcgMTIuMzAzLTQuNjM3IDE2Ljk3LjA2OWw0NC4xMDQgNDQuNDYxIDExMS4wNzItMTEwLjE4MWM0LjcwNS00LjY2NyAxMi4zMDMtNC42MzcgMTYuOTcxLjA2OGwyMi41MzYgMjIuNzE4YzQuNjY3IDQuNzA1IDQuNjM2IDEyLjMwMy0uMDY5IDE2Ljk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDYWxlbmRhck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyNCAzMjhjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMjRjMC02LjYgNS40LTEyIDEyLTEyaDIwMGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjRjMCA2LjYtNS40IDEyLTEyIDEySDEyNHptMzI0LTIxNnYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2VjE2MEg0OHYyOThjMCAzLjMgMi43IDYgNiA2aDM0MGMzLjMgMCA2LTIuNyA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgMjkydjI0YzAgNi42LTUuNCAxMi0xMiAxMmgtNzZ2NzZjMCA2LjYtNS40IDEyLTEyIDEyaC0yNGMtNi42IDAtMTItNS40LTEyLTEydi03NmgtNzZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMjRjMC02LjYgNS40LTEyIDEyLTEyaDc2di03NmMwLTYuNiA1LjQtMTIgMTItMTJoMjRjNi42IDAgMTIgNS40IDEyIDEydjc2aDc2YzYuNiAwIDEyIDUuNCAxMiAxMnptMTEyLTE4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2VjE2MEg0OHYyOThjMCAzLjMgMi43IDYgNiA2aDM0MGMzLjMgMCA2LTIuNyA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyVGltZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzExLjcgMzc0LjdsLTE3IDE3Yy00LjcgNC43LTEyLjMgNC43LTE3IDBMMjI0IDMzNy45bC01My43IDUzLjdjLTQuNyA0LjctMTIuMyA0LjctMTcgMGwtMTctMTdjLTQuNy00LjctNC43LTEyLjMgMC0xN2w1My43LTUzLjctNTMuNy01My43Yy00LjctNC43LTQuNy0xMi4zIDAtMTdsMTctMTdjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDUzLjcgNTMuNyA1My43LTUzLjdjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDE3IDE3YzQuNyA0LjcgNC43IDEyLjMgMCAxN0wyNTcuOSAzMDRsNTMuNyA1My43YzQuOCA0LjcgNC44IDEyLjMuMSAxN3pNNDQ4IDExMnYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2VjE2MEg0OHYyOThjMCAzLjMgMi43IDYgNiA2aDM0MGMzLjMgMCA2LTIuNyA2LTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCA2NGgtNDhWMTJjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjUySDE2MFYxMmMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NTJINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS02IDQwMEg1NGMtMy4zIDAtNi0yLjctNi02VjE2MGgzNTJ2Mjk4YzAgMy4zLTIuNyA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FyZXRTcXVhcmVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyNS4xIDIwOGgxOTcuOGMxMC43IDAgMTYuMSAxMyA4LjUgMjAuNWwtOTguOSA5OC4zYy00LjcgNC43LTEyLjIgNC43LTE2LjkgMGwtOTguOS05OC4zYy03LjctNy41LTIuMy0yMC41IDguNC0yMC41ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWODZjMC0zLjMtMi43LTYtNi02SDU0Yy0zLjMgMC02IDIuNy02IDZ2MzQwYzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDYXJldFNxdWFyZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDE1Ny4xdjE5Ny44YzAgMTAuNy0xMyAxNi4xLTIwLjUgOC41bC05OC4zLTk4LjljLTQuNy00LjctNC43LTEyLjIgMC0xNi45bDk4LjMtOTguOWM3LjUtNy43IDIwLjUtMi4zIDIwLjUgOC40ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWODZjMC0zLjMtMi43LTYtNi02SDU0Yy0zLjMgMC02IDIuNy02IDZ2MzQwYzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDYXJldFNxdWFyZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAzNTQuOVYxNTcuMWMwLTEwLjcgMTMtMTYuMSAyMC41LTguNWw5OC4zIDk4LjljNC43IDQuNyA0LjcgMTIuMiAwIDE2LjlsLTk4LjMgOTguOWMtNy41IDcuNy0yMC41IDIuMy0yMC41LTguNHpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2Vjg2YzAtMy4zLTIuNy02LTYtNkg1NGMtMy4zIDAtNiAyLjctNiA2djM0MGMwIDMuMyAyLjcgNiA2IDZoMzQwYzMuMyAwIDYtMi43IDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FyZXRTcXVhcmVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjIuOSAzMDRIMTI1LjFjLTEwLjcgMC0xNi4xLTEzLTguNS0yMC41bDk4LjktOTguM2M0LjctNC43IDEyLjItNC43IDE2LjkgMGw5OC45IDk4LjNjNy43IDcuNSAyLjMgMjAuNS04LjQgMjAuNXpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2Vjg2YzAtMy4zLTIuNy02LTYtNkg1NGMtMy4zIDAtNiAyLjctNiA2djM0MGMwIDMuMyAyLjcgNiA2IDZoMzQwYzMuMyAwIDYtMi43IDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2hhcnRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk2LjggMzUyaDIyLjRjNi40IDAgMTIuOC02LjQgMTIuOC0xMi44VjEwOC44YzAtNi40LTYuNC0xMi44LTEyLjgtMTIuOGgtMjIuNGMtNi40IDAtMTIuOCA2LjQtMTIuOCAxMi44djIzMC40YzAgNi40IDYuNCAxMi44IDEyLjggMTIuOHptLTE5MiAwaDIyLjRjNi40IDAgMTIuOC02LjQgMTIuOC0xMi44VjE0MC44YzAtNi40LTYuNC0xMi44LTEyLjgtMTIuOGgtMjIuNGMtNi40IDAtMTIuOCA2LjQtMTIuOCAxMi44djE5OC40YzAgNi40IDYuNCAxMi44IDEyLjggMTIuOHptOTYgMGgyMi40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOFYyMDQuOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTIyLjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYxMzQuNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6TTQ5NiA0MDBINDhWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiA2NCAwIDcxLjE2IDAgODB2MzM2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNDY0YzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTguODQtNy4xNi0xNi0xNi0xNnptLTM4Ny4yLTQ4aDIyLjRjNi40IDAgMTIuOC02LjQgMTIuOC0xMi44di03MC40YzAtNi40LTYuNC0xMi44LTEyLjgtMTIuOGgtMjIuNGMtNi40IDAtMTIuOCA2LjQtMTIuOCAxMi44djcwLjRjMCA2LjQgNi40IDEyLjggMTIuOCAxMi44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaGVja0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkuMDMzIDggOCAxMTkuMDMzIDggMjU2czExMS4wMzMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMzMgMjQ4LTI0OFMzOTIuOTY3IDggMjU2IDh6bTAgNDhjMTEwLjUzMiAwIDIwMCA4OS40NTEgMjAwIDIwMCAwIDExMC41MzItODkuNDUxIDIwMC0yMDAgMjAwLTExMC41MzIgMC0yMDAtODkuNDUxLTIwMC0yMDAgMC0xMTAuNTMyIDg5LjQ1MS0yMDAgMjAwLTIwMG0xNDAuMjA0IDEzMC4yNjdsLTIyLjUzNi0yMi43MThjLTQuNjY3LTQuNzA1LTEyLjI2NS00LjczNi0xNi45Ny0uMDY4TDIxNS4zNDYgMzAzLjY5N2wtNTkuNzkyLTYwLjI3N2MtNC42NjctNC43MDUtMTIuMjY1LTQuNzM2LTE2Ljk3LS4wNjlsLTIyLjcxOSAyMi41MzZjLTQuNzA1IDQuNjY3LTQuNzM2IDEyLjI2NS0uMDY4IDE2Ljk3MWw5MC43ODEgOTEuNTE2YzQuNjY3IDQuNzA1IDEyLjI2NSA0LjczNiAxNi45Ny4wNjhsMTcyLjU4OS0xNzEuMjA0YzQuNzA0LTQuNjY4IDQuNzM0LTEyLjI2Ni4wNjctMTYuOTcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaGVja1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDM1MmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bTAgNDAwSDQ4VjgwaDM1MnYzNTJ6bS0zNS44NjQtMjQxLjcyNEwxOTEuNTQ3IDM2MS40OGMtNC43MDUgNC42NjctMTIuMzAzIDQuNjM3LTE2Ljk3LS4wNjhsLTkwLjc4MS05MS41MTZjLTQuNjY3LTQuNzA1LTQuNjM3LTEyLjMwMy4wNjktMTYuOTcxbDIyLjcxOS0yMi41MzZjNC43MDUtNC42NjcgMTIuMzAzLTQuNjM3IDE2Ljk3LjA2OWw1OS43OTIgNjAuMjc3IDE0MS4zNTItMTQwLjIxNmM0LjcwNS00LjY2NyAxMi4zMDMtNC42MzcgMTYuOTcuMDY4bDIyLjUzNiAyMi43MThjNC42NjcgNC43MDYgNC42MzcgMTIuMzA0LS4wNjggMTYuOTcxelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMCA0NDhjLTExMC41IDAtMjAwLTg5LjUtMjAwLTIwMFMxNDUuNSA1NiAyNTYgNTZzMjAwIDg5LjUgMjAwIDIwMC04OS41IDIwMC0yMDAgMjAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDbGlwYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDY0aC04MGMwLTM1LjMtMjguNy02NC02NC02NHMtNjQgMjguNy02NCA2NEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjExMmMwLTI2LjUtMjEuNS00OC00OC00OHpNMTkyIDQwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptMTQ0IDQxOGMwIDMuMy0yLjcgNi02IDZINTRjLTMuMyAwLTYtMi43LTYtNlYxMThjMC0zLjMgMi43LTYgNi02aDQydjM2YzAgNi42IDUuNCAxMiAxMiAxMmgxNjhjNi42IDAgMTItNS40IDEyLTEydi0zNmg0MmMzLjMgMCA2IDIuNyA2IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Nsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTAgNDQ4Yy0xMTAuNSAwLTIwMC04OS41LTIwMC0yMDBTMTQ1LjUgNTYgMjU2IDU2czIwMCA4OS41IDIwMCAyMDAtODkuNSAyMDAtMjAwIDIwMHptNjEuOC0xMDQuNGwtODQuOS02MS43Yy0zLjEtMi4zLTQuOS01LjktNC45LTkuN1YxMTZjMC02LjYgNS40LTEyIDEyLTEyaDMyYzYuNiAwIDEyIDUuNCAxMiAxMnYxNDEuN2w2Ni44IDQ4LjZjNS40IDMuOSA2LjUgMTEuNCAyLjYgMTYuOEwzMzQuNiAzNDljLTMuOSA1LjMtMTEuNCA2LjUtMTYuOCAyLjZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Nsb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAwSDE0NGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY0OEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHYzMjBjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzMjBjMjYuNTEgMCA0OC0yMS40OSA0OC00OHYtNDhoNDhjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY0OGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4ek0zNjIgNDY0SDU0YTYgNiAwIDAgMS02LTZWMTUwYTYgNiAwIDAgMSA2LTZoNDJ2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMjI0djQyYTYgNiAwIDAgMS02IDZ6bTk2LTk2SDE1MGE2IDYgMCAwIDEtNi02VjU0YTYgNiAwIDAgMSA2LTZoMzA4YTYgNiAwIDAgMSA2IDZ2MzA4YTYgNiAwIDAgMS02IDZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Nsb3NlZENhcHRpb25pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjI4OGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tNiAzMzZINTRjLTMuMyAwLTYtMi43LTYtNlYxMThjMC0zLjMgMi43LTYgNi02aDQwNGMzLjMgMCA2IDIuNyA2IDZ2Mjc2YzAgMy4zLTIuNyA2LTYgNnptLTIxMS4xLTg1LjdjMS43IDIuNCAxLjUgNS42LS41IDcuNy01My42IDU2LjgtMTcyLjggMzIuMS0xNzIuOC02Ny45IDAtOTcuMyAxMjEuNy0xMTkuNSAxNzIuNS03MC4xIDIuMSAyIDIuNSAzLjIgMSA1LjdsLTE3LjUgMzAuNWMtMS45IDMuMS02LjIgNC05LjEgMS43LTQwLjgtMzItOTQuNi0xNC45LTk0LjYgMzEuMiAwIDQ4IDUxIDcwLjUgOTIuMiAzMi42IDIuOC0yLjUgNy4xLTIuMSA5LjIuOWwxOS42IDI3Ljd6bTE5MC40IDBjMS43IDIuNCAxLjUgNS42LS41IDcuNy01My42IDU2LjktMTcyLjggMzIuMS0xNzIuOC02Ny45IDAtOTcuMyAxMjEuNy0xMTkuNSAxNzIuNS03MC4xIDIuMSAyIDIuNSAzLjIgMSA1LjdMNDIwIDIyMC4yYy0xLjkgMy4xLTYuMiA0LTkuMSAxLjctNDAuOC0zMi05NC42LTE0LjktOTQuNiAzMS4yIDAgNDggNTEgNzAuNSA5Mi4yIDMyLjYgMi44LTIuNSA3LjEtMi4xIDkuMi45bDE5LjYgMjcuN3pcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ29tbWVudEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMEg2NEMyOC43IDAgMCAyOC43IDAgNjR2Mjg4YzAgMzUuMyAyOC43IDY0IDY0IDY0aDk2djg0YzAgNy4xIDUuOCAxMiAxMiAxMiAyLjQgMCA0LjktLjcgNy4xLTIuNEwzMDQgNDE2aDE0NGMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NHptMTYgMzUyYzAgOC44LTcuMiAxNi0xNiAxNkgyODhsLTEyLjggOS42TDIwOCA0Mjh2LTYwSDY0Yy04LjggMC0xNi03LjItMTYtMTZWNjRjMC04LjggNy4yLTE2IDE2LTE2aDM4NGM4LjggMCAxNiA3LjIgMTYgMTZ2Mjg4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDb21tZW50RG90cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgMjA4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnptMTEyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyem0xMTIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6TTI1NiAzMkMxMTQuNiAzMiAwIDEyNS4xIDAgMjQwYzAgNDcuNiAxOS45IDkxLjIgNTIuOSAxMjYuM0MzOCA0MDUuNyA3IDQzOS4xIDYuNSA0MzkuNWMtNi42IDctOC40IDE3LjItNC42IDI2UzE0LjQgNDgwIDI0IDQ4MGM2MS41IDAgMTEwLTI1LjcgMTM5LjEtNDYuM0MxOTIgNDQyLjggMjIzLjIgNDQ4IDI1NiA0NDhjMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMnptMCAzNjhjLTI2LjcgMC01My4xLTQuMS03OC40LTEyLjFsLTIyLjctNy4yLTE5LjUgMTMuOGMtMTQuMyAxMC4xLTMzLjkgMjEuNC01Ny41IDI5IDcuMy0xMi4xIDE0LjQtMjUuNyAxOS45LTQwLjJsMTAuNi0yOC4xLTIwLjYtMjEuOEM2OS43IDMxNC4xIDQ4IDI4Mi4yIDQ4IDI0MGMwLTg4LjIgOTMuMy0xNjAgMjA4LTE2MHMyMDggNzEuOCAyMDggMTYwLTkzLjMgMTYwLTIwOCAxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NvbW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyQzExNC42IDMyIDAgMTI1LjEgMCAyNDBjMCA0Ny42IDE5LjkgOTEuMiA1Mi45IDEyNi4zQzM4IDQwNS43IDcgNDM5LjEgNi41IDQzOS41Yy02LjYgNy04LjQgMTcuMi00LjYgMjZTMTQuNCA0ODAgMjQgNDgwYzYxLjUgMCAxMTAtMjUuNyAxMzkuMS00Ni4zQzE5MiA0NDIuOCAyMjMuMiA0NDggMjU2IDQ0OGMxNDEuNCAwIDI1Ni05My4xIDI1Ni0yMDhTMzk3LjQgMzIgMjU2IDMyem0wIDM2OGMtMjYuNyAwLTUzLjEtNC4xLTc4LjQtMTIuMWwtMjIuNy03LjItMTkuNSAxMy44Yy0xNC4zIDEwLjEtMzMuOSAyMS40LTU3LjUgMjkgNy4zLTEyLjEgMTQuNC0yNS43IDE5LjktNDAuMmwxMC42LTI4LjEtMjAuNi0yMS44QzY5LjcgMzE0LjEgNDggMjgyLjIgNDggMjQwYzAtODguMiA5My4zLTE2MCAyMDgtMTYwczIwOCA3MS44IDIwOCAxNjAtOTMuMyAxNjAtMjA4IDE2MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ29tbWVudHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTMyIDM4Ni4yYzI3LjUtMjcuMSA0NC02MS4xIDQ0LTk4LjIgMC04MC03Ni41LTE0Ni4xLTE3Ni4yLTE1Ny45QzM2OC4zIDcyLjUgMjk0LjMgMzIgMjA4IDMyIDkzLjEgMzIgMCAxMDMuNiAwIDE5MmMwIDM3IDE2LjUgNzEgNDQgOTguMi0xNS4zIDMwLjctMzcuMyA1NC41LTM3LjcgNTQuOS02LjMgNi43LTguMSAxNi41LTQuNCAyNSAzLjYgOC41IDEyIDE0IDIxLjIgMTQgNTMuNSAwIDk2LjctMjAuMiAxMjUuMi0zOC44IDkuMiAyLjEgMTguNyAzLjcgMjguNCA0LjlDMjA4LjEgNDA3LjYgMjgxLjggNDQ4IDM2OCA0NDhjMjAuOCAwIDQwLjgtMi40IDU5LjgtNi44QzQ1Ni4zIDQ1OS43IDQ5OS40IDQ4MCA1NTMgNDgwYzkuMiAwIDE3LjUtNS41IDIxLjItMTQgMy42LTguNSAxLjktMTguMy00LjQtMjUtLjQtLjMtMjIuNS0yNC4xLTM3LjgtNTQuOHptLTM5Mi44LTkyLjNMMTIyLjEgMzA1Yy0xNC4xIDkuMS0yOC41IDE2LjMtNDMuMSAyMS40IDIuNy00LjcgNS40LTkuNyA4LTE0LjhsMTUuNS0zMS4xTDc3LjcgMjU2QzY0LjIgMjQyLjYgNDggMjIwLjcgNDggMTkyYzAtNjAuNyA3My4zLTExMiAxNjAtMTEyczE2MCA1MS4zIDE2MCAxMTItNzMuMyAxMTItMTYwIDExMmMtMTYuNSAwLTMzLTEuOS00OS01LjZsLTE5LjgtNC41ek00OTguMyAzNTJsLTI0LjcgMjQuNCAxNS41IDMxLjFjMi42IDUuMSA1LjMgMTAuMSA4IDE0LjgtMTQuNi01LjEtMjktMTIuMy00My4xLTIxLjRsLTE3LjEtMTEuMS0xOS45IDQuNmMtMTYgMy43LTMyLjUgNS42LTQ5IDUuNi01NCAwLTEwMi4yLTIwLjEtMTMxLjMtNDkuN0MzMzggMzM5LjUgNDE2IDI3Mi45IDQxNiAxOTJjMC0zLjQtLjQtNi43LS43LTEwQzQ3OS43IDE5Ni41IDUyOCAyMzguOCA1MjggMjg4YzAgMjguNy0xNi4yIDUwLjYtMjkuNyA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ29tcGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDcuOTQgMTI5Ljg2TDIwMy42IDE5NS44M2EzMS45MzggMzEuOTM4IDAgMCAwLTE1Ljc3IDE1Ljc3bC02NS45NyAxNDQuMzRjLTcuNjEgMTYuNjUgOS41NCAzMy44MSAyNi4yIDI2LjJsMTQ0LjM0LTY1Ljk3YTMxLjkzOCAzMS45MzggMCAwIDAgMTUuNzctMTUuNzdsNjUuOTctMTQ0LjM0YzcuNjEtMTYuNjYtOS41NC0zMy44MS0yNi4yLTI2LjJ6bS03Ny4zNiAxNDguNzJjLTEyLjQ3IDEyLjQ3LTMyLjY5IDEyLjQ3LTQ1LjE2IDAtMTIuNDctMTIuNDctMTIuNDctMzIuNjkgMC00NS4xNiAxMi40Ny0xMi40NyAzMi42OS0xMi40NyA0NS4xNiAwIDEyLjQ3IDEyLjQ3IDEyLjQ3IDMyLjY5IDAgNDUuMTZ6TTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMjggMC0yMDAtODkuNzItMjAwLTIwMFMxMzcuNzIgNTYgMjQ4IDU2czIwMCA4OS43MiAyMDAgMjAwLTg5LjcyIDIwMC0yMDAgMjAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDb3B5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMy45NDEgNjUuOTQxbC01MS44ODItNTEuODgyQTQ4IDQ4IDAgMCAwIDM0OC4xMTggMEgxNzZjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2NDhINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MzIwYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMjI0YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTQ4aDgwYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWOTkuODgyYTQ4IDQ4IDAgMCAwLTE0LjA1OS0zMy45NDF6TTI2NiA0NjRINTRhNiA2IDAgMCAxLTYtNlYxNTBhNiA2IDAgMCAxIDYtNmg3NHYyMjRjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg5NnY0MmE2IDYgMCAwIDEtNiA2em0xMjgtOTZIMTgyYTYgNiAwIDAgMS02LTZWNTRhNiA2IDAgMCAxIDYtNmgxMDZ2ODhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDg4djIwMmE2IDYgMCAwIDEtNiA2em02LTI1NmgtNjRWNDhoOS42MzJjMS41OTEgMCAzLjExNy42MzIgNC4yNDMgMS43NTdsNDguMzY4IDQ4LjM2OGE2IDYgMCAwIDEgMS43NTcgNC4yNDNWMTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDb3B5cmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0wIDQ0OGMtMTEwLjUzMiAwLTIwMC04OS40NTEtMjAwLTIwMCAwLTExMC41MzEgODkuNDUxLTIwMCAyMDAtMjAwIDExMC41MzIgMCAyMDAgODkuNDUxIDIwMCAyMDAgMCAxMTAuNTMyLTg5LjQ1MSAyMDAtMjAwIDIwMHptMTA3LjM1MS0xMDEuMDY0Yy05LjYxNCA5LjcxMi00NS41MyA0MS4zOTYtMTA0LjA2NSA0MS4zOTYtODIuNDMgMC0xNDAuNDg0LTYxLjQyNS0xNDAuNDg0LTE0MS41NjcgMC03OS4xNTIgNjAuMjc1LTEzOS40MDEgMTM5Ljc2Mi0xMzkuNDAxIDU1LjUzMSAwIDg4LjczOCAyNi42MiA5Ny41OTMgMzQuNzc5YTExLjk2NSAxMS45NjUgMCAwIDEgMS45MzYgMTUuMzIybC0xOC4xNTUgMjguMTEzYy0zLjg0MSA1Ljk1LTExLjk2NiA3LjI4Mi0xNy40OTkgMi45MjEtOC41OTUtNi43NzYtMzEuODE0LTIyLjUzOC02MS43MDgtMjIuNTM4LTQ4LjMwMyAwLTc3LjkxNiAzNS4zMy03Ny45MTYgODAuMDgyIDAgNDEuNTg5IDI2Ljg4OCA4My42OTIgNzguMjc3IDgzLjY5MiAzMi42NTcgMCA1Ni44NDMtMTkuMDM5IDY1LjcyNi0yNy4yMjUgNS4yNy00Ljg1NyAxMy41OTYtNC4wMzkgMTcuODIgMS43MzhsMTkuODY1IDI3LjE3YTExLjk0NyAxMS45NDcgMCAwIDEtMS4xNTIgMTUuNTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDcmVkaXRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyNy45IDMySDQ4LjFDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDguMSA0OGg0NzkuOGMyNi42IDAgNDguMS0yMS41IDQ4LjEtNDhWODBjMC0yNi41LTIxLjUtNDgtNDguMS00OHpNNTQuMSA4MGg0NjcuOGMzLjMgMCA2IDIuNyA2IDZ2NDJINDguMVY4NmMwLTMuMyAyLjctNiA2LTZ6bTQ2Ny44IDM1Mkg1NC4xYy0zLjMgMC02LTIuNy02LTZWMjU2aDQ3OS44djE3MGMwIDMuMy0yLjcgNi02IDZ6TTE5MiAzMzJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC03MmMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNzJjNi42IDAgMTIgNS40IDEyIDEyem0xOTIgMHY0MGMwIDYuNi01LjQgMTItMTIgMTJIMjM2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmgxMzZjNi42IDAgMTIgNS40IDEyIDEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdEaXp6eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bS0zMy44LTIxNy45YzcuOC03LjggNy44LTIwLjUgMC0yOC4zTDE5Ni4zIDE5MmwxNy45LTE3LjljNy44LTcuOCA3LjgtMjAuNSAwLTI4LjMtNy44LTcuOC0yMC41LTcuOC0yOC4zIDBMMTY4IDE2My43bC0xNy44LTE3LjhjLTcuOC03LjgtMjAuNS03LjgtMjguMyAwLTcuOCA3LjgtNy44IDIwLjUgMCAyOC4zbDE3LjkgMTcuOS0xNy45IDE3LjljLTcuOCA3LjgtNy44IDIwLjUgMCAyOC4zIDcuOCA3LjggMjAuNSA3LjggMjguMyAwbDE3LjgtMTcuOCAxNy44IDE3LjhjNy45IDcuNyAyMC41IDcuNyAyOC40LS4yem0xNjAtOTIuMmMtNy44LTcuOC0yMC41LTcuOC0yOC4zIDBMMzI4IDE2My43bC0xNy44LTE3LjhjLTcuOC03LjgtMjAuNS03LjgtMjguMyAwLTcuOCA3LjgtNy44IDIwLjUgMCAyOC4zbDE3LjkgMTcuOS0xNy45IDE3LjljLTcuOCA3LjgtNy44IDIwLjUgMCAyOC4zIDcuOCA3LjggMjAuNSA3LjggMjguMyAwbDE3LjgtMTcuOCAxNy44IDE3LjhjNy44IDcuOCAyMC41IDcuOCAyOC4zIDAgNy44LTcuOCA3LjgtMjAuNSAwLTI4LjNsLTE3LjgtMTggMTcuOS0xNy45YzcuNy03LjggNy43LTIwLjQgMC0yOC4yek0yNDggMjcyYy0zNS4zIDAtNjQgMjguNy02NCA2NHMyOC43IDY0IDY0IDY0IDY0LTI4LjcgNjQtNjQtMjguNy02NC02NC02NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRG90Q2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1NmMxMTAuNTMyIDAgMjAwIDg5LjQ1MSAyMDAgMjAwIDAgMTEwLjUzMi04OS40NTEgMjAwLTIwMCAyMDAtMTEwLjUzMiAwLTIwMC04OS40NTEtMjAwLTIwMCAwLTExMC41MzIgODkuNDUxLTIwMCAyMDAtMjAwbTAtNDhDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0wIDE2OGMtNDQuMTgzIDAtODAgMzUuODE3LTgwIDgwczM1LjgxNyA4MCA4MCA4MCA4MC0zNS44MTcgODAtODAtMzUuODE3LTgwLTgwLTgwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdFZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMi4zIDM0NC45bDMyLTMyYzUtNSAxMy43LTEuNSAxMy43IDUuN1Y0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OGgyNzMuNWM3LjEgMCAxMC43IDguNiA1LjcgMTMuN2wtMzIgMzJjLTEuNSAxLjUtMy41IDIuMy01LjcgMi4zSDQ4djM1MmgzNTJWMzUwLjVjMC0yLjEuOC00LjEgMi4zLTUuNnptMTU2LjYtMjAxLjhMMjk2LjMgNDA1LjdsLTkwLjQgMTBjLTI2LjIgMi45LTQ4LjUtMTkuMi00NS42LTQ1LjZsMTAtOTAuNEw0MzIuOSAxNy4xYzIyLjktMjIuOSA1OS45LTIyLjkgODIuNyAwbDQzLjIgNDMuMmMyMi45IDIyLjkgMjIuOSA2MCAuMSA4Mi44ek00NjAuMSAxNzRMNDAyIDExNS45IDIxNi4yIDMwMS44bC03LjMgNjUuMyA2NS4zLTcuM0w0NjAuMSAxNzR6bTY0LjgtNzkuN2wtNDMuMi00My4yYy00LjEtNC4xLTEwLjgtNC4xLTE0LjggMEw0MzYgODJsNTguMSA1OC4xIDMwLjktMzAuOWM0LTQuMiA0LTEwLjgtLjEtMTQuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRW52ZWxvcGVPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NC41ODYgMTY0LjUxNmMtNC42OTctMy44ODMtMTExLjcyMy04OS45NS0xMzUuMjUxLTEwOC42NTdDMzM3LjIzMSAzOC4xOTEgMjk5LjQzNyAwIDI1NiAwYy00My4yMDUgMC04MC42MzYgMzcuNzE3LTEwMy4zMzUgNTUuODU5LTI0LjQ2MyAxOS40NS0xMzEuMDcgMTA1LjE5NS0xMzUuMTUgMTA4LjU0OUE0OC4wMDQgNDguMDA0IDAgMCAwIDAgMjAxLjQ4NVY0NjRjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0MTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYyMDEuNTA5YTQ4IDQ4IDAgMCAwLTE3LjQxNC0zNi45OTN6TTQ2NCA0NThhNiA2IDAgMCAxLTYgNkg1NGE2IDYgMCAwIDEtNi02VjIwNC4zNDdjMC0xLjgxMy44MTYtMy41MjYgMi4yMjYtNC42NjUgMTUuODctMTIuODE0IDEwOC43OTMtODcuNTU0IDEzMi4zNjQtMTA2LjI5M0MyMDAuNzU1IDc4Ljg4IDIzMi4zOTggNDggMjU2IDQ4YzIzLjY5MyAwIDU1Ljg1NyAzMS4zNjkgNzMuNDEgNDUuMzg5IDIzLjU3MyAxOC43NDEgMTE2LjUwMyA5My40OTMgMTMyLjM2NiAxMDYuMzE2YTUuOTkgNS45OSAwIDAgMSAyLjIyNCA0LjY2M1Y0NTh6bS0zMS45OTEtMTg3LjcwNGM0LjI0OSA1LjE1OSAzLjQ2NSAxMi43OTUtMS43NDUgMTYuOTgxLTI4Ljk3NSAyMy4yODMtNTkuMjc0IDQ3LjU5Ny03MC45MjkgNTYuODYzQzMzNi42MzYgMzYyLjI4MyAyOTkuMjA1IDQwMCAyNTYgNDAwYy00My40NTIgMC04MS4yODctMzguMjM3LTEwMy4zMzUtNTUuODYtMTEuMjc5LTguOTY3LTQxLjc0NC0zMy40MTMtNzAuOTI3LTU2Ljg2NS01LjIxLTQuMTg3LTUuOTkzLTExLjgyMi0xLjc0NS0xNi45ODFsMTUuMjU4LTE4LjUyOGM0LjE3OC01LjA3MyAxMS42NTctNS44NDMgMTYuNzc5LTEuNzI2IDI4LjYxOCAyMy4wMDEgNTguNTY2IDQ3LjAzNSA3MC41NiA1Ni41NzFDMjAwLjE0MyAzMjAuNjMxIDIzMi4zMDcgMzUyIDI1NiAzNTJjMjMuNjAyIDAgNTUuMjQ2LTMwLjg4IDczLjQxLTQ1LjM4OSAxMS45OTQtOS41MzUgNDEuOTQ0LTMzLjU3IDcwLjU2My01Ni41NjggNS4xMjItNC4xMTYgMTIuNjAxLTMuMzQ2IDE2Ljc3OCAxLjcyN2wxNS4yNTggMTguNTI2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdFbnZlbG9wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgNjRINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYyODhjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0MTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxMTJjMC0yNi41MS0yMS40OS00OC00OC00OHptMCA0OHY0MC44MDVjLTIyLjQyMiAxOC4yNTktNTguMTY4IDQ2LjY1MS0xMzQuNTg3IDEwNi40OS0xNi44NDEgMTMuMjQ3LTUwLjIwMSA0NS4wNzItNzMuNDEzIDQ0LjcwMS0yMy4yMDguMzc1LTU2LjU3OS0zMS40NTktNzMuNDEzLTQ0LjcwMUMxMDYuMTggMTk5LjQ2NSA3MC40MjUgMTcxLjA2NyA0OCAxNTIuODA1VjExMmg0MTZ6TTQ4IDQwMFYyMTQuMzk4YzIyLjkxNCAxOC4yNTEgNTUuNDA5IDQzLjg2MiAxMDQuOTM4IDgyLjY0NiAyMS44NTcgMTcuMjA1IDYwLjEzNCA1NS4xODYgMTAzLjA2MiA1NC45NTUgNDIuNzE3LjIzMSA4MC41MDktMzcuMTk5IDEwMy4wNTMtNTQuOTQ3IDQ5LjUyOC0zOC43ODMgODIuMDMyLTY0LjQwMSAxMDQuOTQ3LTgyLjY1M1Y0MDBINDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0V5ZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzNCA0NzFMMzYgMy41MUExNiAxNiAwIDAgMCAxMy41MSA2bC0xMCAxMi40OUExNiAxNiAwIDAgMCA2IDQxbDU5OCA0NjcuNDlhMTYgMTYgMCAwIDAgMjIuNDktMi40OWwxMC0xMi40OUExNiAxNiAwIDAgMCA2MzQgNDcxek0yOTYuNzkgMTQ2LjQ3bDEzNC43OSAxMDUuMzhDNDI5LjM2IDE5MS45MSAzODAuNDggMTQ0IDMyMCAxNDRhMTEyLjI2IDExMi4yNiAwIDAgMC0yMy4yMSAyLjQ3em00Ni40MiAyMTkuMDdMMjA4LjQyIDI2MC4xNkMyMTAuNjUgMzIwLjA5IDI1OS41MyAzNjggMzIwIDM2OGExMTMgMTEzIDAgMCAwIDIzLjIxLTIuNDZ6TTMyMCAxMTJjOTguNjUgMCAxODkuMDkgNTUgMjM3LjkzIDE0NGEyODUuNTMgMjg1LjUzIDAgMCAxLTQ0IDYwLjJsMzcuNzQgMjkuNWEzMzMuNyAzMzMuNyAwIDAgMCA1Mi45LTc1LjExIDMyLjM1IDMyLjM1IDAgMCAwIDAtMjkuMTlDNTUwLjI5IDEzNS41OSA0NDIuOTMgNjQgMzIwIDY0Yy0zNi43IDAtNzEuNzEgNy0xMDQuNjMgMTguODFsNDYuNDEgMzYuMjljMTguOTQtNC4zIDM4LjM0LTcuMSA1OC4yMi03LjF6bTAgMjg4Yy05OC42NSAwLTE4OS4wOC01NS0yMzcuOTMtMTQ0YTI4NS40NyAyODUuNDcgMCAwIDEgNDQuMDUtNjAuMTlsLTM3Ljc0LTI5LjVhMzMzLjYgMzMzLjYgMCAwIDAtNTIuODkgNzUuMSAzMi4zNSAzMi4zNSAwIDAgMCAwIDI5LjE5Qzg5LjcyIDM3Ni40MSAxOTcuMDggNDQ4IDMyMCA0NDhjMzYuNyAwIDcxLjcxLTcuMDUgMTA0LjYzLTE4LjgxbC00Ni40MS0zNi4yOEMzNTkuMjggMzk3LjIgMzM5Ljg5IDQwMCAzMjAgNDAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdFeWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDE0NGExMTAuOTQgMTEwLjk0IDAgMCAwLTMxLjI0IDUgNTUuNCA1NS40IDAgMCAxIDcuMjQgMjcgNTYgNTYgMCAwIDEtNTYgNTYgNTUuNCA1NS40IDAgMCAxLTI3LTcuMjRBMTExLjcxIDExMS43MSAwIDEgMCAyODggMTQ0em0yODQuNTIgOTcuNEM1MTguMjkgMTM1LjU5IDQxMC45MyA2NCAyODggNjRTNTcuNjggMTM1LjY0IDMuNDggMjQxLjQxYTMyLjM1IDMyLjM1IDAgMCAwIDAgMjkuMTlDNTcuNzEgMzc2LjQxIDE2NS4wNyA0NDggMjg4IDQ0OHMyMzAuMzItNzEuNjQgMjg0LjUyLTE3Ny40MWEzMi4zNSAzMi4zNSAwIDAgMCAwLTI5LjE5ek0yODggNDAwYy05OC42NSAwLTE4OS4wOS01NS0yMzcuOTMtMTQ0Qzk4LjkxIDE2NyAxODkuMzQgMTEyIDI4OCAxMTJzMTg5LjA5IDU1IDIzNy45MyAxNDRDNDc3LjEgMzQ1IDM4Ni42NiA0MDAgMjg4IDQwMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMjQ4djI4YzAgNi42LTUuNCAxMi0xMiAxMkgxMDhjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMjhjMC02LjYgNS40LTEyIDEyLTEyaDE2OGM2LjYgMCAxMiA1LjQgMTIgMTJ6bS0xMiA3MkgxMDhjLTYuNiAwLTEyIDUuNC0xMiAxMnYyOGMwIDYuNiA1LjQgMTIgMTIgMTJoMTY4YzYuNiAwIDEyLTUuNCAxMi0xMnYtMjhjMC02LjYtNS40LTEyLTEyLTEyem0xMDgtMTg4LjFWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY0OEMwIDIxLjUgMjEuNSAwIDQ4IDBoMjA0LjFDMjY0LjggMCAyNzcgNS4xIDI4NiAxNC4xTDM2OS45IDk4YzkgOC45IDE0LjEgMjEuMiAxNC4xIDMzLjl6bS0xMjgtODBWMTI4aDc2LjFMMjU2IDUxLjl6TTMzNiA0NjRWMTc2SDIzMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRWNDhINDh2NDE2aDI4OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZUFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4LjMgMTYwdjMyaDMydi0zMnptNjQtOTZoLTMydjMyaDMyem0tNjQgMzJ2MzJoMzJWOTZ6bTY0IDMyaC0zMnYzMmgzMnptMTc3LjYtMzAuMUwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0yNTYgNTEuOWw3Ni4xIDc2LjFIMjU2ek0zMzYgNDY0SDQ4VjQ4aDc5Ljd2MTZoMzJWNDhIMjA4djEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR6TTE5NC4yIDI2NS43Yy0xLjEtNS42LTYtOS43LTExLjgtOS43aC0yMi4xdi0zMmgtMzJ2MzJsLTE5LjcgOTcuMUMxMDIgMzg1LjYgMTI2LjggNDE2IDE2MCA0MTZjMzMuMSAwIDU3LjktMzAuMiA1MS41LTYyLjZ6bS0zMy45IDEyNC40Yy0xNy45IDAtMzIuNC0xMi4xLTMyLjQtMjdzMTQuNS0yNyAzMi40LTI3IDMyLjQgMTIuMSAzMi40IDI3LTE0LjUgMjctMzIuNCAyN3ptMzItMTk4LjFoLTMydjMyaDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlQXVkaW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5Ljk0MSA5Ny45NDFsLTgzLjg4Mi04My44ODJBNDggNDggMCAwIDAgMjUyLjExOCAwSDQ4QzIxLjQ5IDAgMCAyMS40OSAwIDQ4djQxNmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDI4OGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjEzMS44ODJhNDggNDggMCAwIDAtMTQuMDU5LTMzLjk0MXpNMzMyLjExOCAxMjhIMjU2VjUxLjg4MkwzMzIuMTE4IDEyOHpNNDggNDY0VjQ4aDE2MHYxMDRjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwNHYyODhINDh6bTE0NC03Ni4wMjRjMCAxMC42OTEtMTIuOTI2IDE2LjA0NS0yMC40ODUgOC40ODVMMTM2IDM2MC40ODZoLTI4Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi01NmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDI4bDM1LjUxNS0zNi45NDdjNy41Ni03LjU2IDIwLjQ4NS0yLjIwNiAyMC40ODUgOC40ODV2MTM1Ljk1MnptNDEuMjAxLTQ3LjEzYzkuMDUxLTkuMjk3IDkuMDYtMjQuMTMzLjAwMS0zMy40MzktMjIuMTQ5LTIyLjc1MiAxMi4yMzUtNTYuMjQ2IDM0LjM5NS0zMy40ODEgMjcuMTk4IDI3Ljk0IDI3LjIxMiA3Mi40NDQuMDAxIDEwMC40MDEtMjEuNzkzIDIyLjM4Ni01Ni45NDctMTAuMzE1LTM0LjM5Ny0zMy40ODF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0OS45IDM0OS4xbC0uMi0uMi0zMi44LTI4LjkgMzIuOC0yOC45YzMuNi0zLjIgNC04LjguOC0xMi40bC0uMi0uMi0xNy40LTE4LjZjLTMuNC0zLjYtOS0zLjctMTIuNC0uNGwtNTcuNyA1NC4xYy0zLjcgMy41LTMuNyA5LjQgMCAxMi44bDU3LjcgNTQuMWMxLjYgMS41IDMuOCAyLjQgNiAyLjQgMi40IDAgNC44LTEgNi40LTIuOGwxNy40LTE4LjZjMy4zLTMuNSAzLjEtOS4xLS40LTEyLjR6bTIyMC0yNTEuMkwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0yNTYgNTEuOWw3Ni4xIDc2LjFIMjU2ek0zMzYgNDY0SDQ4VjQ4aDE2MHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTA0ek0yMDkuNiAyMTRjLTQuNy0xLjQtOS41IDEuMy0xMC45IDZMMTQ0IDQwOC4xYy0xLjQgNC43IDEuMyA5LjYgNiAxMC45bDI0LjQgNy4xYzQuNyAxLjQgOS42LTEuNCAxMC45LTZMMjQwIDIzMS45YzEuNC00LjctMS4zLTkuNi02LTEwLjl6bTI0LjUgNzYuOWwuMi4yIDMyLjggMjguOS0zMi44IDI4LjljLTMuNiAzLjItNCA4LjgtLjggMTIuNGwuMi4yIDE3LjQgMTguNmMzLjMgMy41IDguOSAzLjcgMTIuNC40bDU3LjctNTQuMWMzLjctMy41IDMuNy05LjQgMC0xMi44bC01Ny43LTU0LjFjLTMuNS0zLjMtOS4xLTMuMi0xMi40LjRsLTE3LjQgMTguNmMtMy4zIDMuNS0zLjEgOS4xLjQgMTIuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZUV4Y2VsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OS45IDk3LjlMMjg2IDE0QzI3NyA1IDI2NC44LS4xIDI1Mi4xLS4xSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjEzMS45YzAtMTIuNy01LjEtMjUtMTQuMS0zNHpNMzMyLjEgMTI4SDI1NlY1MS45bDc2LjEgNzYuMXpNNDggNDY0VjQ4aDE2MHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTA0djI4OEg0OHptMjEyLTI0MGgtMjguOGMtNC40IDAtOC40IDIuNC0xMC41IDYuMy0xOCAzMy4xLTIyLjIgNDIuNC0yOC42IDU3LjctMTMuOS0yOS4xLTYuOS0xNy4zLTI4LjYtNTcuNy0yLjEtMy45LTYuMi02LjMtMTAuNi02LjNIMTI0Yy05LjMgMC0xNSAxMC0xMC40IDE4bDQ2LjMgNzgtNDYuMyA3OGMtNC43IDggMS4xIDE4IDEwLjQgMThoMjguOWM0LjQgMCA4LjQtMi40IDEwLjUtNi4zIDIxLjctNDAgMjMtNDUgMjguNi01Ny43IDE0LjkgMzAuMiA1LjkgMTUuOSAyOC42IDU3LjcgMi4xIDMuOSA2LjIgNi4zIDEwLjYgNi4zSDI2MGM5LjMgMCAxNS0xMCAxMC40LTE4TDIyNCAzMjBjLjctMS4xIDMwLjMtNTAuNSA0Ni4zLTc4IDQuNy04LTEuMS0xOC0xMC4zLTE4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlSW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5LjkgOTcuOUwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0zMzIuMSAxMjhIMjU2VjUxLjlsNzYuMSA3Ni4xek00OCA0NjRWNDhoMTYwdjEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR2Mjg4SDQ4em0zMi00OGgyMjRWMjg4bC0yMy41LTIzLjVjLTQuNy00LjctMTIuMy00LjctMTcgMEwxNzYgMzUybC0zOS41LTM5LjVjLTQuNy00LjctMTIuMy00LjctMTcgMEw4MCAzNTJ2NjR6bTQ4LTI0MGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhzMjEuNSA0OCA0OCA0OCA0OC0yMS41IDQ4LTQ4LTIxLjUtNDgtNDgtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVQZGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5LjkgOTcuOUwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0zMzIuMSAxMjhIMjU2VjUxLjlsNzYuMSA3Ni4xek00OCA0NjRWNDhoMTYwdjEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR2Mjg4SDQ4em0yNTAuMi0xNDMuN2MtMTIuMi0xMi00Ny04LjctNjQuNC02LjUtMTcuMi0xMC41LTI4LjctMjUtMzYuOC00Ni4zIDMuOS0xNi4xIDEwLjEtNDAuNiA1LjQtNTYtNC4yLTI2LjItMzcuOC0yMy42LTQyLjYtNS45LTQuNCAxNi4xLS40IDM4LjUgNyA2Ny4xLTEwIDIzLjktMjQuOSA1Ni0zNS40IDc0LjQtMjAgMTAuMy00NyAyNi4yLTUxIDQ2LjItMy4zIDE1LjggMjYgNTUuMiA3Ni4xLTMxLjIgMjIuNC03LjQgNDYuOC0xNi41IDY4LjQtMjAuMSAxOC45IDEwLjIgNDEgMTcgNTUuOCAxNyAyNS41IDAgMjgtMjguMiAxNy41LTM4Ljd6bS0xOTguMSA3Ny44YzUuMS0xMy43IDI0LjUtMjkuNSAzMC40LTM1LTE5IDMwLjMtMzAuNCAzNS43LTMwLjQgMzV6bTgxLjYtMTkwLjZjNy40IDAgNi43IDMyLjEgMS44IDQwLjgtNC40LTEzLjktNC4zLTQwLjgtMS44LTQwLjh6bS0yNC40IDEzNi42YzkuNy0xNi45IDE4LTM3IDI0LjctNTQuNyA4LjMgMTUuMSAxOC45IDI3LjIgMzAuMSAzNS41LTIwLjggNC4zLTM4LjkgMTMuMS01NC44IDE5LjJ6bTEzMS42LTVzLTUgNi0zNy4zLTcuOGMzNS4xLTIuNiA0MC45IDUuNCAzNy4zIDcuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZVBvd2VycG9pbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5LjkgOTcuOUwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0zMzIuMSAxMjhIMjU2VjUxLjlsNzYuMSA3Ni4xek00OCA0NjRWNDhoMTYwdjEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR2Mjg4SDQ4em03Mi02MFYyMzZjMC02LjYgNS40LTEyIDEyLTEyaDY5LjJjMzYuNyAwIDYyLjggMjcgNjIuOCA2Ni4zIDAgNzQuMy02OC43IDY2LjUtOTUuNSA2Ni41VjQwNGMwIDYuNi01LjQgMTItMTIgMTJIMTMyYy02LjYgMC0xMi01LjQtMTItMTJ6bTQ4LjUtODcuNGgyM2M3LjkgMCAxMy45LTIuNCAxOC4xLTcuMiA4LjUtOS44IDguNC0yOC41LjEtMzcuOC00LjEtNC42LTkuOS03LTE3LjQtN2gtMjMuOXY1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZVZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OS45NDEgOTcuOTQxbC04My44ODItODMuODgyQTQ4IDQ4IDAgMCAwIDI1Mi4xMTggMEg0OEMyMS40OSAwIDAgMjEuNDkgMCA0OHY0MTZjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgyODhjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxMzEuODgyYTQ4IDQ4IDAgMCAwLTE0LjA1OS0zMy45NDF6TTMzMi4xMTggMTI4SDI1NlY1MS44ODJMMzMyLjExOCAxMjh6TTQ4IDQ2NFY0OGgxNjB2MTA0YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDR2Mjg4SDQ4em0yMjguNjg3LTIxMS4zMDNMMjI0IDMwNS4zNzRWMjY4YzAtMTEuMDQ2LTguOTU0LTIwLTIwLTIwSDEwMGMtMTEuMDQ2IDAtMjAgOC45NTQtMjAgMjB2MTA0YzAgMTEuMDQ2IDguOTU0IDIwIDIwIDIwaDEwNGMxMS4wNDYgMCAyMC04Ljk1NCAyMC0yMHYtMzcuMzc0bDUyLjY4NyA1Mi42NzRDMjg2LjcwNCAzOTcuMzE4IDMwNCAzOTAuMjggMzA0IDM3NS45ODZWMjY0LjAxMWMwLTE0LjMxMS0xNy4zMDktMjEuMzE5LTI3LjMxMy0xMS4zMTR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVXb3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OS45IDk3LjlMMjg2IDE0QzI3NyA1IDI2NC44LS4xIDI1Mi4xLS4xSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjEzMS45YzAtMTIuNy01LjEtMjUtMTQuMS0zNHpNMzMyLjEgMTI4SDI1NlY1MS45bDc2LjEgNzYuMXpNNDggNDY0VjQ4aDE2MHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTA0djI4OEg0OHptMjIwLjEtMjA4Yy01LjcgMC0xMC42IDQtMTEuNyA5LjUtMjAuNiA5Ny43LTIwLjQgOTUuNC0yMSAxMDMuNS0uMi0xLjItLjQtMi42LS43LTQuMy0uOC01LjEuMy4yLTIzLjYtOTkuNS0xLjMtNS40LTYuMS05LjItMTEuNy05LjJoLTEzLjNjLTUuNSAwLTEwLjMgMy44LTExLjcgOS4xLTI0LjQgOTktMjQgOTYuMi0yNC44IDEwMy43LS4xLTEuMS0uMi0yLjUtLjUtNC4yLS43LTUuMi0xNC4xLTczLjMtMTkuMS05OS0xLjEtNS42LTYtOS43LTExLjgtOS43aC0xNi44Yy03LjggMC0xMy41IDcuMy0xMS43IDE0LjggOCAzMi42IDI2LjcgMTA5LjUgMzMuMiAxMzYgMS4zIDUuNCA2LjEgOS4xIDExLjcgOS4xaDI1LjJjNS41IDAgMTAuMy0zLjcgMTEuNi05LjFsMTcuOS03MS40YzEuNS02LjIgMi41LTEyIDMtMTcuM2wyLjkgMTcuM2MuMS40IDEyLjYgNTAuNSAxNy45IDcxLjQgMS4zIDUuMyA2LjEgOS4xIDExLjYgOS4xaDI0LjdjNS41IDAgMTAuMy0zLjcgMTEuNi05LjEgMjAuOC04MS45IDMwLjItMTE5IDM0LjUtMTM2IDEuOS03LjYtMy44LTE0LjktMTEuNi0xNC45aC0xNS44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OS45IDk3LjlMMjg2IDE0QzI3NyA1IDI2NC44LS4xIDI1Mi4xLS4xSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjEzMS45YzAtMTIuNy01LjEtMjUtMTQuMS0zNHpNMzMyLjEgMTI4SDI1NlY1MS45bDc2LjEgNzYuMXpNNDggNDY0VjQ4aDE2MHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTA0djI4OEg0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmxhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYuMTc0IDgwYy00OS4xMzIgMC05My4zMDUtMzItMTYxLjkxMy0zMi0zMS4zMDEgMC01OC4zMDMgNi40ODItODAuNzIxIDE1LjE2OGE0OC4wNCA0OC4wNCAwIDAgMCAyLjE0Mi0yMC43MjdDOTMuMDY3IDE5LjU3NSA3NC4xNjcgMS41OTQgNTEuMjAxLjEwNCAyMy4yNDItMS43MSAwIDIwLjQzMSAwIDQ4YzAgMTcuNzY0IDkuNjU3IDMzLjI2MiAyNCA0MS41NjJWNDk2YzAgOC44MzcgNy4xNjMgMTYgMTYgMTZoMTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtODMuNDQzQzEwOS44NjkgMzk1LjI4IDE0My4yNTkgMzg0IDE5OS44MjYgMzg0YzQ5LjEzMiAwIDkzLjMwNSAzMiAxNjEuOTEzIDMyIDU4LjQ3OSAwIDEwMS45NzItMjIuNjE3IDEyOC41NDgtMzkuOTgxQzUwMy44NDYgMzY3LjE2MSA1MTIgMzUyLjA1MSA1MTIgMzM1Ljg1NVY5NS45MzdjMC0zNC40NTktMzUuMjY0LTU3Ljc2OC02Ni45MDQtNDQuMTE3QzQwOS4xOTMgNjcuMzA5IDM3MS42NDEgODAgMzM2LjE3NCA4MHpNNDY0IDMzNmMtMjEuNzgzIDE1LjQxMi02MC44MjQgMzItMTAyLjI2MSAzMi01OS45NDUgMC0xMDIuMDAyLTMyLTE2MS45MTMtMzItNDMuMzYxIDAtOTYuMzc5IDkuNDAzLTEyNy44MjYgMjRWMTI4YzIxLjc4NC0xNS40MTIgNjAuODI0LTMyIDEwMi4yNjEtMzIgNTkuOTQ1IDAgMTAyLjAwMiAzMiAxNjEuOTEzIDMyIDQzLjI3MSAwIDk2LjMyLTE3LjM2NiAxMjcuODI2LTMydjI0MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmx1c2hlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTk2LTMxMmMtNDQuMiAwLTgwIDM1LjgtODAgODBzMzUuOCA4MCA4MCA4MCA4MC0zNS44IDgwLTgwLTM1LjgtODAtODAtODB6bTAgMTI4Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptMC03MmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6bS0xMTIgMjRjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODAgMzUuOCA4MCA4MCA4MCA4MC0zNS44IDgwLTgwem0tODAgNDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em0wLTcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHptMTYwIDE0NEgxODRjLTEzLjIgMC0yNCAxMC44LTI0IDI0czEwLjggMjQgMjQgMjRoMTI4YzEzLjIgMCAyNC0xMC44IDI0LTI0cy0xMC44LTI0LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGb2xkZXJPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyNy45IDIyNEg0ODB2LTQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDI3MmwtNjQtNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2Mjg4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQwMGMxNi41IDAgMzEuOS04LjUgNDAuNy0yMi42bDc5LjktMTI4YzIwLTMxLjktMy03My40LTQwLjctNzMuNHpNNDggMTE4YzAtMy4zIDIuNy02IDYtNmgxMzQuMWw2NCA2NEg0MjZjMy4zIDAgNiAyLjcgNiA2djQySDE1MmMtMTYuOCAwLTMyLjQgOC44LTQxLjEgMjMuMkw0OCAzNTEuNHptNDAwIDI4Mkg3Mmw3Ny4yLTEyOEg1Mjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMTI4SDI3MmwtNTQuNjMtNTQuNjNjLTYtNi0xNC4xNC05LjM3LTIyLjYzLTkuMzdINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYyODhjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0MTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxNzZjMC0yNi41MS0yMS40OS00OC00OC00OHptMCAyNzJINDhWMTEyaDE0MC4xMmw1NC42MyA1NC42M2M2IDYgMTQuMTQgOS4zNyAyMi42MyA5LjM3SDQ2NHYyMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZvbnRBd2Vzb21lTG9nb0Z1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM5OTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1NC42IDBINTcuNEMyNS45IDAgMCAyNS45IDAgNTcuNHYzOTcuM0MwIDQ4Ni4xIDI1LjkgNTEyIDU3LjQgNTEyaDM5Ny4zYzMxLjQgMCA1Ny40LTI1LjkgNTcuNC01Ny40VjU3LjRDNTEyIDI1LjkgNDg2LjEgMCA0NTQuNiAwem0tNTguOSAzMjQuOWMwIDQuOC00LjEgNi45LTguOSA4LjktMTkuMiA4LjEtMzkuNyAxNS43LTYxLjUgMTUuNy00MC41IDAtNjguNy00NC44LTE2My4yIDIuNXY1MS44YzAgMzAuMy00NS43IDMwLjItNDUuNyAwdi0yNTBjLTktNy0xNS0xNy45LTE1LTMwLjMgMC0yMSAxNy4xLTM4LjIgMzguMi0zOC4yIDIxIDAgMzguMiAxNy4xIDM4LjIgMzguMiAwIDEyLjItNS44IDIzLjItMTQuOSAzMC4ydjIxYzM3LjEtMTIgNjUuNS0zNC40IDE0Ni4xLTMuNCAyNi42IDExLjQgNjguNy0xNS43IDc2LjUtMTUuNyA1LjUgMCAxMC4zIDQuMSAxMC4zIDguOXYxNjAuNHptNDMyLjktMTc0LjJoLTEzN3Y3MC4xSDgyNWMzOS44IDAgNDAuNCA2Mi4yIDAgNjIuMkg2OTEuNnYxMDUuNmMwIDQ1LjUtNzAuNyA0Ni40LTcwLjcgMFYxMjguM2MwLTIyIDE4LTM5LjggMzkuOC0zOS44aDE2Ny44YzM5LjYgMCA0MC41IDYyLjIuMSA2Mi4yem0xOTEuMSAyMy40Yy0xNjkuMyAwLTE2OS4xIDI1Mi40IDAgMjUyLjQgMTY5LjkgMCAxNjkuOS0yNTIuNCAwLTI1Mi40em0wIDE5Ni4xYy04MS42IDAtODIuMS0xMzkuOCAwLTEzOS44IDgyLjUgMCA4Mi40IDEzOS44IDAgMTM5Ljh6bTM3Mi40IDUzLjRjLTE3LjUgMC0zMS40LTEzLjktMzEuNC0zMS40di0xMTdjMC02Mi40LTcyLjYtNTIuNS05OS4xLTE2LjR2MTMzLjRjMCA0MS41LTYzLjMgNDEuOC02My4zIDBWMjA4YzAtNDAgNjMuMS00MS42IDYzLjEgMHYzLjRjNDMuMy01MS42IDE2Mi40LTYwLjQgMTYyLjQgMzkuM3YxNDEuNWMuMyAzMC40LTMxLjUgMzEuNC0zMS43IDMxLjR6bTE3OS43IDIuOWMtNDQuMyAwLTY4LjMtMjIuOS02OC4zLTY1LjhWMjM1LjJIMTQ4OGMtMzUuNiAwLTM2LjctNTUuMyAwLTU1LjNoMTUuNXYtMzcuM2MwLTQxLjMgNjMuOC00Mi4xIDYzLjggMHYzNy41aDI0LjljMzUuNCAwIDM1LjcgNTUuMyAwIDU1LjNoLTI0Ljl2MTA4LjVjMCAyOS42IDI2LjEgMjYuMyAyNy40IDI2LjMgMzEuNCAwIDUyLjYgNTYuMy0yMi45IDU2LjN6TTE5OTIgMTIzYy0xOS41LTUwLjItOTUuNS01MC0xMTQuNSAwLTEwNy4zIDI3NS43LTk5LjUgMjUyLjctOTkuNSAyNjIuOCAwIDQyLjggNTguMyA1MS4yIDcyLjEgMTQuNGwxMy41LTM1LjlIMjAwNmwxMyAzNS45YzE0LjIgMzcuNyA3Mi4xIDI3LjIgNzIuMS0xNC40IDAtMTAuMSA1LjMgNi44LTk5LjEtMjYyLjh6bS0xMDguOSAxNzkuMWw1MS43LTE0Mi45IDUxLjggMTQyLjloLTEwMy41em01OTEuMy04NS42bC01My43IDE3Ni4zYy0xMi40IDQxLjItNzIgNDEtODQgMGwtNDIuMy0xMzUuOS00Mi4zIDEzNS45Yy0xMi40IDQwLjktNzIgNDEuMi04NC41IDBsLTU0LjItMTc2LjNjLTEyLjUtMzkuNCA0OS44LTU2LjEgNjAuMi0xNi45TDIyMTMgMzQybDQ1LjMtMTM5LjVjMTAuOS0zMi43IDU5LjYtMzQuNyA3MS4yIDBsNDUuMyAxMzkuNSAzOS4zLTE0Mi40YzEwLjMtMzguMyA3Mi42LTIzLjggNjAuMyAxNi45em0yNzUuNCA3NS4xYzAtNDIuNC0zMy45LTExNy41LTExOS41LTExNy41LTczLjIgMC0xMjQuNCA1Ni4zLTEyNC40IDEyNiAwIDc3LjIgNTUuMyAxMjYuNCAxMjguNSAxMjYuNCAzMS43IDAgOTMtMTEuNSA5My0zOS44IDAtMTguMy0yMS4xLTMxLjUtMzkuMy0yMi40LTQ5LjQgMjYuMi0xMDkgOC40LTExNS45LTQzLjhoMTQ4LjNjMTYuMyAwIDI5LjMtMTMuNCAyOS4zLTI4Ljl6TTI1NzEgMjc3LjdjOS41LTczLjQgMTEzLjktNjguNiAxMTguNiAwSDI1NzF6bTMxNi43IDE0OC44Yy0zMS40IDAtODEuNi0xMC41LTk2LjYtMzEuOS0xMi40LTE3IDIuNS0zOS44IDIxLjgtMzkuOCAxNi4zIDAgMzYuOCAyMi45IDc3LjcgMjIuOSAyNy40IDAgNDAuNC0xMSA0MC40LTI1LjggMC0zOS44LTE0Mi45LTcuNC0xNDIuOS0xMDIgMC00MC40IDM1LjMtNzUuNyA5OC42LTc1LjcgMzEuNCAwIDc0LjEgOS45IDg3LjYgMjkuNCAxMC44IDE0LjgtMS40IDM2LjItMjAuOSAzNi4yLTE1LjEgMC0yNi43LTE3LjMtNjYuMi0xNy4zLTIyLjkgMC0zNy44IDEwLjUtMzcuOCAyMy44IDAgMzUuOSAxNDIuNCA2IDE0Mi40IDEwMy4xLS4xIDQzLjctMzcuNCA3Ny4xLTEwNC4xIDc3LjF6bTI2Ni44LTI1Mi40Yy0xNjkuMyAwLTE2OS4xIDI1Mi40IDAgMjUyLjQgMTcwLjEgMCAxNjkuNi0yNTIuNCAwLTI1Mi40em0wIDE5Ni4xYy04MS44IDAtODItMTM5LjggMC0xMzkuOCA4Mi41IDAgODIuNCAxMzkuOCAwIDEzOS44em00NzYuOSAyMlYyNjguN2MwLTUzLjgtNjEuNC00NS44LTg1LjctMTAuNXYxMzRjMCA0MS4zLTYzLjggNDIuMS02My44IDBWMjY4LjdjMC01Mi4xLTU5LjUtNDcuNC04NS43LTEwLjF2MTMzLjZjMCA0MS41LTYzLjMgNDEuOC02My4zIDBWMjA4YzAtNDAgNjMuMS00MS42IDYzLjEgMHYzLjRjOS45LTE0LjQgNDEuOC0zNy4zIDc4LjYtMzcuMyAzNS4zIDAgNTcuNyAxNi40IDY2LjcgNDMuOCAxMy45LTIxLjggNDUuOC00My44IDgyLjYtNDMuOCA0NC4zIDAgNzAuNyAyMy40IDcwLjcgNzIuN3YxNDUuM2MuNSAxNy4zLTEzLjUgMzEuNC0zMS45IDMxLjQgMy41LjEtMzEuMyAxLjEtMzEuMy0zMS4zek0zOTkyIDI5MS42YzAtNDIuNC0zMi40LTExNy41LTExNy45LTExNy41LTczLjIgMC0xMjcuNSA1Ni4zLTEyNy41IDEyNiAwIDc3LjIgNTguMyAxMjYuNCAxMzEuNiAxMjYuNCAzMS43IDAgOTEuNS0xMS41IDkxLjUtMzkuOCAwLTE4LjMtMjEuMS0zMS41LTM5LjMtMjIuNC00OS40IDI2LjItMTEwLjUgOC40LTExNy41LTQzLjhoMTQ5LjhjMTYuMyAwIDI5LjEtMTMuNCAyOS4zLTI4Ljl6bS0xODAuNS0xMy45YzkuNy03NC40IDExNS45LTY4LjMgMTIwLjEgMGgtMTIwLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Zyb3duT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bS00OC0yNDhjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyem0xMjgtMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyem0tODAgMTEyYy0zNS42IDAtODguOCAyMS4zLTk1LjggNjEuMi0yIDExLjggOSAyMS41IDIwLjUgMTguMSAzMS4yLTkuNiA1OS40LTE1LjMgNzUuMy0xNS4zczQ0LjEgNS43IDc1LjMgMTUuM2MxMS40IDMuNSAyMi41LTYuMyAyMC41LTE4LjEtNy0zOS45LTYwLjItNjEuMi05NS44LTYxLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Zyb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptLTgwLTIxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE2MC02NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bS04MCAxMjhjLTQwLjIgMC03OCAxNy43LTEwMy44IDQ4LjYtOC41IDEwLjItNy4xIDI1LjMgMy4xIDMzLjggMTAuMiA4LjQgMjUuMyA3LjEgMzMuOC0zLjEgMTYuNi0xOS45IDQxLTMxLjQgNjYuOS0zMS40czUwLjMgMTEuNCA2Ni45IDMxLjRjOC4xIDkuNyAyMy4xIDExLjkgMzMuOCAzLjEgMTAuMi04LjUgMTEuNS0yMy42IDMuMS0zMy44QzMyNiAzMjEuNyAyODguMiAzMDQgMjQ4IDMwNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRnV0Ym9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4My44IDE3OS40QzQ0OS44IDc0LjYgMzUyLjYgOCAyNDguMSA4Yy0yNS40IDAtNTEuMiAzLjktNzYuNyAxMi4yQzQxLjIgNjIuNS0zMC4xIDIwMi40IDEyLjIgMzMyLjYgNDYuMiA0MzcuNCAxNDMuNCA1MDQgMjQ3LjkgNTA0YzI1LjQgMCA1MS4yLTMuOSA3Ni43LTEyLjIgMTMwLjItNDIuMyAyMDEuNS0xODIuMiAxNTkuMi0zMTIuNHptLTc0LjUgMTkzLjdsLTUyLjIgNi40LTQzLjctNjAuOSAyNC40LTc1LjIgNzEuMS0yMi4xIDM4LjkgMzYuNGMtLjIgMzAuNy03LjQgNjEuMS0yMS43IDg5LjItNC43IDkuMy0xMC43IDE3LjgtMTYuOCAyNi4yem0wLTIzNS40bC0xMC40IDUzLjEtNzAuNyAyMi02NC4yLTQ2LjVWOTIuNWw0Ny40LTI2LjJjMzkuMiAxMyA3My40IDM4IDk3LjkgNzEuNHpNMTg0LjkgNjYuNEwyMzIgOTIuNXY3My44bC02NC4yIDQ2LjUtNzAuNi0yMi0xMC4xLTUyLjVjMjQuMy0zMy40IDU3LjktNTguNiA5Ny44LTcxLjl6TTEzOSAzNzkuNUw4NS45IDM3M2MtMTQuNC0yMC4xLTM3LjMtNTkuNi0zNy44LTExNS4zbDM5LTM2LjQgNzEuMSAyMi4yIDI0LjMgNzQuMy00My41IDYxLjd6bTQ4LjIgNjdsLTIyLjQtNDguMSA0My42LTYxLjdIMjg3bDQ0LjMgNjEuNy0yMi40IDQ4LjFjLTYuMiAxLjgtNTcuNiAyMC40LTEyMS43IDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dlbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMEgxMTJjLTQgMC03LjggMi0xMCA1LjRMMiAxNTIuNmMtMi45IDQuNC0yLjYgMTAuMi43IDE0LjJsMjc2IDM0MC44YzQuOCA1LjkgMTMuOCA1LjkgMTguNiAwbDI3Ni0zNDAuOGMzLjMtNC4xIDMuNi05LjguNy0xNC4yTDQ3NC4xIDUuNEM0NzEuOCAyIDQ2OC4xIDAgNDY0IDB6bS0xOS4zIDQ4bDYzLjMgOTZoLTY4LjRsLTUxLjctOTZoNTYuOHptLTIwMi4xIDBoOTAuN2w1MS43IDk2SDE5MWw1MS42LTk2em0tMTExLjMgMGg1Ni44bC01MS43IDk2SDY4bDYzLjMtOTZ6bS00MyAxNDRoNTEuNEwyMDggMzUyIDg4LjMgMTkyem0xMDIuOSAwaDE5My42TDI4OCA0MzUuMyAxOTEuMiAxOTJ6TTM2OCAzNTJsNjguMi0xNjBoNTEuNEwzNjggMzUyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmltYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptLTgwLTIxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMTYgMTZIMTUyYy0yNi41IDAtNDggMjEuNS00OCA0OHYzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgxOTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTMyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMTY4IDk2aC0yNGMtOC44IDAtMTYtNy4yLTE2LTE2di04aDQwdjI0em0wLTQwaC00MHYtOGMwLTguOCA3LjItMTYgMTYtMTZoMjR2MjR6bTY0IDQwaC00OHYtMjRoNDh2MjR6bTAtNDBoLTQ4di0yNGg0OHYyNHptNjQgNDBoLTQ4di0yNGg0OHYyNHptMC00MGgtNDh2LTI0aDQ4djI0em01NiAyNGMwIDguOC03LjIgMTYtMTYgMTZoLTI0di0yNGg0MHY4em0wLTI0aC00MHYtMjRoMjRjOC44IDAgMTYgNy4yIDE2IDE2djh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAwLjMgMjQ4YzEyLjQtMTguNyAxNS4xLTM3LjMgMTUuNy01Ni0uNS0xOC43LTMuMy0zNy4zLTE1LjctNTYtOC0xMi0yNS4xLTExLjQtMzIuNyAwLTEyLjQgMTguNy0xNS4xIDM3LjMtMTUuNyA1NiAuNSAxOC43IDMuMyAzNy4zIDE1LjcgNTYgOC4xIDEyIDI1LjIgMTEuNCAzMi43IDB6bTEyOCAwYzEyLjQtMTguNyAxNS4xLTM3LjMgMTUuNy01Ni0uNS0xOC43LTMuMy0zNy4zLTE1LjctNTYtOC0xMi0yNS4xLTExLjQtMzIuNyAwLTEyLjQgMTguNy0xNS4xIDM3LjMtMTUuNyA1NiAuNSAxOC43IDMuMyAzNy4zIDE1LjcgNTYgOC4xIDEyIDI1LjIgMTEuNCAzMi43IDB6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMTA1LjYtMTUxLjRjLTI1LjkgOC4zLTY0LjQgMTMuMS0xMDUuNiAxMy4xcy03OS42LTQuOC0xMDUuNi0xMy4xYy05LjktMy4xLTE5LjQgNS4zLTE3LjcgMTUuMyA3LjkgNDcuMiA3MS4zIDgwIDEyMy4zIDgwczExNS4zLTMyLjkgMTIzLjMtODBjMS42LTkuOC03LjctMTguNC0xNy43LTE1LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5CZWFtU3dlYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQwIDE2MGMyOS41IDAgNTMuMy0yNi4zIDUzLjMtNTguNyAwLTI1LTMxLjctNzUuNS00Ni4yLTk3LjMtMy42LTUuMy0xMC43LTUuMy0xNC4yIDAtMTQuNSAyMS44LTQ2LjIgNzIuMy00Ni4yIDk3LjMgMCAzMi40IDIzLjggNTguNyA1My4zIDU4Ljd6TTI0OCA0MDBjNTEuOSAwIDExNS4zLTMyLjkgMTIzLjMtODAgMS43LTkuOS03LjctMTguNS0xNy43LTE1LjMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOC0zLjEtMTkuNCA1LjMtMTcuNyAxNS4zIDggNDcuMSA3MS40IDgwIDEyMy4zIDgwem0xMzAuMy0xNjguM2MzLjYtMS4xIDYtNC41IDUuNy04LjMtMy4zLTQyLjEtMzIuMi03MS40LTU2LTcxLjRzLTUyLjcgMjkuMy01NiA3MS40Yy0uMyAzLjcgMi4xIDcuMiA1LjcgOC4zIDMuNSAxLjEgNy40LS41IDkuMy0zLjdsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy42IDYuMiA0LjYgOS4zIDMuN3ptMTA1LjMtNTIuOWMtMjQuNiAxNS43LTQ2IDEyLjktNDYuNCAxMi45IDYuOSAyMC4yIDEwLjggNDEuOCAxMC44IDY0LjMgMCAxMTAuMy04OS43IDIwMC0yMDAgMjAwUzQ4IDM2Ni4zIDQ4IDI1NiAxMzcuNyA1NiAyNDggNTZjMzkuOCAwIDc2LjggMTEuOCAxMDggMzEuOSAxLjctOS41IDYuMy0yNC4xIDE3LjItNDUuN0MzMzYuNCAyMC42IDI5My43IDggMjQ4IDggMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OGMwLTI3LTQuNC01Mi45LTEyLjQtNzcuMnpNMTY4IDE4OS40YzEyLjMgMCAyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjcgNi4yIDQuNyA5LjMgMy43IDMuNi0xLjEgNi00LjUgNS43LTguMy0zLjMtNDIuMS0zMi4yLTcxLjQtNTYtNzEuNHMtNTIuNyAyOS4zLTU2IDcxLjRjLS4zIDMuNyAyLjEgNy4yIDUuNyA4LjMgMy41IDEuMSA3LjQtLjUgOS4zLTMuN2w5LjUtMTdjNy43LTEzLjggMTkuMi0yMS42IDMxLjUtMjEuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR3JpbkJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0xMDUuNi0xNTEuNGMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOC0zLjEtMTkuNCA1LjMtMTcuNyAxNS4zIDcuOSA0Ny4xIDcxLjMgODAgMTIzLjMgODBzMTE1LjMtMzIuOSAxMjMuMy04MGMxLjYtOS44LTcuNy0xOC40LTE3LjctMTUuM3ptLTIzNS45LTcyLjljMy41IDEuMSA3LjQtLjUgOS4zLTMuN2w5LjUtMTdjNy43LTEzLjcgMTkuMi0yMS42IDMxLjUtMjEuNnMyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjcgNi4yIDQuNyA5LjMgMy43IDMuNi0xLjEgNi00LjUgNS43LTguMy0zLjMtNDIuMS0zMi4yLTcxLjQtNTYtNzEuNHMtNTIuNyAyOS4zLTU2IDcxLjRjLS4zIDMuNyAyLjEgNy4yIDUuNyA4LjN6bTE2MCAwYzMuNSAxLjEgNy40LS41IDkuMy0zLjdsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy43IDYuMiA0LjcgOS4zIDMuNyAzLjYtMS4xIDYtNC41IDUuNy04LjMtMy4zLTQyLjEtMzIuMi03MS40LTU2LTcxLjRzLTUyLjcgMjkuMy01NiA3MS40Yy0uMyAzLjcgMi4xIDcuMiA1LjcgOC4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmluSGVhcnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1My42IDMwNC42Yy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS44LTMuMS0xOS40IDUuMy0xNy43IDE1LjMgNy45IDQ3LjIgNzEuMyA4MCAxMjMuMyA4MHMxMTUuMy0zMi45IDEyMy4zLTgwYzEuNi05LjgtNy43LTE4LjQtMTcuNy0xNS4zem0tMTUyLjgtNDguOWM0LjUgMS4yIDkuMi0xLjUgMTAuNS02bDE5LjQtNjkuOWM1LjYtMjAuMy03LjQtNDEuMS0yOC44LTQ0LjUtMTguNi0zLTM2LjQgOS44LTQxLjUgMjcuOWwtMiA3LjEtNy4xLTEuOWMtMTguMi00LjctMzguMiA0LjMtNDQuOSAyMi03LjcgMjAuMiAzLjggNDEuOSAyNC4yIDQ3LjJsNzAuMiAxOC4xem0xODguOC02NS4zYy02LjctMTcuNi0yNi43LTI2LjctNDQuOS0yMmwtNy4xIDEuOS0yLTcuMWMtNS0xOC4xLTIyLjgtMzAuOS00MS41LTI3LjktMjEuNCAzLjQtMzQuNCAyNC4yLTI4LjggNDQuNWwxOS40IDY5LjljMS4yIDQuNSA1LjkgNy4yIDEwLjUgNmw3MC4yLTE4LjJjMjAuNC01LjMgMzEuOS0yNi45IDI0LjItNDcuMXpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmluU3F1aW50VGVhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE3LjEgMzg0LjFjLTI1LjggMy43LTg0IDEzLjctMTAwLjkgMzAuNi0yMS45IDIxLjktMjEuNSA1Ny45LjkgODAuM3M1OC4zIDIyLjggODAuMy45QzExNC4zIDQ3OSAxMjQuMyA0MjAuOCAxMjggMzk1Yy44LTYuNC00LjYtMTEuOC0xMC45LTEwLjl6bS00MS4yLTQxLjdDNDAuMyAyNjggNTMgMTc2LjEgMTE0LjYgMTE0LjYgMTUyLjQgNzYuOCAyMDIuNiA1NiAyNTYgNTZjMzYuMiAwIDcwLjggOS44IDEwMS4yIDI3LjcgMy44LTIwLjMgOC0zNi4xIDEyLTQ4LjNDMzMzLjggMTcuMiAyOTQuOSA4IDI1NiA4IDE5Mi41IDggMTI5LjEgMzIuMiA4MC42IDgwLjZjLTc0LjEgNzQuMS05MS4zIDE4My40LTUyIDI3NCAxMi4yLTQuMSAyNy43LTguMyA0Ny4zLTEyLjJ6bTM1Mi4zLTE4Ny42YzQ1IDc2LjYgMzQuOSAxNzYuOS0zMC44IDI0Mi42LTM3LjggMzcuOC04OCA1OC42LTE0MS40IDU4LjYtMzAuNSAwLTU5LjgtNy04Ni40LTE5LjgtMy45IDE5LjUtOCAzNS0xMi4yIDQ3LjIgMzEuNCAxMy42IDY1IDIwLjYgOTguNyAyMC42IDYzLjUgMCAxMjYuOS0yNC4yIDE3NS40LTcyLjYgNzguMS03OC4xIDkzLjEtMTk1LjQgNDUuMi0yODguNi0xMi4zIDQtMjguMiA4LjEtNDguNSAxMnptLTMzLjMtMjYuOWMyNS44LTMuNyA4NC0xMy43IDEwMC45LTMwLjYgMjEuOS0yMS45IDIxLjUtNTcuOS0uOS04MC4zcy01OC4zLTIyLjgtODAuMy0uOUMzOTcuNyAzMyAzODcuNyA5MS4yIDM4NCAxMTdjLS44IDYuNCA0LjYgMTEuOCAxMC45IDEwLjl6bS0xODcgMTA4LjNjLTMtMy03LjItNC4yLTExLjQtMy4yTDEwNiAyNTUuN2MtNS43IDEuNC05LjUgNi43LTkuMSAxMi42LjUgNS44IDUuMSAxMC41IDEwLjkgMTFsNTIuMyA0LjggNC44IDUyLjNjLjUgNS44IDUuMiAxMC40IDExIDEwLjloLjljNS41IDAgMTAuMy0zLjcgMTEuNy05LjFsMjIuNi05MC41YzEtNC4yLS4yLTguNS0zLjItMTEuNXptMzkuNy0yNS4xbDkwLjUtMjIuNmM1LjctMS40IDkuNS02LjcgOS4xLTEyLjYtLjUtNS44LTUuMS0xMC41LTEwLjktMTFsLTUyLjMtNC44LTQuOC01Mi4zYy0uNS01LjgtNS4yLTEwLjQtMTEtMTAuOS01LjYtLjEtMTEuMiAzLjQtMTIuNiA5LjFMMjMzIDE5Ni41Yy0xIDQuMS4yIDguNCAzLjIgMTEuNCA1IDUgMTEuMyAzLjIgMTEuNCAzLjJ6bTUyIDg4LjVjLTI5LjEgMjkuMS01OS43IDUyLjktODMuOSA2NS40LTkuMiA0LjgtMTAgMTcuNS0xLjcgMjMuNCAzOC45IDI3LjcgMTA3IDYuMiAxNDMuNy0zMC42UzQxNiAyNTMgMzg4LjMgMjE0LjFjLTUuOC04LjItMTguNS03LjYtMjMuNCAxLjctMTIuMyAyNC4yLTM2LjIgNTQuNy02NS4zIDgzLjh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5TcXVpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0xMDUuNi0xNTEuNGMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOS0zLjEtMTkuNCA1LjQtMTcuNyAxNS4zIDcuOSA0Ny4xIDcxLjMgODAgMTIzLjMgODBzMTE1LjMtMzIuOSAxMjMuMy04MGMxLjYtOS44LTcuNy0xOC40LTE3LjctMTUuM3ptLTIzNC43LTQwLjhjMy42IDQuMiA5LjkgNS43IDE1LjMgMi41bDgwLTQ4YzMuNi0yLjIgNS44LTYuMSA1LjgtMTAuM3MtMi4yLTguMS01LjgtMTAuM2wtODAtNDhjLTUuMS0zLTExLjQtMS45LTE1LjMgMi41LTMuOCA0LjUtMy44IDExLS4xIDE1LjVsMzMuNiA0MC4zLTMzLjYgNDAuM2MtMy44IDQuNS0zLjcgMTEuMS4xIDE1LjV6bTI0Mi45IDIuNWM1LjQgMy4yIDExLjcgMS43IDE1LjMtMi41IDMuOC00LjUgMy44LTExIC4xLTE1LjVMMzQzLjYgMjA4bDMzLjYtNDAuM2MzLjgtNC41IDMuNy0xMS0uMS0xNS41LTMuOC00LjQtMTAuMi01LjQtMTUuMy0yLjVsLTgwIDQ4Yy0zLjYgMi4yLTUuOCA2LjEtNS44IDEwLjNzMi4yIDguMSA1LjggMTAuM2w4MCA0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR3JpblN0YXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMTA1LjYtMTUxLjRjLTI1LjkgOC4zLTY0LjQgMTMuMS0xMDUuNiAxMy4xcy03OS42LTQuOC0xMDUuNi0xMy4xYy05LjgtMy4xLTE5LjQgNS4zLTE3LjcgMTUuMyA3LjkgNDcuMiA3MS4zIDgwIDEyMy4zIDgwczExNS4zLTMyLjkgMTIzLjMtODBjMS42LTkuOC03LjctMTguNC0xNy43LTE1LjN6bS0yMjcuOS01Ny41Yy0xIDYuMiA1LjQgMTEgMTEgNy45bDMxLjMtMTYuMyAzMS4zIDE2LjNjNS42IDMuMSAxMi0xLjcgMTEtNy45bC02LTM0LjkgMjUuNC0yNC42YzQuNS00LjUgMS45LTEyLjItNC4zLTEzLjJsLTM0LjktNS0xNS41LTMxLjZjLTIuOS01LjgtMTEtNS44LTEzLjkgMGwtMTUuNSAzMS42LTM0LjkgNWMtNi4yLjktOC45IDguNi00LjMgMTMuMmwyNS40IDI0LjYtNi4xIDM0Ljl6bTI1OS43LTcyLjdsLTM0LjktNS0xNS41LTMxLjZjLTIuOS01LjgtMTEtNS44LTEzLjkgMGwtMTUuNSAzMS42LTM0LjkgNWMtNi4yLjktOC45IDguNi00LjMgMTMuMmwyNS40IDI0LjYtNiAzNC45Yy0xIDYuMiA1LjQgMTEgMTEgNy45bDMxLjMtMTYuMyAzMS4zIDE2LjNjNS42IDMuMSAxMi0xLjcgMTEtNy45bC02LTM0LjkgMjUuNC0yNC42YzQuNS00LjYgMS44LTEyLjItNC40LTEzLjJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5UZWFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTcuMSAyNTYuMWMtMjUuOCAzLjctODQgMTMuNy0xMDAuOSAzMC42LTIxLjkgMjEuOS0yMS41IDU3LjkuOSA4MC4zczU4LjMgMjIuOCA4MC4zLjlDMTE0LjMgMzUxIDEyNC4zIDI5Mi44IDEyOCAyNjdjLjgtNi40LTQuNi0xMS44LTEwLjktMTAuOXptNTA2LjcgMzAuNmMtMTYuOS0xNi45LTc1LjEtMjYuOS0xMDAuOS0zMC42LTYuMy0uOS0xMS43IDQuNS0xMC44IDEwLjggMy43IDI1LjggMTMuNyA4NCAzMC42IDEwMC45IDIxLjkgMjEuOSA1Ny45IDIxLjUgODAuMy0uOSAyMi4zLTIyLjMgMjIuNy01OC4zLjgtODAuMnptLTEyNi42IDYxLjdDNDYzLjggNDEyLjMgMzk2LjkgNDU2IDMyMCA0NTZjLTc2LjkgMC0xNDMuOC00My43LTE3Ny4yLTEwNy42LTEyLjUgMzcuNC0yNS4yIDQzLjktMjguMyA0Ni41QzE1OS4xIDQ2MC43IDIzNC41IDUwNCAzMjAgNTA0czE2MC45LTQzLjMgMjA1LjUtMTA5LjFjLTMuMi0yLjctMTUuOS05LjItMjguMy00Ni41ek0xMjIuNyAyMjQuNUMxMzcuOSAxMjkuMiAyMjAuNSA1NiAzMjAgNTZjOTkuNSAwIDE4Mi4xIDczLjIgMTk3LjMgMTY4LjUgMi4xLS4yIDUuMi0yLjQgNDkuNSA3QzU1NC40IDEwNiA0NDguNyA4IDMyMCA4Uzg1LjYgMTA2IDczLjIgMjMxLjRjNDQuNS05LjQgNDcuMS03LjIgNDkuNS02Ljl6TTMyMCA0MDBjNTEuOSAwIDExNS4zLTMyLjkgMTIzLjMtODAgMS43LTkuOS03LjctMTguNS0xNy43LTE1LjMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOC0zLjEtMTkuNCA1LjMtMTcuNyAxNS4zIDggNDcuMSA3MS40IDgwIDEyMy4zIDgwem0xMzAuMy0xNjguM2MzLjYtMS4xIDYtNC41IDUuNy04LjMtMy4zLTQyLjEtMzIuMi03MS40LTU2LTcxLjRzLTUyLjcgMjkuMy01NiA3MS40Yy0uMyAzLjcgMi4xIDcuMiA1LjcgOC4zIDMuNSAxLjEgNy40LS41IDkuMy0zLjdsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy42IDYuMiA0LjYgOS4zIDMuN3pNMjQwIDE4OS40YzEyLjMgMCAyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjcgNi4yIDQuNyA5LjMgMy43IDMuNi0xLjEgNi00LjUgNS43LTguMy0zLjMtNDIuMS0zMi4yLTcxLjQtNTYtNzEuNHMtNTIuNyAyOS4zLTU2IDcxLjRjLS4zIDMuNyAyLjEgNy4yIDUuNyA4LjMgMy41IDEuMSA3LjQtLjUgOS4zLTMuN2w5LjUtMTdjNy43LTEzLjggMTkuMi0yMS42IDMxLjUtMjEuNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR3JpblRvbmd1ZVNxdWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em02NCA0MDBjMCAzNS42LTI5LjEgNjQuNS02NC45IDY0LTM1LjEtLjUtNjMuMS0yOS44LTYzLjEtNjV2LTQyLjhsMTcuNy04LjhjMTUtNy41IDMxLjUgMS43IDM0LjkgMTYuNWwyLjggMTIuMWMyLjEgOS4yIDE1LjIgOS4yIDE3LjMgMGwyLjgtMTIuMWMzLjQtMTQuOCAxOS44LTI0LjEgMzQuOS0xNi41bDE3LjcgOC44VjQwOHptMjguMiAyNS4zYzIuMi04LjEgMy44LTE2LjUgMy44LTI1LjN2LTQzLjVjMTQuMi0xMi40IDI0LjQtMjcuNSAyNy4zLTQ0LjUgMS43LTkuOS03LjctMTguNS0xNy43LTE1LjMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOS0zLjEtMTkuNCA1LjMtMTcuNyAxNS4zIDIuOSAxNyAxMy4xIDMyLjEgMjcuMyA0NC41VjQwOGMwIDguOCAxLjYgMTcuMiAzLjggMjUuM0M5MS44IDM5OS45IDQ4IDMzMyA0OCAyNTZjMC0xMTAuMyA4OS43LTIwMCAyMDAtMjAwczIwMCA4OS43IDIwMCAyMDBjMCA3Ny00My44IDE0My45LTEwNy44IDE3Ny4zem0zNi45LTI4MS4xYy0zLjgtNC40LTEwLjMtNS41LTE1LjMtMi41bC04MCA0OGMtMy42IDIuMi01LjggNi4xLTUuOCAxMC4zczIuMiA4LjEgNS44IDEwLjNsODAgNDhjNS40IDMuMiAxMS43IDEuNyAxNS4zLTIuNSAzLjgtNC41IDMuOC0xMSAuMS0xNS41TDM0My42IDIwOGwzMy42LTQwLjNjMy44LTQuNSAzLjctMTEuMS0uMS0xNS41em0tMTYyLjkgNDUuNWwtODAtNDhjLTUtMy0xMS40LTItMTUuMyAyLjUtMy44IDQuNS0zLjggMTEtLjEgMTUuNWwzMy42IDQwLjMtMzMuNiA0MC4zYy0zLjggNC41LTMuNyAxMSAuMSAxNS41IDMuNiA0LjIgOS45IDUuNyAxNS4zIDIuNWw4MC00OGMzLjYtMi4yIDUuOC02LjEgNS44LTEwLjNzLTIuMi04LjEtNS44LTEwLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5Ub25ndWVXaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MiAxODBjLTI1LjcgMC01NS45IDE2LjktNTkuOCA0Mi4xLS44IDUgMS43IDEwIDYuMSAxMi40IDQuNCAyLjQgOS45IDEuOCAxMy43LTEuNmw5LjUtOC41YzE0LjgtMTMuMiA0Ni4yLTEzLjIgNjEgMGw5LjUgOC41YzIuNSAyLjIgOCA0LjcgMTMuNyAxLjYgNC40LTIuNCA2LjktNy40IDYuMS0xMi40LTMuOS0yNS4yLTM0LjEtNDIuMS01OS44LTQyLjF6bTE3Ni01MmMtNDQuMiAwLTgwIDM1LjgtODAgODBzMzUuOCA4MCA4MCA4MCA4MC0zNS44IDgwLTgwLTM1LjgtODAtODAtODB6bTAgMTI4Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptMC03MmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTY0IDQwMGMwIDM1LjYtMjkuMSA2NC41LTY0LjkgNjQtMzUuMS0uNS02My4xLTI5LjgtNjMuMS02NXYtNDIuOGwxNy43LTguOGMxNS03LjUgMzEuNSAxLjcgMzQuOSAxNi41bDIuOCAxMi4xYzIuMSA5LjIgMTUuMiA5LjIgMTcuMyAwbDIuOC0xMi4xYzMuNC0xNC44IDE5LjgtMjQuMSAzNC45LTE2LjVsMTcuNyA4LjhWNDA4em0yOC4yIDI1LjNjMi4yLTguMSAzLjgtMTYuNSAzLjgtMjUuM3YtNDMuNWMxNC4yLTEyLjQgMjQuNC0yNy41IDI3LjMtNDQuNSAxLjctOS45LTcuNy0xOC41LTE3LjctMTUuMy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS45LTMuMS0xOS40IDUuMy0xNy43IDE1LjMgMi45IDE3IDEzLjEgMzIuMSAyNy4zIDQ0LjVWNDA4YzAgOC44IDEuNiAxNy4yIDMuOCAyNS4zQzkxLjggMzk5LjkgNDggMzMzIDQ4IDI1NmMwLTExMC4zIDg5LjctMjAwIDIwMC0yMDBzMjAwIDg5LjcgMjAwIDIwMGMwIDc3LTQzLjggMTQzLjktMTA3LjggMTc3LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5Ub25ndWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptNjQgNDAwYzAgMzUuNi0yOS4xIDY0LjUtNjQuOSA2NC0zNS4xLS41LTYzLjEtMjkuOC02My4xLTY1di00Mi44bDE3LjctOC44YzE1LTcuNSAzMS41IDEuNyAzNC45IDE2LjVsMi44IDEyLjFjMi4xIDkuMiAxNS4yIDkuMiAxNy4zIDBsMi44LTEyLjFjMy40LTE0LjggMTkuOC0yNC4xIDM0LjktMTYuNWwxNy43IDguOFY0MDh6bTI4LjIgMjUuM2MyLjItOC4xIDMuOC0xNi41IDMuOC0yNS4zdi00My41YzE0LjItMTIuNCAyNC40LTI3LjUgMjcuMy00NC41IDEuNy05LjktNy43LTE4LjUtMTcuNy0xNS4zLTI1LjkgOC4zLTY0LjQgMTMuMS0xMDUuNiAxMy4xcy03OS42LTQuOC0xMDUuNi0xMy4xYy05LjktMy4xLTE5LjQgNS4zLTE3LjcgMTUuMyAyLjkgMTcgMTMuMSAzMi4xIDI3LjMgNDQuNVY0MDhjMCA4LjggMS42IDE3LjIgMy44IDI1LjNDOTEuOCAzOTkuOSA0OCAzMzMgNDggMjU2YzAtMTEwLjMgODkuNy0yMDAgMjAwLTIwMHMyMDAgODkuNyAyMDAgMjAwYzAgNzctNDMuOCAxNDMuOS0xMDcuOCAxNzcuM3pNMTY4IDE3NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bTE2MCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR3JpbldpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI4IDE4MGMtMjUuNjkgMC01NS44OCAxNi45Mi01OS44NiA0Mi4xMi0xLjc1IDExLjIyIDExLjUgMTguMjQgMTkuODMgMTAuODRsOS41NS04LjQ4YzE0LjgxLTEzLjE5IDQ2LjE2LTEzLjE5IDYwLjk3IDBsOS41NSA4LjQ4YzguNDggNy40MyAyMS41Ni4yNSAxOS44My0xMC44NEMzODMuODggMTk2LjkyIDM1My42OSAxODAgMzI4IDE4MHptLTE2MCA2MGMxNy42NyAwIDMyLTE0LjMzIDMyLTMycy0xNC4zMy0zMi0zMi0zMi0zMiAxNC4zMy0zMiAzMiAxNC4zMyAzMiAzMiAzMnptMTg1LjU1IDY0LjY0Yy0yNS45MyA4LjMtNjQuNCAxMy4wNi0xMDUuNTUgMTMuMDZzLTc5LjYyLTQuNzUtMTA1LjU1LTEzLjA2Yy05Ljk0LTMuMTMtMTkuNCA1LjM3LTE3LjcxIDE1LjM0QzEzMi42NyAzNjcuMTMgMTk2LjA2IDQwMCAyNDggNDAwczExNS4zMy0zMi44NyAxMjMuMjYtODAuMDJjMS42OC05Ljg5LTcuNjctMTguNDgtMTcuNzEtMTUuMzR6TTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMjggMC0yMDAtODkuNzItMjAwLTIwMFMxMzcuNzIgNTYgMjQ4IDU2czIwMCA4OS43MiAyMDAgMjAwLTg5LjcyIDIwMC0yMDAgMjAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMTA1LjYtMTUxLjRjLTI1LjkgOC4zLTY0LjQgMTMuMS0xMDUuNiAxMy4xcy03OS42LTQuOC0xMDUuNi0xMy4xYy05LjktMy4xLTE5LjQgNS40LTE3LjcgMTUuMyA3LjkgNDcuMSA3MS4zIDgwIDEyMy4zIDgwczExNS4zLTMyLjkgMTIzLjMtODBjMS42LTkuOC03LjctMTguNC0xNy43LTE1LjN6TTE2OCAyNDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0xNjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRMaXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTU2LjY4NiAyOTAuNTQyTDQxMC4zMjggNjQuODI5QzM5Ny4wMDEgNDQuMjcyIDM3NC40MTcgMzIgMzQ5LjkxNyAzMkg1NkMyNS4xMjEgMzIgMCA1Ny4xMjIgMCA4OHY4YzAgNDQuMTEyIDM1Ljg4OCA4MCA4MCA4MGgxOTYuMDQybC0xOC4zMzMgNDhIMTQ0Yy00OC41MjMgMC04OCAzOS40NzctODggODggMCAzMC44NzkgMjUuMTIxIDU2IDU2IDU2aDEzMS41NTJjMi45ODcgMCA1LjkxNC41NDkgOC42OTcgMS42MzFMMzUyIDQwOC40MThWNDgwaDIyNFYzNTUuODI5YzAtMjMuMjI1LTYuNjc5LTQ1LjgwMS0xOS4zMTQtNjUuMjg3ek01MjggNDMySDQwMHYtMjMuNTgyYzAtMTkuOTQ4LTEyLjAxNC0zNy41MDgtMzAuNjA0LTQ0LjczNmwtOTkuNzUxLTM4Ljc4OEE3MS43MzMgNzEuNzMzIDAgMCAwIDI0My41NTIgMzIwSDExMmMtNC40MTEgMC04LTMuNTg5LTgtOCAwLTIyLjA1NiAxNy45NDQtNDAgNDAtNDBoMTEzLjcwOWMxOS43NjcgMCAzNy43ODYtMTIuNDA3IDQ0Ljg0LTMwLjg3M2wyNC41NTItNjQuMjgxYzguOTk2LTIzLjU1My04LjQyOC00OC44NDYtMzMuNjMtNDguODQ2SDgwYy0xNy42NDUgMC0zMi0xNC4zNTUtMzItMzJ2LThjMC00LjQxMSAzLjU4OS04IDgtOGgyOTMuOTE3YzguMTY2IDAgMTUuNjkzIDQuMDkgMjAuMTM3IDEwLjk0MmwxNDYuMzU4IDIyNS43MTVBNzEuODQgNzEuODQgMCAwIDEgNTI4IDM1NS44MjlWNDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kUGFwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyLjU3IDExMi42NDF2LTEwLjgyNWMwLTQzLjYxMi00MC41Mi03Ni42OTEtODMuMDM5LTY1LjU0Ni0yNS42MjktNDkuNS05NC4wOS00Ny40NS0xMTcuOTgyLjc0N0MxMzAuMjY5IDI2LjQ1NiA4OS4xNDQgNTcuOTQ1IDg5LjE0NCAxMDJ2MTI2LjEzYy0xOS45NTMtNy40MjctNDMuMzA4LTUuMDY4LTYyLjA4MyA4Ljg3MS0yOS4zNTUgMjEuNzk2LTM1Ljc5NCA2My4zMzMtMTQuNTUgOTMuMTUzTDEzMi40OCA0OTguNTY5YTMyIDMyIDAgMCAwIDI2LjA2MiAxMy40MzJoMjIyLjg5N2MxNC45MDQgMCAyNy44MzUtMTAuMjg5IDMxLjE4Mi0yNC44MTNsMzAuMTg0LTEzMC45NThBMjAzLjYzNyAyMDMuNjM3IDAgMCAwIDQ0OCAzMTAuNTY0VjE3OWMwLTQwLjYyLTM1LjUyMy03MS45OTItNzUuNDMtNjYuMzU5em0yNy40MjcgMTk3LjkyMmMwIDExLjczMS0xLjMzNCAyMy40NjktMy45NjUgMzQuODg2TDM2OC43MDcgNDY0aC0yMDEuOTJMNTEuNTkxIDMwMi4zMDNjLTE0LjQzOS0yMC4yNyAxNS4wMjMtNDIuNzc2IDI5LjM5NC0yMi42MDVsMjcuMTI4IDM4LjA3OWM4Ljk5NSAxMi42MjYgMjkuMDMxIDYuMjg3IDI5LjAzMS05LjI4M1YxMDJjMC0yNS42NDUgMzYuNTcxLTI0LjgxIDM2LjU3MS42OTFWMjU2YzAgOC44MzcgNy4xNjMgMTYgMTYgMTZoNi44NTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNlY2N2MwLTI1LjY2MyAzNi41NzEtMjQuODEgMzYuNTcxLjY5MVYyNTZjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmg2Ljg1NmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2VjEwMS4xMjVjMC0yNS42NzIgMzYuNTctMjQuODEgMzYuNTcuNjkxVjI1NmMwIDguODM3IDcuMTYzIDE2IDE2IDE2aDYuODU3YzguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTc2LjMwOWMwLTI2LjI0MiAzNi41Ny0yNS42NCAzNi41Ny0uNjkxdjEzMS41NjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQZWFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjIuMTQ2IDE5MS45NzZjLTEzLjcxLTIxLjY0OS0zOC43NjEtMzQuMDE2LTY1LjAwNi0zMC4zNDFWNzRjMC00MC44MDQtMzIuODExLTc0LTczLjE0MS03NC00MC4zMyAwLTczLjE0IDMzLjE5Ni03My4xNCA3NEwxNjAgMTY4bC0xOC42NzktNzguODVDMTI2LjU3OCA1MC44NDMgODMuODUgMzIuMTEgNDYuMjA5IDQ3LjIwOCA4LjczNSA2Mi4yMzgtOS41NzEgMTA0Ljk2MyA1LjAwOCAxNDIuODVsNTUuNzU3IDE0NC45MjdjLTMwLjU1NyAyNC45NTYtNDMuOTk0IDU3LjgwOS0yNC43MzMgOTIuMjE4bDU0Ljg1MyA5Ny45OTlDMTAyLjYyNSA0OTguOTcgMTI0LjczIDUxMiAxNDguNTc1IDUxMmgyMDUuNzAyYzMwLjc0NCAwIDU3LjU1OC0yMS40NCA2NC41NTUtNTEuNzk3bDI3LjQyNy0xMTguOTk5YTY3LjgwMSA2Ny44MDEgMCAwIDAgMS43MjktMTUuMjAzTDQ0OCAyNTZjMC00NC45NTYtNDMuMjYzLTc3LjM0My04NS44NTQtNjQuMDI0ek0zOTkuOTg3IDMyNmMwIDEuNDg4LS4xNjkgMi45NzctLjUwMiA0LjQyM2wtMjcuNDI3IDExOS4wMDFjLTEuOTc4IDguNTgyLTkuMjkgMTQuNTc2LTE3Ljc4MiAxNC41NzZIMTQ4LjU3NWMtNi40ODYgMC0xMi41NDItMy42MjEtMTUuODA1LTkuNDQ5bC01NC44NTQtOThjLTQuNTU3LTguMTQxLTIuNjE5LTE4LjY2OCA0LjUwOC0yNC40ODhsMjYuNjQ3LTIxLjc2NGExNiAxNiAwIDAgMCA0LjgxMi0xOC4xMzlsLTY0LjA5LTE2Ni41NDlDMzcuMjI2IDkyLjk1NiA4NC4zNyA3NC44MzcgOTYuNTEgMTA2LjM4OWw1OS43ODQgMTU1LjM1N0ExNiAxNiAwIDAgMCAxNzEuMjI3IDI3MmgxMS42MzJjOC44MzcgMCAxNi03LjE2MyAxNi0xNlY3NGMwLTM0LjM3NSA1MC4yODEtMzQuNDMgNTAuMjgxIDB2MTgyYzAgOC44MzcgNy4xNjMgMTYgMTYgMTZoNi44NTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtMjhjMC0yNS4xMjIgMzYuNTY3LTI1LjE1OSAzNi41NjcgMHYyOGMwIDguODM3IDcuMTYzIDE2IDE2IDE2aDYuODU2YzguODM3IDAgMTYtNy4xNjMgMTYtMTYgMC0yNS4xMiAzNi41NjctMjUuMTYgMzYuNTY3IDB2NzB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQb2ludERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg4LjggNTEyYzQ1LjYxNiAwIDgzLjItMzcuNzY1IDgzLjItODMuMnYtMzUuNjQ3YTkzLjE0OCA5My4xNDggMCAwIDAgMjIuMDY0LTcuOTI5YzIyLjAwNiAyLjUwNyA0NC45NzgtMy41MDMgNjIuNzkxLTE1Ljk4NUM0MDkuMzQyIDM2OC4xIDQ0OCAzMzEuODQxIDQ0OCAyNjkuMjk5VjI0OGMwLTYwLjA2My00MC05OC41MTItNDAtMTI3LjJ2LTIuNjc5YzQuOTUyLTUuNzQ3IDgtMTMuNTM2IDgtMjIuMTJWMzJjMC0xNy42NzMtMTIuODk0LTMyLTI4LjgtMzJIMTU2LjhDMTQwLjg5NCAwIDEyOCAxNC4zMjcgMTI4IDMydjY0YzAgOC41ODQgMy4wNDggMTYuMzczIDggMjIuMTJ2Mi42NzljMCA2Ljk2NC02LjE5MyAxNC44NjItMjMuNjY4IDMwLjE4M2wtLjE0OC4xMjktLjE0Ni4xMzFjLTkuOTM3IDguODU2LTIwLjg0MSAxOC4xMTYtMzMuMjUzIDI1Ljg1MUM0OC41MzcgMTk1Ljc5OCAwIDIwNy40ODYgMCAyNTIuOGMwIDU2LjkyOCAzNS4yODYgOTIgODMuMiA5MiA4LjAyNiAwIDE1LjQ4OS0uODE0IDIyLjQtMi4xNzZWNDI4LjhjMCA0NS4wOTkgMzguMTAxIDgzLjIgODMuMiA4My4yem0wLTQ4Yy0xOC43IDAtMzUuMi0xNi43NzUtMzUuMi0zNS4yVjI3MC40Yy0xNy4zMjUgMC0zNS4yIDI2LjQtNzAuNCAyNi40LTI2LjQgMC0zNS4yLTIwLjYyNS0zNS4yLTQ0IDAtOC43OTQgMzIuNzEyLTIwLjQ0NSA1Ni4xLTM0LjkyNiAxNC41NzUtOS4wNzQgMjcuMjI1LTE5LjUyNCAzOS44NzUtMzAuNzk5IDE4LjM3NC0xNi4xMDkgMzYuNjMzLTMzLjgzNiAzOS41OTYtNTkuMDc1aDE3Ni43NTJDMzY0LjA4NyAxNzAuNzkgNDAwIDIwMi41MDkgNDAwIDI0OHYyMS4yOTljMCA0MC41MjQtMjIuMTk3IDU3LjEyNC02MS4zMjUgNTAuNjAxLTguMDAxIDE0LjYxMi0zMy45NzkgMjQuMTUxLTUzLjYyNSAxMi45MjUtMTguMjI1IDE5LjM2NS00Ni4zODEgMTcuNzg3LTYxLjA1IDQuOTVWNDI4LjhjMCAxOC45NzUtMTYuMjI1IDM1LjItMzUuMiAzNS4yek0zMjggNjRjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0czI0IDEwLjc0NSAyNCAyNC0xMC43NDUgMjQtMjQgMjQtMjQtMTAuNzQ1LTI0LTI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kUG9pbnRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjIwLjhDMCAyNjYuNDE2IDM3Ljc2NSAzMDQgODMuMiAzMDRoMzUuNjQ3YTkzLjE0OCA5My4xNDggMCAwIDAgNy45MjkgMjIuMDY0Yy0yLjUwNyAyMi4wMDYgMy41MDMgNDQuOTc4IDE1Ljk4NSA2Mi43OTFDMTQzLjkgNDQxLjM0MiAxODAuMTU5IDQ4MCAyNDIuNzAxIDQ4MEgyNjRjNjAuMDYzIDAgOTguNTEyLTQwIDEyNy4yLTQwaDIuNjc5YzUuNzQ3IDQuOTUyIDEzLjUzNiA4IDIyLjEyIDhoNjRjMTcuNjczIDAgMzItMTIuODk0IDMyLTI4LjhWMTg4LjhjMC0xNS45MDYtMTQuMzI3LTI4LjgtMzItMjguOGgtNjRjLTguNTg0IDAtMTYuMzczIDMuMDQ4LTIyLjEyIDhIMzkxLjJjLTYuOTY0IDAtMTQuODYyLTYuMTkzLTMwLjE4My0yMy42NjhsLS4xMjktLjE0OC0uMTMxLS4xNDZjLTguODU2LTkuOTM3LTE4LjExNi0yMC44NDEtMjUuODUxLTMzLjI1M0MzMTYuMjAyIDgwLjUzNyAzMDQuNTE0IDMyIDI1OS4yIDMyYy01Ni45MjggMC05MiAzNS4yODYtOTIgODMuMiAwIDguMDI2LjgxNCAxNS40ODkgMi4xNzYgMjIuNEg4My4yQzM4LjEwMSAxMzcuNiAwIDE3NS43MDEgMCAyMjAuOHptNDggMGMwLTE4LjcgMTYuNzc1LTM1LjIgMzUuMi0zNS4yaDE1OC40YzAtMTcuMzI1LTI2LjQtMzUuMi0yNi40LTcwLjQgMC0yNi40IDIwLjYyNS0zNS4yIDQ0LTM1LjIgOC43OTQgMCAyMC40NDUgMzIuNzEyIDM0LjkyNiA1Ni4xIDkuMDc0IDE0LjU3NSAxOS41MjQgMjcuMjI1IDMwLjc5OSAzOS44NzUgMTYuMTA5IDE4LjM3NCAzMy44MzYgMzYuNjMzIDU5LjA3NSAzOS41OTZ2MTc2Ljc1MkMzNDEuMjEgMzk2LjA4NyAzMDkuNDkxIDQzMiAyNjQgNDMyaC0yMS4yOTljLTQwLjUyNCAwLTU3LjEyNC0yMi4xOTctNTAuNjAxLTYxLjMyNS0xNC42MTItOC4wMDEtMjQuMTUxLTMzLjk3OS0xMi45MjUtNTMuNjI1LTE5LjM2NS0xOC4yMjUtMTcuNzg3LTQ2LjM4MS00Ljk1LTYxLjA1SDgzLjJDNjQuMjI1IDI1NiA0OCAyMzkuNzc1IDQ4IDIyMC44ek00NDggMzYwYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHMtMTAuNzQ1IDI0LTI0IDI0LTI0LTEwLjc0NS0yNC0yNCAxMC43NDUtMjQgMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQb2ludFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyOC44IDEzNy42aC04Ni4xNzdhMTE1LjUyIDExNS41MiAwIDAgMCAyLjE3Ni0yMi40YzAtNDcuOTE0LTM1LjA3Mi04My4yLTkyLTgzLjItNDUuMzE0IDAtNTcuMDAyIDQ4LjUzNy03NS43MDcgNzguNzg0LTcuNzM1IDEyLjQxMy0xNi45OTQgMjMuMzE3LTI1Ljg1MSAzMy4yNTNsLS4xMzEuMTQ2LS4xMjkuMTQ4QzEzNS42NjIgMTYxLjgwNyAxMjcuNzY0IDE2OCAxMjAuOCAxNjhoLTIuNjc5Yy01Ljc0Ny00Ljk1Mi0xMy41MzYtOC0yMi4xMi04SDMyYy0xNy42NzMgMC0zMiAxMi44OTQtMzIgMjguOHYyMzAuNEMwIDQzNS4xMDYgMTQuMzI3IDQ0OCAzMiA0NDhoNjRjOC41ODQgMCAxNi4zNzMtMy4wNDggMjIuMTItOGgyLjY3OWMyOC42ODggMCA2Ny4xMzcgNDAgMTI3LjIgNDBoMjEuMjk5YzYyLjU0MiAwIDk4LjgtMzguNjU4IDk5Ljk0LTkxLjE0NSAxMi40ODItMTcuODEzIDE4LjQ5MS00MC43ODUgMTUuOTg1LTYyLjc5MUE5My4xNDggOTMuMTQ4IDAgMCAwIDM5My4xNTIgMzA0SDQyOC44YzQ1LjQzNSAwIDgzLjItMzcuNTg0IDgzLjItODMuMiAwLTQ1LjA5OS0zOC4xMDEtODMuMi04My4yLTgzLjJ6bTAgMTE4LjRoLTkxLjAyNmMxMi44MzcgMTQuNjY5IDE0LjQxNSA0Mi44MjUtNC45NSA2MS4wNSAxMS4yMjcgMTkuNjQ2IDEuNjg3IDQ1LjYyNC0xMi45MjUgNTMuNjI1IDYuNTI0IDM5LjEyOC0xMC4wNzYgNjEuMzI1LTUwLjYgNjEuMzI1SDI0OGMtNDUuNDkxIDAtNzcuMjEtMzUuOTEzLTEyMC0zOS42NzZWMjE1LjU3MWMyNS4yMzktMi45NjQgNDIuOTY2LTIxLjIyMiA1OS4wNzUtMzkuNTk2IDExLjI3NS0xMi42NSAyMS43MjUtMjUuMyAzMC43OTktMzkuODc1QzIzMi4zNTUgMTEyLjcxMiAyNDQuMDA2IDgwIDI1Mi44IDgwYzIzLjM3NSAwIDQ0IDguOCA0NCAzNS4yIDAgMzUuMi0yNi40IDUzLjA3NS0yNi40IDcwLjRoMTU4LjRjMTguNDI1IDAgMzUuMiAxNi41IDM1LjIgMzUuMiAwIDE4Ljk3NS0xNi4yMjUgMzUuMi0zNS4yIDM1LjJ6TTg4IDM4NGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRzLTI0LTEwLjc0NS0yNC0yNCAxMC43NDUtMjQgMjQtMjQgMjQgMTAuNzQ1IDI0IDI0elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kUG9pbnRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDUuNiA4My4ydjg2LjE3N2ExMTUuNTIgMTE1LjUyIDAgMCAwLTIyLjQtMi4xNzZjLTQ3LjkxNCAwLTgzLjIgMzUuMDcyLTgzLjIgOTIgMCA0NS4zMTQgNDguNTM3IDU3LjAwMiA3OC43ODQgNzUuNzA3IDEyLjQxMyA3LjczNSAyMy4zMTcgMTYuOTk0IDMzLjI1MyAyNS44NTFsLjE0Ni4xMzEuMTQ4LjEyOUMxMjkuODA3IDM3Ni4zMzggMTM2IDM4NC4yMzYgMTM2IDM5MS4ydjIuNjc5Yy00Ljk1MiA1Ljc0Ny04IDEzLjUzNi04IDIyLjEydjY0YzAgMTcuNjczIDEyLjg5NCAzMiAyOC44IDMyaDIzMC40YzE1LjkwNiAwIDI4LjgtMTQuMzI3IDI4LjgtMzJ2LTY0YzAtOC41ODQtMy4wNDgtMTYuMzczLTgtMjIuMTJWMzkxLjJjMC0yOC42ODggNDAtNjcuMTM3IDQwLTEyNy4ydi0yMS4yOTljMC02Mi41NDItMzguNjU4LTk4LjgtOTEuMTQ1LTk5Ljk0LTE3LjgxMy0xMi40ODItNDAuNzg1LTE4LjQ5MS02Mi43OTEtMTUuOTg1QTkzLjE0OCA5My4xNDggMCAwIDAgMjcyIDExOC44NDdWODMuMkMyNzIgMzcuNzY1IDIzNC40MTYgMCAxODguOCAwYy00NS4wOTkgMC04My4yIDM4LjEwMS04My4yIDgzLjJ6bTExOC40IDB2OTEuMDI2YzE0LjY2OS0xMi44MzcgNDIuODI1LTE0LjQxNSA2MS4wNSA0Ljk1IDE5LjY0Ni0xMS4yMjcgNDUuNjI0LTEuNjg3IDUzLjYyNSAxMi45MjUgMzkuMTI4LTYuNTI0IDYxLjMyNSAxMC4wNzYgNjEuMzI1IDUwLjZWMjY0YzAgNDUuNDkxLTM1LjkxMyA3Ny4yMS0zOS42NzYgMTIwSDE4My41NzFjLTIuOTY0LTI1LjIzOS0yMS4yMjItNDIuOTY2LTM5LjU5Ni01OS4wNzUtMTIuNjUtMTEuMjc1LTI1LjMtMjEuNzI1LTM5Ljg3NS0zMC43OTlDODAuNzEyIDI3OS42NDUgNDggMjY3Ljk5NCA0OCAyNTkuMmMwLTIzLjM3NSA4LjgtNDQgMzUuMi00NCAzNS4yIDAgNTMuMDc1IDI2LjQgNzAuNCAyNi40VjgzLjJjMC0xOC40MjUgMTYuNS0zNS4yIDM1LjItMzUuMiAxOC45NzUgMCAzNS4yIDE2LjIyNSAzNS4yIDM1LjJ6TTM1MiA0MjRjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0cy0xMC43NDUgMjQtMjQgMjQtMjQtMTAuNzQ1LTI0LTI0IDEwLjc0NS0yNCAyNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFBvaW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzU4LjE4MiAxNzkuMzYxYy0xOS40OTMtMjQuNzY4LTUyLjY3OS0zMS45NDUtNzkuODcyLTE5LjA5OC0xNS4xMjctMTUuNjg3LTM2LjE4Mi0yMi40ODctNTYuNTk1LTE5LjYyOVY2N2MwLTM2Ljk0NC0yOS43MzYtNjctNjYuMjg2LTY3Uzg5LjE0MyAzMC4wNTYgODkuMTQzIDY3djE2MS4xMjljLTE5LjkwOS03LjQxLTQzLjI3Mi01LjA5NC02Mi4wODMgOC44NzItMjkuMzU1IDIxLjc5NS0zNS43OTMgNjMuMzMzLTE0LjU1IDkzLjE1MmwxMDkuNjk5IDE1NC4wMDFDMTM0LjYzMiA1MDEuNTkgMTU0Ljc0MSA1MTIgMTc2IDUxMmgxNzguMjg2YzMwLjgwMiAwIDU3LjU3NC0yMS41IDY0LjU1Ny01MS43OTdsMjcuNDI5LTExOC45OTlBNjcuODczIDY3Ljg3MyAwIDAgMCA0NDggMzI2di04NGMwLTQ2Ljg0NC00Ni42MjUtNzkuMjczLTg5LjgxOC02Mi42Mzl6TTgwLjk4NSAyNzkuNjk3bDI3LjEyNiAzOC4wNzljOC45OTUgMTIuNjI2IDI5LjAzMSA2LjI4NyAyOS4wMzEtOS4yODNWNjdjMC0yNS4xMiAzNi41NzEtMjUuMTYgMzYuNTcxIDB2MTc1YzAgOC44MzYgNy4xNjMgMTYgMTYgMTZoNi44NTdjOC44MzcgMCAxNi03LjE2NCAxNi0xNnYtMzVjMC0yNS4xMiAzNi41NzEtMjUuMTYgMzYuNTcxIDB2MzVjMCA4LjgzNiA3LjE2MyAxNiAxNiAxNkgyNzJjOC44MzcgMCAxNi03LjE2NCAxNi0xNnYtMjFjMC0yNS4xMiAzNi41NzEtMjUuMTYgMzYuNTcxIDB2MjFjMCA4LjgzNiA3LjE2MyAxNiAxNiAxNmg2Ljg1N2M4LjgzNyAwIDE2LTcuMTY0IDE2LTE2IDAtMjUuMTIxIDM2LjU3MS0yNS4xNiAzNi41NzEgMHY4NGMwIDEuNDg4LS4xNjkgMi45NzctLjUwMiA0LjQyM2wtMjcuNDMgMTE5LjAwMWMtMS45NzggOC41ODItOS4yOSAxNC41NzYtMTcuNzgyIDE0LjU3NkgxNzZjLTUuNzY5IDAtMTEuMjYzLTIuODc4LTE0LjY5Ny03LjY5N2wtMTA5LjcxMi0xNTRjLTE0LjQwNi0yMC4yMjMgMTQuOTk0LTQyLjgxOCAyOS4zOTQtMjIuNjA2ek0xNzYuMTQzIDQwMHYtOTZjMC04LjgzNyA2LjI2OC0xNiAxNC0xNmg2YzcuNzMyIDAgMTQgNy4xNjMgMTQgMTZ2OTZjMCA4LjgzNy02LjI2OCAxNi0xNCAxNmgtNmMtNy43MzMgMC0xNC03LjE2My0xNC0xNnptNzUuNDI4IDB2LTk2YzAtOC44MzcgNi4yNjgtMTYgMTQtMTZoNmM3LjczMiAwIDE0IDcuMTYzIDE0IDE2djk2YzAgOC44MzctNi4yNjggMTYtMTQgMTZoLTZjLTcuNzMyIDAtMTQtNy4xNjMtMTQtMTZ6TTMyNyA0MDB2LTk2YzAtOC44MzcgNi4yNjgtMTYgMTQtMTZoNmM3LjczMiAwIDE0IDcuMTYzIDE0IDE2djk2YzAgOC44MzctNi4yNjggMTYtMTQgMTZoLTZjLTcuNzMyIDAtMTQtNy4xNjMtMTQtMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRSb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwOC44NjQgNzkuMDUyYy0yMi40MDEtMzMuODk4LTY2LjEwOC00Mi4yNzMtOTguODEzLTIzLjU4OC0yOS40NzQtMzEuNDY5LTc5LjE0NS0zMS4wOTMtMTA4LjMzNC0uMDIyLTQ3LjE2LTI3LjAyLTEwOC43MSA1LjA1NS0xMTAuNjcxIDYwLjgwNkM0NC44NDYgMTA1LjQwNyAwIDE0MC4wMDEgMCAxODcuNDI5djU2Ljk1M2MwIDMyLjc0MSAxNC4yOCA2My45NTQgMzkuMTggODUuNjM0bDk3LjcxIDg1LjA4MWM0LjI1MiAzLjcwMiAzLjExIDUuNTczIDMuMTEgMzIuOTAzIDAgMTcuNjczIDE0LjMyNyAzMiAzMiAzMmgyNTJjMTcuNjczIDAgMzItMTQuMzI3IDMyLTMyIDAtMjMuNTEzLTEuMDE1LTMwLjc0NSAzLjk4Mi00Mi4zN2w0Mi44MzUtOTkuNjU2YzYuMDk0LTE0LjE3NyA5LjE4My0yOS4xNzIgOS4xODMtNDQuNTY4VjE0Ni45NjNjMC01Mi44MzktNTQuMzE0LTg4LjY2Mi0xMDMuMTM2LTY3LjkxMXpNNDY0IDI2MS40MDZhNjQuNTA1IDY0LjUwNSAwIDAgMS01LjI4MiAyNS42MTNsLTQyLjgzNSA5OS42NTVjLTUuMjMgMTIuMTcxLTcuODgzIDI1LjA0LTcuODgzIDM4LjI1VjQzMkgxODh2LTEwLjI4NmMwLTE2LjM3LTcuMTQtMzEuOTc3LTE5LjU5LTQyLjgxN2wtOTcuNzEtODUuMDhDNTYuMjc0IDI4MS4yNTUgNDggMjYzLjIzNiA0OCAyNDQuMzgxdi01Ni45NTNjMC0zMy4yMDggNTItMzMuNTM3IDUyIC42Nzd2NDEuMjI4YTE2IDE2IDAgMCAwIDUuNDkzIDEyLjA2N2w3IDYuMDk1QTE2IDE2IDAgMCAwIDEzOSAyMzUuNDI5VjExOC44NTdjMC0zMy4wOTcgNTItMzMuNzI1IDUyIC42Nzd2MjYuNzUxYzAgOC44MzYgNy4xNjQgMTYgMTYgMTZoN2M4LjgzNiAwIDE2LTcuMTY0IDE2LTE2di00MS4xNDNjMC0zMy4xMzQgNTItMzMuNjc1IDUyIC42Nzd2NDAuNDY2YzAgOC44MzYgNy4xNjMgMTYgMTYgMTZoN2M4LjgzNyAwIDE2LTcuMTY0IDE2LTE2di0yNy40MjljMC0zMy4wMyA1Mi0zMy43OCA1MiAuNjc3djI2Ljc1MWMwIDguODM2IDcuMTYzIDE2IDE2IDE2aDdjOC44MzcgMCAxNi03LjE2NCAxNi0xNiAwLTMzLjE0NiA1Mi0zMy42MTMgNTIgLjY3N3YxMTQuNDQ1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kU2Npc3NvcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ4MGw3MC0uMDEzYzUuMTE0IDAgMTAuMjMxLS41ODMgMTUuMjAzLTEuNzI5bDExOC45OTktMjcuNDI3QzQ5MC41NiA0NDMuODM1IDUxMiA0MTcuMDIgNTEyIDM4Ni4yNzdWMTgwLjU3NWMwLTIzLjg0NS0xMy4wMy00NS45NTEtMzQuMDA1LTU3LjY5bC05Ny45OTktNTQuODUzYy0zNC40MDktMTkuMjYxLTY3LjI2My01LjgyNC05Mi4yMTggMjQuNzMzTDE0Mi44NSAzNy4wMDhjLTM3Ljg4Ny0xNC41NzktODAuNjEyIDMuNzI3LTk1LjY0MiA0MS4yMDEtMTUuMDk4IDM3LjY0MiAzLjYzNSA4MC4zNyA0MS45NDIgOTUuMTEyTDE2OCAxOTJsLTk0LTkuMTQxYy00MC44MDQgMC03NCAzMi44MTEtNzQgNzMuMTQgMCA0MC4zMyAzMy4xOTYgNzMuMTQxIDc0IDczLjE0MWg4Ny42MzVjLTMuNjc1IDI2LjI0NSA4LjY5MiA1MS4yOTcgMzAuMzQxIDY1LjAwNkMxNzguNjU3IDQzNi43MzcgMjExLjA0NCA0ODAgMjU2IDQ4MHptMC00OC4wMTNjLTI1LjE2IDAtMjUuMTItMzYuNTY3IDAtMzYuNTY3IDguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTYuODU2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZoLTI4Yy0yNS4xNTkgMC0yNS4xMjItMzYuNTY3IDAtMzYuNTY3aDI4YzguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTYuODU2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZINzRjLTM0LjQzIDAtMzQuMzc1LTUwLjI4MSAwLTUwLjI4MWgxODJjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtMTEuNjMyYTE2IDE2IDAgMCAwLTEwLjI1NC0xNC45MzNMMTA2LjM4OSAxMjguNTFjLTMxLjU1Mi0xMi4xNC0xMy40MzItNTkuMjgzIDE5LjIyMi00Ni43MTdsMTY2LjU0OSA2NC4wOTFhMTYuMDAxIDE2LjAwMSAwIDAgMCAxOC4xMzktNC44MTJsMjEuNzY0LTI2LjY0N2M1LjgyLTcuMTI3IDE2LjM0OC05LjA2NCAyNC40ODgtNC41MDhsOTggNTQuODU0YzUuODI4IDMuMjYzIDkuNDQ5IDkuMzE4IDkuNDQ5IDE1LjgwNXYyMDUuNzAxYzAgOC40OTEtNS45OTQgMTUuODA0LTE0LjU3NiAxNy43ODJsLTExOS4wMDEgMjcuNDI3YTE5Ljc0MyAxOS43NDMgMCAwIDEtNC40MjMuNTAyaC03MHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGFuZFNwb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMS4wMzA1MywxMTYuMTc2MDVjLTE5LjM5MDU5LTMxLjUwNzc5LTUxLjI0NDA2LTM1LjcyODQ5LTY2LjMxMDQ0LTM1LjAxNzU2LTE0LjExMzI1LTUwLjgxMDUxLTYyLjAwMzgtNTQuMDgtNzAuNzM4MTYtNTQuMDhhNzQuMDMwOTEsNzQuMDMwOTEsMCwwLDAtNzIuMjM4MTYsNTguOTE2bC00LjY0NjQ4LDIyLjY2MDE0LTEzLjY4MzU3LTUzLjIwN2MtOS4wOTU2OS0zNS4zNzEwNy00Ni40MTItNjQuMDUwNzQtODkuNjYtNTMuMDcyMjNhNzMuODk3NDksNzMuODk3NDksMCwwLDAtNTUuMTIxLDc4Ljk0NzIyLDczLjY4MjczLDczLjY4MjczLDAsMCwwLTY0Ljg0OTUsOTQuNDIxODFsMjQuMzU5MzMsODIuMTk3MjFjLTM4LjI0MDE3LTcuNTQ0OTItNjIuNzk2NzcsMTYuMTgzNTgtNjguMTE1MTIsMjEuODQ3NjRhNzMuNjc5MSw3My42NzkxLDAsMCwwLDMuMTk5MjEsMTA0LjE5MzI5bDkxLjM2NTA5LDg1Ljk3NjVBMTU0LjE2NCwxNTQuMTY0LDAsMCwwLDIyMC42MjI3OSw1MTJoMTA3LjQ1NDlBMTI3LjMwMDc5LDEyNy4zMDA3OSwwLDAsMCw0NTIuMzM5Miw0MTMuODYxMzlsNTcuNjIzLTI0MS45NjI3MkE3My4yMDI3NCw3My4yMDI3NCwwLDAsMCw1MDEuMDMwNTMsMTE2LjE3NjA1Wm0tMzcuNzU5Nyw0NC42MDU0NEw0MDUuNjQ3ODgsNDAyLjc0ODEyYTc5LjQ2NjE2LDc5LjQ2NjE2LDAsMCwxLTc3LjU3MDE5LDYxLjI1OTcySDIyMC42MjI3OWExMDYuMzQwNTIsMTA2LjM0MDUyLDAsMCwxLTczLjEzNjYtMjguOTk4bC05MS4zNjktODUuOTgwNDFDMzEuMzQzODEsMzI1LjcyNjY5LDY2LjYxMTMzLDI4OC4xMzEsOTEuMzk2NDQsMzExLjUzOTJsNTEuMTIzLDQ4LjEwNzM5YzUuNDI1NzcsNS4xMDkzNywxMy40ODIzOS43MTY3OSwxMy40ODIzOS01LjgyNjE3YTI0Ni43OTkxNCwyNDYuNzk5MTQsMCwwLDAtMTAuMTc3NzEtNzAuMTUyM2wtMzYuMDEzNjItMTIxLjUzOWMtOS43MzI0LTMyLjg4Mjc5LDM5LjY5OTE2LTQ3LjI3MTQ1LDQ5LjM4NjY0LTE0LjYyNWwzMS4zNDM3LDEwNS43NzkyM2M1LjU5Mzc0LDE4LjkwNDI4LDMzLjc4MTE5LDEwLjcxMjg4LDI4Ljk2NDgtOC4wMDc4MUwxNzcuMDY0MjcsODAuMjM2NjJjLTguNTAzODktMzMuMTAzNSw0MS40MzE1Ny00NS42NDY0Niw0OS44NjUxNS0xMi44MzU5M2w0Ny4zMjYwOSwxODQuMDM1YzQuNDI3NzMsMTcuMjQyMTgsMjkuMTYyMDcsMTYuNTAzOSwzMi43MTA4OS0uODA0NjhsMzEuNzkxLTE1NC45NzA2YzYuODEwNTQtMzMuMTA3NCw1Ny41MTc0OC0yNC4xMDc0MSw1MC4xMTkwNiwxMS45NjI4OEwzNjAuMzI3NjQsMjQ2Ljc4OTI0Yy0zLjcyMjY1LDE4LjEwOTM2LDIzLjY2NzkzLDI0LjYzMDg0LDI4LjA1NjU5LDYuMjE2NzlMNDEzLjE4NSwxNDguODU5NjJDNDIxLjE0OTgsMTE1LjUxMiw0NzEuMTQsMTI3Ljc5NzEzLDQ2My4yNzA4MywxNjAuNzgxNDlaXCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRzaGFrZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTkuMiAxMjcuOWwtNDcuNi00Ny42QTU2LjI1MiA1Ni4yNTIgMCAwIDAgNDMyIDY0SDIwNS4yYy0xNC44IDAtMjkuMSA1LjktMzkuNiAxNi4zTDExOCAxMjcuOUgwdjI1NS43aDY0YzE3LjYgMCAzMS44LTE0LjIgMzEuOS0zMS43aDkuMWw4NC42IDc2LjRjMzAuOSAyNS4xIDczLjggMjUuNyAxMDUuNiAzLjggMTIuNSAxMC44IDI2IDE1LjkgNDEuMSAxNS45IDE4LjIgMCAzNS4zLTcuNCA0OC44LTI0IDIyLjEgOC43IDQ4LjIgMi42IDY0LTE2LjhsMjYuMi0zMi4zYzUuNi02LjkgOS4xLTE0LjggMTAuOS0yM2g1Ny45Yy4xIDE3LjUgMTQuNCAzMS43IDMxLjkgMzEuN2g2NFYxMjcuOUg1MTkuMnpNNDggMzUxLjZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2YzAgOC45LTcuMiAxNi0xNiAxNnptMzkwLTYuOWwtMjYuMSAzMi4yYy0yLjggMy40LTcuOCA0LTExLjMgMS4ybC0yMy45LTE5LjQtMzAgMzYuNWMtNiA3LjMtMTUgNC44LTE4IDIuNGwtMzYuOC0zMS41LTE1LjYgMTkuMmMtMTMuOSAxNy4xLTM5LjIgMTkuNy01NS4zIDYuNmwtOTcuMy04OEg5NlYxNzUuOGg0MS45bDYxLjctNjEuNmMyLS44IDMuNy0xLjUgNS43LTIuM0gyNjJsLTM4LjcgMzUuNWMtMjkuNCAyNi45LTMxLjEgNzIuMy00LjQgMTAxLjMgMTQuOCAxNi4yIDYxLjIgNDEuMiAxMDEuNSA0LjRsOC4yLTcuNSAxMDguMiA4Ny44YzMuNCAyLjggMy45IDcuOSAxLjIgMTEuM3ptMTA2LTQwLjhoLTY5LjJjLTIuMy0yLjgtNC45LTUuNC03LjctNy43bC0xMDIuNy04My40IDEyLjUtMTEuNGM2LjUtNiA3LTE2LjEgMS0yMi42TDM2NyAxNjcuMWMtNi02LjUtMTYuMS02LjktMjIuNi0xbC01NS4yIDUwLjZjLTkuNSA4LjctMjUuNyA5LjQtMzQuNiAwLTkuMy05LjktOC41LTI1LjEgMS4yLTMzLjlsNjUuNi02MC4xYzcuNC02LjggMTctMTAuNSAyNy0xMC41bDgzLjctLjJjMi4xIDAgNC4xLjggNS41IDIuM2w2MS43IDYxLjZINTQ0djEyOHptNDggNDcuN2MtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTZjMCA4LjktNy4yIDE2LTE2IDE2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTY3LjQwMyAyMzUuNjQyTDQ2Mi4zMjMgODQuNTg5QTQ4IDQ4IDAgMCAwIDQyMi45MTkgNjRIMTUzLjA4MWE0OCA0OCAwIDAgMC0zOS40MDQgMjAuNTg5TDguNTk3IDIzNS42NDJBNDguMDAxIDQ4LjAwMSAwIDAgMCAwIDI2My4wNTRWNDAwYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDgwYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMjYzLjA1NGMwLTkuODAxLTMtMTkuMzY2LTguNTk3LTI3LjQxMnpNMTUzLjA4MSAxMTJoMjY5LjgzOGw3Ny45MTMgMTEySDc1LjE2OGw3Ny45MTMtMTEyek01MjggNDAwSDQ4VjI3Mmg0ODB2MTI4em0tMzItNjRjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMycy0zMi0xNC4zMjctMzItMzIgMTQuMzI3LTMyIDMyLTMyIDMyIDE0LjMyNyAzMiAzMnptLTk2IDBjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMycy0zMi0xNC4zMjctMzItMzIgMTQuMzI3LTMyIDMyLTMyIDMyIDE0LjMyNyAzMiAzMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU4LjQgNjQuM0M0MDAuNiAxNS43IDMxMS4zIDIzIDI1NiA3OS4zIDIwMC43IDIzIDExMS40IDE1LjYgNTMuNiA2NC4zLTIxLjYgMTI3LjYtMTAuNiAyMzAuOCA0MyAyODUuNWwxNzUuNCAxNzguN2MxMCAxMC4yIDIzLjQgMTUuOSAzNy42IDE1LjkgMTQuMyAwIDI3LjYtNS42IDM3LjYtMTUuOEw0NjkgMjg1LjZjNTMuNS01NC43IDY0LjctMTU3LjktMTAuNi0yMjEuM3ptLTIzLjYgMTg3LjVMMjU5LjQgNDMwLjVjLTIuNCAyLjQtNC40IDIuNC02LjggMEw3Ny4yIDI1MS44Yy0zNi41LTM3LjItNDMuOS0xMDcuNiA3LjMtMTUwLjcgMzguOS0zMi43IDk4LjktMjcuOCAxMzYuNSAxMC41bDM1IDM1LjcgMzUtMzUuN2MzNy44LTM4LjUgOTcuOC00My4yIDEzNi41LTEwLjYgNTEuMSA0My4xIDQzLjUgMTEzLjkgNy4zIDE1MC44elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIb3NwaXRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMjQ0di00MGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMmgtNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTE0MCAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyem0tNzYgODR2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptNzYgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMnptMTgwIDEyNHYzNkgwdi0zNmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE5LjVWODUuMDM1QzMxLjUgNzMuNDE4IDQyLjI0NSA2NCA1NS41IDY0SDE0NFYyNGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoMTEyYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHY0MGg4OC41YzEzLjI1NSAwIDI0IDkuNDE4IDI0IDIxLjAzNVY0NjRINDM2YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ6TTc5LjUgNDYzSDE5MnYtNjdjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjY3aDExMi41VjExMkgzMDR2MjRjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDE2OGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di0yNEg3OS41djM1MXpNMjY2IDY0aC0yNlYzOGE2IDYgMCAwIDAtNi02aC0yMGE2IDYgMCAwIDAtNiA2djI2aC0yNmE2IDYgMCAwIDAtNiA2djIwYTYgNiAwIDAgMCA2IDZoMjZ2MjZhNiA2IDAgMCAwIDYgNmgyMGE2IDYgMCAwIDAgNi02Vjk2aDI2YTYgNiAwIDAgMCA2LTZWNzBhNiA2IDAgMCAwLTYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSG91cmdsYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCA0OGg0YzYuNjI3IDAgMTItNS4zNzMgMTItMTJWMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxMkM1LjM3MyAwIDAgNS4zNzMgMCAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDRjMCA4MC41NjQgMzIuMTg4IDE2NS44MDcgOTcuMTggMjA4QzQ3Ljg5OSAyOTguMzgxIDE2IDM4My45IDE2IDQ2NGgtNGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDM2MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi0yNGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00YzAtODAuNTY0LTMyLjE4OC0xNjUuODA3LTk3LjE4LTIwOEMzMzYuMTAyIDIxMy42MTkgMzY4IDEyOC4xIDM2OCA0OHpNNjQgNDhoMjU2YzAgMTAxLjYyLTU3LjMwNyAxODQtMTI4IDE4NFM2NCAxNDkuNjIxIDY0IDQ4em0yNTYgNDE2SDY0YzAtMTAxLjYyIDU3LjMwOC0xODQgMTI4LTE4NHMxMjggODIuMzggMTI4IDE4NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSWRCYWRnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgMEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OHptMCA0NjRINDhWNDhoMjg4djQxNnpNMTQ0IDExMmg5NmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmgtOTZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZ6bTQ4IDE3NmMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NC02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6bS04OS42IDEyOGgxNzkuMmMxMi40IDAgMjIuNC04LjYgMjIuNC0xOS4ydi0xOS4yYzAtMzEuOC0zMC4xLTU3LjYtNjcuMi01Ny42LTEwLjggMC0xOC43IDgtNDQuOCA4LTI2LjkgMC0zMy40LTgtNDQuOC04LTM3LjEgMC02Ny4yIDI1LjgtNjcuMiA1Ny42djE5LjJjMCAxMC42IDEwIDE5LjIgMjIuNCAxOS4yelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdJZENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MGMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptMCA0MDBIMzAzLjJjLjktNC41LjggMy42LjgtMjIuNCAwLTMxLjgtMzAuMS01Ny42LTY3LjItNTcuNi0xMC44IDAtMTguNyA4LTQ0LjggOC0yNi45IDAtMzMuNC04LTQ0LjgtOC0zNy4xIDAtNjcuMiAyNS44LTY3LjIgNTcuNiAwIDI2LS4yIDE3LjkuOCAyMi40SDQ4VjE0NGg0ODB2Mjg4em0tMTY4LTgwaDExMmM0LjQgMCA4LTMuNiA4LTh2LTE2YzAtNC40LTMuNi04LTgtOEgzNjBjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDh6bTAtNjRoMTEyYzQuNCAwIDgtMy42IDgtOHYtMTZjMC00LjQtMy42LTgtOC04SDM2MGMtNC40IDAtOCAzLjYtOCA4djE2YzAgNC40IDMuNiA4IDggOHptMC02NGgxMTJjNC40IDAgOC0zLjYgOC04di0xNmMwLTQuNC0zLjYtOC04LThIMzYwYy00LjQgMC04IDMuNi04IDh2MTZjMCA0LjQgMy42IDggOCA4em0tMTY4IDk2YzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0LTY0IDI4LjctNjQgNjQgMjguNyA2NCA2NCA2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDY0SDQ4QzIxLjQ5IDY0IDAgODUuNDkgMCAxMTJ2Mjg4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTEyYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS02IDMzNkg1NGE2IDYgMCAwIDEtNi02VjExOGE2IDYgMCAwIDEgNi02aDQwNGE2IDYgMCAwIDEgNiA2djI3NmE2IDYgMCAwIDEtNiA2ek0xMjggMTUyYy0yMi4wOTEgMC00MCAxNy45MDktNDAgNDBzMTcuOTA5IDQwIDQwIDQwIDQwLTE3LjkwOSA0MC00MC0xNy45MDktNDAtNDAtNDB6TTk2IDM1MmgzMjB2LTgwbC04Ny41MTUtODcuNTE1Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMMTkyIDMwNGwtMzkuNTE1LTM5LjUxNWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDk2IDMwNHY0OHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSW1hZ2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCA0MTZ2MTZjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxNzZjMC0yNi41MSAyMS40OS00OCA0OC00OGgxNnY0OEg1NGE2IDYgMCAwIDAtNiA2djI0NGE2IDYgMCAwIDAgNiA2aDM3MmE2IDYgMCAwIDAgNi02di0xMGg0OHptNDItMzM2SDE1MGE2IDYgMCAwIDAtNiA2djI0NGE2IDYgMCAwIDAgNiA2aDM3MmE2IDYgMCAwIDAgNi02Vjg2YTYgNiAwIDAgMC02LTZ6bTYtNDhjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYyNTZjMCAyNi41MS0yMS40OSA0OC00OCA0OEgxNDRjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzODR6TTI2NCAxNDRjMCAyMi4wOTEtMTcuOTA5IDQwLTQwIDQwcy00MC0xNy45MDktNDAtNDAgMTcuOTA5LTQwIDQwLTQwIDQwIDE3LjkwOSA0MCA0MHptLTcyIDk2bDM5LjUxNS0zOS41MTVjNC42ODYtNC42ODYgMTIuMjg0LTQuNjg2IDE2Ljk3MSAwTDI4OCAyNDBsMTAzLjUxNS0xMDMuNTE1YzQuNjg2LTQuNjg2IDEyLjI4NC00LjY4NiAxNi45NzEgMEw0ODAgMjA4djgwSDE5MnYtNDh6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0tleWJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCA2NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjI4OGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQ4MGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjExMmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em04IDMzNmMwIDQuNDExLTMuNTg5IDgtOCA4SDQ4Yy00LjQxMSAwLTgtMy41ODktOC04VjExMmMwLTQuNDExIDMuNTg5LTggOC04aDQ4MGM0LjQxMSAwIDggMy41ODkgOCA4djI4OHpNMTcwIDI3MHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yOGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0tMzM2IDgydi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDgyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMzg0IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpNMTIyIDE4OHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMkg4MmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yOGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptLTk4IDE1OHYtMTZjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxODBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTZjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyMTZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnS2lzc0JlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY4IDE1MmMtMjMuOCAwLTUyLjcgMjkuMy01NiA3MS40LS4zIDMuNyAyIDcuMiA1LjYgOC4zIDMuNSAxIDcuNS0uNSA5LjMtMy43bDkuNS0xN2M3LjctMTMuNyAxOS4yLTIxLjYgMzEuNS0yMS42czIzLjggNy45IDMxLjUgMjEuNmw5LjUgMTdjMi4xIDMuNyA2LjIgNC43IDkuMyAzLjcgMy42LTEuMSA1LjktNC41IDUuNi04LjMtMy4xLTQyLjEtMzItNzEuNC01NS44LTcxLjR6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptNTYtMTQ4YzAtMTkuMi0yOC44LTQxLjUtNzEuNS00NC0zLjgtLjQtNy40IDIuNC04LjIgNi4yLS45IDMuOCAxLjEgNy43IDQuNyA5LjJsMTYuOSA3LjJjMTMgNS41IDIwLjggMTMuNSAyMC44IDIxLjVzLTcuOCAxNi0yMC43IDIxLjVsLTE3IDcuMmMtNS43IDIuNC02IDEyLjIgMCAxNC44bDE2LjkgNy4yYzEzIDUuNSAyMC44IDEzLjUgMjAuOCAyMS41cy03LjggMTYtMjAuNyAyMS41bC0xNyA3LjJjLTMuNiAxLjUtNS42IDUuNC00LjcgOS4yLjggMy42IDQuMSA2LjIgNy44IDYuMmguNWM0Mi44LTIuNSA3MS41LTI0LjggNzEuNS00NCAwLTEzLTEzLjQtMjcuMy0zNS4yLTM2QzI5MC42IDMzNS4zIDMwNCAzMjEgMzA0IDMwOHptMjQtMTU2Yy0yMy44IDAtNTIuNyAyOS4zLTU2IDcxLjQtLjMgMy43IDIgNy4yIDUuNiA4LjMgMy41IDEgNy41LS41IDkuMy0zLjdsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy43IDYuMiA0LjcgOS4zIDMuNyAzLjYtMS4xIDUuOS00LjUgNS42LTguMy0zLjEtNDIuMS0zMi03MS40LTU1LjgtNzEuNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnS2lzc1dpbmtIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTA0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgMzA4LjVjMC0xOS4yLTI4LjgtNDEuNS03MS41LTQ0LTMuOC0uNC03LjQgMi40LTguMiA2LjItLjkgMy44IDEuMSA3LjcgNC43IDkuMmwxNi45IDcuMmMxMyA1LjUgMjAuOCAxMy41IDIwLjggMjEuNXMtNy44IDE2LTIwLjcgMjEuNWwtMTcgNy4yYy01LjcgMi40LTYgMTIuMiAwIDE0LjhsMTYuOSA3LjJjMTMgNS41IDIwLjggMTMuNSAyMC44IDIxLjVzLTcuOCAxNi0yMC43IDIxLjVsLTE3IDcuMmMtMy42IDEuNS01LjYgNS40LTQuNyA5LjIuOCAzLjYgNC4xIDYuMiA3LjggNi4yaC41YzQyLjgtMi41IDcxLjUtMjQuOCA3MS41LTQ0IDAtMTMtMTMuNC0yNy4zLTM1LjItMzYgMjEuNy05LjEgMzUuMS0yMy40IDM1LjEtMzYuNHptNzAuNS04My41bDkuNSA4LjVjMy44IDMuMyA5LjMgNCAxMy43IDEuNiA0LjQtMi40IDYuOS03LjQgNi4xLTEyLjQtNC0yNS4yLTM0LjItNDIuMS01OS44LTQyLjFzLTU1LjkgMTYuOS01OS44IDQyLjFjLS44IDUgMS43IDEwIDYuMSAxMi40IDUuOCAzLjEgMTEuMi43IDEzLjctMS42bDkuNS04LjVjMTQuOC0xMy4yIDQ2LjItMTMuMiA2MSAwek0xMzYgMjA4LjVjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzJ6bTM2NS4xIDE5NGMtOC0yMC44LTMxLjUtMzEuNS01My4xLTI1LjlsLTguNCAyLjItMi4zLTguNGMtNS45LTIxLjQtMjctMzYuNS00OS0zMy0yNS4yIDQtNDAuNiAyOC42LTM0IDUyLjZsMjIuOSA4Mi42YzEuNSA1LjMgNyA4LjUgMTIuNCA3LjFsODMtMjEuNWMyNC4xLTYuMyAzNy43LTMxLjggMjguNS01NS43ek0zMzQgNDM2LjNjLTI2LjEgMTIuNS01NS4yIDE5LjctODYgMTkuNy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDBjMCAyMi4xLTMuNyA0My4zLTEwLjQgNjMuMiA5IDYuNCAxNyAxNC4yIDIyLjYgMjMuOSA2LjQuMSAxMi42IDEuNCAxOC42IDIuOSAxMC45LTI3LjkgMTcuMS01OC4yIDE3LjEtOTBDNDk2IDExOSAzODUgOCAyNDggOFMwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDhjMzUuNCAwIDY4LjktNy41IDk5LjQtMjAuOS0yLjUtNy4zIDQuMyAxNy4yLTEzLjQtNDYuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnS2lzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjggMTc2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnptMTM2IDEzMmMwLTE5LjItMjguOC00MS41LTcxLjUtNDQtMy44LS40LTcuNCAyLjQtOC4yIDYuMi0uOSAzLjggMS4xIDcuNyA0LjcgOS4ybDE2LjkgNy4yYzEzIDUuNSAyMC44IDEzLjUgMjAuOCAyMS41cy03LjggMTYtMjAuNyAyMS41bC0xNyA3LjJjLTUuNyAyLjQtNiAxMi4yIDAgMTQuOGwxNi45IDcuMmMxMyA1LjUgMjAuOCAxMy41IDIwLjggMjEuNXMtNy44IDE2LTIwLjcgMjEuNWwtMTcgNy4yYy0zLjYgMS41LTUuNiA1LjQtNC43IDkuMi44IDMuNiA0LjEgNi4yIDcuOCA2LjJoLjVjNDIuOC0yLjUgNzEuNS0yNC44IDcxLjUtNDQgMC0xMy0xMy40LTI3LjMtMzUuMi0zNkMyOTAuNiAzMzUuMyAzMDQgMzIxIDMwNCAzMDh6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptODAtMjgwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGF1Z2hCZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTE0MS40IDM4OS40Yy0zNy44IDM3LjgtODggNTguNi0xNDEuNCA1OC42cy0xMDMuNi0yMC44LTE0MS40LTU4LjZTNDggMzA5LjQgNDggMjU2czIwLjgtMTAzLjYgNTguNi0xNDEuNFMxOTQuNiA1NiAyNDggNTZzMTAzLjYgMjAuOCAxNDEuNCA1OC42UzQ0OCAyMDIuNiA0NDggMjU2cy0yMC44IDEwMy42LTU4LjYgMTQxLjR6TTMyOCAxNTJjLTIzLjggMC01Mi43IDI5LjMtNTYgNzEuNC0uNyA4LjYgMTAuOCAxMS45IDE0LjkgNC41bDkuNS0xN2M3LjctMTMuNyAxOS4yLTIxLjYgMzEuNS0yMS42czIzLjggNy45IDMxLjUgMjEuNmw5LjUgMTdjNC4xIDcuNCAxNS42IDQgMTQuOS00LjUtMy4xLTQyLjEtMzItNzEuNC01NS44LTcxLjR6bS0yMDEgNzUuOWw5LjUtMTdjNy43LTEzLjcgMTkuMi0yMS42IDMxLjUtMjEuNnMyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzQuMSA3LjQgMTUuNiA0IDE0LjktNC41LTMuMy00Mi4xLTMyLjItNzEuNC01Ni03MS40cy01Mi43IDI5LjMtNTYgNzEuNGMtLjYgOC41IDEwLjkgMTEuOSAxNS4xIDQuNXpNMzYyLjQgMjg4SDEzMy42Yy04LjIgMC0xNC41IDctMTMuNSAxNSA3LjUgNTkuMiA1OC45IDEwNSAxMjEuMSAxMDVoMTMuNmM2Mi4yIDAgMTEzLjYtNDUuOCAxMjEuMS0xMDUgMS04LTUuMy0xNS0xMy41LTE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdMYXVnaFNxdWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0xNDEuNCAzODkuNGMtMzcuOCAzNy44LTg4IDU4LjYtMTQxLjQgNTguNnMtMTAzLjYtMjAuOC0xNDEuNC01OC42UzQ4IDMwOS40IDQ4IDI1NnMyMC44LTEwMy42IDU4LjYtMTQxLjRTMTk0LjYgNTYgMjQ4IDU2czEwMy42IDIwLjggMTQxLjQgNTguNlM0NDggMjAyLjYgNDQ4IDI1NnMtMjAuOCAxMDMuNi01OC42IDE0MS40ek0zNDMuNiAxOTZsMzMuNi00MC4zYzguNi0xMC4zLTMuOC0yNC44LTE1LjQtMThsLTgwIDQ4Yy03LjggNC43LTcuOCAxNS45IDAgMjAuNmw4MCA0OGMxMS41IDYuOCAyNC03LjYgMTUuNC0xOEwzNDMuNiAxOTZ6bS0yMDkuNCA1OC4zbDgwLTQ4YzcuOC00LjcgNy44LTE1LjkgMC0yMC42bC04MC00OGMtMTEuNi02LjktMjQgNy43LTE1LjQgMThsMzMuNiA0MC4zLTMzLjYgNDAuM2MtOC43IDEwLjQgMy44IDI0LjggMTUuNCAxOHpNMzYyLjQgMjg4SDEzMy42Yy04LjIgMC0xNC41IDctMTMuNSAxNSA3LjUgNTkuMiA1OC45IDEwNSAxMjEuMSAxMDVoMTMuNmM2Mi4yIDAgMTEzLjYtNDUuOCAxMjEuMS0xMDUgMS04LTUuMy0xNS0xMy41LTE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdMYXVnaFdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMTQxLjQgMzg5LjRjLTM3LjggMzcuOC04OCA1OC42LTE0MS40IDU4LjZzLTEwMy42LTIwLjgtMTQxLjQtNTguNkM2OC44IDM1OS42IDQ4IDMwOS40IDQ4IDI1NnMyMC44LTEwMy42IDU4LjYtMTQxLjRDMTQ0LjQgNzYuOCAxOTQuNiA1NiAyNDggNTZzMTAzLjYgMjAuOCAxNDEuNCA1OC42YzM3LjggMzcuOCA1OC42IDg4IDU4LjYgMTQxLjRzLTIwLjggMTAzLjYtNTguNiAxNDEuNHpNMzI4IDE2NGMtMjUuNyAwLTU1LjkgMTYuOS01OS45IDQyLjEtMS43IDExLjIgMTEuNSAxOC4yIDE5LjggMTAuOGw5LjUtOC41YzE0LjgtMTMuMiA0Ni4yLTEzLjIgNjEgMGw5LjUgOC41YzguNSA3LjQgMjEuNi4zIDE5LjgtMTAuOC0zLjgtMjUuMi0zNC00Mi4xLTU5LjctNDIuMXptLTE2MCA2MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE5NC40IDY0SDEzMy42Yy04LjIgMC0xNC41IDctMTMuNSAxNSA3LjUgNTkuMiA1OC45IDEwNSAxMjEuMSAxMDVoMTMuNmM2Mi4yIDAgMTEzLjYtNDUuOCAxMjEuMS0xMDUgMS04LTUuMy0xNS0xMy41LTE1elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdMYXVnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0xNDEuNCAzODkuNGMtMzcuOCAzNy44LTg4IDU4LjYtMTQxLjQgNTguNnMtMTAzLjYtMjAuOC0xNDEuNC01OC42UzQ4IDMwOS40IDQ4IDI1NnMyMC44LTEwMy42IDU4LjYtMTQxLjRTMTk0LjYgNTYgMjQ4IDU2czEwMy42IDIwLjggMTQxLjQgNTguNlM0NDggMjAyLjYgNDQ4IDI1NnMtMjAuOCAxMDMuNi01OC42IDE0MS40ek0zMjggMjI0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptLTE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMTk0LjQgNjRIMTMzLjZjLTguMiAwLTE0LjUgNy0xMy41IDE1IDcuNSA1OS4yIDU4LjkgMTA1IDEyMS4xIDEwNWgxMy42YzYyLjIgMCAxMTMuNi00NS44IDEyMS4xLTEwNSAxLTgtNS4zLTE1LTEzLjUtMTV6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0xlbW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4NC4xMTIgMjcuODg5QzQ1NS45ODktLjIzMyA0MTYuMTA4LTguMDU3IDM4Ny4wNTkgOC44NjUgMzQ3LjYwNCAzMS44NDggMjIzLjUwNC00MS4xMTEgOTEuMTk2IDkxLjE5Ny00MS4yNzcgMjIzLjY3MiAzMS45MjMgMzQ3LjQ3MiA4Ljg2NiAzODcuMDU4Yy0xNi45MjIgMjkuMDUxLTkuMSA2OC45MzIgMTkuMDIyIDk3LjA1NCAyOC4xMzUgMjguMTM1IDY4LjAxMSAzNS45MzggOTcuMDU3IDE5LjAyMSAzOS40MjMtMjIuOTcgMTYzLjU1NyA0OS45NjkgMjk1Ljg1OC04Mi4zMjkgMTMyLjQ3NC0xMzIuNDc3IDU5LjI3My0yNTYuMjc3IDgyLjMzMS0yOTUuODYxIDE2LjkyMi0yOS4wNSA5LjEtNjguOTMxLTE5LjAyMi05Ny4wNTR6bS0yMi40MDUgNzIuODk0Yy0zOC44IDY2LjYwOSA0NS42IDE2NS42MzUtNzQuODQ1IDI4Ni4wOC0xMjAuNDQgMTIwLjQ0My0yMTkuNDc1IDM2LjA0OC0yODYuMDc2IDc0Ljg0My0yMi42NzkgMTMuMjA3LTY0LjAzNS0yNy4yNDEtNTAuNDkzLTUwLjQ4OCAzOC44LTY2LjYwOS00NS42LTE2NS42MzUgNzQuODQ1LTI4Ni4wOEMyNDUuNTczIDQuNzAyIDM0NC42MTYgODkuMDg2IDQxMS4yMTkgNTAuMjkyYzIyLjczLTEzLjI0IDY0LjAwNSAyNy4yODggNTAuNDg4IDUwLjQ5MXptLTE2OS44NjEgOC43MzZjMS4zNyAxMC45Ni02LjQwNCAyMC45NTctMTcuMzY1IDIyLjMyNy01NC44NDYgNi44NTUtMTM1Ljc3OSA4Ny43ODctMTQyLjYzNSAxNDIuNjM1LTEuMzczIDEwLjk4OS0xMS4zOTkgMTguNzM0LTIyLjMyNiAxNy4zNjUtMTAuOTYxLTEuMzctMTguNzM1LTExLjM2Ni0xNy4zNjUtMjIuMzI2IDkuMTYyLTczLjI4NiAxMDQuMTY3LTE2OC4yMTUgMTc3LjM2NS0xNzcuMzY1IDEwLjk1My0xLjM2OCAyMC45NTYgNi40MDMgMjIuMzI2IDE3LjM2NHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGlmZVJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUwNGMxMzYuOTY3IDAgMjQ4LTExMS4wMzMgMjQ4LTI0OFMzOTIuOTY3IDggMjU2IDggOCAxMTkuMDMzIDggMjU2czExMS4wMzMgMjQ4IDI0OCAyNDh6bS0xMDMuMzk4LTc2LjcybDUzLjQxMS01My40MTFjMzEuODA2IDEzLjUwNiA2OC4xMjggMTMuNTIyIDk5Ljk3NCAwbDUzLjQxMSA1My40MTFjLTYzLjIxNyAzOC4zMTktMTQzLjU3OSAzOC4zMTktMjA2Ljc5NiAwek0zMzYgMjU2YzAgNDQuMTEyLTM1Ljg4OCA4MC04MCA4MHMtODAtMzUuODg4LTgwLTgwIDM1Ljg4OC04MCA4MC04MCA4MCAzNS44ODggODAgODB6bTkxLjI4IDEwMy4zOThsLTUzLjQxMS01My40MTFjMTMuNTA1LTMxLjgwNiAxMy41MjItNjguMTI4IDAtOTkuOTc0bDUzLjQxMS01My40MTFjMzguMzE5IDYzLjIxNyAzOC4zMTkgMTQzLjU3OSAwIDIwNi43OTZ6TTM1OS4zOTcgODQuNzJsLTUzLjQxMSA1My40MTFjLTMxLjgwNi0xMy41MDUtNjguMTI4LTEzLjUyMi05OS45NzMgMEwxNTIuNjAyIDg0LjcyYzYzLjIxNy0zOC4zMTkgMTQzLjU3OS0zOC4zMTkgMjA2Ljc5NSAwek04NC43MiAxNTIuNjAybDUzLjQxMSA1My40MTFjLTEzLjUwNiAzMS44MDYtMTMuNTIyIDY4LjEyOCAwIDk5Ljk3NEw4NC43MiAzNTkuMzk4Yy0zOC4zMTktNjMuMjE3LTM4LjMxOS0xNDMuNTc5IDAtMjA2Ljc5NnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGlnaHRidWxiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzNTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiA4MGMtNTIuOTQgMC05NiA0My4wNi05NiA5NiAwIDguODQgNy4xNiAxNiAxNiAxNnMxNi03LjE2IDE2LTE2YzAtMzUuMyAyOC43Mi02NCA2NC02NCA4Ljg0IDAgMTYtNy4xNiAxNi0xNnMtNy4xNi0xNi0xNi0xNnpNOTYuMDYgNDU5LjE3YzAgMy4xNS45MyA2LjIyIDIuNjggOC44NGwyNC41MSAzNi44NGMyLjk3IDQuNDYgNy45NyA3LjE0IDEzLjMyIDcuMTRoNzguODVjNS4zNiAwIDEwLjM2LTIuNjggMTMuMzItNy4xNGwyNC41MS0zNi44NGMxLjc0LTIuNjIgMi42Ny01LjcgMi42OC04Ljg0bC4wNS00My4xOEg5Ni4wMmwuMDQgNDMuMTh6TTE3NiAwQzczLjcyIDAgMCA4Mi45NyAwIDE3NmMwIDQ0LjM3IDE2LjQ1IDg0Ljg1IDQzLjU2IDExNS43OCAxNi42NCAxOC45OSA0Mi43NCA1OC44IDUyLjQyIDkyLjE2di4wNmg0OHYtLjEyYy0uMDEtNC43Ny0uNzItOS41MS0yLjE1LTE0LjA3LTUuNTktMTcuODEtMjIuODItNjQuNzctNjIuMTctMTA5LjY3LTIwLjU0LTIzLjQzLTMxLjUyLTUzLjE1LTMxLjYxLTg0LjE0LS4yLTczLjY0IDU5LjY3LTEyOCAxMjcuOTUtMTI4IDcwLjU4IDAgMTI4IDU3LjQyIDEyOCAxMjggMCAzMC45Ny0xMS4yNCA2MC44NS0zMS42NSA4NC4xNC0zOS4xMSA0NC42MS01Ni40MiA5MS40Ny02Mi4xIDEwOS40NmE0Ny41MDcgNDcuNTA3IDAgMCAwLTIuMjIgMTQuM3YuMWg0OHYtLjA1YzkuNjgtMzMuMzcgMzUuNzgtNzMuMTggNTIuNDItOTIuMTZDMzM1LjU1IDI2MC44NSAzNTIgMjIwLjM3IDM1MiAxNzYgMzUyIDc4LjggMjczLjIgMCAxNzYgMHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGlzdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMzJINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS02IDQwMEg1NGE2IDYgMCAwIDEtNi02Vjg2YTYgNiAwIDAgMSA2LTZoNDA0YTYgNiAwIDAgMSA2IDZ2MzQwYTYgNiAwIDAgMS02IDZ6bS00Mi05MnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDIwNGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgyMDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnptMC05NnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDIwNGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgyMDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnptMC05NnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDIwNGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgyMDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnptLTI1MiAxMmMwIDE5Ljg4Mi0xNi4xMTggMzYtMzYgMzZzLTM2LTE2LjExOC0zNi0zNiAxNi4xMTgtMzYgMzYtMzYgMzYgMTYuMTE4IDM2IDM2em0wIDk2YzAgMTkuODgyLTE2LjExOCAzNi0zNiAzNnMtMzYtMTYuMTE4LTM2LTM2IDE2LjExOC0zNiAzNi0zNiAzNiAxNi4xMTggMzYgMzZ6bTAgOTZjMCAxOS44ODItMTYuMTE4IDM2LTM2IDM2cy0zNi0xNi4xMTgtMzYtMzYgMTYuMTE4LTM2IDM2LTM2IDM2IDE2LjExOCAzNiAzNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTWFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2MC4wMiAzMmMtMS45NiAwLTMuOTguMzctNS45NiAxLjE2TDM4NC4wMSA5NkgzODRMMjEyIDM1LjI4QTY0LjI1MiA2NC4yNTIgMCAwIDAgMTkxLjc2IDMyYy02LjY5IDAtMTMuMzcgMS4wNS0xOS44MSAzLjE0TDIwLjEyIDg3Ljk1QTMyLjAwNiAzMi4wMDYgMCAwIDAgMCAxMTcuNjZ2MzQ2LjMyQzAgNDczLjE3IDcuNTMgNDgwIDE1Ljk5IDQ4MGMxLjk2IDAgMy45Ny0uMzcgNS45Ni0xLjE2TDE5MiA0MTZsMTcyIDYwLjcxYTYzLjk4IDYzLjk4IDAgMCAwIDQwLjA1LjE1bDE1MS44My01Mi44MUEzMS45OTYgMzEuOTk2IDAgMCAwIDU3NiAzOTQuMzRWNDguMDJjMC05LjE5LTcuNTMtMTYuMDItMTUuOTgtMTYuMDJ6TTIyNCA5MC40MmwxMjggNDUuMTl2Mjg1Ljk3bC0xMjgtNDUuMTlWOTAuNDJ6TTQ4IDQxOC4wNVYxMjkuMDdsMTI4LTQ0LjUzdjI4Ni4ybC0uNjQuMjNMNDggNDE4LjA1em00ODAtMzUuMTNsLTEyOCA0NC41M1YxNDEuMjZsLjY0LS4yNEw1MjggOTMuOTV2Mjg4Ljk3elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdNZWhCbGFuayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bS04MC0yODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyem0xNjAgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ01laFJvbGxpbmdFeWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptODgtMzA0Yy0zOS44IDAtNzIgMzIuMi03MiA3MnMzMi4yIDcyIDcyIDcyIDcyLTMyLjIgNzItNzItMzIuMi03Mi03Mi03MnptMCAxMTJjLTIyLjEgMC00MC0xNy45LTQwLTQwIDAtMTMuNiA3LjMtMjUuMSAxNy43LTMyLjMtMSAyLjYtMS43IDUuMy0xLjcgOC4zIDAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0yLjktLjctNS43LTEuNy04LjMgMTAuNCA3LjIgMTcuNyAxOC43IDE3LjcgMzIuMyAwIDIyLjEtMTcuOSA0MC00MCA0MHptLTEwNC00MGMwLTM5LjgtMzIuMi03Mi03Mi03MnMtNzIgMzIuMi03MiA3MiAzMi4yIDcyIDcyIDcyIDcyLTMyLjIgNzItNzJ6bS0xMTIgMGMwLTEzLjYgNy4zLTI1LjEgMTcuNy0zMi4zLTEgMi42LTEuNyA1LjMtMS43IDguMyAwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMi45LS43LTUuNy0xLjctOC4zIDEwLjQgNy4yIDE3LjcgMTguNyAxNy43IDMyLjMgMCAyMi4xLTE3LjkgNDAtNDAgNDBzLTQwLTE3LjktNDAtNDB6bTE5MiAxMjhIMTg0Yy0xMy4yIDAtMjQgMTAuOC0yNCAyNHMxMC44IDI0IDI0IDI0aDEyOGMxMy4yIDAgMjQtMTAuOCAyNC0yNHMtMTAuOC0yNC0yNC0yNHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTWVoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptLTgwLTIxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE2MC02NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bTggMTQ0SDE2MGMtMTMuMiAwLTI0IDEwLjgtMjQgMjRzMTAuOCAyNCAyNCAyNGgxNzZjMTMuMiAwIDI0LTEwLjggMjQtMjRzLTEwLjgtMjQtMjQtMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ01pbnVzU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwOCAyODRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMzJjMC02LjYgNS40LTEyIDEyLTEyaDIzMmM2LjYgMCAxMiA1LjQgMTIgMTJ2MzJjMCA2LjYtNS40IDEyLTEyIDEySDEwOHpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2Vjg2YzAtMy4zLTIuNy02LTYtNkg1NGMtMy4zIDAtNiAyLjctNiA2djM0MGMwIDMuMyAyLjcgNiA2IDZoMzQwYzMuMyAwIDYtMi43IDYtNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTW9uZXlCaWxsQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCAxNDRjLTUzLjAyIDAtOTYgNTAuMTQtOTYgMTEyIDAgNjEuODUgNDIuOTggMTEyIDk2IDExMiA1MyAwIDk2LTUwLjEzIDk2LTExMiAwLTYxLjg2LTQyLjk4LTExMi05Ni0xMTJ6bTQwIDE2OGMwIDQuNDItMy41OCA4LTggOGgtNjRjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxNnYtNTUuNDRsLS40Ny4zMWE3Ljk5MiA3Ljk5MiAwIDAgMS0xMS4wOS0yLjIybC04Ljg4LTEzLjMxYTcuOTkyIDcuOTkyIDAgMCAxIDIuMjItMTEuMDlsMTUuMzMtMTAuMjJhMjMuOTkgMjMuOTkgMCAwIDEgMTMuMzEtNC4wM0gzMjhjNC40MiAwIDggMy41OCA4IDh2ODhoMTZjNC40MiAwIDggMy41OCA4IDh2MTZ6TTYwOCA2NEgzMkMxNC4zMyA2NCAwIDc4LjMzIDAgOTZ2MzIwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTc2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptLTE2IDI3MmMtMzUuMzUgMC02NCAyOC42NS02NCA2NEgxMTJjMC0zNS4zNS0yOC42NS02NC02NC02NFYxNzZjMzUuMzUgMCA2NC0yOC42NSA2NC02NGg0MTZjMCAzNS4zNSAyOC42NSA2NCA2NCA2NHYxNjB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ01vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc5LjEzNSA1MTJjNzguNzU2IDAgMTUwLjk4Mi0zNS44MDQgMTk4Ljg0NC05NC43NzUgMjguMjctMzQuODMxLTIuNTU4LTg1LjcyMi00Ni4yNDktNzcuNDAxLTgyLjM0OCAxNS42ODMtMTU4LjI3Mi00Ny4yNjgtMTU4LjI3Mi0xMzAuNzkyIDAtNDguNDI0IDI2LjA2LTkyLjI5MiA2Ny40MzQtMTE1LjgzNiAzOC43NDUtMjIuMDUgMjguOTk5LTgwLjc4OC0xNS4wMjItODguOTE5QTI1Ny45MzYgMjU3LjkzNiAwIDAgMCAyNzkuMTM1IDBjLTE0MS4zNiAwLTI1NiAxMTQuNTc1LTI1NiAyNTYgMCAxNDEuMzYgMTE0LjU3NiAyNTYgMjU2IDI1NnptMC00NjRjMTIuOTg1IDAgMjUuNjg5IDEuMjAxIDM4LjAxNiAzLjQ3OC01NC43NiAzMS4xNjMtOTEuNjkzIDkwLjA0Mi05MS42OTMgMTU3LjU1NCAwIDExMy44NDggMTAzLjY0MSAxOTkuMiAyMTUuMjUyIDE3Ny45NDRDNDAyLjU3NCA0MzMuOTY0IDM0NC4zNjYgNDY0IDI3OS4xMzUgNDY0Yy0xMTQuODc1IDAtMjA4LTkzLjEyNS0yMDgtMjA4czkzLjEyNS0yMDggMjA4LTIwOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTmV3c3BhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU1MiA2NEgxMTJjLTIwLjg1OCAwLTM4LjY0MyAxMy4zNzctNDUuMjQ4IDMySDI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MjcyYzAgMzAuOTI4IDI1LjA3MiA1NiA1NiA1Nmg0OTZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0Vjg4YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHpNNDggMzkyVjE0NGgxNnYyNDhjMCA0LjQxMS0zLjU4OSA4LTggOHMtOC0zLjU4OS04LTh6bTQ4MCA4SDExMS40MjJjLjM3NC0yLjYxNC41NzgtNS4yODMuNTc4LThWMTEyaDQxNnYyODh6TTE3MiAyODBoMTM2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTk2YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTcyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjk2YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJ6bTI4LTgwaDgwdjQwaC04MHYtNDB6bS00MCAxNDB2LTI0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTM2YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgxNzJjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTE5MiAwdi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDEwNGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzY0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyem0wLTE0NHYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxMDRjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDM2NGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnptMCA3MnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxMDRjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDM2NGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnT2JqZWN0R3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAwIDEyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyVjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTcyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjEySDk2VjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJDNS4zNzMgMzIgMCAzNy4zNzMgMCA0NHY3MmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDEydjI1NkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY3MmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDcyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTEyaDMyMHYxMmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDcyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTcyYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTEyVjEyOGgxMnptLTUyLTY0aDMydjMyaC0zMlY2NHpNMzIgNjRoMzJ2MzJIMzJWNjR6bTMyIDM4NEgzMnYtMzJoMzJ2MzJ6bTQxNiAwaC0zMnYtMzJoMzJ2MzJ6bS00MC02NGgtMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTJIOTZ2LTEyYzAtNi42MjctNS4zNzMtMTItMTItMTJINzJWMTI4aDEyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTEyaDMyMHYxMmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDEydjI1NnptLTM2LTE5MmgtODR2LTUyYzAtNi42MjgtNS4zNzMtMTItMTItMTJIMTA4Yy02LjYyNyAwLTEyIDUuMzcyLTEyIDEydjE2OGMwIDYuNjI4IDUuMzczIDEyIDEyIDEyaDg0djUyYzAgNi42MjggNS4zNzMgMTIgMTIgMTJoMjAwYzYuNjI3IDAgMTItNS4zNzIgMTItMTJWMjA0YzAtNi42MjgtNS4zNzMtMTItMTItMTJ6bS0yNjgtMjRoMTQ0djExMkgxMzZWMTY4em0yNDAgMTc2SDIzMnYtMjRoNzZjNi42MjcgMCAxMi01LjM3MiAxMi0xMnYtNzZoNTZ2MTEyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdPYmplY3RVbmdyb3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2NCAyMjRjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNzJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNzJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTJoLTg4di0yNGgxMmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyVjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTcyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjEySDk2VjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJDNS4zNzMgMzIgMCAzNy4zNzMgMCA0NHY3MmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDEydjE2MEgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY3MmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDcyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTEyaDg4djI0aC0xMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY3MmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDcyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTEyaDIyNHYxMmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDcyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTcyYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTEyVjIyNGgxMnpNMzUyIDY0aDMydjMyaC0zMlY2NHptMCAyNTZoMzJ2MzJoLTMydi0zMnpNNjQgMzUySDMydi0zMmgzMnYzMnptMC0yNTZIMzJWNjRoMzJ2MzJ6bTMyIDIxNnYtMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMkg3MlYxMjhoMTJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtMTJoMjI0djEyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTJ2MTYwaC0xMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYxMkg5NnptMTI4IDEzNmgtMzJ2LTMyaDMydjMyem0yODAtNjRoLTEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjEySDI1NnYtMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMTJ2LTI0aDg4djEyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNzJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNzJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMTJ2LTg4aDg4djEyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTJ2MTYwem00MCA2NGgtMzJ2LTMyaDMydjMyem0wLTI1NmgtMzJ2LTMyaDMydjMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdQYXBlclBsYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MCA2LjVMMjQgMjQ2LjRjLTM0LjQgMTkuOS0zMS4xIDcwLjggNS43IDg1LjlMMTQ0IDM3OS42VjQ2NGMwIDQ2LjQgNTkuMiA2NS41IDg2LjYgMjguNmw0My44LTU5LjEgMTExLjkgNDYuMmM1LjkgMi40IDEyLjEgMy42IDE4LjMgMy42IDguMiAwIDE2LjMtMi4xIDIzLjYtNi4yIDEyLjgtNy4yIDIxLjYtMjAgMjMuOS0zNC41bDU5LjQtMzg3LjJjNi4xLTQwLjEtMzYuOS02OC44LTcxLjUtNDguOXpNMTkyIDQ2NHYtNjQuNmwzNi42IDE1LjFMMTkyIDQ2NHptMjEyLjYtMjguN2wtMTUzLjgtNjMuNUwzOTEgMTY5LjVjMTAuNy0xNS41LTkuNS0zMy41LTIzLjctMjEuMkwxNTUuOCAzMzIuNiA0OCAyODggNDY0IDQ4bC01OS40IDM4Ny4zelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdQYXVzZUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0wIDQ0OGMtMTEwLjUgMC0yMDAtODkuNS0yMDAtMjAwUzE0NS41IDU2IDI1NiA1NnMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDB6bTk2LTI4MHYxNjBjMCA4LjgtNy4yIDE2LTE2IDE2aC00OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2em0tMTEyIDB2MTYwYzAgOC44LTcuMiAxNi0xNiAxNmgtNDhjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnUGxheUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzEuNyAyMzhsLTE3Ni0xMDdjLTE1LjgtOC44LTM1LjcgMi41LTM1LjcgMjF2MjA4YzAgMTguNCAxOS44IDI5LjggMzUuNyAyMWwxNzYtMTAxYzE2LjQtOS4xIDE2LjQtMzIuOCAwLTQyek01MDQgMjU2QzUwNCAxMTkgMzkzIDggMjU2IDhTOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OHptLTQ0OCAwYzAtMTEwLjUgODkuNS0yMDAgMjAwLTIwMHMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDBTNTYgMzY2LjUgNTYgMjU2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdQbHVzU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAyNDB2MzJjMCA2LjYtNS40IDEyLTEyIDEyaC04OHY4OGMwIDYuNi01LjQgMTItMTIgMTJoLTMyYy02LjYgMC0xMi01LjQtMTItMTJ2LTg4aC04OGMtNi42IDAtMTItNS40LTEyLTEydi0zMmMwLTYuNiA1LjQtMTIgMTItMTJoODh2LTg4YzAtNi42IDUuNC0xMiAxMi0xMmgzMmM2LjYgMCAxMiA1LjQgMTIgMTJ2ODhoODhjNi42IDAgMTIgNS40IDEyIDEyem05Ni0xNjB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWODZjMC0zLjMtMi43LTYtNi02SDU0Yy0zLjMgMC02IDIuNy02IDZ2MzQwYzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdRdWVzdGlvbkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkuMDQzIDggOCAxMTkuMDgzIDggMjU2YzAgMTM2Ljk5NyAxMTEuMDQzIDI0OCAyNDggMjQ4czI0OC0xMTEuMDAzIDI0OC0yNDhDNTA0IDExOS4wODMgMzkyLjk1NyA4IDI1NiA4em0wIDQ0OGMtMTEwLjUzMiAwLTIwMC04OS40MzEtMjAwLTIwMCAwLTExMC40OTUgODkuNDcyLTIwMCAyMDAtMjAwIDExMC40OTEgMCAyMDAgODkuNDcxIDIwMCAyMDAgMCAxMTAuNTMtODkuNDMxIDIwMC0yMDAgMjAwem0xMDcuMjQ0LTI1NS4yYzAgNjcuMDUyLTcyLjQyMSA2OC4wODQtNzIuNDIxIDkyLjg2M1YzMDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMmgtNDUuNjQ3Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi04LjY1OWMwLTM1Ljc0NSAyNy4xLTUwLjAzNCA0Ny41NzktNjEuNTE2IDE3LjU2MS05Ljg0NSAyOC4zMjQtMTYuNTQxIDI4LjMyNC0yOS41NzkgMC0xNy4yNDYtMjEuOTk5LTI4LjY5My0zOS43ODQtMjguNjkzLTIzLjE4OSAwLTMzLjg5NCAxMC45NzctNDguOTQyIDI5Ljk2OS00LjA1NyA1LjEyLTExLjQ2IDYuMDcxLTE2LjY2NiAyLjEyNGwtMjcuODI0LTIxLjA5OGMtNS4xMDctMy44NzItNi4yNTEtMTEuMDY2LTIuNjQ0LTE2LjM2M0MxODQuODQ2IDEzMS40OTEgMjE0Ljk0IDExMiAyNjEuNzk0IDExMmM0OS4wNzEgMCAxMDEuNDUgMzguMzA0IDEwMS40NSA4OC44ek0yOTggMzY4YzAgMjMuMTU5LTE4Ljg0MSA0Mi00MiA0MnMtNDItMTguODQxLTQyLTQyIDE4Ljg0MS00MiA0Mi00MiA0MiAxOC44NDEgNDIgNDJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1JlZ2lzdGVyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0wIDQ0OGMtMTEwLjUzMiAwLTIwMC04OS40NTEtMjAwLTIwMCAwLTExMC41MzEgODkuNDUxLTIwMCAyMDAtMjAwIDExMC41MzIgMCAyMDAgODkuNDUxIDIwMCAyMDAgMCAxMTAuNTMyLTg5LjQ1MSAyMDAtMjAwIDIwMHptMTEwLjQ0Mi04MS43OTFjLTUzLjA0Ni05Ni4yODQtNTAuMjUtOTEuNDY4LTUzLjI3MS05Ni4wODUgMjQuMjY3LTEzLjg3OSAzOS40ODItNDEuNTYzIDM5LjQ4Mi03My4xNzYgMC01Mi41MDMtMzAuMjQ3LTg1LjI1Mi0xMDEuNDk4LTg1LjI1MmgtNzguNjY3Yy02LjYxNyAwLTEyIDUuMzgzLTEyIDEyVjM4MGMwIDYuNjE3IDUuMzgzIDEyIDEyIDEyaDM4LjU2OGM2LjYxNyAwIDEyLTUuMzgzIDEyLTEydi04My42NjNoMzEuOTU4bDQ3LjUxNSA4OS4zMDNhMTEuOTggMTEuOTggMCAwIDAgMTAuNTkzIDYuMzZoNDIuODFjOS4xNCAwIDE0LjkxNC05Ljc5OSAxMC41MS0xNy43OTF6TTI1Ni45MzMgMjM5LjkwNmgtMzMuODc1di02NC4xNGgyNy4zNzdjMzIuNDE3IDAgMzguOTI5IDEyLjEzMyAzOC45MjkgMzEuNzA5LS4wMDEgMjAuOTEzLTExLjUxOCAzMi40MzEtMzIuNDMxIDMyLjQzMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU2FkQ3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTE0NCAzODYuNFYyODBjMC0xMy4yLTEwLjgtMjQtMjQtMjRzLTI0IDEwLjgtMjQgMjR2MTUxLjRDMzE1LjUgNDQ3IDI4Mi44IDQ1NiAyNDggNDU2cy02Ny41LTktOTYtMjQuNlYyODBjMC0xMy4yLTEwLjgtMjQtMjQtMjRzLTI0IDEwLjgtMjQgMjR2MTE0LjRjLTM0LjYtMzYtNTYtODQuNy01Ni0xMzguNCAwLTExMC4zIDg5LjctMjAwIDIwMC0yMDBzMjAwIDg5LjcgMjAwIDIwMGMwIDUzLjctMjEuNCAxMDIuNS01NiAxMzguNHpNMjA1LjggMjM0LjVjNC40LTIuNCA2LjktNy40IDYuMS0xMi40LTQtMjUuMi0zNC4yLTQyLjEtNTkuOC00Mi4xcy01NS45IDE2LjktNTkuOCA0Mi4xYy0uOCA1IDEuNyAxMCA2LjEgMTIuNCA0LjQgMi40IDkuOSAxLjggMTMuNy0xLjZsOS41LTguNWMxNC44LTEzLjIgNDYuMi0xMy4yIDYxIDBsOS41IDguNWMyLjUgMi4zIDcuOSA0LjggMTMuNyAxLjZ6TTM0NCAxODBjLTI1LjcgMC01NS45IDE2LjktNTkuOCA0Mi4xLS44IDUgMS43IDEwIDYuMSAxMi40IDQuNSAyLjQgOS45IDEuOCAxMy43LTEuNmw5LjUtOC41YzE0LjgtMTMuMiA0Ni4yLTEzLjIgNjEgMGw5LjUgOC41YzIuNSAyLjIgOCA0LjcgMTMuNyAxLjYgNC40LTIuNCA2LjktNy40IDYuMS0xMi40LTMuOS0yNS4yLTM0LjEtNDIuMS01OS44LTQyLjF6bS05NiA5MmMtMzAuOSAwLTU2IDI4LjctNTYgNjRzMjUuMSA2NCA1NiA2NCA1Ni0yOC43IDU2LTY0LTI1LjEtNjQtNTYtNjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NhZFRlYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem04LTE1MmMtMTMuMiAwLTI0IDEwLjgtMjQgMjRzMTAuOCAyNCAyNCAyNGMyMy44IDAgNDYuMyAxMC41IDYxLjYgMjguOCA4LjEgOS44IDIzLjIgMTEuOSAzMy44IDMuMSAxMC4yLTguNSAxMS42LTIzLjYgMy4xLTMzLjhDMzMwIDMyMC44IDI5NC4xIDMwNCAyNTYgMzA0em0tODgtNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0xNjAtNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyem0tMTY1LjYgOTguOEMxNTEgMjkwLjEgMTI2IDMyNS40IDEyNiAzNDIuOWMwIDIyLjcgMTguOCA0MS4xIDQyIDQxLjFzNDItMTguNCA0Mi00MS4xYzAtMTcuNS0yNS01Mi44LTM2LjQtNjguMS0yLjgtMy43LTguNC0zLjctMTEuMiAwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTYXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMy45NDEgMTI5Ljk0MWwtODMuODgyLTgzLjg4MkE0OCA0OCAwIDAgMCAzMTYuMTE4IDMySDQ4QzIxLjQ5IDMyIDAgNTMuNDkgMCA4MHYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxNjMuODgyYTQ4IDQ4IDAgMCAwLTE0LjA1OS0zMy45NDF6TTI3MiA4MHY4MEgxNDRWODBoMTI4em0xMjIgMzUySDU0YTYgNiAwIDAgMS02LTZWODZhNiA2IDAgMCAxIDYtNmg0MnYxMDRjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDE3NmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWODMuODgybDc4LjI0MyA3OC4yNDNhNiA2IDAgMCAxIDEuNzU3IDQuMjQzVjQyNmE2IDYgMCAwIDEtNiA2ek0yMjQgMjMyYy00OC41MjMgMC04OCAzOS40NzctODggODhzMzkuNDc3IDg4IDg4IDg4IDg4LTM5LjQ3NyA4OC04OC0zOS40NzctODgtODgtODh6bTAgMTI4Yy0yMi4wNTYgMC00MC0xNy45NDQtNDAtNDBzMTcuOTQ0LTQwIDQwLTQwIDQwIDE3Ljk0NCA0MCA0MC0xNy45NDQgNDAtNDAgNDB6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NoYXJlU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2MS45MzggMTU4LjA2TDQxNy45NCAxNC4wOTJDMzg3LjkyNi0xNS45MjIgMzM2IDUuMDk3IDMzNiA0OC4wMzJ2NTcuMTk4Yy00Mi40NSAxLjg4LTg0LjAzIDYuNTUtMTIwLjc2IDE3Ljk5LTM1LjE3IDEwLjk1LTYzLjA3IDI3LjU4LTgyLjkxIDQ5LjQyQzEwOC4yMiAxOTkuMiA5NiAyMzIuNiA5NiAyNzEuOTRjMCA2MS42OTcgMzMuMTc4IDExMi40NTUgODQuODcgMTQ0Ljc2IDM3LjU0NiAyMy41MDggODUuMjQ4LTEyLjY1MSA3MS4wMi01NS43NC0xNS41MTUtNDcuMTE5LTE3LjE1Ni03MC45MjMgODQuMTEtNzguNzZWMzM2YzAgNDIuOTkzIDUxLjk2OCA2My45MTMgODEuOTQgMzMuOTRsMTQzLjk5OC0xNDRjMTguNzUtMTguNzQgMTguNzUtNDkuMTQgMC02Ny44OHpNMzg0IDMzNlYyMzIuMTZDMjU1LjMwOSAyMzQuMDgyIDE2Ni40OTIgMjU1LjM1IDIwNi4zMSAzNzYgMTc2Ljc5IDM1Ny41NSAxNDQgMzI0LjA4IDE0NCAyNzEuOTRjMC0xMDkuMzM0IDEyOS4xNC0xMTguOTQ3IDI0MC0xMTkuODVWNDhsMTQ0IDE0NC0xNDQgMTQ0em0yNC43NCA4NC40OTNhODIuNjU4IDgyLjY1OCAwIDAgMCAyMC45NzQtOS4zMDNjNy45NzYtNC45NTIgMTguMjg2LjgyNiAxOC4yODYgMTAuMjE0VjQ2NGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjExMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDEzMmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQuNDg2YzAgNC45MTctMi45ODcgOS4zNjktNy41NjkgMTEuMTUyLTEzLjcwMiA1LjMzMS0yNi4zOTYgMTEuNTM3LTM4LjA1IDE4LjU4NWExMi4xMzggMTIuMTM4IDAgMCAxLTYuMjggMS43NzdINTRhNiA2IDAgMCAwLTYgNnYzNDBhNiA2IDAgMCAwIDYgNmgzNDBhNiA2IDAgMCAwIDYtNnYtMjUuOTY2YzAtNS4zNyAzLjU3OS0xMC4wNTkgOC43NC0xMS41NDF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NtaWxlQmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTg0LTE0My40Yy0yMC44IDI1LTUxLjUgMzkuNC04NCAzOS40cy02My4yLTE0LjMtODQtMzkuNGMtOC41LTEwLjItMjMuNi0xMS41LTMzLjgtMy4xLTEwLjIgOC41LTExLjUgMjMuNi0zLjEgMzMuOCAzMCAzNiA3NC4xIDU2LjYgMTIwLjkgNTYuNnM5MC45LTIwLjYgMTIwLjktNTYuNmM4LjUtMTAuMiA3LjEtMjUuMy0zLjEtMzMuOC0xMC4yLTguNC0yNS4zLTcuMS0zMy44IDMuMXpNMTM2LjUgMjExYzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy43IDYuMiA0LjcgOS4zIDMuNyAzLjYtMS4xIDYtNC41IDUuNy04LjMtMy4zLTQyLjEtMzIuMi03MS40LTU2LTcxLjRzLTUyLjcgMjkuMy01NiA3MS40Yy0uMyAzLjcgMi4xIDcuMiA1LjcgOC4zIDMuNCAxLjEgNy40LS41IDkuMy0zLjdsOS41LTE3ek0zMjggMTUyYy0yMy44IDAtNTIuNyAyOS4zLTU2IDcxLjQtLjMgMy43IDIuMSA3LjIgNS43IDguMyAzLjUgMS4xIDcuNC0uNSA5LjMtMy43bDkuNS0xN2M3LjctMTMuNyAxOS4yLTIxLjYgMzEuNS0yMS42czIzLjggNy45IDMxLjUgMjEuNmw5LjUgMTdjMi4xIDMuNyA2LjIgNC43IDkuMyAzLjcgMy42LTEuMSA2LTQuNSA1LjctOC4zLTMuMy00Mi4xLTMyLjItNzEuNC01Ni03MS40elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTbWlsZVdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0xMTcuOC0xNDYuNGMtMTAuMi04LjUtMjUuMy03LjEtMzMuOCAzLjEtMjAuOCAyNS01MS41IDM5LjQtODQgMzkuNHMtNjMuMi0xNC4zLTg0LTM5LjRjLTguNS0xMC4yLTIzLjctMTEuNS0zMy44LTMuMS0xMC4yIDguNS0xMS41IDIzLjYtMy4xIDMzLjggMzAgMzYgNzQuMSA1Ni42IDEyMC45IDU2LjZzOTAuOS0yMC42IDEyMC45LTU2LjZjOC41LTEwLjIgNy4xLTI1LjMtMy4xLTMzLjh6TTE2OCAyNDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0xNjAtNjBjLTI1LjcgMC01NS45IDE2LjktNTkuOSA0Mi4xLTEuNyAxMS4yIDExLjUgMTguMiAxOS44IDEwLjhsOS41LTguNWMxNC44LTEzLjIgNDYuMi0xMy4yIDYxIDBsOS41IDguNWM4LjUgNy40IDIxLjYuMyAxOS44LTEwLjgtMy44LTI1LjItMzQtNDIuMS01OS43LTQyLjF6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NtaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptLTgwLTIxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptNCA3Mi42Yy0yMC44IDI1LTUxLjUgMzkuNC04NCAzOS40cy02My4yLTE0LjMtODQtMzkuNGMtOC41LTEwLjItMjMuNy0xMS41LTMzLjgtMy4xLTEwLjIgOC41LTExLjUgMjMuNi0zLjEgMzMuOCAzMCAzNiA3NC4xIDU2LjYgMTIwLjkgNTYuNnM5MC45LTIwLjYgMTIwLjktNTYuNmM4LjUtMTAuMiA3LjEtMjUuMy0zLjEtMzMuOC0xMC4xLTguNC0yNS4zLTcuMS0zMy44IDMuMXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU25vd2ZsYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC4xIDM1NS4ybC0zOS4yLTIzIDM0LjEtOS4zYzguNC0yLjMgMTMuNC0xMS4xIDExLjEtMTkuNmwtNC4xLTE1LjVjLTIuMi04LjUtMTAuOS0xMy42LTE5LjMtMTEuM0wzNDMgMjk4LjIgMjcxLjIgMjU2bDcxLjktNDIuMiA3OS43IDIxLjdjOC40IDIuMyAxNy0yLjggMTkuMy0xMS4zbDQuMS0xNS41YzIuMi04LjUtMi43LTE3LjMtMTEuMS0xOS42bC0zNC4xLTkuMyAzOS4yLTIzYzcuNS00LjQgMTAuMS0xNC4yIDUuOC0yMS45bC03LjktMTMuOWMtNC4zLTcuNy0xNC0xMC4zLTIxLjUtNS45bC0zOS4yIDIzIDkuMS0zNC43YzIuMi04LjUtMi43LTE3LjMtMTEuMS0xOS42bC0xNS4yLTQuMWMtOC40LTIuMy0xNyAyLjgtMTkuMyAxMS4zbC0yMS4zIDgxLTcxLjkgNDIuMnYtODQuNUwzMDYgNzAuNGM2LjEtNi4yIDYuMS0xNi40IDAtMjIuNmwtMTEuMS0xMS4zYy02LjEtNi4yLTE2LjEtNi4yLTIyLjIgMGwtMjQuOSAyNS40VjE2YzAtOC44LTctMTYtMTUuNy0xNmgtMTUuN2MtOC43IDAtMTUuNyA3LjItMTUuNyAxNnY0Ni4xbC0yNC45LTI1LjRjLTYuMS02LjItMTYuMS02LjItMjIuMiAwTDE0Mi4xIDQ4Yy02LjEgNi4yLTYuMSAxNi40IDAgMjIuNmw1OC4zIDU5LjN2ODQuNWwtNzEuOS00Mi4yLTIxLjMtODFjLTIuMi04LjUtMTAuOS0xMy42LTE5LjMtMTEuM0w3Mi43IDg0Yy04LjQgMi4zLTEzLjQgMTEuMS0xMS4xIDE5LjZsOS4xIDM0LjctMzkuMi0yM2MtNy41LTQuNC0xNy4xLTEuOC0yMS41IDUuOWwtNy45IDEzLjljLTQuMyA3LjctMS44IDE3LjQgNS44IDIxLjlsMzkuMiAyMy0zNC4xIDkuMWMtOC40IDIuMy0xMy40IDExLjEtMTEuMSAxOS42TDYgMjI0LjJjMi4yIDguNSAxMC45IDEzLjYgMTkuMyAxMS4zbDc5LjctMjEuNyA3MS45IDQyLjItNzEuOSA0Mi4yLTc5LjctMjEuN2MtOC40LTIuMy0xNyAyLjgtMTkuMyAxMS4zbC00LjEgMTUuNWMtMi4yIDguNSAyLjcgMTcuMyAxMS4xIDE5LjZsMzQuMSA5LjMtMzkuMiAyM2MtNy41IDQuNC0xMC4xIDE0LjItNS44IDIxLjlMMTAgMzkxYzQuMyA3LjcgMTQgMTAuMyAyMS41IDUuOWwzOS4yLTIzLTkuMSAzNC43Yy0yLjIgOC41IDIuNyAxNy4zIDExLjEgMTkuNmwxNS4yIDQuMWM4LjQgMi4zIDE3LTIuOCAxOS4zLTExLjNsMjEuMy04MSA3MS45LTQyLjJ2ODQuNWwtNTguMyA1OS4zYy02LjEgNi4yLTYuMSAxNi40IDAgMjIuNmwxMS4xIDExLjNjNi4xIDYuMiAxNi4xIDYuMiAyMi4yIDBsMjQuOS0yNS40VjQ5NmMwIDguOCA3IDE2IDE1LjcgMTZoMTUuN2M4LjcgMCAxNS43LTcuMiAxNS43LTE2di00Ni4xbDI0LjkgMjUuNGM2LjEgNi4yIDE2LjEgNi4yIDIyLjIgMGwxMS4xLTExLjNjNi4xLTYuMiA2LjEtMTYuNCAwLTIyLjZsLTU4LjMtNTkuM3YtODQuNWw3MS45IDQyLjIgMjEuMyA4MWMyLjIgOC41IDEwLjkgMTMuNiAxOS4zIDExLjNMMzc1IDQyOGM4LjQtMi4zIDEzLjQtMTEuMSAxMS4xLTE5LjZsLTkuMS0zNC43IDM5LjIgMjNjNy41IDQuNCAxNy4xIDEuOCAyMS41LTUuOWw3LjktMTMuOWM0LjYtNy41IDIuMS0xNy4zLTUuNS0yMS43elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptLTYgNDAwSDU0Yy0zLjMgMC02LTIuNy02LTZWODZjMC0zLjMgMi43LTYgNi02aDM0MGMzLjMgMCA2IDIuNyA2IDZ2MzQwYzAgMy4zLTIuNyA2LTYgNnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3RhckhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDM4NS4zbC0xMjQuMyA2NS40IDIzLjctMTM4LjQtMTAwLjYtOTggMTM5LTIwLjIgNjIuMi0xMjZWMGMtMTEuNCAwLTIyLjggNS45LTI4LjcgMTcuOEwxOTQgMTUwLjIgNDcuOSAxNzEuNGMtMjYuMiAzLjgtMzYuNyAzNi4xLTE3LjcgNTQuNmwxMDUuNyAxMDMtMjUgMTQ1LjVjLTQuNSAyNi4xIDIzIDQ2IDQ2LjQgMzMuN0wyODggNDM5LjZ2LTU0LjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1N0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4LjEgMTcxLjVMMzgyIDE1MC4yIDMxNi43IDE3LjhjLTExLjctMjMuNi00NS42LTIzLjktNTcuNCAwTDE5NCAxNTAuMiA0Ny45IDE3MS41Yy0yNi4yIDMuOC0zNi43IDM2LjEtMTcuNyA1NC42bDEwNS43IDEwMy0yNSAxNDUuNWMtNC41IDI2LjMgMjMuMiA0NiA0Ni40IDMzLjdMMjg4IDQzOS42bDEzMC43IDY4LjdjMjMuMiAxMi4yIDUwLjktNy40IDQ2LjQtMzMuN2wtMjUtMTQ1LjUgMTA1LjctMTAzYzE5LTE4LjUgOC41LTUwLjgtMTcuNy01NC42ek0zODguNiAzMTIuM2wyMy43IDEzOC40TDI4OCAzODUuNGwtMTI0LjMgNjUuMyAyMy43LTEzOC40LTEwMC42LTk4IDEzOS0yMC4yIDYyLjItMTI2IDYyLjIgMTI2IDEzOSAyMC4yLTEwMC42IDk4elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTdGlja3lOb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzNDguMTA2VjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDhINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MS45ODhjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgyNjguMTE4YTQ4IDQ4IDAgMCAwIDMzLjk0MS0xNC4wNTlsODMuODgyLTgzLjg4MkE0OCA0OCAwIDAgMCA0NDggMzQ4LjEwNnptLTEyOCA4MHYtNzYuMTE4aDc2LjExOEwzMjAgNDI4LjEwNnpNNDAwIDgwdjIyMy45ODhIMjk2Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTA0SDQ4VjgwaDM1MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3RvcENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2QzUwNCAxMTkgMzkzIDggMjU2IDhTOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OHptLTQ0OCAwYzAtMTEwLjUgODkuNS0yMDAgMjAwLTIwMHMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDBTNTYgMzY2LjUgNTYgMjU2em0yOTYtODB2MTYwYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1N1biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTQuMiAyMjEuOWwtNTkuOC00MC41IDEzLjctNzFjMi42LTEzLjItMS42LTI2LjgtMTEuMS0zNi40LTkuNi05LjUtMjMuMi0xMy43LTM2LjItMTEuMWwtNzAuOSAxMy43LTQwLjQtNTkuOWMtMTUuMS0yMi4zLTUxLjktMjIuMy02NyAwbC00MC40IDU5LjktNzAuOC0xMy43Qzk4IDYwLjQgODQuNSA2NC41IDc1IDc0LjFjLTkuNSA5LjYtMTMuNyAyMy4xLTExLjEgMzYuM2wxMy43IDcxLTU5LjggNDAuNUM2LjYgMjI5LjUgMCAyNDIgMCAyNTUuNXM2LjcgMjYgMTcuOCAzMy41bDU5LjggNDAuNS0xMy43IDcxYy0yLjYgMTMuMiAxLjYgMjYuOCAxMS4xIDM2LjMgOS41IDkuNSAyMi45IDEzLjcgMzYuMyAxMS4xbDcwLjgtMTMuNyA0MC40IDU5LjlDMjMwIDUwNS4zIDI0Mi42IDUxMiAyNTYgNTEyczI2LTYuNyAzMy41LTE3LjhsNDAuNC01OS45IDcwLjkgMTMuN2MxMy40IDIuNyAyNi44LTEuNiAzNi4zLTExLjEgOS41LTkuNSAxMy42LTIzLjEgMTEuMS0zNi4zbC0xMy43LTcxIDU5LjgtNDAuNWMxMS4xLTcuNSAxNy44LTIwLjEgMTcuOC0zMy41LS4xLTEzLjYtNi43LTI2LjEtMTcuOS0zMy43em0tMTEyLjkgODUuNmwxNy42IDkxLjItOTEtMTcuNkwyNTYgNDU4bC01MS45LTc3LTkwLjkgMTcuNiAxNy42LTkxLjItNzYuOC01MiA3Ni44LTUyLTE3LjYtOTEuMiA5MSAxNy42TDI1NiA1M2w1MS45IDc2LjkgOTEtMTcuNi0xNy42IDkxLjEgNzYuOCA1Mi03Ni44IDUyLjF6TTI1NiAxNTJjLTU3LjMgMC0xMDQgNDYuNy0xMDQgMTA0czQ2LjcgMTA0IDEwNCAxMDQgMTA0LTQ2LjcgMTA0LTEwNC00Ni43LTEwNC0xMDQtMTA0em0wIDE2MGMtMzAuOSAwLTU2LTI1LjEtNTYtNTZzMjUuMS01NiA1Ni01NiA1NiAyNS4xIDU2IDU2LTI1LjEgNTYtNTYgNTZ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1N1cnByaXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMC0xNzZjLTM1LjMgMC02NCAyOC43LTY0IDY0czI4LjcgNjQgNjQgNjQgNjQtMjguNyA2NC02NC0yOC43LTY0LTY0LTY0em0tNDgtNzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyem0xMjgtMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdUaHVtYnNEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2Ni4yNyAyMjUuMzFjNC42NzQtMjIuNjQ3Ljg2NC00NC41MzgtOC45OS02Mi45OSAyLjk1OC0yMy44NjgtNC4wMjEtNDguNTY1LTE3LjM0LTY2Ljk5QzQzOC45ODYgMzkuNDIzIDQwNC4xMTcgMCAzMjcgMGMtNyAwLTE1IC4wMS0yMi4yMi4wMUMyMDEuMTk1LjAxIDE2OC45OTcgNDAgMTI4IDQwaC0xMC44NDVjLTUuNjQtNC45NzUtMTMuMDQyLTgtMjEuMTU1LThIMzJDMTQuMzI3IDMyIDAgNDYuMzI3IDAgNjR2MjQwYzAgMTcuNjczIDE0LjMyNyAzMiAzMiAzMmg2NGMxMS44NDIgMCAyMi4xNzUtNi40MzggMjcuNzA4LTE2aDcuMDUyYzE5LjE0NiAxNi45NTMgNDYuMDEzIDYwLjY1MyA2OC43NiA4My40IDEzLjY2NyAxMy42NjcgMTAuMTUzIDEwOC42IDcxLjc2IDEwOC42IDU3LjU4IDAgOTUuMjctMzEuOTM2IDk1LjI3LTEwNC43MyAwLTE4LjQxLTMuOTMtMzMuNzMtOC44NS00Ni41NGgzNi40OGM0OC42MDIgMCA4NS44Mi00MS41NjUgODUuODItODUuNTggMC0xOS4xNS00Ljk2LTM0Ljk5LTEzLjczLTQ5Ljg0ek02NCAyOTZjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHMxMC43NDUtMjQgMjQtMjQgMjQgMTAuNzQ1IDI0IDI0LTEwLjc0NSAyNC0yNCAyNHptMzMwLjE4IDE2LjczSDI5MC4xOWMwIDM3LjgyIDI4LjM2IDU1LjM3IDI4LjM2IDk0LjU0IDAgMjMuNzUgMCA1Ni43My00Ny4yNyA1Ni43My0xOC45MS0xOC45MS05LjQ2LTY2LjE4LTM3LjgyLTk0LjU0QzIwNi45IDM0Mi44OSAxNjcuMjggMjcyIDEzOC45MiAyNzJIMTI4Vjg1LjgzYzUzLjYxMSAwIDEwMC4wMDEtMzcuODIgMTcxLjY0LTM3LjgyaDM3LjgyYzM1LjUxMiAwIDYwLjgyIDE3LjEyIDUzLjEyIDY1LjkgMTUuMiA4LjE2IDI2LjUgMzYuNDQgMTMuOTQgNTcuNTcgMjEuNTgxIDIwLjM4NCAxOC42OTkgNTEuMDY1IDUuMjEgNjUuNjIgOS40NSAwIDIyLjM2IDE4LjkxIDIyLjI3IDM3LjgxLS4wOSAxOC45MS0xNi43MSAzNy44Mi0zNy44MiAzNy44MnpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnVGh1bWJzVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY2LjI3IDI4Ni42OUM0NzUuMDQgMjcxLjg0IDQ4MCAyNTYgNDgwIDIzNi44NWMwLTQ0LjAxNS0zNy4yMTgtODUuNTgtODUuODItODUuNThIMzU3LjdjNC45Mi0xMi44MSA4Ljg1LTI4LjEzIDguODUtNDYuNTRDMzY2LjU1IDMxLjkzNiAzMjguODYgMCAyNzEuMjggMGMtNjEuNjA3IDAtNTguMDkzIDk0LjkzMy03MS43NiAxMDguNi0yMi43NDcgMjIuNzQ3LTQ5LjYxNSA2Ni40NDctNjguNzYgODMuNEgzMmMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMydjI0MGMwIDE3LjY3MyAxNC4zMjcgMzIgMzIgMzJoNjRjMTQuODkzIDAgMjcuNDA4LTEwLjE3NCAzMC45NzgtMjMuOTUgNDQuNTA5IDEuMDAxIDc1LjA2IDM5Ljk0IDE3Ny44MDIgMzkuOTQgNy4yMiAwIDE1LjIyLjAxIDIyLjIyLjAxIDc3LjExNyAwIDExMS45ODYtMzkuNDIzIDExMi45NC05NS4zMyAxMy4zMTktMTguNDI1IDIwLjI5OS00My4xMjIgMTcuMzQtNjYuOTkgOS44NTQtMTguNDUyIDEzLjY2NC00MC4zNDMgOC45OS02Mi45OXptLTYxLjc1IDUzLjgzYzEyLjU2IDIxLjEzIDEuMjYgNDkuNDEtMTMuOTQgNTcuNTcgNy43IDQ4Ljc4LTE3LjYwOCA2NS45LTUzLjEyIDY1LjloLTM3LjgyYy03MS42MzkgMC0xMTguMDI5LTM3LjgyLTE3MS42NC0zNy44MlYyNDBoMTAuOTJjMjguMzYgMCA2Ny45OC03MC44OSA5NC41NC05Ny40NiAyOC4zNi0yOC4zNiAxOC45MS03NS42MyAzNy44Mi05NC41NCA0Ny4yNyAwIDQ3LjI3IDMyLjk4IDQ3LjI3IDU2LjczIDAgMzkuMTctMjguMzYgNTYuNzItMjguMzYgOTQuNTRoMTAzLjk5YzIxLjExIDAgMzcuNzMgMTguOTEgMzcuODIgMzcuODIuMDkgMTguOS0xMi44MiAzNy44MS0yMi4yNyAzNy44MSAxMy40ODkgMTQuNTU1IDE2LjM3MSA0NS4yMzYtNS4yMSA2NS42MnpNODggNDMyYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNHMtMjQtMTAuNzQ1LTI0LTI0IDEwLjc0NS0yNCAyNC0yNCAyNCAxMC43NDUgMjQgMjR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1RpbWVzQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTAgNDQ4Yy0xMTAuNSAwLTIwMC04OS41LTIwMC0yMDBTMTQ1LjUgNTYgMjU2IDU2czIwMCA4OS41IDIwMCAyMDAtODkuNSAyMDAtMjAwIDIwMHptMTAxLjgtMjYyLjJMMjk1LjYgMjU2bDYyLjIgNjIuMmM0LjcgNC43IDQuNyAxMi4zIDAgMTdsLTIyLjYgMjIuNmMtNC43IDQuNy0xMi4zIDQuNy0xNyAwTDI1NiAyOTUuNmwtNjIuMiA2Mi4yYy00LjcgNC43LTEyLjMgNC43LTE3IDBsLTIyLjYtMjIuNmMtNC43LTQuNy00LjctMTIuMyAwLTE3bDYyLjItNjIuMi02Mi4yLTYyLjJjLTQuNy00LjctNC43LTEyLjMgMC0xN2wyMi42LTIyLjZjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDYyLjIgNjIuMiA2Mi4yLTYyLjJjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDIyLjYgMjIuNmM0LjcgNC43IDQuNyAxMi4zIDAgMTd6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1RpcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMTI5LjEtMzAzLjhjLTMuOC00LjQtMTAuMy01LjQtMTUuMy0yLjVsLTgwIDQ4Yy0zLjYgMi4yLTUuOCA2LjEtNS44IDEwLjNzMi4yIDguMSA1LjggMTAuM2w4MCA0OGM1LjQgMy4yIDExLjggMS42IDE1LjMtMi41IDMuOC00LjUgMy45LTExIC4xLTE1LjVMMzQzLjYgMjA4bDMzLjYtNDAuM2MzLjgtNC41IDMuNy0xMS4xLS4xLTE1LjV6TTIyMCAyMDhjMC00LjItMi4yLTguMS01LjgtMTAuM2wtODAtNDhjLTUtMy0xMS41LTEuOS0xNS4zIDIuNS0zLjggNC41LTMuOSAxMS0uMSAxNS41bDMzLjYgNDAuMy0zMy42IDQwLjNjLTMuOCA0LjUtMy43IDExIC4xIDE1LjUgMy41IDQuMSA5LjkgNS43IDE1LjMgMi41bDgwLTQ4YzMuNi0yLjIgNS44LTYuMSA1LjgtMTAuM3ptMjggNjRjLTQ1LjQgMC0xMDAuOSAzOC4zLTEwNy44IDkzLjMtMS41IDExLjggNi45IDIxLjYgMTUuNSAxNy45QzE3OC40IDM3My41IDIxMiAzNjggMjQ4IDM2OHM2OS42IDUuNSA5Mi4zIDE1LjJjOC41IDMuNyAxNy02IDE1LjUtMTcuOS02LjktNTUtNjIuNC05My4zLTEwNy44LTkzLjN6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1RyYXNoQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2OCA0MTZoMjRhMTIgMTIgMCAwIDAgMTItMTJWMTg4YTEyIDEyIDAgMCAwLTEyLTEyaC0yNGExMiAxMiAwIDAgMC0xMiAxMnYyMTZhMTIgMTIgMCAwIDAgMTIgMTJ6TTQzMiA4MGgtODIuNDFsLTM0LTU2LjdBNDggNDggMCAwIDAgMjc0LjQxIDBIMTczLjU5YTQ4IDQ4IDAgMCAwLTQxLjE2IDIzLjNMOTguNDEgODBIMTZBMTYgMTYgMCAwIDAgMCA5NnYxNmExNiAxNiAwIDAgMCAxNiAxNmgxNnYzMzZhNDggNDggMCAwIDAgNDggNDhoMjg4YTQ4IDQ4IDAgMCAwIDQ4LTQ4VjEyOGgxNmExNiAxNiAwIDAgMCAxNi0xNlY5NmExNiAxNiAwIDAgMC0xNi0xNnpNMTcxLjg0IDUwLjkxQTYgNiAwIDAgMSAxNzcgNDhoOTRhNiA2IDAgMCAxIDUuMTUgMi45MUwyOTMuNjEgODBIMTU0LjM5ek0zNjggNDY0SDgwVjEyOGgyODh6bS0yMTItNDhoMjRhMTIgMTIgMCAwIDAgMTItMTJWMTg4YTEyIDEyIDAgMCAwLTEyLTEyaC0yNGExMiAxMiAwIDAgMC0xMiAxMnYyMTZhMTIgMTIgMCAwIDAgMTIgMTJ6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1VzZXJDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDEwNGMtNTMgMC05NiA0My05NiA5NnM0MyA5NiA5NiA5NiA5Ni00MyA5Ni05Ni00My05Ni05Ni05NnptMCAxNDRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em0wLTI0MEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtNDkuNyAwLTk1LjEtMTguMy0xMzAuMS00OC40IDE0LjktMjMgNDAuNC0zOC42IDY5LjYtMzkuNSAyMC44IDYuNCA0MC42IDkuNiA2MC41IDkuNnMzOS43LTMuMSA2MC41LTkuNmMyOS4yIDEgNTQuNyAxNi41IDY5LjYgMzkuNS0zNSAzMC4xLTgwLjQgNDguNC0xMzAuMSA0OC40em0xNjIuNy04NC4xYy0yNC40LTMxLjQtNjIuMS01MS45LTEwNS4xLTUxLjktMTAuMiAwLTI2IDkuNi01Ny42IDkuNi0zMS41IDAtNDcuNC05LjYtNTcuNi05LjYtNDIuOSAwLTgwLjYgMjAuNS0xMDUuMSA1MS45QzYxLjkgMzM5LjIgNDggMjk5LjIgNDggMjU2YzAtMTEwLjMgODkuNy0yMDAgMjAwLTIwMHMyMDAgODkuNyAyMDAgMjAwYzAgNDMuMi0xMy45IDgzLjItMzcuMyAxMTUuOXpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuNiAzMDRjLTI4LjcgMC00Mi41IDE2LTg5LjYgMTYtNDcuMSAwLTYwLjgtMTYtODkuNi0xNkM2MC4yIDMwNCAwIDM2NC4yIDAgNDM4LjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OHYtMjUuNmMwLTc0LjItNjAuMi0xMzQuNC0xMzQuNC0xMzQuNHpNNDAwIDQ2NEg0OHYtMjUuNmMwLTQ3LjYgMzguOC04Ni40IDg2LjQtODYuNCAxNC42IDAgMzguMyAxNiA4OS42IDE2IDUxLjcgMCA3NC45LTE2IDg5LjYtMTYgNDcuNiAwIDg2LjQgMzguOCA4Ni40IDg2LjRWNDY0ek0yMjQgMjg4Yzc5LjUgMCAxNDQtNjQuNSAxNDQtMTQ0UzMwMy41IDAgMjI0IDAgODAgNjQuNSA4MCAxNDRzNjQuNSAxNDQgMTQ0IDE0NHptMC0yNDBjNTIuOSAwIDk2IDQzLjEgOTYgOTZzLTQzLjEgOTYtOTYgOTYtOTYtNDMuMS05Ni05NiA0My4xLTk2IDk2LTk2elwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdXaW5kb3dDbG9zZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0wIDM5NGMwIDMuMy0yLjcgNi02IDZINTRjLTMuMyAwLTYtMi43LTYtNlY4NmMwLTMuMyAyLjctNiA2LTZoNDA0YzMuMyAwIDYgMi43IDYgNnYzNDB6TTM1Ni41IDE5NC42TDI5NS4xIDI1Nmw2MS40IDYxLjRjNC42IDQuNiA0LjYgMTIuMSAwIDE2LjhsLTIyLjMgMjIuM2MtNC42IDQuNi0xMi4xIDQuNi0xNi44IDBMMjU2IDI5NS4xbC02MS40IDYxLjRjLTQuNiA0LjYtMTIuMSA0LjYtMTYuOCAwbC0yMi4zLTIyLjNjLTQuNi00LjYtNC42LTEyLjEgMC0xNi44bDYxLjQtNjEuNC02MS40LTYxLjRjLTQuNi00LjYtNC42LTEyLjEgMC0xNi44bDIyLjMtMjIuM2M0LjYtNC42IDEyLjEtNC42IDE2LjggMGw2MS40IDYxLjQgNjEuNC02MS40YzQuNi00LjYgMTIuMS00LjYgMTYuOCAwbDIyLjMgMjIuM2M0LjcgNC42IDQuNyAxMi4xIDAgMTYuOHpcIn0sXCJjaGlsZFwiOltdfV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnV2luZG93TWF4aW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptMCAzOTRjMCAzLjMtMi43IDYtNiA2SDU0Yy0zLjMgMC02LTIuNy02LTZWMTkyaDQxNnYyMzR6XCJ9LFwiY2hpbGRcIjpbXX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1dpbmRvd01pbmltaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCA0ODBIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoNDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdXaW5kb3dSZXN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAwSDE0NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2NDhINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djMyMGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzMjBjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQ4aDQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tOTYgNDY0SDQ4VjI1NmgzMjB2MjA4em05Ni05NmgtNDhWMTQ0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDE0NFY0OGgzMjB2MzIwelwifSxcImNoaWxkXCI6W119XX0pKHByb3BzKTtcbn07XG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBGYUJhcnMgfSBmcm9tICdyZWFjdC1pY29ucy9mYSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VOYXZiYXJDb250ZXh0IH0gZnJvbSAnLi9OYXZiYXJDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IE5hdmJhclRvZ2dsZSA9ICh7XG4gIGJhckljb246IEJhckljb24gPSBGYUJhcnMsXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgaXNPcGVuLCBzZXRJc09wZW4gfSA9IHVzZU5hdmJhckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLnRvZ2dsZSwgY3VzdG9tVGhlbWUpO1xuICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICBzZXRJc09wZW4oIWlzT3Blbik7XG4gIH07XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICBcImJ1dHRvblwiLFxuICAgIHtcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1uYXZiYXItdG9nZ2xlXCIsXG4gICAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogXCJzci1vbmx5XCIsIGNoaWxkcmVuOiBcIk9wZW4gbWFpbiBtZW51XCIgfSksXG4gICAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goQmFySWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuaWNvbiB9KVxuICAgICAgXVxuICAgIH1cbiAgKTtcbn07XG5cbmV4cG9ydCB7IE5hdmJhclRvZ2dsZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TmF2YmFyVG9nZ2xlLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgTmF2YmFyQnJhbmQgfSBmcm9tICcuL05hdmJhckJyYW5kLm1qcyc7XG5pbXBvcnQgeyBOYXZiYXJDb2xsYXBzZSB9IGZyb20gJy4vTmF2YmFyQ29sbGFwc2UubWpzJztcbmltcG9ydCB7IE5hdmJhckNvbnRleHQgfSBmcm9tICcuL05hdmJhckNvbnRleHQubWpzJztcbmltcG9ydCB7IE5hdmJhckxpbmsgfSBmcm9tICcuL05hdmJhckxpbmsubWpzJztcbmltcG9ydCB7IE5hdmJhclRvZ2dsZSB9IGZyb20gJy4vTmF2YmFyVG9nZ2xlLm1qcyc7XG5cbmNvbnN0IE5hdmJhckNvbXBvbmVudCA9ICh7XG4gIGJvcmRlcixcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgZmx1aWQgPSBmYWxzZSxcbiAgbWVudU9wZW4sXG4gIHJvdW5kZWQsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUobWVudU9wZW4pO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLm5hdmJhciwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChOYXZiYXJDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IHRoZW1lLCBpc09wZW4sIHNldElzT3BlbiB9LCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcIm5hdlwiLFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgdGhlbWUucm9vdC5iYXNlLFxuICAgICAgICB0aGVtZS5yb290LmJvcmRlcmVkW2JvcmRlciA/IFwib25cIiA6IFwib2ZmXCJdLFxuICAgICAgICB0aGVtZS5yb290LnJvdW5kZWRbcm91bmRlZCA/IFwib25cIiA6IFwib2ZmXCJdLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3QuaW5uZXIuYmFzZSwgdGhlbWUucm9vdC5pbm5lci5mbHVpZFtmbHVpZCA/IFwib25cIiA6IFwib2ZmXCJdKSwgY2hpbGRyZW4gfSlcbiAgICB9XG4gICkgfSk7XG59O1xuTmF2YmFyQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJOYXZiYXJcIjtcbk5hdmJhckJyYW5kLmRpc3BsYXlOYW1lID0gXCJOYXZiYXIuQnJhbmRcIjtcbk5hdmJhckNvbGxhcHNlLmRpc3BsYXlOYW1lID0gXCJOYXZiYXIuQ29sbGFwc2VcIjtcbk5hdmJhckxpbmsuZGlzcGxheU5hbWUgPSBcIk5hdmJhci5MaW5rXCI7XG5OYXZiYXJUb2dnbGUuZGlzcGxheU5hbWUgPSBcIk5hdmJhci5Ub2dnbGVcIjtcbmNvbnN0IE5hdmJhciA9IE9iamVjdC5hc3NpZ24oTmF2YmFyQ29tcG9uZW50LCB7XG4gIEJyYW5kOiBOYXZiYXJCcmFuZCxcbiAgQ29sbGFwc2U6IE5hdmJhckNvbGxhcHNlLFxuICBMaW5rOiBOYXZiYXJMaW5rLFxuICBUb2dnbGU6IE5hdmJhclRvZ2dsZVxufSk7XG5cbmV4cG9ydCB7IE5hdmJhciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TmF2YmFyLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VJZCwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBEcm9wZG93biB9IGZyb20gJy4uL0Ryb3Bkb3duL0Ryb3Bkb3duLm1qcyc7XG5pbXBvcnQgJy4uL0Ryb3Bkb3duL0Ryb3Bkb3duQ29udGV4dC5tanMnO1xuaW1wb3J0ICcuLi9Ecm9wZG93bi9Ecm9wZG93bkl0ZW0ubWpzJztcblxuY29uc3QgTWVnYU1lbnVEcm9wZG93biA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICB0b2dnbGUsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IFtsYWJlbGxlZEJ5LCBzZXRMYWJlbGxlZEJ5XSA9IHVzZVN0YXRlKHZvaWQgMCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkubWVnYU1lbnUuZHJvcGRvd24sIGN1c3RvbVRoZW1lKTtcbiAgaWYgKHRvZ2dsZSkge1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgRHJvcGRvd24sXG4gICAgICB7XG4gICAgICAgIGlubGluZTogdHJ1ZSxcbiAgICAgICAgbGFiZWw6IHRvZ2dsZSxcbiAgICAgICAgcGxhY2VtZW50OiBcImJvdHRvbVwiLFxuICAgICAgICB0aGVtZTogdGhlbWUudG9nZ2xlLFxuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSxcbiAgICAgICAgY2hpbGRyZW5cbiAgICAgIH1cbiAgICApO1xuICB9XG4gIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgY29uc3QgcmVmID0gdXNlUmVmKG51bGwpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGZpbmRUb2dnbGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIGNvbnN0IG1lZ2FNZW51ID0gcmVmLmN1cnJlbnQ/LmNsb3Nlc3QoXCJuYXZcIik7XG4gICAgICByZXR1cm4gbWVnYU1lbnU/LnF1ZXJ5U2VsZWN0b3IoJ1thcmlhLWhhc3BvcHVwPVwibWVudVwiXScpO1xuICAgIH07XG4gICAgc2V0TGFiZWxsZWRCeShmaW5kVG9nZ2xlKCk/LmlkKTtcbiAgfSwgW10pO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGxhYmVsbGVkQnksXG4gICAgICBpZCxcbiAgICAgIHJlZixcbiAgICAgIHJvbGU6IFwibWVudVwiLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApO1xufTtcbk1lZ2FNZW51RHJvcGRvd24uZGlzcGxheU5hbWUgPSBcIk1lZ2FNZW51LkRyb3Bkb3duXCI7XG5cbmV4cG9ydCB7IE1lZ2FNZW51RHJvcGRvd24gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1lZ2FNZW51RHJvcGRvd24ubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdXNlSWQsIHVzZVJlZiwgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgTWVnYU1lbnVEcm9wZG93blRvZ2dsZSA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCBpZCA9IHVzZUlkKCk7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgW2NvbnRyb2xzLCBzZXRDb250cm9sc10gPSB1c2VTdGF0ZSh2b2lkIDApO1xuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0RXhwYW5kZWRdID0gdXNlU3RhdGUodm9pZCAwKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoZ2V0VGhlbWUoKS5tZWdhTWVudS5kcm9wZG93blRvZ2dsZSwgY3VzdG9tVGhlbWUpO1xuICBjb25zdCBmaW5kRHJvcGRvd24gPSBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBtZWdhTWVudSA9IHJlZi5jdXJyZW50Py5jbG9zZXN0KFwibmF2XCIpO1xuICAgIHJldHVybiBtZWdhTWVudT8ucXVlcnlTZWxlY3RvcignW3JvbGU9XCJtZW51XCJdJyk7XG4gIH07XG4gIGNvbnN0IG9uQ2xpY2sgPSBmdW5jdGlvbigpIHtcbiAgICBmaW5kRHJvcGRvd24oKT8uY2xhc3NMaXN0LnRvZ2dsZShcImhpZGRlblwiKTtcbiAgICBzZXRFeHBhbmRlZCghaXNFeHBhbmRlZCk7XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZHJvcGRvd24gPSBmaW5kRHJvcGRvd24oKTtcbiAgICBjb25zdCBpc0Ryb3Bkb3duSGlkZGVuID0gZHJvcGRvd24/LmNsYXNzTGlzdC5jb250YWlucyhcImhpZGRlblwiKTtcbiAgICBzZXRDb250cm9scyhkcm9wZG93bj8uaWQpO1xuICAgIHNldEV4cGFuZGVkKCFpc0Ryb3Bkb3duSGlkZGVuKTtcbiAgfSwgW10pO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcImJ1dHRvblwiLFxuICAgIHtcbiAgICAgIFwiYXJpYS1jb250cm9sc1wiOiBjb250cm9scyxcbiAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBpc0V4cGFuZGVkLFxuICAgICAgXCJhcmlhLWhhc3BvcHVwXCI6IFwibWVudVwiLFxuICAgICAgaWQsXG4gICAgICBvbkNsaWNrLFxuICAgICAgcmVmLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApO1xufTtcbk1lZ2FNZW51RHJvcGRvd25Ub2dnbGUuZGlzcGxheU5hbWUgPSBcIk1lZ2FNZW51LkRyb3Bkb3duVG9nZ2xlXCI7XG5cbmV4cG9ydCB7IE1lZ2FNZW51RHJvcGRvd25Ub2dnbGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1lZ2FNZW51RHJvcGRvd25Ub2dnbGUubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyBOYXZiYXIgfSBmcm9tICcuLi9OYXZiYXIvTmF2YmFyLm1qcyc7XG5pbXBvcnQgJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCAnLi4vTmF2YmFyL05hdmJhckNvbnRleHQubWpzJztcbmltcG9ydCAncmVhY3QtaWNvbnMvZmEnO1xuaW1wb3J0IHsgTWVnYU1lbnVEcm9wZG93biB9IGZyb20gJy4vTWVnYU1lbnVEcm9wZG93bi5tanMnO1xuaW1wb3J0IHsgTWVnYU1lbnVEcm9wZG93blRvZ2dsZSB9IGZyb20gJy4vTWVnYU1lbnVEcm9wZG93blRvZ2dsZS5tanMnO1xuXG5jb25zdCBNZWdhTWVudUNvbXBvbmVudCA9ICh7IGNoaWxkcmVuLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLm1lZ2FNZW51LCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KE5hdmJhciwgeyBmbHVpZDogdHJ1ZSwgdGhlbWUsIC4uLnByb3BzLCBjaGlsZHJlbiB9KTtcbn07XG5jb25zdCBNZWdhTWVudSA9IE9iamVjdC5hc3NpZ24oTWVnYU1lbnVDb21wb25lbnQsIHtcbiAgRHJvcGRvd246IE1lZ2FNZW51RHJvcGRvd24sXG4gIERyb3Bkb3duVG9nZ2xlOiBNZWdhTWVudURyb3Bkb3duVG9nZ2xlXG59KTtcbk1lZ2FNZW51Q29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJNZWdhTWVudVwiO1xuXG5leHBvcnQgeyBNZWdhTWVudSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TWVnYU1lbnUubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgTW9kYWxDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuZnVuY3Rpb24gdXNlTW9kYWxDb250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChNb2RhbENvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VNb2RhbENvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBNb2RhbENvbnRleHQgcHJvdmlkZXIhXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgeyBNb2RhbENvbnRleHQsIHVzZU1vZGFsQ29udGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TW9kYWxDb250ZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZU1vZGFsQ29udGV4dCB9IGZyb20gJy4vTW9kYWxDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IE1vZGFsQm9keSA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgcG9wdXAgfSA9IHVzZU1vZGFsQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuYm9keSwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBwb3B1cCAmJiBbdGhlbWUucG9wdXBdLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW4gfSk7XG59O1xuXG5leHBvcnQgeyBNb2RhbEJvZHkgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1vZGFsQm9keS5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VNb2RhbENvbnRleHQgfSBmcm9tICcuL01vZGFsQ29udGV4dC5tanMnO1xuXG5jb25zdCBNb2RhbEZvb3RlciA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgcG9wdXAgfSA9IHVzZU1vZGFsQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuZm9vdGVyLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsICFwb3B1cCAmJiB0aGVtZS5wb3B1cCwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcblxuZXhwb3J0IHsgTW9kYWxGb290ZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1vZGFsRm9vdGVyLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZUlkLCB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBIaU91dGxpbmVYIH0gZnJvbSAncmVhY3QtaWNvbnMvaGknO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlTW9kYWxDb250ZXh0IH0gZnJvbSAnLi9Nb2RhbENvbnRleHQubWpzJztcblxuY29uc3QgTW9kYWxIZWFkZXIgPSAoe1xuICBhczogQ29tcG9uZW50ID0gXCJoM1wiLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgaWQsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IGlubmVySGVhZGVySWQgPSB1c2VJZCgpO1xuICBjb25zdCBoZWFkZXJJZCA9IGlkIHx8IGlubmVySGVhZGVySWQ7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgcG9wdXAsIG9uQ2xvc2UsIHNldEhlYWRlcklkIH0gPSB1c2VNb2RhbENvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLmhlYWRlciwgY3VzdG9tVGhlbWUpO1xuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIHNldEhlYWRlcklkKGhlYWRlcklkKTtcbiAgICByZXR1cm4gKCkgPT4gc2V0SGVhZGVySWQodm9pZCAwKTtcbiAgfSwgW2hlYWRlcklkLCBzZXRIZWFkZXJJZF0pO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgcG9wdXAgJiYgdGhlbWUucG9wdXAsIGNsYXNzTmFtZSksIC4uLnByb3BzLCBjaGlsZHJlbjogW1xuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goQ29tcG9uZW50LCB7IGlkOiBoZWFkZXJJZCwgY2xhc3NOYW1lOiB0aGVtZS50aXRsZSwgY2hpbGRyZW4gfSksXG4gICAgLyogQF9fUFVSRV9fICovIGpzeChcImJ1dHRvblwiLCB7IFwiYXJpYS1sYWJlbFwiOiBcIkNsb3NlXCIsIGNsYXNzTmFtZTogdGhlbWUuY2xvc2UuYmFzZSwgdHlwZTogXCJidXR0b25cIiwgb25DbGljazogb25DbG9zZSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goSGlPdXRsaW5lWCwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuY2xvc2UuaWNvbiB9KSB9KVxuICBdIH0pO1xufTtcblxuZXhwb3J0IHsgTW9kYWxIZWFkZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1vZGFsSGVhZGVyLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHVzZUZsb2F0aW5nLCB1c2VNZXJnZVJlZnMsIHVzZUNsaWNrLCB1c2VEaXNtaXNzLCB1c2VSb2xlLCB1c2VJbnRlcmFjdGlvbnMsIEZsb2F0aW5nUG9ydGFsLCBGbG9hdGluZ092ZXJsYXksIEZsb2F0aW5nRm9jdXNNYW5hZ2VyIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3JlYWN0JztcbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgTW9kYWxCb2R5IH0gZnJvbSAnLi9Nb2RhbEJvZHkubWpzJztcbmltcG9ydCB7IE1vZGFsQ29udGV4dCB9IGZyb20gJy4vTW9kYWxDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBNb2RhbEZvb3RlciB9IGZyb20gJy4vTW9kYWxGb290ZXIubWpzJztcbmltcG9ydCB7IE1vZGFsSGVhZGVyIH0gZnJvbSAnLi9Nb2RhbEhlYWRlci5tanMnO1xuXG5jb25zdCBNb2RhbENvbXBvbmVudCA9IGZvcndhcmRSZWYoXG4gICh7XG4gICAgY2hpbGRyZW4sXG4gICAgY2xhc3NOYW1lLFxuICAgIGRpc21pc3NpYmxlID0gZmFsc2UsXG4gICAgb25DbG9zZSxcbiAgICBwb3B1cCxcbiAgICBwb3NpdGlvbiA9IFwiY2VudGVyXCIsXG4gICAgcm9vdCxcbiAgICBzaG93LFxuICAgIHNpemUgPSBcIjJ4bFwiLFxuICAgIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAgIGluaXRpYWxGb2N1cyxcbiAgICAuLi5wcm9wc1xuICB9LCB0aGVpclJlZikgPT4ge1xuICAgIGNvbnN0IFtoZWFkZXJJZCwgc2V0SGVhZGVySWRdID0gdXNlU3RhdGUodm9pZCAwKTtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLm1vZGFsLCBjdXN0b21UaGVtZSk7XG4gICAgY29uc3QgeyBjb250ZXh0IH0gPSB1c2VGbG9hdGluZyh7XG4gICAgICBvcGVuOiBzaG93LFxuICAgICAgb25PcGVuQ2hhbmdlOiAoKSA9PiBvbkNsb3NlICYmIG9uQ2xvc2UoKVxuICAgIH0pO1xuICAgIGNvbnN0IHJlZiA9IHVzZU1lcmdlUmVmcyhbY29udGV4dC5yZWZzLnNldEZsb2F0aW5nLCB0aGVpclJlZl0pO1xuICAgIGNvbnN0IGNsaWNrID0gdXNlQ2xpY2soY29udGV4dCk7XG4gICAgY29uc3QgZGlzbWlzcyA9IHVzZURpc21pc3MoY29udGV4dCwgeyBvdXRzaWRlUHJlc3NFdmVudDogXCJtb3VzZWRvd25cIiwgZW5hYmxlZDogZGlzbWlzc2libGUgfSk7XG4gICAgY29uc3Qgcm9sZSA9IHVzZVJvbGUoY29udGV4dCk7XG4gICAgY29uc3QgeyBnZXRGbG9hdGluZ1Byb3BzIH0gPSB1c2VJbnRlcmFjdGlvbnMoW2NsaWNrLCBkaXNtaXNzLCByb2xlXSk7XG4gICAgaWYgKCFzaG93KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goTW9kYWxDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IHRoZW1lLCBwb3B1cCwgb25DbG9zZSwgc2V0SGVhZGVySWQgfSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goRmxvYXRpbmdQb3J0YWwsIHsgcm9vdCwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBGbG9hdGluZ092ZXJsYXksXG4gICAgICB7XG4gICAgICAgIGxvY2tTY3JvbGw6IHRydWUsXG4gICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJtb2RhbC1vdmVybGF5XCIsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShcbiAgICAgICAgICB0aGVtZS5yb290LmJhc2UsXG4gICAgICAgICAgdGhlbWUucm9vdC5wb3NpdGlvbnNbcG9zaXRpb25dLFxuICAgICAgICAgIHNob3cgPyB0aGVtZS5yb290LnNob3cub24gOiB0aGVtZS5yb290LnNob3cub2ZmLFxuICAgICAgICAgIGNsYXNzTmFtZVxuICAgICAgICApLFxuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goRmxvYXRpbmdGb2N1c01hbmFnZXIsIHsgY29udGV4dCwgaW5pdGlhbEZvY3VzLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgIC4uLmdldEZsb2F0aW5nUHJvcHMocHJvcHMpLFxuICAgICAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogaGVhZGVySWQsXG4gICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuY29udGVudC5iYXNlLCB0aGVtZS5yb290LnNpemVzW3NpemVdKSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5jb250ZW50LmlubmVyLCBjaGlsZHJlbiB9KVxuICAgICAgICAgIH1cbiAgICAgICAgKSB9KVxuICAgICAgfVxuICAgICkgfSkgfSk7XG4gIH1cbik7XG5Nb2RhbENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiTW9kYWxcIjtcbk1vZGFsSGVhZGVyLmRpc3BsYXlOYW1lID0gXCJNb2RhbC5IZWFkZXJcIjtcbk1vZGFsQm9keS5kaXNwbGF5TmFtZSA9IFwiTW9kYWwuQm9keVwiO1xuTW9kYWxGb290ZXIuZGlzcGxheU5hbWUgPSBcIk1vZGFsLkZvb3RlclwiO1xuY29uc3QgTW9kYWwgPSBPYmplY3QuYXNzaWduKE1vZGFsQ29tcG9uZW50LCB7XG4gIEhlYWRlcjogTW9kYWxIZWFkZXIsXG4gIEJvZHk6IE1vZGFsQm9keSxcbiAgRm9vdGVyOiBNb2RhbEZvb3RlclxufSk7XG5cbmV4cG9ydCB7IE1vZGFsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Nb2RhbC5tanMubWFwXG4iLCJjb25zdCByYW5nZSA9IChzdGFydCwgZW5kKSA9PiB7XG4gIGlmIChzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIFsuLi5BcnJheShlbmQgLSBzdGFydCArIDEpLmtleXMoKV0ubWFwKChrZXkpID0+IGtleSArIHN0YXJ0KTtcbn07XG5cbmV4cG9ydCB7IHJhbmdlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1oZWxwZXJzLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgUGFnaW5hdGlvbkJ1dHRvbiA9ICh7XG4gIGFjdGl2ZSxcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgb25DbGljayxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkucGFnaW5hdGlvbiwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcImJ1dHRvblwiLFxuICAgIHtcbiAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoYWN0aXZlICYmIHRoZW1lLnBhZ2VzLnNlbGVjdG9yLmFjdGl2ZSwgY2xhc3NOYW1lKSxcbiAgICAgIG9uQ2xpY2ssXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApO1xufTtcblBhZ2luYXRpb25CdXR0b24uZGlzcGxheU5hbWUgPSBcIlBhZ2luYXRpb24uQnV0dG9uXCI7XG5jb25zdCBQYWdpbmF0aW9uTmF2aWdhdGlvbiA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIG9uQ2xpY2ssXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnBhZ2luYXRpb24sIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJidXR0b25cIixcbiAgICB7XG4gICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKGRpc2FibGVkICYmIHRoZW1lLnBhZ2VzLnNlbGVjdG9yLmRpc2FibGVkLCBjbGFzc05hbWUpLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBvbkNsaWNrLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlblxuICAgIH1cbiAgKTtcbn07XG5QYWdpbmF0aW9uTmF2aWdhdGlvbi5kaXNwbGF5TmFtZSA9IFwiUGFnaW5hdGlvbi5OYXZpZ2F0aW9uXCI7XG5cbmV4cG9ydCB7IFBhZ2luYXRpb25CdXR0b24sIFBhZ2luYXRpb25OYXZpZ2F0aW9uIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1QYWdpbmF0aW9uQnV0dG9uLm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IEhpQ2hldnJvbkxlZnQsIEhpQ2hldnJvblJpZ2h0IH0gZnJvbSAncmVhY3QtaWNvbnMvaGknO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgcmFuZ2UgfSBmcm9tICcuL2hlbHBlcnMubWpzJztcbmltcG9ydCB7IFBhZ2luYXRpb25CdXR0b24sIFBhZ2luYXRpb25OYXZpZ2F0aW9uIH0gZnJvbSAnLi9QYWdpbmF0aW9uQnV0dG9uLm1qcyc7XG5cbmNvbnN0IFBhZ2luYXRpb25Db21wb25lbnQgPSAoe1xuICBjbGFzc05hbWUsXG4gIGN1cnJlbnRQYWdlLFxuICBsYXlvdXQgPSBcInBhZ2luYXRpb25cIixcbiAgbmV4dExhYmVsID0gXCJOZXh0XCIsXG4gIG9uUGFnZUNoYW5nZSxcbiAgcHJldmlvdXNMYWJlbCA9IFwiUHJldmlvdXNcIixcbiAgcmVuZGVyUGFnaW5hdGlvbkJ1dHRvbiA9IChwcm9wczIpID0+IC8qIEBfX1BVUkVfXyAqLyBqc3goUGFnaW5hdGlvbkJ1dHRvbiwgeyAuLi5wcm9wczIgfSksXG4gIHNob3dJY29uczogc2hvd0ljb24gPSBmYWxzZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIHRvdGFsUGFnZXMsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkucGFnaW5hdGlvbiwgY3VzdG9tVGhlbWUpO1xuICBjb25zdCBsYXN0UGFnZSA9IE1hdGgubWluKE1hdGgubWF4KGxheW91dCA9PT0gXCJwYWdpbmF0aW9uXCIgPyBjdXJyZW50UGFnZSArIDIgOiBjdXJyZW50UGFnZSArIDQsIDUpLCB0b3RhbFBhZ2VzKTtcbiAgY29uc3QgZmlyc3RQYWdlID0gTWF0aC5tYXgoMSwgbGFzdFBhZ2UgLSA0KTtcbiAgY29uc3QgZ29Ub05leHRQYWdlID0gKCkgPT4ge1xuICAgIG9uUGFnZUNoYW5nZShNYXRoLm1pbihjdXJyZW50UGFnZSArIDEsIHRvdGFsUGFnZXMpKTtcbiAgfTtcbiAgY29uc3QgZ29Ub1ByZXZpb3VzUGFnZSA9ICgpID0+IHtcbiAgICBvblBhZ2VDaGFuZ2UoTWF0aC5tYXgoY3VycmVudFBhZ2UgLSAxLCAxKSk7XG4gIH07XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcIm5hdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW46IFtcbiAgICBsYXlvdXQgPT09IFwidGFibGVcIiAmJiAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUubGF5b3V0LnRhYmxlLmJhc2UsIGNoaWxkcmVuOiBbXG4gICAgICBcIlNob3dpbmcgXCIsXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUubGF5b3V0LnRhYmxlLnNwYW4sIGNoaWxkcmVuOiBmaXJzdFBhZ2UgfSksXG4gICAgICBcIiB0b1xceEEwXCIsXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUubGF5b3V0LnRhYmxlLnNwYW4sIGNoaWxkcmVuOiBsYXN0UGFnZSB9KSxcbiAgICAgIFwiIG9mXFx4QTBcIixcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5sYXlvdXQudGFibGUuc3BhbiwgY2hpbGRyZW46IHRvdGFsUGFnZXMgfSksXG4gICAgICBcIiBFbnRyaWVzXCJcbiAgICBdIH0pLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwidWxcIiwgeyBjbGFzc05hbWU6IHRoZW1lLnBhZ2VzLmJhc2UsIGNoaWxkcmVuOiBbXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwibGlcIiwgeyBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeHMoXG4gICAgICAgIFBhZ2luYXRpb25OYXZpZ2F0aW9uLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnBhZ2VzLnByZXZpb3VzLmJhc2UsIHNob3dJY29uICYmIHRoZW1lLnBhZ2VzLnNob3dJY29uKSxcbiAgICAgICAgICBvbkNsaWNrOiBnb1RvUHJldmlvdXNQYWdlLFxuICAgICAgICAgIGRpc2FibGVkOiBjdXJyZW50UGFnZSA9PT0gMSxcbiAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgc2hvd0ljb24gJiYgLyogQF9fUFVSRV9fICovIGpzeChIaUNoZXZyb25MZWZ0LCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgY2xhc3NOYW1lOiB0aGVtZS5wYWdlcy5wcmV2aW91cy5pY29uIH0pLFxuICAgICAgICAgICAgcHJldmlvdXNMYWJlbFxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKSB9KSxcbiAgICAgIGxheW91dCA9PT0gXCJwYWdpbmF0aW9uXCIgJiYgcmFuZ2UoZmlyc3RQYWdlLCBsYXN0UGFnZSkubWFwKChwYWdlKSA9PiAvKiBAX19QVVJFX18gKi8ganN4KFwibGlcIiwgeyBcImFyaWEtY3VycmVudFwiOiBwYWdlID09PSBjdXJyZW50UGFnZSA/IFwicGFnZVwiIDogdm9pZCAwLCBjaGlsZHJlbjogcmVuZGVyUGFnaW5hdGlvbkJ1dHRvbih7XG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5wYWdlcy5zZWxlY3Rvci5iYXNlLCBjdXJyZW50UGFnZSA9PT0gcGFnZSAmJiB0aGVtZS5wYWdlcy5zZWxlY3Rvci5hY3RpdmUpLFxuICAgICAgICBhY3RpdmU6IHBhZ2UgPT09IGN1cnJlbnRQYWdlLFxuICAgICAgICBvbkNsaWNrOiAoKSA9PiBvblBhZ2VDaGFuZ2UocGFnZSksXG4gICAgICAgIGNoaWxkcmVuOiBwYWdlXG4gICAgICB9KSB9LCBwYWdlKSksXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwibGlcIiwgeyBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeHMoXG4gICAgICAgIFBhZ2luYXRpb25OYXZpZ2F0aW9uLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnBhZ2VzLm5leHQuYmFzZSwgc2hvd0ljb24gJiYgdGhlbWUucGFnZXMuc2hvd0ljb24pLFxuICAgICAgICAgIG9uQ2xpY2s6IGdvVG9OZXh0UGFnZSxcbiAgICAgICAgICBkaXNhYmxlZDogY3VycmVudFBhZ2UgPT09IHRvdGFsUGFnZXMsXG4gICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgIG5leHRMYWJlbCxcbiAgICAgICAgICAgIHNob3dJY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goSGlDaGV2cm9uUmlnaHQsIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBjbGFzc05hbWU6IHRoZW1lLnBhZ2VzLm5leHQuaWNvbiB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKSB9KVxuICAgIF0gfSlcbiAgXSB9KTtcbn07XG5QYWdpbmF0aW9uQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJQYWdpbmF0aW9uXCI7XG5jb25zdCBQYWdpbmF0aW9uID0gT2JqZWN0LmFzc2lnbihQYWdpbmF0aW9uQ29tcG9uZW50LCB7XG4gIEJ1dHRvbjogUGFnaW5hdGlvbkJ1dHRvblxufSk7XG5cbmV4cG9ydCB7IFBhZ2luYXRpb24gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVBhZ2luYXRpb24ubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgUmFkaW8gPSBmb3J3YXJkUmVmKFxuICAoeyBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnJhZGlvLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJpbnB1dFwiLCB7IHJlZiwgdHlwZTogXCJyYWRpb1wiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcyB9KTtcbiAgfVxuKTtcblJhZGlvLmRpc3BsYXlOYW1lID0gXCJSYWRpb1wiO1xuXG5leHBvcnQgeyBSYWRpbyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmFkaW8ubWpzLm1hcFxuIiwiaW1wb3J0IHsganN4LCBGcmFnbWVudCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IFJhbmdlU2xpZGVyID0gZm9yd2FyZFJlZihcbiAgKHsgY2xhc3NOYW1lLCBzaXppbmcgPSBcIm1kXCIsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnJhbmdlU2xpZGVyLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRnJhZ21lbnQsIHsgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtcmFuZ2Utc2xpZGVyXCIsIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmJhc2UsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5maWVsZC5iYXNlLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgIFwiaW5wdXRcIixcbiAgICAgIHtcbiAgICAgICAgcmVmLFxuICAgICAgICB0eXBlOiBcInJhbmdlXCIsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5maWVsZC5pbnB1dC5iYXNlLCB0aGVtZS5maWVsZC5pbnB1dC5zaXplc1tzaXppbmddKSxcbiAgICAgICAgLi4ucHJvcHNcbiAgICAgIH1cbiAgICApIH0pIH0pIH0pO1xuICB9XG4pO1xuUmFuZ2VTbGlkZXIuZGlzcGxheU5hbWUgPSBcIlJhbmdlU2xpZGVyXCI7XG5cbmV4cG9ydCB7IFJhbmdlU2xpZGVyIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SYW5nZVNsaWRlci5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJy4uLy4uL3RoZW1lLXN0b3JlL2luZGV4Lm1qcyc7XG5cbmNvbnN0IFJhdGluZ0FkdmFuY2VkID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgcGVyY2VudEZpbGxlZCA9IDAsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnJhdGluZ0FkdmFuY2VkLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW46IFtcbiAgICAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUubGFiZWwsIGNoaWxkcmVuIH0pLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLnByb2dyZXNzLmJhc2UsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgXCJkaXZcIixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiB0aGVtZS5wcm9ncmVzcy5maWxsLFxuICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtcmF0aW5nLWZpbGxcIixcbiAgICAgICAgc3R5bGU6IHsgd2lkdGg6IGAke3BlcmNlbnRGaWxsZWR9JWAgfVxuICAgICAgfVxuICAgICkgfSksXG4gICAgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLnByb2dyZXNzLmxhYmVsLCBjaGlsZHJlbjogYCR7cGVyY2VudEZpbGxlZH0lYCB9KVxuICBdIH0pO1xufTtcblxuZXhwb3J0IHsgUmF0aW5nQWR2YW5jZWQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJhdGluZ0FkdmFuY2VkLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IFJhdGluZ0NvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VSYXRpbmdDb250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChSYXRpbmdDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlUmF0aW5nQ29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIFJhdGluZ0NvbnRleHQgcHJvdmlkZXIhXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgeyBSYXRpbmdDb250ZXh0LCB1c2VSYXRpbmdDb250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SYXRpbmdDb250ZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IEhpU3RhciB9IGZyb20gJ3JlYWN0LWljb25zL2hpJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVJhdGluZ0NvbnRleHQgfSBmcm9tICcuL1JhdGluZ0NvbnRleHQubWpzJztcblxuY29uc3QgUmF0aW5nU3RhciA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgZmlsbGVkID0gdHJ1ZSxcbiAgc3Rhckljb246IEljb24gPSBIaVN0YXIsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUsIHNpemUgPSBcInNtXCIgfSA9IHVzZVJhdGluZ0NvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLnN0YXIsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgSWNvbixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtcmF0aW5nLXN0YXJcIixcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5zaXplc1tzaXplXSwgdGhlbWVbZmlsbGVkID8gXCJmaWxsZWRcIiA6IFwiZW1wdHlcIl0sIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wc1xuICAgIH1cbiAgKTtcbn07XG5cbmV4cG9ydCB7IFJhdGluZ1N0YXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJhdGluZ1N0YXIubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgUmF0aW5nQWR2YW5jZWQgfSBmcm9tICcuL1JhdGluZ0FkdmFuY2VkLm1qcyc7XG5pbXBvcnQgeyBSYXRpbmdDb250ZXh0IH0gZnJvbSAnLi9SYXRpbmdDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBSYXRpbmdTdGFyIH0gZnJvbSAnLi9SYXRpbmdTdGFyLm1qcyc7XG5cbmNvbnN0IFJhdGluZ0NvbXBvbmVudCA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHNpemUgPSBcInNtXCIsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkucmF0aW5nLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFJhdGluZ0NvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHsgdGhlbWUsIHNpemUgfSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW4gfSkgfSk7XG59O1xuUmF0aW5nQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJSYXRpbmdcIjtcblJhdGluZ1N0YXIuZGlzcGxheU5hbWUgPSBcIlJhdGluZy5TdGFyXCI7XG5SYXRpbmdBZHZhbmNlZC5kaXNwbGF5TmFtZSA9IFwiUmF0aW5nLkFkdmFuY2VkXCI7XG5jb25zdCBSYXRpbmcgPSBPYmplY3QuYXNzaWduKFJhdGluZ0NvbXBvbmVudCwge1xuICBTdGFyOiBSYXRpbmdTdGFyLFxuICBBZHZhbmNlZDogUmF0aW5nQWR2YW5jZWRcbn0pO1xuXG5leHBvcnQgeyBSYXRpbmcgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJhdGluZy5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgSGVscGVyVGV4dCB9IGZyb20gJy4uL0hlbHBlclRleHQvSGVscGVyVGV4dC5tanMnO1xuXG5jb25zdCBTZWxlY3QgPSBmb3J3YXJkUmVmKFxuICAoe1xuICAgIGFkZG9uLFxuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgICBjb2xvciA9IFwiZ3JheVwiLFxuICAgIGhlbHBlclRleHQsXG4gICAgaWNvbjogSWNvbixcbiAgICBzaGFkb3csXG4gICAgc2l6aW5nID0gXCJtZFwiLFxuICAgIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAgIC4uLnByb3BzXG4gIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuc2VsZWN0LCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiBbXG4gICAgICBhZGRvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhlbWUuYWRkb24sIGNoaWxkcmVuOiBhZGRvbiB9KSxcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5maWVsZC5iYXNlLCBjaGlsZHJlbjogW1xuICAgICAgICBJY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoZW1lLmZpZWxkLmljb24uYmFzZSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goSWNvbiwgeyBjbGFzc05hbWU6IHRoZW1lLmZpZWxkLmljb24uc3ZnIH0pIH0pLFxuICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgIFwic2VsZWN0XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgICB0aGVtZS5maWVsZC5zZWxlY3QuYmFzZSxcbiAgICAgICAgICAgICAgdGhlbWUuZmllbGQuc2VsZWN0LmNvbG9yc1tjb2xvcl0sXG4gICAgICAgICAgICAgIHRoZW1lLmZpZWxkLnNlbGVjdC5zaXplc1tzaXppbmddLFxuICAgICAgICAgICAgICB0aGVtZS5maWVsZC5zZWxlY3Qud2l0aEljb25bSWNvbiA/IFwib25cIiA6IFwib2ZmXCJdLFxuICAgICAgICAgICAgICB0aGVtZS5maWVsZC5zZWxlY3Qud2l0aEFkZG9uW2FkZG9uID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgICAgIHRoZW1lLmZpZWxkLnNlbGVjdC53aXRoU2hhZG93W3NoYWRvdyA/IFwib25cIiA6IFwib2ZmXCJdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgICAgICByZWYsXG4gICAgICAgICAgICBjaGlsZHJlblxuICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgICAgaGVscGVyVGV4dCAmJiAvKiBAX19QVVJFX18gKi8ganN4KEhlbHBlclRleHQsIHsgY29sb3IsIGNoaWxkcmVuOiBoZWxwZXJUZXh0IH0pXG4gICAgICBdIH0pXG4gICAgXSB9KTtcbiAgfVxuKTtcblNlbGVjdC5kaXNwbGF5TmFtZSA9IFwiU2VsZWN0XCI7XG5cbmV4cG9ydCB7IFNlbGVjdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2VsZWN0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IFNpZGViYXJDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuZnVuY3Rpb24gdXNlU2lkZWJhckNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFNpZGViYXJDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlU2lkZWJhckNvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBTaWRlYmFyQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IFNpZGViYXJDb250ZXh0LCB1c2VTaWRlYmFyQ29udGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2lkZWJhckNvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgU2lkZWJhckl0ZW1Db250ZXh0ID0gY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuZnVuY3Rpb24gdXNlU2lkZWJhckl0ZW1Db250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChTaWRlYmFySXRlbUNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VTaWRlYmFySXRlbUNvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBTaWRlYmFySXRlbUNvbnRleHQgcHJvdmlkZXIhXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgeyBTaWRlYmFySXRlbUNvbnRleHQsIHVzZVNpZGViYXJJdGVtQ29udGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2lkZWJhckl0ZW1Db250ZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIGpzeCwgRnJhZ21lbnQgfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VJZCwgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEhpQ2hldnJvbkRvd24gfSBmcm9tICdyZWFjdC1pY29ucy9oaSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnLi4vVG9vbHRpcC9Ub29sdGlwLm1qcyc7XG5pbXBvcnQgeyB1c2VTaWRlYmFyQ29udGV4dCB9IGZyb20gJy4vU2lkZWJhckNvbnRleHQubWpzJztcbmltcG9ydCB7IFNpZGViYXJJdGVtQ29udGV4dCB9IGZyb20gJy4vU2lkZWJhckl0ZW1Db250ZXh0Lm1qcyc7XG5cbmNvbnN0IFNpZGViYXJDb2xsYXBzZSA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGljb246IEljb24sXG4gIGxhYmVsLFxuICBjaGV2cm9uSWNvbjogQ2hldnJvbkljb24gPSBIaUNoZXZyb25Eb3duLFxuICByZW5kZXJDaGV2cm9uSWNvbixcbiAgb3BlbiA9IGZhbHNlLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgaWQgPSB1c2VJZCgpO1xuICBjb25zdCBbaXNPcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKG9wZW4pO1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUsIGlzQ29sbGFwc2VkIH0gPSB1c2VTaWRlYmFyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuY29sbGFwc2UsIGN1c3RvbVRoZW1lKTtcbiAgdXNlRWZmZWN0KCgpID0+IHNldE9wZW4ob3BlbiksIFtvcGVuXSk7XG4gIGNvbnN0IFdyYXBwZXIgPSAoeyBjaGlsZHJlbjogY2hpbGRyZW4yIH0pID0+IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJsaVwiLCB7IGNoaWxkcmVuOiBpc0NvbGxhcHNlZCAmJiAhaXNPcGVuID8gLyogQF9fUFVSRV9fICovIGpzeChUb29sdGlwLCB7IGNvbnRlbnQ6IGxhYmVsLCBwbGFjZW1lbnQ6IFwicmlnaHRcIiwgY2hpbGRyZW46IGNoaWxkcmVuMiB9KSA6IGNoaWxkcmVuMiB9KTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFdyYXBwZXIsIHsgY2hpbGRyZW46IFtcbiAgICAvKiBAX19QVVJFX18gKi8ganN4cyhcbiAgICAgIFwiYnV0dG9uXCIsXG4gICAgICB7XG4gICAgICAgIGlkOiBgZmxvd2JpdGUtc2lkZWJhci1jb2xsYXBzZS0ke2lkfWAsXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHNldE9wZW4oIWlzT3BlbiksXG4gICAgICAgIHRpdGxlOiBsYWJlbCxcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJ1dHRvbiwgY2xhc3NOYW1lKSxcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgSWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgICAgSWNvbixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgICAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtc2lkZWJhci1jb2xsYXBzZS1pY29uXCIsXG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5pY29uLmJhc2UsIHRoZW1lLmljb24ub3Blbltpc09wZW4gPyBcIm9uXCIgOiBcIm9mZlwiXSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApLFxuICAgICAgICAgIGlzQ29sbGFwc2VkID8gLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IFwic3Itb25seVwiLCBjaGlsZHJlbjogbGFiZWwgfSkgOiAvKiBAX19QVVJFX18gKi8ganN4cyhGcmFnbWVudCwgeyBjaGlsZHJlbjogW1xuICAgICAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtc2lkZWJhci1jb2xsYXBzZS1sYWJlbFwiLCBjbGFzc05hbWU6IHRoZW1lLmxhYmVsLmJhc2UsIGNoaWxkcmVuOiBsYWJlbCB9KSxcbiAgICAgICAgICAgIHJlbmRlckNoZXZyb25JY29uID8gcmVuZGVyQ2hldnJvbkljb24odGhlbWUsIGlzT3BlbikgOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgICAgICBDaGV2cm9uSWNvbixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUubGFiZWwuaWNvbi5iYXNlLCB0aGVtZS5sYWJlbC5pY29uLm9wZW5baXNPcGVuID8gXCJvblwiIDogXCJvZmZcIl0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIClcbiAgICAgICAgICBdIH0pXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICApLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJ1bFwiLCB7IFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGBmbG93Yml0ZS1zaWRlYmFyLWNvbGxhcHNlLSR7aWR9YCwgaGlkZGVuOiAhaXNPcGVuLCBjbGFzc05hbWU6IHRoZW1lLmxpc3QsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFNpZGViYXJJdGVtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyBpc0luc2lkZUNvbGxhcHNlOiB0cnVlIH0sIGNoaWxkcmVuIH0pIH0pXG4gIF0gfSk7XG59O1xuU2lkZWJhckNvbGxhcHNlLmRpc3BsYXlOYW1lID0gXCJTaWRlYmFyLkNvbGxhcHNlXCI7XG5cbmV4cG9ydCB7IFNpZGViYXJDb2xsYXBzZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2lkZWJhckNvbGxhcHNlLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVNpZGViYXJDb250ZXh0IH0gZnJvbSAnLi9TaWRlYmFyQ29udGV4dC5tanMnO1xuXG5jb25zdCBTaWRlYmFyQ1RBID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNvbG9yID0gXCJpbmZvXCIsXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgaXNDb2xsYXBzZWQgfSA9IHVzZVNpZGViYXJDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5jdGEsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwic2lkZWJhci1jdGFcIixcbiAgICAgIGhpZGRlbjogaXNDb2xsYXBzZWQsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgdGhlbWUuY29sb3JbY29sb3JdLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlblxuICAgIH1cbiAgKTtcbn07XG5TaWRlYmFyQ1RBLmRpc3BsYXlOYW1lID0gXCJTaWRlYmFyLkNUQVwiO1xuXG5leHBvcnQgeyBTaWRlYmFyQ1RBIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TaWRlYmFyQ1RBLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCwganN4cyB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZUlkIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgQmFkZ2UgfSBmcm9tICcuLi9CYWRnZS9CYWRnZS5tanMnO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJy4uL1Rvb2x0aXAvVG9vbHRpcC5tanMnO1xuaW1wb3J0IHsgdXNlU2lkZWJhckNvbnRleHQgfSBmcm9tICcuL1NpZGViYXJDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyB1c2VTaWRlYmFySXRlbUNvbnRleHQgfSBmcm9tICcuL1NpZGViYXJJdGVtQ29udGV4dC5tanMnO1xuXG5jb25zdCBMaXN0SXRlbSA9ICh7IGlkLCB0aGVtZSwgaXNDb2xsYXBzZWQsIHRvb2x0aXBDaGlsZHJlbiwgY2hpbGRyZW46IHdyYXBwZXJDaGlsZHJlbiwgLi4ucHJvcHMgfSkgPT4gLyogQF9fUFVSRV9fICovIGpzeChcImxpXCIsIHsgLi4ucHJvcHMsIGNoaWxkcmVuOiBpc0NvbGxhcHNlZCA/IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gIFRvb2x0aXAsXG4gIHtcbiAgICBjb250ZW50OiAvKiBAX19QVVJFX18gKi8ganN4KENoaWxkcmVuLCB7IGlkLCB0aGVtZSwgY2hpbGRyZW46IHRvb2x0aXBDaGlsZHJlbiB9KSxcbiAgICBwbGFjZW1lbnQ6IFwicmlnaHRcIixcbiAgICBjaGlsZHJlbjogd3JhcHBlckNoaWxkcmVuXG4gIH1cbikgOiB3cmFwcGVyQ2hpbGRyZW4gfSk7XG5jb25zdCBDaGlsZHJlbiA9ICh7IGlkLCB0aGVtZSwgY2hpbGRyZW4gfSkgPT4ge1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcInNwYW5cIixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtc2lkZWJhci1pdGVtLWNvbnRlbnRcIixcbiAgICAgIGlkOiBgZmxvd2JpdGUtc2lkZWJhci1pdGVtLSR7aWR9YCxcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5jb250ZW50LmJhc2UpLFxuICAgICAgY2hpbGRyZW5cbiAgICB9XG4gICk7XG59O1xuY29uc3QgU2lkZWJhckl0ZW0gPSBmb3J3YXJkUmVmKFxuICAoe1xuICAgIGFjdGl2ZTogaXNBY3RpdmUsXG4gICAgYXM6IENvbXBvbmVudCA9IFwiYVwiLFxuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgICBpY29uOiBJY29uLFxuICAgIGxhYmVsLFxuICAgIGxhYmVsQ29sb3IgPSBcImluZm9cIixcbiAgICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgICAuLi5wcm9wc1xuICB9LCByZWYpID0+IHtcbiAgICBjb25zdCBpZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBpc0NvbGxhcHNlZCB9ID0gdXNlU2lkZWJhckNvbnRleHQoKTtcbiAgICBjb25zdCB7IGlzSW5zaWRlQ29sbGFwc2UgfSA9IHVzZVNpZGViYXJJdGVtQ29udGV4dCgpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5pdGVtLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goTGlzdEl0ZW0sIHsgdGhlbWUsIGNsYXNzTmFtZTogdGhlbWUubGlzdEl0ZW0sIGlkLCBpc0NvbGxhcHNlZCwgdG9vbHRpcENoaWxkcmVuOiBjaGlsZHJlbiwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgICAgQ29tcG9uZW50LFxuICAgICAge1xuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBgZmxvd2JpdGUtc2lkZWJhci1pdGVtLSR7aWR9YCxcbiAgICAgICAgcmVmLFxuICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgdGhlbWUuYmFzZSxcbiAgICAgICAgICBpc0FjdGl2ZSAmJiB0aGVtZS5hY3RpdmUsXG4gICAgICAgICAgIWlzQ29sbGFwc2VkICYmIGlzSW5zaWRlQ29sbGFwc2UgJiYgdGhlbWUuY29sbGFwc2VkPy5pbnNpZGVDb2xsYXBzZSxcbiAgICAgICAgICBjbGFzc05hbWVcbiAgICAgICAgKSxcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgSWNvbiAmJiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICAgICAgSWNvbixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgICAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtc2lkZWJhci1pdGVtLWljb25cIixcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmljb24/LmJhc2UsIGlzQWN0aXZlICYmIHRoZW1lLmljb24/LmFjdGl2ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApLFxuICAgICAgICAgIGlzQ29sbGFwc2VkICYmICFJY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0aGVtZS5jb2xsYXBzZWQ/Lm5vSWNvbiwgY2hpbGRyZW46IGNoaWxkcmVuLmNoYXJBdCgwKS50b0xvY2FsZVVwcGVyQ2FzZSgpID8/IFwiP1wiIH0pLFxuICAgICAgICAgICFpc0NvbGxhcHNlZCAmJiAvKiBAX19QVVJFX18gKi8ganN4KENoaWxkcmVuLCB7IGlkLCB0aGVtZSwgY2hpbGRyZW4gfSksXG4gICAgICAgICAgIWlzQ29sbGFwc2VkICYmIGxhYmVsICYmIC8qIEBfX1BVUkVfXyAqLyBqc3goQmFkZ2UsIHsgY29sb3I6IGxhYmVsQ29sb3IsIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1zaWRlYmFyLWxhYmVsXCIsIGhpZGRlbjogaXNDb2xsYXBzZWQsIGNsYXNzTmFtZTogdGhlbWUubGFiZWwsIGNoaWxkcmVuOiBsYWJlbCB9KVxuICAgICAgICBdXG4gICAgICB9XG4gICAgKSB9KTtcbiAgfVxuKTtcblNpZGViYXJJdGVtLmRpc3BsYXlOYW1lID0gXCJTaWRlYmFyLkl0ZW1cIjtcblxuZXhwb3J0IHsgU2lkZWJhckl0ZW0gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNpZGViYXJJdGVtLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVNpZGViYXJDb250ZXh0IH0gZnJvbSAnLi9TaWRlYmFyQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgU2lkZWJhckl0ZW1Db250ZXh0IH0gZnJvbSAnLi9TaWRlYmFySXRlbUNvbnRleHQubWpzJztcblxuY29uc3QgU2lkZWJhckl0ZW1Hcm91cCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUgfSA9IHVzZVNpZGViYXJDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5pdGVtR3JvdXAsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJ1bFwiLCB7IFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS1zaWRlYmFyLWl0ZW0tZ3JvdXBcIiwgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIC4uLnByb3BzLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChTaWRlYmFySXRlbUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHsgaXNJbnNpZGVDb2xsYXBzZTogZmFsc2UgfSwgY2hpbGRyZW4gfSkgfSk7XG59O1xuU2lkZWJhckl0ZW1Hcm91cC5kaXNwbGF5TmFtZSA9IFwiU2lkZWJhci5JdGVtR3JvdXBcIjtcblxuZXhwb3J0IHsgU2lkZWJhckl0ZW1Hcm91cCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2lkZWJhckl0ZW1Hcm91cC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VTaWRlYmFyQ29udGV4dCB9IGZyb20gJy4vU2lkZWJhckNvbnRleHQubWpzJztcblxuY29uc3QgU2lkZWJhckl0ZW1zID0gKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lIH0gPSB1c2VTaWRlYmFyQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuaXRlbXMsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLXNpZGViYXItaXRlbXNcIiwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcblNpZGViYXJJdGVtcy5kaXNwbGF5TmFtZSA9IFwiU2lkZWJhci5JdGVtc1wiO1xuXG5leHBvcnQgeyBTaWRlYmFySXRlbXMgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNpZGViYXJJdGVtcy5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3hzLCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VJZCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVNpZGViYXJDb250ZXh0IH0gZnJvbSAnLi9TaWRlYmFyQ29udGV4dC5tanMnO1xuXG5jb25zdCBTaWRlYmFyTG9nbyA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGhyZWYsXG4gIGltZyxcbiAgaW1nQWx0ID0gXCJcIixcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBpc0NvbGxhcHNlZCB9ID0gdXNlU2lkZWJhckNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAocm9vdFRoZW1lLmxvZ28sIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgIFwiYVwiLFxuICAgIHtcbiAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGBmbG93Yml0ZS1zaWRlYmFyLWxvZ28tJHtpZH1gLFxuICAgICAgaHJlZixcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwiaW1nXCIsIHsgYWx0OiBpbWdBbHQsIHNyYzogaW1nLCBjbGFzc05hbWU6IHRoZW1lLmltZyB9KSxcbiAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoZW1lLmNvbGxhcHNlZFtpc0NvbGxhcHNlZCA/IFwib25cIiA6IFwib2ZmXCJdLCBpZDogYGZsb3diaXRlLXNpZGViYXItbG9nby0ke2lkfWAsIGNoaWxkcmVuIH0pXG4gICAgICBdXG4gICAgfVxuICApO1xufTtcblNpZGViYXJMb2dvLmRpc3BsYXlOYW1lID0gXCJTaWRlYmFyLkxvZ29cIjtcblxuZXhwb3J0IHsgU2lkZWJhckxvZ28gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNpZGViYXJMb2dvLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IFNpZGViYXJDb2xsYXBzZSB9IGZyb20gJy4vU2lkZWJhckNvbGxhcHNlLm1qcyc7XG5pbXBvcnQgeyBTaWRlYmFyQ29udGV4dCB9IGZyb20gJy4vU2lkZWJhckNvbnRleHQubWpzJztcbmltcG9ydCB7IFNpZGViYXJDVEEgfSBmcm9tICcuL1NpZGViYXJDVEEubWpzJztcbmltcG9ydCB7IFNpZGViYXJJdGVtIH0gZnJvbSAnLi9TaWRlYmFySXRlbS5tanMnO1xuaW1wb3J0IHsgU2lkZWJhckl0ZW1Hcm91cCB9IGZyb20gJy4vU2lkZWJhckl0ZW1Hcm91cC5tanMnO1xuaW1wb3J0IHsgU2lkZWJhckl0ZW1zIH0gZnJvbSAnLi9TaWRlYmFySXRlbXMubWpzJztcbmltcG9ydCB7IFNpZGViYXJMb2dvIH0gZnJvbSAnLi9TaWRlYmFyTG9nby5tanMnO1xuXG5jb25zdCBTaWRlYmFyQ29tcG9uZW50ID0gKHtcbiAgY2hpbGRyZW4sXG4gIGFzOiBDb21wb25lbnQgPSBcIm5hdlwiLFxuICBjb2xsYXBzZUJlaGF2aW9yID0gXCJjb2xsYXBzZVwiLFxuICBjb2xsYXBzZWQ6IGlzQ29sbGFwc2VkID0gZmFsc2UsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkuc2lkZWJhciwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChTaWRlYmFyQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSwgaXNDb2xsYXBzZWQgfSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgQ29tcG9uZW50LFxuICAgIHtcbiAgICAgIFwiYXJpYS1sYWJlbFwiOiBcIlNpZGViYXJcIixcbiAgICAgIGhpZGRlbjogaXNDb2xsYXBzZWQgJiYgY29sbGFwc2VCZWhhdmlvciA9PT0gXCJoaWRlXCIsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCB0aGVtZS5yb290LmNvbGxhcHNlZFtpc0NvbGxhcHNlZCA/IFwib25cIiA6IFwib2ZmXCJdLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogdGhlbWUucm9vdC5pbm5lciwgY2hpbGRyZW4gfSlcbiAgICB9XG4gICkgfSk7XG59O1xuU2lkZWJhckNvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiU2lkZWJhclwiO1xuY29uc3QgU2lkZWJhciA9IE9iamVjdC5hc3NpZ24oU2lkZWJhckNvbXBvbmVudCwge1xuICBDb2xsYXBzZTogU2lkZWJhckNvbGxhcHNlLFxuICBDVEE6IFNpZGViYXJDVEEsXG4gIEl0ZW06IFNpZGViYXJJdGVtLFxuICBJdGVtczogU2lkZWJhckl0ZW1zLFxuICBJdGVtR3JvdXA6IFNpZGViYXJJdGVtR3JvdXAsXG4gIExvZ286IFNpZGViYXJMb2dvXG59KTtcblxuZXhwb3J0IHsgU2lkZWJhciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2lkZWJhci5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBUYWJsZUJvZHlDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuZnVuY3Rpb24gdXNlVGFibGVCb2R5Q29udGV4dCgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoVGFibGVCb2R5Q29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZVRhYmxlQm9keUNvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBUYWJsZUJvZHlDb250ZXh0IHByb3ZpZGVyIVwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cblxuZXhwb3J0IHsgVGFibGVCb2R5Q29udGV4dCwgdXNlVGFibGVCb2R5Q29udGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGFibGVCb2R5Q29udGV4dC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBUYWJsZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VUYWJsZUNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFRhYmxlQ29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZVRhYmxlQ29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIFRhYmxlQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IFRhYmxlQ29udGV4dCwgdXNlVGFibGVDb250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UYWJsZUNvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IFRhYmxlQm9keUNvbnRleHQgfSBmcm9tICcuL1RhYmxlQm9keUNvbnRleHQubWpzJztcbmltcG9ydCB7IHVzZVRhYmxlQ29udGV4dCB9IGZyb20gJy4vVGFibGVDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRhYmxlQm9keSA9IGZvcndhcmRSZWYoXG4gICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUgfSA9IHVzZVRhYmxlQ29udGV4dCgpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5ib2R5LCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goVGFibGVCb2R5Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSB9LCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcInRib2R5XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIHJlZiwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pIH0pO1xuICB9XG4pO1xuVGFibGVCb2R5LmRpc3BsYXlOYW1lID0gXCJUYWJsZS5Cb2R5XCI7XG5cbmV4cG9ydCB7IFRhYmxlQm9keSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGFibGVCb2R5Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VUYWJsZUJvZHlDb250ZXh0IH0gZnJvbSAnLi9UYWJsZUJvZHlDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRhYmxlQ2VsbCA9IGZvcndhcmRSZWYoXG4gICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB7IHRoZW1lOiBib2R5VGhlbWUgfSA9IHVzZVRhYmxlQm9keUNvbnRleHQoKTtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChib2R5VGhlbWUuY2VsbCwgY3VzdG9tVGhlbWUpO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwidGRcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgcmVmLCAuLi5wcm9wcywgY2hpbGRyZW4gfSk7XG4gIH1cbik7XG5UYWJsZUNlbGwuZGlzcGxheU5hbWUgPSBcIlRhYmxlLkNlbGxcIjtcblxuZXhwb3J0IHsgVGFibGVDZWxsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UYWJsZUNlbGwubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgVGFibGVIZWFkQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQodm9pZCAwKTtcbmZ1bmN0aW9uIHVzZVRhYmxlSGVhZENvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFRhYmxlSGVhZENvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VUYWJsZUhlYWRDb250ZXh0IHNob3VsZCBiZSB1c2VkIHdpdGhpbiB0aGUgVGFibGVIZWFkQ29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IFRhYmxlSGVhZENvbnRleHQsIHVzZVRhYmxlSGVhZENvbnRleHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRhYmxlSGVhZENvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVRhYmxlQ29udGV4dCB9IGZyb20gJy4vVGFibGVDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBUYWJsZUhlYWRDb250ZXh0IH0gZnJvbSAnLi9UYWJsZUhlYWRDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRhYmxlSGVhZCA9IGZvcndhcmRSZWYoXG4gICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUgfSA9IHVzZVRhYmxlQ29udGV4dCgpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS5oZWFkLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goVGFibGVIZWFkQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSB9LCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcInRoZWFkXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIHJlZiwgLi4ucHJvcHMsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwidHJcIiwgeyBjaGlsZHJlbiB9KSB9KSB9KTtcbiAgfVxuKTtcblRhYmxlSGVhZC5kaXNwbGF5TmFtZSA9IFwiVGFibGUuSGVhZFwiO1xuXG5leHBvcnQgeyBUYWJsZUhlYWQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRhYmxlSGVhZC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlVGFibGVIZWFkQ29udGV4dCB9IGZyb20gJy4vVGFibGVIZWFkQ29udGV4dC5tanMnO1xuXG5jb25zdCBUYWJsZUhlYWRDZWxsID0gZm9yd2FyZFJlZihcbiAgKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHsgdGhlbWU6IGhlYWRUaGVtZSB9ID0gdXNlVGFibGVIZWFkQ29udGV4dCgpO1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGhlYWRUaGVtZS5jZWxsLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJ0aFwiLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCByZWYsIC4uLnByb3BzLCBjaGlsZHJlbiB9KTtcbiAgfVxuKTtcblRhYmxlSGVhZENlbGwuZGlzcGxheU5hbWUgPSBcIlRhYmxlLkhlYWRDZWxsXCI7XG5cbmV4cG9ydCB7IFRhYmxlSGVhZENlbGwgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRhYmxlSGVhZENlbGwubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVRhYmxlQ29udGV4dCB9IGZyb20gJy4vVGFibGVDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRhYmxlUm93ID0gZm9yd2FyZFJlZihcbiAgKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHsgdGhlbWU6IHJvb3RUaGVtZSwgaG92ZXJhYmxlLCBzdHJpcGVkIH0gPSB1c2VUYWJsZUNvbnRleHQoKTtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUucm93LCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICBcInRyXCIsXG4gICAgICB7XG4gICAgICAgIHJlZixcbiAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcInRhYmxlLXJvdy1lbGVtZW50XCIsXG4gICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBzdHJpcGVkICYmIHRoZW1lLnN0cmlwZWQsIGhvdmVyYWJsZSAmJiB0aGVtZS5ob3ZlcmVkLCBjbGFzc05hbWUpLFxuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgY2hpbGRyZW5cbiAgICAgIH1cbiAgICApO1xuICB9XG4pO1xuVGFibGVSb3cuZGlzcGxheU5hbWUgPSBcIlRhYmxlLlJvd1wiO1xuXG5leHBvcnQgeyBUYWJsZVJvdyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGFibGVSb3cubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4LCBqc3hzIH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IFRhYmxlQm9keSB9IGZyb20gJy4vVGFibGVCb2R5Lm1qcyc7XG5pbXBvcnQgeyBUYWJsZUNlbGwgfSBmcm9tICcuL1RhYmxlQ2VsbC5tanMnO1xuaW1wb3J0IHsgVGFibGVDb250ZXh0IH0gZnJvbSAnLi9UYWJsZUNvbnRleHQubWpzJztcbmltcG9ydCB7IFRhYmxlSGVhZCB9IGZyb20gJy4vVGFibGVIZWFkLm1qcyc7XG5pbXBvcnQgeyBUYWJsZUhlYWRDZWxsIH0gZnJvbSAnLi9UYWJsZUhlYWRDZWxsLm1qcyc7XG5pbXBvcnQgeyBUYWJsZVJvdyB9IGZyb20gJy4vVGFibGVSb3cubWpzJztcblxuY29uc3QgVGFibGVDb21wb25lbnQgPSBmb3J3YXJkUmVmKFxuICAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBzdHJpcGVkLCBob3ZlcmFibGUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnRhYmxlLCBjdXN0b21UaGVtZSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwidGFibGUtZWxlbWVudFwiLCBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC53cmFwcGVyKSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFRhYmxlQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSwgc3RyaXBlZCwgaG92ZXJhYmxlIH0sIGNoaWxkcmVuOiBbXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3Quc2hhZG93LCBjbGFzc05hbWUpIH0pLFxuICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcInRhYmxlXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3QuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIHJlZiwgY2hpbGRyZW4gfSlcbiAgICBdIH0pIH0pO1xuICB9XG4pO1xuVGFibGVDb21wb25lbnQuZGlzcGxheU5hbWUgPSBcIlRhYmxlXCI7XG5jb25zdCBUYWJsZSA9IE9iamVjdC5hc3NpZ24oVGFibGVDb21wb25lbnQsIHtcbiAgSGVhZDogVGFibGVIZWFkLFxuICBCb2R5OiBUYWJsZUJvZHksXG4gIFJvdzogVGFibGVSb3csXG4gIENlbGw6IFRhYmxlQ2VsbCxcbiAgSGVhZENlbGw6IFRhYmxlSGVhZENlbGxcbn0pO1xuXG5leHBvcnQgeyBUYWJsZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGFibGUubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuXG5jb25zdCBUYWJJdGVtID0gKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSB9KSA9PiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lLCBjaGlsZHJlbiB9KTtcblRhYkl0ZW0uZGlzcGxheU5hbWUgPSBcIlRhYnMuSXRlbVwiO1xuXG5leHBvcnQgeyBUYWJJdGVtIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UYWJJdGVtLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZUlkLCB1c2VNZW1vLCBDaGlsZHJlbiwgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VJbXBlcmF0aXZlSGFuZGxlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgZ2V0VGhlbWUgfSBmcm9tICcuLi8uLi90aGVtZS1zdG9yZS9pbmRleC5tanMnO1xuaW1wb3J0IHsgVGFiSXRlbSB9IGZyb20gJy4vVGFiSXRlbS5tanMnO1xuXG5jb25zdCBUYWJzQ29tcG9uZW50ID0gZm9yd2FyZFJlZihcbiAgKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgb25BY3RpdmVUYWJDaGFuZ2UsIHZhcmlhbnQgPSBcImRlZmF1bHRcIiwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkudGFicywgY3VzdG9tVGhlbWUpO1xuICAgIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgICBjb25zdCB0YWJzID0gdXNlTWVtbyhcbiAgICAgICgpID0+IENoaWxkcmVuLm1hcChcbiAgICAgICAgQ2hpbGRyZW4udG9BcnJheShjaGlsZHJlbiksXG4gICAgICAgICh7IHByb3BzOiBwcm9wczIgfSkgPT4gcHJvcHMyXG4gICAgICApLFxuICAgICAgW2NoaWxkcmVuXVxuICAgICk7XG4gICAgY29uc3QgdGFiUmVmcyA9IHVzZVJlZihbXSk7XG4gICAgY29uc3QgW2FjdGl2ZVRhYiwgc2V0QWN0aXZlVGFiXSA9IHVzZVN0YXRlKFxuICAgICAgTWF0aC5tYXgoXG4gICAgICAgIDAsXG4gICAgICAgIHRhYnMuZmluZEluZGV4KCh0YWIpID0+IHRhYi5hY3RpdmUpXG4gICAgICApXG4gICAgKTtcbiAgICBjb25zdCBbZm9jdXNlZFRhYiwgc2V0Rm9jdXNlZFRhYl0gPSB1c2VTdGF0ZSgtMSk7XG4gICAgY29uc3Qgc2V0QWN0aXZlVGFiV2l0aENhbGxiYWNrID0gKGFjdGl2ZVRhYjIpID0+IHtcbiAgICAgIHNldEFjdGl2ZVRhYihhY3RpdmVUYWIyKTtcbiAgICAgIGlmIChvbkFjdGl2ZVRhYkNoYW5nZSkgb25BY3RpdmVUYWJDaGFuZ2UoYWN0aXZlVGFiMik7XG4gICAgfTtcbiAgICBjb25zdCBoYW5kbGVDbGljayA9ICh7IHRhcmdldCB9KSA9PiB7XG4gICAgICBzZXRBY3RpdmVUYWJXaXRoQ2FsbGJhY2sodGFyZ2V0KTtcbiAgICAgIHNldEZvY3VzZWRUYWIodGFyZ2V0KTtcbiAgICB9O1xuICAgIGNvbnN0IGhhbmRsZUtleWJvYXJkID0gKHsgZXZlbnQsIHRhcmdldCB9KSA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93TGVmdFwiKSB7XG4gICAgICAgIHNldEZvY3VzZWRUYWIoTWF0aC5tYXgoMCwgZm9jdXNlZFRhYiAtIDEpKTtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dSaWdodFwiKSB7XG4gICAgICAgIHNldEZvY3VzZWRUYWIoTWF0aC5taW4odGFicy5sZW5ndGggLSAxLCBmb2N1c2VkVGFiICsgMSkpO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiKSB7XG4gICAgICAgIHNldEFjdGl2ZVRhYldpdGhDYWxsYmFjayh0YXJnZXQpO1xuICAgICAgICBzZXRGb2N1c2VkVGFiKHRhcmdldCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCB0YWJJdGVtU3R5bGUgPSB0aGVtZS50YWJsaXN0LnRhYml0ZW0udmFyaWFudFt2YXJpYW50XTtcbiAgICBjb25zdCB0YWJJdGVtQ29udGFpbmVyU3R5bGUgPSB0aGVtZS50YWJpdGVtY29udGFpbmVyLnZhcmlhbnRbdmFyaWFudF07XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIHRhYlJlZnMuY3VycmVudFtmb2N1c2VkVGFiXT8uZm9jdXMoKTtcbiAgICB9LCBbZm9jdXNlZFRhYl0pO1xuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiAoe1xuICAgICAgc2V0QWN0aXZlVGFiOiBzZXRBY3RpdmVUYWJXaXRoQ2FsbGJhY2tcbiAgICB9KSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmJhc2UsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiBbXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IFwiVGFic1wiLFxuICAgICAgICAgIHJvbGU6IFwidGFibGlzdFwiLFxuICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS50YWJsaXN0LmJhc2UsIHRoZW1lLnRhYmxpc3QudmFyaWFudFt2YXJpYW50XSwgY2xhc3NOYW1lKSxcbiAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbjogdGFicy5tYXAoKHRhYiwgaW5kZXgpID0+IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFxuICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IGAke2lkfS10YWJwYW5lbC0ke2luZGV4fWAsXG4gICAgICAgICAgICAgIFwiYXJpYS1zZWxlY3RlZFwiOiBpbmRleCA9PT0gYWN0aXZlVGFiLFxuICAgICAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UoXG4gICAgICAgICAgICAgICAgdGhlbWUudGFibGlzdC50YWJpdGVtLmJhc2UsXG4gICAgICAgICAgICAgICAgdGFiSXRlbVN0eWxlLmJhc2UsXG4gICAgICAgICAgICAgICAgaW5kZXggPT09IGFjdGl2ZVRhYiAmJiB0YWJJdGVtU3R5bGUuYWN0aXZlLm9uLFxuICAgICAgICAgICAgICAgIGluZGV4ICE9PSBhY3RpdmVUYWIgJiYgIXRhYi5kaXNhYmxlZCAmJiB0YWJJdGVtU3R5bGUuYWN0aXZlLm9mZlxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogdGFiLmRpc2FibGVkLFxuICAgICAgICAgICAgICBpZDogYCR7aWR9LXRhYi0ke2luZGV4fWAsXG4gICAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IGhhbmRsZUNsaWNrKHsgdGFyZ2V0OiBpbmRleCB9KSxcbiAgICAgICAgICAgICAgb25LZXlEb3duOiAoZXZlbnQpID0+IGhhbmRsZUtleWJvYXJkKHsgZXZlbnQsIHRhcmdldDogaW5kZXggfSksXG4gICAgICAgICAgICAgIHJlZjogKGVsZW1lbnQpID0+IHRhYlJlZnMuY3VycmVudFtpbmRleF0gPSBlbGVtZW50LFxuICAgICAgICAgICAgICByb2xlOiBcInRhYlwiLFxuICAgICAgICAgICAgICB0YWJJbmRleDogaW5kZXggPT09IGZvY3VzZWRUYWIgPyAwIDogLTEsXG4gICAgICAgICAgICAgIHN0eWxlOiB7IHpJbmRleDogaW5kZXggPT09IGZvY3VzZWRUYWIgPyAyIDogMSB9LFxuICAgICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgIHRhYi5pY29uICYmIC8qIEBfX1BVUkVfXyAqLyBqc3godGFiLmljb24sIHsgY2xhc3NOYW1lOiB0aGVtZS50YWJsaXN0LnRhYml0ZW0uaWNvbiB9KSxcbiAgICAgICAgICAgICAgICB0YWIudGl0bGVcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgKSlcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUudGFiaXRlbWNvbnRhaW5lci5iYXNlLCB0YWJJdGVtQ29udGFpbmVyU3R5bGUpLCBjaGlsZHJlbjogdGFicy5tYXAoKHRhYiwgaW5kZXgpID0+IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBgJHtpZH0tdGFiLSR7aW5kZXh9YCxcbiAgICAgICAgICBjbGFzc05hbWU6IHRoZW1lLnRhYnBhbmVsLFxuICAgICAgICAgIGhpZGRlbjogaW5kZXggIT09IGFjdGl2ZVRhYixcbiAgICAgICAgICBpZDogYCR7aWR9LXRhYnBhbmVsLSR7aW5kZXh9YCxcbiAgICAgICAgICByb2xlOiBcInRhYnBhbmVsXCIsXG4gICAgICAgICAgdGFiSW5kZXg6IDAsXG4gICAgICAgICAgY2hpbGRyZW46IHRhYi5jaGlsZHJlblxuICAgICAgICB9LFxuICAgICAgICBpbmRleFxuICAgICAgKSkgfSlcbiAgICBdIH0pO1xuICB9XG4pO1xuVGFic0NvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiVGFic1wiO1xuY29uc3QgVGFicyA9IE9iamVjdC5hc3NpZ24oVGFic0NvbXBvbmVudCwge1xuICBJdGVtOiBUYWJJdGVtXG59KTtcblxuZXhwb3J0IHsgVGFicyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGFicy5tanMubWFwXG4iLCJpbXBvcnQgeyBqc3hzLCBGcmFnbWVudCwganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IEhlbHBlclRleHQgfSBmcm9tICcuLi9IZWxwZXJUZXh0L0hlbHBlclRleHQubWpzJztcblxuY29uc3QgVGV4dGFyZWEgPSBmb3J3YXJkUmVmKFxuICAoeyBjbGFzc05hbWUsIGNvbG9yID0gXCJncmF5XCIsIGhlbHBlclRleHQsIHNoYWRvdywgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkudGV4dGFyZWEsIGN1c3RvbVRoZW1lKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtcbiAgICAgIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgIFwidGV4dGFyZWFcIixcbiAgICAgICAge1xuICAgICAgICAgIHJlZixcbiAgICAgICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgdGhlbWUuY29sb3JzW2NvbG9yXSwgdGhlbWUud2l0aFNoYWRvd1tzaGFkb3cgPyBcIm9uXCIgOiBcIm9mZlwiXSwgY2xhc3NOYW1lKSxcbiAgICAgICAgICAuLi5wcm9wc1xuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGVscGVyVGV4dCAmJiAvKiBAX19QVVJFX18gKi8ganN4KEhlbHBlclRleHQsIHsgY29sb3IsIGNoaWxkcmVuOiBoZWxwZXJUZXh0IH0pXG4gICAgXSB9KTtcbiAgfVxuKTtcblRleHRhcmVhLmRpc3BsYXlOYW1lID0gXCJUZXh0YXJlYVwiO1xuXG5leHBvcnQgeyBUZXh0YXJlYSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGV4dGFyZWEubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgVGltZWxpbmVDb250ZW50Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQodm9pZCAwKTtcbmZ1bmN0aW9uIHVzZVRpbWVsaW5lQ29udGVudENvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFRpbWVsaW5lQ29udGVudENvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VUaW1lbGluZUNvbnRlbnRDb250ZXh0IHNob3VsZCBiZSB1c2VkIHdpdGhpbiB0aGUgVGltZWxpbmVDb250ZW50Q29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IFRpbWVsaW5lQ29udGVudENvbnRleHQsIHVzZVRpbWVsaW5lQ29udGVudENvbnRleHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRpbWVsaW5lQ29udGVudENvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlVGltZWxpbmVDb250ZW50Q29udGV4dCB9IGZyb20gJy4vVGltZWxpbmVDb250ZW50Q29udGV4dC5tanMnO1xuXG5jb25zdCBUaW1lbGluZUJvZHkgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiBjb250ZW50VGhlbWUgfSA9IHVzZVRpbWVsaW5lQ29udGVudENvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoY29udGVudFRoZW1lLmJvZHksIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcblxuZXhwb3J0IHsgVGltZWxpbmVCb2R5IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZUJvZHkubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgVGltZWxpbmVDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh2b2lkIDApO1xuZnVuY3Rpb24gdXNlVGltZWxpbmVDb250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChUaW1lbGluZUNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VUaW1lbGluZUNvbnRleHQgc2hvdWxkIGJlIHVzZWQgd2l0aGluIHRoZSBUaW1lbGluZUNvbnRleHQgcHJvdmlkZXIhXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgeyBUaW1lbGluZUNvbnRleHQsIHVzZVRpbWVsaW5lQ29udGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGltZWxpbmVDb250ZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IFRpbWVsaW5lSXRlbUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VUaW1lbGluZUl0ZW1Db250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChUaW1lbGluZUl0ZW1Db250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlVGltZWxpbmVJdGVtQ29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIFRpbWVsaW5lSXRlbUNvbnRleHQgcHJvdmlkZXIhXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgeyBUaW1lbGluZUl0ZW1Db250ZXh0LCB1c2VUaW1lbGluZUl0ZW1Db250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZUl0ZW1Db250ZXh0Lm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IFRpbWVsaW5lQ29udGVudENvbnRleHQgfSBmcm9tICcuL1RpbWVsaW5lQ29udGVudENvbnRleHQubWpzJztcbmltcG9ydCB7IHVzZVRpbWVsaW5lQ29udGV4dCB9IGZyb20gJy4vVGltZWxpbmVDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyB1c2VUaW1lbGluZUl0ZW1Db250ZXh0IH0gZnJvbSAnLi9UaW1lbGluZUl0ZW1Db250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRpbWVsaW5lQ29udGVudCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB7IGhvcml6b250YWwgfSA9IHVzZVRpbWVsaW5lQ29udGV4dCgpO1xuICBjb25zdCB7IHRoZW1lOiBpdGVtVGhlbWUgfSA9IHVzZVRpbWVsaW5lSXRlbUNvbnRleHQoKTtcbiAgY29uc3QgdGhlbWUgPSBtZXJnZURlZXAoaXRlbVRoZW1lLmNvbnRlbnQsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goVGltZWxpbmVDb250ZW50Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSB9LCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJ0aW1lbGluZS1jb250ZW50XCIsXG4gICAgICBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUucm9vdC5iYXNlLCBob3Jpem9udGFsID8gdGhlbWUucm9vdC5ob3Jpem9udGFsIDogdGhlbWUucm9vdC52ZXJ0aWNhbCwgY2xhc3NOYW1lKSxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY2hpbGRyZW5cbiAgICB9XG4gICkgfSk7XG59O1xuXG5leHBvcnQgeyBUaW1lbGluZUNvbnRlbnQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRpbWVsaW5lQ29udGVudC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VUaW1lbGluZUNvbnRleHQgfSBmcm9tICcuL1RpbWVsaW5lQ29udGV4dC5tanMnO1xuaW1wb3J0IHsgVGltZWxpbmVJdGVtQ29udGV4dCB9IGZyb20gJy4vVGltZWxpbmVJdGVtQ29udGV4dC5tanMnO1xuXG5jb25zdCBUaW1lbGluZUl0ZW0gPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB7IHRoZW1lOiByb290VGhlbWUsIGhvcml6b250YWwgfSA9IHVzZVRpbWVsaW5lQ29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChyb290VGhlbWUuaXRlbSwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChUaW1lbGluZUl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IHRoZW1lIH0sIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwibGlcIixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwidGltZWxpbmUtaXRlbVwiLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKGhvcml6b250YWwgJiYgdGhlbWUucm9vdC5ob3Jpem9udGFsLCAhaG9yaXpvbnRhbCAmJiB0aGVtZS5yb290LnZlcnRpY2FsLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlblxuICAgIH1cbiAgKSB9KTtcbn07XG5cbmV4cG9ydCB7IFRpbWVsaW5lSXRlbSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGltZWxpbmVJdGVtLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeHMsIGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IHVzZVRpbWVsaW5lQ29udGV4dCB9IGZyb20gJy4vVGltZWxpbmVDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyB1c2VUaW1lbGluZUl0ZW1Db250ZXh0IH0gZnJvbSAnLi9UaW1lbGluZUl0ZW1Db250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRpbWVsaW5lUG9pbnQgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBpY29uOiBJY29uLFxuICB0aGVtZTogY3VzdG9tVGhlbWUgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgeyBob3Jpem9udGFsIH0gPSB1c2VUaW1lbGluZUNvbnRleHQoKTtcbiAgY29uc3QgeyB0aGVtZTogaXRlbVRoZW1lIH0gPSB1c2VUaW1lbGluZUl0ZW1Db250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGl0ZW1UaGVtZS5wb2ludCwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwidGltZWxpbmUtcG9pbnRcIixcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShob3Jpem9udGFsICYmIHRoZW1lLmhvcml6b250YWwsICFob3Jpem9udGFsICYmIHRoZW1lLnZlcnRpY2FsLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgSWNvbiA/IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLm1hcmtlci5pY29uLndyYXBwZXIpLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLm1hcmtlci5pY29uLmJhc2UpIH0pIH0pIDogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogdHdNZXJnZShob3Jpem9udGFsICYmIHRoZW1lLm1hcmtlci5iYXNlLmhvcml6b250YWwsICFob3Jpem9udGFsICYmIHRoZW1lLm1hcmtlci5iYXNlLnZlcnRpY2FsKVxuICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgICAgaG9yaXpvbnRhbCAmJiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLmxpbmUpIH0pXG4gICAgICBdXG4gICAgfVxuICApO1xufTtcblxuZXhwb3J0IHsgVGltZWxpbmVQb2ludCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGltZWxpbmVQb2ludC5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSAnLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwLm1qcyc7XG5pbXBvcnQgeyB1c2VUaW1lbGluZUNvbnRlbnRDb250ZXh0IH0gZnJvbSAnLi9UaW1lbGluZUNvbnRlbnRDb250ZXh0Lm1qcyc7XG5cbmNvbnN0IFRpbWVsaW5lVGltZSA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IGNvbnRlbnRUaGVtZSB9ID0gdXNlVGltZWxpbmVDb250ZW50Q29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChjb250ZW50VGhlbWUudGltZSwgY3VzdG9tVGhlbWUpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcInRpbWVcIiwgeyBjbGFzc05hbWU6IHR3TWVyZ2UodGhlbWUuYmFzZSwgY2xhc3NOYW1lKSwgLi4ucHJvcHMsIGNoaWxkcmVuIH0pO1xufTtcblxuZXhwb3J0IHsgVGltZWxpbmVUaW1lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZVRpbWUubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlVGltZWxpbmVDb250ZW50Q29udGV4dCB9IGZyb20gJy4vVGltZWxpbmVDb250ZW50Q29udGV4dC5tanMnO1xuXG5jb25zdCBUaW1lbGluZVRpdGxlID0gKHtcbiAgYXM6IFRhZyA9IFwiaDNcIixcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWU6IGNvbnRlbnRUaGVtZSB9ID0gdXNlVGltZWxpbmVDb250ZW50Q29udGV4dCgpO1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChjb250ZW50VGhlbWUudGl0bGUsIGN1c3RvbVRoZW1lKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goVGFnLCB7IGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLCAuLi5wcm9wcywgY2hpbGRyZW4gfSk7XG59O1xuXG5leHBvcnQgeyBUaW1lbGluZVRpdGxlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZVRpdGxlLm1qcy5tYXBcbiIsIid1c2UgY2xpZW50JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IFRpbWVsaW5lQm9keSB9IGZyb20gJy4vVGltZWxpbmVCb2R5Lm1qcyc7XG5pbXBvcnQgeyBUaW1lbGluZUNvbnRlbnQgfSBmcm9tICcuL1RpbWVsaW5lQ29udGVudC5tanMnO1xuaW1wb3J0IHsgVGltZWxpbmVDb250ZXh0IH0gZnJvbSAnLi9UaW1lbGluZUNvbnRleHQubWpzJztcbmltcG9ydCB7IFRpbWVsaW5lSXRlbSB9IGZyb20gJy4vVGltZWxpbmVJdGVtLm1qcyc7XG5pbXBvcnQgeyBUaW1lbGluZVBvaW50IH0gZnJvbSAnLi9UaW1lbGluZVBvaW50Lm1qcyc7XG5pbXBvcnQgeyBUaW1lbGluZVRpbWUgfSBmcm9tICcuL1RpbWVsaW5lVGltZS5tanMnO1xuaW1wb3J0IHsgVGltZWxpbmVUaXRsZSB9IGZyb20gJy4vVGltZWxpbmVUaXRsZS5tanMnO1xuXG5jb25zdCBUaW1lbGluZUNvbXBvbmVudCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGhvcml6b250YWwsXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnRpbWVsaW5lLCBjdXN0b21UaGVtZSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFRpbWVsaW5lQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSwgaG9yaXpvbnRhbCB9LCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcIm9sXCIsXG4gICAge1xuICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcInRpbWVsaW5lLWNvbXBvbmVudFwiLFxuICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICBob3Jpem9udGFsICYmIHRoZW1lLnJvb3QuZGlyZWN0aW9uLmhvcml6b250YWwsXG4gICAgICAgICFob3Jpem9udGFsICYmIHRoZW1lLnJvb3QuZGlyZWN0aW9uLnZlcnRpY2FsLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICksXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNoaWxkcmVuXG4gICAgfVxuICApIH0pO1xufTtcblRpbWVsaW5lQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gXCJUaW1lbGluZVwiO1xuVGltZWxpbmVJdGVtLmRpc3BsYXlOYW1lID0gXCJUaW1lbGluZS5JdGVtXCI7XG5UaW1lbGluZVBvaW50LmRpc3BsYXlOYW1lID0gXCJUaW1lbGluZS5Qb2ludFwiO1xuVGltZWxpbmVDb250ZW50LmRpc3BsYXlOYW1lID0gXCJUaW1lbGluZS5Db250ZW50XCI7XG5UaW1lbGluZVRpbWUuZGlzcGxheU5hbWUgPSBcIlRpbWVsaW5lLlRpbWVcIjtcblRpbWVsaW5lVGl0bGUuZGlzcGxheU5hbWUgPSBcIlRpbWVsaW5lLlRpdGxlXCI7XG5UaW1lbGluZUJvZHkuZGlzcGxheU5hbWUgPSBcIlRpbWVsaW5lLkJvZHlcIjtcbmNvbnN0IFRpbWVsaW5lID0gT2JqZWN0LmFzc2lnbihUaW1lbGluZUNvbXBvbmVudCwge1xuICBJdGVtOiBUaW1lbGluZUl0ZW0sXG4gIFBvaW50OiBUaW1lbGluZVBvaW50LFxuICBDb250ZW50OiBUaW1lbGluZUNvbnRlbnQsXG4gIFRpbWU6IFRpbWVsaW5lVGltZSxcbiAgVGl0bGU6IFRpbWVsaW5lVGl0bGUsXG4gIEJvZHk6IFRpbWVsaW5lQm9keVxufSk7XG5cbmV4cG9ydCB7IFRpbWVsaW5lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZS5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBUb2FzdENvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG5mdW5jdGlvbiB1c2VUb2FzdENvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFRvYXN0Q29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZVRvYXN0Q29udGV4dCBzaG91bGQgYmUgdXNlZCB3aXRoaW4gdGhlIFRvYXN0Q29udGV4dCBwcm92aWRlciFcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmV4cG9ydCB7IFRvYXN0Q29udGV4dCwgdXNlVG9hc3RDb250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ub2FzdENvbnRleHQubWpzLm1hcFxuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgSGlYIH0gZnJvbSAncmVhY3QtaWNvbnMvaGknO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gJ3RhaWx3aW5kLW1lcmdlJztcbmltcG9ydCB7IG1lcmdlRGVlcCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcC5tanMnO1xuaW1wb3J0IHsgdXNlVG9hc3RDb250ZXh0IH0gZnJvbSAnLi9Ub2FzdENvbnRleHQubWpzJztcblxuY29uc3QgVG9hc3RUb2dnbGUgPSAoe1xuICBjbGFzc05hbWUsXG4gIG9uQ2xpY2ssXG4gIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICB4SWNvbjogWEljb24gPSBIaVgsXG4gIG9uRGlzbWlzcyxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgeyB0aGVtZTogcm9vdFRoZW1lLCBkdXJhdGlvbiwgaXNDbG9zZWQsIGlzUmVtb3ZlZCwgc2V0SXNDbG9zZWQsIHNldElzUmVtb3ZlZCB9ID0gdXNlVG9hc3RDb250ZXh0KCk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKHJvb3RUaGVtZS50b2dnbGUsIGN1c3RvbVRoZW1lKTtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZSkgPT4ge1xuICAgIGlmIChvbkNsaWNrKSBvbkNsaWNrKGUpO1xuICAgIGlmIChvbkRpc21pc3MpIHtcbiAgICAgIG9uRGlzbWlzcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZXRJc0Nsb3NlZCghaXNDbG9zZWQpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gc2V0SXNSZW1vdmVkKCFpc1JlbW92ZWQpLCBkdXJhdGlvbik7XG4gIH07XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwiYnV0dG9uXCIsXG4gICAge1xuICAgICAgXCJhcmlhLWxhYmVsXCI6IFwiQ2xvc2VcIixcbiAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5iYXNlLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChYSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIGNsYXNzTmFtZTogdGhlbWUuaWNvbiB9KVxuICAgIH1cbiAgKTtcbn07XG5cbmV4cG9ydCB7IFRvYXN0VG9nZ2xlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ub2FzdFRvZ2dsZS5tanMubWFwXG4iLCIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcbmltcG9ydCB7IFRvYXN0Q29udGV4dCB9IGZyb20gJy4vVG9hc3RDb250ZXh0Lm1qcyc7XG5pbXBvcnQgeyBUb2FzdFRvZ2dsZSB9IGZyb20gJy4vVG9hc3RUb2dnbGUubWpzJztcblxuY29uc3QgZHVyYXRpb25DbGFzc2VzID0ge1xuICA3NTogXCJkdXJhdGlvbi03NVwiLFxuICAxMDA6IFwiZHVyYXRpb24tMTAwXCIsXG4gIDE1MDogXCJkdXJhdGlvbi0xNTBcIixcbiAgMjAwOiBcImR1cmF0aW9uLTIwMFwiLFxuICAzMDA6IFwiZHVyYXRpb24tMzAwXCIsXG4gIDUwMDogXCJkdXJhdGlvbi01MDBcIixcbiAgNzAwOiBcImR1cmF0aW9uLTcwMFwiLFxuICAxZTM6IFwiZHVyYXRpb24tMTAwMFwiXG59O1xuY29uc3QgVG9hc3RDb21wb25lbnQgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBkdXJhdGlvbiA9IDMwMCwgdGhlbWU6IGN1c3RvbVRoZW1lID0ge30sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgW2lzQ2xvc2VkLCBzZXRJc0Nsb3NlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtpc1JlbW92ZWQsIHNldElzUmVtb3ZlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHRoZW1lID0gbWVyZ2VEZWVwKGdldFRoZW1lKCkudG9hc3QsIGN1c3RvbVRoZW1lKTtcbiAgaWYgKGlzUmVtb3ZlZCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFRvYXN0Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyB0aGVtZSwgZHVyYXRpb24sIGlzQ2xvc2VkLCBpc1JlbW92ZWQsIHNldElzQ2xvc2VkLCBzZXRJc1JlbW92ZWQgfSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZmxvd2JpdGUtdG9hc3RcIixcbiAgICAgIHJvbGU6IFwiYWxlcnRcIixcbiAgICAgIGNsYXNzTmFtZTogdHdNZXJnZSh0aGVtZS5yb290LmJhc2UsIGR1cmF0aW9uQ2xhc3Nlc1tkdXJhdGlvbl0sIGlzQ2xvc2VkICYmIHRoZW1lLnJvb3QuY2xvc2VkLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBjaGlsZHJlblxuICAgIH1cbiAgKSB9KTtcbn07XG5Ub2FzdENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IFwiVG9hc3RcIjtcblRvYXN0VG9nZ2xlLmRpc3BsYXlOYW1lID0gXCJUb2FzdC5Ub2dnbGVcIjtcbmNvbnN0IFRvYXN0ID0gT2JqZWN0LmFzc2lnbihUb2FzdENvbXBvbmVudCwge1xuICBUb2dnbGU6IFRvYXN0VG9nZ2xlXG59KTtcblxuZXhwb3J0IHsgVG9hc3QgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRvYXN0Lm1qcy5tYXBcbiIsImltcG9ydCB7IGpzeHMsIEZyYWdtZW50LCBqc3ggfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VJZCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tICd0YWlsd2luZC1tZXJnZSc7XG5pbXBvcnQgeyBtZXJnZURlZXAgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAubWpzJztcbmltcG9ydCB7IGdldFRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUtc3RvcmUvaW5kZXgubWpzJztcblxuY29uc3QgVG9nZ2xlU3dpdGNoID0gZm9yd2FyZFJlZihcbiAgKHtcbiAgICBjaGVja2VkLFxuICAgIGNsYXNzTmFtZSxcbiAgICBjb2xvciA9IFwiYmx1ZVwiLFxuICAgIHNpemluZyA9IFwibWRcIixcbiAgICBkaXNhYmxlZCxcbiAgICBsYWJlbCxcbiAgICBuYW1lLFxuICAgIG9uQ2hhbmdlLFxuICAgIHRoZW1lOiBjdXN0b21UaGVtZSA9IHt9LFxuICAgIC4uLnByb3BzXG4gIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgICBjb25zdCB0aGVtZSA9IG1lcmdlRGVlcChnZXRUaGVtZSgpLnRvZ2dsZVN3aXRjaCwgY3VzdG9tVGhlbWUpO1xuICAgIGNvbnN0IHRvZ2dsZSA9ICgpID0+IG9uQ2hhbmdlKCFjaGVja2VkKTtcbiAgICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICAgIHRvZ2dsZSgpO1xuICAgIH07XG4gICAgY29uc3QgaGFuZGxlT25LZXlEb3duID0gKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQuY29kZSA9PSBcIkVudGVyXCIpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4cyhGcmFnbWVudCwgeyBjaGlsZHJlbjogW1xuICAgICAgbmFtZSAmJiBjaGVja2VkID8gLyogQF9fUFVSRV9fICovIGpzeChcImlucHV0XCIsIHsgcmVmLCBjaGVja2VkLCBoaWRkZW46IHRydWUsIG5hbWUsIHJlYWRPbmx5OiB0cnVlLCB0eXBlOiBcImNoZWNrYm94XCIsIGNsYXNzTmFtZTogXCJzci1vbmx5XCIgfSkgOiBudWxsLFxuICAgICAgLyogQF9fUFVSRV9fICovIGpzeHMoXG4gICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBcImFyaWEtY2hlY2tlZFwiOiBjaGVja2VkLFxuICAgICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGAke2lkfS1mbG93Yml0ZS10b2dnbGVzd2l0Y2gtbGFiZWxgLFxuICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgIGlkOiBgJHtpZH0tZmxvd2JpdGUtdG9nZ2xlc3dpdGNoYCxcbiAgICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICAgICAgICBvbktleURvd246IGhhbmRsZU9uS2V5RG93bixcbiAgICAgICAgICByb2xlOiBcInN3aXRjaFwiLFxuICAgICAgICAgIHRhYkluZGV4OiAwLFxuICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKHRoZW1lLnJvb3QuYmFzZSwgdGhlbWUucm9vdC5hY3RpdmVbZGlzYWJsZWQgPyBcIm9mZlwiIDogXCJvblwiXSwgY2xhc3NOYW1lKSxcbiAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgLyogQF9fUFVSRV9fICovIGpzeChcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJmbG93Yml0ZS10b2dnbGVzd2l0Y2gtdG9nZ2xlXCIsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0d01lcmdlKFxuICAgICAgICAgICAgICAgICAgdGhlbWUudG9nZ2xlLmJhc2UsXG4gICAgICAgICAgICAgICAgICB0aGVtZS50b2dnbGUuY2hlY2tlZFtjaGVja2VkID8gXCJvblwiIDogXCJvZmZcIl0sXG4gICAgICAgICAgICAgICAgICBjaGVja2VkICYmIHRoZW1lLnRvZ2dsZS5jaGVja2VkLmNvbG9yW2NvbG9yXSxcbiAgICAgICAgICAgICAgICAgIHRoZW1lLnRvZ2dsZS5zaXplc1tzaXppbmddXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbGFiZWw/Lmxlbmd0aCA/IC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImZsb3diaXRlLXRvZ2dsZXN3aXRjaC1sYWJlbFwiLFxuICAgICAgICAgICAgICAgIGlkOiBgJHtpZH0tZmxvd2JpdGUtdG9nZ2xlc3dpdGNoLWxhYmVsYCxcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHRoZW1lLnJvb3QubGFiZWwsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IGxhYmVsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkgOiBudWxsXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICApXG4gICAgXSB9KTtcbiAgfVxuKTtcblRvZ2dsZVN3aXRjaC5kaXNwbGF5TmFtZSA9IFwiVG9nZ2xlU3dpdGNoXCI7XG5cbmV4cG9ydCB7IFRvZ2dsZVN3aXRjaCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VG9nZ2xlU3dpdGNoLm1qcy5tYXBcbiIsImltcG9ydCB7IEJ1dHRvbiBhcyBCYXNlQnV0dG9uIH0gZnJvbSBcImZsb3diaXRlLXJlYWN0XCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgQnV0dG9uID0gKHsgdHlwZSAsIHZhcmlhbnQgLCBvbkNsaWNrIH0pID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8QmFzZUJ1dHRvbiBjb2xvcj17dmFyaWFudH0gcGlsbCBvbkNsaWNrPXtvbkNsaWNrfT5cbiAgICAgICAgICAgIHsgdHlwZSA9PSAxICYmIFxuPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZGF0YS1zbG90PVwiaWNvblwiIGNsYXNzPVwic2l6ZS02XCI+XG4gIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIGQ9XCJNMTIgNC41djE1bTcuNS03LjVoLTE1XCI+PC9wYXRoPlxuPC9zdmc+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7IHR5cGUgPT0gMiAmJiBcbjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGRhdGEtc2xvdD1cImljb25cIiBjbGFzcz1cInNpemUtNlwiPlxuICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBkPVwibTE2Ljg2MiA0LjQ4NyAxLjY4Ny0xLjY4OGExLjg3NSAxLjg3NSAwIDEgMSAyLjY1MiAyLjY1Mkw2LjgzMiAxOS44MmE0LjUgNC41IDAgMCAxLTEuODk3IDEuMTNsLTIuNjg1LjguOC0yLjY4NWE0LjUgNC41IDAgMCAxIDEuMTMtMS44OTdMMTYuODYzIDQuNDg3Wm0wIDBMMTkuNSA3LjEyNVwiPjwvcGF0aD5cbjwvc3ZnPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeyB0eXBlID09IDMgJiYgXG48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZGF0YS1zbG90PVwiaWNvblwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJzaXplLTZcIj5cbiAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgZD1cIk02IDIwLjI1aDEyQTIuMjUgMi4yNSAwIDAgMCAyMC4yNSAxOFY3LjVMMTYuNSAzLjc1SDZBMi4yNSAyLjI1IDAgMCAwIDMuNzUgNnYxMkEyLjI1IDIuMjUgMCAwIDAgNiAyMC4yNXptOS43NS0xNi41djVoLTkuNXYtNXpNMTMgNS41VjdtLTYuNzUgNC4yNWgxMS41djYuNUg2LjI1WlwiPjwvcGF0aD5cbjwvc3ZnPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeyB0eXBlID09IDQgJiYgXG48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBkYXRhLXNsb3Q9XCJpY29uXCIgY2xhc3M9XCJzaXplLTZcIj5cbiAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgZD1cIk05IDEyLjc1IDExLjI1IDE1IDE1IDkuNzVNMjEgMTJhOSA5IDAgMSAxLTE4IDAgOSA5IDAgMCAxIDE4IDBaXCI+PC9wYXRoPlxuPC9zdmc+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7IHR5cGUgPT0gNSAmJiBcbjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGRhdGEtc2xvdD1cImljb25cIiBjbGFzcz1cInNpemUtNlwiPlxuICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBkPVwibTkuNzUgOS43NSA0LjUgNC41bTAtNC41LTQuNSA0LjVNMjEgMTJhOSA5IDAgMSAxLTE4IDAgOSA5IDAgMCAxIDE4IDBaXCI+PC9wYXRoPlxuPC9zdmc+IH1cbiAgICAgICAgPC9CYXNlQnV0dG9uPlxuICAgICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBCdXR0b247XG4iLCIvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgYHRoaW5nYCBpcyBhbiBvYmplY3QgZm9yIHRoZSBwdXJwb3NlcyBvZiBSSlNGLiBJbiB0aGlzIGNhc2UsIGB0aGluZ2AgaXMgYW4gb2JqZWN0IGlmIGl0IGhhc1xuICogdGhlIHR5cGUgYG9iamVjdGAgYnV0IGlzIE5PVCBudWxsLCBhbiBhcnJheSBvciBhIEZpbGUuXG4gKlxuICogQHBhcmFtIHRoaW5nIC0gVGhlIHRoaW5nIHRvIGNoZWNrIHRvIHNlZSB3aGV0aGVyIGl0IGlzIGFuIG9iamVjdFxuICogQHJldHVybnMgLSBUcnVlIGlmIGl0IGlzIGEgbm9uLW51bGwsIG5vbi1hcnJheSwgbm9uLUZpbGUgb2JqZWN0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzT2JqZWN0KHRoaW5nKSB7XG4gICAgaWYgKHR5cGVvZiB0aGluZyAhPT0gJ29iamVjdCcgfHwgdGhpbmcgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBsYXN0TW9kaWZpZWQgaXMgZ3VhcmFudGVlZCB0byBiZSBhIG51bWJlciBvbiBhIEZpbGUgaW5zdGFuY2VcbiAgICAvLyBhcyBwZXIgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL0ZpbGVBUEkvI2Rmbi1sYXN0TW9kaWZpZWRcbiAgICBpZiAodHlwZW9mIHRoaW5nLmxhc3RNb2RpZmllZCA9PT0gJ251bWJlcicgJiYgdHlwZW9mIEZpbGUgIT09ICd1bmRlZmluZWQnICYmIHRoaW5nIGluc3RhbmNlb2YgRmlsZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIGdldE1vbnRoIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBtZXRob2Qgb24gYSBEYXRlIGluc3RhbmNlXG4gICAgLy8gYXMgcGVyIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyL211bHRpcGFnZS9udW1iZXJzLWFuZC1kYXRlcy5odG1sI3NlYy1kYXRlLnByb3RvdHlwZS5nZXRtb250aFxuICAgIGlmICh0eXBlb2YgdGhpbmcuZ2V0TW9udGggPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIERhdGUgIT09ICd1bmRlZmluZWQnICYmIHRoaW5nIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAhQXJyYXkuaXNBcnJheSh0aGluZyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pc09iamVjdC5qcy5tYXAiLCJpbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pc09iamVjdCc7XG4vKiogQ2hlY2tzIHRoZSBzY2hlbWEgdG8gc2VlIGlmIGl0IGlzIGFsbG93aW5nIGFkZGl0aW9uYWwgaXRlbXMsIGJ5IHZlcmlmeWluZyB0aGF0IGBzY2hlbWEuYWRkaXRpb25hbEl0ZW1zYCBpcyBhblxuICogb2JqZWN0LiBUaGUgdXNlciBpcyB3YXJuZWQgaW4gdGhlIGNvbnNvbGUgaWYgYHNjaGVtYS5hZGRpdGlvbmFsSXRlbXNgIGhhcyB0aGUgdmFsdWUgYHRydWVgLlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIG9iamVjdCB0byBjaGVja1xuICogQHJldHVybnMgLSBUcnVlIGlmIGFkZGl0aW9uYWwgaXRlbXMgaXMgYWxsb3dlZCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFsbG93QWRkaXRpb25hbEl0ZW1zKHNjaGVtYSkge1xuICAgIGlmIChzY2hlbWEuYWRkaXRpb25hbEl0ZW1zID09PSB0cnVlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignYWRkaXRpb25hbEl0ZW1zPXRydWUgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIGlzT2JqZWN0KHNjaGVtYS5hZGRpdGlvbmFsSXRlbXMpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YWxsb3dBZGRpdGlvbmFsSXRlbXMuanMubWFwIiwiLyoqIEF0dGVtcHRzIHRvIGNvbnZlcnQgdGhlIHN0cmluZyBpbnRvIGEgbnVtYmVyLiBJZiBhbiBlbXB0eSBzdHJpbmcgaXMgcHJvdmlkZWQsIHRoZW4gYHVuZGVmaW5lZGAgaXMgcmV0dXJuZWQuIElmIGFcbiAqIGBudWxsYCBpcyBwcm92aWRlZCwgaXQgaXMgcmV0dXJuZWQuIElmIHRoZSBzdHJpbmcgZW5kcyBpbiBhIGAuYCB0aGVuIHRoZSBzdHJpbmcgaXMgcmV0dXJuZWQgYmVjYXVzZSB0aGUgdXNlciBtYXkgYmVcbiAqIGluIHRoZSBtaWRkbGUgb2YgdHlwaW5nIGEgZmxvYXQgbnVtYmVyLiBJZiBhIG51bWJlciBlbmRzIGluIGEgcGF0dGVybiBsaWtlIGAuMGAsIGAuMjBgLCBgLjAzMGAsIHN0cmluZyBpcyByZXR1cm5lZFxuICogYmVjYXVzZSB0aGUgdXNlciBtYXkgYmUgdHlwaW5nIG51bWJlciB0aGF0IHdpbGwgZW5kIGluIGEgbm9uLXplcm8gZGlnaXQuIE90aGVyd2lzZSwgdGhlIHN0cmluZyBpcyB3cmFwcGVkIGJ5XG4gKiBgTnVtYmVyKClgIGFuZCBpZiB0aGF0IHJlc3VsdCBpcyBub3QgYE5hTmAsIHRoYXQgbnVtYmVyIHdpbGwgYmUgcmV0dXJuZWQsIG90aGVyd2lzZSB0aGUgc3RyaW5nIGB2YWx1ZWAgd2lsbCBiZS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgc3RyaW5nIG9yIG51bGwgdmFsdWUgdG8gY29udmVydCB0byBhIG51bWJlclxuICogQHJldHVybnMgLSBUaGUgYHZhbHVlYCBjb252ZXJ0ZWQgdG8gYSBudW1iZXIgd2hlbiBhcHByb3ByaWF0ZSwgb3RoZXJ3aXNlIHRoZSBgdmFsdWVgXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFzTnVtYmVyKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICgvXFwuJC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgLy8gJzMuJyBjYW4ndCByZWFsbHkgYmUgY29uc2lkZXJlZCBhIG51bWJlciBldmVuIGlmIGl0IHBhcnNlcyBpbiBqcy4gVGhlXG4gICAgICAgIC8vIHVzZXIgaXMgbW9zdCBsaWtlbHkgZW50ZXJpbmcgYSBmbG9hdC5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoL1xcLjAkLy50ZXN0KHZhbHVlKSkge1xuICAgICAgICAvLyB3ZSBuZWVkIHRvIHJldHVybiB0aGlzIGFzIGEgc3RyaW5nIGhlcmUsIHRvIGFsbG93IGZvciBpbnB1dCBsaWtlIDMuMDdcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoL1xcLlxcZCowJC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgLy8gSXQncyBhIG51bWJlciwgdGhhdCdzIGNvb2wgLSBidXQgd2UgbmVlZCBpdCBhcyBhIHN0cmluZyBzbyBpdCBkb2Vzbid0IHNjcmV3XG4gICAgICAgIC8vIHdpdGggdGhlIHVzZXIgd2hlbiBlbnRlcmluZyBkb2xsYXIgYW1vdW50cyBvciBvdGhlciB2YWx1ZXMgKHN1Y2ggYXMgdGhvc2Ugd2l0aFxuICAgICAgICAvLyBzcGVjaWZpYyBwcmVjaXNpb24gb3IgbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cylcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBuID0gTnVtYmVyKHZhbHVlKTtcbiAgICBjb25zdCB2YWxpZCA9IHR5cGVvZiBuID09PSAnbnVtYmVyJyAmJiAhTnVtYmVyLmlzTmFOKG4pO1xuICAgIHJldHVybiB2YWxpZCA/IG4gOiB2YWx1ZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFzTnVtYmVyLmpzLm1hcCIsIi8qKiBCZWxvdyBhcmUgdGhlIGxpc3Qgb2YgYWxsIHRoZSBrZXlzIGludG8gdmFyaW91cyBlbGVtZW50cyBvZiBhIFJKU0ZTY2hlbWEgb3IgVWlTY2hlbWEgdGhhdCBhcmUgdXNlZCBieSB0aGUgdmFyaW91c1xuICogdXRpbGl0eSBmdW5jdGlvbnMuIEluIGFkZGl0aW9uIHRvIHRob3NlIGtleXMsIHRoZXJlIGFyZSB0aGUgc3BlY2lhbCBgQURESVRJT05BTF9QUk9QRVJUWV9GTEFHYCBhbmRcbiAqIGBSSlNGX0FERElUSU9OQUxfUFJPUEVSVElFU19GTEFHYCBmbGFncyB0aGF0IGlzIGFkZGVkIHRvIGEgc2NoZW1hIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucyBieSB0aGUgYHJldHJpZXZlU2NoZW1hKClgXG4gKiB1dGlsaXR5LlxuICovXG5leHBvcnQgY29uc3QgQURESVRJT05BTF9QUk9QRVJUWV9GTEFHID0gJ19fYWRkaXRpb25hbF9wcm9wZXJ0eSc7XG5leHBvcnQgY29uc3QgQURESVRJT05BTF9QUk9QRVJUSUVTX0tFWSA9ICdhZGRpdGlvbmFsUHJvcGVydGllcyc7XG5leHBvcnQgY29uc3QgQUxMX09GX0tFWSA9ICdhbGxPZic7XG5leHBvcnQgY29uc3QgQU5ZX09GX0tFWSA9ICdhbnlPZic7XG5leHBvcnQgY29uc3QgQ09OU1RfS0VZID0gJ2NvbnN0JztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0tFWSA9ICdkZWZhdWx0JztcbmV4cG9ydCBjb25zdCBERUZJTklUSU9OU19LRVkgPSAnZGVmaW5pdGlvbnMnO1xuZXhwb3J0IGNvbnN0IERFUEVOREVOQ0lFU19LRVkgPSAnZGVwZW5kZW5jaWVzJztcbmV4cG9ydCBjb25zdCBFTlVNX0tFWSA9ICdlbnVtJztcbmV4cG9ydCBjb25zdCBFUlJPUlNfS0VZID0gJ19fZXJyb3JzJztcbmV4cG9ydCBjb25zdCBJRF9LRVkgPSAnJGlkJztcbmV4cG9ydCBjb25zdCBJRl9LRVkgPSAnaWYnO1xuZXhwb3J0IGNvbnN0IElURU1TX0tFWSA9ICdpdGVtcyc7XG5leHBvcnQgY29uc3QgSlVOS19PUFRJT05fSUQgPSAnXyRqdW5rX29wdGlvbl9zY2hlbWFfaWQkXyc7XG5leHBvcnQgY29uc3QgTkFNRV9LRVkgPSAnJG5hbWUnO1xuZXhwb3J0IGNvbnN0IE9ORV9PRl9LRVkgPSAnb25lT2YnO1xuZXhwb3J0IGNvbnN0IFBST1BFUlRJRVNfS0VZID0gJ3Byb3BlcnRpZXMnO1xuZXhwb3J0IGNvbnN0IFJFUVVJUkVEX0tFWSA9ICdyZXF1aXJlZCc7XG5leHBvcnQgY29uc3QgU1VCTUlUX0JUTl9PUFRJT05TX0tFWSA9ICdzdWJtaXRCdXR0b25PcHRpb25zJztcbmV4cG9ydCBjb25zdCBSRUZfS0VZID0gJyRyZWYnO1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBSZXBsYWNlIHdpdGggY29ycmVjdGx5IHNwZWxsZWQgY29uc3RhbnQgYFJKU0ZfQURESVRJT05BTF9QUk9QRVJUSUVTX0ZMQUdgXG4gKi9cbmV4cG9ydCBjb25zdCBSSlNGX0FERElUT05BTF9QUk9QRVJUSUVTX0ZMQUcgPSAnX19yanNmX2FkZGl0aW9uYWxQcm9wZXJ0aWVzJztcbmV4cG9ydCBjb25zdCBSSlNGX0FERElUSU9OQUxfUFJPUEVSVElFU19GTEFHID0gJ19fcmpzZl9hZGRpdGlvbmFsUHJvcGVydGllcyc7XG5leHBvcnQgY29uc3QgUk9PVF9TQ0hFTUFfUFJFRklYID0gJ19fcmpzZl9yb290U2NoZW1hJztcbmV4cG9ydCBjb25zdCBVSV9GSUVMRF9LRVkgPSAndWk6ZmllbGQnO1xuZXhwb3J0IGNvbnN0IFVJX1dJREdFVF9LRVkgPSAndWk6d2lkZ2V0JztcbmV4cG9ydCBjb25zdCBVSV9PUFRJT05TX0tFWSA9ICd1aTpvcHRpb25zJztcbmV4cG9ydCBjb25zdCBVSV9HTE9CQUxfT1BUSU9OU19LRVkgPSAndWk6Z2xvYmFsT3B0aW9ucyc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb25zdGFudHMuanMubWFwIiwiaW1wb3J0IHsgVUlfT1BUSU9OU19LRVksIFVJX1dJREdFVF9LRVkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pc09iamVjdCc7XG4vKiogR2V0IGFsbCBwYXNzZWQgb3B0aW9ucyBmcm9tIHVpOm9wdGlvbnMsIGFuZCB1aTo8b3B0aW9uTmFtZT4sIHJldHVybmluZyB0aGVtIGluIGFuIG9iamVjdCB3aXRoIHRoZSBgdWk6YFxuICogc3RyaXBwZWQgb2ZmLiBBbnkgYGdsb2JhbE9wdGlvbnNgIHdpbGwgYWx3YXlzIGJlIHJldHVybmVkLCB1bmxlc3MgdGhleSBhcmUgb3ZlcnJpZGRlbiBieSBvcHRpb25zIGluIHRoZSBgdWlTY2hlbWFgLlxuICpcbiAqIEBwYXJhbSBbdWlTY2hlbWE9e31dIC0gVGhlIFVJIFNjaGVtYSBmcm9tIHdoaWNoIHRvIGdldCBhbnkgYHVpOnh4eGAgb3B0aW9uc1xuICogQHBhcmFtIFtnbG9iYWxPcHRpb25zPXt9XSAtIFRoZSBvcHRpb25hbCBHbG9iYWwgVUkgU2NoZW1hIGZyb20gd2hpY2ggdG8gZ2V0IGFueSBmYWxsYmFjayBgeHh4YCBvcHRpb25zXG4gKiBAcmV0dXJucyAtIEFuIG9iamVjdCBjb250YWluaW5nIGFsbCB0aGUgYHVpOnh4eGAgb3B0aW9ucyB3aXRoIHRoZSBgdWk6YCBzdHJpcHBlZCBvZmYgYWxvbmcgd2l0aCBhbGwgYGdsb2JhbE9wdGlvbnNgXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFVpT3B0aW9ucyh1aVNjaGVtYSA9IHt9LCBnbG9iYWxPcHRpb25zID0ge30pIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModWlTY2hlbWEpXG4gICAgICAgIC5maWx0ZXIoKGtleSkgPT4ga2V5LmluZGV4T2YoJ3VpOicpID09PSAwKVxuICAgICAgICAucmVkdWNlKChvcHRpb25zLCBrZXkpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB1aVNjaGVtYVtrZXldO1xuICAgICAgICBpZiAoa2V5ID09PSBVSV9XSURHRVRfS0VZICYmIGlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignU2V0dGluZyBvcHRpb25zIHZpYSB1aTp3aWRnZXQgb2JqZWN0IGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQsIHVzZSB1aTpvcHRpb25zIGluc3RlYWQnKTtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgICAgICB9XG4gICAgICAgIGlmIChrZXkgPT09IFVJX09QVElPTlNfS0VZICYmIGlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4ub3B0aW9ucywgLi4udmFsdWUgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5vcHRpb25zLCBba2V5LnN1YnN0cmluZygzKV06IHZhbHVlIH07XG4gICAgfSwgeyAuLi5nbG9iYWxPcHRpb25zIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0VWlPcHRpb25zLmpzLm1hcCIsImltcG9ydCBnZXRVaU9wdGlvbnMgZnJvbSAnLi9nZXRVaU9wdGlvbnMnO1xuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBmaWVsZCBkZXNjcmliZWQgYnkgYHNjaGVtYWAsIGhhdmluZyB0aGUgYHVpU2NoZW1hYCBhbmQgYGZvcm1EYXRhYCBzdXBwb3J0cyBleHBhbmRpbmcuIFRoZSBVSSBmb3JcbiAqIHRoZSBmaWVsZCBjYW4gZXhwYW5kIGlmIGl0IGhhcyBhZGRpdGlvbmFsIHByb3BlcnRpZXMsIGlzIG5vdCBmb3JjZWQgYXMgbm9uLWV4cGFuZGFibGUgYnkgdGhlIGB1aVNjaGVtYWAgYW5kIHRoZVxuICogYGZvcm1EYXRhYCBvYmplY3QgZG9lc24ndCBhbHJlYWR5IGhhdmUgYHNjaGVtYS5tYXhQcm9wZXJ0aWVzYCBlbGVtZW50cy5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3IgdGhlIGZpZWxkIHRoYXQgaXMgYmVpbmcgY2hlY2tlZFxuICogQHBhcmFtIFt1aVNjaGVtYT17fV0gLSBUaGUgdWlTY2hlbWEgZm9yIHRoZSBmaWVsZFxuICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgZm9ybURhdGEgZm9yIHRoZSBmaWVsZFxuICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBzY2hlbWEgZWxlbWVudCBoYXMgYWRkaXRpb25hbFByb3BlcnRpZXMsIGlzIGV4cGFuZGFibGUsIGFuZCBub3QgYXQgdGhlIG1heFByb3BlcnRpZXMgbGltaXRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY2FuRXhwYW5kKHNjaGVtYSwgdWlTY2hlbWEgPSB7fSwgZm9ybURhdGEpIHtcbiAgICBpZiAoIXNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHsgZXhwYW5kYWJsZSA9IHRydWUgfSA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSk7XG4gICAgaWYgKGV4cGFuZGFibGUgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBleHBhbmRhYmxlO1xuICAgIH1cbiAgICAvLyBpZiB1aTpvcHRpb25zLmV4cGFuZGFibGUgd2FzIG5vdCBleHBsaWNpdGx5IHNldCB0byBmYWxzZSwgd2UgY2FuIGFkZFxuICAgIC8vIGFub3RoZXIgcHJvcGVydHkgaWYgd2UgaGF2ZSBub3QgZXhjZWVkZWQgbWF4UHJvcGVydGllcyB5ZXRcbiAgICBpZiAoc2NoZW1hLm1heFByb3BlcnRpZXMgIT09IHVuZGVmaW5lZCAmJiBmb3JtRGF0YSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZm9ybURhdGEpLmxlbmd0aCA8IHNjaGVtYS5tYXhQcm9wZXJ0aWVzO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNhbkV4cGFuZC5qcy5tYXAiLCIvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCAmJiBnbG9iYWwuT2JqZWN0ID09PSBPYmplY3QgJiYgZ2xvYmFsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZyZWVHbG9iYWw7XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ltYm9sO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlR2V0VGFnYCB3aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByYXcgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gZ2V0UmF3VGFnKHZhbHVlKSB7XG4gIHZhciBpc093biA9IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIHN5bVRvU3RyaW5nVGFnKSxcbiAgICAgIHRhZyA9IHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcblxuICB0cnkge1xuICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHVuZGVmaW5lZDtcbiAgICB2YXIgdW5tYXNrZWQgPSB0cnVlO1xuICB9IGNhdGNoIChlKSB7fVxuXG4gIHZhciByZXN1bHQgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgaWYgKHVubWFza2VkKSB7XG4gICAgaWYgKGlzT3duKSB7XG4gICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB0YWc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0UmF3VGFnO1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb2JqZWN0VG9TdHJpbmc7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgZ2V0UmF3VGFnID0gcmVxdWlyZSgnLi9fZ2V0UmF3VGFnJyksXG4gICAgb2JqZWN0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19vYmplY3RUb1N0cmluZycpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmluZWRdJztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWRUYWcgOiBudWxsVGFnO1xuICB9XG4gIHJldHVybiAoc3ltVG9TdHJpbmdUYWcgJiYgc3ltVG9TdHJpbmdUYWcgaW4gT2JqZWN0KHZhbHVlKSlcbiAgICA/IGdldFJhd1RhZyh2YWx1ZSlcbiAgICA6IG9iamVjdFRvU3RyaW5nKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0VGFnO1xuIiwiLyoqXG4gKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3ZlckFyZztcbiIsInZhciBvdmVyQXJnID0gcmVxdWlyZSgnLi9fb3ZlckFyZycpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBnZXRQcm90b3R5cGUgPSBvdmVyQXJnKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRQcm90b3R5cGU7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdExpa2U7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBpbmZlciB0aGUgYE9iamVjdGAgY29uc3RydWN0b3IuICovXG52YXIgb2JqZWN0Q3RvclN0cmluZyA9IGZ1bmNUb1N0cmluZy5jYWxsKE9iamVjdCk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxuICogYE9iamVjdGAgY29uc3RydWN0b3Igb3Igb25lIHdpdGggYSBgW1tQcm90b3R5cGVdXWAgb2YgYG51bGxgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC44LjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqIH1cbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdExpa2UodmFsdWUpIHx8IGJhc2VHZXRUYWcodmFsdWUpICE9IG9iamVjdFRhZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcHJvdG8gPSBnZXRQcm90b3R5cGUodmFsdWUpO1xuICBpZiAocHJvdG8gPT09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgQ3RvciA9IGhhc093blByb3BlcnR5LmNhbGwocHJvdG8sICdjb25zdHJ1Y3RvcicpICYmIHByb3RvLmNvbnN0cnVjdG9yO1xuICByZXR1cm4gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJlxuICAgIGZ1bmNUb1N0cmluZy5jYWxsKEN0b3IpID09IG9iamVjdEN0b3JTdHJpbmc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNQbGFpbk9iamVjdDtcbiIsImltcG9ydCBpc1BsYWluT2JqZWN0IGZyb20gJ2xvZGFzaC9pc1BsYWluT2JqZWN0JztcbmltcG9ydCB7IEVSUk9SU19LRVkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKiogR2l2ZW4gYSBgZm9ybURhdGFgIG9iamVjdCwgcmVjdXJzaXZlbHkgY3JlYXRlcyBhIGBGb3JtVmFsaWRhdGlvbmAgZXJyb3IgaGFuZGxpbmcgc3RydWN0dXJlIGFyb3VuZCBpdFxuICpcbiAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBmb3JtIGRhdGEgYXJvdW5kIHdoaWNoIHRoZSBlcnJvciBoYW5kbGVyIGlzIGNyZWF0ZWRcbiAqIEByZXR1cm5zIC0gQSBgRm9ybVZhbGlkYXRpb25gIG9iamVjdCBiYXNlZCBvbiB0aGUgYGZvcm1EYXRhYCBzdHJ1Y3R1cmVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlRXJyb3JIYW5kbGVyKGZvcm1EYXRhKSB7XG4gICAgY29uc3QgaGFuZGxlciA9IHtcbiAgICAgICAgLy8gV2Ugc3RvcmUgdGhlIGxpc3Qgb2YgZXJyb3JzIGZvciB0aGlzIG5vZGUgaW4gYSBwcm9wZXJ0eSBuYW1lZCBfX2Vycm9yc1xuICAgICAgICAvLyB0byBhdm9pZCBuYW1lIGNvbGxpc2lvbiB3aXRoIGEgcG9zc2libGUgc3ViIHNjaGVtYSBmaWVsZCBuYW1lZFxuICAgICAgICAvLyAnZXJyb3JzJyAoc2VlIGB1dGlscy50b0Vycm9yU2NoZW1hYCkuXG4gICAgICAgIFtFUlJPUlNfS0VZXTogW10sXG4gICAgICAgIGFkZEVycm9yKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHRoaXNbRVJST1JTX0tFWV0ucHVzaChtZXNzYWdlKTtcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIGlmIChBcnJheS5pc0FycmF5KGZvcm1EYXRhKSkge1xuICAgICAgICByZXR1cm4gZm9ybURhdGEucmVkdWNlKChhY2MsIHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmFjYywgW2tleV06IGNyZWF0ZUVycm9ySGFuZGxlcih2YWx1ZSkgfTtcbiAgICAgICAgfSwgaGFuZGxlcik7XG4gICAgfVxuICAgIGlmIChpc1BsYWluT2JqZWN0KGZvcm1EYXRhKSkge1xuICAgICAgICBjb25zdCBmb3JtT2JqZWN0ID0gZm9ybURhdGE7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhmb3JtT2JqZWN0KS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5hY2MsIFtrZXldOiBjcmVhdGVFcnJvckhhbmRsZXIoZm9ybU9iamVjdFtrZXldKSB9O1xuICAgICAgICB9LCBoYW5kbGVyKTtcbiAgICB9XG4gICAgcmV0dXJuIGhhbmRsZXI7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcmVhdGVFcnJvckhhbmRsZXIuanMubWFwIiwiLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IFtdO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUNsZWFyO1xuIiwiLyoqXG4gKiBQZXJmb3JtcyBhXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICpcbiAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoJ2EnLCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoTmFOLCBOYU4pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlID09PSBvdGhlciB8fCAodmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXE7XG4iLCJ2YXIgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGBrZXlgIGlzIGZvdW5kIGluIGBhcnJheWAgb2Yga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGFzc29jSW5kZXhPZihhcnJheSwga2V5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGlmIChlcShhcnJheVtsZW5ndGhdWzBdLCBrZXkpKSB7XG4gICAgICByZXR1cm4gbGVuZ3RoO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzb2NJbmRleE9mO1xuIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3BsaWNlID0gYXJyYXlQcm90by5zcGxpY2U7XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZURlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBsYXN0SW5kZXggPSBkYXRhLmxlbmd0aCAtIDE7XG4gIGlmIChpbmRleCA9PSBsYXN0SW5kZXgpIHtcbiAgICBkYXRhLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIHNwbGljZS5jYWxsKGRhdGEsIGluZGV4LCAxKTtcbiAgfVxuICAtLXRoaXMuc2l6ZTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlRGVsZXRlO1xuIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKipcbiAqIEdldHMgdGhlIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgcmV0dXJuIGluZGV4IDwgMCA/IHVuZGVmaW5lZCA6IGRhdGFbaW5kZXhdWzFdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUdldDtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUhhcyhrZXkpIHtcbiAgcmV0dXJuIGFzc29jSW5kZXhPZih0aGlzLl9fZGF0YV9fLCBrZXkpID4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlSGFzO1xuIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKipcbiAqIFNldHMgdGhlIGxpc3QgY2FjaGUgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGxpc3QgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgICsrdGhpcy5zaXplO1xuICAgIGRhdGEucHVzaChba2V5LCB2YWx1ZV0pO1xuICB9IGVsc2Uge1xuICAgIGRhdGFbaW5kZXhdWzFdID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlU2V0O1xuIiwidmFyIGxpc3RDYWNoZUNsZWFyID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlQ2xlYXInKSxcbiAgICBsaXN0Q2FjaGVEZWxldGUgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVEZWxldGUnKSxcbiAgICBsaXN0Q2FjaGVHZXQgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVHZXQnKSxcbiAgICBsaXN0Q2FjaGVIYXMgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVIYXMnKSxcbiAgICBsaXN0Q2FjaGVTZXQgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGxpc3QgY2FjaGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBMaXN0Q2FjaGUoZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgTGlzdENhY2hlYC5cbkxpc3RDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBsaXN0Q2FjaGVDbGVhcjtcbkxpc3RDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbGlzdENhY2hlRGVsZXRlO1xuTGlzdENhY2hlLnByb3RvdHlwZS5nZXQgPSBsaXN0Q2FjaGVHZXQ7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmhhcyA9IGxpc3RDYWNoZUhhcztcbkxpc3RDYWNoZS5wcm90b3R5cGUuc2V0ID0gbGlzdENhY2hlU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IExpc3RDYWNoZTtcbiIsInZhciBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBTdGFja1xuICovXG5mdW5jdGlvbiBzdGFja0NsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gbmV3IExpc3RDYWNoZTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0NsZWFyO1xuIiwiLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgc3RhY2suXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc3RhY2tEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIHJlc3VsdCA9IGRhdGFbJ2RlbGV0ZSddKGtleSk7XG5cbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrRGVsZXRlO1xuIiwiLyoqXG4gKiBHZXRzIHRoZSBzdGFjayB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tHZXQoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmdldChrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrR2V0O1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYSBzdGFjayB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrSGFzKGtleSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0hhcztcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0O1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgIHByb3h5VGFnID0gJ1tvYmplY3QgUHJveHldJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmdW5jdGlvbiwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oXyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0Z1bmN0aW9uKC9hYmMvKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gVGhlIHVzZSBvZiBgT2JqZWN0I3RvU3RyaW5nYCBhdm9pZHMgaXNzdWVzIHdpdGggdGhlIGB0eXBlb2ZgIG9wZXJhdG9yXG4gIC8vIGluIFNhZmFyaSA5IHdoaWNoIHJldHVybnMgJ29iamVjdCcgZm9yIHR5cGVkIGFycmF5cyBhbmQgb3RoZXIgY29uc3RydWN0b3JzLlxuICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gIHJldHVybiB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnIHx8IHRhZyA9PSBhc3luY1RhZyB8fCB0YWcgPT0gcHJveHlUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGdW5jdGlvbjtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovXG52YXIgY29yZUpzRGF0YSA9IHJvb3RbJ19fY29yZS1qc19zaGFyZWRfXyddO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcmVKc0RhdGE7XG4iLCJ2YXIgY29yZUpzRGF0YSA9IHJlcXVpcmUoJy4vX2NvcmVKc0RhdGEnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1ldGhvZHMgbWFzcXVlcmFkaW5nIGFzIG5hdGl2ZS4gKi9cbnZhciBtYXNrU3JjS2V5ID0gKGZ1bmN0aW9uKCkge1xuICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICByZXR1cm4gdWlkID8gKCdTeW1ib2woc3JjKV8xLicgKyB1aWQpIDogJyc7XG59KCkpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGl0cyBzb3VyY2UgbWFza2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzTWFza2VkKGZ1bmMpIHtcbiAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc01hc2tlZDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICovXG5mdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG4gIHJldHVybiAnJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1NvdXJjZTtcbiIsInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNNYXNrZWQgPSByZXF1aXJlKCcuL19pc01hc2tlZCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIHRvU291cmNlID0gcmVxdWlyZSgnLi9fdG9Tb3VyY2UnKTtcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAqL1xudmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xudmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xudmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNOYXRpdmU7XG4iLCIvKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRWYWx1ZTtcbiIsInZhciBiYXNlSXNOYXRpdmUgPSByZXF1aXJlKCcuL19iYXNlSXNOYXRpdmUnKSxcbiAgICBnZXRWYWx1ZSA9IHJlcXVpcmUoJy4vX2dldFZhbHVlJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICB2YXIgdmFsdWUgPSBnZXRWYWx1ZShvYmplY3QsIGtleSk7XG4gIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TmF0aXZlO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcDtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIG5hdGl2ZUNyZWF0ZSA9IGdldE5hdGl2ZShPYmplY3QsICdjcmVhdGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVDcmVhdGU7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKi9cbmZ1bmN0aW9uIGhhc2hDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IG5hdGl2ZUNyZWF0ZSA/IG5hdGl2ZUNyZWF0ZShudWxsKSA6IHt9O1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hDbGVhcjtcbiIsIi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoRGVsZXRlKGtleSkge1xuICB2YXIgcmVzdWx0ID0gdGhpcy5oYXMoa2V5KSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1trZXldO1xuICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaERlbGV0ZTtcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gaGFzaEdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBpZiAobmF0aXZlQ3JlYXRlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGRhdGFba2V5XTtcbiAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgfVxuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpID8gZGF0YVtrZXldIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hHZXQ7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzaEhhcyhrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICByZXR1cm4gbmF0aXZlQ3JlYXRlID8gKGRhdGFba2V5XSAhPT0gdW5kZWZpbmVkKSA6IGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoSGFzO1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKlxuICogU2V0cyB0aGUgaGFzaCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGhhc2ggaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGhhc2hTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIHRoaXMuc2l6ZSArPSB0aGlzLmhhcyhrZXkpID8gMCA6IDE7XG4gIGRhdGFba2V5XSA9IChuYXRpdmVDcmVhdGUgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgPyBIQVNIX1VOREVGSU5FRCA6IHZhbHVlO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoU2V0O1xuIiwidmFyIGhhc2hDbGVhciA9IHJlcXVpcmUoJy4vX2hhc2hDbGVhcicpLFxuICAgIGhhc2hEZWxldGUgPSByZXF1aXJlKCcuL19oYXNoRGVsZXRlJyksXG4gICAgaGFzaEdldCA9IHJlcXVpcmUoJy4vX2hhc2hHZXQnKSxcbiAgICBoYXNoSGFzID0gcmVxdWlyZSgnLi9faGFzaEhhcycpLFxuICAgIGhhc2hTZXQgPSByZXF1aXJlKCcuL19oYXNoU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGhhc2ggb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBIYXNoKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYEhhc2hgLlxuSGFzaC5wcm90b3R5cGUuY2xlYXIgPSBoYXNoQ2xlYXI7XG5IYXNoLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBoYXNoRGVsZXRlO1xuSGFzaC5wcm90b3R5cGUuZ2V0ID0gaGFzaEdldDtcbkhhc2gucHJvdG90eXBlLmhhcyA9IGhhc2hIYXM7XG5IYXNoLnByb3RvdHlwZS5zZXQgPSBoYXNoU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEhhc2g7XG4iLCJ2YXIgSGFzaCA9IHJlcXVpcmUoJy4vX0hhc2gnKSxcbiAgICBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVDbGVhcigpIHtcbiAgdGhpcy5zaXplID0gMDtcbiAgdGhpcy5fX2RhdGFfXyA9IHtcbiAgICAnaGFzaCc6IG5ldyBIYXNoLFxuICAgICdtYXAnOiBuZXcgKE1hcCB8fCBMaXN0Q2FjaGUpLFxuICAgICdzdHJpbmcnOiBuZXcgSGFzaFxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlQ2xlYXI7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciB1c2UgYXMgdW5pcXVlIG9iamVjdCBrZXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXlhYmxlKHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gKHR5cGUgPT0gJ3N0cmluZycgfHwgdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nKVxuICAgID8gKHZhbHVlICE9PSAnX19wcm90b19fJylcbiAgICA6ICh2YWx1ZSA9PT0gbnVsbCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNLZXlhYmxlO1xuIiwidmFyIGlzS2V5YWJsZSA9IHJlcXVpcmUoJy4vX2lzS2V5YWJsZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIGRhdGEgZm9yIGBtYXBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSByZWZlcmVuY2Uga2V5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hcCBkYXRhLlxuICovXG5mdW5jdGlvbiBnZXRNYXBEYXRhKG1hcCwga2V5KSB7XG4gIHZhciBkYXRhID0gbWFwLl9fZGF0YV9fO1xuICByZXR1cm4gaXNLZXlhYmxlKGtleSlcbiAgICA/IGRhdGFbdHlwZW9mIGtleSA9PSAnc3RyaW5nJyA/ICdzdHJpbmcnIDogJ2hhc2gnXVxuICAgIDogZGF0YS5tYXA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TWFwRGF0YTtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciByZXN1bHQgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSlbJ2RlbGV0ZSddKGtleSk7XG4gIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZURlbGV0ZTtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVHZXQ7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBtYXAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUhhcyhrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5oYXMoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUhhcztcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBtYXAgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSksXG4gICAgICBzaXplID0gZGF0YS5zaXplO1xuXG4gIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICB0aGlzLnNpemUgKz0gZGF0YS5zaXplID09IHNpemUgPyAwIDogMTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVTZXQ7XG4iLCJ2YXIgbWFwQ2FjaGVDbGVhciA9IHJlcXVpcmUoJy4vX21hcENhY2hlQ2xlYXInKSxcbiAgICBtYXBDYWNoZURlbGV0ZSA9IHJlcXVpcmUoJy4vX21hcENhY2hlRGVsZXRlJyksXG4gICAgbWFwQ2FjaGVHZXQgPSByZXF1aXJlKCcuL19tYXBDYWNoZUdldCcpLFxuICAgIG1hcENhY2hlSGFzID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVIYXMnKSxcbiAgICBtYXBDYWNoZVNldCA9IHJlcXVpcmUoJy4vX21hcENhY2hlU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG1hcCBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBNYXBDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBNYXBDYWNoZWAuXG5NYXBDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBtYXBDYWNoZUNsZWFyO1xuTWFwQ2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IG1hcENhY2hlRGVsZXRlO1xuTWFwQ2FjaGUucHJvdG90eXBlLmdldCA9IG1hcENhY2hlR2V0O1xuTWFwQ2FjaGUucHJvdG90eXBlLmhhcyA9IG1hcENhY2hlSGFzO1xuTWFwQ2FjaGUucHJvdG90eXBlLnNldCA9IG1hcENhY2hlU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcENhY2hlO1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIE1hcENhY2hlID0gcmVxdWlyZSgnLi9fTWFwQ2FjaGUnKTtcblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqXG4gKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBzdGFjayBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgdmFyIHBhaXJzID0gZGF0YS5fX2RhdGFfXztcbiAgICBpZiAoIU1hcCB8fCAocGFpcnMubGVuZ3RoIDwgTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4gICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICB0aGlzLnNpemUgPSArK2RhdGEuc2l6ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZShwYWlycyk7XG4gIH1cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tTZXQ7XG4iLCJ2YXIgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyksXG4gICAgc3RhY2tDbGVhciA9IHJlcXVpcmUoJy4vX3N0YWNrQ2xlYXInKSxcbiAgICBzdGFja0RlbGV0ZSA9IHJlcXVpcmUoJy4vX3N0YWNrRGVsZXRlJyksXG4gICAgc3RhY2tHZXQgPSByZXF1aXJlKCcuL19zdGFja0dldCcpLFxuICAgIHN0YWNrSGFzID0gcmVxdWlyZSgnLi9fc3RhY2tIYXMnKSxcbiAgICBzdGFja1NldCA9IHJlcXVpcmUoJy4vX3N0YWNrU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0YWNrIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFN0YWNrKGVudHJpZXMpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IExpc3RDYWNoZShlbnRyaWVzKTtcbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgU3RhY2tgLlxuU3RhY2sucHJvdG90eXBlLmNsZWFyID0gc3RhY2tDbGVhcjtcblN0YWNrLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBzdGFja0RlbGV0ZTtcblN0YWNrLnByb3RvdHlwZS5nZXQgPSBzdGFja0dldDtcblN0YWNrLnByb3RvdHlwZS5oYXMgPSBzdGFja0hhcztcblN0YWNrLnByb3RvdHlwZS5zZXQgPSBzdGFja1NldDtcblxubW9kdWxlLmV4cG9ydHMgPSBTdGFjaztcbiIsIi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqXG4gKiBBZGRzIGB2YWx1ZWAgdG8gdGhlIGFycmF5IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBhZGRcbiAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICogQGFsaWFzIHB1c2hcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNhY2hlLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlQWRkKHZhbHVlKSB7XG4gIHRoaXMuX19kYXRhX18uc2V0KHZhbHVlLCBIQVNIX1VOREVGSU5FRCk7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldENhY2hlQWRkO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBpbiB0aGUgYXJyYXkgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFNldENhY2hlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzZXRDYWNoZUhhcyh2YWx1ZSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldENhY2hlSGFzO1xuIiwidmFyIE1hcENhY2hlID0gcmVxdWlyZSgnLi9fTWFwQ2FjaGUnKSxcbiAgICBzZXRDYWNoZUFkZCA9IHJlcXVpcmUoJy4vX3NldENhY2hlQWRkJyksXG4gICAgc2V0Q2FjaGVIYXMgPSByZXF1aXJlKCcuL19zZXRDYWNoZUhhcycpO1xuXG4vKipcbiAqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGNhY2hlIG9iamVjdCB0byBzdG9yZSB1bmlxdWUgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFNldENhY2hlKHZhbHVlcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHZhbHVlcyA9PSBudWxsID8gMCA6IHZhbHVlcy5sZW5ndGg7XG5cbiAgdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB0aGlzLmFkZCh2YWx1ZXNbaW5kZXhdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgU2V0Q2FjaGVgLlxuU2V0Q2FjaGUucHJvdG90eXBlLmFkZCA9IFNldENhY2hlLnByb3RvdHlwZS5wdXNoID0gc2V0Q2FjaGVBZGQ7XG5TZXRDYWNoZS5wcm90b3R5cGUuaGFzID0gc2V0Q2FjaGVIYXM7XG5cbm1vZHVsZS5leHBvcnRzID0gU2V0Q2FjaGU7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zb21lYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAqIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlTb21lKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5U29tZTtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGEgYGNhY2hlYCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gY2FjaGUgVGhlIGNhY2hlIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGNhY2hlSGFzKGNhY2hlLCBrZXkpIHtcbiAgcmV0dXJuIGNhY2hlLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhY2hlSGFzO1xuIiwidmFyIFNldENhY2hlID0gcmVxdWlyZSgnLi9fU2V0Q2FjaGUnKSxcbiAgICBhcnJheVNvbWUgPSByZXF1aXJlKCcuL19hcnJheVNvbWUnKSxcbiAgICBjYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2NhY2hlSGFzJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGFycmF5cyB3aXRoIHN1cHBvcnQgZm9yXG4gKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtBcnJheX0gb3RoZXIgVGhlIG90aGVyIGFycmF5IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBhcnJheWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJyYXlzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsQXJyYXlzKGFycmF5LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgYXJyTGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgb3RoTGVuZ3RoID0gb3RoZXIubGVuZ3RoO1xuXG4gIGlmIChhcnJMZW5ndGggIT0gb3RoTGVuZ3RoICYmICEoaXNQYXJ0aWFsICYmIG90aExlbmd0aCA+IGFyckxlbmd0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgdmFyIGFyclN0YWNrZWQgPSBzdGFjay5nZXQoYXJyYXkpO1xuICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gIGlmIChhcnJTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICByZXR1cm4gYXJyU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IGFycmF5O1xuICB9XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gdHJ1ZSxcbiAgICAgIHNlZW4gPSAoYml0bWFzayAmIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpID8gbmV3IFNldENhY2hlIDogdW5kZWZpbmVkO1xuXG4gIHN0YWNrLnNldChhcnJheSwgb3RoZXIpO1xuICBzdGFjay5zZXQob3RoZXIsIGFycmF5KTtcblxuICAvLyBJZ25vcmUgbm9uLWluZGV4IHByb3BlcnRpZXMuXG4gIHdoaWxlICgrK2luZGV4IDwgYXJyTGVuZ3RoKSB7XG4gICAgdmFyIGFyclZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBvdGhWYWx1ZSA9IG90aGVyW2luZGV4XTtcblxuICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBhcnJWYWx1ZSwgaW5kZXgsIG90aGVyLCBhcnJheSwgc3RhY2spXG4gICAgICAgIDogY3VzdG9taXplcihhcnJWYWx1ZSwgb3RoVmFsdWUsIGluZGV4LCBhcnJheSwgb3RoZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgaWYgKGNvbXBhcmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChjb21wYXJlZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgaWYgKHNlZW4pIHtcbiAgICAgIGlmICghYXJyYXlTb21lKG90aGVyLCBmdW5jdGlvbihvdGhWYWx1ZSwgb3RoSW5kZXgpIHtcbiAgICAgICAgICAgIGlmICghY2FjaGVIYXMoc2Vlbiwgb3RoSW5kZXgpICYmXG4gICAgICAgICAgICAgICAgKGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBzZWVuLnB1c2gob3RoSW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKSB7XG4gICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCEoXG4gICAgICAgICAgYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8XG4gICAgICAgICAgICBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgKSkge1xuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgc3RhY2tbJ2RlbGV0ZSddKGFycmF5KTtcbiAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbEFycmF5cztcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBVaW50OEFycmF5ID0gcm9vdC5VaW50OEFycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFVpbnQ4QXJyYXk7XG4iLCIvKipcbiAqIENvbnZlcnRzIGBtYXBgIHRvIGl0cyBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gKi9cbmZ1bmN0aW9uIG1hcFRvQXJyYXkobWFwKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobWFwLnNpemUpO1xuXG4gIG1hcC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSBba2V5LCB2YWx1ZV07XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcFRvQXJyYXk7XG4iLCIvKipcbiAqIENvbnZlcnRzIGBzZXRgIHRvIGFuIGFycmF5IG9mIGl0cyB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIHNldFRvQXJyYXkoc2V0KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkoc2V0LnNpemUpO1xuXG4gIHNldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gdmFsdWU7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvQXJyYXk7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgVWludDhBcnJheSA9IHJlcXVpcmUoJy4vX1VpbnQ4QXJyYXknKSxcbiAgICBlcSA9IHJlcXVpcmUoJy4vZXEnKSxcbiAgICBlcXVhbEFycmF5cyA9IHJlcXVpcmUoJy4vX2VxdWFsQXJyYXlzJyksXG4gICAgbWFwVG9BcnJheSA9IHJlcXVpcmUoJy4vX21hcFRvQXJyYXknKSxcbiAgICBzZXRUb0FycmF5ID0gcmVxdWlyZSgnLi9fc2V0VG9BcnJheScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJztcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBjb21wYXJpbmcgb2JqZWN0cyBvZlxuICogdGhlIHNhbWUgYHRvU3RyaW5nVGFnYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNvbXBhcmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBvciBgU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0cyB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgdGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHN3aXRjaCAodGFnKSB7XG4gICAgY2FzZSBkYXRhVmlld1RhZzpcbiAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAob2JqZWN0LmJ5dGVPZmZzZXQgIT0gb3RoZXIuYnl0ZU9mZnNldCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgb2JqZWN0ID0gb2JqZWN0LmJ1ZmZlcjtcbiAgICAgIG90aGVyID0gb3RoZXIuYnVmZmVyO1xuXG4gICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAhZXF1YWxGdW5jKG5ldyBVaW50OEFycmF5KG9iamVjdCksIG5ldyBVaW50OEFycmF5KG90aGVyKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICBjYXNlIGJvb2xUYWc6XG4gICAgY2FzZSBkYXRlVGFnOlxuICAgIGNhc2UgbnVtYmVyVGFnOlxuICAgICAgLy8gQ29lcmNlIGJvb2xlYW5zIHRvIGAxYCBvciBgMGAgYW5kIGRhdGVzIHRvIG1pbGxpc2Vjb25kcy5cbiAgICAgIC8vIEludmFsaWQgZGF0ZXMgYXJlIGNvZXJjZWQgdG8gYE5hTmAuXG4gICAgICByZXR1cm4gZXEoK29iamVjdCwgK290aGVyKTtcblxuICAgIGNhc2UgZXJyb3JUYWc6XG4gICAgICByZXR1cm4gb2JqZWN0Lm5hbWUgPT0gb3RoZXIubmFtZSAmJiBvYmplY3QubWVzc2FnZSA9PSBvdGhlci5tZXNzYWdlO1xuXG4gICAgY2FzZSByZWdleHBUYWc6XG4gICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICAvLyBDb2VyY2UgcmVnZXhlcyB0byBzdHJpbmdzIGFuZCB0cmVhdCBzdHJpbmdzLCBwcmltaXRpdmVzIGFuZCBvYmplY3RzLFxuICAgICAgLy8gYXMgZXF1YWwuIFNlZSBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcmVnZXhwLnByb3RvdHlwZS50b3N0cmluZ1xuICAgICAgLy8gZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIHJldHVybiBvYmplY3QgPT0gKG90aGVyICsgJycpO1xuXG4gICAgY2FzZSBtYXBUYWc6XG4gICAgICB2YXIgY29udmVydCA9IG1hcFRvQXJyYXk7XG5cbiAgICBjYXNlIHNldFRhZzpcbiAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUc7XG4gICAgICBjb252ZXJ0IHx8IChjb252ZXJ0ID0gc2V0VG9BcnJheSk7XG5cbiAgICAgIGlmIChvYmplY3Quc2l6ZSAhPSBvdGhlci5zaXplICYmICFpc1BhcnRpYWwpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgICAgIGlmIChzdGFja2VkKSB7XG4gICAgICAgIHJldHVybiBzdGFja2VkID09IG90aGVyO1xuICAgICAgfVxuICAgICAgYml0bWFzayB8PSBDT01QQVJFX1VOT1JERVJFRF9GTEFHO1xuXG4gICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgICAgIHZhciByZXN1bHQgPSBlcXVhbEFycmF5cyhjb252ZXJ0KG9iamVjdCksIGNvbnZlcnQob3RoZXIpLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICAgIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcblxuICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgaWYgKHN5bWJvbFZhbHVlT2YpIHtcbiAgICAgICAgcmV0dXJuIHN5bWJvbFZhbHVlT2YuY2FsbChvYmplY3QpID09IHN5bWJvbFZhbHVlT2YuY2FsbChvdGhlcik7XG4gICAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxdWFsQnlUYWc7XG4iLCIvKipcbiAqIEFwcGVuZHMgdGhlIGVsZW1lbnRzIG9mIGB2YWx1ZXNgIHRvIGBhcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhcHBlbmQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlQdXNoKGFycmF5LCB2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgb2Zmc2V0ID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbb2Zmc2V0ICsgaW5kZXhdID0gdmFsdWVzW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlQdXNoO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheTtcbiIsInZhciBhcnJheVB1c2ggPSByZXF1aXJlKCcuL19hcnJheVB1c2gnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldEFsbEtleXNgIGFuZCBgZ2V0QWxsS2V5c0luYCB3aGljaCB1c2VzXG4gKiBga2V5c0Z1bmNgIGFuZCBgc3ltYm9sc0Z1bmNgIHRvIGdldCB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzeW1ib2xzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzRnVuYywgc3ltYm9sc0Z1bmMpIHtcbiAgdmFyIHJlc3VsdCA9IGtleXNGdW5jKG9iamVjdCk7XG4gIHJldHVybiBpc0FycmF5KG9iamVjdCkgPyByZXN1bHQgOiBhcnJheVB1c2gocmVzdWx0LCBzeW1ib2xzRnVuYyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0QWxsS2V5cztcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZpbHRlcmAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBhcnJheUZpbHRlcihhcnJheSwgcHJlZGljYXRlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICByZXNJbmRleCA9IDAsXG4gICAgICByZXN1bHQgPSBbXTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUZpbHRlcjtcbiIsIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBlbXB0eSBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGVtcHR5IGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgYXJyYXlzID0gXy50aW1lcygyLCBfLnN0dWJBcnJheSk7XG4gKlxuICogY29uc29sZS5sb2coYXJyYXlzKTtcbiAqIC8vID0+IFtbXSwgW11dXG4gKlxuICogY29uc29sZS5sb2coYXJyYXlzWzBdID09PSBhcnJheXNbMV0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gc3R1YkFycmF5KCkge1xuICByZXR1cm4gW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R1YkFycmF5O1xuIiwidmFyIGFycmF5RmlsdGVyID0gcmVxdWlyZSgnLi9fYXJyYXlGaWx0ZXInKSxcbiAgICBzdHViQXJyYXkgPSByZXF1aXJlKCcuL3N0dWJBcnJheScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlR2V0U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICovXG52YXIgZ2V0U3ltYm9scyA9ICFuYXRpdmVHZXRTeW1ib2xzID8gc3R1YkFycmF5IDogZnVuY3Rpb24ob2JqZWN0KSB7XG4gIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgcmV0dXJuIGFycmF5RmlsdGVyKG5hdGl2ZUdldFN5bWJvbHMob2JqZWN0KSwgZnVuY3Rpb24oc3ltYm9sKSB7XG4gICAgcmV0dXJuIHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwob2JqZWN0LCBzeW1ib2wpO1xuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0U3ltYm9scztcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udGltZXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kc1xuICogb3IgbWF4IGFycmF5IGxlbmd0aCBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICovXG5mdW5jdGlvbiBiYXNlVGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShuKTtcblxuICB3aGlsZSAoKytpbmRleCA8IG4pIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoaW5kZXgpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRpbWVzO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0FyZ3VtZW50c2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICovXG5mdW5jdGlvbiBiYXNlSXNBcmd1bWVudHModmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYXJnc1RhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNBcmd1bWVudHM7XG4iLCJ2YXIgYmFzZUlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9fYmFzZUlzQXJndW1lbnRzJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJndW1lbnRzID0gYmFzZUlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID8gYmFzZUlzQXJndW1lbnRzIDogZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpICYmXG4gICAgIXByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodmFsdWUsICdjYWxsZWUnKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcmd1bWVudHM7XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udGltZXMoMiwgXy5zdHViRmFsc2UpO1xuICogLy8gPT4gW2ZhbHNlLCBmYWxzZV1cbiAqL1xuZnVuY3Rpb24gc3R1YkZhbHNlKCkge1xuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R1YkZhbHNlO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290JyksXG4gICAgc3R1YkZhbHNlID0gcmVxdWlyZSgnLi9zdHViRmFsc2UnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gcm9vdC5CdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBCdWZmZXIoMikpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IFVpbnQ4QXJyYXkoMikpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQnVmZmVyID0gbmF0aXZlSXNCdWZmZXIgfHwgc3R1YkZhbHNlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQnVmZmVyO1xuIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gKi9cbnZhciByZUlzVWludCA9IC9eKD86MHxbMS05XVxcZCopJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgcmV0dXJuICEhbGVuZ3RoICYmXG4gICAgKHR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSW5kZXg7XG4iLCIvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNMZW5ndGg7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBvZiB0eXBlZCBhcnJheXMuICovXG52YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbnR5cGVkQXJyYXlUYWdzW2Zsb2F0MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbZmxvYXQ2NFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xudHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPVxudHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW251bWJlclRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPVxudHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1R5cGVkQXJyYXlgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzVHlwZWRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJlxuICAgIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgISF0eXBlZEFycmF5VGFnc1tiYXNlR2V0VGFnKHZhbHVlKV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzVHlwZWRBcnJheTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5hcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RvcmluZyBtZXRhZGF0YS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbmFyeShmdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVW5hcnk7XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHByb2Nlc3NgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlUHJvY2VzcyA9IG1vZHVsZUV4cG9ydHMgJiYgZnJlZUdsb2JhbC5wcm9jZXNzO1xuXG4vKiogVXNlZCB0byBhY2Nlc3MgZmFzdGVyIE5vZGUuanMgaGVscGVycy4gKi9cbnZhciBub2RlVXRpbCA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICAvLyBVc2UgYHV0aWwudHlwZXNgIGZvciBOb2RlLmpzIDEwKy5cbiAgICB2YXIgdHlwZXMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUucmVxdWlyZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUoJ3V0aWwnKS50eXBlcztcblxuICAgIGlmICh0eXBlcykge1xuICAgICAgcmV0dXJuIHR5cGVzO1xuICAgIH1cblxuICAgIC8vIExlZ2FjeSBgcHJvY2Vzcy5iaW5kaW5nKCd1dGlsJylgIGZvciBOb2RlLmpzIDwgMTAuXG4gICAgcmV0dXJuIGZyZWVQcm9jZXNzICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcgJiYgZnJlZVByb2Nlc3MuYmluZGluZygndXRpbCcpO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBub2RlVXRpbDtcbiIsInZhciBiYXNlSXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fYmFzZUlzVHlwZWRBcnJheScpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNUeXBlZEFycmF5ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNUeXBlZEFycmF5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNUeXBlZEFycmF5ID0gbm9kZUlzVHlwZWRBcnJheSA/IGJhc2VVbmFyeShub2RlSXNUeXBlZEFycmF5KSA6IGJhc2VJc1R5cGVkQXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNUeXBlZEFycmF5O1xuIiwidmFyIGJhc2VUaW1lcyA9IHJlcXVpcmUoJy4vX2Jhc2VUaW1lcycpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5oZXJpdGVkIFNwZWNpZnkgcmV0dXJuaW5nIGluaGVyaXRlZCBwcm9wZXJ0eSBuYW1lcy5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TGlrZUtleXModmFsdWUsIGluaGVyaXRlZCkge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKSxcbiAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiAhaXNBcmcgJiYgaXNCdWZmZXIodmFsdWUpLFxuICAgICAgaXNUeXBlID0gIWlzQXJyICYmICFpc0FyZyAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheSh2YWx1ZSksXG4gICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICByZXN1bHQgPSBza2lwSW5kZXhlcyA/IGJhc2VUaW1lcyh2YWx1ZS5sZW5ndGgsIFN0cmluZykgOiBbXSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKChpbmhlcml0ZWQgfHwgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkgJiZcbiAgICAgICAgIShza2lwSW5kZXhlcyAmJiAoXG4gICAgICAgICAgIC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbiAgICAgICAgICAga2V5ID09ICdsZW5ndGgnIHx8XG4gICAgICAgICAgIC8vIE5vZGUuanMgMC4xMCBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiBidWZmZXJzLlxuICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgLy8gUGhhbnRvbUpTIDIgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gdHlwZWQgYXJyYXlzLlxuICAgICAgICAgICAoaXNUeXBlICYmIChrZXkgPT0gJ2J1ZmZlcicgfHwga2V5ID09ICdieXRlTGVuZ3RoJyB8fCBrZXkgPT0gJ2J5dGVPZmZzZXQnKSkgfHxcbiAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICBpc0luZGV4KGtleSwgbGVuZ3RoKVxuICAgICAgICApKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUxpa2VLZXlzO1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBwcm90b3R5cGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvdG90eXBlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzUHJvdG90eXBlKHZhbHVlKSB7XG4gIHZhciBDdG9yID0gdmFsdWUgJiYgdmFsdWUuY29uc3RydWN0b3IsXG4gICAgICBwcm90byA9ICh0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IucHJvdG90eXBlKSB8fCBvYmplY3RQcm90bztcblxuICByZXR1cm4gdmFsdWUgPT09IHByb3RvO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzUHJvdG90eXBlO1xuIiwidmFyIG92ZXJBcmcgPSByZXF1aXJlKCcuL19vdmVyQXJnJyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVLZXlzID0gb3ZlckFyZyhPYmplY3Qua2V5cywgT2JqZWN0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVLZXlzO1xuIiwidmFyIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBuYXRpdmVLZXlzID0gcmVxdWlyZSgnLi9fbmF0aXZlS2V5cycpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gIGlmICghaXNQcm90b3R5cGUob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYga2V5ICE9ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUtleXM7XG4iLCJ2YXIgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UuIEEgdmFsdWUgaXMgY29uc2lkZXJlZCBhcnJheS1saWtlIGlmIGl0J3NcbiAqIG5vdCBhIGZ1bmN0aW9uIGFuZCBoYXMgYSBgdmFsdWUubGVuZ3RoYCB0aGF0J3MgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3JcbiAqIGVxdWFsIHRvIGAwYCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUmAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICFpc0Z1bmN0aW9uKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5TGlrZTtcbiIsInZhciBhcnJheUxpa2VLZXlzID0gcmVxdWlyZSgnLi9fYXJyYXlMaWtlS2V5cycpLFxuICAgIGJhc2VLZXlzID0gcmVxdWlyZSgnLi9fYmFzZUtleXMnKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy4gU2VlIHRoZVxuICogW0VTIHNwZWNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmtleXMobmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYiddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKlxuICogXy5rZXlzKCdoaScpO1xuICogLy8gPT4gWycwJywgJzEnXVxuICovXG5mdW5jdGlvbiBrZXlzKG9iamVjdCkge1xuICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0KSA6IGJhc2VLZXlzKG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ga2V5cztcbiIsInZhciBiYXNlR2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRBbGxLZXlzJyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gZ2V0QWxsS2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5cywgZ2V0U3ltYm9scyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QWxsS2V5cztcbiIsInZhciBnZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5cycpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDE7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3JcbiAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICBvYmpQcm9wcyA9IGdldEFsbEtleXMob2JqZWN0KSxcbiAgICAgIG9iakxlbmd0aCA9IG9ialByb3BzLmxlbmd0aCxcbiAgICAgIG90aFByb3BzID0gZ2V0QWxsS2V5cyhvdGhlciksXG4gICAgICBvdGhMZW5ndGggPSBvdGhQcm9wcy5sZW5ndGg7XG5cbiAgaWYgKG9iakxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIWlzUGFydGlhbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgaW5kZXggPSBvYmpMZW5ndGg7XG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgdmFyIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICBpZiAoIShpc1BhcnRpYWwgPyBrZXkgaW4gb3RoZXIgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCBrZXkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICB2YXIgb2JqU3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gIGlmIChvYmpTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICByZXR1cm4gb2JqU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IG9iamVjdDtcbiAgfVxuICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICBzdGFjay5zZXQob3RoZXIsIG9iamVjdCk7XG5cbiAgdmFyIHNraXBDdG9yID0gaXNQYXJ0aWFsO1xuICB3aGlsZSAoKytpbmRleCA8IG9iakxlbmd0aCkge1xuICAgIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltrZXldO1xuXG4gICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIG9ialZhbHVlLCBrZXksIG90aGVyLCBvYmplY3QsIHN0YWNrKVxuICAgICAgICA6IGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlLCBrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgaWYgKCEoY29tcGFyZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gKG9ialZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMob2JqVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpXG4gICAgICAgICAgOiBjb21wYXJlZFxuICAgICAgICApKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBza2lwQ3RvciB8fCAoc2tpcEN0b3IgPSBrZXkgPT0gJ2NvbnN0cnVjdG9yJyk7XG4gIH1cbiAgaWYgKHJlc3VsdCAmJiAhc2tpcEN0b3IpIHtcbiAgICB2YXIgb2JqQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcixcbiAgICAgICAgb3RoQ3RvciA9IG90aGVyLmNvbnN0cnVjdG9yO1xuXG4gICAgLy8gTm9uIGBPYmplY3RgIG9iamVjdCBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1YWwuXG4gICAgaWYgKG9iakN0b3IgIT0gb3RoQ3RvciAmJlxuICAgICAgICAoJ2NvbnN0cnVjdG9yJyBpbiBvYmplY3QgJiYgJ2NvbnN0cnVjdG9yJyBpbiBvdGhlcikgJiZcbiAgICAgICAgISh0eXBlb2Ygb2JqQ3RvciA9PSAnZnVuY3Rpb24nICYmIG9iakN0b3IgaW5zdGFuY2VvZiBvYmpDdG9yICYmXG4gICAgICAgICAgdHlwZW9mIG90aEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvdGhDdG9yIGluc3RhbmNlb2Ygb3RoQ3RvcikpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbE9iamVjdHM7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIERhdGFWaWV3ID0gZ2V0TmF0aXZlKHJvb3QsICdEYXRhVmlldycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERhdGFWaWV3O1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBQcm9taXNlID0gZ2V0TmF0aXZlKHJvb3QsICdQcm9taXNlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gUHJvbWlzZTtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgU2V0ID0gZ2V0TmF0aXZlKHJvb3QsICdTZXQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTZXQ7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFdlYWtNYXAgPSBnZXROYXRpdmUocm9vdCwgJ1dlYWtNYXAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBXZWFrTWFwO1xuIiwidmFyIERhdGFWaWV3ID0gcmVxdWlyZSgnLi9fRGF0YVZpZXcnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKSxcbiAgICBQcm9taXNlID0gcmVxdWlyZSgnLi9fUHJvbWlzZScpLFxuICAgIFNldCA9IHJlcXVpcmUoJy4vX1NldCcpLFxuICAgIFdlYWtNYXAgPSByZXF1aXJlKCcuL19XZWFrTWFwJyksXG4gICAgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICB0b1NvdXJjZSA9IHJlcXVpcmUoJy4vX3RvU291cmNlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICBwcm9taXNlVGFnID0gJ1tvYmplY3QgUHJvbWlzZV0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBtYXBzLCBzZXRzLCBhbmQgd2Vha21hcHMuICovXG52YXIgZGF0YVZpZXdDdG9yU3RyaW5nID0gdG9Tb3VyY2UoRGF0YVZpZXcpLFxuICAgIG1hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShNYXApLFxuICAgIHByb21pc2VDdG9yU3RyaW5nID0gdG9Tb3VyY2UoUHJvbWlzZSksXG4gICAgc2V0Q3RvclN0cmluZyA9IHRvU291cmNlKFNldCksXG4gICAgd2Vha01hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShXZWFrTWFwKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBgdG9TdHJpbmdUYWdgIG9mIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xudmFyIGdldFRhZyA9IGJhc2VHZXRUYWc7XG5cbi8vIEZhbGxiYWNrIGZvciBkYXRhIHZpZXdzLCBtYXBzLCBzZXRzLCBhbmQgd2VhayBtYXBzIGluIElFIDExIGFuZCBwcm9taXNlcyBpbiBOb2RlLmpzIDwgNi5cbmlmICgoRGF0YVZpZXcgJiYgZ2V0VGFnKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMSkpKSAhPSBkYXRhVmlld1RhZykgfHxcbiAgICAoTWFwICYmIGdldFRhZyhuZXcgTWFwKSAhPSBtYXBUYWcpIHx8XG4gICAgKFByb21pc2UgJiYgZ2V0VGFnKFByb21pc2UucmVzb2x2ZSgpKSAhPSBwcm9taXNlVGFnKSB8fFxuICAgIChTZXQgJiYgZ2V0VGFnKG5ldyBTZXQpICE9IHNldFRhZykgfHxcbiAgICAoV2Vha01hcCAmJiBnZXRUYWcobmV3IFdlYWtNYXApICE9IHdlYWtNYXBUYWcpKSB7XG4gIGdldFRhZyA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGJhc2VHZXRUYWcodmFsdWUpLFxuICAgICAgICBDdG9yID0gcmVzdWx0ID09IG9iamVjdFRhZyA/IHZhbHVlLmNvbnN0cnVjdG9yIDogdW5kZWZpbmVkLFxuICAgICAgICBjdG9yU3RyaW5nID0gQ3RvciA/IHRvU291cmNlKEN0b3IpIDogJyc7XG5cbiAgICBpZiAoY3RvclN0cmluZykge1xuICAgICAgc3dpdGNoIChjdG9yU3RyaW5nKSB7XG4gICAgICAgIGNhc2UgZGF0YVZpZXdDdG9yU3RyaW5nOiByZXR1cm4gZGF0YVZpZXdUYWc7XG4gICAgICAgIGNhc2UgbWFwQ3RvclN0cmluZzogcmV0dXJuIG1hcFRhZztcbiAgICAgICAgY2FzZSBwcm9taXNlQ3RvclN0cmluZzogcmV0dXJuIHByb21pc2VUYWc7XG4gICAgICAgIGNhc2Ugc2V0Q3RvclN0cmluZzogcmV0dXJuIHNldFRhZztcbiAgICAgICAgY2FzZSB3ZWFrTWFwQ3RvclN0cmluZzogcmV0dXJuIHdlYWtNYXBUYWc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VGFnO1xuIiwidmFyIFN0YWNrID0gcmVxdWlyZSgnLi9fU3RhY2snKSxcbiAgICBlcXVhbEFycmF5cyA9IHJlcXVpcmUoJy4vX2VxdWFsQXJyYXlzJyksXG4gICAgZXF1YWxCeVRhZyA9IHJlcXVpcmUoJy4vX2VxdWFsQnlUYWcnKSxcbiAgICBlcXVhbE9iamVjdHMgPSByZXF1aXJlKCcuL19lcXVhbE9iamVjdHMnKSxcbiAgICBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gKiBkZWVwIGNvbXBhcmlzb25zIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gKiByZWZlcmVuY2VzIHRvIGJlIGNvbXBhcmVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNFcXVhbERlZXAob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgb2JqSXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICBvdGhJc0FyciA9IGlzQXJyYXkob3RoZXIpLFxuICAgICAgb2JqVGFnID0gb2JqSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvYmplY3QpLFxuICAgICAgb3RoVGFnID0gb3RoSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvdGhlcik7XG5cbiAgb2JqVGFnID0gb2JqVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvYmpUYWc7XG4gIG90aFRhZyA9IG90aFRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb3RoVGFnO1xuXG4gIHZhciBvYmpJc09iaiA9IG9ialRhZyA9PSBvYmplY3RUYWcsXG4gICAgICBvdGhJc09iaiA9IG90aFRhZyA9PSBvYmplY3RUYWcsXG4gICAgICBpc1NhbWVUYWcgPSBvYmpUYWcgPT0gb3RoVGFnO1xuXG4gIGlmIChpc1NhbWVUYWcgJiYgaXNCdWZmZXIob2JqZWN0KSkge1xuICAgIGlmICghaXNCdWZmZXIob3RoZXIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIG9iaklzQXJyID0gdHJ1ZTtcbiAgICBvYmpJc09iaiA9IGZhbHNlO1xuICB9XG4gIGlmIChpc1NhbWVUYWcgJiYgIW9iaklzT2JqKSB7XG4gICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICByZXR1cm4gKG9iaklzQXJyIHx8IGlzVHlwZWRBcnJheShvYmplY3QpKVxuICAgICAgPyBlcXVhbEFycmF5cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKVxuICAgICAgOiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIG9ialRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gIH1cbiAgaWYgKCEoYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHKSkge1xuICAgIHZhciBvYmpJc1dyYXBwZWQgPSBvYmpJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgJ19fd3JhcHBlZF9fJyksXG4gICAgICAgIG90aElzV3JhcHBlZCA9IG90aElzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsICdfX3dyYXBwZWRfXycpO1xuXG4gICAgaWYgKG9iaklzV3JhcHBlZCB8fCBvdGhJc1dyYXBwZWQpIHtcbiAgICAgIHZhciBvYmpVbndyYXBwZWQgPSBvYmpJc1dyYXBwZWQgPyBvYmplY3QudmFsdWUoKSA6IG9iamVjdCxcbiAgICAgICAgICBvdGhVbndyYXBwZWQgPSBvdGhJc1dyYXBwZWQgPyBvdGhlci52YWx1ZSgpIDogb3RoZXI7XG5cbiAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICByZXR1cm4gZXF1YWxGdW5jKG9ialVud3JhcHBlZCwgb3RoVW53cmFwcGVkLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgfVxuICB9XG4gIGlmICghaXNTYW1lVGFnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gIHJldHVybiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzRXF1YWxEZWVwO1xuIiwidmFyIGJhc2VJc0VxdWFsRGVlcCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsRGVlcCcpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNFcXVhbGAgd2hpY2ggc3VwcG9ydHMgcGFydGlhbCBjb21wYXJpc29uc1xuICogYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gKiAgMSAtIFVub3JkZXJlZCBjb21wYXJpc29uXG4gKiAgMiAtIFBhcnRpYWwgY29tcGFyaXNvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGB2YWx1ZWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spIHtcbiAgaWYgKHZhbHVlID09PSBvdGhlcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh2YWx1ZSA9PSBudWxsIHx8IG90aGVyID09IG51bGwgfHwgKCFpc09iamVjdExpa2UodmFsdWUpICYmICFpc09iamVjdExpa2Uob3RoZXIpKSkge1xuICAgIHJldHVybiB2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyO1xuICB9XG4gIHJldHVybiBiYXNlSXNFcXVhbERlZXAodmFsdWUsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBiYXNlSXNFcXVhbCwgc3RhY2spO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0VxdWFsO1xuIiwidmFyIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzRXF1YWxgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCwgY29tcGFyaXNvbnNcbiAqIGFyZSBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGggdXAgdG9cbiAqIHNpeCBhcmd1bWVudHM6IChvYmpWYWx1ZSwgb3RoVmFsdWUgWywgaW5kZXh8a2V5LCBvYmplY3QsIG90aGVyLCBzdGFja10pLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gaXNHcmVldGluZyh2YWx1ZSkge1xuICogICByZXR1cm4gL15oKD86aXxlbGxvKSQvLnRlc3QodmFsdWUpO1xuICogfVxuICpcbiAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlKSB7XG4gKiAgIGlmIChpc0dyZWV0aW5nKG9ialZhbHVlKSAmJiBpc0dyZWV0aW5nKG90aFZhbHVlKSkge1xuICogICAgIHJldHVybiB0cnVlO1xuICogICB9XG4gKiB9XG4gKlxuICogdmFyIGFycmF5ID0gWydoZWxsbycsICdnb29kYnllJ107XG4gKiB2YXIgb3RoZXIgPSBbJ2hpJywgJ2dvb2RieWUnXTtcbiAqXG4gKiBfLmlzRXF1YWxXaXRoKGFycmF5LCBvdGhlciwgY3VzdG9taXplcik7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzRXF1YWxXaXRoKHZhbHVlLCBvdGhlciwgY3VzdG9taXplcikge1xuICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gIHZhciByZXN1bHQgPSBjdXN0b21pemVyID8gY3VzdG9taXplcih2YWx1ZSwgb3RoZXIpIDogdW5kZWZpbmVkO1xuICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIHVuZGVmaW5lZCwgY3VzdG9taXplcikgOiAhIXJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0VxdWFsV2l0aDtcbiIsImltcG9ydCBpc0VxdWFsV2l0aCBmcm9tICdsb2Rhc2gvaXNFcXVhbFdpdGgnO1xuLyoqIEltcGxlbWVudHMgYSBkZWVwIGVxdWFscyB1c2luZyB0aGUgYGxvZGFzaC5pc0VxdWFsV2l0aGAgZnVuY3Rpb24sIHRoYXQgcHJvdmlkZXMgYSBjdXN0b21pemVkIGNvbXBhcmF0b3IgdGhhdFxuICogYXNzdW1lcyBhbGwgZnVuY3Rpb25zIGFyZSBlcXVpdmFsZW50LlxuICpcbiAqIEBwYXJhbSBhIC0gVGhlIGZpcnN0IGVsZW1lbnQgdG8gY29tcGFyZVxuICogQHBhcmFtIGIgLSBUaGUgc2Vjb25kIGVsZW1lbnQgdG8gY29tcGFyZVxuICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBgYWAgYW5kIGBiYCBhcmUgZGVlcGx5IGVxdWFsLCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVlcEVxdWFscyhhLCBiKSB7XG4gICAgcmV0dXJuIGlzRXF1YWxXaXRoKGEsIGIsIChvYmosIG90aGVyKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBvdGhlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgLy8gQXNzdW1lIGFsbCBmdW5jdGlvbnMgYXJlIGVxdWl2YWxlbnRcbiAgICAgICAgICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmpzZi10ZWFtL3JlYWN0LWpzb25zY2hlbWEtZm9ybS9pc3N1ZXMvMjU1XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyBmYWxsYmFjayB0byBkZWZhdWx0IGlzRXF1YWxzIGJlaGF2aW9yXG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kZWVwRXF1YWxzLmpzLm1hcCIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN5bWJvbGAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN5bWJvbCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gc3ltYm9sVGFnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1N5bWJvbDtcbiIsInZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZUlzRGVlcFByb3AgPSAvXFwufFxcWyg/OlteW1xcXV0qfChbXCInXSkoPzooPyFcXDEpW15cXFxcXXxcXFxcLikqP1xcMSlcXF0vLFxuICAgIHJlSXNQbGFpblByb3AgPSAvXlxcdyokLztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUgYW5kIG5vdCBhIHByb3BlcnR5IHBhdGguXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkga2V5cyBvbi5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0tleSh2YWx1ZSwgb2JqZWN0KSB7XG4gIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgaWYgKHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJyB8fFxuICAgICAgdmFsdWUgPT0gbnVsbCB8fCBpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gcmVJc1BsYWluUHJvcC50ZXN0KHZhbHVlKSB8fCAhcmVJc0RlZXBQcm9wLnRlc3QodmFsdWUpIHx8XG4gICAgKG9iamVjdCAhPSBudWxsICYmIHZhbHVlIGluIE9iamVjdChvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0tleTtcbiIsInZhciBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyk7XG5cbi8qKiBFcnJvciBtZXNzYWdlIGNvbnN0YW50cy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgbWVtb2l6ZXMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuIElmIGByZXNvbHZlcmAgaXNcbiAqIHByb3ZpZGVkLCBpdCBkZXRlcm1pbmVzIHRoZSBjYWNoZSBrZXkgZm9yIHN0b3JpbmcgdGhlIHJlc3VsdCBiYXNlZCBvbiB0aGVcbiAqIGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24uIEJ5IGRlZmF1bHQsIHRoZSBmaXJzdCBhcmd1bWVudFxuICogcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlIG1hcCBjYWNoZSBrZXkuIFRoZSBgZnVuY2BcbiAqIGlzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlIG1lbW9pemVkIGZ1bmN0aW9uLlxuICpcbiAqICoqTm90ZToqKiBUaGUgY2FjaGUgaXMgZXhwb3NlZCBhcyB0aGUgYGNhY2hlYCBwcm9wZXJ0eSBvbiB0aGUgbWVtb2l6ZWRcbiAqIGZ1bmN0aW9uLiBJdHMgY3JlYXRpb24gbWF5IGJlIGN1c3RvbWl6ZWQgYnkgcmVwbGFjaW5nIHRoZSBgXy5tZW1vaXplLkNhY2hlYFxuICogY29uc3RydWN0b3Igd2l0aCBvbmUgd2hvc2UgaW5zdGFuY2VzIGltcGxlbWVudCB0aGVcbiAqIFtgTWFwYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcHJvcGVydGllcy1vZi10aGUtbWFwLXByb3RvdHlwZS1vYmplY3QpXG4gKiBtZXRob2QgaW50ZXJmYWNlIG9mIGBjbGVhcmAsIGBkZWxldGVgLCBgZ2V0YCwgYGhhc2AsIGFuZCBgc2V0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGhhdmUgaXRzIG91dHB1dCBtZW1vaXplZC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtyZXNvbHZlcl0gVGhlIGZ1bmN0aW9uIHRvIHJlc29sdmUgdGhlIGNhY2hlIGtleS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICogdmFyIG90aGVyID0geyAnYyc6IDMsICdkJzogNCB9O1xuICpcbiAqIHZhciB2YWx1ZXMgPSBfLm1lbW9pemUoXy52YWx1ZXMpO1xuICogdmFsdWVzKG9iamVjdCk7XG4gKiAvLyA9PiBbMSwgMl1cbiAqXG4gKiB2YWx1ZXMob3RoZXIpO1xuICogLy8gPT4gWzMsIDRdXG4gKlxuICogb2JqZWN0LmEgPSAyO1xuICogdmFsdWVzKG9iamVjdCk7XG4gKiAvLyA9PiBbMSwgMl1cbiAqXG4gKiAvLyBNb2RpZnkgdGhlIHJlc3VsdCBjYWNoZS5cbiAqIHZhbHVlcy5jYWNoZS5zZXQob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWydhJywgJ2InXVxuICpcbiAqIC8vIFJlcGxhY2UgYF8ubWVtb2l6ZS5DYWNoZWAuXG4gKiBfLm1lbW9pemUuQ2FjaGUgPSBXZWFrTWFwO1xuICovXG5mdW5jdGlvbiBtZW1vaXplKGZ1bmMsIHJlc29sdmVyKSB7XG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nIHx8IChyZXNvbHZlciAhPSBudWxsICYmIHR5cGVvZiByZXNvbHZlciAhPSAnZnVuY3Rpb24nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgfVxuICB2YXIgbWVtb2l6ZWQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAga2V5ID0gcmVzb2x2ZXIgPyByZXNvbHZlci5hcHBseSh0aGlzLCBhcmdzKSA6IGFyZ3NbMF0sXG4gICAgICAgIGNhY2hlID0gbWVtb2l6ZWQuY2FjaGU7XG5cbiAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgIHJldHVybiBjYWNoZS5nZXQoa2V5KTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgbWVtb2l6ZWQuY2FjaGUgPSBjYWNoZS5zZXQoa2V5LCByZXN1bHQpIHx8IGNhY2hlO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIG1lbW9pemVkLmNhY2hlID0gbmV3IChtZW1vaXplLkNhY2hlIHx8IE1hcENhY2hlKTtcbiAgcmV0dXJuIG1lbW9pemVkO1xufVxuXG4vLyBFeHBvc2UgYE1hcENhY2hlYC5cbm1lbW9pemUuQ2FjaGUgPSBNYXBDYWNoZTtcblxubW9kdWxlLmV4cG9ydHMgPSBtZW1vaXplO1xuIiwidmFyIG1lbW9pemUgPSByZXF1aXJlKCcuL21lbW9pemUnKTtcblxuLyoqIFVzZWQgYXMgdGhlIG1heGltdW0gbWVtb2l6ZSBjYWNoZSBzaXplLiAqL1xudmFyIE1BWF9NRU1PSVpFX1NJWkUgPSA1MDA7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1lbW9pemVgIHdoaWNoIGNsZWFycyB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24nc1xuICogY2FjaGUgd2hlbiBpdCBleGNlZWRzIGBNQVhfTUVNT0laRV9TSVpFYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaGF2ZSBpdHMgb3V0cHV0IG1lbW9pemVkLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1lbW9pemVDYXBwZWQoZnVuYykge1xuICB2YXIgcmVzdWx0ID0gbWVtb2l6ZShmdW5jLCBmdW5jdGlvbihrZXkpIHtcbiAgICBpZiAoY2FjaGUuc2l6ZSA9PT0gTUFYX01FTU9JWkVfU0laRSkge1xuICAgICAgY2FjaGUuY2xlYXIoKTtcbiAgICB9XG4gICAgcmV0dXJuIGtleTtcbiAgfSk7XG5cbiAgdmFyIGNhY2hlID0gcmVzdWx0LmNhY2hlO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1lbW9pemVDYXBwZWQ7XG4iLCJ2YXIgbWVtb2l6ZUNhcHBlZCA9IHJlcXVpcmUoJy4vX21lbW9pemVDYXBwZWQnKTtcblxuLyoqIFVzZWQgdG8gbWF0Y2ggcHJvcGVydHkgbmFtZXMgd2l0aGluIHByb3BlcnR5IHBhdGhzLiAqL1xudmFyIHJlUHJvcE5hbWUgPSAvW14uW1xcXV0rfFxcWyg/OigtP1xcZCsoPzpcXC5cXGQrKT8pfChbXCInXSkoKD86KD8hXFwyKVteXFxcXF18XFxcXC4pKj8pXFwyKVxcXXwoPz0oPzpcXC58XFxbXFxdKSg/OlxcLnxcXFtcXF18JCkpL2c7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGJhY2tzbGFzaGVzIGluIHByb3BlcnR5IHBhdGhzLiAqL1xudmFyIHJlRXNjYXBlQ2hhciA9IC9cXFxcKFxcXFwpPy9nO1xuXG4vKipcbiAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGEgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKi9cbnZhciBzdHJpbmdUb1BhdGggPSBtZW1vaXplQ2FwcGVkKGZ1bmN0aW9uKHN0cmluZykge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGlmIChzdHJpbmcuY2hhckNvZGVBdCgwKSA9PT0gNDYgLyogLiAqLykge1xuICAgIHJlc3VsdC5wdXNoKCcnKTtcbiAgfVxuICBzdHJpbmcucmVwbGFjZShyZVByb3BOYW1lLCBmdW5jdGlvbihtYXRjaCwgbnVtYmVyLCBxdW90ZSwgc3ViU3RyaW5nKSB7XG4gICAgcmVzdWx0LnB1c2gocXVvdGUgPyBzdWJTdHJpbmcucmVwbGFjZShyZUVzY2FwZUNoYXIsICckMScpIDogKG51bWJlciB8fCBtYXRjaCkpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmluZ1RvUGF0aDtcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1hcGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gKiBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBhcnJheU1hcChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlNYXA7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAvLyBSZWN1cnNpdmVseSBjb252ZXJ0IHZhbHVlcyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgYmFzZVRvU3RyaW5nKSArICcnO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVG9TdHJpbmc7XG4iLCJ2YXIgYmFzZVRvU3RyaW5nID0gcmVxdWlyZSgnLi9fYmFzZVRvU3RyaW5nJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZy4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGZvciBgbnVsbGBcbiAqIGFuZCBgdW5kZWZpbmVkYCB2YWx1ZXMuIFRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b1N0cmluZyhudWxsKTtcbiAqIC8vID0+ICcnXG4gKlxuICogXy50b1N0cmluZygtMCk7XG4gKiAvLyA9PiAnLTAnXG4gKlxuICogXy50b1N0cmluZyhbMSwgMiwgM10pO1xuICogLy8gPT4gJzEsMiwzJ1xuICovXG5mdW5jdGlvbiB0b1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogYmFzZVRvU3RyaW5nKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1N0cmluZztcbiIsInZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIHN0cmluZ1RvUGF0aCA9IHJlcXVpcmUoJy4vX3N0cmluZ1RvUGF0aCcpLFxuICAgIHRvU3RyaW5nID0gcmVxdWlyZSgnLi90b1N0cmluZycpO1xuXG4vKipcbiAqIENhc3RzIGB2YWx1ZWAgdG8gYSBwYXRoIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3QgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gY2FzdFBhdGgodmFsdWUsIG9iamVjdCkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGlzS2V5KHZhbHVlLCBvYmplY3QpID8gW3ZhbHVlXSA6IHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc3RQYXRoO1xuIiwidmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcga2V5IGlmIGl0J3Mgbm90IGEgc3RyaW5nIG9yIHN5bWJvbC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtzdHJpbmd8c3ltYm9sfSBSZXR1cm5zIHRoZSBrZXkuXG4gKi9cbmZ1bmN0aW9uIHRvS2V5KHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0tleTtcbiIsInZhciBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmdldGAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWZhdWx0IHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldChvYmplY3QsIHBhdGgpIHtcbiAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgdmFyIGluZGV4ID0gMCxcbiAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoO1xuXG4gIHdoaWxlIChvYmplY3QgIT0gbnVsbCAmJiBpbmRleCA8IGxlbmd0aCkge1xuICAgIG9iamVjdCA9IG9iamVjdFt0b0tleShwYXRoW2luZGV4KytdKV07XG4gIH1cbiAgcmV0dXJuIChpbmRleCAmJiBpbmRleCA9PSBsZW5ndGgpID8gb2JqZWN0IDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXQ7XG4iLCJ2YXIgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuIElmIHRoZSByZXNvbHZlZCB2YWx1ZSBpc1xuICogYHVuZGVmaW5lZGAsIHRoZSBgZGVmYXVsdFZhbHVlYCBpcyByZXR1cm5lZCBpbiBpdHMgcGxhY2UuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjcuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEBwYXJhbSB7Kn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHJldHVybmVkIGZvciBgdW5kZWZpbmVkYCByZXNvbHZlZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gKlxuICogXy5nZXQob2JqZWN0LCAnYVswXS5iLmMnKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLmdldChvYmplY3QsIFsnYScsICcwJywgJ2InLCAnYyddKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLmdldChvYmplY3QsICdhLmIuYycsICdkZWZhdWx0Jyk7XG4gKiAvLyA9PiAnZGVmYXVsdCdcbiAqL1xuZnVuY3Rpb24gZ2V0KG9iamVjdCwgcGF0aCwgZGVmYXVsdFZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgcmV0dXJuIHJlc3VsdCA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdFZhbHVlIDogcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldDtcbiIsInZhciBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYW4gZW1wdHkgb2JqZWN0LCBjb2xsZWN0aW9uLCBtYXAsIG9yIHNldC5cbiAqXG4gKiBPYmplY3RzIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBubyBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWRcbiAqIHByb3BlcnRpZXMuXG4gKlxuICogQXJyYXktbGlrZSB2YWx1ZXMgc3VjaCBhcyBgYXJndW1lbnRzYCBvYmplY3RzLCBhcnJheXMsIGJ1ZmZlcnMsIHN0cmluZ3MsIG9yXG4gKiBqUXVlcnktbGlrZSBjb2xsZWN0aW9ucyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgbGVuZ3RoYCBvZiBgMGAuXG4gKiBTaW1pbGFybHksIG1hcHMgYW5kIHNldHMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYHNpemVgIG9mIGAwYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBlbXB0eSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRW1wdHkobnVsbCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0VtcHR5KHRydWUpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNFbXB0eSgxKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRW1wdHkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0VtcHR5KHsgJ2EnOiAxIH0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChpc0FycmF5TGlrZSh2YWx1ZSkgJiZcbiAgICAgIChpc0FycmF5KHZhbHVlKSB8fCB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlLnNwbGljZSA9PSAnZnVuY3Rpb24nIHx8XG4gICAgICAgIGlzQnVmZmVyKHZhbHVlKSB8fCBpc1R5cGVkQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSkpIHtcbiAgICByZXR1cm4gIXZhbHVlLmxlbmd0aDtcbiAgfVxuICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKTtcbiAgaWYgKHRhZyA9PSBtYXBUYWcgfHwgdGFnID09IHNldFRhZykge1xuICAgIHJldHVybiAhdmFsdWUuc2l6ZTtcbiAgfVxuICBpZiAoaXNQcm90b3R5cGUodmFsdWUpKSB7XG4gICAgcmV0dXJuICFiYXNlS2V5cyh2YWx1ZSkubGVuZ3RoO1xuICB9XG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRW1wdHk7XG4iLCJ2YXIgaGFzRXhjYXBlID0gL34vXG52YXIgZXNjYXBlTWF0Y2hlciA9IC9+WzAxXS9nXG5mdW5jdGlvbiBlc2NhcGVSZXBsYWNlciAobSkge1xuICBzd2l0Y2ggKG0pIHtcbiAgICBjYXNlICd+MSc6IHJldHVybiAnLydcbiAgICBjYXNlICd+MCc6IHJldHVybiAnfidcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdGlsZGUgZXNjYXBlOiAnICsgbSlcbn1cblxuZnVuY3Rpb24gdW50aWxkZSAoc3RyKSB7XG4gIGlmICghaGFzRXhjYXBlLnRlc3Qoc3RyKSkgcmV0dXJuIHN0clxuICByZXR1cm4gc3RyLnJlcGxhY2UoZXNjYXBlTWF0Y2hlciwgZXNjYXBlUmVwbGFjZXIpXG59XG5cbmZ1bmN0aW9uIHNldHRlciAob2JqLCBwb2ludGVyLCB2YWx1ZSkge1xuICB2YXIgcGFydFxuICB2YXIgaGFzTmV4dFBhcnRcblxuICBmb3IgKHZhciBwID0gMSwgbGVuID0gcG9pbnRlci5sZW5ndGg7IHAgPCBsZW47KSB7XG4gICAgaWYgKHBvaW50ZXJbcF0gPT09ICdjb25zdHJ1Y3RvcicgfHwgcG9pbnRlcltwXSA9PT0gJ3Byb3RvdHlwZScgfHwgcG9pbnRlcltwXSA9PT0gJ19fcHJvdG9fXycpIHJldHVybiBvYmpcblxuICAgIHBhcnQgPSB1bnRpbGRlKHBvaW50ZXJbcCsrXSlcbiAgICBoYXNOZXh0UGFydCA9IGxlbiA+IHBcblxuICAgIGlmICh0eXBlb2Ygb2JqW3BhcnRdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gc3VwcG9ydCBzZXR0aW5nIG9mIC8tXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopICYmIHBhcnQgPT09ICctJykge1xuICAgICAgICBwYXJ0ID0gb2JqLmxlbmd0aFxuICAgICAgfVxuXG4gICAgICAvLyBzdXBwb3J0IG5lc3RlZCBvYmplY3RzL2FycmF5IHdoZW4gc2V0dGluZyB2YWx1ZXNcbiAgICAgIGlmIChoYXNOZXh0UGFydCkge1xuICAgICAgICBpZiAoKHBvaW50ZXJbcF0gIT09ICcnICYmIHBvaW50ZXJbcF0gPCBJbmZpbml0eSkgfHwgcG9pbnRlcltwXSA9PT0gJy0nKSBvYmpbcGFydF0gPSBbXVxuICAgICAgICBlbHNlIG9ialtwYXJ0XSA9IHt9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFoYXNOZXh0UGFydCkgYnJlYWtcbiAgICBvYmogPSBvYmpbcGFydF1cbiAgfVxuXG4gIHZhciBvbGRWYWx1ZSA9IG9ialtwYXJ0XVxuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgZGVsZXRlIG9ialtwYXJ0XVxuICBlbHNlIG9ialtwYXJ0XSA9IHZhbHVlXG4gIHJldHVybiBvbGRWYWx1ZVxufVxuXG5mdW5jdGlvbiBjb21waWxlUG9pbnRlciAocG9pbnRlcikge1xuICBpZiAodHlwZW9mIHBvaW50ZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgcG9pbnRlciA9IHBvaW50ZXIuc3BsaXQoJy8nKVxuICAgIGlmIChwb2ludGVyWzBdID09PSAnJykgcmV0dXJuIHBvaW50ZXJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSlNPTiBwb2ludGVyLicpXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwb2ludGVyKSkge1xuICAgIGZvciAoY29uc3QgcGFydCBvZiBwb2ludGVyKSB7XG4gICAgICBpZiAodHlwZW9mIHBhcnQgIT09ICdzdHJpbmcnICYmIHR5cGVvZiBwYXJ0ICE9PSAnbnVtYmVyJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSlNPTiBwb2ludGVyLiBNdXN0IGJlIG9mIHR5cGUgc3RyaW5nIG9yIG51bWJlci4nKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcG9pbnRlclxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEpTT04gcG9pbnRlci4nKVxufVxuXG5mdW5jdGlvbiBnZXQgKG9iaiwgcG9pbnRlcikge1xuICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBpbnB1dCBvYmplY3QuJylcbiAgcG9pbnRlciA9IGNvbXBpbGVQb2ludGVyKHBvaW50ZXIpXG4gIHZhciBsZW4gPSBwb2ludGVyLmxlbmd0aFxuICBpZiAobGVuID09PSAxKSByZXR1cm4gb2JqXG5cbiAgZm9yICh2YXIgcCA9IDE7IHAgPCBsZW47KSB7XG4gICAgb2JqID0gb2JqW3VudGlsZGUocG9pbnRlcltwKytdKV1cbiAgICBpZiAobGVuID09PSBwKSByZXR1cm4gb2JqXG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG5cbmZ1bmN0aW9uIHNldCAob2JqLCBwb2ludGVyLCB2YWx1ZSkge1xuICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBpbnB1dCBvYmplY3QuJylcbiAgcG9pbnRlciA9IGNvbXBpbGVQb2ludGVyKHBvaW50ZXIpXG4gIGlmIChwb2ludGVyLmxlbmd0aCA9PT0gMCkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEpTT04gcG9pbnRlciBmb3Igc2V0LicpXG4gIHJldHVybiBzZXR0ZXIob2JqLCBwb2ludGVyLCB2YWx1ZSlcbn1cblxuZnVuY3Rpb24gY29tcGlsZSAocG9pbnRlcikge1xuICB2YXIgY29tcGlsZWQgPSBjb21waWxlUG9pbnRlcihwb2ludGVyKVxuICByZXR1cm4ge1xuICAgIGdldDogZnVuY3Rpb24gKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGdldChvYmplY3QsIGNvbXBpbGVkKVxuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiAob2JqZWN0LCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHNldChvYmplY3QsIGNvbXBpbGVkLCB2YWx1ZSlcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0cy5nZXQgPSBnZXRcbmV4cG9ydHMuc2V0ID0gc2V0XG5leHBvcnRzLmNvbXBpbGUgPSBjb21waWxlXG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlFYWNoKGFycmF5LCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSA9PT0gZmFsc2UpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlFYWNoO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpO1xuXG52YXIgZGVmaW5lUHJvcGVydHkgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgdmFyIGZ1bmMgPSBnZXROYXRpdmUoT2JqZWN0LCAnZGVmaW5lUHJvcGVydHknKTtcbiAgICBmdW5jKHt9LCAnJywge30pO1xuICAgIHJldHVybiBmdW5jO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZpbmVQcm9wZXJ0eTtcbiIsInZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2RlZmluZVByb3BlcnR5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGFzc2lnblZhbHVlYCBhbmQgYGFzc2lnbk1lcmdlVmFsdWVgIHdpdGhvdXRcbiAqIHZhbHVlIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgPT0gJ19fcHJvdG9fXycgJiYgZGVmaW5lUHJvcGVydHkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eShvYmplY3QsIGtleSwge1xuICAgICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgICAnZW51bWVyYWJsZSc6IHRydWUsXG4gICAgICAndmFsdWUnOiB2YWx1ZSxcbiAgICAgICd3cml0YWJsZSc6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUFzc2lnblZhbHVlO1xuIiwidmFyIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEFzc2lnbnMgYHZhbHVlYCB0byBga2V5YCBvZiBgb2JqZWN0YCBpZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbm90IGVxdWl2YWxlbnRcbiAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHZhciBvYmpWYWx1ZSA9IG9iamVjdFtrZXldO1xuICBpZiAoIShoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBlcShvYmpWYWx1ZSwgdmFsdWUpKSB8fFxuICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc2lnblZhbHVlO1xuIiwidmFyIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSxcbiAgICBiYXNlQXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19iYXNlQXNzaWduVmFsdWUnKTtcblxuLyoqXG4gKiBDb3BpZXMgcHJvcGVydGllcyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzIHRvIGNvcHkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb3BpZWQgdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weU9iamVjdChzb3VyY2UsIHByb3BzLCBvYmplY3QsIGN1c3RvbWl6ZXIpIHtcbiAgdmFyIGlzTmV3ID0gIW9iamVjdDtcbiAgb2JqZWN0IHx8IChvYmplY3QgPSB7fSk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdO1xuXG4gICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgPyBjdXN0b21pemVyKG9iamVjdFtrZXldLCBzb3VyY2Vba2V5XSwga2V5LCBvYmplY3QsIHNvdXJjZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG5ld1ZhbHVlID0gc291cmNlW2tleV07XG4gICAgfVxuICAgIGlmIChpc05ldykge1xuICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvYmplY3Q7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weU9iamVjdDtcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICogb3IgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ24ob2JqZWN0LCBzb3VyY2UpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ247XG4iLCIvKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZVxuICogW2BPYmplY3Qua2V5c2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZXhjZXB0IHRoYXQgaXQgaW5jbHVkZXMgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gbmF0aXZlS2V5c0luKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGlmIChvYmplY3QgIT0gbnVsbCkge1xuICAgIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVLZXlzSW47XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpLFxuICAgIG5hdGl2ZUtleXNJbiA9IHJlcXVpcmUoJy4vX25hdGl2ZUtleXNJbicpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNJbmAgd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBiYXNlS2V5c0luKG9iamVjdCkge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5c0luKG9iamVjdCk7XG4gIH1cbiAgdmFyIGlzUHJvdG8gPSBpc1Byb3RvdHlwZShvYmplY3QpLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgIGlmICghKGtleSA9PSAnY29uc3RydWN0b3InICYmIChpc1Byb3RvIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VLZXlzSW47XG4iLCJ2YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSxcbiAgICBiYXNlS2V5c0luID0gcmVxdWlyZSgnLi9fYmFzZUtleXNJbicpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzSW4obmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYicsICdjJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24ga2V5c0luKG9iamVjdCkge1xuICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0LCB0cnVlKSA6IGJhc2VLZXlzSW4ob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBrZXlzSW47XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbkluYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduSW4ob2JqZWN0LCBzb3VyY2UpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5c0luKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUFzc2lnbkluO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkLFxuICAgIGFsbG9jVW5zYWZlID0gQnVmZmVyID8gQnVmZmVyLmFsbG9jVW5zYWZlIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiAgYGJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXIgVGhlIGJ1ZmZlciB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbG9uZUJ1ZmZlcihidWZmZXIsIGlzRGVlcCkge1xuICBpZiAoaXNEZWVwKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5zbGljZSgpO1xuICB9XG4gIHZhciBsZW5ndGggPSBidWZmZXIubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gYWxsb2NVbnNhZmUgPyBhbGxvY1Vuc2FmZShsZW5ndGgpIDogbmV3IGJ1ZmZlci5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gIGJ1ZmZlci5jb3B5KHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVCdWZmZXI7XG4iLCIvKipcbiAqIENvcGllcyB0aGUgdmFsdWVzIG9mIGBzb3VyY2VgIHRvIGBhcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IHNvdXJjZSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheT1bXV0gVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIHRvLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlBcnJheShzb3VyY2UsIGFycmF5KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gc291cmNlLmxlbmd0aDtcblxuICBhcnJheSB8fCAoYXJyYXkgPSBBcnJheShsZW5ndGgpKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhcnJheVtpbmRleF0gPSBzb3VyY2VbaW5kZXhdO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5QXJyYXk7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBnZXRTeW1ib2xzID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9scycpO1xuXG4vKipcbiAqIENvcGllcyBvd24gc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weVN5bWJvbHMoc291cmNlLCBvYmplY3QpIHtcbiAgcmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLCBnZXRTeW1ib2xzKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weVN5bWJvbHM7XG4iLCJ2YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSxcbiAgICBzdHViQXJyYXkgPSByZXF1aXJlKCcuL3N0dWJBcnJheScpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlR2V0U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzSW4gPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHdoaWxlIChvYmplY3QpIHtcbiAgICBhcnJheVB1c2gocmVzdWx0LCBnZXRTeW1ib2xzKG9iamVjdCkpO1xuICAgIG9iamVjdCA9IGdldFByb3RvdHlwZShvYmplY3QpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN5bWJvbHNJbjtcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGdldFN5bWJvbHNJbiA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHNJbicpO1xuXG4vKipcbiAqIENvcGllcyBvd24gYW5kIGluaGVyaXRlZCBzeW1ib2xzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIGZyb20uXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgdG8uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5U3ltYm9sc0luKHNvdXJjZSwgb2JqZWN0KSB7XG4gIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9sc0luKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weVN5bWJvbHNJbjtcbiIsInZhciBiYXNlR2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRBbGxLZXlzJyksXG4gICAgZ2V0U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9sc0luJyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICovXG5mdW5jdGlvbiBnZXRBbGxLZXlzSW4ob2JqZWN0KSB7XG4gIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNJbiwgZ2V0U3ltYm9sc0luKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRBbGxLZXlzSW47XG4iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIGFycmF5IGNsb25lLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVBcnJheShhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gbmV3IGFycmF5LmNvbnN0cnVjdG9yKGxlbmd0aCk7XG5cbiAgLy8gQWRkIHByb3BlcnRpZXMgYXNzaWduZWQgYnkgYFJlZ0V4cCNleGVjYC5cbiAgaWYgKGxlbmd0aCAmJiB0eXBlb2YgYXJyYXlbMF0gPT0gJ3N0cmluZycgJiYgaGFzT3duUHJvcGVydHkuY2FsbChhcnJheSwgJ2luZGV4JykpIHtcbiAgICByZXN1bHQuaW5kZXggPSBhcnJheS5pbmRleDtcbiAgICByZXN1bHQuaW5wdXQgPSBhcnJheS5pbnB1dDtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRDbG9uZUFycmF5O1xuIiwidmFyIFVpbnQ4QXJyYXkgPSByZXF1aXJlKCcuL19VaW50OEFycmF5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGBhcnJheUJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IGFycmF5QnVmZmVyIFRoZSBhcnJheSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBhcnJheSBidWZmZXIuXG4gKi9cbmZ1bmN0aW9uIGNsb25lQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyBhcnJheUJ1ZmZlci5jb25zdHJ1Y3RvcihhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgbmV3IFVpbnQ4QXJyYXkocmVzdWx0KS5zZXQobmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZUFycmF5QnVmZmVyO1xuIiwidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGBkYXRhVmlld2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhVmlldyBUaGUgZGF0YSB2aWV3IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBkYXRhIHZpZXcuXG4gKi9cbmZ1bmN0aW9uIGNsb25lRGF0YVZpZXcoZGF0YVZpZXcsIGlzRGVlcCkge1xuICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcihkYXRhVmlldy5idWZmZXIpIDogZGF0YVZpZXcuYnVmZmVyO1xuICByZXR1cm4gbmV3IGRhdGFWaWV3LmNvbnN0cnVjdG9yKGJ1ZmZlciwgZGF0YVZpZXcuYnl0ZU9mZnNldCwgZGF0YVZpZXcuYnl0ZUxlbmd0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVEYXRhVmlldztcbiIsIi8qKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgIGZsYWdzIGZyb20gdGhlaXIgY29lcmNlZCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlRmxhZ3MgPSAvXFx3KiQvO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgcmVnZXhwYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHJlZ2V4cCBUaGUgcmVnZXhwIHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHJlZ2V4cC5cbiAqL1xuZnVuY3Rpb24gY2xvbmVSZWdFeHAocmVnZXhwKSB7XG4gIHZhciByZXN1bHQgPSBuZXcgcmVnZXhwLmNvbnN0cnVjdG9yKHJlZ2V4cC5zb3VyY2UsIHJlRmxhZ3MuZXhlYyhyZWdleHApKTtcbiAgcmVzdWx0Lmxhc3RJbmRleCA9IHJlZ2V4cC5sYXN0SW5kZXg7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVSZWdFeHA7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyk7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xWYWx1ZU9mID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by52YWx1ZU9mIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgYHN5bWJvbGAgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc3ltYm9sIFRoZSBzeW1ib2wgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHN5bWJvbCBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGNsb25lU3ltYm9sKHN5bWJvbCkge1xuICByZXR1cm4gc3ltYm9sVmFsdWVPZiA/IE9iamVjdChzeW1ib2xWYWx1ZU9mLmNhbGwoc3ltYm9sKSkgOiB7fTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVN5bWJvbDtcbiIsInZhciBjbG9uZUFycmF5QnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVBcnJheUJ1ZmZlcicpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgdHlwZWRBcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSB0eXBlZEFycmF5IFRoZSB0eXBlZCBhcnJheSB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgdHlwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGNsb25lVHlwZWRBcnJheSh0eXBlZEFycmF5LCBpc0RlZXApIHtcbiAgdmFyIGJ1ZmZlciA9IGlzRGVlcCA/IGNsb25lQXJyYXlCdWZmZXIodHlwZWRBcnJheS5idWZmZXIpIDogdHlwZWRBcnJheS5idWZmZXI7XG4gIHJldHVybiBuZXcgdHlwZWRBcnJheS5jb25zdHJ1Y3RvcihidWZmZXIsIHR5cGVkQXJyYXkuYnl0ZU9mZnNldCwgdHlwZWRBcnJheS5sZW5ndGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lVHlwZWRBcnJheTtcbiIsInZhciBjbG9uZUFycmF5QnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVBcnJheUJ1ZmZlcicpLFxuICAgIGNsb25lRGF0YVZpZXcgPSByZXF1aXJlKCcuL19jbG9uZURhdGFWaWV3JyksXG4gICAgY2xvbmVSZWdFeHAgPSByZXF1aXJlKCcuL19jbG9uZVJlZ0V4cCcpLFxuICAgIGNsb25lU3ltYm9sID0gcmVxdWlyZSgnLi9fY2xvbmVTeW1ib2wnKSxcbiAgICBjbG9uZVR5cGVkQXJyYXkgPSByZXF1aXJlKCcuL19jbG9uZVR5cGVkQXJyYXknKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lIGJhc2VkIG9uIGl0cyBgdG9TdHJpbmdUYWdgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY2xvbmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE1hcGAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgYFNldGAsIG9yIGBTdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZUJ5VGFnKG9iamVjdCwgdGFnLCBpc0RlZXApIHtcbiAgdmFyIEN0b3IgPSBvYmplY3QuY29uc3RydWN0b3I7XG4gIHN3aXRjaCAodGFnKSB7XG4gICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgIHJldHVybiBjbG9uZUFycmF5QnVmZmVyKG9iamVjdCk7XG5cbiAgICBjYXNlIGJvb2xUYWc6XG4gICAgY2FzZSBkYXRlVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yKCtvYmplY3QpO1xuXG4gICAgY2FzZSBkYXRhVmlld1RhZzpcbiAgICAgIHJldHVybiBjbG9uZURhdGFWaWV3KG9iamVjdCwgaXNEZWVwKTtcblxuICAgIGNhc2UgZmxvYXQzMlRhZzogY2FzZSBmbG9hdDY0VGFnOlxuICAgIGNhc2UgaW50OFRhZzogY2FzZSBpbnQxNlRhZzogY2FzZSBpbnQzMlRhZzpcbiAgICBjYXNlIHVpbnQ4VGFnOiBjYXNlIHVpbnQ4Q2xhbXBlZFRhZzogY2FzZSB1aW50MTZUYWc6IGNhc2UgdWludDMyVGFnOlxuICAgICAgcmV0dXJuIGNsb25lVHlwZWRBcnJheShvYmplY3QsIGlzRGVlcCk7XG5cbiAgICBjYXNlIG1hcFRhZzpcbiAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgIGNhc2UgbnVtYmVyVGFnOlxuICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yKG9iamVjdCk7XG5cbiAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICAgIHJldHVybiBjbG9uZVJlZ0V4cChvYmplY3QpO1xuXG4gICAgY2FzZSBzZXRUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3I7XG5cbiAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgIHJldHVybiBjbG9uZVN5bWJvbChvYmplY3QpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lQnlUYWc7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdENyZWF0ZSA9IE9iamVjdC5jcmVhdGU7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY3JlYXRlYCB3aXRob3V0IHN1cHBvcnQgZm9yIGFzc2lnbmluZ1xuICogcHJvcGVydGllcyB0byB0aGUgY3JlYXRlZCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm90byBUaGUgb2JqZWN0IHRvIGluaGVyaXQgZnJvbS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKi9cbnZhciBiYXNlQ3JlYXRlID0gKGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBvYmplY3QoKSB7fVxuICByZXR1cm4gZnVuY3Rpb24ocHJvdG8pIHtcbiAgICBpZiAoIWlzT2JqZWN0KHByb3RvKSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBpZiAob2JqZWN0Q3JlYXRlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0Q3JlYXRlKHByb3RvKTtcbiAgICB9XG4gICAgb2JqZWN0LnByb3RvdHlwZSA9IHByb3RvO1xuICAgIHZhciByZXN1bHQgPSBuZXcgb2JqZWN0O1xuICAgIG9iamVjdC5wcm90b3R5cGUgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn0oKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUNyZWF0ZTtcbiIsInZhciBiYXNlQ3JlYXRlID0gcmVxdWlyZSgnLi9fYmFzZUNyZWF0ZScpLFxuICAgIGdldFByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2dldFByb3RvdHlwZScpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKTtcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVPYmplY3Qob2JqZWN0KSB7XG4gIHJldHVybiAodHlwZW9mIG9iamVjdC5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmICFpc1Byb3RvdHlwZShvYmplY3QpKVxuICAgID8gYmFzZUNyZWF0ZShnZXRQcm90b3R5cGUob2JqZWN0KSlcbiAgICA6IHt9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRDbG9uZU9iamVjdDtcbiIsInZhciBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNNYXBgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc01hcCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IG1hcFRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNNYXA7XG4iLCJ2YXIgYmFzZUlzTWFwID0gcmVxdWlyZSgnLi9fYmFzZUlzTWFwJyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc01hcCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzTWFwO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgTWFwYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc01hcChuZXcgTWFwKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTWFwKG5ldyBXZWFrTWFwKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc01hcCA9IG5vZGVJc01hcCA/IGJhc2VVbmFyeShub2RlSXNNYXApIDogYmFzZUlzTWFwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTWFwO1xuIiwidmFyIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzZXRUYWcgPSAnW29iamVjdCBTZXRdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1NldGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzU2V0KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gc2V0VGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc1NldDtcbiIsInZhciBiYXNlSXNTZXQgPSByZXF1aXJlKCcuL19iYXNlSXNTZXQnKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBub2RlVXRpbCA9IHJlcXVpcmUoJy4vX25vZGVVdGlsJyk7XG5cbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzU2V0ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNTZXQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTZXRgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU2V0KG5ldyBTZXQpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTZXQobmV3IFdlYWtTZXQpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzU2V0ID0gbm9kZUlzU2V0ID8gYmFzZVVuYXJ5KG5vZGVJc1NldCkgOiBiYXNlSXNTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTZXQ7XG4iLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSxcbiAgICBiYXNlQXNzaWduID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnbicpLFxuICAgIGJhc2VBc3NpZ25JbiA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25JbicpLFxuICAgIGNsb25lQnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVCdWZmZXInKSxcbiAgICBjb3B5QXJyYXkgPSByZXF1aXJlKCcuL19jb3B5QXJyYXknKSxcbiAgICBjb3B5U3ltYm9scyA9IHJlcXVpcmUoJy4vX2NvcHlTeW1ib2xzJyksXG4gICAgY29weVN5bWJvbHNJbiA9IHJlcXVpcmUoJy4vX2NvcHlTeW1ib2xzSW4nKSxcbiAgICBnZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5cycpLFxuICAgIGdldEFsbEtleXNJbiA9IHJlcXVpcmUoJy4vX2dldEFsbEtleXNJbicpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGluaXRDbG9uZUFycmF5ID0gcmVxdWlyZSgnLi9faW5pdENsb25lQXJyYXknKSxcbiAgICBpbml0Q2xvbmVCeVRhZyA9IHJlcXVpcmUoJy4vX2luaXRDbG9uZUJ5VGFnJyksXG4gICAgaW5pdENsb25lT2JqZWN0ID0gcmVxdWlyZSgnLi9faW5pdENsb25lT2JqZWN0JyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzTWFwID0gcmVxdWlyZSgnLi9pc01hcCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzU2V0ID0gcmVxdWlyZSgnLi9pc1NldCcpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBjbG9uaW5nLiAqL1xudmFyIENMT05FX0RFRVBfRkxBRyA9IDEsXG4gICAgQ0xPTkVfRkxBVF9GTEFHID0gMixcbiAgICBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIHN1cHBvcnRlZCBieSBgXy5jbG9uZWAuICovXG52YXIgY2xvbmVhYmxlVGFncyA9IHt9O1xuY2xvbmVhYmxlVGFnc1thcmdzVGFnXSA9IGNsb25lYWJsZVRhZ3NbYXJyYXlUYWddID1cbmNsb25lYWJsZVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRhVmlld1RhZ10gPVxuY2xvbmVhYmxlVGFnc1tib29sVGFnXSA9IGNsb25lYWJsZVRhZ3NbZGF0ZVRhZ10gPVxuY2xvbmVhYmxlVGFnc1tmbG9hdDMyVGFnXSA9IGNsb25lYWJsZVRhZ3NbZmxvYXQ2NFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbaW50MTZUYWddID1cbmNsb25lYWJsZVRhZ3NbaW50MzJUYWddID0gY2xvbmVhYmxlVGFnc1ttYXBUYWddID1cbmNsb25lYWJsZVRhZ3NbbnVtYmVyVGFnXSA9IGNsb25lYWJsZVRhZ3Nbb2JqZWN0VGFnXSA9XG5jbG9uZWFibGVUYWdzW3JlZ2V4cFRhZ10gPSBjbG9uZWFibGVUYWdzW3NldFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tzdHJpbmdUYWddID0gY2xvbmVhYmxlVGFnc1tzeW1ib2xUYWddID1cbmNsb25lYWJsZVRhZ3NbdWludDhUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50OENsYW1wZWRUYWddID1cbmNsb25lYWJsZVRhZ3NbdWludDE2VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG5jbG9uZWFibGVUYWdzW2Vycm9yVGFnXSA9IGNsb25lYWJsZVRhZ3NbZnVuY1RhZ10gPVxuY2xvbmVhYmxlVGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNsb25lYCBhbmQgYF8uY2xvbmVEZWVwYCB3aGljaCB0cmFja3NcbiAqIHRyYXZlcnNlZCBvYmplY3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAqICAxIC0gRGVlcCBjbG9uZVxuICogIDIgLSBGbGF0dGVuIGluaGVyaXRlZCBwcm9wZXJ0aWVzXG4gKiAgNCAtIENsb25lIHN5bWJvbHNcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNsb25pbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2tleV0gVGhlIGtleSBvZiBgdmFsdWVgLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBwYXJlbnQgb2JqZWN0IG9mIGB2YWx1ZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIG9iamVjdHMgYW5kIHRoZWlyIGNsb25lIGNvdW50ZXJwYXJ0cy5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VDbG9uZSh2YWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCBvYmplY3QsIHN0YWNrKSB7XG4gIHZhciByZXN1bHQsXG4gICAgICBpc0RlZXAgPSBiaXRtYXNrICYgQ0xPTkVfREVFUF9GTEFHLFxuICAgICAgaXNGbGF0ID0gYml0bWFzayAmIENMT05FX0ZMQVRfRkxBRyxcbiAgICAgIGlzRnVsbCA9IGJpdG1hc2sgJiBDTE9ORV9TWU1CT0xTX0ZMQUc7XG5cbiAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICByZXN1bHQgPSBvYmplY3QgPyBjdXN0b21pemVyKHZhbHVlLCBrZXksIG9iamVjdCwgc3RhY2spIDogY3VzdG9taXplcih2YWx1ZSk7XG4gIH1cbiAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKTtcbiAgaWYgKGlzQXJyKSB7XG4gICAgcmVzdWx0ID0gaW5pdENsb25lQXJyYXkodmFsdWUpO1xuICAgIGlmICghaXNEZWVwKSB7XG4gICAgICByZXR1cm4gY29weUFycmF5KHZhbHVlLCByZXN1bHQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKSxcbiAgICAgICAgaXNGdW5jID0gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZztcblxuICAgIGlmIChpc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjbG9uZUJ1ZmZlcih2YWx1ZSwgaXNEZWVwKTtcbiAgICB9XG4gICAgaWYgKHRhZyA9PSBvYmplY3RUYWcgfHwgdGFnID09IGFyZ3NUYWcgfHwgKGlzRnVuYyAmJiAhb2JqZWN0KSkge1xuICAgICAgcmVzdWx0ID0gKGlzRmxhdCB8fCBpc0Z1bmMpID8ge30gOiBpbml0Q2xvbmVPYmplY3QodmFsdWUpO1xuICAgICAgaWYgKCFpc0RlZXApIHtcbiAgICAgICAgcmV0dXJuIGlzRmxhdFxuICAgICAgICAgID8gY29weVN5bWJvbHNJbih2YWx1ZSwgYmFzZUFzc2lnbkluKHJlc3VsdCwgdmFsdWUpKVxuICAgICAgICAgIDogY29weVN5bWJvbHModmFsdWUsIGJhc2VBc3NpZ24ocmVzdWx0LCB2YWx1ZSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWNsb25lYWJsZVRhZ3NbdGFnXSkge1xuICAgICAgICByZXR1cm4gb2JqZWN0ID8gdmFsdWUgOiB7fTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdCA9IGluaXRDbG9uZUJ5VGFnKHZhbHVlLCB0YWcsIGlzRGVlcCk7XG4gICAgfVxuICB9XG4gIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2VzIGFuZCByZXR1cm4gaXRzIGNvcnJlc3BvbmRpbmcgY2xvbmUuXG4gIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KHZhbHVlKTtcbiAgaWYgKHN0YWNrZWQpIHtcbiAgICByZXR1cm4gc3RhY2tlZDtcbiAgfVxuICBzdGFjay5zZXQodmFsdWUsIHJlc3VsdCk7XG5cbiAgaWYgKGlzU2V0KHZhbHVlKSkge1xuICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oc3ViVmFsdWUpIHtcbiAgICAgIHJlc3VsdC5hZGQoYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdWJWYWx1ZSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoaXNNYXAodmFsdWUpKSB7XG4gICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgICByZXN1bHQuc2V0KGtleSwgYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFjaykpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIGtleXNGdW5jID0gaXNGdWxsXG4gICAgPyAoaXNGbGF0ID8gZ2V0QWxsS2V5c0luIDogZ2V0QWxsS2V5cylcbiAgICA6IChpc0ZsYXQgPyBrZXlzSW4gOiBrZXlzKTtcblxuICB2YXIgcHJvcHMgPSBpc0FyciA/IHVuZGVmaW5lZCA6IGtleXNGdW5jKHZhbHVlKTtcbiAgYXJyYXlFYWNoKHByb3BzIHx8IHZhbHVlLCBmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgaWYgKHByb3BzKSB7XG4gICAgICBrZXkgPSBzdWJWYWx1ZTtcbiAgICAgIHN1YlZhbHVlID0gdmFsdWVba2V5XTtcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgcG9wdWxhdGUgY2xvbmUgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICBhc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFjaykpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQ2xvbmU7XG4iLCIvKipcbiAqIEdldHMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmxhc3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gbGFzdChhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIHJldHVybiBsZW5ndGggPyBhcnJheVtsZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsYXN0O1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zbGljZWAgd2l0aG91dCBhbiBpdGVyYXRlZSBjYWxsIGd1YXJkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2xpY2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYmFzZVNsaWNlKGFycmF5LCBzdGFydCwgZW5kKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGlmIChzdGFydCA8IDApIHtcbiAgICBzdGFydCA9IC1zdGFydCA+IGxlbmd0aCA/IDAgOiAobGVuZ3RoICsgc3RhcnQpO1xuICB9XG4gIGVuZCA9IGVuZCA+IGxlbmd0aCA/IGxlbmd0aCA6IGVuZDtcbiAgaWYgKGVuZCA8IDApIHtcbiAgICBlbmQgKz0gbGVuZ3RoO1xuICB9XG4gIGxlbmd0aCA9IHN0YXJ0ID4gZW5kID8gMCA6ICgoZW5kIC0gc3RhcnQpID4+PiAwKTtcbiAgc3RhcnQgPj4+PSAwO1xuXG4gIHZhciByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSBhcnJheVtpbmRleCArIHN0YXJ0XTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTbGljZTtcbiIsInZhciBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpLFxuICAgIGJhc2VTbGljZSA9IHJlcXVpcmUoJy4vX2Jhc2VTbGljZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIHBhcmVudCB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl9IHBhdGggVGhlIHBhdGggdG8gZ2V0IHRoZSBwYXJlbnQgdmFsdWUgb2YuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcGFyZW50IHZhbHVlLlxuICovXG5mdW5jdGlvbiBwYXJlbnQob2JqZWN0LCBwYXRoKSB7XG4gIHJldHVybiBwYXRoLmxlbmd0aCA8IDIgPyBvYmplY3QgOiBiYXNlR2V0KG9iamVjdCwgYmFzZVNsaWNlKHBhdGgsIDAsIC0xKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwidmFyIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSxcbiAgICBsYXN0ID0gcmVxdWlyZSgnLi9sYXN0JyksXG4gICAgcGFyZW50ID0gcmVxdWlyZSgnLi9fcGFyZW50JyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuc2V0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwcm9wZXJ0eSBwYXRoIHRvIHVuc2V0LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSBpcyBkZWxldGVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbnNldChvYmplY3QsIHBhdGgpIHtcbiAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gIG9iamVjdCA9IHBhcmVudChvYmplY3QsIHBhdGgpO1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgfHwgZGVsZXRlIG9iamVjdFt0b0tleShsYXN0KHBhdGgpKV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuc2V0O1xuIiwidmFyIGlzUGxhaW5PYmplY3QgPSByZXF1aXJlKCcuL2lzUGxhaW5PYmplY3QnKTtcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLm9taXRgIHRvIGN1c3RvbWl6ZSBpdHMgYF8uY2xvbmVEZWVwYCB1c2UgdG8gb25seSBjbG9uZSBwbGFpblxuICogb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB1bmNsb25lZCB2YWx1ZSBvciBgdW5kZWZpbmVkYCB0byBkZWZlciBjbG9uaW5nIHRvIGBfLmNsb25lRGVlcGAuXG4gKi9cbmZ1bmN0aW9uIGN1c3RvbU9taXRDbG9uZSh2YWx1ZSkge1xuICByZXR1cm4gaXNQbGFpbk9iamVjdCh2YWx1ZSkgPyB1bmRlZmluZWQgOiB2YWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjdXN0b21PbWl0Q2xvbmU7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzcHJlYWRhYmxlU3ltYm9sID0gU3ltYm9sID8gU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZSA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGZsYXR0ZW5hYmxlIGBhcmd1bWVudHNgIG9iamVjdCBvciBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmbGF0dGVuYWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0ZsYXR0ZW5hYmxlKHZhbHVlKSB7XG4gIHJldHVybiBpc0FycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkgfHxcbiAgICAhIShzcHJlYWRhYmxlU3ltYm9sICYmIHZhbHVlICYmIHZhbHVlW3NwcmVhZGFibGVTeW1ib2xdKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0ZsYXR0ZW5hYmxlO1xuIiwidmFyIGFycmF5UHVzaCA9IHJlcXVpcmUoJy4vX2FycmF5UHVzaCcpLFxuICAgIGlzRmxhdHRlbmFibGUgPSByZXF1aXJlKCcuL19pc0ZsYXR0ZW5hYmxlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmxhdHRlbmAgd2l0aCBzdXBwb3J0IGZvciByZXN0cmljdGluZyBmbGF0dGVuaW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aCBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtwcmVkaWNhdGU9aXNGbGF0dGVuYWJsZV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3RyaWN0XSBSZXN0cmljdCB0byB2YWx1ZXMgdGhhdCBwYXNzIGBwcmVkaWNhdGVgIGNoZWNrcy5cbiAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHQ9W11dIFRoZSBpbml0aWFsIHJlc3VsdCB2YWx1ZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZUZsYXR0ZW4oYXJyYXksIGRlcHRoLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgcHJlZGljYXRlIHx8IChwcmVkaWNhdGUgPSBpc0ZsYXR0ZW5hYmxlKTtcbiAgcmVzdWx0IHx8IChyZXN1bHQgPSBbXSk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKGRlcHRoID4gMCAmJiBwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICBpZiAoZGVwdGggPiAxKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGJhc2VGbGF0dGVuKHZhbHVlLCBkZXB0aCAtIDEsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnJheVB1c2gocmVzdWx0LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaXNTdHJpY3QpIHtcbiAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGbGF0dGVuO1xuIiwidmFyIGJhc2VGbGF0dGVuID0gcmVxdWlyZSgnLi9fYmFzZUZsYXR0ZW4nKTtcblxuLyoqXG4gKiBGbGF0dGVucyBgYXJyYXlgIGEgc2luZ2xlIGxldmVsIGRlZXAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5mbGF0dGVuKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7XG4gKiAvLyA9PiBbMSwgMiwgWzMsIFs0XV0sIDVdXG4gKi9cbmZ1bmN0aW9uIGZsYXR0ZW4oYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICByZXR1cm4gbGVuZ3RoID8gYmFzZUZsYXR0ZW4oYXJyYXksIDEpIDogW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmxhdHRlbjtcbiIsIi8qKlxuICogQSBmYXN0ZXIgYWx0ZXJuYXRpdmUgdG8gYEZ1bmN0aW9uI2FwcGx5YCwgdGhpcyBmdW5jdGlvbiBpbnZva2VzIGBmdW5jYFxuICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgIGFuZCB0aGUgYXJndW1lbnRzIG9mIGBhcmdzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICogQHBhcmFtIHsqfSB0aGlzQXJnIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuXG4gKi9cbmZ1bmN0aW9uIGFwcGx5KGZ1bmMsIHRoaXNBcmcsIGFyZ3MpIHtcbiAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnKTtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSk7XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgfVxuICByZXR1cm4gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcHBseTtcbiIsInZhciBhcHBseSA9IHJlcXVpcmUoJy4vX2FwcGx5Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCB0cmFuc2Zvcm1zIHRoZSByZXN0IGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSByZXN0IGFycmF5IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyUmVzdChmdW5jLCBzdGFydCwgdHJhbnNmb3JtKSB7XG4gIHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0ID09PSB1bmRlZmluZWQgPyAoZnVuYy5sZW5ndGggLSAxKSA6IHN0YXJ0LCAwKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgoYXJncy5sZW5ndGggLSBzdGFydCwgMCksXG4gICAgICAgIGFycmF5ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhcnJheVtpbmRleF0gPSBhcmdzW3N0YXJ0ICsgaW5kZXhdO1xuICAgIH1cbiAgICBpbmRleCA9IC0xO1xuICAgIHZhciBvdGhlckFyZ3MgPSBBcnJheShzdGFydCArIDEpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgc3RhcnQpIHtcbiAgICAgIG90aGVyQXJnc1tpbmRleF0gPSBhcmdzW2luZGV4XTtcbiAgICB9XG4gICAgb3RoZXJBcmdzW3N0YXJ0XSA9IHRyYW5zZm9ybShhcnJheSk7XG4gICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3ZlclJlc3Q7XG4iLCIvKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYHZhbHVlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmV0dXJuIGZyb20gdGhlIG5ldyBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbnN0YW50IGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IF8udGltZXMoMiwgXy5jb25zdGFudCh7ICdhJzogMSB9KSk7XG4gKlxuICogY29uc29sZS5sb2cob2JqZWN0cyk7XG4gKiAvLyA9PiBbeyAnYSc6IDEgfSwgeyAnYSc6IDEgfV1cbiAqXG4gKiBjb25zb2xlLmxvZyhvYmplY3RzWzBdID09PSBvYmplY3RzWzFdKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gY29uc3RhbnQodmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb25zdGFudDtcbiIsIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQgaXQgcmVjZWl2ZXMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgQW55IHZhbHVlLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgYHZhbHVlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKlxuICogY29uc29sZS5sb2coXy5pZGVudGl0eShvYmplY3QpID09PSBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpZGVudGl0eSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaWRlbnRpdHk7XG4iLCJ2YXIgY29uc3RhbnQgPSByZXF1aXJlKCcuL2NvbnN0YW50JyksXG4gICAgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19kZWZpbmVQcm9wZXJ0eScpLFxuICAgIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBzZXRUb1N0cmluZ2Agd2l0aG91dCBzdXBwb3J0IGZvciBob3QgbG9vcCBzaG9ydGluZy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gKi9cbnZhciBiYXNlU2V0VG9TdHJpbmcgPSAhZGVmaW5lUHJvcGVydHkgPyBpZGVudGl0eSA6IGZ1bmN0aW9uKGZ1bmMsIHN0cmluZykge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHkoZnVuYywgJ3RvU3RyaW5nJywge1xuICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICdlbnVtZXJhYmxlJzogZmFsc2UsXG4gICAgJ3ZhbHVlJzogY29uc3RhbnQoc3RyaW5nKSxcbiAgICAnd3JpdGFibGUnOiB0cnVlXG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlU2V0VG9TdHJpbmc7XG4iLCIvKiogVXNlZCB0byBkZXRlY3QgaG90IGZ1bmN0aW9ucyBieSBudW1iZXIgb2YgY2FsbHMgd2l0aGluIGEgc3BhbiBvZiBtaWxsaXNlY29uZHMuICovXG52YXIgSE9UX0NPVU5UID0gODAwLFxuICAgIEhPVF9TUEFOID0gMTY7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVOb3cgPSBEYXRlLm5vdztcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCdsbCBzaG9ydCBvdXQgYW5kIGludm9rZSBgaWRlbnRpdHlgIGluc3RlYWRcbiAqIG9mIGBmdW5jYCB3aGVuIGl0J3MgY2FsbGVkIGBIT1RfQ09VTlRgIG9yIG1vcmUgdGltZXMgaW4gYEhPVF9TUEFOYFxuICogbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNob3J0YWJsZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gc2hvcnRPdXQoZnVuYykge1xuICB2YXIgY291bnQgPSAwLFxuICAgICAgbGFzdENhbGxlZCA9IDA7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzdGFtcCA9IG5hdGl2ZU5vdygpLFxuICAgICAgICByZW1haW5pbmcgPSBIT1RfU1BBTiAtIChzdGFtcCAtIGxhc3RDYWxsZWQpO1xuXG4gICAgbGFzdENhbGxlZCA9IHN0YW1wO1xuICAgIGlmIChyZW1haW5pbmcgPiAwKSB7XG4gICAgICBpZiAoKytjb3VudCA+PSBIT1RfQ09VTlQpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY291bnQgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYy5hcHBseSh1bmRlZmluZWQsIGFyZ3VtZW50cyk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2hvcnRPdXQ7XG4iLCJ2YXIgYmFzZVNldFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fYmFzZVNldFRvU3RyaW5nJyksXG4gICAgc2hvcnRPdXQgPSByZXF1aXJlKCcuL19zaG9ydE91dCcpO1xuXG4vKipcbiAqIFNldHMgdGhlIGB0b1N0cmluZ2AgbWV0aG9kIG9mIGBmdW5jYCB0byByZXR1cm4gYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgc2V0VG9TdHJpbmcgPSBzaG9ydE91dChiYXNlU2V0VG9TdHJpbmcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvU3RyaW5nO1xuIiwidmFyIGZsYXR0ZW4gPSByZXF1aXJlKCcuL2ZsYXR0ZW4nKSxcbiAgICBvdmVyUmVzdCA9IHJlcXVpcmUoJy4vX292ZXJSZXN0JyksXG4gICAgc2V0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19zZXRUb1N0cmluZycpO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVJlc3RgIHdoaWNoIGZsYXR0ZW5zIHRoZSByZXN0IGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGZsYXRSZXN0KGZ1bmMpIHtcbiAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHVuZGVmaW5lZCwgZmxhdHRlbiksIGZ1bmMgKyAnJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmxhdFJlc3Q7XG4iLCJ2YXIgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGJhc2VDbG9uZSA9IHJlcXVpcmUoJy4vX2Jhc2VDbG9uZScpLFxuICAgIGJhc2VVbnNldCA9IHJlcXVpcmUoJy4vX2Jhc2VVbnNldCcpLFxuICAgIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSxcbiAgICBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGN1c3RvbU9taXRDbG9uZSA9IHJlcXVpcmUoJy4vX2N1c3RvbU9taXRDbG9uZScpLFxuICAgIGZsYXRSZXN0ID0gcmVxdWlyZSgnLi9fZmxhdFJlc3QnKSxcbiAgICBnZXRBbGxLZXlzSW4gPSByZXF1aXJlKCcuL19nZXRBbGxLZXlzSW4nKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9ERUVQX0ZMQUcgPSAxLFxuICAgIENMT05FX0ZMQVRfRkxBRyA9IDIsXG4gICAgQ0xPTkVfU1lNQk9MU19GTEFHID0gNDtcblxuLyoqXG4gKiBUaGUgb3Bwb3NpdGUgb2YgYF8ucGlja2A7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZVxuICogb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBwYXRocyBvZiBgb2JqZWN0YCB0aGF0IGFyZSBub3Qgb21pdHRlZC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgY29uc2lkZXJhYmx5IHNsb3dlciB0aGFuIGBfLnBpY2tgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBvbWl0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gKlxuICogXy5vbWl0KG9iamVjdCwgWydhJywgJ2MnXSk7XG4gKiAvLyA9PiB7ICdiJzogJzInIH1cbiAqL1xudmFyIG9taXQgPSBmbGF0UmVzdChmdW5jdGlvbihvYmplY3QsIHBhdGhzKSB7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICB2YXIgaXNEZWVwID0gZmFsc2U7XG4gIHBhdGhzID0gYXJyYXlNYXAocGF0aHMsIGZ1bmN0aW9uKHBhdGgpIHtcbiAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcbiAgICBpc0RlZXAgfHwgKGlzRGVlcCA9IHBhdGgubGVuZ3RoID4gMSk7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH0pO1xuICBjb3B5T2JqZWN0KG9iamVjdCwgZ2V0QWxsS2V5c0luKG9iamVjdCksIHJlc3VsdCk7XG4gIGlmIChpc0RlZXApIHtcbiAgICByZXN1bHQgPSBiYXNlQ2xvbmUocmVzdWx0LCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9GTEFUX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcsIGN1c3RvbU9taXRDbG9uZSk7XG4gIH1cbiAgdmFyIGxlbmd0aCA9IHBhdGhzLmxlbmd0aDtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgYmFzZVVuc2V0KHJlc3VsdCwgcGF0aHNbbGVuZ3RoXSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG9taXQ7XG4iLCJpbXBvcnQganNvbnBvaW50ZXIgZnJvbSAnanNvbnBvaW50ZXInO1xuaW1wb3J0IG9taXQgZnJvbSAnbG9kYXNoL29taXQnO1xuaW1wb3J0IHsgUkVGX0tFWSB9IGZyb20gJy4vY29uc3RhbnRzJztcbi8qKiBTcGxpdHMgb3V0IHRoZSB2YWx1ZSBhdCB0aGUgYGtleWAgaW4gYG9iamVjdGAgZnJvbSB0aGUgYG9iamVjdGAsIHJldHVybmluZyBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIGluIHRoZSBmaXJzdFxuICogbG9jYXRpb24sIHRoZSBgb2JqZWN0YCBtaW51cyB0aGUgYGtleTogdmFsdWVgIGFuZCBpbiB0aGUgc2Vjb25kIGxvY2F0aW9uIHRoZSBgdmFsdWVgLlxuICpcbiAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IGZyb20gdGhlIG9iamVjdCB0byBleHRyYWN0XG4gKiBAcGFyYW0gb2JqZWN0IC0gVGhlIG9iamVjdCBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgdGhlIGVsZW1lbnRcbiAqIEByZXR1cm5zIC0gQW4gYXJyYXkgd2l0aCB0aGUgZmlyc3QgdmFsdWUgYmVpbmcgdGhlIG9iamVjdCBtaW51cyB0aGUgYGtleWAgZWxlbWVudCBhbmQgdGhlIHNlY29uZCBlbGVtZW50IGJlaW5nIHRoZVxuICogICAgICB2YWx1ZSBmcm9tIGBvYmplY3Rba2V5XWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0S2V5RWxlbWVudEZyb21PYmplY3Qoa2V5LCBvYmplY3QpIHtcbiAgICBjb25zdCB2YWx1ZSA9IG9iamVjdFtrZXldO1xuICAgIGNvbnN0IHJlbWFpbmluZyA9IG9taXQob2JqZWN0LCBba2V5XSk7XG4gICAgcmV0dXJuIFtyZW1haW5pbmcsIHZhbHVlXTtcbn1cbi8qKiBHaXZlbiB0aGUgbmFtZSBvZiBhIGAkcmVmYCBmcm9tIHdpdGhpbiBhIHNjaGVtYSwgdXNpbmcgdGhlIGByb290U2NoZW1hYCwgcmVjdXJzaXZlbHkgbG9vayB1cCBhbmQgcmV0dXJuIHRoZVxuICogc3ViLXNjaGVtYSB1c2luZyB0aGUgcGF0aCBwcm92aWRlZCBieSB0aGF0IHJlZmVyZW5jZS4gSWYgYCNgIGlzIG5vdCB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSByZWZlcmVuY2UsIHRoZSBwYXRoXG4gKiBkb2VzIG5vdCBleGlzdCBpbiB0aGUgc2NoZW1hLCBvciB0aGUgcmVmZXJlbmNlIHJlc29sdmVzIGNpcmN1bGFybHkgYmFjayB0byBpdHNlbGYsIHRoZW4gdGhyb3cgYW4gRXJyb3IuXG4gKiBPdGhlcndpc2UgcmV0dXJuIHRoZSBzdWItc2NoZW1hLiBBbHNvIGRlYWxzIHdpdGggbmVzdGVkIGAkcmVmYHMgaW4gdGhlIHN1Yi1zY2hlbWEuXG4gKlxuICogQHBhcmFtICRyZWYgLSBUaGUgcmVmIHN0cmluZyBmb3Igd2hpY2ggdGhlIHNjaGVtYSBkZWZpbml0aW9uIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSBbcm9vdFNjaGVtYT17fV0gLSBUaGUgcm9vdCBzY2hlbWEgaW4gd2hpY2ggdG8gc2VhcmNoIGZvciB0aGUgZGVmaW5pdGlvblxuICogQHBhcmFtIHJlY3Vyc2VMaXN0IC0gTGlzdCBvZiAkcmVmcyBhbHJlYWR5IHJlc29sdmVkIHRvIHByZXZlbnQgcmVjdXJzaW9uXG4gKiBAcmV0dXJucyAtIFRoZSBzdWItc2NoZW1hIHdpdGhpbiB0aGUgYHJvb3RTY2hlbWFgIHdoaWNoIG1hdGNoZXMgdGhlIGAkcmVmYCBpZiBpdCBleGlzdHNcbiAqIEB0aHJvd3MgLSBFcnJvciBpbmRpY2F0aW5nIHRoYXQgbm8gc2NoZW1hIGZvciB0aGF0IHJlZmVyZW5jZSBjb3VsZCBiZSByZXNvbHZlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFNjaGVtYURlZmluaXRpb25SZWN1cnNpdmUoJHJlZiwgcm9vdFNjaGVtYSA9IHt9LCByZWN1cnNlTGlzdCA9IFtdKSB7XG4gICAgY29uc3QgcmVmID0gJHJlZiB8fCAnJztcbiAgICBsZXQgZGVjb2RlZFJlZjtcbiAgICBpZiAocmVmLnN0YXJ0c1dpdGgoJyMnKSkge1xuICAgICAgICAvLyBEZWNvZGUgVVJJIGZyYWdtZW50IHJlcHJlc2VudGF0aW9uLlxuICAgICAgICBkZWNvZGVkUmVmID0gZGVjb2RlVVJJQ29tcG9uZW50KHJlZi5zdWJzdHJpbmcoMSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBhIGRlZmluaXRpb24gZm9yICR7JHJlZn0uYCk7XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnQgPSBqc29ucG9pbnRlci5nZXQocm9vdFNjaGVtYSwgZGVjb2RlZFJlZik7XG4gICAgaWYgKGN1cnJlbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGEgZGVmaW5pdGlvbiBmb3IgJHskcmVmfS5gKTtcbiAgICB9XG4gICAgY29uc3QgbmV4dFJlZiA9IGN1cnJlbnRbUkVGX0tFWV07XG4gICAgaWYgKG5leHRSZWYpIHtcbiAgICAgICAgLy8gQ2hlY2sgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMuXG4gICAgICAgIGlmIChyZWN1cnNlTGlzdC5pbmNsdWRlcyhuZXh0UmVmKSkge1xuICAgICAgICAgICAgaWYgKHJlY3Vyc2VMaXN0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRGVmaW5pdGlvbiBmb3IgJHskcmVmfSBpcyBhIGNpcmN1bGFyIHJlZmVyZW5jZWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgW2ZpcnN0UmVmLCAuLi5yZXN0UmVmc10gPSByZWN1cnNlTGlzdDtcbiAgICAgICAgICAgIGNvbnN0IGNpcmN1bGFyUGF0aCA9IFsuLi5yZXN0UmVmcywgcmVmLCBmaXJzdFJlZl0uam9pbignIC0+ICcpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEZWZpbml0aW9uIGZvciAke2ZpcnN0UmVmfSBjb250YWlucyBhIGNpcmN1bGFyIHJlZmVyZW5jZSB0aHJvdWdoICR7Y2lyY3VsYXJQYXRofWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFtyZW1haW5pbmcsIHRoZVJlZl0gPSBzcGxpdEtleUVsZW1lbnRGcm9tT2JqZWN0KFJFRl9LRVksIGN1cnJlbnQpO1xuICAgICAgICBjb25zdCBzdWJTY2hlbWEgPSBmaW5kU2NoZW1hRGVmaW5pdGlvblJlY3Vyc2l2ZSh0aGVSZWYsIHJvb3RTY2hlbWEsIFsuLi5yZWN1cnNlTGlzdCwgcmVmXSk7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhyZW1haW5pbmcpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLnJlbWFpbmluZywgLi4uc3ViU2NoZW1hIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1YlNjaGVtYTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG59XG4vKiogR2l2ZW4gdGhlIG5hbWUgb2YgYSBgJHJlZmAgZnJvbSB3aXRoaW4gYSBzY2hlbWEsIHVzaW5nIHRoZSBgcm9vdFNjaGVtYWAsIGxvb2sgdXAgYW5kIHJldHVybiB0aGUgc3ViLXNjaGVtYSB1c2luZyB0aGVcbiAqIHBhdGggcHJvdmlkZWQgYnkgdGhhdCByZWZlcmVuY2UuIElmIGAjYCBpcyBub3QgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgcmVmZXJlbmNlLCB0aGUgcGF0aCBkb2VzIG5vdCBleGlzdCBpblxuICogdGhlIHNjaGVtYSwgb3IgdGhlIHJlZmVyZW5jZSByZXNvbHZlcyBjaXJjdWxhcmx5IGJhY2sgdG8gaXRzZWxmLCB0aGVuIHRocm93IGFuIEVycm9yLiBPdGhlcndpc2UgcmV0dXJuIHRoZVxuICogc3ViLXNjaGVtYS4gQWxzbyBkZWFscyB3aXRoIG5lc3RlZCBgJHJlZmBzIGluIHRoZSBzdWItc2NoZW1hLlxuICpcbiAqIEBwYXJhbSAkcmVmIC0gVGhlIHJlZiBzdHJpbmcgZm9yIHdoaWNoIHRoZSBzY2hlbWEgZGVmaW5pdGlvbiBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gW3Jvb3RTY2hlbWE9e31dIC0gVGhlIHJvb3Qgc2NoZW1hIGluIHdoaWNoIHRvIHNlYXJjaCBmb3IgdGhlIGRlZmluaXRpb25cbiAqIEByZXR1cm5zIC0gVGhlIHN1Yi1zY2hlbWEgd2l0aGluIHRoZSBgcm9vdFNjaGVtYWAgd2hpY2ggbWF0Y2hlcyB0aGUgYCRyZWZgIGlmIGl0IGV4aXN0c1xuICogQHRocm93cyAtIEVycm9yIGluZGljYXRpbmcgdGhhdCBubyBzY2hlbWEgZm9yIHRoYXQgcmVmZXJlbmNlIGNvdWxkIGJlIHJlc29sdmVkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZpbmRTY2hlbWFEZWZpbml0aW9uKCRyZWYsIHJvb3RTY2hlbWEgPSB7fSkge1xuICAgIGNvbnN0IHJlY3Vyc2VMaXN0ID0gW107XG4gICAgcmV0dXJuIGZpbmRTY2hlbWFEZWZpbml0aW9uUmVjdXJzaXZlKCRyZWYsIHJvb3RTY2hlbWEsIHJlY3Vyc2VMaXN0KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZpbmRTY2hlbWFEZWZpbml0aW9uLmpzLm1hcCIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaGFzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSGFzKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSGFzO1xuIiwidmFyIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBwYXRoYCBleGlzdHMgb24gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFzRnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2sgcHJvcGVydGllcy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBoYXNGdW5jKSB7XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBmYWxzZTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSk7XG4gICAgaWYgKCEocmVzdWx0ID0gb2JqZWN0ICE9IG51bGwgJiYgaGFzRnVuYyhvYmplY3QsIGtleSkpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgb2JqZWN0ID0gb2JqZWN0W2tleV07XG4gIH1cbiAgaWYgKHJlc3VsdCB8fCArK2luZGV4ICE9IGxlbmd0aCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgbGVuZ3RoID0gb2JqZWN0ID09IG51bGwgPyAwIDogb2JqZWN0Lmxlbmd0aDtcbiAgcmV0dXJuICEhbGVuZ3RoICYmIGlzTGVuZ3RoKGxlbmd0aCkgJiYgaXNJbmRleChrZXksIGxlbmd0aCkgJiZcbiAgICAoaXNBcnJheShvYmplY3QpIHx8IGlzQXJndW1lbnRzKG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc1BhdGg7XG4iLCJ2YXIgYmFzZUhhcyA9IHJlcXVpcmUoJy4vX2Jhc2VIYXMnKSxcbiAgICBoYXNQYXRoID0gcmVxdWlyZSgnLi9faGFzUGF0aCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgcGF0aGAgaXMgYSBkaXJlY3QgcHJvcGVydHkgb2YgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IHsgJ2InOiAyIH0gfTtcbiAqIHZhciBvdGhlciA9IF8uY3JlYXRlKHsgJ2EnOiBfLmNyZWF0ZSh7ICdiJzogMiB9KSB9KTtcbiAqXG4gKiBfLmhhcyhvYmplY3QsICdhJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXMob2JqZWN0LCAnYS5iJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXMob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhcyhvdGhlciwgJ2EnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGhhcyhvYmplY3QsIHBhdGgpIHtcbiAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBiYXNlSGFzKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXM7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBOdW1iZXJgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogKipOb3RlOioqIFRvIGV4Y2x1ZGUgYEluZmluaXR5YCwgYC1JbmZpbml0eWAsIGFuZCBgTmFOYCwgd2hpY2ggYXJlXG4gKiBjbGFzc2lmaWVkIGFzIG51bWJlcnMsIHVzZSB0aGUgYF8uaXNGaW5pdGVgIG1ldGhvZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG51bWJlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTnVtYmVyKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc051bWJlcihJbmZpbml0eSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc051bWJlcignMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNOdW1iZXIodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IG51bWJlclRhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNOdW1iZXI7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3RyaW5nYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3RyaW5nLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTdHJpbmcoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTdHJpbmcoMSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8XG4gICAgKCFpc0FycmF5KHZhbHVlKSAmJiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN0cmluZ1RhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTdHJpbmc7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5yZWR1Y2VgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2luaXRBY2N1bV0gU3BlY2lmeSB1c2luZyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgIGFzXG4gKiAgdGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGFycmF5UmVkdWNlKGFycmF5LCBpdGVyYXRlZSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gIGlmIChpbml0QWNjdW0gJiYgbGVuZ3RoKSB7XG4gICAgYWNjdW11bGF0b3IgPSBhcnJheVsrK2luZGV4XTtcbiAgfVxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFjY3VtdWxhdG9yID0gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgfVxuICByZXR1cm4gYWNjdW11bGF0b3I7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlSZWR1Y2U7XG4iLCIvKipcbiAqIENyZWF0ZXMgYSBiYXNlIGZ1bmN0aW9uIGZvciBtZXRob2RzIGxpa2UgYF8uZm9ySW5gIGFuZCBgXy5mb3JPd25gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VGb3IoZnJvbVJpZ2h0KSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzRnVuYykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChvYmplY3QpLFxuICAgICAgICBwcm9wcyA9IGtleXNGdW5jKG9iamVjdCksXG4gICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgdmFyIGtleSA9IHByb3BzW2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdO1xuICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVCYXNlRm9yO1xuIiwidmFyIGNyZWF0ZUJhc2VGb3IgPSByZXF1aXJlKCcuL19jcmVhdGVCYXNlRm9yJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGJhc2VGb3JPd25gIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYG9iamVjdGBcbiAqIHByb3BlcnRpZXMgcmV0dXJuZWQgYnkgYGtleXNGdW5jYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LlxuICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG52YXIgYmFzZUZvciA9IGNyZWF0ZUJhc2VGb3IoKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRm9yO1xuIiwidmFyIGJhc2VGb3IgPSByZXF1aXJlKCcuL19iYXNlRm9yJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvck93bmAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VGb3JPd24ob2JqZWN0LCBpdGVyYXRlZSkge1xuICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3Iob2JqZWN0LCBpdGVyYXRlZSwga2V5cyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZvck93bjtcbiIsInZhciBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgYGJhc2VFYWNoYCBvciBgYmFzZUVhY2hSaWdodGAgZnVuY3Rpb24uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYSBjb2xsZWN0aW9uLlxuICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVCYXNlRWFjaChlYWNoRnVuYywgZnJvbVJpZ2h0KSB7XG4gIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgIH1cbiAgICBpZiAoIWlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICByZXR1cm4gZWFjaEZ1bmMoY29sbGVjdGlvbiwgaXRlcmF0ZWUpO1xuICAgIH1cbiAgICB2YXIgbGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGgsXG4gICAgICAgIGluZGV4ID0gZnJvbVJpZ2h0ID8gbGVuZ3RoIDogLTEsXG4gICAgICAgIGl0ZXJhYmxlID0gT2JqZWN0KGNvbGxlY3Rpb24pO1xuXG4gICAgd2hpbGUgKChmcm9tUmlnaHQgPyBpbmRleC0tIDogKytpbmRleCA8IGxlbmd0aCkpIHtcbiAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtpbmRleF0sIGluZGV4LCBpdGVyYWJsZSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVCYXNlRWFjaDtcbiIsInZhciBiYXNlRm9yT3duID0gcmVxdWlyZSgnLi9fYmFzZUZvck93bicpLFxuICAgIGNyZWF0ZUJhc2VFYWNoID0gcmVxdWlyZSgnLi9fY3JlYXRlQmFzZUVhY2gnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JFYWNoYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAqL1xudmFyIGJhc2VFYWNoID0gY3JlYXRlQmFzZUVhY2goYmFzZUZvck93bik7XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUVhY2g7XG4iLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWF0Y2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHBhcmFtIHtBcnJheX0gbWF0Y2hEYXRhIFRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSwgY3VzdG9taXplcikge1xuICB2YXIgaW5kZXggPSBtYXRjaERhdGEubGVuZ3RoLFxuICAgICAgbGVuZ3RoID0gaW5kZXgsXG4gICAgICBub0N1c3RvbWl6ZXIgPSAhY3VzdG9taXplcjtcblxuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gIWxlbmd0aDtcbiAgfVxuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICB2YXIgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgaWYgKChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSlcbiAgICAgICAgICA/IGRhdGFbMV0gIT09IG9iamVjdFtkYXRhWzBdXVxuICAgICAgICAgIDogIShkYXRhWzBdIGluIG9iamVjdClcbiAgICAgICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgdmFyIGtleSA9IGRhdGFbMF0sXG4gICAgICAgIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgIHNyY1ZhbHVlID0gZGF0YVsxXTtcblxuICAgIGlmIChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSkge1xuICAgICAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFjayA9IG5ldyBTdGFjaztcbiAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spO1xuICAgICAgfVxuICAgICAgaWYgKCEocmVzdWx0ID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcsIGN1c3RvbWl6ZXIsIHN0YWNrKVxuICAgICAgICAgICAgOiByZXN1bHRcbiAgICAgICAgICApKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTWF0Y2g7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpZiBzdWl0YWJsZSBmb3Igc3RyaWN0XG4gKiAgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgJiYgIWlzT2JqZWN0KHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1N0cmljdENvbXBhcmFibGU7XG4iLCJ2YXIgaXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9faXNTdHJpY3RDb21wYXJhYmxlJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIEdldHMgdGhlIHByb3BlcnR5IG5hbWVzLCB2YWx1ZXMsIGFuZCBjb21wYXJlIGZsYWdzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG1hdGNoIGRhdGEgb2YgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGdldE1hdGNoRGF0YShvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IGtleXMob2JqZWN0KSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgdmFyIGtleSA9IHJlc3VsdFtsZW5ndGhdLFxuICAgICAgICB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgcmVzdWx0W2xlbmd0aF0gPSBba2V5LCB2YWx1ZSwgaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKV07XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRNYXRjaERhdGE7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgbWF0Y2hlc1Byb3BlcnR5YCBmb3Igc291cmNlIHZhbHVlcyBzdWl0YWJsZVxuICogZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKGtleSwgc3JjVmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0W2tleV0gPT09IHNyY1ZhbHVlICYmXG4gICAgICAoc3JjVmFsdWUgIT09IHVuZGVmaW5lZCB8fCAoa2V5IGluIE9iamVjdChvYmplY3QpKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWF0Y2hlc1N0cmljdENvbXBhcmFibGU7XG4iLCJ2YXIgYmFzZUlzTWF0Y2ggPSByZXF1aXJlKCcuL19iYXNlSXNNYXRjaCcpLFxuICAgIGdldE1hdGNoRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hdGNoRGF0YScpLFxuICAgIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzYCB3aGljaCBkb2Vzbid0IGNsb25lIGBzb3VyY2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZU1hdGNoZXMoc291cmNlKSB7XG4gIHZhciBtYXRjaERhdGEgPSBnZXRNYXRjaERhdGEoc291cmNlKTtcbiAgaWYgKG1hdGNoRGF0YS5sZW5ndGggPT0gMSAmJiBtYXRjaERhdGFbMF1bMl0pIHtcbiAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUobWF0Y2hEYXRhWzBdWzBdLCBtYXRjaERhdGFbMF1bMV0pO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09PSBzb3VyY2UgfHwgYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1hdGNoZXM7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc0luYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSGFzSW4ob2JqZWN0LCBrZXkpIHtcbiAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGtleSBpbiBPYmplY3Qob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSGFzSW47XG4iLCJ2YXIgYmFzZUhhc0luID0gcmVxdWlyZSgnLi9fYmFzZUhhc0luJyksXG4gICAgaGFzUGF0aCA9IHJlcXVpcmUoJy4vX2hhc1BhdGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHBhdGhgIGlzIGEgZGlyZWN0IG9yIGluaGVyaXRlZCBwcm9wZXJ0eSBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gKlxuICogXy5oYXNJbihvYmplY3QsICdhJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXNJbihvYmplY3QsICdhLmInKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXNJbihvYmplY3QsICdiJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBoYXNJbihvYmplY3QsIHBhdGgpIHtcbiAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBiYXNlSGFzSW4pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc0luO1xuIiwidmFyIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKSxcbiAgICBnZXQgPSByZXF1aXJlKCcuL2dldCcpLFxuICAgIGhhc0luID0gcmVxdWlyZSgnLi9oYXNJbicpLFxuICAgIGlzS2V5ID0gcmVxdWlyZSgnLi9faXNLZXknKSxcbiAgICBpc1N0cmljdENvbXBhcmFibGUgPSByZXF1aXJlKCcuL19pc1N0cmljdENvbXBhcmFibGUnKSxcbiAgICBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZSA9IHJlcXVpcmUoJy4vX21hdGNoZXNTdHJpY3RDb21wYXJhYmxlJyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWF0Y2hlc1Byb3BlcnR5YCB3aGljaCBkb2Vzbid0IGNsb25lIGBzcmNWYWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VNYXRjaGVzUHJvcGVydHkocGF0aCwgc3JjVmFsdWUpIHtcbiAgaWYgKGlzS2V5KHBhdGgpICYmIGlzU3RyaWN0Q29tcGFyYWJsZShzcmNWYWx1ZSkpIHtcbiAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUodG9LZXkocGF0aCksIHNyY1ZhbHVlKTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgdmFyIG9ialZhbHVlID0gZ2V0KG9iamVjdCwgcGF0aCk7XG4gICAgcmV0dXJuIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIG9ialZhbHVlID09PSBzcmNWYWx1ZSlcbiAgICAgID8gaGFzSW4ob2JqZWN0LCBwYXRoKVxuICAgICAgOiBiYXNlSXNFcXVhbChzcmNWYWx1ZSwgb2JqVmFsdWUsIENPTVBBUkVfUEFSVElBTF9GTEFHIHwgQ09NUEFSRV9VTk9SREVSRURfRkxBRyk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1hdGNoZXNQcm9wZXJ0eTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVByb3BlcnR5KGtleSkge1xuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVByb3BlcnR5O1xuIiwidmFyIGJhc2VHZXQgPSByZXF1aXJlKCcuL19iYXNlR2V0Jyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUHJvcGVydHlgIHdoaWNoIHN1cHBvcnRzIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVByb3BlcnR5RGVlcChwYXRoKSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQcm9wZXJ0eURlZXA7XG4iLCJ2YXIgYmFzZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fYmFzZVByb3BlcnR5JyksXG4gICAgYmFzZVByb3BlcnR5RGVlcCA9IHJlcXVpcmUoJy4vX2Jhc2VQcm9wZXJ0eURlZXAnKSxcbiAgICBpc0tleSA9IHJlcXVpcmUoJy4vX2lzS2V5JyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBhIGdpdmVuIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFtcbiAqICAgeyAnYSc6IHsgJ2InOiAyIH0gfSxcbiAqICAgeyAnYSc6IHsgJ2InOiAxIH0gfVxuICogXTtcbiAqXG4gKiBfLm1hcChvYmplY3RzLCBfLnByb3BlcnR5KCdhLmInKSk7XG4gKiAvLyA9PiBbMiwgMV1cbiAqXG4gKiBfLm1hcChfLnNvcnRCeShvYmplY3RzLCBfLnByb3BlcnR5KFsnYScsICdiJ10pKSwgJ2EuYicpO1xuICogLy8gPT4gWzEsIDJdXG4gKi9cbmZ1bmN0aW9uIHByb3BlcnR5KHBhdGgpIHtcbiAgcmV0dXJuIGlzS2V5KHBhdGgpID8gYmFzZVByb3BlcnR5KHRvS2V5KHBhdGgpKSA6IGJhc2VQcm9wZXJ0eURlZXAocGF0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvcGVydHk7XG4iLCJ2YXIgYmFzZU1hdGNoZXMgPSByZXF1aXJlKCcuL19iYXNlTWF0Y2hlcycpLFxuICAgIGJhc2VNYXRjaGVzUHJvcGVydHkgPSByZXF1aXJlKCcuL19iYXNlTWF0Y2hlc1Byb3BlcnR5JyksXG4gICAgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5JyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIHByb3BlcnR5ID0gcmVxdWlyZSgnLi9wcm9wZXJ0eScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLml0ZXJhdGVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSBbdmFsdWU9Xy5pZGVudGl0eV0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gYW4gaXRlcmF0ZWUuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGl0ZXJhdGVlLlxuICovXG5mdW5jdGlvbiBiYXNlSXRlcmF0ZWUodmFsdWUpIHtcbiAgLy8gRG9uJ3Qgc3RvcmUgdGhlIGB0eXBlb2ZgIHJlc3VsdCBpbiBhIHZhcmlhYmxlIHRvIGF2b2lkIGEgSklUIGJ1ZyBpbiBTYWZhcmkgOS5cbiAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTYwMzQgZm9yIG1vcmUgZGV0YWlscy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGlkZW50aXR5O1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSlcbiAgICAgID8gYmFzZU1hdGNoZXNQcm9wZXJ0eSh2YWx1ZVswXSwgdmFsdWVbMV0pXG4gICAgICA6IGJhc2VNYXRjaGVzKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gcHJvcGVydHkodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJdGVyYXRlZTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVkdWNlYCBhbmQgYF8ucmVkdWNlUmlnaHRgLCB3aXRob3V0IHN1cHBvcnRcbiAqIGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLCB3aGljaCBpdGVyYXRlcyBvdmVyIGBjb2xsZWN0aW9uYCB1c2luZyBgZWFjaEZ1bmNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHsqfSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5pdEFjY3VtIFNwZWNpZnkgdXNpbmcgdGhlIGZpcnN0IG9yIGxhc3QgZWxlbWVudCBvZlxuICogIGBjb2xsZWN0aW9uYCBhcyB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYGNvbGxlY3Rpb25gLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNlUmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBlYWNoRnVuYykge1xuICBlYWNoRnVuYyhjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICBhY2N1bXVsYXRvciA9IGluaXRBY2N1bVxuICAgICAgPyAoaW5pdEFjY3VtID0gZmFsc2UsIHZhbHVlKVxuICAgICAgOiBpdGVyYXRlZShhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgfSk7XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUmVkdWNlO1xuIiwidmFyIGFycmF5UmVkdWNlID0gcmVxdWlyZSgnLi9fYXJyYXlSZWR1Y2UnKSxcbiAgICBiYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2Jhc2VFYWNoJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgYmFzZVJlZHVjZSA9IHJlcXVpcmUoJy4vX2Jhc2VSZWR1Y2UnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogUmVkdWNlcyBgY29sbGVjdGlvbmAgdG8gYSB2YWx1ZSB3aGljaCBpcyB0aGUgYWNjdW11bGF0ZWQgcmVzdWx0IG9mIHJ1bm5pbmdcbiAqIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLCB3aGVyZSBlYWNoIHN1Y2Nlc3NpdmVcbiAqIGludm9jYXRpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuIElmIGBhY2N1bXVsYXRvcmBcbiAqIGlzIG5vdCBnaXZlbiwgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIGlzIHVzZWQgYXMgdGhlIGluaXRpYWxcbiAqIHZhbHVlLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIGZvdXIgYXJndW1lbnRzOlxuICogKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAqXG4gKiBNYW55IGxvZGFzaCBtZXRob2RzIGFyZSBndWFyZGVkIHRvIHdvcmsgYXMgaXRlcmF0ZWVzIGZvciBtZXRob2RzIGxpa2VcbiAqIGBfLnJlZHVjZWAsIGBfLnJlZHVjZVJpZ2h0YCwgYW5kIGBfLnRyYW5zZm9ybWAuXG4gKlxuICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gKiBgYXNzaWduYCwgYGRlZmF1bHRzYCwgYGRlZmF1bHRzRGVlcGAsIGBpbmNsdWRlc2AsIGBtZXJnZWAsIGBvcmRlckJ5YCxcbiAqIGFuZCBgc29ydEJ5YFxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqIEBzZWUgXy5yZWR1Y2VSaWdodFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnJlZHVjZShbMSwgMl0sIGZ1bmN0aW9uKHN1bSwgbikge1xuICogICByZXR1cm4gc3VtICsgbjtcbiAqIH0sIDApO1xuICogLy8gPT4gM1xuICpcbiAqIF8ucmVkdWNlKHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9LCBmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAqICAgKHJlc3VsdFt2YWx1ZV0gfHwgKHJlc3VsdFt2YWx1ZV0gPSBbXSkpLnB1c2goa2V5KTtcbiAqICAgcmV0dXJuIHJlc3VsdDtcbiAqIH0sIHt9KTtcbiAqIC8vID0+IHsgJzEnOiBbJ2EnLCAnYyddLCAnMic6IFsnYiddIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24gcmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVJlZHVjZSA6IGJhc2VSZWR1Y2UsXG4gICAgICBpbml0QWNjdW0gPSBhcmd1bWVudHMubGVuZ3RoIDwgMztcblxuICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBiYXNlSXRlcmF0ZWUoaXRlcmF0ZWUsIDQpLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBiYXNlRWFjaCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVkdWNlO1xuIiwidmFyIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpO1xuXG4vKipcbiAqIENhc3RzIGB2YWx1ZWAgdG8gYGlkZW50aXR5YCBpZiBpdCdzIG5vdCBhIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGNhc3QgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNhc3RGdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicgPyB2YWx1ZSA6IGlkZW50aXR5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc3RGdW5jdGlvbjtcbiIsIi8qKiBVc2VkIHRvIG1hdGNoIGEgc2luZ2xlIHdoaXRlc3BhY2UgY2hhcmFjdGVyLiAqL1xudmFyIHJlV2hpdGVzcGFjZSA9IC9cXHMvO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1FbmRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2VcbiAqIGNoYXJhY3RlciBvZiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIuXG4gKi9cbmZ1bmN0aW9uIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpIHtcbiAgdmFyIGluZGV4ID0gc3RyaW5nLmxlbmd0aDtcblxuICB3aGlsZSAoaW5kZXgtLSAmJiByZVdoaXRlc3BhY2UudGVzdChzdHJpbmcuY2hhckF0KGluZGV4KSkpIHt9XG4gIHJldHVybiBpbmRleDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmltbWVkRW5kSW5kZXg7XG4iLCJ2YXIgdHJpbW1lZEVuZEluZGV4ID0gcmVxdWlyZSgnLi9fdHJpbW1lZEVuZEluZGV4Jyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGxlYWRpbmcgd2hpdGVzcGFjZS4gKi9cbnZhciByZVRyaW1TdGFydCA9IC9eXFxzKy87XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udHJpbWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byB0cmltLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUcmltKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nXG4gICAgPyBzdHJpbmcuc2xpY2UoMCwgdHJpbW1lZEVuZEluZGV4KHN0cmluZykgKyAxKS5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJylcbiAgICA6IHN0cmluZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVHJpbTtcbiIsInZhciBiYXNlVHJpbSA9IHJlcXVpcmUoJy4vX2Jhc2VUcmltJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE5BTiA9IDAgLyAwO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCYWRIZXggPSAvXlstK10weFswLTlhLWZdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJpbmFyeSBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvY3RhbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbi8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG52YXIgZnJlZVBhcnNlSW50ID0gcGFyc2VJbnQ7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b051bWJlcigzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9OdW1iZXIoSW5maW5pdHkpO1xuICogLy8gPT4gSW5maW5pdHlcbiAqXG4gKiBfLnRvTnVtYmVyKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTkFOO1xuICB9XG4gIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICB2YXIgb3RoZXIgPSB0eXBlb2YgdmFsdWUudmFsdWVPZiA9PSAnZnVuY3Rpb24nID8gdmFsdWUudmFsdWVPZigpIDogdmFsdWU7XG4gICAgdmFsdWUgPSBpc09iamVjdChvdGhlcikgPyAob3RoZXIgKyAnJykgOiBvdGhlcjtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiArdmFsdWU7XG4gIH1cbiAgdmFsdWUgPSBiYXNlVHJpbSh2YWx1ZSk7XG4gIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gIHJldHVybiAoaXNCaW5hcnkgfHwgcmVJc09jdGFsLnRlc3QodmFsdWUpKVxuICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvTnVtYmVyO1xuIiwidmFyIHRvTnVtYmVyID0gcmVxdWlyZSgnLi90b051bWJlcicpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwLFxuICAgIE1BWF9JTlRFR0VSID0gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDg7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIGZpbml0ZSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEyLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0Zpbml0ZSgzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9GaW5pdGUoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvRmluaXRlKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b0Zpbml0ZSh2YWx1ZSkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiAwO1xuICB9XG4gIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICBpZiAodmFsdWUgPT09IElORklOSVRZIHx8IHZhbHVlID09PSAtSU5GSU5JVFkpIHtcbiAgICB2YXIgc2lnbiA9ICh2YWx1ZSA8IDAgPyAtMSA6IDEpO1xuICAgIHJldHVybiBzaWduICogTUFYX0lOVEVHRVI7XG4gIH1cbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/IHZhbHVlIDogMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0Zpbml0ZTtcbiIsInZhciB0b0Zpbml0ZSA9IHJlcXVpcmUoJy4vdG9GaW5pdGUnKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9JbnRlZ2VyYF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvaW50ZWdlcikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0ludGVnZXIoMy4yKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnRvSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDBcbiAqXG4gKiBfLnRvSW50ZWdlcihJbmZpbml0eSk7XG4gKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICpcbiAqIF8udG9JbnRlZ2VyKCczLjInKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gdG9JbnRlZ2VyKHZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSB0b0Zpbml0ZSh2YWx1ZSksXG4gICAgICByZW1haW5kZXIgPSByZXN1bHQgJSAxO1xuXG4gIHJldHVybiByZXN1bHQgPT09IHJlc3VsdCA/IChyZW1haW5kZXIgPyByZXN1bHQgLSByZW1haW5kZXIgOiByZXN1bHQpIDogMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0ludGVnZXI7XG4iLCJ2YXIgYmFzZVRpbWVzID0gcmVxdWlyZSgnLi9fYmFzZVRpbWVzJyksXG4gICAgY2FzdEZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fY2FzdEZ1bmN0aW9uJyksXG4gICAgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi90b0ludGVnZXInKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHRoZSBtYXhpbXVtIGxlbmd0aCBhbmQgaW5kZXggb2YgYW4gYXJyYXkuICovXG52YXIgTUFYX0FSUkFZX0xFTkdUSCA9IDQyOTQ5NjcyOTU7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNaW4gPSBNYXRoLm1pbjtcblxuLyoqXG4gKiBJbnZva2VzIHRoZSBpdGVyYXRlZSBgbmAgdGltZXMsIHJldHVybmluZyBhbiBhcnJheSBvZiB0aGUgcmVzdWx0cyBvZlxuICogZWFjaCBpbnZvY2F0aW9uLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDsgKGluZGV4KS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDMsIFN0cmluZyk7XG4gKiAvLyA9PiBbJzAnLCAnMScsICcyJ11cbiAqXG4gKiAgXy50aW1lcyg0LCBfLmNvbnN0YW50KDApKTtcbiAqIC8vID0+IFswLCAwLCAwLCAwXVxuICovXG5mdW5jdGlvbiB0aW1lcyhuLCBpdGVyYXRlZSkge1xuICBuID0gdG9JbnRlZ2VyKG4pO1xuICBpZiAobiA8IDEgfHwgbiA+IE1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgdmFyIGluZGV4ID0gTUFYX0FSUkFZX0xFTkdUSCxcbiAgICAgIGxlbmd0aCA9IG5hdGl2ZU1pbihuLCBNQVhfQVJSQVlfTEVOR1RIKTtcblxuICBpdGVyYXRlZSA9IGNhc3RGdW5jdGlvbihpdGVyYXRlZSk7XG4gIG4gLT0gTUFYX0FSUkFZX0xFTkdUSDtcblxuICB2YXIgcmVzdWx0ID0gYmFzZVRpbWVzKGxlbmd0aCwgaXRlcmF0ZWUpO1xuICB3aGlsZSAoKytpbmRleCA8IG4pIHtcbiAgICBpdGVyYXRlZShpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0aW1lcztcbiIsImltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgeyBQUk9QRVJUSUVTX0tFWSB9IGZyb20gJy4vY29uc3RhbnRzJztcbi8qKiBDb21wYXJlcyB0aGUgdmFsdWUgb2YgYGRpc2NyaW1pbmF0b3JGaWVsZGAgd2l0aGluIGBmb3JtRGF0YWAgYWdhaW5zdCB0aGUgdmFsdWUgb2YgYGRpc2NyaW1pbmF0b3JGaWVsZGAgd2l0aGluIHNjaGVtYSBmb3IgZWFjaCBgb3B0aW9uYC5cbiAqIFJldHVybnMgaW5kZXggb2YgZmlyc3QgYG9wdGlvbmAgd2hvc2UgZGlzY3JpbWluYXRvciBtYXRjaGVzIGZvcm1EYXRhLiBSZXR1cm5zIGB1bmRlZmluZWRgIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxuICogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCB3b3JrIHdpdGggZGlzY3JpbWluYXRvcnMgb2YgYFwidHlwZVwiOiBcIm9iamVjdFwiYCBhbmQgYFwidHlwZVwiOiBcImFycmF5XCJgXG4gKlxuICogQHBhcmFtIGZvcm1EYXRhIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdXNlZCB0byBmaWd1cmUgb3V0IGEgbWF0Y2hcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGxpc3Qgb2Ygb3B0aW9ucyB0byBmaW5kIGEgbWF0Y2hpbmcgb3B0aW9ucyBmcm9tXG4gKiBAcGFyYW0gW2Rpc2NyaW1pbmF0b3JGaWVsZF0gLSBUaGUgb3B0aW9uYWwgbmFtZSBvZiB0aGUgZmllbGQgd2l0aGluIHRoZSBvcHRpb25zIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyB1c2VkIHRvXG4gKiAgICAgICAgICBkZXRlcm1pbmUgd2hpY2ggb3B0aW9uIGlzIHNlbGVjdGVkXG4gKiBAcmV0dXJucyAtIFRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCBvcHRpb24gb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vIG1hdGNoXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9wdGlvbk1hdGNoaW5nU2ltcGxlRGlzY3JpbWluYXRvcihmb3JtRGF0YSwgb3B0aW9ucywgZGlzY3JpbWluYXRvckZpZWxkKSB7XG4gICAgdmFyIF9hO1xuICAgIGlmIChmb3JtRGF0YSAmJiBkaXNjcmltaW5hdG9yRmllbGQpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBnZXQoZm9ybURhdGEsIGRpc2NyaW1pbmF0b3JGaWVsZCk7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBvcHRpb24gPSBvcHRpb25zW2ldO1xuICAgICAgICAgICAgY29uc3QgZGlzY3JpbWluYXRvciA9IGdldChvcHRpb24sIFtQUk9QRVJUSUVTX0tFWSwgZGlzY3JpbWluYXRvckZpZWxkXSwge30pO1xuICAgICAgICAgICAgaWYgKGRpc2NyaW1pbmF0b3IudHlwZSA9PT0gJ29iamVjdCcgfHwgZGlzY3JpbWluYXRvci50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGlzY3JpbWluYXRvci5jb25zdCA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoX2EgPSBkaXNjcmltaW5hdG9yLmVudW0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm47XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXRPcHRpb25NYXRjaGluZ1NpbXBsZURpc2NyaW1pbmF0b3IuanMubWFwIiwiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBoYXMgZnJvbSAnbG9kYXNoL2hhcyc7XG5pbXBvcnQgaXNOdW1iZXIgZnJvbSAnbG9kYXNoL2lzTnVtYmVyJztcbmltcG9ydCB7IFBST1BFUlRJRVNfS0VZIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBnZXRPcHRpb25NYXRjaGluZ1NpbXBsZURpc2NyaW1pbmF0b3IgZnJvbSAnLi4vZ2V0T3B0aW9uTWF0Y2hpbmdTaW1wbGVEaXNjcmltaW5hdG9yJztcbi8qKiBHaXZlbiB0aGUgYGZvcm1EYXRhYCBhbmQgbGlzdCBvZiBgb3B0aW9uc2AsIGF0dGVtcHRzIHRvIGZpbmQgdGhlIGluZGV4IG9mIHRoZSBvcHRpb24gdGhhdCBiZXN0IG1hdGNoZXMgdGhlIGRhdGEuXG4gKiBEZXByZWNhdGVkLCB1c2UgYGdldEZpcnN0TWF0Y2hpbmdPcHRpb24oKWAgaW5zdGVhZC5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIHVzZWQgdG8gZmlndXJlIG91dCBhIG1hdGNoXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBsaXN0IG9mIG9wdGlvbnMgdG8gZmluZCBhIG1hdGNoaW5nIG9wdGlvbnMgZnJvbVxuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEsIHVzZWQgdG8gcHJpbWFyaWx5IHRvIGxvb2sgdXAgYCRyZWZgc1xuICogQHBhcmFtIFtkaXNjcmltaW5hdG9yRmllbGRdIC0gVGhlIG9wdGlvbmFsIG5hbWUgb2YgdGhlIGZpZWxkIHdpdGhpbiB0aGUgb3B0aW9ucyBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdXNlZCB0b1xuICogICAgICAgICAgZGV0ZXJtaW5lIHdoaWNoIG9wdGlvbiBpcyBzZWxlY3RlZFxuICogQHJldHVybnMgLSBUaGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgb3B0aW9uIG9yIDAgaWYgbm9uZSBpcyBhdmFpbGFibGVcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE1hdGNoaW5nT3B0aW9uKHZhbGlkYXRvciwgZm9ybURhdGEsIG9wdGlvbnMsIHJvb3RTY2hlbWEsIGRpc2NyaW1pbmF0b3JGaWVsZCkge1xuICAgIC8vIEZvciBwZXJmb3JtYW5jZSwgc2tpcCB2YWxpZGF0aW5nIHN1YnNjaGVtYXMgaWYgZm9ybURhdGEgaXMgdW5kZWZpbmVkLiBXZSBqdXN0XG4gICAgLy8gd2FudCB0byBnZXQgdGhlIGZpcnN0IG9wdGlvbiBpbiB0aGF0IGNhc2UuXG4gICAgaWYgKGZvcm1EYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGNvbnN0IHNpbXBsZURpc2NyaW1pbmF0b3JNYXRjaCA9IGdldE9wdGlvbk1hdGNoaW5nU2ltcGxlRGlzY3JpbWluYXRvcihmb3JtRGF0YSwgb3B0aW9ucywgZGlzY3JpbWluYXRvckZpZWxkKTtcbiAgICBpZiAoaXNOdW1iZXIoc2ltcGxlRGlzY3JpbWluYXRvck1hdGNoKSkge1xuICAgICAgICByZXR1cm4gc2ltcGxlRGlzY3JpbWluYXRvck1hdGNoO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gb3B0aW9uc1tpXTtcbiAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIGRpc2NyaW1pbmF0b3IgZmllbGQsIHRoZW4gd2Ugd2lsbCB1c2UgdGhpcyB0byBtYWtlIHRoZSBkZXRlcm1pbmF0aW9uXG4gICAgICAgIGlmIChkaXNjcmltaW5hdG9yRmllbGQgJiYgaGFzKG9wdGlvbiwgW1BST1BFUlRJRVNfS0VZLCBkaXNjcmltaW5hdG9yRmllbGRdKSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXQoZm9ybURhdGEsIGRpc2NyaW1pbmF0b3JGaWVsZCk7XG4gICAgICAgICAgICBjb25zdCBkaXNjcmltaW5hdG9yID0gZ2V0KG9wdGlvbiwgW1BST1BFUlRJRVNfS0VZLCBkaXNjcmltaW5hdG9yRmllbGRdLCB7fSk7XG4gICAgICAgICAgICBpZiAodmFsaWRhdG9yLmlzVmFsaWQoZGlzY3JpbWluYXRvciwgdmFsdWUsIHJvb3RTY2hlbWEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAob3B0aW9uW1BST1BFUlRJRVNfS0VZXSkge1xuICAgICAgICAgICAgLy8gSWYgdGhlIHNjaGVtYSBkZXNjcmliZXMgYW4gb2JqZWN0IHRoZW4gd2UgbmVlZCB0byBhZGQgc2xpZ2h0bHkgbW9yZVxuICAgICAgICAgICAgLy8gc3RyaWN0IG1hdGNoaW5nIHRvIHRoZSBzY2hlbWEsIGJlY2F1c2UgdW5sZXNzIHRoZSBzY2hlbWEgdXNlcyB0aGVcbiAgICAgICAgICAgIC8vIFwicmVxdWlyZXNcIiBrZXl3b3JkLCBhbiBvYmplY3Qgd2lsbCBtYXRjaCB0aGUgc2NoZW1hIGFzIGxvbmcgYXMgaXRcbiAgICAgICAgICAgIC8vIGRvZXNuJ3QgaGF2ZSBtYXRjaGluZyBrZXlzIHdpdGggYSBjb25mbGljdGluZyB0eXBlLiBUbyBkbyB0aGlzIHdlIHVzZSBhblxuICAgICAgICAgICAgLy8gXCJhbnlPZlwiIHdpdGggYW4gYXJyYXkgb2YgcmVxdWlyZXMuIFRoaXMgYXVnbWVudGF0aW9uIGV4cHJlc3NlcyB0aGF0IHRoZVxuICAgICAgICAgICAgLy8gc2NoZW1hIHNob3VsZCBtYXRjaCBpZiBhbnkgb2YgdGhlIGtleXMgaW4gdGhlIHNjaGVtYSBhcmUgcHJlc2VudCBvbiB0aGVcbiAgICAgICAgICAgIC8vIG9iamVjdCBhbmQgcGFzcyB2YWxpZGF0aW9uLlxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vIENyZWF0ZSBhbiBcImFueU9mXCIgc2NoZW1hIHRoYXQgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIG9mIHRoZSBrZXlzIGluIHRoZVxuICAgICAgICAgICAgLy8gXCJwcm9wZXJ0aWVzXCIgb2JqZWN0XG4gICAgICAgICAgICBjb25zdCByZXF1aXJlc0FueU9mID0ge1xuICAgICAgICAgICAgICAgIGFueU9mOiBPYmplY3Qua2V5cyhvcHRpb25bUFJPUEVSVElFU19LRVldKS5tYXAoKGtleSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFtrZXldLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBsZXQgYXVnbWVudGVkU2NoZW1hO1xuICAgICAgICAgICAgLy8gSWYgdGhlIFwiYW55T2ZcIiBrZXl3b3JkIGFscmVhZHkgZXhpc3RzLCB3cmFwIHRoZSBhdWdtZW50YXRpb24gaW4gYW4gXCJhbGxPZlwiXG4gICAgICAgICAgICBpZiAob3B0aW9uLmFueU9mKSB7XG4gICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgc2hhbGxvdyBjbG9uZSBvZiB0aGUgb3B0aW9uXG4gICAgICAgICAgICAgICAgY29uc3QgeyAuLi5zaGFsbG93Q2xvbmUgfSA9IG9wdGlvbjtcbiAgICAgICAgICAgICAgICBpZiAoIXNoYWxsb3dDbG9uZS5hbGxPZikge1xuICAgICAgICAgICAgICAgICAgICBzaGFsbG93Q2xvbmUuYWxsT2YgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIFwiYWxsT2ZcIiBhbHJlYWR5IGV4aXN0cywgc2hhbGxvdyBjbG9uZSB0aGUgYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgc2hhbGxvd0Nsb25lLmFsbE9mID0gc2hhbGxvd0Nsb25lLmFsbE9mLnNsaWNlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNoYWxsb3dDbG9uZS5hbGxPZi5wdXNoKHJlcXVpcmVzQW55T2YpO1xuICAgICAgICAgICAgICAgIGF1Z21lbnRlZFNjaGVtYSA9IHNoYWxsb3dDbG9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGF1Z21lbnRlZFNjaGVtYSA9IE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbiwgcmVxdWlyZXNBbnlPZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIFwicmVxdWlyZWRcIiBmaWVsZCBhcyBpdCdzIGxpa2VseSB0aGF0IG5vdCBhbGwgZmllbGRzIGhhdmVcbiAgICAgICAgICAgIC8vIGJlZW4gZmlsbGVkIGluIHlldCwgd2hpY2ggd2lsbCBtZWFuIHRoYXQgdGhlIHNjaGVtYSBpcyBub3QgdmFsaWRcbiAgICAgICAgICAgIGRlbGV0ZSBhdWdtZW50ZWRTY2hlbWEucmVxdWlyZWQ7XG4gICAgICAgICAgICBpZiAodmFsaWRhdG9yLmlzVmFsaWQoYXVnbWVudGVkU2NoZW1hLCBmb3JtRGF0YSwgcm9vdFNjaGVtYSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWxpZGF0b3IuaXNWYWxpZChvcHRpb24sIGZvcm1EYXRhLCByb290U2NoZW1hKSkge1xuICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXRNYXRjaGluZ09wdGlvbi5qcy5tYXAiLCJpbXBvcnQgZ2V0TWF0Y2hpbmdPcHRpb24gZnJvbSAnLi9nZXRNYXRjaGluZ09wdGlvbic7XG4vKiogR2l2ZW4gdGhlIGBmb3JtRGF0YWAgYW5kIGxpc3Qgb2YgYG9wdGlvbnNgLCBhdHRlbXB0cyB0byBmaW5kIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb3B0aW9uIHRoYXQgbWF0Y2hlcyB0aGUgZGF0YS5cbiAqIEFsd2F5cyByZXR1cm5zIHRoZSBmaXJzdCBvcHRpb24gaWYgdGhlcmUgaXMgbm90aGluZyB0aGF0IG1hdGNoZXMuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB1c2VkIHRvIGZpZ3VyZSBvdXQgYSBtYXRjaFxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgbGlzdCBvZiBvcHRpb25zIHRvIGZpbmQgYSBtYXRjaGluZyBvcHRpb25zIGZyb21cbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hLCB1c2VkIHRvIHByaW1hcmlseSB0byBsb29rIHVwIGAkcmVmYHNcbiAqIEBwYXJhbSBbZGlzY3JpbWluYXRvckZpZWxkXSAtIFRoZSBvcHRpb25hbCBuYW1lIG9mIHRoZSBmaWVsZCB3aXRoaW4gdGhlIG9wdGlvbnMgb2JqZWN0IHdob3NlIHZhbHVlIGlzIHVzZWQgdG9cbiAqICAgICAgICAgIGRldGVybWluZSB3aGljaCBvcHRpb24gaXMgc2VsZWN0ZWRcbiAqIEByZXR1cm5zIC0gVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBtYXRjaGVkIG9wdGlvbiBvciAwIGlmIG5vbmUgaXMgYXZhaWxhYmxlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEZpcnN0TWF0Y2hpbmdPcHRpb24odmFsaWRhdG9yLCBmb3JtRGF0YSwgb3B0aW9ucywgcm9vdFNjaGVtYSwgZGlzY3JpbWluYXRvckZpZWxkKSB7XG4gICAgcmV0dXJuIGdldE1hdGNoaW5nT3B0aW9uKHZhbGlkYXRvciwgZm9ybURhdGEsIG9wdGlvbnMsIHJvb3RTY2hlbWEsIGRpc2NyaW1pbmF0b3JGaWVsZCk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXRGaXJzdE1hdGNoaW5nT3B0aW9uLmpzLm1hcCIsInZhciBiYXNlSXNFcXVhbCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsJyk7XG5cbi8qKlxuICogUGVyZm9ybXMgYSBkZWVwIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZVxuICogZXF1aXZhbGVudC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2Qgc3VwcG9ydHMgY29tcGFyaW5nIGFycmF5cywgYXJyYXkgYnVmZmVycywgYm9vbGVhbnMsXG4gKiBkYXRlIG9iamVjdHMsIGVycm9yIG9iamVjdHMsIG1hcHMsIG51bWJlcnMsIGBPYmplY3RgIG9iamVjdHMsIHJlZ2V4ZXMsXG4gKiBzZXRzLCBzdHJpbmdzLCBzeW1ib2xzLCBhbmQgdHlwZWQgYXJyYXlzLiBgT2JqZWN0YCBvYmplY3RzIGFyZSBjb21wYXJlZFxuICogYnkgdGhlaXIgb3duLCBub3QgaW5oZXJpdGVkLCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuIEZ1bmN0aW9ucyBhbmQgRE9NXG4gKiBub2RlcyBhcmUgY29tcGFyZWQgYnkgc3RyaWN0IGVxdWFsaXR5LCBpLmUuIGA9PT1gLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAqXG4gKiBfLmlzRXF1YWwob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogb2JqZWN0ID09PSBvdGhlcjtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRXF1YWwodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRXF1YWw7XG4iLCJ2YXIgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zZXRgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIHBhdGggY3JlYXRpb24uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfVxuICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoLFxuICAgICAgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMSxcbiAgICAgIG5lc3RlZCA9IG9iamVjdDtcblxuICB3aGlsZSAobmVzdGVkICE9IG51bGwgJiYgKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSksXG4gICAgICAgIG5ld1ZhbHVlID0gdmFsdWU7XG5cbiAgICBpZiAoa2V5ID09PSAnX19wcm90b19fJyB8fCBrZXkgPT09ICdjb25zdHJ1Y3RvcicgfHwga2V5ID09PSAncHJvdG90eXBlJykge1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICBpZiAoaW5kZXggIT0gbGFzdEluZGV4KSB7XG4gICAgICB2YXIgb2JqVmFsdWUgPSBuZXN0ZWRba2V5XTtcbiAgICAgIG5ld1ZhbHVlID0gY3VzdG9taXplciA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIGtleSwgbmVzdGVkKSA6IHVuZGVmaW5lZDtcbiAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gaXNPYmplY3Qob2JqVmFsdWUpXG4gICAgICAgICAgPyBvYmpWYWx1ZVxuICAgICAgICAgIDogKGlzSW5kZXgocGF0aFtpbmRleCArIDFdKSA/IFtdIDoge30pO1xuICAgICAgfVxuICAgIH1cbiAgICBhc3NpZ25WYWx1ZShuZXN0ZWQsIGtleSwgbmV3VmFsdWUpO1xuICAgIG5lc3RlZCA9IG5lc3RlZFtrZXldO1xuICB9XG4gIHJldHVybiBvYmplY3Q7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVNldDtcbiIsInZhciBiYXNlU2V0ID0gcmVxdWlyZSgnLi9fYmFzZVNldCcpO1xuXG4vKipcbiAqIFNldHMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC4gSWYgYSBwb3J0aW9uIG9mIGBwYXRoYCBkb2Vzbid0IGV4aXN0LFxuICogaXQncyBjcmVhdGVkLiBBcnJheXMgYXJlIGNyZWF0ZWQgZm9yIG1pc3NpbmcgaW5kZXggcHJvcGVydGllcyB3aGlsZSBvYmplY3RzXG4gKiBhcmUgY3JlYXRlZCBmb3IgYWxsIG90aGVyIG1pc3NpbmcgcHJvcGVydGllcy4gVXNlIGBfLnNldFdpdGhgIHRvIGN1c3RvbWl6ZVxuICogYHBhdGhgIGNyZWF0aW9uLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy43LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfV0gfTtcbiAqXG4gKiBfLnNldChvYmplY3QsICdhWzBdLmIuYycsIDQpO1xuICogY29uc29sZS5sb2cob2JqZWN0LmFbMF0uYi5jKTtcbiAqIC8vID0+IDRcbiAqXG4gKiBfLnNldChvYmplY3QsIFsneCcsICcwJywgJ3knLCAneiddLCA1KTtcbiAqIGNvbnNvbGUubG9nKG9iamVjdC54WzBdLnkueik7XG4gKiAvLyA9PiA1XG4gKi9cbmZ1bmN0aW9uIHNldChvYmplY3QsIHBhdGgsIHZhbHVlKSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0O1xuIiwidmFyIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGJhc2VDcmVhdGUgPSByZXF1aXJlKCcuL19iYXNlQ3JlYXRlJyksXG4gICAgYmFzZUZvck93biA9IHJlcXVpcmUoJy4vX2Jhc2VGb3JPd24nKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKlxuICogQW4gYWx0ZXJuYXRpdmUgdG8gYF8ucmVkdWNlYDsgdGhpcyBtZXRob2QgdHJhbnNmb3JtcyBgb2JqZWN0YCB0byBhIG5ld1xuICogYGFjY3VtdWxhdG9yYCBvYmplY3Qgd2hpY2ggaXMgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGVhY2ggb2YgaXRzIG93blxuICogZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyB0aHJ1IGBpdGVyYXRlZWAsIHdpdGggZWFjaCBpbnZvY2F0aW9uXG4gKiBwb3RlbnRpYWxseSBtdXRhdGluZyB0aGUgYGFjY3VtdWxhdG9yYCBvYmplY3QuIElmIGBhY2N1bXVsYXRvcmAgaXMgbm90XG4gKiBwcm92aWRlZCwgYSBuZXcgb2JqZWN0IHdpdGggdGhlIHNhbWUgYFtbUHJvdG90eXBlXV1gIHdpbGwgYmUgdXNlZC4gVGhlXG4gKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggZm91ciBhcmd1bWVudHM6IChhY2N1bXVsYXRvciwgdmFsdWUsIGtleSwgb2JqZWN0KS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDEuMy4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGN1c3RvbSBhY2N1bXVsYXRvciB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50cmFuc2Zvcm0oWzIsIDMsIDRdLCBmdW5jdGlvbihyZXN1bHQsIG4pIHtcbiAqICAgcmVzdWx0LnB1c2gobiAqPSBuKTtcbiAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gKiB9LCBbXSk7XG4gKiAvLyA9PiBbNCwgOV1cbiAqXG4gKiBfLnRyYW5zZm9ybSh7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfSwgZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gKiB9LCB7fSk7XG4gKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9XG4gKi9cbmZ1bmN0aW9uIHRyYW5zZm9ybShvYmplY3QsIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICBpc0Fyckxpa2UgPSBpc0FyciB8fCBpc0J1ZmZlcihvYmplY3QpIHx8IGlzVHlwZWRBcnJheShvYmplY3QpO1xuXG4gIGl0ZXJhdGVlID0gYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCA0KTtcbiAgaWYgKGFjY3VtdWxhdG9yID09IG51bGwpIHtcbiAgICB2YXIgQ3RvciA9IG9iamVjdCAmJiBvYmplY3QuY29uc3RydWN0b3I7XG4gICAgaWYgKGlzQXJyTGlrZSkge1xuICAgICAgYWNjdW11bGF0b3IgPSBpc0FyciA/IG5ldyBDdG9yIDogW107XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaXNGdW5jdGlvbihDdG9yKSA/IGJhc2VDcmVhdGUoZ2V0UHJvdG90eXBlKG9iamVjdCkpIDoge307XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgYWNjdW11bGF0b3IgPSB7fTtcbiAgICB9XG4gIH1cbiAgKGlzQXJyTGlrZSA/IGFycmF5RWFjaCA6IGJhc2VGb3JPd24pKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgICByZXR1cm4gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgb2JqZWN0KTtcbiAgfSk7XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmFuc2Zvcm07XG4iLCJ2YXIgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhc3NpZ25WYWx1ZWAgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhc3NpZ25cbiAqIGB1bmRlZmluZWRgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBpZiAoKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWVxKG9iamVjdFtrZXldLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzaWduTWVyZ2VWYWx1ZTtcbiIsInZhciBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNBcnJheUxpa2VgIGV4Y2VwdCB0aGF0IGl0IGFsc28gY2hlY2tzIGlmIGB2YWx1ZWBcbiAqIGlzIGFuIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheS1saWtlIG9iamVjdCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0FycmF5TGlrZSh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheUxpa2VPYmplY3Q7XG4iLCIvKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgLCB1bmxlc3MgYGtleWAgaXMgXCJfX3Byb3RvX19cIiBvciBcImNvbnN0cnVjdG9yXCIuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzYWZlR2V0KG9iamVjdCwga2V5KSB7XG4gIGlmIChrZXkgPT09ICdjb25zdHJ1Y3RvcicgJiYgdHlwZW9mIG9iamVjdFtrZXldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGtleSA9PSAnX19wcm90b19fJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHJldHVybiBvYmplY3Rba2V5XTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzYWZlR2V0O1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgcGxhaW4gb2JqZWN0IGZsYXR0ZW5pbmcgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nXG4gKiBrZXllZCBwcm9wZXJ0aWVzIG9mIGB2YWx1ZWAgdG8gb3duIHByb3BlcnRpZXMgb2YgdGhlIHBsYWluIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBwbGFpbiBvYmplY3QuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIG5ldyBGb28pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKlxuICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgXy50b1BsYWluT2JqZWN0KG5ldyBGb28pKTtcbiAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9XG4gKi9cbmZ1bmN0aW9uIHRvUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGNvcHlPYmplY3QodmFsdWUsIGtleXNJbih2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvUGxhaW5PYmplY3Q7XG4iLCJ2YXIgYXNzaWduTWVyZ2VWYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnbk1lcmdlVmFsdWUnKSxcbiAgICBjbG9uZUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQnVmZmVyJyksXG4gICAgY2xvbmVUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fY2xvbmVUeXBlZEFycmF5JyksXG4gICAgY29weUFycmF5ID0gcmVxdWlyZSgnLi9fY29weUFycmF5JyksXG4gICAgaW5pdENsb25lT2JqZWN0ID0gcmVxdWlyZSgnLi9faW5pdENsb25lT2JqZWN0JyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQXJyYXlMaWtlT2JqZWN0ID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZU9iamVjdCcpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi9pc1BsYWluT2JqZWN0JyksXG4gICAgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKSxcbiAgICBzYWZlR2V0ID0gcmVxdWlyZSgnLi9fc2FmZUdldCcpLFxuICAgIHRvUGxhaW5PYmplY3QgPSByZXF1aXJlKCcuL3RvUGxhaW5PYmplY3QnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VNZXJnZWAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICogZGVlcCBtZXJnZXMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAqIHJlZmVyZW5jZXMgdG8gYmUgbWVyZ2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBtZXJnZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBtZXJnZUZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1lcmdlIHZhbHVlcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gKiAgY291bnRlcnBhcnRzLlxuICovXG5mdW5jdGlvbiBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBtZXJnZUZ1bmMsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIHZhciBvYmpWYWx1ZSA9IHNhZmVHZXQob2JqZWN0LCBrZXkpLFxuICAgICAgc3JjVmFsdWUgPSBzYWZlR2V0KHNvdXJjZSwga2V5KSxcbiAgICAgIHN0YWNrZWQgPSBzdGFjay5nZXQoc3JjVmFsdWUpO1xuXG4gIGlmIChzdGFja2VkKSB7XG4gICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgc3RhY2tlZCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgdmFyIGlzQ29tbW9uID0gbmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICBpZiAoaXNDb21tb24pIHtcbiAgICB2YXIgaXNBcnIgPSBpc0FycmF5KHNyY1ZhbHVlKSxcbiAgICAgICAgaXNCdWZmID0gIWlzQXJyICYmIGlzQnVmZmVyKHNyY1ZhbHVlKSxcbiAgICAgICAgaXNUeXBlZCA9ICFpc0FyciAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheShzcmNWYWx1ZSk7XG5cbiAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgIGlmIChpc0FyciB8fCBpc0J1ZmYgfHwgaXNUeXBlZCkge1xuICAgICAgaWYgKGlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChpc0FycmF5TGlrZU9iamVjdChvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBjb3B5QXJyYXkob2JqVmFsdWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNCdWZmKSB7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIG5ld1ZhbHVlID0gY2xvbmVCdWZmZXIoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNUeXBlZCkge1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBuZXdWYWx1ZSA9IGNsb25lVHlwZWRBcnJheShzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgbmV3VmFsdWUgPSBbXTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAoaXNQbGFpbk9iamVjdChzcmNWYWx1ZSkgfHwgaXNBcmd1bWVudHMoc3JjVmFsdWUpKSB7XG4gICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgaWYgKGlzQXJndW1lbnRzKG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IHRvUGxhaW5PYmplY3Qob2JqVmFsdWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoIWlzT2JqZWN0KG9ialZhbHVlKSB8fCBpc0Z1bmN0aW9uKG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IGluaXRDbG9uZU9iamVjdChzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgaWYgKGlzQ29tbW9uKSB7XG4gICAgLy8gUmVjdXJzaXZlbHkgbWVyZ2Ugb2JqZWN0cyBhbmQgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgbWVyZ2VGdW5jKG5ld1ZhbHVlLCBzcmNWYWx1ZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICBzdGFja1snZGVsZXRlJ10oc3JjVmFsdWUpO1xuICB9XG4gIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWVyZ2VEZWVwO1xuIiwidmFyIFN0YWNrID0gcmVxdWlyZSgnLi9fU3RhY2snKSxcbiAgICBhc3NpZ25NZXJnZVZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduTWVyZ2VWYWx1ZScpLFxuICAgIGJhc2VGb3IgPSByZXF1aXJlKCcuL19iYXNlRm9yJyksXG4gICAgYmFzZU1lcmdlRGVlcCA9IHJlcXVpcmUoJy4vX2Jhc2VNZXJnZURlZXAnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpLFxuICAgIHNhZmVHZXQgPSByZXF1aXJlKCcuL19zYWZlR2V0Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWVyZ2VgIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBtZXJnZWQgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAqICBjb3VudGVycGFydHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIGlmIChvYmplY3QgPT09IHNvdXJjZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBiYXNlRm9yKHNvdXJjZSwgZnVuY3Rpb24oc3JjVmFsdWUsIGtleSkge1xuICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgaWYgKGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgICAgYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgYmFzZU1lcmdlLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICA/IGN1c3RvbWl6ZXIoc2FmZUdldChvYmplY3QsIGtleSksIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgfVxuICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgfSwga2V5c0luKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWVyZ2U7XG4iLCJ2YXIgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5JyksXG4gICAgb3ZlclJlc3QgPSByZXF1aXJlKCcuL19vdmVyUmVzdCcpLFxuICAgIHNldFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fc2V0VG9TdHJpbmcnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXN0YCB3aGljaCBkb2Vzbid0IHZhbGlkYXRlIG9yIGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCBpZGVudGl0eSksIGZ1bmMgKyAnJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVJlc3Q7XG4iLCJ2YXIgZXEgPSByZXF1aXJlKCcuL2VxJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgdmFsdWUgYXJndW1lbnQuXG4gKiBAcGFyYW0geyp9IGluZGV4IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgaW5kZXggb3Iga2V5IGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBvYmplY3QgYXJndW1lbnQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJdGVyYXRlZUNhbGwodmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciB0eXBlID0gdHlwZW9mIGluZGV4O1xuICBpZiAodHlwZSA9PSAnbnVtYmVyJ1xuICAgICAgICA/IChpc0FycmF5TGlrZShvYmplY3QpICYmIGlzSW5kZXgoaW5kZXgsIG9iamVjdC5sZW5ndGgpKVxuICAgICAgICA6ICh0eXBlID09ICdzdHJpbmcnICYmIGluZGV4IGluIG9iamVjdClcbiAgICAgICkge1xuICAgIHJldHVybiBlcShvYmplY3RbaW5kZXhdLCB2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSXRlcmF0ZWVDYWxsO1xuIiwidmFyIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBpc0l0ZXJhdGVlQ2FsbCA9IHJlcXVpcmUoJy4vX2lzSXRlcmF0ZWVDYWxsJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uYXNzaWduYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduZXIgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhc3NpZ25lciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQXNzaWduZXIoYXNzaWduZXIpIHtcbiAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aCxcbiAgICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA+IDEgPyBzb3VyY2VzW2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkLFxuICAgICAgICBndWFyZCA9IGxlbmd0aCA+IDIgPyBzb3VyY2VzWzJdIDogdW5kZWZpbmVkO1xuXG4gICAgY3VzdG9taXplciA9IChhc3NpZ25lci5sZW5ndGggPiAzICYmIHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicpXG4gICAgICA/IChsZW5ndGgtLSwgY3VzdG9taXplcilcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiBjdXN0b21pemVyO1xuICAgICAgbGVuZ3RoID0gMTtcbiAgICB9XG4gICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgYXNzaWduZXIob2JqZWN0LCBzb3VyY2UsIGluZGV4LCBjdXN0b21pemVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQXNzaWduZXI7XG4iLCJ2YXIgYmFzZU1lcmdlID0gcmVxdWlyZSgnLi9fYmFzZU1lcmdlJyksXG4gICAgY3JlYXRlQXNzaWduZXIgPSByZXF1aXJlKCcuL19jcmVhdGVBc3NpZ25lcicpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBtZXJnZXMgb3duIGFuZFxuICogaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlIG9iamVjdHMgaW50byB0aGVcbiAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIHByb3BlcnRpZXMgdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgIGFyZVxuICogc2tpcHBlZCBpZiBhIGRlc3RpbmF0aW9uIHZhbHVlIGV4aXN0cy4gQXJyYXkgYW5kIHBsYWluIG9iamVjdCBwcm9wZXJ0aWVzXG4gKiBhcmUgbWVyZ2VkIHJlY3Vyc2l2ZWx5LiBPdGhlciBvYmplY3RzIGFuZCB2YWx1ZSB0eXBlcyBhcmUgb3ZlcnJpZGRlbiBieVxuICogYXNzaWdubWVudC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LiBTdWJzZXF1ZW50XG4gKiBzb3VyY2VzIG92ZXJ3cml0ZSBwcm9wZXJ0eSBhc3NpZ25tZW50cyBvZiBwcmV2aW91cyBzb3VyY2VzLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC41LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHtcbiAqICAgJ2EnOiBbeyAnYic6IDIgfSwgeyAnZCc6IDQgfV1cbiAqIH07XG4gKlxuICogdmFyIG90aGVyID0ge1xuICogICAnYSc6IFt7ICdjJzogMyB9LCB7ICdlJzogNSB9XVxuICogfTtcbiAqXG4gKiBfLm1lcmdlKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4geyAnYSc6IFt7ICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2QnOiA0LCAnZSc6IDUgfV0gfVxuICovXG52YXIgbWVyZ2UgPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgpIHtcbiAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBtZXJnZTtcbiIsInZhciBiYXNlRmxhdHRlbiA9IHJlcXVpcmUoJy4vX2Jhc2VGbGF0dGVuJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDA7XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgZmxhdHRlbnMgYGFycmF5YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmZsYXR0ZW5EZWVwKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7XG4gKiAvLyA9PiBbMSwgMiwgMywgNCwgNV1cbiAqL1xuZnVuY3Rpb24gZmxhdHRlbkRlZXAoYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICByZXR1cm4gbGVuZ3RoID8gYmFzZUZsYXR0ZW4oYXJyYXksIElORklOSVRZKSA6IFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZsYXR0ZW5EZWVwO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maW5kSW5kZXhgIGFuZCBgXy5maW5kTGFzdEluZGV4YCB3aXRob3V0XG4gKiBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VGaW5kSW5kZXgoYXJyYXksIHByZWRpY2F0ZSwgZnJvbUluZGV4LCBmcm9tUmlnaHQpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIGluZGV4ID0gZnJvbUluZGV4ICsgKGZyb21SaWdodCA/IDEgOiAtMSk7XG5cbiAgd2hpbGUgKChmcm9tUmlnaHQgPyBpbmRleC0tIDogKytpbmRleCA8IGxlbmd0aCkpIHtcbiAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZpbmRJbmRleDtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYU5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbnVtYmVyIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTmFOKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gdmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTmFOO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5kZXhPZmAgd2hpY2ggcGVyZm9ybXMgc3RyaWN0IGVxdWFsaXR5XG4gKiBjb21wYXJpc29ucyBvZiB2YWx1ZXMsIGkuZS4gYD09PWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgaW5kZXggPSBmcm9tSW5kZXggLSAxLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGFycmF5W2luZGV4XSA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmljdEluZGV4T2Y7XG4iLCJ2YXIgYmFzZUZpbmRJbmRleCA9IHJlcXVpcmUoJy4vX2Jhc2VGaW5kSW5kZXgnKSxcbiAgICBiYXNlSXNOYU4gPSByZXF1aXJlKCcuL19iYXNlSXNOYU4nKSxcbiAgICBzdHJpY3RJbmRleE9mID0gcmVxdWlyZSgnLi9fc3RyaWN0SW5kZXhPZicpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmluZGV4T2ZgIHdpdGhvdXQgYGZyb21JbmRleGAgYm91bmRzIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICByZXR1cm4gdmFsdWUgPT09IHZhbHVlXG4gICAgPyBzdHJpY3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KVxuICAgIDogYmFzZUZpbmRJbmRleChhcnJheSwgYmFzZUlzTmFOLCBmcm9tSW5kZXgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJbmRleE9mO1xuIiwidmFyIGJhc2VJbmRleE9mID0gcmVxdWlyZSgnLi9fYmFzZUluZGV4T2YnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5jbHVkZXNgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogc3BlY2lmeWluZyBhbiBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB0YXJnZXRgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5SW5jbHVkZXMoYXJyYXksIHZhbHVlKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgcmV0dXJuICEhbGVuZ3RoICYmIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgMCkgPiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUluY2x1ZGVzO1xuIiwiLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGFycmF5SW5jbHVkZXNgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBjb21wYXJhdG9yLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB0YXJnZXQgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJhdG9yIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHRhcmdldGAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlJbmNsdWRlc1dpdGgoYXJyYXksIHZhbHVlLCBjb21wYXJhdG9yKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoY29tcGFyYXRvcih2YWx1ZSwgYXJyYXlbaW5kZXhdKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUluY2x1ZGVzV2l0aDtcbiIsIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDIsIF8ubm9vcCk7XG4gKiAvLyA9PiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdXG4gKi9cbmZ1bmN0aW9uIG5vb3AoKSB7XG4gIC8vIE5vIG9wZXJhdGlvbiBwZXJmb3JtZWQuXG59XG5cbm1vZHVsZS5leHBvcnRzID0gbm9vcDtcbiIsInZhciBTZXQgPSByZXF1aXJlKCcuL19TZXQnKSxcbiAgICBub29wID0gcmVxdWlyZSgnLi9ub29wJyksXG4gICAgc2V0VG9BcnJheSA9IHJlcXVpcmUoJy4vX3NldFRvQXJyYXknKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc2V0IG9iamVjdCBvZiBgdmFsdWVzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYWRkIHRvIHRoZSBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgc2V0LlxuICovXG52YXIgY3JlYXRlU2V0ID0gIShTZXQgJiYgKDEgLyBzZXRUb0FycmF5KG5ldyBTZXQoWywtMF0pKVsxXSkgPT0gSU5GSU5JVFkpID8gbm9vcCA6IGZ1bmN0aW9uKHZhbHVlcykge1xuICByZXR1cm4gbmV3IFNldCh2YWx1ZXMpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVTZXQ7XG4iLCJ2YXIgU2V0Q2FjaGUgPSByZXF1aXJlKCcuL19TZXRDYWNoZScpLFxuICAgIGFycmF5SW5jbHVkZXMgPSByZXF1aXJlKCcuL19hcnJheUluY2x1ZGVzJyksXG4gICAgYXJyYXlJbmNsdWRlc1dpdGggPSByZXF1aXJlKCcuL19hcnJheUluY2x1ZGVzV2l0aCcpLFxuICAgIGNhY2hlSGFzID0gcmVxdWlyZSgnLi9fY2FjaGVIYXMnKSxcbiAgICBjcmVhdGVTZXQgPSByZXF1aXJlKCcuL19jcmVhdGVTZXQnKSxcbiAgICBzZXRUb0FycmF5ID0gcmVxdWlyZSgnLi9fc2V0VG9BcnJheScpO1xuXG4vKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbnZhciBMQVJHRV9BUlJBWV9TSVpFID0gMjAwO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuaXFCeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlVW5pcShhcnJheSwgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXMsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICBpc0NvbW1vbiA9IHRydWUsXG4gICAgICByZXN1bHQgPSBbXSxcbiAgICAgIHNlZW4gPSByZXN1bHQ7XG5cbiAgaWYgKGNvbXBhcmF0b3IpIHtcbiAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlc1dpdGg7XG4gIH1cbiAgZWxzZSBpZiAobGVuZ3RoID49IExBUkdFX0FSUkFZX1NJWkUpIHtcbiAgICB2YXIgc2V0ID0gaXRlcmF0ZWUgPyBudWxsIDogY3JlYXRlU2V0KGFycmF5KTtcbiAgICBpZiAoc2V0KSB7XG4gICAgICByZXR1cm4gc2V0VG9BcnJheShzZXQpO1xuICAgIH1cbiAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgIGluY2x1ZGVzID0gY2FjaGVIYXM7XG4gICAgc2VlbiA9IG5ldyBTZXRDYWNoZTtcbiAgfVxuICBlbHNlIHtcbiAgICBzZWVuID0gaXRlcmF0ZWUgPyBbXSA6IHJlc3VsdDtcbiAgfVxuICBvdXRlcjpcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgIHZhbHVlID0gKGNvbXBhcmF0b3IgfHwgdmFsdWUgIT09IDApID8gdmFsdWUgOiAwO1xuICAgIGlmIChpc0NvbW1vbiAmJiBjb21wdXRlZCA9PT0gY29tcHV0ZWQpIHtcbiAgICAgIHZhciBzZWVuSW5kZXggPSBzZWVuLmxlbmd0aDtcbiAgICAgIHdoaWxlIChzZWVuSW5kZXgtLSkge1xuICAgICAgICBpZiAoc2VlbltzZWVuSW5kZXhdID09PSBjb21wdXRlZCkge1xuICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaXRlcmF0ZWUpIHtcbiAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoIWluY2x1ZGVzKHNlZW4sIGNvbXB1dGVkLCBjb21wYXJhdG9yKSkge1xuICAgICAgaWYgKHNlZW4gIT09IHJlc3VsdCkge1xuICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VVbmlxO1xuIiwidmFyIGJhc2VVbmlxID0gcmVxdWlyZSgnLi9fYmFzZVVuaXEnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZHVwbGljYXRlLWZyZWUgdmVyc2lvbiBvZiBhbiBhcnJheSwgdXNpbmdcbiAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGluIHdoaWNoIG9ubHkgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgZWFjaCBlbGVtZW50XG4gKiBpcyBrZXB0LiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyXG4gKiBpbiB0aGUgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnVuaXEoWzIsIDEsIDJdKTtcbiAqIC8vID0+IFsyLCAxXVxuICovXG5mdW5jdGlvbiB1bmlxKGFycmF5KSB7XG4gIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VVbmlxKGFycmF5KSA6IFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHVuaXE7XG4iLCJ2YXIgYmFzZUNsb25lID0gcmVxdWlyZSgnLi9fYmFzZUNsb25lJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGNsb25lcyBgdmFsdWVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZWN1cnNpdmVseSBjbG9uZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBkZWVwIGNsb25lZCB2YWx1ZS5cbiAqIEBzZWUgXy5jbG9uZVxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAqXG4gKiB2YXIgZGVlcCA9IF8uY2xvbmVEZWVwKG9iamVjdHMpO1xuICogY29uc29sZS5sb2coZGVlcFswXSA9PT0gb2JqZWN0c1swXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBjbG9uZURlZXAodmFsdWUpIHtcbiAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfREVFUF9GTEFHIHwgQ0xPTkVfU1lNQk9MU19GTEFHKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZURlZXA7XG4iLCJ2YXIgYmFzZUVhY2ggPSByZXF1aXJlKCcuL19iYXNlRWFjaCcpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hcGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlTWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gaXNBcnJheUxpa2UoY29sbGVjdGlvbikgPyBBcnJheShjb2xsZWN0aW9uLmxlbmd0aCkgOiBbXTtcblxuICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gaXRlcmF0ZWUodmFsdWUsIGtleSwgY29sbGVjdGlvbik7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNYXA7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRCeWAgd2hpY2ggdXNlcyBgY29tcGFyZXJgIHRvIGRlZmluZSB0aGVcbiAqIHNvcnQgb3JkZXIgb2YgYGFycmF5YCBhbmQgcmVwbGFjZXMgY3JpdGVyaWEgb2JqZWN0cyB3aXRoIHRoZWlyIGNvcnJlc3BvbmRpbmdcbiAqIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNvcnQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJlciBUaGUgZnVuY3Rpb24gdG8gZGVmaW5lIHNvcnQgb3JkZXIuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYmFzZVNvcnRCeShhcnJheSwgY29tcGFyZXIpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBhcnJheS5zb3J0KGNvbXBhcmVyKTtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgYXJyYXlbbGVuZ3RoXSA9IGFycmF5W2xlbmd0aF0udmFsdWU7XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTb3J0Qnk7XG4iLCJ2YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKlxuICogQ29tcGFyZXMgdmFsdWVzIHRvIHNvcnQgdGhlbSBpbiBhc2NlbmRpbmcgb3JkZXIuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc29ydCBvcmRlciBpbmRpY2F0b3IgZm9yIGB2YWx1ZWAuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVBc2NlbmRpbmcodmFsdWUsIG90aGVyKSB7XG4gIGlmICh2YWx1ZSAhPT0gb3RoZXIpIHtcbiAgICB2YXIgdmFsSXNEZWZpbmVkID0gdmFsdWUgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgdmFsSXNOdWxsID0gdmFsdWUgPT09IG51bGwsXG4gICAgICAgIHZhbElzUmVmbGV4aXZlID0gdmFsdWUgPT09IHZhbHVlLFxuICAgICAgICB2YWxJc1N5bWJvbCA9IGlzU3ltYm9sKHZhbHVlKTtcblxuICAgIHZhciBvdGhJc0RlZmluZWQgPSBvdGhlciAhPT0gdW5kZWZpbmVkLFxuICAgICAgICBvdGhJc051bGwgPSBvdGhlciA9PT0gbnVsbCxcbiAgICAgICAgb3RoSXNSZWZsZXhpdmUgPSBvdGhlciA9PT0gb3RoZXIsXG4gICAgICAgIG90aElzU3ltYm9sID0gaXNTeW1ib2wob3RoZXIpO1xuXG4gICAgaWYgKCghb3RoSXNOdWxsICYmICFvdGhJc1N5bWJvbCAmJiAhdmFsSXNTeW1ib2wgJiYgdmFsdWUgPiBvdGhlcikgfHxcbiAgICAgICAgKHZhbElzU3ltYm9sICYmIG90aElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSAmJiAhb3RoSXNOdWxsICYmICFvdGhJc1N5bWJvbCkgfHxcbiAgICAgICAgKHZhbElzTnVsbCAmJiBvdGhJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICghdmFsSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAhdmFsSXNSZWZsZXhpdmUpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBpZiAoKCF2YWxJc051bGwgJiYgIXZhbElzU3ltYm9sICYmICFvdGhJc1N5bWJvbCAmJiB2YWx1ZSA8IG90aGVyKSB8fFxuICAgICAgICAob3RoSXNTeW1ib2wgJiYgdmFsSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlICYmICF2YWxJc051bGwgJiYgIXZhbElzU3ltYm9sKSB8fFxuICAgICAgICAob3RoSXNOdWxsICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgKCFvdGhJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICFvdGhJc1JlZmxleGl2ZSkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb21wYXJlQXNjZW5kaW5nO1xuIiwidmFyIGNvbXBhcmVBc2NlbmRpbmcgPSByZXF1aXJlKCcuL19jb21wYXJlQXNjZW5kaW5nJyk7XG5cbi8qKlxuICogVXNlZCBieSBgXy5vcmRlckJ5YCB0byBjb21wYXJlIG11bHRpcGxlIHByb3BlcnRpZXMgb2YgYSB2YWx1ZSB0byBhbm90aGVyXG4gKiBhbmQgc3RhYmxlIHNvcnQgdGhlbS5cbiAqXG4gKiBJZiBgb3JkZXJzYCBpcyB1bnNwZWNpZmllZCwgYWxsIHZhbHVlcyBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4gT3RoZXJ3aXNlLFxuICogc3BlY2lmeSBhbiBvcmRlciBvZiBcImRlc2NcIiBmb3IgZGVzY2VuZGluZyBvciBcImFzY1wiIGZvciBhc2NlbmRpbmcgc29ydCBvcmRlclxuICogb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbltdfHN0cmluZ1tdfSBvcmRlcnMgVGhlIG9yZGVyIHRvIHNvcnQgYnkgZm9yIGVhY2ggcHJvcGVydHkuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzb3J0IG9yZGVyIGluZGljYXRvciBmb3IgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVNdWx0aXBsZShvYmplY3QsIG90aGVyLCBvcmRlcnMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBvYmpDcml0ZXJpYSA9IG9iamVjdC5jcml0ZXJpYSxcbiAgICAgIG90aENyaXRlcmlhID0gb3RoZXIuY3JpdGVyaWEsXG4gICAgICBsZW5ndGggPSBvYmpDcml0ZXJpYS5sZW5ndGgsXG4gICAgICBvcmRlcnNMZW5ndGggPSBvcmRlcnMubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHJlc3VsdCA9IGNvbXBhcmVBc2NlbmRpbmcob2JqQ3JpdGVyaWFbaW5kZXhdLCBvdGhDcml0ZXJpYVtpbmRleF0pO1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIGlmIChpbmRleCA+PSBvcmRlcnNMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHZhciBvcmRlciA9IG9yZGVyc1tpbmRleF07XG4gICAgICByZXR1cm4gcmVzdWx0ICogKG9yZGVyID09ICdkZXNjJyA/IC0xIDogMSk7XG4gICAgfVxuICB9XG4gIC8vIEZpeGVzIGFuIGBBcnJheSNzb3J0YCBidWcgaW4gdGhlIEpTIGVuZ2luZSBlbWJlZGRlZCBpbiBBZG9iZSBhcHBsaWNhdGlvbnNcbiAgLy8gdGhhdCBjYXVzZXMgaXQsIHVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcywgdG8gcHJvdmlkZSB0aGUgc2FtZSB2YWx1ZSBmb3JcbiAgLy8gYG9iamVjdGAgYW5kIGBvdGhlcmAuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vamFzaGtlbmFzL3VuZGVyc2NvcmUvcHVsbC8xMjQ3XG4gIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gIC8vXG4gIC8vIFRoaXMgYWxzbyBlbnN1cmVzIGEgc3RhYmxlIHNvcnQgaW4gVjggYW5kIG90aGVyIGVuZ2luZXMuXG4gIC8vIFNlZSBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD05MCBmb3IgbW9yZSBkZXRhaWxzLlxuICByZXR1cm4gb2JqZWN0LmluZGV4IC0gb3RoZXIuaW5kZXg7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcGFyZU11bHRpcGxlO1xuIiwidmFyIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpLFxuICAgIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGJhc2VNYXAgPSByZXF1aXJlKCcuL19iYXNlTWFwJyksXG4gICAgYmFzZVNvcnRCeSA9IHJlcXVpcmUoJy4vX2Jhc2VTb3J0QnknKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBjb21wYXJlTXVsdGlwbGUgPSByZXF1aXJlKCcuL19jb21wYXJlTXVsdGlwbGUnKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ub3JkZXJCeWAgd2l0aG91dCBwYXJhbSBndWFyZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb25bXXxPYmplY3RbXXxzdHJpbmdbXX0gaXRlcmF0ZWVzIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAqIEBwYXJhbSB7c3RyaW5nW119IG9yZGVycyBUaGUgc29ydCBvcmRlcnMgb2YgYGl0ZXJhdGVlc2AuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sIGl0ZXJhdGVlcywgb3JkZXJzKSB7XG4gIGlmIChpdGVyYXRlZXMubGVuZ3RoKSB7XG4gICAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgaWYgKGlzQXJyYXkoaXRlcmF0ZWUpKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiBiYXNlR2V0KHZhbHVlLCBpdGVyYXRlZS5sZW5ndGggPT09IDEgPyBpdGVyYXRlZVswXSA6IGl0ZXJhdGVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGl0ZXJhdGVlO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGl0ZXJhdGVlcyA9IFtpZGVudGl0eV07XG4gIH1cblxuICB2YXIgaW5kZXggPSAtMTtcbiAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBiYXNlVW5hcnkoYmFzZUl0ZXJhdGVlKSk7XG5cbiAgdmFyIHJlc3VsdCA9IGJhc2VNYXAoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgIHZhciBjcml0ZXJpYSA9IGFycmF5TWFwKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBpdGVyYXRlZSh2YWx1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHsgJ2NyaXRlcmlhJzogY3JpdGVyaWEsICdpbmRleCc6ICsraW5kZXgsICd2YWx1ZSc6IHZhbHVlIH07XG4gIH0pO1xuXG4gIHJldHVybiBiYXNlU29ydEJ5KHJlc3VsdCwgZnVuY3Rpb24ob2JqZWN0LCBvdGhlcikge1xuICAgIHJldHVybiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU9yZGVyQnk7XG4iLCJ2YXIgYmFzZUZsYXR0ZW4gPSByZXF1aXJlKCcuL19iYXNlRmxhdHRlbicpLFxuICAgIGJhc2VPcmRlckJ5ID0gcmVxdWlyZSgnLi9fYmFzZU9yZGVyQnknKSxcbiAgICBiYXNlUmVzdCA9IHJlcXVpcmUoJy4vX2Jhc2VSZXN0JyksXG4gICAgaXNJdGVyYXRlZUNhbGwgPSByZXF1aXJlKCcuL19pc0l0ZXJhdGVlQ2FsbCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZWxlbWVudHMsIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgdGhlIHJlc3VsdHMgb2ZcbiAqIHJ1bm5pbmcgZWFjaCBlbGVtZW50IGluIGEgY29sbGVjdGlvbiB0aHJ1IGVhY2ggaXRlcmF0ZWUuIFRoaXMgbWV0aG9kXG4gKiBwZXJmb3JtcyBhIHN0YWJsZSBzb3J0LCB0aGF0IGlzLCBpdCBwcmVzZXJ2ZXMgdGhlIG9yaWdpbmFsIHNvcnQgb3JkZXIgb2ZcbiAqIGVxdWFsIGVsZW1lbnRzLiBUaGUgaXRlcmF0ZWVzIGFyZSBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gKiAgVGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc29ydGVkIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgdXNlcnMgPSBbXG4gKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQ4IH0sXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH0sXG4gKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDMwIH0sXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM0IH1cbiAqIF07XG4gKlxuICogXy5zb3J0QnkodXNlcnMsIFtmdW5jdGlvbihvKSB7IHJldHVybiBvLnVzZXI7IH1dKTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM2XSwgWydiYXJuZXknLCAzNF0sIFsnZnJlZCcsIDQ4XSwgWydmcmVkJywgMzBdXVxuICpcbiAqIF8uc29ydEJ5KHVzZXJzLCBbJ3VzZXInLCAnYWdlJ10pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzRdLCBbJ2Jhcm5leScsIDM2XSwgWydmcmVkJywgMzBdLCBbJ2ZyZWQnLCA0OF1dXG4gKi9cbnZhciBzb3J0QnkgPSBiYXNlUmVzdChmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZXMpIHtcbiAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICB2YXIgbGVuZ3RoID0gaXRlcmF0ZWVzLmxlbmd0aDtcbiAgaWYgKGxlbmd0aCA+IDEgJiYgaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbiwgaXRlcmF0ZWVzWzBdLCBpdGVyYXRlZXNbMV0pKSB7XG4gICAgaXRlcmF0ZWVzID0gW107XG4gIH0gZWxzZSBpZiAobGVuZ3RoID4gMiAmJiBpc0l0ZXJhdGVlQ2FsbChpdGVyYXRlZXNbMF0sIGl0ZXJhdGVlc1sxXSwgaXRlcmF0ZWVzWzJdKSkge1xuICAgIGl0ZXJhdGVlcyA9IFtpdGVyYXRlZXNbMF1dO1xuICB9XG4gIHJldHVybiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBiYXNlRmxhdHRlbihpdGVyYXRlZXMsIDEpLCBbXSk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBzb3J0Qnk7XG4iLCJ2YXIgYmFzZVVuaXEgPSByZXF1aXJlKCcuL19iYXNlVW5pcScpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2hcbiAqIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlgLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpc1xuICogZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXkuVGhlIGNvbXBhcmF0b3IgaXMgaW52b2tlZFxuICogd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMiB9XTtcbiAqXG4gKiBfLnVuaXFXaXRoKG9iamVjdHMsIF8uaXNFcXVhbCk7XG4gKiAvLyA9PiBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dXG4gKi9cbmZ1bmN0aW9uIHVuaXFXaXRoKGFycmF5LCBjb21wYXJhdG9yKSB7XG4gIGNvbXBhcmF0b3IgPSB0eXBlb2YgY29tcGFyYXRvciA9PSAnZnVuY3Rpb24nID8gY29tcGFyYXRvciA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYmFzZVVuaXEoYXJyYXksIHVuZGVmaW5lZCwgY29tcGFyYXRvcikgOiBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB1bmlxV2l0aDtcbiIsInZhciBiYXNlUmVzdCA9IHJlcXVpcmUoJy4vX2Jhc2VSZXN0JyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyksXG4gICAgaXNJdGVyYXRlZUNhbGwgPSByZXF1aXJlKCcuL19pc0l0ZXJhdGVlQ2FsbCcpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQXNzaWducyBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIHNvdXJjZVxuICogb2JqZWN0cyB0byB0aGUgZGVzdGluYXRpb24gb2JqZWN0IGZvciBhbGwgZGVzdGluYXRpb24gcHJvcGVydGllcyB0aGF0XG4gKiByZXNvbHZlIHRvIGB1bmRlZmluZWRgLiBTb3VyY2Ugb2JqZWN0cyBhcmUgYXBwbGllZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG4gKiBPbmNlIGEgcHJvcGVydHkgaXMgc2V0LCBhZGRpdGlvbmFsIHZhbHVlcyBvZiB0aGUgc2FtZSBwcm9wZXJ0eSBhcmUgaWdub3JlZC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAc2VlIF8uZGVmYXVsdHNEZWVwXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAqL1xudmFyIGRlZmF1bHRzID0gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2VzKSB7XG4gIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IC0xO1xuICB2YXIgbGVuZ3RoID0gc291cmNlcy5sZW5ndGg7XG4gIHZhciBndWFyZCA9IGxlbmd0aCA+IDIgPyBzb3VyY2VzWzJdIDogdW5kZWZpbmVkO1xuXG4gIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICBsZW5ndGggPSAxO1xuICB9XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgdmFyIHByb3BzID0ga2V5c0luKHNvdXJjZSk7XG4gICAgdmFyIHByb3BzSW5kZXggPSAtMTtcbiAgICB2YXIgcHJvcHNMZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytwcm9wc0luZGV4IDwgcHJvcHNMZW5ndGgpIHtcbiAgICAgIHZhciBrZXkgPSBwcm9wc1twcm9wc0luZGV4XTtcbiAgICAgIHZhciB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgIChlcSh2YWx1ZSwgb2JqZWN0UHJvdG9ba2V5XSkgJiYgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkge1xuICAgICAgICBvYmplY3Rba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvYmplY3Q7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZhdWx0cztcbiIsInZhciBTZXRDYWNoZSA9IHJlcXVpcmUoJy4vX1NldENhY2hlJyksXG4gICAgYXJyYXlJbmNsdWRlcyA9IHJlcXVpcmUoJy4vX2FycmF5SW5jbHVkZXMnKSxcbiAgICBhcnJheUluY2x1ZGVzV2l0aCA9IHJlcXVpcmUoJy4vX2FycmF5SW5jbHVkZXNXaXRoJyksXG4gICAgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIGNhY2hlSGFzID0gcmVxdWlyZSgnLi9fY2FjaGVIYXMnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1pbiA9IE1hdGgubWluO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5pbnRlcnNlY3Rpb25gLCB3aXRob3V0IHN1cHBvcnRcbiAqIGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLCB0aGF0IGFjY2VwdHMgYW4gYXJyYXkgb2YgYXJyYXlzIHRvIGluc3BlY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5cyBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBzaGFyZWQgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBiYXNlSW50ZXJzZWN0aW9uKGFycmF5cywgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgdmFyIGluY2x1ZGVzID0gY29tcGFyYXRvciA/IGFycmF5SW5jbHVkZXNXaXRoIDogYXJyYXlJbmNsdWRlcyxcbiAgICAgIGxlbmd0aCA9IGFycmF5c1swXS5sZW5ndGgsXG4gICAgICBvdGhMZW5ndGggPSBhcnJheXMubGVuZ3RoLFxuICAgICAgb3RoSW5kZXggPSBvdGhMZW5ndGgsXG4gICAgICBjYWNoZXMgPSBBcnJheShvdGhMZW5ndGgpLFxuICAgICAgbWF4TGVuZ3RoID0gSW5maW5pdHksXG4gICAgICByZXN1bHQgPSBbXTtcblxuICB3aGlsZSAob3RoSW5kZXgtLSkge1xuICAgIHZhciBhcnJheSA9IGFycmF5c1tvdGhJbmRleF07XG4gICAgaWYgKG90aEluZGV4ICYmIGl0ZXJhdGVlKSB7XG4gICAgICBhcnJheSA9IGFycmF5TWFwKGFycmF5LCBiYXNlVW5hcnkoaXRlcmF0ZWUpKTtcbiAgICB9XG4gICAgbWF4TGVuZ3RoID0gbmF0aXZlTWluKGFycmF5Lmxlbmd0aCwgbWF4TGVuZ3RoKTtcbiAgICBjYWNoZXNbb3RoSW5kZXhdID0gIWNvbXBhcmF0b3IgJiYgKGl0ZXJhdGVlIHx8IChsZW5ndGggPj0gMTIwICYmIGFycmF5Lmxlbmd0aCA+PSAxMjApKVxuICAgICAgPyBuZXcgU2V0Q2FjaGUob3RoSW5kZXggJiYgYXJyYXkpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxuICBhcnJheSA9IGFycmF5c1swXTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHNlZW4gPSBjYWNoZXNbMF07XG5cbiAgb3V0ZXI6XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoICYmIHJlc3VsdC5sZW5ndGggPCBtYXhMZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgIHZhbHVlID0gKGNvbXBhcmF0b3IgfHwgdmFsdWUgIT09IDApID8gdmFsdWUgOiAwO1xuICAgIGlmICghKHNlZW5cbiAgICAgICAgICA/IGNhY2hlSGFzKHNlZW4sIGNvbXB1dGVkKVxuICAgICAgICAgIDogaW5jbHVkZXMocmVzdWx0LCBjb21wdXRlZCwgY29tcGFyYXRvcilcbiAgICAgICAgKSkge1xuICAgICAgb3RoSW5kZXggPSBvdGhMZW5ndGg7XG4gICAgICB3aGlsZSAoLS1vdGhJbmRleCkge1xuICAgICAgICB2YXIgY2FjaGUgPSBjYWNoZXNbb3RoSW5kZXhdO1xuICAgICAgICBpZiAoIShjYWNoZVxuICAgICAgICAgICAgICA/IGNhY2hlSGFzKGNhY2hlLCBjb21wdXRlZClcbiAgICAgICAgICAgICAgOiBpbmNsdWRlcyhhcnJheXNbb3RoSW5kZXhdLCBjb21wdXRlZCwgY29tcGFyYXRvcikpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHNlZW4pIHtcbiAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSW50ZXJzZWN0aW9uO1xuIiwidmFyIGlzQXJyYXlMaWtlT2JqZWN0ID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZU9iamVjdCcpO1xuXG4vKipcbiAqIENhc3RzIGB2YWx1ZWAgdG8gYW4gZW1wdHkgYXJyYXkgaWYgaXQncyBub3QgYW4gYXJyYXkgbGlrZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIHRoZSBjYXN0IGFycmF5LWxpa2Ugb2JqZWN0LlxuICovXG5mdW5jdGlvbiBjYXN0QXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkgPyB2YWx1ZSA6IFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc3RBcnJheUxpa2VPYmplY3Q7XG4iLCJ2YXIgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGJhc2VJbnRlcnNlY3Rpb24gPSByZXF1aXJlKCcuL19iYXNlSW50ZXJzZWN0aW9uJyksXG4gICAgYmFzZVJlc3QgPSByZXF1aXJlKCcuL19iYXNlUmVzdCcpLFxuICAgIGNhc3RBcnJheUxpa2VPYmplY3QgPSByZXF1aXJlKCcuL19jYXN0QXJyYXlMaWtlT2JqZWN0JyksXG4gICAgbGFzdCA9IHJlcXVpcmUoJy4vbGFzdCcpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaW50ZXJzZWN0aW9uYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYFxuICogd2hpY2ggaXMgaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheXNgLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXNcbiAqIG9mIHJlc3VsdCB2YWx1ZXMgYXJlIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgY29tcGFyYXRvciBpc1xuICogaW52b2tlZCB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGludGVyc2VjdGluZyB2YWx1ZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XTtcbiAqIHZhciBvdGhlcnMgPSBbeyAneCc6IDEsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICpcbiAqIF8uaW50ZXJzZWN0aW9uV2l0aChvYmplY3RzLCBvdGhlcnMsIF8uaXNFcXVhbCk7XG4gKiAvLyA9PiBbeyAneCc6IDEsICd5JzogMiB9XVxuICovXG52YXIgaW50ZXJzZWN0aW9uV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICB2YXIgY29tcGFyYXRvciA9IGxhc3QoYXJyYXlzKSxcbiAgICAgIG1hcHBlZCA9IGFycmF5TWFwKGFycmF5cywgY2FzdEFycmF5TGlrZU9iamVjdCk7XG5cbiAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICBpZiAoY29tcGFyYXRvcikge1xuICAgIG1hcHBlZC5wb3AoKTtcbiAgfVxuICByZXR1cm4gKG1hcHBlZC5sZW5ndGggJiYgbWFwcGVkWzBdID09PSBhcnJheXNbMF0pXG4gICAgPyBiYXNlSW50ZXJzZWN0aW9uKG1hcHBlZCwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKVxuICAgIDogW107XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBpbnRlcnNlY3Rpb25XaXRoO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGJvb2xlYW4gcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJvb2xlYW4sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Jvb2xlYW4oZmFsc2UpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNCb29sZWFuKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gZmFsc2UgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBib29sVGFnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0Jvb2xlYW47XG4iLCJ2YXIgaXNFcXVhbCA9IHJlcXVpcmUoJ2xvZGFzaC9pc0VxdWFsJylcbnZhciBzb3J0QnkgPSByZXF1aXJlKCdsb2Rhc2gvc29ydEJ5JylcbnZhciB1bmlxID0gcmVxdWlyZSgnbG9kYXNoL3VuaXEnKVxudmFyIHVuaXFXaXRoID0gcmVxdWlyZSgnbG9kYXNoL3VuaXFXaXRoJylcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJ2xvZGFzaC9kZWZhdWx0cycpXG52YXIgaW50ZXJzZWN0aW9uV2l0aCA9IHJlcXVpcmUoJ2xvZGFzaC9pbnRlcnNlY3Rpb25XaXRoJylcbnZhciBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnbG9kYXNoL2lzUGxhaW5PYmplY3QnKVxudmFyIGlzQm9vbGVhbiA9IHJlcXVpcmUoJ2xvZGFzaC9pc0Jvb2xlYW4nKVxuXG52YXIgbm9ybWFsaXplQXJyYXkgPSB2YWwgPT4gQXJyYXkuaXNBcnJheSh2YWwpXG4gID8gdmFsIDogW3ZhbF1cbnZhciB1bmRlZiA9IHZhbCA9PiB2YWwgPT09IHVuZGVmaW5lZFxudmFyIGtleXMgPSBvYmogPT4gaXNQbGFpbk9iamVjdChvYmopIHx8IEFycmF5LmlzQXJyYXkob2JqKSA/IE9iamVjdC5rZXlzKG9iaikgOiBbXVxudmFyIGhhcyA9IChvYmosIGtleSkgPT4gb2JqLmhhc093blByb3BlcnR5KGtleSlcbnZhciBzdHJpbmdBcnJheSA9IGFyciA9PiBzb3J0QnkodW5pcShhcnIpKVxudmFyIHVuZGVmRW1wdHkgPSB2YWwgPT4gdW5kZWYodmFsKSB8fCAoQXJyYXkuaXNBcnJheSh2YWwpICYmIHZhbC5sZW5ndGggPT09IDApXG52YXIga2V5VmFsRXF1YWwgPSAoYSwgYiwga2V5LCBjb21wYXJlKSA9PiBiICYmIGhhcyhiLCBrZXkpICYmIGEgJiYgaGFzKGEsIGtleSkgJiYgY29tcGFyZShhW2tleV0sIGJba2V5XSlcbnZhciB1bmRlZkFuZFplcm8gPSAoYSwgYikgPT4gKHVuZGVmKGEpICYmIGIgPT09IDApIHx8ICh1bmRlZihiKSAmJiBhID09PSAwKSB8fCBpc0VxdWFsKGEsIGIpXG52YXIgZmFsc2VVbmRlZmluZWQgPSAoYSwgYikgPT4gKHVuZGVmKGEpICYmIGIgPT09IGZhbHNlKSB8fCAodW5kZWYoYikgJiYgYSA9PT0gZmFsc2UpIHx8IGlzRXF1YWwoYSwgYilcbnZhciBlbXB0eVNjaGVtYSA9IHNjaGVtYSA9PiB1bmRlZihzY2hlbWEpIHx8IGlzRXF1YWwoc2NoZW1hLCB7fSkgfHwgc2NoZW1hID09PSB0cnVlXG52YXIgZW1wdHlPYmpVbmRlZiA9IHNjaGVtYSA9PiB1bmRlZihzY2hlbWEpIHx8IGlzRXF1YWwoc2NoZW1hLCB7fSlcbnZhciBpc1NjaGVtYSA9IHZhbCA9PiB1bmRlZih2YWwpIHx8IGlzUGxhaW5PYmplY3QodmFsKSB8fCB2YWwgPT09IHRydWUgfHwgdmFsID09PSBmYWxzZVxuXG5mdW5jdGlvbiB1bmRlZkFycmF5RXF1YWwoYSwgYikge1xuICBpZiAodW5kZWZFbXB0eShhKSAmJiB1bmRlZkVtcHR5KGIpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaXNFcXVhbChzdHJpbmdBcnJheShhKSwgc3RyaW5nQXJyYXkoYikpXG4gIH1cbn1cblxuZnVuY3Rpb24gdW5zb3J0ZWROb3JtYWxpemVkQXJyYXkoYSwgYikge1xuICBhID0gbm9ybWFsaXplQXJyYXkoYSlcbiAgYiA9IG5vcm1hbGl6ZUFycmF5KGIpXG4gIHJldHVybiBpc0VxdWFsKHN0cmluZ0FycmF5KGEpLCBzdHJpbmdBcnJheShiKSlcbn1cblxuZnVuY3Rpb24gc2NoZW1hR3JvdXAoYSwgYiwga2V5LCBjb21wYXJlKSB7XG4gIHZhciBhbGxQcm9wcyA9IHVuaXEoa2V5cyhhKS5jb25jYXQoa2V5cyhiKSkpXG4gIGlmIChlbXB0eU9ialVuZGVmKGEpICYmIGVtcHR5T2JqVW5kZWYoYikpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9IGVsc2UgaWYgKGVtcHR5T2JqVW5kZWYoYSkgJiYga2V5cyhiKS5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfSBlbHNlIGlmIChlbXB0eU9ialVuZGVmKGIpICYmIGtleXMoYSkubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gYWxsUHJvcHMuZXZlcnkoZnVuY3Rpb24oa2V5KSB7XG4gICAgdmFyIGFWYWwgPSBhW2tleV1cbiAgICB2YXIgYlZhbCA9IGJba2V5XVxuICAgIGlmIChBcnJheS5pc0FycmF5KGFWYWwpICYmIEFycmF5LmlzQXJyYXkoYlZhbCkpIHtcbiAgICAgIHJldHVybiBpc0VxdWFsKHN0cmluZ0FycmF5KGEpLCBzdHJpbmdBcnJheShiKSlcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYVZhbCkgJiYgIUFycmF5LmlzQXJyYXkoYlZhbCkpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShiVmFsKSAmJiAhQXJyYXkuaXNBcnJheShhVmFsKSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIHJldHVybiBrZXlWYWxFcXVhbChhLCBiLCBrZXksIGNvbXBhcmUpXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGl0ZW1zKGEsIGIsIGtleSwgY29tcGFyZSkge1xuICBpZiAoaXNQbGFpbk9iamVjdChhKSAmJiBpc1BsYWluT2JqZWN0KGIpKSB7XG4gICAgcmV0dXJuIGNvbXBhcmUoYSwgYilcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGEpICYmIEFycmF5LmlzQXJyYXkoYikpIHtcbiAgICByZXR1cm4gc2NoZW1hR3JvdXAoYSwgYiwga2V5LCBjb21wYXJlKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBpc0VxdWFsKGEsIGIpXG4gIH1cbn1cblxuZnVuY3Rpb24gdW5zb3J0ZWRBcnJheShhLCBiLCBrZXksIGNvbXBhcmUpIHtcbiAgdmFyIHVuaXF1ZUEgPSB1bmlxV2l0aChhLCBjb21wYXJlKVxuICB2YXIgdW5pcXVlQiA9IHVuaXFXaXRoKGIsIGNvbXBhcmUpXG4gIHZhciBpbnRlciA9IGludGVyc2VjdGlvbldpdGgodW5pcXVlQSwgdW5pcXVlQiwgY29tcGFyZSlcbiAgcmV0dXJuIGludGVyLmxlbmd0aCA9PT0gTWF0aC5tYXgodW5pcXVlQS5sZW5ndGgsIHVuaXF1ZUIubGVuZ3RoKVxufVxuXG52YXIgY29tcGFyZXJzID0ge1xuICB0aXRsZTogaXNFcXVhbCxcbiAgdW5pcXVlSXRlbXM6IGZhbHNlVW5kZWZpbmVkLFxuICBtaW5MZW5ndGg6IHVuZGVmQW5kWmVybyxcbiAgbWluSXRlbXM6IHVuZGVmQW5kWmVybyxcbiAgbWluUHJvcGVydGllczogdW5kZWZBbmRaZXJvLFxuICByZXF1aXJlZDogdW5kZWZBcnJheUVxdWFsLFxuICBlbnVtOiB1bmRlZkFycmF5RXF1YWwsXG4gIHR5cGU6IHVuc29ydGVkTm9ybWFsaXplZEFycmF5LFxuICBpdGVtczogaXRlbXMsXG4gIGFueU9mOiB1bnNvcnRlZEFycmF5LFxuICBhbGxPZjogdW5zb3J0ZWRBcnJheSxcbiAgb25lT2Y6IHVuc29ydGVkQXJyYXksXG4gIHByb3BlcnRpZXM6IHNjaGVtYUdyb3VwLFxuICBwYXR0ZXJuUHJvcGVydGllczogc2NoZW1hR3JvdXAsXG4gIGRlcGVuZGVuY2llczogc2NoZW1hR3JvdXBcbn1cblxudmFyIGFjY2VwdHNVbmRlZmluZWQgPSBbXG4gICdwcm9wZXJ0aWVzJyxcbiAgJ3BhdHRlcm5Qcm9wZXJ0aWVzJyxcbiAgJ2RlcGVuZGVuY2llcycsXG4gICd1bmlxdWVJdGVtcycsXG4gICdtaW5MZW5ndGgnLFxuICAnbWluSXRlbXMnLFxuICAnbWluUHJvcGVydGllcycsXG4gICdyZXF1aXJlZCdcbl1cblxudmFyIHNjaGVtYVByb3BzID0gWydhZGRpdGlvbmFsUHJvcGVydGllcycsICdhZGRpdGlvbmFsSXRlbXMnLCAnY29udGFpbnMnLCAncHJvcGVydHlOYW1lcycsICdub3QnXVxuXG5mdW5jdGlvbiBjb21wYXJlKGEsIGIsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IGRlZmF1bHRzKG9wdGlvbnMsIHtcbiAgICBpZ25vcmU6IFtdXG4gIH0pXG5cbiAgaWYgKGVtcHR5U2NoZW1hKGEpICYmIGVtcHR5U2NoZW1hKGIpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlmICghaXNTY2hlbWEoYSkgfHwgIWlzU2NoZW1hKGIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFaXRoZXIgb2YgdGhlIHZhbHVlcyBhcmUgbm90IGEgSlNPTiBzY2hlbWEuJylcbiAgfVxuICBpZiAoYSA9PT0gYikge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpZiAoaXNCb29sZWFuKGEpICYmIGlzQm9vbGVhbihiKSkge1xuICAgIHJldHVybiBhID09PSBiXG4gIH1cblxuICBpZiAoKGEgPT09IHVuZGVmaW5lZCAmJiBiID09PSBmYWxzZSkgfHwgKGIgPT09IHVuZGVmaW5lZCAmJiBhID09PSBmYWxzZSkpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmICgodW5kZWYoYSkgJiYgIXVuZGVmKGIpKSB8fCAoIXVuZGVmKGEpICYmIHVuZGVmKGIpKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgdmFyIGFsbEtleXMgPSB1bmlxKE9iamVjdC5rZXlzKGEpLmNvbmNhdChPYmplY3Qua2V5cyhiKSkpXG5cbiAgaWYgKG9wdGlvbnMuaWdub3JlLmxlbmd0aCkge1xuICAgIGFsbEtleXMgPSBhbGxLZXlzLmZpbHRlcihrID0+IG9wdGlvbnMuaWdub3JlLmluZGV4T2YoaykgPT09IC0xKVxuICB9XG5cbiAgaWYgKCFhbGxLZXlzLmxlbmd0aCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBmdW5jdGlvbiBpbm5lckNvbXBhcmUoYSwgYikge1xuICAgIHJldHVybiBjb21wYXJlKGEsIGIsIG9wdGlvbnMpXG4gIH1cblxuICByZXR1cm4gYWxsS2V5cy5ldmVyeShmdW5jdGlvbihrZXkpIHtcbiAgICB2YXIgYVZhbHVlID0gYVtrZXldXG4gICAgdmFyIGJWYWx1ZSA9IGJba2V5XVxuXG4gICAgaWYgKHNjaGVtYVByb3BzLmluZGV4T2Yoa2V5KSAhPT0gLTEpIHtcbiAgICAgIHJldHVybiBjb21wYXJlKGFWYWx1ZSwgYlZhbHVlLCBvcHRpb25zKVxuICAgIH1cblxuICAgIHZhciBjb21wYXJlciA9IGNvbXBhcmVyc1trZXldXG4gICAgaWYgKCFjb21wYXJlcikge1xuICAgICAgY29tcGFyZXIgPSBpc0VxdWFsXG4gICAgfVxuXG4gICAgLy8gZG8gc2ltcGxlIGxvZGFzaCBjaGVjayBmaXJzdFxuICAgIGlmIChpc0VxdWFsKGFWYWx1ZSwgYlZhbHVlKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBpZiAoYWNjZXB0c1VuZGVmaW5lZC5pbmRleE9mKGtleSkgPT09IC0xKSB7XG4gICAgICBpZiAoKCFoYXMoYSwga2V5KSAmJiBoYXMoYiwga2V5KSkgfHwgKGhhcyhhLCBrZXkpICYmICFoYXMoYiwga2V5KSkpIHtcbiAgICAgICAgcmV0dXJuIGFWYWx1ZSA9PT0gYlZhbHVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlc3VsdCA9IGNvbXBhcmVyKGFWYWx1ZSwgYlZhbHVlLCBrZXksIGlubmVyQ29tcGFyZSlcbiAgICBpZiAoIWlzQm9vbGVhbihyZXN1bHQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbXBhcmVyIG11c3QgcmV0dXJuIHRydWUgb3IgZmFsc2UnKVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0XG4gIH0pXG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcGFyZVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiogRlVOQ1RJT046IGlzQXJyYXkoIHZhbHVlIClcbipcdFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGFuIGFycmF5LlxuKlxuKiBAcGFyYW0geyp9IHZhbHVlIC0gdmFsdWUgdG8gYmUgdmFsaWRhdGVkXG4qIEByZXR1cm5zIHtCb29sZWFufSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB2YWx1ZSBpcyBhbiBhcnJheVxuKi9cbmZ1bmN0aW9uIGlzQXJyYXkoIHZhbHVlICkge1xuXHRyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKCB2YWx1ZSApID09PSAnW29iamVjdCBBcnJheV0nO1xufSAvLyBlbmQgRlVOQ1RJT04gaXNBcnJheSgpXG5cbi8vIEVYUE9SVFMgLy9cblxubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGlzQXJyYXk7XG4iLCIvKipcbipcbipcdFZBTElEQVRFOiBudW1iZXJcbipcbipcbipcdERFU0NSSVBUSU9OOlxuKlx0XHQtIFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGEgbnVtYmVyLlxuKlxuKlxuKlx0Tk9URVM6XG4qXHRcdFsxXVxuKlxuKlxuKlx0VE9ETzpcbipcdFx0WzFdXG4qXG4qXG4qXHRMSUNFTlNFOlxuKlx0XHRNSVRcbipcbipcdENvcHlyaWdodCAoYykgMjAxNC4gQXRoYW4gUmVpbmVzLlxuKlxuKlxuKlx0QVVUSE9SOlxuKlx0XHRBdGhhbiBSZWluZXMuIGtncnl0ZUBnbWFpbC5jb20uIDIwMTQuXG4qXG4qL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuKiBGVU5DVElPTjogaXNOdW1iZXIoIHZhbHVlIClcbipcdFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGEgbnVtYmVyLlxuKlxuKiBAcGFyYW0geyp9IHZhbHVlIC0gdmFsdWUgdG8gYmUgdmFsaWRhdGVkXG4qIEByZXR1cm5zIHtCb29sZWFufSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB2YWx1ZSBpcyBhIG51bWJlclxuKi9cbmZ1bmN0aW9uIGlzTnVtYmVyKCB2YWx1ZSApIHtcblx0cmV0dXJuICggdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoIHZhbHVlICkgPT09ICdbb2JqZWN0IE51bWJlcl0nICkgJiYgdmFsdWUudmFsdWVPZigpID09PSB2YWx1ZS52YWx1ZU9mKCk7XG59IC8vIGVuZCBGVU5DVElPTiBpc051bWJlcigpXG5cblxuLy8gRVhQT1JUUyAvL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTnVtYmVyO1xuIiwiLyoqXG4qXG4qXHRWQUxJREFURTogaW50ZWdlclxuKlxuKlxuKlx0REVTQ1JJUFRJT046XG4qXHRcdC0gVmFsaWRhdGVzIGlmIGEgdmFsdWUgaXMgYW4gaW50ZWdlci5cbipcbipcbipcdE5PVEVTOlxuKlx0XHRbMV1cbipcbipcbipcdFRPRE86XG4qXHRcdFsxXVxuKlxuKlxuKlx0TElDRU5TRTpcbipcdFx0TUlUXG4qXG4qXHRDb3B5cmlnaHQgKGMpIDIwMTQuIEF0aGFuIFJlaW5lcy5cbipcbipcbipcdEFVVEhPUjpcbipcdFx0QXRoYW4gUmVpbmVzLiBrZ3J5dGVAZ21haWwuY29tLiAyMDE0LlxuKlxuKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vLyBNT0RVTEVTIC8vXG5cbnZhciBpc051bWJlciA9IHJlcXVpcmUoICd2YWxpZGF0ZS5pby1udW1iZXInICk7XG5cblxuLy8gSVNJTlRFR0VSIC8vXG5cbi8qKlxuKiBGVU5DVElPTjogaXNJbnRlZ2VyKCB2YWx1ZSApXG4qXHRWYWxpZGF0ZXMgaWYgYSB2YWx1ZSBpcyBhbiBpbnRlZ2VyLlxuKlxuKiBAcGFyYW0ge051bWJlcn0gdmFsdWUgLSB2YWx1ZSB0byBiZSB2YWxpZGF0ZWRcbiogQHJldHVybnMge0Jvb2xlYW59IGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHZhbHVlIGlzIGFuIGludGVnZXJcbiovXG5mdW5jdGlvbiBpc0ludGVnZXIoIHZhbHVlICkge1xuXHRyZXR1cm4gaXNOdW1iZXIoIHZhbHVlICkgJiYgdmFsdWUlMSA9PT0gMDtcbn0gLy8gZW5kIEZVTkNUSU9OIGlzSW50ZWdlcigpXG5cblxuLy8gRVhQT1JUUyAvL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSW50ZWdlcjtcbiIsIi8qKlxuKlxuKlx0VkFMSURBVEU6IGludGVnZXItYXJyYXlcbipcbipcbipcdERFU0NSSVBUSU9OOlxuKlx0XHQtIFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGFuIGludGVnZXIgYXJyYXkuXG4qXG4qXG4qXHROT1RFUzpcbipcdFx0WzFdXG4qXG4qXG4qXHRUT0RPOlxuKlx0XHRbMV1cbipcbipcbipcdExJQ0VOU0U6XG4qXHRcdE1JVFxuKlxuKlx0Q29weXJpZ2h0IChjKSAyMDE1LiBBdGhhbiBSZWluZXMuXG4qXG4qXG4qXHRBVVRIT1I6XG4qXHRcdEF0aGFuIFJlaW5lcy4ga2dyeXRlQGdtYWlsLmNvbS4gMjAxNS5cbipcbiovXG5cbid1c2Ugc3RyaWN0JztcblxuLy8gTU9EVUxFUyAvL1xuXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoICd2YWxpZGF0ZS5pby1hcnJheScgKSxcblx0aXNJbnRlZ2VyID0gcmVxdWlyZSggJ3ZhbGlkYXRlLmlvLWludGVnZXInICk7XG5cblxuLy8gSVMgSU5URUdFUiBBUlJBWSAvL1xuXG4vKipcbiogRlVOQ1RJT046IGlzSW50ZWdlckFycmF5KCB2YWx1ZSApXG4qXHRWYWxpZGF0ZXMgaWYgYSB2YWx1ZSBpcyBhbiBpbnRlZ2VyIGFycmF5LlxuKlxuKiBAcGFyYW0geyp9IHZhbHVlIC0gdmFsdWUgdG8gYmUgdmFsaWRhdGVkXG4qIEByZXR1cm5zIHtCb29sZWFufSBib29sZWFuIGluZGljYXRpbmcgaWYgYSB2YWx1ZSBpcyBhbiBpbnRlZ2VyIGFycmF5XG4qL1xuZnVuY3Rpb24gaXNJbnRlZ2VyQXJyYXkoIHZhbHVlICkge1xuXHR2YXIgbGVuO1xuXHRpZiAoICFpc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRsZW4gPSB2YWx1ZS5sZW5ndGg7XG5cdGlmICggIWxlbiApIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0Zm9yICggdmFyIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0aWYgKCAhaXNJbnRlZ2VyKCB2YWx1ZVtpXSApICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdHJ1ZTtcbn0gLy8gZW5kIEZVTkNUSU9OIGlzSW50ZWdlckFycmF5KClcblxuXG4vLyBFWFBPUlRTIC8vXG5cbm1vZHVsZS5leHBvcnRzID0gaXNJbnRlZ2VyQXJyYXk7XG4iLCIvKipcbipcbipcdFZBTElEQVRFOiBmdW5jdGlvblxuKlxuKlxuKlx0REVTQ1JJUFRJT046XG4qXHRcdC0gVmFsaWRhdGVzIGlmIGEgdmFsdWUgaXMgYSBmdW5jdGlvbi5cbipcbipcbipcdE5PVEVTOlxuKlx0XHRbMV1cbipcbipcbipcdFRPRE86XG4qXHRcdFsxXVxuKlxuKlxuKlx0TElDRU5TRTpcbipcdFx0TUlUXG4qXG4qXHRDb3B5cmlnaHQgKGMpIDIwMTQuIEF0aGFuIFJlaW5lcy5cbipcbipcbipcdEFVVEhPUjpcbipcdFx0QXRoYW4gUmVpbmVzLiBrZ3J5dGVAZ21haWwuY29tLiAyMDE0LlxuKlxuKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiogRlVOQ1RJT046IGlzRnVuY3Rpb24oIHZhbHVlIClcbipcdFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGEgZnVuY3Rpb24uXG4qXG4qIEBwYXJhbSB7Kn0gdmFsdWUgLSB2YWx1ZSB0byBiZSB2YWxpZGF0ZWRcbiogQHJldHVybnMge0Jvb2xlYW59IGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHZhbHVlIGlzIGEgZnVuY3Rpb25cbiovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKCB2YWx1ZSApIHtcblx0cmV0dXJuICggdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICk7XG59IC8vIGVuZCBGVU5DVElPTiBpc0Z1bmN0aW9uKClcblxuXG4vLyBFWFBPUlRTIC8vXG5cbm1vZHVsZS5leHBvcnRzID0gaXNGdW5jdGlvbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gTU9EVUxFUyAvL1xuXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoICd2YWxpZGF0ZS5pby1hcnJheScgKSxcblx0aXNJbnRlZ2VyQXJyYXkgPSByZXF1aXJlKCAndmFsaWRhdGUuaW8taW50ZWdlci1hcnJheScgKSxcblx0aXNGdW5jdGlvbiA9IHJlcXVpcmUoICd2YWxpZGF0ZS5pby1mdW5jdGlvbicgKTtcblxuXG4vLyBWQVJJQUJMRVMgLy9cblxudmFyIE1BWElOVCA9IE1hdGgucG93KCAyLCAzMSApIC0gMTtcblxuXG4vLyBGVU5DVElPTlMgLy9cblxuLyoqXG4qIEZVTkNUSU9OOiBnY2QoIGEsIGIgKVxuKlx0Q29tcHV0ZXMgdGhlIGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yIG9mIHR3byBpbnRlZ2VycyBgYWAgYW5kIGBiYCwgdXNpbmcgdGhlIGJpbmFyeSBHQ0QgYWxnb3JpdGhtLlxuKlxuKiBAcGFyYW0ge051bWJlcn0gYSAtIGludGVnZXJcbiogQHBhcmFtIHtOdW1iZXJ9IGIgLSBpbnRlZ2VyXG4qIEByZXR1cm5zIHtOdW1iZXJ9IGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yXG4qL1xuZnVuY3Rpb24gZ2NkKCBhLCBiICkge1xuXHR2YXIgayA9IDEsXG5cdFx0dDtcblx0Ly8gU2ltcGxlIGNhc2VzOlxuXHRpZiAoIGEgPT09IDAgKSB7XG5cdFx0cmV0dXJuIGI7XG5cdH1cblx0aWYgKCBiID09PSAwICkge1xuXHRcdHJldHVybiBhO1xuXHR9XG5cdC8vIFJlZHVjZSBgYWAgYW5kL29yIGBiYCB0byBvZGQgbnVtYmVycyBhbmQga2VlcCB0cmFjayBvZiB0aGUgZ3JlYXRlc3QgcG93ZXIgb2YgMiBkaXZpZGluZyBib3RoIGBhYCBhbmQgYGJgLi4uXG5cdHdoaWxlICggYSUyID09PSAwICYmIGIlMiA9PT0gMCApIHtcblx0XHRhID0gYSAvIDI7IC8vIHJpZ2h0IHNoaWZ0XG5cdFx0YiA9IGIgLyAyOyAvLyByaWdodCBzaGlmdFxuXHRcdGsgPSBrICogMjsgLy8gbGVmdCBzaGlmdFxuXHR9XG5cdC8vIFJlZHVjZSBgYWAgdG8gYW4gb2RkIG51bWJlci4uLlxuXHR3aGlsZSAoIGElMiA9PT0gMCApIHtcblx0XHRhID0gYSAvIDI7IC8vIHJpZ2h0IHNoaWZ0XG5cdH1cblx0Ly8gSGVuY2Vmb3J0aCwgYGFgIGlzIGFsd2F5cyBvZGQuLi5cblx0d2hpbGUgKCBiICkge1xuXHRcdC8vIFJlbW92ZSBhbGwgZmFjdG9ycyBvZiAyIGluIGBiYCwgYXMgdGhleSBhcmUgbm90IGNvbW1vbi4uLlxuXHRcdHdoaWxlICggYiUyID09PSAwICkge1xuXHRcdFx0YiA9IGIgLyAyOyAvLyByaWdodCBzaGlmdFxuXHRcdH1cblx0XHQvLyBgYWAgYW5kIGBiYCBhcmUgYm90aCBvZGQuIFN3YXAgdmFsdWVzIHN1Y2ggdGhhdCBgYmAgaXMgdGhlIGxhcmdlciBvZiB0aGUgdHdvIHZhbHVlcywgYW5kIHRoZW4gc2V0IGBiYCB0byB0aGUgZGlmZmVyZW5jZSAod2hpY2ggaXMgZXZlbikuLi5cblx0XHRpZiAoIGEgPiBiICkge1xuXHRcdFx0dCA9IGI7XG5cdFx0XHRiID0gYTtcblx0XHRcdGEgPSB0O1xuXHRcdH1cblx0XHRiID0gYiAtIGE7IC8vIGI9MCBpZmYgYj1hXG5cdH1cblx0Ly8gUmVzdG9yZSBjb21tb24gZmFjdG9ycyBvZiAyLi4uXG5cdHJldHVybiBrICogYTtcbn0gLy8gZW5kIEZVTkNUSU9OIGdjZCgpXG5cbi8qKlxuKiBGVU5DVElPTjogYml0d2lzZSggYSwgYiApXG4qXHRDb21wdXRlcyB0aGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3Igb2YgdHdvIGludGVnZXJzIGBhYCBhbmQgYGJgLCB1c2luZyB0aGUgYmluYXJ5IEdDRCBhbGdvcml0aG0gYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucy5cbipcbiogQHBhcmFtIHtOdW1iZXJ9IGEgLSBzYWZlIGludGVnZXJcbiogQHBhcmFtIHtOdW1iZXJ9IGIgLSBzYWZlIGludGVnZXJcbiogQHJldHVybnMge051bWJlcn0gZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3JcbiovXG5mdW5jdGlvbiBiaXR3aXNlKCBhLCBiICkge1xuXHR2YXIgayA9IDAsXG5cdFx0dDtcblx0Ly8gU2ltcGxlIGNhc2VzOlxuXHRpZiAoIGEgPT09IDAgKSB7XG5cdFx0cmV0dXJuIGI7XG5cdH1cblx0aWYgKCBiID09PSAwICkge1xuXHRcdHJldHVybiBhO1xuXHR9XG5cdC8vIFJlZHVjZSBgYWAgYW5kL29yIGBiYCB0byBvZGQgbnVtYmVycyBhbmQga2VlcCB0cmFjayBvZiB0aGUgZ3JlYXRlc3QgcG93ZXIgb2YgMiBkaXZpZGluZyBib3RoIGBhYCBhbmQgYGJgLi4uXG5cdHdoaWxlICggKGEgJiAxKSA9PT0gMCAmJiAoYiAmIDEpID09PSAwICkge1xuXHRcdGEgPj4+PSAxOyAvLyByaWdodCBzaGlmdFxuXHRcdGIgPj4+PSAxOyAvLyByaWdodCBzaGlmdFxuXHRcdGsrKztcblx0fVxuXHQvLyBSZWR1Y2UgYGFgIHRvIGFuIG9kZCBudW1iZXIuLi5cblx0d2hpbGUgKCAoYSAmIDEpID09PSAwICkge1xuXHRcdGEgPj4+PSAxOyAvLyByaWdodCBzaGlmdFxuXHR9XG5cdC8vIEhlbmNlZm9ydGgsIGBhYCBpcyBhbHdheXMgb2RkLi4uXG5cdHdoaWxlICggYiApIHtcblx0XHQvLyBSZW1vdmUgYWxsIGZhY3RvcnMgb2YgMiBpbiBgYmAsIGFzIHRoZXkgYXJlIG5vdCBjb21tb24uLi5cblx0XHR3aGlsZSAoIChiICYgMSkgPT09IDAgKSB7XG5cdFx0XHRiID4+Pj0gMTsgLy8gcmlnaHQgc2hpZnRcblx0XHR9XG5cdFx0Ly8gYGFgIGFuZCBgYmAgYXJlIGJvdGggb2RkLiBTd2FwIHZhbHVlcyBzdWNoIHRoYXQgYGJgIGlzIHRoZSBsYXJnZXIgb2YgdGhlIHR3byB2YWx1ZXMsIGFuZCB0aGVuIHNldCBgYmAgdG8gdGhlIGRpZmZlcmVuY2UgKHdoaWNoIGlzIGV2ZW4pLi4uXG5cdFx0aWYgKCBhID4gYiApIHtcblx0XHRcdHQgPSBiO1xuXHRcdFx0YiA9IGE7XG5cdFx0XHRhID0gdDtcblx0XHR9XG5cdFx0YiA9IGIgLSBhOyAvLyBiPTAgaWZmIGI9YVxuXHR9XG5cdC8vIFJlc3RvcmUgY29tbW9uIGZhY3RvcnMgb2YgMi4uLlxuXHRyZXR1cm4gYSA8PCBrO1xufSAvLyBlbmQgRlVOQ1RJT04gYml0d2lzZSgpXG5cblxuLy8gR1JFQVRFU1QgQ09NTU9OIERJVklTT1IgLy9cblxuLyoqXG4qIEZVTkNUSU9OOiBjb21wdXRlKCBhcnJbLCBjbGJrXSApXG4qXHRDb21wdXRlcyB0aGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3IuXG4qXG4qIEBwYXJhbSB7TnVtYmVyW118TnVtYmVyfSBhcnIgLSBpbnB1dCBhcnJheSBvZiBpbnRlZ2Vyc1xuKiBAcGFyYW0ge0Z1bmN0aW9ufE51bWJlcn0gW2NsYmtdIC0gYWNjZXNzb3IgZnVuY3Rpb24gZm9yIGFjY2Vzc2luZyBhcnJheSB2YWx1ZXNcbiogQHJldHVybnMge051bWJlcnxOdWxsfSBncmVhdGVzdCBjb21tb24gZGl2aXNvciBvciBudWxsXG4qL1xuZnVuY3Rpb24gY29tcHV0ZSgpIHtcblx0dmFyIG5hcmdzID0gYXJndW1lbnRzLmxlbmd0aCxcblx0XHRhcmdzLFxuXHRcdGNsYmssXG5cdFx0YXJyLFxuXHRcdGxlbixcblx0XHRhLCBiLFxuXHRcdGk7XG5cblx0Ly8gQ29weSB0aGUgaW5wdXQgYXJndW1lbnRzIHRvIGFuIGFycmF5Li4uXG5cdGFyZ3MgPSBuZXcgQXJyYXkoIG5hcmdzICk7XG5cdGZvciAoIGkgPSAwOyBpIDwgbmFyZ3M7IGkrKyApIHtcblx0XHRhcmdzWyBpIF0gPSBhcmd1bWVudHNbIGkgXTtcblx0fVxuXHQvLyBIYXZlIHdlIGJlZW4gcHJvdmlkZWQgd2l0aCBpbnRlZ2VyIGFyZ3VtZW50cz9cblx0aWYgKCBpc0ludGVnZXJBcnJheSggYXJncyApICkge1xuXHRcdGlmICggbmFyZ3MgPT09IDIgKSB7XG5cdFx0XHRhID0gYXJnc1sgMCBdO1xuXHRcdFx0YiA9IGFyZ3NbIDEgXTtcblx0XHRcdGlmICggYSA8IDAgKSB7XG5cdFx0XHRcdGEgPSAtYTtcblx0XHRcdH1cblx0XHRcdGlmICggYiA8IDAgKSB7XG5cdFx0XHRcdGIgPSAtYjtcblx0XHRcdH1cblx0XHRcdGlmICggYSA8PSBNQVhJTlQgJiYgYiA8PSBNQVhJTlQgKSB7XG5cdFx0XHRcdHJldHVybiBiaXR3aXNlKCBhLCBiICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gZ2NkKCBhLCBiICk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGFyciA9IGFyZ3M7XG5cdH1cblx0Ly8gSWYgbm90IGludGVnZXJzLCBlbnN1cmUgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGFuIGFycmF5Li4uXG5cdGVsc2UgaWYgKCAhaXNBcnJheSggYXJnc1sgMCBdICkgKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvciggJ2djZCgpOjppbnZhbGlkIGlucHV0IGFyZ3VtZW50LiBNdXN0IHByb3ZpZGUgYW4gYXJyYXkgb2YgaW50ZWdlcnMuIFZhbHVlOiBgJyArIGFyZ3NbIDAgXSArICdgLicgKTtcblx0fVxuXHQvLyBIYXZlIHdlIGJlZW4gcHJvdmlkZWQgd2l0aCBtb3JlIHRoYW4gb25lIGFyZ3VtZW50PyBJZiBzbywgZW5zdXJlIHRoYXQgdGhlIGFjY2Vzc29yIGFyZ3VtZW50IGlzIGEgZnVuY3Rpb24uLi5cblx0ZWxzZSBpZiAoIG5hcmdzID4gMSApIHtcblx0XHRhcnIgPSBhcmdzWyAwIF07XG5cdFx0Y2xiayA9IGFyZ3NbIDEgXTtcblx0XHRpZiAoICFpc0Z1bmN0aW9uKCBjbGJrICkgKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCAnZ2NkKCk6OmludmFsaWQgaW5wdXQgYXJndW1lbnQuIEFjY2Vzc29yIG11c3QgYmUgYSBmdW5jdGlvbi4gVmFsdWU6IGAnICsgY2xiayArICdgLicgKTtcblx0XHR9XG5cdH1cblx0Ly8gV2UgaGF2ZSBiZWVuIHByb3ZpZGVkIGFuIGFycmF5Li4uXG5cdGVsc2Uge1xuXHRcdGFyciA9IGFyZ3NbIDAgXTtcblx0fVxuXHRsZW4gPSBhcnIubGVuZ3RoO1xuXG5cdC8vIENoZWNrIGlmIGEgc3VmZmljaWVudCBudW1iZXIgb2YgdmFsdWVzIGhhdmUgYmVlbiBwcm92aWRlZC4uLlxuXHRpZiAoIGxlbiA8IDIgKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblx0Ly8gSWYgYW4gYWNjZXNzb3IgaXMgcHJvdmlkZWQsIGV4dHJhY3QgdGhlIGFycmF5IHZhbHVlcy4uLlxuXHRpZiAoIGNsYmsgKSB7XG5cdFx0YSA9IG5ldyBBcnJheSggbGVuICk7XG5cdFx0Zm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdGFbIGkgXSA9IGNsYmsoIGFyclsgaSBdLCBpICk7XG5cdFx0fVxuXHRcdGFyciA9IGE7XG5cdH1cblx0Ly8gR2l2ZW4gYW4gaW5wdXQgYXJyYXksIGVuc3VyZSBhbGwgYXJyYXkgdmFsdWVzIGFyZSBpbnRlZ2Vycy4uLlxuXHRpZiAoIG5hcmdzIDwgMyApIHtcblx0XHRpZiAoICFpc0ludGVnZXJBcnJheSggYXJyICkgKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCAnZ2NkKCk6OmludmFsaWQgaW5wdXQgYXJndW1lbnQuIEFjY2Vzc2VkIGFycmF5IHZhbHVlcyBtdXN0IGJlIGludGVnZXJzLiBWYWx1ZTogYCcgKyBhcnIgKyAnYC4nICk7XG5cdFx0fVxuXHR9XG5cdC8vIENvbnZlcnQgYW55IG5lZ2F0aXZlIGludGVnZXJzIHRvIHBvc2l0aXZlIGludGVnZXJzLi4uXG5cdGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0YSA9IGFyclsgaSBdO1xuXHRcdGlmICggYSA8IDAgKSB7XG5cdFx0XHRhcnJbIGkgXSA9IC1hO1xuXHRcdH1cblx0fVxuXHQvLyBFeHBsb2l0IHRoZSBmYWN0IHRoYXQgdGhlIGdjZCBpcyBhbiBhc3NvY2lhdGl2ZSBmdW5jdGlvbi4uLlxuXHRhID0gYXJyWyAwIF07XG5cdGZvciAoIGkgPSAxOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0YiA9IGFyclsgaSBdO1xuXHRcdGlmICggYiA8PSBNQVhJTlQgJiYgYSA8PSBNQVhJTlQgKSB7XG5cdFx0XHRhID0gYml0d2lzZSggYSwgYiApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhID0gZ2NkKCBhLCBiICk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBhO1xufSAvLyBlbmQgRlVOQ1RJT04gY29tcHV0ZSgpXG5cblxuLy8gRVhQT1JUUyAvL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXB1dGU7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIE1PRFVMRVMgLy9cblxudmFyIGdjZCA9IHJlcXVpcmUoICdjb21wdXRlLWdjZCcgKSxcblx0aXNBcnJheSA9IHJlcXVpcmUoICd2YWxpZGF0ZS5pby1hcnJheScgKSxcblx0aXNJbnRlZ2VyQXJyYXkgPSByZXF1aXJlKCAndmFsaWRhdGUuaW8taW50ZWdlci1hcnJheScgKSxcblx0aXNGdW5jdGlvbiA9IHJlcXVpcmUoICd2YWxpZGF0ZS5pby1mdW5jdGlvbicgKTtcblxuXG4vLyBMRUFTVCBDT01NT04gTVVMVElQTEUgLy9cblxuLyoqXG4qIEZVTkNUSU9OOiBsY20oIGFyclssIGNsYmtdIClcbipcdENvbXB1dGVzIHRoZSBsZWFzdCBjb21tb24gbXVsdGlwbGUgKGxjbSkuXG4qXG4qIEBwYXJhbSB7TnVtYmVyW118TnVtYmVyfSBhcnIgLSBpbnB1dCBhcnJheSBvZiBpbnRlZ2Vyc1xuKiBAcGFyYW0ge0Z1bmN0aW9ufE51bWJlcn0gW2FjY2Vzc29yXSAtIGFjY2Vzc29yIGZ1bmN0aW9uIGZvciBhY2Nlc3NpbmcgYXJyYXkgdmFsdWVzXG4qIEByZXR1cm5zIHtOdW1iZXJ8TnVsbH0gbGVhc3QgY29tbW9uIG11bHRpcGxlIG9yIG51bGxcbiovXG5mdW5jdGlvbiBsY20oKSB7XG5cdHZhciBuYXJncyA9IGFyZ3VtZW50cy5sZW5ndGgsXG5cdFx0YXJncyxcblx0XHRjbGJrLFxuXHRcdGFycixcblx0XHRsZW4sXG5cdFx0YSwgYixcblx0XHRpO1xuXG5cdC8vIENvcHkgdGhlIGlucHV0IGFyZ3VtZW50cyB0byBhbiBhcnJheS4uLlxuXHRhcmdzID0gbmV3IEFycmF5KCBuYXJncyApO1xuXHRmb3IgKCBpID0gMDsgaSA8IG5hcmdzOyBpKysgKSB7XG5cdFx0YXJnc1sgaSBdID0gYXJndW1lbnRzWyBpIF07XG5cdH1cblx0Ly8gSGF2ZSB3ZSBiZWVuIHByb3ZpZGVkIHdpdGggaW50ZWdlciBhcmd1bWVudHM/XG5cdGlmICggaXNJbnRlZ2VyQXJyYXkoIGFyZ3MgKSApIHtcblx0XHRpZiAoIG5hcmdzID09PSAyICkge1xuXHRcdFx0YSA9IGFyZ3NbIDAgXTtcblx0XHRcdGIgPSBhcmdzWyAxIF07XG5cdFx0XHRpZiAoIGEgPCAwICkge1xuXHRcdFx0XHRhID0gLWE7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGIgPCAwICkge1xuXHRcdFx0XHRiID0gLWI7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGEgPT09IDAgfHwgYiA9PT0gMCApIHtcblx0XHRcdFx0cmV0dXJuIDA7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gKCBhL2djZChhLGIpICkgKiBiO1xuXHRcdH1cblx0XHRhcnIgPSBhcmdzO1xuXHR9XG5cdC8vIElmIG5vdCBpbnRlZ2VycywgZW5zdXJlIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGFuIGFycmF5Li4uXG5cdGVsc2UgaWYgKCAhaXNBcnJheSggYXJnc1sgMCBdICkgKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvciggJ2xjbSgpOjppbnZhbGlkIGlucHV0IGFyZ3VtZW50LiBNdXN0IHByb3ZpZGUgYW4gYXJyYXkgb2YgaW50ZWdlcnMuIFZhbHVlOiBgJyArIGFyZ3NbIDAgXSArICdgLicgKTtcblx0fVxuXHQvLyBIYXZlIHdlIGJlZW4gcHJvdmlkZWQgd2l0aCBtb3JlIHRoYW4gb25lIGFyZ3VtZW50PyBJZiBzbywgZW5zdXJlIHRoYXQgdGhlIGFjY2Vzc29yIGFyZ3VtZW50IGlzIGEgZnVuY3Rpb24uLi5cblx0ZWxzZSBpZiAoIG5hcmdzID4gMSApIHtcblx0XHRhcnIgPSBhcmdzWyAwIF07XG5cdFx0Y2xiayA9IGFyZ3NbIDEgXTtcblx0XHRpZiAoICFpc0Z1bmN0aW9uKCBjbGJrICkgKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCAnbGNtKCk6OmludmFsaWQgaW5wdXQgYXJndW1lbnQuIEFjY2Vzc29yIG11c3QgYmUgYSBmdW5jdGlvbi4gVmFsdWU6IGAnICsgY2xiayArICdgLicgKTtcblx0XHR9XG5cdH1cblx0Ly8gV2UgaGF2ZSBiZWVuIHByb3ZpZGVkIGFuIGFycmF5Li4uXG5cdGVsc2Uge1xuXHRcdGFyciA9IGFyZ3NbIDAgXTtcblx0fVxuXHRsZW4gPSBhcnIubGVuZ3RoO1xuXG5cdC8vIENoZWNrIGlmIGEgc3VmZmljaWVudCBudW1iZXIgb2YgdmFsdWVzIGhhdmUgYmVlbiBwcm92aWRlZC4uLlxuXHRpZiAoIGxlbiA8IDIgKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblx0Ly8gSWYgYW4gYWNjZXNzb3IgaXMgcHJvdmlkZWQsIGV4dHJhY3QgdGhlIGFycmF5IHZhbHVlcy4uLlxuXHRpZiAoIGNsYmsgKSB7XG5cdFx0YSA9IG5ldyBBcnJheSggbGVuICk7XG5cdFx0Zm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdGFbIGkgXSA9IGNsYmsoIGFyclsgaSBdLCBpICk7XG5cdFx0fVxuXHRcdGFyciA9IGE7XG5cdH1cblx0Ly8gR2l2ZW4gYW4gaW5wdXQgYXJyYXksIGVuc3VyZSBhbGwgYXJyYXkgdmFsdWVzIGFyZSBpbnRlZ2Vycy4uLlxuXHRpZiAoIG5hcmdzIDwgMyApIHtcblx0XHRpZiAoICFpc0ludGVnZXJBcnJheSggYXJyICkgKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCAnbGNtKCk6OmludmFsaWQgaW5wdXQgYXJndW1lbnQuIEFjY2Vzc2VkIGFycmF5IHZhbHVlcyBtdXN0IGJlIGludGVnZXJzLiBWYWx1ZTogYCcgKyBhcnIgKyAnYC4nICk7XG5cdFx0fVxuXHR9XG5cdC8vIENvbnZlcnQgYW55IG5lZ2F0aXZlIGludGVnZXJzIHRvIHBvc2l0aXZlIGludGVnZXJzLi4uXG5cdGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0YSA9IGFyclsgaSBdO1xuXHRcdGlmICggYSA8IDAgKSB7XG5cdFx0XHRhcnJbIGkgXSA9IC1hO1xuXHRcdH1cblx0fVxuXHQvLyBFeHBsb2l0IHRoZSBmYWN0IHRoYXQgdGhlIGxjbSBpcyBhbiBhc3NvY2lhdGl2ZSBmdW5jdGlvbi4uLlxuXHRhID0gYXJyWyAwIF07XG5cdGZvciAoIGkgPSAxOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0YiA9IGFyclsgaSBdO1xuXHRcdGlmICggYSA9PT0gMCB8fCBiID09PSAwICkge1xuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXHRcdGEgPSAoIGEvZ2NkKGEsYikgKSAqIGI7XG5cdH1cblx0cmV0dXJuIGE7XG59IC8vIGVuZCBGVU5DVElPTiBsY20oKVxuXG5cbi8vIEVYUE9SVFMgLy9cblxubW9kdWxlLmV4cG9ydHMgPSBsY207XG4iLCJ2YXIgYmFzZU1lcmdlID0gcmVxdWlyZSgnLi9fYmFzZU1lcmdlJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKlxuICogVXNlZCBieSBgXy5kZWZhdWx0c0RlZXBgIHRvIGN1c3RvbWl6ZSBpdHMgYF8ubWVyZ2VgIHVzZSB0byBtZXJnZSBzb3VyY2VcbiAqIG9iamVjdHMgaW50byBkZXN0aW5hdGlvbiBvYmplY3RzIHRoYXQgYXJlIHBhc3NlZCB0aHJ1LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IG9ialZhbHVlIFRoZSBkZXN0aW5hdGlvbiB2YWx1ZS5cbiAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHNvdXJjZSB2YWx1ZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gbWVyZ2UuXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBwYXJlbnQgb2JqZWN0IG9mIGBvYmpWYWx1ZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBwYXJlbnQgb2JqZWN0IG9mIGBzcmNWYWx1ZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICogIGNvdW50ZXJwYXJ0cy5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGN1c3RvbURlZmF1bHRzTWVyZ2Uob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlLCBzdGFjaykge1xuICBpZiAoaXNPYmplY3Qob2JqVmFsdWUpICYmIGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgIC8vIFJlY3Vyc2l2ZWx5IG1lcmdlIG9iamVjdHMgYW5kIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHN0YWNrLnNldChzcmNWYWx1ZSwgb2JqVmFsdWUpO1xuICAgIGJhc2VNZXJnZShvYmpWYWx1ZSwgc3JjVmFsdWUsIHVuZGVmaW5lZCwgY3VzdG9tRGVmYXVsdHNNZXJnZSwgc3RhY2spO1xuICAgIHN0YWNrWydkZWxldGUnXShzcmNWYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIG9ialZhbHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGN1c3RvbURlZmF1bHRzTWVyZ2U7XG4iLCJ2YXIgYmFzZU1lcmdlID0gcmVxdWlyZSgnLi9fYmFzZU1lcmdlJyksXG4gICAgY3JlYXRlQXNzaWduZXIgPSByZXF1aXJlKCcuL19jcmVhdGVBc3NpZ25lcicpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWVyZ2VgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gKiBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIG1lcmdlZCB2YWx1ZXMgb2YgdGhlIGRlc3RpbmF0aW9uIGFuZCBzb3VyY2VcbiAqIHByb3BlcnRpZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLCBtZXJnaW5nIGlzIGhhbmRsZWQgYnkgdGhlXG4gKiBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGggc2l4IGFyZ3VtZW50czpcbiAqIChvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKS5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0gey4uLk9iamVjdH0gc291cmNlcyBUaGUgc291cmNlIG9iamVjdHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAqICAgaWYgKF8uaXNBcnJheShvYmpWYWx1ZSkpIHtcbiAqICAgICByZXR1cm4gb2JqVmFsdWUuY29uY2F0KHNyY1ZhbHVlKTtcbiAqICAgfVxuICogfVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogWzFdLCAnYic6IFsyXSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IFszXSwgJ2InOiBbNF0gfTtcbiAqXG4gKiBfLm1lcmdlV2l0aChvYmplY3QsIG90aGVyLCBjdXN0b21pemVyKTtcbiAqIC8vID0+IHsgJ2EnOiBbMSwgM10sICdiJzogWzIsIDRdIH1cbiAqL1xudmFyIG1lcmdlV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG1lcmdlV2l0aDtcbiIsInZhciBhcHBseSA9IHJlcXVpcmUoJy4vX2FwcGx5JyksXG4gICAgYmFzZVJlc3QgPSByZXF1aXJlKCcuL19iYXNlUmVzdCcpLFxuICAgIGN1c3RvbURlZmF1bHRzTWVyZ2UgPSByZXF1aXJlKCcuL19jdXN0b21EZWZhdWx0c01lcmdlJyksXG4gICAgbWVyZ2VXaXRoID0gcmVxdWlyZSgnLi9tZXJnZVdpdGgnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmRlZmF1bHRzYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBhc3NpZ25zXG4gKiBkZWZhdWx0IHByb3BlcnRpZXMuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjEwLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBzZWUgXy5kZWZhdWx0c1xuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmF1bHRzRGVlcCh7ICdhJzogeyAnYic6IDIgfSB9LCB7ICdhJzogeyAnYic6IDEsICdjJzogMyB9IH0pO1xuICogLy8gPT4geyAnYSc6IHsgJ2InOiAyLCAnYyc6IDMgfSB9XG4gKi9cbnZhciBkZWZhdWx0c0RlZXAgPSBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gIGFyZ3MucHVzaCh1bmRlZmluZWQsIGN1c3RvbURlZmF1bHRzTWVyZ2UpO1xuICByZXR1cm4gYXBwbHkobWVyZ2VXaXRoLCB1bmRlZmluZWQsIGFyZ3MpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdHNEZWVwO1xuIiwidmFyIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBiYXNlSW50ZXJzZWN0aW9uID0gcmVxdWlyZSgnLi9fYmFzZUludGVyc2VjdGlvbicpLFxuICAgIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBjYXN0QXJyYXlMaWtlT2JqZWN0ID0gcmVxdWlyZSgnLi9fY2FzdEFycmF5TGlrZU9iamVjdCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdW5pcXVlIHZhbHVlcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiBhbGwgZ2l2ZW4gYXJyYXlzXG4gKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmVcbiAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgaW50ZXJzZWN0aW5nIHZhbHVlcy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pbnRlcnNlY3Rpb24oWzIsIDFdLCBbMiwgM10pO1xuICogLy8gPT4gWzJdXG4gKi9cbnZhciBpbnRlcnNlY3Rpb24gPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgdmFyIG1hcHBlZCA9IGFycmF5TWFwKGFycmF5cywgY2FzdEFycmF5TGlrZU9iamVjdCk7XG4gIHJldHVybiAobWFwcGVkLmxlbmd0aCAmJiBtYXBwZWRbMF0gPT09IGFycmF5c1swXSlcbiAgICA/IGJhc2VJbnRlcnNlY3Rpb24obWFwcGVkKVxuICAgIDogW107XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBpbnRlcnNlY3Rpb247XG4iLCIvKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYmFzZUluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBjb21wYXJhdG9yLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJbmRleE9mV2l0aChhcnJheSwgdmFsdWUsIGZyb21JbmRleCwgY29tcGFyYXRvcikge1xuICB2YXIgaW5kZXggPSBmcm9tSW5kZXggLSAxLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGNvbXBhcmF0b3IoYXJyYXlbaW5kZXhdLCB2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJbmRleE9mV2l0aDtcbiIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgYmFzZUluZGV4T2YgPSByZXF1aXJlKCcuL19iYXNlSW5kZXhPZicpLFxuICAgIGJhc2VJbmRleE9mV2l0aCA9IHJlcXVpcmUoJy4vX2Jhc2VJbmRleE9mV2l0aCcpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3BsaWNlID0gYXJyYXlQcm90by5zcGxpY2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHVsbEFsbEJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gKiBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gcmVtb3ZlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gIHZhciBpbmRleE9mID0gY29tcGFyYXRvciA/IGJhc2VJbmRleE9mV2l0aCA6IGJhc2VJbmRleE9mLFxuICAgICAgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICBzZWVuID0gYXJyYXk7XG5cbiAgaWYgKGFycmF5ID09PSB2YWx1ZXMpIHtcbiAgICB2YWx1ZXMgPSBjb3B5QXJyYXkodmFsdWVzKTtcbiAgfVxuICBpZiAoaXRlcmF0ZWUpIHtcbiAgICBzZWVuID0gYXJyYXlNYXAoYXJyYXksIGJhc2VVbmFyeShpdGVyYXRlZSkpO1xuICB9XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGZyb21JbmRleCA9IDAsXG4gICAgICAgIHZhbHVlID0gdmFsdWVzW2luZGV4XSxcbiAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgd2hpbGUgKChmcm9tSW5kZXggPSBpbmRleE9mKHNlZW4sIGNvbXB1dGVkLCBmcm9tSW5kZXgsIGNvbXBhcmF0b3IpKSA+IC0xKSB7XG4gICAgICBpZiAoc2VlbiAhPT0gYXJyYXkpIHtcbiAgICAgICAgc3BsaWNlLmNhbGwoc2VlbiwgZnJvbUluZGV4LCAxKTtcbiAgICAgIH1cbiAgICAgIHNwbGljZS5jYWxsKGFycmF5LCBmcm9tSW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVB1bGxBbGw7XG4iLCJ2YXIgYmFzZVB1bGxBbGwgPSByZXF1aXJlKCcuL19iYXNlUHVsbEFsbCcpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucHVsbGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhbiBhcnJheSBvZiB2YWx1ZXMgdG8gcmVtb3ZlLlxuICpcbiAqICoqTm90ZToqKiBVbmxpa2UgYF8uZGlmZmVyZW5jZWAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdhJywgJ2InLCAnYyddO1xuICpcbiAqIF8ucHVsbEFsbChhcnJheSwgWydhJywgJ2MnXSk7XG4gKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gKiAvLyA9PiBbJ2InLCAnYiddXG4gKi9cbmZ1bmN0aW9uIHB1bGxBbGwoYXJyYXksIHZhbHVlcykge1xuICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCAmJiB2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aClcbiAgICA/IGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMpXG4gICAgOiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwdWxsQWxsO1xuIiwidmFyIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGJhc2VFYWNoID0gcmVxdWlyZSgnLi9fYmFzZUVhY2gnKSxcbiAgICBjYXN0RnVuY3Rpb24gPSByZXF1aXJlKCcuL19jYXN0RnVuY3Rpb24nKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBlbGVtZW50LlxuICogVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiAqKk5vdGU6KiogQXMgd2l0aCBvdGhlciBcIkNvbGxlY3Rpb25zXCIgbWV0aG9kcywgb2JqZWN0cyB3aXRoIGEgXCJsZW5ndGhcIlxuICogcHJvcGVydHkgYXJlIGl0ZXJhdGVkIGxpa2UgYXJyYXlzLiBUbyBhdm9pZCB0aGlzIGJlaGF2aW9yIHVzZSBgXy5mb3JJbmBcbiAqIG9yIGBfLmZvck93bmAgZm9yIG9iamVjdCBpdGVyYXRpb24uXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGFsaWFzIGVhY2hcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICogQHNlZSBfLmZvckVhY2hSaWdodFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmZvckVhY2goWzEsIDJdLCBmdW5jdGlvbih2YWx1ZSkge1xuICogICBjb25zb2xlLmxvZyh2YWx1ZSk7XG4gKiB9KTtcbiAqIC8vID0+IExvZ3MgYDFgIHRoZW4gYDJgLlxuICpcbiAqIF8uZm9yRWFjaCh7ICdhJzogMSwgJ2InOiAyIH0sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAqICAgY29uc29sZS5sb2coa2V5KTtcbiAqIH0pO1xuICogLy8gPT4gTG9ncyAnYScgdGhlbiAnYicgKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZCkuXG4gKi9cbmZ1bmN0aW9uIGZvckVhY2goY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlFYWNoIDogYmFzZUVhY2g7XG4gIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGNhc3RGdW5jdGlvbihpdGVyYXRlZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZvckVhY2g7XG4iLCJ2YXIgU2V0Q2FjaGUgPSByZXF1aXJlKCcuL19TZXRDYWNoZScpLFxuICAgIGFycmF5SW5jbHVkZXMgPSByZXF1aXJlKCcuL19hcnJheUluY2x1ZGVzJyksXG4gICAgYXJyYXlJbmNsdWRlc1dpdGggPSByZXF1aXJlKCcuL19hcnJheUluY2x1ZGVzV2l0aCcpLFxuICAgIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBjYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2NhY2hlSGFzJyk7XG5cbi8qKiBVc2VkIGFzIHRoZSBzaXplIHRvIGVuYWJsZSBsYXJnZSBhcnJheSBvcHRpbWl6YXRpb25zLiAqL1xudmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLmRpZmZlcmVuY2VgIHdpdGhvdXQgc3VwcG9ydFxuICogZm9yIGV4Y2x1ZGluZyBtdWx0aXBsZSBhcnJheXMgb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBiYXNlRGlmZmVyZW5jZShhcnJheSwgdmFsdWVzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlcyxcbiAgICAgIGlzQ29tbW9uID0gdHJ1ZSxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IFtdLFxuICAgICAgdmFsdWVzTGVuZ3RoID0gdmFsdWVzLmxlbmd0aDtcblxuICBpZiAoIWxlbmd0aCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgaWYgKGl0ZXJhdGVlKSB7XG4gICAgdmFsdWVzID0gYXJyYXlNYXAodmFsdWVzLCBiYXNlVW5hcnkoaXRlcmF0ZWUpKTtcbiAgfVxuICBpZiAoY29tcGFyYXRvcikge1xuICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlc1dpdGg7XG4gICAgaXNDb21tb24gPSBmYWxzZTtcbiAgfVxuICBlbHNlIGlmICh2YWx1ZXMubGVuZ3RoID49IExBUkdFX0FSUkFZX1NJWkUpIHtcbiAgICBpbmNsdWRlcyA9IGNhY2hlSGFzO1xuICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgdmFsdWVzID0gbmV3IFNldENhY2hlKHZhbHVlcyk7XG4gIH1cbiAgb3V0ZXI6XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID09IG51bGwgPyB2YWx1ZSA6IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgIHZhbHVlID0gKGNvbXBhcmF0b3IgfHwgdmFsdWUgIT09IDApID8gdmFsdWUgOiAwO1xuICAgIGlmIChpc0NvbW1vbiAmJiBjb21wdXRlZCA9PT0gY29tcHV0ZWQpIHtcbiAgICAgIHZhciB2YWx1ZXNJbmRleCA9IHZhbHVlc0xlbmd0aDtcbiAgICAgIHdoaWxlICh2YWx1ZXNJbmRleC0tKSB7XG4gICAgICAgIGlmICh2YWx1ZXNbdmFsdWVzSW5kZXhdID09PSBjb21wdXRlZCkge1xuICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKCFpbmNsdWRlcyh2YWx1ZXMsIGNvbXB1dGVkLCBjb21wYXJhdG9yKSkge1xuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VEaWZmZXJlbmNlO1xuIiwidmFyIGJhc2VEaWZmZXJlbmNlID0gcmVxdWlyZSgnLi9fYmFzZURpZmZlcmVuY2UnKSxcbiAgICBiYXNlUmVzdCA9IHJlcXVpcmUoJy4vX2Jhc2VSZXN0JyksXG4gICAgaXNBcnJheUxpa2VPYmplY3QgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlT2JqZWN0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBleGNsdWRpbmcgYWxsIGdpdmVuIHZhbHVlcyB1c2luZ1xuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0gey4uLip9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAqIEBzZWUgXy5kaWZmZXJlbmNlLCBfLnhvclxuICogQGV4YW1wbGVcbiAqXG4gKiBfLndpdGhvdXQoWzIsIDEsIDIsIDNdLCAxLCAyKTtcbiAqIC8vID0+IFszXVxuICovXG52YXIgd2l0aG91dCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LCB2YWx1ZXMpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KVxuICAgID8gYmFzZURpZmZlcmVuY2UoYXJyYXksIHZhbHVlcylcbiAgICA6IFtdO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gd2l0aG91dDtcbiIsImNvbnN0IGZsYXR0ZW4gPSByZXF1aXJlKCdsb2Rhc2gvZmxhdHRlbicpXG5jb25zdCBmbGF0dGVuRGVlcCA9IHJlcXVpcmUoJ2xvZGFzaC9mbGF0dGVuRGVlcCcpXG5jb25zdCBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnbG9kYXNoL2lzUGxhaW5PYmplY3QnKVxuY29uc3QgdW5pcSA9IHJlcXVpcmUoJ2xvZGFzaC91bmlxJylcbmNvbnN0IHVuaXFXaXRoID0gcmVxdWlyZSgnbG9kYXNoL3VuaXFXaXRoJylcbmNvbnN0IHdpdGhvdXQgPSByZXF1aXJlKCdsb2Rhc2gvd2l0aG91dCcpXG5cbmZ1bmN0aW9uIGRlbGV0ZVVuZGVmaW5lZFByb3BzKHJldHVybk9iamVjdCkge1xuICAvLyBjbGVhbnVwIGVtcHR5XG4gIGZvciAoY29uc3QgcHJvcCBpbiByZXR1cm5PYmplY3QpIHtcbiAgICBpZiAoaGFzKHJldHVybk9iamVjdCwgcHJvcCkgJiYgaXNFbXB0eVNjaGVtYShyZXR1cm5PYmplY3RbcHJvcF0pKSB7XG4gICAgICBkZWxldGUgcmV0dXJuT2JqZWN0W3Byb3BdXG4gICAgfVxuICB9XG4gIHJldHVybiByZXR1cm5PYmplY3Rcbn1cblxuY29uc3QgYWxsVW5pcXVlS2V5cyA9IChhcnIpID0+IHVuaXEoZmxhdHRlbkRlZXAoYXJyLm1hcChrZXlzKSkpXG5jb25zdCBnZXRWYWx1ZXMgPSAoc2NoZW1hcywga2V5KSA9PiBzY2hlbWFzLm1hcChzY2hlbWEgPT4gc2NoZW1hICYmIHNjaGVtYVtrZXldKVxuY29uc3QgaGFzID0gKG9iaiwgcHJvcE5hbWUpID0+IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3BOYW1lKVxuY29uc3Qga2V5cyA9IG9iaiA9PiB7XG4gIGlmIChpc1BsYWluT2JqZWN0KG9iaikgfHwgQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iailcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gW11cbiAgfVxufVxuXG5jb25zdCBub3RVbmRlZmluZWQgPSAodmFsKSA9PiB2YWwgIT09IHVuZGVmaW5lZFxuY29uc3QgaXNTY2hlbWEgPSAodmFsKSA9PiBpc1BsYWluT2JqZWN0KHZhbCkgfHwgdmFsID09PSB0cnVlIHx8IHZhbCA9PT0gZmFsc2VcbmNvbnN0IGlzRW1wdHlTY2hlbWEgPSAob2JqKSA9PiAoIWtleXMob2JqKS5sZW5ndGgpICYmIG9iaiAhPT0gZmFsc2UgJiYgb2JqICE9PSB0cnVlXG5jb25zdCB3aXRob3V0QXJyID0gKGFyciwgLi4ucmVzdCkgPT4gd2l0aG91dC5hcHBseShudWxsLCBbYXJyXS5jb25jYXQoZmxhdHRlbihyZXN0KSkpXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBhbGxVbmlxdWVLZXlzLFxuICBkZWxldGVVbmRlZmluZWRQcm9wcyxcbiAgZ2V0VmFsdWVzLFxuICBoYXMsXG4gIGlzRW1wdHlTY2hlbWEsXG4gIGlzU2NoZW1hLFxuICBrZXlzLFxuICBub3RVbmRlZmluZWQsXG4gIHVuaXFXaXRoLFxuICB3aXRob3V0QXJyXG59XG4iLCJcbmNvbnN0IGNvbXBhcmUgPSByZXF1aXJlKCdqc29uLXNjaGVtYS1jb21wYXJlJylcbmNvbnN0IGZvckVhY2ggPSByZXF1aXJlKCdsb2Rhc2gvZm9yRWFjaCcpXG5jb25zdCB7XG4gIGFsbFVuaXF1ZUtleXMsXG4gIGRlbGV0ZVVuZGVmaW5lZFByb3BzLFxuICBnZXRWYWx1ZXMsXG4gIGtleXMsXG4gIG5vdFVuZGVmaW5lZCxcbiAgdW5pcVdpdGgsXG4gIHdpdGhvdXRBcnJcbn0gPSByZXF1aXJlKCcuLi9jb21tb24nKVxuXG5mdW5jdGlvbiByZW1vdmVGYWxzZVNjaGVtYXModGFyZ2V0KSB7XG4gIGZvckVhY2godGFyZ2V0LCBmdW5jdGlvbihzY2hlbWEsIHByb3ApIHtcbiAgICBpZiAoc2NoZW1hID09PSBmYWxzZSkge1xuICAgICAgZGVsZXRlIHRhcmdldFtwcm9wXVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gbWVyZ2VTY2hlbWFHcm91cChncm91cCwgbWVyZ2VTY2hlbWFzKSB7XG4gIGNvbnN0IGFsbEtleXMgPSBhbGxVbmlxdWVLZXlzKGdyb3VwKVxuICByZXR1cm4gYWxsS2V5cy5yZWR1Y2UoZnVuY3Rpb24oYWxsLCBrZXkpIHtcbiAgICBjb25zdCBzY2hlbWFzID0gZ2V0VmFsdWVzKGdyb3VwLCBrZXkpXG4gICAgY29uc3QgY29tcGFjdGVkID0gdW5pcVdpdGgoc2NoZW1hcy5maWx0ZXIobm90VW5kZWZpbmVkKSwgY29tcGFyZSlcbiAgICBhbGxba2V5XSA9IG1lcmdlU2NoZW1hcyhjb21wYWN0ZWQsIGtleSlcbiAgICByZXR1cm4gYWxsXG4gIH0sIHt9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAga2V5d29yZHM6IFsncHJvcGVydGllcycsICdwYXR0ZXJuUHJvcGVydGllcycsICdhZGRpdGlvbmFsUHJvcGVydGllcyddLFxuICByZXNvbHZlcih2YWx1ZXMsIHBhcmVudHMsIG1lcmdlcnMsIG9wdGlvbnMpIHtcbiAgICAvLyBmaXJzdCBnZXQgcmlkIG9mIGFsbCBub24gcGVybWl0dGVkIHByb3BlcnRpZXNcbiAgICBpZiAoIW9wdGlvbnMuaWdub3JlQWRkaXRpb25hbFByb3BlcnRpZXMpIHtcbiAgICAgIHZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKHN1YlNjaGVtYSkge1xuICAgICAgICBjb25zdCBvdGhlclN1YlNjaGVtYXMgPSB2YWx1ZXMuZmlsdGVyKHMgPT4gcyAhPT0gc3ViU2NoZW1hKVxuICAgICAgICBjb25zdCBvd25LZXlzID0ga2V5cyhzdWJTY2hlbWEucHJvcGVydGllcylcbiAgICAgICAgY29uc3Qgb3duUGF0dGVybktleXMgPSBrZXlzKHN1YlNjaGVtYS5wYXR0ZXJuUHJvcGVydGllcylcbiAgICAgICAgY29uc3Qgb3duUGF0dGVybnMgPSBvd25QYXR0ZXJuS2V5cy5tYXAoayA9PiBuZXcgUmVnRXhwKGspKVxuICAgICAgICBvdGhlclN1YlNjaGVtYXMuZm9yRWFjaChmdW5jdGlvbihvdGhlcikge1xuICAgICAgICAgIGNvbnN0IGFsbE90aGVyS2V5cyA9IGtleXMob3RoZXIucHJvcGVydGllcylcbiAgICAgICAgICBjb25zdCBrZXlzTWF0Y2hpbmdQYXR0ZXJuID0gYWxsT3RoZXJLZXlzLmZpbHRlcihrID0+IG93blBhdHRlcm5zLnNvbWUocGsgPT4gcGsudGVzdChrKSkpXG4gICAgICAgICAgY29uc3QgYWRkaXRpb25hbEtleXMgPSB3aXRob3V0QXJyKGFsbE90aGVyS2V5cywgb3duS2V5cywga2V5c01hdGNoaW5nUGF0dGVybilcbiAgICAgICAgICBhZGRpdGlvbmFsS2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICAgICAgb3RoZXIucHJvcGVydGllc1trZXldID0gbWVyZ2Vycy5wcm9wZXJ0aWVzKFtcbiAgICAgICAgICAgICAgb3RoZXIucHJvcGVydGllc1trZXldLCBzdWJTY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXNcbiAgICAgICAgICAgIF0sIGtleSlcbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgICAgfSlcblxuICAgICAgLy8gcmVtb3ZlIGRpc2FsbG93ZWQgcGF0dGVyblByb3BlcnRpZXNcbiAgICAgIHZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKHN1YlNjaGVtYSkge1xuICAgICAgICBjb25zdCBvdGhlclN1YlNjaGVtYXMgPSB2YWx1ZXMuZmlsdGVyKHMgPT4gcyAhPT0gc3ViU2NoZW1hKVxuICAgICAgICBjb25zdCBvd25QYXR0ZXJuS2V5cyA9IGtleXMoc3ViU2NoZW1hLnBhdHRlcm5Qcm9wZXJ0aWVzKVxuICAgICAgICBpZiAoc3ViU2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzID09PSBmYWxzZSkge1xuICAgICAgICAgIG90aGVyU3ViU2NoZW1hcy5mb3JFYWNoKGZ1bmN0aW9uKG90aGVyKSB7XG4gICAgICAgICAgICBjb25zdCBhbGxPdGhlclBhdHRlcm5zID0ga2V5cyhvdGhlci5wYXR0ZXJuUHJvcGVydGllcylcbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxQYXR0ZXJuS2V5cyA9IHdpdGhvdXRBcnIoYWxsT3RoZXJQYXR0ZXJucywgb3duUGF0dGVybktleXMpXG4gICAgICAgICAgICBhZGRpdGlvbmFsUGF0dGVybktleXMuZm9yRWFjaChrZXkgPT4gZGVsZXRlIG90aGVyLnBhdHRlcm5Qcm9wZXJ0aWVzW2tleV0pXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCByZXR1cm5PYmplY3QgPSB7XG4gICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogbWVyZ2Vycy5hZGRpdGlvbmFsUHJvcGVydGllcyh2YWx1ZXMubWFwKHMgPT4gcy5hZGRpdGlvbmFsUHJvcGVydGllcykpLFxuICAgICAgcGF0dGVyblByb3BlcnRpZXM6IG1lcmdlU2NoZW1hR3JvdXAodmFsdWVzLm1hcChzID0+IHMucGF0dGVyblByb3BlcnRpZXMpLCBtZXJnZXJzLnBhdHRlcm5Qcm9wZXJ0aWVzKSxcbiAgICAgIHByb3BlcnRpZXM6IG1lcmdlU2NoZW1hR3JvdXAodmFsdWVzLm1hcChzID0+IHMucHJvcGVydGllcyksIG1lcmdlcnMucHJvcGVydGllcylcbiAgICB9XG5cbiAgICBpZiAocmV0dXJuT2JqZWN0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzID09PSBmYWxzZSkge1xuICAgICAgcmVtb3ZlRmFsc2VTY2hlbWFzKHJldHVybk9iamVjdC5wcm9wZXJ0aWVzKVxuICAgIH1cblxuICAgIHJldHVybiBkZWxldGVVbmRlZmluZWRQcm9wcyhyZXR1cm5PYmplY3QpXG4gIH1cbn1cbiIsIlxuY29uc3QgY29tcGFyZSA9IHJlcXVpcmUoJ2pzb24tc2NoZW1hLWNvbXBhcmUnKVxuY29uc3QgZm9yRWFjaCA9IHJlcXVpcmUoJ2xvZGFzaC9mb3JFYWNoJylcbmNvbnN0IHtcbiAgYWxsVW5pcXVlS2V5cyxcbiAgZGVsZXRlVW5kZWZpbmVkUHJvcHMsXG4gIGhhcyxcbiAgaXNTY2hlbWEsXG4gIG5vdFVuZGVmaW5lZCxcbiAgdW5pcVdpdGhcbn0gPSByZXF1aXJlKCcuLi9jb21tb24nKVxuXG5mdW5jdGlvbiByZW1vdmVGYWxzZVNjaGVtYXNGcm9tQXJyYXkodGFyZ2V0KSB7XG4gIGZvckVhY2godGFyZ2V0LCBmdW5jdGlvbihzY2hlbWEsIGluZGV4KSB7XG4gICAgaWYgKHNjaGVtYSA9PT0gZmFsc2UpIHtcbiAgICAgIHRhcmdldC5zcGxpY2UoaW5kZXgsIDEpXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiBnZXRJdGVtU2NoZW1hcyhzdWJTY2hlbWFzLCBrZXkpIHtcbiAgcmV0dXJuIHN1YlNjaGVtYXMubWFwKGZ1bmN0aW9uKHN1Yikge1xuICAgIGlmICghc3ViKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc3ViLml0ZW1zKSkge1xuICAgICAgY29uc3Qgc2NoZW1hQXRQb3MgPSBzdWIuaXRlbXNba2V5XVxuICAgICAgaWYgKGlzU2NoZW1hKHNjaGVtYUF0UG9zKSkge1xuICAgICAgICByZXR1cm4gc2NoZW1hQXRQb3NcbiAgICAgIH0gZWxzZSBpZiAoaGFzKHN1YiwgJ2FkZGl0aW9uYWxJdGVtcycpKSB7XG4gICAgICAgIHJldHVybiBzdWIuYWRkaXRpb25hbEl0ZW1zXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBzdWIuaXRlbXNcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGdldEFkZGl0aW9uYWxTY2hlbWFzKHN1YlNjaGVtYXMpIHtcbiAgcmV0dXJuIHN1YlNjaGVtYXMubWFwKGZ1bmN0aW9uKHN1Yikge1xuICAgIGlmICghc3ViKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHN1Yi5pdGVtcykpIHtcbiAgICAgIHJldHVybiBzdWIuYWRkaXRpb25hbEl0ZW1zXG4gICAgfVxuICAgIHJldHVybiBzdWIuaXRlbXNcbiAgfSlcbn1cblxuLy8gUHJvdmlkZSBzb3VyY2Ugd2hlbiBhcnJheVxuZnVuY3Rpb24gbWVyZ2VJdGVtcyhncm91cCwgbWVyZ2VTY2hlbWFzLCBpdGVtcykge1xuICBjb25zdCBhbGxLZXlzID0gYWxsVW5pcXVlS2V5cyhpdGVtcylcbiAgcmV0dXJuIGFsbEtleXMucmVkdWNlKGZ1bmN0aW9uKGFsbCwga2V5KSB7XG4gICAgY29uc3Qgc2NoZW1hcyA9IGdldEl0ZW1TY2hlbWFzKGdyb3VwLCBrZXkpXG4gICAgY29uc3QgY29tcGFjdGVkID0gdW5pcVdpdGgoc2NoZW1hcy5maWx0ZXIobm90VW5kZWZpbmVkKSwgY29tcGFyZSlcbiAgICBhbGxba2V5XSA9IG1lcmdlU2NoZW1hcyhjb21wYWN0ZWQsIGtleSlcbiAgICByZXR1cm4gYWxsXG4gIH0sIFtdKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAga2V5d29yZHM6IFsnaXRlbXMnLCAnYWRkaXRpb25hbEl0ZW1zJ10sXG4gIHJlc29sdmVyKHZhbHVlcywgcGFyZW50cywgbWVyZ2Vycykge1xuICAgIC8vIGNvbnN0IGNyZWF0ZVN1Yk1lcmdlciA9IGdyb3VwS2V5ID0+IChzY2hlbWFzLCBrZXkpID0+IG1lcmdlU2NoZW1hcyhzY2hlbWFzLCBwYXJlbnRzLmNvbmNhdChncm91cEtleSwga2V5KSlcbiAgICBjb25zdCBpdGVtcyA9IHZhbHVlcy5tYXAocyA9PiBzLml0ZW1zKVxuICAgIGNvbnN0IGl0ZW1zQ29tcGFjdGVkID0gaXRlbXMuZmlsdGVyKG5vdFVuZGVmaW5lZClcbiAgICBjb25zdCByZXR1cm5PYmplY3QgPSB7fVxuXG4gICAgLy8gaWYgYWxsIGl0ZW1zIGtleXdvcmQgdmFsdWVzIGFyZSBzY2hlbWFzLCB3ZSBjYW4gbWVyZ2UgdGhlbSBhcyBzaW1wbGUgc2NoZW1hc1xuICAgIC8vIGlmIG5vdCB3ZSBuZWVkIHRvIG1lcmdlIHRoZW0gYXMgbWl4ZWRcbiAgICBpZiAoaXRlbXNDb21wYWN0ZWQuZXZlcnkoaXNTY2hlbWEpKSB7XG4gICAgICByZXR1cm5PYmplY3QuaXRlbXMgPSBtZXJnZXJzLml0ZW1zKGl0ZW1zKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm5PYmplY3QuaXRlbXMgPSBtZXJnZUl0ZW1zKHZhbHVlcywgbWVyZ2Vycy5pdGVtcywgaXRlbXMpXG4gICAgfVxuXG4gICAgbGV0IHNjaGVtYXNBdExhc3RQb3NcbiAgICBpZiAoaXRlbXNDb21wYWN0ZWQuZXZlcnkoQXJyYXkuaXNBcnJheSkpIHtcbiAgICAgIHNjaGVtYXNBdExhc3RQb3MgPSB2YWx1ZXMubWFwKHMgPT4gcy5hZGRpdGlvbmFsSXRlbXMpXG4gICAgfSBlbHNlIGlmIChpdGVtc0NvbXBhY3RlZC5zb21lKEFycmF5LmlzQXJyYXkpKSB7XG4gICAgICBzY2hlbWFzQXRMYXN0UG9zID0gZ2V0QWRkaXRpb25hbFNjaGVtYXModmFsdWVzKVxuICAgIH1cblxuICAgIGlmIChzY2hlbWFzQXRMYXN0UG9zKSB7XG4gICAgICByZXR1cm5PYmplY3QuYWRkaXRpb25hbEl0ZW1zID0gbWVyZ2Vycy5hZGRpdGlvbmFsSXRlbXMoc2NoZW1hc0F0TGFzdFBvcylcbiAgICB9XG5cbiAgICBpZiAocmV0dXJuT2JqZWN0LmFkZGl0aW9uYWxJdGVtcyA9PT0gZmFsc2UgJiYgQXJyYXkuaXNBcnJheShyZXR1cm5PYmplY3QuaXRlbXMpKSB7XG4gICAgICByZW1vdmVGYWxzZVNjaGVtYXNGcm9tQXJyYXkocmV0dXJuT2JqZWN0Lml0ZW1zKVxuICAgIH1cblxuICAgIHJldHVybiBkZWxldGVVbmRlZmluZWRQcm9wcyhyZXR1cm5PYmplY3QpXG4gIH1cbn1cbiIsImNvbnN0IGNsb25lRGVlcCA9IHJlcXVpcmUoJ2xvZGFzaC9jbG9uZURlZXAnKVxuY29uc3QgY29tcGFyZSA9IHJlcXVpcmUoJ2pzb24tc2NoZW1hLWNvbXBhcmUnKVxuY29uc3QgY29tcHV0ZUxjbSA9IHJlcXVpcmUoJ2NvbXB1dGUtbGNtJylcbmNvbnN0IGRlZmF1bHRzRGVlcCA9IHJlcXVpcmUoJ2xvZGFzaC9kZWZhdWx0c0RlZXAnKVxuY29uc3QgZmxhdHRlbiA9IHJlcXVpcmUoJ2xvZGFzaC9mbGF0dGVuJylcbmNvbnN0IGZsYXR0ZW5EZWVwID0gcmVxdWlyZSgnbG9kYXNoL2ZsYXR0ZW5EZWVwJylcbmNvbnN0IGludGVyc2VjdGlvbiA9IHJlcXVpcmUoJ2xvZGFzaC9pbnRlcnNlY3Rpb24nKVxuY29uc3QgaW50ZXJzZWN0aW9uV2l0aCA9IHJlcXVpcmUoJ2xvZGFzaC9pbnRlcnNlY3Rpb25XaXRoJylcbmNvbnN0IGlzRXF1YWwgPSByZXF1aXJlKCdsb2Rhc2gvaXNFcXVhbCcpXG5jb25zdCBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnbG9kYXNoL2lzUGxhaW5PYmplY3QnKVxuY29uc3QgcHVsbEFsbCA9IHJlcXVpcmUoJ2xvZGFzaC9wdWxsQWxsJylcbmNvbnN0IHNvcnRCeSA9IHJlcXVpcmUoJ2xvZGFzaC9zb3J0QnknKVxuY29uc3QgdW5pcSA9IHJlcXVpcmUoJ2xvZGFzaC91bmlxJylcbmNvbnN0IHVuaXFXaXRoID0gcmVxdWlyZSgnbG9kYXNoL3VuaXFXaXRoJylcblxuY29uc3QgcHJvcGVydGllc1Jlc29sdmVyID0gcmVxdWlyZSgnLi9jb21wbGV4LXJlc29sdmVycy9wcm9wZXJ0aWVzJylcbmNvbnN0IGl0ZW1zUmVzb2x2ZXIgPSByZXF1aXJlKCcuL2NvbXBsZXgtcmVzb2x2ZXJzL2l0ZW1zJylcblxuY29uc3QgY29udGFpbnMgPSAoYXJyLCB2YWwpID0+IGFyci5pbmRleE9mKHZhbCkgIT09IC0xXG5jb25zdCBpc1NjaGVtYSA9ICh2YWwpID0+IGlzUGxhaW5PYmplY3QodmFsKSB8fCB2YWwgPT09IHRydWUgfHwgdmFsID09PSBmYWxzZVxuY29uc3QgaXNGYWxzZSA9ICh2YWwpID0+IHZhbCA9PT0gZmFsc2VcbmNvbnN0IGlzVHJ1ZSA9ICh2YWwpID0+IHZhbCA9PT0gdHJ1ZVxuY29uc3Qgc2NoZW1hUmVzb2x2ZXIgPSAoY29tcGFjdGVkLCBrZXksIG1lcmdlU2NoZW1hcykgPT4gbWVyZ2VTY2hlbWFzKGNvbXBhY3RlZClcbmNvbnN0IHN0cmluZ0FycmF5ID0gKHZhbHVlcykgPT4gc29ydEJ5KHVuaXEoZmxhdHRlbkRlZXAodmFsdWVzKSkpXG5jb25zdCBub3RVbmRlZmluZWQgPSAodmFsKSA9PiB2YWwgIT09IHVuZGVmaW5lZFxuY29uc3QgYWxsVW5pcXVlS2V5cyA9IChhcnIpID0+IHVuaXEoZmxhdHRlbkRlZXAoYXJyLm1hcChrZXlzKSkpXG5cbi8vIHJlc29sdmVyc1xuY29uc3QgZmlyc3QgPSBjb21wYWN0ZWQgPT4gY29tcGFjdGVkWzBdXG5jb25zdCByZXF1aXJlZCA9IGNvbXBhY3RlZCA9PiBzdHJpbmdBcnJheShjb21wYWN0ZWQpXG5jb25zdCBtYXhpbXVtVmFsdWUgPSBjb21wYWN0ZWQgPT4gTWF0aC5tYXguYXBwbHkoTWF0aCwgY29tcGFjdGVkKVxuY29uc3QgbWluaW11bVZhbHVlID0gY29tcGFjdGVkID0+IE1hdGgubWluLmFwcGx5KE1hdGgsIGNvbXBhY3RlZClcbmNvbnN0IHVuaXF1ZUl0ZW1zID0gY29tcGFjdGVkID0+IGNvbXBhY3RlZC5zb21lKGlzVHJ1ZSlcbmNvbnN0IGV4YW1wbGVzID0gY29tcGFjdGVkID0+IHVuaXFXaXRoKGZsYXR0ZW4oY29tcGFjdGVkKSwgaXNFcXVhbClcblxuZnVuY3Rpb24gY29tcGFyZVByb3Aoa2V5KSB7XG4gIHJldHVybiBmdW5jdGlvbihhLCBiKSB7XG4gICAgcmV0dXJuIGNvbXBhcmUoe1xuICAgICAgW2tleV06IGFcbiAgICB9LCB7IFtrZXldOiBiIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QWxsT2Yoc2NoZW1hKSB7XG4gIGxldCB7IGFsbE9mID0gW10sIC4uLmNvcHkgfSA9IHNjaGVtYVxuICBjb3B5ID0gaXNQbGFpbk9iamVjdChzY2hlbWEpID8gY29weSA6IHNjaGVtYSAvLyBpZiBzY2hlbWEgaXMgYm9vbGVhblxuICByZXR1cm4gW2NvcHksIC4uLmFsbE9mLm1hcChnZXRBbGxPZildXG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlcyhzY2hlbWFzLCBrZXkpIHtcbiAgcmV0dXJuIHNjaGVtYXMubWFwKHNjaGVtYSA9PiBzY2hlbWEgJiYgc2NoZW1hW2tleV0pXG59XG5cbmZ1bmN0aW9uIHRyeU1lcmdlU2NoZW1hR3JvdXBzKHNjaGVtYUdyb3VwcywgbWVyZ2VTY2hlbWFzKSB7XG4gIHJldHVybiBzY2hlbWFHcm91cHMubWFwKGZ1bmN0aW9uKHNjaGVtYXMsIGluZGV4KSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBtZXJnZVNjaGVtYXMoc2NoZW1hcywgaW5kZXgpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgfSkuZmlsdGVyKG5vdFVuZGVmaW5lZClcbn1cblxuZnVuY3Rpb24ga2V5cyhvYmopIHtcbiAgaWYgKGlzUGxhaW5PYmplY3Qob2JqKSB8fCBBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBbXVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEFueU9mQ29tYmluYXRpb25zKGFyck9mQXJyYXlzLCBjb21iaW5hdGlvbnMpIHtcbiAgY29tYmluYXRpb25zID0gY29tYmluYXRpb25zIHx8IFtdXG4gIGlmICghYXJyT2ZBcnJheXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGNvbWJpbmF0aW9uc1xuICB9XG5cbiAgY29uc3QgdmFsdWVzID0gYXJyT2ZBcnJheXMuc2xpY2UoMCkuc2hpZnQoKVxuICBjb25zdCByZXN0ID0gYXJyT2ZBcnJheXMuc2xpY2UoMSlcbiAgaWYgKGNvbWJpbmF0aW9ucy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZ2V0QW55T2ZDb21iaW5hdGlvbnMocmVzdCwgZmxhdHRlbihjb21iaW5hdGlvbnMubWFwKGNvbWJpbmF0aW9uID0+IHZhbHVlcy5tYXAoaXRlbSA9PiAoW2l0ZW1dLmNvbmNhdChjb21iaW5hdGlvbikpKSkpKVxuICB9XG4gIHJldHVybiBnZXRBbnlPZkNvbWJpbmF0aW9ucyhyZXN0LCB2YWx1ZXMubWFwKGl0ZW0gPT4gKGl0ZW0pKSlcbn1cblxuZnVuY3Rpb24gdGhyb3dJbmNvbXBhdGlibGUodmFsdWVzLCBwYXRocykge1xuICBsZXQgYXNKU09OXG4gIHRyeSB7XG4gICAgYXNKU09OID0gdmFsdWVzLm1hcChmdW5jdGlvbih2YWwpIHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWwsIG51bGwsIDIpXG4gICAgfSkuam9pbignXFxuJylcbiAgfSBjYXRjaCAodmFyaWFibGUpIHtcbiAgICBhc0pTT04gPSB2YWx1ZXMuam9pbignLCAnKVxuICB9XG4gIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHJlc29sdmUgdmFsdWVzIGZvciBwYXRoOlwiJyArIHBhdGhzLmpvaW4oJy4nKSArICdcIi4gVGhleSBhcmUgcHJvYmFibHkgaW5jb21wYXRpYmxlLiBWYWx1ZXM6IFxcbicgKyBhc0pTT04pXG59XG5cbmZ1bmN0aW9uIGNhbGxHcm91cFJlc29sdmVyKGNvbXBsZXhLZXl3b3JkcywgcmVzb2x2ZXJOYW1lLCBzY2hlbWFzLCBtZXJnZVNjaGVtYXMsIG9wdGlvbnMsIHBhcmVudHMpIHtcbiAgaWYgKGNvbXBsZXhLZXl3b3Jkcy5sZW5ndGgpIHtcbiAgICBjb25zdCByZXNvbHZlckNvbmZpZyA9IG9wdGlvbnMuY29tcGxleFJlc29sdmVyc1tyZXNvbHZlck5hbWVdXG4gICAgaWYgKCFyZXNvbHZlckNvbmZpZyB8fCAhcmVzb2x2ZXJDb25maWcucmVzb2x2ZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gcmVzb2x2ZXIgZm91bmQgZm9yICcgKyByZXNvbHZlck5hbWUpXG4gICAgfVxuXG4gICAgLy8gZXh0cmFjdCBhbGwga2V5d29yZHMgZnJvbSBhbGwgdGhlIHNjaGVtYXMgdGhhdCBoYXZlIG9uZSBvciBtb3JlXG4gICAgLy8gdGhlbiByZW1vdmUgYWxsIHVuZGVmaW5lZCBvbmVzIGFuZCBub3QgdW5pcXVlXG4gICAgY29uc3QgZXh0cmFjdGVkS2V5d29yZHNPbmx5ID0gc2NoZW1hcy5tYXAoc2NoZW1hID0+IGNvbXBsZXhLZXl3b3Jkcy5yZWR1Y2UoKGFsbCwga2V5KSA9PiB7XG4gICAgICBpZiAoc2NoZW1hW2tleV0gIT09IHVuZGVmaW5lZCkgYWxsW2tleV0gPSBzY2hlbWFba2V5XVxuICAgICAgcmV0dXJuIGFsbFxuICAgIH0sIHt9KSlcbiAgICBjb25zdCB1bmlxdWUgPSB1bmlxV2l0aChleHRyYWN0ZWRLZXl3b3Jkc09ubHksIGNvbXBhcmUpXG5cbiAgICAvLyBjcmVhdGUgbWVyZ2VycyB0aGF0IGF1dG9tYXRpY2FsbHkgYWRkIHRoZSBwYXRoIG9mIHRoZSBrZXl3b3JkIGZvciB1c2UgaW4gdGhlIGNvbXBsZXggcmVzb2x2ZXJcbiAgICBjb25zdCBtZXJnZXJzID0gcmVzb2x2ZXJDb25maWcua2V5d29yZHMucmVkdWNlKChhbGwsIGtleSkgPT4gKHtcbiAgICAgIC4uLmFsbCxcbiAgICAgIFtrZXldOiAoc2NoZW1hcywgZXh0cmFLZXkgPSBbXSkgPT4gbWVyZ2VTY2hlbWFzKHNjaGVtYXMsIG51bGwsIHBhcmVudHMuY29uY2F0KGtleSwgZXh0cmFLZXkpKVxuICAgIH0pLCB7fSlcblxuICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVyQ29uZmlnLnJlc29sdmVyKHVuaXF1ZSwgcGFyZW50cy5jb25jYXQocmVzb2x2ZXJOYW1lKSwgbWVyZ2Vycywgb3B0aW9ucylcblxuICAgIGlmICghaXNQbGFpbk9iamVjdChyZXN1bHQpKSB7XG4gICAgICB0aHJvd0luY29tcGF0aWJsZSh1bmlxdWUsIHBhcmVudHMuY29uY2F0KHJlc29sdmVyTmFtZSkpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVJlcXVpcmVkTWV0YUFycmF5KGFycikge1xuICByZXR1cm4geyByZXF1aXJlZDogYXJyIH1cbn1cblxuY29uc3Qgc2NoZW1hR3JvdXBQcm9wcyA9IFsncHJvcGVydGllcycsICdwYXR0ZXJuUHJvcGVydGllcycsICdkZWZpbml0aW9ucycsICdkZXBlbmRlbmNpZXMnXVxuY29uc3Qgc2NoZW1hQXJyYXlzID0gWydhbnlPZicsICdvbmVPZiddXG5jb25zdCBzY2hlbWFQcm9wcyA9IFtcbiAgJ2FkZGl0aW9uYWxQcm9wZXJ0aWVzJyxcbiAgJ2FkZGl0aW9uYWxJdGVtcycsXG4gICdjb250YWlucycsXG4gICdwcm9wZXJ0eU5hbWVzJyxcbiAgJ25vdCcsXG4gICdpdGVtcydcbl1cblxuY29uc3QgZGVmYXVsdFJlc29sdmVycyA9IHtcbiAgdHlwZShjb21wYWN0ZWQpIHtcbiAgICBpZiAoY29tcGFjdGVkLnNvbWUoQXJyYXkuaXNBcnJheSkpIHtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBjb21wYWN0ZWQubWFwKGZ1bmN0aW9uKHZhbCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWwpXG4gICAgICAgICAgPyB2YWxcbiAgICAgICAgICA6IFt2YWxdXG4gICAgICB9KVxuICAgICAgY29uc3QgY29tbW9uID0gaW50ZXJzZWN0aW9uLmFwcGx5KG51bGwsIG5vcm1hbGl6ZWQpXG5cbiAgICAgIGlmIChjb21tb24ubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiBjb21tb25bMF1cbiAgICAgIH0gZWxzZSBpZiAoY29tbW9uLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgcmV0dXJuIHVuaXEoY29tbW9uKVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZGVwZW5kZW5jaWVzKGNvbXBhY3RlZCwgcGF0aHMsIG1lcmdlU2NoZW1hcykge1xuICAgIGNvbnN0IGFsbENoaWxkcmVuID0gYWxsVW5pcXVlS2V5cyhjb21wYWN0ZWQpXG5cbiAgICByZXR1cm4gYWxsQ2hpbGRyZW4ucmVkdWNlKGZ1bmN0aW9uKGFsbCwgY2hpbGRLZXkpIHtcbiAgICAgIGNvbnN0IGNoaWxkU2NoZW1hcyA9IGdldFZhbHVlcyhjb21wYWN0ZWQsIGNoaWxkS2V5KVxuICAgICAgbGV0IGlubmVyQ29tcGFjdGVkID0gdW5pcVdpdGgoY2hpbGRTY2hlbWFzLmZpbHRlcihub3RVbmRlZmluZWQpLCBpc0VxdWFsKVxuXG4gICAgICAvLyB0byBzdXBwb3J0IGRlcGVuZGVuY2llc1xuICAgICAgY29uc3QgaW5uZXJBcnJheXMgPSBpbm5lckNvbXBhY3RlZC5maWx0ZXIoQXJyYXkuaXNBcnJheSlcblxuICAgICAgaWYgKGlubmVyQXJyYXlzLmxlbmd0aCkge1xuICAgICAgICBpZiAoaW5uZXJBcnJheXMubGVuZ3RoID09PSBpbm5lckNvbXBhY3RlZC5sZW5ndGgpIHtcbiAgICAgICAgICBhbGxbY2hpbGRLZXldID0gc3RyaW5nQXJyYXkoaW5uZXJDb21wYWN0ZWQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgaW5uZXJTY2hlbWFzID0gaW5uZXJDb21wYWN0ZWQuZmlsdGVyKGlzU2NoZW1hKVxuICAgICAgICAgIGNvbnN0IGFycmF5TWV0YVNjaGVhbXMgPSBpbm5lckFycmF5cy5tYXAoY3JlYXRlUmVxdWlyZWRNZXRhQXJyYXkpXG4gICAgICAgICAgYWxsW2NoaWxkS2V5XSA9IG1lcmdlU2NoZW1hcyhpbm5lclNjaGVtYXMuY29uY2F0KGFycmF5TWV0YVNjaGVhbXMpLCBjaGlsZEtleSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWxsXG4gICAgICB9XG5cbiAgICAgIGlubmVyQ29tcGFjdGVkID0gdW5pcVdpdGgoaW5uZXJDb21wYWN0ZWQsIGNvbXBhcmUpXG5cbiAgICAgIGFsbFtjaGlsZEtleV0gPSBtZXJnZVNjaGVtYXMoaW5uZXJDb21wYWN0ZWQsIGNoaWxkS2V5KVxuICAgICAgcmV0dXJuIGFsbFxuICAgIH0sIHt9KVxuICB9LFxuICBvbmVPZihjb21wYWN0ZWQsIHBhdGhzLCBtZXJnZVNjaGVtYXMpIHtcbiAgICBjb25zdCBjb21iaW5hdGlvbnMgPSBnZXRBbnlPZkNvbWJpbmF0aW9ucyhjbG9uZURlZXAoY29tcGFjdGVkKSlcbiAgICBjb25zdCByZXN1bHQgPSB0cnlNZXJnZVNjaGVtYUdyb3Vwcyhjb21iaW5hdGlvbnMsIG1lcmdlU2NoZW1hcylcbiAgICBjb25zdCB1bmlxdWUgPSB1bmlxV2l0aChyZXN1bHQsIGNvbXBhcmUpXG5cbiAgICBpZiAodW5pcXVlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHVuaXF1ZVxuICAgIH1cbiAgfSxcbiAgbm90KGNvbXBhY3RlZCkge1xuICAgIHJldHVybiB7IGFueU9mOiBjb21wYWN0ZWQgfVxuICB9LFxuICBwYXR0ZXJuKGNvbXBhY3RlZCkge1xuICAgIHJldHVybiBjb21wYWN0ZWQubWFwKHIgPT4gJyg/PScgKyByICsgJyknKS5qb2luKCcnKVxuICB9LFxuICBtdWx0aXBsZU9mKGNvbXBhY3RlZCkge1xuICAgIGxldCBpbnRlZ2VycyA9IGNvbXBhY3RlZC5zbGljZSgwKVxuICAgIGxldCBmYWN0b3IgPSAxXG4gICAgd2hpbGUgKGludGVnZXJzLnNvbWUobiA9PiAhTnVtYmVyLmlzSW50ZWdlcihuKSkpIHtcbiAgICAgIGludGVnZXJzID0gaW50ZWdlcnMubWFwKG4gPT4gbiAqIDEwKVxuICAgICAgZmFjdG9yID0gZmFjdG9yICogMTBcbiAgICB9XG4gICAgcmV0dXJuIGNvbXB1dGVMY20oaW50ZWdlcnMpIC8gZmFjdG9yXG4gIH0sXG4gIGVudW0oY29tcGFjdGVkKSB7XG4gICAgY29uc3QgZW51bXMgPSBpbnRlcnNlY3Rpb25XaXRoLmFwcGx5KG51bGwsIGNvbXBhY3RlZC5jb25jYXQoaXNFcXVhbCkpXG4gICAgaWYgKGVudW1zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHNvcnRCeShlbnVtcylcbiAgICB9XG4gIH1cbn1cblxuZGVmYXVsdFJlc29sdmVycy4kaWQgPSBmaXJzdFxuZGVmYXVsdFJlc29sdmVycy4kcmVmID0gZmlyc3RcbmRlZmF1bHRSZXNvbHZlcnMuJHNjaGVtYSA9IGZpcnN0XG5kZWZhdWx0UmVzb2x2ZXJzLmFkZGl0aW9uYWxJdGVtcyA9IHNjaGVtYVJlc29sdmVyXG5kZWZhdWx0UmVzb2x2ZXJzLmFkZGl0aW9uYWxQcm9wZXJ0aWVzID0gc2NoZW1hUmVzb2x2ZXJcbmRlZmF1bHRSZXNvbHZlcnMuYW55T2YgPSBkZWZhdWx0UmVzb2x2ZXJzLm9uZU9mXG5kZWZhdWx0UmVzb2x2ZXJzLmNvbnRhaW5zID0gc2NoZW1hUmVzb2x2ZXJcbmRlZmF1bHRSZXNvbHZlcnMuZGVmYXVsdCA9IGZpcnN0XG5kZWZhdWx0UmVzb2x2ZXJzLmRlZmluaXRpb25zID0gZGVmYXVsdFJlc29sdmVycy5kZXBlbmRlbmNpZXNcbmRlZmF1bHRSZXNvbHZlcnMuZGVzY3JpcHRpb24gPSBmaXJzdFxuZGVmYXVsdFJlc29sdmVycy5leGFtcGxlcyA9IGV4YW1wbGVzXG5kZWZhdWx0UmVzb2x2ZXJzLmV4Y2x1c2l2ZU1heGltdW0gPSBtaW5pbXVtVmFsdWVcbmRlZmF1bHRSZXNvbHZlcnMuZXhjbHVzaXZlTWluaW11bSA9IG1heGltdW1WYWx1ZVxuZGVmYXVsdFJlc29sdmVycy5pdGVtcyA9IGl0ZW1zUmVzb2x2ZXJcbmRlZmF1bHRSZXNvbHZlcnMubWF4aW11bSA9IG1pbmltdW1WYWx1ZVxuZGVmYXVsdFJlc29sdmVycy5tYXhJdGVtcyA9IG1pbmltdW1WYWx1ZVxuZGVmYXVsdFJlc29sdmVycy5tYXhMZW5ndGggPSBtaW5pbXVtVmFsdWVcbmRlZmF1bHRSZXNvbHZlcnMubWF4UHJvcGVydGllcyA9IG1pbmltdW1WYWx1ZVxuZGVmYXVsdFJlc29sdmVycy5taW5pbXVtID0gbWF4aW11bVZhbHVlXG5kZWZhdWx0UmVzb2x2ZXJzLm1pbkl0ZW1zID0gbWF4aW11bVZhbHVlXG5kZWZhdWx0UmVzb2x2ZXJzLm1pbkxlbmd0aCA9IG1heGltdW1WYWx1ZVxuZGVmYXVsdFJlc29sdmVycy5taW5Qcm9wZXJ0aWVzID0gbWF4aW11bVZhbHVlXG5kZWZhdWx0UmVzb2x2ZXJzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzUmVzb2x2ZXJcbmRlZmF1bHRSZXNvbHZlcnMucHJvcGVydHlOYW1lcyA9IHNjaGVtYVJlc29sdmVyXG5kZWZhdWx0UmVzb2x2ZXJzLnJlcXVpcmVkID0gcmVxdWlyZWRcbmRlZmF1bHRSZXNvbHZlcnMudGl0bGUgPSBmaXJzdFxuZGVmYXVsdFJlc29sdmVycy51bmlxdWVJdGVtcyA9IHVuaXF1ZUl0ZW1zXG5cbmNvbnN0IGRlZmF1bHRDb21wbGV4UmVzb2x2ZXJzID0ge1xuICBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzUmVzb2x2ZXIsXG4gIGl0ZW1zOiBpdGVtc1Jlc29sdmVyXG59XG5cbmZ1bmN0aW9uIG1lcmdlcihyb290U2NoZW1hLCBvcHRpb25zLCB0b3RhbFNjaGVtYXMpIHtcbiAgdG90YWxTY2hlbWFzID0gdG90YWxTY2hlbWFzIHx8IFtdXG4gIG9wdGlvbnMgPSBkZWZhdWx0c0RlZXAob3B0aW9ucywge1xuICAgIGlnbm9yZUFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICByZXNvbHZlcnM6IGRlZmF1bHRSZXNvbHZlcnMsXG4gICAgY29tcGxleFJlc29sdmVyczogZGVmYXVsdENvbXBsZXhSZXNvbHZlcnMsXG4gICAgZGVlcDogdHJ1ZVxuICB9KVxuXG4gIGNvbnN0IGNvbXBsZXhSZXNvbHZlcnMgPSBPYmplY3QuZW50cmllcyhvcHRpb25zLmNvbXBsZXhSZXNvbHZlcnMpXG5cbiAgZnVuY3Rpb24gbWVyZ2VTY2hlbWFzKHNjaGVtYXMsIGJhc2UsIHBhcmVudHMpIHtcbiAgICBzY2hlbWFzID0gY2xvbmVEZWVwKHNjaGVtYXMuZmlsdGVyKG5vdFVuZGVmaW5lZCkpXG4gICAgcGFyZW50cyA9IHBhcmVudHMgfHwgW11cbiAgICBjb25zdCBtZXJnZWQgPSBpc1BsYWluT2JqZWN0KGJhc2UpXG4gICAgICA/IGJhc2VcbiAgICAgIDoge31cblxuICAgIC8vIHJldHVybiB1bmRlZmluZWQsIGFuIGVtcHR5IHNjaGVtYVxuICAgIGlmICghc2NoZW1hcy5sZW5ndGgpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChzY2hlbWFzLnNvbWUoaXNGYWxzZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGlmIChzY2hlbWFzLmV2ZXJ5KGlzVHJ1ZSkpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgLy8gdGhlcmUgYXJlIG5vIGZhbHNlIGFuZCB3ZSBkb24ndCBuZWVkIHRoZSB0cnVlIG9uZXMgYXMgdGhleSBhY2NlcHQgZXZlcnl0aGluZ1xuICAgIHNjaGVtYXMgPSBzY2hlbWFzLmZpbHRlcihpc1BsYWluT2JqZWN0KVxuXG4gICAgY29uc3QgYWxsS2V5cyA9IGFsbFVuaXF1ZUtleXMoc2NoZW1hcylcbiAgICBpZiAob3B0aW9ucy5kZWVwICYmIGNvbnRhaW5zKGFsbEtleXMsICdhbGxPZicpKSB7XG4gICAgICByZXR1cm4gbWVyZ2VyKHtcbiAgICAgICAgYWxsT2Y6IHNjaGVtYXNcbiAgICAgIH0sIG9wdGlvbnMsIHRvdGFsU2NoZW1hcylcbiAgICB9XG5cbiAgICBjb25zdCBjb21wbGV4S2V5c0FyciA9IGNvbXBsZXhSZXNvbHZlcnMubWFwKChbbWFpbktleVdvcmQsIHJlc29sdmVyQ29uZl0pID0+XG4gICAgICBhbGxLZXlzLmZpbHRlcihrID0+IHJlc29sdmVyQ29uZi5rZXl3b3Jkcy5pbmNsdWRlcyhrKSkpXG5cbiAgICAvLyByZW1vdmUgYWxsIGNvbXBsZXgga2V5cyBiZWZvcmUgc2ltcGxlIHJlc29sdmVyc1xuICAgIGNvbXBsZXhLZXlzQXJyLmZvckVhY2goa2V5cyA9PiBwdWxsQWxsKGFsbEtleXMsIGtleXMpKVxuXG4gICAgLy8gY2FsbCBhbGwgc2ltcGxlIHJlc29sdmVycyBmb3IgcmVsZXZhbnQga2V5d29yZHNcbiAgICBhbGxLZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICBjb25zdCB2YWx1ZXMgPSBnZXRWYWx1ZXMoc2NoZW1hcywga2V5KVxuICAgICAgY29uc3QgY29tcGFjdGVkID0gdW5pcVdpdGgodmFsdWVzLmZpbHRlcihub3RVbmRlZmluZWQpLCBjb21wYXJlUHJvcChrZXkpKVxuXG4gICAgICAvLyBhcnJheXByb3BzIGxpa2UgYW55T2YgYW5kIG9uZU9mIG11c3QgYmUgbWVyZ2VkIGZpcnN0LCBhcyB0aGV5IGNvbnRhaW5zIHNjaGVtYXNcbiAgICAgIC8vIGFsbE9mIGlzIHRyZWF0ZWQgZGlmZmVyZW50bHkgYWxsdG9nZXRoZXJcbiAgICAgIGlmIChjb21wYWN0ZWQubGVuZ3RoID09PSAxICYmIGNvbnRhaW5zKHNjaGVtYUFycmF5cywga2V5KSkge1xuICAgICAgICBtZXJnZWRba2V5XSA9IGNvbXBhY3RlZFswXS5tYXAoc2NoZW1hID0+IG1lcmdlU2NoZW1hcyhbc2NoZW1hXSwgc2NoZW1hKSlcbiAgICAgICAgLy8gcHJvcCBncm91cHMgbXVzdCBhbHdheXMgYmUgcmVzb2x2ZWRcbiAgICAgIH0gZWxzZSBpZiAoY29tcGFjdGVkLmxlbmd0aCA9PT0gMSAmJiAhY29udGFpbnMoc2NoZW1hR3JvdXBQcm9wcywga2V5KSAmJiAhY29udGFpbnMoc2NoZW1hUHJvcHMsIGtleSkpIHtcbiAgICAgICAgbWVyZ2VkW2tleV0gPSBjb21wYWN0ZWRbMF1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVyID0gb3B0aW9ucy5yZXNvbHZlcnNba2V5XSB8fCBvcHRpb25zLnJlc29sdmVycy5kZWZhdWx0UmVzb2x2ZXJcbiAgICAgICAgaWYgKCFyZXNvbHZlcikgdGhyb3cgbmV3IEVycm9yKCdObyByZXNvbHZlciBmb3VuZCBmb3Iga2V5ICcgKyBrZXkgKyAnLiBZb3UgY2FuIHByb3ZpZGUgYSByZXNvbHZlciBmb3IgdGhpcyBrZXl3b3JkIGluIHRoZSBvcHRpb25zLCBvciBwcm92aWRlIGEgZGVmYXVsdCByZXNvbHZlci4nKVxuXG4gICAgICAgIGNvbnN0IG1lcmdlciA9IChzY2hlbWFzLCBleHRyYUtleSA9IFtdKSA9PiBtZXJnZVNjaGVtYXMoc2NoZW1hcywgbnVsbCwgcGFyZW50cy5jb25jYXQoa2V5LCBleHRyYUtleSkpXG4gICAgICAgIG1lcmdlZFtrZXldID0gcmVzb2x2ZXIoY29tcGFjdGVkLCBwYXJlbnRzLmNvbmNhdChrZXkpLCBtZXJnZXIsIG9wdGlvbnMpXG5cbiAgICAgICAgaWYgKG1lcmdlZFtrZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aHJvd0luY29tcGF0aWJsZShjb21wYWN0ZWQsIHBhcmVudHMuY29uY2F0KGtleSkpXG4gICAgICAgIH0gZWxzZSBpZiAobWVyZ2VkW2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRlbGV0ZSBtZXJnZWRba2V5XVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBjb21wbGV4UmVzb2x2ZXJzLnJlZHVjZSgoYWxsLCBbcmVzb2x2ZXJLZXl3b3JkLCBjb25maWddLCBpbmRleCkgPT4gKHtcbiAgICAgIC4uLmFsbCxcbiAgICAgIC4uLmNhbGxHcm91cFJlc29sdmVyKGNvbXBsZXhLZXlzQXJyW2luZGV4XSwgcmVzb2x2ZXJLZXl3b3JkLCBzY2hlbWFzLCBtZXJnZVNjaGVtYXMsIG9wdGlvbnMsIHBhcmVudHMpXG4gICAgfSksIG1lcmdlZClcbiAgfVxuXG4gIGNvbnN0IGFsbFNjaGVtYXMgPSBmbGF0dGVuRGVlcChnZXRBbGxPZihyb290U2NoZW1hKSlcbiAgY29uc3QgbWVyZ2VkID0gbWVyZ2VTY2hlbWFzKGFsbFNjaGVtYXMpXG5cbiAgcmV0dXJuIG1lcmdlZFxufVxuXG5tZXJnZXIub3B0aW9ucyA9IHtcbiAgcmVzb2x2ZXJzOiBkZWZhdWx0UmVzb2x2ZXJzXG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWVyZ2VyXG4iLCJpbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IGlzU3RyaW5nIGZyb20gJ2xvZGFzaC9pc1N0cmluZyc7XG4vKiogUmV0dXJucyB0aGUgYGRpc2NyaW1pbmF0b3IucHJvcGVydHlOYW1lYCB3aGVuIGRlZmluZWQgaW4gdGhlIGBzY2hlbWFgIGlmIGl0IGlzIGEgc3RyaW5nLiBBIHdhcm5pbmcgaXMgZ2VuZXJhdGVkIHdoZW5cbiAqIGl0IGlzIG5vdCBhIHN0cmluZy4gUmV0dXJucyBgdW5kZWZpbmVkYCB3aGVuIGEgdmFsaWQgZGlzY3JpbWluYXRvciBpcyBub3QgcHJlc2VudC5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmcm9tIHdoaWNoIHRoZSBkaXNjcmltaW5hdG9yIGlzIHBvdGVudGlhbGx5IG9idGFpbmVkXG4gKiBAcmV0dXJucyAtIFRoZSBgZGlzY3JpbWluYXRvci5wcm9wZXJ0eU5hbWVgIGlmIGl0IGV4aXN0cyBpbiB0aGUgc2NoZW1hLCBvdGhlcndpc2UgYHVuZGVmaW5lZGBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RGlzY3JpbWluYXRvckZpZWxkRnJvbVNjaGVtYShzY2hlbWEpIHtcbiAgICBsZXQgZGlzY3JpbWluYXRvcjtcbiAgICBjb25zdCBtYXliZVN0cmluZyA9IGdldChzY2hlbWEsICdkaXNjcmltaW5hdG9yLnByb3BlcnR5TmFtZScsIHVuZGVmaW5lZCk7XG4gICAgaWYgKGlzU3RyaW5nKG1heWJlU3RyaW5nKSkge1xuICAgICAgICBkaXNjcmltaW5hdG9yID0gbWF5YmVTdHJpbmc7XG4gICAgfVxuICAgIGVsc2UgaWYgKG1heWJlU3RyaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBFeHBlY3RpbmcgZGlzY3JpbWluYXRvciB0byBiZSBhIHN0cmluZywgZ290IFwiJHt0eXBlb2YgbWF5YmVTdHJpbmd9XCIgaW5zdGVhZGApO1xuICAgIH1cbiAgICByZXR1cm4gZGlzY3JpbWluYXRvcjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEuanMubWFwIiwiLyoqIEdpdmVuIGEgc3BlY2lmaWMgYHZhbHVlYCBhdHRlbXB0cyB0byBndWVzcyB0aGUgdHlwZSBvZiBhIHNjaGVtYSBlbGVtZW50LiBJbiB0aGUgY2FzZSB3aGVyZSB3ZSBoYXZlIHRvIGltcGxpY2l0bHlcbiAqICBjcmVhdGUgYSBzY2hlbWEsIGl0IGlzIHVzZWZ1bCB0byBrbm93IHdoYXQgdHlwZSB0byB1c2UgYmFzZWQgb24gdGhlIGRhdGEgd2UgYXJlIGRlZmluaW5nLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSBmcm9tIHdoaWNoIHRvIGd1ZXNzIHRoZSB0eXBlXG4gKiBAcmV0dXJucyAtIFRoZSBiZXN0IGd1ZXNzIGZvciB0aGUgb2JqZWN0IHR5cGVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ3Vlc3NUeXBlKHZhbHVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAnYXJyYXknO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gJ3N0cmluZyc7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAnbnVsbCc7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgICByZXR1cm4gJ2Jvb2xlYW4nO1xuICAgIH1cbiAgICBpZiAoIWlzTmFOKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gJ251bWJlcic7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiAnb2JqZWN0JztcbiAgICB9XG4gICAgLy8gRGVmYXVsdCB0byBzdHJpbmcgaWYgd2UgY2FuJ3QgZmlndXJlIGl0IG91dFxuICAgIHJldHVybiAnc3RyaW5nJztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWd1ZXNzVHlwZS5qcy5tYXAiLCJ2YXIgYmFzZUZsYXR0ZW4gPSByZXF1aXJlKCcuL19iYXNlRmxhdHRlbicpLFxuICAgIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBiYXNlVW5pcSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmlxJyksXG4gICAgaXNBcnJheUxpa2VPYmplY3QgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlT2JqZWN0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzLCBpbiBvcmRlciwgZnJvbSBhbGwgZ2l2ZW4gYXJyYXlzIHVzaW5nXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnVuaW9uKFsyXSwgWzEsIDJdKTtcbiAqIC8vID0+IFsyLCAxXVxuICovXG52YXIgdW5pb24gPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVuaW9uO1xuIiwiaW1wb3J0IGd1ZXNzVHlwZSBmcm9tICcuL2d1ZXNzVHlwZSc7XG4vKiogR2V0cyB0aGUgdHlwZSBvZiBhIGdpdmVuIGBzY2hlbWFgLiBJZiB0aGUgdHlwZSBpcyBub3QgZXhwbGljaXRseSBkZWZpbmVkLCB0aGVuIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBpbmZlciBpdCBmcm9tXG4gKiBvdGhlciBlbGVtZW50cyBvZiB0aGUgc2NoZW1hIGFzIGZvbGxvd3M6XG4gKiAtIHNjaGVtYS5jb25zdDogUmV0dXJucyB0aGUgYGd1ZXNzVHlwZSgpYCBvZiB0aGF0IHZhbHVlXG4gKiAtIHNjaGVtYS5lbnVtOiBSZXR1cm5zIGBzdHJpbmdgXG4gKiAtIHNjaGVtYS5wcm9wZXJ0aWVzOiBSZXR1cm5zIGBvYmplY3RgXG4gKiAtIHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllczogUmV0dXJucyBgb2JqZWN0YFxuICogLSB0eXBlIGlzIGFuIGFycmF5IHdpdGggYSBsZW5ndGggb2YgMiBhbmQgb25lIHR5cGUgaXMgJ251bGwnOiBSZXR1cm5zIHRoZSBvdGhlciB0eXBlXG4gKlxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRvIGdldCB0aGUgdHlwZVxuICogQHJldHVybnMgLSBUaGUgdHlwZSBvZiB0aGUgc2NoZW1hXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFNjaGVtYVR5cGUoc2NoZW1hKSB7XG4gICAgbGV0IHsgdHlwZSB9ID0gc2NoZW1hO1xuICAgIGlmICghdHlwZSAmJiBzY2hlbWEuY29uc3QpIHtcbiAgICAgICAgcmV0dXJuIGd1ZXNzVHlwZShzY2hlbWEuY29uc3QpO1xuICAgIH1cbiAgICBpZiAoIXR5cGUgJiYgc2NoZW1hLmVudW0pIHtcbiAgICAgICAgcmV0dXJuICdzdHJpbmcnO1xuICAgIH1cbiAgICBpZiAoIXR5cGUgJiYgKHNjaGVtYS5wcm9wZXJ0aWVzIHx8IHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcykpIHtcbiAgICAgICAgcmV0dXJuICdvYmplY3QnO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0eXBlKSkge1xuICAgICAgICBpZiAodHlwZS5sZW5ndGggPT09IDIgJiYgdHlwZS5pbmNsdWRlcygnbnVsbCcpKSB7XG4gICAgICAgICAgICB0eXBlID0gdHlwZS5maW5kKCh0eXBlKSA9PiB0eXBlICE9PSAnbnVsbCcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdHlwZSA9IHR5cGVbMF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHR5cGU7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXRTY2hlbWFUeXBlLmpzLm1hcCIsImltcG9ydCB1bmlvbiBmcm9tICdsb2Rhc2gvdW5pb24nO1xuaW1wb3J0IHsgUkVRVUlSRURfS0VZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IGdldFNjaGVtYVR5cGUgZnJvbSAnLi9nZXRTY2hlbWFUeXBlJztcbmltcG9ydCBpc09iamVjdCBmcm9tICcuL2lzT2JqZWN0Jztcbi8qKiBSZWN1cnNpdmVseSBtZXJnZSBkZWVwbHkgbmVzdGVkIHNjaGVtYXMuIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYG1lcmdlU2NoZW1hc2AgYW5kIGBtZXJnZU9iamVjdHNgIGlzIHRoYXRcbiAqIGBtZXJnZVNjaGVtYXNgIG9ubHkgY29uY2F0cyBhcnJheXMgZm9yIHZhbHVlcyB1bmRlciB0aGUgJ3JlcXVpcmVkJyBrZXl3b3JkLCBhbmQgd2hlbiBpdCBkb2VzLCBpdCBkb2Vzbid0IGluY2x1ZGVcbiAqIGR1cGxpY2F0ZSB2YWx1ZXMuXG4gKlxuICogQHBhcmFtIG9iajEgLSBUaGUgZmlyc3Qgc2NoZW1hIG9iamVjdCB0byBtZXJnZVxuICogQHBhcmFtIG9iajIgLSBUaGUgc2Vjb25kIHNjaGVtYSBvYmplY3QgdG8gbWVyZ2VcbiAqIEByZXR1cm5zIC0gVGhlIG1lcmdlZCBzY2hlbWEgb2JqZWN0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlU2NoZW1hcyhvYmoxLCBvYmoyKSB7XG4gICAgY29uc3QgYWNjID0gT2JqZWN0LmFzc2lnbih7fSwgb2JqMSk7IC8vIFByZXZlbnQgbXV0YXRpb24gb2Ygc291cmNlIG9iamVjdC5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqMikucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICBjb25zdCBsZWZ0ID0gb2JqMSA/IG9iajFba2V5XSA6IHt9LCByaWdodCA9IG9iajJba2V5XTtcbiAgICAgICAgaWYgKG9iajEgJiYga2V5IGluIG9iajEgJiYgaXNPYmplY3QocmlnaHQpKSB7XG4gICAgICAgICAgICBhY2Nba2V5XSA9IG1lcmdlU2NoZW1hcyhsZWZ0LCByaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAob2JqMSAmJlxuICAgICAgICAgICAgb2JqMiAmJlxuICAgICAgICAgICAgKGdldFNjaGVtYVR5cGUob2JqMSkgPT09ICdvYmplY3QnIHx8IGdldFNjaGVtYVR5cGUob2JqMikgPT09ICdvYmplY3QnKSAmJlxuICAgICAgICAgICAga2V5ID09PSBSRVFVSVJFRF9LRVkgJiZcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkobGVmdCkgJiZcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocmlnaHQpKSB7XG4gICAgICAgICAgICAvLyBEb24ndCBpbmNsdWRlIGR1cGxpY2F0ZSB2YWx1ZXMgd2hlbiBtZXJnaW5nICdyZXF1aXJlZCcgZmllbGRzLlxuICAgICAgICAgICAgYWNjW2tleV0gPSB1bmlvbihsZWZ0LCByaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhY2Nba2V5XSA9IHJpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgYWNjKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1lcmdlU2NoZW1hcy5qcy5tYXAiLCJpbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuaW1wb3J0IHNldCBmcm9tICdsb2Rhc2gvc2V0JztcbmltcG9ydCB0aW1lcyBmcm9tICdsb2Rhc2gvdGltZXMnO1xuaW1wb3J0IHRyYW5zZm9ybSBmcm9tICdsb2Rhc2gvdHJhbnNmb3JtJztcbmltcG9ydCBtZXJnZSBmcm9tICdsb2Rhc2gvbWVyZ2UnO1xuaW1wb3J0IGZsYXR0ZW5EZWVwIGZyb20gJ2xvZGFzaC9mbGF0dGVuRGVlcCc7XG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gvdW5pcSc7XG5pbXBvcnQgbWVyZ2VBbGxPZiBmcm9tICdqc29uLXNjaGVtYS1tZXJnZS1hbGxvZic7XG5pbXBvcnQgeyBBRERJVElPTkFMX1BST1BFUlRJRVNfS0VZLCBBRERJVElPTkFMX1BST1BFUlRZX0ZMQUcsIEFMTF9PRl9LRVksIEFOWV9PRl9LRVksIERFUEVOREVOQ0lFU19LRVksIElGX0tFWSwgT05FX09GX0tFWSwgUkVGX0tFWSwgUFJPUEVSVElFU19LRVksIElURU1TX0tFWSwgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IGZpbmRTY2hlbWFEZWZpbml0aW9uLCB7IHNwbGl0S2V5RWxlbWVudEZyb21PYmplY3QgfSBmcm9tICcuLi9maW5kU2NoZW1hRGVmaW5pdGlvbic7XG5pbXBvcnQgZ2V0RGlzY3JpbWluYXRvckZpZWxkRnJvbVNjaGVtYSBmcm9tICcuLi9nZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hJztcbmltcG9ydCBndWVzc1R5cGUgZnJvbSAnLi4vZ3Vlc3NUeXBlJztcbmltcG9ydCBpc09iamVjdCBmcm9tICcuLi9pc09iamVjdCc7XG5pbXBvcnQgbWVyZ2VTY2hlbWFzIGZyb20gJy4uL21lcmdlU2NoZW1hcyc7XG5pbXBvcnQgZ2V0Rmlyc3RNYXRjaGluZ09wdGlvbiBmcm9tICcuL2dldEZpcnN0TWF0Y2hpbmdPcHRpb24nO1xuLyoqIFJldHJpZXZlcyBhbiBleHBhbmRlZCBzY2hlbWEgdGhhdCBoYXMgaGFkIGFsbCBvZiBpdHMgY29uZGl0aW9ucywgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLCByZWZlcmVuY2VzIGFuZCBkZXBlbmRlbmNpZXNcbiAqIHJlc29sdmVkIGFuZCBtZXJnZWQgaW50byB0aGUgYHNjaGVtYWAgZ2l2ZW4gYSBgdmFsaWRhdG9yYCwgYHJvb3RTY2hlbWFgIGFuZCBgcmF3Rm9ybURhdGFgIHRoYXQgaXMgdXNlZCB0byBkbyB0aGVcbiAqIHBvdGVudGlhbGx5IHJlY3Vyc2l2ZSByZXNvbHV0aW9uLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHJldHJpZXZpbmcgYSBzY2hlbWEgaXMgZGVzaXJlZFxuICogQHBhcmFtIFtyb290U2NoZW1hPXt9XSAtIFRoZSByb290IHNjaGVtYSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIFtyYXdGb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBzY2hlbWEgaGF2aW5nIGl0cyBjb25kaXRpb25zLCBhZGRpdGlvbmFsIHByb3BlcnRpZXMsIHJlZmVyZW5jZXMgYW5kIGRlcGVuZGVuY2llcyByZXNvbHZlZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZXRyaWV2ZVNjaGVtYSh2YWxpZGF0b3IsIHNjaGVtYSwgcm9vdFNjaGVtYSA9IHt9LCByYXdGb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICByZXR1cm4gcmV0cmlldmVTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIHNjaGVtYSwgcm9vdFNjaGVtYSwgcmF3Rm9ybURhdGEsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZilbMF07XG59XG4vKiogUmVzb2x2ZXMgYSBjb25kaXRpb25hbCBibG9jayAoaWYvZWxzZS90aGVuKSBieSByZW1vdmluZyB0aGUgY29uZGl0aW9uIGFuZCBtZXJnaW5nIHRoZSBhcHByb3ByaWF0ZSBjb25kaXRpb25hbCBicmFuY2hcbiAqIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHNjaGVtYS4gSWYgYGV4cGFuZEFsbEJyYW5jaGVzYCBpcyB0cnVlLCB0aGVuIHRoZSBgcmV0cmlldmVTY2hlbWFJbnRlcmFsKClgIHJlc3VsdHMgZm9yIGJvdGhcbiAqIGNvbmRpdGlvbnMgd2lsbCBiZSByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCBpcyB1c2VkIHRvIGRldGVjdCB2YWxpZCBzY2hlbWEgY29uZGl0aW9uc1xuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHJlc29sdmluZyBhIGNvbmRpdGlvbiBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IHNjaGVtYSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIGV4cGFuZEFsbEJyYW5jaGVzIC0gRmxhZywgaWYgdHJ1ZSwgd2lsbCByZXR1cm4gYWxsIHBvc3NpYmxlIGJyYW5jaGVzIG9mIGNvbmRpdGlvbnMsIGFueS9vbmVPZiBhbmRcbiAqICAgICAgICAgIGRlcGVuZGVuY2llcyBhcyBhIGxpc3Qgb2Ygc2NoZW1hc1xuICogQHBhcmFtIHJlY3Vyc2VMaXN0IC0gVGhlIGxpc3Qgb2YgcmVjdXJzaXZlIHJlZmVyZW5jZXMgYWxyZWFkeSBwcm9jZXNzZWRcbiAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBBIGxpc3Qgb2Ygc2NoZW1hcyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBjb25kaXRpb25zIHJlc29sdmVkLCBwb3NzaWJseSB3aXRoIGFsbCBicmFuY2hlcyBleHBhbmRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUNvbmRpdGlvbih2YWxpZGF0b3IsIHNjaGVtYSwgcm9vdFNjaGVtYSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBmb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICBjb25zdCB7IGlmOiBleHByZXNzaW9uLCB0aGVuLCBlbHNlOiBvdGhlcndpc2UsIC4uLnJlc29sdmVkU2NoZW1hTGVzc0NvbmRpdGlvbmFsIH0gPSBzY2hlbWE7XG4gICAgY29uc3QgY29uZGl0aW9uVmFsdWUgPSB2YWxpZGF0b3IuaXNWYWxpZChleHByZXNzaW9uLCBmb3JtRGF0YSB8fCB7fSwgcm9vdFNjaGVtYSk7XG4gICAgbGV0IHJlc29sdmVkU2NoZW1hcyA9IFtyZXNvbHZlZFNjaGVtYUxlc3NDb25kaXRpb25hbF07XG4gICAgbGV0IHNjaGVtYXMgPSBbXTtcbiAgICBpZiAoZXhwYW5kQWxsQnJhbmNoZXMpIHtcbiAgICAgICAgaWYgKHRoZW4gJiYgdHlwZW9mIHRoZW4gIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgc2NoZW1hcyA9IHNjaGVtYXMuY29uY2F0KHJldHJpZXZlU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCB0aGVuLCByb290U2NoZW1hLCBmb3JtRGF0YSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvdGhlcndpc2UgJiYgdHlwZW9mIG90aGVyd2lzZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICBzY2hlbWFzID0gc2NoZW1hcy5jb25jYXQocmV0cmlldmVTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIG90aGVyd2lzZSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgY29uZGl0aW9uYWxTY2hlbWEgPSBjb25kaXRpb25WYWx1ZSA/IHRoZW4gOiBvdGhlcndpc2U7XG4gICAgICAgIGlmIChjb25kaXRpb25hbFNjaGVtYSAmJiB0eXBlb2YgY29uZGl0aW9uYWxTY2hlbWEgIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgc2NoZW1hcyA9IHNjaGVtYXMuY29uY2F0KHJldHJpZXZlU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBjb25kaXRpb25hbFNjaGVtYSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoc2NoZW1hcy5sZW5ndGgpIHtcbiAgICAgICAgcmVzb2x2ZWRTY2hlbWFzID0gc2NoZW1hcy5tYXAoKHMpID0+IG1lcmdlU2NoZW1hcyhyZXNvbHZlZFNjaGVtYUxlc3NDb25kaXRpb25hbCwgcykpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzb2x2ZWRTY2hlbWFzLmZsYXRNYXAoKHMpID0+IHJldHJpZXZlU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBzLCByb290U2NoZW1hLCBmb3JtRGF0YSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikpO1xufVxuLyoqIEdpdmVuIGEgbGlzdCBvZiBsaXN0cyBvZiBhbGxPZiwgYW55T2Ygb3Igb25lT2YgdmFsdWVzLCBjcmVhdGUgYSBsaXN0IG9mIGxpc3RzIG9mIGFsbCBwZXJtdXRhdGlvbnMgb2YgdGhlIHZhbHVlcy4gVGhlXG4gKiBgbGlzdE9mTGlzdHNgIGlzIGV4cGVjdGVkIHRvIGJlIGFsbCByZXNvbHZlZCB2YWx1ZXMgb2YgdGhlIDFzdC4uLm50aCBzY2hlbWFzIHdpdGhpbiBhbiBgYWxsT2ZgLCBgYW55T2ZgIG9yIGBvbmVPZmAuXG4gKiBGcm9tIHRob3NlIGxpc3RzLCBidWlsZCBhIG1hdHJpeCBmb3IgZWFjaCBgeHh4T2ZgIHdoZXJlIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgc2NoZW1hIGZvciBhIHJvdyBpbiB0aGUgbGlzdCBvZiBsaXN0cy5cbiAqXG4gKiBGb3IgZXhhbXBsZTpcbiAqIC0gSWYgdGhlcmUgYXJlIHRocmVlIHh4eE9mIHJvd3MgKEEsIEIsIEMpIGFuZCB0aGV5IGhhdmUgYmVlbiByZXNvbHZlZCBzdWNoIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgQSwgdHdvIEIgYW5kIHRocmVlXG4gKiAgIEMgc2NoZW1hcyB0aGVuOlxuICogICAtIFRoZSBwZXJtdXRhdGlvbiBmb3IgdGhlIGZpcnN0IHJvdyBpcyBgW1tBXV1gXG4gKiAgIC0gVGhlIHBlcm11dGF0aW9ucyBmb3IgdGhlIHNlY29uZCByb3cgYXJlIGBbW0EsQjFdLCBbQSxCMl1dYFxuICogICAtIFRoZSBwZXJtdXRhdGlvbnMgZm9yIHRoZSB0aGlyZCByb3cgYXJlIGBbW0EsQjEsQzFdLCBbQSxCMSxDMl0sIFtBLEIxLEMzXSwgW0EsQjIsQzFdLCBbQSxCMixDMl0sIFtBLEIyLEMzXV1gXG4gKlxuICogQHBhcmFtIGxpc3RPZkxpc3RzIC0gVGhlIGxpc3Qgb2YgbGlzdHMgb2YgZWxlbWVudHMgdGhhdCByZXByZXNlbnQgdGhlIGFsbE9mLCBhbnlPZiBvciBvbmVPZiByZXNvbHZlZCB2YWx1ZXMgaW4gb3JkZXJcbiAqIEByZXR1cm5zIC0gVGhlIGxpc3Qgb2YgYWxsIHBlcm11dGF0aW9ucyBvZiBzY2hlbWFzIGZvciBhIHNldCBvZiBgeHh4T2Zgc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsUGVybXV0YXRpb25zT2ZYeHhPZihsaXN0T2ZMaXN0cykge1xuICAgIGNvbnN0IGFsbFBlcm11dGF0aW9ucyA9IGxpc3RPZkxpc3RzLnJlZHVjZSgocGVybXV0YXRpb25zLCBsaXN0KSA9PiB7XG4gICAgICAgIC8vIFdoZW4gdGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUgc2V0IG9mIHNjaGVtYXMgZm9yIGEgcm93LCBkdXBsaWNhdGUgdGhlIHNldCBvZiBwZXJtdXRhdGlvbnMgYW5kIGFkZCBpbiB0aGUgdmFsdWVzXG4gICAgICAgIGlmIChsaXN0Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBsaXN0LmZsYXRNYXAoKGVsZW1lbnQpID0+IHRpbWVzKHBlcm11dGF0aW9ucy5sZW5ndGgsIChpKSA9PiBbLi4ucGVybXV0YXRpb25zW2ldXS5jb25jYXQoZWxlbWVudCkpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBPdGhlcndpc2UganVzdCBwdXNoIGluIHRoZSBzaW5nbGUgdmFsdWUgaW50byB0aGUgY3VycmVudCBzZXQgb2YgcGVybXV0YXRpb25zXG4gICAgICAgIHBlcm11dGF0aW9ucy5mb3JFYWNoKChwZXJtdXRhdGlvbikgPT4gcGVybXV0YXRpb24ucHVzaChsaXN0WzBdKSk7XG4gICAgICAgIHJldHVybiBwZXJtdXRhdGlvbnM7XG4gICAgfSwgW1tdXSAvLyBTdGFydCB3aXRoIGFuIGVtcHR5IGxpc3RcbiAgICApO1xuICAgIHJldHVybiBhbGxQZXJtdXRhdGlvbnM7XG59XG4vKiogUmVzb2x2ZXMgcmVmZXJlbmNlcyBhbmQgZGVwZW5kZW5jaWVzIHdpdGhpbiBhIHNjaGVtYSBhbmQgaXRzICdhbGxPZicgY2hpbGRyZW4uIFBhc3NlcyB0aGUgYGV4cGFuZEFsbEJyYW5jaGVzYCBmbGFnXG4gKiBkb3duIHRvIHRoZSBgcmV0cmlldmVTY2hlbWFJbnRlcm5hbCgpYCwgYHJlc29sdmVSZWZlcmVuY2UoKWAgYW5kIGByZXNvbHZlRGVwZW5kZW5jaWVzKClgIGhlbHBlciBjYWxscy4gSWZcbiAqIGBleHBhbmRBbGxCcmFuY2hlc2AgaXMgdHJ1ZSwgdGhlbiBhbGwgcG9zc2libGUgZGVwZW5kZW5jaWVzIGFuZC9vciBhbGxPZiBicmFuY2hlcyBhcmUgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggcmVzb2x2aW5nIGEgc2NoZW1hIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gZXhwYW5kQWxsQnJhbmNoZXMgLSBGbGFnLCBpZiB0cnVlLCB3aWxsIHJldHVybiBhbGwgcG9zc2libGUgYnJhbmNoZXMgb2YgY29uZGl0aW9ucywgYW55L29uZU9mIGFuZCBkZXBlbmRlbmNpZXNcbiAqICAgICAgICAgIGFzIGEgbGlzdCBvZiBzY2hlbWFzXG4gKiBAcGFyYW0gcmVjdXJzZUxpc3QgLSBUaGUgbGlzdCBvZiByZWN1cnNpdmUgcmVmZXJlbmNlcyBhbHJlYWR5IHByb2Nlc3NlZFxuICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBsaXN0IG9mIHNjaGVtYXMgaGF2aW5nIGl0cyByZWZlcmVuY2VzLCBkZXBlbmRlbmNpZXMgYW5kIGFsbE9mIHNjaGVtYXMgcmVzb2x2ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgY29uc3QgdXBkYXRlZFNjaGVtYXMgPSByZXNvbHZlUmVmZXJlbmNlKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGZvcm1EYXRhKTtcbiAgICBpZiAodXBkYXRlZFNjaGVtYXMubGVuZ3RoID4gMSB8fCB1cGRhdGVkU2NoZW1hc1swXSAhPT0gc2NoZW1hKSB7XG4gICAgICAgIC8vIHJldHVybiB0aGUgdXBkYXRlZFNjaGVtYXMgYXJyYXkgaWYgaXQgaGFzIGVpdGhlciBtdWx0aXBsZSBzY2hlbWFzIHdpdGhpbiBpdFxuICAgICAgICAvLyBPUiB0aGUgZmlyc3Qgc2NoZW1hIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgb3JpZ2luYWwgc2NoZW1hXG4gICAgICAgIHJldHVybiB1cGRhdGVkU2NoZW1hcztcbiAgICB9XG4gICAgaWYgKERFUEVOREVOQ0lFU19LRVkgaW4gc2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkU2NoZW1hcyA9IHJlc29sdmVEZXBlbmRlbmNpZXModmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEpO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZWRTY2hlbWFzLmZsYXRNYXAoKHMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXRyaWV2ZVNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgcywgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYgKEFMTF9PRl9LRVkgaW4gc2NoZW1hICYmIEFycmF5LmlzQXJyYXkoc2NoZW1hLmFsbE9mKSkge1xuICAgICAgICBjb25zdCBhbGxPZlNjaGVtYUVsZW1lbnRzID0gc2NoZW1hLmFsbE9mLm1hcCgoYWxsT2ZTdWJzY2hlbWEpID0+IHJldHJpZXZlU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBhbGxPZlN1YnNjaGVtYSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpKTtcbiAgICAgICAgY29uc3QgYWxsUGVybXV0YXRpb25zID0gZ2V0QWxsUGVybXV0YXRpb25zT2ZYeHhPZihhbGxPZlNjaGVtYUVsZW1lbnRzKTtcbiAgICAgICAgcmV0dXJuIGFsbFBlcm11dGF0aW9ucy5tYXAoKHBlcm11dGF0aW9uKSA9PiAoeyAuLi5zY2hlbWEsIGFsbE9mOiBwZXJtdXRhdGlvbiB9KSk7XG4gICAgfVxuICAgIC8vIE5vICRyZWYgb3IgZGVwZW5kZW5jaWVzIG9yIGFsbE9mIGF0dHJpYnV0ZSB3YXMgZm91bmQsIHJldHVybmluZyB0aGUgb3JpZ2luYWwgc2NoZW1hLlxuICAgIHJldHVybiBbc2NoZW1hXTtcbn1cbi8qKiBSZXNvbHZlcyBhbGwgcmVmZXJlbmNlcyB3aXRoaW4gYSBzY2hlbWEgYW5kIHRoZW4gcmV0dXJucyB0aGUgYHJldHJpZXZlU2NoZW1hSW50ZXJuYWwoKWAgaWYgdGhlIHJlc29sdmVkIHNjaGVtYSBpc1xuICogYWN0dWFsbHkgZGlmZmVyZW50IHRoYW4gdGhlIG9yaWdpbmFsLiBQYXNzZXMgdGhlIGBleHBhbmRBbGxCcmFuY2hlc2AgZmxhZyBkb3duIHRvIHRoZSBgcmV0cmlldmVTY2hlbWFJbnRlcm5hbCgpYFxuICogaGVscGVyIGNhbGwuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggcmVzb2x2aW5nIGEgcmVmZXJlbmNlIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gZXhwYW5kQWxsQnJhbmNoZXMgLSBGbGFnLCBpZiB0cnVlLCB3aWxsIHJldHVybiBhbGwgcG9zc2libGUgYnJhbmNoZXMgb2YgY29uZGl0aW9ucywgYW55L29uZU9mIGFuZCBkZXBlbmRlbmNpZXNcbiAqICAgICAgICAgIGFzIGEgbGlzdCBvZiBzY2hlbWFzXG4gKiBAcGFyYW0gcmVjdXJzZUxpc3QgLSBUaGUgbGlzdCBvZiByZWN1cnNpdmUgcmVmZXJlbmNlcyBhbHJlYWR5IHByb2Nlc3NlZFxuICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBsaXN0IHNjaGVtYXMgcmV0cmlldmVkIGFmdGVyIGhhdmluZyBhbGwgcmVmZXJlbmNlcyByZXNvbHZlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVJlZmVyZW5jZSh2YWxpZGF0b3IsIHNjaGVtYSwgcm9vdFNjaGVtYSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBmb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICBjb25zdCB1cGRhdGVkU2NoZW1hID0gcmVzb2x2ZUFsbFJlZmVyZW5jZXMoc2NoZW1hLCByb290U2NoZW1hLCByZWN1cnNlTGlzdCk7XG4gICAgaWYgKHVwZGF0ZWRTY2hlbWEgIT09IHNjaGVtYSkge1xuICAgICAgICAvLyBPbmx5IGNhbGwgdGhpcyBpZiB0aGUgc2NoZW1hIHdhcyBhY3R1YWxseSBjaGFuZ2VkIGJ5IHRoZSBgcmVzb2x2ZUFsbFJlZmVyZW5jZXMoKWAgZnVuY3Rpb25cbiAgICAgICAgcmV0dXJuIHJldHJpZXZlU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCB1cGRhdGVkU2NoZW1hLCByb290U2NoZW1hLCBmb3JtRGF0YSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgfVxuICAgIHJldHVybiBbc2NoZW1hXTtcbn1cbi8qKiBSZXNvbHZlcyBhbGwgcmVmZXJlbmNlcyB3aXRoaW4gdGhlIHNjaGVtYSBpdHNlbGYgYXMgd2VsbCBhcyBhbnkgb2YgaXRzIHByb3BlcnRpZXMgYW5kIGFycmF5IGl0ZW1zLlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCByZXNvbHZpbmcgYWxsIHJlZmVyZW5jZXMgaXMgZGVzaXJlZFxuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSByZWN1cnNlTGlzdCAtIExpc3Qgb2YgJHJlZnMgYWxyZWFkeSByZXNvbHZlZCB0byBwcmV2ZW50IHJlY3Vyc2lvblxuICogQHJldHVybnMgLSBnaXZlbiBzY2hlbWEgd2lsbCBhbGwgcmVmZXJlbmNlcyByZXNvbHZlZCBvciB0aGUgb3JpZ2luYWwgc2NoZW1hIGlmIG5vIGludGVybmFsIGAkcmVmc2Agd2VyZSByZXNvbHZlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFsbFJlZmVyZW5jZXMoc2NoZW1hLCByb290U2NoZW1hLCByZWN1cnNlTGlzdCkge1xuICAgIGlmICghaXNPYmplY3Qoc2NoZW1hKSkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cbiAgICBsZXQgcmVzb2x2ZWRTY2hlbWEgPSBzY2hlbWE7XG4gICAgLy8gcmVzb2x2ZSB0b3AgbGV2ZWwgcmVmXG4gICAgaWYgKFJFRl9LRVkgaW4gcmVzb2x2ZWRTY2hlbWEpIHtcbiAgICAgICAgY29uc3QgeyAkcmVmLCAuLi5sb2NhbFNjaGVtYSB9ID0gcmVzb2x2ZWRTY2hlbWE7XG4gICAgICAgIC8vIENoZWNrIGZvciBhIHJlY3Vyc2l2ZSByZWZlcmVuY2UgYW5kIHN0b3AgdGhlIGxvb3BcbiAgICAgICAgaWYgKHJlY3Vyc2VMaXN0LmluY2x1ZGVzKCRyZWYpKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRTY2hlbWE7XG4gICAgICAgIH1cbiAgICAgICAgcmVjdXJzZUxpc3QucHVzaCgkcmVmKTtcbiAgICAgICAgLy8gUmV0cmlldmUgdGhlIHJlZmVyZW5jZWQgc2NoZW1hIGRlZmluaXRpb24uXG4gICAgICAgIGNvbnN0IHJlZlNjaGVtYSA9IGZpbmRTY2hlbWFEZWZpbml0aW9uKCRyZWYsIHJvb3RTY2hlbWEpO1xuICAgICAgICByZXNvbHZlZFNjaGVtYSA9IHsgLi4ucmVmU2NoZW1hLCAuLi5sb2NhbFNjaGVtYSB9O1xuICAgIH1cbiAgICBpZiAoUFJPUEVSVElFU19LRVkgaW4gcmVzb2x2ZWRTY2hlbWEpIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW5MaXN0cyA9IFtdO1xuICAgICAgICBjb25zdCB1cGRhdGVkUHJvcHMgPSB0cmFuc2Zvcm0ocmVzb2x2ZWRTY2hlbWFbUFJPUEVSVElFU19LRVldLCAocmVzdWx0LCB2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZExpc3QgPSBbLi4ucmVjdXJzZUxpc3RdO1xuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSByZXNvbHZlQWxsUmVmZXJlbmNlcyh2YWx1ZSwgcm9vdFNjaGVtYSwgY2hpbGRMaXN0KTtcbiAgICAgICAgICAgIGNoaWxkcmVuTGlzdHMucHVzaChjaGlsZExpc3QpO1xuICAgICAgICB9LCB7fSk7XG4gICAgICAgIG1lcmdlKHJlY3Vyc2VMaXN0LCB1bmlxKGZsYXR0ZW5EZWVwKGNoaWxkcmVuTGlzdHMpKSk7XG4gICAgICAgIHJlc29sdmVkU2NoZW1hID0geyAuLi5yZXNvbHZlZFNjaGVtYSwgW1BST1BFUlRJRVNfS0VZXTogdXBkYXRlZFByb3BzIH07XG4gICAgfVxuICAgIGlmIChJVEVNU19LRVkgaW4gcmVzb2x2ZWRTY2hlbWEgJiZcbiAgICAgICAgIUFycmF5LmlzQXJyYXkocmVzb2x2ZWRTY2hlbWEuaXRlbXMpICYmXG4gICAgICAgIHR5cGVvZiByZXNvbHZlZFNjaGVtYS5pdGVtcyAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHJlc29sdmVkU2NoZW1hID0ge1xuICAgICAgICAgICAgLi4ucmVzb2x2ZWRTY2hlbWEsXG4gICAgICAgICAgICBpdGVtczogcmVzb2x2ZUFsbFJlZmVyZW5jZXMocmVzb2x2ZWRTY2hlbWEuaXRlbXMsIHJvb3RTY2hlbWEsIHJlY3Vyc2VMaXN0KSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGlzRXF1YWwoc2NoZW1hLCByZXNvbHZlZFNjaGVtYSkgPyBzY2hlbWEgOiByZXNvbHZlZFNjaGVtYTtcbn1cbi8qKiBDcmVhdGVzIG5ldyAncHJvcGVydGllcycgaXRlbXMgZm9yIGVhY2gga2V5IGluIHRoZSBgZm9ybURhdGFgXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gdGhlU2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIGV4aXN0aW5nIGFkZGl0aW9uYWwgcHJvcGVydGllcyBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gW3Jvb3RTY2hlbWFdIC0gVGhlIHJvb3Qgc2NoZW1hLCB1c2VkIHRvIHByaW1hcmlseSB0byBsb29rIHVwIGAkcmVmYHMgKiBAcGFyYW0gdmFsaWRhdG9yXG4gKiBAcGFyYW0gW2FGb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSB1cGRhdGVkIHNjaGVtYSB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllcyBzdHViYmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHViRXhpc3RpbmdBZGRpdGlvbmFsUHJvcGVydGllcyh2YWxpZGF0b3IsIHRoZVNjaGVtYSwgcm9vdFNjaGVtYSwgYUZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIC8vIENsb25lIHRoZSBzY2hlbWEgc28gdGhhdCB3ZSBkb24ndCBydWluIHRoZSBjb25zdW1lcidzIG9yaWdpbmFsXG4gICAgY29uc3Qgc2NoZW1hID0ge1xuICAgICAgICAuLi50aGVTY2hlbWEsXG4gICAgICAgIHByb3BlcnRpZXM6IHsgLi4udGhlU2NoZW1hLnByb3BlcnRpZXMgfSxcbiAgICB9O1xuICAgIC8vIG1ha2Ugc3VyZSBmb3JtRGF0YSBpcyBhbiBvYmplY3RcbiAgICBjb25zdCBmb3JtRGF0YSA9IGFGb3JtRGF0YSAmJiBpc09iamVjdChhRm9ybURhdGEpID8gYUZvcm1EYXRhIDoge307XG4gICAgT2JqZWN0LmtleXMoZm9ybURhdGEpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpZiAoa2V5IGluIHNjaGVtYS5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAvLyBObyBuZWVkIHRvIHN0dWIsIG91ciBzY2hlbWEgYWxyZWFkeSBoYXMgdGhlIHByb3BlcnR5XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGFkZGl0aW9uYWxQcm9wZXJ0aWVzID0ge307XG4gICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGlmIChSRUZfS0VZIGluIHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzID0gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCB7ICRyZWY6IGdldChzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMsIFtSRUZfS0VZXSkgfSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCd0eXBlJyBpbiBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllcyA9IHsgLi4uc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChBTllfT0ZfS0VZIGluIHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyB8fCBPTkVfT0ZfS0VZIGluIHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzID0ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgLi4uc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllcyA9IHsgdHlwZTogZ3Vlc3NUeXBlKGdldChmb3JtRGF0YSwgW2tleV0pKSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXMgPSB7IHR5cGU6IGd1ZXNzVHlwZShnZXQoZm9ybURhdGEsIFtrZXldKSkgfTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGUgdHlwZSBvZiBvdXIgbmV3IGtleSBzaG91bGQgbWF0Y2ggdGhlIGFkZGl0aW9uYWxQcm9wZXJ0aWVzIHZhbHVlO1xuICAgICAgICBzY2hlbWEucHJvcGVydGllc1trZXldID0gYWRkaXRpb25hbFByb3BlcnRpZXM7XG4gICAgICAgIC8vIFNldCBvdXIgYWRkaXRpb25hbCBwcm9wZXJ0eSBmbGFnIHNvIHdlIGtub3cgaXQgd2FzIGR5bmFtaWNhbGx5IGFkZGVkXG4gICAgICAgIHNldChzY2hlbWEucHJvcGVydGllcywgW2tleSwgQURESVRJT05BTF9QUk9QRVJUWV9GTEFHXSwgdHJ1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHNjaGVtYTtcbn1cbi8qKiBJbnRlcm5hbCBoYW5kbGVyIHRoYXQgcmV0cmlldmVzIGFuIGV4cGFuZGVkIHNjaGVtYSB0aGF0IGhhcyBoYWQgYWxsIG9mIGl0cyBjb25kaXRpb25zLCBhZGRpdGlvbmFsIHByb3BlcnRpZXMsXG4gKiByZWZlcmVuY2VzIGFuZCBkZXBlbmRlbmNpZXMgcmVzb2x2ZWQgYW5kIG1lcmdlZCBpbnRvIHRoZSBgc2NoZW1hYCBnaXZlbiBhIGB2YWxpZGF0b3JgLCBgcm9vdFNjaGVtYWAgYW5kIGByYXdGb3JtRGF0YWBcbiAqIHRoYXQgaXMgdXNlZCB0byBkbyB0aGUgcG90ZW50aWFsbHkgcmVjdXJzaXZlIHJlc29sdXRpb24uIElmIGBleHBhbmRBbGxCcmFuY2hlc2AgaXMgdHJ1ZSwgdGhlbiBhbGwgcG9zc2libGUgYnJhbmNoZXNcbiAqIG9mIHRoZSBzY2hlbWEgYW5kIGl0cyByZWZlcmVuY2VzLCBjb25kaXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYXJlIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHJldHJpZXZpbmcgYSBzY2hlbWEgaXMgZGVzaXJlZFxuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBbcmF3Rm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbZXhwYW5kQWxsQnJhbmNoZXM9ZmFsc2VdIC0gRmxhZywgaWYgdHJ1ZSwgd2lsbCByZXR1cm4gYWxsIHBvc3NpYmxlIGJyYW5jaGVzIG9mIGNvbmRpdGlvbnMsIGFueS9vbmVPZiBhbmRcbiAqICAgICAgICAgIGRlcGVuZGVuY2llcyBhcyBhIGxpc3Qgb2Ygc2NoZW1hc1xuICogQHBhcmFtIFtyZWN1cnNlTGlzdD1bXV0gLSBUaGUgb3B0aW9uYWwsIGxpc3Qgb2YgcmVjdXJzaXZlIHJlZmVyZW5jZXMgYWxyZWFkeSBwcm9jZXNzZWRcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgc2NoZW1hKHMpIHJlc3VsdGluZyBmcm9tIGhhdmluZyBpdHMgY29uZGl0aW9ucywgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLCByZWZlcmVuY2VzIGFuZCBkZXBlbmRlbmNpZXNcbiAqICAgICAgICAgIHJlc29sdmVkLiBNdWx0aXBsZSBzY2hlbWFzIG1heSBiZSByZXR1cm5lZCBpZiBgZXhwYW5kQWxsQnJhbmNoZXNgIGlzIHRydWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXRyaWV2ZVNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCByYXdGb3JtRGF0YSwgZXhwYW5kQWxsQnJhbmNoZXMgPSBmYWxzZSwgcmVjdXJzZUxpc3QgPSBbXSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICBpZiAoIWlzT2JqZWN0KHNjaGVtYSkpIHtcbiAgICAgICAgcmV0dXJuIFt7fV07XG4gICAgfVxuICAgIGNvbnN0IHJlc29sdmVkU2NoZW1hcyA9IHJlc29sdmVTY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgcmF3Rm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICByZXR1cm4gcmVzb2x2ZWRTY2hlbWFzLmZsYXRNYXAoKHMpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBsZXQgcmVzb2x2ZWRTY2hlbWEgPSBzO1xuICAgICAgICBpZiAoSUZfS0VZIGluIHJlc29sdmVkU2NoZW1hKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZUNvbmRpdGlvbih2YWxpZGF0b3IsIHJlc29sdmVkU2NoZW1hLCByb290U2NoZW1hLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIHJhd0Zvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFMTF9PRl9LRVkgaW4gcmVzb2x2ZWRTY2hlbWEpIHtcbiAgICAgICAgICAgIC8vIHJlc29sdmUgYWxsT2Ygc2NoZW1hc1xuICAgICAgICAgICAgaWYgKGV4cGFuZEFsbEJyYW5jaGVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBhbGxPZiwgLi4ucmVzdE9mU2NoZW1hIH0gPSByZXNvbHZlZFNjaGVtYTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmFsbE9mLCByZXN0T2ZTY2hlbWFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCB3aXRoQ29udGFpbnNTY2hlbWFzID0gW107XG4gICAgICAgICAgICAgICAgY29uc3Qgd2l0aG91dENvbnRhaW5zU2NoZW1hcyA9IFtdO1xuICAgICAgICAgICAgICAgIChfYSA9IHJlc29sdmVkU2NoZW1hLmFsbE9mKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9yRWFjaCgocykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHMgPT09ICdvYmplY3QnICYmIHMuY29udGFpbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhDb250YWluc1NjaGVtYXMucHVzaChzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXRDb250YWluc1NjaGVtYXMucHVzaChzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICh3aXRoQ29udGFpbnNTY2hlbWFzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFNjaGVtYSA9IHsgLi4ucmVzb2x2ZWRTY2hlbWEsIGFsbE9mOiB3aXRob3V0Q29udGFpbnNTY2hlbWFzIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc29sdmVkU2NoZW1hID0gZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZcbiAgICAgICAgICAgICAgICAgICAgPyBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZihyZXNvbHZlZFNjaGVtYSlcbiAgICAgICAgICAgICAgICAgICAgOiBtZXJnZUFsbE9mKHJlc29sdmVkU2NoZW1hLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWVwOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHdpdGhDb250YWluc1NjaGVtYXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkU2NoZW1hLmFsbE9mID0gd2l0aENvbnRhaW5zU2NoZW1hcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignY291bGQgbm90IG1lcmdlIHN1YnNjaGVtYXMgaW4gYWxsT2Y6XFxuJywgZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBhbGxPZiwgLi4ucmVzb2x2ZWRTY2hlbWFXaXRob3V0QWxsT2YgfSA9IHJlc29sdmVkU2NoZW1hO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlZFNjaGVtYVdpdGhvdXRBbGxPZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBoYXNBZGRpdGlvbmFsUHJvcGVydGllcyA9IEFERElUSU9OQUxfUFJPUEVSVElFU19LRVkgaW4gcmVzb2x2ZWRTY2hlbWEgJiYgcmVzb2x2ZWRTY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMgIT09IGZhbHNlO1xuICAgICAgICBpZiAoaGFzQWRkaXRpb25hbFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHViRXhpc3RpbmdBZGRpdGlvbmFsUHJvcGVydGllcyh2YWxpZGF0b3IsIHJlc29sdmVkU2NoZW1hLCByb290U2NoZW1hLCByYXdGb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNvbHZlZFNjaGVtYTtcbiAgICB9KTtcbn1cbi8qKiBSZXNvbHZlcyBhbiBgYW55T2ZgIG9yIGBvbmVPZmAgd2l0aGluIGEgc2NoZW1hIChpZiBwcmVzZW50KSB0byB0aGUgbGlzdCBvZiBzY2hlbWFzIHJldHVybmVkIGZyb21cbiAqIGByZXRyaWV2ZVNjaGVtYUludGVybmFsKClgIGZvciB0aGUgYmVzdCBtYXRjaGluZyBvcHRpb24uIElmIGBleHBhbmRBbGxCcmFuY2hlc2AgaXMgdHJ1ZSwgdGhlbiBhIGxpc3Qgb2Ygc2NoZW1hcyBmb3IgQUxMXG4gKiBvcHRpb25zIGFyZSByZXRyaWV2ZWQgYW5kIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHJldHJpZXZpbmcgYSBzY2hlbWEgaXMgZGVzaXJlZFxuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBleHBhbmRBbGxCcmFuY2hlcyAtIEZsYWcsIGlmIHRydWUsIHdpbGwgcmV0dXJuIGFsbCBwb3NzaWJsZSBicmFuY2hlcyBvZiBjb25kaXRpb25zLCBhbnkvb25lT2YgYW5kIGRlcGVuZGVuY2llc1xuICogICAgICAgICAgYXMgYSBsaXN0IG9mIHNjaGVtYXNcbiAqIEBwYXJhbSBbcmF3Rm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWEsIGRlZmF1bHRzIHRvIGFuIGVtcHR5IG9iamVjdFxuICogQHJldHVybnMgLSBFaXRoZXIgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgYmVzdCBtYXRjaGluZyBvcHRpb24gb3IgYWxsIG9wdGlvbnMgaWYgYGV4cGFuZEFsbEJyYW5jaGVzYCBpcyB0cnVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQW55T3JPbmVPZlNjaGVtYXModmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCByYXdGb3JtRGF0YSkge1xuICAgIGxldCBhbnlPck9uZU9mO1xuICAgIGNvbnN0IHsgb25lT2YsIGFueU9mLCAuLi5yZW1haW5pbmcgfSA9IHNjaGVtYTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvbmVPZikpIHtcbiAgICAgICAgYW55T3JPbmVPZiA9IG9uZU9mO1xuICAgIH1cbiAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFueU9mKSkge1xuICAgICAgICBhbnlPck9uZU9mID0gYW55T2Y7XG4gICAgfVxuICAgIGlmIChhbnlPck9uZU9mKSB7XG4gICAgICAgIC8vIEVuc3VyZSB0aGF0IGR1cmluZyBleHBhbmQgYWxsIGJyYW5jaGVzIHdlIHBhc3MgYW4gb2JqZWN0IHJhdGhlciB0aGFuIHVuZGVmaW5lZCBzbyB0aGF0IGFsbCBvcHRpb25zIGFyZSBpbnRlcnJvZ2F0ZWRcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSByYXdGb3JtRGF0YSA9PT0gdW5kZWZpbmVkICYmIGV4cGFuZEFsbEJyYW5jaGVzID8ge30gOiByYXdGb3JtRGF0YTtcbiAgICAgICAgY29uc3QgZGlzY3JpbWluYXRvciA9IGdldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEoc2NoZW1hKTtcbiAgICAgICAgYW55T3JPbmVPZiA9IGFueU9yT25lT2YubWFwKChzKSA9PiB7XG4gICAgICAgICAgICAvLyBEdWUgdG8gYW55T2Yvb25lT2YgcG9zc2libHkgdXNpbmcgdGhlIHNhbWUgJHJlZiB3ZSBhbHdheXMgcGFzcyBhIGZyZXNoIHJlY3Vyc2UgbGlzdCBhcnJheSBzbyB0aGF0IGVhY2ggb3B0aW9uXG4gICAgICAgICAgICAvLyBjYW4gcmVzb2x2ZSByZWN1cnNpdmUgcmVmZXJlbmNlcyBpbmRlcGVuZGVudGx5XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZUFsbFJlZmVyZW5jZXMocywgcm9vdFNjaGVtYSwgW10pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gQ2FsbCB0aGlzIHRvIHRyaWdnZXIgdGhlIHNldCBvZiBpc1ZhbGlkKCkgY2FsbHMgdGhhdCB0aGUgc2NoZW1hIHBhcnNlciB3aWxsIG5lZWRcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gZ2V0Rmlyc3RNYXRjaGluZ09wdGlvbih2YWxpZGF0b3IsIGZvcm1EYXRhLCBhbnlPck9uZU9mLCByb290U2NoZW1hLCBkaXNjcmltaW5hdG9yKTtcbiAgICAgICAgaWYgKGV4cGFuZEFsbEJyYW5jaGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gYW55T3JPbmVPZi5tYXAoKGl0ZW0pID0+IG1lcmdlU2NoZW1hcyhyZW1haW5pbmcsIGl0ZW0pKTtcbiAgICAgICAgfVxuICAgICAgICBzY2hlbWEgPSBtZXJnZVNjaGVtYXMocmVtYWluaW5nLCBhbnlPck9uZU9mW29wdGlvbl0pO1xuICAgIH1cbiAgICByZXR1cm4gW3NjaGVtYV07XG59XG4vKiogUmVzb2x2ZXMgZGVwZW5kZW5jaWVzIHdpdGhpbiBhIHNjaGVtYSBhbmQgaXRzICdhbnlPZi9vbmVPZicgY2hpbGRyZW4uIFBhc3NlcyB0aGUgYGV4cGFuZEFsbEJyYW5jaGVzYCBmbGFnIGRvd24gdG9cbiAqIHRoZSBgcmVzb2x2ZUFueU9yT25lT2ZTY2hlbWEoKWAgYW5kIGBwcm9jZXNzRGVwZW5kZW5jaWVzKClgIGhlbHBlciBjYWxscy5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCByZXNvbHZpbmcgYSBkZXBlbmRlbmN5IGlzIGRlc2lyZWRcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gZXhwYW5kQWxsQnJhbmNoZXMgLSBGbGFnLCBpZiB0cnVlLCB3aWxsIHJldHVybiBhbGwgcG9zc2libGUgYnJhbmNoZXMgb2YgY29uZGl0aW9ucywgYW55L29uZU9mIGFuZCBkZXBlbmRlbmNpZXNcbiAqICAgICAgICAgIGFzIGEgbGlzdCBvZiBzY2hlbWFzXG4gKiBAcGFyYW0gcmVjdXJzZUxpc3QgLSBUaGUgbGlzdCBvZiByZWN1cnNpdmUgcmVmZXJlbmNlcyBhbHJlYWR5IHByb2Nlc3NlZFxuICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBsaXN0IG9mIHNjaGVtYXMgd2l0aCB0aGVpciBkZXBlbmRlbmNpZXMgcmVzb2x2ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVEZXBlbmRlbmNpZXModmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgLy8gRHJvcCB0aGUgZGVwZW5kZW5jaWVzIGZyb20gdGhlIHNvdXJjZSBzY2hlbWEuXG4gICAgY29uc3QgeyBkZXBlbmRlbmNpZXMsIC4uLnJlbWFpbmluZ1NjaGVtYSB9ID0gc2NoZW1hO1xuICAgIGNvbnN0IHJlc29sdmVkU2NoZW1hcyA9IHJlc29sdmVBbnlPck9uZU9mU2NoZW1hcyh2YWxpZGF0b3IsIHJlbWFpbmluZ1NjaGVtYSwgcm9vdFNjaGVtYSwgZXhwYW5kQWxsQnJhbmNoZXMsIGZvcm1EYXRhKTtcbiAgICByZXR1cm4gcmVzb2x2ZWRTY2hlbWFzLmZsYXRNYXAoKHJlc29sdmVkU2NoZW1hKSA9PiBwcm9jZXNzRGVwZW5kZW5jaWVzKHZhbGlkYXRvciwgZGVwZW5kZW5jaWVzLCByZXNvbHZlZFNjaGVtYSwgcm9vdFNjaGVtYSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBmb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpKTtcbn1cbi8qKiBQcm9jZXNzZXMgYWxsIHRoZSBgZGVwZW5kZW5jaWVzYCByZWN1cnNpdmVseSBpbnRvIHRoZSBsaXN0IG9mIGByZXNvbHZlZFNjaGVtYWBzIGFzIG5lZWRlZC4gUGFzc2VzIHRoZVxuICogYGV4cGFuZEFsbEJyYW5jaGVzYCBmbGFnIGRvd24gdG8gdGhlIGB3aXRoRGVwZW5kZW50U2NoZW1hKClgIGFuZCB0aGUgcmVjdXJzaXZlIGBwcm9jZXNzRGVwZW5kZW5jaWVzKClgIGhlbHBlciBjYWxscy5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBkZXBlbmRlbmNpZXMgLSBUaGUgc2V0IG9mIGRlcGVuZGVuY2llcyB0aGF0IG5lZWRzIHRvIGJlIHByb2Nlc3NlZFxuICogQHBhcmFtIHJlc29sdmVkU2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggcHJvY2Vzc2luZyBkZXBlbmRlbmNpZXMgaXMgZGVzaXJlZFxuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBleHBhbmRBbGxCcmFuY2hlcyAtIEZsYWcsIGlmIHRydWUsIHdpbGwgcmV0dXJuIGFsbCBwb3NzaWJsZSBicmFuY2hlcyBvZiBjb25kaXRpb25zLCBhbnkvb25lT2YgYW5kIGRlcGVuZGVuY2llc1xuICogICAgICAgICAgYXMgYSBsaXN0IG9mIHNjaGVtYXNcbiAqIEBwYXJhbSByZWN1cnNlTGlzdCAtIFRoZSBsaXN0IG9mIHJlY3Vyc2l2ZSByZWZlcmVuY2VzIGFscmVhZHkgcHJvY2Vzc2VkXG4gKiBAcGFyYW0gW2Zvcm1EYXRhXSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIHRvIGFzc2lzdCByZXRyaWV2aW5nIGEgc2NoZW1hXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gVGhlIHNjaGVtYSB3aXRoIHRoZSBgZGVwZW5kZW5jaWVzYCByZXNvbHZlZCBpbnRvIGl0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzRGVwZW5kZW5jaWVzKHZhbGlkYXRvciwgZGVwZW5kZW5jaWVzLCByZXNvbHZlZFNjaGVtYSwgcm9vdFNjaGVtYSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBmb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICBsZXQgc2NoZW1hcyA9IFtyZXNvbHZlZFNjaGVtYV07XG4gICAgLy8gUHJvY2VzcyBkZXBlbmRlbmNpZXMgdXBkYXRpbmcgdGhlIGxvY2FsIHNjaGVtYSBwcm9wZXJ0aWVzIGFzIGFwcHJvcHJpYXRlLlxuICAgIGZvciAoY29uc3QgZGVwZW5kZW5jeUtleSBpbiBkZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgLy8gU2tpcCB0aGlzIGRlcGVuZGVuY3kgaWYgaXRzIHRyaWdnZXIgcHJvcGVydHkgaXMgbm90IHByZXNlbnQuXG4gICAgICAgIGlmICghZXhwYW5kQWxsQnJhbmNoZXMgJiYgZ2V0KGZvcm1EYXRhLCBbZGVwZW5kZW5jeUtleV0pID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNraXAgdGhpcyBkZXBlbmRlbmN5IGlmIGl0IGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgc2NoZW1hIChzdWNoIGFzIHdoZW4gZGVwZW5kZW5jeUtleSBpcyBpdHNlbGYgYSBoaWRkZW4gZGVwZW5kZW5jeS4pXG4gICAgICAgIGlmIChyZXNvbHZlZFNjaGVtYS5wcm9wZXJ0aWVzICYmICEoZGVwZW5kZW5jeUtleSBpbiByZXNvbHZlZFNjaGVtYS5wcm9wZXJ0aWVzKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgW3JlbWFpbmluZ0RlcGVuZGVuY2llcywgZGVwZW5kZW5jeVZhbHVlXSA9IHNwbGl0S2V5RWxlbWVudEZyb21PYmplY3QoZGVwZW5kZW5jeUtleSwgZGVwZW5kZW5jaWVzKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGVwZW5kZW5jeVZhbHVlKSkge1xuICAgICAgICAgICAgc2NoZW1hc1swXSA9IHdpdGhEZXBlbmRlbnRQcm9wZXJ0aWVzKHJlc29sdmVkU2NoZW1hLCBkZXBlbmRlbmN5VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KGRlcGVuZGVuY3lWYWx1ZSkpIHtcbiAgICAgICAgICAgIHNjaGVtYXMgPSB3aXRoRGVwZW5kZW50U2NoZW1hKHZhbGlkYXRvciwgcmVzb2x2ZWRTY2hlbWEsIHJvb3RTY2hlbWEsIGRlcGVuZGVuY3lLZXksIGRlcGVuZGVuY3lWYWx1ZSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBmb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzY2hlbWFzLmZsYXRNYXAoKHNjaGVtYSkgPT4gcHJvY2Vzc0RlcGVuZGVuY2llcyh2YWxpZGF0b3IsIHJlbWFpbmluZ0RlcGVuZGVuY2llcywgc2NoZW1hLCByb290U2NoZW1hLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikpO1xuICAgIH1cbiAgICByZXR1cm4gc2NoZW1hcztcbn1cbi8qKiBVcGRhdGVzIGEgc2NoZW1hIHdpdGggYWRkaXRpb25hbGx5IHJlcXVpcmVkIHByb3BlcnRpZXMgYWRkZWRcbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggcmVzb2x2aW5nIGEgZGVwZW5kZW50IHByb3BlcnRpZXMgaXMgZGVzaXJlZFxuICogQHBhcmFtIFthZGRpdGlvbmFsbHlSZXF1aXJlZF0gLSBBbiBvcHRpb25hbCBhcnJheSBvZiBhZGRpdGlvbmFsbHkgcmVxdWlyZWQgbmFtZXNcbiAqIEByZXR1cm5zIC0gVGhlIHNjaGVtYSB3aXRoIHRoZSBhZGRpdGlvbmFsIHJlcXVpcmVkIHZhbHVlcyBtZXJnZWQgaW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhEZXBlbmRlbnRQcm9wZXJ0aWVzKHNjaGVtYSwgYWRkaXRpb25hbGx5UmVxdWlyZWQpIHtcbiAgICBpZiAoIWFkZGl0aW9uYWxseVJlcXVpcmVkKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfVxuICAgIGNvbnN0IHJlcXVpcmVkID0gQXJyYXkuaXNBcnJheShzY2hlbWEucmVxdWlyZWQpXG4gICAgICAgID8gQXJyYXkuZnJvbShuZXcgU2V0KFsuLi5zY2hlbWEucmVxdWlyZWQsIC4uLmFkZGl0aW9uYWxseVJlcXVpcmVkXSkpXG4gICAgICAgIDogYWRkaXRpb25hbGx5UmVxdWlyZWQ7XG4gICAgcmV0dXJuIHsgLi4uc2NoZW1hLCByZXF1aXJlZDogcmVxdWlyZWQgfTtcbn1cbi8qKiBNZXJnZXMgYSBkZXBlbmRlbnQgc2NoZW1hIGludG8gdGhlIGBzY2hlbWFgIGRlYWxpbmcgd2l0aCBvbmVPZnMgYW5kIHJlZmVyZW5jZXMuIFBhc3NlcyB0aGUgYGV4cGFuZEFsbEJyYW5jaGVzYCBmbGFnXG4gKiBkb3duIHRvIHRoZSBgcmV0cmlldmVTY2hlbWFJbnRlcm5hbCgpYCwgYHJlc29sdmVSZWZlcmVuY2UoKWAgYW5kIGB3aXRoRXhhY3RseU9uZVN1YnNjaGVtYSgpYCBoZWxwZXIgY2FsbHMuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYWxsIHRoZSBBUElzXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggcmVzb2x2aW5nIGEgZGVwZW5kZW50IHNjaGVtYSBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IHNjaGVtYSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIGRlcGVuZGVuY3lLZXkgLSBUaGUga2V5IG5hbWUgb2YgdGhlIGRlcGVuZGVuY3lcbiAqIEBwYXJhbSBkZXBlbmRlbmN5VmFsdWUgLSBUaGUgcG90ZW50aWFsbHkgZGVwZW5kZW50IHNjaGVtYVxuICogQHBhcmFtIGV4cGFuZEFsbEJyYW5jaGVzIC0gRmxhZywgaWYgdHJ1ZSwgd2lsbCByZXR1cm4gYWxsIHBvc3NpYmxlIGJyYW5jaGVzIG9mIGNvbmRpdGlvbnMsIGFueS9vbmVPZiBhbmQgZGVwZW5kZW5jaWVzXG4gKiAgICAgICAgICBhcyBhIGxpc3Qgb2Ygc2NoZW1hc1xuICogQHBhcmFtIHJlY3Vyc2VMaXN0IC0gVGhlIGxpc3Qgb2YgcmVjdXJzaXZlIHJlZmVyZW5jZXMgYWxyZWFkeSBwcm9jZXNzZWRcbiAqIEBwYXJhbSBbZm9ybURhdGFdLSBUaGUgY3VycmVudCBmb3JtRGF0YSB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBsaXN0IG9mIHNjaGVtYXMgd2l0aCB0aGUgZGVwZW5kZW50IHNjaGVtYSByZXNvbHZlZCBpbnRvIHRoZW1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhEZXBlbmRlbnRTY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGRlcGVuZGVuY3lLZXksIGRlcGVuZGVuY3lWYWx1ZSwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBmb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICBjb25zdCBkZXBlbmRlbnRTY2hlbWFzID0gcmV0cmlldmVTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIGRlcGVuZGVuY3lWYWx1ZSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgIHJldHVybiBkZXBlbmRlbnRTY2hlbWFzLmZsYXRNYXAoKGRlcGVuZGVudCkgPT4ge1xuICAgICAgICBjb25zdCB7IG9uZU9mLCAuLi5kZXBlbmRlbnRTY2hlbWEgfSA9IGRlcGVuZGVudDtcbiAgICAgICAgc2NoZW1hID0gbWVyZ2VTY2hlbWFzKHNjaGVtYSwgZGVwZW5kZW50U2NoZW1hKTtcbiAgICAgICAgLy8gU2luY2UgaXQgZG9lcyBub3QgY29udGFpbiBvbmVPZiwgd2UgcmV0dXJuIHRoZSBvcmlnaW5hbCBzY2hlbWEuXG4gICAgICAgIGlmIChvbmVPZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlc29sdmUgJHJlZnMgaW5zaWRlIG9uZU9mLlxuICAgICAgICBjb25zdCByZXNvbHZlZE9uZU9mcyA9IG9uZU9mLm1hcCgoc3Vic2NoZW1hKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHN1YnNjaGVtYSA9PT0gJ2Jvb2xlYW4nIHx8ICEoUkVGX0tFWSBpbiBzdWJzY2hlbWEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtzdWJzY2hlbWFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVSZWZlcmVuY2UodmFsaWRhdG9yLCBzdWJzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgYWxsUGVybXV0YXRpb25zID0gZ2V0QWxsUGVybXV0YXRpb25zT2ZYeHhPZihyZXNvbHZlZE9uZU9mcyk7XG4gICAgICAgIHJldHVybiBhbGxQZXJtdXRhdGlvbnMuZmxhdE1hcCgocmVzb2x2ZWRPbmVPZikgPT4gd2l0aEV4YWN0bHlPbmVTdWJzY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGRlcGVuZGVuY3lLZXksIHJlc29sdmVkT25lT2YsIGV4cGFuZEFsbEJyYW5jaGVzLCByZWN1cnNlTGlzdCwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSk7XG4gICAgfSk7XG59XG4vKiogUmV0dXJucyBhIGxpc3Qgb2YgYHNjaGVtYWBzIHdpdGggdGhlIGJlc3QgY2hvaWNlIGZyb20gdGhlIGBvbmVPZmAgb3B0aW9ucyBtZXJnZWQgaW50byBpdC4gSWYgYGV4cGFuZEFsbEJyYW5jaGVzYCBpc1xuICogdHJ1ZSwgdGhlbiBhIGxpc3Qgb2Ygc2NoZW1hcyBmb3IgQUxMIG9wdGlvbnMgYXJlIHJldHJpZXZlZCBhbmQgcmV0dXJuZWQuIFBhc3NlcyB0aGUgYGV4cGFuZEFsbEJyYW5jaGVzYCBmbGFnIGRvd24gdG9cbiAqIHRoZSBgcmV0cmlldmVTY2hlbWFJbnRlcm5hbCgpYCBoZWxwZXIgY2FsbC5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgdG8gdmFsaWRhdGUgb25lT2Ygb3B0aW9uc1xuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHJlc29sdmluZyBhIG9uZU9mIHN1YnNjaGVtYSBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IHNjaGVtYSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIGRlcGVuZGVuY3lLZXkgLSBUaGUga2V5IG5hbWUgb2YgdGhlIG9uZU9mIGRlcGVuZGVuY3lcbiAqIEBwYXJhbSBvbmVPZiAtIFRoZSBsaXN0IG9mIHNjaGVtYXMgcmVwcmVzZW50aW5nIHRoZSBvbmVPZiBvcHRpb25zXG4gKiBAcGFyYW0gZXhwYW5kQWxsQnJhbmNoZXMgLSBGbGFnLCBpZiB0cnVlLCB3aWxsIHJldHVybiBhbGwgcG9zc2libGUgYnJhbmNoZXMgb2YgY29uZGl0aW9ucywgYW55L29uZU9mIGFuZCBkZXBlbmRlbmNpZXNcbiAqICAgICAgICAgIGFzIGEgbGlzdCBvZiBzY2hlbWFzXG4gKiBAcGFyYW0gcmVjdXJzZUxpc3QgLSBUaGUgbGlzdCBvZiByZWN1cnNpdmUgcmVmZXJlbmNlcyBhbHJlYWR5IHByb2Nlc3NlZFxuICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIEVpdGhlciBhbiBhcnJheSBjb250YWluaW5nIHRoZSBiZXN0IG1hdGNoaW5nIG9wdGlvbiBvciBhbGwgb3B0aW9ucyBpZiBgZXhwYW5kQWxsQnJhbmNoZXNgIGlzIHRydWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhFeGFjdGx5T25lU3Vic2NoZW1hKHZhbGlkYXRvciwgc2NoZW1hLCByb290U2NoZW1hLCBkZXBlbmRlbmN5S2V5LCBvbmVPZiwgZXhwYW5kQWxsQnJhbmNoZXMsIHJlY3Vyc2VMaXN0LCBmb3JtRGF0YSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICBjb25zdCB2YWxpZFN1YnNjaGVtYXMgPSBvbmVPZi5maWx0ZXIoKHN1YnNjaGVtYSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHN1YnNjaGVtYSA9PT0gJ2Jvb2xlYW4nIHx8ICFzdWJzY2hlbWEgfHwgIXN1YnNjaGVtYS5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBbZGVwZW5kZW5jeUtleV06IGNvbmRpdGlvblByb3BlcnR5U2NoZW1hIH0gPSBzdWJzY2hlbWEucHJvcGVydGllcztcbiAgICAgICAgaWYgKGNvbmRpdGlvblByb3BlcnR5U2NoZW1hKSB7XG4gICAgICAgICAgICBjb25zdCBjb25kaXRpb25TY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICBbZGVwZW5kZW5jeUtleV06IGNvbmRpdGlvblByb3BlcnR5U2NoZW1hLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRvci5pc1ZhbGlkKGNvbmRpdGlvblNjaGVtYSwgZm9ybURhdGEsIHJvb3RTY2hlbWEpIHx8IGV4cGFuZEFsbEJyYW5jaGVzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgICBpZiAoIWV4cGFuZEFsbEJyYW5jaGVzICYmIHZhbGlkU3Vic2NoZW1hcy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiaWdub3Jpbmcgb25lT2YgaW4gZGVwZW5kZW5jaWVzIGJlY2F1c2UgdGhlcmUgaXNuJ3QgZXhhY3RseSBvbmUgc3Vic2NoZW1hIHRoYXQgaXMgdmFsaWRcIik7XG4gICAgICAgIHJldHVybiBbc2NoZW1hXTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkU3Vic2NoZW1hcy5mbGF0TWFwKChzKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YnNjaGVtYSA9IHM7XG4gICAgICAgIGNvbnN0IFtkZXBlbmRlbnRTdWJzY2hlbWFdID0gc3BsaXRLZXlFbGVtZW50RnJvbU9iamVjdChkZXBlbmRlbmN5S2V5LCBzdWJzY2hlbWEucHJvcGVydGllcyk7XG4gICAgICAgIGNvbnN0IGRlcGVuZGVudFNjaGVtYSA9IHsgLi4uc3Vic2NoZW1hLCBwcm9wZXJ0aWVzOiBkZXBlbmRlbnRTdWJzY2hlbWEgfTtcbiAgICAgICAgY29uc3Qgc2NoZW1hcyA9IHJldHJpZXZlU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBkZXBlbmRlbnRTY2hlbWEsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBhbmRBbGxCcmFuY2hlcywgcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgcmV0dXJuIHNjaGVtYXMubWFwKChzKSA9PiBtZXJnZVNjaGVtYXMoc2NoZW1hLCBzKSk7XG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXRyaWV2ZVNjaGVtYS5qcy5tYXAiLCJpbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IGhhcyBmcm9tICdsb2Rhc2gvaGFzJztcbmltcG9ydCBpc051bWJlciBmcm9tICdsb2Rhc2gvaXNOdW1iZXInO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJ2xvZGFzaC9pc09iamVjdCc7XG5pbXBvcnQgaXNTdHJpbmcgZnJvbSAnbG9kYXNoL2lzU3RyaW5nJztcbmltcG9ydCByZWR1Y2UgZnJvbSAnbG9kYXNoL3JlZHVjZSc7XG5pbXBvcnQgdGltZXMgZnJvbSAnbG9kYXNoL3RpbWVzJztcbmltcG9ydCBnZXRGaXJzdE1hdGNoaW5nT3B0aW9uIGZyb20gJy4vZ2V0Rmlyc3RNYXRjaGluZ09wdGlvbic7XG5pbXBvcnQgcmV0cmlldmVTY2hlbWEsIHsgcmVzb2x2ZUFsbFJlZmVyZW5jZXMgfSBmcm9tICcuL3JldHJpZXZlU2NoZW1hJztcbmltcG9ydCB7IE9ORV9PRl9LRVksIFJFRl9LRVksIEpVTktfT1BUSU9OX0lELCBBTllfT0ZfS0VZIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBndWVzc1R5cGUgZnJvbSAnLi4vZ3Vlc3NUeXBlJztcbmltcG9ydCBnZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hIGZyb20gJy4uL2dldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEnO1xuaW1wb3J0IGdldE9wdGlvbk1hdGNoaW5nU2ltcGxlRGlzY3JpbWluYXRvciBmcm9tICcuLi9nZXRPcHRpb25NYXRjaGluZ1NpbXBsZURpc2NyaW1pbmF0b3InO1xuLyoqIEEganVuayBvcHRpb24gdXNlZCB0byBkZXRlcm1pbmUgd2hlbiB0aGUgZ2V0Rmlyc3RNYXRjaGluZ09wdGlvbiBjYWxsIHJlYWxseSBtYXRjaGVzIGFuIG9wdGlvbiByYXRoZXIgdGhhbiByZXR1cm5pbmdcbiAqIHRoZSBmaXJzdCBpdGVtXG4gKi9cbmV4cG9ydCBjb25zdCBKVU5LX09QVElPTiA9IHtcbiAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAkaWQ6IEpVTktfT1BUSU9OX0lELFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgX19ub3RfcmVhbGx5X3RoZXJlX186IHtcbiAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICB9LFxuICAgIH0sXG59O1xuLyoqIFJlY3Vyc2l2ZSBmdW5jdGlvbiB0aGF0IGNhbGN1bGF0ZXMgdGhlIHNjb3JlIG9mIGEgYGZvcm1EYXRhYCBhZ2FpbnN0IHRoZSBnaXZlbiBgc2NoZW1hYC4gVGhlIGNvbXB1dGF0aW9uIGlzIGZhaXJseVxuICogc2ltcGxlLiBJbml0aWFsbHkgdGhlIHRvdGFsIHNjb3JlIGlzIDAuIFdoZW4gYHNjaGVtYS5wcm9wZXJ0aWVzYCBvYmplY3QgZXhpc3RzLCB0aGVuIGFsbCB0aGUgYGtleS92YWx1ZWAgcGFpcnMgd2l0aGluXG4gKiB0aGUgb2JqZWN0IGFyZSBwcm9jZXNzZWQgYXMgZm9sbG93cyBhZnRlciBvYnRhaW5pbmcgdGhlIGZvcm1WYWx1ZSBmcm9tIGBmb3JtRGF0YWAgdXNpbmcgdGhlIGBrZXlgOlxuICogLSBJZiB0aGUgYHZhbHVlYCBjb250YWlucyBhIGAkcmVmYCwgYGNhbGN1bGF0ZUluZGV4U2NvcmUoKWAgaXMgY2FsbGVkIHJlY3Vyc2l2ZWx5IHdpdGggdGhlIGZvcm1WYWx1ZSBhbmQgdGhlIG5ld1xuICogICBzY2hlbWEgdGhhdCBpcyB0aGUgcmVzdWx0IG9mIHRoZSByZWYgaW4gdGhlIHNjaGVtYSBiZWluZyByZXNvbHZlZCBhbmQgdGhhdCBzdWItc2NoZW1hJ3MgcmVzdWx0aW5nIHNjb3JlIGlzIGFkZGVkIHRvXG4gKiAgIHRoZSB0b3RhbC5cbiAqIC0gSWYgdGhlIGB2YWx1ZWAgY29udGFpbnMgYSBgb25lT2ZgIGFuZCB0aGVyZSBpcyBhIGZvcm1WYWx1ZSwgdGhlbiBzY29yZSBiYXNlZCBvbiB0aGUgaW5kZXggcmV0dXJuZWQgZnJvbSBjYWxsaW5nXG4gKiAgIGBnZXRDbG9zZXN0TWF0Y2hpbmdPcHRpb24oKWAgb2YgdGhhdCBvbmVPZi5cbiAqIC0gSWYgdGhlIHR5cGUgb2YgdGhlIGB2YWx1ZWAgaXMgJ29iamVjdCcsIGBjYWxjdWxhdGVJbmRleFNjb3JlKClgIGlzIGNhbGxlZCByZWN1cnNpdmVseSB3aXRoIHRoZSBmb3JtVmFsdWUgYW5kIHRoZVxuICogICBgdmFsdWVgIGl0c2VsZiBhcyB0aGUgc3ViLXNjaGVtYSwgYW5kIHRoZSBzY29yZSBpcyBhZGRlZCB0byB0aGUgdG90YWwuXG4gKiAtIElmIHRoZSB0eXBlIG9mIHRoZSBgdmFsdWVgIG1hdGNoZXMgdGhlIGd1ZXNzZWQtdHlwZSBvZiB0aGUgYGZvcm1WYWx1ZWAsIHRoZSBzY29yZSBpcyBpbmNyZW1lbnRlZCBieSAxLCBVTkxFU1MgdGhlXG4gKiAgIHZhbHVlIGhhcyBhIGBkZWZhdWx0YCBvciBgY29uc3RgLiBJbiB0aG9zZSBjYXNlLCBpZiB0aGUgYGRlZmF1bHRgIG9yIGBjb25zdGAgYW5kIHRoZSBgZm9ybVZhbHVlYCBtYXRjaCwgdGhlIHNjb3JlXG4gKiAgIGlzIGluY3JlbWVudGVkIGJ5IGFub3RoZXIgMSBvdGhlcndpc2UgaXQgaXMgZGVjcmVtZW50ZWQgYnkgMS5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3QgSlNPTiBzY2hlbWEgb2YgdGhlIGVudGlyZSBmb3JtXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIHNjb3JlIGlzIGJlaW5nIGNhbGN1bGF0ZWRcbiAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBmb3JtIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBzY2hlbWEsIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBzY29yZVxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBzY29yZSBhIHNjaGVtYSBhZ2FpbnN0IHRoZSBmb3JtRGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlSW5kZXhTY29yZSh2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIHNjaGVtYSwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgbGV0IHRvdGFsU2NvcmUgPSAwO1xuICAgIGlmIChzY2hlbWEpIHtcbiAgICAgICAgaWYgKGlzT2JqZWN0KHNjaGVtYS5wcm9wZXJ0aWVzKSkge1xuICAgICAgICAgICAgdG90YWxTY29yZSArPSByZWR1Y2Uoc2NoZW1hLnByb3BlcnRpZXMsIChzY29yZSwgdmFsdWUsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IGdldChmb3JtRGF0YSwga2V5KTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjb3JlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaGFzKHZhbHVlLCBSRUZfS0VZKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdTY2hlbWEgPSByZXRyaWV2ZVNjaGVtYSh2YWxpZGF0b3IsIHZhbHVlLCByb290U2NoZW1hLCBmb3JtVmFsdWUsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChzY29yZSArXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxhdGVJbmRleFNjb3JlKHZhbGlkYXRvciwgcm9vdFNjaGVtYSwgbmV3U2NoZW1hLCBmb3JtVmFsdWUgfHwge30sIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICgoaGFzKHZhbHVlLCBPTkVfT0ZfS0VZKSB8fCBoYXModmFsdWUsIEFOWV9PRl9LRVkpKSAmJiBmb3JtVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gaGFzKHZhbHVlLCBPTkVfT0ZfS0VZKSA/IE9ORV9PRl9LRVkgOiBBTllfT0ZfS0VZO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNjcmltaW5hdG9yID0gZ2V0RGlzY3JpbWluYXRvckZpZWxkRnJvbVNjaGVtYSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoc2NvcmUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uKHZhbGlkYXRvciwgcm9vdFNjaGVtYSwgZm9ybVZhbHVlLCBnZXQodmFsdWUsIGtleSksIC0xLCBkaXNjcmltaW5hdG9yLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUudHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT2JqZWN0KGZvcm1WYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBzdHJ1Y3R1cmUgaXMgbWF0Y2hpbmcgdGhlbiBnaXZlIGl0IGEgbGl0dGxlIGJvb3N0IGluIHNjb3JlXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29yZSArPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoc2NvcmUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlSW5kZXhTY29yZSh2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIHZhbHVlLCBmb3JtVmFsdWUsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZS50eXBlID09PSBndWVzc1R5cGUoZm9ybVZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdHlwZXMgbWF0Y2gsIHRoZW4gd2UgYnVtcCB0aGUgc2NvcmUgYnkgb25lXG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXdTY29yZSA9IHNjb3JlICsgMTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmRlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBzY2hlbWEgY29udGFpbnMgYSByZWFkb25seSBkZWZhdWx0IHZhbHVlIHNjb3JlIHRoZSB2YWx1ZSB0aGF0IG1hdGNoZXMgdGhlIGRlZmF1bHQgaGlnaGVyIGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG5vbi1tYXRjaGluZyB2YWx1ZSBsb3dlclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2NvcmUgKz0gZm9ybVZhbHVlID09PSB2YWx1ZS5kZWZhdWx0ID8gMSA6IC0xO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLmNvbnN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgc2NoZW1hIGNvbnRhaW5zIGEgY29uc3QgdmFsdWUgc2NvcmUgdGhlIHZhbHVlIHRoYXQgbWF0Y2hlcyB0aGUgZGVmYXVsdCBoaWdoZXIgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhbnkgbm9uLW1hdGNoaW5nIHZhbHVlIGxvd2VyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdTY29yZSArPSBmb3JtVmFsdWUgPT09IHZhbHVlLmNvbnN0ID8gMSA6IC0xO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gZXZlbnR1YWxseSwgZGVhbCB3aXRoIGVudW1zL2FycmF5c1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3U2NvcmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzY29yZTtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzU3RyaW5nKHNjaGVtYS50eXBlKSAmJiBzY2hlbWEudHlwZSA9PT0gZ3Vlc3NUeXBlKGZvcm1EYXRhKSkge1xuICAgICAgICAgICAgdG90YWxTY29yZSArPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0b3RhbFNjb3JlO1xufVxuLyoqIERldGVybWluZXMgd2hpY2ggb2YgdGhlIGdpdmVuIGBvcHRpb25zYCBwcm92aWRlZCBtb3N0IGNsb3NlbHkgbWF0Y2hlcyB0aGUgYGZvcm1EYXRhYC4gVXNpbmdcbiAqIGBnZXRGaXJzdE1hdGNoaW5nT3B0aW9uKClgIHRvIG1hdGNoIHR3byBzY2hlbWFzIHRoYXQgZGlmZmVyIG9ubHkgYnkgdGhlIHJlYWRPbmx5LCBkZWZhdWx0IG9yIGNvbnN0IHZhbHVlIG9mIGEgZmllbGRcbiAqIGJhc2VkIG9uIHRoZSBgZm9ybURhdGFgIGFuZCByZXR1cm5zIDAgd2hlbiB0aGVyZSBpcyBubyBtYXRjaC4gUmF0aGVyIHRoYW4gcGFzc2luZyBpbiBhbGwgdGhlIGBvcHRpb25zYCBhdCBvbmNlIHRvXG4gKiB0aGlzIHV0aWxpdHksIGluc3RlYWQgYW4gYXJyYXkgb2YgdmFsaWQgb3B0aW9uIGluZGV4ZXMgaXMgY3JlYXRlZCBieSBpdGVyYXRpbmcgb3ZlciB0aGUgbGlzdCBvZiBvcHRpb25zLCBjYWxsXG4gKiBgZ2V0Rmlyc3RNYXRjaGluZ09wdGlvbnNgIHdpdGggYSBsaXN0IG9mIG9uZSBqdW5rIG9wdGlvbiBhbmQgb25lIGdvb2Qgb3B0aW9uLCBzZWVpbmcgaWYgdGhlIGdvb2Qgb3B0aW9uIGlzIGNvbnNpZGVyZWRcbiAqIG1hdGNoZWQuXG4gKlxuICogT25jZSB0aGUgbGlzdCBvZiB2YWxpZCBpbmRleGVzIGlzIGNyZWF0ZWQsIGlmIHRoZXJlIGlzIG9ubHkgb25lIHZhbGlkIGluZGV4LCBqdXN0IHJldHVybiBpdC4gT3RoZXJ3aXNlLCBpZiB0aGVyZSBhcmVcbiAqIG5vIHZhbGlkIGluZGV4ZXMsIHRoZW4gZmlsbCB0aGUgdmFsaWQgaW5kZXhlcyBhcnJheSB3aXRoIHRoZSBpbmRleGVzIG9mIGFsbCB0aGUgb3B0aW9ucy4gTmV4dCwgdGhlIGluZGV4IG9mIHRoZVxuICogb3B0aW9uIHdpdGggdGhlIGhpZ2hlc3Qgc2NvcmUgaXMgZGV0ZXJtaW5lZCBieSBpdGVyYXRpbmcgb3ZlciB0aGUgbGlzdCBvZiB2YWxpZCBvcHRpb25zLCBjYWxsaW5nXG4gKiBgY2FsY3VsYXRlSW5kZXhTY29yZSgpYCBvbiBlYWNoLCBjb21wYXJpbmcgaXQgYWdhaW5zdCB0aGUgY3VycmVudCBiZXN0IHNjb3JlLCBhbmQgcmV0dXJuaW5nIHRoZSBpbmRleCBvZiB0aGUgb25lIHRoYXRcbiAqIGV2ZW50dWFsbHkgaGFzIHRoZSBiZXN0IHNjb3JlLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBKU09OIHNjaGVtYSBvZiB0aGUgZW50aXJlIGZvcm1cbiAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBmb3JtIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBzY2hlbWFcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGxpc3Qgb2Ygb3B0aW9ucyB0aGF0IGNhbiBiZSBzZWxlY3RlZCBmcm9tXG4gKiBAcGFyYW0gW3NlbGVjdGVkT3B0aW9uPS0xXSAtIFRoZSBpbmRleCBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG9wdGlvbiwgZGVmYXVsdGVkIHRvIC0xIGlmIG5vdCBzcGVjaWZpZWRcbiAqIEBwYXJhbSBbZGlzY3JpbWluYXRvckZpZWxkXSAtIFRoZSBvcHRpb25hbCBuYW1lIG9mIHRoZSBmaWVsZCB3aXRoaW4gdGhlIG9wdGlvbnMgb2JqZWN0IHdob3NlIHZhbHVlIGlzIHVzZWQgdG9cbiAqICAgICAgICAgIGRldGVybWluZSB3aGljaCBvcHRpb24gaXMgc2VsZWN0ZWRcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgaW5kZXggb2YgdGhlIG9wdGlvbiB0aGF0IGlzIHRoZSBjbG9zZXN0IG1hdGNoIHRvIHRoZSBgZm9ybURhdGFgIG9yIHRoZSBgc2VsZWN0ZWRPcHRpb25gIGlmIG5vIG1hdGNoXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENsb3Nlc3RNYXRjaGluZ09wdGlvbih2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBvcHRpb25zLCBzZWxlY3RlZE9wdGlvbiA9IC0xLCBkaXNjcmltaW5hdG9yRmllbGQsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgLy8gRmlyc3QgcmVzb2x2ZSBhbnkgcmVmcyBpbiB0aGUgb3B0aW9uc1xuICAgIGNvbnN0IHJlc29sdmVkT3B0aW9ucyA9IG9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBbGxSZWZlcmVuY2VzKG9wdGlvbiwgcm9vdFNjaGVtYSwgW10pO1xuICAgIH0pO1xuICAgIGNvbnN0IHNpbXBsZURpc2NyaW1pbmF0b3JNYXRjaCA9IGdldE9wdGlvbk1hdGNoaW5nU2ltcGxlRGlzY3JpbWluYXRvcihmb3JtRGF0YSwgb3B0aW9ucywgZGlzY3JpbWluYXRvckZpZWxkKTtcbiAgICBpZiAoaXNOdW1iZXIoc2ltcGxlRGlzY3JpbWluYXRvck1hdGNoKSkge1xuICAgICAgICByZXR1cm4gc2ltcGxlRGlzY3JpbWluYXRvck1hdGNoO1xuICAgIH1cbiAgICAvLyBSZWR1Y2UgdGhlIGFycmF5IG9mIG9wdGlvbnMgZG93biB0byBhIGxpc3Qgb2YgdGhlIGluZGV4ZXMgdGhhdCBhcmUgY29uc2lkZXJlZCBtYXRjaGluZyBvcHRpb25zXG4gICAgY29uc3QgYWxsVmFsaWRJbmRleGVzID0gcmVzb2x2ZWRPcHRpb25zLnJlZHVjZSgodmFsaWRMaXN0LCBvcHRpb24sIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHRlc3RPcHRpb25zID0gW0pVTktfT1BUSU9OLCBvcHRpb25dO1xuICAgICAgICBjb25zdCBtYXRjaCA9IGdldEZpcnN0TWF0Y2hpbmdPcHRpb24odmFsaWRhdG9yLCBmb3JtRGF0YSwgdGVzdE9wdGlvbnMsIHJvb3RTY2hlbWEsIGRpc2NyaW1pbmF0b3JGaWVsZCk7XG4gICAgICAgIC8vIFRoZSBtYXRjaCBpcyB0aGUgcmVhbCBvcHRpb24sIHNvIGFkZCBpdHMgaW5kZXggdG8gbGlzdCBvZiB2YWxpZCBpbmRleGVzXG4gICAgICAgIGlmIChtYXRjaCA9PT0gMSkge1xuICAgICAgICAgICAgdmFsaWRMaXN0LnB1c2goaW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWxpZExpc3Q7XG4gICAgfSwgW10pO1xuICAgIC8vIFRoZXJlIGlzIG9ubHkgb25lIHZhbGlkIGluZGV4LCBzbyByZXR1cm4gaXQhXG4gICAgaWYgKGFsbFZhbGlkSW5kZXhlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIGFsbFZhbGlkSW5kZXhlc1swXTtcbiAgICB9XG4gICAgaWYgKCFhbGxWYWxpZEluZGV4ZXMubGVuZ3RoKSB7XG4gICAgICAgIC8vIE5vIGluZGV4ZXMgd2VyZSB2YWxpZCwgc28gd2UnbGwgc2NvcmUgYWxsIHRoZSBvcHRpb25zLCBhZGQgYWxsIHRoZSBpbmRleGVzXG4gICAgICAgIHRpbWVzKHJlc29sdmVkT3B0aW9ucy5sZW5ndGgsIChpKSA9PiBhbGxWYWxpZEluZGV4ZXMucHVzaChpKSk7XG4gICAgfVxuICAgIGNvbnN0IHNjb3JlQ291bnQgPSBuZXcgU2V0KCk7XG4gICAgLy8gU2NvcmUgYWxsIHRoZSBvcHRpb25zIGluIHRoZSBsaXN0IG9mIHZhbGlkIGluZGV4ZXMgYW5kIHJldHVybiB0aGUgaW5kZXggd2l0aCB0aGUgYmVzdCBzY29yZVxuICAgIGNvbnN0IHsgYmVzdEluZGV4IH0gPSBhbGxWYWxpZEluZGV4ZXMucmVkdWNlKChzY29yZURhdGEsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgYmVzdFNjb3JlIH0gPSBzY29yZURhdGE7XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHJlc29sdmVkT3B0aW9uc1tpbmRleF07XG4gICAgICAgIGNvbnN0IHNjb3JlID0gY2FsY3VsYXRlSW5kZXhTY29yZSh2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIG9wdGlvbiwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgc2NvcmVDb3VudC5hZGQoc2NvcmUpO1xuICAgICAgICBpZiAoc2NvcmUgPiBiZXN0U2NvcmUpIHtcbiAgICAgICAgICAgIHJldHVybiB7IGJlc3RJbmRleDogaW5kZXgsIGJlc3RTY29yZTogc2NvcmUgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2NvcmVEYXRhO1xuICAgIH0sIHsgYmVzdEluZGV4OiBzZWxlY3RlZE9wdGlvbiwgYmVzdFNjb3JlOiAwIH0pO1xuICAgIC8vIGlmIGFsbCBzY29yZXMgYXJlIHRoZSBzYW1lIGdvIHdpdGggc2VsZWN0ZWRPcHRpb25cbiAgICBpZiAoc2NvcmVDb3VudC5zaXplID09PSAxICYmIHNlbGVjdGVkT3B0aW9uID49IDApIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkT3B0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gYmVzdEluZGV4O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uLmpzLm1hcCIsImltcG9ydCBpc09iamVjdCBmcm9tICcuL2lzT2JqZWN0Jztcbi8qKiBEZXRlY3RzIHdoZXRoZXIgdGhlIGdpdmVuIGBzY2hlbWFgIGNvbnRhaW5zIGZpeGVkIGl0ZW1zLiBUaGlzIGlzIHRoZSBjYXNlIHdoZW4gYHNjaGVtYS5pdGVtc2AgaXMgYSBub24tZW1wdHkgYXJyYXlcbiAqIHRoYXQgb25seSBjb250YWlucyBvYmplY3RzLlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGluIHdoaWNoIHRvIGNoZWNrIGZvciBmaXhlZCBpdGVtc1xuICogQHJldHVybnMgLSBUcnVlIGlmIHRoZXJlIGFyZSBmaXhlZCBpdGVtcyBpbiB0aGUgc2NoZW1hLCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNGaXhlZEl0ZW1zKHNjaGVtYSkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHNjaGVtYS5pdGVtcykgJiYgc2NoZW1hLml0ZW1zLmxlbmd0aCA+IDAgJiYgc2NoZW1hLml0ZW1zLmV2ZXJ5KChpdGVtKSA9PiBpc09iamVjdChpdGVtKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pc0ZpeGVkSXRlbXMuanMubWFwIiwiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBpc09iamVjdCBmcm9tICcuL2lzT2JqZWN0Jztcbi8qKiBNZXJnZXMgdGhlIGBkZWZhdWx0c2Agb2JqZWN0IG9mIHR5cGUgYFRgIGludG8gdGhlIGBmb3JtRGF0YWAgb2YgdHlwZSBgVGBcbiAqXG4gKiBXaGVuIG1lcmdpbmcgZGVmYXVsdHMgYW5kIGZvcm0gZGF0YSwgd2Ugd2FudCB0byBtZXJnZSBpbiB0aGlzIHNwZWNpZmljIHdheTpcbiAqIC0gb2JqZWN0cyBhcmUgZGVlcGx5IG1lcmdlZFxuICogLSBhcnJheXMgYXJlIG1lcmdlZCBpbiBzdWNoIGEgd2F5IHRoYXQ6XG4gKiAgIC0gd2hlbiB0aGUgYXJyYXkgaXMgc2V0IGluIGZvcm0gZGF0YSwgb25seSBhcnJheSBlbnRyaWVzIHNldCBpbiBmb3JtIGRhdGFcbiAqICAgICBhcmUgZGVlcGx5IG1lcmdlZDsgYWRkaXRpb25hbCBlbnRyaWVzIGZyb20gdGhlIGRlZmF1bHRzIGFyZSBpZ25vcmVkIHVubGVzcyBgbWVyZ2VFeHRyYUFycmF5RGVmYXVsdHNgIGlzIHRydWUsIGluXG4gKiAgICAgd2hpY2ggY2FzZSB0aGUgZXh0cmFzIGFyZSBhcHBlbmRlZCBvbnRvIHRoZSBlbmQgb2YgdGhlIGZvcm0gZGF0YVxuICogICAtIHdoZW4gdGhlIGFycmF5IGlzIG5vdCBzZXQgaW4gZm9ybSBkYXRhLCB0aGUgZGVmYXVsdCBpcyBjb3BpZWQgb3ZlclxuICogLSBzY2FsYXJzIGFyZSBvdmVyd3JpdHRlbi9zZXQgYnkgZm9ybSBkYXRhIHVubGVzcyB1bmRlZmluZWQgYW5kIHRoZXJlIGlzIGEgZGVmYXVsdCBBTkQgYGRlZmF1bHRTdXBlcmNlZGVzVW5kZWZpbmVkYFxuICogICBpcyB0cnVlXG4gKlxuICogQHBhcmFtIFtkZWZhdWx0c10gLSBUaGUgZGVmYXVsdHMgdG8gbWVyZ2VcbiAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGZvcm0gZGF0YSBpbnRvIHdoaWNoIHRoZSBkZWZhdWx0cyB3aWxsIGJlIG1lcmdlZFxuICogQHBhcmFtIFttZXJnZUV4dHJhQXJyYXlEZWZhdWx0cz1mYWxzZV0gLSBJZiB0cnVlLCBhbnkgYWRkaXRpb25hbCBkZWZhdWx0IGFycmF5IGVudHJpZXMgYXJlIGFwcGVuZGVkIG9udG8gdGhlIGZvcm1EYXRhXG4gKiBAcGFyYW0gW2RlZmF1bHRTdXBlcmNlZGVzVW5kZWZpbmVkPWZhbHNlXSAtIElmIHRydWUsIGFuIGV4cGxpY2l0IHVuZGVmaW5lZCB2YWx1ZSB3aWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHRoZSBkZWZhdWx0IHZhbHVlXG4gKiBAcmV0dXJucyAtIFRoZSByZXN1bHRpbmcgbWVyZ2VkIGZvcm0gZGF0YSB3aXRoIGRlZmF1bHRzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlRGVmYXVsdHNXaXRoRm9ybURhdGEoZGVmYXVsdHMsIGZvcm1EYXRhLCBtZXJnZUV4dHJhQXJyYXlEZWZhdWx0cyA9IGZhbHNlLCBkZWZhdWx0U3VwZXJjZWRlc1VuZGVmaW5lZCA9IGZhbHNlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZm9ybURhdGEpKSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRzQXJyYXkgPSBBcnJheS5pc0FycmF5KGRlZmF1bHRzKSA/IGRlZmF1bHRzIDogW107XG4gICAgICAgIGNvbnN0IG1hcHBlZCA9IGZvcm1EYXRhLm1hcCgodmFsdWUsIGlkeCkgPT4ge1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRzQXJyYXlbaWR4XSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZURlZmF1bHRzV2l0aEZvcm1EYXRhKGRlZmF1bHRzQXJyYXlbaWR4XSwgdmFsdWUsIG1lcmdlRXh0cmFBcnJheURlZmF1bHRzLCBkZWZhdWx0U3VwZXJjZWRlc1VuZGVmaW5lZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBNZXJnZSBhbnkgZXh0cmEgZGVmYXVsdHMgd2hlbiBtZXJnZUV4dHJhQXJyYXlEZWZhdWx0cyBpcyB0cnVlXG4gICAgICAgIGlmIChtZXJnZUV4dHJhQXJyYXlEZWZhdWx0cyAmJiBtYXBwZWQubGVuZ3RoIDwgZGVmYXVsdHNBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgIG1hcHBlZC5wdXNoKC4uLmRlZmF1bHRzQXJyYXkuc2xpY2UobWFwcGVkLmxlbmd0aCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXBwZWQ7XG4gICAgfVxuICAgIGlmIChpc09iamVjdChmb3JtRGF0YSkpIHtcbiAgICAgICAgY29uc3QgYWNjID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdHMpOyAvLyBQcmV2ZW50IG11dGF0aW9uIG9mIHNvdXJjZSBvYmplY3QuXG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhmb3JtRGF0YSkucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICAgICAgYWNjW2tleV0gPSBtZXJnZURlZmF1bHRzV2l0aEZvcm1EYXRhKGRlZmF1bHRzID8gZ2V0KGRlZmF1bHRzLCBrZXkpIDoge30sIGdldChmb3JtRGF0YSwga2V5KSwgbWVyZ2VFeHRyYUFycmF5RGVmYXVsdHMsIGRlZmF1bHRTdXBlcmNlZGVzVW5kZWZpbmVkKTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIGFjYyk7XG4gICAgfVxuICAgIGlmIChkZWZhdWx0U3VwZXJjZWRlc1VuZGVmaW5lZCAmJiBmb3JtRGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0cztcbiAgICB9XG4gICAgcmV0dXJuIGZvcm1EYXRhO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWVyZ2VEZWZhdWx0c1dpdGhGb3JtRGF0YS5qcy5tYXAiLCJpbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pc09iamVjdCc7XG4vKiogUmVjdXJzaXZlbHkgbWVyZ2UgZGVlcGx5IG5lc3RlZCBvYmplY3RzLlxuICpcbiAqIEBwYXJhbSBvYmoxIC0gVGhlIGZpcnN0IG9iamVjdCB0byBtZXJnZVxuICogQHBhcmFtIG9iajIgLSBUaGUgc2Vjb25kIG9iamVjdCB0byBtZXJnZVxuICogQHBhcmFtIFtjb25jYXRBcnJheXM9ZmFsc2VdIC0gT3B0aW9uYWwgZmxhZyB0aGF0LCB3aGVuIHRydWUsIHdpbGwgY2F1c2UgYXJyYXlzIHRvIGJlIGNvbmNhdGVuYXRlZC4gVXNlXG4gKiAgICAgICAgICBcInByZXZlbnREdXBsaWNhdGVzXCIgdG8gbWVyZ2UgYXJyYXlzIGluIGEgbWFubmVyIHRoYXQgcHJldmVudHMgYW55IGR1cGxpY2F0ZSBlbnRyaWVzIGZyb20gYmVpbmcgbWVyZ2VkLlxuICogICAgICAgICAgTk9URTogVXNlcyBzaGFsbG93IGNvbXBhcmlzb24gZm9yIHRoZSBkdXBsaWNhdGUgY2hlY2tpbmcuXG4gKiBAcmV0dXJucyAtIEEgbmV3IG9iamVjdCB0aGF0IGlzIHRoZSBtZXJnZSBvZiB0aGUgdHdvIGdpdmVuIG9iamVjdHNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2VPYmplY3RzKG9iajEsIG9iajIsIGNvbmNhdEFycmF5cyA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iajIpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgY29uc3QgbGVmdCA9IG9iajEgPyBvYmoxW2tleV0gOiB7fSwgcmlnaHQgPSBvYmoyW2tleV07XG4gICAgICAgIGlmIChvYmoxICYmIGtleSBpbiBvYmoxICYmIGlzT2JqZWN0KHJpZ2h0KSkge1xuICAgICAgICAgICAgYWNjW2tleV0gPSBtZXJnZU9iamVjdHMobGVmdCwgcmlnaHQsIGNvbmNhdEFycmF5cyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29uY2F0QXJyYXlzICYmIEFycmF5LmlzQXJyYXkobGVmdCkgJiYgQXJyYXkuaXNBcnJheShyaWdodCkpIHtcbiAgICAgICAgICAgIGxldCB0b01lcmdlID0gcmlnaHQ7XG4gICAgICAgICAgICBpZiAoY29uY2F0QXJyYXlzID09PSAncHJldmVudER1cGxpY2F0ZXMnKSB7XG4gICAgICAgICAgICAgICAgdG9NZXJnZSA9IHJpZ2h0LnJlZHVjZSgocmVzdWx0LCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWxlZnQuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY2Nba2V5XSA9IGxlZnQuY29uY2F0KHRvTWVyZ2UpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYWNjW2tleV0gPSByaWdodDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIE9iamVjdC5hc3NpZ24oe30sIG9iajEpKTsgLy8gUHJldmVudCBtdXRhdGlvbiBvZiBzb3VyY2Ugb2JqZWN0LlxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWVyZ2VPYmplY3RzLmpzLm1hcCIsImltcG9ydCB7IENPTlNUX0tFWSB9IGZyb20gJy4vY29uc3RhbnRzJztcbi8qKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgZ2l2ZW4gYHNjaGVtYWAgbWF0Y2hlcyBhIHNpbmdsZSBjb25zdGFudCB2YWx1ZS4gVGhpcyBoYXBwZW5zIHdoZW4gZWl0aGVyIHRoZSBzY2hlbWEgaGFzXG4gKiBhbiBgZW51bWAgYXJyYXkgd2l0aCBhIHNpbmdsZSB2YWx1ZSBvciB0aGVyZSBpcyBhIGBjb25zdGAgZGVmaW5lZC5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3IgYSBmaWVsZFxuICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBgc2NoZW1hYCBoYXMgYSBzaW5nbGUgY29uc3RhbnQgdmFsdWUsIGZhbHNlIG90aGVyd2lzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0NvbnN0YW50KHNjaGVtYSkge1xuICAgIHJldHVybiAoQXJyYXkuaXNBcnJheShzY2hlbWEuZW51bSkgJiYgc2NoZW1hLmVudW0ubGVuZ3RoID09PSAxKSB8fCBDT05TVF9LRVkgaW4gc2NoZW1hO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXNDb25zdGFudC5qcy5tYXAiLCJpbXBvcnQgaXNDb25zdGFudCBmcm9tICcuLi9pc0NvbnN0YW50JztcbmltcG9ydCByZXRyaWV2ZVNjaGVtYSBmcm9tICcuL3JldHJpZXZlU2NoZW1hJztcbi8qKiBDaGVja3MgdG8gc2VlIGlmIHRoZSBgc2NoZW1hYCBjb21iaW5hdGlvbiByZXByZXNlbnRzIGEgc2VsZWN0XG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gdGhlU2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggY2hlY2sgZm9yIGEgc2VsZWN0IGZsYWcgaXMgZGVzaXJlZFxuICogQHBhcmFtIFtyb290U2NoZW1hXSAtIFRoZSByb290IHNjaGVtYSwgdXNlZCB0byBwcmltYXJpbHkgdG8gbG9vayB1cCBgJHJlZmBzXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gVHJ1ZSBpZiBzY2hlbWEgY29udGFpbnMgYSBzZWxlY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1NlbGVjdCh2YWxpZGF0b3IsIHRoZVNjaGVtYSwgcm9vdFNjaGVtYSA9IHt9LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIGNvbnN0IHNjaGVtYSA9IHJldHJpZXZlU2NoZW1hKHZhbGlkYXRvciwgdGhlU2NoZW1hLCByb290U2NoZW1hLCB1bmRlZmluZWQsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICBjb25zdCBhbHRTY2hlbWFzID0gc2NoZW1hLm9uZU9mIHx8IHNjaGVtYS5hbnlPZjtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEuZW51bSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KGFsdFNjaGVtYXMpKSB7XG4gICAgICAgIHJldHVybiBhbHRTY2hlbWFzLmV2ZXJ5KChhbHRTY2hlbWFzKSA9PiB0eXBlb2YgYWx0U2NoZW1hcyAhPT0gJ2Jvb2xlYW4nICYmIGlzQ29uc3RhbnQoYWx0U2NoZW1hcykpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pc1NlbGVjdC5qcy5tYXAiLCJpbXBvcnQgaXNTZWxlY3QgZnJvbSAnLi9pc1NlbGVjdCc7XG4vKiogQ2hlY2tzIHRvIHNlZSBpZiB0aGUgYHNjaGVtYWAgY29tYmluYXRpb24gcmVwcmVzZW50cyBhIG11bHRpLXNlbGVjdFxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIGNoZWNrIGZvciBhIG11bHRpLXNlbGVjdCBmbGFnIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSBbcm9vdFNjaGVtYV0gLSBUaGUgcm9vdCBzY2hlbWEsIHVzZWQgdG8gcHJpbWFyaWx5IHRvIGxvb2sgdXAgYCRyZWZgc1xuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRydWUgaWYgc2NoZW1hIGNvbnRhaW5zIGEgbXVsdGktc2VsZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNNdWx0aVNlbGVjdCh2YWxpZGF0b3IsIHNjaGVtYSwgcm9vdFNjaGVtYSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICBpZiAoIXNjaGVtYS51bmlxdWVJdGVtcyB8fCAhc2NoZW1hLml0ZW1zIHx8IHR5cGVvZiBzY2hlbWEuaXRlbXMgPT09ICdib29sZWFuJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBpc1NlbGVjdCh2YWxpZGF0b3IsIHNjaGVtYS5pdGVtcywgcm9vdFNjaGVtYSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXNNdWx0aVNlbGVjdC5qcy5tYXAiLCJpbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IGlzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuaW1wb3J0IHsgQU5ZX09GX0tFWSwgQ09OU1RfS0VZLCBERUZBVUxUX0tFWSwgREVQRU5ERU5DSUVTX0tFWSwgUFJPUEVSVElFU19LRVksIE9ORV9PRl9LRVksIFJFRl9LRVksIEFMTF9PRl9LRVksIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBmaW5kU2NoZW1hRGVmaW5pdGlvbiBmcm9tICcuLi9maW5kU2NoZW1hRGVmaW5pdGlvbic7XG5pbXBvcnQgZ2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uIGZyb20gJy4vZ2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uJztcbmltcG9ydCBnZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hIGZyb20gJy4uL2dldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEnO1xuaW1wb3J0IGdldFNjaGVtYVR5cGUgZnJvbSAnLi4vZ2V0U2NoZW1hVHlwZSc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnLi4vaXNPYmplY3QnO1xuaW1wb3J0IGlzRml4ZWRJdGVtcyBmcm9tICcuLi9pc0ZpeGVkSXRlbXMnO1xuaW1wb3J0IG1lcmdlRGVmYXVsdHNXaXRoRm9ybURhdGEgZnJvbSAnLi4vbWVyZ2VEZWZhdWx0c1dpdGhGb3JtRGF0YSc7XG5pbXBvcnQgbWVyZ2VPYmplY3RzIGZyb20gJy4uL21lcmdlT2JqZWN0cyc7XG5pbXBvcnQgbWVyZ2VTY2hlbWFzIGZyb20gJy4uL21lcmdlU2NoZW1hcyc7XG5pbXBvcnQgaXNNdWx0aVNlbGVjdCBmcm9tICcuL2lzTXVsdGlTZWxlY3QnO1xuaW1wb3J0IHJldHJpZXZlU2NoZW1hLCB7IHJlc29sdmVEZXBlbmRlbmNpZXMgfSBmcm9tICcuL3JldHJpZXZlU2NoZW1hJztcbmNvbnN0IFBSSU1JVElWRV9UWVBFUyA9IFsnc3RyaW5nJywgJ251bWJlcicsICdpbnRlZ2VyJywgJ2Jvb2xlYW4nLCAnbnVsbCddO1xuLyoqIEVudW0gdGhhdCBpbmRpY2F0ZXMgaG93IGBzY2hlbWEuYWRkaXRpb25hbEl0ZW1zYCBzaG91bGQgYmUgaGFuZGxlZCBieSB0aGUgYGdldElubmVyU2NoZW1hRm9yQXJyYXlJdGVtKClgIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgdmFyIEFkZGl0aW9uYWxJdGVtc0hhbmRsaW5nO1xuKGZ1bmN0aW9uIChBZGRpdGlvbmFsSXRlbXNIYW5kbGluZykge1xuICAgIEFkZGl0aW9uYWxJdGVtc0hhbmRsaW5nW0FkZGl0aW9uYWxJdGVtc0hhbmRsaW5nW1wiSWdub3JlXCJdID0gMF0gPSBcIklnbm9yZVwiO1xuICAgIEFkZGl0aW9uYWxJdGVtc0hhbmRsaW5nW0FkZGl0aW9uYWxJdGVtc0hhbmRsaW5nW1wiSW52ZXJ0XCJdID0gMV0gPSBcIkludmVydFwiO1xuICAgIEFkZGl0aW9uYWxJdGVtc0hhbmRsaW5nW0FkZGl0aW9uYWxJdGVtc0hhbmRsaW5nW1wiRmFsbGJhY2tcIl0gPSAyXSA9IFwiRmFsbGJhY2tcIjtcbn0pKEFkZGl0aW9uYWxJdGVtc0hhbmRsaW5nIHx8IChBZGRpdGlvbmFsSXRlbXNIYW5kbGluZyA9IHt9KSk7XG4vKiogR2l2ZW4gYSBgc2NoZW1hYCB3aWxsIHJldHVybiBhbiBpbm5lciBzY2hlbWEgdGhhdCBmb3IgYW4gYXJyYXkgaXRlbS4gVGhpcyBpcyBjb21wdXRlZCBkaWZmZXJlbnRseSBiYXNlZCBvbiB0aGVcbiAqIGBhZGRpdGlvbmFsSXRlbXNgIGVudW0gYW5kIHRoZSB2YWx1ZSBvZiBgaWR4YC4gVGhlcmUgYXJlIGZvdXIgcG9zc2libGUgcmV0dXJuczpcbiAqIDEuIElmIGBpZHhgIGlzID49IDAsIHRoZW4gaWYgYHNjaGVtYS5pdGVtc2AgaXMgYW4gYXJyYXkgdGhlIGBpZHhgdGggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgcmV0dXJuZWQgaWYgaXQgaXMgYSB2YWxpZFxuICogICAgaW5kZXggYW5kIG5vdCBhIGJvb2xlYW4sIG90aGVyd2lzZSBpdCBmYWxscyB0aHJvdWdoIHRvIDMuXG4gKiAyLiBJZiBgc2NoZW1hLml0ZW1zYCBpcyBub3QgYW4gYXJyYXkgQU5EIHRydXRoeSBhbmQgbm90IGEgYm9vbGVhbiwgdGhlbiBgc2NoZW1hLml0ZW1zYCBpcyByZXR1cm5lZCBzaW5jZSBpdCBhY3R1YWxseVxuICogICAgaXMgYSBzY2hlbWEsIG90aGVyd2lzZSBpdCBmYWxscyB0aHJvdWdoIHRvIDMuXG4gKiAzLiBJZiBgYWRkaXRpb25hbEl0ZW1zYCBpcyBub3QgYEFkZGl0aW9uYWxJdGVtc0hhbmRsaW5nLklnbm9yZWAgYW5kIGBzY2hlbWEuYWRkaXRpb25hbEl0ZW1zYCBpcyBhbiBvYmplY3QsIHRoZW5cbiAqICAgIGBzY2hlbWEuYWRkaXRpb25hbEl0ZW1zYCBpcyByZXR1cm5lZCBzaW5jZSBpdCBhY3R1YWxseSBpcyBhIHNjaGVtYSwgb3RoZXJ3aXNlIGl0IGZhbGxzIHRocm91Z2ggdG8gNC5cbiAqIDQuIHt9IGlzIHJldHVybmVkIHJlcHJlc2VudGluZyBhbiBlbXB0eSBzY2hlbWFcbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmcm9tIHdoaWNoIHRvIGdldCB0aGUgcGFydGljdWxhciBpdGVtXG4gKiBAcGFyYW0gW2FkZGl0aW9uYWxJdGVtcz1BZGRpdGlvbmFsSXRlbXNIYW5kbGluZy5JZ25vcmVdIC0gSG93IGRvIHdlIHdhbnQgdG8gaGFuZGxlIGFkZGl0aW9uYWwgaXRlbXM/XG4gKiBAcGFyYW0gW2lkeD0tMV0gLSBJbmRleCwgaWYgbm9uLW5lZ2F0aXZlLCB3aWxsIGJlIHVzZWQgdG8gcmV0dXJuIHRoZSBpZHgtdGggZWxlbWVudCBpbiBhIGBzY2hlbWEuaXRlbXNgIGFycmF5XG4gKiBAcmV0dXJucyAtIFRoZSBiZXN0IGZpdCBzY2hlbWEgb2JqZWN0IGZyb20gdGhlIGBzY2hlbWFgIGdpdmVuIHRoZSBgYWRkaXRpb25hbEl0ZW1zYCBhbmQgYGlkeGAgbW9kaWZpZXJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbm5lclNjaGVtYUZvckFycmF5SXRlbShzY2hlbWEsIGFkZGl0aW9uYWxJdGVtcyA9IEFkZGl0aW9uYWxJdGVtc0hhbmRsaW5nLklnbm9yZSwgaWR4ID0gLTEpIHtcbiAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hLml0ZW1zKSAmJiBpZHggPCBzY2hlbWEuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gc2NoZW1hLml0ZW1zW2lkeF07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHNjaGVtYS5pdGVtcyAmJiAhQXJyYXkuaXNBcnJheShzY2hlbWEuaXRlbXMpICYmIHR5cGVvZiBzY2hlbWEuaXRlbXMgIT09ICdib29sZWFuJykge1xuICAgICAgICByZXR1cm4gc2NoZW1hLml0ZW1zO1xuICAgIH1cbiAgICBpZiAoYWRkaXRpb25hbEl0ZW1zICE9PSBBZGRpdGlvbmFsSXRlbXNIYW5kbGluZy5JZ25vcmUgJiYgaXNPYmplY3Qoc2NoZW1hLmFkZGl0aW9uYWxJdGVtcykpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYS5hZGRpdGlvbmFsSXRlbXM7XG4gICAgfVxuICAgIHJldHVybiB7fTtcbn1cbi8qKiBFaXRoZXIgYWRkIGBjb21wdXRlZERlZmF1bHRgIGF0IGBrZXlgIGludG8gYG9iamAgb3Igbm90IGFkZCBpdCBiYXNlZCBvbiBpdHMgdmFsdWUsIHRoZSB2YWx1ZSBvZlxuICogYGluY2x1ZGVVbmRlZmluZWRWYWx1ZXNgLCB0aGUgdmFsdWUgb2YgYGVtcHR5T2JqZWN0RmllbGRzYCBhbmQgaWYgaXRzIHBhcmVudCBmaWVsZCBpcyByZXF1aXJlZC4gR2VuZXJhbGx5IHVuZGVmaW5lZFxuICogYGNvbXB1dGVkRGVmYXVsdGAgdmFsdWVzIGFyZSBhZGRlZCBvbmx5IHdoZW4gYGluY2x1ZGVVbmRlZmluZWRWYWx1ZXNgIGlzIGVpdGhlciB0cnVlL1wiZXhjbHVkZU9iamVjdENoaWxkcmVuXCIuIElmIGBcbiAqIGluY2x1ZGVVbmRlZmluZWRWYWx1ZXNgIGlzIGZhbHNlIGFuZCBgZW1wdHlPYmplY3RGaWVsZHNgIGlzIG5vdCBcInNraXBEZWZhdWx0c1wiLCB0aGVuIG5vbi11bmRlZmluZWQgYW5kIG5vbi1lbXB0eS1vYmplY3RcbiAqIHZhbHVlcyB3aWxsIGJlIGFkZGVkIGJhc2VkIG9uIGNlcnRhaW4gY29uZGl0aW9ucy5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCBpbnRvIHdoaWNoIHRoZSBjb21wdXRlZCBkZWZhdWx0IG1heSBiZSBhZGRlZFxuICogQHBhcmFtIGtleSAtIFRoZSBrZXkgaW50byB0aGUgb2JqZWN0IGF0IHdoaWNoIHRoZSBjb21wdXRlZCBkZWZhdWx0IG1heSBiZSBhZGRlZFxuICogQHBhcmFtIGNvbXB1dGVkRGVmYXVsdCAtIFRoZSBjb21wdXRlZCBkZWZhdWx0IHZhbHVlIHRoYXQgbWF5YmUgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBvYmpcbiAqIEBwYXJhbSBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzIC0gT3B0aW9uYWwgZmxhZywgaWYgdHJ1ZSwgY2F1c2UgdW5kZWZpbmVkIHZhbHVlcyB0byBiZSBhZGRlZCBhcyBkZWZhdWx0cy5cbiAqICAgICAgICAgIElmIFwiZXhjbHVkZU9iamVjdENoaWxkcmVuXCIsIGNhdXNlIHVuZGVmaW5lZCB2YWx1ZXMgZm9yIHRoaXMgb2JqZWN0IGFuZCBwYXNzIGBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzYCBhc1xuICogICAgICAgICAgZmFsc2Ugd2hlbiBjb21wdXRpbmcgZGVmYXVsdHMgZm9yIGFueSBuZXN0ZWQgb2JqZWN0IHByb3BlcnRpZXMuIElmIFwiYWxsb3dFbXB0eU9iamVjdFwiLCBwcmV2ZW50cyB1bmRlZmluZWRcbiAqICAgICAgICAgIHZhbHVlcyBpbiB0aGlzIG9iamVjdCB3aGlsZSBhbGxvdyB0aGUgb2JqZWN0IGl0c2VsZiB0byBiZSBlbXB0eSBhbmQgcGFzc2luZyBgaW5jbHVkZVVuZGVmaW5lZFZhbHVlc2AgYXNcbiAqICAgICAgICAgIGZhbHNlIHdoZW4gY29tcHV0aW5nIGRlZmF1bHRzIGZvciBhbnkgbmVzdGVkIG9iamVjdCBwcm9wZXJ0aWVzLlxuICogQHBhcmFtIGlzUGFyZW50UmVxdWlyZWQgLSBUaGUgb3B0aW9uYWwgYm9vbGVhbiB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRoZSBwYXJlbnQgZmllbGQgaXMgcmVxdWlyZWRcbiAqIEBwYXJhbSByZXF1aXJlZEZpZWxkcyAtIFRoZSBsaXN0IG9mIGZpZWxkcyB0aGF0IGFyZSByZXF1aXJlZFxuICogQHBhcmFtIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9iamVjdCwgaWYgcHJvdmlkZWQsIGFsbG93cyB1c2VycyB0byBvdmVycmlkZVxuICogICAgICAgIGRlZmF1bHQgZm9ybSBzdGF0ZSBiZWhhdmlvclxuICogQHBhcmFtIGlzQ29uc3QgLSBPcHRpb25hbCBmbGFnLCBpZiB0cnVlLCBpbmRpY2F0ZXMgdGhhdCB0aGUgc2NoZW1hIGhhcyBhIGNvbnN0IHByb3BlcnR5IGRlZmluZWQsIHRodXMgd2Ugc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIGNvbXB1dGVkRGVmYXVsdCBzaW5jZSBpdCdzIGNvbWluZyBmcm9tIHRoZSBjb25zdC5cbiAqL1xuZnVuY3Rpb24gbWF5YmVBZGREZWZhdWx0VG9PYmplY3Qob2JqLCBrZXksIGNvbXB1dGVkRGVmYXVsdCwgaW5jbHVkZVVuZGVmaW5lZFZhbHVlcywgaXNQYXJlbnRSZXF1aXJlZCwgcmVxdWlyZWRGaWVsZHMgPSBbXSwgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9IHt9LCBpc0NvbnN0ID0gZmFsc2UpIHtcbiAgICBjb25zdCB7IGVtcHR5T2JqZWN0RmllbGRzID0gJ3BvcHVsYXRlQWxsRGVmYXVsdHMnIH0gPSBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yO1xuICAgIGlmIChpbmNsdWRlVW5kZWZpbmVkVmFsdWVzIHx8IGlzQ29uc3QpIHtcbiAgICAgICAgLy8gSWYgaW5jbHVkZVVuZGVmaW5lZFZhbHVlc1xuICAgICAgICAvLyBPciBpZiB0aGUgc2NoZW1hIGhhcyBhIGNvbnN0IHByb3BlcnR5IGRlZmluZWQsIHRoZW4gd2Ugc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIGNvbXB1dGVkRGVmYXVsdCBzaW5jZSBpdCdzIGNvbWluZyBmcm9tIHRoZSBjb25zdC5cbiAgICAgICAgb2JqW2tleV0gPSBjb21wdXRlZERlZmF1bHQ7XG4gICAgfVxuICAgIGVsc2UgaWYgKGVtcHR5T2JqZWN0RmllbGRzICE9PSAnc2tpcERlZmF1bHRzJykge1xuICAgICAgICBpZiAoaXNPYmplY3QoY29tcHV0ZWREZWZhdWx0KSkge1xuICAgICAgICAgICAgLy8gSWYgaXNQYXJlbnRSZXF1aXJlZCBpcyB1bmRlZmluZWQsIHRoZW4gd2UgYXJlIGF0IHRoZSByb290IGxldmVsIG9mIHRoZSBzY2hlbWEgc28gZGVmZXIgdG8gdGhlIHJlcXVpcmVkbmVzcyBvZlxuICAgICAgICAgICAgLy8gdGhlIGZpZWxkIGtleSBpdHNlbGYgaW4gdGhlIGByZXF1aXJlZEZpZWxkYCBsaXN0XG4gICAgICAgICAgICBjb25zdCBpc1NlbGZPclBhcmVudFJlcXVpcmVkID0gaXNQYXJlbnRSZXF1aXJlZCA9PT0gdW5kZWZpbmVkID8gcmVxdWlyZWRGaWVsZHMuaW5jbHVkZXMoa2V5KSA6IGlzUGFyZW50UmVxdWlyZWQ7XG4gICAgICAgICAgICAvLyBJZiBlbXB0eU9iamVjdEZpZWxkcyAnc2tpcEVtcHR5RGVmYXVsdHMnIHN0b3JlIGNvbXB1dGVkRGVmYXVsdCBpZiBpdCdzIGEgbm9uLWVtcHR5IG9iamVjdChlLmcuIG5vdCB7fSlcbiAgICAgICAgICAgIGlmIChlbXB0eU9iamVjdEZpZWxkcyA9PT0gJ3NraXBFbXB0eURlZmF1bHRzJykge1xuICAgICAgICAgICAgICAgIGlmICghaXNFbXB0eShjb21wdXRlZERlZmF1bHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIG9ialtrZXldID0gY29tcHV0ZWREZWZhdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEVsc2Ugc3RvcmUgY29tcHV0ZWREZWZhdWx0IGlmIGl0J3MgYSBub24tZW1wdHkgb2JqZWN0KGUuZy4gbm90IHt9KSBhbmQgc2F0aXNmaWVzIGNlcnRhaW4gY29uZGl0aW9uc1xuICAgICAgICAgICAgLy8gQ29uZGl0aW9uIDE6IElmIGNvbXB1dGVkRGVmYXVsdCBpcyBub3QgZW1wdHkgb3IgaWYgdGhlIGtleSBpcyBhIHJlcXVpcmVkIGZpZWxkXG4gICAgICAgICAgICAvLyBDb25kaXRpb24gMjogSWYgdGhlIHBhcmVudCBvYmplY3QgaXMgcmVxdWlyZWQgb3IgZW1wdHlPYmplY3RGaWVsZHMgaXMgbm90ICdwb3B1bGF0ZVJlcXVpcmVkRGVmYXVsdHMnXG4gICAgICAgICAgICBlbHNlIGlmICgoIWlzRW1wdHkoY29tcHV0ZWREZWZhdWx0KSB8fCByZXF1aXJlZEZpZWxkcy5pbmNsdWRlcyhrZXkpKSAmJlxuICAgICAgICAgICAgICAgIChpc1NlbGZPclBhcmVudFJlcXVpcmVkIHx8IGVtcHR5T2JqZWN0RmllbGRzICE9PSAncG9wdWxhdGVSZXF1aXJlZERlZmF1bHRzJykpIHtcbiAgICAgICAgICAgICAgICBvYmpba2V5XSA9IGNvbXB1dGVkRGVmYXVsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChcbiAgICAgICAgLy8gU3RvcmUgY29tcHV0ZWREZWZhdWx0IGlmIGl0J3MgYSBkZWZpbmVkIHByaW1pdGl2ZSAoZS5nLiwgdHJ1ZSkgYW5kIHNhdGlzZmllcyBjZXJ0YWluIGNvbmRpdGlvbnNcbiAgICAgICAgLy8gQ29uZGl0aW9uIDE6IGNvbXB1dGVkRGVmYXVsdCBpcyBub3QgdW5kZWZpbmVkXG4gICAgICAgIC8vIENvbmRpdGlvbiAyOiBJZiBlbXB0eU9iamVjdEZpZWxkcyBpcyAncG9wdWxhdGVBbGxEZWZhdWx0cycgb3IgJ3NraXBFbXB0eURlZmF1bHRzKSBvciBpZiB0aGUga2V5IGlzIGEgcmVxdWlyZWQgZmllbGRcbiAgICAgICAgY29tcHV0ZWREZWZhdWx0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIChlbXB0eU9iamVjdEZpZWxkcyA9PT0gJ3BvcHVsYXRlQWxsRGVmYXVsdHMnIHx8XG4gICAgICAgICAgICAgICAgZW1wdHlPYmplY3RGaWVsZHMgPT09ICdza2lwRW1wdHlEZWZhdWx0cycgfHxcbiAgICAgICAgICAgICAgICByZXF1aXJlZEZpZWxkcy5pbmNsdWRlcyhrZXkpKSkge1xuICAgICAgICAgICAgb2JqW2tleV0gPSBjb21wdXRlZERlZmF1bHQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4vKiogQ29tcHV0ZXMgdGhlIGRlZmF1bHRzIGZvciB0aGUgY3VycmVudCBgc2NoZW1hYCBnaXZlbiB0aGUgYHJhd0Zvcm1EYXRhYCBhbmQgYHBhcmVudERlZmF1bHRzYCBpZiBhbnkuIFRoaXMgZHJpbGxzIGludG9cbiAqIGVhY2ggbGV2ZWwgb2YgdGhlIHNjaGVtYSwgcmVjdXJzaXZlbHksIHRvIGZpbGwgb3V0IGV2ZXJ5IGxldmVsIG9mIGRlZmF1bHRzIHByb3ZpZGVkIGJ5IHRoZSBzY2hlbWEuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gcmF3U2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIGRlZmF1bHQgc3RhdGUgaXMgZGVzaXJlZFxuICogQHBhcmFtIHtDb21wdXRlRGVmYXVsdHNQcm9wc30gY29tcHV0ZURlZmF1bHRzUHJvcHMgLSBPcHRpb25hbCBwcm9wcyBmb3IgdGhpcyBmdW5jdGlvblxuICogQHJldHVybnMgLSBUaGUgcmVzdWx0aW5nIGBmb3JtRGF0YWAgd2l0aCBhbGwgdGhlIGRlZmF1bHRzIHByb3ZpZGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlRGVmYXVsdHModmFsaWRhdG9yLCByYXdTY2hlbWEsIGNvbXB1dGVEZWZhdWx0c1Byb3BzID0ge30pIHtcbiAgICBjb25zdCB7IHBhcmVudERlZmF1bHRzLCByYXdGb3JtRGF0YSwgcm9vdFNjaGVtYSA9IHt9LCBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzID0gZmFsc2UsIF9yZWN1cnNlTGlzdCA9IFtdLCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID0gdW5kZWZpbmVkLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZiA9IHVuZGVmaW5lZCwgcmVxdWlyZWQsIH0gPSBjb21wdXRlRGVmYXVsdHNQcm9wcztcbiAgICBjb25zdCBmb3JtRGF0YSA9IChpc09iamVjdChyYXdGb3JtRGF0YSkgPyByYXdGb3JtRGF0YSA6IHt9KTtcbiAgICBjb25zdCBzY2hlbWEgPSBpc09iamVjdChyYXdTY2hlbWEpID8gcmF3U2NoZW1hIDoge307XG4gICAgLy8gQ29tcHV0ZSB0aGUgZGVmYXVsdHMgcmVjdXJzaXZlbHk6IGdpdmUgaGlnaGVzdCBwcmlvcml0eSB0byBkZWVwZXN0IG5vZGVzLlxuICAgIGxldCBkZWZhdWx0cyA9IHBhcmVudERlZmF1bHRzO1xuICAgIC8vIElmIHdlIGdldCBhIG5ldyBzY2hlbWEsIHRoZW4gd2UgbmVlZCB0byByZWNvbXB1dGUgZGVmYXVsdHMgYWdhaW4gZm9yIHRoZSBuZXcgc2NoZW1hIGZvdW5kLlxuICAgIGxldCBzY2hlbWFUb0NvbXB1dGUgPSBudWxsO1xuICAgIGxldCBleHBlcmltZW50YWxfZGZzYl90b19jb21wdXRlID0gZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcjtcbiAgICBsZXQgdXBkYXRlZFJlY3Vyc2VMaXN0ID0gX3JlY3Vyc2VMaXN0O1xuICAgIGlmIChzY2hlbWFbQ09OU1RfS0VZXSAmJiAoZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9PT0gbnVsbCB8fCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLmNvbnN0QXNEZWZhdWx0cykgIT09ICduZXZlcicpIHtcbiAgICAgICAgZGVmYXVsdHMgPSBzY2hlbWEuY29uc3Q7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KGRlZmF1bHRzKSAmJiBpc09iamVjdChzY2hlbWEuZGVmYXVsdCkpIHtcbiAgICAgICAgLy8gRm9yIG9iamVjdCBkZWZhdWx0cywgb25seSBvdmVycmlkZSBwYXJlbnQgZGVmYXVsdHMgdGhhdCBhcmUgZGVmaW5lZCBpblxuICAgICAgICAvLyBzY2hlbWEuZGVmYXVsdC5cbiAgICAgICAgZGVmYXVsdHMgPSBtZXJnZU9iamVjdHMoZGVmYXVsdHMsIHNjaGVtYS5kZWZhdWx0KTtcbiAgICB9XG4gICAgZWxzZSBpZiAoREVGQVVMVF9LRVkgaW4gc2NoZW1hKSB7XG4gICAgICAgIGRlZmF1bHRzID0gc2NoZW1hLmRlZmF1bHQ7XG4gICAgfVxuICAgIGVsc2UgaWYgKFJFRl9LRVkgaW4gc2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IHJlZk5hbWUgPSBzY2hlbWFbUkVGX0tFWV07XG4gICAgICAgIC8vIFVzZSByZWZlcmVuY2VkIHNjaGVtYSBkZWZhdWx0cyBmb3IgdGhpcyBub2RlLlxuICAgICAgICBpZiAoIV9yZWN1cnNlTGlzdC5pbmNsdWRlcyhyZWZOYW1lKSkge1xuICAgICAgICAgICAgdXBkYXRlZFJlY3Vyc2VMaXN0ID0gX3JlY3Vyc2VMaXN0LmNvbmNhdChyZWZOYW1lKTtcbiAgICAgICAgICAgIHNjaGVtYVRvQ29tcHV0ZSA9IGZpbmRTY2hlbWFEZWZpbml0aW9uKHJlZk5hbWUsIHJvb3RTY2hlbWEpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKERFUEVOREVOQ0lFU19LRVkgaW4gc2NoZW1hKSB7XG4gICAgICAgIC8vIEdldCB0aGUgZGVmYXVsdCBpZiBzZXQgZnJvbSBwcm9wZXJ0aWVzIHRvIGVuc3VyZSB0aGUgZGVwZW5kZW5jaWVzIGNvbmRpdGlvbnMgYXJlIHJlc29sdmVkIGJhc2VkIG9uIGl0XG4gICAgICAgIGNvbnN0IGRlZmF1bHRGb3JtRGF0YSA9IHtcbiAgICAgICAgICAgIC4uLmdldERlZmF1bHRCYXNlZE9uU2NoZW1hVHlwZSh2YWxpZGF0b3IsIHNjaGVtYSwgY29tcHV0ZURlZmF1bHRzUHJvcHMsIGRlZmF1bHRzKSxcbiAgICAgICAgICAgIC4uLmZvcm1EYXRhLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZXNvbHZlZFNjaGVtYSA9IHJlc29sdmVEZXBlbmRlbmNpZXModmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGZhbHNlLCBbXSwgZGVmYXVsdEZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgIHNjaGVtYVRvQ29tcHV0ZSA9IHJlc29sdmVkU2NoZW1hWzBdOyAvLyBwaWNrIHRoZSBmaXJzdCBlbGVtZW50IGZyb20gcmVzb2x2ZSBkZXBlbmRlbmNpZXNcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNGaXhlZEl0ZW1zKHNjaGVtYSkpIHtcbiAgICAgICAgZGVmYXVsdHMgPSBzY2hlbWEuaXRlbXMubWFwKChpdGVtU2NoZW1hLCBpZHgpID0+IGNvbXB1dGVEZWZhdWx0cyh2YWxpZGF0b3IsIGl0ZW1TY2hlbWEsIHtcbiAgICAgICAgICAgIHJvb3RTY2hlbWEsXG4gICAgICAgICAgICBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzLFxuICAgICAgICAgICAgX3JlY3Vyc2VMaXN0LFxuICAgICAgICAgICAgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcixcbiAgICAgICAgICAgIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mLFxuICAgICAgICAgICAgcGFyZW50RGVmYXVsdHM6IEFycmF5LmlzQXJyYXkocGFyZW50RGVmYXVsdHMpID8gcGFyZW50RGVmYXVsdHNbaWR4XSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHJhd0Zvcm1EYXRhOiBmb3JtRGF0YSxcbiAgICAgICAgICAgIHJlcXVpcmVkLFxuICAgICAgICB9KSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKE9ORV9PRl9LRVkgaW4gc2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IHsgb25lT2YsIC4uLnJlbWFpbmluZyB9ID0gc2NoZW1hO1xuICAgICAgICBpZiAob25lT2YubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3IgPSBnZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hKHNjaGVtYSk7XG4gICAgICAgIGNvbnN0IHsgdHlwZSA9ICdudWxsJyB9ID0gcmVtYWluaW5nO1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodHlwZSkgJiZcbiAgICAgICAgICAgIFBSSU1JVElWRV9UWVBFUy5pbmNsdWRlcyh0eXBlKSAmJlxuICAgICAgICAgICAgKGV4cGVyaW1lbnRhbF9kZnNiX3RvX2NvbXB1dGUgPT09IG51bGwgfHwgZXhwZXJpbWVudGFsX2Rmc2JfdG9fY29tcHV0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwZXJpbWVudGFsX2Rmc2JfdG9fY29tcHV0ZS5jb25zdEFzRGVmYXVsdHMpID09PSAnc2tpcE9uZU9mJykge1xuICAgICAgICAgICAgLy8gSWYgd2UgYXJlIGluIGEgb25lT2Ygb2YgYSBwcmltaXRpdmUgdHlwZSwgdGhlbiB3ZSB3YW50IHRvIHBhc3MgY29uc3RBc0RlZmF1bHRzIGFzICduZXZlcicgZm9yIHRoZSByZWN1cnNpb25cbiAgICAgICAgICAgIGV4cGVyaW1lbnRhbF9kZnNiX3RvX2NvbXB1dGUgPSB7IC4uLmV4cGVyaW1lbnRhbF9kZnNiX3RvX2NvbXB1dGUsIGNvbnN0QXNEZWZhdWx0czogJ25ldmVyJyB9O1xuICAgICAgICB9XG4gICAgICAgIHNjaGVtYVRvQ29tcHV0ZSA9IG9uZU9mW2dldENsb3Nlc3RNYXRjaGluZ09wdGlvbih2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIGlzRW1wdHkoZm9ybURhdGEpID8gdW5kZWZpbmVkIDogZm9ybURhdGEsIG9uZU9mLCAwLCBkaXNjcmltaW5hdG9yLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZildO1xuICAgICAgICBzY2hlbWFUb0NvbXB1dGUgPSBtZXJnZVNjaGVtYXMocmVtYWluaW5nLCBzY2hlbWFUb0NvbXB1dGUpO1xuICAgIH1cbiAgICBlbHNlIGlmIChBTllfT0ZfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICBjb25zdCB7IGFueU9mLCAuLi5yZW1haW5pbmcgfSA9IHNjaGVtYTtcbiAgICAgICAgaWYgKGFueU9mLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaXNjcmltaW5hdG9yID0gZ2V0RGlzY3JpbWluYXRvckZpZWxkRnJvbVNjaGVtYShzY2hlbWEpO1xuICAgICAgICBzY2hlbWFUb0NvbXB1dGUgPSBhbnlPZltnZXRDbG9zZXN0TWF0Y2hpbmdPcHRpb24odmFsaWRhdG9yLCByb290U2NoZW1hLCBpc0VtcHR5KGZvcm1EYXRhKSA/IHVuZGVmaW5lZCA6IGZvcm1EYXRhLCBhbnlPZiwgMCwgZGlzY3JpbWluYXRvciwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpXTtcbiAgICAgICAgc2NoZW1hVG9Db21wdXRlID0gbWVyZ2VTY2hlbWFzKHJlbWFpbmluZywgc2NoZW1hVG9Db21wdXRlKTtcbiAgICB9XG4gICAgaWYgKHNjaGVtYVRvQ29tcHV0ZSkge1xuICAgICAgICByZXR1cm4gY29tcHV0ZURlZmF1bHRzKHZhbGlkYXRvciwgc2NoZW1hVG9Db21wdXRlLCB7XG4gICAgICAgICAgICByb290U2NoZW1hLFxuICAgICAgICAgICAgaW5jbHVkZVVuZGVmaW5lZFZhbHVlcyxcbiAgICAgICAgICAgIF9yZWN1cnNlTGlzdDogdXBkYXRlZFJlY3Vyc2VMaXN0LFxuICAgICAgICAgICAgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcjogZXhwZXJpbWVudGFsX2Rmc2JfdG9fY29tcHV0ZSxcbiAgICAgICAgICAgIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mLFxuICAgICAgICAgICAgcGFyZW50RGVmYXVsdHM6IGRlZmF1bHRzLFxuICAgICAgICAgICAgcmF3Rm9ybURhdGE6IGZvcm1EYXRhLFxuICAgICAgICAgICAgcmVxdWlyZWQsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBObyBkZWZhdWx0cyBkZWZpbmVkIGZvciB0aGlzIG5vZGUsIGZhbGxiYWNrIHRvIGdlbmVyaWMgdHlwZWQgb25lcy5cbiAgICBpZiAoZGVmYXVsdHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkZWZhdWx0cyA9IHNjaGVtYS5kZWZhdWx0O1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0QmFzZWRPblNjaGVtYVR5cGUgPSBnZXREZWZhdWx0QmFzZWRPblNjaGVtYVR5cGUodmFsaWRhdG9yLCBzY2hlbWEsIGNvbXB1dGVEZWZhdWx0c1Byb3BzLCBkZWZhdWx0cyk7XG4gICAgcmV0dXJuIGRlZmF1bHRCYXNlZE9uU2NoZW1hVHlwZSAhPT0gbnVsbCAmJiBkZWZhdWx0QmFzZWRPblNjaGVtYVR5cGUgIT09IHZvaWQgMCA/IGRlZmF1bHRCYXNlZE9uU2NoZW1hVHlwZSA6IGRlZmF1bHRzO1xufVxuLyoqIENvbXB1dGVzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBvYmplY3RzLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHJhd1NjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBkZWZhdWx0IHN0YXRlIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSB7Q29tcHV0ZURlZmF1bHRzUHJvcHN9IGNvbXB1dGVEZWZhdWx0c1Byb3BzIC0gT3B0aW9uYWwgcHJvcHMgZm9yIHRoaXMgZnVuY3Rpb25cbiAqIEBwYXJhbSBkZWZhdWx0cyAtIE9wdGlvbmFsIHByb3BzIGZvciB0aGlzIGZ1bmN0aW9uXG4gKiBAcmV0dXJucyAtIFRoZSBkZWZhdWx0IHZhbHVlIGJhc2VkIG9uIHRoZSBzY2hlbWEgdHlwZSBpZiB0aGV5IGFyZSBkZWZpbmVkIGZvciBvYmplY3Qgb3IgYXJyYXkgc2NoZW1hcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdERlZmF1bHRzKHZhbGlkYXRvciwgcmF3U2NoZW1hLCB7IHJhd0Zvcm1EYXRhLCByb290U2NoZW1hID0ge30sIGluY2x1ZGVVbmRlZmluZWRWYWx1ZXMgPSBmYWxzZSwgX3JlY3Vyc2VMaXN0ID0gW10sIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPSB1bmRlZmluZWQsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mID0gdW5kZWZpbmVkLCByZXF1aXJlZCwgfSA9IHt9LCBkZWZhdWx0cykge1xuICAgIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSAoaXNPYmplY3QocmF3Rm9ybURhdGEpID8gcmF3Rm9ybURhdGEgOiB7fSk7XG4gICAgICAgIGNvbnN0IHNjaGVtYSA9IHJhd1NjaGVtYTtcbiAgICAgICAgLy8gVGhpcyBpcyBhIGN1c3RvbSBhZGRpdGlvbiB0aGF0IGZpeGVzIHRoaXMgaXNzdWU6XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yanNmLXRlYW0vcmVhY3QtanNvbnNjaGVtYS1mb3JtL2lzc3Vlcy8zODMyXG4gICAgICAgIGNvbnN0IHJldHJpZXZlZFNjaGVtYSA9IChleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID09PSBudWxsIHx8IGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IuYWxsT2YpID09PSAncG9wdWxhdGVEZWZhdWx0cycgJiYgQUxMX09GX0tFWSBpbiBzY2hlbWFcbiAgICAgICAgICAgID8gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZilcbiAgICAgICAgICAgIDogc2NoZW1hO1xuICAgICAgICBjb25zdCBwYXJlbnRDb25zdCA9IHJldHJpZXZlZFNjaGVtYVtDT05TVF9LRVldO1xuICAgICAgICBjb25zdCBvYmplY3REZWZhdWx0cyA9IE9iamVjdC5rZXlzKHJldHJpZXZlZFNjaGVtYS5wcm9wZXJ0aWVzIHx8IHt9KS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eVNjaGVtYSA9IGdldChyZXRyaWV2ZWRTY2hlbWEsIFtQUk9QRVJUSUVTX0tFWSwga2V5XSk7XG4gICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgcGFyZW50IHNjaGVtYSBoYXMgYSBjb25zdCBwcm9wZXJ0eSBkZWZpbmVkIEFORCB3ZSBhcmUgc3VwcG9ydGluZyBjb25zdCBhcyBkZWZhdWx0cywgdGhlbiB3ZVxuICAgICAgICAgICAgLy8gc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIGNvbXB1dGVkRGVmYXVsdCBzaW5jZSBpdCdzIGNvbWluZyBmcm9tIHRoZSBjb25zdC5cbiAgICAgICAgICAgIGNvbnN0IGhhc1BhcmVudENvbnN0ID0gaXNPYmplY3QocGFyZW50Q29uc3QpICYmIHBhcmVudENvbnN0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IGhhc0NvbnN0ID0gKChpc09iamVjdChwcm9wZXJ0eVNjaGVtYSkgJiYgQ09OU1RfS0VZIGluIHByb3BlcnR5U2NoZW1hKSB8fCBoYXNQYXJlbnRDb25zdCkgJiZcbiAgICAgICAgICAgICAgICAoZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9PT0gbnVsbCB8fCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLmNvbnN0QXNEZWZhdWx0cykgIT09ICduZXZlcic7XG4gICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBkZWZhdWx0cyBmb3IgdGhpcyBub2RlLCB3aXRoIHRoZSBwYXJlbnQgZGVmYXVsdHMgd2UgbWlnaHRcbiAgICAgICAgICAgIC8vIGhhdmUgZnJvbSBhIHByZXZpb3VzIHJ1bjogZGVmYXVsdHNba2V5XS5cbiAgICAgICAgICAgIGNvbnN0IGNvbXB1dGVkRGVmYXVsdCA9IGNvbXB1dGVEZWZhdWx0cyh2YWxpZGF0b3IsIHByb3BlcnR5U2NoZW1hLCB7XG4gICAgICAgICAgICAgICAgcm9vdFNjaGVtYSxcbiAgICAgICAgICAgICAgICBfcmVjdXJzZUxpc3QsXG4gICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcixcbiAgICAgICAgICAgICAgICBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZixcbiAgICAgICAgICAgICAgICBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzOiBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzID09PSB0cnVlLFxuICAgICAgICAgICAgICAgIHBhcmVudERlZmF1bHRzOiBnZXQoZGVmYXVsdHMsIFtrZXldKSxcbiAgICAgICAgICAgICAgICByYXdGb3JtRGF0YTogZ2V0KGZvcm1EYXRhLCBba2V5XSksXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IChfYSA9IHJldHJpZXZlZFNjaGVtYS5yZXF1aXJlZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmluY2x1ZGVzKGtleSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG1heWJlQWRkRGVmYXVsdFRvT2JqZWN0KGFjYywga2V5LCBjb21wdXRlZERlZmF1bHQsIGluY2x1ZGVVbmRlZmluZWRWYWx1ZXMsIHJlcXVpcmVkLCByZXRyaWV2ZWRTY2hlbWEucmVxdWlyZWQsIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsIGhhc0NvbnN0KTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9KTtcbiAgICAgICAgaWYgKHJldHJpZXZlZFNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcykge1xuICAgICAgICAgICAgLy8gYXMgcGVyIHNwZWMgYWRkaXRpb25hbFByb3BlcnRpZXMgbWF5IGJlIGVpdGhlciBzY2hlbWEgb3IgYm9vbGVhblxuICAgICAgICAgICAgY29uc3QgYWRkaXRpb25hbFByb3BlcnRpZXNTY2hlbWEgPSBpc09iamVjdChyZXRyaWV2ZWRTY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpXG4gICAgICAgICAgICAgICAgPyByZXRyaWV2ZWRTY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXNcbiAgICAgICAgICAgICAgICA6IHt9O1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IG5ldyBTZXQoKTtcbiAgICAgICAgICAgIGlmIChpc09iamVjdChkZWZhdWx0cykpIHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhkZWZhdWx0cylcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoa2V5KSA9PiAhcmV0cmlldmVkU2NoZW1hLnByb3BlcnRpZXMgfHwgIXJldHJpZXZlZFNjaGVtYS5wcm9wZXJ0aWVzW2tleV0pXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChrZXkpID0+IGtleXMuYWRkKGtleSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZm9ybURhdGFSZXF1aXJlZCA9IFtdO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoZm9ybURhdGEpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoa2V5KSA9PiAhcmV0cmlldmVkU2NoZW1hLnByb3BlcnRpZXMgfHwgIXJldHJpZXZlZFNjaGVtYS5wcm9wZXJ0aWVzW2tleV0pXG4gICAgICAgICAgICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGtleXMuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgZm9ybURhdGFSZXF1aXJlZC5wdXNoKGtleSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXB1dGVkRGVmYXVsdCA9IGNvbXB1dGVEZWZhdWx0cyh2YWxpZGF0b3IsIGFkZGl0aW9uYWxQcm9wZXJ0aWVzU2NoZW1hLCB7XG4gICAgICAgICAgICAgICAgICAgIHJvb3RTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIF9yZWN1cnNlTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcixcbiAgICAgICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YsXG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGVVbmRlZmluZWRWYWx1ZXM6IGluY2x1ZGVVbmRlZmluZWRWYWx1ZXMgPT09IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudERlZmF1bHRzOiBnZXQoZGVmYXVsdHMsIFtrZXldKSxcbiAgICAgICAgICAgICAgICAgICAgcmF3Rm9ybURhdGE6IGdldChmb3JtRGF0YSwgW2tleV0pLFxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKF9hID0gcmV0cmlldmVkU2NoZW1hLnJlcXVpcmVkKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaW5jbHVkZXMoa2V5KSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyBTaW5jZSB0aGVzZSBhcmUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIHdlIGRvbid0IG5lZWQgdG8gYWRkIHRoZSBgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcmAgcHJvcFxuICAgICAgICAgICAgICAgIG1heWJlQWRkRGVmYXVsdFRvT2JqZWN0KG9iamVjdERlZmF1bHRzLCBrZXksIGNvbXB1dGVkRGVmYXVsdCwgaW5jbHVkZVVuZGVmaW5lZFZhbHVlcywgcmVxdWlyZWQsIGZvcm1EYXRhUmVxdWlyZWQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iamVjdERlZmF1bHRzO1xuICAgIH1cbn1cbi8qKiBDb21wdXRlcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgYXJyYXlzLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHJhd1NjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBkZWZhdWx0IHN0YXRlIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSB7Q29tcHV0ZURlZmF1bHRzUHJvcHN9IGNvbXB1dGVEZWZhdWx0c1Byb3BzIC0gT3B0aW9uYWwgcHJvcHMgZm9yIHRoaXMgZnVuY3Rpb25cbiAqIEBwYXJhbSBkZWZhdWx0cyAtIE9wdGlvbmFsIHByb3BzIGZvciB0aGlzIGZ1bmN0aW9uXG4gKiBAcmV0dXJucyAtIFRoZSBkZWZhdWx0IHZhbHVlIGJhc2VkIG9uIHRoZSBzY2hlbWEgdHlwZSBpZiB0aGV5IGFyZSBkZWZpbmVkIGZvciBvYmplY3Qgb3IgYXJyYXkgc2NoZW1hcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFycmF5RGVmYXVsdHModmFsaWRhdG9yLCByYXdTY2hlbWEsIHsgcmF3Rm9ybURhdGEsIHJvb3RTY2hlbWEgPSB7fSwgX3JlY3Vyc2VMaXN0ID0gW10sIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPSB1bmRlZmluZWQsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mID0gdW5kZWZpbmVkLCByZXF1aXJlZCwgfSA9IHt9LCBkZWZhdWx0cykge1xuICAgIHZhciBfYSwgX2I7XG4gICAgY29uc3Qgc2NoZW1hID0gcmF3U2NoZW1hO1xuICAgIGNvbnN0IGFycmF5TWluSXRlbXNTdGF0ZUJlaGF2aW9yID0gKF9hID0gZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9PT0gbnVsbCB8fCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLmFycmF5TWluSXRlbXMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHt9O1xuICAgIGNvbnN0IHsgcG9wdWxhdGU6IGFycmF5TWluSXRlbXNQb3B1bGF0ZSwgbWVyZ2VFeHRyYURlZmF1bHRzOiBhcnJheU1lcmdlRXh0cmFEZWZhdWx0cyB9ID0gYXJyYXlNaW5JdGVtc1N0YXRlQmVoYXZpb3I7XG4gICAgY29uc3QgbmV2ZXJQb3B1bGF0ZSA9IGFycmF5TWluSXRlbXNQb3B1bGF0ZSA9PT0gJ25ldmVyJztcbiAgICBjb25zdCBpZ25vcmVNaW5JdGVtc0ZsYWdTZXQgPSBhcnJheU1pbkl0ZW1zUG9wdWxhdGUgPT09ICdyZXF1aXJlZE9ubHknO1xuICAgIGNvbnN0IGlzUG9wdWxhdGVBbGwgPSBhcnJheU1pbkl0ZW1zUG9wdWxhdGUgPT09ICdhbGwnIHx8ICghbmV2ZXJQb3B1bGF0ZSAmJiAhaWdub3JlTWluSXRlbXNGbGFnU2V0KTtcbiAgICBjb25zdCBjb21wdXRlU2tpcFBvcHVsYXRlID0gKF9iID0gYXJyYXlNaW5JdGVtc1N0YXRlQmVoYXZpb3IgPT09IG51bGwgfHwgYXJyYXlNaW5JdGVtc1N0YXRlQmVoYXZpb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFycmF5TWluSXRlbXNTdGF0ZUJlaGF2aW9yLmNvbXB1dGVTa2lwUG9wdWxhdGUpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICgoKSA9PiBmYWxzZSk7XG4gICAgY29uc3QgaXNTa2lwRW1wdHlEZWZhdWx0cyA9IChleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID09PSBudWxsIHx8IGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IuZW1wdHlPYmplY3RGaWVsZHMpID09PSAnc2tpcEVtcHR5RGVmYXVsdHMnO1xuICAgIGNvbnN0IGVtcHR5RGVmYXVsdCA9IGlzU2tpcEVtcHR5RGVmYXVsdHMgPyB1bmRlZmluZWQgOiBbXTtcbiAgICAvLyBJbmplY3QgZGVmYXVsdHMgaW50byBleGlzdGluZyBhcnJheSBkZWZhdWx0c1xuICAgIGlmIChBcnJheS5pc0FycmF5KGRlZmF1bHRzKSkge1xuICAgICAgICBkZWZhdWx0cyA9IGRlZmF1bHRzLm1hcCgoaXRlbSwgaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzY2hlbWFJdGVtID0gZ2V0SW5uZXJTY2hlbWFGb3JBcnJheUl0ZW0oc2NoZW1hLCBBZGRpdGlvbmFsSXRlbXNIYW5kbGluZy5GYWxsYmFjaywgaWR4KTtcbiAgICAgICAgICAgIHJldHVybiBjb21wdXRlRGVmYXVsdHModmFsaWRhdG9yLCBzY2hlbWFJdGVtLCB7XG4gICAgICAgICAgICAgICAgcm9vdFNjaGVtYSxcbiAgICAgICAgICAgICAgICBfcmVjdXJzZUxpc3QsXG4gICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcixcbiAgICAgICAgICAgICAgICBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZixcbiAgICAgICAgICAgICAgICBwYXJlbnREZWZhdWx0czogaXRlbSxcbiAgICAgICAgICAgICAgICByZXF1aXJlZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gRGVlcGx5IGluamVjdCBkZWZhdWx0cyBpbnRvIGFscmVhZHkgZXhpc3RpbmcgZm9ybSBkYXRhXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmF3Rm9ybURhdGEpKSB7XG4gICAgICAgIGNvbnN0IHNjaGVtYUl0ZW0gPSBnZXRJbm5lclNjaGVtYUZvckFycmF5SXRlbShzY2hlbWEpO1xuICAgICAgICBpZiAobmV2ZXJQb3B1bGF0ZSkge1xuICAgICAgICAgICAgZGVmYXVsdHMgPSByYXdGb3JtRGF0YTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1EZWZhdWx0cyA9IHJhd0Zvcm1EYXRhLm1hcCgoaXRlbSwgaWR4KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVEZWZhdWx0cyh2YWxpZGF0b3IsIHNjaGVtYUl0ZW0sIHtcbiAgICAgICAgICAgICAgICAgICAgcm9vdFNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgX3JlY3Vyc2VMaXN0LFxuICAgICAgICAgICAgICAgICAgICBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLFxuICAgICAgICAgICAgICAgICAgICBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZixcbiAgICAgICAgICAgICAgICAgICAgcmF3Rm9ybURhdGE6IGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudERlZmF1bHRzOiBnZXQoZGVmYXVsdHMsIFtpZHhdKSxcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIElmIHRoZSBwb3B1bGF0ZSAncmVxdWlyZWRPbmx5JyBmbGFnIGlzIHNldCB0aGVuIHdlIG9ubHkgbWVyZ2UgYW5kIGluY2x1ZGUgZXh0cmEgZGVmYXVsdHMgaWYgdGhleSBhcmUgcmVxdWlyZWQuXG4gICAgICAgICAgICAvLyBPciBpZiBwb3B1bGF0ZSAnYWxsJyBpcyBzZXQgd2UgbWVyZ2UgYW5kIGluY2x1ZGUgZXh0cmEgZGVmYXVsdHMuXG4gICAgICAgICAgICBjb25zdCBtZXJnZUV4dHJhRGVmYXVsdHMgPSAoKGlnbm9yZU1pbkl0ZW1zRmxhZ1NldCAmJiByZXF1aXJlZCkgfHwgaXNQb3B1bGF0ZUFsbCkgJiYgYXJyYXlNZXJnZUV4dHJhRGVmYXVsdHM7XG4gICAgICAgICAgICBkZWZhdWx0cyA9IG1lcmdlRGVmYXVsdHNXaXRoRm9ybURhdGEoZGVmYXVsdHMsIGl0ZW1EZWZhdWx0cywgbWVyZ2VFeHRyYURlZmF1bHRzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBDaGVjayBpZiB0aGUgc2NoZW1hIGhhcyBhIGNvbnN0IHByb3BlcnR5IGRlZmluZWQgQU5EIHdlIGFyZSBzdXBwb3J0aW5nIGNvbnN0IGFzIGRlZmF1bHRzLCB0aGVuIHdlIHNob3VsZCBhbHdheXNcbiAgICAvLyByZXR1cm4gdGhlIGNvbXB1dGVkRGVmYXVsdCBzaW5jZSBpdCdzIGNvbWluZyBmcm9tIHRoZSBjb25zdC5cbiAgICBjb25zdCBoYXNDb25zdCA9IGlzT2JqZWN0KHNjaGVtYSkgJiYgQ09OU1RfS0VZIGluIHNjaGVtYSAmJiAoZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciA9PT0gbnVsbCB8fCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLmNvbnN0QXNEZWZhdWx0cykgIT09ICduZXZlcic7XG4gICAgaWYgKGhhc0NvbnN0ID09PSBmYWxzZSkge1xuICAgICAgICBpZiAobmV2ZXJQb3B1bGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRzICE9PSBudWxsICYmIGRlZmF1bHRzICE9PSB2b2lkIDAgPyBkZWZhdWx0cyA6IGVtcHR5RGVmYXVsdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaWdub3JlTWluSXRlbXNGbGFnU2V0ICYmICFyZXF1aXJlZCkge1xuICAgICAgICAgICAgLy8gSWYgbm8gZm9ybSBkYXRhIGV4aXN0cyBvciBkZWZhdWx0cyBhcmUgc2V0IGxlYXZlIHRoZSBmaWVsZCBlbXB0eS9ub24tZXhpc3RlbnQsIG90aGVyd2lzZVxuICAgICAgICAgICAgLy8gcmV0dXJuIGZvcm0gZGF0YS9kZWZhdWx0c1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRzID8gZGVmYXVsdHMgOiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdHNMZW5ndGggPSBBcnJheS5pc0FycmF5KGRlZmF1bHRzKSA/IGRlZmF1bHRzLmxlbmd0aCA6IDA7XG4gICAgaWYgKCFzY2hlbWEubWluSXRlbXMgfHxcbiAgICAgICAgaXNNdWx0aVNlbGVjdCh2YWxpZGF0b3IsIHNjaGVtYSwgcm9vdFNjaGVtYSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHx8XG4gICAgICAgIGNvbXB1dGVTa2lwUG9wdWxhdGUodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEpIHx8XG4gICAgICAgIHNjaGVtYS5taW5JdGVtcyA8PSBkZWZhdWx0c0xlbmd0aCkge1xuICAgICAgICByZXR1cm4gZGVmYXVsdHMgPyBkZWZhdWx0cyA6IGVtcHR5RGVmYXVsdDtcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdEVudHJpZXMgPSAoZGVmYXVsdHMgfHwgW10pO1xuICAgIGNvbnN0IGZpbGxlclNjaGVtYSA9IGdldElubmVyU2NoZW1hRm9yQXJyYXlJdGVtKHNjaGVtYSwgQWRkaXRpb25hbEl0ZW1zSGFuZGxpbmcuSW52ZXJ0KTtcbiAgICBjb25zdCBmaWxsZXJEZWZhdWx0ID0gZmlsbGVyU2NoZW1hLmRlZmF1bHQ7XG4gICAgLy8gQ2FsY3VsYXRlIGZpbGxlciBlbnRyaWVzIGZvciByZW1haW5pbmcgaXRlbXMgKG1pbkl0ZW1zIC0gZXhpc3RpbmcgcmF3IGRhdGEvZGVmYXVsdHMpXG4gICAgY29uc3QgZmlsbGVyRW50cmllcyA9IG5ldyBBcnJheShzY2hlbWEubWluSXRlbXMgLSBkZWZhdWx0c0xlbmd0aCkuZmlsbChjb21wdXRlRGVmYXVsdHModmFsaWRhdG9yLCBmaWxsZXJTY2hlbWEsIHtcbiAgICAgICAgcGFyZW50RGVmYXVsdHM6IGZpbGxlckRlZmF1bHQsXG4gICAgICAgIHJvb3RTY2hlbWEsXG4gICAgICAgIF9yZWN1cnNlTGlzdCxcbiAgICAgICAgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcixcbiAgICAgICAgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YsXG4gICAgICAgIHJlcXVpcmVkLFxuICAgIH0pKTtcbiAgICAvLyB0aGVuIGZpbGwgdXAgdGhlIHJlc3Qgd2l0aCBlaXRoZXIgdGhlIGl0ZW0gZGVmYXVsdCBvciBlbXB0eSwgdXAgdG8gbWluSXRlbXNcbiAgICByZXR1cm4gZGVmYXVsdEVudHJpZXMuY29uY2F0KGZpbGxlckVudHJpZXMpO1xufVxuLyoqIENvbXB1dGVzIHRoZSBkZWZhdWx0IHZhbHVlIGJhc2VkIG9uIHRoZSBzY2hlbWEgdHlwZS5cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSByYXdTY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCB0aGUgZGVmYXVsdCBzdGF0ZSBpcyBkZXNpcmVkXG4gKiBAcGFyYW0ge0NvbXB1dGVEZWZhdWx0c1Byb3BzfSBjb21wdXRlRGVmYXVsdHNQcm9wcyAtIE9wdGlvbmFsIHByb3BzIGZvciB0aGlzIGZ1bmN0aW9uXG4gKiBAcGFyYW0gZGVmYXVsdHMgLSBPcHRpb25hbCBwcm9wcyBmb3IgdGhpcyBmdW5jdGlvblxuICogQHJldHVybnMgLSBUaGUgZGVmYXVsdCB2YWx1ZSBiYXNlZCBvbiB0aGUgc2NoZW1hIHR5cGUgaWYgdGhleSBhcmUgZGVmaW5lZCBmb3Igb2JqZWN0IG9yIGFycmF5IHNjaGVtYXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0QmFzZWRPblNjaGVtYVR5cGUodmFsaWRhdG9yLCByYXdTY2hlbWEsIGNvbXB1dGVEZWZhdWx0c1Byb3BzID0ge30sIGRlZmF1bHRzKSB7XG4gICAgc3dpdGNoIChnZXRTY2hlbWFUeXBlKHJhd1NjaGVtYSkpIHtcbiAgICAgICAgLy8gV2UgbmVlZCB0byByZWN1cnNlIGZvciBvYmplY3Qgc2NoZW1hIGlubmVyIGRlZmF1bHQgdmFsdWVzLlxuICAgICAgICBjYXNlICdvYmplY3QnOiB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0T2JqZWN0RGVmYXVsdHModmFsaWRhdG9yLCByYXdTY2hlbWEsIGNvbXB1dGVEZWZhdWx0c1Byb3BzLCBkZWZhdWx0cyk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0QXJyYXlEZWZhdWx0cyh2YWxpZGF0b3IsIHJhd1NjaGVtYSwgY29tcHV0ZURlZmF1bHRzUHJvcHMsIGRlZmF1bHRzKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8qKiBSZXR1cm5zIHRoZSBzdXBlcnNldCBvZiBgZm9ybURhdGFgIHRoYXQgaW5jbHVkZXMgdGhlIGdpdmVuIHNldCB1cGRhdGVkIHRvIGluY2x1ZGUgYW55IG1pc3NpbmcgZmllbGRzIHRoYXQgaGF2ZVxuICogY29tcHV0ZWQgdG8gaGF2ZSBkZWZhdWx0cyBwcm92aWRlZCBpbiB0aGUgYHNjaGVtYWAuXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gdGhlU2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIGRlZmF1bHQgc3RhdGUgaXMgZGVzaXJlZFxuICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCBvbnRvIHdoaWNoIHRvIHByb3ZpZGUgYW55IG1pc3NpbmcgZGVmYXVsdHNcbiAqIEBwYXJhbSBbcm9vdFNjaGVtYV0gLSBUaGUgcm9vdCBzY2hlbWEsIHVzZWQgdG8gcHJpbWFyaWx5IHRvIGxvb2sgdXAgYCRyZWZgc1xuICogQHBhcmFtIFtpbmNsdWRlVW5kZWZpbmVkVmFsdWVzPWZhbHNlXSAtIE9wdGlvbmFsIGZsYWcsIGlmIHRydWUsIGNhdXNlIHVuZGVmaW5lZCB2YWx1ZXMgdG8gYmUgYWRkZWQgYXMgZGVmYXVsdHMuXG4gKiAgICAgICAgICBJZiBcImV4Y2x1ZGVPYmplY3RDaGlsZHJlblwiLCBjYXVzZSB1bmRlZmluZWQgdmFsdWVzIGZvciB0aGlzIG9iamVjdCBhbmQgcGFzcyBgaW5jbHVkZVVuZGVmaW5lZFZhbHVlc2AgYXNcbiAqICAgICAgICAgIGZhbHNlIHdoZW4gY29tcHV0aW5nIGRlZmF1bHRzIGZvciBhbnkgbmVzdGVkIG9iamVjdCBwcm9wZXJ0aWVzLlxuICogQHBhcmFtIFtleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yXSBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9iamVjdCwgaWYgcHJvdmlkZWQsIGFsbG93cyB1c2VycyB0byBvdmVycmlkZSBkZWZhdWx0IGZvcm0gc3RhdGUgYmVoYXZpb3JcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgcmVzdWx0aW5nIGBmb3JtRGF0YWAgd2l0aCBhbGwgdGhlIGRlZmF1bHRzIHByb3ZpZGVkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERlZmF1bHRGb3JtU3RhdGUodmFsaWRhdG9yLCB0aGVTY2hlbWEsIGZvcm1EYXRhLCByb290U2NoZW1hLCBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzID0gZmFsc2UsIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgaWYgKCFpc09iamVjdCh0aGVTY2hlbWEpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzY2hlbWE6ICcgKyB0aGVTY2hlbWEpO1xuICAgIH1cbiAgICBjb25zdCBzY2hlbWEgPSByZXRyaWV2ZVNjaGVtYSh2YWxpZGF0b3IsIHRoZVNjaGVtYSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICBjb25zdCBkZWZhdWx0cyA9IGNvbXB1dGVEZWZhdWx0cyh2YWxpZGF0b3IsIHNjaGVtYSwge1xuICAgICAgICByb290U2NoZW1hLFxuICAgICAgICBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzLFxuICAgICAgICBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yLFxuICAgICAgICBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZixcbiAgICAgICAgcmF3Rm9ybURhdGE6IGZvcm1EYXRhLFxuICAgIH0pO1xuICAgIGlmIChmb3JtRGF0YSA9PT0gdW5kZWZpbmVkIHx8IGZvcm1EYXRhID09PSBudWxsIHx8ICh0eXBlb2YgZm9ybURhdGEgPT09ICdudW1iZXInICYmIGlzTmFOKGZvcm1EYXRhKSkpIHtcbiAgICAgICAgLy8gTm8gZm9ybSBkYXRhPyBVc2Ugc2NoZW1hIGRlZmF1bHRzLlxuICAgICAgICByZXR1cm4gZGVmYXVsdHM7XG4gICAgfVxuICAgIGNvbnN0IHsgbWVyZ2VEZWZhdWx0c0ludG9Gb3JtRGF0YSwgYXJyYXlNaW5JdGVtcyA9IHt9IH0gPSBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yIHx8IHt9O1xuICAgIGNvbnN0IHsgbWVyZ2VFeHRyYURlZmF1bHRzIH0gPSBhcnJheU1pbkl0ZW1zO1xuICAgIGNvbnN0IGRlZmF1bHRTdXBlcmNlZGVzVW5kZWZpbmVkID0gbWVyZ2VEZWZhdWx0c0ludG9Gb3JtRGF0YSA9PT0gJ3VzZURlZmF1bHRJZkZvcm1EYXRhVW5kZWZpbmVkJztcbiAgICBpZiAoaXNPYmplY3QoZm9ybURhdGEpKSB7XG4gICAgICAgIHJldHVybiBtZXJnZURlZmF1bHRzV2l0aEZvcm1EYXRhKGRlZmF1bHRzLCBmb3JtRGF0YSwgbWVyZ2VFeHRyYURlZmF1bHRzLCBkZWZhdWx0U3VwZXJjZWRlc1VuZGVmaW5lZCk7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KGZvcm1EYXRhKSkge1xuICAgICAgICByZXR1cm4gbWVyZ2VEZWZhdWx0c1dpdGhGb3JtRGF0YShkZWZhdWx0cywgZm9ybURhdGEsIG1lcmdlRXh0cmFEZWZhdWx0cywgZGVmYXVsdFN1cGVyY2VkZXNVbmRlZmluZWQpO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybURhdGE7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXREZWZhdWx0Rm9ybVN0YXRlLmpzLm1hcCIsImltcG9ydCBnZXRVaU9wdGlvbnMgZnJvbSAnLi9nZXRVaU9wdGlvbnMnO1xuLyoqIENoZWNrcyB0byBzZWUgaWYgdGhlIGB1aVNjaGVtYWAgY29udGFpbnMgdGhlIGB3aWRnZXRgIGZpZWxkIGFuZCB0aGF0IHRoZSB3aWRnZXQgaXMgbm90IGBoaWRkZW5gXG4gKlxuICogQHBhcmFtIHVpU2NoZW1hIC0gVGhlIFVJIFNjaGVtYSBmcm9tIHdoaWNoIHRvIGRldGVjdCBpZiBpdCBpcyBjdXN0b21pemVkXG4gKiBAcmV0dXJucyAtIFRydWUgaWYgdGhlIGB1aVNjaGVtYWAgZGVzY3JpYmVzIGEgY3VzdG9tIHdpZGdldCwgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzQ3VzdG9tV2lkZ2V0KHVpU2NoZW1hID0ge30pIHtcbiAgICByZXR1cm4gKFxuICAgIC8vIFRPRE86IFJlbW92ZSB0aGUgYCYmIHVpU2NoZW1hWyd1aTp3aWRnZXQnXSAhPT0gJ2hpZGRlbidgIG9uY2Ugd2Ugc3VwcG9ydCBoaWRkZW4gd2lkZ2V0cyBmb3IgYXJyYXlzLlxuICAgIC8vIGh0dHBzOi8vcmpzZi10ZWFtLmdpdGh1Yi5pby9yZWFjdC1qc29uc2NoZW1hLWZvcm0vZG9jcy91c2FnZS93aWRnZXRzLyNoaWRkZW4td2lkZ2V0c1xuICAgICd3aWRnZXQnIGluIGdldFVpT3B0aW9ucyh1aVNjaGVtYSkgJiYgZ2V0VWlPcHRpb25zKHVpU2NoZW1hKVsnd2lkZ2V0J10gIT09ICdoaWRkZW4nKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzQ3VzdG9tV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IFVJX1dJREdFVF9LRVkgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHJldHJpZXZlU2NoZW1hIGZyb20gJy4vcmV0cmlldmVTY2hlbWEnO1xuLyoqIENoZWNrcyB0byBzZWUgaWYgdGhlIGBzY2hlbWFgIGFuZCBgdWlTY2hlbWFgIGNvbWJpbmF0aW9uIHJlcHJlc2VudHMgYW4gYXJyYXkgb2YgZmlsZXNcbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCBjaGVjayBmb3IgYXJyYXkgb2YgZmlsZXMgZmxhZyBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gW3VpU2NoZW1hPXt9XSAtIFRoZSBVSSBzY2hlbWEgZnJvbSB3aGljaCB0byBjaGVjayB0aGUgd2lkZ2V0XG4gKiBAcGFyYW0gW3Jvb3RTY2hlbWFdIC0gVGhlIHJvb3Qgc2NoZW1hLCB1c2VkIHRvIHByaW1hcmlseSB0byBsb29rIHVwIGAkcmVmYHNcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUcnVlIGlmIHNjaGVtYS91aVNjaGVtYSBjb250YWlucyBhbiBhcnJheSBvZiBmaWxlcywgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzRmlsZXNBcnJheSh2YWxpZGF0b3IsIHNjaGVtYSwgdWlTY2hlbWEgPSB7fSwgcm9vdFNjaGVtYSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICBpZiAodWlTY2hlbWFbVUlfV0lER0VUX0tFWV0gPT09ICdmaWxlcycpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChzY2hlbWEuaXRlbXMpIHtcbiAgICAgICAgY29uc3QgaXRlbXNTY2hlbWEgPSByZXRyaWV2ZVNjaGVtYSh2YWxpZGF0b3IsIHNjaGVtYS5pdGVtcywgcm9vdFNjaGVtYSwgdW5kZWZpbmVkLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgIHJldHVybiBpdGVtc1NjaGVtYS50eXBlID09PSAnc3RyaW5nJyAmJiBpdGVtc1NjaGVtYS5mb3JtYXQgPT09ICdkYXRhLXVybCc7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzRmlsZXNBcnJheS5qcy5tYXAiLCJpbXBvcnQgeyBVSV9GSUVMRF9LRVksIFVJX1dJREdFVF9LRVkgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IGdldFNjaGVtYVR5cGUgZnJvbSAnLi4vZ2V0U2NoZW1hVHlwZSc7XG5pbXBvcnQgZ2V0VWlPcHRpb25zIGZyb20gJy4uL2dldFVpT3B0aW9ucyc7XG5pbXBvcnQgaXNDdXN0b21XaWRnZXQgZnJvbSAnLi4vaXNDdXN0b21XaWRnZXQnO1xuaW1wb3J0IGlzRmlsZXNBcnJheSBmcm9tICcuL2lzRmlsZXNBcnJheSc7XG5pbXBvcnQgaXNNdWx0aVNlbGVjdCBmcm9tICcuL2lzTXVsdGlTZWxlY3QnO1xuLyoqIERldGVybWluZXMgd2hldGhlciB0aGUgY29tYmluYXRpb24gb2YgYHNjaGVtYWAgYW5kIGB1aVNjaGVtYWAgcHJvcGVydGllcyBpbmRpY2F0ZXMgdGhhdCB0aGUgbGFiZWwgZm9yIHRoZSBgc2NoZW1hYFxuICogc2hvdWxkIGJlIGRpc3BsYXllZCBpbiBhIFVJLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBkaXNwbGF5IGxhYmVsIGZsYWcgaXMgZGVzaXJlZFxuICogQHBhcmFtIFt1aVNjaGVtYT17fV0gLSBUaGUgVUkgc2NoZW1hIGZyb20gd2hpY2ggdG8gZGVyaXZlIHBvdGVudGlhbGx5IGRpc3BsYXlhYmxlIGluZm9ybWF0aW9uXG4gKiBAcGFyYW0gW3Jvb3RTY2hlbWFdIC0gVGhlIHJvb3Qgc2NoZW1hLCB1c2VkIHRvIHByaW1hcmlseSB0byBsb29rIHVwIGAkcmVmYHNcbiAqIEBwYXJhbSBbZ2xvYmFsT3B0aW9ucz17fV0gLSBUaGUgb3B0aW9uYWwgR2xvYmFsIFVJIFNjaGVtYSBmcm9tIHdoaWNoIHRvIGdldCBhbnkgZmFsbGJhY2sgYHh4eGAgb3B0aW9uc1xuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRydWUgaWYgdGhlIGxhYmVsIHNob3VsZCBiZSBkaXNwbGF5ZWQgb3IgZmFsc2UgaWYgaXQgc2hvdWxkIG5vdFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREaXNwbGF5TGFiZWwodmFsaWRhdG9yLCBzY2hlbWEsIHVpU2NoZW1hID0ge30sIHJvb3RTY2hlbWEsIGdsb2JhbE9wdGlvbnMsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgY29uc3QgdWlPcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCBnbG9iYWxPcHRpb25zKTtcbiAgICBjb25zdCB7IGxhYmVsID0gdHJ1ZSB9ID0gdWlPcHRpb25zO1xuICAgIGxldCBkaXNwbGF5TGFiZWwgPSAhIWxhYmVsO1xuICAgIGNvbnN0IHNjaGVtYVR5cGUgPSBnZXRTY2hlbWFUeXBlKHNjaGVtYSk7XG4gICAgaWYgKHNjaGVtYVR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgICAgZGlzcGxheUxhYmVsID1cbiAgICAgICAgICAgIGlzTXVsdGlTZWxlY3QodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB8fFxuICAgICAgICAgICAgICAgIGlzRmlsZXNBcnJheSh2YWxpZGF0b3IsIHNjaGVtYSwgdWlTY2hlbWEsIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB8fFxuICAgICAgICAgICAgICAgIGlzQ3VzdG9tV2lkZ2V0KHVpU2NoZW1hKTtcbiAgICB9XG4gICAgaWYgKHNjaGVtYVR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGRpc3BsYXlMYWJlbCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoc2NoZW1hVHlwZSA9PT0gJ2Jvb2xlYW4nICYmICF1aVNjaGVtYVtVSV9XSURHRVRfS0VZXSkge1xuICAgICAgICBkaXNwbGF5TGFiZWwgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHVpU2NoZW1hW1VJX0ZJRUxEX0tFWV0pIHtcbiAgICAgICAgZGlzcGxheUxhYmVsID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBkaXNwbGF5TGFiZWw7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXREaXNwbGF5TGFiZWwuanMubWFwIiwiaW1wb3J0IGlzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuaW1wb3J0IG1lcmdlT2JqZWN0cyBmcm9tICcuLi9tZXJnZU9iamVjdHMnO1xuLyoqIE1lcmdlcyB0aGUgZXJyb3JzIGluIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIGludG8gdGhlIGV4aXN0aW5nIGB2YWxpZGF0aW9uRGF0YWAgYnkgY29tYmluaW5nIHRoZSBoaWVyYXJjaGllcyBpbiB0aGVcbiAqIHR3byBgRXJyb3JTY2hlbWFgcyBhbmQgdGhlbiBhcHBlbmRpbmcgdGhlIGVycm9yIGxpc3QgZnJvbSB0aGUgYGFkZGl0aW9uYWxFcnJvclNjaGVtYWAgb2J0YWluZWQgYnkgY2FsbGluZ1xuICogYHZhbGlkYXRvci50b0Vycm9yTGlzdCgpYCBvbnRvIHRoZSBgZXJyb3JzYCBpbiB0aGUgYHZhbGlkYXRpb25EYXRhYC4gSWYgbm8gYGFkZGl0aW9uYWxFcnJvclNjaGVtYWAgaXMgcGFzc2VkLCB0aGVuXG4gKiBgdmFsaWRhdGlvbkRhdGFgIGlzIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBUaGUgdmFsaWRhdG9yIHVzZWQgdG8gY29udmVydCBhbiBFcnJvclNjaGVtYSB0byBhIGxpc3Qgb2YgZXJyb3JzXG4gKiBAcGFyYW0gdmFsaWRhdGlvbkRhdGEgLSBUaGUgY3VycmVudCBgVmFsaWRhdGlvbkRhdGFgIGludG8gd2hpY2ggdG8gbWVyZ2UgdGhlIGFkZGl0aW9uYWwgZXJyb3JzXG4gKiBAcGFyYW0gW2FkZGl0aW9uYWxFcnJvclNjaGVtYV0gLSBUaGUgYWRkaXRpb25hbCBzZXQgb2YgZXJyb3JzIGluIGFuIGBFcnJvclNjaGVtYWBcbiAqIEByZXR1cm5zIC0gVGhlIGB2YWxpZGF0aW9uRGF0YWAgd2l0aCB0aGUgYWRkaXRpb25hbCBlcnJvcnMgZnJvbSBgYWRkaXRpb25hbEVycm9yU2NoZW1hYCBtZXJnZWQgaW50byBpdCwgaWYgcHJvdmlkZWQuXG4gKiBAZGVwcmVjYXRlZCAtIFVzZSB0aGUgYHZhbGlkYXRpb25EYXRhTWVyZ2UoKWAgZnVuY3Rpb24gZXhwb3J0ZWQgZnJvbSBgQHJqc2YvdXRpbHNgIGluc3RlYWQuIFRoaXMgZnVuY3Rpb24gd2lsbCBiZVxuICogICAgICAgIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2VWYWxpZGF0aW9uRGF0YSh2YWxpZGF0b3IsIHZhbGlkYXRpb25EYXRhLCBhZGRpdGlvbmFsRXJyb3JTY2hlbWEpIHtcbiAgICBpZiAoIWFkZGl0aW9uYWxFcnJvclNjaGVtYSkge1xuICAgICAgICByZXR1cm4gdmFsaWRhdGlvbkRhdGE7XG4gICAgfVxuICAgIGNvbnN0IHsgZXJyb3JzOiBvbGRFcnJvcnMsIGVycm9yU2NoZW1hOiBvbGRFcnJvclNjaGVtYSB9ID0gdmFsaWRhdGlvbkRhdGE7XG4gICAgbGV0IGVycm9ycyA9IHZhbGlkYXRvci50b0Vycm9yTGlzdChhZGRpdGlvbmFsRXJyb3JTY2hlbWEpO1xuICAgIGxldCBlcnJvclNjaGVtYSA9IGFkZGl0aW9uYWxFcnJvclNjaGVtYTtcbiAgICBpZiAoIWlzRW1wdHkob2xkRXJyb3JTY2hlbWEpKSB7XG4gICAgICAgIGVycm9yU2NoZW1hID0gbWVyZ2VPYmplY3RzKG9sZEVycm9yU2NoZW1hLCBhZGRpdGlvbmFsRXJyb3JTY2hlbWEsIHRydWUpO1xuICAgICAgICBlcnJvcnMgPSBbLi4ub2xkRXJyb3JzXS5jb25jYXQoZXJyb3JzKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZXJyb3JTY2hlbWEsIGVycm9ycyB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWVyZ2VWYWxpZGF0aW9uRGF0YS5qcy5tYXAiLCJpbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IGhhcyBmcm9tICdsb2Rhc2gvaGFzJztcbmltcG9ydCB7IFBST1BFUlRJRVNfS0VZLCBSRUZfS0VZIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCByZXRyaWV2ZVNjaGVtYSBmcm9tICcuL3JldHJpZXZlU2NoZW1hJztcbmNvbnN0IE5PX1ZBTFVFID0gU3ltYm9sKCdubyBWYWx1ZScpO1xuLyoqIFNhbml0aXplIHRoZSBgZGF0YWAgYXNzb2NpYXRlZCB3aXRoIHRoZSBgb2xkU2NoZW1hYCBzbyBpdCBpcyBjb25zaWRlcmVkIGFwcHJvcHJpYXRlIGZvciB0aGUgYG5ld1NjaGVtYWAuIElmIHRoZSBuZXdcbiAqIHNjaGVtYSBkb2VzIG5vdCBjb250YWluIGFueSBwcm9wZXJ0aWVzLCB0aGVuIGB1bmRlZmluZWRgIGlzIHJldHVybmVkIHRvIGNsZWFyIGFsbCB0aGUgZm9ybSBkYXRhLiBEdWUgdG8gdGhlIG5hdHVyZVxuICogb2Ygc2NoZW1hcywgdGhpcyBzYW5pdGl6YXRpb24gaGFwcGVucyByZWN1cnNpdmVseSBmb3IgbmVzdGVkIG9iamVjdHMgb2YgZGF0YS4gQWxzbywgYW55IHByb3BlcnRpZXMgaW4gdGhlIG9sZCBzY2hlbWFcbiAqIHRoYXQgYXJlIG5vbi1leGlzdGVudCBpbiB0aGUgbmV3IHNjaGVtYSBhcmUgc2V0IHRvIGB1bmRlZmluZWRgLiBUaGUgZGF0YSBzYW5pdGl6YXRpb24gcHJvY2VzcyBoYXMgdGhlIGZvbGxvd2luZyBmbG93OlxuICpcbiAqIC0gSWYgdGhlIG5ldyBzY2hlbWEgaXMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgYSBgcHJvcGVydGllc2Agb2JqZWN0IHRoZW46XG4gKiAgIC0gQ3JlYXRlIGEgYHJlbW92ZU9sZFNjaGVtYURhdGFgIG9iamVjdCwgc2V0dGluZyBlYWNoIGtleSBpbiB0aGUgYG9sZFNjaGVtYS5wcm9wZXJ0aWVzYCBoYXZpbmcgYGRhdGFgIHRvIHVuZGVmaW5lZFxuICogICAtIENyZWF0ZSBhbiBlbXB0eSBgbmVzdGVkRGF0YWAgb2JqZWN0IGZvciB1c2UgaW4gdGhlIGtleSBmaWx0ZXJpbmcgYmVsb3c6XG4gKiAgIC0gSXRlcmF0ZSBvdmVyIGVhY2gga2V5IGluIHRoZSBgbmV3U2NoZW1hLnByb3BlcnRpZXNgIGFzIGZvbGxvd3M6XG4gKiAgICAgLSBHZXQgdGhlIGBmb3JtVmFsdWVgIG9mIHRoZSBrZXkgZnJvbSB0aGUgYGRhdGFgXG4gKiAgICAgLSBHZXQgdGhlIGBvbGRLZXlTY2hlbWFgIGFuZCBgbmV3S2V5ZWRTY2hlbWFgIGZvciB0aGUga2V5LCBkZWZhdWx0aW5nIHRvIGB7fWAgd2hlbiBpdCBkb2Vzbid0IGV4aXN0XG4gKiAgICAgLSBSZXRyaWV2ZSB0aGUgc2NoZW1hIGZvciBhbnkgcmVmcyB3aXRoaW4gZWFjaCBgb2xkS2V5U2NoZW1hYCBhbmQvb3IgYG5ld0tleVNjaGVtYWBcbiAqICAgICAtIEdldCB0aGUgdHlwZXMgb2YgdGhlIG9sZCBhbmQgbmV3IGtleWVkIHNjaGVtYXMgYW5kIGlmIHRoZSBvbGQgZG9lc24ndCBleGlzdCBvciB0aGUgb2xkICYgbmV3IGFyZSB0aGUgc2FtZSB0aGVuOlxuICogICAgICAgLSBJZiBgcmVtb3ZlT2xkU2NoZW1hRGF0YWAgaGFzIGFuIGVudHJ5IGZvciB0aGUga2V5LCBkZWxldGUgaXQgc2luY2UgdGhlIG5ldyBzY2hlbWEgaGFzIHRoZSBzYW1lIHByb3BlcnR5XG4gKiAgICAgICAtIElmIHR5cGUgb2YgdGhlIGtleSBpbiB0aGUgbmV3IHNjaGVtYSBpcyBgb2JqZWN0YDpcbiAqICAgICAgICAgLSBTdG9yZSB0aGUgdmFsdWUgZnJvbSB0aGUgcmVjdXJzaXZlIGBzYW5pdGl6ZURhdGFGb3JOZXdTY2hlbWFgIGNhbGwgaW4gYG5lc3RlZERhdGFba2V5XWBcbiAqICAgICAgIC0gT3RoZXJ3aXNlLCBjaGVjayBmb3IgZGVmYXVsdCBvciBjb25zdCB2YWx1ZXM6XG4gKiAgICAgICAgIC0gR2V0IHRoZSBvbGQgYW5kIG5ldyBgZGVmYXVsdGAgdmFsdWVzIGZyb20gdGhlIHNjaGVtYSBhbmQgY2hlY2s6XG4gKiAgICAgICAgICAgLSBJZiB0aGUgbmV3IGBkZWZhdWx0YCB2YWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUgZm9ybSB2YWx1ZTpcbiAqICAgICAgICAgICAgIC0gSWYgdGhlIG9sZCBgZGVmYXVsdGAgdmFsdWUgRE9FUyBtYXRjaCB0aGUgZm9ybSB2YWx1ZSwgdGhlbjpcbiAqICAgICAgICAgICAgICAgLSBSZXBsYWNlIGByZW1vdmVPbGRTY2hlbWFEYXRhW2tleV1gIHdpdGggdGhlIG5ldyBgZGVmYXVsdGBcbiAqICAgICAgICAgICAgICAgLSBPdGhlcndpc2UsIGlmIHRoZSBuZXcgc2NoZW1hIGlzIGByZWFkT25seWAgdGhlbiByZXBsYWNlIGByZW1vdmVPbGRTY2hlbWFEYXRhW2tleV1gIHdpdGggdW5kZWZpbmVkXG4gKiAgICAgICAgIC0gR2V0IHRoZSBvbGQgYW5kIG5ldyBgY29uc3RgIHZhbHVlcyBmcm9tIHRoZSBzY2hlbWEgYW5kIGNoZWNrOlxuICogICAgICAgICAgIC0gSWYgdGhlIG5ldyBgY29uc3RgIHZhbHVlIGRvZXMgbm90IG1hdGNoIHRoZSBmb3JtIHZhbHVlOlxuICogICAgICAgICAgIC0gSWYgdGhlIG9sZCBgY29uc3RgIHZhbHVlIERPRVMgbWF0Y2ggdGhlIGZvcm0gdmFsdWUsIHRoZW46XG4gKiAgICAgICAgICAgICAtIFJlcGxhY2UgYHJlbW92ZU9sZFNjaGVtYURhdGFba2V5XWAgd2l0aCB0aGUgbmV3IGBjb25zdGBcbiAqICAgICAgICAgICAgIC0gT3RoZXJ3aXNlLCByZXBsYWNlIGByZW1vdmVPbGRTY2hlbWFEYXRhW2tleV1gIHdpdGggdW5kZWZpbmVkXG4gKiAgIC0gT25jZSBhbGwga2V5cyBoYXZlIGJlZW4gcHJvY2Vzc2VkLCByZXR1cm4gYW4gb2JqZWN0IGJ1aWx0IGFzIGZvbGxvd3M6XG4gKiAgICAgLSBgeyAuLi5yZW1vdmVPbGRTY2hlbWFEYXRhLCAuLi5uZXN0ZWREYXRhLCAuLi5waWNrKGRhdGEsIGtleXNUb0tlZXApIH1gXG4gKiAtIElmIHRoZSBuZXcgYW5kIG9sZCBzY2hlbWEgdHlwZXMgYXJlIGFycmF5IGFuZCB0aGUgYGRhdGFgIGlzIGFuIGFycmF5IHRoZW46XG4gKiAgIC0gSWYgdGhlIHR5cGUgb2YgdGhlIG9sZCBhbmQgbmV3IHNjaGVtYSBgaXRlbXNgIGFyZSBhIG5vbi1hcnJheSBvYmplY3RzOlxuICogICAgIC0gUmV0cmlldmUgdGhlIHNjaGVtYSBmb3IgYW55IHJlZnMgd2l0aGluIGVhY2ggYG9sZEtleVNjaGVtYS5pdGVtc2AgYW5kL29yIGBuZXdLZXlTY2hlbWEuaXRlbXNgXG4gKiAgICAgLSBJZiB0aGUgYHR5cGVgcyBvZiBib3RoIGl0ZW1zIGFyZSB0aGUgc2FtZSAob3IgdGhlIG9sZCBkb2VzIG5vdCBoYXZlIGEgdHlwZSk6XG4gKiAgICAgICAtIElmIHRoZSB0eXBlIGlzIFwib2JqZWN0XCIsIHRoZW46XG4gKiAgICAgICAgIC0gRm9yIGVhY2ggZWxlbWVudCBpbiB0aGUgYGRhdGFgIHJlY3Vyc2l2ZWx5IHNhbml0aXplIHRoZSBkYXRhLCBzdG9wcGluZyBhdCBgbWF4SXRlbXNgIGlmIHNwZWNpZmllZFxuICogICAgICAgLSBPdGhlcndpc2UsIGp1c3QgcmV0dXJuIHRoZSBgZGF0YWAgcmVtb3ZpbmcgYW55IHZhbHVlcyBhZnRlciBgbWF4SXRlbXNgIGlmIGl0IGlzIHNldFxuICogICAtIElmIHRoZSB0eXBlIG9mIHRoZSBvbGQgYW5kIG5ldyBzY2hlbWEgYGl0ZW1zYCBhcmUgYm9vbGVhbnMgb2YgdGhlIHNhbWUgdmFsdWUsIHJldHVybiBgZGF0YWAgYXMgaXNcbiAqIC0gT3RoZXJ3aXNlIHJldHVybiBgdW5kZWZpbmVkYFxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBKU09OIHNjaGVtYSBvZiB0aGUgZW50aXJlIGZvcm1cbiAqIEBwYXJhbSBbbmV3U2NoZW1hXSAtIFRoZSBuZXcgc2NoZW1hIGZvciB3aGljaCB0aGUgZGF0YSBpcyBiZWluZyBzYW5pdGl6ZWRcbiAqIEBwYXJhbSBbb2xkU2NoZW1hXSAtIFRoZSBvbGQgc2NoZW1hIGZyb20gd2hpY2ggdGhlIGRhdGEgb3JpZ2luYXRlZFxuICogQHBhcmFtIFtkYXRhPXt9XSAtIFRoZSBmb3JtIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBzY2hlbWEsIGRlZmF1bHRpbmcgdG8gYW4gZW1wdHkgb2JqZWN0IHdoZW4gdW5kZWZpbmVkXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gVGhlIG5ldyBmb3JtIGRhdGEsIHdpdGggYWxsIHRoZSBmaWVsZHMgdW5pcXVlbHkgYXNzb2NpYXRlZCB3aXRoIHRoZSBvbGQgc2NoZW1hIHNldFxuICogICAgICB0byBgdW5kZWZpbmVkYC4gV2lsbCByZXR1cm4gYHVuZGVmaW5lZGAgaWYgdGhlIG5ldyBzY2hlbWEgaXMgbm90IGFuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNhbml0aXplRGF0YUZvck5ld1NjaGVtYSh2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIG5ld1NjaGVtYSwgb2xkU2NoZW1hLCBkYXRhID0ge30sIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgLy8gQnkgZGVmYXVsdCwgd2Ugd2lsbCBjbGVhciB0aGUgZm9ybSBkYXRhXG4gICAgbGV0IG5ld0Zvcm1EYXRhO1xuICAgIC8vIElmIHRoZSBuZXcgc2NoZW1hIGlzIG9mIHR5cGUgb2JqZWN0IGFuZCB0aGF0IG9iamVjdCBjb250YWlucyBhIGxpc3Qgb2YgcHJvcGVydGllc1xuICAgIGlmIChoYXMobmV3U2NoZW1hLCBQUk9QRVJUSUVTX0tFWSkpIHtcbiAgICAgICAgLy8gQ3JlYXRlIGFuIG9iamVjdCBjb250YWluaW5nIHJvb3QtbGV2ZWwga2V5cyBpbiB0aGUgb2xkIHNjaGVtYSwgc2V0dGluZyBlYWNoIGtleSB0byB1bmRlZmluZWQgdG8gcmVtb3ZlIHRoZSBkYXRhXG4gICAgICAgIGNvbnN0IHJlbW92ZU9sZFNjaGVtYURhdGEgPSB7fTtcbiAgICAgICAgaWYgKGhhcyhvbGRTY2hlbWEsIFBST1BFUlRJRVNfS0VZKSkge1xuICAgICAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IGdldChvbGRTY2hlbWEsIFBST1BFUlRJRVNfS0VZLCB7fSk7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhwcm9wZXJ0aWVzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzKGRhdGEsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlT2xkU2NoZW1hRGF0YVtrZXldID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhnZXQobmV3U2NoZW1hLCBQUk9QRVJUSUVTX0tFWSwge30pKTtcbiAgICAgICAgLy8gQ3JlYXRlIGEgcGxhY2UgdG8gc3RvcmUgbmVzdGVkIGRhdGEgdGhhdCB3aWxsIGJlIGEgc2lkZS1lZmZlY3Qgb2YgdGhlIGZpbHRlclxuICAgICAgICBjb25zdCBuZXN0ZWREYXRhID0ge307XG4gICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSBnZXQoZGF0YSwga2V5KTtcbiAgICAgICAgICAgIGxldCBvbGRLZXllZFNjaGVtYSA9IGdldChvbGRTY2hlbWEsIFtQUk9QRVJUSUVTX0tFWSwga2V5XSwge30pO1xuICAgICAgICAgICAgbGV0IG5ld0tleWVkU2NoZW1hID0gZ2V0KG5ld1NjaGVtYSwgW1BST1BFUlRJRVNfS0VZLCBrZXldLCB7fSk7XG4gICAgICAgICAgICAvLyBSZXNvbHZlIHRoZSByZWZzIGlmIHRoZXkgZXhpc3RcbiAgICAgICAgICAgIGlmIChoYXMob2xkS2V5ZWRTY2hlbWEsIFJFRl9LRVkpKSB7XG4gICAgICAgICAgICAgICAgb2xkS2V5ZWRTY2hlbWEgPSByZXRyaWV2ZVNjaGVtYSh2YWxpZGF0b3IsIG9sZEtleWVkU2NoZW1hLCByb290U2NoZW1hLCBmb3JtVmFsdWUsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChoYXMobmV3S2V5ZWRTY2hlbWEsIFJFRl9LRVkpKSB7XG4gICAgICAgICAgICAgICAgbmV3S2V5ZWRTY2hlbWEgPSByZXRyaWV2ZVNjaGVtYSh2YWxpZGF0b3IsIG5ld0tleWVkU2NoZW1hLCByb290U2NoZW1hLCBmb3JtVmFsdWUsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIE5vdyBnZXQgdHlwZXMgYW5kIHNlZSBpZiB0aGV5IGFyZSB0aGUgc2FtZVxuICAgICAgICAgICAgY29uc3Qgb2xkU2NoZW1hVHlwZUZvcktleSA9IGdldChvbGRLZXllZFNjaGVtYSwgJ3R5cGUnKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1NjaGVtYVR5cGVGb3JLZXkgPSBnZXQobmV3S2V5ZWRTY2hlbWEsICd0eXBlJyk7XG4gICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgb2xkIG9wdGlvbiBoYXMgdGhlIHNhbWUga2V5IHdpdGggdGhlIHNhbWUgdHlwZVxuICAgICAgICAgICAgaWYgKCFvbGRTY2hlbWFUeXBlRm9yS2V5IHx8IG9sZFNjaGVtYVR5cGVGb3JLZXkgPT09IG5ld1NjaGVtYVR5cGVGb3JLZXkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzKHJlbW92ZU9sZFNjaGVtYURhdGEsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU0lERS1FRkZFQ1Q6IHJlbW92ZSB0aGUgdW5kZWZpbmVkIHZhbHVlIGZvciBhIGtleSB0aGF0IGhhcyB0aGUgc2FtZSB0eXBlIGJldHdlZW4gdGhlIG9sZCBhbmQgbmV3IHNjaGVtYXNcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlbW92ZU9sZFNjaGVtYURhdGFba2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gSWYgaXQgaXMgYW4gb2JqZWN0LCB3ZSdsbCByZWN1cnNlIGFuZCBzdG9yZSB0aGUgcmVzdWx0aW5nIHNhbml0aXplZCBkYXRhIGZvciB0aGUga2V5XG4gICAgICAgICAgICAgICAgaWYgKG5ld1NjaGVtYVR5cGVGb3JLZXkgPT09ICdvYmplY3QnIHx8IChuZXdTY2hlbWFUeXBlRm9yS2V5ID09PSAnYXJyYXknICYmIEFycmF5LmlzQXJyYXkoZm9ybVZhbHVlKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU0lERS1FRkZFQ1Q6IHByb2Nlc3MgdGhlIG5ldyBzY2hlbWEgdHlwZSBvZiBvYmplY3QgcmVjdXJzaXZlbHkgdG8gc2F2ZSBpdGVyYXRpb25zXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1EYXRhID0gc2FuaXRpemVEYXRhRm9yTmV3U2NoZW1hKHZhbGlkYXRvciwgcm9vdFNjaGVtYSwgbmV3S2V5ZWRTY2hlbWEsIG9sZEtleWVkU2NoZW1hLCBmb3JtVmFsdWUsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1EYXRhICE9PSB1bmRlZmluZWQgfHwgbmV3U2NoZW1hVHlwZUZvcktleSA9PT0gJ2FycmF5Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBwdXQgdW5kZWZpbmVkIHZhbHVlcyBmb3IgdGhlIGFycmF5IHR5cGUgYW5kIG5vdCB0aGUgb2JqZWN0IHR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZERhdGFba2V5XSA9IGl0ZW1EYXRhO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBPaywgdGhlIG5vbi1vYmplY3QgdHlwZXMgbWF0Y2gsIGxldCdzIG1ha2Ugc3VyZSB0aGF0IGEgZGVmYXVsdCBvciBhIGNvbnN0IG9mIGEgZGlmZmVyZW50IHZhbHVlIGlzIHJlcGxhY2VkXG4gICAgICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIG5ldyBkZWZhdWx0IG9yIGNvbnN0LiBUaGlzIGFsbG93cyB0aGUgY2FzZSB3aGVyZSB0d28gc2NoZW1hcyBkaWZmZXIgdGhhdCBvbmx5IGJ5IHRoZSBkZWZhdWx0L2NvbnN0XG4gICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlIHRvIGJlIHByb3Blcmx5IHNlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld09wdGlvbkRlZmF1bHQgPSBnZXQobmV3S2V5ZWRTY2hlbWEsICdkZWZhdWx0JywgTk9fVkFMVUUpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvbGRPcHRpb25EZWZhdWx0ID0gZ2V0KG9sZEtleWVkU2NoZW1hLCAnZGVmYXVsdCcsIE5PX1ZBTFVFKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld09wdGlvbkRlZmF1bHQgIT09IE5PX1ZBTFVFICYmIG5ld09wdGlvbkRlZmF1bHQgIT09IGZvcm1WYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9sZE9wdGlvbkRlZmF1bHQgPT09IGZvcm1WYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBvbGQgZGVmYXVsdCBtYXRjaGVzIHRoZSBmb3JtVmFsdWUsIHdlJ2xsIHVwZGF0ZSB0aGUgbmV3IHZhbHVlIHRvIG1hdGNoIHRoZSBuZXcgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZU9sZFNjaGVtYURhdGFba2V5XSA9IG5ld09wdGlvbkRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChnZXQobmV3S2V5ZWRTY2hlbWEsICdyZWFkT25seScpID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIG5ldyBzY2hlbWEgaGFzIHRoZSBkZWZhdWx0IHNldCB0byByZWFkLW9ubHksIHRyZWF0IGl0IGxpa2UgYSBjb25zdCBhbmQgcmVtb3ZlIHRoZSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZU9sZFNjaGVtYURhdGFba2V5XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdPcHRpb25Db25zdCA9IGdldChuZXdLZXllZFNjaGVtYSwgJ2NvbnN0JywgTk9fVkFMVUUpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvbGRPcHRpb25Db25zdCA9IGdldChvbGRLZXllZFNjaGVtYSwgJ2NvbnN0JywgTk9fVkFMVUUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3T3B0aW9uQ29uc3QgIT09IE5PX1ZBTFVFICYmIG5ld09wdGlvbkNvbnN0ICE9PSBmb3JtVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMgaXMgYSBjb25zdCwgaWYgdGhlIG9sZCB2YWx1ZSBtYXRjaGVzLCByZXBsYWNlIHRoZSB2YWx1ZSB3aXRoIHRoZSBuZXcgY29uc3Qgb3RoZXJ3aXNlIGNsZWFyIGl0XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVPbGRTY2hlbWFEYXRhW2tleV0gPSBvbGRPcHRpb25Db25zdCA9PT0gZm9ybVZhbHVlID8gbmV3T3B0aW9uQ29uc3QgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBuZXdGb3JtRGF0YSA9IHtcbiAgICAgICAgICAgIC4uLih0eXBlb2YgZGF0YSA9PSAnc3RyaW5nJyB8fCBBcnJheS5pc0FycmF5KGRhdGEpID8gdW5kZWZpbmVkIDogZGF0YSksXG4gICAgICAgICAgICAuLi5yZW1vdmVPbGRTY2hlbWFEYXRhLFxuICAgICAgICAgICAgLi4ubmVzdGVkRGF0YSxcbiAgICAgICAgfTtcbiAgICAgICAgLy8gRmlyc3QgYXBwbHkgcmVtb3ZpbmcgdGhlIG9sZCBzY2hlbWEgZGF0YSwgdGhlbiBhcHBseSB0aGUgbmVzdGVkIGRhdGEsIHRoZW4gYXBwbHkgdGhlIG9sZCBkYXRhIGtleXMgdG8ga2VlcFxuICAgIH1cbiAgICBlbHNlIGlmIChnZXQob2xkU2NoZW1hLCAndHlwZScpID09PSAnYXJyYXknICYmIGdldChuZXdTY2hlbWEsICd0eXBlJykgPT09ICdhcnJheScgJiYgQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICBsZXQgb2xkU2NoZW1hSXRlbXMgPSBnZXQob2xkU2NoZW1hLCAnaXRlbXMnKTtcbiAgICAgICAgbGV0IG5ld1NjaGVtYUl0ZW1zID0gZ2V0KG5ld1NjaGVtYSwgJ2l0ZW1zJyk7XG4gICAgICAgIC8vIElmIGFueSBvZiB0aGUgYXJyYXkgdHlwZXMgYGl0ZW1zYCBhcmUgYXJyYXlzIChyZW1lbWJlciBhcnJheXMgYXJlIG9iamVjdHMpIHRoZW4gd2UnbGwganVzdCBkcm9wIHRoZSBkYXRhXG4gICAgICAgIC8vIEV2ZW50dWFsbHksIHdlIG1heSB3YW50IHRvIGRlYWwgd2l0aCB3aGVuIGVpdGhlciBvZiB0aGUgYGl0ZW1zYCBhcmUgYXJyYXlzIHNpbmNlIHRob3NlIHR1cGxlIHZhbGlkYXRpb25zXG4gICAgICAgIGlmICh0eXBlb2Ygb2xkU2NoZW1hSXRlbXMgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICB0eXBlb2YgbmV3U2NoZW1hSXRlbXMgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheShvbGRTY2hlbWFJdGVtcykgJiZcbiAgICAgICAgICAgICFBcnJheS5pc0FycmF5KG5ld1NjaGVtYUl0ZW1zKSkge1xuICAgICAgICAgICAgaWYgKGhhcyhvbGRTY2hlbWFJdGVtcywgUkVGX0tFWSkpIHtcbiAgICAgICAgICAgICAgICBvbGRTY2hlbWFJdGVtcyA9IHJldHJpZXZlU2NoZW1hKHZhbGlkYXRvciwgb2xkU2NoZW1hSXRlbXMsIHJvb3RTY2hlbWEsIGRhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChoYXMobmV3U2NoZW1hSXRlbXMsIFJFRl9LRVkpKSB7XG4gICAgICAgICAgICAgICAgbmV3U2NoZW1hSXRlbXMgPSByZXRyaWV2ZVNjaGVtYSh2YWxpZGF0b3IsIG5ld1NjaGVtYUl0ZW1zLCByb290U2NoZW1hLCBkYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBOb3cgZ2V0IHR5cGVzIGFuZCBzZWUgaWYgdGhleSBhcmUgdGhlIHNhbWVcbiAgICAgICAgICAgIGNvbnN0IG9sZFNjaGVtYVR5cGUgPSBnZXQob2xkU2NoZW1hSXRlbXMsICd0eXBlJyk7XG4gICAgICAgICAgICBjb25zdCBuZXdTY2hlbWFUeXBlID0gZ2V0KG5ld1NjaGVtYUl0ZW1zLCAndHlwZScpO1xuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIG9sZCBvcHRpb24gaGFzIHRoZSBzYW1lIGtleSB3aXRoIHRoZSBzYW1lIHR5cGVcbiAgICAgICAgICAgIGlmICghb2xkU2NoZW1hVHlwZSB8fCBvbGRTY2hlbWFUeXBlID09PSBuZXdTY2hlbWFUeXBlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF4SXRlbXMgPSBnZXQobmV3U2NoZW1hLCAnbWF4SXRlbXMnLCAtMSk7XG4gICAgICAgICAgICAgICAgaWYgKG5ld1NjaGVtYVR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0Zvcm1EYXRhID0gZGF0YS5yZWR1Y2UoKG5ld1ZhbHVlLCBhVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IHNhbml0aXplRGF0YUZvck5ld1NjaGVtYSh2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIG5ld1NjaGVtYUl0ZW1zLCBvbGRTY2hlbWFJdGVtcywgYVZhbHVlLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVZhbHVlICE9PSB1bmRlZmluZWQgJiYgKG1heEl0ZW1zIDwgMCB8fCBuZXdWYWx1ZS5sZW5ndGggPCBtYXhJdGVtcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZS5wdXNoKGl0ZW1WYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3VmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0Zvcm1EYXRhID0gbWF4SXRlbXMgPiAwICYmIGRhdGEubGVuZ3RoID4gbWF4SXRlbXMgPyBkYXRhLnNsaWNlKDAsIG1heEl0ZW1zKSA6IGRhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBvbGRTY2hlbWFJdGVtcyA9PT0gJ2Jvb2xlYW4nICYmXG4gICAgICAgICAgICB0eXBlb2YgbmV3U2NoZW1hSXRlbXMgPT09ICdib29sZWFuJyAmJlxuICAgICAgICAgICAgb2xkU2NoZW1hSXRlbXMgPT09IG5ld1NjaGVtYUl0ZW1zKSB7XG4gICAgICAgICAgICAvLyBJZiB0aGV5IGFyZSBib3RoIGJvb2xlYW5zIGFuZCBoYXZlIHRoZSBzYW1lIHZhbHVlIGp1c3QgcmV0dXJuIHRoZSBkYXRhIGFzIGlzIG90aGVyd2lzZSBmYWxsLXRocnUgdG8gdW5kZWZpbmVkXG4gICAgICAgICAgICBuZXdGb3JtRGF0YSA9IGRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWxzbyBwcm9iYWJseSB3YW50IHRvIGRlYWwgd2l0aCBgcHJlZml4SXRlbXNgIGFzIHR1cGxlcyB3aXRoIHRoZSBsYXRlc3QgMjAyMCBkcmFmdFxuICAgIH1cbiAgICByZXR1cm4gbmV3Rm9ybURhdGE7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zYW5pdGl6ZURhdGFGb3JOZXdTY2hlbWEuanMubWFwIiwiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJztcbmltcG9ydCB7IEFMTF9PRl9LRVksIERFUEVOREVOQ0lFU19LRVksIElEX0tFWSwgSVRFTVNfS0VZLCBQUk9QRVJUSUVTX0tFWSwgUkVGX0tFWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnLi4vaXNPYmplY3QnO1xuaW1wb3J0IHJldHJpZXZlU2NoZW1hIGZyb20gJy4vcmV0cmlldmVTY2hlbWEnO1xuaW1wb3J0IGdldFNjaGVtYVR5cGUgZnJvbSAnLi4vZ2V0U2NoZW1hVHlwZSc7XG4vKiogQW4gaW50ZXJuYWwgaGVscGVyIHRoYXQgZ2VuZXJhdGVzIGFuIGBJZFNjaGVtYWAgb2JqZWN0IGZvciB0aGUgYHNjaGVtYWAsIHJlY3Vyc2l2ZWx5IHdpdGggcHJvdGVjdGlvbiBhZ2FpbnN0XG4gKiBpbmZpbml0ZSByZWN1cnNpb25cbiAqXG4gKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBuZWNlc3NhcnlcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCB0aGUgYElkU2NoZW1hYCBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gaWRQcmVmaXggLSBUaGUgcHJlZml4IHRvIHVzZSBmb3IgdGhlIGlkXG4gKiBAcGFyYW0gaWRTZXBhcmF0b3IgLSBUaGUgc2VwYXJhdG9yIHRvIHVzZSBmb3IgdGhlIHBhdGggc2VnbWVudHMgaW4gdGhlIGlkXG4gKiBAcGFyYW0gW2lkXSAtIFRoZSBiYXNlIGlkIGZvciB0aGUgc2NoZW1hXG4gKiBAcGFyYW0gW3Jvb3RTY2hlbWFdIC0gVGhlIHJvb3Qgc2NoZW1hLCB1c2VkIHRvIHByaW1hcmlseSB0byBsb29rIHVwIGAkcmVmYHNcbiAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgdG8gYXNzaXN0IHJldHJpZXZpbmcgYSBzY2hlbWFcbiAqIEBwYXJhbSBbX3JlY3Vyc2VMaXN0PVtdXSAtIFRoZSBsaXN0IG9mIHJldHJpZXZlZCBzY2hlbWFzIGN1cnJlbnRseSBiZWluZyByZWN1cnNlZCwgdXNlZCB0byBwcmV2ZW50IGluZmluaXRlIHJlY3Vyc2lvblxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBgSWRTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGBzY2hlbWFgXG4gKi9cbmZ1bmN0aW9uIHRvSWRTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIHNjaGVtYSwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yLCBpZCwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIF9yZWN1cnNlTGlzdCA9IFtdLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIGlmIChSRUZfS0VZIGluIHNjaGVtYSB8fCBERVBFTkRFTkNJRVNfS0VZIGluIHNjaGVtYSB8fCBBTExfT0ZfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICBjb25zdCBfc2NoZW1hID0gcmV0cmlldmVTY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgIGNvbnN0IHNhbWVTY2hlbWFJbmRleCA9IF9yZWN1cnNlTGlzdC5maW5kSW5kZXgoKGl0ZW0pID0+IGlzRXF1YWwoaXRlbSwgX3NjaGVtYSkpO1xuICAgICAgICBpZiAoc2FtZVNjaGVtYUluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRvSWRTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIF9zY2hlbWEsIGlkUHJlZml4LCBpZFNlcGFyYXRvciwgaWQsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBfcmVjdXJzZUxpc3QuY29uY2F0KF9zY2hlbWEpLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKElURU1TX0tFWSBpbiBzY2hlbWEgJiYgIWdldChzY2hlbWEsIFtJVEVNU19LRVksIFJFRl9LRVldKSkge1xuICAgICAgICByZXR1cm4gdG9JZFNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgZ2V0KHNjaGVtYSwgSVRFTVNfS0VZKSwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yLCBpZCwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIF9yZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgIH1cbiAgICBjb25zdCAkaWQgPSBpZCB8fCBpZFByZWZpeDtcbiAgICBjb25zdCBpZFNjaGVtYSA9IHsgJGlkIH07XG4gICAgaWYgKGdldFNjaGVtYVR5cGUoc2NoZW1hKSA9PT0gJ29iamVjdCcgJiYgUFJPUEVSVElFU19LRVkgaW4gc2NoZW1hKSB7XG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBzY2hlbWEucHJvcGVydGllcykge1xuICAgICAgICAgICAgY29uc3QgZmllbGQgPSBnZXQoc2NoZW1hLCBbUFJPUEVSVElFU19LRVksIG5hbWVdKTtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkSWQgPSBpZFNjaGVtYVtJRF9LRVldICsgaWRTZXBhcmF0b3IgKyBuYW1lO1xuICAgICAgICAgICAgaWRTY2hlbWFbbmFtZV0gPSB0b0lkU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBpc09iamVjdChmaWVsZCkgPyBmaWVsZCA6IHt9LCBpZFByZWZpeCwgaWRTZXBhcmF0b3IsIGZpZWxkSWQsIHJvb3RTY2hlbWEsIFxuICAgICAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IGZvcm1EYXRhIGlzIG5vdCBhbiBvYmplY3QgLS0gdGhpcyBjYW4gaGFwcGVuIGlmIGFuXG4gICAgICAgICAgICAvLyBhcnJheSBpdGVtIGhhcyBqdXN0IGJlZW4gYWRkZWQsIGJ1dCBub3QgcG9wdWxhdGVkIHdpdGggZGF0YSB5ZXRcbiAgICAgICAgICAgIGdldChmb3JtRGF0YSwgW25hbWVdKSwgX3JlY3Vyc2VMaXN0LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlkU2NoZW1hO1xufVxuLyoqIEdlbmVyYXRlcyBhbiBgSWRTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGBzY2hlbWFgLCByZWN1cnNpdmVseVxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIG5lY2Vzc2FyeVxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBgSWRTY2hlbWFgIGlzIGRlc2lyZWRcbiAqIEBwYXJhbSBbaWRdIC0gVGhlIGJhc2UgaWQgZm9yIHRoZSBzY2hlbWFcbiAqIEBwYXJhbSBbcm9vdFNjaGVtYV0gLSBUaGUgcm9vdCBzY2hlbWEsIHVzZWQgdG8gcHJpbWFyaWx5IHRvIGxvb2sgdXAgYCRyZWZgc1xuICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICogQHBhcmFtIFtpZFByZWZpeD0ncm9vdCddIC0gVGhlIHByZWZpeCB0byB1c2UgZm9yIHRoZSBpZFxuICogQHBhcmFtIFtpZFNlcGFyYXRvcj0nXyddIC0gVGhlIHNlcGFyYXRvciB0byB1c2UgZm9yIHRoZSBwYXRoIHNlZ21lbnRzIGluIHRoZSBpZFxuICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gKiBAcmV0dXJucyAtIFRoZSBgSWRTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGBzY2hlbWFgXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvSWRTY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEsIGlkLCByb290U2NoZW1hLCBmb3JtRGF0YSwgaWRQcmVmaXggPSAncm9vdCcsIGlkU2VwYXJhdG9yID0gJ18nLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZikge1xuICAgIHJldHVybiB0b0lkU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBzY2hlbWEsIGlkUHJlZml4LCBpZFNlcGFyYXRvciwgaWQsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCB1bmRlZmluZWQsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRvSWRTY2hlbWEuanMubWFwIiwiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJztcbmltcG9ydCBzZXQgZnJvbSAnbG9kYXNoL3NldCc7XG5pbXBvcnQgeyBBTExfT0ZfS0VZLCBBTllfT0ZfS0VZLCBBRERJVElPTkFMX1BST1BFUlRJRVNfS0VZLCBERVBFTkRFTkNJRVNfS0VZLCBJVEVNU19LRVksIE5BTUVfS0VZLCBPTkVfT0ZfS0VZLCBQUk9QRVJUSUVTX0tFWSwgUkVGX0tFWSwgUkpTRl9BRERJVElPTkFMX1BST1BFUlRJRVNfRkxBRywgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IGdldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEgZnJvbSAnLi4vZ2V0RGlzY3JpbWluYXRvckZpZWxkRnJvbVNjaGVtYSc7XG5pbXBvcnQgZ2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uIGZyb20gJy4vZ2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uJztcbmltcG9ydCByZXRyaWV2ZVNjaGVtYSBmcm9tICcuL3JldHJpZXZlU2NoZW1hJztcbi8qKiBBbiBpbnRlcm5hbCBoZWxwZXIgdGhhdCBnZW5lcmF0ZXMgYW4gYFBhdGhTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGBzY2hlbWFgLCByZWN1cnNpdmVseSB3aXRoIHByb3RlY3Rpb24gYWdhaW5zdFxuICogaW5maW5pdGUgcmVjdXJzaW9uXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIGBQYXRoU2NoZW1hYCBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gW25hbWU9JyddIC0gVGhlIGJhc2UgbmFtZSBmb3IgdGhlIHNjaGVtYVxuICogQHBhcmFtIFtyb290U2NoZW1hXSAtIFRoZSByb290IHNjaGVtYSwgdXNlZCB0byBwcmltYXJpbHkgdG8gbG9vayB1cCBgJHJlZmBzXG4gKiBAcGFyYW0gW2Zvcm1EYXRhXSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIHRvIGFzc2lzdCByZXRyaWV2aW5nIGEgc2NoZW1hXG4gKiBAcGFyYW0gW19yZWN1cnNlTGlzdD1bXV0gLSBUaGUgbGlzdCBvZiByZXRyaWV2ZWQgc2NoZW1hcyBjdXJyZW50bHkgYmVpbmcgcmVjdXJzZWQsIHVzZWQgdG8gcHJldmVudCBpbmZpbml0ZSByZWN1cnNpb25cbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2ZdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBhbGxvd3MgZm9yIGN1c3RvbSBtZXJnaW5nIG9mIGBhbGxPZmAgc2NoZW1hc1xuICogQHJldHVybnMgLSBUaGUgYFBhdGhTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGBzY2hlbWFgXG4gKi9cbmZ1bmN0aW9uIHRvUGF0aFNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgc2NoZW1hLCBuYW1lLCByb290U2NoZW1hLCBmb3JtRGF0YSwgX3JlY3Vyc2VMaXN0ID0gW10sIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgaWYgKFJFRl9LRVkgaW4gc2NoZW1hIHx8IERFUEVOREVOQ0lFU19LRVkgaW4gc2NoZW1hIHx8IEFMTF9PRl9LRVkgaW4gc2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IF9zY2hlbWEgPSByZXRyaWV2ZVNjaGVtYSh2YWxpZGF0b3IsIHNjaGVtYSwgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgY29uc3Qgc2FtZVNjaGVtYUluZGV4ID0gX3JlY3Vyc2VMaXN0LmZpbmRJbmRleCgoaXRlbSkgPT4gaXNFcXVhbChpdGVtLCBfc2NoZW1hKSk7XG4gICAgICAgIGlmIChzYW1lU2NoZW1hSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9QYXRoU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBfc2NoZW1hLCBuYW1lLCByb290U2NoZW1hLCBmb3JtRGF0YSwgX3JlY3Vyc2VMaXN0LmNvbmNhdChfc2NoZW1hKSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGxldCBwYXRoU2NoZW1hID0ge1xuICAgICAgICBbTkFNRV9LRVldOiBuYW1lLnJlcGxhY2UoL15cXC4vLCAnJyksXG4gICAgfTtcbiAgICBpZiAoT05FX09GX0tFWSBpbiBzY2hlbWEgfHwgQU5ZX09GX0tFWSBpbiBzY2hlbWEpIHtcbiAgICAgICAgY29uc3QgeHh4T2YgPSBPTkVfT0ZfS0VZIGluIHNjaGVtYSA/IHNjaGVtYS5vbmVPZiA6IHNjaGVtYS5hbnlPZjtcbiAgICAgICAgY29uc3QgZGlzY3JpbWluYXRvciA9IGdldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEoc2NoZW1hKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBnZXRDbG9zZXN0TWF0Y2hpbmdPcHRpb24odmFsaWRhdG9yLCByb290U2NoZW1hLCBmb3JtRGF0YSwgeHh4T2YsIDAsIGRpc2NyaW1pbmF0b3IsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgY29uc3QgX3NjaGVtYSA9IHh4eE9mW2luZGV4XTtcbiAgICAgICAgcGF0aFNjaGVtYSA9IHtcbiAgICAgICAgICAgIC4uLnBhdGhTY2hlbWEsXG4gICAgICAgICAgICAuLi50b1BhdGhTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIF9zY2hlbWEsIG5hbWUsIHJvb3RTY2hlbWEsIGZvcm1EYXRhLCBfcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKEFERElUSU9OQUxfUFJPUEVSVElFU19LRVkgaW4gc2NoZW1hICYmIHNjaGVtYVtBRERJVElPTkFMX1BST1BFUlRJRVNfS0VZXSAhPT0gZmFsc2UpIHtcbiAgICAgICAgc2V0KHBhdGhTY2hlbWEsIFJKU0ZfQURESVRJT05BTF9QUk9QRVJUSUVTX0ZMQUcsIHRydWUpO1xuICAgIH1cbiAgICBpZiAoSVRFTVNfS0VZIGluIHNjaGVtYSAmJiBBcnJheS5pc0FycmF5KGZvcm1EYXRhKSkge1xuICAgICAgICBjb25zdCB7IGl0ZW1zOiBzY2hlbWFJdGVtcywgYWRkaXRpb25hbEl0ZW1zOiBzY2hlbWFBZGRpdGlvbmFsSXRlbXMgfSA9IHNjaGVtYTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hSXRlbXMpKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS5mb3JFYWNoKChlbGVtZW50LCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHNjaGVtYUl0ZW1zW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGhTY2hlbWFbaV0gPSB0b1BhdGhTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIHNjaGVtYUl0ZW1zW2ldLCBgJHtuYW1lfS4ke2l9YCwgcm9vdFNjaGVtYSwgZWxlbWVudCwgX3JlY3Vyc2VMaXN0LCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjaGVtYUFkZGl0aW9uYWxJdGVtcykge1xuICAgICAgICAgICAgICAgICAgICBwYXRoU2NoZW1hW2ldID0gdG9QYXRoU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBzY2hlbWFBZGRpdGlvbmFsSXRlbXMsIGAke25hbWV9LiR7aX1gLCByb290U2NoZW1hLCBlbGVtZW50LCBfcmVjdXJzZUxpc3QsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVW5hYmxlIHRvIGdlbmVyYXRlIHBhdGggc2NoZW1hIGZvciBcIiR7bmFtZX0uJHtpfVwiLiBObyBzY2hlbWEgZGVmaW5lZCBmb3IgaXRgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1EYXRhLmZvckVhY2goKGVsZW1lbnQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBwYXRoU2NoZW1hW2ldID0gdG9QYXRoU2NoZW1hSW50ZXJuYWwodmFsaWRhdG9yLCBzY2hlbWFJdGVtcywgYCR7bmFtZX0uJHtpfWAsIHJvb3RTY2hlbWEsIGVsZW1lbnQsIF9yZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAoUFJPUEVSVElFU19LRVkgaW4gc2NoZW1hKSB7XG4gICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gc2NoZW1hLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZ2V0KHNjaGVtYSwgW1BST1BFUlRJRVNfS0VZLCBwcm9wZXJ0eV0pO1xuICAgICAgICAgICAgcGF0aFNjaGVtYVtwcm9wZXJ0eV0gPSB0b1BhdGhTY2hlbWFJbnRlcm5hbCh2YWxpZGF0b3IsIGZpZWxkLCBgJHtuYW1lfS4ke3Byb3BlcnR5fWAsIHJvb3RTY2hlbWEsIFxuICAgICAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IGZvcm1EYXRhIGlzIG5vdCBhbiBvYmplY3QgLS0gdGhpcyBjYW4gaGFwcGVuIGlmIGFuXG4gICAgICAgICAgICAvLyBhcnJheSBpdGVtIGhhcyBqdXN0IGJlZW4gYWRkZWQsIGJ1dCBub3QgcG9wdWxhdGVkIHdpdGggZGF0YSB5ZXRcbiAgICAgICAgICAgIGdldChmb3JtRGF0YSwgW3Byb3BlcnR5XSksIF9yZWN1cnNlTGlzdCwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwYXRoU2NoZW1hO1xufVxuLyoqIEdlbmVyYXRlcyBhbiBgUGF0aFNjaGVtYWAgb2JqZWN0IGZvciB0aGUgYHNjaGVtYWAsIHJlY3Vyc2l2ZWx5XG4gKlxuICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gbmVjZXNzYXJ5XG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIGBQYXRoU2NoZW1hYCBpcyBkZXNpcmVkXG4gKiBAcGFyYW0gW25hbWU9JyddIC0gVGhlIGJhc2UgbmFtZSBmb3IgdGhlIHNjaGVtYVxuICogQHBhcmFtIFtyb290U2NoZW1hXSAtIFRoZSByb290IHNjaGVtYSwgdXNlZCB0byBwcmltYXJpbHkgdG8gbG9vayB1cCBgJHJlZmBzXG4gKiBAcGFyYW0gW2Zvcm1EYXRhXSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIHRvIGFzc2lzdCByZXRyaWV2aW5nIGEgc2NoZW1hXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gVGhlIGBQYXRoU2NoZW1hYCBvYmplY3QgZm9yIHRoZSBgc2NoZW1hYFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b1BhdGhTY2hlbWEodmFsaWRhdG9yLCBzY2hlbWEsIG5hbWUgPSAnJywgcm9vdFNjaGVtYSwgZm9ybURhdGEsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgcmV0dXJuIHRvUGF0aFNjaGVtYUludGVybmFsKHZhbGlkYXRvciwgc2NoZW1hLCBuYW1lLCByb290U2NoZW1hLCBmb3JtRGF0YSwgdW5kZWZpbmVkLCBleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD10b1BhdGhTY2hlbWEuanMubWFwIiwiaW1wb3J0IGRlZXBFcXVhbHMgZnJvbSAnLi9kZWVwRXF1YWxzJztcbmltcG9ydCB7IGdldERlZmF1bHRGb3JtU3RhdGUsIGdldERpc3BsYXlMYWJlbCwgZ2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uLCBnZXRGaXJzdE1hdGNoaW5nT3B0aW9uLCBnZXRNYXRjaGluZ09wdGlvbiwgaXNGaWxlc0FycmF5LCBpc011bHRpU2VsZWN0LCBpc1NlbGVjdCwgbWVyZ2VWYWxpZGF0aW9uRGF0YSwgcmV0cmlldmVTY2hlbWEsIHNhbml0aXplRGF0YUZvck5ld1NjaGVtYSwgdG9JZFNjaGVtYSwgdG9QYXRoU2NoZW1hLCB9IGZyb20gJy4vc2NoZW1hJztcbi8qKiBUaGUgYFNjaGVtYVV0aWxzYCBjbGFzcyBwcm92aWRlcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBwdWJsaWNseSBleHBvcnRlZCBBUElzIGluIHRoZSBgdXRpbHMvc2NoZW1hYCBkaXJlY3Rvcnkgc3VjaFxuICogdGhhdCBvbmUgZG9lcyBub3QgaGF2ZSB0byBleHBsaWNpdGx5IHBhc3MgdGhlIGB2YWxpZGF0b3JgLCBgcm9vdFNjaGVtYWAsIGBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yYCBvclxuICogYGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mYCB0byBlYWNoIG1ldGhvZC4gU2luY2UgdGhlc2UgZ2VuZXJhbGx5IGRvIG5vdCBjaGFuZ2UgYWNyb3NzIGEgYEZvcm1gLCB0aGlzIGFsbG93cyBmb3JcbiAqIHByb3ZpZGluZyBhIHNpbXBsaWZpZWQgc2V0IG9mIEFQSXMgdG8gdGhlIGBAcmpzZi9jb3JlYCBjb21wb25lbnRzIGFuZCB0aGUgdmFyaW91cyB0aGVtZXMgYXMgd2VsbC4gVGhpcyBjbGFzc1xuICogaW1wbGVtZW50cyB0aGUgYFNjaGVtYVV0aWxzVHlwZWAgaW50ZXJmYWNlLlxuICovXG5jbGFzcyBTY2hlbWFVdGlscyB7XG4gICAgLyoqIENvbnN0cnVjdHMgdGhlIGBTY2hlbWFVdGlsc2AgaW5zdGFuY2Ugd2l0aCB0aGUgZ2l2ZW4gYHZhbGlkYXRvcmAgYW5kIGByb290U2NoZW1hYCBzdG9yZWQgYXMgaW5zdGFuY2UgdmFyaWFibGVzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsaWRhdG9yIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAgICAgKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IHNjaGVtYSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICAgICAqIEBwYXJhbSBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yIC0gQ29uZmlndXJhdGlvbiBmbGFncyB0byBhbGxvdyB1c2VycyB0byBvdmVycmlkZSBkZWZhdWx0IGZvcm0gc3RhdGUgYmVoYXZpb3JcbiAgICAgKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcih2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgICAgIHRoaXMucm9vdFNjaGVtYSA9IHJvb3RTY2hlbWE7XG4gICAgICAgIHRoaXMudmFsaWRhdG9yID0gdmFsaWRhdG9yO1xuICAgICAgICB0aGlzLmV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPSBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yO1xuICAgICAgICB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mID0gZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2Y7XG4gICAgfVxuICAgIC8qKiBSZXR1cm5zIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW4gdGhlIGBTY2hlbWFVdGlsc1R5cGVgXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyAtIFRoZSBgVmFsaWRhdG9yVHlwZWBcbiAgICAgKi9cbiAgICBnZXRWYWxpZGF0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRvcjtcbiAgICB9XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBlaXRoZXIgdGhlIGB2YWxpZGF0b3JgIGFuZCBgcm9vdFNjaGVtYWAgZGlmZmVyIGZyb20gdGhlIG9uZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW5zdGFuY2Ugb2ZcbiAgICAgKiB0aGUgYFNjaGVtYVV0aWxzVHlwZWAuIElmIGVpdGhlciBgdmFsaWRhdG9yYCBvciBgcm9vdFNjaGVtYWAgYXJlIGZhbHN5LCB0aGVuIHJldHVybiBmYWxzZSB0byBwcmV2ZW50IHRoZSBjcmVhdGlvblxuICAgICAqIG9mIGEgbmV3IGBTY2hlbWFVdGlsc1R5cGVgIHdpdGggaW5jb21wbGV0ZSBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbGlkYXRvciAtIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgVmFsaWRhdG9yVHlwZWAgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSBjb21wYXJlZCBhZ2FpbnN0IHRoZSBjdXJyZW50IG9uZVxuICAgICAqIEBwYXJhbSByb290U2NoZW1hIC0gVGhlIHJvb3Qgc2NoZW1hIHRoYXQgd2lsbCBiZSBjb21wYXJlZCBhZ2FpbnN0IHRoZSBjdXJyZW50IG9uZVxuICAgICAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcl0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmplY3QsIGlmIHByb3ZpZGVkLCBhbGxvd3MgdXNlcnMgdG8gb3ZlcnJpZGUgZGVmYXVsdCBmb3JtIHN0YXRlIGJlaGF2aW9yXG4gICAgICogQHBhcmFtIFtleHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZl0gLSBPcHRpb25hbCBmdW5jdGlvbiB0aGF0IGFsbG93cyBmb3IgY3VzdG9tIG1lcmdpbmcgb2YgYGFsbE9mYCBzY2hlbWFzXG4gICAgICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBgU2NoZW1hVXRpbHNUeXBlYCBkaWZmZXJzIGZyb20gdGhlIGdpdmVuIGB2YWxpZGF0b3JgIG9yIGByb290U2NoZW1hYFxuICAgICAqL1xuICAgIGRvZXNTY2hlbWFVdGlsc0RpZmZlcih2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPSB7fSwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpIHtcbiAgICAgICAgaWYgKCF2YWxpZGF0b3IgfHwgIXJvb3RTY2hlbWEpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHRoaXMudmFsaWRhdG9yICE9PSB2YWxpZGF0b3IgfHxcbiAgICAgICAgICAgICFkZWVwRXF1YWxzKHRoaXMucm9vdFNjaGVtYSwgcm9vdFNjaGVtYSkgfHxcbiAgICAgICAgICAgICFkZWVwRXF1YWxzKHRoaXMuZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciwgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcikgfHxcbiAgICAgICAgICAgIHRoaXMuZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YgIT09IGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG4gICAgLyoqIFJldHVybnMgdGhlIHN1cGVyc2V0IG9mIGBmb3JtRGF0YWAgdGhhdCBpbmNsdWRlcyB0aGUgZ2l2ZW4gc2V0IHVwZGF0ZWQgdG8gaW5jbHVkZSBhbnkgbWlzc2luZyBmaWVsZHMgdGhhdCBoYXZlXG4gICAgICogY29tcHV0ZWQgdG8gaGF2ZSBkZWZhdWx0cyBwcm92aWRlZCBpbiB0aGUgYHNjaGVtYWAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIGRlZmF1bHQgc3RhdGUgaXMgZGVzaXJlZFxuICAgICAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgb250byB3aGljaCB0byBwcm92aWRlIGFueSBtaXNzaW5nIGRlZmF1bHRzXG4gICAgICogQHBhcmFtIFtpbmNsdWRlVW5kZWZpbmVkVmFsdWVzPWZhbHNlXSAtIE9wdGlvbmFsIGZsYWcsIGlmIHRydWUsIGNhdXNlIHVuZGVmaW5lZCB2YWx1ZXMgdG8gYmUgYWRkZWQgYXMgZGVmYXVsdHMuXG4gICAgICogICAgICAgICAgSWYgXCJleGNsdWRlT2JqZWN0Q2hpbGRyZW5cIiwgcGFzcyBgaW5jbHVkZVVuZGVmaW5lZFZhbHVlc2AgYXMgZmFsc2Ugd2hlbiBjb21wdXRpbmcgZGVmYXVsdHMgZm9yIGFueSBuZXN0ZWRcbiAgICAgKiAgICAgICAgICBvYmplY3QgcHJvcGVydGllcy5cbiAgICAgKiBAcmV0dXJucyAtIFRoZSByZXN1bHRpbmcgYGZvcm1EYXRhYCB3aXRoIGFsbCB0aGUgZGVmYXVsdHMgcHJvdmlkZWRcbiAgICAgKi9cbiAgICBnZXREZWZhdWx0Rm9ybVN0YXRlKHNjaGVtYSwgZm9ybURhdGEsIGluY2x1ZGVVbmRlZmluZWRWYWx1ZXMgPSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gZ2V0RGVmYXVsdEZvcm1TdGF0ZSh0aGlzLnZhbGlkYXRvciwgc2NoZW1hLCBmb3JtRGF0YSwgdGhpcy5yb290U2NoZW1hLCBpbmNsdWRlVW5kZWZpbmVkVmFsdWVzLCB0aGlzLmV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsIHRoaXMuZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgIH1cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjb21iaW5hdGlvbiBvZiBgc2NoZW1hYCBhbmQgYHVpU2NoZW1hYCBwcm9wZXJ0aWVzIGluZGljYXRlcyB0aGF0IHRoZSBsYWJlbCBmb3IgdGhlIGBzY2hlbWFgXG4gICAgICogc2hvdWxkIGJlIGRpc3BsYXllZCBpbiBhIFVJLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIHRoZSBkaXNwbGF5IGxhYmVsIGZsYWcgaXMgZGVzaXJlZFxuICAgICAqIEBwYXJhbSBbdWlTY2hlbWFdIC0gVGhlIFVJIHNjaGVtYSBmcm9tIHdoaWNoIHRvIGRlcml2ZSBwb3RlbnRpYWxseSBkaXNwbGF5YWJsZSBpbmZvcm1hdGlvblxuICAgICAqIEBwYXJhbSBbZ2xvYmFsT3B0aW9ucz17fV0gLSBUaGUgb3B0aW9uYWwgR2xvYmFsIFVJIFNjaGVtYSBmcm9tIHdoaWNoIHRvIGdldCBhbnkgZmFsbGJhY2sgYHh4eGAgb3B0aW9uc1xuICAgICAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGUgbGFiZWwgc2hvdWxkIGJlIGRpc3BsYXllZCBvciBmYWxzZSBpZiBpdCBzaG91bGQgbm90XG4gICAgICovXG4gICAgZ2V0RGlzcGxheUxhYmVsKHNjaGVtYSwgdWlTY2hlbWEsIGdsb2JhbE9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIGdldERpc3BsYXlMYWJlbCh0aGlzLnZhbGlkYXRvciwgc2NoZW1hLCB1aVNjaGVtYSwgdGhpcy5yb290U2NoZW1hLCBnbG9iYWxPcHRpb25zLCB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG4gICAgLyoqIERldGVybWluZXMgd2hpY2ggb2YgdGhlIGdpdmVuIGBvcHRpb25zYCBwcm92aWRlZCBtb3N0IGNsb3NlbHkgbWF0Y2hlcyB0aGUgYGZvcm1EYXRhYC5cbiAgICAgKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgb3B0aW9uIHRoYXQgaXMgdmFsaWQgYW5kIGlzIHRoZSBjbG9zZXN0IG1hdGNoLCBvciAwIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxuICAgICAqXG4gICAgICogVGhlIGNsb3Nlc3QgbWF0Y2ggaXMgZGV0ZXJtaW5lZCB1c2luZyB0aGUgbnVtYmVyIG9mIG1hdGNoaW5nIHByb3BlcnRpZXMsIGFuZCBtb3JlIGhlYXZpbHkgZmF2b3JzIG9wdGlvbnMgd2l0aFxuICAgICAqIG1hdGNoaW5nIHJlYWRPbmx5LCBkZWZhdWx0LCBvciBjb25zdCB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgZm9ybSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2NoZW1hXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgbGlzdCBvZiBvcHRpb25zIHRoYXQgY2FuIGJlIHNlbGVjdGVkIGZyb21cbiAgICAgKiBAcGFyYW0gW3NlbGVjdGVkT3B0aW9uXSAtIFRoZSBpbmRleCBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG9wdGlvbiwgZGVmYXVsdGVkIHRvIC0xIGlmIG5vdCBzcGVjaWZpZWRcbiAgICAgKiBAcGFyYW0gW2Rpc2NyaW1pbmF0b3JGaWVsZF0gLSBUaGUgb3B0aW9uYWwgbmFtZSBvZiB0aGUgZmllbGQgd2l0aGluIHRoZSBvcHRpb25zIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyB1c2VkIHRvXG4gICAgICogICAgICAgICAgZGV0ZXJtaW5lIHdoaWNoIG9wdGlvbiBpcyBzZWxlY3RlZFxuICAgICAqIEByZXR1cm5zIC0gVGhlIGluZGV4IG9mIHRoZSBvcHRpb24gdGhhdCBpcyB0aGUgY2xvc2VzdCBtYXRjaCB0byB0aGUgYGZvcm1EYXRhYCBvciB0aGUgYHNlbGVjdGVkT3B0aW9uYCBpZiBubyBtYXRjaFxuICAgICAqL1xuICAgIGdldENsb3Nlc3RNYXRjaGluZ09wdGlvbihmb3JtRGF0YSwgb3B0aW9ucywgc2VsZWN0ZWRPcHRpb24sIGRpc2NyaW1pbmF0b3JGaWVsZCkge1xuICAgICAgICByZXR1cm4gZ2V0Q2xvc2VzdE1hdGNoaW5nT3B0aW9uKHRoaXMudmFsaWRhdG9yLCB0aGlzLnJvb3RTY2hlbWEsIGZvcm1EYXRhLCBvcHRpb25zLCBzZWxlY3RlZE9wdGlvbiwgZGlzY3JpbWluYXRvckZpZWxkLCB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG4gICAgLyoqIEdpdmVuIHRoZSBgZm9ybURhdGFgIGFuZCBsaXN0IG9mIGBvcHRpb25zYCwgYXR0ZW1wdHMgdG8gZmluZCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9wdGlvbiB0aGF0IG1hdGNoZXMgdGhlIGRhdGEuXG4gICAgICogQWx3YXlzIHJldHVybnMgdGhlIGZpcnN0IG9wdGlvbiBpZiB0aGVyZSBpcyBub3RoaW5nIHRoYXQgbWF0Y2hlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBjdXJyZW50IGZvcm1EYXRhLCBpZiBhbnksIHVzZWQgdG8gZmlndXJlIG91dCBhIG1hdGNoXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgbGlzdCBvZiBvcHRpb25zIHRvIGZpbmQgYSBtYXRjaGluZyBvcHRpb25zIGZyb21cbiAgICAgKiBAcGFyYW0gW2Rpc2NyaW1pbmF0b3JGaWVsZF0gLSBUaGUgb3B0aW9uYWwgbmFtZSBvZiB0aGUgZmllbGQgd2l0aGluIHRoZSBvcHRpb25zIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyB1c2VkIHRvXG4gICAgICogICAgICAgICAgZGV0ZXJtaW5lIHdoaWNoIG9wdGlvbiBpcyBzZWxlY3RlZFxuICAgICAqIEByZXR1cm5zIC0gVGhlIGZpcnN0aW5kZXggb2YgdGhlIG1hdGNoZWQgb3B0aW9uIG9yIDAgaWYgbm9uZSBpcyBhdmFpbGFibGVcbiAgICAgKi9cbiAgICBnZXRGaXJzdE1hdGNoaW5nT3B0aW9uKGZvcm1EYXRhLCBvcHRpb25zLCBkaXNjcmltaW5hdG9yRmllbGQpIHtcbiAgICAgICAgcmV0dXJuIGdldEZpcnN0TWF0Y2hpbmdPcHRpb24odGhpcy52YWxpZGF0b3IsIGZvcm1EYXRhLCBvcHRpb25zLCB0aGlzLnJvb3RTY2hlbWEsIGRpc2NyaW1pbmF0b3JGaWVsZCk7XG4gICAgfVxuICAgIC8qKiBHaXZlbiB0aGUgYGZvcm1EYXRhYCBhbmQgbGlzdCBvZiBgb3B0aW9uc2AsIGF0dGVtcHRzIHRvIGZpbmQgdGhlIGluZGV4IG9mIHRoZSBvcHRpb24gdGhhdCBiZXN0IG1hdGNoZXMgdGhlIGRhdGEuXG4gICAgICogRGVwcmVjYXRlZCwgdXNlIGBnZXRGaXJzdE1hdGNoaW5nT3B0aW9uKClgIGluc3RlYWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCBvbnRvIHdoaWNoIHRvIHByb3ZpZGUgYW55IG1pc3NpbmcgZGVmYXVsdHNcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBsaXN0IG9mIG9wdGlvbnMgdG8gZmluZCBhIG1hdGNoaW5nIG9wdGlvbnMgZnJvbVxuICAgICAqIEBwYXJhbSBbZGlzY3JpbWluYXRvckZpZWxkXSAtIFRoZSBvcHRpb25hbCBuYW1lIG9mIHRoZSBmaWVsZCB3aXRoaW4gdGhlIG9wdGlvbnMgb2JqZWN0IHdob3NlIHZhbHVlIGlzIHVzZWQgdG9cbiAgICAgKiAgICAgICAgICBkZXRlcm1pbmUgd2hpY2ggb3B0aW9uIGlzIHNlbGVjdGVkXG4gICAgICogQHJldHVybnMgLSBUaGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgb3B0aW9uIG9yIDAgaWYgbm9uZSBpcyBhdmFpbGFibGVcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqL1xuICAgIGdldE1hdGNoaW5nT3B0aW9uKGZvcm1EYXRhLCBvcHRpb25zLCBkaXNjcmltaW5hdG9yRmllbGQpIHtcbiAgICAgICAgcmV0dXJuIGdldE1hdGNoaW5nT3B0aW9uKHRoaXMudmFsaWRhdG9yLCBmb3JtRGF0YSwgb3B0aW9ucywgdGhpcy5yb290U2NoZW1hLCBkaXNjcmltaW5hdG9yRmllbGQpO1xuICAgIH1cbiAgICAvKiogQ2hlY2tzIHRvIHNlZSBpZiB0aGUgYHNjaGVtYWAgYW5kIGB1aVNjaGVtYWAgY29tYmluYXRpb24gcmVwcmVzZW50cyBhbiBhcnJheSBvZiBmaWxlc1xuICAgICAqXG4gICAgICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHdoaWNoIGNoZWNrIGZvciBhcnJheSBvZiBmaWxlcyBmbGFnIGlzIGRlc2lyZWRcbiAgICAgKiBAcGFyYW0gW3VpU2NoZW1hXSAtIFRoZSBVSSBzY2hlbWEgZnJvbSB3aGljaCB0byBjaGVjayB0aGUgd2lkZ2V0XG4gICAgICogQHJldHVybnMgLSBUcnVlIGlmIHNjaGVtYS91aVNjaGVtYSBjb250YWlucyBhbiBhcnJheSBvZiBmaWxlcywgb3RoZXJ3aXNlIGZhbHNlXG4gICAgICovXG4gICAgaXNGaWxlc0FycmF5KHNjaGVtYSwgdWlTY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIGlzRmlsZXNBcnJheSh0aGlzLnZhbGlkYXRvciwgc2NoZW1hLCB1aVNjaGVtYSwgdGhpcy5yb290U2NoZW1hLCB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG4gICAgLyoqIENoZWNrcyB0byBzZWUgaWYgdGhlIGBzY2hlbWFgIGNvbWJpbmF0aW9uIHJlcHJlc2VudHMgYSBtdWx0aS1zZWxlY3RcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCBjaGVjayBmb3IgYSBtdWx0aS1zZWxlY3QgZmxhZyBpcyBkZXNpcmVkXG4gICAgICogQHJldHVybnMgLSBUcnVlIGlmIHNjaGVtYSBjb250YWlucyBhIG11bHRpLXNlbGVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gICAgICovXG4gICAgaXNNdWx0aVNlbGVjdChzY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIGlzTXVsdGlTZWxlY3QodGhpcy52YWxpZGF0b3IsIHNjaGVtYSwgdGhpcy5yb290U2NoZW1hLCB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG4gICAgLyoqIENoZWNrcyB0byBzZWUgaWYgdGhlIGBzY2hlbWFgIGNvbWJpbmF0aW9uIHJlcHJlc2VudHMgYSBzZWxlY3RcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCBjaGVjayBmb3IgYSBzZWxlY3QgZmxhZyBpcyBkZXNpcmVkXG4gICAgICogQHJldHVybnMgLSBUcnVlIGlmIHNjaGVtYSBjb250YWlucyBhIHNlbGVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gICAgICovXG4gICAgaXNTZWxlY3Qoc2NoZW1hKSB7XG4gICAgICAgIHJldHVybiBpc1NlbGVjdCh0aGlzLnZhbGlkYXRvciwgc2NoZW1hLCB0aGlzLnJvb3RTY2hlbWEsIHRoaXMuZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgIH1cbiAgICAvKiogTWVyZ2VzIHRoZSBlcnJvcnMgaW4gYGFkZGl0aW9uYWxFcnJvclNjaGVtYWAgaW50byB0aGUgZXhpc3RpbmcgYHZhbGlkYXRpb25EYXRhYCBieSBjb21iaW5pbmcgdGhlIGhpZXJhcmNoaWVzIGluXG4gICAgICogdGhlIHR3byBgRXJyb3JTY2hlbWFgcyBhbmQgdGhlbiBhcHBlbmRpbmcgdGhlIGVycm9yIGxpc3QgZnJvbSB0aGUgYGFkZGl0aW9uYWxFcnJvclNjaGVtYWAgb2J0YWluZWQgYnkgY2FsbGluZ1xuICAgICAqIGBnZXRWYWxpZGF0b3IoKS50b0Vycm9yTGlzdCgpYCBvbnRvIHRoZSBgZXJyb3JzYCBpbiB0aGUgYHZhbGlkYXRpb25EYXRhYC4gSWYgbm8gYGFkZGl0aW9uYWxFcnJvclNjaGVtYWAgaXMgcGFzc2VkLFxuICAgICAqIHRoZW4gYHZhbGlkYXRpb25EYXRhYCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uRGF0YSAtIFRoZSBjdXJyZW50IGBWYWxpZGF0aW9uRGF0YWAgaW50byB3aGljaCB0byBtZXJnZSB0aGUgYWRkaXRpb25hbCBlcnJvcnNcbiAgICAgKiBAcGFyYW0gW2FkZGl0aW9uYWxFcnJvclNjaGVtYV0gLSBUaGUgYWRkaXRpb25hbCBzZXQgb2YgZXJyb3JzXG4gICAgICogQHJldHVybnMgLSBUaGUgYHZhbGlkYXRpb25EYXRhYCB3aXRoIHRoZSBhZGRpdGlvbmFsIGVycm9ycyBmcm9tIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIG1lcmdlZCBpbnRvIGl0LCBpZiBwcm92aWRlZC5cbiAgICAgKiBAZGVwcmVjYXRlZCAtIFVzZSB0aGUgYHZhbGlkYXRpb25EYXRhTWVyZ2UoKWAgZnVuY3Rpb24gZXhwb3J0ZWQgZnJvbSBgQHJqc2YvdXRpbHNgIGluc3RlYWQuIFRoaXMgZnVuY3Rpb24gd2lsbCBiZVxuICAgICAqICAgICAgICByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuXG4gICAgICovXG4gICAgbWVyZ2VWYWxpZGF0aW9uRGF0YSh2YWxpZGF0aW9uRGF0YSwgYWRkaXRpb25hbEVycm9yU2NoZW1hKSB7XG4gICAgICAgIHJldHVybiBtZXJnZVZhbGlkYXRpb25EYXRhKHRoaXMudmFsaWRhdG9yLCB2YWxpZGF0aW9uRGF0YSwgYWRkaXRpb25hbEVycm9yU2NoZW1hKTtcbiAgICB9XG4gICAgLyoqIFJldHJpZXZlcyBhbiBleHBhbmRlZCBzY2hlbWEgdGhhdCBoYXMgaGFkIGFsbCBvZiBpdHMgY29uZGl0aW9ucywgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLCByZWZlcmVuY2VzIGFuZFxuICAgICAqIGRlcGVuZGVuY2llcyByZXNvbHZlZCBhbmQgbWVyZ2VkIGludG8gdGhlIGBzY2hlbWFgIGdpdmVuIGEgYHJhd0Zvcm1EYXRhYCB0aGF0IGlzIHVzZWQgdG8gZG8gdGhlIHBvdGVudGlhbGx5XG4gICAgICogcmVjdXJzaXZlIHJlc29sdXRpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggcmV0cmlldmluZyBhIHNjaGVtYSBpcyBkZXNpcmVkXG4gICAgICogQHBhcmFtIFtyYXdGb3JtRGF0YV0gLSBUaGUgY3VycmVudCBmb3JtRGF0YSwgaWYgYW55LCB0byBhc3Npc3QgcmV0cmlldmluZyBhIHNjaGVtYVxuICAgICAqIEByZXR1cm5zIC0gVGhlIHNjaGVtYSBoYXZpbmcgaXRzIGNvbmRpdGlvbnMsIGFkZGl0aW9uYWwgcHJvcGVydGllcywgcmVmZXJlbmNlcyBhbmQgZGVwZW5kZW5jaWVzIHJlc29sdmVkXG4gICAgICovXG4gICAgcmV0cmlldmVTY2hlbWEoc2NoZW1hLCByYXdGb3JtRGF0YSkge1xuICAgICAgICByZXR1cm4gcmV0cmlldmVTY2hlbWEodGhpcy52YWxpZGF0b3IsIHNjaGVtYSwgdGhpcy5yb290U2NoZW1hLCByYXdGb3JtRGF0YSwgdGhpcy5leHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZik7XG4gICAgfVxuICAgIC8qKiBTYW5pdGl6ZSB0aGUgYGRhdGFgIGFzc29jaWF0ZWQgd2l0aCB0aGUgYG9sZFNjaGVtYWAgc28gaXQgaXMgY29uc2lkZXJlZCBhcHByb3ByaWF0ZSBmb3IgdGhlIGBuZXdTY2hlbWFgLiBJZiB0aGVcbiAgICAgKiBuZXcgc2NoZW1hIGRvZXMgbm90IGNvbnRhaW4gYW55IHByb3BlcnRpZXMsIHRoZW4gYHVuZGVmaW5lZGAgaXMgcmV0dXJuZWQgdG8gY2xlYXIgYWxsIHRoZSBmb3JtIGRhdGEuIER1ZSB0byB0aGVcbiAgICAgKiBuYXR1cmUgb2Ygc2NoZW1hcywgdGhpcyBzYW5pdGl6YXRpb24gaGFwcGVucyByZWN1cnNpdmVseSBmb3IgbmVzdGVkIG9iamVjdHMgb2YgZGF0YS4gQWxzbywgYW55IHByb3BlcnRpZXMgaW4gdGhlXG4gICAgICogb2xkIHNjaGVtYXMgdGhhdCBhcmUgbm9uLWV4aXN0ZW50IGluIHRoZSBuZXcgc2NoZW1hIGFyZSBzZXQgdG8gYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gW25ld1NjaGVtYV0gLSBUaGUgbmV3IHNjaGVtYSBmb3Igd2hpY2ggdGhlIGRhdGEgaXMgYmVpbmcgc2FuaXRpemVkXG4gICAgICogQHBhcmFtIFtvbGRTY2hlbWFdIC0gVGhlIG9sZCBzY2hlbWEgZnJvbSB3aGljaCB0aGUgZGF0YSBvcmlnaW5hdGVkXG4gICAgICogQHBhcmFtIFtkYXRhPXt9XSAtIFRoZSBmb3JtIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBzY2hlbWEsIGRlZmF1bHRpbmcgdG8gYW4gZW1wdHkgb2JqZWN0IHdoZW4gdW5kZWZpbmVkXG4gICAgICogQHJldHVybnMgLSBUaGUgbmV3IGZvcm0gZGF0YSwgd2l0aCBhbGwgdGhlIGZpZWxkcyB1bmlxdWVseSBhc3NvY2lhdGVkIHdpdGggdGhlIG9sZCBzY2hlbWEgc2V0XG4gICAgICogICAgICB0byBgdW5kZWZpbmVkYC4gV2lsbCByZXR1cm4gYHVuZGVmaW5lZGAgaWYgdGhlIG5ldyBzY2hlbWEgaXMgbm90IGFuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMuXG4gICAgICovXG4gICAgc2FuaXRpemVEYXRhRm9yTmV3U2NoZW1hKG5ld1NjaGVtYSwgb2xkU2NoZW1hLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBzYW5pdGl6ZURhdGFGb3JOZXdTY2hlbWEodGhpcy52YWxpZGF0b3IsIHRoaXMucm9vdFNjaGVtYSwgbmV3U2NoZW1hLCBvbGRTY2hlbWEsIGRhdGEsIHRoaXMuZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgIH1cbiAgICAvKiogR2VuZXJhdGVzIGFuIGBJZFNjaGVtYWAgb2JqZWN0IGZvciB0aGUgYHNjaGVtYWAsIHJlY3Vyc2l2ZWx5XG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3Igd2hpY2ggdGhlIGRpc3BsYXkgbGFiZWwgZmxhZyBpcyBkZXNpcmVkXG4gICAgICogQHBhcmFtIFtpZF0gLSBUaGUgYmFzZSBpZCBmb3IgdGhlIHNjaGVtYVxuICAgICAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgb250byB3aGljaCB0byBwcm92aWRlIGFueSBtaXNzaW5nIGRlZmF1bHRzXG4gICAgICogQHBhcmFtIFtpZFByZWZpeD0ncm9vdCddIC0gVGhlIHByZWZpeCB0byB1c2UgZm9yIHRoZSBpZFxuICAgICAqIEBwYXJhbSBbaWRTZXBhcmF0b3I9J18nXSAtIFRoZSBzZXBhcmF0b3IgdG8gdXNlIGZvciB0aGUgcGF0aCBzZWdtZW50cyBpbiB0aGUgaWRcbiAgICAgKiBAcmV0dXJucyAtIFRoZSBgSWRTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGBzY2hlbWFgXG4gICAgICovXG4gICAgdG9JZFNjaGVtYShzY2hlbWEsIGlkLCBmb3JtRGF0YSwgaWRQcmVmaXggPSAncm9vdCcsIGlkU2VwYXJhdG9yID0gJ18nKSB7XG4gICAgICAgIHJldHVybiB0b0lkU2NoZW1hKHRoaXMudmFsaWRhdG9yLCBzY2hlbWEsIGlkLCB0aGlzLnJvb3RTY2hlbWEsIGZvcm1EYXRhLCBpZFByZWZpeCwgaWRTZXBhcmF0b3IsIHRoaXMuZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgIH1cbiAgICAvKiogR2VuZXJhdGVzIGFuIGBQYXRoU2NoZW1hYCBvYmplY3QgZm9yIHRoZSBgc2NoZW1hYCwgcmVjdXJzaXZlbHlcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB3aGljaCB0aGUgZGlzcGxheSBsYWJlbCBmbGFnIGlzIGRlc2lyZWRcbiAgICAgKiBAcGFyYW0gW25hbWVdIC0gVGhlIGJhc2UgbmFtZSBmb3IgdGhlIHNjaGVtYVxuICAgICAqIEBwYXJhbSBbZm9ybURhdGFdIC0gVGhlIGN1cnJlbnQgZm9ybURhdGEsIGlmIGFueSwgb250byB3aGljaCB0byBwcm92aWRlIGFueSBtaXNzaW5nIGRlZmF1bHRzXG4gICAgICogQHJldHVybnMgLSBUaGUgYFBhdGhTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGBzY2hlbWFgXG4gICAgICovXG4gICAgdG9QYXRoU2NoZW1hKHNjaGVtYSwgbmFtZSwgZm9ybURhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRvUGF0aFNjaGVtYSh0aGlzLnZhbGlkYXRvciwgc2NoZW1hLCBuYW1lLCB0aGlzLnJvb3RTY2hlbWEsIGZvcm1EYXRhLCB0aGlzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbiAgICB9XG59XG4vKiogQ3JlYXRlcyBhIGBTY2hlbWFVdGlsc1R5cGVgIGludGVyZmFjZSB0aGF0IGlzIGJhc2VkIGFyb3VuZCB0aGUgZ2l2ZW4gYHZhbGlkYXRvcmAgYW5kIGByb290U2NoZW1hYCBwYXJhbWV0ZXJzLiBUaGVcbiAqIHJlc3VsdGluZyBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24gd2lsbCBmb3J3YXJkIHRoZSBgdmFsaWRhdG9yYCBhbmQgYHJvb3RTY2hlbWFgIHRvIGFsbCB0aGUgd3JhcHBlZCBBUElzLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0b3IgLSBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFZhbGlkYXRvclR5cGVgIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCB0aGUgQVBJc1xuICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdGhhdCB3aWxsIGJlIGZvcndhcmRlZCB0byBhbGwgdGhlIEFQSXNcbiAqIEBwYXJhbSBbZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcl0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmplY3QsIGlmIHByb3ZpZGVkLCBhbGxvd3MgdXNlcnMgdG8gb3ZlcnJpZGUgZGVmYXVsdCBmb3JtIHN0YXRlIGJlaGF2aW9yXG4gKiBAcGFyYW0gW2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mXSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGZvciBjdXN0b20gbWVyZ2luZyBvZiBgYWxsT2ZgIHNjaGVtYXNcbiAqIEByZXR1cm5zIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgYSBgU2NoZW1hVXRpbHNUeXBlYCBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlU2NoZW1hVXRpbHModmFsaWRhdG9yLCByb290U2NoZW1hLCBleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yID0ge30sIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKSB7XG4gICAgcmV0dXJuIG5ldyBTY2hlbWFVdGlscyh2YWxpZGF0b3IsIHJvb3RTY2hlbWEsIGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IsIGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNyZWF0ZVNjaGVtYVV0aWxzLmpzLm1hcCIsIi8qKiBHaXZlbiB0aGUgYEZpbGVSZWFkZXIucmVhZEFzRGF0YVVSTCgpYCBiYXNlZCBgZGF0YVVSSWAgZXh0cmFjdHMgdGhhdCBkYXRhIGludG8gYW4gYWN0dWFsIEJsb2IgYWxvbmcgd2l0aCB0aGUgbmFtZVxuICogb2YgdGhhdCBCbG9iIGlmIHByb3ZpZGVkIGluIHRoZSBVUkwuIElmIG5vIG5hbWUgaXMgcHJvdmlkZWQsIHRoZW4gdGhlIG5hbWUgZmFsbHMgYmFjayB0byBgdW5rbm93bmAuXG4gKlxuICogQHBhcmFtIGRhdGFVUkkgLSBUaGUgYERhdGFVcmxgIHBvdGVudGlhbGx5IGNvbnRhaW5pbmcgbmFtZSBhbmQgcmF3IGRhdGEgdG8gYmUgY29udmVydGVkIHRvIGEgQmxvYlxuICogQHJldHVybnMgLSBhbiBvYmplY3QgY29udGFpbmluZyBhIEJsb2IgYW5kIGl0cyBuYW1lLCBleHRyYWN0ZWQgZnJvbSB0aGUgVVJJXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRhdGFVUkl0b0Jsb2IoZGF0YVVSSUxpa2UpIHtcbiAgICB2YXIgX2E7XG4gICAgLy8gY2hlY2sgaWYgaXMgZGF0YVVSSVxuICAgIGlmIChkYXRhVVJJTGlrZS5pbmRleE9mKCdkYXRhOicpID09PSAtMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpbGUgaXMgaW52YWxpZDogVVJJIG11c3QgYmUgYSBkYXRhVVJJJyk7XG4gICAgfVxuICAgIGNvbnN0IGRhdGFVUkkgPSBkYXRhVVJJTGlrZS5zbGljZSg1KTtcbiAgICAvLyBzcGxpdCB0aGUgZGF0YVVSSSBpbnRvIG1lZGlhIGFuZCBiYXNlNjQsIHdpdGggdGhlIGJhc2U2NCBzaWduYXR1cmVcbiAgICBjb25zdCBzcGxpdHRlZCA9IGRhdGFVUkkuc3BsaXQoJztiYXNlNjQsJyk7XG4gICAgLy8gaWYgdGhlIGJhc2U2NCBzaWduYXR1cmUgaXMgbm90IHByZXNlbnQsIHRoZSBsYXR0ZXIgcGFydCB3aWxsIGJlY29tZSBlbXB0eVxuICAgIGlmIChzcGxpdHRlZC5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaWxlIGlzIGludmFsaWQ6IGRhdGFVUkkgbXVzdCBiZSBiYXNlNjQnKTtcbiAgICB9XG4gICAgLy8gZXh0cmFjdCB0aGUgbWltZSB0eXBlLCBtZWRpYSBwYXJhbWV0ZXJzIGluY2x1ZGluZyB0aGUgbmFtZSwgYW5kIHRoZSBiYXNlNjQgc3RyaW5nXG4gICAgY29uc3QgW21lZGlhLCBiYXNlNjRdID0gc3BsaXR0ZWQ7XG4gICAgY29uc3QgW21pbWUsIC4uLm1lZGlhcGFyYW1zXSA9IG1lZGlhLnNwbGl0KCc7Jyk7XG4gICAgY29uc3QgdHlwZSA9IG1pbWUgfHwgJyc7XG4gICAgLy8gZXh0cmFjdCB0aGUgbmFtZSBmcm9tIHRoZSBwYXJhbWV0ZXJzXG4gICAgY29uc3QgbmFtZSA9IGRlY29kZVVSSShcbiAgICAvLyBwYXJzZSB0aGUgcGFyYW1ldGVycyBpbnRvIGtleS12YWx1ZSBwYWlycywgZmluZCBhIGtleSwgYW5kIGV4dHJhY3QgYSB2YWx1ZVxuICAgIC8vIGlmIG5vIGtleSBpcyBmb3VuZCwgdGhlbiB0aGUgbmFtZSBpcyB1bmtub3duXG4gICAgKChfYSA9IG1lZGlhcGFyYW1zLm1hcCgocGFyYW0pID0+IHBhcmFtLnNwbGl0KCc9JykpLmZpbmQoKFtrZXldKSA9PiBrZXkgPT09ICduYW1lJykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVsxXSkgfHwgJ3Vua25vd24nKTtcbiAgICAvLyBCdWlsdCB0aGUgVWludDhBcnJheSBCbG9iIHBhcmFtZXRlciBmcm9tIHRoZSBiYXNlNjQgc3RyaW5nLlxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGJpbmFyeSA9IGF0b2IoYmFzZTY0KTtcbiAgICAgICAgY29uc3QgYXJyYXkgPSBuZXcgQXJyYXkoYmluYXJ5Lmxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmluYXJ5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcnJheVtpXSA9IGJpbmFyeS5jaGFyQ29kZUF0KGkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIENyZWF0ZSB0aGUgYmxvYiBvYmplY3RcbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyB3aW5kb3cuQmxvYihbbmV3IFVpbnQ4QXJyYXkoYXJyYXkpXSwgeyB0eXBlIH0pO1xuICAgICAgICByZXR1cm4geyBibG9iLCBuYW1lIH07XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpbGUgaXMgaW52YWxpZDogJyArIGVycm9yLm1lc3NhZ2UpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGFVUkl0b0Jsb2IuanMubWFwIiwiLyoqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGBudW1gIHRoYXQgaXMgcGFkZGVkIHdpdGggbGVhZGluZyBcIjBcInMgaWYgbmVjZXNzYXJ5XG4gKlxuICogQHBhcmFtIG51bSAtIFRoZSBudW1iZXIgdG8gcGFkXG4gKiBAcGFyYW0gd2lkdGggLSBUaGUgd2lkdGggb2YgdGhlIHN0cmluZyBhdCB3aGljaCBubyBsZWFkIHBhZGRpbmcgaXMgbmVjZXNzYXJ5XG4gKiBAcmV0dXJucyAtIFRoZSBudW1iZXIgY29udmVydGVkIHRvIGEgc3RyaW5nIHdpdGggbGVhZGluZyB6ZXJvIHBhZGRpbmcgaWYgdGhlIG51bWJlciBvZiBkaWdpdHMgaXMgbGVzcyB0aGFuIGB3aWR0aGBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGFkKG51bSwgd2lkdGgpIHtcbiAgICBsZXQgcyA9IFN0cmluZyhudW0pO1xuICAgIHdoaWxlIChzLmxlbmd0aCA8IHdpZHRoKSB7XG4gICAgICAgIHMgPSAnMCcgKyBzO1xuICAgIH1cbiAgICByZXR1cm4gcztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhZC5qcy5tYXAiLCJpbXBvcnQgcGFkIGZyb20gJy4vcGFkJztcbi8qKiBSZXR1cm5zIGEgbGlzdCBvZiBvcHRpb25zIGZvciBhIGRhdGUgcmFuZ2UgYmV0d2VlbiBgc3RhcnRgIGFuZCBgc3RvcGAuIElmIHRoZSBzdGFydCBkYXRlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgZW5kXG4gKiBkYXRlLCB0aGVuIHRoZSBkYXRlIHJhbmdlIGlzIHJldmVyc2VkLiBJZiBgc3RhcnRgIGFuZCBgc3RvcGAgYXJlIG5lZ2F0aXZlIG51bWJlcnMgKG9yIHplcm8pLCB0aGVuIHRoZXkgd2lsbCBiZVxuICogdHJlYXRlZCBhcyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB5ZWFyLlxuICpcbiAqIEBwYXJhbSBzdGFydCAtIFRoZSBzdGFydGluZyBwb2ludCBvZiB0aGUgZGF0ZSByYW5nZVxuICogQHBhcmFtIHN0b3AgLSBUaGUgZW5kaW5nIHBvaW50IG9mIHRoZSBkYXRlIHJhbmdlXG4gKiBAcmV0dXJucyAtIFRoZSBsaXN0IG9mIEVudW1PcHRpb25zVHlwZSBmb3IgdGhlIGRhdGUgcmFuZ2UgYmV0d2VlbiBgc3RhcnRgIGFuZCBgc3RvcGBcbiAqIEB0aHJvd3MgLSBFcnJvciB3aGVuIGBzdGFydGAgYW5kIGBzdG9wYCBhcmVuJ3QgYm90aCA8PSAwIG9yID4gMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkYXRlUmFuZ2VPcHRpb25zKHN0YXJ0LCBzdG9wKSB7XG4gICAgaWYgKHN0YXJ0IDw9IDAgJiYgc3RvcCA8PSAwKSB7XG4gICAgICAgIHN0YXJ0ID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpICsgc3RhcnQ7XG4gICAgICAgIHN0b3AgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgKyBzdG9wO1xuICAgIH1cbiAgICBlbHNlIGlmIChzdGFydCA8IDAgfHwgc3RvcCA8IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBCb3RoIHN0YXJ0ICgke3N0YXJ0fSkgYW5kIHN0b3AgKCR7c3RvcH0pIG11c3QgYm90aCBiZSA8PSAwIG9yID4gMCwgZ290IG9uZSBvZiBlYWNoYCk7XG4gICAgfVxuICAgIGlmIChzdGFydCA+IHN0b3ApIHtcbiAgICAgICAgcmV0dXJuIGRhdGVSYW5nZU9wdGlvbnMoc3RvcCwgc3RhcnQpLnJldmVyc2UoKTtcbiAgICB9XG4gICAgY29uc3Qgb3B0aW9ucyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBzdG9wOyBpKyspIHtcbiAgICAgICAgb3B0aW9ucy5wdXNoKHsgdmFsdWU6IGksIGxhYmVsOiBwYWQoaSwgMikgfSk7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0ZVJhbmdlT3B0aW9ucy5qcy5tYXAiLCIvKiogUG90ZW50aWFsbHkgc3Vic3RpdHV0ZXMgYWxsIHJlcGxhY2VhYmxlIHBhcmFtZXRlcnMgd2l0aCB0aGUgYXNzb2NpYXRlZCB2YWx1ZShzKSBmcm9tIHRoZSBgcGFyYW1zYCBpZiBhdmFpbGFibGUuIFdoZW5cbiAqIGEgYHBhcmFtc2AgYXJyYXkgaXMgcHJvdmlkZWQsIGVhY2ggdmFsdWUgaW4gdGhlIGFycmF5IGlzIHVzZWQgdG8gcmVwbGFjZSBhbnkgb2YgdGhlIHJlcGxhY2VhYmxlIHBhcmFtZXRlcnMgaW4gdGhlXG4gKiBgaW5wdXRTdHJpbmdgIHVzaW5nIHRoZSBgJTFgLCBgJTJgLCBldGMuIHJlcGxhY2VtZW50IHNwZWNpZmllcnMuXG4gKlxuICogQHBhcmFtIGlucHV0U3RyaW5nIC0gVGhlIHN0cmluZyB3aGljaCB3aWxsIGJlIHBvdGVudGlhbGx5IHVwZGF0ZWQgd2l0aCByZXBsYWNlbWVudCBwYXJhbWV0ZXJzXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIG9wdGlvbmFsIGxpc3Qgb2YgcmVwbGFjZWFibGUgcGFyYW1ldGVyIHZhbHVlcyB0byBzdWJzdGl0dXRlIGludG8gdGhlIGVuZ2xpc2ggc3RyaW5nXG4gKiBAcmV0dXJucyAtIFRoZSB1cGRhdGVkIHN0cmluZyB3aXRoIGFueSByZXBsYWNlbWVudCBzcGVjaWZpZXJzIHJlcGxhY2VkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlcGxhY2VTdHJpbmdQYXJhbWV0ZXJzKGlucHV0U3RyaW5nLCBwYXJhbXMpIHtcbiAgICBsZXQgb3V0cHV0ID0gaW5wdXRTdHJpbmc7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocGFyYW1zKSkge1xuICAgICAgICBjb25zdCBwYXJ0cyA9IG91dHB1dC5zcGxpdCgvKCVcXGQpLyk7XG4gICAgICAgIHBhcmFtcy5mb3JFYWNoKChwYXJhbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRJbmRleCA9IHBhcnRzLmZpbmRJbmRleCgocGFydCkgPT4gcGFydCA9PT0gYCUke2luZGV4ICsgMX1gKTtcbiAgICAgICAgICAgIGlmIChwYXJ0SW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIHBhcnRzW3BhcnRJbmRleF0gPSBwYXJhbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIG91dHB1dCA9IHBhcnRzLmpvaW4oJycpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVwbGFjZVN0cmluZ1BhcmFtZXRlcnMuanMubWFwIiwiaW1wb3J0IHJlcGxhY2VTdHJpbmdQYXJhbWV0ZXJzIGZyb20gJy4vcmVwbGFjZVN0cmluZ1BhcmFtZXRlcnMnO1xuLyoqIFRyYW5zbGF0ZXMgYSBgVHJhbnNsYXRhYmxlU3RyaW5nYCB2YWx1ZSBgc3RyaW5nVG9UcmFuc2xhdGVgIGludG8gZW5nbGlzaC4gV2hlbiBhIGBwYXJhbXNgIGFycmF5IGlzIHByb3ZpZGVkLCBlYWNoXG4gKiB2YWx1ZSBpbiB0aGUgYXJyYXkgaXMgdXNlZCB0byByZXBsYWNlIGFueSBvZiB0aGUgcmVwbGFjZWFibGUgcGFyYW1ldGVycyBpbiB0aGUgYHN0cmluZ1RvVHJhbnNsYXRlYCB1c2luZyB0aGUgYCUxYCxcbiAqIGAlMmAsIGV0Yy4gcmVwbGFjZW1lbnQgc3BlY2lmaWVycy5cbiAqXG4gKiBAcGFyYW0gc3RyaW5nVG9UcmFuc2xhdGUgLSBUaGUgYFRyYW5zbGF0YWJsZVN0cmluZ2AgdmFsdWUgdG8gY29udmVydCB0byBlbmdsaXNoXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIG9wdGlvbmFsIGxpc3Qgb2YgcmVwbGFjZWFibGUgcGFyYW1ldGVyIHZhbHVlcyB0byBzdWJzdGl0dXRlIGludG8gdGhlIGVuZ2xpc2ggc3RyaW5nXG4gKiBAcmV0dXJucyAtIFRoZSBgc3RyaW5nVG9UcmFuc2xhdGVgIGl0c2VsZiB3aXRoIGFueSByZXBsYWNlYWJsZSBwYXJhbWV0ZXIgdmFsdWVzIHN1YnN0aXR1dGVkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZ2xpc2hTdHJpbmdUcmFuc2xhdG9yKHN0cmluZ1RvVHJhbnNsYXRlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gcmVwbGFjZVN0cmluZ1BhcmFtZXRlcnMoc3RyaW5nVG9UcmFuc2xhdGUsIHBhcmFtcyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbmdsaXNoU3RyaW5nVHJhbnNsYXRvci5qcy5tYXAiLCIvKiogUmV0dXJucyB0aGUgdmFsdWUocykgZnJvbSBgYWxsRW51bU9wdGlvbnNgIGF0IHRoZSBpbmRleChlcykgcHJvdmlkZWQgYnkgYHZhbHVlSW5kZXhgLiBJZiBgdmFsdWVJbmRleGAgaXMgbm90IGFuXG4gKiBhcnJheSBBTkQgdGhlIGluZGV4IGlzIG5vdCB2YWxpZCBmb3IgYGFsbEVudW1PcHRpb25zYCwgYGVtcHR5VmFsdWVgIGlzIHJldHVybmVkLiBJZiBgdmFsdWVJbmRleGAgaXMgYW4gYXJyYXksIEFORCBpdFxuICogY29udGFpbnMgYW4gaW52YWxpZCBpbmRleCwgdGhlIHJldHVybmVkIGFycmF5IHdpbGwgaGF2ZSB0aGUgcmVzdWx0aW5nIHVuZGVmaW5lZCB2YWx1ZXMgZmlsdGVyZWQgb3V0LCBsZWF2aW5nIG9ubHlcbiAqIHZhbGlkIHZhbHVlcyBvciBpbiB0aGUgd29yc3QgY2FzZSwgYW4gZW1wdHkgYXJyYXkuXG4gKlxuICogQHBhcmFtIHZhbHVlSW5kZXggLSBUaGUgaW5kZXgoZXMpIG9mIHRoZSB2YWx1ZShzKSB0aGF0IHNob3VsZCBiZSByZXR1cm5lZFxuICogQHBhcmFtIFthbGxFbnVtT3B0aW9ucz1bXV0gLSBUaGUgbGlzdCBvZiBhbGwgdGhlIGtub3duIGVudW1PcHRpb25zXG4gKiBAcGFyYW0gW2VtcHR5VmFsdWVdIC0gVGhlIHZhbHVlIHRvIHJldHVybiB3aGVuIHRoZSBub24tYXJyYXkgYHZhbHVlSW5kZXhgIGRvZXMgbm90IHJlZmVyIHRvIGEgcmVhbCBvcHRpb25cbiAqIEByZXR1cm5zIC0gVGhlIHNpbmdsZSBvciBsaXN0IG9mIHZhbHVlcyBzcGVjaWZpZWQgYnkgdGhlIHNpbmdsZSBvciBsaXN0IG9mIGluZGV4ZXMgaWYgdGhleSBhcmUgdmFsaWQuIE90aGVyd2lzZSxcbiAqICAgICAgICBgZW1wdHlWYWx1ZWAgb3IgYW4gZW1wdHkgbGlzdC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4KHZhbHVlSW5kZXgsIGFsbEVudW1PcHRpb25zID0gW10sIGVtcHR5VmFsdWUpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZUluZGV4KSkge1xuICAgICAgICByZXR1cm4gKHZhbHVlSW5kZXhcbiAgICAgICAgICAgIC5tYXAoKGluZGV4KSA9PiBlbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXgoaW5kZXgsIGFsbEVudW1PcHRpb25zKSlcbiAgICAgICAgICAgIC8vIFNpbmNlIHRoZSByZWN1cnNpdmUgY2FsbCByZXR1cm5zIGBlbXB0eVZhbHVlYCB3aGVuIHdlIGdldCBhIGJhZCBvcHRpb24sIG9ubHkgZmlsdGVyIHRob3NlIG91dFxuICAgICAgICAgICAgLmZpbHRlcigodmFsKSA9PiB2YWwgIT09IGVtcHR5VmFsdWUpKTtcbiAgICB9XG4gICAgLy8gU28gTnVtYmVyKG51bGwpIGFuZCBOdW1iZXIoJycpIGJvdGggcmV0dXJuIDAsIHNvIHVzZSBlbXB0eVZhbHVlIGZvciB0aG9zZSB0d28gdmFsdWVzXG4gICAgY29uc3QgaW5kZXggPSB2YWx1ZUluZGV4ID09PSAnJyB8fCB2YWx1ZUluZGV4ID09PSBudWxsID8gLTEgOiBOdW1iZXIodmFsdWVJbmRleCk7XG4gICAgY29uc3Qgb3B0aW9uID0gYWxsRW51bU9wdGlvbnNbaW5kZXhdO1xuICAgIHJldHVybiBvcHRpb24gPyBvcHRpb24udmFsdWUgOiBlbXB0eVZhbHVlO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4LmpzLm1hcCIsImltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJztcbmltcG9ydCBlbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXggZnJvbSAnLi9lbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXgnO1xuLyoqIFJlbW92ZXMgdGhlIGVudW0gb3B0aW9uIHZhbHVlIGF0IHRoZSBgdmFsdWVJbmRleGAgZnJvbSB0aGUgY3VycmVudGx5IGBzZWxlY3RlZGAgKGxpc3Qgb2YpIHZhbHVlKHMpLiBJZiBgc2VsZWN0ZWRgIGlzXG4gKiBhIGxpc3QsIHRoZW4gdGhhdCBsaXN0IGlzIHVwZGF0ZWQgdG8gcmVtb3ZlIHRoZSBlbnVtIG9wdGlvbiB2YWx1ZSB3aXRoIHRoZSBgdmFsdWVJbmRleGAgaW4gYGFsbEVudW1PcHRpb25zYC4gSWYgaXQgaXNcbiAqIGEgc2luZ2xlIHZhbHVlLCB0aGVuIGlmIHRoZSBlbnVtIG9wdGlvbiB2YWx1ZSB3aXRoIHRoZSBgdmFsdWVJbmRleGAgaW4gYGFsbEVudW1PcHRpb25zYCBtYXRjaGVzIGBzZWxlY3RlZGAsIHVuZGVmaW5lZFxuICogaXMgcmV0dXJuZWQsIG90aGVyd2lzZSB0aGUgYHNlbGVjdGVkYCB2YWx1ZSBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gdmFsdWVJbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgdmFsdWUgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZWxlY3RlZCBsaXN0IG9yIHNpbmdsZSB2YWx1ZVxuICogQHBhcmFtIHNlbGVjdGVkIC0gVGhlIGN1cnJlbnQgKGxpc3Qgb2YpIHNlbGVjdGVkIHZhbHVlKHMpXG4gKiBAcGFyYW0gW2FsbEVudW1PcHRpb25zPVtdXSAtIFRoZSBsaXN0IG9mIGFsbCB0aGUga25vd24gZW51bU9wdGlvbnNcbiAqIEByZXR1cm5zIC0gVGhlIHVwZGF0ZWQgYHNlbGVjdGVkYCB3aXRoIHRoZSBlbnVtIG9wdGlvbiB2YWx1ZSBhdCBgdmFsdWVJbmRleGAgaW4gYGFsbEVudW1PcHRpb25zYCByZW1vdmVkIGZyb20gaXQsXG4gKiAgICAgICAgdW5sZXNzIGBzZWxlY3RlZGAgaXMgYSBzaW5nbGUgdmFsdWUuIEluIHRoYXQgY2FzZSwgaWYgdGhlIGB2YWx1ZUluZGV4YCB2YWx1ZSBtYXRjaGVzIGBzZWxlY3RlZGAsIHJldHVybnNcbiAqICAgICAgICB1bmRlZmluZWQsIG90aGVyd2lzZSBgc2VsZWN0ZWRgLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbnVtT3B0aW9uc0Rlc2VsZWN0VmFsdWUodmFsdWVJbmRleCwgc2VsZWN0ZWQsIGFsbEVudW1PcHRpb25zID0gW10pIHtcbiAgICBjb25zdCB2YWx1ZSA9IGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCh2YWx1ZUluZGV4LCBhbGxFbnVtT3B0aW9ucyk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWQpKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZC5maWx0ZXIoKHYpID0+ICFpc0VxdWFsKHYsIHZhbHVlKSk7XG4gICAgfVxuICAgIHJldHVybiBpc0VxdWFsKHZhbHVlLCBzZWxlY3RlZCkgPyB1bmRlZmluZWQgOiBzZWxlY3RlZDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVudW1PcHRpb25zRGVzZWxlY3RWYWx1ZS5qcy5tYXAiLCJpbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG4vKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiBgdmFsdWVgIGlzIChvbmUgb2YpIHRoZSBgc2VsZWN0ZWRgIHZhbHVlKHMpLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSBiZWluZyBjaGVja2VkIHRvIHNlZSBpZiBpdCBpcyBzZWxlY3RlZFxuICogQHBhcmFtIHNlbGVjdGVkIC0gVGhlIGN1cnJlbnQgc2VsZWN0ZWQgdmFsdWUgb3IgbGlzdCBvZiB2YWx1ZXNcbiAqIEByZXR1cm5zIC0gdHJ1ZSBpZiB0aGUgYHZhbHVlYCBpcyBvbmUgb2YgdGhlIGBzZWxlY3RlZGAgb25lcywgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVudW1PcHRpb25zSXNTZWxlY3RlZCh2YWx1ZSwgc2VsZWN0ZWQpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RlZCkpIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkLnNvbWUoKHNlbCkgPT4gaXNFcXVhbChzZWwsIHZhbHVlKSk7XG4gICAgfVxuICAgIHJldHVybiBpc0VxdWFsKHNlbGVjdGVkLCB2YWx1ZSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbnVtT3B0aW9uc0lzU2VsZWN0ZWQuanMubWFwIiwiaW1wb3J0IGVudW1PcHRpb25zSXNTZWxlY3RlZCBmcm9tICcuL2VudW1PcHRpb25zSXNTZWxlY3RlZCc7XG4vKiogUmV0dXJucyB0aGUgaW5kZXgoZXMpIG9mIHRoZSBvcHRpb25zIGluIGBhbGxFbnVtT3B0aW9uc2Agd2hvc2UgdmFsdWUocykgbWF0Y2ggdGhlIG9uZXMgaW4gYHZhbHVlYC4gQWxsIHRoZVxuICogYGVudW1PcHRpb25zYCBhcmUgZmlsdGVyZWQgYmFzZWQgb24gd2hldGhlciB0aGV5IGFyZSBhIFwic2VsZWN0ZWRcIiBgdmFsdWVgIGFuZCB0aGUgaW5kZXggb2YgZWFjaCBzZWxlY3RlZCBvbmUgaXMgdGhlblxuICogc3RvcmVkIGluIGFuIGFycmF5LiBJZiBgbXVsdGlwbGVgIGlzIHRydWUsIHRoYXQgYXJyYXkgaXMgcmV0dXJuZWQsIG90aGVyd2lzZSB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgYXJyYXkgaXNcbiAqIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBzaW5nbGUgdmFsdWUgb3IgbGlzdCBvZiB2YWx1ZXMgZm9yIHdoaWNoIGluZGV4ZXMgYXJlIGRlc2lyZWRcbiAqIEBwYXJhbSBbYWxsRW51bU9wdGlvbnM9W11dIC0gVGhlIGxpc3Qgb2YgYWxsIHRoZSBrbm93biBlbnVtT3B0aW9uc1xuICogQHBhcmFtIFttdWx0aXBsZT1mYWxzZV0gLSBPcHRpb25hbCBmbGFnLCBpZiB0cnVlIHdpbGwgcmV0dXJuIGEgbGlzdCBvZiBpbmRleCwgb3RoZXJ3aXNlIGEgc2luZ2xlIG9uZVxuICogQHJldHVybnMgLSBBIHNpbmdsZSBzdHJpbmcgaW5kZXggZm9yIHRoZSBmaXJzdCBgdmFsdWVgIGluIGBhbGxFbnVtT3B0aW9uc2AsIGlmIG5vdCBgbXVsdGlwbGVgLiBPdGhlcndpc2UsIHRoZSBsaXN0XG4gKiAgICAgICAgb2YgaW5kZXhlcyBmb3IgKGVhY2ggb2YpIHRoZSB2YWx1ZShzKSBpbiBgdmFsdWVgLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbnVtT3B0aW9uc0luZGV4Rm9yVmFsdWUodmFsdWUsIGFsbEVudW1PcHRpb25zID0gW10sIG11bHRpcGxlID0gZmFsc2UpIHtcbiAgICBjb25zdCBzZWxlY3RlZEluZGV4ZXMgPSBhbGxFbnVtT3B0aW9uc1xuICAgICAgICAubWFwKChvcHQsIGluZGV4KSA9PiAoZW51bU9wdGlvbnNJc1NlbGVjdGVkKG9wdC52YWx1ZSwgdmFsdWUpID8gU3RyaW5nKGluZGV4KSA6IHVuZGVmaW5lZCkpXG4gICAgICAgIC5maWx0ZXIoKG9wdCkgPT4gdHlwZW9mIG9wdCAhPT0gJ3VuZGVmaW5lZCcpO1xuICAgIGlmICghbXVsdGlwbGUpIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkSW5kZXhlc1swXTtcbiAgICB9XG4gICAgcmV0dXJuIHNlbGVjdGVkSW5kZXhlcztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVudW1PcHRpb25zSW5kZXhGb3JWYWx1ZS5qcy5tYXAiLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBudWxsaXNoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNOaWwobnVsbCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc05pbCh2b2lkIDApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOaWwoTmFOKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTmlsKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTmlsO1xuIiwiaW1wb3J0IGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCBmcm9tICcuL2VudW1PcHRpb25zVmFsdWVGb3JJbmRleCc7XG5pbXBvcnQgaXNOaWwgZnJvbSAnbG9kYXNoL2lzTmlsJztcbi8qKiBBZGQgdGhlIGVudW0gb3B0aW9uIHZhbHVlIGF0IHRoZSBgdmFsdWVJbmRleGAgdG8gdGhlIGxpc3Qgb2YgYHNlbGVjdGVkYCB2YWx1ZXMgaW4gdGhlIHByb3BlciBvcmRlciBhcyBkZWZpbmVkIGJ5XG4gKiBgYWxsRW51bU9wdGlvbnNgXG4gKlxuICogQHBhcmFtIHZhbHVlSW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIHZhbHVlIHRoYXQgc2hvdWxkIGJlIHNlbGVjdGVkXG4gKiBAcGFyYW0gc2VsZWN0ZWQgLSBUaGUgY3VycmVudCBsaXN0IG9mIHNlbGVjdGVkIHZhbHVlc1xuICogQHBhcmFtIFthbGxFbnVtT3B0aW9ucz1bXV0gLSBUaGUgbGlzdCBvZiBhbGwgdGhlIGtub3duIGVudW1PcHRpb25zXG4gKiBAcmV0dXJucyAtIFRoZSB1cGRhdGVkIGxpc3Qgb2Ygc2VsZWN0ZWQgZW51bSB2YWx1ZXMgd2l0aCBlbnVtIHZhbHVlIGF0IHRoZSBgdmFsdWVJbmRleGAgYWRkZWQgdG8gaXRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW51bU9wdGlvbnNTZWxlY3RWYWx1ZSh2YWx1ZUluZGV4LCBzZWxlY3RlZCwgYWxsRW51bU9wdGlvbnMgPSBbXSkge1xuICAgIGNvbnN0IHZhbHVlID0gZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4KHZhbHVlSW5kZXgsIGFsbEVudW1PcHRpb25zKTtcbiAgICBpZiAoIWlzTmlsKHZhbHVlKSkge1xuICAgICAgICBjb25zdCBpbmRleCA9IGFsbEVudW1PcHRpb25zLmZpbmRJbmRleCgob3B0KSA9PiB2YWx1ZSA9PT0gb3B0LnZhbHVlKTtcbiAgICAgICAgY29uc3QgYWxsID0gYWxsRW51bU9wdGlvbnMubWFwKCh7IHZhbHVlOiB2YWwgfSkgPT4gdmFsKTtcbiAgICAgICAgY29uc3QgdXBkYXRlZCA9IHNlbGVjdGVkLnNsaWNlKDAsIGluZGV4KS5jb25jYXQodmFsdWUsIHNlbGVjdGVkLnNsaWNlKGluZGV4KSk7XG4gICAgICAgIC8vIEFzIGluc2VydGluZyB2YWx1ZXMgYXQgcHJlZGVmaW5lZCBpbmRleCBwb3NpdGlvbnMgZG9lc24ndCB3b3JrIHdpdGggZW1wdHlcbiAgICAgICAgLy8gYXJyYXlzLCB3ZSBuZWVkIHRvIHJlb3JkZXIgdGhlIHVwZGF0ZWQgc2VsZWN0aW9uIHRvIG1hdGNoIHRoZSBpbml0aWFsIG9yZGVyXG4gICAgICAgIHJldHVybiB1cGRhdGVkLnNvcnQoKGEsIGIpID0+IE51bWJlcihhbGwuaW5kZXhPZihhKSA+IGFsbC5pbmRleE9mKGIpKSk7XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RlZDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVudW1PcHRpb25zU2VsZWN0VmFsdWUuanMubWFwIiwidmFyIGJhc2VTZXQgPSByZXF1aXJlKCcuL19iYXNlU2V0Jyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zZXRgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoIGlzXG4gKiBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIG9iamVjdHMgb2YgYHBhdGhgLiAgSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGBcbiAqIHBhdGggY3JlYXRpb24gaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZFxuICogd2l0aCB0aHJlZSBhcmd1bWVudHM6IChuc1ZhbHVlLCBrZXksIG5zT2JqZWN0KS5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7fTtcbiAqXG4gKiBfLnNldFdpdGgob2JqZWN0LCAnWzBdWzFdJywgJ2EnLCBPYmplY3QpO1xuICogLy8gPT4geyAnMCc6IHsgJzEnOiAnYScgfSB9XG4gKi9cbmZ1bmN0aW9uIHNldFdpdGgob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcikge1xuICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0V2l0aDtcbiIsImltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IHNldCBmcm9tICdsb2Rhc2gvc2V0JztcbmltcG9ydCBzZXRXaXRoIGZyb20gJ2xvZGFzaC9zZXRXaXRoJztcbmltcG9ydCB7IEVSUk9SU19LRVkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKiogVGhlIGBFcnJvclNjaGVtYUJ1aWxkZXI8VD5gIGlzIHVzZWQgdG8gYnVpbGQgYW4gYEVycm9yU2NoZW1hPFQ+YCBzaW5jZSB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYEVycm9yU2NoZW1hYCB0eXBlIGlzXG4gKiBkZXNpZ25lZCBmb3IgcmVhZGluZyBpbmZvcm1hdGlvbiByYXRoZXIgdGhhbiB3cml0aW5nIGl0LiBVc2UgdGhpcyBjbGFzcyB0byBhZGQsIHJlcGxhY2Ugb3IgY2xlYXIgZXJyb3JzIGluIGFuIGVycm9yXG4gKiBzY2hlbWEgYnkgdXNpbmcgZWl0aGVyIGRvdHRlZCBwYXRoIG9yIGFuIGFycmF5IG9mIHBhdGggbmFtZXMuIE9uY2UgeW91IGFyZSBkb25lIGJ1aWxkaW5nIHRoZSBgRXJyb3JTY2hlbWFgLCB5b3UgY2FuXG4gKiBnZXQgdGhlIHJlc3VsdCBhbmQvb3IgcmVzZXQgYWxsIHRoZSBlcnJvcnMgYmFjayB0byBhbiBpbml0aWFsIHNldCBhbmQgc3RhcnQgYWdhaW4uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVycm9yU2NoZW1hQnVpbGRlciB7XG4gICAgLyoqIENvbnN0cnVjdCBhbiBgRXJyb3JTY2hlbWFCdWlsZGVyYCB3aXRoIGFuIG9wdGlvbmFsIGluaXRpYWwgc2V0IG9mIGVycm9ycyBpbiBhbiBgRXJyb3JTY2hlbWFgLlxuICAgICAqXG4gICAgICogQHBhcmFtIFtpbml0aWFsU2NoZW1hXSAtIFRoZSBvcHRpb25hbCBzZXQgb2YgaW5pdGlhbCBlcnJvcnMsIHRoYXQgd2lsbCBiZSBjbG9uZWQgaW50byB0aGUgY2xhc3NcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihpbml0aWFsU2NoZW1hKSB7XG4gICAgICAgIC8qKiBUaGUgZXJyb3Igc2NoZW1hIGJlaW5nIGJ1aWx0XG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmVycm9yU2NoZW1hID0ge307XG4gICAgICAgIHRoaXMucmVzZXRBbGxFcnJvcnMoaW5pdGlhbFNjaGVtYSk7XG4gICAgfVxuICAgIC8qKiBSZXR1cm5zIHRoZSBgRXJyb3JTY2hlbWFgIHRoYXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgbWV0aG9kcyBvZiB0aGUgYEVycm9yU2NoZW1hQnVpbGRlcmBcbiAgICAgKi9cbiAgICBnZXQgRXJyb3JTY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yU2NoZW1hO1xuICAgIH1cbiAgICAvKiogV2lsbCBnZXQgYW4gZXhpc3RpbmcgYEVycm9yU2NoZW1hYCBhdCB0aGUgc3BlY2lmaWVkIGBwYXRoT2ZFcnJvcmAgb3IgY3JlYXRlIGFuZCByZXR1cm4gb25lLlxuICAgICAqXG4gICAgICogQHBhcmFtIFtwYXRoT2ZFcnJvcl0gLSBUaGUgb3B0aW9uYWwgcGF0aCBpbnRvIHRoZSBgRXJyb3JTY2hlbWFgIGF0IHdoaWNoIHRvIGFkZCB0aGUgZXJyb3IocylcbiAgICAgKiBAcmV0dXJucyAtIFRoZSBlcnJvciBibG9jayBmb3IgdGhlIGdpdmVuIGBwYXRoT2ZFcnJvcmAgb3IgdGhlIHJvb3QgaWYgbm90IHByb3ZpZGVkXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBnZXRPckNyZWF0ZUVycm9yQmxvY2socGF0aE9mRXJyb3IpIHtcbiAgICAgICAgY29uc3QgaGFzUGF0aCA9IChBcnJheS5pc0FycmF5KHBhdGhPZkVycm9yKSAmJiBwYXRoT2ZFcnJvci5sZW5ndGggPiAwKSB8fCB0eXBlb2YgcGF0aE9mRXJyb3IgPT09ICdzdHJpbmcnO1xuICAgICAgICBsZXQgZXJyb3JCbG9jayA9IGhhc1BhdGggPyBnZXQodGhpcy5lcnJvclNjaGVtYSwgcGF0aE9mRXJyb3IpIDogdGhpcy5lcnJvclNjaGVtYTtcbiAgICAgICAgaWYgKCFlcnJvckJsb2NrICYmIHBhdGhPZkVycm9yKSB7XG4gICAgICAgICAgICBlcnJvckJsb2NrID0ge307XG4gICAgICAgICAgICBzZXRXaXRoKHRoaXMuZXJyb3JTY2hlbWEsIHBhdGhPZkVycm9yLCBlcnJvckJsb2NrLCBPYmplY3QpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlcnJvckJsb2NrO1xuICAgIH1cbiAgICAvKiogUmVzZXRzIGFsbCBlcnJvcnMgaW4gdGhlIGBFcnJvclNjaGVtYUJ1aWxkZXJgIGJhY2sgdG8gdGhlIGBpbml0aWFsU2NoZW1hYCBpZiBwcm92aWRlZCwgb3RoZXJ3aXNlIGFuIGVtcHR5IHNldC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBbaW5pdGlhbFNjaGVtYV0gLSBUaGUgb3B0aW9uYWwgc2V0IG9mIGluaXRpYWwgZXJyb3JzLCB0aGF0IHdpbGwgYmUgY2xvbmVkIGludG8gdGhlIGNsYXNzXG4gICAgICogQHJldHVybnMgLSBUaGUgYEVycm9yU2NoZW1hQnVpbGRlcmAgb2JqZWN0IGZvciBjaGFpbmluZyBwdXJwb3Nlc1xuICAgICAqL1xuICAgIHJlc2V0QWxsRXJyb3JzKGluaXRpYWxTY2hlbWEpIHtcbiAgICAgICAgdGhpcy5lcnJvclNjaGVtYSA9IGluaXRpYWxTY2hlbWEgPyBjbG9uZURlZXAoaW5pdGlhbFNjaGVtYSkgOiB7fTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKiBBZGRzIHRoZSBgZXJyb3JPckxpc3RgIHRvIHRoZSBsaXN0IG9mIGVycm9ycyBpbiB0aGUgYEVycm9yU2NoZW1hYCBhdCBlaXRoZXIgdGhlIHJvb3QgbGV2ZWwgb3IgdGhlIGxvY2F0aW9uIHdpdGhpblxuICAgICAqIHRoZSBzY2hlbWEgZGVzY3JpYmVkIGJ5IHRoZSBgcGF0aE9mRXJyb3JgLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gc3BlY2lmeSB0aGUgcGF0aCBzZWUgdGhlXG4gICAgICogW2VzbGludCBsb2Rhc2ggcGx1Z2luIGRvY3NdKGh0dHBzOi8vZ2l0aHViLmNvbS93aXgvZXNsaW50LXBsdWdpbi1sb2Rhc2gvYmxvYi9tYXN0ZXIvZG9jcy9ydWxlcy9wYXRoLXN0eWxlLm1kKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlcnJvck9yTGlzdCAtIFRoZSBlcnJvciBvciBsaXN0IG9mIGVycm9ycyB0byBhZGQgaW50byB0aGUgYEVycm9yU2NoZW1hYFxuICAgICAqIEBwYXJhbSBbcGF0aE9mRXJyb3JdIC0gVGhlIG9wdGlvbmFsIHBhdGggaW50byB0aGUgYEVycm9yU2NoZW1hYCBhdCB3aGljaCB0byBhZGQgdGhlIGVycm9yKHMpXG4gICAgICogQHJldHVybnMgLSBUaGUgYEVycm9yU2NoZW1hQnVpbGRlcmAgb2JqZWN0IGZvciBjaGFpbmluZyBwdXJwb3Nlc1xuICAgICAqL1xuICAgIGFkZEVycm9ycyhlcnJvck9yTGlzdCwgcGF0aE9mRXJyb3IpIHtcbiAgICAgICAgY29uc3QgZXJyb3JCbG9jayA9IHRoaXMuZ2V0T3JDcmVhdGVFcnJvckJsb2NrKHBhdGhPZkVycm9yKTtcbiAgICAgICAgbGV0IGVycm9yc0xpc3QgPSBnZXQoZXJyb3JCbG9jaywgRVJST1JTX0tFWSk7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShlcnJvcnNMaXN0KSkge1xuICAgICAgICAgICAgZXJyb3JzTGlzdCA9IFtdO1xuICAgICAgICAgICAgZXJyb3JCbG9ja1tFUlJPUlNfS0VZXSA9IGVycm9yc0xpc3Q7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXJyb3JPckxpc3QpKSB7XG4gICAgICAgICAgICBzZXQoZXJyb3JCbG9jaywgRVJST1JTX0tFWSwgWy4uLm5ldyBTZXQoWy4uLmVycm9yc0xpc3QsIC4uLmVycm9yT3JMaXN0XSldKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNldChlcnJvckJsb2NrLCBFUlJPUlNfS0VZLCBbLi4ubmV3IFNldChbLi4uZXJyb3JzTGlzdCwgZXJyb3JPckxpc3RdKV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKiogU2V0cy9yZXBsYWNlcyB0aGUgYGVycm9yT3JMaXN0YCBhcyB0aGUgZXJyb3IocykgaW4gdGhlIGBFcnJvclNjaGVtYWAgYXQgZWl0aGVyIHRoZSByb290IGxldmVsIG9yIHRoZSBsb2NhdGlvblxuICAgICAqIHdpdGhpbiB0aGUgc2NoZW1hIGRlc2NyaWJlZCBieSB0aGUgYHBhdGhPZkVycm9yYC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRvIHNwZWNpZnkgdGhlIHBhdGggc2VlIHRoZVxuICAgICAqIFtlc2xpbnQgbG9kYXNoIHBsdWdpbiBkb2NzXShodHRwczovL2dpdGh1Yi5jb20vd2l4L2VzbGludC1wbHVnaW4tbG9kYXNoL2Jsb2IvbWFzdGVyL2RvY3MvcnVsZXMvcGF0aC1zdHlsZS5tZCkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXJyb3JPckxpc3QgLSBUaGUgZXJyb3Igb3IgbGlzdCBvZiBlcnJvcnMgdG8gc2V0IGludG8gdGhlIGBFcnJvclNjaGVtYWBcbiAgICAgKiBAcGFyYW0gW3BhdGhPZkVycm9yXSAtIFRoZSBvcHRpb25hbCBwYXRoIGludG8gdGhlIGBFcnJvclNjaGVtYWAgYXQgd2hpY2ggdG8gc2V0IHRoZSBlcnJvcihzKVxuICAgICAqIEByZXR1cm5zIC0gVGhlIGBFcnJvclNjaGVtYUJ1aWxkZXJgIG9iamVjdCBmb3IgY2hhaW5pbmcgcHVycG9zZXNcbiAgICAgKi9cbiAgICBzZXRFcnJvcnMoZXJyb3JPckxpc3QsIHBhdGhPZkVycm9yKSB7XG4gICAgICAgIGNvbnN0IGVycm9yQmxvY2sgPSB0aGlzLmdldE9yQ3JlYXRlRXJyb3JCbG9jayhwYXRoT2ZFcnJvcik7XG4gICAgICAgIC8vIEVmZmVjdGl2ZWx5IGNsb25lIHRoZSBhcnJheSBiZWluZyBnaXZlbiB0byBwcmV2ZW50IGFjY2lkZW50YWwgb3V0c2lkZSBtYW5pcHVsYXRpb24gb2YgdGhlIGdpdmVuIGxpc3RcbiAgICAgICAgY29uc3QgbGlzdFRvQWRkID0gQXJyYXkuaXNBcnJheShlcnJvck9yTGlzdCkgPyBbLi4ubmV3IFNldChbLi4uZXJyb3JPckxpc3RdKV0gOiBbZXJyb3JPckxpc3RdO1xuICAgICAgICBzZXQoZXJyb3JCbG9jaywgRVJST1JTX0tFWSwgbGlzdFRvQWRkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKiBDbGVhcnMgdGhlIGVycm9yKHMpIGluIHRoZSBgRXJyb3JTY2hlbWFgIGF0IGVpdGhlciB0aGUgcm9vdCBsZXZlbCBvciB0aGUgbG9jYXRpb24gd2l0aGluIHRoZSBzY2hlbWEgZGVzY3JpYmVkIGJ5XG4gICAgICogdGhlIGBwYXRoT2ZFcnJvcmAuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBzcGVjaWZ5IHRoZSBwYXRoIHNlZSB0aGVcbiAgICAgKiBbZXNsaW50IGxvZGFzaCBwbHVnaW4gZG9jc10oaHR0cHM6Ly9naXRodWIuY29tL3dpeC9lc2xpbnQtcGx1Z2luLWxvZGFzaC9ibG9iL21hc3Rlci9kb2NzL3J1bGVzL3BhdGgtc3R5bGUubWQpLlxuICAgICAqXG4gICAgICogQHBhcmFtIFtwYXRoT2ZFcnJvcl0gLSBUaGUgb3B0aW9uYWwgcGF0aCBpbnRvIHRoZSBgRXJyb3JTY2hlbWFgIGF0IHdoaWNoIHRvIGNsZWFyIHRoZSBlcnJvcihzKVxuICAgICAqIEByZXR1cm5zIC0gVGhlIGBFcnJvclNjaGVtYUJ1aWxkZXJgIG9iamVjdCBmb3IgY2hhaW5pbmcgcHVycG9zZXNcbiAgICAgKi9cbiAgICBjbGVhckVycm9ycyhwYXRoT2ZFcnJvcikge1xuICAgICAgICBjb25zdCBlcnJvckJsb2NrID0gdGhpcy5nZXRPckNyZWF0ZUVycm9yQmxvY2socGF0aE9mRXJyb3IpO1xuICAgICAgICBzZXQoZXJyb3JCbG9jaywgRVJST1JTX0tFWSwgW10pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1FcnJvclNjaGVtYUJ1aWxkZXIuanMubWFwIiwiLyoqIEdpdmVuIGRhdGUgJiB0aW1lIGluZm9ybWF0aW9uIHdpdGggb3B0aW9uYWwgeWVhclJhbmdlICYgZm9ybWF0LCByZXR1cm5zIHByb3BzIGZvciBEYXRlRWxlbWVudFxuICpcbiAqIEBwYXJhbSBkYXRlIC0gT2JqZWN0IGNvbnRhaW5pbmcgZGF0ZSB3aXRoIG9wdGlvbmFsIHRpbWUgaW5mb3JtYXRpb25cbiAqIEBwYXJhbSB0aW1lIC0gRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGluY2x1ZGUgdGltZSBvciBub3RcbiAqIEBwYXJhbSBbeWVhclJhbmdlPVsxOTAwLCBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgKyAyXV0gLSBDb250cm9scyB0aGUgbGlzdCBvZiB5ZWFycyB0byBiZSBkaXNwbGF5ZWRcbiAqIEBwYXJhbSBbZm9ybWF0PSdZTUQnXSAtIENvbnRyb2xzIHRoZSBvcmRlciBpbiB3aGljaCBkYXksIG1vbnRoIGFuZCB5ZWFyIGlucHV0IGVsZW1lbnQgd2lsbCBiZSBkaXNwbGF5ZWRcbiAqIEByZXR1cm5zIEFycmF5IG9mIHByb3BzIGZvciBEYXRlRWxlbWVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREYXRlRWxlbWVudFByb3BzKGRhdGUsIHRpbWUsIHllYXJSYW5nZSA9IFsxOTAwLCBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgKyAyXSwgZm9ybWF0ID0gJ1lNRCcpIHtcbiAgICBjb25zdCB7IGRheSwgbW9udGgsIHllYXIsIGhvdXIsIG1pbnV0ZSwgc2Vjb25kIH0gPSBkYXRlO1xuICAgIGNvbnN0IGRheU9iaiA9IHsgdHlwZTogJ2RheScsIHJhbmdlOiBbMSwgMzFdLCB2YWx1ZTogZGF5IH07XG4gICAgY29uc3QgbW9udGhPYmogPSB7IHR5cGU6ICdtb250aCcsIHJhbmdlOiBbMSwgMTJdLCB2YWx1ZTogbW9udGggfTtcbiAgICBjb25zdCB5ZWFyT2JqID0geyB0eXBlOiAneWVhcicsIHJhbmdlOiB5ZWFyUmFuZ2UsIHZhbHVlOiB5ZWFyIH07XG4gICAgY29uc3QgZGF0ZUVsZW1lbnRQcm9wID0gW107XG4gICAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICAgICAgY2FzZSAnTURZJzpcbiAgICAgICAgICAgIGRhdGVFbGVtZW50UHJvcC5wdXNoKG1vbnRoT2JqLCBkYXlPYmosIHllYXJPYmopO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0RNWSc6XG4gICAgICAgICAgICBkYXRlRWxlbWVudFByb3AucHVzaChkYXlPYmosIG1vbnRoT2JqLCB5ZWFyT2JqKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdZTUQnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgZGF0ZUVsZW1lbnRQcm9wLnB1c2goeWVhck9iaiwgbW9udGhPYmosIGRheU9iaik7XG4gICAgfVxuICAgIGlmICh0aW1lKSB7XG4gICAgICAgIGRhdGVFbGVtZW50UHJvcC5wdXNoKHsgdHlwZTogJ2hvdXInLCByYW5nZTogWzAsIDIzXSwgdmFsdWU6IGhvdXIgfSwgeyB0eXBlOiAnbWludXRlJywgcmFuZ2U6IFswLCA1OV0sIHZhbHVlOiBtaW51dGUgfSwgeyB0eXBlOiAnc2Vjb25kJywgcmFuZ2U6IFswLCA1OV0sIHZhbHVlOiBzZWNvbmQgfSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRlRWxlbWVudFByb3A7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXREYXRlRWxlbWVudFByb3BzLmpzLm1hcCIsIi8qKiBFeHRyYWN0cyB0aGUgcmFuZ2Ugc3BlYyBpbmZvcm1hdGlvbiBgeyBzdGVwPzogbnVtYmVyLCBtaW4/OiBudW1iZXIsIG1heD86IG51bWJlciB9YCB0aGF0IGNhbiBiZSBzcHJlYWQgb250byBhbiBIVE1MXG4gKiBpbnB1dCBmcm9tIHRoZSByYW5nZSBhbmFsb2cgaW4gdGhlIHNjaGVtYSBgeyBtdWx0aXBsZU9mPzogbnVtYmVyLCBtaW5pbXVtPzogbnVtYmVyLCBtYXhpbXVtPzogbnVtYmVyIH1gLlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZyb20gd2hpY2ggdG8gZXh0cmFjdCB0aGUgcmFuZ2Ugc3BlY1xuICogQHJldHVybnMgLSBBIHJhbmdlIHNwZWNpZmljYXRpb24gZnJvbSB0aGUgc2NoZW1hXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJhbmdlU3BlYyhzY2hlbWEpIHtcbiAgICBjb25zdCBzcGVjID0ge307XG4gICAgaWYgKHNjaGVtYS5tdWx0aXBsZU9mKSB7XG4gICAgICAgIHNwZWMuc3RlcCA9IHNjaGVtYS5tdWx0aXBsZU9mO1xuICAgIH1cbiAgICBpZiAoc2NoZW1hLm1pbmltdW0gfHwgc2NoZW1hLm1pbmltdW0gPT09IDApIHtcbiAgICAgICAgc3BlYy5taW4gPSBzY2hlbWEubWluaW11bTtcbiAgICB9XG4gICAgaWYgKHNjaGVtYS5tYXhpbXVtIHx8IHNjaGVtYS5tYXhpbXVtID09PSAwKSB7XG4gICAgICAgIHNwZWMubWF4ID0gc2NoZW1hLm1heGltdW07XG4gICAgfVxuICAgIHJldHVybiBzcGVjO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmFuZ2VTcGVjLmpzLm1hcCIsImltcG9ydCByYW5nZVNwZWMgZnJvbSAnLi9yYW5nZVNwZWMnO1xuLyoqIFVzaW5nIHRoZSBgc2NoZW1hYCwgYGRlZmF1bHRUeXBlYCBhbmQgYG9wdGlvbnNgLCBleHRyYWN0IG91dCB0aGUgcHJvcHMgZm9yIHRoZSA8aW5wdXQ+IGVsZW1lbnQgdGhhdCBtYWtlIHNlbnNlLlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB0aGUgZmllbGQgcHJvdmlkZWQgYnkgdGhlIHdpZGdldFxuICogQHBhcmFtIFtkZWZhdWx0VHlwZV0gLSBUaGUgZGVmYXVsdCB0eXBlLCBpZiBhbnksIGZvciB0aGUgZmllbGQgcHJvdmlkZWQgYnkgdGhlIHdpZGdldFxuICogQHBhcmFtIFtvcHRpb25zPXt9XSAtIFRoZSBVSSBPcHRpb25zIGZvciB0aGUgZmllbGQgcHJvdmlkZWQgYnkgdGhlIHdpZGdldFxuICogQHBhcmFtIFthdXRvRGVmYXVsdFN0ZXBBbnk9dHJ1ZV0gLSBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gYXV0by1kZWZhdWx0IHN0ZXA9YW55IHdoZW4gdGhlIHR5cGUgaXMgbnVtYmVyIGFuZCBubyBzdGVwXG4gKiBAcmV0dXJucyAtIFRoZSBleHRyYWN0ZWQgYElucHV0UHJvcHNUeXBlYCBvYmplY3RcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0SW5wdXRQcm9wcyhzY2hlbWEsIGRlZmF1bHRUeXBlLCBvcHRpb25zID0ge30sIGF1dG9EZWZhdWx0U3RlcEFueSA9IHRydWUpIHtcbiAgICBjb25zdCBpbnB1dFByb3BzID0ge1xuICAgICAgICB0eXBlOiBkZWZhdWx0VHlwZSB8fCAndGV4dCcsXG4gICAgICAgIC4uLnJhbmdlU3BlYyhzY2hlbWEpLFxuICAgIH07XG4gICAgLy8gSWYgb3B0aW9ucy5pbnB1dFR5cGUgaXMgc2V0IHVzZSB0aGF0IGFzIHRoZSBpbnB1dCB0eXBlXG4gICAgaWYgKG9wdGlvbnMuaW5wdXRUeXBlKSB7XG4gICAgICAgIGlucHV0UHJvcHMudHlwZSA9IG9wdGlvbnMuaW5wdXRUeXBlO1xuICAgIH1cbiAgICBlbHNlIGlmICghZGVmYXVsdFR5cGUpIHtcbiAgICAgICAgLy8gSWYgdGhlIHNjaGVtYSBpcyBvZiB0eXBlIG51bWJlciBvciBpbnRlZ2VyLCBzZXQgdGhlIGlucHV0IHR5cGUgdG8gbnVtYmVyXG4gICAgICAgIGlmIChzY2hlbWEudHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGlucHV0UHJvcHMudHlwZSA9ICdudW1iZXInO1xuICAgICAgICAgICAgLy8gT25seSBhZGQgc3RlcCBpZiBvbmUgaXNuJ3QgYWxyZWFkeSBkZWZpbmVkIGFuZCB3ZSBhcmUgYXV0by1kZWZhdWx0aW5nIHRoZSBcImFueVwiIHN0ZXBcbiAgICAgICAgICAgIGlmIChhdXRvRGVmYXVsdFN0ZXBBbnkgJiYgaW5wdXRQcm9wcy5zdGVwID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBTZXR0aW5nIHN0ZXAgdG8gJ2FueScgZml4ZXMgYSBidWcgaW4gU2FmYXJpIHdoZXJlIGRlY2ltYWxzIGFyZSBub3RcbiAgICAgICAgICAgICAgICAvLyBhbGxvd2VkIGluIG51bWJlciBpbnB1dHNcbiAgICAgICAgICAgICAgICBpbnB1dFByb3BzLnN0ZXAgPSAnYW55JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzY2hlbWEudHlwZSA9PT0gJ2ludGVnZXInKSB7XG4gICAgICAgICAgICBpbnB1dFByb3BzLnR5cGUgPSAnbnVtYmVyJztcbiAgICAgICAgICAgIC8vIE9ubHkgYWRkIHN0ZXAgaWYgb25lIGlzbid0IGFscmVhZHkgZGVmaW5lZFxuICAgICAgICAgICAgaWYgKGlucHV0UHJvcHMuc3RlcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgLy8gU2luY2UgdGhpcyBpcyBpbnRlZ2VyLCB5b3UgYWx3YXlzIHdhbnQgdG8gc3RlcCB1cCBvciBkb3duIGluIG11bHRpcGxlcyBvZiAxXG4gICAgICAgICAgICAgICAgaW5wdXRQcm9wcy5zdGVwID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAob3B0aW9ucy5hdXRvY29tcGxldGUpIHtcbiAgICAgICAgaW5wdXRQcm9wcy5hdXRvQ29tcGxldGUgPSBvcHRpb25zLmF1dG9jb21wbGV0ZTtcbiAgICB9XG4gICAgcmV0dXJuIGlucHV0UHJvcHM7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXRJbnB1dFByb3BzLmpzLm1hcCIsImltcG9ydCB7IFNVQk1JVF9CVE5fT1BUSU9OU19LRVkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgZ2V0VWlPcHRpb25zIGZyb20gJy4vZ2V0VWlPcHRpb25zJztcbi8qKiBUaGUgZGVmYXVsdCBzdWJtaXQgYnV0dG9uIG9wdGlvbnMsIGV4cG9ydGVkIGZvciB0ZXN0aW5nIHB1cnBvc2VzXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX09QVElPTlMgPSB7XG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIH0sXG4gICAgc3VibWl0VGV4dDogJ1N1Ym1pdCcsXG4gICAgbm9yZW5kZXI6IGZhbHNlLFxufTtcbi8qKiBFeHRyYWN0cyBhbnkgYHVpOnN1Ym1pdEJ1dHRvbk9wdGlvbnNgIGZyb20gdGhlIGB1aVNjaGVtYWAgYW5kIG1lcmdlcyB0aGVtIG9udG8gdGhlIGBERUZBVUxUX09QVElPTlNgXG4gKlxuICogQHBhcmFtIFt1aVNjaGVtYT17fV0gLSB0aGUgVUkgU2NoZW1hIGZyb20gd2hpY2ggdG8gZXh0cmFjdCBzdWJtaXQgYnV0dG9uIHByb3BzXG4gKiBAcmV0dXJucyAtIFRoZSBtZXJnaW5nIG9mIHRoZSBgREVGQVVMVF9PUFRJT05TYCB3aXRoIGFueSBjdXN0b20gb25lc1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRTdWJtaXRCdXR0b25PcHRpb25zKHVpU2NoZW1hID0ge30pIHtcbiAgICBjb25zdCB1aU9wdGlvbnMgPSBnZXRVaU9wdGlvbnModWlTY2hlbWEpO1xuICAgIGlmICh1aU9wdGlvbnMgJiYgdWlPcHRpb25zW1NVQk1JVF9CVE5fT1BUSU9OU19LRVldKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB1aU9wdGlvbnNbU1VCTUlUX0JUTl9PUFRJT05TX0tFWV07XG4gICAgICAgIHJldHVybiB7IC4uLkRFRkFVTFRfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuICAgIH1cbiAgICByZXR1cm4gREVGQVVMVF9PUFRJT05TO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0U3VibWl0QnV0dG9uT3B0aW9ucy5qcy5tYXAiLCIvKiogUmV0dXJucyB0aGUgdGVtcGxhdGUgd2l0aCB0aGUgZ2l2ZW4gYG5hbWVgIGZyb20gZWl0aGVyIHRoZSBgdWlTY2hlbWFgIGlmIGl0IGlzIGRlZmluZWQgb3IgZnJvbSB0aGUgYHJlZ2lzdHJ5YFxuICogb3RoZXJ3aXNlLiBOT1RFLCBzaW5jZSBgQnV0dG9uVGVtcGxhdGVzYCBhcmUgbm90IG92ZXJyaWRkZW4gaW4gYHVpU2NoZW1hYCBvbmx5IHRob3NlIGluIHRoZSBgcmVnaXN0cnlgIGFyZSByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0ZW1wbGF0ZSB0byBmZXRjaCwgcmVzdHJpY3RlZCB0byB0aGUga2V5cyBvZiBgVGVtcGxhdGVzVHlwZWBcbiAqIEBwYXJhbSByZWdpc3RyeSAtIFRoZSBgUmVnaXN0cnlgIGZyb20gd2hpY2ggdG8gcmVhZCB0aGUgdGVtcGxhdGVcbiAqIEBwYXJhbSBbdWlPcHRpb25zPXt9XSAtIFRoZSBgVUlPcHRpb25zVHlwZWAgZnJvbSB3aGljaCB0byByZWFkIGFuIGFsdGVybmF0ZSB0ZW1wbGF0ZVxuICogQHJldHVybnMgLSBUaGUgdGVtcGxhdGUgZnJvbSBlaXRoZXIgdGhlIGB1aVNjaGVtYWAgb3IgYHJlZ2lzdHJ5YCBmb3IgdGhlIGBuYW1lYFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRUZW1wbGF0ZShuYW1lLCByZWdpc3RyeSwgdWlPcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB7IHRlbXBsYXRlcyB9ID0gcmVnaXN0cnk7XG4gICAgaWYgKG5hbWUgPT09ICdCdXR0b25UZW1wbGF0ZXMnKSB7XG4gICAgICAgIHJldHVybiB0ZW1wbGF0ZXNbbmFtZV07XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgLy8gRXZhbHVhdGluZyB1aU9wdGlvbnNbbmFtZV0gcmVzdWx0cyBpbiBUUzI1OTA6IEV4cHJlc3Npb24gcHJvZHVjZXMgYSB1bmlvbiB0eXBlIHRoYXQgaXMgdG9vIGNvbXBsZXggdG8gcmVwcmVzZW50XG4gICAgLy8gVG8gYXZvaWQgdGhhdCwgd2UgY2FzdCB1aU9wdGlvbnMgdG8gYGFueWAgYmVmb3JlIGFjY2Vzc2luZyB0aGUgbmFtZSBmaWVsZFxuICAgIHVpT3B0aW9uc1tuYW1lXSB8fCB0ZW1wbGF0ZXNbbmFtZV0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0VGVtcGxhdGUuanMubWFwIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBiPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGM9U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKSxkPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxlPVN5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKSxmPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKSxnPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKSxoPVN5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LnNlcnZlcl9jb250ZXh0XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpLG09U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpLG49U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIikscD1TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKSxxPVN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpLHQ9U3ltYm9sLmZvcihcInJlYWN0Lm9mZnNjcmVlblwiKSx1O3U9U3ltYm9sLmZvcihcInJlYWN0Lm1vZHVsZS5yZWZlcmVuY2VcIik7XG5mdW5jdGlvbiB2KGEpe2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEpe3ZhciByPWEuJCR0eXBlb2Y7c3dpdGNoKHIpe2Nhc2UgYjpzd2l0Y2goYT1hLnR5cGUsYSl7Y2FzZSBkOmNhc2UgZjpjYXNlIGU6Y2FzZSBtOmNhc2UgbjpyZXR1cm4gYTtkZWZhdWx0OnN3aXRjaChhPWEmJmEuJCR0eXBlb2YsYSl7Y2FzZSBrOmNhc2UgaDpjYXNlIGw6Y2FzZSBxOmNhc2UgcDpjYXNlIGc6cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4gcn19Y2FzZSBjOnJldHVybiByfX19ZXhwb3J0cy5Db250ZXh0Q29uc3VtZXI9aDtleHBvcnRzLkNvbnRleHRQcm92aWRlcj1nO2V4cG9ydHMuRWxlbWVudD1iO2V4cG9ydHMuRm9yd2FyZFJlZj1sO2V4cG9ydHMuRnJhZ21lbnQ9ZDtleHBvcnRzLkxhenk9cTtleHBvcnRzLk1lbW89cDtleHBvcnRzLlBvcnRhbD1jO2V4cG9ydHMuUHJvZmlsZXI9ZjtleHBvcnRzLlN0cmljdE1vZGU9ZTtleHBvcnRzLlN1c3BlbnNlPW07XG5leHBvcnRzLlN1c3BlbnNlTGlzdD1uO2V4cG9ydHMuaXNBc3luY01vZGU9ZnVuY3Rpb24oKXtyZXR1cm4hMX07ZXhwb3J0cy5pc0NvbmN1cnJlbnRNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2V4cG9ydHMuaXNDb250ZXh0Q29uc3VtZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1ofTtleHBvcnRzLmlzQ29udGV4dFByb3ZpZGVyPWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09Z307ZXhwb3J0cy5pc0VsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmYS4kJHR5cGVvZj09PWJ9O2V4cG9ydHMuaXNGb3J3YXJkUmVmPWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09bH07ZXhwb3J0cy5pc0ZyYWdtZW50PWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09ZH07ZXhwb3J0cy5pc0xhenk9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1xfTtleHBvcnRzLmlzTWVtbz1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PXB9O1xuZXhwb3J0cy5pc1BvcnRhbD1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWN9O2V4cG9ydHMuaXNQcm9maWxlcj1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWZ9O2V4cG9ydHMuaXNTdHJpY3RNb2RlPWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09ZX07ZXhwb3J0cy5pc1N1c3BlbnNlPWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09bX07ZXhwb3J0cy5pc1N1c3BlbnNlTGlzdD1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PW59O1xuZXhwb3J0cy5pc1ZhbGlkRWxlbWVudFR5cGU9ZnVuY3Rpb24oYSl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBhfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgYXx8YT09PWR8fGE9PT1mfHxhPT09ZXx8YT09PW18fGE9PT1ufHxhPT09dHx8XCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmKGEuJCR0eXBlb2Y9PT1xfHxhLiQkdHlwZW9mPT09cHx8YS4kJHR5cGVvZj09PWd8fGEuJCR0eXBlb2Y9PT1ofHxhLiQkdHlwZW9mPT09bHx8YS4kJHR5cGVvZj09PXV8fHZvaWQgMCE9PWEuZ2V0TW9kdWxlSWQpPyEwOiExfTtleHBvcnRzLnR5cGVPZj12O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgY3JlYXRlRWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdElzIGZyb20gJ3JlYWN0LWlzJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgc2V0IGZyb20gJ2xvZGFzaC9zZXQnO1xuaW1wb3J0IGdldFNjaGVtYVR5cGUgZnJvbSAnLi9nZXRTY2hlbWFUeXBlJztcbi8qKiBUaGUgbWFwIG9mIHNjaGVtYSB0eXBlcyB0byB3aWRnZXQgdHlwZSB0byB3aWRnZXQgbmFtZVxuICovXG5jb25zdCB3aWRnZXRNYXAgPSB7XG4gICAgYm9vbGVhbjoge1xuICAgICAgICBjaGVja2JveDogJ0NoZWNrYm94V2lkZ2V0JyxcbiAgICAgICAgcmFkaW86ICdSYWRpb1dpZGdldCcsXG4gICAgICAgIHNlbGVjdDogJ1NlbGVjdFdpZGdldCcsXG4gICAgICAgIGhpZGRlbjogJ0hpZGRlbldpZGdldCcsXG4gICAgfSxcbiAgICBzdHJpbmc6IHtcbiAgICAgICAgdGV4dDogJ1RleHRXaWRnZXQnLFxuICAgICAgICBwYXNzd29yZDogJ1Bhc3N3b3JkV2lkZ2V0JyxcbiAgICAgICAgZW1haWw6ICdFbWFpbFdpZGdldCcsXG4gICAgICAgIGhvc3RuYW1lOiAnVGV4dFdpZGdldCcsXG4gICAgICAgIGlwdjQ6ICdUZXh0V2lkZ2V0JyxcbiAgICAgICAgaXB2NjogJ1RleHRXaWRnZXQnLFxuICAgICAgICB1cmk6ICdVUkxXaWRnZXQnLFxuICAgICAgICAnZGF0YS11cmwnOiAnRmlsZVdpZGdldCcsXG4gICAgICAgIHJhZGlvOiAnUmFkaW9XaWRnZXQnLFxuICAgICAgICBzZWxlY3Q6ICdTZWxlY3RXaWRnZXQnLFxuICAgICAgICB0ZXh0YXJlYTogJ1RleHRhcmVhV2lkZ2V0JyxcbiAgICAgICAgaGlkZGVuOiAnSGlkZGVuV2lkZ2V0JyxcbiAgICAgICAgZGF0ZTogJ0RhdGVXaWRnZXQnLFxuICAgICAgICBkYXRldGltZTogJ0RhdGVUaW1lV2lkZ2V0JyxcbiAgICAgICAgJ2RhdGUtdGltZSc6ICdEYXRlVGltZVdpZGdldCcsXG4gICAgICAgICdhbHQtZGF0ZSc6ICdBbHREYXRlV2lkZ2V0JyxcbiAgICAgICAgJ2FsdC1kYXRldGltZSc6ICdBbHREYXRlVGltZVdpZGdldCcsXG4gICAgICAgIHRpbWU6ICdUaW1lV2lkZ2V0JyxcbiAgICAgICAgY29sb3I6ICdDb2xvcldpZGdldCcsXG4gICAgICAgIGZpbGU6ICdGaWxlV2lkZ2V0JyxcbiAgICB9LFxuICAgIG51bWJlcjoge1xuICAgICAgICB0ZXh0OiAnVGV4dFdpZGdldCcsXG4gICAgICAgIHNlbGVjdDogJ1NlbGVjdFdpZGdldCcsXG4gICAgICAgIHVwZG93bjogJ1VwRG93bldpZGdldCcsXG4gICAgICAgIHJhbmdlOiAnUmFuZ2VXaWRnZXQnLFxuICAgICAgICByYWRpbzogJ1JhZGlvV2lkZ2V0JyxcbiAgICAgICAgaGlkZGVuOiAnSGlkZGVuV2lkZ2V0JyxcbiAgICB9LFxuICAgIGludGVnZXI6IHtcbiAgICAgICAgdGV4dDogJ1RleHRXaWRnZXQnLFxuICAgICAgICBzZWxlY3Q6ICdTZWxlY3RXaWRnZXQnLFxuICAgICAgICB1cGRvd246ICdVcERvd25XaWRnZXQnLFxuICAgICAgICByYW5nZTogJ1JhbmdlV2lkZ2V0JyxcbiAgICAgICAgcmFkaW86ICdSYWRpb1dpZGdldCcsXG4gICAgICAgIGhpZGRlbjogJ0hpZGRlbldpZGdldCcsXG4gICAgfSxcbiAgICBhcnJheToge1xuICAgICAgICBzZWxlY3Q6ICdTZWxlY3RXaWRnZXQnLFxuICAgICAgICBjaGVja2JveGVzOiAnQ2hlY2tib3hlc1dpZGdldCcsXG4gICAgICAgIGZpbGVzOiAnRmlsZVdpZGdldCcsXG4gICAgICAgIGhpZGRlbjogJ0hpZGRlbldpZGdldCcsXG4gICAgfSxcbn07XG4vKiogV3JhcHMgdGhlIGdpdmVuIHdpZGdldCB3aXRoIHN0YXRlbGVzcyBmdW5jdGlvbmFsIGNvbXBvbmVudCB0aGF0IHdpbGwgbWVyZ2UgYW55IGBkZWZhdWx0UHJvcHMub3B0aW9uc2Agd2l0aCB0aGVcbiAqIGBvcHRpb25zYCB0aGF0IGFyZSBwcm92aWRlZCBpbiB0aGUgcHJvcHMuIEl0IHdpbGwgYWRkIHRoZSB3cmFwcGVyIGNvbXBvbmVudCBhcyBhIGBNZXJnZWRXaWRnZXRgIHByb3BlcnR5IG9udG8gdGhlXG4gKiBgV2lkZ2V0YCBzbyB0aGF0IGZ1dHVyZSBhdHRlbXB0cyB0byB3cmFwIGBBV2lkZ2V0YCB3aWxsIHJldHVybiB0aGUgYWxyZWFkeSBleGlzdGluZyB3cmFwcGVyLlxuICpcbiAqIEBwYXJhbSBBV2lkZ2V0IC0gQSB3aWRnZXQgdGhhdCB3aWxsIGJlIHdyYXBwZWQgb3Igb25lIHRoYXQgaXMgYWxyZWFkeSB3cmFwcGVkXG4gKiBAcmV0dXJucyAtIFRoZSB3cmFwcGVyIHdpZGdldFxuICovXG5mdW5jdGlvbiBtZXJnZVdpZGdldE9wdGlvbnMoQVdpZGdldCkge1xuICAgIGxldCBNZXJnZWRXaWRnZXQgPSBnZXQoQVdpZGdldCwgJ01lcmdlZFdpZGdldCcpO1xuICAgIC8vIGNhY2hlIHJldHVybiB2YWx1ZSBhcyBwcm9wZXJ0eSBvZiB3aWRnZXQgZm9yIHByb3BlciByZWFjdCByZWNvbmNpbGlhdGlvblxuICAgIGlmICghTWVyZ2VkV2lkZ2V0KSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0gKEFXaWRnZXQuZGVmYXVsdFByb3BzICYmIEFXaWRnZXQuZGVmYXVsdFByb3BzLm9wdGlvbnMpIHx8IHt9O1xuICAgICAgICBNZXJnZWRXaWRnZXQgPSAoeyBvcHRpb25zLCAuLi5wcm9wcyB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gX2pzeChBV2lkZ2V0LCB7IG9wdGlvbnM6IHsgLi4uZGVmYXVsdE9wdGlvbnMsIC4uLm9wdGlvbnMgfSwgLi4ucHJvcHMgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHNldChBV2lkZ2V0LCAnTWVyZ2VkV2lkZ2V0JywgTWVyZ2VkV2lkZ2V0KTtcbiAgICB9XG4gICAgcmV0dXJuIE1lcmdlZFdpZGdldDtcbn1cbi8qKiBHaXZlbiBhIHNjaGVtYSByZXByZXNlbnRpbmcgYSBmaWVsZCB0byByZW5kZXIgYW5kIGVpdGhlciB0aGUgbmFtZSBvciBhY3R1YWwgYFdpZGdldGAgaW1wbGVtZW50YXRpb24sIHJldHVybnMgdGhlXG4gKiBSZWFjdCBjb21wb25lbnQgdGhhdCBpcyB1c2VkIHRvIHJlbmRlciB0aGUgd2lkZ2V0LiBJZiB0aGUgYHdpZGdldGAgaXMgYWxyZWFkeSBhIFJlYWN0IGNvbXBvbmVudCwgdGhlbiBpdCBpcyB3cmFwcGVkXG4gKiB3aXRoIGEgYE1lcmdlZFdpZGdldGAuIE90aGVyd2lzZSBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gbG9vayB1cCB0aGUgd2lkZ2V0IGluc2lkZSBvZiB0aGUgYHJlZ2lzdGVyZWRXaWRnZXRzYCBtYXAgYmFzZWRcbiAqIG9uIHRoZSBzY2hlbWEgdHlwZSBhbmQgYHdpZGdldGAgbmFtZS4gSWYgbm8gd2lkZ2V0IGNvbXBvbmVudCBjYW4gYmUgZm91bmQgYW4gYEVycm9yYCBpcyB0aHJvd24uXG4gKlxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHRoZSBmaWVsZFxuICogQHBhcmFtIFt3aWRnZXRdIC0gRWl0aGVyIHRoZSBuYW1lIG9mIHRoZSB3aWRnZXQgT1IgYSBgV2lkZ2V0YCBpbXBsZW1lbnRhdGlvbiB0byB1c2VcbiAqIEBwYXJhbSBbcmVnaXN0ZXJlZFdpZGdldHM9e31dIC0gQSByZWdpc3RyeSBvZiB3aWRnZXQgbmFtZSB0byBgV2lkZ2V0YCBpbXBsZW1lbnRhdGlvblxuICogQHJldHVybnMgLSBUaGUgYFdpZGdldGAgY29tcG9uZW50IHRvIHVzZVxuICogQHRocm93cyAtIEFuIGVycm9yIGlmIHRoZXJlIGlzIG5vIGBXaWRnZXRgIGNvbXBvbmVudCB0aGF0IGNhbiBiZSByZXR1cm5lZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXaWRnZXQoc2NoZW1hLCB3aWRnZXQsIHJlZ2lzdGVyZWRXaWRnZXRzID0ge30pIHtcbiAgICBjb25zdCB0eXBlID0gZ2V0U2NoZW1hVHlwZShzY2hlbWEpO1xuICAgIGlmICh0eXBlb2Ygd2lkZ2V0ID09PSAnZnVuY3Rpb24nIHx8XG4gICAgICAgICh3aWRnZXQgJiYgUmVhY3RJcy5pc0ZvcndhcmRSZWYoY3JlYXRlRWxlbWVudCh3aWRnZXQpKSkgfHxcbiAgICAgICAgUmVhY3RJcy5pc01lbW8od2lkZ2V0KSkge1xuICAgICAgICByZXR1cm4gbWVyZ2VXaWRnZXRPcHRpb25zKHdpZGdldCk7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygd2lkZ2V0ICE9PSAnc3RyaW5nJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHdpZGdldCBkZWZpbml0aW9uOiAke3R5cGVvZiB3aWRnZXR9YCk7XG4gICAgfVxuICAgIGlmICh3aWRnZXQgaW4gcmVnaXN0ZXJlZFdpZGdldHMpIHtcbiAgICAgICAgY29uc3QgcmVnaXN0ZXJlZFdpZGdldCA9IHJlZ2lzdGVyZWRXaWRnZXRzW3dpZGdldF07XG4gICAgICAgIHJldHVybiBnZXRXaWRnZXQoc2NoZW1hLCByZWdpc3RlcmVkV2lkZ2V0LCByZWdpc3RlcmVkV2lkZ2V0cyk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKCEodHlwZSBpbiB3aWRnZXRNYXApKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHdpZGdldCBmb3IgdHlwZSAnJHt0eXBlfSdgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAod2lkZ2V0IGluIHdpZGdldE1hcFt0eXBlXSkge1xuICAgICAgICAgICAgY29uc3QgcmVnaXN0ZXJlZFdpZGdldCA9IHJlZ2lzdGVyZWRXaWRnZXRzW3dpZGdldE1hcFt0eXBlXVt3aWRnZXRdXTtcbiAgICAgICAgICAgIHJldHVybiBnZXRXaWRnZXQoc2NoZW1hLCByZWdpc3RlcmVkV2lkZ2V0LCByZWdpc3RlcmVkV2lkZ2V0cyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBObyB3aWRnZXQgJyR7d2lkZ2V0fScgZm9yIHR5cGUgJyR7dHlwZX0nYCk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXRXaWRnZXQuanMubWFwIiwiaW1wb3J0IGdldFdpZGdldCBmcm9tICcuL2dldFdpZGdldCc7XG4vKiogRGV0ZWN0cyB3aGV0aGVyIHRoZSBgd2lkZ2V0YCBleGlzdHMgZm9yIHRoZSBgc2NoZW1hYCB3aXRoIHRoZSBhc3NvY2lhdGVkIGByZWdpc3RyeVdpZGdldHNgIGFuZCByZXR1cm5zIHRydWUgaWYgaXRcbiAqIGRvZXMsIG9yIGZhbHNlIGlmIGl0IGRvZXNuJ3QuXG4gKlxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHRoZSBmaWVsZFxuICogQHBhcmFtIHdpZGdldCAtIEVpdGhlciB0aGUgbmFtZSBvZiB0aGUgd2lkZ2V0IE9SIGEgYFdpZGdldGAgaW1wbGVtZW50YXRpb24gdG8gdXNlXG4gKiBAcGFyYW0gW3JlZ2lzdGVyZWRXaWRnZXRzPXt9XSAtIEEgcmVnaXN0cnkgb2Ygd2lkZ2V0IG5hbWUgdG8gYFdpZGdldGAgaW1wbGVtZW50YXRpb25cbiAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGUgd2lkZ2V0IGV4aXN0cywgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGhhc1dpZGdldChzY2hlbWEsIHdpZGdldCwgcmVnaXN0ZXJlZFdpZGdldHMgPSB7fSkge1xuICAgIHRyeSB7XG4gICAgICAgIGdldFdpZGdldChzY2hlbWEsIHdpZGdldCwgcmVnaXN0ZXJlZFdpZGdldHMpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc3QgZXJyID0gZTtcbiAgICAgICAgaWYgKGVyci5tZXNzYWdlICYmIChlcnIubWVzc2FnZS5zdGFydHNXaXRoKCdObyB3aWRnZXQnKSB8fCBlcnIubWVzc2FnZS5zdGFydHNXaXRoKCdVbnN1cHBvcnRlZCB3aWRnZXQnKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWhhc1dpZGdldC5qcy5tYXAiLCJpbXBvcnQgaXNTdHJpbmcgZnJvbSAnbG9kYXNoL2lzU3RyaW5nJztcbmltcG9ydCB7IElEX0tFWSB9IGZyb20gJy4vY29uc3RhbnRzJztcbi8qKiBHZW5lcmF0ZXMgYSBjb25zaXN0ZW50IGBpZGAgcGF0dGVybiBmb3IgYSBnaXZlbiBgaWRgIGFuZCBhIGBzdWZmaXhgXG4gKlxuICogQHBhcmFtIGlkIC0gRWl0aGVyIHNpbXBsZSBzdHJpbmcgaWQgb3IgYW4gSWRTY2hlbWEgZnJvbSB3aGljaCB0byBleHRyYWN0IGl0XG4gKiBAcGFyYW0gc3VmZml4IC0gVGhlIHN1ZmZpeCB0byBhcHBlbmQgdG8gdGhlIGlkXG4gKi9cbmZ1bmN0aW9uIGlkR2VuZXJhdG9yKGlkLCBzdWZmaXgpIHtcbiAgICBjb25zdCB0aGVJZCA9IGlzU3RyaW5nKGlkKSA/IGlkIDogaWRbSURfS0VZXTtcbiAgICByZXR1cm4gYCR7dGhlSWR9X18ke3N1ZmZpeH1gO1xufVxuLyoqIFJldHVybiBhIGNvbnNpc3RlbnQgYGlkYCBmb3IgdGhlIGZpZWxkIGRlc2NyaXB0aW9uIGVsZW1lbnRcbiAqXG4gKiBAcGFyYW0gaWQgLSBFaXRoZXIgc2ltcGxlIHN0cmluZyBpZCBvciBhbiBJZFNjaGVtYSBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgaXRcbiAqIEByZXR1cm5zIC0gVGhlIGNvbnNpc3RlbnQgaWQgZm9yIHRoZSBmaWVsZCBkZXNjcmlwdGlvbiBlbGVtZW50IGZyb20gdGhlIGdpdmVuIGBpZGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaXB0aW9uSWQoaWQpIHtcbiAgICByZXR1cm4gaWRHZW5lcmF0b3IoaWQsICdkZXNjcmlwdGlvbicpO1xufVxuLyoqIFJldHVybiBhIGNvbnNpc3RlbnQgYGlkYCBmb3IgdGhlIGZpZWxkIGVycm9yIGVsZW1lbnRcbiAqXG4gKiBAcGFyYW0gaWQgLSBFaXRoZXIgc2ltcGxlIHN0cmluZyBpZCBvciBhbiBJZFNjaGVtYSBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgaXRcbiAqIEByZXR1cm5zIC0gVGhlIGNvbnNpc3RlbnQgaWQgZm9yIHRoZSBmaWVsZCBlcnJvciBlbGVtZW50IGZyb20gdGhlIGdpdmVuIGBpZGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVycm9ySWQoaWQpIHtcbiAgICByZXR1cm4gaWRHZW5lcmF0b3IoaWQsICdlcnJvcicpO1xufVxuLyoqIFJldHVybiBhIGNvbnNpc3RlbnQgYGlkYCBmb3IgdGhlIGZpZWxkIGV4YW1wbGVzIGVsZW1lbnRcbiAqXG4gKiBAcGFyYW0gaWQgLSBFaXRoZXIgc2ltcGxlIHN0cmluZyBpZCBvciBhbiBJZFNjaGVtYSBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgaXRcbiAqIEByZXR1cm5zIC0gVGhlIGNvbnNpc3RlbnQgaWQgZm9yIHRoZSBmaWVsZCBleGFtcGxlcyBlbGVtZW50IGZyb20gdGhlIGdpdmVuIGBpZGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4YW1wbGVzSWQoaWQpIHtcbiAgICByZXR1cm4gaWRHZW5lcmF0b3IoaWQsICdleGFtcGxlcycpO1xufVxuLyoqIFJldHVybiBhIGNvbnNpc3RlbnQgYGlkYCBmb3IgdGhlIGZpZWxkIGhlbHAgZWxlbWVudFxuICpcbiAqIEBwYXJhbSBpZCAtIEVpdGhlciBzaW1wbGUgc3RyaW5nIGlkIG9yIGFuIElkU2NoZW1hIGZyb20gd2hpY2ggdG8gZXh0cmFjdCBpdFxuICogQHJldHVybnMgLSBUaGUgY29uc2lzdGVudCBpZCBmb3IgdGhlIGZpZWxkIGhlbHAgZWxlbWVudCBmcm9tIHRoZSBnaXZlbiBgaWRgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoZWxwSWQoaWQpIHtcbiAgICByZXR1cm4gaWRHZW5lcmF0b3IoaWQsICdoZWxwJyk7XG59XG4vKiogUmV0dXJuIGEgY29uc2lzdGVudCBgaWRgIGZvciB0aGUgZmllbGQgdGl0bGUgZWxlbWVudFxuICpcbiAqIEBwYXJhbSBpZCAtIEVpdGhlciBzaW1wbGUgc3RyaW5nIGlkIG9yIGFuIElkU2NoZW1hIGZyb20gd2hpY2ggdG8gZXh0cmFjdCBpdFxuICogQHJldHVybnMgLSBUaGUgY29uc2lzdGVudCBpZCBmb3IgdGhlIGZpZWxkIHRpdGxlIGVsZW1lbnQgZnJvbSB0aGUgZ2l2ZW4gYGlkYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdGl0bGVJZChpZCkge1xuICAgIHJldHVybiBpZEdlbmVyYXRvcihpZCwgJ3RpdGxlJyk7XG59XG4vKiogUmV0dXJuIGEgbGlzdCBvZiBlbGVtZW50IGlkcyB0aGF0IGNvbnRhaW4gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmllbGQgdGhhdCBjYW4gYmUgdXNlZCB0byBhcyB0aGUgYXJpYVxuICogZGVzY3JpcHRpb24gb2YgdGhlIGZpZWxkLiBUaGlzIGlzIGNvcnJlY3RseSBvbWl0dGluZyBgdGl0bGVJZGAgd2hpY2ggd291bGQgYmUgXCJsYWJlbGluZ1wiIHJhdGhlciB0aGFuIFwiZGVzY3JpYmluZ1wiIHRoZVxuICogZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0gaWQgLSBFaXRoZXIgc2ltcGxlIHN0cmluZyBpZCBvciBhbiBJZFNjaGVtYSBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgaXRcbiAqIEBwYXJhbSBbaW5jbHVkZUV4YW1wbGVzPWZhbHNlXSAtIE9wdGlvbmFsIGZsYWcsIGlmIHRydWUsIHdpbGwgYWRkIHRoZSBgZXhhbXBsZXNJZGAgaW50byB0aGUgbGlzdFxuICogQHJldHVybnMgLSBUaGUgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGxpc3Qgb2YgaWRzIGZvciB1c2UgaW4gYW4gYGFyaWEtZGVzY3JpYmVkQnlgIGF0dHJpYnV0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJpYURlc2NyaWJlZEJ5SWRzKGlkLCBpbmNsdWRlRXhhbXBsZXMgPSBmYWxzZSkge1xuICAgIGNvbnN0IGV4YW1wbGVzID0gaW5jbHVkZUV4YW1wbGVzID8gYCAke2V4YW1wbGVzSWQoaWQpfWAgOiAnJztcbiAgICByZXR1cm4gYCR7ZXJyb3JJZChpZCl9ICR7ZGVzY3JpcHRpb25JZChpZCl9ICR7aGVscElkKGlkKX0ke2V4YW1wbGVzfWA7XG59XG4vKiogUmV0dXJuIGEgY29uc2lzdGVudCBgaWRgIGZvciB0aGUgYG9wdGlvbkluZGV4YHMgb2YgYSBgUmFkaW9gIG9yIGBDaGVja2JveGVzYCB3aWRnZXRcbiAqXG4gKiBAcGFyYW0gaWQgLSBUaGUgaWQgb2YgdGhlIHBhcmVudCBjb21wb25lbnQgZm9yIHRoZSBvcHRpb25cbiAqIEBwYXJhbSBvcHRpb25JbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgb3B0aW9uIGZvciB3aGljaCB0aGUgaWQgaXMgZGVzaXJlZFxuICogQHJldHVybnMgLSBBbiBpZCBmb3IgdGhlIG9wdGlvbiBpbmRleCBiYXNlZCBvbiB0aGUgcGFyZW50IGBpZGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbklkKGlkLCBvcHRpb25JbmRleCkge1xuICAgIHJldHVybiBgJHtpZH0tJHtvcHRpb25JbmRleH1gO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aWRHZW5lcmF0b3JzLmpzLm1hcCIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxhYmVsVmFsdWUobGFiZWwsIGhpZGVMYWJlbCwgZmFsbGJhY2spIHtcbiAgICByZXR1cm4gaGlkZUxhYmVsID8gZmFsbGJhY2sgOiBsYWJlbDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxhYmVsVmFsdWUuanMubWFwIiwiLyoqIENvbnZlcnRzIGEgbG9jYWwgRGF0ZSBzdHJpbmcgaW50byBhIFVUQyBkYXRlIHN0cmluZ1xuICpcbiAqIEBwYXJhbSBkYXRlU3RyaW5nIC0gVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIGRhdGUgYXMgYWNjZXB0ZWQgYnkgdGhlIGBEYXRlKClgIGNvbnN0cnVjdG9yXG4gKiBAcmV0dXJucyAtIEEgVVRDIGRhdGUgc3RyaW5nIGlmIGBkYXRlU3RyaW5nYCBpcyB0cnV0aHksIG90aGVyd2lzZSB1bmRlZmluZWRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbG9jYWxUb1VUQyhkYXRlU3RyaW5nKSB7XG4gICAgcmV0dXJuIGRhdGVTdHJpbmcgPyBuZXcgRGF0ZShkYXRlU3RyaW5nKS50b0pTT04oKSA6IHVuZGVmaW5lZDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxvY2FsVG9VVEMuanMubWFwIiwiaW1wb3J0IHsgQ09OU1RfS0VZLCBFTlVNX0tFWSB9IGZyb20gJy4vY29uc3RhbnRzJztcbi8qKiBSZXR1cm5zIHRoZSBjb25zdGFudCB2YWx1ZSBmcm9tIHRoZSBzY2hlbWEgd2hlbiBpdCBpcyBlaXRoZXIgYSBzaW5nbGUgdmFsdWUgZW51bSBvciBoYXMgYSBjb25zdCBrZXkuIE90aGVyd2lzZVxuICogdGhyb3dzIGFuIGVycm9yLlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZyb20gd2hpY2ggdG8gb2J0YWluIHRoZSBjb25zdGFudCB2YWx1ZVxuICogQHJldHVybnMgLSBUaGUgY29uc3RhbnQgdmFsdWUgZm9yIHRoZSBzY2hlbWFcbiAqIEB0aHJvd3MgLSBFcnJvciB3aGVuIHRoZSBzY2hlbWEgZG9lcyBub3QgaGF2ZSBhIGNvbnN0YW50IHZhbHVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvQ29uc3RhbnQoc2NoZW1hKSB7XG4gICAgaWYgKEVOVU1fS0VZIGluIHNjaGVtYSAmJiBBcnJheS5pc0FycmF5KHNjaGVtYS5lbnVtKSAmJiBzY2hlbWEuZW51bS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYS5lbnVtWzBdO1xuICAgIH1cbiAgICBpZiAoQ09OU1RfS0VZIGluIHNjaGVtYSkge1xuICAgICAgICByZXR1cm4gc2NoZW1hLmNvbnN0O1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NjaGVtYSBjYW5ub3QgYmUgaW5mZXJyZWQgYXMgYSBjb25zdGFudCcpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dG9Db25zdGFudC5qcy5tYXAiLCJpbXBvcnQgdG9Db25zdGFudCBmcm9tICcuL3RvQ29uc3RhbnQnO1xuaW1wb3J0IGdldFVpT3B0aW9ucyBmcm9tICcuL2dldFVpT3B0aW9ucyc7XG4vKiogR2V0cyB0aGUgbGlzdCBvZiBvcHRpb25zIGZyb20gdGhlIGBzY2hlbWFgLiBJZiB0aGUgc2NoZW1hIGhhcyBhbiBlbnVtIGxpc3QsIHRoZW4gdGhvc2UgZW51bSB2YWx1ZXMgYXJlIHJldHVybmVkLiBUaGVcbiAqIGxhYmVscyBmb3IgdGhlIG9wdGlvbnMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgbm9uLXN0YW5kYXJkLCBSSlNGLWRlcHJlY2F0ZWQgYGVudW1OYW1lc2AgaWYgaXQgZXhpc3RzLCBvdGhlcndpc2VcbiAqIHRoZSBsYWJlbCB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBgdmFsdWVgLiBJZiB0aGUgc2NoZW1hIGhhcyBhIGBvbmVPZmAgb3IgYGFueU9mYCwgdGhlbiB0aGUgdmFsdWUgaXMgdGhlIGxpc3Qgb2ZcbiAqIGBjb25zdGAgdmFsdWVzIGZyb20gdGhlIHNjaGVtYSBhbmQgdGhlIGxhYmVsIGlzIGVpdGhlciB0aGUgYHNjaGVtYS50aXRsZWAgb3IgdGhlIHZhbHVlLiBJZiBhIGB1aVNjaGVtYWAgaXMgcHJvdmlkZWRcbiAqIGFuZCBpdCBoYXMgdGhlIGB1aTplbnVtTmFtZXNgIG1hdGNoZWQgd2l0aCBgZW51bWAgb3IgaXQgaGFzIGFuIGFzc29jaWF0ZWQgYG9uZU9mYCBvciBgYW55T2ZgIHdpdGggYSBsaXN0IG9mIG9iamVjdHNcbiAqIGNvbnRhaW5pbmcgYHVpOnRpdGxlYCB0aGVuIHRoZSBVSSBzY2hlbWEgdmFsdWVzIHdpbGwgcmVwbGFjZSB0aGUgdmFsdWVzIGZyb20gdGhlIHNjaGVtYS5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgdGhlIG9wdGlvbnMgbGlzdFxuICogQHBhcmFtIFt1aVNjaGVtYV0gLSBUaGUgb3B0aW9uYWwgdWlTY2hlbWEgZnJvbSB3aGljaCB0byBnZXQgYWx0ZXJuYXRlIGxhYmVscyBmb3IgdGhlIG9wdGlvbnNcbiAqIEByZXR1cm5zIC0gVGhlIGxpc3Qgb2Ygb3B0aW9ucyBmcm9tIHRoZSBzY2hlbWFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3B0aW9uc0xpc3Qoc2NoZW1hLCB1aVNjaGVtYSkge1xuICAgIC8vIFRPRE8gZmxpcCBnZW5lcmljcyB0byBtb3ZlIFQgZmlyc3QgaW4gdjZcbiAgICBjb25zdCBzY2hlbWFXaXRoRW51bU5hbWVzID0gc2NoZW1hO1xuICAgIGlmIChzY2hlbWEuZW51bSkge1xuICAgICAgICBsZXQgZW51bU5hbWVzO1xuICAgICAgICBpZiAodWlTY2hlbWEpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgZW51bU5hbWVzOiB1aUVudW1OYW1lcyB9ID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hKTtcbiAgICAgICAgICAgIGVudW1OYW1lcyA9IHVpRW51bU5hbWVzO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZW51bU5hbWVzICYmIHNjaGVtYVdpdGhFbnVtTmFtZXMuZW51bU5hbWVzKSB7XG4gICAgICAgICAgICAvLyBlbnVtTmFtZXMgd2FzIGRlcHJlY2F0ZWQgaW4gdjUgYW5kIGlzIGludGVudGlvbmFsbHkgb21pdHRlZCBmcm9tIHRoZSBSSlNGU2NoZW1hIHR5cGUuXG4gICAgICAgICAgICAvLyBDYXN0IHRoZSB0eXBlIHRvIGluY2x1ZGUgZW51bU5hbWVzIHNvIHRoZSBmZWF0dXJlIHN0aWxsIHdvcmtzLlxuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1RoZSBcImVudW1OYW1lc1wiIHByb3BlcnR5IGluIHRoZSBzY2hlbWEgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIG1ham9yIHJlbGVhc2UuIFVzZSB0aGUgXCJ1aTplbnVtTmFtZXNcIiBwcm9wZXJ0eSBpbiB0aGUgdWlTY2hlbWEgaW5zdGVhZC4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVudW1OYW1lcyA9IHNjaGVtYVdpdGhFbnVtTmFtZXMuZW51bU5hbWVzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzY2hlbWEuZW51bS5tYXAoKHZhbHVlLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYWJlbCA9IChlbnVtTmFtZXMgPT09IG51bGwgfHwgZW51bU5hbWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbnVtTmFtZXNbaV0pIHx8IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4geyBsYWJlbCwgdmFsdWUgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGxldCBhbHRTY2hlbWFzID0gdW5kZWZpbmVkO1xuICAgIGxldCBhbHRVaVNjaGVtYXMgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHNjaGVtYS5hbnlPZikge1xuICAgICAgICBhbHRTY2hlbWFzID0gc2NoZW1hLmFueU9mO1xuICAgICAgICBhbHRVaVNjaGVtYXMgPSB1aVNjaGVtYSA9PT0gbnVsbCB8fCB1aVNjaGVtYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdWlTY2hlbWEuYW55T2Y7XG4gICAgfVxuICAgIGVsc2UgaWYgKHNjaGVtYS5vbmVPZikge1xuICAgICAgICBhbHRTY2hlbWFzID0gc2NoZW1hLm9uZU9mO1xuICAgICAgICBhbHRVaVNjaGVtYXMgPSB1aVNjaGVtYSA9PT0gbnVsbCB8fCB1aVNjaGVtYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdWlTY2hlbWEub25lT2Y7XG4gICAgfVxuICAgIHJldHVybiAoYWx0U2NoZW1hcyAmJlxuICAgICAgICBhbHRTY2hlbWFzLm1hcCgoYVNjaGVtYURlZiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgdGl0bGUgfSA9IGdldFVpT3B0aW9ucyhhbHRVaVNjaGVtYXMgPT09IG51bGwgfHwgYWx0VWlTY2hlbWFzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhbHRVaVNjaGVtYXNbaW5kZXhdKTtcbiAgICAgICAgICAgIGNvbnN0IGFTY2hlbWEgPSBhU2NoZW1hRGVmO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0b0NvbnN0YW50KGFTY2hlbWEpO1xuICAgICAgICAgICAgY29uc3QgbGFiZWwgPSB0aXRsZSB8fCBhU2NoZW1hLnRpdGxlIHx8IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNjaGVtYTogYVNjaGVtYSxcbiAgICAgICAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW9wdGlvbnNMaXN0LmpzLm1hcCIsIi8qKiBHaXZlbiBhIGxpc3Qgb2YgYHByb3BlcnRpZXNgIGFuZCBhbiBgb3JkZXJgIGxpc3QsIHJldHVybnMgYSBsaXN0IHRoYXQgY29udGFpbnMgdGhlIGBwcm9wZXJ0aWVzYCBvcmRlcmVkIGNvcnJlY3RseS5cbiAqIElmIGBvcmRlcmAgaXMgbm90IGFuIGFycmF5LCB0aGVuIHRoZSB1bnRvdWNoZWQgYHByb3BlcnRpZXNgIGxpc3QgaXMgcmV0dXJuZWQuIE90aGVyd2lzZSBgcHJvcGVydGllc2AgaXMgb3JkZXJlZCBwZXJcbiAqIHRoZSBgb3JkZXJgIGxpc3QuIElmIGBvcmRlcmAgY29udGFpbnMgYSAnKicgdGhlbiBhbnkgYHByb3BlcnRpZXNgIHRoYXQgYXJlIG5vdCBtZW50aW9uZWQgZXhwbGljaXR5IGluIGBvcmRlcmAgd2lsbCBiZVxuICogcGxhY2VzIGluIHRoZSBsb2NhdGlvbiBvZiB0aGUgYCpgLlxuICpcbiAqIEBwYXJhbSBwcm9wZXJ0aWVzIC0gVGhlIGxpc3Qgb2YgcHJvcGVydHkga2V5cyB0byBiZSBvcmRlcmVkXG4gKiBAcGFyYW0gb3JkZXIgLSBBbiBhcnJheSBvZiBwcm9wZXJ0eSBrZXlzIHRvIGJlIG9yZGVyZWQgZmlyc3QsIHdpdGggYW4gb3B0aW9uYWwgJyonIHByb3BlcnR5XG4gKiBAcmV0dXJucyAtIEEgbGlzdCB3aXRoIHRoZSBgcHJvcGVydGllc2Agb3JkZXJlZFxuICogQHRocm93cyAtIEVycm9yIHdoZW4gdGhlIHByb3BlcnRpZXMgY2Fubm90IGJlIG9yZGVyZWQgY29ycmVjdGx5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9yZGVyUHJvcGVydGllcyhwcm9wZXJ0aWVzLCBvcmRlcikge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShvcmRlcikpIHtcbiAgICAgICAgcmV0dXJuIHByb3BlcnRpZXM7XG4gICAgfVxuICAgIGNvbnN0IGFycmF5VG9IYXNoID0gKGFycikgPT4gYXJyLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgICAgICBwcmV2W2N1cnJdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgfSwge30pO1xuICAgIGNvbnN0IGVycm9yUHJvcExpc3QgPSAoYXJyKSA9PiBhcnIubGVuZ3RoID4gMSA/IGBwcm9wZXJ0aWVzICcke2Fyci5qb2luKFwiJywgJ1wiKX0nYCA6IGBwcm9wZXJ0eSAnJHthcnJbMF19J2A7XG4gICAgY29uc3QgcHJvcGVydHlIYXNoID0gYXJyYXlUb0hhc2gocHJvcGVydGllcyk7XG4gICAgY29uc3Qgb3JkZXJGaWx0ZXJlZCA9IG9yZGVyLmZpbHRlcigocHJvcCkgPT4gcHJvcCA9PT0gJyonIHx8IHByb3BlcnR5SGFzaFtwcm9wXSk7XG4gICAgY29uc3Qgb3JkZXJIYXNoID0gYXJyYXlUb0hhc2gob3JkZXJGaWx0ZXJlZCk7XG4gICAgY29uc3QgcmVzdCA9IHByb3BlcnRpZXMuZmlsdGVyKChwcm9wKSA9PiAhb3JkZXJIYXNoW3Byb3BdKTtcbiAgICBjb25zdCByZXN0SW5kZXggPSBvcmRlckZpbHRlcmVkLmluZGV4T2YoJyonKTtcbiAgICBpZiAocmVzdEluZGV4ID09PSAtMSkge1xuICAgICAgICBpZiAocmVzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgdWlTY2hlbWEgb3JkZXIgbGlzdCBkb2VzIG5vdCBjb250YWluICR7ZXJyb3JQcm9wTGlzdChyZXN0KX1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3JkZXJGaWx0ZXJlZDtcbiAgICB9XG4gICAgaWYgKHJlc3RJbmRleCAhPT0gb3JkZXJGaWx0ZXJlZC5sYXN0SW5kZXhPZignKicpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndWlTY2hlbWEgb3JkZXIgbGlzdCBjb250YWlucyBtb3JlIHRoYW4gb25lIHdpbGRjYXJkIGl0ZW0nKTtcbiAgICB9XG4gICAgY29uc3QgY29tcGxldGUgPSBbLi4ub3JkZXJGaWx0ZXJlZF07XG4gICAgY29tcGxldGUuc3BsaWNlKHJlc3RJbmRleCwgMSwgLi4ucmVzdCk7XG4gICAgcmV0dXJuIGNvbXBsZXRlO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9b3JkZXJQcm9wZXJ0aWVzLmpzLm1hcCIsIi8qKiBQYXJzZXMgdGhlIGBkYXRlU3RyaW5nYCBpbnRvIGEgYERhdGVPYmplY3RgLCBpbmNsdWRpbmcgdGhlIHRpbWUgaW5mb3JtYXRpb24gd2hlbiBgaW5jbHVkZVRpbWVgIGlzIHRydWVcbiAqXG4gKiBAcGFyYW0gZGF0ZVN0cmluZyAtIFRoZSBkYXRlIHN0cmluZyB0byBwYXJzZSBpbnRvIGEgRGF0ZU9iamVjdFxuICogQHBhcmFtIFtpbmNsdWRlVGltZT10cnVlXSAtIE9wdGlvbmFsIGZsYWcsIGlmIGZhbHNlLCB3aWxsIG5vdCBpbmNsdWRlIHRoZSB0aW1lIGRhdGEgaW50byB0aGUgb2JqZWN0XG4gKiBAcmV0dXJucyAtIFRoZSBkYXRlIHN0cmluZyBjb252ZXJ0ZWQgdG8gYSBgRGF0ZU9iamVjdGBcbiAqIEB0aHJvd3MgLSBFcnJvciB3aGVuIHRoZSBkYXRlIGNhbm5vdCBiZSBwYXJzZWQgZnJvbSB0aGUgc3RyaW5nXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhcnNlRGF0ZVN0cmluZyhkYXRlU3RyaW5nLCBpbmNsdWRlVGltZSA9IHRydWUpIHtcbiAgICBpZiAoIWRhdGVTdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHllYXI6IC0xLFxuICAgICAgICAgICAgbW9udGg6IC0xLFxuICAgICAgICAgICAgZGF5OiAtMSxcbiAgICAgICAgICAgIGhvdXI6IGluY2x1ZGVUaW1lID8gLTEgOiAwLFxuICAgICAgICAgICAgbWludXRlOiBpbmNsdWRlVGltZSA/IC0xIDogMCxcbiAgICAgICAgICAgIHNlY29uZDogaW5jbHVkZVRpbWUgPyAtMSA6IDAsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXRlU3RyaW5nKTtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKGRhdGUuZ2V0VGltZSgpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBwYXJzZSBkYXRlICcgKyBkYXRlU3RyaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeWVhcjogZGF0ZS5nZXRVVENGdWxsWWVhcigpLFxuICAgICAgICBtb250aDogZGF0ZS5nZXRVVENNb250aCgpICsgMSxcbiAgICAgICAgZGF5OiBkYXRlLmdldFVUQ0RhdGUoKSxcbiAgICAgICAgaG91cjogaW5jbHVkZVRpbWUgPyBkYXRlLmdldFVUQ0hvdXJzKCkgOiAwLFxuICAgICAgICBtaW51dGU6IGluY2x1ZGVUaW1lID8gZGF0ZS5nZXRVVENNaW51dGVzKCkgOiAwLFxuICAgICAgICBzZWNvbmQ6IGluY2x1ZGVUaW1lID8gZGF0ZS5nZXRVVENTZWNvbmRzKCkgOiAwLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXJzZURhdGVTdHJpbmcuanMubWFwIiwiLyoqIENoZWNrIHRvIHNlZSBpZiBhIGBzY2hlbWFgIHNwZWNpZmllcyB0aGF0IGEgdmFsdWUgbXVzdCBiZSB0cnVlLiBUaGlzIGhhcHBlbnMgd2hlbjpcbiAqIC0gYHNjaGVtYS5jb25zdGAgaXMgdHJ1dGh5XG4gKiAtIGBzY2hlbWEuZW51bWAgPT0gYFt0cnVlXWBcbiAqIC0gYHNjaGVtYS5hbnlPZmAgb3IgYHNjaGVtYS5vbmVPZmAgaGFzIGEgc2luZ2xlIHZhbHVlIHdoaWNoIHJlY3Vyc2l2ZWx5IHJldHVybnMgdHJ1ZVxuICogLSBgc2NoZW1hLmFsbE9mYCBoYXMgYXQgbGVhc3Qgb25lIHZhbHVlIHdoaWNoIHJlY3Vyc2l2ZWx5IHJldHVybnMgdHJ1ZVxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIHRvIGNoZWNrXG4gKiBAcmV0dXJucyAtIFRydWUgaWYgdGhlIHNjaGVtYSBzcGVjaWZpZXMgYSB2YWx1ZSB0aGF0IG11c3QgYmUgdHJ1ZSwgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNjaGVtYVJlcXVpcmVzVHJ1ZVZhbHVlKHNjaGVtYSkge1xuICAgIC8vIENoZWNrIGlmIGNvbnN0IGlzIGEgdHJ1dGh5IHZhbHVlXG4gICAgaWYgKHNjaGVtYS5jb25zdCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gQ2hlY2sgaWYgYW4gZW51bSBoYXMgYSBzaW5nbGUgdmFsdWUgb2YgdHJ1ZVxuICAgIGlmIChzY2hlbWEuZW51bSAmJiBzY2hlbWEuZW51bS5sZW5ndGggPT09IDEgJiYgc2NoZW1hLmVudW1bMF0gPT09IHRydWUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vIElmIGFueU9mIGhhcyBhIHNpbmdsZSB2YWx1ZSwgZXZhbHVhdGUgdGhlIHN1YnNjaGVtYVxuICAgIGlmIChzY2hlbWEuYW55T2YgJiYgc2NoZW1hLmFueU9mLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gc2NoZW1hUmVxdWlyZXNUcnVlVmFsdWUoc2NoZW1hLmFueU9mWzBdKTtcbiAgICB9XG4gICAgLy8gSWYgb25lT2YgaGFzIGEgc2luZ2xlIHZhbHVlLCBldmFsdWF0ZSB0aGUgc3Vic2NoZW1hXG4gICAgaWYgKHNjaGVtYS5vbmVPZiAmJiBzY2hlbWEub25lT2YubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWFSZXF1aXJlc1RydWVWYWx1ZShzY2hlbWEub25lT2ZbMF0pO1xuICAgIH1cbiAgICAvLyBFdmFsdWF0ZSBlYWNoIHN1YnNjaGVtYSBpbiBhbGxPZiwgdG8gc2VlIGlmIG9uZSBvZiB0aGVtIHJlcXVpcmVzIGEgdHJ1ZSB2YWx1ZVxuICAgIGlmIChzY2hlbWEuYWxsT2YpIHtcbiAgICAgICAgY29uc3Qgc2NoZW1hU29tZSA9IChzdWJTY2hlbWEpID0+IHNjaGVtYVJlcXVpcmVzVHJ1ZVZhbHVlKHN1YlNjaGVtYSk7XG4gICAgICAgIHJldHVybiBzY2hlbWEuYWxsT2Yuc29tZShzY2hlbWFTb21lKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2NoZW1hUmVxdWlyZXNUcnVlVmFsdWUuanMubWFwIiwiaW1wb3J0IGRlZXBFcXVhbHMgZnJvbSAnLi9kZWVwRXF1YWxzJztcbi8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIGBjb21wb25lbnRgIHNob3VsZCBiZSByZXJlbmRlcmVkIGJ5IGNvbXBhcmluZyBpdHMgY3VycmVudCBzZXQgb2YgcHJvcHMgYW5kIHN0YXRlXG4gKiBhZ2FpbnN0IHRoZSBuZXh0IHNldC4gSWYgZWl0aGVyIG9mIHRob3NlIHR3byBzZXRzIGFyZSBub3QgdGhlIHNhbWUsIHRoZW4gdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgcmVyZW5kZXJlZC5cbiAqXG4gKiBAcGFyYW0gY29tcG9uZW50IC0gQSBSZWFjdCBjb21wb25lbnQgYmVpbmcgY2hlY2tlZFxuICogQHBhcmFtIG5leHRQcm9wcyAtIFRoZSBuZXh0IHNldCBvZiBwcm9wcyBhZ2FpbnN0IHdoaWNoIHRvIGNoZWNrXG4gKiBAcGFyYW0gbmV4dFN0YXRlIC0gVGhlIG5leHQgc2V0IG9mIHN0YXRlIGFnYWluc3Qgd2hpY2ggdG8gY2hlY2tcbiAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCBiZSByZS1yZW5kZXJlZCwgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNob3VsZFJlbmRlcihjb21wb25lbnQsIG5leHRQcm9wcywgbmV4dFN0YXRlKSB7XG4gICAgY29uc3QgeyBwcm9wcywgc3RhdGUgfSA9IGNvbXBvbmVudDtcbiAgICByZXR1cm4gIWRlZXBFcXVhbHMocHJvcHMsIG5leHRQcm9wcykgfHwgIWRlZXBFcXVhbHMoc3RhdGUsIG5leHRTdGF0ZSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zaG91bGRSZW5kZXIuanMubWFwIiwiLyoqIFJldHVybnMgYSBVVEMgZGF0ZSBzdHJpbmcgZm9yIHRoZSBnaXZlbiBgZGF0ZU9iamVjdGAuIElmIGB0aW1lYCBpcyBmYWxzZSwgdGhlbiB0aGUgdGltZSBwb3J0aW9uIG9mIHRoZSBzdHJpbmcgaXNcbiAqIHJlbW92ZWQuXG4gKlxuICogQHBhcmFtIGRhdGVPYmplY3QgLSBUaGUgYERhdGVPYmplY3RgIHRvIGNvbnZlcnQgdG8gYSBkYXRlIHN0cmluZ1xuICogQHBhcmFtIFt0aW1lPXRydWVdIC0gT3B0aW9uYWwgZmxhZyB1c2VkIHRvIHJlbW92ZSB0aGUgdGltZSBwb3J0aW9uIG9mIHRoZSBkYXRlIHN0cmluZyBpZiBmYWxzZVxuICogQHJldHVybnMgLSBUaGUgVVRDIGRhdGUgc3RyaW5nXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvRGF0ZVN0cmluZyhkYXRlT2JqZWN0LCB0aW1lID0gdHJ1ZSkge1xuICAgIGNvbnN0IHsgeWVhciwgbW9udGgsIGRheSwgaG91ciA9IDAsIG1pbnV0ZSA9IDAsIHNlY29uZCA9IDAgfSA9IGRhdGVPYmplY3Q7XG4gICAgY29uc3QgdXRjVGltZSA9IERhdGUuVVRDKHllYXIsIG1vbnRoIC0gMSwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCk7XG4gICAgY29uc3QgZGF0ZXRpbWUgPSBuZXcgRGF0ZSh1dGNUaW1lKS50b0pTT04oKTtcbiAgICByZXR1cm4gdGltZSA/IGRhdGV0aW1lIDogZGF0ZXRpbWUuc2xpY2UoMCwgMTApO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dG9EYXRlU3RyaW5nLmpzLm1hcCIsImltcG9ydCBpc1BsYWluT2JqZWN0IGZyb20gJ2xvZGFzaC9pc1BsYWluT2JqZWN0JztcbmltcG9ydCB7IEVSUk9SU19LRVkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKiogQ29udmVydHMgYW4gYGVycm9yU2NoZW1hYCBpbnRvIGEgbGlzdCBvZiBgUkpTRlZhbGlkYXRpb25FcnJvcnNgXG4gKlxuICogQHBhcmFtIGVycm9yU2NoZW1hIC0gVGhlIGBFcnJvclNjaGVtYWAgaW5zdGFuY2UgdG8gY29udmVydFxuICogQHBhcmFtIFtmaWVsZFBhdGg9W11dIC0gVGhlIGN1cnJlbnQgZmllbGQgcGF0aCwgZGVmYXVsdHMgdG8gW10gaWYgbm90IHNwZWNpZmllZFxuICogQHJldHVybnMgLSBUaGUgbGlzdCBvZiBgUkpTRlZhbGlkYXRpb25FcnJvcnNgIGV4dHJhY3RlZCBmcm9tIHRoZSBgZXJyb3JTY2hlbWFgXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvRXJyb3JMaXN0KGVycm9yU2NoZW1hLCBmaWVsZFBhdGggPSBbXSkge1xuICAgIGlmICghZXJyb3JTY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBsZXQgZXJyb3JMaXN0ID0gW107XG4gICAgaWYgKEVSUk9SU19LRVkgaW4gZXJyb3JTY2hlbWEpIHtcbiAgICAgICAgZXJyb3JMaXN0ID0gZXJyb3JMaXN0LmNvbmNhdChlcnJvclNjaGVtYVtFUlJPUlNfS0VZXS5tYXAoKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5ID0gYC4ke2ZpZWxkUGF0aC5qb2luKCcuJyl9YDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcHJvcGVydHksXG4gICAgICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgICAgICBzdGFjazogYCR7cHJvcGVydHl9ICR7bWVzc2FnZX1gLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSkpO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZXJyb3JTY2hlbWEpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKGtleSAhPT0gRVJST1JTX0tFWSkge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRTY2hlbWEgPSBlcnJvclNjaGVtYVtrZXldO1xuICAgICAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QoY2hpbGRTY2hlbWEpKSB7XG4gICAgICAgICAgICAgICAgYWNjID0gYWNjLmNvbmNhdCh0b0Vycm9yTGlzdChjaGlsZFNjaGVtYSwgWy4uLmZpZWxkUGF0aCwga2V5XSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgZXJyb3JMaXN0KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRvRXJyb3JMaXN0LmpzLm1hcCIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgY29weUFycmF5ID0gcmVxdWlyZSgnLi9fY29weUFycmF5JyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpLFxuICAgIHN0cmluZ1RvUGF0aCA9IHJlcXVpcmUoJy4vX3N0cmluZ1RvUGF0aCcpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKSxcbiAgICB0b1N0cmluZyA9IHJlcXVpcmUoJy4vdG9TdHJpbmcnKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9QYXRoKCdhLmIuYycpO1xuICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gKlxuICogXy50b1BhdGgoJ2FbMF0uYi5jJyk7XG4gKiAvLyA9PiBbJ2EnLCAnMCcsICdiJywgJ2MnXVxuICovXG5mdW5jdGlvbiB0b1BhdGgodmFsdWUpIHtcbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIGFycmF5TWFwKHZhbHVlLCB0b0tleSk7XG4gIH1cbiAgcmV0dXJuIGlzU3ltYm9sKHZhbHVlKSA/IFt2YWx1ZV0gOiBjb3B5QXJyYXkoc3RyaW5nVG9QYXRoKHRvU3RyaW5nKHZhbHVlKSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvUGF0aDtcbiIsImltcG9ydCB0b1BhdGggZnJvbSAnbG9kYXNoL3RvUGF0aCc7XG5pbXBvcnQgRXJyb3JTY2hlbWFCdWlsZGVyIGZyb20gJy4vRXJyb3JTY2hlbWFCdWlsZGVyJztcbi8qKiBUcmFuc2Zvcm1zIGEgcmpzZiB2YWxpZGF0aW9uIGVycm9ycyBsaXN0OlxuICogW1xuICogICB7cHJvcGVydHk6ICcubGV2ZWwxLmxldmVsMlsyXS5sZXZlbDMnLCBtZXNzYWdlOiAnZXJyIGEnfSxcbiAqICAge3Byb3BlcnR5OiAnLmxldmVsMS5sZXZlbDJbMl0ubGV2ZWwzJywgbWVzc2FnZTogJ2VyciBiJ30sXG4gKiAgIHtwcm9wZXJ0eTogJy5sZXZlbDEubGV2ZWwyWzRdLmxldmVsMycsIG1lc3NhZ2U6ICdlcnIgYid9LFxuICogXVxuICogSW50byBhbiBlcnJvciB0cmVlOlxuICoge1xuICogICBsZXZlbDE6IHtcbiAqICAgICBsZXZlbDI6IHtcbiAqICAgICAgIDI6IHtsZXZlbDM6IHtlcnJvcnM6IFsnZXJyIGEnLCAnZXJyIGInXX19LFxuICogICAgICAgNDoge2xldmVsMzoge2Vycm9yczogWydlcnIgYiddfX0sXG4gKiAgICAgfVxuICogICB9XG4gKiB9O1xuICpcbiAqIEBwYXJhbSBlcnJvcnMgLSBUaGUgbGlzdCBvZiBSSlNGVmFsaWRhdGlvbkVycm9yIG9iamVjdHNcbiAqIEByZXR1cm5zIC0gVGhlIGBFcnJvclNjaGVtYWAgYnVpbHQgZnJvbSB0aGUgbGlzdCBvZiBgUkpTRlZhbGlkYXRpb25FcnJvcnNgXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvRXJyb3JTY2hlbWEoZXJyb3JzKSB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBFcnJvclNjaGVtYUJ1aWxkZXIoKTtcbiAgICBpZiAoZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICBlcnJvcnMuZm9yRWFjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgcHJvcGVydHksIG1lc3NhZ2UgfSA9IGVycm9yO1xuICAgICAgICAgICAgLy8gV2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHJvb3QgZWxlbWVudCwganVzdCB1c2UgYW4gZW1wdHkgYXJyYXkgZm9yIHRoZSBwYXRoXG4gICAgICAgICAgICBjb25zdCBwYXRoID0gcHJvcGVydHkgPT09ICcuJyA/IFtdIDogdG9QYXRoKHByb3BlcnR5KTtcbiAgICAgICAgICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBhdCB0aGUgcm9vdCAoLmxldmVsMSkgdGhlbiB0b1BhdGggY3JlYXRlc1xuICAgICAgICAgICAgLy8gYW4gZW1wdHkgYXJyYXkgZWxlbWVudCBhdCB0aGUgZmlyc3QgaW5kZXguIFJlbW92ZSBpdC5cbiAgICAgICAgICAgIGlmIChwYXRoLmxlbmd0aCA+IDAgJiYgcGF0aFswXSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICBwYXRoLnNwbGljZSgwLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgYnVpbGRlci5hZGRFcnJvcnMobWVzc2FnZSwgcGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gYnVpbGRlci5FcnJvclNjaGVtYTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRvRXJyb3JTY2hlbWEuanMubWFwIiwiaW1wb3J0IGlzUGxhaW5PYmplY3QgZnJvbSAnbG9kYXNoL2lzUGxhaW5PYmplY3QnO1xuLyoqIFVud3JhcHMgdGhlIGBlcnJvckhhbmRsZXJgIHN0cnVjdHVyZSBpbnRvIHRoZSBhc3NvY2lhdGVkIGBFcnJvclNjaGVtYWAsIHN0cmlwcGluZyB0aGUgYGFkZEVycm9yKClgIGZ1bmN0aW9ucyBmcm9tIGl0XG4gKlxuICogQHBhcmFtIGVycm9ySGFuZGxlciAtIFRoZSBgRm9ybVZhbGlkYXRpb25gIGVycm9yIGhhbmRsaW5nIHN0cnVjdHVyZVxuICogQHJldHVybnMgLSBUaGUgYEVycm9yU2NoZW1hYCByZXN1bHRpbmcgZnJvbSB0aGUgc3RyaXBwaW5nIG9mIHRoZSBgYWRkRXJyb3IoKWAgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdW53cmFwRXJyb3JIYW5kbGVyKGVycm9ySGFuZGxlcikge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhlcnJvckhhbmRsZXIpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ2FkZEVycm9yJykge1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkU2NoZW1hID0gZXJyb3JIYW5kbGVyW2tleV07XG4gICAgICAgICAgICBpZiAoaXNQbGFpbk9iamVjdChjaGlsZFNjaGVtYSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgICAgIFtrZXldOiB1bndyYXBFcnJvckhhbmRsZXIoY2hpbGRTY2hlbWEpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geyAuLi5hY2MsIFtrZXldOiBjaGlsZFNjaGVtYSB9O1xuICAgICAgICB9XG4gICAgfSwge30pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dW53cmFwRXJyb3JIYW5kbGVyLmpzLm1hcCIsImltcG9ydCBwYWQgZnJvbSAnLi9wYWQnO1xuLyoqIENvbnZlcnRzIGEgVVRDIGRhdGUgc3RyaW5nIGludG8gYSBsb2NhbCBEYXRlIGZvcm1hdFxuICpcbiAqIEBwYXJhbSBqc29uRGF0ZSAtIEEgVVRDIGRhdGUgc3RyaW5nXG4gKiBAcmV0dXJucyAtIEFuIGVtcHR5IHN0cmluZyB3aGVuIGBqc29uRGF0ZWAgaXMgZmFsc2V5LCBvdGhlcndpc2UgYSBkYXRlIHN0cmluZyBpbiBsb2NhbCBmb3JtYXRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXRjVG9Mb2NhbChqc29uRGF0ZSkge1xuICAgIGlmICghanNvbkRhdGUpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICAvLyByZXF1aXJlZCBmb3JtYXQgb2YgYCd5eXl5LU1NLWRkVGhoOm1tJyBmb2xsb3dlZCBieSBvcHRpb25hbCAnOnNzJyBvciAnOnNzLlNTUydcbiAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbnB1dC5odG1sI2xvY2FsLWRhdGUtYW5kLXRpbWUtc3RhdGUtKHR5cGUlM0RkYXRldGltZS1sb2NhbClcbiAgICAvLyA+IHNob3VsZCBiZSBhIF92YWxpZCBsb2NhbCBkYXRlIGFuZCB0aW1lIHN0cmluZ18gKG5vdCBHTVQpXG4gICAgLy8gTm90ZSAtIGRhdGUgY29uc3RydWN0b3IgcGFzc2VkIGxvY2FsIElTTy04NjAxIGRvZXMgbm90IGNvcnJlY3RseVxuICAgIC8vIGNoYW5nZSB0aW1lIHRvIFVUQyBpbiBub2RlIHByZS04XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGpzb25EYXRlKTtcbiAgICBjb25zdCB5eXl5ID0gcGFkKGRhdGUuZ2V0RnVsbFllYXIoKSwgNCk7XG4gICAgY29uc3QgTU0gPSBwYWQoZGF0ZS5nZXRNb250aCgpICsgMSwgMik7XG4gICAgY29uc3QgZGQgPSBwYWQoZGF0ZS5nZXREYXRlKCksIDIpO1xuICAgIGNvbnN0IGhoID0gcGFkKGRhdGUuZ2V0SG91cnMoKSwgMik7XG4gICAgY29uc3QgbW0gPSBwYWQoZGF0ZS5nZXRNaW51dGVzKCksIDIpO1xuICAgIGNvbnN0IHNzID0gcGFkKGRhdGUuZ2V0U2Vjb25kcygpLCAyKTtcbiAgICBjb25zdCBTU1MgPSBwYWQoZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSwgMyk7XG4gICAgcmV0dXJuIGAke3l5eXl9LSR7TU19LSR7ZGR9VCR7aGh9OiR7bW19OiR7c3N9LiR7U1NTfWA7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11dGNUb0xvY2FsLmpzLm1hcCIsImltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCBtZXJnZU9iamVjdHMgZnJvbSAnLi9tZXJnZU9iamVjdHMnO1xuaW1wb3J0IHRvRXJyb3JMaXN0IGZyb20gJy4vdG9FcnJvckxpc3QnO1xuLyoqIE1lcmdlcyB0aGUgZXJyb3JzIGluIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIGludG8gdGhlIGV4aXN0aW5nIGB2YWxpZGF0aW9uRGF0YWAgYnkgY29tYmluaW5nIHRoZSBoaWVyYXJjaGllcyBpbiB0aGVcbiAqIHR3byBgRXJyb3JTY2hlbWFgcyBhbmQgdGhlbiBhcHBlbmRpbmcgdGhlIGVycm9yIGxpc3QgZnJvbSB0aGUgYGFkZGl0aW9uYWxFcnJvclNjaGVtYWAgb2J0YWluZWQgYnkgY2FsbGluZ1xuICogYHRvRXJyb3JMaXN0KClgIG9uIHRoZSBgZXJyb3JzYCBpbiB0aGUgYHZhbGlkYXRpb25EYXRhYC4gSWYgbm8gYGFkZGl0aW9uYWxFcnJvclNjaGVtYWAgaXMgcGFzc2VkLCB0aGVuXG4gKiBgdmFsaWRhdGlvbkRhdGFgIGlzIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSB2YWxpZGF0aW9uRGF0YSAtIFRoZSBjdXJyZW50IGBWYWxpZGF0aW9uRGF0YWAgaW50byB3aGljaCB0byBtZXJnZSB0aGUgYWRkaXRpb25hbCBlcnJvcnNcbiAqIEBwYXJhbSBbYWRkaXRpb25hbEVycm9yU2NoZW1hXSAtIFRoZSBvcHRpb25hbCBhZGRpdGlvbmFsIHNldCBvZiBlcnJvcnMgaW4gYW4gYEVycm9yU2NoZW1hYFxuICogQHJldHVybnMgLSBUaGUgYHZhbGlkYXRpb25EYXRhYCB3aXRoIHRoZSBhZGRpdGlvbmFsIGVycm9ycyBmcm9tIGBhZGRpdGlvbmFsRXJyb3JTY2hlbWFgIG1lcmdlZCBpbnRvIGl0LCBpZiBwcm92aWRlZC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmFsaWRhdGlvbkRhdGFNZXJnZSh2YWxpZGF0aW9uRGF0YSwgYWRkaXRpb25hbEVycm9yU2NoZW1hKSB7XG4gICAgaWYgKCFhZGRpdGlvbmFsRXJyb3JTY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25EYXRhO1xuICAgIH1cbiAgICBjb25zdCB7IGVycm9yczogb2xkRXJyb3JzLCBlcnJvclNjaGVtYTogb2xkRXJyb3JTY2hlbWEgfSA9IHZhbGlkYXRpb25EYXRhO1xuICAgIGxldCBlcnJvcnMgPSB0b0Vycm9yTGlzdChhZGRpdGlvbmFsRXJyb3JTY2hlbWEpO1xuICAgIGxldCBlcnJvclNjaGVtYSA9IGFkZGl0aW9uYWxFcnJvclNjaGVtYTtcbiAgICBpZiAoIWlzRW1wdHkob2xkRXJyb3JTY2hlbWEpKSB7XG4gICAgICAgIGVycm9yU2NoZW1hID0gbWVyZ2VPYmplY3RzKG9sZEVycm9yU2NoZW1hLCBhZGRpdGlvbmFsRXJyb3JTY2hlbWEsIHRydWUpO1xuICAgICAgICBlcnJvcnMgPSBbLi4ub2xkRXJyb3JzXS5jb25jYXQoZXJyb3JzKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZXJyb3JTY2hlbWEsIGVycm9ycyB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dmFsaWRhdGlvbkRhdGFNZXJnZS5qcy5tYXAiLCJpbXBvcnQgeyBSRUZfS0VZLCBST09UX1NDSEVNQV9QUkVGSVggfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnbG9kYXNoL2lzT2JqZWN0Jztcbi8qKiBUYWtlcyBhIGBub2RlYCBvYmplY3QgYW5kIHRyYW5zZm9ybXMgYW55IGNvbnRhaW5lZCBgJHJlZmAgbm9kZSB2YXJpYWJsZXMgd2l0aCBhIHByZWZpeCwgcmVjdXJzaXZlbHkgY2FsbGluZ1xuICogYHdpdGhJZFJlZlByZWZpeGAgZm9yIGFueSBvdGhlciBlbGVtZW50cy5cbiAqXG4gKiBAcGFyYW0gbm9kZSAtIFRoZSBvYmplY3Qgbm9kZSB0byB3aGljaCBhIFJPT1RfU0NIRU1BX1BSRUZJWCBpcyBhZGRlZCB3aGVuIGEgUkVGX0tFWSBpcyBwYXJ0IG9mIGl0XG4gKi9cbmZ1bmN0aW9uIHdpdGhJZFJlZlByZWZpeE9iamVjdChub2RlKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gbm9kZSkge1xuICAgICAgICBjb25zdCByZWFsT2JqID0gbm9kZTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSByZWFsT2JqW2tleV07XG4gICAgICAgIGlmIChrZXkgPT09IFJFRl9LRVkgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5zdGFydHNXaXRoKCcjJykpIHtcbiAgICAgICAgICAgIHJlYWxPYmpba2V5XSA9IFJPT1RfU0NIRU1BX1BSRUZJWCArIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVhbE9ialtrZXldID0gd2l0aElkUmVmUHJlZml4KHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbm9kZTtcbn1cbi8qKiBUYWtlcyBhIGBub2RlYCBvYmplY3QgbGlzdCBhbmQgdHJhbnNmb3JtcyBhbnkgY29udGFpbmVkIGAkcmVmYCBub2RlIHZhcmlhYmxlcyB3aXRoIGEgcHJlZml4LCByZWN1cnNpdmVseSBjYWxsaW5nXG4gKiBgd2l0aElkUmVmUHJlZml4YCBmb3IgYW55IG90aGVyIGVsZW1lbnRzLlxuICpcbiAqIEBwYXJhbSBub2RlIC0gVGhlIGxpc3Qgb2Ygb2JqZWN0IG5vZGVzIHRvIHdoaWNoIGEgUk9PVF9TQ0hFTUFfUFJFRklYIGlzIGFkZGVkIHdoZW4gYSBSRUZfS0VZIGlzIHBhcnQgb2YgaXRcbiAqL1xuZnVuY3Rpb24gd2l0aElkUmVmUHJlZml4QXJyYXkobm9kZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBub2RlW2ldID0gd2l0aElkUmVmUHJlZml4KG5vZGVbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZTtcbn1cbi8qKiBSZWN1cnNpdmVseSBwcmVmaXhlcyBhbGwgYCRyZWZgcyBpbiBhIHNjaGVtYSB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgYFJPT1RfU0NIRU1BX1BSRUZJWGAgY29uc3RhbnQuXG4gKiBUaGlzIGlzIHVzZWQgaW4gaXNWYWxpZCB0byBtYWtlIHJlZmVyZW5jZXMgdG8gdGhlIHJvb3RTY2hlbWFcbiAqXG4gKiBAcGFyYW0gc2NoZW1hTm9kZSAtIFRoZSBvYmplY3Qgbm9kZSB0byB3aGljaCBhIFJPT1RfU0NIRU1BX1BSRUZJWCBpcyBhZGRlZCB3aGVuIGEgUkVGX0tFWSBpcyBwYXJ0IG9mIGl0XG4gKiBAcmV0dXJucyAtIEEgY29weSBvZiB0aGUgYHNjaGVtYU5vZGVgIHdpdGggdXBkYXRlZCBgJHJlZmBzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHdpdGhJZFJlZlByZWZpeChzY2hlbWFOb2RlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hTm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIHdpdGhJZFJlZlByZWZpeEFycmF5KFsuLi5zY2hlbWFOb2RlXSk7XG4gICAgfVxuICAgIGlmIChpc09iamVjdChzY2hlbWFOb2RlKSkge1xuICAgICAgICByZXR1cm4gd2l0aElkUmVmUHJlZml4T2JqZWN0KHsgLi4uc2NoZW1hTm9kZSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHNjaGVtYU5vZGU7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD13aXRoSWRSZWZQcmVmaXguanMubWFwIiwiLyoqIEFuIGVudW1lcmF0aW9uIG9mIGFsbCB0aGUgdHJhbnNsYXRhYmxlIHN0cmluZ3MgdXNlZCBieSBgQHJqc2YvY29yZWAgYW5kIGl0cyB0aGVtZXMuIFRoZSB2YWx1ZSBvZiBlYWNoIG9mIHRoZVxuICogZW51bWVyYXRpb24ga2V5cyBpcyBleHBlY3RlZCB0byBiZSB0aGUgYWN0dWFsIGVuZ2xpc2ggc3RyaW5nLiBTb21lIHN0cmluZ3MgY29udGFpbiByZXBsYWNlYWJsZSBwYXJhbWV0ZXIgdmFsdWVzXG4gKiBhcyBpbmRpY2F0ZWQgYnkgYCUxYCwgYCUyYCwgZXRjLiBUaGUgbnVtYmVyIGFmdGVyIHRoZSBgJWAgaW5kaWNhdGVzIHRoZSBvcmRlciBvZiB0aGUgcGFyYW1ldGVyLiBUaGUgb3JkZXJpbmcgb2ZcbiAqIHBhcmFtZXRlcnMgaXMgaW1wb3J0YW50IGJlY2F1c2Ugc29tZSBsYW5ndWFnZXMgbWF5IGNob29zZSB0byBwdXQgdGhlIHNlY29uZCBwYXJhbWV0ZXIgYmVmb3JlIHRoZSBmaXJzdCBpbiBpdHNcbiAqIHRyYW5zbGF0aW9uLiBBbHNvLCBzb21lIHN0cmluZ3MgYXJlIHJlbmRlcmVkIHVzaW5nIGBtYXJrZG93bi10by1qc3hgIGFuZCB0aHVzIHN1cHBvcnQgbWFya2Rvd24gYW5kIGlubGluZSBodG1sLlxuICovXG5leHBvcnQgdmFyIFRyYW5zbGF0YWJsZVN0cmluZztcbihmdW5jdGlvbiAoVHJhbnNsYXRhYmxlU3RyaW5nKSB7XG4gICAgLyoqIEZhbGxiYWNrIHRpdGxlIG9mIGFuIGFycmF5IGl0ZW0sIHVzZWQgYnkgQXJyYXlGaWVsZCAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIkFycmF5SXRlbVRpdGxlXCJdID0gXCJJdGVtXCI7XG4gICAgLyoqIE1pc3NpbmcgaXRlbXMgcmVhc29uLCB1c2VkIGJ5IEFycmF5RmllbGQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJNaXNzaW5nSXRlbXNcIl0gPSBcIk1pc3NpbmcgaXRlbXMgZGVmaW5pdGlvblwiO1xuICAgIC8qKiBZZXMgbGFiZWwsIHVzZWQgYnkgQm9vbGVhbkZpZWxkICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiWWVzTGFiZWxcIl0gPSBcIlllc1wiO1xuICAgIC8qKiBObyBsYWJlbCwgdXNlZCBieSBCb29sZWFuRmllbGQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJOb0xhYmVsXCJdID0gXCJOb1wiO1xuICAgIC8qKiBDbG9zZSBsYWJlbCwgdXNlZCBieSBFcnJvckxpc3QgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJDbG9zZUxhYmVsXCJdID0gXCJDbG9zZVwiO1xuICAgIC8qKiBFcnJvcnMgbGFiZWwsIHVzZWQgYnkgRXJyb3JMaXN0ICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiRXJyb3JzTGFiZWxcIl0gPSBcIkVycm9yc1wiO1xuICAgIC8qKiBOZXcgYWRkaXRpb25hbFByb3BlcnRpZXMgc3RyaW5nIGRlZmF1bHQgdmFsdWUsIHVzZWQgYnkgT2JqZWN0RmllbGQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJOZXdTdHJpbmdEZWZhdWx0XCJdID0gXCJOZXcgVmFsdWVcIjtcbiAgICAvKiogQWRkIGJ1dHRvbiB0aXRsZSwgdXNlZCBieSBBZGRCdXR0b24gKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJBZGRCdXR0b25cIl0gPSBcIkFkZFwiO1xuICAgIC8qKiBBZGQgYnV0dG9uIHRpdGxlLCB1c2VkIGJ5IEFkZEJ1dHRvbiAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIkFkZEl0ZW1CdXR0b25cIl0gPSBcIkFkZCBJdGVtXCI7XG4gICAgLyoqIENvcHkgYnV0dG9uIHRpdGxlLCB1c2VkIGJ5IEljb25CdXR0b24gKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJDb3B5QnV0dG9uXCJdID0gXCJDb3B5XCI7XG4gICAgLyoqIE1vdmUgZG93biBidXR0b24gdGl0bGUsIHVzZWQgYnkgSWNvbkJ1dHRvbiAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIk1vdmVEb3duQnV0dG9uXCJdID0gXCJNb3ZlIGRvd25cIjtcbiAgICAvKiogTW92ZSB1cCBidXR0b24gdGl0bGUsIHVzZWQgYnkgSWNvbkJ1dHRvbiAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIk1vdmVVcEJ1dHRvblwiXSA9IFwiTW92ZSB1cFwiO1xuICAgIC8qKiBSZW1vdmUgYnV0dG9uIHRpdGxlLCB1c2VkIGJ5IEljb25CdXR0b24gKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJSZW1vdmVCdXR0b25cIl0gPSBcIlJlbW92ZVwiO1xuICAgIC8qKiBOb3cgbGFiZWwsIHVzZWQgYnkgQWx0RGF0ZVdpZGdldCAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIk5vd0xhYmVsXCJdID0gXCJOb3dcIjtcbiAgICAvKiogQ2xlYXIgbGFiZWwsIHVzZWQgYnkgQWx0RGF0ZVdpZGdldCAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIkNsZWFyTGFiZWxcIl0gPSBcIkNsZWFyXCI7XG4gICAgLyoqIEFyaWEgZGF0ZSBsYWJlbCwgdXNlZCBieSBEYXRlV2lkZ2V0ICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiQXJpYURhdGVMYWJlbFwiXSA9IFwiU2VsZWN0IGEgZGF0ZVwiO1xuICAgIC8qKiBGaWxlIHByZXZpZXcgbGFiZWwsIHVzZWQgYnkgRmlsZVdpZGdldCAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIlByZXZpZXdMYWJlbFwiXSA9IFwiUHJldmlld1wiO1xuICAgIC8qKiBEZWNyZW1lbnQgYnV0dG9uIGFyaWEgbGFiZWwsIHVzZWQgYnkgVXBEb3duV2lkZ2V0ICovXG4gICAgVHJhbnNsYXRhYmxlU3RyaW5nW1wiRGVjcmVtZW50QXJpYUxhYmVsXCJdID0gXCJEZWNyZWFzZSB2YWx1ZSBieSAxXCI7XG4gICAgLyoqIEluY3JlbWVudCBidXR0b24gYXJpYSBsYWJlbCwgdXNlZCBieSBVcERvd25XaWRnZXQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJJbmNyZW1lbnRBcmlhTGFiZWxcIl0gPSBcIkluY3JlYXNlIHZhbHVlIGJ5IDFcIjtcbiAgICAvLyBTdHJpbmdzIHdpdGggcmVwbGFjZWFibGUgcGFyYW1ldGVyc1xuICAgIC8qKiBVbmtub3duIGZpZWxkIHR5cGUgcmVhc29uLCB3aGVyZSAlMSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIHR5cGUgYXMgcHJvdmlkZWQgYnkgU2NoZW1hRmllbGQgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJVbmtub3duRmllbGRUeXBlXCJdID0gXCJVbmtub3duIGZpZWxkIHR5cGUgJTFcIjtcbiAgICAvKiogT3B0aW9uIHByZWZpeCwgd2hlcmUgJTEgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBvcHRpb24gaW5kZXggYXMgcHJvdmlkZWQgYnkgTXVsdGlTY2hlbWFGaWVsZCAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIk9wdGlvblByZWZpeFwiXSA9IFwiT3B0aW9uICUxXCI7XG4gICAgLyoqIE9wdGlvbiBwcmVmaXgsIHdoZXJlICUxIGFuZCAlMiB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSBzY2hlbWEgdGl0bGUgYW5kIG9wdGlvbiBpbmRleCwgcmVzcGVjdGl2ZWx5IGFzIHByb3ZpZGVkIGJ5XG4gICAgICogTXVsdGlTY2hlbWFGaWVsZFxuICAgICAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIlRpdGxlT3B0aW9uUHJlZml4XCJdID0gXCIlMSBvcHRpb24gJTJcIjtcbiAgICAvKiogS2V5IGxhYmVsLCB3aGVyZSAlMSB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSBsYWJlbCBhcyBwcm92aWRlZCBieSBXcmFwSWZBZGRpdGlvbmFsVGVtcGxhdGUgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJLZXlMYWJlbFwiXSA9IFwiJTEgS2V5XCI7XG4gICAgLy8gU3RyaW5ncyB3aXRoIHJlcGxhY2VhYmxlIHBhcmFtZXRlcnMgQU5EL09SIHRoYXQgc3VwcG9ydCBtYXJrZG93biBhbmQgaHRtbFxuICAgIC8qKiBJbnZhbGlkIG9iamVjdCBmaWVsZCBjb25maWd1cmF0aW9uIGFzIHByb3ZpZGVkIGJ5IHRoZSBPYmplY3RGaWVsZC5cbiAgICAgKiBOT1RFOiBVc2UgbWFya2Rvd24gbm90YXRpb24gcmF0aGVyIHRoYW4gaHRtbCB0YWdzLlxuICAgICAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIkludmFsaWRPYmplY3RGaWVsZFwiXSA9IFwiSW52YWxpZCBcXFwiJTFcXFwiIG9iamVjdCBmaWVsZCBjb25maWd1cmF0aW9uOiBfJTJfLlwiO1xuICAgIC8qKiBVbnN1cHBvcnRlZCBmaWVsZCBzY2hlbWEsIHVzZWQgYnkgVW5zdXBwb3J0ZWRGaWVsZCAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIlVuc3VwcG9ydGVkRmllbGRcIl0gPSBcIlVuc3VwcG9ydGVkIGZpZWxkIHNjaGVtYS5cIjtcbiAgICAvKiogVW5zdXBwb3J0ZWQgZmllbGQgc2NoZW1hLCB3aGVyZSAlMSB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSBpZFNjaGVtYS4kaWQgYXMgcHJvdmlkZWQgYnkgVW5zdXBwb3J0ZWRGaWVsZC5cbiAgICAgKiBOT1RFOiBVc2UgbWFya2Rvd24gbm90YXRpb24gcmF0aGVyIHRoYW4gaHRtbCB0YWdzLlxuICAgICAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIlVuc3VwcG9ydGVkRmllbGRXaXRoSWRcIl0gPSBcIlVuc3VwcG9ydGVkIGZpZWxkIHNjaGVtYSBmb3IgZmllbGQgYCUxYC5cIjtcbiAgICAvKiogVW5zdXBwb3J0ZWQgZmllbGQgc2NoZW1hLCB3aGVyZSAlMSB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSByZWFzb24gc3RyaW5nIGFzIHByb3ZpZGVkIGJ5IFVuc3VwcG9ydGVkRmllbGQuXG4gICAgICogTk9URTogVXNlIG1hcmtkb3duIG5vdGF0aW9uIHJhdGhlciB0aGFuIGh0bWwgdGFncy5cbiAgICAgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJVbnN1cHBvcnRlZEZpZWxkV2l0aFJlYXNvblwiXSA9IFwiVW5zdXBwb3J0ZWQgZmllbGQgc2NoZW1hOiBfJTFfLlwiO1xuICAgIC8qKiBVbnN1cHBvcnRlZCBmaWVsZCBzY2hlbWEsIHdoZXJlICUxIGFuZCAlMiB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSBpZFNjaGVtYS4kaWQgYW5kIHJlYXNvbiBzdHJpbmdzLCByZXNwZWN0aXZlbHksXG4gICAgICogYXMgcHJvdmlkZWQgYnkgVW5zdXBwb3J0ZWRGaWVsZC5cbiAgICAgKiBOT1RFOiBVc2UgbWFya2Rvd24gbm90YXRpb24gcmF0aGVyIHRoYW4gaHRtbCB0YWdzLlxuICAgICAqL1xuICAgIFRyYW5zbGF0YWJsZVN0cmluZ1tcIlVuc3VwcG9ydGVkRmllbGRXaXRoSWRBbmRSZWFzb25cIl0gPSBcIlVuc3VwcG9ydGVkIGZpZWxkIHNjaGVtYSBmb3IgZmllbGQgYCUxYDogXyUyXy5cIjtcbiAgICAvKiogRmlsZSBuYW1lLCB0eXBlIGFuZCBzaXplIGluZm8sIHdoZXJlICUxLCAlMiBhbmQgJTMgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgZmlsZSBuYW1lLCBmaWxlIHR5cGUgYW5kIGZpbGUgc2l6ZSBhc1xuICAgICAqIHByb3ZpZGVkIGJ5IEZpbGVXaWRnZXRcbiAgICAgKi9cbiAgICBUcmFuc2xhdGFibGVTdHJpbmdbXCJGaWxlc0luZm9cIl0gPSBcIioqJTEqKiAoJTIsICUzIGJ5dGVzKVwiO1xufSkoVHJhbnNsYXRhYmxlU3RyaW5nIHx8IChUcmFuc2xhdGFibGVTdHJpbmcgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZW51bXMuanMubWFwIiwiLyoqIEBsaWNlbnNlIFVSSS5qcyB2NC40LjEgKGMpIDIwMTEgR2FyeSBDb3VydC4gTGljZW5zZTogaHR0cDovL2dpdGh1Yi5jb20vZ2FyeWNvdXJ0L3VyaS1qcyAqL1xuKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcblx0dHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gZmFjdG9yeShleHBvcnRzKSA6XG5cdHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJ2V4cG9ydHMnXSwgZmFjdG9yeSkgOlxuXHQoZmFjdG9yeSgoZ2xvYmFsLlVSSSA9IGdsb2JhbC5VUkkgfHwge30pKSk7XG59KHRoaXMsIChmdW5jdGlvbiAoZXhwb3J0cykgeyAndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIG1lcmdlKCkge1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBzZXRzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgIHNldHNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgaWYgKHNldHMubGVuZ3RoID4gMSkge1xuICAgICAgICBzZXRzWzBdID0gc2V0c1swXS5zbGljZSgwLCAtMSk7XG4gICAgICAgIHZhciB4bCA9IHNldHMubGVuZ3RoIC0gMTtcbiAgICAgICAgZm9yICh2YXIgeCA9IDE7IHggPCB4bDsgKyt4KSB7XG4gICAgICAgICAgICBzZXRzW3hdID0gc2V0c1t4XS5zbGljZSgxLCAtMSk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0c1t4bF0gPSBzZXRzW3hsXS5zbGljZSgxKTtcbiAgICAgICAgcmV0dXJuIHNldHMuam9pbignJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHNldHNbMF07XG4gICAgfVxufVxuZnVuY3Rpb24gc3ViZXhwKHN0cikge1xuICAgIHJldHVybiBcIig/OlwiICsgc3RyICsgXCIpXCI7XG59XG5mdW5jdGlvbiB0eXBlT2Yobykge1xuICAgIHJldHVybiBvID09PSB1bmRlZmluZWQgPyBcInVuZGVmaW5lZFwiIDogbyA9PT0gbnVsbCA/IFwibnVsbFwiIDogT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNwbGl0KFwiIFwiKS5wb3AoKS5zcGxpdChcIl1cIikuc2hpZnQoKS50b0xvd2VyQ2FzZSgpO1xufVxuZnVuY3Rpb24gdG9VcHBlckNhc2Uoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci50b1VwcGVyQ2FzZSgpO1xufVxuZnVuY3Rpb24gdG9BcnJheShvYmopIHtcbiAgICByZXR1cm4gb2JqICE9PSB1bmRlZmluZWQgJiYgb2JqICE9PSBudWxsID8gb2JqIGluc3RhbmNlb2YgQXJyYXkgPyBvYmogOiB0eXBlb2Ygb2JqLmxlbmd0aCAhPT0gXCJudW1iZXJcIiB8fCBvYmouc3BsaXQgfHwgb2JqLnNldEludGVydmFsIHx8IG9iai5jYWxsID8gW29ial0gOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChvYmopIDogW107XG59XG5mdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBzb3VyY2UpIHtcbiAgICB2YXIgb2JqID0gdGFyZ2V0O1xuICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgICAgICAgb2JqW2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBidWlsZEV4cHMoaXNJUkkpIHtcbiAgICB2YXIgQUxQSEEkJCA9IFwiW0EtWmEtel1cIixcbiAgICAgICAgQ1IkID0gXCJbXFxcXHgwRF1cIixcbiAgICAgICAgRElHSVQkJCA9IFwiWzAtOV1cIixcbiAgICAgICAgRFFVT1RFJCQgPSBcIltcXFxceDIyXVwiLFxuICAgICAgICBIRVhESUckJCA9IG1lcmdlKERJR0lUJCQsIFwiW0EtRmEtZl1cIiksXG4gICAgICAgIC8vY2FzZS1pbnNlbnNpdGl2ZVxuICAgIExGJCQgPSBcIltcXFxceDBBXVwiLFxuICAgICAgICBTUCQkID0gXCJbXFxcXHgyMF1cIixcbiAgICAgICAgUENUX0VOQ09ERUQkID0gc3ViZXhwKHN1YmV4cChcIiVbRUZlZl1cIiArIEhFWERJRyQkICsgXCIlXCIgKyBIRVhESUckJCArIEhFWERJRyQkICsgXCIlXCIgKyBIRVhESUckJCArIEhFWERJRyQkKSArIFwifFwiICsgc3ViZXhwKFwiJVs4OUEtRmEtZl1cIiArIEhFWERJRyQkICsgXCIlXCIgKyBIRVhESUckJCArIEhFWERJRyQkKSArIFwifFwiICsgc3ViZXhwKFwiJVwiICsgSEVYRElHJCQgKyBIRVhESUckJCkpLFxuICAgICAgICAvL2V4cGFuZGVkXG4gICAgR0VOX0RFTElNUyQkID0gXCJbXFxcXDpcXFxcL1xcXFw/XFxcXCNcXFxcW1xcXFxdXFxcXEBdXCIsXG4gICAgICAgIFNVQl9ERUxJTVMkJCA9IFwiW1xcXFwhXFxcXCRcXFxcJlxcXFwnXFxcXChcXFxcKVxcXFwqXFxcXCtcXFxcLFxcXFw7XFxcXD1dXCIsXG4gICAgICAgIFJFU0VSVkVEJCQgPSBtZXJnZShHRU5fREVMSU1TJCQsIFNVQl9ERUxJTVMkJCksXG4gICAgICAgIFVDU0NIQVIkJCA9IGlzSVJJID8gXCJbXFxcXHhBMC1cXFxcdTIwMERcXFxcdTIwMTAtXFxcXHUyMDI5XFxcXHUyMDJGLVxcXFx1RDdGRlxcXFx1RjkwMC1cXFxcdUZEQ0ZcXFxcdUZERjAtXFxcXHVGRkVGXVwiIDogXCJbXVwiLFxuICAgICAgICAvL3N1YnNldCwgZXhjbHVkZXMgYmlkaSBjb250cm9sIGNoYXJhY3RlcnNcbiAgICBJUFJJVkFURSQkID0gaXNJUkkgPyBcIltcXFxcdUUwMDAtXFxcXHVGOEZGXVwiIDogXCJbXVwiLFxuICAgICAgICAvL3N1YnNldFxuICAgIFVOUkVTRVJWRUQkJCA9IG1lcmdlKEFMUEhBJCQsIERJR0lUJCQsIFwiW1xcXFwtXFxcXC5cXFxcX1xcXFx+XVwiLCBVQ1NDSEFSJCQpLFxuICAgICAgICBTQ0hFTUUkID0gc3ViZXhwKEFMUEhBJCQgKyBtZXJnZShBTFBIQSQkLCBESUdJVCQkLCBcIltcXFxcK1xcXFwtXFxcXC5dXCIpICsgXCIqXCIpLFxuICAgICAgICBVU0VSSU5GTyQgPSBzdWJleHAoc3ViZXhwKFBDVF9FTkNPREVEJCArIFwifFwiICsgbWVyZ2UoVU5SRVNFUlZFRCQkLCBTVUJfREVMSU1TJCQsIFwiW1xcXFw6XVwiKSkgKyBcIipcIiksXG4gICAgICAgIERFQ19PQ1RFVCQgPSBzdWJleHAoc3ViZXhwKFwiMjVbMC01XVwiKSArIFwifFwiICsgc3ViZXhwKFwiMlswLTRdXCIgKyBESUdJVCQkKSArIFwifFwiICsgc3ViZXhwKFwiMVwiICsgRElHSVQkJCArIERJR0lUJCQpICsgXCJ8XCIgKyBzdWJleHAoXCJbMS05XVwiICsgRElHSVQkJCkgKyBcInxcIiArIERJR0lUJCQpLFxuICAgICAgICBERUNfT0NURVRfUkVMQVhFRCQgPSBzdWJleHAoc3ViZXhwKFwiMjVbMC01XVwiKSArIFwifFwiICsgc3ViZXhwKFwiMlswLTRdXCIgKyBESUdJVCQkKSArIFwifFwiICsgc3ViZXhwKFwiMVwiICsgRElHSVQkJCArIERJR0lUJCQpICsgXCJ8XCIgKyBzdWJleHAoXCIwP1sxLTldXCIgKyBESUdJVCQkKSArIFwifDA/MD9cIiArIERJR0lUJCQpLFxuICAgICAgICAvL3JlbGF4ZWQgcGFyc2luZyBydWxlc1xuICAgIElQVjRBRERSRVNTJCA9IHN1YmV4cChERUNfT0NURVRfUkVMQVhFRCQgKyBcIlxcXFwuXCIgKyBERUNfT0NURVRfUkVMQVhFRCQgKyBcIlxcXFwuXCIgKyBERUNfT0NURVRfUkVMQVhFRCQgKyBcIlxcXFwuXCIgKyBERUNfT0NURVRfUkVMQVhFRCQpLFxuICAgICAgICBIMTYkID0gc3ViZXhwKEhFWERJRyQkICsgXCJ7MSw0fVwiKSxcbiAgICAgICAgTFMzMiQgPSBzdWJleHAoc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIgKyBIMTYkKSArIFwifFwiICsgSVBWNEFERFJFU1MkKSxcbiAgICAgICAgSVBWNkFERFJFU1MxJCA9IHN1YmV4cChzdWJleHAoSDE2JCArIFwiXFxcXDpcIikgKyBcIns2fVwiICsgTFMzMiQpLFxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIDYoIGgxNiBcIjpcIiApIGxzMzJcbiAgICBJUFY2QUREUkVTUzIkID0gc3ViZXhwKFwiXFxcXDpcXFxcOlwiICsgc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7NX1cIiArIExTMzIkKSxcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgXCI6OlwiIDUoIGgxNiBcIjpcIiApIGxzMzJcbiAgICBJUFY2QUREUkVTUzMkID0gc3ViZXhwKHN1YmV4cChIMTYkKSArIFwiP1xcXFw6XFxcXDpcIiArIHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezR9XCIgKyBMUzMyJCksXG4gICAgICAgIC8vWyAgICAgICAgICAgICAgIGgxNiBdIFwiOjpcIiA0KCBoMTYgXCI6XCIgKSBsczMyXG4gICAgSVBWNkFERFJFU1M0JCA9IHN1YmV4cChzdWJleHAoc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7MCwxfVwiICsgSDE2JCkgKyBcIj9cXFxcOlxcXFw6XCIgKyBzdWJleHAoSDE2JCArIFwiXFxcXDpcIikgKyBcInszfVwiICsgTFMzMiQpLFxuICAgICAgICAvL1sgKjEoIGgxNiBcIjpcIiApIGgxNiBdIFwiOjpcIiAzKCBoMTYgXCI6XCIgKSBsczMyXG4gICAgSVBWNkFERFJFU1M1JCA9IHN1YmV4cChzdWJleHAoc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7MCwyfVwiICsgSDE2JCkgKyBcIj9cXFxcOlxcXFw6XCIgKyBzdWJleHAoSDE2JCArIFwiXFxcXDpcIikgKyBcInsyfVwiICsgTFMzMiQpLFxuICAgICAgICAvL1sgKjIoIGgxNiBcIjpcIiApIGgxNiBdIFwiOjpcIiAyKCBoMTYgXCI6XCIgKSBsczMyXG4gICAgSVBWNkFERFJFU1M2JCA9IHN1YmV4cChzdWJleHAoc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7MCwzfVwiICsgSDE2JCkgKyBcIj9cXFxcOlxcXFw6XCIgKyBIMTYkICsgXCJcXFxcOlwiICsgTFMzMiQpLFxuICAgICAgICAvL1sgKjMoIGgxNiBcIjpcIiApIGgxNiBdIFwiOjpcIiAgICBoMTYgXCI6XCIgICBsczMyXG4gICAgSVBWNkFERFJFU1M3JCA9IHN1YmV4cChzdWJleHAoc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7MCw0fVwiICsgSDE2JCkgKyBcIj9cXFxcOlxcXFw6XCIgKyBMUzMyJCksXG4gICAgICAgIC8vWyAqNCggaDE2IFwiOlwiICkgaDE2IF0gXCI6OlwiICAgICAgICAgICAgICBsczMyXG4gICAgSVBWNkFERFJFU1M4JCA9IHN1YmV4cChzdWJleHAoc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7MCw1fVwiICsgSDE2JCkgKyBcIj9cXFxcOlxcXFw6XCIgKyBIMTYkKSxcbiAgICAgICAgLy9bICo1KCBoMTYgXCI6XCIgKSBoMTYgXSBcIjo6XCIgICAgICAgICAgICAgIGgxNlxuICAgIElQVjZBRERSRVNTOSQgPSBzdWJleHAoc3ViZXhwKHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezAsNn1cIiArIEgxNiQpICsgXCI/XFxcXDpcXFxcOlwiKSxcbiAgICAgICAgLy9bICo2KCBoMTYgXCI6XCIgKSBoMTYgXSBcIjo6XCJcbiAgICBJUFY2QUREUkVTUyQgPSBzdWJleHAoW0lQVjZBRERSRVNTMSQsIElQVjZBRERSRVNTMiQsIElQVjZBRERSRVNTMyQsIElQVjZBRERSRVNTNCQsIElQVjZBRERSRVNTNSQsIElQVjZBRERSRVNTNiQsIElQVjZBRERSRVNTNyQsIElQVjZBRERSRVNTOCQsIElQVjZBRERSRVNTOSRdLmpvaW4oXCJ8XCIpKSxcbiAgICAgICAgWk9ORUlEJCA9IHN1YmV4cChzdWJleHAoVU5SRVNFUlZFRCQkICsgXCJ8XCIgKyBQQ1RfRU5DT0RFRCQpICsgXCIrXCIpLFxuICAgICAgICAvL1JGQyA2ODc0XG4gICAgSVBWNkFERFJaJCA9IHN1YmV4cChJUFY2QUREUkVTUyQgKyBcIlxcXFwlMjVcIiArIFpPTkVJRCQpLFxuICAgICAgICAvL1JGQyA2ODc0XG4gICAgSVBWNkFERFJaX1JFTEFYRUQkID0gc3ViZXhwKElQVjZBRERSRVNTJCArIHN1YmV4cChcIlxcXFwlMjV8XFxcXCUoPyFcIiArIEhFWERJRyQkICsgXCJ7Mn0pXCIpICsgWk9ORUlEJCksXG4gICAgICAgIC8vUkZDIDY4NzQsIHdpdGggcmVsYXhlZCBwYXJzaW5nIHJ1bGVzXG4gICAgSVBWRlVUVVJFJCA9IHN1YmV4cChcIlt2Vl1cIiArIEhFWERJRyQkICsgXCIrXFxcXC5cIiArIG1lcmdlKFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkLCBcIltcXFxcOl1cIikgKyBcIitcIiksXG4gICAgICAgIElQX0xJVEVSQUwkID0gc3ViZXhwKFwiXFxcXFtcIiArIHN1YmV4cChJUFY2QUREUlpfUkVMQVhFRCQgKyBcInxcIiArIElQVjZBRERSRVNTJCArIFwifFwiICsgSVBWRlVUVVJFJCkgKyBcIlxcXFxdXCIpLFxuICAgICAgICAvL1JGQyA2ODc0XG4gICAgUkVHX05BTUUkID0gc3ViZXhwKHN1YmV4cChQQ1RfRU5DT0RFRCQgKyBcInxcIiArIG1lcmdlKFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkKSkgKyBcIipcIiksXG4gICAgICAgIEhPU1QkID0gc3ViZXhwKElQX0xJVEVSQUwkICsgXCJ8XCIgKyBJUFY0QUREUkVTUyQgKyBcIig/IVwiICsgUkVHX05BTUUkICsgXCIpXCIgKyBcInxcIiArIFJFR19OQU1FJCksXG4gICAgICAgIFBPUlQkID0gc3ViZXhwKERJR0lUJCQgKyBcIipcIiksXG4gICAgICAgIEFVVEhPUklUWSQgPSBzdWJleHAoc3ViZXhwKFVTRVJJTkZPJCArIFwiQFwiKSArIFwiP1wiICsgSE9TVCQgKyBzdWJleHAoXCJcXFxcOlwiICsgUE9SVCQpICsgXCI/XCIpLFxuICAgICAgICBQQ0hBUiQgPSBzdWJleHAoUENUX0VOQ09ERUQkICsgXCJ8XCIgKyBtZXJnZShVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCwgXCJbXFxcXDpcXFxcQF1cIikpLFxuICAgICAgICBTRUdNRU5UJCA9IHN1YmV4cChQQ0hBUiQgKyBcIipcIiksXG4gICAgICAgIFNFR01FTlRfTlokID0gc3ViZXhwKFBDSEFSJCArIFwiK1wiKSxcbiAgICAgICAgU0VHTUVOVF9OWl9OQyQgPSBzdWJleHAoc3ViZXhwKFBDVF9FTkNPREVEJCArIFwifFwiICsgbWVyZ2UoVU5SRVNFUlZFRCQkLCBTVUJfREVMSU1TJCQsIFwiW1xcXFxAXVwiKSkgKyBcIitcIiksXG4gICAgICAgIFBBVEhfQUJFTVBUWSQgPSBzdWJleHAoc3ViZXhwKFwiXFxcXC9cIiArIFNFR01FTlQkKSArIFwiKlwiKSxcbiAgICAgICAgUEFUSF9BQlNPTFVURSQgPSBzdWJleHAoXCJcXFxcL1wiICsgc3ViZXhwKFNFR01FTlRfTlokICsgUEFUSF9BQkVNUFRZJCkgKyBcIj9cIiksXG4gICAgICAgIC8vc2ltcGxpZmllZFxuICAgIFBBVEhfTk9TQ0hFTUUkID0gc3ViZXhwKFNFR01FTlRfTlpfTkMkICsgUEFUSF9BQkVNUFRZJCksXG4gICAgICAgIC8vc2ltcGxpZmllZFxuICAgIFBBVEhfUk9PVExFU1MkID0gc3ViZXhwKFNFR01FTlRfTlokICsgUEFUSF9BQkVNUFRZJCksXG4gICAgICAgIC8vc2ltcGxpZmllZFxuICAgIFBBVEhfRU1QVFkkID0gXCIoPyFcIiArIFBDSEFSJCArIFwiKVwiLFxuICAgICAgICBQQVRIJCA9IHN1YmV4cChQQVRIX0FCRU1QVFkkICsgXCJ8XCIgKyBQQVRIX0FCU09MVVRFJCArIFwifFwiICsgUEFUSF9OT1NDSEVNRSQgKyBcInxcIiArIFBBVEhfUk9PVExFU1MkICsgXCJ8XCIgKyBQQVRIX0VNUFRZJCksXG4gICAgICAgIFFVRVJZJCA9IHN1YmV4cChzdWJleHAoUENIQVIkICsgXCJ8XCIgKyBtZXJnZShcIltcXFxcL1xcXFw/XVwiLCBJUFJJVkFURSQkKSkgKyBcIipcIiksXG4gICAgICAgIEZSQUdNRU5UJCA9IHN1YmV4cChzdWJleHAoUENIQVIkICsgXCJ8W1xcXFwvXFxcXD9dXCIpICsgXCIqXCIpLFxuICAgICAgICBISUVSX1BBUlQkID0gc3ViZXhwKHN1YmV4cChcIlxcXFwvXFxcXC9cIiArIEFVVEhPUklUWSQgKyBQQVRIX0FCRU1QVFkkKSArIFwifFwiICsgUEFUSF9BQlNPTFVURSQgKyBcInxcIiArIFBBVEhfUk9PVExFU1MkICsgXCJ8XCIgKyBQQVRIX0VNUFRZJCksXG4gICAgICAgIFVSSSQgPSBzdWJleHAoU0NIRU1FJCArIFwiXFxcXDpcIiArIEhJRVJfUEFSVCQgKyBzdWJleHAoXCJcXFxcP1wiICsgUVVFUlkkKSArIFwiP1wiICsgc3ViZXhwKFwiXFxcXCNcIiArIEZSQUdNRU5UJCkgKyBcIj9cIiksXG4gICAgICAgIFJFTEFUSVZFX1BBUlQkID0gc3ViZXhwKHN1YmV4cChcIlxcXFwvXFxcXC9cIiArIEFVVEhPUklUWSQgKyBQQVRIX0FCRU1QVFkkKSArIFwifFwiICsgUEFUSF9BQlNPTFVURSQgKyBcInxcIiArIFBBVEhfTk9TQ0hFTUUkICsgXCJ8XCIgKyBQQVRIX0VNUFRZJCksXG4gICAgICAgIFJFTEFUSVZFJCA9IHN1YmV4cChSRUxBVElWRV9QQVJUJCArIHN1YmV4cChcIlxcXFw/XCIgKyBRVUVSWSQpICsgXCI/XCIgKyBzdWJleHAoXCJcXFxcI1wiICsgRlJBR01FTlQkKSArIFwiP1wiKSxcbiAgICAgICAgVVJJX1JFRkVSRU5DRSQgPSBzdWJleHAoVVJJJCArIFwifFwiICsgUkVMQVRJVkUkKSxcbiAgICAgICAgQUJTT0xVVEVfVVJJJCA9IHN1YmV4cChTQ0hFTUUkICsgXCJcXFxcOlwiICsgSElFUl9QQVJUJCArIHN1YmV4cChcIlxcXFw/XCIgKyBRVUVSWSQpICsgXCI/XCIpLFxuICAgICAgICBHRU5FUklDX1JFRiQgPSBcIl4oXCIgKyBTQ0hFTUUkICsgXCIpXFxcXDpcIiArIHN1YmV4cChzdWJleHAoXCJcXFxcL1xcXFwvKFwiICsgc3ViZXhwKFwiKFwiICsgVVNFUklORk8kICsgXCIpQFwiKSArIFwiPyhcIiArIEhPU1QkICsgXCIpXCIgKyBzdWJleHAoXCJcXFxcOihcIiArIFBPUlQkICsgXCIpXCIpICsgXCI/KVwiKSArIFwiPyhcIiArIFBBVEhfQUJFTVBUWSQgKyBcInxcIiArIFBBVEhfQUJTT0xVVEUkICsgXCJ8XCIgKyBQQVRIX1JPT1RMRVNTJCArIFwifFwiICsgUEFUSF9FTVBUWSQgKyBcIilcIikgKyBzdWJleHAoXCJcXFxcPyhcIiArIFFVRVJZJCArIFwiKVwiKSArIFwiP1wiICsgc3ViZXhwKFwiXFxcXCMoXCIgKyBGUkFHTUVOVCQgKyBcIilcIikgKyBcIj8kXCIsXG4gICAgICAgIFJFTEFUSVZFX1JFRiQgPSBcIl4oKXswfVwiICsgc3ViZXhwKHN1YmV4cChcIlxcXFwvXFxcXC8oXCIgKyBzdWJleHAoXCIoXCIgKyBVU0VSSU5GTyQgKyBcIilAXCIpICsgXCI/KFwiICsgSE9TVCQgKyBcIilcIiArIHN1YmV4cChcIlxcXFw6KFwiICsgUE9SVCQgKyBcIilcIikgKyBcIj8pXCIpICsgXCI/KFwiICsgUEFUSF9BQkVNUFRZJCArIFwifFwiICsgUEFUSF9BQlNPTFVURSQgKyBcInxcIiArIFBBVEhfTk9TQ0hFTUUkICsgXCJ8XCIgKyBQQVRIX0VNUFRZJCArIFwiKVwiKSArIHN1YmV4cChcIlxcXFw/KFwiICsgUVVFUlkkICsgXCIpXCIpICsgXCI/XCIgKyBzdWJleHAoXCJcXFxcIyhcIiArIEZSQUdNRU5UJCArIFwiKVwiKSArIFwiPyRcIixcbiAgICAgICAgQUJTT0xVVEVfUkVGJCA9IFwiXihcIiArIFNDSEVNRSQgKyBcIilcXFxcOlwiICsgc3ViZXhwKHN1YmV4cChcIlxcXFwvXFxcXC8oXCIgKyBzdWJleHAoXCIoXCIgKyBVU0VSSU5GTyQgKyBcIilAXCIpICsgXCI/KFwiICsgSE9TVCQgKyBcIilcIiArIHN1YmV4cChcIlxcXFw6KFwiICsgUE9SVCQgKyBcIilcIikgKyBcIj8pXCIpICsgXCI/KFwiICsgUEFUSF9BQkVNUFRZJCArIFwifFwiICsgUEFUSF9BQlNPTFVURSQgKyBcInxcIiArIFBBVEhfUk9PVExFU1MkICsgXCJ8XCIgKyBQQVRIX0VNUFRZJCArIFwiKVwiKSArIHN1YmV4cChcIlxcXFw/KFwiICsgUVVFUlkkICsgXCIpXCIpICsgXCI/JFwiLFxuICAgICAgICBTQU1FRE9DX1JFRiQgPSBcIl5cIiArIHN1YmV4cChcIlxcXFwjKFwiICsgRlJBR01FTlQkICsgXCIpXCIpICsgXCI/JFwiLFxuICAgICAgICBBVVRIT1JJVFlfUkVGJCA9IFwiXlwiICsgc3ViZXhwKFwiKFwiICsgVVNFUklORk8kICsgXCIpQFwiKSArIFwiPyhcIiArIEhPU1QkICsgXCIpXCIgKyBzdWJleHAoXCJcXFxcOihcIiArIFBPUlQkICsgXCIpXCIpICsgXCI/JFwiO1xuICAgIHJldHVybiB7XG4gICAgICAgIE5PVF9TQ0hFTUU6IG5ldyBSZWdFeHAobWVyZ2UoXCJbXl1cIiwgQUxQSEEkJCwgRElHSVQkJCwgXCJbXFxcXCtcXFxcLVxcXFwuXVwiKSwgXCJnXCIpLFxuICAgICAgICBOT1RfVVNFUklORk86IG5ldyBSZWdFeHAobWVyZ2UoXCJbXlxcXFwlXFxcXDpdXCIsIFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkKSwgXCJnXCIpLFxuICAgICAgICBOT1RfSE9TVDogbmV3IFJlZ0V4cChtZXJnZShcIlteXFxcXCVcXFxcW1xcXFxdXFxcXDpdXCIsIFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkKSwgXCJnXCIpLFxuICAgICAgICBOT1RfUEFUSDogbmV3IFJlZ0V4cChtZXJnZShcIlteXFxcXCVcXFxcL1xcXFw6XFxcXEBdXCIsIFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkKSwgXCJnXCIpLFxuICAgICAgICBOT1RfUEFUSF9OT1NDSEVNRTogbmV3IFJlZ0V4cChtZXJnZShcIlteXFxcXCVcXFxcL1xcXFxAXVwiLCBVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCksIFwiZ1wiKSxcbiAgICAgICAgTk9UX1FVRVJZOiBuZXcgUmVnRXhwKG1lcmdlKFwiW15cXFxcJV1cIiwgVU5SRVNFUlZFRCQkLCBTVUJfREVMSU1TJCQsIFwiW1xcXFw6XFxcXEBcXFxcL1xcXFw/XVwiLCBJUFJJVkFURSQkKSwgXCJnXCIpLFxuICAgICAgICBOT1RfRlJBR01FTlQ6IG5ldyBSZWdFeHAobWVyZ2UoXCJbXlxcXFwlXVwiLCBVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCwgXCJbXFxcXDpcXFxcQFxcXFwvXFxcXD9dXCIpLCBcImdcIiksXG4gICAgICAgIEVTQ0FQRTogbmV3IFJlZ0V4cChtZXJnZShcIlteXVwiLCBVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCksIFwiZ1wiKSxcbiAgICAgICAgVU5SRVNFUlZFRDogbmV3IFJlZ0V4cChVTlJFU0VSVkVEJCQsIFwiZ1wiKSxcbiAgICAgICAgT1RIRVJfQ0hBUlM6IG5ldyBSZWdFeHAobWVyZ2UoXCJbXlxcXFwlXVwiLCBVTlJFU0VSVkVEJCQsIFJFU0VSVkVEJCQpLCBcImdcIiksXG4gICAgICAgIFBDVF9FTkNPREVEOiBuZXcgUmVnRXhwKFBDVF9FTkNPREVEJCwgXCJnXCIpLFxuICAgICAgICBJUFY0QUREUkVTUzogbmV3IFJlZ0V4cChcIl4oXCIgKyBJUFY0QUREUkVTUyQgKyBcIikkXCIpLFxuICAgICAgICBJUFY2QUREUkVTUzogbmV3IFJlZ0V4cChcIl5cXFxcWz8oXCIgKyBJUFY2QUREUkVTUyQgKyBcIilcIiArIHN1YmV4cChzdWJleHAoXCJcXFxcJTI1fFxcXFwlKD8hXCIgKyBIRVhESUckJCArIFwiezJ9KVwiKSArIFwiKFwiICsgWk9ORUlEJCArIFwiKVwiKSArIFwiP1xcXFxdPyRcIikgLy9SRkMgNjg3NCwgd2l0aCByZWxheGVkIHBhcnNpbmcgcnVsZXNcbiAgICB9O1xufVxudmFyIFVSSV9QUk9UT0NPTCA9IGJ1aWxkRXhwcyhmYWxzZSk7XG5cbnZhciBJUklfUFJPVE9DT0wgPSBidWlsZEV4cHModHJ1ZSk7XG5cbnZhciBzbGljZWRUb0FycmF5ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBzbGljZUl0ZXJhdG9yKGFyciwgaSkge1xuICAgIHZhciBfYXJyID0gW107XG4gICAgdmFyIF9uID0gdHJ1ZTtcbiAgICB2YXIgX2QgPSBmYWxzZTtcbiAgICB2YXIgX2UgPSB1bmRlZmluZWQ7XG5cbiAgICB0cnkge1xuICAgICAgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkge1xuICAgICAgICBfYXJyLnB1c2goX3MudmFsdWUpO1xuXG4gICAgICAgIGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhaztcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIF9kID0gdHJ1ZTtcbiAgICAgIF9lID0gZXJyO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdKSBfaVtcInJldHVyblwiXSgpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKF9kKSB0aHJvdyBfZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gX2FycjtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoYXJyLCBpKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgICAgcmV0dXJuIGFycjtcbiAgICB9IGVsc2UgaWYgKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoYXJyKSkge1xuICAgICAgcmV0dXJuIHNsaWNlSXRlcmF0b3IoYXJyLCBpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIik7XG4gICAgfVxuICB9O1xufSgpO1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG52YXIgdG9Db25zdW1hYmxlQXJyYXkgPSBmdW5jdGlvbiAoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSBhcnIyW2ldID0gYXJyW2ldO1xuXG4gICAgcmV0dXJuIGFycjI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oYXJyKTtcbiAgfVxufTtcblxuLyoqIEhpZ2hlc3QgcG9zaXRpdmUgc2lnbmVkIDMyLWJpdCBmbG9hdCB2YWx1ZSAqL1xuXG52YXIgbWF4SW50ID0gMjE0NzQ4MzY0NzsgLy8gYWthLiAweDdGRkZGRkZGIG9yIDJeMzEtMVxuXG4vKiogQm9vdHN0cmluZyBwYXJhbWV0ZXJzICovXG52YXIgYmFzZSA9IDM2O1xudmFyIHRNaW4gPSAxO1xudmFyIHRNYXggPSAyNjtcbnZhciBza2V3ID0gMzg7XG52YXIgZGFtcCA9IDcwMDtcbnZhciBpbml0aWFsQmlhcyA9IDcyO1xudmFyIGluaXRpYWxOID0gMTI4OyAvLyAweDgwXG52YXIgZGVsaW1pdGVyID0gJy0nOyAvLyAnXFx4MkQnXG5cbi8qKiBSZWd1bGFyIGV4cHJlc3Npb25zICovXG52YXIgcmVnZXhQdW55Y29kZSA9IC9eeG4tLS87XG52YXIgcmVnZXhOb25BU0NJSSA9IC9bXlxcMC1cXHg3RV0vOyAvLyBub24tQVNDSUkgY2hhcnNcbnZhciByZWdleFNlcGFyYXRvcnMgPSAvW1xceDJFXFx1MzAwMlxcdUZGMEVcXHVGRjYxXS9nOyAvLyBSRkMgMzQ5MCBzZXBhcmF0b3JzXG5cbi8qKiBFcnJvciBtZXNzYWdlcyAqL1xudmFyIGVycm9ycyA9IHtcblx0J292ZXJmbG93JzogJ092ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzJyxcblx0J25vdC1iYXNpYyc6ICdJbGxlZ2FsIGlucHV0ID49IDB4ODAgKG5vdCBhIGJhc2ljIGNvZGUgcG9pbnQpJyxcblx0J2ludmFsaWQtaW5wdXQnOiAnSW52YWxpZCBpbnB1dCdcbn07XG5cbi8qKiBDb252ZW5pZW5jZSBzaG9ydGN1dHMgKi9cbnZhciBiYXNlTWludXNUTWluID0gYmFzZSAtIHRNaW47XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIHN0cmluZ0Zyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKipcbiAqIEEgZ2VuZXJpYyBlcnJvciB1dGlsaXR5IGZ1bmN0aW9uLlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIFRoZSBlcnJvciB0eXBlLlxuICogQHJldHVybnMge0Vycm9yfSBUaHJvd3MgYSBgUmFuZ2VFcnJvcmAgd2l0aCB0aGUgYXBwbGljYWJsZSBlcnJvciBtZXNzYWdlLlxuICovXG5mdW5jdGlvbiBlcnJvciQxKHR5cGUpIHtcblx0dGhyb3cgbmV3IFJhbmdlRXJyb3IoZXJyb3JzW3R5cGVdKTtcbn1cblxuLyoqXG4gKiBBIGdlbmVyaWMgYEFycmF5I21hcGAgdXRpbGl0eSBmdW5jdGlvbi5cbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5IGFycmF5XG4gKiBpdGVtLlxuICogQHJldHVybnMge0FycmF5fSBBIG5ldyBhcnJheSBvZiB2YWx1ZXMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtYXAoYXJyYXksIGZuKSB7XG5cdHZhciByZXN1bHQgPSBbXTtcblx0dmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblx0d2hpbGUgKGxlbmd0aC0tKSB7XG5cdFx0cmVzdWx0W2xlbmd0aF0gPSBmbihhcnJheVtsZW5ndGhdKTtcblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEEgc2ltcGxlIGBBcnJheSNtYXBgLWxpa2Ugd3JhcHBlciB0byB3b3JrIHdpdGggZG9tYWluIG5hbWUgc3RyaW5ncyBvciBlbWFpbFxuICogYWRkcmVzc2VzLlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBkb21haW4gVGhlIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCBmb3IgZXZlcnlcbiAqIGNoYXJhY3Rlci5cbiAqIEByZXR1cm5zIHtBcnJheX0gQSBuZXcgc3RyaW5nIG9mIGNoYXJhY3RlcnMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrXG4gKiBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gbWFwRG9tYWluKHN0cmluZywgZm4pIHtcblx0dmFyIHBhcnRzID0gc3RyaW5nLnNwbGl0KCdAJyk7XG5cdHZhciByZXN1bHQgPSAnJztcblx0aWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcblx0XHQvLyBJbiBlbWFpbCBhZGRyZXNzZXMsIG9ubHkgdGhlIGRvbWFpbiBuYW1lIHNob3VsZCBiZSBwdW55Y29kZWQuIExlYXZlXG5cdFx0Ly8gdGhlIGxvY2FsIHBhcnQgKGkuZS4gZXZlcnl0aGluZyB1cCB0byBgQGApIGludGFjdC5cblx0XHRyZXN1bHQgPSBwYXJ0c1swXSArICdAJztcblx0XHRzdHJpbmcgPSBwYXJ0c1sxXTtcblx0fVxuXHQvLyBBdm9pZCBgc3BsaXQocmVnZXgpYCBmb3IgSUU4IGNvbXBhdGliaWxpdHkuIFNlZSAjMTcuXG5cdHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKHJlZ2V4U2VwYXJhdG9ycywgJ1xceDJFJyk7XG5cdHZhciBsYWJlbHMgPSBzdHJpbmcuc3BsaXQoJy4nKTtcblx0dmFyIGVuY29kZWQgPSBtYXAobGFiZWxzLCBmbikuam9pbignLicpO1xuXHRyZXR1cm4gcmVzdWx0ICsgZW5jb2RlZDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIG51bWVyaWMgY29kZSBwb2ludHMgb2YgZWFjaCBVbmljb2RlXG4gKiBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZy4gV2hpbGUgSmF2YVNjcmlwdCB1c2VzIFVDUy0yIGludGVybmFsbHksXG4gKiB0aGlzIGZ1bmN0aW9uIHdpbGwgY29udmVydCBhIHBhaXIgb2Ygc3Vycm9nYXRlIGhhbHZlcyAoZWFjaCBvZiB3aGljaFxuICogVUNTLTIgZXhwb3NlcyBhcyBzZXBhcmF0ZSBjaGFyYWN0ZXJzKSBpbnRvIGEgc2luZ2xlIGNvZGUgcG9pbnQsXG4gKiBtYXRjaGluZyBVVEYtMTYuXG4gKiBAc2VlIGBwdW55Y29kZS51Y3MyLmVuY29kZWBcbiAqIEBzZWUgPGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LWVuY29kaW5nPlxuICogQG1lbWJlck9mIHB1bnljb2RlLnVjczJcbiAqIEBuYW1lIGRlY29kZVxuICogQHBhcmFtIHtTdHJpbmd9IHN0cmluZyBUaGUgVW5pY29kZSBpbnB1dCBzdHJpbmcgKFVDUy0yKS5cbiAqIEByZXR1cm5zIHtBcnJheX0gVGhlIG5ldyBhcnJheSBvZiBjb2RlIHBvaW50cy5cbiAqL1xuZnVuY3Rpb24gdWNzMmRlY29kZShzdHJpbmcpIHtcblx0dmFyIG91dHB1dCA9IFtdO1xuXHR2YXIgY291bnRlciA9IDA7XG5cdHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoO1xuXHR3aGlsZSAoY291bnRlciA8IGxlbmd0aCkge1xuXHRcdHZhciB2YWx1ZSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG5cdFx0aWYgKHZhbHVlID49IDB4RDgwMCAmJiB2YWx1ZSA8PSAweERCRkYgJiYgY291bnRlciA8IGxlbmd0aCkge1xuXHRcdFx0Ly8gSXQncyBhIGhpZ2ggc3Vycm9nYXRlLCBhbmQgdGhlcmUgaXMgYSBuZXh0IGNoYXJhY3Rlci5cblx0XHRcdHZhciBleHRyYSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG5cdFx0XHRpZiAoKGV4dHJhICYgMHhGQzAwKSA9PSAweERDMDApIHtcblx0XHRcdFx0Ly8gTG93IHN1cnJvZ2F0ZS5cblx0XHRcdFx0b3V0cHV0LnB1c2goKCh2YWx1ZSAmIDB4M0ZGKSA8PCAxMCkgKyAoZXh0cmEgJiAweDNGRikgKyAweDEwMDAwKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIEl0J3MgYW4gdW5tYXRjaGVkIHN1cnJvZ2F0ZTsgb25seSBhcHBlbmQgdGhpcyBjb2RlIHVuaXQsIGluIGNhc2UgdGhlXG5cdFx0XHRcdC8vIG5leHQgY29kZSB1bml0IGlzIHRoZSBoaWdoIHN1cnJvZ2F0ZSBvZiBhIHN1cnJvZ2F0ZSBwYWlyLlxuXHRcdFx0XHRvdXRwdXQucHVzaCh2YWx1ZSk7XG5cdFx0XHRcdGNvdW50ZXItLTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0b3V0cHV0LnB1c2godmFsdWUpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gb3V0cHV0O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzdHJpbmcgYmFzZWQgb24gYW4gYXJyYXkgb2YgbnVtZXJpYyBjb2RlIHBvaW50cy5cbiAqIEBzZWUgYHB1bnljb2RlLnVjczIuZGVjb2RlYFxuICogQG1lbWJlck9mIHB1bnljb2RlLnVjczJcbiAqIEBuYW1lIGVuY29kZVxuICogQHBhcmFtIHtBcnJheX0gY29kZVBvaW50cyBUaGUgYXJyYXkgb2YgbnVtZXJpYyBjb2RlIHBvaW50cy5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBuZXcgVW5pY29kZSBzdHJpbmcgKFVDUy0yKS5cbiAqL1xudmFyIHVjczJlbmNvZGUgPSBmdW5jdGlvbiB1Y3MyZW5jb2RlKGFycmF5KSB7XG5cdHJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludC5hcHBseShTdHJpbmcsIHRvQ29uc3VtYWJsZUFycmF5KGFycmF5KSk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgYmFzaWMgY29kZSBwb2ludCBpbnRvIGEgZGlnaXQvaW50ZWdlci5cbiAqIEBzZWUgYGRpZ2l0VG9CYXNpYygpYFxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBjb2RlUG9pbnQgVGhlIGJhc2ljIG51bWVyaWMgY29kZSBwb2ludCB2YWx1ZS5cbiAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBudW1lcmljIHZhbHVlIG9mIGEgYmFzaWMgY29kZSBwb2ludCAoZm9yIHVzZSBpblxuICogcmVwcmVzZW50aW5nIGludGVnZXJzKSBpbiB0aGUgcmFuZ2UgYDBgIHRvIGBiYXNlIC0gMWAsIG9yIGBiYXNlYCBpZlxuICogdGhlIGNvZGUgcG9pbnQgZG9lcyBub3QgcmVwcmVzZW50IGEgdmFsdWUuXG4gKi9cbnZhciBiYXNpY1RvRGlnaXQgPSBmdW5jdGlvbiBiYXNpY1RvRGlnaXQoY29kZVBvaW50KSB7XG5cdGlmIChjb2RlUG9pbnQgLSAweDMwIDwgMHgwQSkge1xuXHRcdHJldHVybiBjb2RlUG9pbnQgLSAweDE2O1xuXHR9XG5cdGlmIChjb2RlUG9pbnQgLSAweDQxIDwgMHgxQSkge1xuXHRcdHJldHVybiBjb2RlUG9pbnQgLSAweDQxO1xuXHR9XG5cdGlmIChjb2RlUG9pbnQgLSAweDYxIDwgMHgxQSkge1xuXHRcdHJldHVybiBjb2RlUG9pbnQgLSAweDYxO1xuXHR9XG5cdHJldHVybiBiYXNlO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGRpZ2l0L2ludGVnZXIgaW50byBhIGJhc2ljIGNvZGUgcG9pbnQuXG4gKiBAc2VlIGBiYXNpY1RvRGlnaXQoKWBcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge051bWJlcn0gZGlnaXQgVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50LlxuICogQHJldHVybnMge051bWJlcn0gVGhlIGJhc2ljIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgKHdoZW4gdXNlZCBmb3JcbiAqIHJlcHJlc2VudGluZyBpbnRlZ2VycykgaXMgYGRpZ2l0YCwgd2hpY2ggbmVlZHMgdG8gYmUgaW4gdGhlIHJhbmdlXG4gKiBgMGAgdG8gYGJhc2UgLSAxYC4gSWYgYGZsYWdgIGlzIG5vbi16ZXJvLCB0aGUgdXBwZXJjYXNlIGZvcm0gaXNcbiAqIHVzZWQ7IGVsc2UsIHRoZSBsb3dlcmNhc2UgZm9ybSBpcyB1c2VkLiBUaGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkXG4gKiBpZiBgZmxhZ2AgaXMgbm9uLXplcm8gYW5kIGBkaWdpdGAgaGFzIG5vIHVwcGVyY2FzZSBmb3JtLlxuICovXG52YXIgZGlnaXRUb0Jhc2ljID0gZnVuY3Rpb24gZGlnaXRUb0Jhc2ljKGRpZ2l0LCBmbGFnKSB7XG5cdC8vICAwLi4yNSBtYXAgdG8gQVNDSUkgYS4ueiBvciBBLi5aXG5cdC8vIDI2Li4zNSBtYXAgdG8gQVNDSUkgMC4uOVxuXHRyZXR1cm4gZGlnaXQgKyAyMiArIDc1ICogKGRpZ2l0IDwgMjYpIC0gKChmbGFnICE9IDApIDw8IDUpO1xufTtcblxuLyoqXG4gKiBCaWFzIGFkYXB0YXRpb24gZnVuY3Rpb24gYXMgcGVyIHNlY3Rpb24gMy40IG9mIFJGQyAzNDkyLlxuICogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM0OTIjc2VjdGlvbi0zLjRcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBhZGFwdCA9IGZ1bmN0aW9uIGFkYXB0KGRlbHRhLCBudW1Qb2ludHMsIGZpcnN0VGltZSkge1xuXHR2YXIgayA9IDA7XG5cdGRlbHRhID0gZmlyc3RUaW1lID8gZmxvb3IoZGVsdGEgLyBkYW1wKSA6IGRlbHRhID4+IDE7XG5cdGRlbHRhICs9IGZsb29yKGRlbHRhIC8gbnVtUG9pbnRzKTtcblx0Zm9yICg7IC8qIG5vIGluaXRpYWxpemF0aW9uICovZGVsdGEgPiBiYXNlTWludXNUTWluICogdE1heCA+PiAxOyBrICs9IGJhc2UpIHtcblx0XHRkZWx0YSA9IGZsb29yKGRlbHRhIC8gYmFzZU1pbnVzVE1pbik7XG5cdH1cblx0cmV0dXJuIGZsb29yKGsgKyAoYmFzZU1pbnVzVE1pbiArIDEpICogZGVsdGEgLyAoZGVsdGEgKyBza2V3KSk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scyB0byBhIHN0cmluZyBvZiBVbmljb2RlXG4gKiBzeW1ib2xzLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVzdWx0aW5nIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMuXG4gKi9cbnZhciBkZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoaW5wdXQpIHtcblx0Ly8gRG9uJ3QgdXNlIFVDUy0yLlxuXHR2YXIgb3V0cHV0ID0gW107XG5cdHZhciBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aDtcblx0dmFyIGkgPSAwO1xuXHR2YXIgbiA9IGluaXRpYWxOO1xuXHR2YXIgYmlhcyA9IGluaXRpYWxCaWFzO1xuXG5cdC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHM6IGxldCBgYmFzaWNgIGJlIHRoZSBudW1iZXIgb2YgaW5wdXQgY29kZVxuXHQvLyBwb2ludHMgYmVmb3JlIHRoZSBsYXN0IGRlbGltaXRlciwgb3IgYDBgIGlmIHRoZXJlIGlzIG5vbmUsIHRoZW4gY29weVxuXHQvLyB0aGUgZmlyc3QgYmFzaWMgY29kZSBwb2ludHMgdG8gdGhlIG91dHB1dC5cblxuXHR2YXIgYmFzaWMgPSBpbnB1dC5sYXN0SW5kZXhPZihkZWxpbWl0ZXIpO1xuXHRpZiAoYmFzaWMgPCAwKSB7XG5cdFx0YmFzaWMgPSAwO1xuXHR9XG5cblx0Zm9yICh2YXIgaiA9IDA7IGogPCBiYXNpYzsgKytqKSB7XG5cdFx0Ly8gaWYgaXQncyBub3QgYSBiYXNpYyBjb2RlIHBvaW50XG5cdFx0aWYgKGlucHV0LmNoYXJDb2RlQXQoaikgPj0gMHg4MCkge1xuXHRcdFx0ZXJyb3IkMSgnbm90LWJhc2ljJyk7XG5cdFx0fVxuXHRcdG91dHB1dC5wdXNoKGlucHV0LmNoYXJDb2RlQXQoaikpO1xuXHR9XG5cblx0Ly8gTWFpbiBkZWNvZGluZyBsb29wOiBzdGFydCBqdXN0IGFmdGVyIHRoZSBsYXN0IGRlbGltaXRlciBpZiBhbnkgYmFzaWMgY29kZVxuXHQvLyBwb2ludHMgd2VyZSBjb3BpZWQ7IHN0YXJ0IGF0IHRoZSBiZWdpbm5pbmcgb3RoZXJ3aXNlLlxuXG5cdGZvciAodmFyIGluZGV4ID0gYmFzaWMgPiAwID8gYmFzaWMgKyAxIDogMDsgaW5kZXggPCBpbnB1dExlbmd0aDspIC8qIG5vIGZpbmFsIGV4cHJlc3Npb24gKi97XG5cblx0XHQvLyBgaW5kZXhgIGlzIHRoZSBpbmRleCBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgY29uc3VtZWQuXG5cdFx0Ly8gRGVjb2RlIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXIgaW50byBgZGVsdGFgLFxuXHRcdC8vIHdoaWNoIGdldHMgYWRkZWQgdG8gYGlgLiBUaGUgb3ZlcmZsb3cgY2hlY2tpbmcgaXMgZWFzaWVyXG5cdFx0Ly8gaWYgd2UgaW5jcmVhc2UgYGlgIGFzIHdlIGdvLCB0aGVuIHN1YnRyYWN0IG9mZiBpdHMgc3RhcnRpbmdcblx0XHQvLyB2YWx1ZSBhdCB0aGUgZW5kIHRvIG9idGFpbiBgZGVsdGFgLlxuXHRcdHZhciBvbGRpID0gaTtcblx0XHRmb3IgKHZhciB3ID0gMSwgayA9IGJhc2U7OyAvKiBubyBjb25kaXRpb24gKi9rICs9IGJhc2UpIHtcblxuXHRcdFx0aWYgKGluZGV4ID49IGlucHV0TGVuZ3RoKSB7XG5cdFx0XHRcdGVycm9yJDEoJ2ludmFsaWQtaW5wdXQnKTtcblx0XHRcdH1cblxuXHRcdFx0dmFyIGRpZ2l0ID0gYmFzaWNUb0RpZ2l0KGlucHV0LmNoYXJDb2RlQXQoaW5kZXgrKykpO1xuXG5cdFx0XHRpZiAoZGlnaXQgPj0gYmFzZSB8fCBkaWdpdCA+IGZsb29yKChtYXhJbnQgLSBpKSAvIHcpKSB7XG5cdFx0XHRcdGVycm9yJDEoJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cblx0XHRcdGkgKz0gZGlnaXQgKiB3O1xuXHRcdFx0dmFyIHQgPSBrIDw9IGJpYXMgPyB0TWluIDogayA+PSBiaWFzICsgdE1heCA/IHRNYXggOiBrIC0gYmlhcztcblxuXHRcdFx0aWYgKGRpZ2l0IDwgdCkge1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblxuXHRcdFx0dmFyIGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcblx0XHRcdGlmICh3ID4gZmxvb3IobWF4SW50IC8gYmFzZU1pbnVzVCkpIHtcblx0XHRcdFx0ZXJyb3IkMSgnb3ZlcmZsb3cnKTtcblx0XHRcdH1cblxuXHRcdFx0dyAqPSBiYXNlTWludXNUO1xuXHRcdH1cblxuXHRcdHZhciBvdXQgPSBvdXRwdXQubGVuZ3RoICsgMTtcblx0XHRiaWFzID0gYWRhcHQoaSAtIG9sZGksIG91dCwgb2xkaSA9PSAwKTtcblxuXHRcdC8vIGBpYCB3YXMgc3VwcG9zZWQgdG8gd3JhcCBhcm91bmQgZnJvbSBgb3V0YCB0byBgMGAsXG5cdFx0Ly8gaW5jcmVtZW50aW5nIGBuYCBlYWNoIHRpbWUsIHNvIHdlJ2xsIGZpeCB0aGF0IG5vdzpcblx0XHRpZiAoZmxvb3IoaSAvIG91dCkgPiBtYXhJbnQgLSBuKSB7XG5cdFx0XHRlcnJvciQxKCdvdmVyZmxvdycpO1xuXHRcdH1cblxuXHRcdG4gKz0gZmxvb3IoaSAvIG91dCk7XG5cdFx0aSAlPSBvdXQ7XG5cblx0XHQvLyBJbnNlcnQgYG5gIGF0IHBvc2l0aW9uIGBpYCBvZiB0aGUgb3V0cHV0LlxuXHRcdG91dHB1dC5zcGxpY2UoaSsrLCAwLCBuKTtcblx0fVxuXG5cdHJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludC5hcHBseShTdHJpbmcsIG91dHB1dCk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scyAoZS5nLiBhIGRvbWFpbiBuYW1lIGxhYmVsKSB0byBhXG4gKiBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVzdWx0aW5nIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG4gKi9cbnZhciBlbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoaW5wdXQpIHtcblx0dmFyIG91dHB1dCA9IFtdO1xuXG5cdC8vIENvbnZlcnQgdGhlIGlucHV0IGluIFVDUy0yIHRvIGFuIGFycmF5IG9mIFVuaWNvZGUgY29kZSBwb2ludHMuXG5cdGlucHV0ID0gdWNzMmRlY29kZShpbnB1dCk7XG5cblx0Ly8gQ2FjaGUgdGhlIGxlbmd0aC5cblx0dmFyIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuXG5cdC8vIEluaXRpYWxpemUgdGhlIHN0YXRlLlxuXHR2YXIgbiA9IGluaXRpYWxOO1xuXHR2YXIgZGVsdGEgPSAwO1xuXHR2YXIgYmlhcyA9IGluaXRpYWxCaWFzO1xuXG5cdC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHMuXG5cdHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZTtcblx0dmFyIF9kaWRJdGVyYXRvckVycm9yID0gZmFsc2U7XG5cdHZhciBfaXRlcmF0b3JFcnJvciA9IHVuZGVmaW5lZDtcblxuXHR0cnkge1xuXHRcdGZvciAodmFyIF9pdGVyYXRvciA9IGlucHV0W1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXA7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IChfc3RlcCA9IF9pdGVyYXRvci5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZSkge1xuXHRcdFx0dmFyIF9jdXJyZW50VmFsdWUyID0gX3N0ZXAudmFsdWU7XG5cblx0XHRcdGlmIChfY3VycmVudFZhbHVlMiA8IDB4ODApIHtcblx0XHRcdFx0b3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKF9jdXJyZW50VmFsdWUyKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGNhdGNoIChlcnIpIHtcblx0XHRfZGlkSXRlcmF0b3JFcnJvciA9IHRydWU7XG5cdFx0X2l0ZXJhdG9yRXJyb3IgPSBlcnI7XG5cdH0gZmluYWxseSB7XG5cdFx0dHJ5IHtcblx0XHRcdGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiAmJiBfaXRlcmF0b3IucmV0dXJuKSB7XG5cdFx0XHRcdF9pdGVyYXRvci5yZXR1cm4oKTtcblx0XHRcdH1cblx0XHR9IGZpbmFsbHkge1xuXHRcdFx0aWYgKF9kaWRJdGVyYXRvckVycm9yKSB7XG5cdFx0XHRcdHRocm93IF9pdGVyYXRvckVycm9yO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHZhciBiYXNpY0xlbmd0aCA9IG91dHB1dC5sZW5ndGg7XG5cdHZhciBoYW5kbGVkQ1BDb3VudCA9IGJhc2ljTGVuZ3RoO1xuXG5cdC8vIGBoYW5kbGVkQ1BDb3VudGAgaXMgdGhlIG51bWJlciBvZiBjb2RlIHBvaW50cyB0aGF0IGhhdmUgYmVlbiBoYW5kbGVkO1xuXHQvLyBgYmFzaWNMZW5ndGhgIGlzIHRoZSBudW1iZXIgb2YgYmFzaWMgY29kZSBwb2ludHMuXG5cblx0Ly8gRmluaXNoIHRoZSBiYXNpYyBzdHJpbmcgd2l0aCBhIGRlbGltaXRlciB1bmxlc3MgaXQncyBlbXB0eS5cblx0aWYgKGJhc2ljTGVuZ3RoKSB7XG5cdFx0b3V0cHV0LnB1c2goZGVsaW1pdGVyKTtcblx0fVxuXG5cdC8vIE1haW4gZW5jb2RpbmcgbG9vcDpcblx0d2hpbGUgKGhhbmRsZWRDUENvdW50IDwgaW5wdXRMZW5ndGgpIHtcblxuXHRcdC8vIEFsbCBub24tYmFzaWMgY29kZSBwb2ludHMgPCBuIGhhdmUgYmVlbiBoYW5kbGVkIGFscmVhZHkuIEZpbmQgdGhlIG5leHRcblx0XHQvLyBsYXJnZXIgb25lOlxuXHRcdHZhciBtID0gbWF4SW50O1xuXHRcdHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IHRydWU7XG5cdFx0dmFyIF9kaWRJdGVyYXRvckVycm9yMiA9IGZhbHNlO1xuXHRcdHZhciBfaXRlcmF0b3JFcnJvcjIgPSB1bmRlZmluZWQ7XG5cblx0XHR0cnkge1xuXHRcdFx0Zm9yICh2YXIgX2l0ZXJhdG9yMiA9IGlucHV0W1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXAyOyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gKF9zdGVwMiA9IF9pdGVyYXRvcjIubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIgPSB0cnVlKSB7XG5cdFx0XHRcdHZhciBjdXJyZW50VmFsdWUgPSBfc3RlcDIudmFsdWU7XG5cblx0XHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA+PSBuICYmIGN1cnJlbnRWYWx1ZSA8IG0pIHtcblx0XHRcdFx0XHRtID0gY3VycmVudFZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIEluY3JlYXNlIGBkZWx0YWAgZW5vdWdoIHRvIGFkdmFuY2UgdGhlIGRlY29kZXIncyA8bixpPiBzdGF0ZSB0byA8bSwwPixcblx0XHRcdC8vIGJ1dCBndWFyZCBhZ2FpbnN0IG92ZXJmbG93LlxuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0X2RpZEl0ZXJhdG9yRXJyb3IyID0gdHJ1ZTtcblx0XHRcdF9pdGVyYXRvckVycm9yMiA9IGVycjtcblx0XHR9IGZpbmFsbHkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0aWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiAmJiBfaXRlcmF0b3IyLnJldHVybikge1xuXHRcdFx0XHRcdF9pdGVyYXRvcjIucmV0dXJuKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdGlmIChfZGlkSXRlcmF0b3JFcnJvcjIpIHtcblx0XHRcdFx0XHR0aHJvdyBfaXRlcmF0b3JFcnJvcjI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHR2YXIgaGFuZGxlZENQQ291bnRQbHVzT25lID0gaGFuZGxlZENQQ291bnQgKyAxO1xuXHRcdGlmIChtIC0gbiA+IGZsb29yKChtYXhJbnQgLSBkZWx0YSkgLyBoYW5kbGVkQ1BDb3VudFBsdXNPbmUpKSB7XG5cdFx0XHRlcnJvciQxKCdvdmVyZmxvdycpO1xuXHRcdH1cblxuXHRcdGRlbHRhICs9IChtIC0gbikgKiBoYW5kbGVkQ1BDb3VudFBsdXNPbmU7XG5cdFx0biA9IG07XG5cblx0XHR2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMgPSB0cnVlO1xuXHRcdHZhciBfZGlkSXRlcmF0b3JFcnJvcjMgPSBmYWxzZTtcblx0XHR2YXIgX2l0ZXJhdG9yRXJyb3IzID0gdW5kZWZpbmVkO1xuXG5cdFx0dHJ5IHtcblx0XHRcdGZvciAodmFyIF9pdGVyYXRvcjMgPSBpbnB1dFtTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwMzsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyA9IChfc3RlcDMgPSBfaXRlcmF0b3IzLm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zID0gdHJ1ZSkge1xuXHRcdFx0XHR2YXIgX2N1cnJlbnRWYWx1ZSA9IF9zdGVwMy52YWx1ZTtcblxuXHRcdFx0XHRpZiAoX2N1cnJlbnRWYWx1ZSA8IG4gJiYgKytkZWx0YSA+IG1heEludCkge1xuXHRcdFx0XHRcdGVycm9yJDEoJ292ZXJmbG93Jyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKF9jdXJyZW50VmFsdWUgPT0gbikge1xuXHRcdFx0XHRcdC8vIFJlcHJlc2VudCBkZWx0YSBhcyBhIGdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyLlxuXHRcdFx0XHRcdHZhciBxID0gZGVsdGE7XG5cdFx0XHRcdFx0Zm9yICh2YXIgayA9IGJhc2U7OyAvKiBubyBjb25kaXRpb24gKi9rICs9IGJhc2UpIHtcblx0XHRcdFx0XHRcdHZhciB0ID0gayA8PSBiaWFzID8gdE1pbiA6IGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXM7XG5cdFx0XHRcdFx0XHRpZiAocSA8IHQpIHtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR2YXIgcU1pbnVzVCA9IHEgLSB0O1xuXHRcdFx0XHRcdFx0dmFyIGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShkaWdpdFRvQmFzaWModCArIHFNaW51c1QgJSBiYXNlTWludXNULCAwKSkpO1xuXHRcdFx0XHRcdFx0cSA9IGZsb29yKHFNaW51c1QgLyBiYXNlTWludXNUKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHEsIDApKSk7XG5cdFx0XHRcdFx0YmlhcyA9IGFkYXB0KGRlbHRhLCBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsIGhhbmRsZWRDUENvdW50ID09IGJhc2ljTGVuZ3RoKTtcblx0XHRcdFx0XHRkZWx0YSA9IDA7XG5cdFx0XHRcdFx0KytoYW5kbGVkQ1BDb3VudDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0X2RpZEl0ZXJhdG9yRXJyb3IzID0gdHJ1ZTtcblx0XHRcdF9pdGVyYXRvckVycm9yMyA9IGVycjtcblx0XHR9IGZpbmFsbHkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0aWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyAmJiBfaXRlcmF0b3IzLnJldHVybikge1xuXHRcdFx0XHRcdF9pdGVyYXRvcjMucmV0dXJuKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdGlmIChfZGlkSXRlcmF0b3JFcnJvcjMpIHtcblx0XHRcdFx0XHR0aHJvdyBfaXRlcmF0b3JFcnJvcjM7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQrK2RlbHRhO1xuXHRcdCsrbjtcblx0fVxuXHRyZXR1cm4gb3V0cHV0LmpvaW4oJycpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIFB1bnljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgYSBkb21haW4gbmFtZSBvciBhbiBlbWFpbCBhZGRyZXNzXG4gKiB0byBVbmljb2RlLiBPbmx5IHRoZSBQdW55Y29kZWQgcGFydHMgb2YgdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVkLCBpLmUuXG4gKiBpdCBkb2Vzbid0IG1hdHRlciBpZiB5b3UgY2FsbCBpdCBvbiBhIHN0cmluZyB0aGF0IGhhcyBhbHJlYWR5IGJlZW5cbiAqIGNvbnZlcnRlZCB0byBVbmljb2RlLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlZCBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzIHRvXG4gKiBjb252ZXJ0IHRvIFVuaWNvZGUuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgVW5pY29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gUHVueWNvZGVcbiAqIHN0cmluZy5cbiAqL1xudmFyIHRvVW5pY29kZSA9IGZ1bmN0aW9uIHRvVW5pY29kZShpbnB1dCkge1xuXHRyZXR1cm4gbWFwRG9tYWluKGlucHV0LCBmdW5jdGlvbiAoc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHJlZ2V4UHVueWNvZGUudGVzdChzdHJpbmcpID8gZGVjb2RlKHN0cmluZy5zbGljZSg0KS50b0xvd2VyQ2FzZSgpKSA6IHN0cmluZztcblx0fSk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgVW5pY29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZG9tYWluIG5hbWUgb3IgYW4gZW1haWwgYWRkcmVzcyB0b1xuICogUHVueWNvZGUuIE9ubHkgdGhlIG5vbi1BU0NJSSBwYXJ0cyBvZiB0aGUgZG9tYWluIG5hbWUgd2lsbCBiZSBjb252ZXJ0ZWQsXG4gKiBpLmUuIGl0IGRvZXNuJ3QgbWF0dGVyIGlmIHlvdSBjYWxsIGl0IHdpdGggYSBkb21haW4gdGhhdCdzIGFscmVhZHkgaW5cbiAqIEFTQ0lJLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MgdG8gY29udmVydCwgYXMgYVxuICogVW5pY29kZSBzdHJpbmcuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgUHVueWNvZGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGRvbWFpbiBuYW1lIG9yXG4gKiBlbWFpbCBhZGRyZXNzLlxuICovXG52YXIgdG9BU0NJSSA9IGZ1bmN0aW9uIHRvQVNDSUkoaW5wdXQpIHtcblx0cmV0dXJuIG1hcERvbWFpbihpbnB1dCwgZnVuY3Rpb24gKHN0cmluZykge1xuXHRcdHJldHVybiByZWdleE5vbkFTQ0lJLnRlc3Qoc3RyaW5nKSA/ICd4bi0tJyArIGVuY29kZShzdHJpbmcpIDogc3RyaW5nO1xuXHR9KTtcbn07XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKiogRGVmaW5lIHRoZSBwdWJsaWMgQVBJICovXG52YXIgcHVueWNvZGUgPSB7XG5cdC8qKlxuICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBQdW55Y29kZS5qcyB2ZXJzaW9uIG51bWJlci5cbiAgKiBAbWVtYmVyT2YgcHVueWNvZGVcbiAgKiBAdHlwZSBTdHJpbmdcbiAgKi9cblx0J3ZlcnNpb24nOiAnMi4xLjAnLFxuXHQvKipcbiAgKiBBbiBvYmplY3Qgb2YgbWV0aG9kcyB0byBjb252ZXJ0IGZyb20gSmF2YVNjcmlwdCdzIGludGVybmFsIGNoYXJhY3RlclxuICAqIHJlcHJlc2VudGF0aW9uIChVQ1MtMikgdG8gVW5pY29kZSBjb2RlIHBvaW50cywgYW5kIGJhY2suXG4gICogQHNlZSA8aHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmc+XG4gICogQG1lbWJlck9mIHB1bnljb2RlXG4gICogQHR5cGUgT2JqZWN0XG4gICovXG5cdCd1Y3MyJzoge1xuXHRcdCdkZWNvZGUnOiB1Y3MyZGVjb2RlLFxuXHRcdCdlbmNvZGUnOiB1Y3MyZW5jb2RlXG5cdH0sXG5cdCdkZWNvZGUnOiBkZWNvZGUsXG5cdCdlbmNvZGUnOiBlbmNvZGUsXG5cdCd0b0FTQ0lJJzogdG9BU0NJSSxcblx0J3RvVW5pY29kZSc6IHRvVW5pY29kZVxufTtcblxuLyoqXG4gKiBVUkkuanNcbiAqXG4gKiBAZmlsZW92ZXJ2aWV3IEFuIFJGQyAzOTg2IGNvbXBsaWFudCwgc2NoZW1lIGV4dGVuZGFibGUgVVJJIHBhcnNpbmcvdmFsaWRhdGluZy9yZXNvbHZpbmcgbGlicmFyeSBmb3IgSmF2YVNjcmlwdC5cbiAqIEBhdXRob3IgPGEgaHJlZj1cIm1haWx0bzpnYXJ5LmNvdXJ0QGdtYWlsLmNvbVwiPkdhcnkgQ291cnQ8L2E+XG4gKiBAc2VlIGh0dHA6Ly9naXRodWIuY29tL2dhcnljb3VydC91cmktanNcbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMSBHYXJ5IENvdXJ0LiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZVxuICogcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG4gKlxuICogICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2ZcbiAqICAgICAgIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdFxuICogICAgICAgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHNcbiAqICAgICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdBUlkgQ09VUlQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEXG4gKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgR0FSWSBDT1VSVCBPUlxuICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1JcbiAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1JcbiAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT05cbiAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkdcbiAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRlxuICogQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKlxuICogVGhlIHZpZXdzIGFuZCBjb25jbHVzaW9ucyBjb250YWluZWQgaW4gdGhlIHNvZnR3YXJlIGFuZCBkb2N1bWVudGF0aW9uIGFyZSB0aG9zZSBvZiB0aGVcbiAqIGF1dGhvcnMgYW5kIHNob3VsZCBub3QgYmUgaW50ZXJwcmV0ZWQgYXMgcmVwcmVzZW50aW5nIG9mZmljaWFsIHBvbGljaWVzLCBlaXRoZXIgZXhwcmVzc2VkXG4gKiBvciBpbXBsaWVkLCBvZiBHYXJ5IENvdXJ0LlxuICovXG52YXIgU0NIRU1FUyA9IHt9O1xuZnVuY3Rpb24gcGN0RW5jQ2hhcihjaHIpIHtcbiAgICB2YXIgYyA9IGNoci5jaGFyQ29kZUF0KDApO1xuICAgIHZhciBlID0gdm9pZCAwO1xuICAgIGlmIChjIDwgMTYpIGUgPSBcIiUwXCIgKyBjLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO2Vsc2UgaWYgKGMgPCAxMjgpIGUgPSBcIiVcIiArIGMudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7ZWxzZSBpZiAoYyA8IDIwNDgpIGUgPSBcIiVcIiArIChjID4+IDYgfCAxOTIpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpICsgXCIlXCIgKyAoYyAmIDYzIHwgMTI4KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtlbHNlIGUgPSBcIiVcIiArIChjID4+IDEyIHwgMjI0KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSArIFwiJVwiICsgKGMgPj4gNiAmIDYzIHwgMTI4KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSArIFwiJVwiICsgKGMgJiA2MyB8IDEyOCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG4gICAgcmV0dXJuIGU7XG59XG5mdW5jdGlvbiBwY3REZWNDaGFycyhzdHIpIHtcbiAgICB2YXIgbmV3U3RyID0gXCJcIjtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGlsID0gc3RyLmxlbmd0aDtcbiAgICB3aGlsZSAoaSA8IGlsKSB7XG4gICAgICAgIHZhciBjID0gcGFyc2VJbnQoc3RyLnN1YnN0cihpICsgMSwgMiksIDE2KTtcbiAgICAgICAgaWYgKGMgPCAxMjgpIHtcbiAgICAgICAgICAgIG5ld1N0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICAgICAgICAgICAgaSArPSAzO1xuICAgICAgICB9IGVsc2UgaWYgKGMgPj0gMTk0ICYmIGMgPCAyMjQpIHtcbiAgICAgICAgICAgIGlmIChpbCAtIGkgPj0gNikge1xuICAgICAgICAgICAgICAgIHZhciBjMiA9IHBhcnNlSW50KHN0ci5zdWJzdHIoaSArIDQsIDIpLCAxNik7XG4gICAgICAgICAgICAgICAgbmV3U3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGMgJiAzMSkgPDwgNiB8IGMyICYgNjMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdTdHIgKz0gc3RyLnN1YnN0cihpLCA2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGkgKz0gNjtcbiAgICAgICAgfSBlbHNlIGlmIChjID49IDIyNCkge1xuICAgICAgICAgICAgaWYgKGlsIC0gaSA+PSA5KSB7XG4gICAgICAgICAgICAgICAgdmFyIF9jID0gcGFyc2VJbnQoc3RyLnN1YnN0cihpICsgNCwgMiksIDE2KTtcbiAgICAgICAgICAgICAgICB2YXIgYzMgPSBwYXJzZUludChzdHIuc3Vic3RyKGkgKyA3LCAyKSwgMTYpO1xuICAgICAgICAgICAgICAgIG5ld1N0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChjICYgMTUpIDw8IDEyIHwgKF9jICYgNjMpIDw8IDYgfCBjMyAmIDYzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3U3RyICs9IHN0ci5zdWJzdHIoaSwgOSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpICs9IDk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdTdHIgKz0gc3RyLnN1YnN0cihpLCAzKTtcbiAgICAgICAgICAgIGkgKz0gMztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3U3RyO1xufVxuZnVuY3Rpb24gX25vcm1hbGl6ZUNvbXBvbmVudEVuY29kaW5nKGNvbXBvbmVudHMsIHByb3RvY29sKSB7XG4gICAgZnVuY3Rpb24gZGVjb2RlVW5yZXNlcnZlZChzdHIpIHtcbiAgICAgICAgdmFyIGRlY1N0ciA9IHBjdERlY0NoYXJzKHN0cik7XG4gICAgICAgIHJldHVybiAhZGVjU3RyLm1hdGNoKHByb3RvY29sLlVOUkVTRVJWRUQpID8gc3RyIDogZGVjU3RyO1xuICAgIH1cbiAgICBpZiAoY29tcG9uZW50cy5zY2hlbWUpIGNvbXBvbmVudHMuc2NoZW1lID0gU3RyaW5nKGNvbXBvbmVudHMuc2NoZW1lKS5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCBkZWNvZGVVbnJlc2VydmVkKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UocHJvdG9jb2wuTk9UX1NDSEVNRSwgXCJcIik7XG4gICAgaWYgKGNvbXBvbmVudHMudXNlcmluZm8gIT09IHVuZGVmaW5lZCkgY29tcG9uZW50cy51c2VyaW5mbyA9IFN0cmluZyhjb21wb25lbnRzLnVzZXJpbmZvKS5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCBkZWNvZGVVbnJlc2VydmVkKS5yZXBsYWNlKHByb3RvY29sLk5PVF9VU0VSSU5GTywgcGN0RW5jQ2hhcikucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgdG9VcHBlckNhc2UpO1xuICAgIGlmIChjb21wb25lbnRzLmhvc3QgIT09IHVuZGVmaW5lZCkgY29tcG9uZW50cy5ob3N0ID0gU3RyaW5nKGNvbXBvbmVudHMuaG9zdCkucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKHByb3RvY29sLk5PVF9IT1NULCBwY3RFbmNDaGFyKS5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCB0b1VwcGVyQ2FzZSk7XG4gICAgaWYgKGNvbXBvbmVudHMucGF0aCAhPT0gdW5kZWZpbmVkKSBjb21wb25lbnRzLnBhdGggPSBTdHJpbmcoY29tcG9uZW50cy5wYXRoKS5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCBkZWNvZGVVbnJlc2VydmVkKS5yZXBsYWNlKGNvbXBvbmVudHMuc2NoZW1lID8gcHJvdG9jb2wuTk9UX1BBVEggOiBwcm90b2NvbC5OT1RfUEFUSF9OT1NDSEVNRSwgcGN0RW5jQ2hhcikucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgdG9VcHBlckNhc2UpO1xuICAgIGlmIChjb21wb25lbnRzLnF1ZXJ5ICE9PSB1bmRlZmluZWQpIGNvbXBvbmVudHMucXVlcnkgPSBTdHJpbmcoY29tcG9uZW50cy5xdWVyeSkucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkucmVwbGFjZShwcm90b2NvbC5OT1RfUVVFUlksIHBjdEVuY0NoYXIpLnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIHRvVXBwZXJDYXNlKTtcbiAgICBpZiAoY29tcG9uZW50cy5mcmFnbWVudCAhPT0gdW5kZWZpbmVkKSBjb21wb25lbnRzLmZyYWdtZW50ID0gU3RyaW5nKGNvbXBvbmVudHMuZnJhZ21lbnQpLnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIGRlY29kZVVucmVzZXJ2ZWQpLnJlcGxhY2UocHJvdG9jb2wuTk9UX0ZSQUdNRU5ULCBwY3RFbmNDaGFyKS5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCB0b1VwcGVyQ2FzZSk7XG4gICAgcmV0dXJuIGNvbXBvbmVudHM7XG59XG5cbmZ1bmN0aW9uIF9zdHJpcExlYWRpbmdaZXJvcyhzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL14wKiguKikvLCBcIiQxXCIpIHx8IFwiMFwiO1xufVxuZnVuY3Rpb24gX25vcm1hbGl6ZUlQdjQoaG9zdCwgcHJvdG9jb2wpIHtcbiAgICB2YXIgbWF0Y2hlcyA9IGhvc3QubWF0Y2gocHJvdG9jb2wuSVBWNEFERFJFU1MpIHx8IFtdO1xuXG4gICAgdmFyIF9tYXRjaGVzID0gc2xpY2VkVG9BcnJheShtYXRjaGVzLCAyKSxcbiAgICAgICAgYWRkcmVzcyA9IF9tYXRjaGVzWzFdO1xuXG4gICAgaWYgKGFkZHJlc3MpIHtcbiAgICAgICAgcmV0dXJuIGFkZHJlc3Muc3BsaXQoXCIuXCIpLm1hcChfc3RyaXBMZWFkaW5nWmVyb3MpLmpvaW4oXCIuXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBob3N0O1xuICAgIH1cbn1cbmZ1bmN0aW9uIF9ub3JtYWxpemVJUHY2KGhvc3QsIHByb3RvY29sKSB7XG4gICAgdmFyIG1hdGNoZXMgPSBob3N0Lm1hdGNoKHByb3RvY29sLklQVjZBRERSRVNTKSB8fCBbXTtcblxuICAgIHZhciBfbWF0Y2hlczIgPSBzbGljZWRUb0FycmF5KG1hdGNoZXMsIDMpLFxuICAgICAgICBhZGRyZXNzID0gX21hdGNoZXMyWzFdLFxuICAgICAgICB6b25lID0gX21hdGNoZXMyWzJdO1xuXG4gICAgaWYgKGFkZHJlc3MpIHtcbiAgICAgICAgdmFyIF9hZGRyZXNzJHRvTG93ZXJDYXNlJCA9IGFkZHJlc3MudG9Mb3dlckNhc2UoKS5zcGxpdCgnOjonKS5yZXZlcnNlKCksXG4gICAgICAgICAgICBfYWRkcmVzcyR0b0xvd2VyQ2FzZSQyID0gc2xpY2VkVG9BcnJheShfYWRkcmVzcyR0b0xvd2VyQ2FzZSQsIDIpLFxuICAgICAgICAgICAgbGFzdCA9IF9hZGRyZXNzJHRvTG93ZXJDYXNlJDJbMF0sXG4gICAgICAgICAgICBmaXJzdCA9IF9hZGRyZXNzJHRvTG93ZXJDYXNlJDJbMV07XG5cbiAgICAgICAgdmFyIGZpcnN0RmllbGRzID0gZmlyc3QgPyBmaXJzdC5zcGxpdChcIjpcIikubWFwKF9zdHJpcExlYWRpbmdaZXJvcykgOiBbXTtcbiAgICAgICAgdmFyIGxhc3RGaWVsZHMgPSBsYXN0LnNwbGl0KFwiOlwiKS5tYXAoX3N0cmlwTGVhZGluZ1plcm9zKTtcbiAgICAgICAgdmFyIGlzTGFzdEZpZWxkSVB2NEFkZHJlc3MgPSBwcm90b2NvbC5JUFY0QUREUkVTUy50ZXN0KGxhc3RGaWVsZHNbbGFzdEZpZWxkcy5sZW5ndGggLSAxXSk7XG4gICAgICAgIHZhciBmaWVsZENvdW50ID0gaXNMYXN0RmllbGRJUHY0QWRkcmVzcyA/IDcgOiA4O1xuICAgICAgICB2YXIgbGFzdEZpZWxkc1N0YXJ0ID0gbGFzdEZpZWxkcy5sZW5ndGggLSBmaWVsZENvdW50O1xuICAgICAgICB2YXIgZmllbGRzID0gQXJyYXkoZmllbGRDb3VudCk7XG4gICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgZmllbGRDb3VudDsgKyt4KSB7XG4gICAgICAgICAgICBmaWVsZHNbeF0gPSBmaXJzdEZpZWxkc1t4XSB8fCBsYXN0RmllbGRzW2xhc3RGaWVsZHNTdGFydCArIHhdIHx8ICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0xhc3RGaWVsZElQdjRBZGRyZXNzKSB7XG4gICAgICAgICAgICBmaWVsZHNbZmllbGRDb3VudCAtIDFdID0gX25vcm1hbGl6ZUlQdjQoZmllbGRzW2ZpZWxkQ291bnQgLSAxXSwgcHJvdG9jb2wpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhbGxaZXJvRmllbGRzID0gZmllbGRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBmaWVsZCwgaW5kZXgpIHtcbiAgICAgICAgICAgIGlmICghZmllbGQgfHwgZmllbGQgPT09IFwiMFwiKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxhc3RMb25nZXN0ID0gYWNjW2FjYy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBpZiAobGFzdExvbmdlc3QgJiYgbGFzdExvbmdlc3QuaW5kZXggKyBsYXN0TG9uZ2VzdC5sZW5ndGggPT09IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIGxhc3RMb25nZXN0Lmxlbmd0aCsrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGFjYy5wdXNoKHsgaW5kZXg6IGluZGV4LCBsZW5ndGg6IDEgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwgW10pO1xuICAgICAgICB2YXIgbG9uZ2VzdFplcm9GaWVsZHMgPSBhbGxaZXJvRmllbGRzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoO1xuICAgICAgICB9KVswXTtcbiAgICAgICAgdmFyIG5ld0hvc3QgPSB2b2lkIDA7XG4gICAgICAgIGlmIChsb25nZXN0WmVyb0ZpZWxkcyAmJiBsb25nZXN0WmVyb0ZpZWxkcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB2YXIgbmV3Rmlyc3QgPSBmaWVsZHMuc2xpY2UoMCwgbG9uZ2VzdFplcm9GaWVsZHMuaW5kZXgpO1xuICAgICAgICAgICAgdmFyIG5ld0xhc3QgPSBmaWVsZHMuc2xpY2UobG9uZ2VzdFplcm9GaWVsZHMuaW5kZXggKyBsb25nZXN0WmVyb0ZpZWxkcy5sZW5ndGgpO1xuICAgICAgICAgICAgbmV3SG9zdCA9IG5ld0ZpcnN0LmpvaW4oXCI6XCIpICsgXCI6OlwiICsgbmV3TGFzdC5qb2luKFwiOlwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld0hvc3QgPSBmaWVsZHMuam9pbihcIjpcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHpvbmUpIHtcbiAgICAgICAgICAgIG5ld0hvc3QgKz0gXCIlXCIgKyB6b25lO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdIb3N0O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBob3N0O1xuICAgIH1cbn1cbnZhciBVUklfUEFSU0UgPSAvXig/OihbXjpcXC8/I10rKTopPyg/OlxcL1xcLygoPzooW15cXC8/I0BdKilAKT8oXFxbW15cXC8/I1xcXV0rXFxdfFteXFwvPyM6XSopKD86XFw6KFxcZCopKT8pKT8oW14/I10qKSg/OlxcPyhbXiNdKikpPyg/OiMoKD86LnxcXG58XFxyKSopKT8vaTtcbnZhciBOT19NQVRDSF9JU19VTkRFRklORUQgPSBcIlwiLm1hdGNoKC8oKXswfS8pWzFdID09PSB1bmRlZmluZWQ7XG5mdW5jdGlvbiBwYXJzZSh1cmlTdHJpbmcpIHtcbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgICB2YXIgY29tcG9uZW50cyA9IHt9O1xuICAgIHZhciBwcm90b2NvbCA9IG9wdGlvbnMuaXJpICE9PSBmYWxzZSA/IElSSV9QUk9UT0NPTCA6IFVSSV9QUk9UT0NPTDtcbiAgICBpZiAob3B0aW9ucy5yZWZlcmVuY2UgPT09IFwic3VmZml4XCIpIHVyaVN0cmluZyA9IChvcHRpb25zLnNjaGVtZSA/IG9wdGlvbnMuc2NoZW1lICsgXCI6XCIgOiBcIlwiKSArIFwiLy9cIiArIHVyaVN0cmluZztcbiAgICB2YXIgbWF0Y2hlcyA9IHVyaVN0cmluZy5tYXRjaChVUklfUEFSU0UpO1xuICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgIGlmIChOT19NQVRDSF9JU19VTkRFRklORUQpIHtcbiAgICAgICAgICAgIC8vc3RvcmUgZWFjaCBjb21wb25lbnRcbiAgICAgICAgICAgIGNvbXBvbmVudHMuc2NoZW1lID0gbWF0Y2hlc1sxXTtcbiAgICAgICAgICAgIGNvbXBvbmVudHMudXNlcmluZm8gPSBtYXRjaGVzWzNdO1xuICAgICAgICAgICAgY29tcG9uZW50cy5ob3N0ID0gbWF0Y2hlc1s0XTtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucG9ydCA9IHBhcnNlSW50KG1hdGNoZXNbNV0sIDEwKTtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucGF0aCA9IG1hdGNoZXNbNl0gfHwgXCJcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucXVlcnkgPSBtYXRjaGVzWzddO1xuICAgICAgICAgICAgY29tcG9uZW50cy5mcmFnbWVudCA9IG1hdGNoZXNbOF07XG4gICAgICAgICAgICAvL2ZpeCBwb3J0IG51bWJlclxuICAgICAgICAgICAgaWYgKGlzTmFOKGNvbXBvbmVudHMucG9ydCkpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRzLnBvcnQgPSBtYXRjaGVzWzVdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy9JRSBGSVggZm9yIGltcHJvcGVyIFJlZ0V4cCBtYXRjaGluZ1xuICAgICAgICAgICAgLy9zdG9yZSBlYWNoIGNvbXBvbmVudFxuICAgICAgICAgICAgY29tcG9uZW50cy5zY2hlbWUgPSBtYXRjaGVzWzFdIHx8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbXBvbmVudHMudXNlcmluZm8gPSB1cmlTdHJpbmcuaW5kZXhPZihcIkBcIikgIT09IC0xID8gbWF0Y2hlc1szXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuaG9zdCA9IHVyaVN0cmluZy5pbmRleE9mKFwiLy9cIikgIT09IC0xID8gbWF0Y2hlc1s0XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucG9ydCA9IHBhcnNlSW50KG1hdGNoZXNbNV0sIDEwKTtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucGF0aCA9IG1hdGNoZXNbNl0gfHwgXCJcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucXVlcnkgPSB1cmlTdHJpbmcuaW5kZXhPZihcIj9cIikgIT09IC0xID8gbWF0Y2hlc1s3XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuZnJhZ21lbnQgPSB1cmlTdHJpbmcuaW5kZXhPZihcIiNcIikgIT09IC0xID8gbWF0Y2hlc1s4XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIC8vZml4IHBvcnQgbnVtYmVyXG4gICAgICAgICAgICBpZiAoaXNOYU4oY29tcG9uZW50cy5wb3J0KSkge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudHMucG9ydCA9IHVyaVN0cmluZy5tYXRjaCgvXFwvXFwvKD86LnxcXG4pKlxcOig/OlxcL3xcXD98XFwjfCQpLykgPyBtYXRjaGVzWzRdIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjb21wb25lbnRzLmhvc3QpIHtcbiAgICAgICAgICAgIC8vbm9ybWFsaXplIElQIGhvc3RzXG4gICAgICAgICAgICBjb21wb25lbnRzLmhvc3QgPSBfbm9ybWFsaXplSVB2Nihfbm9ybWFsaXplSVB2NChjb21wb25lbnRzLmhvc3QsIHByb3RvY29sKSwgcHJvdG9jb2wpO1xuICAgICAgICB9XG4gICAgICAgIC8vZGV0ZXJtaW5lIHJlZmVyZW5jZSB0eXBlXG4gICAgICAgIGlmIChjb21wb25lbnRzLnNjaGVtZSA9PT0gdW5kZWZpbmVkICYmIGNvbXBvbmVudHMudXNlcmluZm8gPT09IHVuZGVmaW5lZCAmJiBjb21wb25lbnRzLmhvc3QgPT09IHVuZGVmaW5lZCAmJiBjb21wb25lbnRzLnBvcnQgPT09IHVuZGVmaW5lZCAmJiAhY29tcG9uZW50cy5wYXRoICYmIGNvbXBvbmVudHMucXVlcnkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29tcG9uZW50cy5yZWZlcmVuY2UgPSBcInNhbWUtZG9jdW1lbnRcIjtcbiAgICAgICAgfSBlbHNlIGlmIChjb21wb25lbnRzLnNjaGVtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb21wb25lbnRzLnJlZmVyZW5jZSA9IFwicmVsYXRpdmVcIjtcbiAgICAgICAgfSBlbHNlIGlmIChjb21wb25lbnRzLmZyYWdtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucmVmZXJlbmNlID0gXCJhYnNvbHV0ZVwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29tcG9uZW50cy5yZWZlcmVuY2UgPSBcInVyaVwiO1xuICAgICAgICB9XG4gICAgICAgIC8vY2hlY2sgZm9yIHJlZmVyZW5jZSBlcnJvcnNcbiAgICAgICAgaWYgKG9wdGlvbnMucmVmZXJlbmNlICYmIG9wdGlvbnMucmVmZXJlbmNlICE9PSBcInN1ZmZpeFwiICYmIG9wdGlvbnMucmVmZXJlbmNlICE9PSBjb21wb25lbnRzLnJlZmVyZW5jZSkge1xuICAgICAgICAgICAgY29tcG9uZW50cy5lcnJvciA9IGNvbXBvbmVudHMuZXJyb3IgfHwgXCJVUkkgaXMgbm90IGEgXCIgKyBvcHRpb25zLnJlZmVyZW5jZSArIFwiIHJlZmVyZW5jZS5cIjtcbiAgICAgICAgfVxuICAgICAgICAvL2ZpbmQgc2NoZW1lIGhhbmRsZXJcbiAgICAgICAgdmFyIHNjaGVtZUhhbmRsZXIgPSBTQ0hFTUVTWyhvcHRpb25zLnNjaGVtZSB8fCBjb21wb25lbnRzLnNjaGVtZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpXTtcbiAgICAgICAgLy9jaGVjayBpZiBzY2hlbWUgY2FuJ3QgaGFuZGxlIElSSXNcbiAgICAgICAgaWYgKCFvcHRpb25zLnVuaWNvZGVTdXBwb3J0ICYmICghc2NoZW1lSGFuZGxlciB8fCAhc2NoZW1lSGFuZGxlci51bmljb2RlU3VwcG9ydCkpIHtcbiAgICAgICAgICAgIC8vaWYgaG9zdCBjb21wb25lbnQgaXMgYSBkb21haW4gbmFtZVxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuaG9zdCAmJiAob3B0aW9ucy5kb21haW5Ib3N0IHx8IHNjaGVtZUhhbmRsZXIgJiYgc2NoZW1lSGFuZGxlci5kb21haW5Ib3N0KSkge1xuICAgICAgICAgICAgICAgIC8vY29udmVydCBVbmljb2RlIElETiAtPiBBU0NJSSBJRE5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLmhvc3QgPSBwdW55Y29kZS50b0FTQ0lJKGNvbXBvbmVudHMuaG9zdC5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCBwY3REZWNDaGFycykudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLmVycm9yID0gY29tcG9uZW50cy5lcnJvciB8fCBcIkhvc3QncyBkb21haW4gbmFtZSBjYW4gbm90IGJlIGNvbnZlcnRlZCB0byBBU0NJSSB2aWEgcHVueWNvZGU6IFwiICsgZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL2NvbnZlcnQgSVJJIC0+IFVSSVxuICAgICAgICAgICAgX25vcm1hbGl6ZUNvbXBvbmVudEVuY29kaW5nKGNvbXBvbmVudHMsIFVSSV9QUk9UT0NPTCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvL25vcm1hbGl6ZSBlbmNvZGluZ3NcbiAgICAgICAgICAgIF9ub3JtYWxpemVDb21wb25lbnRFbmNvZGluZyhjb21wb25lbnRzLCBwcm90b2NvbCk7XG4gICAgICAgIH1cbiAgICAgICAgLy9wZXJmb3JtIHNjaGVtZSBzcGVjaWZpYyBwYXJzaW5nXG4gICAgICAgIGlmIChzY2hlbWVIYW5kbGVyICYmIHNjaGVtZUhhbmRsZXIucGFyc2UpIHtcbiAgICAgICAgICAgIHNjaGVtZUhhbmRsZXIucGFyc2UoY29tcG9uZW50cywgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBjb21wb25lbnRzLmVycm9yID0gY29tcG9uZW50cy5lcnJvciB8fCBcIlVSSSBjYW4gbm90IGJlIHBhcnNlZC5cIjtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBvbmVudHM7XG59XG5cbmZ1bmN0aW9uIF9yZWNvbXBvc2VBdXRob3JpdHkoY29tcG9uZW50cywgb3B0aW9ucykge1xuICAgIHZhciBwcm90b2NvbCA9IG9wdGlvbnMuaXJpICE9PSBmYWxzZSA/IElSSV9QUk9UT0NPTCA6IFVSSV9QUk9UT0NPTDtcbiAgICB2YXIgdXJpVG9rZW5zID0gW107XG4gICAgaWYgKGNvbXBvbmVudHMudXNlcmluZm8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cmlUb2tlbnMucHVzaChjb21wb25lbnRzLnVzZXJpbmZvKTtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goXCJAXCIpO1xuICAgIH1cbiAgICBpZiAoY29tcG9uZW50cy5ob3N0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy9ub3JtYWxpemUgSVAgaG9zdHMsIGFkZCBicmFja2V0cyBhbmQgZXNjYXBlIHpvbmUgc2VwYXJhdG9yIGZvciBJUHY2XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKF9ub3JtYWxpemVJUHY2KF9ub3JtYWxpemVJUHY0KFN0cmluZyhjb21wb25lbnRzLmhvc3QpLCBwcm90b2NvbCksIHByb3RvY29sKS5yZXBsYWNlKHByb3RvY29sLklQVjZBRERSRVNTLCBmdW5jdGlvbiAoXywgJDEsICQyKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJbXCIgKyAkMSArICgkMiA/IFwiJTI1XCIgKyAkMiA6IFwiXCIpICsgXCJdXCI7XG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjb21wb25lbnRzLnBvcnQgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIGNvbXBvbmVudHMucG9ydCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICB1cmlUb2tlbnMucHVzaChcIjpcIik7XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKFN0cmluZyhjb21wb25lbnRzLnBvcnQpKTtcbiAgICB9XG4gICAgcmV0dXJuIHVyaVRva2Vucy5sZW5ndGggPyB1cmlUb2tlbnMuam9pbihcIlwiKSA6IHVuZGVmaW5lZDtcbn1cblxudmFyIFJEUzEgPSAvXlxcLlxcLj9cXC8vO1xudmFyIFJEUzIgPSAvXlxcL1xcLihcXC98JCkvO1xudmFyIFJEUzMgPSAvXlxcL1xcLlxcLihcXC98JCkvO1xudmFyIFJEUzUgPSAvXlxcLz8oPzoufFxcbikqPyg/PVxcL3wkKS87XG5mdW5jdGlvbiByZW1vdmVEb3RTZWdtZW50cyhpbnB1dCkge1xuICAgIHZhciBvdXRwdXQgPSBbXTtcbiAgICB3aGlsZSAoaW5wdXQubGVuZ3RoKSB7XG4gICAgICAgIGlmIChpbnB1dC5tYXRjaChSRFMxKSkge1xuICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKFJEUzEsIFwiXCIpO1xuICAgICAgICB9IGVsc2UgaWYgKGlucHV0Lm1hdGNoKFJEUzIpKSB7XG4gICAgICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoUkRTMiwgXCIvXCIpO1xuICAgICAgICB9IGVsc2UgaWYgKGlucHV0Lm1hdGNoKFJEUzMpKSB7XG4gICAgICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoUkRTMywgXCIvXCIpO1xuICAgICAgICAgICAgb3V0cHV0LnBvcCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09PSBcIi5cIiB8fCBpbnB1dCA9PT0gXCIuLlwiKSB7XG4gICAgICAgICAgICBpbnB1dCA9IFwiXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaW0gPSBpbnB1dC5tYXRjaChSRFM1KTtcbiAgICAgICAgICAgIGlmIChpbSkge1xuICAgICAgICAgICAgICAgIHZhciBzID0gaW1bMF07XG4gICAgICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5zbGljZShzLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgb3V0cHV0LnB1c2gocyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgZG90IHNlZ21lbnQgY29uZGl0aW9uXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQuam9pbihcIlwiKTtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplKGNvbXBvbmVudHMpIHtcbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgICB2YXIgcHJvdG9jb2wgPSBvcHRpb25zLmlyaSA/IElSSV9QUk9UT0NPTCA6IFVSSV9QUk9UT0NPTDtcbiAgICB2YXIgdXJpVG9rZW5zID0gW107XG4gICAgLy9maW5kIHNjaGVtZSBoYW5kbGVyXG4gICAgdmFyIHNjaGVtZUhhbmRsZXIgPSBTQ0hFTUVTWyhvcHRpb25zLnNjaGVtZSB8fCBjb21wb25lbnRzLnNjaGVtZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpXTtcbiAgICAvL3BlcmZvcm0gc2NoZW1lIHNwZWNpZmljIHNlcmlhbGl6YXRpb25cbiAgICBpZiAoc2NoZW1lSGFuZGxlciAmJiBzY2hlbWVIYW5kbGVyLnNlcmlhbGl6ZSkgc2NoZW1lSGFuZGxlci5zZXJpYWxpemUoY29tcG9uZW50cywgb3B0aW9ucyk7XG4gICAgaWYgKGNvbXBvbmVudHMuaG9zdCkge1xuICAgICAgICAvL2lmIGhvc3QgY29tcG9uZW50IGlzIGFuIElQdjYgYWRkcmVzc1xuICAgICAgICBpZiAocHJvdG9jb2wuSVBWNkFERFJFU1MudGVzdChjb21wb25lbnRzLmhvc3QpKSB7fVxuICAgICAgICAvL1RPRE86IG5vcm1hbGl6ZSBJUHY2IGFkZHJlc3MgYXMgcGVyIFJGQyA1OTUyXG5cbiAgICAgICAgLy9pZiBob3N0IGNvbXBvbmVudCBpcyBhIGRvbWFpbiBuYW1lXG4gICAgICAgIGVsc2UgaWYgKG9wdGlvbnMuZG9tYWluSG9zdCB8fCBzY2hlbWVIYW5kbGVyICYmIHNjaGVtZUhhbmRsZXIuZG9tYWluSG9zdCkge1xuICAgICAgICAgICAgICAgIC8vY29udmVydCBJRE4gdmlhIHB1bnljb2RlXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5ob3N0ID0gIW9wdGlvbnMuaXJpID8gcHVueWNvZGUudG9BU0NJSShjb21wb25lbnRzLmhvc3QucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgcGN0RGVjQ2hhcnMpLnRvTG93ZXJDYXNlKCkpIDogcHVueWNvZGUudG9Vbmljb2RlKGNvbXBvbmVudHMuaG9zdCk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLmVycm9yID0gY29tcG9uZW50cy5lcnJvciB8fCBcIkhvc3QncyBkb21haW4gbmFtZSBjYW4gbm90IGJlIGNvbnZlcnRlZCB0byBcIiArICghb3B0aW9ucy5pcmkgPyBcIkFTQ0lJXCIgOiBcIlVuaWNvZGVcIikgKyBcIiB2aWEgcHVueWNvZGU6IFwiICsgZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgfVxuICAgIC8vbm9ybWFsaXplIGVuY29kaW5nXG4gICAgX25vcm1hbGl6ZUNvbXBvbmVudEVuY29kaW5nKGNvbXBvbmVudHMsIHByb3RvY29sKTtcbiAgICBpZiAob3B0aW9ucy5yZWZlcmVuY2UgIT09IFwic3VmZml4XCIgJiYgY29tcG9uZW50cy5zY2hlbWUpIHtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goY29tcG9uZW50cy5zY2hlbWUpO1xuICAgICAgICB1cmlUb2tlbnMucHVzaChcIjpcIik7XG4gICAgfVxuICAgIHZhciBhdXRob3JpdHkgPSBfcmVjb21wb3NlQXV0aG9yaXR5KGNvbXBvbmVudHMsIG9wdGlvbnMpO1xuICAgIGlmIChhdXRob3JpdHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAob3B0aW9ucy5yZWZlcmVuY2UgIT09IFwic3VmZml4XCIpIHtcbiAgICAgICAgICAgIHVyaVRva2Vucy5wdXNoKFwiLy9cIik7XG4gICAgICAgIH1cbiAgICAgICAgdXJpVG9rZW5zLnB1c2goYXV0aG9yaXR5KTtcbiAgICAgICAgaWYgKGNvbXBvbmVudHMucGF0aCAmJiBjb21wb25lbnRzLnBhdGguY2hhckF0KDApICE9PSBcIi9cIikge1xuICAgICAgICAgICAgdXJpVG9rZW5zLnB1c2goXCIvXCIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChjb21wb25lbnRzLnBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YXIgcyA9IGNvbXBvbmVudHMucGF0aDtcbiAgICAgICAgaWYgKCFvcHRpb25zLmFic29sdXRlUGF0aCAmJiAoIXNjaGVtZUhhbmRsZXIgfHwgIXNjaGVtZUhhbmRsZXIuYWJzb2x1dGVQYXRoKSkge1xuICAgICAgICAgICAgcyA9IHJlbW92ZURvdFNlZ21lbnRzKHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhdXRob3JpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcyA9IHMucmVwbGFjZSgvXlxcL1xcLy8sIFwiLyUyRlwiKTsgLy9kb24ndCBhbGxvdyB0aGUgcGF0aCB0byBzdGFydCB3aXRoIFwiLy9cIlxuICAgICAgICB9XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKHMpO1xuICAgIH1cbiAgICBpZiAoY29tcG9uZW50cy5xdWVyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKFwiP1wiKTtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goY29tcG9uZW50cy5xdWVyeSk7XG4gICAgfVxuICAgIGlmIChjb21wb25lbnRzLmZyYWdtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goXCIjXCIpO1xuICAgICAgICB1cmlUb2tlbnMucHVzaChjb21wb25lbnRzLmZyYWdtZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIHVyaVRva2Vucy5qb2luKFwiXCIpOyAvL21lcmdlIHRva2VucyBpbnRvIGEgc3RyaW5nXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVDb21wb25lbnRzKGJhc2UsIHJlbGF0aXZlKSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHt9O1xuICAgIHZhciBza2lwTm9ybWFsaXphdGlvbiA9IGFyZ3VtZW50c1szXTtcblxuICAgIHZhciB0YXJnZXQgPSB7fTtcbiAgICBpZiAoIXNraXBOb3JtYWxpemF0aW9uKSB7XG4gICAgICAgIGJhc2UgPSBwYXJzZShzZXJpYWxpemUoYmFzZSwgb3B0aW9ucyksIG9wdGlvbnMpOyAvL25vcm1hbGl6ZSBiYXNlIGNvbXBvbmVudHNcbiAgICAgICAgcmVsYXRpdmUgPSBwYXJzZShzZXJpYWxpemUocmVsYXRpdmUsIG9wdGlvbnMpLCBvcHRpb25zKTsgLy9ub3JtYWxpemUgcmVsYXRpdmUgY29tcG9uZW50c1xuICAgIH1cbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICBpZiAoIW9wdGlvbnMudG9sZXJhbnQgJiYgcmVsYXRpdmUuc2NoZW1lKSB7XG4gICAgICAgIHRhcmdldC5zY2hlbWUgPSByZWxhdGl2ZS5zY2hlbWU7XG4gICAgICAgIC8vdGFyZ2V0LmF1dGhvcml0eSA9IHJlbGF0aXZlLmF1dGhvcml0eTtcbiAgICAgICAgdGFyZ2V0LnVzZXJpbmZvID0gcmVsYXRpdmUudXNlcmluZm87XG4gICAgICAgIHRhcmdldC5ob3N0ID0gcmVsYXRpdmUuaG9zdDtcbiAgICAgICAgdGFyZ2V0LnBvcnQgPSByZWxhdGl2ZS5wb3J0O1xuICAgICAgICB0YXJnZXQucGF0aCA9IHJlbW92ZURvdFNlZ21lbnRzKHJlbGF0aXZlLnBhdGggfHwgXCJcIik7XG4gICAgICAgIHRhcmdldC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChyZWxhdGl2ZS51c2VyaW5mbyAhPT0gdW5kZWZpbmVkIHx8IHJlbGF0aXZlLmhvc3QgIT09IHVuZGVmaW5lZCB8fCByZWxhdGl2ZS5wb3J0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vdGFyZ2V0LmF1dGhvcml0eSA9IHJlbGF0aXZlLmF1dGhvcml0eTtcbiAgICAgICAgICAgIHRhcmdldC51c2VyaW5mbyA9IHJlbGF0aXZlLnVzZXJpbmZvO1xuICAgICAgICAgICAgdGFyZ2V0Lmhvc3QgPSByZWxhdGl2ZS5ob3N0O1xuICAgICAgICAgICAgdGFyZ2V0LnBvcnQgPSByZWxhdGl2ZS5wb3J0O1xuICAgICAgICAgICAgdGFyZ2V0LnBhdGggPSByZW1vdmVEb3RTZWdtZW50cyhyZWxhdGl2ZS5wYXRoIHx8IFwiXCIpO1xuICAgICAgICAgICAgdGFyZ2V0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXJlbGF0aXZlLnBhdGgpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQucGF0aCA9IGJhc2UucGF0aDtcbiAgICAgICAgICAgICAgICBpZiAocmVsYXRpdmUucXVlcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQucXVlcnkgPSBiYXNlLnF1ZXJ5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlbGF0aXZlLnBhdGguY2hhckF0KDApID09PSBcIi9cIikge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQucGF0aCA9IHJlbW92ZURvdFNlZ21lbnRzKHJlbGF0aXZlLnBhdGgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgoYmFzZS51c2VyaW5mbyAhPT0gdW5kZWZpbmVkIHx8IGJhc2UuaG9zdCAhPT0gdW5kZWZpbmVkIHx8IGJhc2UucG9ydCAhPT0gdW5kZWZpbmVkKSAmJiAhYmFzZS5wYXRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQucGF0aCA9IFwiL1wiICsgcmVsYXRpdmUucGF0aDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghYmFzZS5wYXRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQucGF0aCA9IHJlbGF0aXZlLnBhdGg7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQucGF0aCA9IGJhc2UucGF0aC5zbGljZSgwLCBiYXNlLnBhdGgubGFzdEluZGV4T2YoXCIvXCIpICsgMSkgKyByZWxhdGl2ZS5wYXRoO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5wYXRoID0gcmVtb3ZlRG90U2VnbWVudHModGFyZ2V0LnBhdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0YXJnZXQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vdGFyZ2V0LmF1dGhvcml0eSA9IGJhc2UuYXV0aG9yaXR5O1xuICAgICAgICAgICAgdGFyZ2V0LnVzZXJpbmZvID0gYmFzZS51c2VyaW5mbztcbiAgICAgICAgICAgIHRhcmdldC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgICAgdGFyZ2V0LnBvcnQgPSBiYXNlLnBvcnQ7XG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0LnNjaGVtZSA9IGJhc2Uuc2NoZW1lO1xuICAgIH1cbiAgICB0YXJnZXQuZnJhZ21lbnQgPSByZWxhdGl2ZS5mcmFnbWVudDtcbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiByZXNvbHZlKGJhc2VVUkksIHJlbGF0aXZlVVJJLCBvcHRpb25zKSB7XG4gICAgdmFyIHNjaGVtZWxlc3NPcHRpb25zID0gYXNzaWduKHsgc2NoZW1lOiAnbnVsbCcgfSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZShyZXNvbHZlQ29tcG9uZW50cyhwYXJzZShiYXNlVVJJLCBzY2hlbWVsZXNzT3B0aW9ucyksIHBhcnNlKHJlbGF0aXZlVVJJLCBzY2hlbWVsZXNzT3B0aW9ucyksIHNjaGVtZWxlc3NPcHRpb25zLCB0cnVlKSwgc2NoZW1lbGVzc09wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemUodXJpLCBvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiB1cmkgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdXJpID0gc2VyaWFsaXplKHBhcnNlKHVyaSwgb3B0aW9ucyksIG9wdGlvbnMpO1xuICAgIH0gZWxzZSBpZiAodHlwZU9mKHVyaSkgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgdXJpID0gcGFyc2Uoc2VyaWFsaXplKHVyaSwgb3B0aW9ucyksIG9wdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gdXJpO1xufVxuXG5mdW5jdGlvbiBlcXVhbCh1cmlBLCB1cmlCLCBvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiB1cmlBID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHVyaUEgPSBzZXJpYWxpemUocGFyc2UodXJpQSwgb3B0aW9ucyksIG9wdGlvbnMpO1xuICAgIH0gZWxzZSBpZiAodHlwZU9mKHVyaUEpID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIHVyaUEgPSBzZXJpYWxpemUodXJpQSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdXJpQiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICB1cmlCID0gc2VyaWFsaXplKHBhcnNlKHVyaUIsIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVPZih1cmlCKSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICB1cmlCID0gc2VyaWFsaXplKHVyaUIsIG9wdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gdXJpQSA9PT0gdXJpQjtcbn1cblxuZnVuY3Rpb24gZXNjYXBlQ29tcG9uZW50KHN0ciwgb3B0aW9ucykge1xuICAgIHJldHVybiBzdHIgJiYgc3RyLnRvU3RyaW5nKCkucmVwbGFjZSghb3B0aW9ucyB8fCAhb3B0aW9ucy5pcmkgPyBVUklfUFJPVE9DT0wuRVNDQVBFIDogSVJJX1BST1RPQ09MLkVTQ0FQRSwgcGN0RW5jQ2hhcik7XG59XG5cbmZ1bmN0aW9uIHVuZXNjYXBlQ29tcG9uZW50KHN0ciwgb3B0aW9ucykge1xuICAgIHJldHVybiBzdHIgJiYgc3RyLnRvU3RyaW5nKCkucmVwbGFjZSghb3B0aW9ucyB8fCAhb3B0aW9ucy5pcmkgPyBVUklfUFJPVE9DT0wuUENUX0VOQ09ERUQgOiBJUklfUFJPVE9DT0wuUENUX0VOQ09ERUQsIHBjdERlY0NoYXJzKTtcbn1cblxudmFyIGhhbmRsZXIgPSB7XG4gICAgc2NoZW1lOiBcImh0dHBcIixcbiAgICBkb21haW5Ib3N0OiB0cnVlLFxuICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZShjb21wb25lbnRzLCBvcHRpb25zKSB7XG4gICAgICAgIC8vcmVwb3J0IG1pc3NpbmcgaG9zdFxuICAgICAgICBpZiAoIWNvbXBvbmVudHMuaG9zdCkge1xuICAgICAgICAgICAgY29tcG9uZW50cy5lcnJvciA9IGNvbXBvbmVudHMuZXJyb3IgfHwgXCJIVFRQIFVSSXMgbXVzdCBoYXZlIGEgaG9zdC5cIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29tcG9uZW50cztcbiAgICB9LFxuICAgIHNlcmlhbGl6ZTogZnVuY3Rpb24gc2VyaWFsaXplKGNvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHNlY3VyZSA9IFN0cmluZyhjb21wb25lbnRzLnNjaGVtZSkudG9Mb3dlckNhc2UoKSA9PT0gXCJodHRwc1wiO1xuICAgICAgICAvL25vcm1hbGl6ZSB0aGUgZGVmYXVsdCBwb3J0XG4gICAgICAgIGlmIChjb21wb25lbnRzLnBvcnQgPT09IChzZWN1cmUgPyA0NDMgOiA4MCkgfHwgY29tcG9uZW50cy5wb3J0ID09PSBcIlwiKSB7XG4gICAgICAgICAgICBjb21wb25lbnRzLnBvcnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy9ub3JtYWxpemUgdGhlIGVtcHR5IHBhdGhcbiAgICAgICAgaWYgKCFjb21wb25lbnRzLnBhdGgpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucGF0aCA9IFwiL1wiO1xuICAgICAgICB9XG4gICAgICAgIC8vTk9URTogV2UgZG8gbm90IHBhcnNlIHF1ZXJ5IHN0cmluZ3MgZm9yIEhUVFAgVVJJc1xuICAgICAgICAvL2FzIFdXVyBGb3JtIFVybCBFbmNvZGVkIHF1ZXJ5IHN0cmluZ3MgYXJlIHBhcnQgb2YgdGhlIEhUTUw0KyBzcGVjLFxuICAgICAgICAvL2FuZCBub3QgdGhlIEhUVFAgc3BlYy5cbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudHM7XG4gICAgfVxufTtcblxudmFyIGhhbmRsZXIkMSA9IHtcbiAgICBzY2hlbWU6IFwiaHR0cHNcIixcbiAgICBkb21haW5Ib3N0OiBoYW5kbGVyLmRvbWFpbkhvc3QsXG4gICAgcGFyc2U6IGhhbmRsZXIucGFyc2UsXG4gICAgc2VyaWFsaXplOiBoYW5kbGVyLnNlcmlhbGl6ZVxufTtcblxuZnVuY3Rpb24gaXNTZWN1cmUod3NDb21wb25lbnRzKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB3c0NvbXBvbmVudHMuc2VjdXJlID09PSAnYm9vbGVhbicgPyB3c0NvbXBvbmVudHMuc2VjdXJlIDogU3RyaW5nKHdzQ29tcG9uZW50cy5zY2hlbWUpLnRvTG93ZXJDYXNlKCkgPT09IFwid3NzXCI7XG59XG4vL1JGQyA2NDU1XG52YXIgaGFuZGxlciQyID0ge1xuICAgIHNjaGVtZTogXCJ3c1wiLFxuICAgIGRvbWFpbkhvc3Q6IHRydWUsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlKGNvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHdzQ29tcG9uZW50cyA9IGNvbXBvbmVudHM7XG4gICAgICAgIC8vaW5kaWNhdGUgaWYgdGhlIHNlY3VyZSBmbGFnIGlzIHNldFxuICAgICAgICB3c0NvbXBvbmVudHMuc2VjdXJlID0gaXNTZWN1cmUod3NDb21wb25lbnRzKTtcbiAgICAgICAgLy9jb25zdHJ1Y3QgcmVzb3VjZSBuYW1lXG4gICAgICAgIHdzQ29tcG9uZW50cy5yZXNvdXJjZU5hbWUgPSAod3NDb21wb25lbnRzLnBhdGggfHwgJy8nKSArICh3c0NvbXBvbmVudHMucXVlcnkgPyAnPycgKyB3c0NvbXBvbmVudHMucXVlcnkgOiAnJyk7XG4gICAgICAgIHdzQ29tcG9uZW50cy5wYXRoID0gdW5kZWZpbmVkO1xuICAgICAgICB3c0NvbXBvbmVudHMucXVlcnkgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB3c0NvbXBvbmVudHM7XG4gICAgfSxcbiAgICBzZXJpYWxpemU6IGZ1bmN0aW9uIHNlcmlhbGl6ZSh3c0NvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICAgICAgLy9ub3JtYWxpemUgdGhlIGRlZmF1bHQgcG9ydFxuICAgICAgICBpZiAod3NDb21wb25lbnRzLnBvcnQgPT09IChpc1NlY3VyZSh3c0NvbXBvbmVudHMpID8gNDQzIDogODApIHx8IHdzQ29tcG9uZW50cy5wb3J0ID09PSBcIlwiKSB7XG4gICAgICAgICAgICB3c0NvbXBvbmVudHMucG9ydCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvL2Vuc3VyZSBzY2hlbWUgbWF0Y2hlcyBzZWN1cmUgZmxhZ1xuICAgICAgICBpZiAodHlwZW9mIHdzQ29tcG9uZW50cy5zZWN1cmUgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgd3NDb21wb25lbnRzLnNjaGVtZSA9IHdzQ29tcG9uZW50cy5zZWN1cmUgPyAnd3NzJyA6ICd3cyc7XG4gICAgICAgICAgICB3c0NvbXBvbmVudHMuc2VjdXJlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vcmVjb25zdHJ1Y3QgcGF0aCBmcm9tIHJlc291cmNlIG5hbWVcbiAgICAgICAgaWYgKHdzQ29tcG9uZW50cy5yZXNvdXJjZU5hbWUpIHtcbiAgICAgICAgICAgIHZhciBfd3NDb21wb25lbnRzJHJlc291cmMgPSB3c0NvbXBvbmVudHMucmVzb3VyY2VOYW1lLnNwbGl0KCc/JyksXG4gICAgICAgICAgICAgICAgX3dzQ29tcG9uZW50cyRyZXNvdXJjMiA9IHNsaWNlZFRvQXJyYXkoX3dzQ29tcG9uZW50cyRyZXNvdXJjLCAyKSxcbiAgICAgICAgICAgICAgICBwYXRoID0gX3dzQ29tcG9uZW50cyRyZXNvdXJjMlswXSxcbiAgICAgICAgICAgICAgICBxdWVyeSA9IF93c0NvbXBvbmVudHMkcmVzb3VyYzJbMV07XG5cbiAgICAgICAgICAgIHdzQ29tcG9uZW50cy5wYXRoID0gcGF0aCAmJiBwYXRoICE9PSAnLycgPyBwYXRoIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgd3NDb21wb25lbnRzLnF1ZXJ5ID0gcXVlcnk7XG4gICAgICAgICAgICB3c0NvbXBvbmVudHMucmVzb3VyY2VOYW1lID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vZm9yYmlkIGZyYWdtZW50IGNvbXBvbmVudFxuICAgICAgICB3c0NvbXBvbmVudHMuZnJhZ21lbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB3c0NvbXBvbmVudHM7XG4gICAgfVxufTtcblxudmFyIGhhbmRsZXIkMyA9IHtcbiAgICBzY2hlbWU6IFwid3NzXCIsXG4gICAgZG9tYWluSG9zdDogaGFuZGxlciQyLmRvbWFpbkhvc3QsXG4gICAgcGFyc2U6IGhhbmRsZXIkMi5wYXJzZSxcbiAgICBzZXJpYWxpemU6IGhhbmRsZXIkMi5zZXJpYWxpemVcbn07XG5cbnZhciBPID0ge307XG52YXIgaXNJUkkgPSB0cnVlO1xuLy9SRkMgMzk4NlxudmFyIFVOUkVTRVJWRUQkJCA9IFwiW0EtWmEtejAtOVxcXFwtXFxcXC5cXFxcX1xcXFx+XCIgKyAoaXNJUkkgPyBcIlxcXFx4QTAtXFxcXHUyMDBEXFxcXHUyMDEwLVxcXFx1MjAyOVxcXFx1MjAyRi1cXFxcdUQ3RkZcXFxcdUY5MDAtXFxcXHVGRENGXFxcXHVGREYwLVxcXFx1RkZFRlwiIDogXCJcIikgKyBcIl1cIjtcbnZhciBIRVhESUckJCA9IFwiWzAtOUEtRmEtZl1cIjsgLy9jYXNlLWluc2Vuc2l0aXZlXG52YXIgUENUX0VOQ09ERUQkID0gc3ViZXhwKHN1YmV4cChcIiVbRUZlZl1cIiArIEhFWERJRyQkICsgXCIlXCIgKyBIRVhESUckJCArIEhFWERJRyQkICsgXCIlXCIgKyBIRVhESUckJCArIEhFWERJRyQkKSArIFwifFwiICsgc3ViZXhwKFwiJVs4OUEtRmEtZl1cIiArIEhFWERJRyQkICsgXCIlXCIgKyBIRVhESUckJCArIEhFWERJRyQkKSArIFwifFwiICsgc3ViZXhwKFwiJVwiICsgSEVYRElHJCQgKyBIRVhESUckJCkpOyAvL2V4cGFuZGVkXG4vL1JGQyA1MzIyLCBleGNlcHQgdGhlc2Ugc3ltYm9scyBhcyBwZXIgUkZDIDYwNjg6IEAgOiAvID8gIyBbIF0gJiA7ID1cbi8vY29uc3QgQVRFWFQkJCA9IFwiW0EtWmEtejAtOVxcXFwhXFxcXCNcXFxcJFxcXFwlXFxcXCZcXFxcJ1xcXFwqXFxcXCtcXFxcLVxcXFwvXFxcXD1cXFxcP1xcXFxeXFxcXF9cXFxcYFxcXFx7XFxcXHxcXFxcfVxcXFx+XVwiO1xuLy9jb25zdCBXU1AkJCA9IFwiW1xcXFx4MjBcXFxceDA5XVwiO1xuLy9jb25zdCBPQlNfUVRFWFQkJCA9IFwiW1xcXFx4MDEtXFxcXHgwOFxcXFx4MEJcXFxceDBDXFxcXHgwRS1cXFxceDFGXFxcXHg3Rl1cIjsgIC8vKCVkMS04IC8gJWQxMS0xMiAvICVkMTQtMzEgLyAlZDEyNylcbi8vY29uc3QgUVRFWFQkJCA9IG1lcmdlKFwiW1xcXFx4MjFcXFxceDIzLVxcXFx4NUJcXFxceDVELVxcXFx4N0VdXCIsIE9CU19RVEVYVCQkKTsgIC8vJWQzMyAvICVkMzUtOTEgLyAlZDkzLTEyNiAvIG9icy1xdGV4dFxuLy9jb25zdCBWQ0hBUiQkID0gXCJbXFxcXHgyMS1cXFxceDdFXVwiO1xuLy9jb25zdCBXU1AkJCA9IFwiW1xcXFx4MjBcXFxceDA5XVwiO1xuLy9jb25zdCBPQlNfUVAkID0gc3ViZXhwKFwiXFxcXFxcXFxcIiArIG1lcmdlKFwiW1xcXFx4MDBcXFxceDBEXFxcXHgwQV1cIiwgT0JTX1FURVhUJCQpKTsgIC8vJWQwIC8gQ1IgLyBMRiAvIG9icy1xdGV4dFxuLy9jb25zdCBGV1MkID0gc3ViZXhwKHN1YmV4cChXU1AkJCArIFwiKlwiICsgXCJcXFxceDBEXFxcXHgwQVwiKSArIFwiP1wiICsgV1NQJCQgKyBcIitcIik7XG4vL2NvbnN0IFFVT1RFRF9QQUlSJCA9IHN1YmV4cChzdWJleHAoXCJcXFxcXFxcXFwiICsgc3ViZXhwKFZDSEFSJCQgKyBcInxcIiArIFdTUCQkKSkgKyBcInxcIiArIE9CU19RUCQpO1xuLy9jb25zdCBRVU9URURfU1RSSU5HJCA9IHN1YmV4cCgnXFxcXFwiJyArIHN1YmV4cChGV1MkICsgXCI/XCIgKyBRQ09OVEVOVCQpICsgXCIqXCIgKyBGV1MkICsgXCI/XCIgKyAnXFxcXFwiJyk7XG52YXIgQVRFWFQkJCA9IFwiW0EtWmEtejAtOVxcXFwhXFxcXCRcXFxcJVxcXFwnXFxcXCpcXFxcK1xcXFwtXFxcXF5cXFxcX1xcXFxgXFxcXHtcXFxcfFxcXFx9XFxcXH5dXCI7XG52YXIgUVRFWFQkJCA9IFwiW1xcXFwhXFxcXCRcXFxcJVxcXFwnXFxcXChcXFxcKVxcXFwqXFxcXCtcXFxcLFxcXFwtXFxcXC4wLTlcXFxcPFxcXFw+QS1aXFxcXHg1RS1cXFxceDdFXVwiO1xudmFyIFZDSEFSJCQgPSBtZXJnZShRVEVYVCQkLCBcIltcXFxcXFxcIlxcXFxcXFxcXVwiKTtcbnZhciBTT01FX0RFTElNUyQkID0gXCJbXFxcXCFcXFxcJFxcXFwnXFxcXChcXFxcKVxcXFwqXFxcXCtcXFxcLFxcXFw7XFxcXDpcXFxcQF1cIjtcbnZhciBVTlJFU0VSVkVEID0gbmV3IFJlZ0V4cChVTlJFU0VSVkVEJCQsIFwiZ1wiKTtcbnZhciBQQ1RfRU5DT0RFRCA9IG5ldyBSZWdFeHAoUENUX0VOQ09ERUQkLCBcImdcIik7XG52YXIgTk9UX0xPQ0FMX1BBUlQgPSBuZXcgUmVnRXhwKG1lcmdlKFwiW15dXCIsIEFURVhUJCQsIFwiW1xcXFwuXVwiLCAnW1xcXFxcIl0nLCBWQ0hBUiQkKSwgXCJnXCIpO1xudmFyIE5PVF9IRk5BTUUgPSBuZXcgUmVnRXhwKG1lcmdlKFwiW15dXCIsIFVOUkVTRVJWRUQkJCwgU09NRV9ERUxJTVMkJCksIFwiZ1wiKTtcbnZhciBOT1RfSEZWQUxVRSA9IE5PVF9IRk5BTUU7XG5mdW5jdGlvbiBkZWNvZGVVbnJlc2VydmVkKHN0cikge1xuICAgIHZhciBkZWNTdHIgPSBwY3REZWNDaGFycyhzdHIpO1xuICAgIHJldHVybiAhZGVjU3RyLm1hdGNoKFVOUkVTRVJWRUQpID8gc3RyIDogZGVjU3RyO1xufVxudmFyIGhhbmRsZXIkNCA9IHtcbiAgICBzY2hlbWU6IFwibWFpbHRvXCIsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlJCQxKGNvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIG1haWx0b0NvbXBvbmVudHMgPSBjb21wb25lbnRzO1xuICAgICAgICB2YXIgdG8gPSBtYWlsdG9Db21wb25lbnRzLnRvID0gbWFpbHRvQ29tcG9uZW50cy5wYXRoID8gbWFpbHRvQ29tcG9uZW50cy5wYXRoLnNwbGl0KFwiLFwiKSA6IFtdO1xuICAgICAgICBtYWlsdG9Db21wb25lbnRzLnBhdGggPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChtYWlsdG9Db21wb25lbnRzLnF1ZXJ5KSB7XG4gICAgICAgICAgICB2YXIgdW5rbm93bkhlYWRlcnMgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBoZWFkZXJzID0ge307XG4gICAgICAgICAgICB2YXIgaGZpZWxkcyA9IG1haWx0b0NvbXBvbmVudHMucXVlcnkuc3BsaXQoXCImXCIpO1xuICAgICAgICAgICAgZm9yICh2YXIgeCA9IDAsIHhsID0gaGZpZWxkcy5sZW5ndGg7IHggPCB4bDsgKyt4KSB7XG4gICAgICAgICAgICAgICAgdmFyIGhmaWVsZCA9IGhmaWVsZHNbeF0uc3BsaXQoXCI9XCIpO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoaGZpZWxkWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ0b1wiOlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRvQWRkcnMgPSBoZmllbGRbMV0uc3BsaXQoXCIsXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX3ggPSAwLCBfeGwgPSB0b0FkZHJzLmxlbmd0aDsgX3ggPCBfeGw7ICsrX3gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0by5wdXNoKHRvQWRkcnNbX3hdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwic3ViamVjdFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgbWFpbHRvQ29tcG9uZW50cy5zdWJqZWN0ID0gdW5lc2NhcGVDb21wb25lbnQoaGZpZWxkWzFdLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiYm9keVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgbWFpbHRvQ29tcG9uZW50cy5ib2R5ID0gdW5lc2NhcGVDb21wb25lbnQoaGZpZWxkWzFdLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgdW5rbm93bkhlYWRlcnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1t1bmVzY2FwZUNvbXBvbmVudChoZmllbGRbMF0sIG9wdGlvbnMpXSA9IHVuZXNjYXBlQ29tcG9uZW50KGhmaWVsZFsxXSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodW5rbm93bkhlYWRlcnMpIG1haWx0b0NvbXBvbmVudHMuaGVhZGVycyA9IGhlYWRlcnM7XG4gICAgICAgIH1cbiAgICAgICAgbWFpbHRvQ29tcG9uZW50cy5xdWVyeSA9IHVuZGVmaW5lZDtcbiAgICAgICAgZm9yICh2YXIgX3gyID0gMCwgX3hsMiA9IHRvLmxlbmd0aDsgX3gyIDwgX3hsMjsgKytfeDIpIHtcbiAgICAgICAgICAgIHZhciBhZGRyID0gdG9bX3gyXS5zcGxpdChcIkBcIik7XG4gICAgICAgICAgICBhZGRyWzBdID0gdW5lc2NhcGVDb21wb25lbnQoYWRkclswXSk7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMudW5pY29kZVN1cHBvcnQpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnZlcnQgVW5pY29kZSBJRE4gLT4gQVNDSUkgSUROXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgYWRkclsxXSA9IHB1bnljb2RlLnRvQVNDSUkodW5lc2NhcGVDb21wb25lbnQoYWRkclsxXSwgb3B0aW9ucykudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBtYWlsdG9Db21wb25lbnRzLmVycm9yID0gbWFpbHRvQ29tcG9uZW50cy5lcnJvciB8fCBcIkVtYWlsIGFkZHJlc3MncyBkb21haW4gbmFtZSBjYW4gbm90IGJlIGNvbnZlcnRlZCB0byBBU0NJSSB2aWEgcHVueWNvZGU6IFwiICsgZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFkZHJbMV0gPSB1bmVzY2FwZUNvbXBvbmVudChhZGRyWzFdLCBvcHRpb25zKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdG9bX3gyXSA9IGFkZHIuam9pbihcIkBcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1haWx0b0NvbXBvbmVudHM7XG4gICAgfSxcbiAgICBzZXJpYWxpemU6IGZ1bmN0aW9uIHNlcmlhbGl6ZSQkMShtYWlsdG9Db21wb25lbnRzLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBjb21wb25lbnRzID0gbWFpbHRvQ29tcG9uZW50cztcbiAgICAgICAgdmFyIHRvID0gdG9BcnJheShtYWlsdG9Db21wb25lbnRzLnRvKTtcbiAgICAgICAgaWYgKHRvKSB7XG4gICAgICAgICAgICBmb3IgKHZhciB4ID0gMCwgeGwgPSB0by5sZW5ndGg7IHggPCB4bDsgKyt4KSB7XG4gICAgICAgICAgICAgICAgdmFyIHRvQWRkciA9IFN0cmluZyh0b1t4XSk7XG4gICAgICAgICAgICAgICAgdmFyIGF0SWR4ID0gdG9BZGRyLmxhc3RJbmRleE9mKFwiQFwiKTtcbiAgICAgICAgICAgICAgICB2YXIgbG9jYWxQYXJ0ID0gdG9BZGRyLnNsaWNlKDAsIGF0SWR4KS5yZXBsYWNlKFBDVF9FTkNPREVELCBkZWNvZGVVbnJlc2VydmVkKS5yZXBsYWNlKFBDVF9FTkNPREVELCB0b1VwcGVyQ2FzZSkucmVwbGFjZShOT1RfTE9DQUxfUEFSVCwgcGN0RW5jQ2hhcik7XG4gICAgICAgICAgICAgICAgdmFyIGRvbWFpbiA9IHRvQWRkci5zbGljZShhdElkeCArIDEpO1xuICAgICAgICAgICAgICAgIC8vY29udmVydCBJRE4gdmlhIHB1bnljb2RlXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZG9tYWluID0gIW9wdGlvbnMuaXJpID8gcHVueWNvZGUudG9BU0NJSSh1bmVzY2FwZUNvbXBvbmVudChkb21haW4sIG9wdGlvbnMpLnRvTG93ZXJDYXNlKCkpIDogcHVueWNvZGUudG9Vbmljb2RlKGRvbWFpbik7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLmVycm9yID0gY29tcG9uZW50cy5lcnJvciB8fCBcIkVtYWlsIGFkZHJlc3MncyBkb21haW4gbmFtZSBjYW4gbm90IGJlIGNvbnZlcnRlZCB0byBcIiArICghb3B0aW9ucy5pcmkgPyBcIkFTQ0lJXCIgOiBcIlVuaWNvZGVcIikgKyBcIiB2aWEgcHVueWNvZGU6IFwiICsgZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdG9beF0gPSBsb2NhbFBhcnQgKyBcIkBcIiArIGRvbWFpbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbXBvbmVudHMucGF0aCA9IHRvLmpvaW4oXCIsXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBoZWFkZXJzID0gbWFpbHRvQ29tcG9uZW50cy5oZWFkZXJzID0gbWFpbHRvQ29tcG9uZW50cy5oZWFkZXJzIHx8IHt9O1xuICAgICAgICBpZiAobWFpbHRvQ29tcG9uZW50cy5zdWJqZWN0KSBoZWFkZXJzW1wic3ViamVjdFwiXSA9IG1haWx0b0NvbXBvbmVudHMuc3ViamVjdDtcbiAgICAgICAgaWYgKG1haWx0b0NvbXBvbmVudHMuYm9keSkgaGVhZGVyc1tcImJvZHlcIl0gPSBtYWlsdG9Db21wb25lbnRzLmJvZHk7XG4gICAgICAgIHZhciBmaWVsZHMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBoZWFkZXJzKSB7XG4gICAgICAgICAgICBpZiAoaGVhZGVyc1tuYW1lXSAhPT0gT1tuYW1lXSkge1xuICAgICAgICAgICAgICAgIGZpZWxkcy5wdXNoKG5hbWUucmVwbGFjZShQQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkucmVwbGFjZShQQ1RfRU5DT0RFRCwgdG9VcHBlckNhc2UpLnJlcGxhY2UoTk9UX0hGTkFNRSwgcGN0RW5jQ2hhcikgKyBcIj1cIiArIGhlYWRlcnNbbmFtZV0ucmVwbGFjZShQQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkucmVwbGFjZShQQ1RfRU5DT0RFRCwgdG9VcHBlckNhc2UpLnJlcGxhY2UoTk9UX0hGVkFMVUUsIHBjdEVuY0NoYXIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZmllbGRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29tcG9uZW50cy5xdWVyeSA9IGZpZWxkcy5qb2luKFwiJlwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29tcG9uZW50cztcbiAgICB9XG59O1xuXG52YXIgVVJOX1BBUlNFID0gL14oW15cXDpdKylcXDooLiopLztcbi8vUkZDIDIxNDFcbnZhciBoYW5kbGVyJDUgPSB7XG4gICAgc2NoZW1lOiBcInVyblwiLFxuICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZSQkMShjb21wb25lbnRzLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBtYXRjaGVzID0gY29tcG9uZW50cy5wYXRoICYmIGNvbXBvbmVudHMucGF0aC5tYXRjaChVUk5fUEFSU0UpO1xuICAgICAgICB2YXIgdXJuQ29tcG9uZW50cyA9IGNvbXBvbmVudHM7XG4gICAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgICAgICB2YXIgc2NoZW1lID0gb3B0aW9ucy5zY2hlbWUgfHwgdXJuQ29tcG9uZW50cy5zY2hlbWUgfHwgXCJ1cm5cIjtcbiAgICAgICAgICAgIHZhciBuaWQgPSBtYXRjaGVzWzFdLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB2YXIgbnNzID0gbWF0Y2hlc1syXTtcbiAgICAgICAgICAgIHZhciB1cm5TY2hlbWUgPSBzY2hlbWUgKyBcIjpcIiArIChvcHRpb25zLm5pZCB8fCBuaWQpO1xuICAgICAgICAgICAgdmFyIHNjaGVtZUhhbmRsZXIgPSBTQ0hFTUVTW3VyblNjaGVtZV07XG4gICAgICAgICAgICB1cm5Db21wb25lbnRzLm5pZCA9IG5pZDtcbiAgICAgICAgICAgIHVybkNvbXBvbmVudHMubnNzID0gbnNzO1xuICAgICAgICAgICAgdXJuQ29tcG9uZW50cy5wYXRoID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKHNjaGVtZUhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICB1cm5Db21wb25lbnRzID0gc2NoZW1lSGFuZGxlci5wYXJzZSh1cm5Db21wb25lbnRzLCBvcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVybkNvbXBvbmVudHMuZXJyb3IgPSB1cm5Db21wb25lbnRzLmVycm9yIHx8IFwiVVJOIGNhbiBub3QgYmUgcGFyc2VkLlwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1cm5Db21wb25lbnRzO1xuICAgIH0sXG4gICAgc2VyaWFsaXplOiBmdW5jdGlvbiBzZXJpYWxpemUkJDEodXJuQ29tcG9uZW50cywgb3B0aW9ucykge1xuICAgICAgICB2YXIgc2NoZW1lID0gb3B0aW9ucy5zY2hlbWUgfHwgdXJuQ29tcG9uZW50cy5zY2hlbWUgfHwgXCJ1cm5cIjtcbiAgICAgICAgdmFyIG5pZCA9IHVybkNvbXBvbmVudHMubmlkO1xuICAgICAgICB2YXIgdXJuU2NoZW1lID0gc2NoZW1lICsgXCI6XCIgKyAob3B0aW9ucy5uaWQgfHwgbmlkKTtcbiAgICAgICAgdmFyIHNjaGVtZUhhbmRsZXIgPSBTQ0hFTUVTW3VyblNjaGVtZV07XG4gICAgICAgIGlmIChzY2hlbWVIYW5kbGVyKSB7XG4gICAgICAgICAgICB1cm5Db21wb25lbnRzID0gc2NoZW1lSGFuZGxlci5zZXJpYWxpemUodXJuQ29tcG9uZW50cywgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHVyaUNvbXBvbmVudHMgPSB1cm5Db21wb25lbnRzO1xuICAgICAgICB2YXIgbnNzID0gdXJuQ29tcG9uZW50cy5uc3M7XG4gICAgICAgIHVyaUNvbXBvbmVudHMucGF0aCA9IChuaWQgfHwgb3B0aW9ucy5uaWQpICsgXCI6XCIgKyBuc3M7XG4gICAgICAgIHJldHVybiB1cmlDb21wb25lbnRzO1xuICAgIH1cbn07XG5cbnZhciBVVUlEID0gL15bMC05QS1GYS1mXXs4fSg/OlxcLVswLTlBLUZhLWZdezR9KXszfVxcLVswLTlBLUZhLWZdezEyfSQvO1xuLy9SRkMgNDEyMlxudmFyIGhhbmRsZXIkNiA9IHtcbiAgICBzY2hlbWU6IFwidXJuOnV1aWRcIixcbiAgICBwYXJzZTogZnVuY3Rpb24gcGFyc2UodXJuQ29tcG9uZW50cywgb3B0aW9ucykge1xuICAgICAgICB2YXIgdXVpZENvbXBvbmVudHMgPSB1cm5Db21wb25lbnRzO1xuICAgICAgICB1dWlkQ29tcG9uZW50cy51dWlkID0gdXVpZENvbXBvbmVudHMubnNzO1xuICAgICAgICB1dWlkQ29tcG9uZW50cy5uc3MgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICghb3B0aW9ucy50b2xlcmFudCAmJiAoIXV1aWRDb21wb25lbnRzLnV1aWQgfHwgIXV1aWRDb21wb25lbnRzLnV1aWQubWF0Y2goVVVJRCkpKSB7XG4gICAgICAgICAgICB1dWlkQ29tcG9uZW50cy5lcnJvciA9IHV1aWRDb21wb25lbnRzLmVycm9yIHx8IFwiVVVJRCBpcyBub3QgdmFsaWQuXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHV1aWRDb21wb25lbnRzO1xuICAgIH0sXG4gICAgc2VyaWFsaXplOiBmdW5jdGlvbiBzZXJpYWxpemUodXVpZENvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHVybkNvbXBvbmVudHMgPSB1dWlkQ29tcG9uZW50cztcbiAgICAgICAgLy9ub3JtYWxpemUgVVVJRFxuICAgICAgICB1cm5Db21wb25lbnRzLm5zcyA9ICh1dWlkQ29tcG9uZW50cy51dWlkIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiB1cm5Db21wb25lbnRzO1xuICAgIH1cbn07XG5cblNDSEVNRVNbaGFuZGxlci5zY2hlbWVdID0gaGFuZGxlcjtcblNDSEVNRVNbaGFuZGxlciQxLnNjaGVtZV0gPSBoYW5kbGVyJDE7XG5TQ0hFTUVTW2hhbmRsZXIkMi5zY2hlbWVdID0gaGFuZGxlciQyO1xuU0NIRU1FU1toYW5kbGVyJDMuc2NoZW1lXSA9IGhhbmRsZXIkMztcblNDSEVNRVNbaGFuZGxlciQ0LnNjaGVtZV0gPSBoYW5kbGVyJDQ7XG5TQ0hFTUVTW2hhbmRsZXIkNS5zY2hlbWVdID0gaGFuZGxlciQ1O1xuU0NIRU1FU1toYW5kbGVyJDYuc2NoZW1lXSA9IGhhbmRsZXIkNjtcblxuZXhwb3J0cy5TQ0hFTUVTID0gU0NIRU1FUztcbmV4cG9ydHMucGN0RW5jQ2hhciA9IHBjdEVuY0NoYXI7XG5leHBvcnRzLnBjdERlY0NoYXJzID0gcGN0RGVjQ2hhcnM7XG5leHBvcnRzLnBhcnNlID0gcGFyc2U7XG5leHBvcnRzLnJlbW92ZURvdFNlZ21lbnRzID0gcmVtb3ZlRG90U2VnbWVudHM7XG5leHBvcnRzLnNlcmlhbGl6ZSA9IHNlcmlhbGl6ZTtcbmV4cG9ydHMucmVzb2x2ZUNvbXBvbmVudHMgPSByZXNvbHZlQ29tcG9uZW50cztcbmV4cG9ydHMucmVzb2x2ZSA9IHJlc29sdmU7XG5leHBvcnRzLm5vcm1hbGl6ZSA9IG5vcm1hbGl6ZTtcbmV4cG9ydHMuZXF1YWwgPSBlcXVhbDtcbmV4cG9ydHMuZXNjYXBlQ29tcG9uZW50ID0gZXNjYXBlQ29tcG9uZW50O1xuZXhwb3J0cy51bmVzY2FwZUNvbXBvbmVudCA9IHVuZXNjYXBlQ29tcG9uZW50O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG59KSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXJpLmFsbC5qcy5tYXBcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gZG8gbm90IGVkaXQgLmpzIGZpbGVzIGRpcmVjdGx5IC0gZWRpdCBzcmMvaW5kZXguanN0XG5cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGVxdWFsKGEsIGIpIHtcbiAgaWYgKGEgPT09IGIpIHJldHVybiB0cnVlO1xuXG4gIGlmIChhICYmIGIgJiYgdHlwZW9mIGEgPT0gJ29iamVjdCcgJiYgdHlwZW9mIGIgPT0gJ29iamVjdCcpIHtcbiAgICBpZiAoYS5jb25zdHJ1Y3RvciAhPT0gYi5jb25zdHJ1Y3RvcikgcmV0dXJuIGZhbHNlO1xuXG4gICAgdmFyIGxlbmd0aCwgaSwga2V5cztcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhKSkge1xuICAgICAgbGVuZ3RoID0gYS5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoICE9IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspXG4gICAgICAgIGlmICghZXF1YWwoYVtpXSwgYltpXSkpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuXG5cbiAgICBpZiAoYS5jb25zdHJ1Y3RvciA9PT0gUmVnRXhwKSByZXR1cm4gYS5zb3VyY2UgPT09IGIuc291cmNlICYmIGEuZmxhZ3MgPT09IGIuZmxhZ3M7XG4gICAgaWYgKGEudmFsdWVPZiAhPT0gT2JqZWN0LnByb3RvdHlwZS52YWx1ZU9mKSByZXR1cm4gYS52YWx1ZU9mKCkgPT09IGIudmFsdWVPZigpO1xuICAgIGlmIChhLnRvU3RyaW5nICE9PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKSByZXR1cm4gYS50b1N0cmluZygpID09PSBiLnRvU3RyaW5nKCk7XG5cbiAgICBrZXlzID0gT2JqZWN0LmtleXMoYSk7XG4gICAgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgaWYgKGxlbmd0aCAhPT0gT2JqZWN0LmtleXMoYikubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cbiAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspXG4gICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBrZXlzW2ldKSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgaWYgKCFlcXVhbChhW2tleV0sIGJba2V5XSkpIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIHRydWUgaWYgYm90aCBOYU4sIGZhbHNlIG90aGVyd2lzZVxuICByZXR1cm4gYSE9PWEgJiYgYiE9PWI7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyBodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC1lbmNvZGluZ1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL3B1bnljb2RlLmpzIC0gcHVueWNvZGUudWNzMi5kZWNvZGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdWNzMmxlbmd0aChzdHIpIHtcbiAgdmFyIGxlbmd0aCA9IDBcbiAgICAsIGxlbiA9IHN0ci5sZW5ndGhcbiAgICAsIHBvcyA9IDBcbiAgICAsIHZhbHVlO1xuICB3aGlsZSAocG9zIDwgbGVuKSB7XG4gICAgbGVuZ3RoKys7XG4gICAgdmFsdWUgPSBzdHIuY2hhckNvZGVBdChwb3MrKyk7XG4gICAgaWYgKHZhbHVlID49IDB4RDgwMCAmJiB2YWx1ZSA8PSAweERCRkYgJiYgcG9zIDwgbGVuKSB7XG4gICAgICAvLyBoaWdoIHN1cnJvZ2F0ZSwgYW5kIHRoZXJlIGlzIGEgbmV4dCBjaGFyYWN0ZXJcbiAgICAgIHZhbHVlID0gc3RyLmNoYXJDb2RlQXQocG9zKTtcbiAgICAgIGlmICgodmFsdWUgJiAweEZDMDApID09IDB4REMwMCkgcG9zKys7IC8vIGxvdyBzdXJyb2dhdGVcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxlbmd0aDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNvcHk6IGNvcHksXG4gIGNoZWNrRGF0YVR5cGU6IGNoZWNrRGF0YVR5cGUsXG4gIGNoZWNrRGF0YVR5cGVzOiBjaGVja0RhdGFUeXBlcyxcbiAgY29lcmNlVG9UeXBlczogY29lcmNlVG9UeXBlcyxcbiAgdG9IYXNoOiB0b0hhc2gsXG4gIGdldFByb3BlcnR5OiBnZXRQcm9wZXJ0eSxcbiAgZXNjYXBlUXVvdGVzOiBlc2NhcGVRdW90ZXMsXG4gIGVxdWFsOiByZXF1aXJlKCdmYXN0LWRlZXAtZXF1YWwnKSxcbiAgdWNzMmxlbmd0aDogcmVxdWlyZSgnLi91Y3MybGVuZ3RoJyksXG4gIHZhck9jY3VyZW5jZXM6IHZhck9jY3VyZW5jZXMsXG4gIHZhclJlcGxhY2U6IHZhclJlcGxhY2UsXG4gIHNjaGVtYUhhc1J1bGVzOiBzY2hlbWFIYXNSdWxlcyxcbiAgc2NoZW1hSGFzUnVsZXNFeGNlcHQ6IHNjaGVtYUhhc1J1bGVzRXhjZXB0LFxuICBzY2hlbWFVbmtub3duUnVsZXM6IHNjaGVtYVVua25vd25SdWxlcyxcbiAgdG9RdW90ZWRTdHJpbmc6IHRvUXVvdGVkU3RyaW5nLFxuICBnZXRQYXRoRXhwcjogZ2V0UGF0aEV4cHIsXG4gIGdldFBhdGg6IGdldFBhdGgsXG4gIGdldERhdGE6IGdldERhdGEsXG4gIHVuZXNjYXBlRnJhZ21lbnQ6IHVuZXNjYXBlRnJhZ21lbnQsXG4gIHVuZXNjYXBlSnNvblBvaW50ZXI6IHVuZXNjYXBlSnNvblBvaW50ZXIsXG4gIGVzY2FwZUZyYWdtZW50OiBlc2NhcGVGcmFnbWVudCxcbiAgZXNjYXBlSnNvblBvaW50ZXI6IGVzY2FwZUpzb25Qb2ludGVyXG59O1xuXG5cbmZ1bmN0aW9uIGNvcHkobywgdG8pIHtcbiAgdG8gPSB0byB8fCB7fTtcbiAgZm9yICh2YXIga2V5IGluIG8pIHRvW2tleV0gPSBvW2tleV07XG4gIHJldHVybiB0bztcbn1cblxuXG5mdW5jdGlvbiBjaGVja0RhdGFUeXBlKGRhdGFUeXBlLCBkYXRhLCBzdHJpY3ROdW1iZXJzLCBuZWdhdGUpIHtcbiAgdmFyIEVRVUFMID0gbmVnYXRlID8gJyAhPT0gJyA6ICcgPT09ICdcbiAgICAsIEFORCA9IG5lZ2F0ZSA/ICcgfHwgJyA6ICcgJiYgJ1xuICAgICwgT0sgPSBuZWdhdGUgPyAnIScgOiAnJ1xuICAgICwgTk9UID0gbmVnYXRlID8gJycgOiAnISc7XG4gIHN3aXRjaCAoZGF0YVR5cGUpIHtcbiAgICBjYXNlICdudWxsJzogcmV0dXJuIGRhdGEgKyBFUVVBTCArICdudWxsJztcbiAgICBjYXNlICdhcnJheSc6IHJldHVybiBPSyArICdBcnJheS5pc0FycmF5KCcgKyBkYXRhICsgJyknO1xuICAgIGNhc2UgJ29iamVjdCc6IHJldHVybiAnKCcgKyBPSyArIGRhdGEgKyBBTkQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZW9mICcgKyBkYXRhICsgRVFVQUwgKyAnXCJvYmplY3RcIicgKyBBTkQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICBOT1QgKyAnQXJyYXkuaXNBcnJheSgnICsgZGF0YSArICcpKSc7XG4gICAgY2FzZSAnaW50ZWdlcic6IHJldHVybiAnKHR5cGVvZiAnICsgZGF0YSArIEVRVUFMICsgJ1wibnVtYmVyXCInICsgQU5EICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PVCArICcoJyArIGRhdGEgKyAnICUgMSknICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFORCArIGRhdGEgKyBFUVVBTCArIGRhdGEgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmljdE51bWJlcnMgPyAoQU5EICsgT0sgKyAnaXNGaW5pdGUoJyArIGRhdGEgKyAnKScpIDogJycpICsgJyknO1xuICAgIGNhc2UgJ251bWJlcic6IHJldHVybiAnKHR5cGVvZiAnICsgZGF0YSArIEVRVUFMICsgJ1wiJyArIGRhdGFUeXBlICsgJ1wiJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpY3ROdW1iZXJzID8gKEFORCArIE9LICsgJ2lzRmluaXRlKCcgKyBkYXRhICsgJyknKSA6ICcnKSArICcpJztcbiAgICBkZWZhdWx0OiByZXR1cm4gJ3R5cGVvZiAnICsgZGF0YSArIEVRVUFMICsgJ1wiJyArIGRhdGFUeXBlICsgJ1wiJztcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGNoZWNrRGF0YVR5cGVzKGRhdGFUeXBlcywgZGF0YSwgc3RyaWN0TnVtYmVycykge1xuICBzd2l0Y2ggKGRhdGFUeXBlcy5sZW5ndGgpIHtcbiAgICBjYXNlIDE6IHJldHVybiBjaGVja0RhdGFUeXBlKGRhdGFUeXBlc1swXSwgZGF0YSwgc3RyaWN0TnVtYmVycywgdHJ1ZSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHZhciBjb2RlID0gJyc7XG4gICAgICB2YXIgdHlwZXMgPSB0b0hhc2goZGF0YVR5cGVzKTtcbiAgICAgIGlmICh0eXBlcy5hcnJheSAmJiB0eXBlcy5vYmplY3QpIHtcbiAgICAgICAgY29kZSA9IHR5cGVzLm51bGwgPyAnKCc6ICcoIScgKyBkYXRhICsgJyB8fCAnO1xuICAgICAgICBjb2RlICs9ICd0eXBlb2YgJyArIGRhdGEgKyAnICE9PSBcIm9iamVjdFwiKSc7XG4gICAgICAgIGRlbGV0ZSB0eXBlcy5udWxsO1xuICAgICAgICBkZWxldGUgdHlwZXMuYXJyYXk7XG4gICAgICAgIGRlbGV0ZSB0eXBlcy5vYmplY3Q7XG4gICAgICB9XG4gICAgICBpZiAodHlwZXMubnVtYmVyKSBkZWxldGUgdHlwZXMuaW50ZWdlcjtcbiAgICAgIGZvciAodmFyIHQgaW4gdHlwZXMpXG4gICAgICAgIGNvZGUgKz0gKGNvZGUgPyAnICYmICcgOiAnJyApICsgY2hlY2tEYXRhVHlwZSh0LCBkYXRhLCBzdHJpY3ROdW1iZXJzLCB0cnVlKTtcblxuICAgICAgcmV0dXJuIGNvZGU7XG4gIH1cbn1cblxuXG52YXIgQ09FUkNFX1RPX1RZUEVTID0gdG9IYXNoKFsgJ3N0cmluZycsICdudW1iZXInLCAnaW50ZWdlcicsICdib29sZWFuJywgJ251bGwnIF0pO1xuZnVuY3Rpb24gY29lcmNlVG9UeXBlcyhvcHRpb25Db2VyY2VUeXBlcywgZGF0YVR5cGVzKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGRhdGFUeXBlcykpIHtcbiAgICB2YXIgdHlwZXMgPSBbXTtcbiAgICBmb3IgKHZhciBpPTA7IGk8ZGF0YVR5cGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdCA9IGRhdGFUeXBlc1tpXTtcbiAgICAgIGlmIChDT0VSQ0VfVE9fVFlQRVNbdF0pIHR5cGVzW3R5cGVzLmxlbmd0aF0gPSB0O1xuICAgICAgZWxzZSBpZiAob3B0aW9uQ29lcmNlVHlwZXMgPT09ICdhcnJheScgJiYgdCA9PT0gJ2FycmF5JykgdHlwZXNbdHlwZXMubGVuZ3RoXSA9IHQ7XG4gICAgfVxuICAgIGlmICh0eXBlcy5sZW5ndGgpIHJldHVybiB0eXBlcztcbiAgfSBlbHNlIGlmIChDT0VSQ0VfVE9fVFlQRVNbZGF0YVR5cGVzXSkge1xuICAgIHJldHVybiBbZGF0YVR5cGVzXTtcbiAgfSBlbHNlIGlmIChvcHRpb25Db2VyY2VUeXBlcyA9PT0gJ2FycmF5JyAmJiBkYXRhVHlwZXMgPT09ICdhcnJheScpIHtcbiAgICByZXR1cm4gWydhcnJheSddO1xuICB9XG59XG5cblxuZnVuY3Rpb24gdG9IYXNoKGFycikge1xuICB2YXIgaGFzaCA9IHt9O1xuICBmb3IgKHZhciBpPTA7IGk8YXJyLmxlbmd0aDsgaSsrKSBoYXNoW2FycltpXV0gPSB0cnVlO1xuICByZXR1cm4gaGFzaDtcbn1cblxuXG52YXIgSURFTlRJRklFUiA9IC9eW2EteiRfXVthLXokXzAtOV0qJC9pO1xudmFyIFNJTkdMRV9RVU9URSA9IC8nfFxcXFwvZztcbmZ1bmN0aW9uIGdldFByb3BlcnR5KGtleSkge1xuICByZXR1cm4gdHlwZW9mIGtleSA9PSAnbnVtYmVyJ1xuICAgICAgICAgID8gJ1snICsga2V5ICsgJ10nXG4gICAgICAgICAgOiBJREVOVElGSUVSLnRlc3Qoa2V5KVxuICAgICAgICAgICAgPyAnLicgKyBrZXlcbiAgICAgICAgICAgIDogXCJbJ1wiICsgZXNjYXBlUXVvdGVzKGtleSkgKyBcIiddXCI7XG59XG5cblxuZnVuY3Rpb24gZXNjYXBlUXVvdGVzKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoU0lOR0xFX1FVT1RFLCAnXFxcXCQmJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXG4vZywgJ1xcXFxuJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXHIvZywgJ1xcXFxyJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXGYvZywgJ1xcXFxmJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXHQvZywgJ1xcXFx0Jyk7XG59XG5cblxuZnVuY3Rpb24gdmFyT2NjdXJlbmNlcyhzdHIsIGRhdGFWYXIpIHtcbiAgZGF0YVZhciArPSAnW14wLTldJztcbiAgdmFyIG1hdGNoZXMgPSBzdHIubWF0Y2gobmV3IFJlZ0V4cChkYXRhVmFyLCAnZycpKTtcbiAgcmV0dXJuIG1hdGNoZXMgPyBtYXRjaGVzLmxlbmd0aCA6IDA7XG59XG5cblxuZnVuY3Rpb24gdmFyUmVwbGFjZShzdHIsIGRhdGFWYXIsIGV4cHIpIHtcbiAgZGF0YVZhciArPSAnKFteMC05XSknO1xuICBleHByID0gZXhwci5yZXBsYWNlKC9cXCQvZywgJyQkJCQnKTtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKG5ldyBSZWdFeHAoZGF0YVZhciwgJ2cnKSwgZXhwciArICckMScpO1xufVxuXG5cbmZ1bmN0aW9uIHNjaGVtYUhhc1J1bGVzKHNjaGVtYSwgcnVsZXMpIHtcbiAgaWYgKHR5cGVvZiBzY2hlbWEgPT0gJ2Jvb2xlYW4nKSByZXR1cm4gIXNjaGVtYTtcbiAgZm9yICh2YXIga2V5IGluIHNjaGVtYSkgaWYgKHJ1bGVzW2tleV0pIHJldHVybiB0cnVlO1xufVxuXG5cbmZ1bmN0aW9uIHNjaGVtYUhhc1J1bGVzRXhjZXB0KHNjaGVtYSwgcnVsZXMsIGV4Y2VwdEtleXdvcmQpIHtcbiAgaWYgKHR5cGVvZiBzY2hlbWEgPT0gJ2Jvb2xlYW4nKSByZXR1cm4gIXNjaGVtYSAmJiBleGNlcHRLZXl3b3JkICE9ICdub3QnO1xuICBmb3IgKHZhciBrZXkgaW4gc2NoZW1hKSBpZiAoa2V5ICE9IGV4Y2VwdEtleXdvcmQgJiYgcnVsZXNba2V5XSkgcmV0dXJuIHRydWU7XG59XG5cblxuZnVuY3Rpb24gc2NoZW1hVW5rbm93blJ1bGVzKHNjaGVtYSwgcnVsZXMpIHtcbiAgaWYgKHR5cGVvZiBzY2hlbWEgPT0gJ2Jvb2xlYW4nKSByZXR1cm47XG4gIGZvciAodmFyIGtleSBpbiBzY2hlbWEpIGlmICghcnVsZXNba2V5XSkgcmV0dXJuIGtleTtcbn1cblxuXG5mdW5jdGlvbiB0b1F1b3RlZFN0cmluZyhzdHIpIHtcbiAgcmV0dXJuICdcXCcnICsgZXNjYXBlUXVvdGVzKHN0cikgKyAnXFwnJztcbn1cblxuXG5mdW5jdGlvbiBnZXRQYXRoRXhwcihjdXJyZW50UGF0aCwgZXhwciwganNvblBvaW50ZXJzLCBpc051bWJlcikge1xuICB2YXIgcGF0aCA9IGpzb25Qb2ludGVycyAvLyBmYWxzZSBieSBkZWZhdWx0XG4gICAgICAgICAgICAgID8gJ1xcJy9cXCcgKyAnICsgZXhwciArIChpc051bWJlciA/ICcnIDogJy5yZXBsYWNlKC9+L2csIFxcJ34wXFwnKS5yZXBsYWNlKC9cXFxcLy9nLCBcXCd+MVxcJyknKVxuICAgICAgICAgICAgICA6IChpc051bWJlciA/ICdcXCdbXFwnICsgJyArIGV4cHIgKyAnICsgXFwnXVxcJycgOiAnXFwnW1xcXFxcXCdcXCcgKyAnICsgZXhwciArICcgKyBcXCdcXFxcXFwnXVxcJycpO1xuICByZXR1cm4gam9pblBhdGhzKGN1cnJlbnRQYXRoLCBwYXRoKTtcbn1cblxuXG5mdW5jdGlvbiBnZXRQYXRoKGN1cnJlbnRQYXRoLCBwcm9wLCBqc29uUG9pbnRlcnMpIHtcbiAgdmFyIHBhdGggPSBqc29uUG9pbnRlcnMgLy8gZmFsc2UgYnkgZGVmYXVsdFxuICAgICAgICAgICAgICA/IHRvUXVvdGVkU3RyaW5nKCcvJyArIGVzY2FwZUpzb25Qb2ludGVyKHByb3ApKVxuICAgICAgICAgICAgICA6IHRvUXVvdGVkU3RyaW5nKGdldFByb3BlcnR5KHByb3ApKTtcbiAgcmV0dXJuIGpvaW5QYXRocyhjdXJyZW50UGF0aCwgcGF0aCk7XG59XG5cblxudmFyIEpTT05fUE9JTlRFUiA9IC9eXFwvKD86W15+XXx+MHx+MSkqJC87XG52YXIgUkVMQVRJVkVfSlNPTl9QT0lOVEVSID0gL14oWzAtOV0rKSgjfFxcLyg/Oltefl18fjB8fjEpKik/JC87XG5mdW5jdGlvbiBnZXREYXRhKCRkYXRhLCBsdmwsIHBhdGhzKSB7XG4gIHZhciB1cCwganNvblBvaW50ZXIsIGRhdGEsIG1hdGNoZXM7XG4gIGlmICgkZGF0YSA9PT0gJycpIHJldHVybiAncm9vdERhdGEnO1xuICBpZiAoJGRhdGFbMF0gPT0gJy8nKSB7XG4gICAgaWYgKCFKU09OX1BPSU5URVIudGVzdCgkZGF0YSkpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OLXBvaW50ZXI6ICcgKyAkZGF0YSk7XG4gICAganNvblBvaW50ZXIgPSAkZGF0YTtcbiAgICBkYXRhID0gJ3Jvb3REYXRhJztcbiAgfSBlbHNlIHtcbiAgICBtYXRjaGVzID0gJGRhdGEubWF0Y2goUkVMQVRJVkVfSlNPTl9QT0lOVEVSKTtcbiAgICBpZiAoIW1hdGNoZXMpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OLXBvaW50ZXI6ICcgKyAkZGF0YSk7XG4gICAgdXAgPSArbWF0Y2hlc1sxXTtcbiAgICBqc29uUG9pbnRlciA9IG1hdGNoZXNbMl07XG4gICAgaWYgKGpzb25Qb2ludGVyID09ICcjJykge1xuICAgICAgaWYgKHVwID49IGx2bCkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgYWNjZXNzIHByb3BlcnR5L2luZGV4ICcgKyB1cCArICcgbGV2ZWxzIHVwLCBjdXJyZW50IGxldmVsIGlzICcgKyBsdmwpO1xuICAgICAgcmV0dXJuIHBhdGhzW2x2bCAtIHVwXTtcbiAgICB9XG5cbiAgICBpZiAodXAgPiBsdmwpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGFjY2VzcyBkYXRhICcgKyB1cCArICcgbGV2ZWxzIHVwLCBjdXJyZW50IGxldmVsIGlzICcgKyBsdmwpO1xuICAgIGRhdGEgPSAnZGF0YScgKyAoKGx2bCAtIHVwKSB8fCAnJyk7XG4gICAgaWYgKCFqc29uUG9pbnRlcikgcmV0dXJuIGRhdGE7XG4gIH1cblxuICB2YXIgZXhwciA9IGRhdGE7XG4gIHZhciBzZWdtZW50cyA9IGpzb25Qb2ludGVyLnNwbGl0KCcvJyk7XG4gIGZvciAodmFyIGk9MDsgaTxzZWdtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzZWdtZW50ID0gc2VnbWVudHNbaV07XG4gICAgaWYgKHNlZ21lbnQpIHtcbiAgICAgIGRhdGEgKz0gZ2V0UHJvcGVydHkodW5lc2NhcGVKc29uUG9pbnRlcihzZWdtZW50KSk7XG4gICAgICBleHByICs9ICcgJiYgJyArIGRhdGE7XG4gICAgfVxuICB9XG4gIHJldHVybiBleHByO1xufVxuXG5cbmZ1bmN0aW9uIGpvaW5QYXRocyAoYSwgYikge1xuICBpZiAoYSA9PSAnXCJcIicpIHJldHVybiBiO1xuICByZXR1cm4gKGEgKyAnICsgJyArIGIpLnJlcGxhY2UoLyhbXlxcXFxdKScgXFwrICcvZywgJyQxJyk7XG59XG5cblxuZnVuY3Rpb24gdW5lc2NhcGVGcmFnbWVudChzdHIpIHtcbiAgcmV0dXJuIHVuZXNjYXBlSnNvblBvaW50ZXIoZGVjb2RlVVJJQ29tcG9uZW50KHN0cikpO1xufVxuXG5cbmZ1bmN0aW9uIGVzY2FwZUZyYWdtZW50KHN0cikge1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGVzY2FwZUpzb25Qb2ludGVyKHN0cikpO1xufVxuXG5cbmZ1bmN0aW9uIGVzY2FwZUpzb25Qb2ludGVyKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL34vZywgJ34wJykucmVwbGFjZSgvXFwvL2csICd+MScpO1xufVxuXG5cbmZ1bmN0aW9uIHVuZXNjYXBlSnNvblBvaW50ZXIoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvfjEvZywgJy8nKS5yZXBsYWNlKC9+MC9nLCAnficpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNjaGVtYU9iamVjdDtcblxuZnVuY3Rpb24gU2NoZW1hT2JqZWN0KG9iaikge1xuICB1dGlsLmNvcHkob2JqLCB0aGlzKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHRyYXZlcnNlID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoc2NoZW1hLCBvcHRzLCBjYikge1xuICAvLyBMZWdhY3kgc3VwcG9ydCBmb3IgdjAuMy4xIGFuZCBlYXJsaWVyLlxuICBpZiAodHlwZW9mIG9wdHMgPT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gb3B0cztcbiAgICBvcHRzID0ge307XG4gIH1cblxuICBjYiA9IG9wdHMuY2IgfHwgY2I7XG4gIHZhciBwcmUgPSAodHlwZW9mIGNiID09ICdmdW5jdGlvbicpID8gY2IgOiBjYi5wcmUgfHwgZnVuY3Rpb24oKSB7fTtcbiAgdmFyIHBvc3QgPSBjYi5wb3N0IHx8IGZ1bmN0aW9uKCkge307XG5cbiAgX3RyYXZlcnNlKG9wdHMsIHByZSwgcG9zdCwgc2NoZW1hLCAnJywgc2NoZW1hKTtcbn07XG5cblxudHJhdmVyc2Uua2V5d29yZHMgPSB7XG4gIGFkZGl0aW9uYWxJdGVtczogdHJ1ZSxcbiAgaXRlbXM6IHRydWUsXG4gIGNvbnRhaW5zOiB0cnVlLFxuICBhZGRpdGlvbmFsUHJvcGVydGllczogdHJ1ZSxcbiAgcHJvcGVydHlOYW1lczogdHJ1ZSxcbiAgbm90OiB0cnVlXG59O1xuXG50cmF2ZXJzZS5hcnJheUtleXdvcmRzID0ge1xuICBpdGVtczogdHJ1ZSxcbiAgYWxsT2Y6IHRydWUsXG4gIGFueU9mOiB0cnVlLFxuICBvbmVPZjogdHJ1ZVxufTtcblxudHJhdmVyc2UucHJvcHNLZXl3b3JkcyA9IHtcbiAgZGVmaW5pdGlvbnM6IHRydWUsXG4gIHByb3BlcnRpZXM6IHRydWUsXG4gIHBhdHRlcm5Qcm9wZXJ0aWVzOiB0cnVlLFxuICBkZXBlbmRlbmNpZXM6IHRydWVcbn07XG5cbnRyYXZlcnNlLnNraXBLZXl3b3JkcyA9IHtcbiAgZGVmYXVsdDogdHJ1ZSxcbiAgZW51bTogdHJ1ZSxcbiAgY29uc3Q6IHRydWUsXG4gIHJlcXVpcmVkOiB0cnVlLFxuICBtYXhpbXVtOiB0cnVlLFxuICBtaW5pbXVtOiB0cnVlLFxuICBleGNsdXNpdmVNYXhpbXVtOiB0cnVlLFxuICBleGNsdXNpdmVNaW5pbXVtOiB0cnVlLFxuICBtdWx0aXBsZU9mOiB0cnVlLFxuICBtYXhMZW5ndGg6IHRydWUsXG4gIG1pbkxlbmd0aDogdHJ1ZSxcbiAgcGF0dGVybjogdHJ1ZSxcbiAgZm9ybWF0OiB0cnVlLFxuICBtYXhJdGVtczogdHJ1ZSxcbiAgbWluSXRlbXM6IHRydWUsXG4gIHVuaXF1ZUl0ZW1zOiB0cnVlLFxuICBtYXhQcm9wZXJ0aWVzOiB0cnVlLFxuICBtaW5Qcm9wZXJ0aWVzOiB0cnVlXG59O1xuXG5cbmZ1bmN0aW9uIF90cmF2ZXJzZShvcHRzLCBwcmUsIHBvc3QsIHNjaGVtYSwganNvblB0ciwgcm9vdFNjaGVtYSwgcGFyZW50SnNvblB0ciwgcGFyZW50S2V5d29yZCwgcGFyZW50U2NoZW1hLCBrZXlJbmRleCkge1xuICBpZiAoc2NoZW1hICYmIHR5cGVvZiBzY2hlbWEgPT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoc2NoZW1hKSkge1xuICAgIHByZShzY2hlbWEsIGpzb25QdHIsIHJvb3RTY2hlbWEsIHBhcmVudEpzb25QdHIsIHBhcmVudEtleXdvcmQsIHBhcmVudFNjaGVtYSwga2V5SW5kZXgpO1xuICAgIGZvciAodmFyIGtleSBpbiBzY2hlbWEpIHtcbiAgICAgIHZhciBzY2ggPSBzY2hlbWFba2V5XTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHNjaCkpIHtcbiAgICAgICAgaWYgKGtleSBpbiB0cmF2ZXJzZS5hcnJheUtleXdvcmRzKSB7XG4gICAgICAgICAgZm9yICh2YXIgaT0wOyBpPHNjaC5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIF90cmF2ZXJzZShvcHRzLCBwcmUsIHBvc3QsIHNjaFtpXSwganNvblB0ciArICcvJyArIGtleSArICcvJyArIGksIHJvb3RTY2hlbWEsIGpzb25QdHIsIGtleSwgc2NoZW1hLCBpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChrZXkgaW4gdHJhdmVyc2UucHJvcHNLZXl3b3Jkcykge1xuICAgICAgICBpZiAoc2NoICYmIHR5cGVvZiBzY2ggPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIHNjaClcbiAgICAgICAgICAgIF90cmF2ZXJzZShvcHRzLCBwcmUsIHBvc3QsIHNjaFtwcm9wXSwganNvblB0ciArICcvJyArIGtleSArICcvJyArIGVzY2FwZUpzb25QdHIocHJvcCksIHJvb3RTY2hlbWEsIGpzb25QdHIsIGtleSwgc2NoZW1hLCBwcm9wKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChrZXkgaW4gdHJhdmVyc2Uua2V5d29yZHMgfHwgKG9wdHMuYWxsS2V5cyAmJiAhKGtleSBpbiB0cmF2ZXJzZS5za2lwS2V5d29yZHMpKSkge1xuICAgICAgICBfdHJhdmVyc2Uob3B0cywgcHJlLCBwb3N0LCBzY2gsIGpzb25QdHIgKyAnLycgKyBrZXksIHJvb3RTY2hlbWEsIGpzb25QdHIsIGtleSwgc2NoZW1hKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcG9zdChzY2hlbWEsIGpzb25QdHIsIHJvb3RTY2hlbWEsIHBhcmVudEpzb25QdHIsIHBhcmVudEtleXdvcmQsIHBhcmVudFNjaGVtYSwga2V5SW5kZXgpO1xuICB9XG59XG5cblxuZnVuY3Rpb24gZXNjYXBlSnNvblB0cihzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9+L2csICd+MCcpLnJlcGxhY2UoL1xcLy9nLCAnfjEnKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFVSSSA9IHJlcXVpcmUoJ3VyaS1qcycpXG4gICwgZXF1YWwgPSByZXF1aXJlKCdmYXN0LWRlZXAtZXF1YWwnKVxuICAsIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKVxuICAsIFNjaGVtYU9iamVjdCA9IHJlcXVpcmUoJy4vc2NoZW1hX29iaicpXG4gICwgdHJhdmVyc2UgPSByZXF1aXJlKCdqc29uLXNjaGVtYS10cmF2ZXJzZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlc29sdmU7XG5cbnJlc29sdmUubm9ybWFsaXplSWQgPSBub3JtYWxpemVJZDtcbnJlc29sdmUuZnVsbFBhdGggPSBnZXRGdWxsUGF0aDtcbnJlc29sdmUudXJsID0gcmVzb2x2ZVVybDtcbnJlc29sdmUuaWRzID0gcmVzb2x2ZUlkcztcbnJlc29sdmUuaW5saW5lUmVmID0gaW5saW5lUmVmO1xucmVzb2x2ZS5zY2hlbWEgPSByZXNvbHZlU2NoZW1hO1xuXG4vKipcbiAqIFtyZXNvbHZlIGFuZCBjb21waWxlIHRoZSByZWZlcmVuY2VzICgkcmVmKV1cbiAqIEB0aGlzICAgQWp2XG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY29tcGlsZSByZWZlcmVuY2UgdG8gc2NoZW1hIGNvbXBpbGF0aW9uIGZ1bmNpdG9uIChsb2NhbENvbXBpbGUpXG4gKiBAcGFyYW0gIHtPYmplY3R9IHJvb3Qgb2JqZWN0IHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJvb3Qgc2NoZW1hIGZvciB0aGUgY3VycmVudCBzY2hlbWFcbiAqIEBwYXJhbSAge1N0cmluZ30gcmVmIHJlZmVyZW5jZSB0byByZXNvbHZlXG4gKiBAcmV0dXJuIHtPYmplY3R8RnVuY3Rpb259IHNjaGVtYSBvYmplY3QgKGlmIHRoZSBzY2hlbWEgY2FuIGJlIGlubGluZWQpIG9yIHZhbGlkYXRpb24gZnVuY3Rpb25cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZShjb21waWxlLCByb290LCByZWYpIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICB2YXIgcmVmVmFsID0gdGhpcy5fcmVmc1tyZWZdO1xuICBpZiAodHlwZW9mIHJlZlZhbCA9PSAnc3RyaW5nJykge1xuICAgIGlmICh0aGlzLl9yZWZzW3JlZlZhbF0pIHJlZlZhbCA9IHRoaXMuX3JlZnNbcmVmVmFsXTtcbiAgICBlbHNlIHJldHVybiByZXNvbHZlLmNhbGwodGhpcywgY29tcGlsZSwgcm9vdCwgcmVmVmFsKTtcbiAgfVxuXG4gIHJlZlZhbCA9IHJlZlZhbCB8fCB0aGlzLl9zY2hlbWFzW3JlZl07XG4gIGlmIChyZWZWYWwgaW5zdGFuY2VvZiBTY2hlbWFPYmplY3QpIHtcbiAgICByZXR1cm4gaW5saW5lUmVmKHJlZlZhbC5zY2hlbWEsIHRoaXMuX29wdHMuaW5saW5lUmVmcylcbiAgICAgICAgICAgID8gcmVmVmFsLnNjaGVtYVxuICAgICAgICAgICAgOiByZWZWYWwudmFsaWRhdGUgfHwgdGhpcy5fY29tcGlsZShyZWZWYWwpO1xuICB9XG5cbiAgdmFyIHJlcyA9IHJlc29sdmVTY2hlbWEuY2FsbCh0aGlzLCByb290LCByZWYpO1xuICB2YXIgc2NoZW1hLCB2LCBiYXNlSWQ7XG4gIGlmIChyZXMpIHtcbiAgICBzY2hlbWEgPSByZXMuc2NoZW1hO1xuICAgIHJvb3QgPSByZXMucm9vdDtcbiAgICBiYXNlSWQgPSByZXMuYmFzZUlkO1xuICB9XG5cbiAgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIFNjaGVtYU9iamVjdCkge1xuICAgIHYgPSBzY2hlbWEudmFsaWRhdGUgfHwgY29tcGlsZS5jYWxsKHRoaXMsIHNjaGVtYS5zY2hlbWEsIHJvb3QsIHVuZGVmaW5lZCwgYmFzZUlkKTtcbiAgfSBlbHNlIGlmIChzY2hlbWEgIT09IHVuZGVmaW5lZCkge1xuICAgIHYgPSBpbmxpbmVSZWYoc2NoZW1hLCB0aGlzLl9vcHRzLmlubGluZVJlZnMpXG4gICAgICAgID8gc2NoZW1hXG4gICAgICAgIDogY29tcGlsZS5jYWxsKHRoaXMsIHNjaGVtYSwgcm9vdCwgdW5kZWZpbmVkLCBiYXNlSWQpO1xuICB9XG5cbiAgcmV0dXJuIHY7XG59XG5cblxuLyoqXG4gKiBSZXNvbHZlIHNjaGVtYSwgaXRzIHJvb3QgYW5kIGJhc2VJZFxuICogQHRoaXMgQWp2XG4gKiBAcGFyYW0gIHtPYmplY3R9IHJvb3Qgcm9vdCBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzIHNjaGVtYSwgcmVmVmFsLCByZWZzXG4gKiBAcGFyYW0gIHtTdHJpbmd9IHJlZiAgcmVmZXJlbmNlIHRvIHJlc29sdmVcbiAqIEByZXR1cm4ge09iamVjdH0gb2JqZWN0IHdpdGggcHJvcGVydGllcyBzY2hlbWEsIHJvb3QsIGJhc2VJZFxuICovXG5mdW5jdGlvbiByZXNvbHZlU2NoZW1hKHJvb3QsIHJlZikge1xuICAvKiBqc2hpbnQgdmFsaWR0aGlzOiB0cnVlICovXG4gIHZhciBwID0gVVJJLnBhcnNlKHJlZilcbiAgICAsIHJlZlBhdGggPSBfZ2V0RnVsbFBhdGgocClcbiAgICAsIGJhc2VJZCA9IGdldEZ1bGxQYXRoKHRoaXMuX2dldElkKHJvb3Quc2NoZW1hKSk7XG4gIGlmIChPYmplY3Qua2V5cyhyb290LnNjaGVtYSkubGVuZ3RoID09PSAwIHx8IHJlZlBhdGggIT09IGJhc2VJZCkge1xuICAgIHZhciBpZCA9IG5vcm1hbGl6ZUlkKHJlZlBhdGgpO1xuICAgIHZhciByZWZWYWwgPSB0aGlzLl9yZWZzW2lkXTtcbiAgICBpZiAodHlwZW9mIHJlZlZhbCA9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHJlc29sdmVSZWN1cnNpdmUuY2FsbCh0aGlzLCByb290LCByZWZWYWwsIHApO1xuICAgIH0gZWxzZSBpZiAocmVmVmFsIGluc3RhbmNlb2YgU2NoZW1hT2JqZWN0KSB7XG4gICAgICBpZiAoIXJlZlZhbC52YWxpZGF0ZSkgdGhpcy5fY29tcGlsZShyZWZWYWwpO1xuICAgICAgcm9vdCA9IHJlZlZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVmVmFsID0gdGhpcy5fc2NoZW1hc1tpZF07XG4gICAgICBpZiAocmVmVmFsIGluc3RhbmNlb2YgU2NoZW1hT2JqZWN0KSB7XG4gICAgICAgIGlmICghcmVmVmFsLnZhbGlkYXRlKSB0aGlzLl9jb21waWxlKHJlZlZhbCk7XG4gICAgICAgIGlmIChpZCA9PSBub3JtYWxpemVJZChyZWYpKVxuICAgICAgICAgIHJldHVybiB7IHNjaGVtYTogcmVmVmFsLCByb290OiByb290LCBiYXNlSWQ6IGJhc2VJZCB9O1xuICAgICAgICByb290ID0gcmVmVmFsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXJvb3Quc2NoZW1hKSByZXR1cm47XG4gICAgYmFzZUlkID0gZ2V0RnVsbFBhdGgodGhpcy5fZ2V0SWQocm9vdC5zY2hlbWEpKTtcbiAgfVxuICByZXR1cm4gZ2V0SnNvblBvaW50ZXIuY2FsbCh0aGlzLCBwLCBiYXNlSWQsIHJvb3Quc2NoZW1hLCByb290KTtcbn1cblxuXG4vKiBAdGhpcyBBanYgKi9cbmZ1bmN0aW9uIHJlc29sdmVSZWN1cnNpdmUocm9vdCwgcmVmLCBwYXJzZWRSZWYpIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICB2YXIgcmVzID0gcmVzb2x2ZVNjaGVtYS5jYWxsKHRoaXMsIHJvb3QsIHJlZik7XG4gIGlmIChyZXMpIHtcbiAgICB2YXIgc2NoZW1hID0gcmVzLnNjaGVtYTtcbiAgICB2YXIgYmFzZUlkID0gcmVzLmJhc2VJZDtcbiAgICByb290ID0gcmVzLnJvb3Q7XG4gICAgdmFyIGlkID0gdGhpcy5fZ2V0SWQoc2NoZW1hKTtcbiAgICBpZiAoaWQpIGJhc2VJZCA9IHJlc29sdmVVcmwoYmFzZUlkLCBpZCk7XG4gICAgcmV0dXJuIGdldEpzb25Qb2ludGVyLmNhbGwodGhpcywgcGFyc2VkUmVmLCBiYXNlSWQsIHNjaGVtYSwgcm9vdCk7XG4gIH1cbn1cblxuXG52YXIgUFJFVkVOVF9TQ09QRV9DSEFOR0UgPSB1dGlsLnRvSGFzaChbJ3Byb3BlcnRpZXMnLCAncGF0dGVyblByb3BlcnRpZXMnLCAnZW51bScsICdkZXBlbmRlbmNpZXMnLCAnZGVmaW5pdGlvbnMnXSk7XG4vKiBAdGhpcyBBanYgKi9cbmZ1bmN0aW9uIGdldEpzb25Qb2ludGVyKHBhcnNlZFJlZiwgYmFzZUlkLCBzY2hlbWEsIHJvb3QpIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICBwYXJzZWRSZWYuZnJhZ21lbnQgPSBwYXJzZWRSZWYuZnJhZ21lbnQgfHwgJyc7XG4gIGlmIChwYXJzZWRSZWYuZnJhZ21lbnQuc2xpY2UoMCwxKSAhPSAnLycpIHJldHVybjtcbiAgdmFyIHBhcnRzID0gcGFyc2VkUmVmLmZyYWdtZW50LnNwbGl0KCcvJyk7XG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwYXJ0ID0gcGFydHNbaV07XG4gICAgaWYgKHBhcnQpIHtcbiAgICAgIHBhcnQgPSB1dGlsLnVuZXNjYXBlRnJhZ21lbnQocGFydCk7XG4gICAgICBzY2hlbWEgPSBzY2hlbWFbcGFydF07XG4gICAgICBpZiAoc2NoZW1hID09PSB1bmRlZmluZWQpIGJyZWFrO1xuICAgICAgdmFyIGlkO1xuICAgICAgaWYgKCFQUkVWRU5UX1NDT1BFX0NIQU5HRVtwYXJ0XSkge1xuICAgICAgICBpZCA9IHRoaXMuX2dldElkKHNjaGVtYSk7XG4gICAgICAgIGlmIChpZCkgYmFzZUlkID0gcmVzb2x2ZVVybChiYXNlSWQsIGlkKTtcbiAgICAgICAgaWYgKHNjaGVtYS4kcmVmKSB7XG4gICAgICAgICAgdmFyICRyZWYgPSByZXNvbHZlVXJsKGJhc2VJZCwgc2NoZW1hLiRyZWYpO1xuICAgICAgICAgIHZhciByZXMgPSByZXNvbHZlU2NoZW1hLmNhbGwodGhpcywgcm9vdCwgJHJlZik7XG4gICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgc2NoZW1hID0gcmVzLnNjaGVtYTtcbiAgICAgICAgICAgIHJvb3QgPSByZXMucm9vdDtcbiAgICAgICAgICAgIGJhc2VJZCA9IHJlcy5iYXNlSWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChzY2hlbWEgIT09IHVuZGVmaW5lZCAmJiBzY2hlbWEgIT09IHJvb3Quc2NoZW1hKVxuICAgIHJldHVybiB7IHNjaGVtYTogc2NoZW1hLCByb290OiByb290LCBiYXNlSWQ6IGJhc2VJZCB9O1xufVxuXG5cbnZhciBTSU1QTEVfSU5MSU5FRCA9IHV0aWwudG9IYXNoKFtcbiAgJ3R5cGUnLCAnZm9ybWF0JywgJ3BhdHRlcm4nLFxuICAnbWF4TGVuZ3RoJywgJ21pbkxlbmd0aCcsXG4gICdtYXhQcm9wZXJ0aWVzJywgJ21pblByb3BlcnRpZXMnLFxuICAnbWF4SXRlbXMnLCAnbWluSXRlbXMnLFxuICAnbWF4aW11bScsICdtaW5pbXVtJyxcbiAgJ3VuaXF1ZUl0ZW1zJywgJ211bHRpcGxlT2YnLFxuICAncmVxdWlyZWQnLCAnZW51bSdcbl0pO1xuZnVuY3Rpb24gaW5saW5lUmVmKHNjaGVtYSwgbGltaXQpIHtcbiAgaWYgKGxpbWl0ID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuICBpZiAobGltaXQgPT09IHVuZGVmaW5lZCB8fCBsaW1pdCA9PT0gdHJ1ZSkgcmV0dXJuIGNoZWNrTm9SZWYoc2NoZW1hKTtcbiAgZWxzZSBpZiAobGltaXQpIHJldHVybiBjb3VudEtleXMoc2NoZW1hKSA8PSBsaW1pdDtcbn1cblxuXG5mdW5jdGlvbiBjaGVja05vUmVmKHNjaGVtYSkge1xuICB2YXIgaXRlbTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hKSkge1xuICAgIGZvciAodmFyIGk9MDsgaTxzY2hlbWEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGl0ZW0gPSBzY2hlbWFbaV07XG4gICAgICBpZiAodHlwZW9mIGl0ZW0gPT0gJ29iamVjdCcgJiYgIWNoZWNrTm9SZWYoaXRlbSkpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIga2V5IGluIHNjaGVtYSkge1xuICAgICAgaWYgKGtleSA9PSAnJHJlZicpIHJldHVybiBmYWxzZTtcbiAgICAgIGl0ZW0gPSBzY2hlbWFba2V5XTtcbiAgICAgIGlmICh0eXBlb2YgaXRlbSA9PSAnb2JqZWN0JyAmJiAhY2hlY2tOb1JlZihpdGVtKSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuXG5mdW5jdGlvbiBjb3VudEtleXMoc2NoZW1hKSB7XG4gIHZhciBjb3VudCA9IDAsIGl0ZW07XG4gIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYSkpIHtcbiAgICBmb3IgKHZhciBpPTA7IGk8c2NoZW1hLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpdGVtID0gc2NoZW1hW2ldO1xuICAgICAgaWYgKHR5cGVvZiBpdGVtID09ICdvYmplY3QnKSBjb3VudCArPSBjb3VudEtleXMoaXRlbSk7XG4gICAgICBpZiAoY291bnQgPT0gSW5maW5pdHkpIHJldHVybiBJbmZpbml0eTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIga2V5IGluIHNjaGVtYSkge1xuICAgICAgaWYgKGtleSA9PSAnJHJlZicpIHJldHVybiBJbmZpbml0eTtcbiAgICAgIGlmIChTSU1QTEVfSU5MSU5FRFtrZXldKSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtID0gc2NoZW1hW2tleV07XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PSAnb2JqZWN0JykgY291bnQgKz0gY291bnRLZXlzKGl0ZW0pICsgMTtcbiAgICAgICAgaWYgKGNvdW50ID09IEluZmluaXR5KSByZXR1cm4gSW5maW5pdHk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjb3VudDtcbn1cblxuXG5mdW5jdGlvbiBnZXRGdWxsUGF0aChpZCwgbm9ybWFsaXplKSB7XG4gIGlmIChub3JtYWxpemUgIT09IGZhbHNlKSBpZCA9IG5vcm1hbGl6ZUlkKGlkKTtcbiAgdmFyIHAgPSBVUkkucGFyc2UoaWQpO1xuICByZXR1cm4gX2dldEZ1bGxQYXRoKHApO1xufVxuXG5cbmZ1bmN0aW9uIF9nZXRGdWxsUGF0aChwKSB7XG4gIHJldHVybiBVUkkuc2VyaWFsaXplKHApLnNwbGl0KCcjJylbMF0gKyAnIyc7XG59XG5cblxudmFyIFRSQUlMSU5HX1NMQVNIX0hBU0ggPSAvI1xcLz8kLztcbmZ1bmN0aW9uIG5vcm1hbGl6ZUlkKGlkKSB7XG4gIHJldHVybiBpZCA/IGlkLnJlcGxhY2UoVFJBSUxJTkdfU0xBU0hfSEFTSCwgJycpIDogJyc7XG59XG5cblxuZnVuY3Rpb24gcmVzb2x2ZVVybChiYXNlSWQsIGlkKSB7XG4gIGlkID0gbm9ybWFsaXplSWQoaWQpO1xuICByZXR1cm4gVVJJLnJlc29sdmUoYmFzZUlkLCBpZCk7XG59XG5cblxuLyogQHRoaXMgQWp2ICovXG5mdW5jdGlvbiByZXNvbHZlSWRzKHNjaGVtYSkge1xuICB2YXIgc2NoZW1hSWQgPSBub3JtYWxpemVJZCh0aGlzLl9nZXRJZChzY2hlbWEpKTtcbiAgdmFyIGJhc2VJZHMgPSB7Jyc6IHNjaGVtYUlkfTtcbiAgdmFyIGZ1bGxQYXRocyA9IHsnJzogZ2V0RnVsbFBhdGgoc2NoZW1hSWQsIGZhbHNlKX07XG4gIHZhciBsb2NhbFJlZnMgPSB7fTtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIHRyYXZlcnNlKHNjaGVtYSwge2FsbEtleXM6IHRydWV9LCBmdW5jdGlvbihzY2gsIGpzb25QdHIsIHJvb3RTY2hlbWEsIHBhcmVudEpzb25QdHIsIHBhcmVudEtleXdvcmQsIHBhcmVudFNjaGVtYSwga2V5SW5kZXgpIHtcbiAgICBpZiAoanNvblB0ciA9PT0gJycpIHJldHVybjtcbiAgICB2YXIgaWQgPSBzZWxmLl9nZXRJZChzY2gpO1xuICAgIHZhciBiYXNlSWQgPSBiYXNlSWRzW3BhcmVudEpzb25QdHJdO1xuICAgIHZhciBmdWxsUGF0aCA9IGZ1bGxQYXRoc1twYXJlbnRKc29uUHRyXSArICcvJyArIHBhcmVudEtleXdvcmQ7XG4gICAgaWYgKGtleUluZGV4ICE9PSB1bmRlZmluZWQpXG4gICAgICBmdWxsUGF0aCArPSAnLycgKyAodHlwZW9mIGtleUluZGV4ID09ICdudW1iZXInID8ga2V5SW5kZXggOiB1dGlsLmVzY2FwZUZyYWdtZW50KGtleUluZGV4KSk7XG5cbiAgICBpZiAodHlwZW9mIGlkID09ICdzdHJpbmcnKSB7XG4gICAgICBpZCA9IGJhc2VJZCA9IG5vcm1hbGl6ZUlkKGJhc2VJZCA/IFVSSS5yZXNvbHZlKGJhc2VJZCwgaWQpIDogaWQpO1xuXG4gICAgICB2YXIgcmVmVmFsID0gc2VsZi5fcmVmc1tpZF07XG4gICAgICBpZiAodHlwZW9mIHJlZlZhbCA9PSAnc3RyaW5nJykgcmVmVmFsID0gc2VsZi5fcmVmc1tyZWZWYWxdO1xuICAgICAgaWYgKHJlZlZhbCAmJiByZWZWYWwuc2NoZW1hKSB7XG4gICAgICAgIGlmICghZXF1YWwoc2NoLCByZWZWYWwuc2NoZW1hKSlcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2lkIFwiJyArIGlkICsgJ1wiIHJlc29sdmVzIHRvIG1vcmUgdGhhbiBvbmUgc2NoZW1hJyk7XG4gICAgICB9IGVsc2UgaWYgKGlkICE9IG5vcm1hbGl6ZUlkKGZ1bGxQYXRoKSkge1xuICAgICAgICBpZiAoaWRbMF0gPT0gJyMnKSB7XG4gICAgICAgICAgaWYgKGxvY2FsUmVmc1tpZF0gJiYgIWVxdWFsKHNjaCwgbG9jYWxSZWZzW2lkXSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2lkIFwiJyArIGlkICsgJ1wiIHJlc29sdmVzIHRvIG1vcmUgdGhhbiBvbmUgc2NoZW1hJyk7XG4gICAgICAgICAgbG9jYWxSZWZzW2lkXSA9IHNjaDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWxmLl9yZWZzW2lkXSA9IGZ1bGxQYXRoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGJhc2VJZHNbanNvblB0cl0gPSBiYXNlSWQ7XG4gICAgZnVsbFBhdGhzW2pzb25QdHJdID0gZnVsbFBhdGg7XG4gIH0pO1xuXG4gIHJldHVybiBsb2NhbFJlZnM7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciByZXNvbHZlID0gcmVxdWlyZSgnLi9yZXNvbHZlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBWYWxpZGF0aW9uOiBlcnJvclN1YmNsYXNzKFZhbGlkYXRpb25FcnJvciksXG4gIE1pc3NpbmdSZWY6IGVycm9yU3ViY2xhc3MoTWlzc2luZ1JlZkVycm9yKVxufTtcblxuXG5mdW5jdGlvbiBWYWxpZGF0aW9uRXJyb3IoZXJyb3JzKSB7XG4gIHRoaXMubWVzc2FnZSA9ICd2YWxpZGF0aW9uIGZhaWxlZCc7XG4gIHRoaXMuZXJyb3JzID0gZXJyb3JzO1xuICB0aGlzLmFqdiA9IHRoaXMudmFsaWRhdGlvbiA9IHRydWU7XG59XG5cblxuTWlzc2luZ1JlZkVycm9yLm1lc3NhZ2UgPSBmdW5jdGlvbiAoYmFzZUlkLCByZWYpIHtcbiAgcmV0dXJuICdjYW5cXCd0IHJlc29sdmUgcmVmZXJlbmNlICcgKyByZWYgKyAnIGZyb20gaWQgJyArIGJhc2VJZDtcbn07XG5cblxuZnVuY3Rpb24gTWlzc2luZ1JlZkVycm9yKGJhc2VJZCwgcmVmLCBtZXNzYWdlKSB7XG4gIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgTWlzc2luZ1JlZkVycm9yLm1lc3NhZ2UoYmFzZUlkLCByZWYpO1xuICB0aGlzLm1pc3NpbmdSZWYgPSByZXNvbHZlLnVybChiYXNlSWQsIHJlZik7XG4gIHRoaXMubWlzc2luZ1NjaGVtYSA9IHJlc29sdmUubm9ybWFsaXplSWQocmVzb2x2ZS5mdWxsUGF0aCh0aGlzLm1pc3NpbmdSZWYpKTtcbn1cblxuXG5mdW5jdGlvbiBlcnJvclN1YmNsYXNzKFN1YmNsYXNzKSB7XG4gIFN1YmNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTtcbiAgU3ViY2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU3ViY2xhc3M7XG4gIHJldHVybiBTdWJjbGFzcztcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZGF0YSwgb3B0cykge1xuICAgIGlmICghb3B0cykgb3B0cyA9IHt9O1xuICAgIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykgb3B0cyA9IHsgY21wOiBvcHRzIH07XG4gICAgdmFyIGN5Y2xlcyA9ICh0eXBlb2Ygb3B0cy5jeWNsZXMgPT09ICdib29sZWFuJykgPyBvcHRzLmN5Y2xlcyA6IGZhbHNlO1xuXG4gICAgdmFyIGNtcCA9IG9wdHMuY21wICYmIChmdW5jdGlvbiAoZikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgIHZhciBhb2JqID0geyBrZXk6IGEsIHZhbHVlOiBub2RlW2FdIH07XG4gICAgICAgICAgICAgICAgdmFyIGJvYmogPSB7IGtleTogYiwgdmFsdWU6IG5vZGVbYl0gfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZihhb2JqLCBib2JqKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgfSkob3B0cy5jbXApO1xuXG4gICAgdmFyIHNlZW4gPSBbXTtcbiAgICByZXR1cm4gKGZ1bmN0aW9uIHN0cmluZ2lmeSAobm9kZSkge1xuICAgICAgICBpZiAobm9kZSAmJiBub2RlLnRvSlNPTiAmJiB0eXBlb2Ygbm9kZS50b0pTT04gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIG5vZGUgPSBub2RlLnRvSlNPTigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgICAgICBpZiAodHlwZW9mIG5vZGUgPT0gJ251bWJlcicpIHJldHVybiBpc0Zpbml0ZShub2RlKSA/ICcnICsgbm9kZSA6ICdudWxsJztcbiAgICAgICAgaWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0JykgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG5vZGUpO1xuXG4gICAgICAgIHZhciBpLCBvdXQ7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgICAgICAgICBvdXQgPSAnWyc7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbm9kZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpKSBvdXQgKz0gJywnO1xuICAgICAgICAgICAgICAgIG91dCArPSBzdHJpbmdpZnkobm9kZVtpXSkgfHwgJ251bGwnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG91dCArICddJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlID09PSBudWxsKSByZXR1cm4gJ251bGwnO1xuXG4gICAgICAgIGlmIChzZWVuLmluZGV4T2Yobm9kZSkgIT09IC0xKSB7XG4gICAgICAgICAgICBpZiAoY3ljbGVzKSByZXR1cm4gSlNPTi5zdHJpbmdpZnkoJ19fY3ljbGVfXycpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ29udmVydGluZyBjaXJjdWxhciBzdHJ1Y3R1cmUgdG8gSlNPTicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNlZW5JbmRleCA9IHNlZW4ucHVzaChub2RlKSAtIDE7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMobm9kZSkuc29ydChjbXAgJiYgY21wKG5vZGUpKTtcbiAgICAgICAgb3V0ID0gJyc7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHN0cmluZ2lmeShub2RlW2tleV0pO1xuXG4gICAgICAgICAgICBpZiAoIXZhbHVlKSBjb250aW51ZTtcbiAgICAgICAgICAgIGlmIChvdXQpIG91dCArPSAnLCc7XG4gICAgICAgICAgICBvdXQgKz0gSlNPTi5zdHJpbmdpZnkoa2V5KSArICc6JyArIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHNlZW4uc3BsaWNlKHNlZW5JbmRleCwgMSk7XG4gICAgICAgIHJldHVybiAneycgKyBvdXQgKyAnfSc7XG4gICAgfSkoZGF0YSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV92YWxpZGF0ZShpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyc7XG4gIHZhciAkYXN5bmMgPSBpdC5zY2hlbWEuJGFzeW5jID09PSB0cnVlLFxuICAgICRyZWZLZXl3b3JkcyA9IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXNFeGNlcHQoaXQuc2NoZW1hLCBpdC5SVUxFUy5hbGwsICckcmVmJyksXG4gICAgJGlkID0gaXQuc2VsZi5fZ2V0SWQoaXQuc2NoZW1hKTtcbiAgaWYgKGl0Lm9wdHMuc3RyaWN0S2V5d29yZHMpIHtcbiAgICB2YXIgJHVua25vd25Ld2QgPSBpdC51dGlsLnNjaGVtYVVua25vd25SdWxlcyhpdC5zY2hlbWEsIGl0LlJVTEVTLmtleXdvcmRzKTtcbiAgICBpZiAoJHVua25vd25Ld2QpIHtcbiAgICAgIHZhciAka2V5d29yZHNNc2cgPSAndW5rbm93biBrZXl3b3JkOiAnICsgJHVua25vd25Ld2Q7XG4gICAgICBpZiAoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA9PT0gJ2xvZycpIGl0LmxvZ2dlci53YXJuKCRrZXl3b3Jkc01zZyk7XG4gICAgICBlbHNlIHRocm93IG5ldyBFcnJvcigka2V5d29yZHNNc2cpO1xuICAgIH1cbiAgfVxuICBpZiAoaXQuaXNUb3ApIHtcbiAgICBvdXQgKz0gJyB2YXIgdmFsaWRhdGUgPSAnO1xuICAgIGlmICgkYXN5bmMpIHtcbiAgICAgIGl0LmFzeW5jID0gdHJ1ZTtcbiAgICAgIG91dCArPSAnYXN5bmMgJztcbiAgICB9XG4gICAgb3V0ICs9ICdmdW5jdGlvbihkYXRhLCBkYXRhUGF0aCwgcGFyZW50RGF0YSwgcGFyZW50RGF0YVByb3BlcnR5LCByb290RGF0YSkgeyBcXCd1c2Ugc3RyaWN0XFwnOyAnO1xuICAgIGlmICgkaWQgJiYgKGl0Lm9wdHMuc291cmNlQ29kZSB8fCBpdC5vcHRzLnByb2Nlc3NDb2RlKSkge1xuICAgICAgb3V0ICs9ICcgJyArICgnL1xcKiMgc291cmNlVVJMPScgKyAkaWQgKyAnICovJykgKyAnICc7XG4gICAgfVxuICB9XG4gIGlmICh0eXBlb2YgaXQuc2NoZW1hID09ICdib29sZWFuJyB8fCAhKCRyZWZLZXl3b3JkcyB8fCBpdC5zY2hlbWEuJHJlZikpIHtcbiAgICB2YXIgJGtleXdvcmQgPSAnZmFsc2Ugc2NoZW1hJztcbiAgICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICAgIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gICAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICAgIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgICB2YXIgJGVycm9yS2V5d29yZDtcbiAgICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICAgIHZhciAkdmFsaWQgPSAndmFsaWQnICsgJGx2bDtcbiAgICBpZiAoaXQuc2NoZW1hID09PSBmYWxzZSkge1xuICAgICAgaWYgKGl0LmlzVG9wKSB7XG4gICAgICAgICRicmVha09uRXJyb3IgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZTsgJztcbiAgICAgIH1cbiAgICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJGVycm9yS2V5d29yZCB8fCAnZmFsc2Ugc2NoZW1hJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczoge30gJztcbiAgICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdib29sZWFuIHNjaGVtYSBpcyBmYWxzZVxcJyAnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogZmFsc2UgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgIH1cbiAgICAgIHZhciBfX2VyciA9IG91dDtcbiAgICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXQuaXNUb3ApIHtcbiAgICAgICAgaWYgKCRhc3luYykge1xuICAgICAgICAgIG91dCArPSAnIHJldHVybiBkYXRhOyAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IG51bGw7IHJldHVybiB0cnVlOyAnO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB2YXIgJyArICgkdmFsaWQpICsgJyA9IHRydWU7ICc7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpdC5pc1RvcCkge1xuICAgICAgb3V0ICs9ICcgfTsgcmV0dXJuIHZhbGlkYXRlOyAnO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG4gIGlmIChpdC5pc1RvcCkge1xuICAgIHZhciAkdG9wID0gaXQuaXNUb3AsXG4gICAgICAkbHZsID0gaXQubGV2ZWwgPSAwLFxuICAgICAgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWwgPSAwLFxuICAgICAgJGRhdGEgPSAnZGF0YSc7XG4gICAgaXQucm9vdElkID0gaXQucmVzb2x2ZS5mdWxsUGF0aChpdC5zZWxmLl9nZXRJZChpdC5yb290LnNjaGVtYSkpO1xuICAgIGl0LmJhc2VJZCA9IGl0LmJhc2VJZCB8fCBpdC5yb290SWQ7XG4gICAgZGVsZXRlIGl0LmlzVG9wO1xuICAgIGl0LmRhdGFQYXRoQXJyID0gW1wiXCJdO1xuICAgIGlmIChpdC5zY2hlbWEuZGVmYXVsdCAhPT0gdW5kZWZpbmVkICYmIGl0Lm9wdHMudXNlRGVmYXVsdHMgJiYgaXQub3B0cy5zdHJpY3REZWZhdWx0cykge1xuICAgICAgdmFyICRkZWZhdWx0TXNnID0gJ2RlZmF1bHQgaXMgaWdub3JlZCBpbiB0aGUgc2NoZW1hIHJvb3QnO1xuICAgICAgaWYgKGl0Lm9wdHMuc3RyaWN0RGVmYXVsdHMgPT09ICdsb2cnKSBpdC5sb2dnZXIud2FybigkZGVmYXVsdE1zZyk7XG4gICAgICBlbHNlIHRocm93IG5ldyBFcnJvcigkZGVmYXVsdE1zZyk7XG4gICAgfVxuICAgIG91dCArPSAnIHZhciB2RXJyb3JzID0gbnVsbDsgJztcbiAgICBvdXQgKz0gJyB2YXIgZXJyb3JzID0gMDsgICAgICc7XG4gICAgb3V0ICs9ICcgaWYgKHJvb3REYXRhID09PSB1bmRlZmluZWQpIHJvb3REYXRhID0gZGF0YTsgJztcbiAgfSBlbHNlIHtcbiAgICB2YXIgJGx2bCA9IGl0LmxldmVsLFxuICAgICAgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWwsXG4gICAgICAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gICAgaWYgKCRpZCkgaXQuYmFzZUlkID0gaXQucmVzb2x2ZS51cmwoaXQuYmFzZUlkLCAkaWQpO1xuICAgIGlmICgkYXN5bmMgJiYgIWl0LmFzeW5jKSB0aHJvdyBuZXcgRXJyb3IoJ2FzeW5jIHNjaGVtYSBpbiBzeW5jIHNjaGVtYScpO1xuICAgIG91dCArPSAnIHZhciBlcnJzXycgKyAoJGx2bCkgKyAnID0gZXJyb3JzOyc7XG4gIH1cbiAgdmFyICR2YWxpZCA9ICd2YWxpZCcgKyAkbHZsLFxuICAgICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnMsXG4gICAgJGNsb3NpbmdCcmFjZXMxID0gJycsXG4gICAgJGNsb3NpbmdCcmFjZXMyID0gJyc7XG4gIHZhciAkZXJyb3JLZXl3b3JkO1xuICB2YXIgJHR5cGVTY2hlbWEgPSBpdC5zY2hlbWEudHlwZSxcbiAgICAkdHlwZUlzQXJyYXkgPSBBcnJheS5pc0FycmF5KCR0eXBlU2NoZW1hKTtcbiAgaWYgKCR0eXBlU2NoZW1hICYmIGl0Lm9wdHMubnVsbGFibGUgJiYgaXQuc2NoZW1hLm51bGxhYmxlID09PSB0cnVlKSB7XG4gICAgaWYgKCR0eXBlSXNBcnJheSkge1xuICAgICAgaWYgKCR0eXBlU2NoZW1hLmluZGV4T2YoJ251bGwnKSA9PSAtMSkgJHR5cGVTY2hlbWEgPSAkdHlwZVNjaGVtYS5jb25jYXQoJ251bGwnKTtcbiAgICB9IGVsc2UgaWYgKCR0eXBlU2NoZW1hICE9ICdudWxsJykge1xuICAgICAgJHR5cGVTY2hlbWEgPSBbJHR5cGVTY2hlbWEsICdudWxsJ107XG4gICAgICAkdHlwZUlzQXJyYXkgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBpZiAoJHR5cGVJc0FycmF5ICYmICR0eXBlU2NoZW1hLmxlbmd0aCA9PSAxKSB7XG4gICAgJHR5cGVTY2hlbWEgPSAkdHlwZVNjaGVtYVswXTtcbiAgICAkdHlwZUlzQXJyYXkgPSBmYWxzZTtcbiAgfVxuICBpZiAoaXQuc2NoZW1hLiRyZWYgJiYgJHJlZktleXdvcmRzKSB7XG4gICAgaWYgKGl0Lm9wdHMuZXh0ZW5kUmVmcyA9PSAnZmFpbCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignJHJlZjogdmFsaWRhdGlvbiBrZXl3b3JkcyB1c2VkIGluIHNjaGVtYSBhdCBwYXRoIFwiJyArIGl0LmVyclNjaGVtYVBhdGggKyAnXCIgKHNlZSBvcHRpb24gZXh0ZW5kUmVmcyknKTtcbiAgICB9IGVsc2UgaWYgKGl0Lm9wdHMuZXh0ZW5kUmVmcyAhPT0gdHJ1ZSkge1xuICAgICAgJHJlZktleXdvcmRzID0gZmFsc2U7XG4gICAgICBpdC5sb2dnZXIud2FybignJHJlZjoga2V5d29yZHMgaWdub3JlZCBpbiBzY2hlbWEgYXQgcGF0aCBcIicgKyBpdC5lcnJTY2hlbWFQYXRoICsgJ1wiJyk7XG4gICAgfVxuICB9XG4gIGlmIChpdC5zY2hlbWEuJGNvbW1lbnQgJiYgaXQub3B0cy4kY29tbWVudCkge1xuICAgIG91dCArPSAnICcgKyAoaXQuUlVMRVMuYWxsLiRjb21tZW50LmNvZGUoaXQsICckY29tbWVudCcpKTtcbiAgfVxuICBpZiAoJHR5cGVTY2hlbWEpIHtcbiAgICBpZiAoaXQub3B0cy5jb2VyY2VUeXBlcykge1xuICAgICAgdmFyICRjb2VyY2VUb1R5cGVzID0gaXQudXRpbC5jb2VyY2VUb1R5cGVzKGl0Lm9wdHMuY29lcmNlVHlwZXMsICR0eXBlU2NoZW1hKTtcbiAgICB9XG4gICAgdmFyICRydWxlc0dyb3VwID0gaXQuUlVMRVMudHlwZXNbJHR5cGVTY2hlbWFdO1xuICAgIGlmICgkY29lcmNlVG9UeXBlcyB8fCAkdHlwZUlzQXJyYXkgfHwgJHJ1bGVzR3JvdXAgPT09IHRydWUgfHwgKCRydWxlc0dyb3VwICYmICEkc2hvdWxkVXNlR3JvdXAoJHJ1bGVzR3JvdXApKSkge1xuICAgICAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArICcudHlwZScsXG4gICAgICAgICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvdHlwZSc7XG4gICAgICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgJy50eXBlJyxcbiAgICAgICAgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy90eXBlJyxcbiAgICAgICAgJG1ldGhvZCA9ICR0eXBlSXNBcnJheSA/ICdjaGVja0RhdGFUeXBlcycgOiAnY2hlY2tEYXRhVHlwZSc7XG4gICAgICBvdXQgKz0gJyBpZiAoJyArIChpdC51dGlsWyRtZXRob2RdKCR0eXBlU2NoZW1hLCAkZGF0YSwgaXQub3B0cy5zdHJpY3ROdW1iZXJzLCB0cnVlKSkgKyAnKSB7ICc7XG4gICAgICBpZiAoJGNvZXJjZVRvVHlwZXMpIHtcbiAgICAgICAgdmFyICRkYXRhVHlwZSA9ICdkYXRhVHlwZScgKyAkbHZsLFxuICAgICAgICAgICRjb2VyY2VkID0gJ2NvZXJjZWQnICsgJGx2bDtcbiAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJGRhdGFUeXBlKSArICcgPSB0eXBlb2YgJyArICgkZGF0YSkgKyAnOyB2YXIgJyArICgkY29lcmNlZCkgKyAnID0gdW5kZWZpbmVkOyAnO1xuICAgICAgICBpZiAoaXQub3B0cy5jb2VyY2VUeXBlcyA9PSAnYXJyYXknKSB7XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJGRhdGFUeXBlKSArICcgPT0gXFwnb2JqZWN0XFwnICYmIEFycmF5LmlzQXJyYXkoJyArICgkZGF0YSkgKyAnKSAmJiAnICsgKCRkYXRhKSArICcubGVuZ3RoID09IDEpIHsgJyArICgkZGF0YSkgKyAnID0gJyArICgkZGF0YSkgKyAnWzBdOyAnICsgKCRkYXRhVHlwZSkgKyAnID0gdHlwZW9mICcgKyAoJGRhdGEpICsgJzsgaWYgKCcgKyAoaXQudXRpbC5jaGVja0RhdGFUeXBlKGl0LnNjaGVtYS50eXBlLCAkZGF0YSwgaXQub3B0cy5zdHJpY3ROdW1iZXJzKSkgKyAnKSAnICsgKCRjb2VyY2VkKSArICcgPSAnICsgKCRkYXRhKSArICc7IH0gJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkY29lcmNlZCkgKyAnICE9PSB1bmRlZmluZWQpIDsgJztcbiAgICAgICAgdmFyIGFycjEgPSAkY29lcmNlVG9UeXBlcztcbiAgICAgICAgaWYgKGFycjEpIHtcbiAgICAgICAgICB2YXIgJHR5cGUsICRpID0gLTEsXG4gICAgICAgICAgICBsMSA9IGFycjEubGVuZ3RoIC0gMTtcbiAgICAgICAgICB3aGlsZSAoJGkgPCBsMSkge1xuICAgICAgICAgICAgJHR5cGUgPSBhcnIxWyRpICs9IDFdO1xuICAgICAgICAgICAgaWYgKCR0eXBlID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnIGVsc2UgaWYgKCcgKyAoJGRhdGFUeXBlKSArICcgPT0gXFwnbnVtYmVyXFwnIHx8ICcgKyAoJGRhdGFUeXBlKSArICcgPT0gXFwnYm9vbGVhblxcJykgJyArICgkY29lcmNlZCkgKyAnID0gXFwnXFwnICsgJyArICgkZGF0YSkgKyAnOyBlbHNlIGlmICgnICsgKCRkYXRhKSArICcgPT09IG51bGwpICcgKyAoJGNvZXJjZWQpICsgJyA9IFxcJ1xcJzsgJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoJHR5cGUgPT0gJ251bWJlcicgfHwgJHR5cGUgPT0gJ2ludGVnZXInKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnIGVsc2UgaWYgKCcgKyAoJGRhdGFUeXBlKSArICcgPT0gXFwnYm9vbGVhblxcJyB8fCAnICsgKCRkYXRhKSArICcgPT09IG51bGwgfHwgKCcgKyAoJGRhdGFUeXBlKSArICcgPT0gXFwnc3RyaW5nXFwnICYmICcgKyAoJGRhdGEpICsgJyAmJiAnICsgKCRkYXRhKSArICcgPT0gKycgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICAgICAgICBpZiAoJHR5cGUgPT0gJ2ludGVnZXInKSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgJiYgISgnICsgKCRkYXRhKSArICcgJSAxKSc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb3V0ICs9ICcpKSAnICsgKCRjb2VyY2VkKSArICcgPSArJyArICgkZGF0YSkgKyAnOyAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgkdHlwZSA9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgZWxzZSBpZiAoJyArICgkZGF0YSkgKyAnID09PSBcXCdmYWxzZVxcJyB8fCAnICsgKCRkYXRhKSArICcgPT09IDAgfHwgJyArICgkZGF0YSkgKyAnID09PSBudWxsKSAnICsgKCRjb2VyY2VkKSArICcgPSBmYWxzZTsgZWxzZSBpZiAoJyArICgkZGF0YSkgKyAnID09PSBcXCd0cnVlXFwnIHx8ICcgKyAoJGRhdGEpICsgJyA9PT0gMSkgJyArICgkY29lcmNlZCkgKyAnID0gdHJ1ZTsgJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoJHR5cGUgPT0gJ251bGwnKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnIGVsc2UgaWYgKCcgKyAoJGRhdGEpICsgJyA9PT0gXFwnXFwnIHx8ICcgKyAoJGRhdGEpICsgJyA9PT0gMCB8fCAnICsgKCRkYXRhKSArICcgPT09IGZhbHNlKSAnICsgKCRjb2VyY2VkKSArICcgPSBudWxsOyAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5vcHRzLmNvZXJjZVR5cGVzID09ICdhcnJheScgJiYgJHR5cGUgPT0gJ2FycmF5Jykge1xuICAgICAgICAgICAgICBvdXQgKz0gJyBlbHNlIGlmICgnICsgKCRkYXRhVHlwZSkgKyAnID09IFxcJ3N0cmluZ1xcJyB8fCAnICsgKCRkYXRhVHlwZSkgKyAnID09IFxcJ251bWJlclxcJyB8fCAnICsgKCRkYXRhVHlwZSkgKyAnID09IFxcJ2Jvb2xlYW5cXCcgfHwgJyArICgkZGF0YSkgKyAnID09IG51bGwpICcgKyAoJGNvZXJjZWQpICsgJyA9IFsnICsgKCRkYXRhKSArICddOyAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyBlbHNlIHsgICAnO1xuICAgICAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgICAgICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJGVycm9yS2V5d29yZCB8fCAndHlwZScpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgdHlwZTogXFwnJztcbiAgICAgICAgICBpZiAoJHR5cGVJc0FycmF5KSB7XG4gICAgICAgICAgICBvdXQgKz0gJycgKyAoJHR5cGVTY2hlbWEuam9pbihcIixcIikpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXQgKz0gJycgKyAoJHR5cGVTY2hlbWEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJ1xcJyB9ICc7XG4gICAgICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBiZSAnO1xuICAgICAgICAgICAgaWYgKCR0eXBlSXNBcnJheSkge1xuICAgICAgICAgICAgICBvdXQgKz0gJycgKyAoJHR5cGVTY2hlbWEuam9pbihcIixcIikpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnXFwnICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJyB7fSAnO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX2VyciA9IG91dDtcbiAgICAgICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICAgICAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9ICcgfSBpZiAoJyArICgkY29lcmNlZCkgKyAnICE9PSB1bmRlZmluZWQpIHsgICc7XG4gICAgICAgIHZhciAkcGFyZW50RGF0YSA9ICRkYXRhTHZsID8gJ2RhdGEnICsgKCgkZGF0YUx2bCAtIDEpIHx8ICcnKSA6ICdwYXJlbnREYXRhJyxcbiAgICAgICAgICAkcGFyZW50RGF0YVByb3BlcnR5ID0gJGRhdGFMdmwgPyBpdC5kYXRhUGF0aEFyclskZGF0YUx2bF0gOiAncGFyZW50RGF0YVByb3BlcnR5JztcbiAgICAgICAgb3V0ICs9ICcgJyArICgkZGF0YSkgKyAnID0gJyArICgkY29lcmNlZCkgKyAnOyAnO1xuICAgICAgICBpZiAoISRkYXRhTHZsKSB7XG4gICAgICAgICAgb3V0ICs9ICdpZiAoJyArICgkcGFyZW50RGF0YSkgKyAnICE9PSB1bmRlZmluZWQpJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyAnICsgKCRwYXJlbnREYXRhKSArICdbJyArICgkcGFyZW50RGF0YVByb3BlcnR5KSArICddID0gJyArICgkY29lcmNlZCkgKyAnOyB9ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgICAgICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJGVycm9yS2V5d29yZCB8fCAndHlwZScpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgdHlwZTogXFwnJztcbiAgICAgICAgICBpZiAoJHR5cGVJc0FycmF5KSB7XG4gICAgICAgICAgICBvdXQgKz0gJycgKyAoJHR5cGVTY2hlbWEuam9pbihcIixcIikpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXQgKz0gJycgKyAoJHR5cGVTY2hlbWEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJ1xcJyB9ICc7XG4gICAgICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBiZSAnO1xuICAgICAgICAgICAgaWYgKCR0eXBlSXNBcnJheSkge1xuICAgICAgICAgICAgICBvdXQgKz0gJycgKyAoJHR5cGVTY2hlbWEuam9pbihcIixcIikpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnXFwnICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJyB7fSAnO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX2VyciA9IG91dDtcbiAgICAgICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICAgICAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG91dCArPSAnIH0gJztcbiAgICB9XG4gIH1cbiAgaWYgKGl0LnNjaGVtYS4kcmVmICYmICEkcmVmS2V5d29yZHMpIHtcbiAgICBvdXQgKz0gJyAnICsgKGl0LlJVTEVTLmFsbC4kcmVmLmNvZGUoaXQsICckcmVmJykpICsgJyAnO1xuICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICBvdXQgKz0gJyB9IGlmIChlcnJvcnMgPT09ICc7XG4gICAgICBpZiAoJHRvcCkge1xuICAgICAgICBvdXQgKz0gJzAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICdlcnJzXycgKyAoJGx2bCk7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJykgeyAnO1xuICAgICAgJGNsb3NpbmdCcmFjZXMyICs9ICd9JztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGFycjIgPSBpdC5SVUxFUztcbiAgICBpZiAoYXJyMikge1xuICAgICAgdmFyICRydWxlc0dyb3VwLCBpMiA9IC0xLFxuICAgICAgICBsMiA9IGFycjIubGVuZ3RoIC0gMTtcbiAgICAgIHdoaWxlIChpMiA8IGwyKSB7XG4gICAgICAgICRydWxlc0dyb3VwID0gYXJyMltpMiArPSAxXTtcbiAgICAgICAgaWYgKCRzaG91bGRVc2VHcm91cCgkcnVsZXNHcm91cCkpIHtcbiAgICAgICAgICBpZiAoJHJ1bGVzR3JvdXAudHlwZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoaXQudXRpbC5jaGVja0RhdGFUeXBlKCRydWxlc0dyb3VwLnR5cGUsICRkYXRhLCBpdC5vcHRzLnN0cmljdE51bWJlcnMpKSArICcpIHsgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0Lm9wdHMudXNlRGVmYXVsdHMpIHtcbiAgICAgICAgICAgIGlmICgkcnVsZXNHcm91cC50eXBlID09ICdvYmplY3QnICYmIGl0LnNjaGVtYS5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hLnByb3BlcnRpZXMsXG4gICAgICAgICAgICAgICAgJHNjaGVtYUtleXMgPSBPYmplY3Qua2V5cygkc2NoZW1hKTtcbiAgICAgICAgICAgICAgdmFyIGFycjMgPSAkc2NoZW1hS2V5cztcbiAgICAgICAgICAgICAgaWYgKGFycjMpIHtcbiAgICAgICAgICAgICAgICB2YXIgJHByb3BlcnR5S2V5LCBpMyA9IC0xLFxuICAgICAgICAgICAgICAgICAgbDMgPSBhcnIzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGkzIDwgbDMpIHtcbiAgICAgICAgICAgICAgICAgICRwcm9wZXJ0eUtleSA9IGFycjNbaTMgKz0gMV07XG4gICAgICAgICAgICAgICAgICB2YXIgJHNjaCA9ICRzY2hlbWFbJHByb3BlcnR5S2V5XTtcbiAgICAgICAgICAgICAgICAgIGlmICgkc2NoLmRlZmF1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJHBhc3NEYXRhID0gJGRhdGEgKyBpdC51dGlsLmdldFByb3BlcnR5KCRwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdC5jb21wb3NpdGVSdWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMuc3RyaWN0RGVmYXVsdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkZGVmYXVsdE1zZyA9ICdkZWZhdWx0IGlzIGlnbm9yZWQgZm9yOiAnICsgJHBhc3NEYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMuc3RyaWN0RGVmYXVsdHMgPT09ICdsb2cnKSBpdC5sb2dnZXIud2FybigkZGVmYXVsdE1zZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHRocm93IG5ldyBFcnJvcigkZGVmYXVsdE1zZyk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIG91dCArPSAnIGlmICgnICsgKCRwYXNzRGF0YSkgKyAnID09PSB1bmRlZmluZWQgJztcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaXQub3B0cy51c2VEZWZhdWx0cyA9PSAnZW1wdHknKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAnICsgKCRwYXNzRGF0YSkgKyAnID09PSBudWxsIHx8ICcgKyAoJHBhc3NEYXRhKSArICcgPT09IFxcJ1xcJyAnO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJyApICcgKyAoJHBhc3NEYXRhKSArICcgPSAnO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLnVzZURlZmF1bHRzID09ICdzaGFyZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJyAnICsgKGl0LnVzZURlZmF1bHQoJHNjaC5kZWZhdWx0KSkgKyAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dCArPSAnICcgKyAoSlNPTi5zdHJpbmdpZnkoJHNjaC5kZWZhdWx0KSkgKyAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG91dCArPSAnOyAnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCRydWxlc0dyb3VwLnR5cGUgPT0gJ2FycmF5JyAmJiBBcnJheS5pc0FycmF5KGl0LnNjaGVtYS5pdGVtcykpIHtcbiAgICAgICAgICAgICAgdmFyIGFycjQgPSBpdC5zY2hlbWEuaXRlbXM7XG4gICAgICAgICAgICAgIGlmIChhcnI0KSB7XG4gICAgICAgICAgICAgICAgdmFyICRzY2gsICRpID0gLTEsXG4gICAgICAgICAgICAgICAgICBsNCA9IGFycjQubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoJGkgPCBsNCkge1xuICAgICAgICAgICAgICAgICAgJHNjaCA9IGFycjRbJGkgKz0gMV07XG4gICAgICAgICAgICAgICAgICBpZiAoJHNjaC5kZWZhdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICRwYXNzRGF0YSA9ICRkYXRhICsgJ1snICsgJGkgKyAnXSc7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdC5jb21wb3NpdGVSdWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMuc3RyaWN0RGVmYXVsdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkZGVmYXVsdE1zZyA9ICdkZWZhdWx0IGlzIGlnbm9yZWQgZm9yOiAnICsgJHBhc3NEYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMuc3RyaWN0RGVmYXVsdHMgPT09ICdsb2cnKSBpdC5sb2dnZXIud2FybigkZGVmYXVsdE1zZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHRocm93IG5ldyBFcnJvcigkZGVmYXVsdE1zZyk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIG91dCArPSAnIGlmICgnICsgKCRwYXNzRGF0YSkgKyAnID09PSB1bmRlZmluZWQgJztcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaXQub3B0cy51c2VEZWZhdWx0cyA9PSAnZW1wdHknKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAnICsgKCRwYXNzRGF0YSkgKyAnID09PSBudWxsIHx8ICcgKyAoJHBhc3NEYXRhKSArICcgPT09IFxcJ1xcJyAnO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJyApICcgKyAoJHBhc3NEYXRhKSArICcgPSAnO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLnVzZURlZmF1bHRzID09ICdzaGFyZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJyAnICsgKGl0LnVzZURlZmF1bHQoJHNjaC5kZWZhdWx0KSkgKyAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dCArPSAnICcgKyAoSlNPTi5zdHJpbmdpZnkoJHNjaC5kZWZhdWx0KSkgKyAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG91dCArPSAnOyAnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBhcnI1ID0gJHJ1bGVzR3JvdXAucnVsZXM7XG4gICAgICAgICAgaWYgKGFycjUpIHtcbiAgICAgICAgICAgIHZhciAkcnVsZSwgaTUgPSAtMSxcbiAgICAgICAgICAgICAgbDUgPSBhcnI1Lmxlbmd0aCAtIDE7XG4gICAgICAgICAgICB3aGlsZSAoaTUgPCBsNSkge1xuICAgICAgICAgICAgICAkcnVsZSA9IGFycjVbaTUgKz0gMV07XG4gICAgICAgICAgICAgIGlmICgkc2hvdWxkVXNlUnVsZSgkcnVsZSkpIHtcbiAgICAgICAgICAgICAgICB2YXIgJGNvZGUgPSAkcnVsZS5jb2RlKGl0LCAkcnVsZS5rZXl3b3JkLCAkcnVsZXNHcm91cC50eXBlKTtcbiAgICAgICAgICAgICAgICBpZiAoJGNvZGUpIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAnICcgKyAoJGNvZGUpICsgJyAnO1xuICAgICAgICAgICAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgJGNsb3NpbmdCcmFjZXMxICs9ICd9JztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAgIG91dCArPSAnICcgKyAoJGNsb3NpbmdCcmFjZXMxKSArICcgJztcbiAgICAgICAgICAgICRjbG9zaW5nQnJhY2VzMSA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoJHJ1bGVzR3JvdXAudHlwZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICAgICAgaWYgKCR0eXBlU2NoZW1hICYmICR0eXBlU2NoZW1hID09PSAkcnVsZXNHcm91cC50eXBlICYmICEkY29lcmNlVG9UeXBlcykge1xuICAgICAgICAgICAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgICAgICAgICAgICAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArICcudHlwZScsXG4gICAgICAgICAgICAgICAgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy90eXBlJztcbiAgICAgICAgICAgICAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAgICAgICAgICAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICAgICAgICAgICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCRlcnJvcktleXdvcmQgfHwgJ3R5cGUnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IHR5cGU6IFxcJyc7XG4gICAgICAgICAgICAgICAgaWYgKCR0eXBlSXNBcnJheSkge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hLmpvaW4oXCIsXCIpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3V0ICs9ICdcXCcgfSAnO1xuICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgYmUgJztcbiAgICAgICAgICAgICAgICAgIGlmICgkdHlwZUlzQXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICcnICsgKCR0eXBlU2NoZW1hLmpvaW4oXCIsXCIpKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG91dCArPSAnJyArICgkdHlwZVNjaGVtYSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJ1xcJyAnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgICAgICAgICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAgIG91dCArPSAnIGlmIChlcnJvcnMgPT09ICc7XG4gICAgICAgICAgICBpZiAoJHRvcCkge1xuICAgICAgICAgICAgICBvdXQgKz0gJzAnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICdlcnJzXycgKyAoJGx2bCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQgKz0gJykgeyAnO1xuICAgICAgICAgICAgJGNsb3NpbmdCcmFjZXMyICs9ICd9JztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyAnICsgKCRjbG9zaW5nQnJhY2VzMikgKyAnICc7XG4gIH1cbiAgaWYgKCR0b3ApIHtcbiAgICBpZiAoJGFzeW5jKSB7XG4gICAgICBvdXQgKz0gJyBpZiAoZXJyb3JzID09PSAwKSByZXR1cm4gZGF0YTsgICAgICAgICAgICc7XG4gICAgICBvdXQgKz0gJyBlbHNlIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IodkVycm9ycyk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IHZFcnJvcnM7ICc7XG4gICAgICBvdXQgKz0gJyByZXR1cm4gZXJyb3JzID09PSAwOyAgICAgICAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB9OyByZXR1cm4gdmFsaWRhdGU7JztcbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB2YXIgJyArICgkdmFsaWQpICsgJyA9IGVycm9ycyA9PT0gZXJyc18nICsgKCRsdmwpICsgJzsnO1xuICB9XG5cbiAgZnVuY3Rpb24gJHNob3VsZFVzZUdyb3VwKCRydWxlc0dyb3VwKSB7XG4gICAgdmFyIHJ1bGVzID0gJHJ1bGVzR3JvdXAucnVsZXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKylcbiAgICAgIGlmICgkc2hvdWxkVXNlUnVsZShydWxlc1tpXSkpIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZnVuY3Rpb24gJHNob3VsZFVzZVJ1bGUoJHJ1bGUpIHtcbiAgICByZXR1cm4gaXQuc2NoZW1hWyRydWxlLmtleXdvcmRdICE9PSB1bmRlZmluZWQgfHwgKCRydWxlLmltcGxlbWVudHMgJiYgJHJ1bGVJbXBsZW1lbnRzU29tZUtleXdvcmQoJHJ1bGUpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uICRydWxlSW1wbGVtZW50c1NvbWVLZXl3b3JkKCRydWxlKSB7XG4gICAgdmFyIGltcGwgPSAkcnVsZS5pbXBsZW1lbnRzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW1wbC5sZW5ndGg7IGkrKylcbiAgICAgIGlmIChpdC5zY2hlbWFbaW1wbFtpXV0gIT09IHVuZGVmaW5lZCkgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHJlc29sdmUgPSByZXF1aXJlKCcuL3Jlc29sdmUnKVxuICAsIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKVxuICAsIGVycm9yQ2xhc3NlcyA9IHJlcXVpcmUoJy4vZXJyb3JfY2xhc3NlcycpXG4gICwgc3RhYmxlU3RyaW5naWZ5ID0gcmVxdWlyZSgnZmFzdC1qc29uLXN0YWJsZS1zdHJpbmdpZnknKTtcblxudmFyIHZhbGlkYXRlR2VuZXJhdG9yID0gcmVxdWlyZSgnLi4vZG90anMvdmFsaWRhdGUnKTtcblxuLyoqXG4gKiBGdW5jdGlvbnMgYmVsb3cgYXJlIHVzZWQgaW5zaWRlIGNvbXBpbGVkIHZhbGlkYXRpb25zIGZ1bmN0aW9uXG4gKi9cblxudmFyIHVjczJsZW5ndGggPSB1dGlsLnVjczJsZW5ndGg7XG52YXIgZXF1YWwgPSByZXF1aXJlKCdmYXN0LWRlZXAtZXF1YWwnKTtcblxuLy8gdGhpcyBlcnJvciBpcyB0aHJvd24gYnkgYXN5bmMgc2NoZW1hcyB0byByZXR1cm4gdmFsaWRhdGlvbiBlcnJvcnMgdmlhIGV4Y2VwdGlvblxudmFyIFZhbGlkYXRpb25FcnJvciA9IGVycm9yQ2xhc3Nlcy5WYWxpZGF0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBpbGU7XG5cblxuLyoqXG4gKiBDb21waWxlcyBzY2hlbWEgdG8gdmFsaWRhdGlvbiBmdW5jdGlvblxuICogQHRoaXMgICBBanZcbiAqIEBwYXJhbSAge09iamVjdH0gc2NoZW1hIHNjaGVtYSBvYmplY3RcbiAqIEBwYXJhbSAge09iamVjdH0gcm9vdCBvYmplY3Qgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcm9vdCBzY2hlbWEgZm9yIHRoaXMgc2NoZW1hXG4gKiBAcGFyYW0gIHtPYmplY3R9IGxvY2FsUmVmcyB0aGUgaGFzaCBvZiBsb2NhbCByZWZlcmVuY2VzIGluc2lkZSB0aGUgc2NoZW1hIChjcmVhdGVkIGJ5IHJlc29sdmUuaWQpLCB1c2VkIGZvciBpbmxpbmUgcmVzb2x1dGlvblxuICogQHBhcmFtICB7U3RyaW5nfSBiYXNlSWQgYmFzZSBJRCBmb3IgSURzIGluIHRoZSBzY2hlbWFcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSB2YWxpZGF0aW9uIGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIGNvbXBpbGUoc2NoZW1hLCByb290LCBsb2NhbFJlZnMsIGJhc2VJZCkge1xuICAvKiBqc2hpbnQgdmFsaWR0aGlzOiB0cnVlLCBldmlsOiB0cnVlICovXG4gIC8qIGVzbGludCBuby1zaGFkb3c6IDAgKi9cbiAgdmFyIHNlbGYgPSB0aGlzXG4gICAgLCBvcHRzID0gdGhpcy5fb3B0c1xuICAgICwgcmVmVmFsID0gWyB1bmRlZmluZWQgXVxuICAgICwgcmVmcyA9IHt9XG4gICAgLCBwYXR0ZXJucyA9IFtdXG4gICAgLCBwYXR0ZXJuc0hhc2ggPSB7fVxuICAgICwgZGVmYXVsdHMgPSBbXVxuICAgICwgZGVmYXVsdHNIYXNoID0ge31cbiAgICAsIGN1c3RvbVJ1bGVzID0gW107XG5cbiAgcm9vdCA9IHJvb3QgfHwgeyBzY2hlbWE6IHNjaGVtYSwgcmVmVmFsOiByZWZWYWwsIHJlZnM6IHJlZnMgfTtcblxuICB2YXIgYyA9IGNoZWNrQ29tcGlsaW5nLmNhbGwodGhpcywgc2NoZW1hLCByb290LCBiYXNlSWQpO1xuICB2YXIgY29tcGlsYXRpb24gPSB0aGlzLl9jb21waWxhdGlvbnNbYy5pbmRleF07XG4gIGlmIChjLmNvbXBpbGluZykgcmV0dXJuIChjb21waWxhdGlvbi5jYWxsVmFsaWRhdGUgPSBjYWxsVmFsaWRhdGUpO1xuXG4gIHZhciBmb3JtYXRzID0gdGhpcy5fZm9ybWF0cztcbiAgdmFyIFJVTEVTID0gdGhpcy5SVUxFUztcblxuICB0cnkge1xuICAgIHZhciB2ID0gbG9jYWxDb21waWxlKHNjaGVtYSwgcm9vdCwgbG9jYWxSZWZzLCBiYXNlSWQpO1xuICAgIGNvbXBpbGF0aW9uLnZhbGlkYXRlID0gdjtcbiAgICB2YXIgY3YgPSBjb21waWxhdGlvbi5jYWxsVmFsaWRhdGU7XG4gICAgaWYgKGN2KSB7XG4gICAgICBjdi5zY2hlbWEgPSB2LnNjaGVtYTtcbiAgICAgIGN2LmVycm9ycyA9IG51bGw7XG4gICAgICBjdi5yZWZzID0gdi5yZWZzO1xuICAgICAgY3YucmVmVmFsID0gdi5yZWZWYWw7XG4gICAgICBjdi5yb290ID0gdi5yb290O1xuICAgICAgY3YuJGFzeW5jID0gdi4kYXN5bmM7XG4gICAgICBpZiAob3B0cy5zb3VyY2VDb2RlKSBjdi5zb3VyY2UgPSB2LnNvdXJjZTtcbiAgICB9XG4gICAgcmV0dXJuIHY7XG4gIH0gZmluYWxseSB7XG4gICAgZW5kQ29tcGlsaW5nLmNhbGwodGhpcywgc2NoZW1hLCByb290LCBiYXNlSWQpO1xuICB9XG5cbiAgLyogQHRoaXMgICB7Kn0gLSBjdXN0b20gY29udGV4dCwgc2VlIHBhc3NDb250ZXh0IG9wdGlvbiAqL1xuICBmdW5jdGlvbiBjYWxsVmFsaWRhdGUoKSB7XG4gICAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICAgIHZhciB2YWxpZGF0ZSA9IGNvbXBpbGF0aW9uLnZhbGlkYXRlO1xuICAgIHZhciByZXN1bHQgPSB2YWxpZGF0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGNhbGxWYWxpZGF0ZS5lcnJvcnMgPSB2YWxpZGF0ZS5lcnJvcnM7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxvY2FsQ29tcGlsZShfc2NoZW1hLCBfcm9vdCwgbG9jYWxSZWZzLCBiYXNlSWQpIHtcbiAgICB2YXIgaXNSb290ID0gIV9yb290IHx8IChfcm9vdCAmJiBfcm9vdC5zY2hlbWEgPT0gX3NjaGVtYSk7XG4gICAgaWYgKF9yb290LnNjaGVtYSAhPSByb290LnNjaGVtYSlcbiAgICAgIHJldHVybiBjb21waWxlLmNhbGwoc2VsZiwgX3NjaGVtYSwgX3Jvb3QsIGxvY2FsUmVmcywgYmFzZUlkKTtcblxuICAgIHZhciAkYXN5bmMgPSBfc2NoZW1hLiRhc3luYyA9PT0gdHJ1ZTtcblxuICAgIHZhciBzb3VyY2VDb2RlID0gdmFsaWRhdGVHZW5lcmF0b3Ioe1xuICAgICAgaXNUb3A6IHRydWUsXG4gICAgICBzY2hlbWE6IF9zY2hlbWEsXG4gICAgICBpc1Jvb3Q6IGlzUm9vdCxcbiAgICAgIGJhc2VJZDogYmFzZUlkLFxuICAgICAgcm9vdDogX3Jvb3QsXG4gICAgICBzY2hlbWFQYXRoOiAnJyxcbiAgICAgIGVyclNjaGVtYVBhdGg6ICcjJyxcbiAgICAgIGVycm9yUGF0aDogJ1wiXCInLFxuICAgICAgTWlzc2luZ1JlZkVycm9yOiBlcnJvckNsYXNzZXMuTWlzc2luZ1JlZixcbiAgICAgIFJVTEVTOiBSVUxFUyxcbiAgICAgIHZhbGlkYXRlOiB2YWxpZGF0ZUdlbmVyYXRvcixcbiAgICAgIHV0aWw6IHV0aWwsXG4gICAgICByZXNvbHZlOiByZXNvbHZlLFxuICAgICAgcmVzb2x2ZVJlZjogcmVzb2x2ZVJlZixcbiAgICAgIHVzZVBhdHRlcm46IHVzZVBhdHRlcm4sXG4gICAgICB1c2VEZWZhdWx0OiB1c2VEZWZhdWx0LFxuICAgICAgdXNlQ3VzdG9tUnVsZTogdXNlQ3VzdG9tUnVsZSxcbiAgICAgIG9wdHM6IG9wdHMsXG4gICAgICBmb3JtYXRzOiBmb3JtYXRzLFxuICAgICAgbG9nZ2VyOiBzZWxmLmxvZ2dlcixcbiAgICAgIHNlbGY6IHNlbGZcbiAgICB9KTtcblxuICAgIHNvdXJjZUNvZGUgPSB2YXJzKHJlZlZhbCwgcmVmVmFsQ29kZSkgKyB2YXJzKHBhdHRlcm5zLCBwYXR0ZXJuQ29kZSlcbiAgICAgICAgICAgICAgICAgICArIHZhcnMoZGVmYXVsdHMsIGRlZmF1bHRDb2RlKSArIHZhcnMoY3VzdG9tUnVsZXMsIGN1c3RvbVJ1bGVDb2RlKVxuICAgICAgICAgICAgICAgICAgICsgc291cmNlQ29kZTtcblxuICAgIGlmIChvcHRzLnByb2Nlc3NDb2RlKSBzb3VyY2VDb2RlID0gb3B0cy5wcm9jZXNzQ29kZShzb3VyY2VDb2RlLCBfc2NoZW1hKTtcbiAgICAvLyBjb25zb2xlLmxvZygnXFxuXFxuXFxuICoqKiBcXG4nLCBKU09OLnN0cmluZ2lmeShzb3VyY2VDb2RlKSk7XG4gICAgdmFyIHZhbGlkYXRlO1xuICAgIHRyeSB7XG4gICAgICB2YXIgbWFrZVZhbGlkYXRlID0gbmV3IEZ1bmN0aW9uKFxuICAgICAgICAnc2VsZicsXG4gICAgICAgICdSVUxFUycsXG4gICAgICAgICdmb3JtYXRzJyxcbiAgICAgICAgJ3Jvb3QnLFxuICAgICAgICAncmVmVmFsJyxcbiAgICAgICAgJ2RlZmF1bHRzJyxcbiAgICAgICAgJ2N1c3RvbVJ1bGVzJyxcbiAgICAgICAgJ2VxdWFsJyxcbiAgICAgICAgJ3VjczJsZW5ndGgnLFxuICAgICAgICAnVmFsaWRhdGlvbkVycm9yJyxcbiAgICAgICAgc291cmNlQ29kZVxuICAgICAgKTtcblxuICAgICAgdmFsaWRhdGUgPSBtYWtlVmFsaWRhdGUoXG4gICAgICAgIHNlbGYsXG4gICAgICAgIFJVTEVTLFxuICAgICAgICBmb3JtYXRzLFxuICAgICAgICByb290LFxuICAgICAgICByZWZWYWwsXG4gICAgICAgIGRlZmF1bHRzLFxuICAgICAgICBjdXN0b21SdWxlcyxcbiAgICAgICAgZXF1YWwsXG4gICAgICAgIHVjczJsZW5ndGgsXG4gICAgICAgIFZhbGlkYXRpb25FcnJvclxuICAgICAgKTtcblxuICAgICAgcmVmVmFsWzBdID0gdmFsaWRhdGU7XG4gICAgfSBjYXRjaChlKSB7XG4gICAgICBzZWxmLmxvZ2dlci5lcnJvcignRXJyb3IgY29tcGlsaW5nIHNjaGVtYSwgZnVuY3Rpb24gY29kZTonLCBzb3VyY2VDb2RlKTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuXG4gICAgdmFsaWRhdGUuc2NoZW1hID0gX3NjaGVtYTtcbiAgICB2YWxpZGF0ZS5lcnJvcnMgPSBudWxsO1xuICAgIHZhbGlkYXRlLnJlZnMgPSByZWZzO1xuICAgIHZhbGlkYXRlLnJlZlZhbCA9IHJlZlZhbDtcbiAgICB2YWxpZGF0ZS5yb290ID0gaXNSb290ID8gdmFsaWRhdGUgOiBfcm9vdDtcbiAgICBpZiAoJGFzeW5jKSB2YWxpZGF0ZS4kYXN5bmMgPSB0cnVlO1xuICAgIGlmIChvcHRzLnNvdXJjZUNvZGUgPT09IHRydWUpIHtcbiAgICAgIHZhbGlkYXRlLnNvdXJjZSA9IHtcbiAgICAgICAgY29kZTogc291cmNlQ29kZSxcbiAgICAgICAgcGF0dGVybnM6IHBhdHRlcm5zLFxuICAgICAgICBkZWZhdWx0czogZGVmYXVsdHNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVzb2x2ZVJlZihiYXNlSWQsIHJlZiwgaXNSb290KSB7XG4gICAgcmVmID0gcmVzb2x2ZS51cmwoYmFzZUlkLCByZWYpO1xuICAgIHZhciByZWZJbmRleCA9IHJlZnNbcmVmXTtcbiAgICB2YXIgX3JlZlZhbCwgcmVmQ29kZTtcbiAgICBpZiAocmVmSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgX3JlZlZhbCA9IHJlZlZhbFtyZWZJbmRleF07XG4gICAgICByZWZDb2RlID0gJ3JlZlZhbFsnICsgcmVmSW5kZXggKyAnXSc7XG4gICAgICByZXR1cm4gcmVzb2x2ZWRSZWYoX3JlZlZhbCwgcmVmQ29kZSk7XG4gICAgfVxuICAgIGlmICghaXNSb290ICYmIHJvb3QucmVmcykge1xuICAgICAgdmFyIHJvb3RSZWZJZCA9IHJvb3QucmVmc1tyZWZdO1xuICAgICAgaWYgKHJvb3RSZWZJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIF9yZWZWYWwgPSByb290LnJlZlZhbFtyb290UmVmSWRdO1xuICAgICAgICByZWZDb2RlID0gYWRkTG9jYWxSZWYocmVmLCBfcmVmVmFsKTtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVkUmVmKF9yZWZWYWwsIHJlZkNvZGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlZkNvZGUgPSBhZGRMb2NhbFJlZihyZWYpO1xuICAgIHZhciB2ID0gcmVzb2x2ZS5jYWxsKHNlbGYsIGxvY2FsQ29tcGlsZSwgcm9vdCwgcmVmKTtcbiAgICBpZiAodiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgbG9jYWxTY2hlbWEgPSBsb2NhbFJlZnMgJiYgbG9jYWxSZWZzW3JlZl07XG4gICAgICBpZiAobG9jYWxTY2hlbWEpIHtcbiAgICAgICAgdiA9IHJlc29sdmUuaW5saW5lUmVmKGxvY2FsU2NoZW1hLCBvcHRzLmlubGluZVJlZnMpXG4gICAgICAgICAgICA/IGxvY2FsU2NoZW1hXG4gICAgICAgICAgICA6IGNvbXBpbGUuY2FsbChzZWxmLCBsb2NhbFNjaGVtYSwgcm9vdCwgbG9jYWxSZWZzLCBiYXNlSWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlbW92ZUxvY2FsUmVmKHJlZik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcGxhY2VMb2NhbFJlZihyZWYsIHYpO1xuICAgICAgcmV0dXJuIHJlc29sdmVkUmVmKHYsIHJlZkNvZGUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZExvY2FsUmVmKHJlZiwgdikge1xuICAgIHZhciByZWZJZCA9IHJlZlZhbC5sZW5ndGg7XG4gICAgcmVmVmFsW3JlZklkXSA9IHY7XG4gICAgcmVmc1tyZWZdID0gcmVmSWQ7XG4gICAgcmV0dXJuICdyZWZWYWwnICsgcmVmSWQ7XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVMb2NhbFJlZihyZWYpIHtcbiAgICBkZWxldGUgcmVmc1tyZWZdO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVwbGFjZUxvY2FsUmVmKHJlZiwgdikge1xuICAgIHZhciByZWZJZCA9IHJlZnNbcmVmXTtcbiAgICByZWZWYWxbcmVmSWRdID0gdjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc29sdmVkUmVmKHJlZlZhbCwgY29kZSkge1xuICAgIHJldHVybiB0eXBlb2YgcmVmVmFsID09ICdvYmplY3QnIHx8IHR5cGVvZiByZWZWYWwgPT0gJ2Jvb2xlYW4nXG4gICAgICAgICAgICA/IHsgY29kZTogY29kZSwgc2NoZW1hOiByZWZWYWwsIGlubGluZTogdHJ1ZSB9XG4gICAgICAgICAgICA6IHsgY29kZTogY29kZSwgJGFzeW5jOiByZWZWYWwgJiYgISFyZWZWYWwuJGFzeW5jIH07XG4gIH1cblxuICBmdW5jdGlvbiB1c2VQYXR0ZXJuKHJlZ2V4U3RyKSB7XG4gICAgdmFyIGluZGV4ID0gcGF0dGVybnNIYXNoW3JlZ2V4U3RyXTtcbiAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgaW5kZXggPSBwYXR0ZXJuc0hhc2hbcmVnZXhTdHJdID0gcGF0dGVybnMubGVuZ3RoO1xuICAgICAgcGF0dGVybnNbaW5kZXhdID0gcmVnZXhTdHI7XG4gICAgfVxuICAgIHJldHVybiAncGF0dGVybicgKyBpbmRleDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVzZURlZmF1bHQodmFsdWUpIHtcbiAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICByZXR1cm4gJycgKyB2YWx1ZTtcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHJldHVybiB1dGlsLnRvUXVvdGVkU3RyaW5nKHZhbHVlKTtcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuICdudWxsJztcbiAgICAgICAgdmFyIHZhbHVlU3RyID0gc3RhYmxlU3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgdmFyIGluZGV4ID0gZGVmYXVsdHNIYXNoW3ZhbHVlU3RyXTtcbiAgICAgICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpbmRleCA9IGRlZmF1bHRzSGFzaFt2YWx1ZVN0cl0gPSBkZWZhdWx0cy5sZW5ndGg7XG4gICAgICAgICAgZGVmYXVsdHNbaW5kZXhdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICdkZWZhdWx0JyArIGluZGV4O1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHVzZUN1c3RvbVJ1bGUocnVsZSwgc2NoZW1hLCBwYXJlbnRTY2hlbWEsIGl0KSB7XG4gICAgaWYgKHNlbGYuX29wdHMudmFsaWRhdGVTY2hlbWEgIT09IGZhbHNlKSB7XG4gICAgICB2YXIgZGVwcyA9IHJ1bGUuZGVmaW5pdGlvbi5kZXBlbmRlbmNpZXM7XG4gICAgICBpZiAoZGVwcyAmJiAhZGVwcy5ldmVyeShmdW5jdGlvbihrZXl3b3JkKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocGFyZW50U2NoZW1hLCBrZXl3b3JkKTtcbiAgICAgIH0pKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3BhcmVudCBzY2hlbWEgbXVzdCBoYXZlIGFsbCByZXF1aXJlZCBrZXl3b3JkczogJyArIGRlcHMuam9pbignLCcpKTtcblxuICAgICAgdmFyIHZhbGlkYXRlU2NoZW1hID0gcnVsZS5kZWZpbml0aW9uLnZhbGlkYXRlU2NoZW1hO1xuICAgICAgaWYgKHZhbGlkYXRlU2NoZW1hKSB7XG4gICAgICAgIHZhciB2YWxpZCA9IHZhbGlkYXRlU2NoZW1hKHNjaGVtYSk7XG4gICAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgICB2YXIgbWVzc2FnZSA9ICdrZXl3b3JkIHNjaGVtYSBpcyBpbnZhbGlkOiAnICsgc2VsZi5lcnJvcnNUZXh0KHZhbGlkYXRlU2NoZW1hLmVycm9ycyk7XG4gICAgICAgICAgaWYgKHNlbGYuX29wdHMudmFsaWRhdGVTY2hlbWEgPT0gJ2xvZycpIHNlbGYubG9nZ2VyLmVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGNvbXBpbGUgPSBydWxlLmRlZmluaXRpb24uY29tcGlsZVxuICAgICAgLCBpbmxpbmUgPSBydWxlLmRlZmluaXRpb24uaW5saW5lXG4gICAgICAsIG1hY3JvID0gcnVsZS5kZWZpbml0aW9uLm1hY3JvO1xuXG4gICAgdmFyIHZhbGlkYXRlO1xuICAgIGlmIChjb21waWxlKSB7XG4gICAgICB2YWxpZGF0ZSA9IGNvbXBpbGUuY2FsbChzZWxmLCBzY2hlbWEsIHBhcmVudFNjaGVtYSwgaXQpO1xuICAgIH0gZWxzZSBpZiAobWFjcm8pIHtcbiAgICAgIHZhbGlkYXRlID0gbWFjcm8uY2FsbChzZWxmLCBzY2hlbWEsIHBhcmVudFNjaGVtYSwgaXQpO1xuICAgICAgaWYgKG9wdHMudmFsaWRhdGVTY2hlbWEgIT09IGZhbHNlKSBzZWxmLnZhbGlkYXRlU2NoZW1hKHZhbGlkYXRlLCB0cnVlKTtcbiAgICB9IGVsc2UgaWYgKGlubGluZSkge1xuICAgICAgdmFsaWRhdGUgPSBpbmxpbmUuY2FsbChzZWxmLCBpdCwgcnVsZS5rZXl3b3JkLCBzY2hlbWEsIHBhcmVudFNjaGVtYSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbGlkYXRlID0gcnVsZS5kZWZpbml0aW9uLnZhbGlkYXRlO1xuICAgICAgaWYgKCF2YWxpZGF0ZSkgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjdXN0b20ga2V5d29yZCBcIicgKyBydWxlLmtleXdvcmQgKyAnXCJmYWlsZWQgdG8gY29tcGlsZScpO1xuXG4gICAgdmFyIGluZGV4ID0gY3VzdG9tUnVsZXMubGVuZ3RoO1xuICAgIGN1c3RvbVJ1bGVzW2luZGV4XSA9IHZhbGlkYXRlO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGU6ICdjdXN0b21SdWxlJyArIGluZGV4LFxuICAgICAgdmFsaWRhdGU6IHZhbGlkYXRlXG4gICAgfTtcbiAgfVxufVxuXG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBzY2hlbWEgaXMgY3VycmVudGx5IGNvbXBpbGVkXG4gKiBAdGhpcyAgIEFqdlxuICogQHBhcmFtICB7T2JqZWN0fSBzY2hlbWEgc2NoZW1hIHRvIGNvbXBpbGVcbiAqIEBwYXJhbSAge09iamVjdH0gcm9vdCByb290IG9iamVjdFxuICogQHBhcmFtICB7U3RyaW5nfSBiYXNlSWQgYmFzZSBzY2hlbWEgSURcbiAqIEByZXR1cm4ge09iamVjdH0gb2JqZWN0IHdpdGggcHJvcGVydGllcyBcImluZGV4XCIgKGNvbXBpbGF0aW9uIGluZGV4KSBhbmQgXCJjb21waWxpbmdcIiAoYm9vbGVhbilcbiAqL1xuZnVuY3Rpb24gY2hlY2tDb21waWxpbmcoc2NoZW1hLCByb290LCBiYXNlSWQpIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICB2YXIgaW5kZXggPSBjb21wSW5kZXguY2FsbCh0aGlzLCBzY2hlbWEsIHJvb3QsIGJhc2VJZCk7XG4gIGlmIChpbmRleCA+PSAwKSByZXR1cm4geyBpbmRleDogaW5kZXgsIGNvbXBpbGluZzogdHJ1ZSB9O1xuICBpbmRleCA9IHRoaXMuX2NvbXBpbGF0aW9ucy5sZW5ndGg7XG4gIHRoaXMuX2NvbXBpbGF0aW9uc1tpbmRleF0gPSB7XG4gICAgc2NoZW1hOiBzY2hlbWEsXG4gICAgcm9vdDogcm9vdCxcbiAgICBiYXNlSWQ6IGJhc2VJZFxuICB9O1xuICByZXR1cm4geyBpbmRleDogaW5kZXgsIGNvbXBpbGluZzogZmFsc2UgfTtcbn1cblxuXG4vKipcbiAqIFJlbW92ZXMgdGhlIHNjaGVtYSBmcm9tIHRoZSBjdXJyZW50bHkgY29tcGlsZWQgbGlzdFxuICogQHRoaXMgICBBanZcbiAqIEBwYXJhbSAge09iamVjdH0gc2NoZW1hIHNjaGVtYSB0byBjb21waWxlXG4gKiBAcGFyYW0gIHtPYmplY3R9IHJvb3Qgcm9vdCBvYmplY3RcbiAqIEBwYXJhbSAge1N0cmluZ30gYmFzZUlkIGJhc2Ugc2NoZW1hIElEXG4gKi9cbmZ1bmN0aW9uIGVuZENvbXBpbGluZyhzY2hlbWEsIHJvb3QsIGJhc2VJZCkge1xuICAvKiBqc2hpbnQgdmFsaWR0aGlzOiB0cnVlICovXG4gIHZhciBpID0gY29tcEluZGV4LmNhbGwodGhpcywgc2NoZW1hLCByb290LCBiYXNlSWQpO1xuICBpZiAoaSA+PSAwKSB0aGlzLl9jb21waWxhdGlvbnMuc3BsaWNlKGksIDEpO1xufVxuXG5cbi8qKlxuICogSW5kZXggb2Ygc2NoZW1hIGNvbXBpbGF0aW9uIGluIHRoZSBjdXJyZW50bHkgY29tcGlsZWQgbGlzdFxuICogQHRoaXMgICBBanZcbiAqIEBwYXJhbSAge09iamVjdH0gc2NoZW1hIHNjaGVtYSB0byBjb21waWxlXG4gKiBAcGFyYW0gIHtPYmplY3R9IHJvb3Qgcm9vdCBvYmplY3RcbiAqIEBwYXJhbSAge1N0cmluZ30gYmFzZUlkIGJhc2Ugc2NoZW1hIElEXG4gKiBAcmV0dXJuIHtJbnRlZ2VyfSBjb21waWxhdGlvbiBpbmRleFxuICovXG5mdW5jdGlvbiBjb21wSW5kZXgoc2NoZW1hLCByb290LCBiYXNlSWQpIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICBmb3IgKHZhciBpPTA7IGk8dGhpcy5fY29tcGlsYXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGMgPSB0aGlzLl9jb21waWxhdGlvbnNbaV07XG4gICAgaWYgKGMuc2NoZW1hID09IHNjaGVtYSAmJiBjLnJvb3QgPT0gcm9vdCAmJiBjLmJhc2VJZCA9PSBiYXNlSWQpIHJldHVybiBpO1xuICB9XG4gIHJldHVybiAtMTtcbn1cblxuXG5mdW5jdGlvbiBwYXR0ZXJuQ29kZShpLCBwYXR0ZXJucykge1xuICByZXR1cm4gJ3ZhciBwYXR0ZXJuJyArIGkgKyAnID0gbmV3IFJlZ0V4cCgnICsgdXRpbC50b1F1b3RlZFN0cmluZyhwYXR0ZXJuc1tpXSkgKyAnKTsnO1xufVxuXG5cbmZ1bmN0aW9uIGRlZmF1bHRDb2RlKGkpIHtcbiAgcmV0dXJuICd2YXIgZGVmYXVsdCcgKyBpICsgJyA9IGRlZmF1bHRzWycgKyBpICsgJ107Jztcbn1cblxuXG5mdW5jdGlvbiByZWZWYWxDb2RlKGksIHJlZlZhbCkge1xuICByZXR1cm4gcmVmVmFsW2ldID09PSB1bmRlZmluZWQgPyAnJyA6ICd2YXIgcmVmVmFsJyArIGkgKyAnID0gcmVmVmFsWycgKyBpICsgJ107Jztcbn1cblxuXG5mdW5jdGlvbiBjdXN0b21SdWxlQ29kZShpKSB7XG4gIHJldHVybiAndmFyIGN1c3RvbVJ1bGUnICsgaSArICcgPSBjdXN0b21SdWxlc1snICsgaSArICddOyc7XG59XG5cblxuZnVuY3Rpb24gdmFycyhhcnIsIHN0YXRlbWVudCkge1xuICBpZiAoIWFyci5sZW5ndGgpIHJldHVybiAnJztcbiAgdmFyIGNvZGUgPSAnJztcbiAgZm9yICh2YXIgaT0wOyBpPGFyci5sZW5ndGg7IGkrKylcbiAgICBjb2RlICs9IHN0YXRlbWVudChpLCBhcnIpO1xuICByZXR1cm4gY29kZTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuXG52YXIgQ2FjaGUgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIENhY2hlKCkge1xuICB0aGlzLl9jYWNoZSA9IHt9O1xufTtcblxuXG5DYWNoZS5wcm90b3R5cGUucHV0ID0gZnVuY3Rpb24gQ2FjaGVfcHV0KGtleSwgdmFsdWUpIHtcbiAgdGhpcy5fY2FjaGVba2V5XSA9IHZhbHVlO1xufTtcblxuXG5DYWNoZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gQ2FjaGVfZ2V0KGtleSkge1xuICByZXR1cm4gdGhpcy5fY2FjaGVba2V5XTtcbn07XG5cblxuQ2FjaGUucHJvdG90eXBlLmRlbCA9IGZ1bmN0aW9uIENhY2hlX2RlbChrZXkpIHtcbiAgZGVsZXRlIHRoaXMuX2NhY2hlW2tleV07XG59O1xuXG5cbkNhY2hlLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uIENhY2hlX2NsZWFyKCkge1xuICB0aGlzLl9jYWNoZSA9IHt9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxudmFyIERBVEUgPSAvXihcXGRcXGRcXGRcXGQpLShcXGRcXGQpLShcXGRcXGQpJC87XG52YXIgREFZUyA9IFswLDMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXTtcbnZhciBUSU1FID0gL14oXFxkXFxkKTooXFxkXFxkKTooXFxkXFxkKShcXC5cXGQrKT8oenxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPyk/JC9pO1xudmFyIEhPU1ROQU1FID0gL14oPz0uezEsMjUzfVxcLj8kKVthLXowLTldKD86W2EtejAtOS1dezAsNjF9W2EtejAtOV0pPyg/OlxcLlthLXowLTldKD86Wy0wLTlhLXpdezAsNjF9WzAtOWEtel0pPykqXFwuPyQvaTtcbnZhciBVUkkgPSAvXig/OlthLXpdW2EtejAtOStcXC0uXSo6KSg/OlxcLz9cXC8oPzooPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06XXwlWzAtOWEtZl17Mn0pKkApPyg/OlxcWyg/Oig/Oig/Oig/OlswLTlhLWZdezEsNH06KXs2fXw6Oig/OlswLTlhLWZdezEsNH06KXs1fXwoPzpbMC05YS1mXXsxLDR9KT86Oig/OlswLTlhLWZdezEsNH06KXs0fXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCwxfVswLTlhLWZdezEsNH0pPzo6KD86WzAtOWEtZl17MSw0fTopezN9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDJ9WzAtOWEtZl17MSw0fSk/OjooPzpbMC05YS1mXXsxLDR9Oil7Mn18KD86KD86WzAtOWEtZl17MSw0fTopezAsM31bMC05YS1mXXsxLDR9KT86OlswLTlhLWZdezEsNH06fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDR9WzAtOWEtZl17MSw0fSk/OjopKD86WzAtOWEtZl17MSw0fTpbMC05YS1mXXsxLDR9fCg/Oig/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPylcXC4pezN9KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSl8KD86KD86WzAtOWEtZl17MSw0fTopezAsNX1bMC05YS1mXXsxLDR9KT86OlswLTlhLWZdezEsNH18KD86KD86WzAtOWEtZl17MSw0fTopezAsNn1bMC05YS1mXXsxLDR9KT86Oil8W1Z2XVswLTlhLWZdK1xcLlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpdKylcXF18KD86KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KVxcLil7M30oPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pfCg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PV18JVswLTlhLWZdezJ9KSopKD86OlxcZCopPyg/OlxcLyg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKikqfFxcLyg/Oig/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKyg/OlxcLyg/OlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKikqKT98KD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9OkBdfCVbMC05YS1mXXsyfSkrKD86XFwvKD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9OkBdfCVbMC05YS1mXXsyfSkqKSopKD86XFw/KD86W2EtejAtOVxcLS5ffiEkJicoKSorLDs9OkAvP118JVswLTlhLWZdezJ9KSopPyg/OiMoPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06QC8/XXwlWzAtOWEtZl17Mn0pKik/JC9pO1xudmFyIFVSSVJFRiA9IC9eKD86W2Etel1bYS16MC05K1xcLS5dKjopPyg/OlxcLz9cXC8oPzooPzpbYS16MC05XFwtLl9+ISQmJygpKissOz06XXwlWzAtOWEtZl17Mn0pKkApPyg/OlxcWyg/Oig/Oig/Oig/OlswLTlhLWZdezEsNH06KXs2fXw6Oig/OlswLTlhLWZdezEsNH06KXs1fXwoPzpbMC05YS1mXXsxLDR9KT86Oig/OlswLTlhLWZdezEsNH06KXs0fXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MCwxfVswLTlhLWZdezEsNH0pPzo6KD86WzAtOWEtZl17MSw0fTopezN9fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDJ9WzAtOWEtZl17MSw0fSk/OjooPzpbMC05YS1mXXsxLDR9Oil7Mn18KD86KD86WzAtOWEtZl17MSw0fTopezAsM31bMC05YS1mXXsxLDR9KT86OlswLTlhLWZdezEsNH06fCg/Oig/OlswLTlhLWZdezEsNH06KXswLDR9WzAtOWEtZl17MSw0fSk/OjopKD86WzAtOWEtZl17MSw0fTpbMC05YS1mXXsxLDR9fCg/Oig/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPylcXC4pezN9KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSl8KD86KD86WzAtOWEtZl17MSw0fTopezAsNX1bMC05YS1mXXsxLDR9KT86OlswLTlhLWZdezEsNH18KD86KD86WzAtOWEtZl17MSw0fTopezAsNn1bMC05YS1mXXsxLDR9KT86Oil8W1Z2XVswLTlhLWZdK1xcLlthLXowLTlcXC0uX34hJCYnKCkqKyw7PTpdKylcXF18KD86KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KVxcLil7M30oPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pfCg/OlthLXowLTlcXC0uX34hJCYnXCIoKSorLDs9XXwlWzAtOWEtZl17Mn0pKikoPzo6XFxkKik/KD86XFwvKD86W2EtejAtOVxcLS5ffiEkJidcIigpKissOz06QF18JVswLTlhLWZdezJ9KSopKnxcXC8oPzooPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKyg/OlxcLyg/OlthLXowLTlcXC0uX34hJCYnXCIoKSorLDs9OkBdfCVbMC05YS1mXXsyfSkqKSopP3woPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PTpAXXwlWzAtOWEtZl17Mn0pKyg/OlxcLyg/OlthLXowLTlcXC0uX34hJCYnXCIoKSorLDs9OkBdfCVbMC05YS1mXXsyfSkqKSopPyg/OlxcPyg/OlthLXowLTlcXC0uX34hJCYnXCIoKSorLDs9OkAvP118JVswLTlhLWZdezJ9KSopPyg/OiMoPzpbYS16MC05XFwtLl9+ISQmJ1wiKCkqKyw7PTpALz9dfCVbMC05YS1mXXsyfSkqKT8kL2k7XG4vLyB1cmktdGVtcGxhdGU6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NTcwXG52YXIgVVJJVEVNUExBVEUgPSAvXig/Oig/OlteXFx4MDAtXFx4MjBcIic8PiVcXFxcXmB7fH1dfCVbMC05YS1mXXsyfSl8XFx7WysjLi87PyY9LCFAfF0/KD86W2EtejAtOV9dfCVbMC05YS1mXXsyfSkrKD86OlsxLTldWzAtOV17MCwzfXxcXCopPyg/OiwoPzpbYS16MC05X118JVswLTlhLWZdezJ9KSsoPzo6WzEtOV1bMC05XXswLDN9fFxcKik/KSpcXH0pKiQvaTtcbi8vIEZvciB0aGUgc291cmNlOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9kcGVyaW5pLzcyOTI5NFxuLy8gRm9yIHRlc3QgY2FzZXM6IGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9kZW1vL3VybC1yZWdleFxuLy8gQHRvZG8gRGVsZXRlIGN1cnJlbnQgVVJMIGluIGZhdm91ciBvZiB0aGUgY29tbWVudGVkIG91dCBVUkwgcnVsZSB3aGVuIHRoaXMgaXNzdWUgaXMgZml4ZWQgaHR0cHM6Ly9naXRodWIuY29tL2VzbGludC9lc2xpbnQvaXNzdWVzLzc5ODMuXG4vLyB2YXIgVVJMID0gL14oPzooPzpodHRwcz98ZnRwKTpcXC9cXC8pKD86XFxTKyg/OjpcXFMqKT9AKT8oPzooPyExMCg/OlxcLlxcZHsxLDN9KXszfSkoPyExMjcoPzpcXC5cXGR7MSwzfSl7M30pKD8hMTY5XFwuMjU0KD86XFwuXFxkezEsM30pezJ9KSg/ITE5MlxcLjE2OCg/OlxcLlxcZHsxLDN9KXsyfSkoPyExNzJcXC4oPzoxWzYtOV18MlxcZHwzWzAtMV0pKD86XFwuXFxkezEsM30pezJ9KSg/OlsxLTldXFxkP3wxXFxkXFxkfDJbMDFdXFxkfDIyWzAtM10pKD86XFwuKD86MT9cXGR7MSwyfXwyWzAtNF1cXGR8MjVbMC01XSkpezJ9KD86XFwuKD86WzEtOV1cXGQ/fDFcXGRcXGR8MlswLTRdXFxkfDI1WzAtNF0pKXwoPzooPzpbYS16XFx1ezAwYTF9LVxcdXtmZmZmfTAtOV0rLSkqW2EtelxcdXswMGExfS1cXHV7ZmZmZn0wLTldKykoPzpcXC4oPzpbYS16XFx1ezAwYTF9LVxcdXtmZmZmfTAtOV0rLSkqW2EtelxcdXswMGExfS1cXHV7ZmZmZn0wLTldKykqKD86XFwuKD86W2EtelxcdXswMGExfS1cXHV7ZmZmZn1dezIsfSkpKSg/OjpcXGR7Miw1fSk/KD86XFwvW15cXHNdKik/JC9pdTtcbnZhciBVUkwgPSAvXig/Oig/Omh0dHBbc1xcdTAxN0ZdP3xmdHApOlxcL1xcLykoPzooPzpbXFwwLVxceDA4XFx4MEUtXFx4MUYhLVxceDlGXFx4QTEtXFx1MTY3RlxcdTE2ODEtXFx1MUZGRlxcdTIwMEItXFx1MjAyN1xcdTIwMkEtXFx1MjAyRVxcdTIwMzAtXFx1MjA1RVxcdTIwNjAtXFx1MkZGRlxcdTMwMDEtXFx1RDdGRlxcdUUwMDAtXFx1RkVGRVxcdUZGMDAtXFx1RkZGRl18W1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXXxbXFx1RDgwMC1cXHVEQkZGXSg/IVtcXHVEQzAwLVxcdURGRkZdKXwoPzpbXlxcdUQ4MDAtXFx1REJGRl18XilbXFx1REMwMC1cXHVERkZGXSkrKD86Oig/OltcXDAtXFx4MDhcXHgwRS1cXHgxRiEtXFx4OUZcXHhBMS1cXHUxNjdGXFx1MTY4MS1cXHUxRkZGXFx1MjAwQi1cXHUyMDI3XFx1MjAyQS1cXHUyMDJFXFx1MjAzMC1cXHUyMDVFXFx1MjA2MC1cXHUyRkZGXFx1MzAwMS1cXHVEN0ZGXFx1RTAwMC1cXHVGRUZFXFx1RkYwMC1cXHVGRkZGXXxbXFx1RDgwMC1cXHVEQkZGXVtcXHVEQzAwLVxcdURGRkZdfFtcXHVEODAwLVxcdURCRkZdKD8hW1xcdURDMDAtXFx1REZGRl0pfCg/OlteXFx1RDgwMC1cXHVEQkZGXXxeKVtcXHVEQzAwLVxcdURGRkZdKSopP0ApPyg/Oig/ITEwKD86XFwuWzAtOV17MSwzfSl7M30pKD8hMTI3KD86XFwuWzAtOV17MSwzfSl7M30pKD8hMTY5XFwuMjU0KD86XFwuWzAtOV17MSwzfSl7Mn0pKD8hMTkyXFwuMTY4KD86XFwuWzAtOV17MSwzfSl7Mn0pKD8hMTcyXFwuKD86MVs2LTldfDJbMC05XXwzWzAxXSkoPzpcXC5bMC05XXsxLDN9KXsyfSkoPzpbMS05XVswLTldP3wxWzAtOV1bMC05XXwyWzAxXVswLTldfDIyWzAtM10pKD86XFwuKD86MT9bMC05XXsxLDJ9fDJbMC00XVswLTldfDI1WzAtNV0pKXsyfSg/OlxcLig/OlsxLTldWzAtOV0/fDFbMC05XVswLTldfDJbMC00XVswLTldfDI1WzAtNF0pKXwoPzooPzooPzpbMC05YS16XFx4QTEtXFx1RDdGRlxcdUUwMDAtXFx1RkZGRl18W1xcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSl8KD86W15cXHVEODAwLVxcdURCRkZdfF4pW1xcdURDMDAtXFx1REZGRl0pKy0pKig/OlswLTlhLXpcXHhBMS1cXHVEN0ZGXFx1RTAwMC1cXHVGRkZGXXxbXFx1RDgwMC1cXHVEQkZGXSg/IVtcXHVEQzAwLVxcdURGRkZdKXwoPzpbXlxcdUQ4MDAtXFx1REJGRl18XilbXFx1REMwMC1cXHVERkZGXSkrKSg/OlxcLig/Oig/OlswLTlhLXpcXHhBMS1cXHVEN0ZGXFx1RTAwMC1cXHVGRkZGXXxbXFx1RDgwMC1cXHVEQkZGXSg/IVtcXHVEQzAwLVxcdURGRkZdKXwoPzpbXlxcdUQ4MDAtXFx1REJGRl18XilbXFx1REMwMC1cXHVERkZGXSkrLSkqKD86WzAtOWEtelxceEExLVxcdUQ3RkZcXHVFMDAwLVxcdUZGRkZdfFtcXHVEODAwLVxcdURCRkZdKD8hW1xcdURDMDAtXFx1REZGRl0pfCg/OlteXFx1RDgwMC1cXHVEQkZGXXxeKVtcXHVEQzAwLVxcdURGRkZdKSspKig/OlxcLig/Oig/OlthLXpcXHhBMS1cXHVEN0ZGXFx1RTAwMC1cXHVGRkZGXXxbXFx1RDgwMC1cXHVEQkZGXSg/IVtcXHVEQzAwLVxcdURGRkZdKXwoPzpbXlxcdUQ4MDAtXFx1REJGRl18XilbXFx1REMwMC1cXHVERkZGXSl7Mix9KSkpKD86OlswLTldezIsNX0pPyg/OlxcLyg/OltcXDAtXFx4MDhcXHgwRS1cXHgxRiEtXFx4OUZcXHhBMS1cXHUxNjdGXFx1MTY4MS1cXHUxRkZGXFx1MjAwQi1cXHUyMDI3XFx1MjAyQS1cXHUyMDJFXFx1MjAzMC1cXHUyMDVFXFx1MjA2MC1cXHUyRkZGXFx1MzAwMS1cXHVEN0ZGXFx1RTAwMC1cXHVGRUZFXFx1RkYwMC1cXHVGRkZGXXxbXFx1RDgwMC1cXHVEQkZGXVtcXHVEQzAwLVxcdURGRkZdfFtcXHVEODAwLVxcdURCRkZdKD8hW1xcdURDMDAtXFx1REZGRl0pfCg/OlteXFx1RDgwMC1cXHVEQkZGXXxeKVtcXHVEQzAwLVxcdURGRkZdKSopPyQvaTtcbnZhciBVVUlEID0gL14oPzp1cm46dXVpZDopP1swLTlhLWZdezh9LSg/OlswLTlhLWZdezR9LSl7M31bMC05YS1mXXsxMn0kL2k7XG52YXIgSlNPTl9QT0lOVEVSID0gL14oPzpcXC8oPzpbXn4vXXx+MHx+MSkqKSokLztcbnZhciBKU09OX1BPSU5URVJfVVJJX0ZSQUdNRU5UID0gL14jKD86XFwvKD86W2EtejAtOV9cXC0uISQmJygpKissOzo9QF18JVswLTlhLWZdezJ9fH4wfH4xKSopKiQvaTtcbnZhciBSRUxBVElWRV9KU09OX1BPSU5URVIgPSAvXig/OjB8WzEtOV1bMC05XSopKD86I3woPzpcXC8oPzpbXn4vXXx+MHx+MSkqKSopJC87XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmb3JtYXRzO1xuXG5mdW5jdGlvbiBmb3JtYXRzKG1vZGUpIHtcbiAgbW9kZSA9IG1vZGUgPT0gJ2Z1bGwnID8gJ2Z1bGwnIDogJ2Zhc3QnO1xuICByZXR1cm4gdXRpbC5jb3B5KGZvcm1hdHNbbW9kZV0pO1xufVxuXG5cbmZvcm1hdHMuZmFzdCA9IHtcbiAgLy8gZGF0ZTogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzMzOSNzZWN0aW9uLTUuNlxuICBkYXRlOiAvXlxcZFxcZFxcZFxcZC1bMC0xXVxcZC1bMC0zXVxcZCQvLFxuICAvLyBkYXRlLXRpbWU6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkjc2VjdGlvbi01LjZcbiAgdGltZTogL14oPzpbMC0yXVxcZDpbMC01XVxcZDpbMC01XVxcZHwyMzo1OTo2MCkoPzpcXC5cXGQrKT8oPzp6fFsrLV1cXGRcXGQoPzo6P1xcZFxcZCk/KT8kL2ksXG4gICdkYXRlLXRpbWUnOiAvXlxcZFxcZFxcZFxcZC1bMC0xXVxcZC1bMC0zXVxcZFt0XFxzXSg/OlswLTJdXFxkOlswLTVdXFxkOlswLTVdXFxkfDIzOjU5OjYwKSg/OlxcLlxcZCspPyg/Onp8WystXVxcZFxcZCg/Ojo/XFxkXFxkKT8pJC9pLFxuICAvLyB1cmk6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYWZpbnRvc2gvaXMtbXktanNvbi12YWxpZC9ibG9iL21hc3Rlci9mb3JtYXRzLmpzXG4gIHVyaTogL14oPzpbYS16XVthLXowLTkrXFwtLl0qOikoPzpcXC8/XFwvKT9bXlxcc10qJC9pLFxuICAndXJpLXJlZmVyZW5jZSc6IC9eKD86KD86W2Etel1bYS16MC05K1xcLS5dKjopP1xcLz9cXC8pPyg/OlteXFxcXFxccyNdW15cXHMjXSopPyg/OiNbXlxcXFxcXHNdKik/JC9pLFxuICAndXJpLXRlbXBsYXRlJzogVVJJVEVNUExBVEUsXG4gIHVybDogVVJMLFxuICAvLyBlbWFpbCAoc291cmNlcyBmcm9tIGpzZW4gdmFsaWRhdG9yKTpcbiAgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMDEzMjMvdXNpbmctYS1yZWd1bGFyLWV4cHJlc3Npb24tdG8tdmFsaWRhdGUtYW4tZW1haWwtYWRkcmVzcyNhbnN3ZXItODgyOTM2M1xuICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9mb3Jtcy5odG1sI3ZhbGlkLWUtbWFpbC1hZGRyZXNzIChzZWFyY2ggZm9yICd3aWxsZnVsIHZpb2xhdGlvbicpXG4gIGVtYWlsOiAvXlthLXowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXowLTldKD86W2EtejAtOS1dezAsNjF9W2EtejAtOV0pPyg/OlxcLlthLXowLTldKD86W2EtejAtOS1dezAsNjF9W2EtejAtOV0pPykqJC9pLFxuICBob3N0bmFtZTogSE9TVE5BTUUsXG4gIC8vIG9wdGltaXplZCBodHRwczovL3d3dy5zYWZhcmlib29rc29ubGluZS5jb20vbGlicmFyeS92aWV3L3JlZ3VsYXItZXhwcmVzc2lvbnMtY29va2Jvb2svOTc4MDU5NjgwMjgzNy9jaDA3czE2Lmh0bWxcbiAgaXB2NDogL14oPzooPzoyNVswLTVdfDJbMC00XVxcZHxbMDFdP1xcZFxcZD8pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPykkLyxcbiAgLy8gb3B0aW1pemVkIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTM0OTcvcmVndWxhci1leHByZXNzaW9uLXRoYXQtbWF0Y2hlcy12YWxpZC1pcHY2LWFkZHJlc3Nlc1xuICBpcHY2OiAvXlxccyooPzooPzooPzpbMC05YS1mXXsxLDR9Oil7N30oPzpbMC05YS1mXXsxLDR9fDopKXwoPzooPzpbMC05YS1mXXsxLDR9Oil7Nn0oPzo6WzAtOWEtZl17MSw0fXwoPzooPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoPzpcXC4oPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezV9KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsMn0pfDooPzooPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoPzpcXC4oPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezR9KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsM30pfCg/Oig/OjpbMC05YS1mXXsxLDR9KT86KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoPzooPzpbMC05YS1mXXsxLDR9Oil7M30oPzooPzooPzo6WzAtOWEtZl17MSw0fSl7MSw0fSl8KD86KD86OlswLTlhLWZdezEsNH0pezAsMn06KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoPzooPzpbMC05YS1mXXsxLDR9Oil7Mn0oPzooPzooPzo6WzAtOWEtZl17MSw0fSl7MSw1fSl8KD86KD86OlswLTlhLWZdezEsNH0pezAsM306KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MX0oPzooPzooPzo6WzAtOWEtZl17MSw0fSl7MSw2fSl8KD86KD86OlswLTlhLWZdezEsNH0pezAsNH06KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoPzo6KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsN30pfCg/Oig/OjpbMC05YS1mXXsxLDR9KXswLDV9Oig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSkpKD86JS4rKT9cXHMqJC9pLFxuICByZWdleDogcmVnZXgsXG4gIC8vIHV1aWQ6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQxMjJcbiAgdXVpZDogVVVJRCxcbiAgLy8gSlNPTi1wb2ludGVyOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjkwMVxuICAvLyB1cmkgZnJhZ21lbnQ6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I2FwcGVuZGl4LUFcbiAgJ2pzb24tcG9pbnRlcic6IEpTT05fUE9JTlRFUixcbiAgJ2pzb24tcG9pbnRlci11cmktZnJhZ21lbnQnOiBKU09OX1BPSU5URVJfVVJJX0ZSQUdNRU5ULFxuICAvLyByZWxhdGl2ZSBKU09OLXBvaW50ZXI6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWx1ZmYtcmVsYXRpdmUtanNvbi1wb2ludGVyLTAwXG4gICdyZWxhdGl2ZS1qc29uLXBvaW50ZXInOiBSRUxBVElWRV9KU09OX1BPSU5URVJcbn07XG5cblxuZm9ybWF0cy5mdWxsID0ge1xuICBkYXRlOiBkYXRlLFxuICB0aW1lOiB0aW1lLFxuICAnZGF0ZS10aW1lJzogZGF0ZV90aW1lLFxuICB1cmk6IHVyaSxcbiAgJ3VyaS1yZWZlcmVuY2UnOiBVUklSRUYsXG4gICd1cmktdGVtcGxhdGUnOiBVUklURU1QTEFURSxcbiAgdXJsOiBVUkwsXG4gIGVtYWlsOiAvXlthLXowLTkhIyQlJicqKy89P15fYHt8fX4tXSsoPzpcXC5bYS16MC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKSpAKD86W2EtejAtOV0oPzpbYS16MC05LV0qW2EtejAtOV0pP1xcLikrW2EtejAtOV0oPzpbYS16MC05LV0qW2EtejAtOV0pPyQvaSxcbiAgaG9zdG5hbWU6IEhPU1ROQU1FLFxuICBpcHY0OiAvXig/Oig/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkXFxkPylcXC4pezN9KD86MjVbMC01XXwyWzAtNF1cXGR8WzAxXT9cXGRcXGQ/KSQvLFxuICBpcHY2OiAvXlxccyooPzooPzooPzpbMC05YS1mXXsxLDR9Oil7N30oPzpbMC05YS1mXXsxLDR9fDopKXwoPzooPzpbMC05YS1mXXsxLDR9Oil7Nn0oPzo6WzAtOWEtZl17MSw0fXwoPzooPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoPzpcXC4oPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezV9KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsMn0pfDooPzooPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoPzpcXC4oPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KXw6KSl8KD86KD86WzAtOWEtZl17MSw0fTopezR9KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsM30pfCg/Oig/OjpbMC05YS1mXXsxLDR9KT86KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoPzooPzpbMC05YS1mXXsxLDR9Oil7M30oPzooPzooPzo6WzAtOWEtZl17MSw0fSl7MSw0fSl8KD86KD86OlswLTlhLWZdezEsNH0pezAsMn06KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoPzooPzpbMC05YS1mXXsxLDR9Oil7Mn0oPzooPzooPzo6WzAtOWEtZl17MSw0fSl7MSw1fSl8KD86KD86OlswLTlhLWZdezEsNH0pezAsM306KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoPzooPzpbMC05YS1mXXsxLDR9Oil7MX0oPzooPzooPzo6WzAtOWEtZl17MSw0fSl7MSw2fSl8KD86KD86OlswLTlhLWZdezEsNH0pezAsNH06KD86KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoPzo6KD86KD86KD86OlswLTlhLWZdezEsNH0pezEsN30pfCg/Oig/OjpbMC05YS1mXXsxLDR9KXswLDV9Oig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSkpKD86JS4rKT9cXHMqJC9pLFxuICByZWdleDogcmVnZXgsXG4gIHV1aWQ6IFVVSUQsXG4gICdqc29uLXBvaW50ZXInOiBKU09OX1BPSU5URVIsXG4gICdqc29uLXBvaW50ZXItdXJpLWZyYWdtZW50JzogSlNPTl9QT0lOVEVSX1VSSV9GUkFHTUVOVCxcbiAgJ3JlbGF0aXZlLWpzb24tcG9pbnRlcic6IFJFTEFUSVZFX0pTT05fUE9JTlRFUlxufTtcblxuXG5mdW5jdGlvbiBpc0xlYXBZZWFyKHllYXIpIHtcbiAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkjYXBwZW5kaXgtQ1xuICByZXR1cm4geWVhciAlIDQgPT09IDAgJiYgKHllYXIgJSAxMDAgIT09IDAgfHwgeWVhciAlIDQwMCA9PT0gMCk7XG59XG5cblxuZnVuY3Rpb24gZGF0ZShzdHIpIHtcbiAgLy8gZnVsbC1kYXRlIGZyb20gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzMzOSNzZWN0aW9uLTUuNlxuICB2YXIgbWF0Y2hlcyA9IHN0ci5tYXRjaChEQVRFKTtcbiAgaWYgKCFtYXRjaGVzKSByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIHllYXIgPSArbWF0Y2hlc1sxXTtcbiAgdmFyIG1vbnRoID0gK21hdGNoZXNbMl07XG4gIHZhciBkYXkgPSArbWF0Y2hlc1szXTtcblxuICByZXR1cm4gbW9udGggPj0gMSAmJiBtb250aCA8PSAxMiAmJiBkYXkgPj0gMSAmJlxuICAgICAgICAgIGRheSA8PSAobW9udGggPT0gMiAmJiBpc0xlYXBZZWFyKHllYXIpID8gMjkgOiBEQVlTW21vbnRoXSk7XG59XG5cblxuZnVuY3Rpb24gdGltZShzdHIsIGZ1bGwpIHtcbiAgdmFyIG1hdGNoZXMgPSBzdHIubWF0Y2goVElNRSk7XG4gIGlmICghbWF0Y2hlcykgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciBob3VyID0gbWF0Y2hlc1sxXTtcbiAgdmFyIG1pbnV0ZSA9IG1hdGNoZXNbMl07XG4gIHZhciBzZWNvbmQgPSBtYXRjaGVzWzNdO1xuICB2YXIgdGltZVpvbmUgPSBtYXRjaGVzWzVdO1xuICByZXR1cm4gKChob3VyIDw9IDIzICYmIG1pbnV0ZSA8PSA1OSAmJiBzZWNvbmQgPD0gNTkpIHx8XG4gICAgICAgICAgKGhvdXIgPT0gMjMgJiYgbWludXRlID09IDU5ICYmIHNlY29uZCA9PSA2MCkpICYmXG4gICAgICAgICAoIWZ1bGwgfHwgdGltZVpvbmUpO1xufVxuXG5cbnZhciBEQVRFX1RJTUVfU0VQQVJBVE9SID0gL3R8XFxzL2k7XG5mdW5jdGlvbiBkYXRlX3RpbWUoc3RyKSB7XG4gIC8vIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkjc2VjdGlvbi01LjZcbiAgdmFyIGRhdGVUaW1lID0gc3RyLnNwbGl0KERBVEVfVElNRV9TRVBBUkFUT1IpO1xuICByZXR1cm4gZGF0ZVRpbWUubGVuZ3RoID09IDIgJiYgZGF0ZShkYXRlVGltZVswXSkgJiYgdGltZShkYXRlVGltZVsxXSwgdHJ1ZSk7XG59XG5cblxudmFyIE5PVF9VUklfRlJBR01FTlQgPSAvXFwvfDovO1xuZnVuY3Rpb24gdXJpKHN0cikge1xuICAvLyBodHRwOi8vam1yd2FyZS5jb20vYXJ0aWNsZXMvMjAwOS91cmlfcmVnZXhwL1VSSV9yZWdleC5odG1sICsgb3B0aW9uYWwgcHJvdG9jb2wgKyByZXF1aXJlZCBcIi5cIlxuICByZXR1cm4gTk9UX1VSSV9GUkFHTUVOVC50ZXN0KHN0cikgJiYgVVJJLnRlc3Qoc3RyKTtcbn1cblxuXG52YXIgWl9BTkNIT1IgPSAvW15cXFxcXVxcXFxaLztcbmZ1bmN0aW9uIHJlZ2V4KHN0cikge1xuICBpZiAoWl9BTkNIT1IudGVzdChzdHIpKSByZXR1cm4gZmFsc2U7XG4gIHRyeSB7XG4gICAgbmV3IFJlZ0V4cChzdHIpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfcmVmKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJHZhbGlkID0gJ3ZhbGlkJyArICRsdmw7XG4gIHZhciAkYXN5bmMsICRyZWZDb2RlO1xuICBpZiAoJHNjaGVtYSA9PSAnIycgfHwgJHNjaGVtYSA9PSAnIy8nKSB7XG4gICAgaWYgKGl0LmlzUm9vdCkge1xuICAgICAgJGFzeW5jID0gaXQuYXN5bmM7XG4gICAgICAkcmVmQ29kZSA9ICd2YWxpZGF0ZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgICRhc3luYyA9IGl0LnJvb3Quc2NoZW1hLiRhc3luYyA9PT0gdHJ1ZTtcbiAgICAgICRyZWZDb2RlID0gJ3Jvb3QucmVmVmFsWzBdJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyICRyZWZWYWwgPSBpdC5yZXNvbHZlUmVmKGl0LmJhc2VJZCwgJHNjaGVtYSwgaXQuaXNSb290KTtcbiAgICBpZiAoJHJlZlZhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgJG1lc3NhZ2UgPSBpdC5NaXNzaW5nUmVmRXJyb3IubWVzc2FnZShpdC5iYXNlSWQsICRzY2hlbWEpO1xuICAgICAgaWYgKGl0Lm9wdHMubWlzc2luZ1JlZnMgPT0gJ2ZhaWwnKSB7XG4gICAgICAgIGl0LmxvZ2dlci5lcnJvcigkbWVzc2FnZSk7XG4gICAgICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAgICAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gICAgICAgIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgnJHJlZicpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgcmVmOiBcXCcnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRzY2hlbWEpKSArICdcXCcgfSAnO1xuICAgICAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdjYW5cXFxcXFwndCByZXNvbHZlIHJlZmVyZW5jZSAnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRzY2hlbWEpKSArICdcXCcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkc2NoZW1hKSkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgICAgICB9XG4gICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKGZhbHNlKSB7ICc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXQub3B0cy5taXNzaW5nUmVmcyA9PSAnaWdub3JlJykge1xuICAgICAgICBpdC5sb2dnZXIud2FybigkbWVzc2FnZSk7XG4gICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKHRydWUpIHsgJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IGl0Lk1pc3NpbmdSZWZFcnJvcihpdC5iYXNlSWQsICRzY2hlbWEsICRtZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCRyZWZWYWwuaW5saW5lKSB7XG4gICAgICB2YXIgJGl0ID0gaXQudXRpbC5jb3B5KGl0KTtcbiAgICAgICRpdC5sZXZlbCsrO1xuICAgICAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICAgICAgJGl0LnNjaGVtYSA9ICRyZWZWYWwuc2NoZW1hO1xuICAgICAgJGl0LnNjaGVtYVBhdGggPSAnJztcbiAgICAgICRpdC5lcnJTY2hlbWFQYXRoID0gJHNjaGVtYTtcbiAgICAgIHZhciAkY29kZSA9IGl0LnZhbGlkYXRlKCRpdCkucmVwbGFjZSgvdmFsaWRhdGVcXC5zY2hlbWEvZywgJHJlZlZhbC5jb2RlKTtcbiAgICAgIG91dCArPSAnICcgKyAoJGNvZGUpICsgJyAnO1xuICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJG5leHRWYWxpZCkgKyAnKSB7ICc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICRhc3luYyA9ICRyZWZWYWwuJGFzeW5jID09PSB0cnVlIHx8IChpdC5hc3luYyAmJiAkcmVmVmFsLiRhc3luYyAhPT0gZmFsc2UpO1xuICAgICAgJHJlZkNvZGUgPSAkcmVmVmFsLmNvZGU7XG4gICAgfVxuICB9XG4gIGlmICgkcmVmQ29kZSkge1xuICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICBvdXQgPSAnJztcbiAgICBpZiAoaXQub3B0cy5wYXNzQ29udGV4dCkge1xuICAgICAgb3V0ICs9ICcgJyArICgkcmVmQ29kZSkgKyAnLmNhbGwodGhpcywgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgJyArICgkcmVmQ29kZSkgKyAnKCAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyAnICsgKCRkYXRhKSArICcsIChkYXRhUGF0aCB8fCBcXCdcXCcpJztcbiAgICBpZiAoaXQuZXJyb3JQYXRoICE9ICdcIlwiJykge1xuICAgICAgb3V0ICs9ICcgKyAnICsgKGl0LmVycm9yUGF0aCk7XG4gICAgfVxuICAgIHZhciAkcGFyZW50RGF0YSA9ICRkYXRhTHZsID8gJ2RhdGEnICsgKCgkZGF0YUx2bCAtIDEpIHx8ICcnKSA6ICdwYXJlbnREYXRhJyxcbiAgICAgICRwYXJlbnREYXRhUHJvcGVydHkgPSAkZGF0YUx2bCA/IGl0LmRhdGFQYXRoQXJyWyRkYXRhTHZsXSA6ICdwYXJlbnREYXRhUHJvcGVydHknO1xuICAgIG91dCArPSAnICwgJyArICgkcGFyZW50RGF0YSkgKyAnICwgJyArICgkcGFyZW50RGF0YVByb3BlcnR5KSArICcsIHJvb3REYXRhKSAgJztcbiAgICB2YXIgX19jYWxsVmFsaWRhdGUgPSBvdXQ7XG4gICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICBpZiAoJGFzeW5jKSB7XG4gICAgICBpZiAoIWl0LmFzeW5jKSB0aHJvdyBuZXcgRXJyb3IoJ2FzeW5jIHNjaGVtYSByZWZlcmVuY2VkIGJ5IHN5bmMgc2NoZW1hJyk7XG4gICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICBvdXQgKz0gJyB2YXIgJyArICgkdmFsaWQpICsgJzsgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIHRyeSB7IGF3YWl0ICcgKyAoX19jYWxsVmFsaWRhdGUpICsgJzsgJztcbiAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgIG91dCArPSAnICcgKyAoJHZhbGlkKSArICcgPSB0cnVlOyAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSBjYXRjaCAoZSkgeyBpZiAoIShlIGluc3RhbmNlb2YgVmFsaWRhdGlvbkVycm9yKSkgdGhyb3cgZTsgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBlLmVycm9yczsgZWxzZSB2RXJyb3JzID0gdkVycm9ycy5jb25jYXQoZS5lcnJvcnMpOyBlcnJvcnMgPSB2RXJyb3JzLmxlbmd0aDsgJztcbiAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgIG91dCArPSAnICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZTsgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIH0gJztcbiAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgIG91dCArPSAnIGlmICgnICsgKCR2YWxpZCkgKyAnKSB7ICc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIGlmICghJyArIChfX2NhbGxWYWxpZGF0ZSkgKyAnKSB7IGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gJyArICgkcmVmQ29kZSkgKyAnLmVycm9yczsgZWxzZSB2RXJyb3JzID0gdkVycm9ycy5jb25jYXQoJyArICgkcmVmQ29kZSkgKyAnLmVycm9ycyk7IGVycm9ycyA9IHZFcnJvcnMubGVuZ3RoOyB9ICc7XG4gICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfYWxsT2YoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkaXQgPSBpdC51dGlsLmNvcHkoaXQpO1xuICB2YXIgJGNsb3NpbmdCcmFjZXMgPSAnJztcbiAgJGl0LmxldmVsKys7XG4gIHZhciAkbmV4dFZhbGlkID0gJ3ZhbGlkJyArICRpdC5sZXZlbDtcbiAgdmFyICRjdXJyZW50QmFzZUlkID0gJGl0LmJhc2VJZCxcbiAgICAkYWxsU2NoZW1hc0VtcHR5ID0gdHJ1ZTtcbiAgdmFyIGFycjEgPSAkc2NoZW1hO1xuICBpZiAoYXJyMSkge1xuICAgIHZhciAkc2NoLCAkaSA9IC0xLFxuICAgICAgbDEgPSBhcnIxLmxlbmd0aCAtIDE7XG4gICAgd2hpbGUgKCRpIDwgbDEpIHtcbiAgICAgICRzY2ggPSBhcnIxWyRpICs9IDFdO1xuICAgICAgaWYgKChpdC5vcHRzLnN0cmljdEtleXdvcmRzID8gKHR5cGVvZiAkc2NoID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRzY2gpLmxlbmd0aCA+IDApIHx8ICRzY2ggPT09IGZhbHNlIDogaXQudXRpbC5zY2hlbWFIYXNSdWxlcygkc2NoLCBpdC5SVUxFUy5hbGwpKSkge1xuICAgICAgICAkYWxsU2NoZW1hc0VtcHR5ID0gZmFsc2U7XG4gICAgICAgICRpdC5zY2hlbWEgPSAkc2NoO1xuICAgICAgICAkaXQuc2NoZW1hUGF0aCA9ICRzY2hlbWFQYXRoICsgJ1snICsgJGkgKyAnXSc7XG4gICAgICAgICRpdC5lcnJTY2hlbWFQYXRoID0gJGVyclNjaGVtYVBhdGggKyAnLycgKyAkaTtcbiAgICAgICAgb3V0ICs9ICcgICcgKyAoaXQudmFsaWRhdGUoJGl0KSkgKyAnICc7XG4gICAgICAgICRpdC5iYXNlSWQgPSAkY3VycmVudEJhc2VJZDtcbiAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkbmV4dFZhbGlkKSArICcpIHsgJztcbiAgICAgICAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBpZiAoJGFsbFNjaGVtYXNFbXB0eSkge1xuICAgICAgb3V0ICs9ICcgaWYgKHRydWUpIHsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgJyArICgkY2xvc2luZ0JyYWNlcy5zbGljZSgwLCAtMSkpICsgJyAnO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9hbnlPZihpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJHZhbGlkID0gJ3ZhbGlkJyArICRsdmw7XG4gIHZhciAkZXJycyA9ICdlcnJzX18nICsgJGx2bDtcbiAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gIHZhciAkY2xvc2luZ0JyYWNlcyA9ICcnO1xuICAkaXQubGV2ZWwrKztcbiAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICB2YXIgJG5vRW1wdHlTY2hlbWEgPSAkc2NoZW1hLmV2ZXJ5KGZ1bmN0aW9uKCRzY2gpIHtcbiAgICByZXR1cm4gKGl0Lm9wdHMuc3RyaWN0S2V5d29yZHMgPyAodHlwZW9mICRzY2ggPT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoJHNjaCkubGVuZ3RoID4gMCkgfHwgJHNjaCA9PT0gZmFsc2UgOiBpdC51dGlsLnNjaGVtYUhhc1J1bGVzKCRzY2gsIGl0LlJVTEVTLmFsbCkpO1xuICB9KTtcbiAgaWYgKCRub0VtcHR5U2NoZW1hKSB7XG4gICAgdmFyICRjdXJyZW50QmFzZUlkID0gJGl0LmJhc2VJZDtcbiAgICBvdXQgKz0gJyB2YXIgJyArICgkZXJycykgKyAnID0gZXJyb3JzOyB2YXIgJyArICgkdmFsaWQpICsgJyA9IGZhbHNlOyAgJztcbiAgICB2YXIgJHdhc0NvbXBvc2l0ZSA9IGl0LmNvbXBvc2l0ZVJ1bGU7XG4gICAgaXQuY29tcG9zaXRlUnVsZSA9ICRpdC5jb21wb3NpdGVSdWxlID0gdHJ1ZTtcbiAgICB2YXIgYXJyMSA9ICRzY2hlbWE7XG4gICAgaWYgKGFycjEpIHtcbiAgICAgIHZhciAkc2NoLCAkaSA9IC0xLFxuICAgICAgICBsMSA9IGFycjEubGVuZ3RoIC0gMTtcbiAgICAgIHdoaWxlICgkaSA8IGwxKSB7XG4gICAgICAgICRzY2ggPSBhcnIxWyRpICs9IDFdO1xuICAgICAgICAkaXQuc2NoZW1hID0gJHNjaDtcbiAgICAgICAgJGl0LnNjaGVtYVBhdGggPSAkc2NoZW1hUGF0aCArICdbJyArICRpICsgJ10nO1xuICAgICAgICAkaXQuZXJyU2NoZW1hUGF0aCA9ICRlcnJTY2hlbWFQYXRoICsgJy8nICsgJGk7XG4gICAgICAgIG91dCArPSAnICAnICsgKGl0LnZhbGlkYXRlKCRpdCkpICsgJyAnO1xuICAgICAgICAkaXQuYmFzZUlkID0gJGN1cnJlbnRCYXNlSWQ7XG4gICAgICAgIG91dCArPSAnICcgKyAoJHZhbGlkKSArICcgPSAnICsgKCR2YWxpZCkgKyAnIHx8ICcgKyAoJG5leHRWYWxpZCkgKyAnOyBpZiAoIScgKyAoJHZhbGlkKSArICcpIHsgJztcbiAgICAgICAgJGNsb3NpbmdCcmFjZXMgKz0gJ30nO1xuICAgICAgfVxuICAgIH1cbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSAkd2FzQ29tcG9zaXRlO1xuICAgIG91dCArPSAnICcgKyAoJGNsb3NpbmdCcmFjZXMpICsgJyBpZiAoIScgKyAoJHZhbGlkKSArICcpIHsgICB2YXIgZXJyID0gICAnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ2FueU9mJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczoge30gJztcbiAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBtYXRjaCBzb21lIHNjaGVtYSBpbiBhbnlPZlxcJyAnO1xuICAgICAgfVxuICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB7fSAnO1xuICAgIH1cbiAgICBvdXQgKz0gJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKHZFcnJvcnMpOyAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gdkVycm9yczsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgfVxuICAgIH1cbiAgICBvdXQgKz0gJyB9IGVsc2UgeyAgZXJyb3JzID0gJyArICgkZXJycykgKyAnOyBpZiAodkVycm9ycyAhPT0gbnVsbCkgeyBpZiAoJyArICgkZXJycykgKyAnKSB2RXJyb3JzLmxlbmd0aCA9ICcgKyAoJGVycnMpICsgJzsgZWxzZSB2RXJyb3JzID0gbnVsbDsgfSAnO1xuICAgIGlmIChpdC5vcHRzLmFsbEVycm9ycykge1xuICAgICAgb3V0ICs9ICcgfSAnO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgaWYgKHRydWUpIHsgJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfY29tbWVudChpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkY29tbWVudCA9IGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJHNjaGVtYSk7XG4gIGlmIChpdC5vcHRzLiRjb21tZW50ID09PSB0cnVlKSB7XG4gICAgb3V0ICs9ICcgY29uc29sZS5sb2coJyArICgkY29tbWVudCkgKyAnKTsnO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBpdC5vcHRzLiRjb21tZW50ID09ICdmdW5jdGlvbicpIHtcbiAgICBvdXQgKz0gJyBzZWxmLl9vcHRzLiRjb21tZW50KCcgKyAoJGNvbW1lbnQpICsgJywgJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnLCB2YWxpZGF0ZS5yb290LnNjaGVtYSk7JztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9jb25zdChpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJHZhbGlkID0gJ3ZhbGlkJyArICRsdmw7XG4gIHZhciAkaXNEYXRhID0gaXQub3B0cy4kZGF0YSAmJiAkc2NoZW1hICYmICRzY2hlbWEuJGRhdGEsXG4gICAgJHNjaGVtYVZhbHVlO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnIHZhciBzY2hlbWEnICsgKCRsdmwpICsgJyA9ICcgKyAoaXQudXRpbC5nZXREYXRhKCRzY2hlbWEuJGRhdGEsICRkYXRhTHZsLCBpdC5kYXRhUGF0aEFycikpICsgJzsgJztcbiAgICAkc2NoZW1hVmFsdWUgPSAnc2NoZW1hJyArICRsdmw7XG4gIH0gZWxzZSB7XG4gICAgJHNjaGVtYVZhbHVlID0gJHNjaGVtYTtcbiAgfVxuICBpZiAoISRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyB2YXIgc2NoZW1hJyArICgkbHZsKSArICcgPSB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICc7JztcbiAgfVxuICBvdXQgKz0gJ3ZhciAnICsgKCR2YWxpZCkgKyAnID0gZXF1YWwoJyArICgkZGF0YSkgKyAnLCBzY2hlbWEnICsgKCRsdmwpICsgJyk7IGlmICghJyArICgkdmFsaWQpICsgJykgeyAgICc7XG4gIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgnY29uc3QnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IGFsbG93ZWRWYWx1ZTogc2NoZW1hJyArICgkbHZsKSArICcgfSAnO1xuICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgYmUgZXF1YWwgdG8gY29uc3RhbnRcXCcgJztcbiAgICB9XG4gICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHt9ICc7XG4gIH1cbiAgdmFyIF9fZXJyID0gb3V0O1xuICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgfVxuICBvdXQgKz0gJyB9JztcbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9jb250YWlucyhpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJHZhbGlkID0gJ3ZhbGlkJyArICRsdmw7XG4gIHZhciAkZXJycyA9ICdlcnJzX18nICsgJGx2bDtcbiAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gIHZhciAkY2xvc2luZ0JyYWNlcyA9ICcnO1xuICAkaXQubGV2ZWwrKztcbiAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICB2YXIgJGlkeCA9ICdpJyArICRsdmwsXG4gICAgJGRhdGFOeHQgPSAkaXQuZGF0YUxldmVsID0gaXQuZGF0YUxldmVsICsgMSxcbiAgICAkbmV4dERhdGEgPSAnZGF0YScgKyAkZGF0YU54dCxcbiAgICAkY3VycmVudEJhc2VJZCA9IGl0LmJhc2VJZCxcbiAgICAkbm9uRW1wdHlTY2hlbWEgPSAoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHNjaGVtYSA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkc2NoZW1hKS5sZW5ndGggPiAwKSB8fCAkc2NoZW1hID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHNjaGVtYSwgaXQuUlVMRVMuYWxsKSk7XG4gIG91dCArPSAndmFyICcgKyAoJGVycnMpICsgJyA9IGVycm9yczt2YXIgJyArICgkdmFsaWQpICsgJzsnO1xuICBpZiAoJG5vbkVtcHR5U2NoZW1hKSB7XG4gICAgdmFyICR3YXNDb21wb3NpdGUgPSBpdC5jb21wb3NpdGVSdWxlO1xuICAgIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9IHRydWU7XG4gICAgJGl0LnNjaGVtYSA9ICRzY2hlbWE7XG4gICAgJGl0LnNjaGVtYVBhdGggPSAkc2NoZW1hUGF0aDtcbiAgICAkaXQuZXJyU2NoZW1hUGF0aCA9ICRlcnJTY2hlbWFQYXRoO1xuICAgIG91dCArPSAnIHZhciAnICsgKCRuZXh0VmFsaWQpICsgJyA9IGZhbHNlOyBmb3IgKHZhciAnICsgKCRpZHgpICsgJyA9IDA7ICcgKyAoJGlkeCkgKyAnIDwgJyArICgkZGF0YSkgKyAnLmxlbmd0aDsgJyArICgkaWR4KSArICcrKykgeyAnO1xuICAgICRpdC5lcnJvclBhdGggPSBpdC51dGlsLmdldFBhdGhFeHByKGl0LmVycm9yUGF0aCwgJGlkeCwgaXQub3B0cy5qc29uUG9pbnRlcnMsIHRydWUpO1xuICAgIHZhciAkcGFzc0RhdGEgPSAkZGF0YSArICdbJyArICRpZHggKyAnXSc7XG4gICAgJGl0LmRhdGFQYXRoQXJyWyRkYXRhTnh0XSA9ICRpZHg7XG4gICAgdmFyICRjb2RlID0gaXQudmFsaWRhdGUoJGl0KTtcbiAgICAkaXQuYmFzZUlkID0gJGN1cnJlbnRCYXNlSWQ7XG4gICAgaWYgKGl0LnV0aWwudmFyT2NjdXJlbmNlcygkY29kZSwgJG5leHREYXRhKSA8IDIpIHtcbiAgICAgIG91dCArPSAnICcgKyAoaXQudXRpbC52YXJSZXBsYWNlKCRjb2RlLCAkbmV4dERhdGEsICRwYXNzRGF0YSkpICsgJyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YXIgJyArICgkbmV4dERhdGEpICsgJyA9ICcgKyAoJHBhc3NEYXRhKSArICc7ICcgKyAoJGNvZGUpICsgJyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyBpZiAoJyArICgkbmV4dFZhbGlkKSArICcpIGJyZWFrOyB9ICAnO1xuICAgIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9ICR3YXNDb21wb3NpdGU7XG4gICAgb3V0ICs9ICcgJyArICgkY2xvc2luZ0JyYWNlcykgKyAnIGlmICghJyArICgkbmV4dFZhbGlkKSArICcpIHsnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIGlmICgnICsgKCRkYXRhKSArICcubGVuZ3RoID09IDApIHsnO1xuICB9XG4gIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgnY29udGFpbnMnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7fSAnO1xuICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgY29udGFpbiBhIHZhbGlkIGl0ZW1cXCcgJztcbiAgICB9XG4gICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHt9ICc7XG4gIH1cbiAgdmFyIF9fZXJyID0gb3V0O1xuICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgfVxuICBvdXQgKz0gJyB9IGVsc2UgeyAnO1xuICBpZiAoJG5vbkVtcHR5U2NoZW1hKSB7XG4gICAgb3V0ICs9ICcgIGVycm9ycyA9ICcgKyAoJGVycnMpICsgJzsgaWYgKHZFcnJvcnMgIT09IG51bGwpIHsgaWYgKCcgKyAoJGVycnMpICsgJykgdkVycm9ycy5sZW5ndGggPSAnICsgKCRlcnJzKSArICc7IGVsc2UgdkVycm9ycyA9IG51bGw7IH0gJztcbiAgfVxuICBpZiAoaXQub3B0cy5hbGxFcnJvcnMpIHtcbiAgICBvdXQgKz0gJyB9ICc7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfZGVwZW5kZW5jaWVzKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkZXJycyA9ICdlcnJzX18nICsgJGx2bDtcbiAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gIHZhciAkY2xvc2luZ0JyYWNlcyA9ICcnO1xuICAkaXQubGV2ZWwrKztcbiAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICB2YXIgJHNjaGVtYURlcHMgPSB7fSxcbiAgICAkcHJvcGVydHlEZXBzID0ge30sXG4gICAgJG93blByb3BlcnRpZXMgPSBpdC5vcHRzLm93blByb3BlcnRpZXM7XG4gIGZvciAoJHByb3BlcnR5IGluICRzY2hlbWEpIHtcbiAgICBpZiAoJHByb3BlcnR5ID09ICdfX3Byb3RvX18nKSBjb250aW51ZTtcbiAgICB2YXIgJHNjaCA9ICRzY2hlbWFbJHByb3BlcnR5XTtcbiAgICB2YXIgJGRlcHMgPSBBcnJheS5pc0FycmF5KCRzY2gpID8gJHByb3BlcnR5RGVwcyA6ICRzY2hlbWFEZXBzO1xuICAgICRkZXBzWyRwcm9wZXJ0eV0gPSAkc2NoO1xuICB9XG4gIG91dCArPSAndmFyICcgKyAoJGVycnMpICsgJyA9IGVycm9yczsnO1xuICB2YXIgJGN1cnJlbnRFcnJvclBhdGggPSBpdC5lcnJvclBhdGg7XG4gIG91dCArPSAndmFyIG1pc3NpbmcnICsgKCRsdmwpICsgJzsnO1xuICBmb3IgKHZhciAkcHJvcGVydHkgaW4gJHByb3BlcnR5RGVwcykge1xuICAgICRkZXBzID0gJHByb3BlcnR5RGVwc1skcHJvcGVydHldO1xuICAgIGlmICgkZGVwcy5sZW5ndGgpIHtcbiAgICAgIG91dCArPSAnIGlmICggJyArICgkZGF0YSkgKyAoaXQudXRpbC5nZXRQcm9wZXJ0eSgkcHJvcGVydHkpKSArICcgIT09IHVuZGVmaW5lZCAnO1xuICAgICAgaWYgKCRvd25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgIG91dCArPSAnICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgnICsgKCRkYXRhKSArICcsIFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5KSkgKyAnXFwnKSAnO1xuICAgICAgfVxuICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgb3V0ICs9ICcgJiYgKCAnO1xuICAgICAgICB2YXIgYXJyMSA9ICRkZXBzO1xuICAgICAgICBpZiAoYXJyMSkge1xuICAgICAgICAgIHZhciAkcHJvcGVydHlLZXksICRpID0gLTEsXG4gICAgICAgICAgICBsMSA9IGFycjEubGVuZ3RoIC0gMTtcbiAgICAgICAgICB3aGlsZSAoJGkgPCBsMSkge1xuICAgICAgICAgICAgJHByb3BlcnR5S2V5ID0gYXJyMVskaSArPSAxXTtcbiAgICAgICAgICAgIGlmICgkaSkge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyICRwcm9wID0gaXQudXRpbC5nZXRQcm9wZXJ0eSgkcHJvcGVydHlLZXkpLFxuICAgICAgICAgICAgICAkdXNlRGF0YSA9ICRkYXRhICsgJHByb3A7XG4gICAgICAgICAgICBvdXQgKz0gJyAoICggJyArICgkdXNlRGF0YSkgKyAnID09PSB1bmRlZmluZWQgJztcbiAgICAgICAgICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAhIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgnICsgKCRkYXRhKSArICcsIFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5S2V5KSkgKyAnXFwnKSAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICcpICYmIChtaXNzaW5nJyArICgkbHZsKSArICcgPSAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoaXQub3B0cy5qc29uUG9pbnRlcnMgPyAkcHJvcGVydHlLZXkgOiAkcHJvcCkpICsgJykgKSAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJykpIHsgICc7XG4gICAgICAgIHZhciAkcHJvcGVydHlQYXRoID0gJ21pc3NpbmcnICsgJGx2bCxcbiAgICAgICAgICAkbWlzc2luZ1Byb3BlcnR5ID0gJ1xcJyArICcgKyAkcHJvcGVydHlQYXRoICsgJyArIFxcJyc7XG4gICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICBpdC5lcnJvclBhdGggPSBpdC5vcHRzLmpzb25Qb2ludGVycyA/IGl0LnV0aWwuZ2V0UGF0aEV4cHIoJGN1cnJlbnRFcnJvclBhdGgsICRwcm9wZXJ0eVBhdGgsIHRydWUpIDogJGN1cnJlbnRFcnJvclBhdGggKyAnICsgJyArICRwcm9wZXJ0eVBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAgICAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICAgICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdkZXBlbmRlbmNpZXMnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IHByb3BlcnR5OiBcXCcnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRwcm9wZXJ0eSkpICsgJ1xcJywgbWlzc2luZ1Byb3BlcnR5OiBcXCcnICsgKCRtaXNzaW5nUHJvcGVydHkpICsgJ1xcJywgZGVwc0NvdW50OiAnICsgKCRkZXBzLmxlbmd0aCkgKyAnLCBkZXBzOiBcXCcnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRkZXBzLmxlbmd0aCA9PSAxID8gJGRlcHNbMF0gOiAkZGVwcy5qb2luKFwiLCBcIikpKSArICdcXCcgfSAnO1xuICAgICAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgaGF2ZSAnO1xuICAgICAgICAgICAgaWYgKCRkZXBzLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgICAgIG91dCArPSAncHJvcGVydHkgJyArIChpdC51dGlsLmVzY2FwZVF1b3RlcygkZGVwc1swXSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICdwcm9wZXJ0aWVzICcgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJGRlcHMuam9pbihcIiwgXCIpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQgKz0gJyB3aGVuIHByb3BlcnR5ICcgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5KSkgKyAnIGlzIHByZXNlbnRcXCcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fZXJyID0gb3V0O1xuICAgICAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgICAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgKSB7ICc7XG4gICAgICAgIHZhciBhcnIyID0gJGRlcHM7XG4gICAgICAgIGlmIChhcnIyKSB7XG4gICAgICAgICAgdmFyICRwcm9wZXJ0eUtleSwgaTIgPSAtMSxcbiAgICAgICAgICAgIGwyID0gYXJyMi5sZW5ndGggLSAxO1xuICAgICAgICAgIHdoaWxlIChpMiA8IGwyKSB7XG4gICAgICAgICAgICAkcHJvcGVydHlLZXkgPSBhcnIyW2kyICs9IDFdO1xuICAgICAgICAgICAgdmFyICRwcm9wID0gaXQudXRpbC5nZXRQcm9wZXJ0eSgkcHJvcGVydHlLZXkpLFxuICAgICAgICAgICAgICAkbWlzc2luZ1Byb3BlcnR5ID0gaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5S2V5KSxcbiAgICAgICAgICAgICAgJHVzZURhdGEgPSAkZGF0YSArICRwcm9wO1xuICAgICAgICAgICAgaWYgKGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICBpdC5lcnJvclBhdGggPSBpdC51dGlsLmdldFBhdGgoJGN1cnJlbnRFcnJvclBhdGgsICRwcm9wZXJ0eUtleSwgaXQub3B0cy5qc29uUG9pbnRlcnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICcgaWYgKCAnICsgKCR1c2VEYXRhKSArICcgPT09IHVuZGVmaW5lZCAnO1xuICAgICAgICAgICAgaWYgKCRvd25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnIHx8ICEgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKCcgKyAoJGRhdGEpICsgJywgXFwnJyArIChpdC51dGlsLmVzY2FwZVF1b3RlcygkcHJvcGVydHlLZXkpKSArICdcXCcpICc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQgKz0gJykgeyAgdmFyIGVyciA9ICAgJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgnZGVwZW5kZW5jaWVzJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBwcm9wZXJ0eTogXFwnJyArIChpdC51dGlsLmVzY2FwZVF1b3RlcygkcHJvcGVydHkpKSArICdcXCcsIG1pc3NpbmdQcm9wZXJ0eTogXFwnJyArICgkbWlzc2luZ1Byb3BlcnR5KSArICdcXCcsIGRlcHNDb3VudDogJyArICgkZGVwcy5sZW5ndGgpICsgJywgZGVwczogXFwnJyArIChpdC51dGlsLmVzY2FwZVF1b3RlcygkZGVwcy5sZW5ndGggPT0gMSA/ICRkZXBzWzBdIDogJGRlcHMuam9pbihcIiwgXCIpKSkgKyAnXFwnIH0gJztcbiAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgaGF2ZSAnO1xuICAgICAgICAgICAgICAgIGlmICgkZGVwcy5sZW5ndGggPT0gMSkge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICdwcm9wZXJ0eSAnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRkZXBzWzBdKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAncHJvcGVydGllcyAnICsgKGl0LnV0aWwuZXNjYXBlUXVvdGVzKCRkZXBzLmpvaW4oXCIsIFwiKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdXQgKz0gJyB3aGVuIHByb3BlcnR5ICcgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5KSkgKyAnIGlzIHByZXNlbnRcXCcgJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB7fSAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgfSAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSAgICc7XG4gICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgICAgIG91dCArPSAnIGVsc2UgeyAnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpdC5lcnJvclBhdGggPSAkY3VycmVudEVycm9yUGF0aDtcbiAgdmFyICRjdXJyZW50QmFzZUlkID0gJGl0LmJhc2VJZDtcbiAgZm9yICh2YXIgJHByb3BlcnR5IGluICRzY2hlbWFEZXBzKSB7XG4gICAgdmFyICRzY2ggPSAkc2NoZW1hRGVwc1skcHJvcGVydHldO1xuICAgIGlmICgoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHNjaCA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkc2NoKS5sZW5ndGggPiAwKSB8fCAkc2NoID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHNjaCwgaXQuUlVMRVMuYWxsKSkpIHtcbiAgICAgIG91dCArPSAnICcgKyAoJG5leHRWYWxpZCkgKyAnID0gdHJ1ZTsgaWYgKCAnICsgKCRkYXRhKSArIChpdC51dGlsLmdldFByb3BlcnR5KCRwcm9wZXJ0eSkpICsgJyAhPT0gdW5kZWZpbmVkICc7XG4gICAgICBpZiAoJG93blByb3BlcnRpZXMpIHtcbiAgICAgICAgb3V0ICs9ICcgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKCcgKyAoJGRhdGEpICsgJywgXFwnJyArIChpdC51dGlsLmVzY2FwZVF1b3RlcygkcHJvcGVydHkpKSArICdcXCcpICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJykgeyAnO1xuICAgICAgJGl0LnNjaGVtYSA9ICRzY2g7XG4gICAgICAkaXQuc2NoZW1hUGF0aCA9ICRzY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgkcHJvcGVydHkpO1xuICAgICAgJGl0LmVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aCArICcvJyArIGl0LnV0aWwuZXNjYXBlRnJhZ21lbnQoJHByb3BlcnR5KTtcbiAgICAgIG91dCArPSAnICAnICsgKGl0LnZhbGlkYXRlKCRpdCkpICsgJyAnO1xuICAgICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgICAgb3V0ICs9ICcgfSAgJztcbiAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgIG91dCArPSAnIGlmICgnICsgKCRuZXh0VmFsaWQpICsgJykgeyAnO1xuICAgICAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgICAnICsgKCRjbG9zaW5nQnJhY2VzKSArICcgaWYgKCcgKyAoJGVycnMpICsgJyA9PSBlcnJvcnMpIHsnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX2VudW0oaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICR2YWxpZCA9ICd2YWxpZCcgKyAkbHZsO1xuICB2YXIgJGlzRGF0YSA9IGl0Lm9wdHMuJGRhdGEgJiYgJHNjaGVtYSAmJiAkc2NoZW1hLiRkYXRhLFxuICAgICRzY2hlbWFWYWx1ZTtcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyB2YXIgc2NoZW1hJyArICgkbHZsKSArICcgPSAnICsgKGl0LnV0aWwuZ2V0RGF0YSgkc2NoZW1hLiRkYXRhLCAkZGF0YUx2bCwgaXQuZGF0YVBhdGhBcnIpKSArICc7ICc7XG4gICAgJHNjaGVtYVZhbHVlID0gJ3NjaGVtYScgKyAkbHZsO1xuICB9IGVsc2Uge1xuICAgICRzY2hlbWFWYWx1ZSA9ICRzY2hlbWE7XG4gIH1cbiAgdmFyICRpID0gJ2knICsgJGx2bCxcbiAgICAkdlNjaGVtYSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgaWYgKCEkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyICcgKyAoJHZTY2hlbWEpICsgJyA9IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJzsnO1xuICB9XG4gIG91dCArPSAndmFyICcgKyAoJHZhbGlkKSArICc7JztcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyBpZiAoc2NoZW1hJyArICgkbHZsKSArICcgPT09IHVuZGVmaW5lZCkgJyArICgkdmFsaWQpICsgJyA9IHRydWU7IGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KHNjaGVtYScgKyAoJGx2bCkgKyAnKSkgJyArICgkdmFsaWQpICsgJyA9IGZhbHNlOyBlbHNlIHsnO1xuICB9XG4gIG91dCArPSAnJyArICgkdmFsaWQpICsgJyA9IGZhbHNlO2ZvciAodmFyICcgKyAoJGkpICsgJz0wOyAnICsgKCRpKSArICc8JyArICgkdlNjaGVtYSkgKyAnLmxlbmd0aDsgJyArICgkaSkgKyAnKyspIGlmIChlcXVhbCgnICsgKCRkYXRhKSArICcsICcgKyAoJHZTY2hlbWEpICsgJ1snICsgKCRpKSArICddKSkgeyAnICsgKCR2YWxpZCkgKyAnID0gdHJ1ZTsgYnJlYWs7IH0nO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnICB9ICAnO1xuICB9XG4gIG91dCArPSAnIGlmICghJyArICgkdmFsaWQpICsgJykgeyAgICc7XG4gIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgnZW51bScpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgYWxsb3dlZFZhbHVlczogc2NoZW1hJyArICgkbHZsKSArICcgfSAnO1xuICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgYmUgZXF1YWwgdG8gb25lIG9mIHRoZSBhbGxvd2VkIHZhbHVlc1xcJyAnO1xuICAgIH1cbiAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB9ICc7XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcge30gJztcbiAgfVxuICB2YXIgX19lcnIgPSBvdXQ7XG4gIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICB9XG4gIG91dCArPSAnIH0nO1xuICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgIG91dCArPSAnIGVsc2UgeyAnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX2Zvcm1hdChpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICBpZiAoaXQub3B0cy5mb3JtYXQgPT09IGZhbHNlKSB7XG4gICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgIG91dCArPSAnIGlmICh0cnVlKSB7ICc7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH1cbiAgdmFyICRpc0RhdGEgPSBpdC5vcHRzLiRkYXRhICYmICRzY2hlbWEgJiYgJHNjaGVtYS4kZGF0YSxcbiAgICAkc2NoZW1hVmFsdWU7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyIHNjaGVtYScgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLmdldERhdGEoJHNjaGVtYS4kZGF0YSwgJGRhdGFMdmwsIGl0LmRhdGFQYXRoQXJyKSkgKyAnOyAnO1xuICAgICRzY2hlbWFWYWx1ZSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgfSBlbHNlIHtcbiAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hO1xuICB9XG4gIHZhciAkdW5rbm93bkZvcm1hdHMgPSBpdC5vcHRzLnVua25vd25Gb3JtYXRzLFxuICAgICRhbGxvd1Vua25vd24gPSBBcnJheS5pc0FycmF5KCR1bmtub3duRm9ybWF0cyk7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgdmFyICRmb3JtYXQgPSAnZm9ybWF0JyArICRsdmwsXG4gICAgICAkaXNPYmplY3QgPSAnaXNPYmplY3QnICsgJGx2bCxcbiAgICAgICRmb3JtYXRUeXBlID0gJ2Zvcm1hdFR5cGUnICsgJGx2bDtcbiAgICBvdXQgKz0gJyB2YXIgJyArICgkZm9ybWF0KSArICcgPSBmb3JtYXRzWycgKyAoJHNjaGVtYVZhbHVlKSArICddOyB2YXIgJyArICgkaXNPYmplY3QpICsgJyA9IHR5cGVvZiAnICsgKCRmb3JtYXQpICsgJyA9PSBcXCdvYmplY3RcXCcgJiYgISgnICsgKCRmb3JtYXQpICsgJyBpbnN0YW5jZW9mIFJlZ0V4cCkgJiYgJyArICgkZm9ybWF0KSArICcudmFsaWRhdGU7IHZhciAnICsgKCRmb3JtYXRUeXBlKSArICcgPSAnICsgKCRpc09iamVjdCkgKyAnICYmICcgKyAoJGZvcm1hdCkgKyAnLnR5cGUgfHwgXFwnc3RyaW5nXFwnOyBpZiAoJyArICgkaXNPYmplY3QpICsgJykgeyAnO1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdmFyIGFzeW5jJyArICgkbHZsKSArICcgPSAnICsgKCRmb3JtYXQpICsgJy5hc3luYzsgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgJyArICgkZm9ybWF0KSArICcgPSAnICsgKCRmb3JtYXQpICsgJy52YWxpZGF0ZTsgfSBpZiAoICAnO1xuICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICBvdXQgKz0gJyAoJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9IFxcJ3N0cmluZ1xcJykgfHwgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgKCc7XG4gICAgaWYgKCR1bmtub3duRm9ybWF0cyAhPSAnaWdub3JlJykge1xuICAgICAgb3V0ICs9ICcgKCcgKyAoJHNjaGVtYVZhbHVlKSArICcgJiYgIScgKyAoJGZvcm1hdCkgKyAnICc7XG4gICAgICBpZiAoJGFsbG93VW5rbm93bikge1xuICAgICAgICBvdXQgKz0gJyAmJiBzZWxmLl9vcHRzLnVua25vd25Gb3JtYXRzLmluZGV4T2YoJyArICgkc2NoZW1hVmFsdWUpICsgJykgPT0gLTEgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnKSB8fCAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyAoJyArICgkZm9ybWF0KSArICcgJiYgJyArICgkZm9ybWF0VHlwZSkgKyAnID09IFxcJycgKyAoJHJ1bGVUeXBlKSArICdcXCcgJiYgISh0eXBlb2YgJyArICgkZm9ybWF0KSArICcgPT0gXFwnZnVuY3Rpb25cXCcgPyAnO1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgKGFzeW5jJyArICgkbHZsKSArICcgPyBhd2FpdCAnICsgKCRmb3JtYXQpICsgJygnICsgKCRkYXRhKSArICcpIDogJyArICgkZm9ybWF0KSArICcoJyArICgkZGF0YSkgKyAnKSkgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgJyArICgkZm9ybWF0KSArICcoJyArICgkZGF0YSkgKyAnKSAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyA6ICcgKyAoJGZvcm1hdCkgKyAnLnRlc3QoJyArICgkZGF0YSkgKyAnKSkpKSkgeyc7XG4gIH0gZWxzZSB7XG4gICAgdmFyICRmb3JtYXQgPSBpdC5mb3JtYXRzWyRzY2hlbWFdO1xuICAgIGlmICghJGZvcm1hdCkge1xuICAgICAgaWYgKCR1bmtub3duRm9ybWF0cyA9PSAnaWdub3JlJykge1xuICAgICAgICBpdC5sb2dnZXIud2FybigndW5rbm93biBmb3JtYXQgXCInICsgJHNjaGVtYSArICdcIiBpZ25vcmVkIGluIHNjaGVtYSBhdCBwYXRoIFwiJyArIGl0LmVyclNjaGVtYVBhdGggKyAnXCInKTtcbiAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICBvdXQgKz0gJyBpZiAodHJ1ZSkgeyAnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgICB9IGVsc2UgaWYgKCRhbGxvd1Vua25vd24gJiYgJHVua25vd25Gb3JtYXRzLmluZGV4T2YoJHNjaGVtYSkgPj0gMCkge1xuICAgICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgIG91dCArPSAnIGlmICh0cnVlKSB7ICc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBmb3JtYXQgXCInICsgJHNjaGVtYSArICdcIiBpcyB1c2VkIGluIHNjaGVtYSBhdCBwYXRoIFwiJyArIGl0LmVyclNjaGVtYVBhdGggKyAnXCInKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyICRpc09iamVjdCA9IHR5cGVvZiAkZm9ybWF0ID09ICdvYmplY3QnICYmICEoJGZvcm1hdCBpbnN0YW5jZW9mIFJlZ0V4cCkgJiYgJGZvcm1hdC52YWxpZGF0ZTtcbiAgICB2YXIgJGZvcm1hdFR5cGUgPSAkaXNPYmplY3QgJiYgJGZvcm1hdC50eXBlIHx8ICdzdHJpbmcnO1xuICAgIGlmICgkaXNPYmplY3QpIHtcbiAgICAgIHZhciAkYXN5bmMgPSAkZm9ybWF0LmFzeW5jID09PSB0cnVlO1xuICAgICAgJGZvcm1hdCA9ICRmb3JtYXQudmFsaWRhdGU7XG4gICAgfVxuICAgIGlmICgkZm9ybWF0VHlwZSAhPSAkcnVsZVR5cGUpIHtcbiAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgIG91dCArPSAnIGlmICh0cnVlKSB7ICc7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cbiAgICBpZiAoJGFzeW5jKSB7XG4gICAgICBpZiAoIWl0LmFzeW5jKSB0aHJvdyBuZXcgRXJyb3IoJ2FzeW5jIGZvcm1hdCBpbiBzeW5jIHNjaGVtYScpO1xuICAgICAgdmFyICRmb3JtYXRSZWYgPSAnZm9ybWF0cycgKyBpdC51dGlsLmdldFByb3BlcnR5KCRzY2hlbWEpICsgJy52YWxpZGF0ZSc7XG4gICAgICBvdXQgKz0gJyBpZiAoIShhd2FpdCAnICsgKCRmb3JtYXRSZWYpICsgJygnICsgKCRkYXRhKSArICcpKSkgeyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyBpZiAoISAnO1xuICAgICAgdmFyICRmb3JtYXRSZWYgPSAnZm9ybWF0cycgKyBpdC51dGlsLmdldFByb3BlcnR5KCRzY2hlbWEpO1xuICAgICAgaWYgKCRpc09iamVjdCkgJGZvcm1hdFJlZiArPSAnLnZhbGlkYXRlJztcbiAgICAgIGlmICh0eXBlb2YgJGZvcm1hdCA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG91dCArPSAnICcgKyAoJGZvcm1hdFJlZikgKyAnKCcgKyAoJGRhdGEpICsgJykgJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnICcgKyAoJGZvcm1hdFJlZikgKyAnLnRlc3QoJyArICgkZGF0YSkgKyAnKSAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcpIHsgJztcbiAgICB9XG4gIH1cbiAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdmb3JtYXQnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IGZvcm1hdDogICc7XG4gICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgIG91dCArPSAnJyArICgkc2NoZW1hVmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJycgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkc2NoZW1hKSk7XG4gICAgfVxuICAgIG91dCArPSAnICB9ICc7XG4gICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBtYXRjaCBmb3JtYXQgXCInO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICdcXCcgKyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICsgXFwnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArIChpdC51dGlsLmVzY2FwZVF1b3Rlcygkc2NoZW1hKSk7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJ1wiXFwnICc7XG4gICAgfVxuICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgIG91dCArPSAnICwgc2NoZW1hOiAgJztcbiAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgIG91dCArPSAndmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJycgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkc2NoZW1hKSk7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyAgICAgICAgICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB9ICc7XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcge30gJztcbiAgfVxuICB2YXIgX19lcnIgPSBvdXQ7XG4gIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICB9XG4gIG91dCArPSAnIH0gJztcbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9pZihpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJHZhbGlkID0gJ3ZhbGlkJyArICRsdmw7XG4gIHZhciAkZXJycyA9ICdlcnJzX18nICsgJGx2bDtcbiAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gICRpdC5sZXZlbCsrO1xuICB2YXIgJG5leHRWYWxpZCA9ICd2YWxpZCcgKyAkaXQubGV2ZWw7XG4gIHZhciAkdGhlblNjaCA9IGl0LnNjaGVtYVsndGhlbiddLFxuICAgICRlbHNlU2NoID0gaXQuc2NoZW1hWydlbHNlJ10sXG4gICAgJHRoZW5QcmVzZW50ID0gJHRoZW5TY2ggIT09IHVuZGVmaW5lZCAmJiAoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHRoZW5TY2ggPT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoJHRoZW5TY2gpLmxlbmd0aCA+IDApIHx8ICR0aGVuU2NoID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHRoZW5TY2gsIGl0LlJVTEVTLmFsbCkpLFxuICAgICRlbHNlUHJlc2VudCA9ICRlbHNlU2NoICE9PSB1bmRlZmluZWQgJiYgKGl0Lm9wdHMuc3RyaWN0S2V5d29yZHMgPyAodHlwZW9mICRlbHNlU2NoID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRlbHNlU2NoKS5sZW5ndGggPiAwKSB8fCAkZWxzZVNjaCA9PT0gZmFsc2UgOiBpdC51dGlsLnNjaGVtYUhhc1J1bGVzKCRlbHNlU2NoLCBpdC5SVUxFUy5hbGwpKSxcbiAgICAkY3VycmVudEJhc2VJZCA9ICRpdC5iYXNlSWQ7XG4gIGlmICgkdGhlblByZXNlbnQgfHwgJGVsc2VQcmVzZW50KSB7XG4gICAgdmFyICRpZkNsYXVzZTtcbiAgICAkaXQuY3JlYXRlRXJyb3JzID0gZmFsc2U7XG4gICAgJGl0LnNjaGVtYSA9ICRzY2hlbWE7XG4gICAgJGl0LnNjaGVtYVBhdGggPSAkc2NoZW1hUGF0aDtcbiAgICAkaXQuZXJyU2NoZW1hUGF0aCA9ICRlcnJTY2hlbWFQYXRoO1xuICAgIG91dCArPSAnIHZhciAnICsgKCRlcnJzKSArICcgPSBlcnJvcnM7IHZhciAnICsgKCR2YWxpZCkgKyAnID0gdHJ1ZTsgICc7XG4gICAgdmFyICR3YXNDb21wb3NpdGUgPSBpdC5jb21wb3NpdGVSdWxlO1xuICAgIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9IHRydWU7XG4gICAgb3V0ICs9ICcgICcgKyAoaXQudmFsaWRhdGUoJGl0KSkgKyAnICc7XG4gICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgICRpdC5jcmVhdGVFcnJvcnMgPSB0cnVlO1xuICAgIG91dCArPSAnICBlcnJvcnMgPSAnICsgKCRlcnJzKSArICc7IGlmICh2RXJyb3JzICE9PSBudWxsKSB7IGlmICgnICsgKCRlcnJzKSArICcpIHZFcnJvcnMubGVuZ3RoID0gJyArICgkZXJycykgKyAnOyBlbHNlIHZFcnJvcnMgPSBudWxsOyB9ICAnO1xuICAgIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9ICR3YXNDb21wb3NpdGU7XG4gICAgaWYgKCR0aGVuUHJlc2VudCkge1xuICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJG5leHRWYWxpZCkgKyAnKSB7ICAnO1xuICAgICAgJGl0LnNjaGVtYSA9IGl0LnNjaGVtYVsndGhlbiddO1xuICAgICAgJGl0LnNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgJy50aGVuJztcbiAgICAgICRpdC5lcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvdGhlbic7XG4gICAgICBvdXQgKz0gJyAgJyArIChpdC52YWxpZGF0ZSgkaXQpKSArICcgJztcbiAgICAgICRpdC5iYXNlSWQgPSAkY3VycmVudEJhc2VJZDtcbiAgICAgIG91dCArPSAnICcgKyAoJHZhbGlkKSArICcgPSAnICsgKCRuZXh0VmFsaWQpICsgJzsgJztcbiAgICAgIGlmICgkdGhlblByZXNlbnQgJiYgJGVsc2VQcmVzZW50KSB7XG4gICAgICAgICRpZkNsYXVzZSA9ICdpZkNsYXVzZScgKyAkbHZsO1xuICAgICAgICBvdXQgKz0gJyB2YXIgJyArICgkaWZDbGF1c2UpICsgJyA9IFxcJ3RoZW5cXCc7ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAkaWZDbGF1c2UgPSAnXFwndGhlblxcJyc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICBpZiAoJGVsc2VQcmVzZW50KSB7XG4gICAgICAgIG91dCArPSAnIGVsc2UgeyAnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyBpZiAoIScgKyAoJG5leHRWYWxpZCkgKyAnKSB7ICc7XG4gICAgfVxuICAgIGlmICgkZWxzZVByZXNlbnQpIHtcbiAgICAgICRpdC5zY2hlbWEgPSBpdC5zY2hlbWFbJ2Vsc2UnXTtcbiAgICAgICRpdC5zY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArICcuZWxzZSc7XG4gICAgICAkaXQuZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnL2Vsc2UnO1xuICAgICAgb3V0ICs9ICcgICcgKyAoaXQudmFsaWRhdGUoJGl0KSkgKyAnICc7XG4gICAgICAkaXQuYmFzZUlkID0gJGN1cnJlbnRCYXNlSWQ7XG4gICAgICBvdXQgKz0gJyAnICsgKCR2YWxpZCkgKyAnID0gJyArICgkbmV4dFZhbGlkKSArICc7ICc7XG4gICAgICBpZiAoJHRoZW5QcmVzZW50ICYmICRlbHNlUHJlc2VudCkge1xuICAgICAgICAkaWZDbGF1c2UgPSAnaWZDbGF1c2UnICsgJGx2bDtcbiAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJGlmQ2xhdXNlKSArICcgPSBcXCdlbHNlXFwnOyAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJGlmQ2xhdXNlID0gJ1xcJ2Vsc2VcXCcnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyBpZiAoIScgKyAoJHZhbGlkKSArICcpIHsgICB2YXIgZXJyID0gICAnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ2lmJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBmYWlsaW5nS2V5d29yZDogJyArICgkaWZDbGF1c2UpICsgJyB9ICc7XG4gICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgbWF0Y2ggXCJcXCcgKyAnICsgKCRpZkNsYXVzZSkgKyAnICsgXFwnXCIgc2NoZW1hXFwnICc7XG4gICAgICB9XG4gICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgfVxuICAgIG91dCArPSAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IodkVycm9ycyk7ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSB2RXJyb3JzOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICB9XG4gICAgfVxuICAgIG91dCArPSAnIH0gICAnO1xuICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgIG91dCArPSAnIGlmICh0cnVlKSB7ICc7XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX2l0ZW1zKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkdmFsaWQgPSAndmFsaWQnICsgJGx2bDtcbiAgdmFyICRlcnJzID0gJ2VycnNfXycgKyAkbHZsO1xuICB2YXIgJGl0ID0gaXQudXRpbC5jb3B5KGl0KTtcbiAgdmFyICRjbG9zaW5nQnJhY2VzID0gJyc7XG4gICRpdC5sZXZlbCsrO1xuICB2YXIgJG5leHRWYWxpZCA9ICd2YWxpZCcgKyAkaXQubGV2ZWw7XG4gIHZhciAkaWR4ID0gJ2knICsgJGx2bCxcbiAgICAkZGF0YU54dCA9ICRpdC5kYXRhTGV2ZWwgPSBpdC5kYXRhTGV2ZWwgKyAxLFxuICAgICRuZXh0RGF0YSA9ICdkYXRhJyArICRkYXRhTnh0LFxuICAgICRjdXJyZW50QmFzZUlkID0gaXQuYmFzZUlkO1xuICBvdXQgKz0gJ3ZhciAnICsgKCRlcnJzKSArICcgPSBlcnJvcnM7dmFyICcgKyAoJHZhbGlkKSArICc7JztcbiAgaWYgKEFycmF5LmlzQXJyYXkoJHNjaGVtYSkpIHtcbiAgICB2YXIgJGFkZGl0aW9uYWxJdGVtcyA9IGl0LnNjaGVtYS5hZGRpdGlvbmFsSXRlbXM7XG4gICAgaWYgKCRhZGRpdGlvbmFsSXRlbXMgPT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyAnICsgKCR2YWxpZCkgKyAnID0gJyArICgkZGF0YSkgKyAnLmxlbmd0aCA8PSAnICsgKCRzY2hlbWEubGVuZ3RoKSArICc7ICc7XG4gICAgICB2YXIgJGN1cnJFcnJTY2hlbWFQYXRoID0gJGVyclNjaGVtYVBhdGg7XG4gICAgICAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnL2FkZGl0aW9uYWxJdGVtcyc7XG4gICAgICBvdXQgKz0gJyAgaWYgKCEnICsgKCR2YWxpZCkgKyAnKSB7ICAgJztcbiAgICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ2FkZGl0aW9uYWxJdGVtcycpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgbGltaXQ6ICcgKyAoJHNjaGVtYS5sZW5ndGgpICsgJyB9ICc7XG4gICAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIE5PVCBoYXZlIG1vcmUgdGhhbiAnICsgKCRzY2hlbWEubGVuZ3RoKSArICcgaXRlbXNcXCcgJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IGZhbHNlICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICB9XG4gICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgICB9XG4gICAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgICAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIH0gJztcbiAgICAgICRlcnJTY2hlbWFQYXRoID0gJGN1cnJFcnJTY2hlbWFQYXRoO1xuICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgJGNsb3NpbmdCcmFjZXMgKz0gJ30nO1xuICAgICAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIGFycjEgPSAkc2NoZW1hO1xuICAgIGlmIChhcnIxKSB7XG4gICAgICB2YXIgJHNjaCwgJGkgPSAtMSxcbiAgICAgICAgbDEgPSBhcnIxLmxlbmd0aCAtIDE7XG4gICAgICB3aGlsZSAoJGkgPCBsMSkge1xuICAgICAgICAkc2NoID0gYXJyMVskaSArPSAxXTtcbiAgICAgICAgaWYgKChpdC5vcHRzLnN0cmljdEtleXdvcmRzID8gKHR5cGVvZiAkc2NoID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRzY2gpLmxlbmd0aCA+IDApIHx8ICRzY2ggPT09IGZhbHNlIDogaXQudXRpbC5zY2hlbWFIYXNSdWxlcygkc2NoLCBpdC5SVUxFUy5hbGwpKSkge1xuICAgICAgICAgIG91dCArPSAnICcgKyAoJG5leHRWYWxpZCkgKyAnID0gdHJ1ZTsgaWYgKCcgKyAoJGRhdGEpICsgJy5sZW5ndGggPiAnICsgKCRpKSArICcpIHsgJztcbiAgICAgICAgICB2YXIgJHBhc3NEYXRhID0gJGRhdGEgKyAnWycgKyAkaSArICddJztcbiAgICAgICAgICAkaXQuc2NoZW1hID0gJHNjaDtcbiAgICAgICAgICAkaXQuc2NoZW1hUGF0aCA9ICRzY2hlbWFQYXRoICsgJ1snICsgJGkgKyAnXSc7XG4gICAgICAgICAgJGl0LmVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aCArICcvJyArICRpO1xuICAgICAgICAgICRpdC5lcnJvclBhdGggPSBpdC51dGlsLmdldFBhdGhFeHByKGl0LmVycm9yUGF0aCwgJGksIGl0Lm9wdHMuanNvblBvaW50ZXJzLCB0cnVlKTtcbiAgICAgICAgICAkaXQuZGF0YVBhdGhBcnJbJGRhdGFOeHRdID0gJGk7XG4gICAgICAgICAgdmFyICRjb2RlID0gaXQudmFsaWRhdGUoJGl0KTtcbiAgICAgICAgICAkaXQuYmFzZUlkID0gJGN1cnJlbnRCYXNlSWQ7XG4gICAgICAgICAgaWYgKGl0LnV0aWwudmFyT2NjdXJlbmNlcygkY29kZSwgJG5leHREYXRhKSA8IDIpIHtcbiAgICAgICAgICAgIG91dCArPSAnICcgKyAoaXQudXRpbC52YXJSZXBsYWNlKCRjb2RlLCAkbmV4dERhdGEsICRwYXNzRGF0YSkpICsgJyAnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB2YXIgJyArICgkbmV4dERhdGEpICsgJyA9ICcgKyAoJHBhc3NEYXRhKSArICc7ICcgKyAoJGNvZGUpICsgJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyB9ICAnO1xuICAgICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkbmV4dFZhbGlkKSArICcpIHsgJztcbiAgICAgICAgICAgICRjbG9zaW5nQnJhY2VzICs9ICd9JztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiAkYWRkaXRpb25hbEl0ZW1zID09ICdvYmplY3QnICYmIChpdC5vcHRzLnN0cmljdEtleXdvcmRzID8gKHR5cGVvZiAkYWRkaXRpb25hbEl0ZW1zID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRhZGRpdGlvbmFsSXRlbXMpLmxlbmd0aCA+IDApIHx8ICRhZGRpdGlvbmFsSXRlbXMgPT09IGZhbHNlIDogaXQudXRpbC5zY2hlbWFIYXNSdWxlcygkYWRkaXRpb25hbEl0ZW1zLCBpdC5SVUxFUy5hbGwpKSkge1xuICAgICAgJGl0LnNjaGVtYSA9ICRhZGRpdGlvbmFsSXRlbXM7XG4gICAgICAkaXQuc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyAnLmFkZGl0aW9uYWxJdGVtcyc7XG4gICAgICAkaXQuZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnL2FkZGl0aW9uYWxJdGVtcyc7XG4gICAgICBvdXQgKz0gJyAnICsgKCRuZXh0VmFsaWQpICsgJyA9IHRydWU7IGlmICgnICsgKCRkYXRhKSArICcubGVuZ3RoID4gJyArICgkc2NoZW1hLmxlbmd0aCkgKyAnKSB7ICBmb3IgKHZhciAnICsgKCRpZHgpICsgJyA9ICcgKyAoJHNjaGVtYS5sZW5ndGgpICsgJzsgJyArICgkaWR4KSArICcgPCAnICsgKCRkYXRhKSArICcubGVuZ3RoOyAnICsgKCRpZHgpICsgJysrKSB7ICc7XG4gICAgICAkaXQuZXJyb3JQYXRoID0gaXQudXRpbC5nZXRQYXRoRXhwcihpdC5lcnJvclBhdGgsICRpZHgsIGl0Lm9wdHMuanNvblBvaW50ZXJzLCB0cnVlKTtcbiAgICAgIHZhciAkcGFzc0RhdGEgPSAkZGF0YSArICdbJyArICRpZHggKyAnXSc7XG4gICAgICAkaXQuZGF0YVBhdGhBcnJbJGRhdGFOeHRdID0gJGlkeDtcbiAgICAgIHZhciAkY29kZSA9IGl0LnZhbGlkYXRlKCRpdCk7XG4gICAgICAkaXQuYmFzZUlkID0gJGN1cnJlbnRCYXNlSWQ7XG4gICAgICBpZiAoaXQudXRpbC52YXJPY2N1cmVuY2VzKCRjb2RlLCAkbmV4dERhdGEpIDwgMikge1xuICAgICAgICBvdXQgKz0gJyAnICsgKGl0LnV0aWwudmFyUmVwbGFjZSgkY29kZSwgJG5leHREYXRhLCAkcGFzc0RhdGEpKSArICcgJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHZhciAnICsgKCRuZXh0RGF0YSkgKyAnID0gJyArICgkcGFzc0RhdGEpICsgJzsgJyArICgkY29kZSkgKyAnICc7XG4gICAgICB9XG4gICAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgICBvdXQgKz0gJyBpZiAoIScgKyAoJG5leHRWYWxpZCkgKyAnKSBicmVhazsgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIH0gfSAgJztcbiAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgIG91dCArPSAnIGlmICgnICsgKCRuZXh0VmFsaWQpICsgJykgeyAnO1xuICAgICAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKChpdC5vcHRzLnN0cmljdEtleXdvcmRzID8gKHR5cGVvZiAkc2NoZW1hID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRzY2hlbWEpLmxlbmd0aCA+IDApIHx8ICRzY2hlbWEgPT09IGZhbHNlIDogaXQudXRpbC5zY2hlbWFIYXNSdWxlcygkc2NoZW1hLCBpdC5SVUxFUy5hbGwpKSkge1xuICAgICRpdC5zY2hlbWEgPSAkc2NoZW1hO1xuICAgICRpdC5zY2hlbWFQYXRoID0gJHNjaGVtYVBhdGg7XG4gICAgJGl0LmVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aDtcbiAgICBvdXQgKz0gJyAgZm9yICh2YXIgJyArICgkaWR4KSArICcgPSAnICsgKDApICsgJzsgJyArICgkaWR4KSArICcgPCAnICsgKCRkYXRhKSArICcubGVuZ3RoOyAnICsgKCRpZHgpICsgJysrKSB7ICc7XG4gICAgJGl0LmVycm9yUGF0aCA9IGl0LnV0aWwuZ2V0UGF0aEV4cHIoaXQuZXJyb3JQYXRoLCAkaWR4LCBpdC5vcHRzLmpzb25Qb2ludGVycywgdHJ1ZSk7XG4gICAgdmFyICRwYXNzRGF0YSA9ICRkYXRhICsgJ1snICsgJGlkeCArICddJztcbiAgICAkaXQuZGF0YVBhdGhBcnJbJGRhdGFOeHRdID0gJGlkeDtcbiAgICB2YXIgJGNvZGUgPSBpdC52YWxpZGF0ZSgkaXQpO1xuICAgICRpdC5iYXNlSWQgPSAkY3VycmVudEJhc2VJZDtcbiAgICBpZiAoaXQudXRpbC52YXJPY2N1cmVuY2VzKCRjb2RlLCAkbmV4dERhdGEpIDwgMikge1xuICAgICAgb3V0ICs9ICcgJyArIChpdC51dGlsLnZhclJlcGxhY2UoJGNvZGUsICRuZXh0RGF0YSwgJHBhc3NEYXRhKSkgKyAnICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhciAnICsgKCRuZXh0RGF0YSkgKyAnID0gJyArICgkcGFzc0RhdGEpICsgJzsgJyArICgkY29kZSkgKyAnICc7XG4gICAgfVxuICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICBvdXQgKz0gJyBpZiAoIScgKyAoJG5leHRWYWxpZCkgKyAnKSBicmVhazsgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSc7XG4gIH1cbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyAnICsgKCRjbG9zaW5nQnJhY2VzKSArICcgaWYgKCcgKyAoJGVycnMpICsgJyA9PSBlcnJvcnMpIHsnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX19saW1pdChpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGVycm9yS2V5d29yZDtcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICRpc0RhdGEgPSBpdC5vcHRzLiRkYXRhICYmICRzY2hlbWEgJiYgJHNjaGVtYS4kZGF0YSxcbiAgICAkc2NoZW1hVmFsdWU7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyIHNjaGVtYScgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLmdldERhdGEoJHNjaGVtYS4kZGF0YSwgJGRhdGFMdmwsIGl0LmRhdGFQYXRoQXJyKSkgKyAnOyAnO1xuICAgICRzY2hlbWFWYWx1ZSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgfSBlbHNlIHtcbiAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hO1xuICB9XG4gIHZhciAkaXNNYXggPSAka2V5d29yZCA9PSAnbWF4aW11bScsXG4gICAgJGV4Y2x1c2l2ZUtleXdvcmQgPSAkaXNNYXggPyAnZXhjbHVzaXZlTWF4aW11bScgOiAnZXhjbHVzaXZlTWluaW11bScsXG4gICAgJHNjaGVtYUV4Y2wgPSBpdC5zY2hlbWFbJGV4Y2x1c2l2ZUtleXdvcmRdLFxuICAgICRpc0RhdGFFeGNsID0gaXQub3B0cy4kZGF0YSAmJiAkc2NoZW1hRXhjbCAmJiAkc2NoZW1hRXhjbC4kZGF0YSxcbiAgICAkb3AgPSAkaXNNYXggPyAnPCcgOiAnPicsXG4gICAgJG5vdE9wID0gJGlzTWF4ID8gJz4nIDogJzwnLFxuICAgICRlcnJvcktleXdvcmQgPSB1bmRlZmluZWQ7XG4gIGlmICghKCRpc0RhdGEgfHwgdHlwZW9mICRzY2hlbWEgPT0gJ251bWJlcicgfHwgJHNjaGVtYSA9PT0gdW5kZWZpbmVkKSkge1xuICAgIHRocm93IG5ldyBFcnJvcigka2V5d29yZCArICcgbXVzdCBiZSBudW1iZXInKTtcbiAgfVxuICBpZiAoISgkaXNEYXRhRXhjbCB8fCAkc2NoZW1hRXhjbCA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiAkc2NoZW1hRXhjbCA9PSAnbnVtYmVyJyB8fCB0eXBlb2YgJHNjaGVtYUV4Y2wgPT0gJ2Jvb2xlYW4nKSkge1xuICAgIHRocm93IG5ldyBFcnJvcigkZXhjbHVzaXZlS2V5d29yZCArICcgbXVzdCBiZSBudW1iZXIgb3IgYm9vbGVhbicpO1xuICB9XG4gIGlmICgkaXNEYXRhRXhjbCkge1xuICAgIHZhciAkc2NoZW1hVmFsdWVFeGNsID0gaXQudXRpbC5nZXREYXRhKCRzY2hlbWFFeGNsLiRkYXRhLCAkZGF0YUx2bCwgaXQuZGF0YVBhdGhBcnIpLFxuICAgICAgJGV4Y2x1c2l2ZSA9ICdleGNsdXNpdmUnICsgJGx2bCxcbiAgICAgICRleGNsVHlwZSA9ICdleGNsVHlwZScgKyAkbHZsLFxuICAgICAgJGV4Y2xJc051bWJlciA9ICdleGNsSXNOdW1iZXInICsgJGx2bCxcbiAgICAgICRvcEV4cHIgPSAnb3AnICsgJGx2bCxcbiAgICAgICRvcFN0ciA9ICdcXCcgKyAnICsgJG9wRXhwciArICcgKyBcXCcnO1xuICAgIG91dCArPSAnIHZhciBzY2hlbWFFeGNsJyArICgkbHZsKSArICcgPSAnICsgKCRzY2hlbWFWYWx1ZUV4Y2wpICsgJzsgJztcbiAgICAkc2NoZW1hVmFsdWVFeGNsID0gJ3NjaGVtYUV4Y2wnICsgJGx2bDtcbiAgICBvdXQgKz0gJyB2YXIgJyArICgkZXhjbHVzaXZlKSArICc7IHZhciAnICsgKCRleGNsVHlwZSkgKyAnID0gdHlwZW9mICcgKyAoJHNjaGVtYVZhbHVlRXhjbCkgKyAnOyBpZiAoJyArICgkZXhjbFR5cGUpICsgJyAhPSBcXCdib29sZWFuXFwnICYmICcgKyAoJGV4Y2xUeXBlKSArICcgIT0gXFwndW5kZWZpbmVkXFwnICYmICcgKyAoJGV4Y2xUeXBlKSArICcgIT0gXFwnbnVtYmVyXFwnKSB7ICc7XG4gICAgdmFyICRlcnJvcktleXdvcmQgPSAkZXhjbHVzaXZlS2V5d29yZDtcbiAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gICAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgkZXJyb3JLZXl3b3JkIHx8ICdfZXhjbHVzaXZlTGltaXQnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7fSAnO1xuICAgICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnJyArICgkZXhjbHVzaXZlS2V5d29yZCkgKyAnIHNob3VsZCBiZSBib29sZWFuXFwnICc7XG4gICAgICB9XG4gICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgfVxuICAgIHZhciBfX2VyciA9IG91dDtcbiAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSBlbHNlIGlmICggJztcbiAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgb3V0ICs9ICcgKCcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPSBcXCdudW1iZXJcXCcpIHx8ICc7XG4gICAgfVxuICAgIG91dCArPSAnICcgKyAoJGV4Y2xUeXBlKSArICcgPT0gXFwnbnVtYmVyXFwnID8gKCAoJyArICgkZXhjbHVzaXZlKSArICcgPSAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnID09PSB1bmRlZmluZWQgfHwgJyArICgkc2NoZW1hVmFsdWVFeGNsKSArICcgJyArICgkb3ApICsgJz0gJyArICgkc2NoZW1hVmFsdWUpICsgJykgPyAnICsgKCRkYXRhKSArICcgJyArICgkbm90T3ApICsgJz0gJyArICgkc2NoZW1hVmFsdWVFeGNsKSArICcgOiAnICsgKCRkYXRhKSArICcgJyArICgkbm90T3ApICsgJyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICkgOiAoICgnICsgKCRleGNsdXNpdmUpICsgJyA9ICcgKyAoJHNjaGVtYVZhbHVlRXhjbCkgKyAnID09PSB0cnVlKSA/ICcgKyAoJGRhdGEpICsgJyAnICsgKCRub3RPcCkgKyAnPSAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnIDogJyArICgkZGF0YSkgKyAnICcgKyAoJG5vdE9wKSArICcgJyArICgkc2NoZW1hVmFsdWUpICsgJyApIHx8ICcgKyAoJGRhdGEpICsgJyAhPT0gJyArICgkZGF0YSkgKyAnKSB7IHZhciBvcCcgKyAoJGx2bCkgKyAnID0gJyArICgkZXhjbHVzaXZlKSArICcgPyBcXCcnICsgKCRvcCkgKyAnXFwnIDogXFwnJyArICgkb3ApICsgJz1cXCc7ICc7XG4gICAgaWYgKCRzY2hlbWEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgJGVycm9yS2V5d29yZCA9ICRleGNsdXNpdmVLZXl3b3JkO1xuICAgICAgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGV4Y2x1c2l2ZUtleXdvcmQ7XG4gICAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hVmFsdWVFeGNsO1xuICAgICAgJGlzRGF0YSA9ICRpc0RhdGFFeGNsO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgJGV4Y2xJc051bWJlciA9IHR5cGVvZiAkc2NoZW1hRXhjbCA9PSAnbnVtYmVyJyxcbiAgICAgICRvcFN0ciA9ICRvcDtcbiAgICBpZiAoJGV4Y2xJc051bWJlciAmJiAkaXNEYXRhKSB7XG4gICAgICB2YXIgJG9wRXhwciA9ICdcXCcnICsgJG9wU3RyICsgJ1xcJyc7XG4gICAgICBvdXQgKz0gJyBpZiAoICc7XG4gICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICBvdXQgKz0gJyAoJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9IFxcJ251bWJlclxcJykgfHwgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnICggJyArICgkc2NoZW1hVmFsdWUpICsgJyA9PT0gdW5kZWZpbmVkIHx8ICcgKyAoJHNjaGVtYUV4Y2wpICsgJyAnICsgKCRvcCkgKyAnPSAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnID8gJyArICgkZGF0YSkgKyAnICcgKyAoJG5vdE9wKSArICc9ICcgKyAoJHNjaGVtYUV4Y2wpICsgJyA6ICcgKyAoJGRhdGEpICsgJyAnICsgKCRub3RPcCkgKyAnICcgKyAoJHNjaGVtYVZhbHVlKSArICcgKSB8fCAnICsgKCRkYXRhKSArICcgIT09ICcgKyAoJGRhdGEpICsgJykgeyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoJGV4Y2xJc051bWJlciAmJiAkc2NoZW1hID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgJGV4Y2x1c2l2ZSA9IHRydWU7XG4gICAgICAgICRlcnJvcktleXdvcmQgPSAkZXhjbHVzaXZlS2V5d29yZDtcbiAgICAgICAgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGV4Y2x1c2l2ZUtleXdvcmQ7XG4gICAgICAgICRzY2hlbWFWYWx1ZSA9ICRzY2hlbWFFeGNsO1xuICAgICAgICAkbm90T3AgKz0gJz0nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCRleGNsSXNOdW1iZXIpICRzY2hlbWFWYWx1ZSA9IE1hdGhbJGlzTWF4ID8gJ21pbicgOiAnbWF4J10oJHNjaGVtYUV4Y2wsICRzY2hlbWEpO1xuICAgICAgICBpZiAoJHNjaGVtYUV4Y2wgPT09ICgkZXhjbElzTnVtYmVyID8gJHNjaGVtYVZhbHVlIDogdHJ1ZSkpIHtcbiAgICAgICAgICAkZXhjbHVzaXZlID0gdHJ1ZTtcbiAgICAgICAgICAkZXJyb3JLZXl3b3JkID0gJGV4Y2x1c2l2ZUtleXdvcmQ7XG4gICAgICAgICAgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGV4Y2x1c2l2ZUtleXdvcmQ7XG4gICAgICAgICAgJG5vdE9wICs9ICc9JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAkZXhjbHVzaXZlID0gZmFsc2U7XG4gICAgICAgICAgJG9wU3RyICs9ICc9JztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFyICRvcEV4cHIgPSAnXFwnJyArICRvcFN0ciArICdcXCcnO1xuICAgICAgb3V0ICs9ICcgaWYgKCAnO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICcgKCcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPSBcXCdudW1iZXJcXCcpIHx8ICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyAnICsgKCRkYXRhKSArICcgJyArICgkbm90T3ApICsgJyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnIHx8ICcgKyAoJGRhdGEpICsgJyAhPT0gJyArICgkZGF0YSkgKyAnKSB7ICc7XG4gICAgfVxuICB9XG4gICRlcnJvcktleXdvcmQgPSAkZXJyb3JLZXl3b3JkIHx8ICRrZXl3b3JkO1xuICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJGVycm9yS2V5d29yZCB8fCAnX2xpbWl0JykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBjb21wYXJpc29uOiAnICsgKCRvcEV4cHIpICsgJywgbGltaXQ6ICcgKyAoJHNjaGVtYVZhbHVlKSArICcsIGV4Y2x1c2l2ZTogJyArICgkZXhjbHVzaXZlKSArICcgfSAnO1xuICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgYmUgJyArICgkb3BTdHIpICsgJyAnO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICdcXCcgKyAnICsgKCRzY2hlbWFWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJycgKyAoJHNjaGVtYVZhbHVlKSArICdcXCcnO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICBvdXQgKz0gJyAsIHNjaGVtYTogICc7XG4gICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICBvdXQgKz0gJ3ZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKCRzY2hlbWEpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgICAgICAgICAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHt9ICc7XG4gIH1cbiAgdmFyIF9fZXJyID0gb3V0O1xuICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgfVxuICBvdXQgKz0gJyB9ICc7XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfX2xpbWl0SXRlbXMoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRlcnJvcktleXdvcmQ7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkaXNEYXRhID0gaXQub3B0cy4kZGF0YSAmJiAkc2NoZW1hICYmICRzY2hlbWEuJGRhdGEsXG4gICAgJHNjaGVtYVZhbHVlO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnIHZhciBzY2hlbWEnICsgKCRsdmwpICsgJyA9ICcgKyAoaXQudXRpbC5nZXREYXRhKCRzY2hlbWEuJGRhdGEsICRkYXRhTHZsLCBpdC5kYXRhUGF0aEFycikpICsgJzsgJztcbiAgICAkc2NoZW1hVmFsdWUgPSAnc2NoZW1hJyArICRsdmw7XG4gIH0gZWxzZSB7XG4gICAgJHNjaGVtYVZhbHVlID0gJHNjaGVtYTtcbiAgfVxuICBpZiAoISgkaXNEYXRhIHx8IHR5cGVvZiAkc2NoZW1hID09ICdudW1iZXInKSkge1xuICAgIHRocm93IG5ldyBFcnJvcigka2V5d29yZCArICcgbXVzdCBiZSBudW1iZXInKTtcbiAgfVxuICB2YXIgJG9wID0gJGtleXdvcmQgPT0gJ21heEl0ZW1zJyA/ICc+JyA6ICc8JztcbiAgb3V0ICs9ICdpZiAoICc7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgKCcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPSBcXCdudW1iZXJcXCcpIHx8ICc7XG4gIH1cbiAgb3V0ICs9ICcgJyArICgkZGF0YSkgKyAnLmxlbmd0aCAnICsgKCRvcCkgKyAnICcgKyAoJHNjaGVtYVZhbHVlKSArICcpIHsgJztcbiAgdmFyICRlcnJvcktleXdvcmQgPSAka2V5d29yZDtcbiAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCRlcnJvcktleXdvcmQgfHwgJ19saW1pdEl0ZW1zJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBsaW1pdDogJyArICgkc2NoZW1hVmFsdWUpICsgJyB9ICc7XG4gICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBOT1QgaGF2ZSAnO1xuICAgICAgaWYgKCRrZXl3b3JkID09ICdtYXhJdGVtcycpIHtcbiAgICAgICAgb3V0ICs9ICdtb3JlJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnZmV3ZXInO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgdGhhbiAnO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICdcXCcgKyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICsgXFwnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArICgkc2NoZW1hKTtcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIGl0ZW1zXFwnICc7XG4gICAgfVxuICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgIG91dCArPSAnICwgc2NoZW1hOiAgJztcbiAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgIG91dCArPSAndmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJycgKyAoJHNjaGVtYSk7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyAgICAgICAgICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB9ICc7XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcge30gJztcbiAgfVxuICB2YXIgX19lcnIgPSBvdXQ7XG4gIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICB9XG4gIG91dCArPSAnfSAnO1xuICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgIG91dCArPSAnIGVsc2UgeyAnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX19saW1pdExlbmd0aChpdCwgJGtleXdvcmQsICRydWxlVHlwZSkge1xuICB2YXIgb3V0ID0gJyAnO1xuICB2YXIgJGx2bCA9IGl0LmxldmVsO1xuICB2YXIgJGRhdGFMdmwgPSBpdC5kYXRhTGV2ZWw7XG4gIHZhciAkc2NoZW1hID0gaXQuc2NoZW1hWyRrZXl3b3JkXTtcbiAgdmFyICRzY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArIGl0LnV0aWwuZ2V0UHJvcGVydHkoJGtleXdvcmQpO1xuICB2YXIgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy8nICsgJGtleXdvcmQ7XG4gIHZhciAkYnJlYWtPbkVycm9yID0gIWl0Lm9wdHMuYWxsRXJyb3JzO1xuICB2YXIgJGVycm9yS2V5d29yZDtcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICRpc0RhdGEgPSBpdC5vcHRzLiRkYXRhICYmICRzY2hlbWEgJiYgJHNjaGVtYS4kZGF0YSxcbiAgICAkc2NoZW1hVmFsdWU7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyIHNjaGVtYScgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLmdldERhdGEoJHNjaGVtYS4kZGF0YSwgJGRhdGFMdmwsIGl0LmRhdGFQYXRoQXJyKSkgKyAnOyAnO1xuICAgICRzY2hlbWFWYWx1ZSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgfSBlbHNlIHtcbiAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hO1xuICB9XG4gIGlmICghKCRpc0RhdGEgfHwgdHlwZW9mICRzY2hlbWEgPT0gJ251bWJlcicpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCRrZXl3b3JkICsgJyBtdXN0IGJlIG51bWJlcicpO1xuICB9XG4gIHZhciAkb3AgPSAka2V5d29yZCA9PSAnbWF4TGVuZ3RoJyA/ICc+JyA6ICc8JztcbiAgb3V0ICs9ICdpZiAoICc7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgKCcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPSBcXCdudW1iZXJcXCcpIHx8ICc7XG4gIH1cbiAgaWYgKGl0Lm9wdHMudW5pY29kZSA9PT0gZmFsc2UpIHtcbiAgICBvdXQgKz0gJyAnICsgKCRkYXRhKSArICcubGVuZ3RoICc7XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcgdWNzMmxlbmd0aCgnICsgKCRkYXRhKSArICcpICc7XG4gIH1cbiAgb3V0ICs9ICcgJyArICgkb3ApICsgJyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnKSB7ICc7XG4gIHZhciAkZXJyb3JLZXl3b3JkID0gJGtleXdvcmQ7XG4gIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgkZXJyb3JLZXl3b3JkIHx8ICdfbGltaXRMZW5ndGgnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IGxpbWl0OiAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnIH0gJztcbiAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIE5PVCBiZSAnO1xuICAgICAgaWYgKCRrZXl3b3JkID09ICdtYXhMZW5ndGgnKSB7XG4gICAgICAgIG91dCArPSAnbG9uZ2VyJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnc2hvcnRlcic7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB0aGFuICc7XG4gICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICBvdXQgKz0gJ1xcJyArICcgKyAoJHNjaGVtYVZhbHVlKSArICcgKyBcXCcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKCRzY2hlbWEpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgY2hhcmFjdGVyc1xcJyAnO1xuICAgIH1cbiAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICBvdXQgKz0gJyAsIHNjaGVtYTogICc7XG4gICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICBvdXQgKz0gJ3ZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKCRzY2hlbWEpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgICAgICAgICAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHt9ICc7XG4gIH1cbiAgdmFyIF9fZXJyID0gb3V0O1xuICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgfVxuICBvdXQgKz0gJ30gJztcbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9fbGltaXRQcm9wZXJ0aWVzKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZXJyb3JLZXl3b3JkO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJGlzRGF0YSA9IGl0Lm9wdHMuJGRhdGEgJiYgJHNjaGVtYSAmJiAkc2NoZW1hLiRkYXRhLFxuICAgICRzY2hlbWFWYWx1ZTtcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyB2YXIgc2NoZW1hJyArICgkbHZsKSArICcgPSAnICsgKGl0LnV0aWwuZ2V0RGF0YSgkc2NoZW1hLiRkYXRhLCAkZGF0YUx2bCwgaXQuZGF0YVBhdGhBcnIpKSArICc7ICc7XG4gICAgJHNjaGVtYVZhbHVlID0gJ3NjaGVtYScgKyAkbHZsO1xuICB9IGVsc2Uge1xuICAgICRzY2hlbWFWYWx1ZSA9ICRzY2hlbWE7XG4gIH1cbiAgaWYgKCEoJGlzRGF0YSB8fCB0eXBlb2YgJHNjaGVtYSA9PSAnbnVtYmVyJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJGtleXdvcmQgKyAnIG11c3QgYmUgbnVtYmVyJyk7XG4gIH1cbiAgdmFyICRvcCA9ICRrZXl3b3JkID09ICdtYXhQcm9wZXJ0aWVzJyA/ICc+JyA6ICc8JztcbiAgb3V0ICs9ICdpZiAoICc7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgKCcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgJyArICgkc2NoZW1hVmFsdWUpICsgJyAhPSBcXCdudW1iZXJcXCcpIHx8ICc7XG4gIH1cbiAgb3V0ICs9ICcgT2JqZWN0LmtleXMoJyArICgkZGF0YSkgKyAnKS5sZW5ndGggJyArICgkb3ApICsgJyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnKSB7ICc7XG4gIHZhciAkZXJyb3JLZXl3b3JkID0gJGtleXdvcmQ7XG4gIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgkZXJyb3JLZXl3b3JkIHx8ICdfbGltaXRQcm9wZXJ0aWVzJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBsaW1pdDogJyArICgkc2NoZW1hVmFsdWUpICsgJyB9ICc7XG4gICAgaWYgKGl0Lm9wdHMubWVzc2FnZXMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBOT1QgaGF2ZSAnO1xuICAgICAgaWYgKCRrZXl3b3JkID09ICdtYXhQcm9wZXJ0aWVzJykge1xuICAgICAgICBvdXQgKz0gJ21vcmUnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICdmZXdlcic7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB0aGFuICc7XG4gICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICBvdXQgKz0gJ1xcJyArICcgKyAoJHNjaGVtYVZhbHVlKSArICcgKyBcXCcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKCRzY2hlbWEpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgcHJvcGVydGllc1xcJyAnO1xuICAgIH1cbiAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICBvdXQgKz0gJyAsIHNjaGVtYTogICc7XG4gICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICBvdXQgKz0gJ3ZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKCRzY2hlbWEpO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgICAgICAgICAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHt9ICc7XG4gIH1cbiAgdmFyIF9fZXJyID0gb3V0O1xuICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgfVxuICBvdXQgKz0gJ30gJztcbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyBlbHNlIHsgJztcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZW5lcmF0ZV9tdWx0aXBsZU9mKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkaXNEYXRhID0gaXQub3B0cy4kZGF0YSAmJiAkc2NoZW1hICYmICRzY2hlbWEuJGRhdGEsXG4gICAgJHNjaGVtYVZhbHVlO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnIHZhciBzY2hlbWEnICsgKCRsdmwpICsgJyA9ICcgKyAoaXQudXRpbC5nZXREYXRhKCRzY2hlbWEuJGRhdGEsICRkYXRhTHZsLCBpdC5kYXRhUGF0aEFycikpICsgJzsgJztcbiAgICAkc2NoZW1hVmFsdWUgPSAnc2NoZW1hJyArICRsdmw7XG4gIH0gZWxzZSB7XG4gICAgJHNjaGVtYVZhbHVlID0gJHNjaGVtYTtcbiAgfVxuICBpZiAoISgkaXNEYXRhIHx8IHR5cGVvZiAkc2NoZW1hID09ICdudW1iZXInKSkge1xuICAgIHRocm93IG5ldyBFcnJvcigka2V5d29yZCArICcgbXVzdCBiZSBudW1iZXInKTtcbiAgfVxuICBvdXQgKz0gJ3ZhciBkaXZpc2lvbicgKyAoJGx2bCkgKyAnO2lmICgnO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnICcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT09IHVuZGVmaW5lZCAmJiAoIHR5cGVvZiAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9IFxcJ251bWJlclxcJyB8fCAnO1xuICB9XG4gIG91dCArPSAnIChkaXZpc2lvbicgKyAoJGx2bCkgKyAnID0gJyArICgkZGF0YSkgKyAnIC8gJyArICgkc2NoZW1hVmFsdWUpICsgJywgJztcbiAgaWYgKGl0Lm9wdHMubXVsdGlwbGVPZlByZWNpc2lvbikge1xuICAgIG91dCArPSAnIE1hdGguYWJzKE1hdGgucm91bmQoZGl2aXNpb24nICsgKCRsdmwpICsgJykgLSBkaXZpc2lvbicgKyAoJGx2bCkgKyAnKSA+IDFlLScgKyAoaXQub3B0cy5tdWx0aXBsZU9mUHJlY2lzaW9uKSArICcgJztcbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyBkaXZpc2lvbicgKyAoJGx2bCkgKyAnICE9PSBwYXJzZUludChkaXZpc2lvbicgKyAoJGx2bCkgKyAnKSAnO1xuICB9XG4gIG91dCArPSAnICkgJztcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyAgKSAgJztcbiAgfVxuICBvdXQgKz0gJyApIHsgICAnO1xuICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ211bHRpcGxlT2YnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IG11bHRpcGxlT2Y6ICcgKyAoJHNjaGVtYVZhbHVlKSArICcgfSAnO1xuICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgYmUgbXVsdGlwbGUgb2YgJztcbiAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgIG91dCArPSAnXFwnICsgJyArICgkc2NoZW1hVmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKCRzY2hlbWFWYWx1ZSkgKyAnXFwnJztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6ICAnO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICd2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArICgkc2NoZW1hKTtcbiAgICAgIH1cbiAgICAgIG91dCArPSAnICAgICAgICAgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gJztcbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB7fSAnO1xuICB9XG4gIHZhciBfX2VyciA9IG91dDtcbiAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gIH1cbiAgb3V0ICs9ICd9ICc7XG4gIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfbm90KGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkZXJycyA9ICdlcnJzX18nICsgJGx2bDtcbiAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gICRpdC5sZXZlbCsrO1xuICB2YXIgJG5leHRWYWxpZCA9ICd2YWxpZCcgKyAkaXQubGV2ZWw7XG4gIGlmICgoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHNjaGVtYSA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkc2NoZW1hKS5sZW5ndGggPiAwKSB8fCAkc2NoZW1hID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHNjaGVtYSwgaXQuUlVMRVMuYWxsKSkpIHtcbiAgICAkaXQuc2NoZW1hID0gJHNjaGVtYTtcbiAgICAkaXQuc2NoZW1hUGF0aCA9ICRzY2hlbWFQYXRoO1xuICAgICRpdC5lcnJTY2hlbWFQYXRoID0gJGVyclNjaGVtYVBhdGg7XG4gICAgb3V0ICs9ICcgdmFyICcgKyAoJGVycnMpICsgJyA9IGVycm9yczsgICc7XG4gICAgdmFyICR3YXNDb21wb3NpdGUgPSBpdC5jb21wb3NpdGVSdWxlO1xuICAgIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9IHRydWU7XG4gICAgJGl0LmNyZWF0ZUVycm9ycyA9IGZhbHNlO1xuICAgIHZhciAkYWxsRXJyb3JzT3B0aW9uO1xuICAgIGlmICgkaXQub3B0cy5hbGxFcnJvcnMpIHtcbiAgICAgICRhbGxFcnJvcnNPcHRpb24gPSAkaXQub3B0cy5hbGxFcnJvcnM7XG4gICAgICAkaXQub3B0cy5hbGxFcnJvcnMgPSBmYWxzZTtcbiAgICB9XG4gICAgb3V0ICs9ICcgJyArIChpdC52YWxpZGF0ZSgkaXQpKSArICcgJztcbiAgICAkaXQuY3JlYXRlRXJyb3JzID0gdHJ1ZTtcbiAgICBpZiAoJGFsbEVycm9yc09wdGlvbikgJGl0Lm9wdHMuYWxsRXJyb3JzID0gJGFsbEVycm9yc09wdGlvbjtcbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSAkd2FzQ29tcG9zaXRlO1xuICAgIG91dCArPSAnIGlmICgnICsgKCRuZXh0VmFsaWQpICsgJykgeyAgICc7XG4gICAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ25vdCcpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHt9ICc7XG4gICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgTk9UIGJlIHZhbGlkXFwnICc7XG4gICAgICB9XG4gICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgfVxuICAgIHZhciBfX2VyciA9IG91dDtcbiAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSBlbHNlIHsgIGVycm9ycyA9ICcgKyAoJGVycnMpICsgJzsgaWYgKHZFcnJvcnMgIT09IG51bGwpIHsgaWYgKCcgKyAoJGVycnMpICsgJykgdkVycm9ycy5sZW5ndGggPSAnICsgKCRlcnJzKSArICc7IGVsc2UgdkVycm9ycyA9IG51bGw7IH0gJztcbiAgICBpZiAoaXQub3B0cy5hbGxFcnJvcnMpIHtcbiAgICAgIG91dCArPSAnIH0gJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcgIHZhciBlcnIgPSAgICc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgnbm90JykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczoge30gJztcbiAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBOT1QgYmUgdmFsaWRcXCcgJztcbiAgICAgIH1cbiAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIH0gJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcge30gJztcbiAgICB9XG4gICAgb3V0ICs9ICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgaWYgKGZhbHNlKSB7ICc7XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX29uZU9mKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkdmFsaWQgPSAndmFsaWQnICsgJGx2bDtcbiAgdmFyICRlcnJzID0gJ2VycnNfXycgKyAkbHZsO1xuICB2YXIgJGl0ID0gaXQudXRpbC5jb3B5KGl0KTtcbiAgdmFyICRjbG9zaW5nQnJhY2VzID0gJyc7XG4gICRpdC5sZXZlbCsrO1xuICB2YXIgJG5leHRWYWxpZCA9ICd2YWxpZCcgKyAkaXQubGV2ZWw7XG4gIHZhciAkY3VycmVudEJhc2VJZCA9ICRpdC5iYXNlSWQsXG4gICAgJHByZXZWYWxpZCA9ICdwcmV2VmFsaWQnICsgJGx2bCxcbiAgICAkcGFzc2luZ1NjaGVtYXMgPSAncGFzc2luZ1NjaGVtYXMnICsgJGx2bDtcbiAgb3V0ICs9ICd2YXIgJyArICgkZXJycykgKyAnID0gZXJyb3JzICwgJyArICgkcHJldlZhbGlkKSArICcgPSBmYWxzZSAsICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZSAsICcgKyAoJHBhc3NpbmdTY2hlbWFzKSArICcgPSBudWxsOyAnO1xuICB2YXIgJHdhc0NvbXBvc2l0ZSA9IGl0LmNvbXBvc2l0ZVJ1bGU7XG4gIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9IHRydWU7XG4gIHZhciBhcnIxID0gJHNjaGVtYTtcbiAgaWYgKGFycjEpIHtcbiAgICB2YXIgJHNjaCwgJGkgPSAtMSxcbiAgICAgIGwxID0gYXJyMS5sZW5ndGggLSAxO1xuICAgIHdoaWxlICgkaSA8IGwxKSB7XG4gICAgICAkc2NoID0gYXJyMVskaSArPSAxXTtcbiAgICAgIGlmICgoaXQub3B0cy5zdHJpY3RLZXl3b3JkcyA/ICh0eXBlb2YgJHNjaCA9PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cygkc2NoKS5sZW5ndGggPiAwKSB8fCAkc2NoID09PSBmYWxzZSA6IGl0LnV0aWwuc2NoZW1hSGFzUnVsZXMoJHNjaCwgaXQuUlVMRVMuYWxsKSkpIHtcbiAgICAgICAgJGl0LnNjaGVtYSA9ICRzY2g7XG4gICAgICAgICRpdC5zY2hlbWFQYXRoID0gJHNjaGVtYVBhdGggKyAnWycgKyAkaSArICddJztcbiAgICAgICAgJGl0LmVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aCArICcvJyArICRpO1xuICAgICAgICBvdXQgKz0gJyAgJyArIChpdC52YWxpZGF0ZSgkaXQpKSArICcgJztcbiAgICAgICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJG5leHRWYWxpZCkgKyAnID0gdHJ1ZTsgJztcbiAgICAgIH1cbiAgICAgIGlmICgkaSkge1xuICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkbmV4dFZhbGlkKSArICcgJiYgJyArICgkcHJldlZhbGlkKSArICcpIHsgJyArICgkdmFsaWQpICsgJyA9IGZhbHNlOyAnICsgKCRwYXNzaW5nU2NoZW1hcykgKyAnID0gWycgKyAoJHBhc3NpbmdTY2hlbWFzKSArICcsICcgKyAoJGkpICsgJ107IH0gZWxzZSB7ICc7XG4gICAgICAgICRjbG9zaW5nQnJhY2VzICs9ICd9JztcbiAgICAgIH1cbiAgICAgIG91dCArPSAnIGlmICgnICsgKCRuZXh0VmFsaWQpICsgJykgeyAnICsgKCR2YWxpZCkgKyAnID0gJyArICgkcHJldlZhbGlkKSArICcgPSB0cnVlOyAnICsgKCRwYXNzaW5nU2NoZW1hcykgKyAnID0gJyArICgkaSkgKyAnOyB9JztcbiAgICB9XG4gIH1cbiAgaXQuY29tcG9zaXRlUnVsZSA9ICRpdC5jb21wb3NpdGVSdWxlID0gJHdhc0NvbXBvc2l0ZTtcbiAgb3V0ICs9ICcnICsgKCRjbG9zaW5nQnJhY2VzKSArICdpZiAoIScgKyAoJHZhbGlkKSArICcpIHsgICB2YXIgZXJyID0gICAnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgnb25lT2YnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IHBhc3NpbmdTY2hlbWFzOiAnICsgKCRwYXNzaW5nU2NoZW1hcykgKyAnIH0gJztcbiAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIG1hdGNoIGV4YWN0bHkgb25lIHNjaGVtYSBpbiBvbmVPZlxcJyAnO1xuICAgIH1cbiAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB9ICc7XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcge30gJztcbiAgfVxuICBvdXQgKz0gJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdC5hc3luYykge1xuICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcih2RXJyb3JzKTsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gdkVycm9yczsgcmV0dXJuIGZhbHNlOyAnO1xuICAgIH1cbiAgfVxuICBvdXQgKz0gJ30gZWxzZSB7ICBlcnJvcnMgPSAnICsgKCRlcnJzKSArICc7IGlmICh2RXJyb3JzICE9PSBudWxsKSB7IGlmICgnICsgKCRlcnJzKSArICcpIHZFcnJvcnMubGVuZ3RoID0gJyArICgkZXJycykgKyAnOyBlbHNlIHZFcnJvcnMgPSBudWxsOyB9JztcbiAgaWYgKGl0Lm9wdHMuYWxsRXJyb3JzKSB7XG4gICAgb3V0ICs9ICcgfSAnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX3BhdHRlcm4oaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICRpc0RhdGEgPSBpdC5vcHRzLiRkYXRhICYmICRzY2hlbWEgJiYgJHNjaGVtYS4kZGF0YSxcbiAgICAkc2NoZW1hVmFsdWU7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyIHNjaGVtYScgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLmdldERhdGEoJHNjaGVtYS4kZGF0YSwgJGRhdGFMdmwsIGl0LmRhdGFQYXRoQXJyKSkgKyAnOyAnO1xuICAgICRzY2hlbWFWYWx1ZSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgfSBlbHNlIHtcbiAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hO1xuICB9XG4gIHZhciAkcmVnZXhwID0gJGlzRGF0YSA/ICcobmV3IFJlZ0V4cCgnICsgJHNjaGVtYVZhbHVlICsgJykpJyA6IGl0LnVzZVBhdHRlcm4oJHNjaGVtYSk7XG4gIG91dCArPSAnaWYgKCAnO1xuICBpZiAoJGlzRGF0YSkge1xuICAgIG91dCArPSAnICgnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mICcgKyAoJHNjaGVtYVZhbHVlKSArICcgIT0gXFwnc3RyaW5nXFwnKSB8fCAnO1xuICB9XG4gIG91dCArPSAnICEnICsgKCRyZWdleHApICsgJy50ZXN0KCcgKyAoJGRhdGEpICsgJykgKSB7ICAgJztcbiAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgb3V0ID0gJyc7IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdwYXR0ZXJuJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBwYXR0ZXJuOiAgJztcbiAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgb3V0ICs9ICcnICsgKCRzY2hlbWFWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRzY2hlbWEpKTtcbiAgICB9XG4gICAgb3V0ICs9ICcgIH0gJztcbiAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnc2hvdWxkIG1hdGNoIHBhdHRlcm4gXCInO1xuICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgb3V0ICs9ICdcXCcgKyAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICsgXFwnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnJyArIChpdC51dGlsLmVzY2FwZVF1b3Rlcygkc2NoZW1hKSk7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJ1wiXFwnICc7XG4gICAgfVxuICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgIG91dCArPSAnICwgc2NoZW1hOiAgJztcbiAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgIG91dCArPSAndmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJycgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkc2NoZW1hKSk7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyAgICAgICAgICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB9ICc7XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcge30gJztcbiAgfVxuICB2YXIgX19lcnIgPSBvdXQ7XG4gIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICB9XG4gIG91dCArPSAnfSAnO1xuICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgIG91dCArPSAnIGVsc2UgeyAnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX3Byb3BlcnRpZXMoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICRlcnJzID0gJ2VycnNfXycgKyAkbHZsO1xuICB2YXIgJGl0ID0gaXQudXRpbC5jb3B5KGl0KTtcbiAgdmFyICRjbG9zaW5nQnJhY2VzID0gJyc7XG4gICRpdC5sZXZlbCsrO1xuICB2YXIgJG5leHRWYWxpZCA9ICd2YWxpZCcgKyAkaXQubGV2ZWw7XG4gIHZhciAka2V5ID0gJ2tleScgKyAkbHZsLFxuICAgICRpZHggPSAnaWR4JyArICRsdmwsXG4gICAgJGRhdGFOeHQgPSAkaXQuZGF0YUxldmVsID0gaXQuZGF0YUxldmVsICsgMSxcbiAgICAkbmV4dERhdGEgPSAnZGF0YScgKyAkZGF0YU54dCxcbiAgICAkZGF0YVByb3BlcnRpZXMgPSAnZGF0YVByb3BlcnRpZXMnICsgJGx2bDtcbiAgdmFyICRzY2hlbWFLZXlzID0gT2JqZWN0LmtleXMoJHNjaGVtYSB8fCB7fSkuZmlsdGVyKG5vdFByb3RvKSxcbiAgICAkcFByb3BlcnRpZXMgPSBpdC5zY2hlbWEucGF0dGVyblByb3BlcnRpZXMgfHwge30sXG4gICAgJHBQcm9wZXJ0eUtleXMgPSBPYmplY3Qua2V5cygkcFByb3BlcnRpZXMpLmZpbHRlcihub3RQcm90byksXG4gICAgJGFQcm9wZXJ0aWVzID0gaXQuc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLFxuICAgICRzb21lUHJvcGVydGllcyA9ICRzY2hlbWFLZXlzLmxlbmd0aCB8fCAkcFByb3BlcnR5S2V5cy5sZW5ndGgsXG4gICAgJG5vQWRkaXRpb25hbCA9ICRhUHJvcGVydGllcyA9PT0gZmFsc2UsXG4gICAgJGFkZGl0aW9uYWxJc1NjaGVtYSA9IHR5cGVvZiAkYVByb3BlcnRpZXMgPT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoJGFQcm9wZXJ0aWVzKS5sZW5ndGgsXG4gICAgJHJlbW92ZUFkZGl0aW9uYWwgPSBpdC5vcHRzLnJlbW92ZUFkZGl0aW9uYWwsXG4gICAgJGNoZWNrQWRkaXRpb25hbCA9ICRub0FkZGl0aW9uYWwgfHwgJGFkZGl0aW9uYWxJc1NjaGVtYSB8fCAkcmVtb3ZlQWRkaXRpb25hbCxcbiAgICAkb3duUHJvcGVydGllcyA9IGl0Lm9wdHMub3duUHJvcGVydGllcyxcbiAgICAkY3VycmVudEJhc2VJZCA9IGl0LmJhc2VJZDtcbiAgdmFyICRyZXF1aXJlZCA9IGl0LnNjaGVtYS5yZXF1aXJlZDtcbiAgaWYgKCRyZXF1aXJlZCAmJiAhKGl0Lm9wdHMuJGRhdGEgJiYgJHJlcXVpcmVkLiRkYXRhKSAmJiAkcmVxdWlyZWQubGVuZ3RoIDwgaXQub3B0cy5sb29wUmVxdWlyZWQpIHtcbiAgICB2YXIgJHJlcXVpcmVkSGFzaCA9IGl0LnV0aWwudG9IYXNoKCRyZXF1aXJlZCk7XG4gIH1cblxuICBmdW5jdGlvbiBub3RQcm90byhwKSB7XG4gICAgcmV0dXJuIHAgIT09ICdfX3Byb3RvX18nO1xuICB9XG4gIG91dCArPSAndmFyICcgKyAoJGVycnMpICsgJyA9IGVycm9yczt2YXIgJyArICgkbmV4dFZhbGlkKSArICcgPSB0cnVlOyc7XG4gIGlmICgkb3duUHJvcGVydGllcykge1xuICAgIG91dCArPSAnIHZhciAnICsgKCRkYXRhUHJvcGVydGllcykgKyAnID0gdW5kZWZpbmVkOyc7XG4gIH1cbiAgaWYgKCRjaGVja0FkZGl0aW9uYWwpIHtcbiAgICBpZiAoJG93blByb3BlcnRpZXMpIHtcbiAgICAgIG91dCArPSAnICcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICcgPSAnICsgKCRkYXRhUHJvcGVydGllcykgKyAnIHx8IE9iamVjdC5rZXlzKCcgKyAoJGRhdGEpICsgJyk7IGZvciAodmFyICcgKyAoJGlkeCkgKyAnPTA7ICcgKyAoJGlkeCkgKyAnPCcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICcubGVuZ3RoOyAnICsgKCRpZHgpICsgJysrKSB7IHZhciAnICsgKCRrZXkpICsgJyA9ICcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICdbJyArICgkaWR4KSArICddOyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyBmb3IgKHZhciAnICsgKCRrZXkpICsgJyBpbiAnICsgKCRkYXRhKSArICcpIHsgJztcbiAgICB9XG4gICAgaWYgKCRzb21lUHJvcGVydGllcykge1xuICAgICAgb3V0ICs9ICcgdmFyIGlzQWRkaXRpb25hbCcgKyAoJGx2bCkgKyAnID0gIShmYWxzZSAnO1xuICAgICAgaWYgKCRzY2hlbWFLZXlzLmxlbmd0aCkge1xuICAgICAgICBpZiAoJHNjaGVtYUtleXMubGVuZ3RoID4gOCkge1xuICAgICAgICAgIG91dCArPSAnIHx8IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJy5oYXNPd25Qcm9wZXJ0eSgnICsgKCRrZXkpICsgJykgJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgYXJyMSA9ICRzY2hlbWFLZXlzO1xuICAgICAgICAgIGlmIChhcnIxKSB7XG4gICAgICAgICAgICB2YXIgJHByb3BlcnR5S2V5LCBpMSA9IC0xLFxuICAgICAgICAgICAgICBsMSA9IGFycjEubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIHdoaWxlIChpMSA8IGwxKSB7XG4gICAgICAgICAgICAgICRwcm9wZXJ0eUtleSA9IGFycjFbaTEgKz0gMV07XG4gICAgICAgICAgICAgIG91dCArPSAnIHx8ICcgKyAoJGtleSkgKyAnID09ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkcHJvcGVydHlLZXkpKSArICcgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICgkcFByb3BlcnR5S2V5cy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGFycjIgPSAkcFByb3BlcnR5S2V5cztcbiAgICAgICAgaWYgKGFycjIpIHtcbiAgICAgICAgICB2YXIgJHBQcm9wZXJ0eSwgJGkgPSAtMSxcbiAgICAgICAgICAgIGwyID0gYXJyMi5sZW5ndGggLSAxO1xuICAgICAgICAgIHdoaWxlICgkaSA8IGwyKSB7XG4gICAgICAgICAgICAkcFByb3BlcnR5ID0gYXJyMlskaSArPSAxXTtcbiAgICAgICAgICAgIG91dCArPSAnIHx8ICcgKyAoaXQudXNlUGF0dGVybigkcFByb3BlcnR5KSkgKyAnLnRlc3QoJyArICgka2V5KSArICcpICc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyApOyBpZiAoaXNBZGRpdGlvbmFsJyArICgkbHZsKSArICcpIHsgJztcbiAgICB9XG4gICAgaWYgKCRyZW1vdmVBZGRpdGlvbmFsID09ICdhbGwnKSB7XG4gICAgICBvdXQgKz0gJyBkZWxldGUgJyArICgkZGF0YSkgKyAnWycgKyAoJGtleSkgKyAnXTsgJztcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyICRjdXJyZW50RXJyb3JQYXRoID0gaXQuZXJyb3JQYXRoO1xuICAgICAgdmFyICRhZGRpdGlvbmFsUHJvcGVydHkgPSAnXFwnICsgJyArICRrZXkgKyAnICsgXFwnJztcbiAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgaXQuZXJyb3JQYXRoID0gaXQudXRpbC5nZXRQYXRoRXhwcihpdC5lcnJvclBhdGgsICRrZXksIGl0Lm9wdHMuanNvblBvaW50ZXJzKTtcbiAgICAgIH1cbiAgICAgIGlmICgkbm9BZGRpdGlvbmFsKSB7XG4gICAgICAgIGlmICgkcmVtb3ZlQWRkaXRpb25hbCkge1xuICAgICAgICAgIG91dCArPSAnIGRlbGV0ZSAnICsgKCRkYXRhKSArICdbJyArICgka2V5KSArICddOyAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnICcgKyAoJG5leHRWYWxpZCkgKyAnID0gZmFsc2U7ICc7XG4gICAgICAgICAgdmFyICRjdXJyRXJyU2NoZW1hUGF0aCA9ICRlcnJTY2hlbWFQYXRoO1xuICAgICAgICAgICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvYWRkaXRpb25hbFByb3BlcnRpZXMnO1xuICAgICAgICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAgICAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICAgICAgICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCdhZGRpdGlvbmFsUHJvcGVydGllcycpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgYWRkaXRpb25hbFByb3BlcnR5OiBcXCcnICsgKCRhZGRpdGlvbmFsUHJvcGVydHkpICsgJ1xcJyB9ICc7XG4gICAgICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCcnO1xuICAgICAgICAgICAgICBpZiAoaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICdpcyBhbiBpbnZhbGlkIGFkZGl0aW9uYWwgcHJvcGVydHknO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG91dCArPSAnc2hvdWxkIE5PVCBoYXZlIGFkZGl0aW9uYWwgcHJvcGVydGllcyc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb3V0ICs9ICdcXCcgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IGZhbHNlICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICcgfSAnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB7fSAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgICAgICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICAgICAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgICAgICAgfVxuICAgICAgICAgICRlcnJTY2hlbWFQYXRoID0gJGN1cnJFcnJTY2hlbWFQYXRoO1xuICAgICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyBicmVhazsgJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoJGFkZGl0aW9uYWxJc1NjaGVtYSkge1xuICAgICAgICBpZiAoJHJlbW92ZUFkZGl0aW9uYWwgPT0gJ2ZhaWxpbmcnKSB7XG4gICAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJGVycnMpICsgJyA9IGVycm9yczsgICc7XG4gICAgICAgICAgdmFyICR3YXNDb21wb3NpdGUgPSBpdC5jb21wb3NpdGVSdWxlO1xuICAgICAgICAgIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9IHRydWU7XG4gICAgICAgICAgJGl0LnNjaGVtYSA9ICRhUHJvcGVydGllcztcbiAgICAgICAgICAkaXQuc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyAnLmFkZGl0aW9uYWxQcm9wZXJ0aWVzJztcbiAgICAgICAgICAkaXQuZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnL2FkZGl0aW9uYWxQcm9wZXJ0aWVzJztcbiAgICAgICAgICAkaXQuZXJyb3JQYXRoID0gaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5ID8gaXQuZXJyb3JQYXRoIDogaXQudXRpbC5nZXRQYXRoRXhwcihpdC5lcnJvclBhdGgsICRrZXksIGl0Lm9wdHMuanNvblBvaW50ZXJzKTtcbiAgICAgICAgICB2YXIgJHBhc3NEYXRhID0gJGRhdGEgKyAnWycgKyAka2V5ICsgJ10nO1xuICAgICAgICAgICRpdC5kYXRhUGF0aEFyclskZGF0YU54dF0gPSAka2V5O1xuICAgICAgICAgIHZhciAkY29kZSA9IGl0LnZhbGlkYXRlKCRpdCk7XG4gICAgICAgICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgICAgICAgIGlmIChpdC51dGlsLnZhck9jY3VyZW5jZXMoJGNvZGUsICRuZXh0RGF0YSkgPCAyKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAnICsgKGl0LnV0aWwudmFyUmVwbGFjZSgkY29kZSwgJG5leHREYXRhLCAkcGFzc0RhdGEpKSArICcgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJG5leHREYXRhKSArICcgPSAnICsgKCRwYXNzRGF0YSkgKyAnOyAnICsgKCRjb2RlKSArICcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKCEnICsgKCRuZXh0VmFsaWQpICsgJykgeyBlcnJvcnMgPSAnICsgKCRlcnJzKSArICc7IGlmICh2YWxpZGF0ZS5lcnJvcnMgIT09IG51bGwpIHsgaWYgKGVycm9ycykgdmFsaWRhdGUuZXJyb3JzLmxlbmd0aCA9IGVycm9yczsgZWxzZSB2YWxpZGF0ZS5lcnJvcnMgPSBudWxsOyB9IGRlbGV0ZSAnICsgKCRkYXRhKSArICdbJyArICgka2V5KSArICddOyB9ICAnO1xuICAgICAgICAgIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9ICR3YXNDb21wb3NpdGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgJGl0LnNjaGVtYSA9ICRhUHJvcGVydGllcztcbiAgICAgICAgICAkaXQuc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyAnLmFkZGl0aW9uYWxQcm9wZXJ0aWVzJztcbiAgICAgICAgICAkaXQuZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnL2FkZGl0aW9uYWxQcm9wZXJ0aWVzJztcbiAgICAgICAgICAkaXQuZXJyb3JQYXRoID0gaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5ID8gaXQuZXJyb3JQYXRoIDogaXQudXRpbC5nZXRQYXRoRXhwcihpdC5lcnJvclBhdGgsICRrZXksIGl0Lm9wdHMuanNvblBvaW50ZXJzKTtcbiAgICAgICAgICB2YXIgJHBhc3NEYXRhID0gJGRhdGEgKyAnWycgKyAka2V5ICsgJ10nO1xuICAgICAgICAgICRpdC5kYXRhUGF0aEFyclskZGF0YU54dF0gPSAka2V5O1xuICAgICAgICAgIHZhciAkY29kZSA9IGl0LnZhbGlkYXRlKCRpdCk7XG4gICAgICAgICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgICAgICAgIGlmIChpdC51dGlsLnZhck9jY3VyZW5jZXMoJGNvZGUsICRuZXh0RGF0YSkgPCAyKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAnICsgKGl0LnV0aWwudmFyUmVwbGFjZSgkY29kZSwgJG5leHREYXRhLCAkcGFzc0RhdGEpKSArICcgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJG5leHREYXRhKSArICcgPSAnICsgKCRwYXNzRGF0YSkgKyAnOyAnICsgKCRjb2RlKSArICcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAgIG91dCArPSAnIGlmICghJyArICgkbmV4dFZhbGlkKSArICcpIGJyZWFrOyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaXQuZXJyb3JQYXRoID0gJGN1cnJlbnRFcnJvclBhdGg7XG4gICAgfVxuICAgIGlmICgkc29tZVByb3BlcnRpZXMpIHtcbiAgICAgIG91dCArPSAnIH0gJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSAgJztcbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJG5leHRWYWxpZCkgKyAnKSB7ICc7XG4gICAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgfVxuICB9XG4gIHZhciAkdXNlRGVmYXVsdHMgPSBpdC5vcHRzLnVzZURlZmF1bHRzICYmICFpdC5jb21wb3NpdGVSdWxlO1xuICBpZiAoJHNjaGVtYUtleXMubGVuZ3RoKSB7XG4gICAgdmFyIGFycjMgPSAkc2NoZW1hS2V5cztcbiAgICBpZiAoYXJyMykge1xuICAgICAgdmFyICRwcm9wZXJ0eUtleSwgaTMgPSAtMSxcbiAgICAgICAgbDMgPSBhcnIzLmxlbmd0aCAtIDE7XG4gICAgICB3aGlsZSAoaTMgPCBsMykge1xuICAgICAgICAkcHJvcGVydHlLZXkgPSBhcnIzW2kzICs9IDFdO1xuICAgICAgICB2YXIgJHNjaCA9ICRzY2hlbWFbJHByb3BlcnR5S2V5XTtcbiAgICAgICAgaWYgKChpdC5vcHRzLnN0cmljdEtleXdvcmRzID8gKHR5cGVvZiAkc2NoID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRzY2gpLmxlbmd0aCA+IDApIHx8ICRzY2ggPT09IGZhbHNlIDogaXQudXRpbC5zY2hlbWFIYXNSdWxlcygkc2NoLCBpdC5SVUxFUy5hbGwpKSkge1xuICAgICAgICAgIHZhciAkcHJvcCA9IGl0LnV0aWwuZ2V0UHJvcGVydHkoJHByb3BlcnR5S2V5KSxcbiAgICAgICAgICAgICRwYXNzRGF0YSA9ICRkYXRhICsgJHByb3AsXG4gICAgICAgICAgICAkaGFzRGVmYXVsdCA9ICR1c2VEZWZhdWx0cyAmJiAkc2NoLmRlZmF1bHQgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgICAkaXQuc2NoZW1hID0gJHNjaDtcbiAgICAgICAgICAkaXQuc2NoZW1hUGF0aCA9ICRzY2hlbWFQYXRoICsgJHByb3A7XG4gICAgICAgICAgJGl0LmVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aCArICcvJyArIGl0LnV0aWwuZXNjYXBlRnJhZ21lbnQoJHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAkaXQuZXJyb3JQYXRoID0gaXQudXRpbC5nZXRQYXRoKGl0LmVycm9yUGF0aCwgJHByb3BlcnR5S2V5LCBpdC5vcHRzLmpzb25Qb2ludGVycyk7XG4gICAgICAgICAgJGl0LmRhdGFQYXRoQXJyWyRkYXRhTnh0XSA9IGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJHByb3BlcnR5S2V5KTtcbiAgICAgICAgICB2YXIgJGNvZGUgPSBpdC52YWxpZGF0ZSgkaXQpO1xuICAgICAgICAgICRpdC5iYXNlSWQgPSAkY3VycmVudEJhc2VJZDtcbiAgICAgICAgICBpZiAoaXQudXRpbC52YXJPY2N1cmVuY2VzKCRjb2RlLCAkbmV4dERhdGEpIDwgMikge1xuICAgICAgICAgICAgJGNvZGUgPSBpdC51dGlsLnZhclJlcGxhY2UoJGNvZGUsICRuZXh0RGF0YSwgJHBhc3NEYXRhKTtcbiAgICAgICAgICAgIHZhciAkdXNlRGF0YSA9ICRwYXNzRGF0YTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyICR1c2VEYXRhID0gJG5leHREYXRhO1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJG5leHREYXRhKSArICcgPSAnICsgKCRwYXNzRGF0YSkgKyAnOyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoJGhhc0RlZmF1bHQpIHtcbiAgICAgICAgICAgIG91dCArPSAnICcgKyAoJGNvZGUpICsgJyAnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoJHJlcXVpcmVkSGFzaCAmJiAkcmVxdWlyZWRIYXNoWyRwcm9wZXJ0eUtleV0pIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgaWYgKCAnICsgKCR1c2VEYXRhKSArICcgPT09IHVuZGVmaW5lZCAnO1xuICAgICAgICAgICAgICBpZiAoJG93blByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAhIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgnICsgKCRkYXRhKSArICcsIFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5S2V5KSkgKyAnXFwnKSAnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG91dCArPSAnKSB7ICcgKyAoJG5leHRWYWxpZCkgKyAnID0gZmFsc2U7ICc7XG4gICAgICAgICAgICAgIHZhciAkY3VycmVudEVycm9yUGF0aCA9IGl0LmVycm9yUGF0aCxcbiAgICAgICAgICAgICAgICAkY3VyckVyclNjaGVtYVBhdGggPSAkZXJyU2NoZW1hUGF0aCxcbiAgICAgICAgICAgICAgICAkbWlzc2luZ1Byb3BlcnR5ID0gaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIGl0LmVycm9yUGF0aCA9IGl0LnV0aWwuZ2V0UGF0aCgkY3VycmVudEVycm9yUGF0aCwgJHByb3BlcnR5S2V5LCBpdC5vcHRzLmpzb25Qb2ludGVycyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgJGVyclNjaGVtYVBhdGggPSBpdC5lcnJTY2hlbWFQYXRoICsgJy9yZXF1aXJlZCc7XG4gICAgICAgICAgICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAgICAgICAgICAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gICAgICAgICAgICAgIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgICAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgncmVxdWlyZWQnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IG1pc3NpbmdQcm9wZXJ0eTogXFwnJyArICgkbWlzc2luZ1Byb3BlcnR5KSArICdcXCcgfSAnO1xuICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCcnO1xuICAgICAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJ2lzIGEgcmVxdWlyZWQgcHJvcGVydHknO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICdzaG91bGQgaGF2ZSByZXF1aXJlZCBwcm9wZXJ0eSBcXFxcXFwnJyArICgkbWlzc2luZ1Byb3BlcnR5KSArICdcXFxcXFwnJztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIG91dCArPSAnXFwnICc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvdXQgKz0gJyB7fSAnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHZhciBfX2VyciA9IG91dDtcbiAgICAgICAgICAgICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICAgICAgICAgICAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICAgICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgICAgICAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoWycgKyAoX19lcnIpICsgJ10pOyAnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgJGVyclNjaGVtYVBhdGggPSAkY3VyckVyclNjaGVtYVBhdGg7XG4gICAgICAgICAgICAgIGl0LmVycm9yUGF0aCA9ICRjdXJyZW50RXJyb3JQYXRoO1xuICAgICAgICAgICAgICBvdXQgKz0gJyB9IGVsc2UgeyAnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBvdXQgKz0gJyBpZiAoICcgKyAoJHVzZURhdGEpICsgJyA9PT0gdW5kZWZpbmVkICc7XG4gICAgICAgICAgICAgICAgaWYgKCRvd25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAhIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgnICsgKCRkYXRhKSArICcsIFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5S2V5KSkgKyAnXFwnKSAnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdXQgKz0gJykgeyAnICsgKCRuZXh0VmFsaWQpICsgJyA9IHRydWU7IH0gZWxzZSB7ICc7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJHVzZURhdGEpICsgJyAhPT0gdW5kZWZpbmVkICc7XG4gICAgICAgICAgICAgICAgaWYgKCRvd25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICBvdXQgKz0gJyAmJiAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgnICsgKCRkYXRhKSArICcsIFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5S2V5KSkgKyAnXFwnKSAnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdXQgKz0gJyApIHsgJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICcgJyArICgkY29kZSkgKyAnIH0gJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkbmV4dFZhbGlkKSArICcpIHsgJztcbiAgICAgICAgICAkY2xvc2luZ0JyYWNlcyArPSAnfSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCRwUHJvcGVydHlLZXlzLmxlbmd0aCkge1xuICAgIHZhciBhcnI0ID0gJHBQcm9wZXJ0eUtleXM7XG4gICAgaWYgKGFycjQpIHtcbiAgICAgIHZhciAkcFByb3BlcnR5LCBpNCA9IC0xLFxuICAgICAgICBsNCA9IGFycjQubGVuZ3RoIC0gMTtcbiAgICAgIHdoaWxlIChpNCA8IGw0KSB7XG4gICAgICAgICRwUHJvcGVydHkgPSBhcnI0W2k0ICs9IDFdO1xuICAgICAgICB2YXIgJHNjaCA9ICRwUHJvcGVydGllc1skcFByb3BlcnR5XTtcbiAgICAgICAgaWYgKChpdC5vcHRzLnN0cmljdEtleXdvcmRzID8gKHR5cGVvZiAkc2NoID09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKCRzY2gpLmxlbmd0aCA+IDApIHx8ICRzY2ggPT09IGZhbHNlIDogaXQudXRpbC5zY2hlbWFIYXNSdWxlcygkc2NoLCBpdC5SVUxFUy5hbGwpKSkge1xuICAgICAgICAgICRpdC5zY2hlbWEgPSAkc2NoO1xuICAgICAgICAgICRpdC5zY2hlbWFQYXRoID0gaXQuc2NoZW1hUGF0aCArICcucGF0dGVyblByb3BlcnRpZXMnICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgkcFByb3BlcnR5KTtcbiAgICAgICAgICAkaXQuZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnL3BhdHRlcm5Qcm9wZXJ0aWVzLycgKyBpdC51dGlsLmVzY2FwZUZyYWdtZW50KCRwUHJvcGVydHkpO1xuICAgICAgICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgICAgICAgb3V0ICs9ICcgJyArICgkZGF0YVByb3BlcnRpZXMpICsgJyA9ICcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICcgfHwgT2JqZWN0LmtleXMoJyArICgkZGF0YSkgKyAnKTsgZm9yICh2YXIgJyArICgkaWR4KSArICc9MDsgJyArICgkaWR4KSArICc8JyArICgkZGF0YVByb3BlcnRpZXMpICsgJy5sZW5ndGg7ICcgKyAoJGlkeCkgKyAnKyspIHsgdmFyICcgKyAoJGtleSkgKyAnID0gJyArICgkZGF0YVByb3BlcnRpZXMpICsgJ1snICsgKCRpZHgpICsgJ107ICc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dCArPSAnIGZvciAodmFyICcgKyAoJGtleSkgKyAnIGluICcgKyAoJGRhdGEpICsgJykgeyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyBpZiAoJyArIChpdC51c2VQYXR0ZXJuKCRwUHJvcGVydHkpKSArICcudGVzdCgnICsgKCRrZXkpICsgJykpIHsgJztcbiAgICAgICAgICAkaXQuZXJyb3JQYXRoID0gaXQudXRpbC5nZXRQYXRoRXhwcihpdC5lcnJvclBhdGgsICRrZXksIGl0Lm9wdHMuanNvblBvaW50ZXJzKTtcbiAgICAgICAgICB2YXIgJHBhc3NEYXRhID0gJGRhdGEgKyAnWycgKyAka2V5ICsgJ10nO1xuICAgICAgICAgICRpdC5kYXRhUGF0aEFyclskZGF0YU54dF0gPSAka2V5O1xuICAgICAgICAgIHZhciAkY29kZSA9IGl0LnZhbGlkYXRlKCRpdCk7XG4gICAgICAgICAgJGl0LmJhc2VJZCA9ICRjdXJyZW50QmFzZUlkO1xuICAgICAgICAgIGlmIChpdC51dGlsLnZhck9jY3VyZW5jZXMoJGNvZGUsICRuZXh0RGF0YSkgPCAyKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAnICsgKGl0LnV0aWwudmFyUmVwbGFjZSgkY29kZSwgJG5leHREYXRhLCAkcGFzc0RhdGEpKSArICcgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJG5leHREYXRhKSArICcgPSAnICsgKCRwYXNzRGF0YSkgKyAnOyAnICsgKCRjb2RlKSArICcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAgIG91dCArPSAnIGlmICghJyArICgkbmV4dFZhbGlkKSArICcpIGJyZWFrOyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgICAgICAgIG91dCArPSAnIGVsc2UgJyArICgkbmV4dFZhbGlkKSArICcgPSB0cnVlOyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyB9ICAnO1xuICAgICAgICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyBpZiAoJyArICgkbmV4dFZhbGlkKSArICcpIHsgJztcbiAgICAgICAgICAgICRjbG9zaW5nQnJhY2VzICs9ICd9JztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICBvdXQgKz0gJyAnICsgKCRjbG9zaW5nQnJhY2VzKSArICcgaWYgKCcgKyAoJGVycnMpICsgJyA9PSBlcnJvcnMpIHsnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX3Byb3BlcnR5TmFtZXMoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICRlcnJzID0gJ2VycnNfXycgKyAkbHZsO1xuICB2YXIgJGl0ID0gaXQudXRpbC5jb3B5KGl0KTtcbiAgdmFyICRjbG9zaW5nQnJhY2VzID0gJyc7XG4gICRpdC5sZXZlbCsrO1xuICB2YXIgJG5leHRWYWxpZCA9ICd2YWxpZCcgKyAkaXQubGV2ZWw7XG4gIG91dCArPSAndmFyICcgKyAoJGVycnMpICsgJyA9IGVycm9yczsnO1xuICBpZiAoKGl0Lm9wdHMuc3RyaWN0S2V5d29yZHMgPyAodHlwZW9mICRzY2hlbWEgPT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoJHNjaGVtYSkubGVuZ3RoID4gMCkgfHwgJHNjaGVtYSA9PT0gZmFsc2UgOiBpdC51dGlsLnNjaGVtYUhhc1J1bGVzKCRzY2hlbWEsIGl0LlJVTEVTLmFsbCkpKSB7XG4gICAgJGl0LnNjaGVtYSA9ICRzY2hlbWE7XG4gICAgJGl0LnNjaGVtYVBhdGggPSAkc2NoZW1hUGF0aDtcbiAgICAkaXQuZXJyU2NoZW1hUGF0aCA9ICRlcnJTY2hlbWFQYXRoO1xuICAgIHZhciAka2V5ID0gJ2tleScgKyAkbHZsLFxuICAgICAgJGlkeCA9ICdpZHgnICsgJGx2bCxcbiAgICAgICRpID0gJ2knICsgJGx2bCxcbiAgICAgICRpbnZhbGlkTmFtZSA9ICdcXCcgKyAnICsgJGtleSArICcgKyBcXCcnLFxuICAgICAgJGRhdGFOeHQgPSAkaXQuZGF0YUxldmVsID0gaXQuZGF0YUxldmVsICsgMSxcbiAgICAgICRuZXh0RGF0YSA9ICdkYXRhJyArICRkYXRhTnh0LFxuICAgICAgJGRhdGFQcm9wZXJ0aWVzID0gJ2RhdGFQcm9wZXJ0aWVzJyArICRsdmwsXG4gICAgICAkb3duUHJvcGVydGllcyA9IGl0Lm9wdHMub3duUHJvcGVydGllcyxcbiAgICAgICRjdXJyZW50QmFzZUlkID0gaXQuYmFzZUlkO1xuICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICcgPSB1bmRlZmluZWQ7ICc7XG4gICAgfVxuICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgb3V0ICs9ICcgJyArICgkZGF0YVByb3BlcnRpZXMpICsgJyA9ICcgKyAoJGRhdGFQcm9wZXJ0aWVzKSArICcgfHwgT2JqZWN0LmtleXMoJyArICgkZGF0YSkgKyAnKTsgZm9yICh2YXIgJyArICgkaWR4KSArICc9MDsgJyArICgkaWR4KSArICc8JyArICgkZGF0YVByb3BlcnRpZXMpICsgJy5sZW5ndGg7ICcgKyAoJGlkeCkgKyAnKyspIHsgdmFyICcgKyAoJGtleSkgKyAnID0gJyArICgkZGF0YVByb3BlcnRpZXMpICsgJ1snICsgKCRpZHgpICsgJ107ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIGZvciAodmFyICcgKyAoJGtleSkgKyAnIGluICcgKyAoJGRhdGEpICsgJykgeyAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB2YXIgc3RhcnRFcnJzJyArICgkbHZsKSArICcgPSBlcnJvcnM7ICc7XG4gICAgdmFyICRwYXNzRGF0YSA9ICRrZXk7XG4gICAgdmFyICR3YXNDb21wb3NpdGUgPSBpdC5jb21wb3NpdGVSdWxlO1xuICAgIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9IHRydWU7XG4gICAgdmFyICRjb2RlID0gaXQudmFsaWRhdGUoJGl0KTtcbiAgICAkaXQuYmFzZUlkID0gJGN1cnJlbnRCYXNlSWQ7XG4gICAgaWYgKGl0LnV0aWwudmFyT2NjdXJlbmNlcygkY29kZSwgJG5leHREYXRhKSA8IDIpIHtcbiAgICAgIG91dCArPSAnICcgKyAoaXQudXRpbC52YXJSZXBsYWNlKCRjb2RlLCAkbmV4dERhdGEsICRwYXNzRGF0YSkpICsgJyAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YXIgJyArICgkbmV4dERhdGEpICsgJyA9ICcgKyAoJHBhc3NEYXRhKSArICc7ICcgKyAoJGNvZGUpICsgJyAnO1xuICAgIH1cbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSAkd2FzQ29tcG9zaXRlO1xuICAgIG91dCArPSAnIGlmICghJyArICgkbmV4dFZhbGlkKSArICcpIHsgZm9yICh2YXIgJyArICgkaSkgKyAnPXN0YXJ0RXJycycgKyAoJGx2bCkgKyAnOyAnICsgKCRpKSArICc8ZXJyb3JzOyAnICsgKCRpKSArICcrKykgeyB2RXJyb3JzWycgKyAoJGkpICsgJ10ucHJvcGVydHlOYW1lID0gJyArICgka2V5KSArICc7IH0gICB2YXIgZXJyID0gICAnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ3Byb3BlcnR5TmFtZXMnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IHByb3BlcnR5TmFtZTogXFwnJyArICgkaW52YWxpZE5hbWUpICsgJ1xcJyB9ICc7XG4gICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdwcm9wZXJ0eSBuYW1lIFxcXFxcXCcnICsgKCRpbnZhbGlkTmFtZSkgKyAnXFxcXFxcJyBpcyBpbnZhbGlkXFwnICc7XG4gICAgICB9XG4gICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgfVxuICAgIG91dCArPSAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgaWYgKCFpdC5jb21wb3NpdGVSdWxlICYmICRicmVha09uRXJyb3IpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgIG91dCArPSAnIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IodkVycm9ycyk7ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSB2RXJyb3JzOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICBvdXQgKz0gJyBicmVhazsgJztcbiAgICB9XG4gICAgb3V0ICs9ICcgfSB9JztcbiAgfVxuICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgIG91dCArPSAnICcgKyAoJGNsb3NpbmdCcmFjZXMpICsgJyBpZiAoJyArICgkZXJycykgKyAnID09IGVycm9ycykgeyc7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfcmVxdWlyZWQoaXQsICRrZXl3b3JkLCAkcnVsZVR5cGUpIHtcbiAgdmFyIG91dCA9ICcgJztcbiAgdmFyICRsdmwgPSBpdC5sZXZlbDtcbiAgdmFyICRkYXRhTHZsID0gaXQuZGF0YUxldmVsO1xuICB2YXIgJHNjaGVtYSA9IGl0LnNjaGVtYVska2V5d29yZF07XG4gIHZhciAkc2NoZW1hUGF0aCA9IGl0LnNjaGVtYVBhdGggKyBpdC51dGlsLmdldFByb3BlcnR5KCRrZXl3b3JkKTtcbiAgdmFyICRlcnJTY2hlbWFQYXRoID0gaXQuZXJyU2NoZW1hUGF0aCArICcvJyArICRrZXl3b3JkO1xuICB2YXIgJGJyZWFrT25FcnJvciA9ICFpdC5vcHRzLmFsbEVycm9ycztcbiAgdmFyICRkYXRhID0gJ2RhdGEnICsgKCRkYXRhTHZsIHx8ICcnKTtcbiAgdmFyICR2YWxpZCA9ICd2YWxpZCcgKyAkbHZsO1xuICB2YXIgJGlzRGF0YSA9IGl0Lm9wdHMuJGRhdGEgJiYgJHNjaGVtYSAmJiAkc2NoZW1hLiRkYXRhLFxuICAgICRzY2hlbWFWYWx1ZTtcbiAgaWYgKCRpc0RhdGEpIHtcbiAgICBvdXQgKz0gJyB2YXIgc2NoZW1hJyArICgkbHZsKSArICcgPSAnICsgKGl0LnV0aWwuZ2V0RGF0YSgkc2NoZW1hLiRkYXRhLCAkZGF0YUx2bCwgaXQuZGF0YVBhdGhBcnIpKSArICc7ICc7XG4gICAgJHNjaGVtYVZhbHVlID0gJ3NjaGVtYScgKyAkbHZsO1xuICB9IGVsc2Uge1xuICAgICRzY2hlbWFWYWx1ZSA9ICRzY2hlbWE7XG4gIH1cbiAgdmFyICR2U2NoZW1hID0gJ3NjaGVtYScgKyAkbHZsO1xuICBpZiAoISRpc0RhdGEpIHtcbiAgICBpZiAoJHNjaGVtYS5sZW5ndGggPCBpdC5vcHRzLmxvb3BSZXF1aXJlZCAmJiBpdC5zY2hlbWEucHJvcGVydGllcyAmJiBPYmplY3Qua2V5cyhpdC5zY2hlbWEucHJvcGVydGllcykubGVuZ3RoKSB7XG4gICAgICB2YXIgJHJlcXVpcmVkID0gW107XG4gICAgICB2YXIgYXJyMSA9ICRzY2hlbWE7XG4gICAgICBpZiAoYXJyMSkge1xuICAgICAgICB2YXIgJHByb3BlcnR5LCBpMSA9IC0xLFxuICAgICAgICAgIGwxID0gYXJyMS5sZW5ndGggLSAxO1xuICAgICAgICB3aGlsZSAoaTEgPCBsMSkge1xuICAgICAgICAgICRwcm9wZXJ0eSA9IGFycjFbaTEgKz0gMV07XG4gICAgICAgICAgdmFyICRwcm9wZXJ0eVNjaCA9IGl0LnNjaGVtYS5wcm9wZXJ0aWVzWyRwcm9wZXJ0eV07XG4gICAgICAgICAgaWYgKCEoJHByb3BlcnR5U2NoICYmIChpdC5vcHRzLnN0cmljdEtleXdvcmRzID8gKHR5cGVvZiAkcHJvcGVydHlTY2ggPT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoJHByb3BlcnR5U2NoKS5sZW5ndGggPiAwKSB8fCAkcHJvcGVydHlTY2ggPT09IGZhbHNlIDogaXQudXRpbC5zY2hlbWFIYXNSdWxlcygkcHJvcGVydHlTY2gsIGl0LlJVTEVTLmFsbCkpKSkge1xuICAgICAgICAgICAgJHJlcXVpcmVkWyRyZXF1aXJlZC5sZW5ndGhdID0gJHByb3BlcnR5O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgJHJlcXVpcmVkID0gJHNjaGVtYTtcbiAgICB9XG4gIH1cbiAgaWYgKCRpc0RhdGEgfHwgJHJlcXVpcmVkLmxlbmd0aCkge1xuICAgIHZhciAkY3VycmVudEVycm9yUGF0aCA9IGl0LmVycm9yUGF0aCxcbiAgICAgICRsb29wUmVxdWlyZWQgPSAkaXNEYXRhIHx8ICRyZXF1aXJlZC5sZW5ndGggPj0gaXQub3B0cy5sb29wUmVxdWlyZWQsXG4gICAgICAkb3duUHJvcGVydGllcyA9IGl0Lm9wdHMub3duUHJvcGVydGllcztcbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgdmFyIG1pc3NpbmcnICsgKCRsdmwpICsgJzsgJztcbiAgICAgIGlmICgkbG9vcFJlcXVpcmVkKSB7XG4gICAgICAgIGlmICghJGlzRGF0YSkge1xuICAgICAgICAgIG91dCArPSAnIHZhciAnICsgKCR2U2NoZW1hKSArICcgPSB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICc7ICc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyICRpID0gJ2knICsgJGx2bCxcbiAgICAgICAgICAkcHJvcGVydHlQYXRoID0gJ3NjaGVtYScgKyAkbHZsICsgJ1snICsgJGkgKyAnXScsXG4gICAgICAgICAgJG1pc3NpbmdQcm9wZXJ0eSA9ICdcXCcgKyAnICsgJHByb3BlcnR5UGF0aCArICcgKyBcXCcnO1xuICAgICAgICBpZiAoaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5KSB7XG4gICAgICAgICAgaXQuZXJyb3JQYXRoID0gaXQudXRpbC5nZXRQYXRoRXhwcigkY3VycmVudEVycm9yUGF0aCwgJHByb3BlcnR5UGF0aCwgaXQub3B0cy5qc29uUG9pbnRlcnMpO1xuICAgICAgICB9XG4gICAgICAgIG91dCArPSAnIHZhciAnICsgKCR2YWxpZCkgKyAnID0gdHJ1ZTsgJztcbiAgICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgICBvdXQgKz0gJyBpZiAoc2NoZW1hJyArICgkbHZsKSArICcgPT09IHVuZGVmaW5lZCkgJyArICgkdmFsaWQpICsgJyA9IHRydWU7IGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KHNjaGVtYScgKyAoJGx2bCkgKyAnKSkgJyArICgkdmFsaWQpICsgJyA9IGZhbHNlOyBlbHNlIHsnO1xuICAgICAgICB9XG4gICAgICAgIG91dCArPSAnIGZvciAodmFyICcgKyAoJGkpICsgJyA9IDA7ICcgKyAoJGkpICsgJyA8ICcgKyAoJHZTY2hlbWEpICsgJy5sZW5ndGg7ICcgKyAoJGkpICsgJysrKSB7ICcgKyAoJHZhbGlkKSArICcgPSAnICsgKCRkYXRhKSArICdbJyArICgkdlNjaGVtYSkgKyAnWycgKyAoJGkpICsgJ11dICE9PSB1bmRlZmluZWQgJztcbiAgICAgICAgaWYgKCRvd25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgb3V0ICs9ICcgJiYgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoJyArICgkZGF0YSkgKyAnLCAnICsgKCR2U2NoZW1hKSArICdbJyArICgkaSkgKyAnXSkgJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJzsgaWYgKCEnICsgKCR2YWxpZCkgKyAnKSBicmVhazsgfSAnO1xuICAgICAgICBpZiAoJGlzRGF0YSkge1xuICAgICAgICAgIG91dCArPSAnICB9ICAnO1xuICAgICAgICB9XG4gICAgICAgIG91dCArPSAnICBpZiAoIScgKyAoJHZhbGlkKSArICcpIHsgICAnO1xuICAgICAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgICAgICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ3JlcXVpcmVkJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBtaXNzaW5nUHJvcGVydHk6IFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFwnIH0gJztcbiAgICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnJztcbiAgICAgICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICdpcyBhIHJlcXVpcmVkIHByb3BlcnR5JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG91dCArPSAnc2hvdWxkIGhhdmUgcmVxdWlyZWQgcHJvcGVydHkgXFxcXFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFxcXFxcJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQgKz0gJ1xcJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgICAgICB9XG4gICAgICAgIG91dCArPSAnIH0gZWxzZSB7ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyBpZiAoICc7XG4gICAgICAgIHZhciBhcnIyID0gJHJlcXVpcmVkO1xuICAgICAgICBpZiAoYXJyMikge1xuICAgICAgICAgIHZhciAkcHJvcGVydHlLZXksICRpID0gLTEsXG4gICAgICAgICAgICBsMiA9IGFycjIubGVuZ3RoIC0gMTtcbiAgICAgICAgICB3aGlsZSAoJGkgPCBsMikge1xuICAgICAgICAgICAgJHByb3BlcnR5S2V5ID0gYXJyMlskaSArPSAxXTtcbiAgICAgICAgICAgIGlmICgkaSkge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyICRwcm9wID0gaXQudXRpbC5nZXRQcm9wZXJ0eSgkcHJvcGVydHlLZXkpLFxuICAgICAgICAgICAgICAkdXNlRGF0YSA9ICRkYXRhICsgJHByb3A7XG4gICAgICAgICAgICBvdXQgKz0gJyAoICggJyArICgkdXNlRGF0YSkgKyAnID09PSB1bmRlZmluZWQgJztcbiAgICAgICAgICAgIGlmICgkb3duUHJvcGVydGllcykge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB8fCAhIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgnICsgKCRkYXRhKSArICcsIFxcJycgKyAoaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5S2V5KSkgKyAnXFwnKSAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICcpICYmIChtaXNzaW5nJyArICgkbHZsKSArICcgPSAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoaXQub3B0cy5qc29uUG9pbnRlcnMgPyAkcHJvcGVydHlLZXkgOiAkcHJvcCkpICsgJykgKSAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJykgeyAgJztcbiAgICAgICAgdmFyICRwcm9wZXJ0eVBhdGggPSAnbWlzc2luZycgKyAkbHZsLFxuICAgICAgICAgICRtaXNzaW5nUHJvcGVydHkgPSAnXFwnICsgJyArICRwcm9wZXJ0eVBhdGggKyAnICsgXFwnJztcbiAgICAgICAgaWYgKGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSkge1xuICAgICAgICAgIGl0LmVycm9yUGF0aCA9IGl0Lm9wdHMuanNvblBvaW50ZXJzID8gaXQudXRpbC5nZXRQYXRoRXhwcigkY3VycmVudEVycm9yUGF0aCwgJHByb3BlcnR5UGF0aCwgdHJ1ZSkgOiAkY3VycmVudEVycm9yUGF0aCArICcgKyAnICsgJHByb3BlcnR5UGF0aDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgICAgICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ3JlcXVpcmVkJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBtaXNzaW5nUHJvcGVydHk6IFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFwnIH0gJztcbiAgICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnJztcbiAgICAgICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICdpcyBhIHJlcXVpcmVkIHByb3BlcnR5JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG91dCArPSAnc2hvdWxkIGhhdmUgcmVxdWlyZWQgcHJvcGVydHkgXFxcXFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFxcXFxcJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQgKz0gJ1xcJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgaWYgKGl0LmFzeW5jKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcgdmFsaWRhdGUuZXJyb3JzID0gWycgKyAoX19lcnIpICsgJ107IHJldHVybiBmYWxzZTsgJztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcgdmFyIGVyciA9ICcgKyAoX19lcnIpICsgJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyAnO1xuICAgICAgICB9XG4gICAgICAgIG91dCArPSAnIH0gZWxzZSB7ICc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICgkbG9vcFJlcXVpcmVkKSB7XG4gICAgICAgIGlmICghJGlzRGF0YSkge1xuICAgICAgICAgIG91dCArPSAnIHZhciAnICsgKCR2U2NoZW1hKSArICcgPSB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICc7ICc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyICRpID0gJ2knICsgJGx2bCxcbiAgICAgICAgICAkcHJvcGVydHlQYXRoID0gJ3NjaGVtYScgKyAkbHZsICsgJ1snICsgJGkgKyAnXScsXG4gICAgICAgICAgJG1pc3NpbmdQcm9wZXJ0eSA9ICdcXCcgKyAnICsgJHByb3BlcnR5UGF0aCArICcgKyBcXCcnO1xuICAgICAgICBpZiAoaXQub3B0cy5fZXJyb3JEYXRhUGF0aFByb3BlcnR5KSB7XG4gICAgICAgICAgaXQuZXJyb3JQYXRoID0gaXQudXRpbC5nZXRQYXRoRXhwcigkY3VycmVudEVycm9yUGF0aCwgJHByb3BlcnR5UGF0aCwgaXQub3B0cy5qc29uUG9pbnRlcnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJHZTY2hlbWEpICsgJyAmJiAhQXJyYXkuaXNBcnJheSgnICsgKCR2U2NoZW1hKSArICcpKSB7ICB2YXIgZXJyID0gICAnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ3JlcXVpcmVkJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBtaXNzaW5nUHJvcGVydHk6IFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFwnIH0gJztcbiAgICAgICAgICAgIGlmIChpdC5vcHRzLm1lc3NhZ2VzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJyc7XG4gICAgICAgICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICBvdXQgKz0gJ2lzIGEgcmVxdWlyZWQgcHJvcGVydHknO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG91dCArPSAnc2hvdWxkIGhhdmUgcmVxdWlyZWQgcHJvcGVydHkgXFxcXFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFxcXFxcJyc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb3V0ICs9ICdcXCcgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgfSBlbHNlIGlmICgnICsgKCR2U2NoZW1hKSArICcgIT09IHVuZGVmaW5lZCkgeyAnO1xuICAgICAgICB9XG4gICAgICAgIG91dCArPSAnIGZvciAodmFyICcgKyAoJGkpICsgJyA9IDA7ICcgKyAoJGkpICsgJyA8ICcgKyAoJHZTY2hlbWEpICsgJy5sZW5ndGg7ICcgKyAoJGkpICsgJysrKSB7IGlmICgnICsgKCRkYXRhKSArICdbJyArICgkdlNjaGVtYSkgKyAnWycgKyAoJGkpICsgJ11dID09PSB1bmRlZmluZWQgJztcbiAgICAgICAgaWYgKCRvd25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgb3V0ICs9ICcgfHwgISBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoJyArICgkZGF0YSkgKyAnLCAnICsgKCR2U2NoZW1hKSArICdbJyArICgkaSkgKyAnXSkgJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJykgeyAgdmFyIGVyciA9ICAgJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJ3JlcXVpcmVkJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBtaXNzaW5nUHJvcGVydHk6IFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFwnIH0gJztcbiAgICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnICwgbWVzc2FnZTogXFwnJztcbiAgICAgICAgICAgIGlmIChpdC5vcHRzLl9lcnJvckRhdGFQYXRoUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgb3V0ICs9ICdpcyBhIHJlcXVpcmVkIHByb3BlcnR5JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG91dCArPSAnc2hvdWxkIGhhdmUgcmVxdWlyZWQgcHJvcGVydHkgXFxcXFxcJycgKyAoJG1pc3NpbmdQcm9wZXJ0eSkgKyAnXFxcXFxcJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQgKz0gJ1xcJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAsIHNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArICgkc2NoZW1hUGF0aCkgKyAnICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcge30gJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJzsgIGlmICh2RXJyb3JzID09PSBudWxsKSB2RXJyb3JzID0gW2Vycl07IGVsc2UgdkVycm9ycy5wdXNoKGVycik7IGVycm9ycysrOyB9IH0gJztcbiAgICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgICBvdXQgKz0gJyAgfSAgJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGFycjMgPSAkcmVxdWlyZWQ7XG4gICAgICAgIGlmIChhcnIzKSB7XG4gICAgICAgICAgdmFyICRwcm9wZXJ0eUtleSwgaTMgPSAtMSxcbiAgICAgICAgICAgIGwzID0gYXJyMy5sZW5ndGggLSAxO1xuICAgICAgICAgIHdoaWxlIChpMyA8IGwzKSB7XG4gICAgICAgICAgICAkcHJvcGVydHlLZXkgPSBhcnIzW2kzICs9IDFdO1xuICAgICAgICAgICAgdmFyICRwcm9wID0gaXQudXRpbC5nZXRQcm9wZXJ0eSgkcHJvcGVydHlLZXkpLFxuICAgICAgICAgICAgICAkbWlzc2luZ1Byb3BlcnR5ID0gaXQudXRpbC5lc2NhcGVRdW90ZXMoJHByb3BlcnR5S2V5KSxcbiAgICAgICAgICAgICAgJHVzZURhdGEgPSAkZGF0YSArICRwcm9wO1xuICAgICAgICAgICAgaWYgKGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICBpdC5lcnJvclBhdGggPSBpdC51dGlsLmdldFBhdGgoJGN1cnJlbnRFcnJvclBhdGgsICRwcm9wZXJ0eUtleSwgaXQub3B0cy5qc29uUG9pbnRlcnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICcgaWYgKCAnICsgKCR1c2VEYXRhKSArICcgPT09IHVuZGVmaW5lZCAnO1xuICAgICAgICAgICAgaWYgKCRvd25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnIHx8ICEgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKCcgKyAoJGRhdGEpICsgJywgXFwnJyArIChpdC51dGlsLmVzY2FwZVF1b3RlcygkcHJvcGVydHlLZXkpKSArICdcXCcpICc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQgKz0gJykgeyAgdmFyIGVyciA9ICAgJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIG91dCArPSAnIHsga2V5d29yZDogXFwnJyArICgncmVxdWlyZWQnKSArICdcXCcgLCBkYXRhUGF0aDogKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnICwgc2NoZW1hUGF0aDogJyArIChpdC51dGlsLnRvUXVvdGVkU3RyaW5nKCRlcnJTY2hlbWFQYXRoKSkgKyAnICwgcGFyYW1zOiB7IG1pc3NpbmdQcm9wZXJ0eTogXFwnJyArICgkbWlzc2luZ1Byb3BlcnR5KSArICdcXCcgfSAnO1xuICAgICAgICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJyc7XG4gICAgICAgICAgICAgICAgaWYgKGl0Lm9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICdpcyBhIHJlcXVpcmVkIHByb3BlcnR5JztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgb3V0ICs9ICdzaG91bGQgaGF2ZSByZXF1aXJlZCBwcm9wZXJ0eSBcXFxcXFwnJyArICgkbWlzc2luZ1Byb3BlcnR5KSArICdcXFxcXFwnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3V0ICs9ICdcXCcgJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvdXQgKz0gJyB7fSAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0ICs9ICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgfSAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpdC5lcnJvclBhdGggPSAkY3VycmVudEVycm9yUGF0aDtcbiAgfSBlbHNlIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgb3V0ICs9ICcgaWYgKHRydWUpIHsnO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlX3VuaXF1ZUl0ZW1zKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZGF0YSA9ICdkYXRhJyArICgkZGF0YUx2bCB8fCAnJyk7XG4gIHZhciAkdmFsaWQgPSAndmFsaWQnICsgJGx2bDtcbiAgdmFyICRpc0RhdGEgPSBpdC5vcHRzLiRkYXRhICYmICRzY2hlbWEgJiYgJHNjaGVtYS4kZGF0YSxcbiAgICAkc2NoZW1hVmFsdWU7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyIHNjaGVtYScgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLmdldERhdGEoJHNjaGVtYS4kZGF0YSwgJGRhdGFMdmwsIGl0LmRhdGFQYXRoQXJyKSkgKyAnOyAnO1xuICAgICRzY2hlbWFWYWx1ZSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgfSBlbHNlIHtcbiAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hO1xuICB9XG4gIGlmICgoJHNjaGVtYSB8fCAkaXNEYXRhKSAmJiBpdC5vcHRzLnVuaXF1ZUl0ZW1zICE9PSBmYWxzZSkge1xuICAgIGlmICgkaXNEYXRhKSB7XG4gICAgICBvdXQgKz0gJyB2YXIgJyArICgkdmFsaWQpICsgJzsgaWYgKCcgKyAoJHNjaGVtYVZhbHVlKSArICcgPT09IGZhbHNlIHx8ICcgKyAoJHNjaGVtYVZhbHVlKSArICcgPT09IHVuZGVmaW5lZCkgJyArICgkdmFsaWQpICsgJyA9IHRydWU7IGVsc2UgaWYgKHR5cGVvZiAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnICE9IFxcJ2Jvb2xlYW5cXCcpICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZTsgZWxzZSB7ICc7XG4gICAgfVxuICAgIG91dCArPSAnIHZhciBpID0gJyArICgkZGF0YSkgKyAnLmxlbmd0aCAsICcgKyAoJHZhbGlkKSArICcgPSB0cnVlICwgajsgaWYgKGkgPiAxKSB7ICc7XG4gICAgdmFyICRpdGVtVHlwZSA9IGl0LnNjaGVtYS5pdGVtcyAmJiBpdC5zY2hlbWEuaXRlbXMudHlwZSxcbiAgICAgICR0eXBlSXNBcnJheSA9IEFycmF5LmlzQXJyYXkoJGl0ZW1UeXBlKTtcbiAgICBpZiAoISRpdGVtVHlwZSB8fCAkaXRlbVR5cGUgPT0gJ29iamVjdCcgfHwgJGl0ZW1UeXBlID09ICdhcnJheScgfHwgKCR0eXBlSXNBcnJheSAmJiAoJGl0ZW1UeXBlLmluZGV4T2YoJ29iamVjdCcpID49IDAgfHwgJGl0ZW1UeXBlLmluZGV4T2YoJ2FycmF5JykgPj0gMCkpKSB7XG4gICAgICBvdXQgKz0gJyBvdXRlcjogZm9yICg7aS0tOykgeyBmb3IgKGogPSBpOyBqLS07KSB7IGlmIChlcXVhbCgnICsgKCRkYXRhKSArICdbaV0sICcgKyAoJGRhdGEpICsgJ1tqXSkpIHsgJyArICgkdmFsaWQpICsgJyA9IGZhbHNlOyBicmVhayBvdXRlcjsgfSB9IH0gJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICcgdmFyIGl0ZW1JbmRpY2VzID0ge30sIGl0ZW07IGZvciAoO2ktLTspIHsgdmFyIGl0ZW0gPSAnICsgKCRkYXRhKSArICdbaV07ICc7XG4gICAgICB2YXIgJG1ldGhvZCA9ICdjaGVja0RhdGFUeXBlJyArICgkdHlwZUlzQXJyYXkgPyAncycgOiAnJyk7XG4gICAgICBvdXQgKz0gJyBpZiAoJyArIChpdC51dGlsWyRtZXRob2RdKCRpdGVtVHlwZSwgJ2l0ZW0nLCBpdC5vcHRzLnN0cmljdE51bWJlcnMsIHRydWUpKSArICcpIGNvbnRpbnVlOyAnO1xuICAgICAgaWYgKCR0eXBlSXNBcnJheSkge1xuICAgICAgICBvdXQgKz0gJyBpZiAodHlwZW9mIGl0ZW0gPT0gXFwnc3RyaW5nXFwnKSBpdGVtID0gXFwnXCJcXCcgKyBpdGVtOyAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgaWYgKHR5cGVvZiBpdGVtSW5kaWNlc1tpdGVtXSA9PSBcXCdudW1iZXJcXCcpIHsgJyArICgkdmFsaWQpICsgJyA9IGZhbHNlOyBqID0gaXRlbUluZGljZXNbaXRlbV07IGJyZWFrOyB9IGl0ZW1JbmRpY2VzW2l0ZW1dID0gaTsgfSAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyB9ICc7XG4gICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgIG91dCArPSAnICB9ICAnO1xuICAgIH1cbiAgICBvdXQgKz0gJyBpZiAoIScgKyAoJHZhbGlkKSArICcpIHsgICAnO1xuICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICBvdXQgPSAnJzsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoaXQuY3JlYXRlRXJyb3JzICE9PSBmYWxzZSkge1xuICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCd1bmlxdWVJdGVtcycpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsgaTogaSwgajogaiB9ICc7XG4gICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgTk9UIGhhdmUgZHVwbGljYXRlIGl0ZW1zIChpdGVtcyAjIyBcXCcgKyBqICsgXFwnIGFuZCBcXCcgKyBpICsgXFwnIGFyZSBpZGVudGljYWwpXFwnICc7XG4gICAgICB9XG4gICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgIG91dCArPSAnICwgc2NoZW1hOiAgJztcbiAgICAgICAgaWYgKCRpc0RhdGEpIHtcbiAgICAgICAgICBvdXQgKz0gJ3ZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnJyArICgkc2NoZW1hKTtcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyAgICAgICAgICwgcGFyZW50U2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKGl0LnNjaGVtYVBhdGgpICsgJyAsIGRhdGE6ICcgKyAoJGRhdGEpICsgJyAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcgfSAnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB7fSAnO1xuICAgIH1cbiAgICB2YXIgX19lcnIgPSBvdXQ7XG4gICAgb3V0ID0gJCRvdXRTdGFjay5wb3AoKTtcbiAgICBpZiAoIWl0LmNvbXBvc2l0ZVJ1bGUgJiYgJGJyZWFrT25FcnJvcikge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgb3V0ICs9ICcgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbJyArIChfX2VycikgKyAnXSk7ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB2YWxpZGF0ZS5lcnJvcnMgPSBbJyArIChfX2VycikgKyAnXTsgcmV0dXJuIGZhbHNlOyAnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJyB2YXIgZXJyID0gJyArIChfX2VycikgKyAnOyAgaWYgKHZFcnJvcnMgPT09IG51bGwpIHZFcnJvcnMgPSBbZXJyXTsgZWxzZSB2RXJyb3JzLnB1c2goZXJyKTsgZXJyb3JzKys7ICc7XG4gICAgfVxuICAgIG91dCArPSAnIH0gJztcbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgZWxzZSB7ICc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICgkYnJlYWtPbkVycm9yKSB7XG4gICAgICBvdXQgKz0gJyBpZiAodHJ1ZSkgeyAnO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vL2FsbCByZXF1aXJlcyBtdXN0IGJlIGV4cGxpY2l0IGJlY2F1c2UgYnJvd3NlcmlmeSB3b24ndCB3b3JrIHdpdGggZHluYW1pYyByZXF1aXJlc1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gICckcmVmJzogcmVxdWlyZSgnLi9yZWYnKSxcbiAgYWxsT2Y6IHJlcXVpcmUoJy4vYWxsT2YnKSxcbiAgYW55T2Y6IHJlcXVpcmUoJy4vYW55T2YnKSxcbiAgJyRjb21tZW50JzogcmVxdWlyZSgnLi9jb21tZW50JyksXG4gIGNvbnN0OiByZXF1aXJlKCcuL2NvbnN0JyksXG4gIGNvbnRhaW5zOiByZXF1aXJlKCcuL2NvbnRhaW5zJyksXG4gIGRlcGVuZGVuY2llczogcmVxdWlyZSgnLi9kZXBlbmRlbmNpZXMnKSxcbiAgJ2VudW0nOiByZXF1aXJlKCcuL2VudW0nKSxcbiAgZm9ybWF0OiByZXF1aXJlKCcuL2Zvcm1hdCcpLFxuICAnaWYnOiByZXF1aXJlKCcuL2lmJyksXG4gIGl0ZW1zOiByZXF1aXJlKCcuL2l0ZW1zJyksXG4gIG1heGltdW06IHJlcXVpcmUoJy4vX2xpbWl0JyksXG4gIG1pbmltdW06IHJlcXVpcmUoJy4vX2xpbWl0JyksXG4gIG1heEl0ZW1zOiByZXF1aXJlKCcuL19saW1pdEl0ZW1zJyksXG4gIG1pbkl0ZW1zOiByZXF1aXJlKCcuL19saW1pdEl0ZW1zJyksXG4gIG1heExlbmd0aDogcmVxdWlyZSgnLi9fbGltaXRMZW5ndGgnKSxcbiAgbWluTGVuZ3RoOiByZXF1aXJlKCcuL19saW1pdExlbmd0aCcpLFxuICBtYXhQcm9wZXJ0aWVzOiByZXF1aXJlKCcuL19saW1pdFByb3BlcnRpZXMnKSxcbiAgbWluUHJvcGVydGllczogcmVxdWlyZSgnLi9fbGltaXRQcm9wZXJ0aWVzJyksXG4gIG11bHRpcGxlT2Y6IHJlcXVpcmUoJy4vbXVsdGlwbGVPZicpLFxuICBub3Q6IHJlcXVpcmUoJy4vbm90JyksXG4gIG9uZU9mOiByZXF1aXJlKCcuL29uZU9mJyksXG4gIHBhdHRlcm46IHJlcXVpcmUoJy4vcGF0dGVybicpLFxuICBwcm9wZXJ0aWVzOiByZXF1aXJlKCcuL3Byb3BlcnRpZXMnKSxcbiAgcHJvcGVydHlOYW1lczogcmVxdWlyZSgnLi9wcm9wZXJ0eU5hbWVzJyksXG4gIHJlcXVpcmVkOiByZXF1aXJlKCcuL3JlcXVpcmVkJyksXG4gIHVuaXF1ZUl0ZW1zOiByZXF1aXJlKCcuL3VuaXF1ZUl0ZW1zJyksXG4gIHZhbGlkYXRlOiByZXF1aXJlKCcuL3ZhbGlkYXRlJylcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBydWxlTW9kdWxlcyA9IHJlcXVpcmUoJy4uL2RvdGpzJylcbiAgLCB0b0hhc2ggPSByZXF1aXJlKCcuL3V0aWwnKS50b0hhc2g7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcnVsZXMoKSB7XG4gIHZhciBSVUxFUyA9IFtcbiAgICB7IHR5cGU6ICdudW1iZXInLFxuICAgICAgcnVsZXM6IFsgeyAnbWF4aW11bSc6IFsnZXhjbHVzaXZlTWF4aW11bSddIH0sXG4gICAgICAgICAgICAgICB7ICdtaW5pbXVtJzogWydleGNsdXNpdmVNaW5pbXVtJ10gfSwgJ211bHRpcGxlT2YnLCAnZm9ybWF0J10gfSxcbiAgICB7IHR5cGU6ICdzdHJpbmcnLFxuICAgICAgcnVsZXM6IFsgJ21heExlbmd0aCcsICdtaW5MZW5ndGgnLCAncGF0dGVybicsICdmb3JtYXQnIF0gfSxcbiAgICB7IHR5cGU6ICdhcnJheScsXG4gICAgICBydWxlczogWyAnbWF4SXRlbXMnLCAnbWluSXRlbXMnLCAnaXRlbXMnLCAnY29udGFpbnMnLCAndW5pcXVlSXRlbXMnIF0gfSxcbiAgICB7IHR5cGU6ICdvYmplY3QnLFxuICAgICAgcnVsZXM6IFsgJ21heFByb3BlcnRpZXMnLCAnbWluUHJvcGVydGllcycsICdyZXF1aXJlZCcsICdkZXBlbmRlbmNpZXMnLCAncHJvcGVydHlOYW1lcycsXG4gICAgICAgICAgICAgICB7ICdwcm9wZXJ0aWVzJzogWydhZGRpdGlvbmFsUHJvcGVydGllcycsICdwYXR0ZXJuUHJvcGVydGllcyddIH0gXSB9LFxuICAgIHsgcnVsZXM6IFsgJyRyZWYnLCAnY29uc3QnLCAnZW51bScsICdub3QnLCAnYW55T2YnLCAnb25lT2YnLCAnYWxsT2YnLCAnaWYnIF0gfVxuICBdO1xuXG4gIHZhciBBTEwgPSBbICd0eXBlJywgJyRjb21tZW50JyBdO1xuICB2YXIgS0VZV09SRFMgPSBbXG4gICAgJyRzY2hlbWEnLCAnJGlkJywgJ2lkJywgJyRkYXRhJywgJyRhc3luYycsICd0aXRsZScsXG4gICAgJ2Rlc2NyaXB0aW9uJywgJ2RlZmF1bHQnLCAnZGVmaW5pdGlvbnMnLFxuICAgICdleGFtcGxlcycsICdyZWFkT25seScsICd3cml0ZU9ubHknLFxuICAgICdjb250ZW50TWVkaWFUeXBlJywgJ2NvbnRlbnRFbmNvZGluZycsXG4gICAgJ2FkZGl0aW9uYWxJdGVtcycsICd0aGVuJywgJ2Vsc2UnXG4gIF07XG4gIHZhciBUWVBFUyA9IFsgJ251bWJlcicsICdpbnRlZ2VyJywgJ3N0cmluZycsICdhcnJheScsICdvYmplY3QnLCAnYm9vbGVhbicsICdudWxsJyBdO1xuICBSVUxFUy5hbGwgPSB0b0hhc2goQUxMKTtcbiAgUlVMRVMudHlwZXMgPSB0b0hhc2goVFlQRVMpO1xuXG4gIFJVTEVTLmZvckVhY2goZnVuY3Rpb24gKGdyb3VwKSB7XG4gICAgZ3JvdXAucnVsZXMgPSBncm91cC5ydWxlcy5tYXAoZnVuY3Rpb24gKGtleXdvcmQpIHtcbiAgICAgIHZhciBpbXBsS2V5d29yZHM7XG4gICAgICBpZiAodHlwZW9mIGtleXdvcmQgPT0gJ29iamVjdCcpIHtcbiAgICAgICAgdmFyIGtleSA9IE9iamVjdC5rZXlzKGtleXdvcmQpWzBdO1xuICAgICAgICBpbXBsS2V5d29yZHMgPSBrZXl3b3JkW2tleV07XG4gICAgICAgIGtleXdvcmQgPSBrZXk7XG4gICAgICAgIGltcGxLZXl3b3Jkcy5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgICAgQUxMLnB1c2goayk7XG4gICAgICAgICAgUlVMRVMuYWxsW2tdID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBBTEwucHVzaChrZXl3b3JkKTtcbiAgICAgIHZhciBydWxlID0gUlVMRVMuYWxsW2tleXdvcmRdID0ge1xuICAgICAgICBrZXl3b3JkOiBrZXl3b3JkLFxuICAgICAgICBjb2RlOiBydWxlTW9kdWxlc1trZXl3b3JkXSxcbiAgICAgICAgaW1wbGVtZW50czogaW1wbEtleXdvcmRzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJ1bGU7XG4gICAgfSk7XG5cbiAgICBSVUxFUy5hbGwuJGNvbW1lbnQgPSB7XG4gICAgICBrZXl3b3JkOiAnJGNvbW1lbnQnLFxuICAgICAgY29kZTogcnVsZU1vZHVsZXMuJGNvbW1lbnRcbiAgICB9O1xuXG4gICAgaWYgKGdyb3VwLnR5cGUpIFJVTEVTLnR5cGVzW2dyb3VwLnR5cGVdID0gZ3JvdXA7XG4gIH0pO1xuXG4gIFJVTEVTLmtleXdvcmRzID0gdG9IYXNoKEFMTC5jb25jYXQoS0VZV09SRFMpKTtcbiAgUlVMRVMuY3VzdG9tID0ge307XG5cbiAgcmV0dXJuIFJVTEVTO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEtFWVdPUkRTID0gW1xuICAnbXVsdGlwbGVPZicsXG4gICdtYXhpbXVtJyxcbiAgJ2V4Y2x1c2l2ZU1heGltdW0nLFxuICAnbWluaW11bScsXG4gICdleGNsdXNpdmVNaW5pbXVtJyxcbiAgJ21heExlbmd0aCcsXG4gICdtaW5MZW5ndGgnLFxuICAncGF0dGVybicsXG4gICdhZGRpdGlvbmFsSXRlbXMnLFxuICAnbWF4SXRlbXMnLFxuICAnbWluSXRlbXMnLFxuICAndW5pcXVlSXRlbXMnLFxuICAnbWF4UHJvcGVydGllcycsXG4gICdtaW5Qcm9wZXJ0aWVzJyxcbiAgJ3JlcXVpcmVkJyxcbiAgJ2FkZGl0aW9uYWxQcm9wZXJ0aWVzJyxcbiAgJ2VudW0nLFxuICAnZm9ybWF0JyxcbiAgJ2NvbnN0J1xuXTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobWV0YVNjaGVtYSwga2V5d29yZHNKc29uUG9pbnRlcnMpIHtcbiAgZm9yICh2YXIgaT0wOyBpPGtleXdvcmRzSnNvblBvaW50ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgbWV0YVNjaGVtYSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobWV0YVNjaGVtYSkpO1xuICAgIHZhciBzZWdtZW50cyA9IGtleXdvcmRzSnNvblBvaW50ZXJzW2ldLnNwbGl0KCcvJyk7XG4gICAgdmFyIGtleXdvcmRzID0gbWV0YVNjaGVtYTtcbiAgICB2YXIgajtcbiAgICBmb3IgKGo9MTsgajxzZWdtZW50cy5sZW5ndGg7IGorKylcbiAgICAgIGtleXdvcmRzID0ga2V5d29yZHNbc2VnbWVudHNbal1dO1xuXG4gICAgZm9yIChqPTA7IGo8S0VZV09SRFMubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBrZXkgPSBLRVlXT1JEU1tqXTtcbiAgICAgIHZhciBzY2hlbWEgPSBrZXl3b3Jkc1trZXldO1xuICAgICAgaWYgKHNjaGVtYSkge1xuICAgICAgICBrZXl3b3Jkc1trZXldID0ge1xuICAgICAgICAgIGFueU9mOiBbXG4gICAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgICB7ICRyZWY6ICdodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYWp2LXZhbGlkYXRvci9hanYvbWFzdGVyL2xpYi9yZWZzL2RhdGEuanNvbiMnIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1ldGFTY2hlbWE7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgTWlzc2luZ1JlZkVycm9yID0gcmVxdWlyZSgnLi9lcnJvcl9jbGFzc2VzJykuTWlzc2luZ1JlZjtcblxubW9kdWxlLmV4cG9ydHMgPSBjb21waWxlQXN5bmM7XG5cblxuLyoqXG4gKiBDcmVhdGVzIHZhbGlkYXRpbmcgZnVuY3Rpb24gZm9yIHBhc3NlZCBzY2hlbWEgd2l0aCBhc3luY2hyb25vdXMgbG9hZGluZyBvZiBtaXNzaW5nIHNjaGVtYXMuXG4gKiBgbG9hZFNjaGVtYWAgb3B0aW9uIHNob3VsZCBiZSBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBzY2hlbWEgdXJpIGFuZCByZXR1cm5zIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBzY2hlbWEuXG4gKiBAdGhpcyAgQWp2XG4gKiBAcGFyYW0ge09iamVjdH0gICBzY2hlbWEgc2NoZW1hIG9iamVjdFxuICogQHBhcmFtIHtCb29sZWFufSAgbWV0YSBvcHRpb25hbCB0cnVlIHRvIGNvbXBpbGUgbWV0YS1zY2hlbWE7IHRoaXMgcGFyYW1ldGVyIGNhbiBiZSBza2lwcGVkXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBhbiBvcHRpb25hbCBub2RlLXN0eWxlIGNhbGxiYWNrLCBpdCBpcyBjYWxsZWQgd2l0aCAyIHBhcmFtZXRlcnM6IGVycm9yIChvciBudWxsKSBhbmQgdmFsaWRhdGluZyBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge1Byb21pc2V9IHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGEgdmFsaWRhdGluZyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY29tcGlsZUFzeW5jKHNjaGVtYSwgbWV0YSwgY2FsbGJhY2spIHtcbiAgLyogZXNsaW50IG5vLXNoYWRvdzogMCAqL1xuICAvKiBnbG9iYWwgUHJvbWlzZSAqL1xuICAvKiBqc2hpbnQgdmFsaWR0aGlzOiB0cnVlICovXG4gIHZhciBzZWxmID0gdGhpcztcbiAgaWYgKHR5cGVvZiB0aGlzLl9vcHRzLmxvYWRTY2hlbWEgIT0gJ2Z1bmN0aW9uJylcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ29wdGlvbnMubG9hZFNjaGVtYSBzaG91bGQgYmUgYSBmdW5jdGlvbicpO1xuXG4gIGlmICh0eXBlb2YgbWV0YSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBtZXRhO1xuICAgIG1ldGEgPSB1bmRlZmluZWQ7XG4gIH1cblxuICB2YXIgcCA9IGxvYWRNZXRhU2NoZW1hT2Yoc2NoZW1hKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2NoZW1hT2JqID0gc2VsZi5fYWRkU2NoZW1hKHNjaGVtYSwgdW5kZWZpbmVkLCBtZXRhKTtcbiAgICByZXR1cm4gc2NoZW1hT2JqLnZhbGlkYXRlIHx8IF9jb21waWxlQXN5bmMoc2NoZW1hT2JqKTtcbiAgfSk7XG5cbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgcC50aGVuKFxuICAgICAgZnVuY3Rpb24odikgeyBjYWxsYmFjayhudWxsLCB2KTsgfSxcbiAgICAgIGNhbGxiYWNrXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBwO1xuXG5cbiAgZnVuY3Rpb24gbG9hZE1ldGFTY2hlbWFPZihzY2gpIHtcbiAgICB2YXIgJHNjaGVtYSA9IHNjaC4kc2NoZW1hO1xuICAgIHJldHVybiAkc2NoZW1hICYmICFzZWxmLmdldFNjaGVtYSgkc2NoZW1hKVxuICAgICAgICAgICAgPyBjb21waWxlQXN5bmMuY2FsbChzZWxmLCB7ICRyZWY6ICRzY2hlbWEgfSwgdHJ1ZSlcbiAgICAgICAgICAgIDogUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuXG4gIGZ1bmN0aW9uIF9jb21waWxlQXN5bmMoc2NoZW1hT2JqKSB7XG4gICAgdHJ5IHsgcmV0dXJuIHNlbGYuX2NvbXBpbGUoc2NoZW1hT2JqKTsgfVxuICAgIGNhdGNoKGUpIHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgTWlzc2luZ1JlZkVycm9yKSByZXR1cm4gbG9hZE1pc3NpbmdTY2hlbWEoZSk7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gbG9hZE1pc3NpbmdTY2hlbWEoZSkge1xuICAgICAgdmFyIHJlZiA9IGUubWlzc2luZ1NjaGVtYTtcbiAgICAgIGlmIChhZGRlZChyZWYpKSB0aHJvdyBuZXcgRXJyb3IoJ1NjaGVtYSAnICsgcmVmICsgJyBpcyBsb2FkZWQgYnV0ICcgKyBlLm1pc3NpbmdSZWYgKyAnIGNhbm5vdCBiZSByZXNvbHZlZCcpO1xuXG4gICAgICB2YXIgc2NoZW1hUHJvbWlzZSA9IHNlbGYuX2xvYWRpbmdTY2hlbWFzW3JlZl07XG4gICAgICBpZiAoIXNjaGVtYVByb21pc2UpIHtcbiAgICAgICAgc2NoZW1hUHJvbWlzZSA9IHNlbGYuX2xvYWRpbmdTY2hlbWFzW3JlZl0gPSBzZWxmLl9vcHRzLmxvYWRTY2hlbWEocmVmKTtcbiAgICAgICAgc2NoZW1hUHJvbWlzZS50aGVuKHJlbW92ZVByb21pc2UsIHJlbW92ZVByb21pc2UpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2NoZW1hUHJvbWlzZS50aGVuKGZ1bmN0aW9uIChzY2gpIHtcbiAgICAgICAgaWYgKCFhZGRlZChyZWYpKSB7XG4gICAgICAgICAgcmV0dXJuIGxvYWRNZXRhU2NoZW1hT2Yoc2NoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICghYWRkZWQocmVmKSkgc2VsZi5hZGRTY2hlbWEoc2NoLCByZWYsIHVuZGVmaW5lZCwgbWV0YSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pLnRoZW4oZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfY29tcGlsZUFzeW5jKHNjaGVtYU9iaik7XG4gICAgICB9KTtcblxuICAgICAgZnVuY3Rpb24gcmVtb3ZlUHJvbWlzZSgpIHtcbiAgICAgICAgZGVsZXRlIHNlbGYuX2xvYWRpbmdTY2hlbWFzW3JlZl07XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGFkZGVkKHJlZikge1xuICAgICAgICByZXR1cm4gc2VsZi5fcmVmc1tyZWZdIHx8IHNlbGYuX3NjaGVtYXNbcmVmXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2VuZXJhdGVfY3VzdG9tKGl0LCAka2V5d29yZCwgJHJ1bGVUeXBlKSB7XG4gIHZhciBvdXQgPSAnICc7XG4gIHZhciAkbHZsID0gaXQubGV2ZWw7XG4gIHZhciAkZGF0YUx2bCA9IGl0LmRhdGFMZXZlbDtcbiAgdmFyICRzY2hlbWEgPSBpdC5zY2hlbWFbJGtleXdvcmRdO1xuICB2YXIgJHNjaGVtYVBhdGggPSBpdC5zY2hlbWFQYXRoICsgaXQudXRpbC5nZXRQcm9wZXJ0eSgka2V5d29yZCk7XG4gIHZhciAkZXJyU2NoZW1hUGF0aCA9IGl0LmVyclNjaGVtYVBhdGggKyAnLycgKyAka2V5d29yZDtcbiAgdmFyICRicmVha09uRXJyb3IgPSAhaXQub3B0cy5hbGxFcnJvcnM7XG4gIHZhciAkZXJyb3JLZXl3b3JkO1xuICB2YXIgJGRhdGEgPSAnZGF0YScgKyAoJGRhdGFMdmwgfHwgJycpO1xuICB2YXIgJHZhbGlkID0gJ3ZhbGlkJyArICRsdmw7XG4gIHZhciAkZXJycyA9ICdlcnJzX18nICsgJGx2bDtcbiAgdmFyICRpc0RhdGEgPSBpdC5vcHRzLiRkYXRhICYmICRzY2hlbWEgJiYgJHNjaGVtYS4kZGF0YSxcbiAgICAkc2NoZW1hVmFsdWU7XG4gIGlmICgkaXNEYXRhKSB7XG4gICAgb3V0ICs9ICcgdmFyIHNjaGVtYScgKyAoJGx2bCkgKyAnID0gJyArIChpdC51dGlsLmdldERhdGEoJHNjaGVtYS4kZGF0YSwgJGRhdGFMdmwsIGl0LmRhdGFQYXRoQXJyKSkgKyAnOyAnO1xuICAgICRzY2hlbWFWYWx1ZSA9ICdzY2hlbWEnICsgJGx2bDtcbiAgfSBlbHNlIHtcbiAgICAkc2NoZW1hVmFsdWUgPSAkc2NoZW1hO1xuICB9XG4gIHZhciAkcnVsZSA9IHRoaXMsXG4gICAgJGRlZmluaXRpb24gPSAnZGVmaW5pdGlvbicgKyAkbHZsLFxuICAgICRyRGVmID0gJHJ1bGUuZGVmaW5pdGlvbixcbiAgICAkY2xvc2luZ0JyYWNlcyA9ICcnO1xuICB2YXIgJGNvbXBpbGUsICRpbmxpbmUsICRtYWNybywgJHJ1bGVWYWxpZGF0ZSwgJHZhbGlkYXRlQ29kZTtcbiAgaWYgKCRpc0RhdGEgJiYgJHJEZWYuJGRhdGEpIHtcbiAgICAkdmFsaWRhdGVDb2RlID0gJ2tleXdvcmRWYWxpZGF0ZScgKyAkbHZsO1xuICAgIHZhciAkdmFsaWRhdGVTY2hlbWEgPSAkckRlZi52YWxpZGF0ZVNjaGVtYTtcbiAgICBvdXQgKz0gJyB2YXIgJyArICgkZGVmaW5pdGlvbikgKyAnID0gUlVMRVMuY3VzdG9tW1xcJycgKyAoJGtleXdvcmQpICsgJ1xcJ10uZGVmaW5pdGlvbjsgdmFyICcgKyAoJHZhbGlkYXRlQ29kZSkgKyAnID0gJyArICgkZGVmaW5pdGlvbikgKyAnLnZhbGlkYXRlOyc7XG4gIH0gZWxzZSB7XG4gICAgJHJ1bGVWYWxpZGF0ZSA9IGl0LnVzZUN1c3RvbVJ1bGUoJHJ1bGUsICRzY2hlbWEsIGl0LnNjaGVtYSwgaXQpO1xuICAgIGlmICghJHJ1bGVWYWxpZGF0ZSkgcmV0dXJuO1xuICAgICRzY2hlbWFWYWx1ZSA9ICd2YWxpZGF0ZS5zY2hlbWEnICsgJHNjaGVtYVBhdGg7XG4gICAgJHZhbGlkYXRlQ29kZSA9ICRydWxlVmFsaWRhdGUuY29kZTtcbiAgICAkY29tcGlsZSA9ICRyRGVmLmNvbXBpbGU7XG4gICAgJGlubGluZSA9ICRyRGVmLmlubGluZTtcbiAgICAkbWFjcm8gPSAkckRlZi5tYWNybztcbiAgfVxuICB2YXIgJHJ1bGVFcnJzID0gJHZhbGlkYXRlQ29kZSArICcuZXJyb3JzJyxcbiAgICAkaSA9ICdpJyArICRsdmwsXG4gICAgJHJ1bGVFcnIgPSAncnVsZUVycicgKyAkbHZsLFxuICAgICRhc3luY0tleXdvcmQgPSAkckRlZi5hc3luYztcbiAgaWYgKCRhc3luY0tleXdvcmQgJiYgIWl0LmFzeW5jKSB0aHJvdyBuZXcgRXJyb3IoJ2FzeW5jIGtleXdvcmQgaW4gc3luYyBzY2hlbWEnKTtcbiAgaWYgKCEoJGlubGluZSB8fCAkbWFjcm8pKSB7XG4gICAgb3V0ICs9ICcnICsgKCRydWxlRXJycykgKyAnID0gbnVsbDsnO1xuICB9XG4gIG91dCArPSAndmFyICcgKyAoJGVycnMpICsgJyA9IGVycm9yczt2YXIgJyArICgkdmFsaWQpICsgJzsnO1xuICBpZiAoJGlzRGF0YSAmJiAkckRlZi4kZGF0YSkge1xuICAgICRjbG9zaW5nQnJhY2VzICs9ICd9JztcbiAgICBvdXQgKz0gJyBpZiAoJyArICgkc2NoZW1hVmFsdWUpICsgJyA9PT0gdW5kZWZpbmVkKSB7ICcgKyAoJHZhbGlkKSArICcgPSB0cnVlOyB9IGVsc2UgeyAnO1xuICAgIGlmICgkdmFsaWRhdGVTY2hlbWEpIHtcbiAgICAgICRjbG9zaW5nQnJhY2VzICs9ICd9JztcbiAgICAgIG91dCArPSAnICcgKyAoJHZhbGlkKSArICcgPSAnICsgKCRkZWZpbml0aW9uKSArICcudmFsaWRhdGVTY2hlbWEoJyArICgkc2NoZW1hVmFsdWUpICsgJyk7IGlmICgnICsgKCR2YWxpZCkgKyAnKSB7ICc7XG4gICAgfVxuICB9XG4gIGlmICgkaW5saW5lKSB7XG4gICAgaWYgKCRyRGVmLnN0YXRlbWVudHMpIHtcbiAgICAgIG91dCArPSAnICcgKyAoJHJ1bGVWYWxpZGF0ZS52YWxpZGF0ZSkgKyAnICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnICcgKyAoJHZhbGlkKSArICcgPSAnICsgKCRydWxlVmFsaWRhdGUudmFsaWRhdGUpICsgJzsgJztcbiAgICB9XG4gIH0gZWxzZSBpZiAoJG1hY3JvKSB7XG4gICAgdmFyICRpdCA9IGl0LnV0aWwuY29weShpdCk7XG4gICAgdmFyICRjbG9zaW5nQnJhY2VzID0gJyc7XG4gICAgJGl0LmxldmVsKys7XG4gICAgdmFyICRuZXh0VmFsaWQgPSAndmFsaWQnICsgJGl0LmxldmVsO1xuICAgICRpdC5zY2hlbWEgPSAkcnVsZVZhbGlkYXRlLnZhbGlkYXRlO1xuICAgICRpdC5zY2hlbWFQYXRoID0gJyc7XG4gICAgdmFyICR3YXNDb21wb3NpdGUgPSBpdC5jb21wb3NpdGVSdWxlO1xuICAgIGl0LmNvbXBvc2l0ZVJ1bGUgPSAkaXQuY29tcG9zaXRlUnVsZSA9IHRydWU7XG4gICAgdmFyICRjb2RlID0gaXQudmFsaWRhdGUoJGl0KS5yZXBsYWNlKC92YWxpZGF0ZVxcLnNjaGVtYS9nLCAkdmFsaWRhdGVDb2RlKTtcbiAgICBpdC5jb21wb3NpdGVSdWxlID0gJGl0LmNvbXBvc2l0ZVJ1bGUgPSAkd2FzQ29tcG9zaXRlO1xuICAgIG91dCArPSAnICcgKyAoJGNvZGUpO1xuICB9IGVsc2Uge1xuICAgIHZhciAkJG91dFN0YWNrID0gJCRvdXRTdGFjayB8fCBbXTtcbiAgICAkJG91dFN0YWNrLnB1c2gob3V0KTtcbiAgICBvdXQgPSAnJztcbiAgICBvdXQgKz0gJyAgJyArICgkdmFsaWRhdGVDb2RlKSArICcuY2FsbCggJztcbiAgICBpZiAoaXQub3B0cy5wYXNzQ29udGV4dCkge1xuICAgICAgb3V0ICs9ICd0aGlzJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICdzZWxmJztcbiAgICB9XG4gICAgaWYgKCRjb21waWxlIHx8ICRyRGVmLnNjaGVtYSA9PT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnICwgJyArICgkZGF0YSkgKyAnICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnICwgJyArICgkc2NoZW1hVmFsdWUpICsgJyAsICcgKyAoJGRhdGEpICsgJyAsIHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICc7XG4gICAgfVxuICAgIG91dCArPSAnICwgKGRhdGFQYXRoIHx8IFxcJ1xcJyknO1xuICAgIGlmIChpdC5lcnJvclBhdGggIT0gJ1wiXCInKSB7XG4gICAgICBvdXQgKz0gJyArICcgKyAoaXQuZXJyb3JQYXRoKTtcbiAgICB9XG4gICAgdmFyICRwYXJlbnREYXRhID0gJGRhdGFMdmwgPyAnZGF0YScgKyAoKCRkYXRhTHZsIC0gMSkgfHwgJycpIDogJ3BhcmVudERhdGEnLFxuICAgICAgJHBhcmVudERhdGFQcm9wZXJ0eSA9ICRkYXRhTHZsID8gaXQuZGF0YVBhdGhBcnJbJGRhdGFMdmxdIDogJ3BhcmVudERhdGFQcm9wZXJ0eSc7XG4gICAgb3V0ICs9ICcgLCAnICsgKCRwYXJlbnREYXRhKSArICcgLCAnICsgKCRwYXJlbnREYXRhUHJvcGVydHkpICsgJyAsIHJvb3REYXRhICkgICc7XG4gICAgdmFyIGRlZl9jYWxsUnVsZVZhbGlkYXRlID0gb3V0O1xuICAgIG91dCA9ICQkb3V0U3RhY2sucG9wKCk7XG4gICAgaWYgKCRyRGVmLmVycm9ycyA9PT0gZmFsc2UpIHtcbiAgICAgIG91dCArPSAnICcgKyAoJHZhbGlkKSArICcgPSAnO1xuICAgICAgaWYgKCRhc3luY0tleXdvcmQpIHtcbiAgICAgICAgb3V0ICs9ICdhd2FpdCAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICcnICsgKGRlZl9jYWxsUnVsZVZhbGlkYXRlKSArICc7ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICgkYXN5bmNLZXl3b3JkKSB7XG4gICAgICAgICRydWxlRXJycyA9ICdjdXN0b21FcnJvcnMnICsgJGx2bDtcbiAgICAgICAgb3V0ICs9ICcgdmFyICcgKyAoJHJ1bGVFcnJzKSArICcgPSBudWxsOyB0cnkgeyAnICsgKCR2YWxpZCkgKyAnID0gYXdhaXQgJyArIChkZWZfY2FsbFJ1bGVWYWxpZGF0ZSkgKyAnOyB9IGNhdGNoIChlKSB7ICcgKyAoJHZhbGlkKSArICcgPSBmYWxzZTsgaWYgKGUgaW5zdGFuY2VvZiBWYWxpZGF0aW9uRXJyb3IpICcgKyAoJHJ1bGVFcnJzKSArICcgPSBlLmVycm9yczsgZWxzZSB0aHJvdyBlOyB9ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyAnICsgKCRydWxlRXJycykgKyAnID0gbnVsbDsgJyArICgkdmFsaWQpICsgJyA9ICcgKyAoZGVmX2NhbGxSdWxlVmFsaWRhdGUpICsgJzsgJztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCRyRGVmLm1vZGlmeWluZykge1xuICAgIG91dCArPSAnIGlmICgnICsgKCRwYXJlbnREYXRhKSArICcpICcgKyAoJGRhdGEpICsgJyA9ICcgKyAoJHBhcmVudERhdGEpICsgJ1snICsgKCRwYXJlbnREYXRhUHJvcGVydHkpICsgJ107JztcbiAgfVxuICBvdXQgKz0gJycgKyAoJGNsb3NpbmdCcmFjZXMpO1xuICBpZiAoJHJEZWYudmFsaWQpIHtcbiAgICBpZiAoJGJyZWFrT25FcnJvcikge1xuICAgICAgb3V0ICs9ICcgaWYgKHRydWUpIHsgJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb3V0ICs9ICcgaWYgKCAnO1xuICAgIGlmICgkckRlZi52YWxpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBvdXQgKz0gJyAhJztcbiAgICAgIGlmICgkbWFjcm8pIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKCRuZXh0VmFsaWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9ICcnICsgKCR2YWxpZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnICcgKyAoISRyRGVmLnZhbGlkKSArICcgJztcbiAgICB9XG4gICAgb3V0ICs9ICcpIHsgJztcbiAgICAkZXJyb3JLZXl3b3JkID0gJHJ1bGUua2V5d29yZDtcbiAgICB2YXIgJCRvdXRTdGFjayA9ICQkb3V0U3RhY2sgfHwgW107XG4gICAgJCRvdXRTdGFjay5wdXNoKG91dCk7XG4gICAgb3V0ID0gJyc7XG4gICAgdmFyICQkb3V0U3RhY2sgPSAkJG91dFN0YWNrIHx8IFtdO1xuICAgICQkb3V0U3RhY2sucHVzaChvdXQpO1xuICAgIG91dCA9ICcnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpdC5jcmVhdGVFcnJvcnMgIT09IGZhbHNlKSB7XG4gICAgICBvdXQgKz0gJyB7IGtleXdvcmQ6IFxcJycgKyAoJGVycm9yS2V5d29yZCB8fCAnY3VzdG9tJykgKyAnXFwnICwgZGF0YVBhdGg6IChkYXRhUGF0aCB8fCBcXCdcXCcpICsgJyArIChpdC5lcnJvclBhdGgpICsgJyAsIHNjaGVtYVBhdGg6ICcgKyAoaXQudXRpbC50b1F1b3RlZFN0cmluZygkZXJyU2NoZW1hUGF0aCkpICsgJyAsIHBhcmFtczogeyBrZXl3b3JkOiBcXCcnICsgKCRydWxlLmtleXdvcmQpICsgJ1xcJyB9ICc7XG4gICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgLCBtZXNzYWdlOiBcXCdzaG91bGQgcGFzcyBcIicgKyAoJHJ1bGUua2V5d29yZCkgKyAnXCIga2V5d29yZCB2YWxpZGF0aW9uXFwnICc7XG4gICAgICB9XG4gICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgIG91dCArPSAnICwgc2NoZW1hOiB2YWxpZGF0ZS5zY2hlbWEnICsgKCRzY2hlbWFQYXRoKSArICcgLCBwYXJlbnRTY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoaXQuc2NoZW1hUGF0aCkgKyAnICwgZGF0YTogJyArICgkZGF0YSkgKyAnICc7XG4gICAgICB9XG4gICAgICBvdXQgKz0gJyB9ICc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHt9ICc7XG4gICAgfVxuICAgIHZhciBfX2VyciA9IG91dDtcbiAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChpdC5hc3luYykge1xuICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFsnICsgKF9fZXJyKSArICddKTsgJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IFsnICsgKF9fZXJyKSArICddOyByZXR1cm4gZmFsc2U7ICc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnIHZhciBlcnIgPSAnICsgKF9fZXJyKSArICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICB9XG4gICAgdmFyIGRlZl9jdXN0b21FcnJvciA9IG91dDtcbiAgICBvdXQgPSAkJG91dFN0YWNrLnBvcCgpO1xuICAgIGlmICgkaW5saW5lKSB7XG4gICAgICBpZiAoJHJEZWYuZXJyb3JzKSB7XG4gICAgICAgIGlmICgkckRlZi5lcnJvcnMgIT0gJ2Z1bGwnKSB7XG4gICAgICAgICAgb3V0ICs9ICcgIGZvciAodmFyICcgKyAoJGkpICsgJz0nICsgKCRlcnJzKSArICc7ICcgKyAoJGkpICsgJzxlcnJvcnM7ICcgKyAoJGkpICsgJysrKSB7IHZhciAnICsgKCRydWxlRXJyKSArICcgPSB2RXJyb3JzWycgKyAoJGkpICsgJ107IGlmICgnICsgKCRydWxlRXJyKSArICcuZGF0YVBhdGggPT09IHVuZGVmaW5lZCkgJyArICgkcnVsZUVycikgKyAnLmRhdGFQYXRoID0gKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnOyBpZiAoJyArICgkcnVsZUVycikgKyAnLnNjaGVtYVBhdGggPT09IHVuZGVmaW5lZCkgeyAnICsgKCRydWxlRXJyKSArICcuc2NoZW1hUGF0aCA9IFwiJyArICgkZXJyU2NoZW1hUGF0aCkgKyAnXCI7IH0gJztcbiAgICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgICBvdXQgKz0gJyAnICsgKCRydWxlRXJyKSArICcuc2NoZW1hID0gJyArICgkc2NoZW1hVmFsdWUpICsgJzsgJyArICgkcnVsZUVycikgKyAnLmRhdGEgPSAnICsgKCRkYXRhKSArICc7ICc7XG4gICAgICAgICAgfVxuICAgICAgICAgIG91dCArPSAnIH0gJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCRyRGVmLmVycm9ycyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyAnICsgKGRlZl9jdXN0b21FcnJvcikgKyAnICc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9ICcgaWYgKCcgKyAoJGVycnMpICsgJyA9PSBlcnJvcnMpIHsgJyArIChkZWZfY3VzdG9tRXJyb3IpICsgJyB9IGVsc2UgeyAgZm9yICh2YXIgJyArICgkaSkgKyAnPScgKyAoJGVycnMpICsgJzsgJyArICgkaSkgKyAnPGVycm9yczsgJyArICgkaSkgKyAnKyspIHsgdmFyICcgKyAoJHJ1bGVFcnIpICsgJyA9IHZFcnJvcnNbJyArICgkaSkgKyAnXTsgaWYgKCcgKyAoJHJ1bGVFcnIpICsgJy5kYXRhUGF0aCA9PT0gdW5kZWZpbmVkKSAnICsgKCRydWxlRXJyKSArICcuZGF0YVBhdGggPSAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICc7IGlmICgnICsgKCRydWxlRXJyKSArICcuc2NoZW1hUGF0aCA9PT0gdW5kZWZpbmVkKSB7ICcgKyAoJHJ1bGVFcnIpICsgJy5zY2hlbWFQYXRoID0gXCInICsgKCRlcnJTY2hlbWFQYXRoKSArICdcIjsgfSAnO1xuICAgICAgICAgIGlmIChpdC5vcHRzLnZlcmJvc2UpIHtcbiAgICAgICAgICAgIG91dCArPSAnICcgKyAoJHJ1bGVFcnIpICsgJy5zY2hlbWEgPSAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnOyAnICsgKCRydWxlRXJyKSArICcuZGF0YSA9ICcgKyAoJGRhdGEpICsgJzsgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgb3V0ICs9ICcgfSB9ICc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCRtYWNybykge1xuICAgICAgb3V0ICs9ICcgICB2YXIgZXJyID0gICAnOyAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKGl0LmNyZWF0ZUVycm9ycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgb3V0ICs9ICcgeyBrZXl3b3JkOiBcXCcnICsgKCRlcnJvcktleXdvcmQgfHwgJ2N1c3RvbScpICsgJ1xcJyAsIGRhdGFQYXRoOiAoZGF0YVBhdGggfHwgXFwnXFwnKSArICcgKyAoaXQuZXJyb3JQYXRoKSArICcgLCBzY2hlbWFQYXRoOiAnICsgKGl0LnV0aWwudG9RdW90ZWRTdHJpbmcoJGVyclNjaGVtYVBhdGgpKSArICcgLCBwYXJhbXM6IHsga2V5d29yZDogXFwnJyArICgkcnVsZS5rZXl3b3JkKSArICdcXCcgfSAnO1xuICAgICAgICBpZiAoaXQub3B0cy5tZXNzYWdlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBvdXQgKz0gJyAsIG1lc3NhZ2U6IFxcJ3Nob3VsZCBwYXNzIFwiJyArICgkcnVsZS5rZXl3b3JkKSArICdcIiBrZXl3b3JkIHZhbGlkYXRpb25cXCcgJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXQub3B0cy52ZXJib3NlKSB7XG4gICAgICAgICAgb3V0ICs9ICcgLCBzY2hlbWE6IHZhbGlkYXRlLnNjaGVtYScgKyAoJHNjaGVtYVBhdGgpICsgJyAsIHBhcmVudFNjaGVtYTogdmFsaWRhdGUuc2NoZW1hJyArIChpdC5zY2hlbWFQYXRoKSArICcgLCBkYXRhOiAnICsgKCRkYXRhKSArICcgJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyB9ICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyB7fSAnO1xuICAgICAgfVxuICAgICAgb3V0ICs9ICc7ICBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9IFtlcnJdOyBlbHNlIHZFcnJvcnMucHVzaChlcnIpOyBlcnJvcnMrKzsgJztcbiAgICAgIGlmICghaXQuY29tcG9zaXRlUnVsZSAmJiAkYnJlYWtPbkVycm9yKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAoaXQuYXN5bmMpIHtcbiAgICAgICAgICBvdXQgKz0gJyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKHZFcnJvcnMpOyAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCArPSAnIHZhbGlkYXRlLmVycm9ycyA9IHZFcnJvcnM7IHJldHVybiBmYWxzZTsgJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoJHJEZWYuZXJyb3JzID09PSBmYWxzZSkge1xuICAgICAgICBvdXQgKz0gJyAnICsgKGRlZl9jdXN0b21FcnJvcikgKyAnICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQgKz0gJyBpZiAoQXJyYXkuaXNBcnJheSgnICsgKCRydWxlRXJycykgKyAnKSkgeyBpZiAodkVycm9ycyA9PT0gbnVsbCkgdkVycm9ycyA9ICcgKyAoJHJ1bGVFcnJzKSArICc7IGVsc2UgdkVycm9ycyA9IHZFcnJvcnMuY29uY2F0KCcgKyAoJHJ1bGVFcnJzKSArICcpOyBlcnJvcnMgPSB2RXJyb3JzLmxlbmd0aDsgIGZvciAodmFyICcgKyAoJGkpICsgJz0nICsgKCRlcnJzKSArICc7ICcgKyAoJGkpICsgJzxlcnJvcnM7ICcgKyAoJGkpICsgJysrKSB7IHZhciAnICsgKCRydWxlRXJyKSArICcgPSB2RXJyb3JzWycgKyAoJGkpICsgJ107IGlmICgnICsgKCRydWxlRXJyKSArICcuZGF0YVBhdGggPT09IHVuZGVmaW5lZCkgJyArICgkcnVsZUVycikgKyAnLmRhdGFQYXRoID0gKGRhdGFQYXRoIHx8IFxcJ1xcJykgKyAnICsgKGl0LmVycm9yUGF0aCkgKyAnOyAgJyArICgkcnVsZUVycikgKyAnLnNjaGVtYVBhdGggPSBcIicgKyAoJGVyclNjaGVtYVBhdGgpICsgJ1wiOyAgJztcbiAgICAgICAgaWYgKGl0Lm9wdHMudmVyYm9zZSkge1xuICAgICAgICAgIG91dCArPSAnICcgKyAoJHJ1bGVFcnIpICsgJy5zY2hlbWEgPSAnICsgKCRzY2hlbWFWYWx1ZSkgKyAnOyAnICsgKCRydWxlRXJyKSArICcuZGF0YSA9ICcgKyAoJGRhdGEpICsgJzsgJztcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gJyB9IH0gZWxzZSB7ICcgKyAoZGVmX2N1c3RvbUVycm9yKSArICcgfSAnO1xuICAgICAgfVxuICAgIH1cbiAgICBvdXQgKz0gJyB9ICc7XG4gICAgaWYgKCRicmVha09uRXJyb3IpIHtcbiAgICAgIG91dCArPSAnIGVsc2UgeyAnO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgbWV0YVNjaGVtYSA9IHJlcXVpcmUoJy4vcmVmcy9qc29uLXNjaGVtYS1kcmFmdC0wNy5qc29uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAkaWQ6ICdodHRwczovL2dpdGh1Yi5jb20vYWp2LXZhbGlkYXRvci9hanYvYmxvYi9tYXN0ZXIvbGliL2RlZmluaXRpb25fc2NoZW1hLmpzJyxcbiAgZGVmaW5pdGlvbnM6IHtcbiAgICBzaW1wbGVUeXBlczogbWV0YVNjaGVtYS5kZWZpbml0aW9ucy5zaW1wbGVUeXBlc1xuICB9LFxuICB0eXBlOiAnb2JqZWN0JyxcbiAgZGVwZW5kZW5jaWVzOiB7XG4gICAgc2NoZW1hOiBbJ3ZhbGlkYXRlJ10sXG4gICAgJGRhdGE6IFsndmFsaWRhdGUnXSxcbiAgICBzdGF0ZW1lbnRzOiBbJ2lubGluZSddLFxuICAgIHZhbGlkOiB7bm90OiB7cmVxdWlyZWQ6IFsnbWFjcm8nXX19XG4gIH0sXG4gIHByb3BlcnRpZXM6IHtcbiAgICB0eXBlOiBtZXRhU2NoZW1hLnByb3BlcnRpZXMudHlwZSxcbiAgICBzY2hlbWE6IHt0eXBlOiAnYm9vbGVhbid9LFxuICAgIHN0YXRlbWVudHM6IHt0eXBlOiAnYm9vbGVhbid9LFxuICAgIGRlcGVuZGVuY2llczoge1xuICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgIGl0ZW1zOiB7dHlwZTogJ3N0cmluZyd9XG4gICAgfSxcbiAgICBtZXRhU2NoZW1hOiB7dHlwZTogJ29iamVjdCd9LFxuICAgIG1vZGlmeWluZzoge3R5cGU6ICdib29sZWFuJ30sXG4gICAgdmFsaWQ6IHt0eXBlOiAnYm9vbGVhbid9LFxuICAgICRkYXRhOiB7dHlwZTogJ2Jvb2xlYW4nfSxcbiAgICBhc3luYzoge3R5cGU6ICdib29sZWFuJ30sXG4gICAgZXJyb3JzOiB7XG4gICAgICBhbnlPZjogW1xuICAgICAgICB7dHlwZTogJ2Jvb2xlYW4nfSxcbiAgICAgICAge2NvbnN0OiAnZnVsbCd9XG4gICAgICBdXG4gICAgfVxuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgSURFTlRJRklFUiA9IC9eW2Etel8kXVthLXowLTlfJC1dKiQvaTtcbnZhciBjdXN0b21SdWxlQ29kZSA9IHJlcXVpcmUoJy4vZG90anMvY3VzdG9tJyk7XG52YXIgZGVmaW5pdGlvblNjaGVtYSA9IHJlcXVpcmUoJy4vZGVmaW5pdGlvbl9zY2hlbWEnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFkZDogYWRkS2V5d29yZCxcbiAgZ2V0OiBnZXRLZXl3b3JkLFxuICByZW1vdmU6IHJlbW92ZUtleXdvcmQsXG4gIHZhbGlkYXRlOiB2YWxpZGF0ZUtleXdvcmRcbn07XG5cblxuLyoqXG4gKiBEZWZpbmUgY3VzdG9tIGtleXdvcmRcbiAqIEB0aGlzICBBanZcbiAqIEBwYXJhbSB7U3RyaW5nfSBrZXl3b3JkIGN1c3RvbSBrZXl3b3JkLCBzaG91bGQgYmUgdW5pcXVlIChpbmNsdWRpbmcgZGlmZmVyZW50IGZyb20gYWxsIHN0YW5kYXJkLCBjdXN0b20gYW5kIG1hY3JvIGtleXdvcmRzKS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZpbml0aW9uIGtleXdvcmQgZGVmaW5pdGlvbiBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzIGB0eXBlYCAodHlwZShzKSB3aGljaCB0aGUga2V5d29yZCBhcHBsaWVzIHRvKSwgYHZhbGlkYXRlYCBvciBgY29tcGlsZWAuXG4gKiBAcmV0dXJuIHtBanZ9IHRoaXMgZm9yIG1ldGhvZCBjaGFpbmluZ1xuICovXG5mdW5jdGlvbiBhZGRLZXl3b3JkKGtleXdvcmQsIGRlZmluaXRpb24pIHtcbiAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqL1xuICAvKiBlc2xpbnQgbm8tc2hhZG93OiAwICovXG4gIHZhciBSVUxFUyA9IHRoaXMuUlVMRVM7XG4gIGlmIChSVUxFUy5rZXl3b3Jkc1trZXl3b3JkXSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0tleXdvcmQgJyArIGtleXdvcmQgKyAnIGlzIGFscmVhZHkgZGVmaW5lZCcpO1xuXG4gIGlmICghSURFTlRJRklFUi50ZXN0KGtleXdvcmQpKVxuICAgIHRocm93IG5ldyBFcnJvcignS2V5d29yZCAnICsga2V5d29yZCArICcgaXMgbm90IGEgdmFsaWQgaWRlbnRpZmllcicpO1xuXG4gIGlmIChkZWZpbml0aW9uKSB7XG4gICAgdGhpcy52YWxpZGF0ZUtleXdvcmQoZGVmaW5pdGlvbiwgdHJ1ZSk7XG5cbiAgICB2YXIgZGF0YVR5cGUgPSBkZWZpbml0aW9uLnR5cGU7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YVR5cGUpKSB7XG4gICAgICBmb3IgKHZhciBpPTA7IGk8ZGF0YVR5cGUubGVuZ3RoOyBpKyspXG4gICAgICAgIF9hZGRSdWxlKGtleXdvcmQsIGRhdGFUeXBlW2ldLCBkZWZpbml0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgX2FkZFJ1bGUoa2V5d29yZCwgZGF0YVR5cGUsIGRlZmluaXRpb24pO1xuICAgIH1cblxuICAgIHZhciBtZXRhU2NoZW1hID0gZGVmaW5pdGlvbi5tZXRhU2NoZW1hO1xuICAgIGlmIChtZXRhU2NoZW1hKSB7XG4gICAgICBpZiAoZGVmaW5pdGlvbi4kZGF0YSAmJiB0aGlzLl9vcHRzLiRkYXRhKSB7XG4gICAgICAgIG1ldGFTY2hlbWEgPSB7XG4gICAgICAgICAgYW55T2Y6IFtcbiAgICAgICAgICAgIG1ldGFTY2hlbWEsXG4gICAgICAgICAgICB7ICckcmVmJzogJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9hanYtdmFsaWRhdG9yL2Fqdi9tYXN0ZXIvbGliL3JlZnMvZGF0YS5qc29uIycgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGRlZmluaXRpb24udmFsaWRhdGVTY2hlbWEgPSB0aGlzLmNvbXBpbGUobWV0YVNjaGVtYSwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgUlVMRVMua2V5d29yZHNba2V5d29yZF0gPSBSVUxFUy5hbGxba2V5d29yZF0gPSB0cnVlO1xuXG5cbiAgZnVuY3Rpb24gX2FkZFJ1bGUoa2V5d29yZCwgZGF0YVR5cGUsIGRlZmluaXRpb24pIHtcbiAgICB2YXIgcnVsZUdyb3VwO1xuICAgIGZvciAodmFyIGk9MDsgaTxSVUxFUy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHJnID0gUlVMRVNbaV07XG4gICAgICBpZiAocmcudHlwZSA9PSBkYXRhVHlwZSkge1xuICAgICAgICBydWxlR3JvdXAgPSByZztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFydWxlR3JvdXApIHtcbiAgICAgIHJ1bGVHcm91cCA9IHsgdHlwZTogZGF0YVR5cGUsIHJ1bGVzOiBbXSB9O1xuICAgICAgUlVMRVMucHVzaChydWxlR3JvdXApO1xuICAgIH1cblxuICAgIHZhciBydWxlID0ge1xuICAgICAga2V5d29yZDoga2V5d29yZCxcbiAgICAgIGRlZmluaXRpb246IGRlZmluaXRpb24sXG4gICAgICBjdXN0b206IHRydWUsXG4gICAgICBjb2RlOiBjdXN0b21SdWxlQ29kZSxcbiAgICAgIGltcGxlbWVudHM6IGRlZmluaXRpb24uaW1wbGVtZW50c1xuICAgIH07XG4gICAgcnVsZUdyb3VwLnJ1bGVzLnB1c2gocnVsZSk7XG4gICAgUlVMRVMuY3VzdG9tW2tleXdvcmRdID0gcnVsZTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5cbi8qKlxuICogR2V0IGtleXdvcmRcbiAqIEB0aGlzICBBanZcbiAqIEBwYXJhbSB7U3RyaW5nfSBrZXl3b3JkIHByZS1kZWZpbmVkIG9yIGN1c3RvbSBrZXl3b3JkLlxuICogQHJldHVybiB7T2JqZWN0fEJvb2xlYW59IGN1c3RvbSBrZXl3b3JkIGRlZmluaXRpb24sIGB0cnVlYCBpZiBpdCBpcyBhIHByZWRlZmluZWQga2V5d29yZCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIGdldEtleXdvcmQoa2V5d29yZCkge1xuICAvKiBqc2hpbnQgdmFsaWR0aGlzOiB0cnVlICovXG4gIHZhciBydWxlID0gdGhpcy5SVUxFUy5jdXN0b21ba2V5d29yZF07XG4gIHJldHVybiBydWxlID8gcnVsZS5kZWZpbml0aW9uIDogdGhpcy5SVUxFUy5rZXl3b3Jkc1trZXl3b3JkXSB8fCBmYWxzZTtcbn1cblxuXG4vKipcbiAqIFJlbW92ZSBrZXl3b3JkXG4gKiBAdGhpcyAgQWp2XG4gKiBAcGFyYW0ge1N0cmluZ30ga2V5d29yZCBwcmUtZGVmaW5lZCBvciBjdXN0b20ga2V5d29yZC5cbiAqIEByZXR1cm4ge0Fqdn0gdGhpcyBmb3IgbWV0aG9kIGNoYWluaW5nXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZUtleXdvcmQoa2V5d29yZCkge1xuICAvKiBqc2hpbnQgdmFsaWR0aGlzOiB0cnVlICovXG4gIHZhciBSVUxFUyA9IHRoaXMuUlVMRVM7XG4gIGRlbGV0ZSBSVUxFUy5rZXl3b3Jkc1trZXl3b3JkXTtcbiAgZGVsZXRlIFJVTEVTLmFsbFtrZXl3b3JkXTtcbiAgZGVsZXRlIFJVTEVTLmN1c3RvbVtrZXl3b3JkXTtcbiAgZm9yICh2YXIgaT0wOyBpPFJVTEVTLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHJ1bGVzID0gUlVMRVNbaV0ucnVsZXM7XG4gICAgZm9yICh2YXIgaj0wOyBqPHJ1bGVzLmxlbmd0aDsgaisrKSB7XG4gICAgICBpZiAocnVsZXNbal0ua2V5d29yZCA9PSBrZXl3b3JkKSB7XG4gICAgICAgIHJ1bGVzLnNwbGljZShqLCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5cbi8qKlxuICogVmFsaWRhdGUga2V5d29yZCBkZWZpbml0aW9uXG4gKiBAdGhpcyAgQWp2XG4gKiBAcGFyYW0ge09iamVjdH0gZGVmaW5pdGlvbiBrZXl3b3JkIGRlZmluaXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtCb29sZWFufSB0aHJvd0Vycm9yIHRydWUgdG8gdGhyb3cgZXhjZXB0aW9uIGlmIGRlZmluaXRpb24gaXMgaW52YWxpZFxuICogQHJldHVybiB7Ym9vbGVhbn0gdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVLZXl3b3JkKGRlZmluaXRpb24sIHRocm93RXJyb3IpIHtcbiAgdmFsaWRhdGVLZXl3b3JkLmVycm9ycyA9IG51bGw7XG4gIHZhciB2ID0gdGhpcy5fdmFsaWRhdGVLZXl3b3JkID0gdGhpcy5fdmFsaWRhdGVLZXl3b3JkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5jb21waWxlKGRlZmluaXRpb25TY2hlbWEsIHRydWUpO1xuXG4gIGlmICh2KGRlZmluaXRpb24pKSByZXR1cm4gdHJ1ZTtcbiAgdmFsaWRhdGVLZXl3b3JkLmVycm9ycyA9IHYuZXJyb3JzO1xuICBpZiAodGhyb3dFcnJvcilcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2N1c3RvbSBrZXl3b3JkIGRlZmluaXRpb24gaXMgaW52YWxpZDogJyAgKyB0aGlzLmVycm9yc1RleHQodi5lcnJvcnMpKTtcbiAgZWxzZVxuICAgIHJldHVybiBmYWxzZTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGNvbXBpbGVTY2hlbWEgPSByZXF1aXJlKCcuL2NvbXBpbGUnKVxuICAsIHJlc29sdmUgPSByZXF1aXJlKCcuL2NvbXBpbGUvcmVzb2x2ZScpXG4gICwgQ2FjaGUgPSByZXF1aXJlKCcuL2NhY2hlJylcbiAgLCBTY2hlbWFPYmplY3QgPSByZXF1aXJlKCcuL2NvbXBpbGUvc2NoZW1hX29iaicpXG4gICwgc3RhYmxlU3RyaW5naWZ5ID0gcmVxdWlyZSgnZmFzdC1qc29uLXN0YWJsZS1zdHJpbmdpZnknKVxuICAsIGZvcm1hdHMgPSByZXF1aXJlKCcuL2NvbXBpbGUvZm9ybWF0cycpXG4gICwgcnVsZXMgPSByZXF1aXJlKCcuL2NvbXBpbGUvcnVsZXMnKVxuICAsICRkYXRhTWV0YVNjaGVtYSA9IHJlcXVpcmUoJy4vZGF0YScpXG4gICwgdXRpbCA9IHJlcXVpcmUoJy4vY29tcGlsZS91dGlsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gQWp2O1xuXG5BanYucHJvdG90eXBlLnZhbGlkYXRlID0gdmFsaWRhdGU7XG5BanYucHJvdG90eXBlLmNvbXBpbGUgPSBjb21waWxlO1xuQWp2LnByb3RvdHlwZS5hZGRTY2hlbWEgPSBhZGRTY2hlbWE7XG5BanYucHJvdG90eXBlLmFkZE1ldGFTY2hlbWEgPSBhZGRNZXRhU2NoZW1hO1xuQWp2LnByb3RvdHlwZS52YWxpZGF0ZVNjaGVtYSA9IHZhbGlkYXRlU2NoZW1hO1xuQWp2LnByb3RvdHlwZS5nZXRTY2hlbWEgPSBnZXRTY2hlbWE7XG5BanYucHJvdG90eXBlLnJlbW92ZVNjaGVtYSA9IHJlbW92ZVNjaGVtYTtcbkFqdi5wcm90b3R5cGUuYWRkRm9ybWF0ID0gYWRkRm9ybWF0O1xuQWp2LnByb3RvdHlwZS5lcnJvcnNUZXh0ID0gZXJyb3JzVGV4dDtcblxuQWp2LnByb3RvdHlwZS5fYWRkU2NoZW1hID0gX2FkZFNjaGVtYTtcbkFqdi5wcm90b3R5cGUuX2NvbXBpbGUgPSBfY29tcGlsZTtcblxuQWp2LnByb3RvdHlwZS5jb21waWxlQXN5bmMgPSByZXF1aXJlKCcuL2NvbXBpbGUvYXN5bmMnKTtcbnZhciBjdXN0b21LZXl3b3JkID0gcmVxdWlyZSgnLi9rZXl3b3JkJyk7XG5BanYucHJvdG90eXBlLmFkZEtleXdvcmQgPSBjdXN0b21LZXl3b3JkLmFkZDtcbkFqdi5wcm90b3R5cGUuZ2V0S2V5d29yZCA9IGN1c3RvbUtleXdvcmQuZ2V0O1xuQWp2LnByb3RvdHlwZS5yZW1vdmVLZXl3b3JkID0gY3VzdG9tS2V5d29yZC5yZW1vdmU7XG5BanYucHJvdG90eXBlLnZhbGlkYXRlS2V5d29yZCA9IGN1c3RvbUtleXdvcmQudmFsaWRhdGU7XG5cbnZhciBlcnJvckNsYXNzZXMgPSByZXF1aXJlKCcuL2NvbXBpbGUvZXJyb3JfY2xhc3NlcycpO1xuQWp2LlZhbGlkYXRpb25FcnJvciA9IGVycm9yQ2xhc3Nlcy5WYWxpZGF0aW9uO1xuQWp2Lk1pc3NpbmdSZWZFcnJvciA9IGVycm9yQ2xhc3Nlcy5NaXNzaW5nUmVmO1xuQWp2LiRkYXRhTWV0YVNjaGVtYSA9ICRkYXRhTWV0YVNjaGVtYTtcblxudmFyIE1FVEFfU0NIRU1BX0lEID0gJ2h0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hJztcblxudmFyIE1FVEFfSUdOT1JFX09QVElPTlMgPSBbICdyZW1vdmVBZGRpdGlvbmFsJywgJ3VzZURlZmF1bHRzJywgJ2NvZXJjZVR5cGVzJywgJ3N0cmljdERlZmF1bHRzJyBdO1xudmFyIE1FVEFfU1VQUE9SVF9EQVRBID0gWycvcHJvcGVydGllcyddO1xuXG4vKipcbiAqIENyZWF0ZXMgdmFsaWRhdG9yIGluc3RhbmNlLlxuICogVXNhZ2U6IGBBanYob3B0cylgXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBvcHRpb25hbCBvcHRpb25zXG4gKiBAcmV0dXJuIHtPYmplY3R9IGFqdiBpbnN0YW5jZVxuICovXG5mdW5jdGlvbiBBanYob3B0cykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQWp2KSkgcmV0dXJuIG5ldyBBanYob3B0cyk7XG4gIG9wdHMgPSB0aGlzLl9vcHRzID0gdXRpbC5jb3B5KG9wdHMpIHx8IHt9O1xuICBzZXRMb2dnZXIodGhpcyk7XG4gIHRoaXMuX3NjaGVtYXMgPSB7fTtcbiAgdGhpcy5fcmVmcyA9IHt9O1xuICB0aGlzLl9mcmFnbWVudHMgPSB7fTtcbiAgdGhpcy5fZm9ybWF0cyA9IGZvcm1hdHMob3B0cy5mb3JtYXQpO1xuXG4gIHRoaXMuX2NhY2hlID0gb3B0cy5jYWNoZSB8fCBuZXcgQ2FjaGU7XG4gIHRoaXMuX2xvYWRpbmdTY2hlbWFzID0ge307XG4gIHRoaXMuX2NvbXBpbGF0aW9ucyA9IFtdO1xuICB0aGlzLlJVTEVTID0gcnVsZXMoKTtcbiAgdGhpcy5fZ2V0SWQgPSBjaG9vc2VHZXRJZChvcHRzKTtcblxuICBvcHRzLmxvb3BSZXF1aXJlZCA9IG9wdHMubG9vcFJlcXVpcmVkIHx8IEluZmluaXR5O1xuICBpZiAob3B0cy5lcnJvckRhdGFQYXRoID09ICdwcm9wZXJ0eScpIG9wdHMuX2Vycm9yRGF0YVBhdGhQcm9wZXJ0eSA9IHRydWU7XG4gIGlmIChvcHRzLnNlcmlhbGl6ZSA9PT0gdW5kZWZpbmVkKSBvcHRzLnNlcmlhbGl6ZSA9IHN0YWJsZVN0cmluZ2lmeTtcbiAgdGhpcy5fbWV0YU9wdHMgPSBnZXRNZXRhU2NoZW1hT3B0aW9ucyh0aGlzKTtcblxuICBpZiAob3B0cy5mb3JtYXRzKSBhZGRJbml0aWFsRm9ybWF0cyh0aGlzKTtcbiAgaWYgKG9wdHMua2V5d29yZHMpIGFkZEluaXRpYWxLZXl3b3Jkcyh0aGlzKTtcbiAgYWRkRGVmYXVsdE1ldGFTY2hlbWEodGhpcyk7XG4gIGlmICh0eXBlb2Ygb3B0cy5tZXRhID09ICdvYmplY3QnKSB0aGlzLmFkZE1ldGFTY2hlbWEob3B0cy5tZXRhKTtcbiAgaWYgKG9wdHMubnVsbGFibGUpIHRoaXMuYWRkS2V5d29yZCgnbnVsbGFibGUnLCB7bWV0YVNjaGVtYToge3R5cGU6ICdib29sZWFuJ319KTtcbiAgYWRkSW5pdGlhbFNjaGVtYXModGhpcyk7XG59XG5cblxuXG4vKipcbiAqIFZhbGlkYXRlIGRhdGEgdXNpbmcgc2NoZW1hXG4gKiBTY2hlbWEgd2lsbCBiZSBjb21waWxlZCBhbmQgY2FjaGVkICh1c2luZyBzZXJpYWxpemVkIEpTT04gYXMga2V5LiBbZmFzdC1qc29uLXN0YWJsZS1zdHJpbmdpZnldKGh0dHBzOi8vZ2l0aHViLmNvbS9lcG9iZXJlemtpbi9mYXN0LWpzb24tc3RhYmxlLXN0cmluZ2lmeSkgaXMgdXNlZCB0byBzZXJpYWxpemUuXG4gKiBAdGhpcyAgIEFqdlxuICogQHBhcmFtICB7U3RyaW5nfE9iamVjdH0gc2NoZW1hS2V5UmVmIGtleSwgcmVmIG9yIHNjaGVtYSBvYmplY3RcbiAqIEBwYXJhbSAge0FueX0gZGF0YSB0byBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm4ge0Jvb2xlYW59IHZhbGlkYXRpb24gcmVzdWx0LiBFcnJvcnMgZnJvbSB0aGUgbGFzdCB2YWxpZGF0aW9uIHdpbGwgYmUgYXZhaWxhYmxlIGluIGBhanYuZXJyb3JzYCAoYW5kIGFsc28gaW4gY29tcGlsZWQgc2NoZW1hOiBgc2NoZW1hLmVycm9yc2ApLlxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZShzY2hlbWFLZXlSZWYsIGRhdGEpIHtcbiAgdmFyIHY7XG4gIGlmICh0eXBlb2Ygc2NoZW1hS2V5UmVmID09ICdzdHJpbmcnKSB7XG4gICAgdiA9IHRoaXMuZ2V0U2NoZW1hKHNjaGVtYUtleVJlZik7XG4gICAgaWYgKCF2KSB0aHJvdyBuZXcgRXJyb3IoJ25vIHNjaGVtYSB3aXRoIGtleSBvciByZWYgXCInICsgc2NoZW1hS2V5UmVmICsgJ1wiJyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNjaGVtYU9iaiA9IHRoaXMuX2FkZFNjaGVtYShzY2hlbWFLZXlSZWYpO1xuICAgIHYgPSBzY2hlbWFPYmoudmFsaWRhdGUgfHwgdGhpcy5fY29tcGlsZShzY2hlbWFPYmopO1xuICB9XG5cbiAgdmFyIHZhbGlkID0gdihkYXRhKTtcbiAgaWYgKHYuJGFzeW5jICE9PSB0cnVlKSB0aGlzLmVycm9ycyA9IHYuZXJyb3JzO1xuICByZXR1cm4gdmFsaWQ7XG59XG5cblxuLyoqXG4gKiBDcmVhdGUgdmFsaWRhdGluZyBmdW5jdGlvbiBmb3IgcGFzc2VkIHNjaGVtYS5cbiAqIEB0aGlzICAgQWp2XG4gKiBAcGFyYW0gIHtPYmplY3R9IHNjaGVtYSBzY2hlbWEgb2JqZWN0XG4gKiBAcGFyYW0gIHtCb29sZWFufSBfbWV0YSB0cnVlIGlmIHNjaGVtYSBpcyBhIG1ldGEtc2NoZW1hLiBVc2VkIGludGVybmFsbHkgdG8gY29tcGlsZSBtZXRhIHNjaGVtYXMgb2YgY3VzdG9tIGtleXdvcmRzLlxuICogQHJldHVybiB7RnVuY3Rpb259IHZhbGlkYXRpbmcgZnVuY3Rpb25cbiAqL1xuZnVuY3Rpb24gY29tcGlsZShzY2hlbWEsIF9tZXRhKSB7XG4gIHZhciBzY2hlbWFPYmogPSB0aGlzLl9hZGRTY2hlbWEoc2NoZW1hLCB1bmRlZmluZWQsIF9tZXRhKTtcbiAgcmV0dXJuIHNjaGVtYU9iai52YWxpZGF0ZSB8fCB0aGlzLl9jb21waWxlKHNjaGVtYU9iaik7XG59XG5cblxuLyoqXG4gKiBBZGRzIHNjaGVtYSB0byB0aGUgaW5zdGFuY2UuXG4gKiBAdGhpcyAgIEFqdlxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IHNjaGVtYSBzY2hlbWEgb3IgYXJyYXkgb2Ygc2NoZW1hcy4gSWYgYXJyYXkgaXMgcGFzc2VkLCBga2V5YCBhbmQgb3RoZXIgcGFyYW1ldGVycyB3aWxsIGJlIGlnbm9yZWQuXG4gKiBAcGFyYW0ge1N0cmluZ30ga2V5IE9wdGlvbmFsIHNjaGVtYSBrZXkuIENhbiBiZSBwYXNzZWQgdG8gYHZhbGlkYXRlYCBtZXRob2QgaW5zdGVhZCBvZiBzY2hlbWEgb2JqZWN0IG9yIGlkL3JlZi4gT25lIHNjaGVtYSBwZXIgaW5zdGFuY2UgY2FuIGhhdmUgZW1wdHkgYGlkYCBhbmQgYGtleWAuXG4gKiBAcGFyYW0ge0Jvb2xlYW59IF9za2lwVmFsaWRhdGlvbiB0cnVlIHRvIHNraXAgc2NoZW1hIHZhbGlkYXRpb24uIFVzZWQgaW50ZXJuYWxseSwgb3B0aW9uIHZhbGlkYXRlU2NoZW1hIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuXG4gKiBAcGFyYW0ge0Jvb2xlYW59IF9tZXRhIHRydWUgaWYgc2NoZW1hIGlzIGEgbWV0YS1zY2hlbWEuIFVzZWQgaW50ZXJuYWxseSwgYWRkTWV0YVNjaGVtYSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLlxuICogQHJldHVybiB7QWp2fSB0aGlzIGZvciBtZXRob2QgY2hhaW5pbmdcbiAqL1xuZnVuY3Rpb24gYWRkU2NoZW1hKHNjaGVtYSwga2V5LCBfc2tpcFZhbGlkYXRpb24sIF9tZXRhKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYSkpe1xuICAgIGZvciAodmFyIGk9MDsgaTxzY2hlbWEubGVuZ3RoOyBpKyspIHRoaXMuYWRkU2NoZW1hKHNjaGVtYVtpXSwgdW5kZWZpbmVkLCBfc2tpcFZhbGlkYXRpb24sIF9tZXRhKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICB2YXIgaWQgPSB0aGlzLl9nZXRJZChzY2hlbWEpO1xuICBpZiAoaWQgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgaWQgIT0gJ3N0cmluZycpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdzY2hlbWEgaWQgbXVzdCBiZSBzdHJpbmcnKTtcbiAga2V5ID0gcmVzb2x2ZS5ub3JtYWxpemVJZChrZXkgfHwgaWQpO1xuICBjaGVja1VuaXF1ZSh0aGlzLCBrZXkpO1xuICB0aGlzLl9zY2hlbWFzW2tleV0gPSB0aGlzLl9hZGRTY2hlbWEoc2NoZW1hLCBfc2tpcFZhbGlkYXRpb24sIF9tZXRhLCB0cnVlKTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cblxuLyoqXG4gKiBBZGQgc2NoZW1hIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHZhbGlkYXRlIG90aGVyIHNjaGVtYXNcbiAqIG9wdGlvbnMgaW4gTUVUQV9JR05PUkVfT1BUSU9OUyBhcmUgYWx3YXkgc2V0IHRvIGZhbHNlXG4gKiBAdGhpcyAgIEFqdlxuICogQHBhcmFtIHtPYmplY3R9IHNjaGVtYSBzY2hlbWEgb2JqZWN0XG4gKiBAcGFyYW0ge1N0cmluZ30ga2V5IG9wdGlvbmFsIHNjaGVtYSBrZXlcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gc2tpcFZhbGlkYXRpb24gdHJ1ZSB0byBza2lwIHNjaGVtYSB2YWxpZGF0aW9uLCBjYW4gYmUgdXNlZCB0byBvdmVycmlkZSB2YWxpZGF0ZVNjaGVtYSBvcHRpb24gZm9yIG1ldGEtc2NoZW1hXG4gKiBAcmV0dXJuIHtBanZ9IHRoaXMgZm9yIG1ldGhvZCBjaGFpbmluZ1xuICovXG5mdW5jdGlvbiBhZGRNZXRhU2NoZW1hKHNjaGVtYSwga2V5LCBza2lwVmFsaWRhdGlvbikge1xuICB0aGlzLmFkZFNjaGVtYShzY2hlbWEsIGtleSwgc2tpcFZhbGlkYXRpb24sIHRydWUpO1xuICByZXR1cm4gdGhpcztcbn1cblxuXG4vKipcbiAqIFZhbGlkYXRlIHNjaGVtYVxuICogQHRoaXMgICBBanZcbiAqIEBwYXJhbSB7T2JqZWN0fSBzY2hlbWEgc2NoZW1hIHRvIHZhbGlkYXRlXG4gKiBAcGFyYW0ge0Jvb2xlYW59IHRocm93T3JMb2dFcnJvciBwYXNzIHRydWUgdG8gdGhyb3cgKG9yIGxvZykgYW4gZXJyb3IgaWYgaW52YWxpZFxuICogQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSBpZiBzY2hlbWEgaXMgdmFsaWRcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVTY2hlbWEoc2NoZW1hLCB0aHJvd09yTG9nRXJyb3IpIHtcbiAgdmFyICRzY2hlbWEgPSBzY2hlbWEuJHNjaGVtYTtcbiAgaWYgKCRzY2hlbWEgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgJHNjaGVtYSAhPSAnc3RyaW5nJylcbiAgICB0aHJvdyBuZXcgRXJyb3IoJyRzY2hlbWEgbXVzdCBiZSBhIHN0cmluZycpO1xuICAkc2NoZW1hID0gJHNjaGVtYSB8fCB0aGlzLl9vcHRzLmRlZmF1bHRNZXRhIHx8IGRlZmF1bHRNZXRhKHRoaXMpO1xuICBpZiAoISRzY2hlbWEpIHtcbiAgICB0aGlzLmxvZ2dlci53YXJuKCdtZXRhLXNjaGVtYSBub3QgYXZhaWxhYmxlJyk7XG4gICAgdGhpcy5lcnJvcnMgPSBudWxsO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHZhciB2YWxpZCA9IHRoaXMudmFsaWRhdGUoJHNjaGVtYSwgc2NoZW1hKTtcbiAgaWYgKCF2YWxpZCAmJiB0aHJvd09yTG9nRXJyb3IpIHtcbiAgICB2YXIgbWVzc2FnZSA9ICdzY2hlbWEgaXMgaW52YWxpZDogJyArIHRoaXMuZXJyb3JzVGV4dCgpO1xuICAgIGlmICh0aGlzLl9vcHRzLnZhbGlkYXRlU2NoZW1hID09ICdsb2cnKSB0aGlzLmxvZ2dlci5lcnJvcihtZXNzYWdlKTtcbiAgICBlbHNlIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgfVxuICByZXR1cm4gdmFsaWQ7XG59XG5cblxuZnVuY3Rpb24gZGVmYXVsdE1ldGEoc2VsZikge1xuICB2YXIgbWV0YSA9IHNlbGYuX29wdHMubWV0YTtcbiAgc2VsZi5fb3B0cy5kZWZhdWx0TWV0YSA9IHR5cGVvZiBtZXRhID09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWxmLl9nZXRJZChtZXRhKSB8fCBtZXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWxmLmdldFNjaGVtYShNRVRBX1NDSEVNQV9JRClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTUVUQV9TQ0hFTUFfSURcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICByZXR1cm4gc2VsZi5fb3B0cy5kZWZhdWx0TWV0YTtcbn1cblxuXG4vKipcbiAqIEdldCBjb21waWxlZCBzY2hlbWEgZnJvbSB0aGUgaW5zdGFuY2UgYnkgYGtleWAgb3IgYHJlZmAuXG4gKiBAdGhpcyAgIEFqdlxuICogQHBhcmFtICB7U3RyaW5nfSBrZXlSZWYgYGtleWAgdGhhdCB3YXMgcGFzc2VkIHRvIGBhZGRTY2hlbWFgIG9yIGZ1bGwgc2NoZW1hIHJlZmVyZW5jZSAoYHNjaGVtYS5pZGAgb3IgcmVzb2x2ZWQgaWQpLlxuICogQHJldHVybiB7RnVuY3Rpb259IHNjaGVtYSB2YWxpZGF0aW5nIGZ1bmN0aW9uICh3aXRoIHByb3BlcnR5IGBzY2hlbWFgKS5cbiAqL1xuZnVuY3Rpb24gZ2V0U2NoZW1hKGtleVJlZikge1xuICB2YXIgc2NoZW1hT2JqID0gX2dldFNjaGVtYU9iaih0aGlzLCBrZXlSZWYpO1xuICBzd2l0Y2ggKHR5cGVvZiBzY2hlbWFPYmopIHtcbiAgICBjYXNlICdvYmplY3QnOiByZXR1cm4gc2NoZW1hT2JqLnZhbGlkYXRlIHx8IHRoaXMuX2NvbXBpbGUoc2NoZW1hT2JqKTtcbiAgICBjYXNlICdzdHJpbmcnOiByZXR1cm4gdGhpcy5nZXRTY2hlbWEoc2NoZW1hT2JqKTtcbiAgICBjYXNlICd1bmRlZmluZWQnOiByZXR1cm4gX2dldFNjaGVtYUZyYWdtZW50KHRoaXMsIGtleVJlZik7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBfZ2V0U2NoZW1hRnJhZ21lbnQoc2VsZiwgcmVmKSB7XG4gIHZhciByZXMgPSByZXNvbHZlLnNjaGVtYS5jYWxsKHNlbGYsIHsgc2NoZW1hOiB7fSB9LCByZWYpO1xuICBpZiAocmVzKSB7XG4gICAgdmFyIHNjaGVtYSA9IHJlcy5zY2hlbWFcbiAgICAgICwgcm9vdCA9IHJlcy5yb290XG4gICAgICAsIGJhc2VJZCA9IHJlcy5iYXNlSWQ7XG4gICAgdmFyIHYgPSBjb21waWxlU2NoZW1hLmNhbGwoc2VsZiwgc2NoZW1hLCByb290LCB1bmRlZmluZWQsIGJhc2VJZCk7XG4gICAgc2VsZi5fZnJhZ21lbnRzW3JlZl0gPSBuZXcgU2NoZW1hT2JqZWN0KHtcbiAgICAgIHJlZjogcmVmLFxuICAgICAgZnJhZ21lbnQ6IHRydWUsXG4gICAgICBzY2hlbWE6IHNjaGVtYSxcbiAgICAgIHJvb3Q6IHJvb3QsXG4gICAgICBiYXNlSWQ6IGJhc2VJZCxcbiAgICAgIHZhbGlkYXRlOiB2XG4gICAgfSk7XG4gICAgcmV0dXJuIHY7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBfZ2V0U2NoZW1hT2JqKHNlbGYsIGtleVJlZikge1xuICBrZXlSZWYgPSByZXNvbHZlLm5vcm1hbGl6ZUlkKGtleVJlZik7XG4gIHJldHVybiBzZWxmLl9zY2hlbWFzW2tleVJlZl0gfHwgc2VsZi5fcmVmc1trZXlSZWZdIHx8IHNlbGYuX2ZyYWdtZW50c1trZXlSZWZdO1xufVxuXG5cbi8qKlxuICogUmVtb3ZlIGNhY2hlZCBzY2hlbWEocykuXG4gKiBJZiBubyBwYXJhbWV0ZXIgaXMgcGFzc2VkIGFsbCBzY2hlbWFzIGJ1dCBtZXRhLXNjaGVtYXMgYXJlIHJlbW92ZWQuXG4gKiBJZiBSZWdFeHAgaXMgcGFzc2VkIGFsbCBzY2hlbWFzIHdpdGgga2V5L2lkIG1hdGNoaW5nIHBhdHRlcm4gYnV0IG1ldGEtc2NoZW1hcyBhcmUgcmVtb3ZlZC5cbiAqIEV2ZW4gaWYgc2NoZW1hIGlzIHJlZmVyZW5jZWQgYnkgb3RoZXIgc2NoZW1hcyBpdCBzdGlsbCBjYW4gYmUgcmVtb3ZlZCBhcyBvdGhlciBzY2hlbWFzIGhhdmUgbG9jYWwgcmVmZXJlbmNlcy5cbiAqIEB0aGlzICAgQWp2XG4gKiBAcGFyYW0gIHtTdHJpbmd8T2JqZWN0fFJlZ0V4cH0gc2NoZW1hS2V5UmVmIGtleSwgcmVmLCBwYXR0ZXJuIHRvIG1hdGNoIGtleS9yZWYgb3Igc2NoZW1hIG9iamVjdFxuICogQHJldHVybiB7QWp2fSB0aGlzIGZvciBtZXRob2QgY2hhaW5pbmdcbiAqL1xuZnVuY3Rpb24gcmVtb3ZlU2NoZW1hKHNjaGVtYUtleVJlZikge1xuICBpZiAoc2NoZW1hS2V5UmVmIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgX3JlbW92ZUFsbFNjaGVtYXModGhpcywgdGhpcy5fc2NoZW1hcywgc2NoZW1hS2V5UmVmKTtcbiAgICBfcmVtb3ZlQWxsU2NoZW1hcyh0aGlzLCB0aGlzLl9yZWZzLCBzY2hlbWFLZXlSZWYpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIHN3aXRjaCAodHlwZW9mIHNjaGVtYUtleVJlZikge1xuICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICBfcmVtb3ZlQWxsU2NoZW1hcyh0aGlzLCB0aGlzLl9zY2hlbWFzKTtcbiAgICAgIF9yZW1vdmVBbGxTY2hlbWFzKHRoaXMsIHRoaXMuX3JlZnMpO1xuICAgICAgdGhpcy5fY2FjaGUuY2xlYXIoKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICB2YXIgc2NoZW1hT2JqID0gX2dldFNjaGVtYU9iaih0aGlzLCBzY2hlbWFLZXlSZWYpO1xuICAgICAgaWYgKHNjaGVtYU9iaikgdGhpcy5fY2FjaGUuZGVsKHNjaGVtYU9iai5jYWNoZUtleSk7XG4gICAgICBkZWxldGUgdGhpcy5fc2NoZW1hc1tzY2hlbWFLZXlSZWZdO1xuICAgICAgZGVsZXRlIHRoaXMuX3JlZnNbc2NoZW1hS2V5UmVmXTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICB2YXIgc2VyaWFsaXplID0gdGhpcy5fb3B0cy5zZXJpYWxpemU7XG4gICAgICB2YXIgY2FjaGVLZXkgPSBzZXJpYWxpemUgPyBzZXJpYWxpemUoc2NoZW1hS2V5UmVmKSA6IHNjaGVtYUtleVJlZjtcbiAgICAgIHRoaXMuX2NhY2hlLmRlbChjYWNoZUtleSk7XG4gICAgICB2YXIgaWQgPSB0aGlzLl9nZXRJZChzY2hlbWFLZXlSZWYpO1xuICAgICAgaWYgKGlkKSB7XG4gICAgICAgIGlkID0gcmVzb2x2ZS5ub3JtYWxpemVJZChpZCk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLl9zY2hlbWFzW2lkXTtcbiAgICAgICAgZGVsZXRlIHRoaXMuX3JlZnNbaWRdO1xuICAgICAgfVxuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5cbmZ1bmN0aW9uIF9yZW1vdmVBbGxTY2hlbWFzKHNlbGYsIHNjaGVtYXMsIHJlZ2V4KSB7XG4gIGZvciAodmFyIGtleVJlZiBpbiBzY2hlbWFzKSB7XG4gICAgdmFyIHNjaGVtYU9iaiA9IHNjaGVtYXNba2V5UmVmXTtcbiAgICBpZiAoIXNjaGVtYU9iai5tZXRhICYmICghcmVnZXggfHwgcmVnZXgudGVzdChrZXlSZWYpKSkge1xuICAgICAgc2VsZi5fY2FjaGUuZGVsKHNjaGVtYU9iai5jYWNoZUtleSk7XG4gICAgICBkZWxldGUgc2NoZW1hc1trZXlSZWZdO1xuICAgIH1cbiAgfVxufVxuXG5cbi8qIEB0aGlzICAgQWp2ICovXG5mdW5jdGlvbiBfYWRkU2NoZW1hKHNjaGVtYSwgc2tpcFZhbGlkYXRpb24sIG1ldGEsIHNob3VsZEFkZFNjaGVtYSkge1xuICBpZiAodHlwZW9mIHNjaGVtYSAhPSAnb2JqZWN0JyAmJiB0eXBlb2Ygc2NoZW1hICE9ICdib29sZWFuJylcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NjaGVtYSBzaG91bGQgYmUgb2JqZWN0IG9yIGJvb2xlYW4nKTtcbiAgdmFyIHNlcmlhbGl6ZSA9IHRoaXMuX29wdHMuc2VyaWFsaXplO1xuICB2YXIgY2FjaGVLZXkgPSBzZXJpYWxpemUgPyBzZXJpYWxpemUoc2NoZW1hKSA6IHNjaGVtYTtcbiAgdmFyIGNhY2hlZCA9IHRoaXMuX2NhY2hlLmdldChjYWNoZUtleSk7XG4gIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7XG5cbiAgc2hvdWxkQWRkU2NoZW1hID0gc2hvdWxkQWRkU2NoZW1hIHx8IHRoaXMuX29wdHMuYWRkVXNlZFNjaGVtYSAhPT0gZmFsc2U7XG5cbiAgdmFyIGlkID0gcmVzb2x2ZS5ub3JtYWxpemVJZCh0aGlzLl9nZXRJZChzY2hlbWEpKTtcbiAgaWYgKGlkICYmIHNob3VsZEFkZFNjaGVtYSkgY2hlY2tVbmlxdWUodGhpcywgaWQpO1xuXG4gIHZhciB3aWxsVmFsaWRhdGUgPSB0aGlzLl9vcHRzLnZhbGlkYXRlU2NoZW1hICE9PSBmYWxzZSAmJiAhc2tpcFZhbGlkYXRpb247XG4gIHZhciByZWN1cnNpdmVNZXRhO1xuICBpZiAod2lsbFZhbGlkYXRlICYmICEocmVjdXJzaXZlTWV0YSA9IGlkICYmIGlkID09IHJlc29sdmUubm9ybWFsaXplSWQoc2NoZW1hLiRzY2hlbWEpKSlcbiAgICB0aGlzLnZhbGlkYXRlU2NoZW1hKHNjaGVtYSwgdHJ1ZSk7XG5cbiAgdmFyIGxvY2FsUmVmcyA9IHJlc29sdmUuaWRzLmNhbGwodGhpcywgc2NoZW1hKTtcblxuICB2YXIgc2NoZW1hT2JqID0gbmV3IFNjaGVtYU9iamVjdCh7XG4gICAgaWQ6IGlkLFxuICAgIHNjaGVtYTogc2NoZW1hLFxuICAgIGxvY2FsUmVmczogbG9jYWxSZWZzLFxuICAgIGNhY2hlS2V5OiBjYWNoZUtleSxcbiAgICBtZXRhOiBtZXRhXG4gIH0pO1xuXG4gIGlmIChpZFswXSAhPSAnIycgJiYgc2hvdWxkQWRkU2NoZW1hKSB0aGlzLl9yZWZzW2lkXSA9IHNjaGVtYU9iajtcbiAgdGhpcy5fY2FjaGUucHV0KGNhY2hlS2V5LCBzY2hlbWFPYmopO1xuXG4gIGlmICh3aWxsVmFsaWRhdGUgJiYgcmVjdXJzaXZlTWV0YSkgdGhpcy52YWxpZGF0ZVNjaGVtYShzY2hlbWEsIHRydWUpO1xuXG4gIHJldHVybiBzY2hlbWFPYmo7XG59XG5cblxuLyogQHRoaXMgICBBanYgKi9cbmZ1bmN0aW9uIF9jb21waWxlKHNjaGVtYU9iaiwgcm9vdCkge1xuICBpZiAoc2NoZW1hT2JqLmNvbXBpbGluZykge1xuICAgIHNjaGVtYU9iai52YWxpZGF0ZSA9IGNhbGxWYWxpZGF0ZTtcbiAgICBjYWxsVmFsaWRhdGUuc2NoZW1hID0gc2NoZW1hT2JqLnNjaGVtYTtcbiAgICBjYWxsVmFsaWRhdGUuZXJyb3JzID0gbnVsbDtcbiAgICBjYWxsVmFsaWRhdGUucm9vdCA9IHJvb3QgPyByb290IDogY2FsbFZhbGlkYXRlO1xuICAgIGlmIChzY2hlbWFPYmouc2NoZW1hLiRhc3luYyA9PT0gdHJ1ZSlcbiAgICAgIGNhbGxWYWxpZGF0ZS4kYXN5bmMgPSB0cnVlO1xuICAgIHJldHVybiBjYWxsVmFsaWRhdGU7XG4gIH1cbiAgc2NoZW1hT2JqLmNvbXBpbGluZyA9IHRydWU7XG5cbiAgdmFyIGN1cnJlbnRPcHRzO1xuICBpZiAoc2NoZW1hT2JqLm1ldGEpIHtcbiAgICBjdXJyZW50T3B0cyA9IHRoaXMuX29wdHM7XG4gICAgdGhpcy5fb3B0cyA9IHRoaXMuX21ldGFPcHRzO1xuICB9XG5cbiAgdmFyIHY7XG4gIHRyeSB7IHYgPSBjb21waWxlU2NoZW1hLmNhbGwodGhpcywgc2NoZW1hT2JqLnNjaGVtYSwgcm9vdCwgc2NoZW1hT2JqLmxvY2FsUmVmcyk7IH1cbiAgY2F0Y2goZSkge1xuICAgIGRlbGV0ZSBzY2hlbWFPYmoudmFsaWRhdGU7XG4gICAgdGhyb3cgZTtcbiAgfVxuICBmaW5hbGx5IHtcbiAgICBzY2hlbWFPYmouY29tcGlsaW5nID0gZmFsc2U7XG4gICAgaWYgKHNjaGVtYU9iai5tZXRhKSB0aGlzLl9vcHRzID0gY3VycmVudE9wdHM7XG4gIH1cblxuICBzY2hlbWFPYmoudmFsaWRhdGUgPSB2O1xuICBzY2hlbWFPYmoucmVmcyA9IHYucmVmcztcbiAgc2NoZW1hT2JqLnJlZlZhbCA9IHYucmVmVmFsO1xuICBzY2hlbWFPYmoucm9vdCA9IHYucm9vdDtcbiAgcmV0dXJuIHY7XG5cblxuICAvKiBAdGhpcyAgIHsqfSAtIGN1c3RvbSBjb250ZXh0LCBzZWUgcGFzc0NvbnRleHQgb3B0aW9uICovXG4gIGZ1bmN0aW9uIGNhbGxWYWxpZGF0ZSgpIHtcbiAgICAvKiBqc2hpbnQgdmFsaWR0aGlzOiB0cnVlICovXG4gICAgdmFyIF92YWxpZGF0ZSA9IHNjaGVtYU9iai52YWxpZGF0ZTtcbiAgICB2YXIgcmVzdWx0ID0gX3ZhbGlkYXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgY2FsbFZhbGlkYXRlLmVycm9ycyA9IF92YWxpZGF0ZS5lcnJvcnM7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGNob29zZUdldElkKG9wdHMpIHtcbiAgc3dpdGNoIChvcHRzLnNjaGVtYUlkKSB7XG4gICAgY2FzZSAnYXV0byc6IHJldHVybiBfZ2V0JElkT3JJZDtcbiAgICBjYXNlICdpZCc6IHJldHVybiBfZ2V0SWQ7XG4gICAgZGVmYXVsdDogcmV0dXJuIF9nZXQkSWQ7XG4gIH1cbn1cblxuLyogQHRoaXMgICBBanYgKi9cbmZ1bmN0aW9uIF9nZXRJZChzY2hlbWEpIHtcbiAgaWYgKHNjaGVtYS4kaWQpIHRoaXMubG9nZ2VyLndhcm4oJ3NjaGVtYSAkaWQgaWdub3JlZCcsIHNjaGVtYS4kaWQpO1xuICByZXR1cm4gc2NoZW1hLmlkO1xufVxuXG4vKiBAdGhpcyAgIEFqdiAqL1xuZnVuY3Rpb24gX2dldCRJZChzY2hlbWEpIHtcbiAgaWYgKHNjaGVtYS5pZCkgdGhpcy5sb2dnZXIud2Fybignc2NoZW1hIGlkIGlnbm9yZWQnLCBzY2hlbWEuaWQpO1xuICByZXR1cm4gc2NoZW1hLiRpZDtcbn1cblxuXG5mdW5jdGlvbiBfZ2V0JElkT3JJZChzY2hlbWEpIHtcbiAgaWYgKHNjaGVtYS4kaWQgJiYgc2NoZW1hLmlkICYmIHNjaGVtYS4kaWQgIT0gc2NoZW1hLmlkKVxuICAgIHRocm93IG5ldyBFcnJvcignc2NoZW1hICRpZCBpcyBkaWZmZXJlbnQgZnJvbSBpZCcpO1xuICByZXR1cm4gc2NoZW1hLiRpZCB8fCBzY2hlbWEuaWQ7XG59XG5cblxuLyoqXG4gKiBDb252ZXJ0IGFycmF5IG9mIGVycm9yIG1lc3NhZ2Ugb2JqZWN0cyB0byBzdHJpbmdcbiAqIEB0aGlzICAgQWp2XG4gKiBAcGFyYW0gIHtBcnJheTxPYmplY3Q+fSBlcnJvcnMgb3B0aW9uYWwgYXJyYXkgb2YgdmFsaWRhdGlvbiBlcnJvcnMsIGlmIG5vdCBwYXNzZWQgZXJyb3JzIGZyb20gdGhlIGluc3RhbmNlIGFyZSB1c2VkLlxuICogQHBhcmFtICB7T2JqZWN0fSBvcHRpb25zIG9wdGlvbmFsIG9wdGlvbnMgd2l0aCBwcm9wZXJ0aWVzIGBzZXBhcmF0b3JgIGFuZCBgZGF0YVZhcmAuXG4gKiBAcmV0dXJuIHtTdHJpbmd9IGh1bWFuIHJlYWRhYmxlIHN0cmluZyB3aXRoIGFsbCBlcnJvcnMgZGVzY3JpcHRpb25zXG4gKi9cbmZ1bmN0aW9uIGVycm9yc1RleHQoZXJyb3JzLCBvcHRpb25zKSB7XG4gIGVycm9ycyA9IGVycm9ycyB8fCB0aGlzLmVycm9ycztcbiAgaWYgKCFlcnJvcnMpIHJldHVybiAnTm8gZXJyb3JzJztcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIHZhciBzZXBhcmF0b3IgPSBvcHRpb25zLnNlcGFyYXRvciA9PT0gdW5kZWZpbmVkID8gJywgJyA6IG9wdGlvbnMuc2VwYXJhdG9yO1xuICB2YXIgZGF0YVZhciA9IG9wdGlvbnMuZGF0YVZhciA9PT0gdW5kZWZpbmVkID8gJ2RhdGEnIDogb3B0aW9ucy5kYXRhVmFyO1xuXG4gIHZhciB0ZXh0ID0gJyc7XG4gIGZvciAodmFyIGk9MDsgaTxlcnJvcnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZSA9IGVycm9yc1tpXTtcbiAgICBpZiAoZSkgdGV4dCArPSBkYXRhVmFyICsgZS5kYXRhUGF0aCArICcgJyArIGUubWVzc2FnZSArIHNlcGFyYXRvcjtcbiAgfVxuICByZXR1cm4gdGV4dC5zbGljZSgwLCAtc2VwYXJhdG9yLmxlbmd0aCk7XG59XG5cblxuLyoqXG4gKiBBZGQgY3VzdG9tIGZvcm1hdFxuICogQHRoaXMgICBBanZcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIGZvcm1hdCBuYW1lXG4gKiBAcGFyYW0ge1N0cmluZ3xSZWdFeHB8RnVuY3Rpb259IGZvcm1hdCBzdHJpbmcgaXMgY29udmVydGVkIHRvIFJlZ0V4cDsgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBib29sZWFuICh0cnVlIHdoZW4gdmFsaWQpXG4gKiBAcmV0dXJuIHtBanZ9IHRoaXMgZm9yIG1ldGhvZCBjaGFpbmluZ1xuICovXG5mdW5jdGlvbiBhZGRGb3JtYXQobmFtZSwgZm9ybWF0KSB7XG4gIGlmICh0eXBlb2YgZm9ybWF0ID09ICdzdHJpbmcnKSBmb3JtYXQgPSBuZXcgUmVnRXhwKGZvcm1hdCk7XG4gIHRoaXMuX2Zvcm1hdHNbbmFtZV0gPSBmb3JtYXQ7XG4gIHJldHVybiB0aGlzO1xufVxuXG5cbmZ1bmN0aW9uIGFkZERlZmF1bHRNZXRhU2NoZW1hKHNlbGYpIHtcbiAgdmFyICRkYXRhU2NoZW1hO1xuICBpZiAoc2VsZi5fb3B0cy4kZGF0YSkge1xuICAgICRkYXRhU2NoZW1hID0gcmVxdWlyZSgnLi9yZWZzL2RhdGEuanNvbicpO1xuICAgIHNlbGYuYWRkTWV0YVNjaGVtYSgkZGF0YVNjaGVtYSwgJGRhdGFTY2hlbWEuJGlkLCB0cnVlKTtcbiAgfVxuICBpZiAoc2VsZi5fb3B0cy5tZXRhID09PSBmYWxzZSkgcmV0dXJuO1xuICB2YXIgbWV0YVNjaGVtYSA9IHJlcXVpcmUoJy4vcmVmcy9qc29uLXNjaGVtYS1kcmFmdC0wNy5qc29uJyk7XG4gIGlmIChzZWxmLl9vcHRzLiRkYXRhKSBtZXRhU2NoZW1hID0gJGRhdGFNZXRhU2NoZW1hKG1ldGFTY2hlbWEsIE1FVEFfU1VQUE9SVF9EQVRBKTtcbiAgc2VsZi5hZGRNZXRhU2NoZW1hKG1ldGFTY2hlbWEsIE1FVEFfU0NIRU1BX0lELCB0cnVlKTtcbiAgc2VsZi5fcmVmc1snaHR0cDovL2pzb24tc2NoZW1hLm9yZy9zY2hlbWEnXSA9IE1FVEFfU0NIRU1BX0lEO1xufVxuXG5cbmZ1bmN0aW9uIGFkZEluaXRpYWxTY2hlbWFzKHNlbGYpIHtcbiAgdmFyIG9wdHNTY2hlbWFzID0gc2VsZi5fb3B0cy5zY2hlbWFzO1xuICBpZiAoIW9wdHNTY2hlbWFzKSByZXR1cm47XG4gIGlmIChBcnJheS5pc0FycmF5KG9wdHNTY2hlbWFzKSkgc2VsZi5hZGRTY2hlbWEob3B0c1NjaGVtYXMpO1xuICBlbHNlIGZvciAodmFyIGtleSBpbiBvcHRzU2NoZW1hcykgc2VsZi5hZGRTY2hlbWEob3B0c1NjaGVtYXNba2V5XSwga2V5KTtcbn1cblxuXG5mdW5jdGlvbiBhZGRJbml0aWFsRm9ybWF0cyhzZWxmKSB7XG4gIGZvciAodmFyIG5hbWUgaW4gc2VsZi5fb3B0cy5mb3JtYXRzKSB7XG4gICAgdmFyIGZvcm1hdCA9IHNlbGYuX29wdHMuZm9ybWF0c1tuYW1lXTtcbiAgICBzZWxmLmFkZEZvcm1hdChuYW1lLCBmb3JtYXQpO1xuICB9XG59XG5cblxuZnVuY3Rpb24gYWRkSW5pdGlhbEtleXdvcmRzKHNlbGYpIHtcbiAgZm9yICh2YXIgbmFtZSBpbiBzZWxmLl9vcHRzLmtleXdvcmRzKSB7XG4gICAgdmFyIGtleXdvcmQgPSBzZWxmLl9vcHRzLmtleXdvcmRzW25hbWVdO1xuICAgIHNlbGYuYWRkS2V5d29yZChuYW1lLCBrZXl3b3JkKTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGNoZWNrVW5pcXVlKHNlbGYsIGlkKSB7XG4gIGlmIChzZWxmLl9zY2hlbWFzW2lkXSB8fCBzZWxmLl9yZWZzW2lkXSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NjaGVtYSB3aXRoIGtleSBvciBpZCBcIicgKyBpZCArICdcIiBhbHJlYWR5IGV4aXN0cycpO1xufVxuXG5cbmZ1bmN0aW9uIGdldE1ldGFTY2hlbWFPcHRpb25zKHNlbGYpIHtcbiAgdmFyIG1ldGFPcHRzID0gdXRpbC5jb3B5KHNlbGYuX29wdHMpO1xuICBmb3IgKHZhciBpPTA7IGk8TUVUQV9JR05PUkVfT1BUSU9OUy5sZW5ndGg7IGkrKylcbiAgICBkZWxldGUgbWV0YU9wdHNbTUVUQV9JR05PUkVfT1BUSU9OU1tpXV07XG4gIHJldHVybiBtZXRhT3B0cztcbn1cblxuXG5mdW5jdGlvbiBzZXRMb2dnZXIoc2VsZikge1xuICB2YXIgbG9nZ2VyID0gc2VsZi5fb3B0cy5sb2dnZXI7XG4gIGlmIChsb2dnZXIgPT09IGZhbHNlKSB7XG4gICAgc2VsZi5sb2dnZXIgPSB7bG9nOiBub29wLCB3YXJuOiBub29wLCBlcnJvcjogbm9vcH07XG4gIH0gZWxzZSB7XG4gICAgaWYgKGxvZ2dlciA9PT0gdW5kZWZpbmVkKSBsb2dnZXIgPSBjb25zb2xlO1xuICAgIGlmICghKHR5cGVvZiBsb2dnZXIgPT0gJ29iamVjdCcgJiYgbG9nZ2VyLmxvZyAmJiBsb2dnZXIud2FybiAmJiBsb2dnZXIuZXJyb3IpKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdsb2dnZXIgbXVzdCBpbXBsZW1lbnQgbG9nLCB3YXJuIGFuZCBlcnJvciBtZXRob2RzJyk7XG4gICAgc2VsZi5sb2dnZXIgPSBsb2dnZXI7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBub29wKCkge31cbiIsImltcG9ydCBBanYgZnJvbSAnYWp2JztcbmltcG9ydCBpc09iamVjdCBmcm9tICdsb2Rhc2gvaXNPYmplY3QnO1xuZXhwb3J0IGNvbnN0IEFKVl9DT05GSUcgPSB7XG4gICAgZXJyb3JEYXRhUGF0aDogJ3Byb3BlcnR5JyxcbiAgICBhbGxFcnJvcnM6IHRydWUsXG4gICAgbXVsdGlwbGVPZlByZWNpc2lvbjogOCxcbiAgICBzY2hlbWFJZDogJ2F1dG8nLFxuICAgIHVua25vd25Gb3JtYXRzOiAnaWdub3JlJyxcbn07XG5leHBvcnQgY29uc3QgQ09MT1JfRk9STUFUX1JFR0VYID0gL14oIz8oWzAtOUEtRmEtZl17M30pezEsMn1cXGJ8YXF1YXxibGFja3xibHVlfGZ1Y2hzaWF8Z3JheXxncmVlbnxsaW1lfG1hcm9vbnxuYXZ5fG9saXZlfG9yYW5nZXxwdXJwbGV8cmVkfHNpbHZlcnx0ZWFsfHdoaXRlfHllbGxvd3wocmdiXFwoXFxzKlxcYihbMC05XXxbMS05XVswLTldfDFbMC05XVswLTldfDJbMC00XVswLTldfDI1WzAtNV0pXFxiXFxzKixcXHMqXFxiKFswLTldfFsxLTldWzAtOV18MVswLTldWzAtOV18MlswLTRdWzAtOV18MjVbMC01XSlcXGJcXHMqLFxccypcXGIoWzAtOV18WzEtOV1bMC05XXwxWzAtOV1bMC05XXwyWzAtNF1bMC05XXwyNVswLTVdKVxcYlxccypcXCkpfChyZ2JcXChcXHMqKFxcZD9cXGQlfDEwMCUpK1xccyosXFxzKihcXGQ/XFxkJXwxMDAlKStcXHMqLFxccyooXFxkP1xcZCV8MTAwJSkrXFxzKlxcKSkpJC87XG5leHBvcnQgY29uc3QgREFUQV9VUkxfRk9STUFUX1JFR0VYID0gL15kYXRhOihbYS16XStcXC9bYS16MC05LSsuXSspPzsoPzpuYW1lPSguKik7KT9iYXNlNjQsKC4qKSQvO1xuLyoqIENyZWF0ZXMgYW4gQWp2IHZlcnNpb24gNiBpbXBsZW1lbnRhdGlvbiBvYmplY3Qgd2l0aCBzdGFuZGFyZCBzdXBwb3J0IGZvciB0aGUgJ2NvbG9yYCBhbmQgYGRhdGEtdXJsYCBjdXN0b20gZm9ybWF0cy5cbiAqIElmIGBhZGRpdGlvbmFsTWV0YVNjaGVtYXNgIGFyZSBwcm92aWRlZCB0aGVuIHRoZSBBanYgaW5zdGFuY2UgaXMgbW9kaWZpZWQgdG8gYWRkIGVhY2ggb2YgdGhlIG1ldGEgc2NoZW1hcyBpbiB0aGVcbiAqIGxpc3QuIElmIGBjdXN0b21Gb3JtYXRzYCBhcmUgcHJvdmlkZWQgdGhlbiB0aG9zZSBhZGRpdGlvbmFsIGZvcm1hdHMgYXJlIGFkZGVkIHRvIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBmb3JtYXRzLiBJZlxuICogYGFqdk9wdGlvbnNPdmVycmlkZXNgIGFyZSBwcm92aWRlZCB0aGVuIHRoZXkgYXJlIHNwcmVhZCBvbiB0b3Agb2YgdGhlIGRlZmF1bHQgYEFKVl9DT05GSUdgIG9wdGlvbnMgd2hlbiBjb25zdHJ1Y3RpbmdcbiAqIHRoZSBgQWp2YCBpbnN0YW5jZS5cbiAqXG4gKiBAcGFyYW0gW2FkZGl0aW9uYWxNZXRhU2NoZW1hc10gLSBUaGUgbGlzdCBvZiBhZGRpdGlvbmFsIG1ldGEgc2NoZW1hcyB0aGF0IHRoZSB2YWxpZGF0b3IgY2FuIGFjY2Vzc1xuICogQHBhcmFtIFtjdXN0b21Gb3JtYXRzXSAtIFRoZSBzZXQgb2YgYWRkaXRpb25hbCBjdXN0b20gZm9ybWF0cyB0aGF0IHRoZSB2YWxpZGF0b3Igd2lsbCBzdXBwb3J0XG4gKiBAcGFyYW0gW2Fqdk9wdGlvbnNPdmVycmlkZXM9e31dIC0gVGhlIHNldCBvZiB2YWxpZGF0b3IgY29uZmlnIG92ZXJyaWRlIG9wdGlvbnNcbiAqIEBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHRoZSBgQHJqc2YvdmFsaWRhdG9yLWFqdjhcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlQWp2SW5zdGFuY2UoYWRkaXRpb25hbE1ldGFTY2hlbWFzLCBjdXN0b21Gb3JtYXRzLCBhanZPcHRpb25zT3ZlcnJpZGVzID0ge30pIHtcbiAgICBjb25zdCBhanYgPSBuZXcgQWp2KHsgLi4uQUpWX0NPTkZJRywgLi4uYWp2T3B0aW9uc092ZXJyaWRlcyB9KTtcbiAgICAvLyBhZGQgY3VzdG9tIGZvcm1hdHNcbiAgICBhanYuYWRkRm9ybWF0KCdkYXRhLXVybCcsIERBVEFfVVJMX0ZPUk1BVF9SRUdFWCk7XG4gICAgYWp2LmFkZEZvcm1hdCgnY29sb3InLCBDT0xPUl9GT1JNQVRfUkVHRVgpO1xuICAgIC8vIGFkZCBtb3JlIHNjaGVtYXMgdG8gdmFsaWRhdGUgYWdhaW5zdFxuICAgIGlmIChBcnJheS5pc0FycmF5KGFkZGl0aW9uYWxNZXRhU2NoZW1hcykpIHtcbiAgICAgICAgYWp2LmFkZE1ldGFTY2hlbWEoYWRkaXRpb25hbE1ldGFTY2hlbWFzKTtcbiAgICB9XG4gICAgLy8gYWRkIG1vcmUgY3VzdG9tIGZvcm1hdHMgdG8gdmFsaWRhdGUgYWdhaW5zdFxuICAgIGlmIChpc09iamVjdChjdXN0b21Gb3JtYXRzKSkge1xuICAgICAgICBPYmplY3Qua2V5cyhjdXN0b21Gb3JtYXRzKS5mb3JFYWNoKChmb3JtYXROYW1lKSA9PiB7XG4gICAgICAgICAgICBhanYuYWRkRm9ybWF0KGZvcm1hdE5hbWUsIGN1c3RvbUZvcm1hdHNbZm9ybWF0TmFtZV0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGFqdjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNyZWF0ZUFqdkluc3RhbmNlLmpzLm1hcCIsImltcG9ydCB7IGNyZWF0ZUVycm9ySGFuZGxlciwgZGVlcEVxdWFscywgZ2V0RGVmYXVsdEZvcm1TdGF0ZSwgUk9PVF9TQ0hFTUFfUFJFRklYLCB0b0Vycm9yTGlzdCwgdG9FcnJvclNjaGVtYSwgdW53cmFwRXJyb3JIYW5kbGVyLCB2YWxpZGF0aW9uRGF0YU1lcmdlLCB3aXRoSWRSZWZQcmVmaXgsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuaW1wb3J0IGNyZWF0ZUFqdkluc3RhbmNlIGZyb20gJy4vY3JlYXRlQWp2SW5zdGFuY2UnO1xuLyoqIGBWYWxpZGF0b3JUeXBlYCBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXMgdGhlIEFKViA2IHZhbGlkYXRpb24gbWVjaGFuaXNtLlxuICpcbiAqIEBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHRoZSBgQHJqc2YvdmFsaWRhdG9yLWFqdjhcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQUpWNlZhbGlkYXRvciB7XG4gICAgLyoqIENvbnN0cnVjdHMgYW4gYEFKVjZWYWxpZGF0b3JgIGluc3RhbmNlIHVzaW5nIHRoZSBgb3B0aW9uc2BcbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGBDdXN0b21WYWxpZGF0b3JPcHRpb25zVHlwZWAgb3B0aW9ucyB0aGF0IGFyZSB1c2VkIHRvIGNyZWF0ZSB0aGUgQUpWIGluc3RhbmNlXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBjb25zdCB7IGFkZGl0aW9uYWxNZXRhU2NoZW1hcywgY3VzdG9tRm9ybWF0cywgYWp2T3B0aW9uc092ZXJyaWRlcyB9ID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy5hanYgPSBjcmVhdGVBanZJbnN0YW5jZShhZGRpdGlvbmFsTWV0YVNjaGVtYXMsIGN1c3RvbUZvcm1hdHMsIGFqdk9wdGlvbnNPdmVycmlkZXMpO1xuICAgIH1cbiAgICAvKiogQ29udmVydHMgYW4gYGVycm9yU2NoZW1hYCBpbnRvIGEgbGlzdCBvZiBgUkpTRlZhbGlkYXRpb25FcnJvcnNgXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXJyb3JTY2hlbWEgLSBUaGUgYEVycm9yU2NoZW1hYCBpbnN0YW5jZSB0byBjb252ZXJ0XG4gICAgICogQHBhcmFtIFtmaWVsZFBhdGg9W11dIC0gVGhlIGN1cnJlbnQgZmllbGQgcGF0aCwgZGVmYXVsdHMgdG8gW10gaWYgbm90IHNwZWNpZmllZFxuICAgICAqIEBkZXByZWNhdGVkIC0gVXNlIHRoZSBgdG9FcnJvckxpc3QoKWAgZnVuY3Rpb24gcHJvdmlkZWQgYnkgYEByanNmL3V0aWxzYCBpbnN0ZWFkLiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZCBpblxuICAgICAqICAgICAgICB0aGUgbmV4dCBtYWpvciByZWxlYXNlLlxuICAgICAqL1xuICAgIHRvRXJyb3JMaXN0KGVycm9yU2NoZW1hLCBmaWVsZFBhdGggPSBbXSkge1xuICAgICAgICByZXR1cm4gdG9FcnJvckxpc3QoZXJyb3JTY2hlbWEsIGZpZWxkUGF0aCk7XG4gICAgfVxuICAgIC8qKiBUcmFuc2Zvcm1pbmcgdGhlIGVycm9yIG91dHB1dCBmcm9tIGFqdiB0byBmb3JtYXQgdXNlZCBieSBAcmpzZi91dGlscy5cbiAgICAgKiBBdCBzb21lIHBvaW50LCBjb21wb25lbnRzIHNob3VsZCBiZSB1cGRhdGVkIHRvIHN1cHBvcnQgYWp2LlxuICAgICAqXG4gICAgICogQHBhcmFtIGVycm9ycyAtIFRoZSBsaXN0IG9mIEFKViBlcnJvcnMgdG8gY29udmVydCB0byBgUkpTRlZhbGlkYXRpb25FcnJvcnNgXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICB0cmFuc2Zvcm1SSlNGVmFsaWRhdGlvbkVycm9ycyhlcnJvcnMgPSBbXSkge1xuICAgICAgICByZXR1cm4gZXJyb3JzLm1hcCgoZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBkYXRhUGF0aCwga2V5d29yZCwgbWVzc2FnZSwgcGFyYW1zLCBzY2hlbWFQYXRoIH0gPSBlO1xuICAgICAgICAgICAgY29uc3QgcHJvcGVydHkgPSBgJHtkYXRhUGF0aH1gO1xuICAgICAgICAgICAgLy8gcHV0IGRhdGEgaW4gZXhwZWN0ZWQgZm9ybWF0XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG5hbWU6IGtleXdvcmQsXG4gICAgICAgICAgICAgICAgcHJvcGVydHksXG4gICAgICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICAgICAgc3RhY2s6IGAke3Byb3BlcnR5fSAke21lc3NhZ2V9YC50cmltKCksXG4gICAgICAgICAgICAgICAgc2NoZW1hUGF0aCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKiogUnVucyB0aGUgcHVyZSB2YWxpZGF0aW9uIG9mIHRoZSBgc2NoZW1hYCBhbmQgYGZvcm1EYXRhYCB3aXRob3V0IGFueSBvZiB0aGUgUkpTRiBmdW5jdGlvbmFsaXR5LiBQcm92aWRlZCBmb3IgdXNlXG4gICAgICogYnkgdGhlIHBsYXlncm91bmQuIFJldHVybnMgdGhlIGBlcnJvcnNgIGZyb20gdGhlIHZhbGlkYXRpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIGFnYWluc3Qgd2hpY2ggdG8gdmFsaWRhdGUgdGhlIGZvcm0gZGF0YSAgICogQHBhcmFtIHNjaGVtYVxuICAgICAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBmb3JtIGRhdGEgdG8gdmFsaWRhdGVcbiAgICAgKi9cbiAgICByYXdWYWxpZGF0aW9uKHNjaGVtYSwgZm9ybURhdGEpIHtcbiAgICAgICAgbGV0IHZhbGlkYXRpb25FcnJvciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuYWp2LnZhbGlkYXRlKHNjaGVtYSwgZm9ybURhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHZhbGlkYXRpb25FcnJvciA9IGVycjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlcnJvcnMgPSB0aGlzLmFqdi5lcnJvcnMgfHwgdW5kZWZpbmVkO1xuICAgICAgICAvLyBDbGVhciBlcnJvcnMgdG8gcHJldmVudCBwZXJzaXN0ZW50IGVycm9ycywgc2VlICMxMTA0XG4gICAgICAgIHRoaXMuYWp2LmVycm9ycyA9IG51bGw7XG4gICAgICAgIHJldHVybiB7IGVycm9yczogZXJyb3JzLCB2YWxpZGF0aW9uRXJyb3IgfTtcbiAgICB9XG4gICAgLyoqIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSBgZm9ybURhdGFgIHdpdGggYW4gb3B0aW9uYWwgdXNlciBjb250cmlidXRlZCBgY3VzdG9tVmFsaWRhdGVgIGZ1bmN0aW9uLCB3aGljaCByZWNlaXZlc1xuICAgICAqIHRoZSBmb3JtIGRhdGEgYW5kIGEgYGVycm9ySGFuZGxlcmAgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIHVzZWQgdG8gYWRkIGN1c3RvbSB2YWxpZGF0aW9uIGVycm9ycyBmb3IgZWFjaCBmaWVsZC4gQWxzb1xuICAgICAqIHN1cHBvcnRzIGEgYHRyYW5zZm9ybUVycm9yc2AgZnVuY3Rpb24gdGhhdCB3aWxsIHRha2UgdGhlIHJhdyBBSlYgdmFsaWRhdGlvbiBlcnJvcnMsIHByaW9yIHRvIGN1c3RvbSB2YWxpZGF0aW9uIGFuZFxuICAgICAqIHRyYW5zZm9ybSB0aGVtIGluIHdoYXQgZXZlciB3YXkgaXQgY2hvb3Nlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBmb3JtIGRhdGEgdG8gdmFsaWRhdGVcbiAgICAgKiBAcGFyYW0gc2NoZW1hIC0gVGhlIHNjaGVtYSBhZ2FpbnN0IHdoaWNoIHRvIHZhbGlkYXRlIHRoZSBmb3JtIGRhdGFcbiAgICAgKiBAcGFyYW0gW2N1c3RvbVZhbGlkYXRlXSAtIEFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB0byBwZXJmb3JtIGN1c3RvbSB2YWxpZGF0aW9uXG4gICAgICogQHBhcmFtIFt0cmFuc2Zvcm1FcnJvcnNdIC0gQW4gb3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBpcyB1c2VkIHRvIHRyYW5zZm9ybSBlcnJvcnMgYWZ0ZXIgQUpWIHZhbGlkYXRpb25cbiAgICAgKiBAcGFyYW0gW3VpU2NoZW1hXSAtIEFuIG9wdGlvbmFsIHVpU2NoZW1hIHRoYXQgaXMgcGFzc2VkIHRvIGB0cmFuc2Zvcm1FcnJvcnNgIGFuZCBgY3VzdG9tVmFsaWRhdGVgXG4gICAgICovXG4gICAgdmFsaWRhdGVGb3JtRGF0YShmb3JtRGF0YSwgc2NoZW1hLCBjdXN0b21WYWxpZGF0ZSwgdHJhbnNmb3JtRXJyb3JzLCB1aVNjaGVtYSkge1xuICAgICAgICBjb25zdCByb290U2NoZW1hID0gc2NoZW1hO1xuICAgICAgICBjb25zdCByYXdFcnJvcnMgPSB0aGlzLnJhd1ZhbGlkYXRpb24oc2NoZW1hLCBmb3JtRGF0YSk7XG4gICAgICAgIGNvbnN0IHsgdmFsaWRhdGlvbkVycm9yIH0gPSByYXdFcnJvcnM7XG4gICAgICAgIGxldCBlcnJvcnMgPSB0aGlzLnRyYW5zZm9ybVJKU0ZWYWxpZGF0aW9uRXJyb3JzKHJhd0Vycm9ycy5lcnJvcnMpO1xuICAgICAgICBjb25zdCBub1Byb3Blck1ldGFTY2hlbWEgPSB2YWxpZGF0aW9uRXJyb3IgJiYgdmFsaWRhdGlvbkVycm9yLm1lc3NhZ2UgJiYgdmFsaWRhdGlvbkVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ25vIHNjaGVtYSB3aXRoIGtleSBvciByZWYgJyk7XG4gICAgICAgIGlmIChub1Byb3Blck1ldGFTY2hlbWEpIHtcbiAgICAgICAgICAgIGVycm9ycyA9IFsuLi5lcnJvcnMsIHsgc3RhY2s6IHZhbGlkYXRpb25FcnJvci5tZXNzYWdlIH1dO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdHJhbnNmb3JtRXJyb3JzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBlcnJvcnMgPSB0cmFuc2Zvcm1FcnJvcnMoZXJyb3JzLCB1aVNjaGVtYSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGVycm9yU2NoZW1hID0gdG9FcnJvclNjaGVtYShlcnJvcnMpO1xuICAgICAgICBpZiAobm9Qcm9wZXJNZXRhU2NoZW1hKSB7XG4gICAgICAgICAgICBlcnJvclNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICAuLi5lcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICAuLi57XG4gICAgICAgICAgICAgICAgICAgICRzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fZXJyb3JzOiBbdmFsaWRhdGlvbkVycm9yLm1lc3NhZ2VdLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgY3VzdG9tVmFsaWRhdGUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiB7IGVycm9ycywgZXJyb3JTY2hlbWEgfTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJbmNsdWRlIGZvcm0gZGF0YSB3aXRoIHVuZGVmaW5lZCB2YWx1ZXMsIHdoaWNoIGlzIHJlcXVpcmVkIGZvciBjdXN0b20gdmFsaWRhdGlvbi5cbiAgICAgICAgY29uc3QgbmV3Rm9ybURhdGEgPSBnZXREZWZhdWx0Rm9ybVN0YXRlKHRoaXMsIHNjaGVtYSwgZm9ybURhdGEsIHJvb3RTY2hlbWEsIHRydWUpO1xuICAgICAgICBjb25zdCBlcnJvckhhbmRsZXIgPSBjdXN0b21WYWxpZGF0ZShuZXdGb3JtRGF0YSwgY3JlYXRlRXJyb3JIYW5kbGVyKG5ld0Zvcm1EYXRhKSwgdWlTY2hlbWEpO1xuICAgICAgICBjb25zdCB1c2VyRXJyb3JTY2hlbWEgPSB1bndyYXBFcnJvckhhbmRsZXIoZXJyb3JIYW5kbGVyKTtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25EYXRhTWVyZ2UoeyBlcnJvcnMsIGVycm9yU2NoZW1hIH0sIHVzZXJFcnJvclNjaGVtYSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIGEgc2NoZW1hIG5lZWRzIHRvIGJlIGFkZGVkIGFuZCBpZiB0aGUgcm9vdCBzY2hlbWFzIGRvbid0IG1hdGNoIGl0IHJlbW92ZXMgdGhlIG9sZCByb290IHNjaGVtYSBmcm9tIHRoZSBhanYgaW5zdGFuY2UgYW5kIGFkZHMgdGhlIG5ldyBvbmUuXG4gICAgICogQHBhcmFtIHJvb3RTY2hlbWEgLSBUaGUgcm9vdCBzY2hlbWEgdXNlZCB0byBwcm92aWRlICRyZWYgcmVzb2x1dGlvbnNcbiAgICAgKi9cbiAgICBoYW5kbGVTY2hlbWFVcGRhdGUocm9vdFNjaGVtYSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IHJvb3RTY2hlbWFJZCA9IFJPT1RfU0NIRU1BX1BSRUZJWDtcbiAgICAgICAgLy8gYWRkIHRoZSByb290U2NoZW1hIFJPT1RfU0NIRU1BX1BSRUZJWCBhcyBpZC5cbiAgICAgICAgLy8gaWYgc2NoZW1hIHZhbGlkYXRvciBpbnN0YW5jZSBkb2Vzbid0IGV4aXN0LCBhZGQgaXQuXG4gICAgICAgIC8vIGVsc2UgJ2hhbmRsZVJvb3RTY2hlbWFDaGFuZ2UnIHNob3VsZCBiZSBjYWxsZWQgaWYgdGhlIHJvb3Qgc2NoZW1hIGNoYW5nZXMgc28gd2UgZG9uJ3QgaGF2ZSB0byByZW1vdmUgYW5kIHJlY29tcGlsZSB0aGUgc2NoZW1hIGV2ZXJ5IHJ1bi5cbiAgICAgICAgaWYgKHRoaXMuYWp2LmdldFNjaGVtYShST09UX1NDSEVNQV9QUkVGSVgpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYWp2LmFkZFNjaGVtYShyb290U2NoZW1hLCBST09UX1NDSEVNQV9QUkVGSVgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFkZWVwRXF1YWxzKHJvb3RTY2hlbWEsIChfYSA9IHRoaXMuYWp2LmdldFNjaGVtYShST09UX1NDSEVNQV9QUkVGSVgpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2NoZW1hKSkge1xuICAgICAgICAgICAgdGhpcy5hanYucmVtb3ZlU2NoZW1hKHJvb3RTY2hlbWFJZCk7XG4gICAgICAgICAgICB0aGlzLmFqdi5hZGRTY2hlbWEocm9vdFNjaGVtYSwgcm9vdFNjaGVtYUlkKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogVmFsaWRhdGVzIGRhdGEgYWdhaW5zdCBhIHNjaGVtYSwgcmV0dXJuaW5nIHRydWUgaWYgdGhlIGRhdGEgaXMgdmFsaWQsIG9yXG4gICAgICogZmFsc2Ugb3RoZXJ3aXNlLiBJZiB0aGUgc2NoZW1hIGlzIGludmFsaWQsIHRoZW4gdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVyblxuICAgICAqIGZhbHNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgYWdhaW5zdCB3aGljaCB0byB2YWxpZGF0ZSB0aGUgZm9ybSBkYXRhICAgKiBAcGFyYW0gc2NoZW1hXG4gICAgICogQHBhcmFtIGZvcm1EYXRhLSAtIFRoZSBmb3JtIGRhdGEgdG8gdmFsaWRhdGVcbiAgICAgKiBAcGFyYW0gcm9vdFNjaGVtYSAtIFRoZSByb290IHNjaGVtYSB1c2VkIHRvIHByb3ZpZGUgJHJlZiByZXNvbHV0aW9uc1xuICAgICAqL1xuICAgIGlzVmFsaWQoc2NoZW1hLCBmb3JtRGF0YSwgcm9vdFNjaGVtYSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVTY2hlbWFVcGRhdGUocm9vdFNjaGVtYSk7XG4gICAgICAgICAgICAvLyB0aGVuIHJld3JpdGUgdGhlIHNjaGVtYSByZWYncyB0byBwb2ludCB0byB0aGUgcm9vdFNjaGVtYVxuICAgICAgICAgICAgLy8gdGhpcyBhY2NvdW50cyBmb3IgdGhlIGNhc2Ugd2hlcmUgc2NoZW1hIGhhdmUgcmVmZXJlbmNlcyB0byBtb2RlbHNcbiAgICAgICAgICAgIC8vIHRoYXQgbGl2ZXMgaW4gdGhlIHJvb3RTY2hlbWEgYnV0IG5vdCBpbiB0aGUgc2NoZW1hIGluIHF1ZXN0aW9uLlxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5hanYudmFsaWRhdGUod2l0aElkUmVmUHJlZml4KHNjaGVtYSksIGZvcm1EYXRhKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXZhbGlkYXRvci5qcy5tYXAiLCJpbXBvcnQgQUpWNlZhbGlkYXRvciBmcm9tICcuL3ZhbGlkYXRvcic7XG4vKiogQ3JlYXRlcyBhbmQgcmV0dXJucyBhIGN1c3RvbWl6ZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGBWYWxpZGF0b3JUeXBlYCB3aXRoIHRoZSBnaXZlbiBjdXN0b21pemF0aW9uIGBvcHRpb25zYCBpZlxuICogcHJvdmlkZWQuXG4gKlxuICogQHBhcmFtIFtvcHRpb25zPXt9XSAtIFRoZSBgQ3VzdG9tVmFsaWRhdG9yT3B0aW9uc1R5cGVgIG9wdGlvbnMgdGhhdCBhcmUgdXNlZCB0byBjcmVhdGUgdGhlIGBWYWxpZGF0b3JUeXBlYCBpbnN0YW5jZVxuICogQGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhlIGBAcmpzZi92YWxpZGF0b3ItYWp2OFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjdXN0b21pemVWYWxpZGF0b3Iob3B0aW9ucyA9IHt9KSB7XG4gICAgcmV0dXJuIG5ldyBBSlY2VmFsaWRhdG9yKG9wdGlvbnMpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y3VzdG9taXplVmFsaWRhdG9yLmpzLm1hcCIsImltcG9ydCBjdXN0b21pemVWYWxpZGF0b3IgZnJvbSAnLi9jdXN0b21pemVWYWxpZGF0b3InO1xuZXhwb3J0IHsgY3VzdG9taXplVmFsaWRhdG9yIH07XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbi8qKiBAZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB0aGUgYEByanNmL3ZhbGlkYXRvci1hanY4XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGN1c3RvbWl6ZVZhbGlkYXRvcigpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwidmFyIGJhc2VHZXQgPSByZXF1aXJlKCcuL19iYXNlR2V0JyksXG4gICAgYmFzZVNldCA9IHJlcXVpcmUoJy4vX2Jhc2VTZXQnKSxcbiAgICBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgIGBfLnBpY2tCeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIHByb3BlcnR5LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gYmFzZVBpY2tCeShvYmplY3QsIHBhdGhzLCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICByZXN1bHQgPSB7fTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBwYXRoID0gcGF0aHNbaW5kZXhdLFxuICAgICAgICB2YWx1ZSA9IGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcblxuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIHBhdGgpKSB7XG4gICAgICBiYXNlU2V0KHJlc3VsdCwgY2FzdFBhdGgocGF0aCwgb2JqZWN0KSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQaWNrQnk7XG4iLCJ2YXIgYmFzZVBpY2tCeSA9IHJlcXVpcmUoJy4vX2Jhc2VQaWNrQnknKSxcbiAgICBoYXNJbiA9IHJlcXVpcmUoJy4vaGFzSW4nKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5waWNrYCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAqIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBiYXNlUGljayhvYmplY3QsIHBhdGhzKSB7XG4gIHJldHVybiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIGZ1bmN0aW9uKHZhbHVlLCBwYXRoKSB7XG4gICAgcmV0dXJuIGhhc0luKG9iamVjdCwgcGF0aCk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQaWNrO1xuIiwidmFyIGJhc2VQaWNrID0gcmVxdWlyZSgnLi9fYmFzZVBpY2snKSxcbiAgICBmbGF0UmVzdCA9IHJlcXVpcmUoJy4vX2ZsYXRSZXN0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlIHBpY2tlZCBgb2JqZWN0YCBwcm9wZXJ0aWVzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gKlxuICogXy5waWNrKG9iamVjdCwgWydhJywgJ2MnXSk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2MnOiAzIH1cbiAqL1xudmFyIHBpY2sgPSBmbGF0UmVzdChmdW5jdGlvbihvYmplY3QsIHBhdGhzKSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHt9IDogYmFzZVBpY2sob2JqZWN0LCBwYXRocyk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBwaWNrO1xuIiwiLy8gVGhpcyBmaWxlIHJlcGxhY2VzIGBpbmRleC5qc2AgaW4gYnVuZGxlcnMgbGlrZSB3ZWJwYWNrIG9yIFJvbGx1cCxcbi8vIGFjY29yZGluZyB0byBgYnJvd3NlcmAgY29uZmlnIGluIGBwYWNrYWdlLmpzb25gLlxuXG5pbXBvcnQgeyB1cmxBbHBoYWJldCB9IGZyb20gJy4vdXJsLWFscGhhYmV0L2luZGV4LmpzJ1xuXG5sZXQgcmFuZG9tID0gYnl0ZXMgPT4gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheShieXRlcykpXG5cbmxldCBjdXN0b21SYW5kb20gPSAoYWxwaGFiZXQsIGRlZmF1bHRTaXplLCBnZXRSYW5kb20pID0+IHtcbiAgLy8gRmlyc3QsIGEgYml0bWFzayBpcyBuZWNlc3NhcnkgdG8gZ2VuZXJhdGUgdGhlIElELiBUaGUgYml0bWFzayBtYWtlcyBieXRlc1xuICAvLyB2YWx1ZXMgY2xvc2VyIHRvIHRoZSBhbHBoYWJldCBzaXplLiBUaGUgYml0bWFzayBjYWxjdWxhdGVzIHRoZSBjbG9zZXN0XG4gIC8vIGAyXjMxIC0gMWAgbnVtYmVyLCB3aGljaCBleGNlZWRzIHRoZSBhbHBoYWJldCBzaXplLlxuICAvLyBGb3IgZXhhbXBsZSwgdGhlIGJpdG1hc2sgZm9yIHRoZSBhbHBoYWJldCBzaXplIDMwIGlzIDMxICgwMDAxMTExMSkuXG4gIC8vIGBNYXRoLmNsejMyYCBpcyBub3QgdXNlZCwgYmVjYXVzZSBpdCBpcyBub3QgYXZhaWxhYmxlIGluIGJyb3dzZXJzLlxuICBsZXQgbWFzayA9ICgyIDw8IChNYXRoLmxvZyhhbHBoYWJldC5sZW5ndGggLSAxKSAvIE1hdGguTE4yKSkgLSAxXG4gIC8vIFRob3VnaCwgdGhlIGJpdG1hc2sgc29sdXRpb24gaXMgbm90IHBlcmZlY3Qgc2luY2UgdGhlIGJ5dGVzIGV4Y2VlZGluZ1xuICAvLyB0aGUgYWxwaGFiZXQgc2l6ZSBhcmUgcmVmdXNlZC4gVGhlcmVmb3JlLCB0byByZWxpYWJseSBnZW5lcmF0ZSB0aGUgSUQsXG4gIC8vIHRoZSByYW5kb20gYnl0ZXMgcmVkdW5kYW5jeSBoYXMgdG8gYmUgc2F0aXNmaWVkLlxuXG4gIC8vIE5vdGU6IGV2ZXJ5IGhhcmR3YXJlIHJhbmRvbSBnZW5lcmF0b3IgY2FsbCBpcyBwZXJmb3JtYW5jZSBleHBlbnNpdmUsXG4gIC8vIGJlY2F1c2UgdGhlIHN5c3RlbSBjYWxsIGZvciBlbnRyb3B5IGNvbGxlY3Rpb24gdGFrZXMgYSBsb3Qgb2YgdGltZS5cbiAgLy8gU28sIHRvIGF2b2lkIGFkZGl0aW9uYWwgc3lzdGVtIGNhbGxzLCBleHRyYSBieXRlcyBhcmUgcmVxdWVzdGVkIGluIGFkdmFuY2UuXG5cbiAgLy8gTmV4dCwgYSBzdGVwIGRldGVybWluZXMgaG93IG1hbnkgcmFuZG9tIGJ5dGVzIHRvIGdlbmVyYXRlLlxuICAvLyBUaGUgbnVtYmVyIG9mIHJhbmRvbSBieXRlcyBnZXRzIGRlY2lkZWQgdXBvbiB0aGUgSUQgc2l6ZSwgbWFzayxcbiAgLy8gYWxwaGFiZXQgc2l6ZSwgYW5kIG1hZ2ljIG51bWJlciAxLjYgKHVzaW5nIDEuNiBwZWFrcyBhdCBwZXJmb3JtYW5jZVxuICAvLyBhY2NvcmRpbmcgdG8gYmVuY2htYXJrcykuXG5cbiAgLy8gYC1+ZiA9PiBNYXRoLmNlaWwoZilgIGlmIGYgaXMgYSBmbG9hdFxuICAvLyBgLX5pID0+IGkgKyAxYCBpZiBpIGlzIGFuIGludGVnZXJcbiAgbGV0IHN0ZXAgPSAtfigoMS42ICogbWFzayAqIGRlZmF1bHRTaXplKSAvIGFscGhhYmV0Lmxlbmd0aClcblxuICByZXR1cm4gKHNpemUgPSBkZWZhdWx0U2l6ZSkgPT4ge1xuICAgIGxldCBpZCA9ICcnXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGxldCBieXRlcyA9IGdldFJhbmRvbShzdGVwKVxuICAgICAgLy8gQSBjb21wYWN0IGFsdGVybmF0aXZlIGZvciBgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGVwOyBpKyspYC5cbiAgICAgIGxldCBqID0gc3RlcCB8IDBcbiAgICAgIHdoaWxlIChqLS0pIHtcbiAgICAgICAgLy8gQWRkaW5nIGB8fCAnJ2AgcmVmdXNlcyBhIHJhbmRvbSBieXRlIHRoYXQgZXhjZWVkcyB0aGUgYWxwaGFiZXQgc2l6ZS5cbiAgICAgICAgaWQgKz0gYWxwaGFiZXRbYnl0ZXNbal0gJiBtYXNrXSB8fCAnJ1xuICAgICAgICBpZiAoaWQubGVuZ3RoID09PSBzaXplKSByZXR1cm4gaWRcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxubGV0IGN1c3RvbUFscGhhYmV0ID0gKGFscGhhYmV0LCBzaXplID0gMjEpID0+XG4gIGN1c3RvbVJhbmRvbShhbHBoYWJldCwgc2l6ZSwgcmFuZG9tKVxuXG5sZXQgbmFub2lkID0gKHNpemUgPSAyMSkgPT5cbiAgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheShzaXplKSkucmVkdWNlKChpZCwgYnl0ZSkgPT4ge1xuICAgIC8vIEl0IGlzIGluY29ycmVjdCB0byB1c2UgYnl0ZXMgZXhjZWVkaW5nIHRoZSBhbHBoYWJldCBzaXplLlxuICAgIC8vIFRoZSBmb2xsb3dpbmcgbWFzayByZWR1Y2VzIHRoZSByYW5kb20gYnl0ZSBpbiB0aGUgMC0yNTUgdmFsdWVcbiAgICAvLyByYW5nZSB0byB0aGUgMC02MyB2YWx1ZSByYW5nZS4gVGhlcmVmb3JlLCBhZGRpbmcgaGFja3MsIHN1Y2hcbiAgICAvLyBhcyBlbXB0eSBzdHJpbmcgZmFsbGJhY2sgb3IgbWFnaWMgbnVtYmVycywgaXMgdW5uZWNjZXNzYXJ5IGJlY2F1c2VcbiAgICAvLyB0aGUgYml0bWFzayB0cmltcyBieXRlcyBkb3duIHRvIHRoZSBhbHBoYWJldCBzaXplLlxuICAgIGJ5dGUgJj0gNjNcbiAgICBpZiAoYnl0ZSA8IDM2KSB7XG4gICAgICAvLyBgMC05YS16YFxuICAgICAgaWQgKz0gYnl0ZS50b1N0cmluZygzNilcbiAgICB9IGVsc2UgaWYgKGJ5dGUgPCA2Mikge1xuICAgICAgLy8gYEEtWmBcbiAgICAgIGlkICs9IChieXRlIC0gMjYpLnRvU3RyaW5nKDM2KS50b1VwcGVyQ2FzZSgpXG4gICAgfSBlbHNlIGlmIChieXRlID4gNjIpIHtcbiAgICAgIGlkICs9ICctJ1xuICAgIH0gZWxzZSB7XG4gICAgICBpZCArPSAnXydcbiAgICB9XG4gICAgcmV0dXJuIGlkXG4gIH0sICcnKVxuXG5leHBvcnQgeyBuYW5vaWQsIGN1c3RvbUFscGhhYmV0LCBjdXN0b21SYW5kb20sIHVybEFscGhhYmV0LCByYW5kb20gfVxuIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGdldFRlbXBsYXRlLCBnZXRXaWRnZXQsIGdldFVpT3B0aW9ucywgaXNGaXhlZEl0ZW1zLCBhbGxvd0FkZGl0aW9uYWxJdGVtcywgaXNDdXN0b21XaWRnZXQsIG9wdGlvbnNMaXN0LCBUcmFuc2xhdGFibGVTdHJpbmcsIElURU1TX0tFWSwgfSBmcm9tICdAcmpzZi91dGlscyc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBpc09iamVjdCBmcm9tICdsb2Rhc2gvaXNPYmplY3QnO1xuaW1wb3J0IHNldCBmcm9tICdsb2Rhc2gvc2V0JztcbmltcG9ydCB7IG5hbm9pZCB9IGZyb20gJ25hbm9pZCc7XG4vKiogVXNlZCB0byBnZW5lcmF0ZSBhIHVuaXF1ZSBJRCBmb3IgYW4gZWxlbWVudCBpbiBhIHJvdyAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVSb3dJZCgpIHtcbiAgICByZXR1cm4gbmFub2lkKCk7XG59XG4vKiogQ29udmVydHMgdGhlIGBmb3JtRGF0YWAgaW50byBgS2V5ZWRGb3JtRGF0YVR5cGVgIGRhdGEsIHVzaW5nIHRoZSBgZ2VuZXJhdGVSb3dJZCgpYCBmdW5jdGlvbiB0byBjcmVhdGUgdGhlIGtleVxuICpcbiAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBkYXRhIGZvciB0aGUgZm9ybVxuICogQHJldHVybnMgLSBUaGUgYGZvcm1EYXRhYCBjb252ZXJ0ZWQgaW50byBhIGBLZXllZEZvcm1EYXRhVHlwZWAgZWxlbWVudFxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZUtleWVkRm9ybURhdGEoZm9ybURhdGEpIHtcbiAgICByZXR1cm4gIUFycmF5LmlzQXJyYXkoZm9ybURhdGEpXG4gICAgICAgID8gW11cbiAgICAgICAgOiBmb3JtRGF0YS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAga2V5OiBnZW5lcmF0ZVJvd0lkKCksXG4gICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xufVxuLyoqIENvbnZlcnRzIGBLZXllZEZvcm1EYXRhVHlwZWAgZGF0YSBpbnRvIHRoZSBpbm5lciBgZm9ybURhdGFgXG4gKlxuICogQHBhcmFtIGtleWVkRm9ybURhdGEgLSBUaGUgYEtleWVkRm9ybURhdGFUeXBlYCB0byBiZSBjb252ZXJ0ZWRcbiAqIEByZXR1cm5zIC0gVGhlIGlubmVyIGBmb3JtRGF0YWAgaXRlbShzKSBpbiB0aGUgYGtleWVkRm9ybURhdGFgXG4gKi9cbmZ1bmN0aW9uIGtleWVkVG9QbGFpbkZvcm1EYXRhKGtleWVkRm9ybURhdGEpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShrZXllZEZvcm1EYXRhKSkge1xuICAgICAgICByZXR1cm4ga2V5ZWRGb3JtRGF0YS5tYXAoKGtleWVkSXRlbSkgPT4ga2V5ZWRJdGVtLml0ZW0pO1xuICAgIH1cbiAgICByZXR1cm4gW107XG59XG4vKiogVGhlIGBBcnJheUZpZWxkYCBjb21wb25lbnQgaXMgdXNlZCB0byByZW5kZXIgYSBmaWVsZCBpbiB0aGUgc2NoZW1hIHRoYXQgaXMgb2YgdHlwZSBgYXJyYXlgLiBJdCBzdXBwb3J0cyBib3RoIG5vcm1hbFxuICogYW5kIGZpeGVkIGFycmF5LCBhbGxvd2luZyB1c2VyIHRvIGFkZCBhbmQgcmVtb3ZlIGVsZW1lbnRzIGZyb20gdGhlIGFycmF5IGRhdGEuXG4gKi9cbmNsYXNzIEFycmF5RmllbGQgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIC8qKiBDb25zdHJ1Y3RzIGFuIGBBcnJheUZpZWxkYCBmcm9tIHRoZSBgcHJvcHNgLCBnZW5lcmF0aW5nIHRoZSBpbml0aWFsIGtleWVkIGRhdGEgZnJvbSB0aGUgYGZvcm1EYXRhYFxuICAgICAqXG4gICAgICogQHBhcmFtIHByb3BzIC0gVGhlIGBGaWVsZFByb3BzYCBmb3IgdGhpcyB0ZW1wbGF0ZVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgICAgLyoqIFJldHVybnMgdGhlIGRlZmF1bHQgZm9ybSBpbmZvcm1hdGlvbiBmb3IgYW4gaXRlbSBiYXNlZCBvbiB0aGUgc2NoZW1hIGZvciB0aGF0IGl0ZW0uIERlYWxzIHdpdGggdGhlIHBvc3NpYmlsaXR5XG4gICAgICAgICAqIHRoYXQgdGhlIHNjaGVtYSBpcyBmaXhlZCBhbmQgYWxsb3dzIGFkZGl0aW9uYWwgaXRlbXMuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9nZXROZXdGb3JtRGF0YVJvdyA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgc2NoZW1hLCByZWdpc3RyeSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIGNvbnN0IHsgc2NoZW1hVXRpbHMgfSA9IHJlZ2lzdHJ5O1xuICAgICAgICAgICAgbGV0IGl0ZW1TY2hlbWEgPSBzY2hlbWEuaXRlbXM7XG4gICAgICAgICAgICBpZiAoaXNGaXhlZEl0ZW1zKHNjaGVtYSkgJiYgYWxsb3dBZGRpdGlvbmFsSXRlbXMoc2NoZW1hKSkge1xuICAgICAgICAgICAgICAgIGl0ZW1TY2hlbWEgPSBzY2hlbWEuYWRkaXRpb25hbEl0ZW1zO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ2FzdCB0aGlzIGFzIGEgVCB0byB3b3JrIGFyb3VuZCBzY2hlbWEgdXRpbHMgYmVpbmcgZm9yIFRbXSBjYXVzZWQgYnkgdGhlIEZpZWxkUHJvcHM8VFtdLCBTLCBGPiBjYWxsIG9uIHRoZSBjbGFzc1xuICAgICAgICAgICAgcmV0dXJuIHNjaGVtYVV0aWxzLmdldERlZmF1bHRGb3JtU3RhdGUoaXRlbVNjaGVtYSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBDYWxsYmFjayBoYW5kbGVyIGZvciB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGUgYWRkIGJ1dHRvbi4gQ3JlYXRlcyBhIG5ldyByb3cgb2Yga2V5ZWQgZm9ybSBkYXRhIGF0IHRoZSBlbmQgb2ZcbiAgICAgICAgICogdGhlIGxpc3QsIGFkZGluZyBpdCBpbnRvIHRoZSBzdGF0ZSwgYW5kIHRoZW4gcmV0dXJuaW5nIGBvbkNoYW5nZSgpYCB3aXRoIHRoZSBwbGFpbiBmb3JtIGRhdGEgY29udmVydGVkIGZyb20gdGhlXG4gICAgICAgICAqIGtleWVkIGRhdGFcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGV2ZW50IC0gVGhlIGV2ZW50IGZvciB0aGUgY2xpY2tcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub25BZGRDbGljayA9IChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlQWRkQ2xpY2soZXZlbnQpO1xuICAgICAgICB9O1xuICAgICAgICAvKiogQ2FsbGJhY2sgaGFuZGxlciBmb3Igd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIGFkZCBidXR0b24gb24gYW4gZXhpc3RpbmcgYXJyYXkgZWxlbWVudC4gQ3JlYXRlcyBhIG5ldyByb3cgb2ZcbiAgICAgICAgICoga2V5ZWQgZm9ybSBkYXRhIGluc2VydGVkIGF0IHRoZSBgaW5kZXhgLCBhZGRpbmcgaXQgaW50byB0aGUgc3RhdGUsIGFuZCB0aGVuIHJldHVybmluZyBgb25DaGFuZ2UoKWAgd2l0aCB0aGUgcGxhaW5cbiAgICAgICAgICogZm9ybSBkYXRhIGNvbnZlcnRlZCBmcm9tIHRoZSBrZXllZCBkYXRhXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbmRleCBhdCB3aGljaCB0aGUgYWRkIGJ1dHRvbiBpcyBjbGlja2VkXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uQWRkSW5kZXhDbGljayA9IChpbmRleCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZUFkZENsaWNrKGV2ZW50LCBpbmRleCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICAvKiogQ2FsbGJhY2sgaGFuZGxlciBmb3Igd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIGNvcHkgYnV0dG9uIG9uIGFuIGV4aXN0aW5nIGFycmF5IGVsZW1lbnQuIENsb25lcyB0aGUgcm93IG9mXG4gICAgICAgICAqIGtleWVkIGZvcm0gZGF0YSBhdCB0aGUgYGluZGV4YCBpbnRvIHRoZSBuZXh0IHBvc2l0aW9uIGluIHRoZSBzdGF0ZSwgYW5kIHRoZW4gcmV0dXJuaW5nIGBvbkNoYW5nZSgpYCB3aXRoIHRoZSBwbGFpblxuICAgICAgICAgKiBmb3JtIGRhdGEgY29udmVydGVkIGZyb20gdGhlIGtleWVkIGRhdGFcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGluZGV4IC0gVGhlIGluZGV4IGF0IHdoaWNoIHRoZSBjb3B5IGJ1dHRvbiBpcyBjbGlja2VkXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uQ29weUluZGV4Q2xpY2sgPSAoaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyBvbkNoYW5nZSwgZXJyb3JTY2hlbWEgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBrZXllZEZvcm1EYXRhIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICAgICAgICAgIC8vIHJlZnMgIzE5NTogcmV2YWxpZGF0ZSB0byBlbnN1cmUgcHJvcGVybHkgcmVpbmRleGluZyBlcnJvcnNcbiAgICAgICAgICAgICAgICBsZXQgbmV3RXJyb3JTY2hlbWE7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0Vycm9yU2NoZW1hID0ge307XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaWR4IGluIGVycm9yU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gcGFyc2VJbnQoaWR4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpIDw9IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG5ld0Vycm9yU2NoZW1hLCBbaV0sIGVycm9yU2NoZW1hW2lkeF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaSA+IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG5ld0Vycm9yU2NoZW1hLCBbaSArIDFdLCBlcnJvclNjaGVtYVtpZHhdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdLZXllZEZvcm1EYXRhUm93ID0ge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IGdlbmVyYXRlUm93SWQoKSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbTogY2xvbmVEZWVwKGtleWVkRm9ybURhdGFbaW5kZXhdLml0ZW0pLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3S2V5ZWRGb3JtRGF0YSA9IFsuLi5rZXllZEZvcm1EYXRhXTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBuZXdLZXllZEZvcm1EYXRhLnNwbGljZShpbmRleCArIDEsIDAsIG5ld0tleWVkRm9ybURhdGFSb3cpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3S2V5ZWRGb3JtRGF0YS5wdXNoKG5ld0tleWVkRm9ybURhdGFSb3cpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAga2V5ZWRGb3JtRGF0YTogbmV3S2V5ZWRGb3JtRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlZEtleWVkRm9ybURhdGE6IHRydWUsXG4gICAgICAgICAgICAgICAgfSwgKCkgPT4gb25DaGFuZ2Uoa2V5ZWRUb1BsYWluRm9ybURhdGEobmV3S2V5ZWRGb3JtRGF0YSksIG5ld0Vycm9yU2NoZW1hKSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICAvKiogQ2FsbGJhY2sgaGFuZGxlciBmb3Igd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIHJlbW92ZSBidXR0b24gb24gYW4gZXhpc3RpbmcgYXJyYXkgZWxlbWVudC4gUmVtb3ZlcyB0aGUgcm93IG9mXG4gICAgICAgICAqIGtleWVkIGZvcm0gZGF0YSBhdCB0aGUgYGluZGV4YCBpbiB0aGUgc3RhdGUsIGFuZCB0aGVuIHJldHVybmluZyBgb25DaGFuZ2UoKWAgd2l0aCB0aGUgcGxhaW4gZm9ybSBkYXRhIGNvbnZlcnRlZFxuICAgICAgICAgKiBmcm9tIHRoZSBrZXllZCBkYXRhXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbmRleCBhdCB3aGljaCB0aGUgcmVtb3ZlIGJ1dHRvbiBpcyBjbGlja2VkXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uRHJvcEluZGV4Q2xpY2sgPSAoaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyBvbkNoYW5nZSwgZXJyb3JTY2hlbWEgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBrZXllZEZvcm1EYXRhIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICAgICAgICAgIC8vIHJlZnMgIzE5NTogcmV2YWxpZGF0ZSB0byBlbnN1cmUgcHJvcGVybHkgcmVpbmRleGluZyBlcnJvcnNcbiAgICAgICAgICAgICAgICBsZXQgbmV3RXJyb3JTY2hlbWE7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0Vycm9yU2NoZW1hID0ge307XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaWR4IGluIGVycm9yU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gcGFyc2VJbnQoaWR4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpIDwgaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQobmV3RXJyb3JTY2hlbWEsIFtpXSwgZXJyb3JTY2hlbWFbaWR4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpID4gaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQobmV3RXJyb3JTY2hlbWEsIFtpIC0gMV0sIGVycm9yU2NoZW1hW2lkeF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0tleWVkRm9ybURhdGEgPSBrZXllZEZvcm1EYXRhLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICBrZXllZEZvcm1EYXRhOiBuZXdLZXllZEZvcm1EYXRhLFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVkS2V5ZWRGb3JtRGF0YTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LCAoKSA9PiBvbkNoYW5nZShrZXllZFRvUGxhaW5Gb3JtRGF0YShuZXdLZXllZEZvcm1EYXRhKSwgbmV3RXJyb3JTY2hlbWEpKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBDYWxsYmFjayBoYW5kbGVyIGZvciB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiBvbmUgb2YgdGhlIG1vdmUgaXRlbSBidXR0b25zIG9uIGFuIGV4aXN0aW5nIGFycmF5IGVsZW1lbnQuIE1vdmVzIHRoZVxuICAgICAgICAgKiByb3cgb2Yga2V5ZWQgZm9ybSBkYXRhIGF0IHRoZSBgaW5kZXhgIHRvIHRoZSBgbmV3SW5kZXhgIGluIHRoZSBzdGF0ZSwgYW5kIHRoZW4gcmV0dXJuaW5nIGBvbkNoYW5nZSgpYCB3aXRoIHRoZVxuICAgICAgICAgKiBwbGFpbiBmb3JtIGRhdGEgY29udmVydGVkIGZyb20gdGhlIGtleWVkIGRhdGFcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBpdGVtIHRvIG1vdmVcbiAgICAgICAgICogQHBhcmFtIG5ld0luZGV4IC0gVGhlIGluZGV4IHRvIHdoZXJlIHRoZSBpdGVtIGlzIHRvIGJlIG1vdmVkXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uUmVvcmRlckNsaWNrID0gKGluZGV4LCBuZXdJbmRleCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LmJsdXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyBvbkNoYW5nZSwgZXJyb3JTY2hlbWEgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICAgICAgbGV0IG5ld0Vycm9yU2NoZW1hO1xuICAgICAgICAgICAgICAgIGlmIChlcnJvclNjaGVtYSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdFcnJvclNjaGVtYSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGlkeCBpbiBlcnJvclNjaGVtYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHBhcnNlSW50KGlkeCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChuZXdFcnJvclNjaGVtYSwgW25ld0luZGV4XSwgZXJyb3JTY2hlbWFbaW5kZXhdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGkgPT0gbmV3SW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQobmV3RXJyb3JTY2hlbWEsIFtpbmRleF0sIGVycm9yU2NoZW1hW25ld0luZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQobmV3RXJyb3JTY2hlbWEsIFtpZHhdLCBlcnJvclNjaGVtYVtpXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyBrZXllZEZvcm1EYXRhIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHJlT3JkZXJBcnJheSgpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ29weSBpdGVtXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IF9uZXdLZXllZEZvcm1EYXRhID0ga2V5ZWRGb3JtRGF0YS5zbGljZSgpO1xuICAgICAgICAgICAgICAgICAgICAvLyBNb3ZlcyBpdGVtIGZyb20gaW5kZXggdG8gbmV3SW5kZXhcbiAgICAgICAgICAgICAgICAgICAgX25ld0tleWVkRm9ybURhdGEuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICAgICAgX25ld0tleWVkRm9ybURhdGEuc3BsaWNlKG5ld0luZGV4LCAwLCBrZXllZEZvcm1EYXRhW2luZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfbmV3S2V5ZWRGb3JtRGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3S2V5ZWRGb3JtRGF0YSA9IHJlT3JkZXJBcnJheSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICBrZXllZEZvcm1EYXRhOiBuZXdLZXllZEZvcm1EYXRhLFxuICAgICAgICAgICAgICAgIH0sICgpID0+IG9uQ2hhbmdlKGtleWVkVG9QbGFpbkZvcm1EYXRhKG5ld0tleWVkRm9ybURhdGEpLCBuZXdFcnJvclNjaGVtYSkpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIENhbGxiYWNrIGhhbmRsZXIgdXNlZCB0byBkZWFsIHdpdGggY2hhbmdpbmcgdGhlIHZhbHVlIG9mIHRoZSBkYXRhIGluIHRoZSBhcnJheSBhdCB0aGUgYGluZGV4YC4gQ2FsbHMgdGhlXG4gICAgICAgICAqIGBvbkNoYW5nZWAgY2FsbGJhY2sgd2l0aCB0aGUgdXBkYXRlZCBmb3JtIGRhdGFcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBpdGVtIGJlaW5nIGNoYW5nZWRcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub25DaGFuZ2VGb3JJbmRleCA9IChpbmRleCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICh2YWx1ZSwgbmV3RXJyb3JTY2hlbWEsIGlkKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBmb3JtRGF0YSwgb25DaGFuZ2UsIGVycm9yU2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5RGF0YSA9IEFycmF5LmlzQXJyYXkoZm9ybURhdGEpID8gZm9ybURhdGEgOiBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdGb3JtRGF0YSA9IGFycmF5RGF0YS5tYXAoKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byB0cmVhdCB1bmRlZmluZWQgaXRlbXMgYXMgbnVsbHMgdG8gaGF2ZSB2YWxpZGF0aW9uLlxuICAgICAgICAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3RkZWdydW50L2pzb25zY2hlbWEvaXNzdWVzLzIwNlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBqc29uVmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnID8gbnVsbCA6IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXggPT09IGkgPyBqc29uVmFsdWUgOiBpdGVtO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlKG5ld0Zvcm1EYXRhLCBlcnJvclNjaGVtYSAmJlxuICAgICAgICAgICAgICAgICAgICBlcnJvclNjaGVtYSAmJiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmVycm9yU2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBbaW5kZXhdOiBuZXdFcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICB9LCBpZCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICAvKiogQ2FsbGJhY2sgaGFuZGxlciB1c2VkIHRvIGNoYW5nZSB0aGUgdmFsdWUgZm9yIGEgY2hlY2tib3ggKi9cbiAgICAgICAgdGhpcy5vblNlbGVjdENoYW5nZSA9ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBvbkNoYW5nZSwgaWRTY2hlbWEgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSwgdW5kZWZpbmVkLCBpZFNjaGVtYSAmJiBpZFNjaGVtYS4kaWQpO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCB7IGZvcm1EYXRhID0gW10gfSA9IHByb3BzO1xuICAgICAgICBjb25zdCBrZXllZEZvcm1EYXRhID0gZ2VuZXJhdGVLZXllZEZvcm1EYXRhKGZvcm1EYXRhKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGtleWVkRm9ybURhdGEsXG4gICAgICAgICAgICB1cGRhdGVkS2V5ZWRGb3JtRGF0YTogZmFsc2UsXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKiBSZWFjdCBsaWZlY3ljbGUgbWV0aG9kIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIHByb3BzIGFyZSBhYm91dCB0byBjaGFuZ2UgYWxsb3dpbmcgdGhlIHN0YXRlIHRvIGJlIHVwZGF0ZWQuIEl0XG4gICAgICogcmVnZW5lcmF0ZXMgdGhlIGtleWVkIGZvcm0gZGF0YSBhbmQgcmV0dXJucyBpdFxuICAgICAqXG4gICAgICogQHBhcmFtIG5leHRQcm9wcyAtIFRoZSBuZXh0IHNldCBvZiBwcm9wcyBkYXRhXG4gICAgICogQHBhcmFtIHByZXZTdGF0ZSAtIFRoZSBwcmV2aW91cyBzZXQgb2Ygc3RhdGUgZGF0YVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMobmV4dFByb3BzLCBwcmV2U3RhdGUpIHtcbiAgICAgICAgLy8gRG9uJ3QgY2FsbCBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgaWYga2V5ZWQgZm9ybWRhdGEgd2FzIGp1c3QgdXBkYXRlZC5cbiAgICAgICAgaWYgKHByZXZTdGF0ZS51cGRhdGVkS2V5ZWRGb3JtRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVkS2V5ZWRGb3JtRGF0YTogZmFsc2UsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5leHRGb3JtRGF0YSA9IEFycmF5LmlzQXJyYXkobmV4dFByb3BzLmZvcm1EYXRhKSA/IG5leHRQcm9wcy5mb3JtRGF0YSA6IFtdO1xuICAgICAgICBjb25zdCBwcmV2aW91c0tleWVkRm9ybURhdGEgPSBwcmV2U3RhdGUua2V5ZWRGb3JtRGF0YSB8fCBbXTtcbiAgICAgICAgY29uc3QgbmV3S2V5ZWRGb3JtRGF0YSA9IG5leHRGb3JtRGF0YS5sZW5ndGggPT09IHByZXZpb3VzS2V5ZWRGb3JtRGF0YS5sZW5ndGhcbiAgICAgICAgICAgID8gcHJldmlvdXNLZXllZEZvcm1EYXRhLm1hcCgocHJldmlvdXNLZXllZEZvcm1EYXR1bSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IHByZXZpb3VzS2V5ZWRGb3JtRGF0dW0ua2V5LFxuICAgICAgICAgICAgICAgICAgICBpdGVtOiBuZXh0Rm9ybURhdGFbaW5kZXhdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiBnZW5lcmF0ZUtleWVkRm9ybURhdGEobmV4dEZvcm1EYXRhKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtleWVkRm9ybURhdGE6IG5ld0tleWVkRm9ybURhdGEsXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKiBSZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSB0aXRsZSBmb3IgYW4gaXRlbSBieSBnZXR0aW5nIGZpcnN0IHRoZSB0aXRsZSBmcm9tIHRoZSBzY2hlbWEuaXRlbXMsIHRoZW4gZmFsbGluZyBiYWNrIHRvXG4gICAgICogdGhlIGRlc2NyaXB0aW9uIGZyb20gdGhlIHNjaGVtYS5pdGVtcywgYW5kIGZpbmFsbHkgdGhlIHN0cmluZyBcIkl0ZW1cIlxuICAgICAqL1xuICAgIGdldCBpdGVtVGl0bGUoKSB7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hLCByZWdpc3RyeSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyB0cmFuc2xhdGVTdHJpbmcgfSA9IHJlZ2lzdHJ5O1xuICAgICAgICByZXR1cm4gZ2V0KHNjaGVtYSwgW0lURU1TX0tFWSwgJ3RpdGxlJ10sIGdldChzY2hlbWEsIFtJVEVNU19LRVksICdkZXNjcmlwdGlvbiddLCB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLkFycmF5SXRlbVRpdGxlKSkpO1xuICAgIH1cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBpdGVtIGRlc2NyaWJlZCBpbiB0aGUgc2NoZW1hIGlzIGFsd2F5cyByZXF1aXJlZCwgd2hpY2ggaXMgZGV0ZXJtaW5lZCBieSB3aGV0aGVyIGFueSBpdGVtXG4gICAgICogbWF5IGJlIG51bGwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaXRlbVNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHRoZSBpdGVtXG4gICAgICogQHJldHVybiAtIFRydWUgaWYgdGhlIGl0ZW0gc2NoZW1hIHR5cGUgZG9lcyBub3QgY29udGFpbiB0aGUgXCJudWxsXCIgdHlwZVxuICAgICAqL1xuICAgIGlzSXRlbVJlcXVpcmVkKGl0ZW1TY2hlbWEpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbVNjaGVtYS50eXBlKSkge1xuICAgICAgICAgICAgLy8gV2hpbGUgd2UgZG9uJ3QgeWV0IHN1cHBvcnQgY29tcG9zaXRlL251bGxhYmxlIGpzb25zY2hlbWEgdHlwZXMsIGl0J3NcbiAgICAgICAgICAgIC8vIGZ1dHVyZS1wcm9vZiB0byBjaGVjayBmb3IgcmVxdWlyZW1lbnQgYWdhaW5zdCB0aGVzZS5cbiAgICAgICAgICAgIHJldHVybiAhaXRlbVNjaGVtYS50eXBlLmluY2x1ZGVzKCdudWxsJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWxsIG5vbi1udWxsIGFycmF5IGl0ZW0gdHlwZXMgYXJlIGluaGVyZW50bHkgcmVxdWlyZWQgYnkgZGVzaWduXG4gICAgICAgIHJldHVybiBpdGVtU2NoZW1hLnR5cGUgIT09ICdudWxsJztcbiAgICB9XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBtb3JlIGl0ZW1zIGNhbiBiZSBhZGRlZCB0byB0aGUgYXJyYXkuIElmIHRoZSB1aVNjaGVtYSBpbmRpY2F0ZXMgdGhlIGFycmF5IGRvZXNuJ3QgYWxsb3cgYWRkaW5nXG4gICAgICogdGhlbiBmYWxzZSBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLCBpZiB0aGUgc2NoZW1hIGluZGljYXRlcyB0aGF0IHRoZXJlIGFyZSBhIG1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIGFuZCB0aGVcbiAgICAgKiBgZm9ybURhdGFgIG1hdGNoZXMgdGhhdCB2YWx1ZSwgdGhlbiBmYWxzZSBpcyByZXR1cm5lZCwgb3RoZXJ3aXNlIHRydWUgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9ybUl0ZW1zIC0gVGhlIGxpc3Qgb2YgaXRlbXMgaW4gdGhlIGZvcm1cbiAgICAgKiBAcmV0dXJucyAtIFRydWUgaWYgdGhlIGl0ZW0gaXMgYWRkYWJsZSBvdGhlcndpc2UgZmFsc2VcbiAgICAgKi9cbiAgICBjYW5BZGRJdGVtKGZvcm1JdGVtcykge1xuICAgICAgICBjb25zdCB7IHNjaGVtYSwgdWlTY2hlbWEsIHJlZ2lzdHJ5IH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBsZXQgeyBhZGRhYmxlIH0gPSBnZXRVaU9wdGlvbnModWlTY2hlbWEsIHJlZ2lzdHJ5Lmdsb2JhbFVpT3B0aW9ucyk7XG4gICAgICAgIGlmIChhZGRhYmxlICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgLy8gaWYgdWk6b3B0aW9ucy5hZGRhYmxlIHdhcyBub3QgZXhwbGljaXRseSBzZXQgdG8gZmFsc2UsIHdlIGNhbiBhZGRcbiAgICAgICAgICAgIC8vIGFub3RoZXIgaXRlbSBpZiB3ZSBoYXZlIG5vdCBleGNlZWRlZCBtYXhJdGVtcyB5ZXRcbiAgICAgICAgICAgIGlmIChzY2hlbWEubWF4SXRlbXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGFkZGFibGUgPSBmb3JtSXRlbXMubGVuZ3RoIDwgc2NoZW1hLm1heEl0ZW1zO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYWRkYWJsZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFkZGFibGU7XG4gICAgfVxuICAgIC8qKiBDYWxsYmFjayBoYW5kbGVyIGZvciB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGUgYWRkIG9yIGFkZCBhdCBpbmRleCBidXR0b25zLiBDcmVhdGVzIGEgbmV3IHJvdyBvZiBrZXllZCBmb3JtIGRhdGFcbiAgICAgKiBlaXRoZXIgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCAod2hlbiBpbmRleCBpcyBub3Qgc3BlY2lmaWVkKSBvciBpbnNlcnRlZCBhdCB0aGUgYGluZGV4YCB3aGVuIGl0IGlzLCBhZGRpbmcgaXQgaW50b1xuICAgICAqIHRoZSBzdGF0ZSwgYW5kIHRoZW4gcmV0dXJuaW5nIGBvbkNoYW5nZSgpYCB3aXRoIHRoZSBwbGFpbiBmb3JtIGRhdGEgY29udmVydGVkIGZyb20gdGhlIGtleWVkIGRhdGFcbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBldmVudCBmb3IgdGhlIGNsaWNrXG4gICAgICogQHBhcmFtIFtpbmRleF0gLSBUaGUgb3B0aW9uYWwgaW5kZXggYXQgd2hpY2ggdG8gYWRkIHRoZSBuZXcgZGF0YVxuICAgICAqL1xuICAgIF9oYW5kbGVBZGRDbGljayhldmVudCwgaW5kZXgpIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgb25DaGFuZ2UsIGVycm9yU2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IGtleWVkRm9ybURhdGEgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIC8vIHJlZnMgIzE5NTogcmV2YWxpZGF0ZSB0byBlbnN1cmUgcHJvcGVybHkgcmVpbmRleGluZyBlcnJvcnNcbiAgICAgICAgbGV0IG5ld0Vycm9yU2NoZW1hO1xuICAgICAgICBpZiAoZXJyb3JTY2hlbWEpIHtcbiAgICAgICAgICAgIG5ld0Vycm9yU2NoZW1hID0ge307XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGlkeCBpbiBlcnJvclNjaGVtYSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBwYXJzZUludChpZHgpO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkIHx8IGkgPCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBzZXQobmV3RXJyb3JTY2hlbWEsIFtpXSwgZXJyb3JTY2hlbWFbaWR4XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGkgPj0gaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0KG5ld0Vycm9yU2NoZW1hLCBbaSArIDFdLCBlcnJvclNjaGVtYVtpZHhdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3S2V5ZWRGb3JtRGF0YVJvdyA9IHtcbiAgICAgICAgICAgIGtleTogZ2VuZXJhdGVSb3dJZCgpLFxuICAgICAgICAgICAgaXRlbTogdGhpcy5fZ2V0TmV3Rm9ybURhdGFSb3coKSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbmV3S2V5ZWRGb3JtRGF0YSA9IFsuLi5rZXllZEZvcm1EYXRhXTtcbiAgICAgICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG5ld0tleWVkRm9ybURhdGEuc3BsaWNlKGluZGV4LCAwLCBuZXdLZXllZEZvcm1EYXRhUm93KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5ld0tleWVkRm9ybURhdGEucHVzaChuZXdLZXllZEZvcm1EYXRhUm93KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGtleWVkRm9ybURhdGE6IG5ld0tleWVkRm9ybURhdGEsXG4gICAgICAgICAgICB1cGRhdGVkS2V5ZWRGb3JtRGF0YTogdHJ1ZSxcbiAgICAgICAgfSwgKCkgPT4gb25DaGFuZ2Uoa2V5ZWRUb1BsYWluRm9ybURhdGEobmV3S2V5ZWRGb3JtRGF0YSksIG5ld0Vycm9yU2NoZW1hKSk7XG4gICAgfVxuICAgIC8qKiBSZW5kZXJzIHRoZSBgQXJyYXlGaWVsZGAgZGVwZW5kaW5nIG9uIHRoZSBzcGVjaWZpYyBuZWVkcyBvZiB0aGUgc2NoZW1hIGFuZCB1aXNjaGVtYSBlbGVtZW50c1xuICAgICAqL1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyBzY2hlbWEsIHVpU2NoZW1hLCBpZFNjaGVtYSwgcmVnaXN0cnkgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hVXRpbHMsIHRyYW5zbGF0ZVN0cmluZyB9ID0gcmVnaXN0cnk7XG4gICAgICAgIGlmICghKElURU1TX0tFWSBpbiBzY2hlbWEpKSB7XG4gICAgICAgICAgICBjb25zdCB1aU9wdGlvbnMgPSBnZXRVaU9wdGlvbnModWlTY2hlbWEpO1xuICAgICAgICAgICAgY29uc3QgVW5zdXBwb3J0ZWRGaWVsZFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ1Vuc3VwcG9ydGVkRmllbGRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCB1aU9wdGlvbnMpO1xuICAgICAgICAgICAgcmV0dXJuIChfanN4KFVuc3VwcG9ydGVkRmllbGRUZW1wbGF0ZSwgeyBzY2hlbWE6IHNjaGVtYSwgaWRTY2hlbWE6IGlkU2NoZW1hLCByZWFzb246IHRyYW5zbGF0ZVN0cmluZyhUcmFuc2xhdGFibGVTdHJpbmcuTWlzc2luZ0l0ZW1zKSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2NoZW1hVXRpbHMuaXNNdWx0aVNlbGVjdChzY2hlbWEpKSB7XG4gICAgICAgICAgICAvLyBJZiBhcnJheSBoYXMgZW51bSBvciB1bmlxdWVJdGVtcyBzZXQgdG8gdHJ1ZSwgY2FsbCByZW5kZXJNdWx0aVNlbGVjdCgpIHRvIHJlbmRlciB0aGUgZGVmYXVsdCBtdWx0aXNlbGVjdCB3aWRnZXQgb3IgYSBjdXN0b20gd2lkZ2V0LCBpZiBzcGVjaWZpZWQuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJNdWx0aVNlbGVjdCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0N1c3RvbVdpZGdldCh1aVNjaGVtYSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlckN1c3RvbVdpZGdldCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0ZpeGVkSXRlbXMoc2NoZW1hKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyRml4ZWRBcnJheSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzY2hlbWFVdGlscy5pc0ZpbGVzQXJyYXkoc2NoZW1hLCB1aVNjaGVtYSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlckZpbGVzKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyTm9ybWFsQXJyYXkoKTtcbiAgICB9XG4gICAgLyoqIFJlbmRlcnMgYSBub3JtYWwgYXJyYXkgd2l0aG91dCBhbnkgbGltaXRhdGlvbnMgb2YgbGVuZ3RoXG4gICAgICovXG4gICAgcmVuZGVyTm9ybWFsQXJyYXkoKSB7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hLCB1aVNjaGVtYSA9IHt9LCBlcnJvclNjaGVtYSwgaWRTY2hlbWEsIG5hbWUsIHRpdGxlLCBkaXNhYmxlZCA9IGZhbHNlLCByZWFkb25seSA9IGZhbHNlLCBhdXRvZm9jdXMgPSBmYWxzZSwgcmVxdWlyZWQgPSBmYWxzZSwgcmVnaXN0cnksIG9uQmx1ciwgb25Gb2N1cywgaWRQcmVmaXgsIGlkU2VwYXJhdG9yID0gJ18nLCByYXdFcnJvcnMsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IGtleWVkRm9ybURhdGEgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGNvbnN0IGZpZWxkVGl0bGUgPSBzY2hlbWEudGl0bGUgfHwgdGl0bGUgfHwgbmFtZTtcbiAgICAgICAgY29uc3QgeyBzY2hlbWFVdGlscywgZm9ybUNvbnRleHQgfSA9IHJlZ2lzdHJ5O1xuICAgICAgICBjb25zdCB1aU9wdGlvbnMgPSBnZXRVaU9wdGlvbnModWlTY2hlbWEpO1xuICAgICAgICBjb25zdCBfc2NoZW1hSXRlbXMgPSBpc09iamVjdChzY2hlbWEuaXRlbXMpID8gc2NoZW1hLml0ZW1zIDoge307XG4gICAgICAgIGNvbnN0IGl0ZW1zU2NoZW1hID0gc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEoX3NjaGVtYUl0ZW1zKTtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBrZXllZFRvUGxhaW5Gb3JtRGF0YSh0aGlzLnN0YXRlLmtleWVkRm9ybURhdGEpO1xuICAgICAgICBjb25zdCBjYW5BZGQgPSB0aGlzLmNhbkFkZEl0ZW0oZm9ybURhdGEpO1xuICAgICAgICBjb25zdCBhcnJheVByb3BzID0ge1xuICAgICAgICAgICAgY2FuQWRkLFxuICAgICAgICAgICAgaXRlbXM6IGtleWVkRm9ybURhdGEubWFwKChrZXllZEl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBrZXksIGl0ZW0gfSA9IGtleWVkSXRlbTtcbiAgICAgICAgICAgICAgICAvLyBXaGlsZSB3ZSBhcmUgYWN0dWFsbHkgZGVhbGluZyB3aXRoIGEgc2luZ2xlIGl0ZW0gb2YgdHlwZSBULCB0aGUgdHlwZXMgcmVxdWlyZSBhIFRbXSwgc28gY2FzdFxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1DYXN0ID0gaXRlbTtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtU2NoZW1hID0gc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEoX3NjaGVtYUl0ZW1zLCBpdGVtQ2FzdCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUVycm9yU2NoZW1hID0gZXJyb3JTY2hlbWEgPyBlcnJvclNjaGVtYVtpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUlkUHJlZml4ID0gaWRTY2hlbWEuJGlkICsgaWRTZXBhcmF0b3IgKyBpbmRleDtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtSWRTY2hlbWEgPSBzY2hlbWFVdGlscy50b0lkU2NoZW1hKGl0ZW1TY2hlbWEsIGl0ZW1JZFByZWZpeCwgaXRlbUNhc3QsIGlkUHJlZml4LCBpZFNlcGFyYXRvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyQXJyYXlGaWVsZEl0ZW0oe1xuICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lICYmIGAke25hbWV9LSR7aW5kZXh9YCxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZpZWxkVGl0bGUgPyBgJHtmaWVsZFRpdGxlfS0ke2luZGV4ICsgMX1gIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBjYW5BZGQsXG4gICAgICAgICAgICAgICAgICAgIGNhbk1vdmVVcDogaW5kZXggPiAwLFxuICAgICAgICAgICAgICAgICAgICBjYW5Nb3ZlRG93bjogaW5kZXggPCBmb3JtRGF0YS5sZW5ndGggLSAxLFxuICAgICAgICAgICAgICAgICAgICBpdGVtU2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBpdGVtSWRTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1FcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbURhdGE6IGl0ZW1DYXN0LFxuICAgICAgICAgICAgICAgICAgICBpdGVtVWlTY2hlbWE6IHVpU2NoZW1hLml0ZW1zLFxuICAgICAgICAgICAgICAgICAgICBhdXRvZm9jdXM6IGF1dG9mb2N1cyAmJiBpbmRleCA9PT0gMCxcbiAgICAgICAgICAgICAgICAgICAgb25CbHVyLFxuICAgICAgICAgICAgICAgICAgICBvbkZvY3VzLFxuICAgICAgICAgICAgICAgICAgICByYXdFcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgIHRvdGFsSXRlbXM6IGtleWVkRm9ybURhdGEubGVuZ3RoLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjbGFzc05hbWU6IGBmaWVsZCBmaWVsZC1hcnJheSBmaWVsZC1hcnJheS1vZi0ke2l0ZW1zU2NoZW1hLnR5cGV9YCxcbiAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgaWRTY2hlbWEsXG4gICAgICAgICAgICB1aVNjaGVtYSxcbiAgICAgICAgICAgIG9uQWRkQ2xpY2s6IHRoaXMub25BZGRDbGljayxcbiAgICAgICAgICAgIHJlYWRvbmx5LFxuICAgICAgICAgICAgcmVxdWlyZWQsXG4gICAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgICB0aXRsZTogZmllbGRUaXRsZSxcbiAgICAgICAgICAgIGZvcm1Db250ZXh0LFxuICAgICAgICAgICAgZm9ybURhdGEsXG4gICAgICAgICAgICByYXdFcnJvcnMsXG4gICAgICAgICAgICByZWdpc3RyeSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnQXJyYXlGaWVsZFRlbXBsYXRlJywgcmVnaXN0cnksIHVpT3B0aW9ucyk7XG4gICAgICAgIHJldHVybiBfanN4KFRlbXBsYXRlLCB7IC4uLmFycmF5UHJvcHMgfSk7XG4gICAgfVxuICAgIC8qKiBSZW5kZXJzIGFuIGFycmF5IHVzaW5nIHRoZSBjdXN0b20gd2lkZ2V0IHByb3ZpZGVkIGJ5IHRoZSB1c2VyIGluIHRoZSBgdWlTY2hlbWFgXG4gICAgICovXG4gICAgcmVuZGVyQ3VzdG9tV2lkZ2V0KCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hLCBpZFNjaGVtYSwgdWlTY2hlbWEsIGRpc2FibGVkID0gZmFsc2UsIHJlYWRvbmx5ID0gZmFsc2UsIGF1dG9mb2N1cyA9IGZhbHNlLCByZXF1aXJlZCA9IGZhbHNlLCBoaWRlRXJyb3IsIHBsYWNlaG9sZGVyLCBvbkJsdXIsIG9uRm9jdXMsIGZvcm1EYXRhOiBpdGVtcyA9IFtdLCByZWdpc3RyeSwgcmF3RXJyb3JzLCBuYW1lLCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyB3aWRnZXRzLCBmb3JtQ29udGV4dCwgZ2xvYmFsVWlPcHRpb25zLCBzY2hlbWFVdGlscyB9ID0gcmVnaXN0cnk7XG4gICAgICAgIGNvbnN0IHsgd2lkZ2V0LCB0aXRsZTogdWlUaXRsZSwgLi4ub3B0aW9ucyB9ID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICBjb25zdCBXaWRnZXQgPSBnZXRXaWRnZXQoc2NoZW1hLCB3aWRnZXQsIHdpZGdldHMpO1xuICAgICAgICBjb25zdCBsYWJlbCA9IChfYSA9IHVpVGl0bGUgIT09IG51bGwgJiYgdWlUaXRsZSAhPT0gdm9pZCAwID8gdWlUaXRsZSA6IHNjaGVtYS50aXRsZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbmFtZTtcbiAgICAgICAgY29uc3QgZGlzcGxheUxhYmVsID0gc2NoZW1hVXRpbHMuZ2V0RGlzcGxheUxhYmVsKHNjaGVtYSwgdWlTY2hlbWEsIGdsb2JhbFVpT3B0aW9ucyk7XG4gICAgICAgIHJldHVybiAoX2pzeChXaWRnZXQsIHsgaWQ6IGlkU2NoZW1hLiRpZCwgbmFtZTogbmFtZSwgbXVsdGlwbGU6IHRydWUsIG9uQ2hhbmdlOiB0aGlzLm9uU2VsZWN0Q2hhbmdlLCBvbkJsdXI6IG9uQmx1ciwgb25Gb2N1czogb25Gb2N1cywgb3B0aW9uczogb3B0aW9ucywgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5LCB2YWx1ZTogaXRlbXMsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZG9ubHk6IHJlYWRvbmx5LCBoaWRlRXJyb3I6IGhpZGVFcnJvciwgcmVxdWlyZWQ6IHJlcXVpcmVkLCBsYWJlbDogbGFiZWwsIGhpZGVMYWJlbDogIWRpc3BsYXlMYWJlbCwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCBmb3JtQ29udGV4dDogZm9ybUNvbnRleHQsIGF1dG9mb2N1czogYXV0b2ZvY3VzLCByYXdFcnJvcnM6IHJhd0Vycm9ycyB9KSk7XG4gICAgfVxuICAgIC8qKiBSZW5kZXJzIGFuIGFycmF5IGFzIGEgc2V0IG9mIGNoZWNrYm94ZXNcbiAgICAgKi9cbiAgICByZW5kZXJNdWx0aVNlbGVjdCgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCB7IHNjaGVtYSwgaWRTY2hlbWEsIHVpU2NoZW1hLCBmb3JtRGF0YTogaXRlbXMgPSBbXSwgZGlzYWJsZWQgPSBmYWxzZSwgcmVhZG9ubHkgPSBmYWxzZSwgYXV0b2ZvY3VzID0gZmFsc2UsIHJlcXVpcmVkID0gZmFsc2UsIHBsYWNlaG9sZGVyLCBvbkJsdXIsIG9uRm9jdXMsIHJlZ2lzdHJ5LCByYXdFcnJvcnMsIG5hbWUsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IHdpZGdldHMsIHNjaGVtYVV0aWxzLCBmb3JtQ29udGV4dCwgZ2xvYmFsVWlPcHRpb25zIH0gPSByZWdpc3RyeTtcbiAgICAgICAgY29uc3QgaXRlbXNTY2hlbWEgPSBzY2hlbWFVdGlscy5yZXRyaWV2ZVNjaGVtYShzY2hlbWEuaXRlbXMsIGl0ZW1zKTtcbiAgICAgICAgY29uc3QgZW51bU9wdGlvbnMgPSBvcHRpb25zTGlzdChpdGVtc1NjaGVtYSwgdWlTY2hlbWEpO1xuICAgICAgICBjb25zdCB7IHdpZGdldCA9ICdzZWxlY3QnLCB0aXRsZTogdWlUaXRsZSwgLi4ub3B0aW9ucyB9ID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICBjb25zdCBXaWRnZXQgPSBnZXRXaWRnZXQoc2NoZW1hLCB3aWRnZXQsIHdpZGdldHMpO1xuICAgICAgICBjb25zdCBsYWJlbCA9IChfYSA9IHVpVGl0bGUgIT09IG51bGwgJiYgdWlUaXRsZSAhPT0gdm9pZCAwID8gdWlUaXRsZSA6IHNjaGVtYS50aXRsZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbmFtZTtcbiAgICAgICAgY29uc3QgZGlzcGxheUxhYmVsID0gc2NoZW1hVXRpbHMuZ2V0RGlzcGxheUxhYmVsKHNjaGVtYSwgdWlTY2hlbWEsIGdsb2JhbFVpT3B0aW9ucyk7XG4gICAgICAgIHJldHVybiAoX2pzeChXaWRnZXQsIHsgaWQ6IGlkU2NoZW1hLiRpZCwgbmFtZTogbmFtZSwgbXVsdGlwbGU6IHRydWUsIG9uQ2hhbmdlOiB0aGlzLm9uU2VsZWN0Q2hhbmdlLCBvbkJsdXI6IG9uQmx1ciwgb25Gb2N1czogb25Gb2N1cywgb3B0aW9uczogeyAuLi5vcHRpb25zLCBlbnVtT3B0aW9ucyB9LCBzY2hlbWE6IHNjaGVtYSwgdWlTY2hlbWE6IHVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnksIHZhbHVlOiBpdGVtcywgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkb25seTogcmVhZG9ubHksIHJlcXVpcmVkOiByZXF1aXJlZCwgbGFiZWw6IGxhYmVsLCBoaWRlTGFiZWw6ICFkaXNwbGF5TGFiZWwsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgZm9ybUNvbnRleHQ6IGZvcm1Db250ZXh0LCBhdXRvZm9jdXM6IGF1dG9mb2N1cywgcmF3RXJyb3JzOiByYXdFcnJvcnMgfSkpO1xuICAgIH1cbiAgICAvKiogUmVuZGVycyBhbiBhcnJheSBvZiBmaWxlcyB1c2luZyB0aGUgYEZpbGVXaWRnZXRgXG4gICAgICovXG4gICAgcmVuZGVyRmlsZXMoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgeyBzY2hlbWEsIHVpU2NoZW1hLCBpZFNjaGVtYSwgbmFtZSwgZGlzYWJsZWQgPSBmYWxzZSwgcmVhZG9ubHkgPSBmYWxzZSwgYXV0b2ZvY3VzID0gZmFsc2UsIHJlcXVpcmVkID0gZmFsc2UsIG9uQmx1ciwgb25Gb2N1cywgcmVnaXN0cnksIGZvcm1EYXRhOiBpdGVtcyA9IFtdLCByYXdFcnJvcnMsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IHdpZGdldHMsIGZvcm1Db250ZXh0LCBnbG9iYWxVaU9wdGlvbnMsIHNjaGVtYVV0aWxzIH0gPSByZWdpc3RyeTtcbiAgICAgICAgY29uc3QgeyB3aWRnZXQgPSAnZmlsZXMnLCB0aXRsZTogdWlUaXRsZSwgLi4ub3B0aW9ucyB9ID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICBjb25zdCBXaWRnZXQgPSBnZXRXaWRnZXQoc2NoZW1hLCB3aWRnZXQsIHdpZGdldHMpO1xuICAgICAgICBjb25zdCBsYWJlbCA9IChfYSA9IHVpVGl0bGUgIT09IG51bGwgJiYgdWlUaXRsZSAhPT0gdm9pZCAwID8gdWlUaXRsZSA6IHNjaGVtYS50aXRsZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbmFtZTtcbiAgICAgICAgY29uc3QgZGlzcGxheUxhYmVsID0gc2NoZW1hVXRpbHMuZ2V0RGlzcGxheUxhYmVsKHNjaGVtYSwgdWlTY2hlbWEsIGdsb2JhbFVpT3B0aW9ucyk7XG4gICAgICAgIHJldHVybiAoX2pzeChXaWRnZXQsIHsgb3B0aW9uczogb3B0aW9ucywgaWQ6IGlkU2NoZW1hLiRpZCwgbmFtZTogbmFtZSwgbXVsdGlwbGU6IHRydWUsIG9uQ2hhbmdlOiB0aGlzLm9uU2VsZWN0Q2hhbmdlLCBvbkJsdXI6IG9uQmx1ciwgb25Gb2N1czogb25Gb2N1cywgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgdmFsdWU6IGl0ZW1zLCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlYWRvbmx5OiByZWFkb25seSwgcmVxdWlyZWQ6IHJlcXVpcmVkLCByZWdpc3RyeTogcmVnaXN0cnksIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgYXV0b2ZvY3VzOiBhdXRvZm9jdXMsIHJhd0Vycm9yczogcmF3RXJyb3JzLCBsYWJlbDogbGFiZWwsIGhpZGVMYWJlbDogIWRpc3BsYXlMYWJlbCB9KSk7XG4gICAgfVxuICAgIC8qKiBSZW5kZXJzIGFuIGFycmF5IHRoYXQgaGFzIGEgbWF4aW11bSBsaW1pdCBvZiBpdGVtc1xuICAgICAqL1xuICAgIHJlbmRlckZpeGVkQXJyYXkoKSB7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hLCB1aVNjaGVtYSA9IHt9LCBmb3JtRGF0YSA9IFtdLCBlcnJvclNjaGVtYSwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yID0gJ18nLCBpZFNjaGVtYSwgbmFtZSwgdGl0bGUsIGRpc2FibGVkID0gZmFsc2UsIHJlYWRvbmx5ID0gZmFsc2UsIGF1dG9mb2N1cyA9IGZhbHNlLCByZXF1aXJlZCA9IGZhbHNlLCByZWdpc3RyeSwgb25CbHVyLCBvbkZvY3VzLCByYXdFcnJvcnMsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IGtleWVkRm9ybURhdGEgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGxldCB7IGZvcm1EYXRhOiBpdGVtcyA9IFtdIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBmaWVsZFRpdGxlID0gc2NoZW1hLnRpdGxlIHx8IHRpdGxlIHx8IG5hbWU7XG4gICAgICAgIGNvbnN0IHVpT3B0aW9ucyA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSk7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hVXRpbHMsIGZvcm1Db250ZXh0IH0gPSByZWdpc3RyeTtcbiAgICAgICAgY29uc3QgX3NjaGVtYUl0ZW1zID0gaXNPYmplY3Qoc2NoZW1hLml0ZW1zKSA/IHNjaGVtYS5pdGVtcyA6IFtdO1xuICAgICAgICBjb25zdCBpdGVtU2NoZW1hcyA9IF9zY2hlbWFJdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiBzY2hlbWFVdGlscy5yZXRyaWV2ZVNjaGVtYShpdGVtLCBmb3JtRGF0YVtpbmRleF0pKTtcbiAgICAgICAgY29uc3QgYWRkaXRpb25hbFNjaGVtYSA9IGlzT2JqZWN0KHNjaGVtYS5hZGRpdGlvbmFsSXRlbXMpXG4gICAgICAgICAgICA/IHNjaGVtYVV0aWxzLnJldHJpZXZlU2NoZW1hKHNjaGVtYS5hZGRpdGlvbmFsSXRlbXMsIGZvcm1EYXRhKVxuICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICBpZiAoIWl0ZW1zIHx8IGl0ZW1zLmxlbmd0aCA8IGl0ZW1TY2hlbWFzLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gdG8gbWFrZSBzdXJlIGF0IGxlYXN0IGFsbCBmaXhlZCBpdGVtcyBhcmUgZ2VuZXJhdGVkXG4gICAgICAgICAgICBpdGVtcyA9IGl0ZW1zIHx8IFtdO1xuICAgICAgICAgICAgaXRlbXMgPSBpdGVtcy5jb25jYXQobmV3IEFycmF5KGl0ZW1TY2hlbWFzLmxlbmd0aCAtIGl0ZW1zLmxlbmd0aCkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoZXNlIGFyZSB0aGUgcHJvcHMgcGFzc2VkIGludG8gdGhlIHJlbmRlciBmdW5jdGlvblxuICAgICAgICBjb25zdCBjYW5BZGQgPSB0aGlzLmNhbkFkZEl0ZW0oaXRlbXMpICYmICEhYWRkaXRpb25hbFNjaGVtYTtcbiAgICAgICAgY29uc3QgYXJyYXlQcm9wcyA9IHtcbiAgICAgICAgICAgIGNhbkFkZCxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2ZpZWxkIGZpZWxkLWFycmF5IGZpZWxkLWFycmF5LWZpeGVkLWl0ZW1zJyxcbiAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgaWRTY2hlbWEsXG4gICAgICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgICAgIGl0ZW1zOiBrZXllZEZvcm1EYXRhLm1hcCgoa2V5ZWRJdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsga2V5LCBpdGVtIH0gPSBrZXllZEl0ZW07XG4gICAgICAgICAgICAgICAgLy8gV2hpbGUgd2UgYXJlIGFjdHVhbGx5IGRlYWxpbmcgd2l0aCBhIHNpbmdsZSBpdGVtIG9mIHR5cGUgVCwgdGhlIHR5cGVzIHJlcXVpcmUgYSBUW10sIHNvIGNhc3RcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtQ2FzdCA9IGl0ZW07XG4gICAgICAgICAgICAgICAgY29uc3QgYWRkaXRpb25hbCA9IGluZGV4ID49IGl0ZW1TY2hlbWFzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtU2NoZW1hID0gKGFkZGl0aW9uYWwgJiYgaXNPYmplY3Qoc2NoZW1hLmFkZGl0aW9uYWxJdGVtcylcbiAgICAgICAgICAgICAgICAgICAgPyBzY2hlbWFVdGlscy5yZXRyaWV2ZVNjaGVtYShzY2hlbWEuYWRkaXRpb25hbEl0ZW1zLCBpdGVtQ2FzdClcbiAgICAgICAgICAgICAgICAgICAgOiBpdGVtU2NoZW1hc1tpbmRleF0pIHx8IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1JZFByZWZpeCA9IGlkU2NoZW1hLiRpZCArIGlkU2VwYXJhdG9yICsgaW5kZXg7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUlkU2NoZW1hID0gc2NoZW1hVXRpbHMudG9JZFNjaGVtYShpdGVtU2NoZW1hLCBpdGVtSWRQcmVmaXgsIGl0ZW1DYXN0LCBpZFByZWZpeCwgaWRTZXBhcmF0b3IpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1VaVNjaGVtYSA9IGFkZGl0aW9uYWxcbiAgICAgICAgICAgICAgICAgICAgPyB1aVNjaGVtYS5hZGRpdGlvbmFsSXRlbXMgfHwge31cbiAgICAgICAgICAgICAgICAgICAgOiBBcnJheS5pc0FycmF5KHVpU2NoZW1hLml0ZW1zKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyB1aVNjaGVtYS5pdGVtc1tpbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogdWlTY2hlbWEuaXRlbXMgfHwge307XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUVycm9yU2NoZW1hID0gZXJyb3JTY2hlbWEgPyBlcnJvclNjaGVtYVtpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyQXJyYXlGaWVsZEl0ZW0oe1xuICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lICYmIGAke25hbWV9LSR7aW5kZXh9YCxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZpZWxkVGl0bGUgPyBgJHtmaWVsZFRpdGxlfS0ke2luZGV4ICsgMX1gIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBjYW5BZGQsXG4gICAgICAgICAgICAgICAgICAgIGNhblJlbW92ZTogYWRkaXRpb25hbCxcbiAgICAgICAgICAgICAgICAgICAgY2FuTW92ZVVwOiBpbmRleCA+PSBpdGVtU2NoZW1hcy5sZW5ndGggKyAxLFxuICAgICAgICAgICAgICAgICAgICBjYW5Nb3ZlRG93bjogYWRkaXRpb25hbCAmJiBpbmRleCA8IGl0ZW1zLmxlbmd0aCAtIDEsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1TY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1EYXRhOiBpdGVtQ2FzdCxcbiAgICAgICAgICAgICAgICAgICAgaXRlbVVpU2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBpdGVtSWRTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1FcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgYXV0b2ZvY3VzOiBhdXRvZm9jdXMgJiYgaW5kZXggPT09IDAsXG4gICAgICAgICAgICAgICAgICAgIG9uQmx1cixcbiAgICAgICAgICAgICAgICAgICAgb25Gb2N1cyxcbiAgICAgICAgICAgICAgICAgICAgcmF3RXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICB0b3RhbEl0ZW1zOiBrZXllZEZvcm1EYXRhLmxlbmd0aCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgb25BZGRDbGljazogdGhpcy5vbkFkZENsaWNrLFxuICAgICAgICAgICAgcmVhZG9ubHksXG4gICAgICAgICAgICByZXF1aXJlZCxcbiAgICAgICAgICAgIHJlZ2lzdHJ5LFxuICAgICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgICAgdWlTY2hlbWEsXG4gICAgICAgICAgICB0aXRsZTogZmllbGRUaXRsZSxcbiAgICAgICAgICAgIGZvcm1Db250ZXh0LFxuICAgICAgICAgICAgZXJyb3JTY2hlbWEsXG4gICAgICAgICAgICByYXdFcnJvcnMsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0FycmF5RmllbGRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCB1aU9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gX2pzeChUZW1wbGF0ZSwgeyAuLi5hcnJheVByb3BzIH0pO1xuICAgIH1cbiAgICAvKiogUmVuZGVycyB0aGUgaW5kaXZpZHVhbCBhcnJheSBpdGVtIHVzaW5nIGEgYFNjaGVtYUZpZWxkYCBhbG9uZyB3aXRoIHRoZSBhZGRpdGlvbmFsIHByb3BlcnRpZXMgcmVxdWlyZWQgdG8gYmUgc2VuZFxuICAgICAqIGJhY2sgdG8gdGhlIGBBcnJheUZpZWxkSXRlbVRlbXBsYXRlYC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wcyAtIFRoZSBwcm9wcyBmb3IgdGhlIGluZGl2aWR1YWwgYXJyYXkgaXRlbSB0byBiZSByZW5kZXJlZFxuICAgICAqL1xuICAgIHJlbmRlckFycmF5RmllbGRJdGVtKHByb3BzKSB7XG4gICAgICAgIGNvbnN0IHsga2V5LCBpbmRleCwgbmFtZSwgY2FuQWRkLCBjYW5SZW1vdmUgPSB0cnVlLCBjYW5Nb3ZlVXAsIGNhbk1vdmVEb3duLCBpdGVtU2NoZW1hLCBpdGVtRGF0YSwgaXRlbVVpU2NoZW1hLCBpdGVtSWRTY2hlbWEsIGl0ZW1FcnJvclNjaGVtYSwgYXV0b2ZvY3VzLCBvbkJsdXIsIG9uRm9jdXMsIHJhd0Vycm9ycywgdG90YWxJdGVtcywgdGl0bGUsIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3QgeyBkaXNhYmxlZCwgaGlkZUVycm9yLCBpZFByZWZpeCwgaWRTZXBhcmF0b3IsIHJlYWRvbmx5LCB1aVNjaGVtYSwgcmVnaXN0cnksIGZvcm1Db250ZXh0IH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IGZpZWxkczogeyBBcnJheVNjaGVtYUZpZWxkLCBTY2hlbWFGaWVsZCB9LCBnbG9iYWxVaU9wdGlvbnMsIH0gPSByZWdpc3RyeTtcbiAgICAgICAgY29uc3QgSXRlbVNjaGVtYUZpZWxkID0gQXJyYXlTY2hlbWFGaWVsZCB8fCBTY2hlbWFGaWVsZDtcbiAgICAgICAgY29uc3QgeyBvcmRlcmFibGUgPSB0cnVlLCByZW1vdmFibGUgPSB0cnVlLCBjb3B5YWJsZSA9IGZhbHNlIH0gPSBnZXRVaU9wdGlvbnModWlTY2hlbWEsIGdsb2JhbFVpT3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGhhcyA9IHtcbiAgICAgICAgICAgIG1vdmVVcDogb3JkZXJhYmxlICYmIGNhbk1vdmVVcCxcbiAgICAgICAgICAgIG1vdmVEb3duOiBvcmRlcmFibGUgJiYgY2FuTW92ZURvd24sXG4gICAgICAgICAgICBjb3B5OiBjb3B5YWJsZSAmJiBjYW5BZGQsXG4gICAgICAgICAgICByZW1vdmU6IHJlbW92YWJsZSAmJiBjYW5SZW1vdmUsXG4gICAgICAgICAgICB0b29sYmFyOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgaGFzLnRvb2xiYXIgPSBPYmplY3Qua2V5cyhoYXMpLnNvbWUoKGtleSkgPT4gaGFzW2tleV0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2hpbGRyZW46IChfanN4KEl0ZW1TY2hlbWFGaWVsZCwgeyBuYW1lOiBuYW1lLCB0aXRsZTogdGl0bGUsIGluZGV4OiBpbmRleCwgc2NoZW1hOiBpdGVtU2NoZW1hLCB1aVNjaGVtYTogaXRlbVVpU2NoZW1hLCBmb3JtRGF0YTogaXRlbURhdGEsIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgZXJyb3JTY2hlbWE6IGl0ZW1FcnJvclNjaGVtYSwgaWRQcmVmaXg6IGlkUHJlZml4LCBpZFNlcGFyYXRvcjogaWRTZXBhcmF0b3IsIGlkU2NoZW1hOiBpdGVtSWRTY2hlbWEsIHJlcXVpcmVkOiB0aGlzLmlzSXRlbVJlcXVpcmVkKGl0ZW1TY2hlbWEpLCBvbkNoYW5nZTogdGhpcy5vbkNoYW5nZUZvckluZGV4KGluZGV4KSwgb25CbHVyOiBvbkJsdXIsIG9uRm9jdXM6IG9uRm9jdXMsIHJlZ2lzdHJ5OiByZWdpc3RyeSwgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkb25seTogcmVhZG9ubHksIGhpZGVFcnJvcjogaGlkZUVycm9yLCBhdXRvZm9jdXM6IGF1dG9mb2N1cywgcmF3RXJyb3JzOiByYXdFcnJvcnMgfSkpLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXJyYXktaXRlbScsXG4gICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgIGNhbkFkZCxcbiAgICAgICAgICAgIGhhc0NvcHk6IGhhcy5jb3B5LFxuICAgICAgICAgICAgaGFzVG9vbGJhcjogaGFzLnRvb2xiYXIsXG4gICAgICAgICAgICBoYXNNb3ZlVXA6IGhhcy5tb3ZlVXAsXG4gICAgICAgICAgICBoYXNNb3ZlRG93bjogaGFzLm1vdmVEb3duLFxuICAgICAgICAgICAgaGFzUmVtb3ZlOiBoYXMucmVtb3ZlLFxuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICB0b3RhbEl0ZW1zLFxuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgb25BZGRJbmRleENsaWNrOiB0aGlzLm9uQWRkSW5kZXhDbGljayxcbiAgICAgICAgICAgIG9uQ29weUluZGV4Q2xpY2s6IHRoaXMub25Db3B5SW5kZXhDbGljayxcbiAgICAgICAgICAgIG9uRHJvcEluZGV4Q2xpY2s6IHRoaXMub25Ecm9wSW5kZXhDbGljayxcbiAgICAgICAgICAgIG9uUmVvcmRlckNsaWNrOiB0aGlzLm9uUmVvcmRlckNsaWNrLFxuICAgICAgICAgICAgcmVhZG9ubHksXG4gICAgICAgICAgICByZWdpc3RyeSxcbiAgICAgICAgICAgIHNjaGVtYTogaXRlbVNjaGVtYSxcbiAgICAgICAgICAgIHVpU2NoZW1hOiBpdGVtVWlTY2hlbWEsXG4gICAgICAgIH07XG4gICAgfVxufVxuLyoqIGBBcnJheUZpZWxkYCBpcyBgUmVhY3QuQ29tcG9uZW50VHlwZTxGaWVsZFByb3BzPFRbXSwgUywgRj4+YCAobmVjZXNzYXJpbHkpIGJ1dCB0aGUgYHJlZ2lzdHJ5YCByZXF1aXJlcyB0aGluZ3MgdG8gYmUgYVxuICogYEZpZWxkYCB3aGljaCBpcyBkZWZpbmVkIGFzIGBSZWFjdC5Db21wb25lbnRUeXBlPEZpZWxkUHJvcHM8VCwgUywgRj4+YCwgc28gY2FzdCBpdCB0byBtYWtlIGByZWdpc3RyeWAgaGFwcHkuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IEFycmF5RmllbGQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BcnJheUZpZWxkLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRXaWRnZXQsIGdldFVpT3B0aW9ucywgb3B0aW9uc0xpc3QsIFRyYW5zbGF0YWJsZVN0cmluZywgfSBmcm9tICdAcmpzZi91dGlscyc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnbG9kYXNoL2lzT2JqZWN0Jztcbi8qKiBUaGUgYEJvb2xlYW5GaWVsZGAgY29tcG9uZW50IGlzIHVzZWQgdG8gcmVuZGVyIGEgZmllbGQgaW4gdGhlIHNjaGVtYSBpcyBib29sZWFuLiBJdCBjb25zdHJ1Y3RzIGBlbnVtT3B0aW9uc2AgZm9yIHRoZVxuICogdHdvIGJvb2xlYW4gdmFsdWVzIGJhc2VkIG9uIHRoZSB2YXJpb3VzIGFsdGVybmF0aXZlcyBpbiB0aGUgc2NoZW1hLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgRmllbGRQcm9wc2AgZm9yIHRoaXMgdGVtcGxhdGVcbiAqL1xuZnVuY3Rpb24gQm9vbGVhbkZpZWxkKHByb3BzKSB7XG4gICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgY29uc3QgeyBzY2hlbWEsIG5hbWUsIHVpU2NoZW1hLCBpZFNjaGVtYSwgZm9ybURhdGEsIHJlZ2lzdHJ5LCByZXF1aXJlZCwgZGlzYWJsZWQsIHJlYWRvbmx5LCBoaWRlRXJyb3IsIGF1dG9mb2N1cywgdGl0bGUsIG9uQ2hhbmdlLCBvbkZvY3VzLCBvbkJsdXIsIHJhd0Vycm9ycywgfSA9IHByb3BzO1xuICAgIGNvbnN0IHsgdGl0bGU6IHNjaGVtYVRpdGxlIH0gPSBzY2hlbWE7XG4gICAgY29uc3QgeyB3aWRnZXRzLCBmb3JtQ29udGV4dCwgdHJhbnNsYXRlU3RyaW5nLCBnbG9iYWxVaU9wdGlvbnMgfSA9IHJlZ2lzdHJ5O1xuICAgIGNvbnN0IHsgd2lkZ2V0ID0gJ2NoZWNrYm94JywgdGl0bGU6IHVpVGl0bGUsIFxuICAgIC8vIFVubGlrZSB0aGUgb3RoZXIgZmllbGRzLCBkb24ndCB1c2UgYGdldERpc3BsYXlMYWJlbCgpYCBzaW5jZSBpdCBhbHdheXMgcmV0dXJucyBmYWxzZSBmb3IgdGhlIGJvb2xlYW4gdHlwZVxuICAgIGxhYmVsOiBkaXNwbGF5TGFiZWwgPSB0cnVlLCAuLi5vcHRpb25zIH0gPSBnZXRVaU9wdGlvbnModWlTY2hlbWEsIGdsb2JhbFVpT3B0aW9ucyk7XG4gICAgY29uc3QgV2lkZ2V0ID0gZ2V0V2lkZ2V0KHNjaGVtYSwgd2lkZ2V0LCB3aWRnZXRzKTtcbiAgICBjb25zdCB5ZXMgPSB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLlllc0xhYmVsKTtcbiAgICBjb25zdCBubyA9IHRyYW5zbGF0ZVN0cmluZyhUcmFuc2xhdGFibGVTdHJpbmcuTm9MYWJlbCk7XG4gICAgbGV0IGVudW1PcHRpb25zO1xuICAgIGNvbnN0IGxhYmVsID0gKF9iID0gKF9hID0gdWlUaXRsZSAhPT0gbnVsbCAmJiB1aVRpdGxlICE9PSB2b2lkIDAgPyB1aVRpdGxlIDogc2NoZW1hVGl0bGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRpdGxlKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBuYW1lO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYS5vbmVPZikpIHtcbiAgICAgICAgZW51bU9wdGlvbnMgPSBvcHRpb25zTGlzdCh7XG4gICAgICAgICAgICBvbmVPZjogc2NoZW1hLm9uZU9mXG4gICAgICAgICAgICAgICAgLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGlzT2JqZWN0KG9wdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLm9wdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvcHRpb24udGl0bGUgfHwgKG9wdGlvbi5jb25zdCA9PT0gdHJ1ZSA/IHllcyA6IG5vKSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbHRlcigobykgPT4gbyksIC8vIGNhc3QgYXdheSB0aGUgZXJyb3IgdGhhdCB0eXBlc2NyaXB0IGNhbid0IGdyb2sgaXMgZml4ZWRcbiAgICAgICAgfSwgdWlTY2hlbWEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgLy8gV2UgZGVwcmVjYXRlZCBlbnVtTmFtZXMgaW4gdjUuIEl0J3MgaW50ZW50aW9uYWxseSBvbWl0dGVkIGZyb20gUlNKRlNjaGVtYSB0eXBlLCBzbyB3ZSBuZWVkIHRvIGNhc3QgaGVyZS5cbiAgICAgICAgY29uc3Qgc2NoZW1hV2l0aEVudW1OYW1lcyA9IHNjaGVtYTtcbiAgICAgICAgY29uc3QgZW51bXMgPSAoX2MgPSBzY2hlbWEuZW51bSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogW3RydWUsIGZhbHNlXTtcbiAgICAgICAgaWYgKCFzY2hlbWFXaXRoRW51bU5hbWVzLmVudW1OYW1lcyAmJiBlbnVtcy5sZW5ndGggPT09IDIgJiYgZW51bXMuZXZlcnkoKHYpID0+IHR5cGVvZiB2ID09PSAnYm9vbGVhbicpKSB7XG4gICAgICAgICAgICBlbnVtT3B0aW9ucyA9IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtc1swXSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGVudW1zWzBdID8geWVzIDogbm8sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtc1sxXSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGVudW1zWzFdID8geWVzIDogbm8sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlbnVtT3B0aW9ucyA9IG9wdGlvbnNMaXN0KHtcbiAgICAgICAgICAgICAgICBlbnVtOiBlbnVtcyxcbiAgICAgICAgICAgICAgICAvLyBOT1RFOiBlbnVtTmFtZXMgaXMgZGVwcmVjYXRlZCwgYnV0IHN0aWxsIHN1cHBvcnRlZCBmb3Igbm93LlxuICAgICAgICAgICAgICAgIGVudW1OYW1lczogc2NoZW1hV2l0aEVudW1OYW1lcy5lbnVtTmFtZXMsXG4gICAgICAgICAgICB9LCB1aVNjaGVtYSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIChfanN4KFdpZGdldCwgeyBvcHRpb25zOiB7IC4uLm9wdGlvbnMsIGVudW1PcHRpb25zIH0sIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIGlkOiBpZFNjaGVtYS4kaWQsIG5hbWU6IG5hbWUsIG9uQ2hhbmdlOiBvbkNoYW5nZSwgb25Gb2N1czogb25Gb2N1cywgb25CbHVyOiBvbkJsdXIsIGxhYmVsOiBsYWJlbCwgaGlkZUxhYmVsOiAhZGlzcGxheUxhYmVsLCB2YWx1ZTogZm9ybURhdGEsIHJlcXVpcmVkOiByZXF1aXJlZCwgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkb25seTogcmVhZG9ubHksIGhpZGVFcnJvcjogaGlkZUVycm9yLCByZWdpc3RyeTogcmVnaXN0cnksIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgYXV0b2ZvY3VzOiBhdXRvZm9jdXMsIHJhd0Vycm9yczogcmF3RXJyb3JzIH0pKTtcbn1cbmV4cG9ydCBkZWZhdWx0IEJvb2xlYW5GaWVsZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJvb2xlYW5GaWVsZC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCBvbWl0IGZyb20gJ2xvZGFzaC9vbWl0JztcbmltcG9ydCB7IEFOWV9PRl9LRVksIGRlZXBFcXVhbHMsIEVSUk9SU19LRVksIGdldERpc2NyaW1pbmF0b3JGaWVsZEZyb21TY2hlbWEsIGdldFVpT3B0aW9ucywgZ2V0V2lkZ2V0LCBtZXJnZVNjaGVtYXMsIE9ORV9PRl9LRVksIFRyYW5zbGF0YWJsZVN0cmluZywgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBBbnlPZkZpZWxkYCBjb21wb25lbnQgaXMgdXNlZCB0byByZW5kZXIgYSBmaWVsZCBpbiB0aGUgc2NoZW1hIHRoYXQgaXMgYW4gYGFueU9mYCwgYGFsbE9mYCBvciBgb25lT2ZgLiBJdCB0cmFja3NcbiAqIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgb3B0aW9uIGFuZCBjbGVhbnMgdXAgYW55IGlycmVsZXZhbnQgZGF0YSBpbiBgZm9ybURhdGFgLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgRmllbGRQcm9wc2AgZm9yIHRoaXMgdGVtcGxhdGVcbiAqL1xuY2xhc3MgQW55T2ZGaWVsZCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgLyoqIENvbnN0cnVjdHMgYW4gYEFueU9mRmllbGRgIHdpdGggdGhlIGdpdmVuIGBwcm9wc2AgdG8gaW5pdGlhbGl6ZSB0aGUgaW5pdGlhbGx5IHNlbGVjdGVkIG9wdGlvbiBpbiBzdGF0ZVxuICAgICAqXG4gICAgICogQHBhcmFtIHByb3BzIC0gVGhlIGBGaWVsZFByb3BzYCBmb3IgdGhpcyB0ZW1wbGF0ZVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgICAgLyoqIENhbGxiYWNrIGhhbmRsZXIgdG8gcmVtZW1iZXIgd2hhdCB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG9wdGlvbiBpcy4gSW4gYWRkaXRpb24gdG8gdGhhdCB0aGUgYGZvcm1EYXRhYCBpcyB1cGRhdGVkXG4gICAgICAgICAqIHRvIHJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBuZXdseSBzZWxlY3RlZCBvcHRpb24gc2NoZW1hLCBhbmQgdGhlbiB0aGUgdXBkYXRlZCBkYXRhIGlzIHBhc3NlZCB0b1xuICAgICAgICAgKiB0aGUgYG9uQ2hhbmdlYCBoYW5kbGVyLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gb3B0aW9uIC0gVGhlIG5ldyBvcHRpb24gdmFsdWUgYmVpbmcgc2VsZWN0ZWRcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub25PcHRpb25DaGFuZ2UgPSAob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHNlbGVjdGVkT3B0aW9uLCByZXRyaWV2ZWRPcHRpb25zIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICAgICAgY29uc3QgeyBmb3JtRGF0YSwgb25DaGFuZ2UsIHJlZ2lzdHJ5IH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgY29uc3QgeyBzY2hlbWFVdGlscyB9ID0gcmVnaXN0cnk7XG4gICAgICAgICAgICBjb25zdCBpbnRPcHRpb24gPSBvcHRpb24gIT09IHVuZGVmaW5lZCA/IHBhcnNlSW50KG9wdGlvbiwgMTApIDogLTE7XG4gICAgICAgICAgICBpZiAoaW50T3B0aW9uID09PSBzZWxlY3RlZE9wdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5ld09wdGlvbiA9IGludE9wdGlvbiA+PSAwID8gcmV0cmlldmVkT3B0aW9uc1tpbnRPcHRpb25dIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29uc3Qgb2xkT3B0aW9uID0gc2VsZWN0ZWRPcHRpb24gPj0gMCA/IHJldHJpZXZlZE9wdGlvbnNbc2VsZWN0ZWRPcHRpb25dIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgbGV0IG5ld0Zvcm1EYXRhID0gc2NoZW1hVXRpbHMuc2FuaXRpemVEYXRhRm9yTmV3U2NoZW1hKG5ld09wdGlvbiwgb2xkT3B0aW9uLCBmb3JtRGF0YSk7XG4gICAgICAgICAgICBpZiAobmV3T3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgLy8gQ2FsbCBnZXREZWZhdWx0Rm9ybVN0YXRlIHRvIG1ha2Ugc3VyZSBkZWZhdWx0cyBhcmUgcG9wdWxhdGVkIG9uIGNoYW5nZS4gUGFzcyBcImV4Y2x1ZGVPYmplY3RDaGlsZHJlblwiXG4gICAgICAgICAgICAgICAgLy8gc28gdGhhdCBvbmx5IHRoZSByb290IG9iamVjdHMgdGhlbXNlbHZlcyBhcmUgY3JlYXRlZCB3aXRob3V0IGFkZGluZyB1bmRlZmluZWQgY2hpbGRyZW4gcHJvcGVydGllc1xuICAgICAgICAgICAgICAgIG5ld0Zvcm1EYXRhID0gc2NoZW1hVXRpbHMuZ2V0RGVmYXVsdEZvcm1TdGF0ZShuZXdPcHRpb24sIG5ld0Zvcm1EYXRhLCAnZXhjbHVkZU9iamVjdENoaWxkcmVuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc2VsZWN0ZWRPcHRpb246IGludE9wdGlvbiB9LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgb25DaGFuZ2UobmV3Rm9ybURhdGEsIHVuZGVmaW5lZCwgdGhpcy5nZXRGaWVsZElkKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHsgZm9ybURhdGEsIG9wdGlvbnMsIHJlZ2lzdHJ5OiB7IHNjaGVtYVV0aWxzIH0sIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAvLyBjYWNoZSB0aGUgcmV0cmlldmVkIG9wdGlvbnMgaW4gc3RhdGUgaW4gY2FzZSB0aGV5IGhhdmUgJHJlZnMgdG8gc2F2ZSBkb2luZyBpdCBsYXRlclxuICAgICAgICBjb25zdCByZXRyaWV2ZWRPcHRpb25zID0gb3B0aW9ucy5tYXAoKG9wdCkgPT4gc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEob3B0LCBmb3JtRGF0YSkpO1xuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgcmV0cmlldmVkT3B0aW9ucyxcbiAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uOiB0aGlzLmdldE1hdGNoaW5nT3B0aW9uKDAsIGZvcm1EYXRhLCByZXRyaWV2ZWRPcHRpb25zKSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqIFJlYWN0IGxpZmVjeWNsZSBtZXRob2QgdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgcHJvcHMgYW5kL29yIHN0YXRlIGZvciB0aGlzIGNvbXBvbmVudCBpcyB1cGRhdGVkLiBJdCByZWNvbXB1dGVzIHRoZVxuICAgICAqIGN1cnJlbnRseSBzZWxlY3RlZCBvcHRpb24gYmFzZWQgb24gdGhlIG92ZXJhbGwgYGZvcm1EYXRhYFxuICAgICAqXG4gICAgICogQHBhcmFtIHByZXZQcm9wcyAtIFRoZSBwcmV2aW91cyBgRmllbGRQcm9wc2AgZm9yIHRoaXMgdGVtcGxhdGVcbiAgICAgKiBAcGFyYW0gcHJldlN0YXRlIC0gVGhlIHByZXZpb3VzIGBBbnlPZkZpZWxkU3RhdGVgIGZvciB0aGlzIHRlbXBsYXRlXG4gICAgICovXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgICAgIGNvbnN0IHsgZm9ybURhdGEsIG9wdGlvbnMsIGlkU2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IHNlbGVjdGVkT3B0aW9uIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBsZXQgbmV3U3RhdGUgPSB0aGlzLnN0YXRlO1xuICAgICAgICBpZiAoIWRlZXBFcXVhbHMocHJldlByb3BzLm9wdGlvbnMsIG9wdGlvbnMpKSB7XG4gICAgICAgICAgICBjb25zdCB7IHJlZ2lzdHJ5OiB7IHNjaGVtYVV0aWxzIH0sIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgLy8gcmUtY2FjaGUgdGhlIHJldHJpZXZlZCBvcHRpb25zIGluIHN0YXRlIGluIGNhc2UgdGhleSBoYXZlICRyZWZzIHRvIHNhdmUgZG9pbmcgaXQgbGF0ZXJcbiAgICAgICAgICAgIGNvbnN0IHJldHJpZXZlZE9wdGlvbnMgPSBvcHRpb25zLm1hcCgob3B0KSA9PiBzY2hlbWFVdGlscy5yZXRyaWV2ZVNjaGVtYShvcHQsIGZvcm1EYXRhKSk7XG4gICAgICAgICAgICBuZXdTdGF0ZSA9IHsgc2VsZWN0ZWRPcHRpb24sIHJldHJpZXZlZE9wdGlvbnMgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWRlZXBFcXVhbHMoZm9ybURhdGEsIHByZXZQcm9wcy5mb3JtRGF0YSkgJiYgaWRTY2hlbWEuJGlkID09PSBwcmV2UHJvcHMuaWRTY2hlbWEuJGlkKSB7XG4gICAgICAgICAgICBjb25zdCB7IHJldHJpZXZlZE9wdGlvbnMgfSA9IG5ld1N0YXRlO1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdPcHRpb24gPSB0aGlzLmdldE1hdGNoaW5nT3B0aW9uKHNlbGVjdGVkT3B0aW9uLCBmb3JtRGF0YSwgcmV0cmlldmVkT3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAocHJldlN0YXRlICYmIG1hdGNoaW5nT3B0aW9uICE9PSBzZWxlY3RlZE9wdGlvbikge1xuICAgICAgICAgICAgICAgIG5ld1N0YXRlID0geyBzZWxlY3RlZE9wdGlvbjogbWF0Y2hpbmdPcHRpb24sIHJldHJpZXZlZE9wdGlvbnMgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3U3RhdGUgIT09IHRoaXMuc3RhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUobmV3U3RhdGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSBiZXN0IG1hdGNoaW5nIG9wdGlvbiBmb3IgdGhlIGdpdmVuIGBmb3JtRGF0YWAgYW5kIGBvcHRpb25zYC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb3JtRGF0YSAtIFRoZSBuZXcgZm9ybURhdGFcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBsaXN0IG9mIG9wdGlvbnMgdG8gY2hvb3NlIGZyb21cbiAgICAgKiBAcmV0dXJuIC0gVGhlIGluZGV4IG9mIHRoZSBgb3B0aW9uYCB0aGF0IGJlc3QgbWF0Y2hlcyB0aGUgYGZvcm1EYXRhYFxuICAgICAqL1xuICAgIGdldE1hdGNoaW5nT3B0aW9uKHNlbGVjdGVkT3B0aW9uLCBmb3JtRGF0YSwgb3B0aW9ucykge1xuICAgICAgICBjb25zdCB7IHNjaGVtYSwgcmVnaXN0cnk6IHsgc2NoZW1hVXRpbHMgfSwgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3IgPSBnZXREaXNjcmltaW5hdG9yRmllbGRGcm9tU2NoZW1hKHNjaGVtYSk7XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHNjaGVtYVV0aWxzLmdldENsb3Nlc3RNYXRjaGluZ09wdGlvbihmb3JtRGF0YSwgb3B0aW9ucywgc2VsZWN0ZWRPcHRpb24sIGRpc2NyaW1pbmF0b3IpO1xuICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgIH1cbiAgICBnZXRGaWVsZElkKCkge1xuICAgICAgICBjb25zdCB7IGlkU2NoZW1hLCBzY2hlbWEgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIHJldHVybiBgJHtpZFNjaGVtYS4kaWR9JHtzY2hlbWEub25lT2YgPyAnX19vbmVvZl9zZWxlY3QnIDogJ19fYW55b2Zfc2VsZWN0J31gO1xuICAgIH1cbiAgICAvKiogUmVuZGVycyB0aGUgYEFueU9mRmllbGRgIHNlbGVjdG9yIGFsb25nIHdpdGggYSBgU2NoZW1hRmllbGRgIGZvciB0aGUgdmFsdWUgb2YgdGhlIGBmb3JtRGF0YWBcbiAgICAgKi9cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgbmFtZSwgZGlzYWJsZWQgPSBmYWxzZSwgZXJyb3JTY2hlbWEgPSB7fSwgZm9ybUNvbnRleHQsIG9uQmx1ciwgb25Gb2N1cywgcmVnaXN0cnksIHNjaGVtYSwgdWlTY2hlbWEsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IHdpZGdldHMsIGZpZWxkcywgdHJhbnNsYXRlU3RyaW5nLCBnbG9iYWxVaU9wdGlvbnMsIHNjaGVtYVV0aWxzIH0gPSByZWdpc3RyeTtcbiAgICAgICAgY29uc3QgeyBTY2hlbWFGaWVsZDogX1NjaGVtYUZpZWxkIH0gPSBmaWVsZHM7XG4gICAgICAgIGNvbnN0IHsgc2VsZWN0ZWRPcHRpb24sIHJldHJpZXZlZE9wdGlvbnMgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGNvbnN0IHsgd2lkZ2V0ID0gJ3NlbGVjdCcsIHBsYWNlaG9sZGVyLCBhdXRvZm9jdXMsIGF1dG9jb21wbGV0ZSwgdGl0bGUgPSBzY2hlbWEudGl0bGUsIC4uLnVpT3B0aW9ucyB9ID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICBjb25zdCBXaWRnZXQgPSBnZXRXaWRnZXQoeyB0eXBlOiAnbnVtYmVyJyB9LCB3aWRnZXQsIHdpZGdldHMpO1xuICAgICAgICBjb25zdCByYXdFcnJvcnMgPSBnZXQoZXJyb3JTY2hlbWEsIEVSUk9SU19LRVksIFtdKTtcbiAgICAgICAgY29uc3QgZmllbGRFcnJvclNjaGVtYSA9IG9taXQoZXJyb3JTY2hlbWEsIFtFUlJPUlNfS0VZXSk7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlMYWJlbCA9IHNjaGVtYVV0aWxzLmdldERpc3BsYXlMYWJlbChzY2hlbWEsIHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgICAgICBjb25zdCBvcHRpb24gPSBzZWxlY3RlZE9wdGlvbiA+PSAwID8gcmV0cmlldmVkT3B0aW9uc1tzZWxlY3RlZE9wdGlvbl0gfHwgbnVsbCA6IG51bGw7XG4gICAgICAgIGxldCBvcHRpb25TY2hlbWE7XG4gICAgICAgIGlmIChvcHRpb24pIHtcbiAgICAgICAgICAgIC8vIG1lcmdlIHRvcCBsZXZlbCByZXF1aXJlZCBmaWVsZFxuICAgICAgICAgICAgY29uc3QgeyByZXF1aXJlZCB9ID0gc2NoZW1hO1xuICAgICAgICAgICAgLy8gTWVyZ2UgaW4gYWxsIHRoZSBub24tb25lT2YvYW55T2YgcHJvcGVydGllcyBhbmQgYWxzbyBza2lwIHRoZSBzcGVjaWFsIEFERElUSU9OQUxfUFJPUEVSVFlfRkxBRyBwcm9wZXJ0eVxuICAgICAgICAgICAgb3B0aW9uU2NoZW1hID0gcmVxdWlyZWQgPyBtZXJnZVNjaGVtYXMoeyByZXF1aXJlZCB9LCBvcHRpb24pIDogb3B0aW9uO1xuICAgICAgICB9XG4gICAgICAgIC8vIEZpcnN0IHdlIHdpbGwgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGFuIGFueU9mL29uZU9mIG92ZXJyaWRlIGZvciB0aGUgVUkgc2NoZW1hXG4gICAgICAgIGxldCBvcHRpb25zVWlTY2hlbWEgPSBbXTtcbiAgICAgICAgaWYgKE9ORV9PRl9LRVkgaW4gc2NoZW1hICYmIHVpU2NoZW1hICYmIE9ORV9PRl9LRVkgaW4gdWlTY2hlbWEpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHVpU2NoZW1hW09ORV9PRl9LRVldKSkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnNVaVNjaGVtYSA9IHVpU2NoZW1hW09ORV9PRl9LRVldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGB1aVNjaGVtYS5vbmVPZiBpcyBub3QgYW4gYXJyYXkgZm9yIFwiJHt0aXRsZSB8fCBuYW1lfVwiYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoQU5ZX09GX0tFWSBpbiBzY2hlbWEgJiYgdWlTY2hlbWEgJiYgQU5ZX09GX0tFWSBpbiB1aVNjaGVtYSkge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodWlTY2hlbWFbQU5ZX09GX0tFWV0pKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9uc1VpU2NoZW1hID0gdWlTY2hlbWFbQU5ZX09GX0tFWV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYHVpU2NoZW1hLmFueU9mIGlzIG5vdCBhbiBhcnJheSBmb3IgXCIke3RpdGxlIHx8IG5hbWV9XCJgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBUaGVuIHdlIHBpY2sgdGhlIG9uZSB0aGF0IG1hdGNoZXMgdGhlIHNlbGVjdGVkIG9wdGlvbiBpbmRleCwgaWYgb25lIGV4aXN0cyBvdGhlcndpc2UgZGVmYXVsdCB0byB0aGUgbWFpbiB1aVNjaGVtYVxuICAgICAgICBsZXQgb3B0aW9uVWlTY2hlbWEgPSB1aVNjaGVtYTtcbiAgICAgICAgaWYgKHNlbGVjdGVkT3B0aW9uID49IDAgJiYgb3B0aW9uc1VpU2NoZW1hLmxlbmd0aCA+IHNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICAgICAgICBvcHRpb25VaVNjaGVtYSA9IG9wdGlvbnNVaVNjaGVtYVtzZWxlY3RlZE9wdGlvbl07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdHJhbnNsYXRlRW51bSA9IHRpdGxlXG4gICAgICAgICAgICA/IFRyYW5zbGF0YWJsZVN0cmluZy5UaXRsZU9wdGlvblByZWZpeFxuICAgICAgICAgICAgOiBUcmFuc2xhdGFibGVTdHJpbmcuT3B0aW9uUHJlZml4O1xuICAgICAgICBjb25zdCB0cmFuc2xhdGVQYXJhbXMgPSB0aXRsZSA/IFt0aXRsZV0gOiBbXTtcbiAgICAgICAgY29uc3QgZW51bU9wdGlvbnMgPSByZXRyaWV2ZWRPcHRpb25zLm1hcCgob3B0LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgLy8gQWxzbyBzZWUgaWYgdGhlcmUgaXMgYW4gb3ZlcnJpZGUgdGl0bGUgaW4gdGhlIHVpU2NoZW1hIGZvciBlYWNoIG9wdGlvbiwgb3RoZXJ3aXNlIHVzZSB0aGUgdGl0bGUgZnJvbSB0aGUgb3B0aW9uXG4gICAgICAgICAgICBjb25zdCB7IHRpdGxlOiB1aVRpdGxlID0gb3B0LnRpdGxlIH0gPSBnZXRVaU9wdGlvbnMob3B0aW9uc1VpU2NoZW1hW2luZGV4XSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB1aVRpdGxlIHx8IHRyYW5zbGF0ZVN0cmluZyh0cmFuc2xhdGVFbnVtLCB0cmFuc2xhdGVQYXJhbXMuY29uY2F0KFN0cmluZyhpbmRleCArIDEpKSksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGluZGV4LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAoX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdwYW5lbCBwYW5lbC1kZWZhdWx0IHBhbmVsLWJvZHknLCBjaGlsZHJlbjogW19qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdmb3JtLWdyb3VwJywgY2hpbGRyZW46IF9qc3goV2lkZ2V0LCB7IGlkOiB0aGlzLmdldEZpZWxkSWQoKSwgbmFtZTogYCR7bmFtZX0ke3NjaGVtYS5vbmVPZiA/ICdfX29uZW9mX3NlbGVjdCcgOiAnX19hbnlvZl9zZWxlY3QnfWAsIHNjaGVtYTogeyB0eXBlOiAnbnVtYmVyJywgZGVmYXVsdDogMCB9LCBvbkNoYW5nZTogdGhpcy5vbk9wdGlvbkNoYW5nZSwgb25CbHVyOiBvbkJsdXIsIG9uRm9jdXM6IG9uRm9jdXMsIGRpc2FibGVkOiBkaXNhYmxlZCB8fCBpc0VtcHR5KGVudW1PcHRpb25zKSwgbXVsdGlwbGU6IGZhbHNlLCByYXdFcnJvcnM6IHJhd0Vycm9ycywgZXJyb3JTY2hlbWE6IGZpZWxkRXJyb3JTY2hlbWEsIHZhbHVlOiBzZWxlY3RlZE9wdGlvbiA+PSAwID8gc2VsZWN0ZWRPcHRpb24gOiB1bmRlZmluZWQsIG9wdGlvbnM6IHsgZW51bU9wdGlvbnMsIC4uLnVpT3B0aW9ucyB9LCByZWdpc3RyeTogcmVnaXN0cnksIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCBhdXRvY29tcGxldGU6IGF1dG9jb21wbGV0ZSwgYXV0b2ZvY3VzOiBhdXRvZm9jdXMsIGxhYmVsOiB0aXRsZSAhPT0gbnVsbCAmJiB0aXRsZSAhPT0gdm9pZCAwID8gdGl0bGUgOiBuYW1lLCBoaWRlTGFiZWw6ICFkaXNwbGF5TGFiZWwgfSkgfSksIG9wdGlvblNjaGVtYSAmJiBfanN4KF9TY2hlbWFGaWVsZCwgeyAuLi50aGlzLnByb3BzLCBzY2hlbWE6IG9wdGlvblNjaGVtYSwgdWlTY2hlbWE6IG9wdGlvblVpU2NoZW1hIH0pXSB9KSk7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgQW55T2ZGaWVsZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU11bHRpU2NoZW1hRmllbGQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGFzTnVtYmVyIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLy8gTWF0Y2hlcyBhIHN0cmluZyB0aGF0IGVuZHMgaW4gYSAuIGNoYXJhY3Rlciwgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhIHNlcXVlbmNlIG9mXG4vLyBkaWdpdHMgZm9sbG93ZWQgYnkgYW55IG51bWJlciBvZiAwIGNoYXJhY3RlcnMgdXAgdW50aWwgdGhlIGVuZCBvZiB0aGUgbGluZS5cbi8vIEVuc3VyaW5nIHRoYXQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHByZWZpeGVkIGNoYXJhY3RlciBpcyBpbXBvcnRhbnQgc28gdGhhdFxuLy8geW91IGRvbid0IGluY29ycmVjdGx5IG1hdGNoIGFnYWluc3QgXCIwXCIuXG5jb25zdCB0cmFpbGluZ0NoYXJNYXRjaGVyV2l0aFByZWZpeCA9IC9cXC4oWzAtOV0qMCkqJC87XG4vLyBUaGlzIGlzIHVzZWQgZm9yIHRyaW1taW5nIHRoZSB0cmFpbGluZyAwIGFuZCAuIGNoYXJhY3RlcnMgd2l0aG91dCBhZmZlY3Rpbmdcbi8vIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcuIEl0cyBwb3NzaWJsZSB0byB1c2Ugb25lIFJlZ0V4IHdpdGggZ3JvdXBzIGZvciB0aGlzXG4vLyBmdW5jdGlvbmFsaXR5LCBidXQgaXQgaXMgZmFpcmx5IGNvbXBsZXggY29tcGFyZWQgdG8gc2ltcGx5IGRlZmluaW5nIHR3b1xuLy8gZGlmZmVyZW50IG1hdGNoZXJzLlxuY29uc3QgdHJhaWxpbmdDaGFyTWF0Y2hlciA9IC9bMC5dMCokLztcbi8qKlxuICogVGhlIE51bWJlckZpZWxkIGNsYXNzIGhhcyBzb21lIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGRlYWxpbmcgd2l0aCB0cmFpbGluZ1xuICogZGVjaW1hbCBwb2ludHMgYW5kL29yIHplcm9lcy4gVGhpcyBsb2dpYyBpcyBkZXNpZ25lZCB0byBhbGxvdyB0cmFpbGluZyB2YWx1ZXNcbiAqIHRvIGJlIHZpc2libGUgaW4gdGhlIGlucHV0IGVsZW1lbnQsIGJ1dCBub3QgYmUgcmVwcmVzZW50ZWQgaW4gdGhlXG4gKiBjb3JyZXNwb25kaW5nIGZvcm0gZGF0YS5cbiAqXG4gKiBUaGUgYWxnb3JpdGhtIGlzIGFzIGZvbGxvd3M6XG4gKlxuICogMS4gV2hlbiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcyB0aGUgdmFsdWUgaXMgY2FjaGVkIGluIHRoZSBjb21wb25lbnQgc3RhdGVcbiAqXG4gKiAyLiBUaGUgdmFsdWUgaXMgdGhlbiBub3JtYWxpemVkLCByZW1vdmluZyB0cmFpbGluZyBkZWNpbWFsIHBvaW50cyBhbmQgemVyb3MsXG4gKiAgICB0aGVuIHBhc3NlZCB0byB0aGUgXCJvbkNoYW5nZVwiIGNhbGxiYWNrXG4gKlxuICogMy4gV2hlbiB0aGUgY29tcG9uZW50IGlzIHJlbmRlcmVkLCB0aGUgZm9ybURhdGEgdmFsdWUgaXMgY2hlY2tlZCBhZ2FpbnN0IHRoZVxuICogICAgdmFsdWUgY2FjaGVkIGluIHRoZSBzdGF0ZS4gSWYgaXQgbWF0Y2hlcyB0aGUgY2FjaGVkIHZhbHVlLCB0aGUgY2FjaGVkXG4gKiAgICB2YWx1ZSBpcyBwYXNzZWQgdG8gdGhlIGlucHV0IGluc3RlYWQgb2YgdGhlIGZvcm1EYXRhIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIE51bWJlckZpZWxkKHByb3BzKSB7XG4gICAgY29uc3QgeyByZWdpc3RyeSwgb25DaGFuZ2UsIGZvcm1EYXRhLCB2YWx1ZTogaW5pdGlhbFZhbHVlIH0gPSBwcm9wcztcbiAgICBjb25zdCBbbGFzdFZhbHVlLCBzZXRMYXN0VmFsdWVdID0gdXNlU3RhdGUoaW5pdGlhbFZhbHVlKTtcbiAgICBjb25zdCB7IFN0cmluZ0ZpZWxkIH0gPSByZWdpc3RyeS5maWVsZHM7XG4gICAgbGV0IHZhbHVlID0gZm9ybURhdGE7XG4gICAgLyoqIEhhbmRsZSB0aGUgY2hhbmdlIGZyb20gdGhlIGBTdHJpbmdGaWVsZGAgdG8gcHJvcGVybHkgY29udmVydCB0byBhIG51bWJlclxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGN1cnJlbnQgdmFsdWUgZm9yIHRoZSBjaGFuZ2Ugb2NjdXJyaW5nXG4gICAgICovXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKHZhbHVlLCBlcnJvclNjaGVtYSwgaWQpID0+IHtcbiAgICAgICAgLy8gQ2FjaGUgdGhlIG9yaWdpbmFsIHZhbHVlIGluIGNvbXBvbmVudCBzdGF0ZVxuICAgICAgICBzZXRMYXN0VmFsdWUodmFsdWUpO1xuICAgICAgICAvLyBOb3JtYWxpemUgZGVjaW1hbHMgdGhhdCBkb24ndCBzdGFydCB3aXRoIGEgemVybyBjaGFyYWN0ZXIgaW4gYWR2YW5jZSBzb1xuICAgICAgICAvLyB0aGF0IHRoZSByZXN0IG9mIHRoZSBub3JtYWxpemF0aW9uIGxvZ2ljIGlzIHNpbXBsZXJcbiAgICAgICAgaWYgKGAke3ZhbHVlfWAuY2hhckF0KDApID09PSAnLicpIHtcbiAgICAgICAgICAgIHZhbHVlID0gYDAke3ZhbHVlfWA7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgdmFsdWUgaXMgYSBzdHJpbmcgKHRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgd2lkZ2V0IHVzZWQgaXMgYVxuICAgICAgICAvLyA8c2VsZWN0PiwgZHVlIHRvIGFuIGVudW0gZGVjbGFyYXRpb24gZXRjKSB0aGVuLCBpZiB0aGUgdmFsdWUgZW5kcyBpbiBhXG4gICAgICAgIC8vIHRyYWlsaW5nIGRlY2ltYWwgcG9pbnQgb3IgbXVsdGlwbGUgemVyb2VzLCBzdHJpcCB0aGUgdHJhaWxpbmcgdmFsdWVzXG4gICAgICAgIGNvbnN0IHByb2Nlc3NlZCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubWF0Y2godHJhaWxpbmdDaGFyTWF0Y2hlcldpdGhQcmVmaXgpXG4gICAgICAgICAgICA/IGFzTnVtYmVyKHZhbHVlLnJlcGxhY2UodHJhaWxpbmdDaGFyTWF0Y2hlciwgJycpKVxuICAgICAgICAgICAgOiBhc051bWJlcih2YWx1ZSk7XG4gICAgICAgIG9uQ2hhbmdlKHByb2Nlc3NlZCwgZXJyb3JTY2hlbWEsIGlkKTtcbiAgICB9LCBbb25DaGFuZ2VdKTtcbiAgICBpZiAodHlwZW9mIGxhc3RWYWx1ZSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAvLyBDb25zdHJ1Y3QgYSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBjaGVja3MgZm9yIGEgc3RyaW5nIHRoYXQgY29uc2lzdHNcbiAgICAgICAgLy8gb2YgdGhlIGZvcm1EYXRhIHZhbHVlIHN1ZmZpeGVkIHdpdGggemVybyBvciBvbmUgJy4nIGNoYXJhY3RlcnMgYW5kIHplcm9cbiAgICAgICAgLy8gb3IgbW9yZSAnMCcgY2hhcmFjdGVyc1xuICAgICAgICBjb25zdCByZSA9IG5ldyBSZWdFeHAoYF4oJHtTdHJpbmcodmFsdWUpLnJlcGxhY2UoJy4nLCAnXFxcXC4nKX0pP1xcXFwuPzAqJGApO1xuICAgICAgICAvLyBJZiB0aGUgY2FjaGVkIFwibGFzdFZhbHVlXCIgaXMgYSBtYXRjaCwgdXNlIHRoYXQgaW5zdGVhZCBvZiB0aGUgZm9ybURhdGFcbiAgICAgICAgLy8gdmFsdWUgdG8gcHJldmVudCB0aGUgaW5wdXQgdmFsdWUgZnJvbSBjaGFuZ2luZyBpbiB0aGUgVUlcbiAgICAgICAgaWYgKGxhc3RWYWx1ZS5tYXRjaChyZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gbGFzdFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBfanN4KFN0cmluZ0ZpZWxkLCB7IC4uLnByb3BzLCBmb3JtRGF0YTogdmFsdWUsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UgfSk7XG59XG5leHBvcnQgZGVmYXVsdCBOdW1iZXJGaWVsZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU51bWJlckZpZWxkLmpzLm1hcCIsImltcG9ydCphcyBlIGZyb21cInJlYWN0XCI7ZnVuY3Rpb24gdCgpe3JldHVybiB0PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9Y29uc3Qgbj1bXCJjaGlsZHJlblwiLFwib3B0aW9uc1wiXSxyPXtibG9ja1F1b3RlOlwiMFwiLGJyZWFrTGluZTpcIjFcIixicmVha1RoZW1hdGljOlwiMlwiLGNvZGVCbG9jazpcIjNcIixjb2RlRmVuY2VkOlwiNFwiLGNvZGVJbmxpbmU6XCI1XCIsZm9vdG5vdGU6XCI2XCIsZm9vdG5vdGVSZWZlcmVuY2U6XCI3XCIsZ2ZtVGFzazpcIjhcIixoZWFkaW5nOlwiOVwiLGhlYWRpbmdTZXRleHQ6XCIxMFwiLGh0bWxCbG9jazpcIjExXCIsaHRtbENvbW1lbnQ6XCIxMlwiLGh0bWxTZWxmQ2xvc2luZzpcIjEzXCIsaW1hZ2U6XCIxNFwiLGxpbms6XCIxNVwiLGxpbmtBbmdsZUJyYWNlU3R5bGVEZXRlY3RvcjpcIjE2XCIsbGlua0JhcmVVcmxEZXRlY3RvcjpcIjE3XCIsbGlua01haWx0b0RldGVjdG9yOlwiMThcIixuZXdsaW5lQ29hbGVzY2VyOlwiMTlcIixvcmRlcmVkTGlzdDpcIjIwXCIscGFyYWdyYXBoOlwiMjFcIixyZWY6XCIyMlwiLHJlZkltYWdlOlwiMjNcIixyZWZMaW5rOlwiMjRcIix0YWJsZTpcIjI1XCIsdGFibGVTZXBhcmF0b3I6XCIyNlwiLHRleHQ6XCIyN1wiLHRleHRCb2xkZWQ6XCIyOFwiLHRleHRFbXBoYXNpemVkOlwiMjlcIix0ZXh0RXNjYXBlZDpcIjMwXCIsdGV4dE1hcmtlZDpcIjMxXCIsdGV4dFN0cmlrZXRocm91Z2hlZDpcIjMyXCIsdW5vcmRlcmVkTGlzdDpcIjMzXCJ9O3ZhciBpOyFmdW5jdGlvbihlKXtlW2UuTUFYPTBdPVwiTUFYXCIsZVtlLkhJR0g9MV09XCJISUdIXCIsZVtlLk1FRD0yXT1cIk1FRFwiLGVbZS5MT1c9M109XCJMT1dcIixlW2UuTUlOPTRdPVwiTUlOXCJ9KGl8fChpPXt9KSk7Y29uc3QgbD1bXCJhbGxvd0Z1bGxTY3JlZW5cIixcImFsbG93VHJhbnNwYXJlbmN5XCIsXCJhdXRvQ29tcGxldGVcIixcImF1dG9Gb2N1c1wiLFwiYXV0b1BsYXlcIixcImNlbGxQYWRkaW5nXCIsXCJjZWxsU3BhY2luZ1wiLFwiY2hhclNldFwiLFwiY2xhc3NJZFwiLFwiY29sU3BhblwiLFwiY29udGVudEVkaXRhYmxlXCIsXCJjb250ZXh0TWVudVwiLFwiY3Jvc3NPcmlnaW5cIixcImVuY1R5cGVcIixcImZvcm1BY3Rpb25cIixcImZvcm1FbmNUeXBlXCIsXCJmb3JtTWV0aG9kXCIsXCJmb3JtTm9WYWxpZGF0ZVwiLFwiZm9ybVRhcmdldFwiLFwiZnJhbWVCb3JkZXJcIixcImhyZWZMYW5nXCIsXCJpbnB1dE1vZGVcIixcImtleVBhcmFtc1wiLFwia2V5VHlwZVwiLFwibWFyZ2luSGVpZ2h0XCIsXCJtYXJnaW5XaWR0aFwiLFwibWF4TGVuZ3RoXCIsXCJtZWRpYUdyb3VwXCIsXCJtaW5MZW5ndGhcIixcIm5vVmFsaWRhdGVcIixcInJhZGlvR3JvdXBcIixcInJlYWRPbmx5XCIsXCJyb3dTcGFuXCIsXCJzcGVsbENoZWNrXCIsXCJzcmNEb2NcIixcInNyY0xhbmdcIixcInNyY1NldFwiLFwidGFiSW5kZXhcIixcInVzZU1hcFwiXS5yZWR1Y2UoKGUsdCk9PihlW3QudG9Mb3dlckNhc2UoKV09dCxlKSx7Y2xhc3M6XCJjbGFzc05hbWVcIixmb3I6XCJodG1sRm9yXCJ9KSxhPXthbXA6XCImXCIsYXBvczpcIidcIixndDpcIj5cIixsdDpcIjxcIixuYnNwOlwiwqBcIixxdW90Olwi4oCcXCJ9LG89W1wic3R5bGVcIixcInNjcmlwdFwiXSxjPS8oWy1BLVowLTlfOl0rKSg/Olxccyo9XFxzKig/Oig/OlwiKCg/OlxcXFwufFteXCJdKSopXCIpfCg/OicoKD86XFxcXC58W14nXSkqKScpfCg/OlxceygoPzpcXFxcLnx7W159XSo/fXxbXn1dKSopXFx9KSkpPy9naSxzPS9tYWlsdG86L2ksZD0vXFxuezIsfSQvLHA9L14oXFxzKj5bXFxzXFxTXSo/KSg/PVxcblxcbnwkKS8sdT0vXiAqPiA/L2dtLGY9L14oPzpcXFshKFteXFxdXSopXFxdXFxuKT8oW1xcc1xcU10qKS8saD0vXiB7Mix9XFxuLyxtPS9eKD86KCAqWy0qX10pKXszLH0gKig/OlxcbiAqKStcXG4vLGc9L14oPzogezEsM30pPyhgezMsfXx+ezMsfSkgKihcXFMrKT8gKihbXlxcbl0qPyk/XFxuKFtcXHNcXFNdKj8pKD86XFwxXFxuP3wkKS8seT0vXig/OiB7NH1bXlxcbl0rXFxuKikrKD86XFxuICopK1xcbj8vLGs9L14oYCspXFxzKihbXFxzXFxTXSo/W15gXSlcXHMqXFwxKD8hYCkvLHg9L14oPzpcXG4gKikqXFxuLyxiPS9cXHJcXG4/L2csdj0vXlxcW1xcXihbXlxcXV0rKV0oOiguKikoKFxcbisgezQsfS4qKXwoXFxuKD8hXFxbXFxeKS4rKSkqKS8sUz0vXlxcW1xcXihbXlxcXV0rKV0vLEM9L1xcZi9nLCQ9L14tLS1bIFxcdF0qXFxuKC58XFxuKSpcXG4tLS1bIFxcdF0qXFxuLyxFPS9eXFxzKj9cXFsoeHxcXHMpXFxdLyx3PS9eICooI3sxLDZ9KSAqKFteXFxuXSs/KSg/OiArIyopPyg/OlxcbiAqKSooPzpcXG58JCkvLHo9L14gKigjezEsNn0pICsoW15cXG5dKz8pKD86ICsjKik/KD86XFxuICopKig/OlxcbnwkKS8sTD0vXihbXlxcbl0rKVxcbiAqKD18LSl7Myx9ICooPzpcXG4gKikrXFxuLyxBPS9eICooPyE8W2Etel1bXiA+L10qID9cXC8+KTwoW2Etel1bXiA+L10qKSA/KCg/OltePl0qW14vXSk/KT5cXG4/KFxccyooPzo8XFwxW14+XSo/PltcXHNcXFNdKj88XFwvXFwxPnwoPyE8XFwxXFxiKVtcXHNcXFNdKSo/KTxcXC9cXDE+KD8hPFxcL1xcMT4pXFxuKi9pLFQ9LyYoW2EtejAtOV0rfCNbMC05XXsxLDZ9fCN4WzAtOWEtZkEtRl17MSw2fSk7L2dpLE89L148IS0tW1xcc1xcU10qPyg/Oi0tPikvLEI9L14oZGF0YXxhcmlhfHgpLVthLXpfXVthLXpcXGRfLi1dKiQvLE09L14gKjwoW2Etel1bYS16MC05Ol0qKSg/OlxccysoKD86PC4qPz58W14+XSkqKSk/XFwvPz4oPyE8XFwvXFwxPikoXFxzKlxcbik/L2ksUj0vXlxcey4qXFx9JC8sST0vXihodHRwcz86XFwvXFwvW15cXHM8XStbXjwuLDo7XCInKVxcXVxcc10pLyxVPS9ePChbXiA+XStAW14gPl0rKT4vLEQ9L148KFteID5dKzpcXC9bXiA+XSspPi8sTj0vLShbYS16XSk/L2dpLGo9L14oXFx8LiopXFxuKD86ICooXFx8PyAqWy06XSsgKlxcfFstfCA6XSopXFxuKCg/Oi4qXFx8LipcXG4pKikpP1xcbj8vLEg9L15cXFsoW15cXF1dKilcXF06XFxzKzw/KFteXFxzPl0rKT4/XFxzKihcIihbXlwiXSopXCIpPy8sUD0vXiFcXFsoW15cXF1dKilcXF0gP1xcWyhbXlxcXV0qKVxcXS8sRj0vXlxcWyhbXlxcXV0qKVxcXSA/XFxbKFteXFxdXSopXFxdLyxfPS8oXFxufF5bLSpdXFxzfF4jfF4gezIsfXxeLXsyLH18Xj5cXHMpLyxHPS9cXHQvZyxXPS8oXiAqXFx8fFxcfCAqJCkvZyxaPS9eICo6LSs6ICokLyxxPS9eICo6LSsgKiQvLFE9L14gKi0rOiAqJC8sVj1cIigoPzpcXFxcWy4qP1xcXFxdWyhbXS4qP1spXFxcXF1dfDwuKj8+KD86Lio/PC4qPz4pP3xgLio/YHx+fi4qP35+fD09Lio/PT18LnxcXFxcbikqPylcIixYPW5ldyBSZWdFeHAoYF4oWypfXSlcXFxcMSR7Vn1cXFxcMVxcXFwxKD8hXFxcXDEpYCksSj1uZXcgUmVnRXhwKGBeKFsqX10pJHtWfVxcXFwxKD8hXFxcXDF8XFxcXHcpYCksSz1uZXcgUmVnRXhwKGBePT0ke1Z9PT1gKSxZPW5ldyBSZWdFeHAoYF5+fiR7Vn1+fmApLGVlPS9eXFxcXChbXjAtOUEtWmEtelxcc10pLyx0ZT0vXltcXHNcXFNdKz8oPz1bXjAtOUEtWlxcc1xcdTAwYzAtXFx1ZmZmZiYjOy4oKSdcIl18XFxkK1xcLnxcXG5cXG58IHsyLH1cXG58XFx3KzpcXFN8JCkvaSxuZT0vXlxcbisvLHJlPS9eKFsgXFx0XSopLyxpZT0vXFxcXChbXlxcXFxdKS9nLGxlPS8gKlxcbiskLyxhZT0vKD86XnxcXG4pKCAqKSQvLG9lPVwiKD86XFxcXGQrXFxcXC4pXCIsY2U9XCIoPzpbKistXSlcIjtmdW5jdGlvbiBzZShlKXtyZXR1cm5cIiggKikoXCIrKDE9PT1lP29lOmNlKStcIikgK1wifWNvbnN0IGRlPXNlKDEpLHBlPXNlKDIpO2Z1bmN0aW9uIHVlKGUpe3JldHVybiBuZXcgUmVnRXhwKFwiXlwiKygxPT09ZT9kZTpwZSkpfWNvbnN0IGZlPXVlKDEpLGhlPXVlKDIpO2Z1bmN0aW9uIG1lKGUpe3JldHVybiBuZXcgUmVnRXhwKFwiXlwiKygxPT09ZT9kZTpwZSkrXCJbXlxcXFxuXSooPzpcXFxcbig/IVxcXFwxXCIrKDE9PT1lP29lOmNlKStcIiApW15cXFxcbl0qKSooXFxcXG58JClcIixcImdtXCIpfWNvbnN0IGdlPW1lKDEpLHllPW1lKDIpO2Z1bmN0aW9uIGtlKGUpe2NvbnN0IHQ9MT09PWU/b2U6Y2U7cmV0dXJuIG5ldyBSZWdFeHAoXCJeKCAqKShcIit0K1wiKSBbXFxcXHNcXFxcU10rPyg/OlxcXFxuezIsfSg/ISApKD8hXFxcXDFcIit0K1wiICg/IVwiK3QrXCIgKSlcXFxcbip8XFxcXHMqXFxcXG4qJClcIil9Y29uc3QgeGU9a2UoMSksYmU9a2UoMik7ZnVuY3Rpb24gdmUoZSx0KXtjb25zdCBuPTE9PT10LGk9bj94ZTpiZSxsPW4/Z2U6eWUsYT1uP2ZlOmhlO3JldHVybnttYXRjaChlLHQpe2NvbnN0IG49YWUuZXhlYyh0LnByZXZDYXB0dXJlKTtyZXR1cm4gbiYmKHQubGlzdHx8IXQuaW5saW5lJiYhdC5zaW1wbGUpP2kuZXhlYyhlPW5bMV0rZSk6bnVsbH0sb3JkZXI6MSxwYXJzZShlLHQscil7Y29uc3QgaT1uPytlWzJdOnZvaWQgMCxvPWVbMF0ucmVwbGFjZShkLFwiXFxuXCIpLm1hdGNoKGwpO2xldCBjPSExO3JldHVybntpdGVtczpvLm1hcChmdW5jdGlvbihlLG4pe2NvbnN0IGk9YS5leGVjKGUpWzBdLmxlbmd0aCxsPW5ldyBSZWdFeHAoXCJeIHsxLFwiK2krXCJ9XCIsXCJnbVwiKSxzPWUucmVwbGFjZShsLFwiXCIpLnJlcGxhY2UoYSxcIlwiKSxkPW49PT1vLmxlbmd0aC0xLHA9LTEhPT1zLmluZGV4T2YoXCJcXG5cXG5cIil8fGQmJmM7Yz1wO2NvbnN0IHU9ci5pbmxpbmUsZj1yLmxpc3Q7bGV0IGg7ci5saXN0PSEwLHA/KHIuaW5saW5lPSExLGg9cy5yZXBsYWNlKGxlLFwiXFxuXFxuXCIpKTooci5pbmxpbmU9ITAsaD1zLnJlcGxhY2UobGUsXCJcIikpO2NvbnN0IG09dChoLHIpO3JldHVybiByLmlubGluZT11LHIubGlzdD1mLG19KSxvcmRlcmVkOm4sc3RhcnQ6aX19LHJlbmRlcjoodCxuLGkpPT5lKHQub3JkZXJlZD9cIm9sXCI6XCJ1bFwiLHtrZXk6aS5rZXksc3RhcnQ6dC50eXBlPT09ci5vcmRlcmVkTGlzdD90LnN0YXJ0OnZvaWQgMH0sdC5pdGVtcy5tYXAoZnVuY3Rpb24odCxyKXtyZXR1cm4gZShcImxpXCIse2tleTpyfSxuKHQsaSkpfSkpfX1jb25zdCBTZT1uZXcgUmVnRXhwKFwiXlxcXFxbKCg/OlxcXFxbW15cXFxcXV0qXFxcXF18W15cXFxcW1xcXFxdXXxcXFxcXSg/PVteXFxcXFtdKlxcXFxdKSkqKVxcXFxdXFxcXChcXFxccyo8PygoPzpcXFxcKFteKV0qXFxcXCl8W15cXFxcc1xcXFxcXFxcXXxcXFxcXFxcXC4pKj8pPj8oPzpcXFxccytbJ1xcXCJdKFtcXFxcc1xcXFxTXSo/KVsnXFxcIl0pP1xcXFxzKlxcXFwpXCIpLENlPS9eIVxcWyguKj8pXFxdXFwoICooKD86XFwoW14pXSpcXCl8W14oKSBdKSopICpcIj8oW14pXCJdKik/XCI/XFwpLywkZT1bcCxnLHksdyxMLHosTyxqLGdlLHhlLHllLGJlXSxFZT1bLi4uJGUsL15bXlxcbl0rKD86ICBcXG58XFxuezIsfSkvLEEsTV07ZnVuY3Rpb24gd2UoZSl7cmV0dXJuIGUucmVwbGFjZSgvW8OAw4HDgsODw4TDhcOgw6HDosOjw6TDpcOmw4ZdL2csXCJhXCIpLnJlcGxhY2UoL1vDp8OHXS9nLFwiY1wiKS5yZXBsYWNlKC9bw7DDkF0vZyxcImRcIikucmVwbGFjZSgvW8OIw4nDisOLw6nDqMOqw6tdL2csXCJlXCIpLnJlcGxhY2UoL1vDj8Ovw47DrsONw63DjMOsXS9nLFwiaVwiKS5yZXBsYWNlKC9bw5HDsV0vZyxcIm5cIikucmVwbGFjZSgvW8O4w5jFk8WSw5XDtcOUw7TDk8Ozw5LDsl0vZyxcIm9cIikucmVwbGFjZSgvW8Ocw7zDm8O7w5rDusOZw7ldL2csXCJ1XCIpLnJlcGxhY2UoL1vFuMO/w53DvV0vZyxcInlcIikucmVwbGFjZSgvW15hLXowLTktIF0vZ2ksXCJcIikucmVwbGFjZSgvIC9naSxcIi1cIikudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiB6ZShlKXtyZXR1cm4gUS50ZXN0KGUpP1wicmlnaHRcIjpaLnRlc3QoZSk/XCJjZW50ZXJcIjpxLnRlc3QoZSk/XCJsZWZ0XCI6bnVsbH1mdW5jdGlvbiBMZShlLHQsbixpKXtjb25zdCBsPW4uaW5UYWJsZTtuLmluVGFibGU9ITA7bGV0IGE9ZS50cmltKCkuc3BsaXQoLyggKig/OmBbXmBdKmB8XFxcXFxcfHxcXHwpICopLykucmVkdWNlKChlLGwpPT4oXCJ8XCI9PT1sLnRyaW0oKT9lLnB1c2goaT97dHlwZTpyLnRhYmxlU2VwYXJhdG9yfTp7dHlwZTpyLnRleHQsdGV4dDpsfSk6XCJcIiE9PWwmJmUucHVzaC5hcHBseShlLHQobCxuKSksZSksW10pO24uaW5UYWJsZT1sO2xldCBvPVtbXV07cmV0dXJuIGEuZm9yRWFjaChmdW5jdGlvbihlLHQpe2UudHlwZT09PXIudGFibGVTZXBhcmF0b3I/MCE9PXQmJnQhPT1hLmxlbmd0aC0xJiZvLnB1c2goW10pOihlLnR5cGUhPT1yLnRleHR8fG51bGwhPWFbdCsxXSYmYVt0KzFdLnR5cGUhPT1yLnRhYmxlU2VwYXJhdG9yfHwoZS50ZXh0PWUudGV4dC50cmltRW5kKCkpLG9bby5sZW5ndGgtMV0ucHVzaChlKSl9KSxvfWZ1bmN0aW9uIEFlKGUsdCxuKXtuLmlubGluZT0hMDtjb25zdCBpPWVbMl0/ZVsyXS5yZXBsYWNlKFcsXCJcIikuc3BsaXQoXCJ8XCIpLm1hcCh6ZSk6W10sbD1lWzNdP2Z1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZS50cmltKCkuc3BsaXQoXCJcXG5cIikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBMZShlLHQsbiwhMCl9KX0oZVszXSx0LG4pOltdLGE9TGUoZVsxXSx0LG4sISFsLmxlbmd0aCk7cmV0dXJuIG4uaW5saW5lPSExLGwubGVuZ3RoP3thbGlnbjppLGNlbGxzOmwsaGVhZGVyOmEsdHlwZTpyLnRhYmxlfTp7Y2hpbGRyZW46YSx0eXBlOnIucGFyYWdyYXBofX1mdW5jdGlvbiBUZShlLHQpe3JldHVybiBudWxsPT1lLmFsaWduW3RdP3t9Ont0ZXh0QWxpZ246ZS5hbGlnblt0XX19ZnVuY3Rpb24gT2UoZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIG4uaW5saW5lP2UuZXhlYyh0KTpudWxsfX1mdW5jdGlvbiBCZShlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gbi5pbmxpbmV8fG4uc2ltcGxlP2UuZXhlYyh0KTpudWxsfX1mdW5jdGlvbiBNZShlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gbi5pbmxpbmV8fG4uc2ltcGxlP251bGw6ZS5leGVjKHQpfX1mdW5jdGlvbiBSZShlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuZXhlYyh0KX19ZnVuY3Rpb24gSWUoZSx0KXtpZih0LmlubGluZXx8dC5zaW1wbGUpcmV0dXJuIG51bGw7bGV0IG49XCJcIjtlLnNwbGl0KFwiXFxuXCIpLmV2ZXJ5KGU9PiEkZS5zb21lKHQ9PnQudGVzdChlKSkmJihuKz1lK1wiXFxuXCIsZS50cmltKCkpKTtjb25zdCByPW4udHJpbUVuZCgpO3JldHVyblwiXCI9PXI/bnVsbDpbbixyXX1mdW5jdGlvbiBVZShlKXt0cnl7aWYoZGVjb2RlVVJJQ29tcG9uZW50KGUpLnJlcGxhY2UoL1teQS1aYS16MC05LzpdL2csXCJcIikubWF0Y2goL15cXHMqKGphdmFzY3JpcHR8dmJzY3JpcHR8ZGF0YSg/ITppbWFnZSkpOi9pKSlyZXR1cm4gbnVsbH1jYXRjaChlKXtyZXR1cm4gbnVsbH1yZXR1cm4gZX1mdW5jdGlvbiBEZShlKXtyZXR1cm4gZS5yZXBsYWNlKGllLFwiJDFcIil9ZnVuY3Rpb24gTmUoZSx0LG4pe2NvbnN0IHI9bi5pbmxpbmV8fCExLGk9bi5zaW1wbGV8fCExO24uaW5saW5lPSEwLG4uc2ltcGxlPSEwO2NvbnN0IGw9ZSh0LG4pO3JldHVybiBuLmlubGluZT1yLG4uc2ltcGxlPWksbH1mdW5jdGlvbiBqZShlLHQsbil7Y29uc3Qgcj1uLmlubGluZXx8ITEsaT1uLnNpbXBsZXx8ITE7bi5pbmxpbmU9ITEsbi5zaW1wbGU9ITA7Y29uc3QgbD1lKHQsbik7cmV0dXJuIG4uaW5saW5lPXIsbi5zaW1wbGU9aSxsfWZ1bmN0aW9uIEhlKGUsdCxuKXtjb25zdCByPW4uaW5saW5lfHwhMTtuLmlubGluZT0hMTtjb25zdCBpPWUodCxuKTtyZXR1cm4gbi5pbmxpbmU9cixpfWNvbnN0IFBlPShlLHQsbik9Pih7Y2hpbGRyZW46TmUodCxlWzFdLG4pfSk7ZnVuY3Rpb24gRmUoKXtyZXR1cm57fX1mdW5jdGlvbiBfZSgpe3JldHVybiBudWxsfWZ1bmN0aW9uIEdlKC4uLmUpe3JldHVybiBlLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKX1mdW5jdGlvbiBXZShlLHQsbil7bGV0IHI9ZTtjb25zdCBpPXQuc3BsaXQoXCIuXCIpO2Zvcig7aS5sZW5ndGgmJihyPXJbaVswXV0sdm9pZCAwIT09cik7KWkuc2hpZnQoKTtyZXR1cm4gcnx8bn1mdW5jdGlvbiBaZShuPVwiXCIsaT17fSl7ZnVuY3Rpb24gZChlLG4sLi4ucil7Y29uc3QgbD1XZShpLm92ZXJyaWRlcyxgJHtlfS5wcm9wc2Ase30pO3JldHVybiBpLmNyZWF0ZUVsZW1lbnQoZnVuY3Rpb24oZSx0KXtjb25zdCBuPVdlKHQsZSk7cmV0dXJuIG4/XCJmdW5jdGlvblwiPT10eXBlb2Ygbnx8XCJvYmplY3RcIj09dHlwZW9mIG4mJlwicmVuZGVyXCJpbiBuP246V2UodCxgJHtlfS5jb21wb25lbnRgLGUpOmV9KGUsaS5vdmVycmlkZXMpLHQoe30sbixsLHtjbGFzc05hbWU6R2UobnVsbD09bj92b2lkIDA6bi5jbGFzc05hbWUsbC5jbGFzc05hbWUpfHx2b2lkIDB9KSwuLi5yKX1mdW5jdGlvbiBXKGUpe2U9ZS5yZXBsYWNlKCQsXCJcIik7bGV0IHQ9ITE7aS5mb3JjZUlubGluZT90PSEwOmkuZm9yY2VCbG9ja3x8KHQ9ITE9PT1fLnRlc3QoZSkpO2NvbnN0IG49bGUoaWUodD9lOmAke2UudHJpbUVuZCgpLnJlcGxhY2UobmUsXCJcIil9XFxuXFxuYCx7aW5saW5lOnR9KSk7Zm9yKDtcInN0cmluZ1wiPT10eXBlb2YgbltuLmxlbmd0aC0xXSYmIW5bbi5sZW5ndGgtMV0udHJpbSgpOyluLnBvcCgpO2lmKG51bGw9PT1pLndyYXBwZXIpcmV0dXJuIG47Y29uc3Qgcj1pLndyYXBwZXJ8fCh0P1wic3BhblwiOlwiZGl2XCIpO2xldCBsO2lmKG4ubGVuZ3RoPjF8fGkuZm9yY2VXcmFwcGVyKWw9bjtlbHNle2lmKDE9PT1uLmxlbmd0aClyZXR1cm4gbD1uWzBdLFwic3RyaW5nXCI9PXR5cGVvZiBsP2QoXCJzcGFuXCIse2tleTpcIm91dGVyXCJ9LGwpOmw7bD1udWxsfXJldHVybiBpLmNyZWF0ZUVsZW1lbnQocix7a2V5Olwib3V0ZXJcIn0sbCl9ZnVuY3Rpb24gWihlLHQpe2NvbnN0IG49dC5tYXRjaChjKTtyZXR1cm4gbj9uLnJlZHVjZShmdW5jdGlvbih0LG4pe2NvbnN0IHI9bi5pbmRleE9mKFwiPVwiKTtpZigtMSE9PXIpe2NvbnN0IGE9ZnVuY3Rpb24oZSl7cmV0dXJuLTEhPT1lLmluZGV4T2YoXCItXCIpJiZudWxsPT09ZS5tYXRjaChCKSYmKGU9ZS5yZXBsYWNlKE4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfSkpLGV9KG4uc2xpY2UoMCxyKSkudHJpbSgpLG89ZnVuY3Rpb24oZSl7Y29uc3QgdD1lWzBdO3JldHVybignXCInPT09dHx8XCInXCI9PT10KSYmZS5sZW5ndGg+PTImJmVbZS5sZW5ndGgtMV09PT10P2Uuc2xpY2UoMSwtMSk6ZX0obi5zbGljZShyKzEpLnRyaW0oKSksYz1sW2FdfHxhO2lmKFwicmVmXCI9PT1jKXJldHVybiB0O2NvbnN0IHM9dFtjXT1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm5cInN0eWxlXCI9PT10P24uc3BsaXQoLztcXHM/LykucmVkdWNlKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj10LnNsaWNlKDAsdC5pbmRleE9mKFwiOlwiKSk7cmV0dXJuIGVbbi50cmltKCkucmVwbGFjZSgvKC1bYS16XSkvZyxlPT5lWzFdLnRvVXBwZXJDYXNlKCkpXT10LnNsaWNlKG4ubGVuZ3RoKzEpLnRyaW0oKSxlfSx7fSk6XCJocmVmXCI9PT10fHxcInNyY1wiPT09dD9yKG4sZSx0KToobi5tYXRjaChSKSYmKG49bi5zbGljZSgxLG4ubGVuZ3RoLTEpKSxcInRydWVcIj09PW58fFwiZmFsc2VcIiE9PW4mJm4pfShlLGEsbyxpLnNhbml0aXplcik7XCJzdHJpbmdcIj09dHlwZW9mIHMmJihBLnRlc3Qocyl8fE0udGVzdChzKSkmJih0W2NdPVcocy50cmltKCkpKX1lbHNlXCJzdHlsZVwiIT09biYmKHRbbFtuXXx8bl09ITApO3JldHVybiB0fSx7fSk6bnVsbH1pLm92ZXJyaWRlcz1pLm92ZXJyaWRlc3x8e30saS5zYW5pdGl6ZXI9aS5zYW5pdGl6ZXJ8fFVlLGkuc2x1Z2lmeT1pLnNsdWdpZnl8fHdlLGkubmFtZWRDb2Rlc1RvVW5pY29kZT1pLm5hbWVkQ29kZXNUb1VuaWNvZGU/dCh7fSxhLGkubmFtZWRDb2Rlc1RvVW5pY29kZSk6YSxpLmNyZWF0ZUVsZW1lbnQ9aS5jcmVhdGVFbGVtZW50fHxlLmNyZWF0ZUVsZW1lbnQ7Y29uc3QgcT1bXSxRPXt9LFY9e1tyLmJsb2NrUXVvdGVdOnttYXRjaDpNZShwKSxvcmRlcjoxLHBhcnNlKGUsdCxuKXtjb25zdFsscixpXT1lWzBdLnJlcGxhY2UodSxcIlwiKS5tYXRjaChmKTtyZXR1cm57YWxlcnQ6cixjaGlsZHJlbjp0KGksbil9fSxyZW5kZXIoZSx0LG4pe2NvbnN0IGw9e2tleTpuLmtleX07cmV0dXJuIGUuYWxlcnQmJihsLmNsYXNzTmFtZT1cIm1hcmtkb3duLWFsZXJ0LVwiK2kuc2x1Z2lmeShlLmFsZXJ0LnRvTG93ZXJDYXNlKCksd2UpLGUuY2hpbGRyZW4udW5zaGlmdCh7YXR0cnM6e30sY2hpbGRyZW46W3t0eXBlOnIudGV4dCx0ZXh0OmUuYWxlcnR9XSxub0lubmVyUGFyc2U6ITAsdHlwZTpyLmh0bWxCbG9jayx0YWc6XCJoZWFkZXJcIn0pKSxkKFwiYmxvY2txdW90ZVwiLGwsdChlLmNoaWxkcmVuLG4pKX19LFtyLmJyZWFrTGluZV06e21hdGNoOlJlKGgpLG9yZGVyOjEscGFyc2U6RmUscmVuZGVyOihlLHQsbik9PmQoXCJiclwiLHtrZXk6bi5rZXl9KX0sW3IuYnJlYWtUaGVtYXRpY106e21hdGNoOk1lKG0pLG9yZGVyOjEscGFyc2U6RmUscmVuZGVyOihlLHQsbik9PmQoXCJoclwiLHtrZXk6bi5rZXl9KX0sW3IuY29kZUJsb2NrXTp7bWF0Y2g6TWUoeSksb3JkZXI6MCxwYXJzZTplPT4oe2xhbmc6dm9pZCAwLHRleHQ6ZVswXS5yZXBsYWNlKC9eIHs0fS9nbSxcIlwiKS5yZXBsYWNlKC9cXG4rJC8sXCJcIil9KSxyZW5kZXI6KGUsbixyKT0+ZChcInByZVwiLHtrZXk6ci5rZXl9LGQoXCJjb2RlXCIsdCh7fSxlLmF0dHJzLHtjbGFzc05hbWU6ZS5sYW5nP2BsYW5nLSR7ZS5sYW5nfWA6XCJcIn0pLGUudGV4dCkpfSxbci5jb2RlRmVuY2VkXTp7bWF0Y2g6TWUoZyksb3JkZXI6MCxwYXJzZTplPT4oe2F0dHJzOlooXCJjb2RlXCIsZVszXXx8XCJcIiksbGFuZzplWzJdfHx2b2lkIDAsdGV4dDplWzRdLHR5cGU6ci5jb2RlQmxvY2t9KX0sW3IuY29kZUlubGluZV06e21hdGNoOkJlKGspLG9yZGVyOjMscGFyc2U6ZT0+KHt0ZXh0OmVbMl19KSxyZW5kZXI6KGUsdCxuKT0+ZChcImNvZGVcIix7a2V5Om4ua2V5fSxlLnRleHQpfSxbci5mb290bm90ZV06e21hdGNoOk1lKHYpLG9yZGVyOjAscGFyc2U6ZT0+KHEucHVzaCh7Zm9vdG5vdGU6ZVsyXSxpZGVudGlmaWVyOmVbMV19KSx7fSkscmVuZGVyOl9lfSxbci5mb290bm90ZVJlZmVyZW5jZV06e21hdGNoOk9lKFMpLG9yZGVyOjEscGFyc2U6ZT0+KHt0YXJnZXQ6YCMke2kuc2x1Z2lmeShlWzFdLHdlKX1gLHRleHQ6ZVsxXX0pLHJlbmRlcjooZSx0LG4pPT5kKFwiYVwiLHtrZXk6bi5rZXksaHJlZjppLnNhbml0aXplcihlLnRhcmdldCxcImFcIixcImhyZWZcIil9LGQoXCJzdXBcIix7a2V5Om4ua2V5fSxlLnRleHQpKX0sW3IuZ2ZtVGFza106e21hdGNoOk9lKEUpLG9yZGVyOjEscGFyc2U6ZT0+KHtjb21wbGV0ZWQ6XCJ4XCI9PT1lWzFdLnRvTG93ZXJDYXNlKCl9KSxyZW5kZXI6KGUsdCxuKT0+ZChcImlucHV0XCIse2NoZWNrZWQ6ZS5jb21wbGV0ZWQsa2V5Om4ua2V5LHJlYWRPbmx5OiEwLHR5cGU6XCJjaGVja2JveFwifSl9LFtyLmhlYWRpbmddOnttYXRjaDpNZShpLmVuZm9yY2VBdHhIZWFkaW5ncz96OncpLG9yZGVyOjEscGFyc2U6KGUsdCxuKT0+KHtjaGlsZHJlbjpOZSh0LGVbMl0sbiksaWQ6aS5zbHVnaWZ5KGVbMl0sd2UpLGxldmVsOmVbMV0ubGVuZ3RofSkscmVuZGVyOihlLHQsbik9PmQoYGgke2UubGV2ZWx9YCx7aWQ6ZS5pZCxrZXk6bi5rZXl9LHQoZS5jaGlsZHJlbixuKSl9LFtyLmhlYWRpbmdTZXRleHRdOnttYXRjaDpNZShMKSxvcmRlcjowLHBhcnNlOihlLHQsbik9Pih7Y2hpbGRyZW46TmUodCxlWzFdLG4pLGxldmVsOlwiPVwiPT09ZVsyXT8xOjIsdHlwZTpyLmhlYWRpbmd9KX0sW3IuaHRtbEJsb2NrXTp7bWF0Y2g6UmUoQSksb3JkZXI6MSxwYXJzZShlLHQsbil7Y29uc3RbLHJdPWVbM10ubWF0Y2gocmUpLGk9bmV3IFJlZ0V4cChgXiR7cn1gLFwiZ21cIiksbD1lWzNdLnJlcGxhY2UoaSxcIlwiKSxhPShjPWwsRWUuc29tZShlPT5lLnRlc3QoYykpP0hlOk5lKTt2YXIgYztjb25zdCBzPWVbMV0udG9Mb3dlckNhc2UoKSxkPS0xIT09by5pbmRleE9mKHMpLHA9KGQ/czplWzFdKS50cmltKCksdT17YXR0cnM6WihwLGVbMl0pLG5vSW5uZXJQYXJzZTpkLHRhZzpwfTtyZXR1cm4gbi5pbkFuY2hvcj1uLmluQW5jaG9yfHxcImFcIj09PXMsZD91LnRleHQ9ZVszXTp1LmNoaWxkcmVuPWEodCxsLG4pLG4uaW5BbmNob3I9ITEsdX0scmVuZGVyOihlLG4scik9PmQoZS50YWcsdCh7a2V5OnIua2V5fSxlLmF0dHJzKSxlLnRleHR8fChlLmNoaWxkcmVuP24oZS5jaGlsZHJlbixyKTpcIlwiKSl9LFtyLmh0bWxTZWxmQ2xvc2luZ106e21hdGNoOlJlKE0pLG9yZGVyOjEscGFyc2UoZSl7Y29uc3QgdD1lWzFdLnRyaW0oKTtyZXR1cm57YXR0cnM6Wih0LGVbMl18fFwiXCIpLHRhZzp0fX0scmVuZGVyOihlLG4scik9PmQoZS50YWcsdCh7fSxlLmF0dHJzLHtrZXk6ci5rZXl9KSl9LFtyLmh0bWxDb21tZW50XTp7bWF0Y2g6UmUoTyksb3JkZXI6MSxwYXJzZTooKT0+KHt9KSxyZW5kZXI6X2V9LFtyLmltYWdlXTp7bWF0Y2g6QmUoQ2UpLG9yZGVyOjEscGFyc2U6ZT0+KHthbHQ6ZVsxXSx0YXJnZXQ6RGUoZVsyXSksdGl0bGU6ZVszXX0pLHJlbmRlcjooZSx0LG4pPT5kKFwiaW1nXCIse2tleTpuLmtleSxhbHQ6ZS5hbHR8fHZvaWQgMCx0aXRsZTplLnRpdGxlfHx2b2lkIDAsc3JjOmkuc2FuaXRpemVyKGUudGFyZ2V0LFwiaW1nXCIsXCJzcmNcIil9KX0sW3IubGlua106e21hdGNoOk9lKFNlKSxvcmRlcjozLHBhcnNlOihlLHQsbik9Pih7Y2hpbGRyZW46amUodCxlWzFdLG4pLHRhcmdldDpEZShlWzJdKSx0aXRsZTplWzNdfSkscmVuZGVyOihlLHQsbik9PmQoXCJhXCIse2tleTpuLmtleSxocmVmOmkuc2FuaXRpemVyKGUudGFyZ2V0LFwiYVwiLFwiaHJlZlwiKSx0aXRsZTplLnRpdGxlfSx0KGUuY2hpbGRyZW4sbikpfSxbci5saW5rQW5nbGVCcmFjZVN0eWxlRGV0ZWN0b3JdOnttYXRjaDpPZShEKSxvcmRlcjowLHBhcnNlOmU9Pih7Y2hpbGRyZW46W3t0ZXh0OmVbMV0sdHlwZTpyLnRleHR9XSx0YXJnZXQ6ZVsxXSx0eXBlOnIubGlua30pfSxbci5saW5rQmFyZVVybERldGVjdG9yXTp7bWF0Y2g6KGUsdCk9PnQuaW5BbmNob3J8fGkuZGlzYWJsZUF1dG9MaW5rP251bGw6T2UoSSkoZSx0KSxvcmRlcjowLHBhcnNlOmU9Pih7Y2hpbGRyZW46W3t0ZXh0OmVbMV0sdHlwZTpyLnRleHR9XSx0YXJnZXQ6ZVsxXSx0aXRsZTp2b2lkIDAsdHlwZTpyLmxpbmt9KX0sW3IubGlua01haWx0b0RldGVjdG9yXTp7bWF0Y2g6T2UoVSksb3JkZXI6MCxwYXJzZShlKXtsZXQgdD1lWzFdLG49ZVsxXTtyZXR1cm4gcy50ZXN0KG4pfHwobj1cIm1haWx0bzpcIituKSx7Y2hpbGRyZW46W3t0ZXh0OnQucmVwbGFjZShcIm1haWx0bzpcIixcIlwiKSx0eXBlOnIudGV4dH1dLHRhcmdldDpuLHR5cGU6ci5saW5rfX19LFtyLm9yZGVyZWRMaXN0XTp2ZShkLDEpLFtyLnVub3JkZXJlZExpc3RdOnZlKGQsMiksW3IubmV3bGluZUNvYWxlc2Nlcl06e21hdGNoOk1lKHgpLG9yZGVyOjMscGFyc2U6RmUscmVuZGVyOigpPT5cIlxcblwifSxbci5wYXJhZ3JhcGhdOnttYXRjaDpJZSxvcmRlcjozLHBhcnNlOlBlLHJlbmRlcjooZSx0LG4pPT5kKFwicFwiLHtrZXk6bi5rZXl9LHQoZS5jaGlsZHJlbixuKSl9LFtyLnJlZl06e21hdGNoOk9lKEgpLG9yZGVyOjAscGFyc2U6ZT0+KFFbZVsxXV09e3RhcmdldDplWzJdLHRpdGxlOmVbNF19LHt9KSxyZW5kZXI6X2V9LFtyLnJlZkltYWdlXTp7bWF0Y2g6QmUoUCksb3JkZXI6MCxwYXJzZTplPT4oe2FsdDplWzFdfHx2b2lkIDAscmVmOmVbMl19KSxyZW5kZXI6KGUsdCxuKT0+UVtlLnJlZl0/ZChcImltZ1wiLHtrZXk6bi5rZXksYWx0OmUuYWx0LHNyYzppLnNhbml0aXplcihRW2UucmVmXS50YXJnZXQsXCJpbWdcIixcInNyY1wiKSx0aXRsZTpRW2UucmVmXS50aXRsZX0pOm51bGx9LFtyLnJlZkxpbmtdOnttYXRjaDpPZShGKSxvcmRlcjowLHBhcnNlOihlLHQsbik9Pih7Y2hpbGRyZW46dChlWzFdLG4pLGZhbGxiYWNrQ2hpbGRyZW46ZVswXSxyZWY6ZVsyXX0pLHJlbmRlcjooZSx0LG4pPT5RW2UucmVmXT9kKFwiYVwiLHtrZXk6bi5rZXksaHJlZjppLnNhbml0aXplcihRW2UucmVmXS50YXJnZXQsXCJhXCIsXCJocmVmXCIpLHRpdGxlOlFbZS5yZWZdLnRpdGxlfSx0KGUuY2hpbGRyZW4sbikpOmQoXCJzcGFuXCIse2tleTpuLmtleX0sZS5mYWxsYmFja0NoaWxkcmVuKX0sW3IudGFibGVdOnttYXRjaDpNZShqKSxvcmRlcjoxLHBhcnNlOkFlLHJlbmRlcihlLHQsbil7Y29uc3Qgcj1lO3JldHVybiBkKFwidGFibGVcIix7a2V5Om4ua2V5fSxkKFwidGhlYWRcIixudWxsLGQoXCJ0clwiLG51bGwsci5oZWFkZXIubWFwKGZ1bmN0aW9uKGUsaSl7cmV0dXJuIGQoXCJ0aFwiLHtrZXk6aSxzdHlsZTpUZShyLGkpfSx0KGUsbikpfSkpKSxkKFwidGJvZHlcIixudWxsLHIuY2VsbHMubWFwKGZ1bmN0aW9uKGUsaSl7cmV0dXJuIGQoXCJ0clwiLHtrZXk6aX0sZS5tYXAoZnVuY3Rpb24oZSxpKXtyZXR1cm4gZChcInRkXCIse2tleTppLHN0eWxlOlRlKHIsaSl9LHQoZSxuKSl9KSl9KSkpfX0sW3IudGV4dF06e21hdGNoOlJlKHRlKSxvcmRlcjo0LHBhcnNlOmU9Pih7dGV4dDplWzBdLnJlcGxhY2UoVCwoZSx0KT0+aS5uYW1lZENvZGVzVG9Vbmljb2RlW3RdP2kubmFtZWRDb2Rlc1RvVW5pY29kZVt0XTplKX0pLHJlbmRlcjplPT5lLnRleHR9LFtyLnRleHRCb2xkZWRdOnttYXRjaDpCZShYKSxvcmRlcjoyLHBhcnNlOihlLHQsbik9Pih7Y2hpbGRyZW46dChlWzJdLG4pfSkscmVuZGVyOihlLHQsbik9PmQoXCJzdHJvbmdcIix7a2V5Om4ua2V5fSx0KGUuY2hpbGRyZW4sbikpfSxbci50ZXh0RW1waGFzaXplZF06e21hdGNoOkJlKEopLG9yZGVyOjMscGFyc2U6KGUsdCxuKT0+KHtjaGlsZHJlbjp0KGVbMl0sbil9KSxyZW5kZXI6KGUsdCxuKT0+ZChcImVtXCIse2tleTpuLmtleX0sdChlLmNoaWxkcmVuLG4pKX0sW3IudGV4dEVzY2FwZWRdOnttYXRjaDpCZShlZSksb3JkZXI6MSxwYXJzZTplPT4oe3RleHQ6ZVsxXSx0eXBlOnIudGV4dH0pfSxbci50ZXh0TWFya2VkXTp7bWF0Y2g6QmUoSyksb3JkZXI6MyxwYXJzZTpQZSxyZW5kZXI6KGUsdCxuKT0+ZChcIm1hcmtcIix7a2V5Om4ua2V5fSx0KGUuY2hpbGRyZW4sbikpfSxbci50ZXh0U3RyaWtldGhyb3VnaGVkXTp7bWF0Y2g6QmUoWSksb3JkZXI6MyxwYXJzZTpQZSxyZW5kZXI6KGUsdCxuKT0+ZChcImRlbFwiLHtrZXk6bi5rZXl9LHQoZS5jaGlsZHJlbixuKSl9fTshMD09PWkuZGlzYWJsZVBhcnNpbmdSYXdIVE1MJiYoZGVsZXRlIFZbci5odG1sQmxvY2tdLGRlbGV0ZSBWW3IuaHRtbFNlbGZDbG9zaW5nXSk7Y29uc3QgaWU9ZnVuY3Rpb24oZSl7bGV0IHQ9T2JqZWN0LmtleXMoZSk7ZnVuY3Rpb24gbihyLGkpe2xldCBsPVtdO2ZvcihpLnByZXZDYXB0dXJlPWkucHJldkNhcHR1cmV8fFwiXCI7cjspe2xldCBhPTA7Zm9yKDthPHQubGVuZ3RoOyl7Y29uc3Qgbz10W2FdLGM9ZVtvXSxzPWMubWF0Y2gocixpKTtpZihzKXtjb25zdCBlPXNbMF07aS5wcmV2Q2FwdHVyZSs9ZSxyPXIuc3Vic3RyaW5nKGUubGVuZ3RoKTtjb25zdCB0PWMucGFyc2UocyxuLGkpO251bGw9PXQudHlwZSYmKHQudHlwZT1vKSxsLnB1c2godCk7YnJlYWt9YSsrfX1yZXR1cm4gaS5wcmV2Q2FwdHVyZT1cIlwiLGx9cmV0dXJuIHQuc29ydChmdW5jdGlvbih0LG4pe2xldCByPWVbdF0ub3JkZXIsaT1lW25dLm9yZGVyO3JldHVybiByIT09aT9yLWk6dDxuPy0xOjF9KSxmdW5jdGlvbihlLHQpe3JldHVybiBuKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoYixcIlxcblwiKS5yZXBsYWNlKEMsXCJcIikucmVwbGFjZShHLFwiICAgIFwiKX0oZSksdCl9fShWKSxsZT0oYWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyLGkpe2NvbnN0IGw9ZVtuLnR5cGVdLnJlbmRlcjtyZXR1cm4gdD90KCgpPT5sKG4scixpKSxuLHIsaSk6bChuLHIsaSl9fShWLGkucmVuZGVyUnVsZSksZnVuY3Rpb24gZSh0LG49e30pe2lmKEFycmF5LmlzQXJyYXkodCkpe2NvbnN0IHI9bi5rZXksaT1bXTtsZXQgbD0hMTtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyl7bi5rZXk9cjtjb25zdCBhPWUodFtyXSxuKSxvPVwic3RyaW5nXCI9PXR5cGVvZiBhO28mJmw/aVtpLmxlbmd0aC0xXSs9YTpudWxsIT09YSYmaS5wdXNoKGEpLGw9b31yZXR1cm4gbi5rZXk9cixpfXJldHVybiBhZSh0LGUsbil9KTt2YXIgYWU7Y29uc3Qgb2U9VyhuKTtyZXR1cm4gcS5sZW5ndGg/ZChcImRpdlwiLG51bGwsb2UsZChcImZvb3RlclwiLHtrZXk6XCJmb290ZXJcIn0scS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGQoXCJkaXZcIix7aWQ6aS5zbHVnaWZ5KGUuaWRlbnRpZmllcix3ZSksa2V5OmUuaWRlbnRpZmllcn0sZS5pZGVudGlmaWVyLGxlKGllKGUuZm9vdG5vdGUse2lubGluZTohMH0pKSl9KSkpOm9lfWV4cG9ydCBkZWZhdWx0IHQ9PntsZXR7Y2hpbGRyZW46cj1cIlwiLG9wdGlvbnM6aX09dCxsPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLGk9e30sbD1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8bC5sZW5ndGg7cisrKXQuaW5kZXhPZihuPWxbcl0pPj0wfHwoaVtuXT1lW25dKTtyZXR1cm4gaX0odCxuKTtyZXR1cm4gZS5jbG9uZUVsZW1lbnQoWmUocixpKSxsKX07ZXhwb3J0e3IgYXMgUnVsZVR5cGUsWmUgYXMgY29tcGlsZXIsVWUgYXMgc2FuaXRpemVyLHdlIGFzIHNsdWdpZnl9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubW9kZXJuLmpzLm1hcFxuIiwidmFyIGJhc2VVbnNldCA9IHJlcXVpcmUoJy4vX2Jhc2VVbnNldCcpO1xuXG4vKipcbiAqIFJlbW92ZXMgdGhlIHByb3BlcnR5IGF0IGBwYXRoYCBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHVuc2V0LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSBpcyBkZWxldGVkLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogNyB9IH1dIH07XG4gKiBfLnVuc2V0KG9iamVjdCwgJ2FbMF0uYi5jJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogY29uc29sZS5sb2cob2JqZWN0KTtcbiAqIC8vID0+IHsgJ2EnOiBbeyAnYic6IHt9IH1dIH07XG4gKlxuICogXy51bnNldChvYmplY3QsIFsnYScsICcwJywgJ2InLCAnYyddKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBjb25zb2xlLmxvZyhvYmplY3QpO1xuICogLy8gPT4geyAnYSc6IFt7ICdiJzoge30gfV0gfTtcbiAqL1xuZnVuY3Rpb24gdW5zZXQob2JqZWN0LCBwYXRoKSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHRydWUgOiBiYXNlVW5zZXQob2JqZWN0LCBwYXRoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB1bnNldDtcbiIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSwgZ2V0VWlPcHRpb25zLCBvcmRlclByb3BlcnRpZXMsIFRyYW5zbGF0YWJsZVN0cmluZywgQURESVRJT05BTF9QUk9QRVJUWV9GTEFHLCBQUk9QRVJUSUVTX0tFWSwgUkVGX0tFWSwgQU5ZX09GX0tFWSwgT05FX09GX0tFWSwgfSBmcm9tICdAcmpzZi91dGlscyc7XG5pbXBvcnQgTWFya2Rvd24gZnJvbSAnbWFya2Rvd24tdG8tanN4JztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgaGFzIGZyb20gJ2xvZGFzaC9oYXMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJ2xvZGFzaC9pc09iamVjdCc7XG5pbXBvcnQgc2V0IGZyb20gJ2xvZGFzaC9zZXQnO1xuaW1wb3J0IHVuc2V0IGZyb20gJ2xvZGFzaC91bnNldCc7XG4vKiogVGhlIGBPYmplY3RGaWVsZGAgY29tcG9uZW50IGlzIHVzZWQgdG8gcmVuZGVyIGEgZmllbGQgaW4gdGhlIHNjaGVtYSB0aGF0IGlzIG9mIHR5cGUgYG9iamVjdGAuIEl0IHRyYWNrcyB3aGV0aGVyIGFuXG4gKiBhZGRpdGlvbmFsIHByb3BlcnR5IGtleSB3YXMgbW9kaWZpZWQgYW5kIHdoYXQgaXQgd2FzIG1vZGlmaWVkIHRvXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBGaWVsZFByb3BzYCBmb3IgdGhpcyB0ZW1wbGF0ZVxuICovXG5jbGFzcyBPYmplY3RGaWVsZCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIC8qKiBTZXQgdXAgdGhlIGluaXRpYWwgc3RhdGUgKi9cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIHdhc1Byb3BlcnR5S2V5TW9kaWZpZWQ6IGZhbHNlLFxuICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHt9LFxuICAgICAgICB9O1xuICAgICAgICAvKiogUmV0dXJucyB0aGUgYG9uUHJvcGVydHlDaGFuZ2VgIGhhbmRsZXIgZm9yIHRoZSBgbmFtZWAgZmllbGQuIEhhbmRsZXMgdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSBhIHVzZXIgaXMgYXR0ZW1wdGluZ1xuICAgICAgICAgKiB0byBjbGVhciB0aGUgZGF0YSBmb3IgYSBmaWVsZCBhZGRlZCBhcyBhbiBhZGRpdGlvbmFsIHByb3BlcnR5LiBDYWxscyB0aGUgYG9uQ2hhbmdlKClgIGhhbmRsZXIgd2l0aCB0aGUgdXBkYXRlZFxuICAgICAgICAgKiBmb3JtRGF0YS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHlcbiAgICAgICAgICogQHBhcmFtIGFkZGVkQnlBZGRpdGlvbmFsUHJvcGVydGllcyAtIEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoaXMgcHJvcGVydHkgaXMgYW4gYWRkaXRpb25hbCBwcm9wZXJ0eVxuICAgICAgICAgKiBAcmV0dXJucyAtIFRoZSBvblByb3BlcnR5Q2hhbmdlIGNhbGxiYWNrIGZvciB0aGUgYG5hbWVgIHByb3BlcnR5XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uUHJvcGVydHlDaGFuZ2UgPSAobmFtZSwgYWRkZWRCeUFkZGl0aW9uYWxQcm9wZXJ0aWVzID0gZmFsc2UpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAodmFsdWUsIG5ld0Vycm9yU2NoZW1hLCBpZCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZm9ybURhdGEsIG9uQ2hhbmdlLCBlcnJvclNjaGVtYSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiBhZGRlZEJ5QWRkaXRpb25hbFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3Qgc2V0IHZhbHVlID0gdW5kZWZpbmVkIGZvciBmaWVsZHMgYWRkZWQgYnlcbiAgICAgICAgICAgICAgICAgICAgLy8gYWRkaXRpb25hbFByb3BlcnRpZXMuIERvaW5nIHNvIHJlbW92ZXMgdGhlbSBmcm9tIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyBmb3JtRGF0YSwgd2hpY2ggY2F1c2VzIHRoZW0gdG8gY29tcGxldGVseSBkaXNhcHBlYXJcbiAgICAgICAgICAgICAgICAgICAgLy8gKGluY2x1ZGluZyB0aGUgaW5wdXQgZmllbGQgZm9yIHRoZSBwcm9wZXJ0eSBuYW1lKS4gVW5saWtlXG4gICAgICAgICAgICAgICAgICAgIC8vIGZpZWxkcyB3aGljaCBhcmUgXCJtYW5kYXRlZFwiIGJ5IHRoZSBzY2hlbWEsIHRoZXNlIGZpZWxkcyBjYW5cbiAgICAgICAgICAgICAgICAgICAgLy8gYmUgc2V0IHRvIHVuZGVmaW5lZCBieSBjbGlja2luZyBhIFwiZGVsZXRlIGZpZWxkXCIgYnV0dG9uLCBzb1xuICAgICAgICAgICAgICAgICAgICAvLyBzZXQgZW1wdHkgdmFsdWVzIHRvIHRoZSBlbXB0eSBzdHJpbmcuXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0Zvcm1EYXRhID0geyAuLi5mb3JtRGF0YSwgW25hbWVdOiB2YWx1ZSB9O1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlKG5ld0Zvcm1EYXRhLCBlcnJvclNjaGVtYSAmJlxuICAgICAgICAgICAgICAgICAgICBlcnJvclNjaGVtYSAmJiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmVycm9yU2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBbbmFtZV06IG5ld0Vycm9yU2NoZW1hLFxuICAgICAgICAgICAgICAgIH0sIGlkKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBSZXR1cm5zIGEgY2FsbGJhY2sgdG8gaGFuZGxlIHRoZSBvbkRyb3BQcm9wZXJ0eUNsaWNrIGV2ZW50IGZvciB0aGUgZ2l2ZW4gYGtleWAgd2hpY2ggcmVtb3ZlcyB0aGUgb2xkIGBrZXlgIGRhdGFcbiAgICAgICAgICogYW5kIGNhbGxzIHRoZSBgb25DaGFuZ2VgIGNhbGxiYWNrIHdpdGggaXRcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGtleSAtIFRoZSBrZXkgZm9yIHdoaWNoIHRoZSBkcm9wIGNhbGxiYWNrIGlzIGRlc2lyZWRcbiAgICAgICAgICogQHJldHVybnMgLSBUaGUgZHJvcCBwcm9wZXJ0eSBjbGljayBjYWxsYmFja1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vbkRyb3BQcm9wZXJ0eUNsaWNrID0gKGtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBvbkNoYW5nZSwgZm9ybURhdGEgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICAgICAgY29uc3QgY29waWVkRm9ybURhdGEgPSB7IC4uLmZvcm1EYXRhIH07XG4gICAgICAgICAgICAgICAgdW5zZXQoY29waWVkRm9ybURhdGEsIGtleSk7XG4gICAgICAgICAgICAgICAgb25DaGFuZ2UoY29waWVkRm9ybURhdGEpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIENvbXB1dGVzIHRoZSBuZXh0IGF2YWlsYWJsZSBrZXkgbmFtZSBmcm9tIHRoZSBgcHJlZmVycmVkS2V5YCwgaW5kZXhpbmcgdGhyb3VnaCB0aGUgYWxyZWFkeSBleGlzdGluZyBrZXlzIHVudGlsIG9uZVxuICAgICAgICAgKiB0aGF0IGlzIGFscmVhZHkgbm90IGFzc2lnbmVkIGlzIGZvdW5kLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gcHJlZmVycmVkS2V5IC0gVGhlIHByZWZlcnJlZCBuYW1lIG9mIGEgbmV3IGtleVxuICAgICAgICAgKiBAcGFyYW0gW2Zvcm1EYXRhXSAtIFRoZSBmb3JtIGRhdGEgaW4gd2hpY2ggdG8gY2hlY2sgaWYgdGhlIGRlc2lyZWQga2V5IGFscmVhZHkgZXhpc3RzXG4gICAgICAgICAqIEByZXR1cm5zIC0gVGhlIG5hbWUgb2YgdGhlIG5leHQgYXZhaWxhYmxlIGtleSBmcm9tIGBwcmVmZXJyZWRLZXlgXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmdldEF2YWlsYWJsZUtleSA9IChwcmVmZXJyZWRLZXksIGZvcm1EYXRhKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHVpU2NoZW1hLCByZWdpc3RyeSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIGNvbnN0IHsgZHVwbGljYXRlS2V5U3VmZml4U2VwYXJhdG9yID0gJy0nIH0gPSBnZXRVaU9wdGlvbnModWlTY2hlbWEsIHJlZ2lzdHJ5Lmdsb2JhbFVpT3B0aW9ucyk7XG4gICAgICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICAgICAgbGV0IG5ld0tleSA9IHByZWZlcnJlZEtleTtcbiAgICAgICAgICAgIHdoaWxlIChoYXMoZm9ybURhdGEsIG5ld0tleSkpIHtcbiAgICAgICAgICAgICAgICBuZXdLZXkgPSBgJHtwcmVmZXJyZWRLZXl9JHtkdXBsaWNhdGVLZXlTdWZmaXhTZXBhcmF0b3J9JHsrK2luZGV4fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV3S2V5O1xuICAgICAgICB9O1xuICAgICAgICAvKiogUmV0dXJucyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgZGVhbHMgd2l0aCB0aGUgcmVuYW1lIG9mIGEga2V5IGZvciBhbiBhZGRpdGlvbmFsIHByb3BlcnR5IGZvciBhIHNjaGVtYS4gVGhhdFxuICAgICAgICAgKiBjYWxsYmFjayB3aWxsIGF0dGVtcHQgdG8gcmVuYW1lIHRoZSBrZXkgYW5kIG1vdmUgdGhlIGV4aXN0aW5nIGRhdGEgdG8gdGhhdCBrZXksIGNhbGxpbmcgYG9uQ2hhbmdlYCB3aGVuIGl0IGRvZXMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBvbGRWYWx1ZSAtIFRoZSBvbGQgdmFsdWUgb2YgYSBmaWVsZFxuICAgICAgICAgKiBAcmV0dXJucyAtIFRoZSBrZXkgY2hhbmdlIGNhbGxiYWNrIGZ1bmN0aW9uXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uS2V5Q2hhbmdlID0gKG9sZFZhbHVlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKHZhbHVlLCBuZXdFcnJvclNjaGVtYSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChvbGRWYWx1ZSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB7IGZvcm1EYXRhLCBvbkNoYW5nZSwgZXJyb3JTY2hlbWEgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmdldEF2YWlsYWJsZUtleSh2YWx1ZSwgZm9ybURhdGEpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0Zvcm1EYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtRGF0YSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0tleXMgPSB7IFtvbGRWYWx1ZV06IHZhbHVlIH07XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5VmFsdWVzID0gT2JqZWN0LmtleXMobmV3Rm9ybURhdGEpLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0tleSA9IG5ld0tleXNba2V5XSB8fCBrZXk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IFtuZXdLZXldOiBuZXdGb3JtRGF0YVtrZXldIH07XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVuYW1lZE9iaiA9IE9iamVjdC5hc3NpZ24oe30sIC4uLmtleVZhbHVlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHdhc1Byb3BlcnR5S2V5TW9kaWZpZWQ6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgb25DaGFuZ2UocmVuYW1lZE9iaiwgZXJyb3JTY2hlbWEgJiZcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JTY2hlbWEgJiYge1xuICAgICAgICAgICAgICAgICAgICAuLi5lcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXTogbmV3RXJyb3JTY2hlbWEsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICAvKiogSGFuZGxlcyB0aGUgYWRkaW5nIG9mIGEgbmV3IGFkZGl0aW9uYWwgcHJvcGVydHkgb24gdGhlIGdpdmVuIGBzY2hlbWFgLiBDYWxscyB0aGUgYG9uQ2hhbmdlYCBjYWxsYmFjayBvbmNlIHRoZSBuZXdcbiAgICAgICAgICogZGVmYXVsdCBkYXRhIGZvciB0aGF0IGZpZWxkIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBmb3JtRGF0YS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZWxlbWVudCB0byB3aGljaCB0aGUgbmV3IHByb3BlcnR5IGlzIGJlaW5nIGFkZGVkXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmhhbmRsZUFkZENsaWNrID0gKHNjaGVtYSkgPT4gKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgaWYgKCFzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB7IGZvcm1EYXRhLCBvbkNoYW5nZSwgcmVnaXN0cnkgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICBjb25zdCBuZXdGb3JtRGF0YSA9IHsgLi4uZm9ybURhdGEgfTtcbiAgICAgICAgICAgIGxldCB0eXBlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgbGV0IGNvbnN0VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBsZXQgZGVmYXVsdFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcykpIHtcbiAgICAgICAgICAgICAgICB0eXBlID0gc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLnR5cGU7XG4gICAgICAgICAgICAgICAgY29uc3RWYWx1ZSA9IHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcy5jb25zdDtcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWUgPSBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMuZGVmYXVsdDtcbiAgICAgICAgICAgICAgICBsZXQgYXBTY2hlbWEgPSBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXM7XG4gICAgICAgICAgICAgICAgaWYgKFJFRl9LRVkgaW4gYXBTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBzY2hlbWFVdGlscyB9ID0gcmVnaXN0cnk7XG4gICAgICAgICAgICAgICAgICAgIGFwU2NoZW1hID0gc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEoeyAkcmVmOiBhcFNjaGVtYVtSRUZfS0VZXSB9LCBmb3JtRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBhcFNjaGVtYS50eXBlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdFZhbHVlID0gYXBTY2hlbWEuY29uc3Q7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGFwU2NoZW1hLmRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdHlwZSAmJiAoQU5ZX09GX0tFWSBpbiBhcFNjaGVtYSB8fCBPTkVfT0ZfS0VZIGluIGFwU2NoZW1hKSkge1xuICAgICAgICAgICAgICAgICAgICB0eXBlID0gJ29iamVjdCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbmV3S2V5ID0gdGhpcy5nZXRBdmFpbGFibGVLZXkoJ25ld0tleScsIG5ld0Zvcm1EYXRhKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gKF9hID0gY29uc3RWYWx1ZSAhPT0gbnVsbCAmJiBjb25zdFZhbHVlICE9PSB2b2lkIDAgPyBjb25zdFZhbHVlIDogZGVmYXVsdFZhbHVlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLmdldERlZmF1bHRWYWx1ZSh0eXBlKTtcbiAgICAgICAgICAgIC8vIENhc3QgdGhpcyB0byBtYWtlIHRoZSBgc2V0YCB3b3JrIHByb3Blcmx5XG4gICAgICAgICAgICBzZXQobmV3Rm9ybURhdGEsIG5ld0tleSwgbmV3VmFsdWUpO1xuICAgICAgICAgICAgb25DaGFuZ2UobmV3Rm9ybURhdGEpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKiogUmV0dXJucyBhIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBgbmFtZWAgZmllbGQgaXMgcmVxdWlyZWQgaW4gdGhlIG9iamVjdCBzY2hlbWFcbiAgICAgKlxuICAgICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGZpZWxkIHRvIGNoZWNrIGZvciByZXF1aXJlZC1uZXNzXG4gICAgICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBmaWVsZCBgbmFtZWAgaXMgcmVxdWlyZWQsIGZhbHNlIG90aGVyd2lzZVxuICAgICAqL1xuICAgIGlzUmVxdWlyZWQobmFtZSkge1xuICAgICAgICBjb25zdCB7IHNjaGVtYSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoc2NoZW1hLnJlcXVpcmVkKSAmJiBzY2hlbWEucmVxdWlyZWQuaW5kZXhPZihuYW1lKSAhPT0gLTE7XG4gICAgfVxuICAgIC8qKiBSZXR1cm5zIGEgZGVmYXVsdCB2YWx1ZSB0byBiZSB1c2VkIGZvciBhIG5ldyBhZGRpdGlvbmFsIHNjaGVtYSBwcm9wZXJ0eSBvZiB0aGUgZ2l2ZW4gYHR5cGVgXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBuZXcgYWRkaXRpb25hbCBzY2hlbWEgcHJvcGVydHlcbiAgICAgKi9cbiAgICBnZXREZWZhdWx0VmFsdWUodHlwZSkge1xuICAgICAgICBjb25zdCB7IHJlZ2lzdHJ5OiB7IHRyYW5zbGF0ZVN0cmluZyB9LCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdhcnJheSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBoYXZlIGEgZGF0YXR5cGUgZm9yIHNvbWUgcmVhc29uIChwZXJoYXBzIGFkZGl0aW9uYWxQcm9wZXJ0aWVzIHdhcyB0cnVlKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLk5ld1N0cmluZ0RlZmF1bHQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKiBSZW5kZXJzIHRoZSBgT2JqZWN0RmllbGRgIGZyb20gdGhlIGdpdmVuIHByb3BzXG4gICAgICovXG4gICAgcmVuZGVyKCkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hOiByYXdTY2hlbWEsIHVpU2NoZW1hID0ge30sIGZvcm1EYXRhLCBlcnJvclNjaGVtYSwgaWRTY2hlbWEsIG5hbWUsIHJlcXVpcmVkID0gZmFsc2UsIGRpc2FibGVkLCByZWFkb25seSwgaGlkZUVycm9yLCBpZFByZWZpeCwgaWRTZXBhcmF0b3IsIG9uQmx1ciwgb25Gb2N1cywgcmVnaXN0cnksIHRpdGxlLCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyBmaWVsZHMsIGZvcm1Db250ZXh0LCBzY2hlbWFVdGlscywgdHJhbnNsYXRlU3RyaW5nLCBnbG9iYWxVaU9wdGlvbnMgfSA9IHJlZ2lzdHJ5O1xuICAgICAgICBjb25zdCB7IFNjaGVtYUZpZWxkIH0gPSBmaWVsZHM7XG4gICAgICAgIGNvbnN0IHNjaGVtYSA9IHNjaGVtYVV0aWxzLnJldHJpZXZlU2NoZW1hKHJhd1NjaGVtYSwgZm9ybURhdGEpO1xuICAgICAgICBjb25zdCB1aU9wdGlvbnMgPSBnZXRVaU9wdGlvbnModWlTY2hlbWEsIGdsb2JhbFVpT3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IHsgcHJvcGVydGllczogc2NoZW1hUHJvcGVydGllcyA9IHt9IH0gPSBzY2hlbWE7XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlVGl0bGUgPSAoX2MgPSAoX2IgPSAoX2EgPSB1aU9wdGlvbnMudGl0bGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHNjaGVtYS50aXRsZSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdGl0bGUpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IG5hbWU7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gKF9kID0gdWlPcHRpb25zLmRlc2NyaXB0aW9uKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiBzY2hlbWEuZGVzY3JpcHRpb247XG4gICAgICAgIGxldCBvcmRlcmVkUHJvcGVydGllcztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhzY2hlbWFQcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgIG9yZGVyZWRQcm9wZXJ0aWVzID0gb3JkZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXMsIHVpT3B0aW9ucy5vcmRlcik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIChfanN4cyhcImRpdlwiLCB7IGNoaWxkcmVuOiBbX2pzeChcInBcIiwgeyBjbGFzc05hbWU6ICdjb25maWctZXJyb3InLCBzdHlsZTogeyBjb2xvcjogJ3JlZCcgfSwgY2hpbGRyZW46IF9qc3goTWFya2Rvd24sIHsgb3B0aW9uczogeyBkaXNhYmxlUGFyc2luZ1Jhd0hUTUw6IHRydWUgfSwgY2hpbGRyZW46IHRyYW5zbGF0ZVN0cmluZyhUcmFuc2xhdGFibGVTdHJpbmcuSW52YWxpZE9iamVjdEZpZWxkLCBbbmFtZSB8fCAncm9vdCcsIGVyci5tZXNzYWdlXSkgfSkgfSksIF9qc3goXCJwcmVcIiwgeyBjaGlsZHJlbjogSlNPTi5zdHJpbmdpZnkoc2NoZW1hKSB9KV0gfSkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ09iamVjdEZpZWxkVGVtcGxhdGUnLCByZWdpc3RyeSwgdWlPcHRpb25zKTtcbiAgICAgICAgY29uc3QgdGVtcGxhdGVQcm9wcyA9IHtcbiAgICAgICAgICAgIC8vIGdldERpc3BsYXlMYWJlbCgpIGFsd2F5cyByZXR1cm5zIGZhbHNlIGZvciBvYmplY3QgdHlwZXMsIHNvIGp1c3QgY2hlY2sgdGhlIGB1aU9wdGlvbnMubGFiZWxgXG4gICAgICAgICAgICB0aXRsZTogdWlPcHRpb25zLmxhYmVsID09PSBmYWxzZSA/ICcnIDogdGVtcGxhdGVUaXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB1aU9wdGlvbnMubGFiZWwgPT09IGZhbHNlID8gdW5kZWZpbmVkIDogZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiBvcmRlcmVkUHJvcGVydGllcy5tYXAoKG5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGRlZEJ5QWRkaXRpb25hbFByb3BlcnRpZXMgPSBoYXMoc2NoZW1hLCBbUFJPUEVSVElFU19LRVksIG5hbWUsIEFERElUSU9OQUxfUFJPUEVSVFlfRkxBR10pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkVWlTY2hlbWEgPSBhZGRlZEJ5QWRkaXRpb25hbFByb3BlcnRpZXMgPyB1aVNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyA6IHVpU2NoZW1hW25hbWVdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhpZGRlbiA9IGdldFVpT3B0aW9ucyhmaWVsZFVpU2NoZW1hKS53aWRnZXQgPT09ICdoaWRkZW4nO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkSWRTY2hlbWEgPSBnZXQoaWRTY2hlbWEsIFtuYW1lXSwge30pO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IChfanN4KFNjaGVtYUZpZWxkLCB7IG5hbWU6IG5hbWUsIHJlcXVpcmVkOiB0aGlzLmlzUmVxdWlyZWQobmFtZSksIHNjaGVtYTogZ2V0KHNjaGVtYSwgW1BST1BFUlRJRVNfS0VZLCBuYW1lXSwge30pLCB1aVNjaGVtYTogZmllbGRVaVNjaGVtYSwgZXJyb3JTY2hlbWE6IGdldChlcnJvclNjaGVtYSwgbmFtZSksIGlkU2NoZW1hOiBmaWVsZElkU2NoZW1hLCBpZFByZWZpeDogaWRQcmVmaXgsIGlkU2VwYXJhdG9yOiBpZFNlcGFyYXRvciwgZm9ybURhdGE6IGdldChmb3JtRGF0YSwgbmFtZSksIGZvcm1Db250ZXh0OiBmb3JtQ29udGV4dCwgd2FzUHJvcGVydHlLZXlNb2RpZmllZDogdGhpcy5zdGF0ZS53YXNQcm9wZXJ0eUtleU1vZGlmaWVkLCBvbktleUNoYW5nZTogdGhpcy5vbktleUNoYW5nZShuYW1lKSwgb25DaGFuZ2U6IHRoaXMub25Qcm9wZXJ0eUNoYW5nZShuYW1lLCBhZGRlZEJ5QWRkaXRpb25hbFByb3BlcnRpZXMpLCBvbkJsdXI6IG9uQmx1ciwgb25Gb2N1czogb25Gb2N1cywgcmVnaXN0cnk6IHJlZ2lzdHJ5LCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlYWRvbmx5OiByZWFkb25seSwgaGlkZUVycm9yOiBoaWRlRXJyb3IsIG9uRHJvcFByb3BlcnR5Q2xpY2s6IHRoaXMub25Ecm9wUHJvcGVydHlDbGljayB9LCBuYW1lKSksXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5LFxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgIGhpZGRlbixcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgcmVxdWlyZWQsXG4gICAgICAgICAgICBpZFNjaGVtYSxcbiAgICAgICAgICAgIHVpU2NoZW1hLFxuICAgICAgICAgICAgZXJyb3JTY2hlbWEsXG4gICAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgICAgIGZvcm1Db250ZXh0LFxuICAgICAgICAgICAgcmVnaXN0cnksXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBfanN4KFRlbXBsYXRlLCB7IC4uLnRlbXBsYXRlUHJvcHMsIG9uQWRkQ2xpY2s6IHRoaXMuaGFuZGxlQWRkQ2xpY2sgfSk7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgT2JqZWN0RmllbGQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1PYmplY3RGaWVsZC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwgRnJhZ21lbnQgYXMgX0ZyYWdtZW50LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQURESVRJT05BTF9QUk9QRVJUWV9GTEFHLCBkZWVwRXF1YWxzLCBkZXNjcmlwdGlvbklkLCBnZXRTY2hlbWFUeXBlLCBnZXRUZW1wbGF0ZSwgZ2V0VWlPcHRpb25zLCBJRF9LRVksIG1lcmdlT2JqZWN0cywgVHJhbnNsYXRhYmxlU3RyaW5nLCBVSV9PUFRJT05TX0tFWSwgfSBmcm9tICdAcmpzZi91dGlscyc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnbG9kYXNoL2lzT2JqZWN0JztcbmltcG9ydCBvbWl0IGZyb20gJ2xvZGFzaC9vbWl0JztcbmltcG9ydCBNYXJrZG93biBmcm9tICdtYXJrZG93bi10by1qc3gnO1xuLyoqIFRoZSBtYXAgb2YgY29tcG9uZW50IHR5cGUgdG8gRmllbGROYW1lICovXG5jb25zdCBDT01QT05FTlRfVFlQRVMgPSB7XG4gICAgYXJyYXk6ICdBcnJheUZpZWxkJyxcbiAgICBib29sZWFuOiAnQm9vbGVhbkZpZWxkJyxcbiAgICBpbnRlZ2VyOiAnTnVtYmVyRmllbGQnLFxuICAgIG51bWJlcjogJ051bWJlckZpZWxkJyxcbiAgICBvYmplY3Q6ICdPYmplY3RGaWVsZCcsXG4gICAgc3RyaW5nOiAnU3RyaW5nRmllbGQnLFxuICAgIG51bGw6ICdOdWxsRmllbGQnLFxufTtcbi8qKiBDb21wdXRlcyBhbmQgcmV0dXJucyB3aGljaCBgRmllbGRgIGltcGxlbWVudGF0aW9uIHRvIHJldHVybiBpbiBvcmRlciB0byByZW5kZXIgdGhlIGZpZWxkIHJlcHJlc2VudGVkIGJ5IHRoZVxuICogYHNjaGVtYWAuIFRoZSBgdWlPcHRpb25zYCBhcmUgdXNlZCB0byBhbHRlciB3aGF0IHBvdGVudGlhbCBgRmllbGRgIGltcGxlbWVudGF0aW9uIGlzIGFjdHVhbGx5IHJldHVybmVkLiBJZiBub1xuICogYXBwcm9wcmlhdGUgYEZpZWxkYCBpbXBsZW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgdGhlbiBhIHdyYXBwZXIgYXJvdW5kIGBVbnN1cHBvcnRlZEZpZWxkVGVtcGxhdGVgIGlzIHVzZWQuXG4gKlxuICogQHBhcmFtIHNjaGVtYSAtIFRoZSBzY2hlbWEgZnJvbSB3aGljaCB0byBvYnRhaW4gdGhlIHR5cGVcbiAqIEBwYXJhbSB1aU9wdGlvbnMgLSBUaGUgVUkgT3B0aW9ucyB0aGF0IG1heSBhZmZlY3QgdGhlIGNvbXBvbmVudCBkZWNpc2lvblxuICogQHBhcmFtIGlkU2NoZW1hIC0gVGhlIGlkIHRoYXQgaXMgcGFzc2VkIHRvIHRoZSBgVW5zdXBwb3J0ZWRGaWVsZFRlbXBsYXRlYFxuICogQHBhcmFtIHJlZ2lzdHJ5IC0gVGhlIHJlZ2lzdHJ5IGZyb20gd2hpY2ggZmllbGRzIGFuZCB0ZW1wbGF0ZXMgYXJlIG9idGFpbmVkXG4gKiBAcmV0dXJucyAtIFRoZSBgRmllbGRgIGNvbXBvbmVudCB0aGF0IGlzIHVzZWQgdG8gcmVuZGVyIHRoZSBhY3R1YWwgZmllbGQgZGF0YVxuICovXG5mdW5jdGlvbiBnZXRGaWVsZENvbXBvbmVudChzY2hlbWEsIHVpT3B0aW9ucywgaWRTY2hlbWEsIHJlZ2lzdHJ5KSB7XG4gICAgY29uc3QgZmllbGQgPSB1aU9wdGlvbnMuZmllbGQ7XG4gICAgY29uc3QgeyBmaWVsZHMsIHRyYW5zbGF0ZVN0cmluZyB9ID0gcmVnaXN0cnk7XG4gICAgaWYgKHR5cGVvZiBmaWVsZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZmllbGQgPT09ICdzdHJpbmcnICYmIGZpZWxkIGluIGZpZWxkcykge1xuICAgICAgICByZXR1cm4gZmllbGRzW2ZpZWxkXTtcbiAgICB9XG4gICAgY29uc3Qgc2NoZW1hVHlwZSA9IGdldFNjaGVtYVR5cGUoc2NoZW1hKTtcbiAgICBjb25zdCB0eXBlID0gQXJyYXkuaXNBcnJheShzY2hlbWFUeXBlKSA/IHNjaGVtYVR5cGVbMF0gOiBzY2hlbWFUeXBlIHx8ICcnO1xuICAgIGNvbnN0IHNjaGVtYUlkID0gc2NoZW1hLiRpZDtcbiAgICBsZXQgY29tcG9uZW50TmFtZSA9IENPTVBPTkVOVF9UWVBFU1t0eXBlXTtcbiAgICBpZiAoc2NoZW1hSWQgJiYgc2NoZW1hSWQgaW4gZmllbGRzKSB7XG4gICAgICAgIGNvbXBvbmVudE5hbWUgPSBzY2hlbWFJZDtcbiAgICB9XG4gICAgLy8gSWYgdGhlIHR5cGUgaXMgbm90IGRlZmluZWQgYW5kIHRoZSBzY2hlbWEgdXNlcyAnYW55T2YnIG9yICdvbmVPZicsIGRvbid0XG4gICAgLy8gcmVuZGVyIGEgZmllbGQgYW5kIGxldCB0aGUgTXVsdGlTY2hlbWFGaWVsZCBjb21wb25lbnQgaGFuZGxlIHRoZSBmb3JtIGRpc3BsYXlcbiAgICBpZiAoIWNvbXBvbmVudE5hbWUgJiYgKHNjaGVtYS5hbnlPZiB8fCBzY2hlbWEub25lT2YpKSB7XG4gICAgICAgIHJldHVybiAoKSA9PiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY29tcG9uZW50TmFtZSBpbiBmaWVsZHNcbiAgICAgICAgPyBmaWVsZHNbY29tcG9uZW50TmFtZV1cbiAgICAgICAgOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBVbnN1cHBvcnRlZEZpZWxkVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnVW5zdXBwb3J0ZWRGaWVsZFRlbXBsYXRlJywgcmVnaXN0cnksIHVpT3B0aW9ucyk7XG4gICAgICAgICAgICByZXR1cm4gKF9qc3goVW5zdXBwb3J0ZWRGaWVsZFRlbXBsYXRlLCB7IHNjaGVtYTogc2NoZW1hLCBpZFNjaGVtYTogaWRTY2hlbWEsIHJlYXNvbjogdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5Vbmtub3duRmllbGRUeXBlLCBbU3RyaW5nKHNjaGVtYS50eXBlKV0pLCByZWdpc3RyeTogcmVnaXN0cnkgfSkpO1xuICAgICAgICB9O1xufVxuLyoqIFRoZSBgU2NoZW1hRmllbGRSZW5kZXJgIGNvbXBvbmVudCBpcyB0aGUgd29yay1ob3JzZSBvZiByZWFjdC1qc29uc2NoZW1hLWZvcm0sIGRldGVybWluaW5nIHdoYXQga2luZCBvZiByZWFsIGZpZWxkIHRvXG4gKiByZW5kZXIgYmFzZWQgb24gdGhlIGBzY2hlbWFgLCBgdWlTY2hlbWFgIGFuZCBhbGwgdGhlIG90aGVyIHByb3BzLiBJdCBhbHNvIGRlYWxzIHdpdGggcmVuZGVyaW5nIHRoZSBgYW55T2ZgIGFuZFxuICogYG9uZU9mYCBmaWVsZHMuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBGaWVsZFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZnVuY3Rpb24gU2NoZW1hRmllbGRSZW5kZXIocHJvcHMpIHtcbiAgICB2YXIgX2EsIF9iLCBfYztcbiAgICBjb25zdCB7IHNjaGVtYTogX3NjaGVtYSwgaWRTY2hlbWE6IF9pZFNjaGVtYSwgdWlTY2hlbWEsIGZvcm1EYXRhLCBlcnJvclNjaGVtYSwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yLCBuYW1lLCBvbkNoYW5nZSwgb25LZXlDaGFuZ2UsIG9uRHJvcFByb3BlcnR5Q2xpY2ssIHJlcXVpcmVkLCByZWdpc3RyeSwgd2FzUHJvcGVydHlLZXlNb2RpZmllZCA9IGZhbHNlLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyBmb3JtQ29udGV4dCwgc2NoZW1hVXRpbHMsIGdsb2JhbFVpT3B0aW9ucyB9ID0gcmVnaXN0cnk7XG4gICAgY29uc3QgdWlPcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgIGNvbnN0IEZpZWxkVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnRmllbGRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCB1aU9wdGlvbnMpO1xuICAgIGNvbnN0IERlc2NyaXB0aW9uRmllbGRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUnLCByZWdpc3RyeSwgdWlPcHRpb25zKTtcbiAgICBjb25zdCBGaWVsZEhlbHBUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdGaWVsZEhlbHBUZW1wbGF0ZScsIHJlZ2lzdHJ5LCB1aU9wdGlvbnMpO1xuICAgIGNvbnN0IEZpZWxkRXJyb3JUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdGaWVsZEVycm9yVGVtcGxhdGUnLCByZWdpc3RyeSwgdWlPcHRpb25zKTtcbiAgICBjb25zdCBzY2hlbWEgPSBzY2hlbWFVdGlscy5yZXRyaWV2ZVNjaGVtYShfc2NoZW1hLCBmb3JtRGF0YSk7XG4gICAgY29uc3QgZmllbGRJZCA9IF9pZFNjaGVtYVtJRF9LRVldO1xuICAgIGNvbnN0IGlkU2NoZW1hID0gbWVyZ2VPYmplY3RzKHNjaGVtYVV0aWxzLnRvSWRTY2hlbWEoc2NoZW1hLCBmaWVsZElkLCBmb3JtRGF0YSwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yKSwgX2lkU2NoZW1hKTtcbiAgICAvKiogSW50ZXJtZWRpYXJ5IGBvbkNoYW5nZWAgaGFuZGxlciBmb3IgZmllbGQgY29tcG9uZW50cyB0aGF0IHdpbGwgaW5qZWN0IHRoZSBgaWRgIG9mIHRoZSBjdXJyZW50IGZpZWxkIGludG8gdGhlXG4gICAgICogYG9uQ2hhbmdlYCBjaGFpbiBpZiBpdCBpcyBub3QgYWxyZWFkeSBiZWluZyBwcm92aWRlZCBmcm9tIGEgZGVlcGVyIGxldmVsIGluIHRoZSBoaWVyYXJjaHlcbiAgICAgKi9cbiAgICBjb25zdCBoYW5kbGVGaWVsZENvbXBvbmVudENoYW5nZSA9IHVzZUNhbGxiYWNrKChmb3JtRGF0YSwgbmV3RXJyb3JTY2hlbWEsIGlkKSA9PiB7XG4gICAgICAgIGNvbnN0IHRoZUlkID0gaWQgfHwgZmllbGRJZDtcbiAgICAgICAgcmV0dXJuIG9uQ2hhbmdlKGZvcm1EYXRhLCBuZXdFcnJvclNjaGVtYSwgdGhlSWQpO1xuICAgIH0sIFtmaWVsZElkLCBvbkNoYW5nZV0pO1xuICAgIGNvbnN0IEZpZWxkQ29tcG9uZW50ID0gZ2V0RmllbGRDb21wb25lbnQoc2NoZW1hLCB1aU9wdGlvbnMsIGlkU2NoZW1hLCByZWdpc3RyeSk7XG4gICAgY29uc3QgZGlzYWJsZWQgPSBCb29sZWFuKChfYSA9IHVpT3B0aW9ucy5kaXNhYmxlZCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogcHJvcHMuZGlzYWJsZWQpO1xuICAgIGNvbnN0IHJlYWRvbmx5ID0gQm9vbGVhbigoX2IgPSB1aU9wdGlvbnMucmVhZG9ubHkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IChwcm9wcy5yZWFkb25seSB8fCBwcm9wcy5zY2hlbWEucmVhZE9ubHkgfHwgc2NoZW1hLnJlYWRPbmx5KSk7XG4gICAgY29uc3QgdWlTY2hlbWFIaWRlRXJyb3IgPSB1aU9wdGlvbnMuaGlkZUVycm9yO1xuICAgIC8vIFNldCBoaWRlRXJyb3IgdG8gdGhlIHZhbHVlIHByb3ZpZGVkIGluIHRoZSB1aVNjaGVtYSwgb3RoZXJ3aXNlIHN0aWNrIHdpdGggdGhlIHByb3AgdG8gcHJvcGFnYXRlIHRvIGNoaWxkcmVuXG4gICAgY29uc3QgaGlkZUVycm9yID0gdWlTY2hlbWFIaWRlRXJyb3IgPT09IHVuZGVmaW5lZCA/IHByb3BzLmhpZGVFcnJvciA6IEJvb2xlYW4odWlTY2hlbWFIaWRlRXJyb3IpO1xuICAgIGNvbnN0IGF1dG9mb2N1cyA9IEJvb2xlYW4oKF9jID0gdWlPcHRpb25zLmF1dG9mb2N1cykgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogcHJvcHMuYXV0b2ZvY3VzKTtcbiAgICBpZiAoT2JqZWN0LmtleXMoc2NoZW1hKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGRpc3BsYXlMYWJlbCA9IHNjaGVtYVV0aWxzLmdldERpc3BsYXlMYWJlbChzY2hlbWEsIHVpU2NoZW1hLCBnbG9iYWxVaU9wdGlvbnMpO1xuICAgIGNvbnN0IHsgX19lcnJvcnMsIC4uLmZpZWxkRXJyb3JTY2hlbWEgfSA9IGVycm9yU2NoZW1hIHx8IHt9O1xuICAgIC8vIFNlZSAjNDM5OiB1aVNjaGVtYTogRG9uJ3QgcGFzcyBjb25zdW1lZCBjbGFzcyBuYW1lcyBvciBzdHlsZSB0byBjaGlsZCBjb21wb25lbnRzXG4gICAgY29uc3QgZmllbGRVaVNjaGVtYSA9IG9taXQodWlTY2hlbWEsIFsndWk6Y2xhc3NOYW1lcycsICdjbGFzc05hbWVzJywgJ3VpOnN0eWxlJ10pO1xuICAgIGlmIChVSV9PUFRJT05TX0tFWSBpbiBmaWVsZFVpU2NoZW1hKSB7XG4gICAgICAgIGZpZWxkVWlTY2hlbWFbVUlfT1BUSU9OU19LRVldID0gb21pdChmaWVsZFVpU2NoZW1hW1VJX09QVElPTlNfS0VZXSwgWydjbGFzc05hbWVzJywgJ3N0eWxlJ10pO1xuICAgIH1cbiAgICBjb25zdCBmaWVsZCA9IChfanN4KEZpZWxkQ29tcG9uZW50LCB7IC4uLnByb3BzLCBvbkNoYW5nZTogaGFuZGxlRmllbGRDb21wb25lbnRDaGFuZ2UsIGlkU2NoZW1hOiBpZFNjaGVtYSwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiBmaWVsZFVpU2NoZW1hLCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlYWRvbmx5OiByZWFkb25seSwgaGlkZUVycm9yOiBoaWRlRXJyb3IsIGF1dG9mb2N1czogYXV0b2ZvY3VzLCBlcnJvclNjaGVtYTogZmllbGRFcnJvclNjaGVtYSwgZm9ybUNvbnRleHQ6IGZvcm1Db250ZXh0LCByYXdFcnJvcnM6IF9fZXJyb3JzIH0pKTtcbiAgICBjb25zdCBpZCA9IGlkU2NoZW1hW0lEX0tFWV07XG4gICAgLy8gSWYgdGhpcyBzY2hlbWEgaGFzIGEgdGl0bGUgZGVmaW5lZCwgYnV0IHRoZSB1c2VyIGhhcyBzZXQgYSBuZXcga2V5L2xhYmVsLCByZXRhaW4gdGhlaXIgaW5wdXQuXG4gICAgbGV0IGxhYmVsO1xuICAgIGlmICh3YXNQcm9wZXJ0eUtleU1vZGlmaWVkKSB7XG4gICAgICAgIGxhYmVsID0gbmFtZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGxhYmVsID1cbiAgICAgICAgICAgIEFERElUSU9OQUxfUFJPUEVSVFlfRkxBRyBpbiBzY2hlbWFcbiAgICAgICAgICAgICAgICA/IG5hbWVcbiAgICAgICAgICAgICAgICA6IHVpT3B0aW9ucy50aXRsZSB8fCBwcm9wcy5zY2hlbWEudGl0bGUgfHwgc2NoZW1hLnRpdGxlIHx8IHByb3BzLnRpdGxlIHx8IG5hbWU7XG4gICAgfVxuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdWlPcHRpb25zLmRlc2NyaXB0aW9uIHx8IHByb3BzLnNjaGVtYS5kZXNjcmlwdGlvbiB8fCBzY2hlbWEuZGVzY3JpcHRpb24gfHwgJyc7XG4gICAgY29uc3QgcmljaERlc2NyaXB0aW9uID0gdWlPcHRpb25zLmVuYWJsZU1hcmtkb3duSW5EZXNjcmlwdGlvbiA/IChfanN4KE1hcmtkb3duLCB7IG9wdGlvbnM6IHsgZGlzYWJsZVBhcnNpbmdSYXdIVE1MOiB0cnVlIH0sIGNoaWxkcmVuOiBkZXNjcmlwdGlvbiB9KSkgOiAoZGVzY3JpcHRpb24pO1xuICAgIGNvbnN0IGhlbHAgPSB1aU9wdGlvbnMuaGVscDtcbiAgICBjb25zdCBoaWRkZW4gPSB1aU9wdGlvbnMud2lkZ2V0ID09PSAnaGlkZGVuJztcbiAgICBjb25zdCBjbGFzc05hbWVzID0gWydmb3JtLWdyb3VwJywgJ2ZpZWxkJywgYGZpZWxkLSR7Z2V0U2NoZW1hVHlwZShzY2hlbWEpfWBdO1xuICAgIGlmICghaGlkZUVycm9yICYmIF9fZXJyb3JzICYmIF9fZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY2xhc3NOYW1lcy5wdXNoKCdmaWVsZC1lcnJvciBoYXMtZXJyb3IgaGFzLWRhbmdlcicpO1xuICAgIH1cbiAgICBpZiAodWlTY2hlbWEgPT09IG51bGwgfHwgdWlTY2hlbWEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVpU2NoZW1hLmNsYXNzTmFtZXMpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIid1aVNjaGVtYS5jbGFzc05hbWVzJyBpcyBkZXByZWNhdGVkIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiBhIG1ham9yIHJlbGVhc2U7IFVzZSAndWk6Y2xhc3NOYW1lcycgaW5zdGVhZC5cIik7XG4gICAgICAgIH1cbiAgICAgICAgY2xhc3NOYW1lcy5wdXNoKHVpU2NoZW1hLmNsYXNzTmFtZXMpO1xuICAgIH1cbiAgICBpZiAodWlPcHRpb25zLmNsYXNzTmFtZXMpIHtcbiAgICAgICAgY2xhc3NOYW1lcy5wdXNoKHVpT3B0aW9ucy5jbGFzc05hbWVzKTtcbiAgICB9XG4gICAgY29uc3QgaGVscENvbXBvbmVudCA9IChfanN4KEZpZWxkSGVscFRlbXBsYXRlLCB7IGhlbHA6IGhlbHAsIGlkU2NoZW1hOiBpZFNjaGVtYSwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgaGFzRXJyb3JzOiAhaGlkZUVycm9yICYmIF9fZXJyb3JzICYmIF9fZXJyb3JzLmxlbmd0aCA+IDAsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSk7XG4gICAgLypcbiAgICAgKiBBbnlPZi9PbmVPZiBlcnJvcnMgaGFuZGxlZCBieSBjaGlsZCBzY2hlbWFcbiAgICAgKiB1bmxlc3MgaXQgY2FuIGJlIHJlbmRlcmVkIGFzIHNlbGVjdCBjb250cm9sXG4gICAgICovXG4gICAgY29uc3QgZXJyb3JzQ29tcG9uZW50ID0gaGlkZUVycm9yIHx8ICgoc2NoZW1hLmFueU9mIHx8IHNjaGVtYS5vbmVPZikgJiYgIXNjaGVtYVV0aWxzLmlzU2VsZWN0KHNjaGVtYSkpID8gdW5kZWZpbmVkIDogKF9qc3goRmllbGRFcnJvclRlbXBsYXRlLCB7IGVycm9yczogX19lcnJvcnMsIGVycm9yU2NoZW1hOiBlcnJvclNjaGVtYSwgaWRTY2hlbWE6IGlkU2NoZW1hLCBzY2hlbWE6IHNjaGVtYSwgdWlTY2hlbWE6IHVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnkgfSkpO1xuICAgIGNvbnN0IGZpZWxkUHJvcHMgPSB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAoX2pzeChEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUsIHsgaWQ6IGRlc2NyaXB0aW9uSWQoaWQpLCBkZXNjcmlwdGlvbjogcmljaERlc2NyaXB0aW9uLCBzY2hlbWE6IHNjaGVtYSwgdWlTY2hlbWE6IHVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnkgfSkpLFxuICAgICAgICByYXdEZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICAgIGhlbHA6IGhlbHBDb21wb25lbnQsXG4gICAgICAgIHJhd0hlbHA6IHR5cGVvZiBoZWxwID09PSAnc3RyaW5nJyA/IGhlbHAgOiB1bmRlZmluZWQsXG4gICAgICAgIGVycm9yczogZXJyb3JzQ29tcG9uZW50LFxuICAgICAgICByYXdFcnJvcnM6IGhpZGVFcnJvciA/IHVuZGVmaW5lZCA6IF9fZXJyb3JzLFxuICAgICAgICBpZCxcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIGhpZGRlbixcbiAgICAgICAgb25DaGFuZ2UsXG4gICAgICAgIG9uS2V5Q2hhbmdlLFxuICAgICAgICBvbkRyb3BQcm9wZXJ0eUNsaWNrLFxuICAgICAgICByZXF1aXJlZCxcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIHJlYWRvbmx5LFxuICAgICAgICBoaWRlRXJyb3IsXG4gICAgICAgIGRpc3BsYXlMYWJlbCxcbiAgICAgICAgY2xhc3NOYW1lczogY2xhc3NOYW1lcy5qb2luKCcgJykudHJpbSgpLFxuICAgICAgICBzdHlsZTogdWlPcHRpb25zLnN0eWxlLFxuICAgICAgICBmb3JtQ29udGV4dCxcbiAgICAgICAgZm9ybURhdGEsXG4gICAgICAgIHNjaGVtYSxcbiAgICAgICAgdWlTY2hlbWEsXG4gICAgICAgIHJlZ2lzdHJ5LFxuICAgIH07XG4gICAgY29uc3QgX0FueU9mRmllbGQgPSByZWdpc3RyeS5maWVsZHMuQW55T2ZGaWVsZDtcbiAgICBjb25zdCBfT25lT2ZGaWVsZCA9IHJlZ2lzdHJ5LmZpZWxkcy5PbmVPZkZpZWxkO1xuICAgIGNvbnN0IGlzUmVwbGFjaW5nQW55T3JPbmVPZiA9ICh1aVNjaGVtYSA9PT0gbnVsbCB8fCB1aVNjaGVtYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdWlTY2hlbWFbJ3VpOmZpZWxkJ10pICYmICh1aVNjaGVtYSA9PT0gbnVsbCB8fCB1aVNjaGVtYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdWlTY2hlbWFbJ3VpOmZpZWxkUmVwbGFjZXNBbnlPck9uZU9mJ10pID09PSB0cnVlO1xuICAgIHJldHVybiAoX2pzeChGaWVsZFRlbXBsYXRlLCB7IC4uLmZpZWxkUHJvcHMsIGNoaWxkcmVuOiBfanN4cyhfRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtmaWVsZCwgc2NoZW1hLmFueU9mICYmICFpc1JlcGxhY2luZ0FueU9yT25lT2YgJiYgIXNjaGVtYVV0aWxzLmlzU2VsZWN0KHNjaGVtYSkgJiYgKF9qc3goX0FueU9mRmllbGQsIHsgbmFtZTogbmFtZSwgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkb25seTogcmVhZG9ubHksIGhpZGVFcnJvcjogaGlkZUVycm9yLCBlcnJvclNjaGVtYTogZXJyb3JTY2hlbWEsIGZvcm1EYXRhOiBmb3JtRGF0YSwgZm9ybUNvbnRleHQ6IGZvcm1Db250ZXh0LCBpZFByZWZpeDogaWRQcmVmaXgsIGlkU2NoZW1hOiBpZFNjaGVtYSwgaWRTZXBhcmF0b3I6IGlkU2VwYXJhdG9yLCBvbkJsdXI6IHByb3BzLm9uQmx1ciwgb25DaGFuZ2U6IHByb3BzLm9uQ2hhbmdlLCBvbkZvY3VzOiBwcm9wcy5vbkZvY3VzLCBvcHRpb25zOiBzY2hlbWEuYW55T2YubWFwKChfc2NoZW1hKSA9PiBzY2hlbWFVdGlscy5yZXRyaWV2ZVNjaGVtYShpc09iamVjdChfc2NoZW1hKSA/IF9zY2hlbWEgOiB7fSwgZm9ybURhdGEpKSwgcmVnaXN0cnk6IHJlZ2lzdHJ5LCByZXF1aXJlZDogcmVxdWlyZWQsIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEgfSkpLCBzY2hlbWEub25lT2YgJiYgIWlzUmVwbGFjaW5nQW55T3JPbmVPZiAmJiAhc2NoZW1hVXRpbHMuaXNTZWxlY3Qoc2NoZW1hKSAmJiAoX2pzeChfT25lT2ZGaWVsZCwgeyBuYW1lOiBuYW1lLCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlYWRvbmx5OiByZWFkb25seSwgaGlkZUVycm9yOiBoaWRlRXJyb3IsIGVycm9yU2NoZW1hOiBlcnJvclNjaGVtYSwgZm9ybURhdGE6IGZvcm1EYXRhLCBmb3JtQ29udGV4dDogZm9ybUNvbnRleHQsIGlkUHJlZml4OiBpZFByZWZpeCwgaWRTY2hlbWE6IGlkU2NoZW1hLCBpZFNlcGFyYXRvcjogaWRTZXBhcmF0b3IsIG9uQmx1cjogcHJvcHMub25CbHVyLCBvbkNoYW5nZTogcHJvcHMub25DaGFuZ2UsIG9uRm9jdXM6IHByb3BzLm9uRm9jdXMsIG9wdGlvbnM6IHNjaGVtYS5vbmVPZi5tYXAoKF9zY2hlbWEpID0+IHNjaGVtYVV0aWxzLnJldHJpZXZlU2NoZW1hKGlzT2JqZWN0KF9zY2hlbWEpID8gX3NjaGVtYSA6IHt9LCBmb3JtRGF0YSkpLCByZWdpc3RyeTogcmVnaXN0cnksIHJlcXVpcmVkOiByZXF1aXJlZCwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSB9KSldIH0pIH0pKTtcbn1cbi8qKiBUaGUgYFNjaGVtYUZpZWxkYCBjb21wb25lbnQgZGV0ZXJtaW5lcyB3aGV0aGVyIGl0IGlzIG5lY2Vzc2FyeSB0byByZXJlbmRlciB0aGUgY29tcG9uZW50IGJhc2VkIG9uIGFueSBwcm9wcyBjaGFuZ2VzXG4gKiBhbmQgaWYgc28sIGNhbGxzIHRoZSBgU2NoZW1hRmllbGRSZW5kZXJgIGNvbXBvbmVudCB3aXRoIHRoZSBwcm9wcy5cbiAqL1xuY2xhc3MgU2NoZW1hRmllbGQgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHMpIHtcbiAgICAgICAgcmV0dXJuICFkZWVwRXF1YWxzKHRoaXMucHJvcHMsIG5leHRQcm9wcyk7XG4gICAgfVxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgcmV0dXJuIF9qc3goU2NoZW1hRmllbGRSZW5kZXIsIHsgLi4udGhpcy5wcm9wcyB9KTtcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBTY2hlbWFGaWVsZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNjaGVtYUZpZWxkLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRXaWRnZXQsIGdldFVpT3B0aW9ucywgb3B0aW9uc0xpc3QsIGhhc1dpZGdldCwgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBTdHJpbmdGaWVsZGAgY29tcG9uZW50IGlzIHVzZWQgdG8gcmVuZGVyIGEgc2NoZW1hIGZpZWxkIHRoYXQgcmVwcmVzZW50cyBhIHN0cmluZyB0eXBlXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBGaWVsZFByb3BzYCBmb3IgdGhpcyB0ZW1wbGF0ZVxuICovXG5mdW5jdGlvbiBTdHJpbmdGaWVsZChwcm9wcykge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCB7IHNjaGVtYSwgbmFtZSwgdWlTY2hlbWEsIGlkU2NoZW1hLCBmb3JtRGF0YSwgcmVxdWlyZWQsIGRpc2FibGVkID0gZmFsc2UsIHJlYWRvbmx5ID0gZmFsc2UsIGF1dG9mb2N1cyA9IGZhbHNlLCBvbkNoYW5nZSwgb25CbHVyLCBvbkZvY3VzLCByZWdpc3RyeSwgcmF3RXJyb3JzLCBoaWRlRXJyb3IsIH0gPSBwcm9wcztcbiAgICBjb25zdCB7IHRpdGxlLCBmb3JtYXQgfSA9IHNjaGVtYTtcbiAgICBjb25zdCB7IHdpZGdldHMsIGZvcm1Db250ZXh0LCBzY2hlbWFVdGlscywgZ2xvYmFsVWlPcHRpb25zIH0gPSByZWdpc3RyeTtcbiAgICBjb25zdCBlbnVtT3B0aW9ucyA9IHNjaGVtYVV0aWxzLmlzU2VsZWN0KHNjaGVtYSkgPyBvcHRpb25zTGlzdChzY2hlbWEsIHVpU2NoZW1hKSA6IHVuZGVmaW5lZDtcbiAgICBsZXQgZGVmYXVsdFdpZGdldCA9IGVudW1PcHRpb25zID8gJ3NlbGVjdCcgOiAndGV4dCc7XG4gICAgaWYgKGZvcm1hdCAmJiBoYXNXaWRnZXQoc2NoZW1hLCBmb3JtYXQsIHdpZGdldHMpKSB7XG4gICAgICAgIGRlZmF1bHRXaWRnZXQgPSBmb3JtYXQ7XG4gICAgfVxuICAgIGNvbnN0IHsgd2lkZ2V0ID0gZGVmYXVsdFdpZGdldCwgcGxhY2Vob2xkZXIgPSAnJywgdGl0bGU6IHVpVGl0bGUsIC4uLm9wdGlvbnMgfSA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSk7XG4gICAgY29uc3QgZGlzcGxheUxhYmVsID0gc2NoZW1hVXRpbHMuZ2V0RGlzcGxheUxhYmVsKHNjaGVtYSwgdWlTY2hlbWEsIGdsb2JhbFVpT3B0aW9ucyk7XG4gICAgY29uc3QgbGFiZWwgPSAoX2EgPSB1aVRpdGxlICE9PSBudWxsICYmIHVpVGl0bGUgIT09IHZvaWQgMCA/IHVpVGl0bGUgOiB0aXRsZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbmFtZTtcbiAgICBjb25zdCBXaWRnZXQgPSBnZXRXaWRnZXQoc2NoZW1hLCB3aWRnZXQsIHdpZGdldHMpO1xuICAgIHJldHVybiAoX2pzeChXaWRnZXQsIHsgb3B0aW9uczogeyAuLi5vcHRpb25zLCBlbnVtT3B0aW9ucyB9LCBzY2hlbWE6IHNjaGVtYSwgdWlTY2hlbWE6IHVpU2NoZW1hLCBpZDogaWRTY2hlbWEuJGlkLCBuYW1lOiBuYW1lLCBsYWJlbDogbGFiZWwsIGhpZGVMYWJlbDogIWRpc3BsYXlMYWJlbCwgaGlkZUVycm9yOiBoaWRlRXJyb3IsIHZhbHVlOiBmb3JtRGF0YSwgb25DaGFuZ2U6IG9uQ2hhbmdlLCBvbkJsdXI6IG9uQmx1ciwgb25Gb2N1czogb25Gb2N1cywgcmVxdWlyZWQ6IHJlcXVpcmVkLCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlYWRvbmx5OiByZWFkb25seSwgZm9ybUNvbnRleHQ6IGZvcm1Db250ZXh0LCBhdXRvZm9jdXM6IGF1dG9mb2N1cywgcmVnaXN0cnk6IHJlZ2lzdHJ5LCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIHJhd0Vycm9yczogcmF3RXJyb3JzIH0pKTtcbn1cbmV4cG9ydCBkZWZhdWx0IFN0cmluZ0ZpZWxkO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3RyaW5nRmllbGQuanMubWFwIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuLyoqIFRoZSBgTnVsbEZpZWxkYCBjb21wb25lbnQgaXMgdXNlZCB0byByZW5kZXIgYSBmaWVsZCBpbiB0aGUgc2NoZW1hIGlzIG51bGwuIEl0IGFsc28gZW5zdXJlcyB0aGF0IHRoZSBgZm9ybURhdGFgIGlzXG4gKiBhbHNvIHNldCB0byBudWxsIGlmIGl0IGhhcyBubyB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYEZpZWxkUHJvcHNgIGZvciB0aGlzIHRlbXBsYXRlXG4gKi9cbmZ1bmN0aW9uIE51bGxGaWVsZChwcm9wcykge1xuICAgIGNvbnN0IHsgZm9ybURhdGEsIG9uQ2hhbmdlIH0gPSBwcm9wcztcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoZm9ybURhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgb25DaGFuZ2UobnVsbCk7XG4gICAgICAgIH1cbiAgICB9LCBbZm9ybURhdGEsIG9uQ2hhbmdlXSk7XG4gICAgcmV0dXJuIG51bGw7XG59XG5leHBvcnQgZGVmYXVsdCBOdWxsRmllbGQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1OdWxsRmllbGQuanMubWFwIiwiaW1wb3J0IEFycmF5RmllbGQgZnJvbSAnLi9BcnJheUZpZWxkJztcbmltcG9ydCBCb29sZWFuRmllbGQgZnJvbSAnLi9Cb29sZWFuRmllbGQnO1xuaW1wb3J0IE11bHRpU2NoZW1hRmllbGQgZnJvbSAnLi9NdWx0aVNjaGVtYUZpZWxkJztcbmltcG9ydCBOdW1iZXJGaWVsZCBmcm9tICcuL051bWJlckZpZWxkJztcbmltcG9ydCBPYmplY3RGaWVsZCBmcm9tICcuL09iamVjdEZpZWxkJztcbmltcG9ydCBTY2hlbWFGaWVsZCBmcm9tICcuL1NjaGVtYUZpZWxkJztcbmltcG9ydCBTdHJpbmdGaWVsZCBmcm9tICcuL1N0cmluZ0ZpZWxkJztcbmltcG9ydCBOdWxsRmllbGQgZnJvbSAnLi9OdWxsRmllbGQnO1xuZnVuY3Rpb24gZmllbGRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIEFueU9mRmllbGQ6IE11bHRpU2NoZW1hRmllbGQsXG4gICAgICAgIEFycmF5RmllbGQ6IEFycmF5RmllbGQsXG4gICAgICAgIC8vIEFycmF5RmllbGQgZmFsbHMgYmFjayB0byBTY2hlbWFGaWVsZCBpZiBBcnJheVNjaGVtYUZpZWxkIGlzIG5vdCBkZWZpbmVkLCB3aGljaCBpdCBpc24ndCBieSBkZWZhdWx0XG4gICAgICAgIEJvb2xlYW5GaWVsZCxcbiAgICAgICAgTnVtYmVyRmllbGQsXG4gICAgICAgIE9iamVjdEZpZWxkLFxuICAgICAgICBPbmVPZkZpZWxkOiBNdWx0aVNjaGVtYUZpZWxkLFxuICAgICAgICBTY2hlbWFGaWVsZCxcbiAgICAgICAgU3RyaW5nRmllbGQsXG4gICAgICAgIE51bGxGaWVsZCxcbiAgICB9O1xufVxuZXhwb3J0IGRlZmF1bHQgZmllbGRzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGRlc2NyaXB0aW9uSWQsIGdldFRlbXBsYXRlLCBnZXRVaU9wdGlvbnMsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgQXJyYXlGaWVsZERlc2NyaXB0aW9uVGVtcGxhdGVgIGNvbXBvbmVudCByZW5kZXJzIGEgYERlc2NyaXB0aW9uRmllbGRUZW1wbGF0ZWAgd2l0aCBhbiBgaWRgIGRlcml2ZWQgZnJvbVxuICogdGhlIGBpZFNjaGVtYWAuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBBcnJheUZpZWxkRGVzY3JpcHRpb25Qcm9wc2AgZm9yIHRoZSBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXJyYXlGaWVsZERlc2NyaXB0aW9uVGVtcGxhdGUocHJvcHMpIHtcbiAgICBjb25zdCB7IGlkU2NoZW1hLCBkZXNjcmlwdGlvbiwgcmVnaXN0cnksIHNjaGVtYSwgdWlTY2hlbWEgfSA9IHByb3BzO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRVaU9wdGlvbnModWlTY2hlbWEsIHJlZ2lzdHJ5Lmdsb2JhbFVpT3B0aW9ucyk7XG4gICAgY29uc3QgeyBsYWJlbDogZGlzcGxheUxhYmVsID0gdHJ1ZSB9ID0gb3B0aW9ucztcbiAgICBpZiAoIWRlc2NyaXB0aW9uIHx8ICFkaXNwbGF5TGFiZWwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IERlc2NyaXB0aW9uRmllbGRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIChfanN4KERlc2NyaXB0aW9uRmllbGRUZW1wbGF0ZSwgeyBpZDogZGVzY3JpcHRpb25JZChpZFNjaGVtYSksIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFycmF5RmllbGREZXNjcmlwdGlvblRlbXBsYXRlLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG4vKiogVGhlIGBBcnJheUZpZWxkSXRlbVRlbXBsYXRlYCBjb21wb25lbnQgaXMgdGhlIHRlbXBsYXRlIHVzZWQgdG8gcmVuZGVyIGFuIGl0ZW1zIG9mIGFuIGFycmF5LlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgQXJyYXlGaWVsZFRlbXBsYXRlSXRlbVR5cGVgIHByb3BzIGZvciB0aGUgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFycmF5RmllbGRJdGVtVGVtcGxhdGUocHJvcHMpIHtcbiAgICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGRpc2FibGVkLCBoYXNUb29sYmFyLCBoYXNNb3ZlRG93biwgaGFzTW92ZVVwLCBoYXNSZW1vdmUsIGhhc0NvcHksIGluZGV4LCBvbkNvcHlJbmRleENsaWNrLCBvbkRyb3BJbmRleENsaWNrLCBvblJlb3JkZXJDbGljaywgcmVhZG9ubHksIHJlZ2lzdHJ5LCB1aVNjaGVtYSwgfSA9IHByb3BzO1xuICAgIGNvbnN0IHsgQ29weUJ1dHRvbiwgTW92ZURvd25CdXR0b24sIE1vdmVVcEJ1dHRvbiwgUmVtb3ZlQnV0dG9uIH0gPSByZWdpc3RyeS50ZW1wbGF0ZXMuQnV0dG9uVGVtcGxhdGVzO1xuICAgIGNvbnN0IGJ0blN0eWxlID0ge1xuICAgICAgICBmbGV4OiAxLFxuICAgICAgICBwYWRkaW5nTGVmdDogNixcbiAgICAgICAgcGFkZGluZ1JpZ2h0OiA2LFxuICAgICAgICBmb250V2VpZ2h0OiAnYm9sZCcsXG4gICAgfTtcbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUsIGNoaWxkcmVuOiBbX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogaGFzVG9vbGJhciA/ICdjb2wteHMtOScgOiAnY29sLXhzLTEyJywgY2hpbGRyZW46IGNoaWxkcmVuIH0pLCBoYXNUb29sYmFyICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAnY29sLXhzLTMgYXJyYXktaXRlbS10b29sYm94JywgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAnYnRuLWdyb3VwJywgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYXJvdW5kJyxcbiAgICAgICAgICAgICAgICAgICAgfSwgY2hpbGRyZW46IFsoaGFzTW92ZVVwIHx8IGhhc01vdmVEb3duKSAmJiAoX2pzeChNb3ZlVXBCdXR0b24sIHsgc3R5bGU6IGJ0blN0eWxlLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgcmVhZG9ubHkgfHwgIWhhc01vdmVVcCwgb25DbGljazogb25SZW9yZGVyQ2xpY2soaW5kZXgsIGluZGV4IC0gMSksIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKSwgKGhhc01vdmVVcCB8fCBoYXNNb3ZlRG93bikgJiYgKF9qc3goTW92ZURvd25CdXR0b24sIHsgc3R5bGU6IGJ0blN0eWxlLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgcmVhZG9ubHkgfHwgIWhhc01vdmVEb3duLCBvbkNsaWNrOiBvblJlb3JkZXJDbGljayhpbmRleCwgaW5kZXggKyAxKSwgdWlTY2hlbWE6IHVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnkgfSkpLCBoYXNDb3B5ICYmIChfanN4KENvcHlCdXR0b24sIHsgc3R5bGU6IGJ0blN0eWxlLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgcmVhZG9ubHksIG9uQ2xpY2s6IG9uQ29weUluZGV4Q2xpY2soaW5kZXgpLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSksIGhhc1JlbW92ZSAmJiAoX2pzeChSZW1vdmVCdXR0b24sIHsgc3R5bGU6IGJ0blN0eWxlLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgcmVhZG9ubHksIG9uQ2xpY2s6IG9uRHJvcEluZGV4Q2xpY2soaW5kZXgpLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSldIH0pIH0pKV0gfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QXJyYXlGaWVsZEl0ZW1UZW1wbGF0ZS5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgZ2V0VGVtcGxhdGUsIGdldFVpT3B0aW9ucywgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBBcnJheUZpZWxkVGVtcGxhdGVgIGNvbXBvbmVudCBpcyB0aGUgdGVtcGxhdGUgdXNlZCB0byByZW5kZXIgYWxsIGl0ZW1zIGluIGFuIGFycmF5LlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgQXJyYXlGaWVsZFRlbXBsYXRlSXRlbVR5cGVgIHByb3BzIGZvciB0aGUgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFycmF5RmllbGRUZW1wbGF0ZShwcm9wcykge1xuICAgIGNvbnN0IHsgY2FuQWRkLCBjbGFzc05hbWUsIGRpc2FibGVkLCBpZFNjaGVtYSwgdWlTY2hlbWEsIGl0ZW1zLCBvbkFkZENsaWNrLCByZWFkb25seSwgcmVnaXN0cnksIHJlcXVpcmVkLCBzY2hlbWEsIHRpdGxlLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgdWlPcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hKTtcbiAgICBjb25zdCBBcnJheUZpZWxkRGVzY3JpcHRpb25UZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdBcnJheUZpZWxkRGVzY3JpcHRpb25UZW1wbGF0ZScsIHJlZ2lzdHJ5LCB1aU9wdGlvbnMpO1xuICAgIGNvbnN0IEFycmF5RmllbGRJdGVtVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnQXJyYXlGaWVsZEl0ZW1UZW1wbGF0ZScsIHJlZ2lzdHJ5LCB1aU9wdGlvbnMpO1xuICAgIGNvbnN0IEFycmF5RmllbGRUaXRsZVRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0FycmF5RmllbGRUaXRsZVRlbXBsYXRlJywgcmVnaXN0cnksIHVpT3B0aW9ucyk7XG4gICAgLy8gQnV0dG9uIHRlbXBsYXRlcyBhcmUgbm90IG92ZXJyaWRkZW4gaW4gdGhlIHVpU2NoZW1hXG4gICAgY29uc3QgeyBCdXR0b25UZW1wbGF0ZXM6IHsgQWRkQnV0dG9uIH0sIH0gPSByZWdpc3RyeS50ZW1wbGF0ZXM7XG4gICAgcmV0dXJuIChfanN4cyhcImZpZWxkc2V0XCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUsIGlkOiBpZFNjaGVtYS4kaWQsIGNoaWxkcmVuOiBbX2pzeChBcnJheUZpZWxkVGl0bGVUZW1wbGF0ZSwgeyBpZFNjaGVtYTogaWRTY2hlbWEsIHRpdGxlOiB1aU9wdGlvbnMudGl0bGUgfHwgdGl0bGUsIHJlcXVpcmVkOiByZXF1aXJlZCwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pLCBfanN4KEFycmF5RmllbGREZXNjcmlwdGlvblRlbXBsYXRlLCB7IGlkU2NoZW1hOiBpZFNjaGVtYSwgZGVzY3JpcHRpb246IHVpT3B0aW9ucy5kZXNjcmlwdGlvbiB8fCBzY2hlbWEuZGVzY3JpcHRpb24sIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogJ3JvdyBhcnJheS1pdGVtLWxpc3QnLCBjaGlsZHJlbjogaXRlbXMgJiZcbiAgICAgICAgICAgICAgICAgICAgaXRlbXMubWFwKCh7IGtleSwgLi4uaXRlbVByb3BzIH0pID0+IChfanN4KEFycmF5RmllbGRJdGVtVGVtcGxhdGUsIHsgLi4uaXRlbVByb3BzIH0sIGtleSkpKSB9KSwgY2FuQWRkICYmIChfanN4KEFkZEJ1dHRvbiwgeyBjbGFzc05hbWU6ICdhcnJheS1pdGVtLWFkZCcsIG9uQ2xpY2s6IG9uQWRkQ2xpY2ssIGRpc2FibGVkOiBkaXNhYmxlZCB8fCByZWFkb25seSwgdWlTY2hlbWE6IHVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnkgfSkpXSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BcnJheUZpZWxkVGVtcGxhdGUuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGdldFRlbXBsYXRlLCBnZXRVaU9wdGlvbnMsIHRpdGxlSWQsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgQXJyYXlGaWVsZFRpdGxlVGVtcGxhdGVgIGNvbXBvbmVudCByZW5kZXJzIGEgYFRpdGxlRmllbGRUZW1wbGF0ZWAgd2l0aCBhbiBgaWRgIGRlcml2ZWQgZnJvbVxuICogdGhlIGBpZFNjaGVtYWAuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBBcnJheUZpZWxkVGl0bGVQcm9wc2AgZm9yIHRoZSBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXJyYXlGaWVsZFRpdGxlVGVtcGxhdGUocHJvcHMpIHtcbiAgICBjb25zdCB7IGlkU2NoZW1hLCB0aXRsZSwgc2NoZW1hLCB1aVNjaGVtYSwgcmVxdWlyZWQsIHJlZ2lzdHJ5IH0gPSBwcm9wcztcbiAgICBjb25zdCBvcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hLCByZWdpc3RyeS5nbG9iYWxVaU9wdGlvbnMpO1xuICAgIGNvbnN0IHsgbGFiZWw6IGRpc3BsYXlMYWJlbCA9IHRydWUgfSA9IG9wdGlvbnM7XG4gICAgaWYgKCF0aXRsZSB8fCAhZGlzcGxheUxhYmVsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBUaXRsZUZpZWxkVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnVGl0bGVGaWVsZFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIHJldHVybiAoX2pzeChUaXRsZUZpZWxkVGVtcGxhdGUsIHsgaWQ6IHRpdGxlSWQoaWRTY2hlbWEpLCB0aXRsZTogdGl0bGUsIHJlcXVpcmVkOiByZXF1aXJlZCwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFycmF5RmllbGRUaXRsZVRlbXBsYXRlLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBGcmFnbWVudCBhcyBfRnJhZ21lbnQsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgYXJpYURlc2NyaWJlZEJ5SWRzLCBleGFtcGxlc0lkLCBnZXRJbnB1dFByb3BzLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYEJhc2VJbnB1dFRlbXBsYXRlYCBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgYmFzaWMgYDxpbnB1dD5gIGNvbXBvbmVudCBmb3IgdGhlIGBjb3JlYCB0aGVtZS5cbiAqIEl0IGlzIHVzZWQgYXMgdGhlIHRlbXBsYXRlIGZvciByZW5kZXJpbmcgbWFueSBvZiB0aGUgPGlucHV0PiBiYXNlZCB3aWRnZXRzIHRoYXQgZGlmZmVyIGJ5IGB0eXBlYCBhbmQgY2FsbGJhY2tzIG9ubHkuXG4gKiBJdCBjYW4gYmUgY3VzdG9taXplZC9vdmVycmlkZGVuIGZvciBvdGhlciB0aGVtZXMgb3IgaW5kaXZpZHVhbCBpbXBsZW1lbnRhdGlvbnMgYXMgbmVlZGVkLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIHRlbXBsYXRlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJhc2VJbnB1dFRlbXBsYXRlKHByb3BzKSB7XG4gICAgY29uc3QgeyBpZCwgbmFtZSwgLy8gcmVtb3ZlIHRoaXMgZnJvbSAuLi5yZXN0XG4gICAgdmFsdWUsIHJlYWRvbmx5LCBkaXNhYmxlZCwgYXV0b2ZvY3VzLCBvbkJsdXIsIG9uRm9jdXMsIG9uQ2hhbmdlLCBvbkNoYW5nZU92ZXJyaWRlLCBvcHRpb25zLCBzY2hlbWEsIHVpU2NoZW1hLCBmb3JtQ29udGV4dCwgcmVnaXN0cnksIHJhd0Vycm9ycywgdHlwZSwgaGlkZUxhYmVsLCAvLyByZW1vdmUgdGhpcyBmcm9tIC4uLnJlc3RcbiAgICBoaWRlRXJyb3IsIC8vIHJlbW92ZSB0aGlzIGZyb20gLi4ucmVzdFxuICAgIC4uLnJlc3QgfSA9IHByb3BzO1xuICAgIC8vIE5vdGU6IHNpbmNlIFJlYWN0IDE1LjIuMCB3ZSBjYW4ndCBmb3J3YXJkIHVua25vd24gZWxlbWVudCBhdHRyaWJ1dGVzLCBzbyB3ZVxuICAgIC8vIGV4Y2x1ZGUgdGhlIFwib3B0aW9uc1wiIGFuZCBcInNjaGVtYVwiIG9uZXMgaGVyZS5cbiAgICBpZiAoIWlkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdObyBpZCBmb3InLCBwcm9wcyk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgbm8gaWQgZm9yIHByb3BzICR7SlNPTi5zdHJpbmdpZnkocHJvcHMpfWApO1xuICAgIH1cbiAgICBjb25zdCBpbnB1dFByb3BzID0ge1xuICAgICAgICAuLi5yZXN0LFxuICAgICAgICAuLi5nZXRJbnB1dFByb3BzKHNjaGVtYSwgdHlwZSwgb3B0aW9ucyksXG4gICAgfTtcbiAgICBsZXQgaW5wdXRWYWx1ZTtcbiAgICBpZiAoaW5wdXRQcm9wcy50eXBlID09PSAnbnVtYmVyJyB8fCBpbnB1dFByb3BzLnR5cGUgPT09ICdpbnRlZ2VyJykge1xuICAgICAgICBpbnB1dFZhbHVlID0gdmFsdWUgfHwgdmFsdWUgPT09IDAgPyB2YWx1ZSA6ICcnO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaW5wdXRWYWx1ZSA9IHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBfb25DaGFuZ2UgPSB1c2VDYWxsYmFjaygoeyB0YXJnZXQ6IHsgdmFsdWUgfSB9KSA9PiBvbkNoYW5nZSh2YWx1ZSA9PT0gJycgPyBvcHRpb25zLmVtcHR5VmFsdWUgOiB2YWx1ZSksIFtvbkNoYW5nZSwgb3B0aW9uc10pO1xuICAgIGNvbnN0IF9vbkJsdXIgPSB1c2VDYWxsYmFjaygoeyB0YXJnZXQgfSkgPT4gb25CbHVyKGlkLCB0YXJnZXQgJiYgdGFyZ2V0LnZhbHVlKSwgW29uQmx1ciwgaWRdKTtcbiAgICBjb25zdCBfb25Gb2N1cyA9IHVzZUNhbGxiYWNrKCh7IHRhcmdldCB9KSA9PiBvbkZvY3VzKGlkLCB0YXJnZXQgJiYgdGFyZ2V0LnZhbHVlKSwgW29uRm9jdXMsIGlkXSk7XG4gICAgcmV0dXJuIChfanN4cyhfRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtfanN4KFwiaW5wdXRcIiwgeyBpZDogaWQsIG5hbWU6IGlkLCBjbGFzc05hbWU6ICdmb3JtLWNvbnRyb2wnLCByZWFkT25seTogcmVhZG9ubHksIGRpc2FibGVkOiBkaXNhYmxlZCwgYXV0b0ZvY3VzOiBhdXRvZm9jdXMsIHZhbHVlOiBpbnB1dFZhbHVlLCAuLi5pbnB1dFByb3BzLCBsaXN0OiBzY2hlbWEuZXhhbXBsZXMgPyBleGFtcGxlc0lkKGlkKSA6IHVuZGVmaW5lZCwgb25DaGFuZ2U6IG9uQ2hhbmdlT3ZlcnJpZGUgfHwgX29uQ2hhbmdlLCBvbkJsdXI6IF9vbkJsdXIsIG9uRm9jdXM6IF9vbkZvY3VzLCBcImFyaWEtZGVzY3JpYmVkYnlcIjogYXJpYURlc2NyaWJlZEJ5SWRzKGlkLCAhIXNjaGVtYS5leGFtcGxlcykgfSksIEFycmF5LmlzQXJyYXkoc2NoZW1hLmV4YW1wbGVzKSAmJiAoX2pzeChcImRhdGFsaXN0XCIsIHsgaWQ6IGV4YW1wbGVzSWQoaWQpLCBjaGlsZHJlbjogc2NoZW1hLmV4YW1wbGVzXG4gICAgICAgICAgICAgICAgICAgIC5jb25jYXQoc2NoZW1hLmRlZmF1bHQgJiYgIXNjaGVtYS5leGFtcGxlcy5pbmNsdWRlcyhzY2hlbWEuZGVmYXVsdCkgPyBbc2NoZW1hLmRlZmF1bHRdIDogW10pXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGV4YW1wbGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9qc3goXCJvcHRpb25cIiwgeyB2YWx1ZTogZXhhbXBsZSB9LCBleGFtcGxlKTtcbiAgICAgICAgICAgICAgICB9KSB9LCBgZGF0YWxpc3RfJHtpZH1gKSldIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJhc2VJbnB1dFRlbXBsYXRlLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRTdWJtaXRCdXR0b25PcHRpb25zIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgU3VibWl0QnV0dG9uYCByZW5kZXJzIGEgYnV0dG9uIHRoYXQgcmVwcmVzZW50IHRoZSBgU3VibWl0YCBhY3Rpb24gb24gYSBmb3JtXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFN1Ym1pdEJ1dHRvbih7IHVpU2NoZW1hIH0pIHtcbiAgICBjb25zdCB7IHN1Ym1pdFRleHQsIG5vcmVuZGVyLCBwcm9wczogc3VibWl0QnV0dG9uUHJvcHMgPSB7fSB9ID0gZ2V0U3VibWl0QnV0dG9uT3B0aW9ucyh1aVNjaGVtYSk7XG4gICAgaWYgKG5vcmVuZGVyKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gKF9qc3goXCJkaXZcIiwgeyBjaGlsZHJlbjogX2pzeChcImJ1dHRvblwiLCB7IHR5cGU6ICdzdWJtaXQnLCAuLi5zdWJtaXRCdXR0b25Qcm9wcywgY2xhc3NOYW1lOiBgYnRuIGJ0bi1pbmZvICR7c3VibWl0QnV0dG9uUHJvcHMuY2xhc3NOYW1lIHx8ICcnfWAsIGNoaWxkcmVuOiBzdWJtaXRUZXh0IH0pIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVN1Ym1pdEJ1dHRvbi5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgVHJhbnNsYXRhYmxlU3RyaW5nIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gSWNvbkJ1dHRvbihwcm9wcykge1xuICAgIGNvbnN0IHsgaWNvblR5cGUgPSAnZGVmYXVsdCcsIGljb24sIGNsYXNzTmFtZSwgdWlTY2hlbWEsIHJlZ2lzdHJ5LCAuLi5vdGhlclByb3BzIH0gPSBwcm9wcztcbiAgICByZXR1cm4gKF9qc3goXCJidXR0b25cIiwgeyB0eXBlOiAnYnV0dG9uJywgY2xhc3NOYW1lOiBgYnRuIGJ0bi0ke2ljb25UeXBlfSAke2NsYXNzTmFtZX1gLCAuLi5vdGhlclByb3BzLCBjaGlsZHJlbjogX2pzeChcImlcIiwgeyBjbGFzc05hbWU6IGBnbHlwaGljb24gZ2x5cGhpY29uLSR7aWNvbn1gIH0pIH0pKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBDb3B5QnV0dG9uKHByb3BzKSB7XG4gICAgY29uc3QgeyByZWdpc3RyeTogeyB0cmFuc2xhdGVTdHJpbmcgfSwgfSA9IHByb3BzO1xuICAgIHJldHVybiAoX2pzeChJY29uQnV0dG9uLCB7IHRpdGxlOiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLkNvcHlCdXR0b24pLCBjbGFzc05hbWU6ICdhcnJheS1pdGVtLWNvcHknLCAuLi5wcm9wcywgaWNvbjogJ2NvcHknIH0pKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBNb3ZlRG93bkJ1dHRvbihwcm9wcykge1xuICAgIGNvbnN0IHsgcmVnaXN0cnk6IHsgdHJhbnNsYXRlU3RyaW5nIH0sIH0gPSBwcm9wcztcbiAgICByZXR1cm4gKF9qc3goSWNvbkJ1dHRvbiwgeyB0aXRsZTogdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5Nb3ZlRG93bkJ1dHRvbiksIGNsYXNzTmFtZTogJ2FycmF5LWl0ZW0tbW92ZS1kb3duJywgLi4ucHJvcHMsIGljb246ICdhcnJvdy1kb3duJyB9KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gTW92ZVVwQnV0dG9uKHByb3BzKSB7XG4gICAgY29uc3QgeyByZWdpc3RyeTogeyB0cmFuc2xhdGVTdHJpbmcgfSwgfSA9IHByb3BzO1xuICAgIHJldHVybiAoX2pzeChJY29uQnV0dG9uLCB7IHRpdGxlOiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLk1vdmVVcEJ1dHRvbiksIGNsYXNzTmFtZTogJ2FycmF5LWl0ZW0tbW92ZS11cCcsIC4uLnByb3BzLCBpY29uOiAnYXJyb3ctdXAnIH0pKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBSZW1vdmVCdXR0b24ocHJvcHMpIHtcbiAgICBjb25zdCB7IHJlZ2lzdHJ5OiB7IHRyYW5zbGF0ZVN0cmluZyB9LCB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIChfanN4KEljb25CdXR0b24sIHsgdGl0bGU6IHRyYW5zbGF0ZVN0cmluZyhUcmFuc2xhdGFibGVTdHJpbmcuUmVtb3ZlQnV0dG9uKSwgY2xhc3NOYW1lOiAnYXJyYXktaXRlbS1yZW1vdmUnLCAuLi5wcm9wcywgaWNvblR5cGU6ICdkYW5nZXInLCBpY29uOiAncmVtb3ZlJyB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1JY29uQnV0dG9uLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGFibGVTdHJpbmcgfSBmcm9tICdAcmpzZi91dGlscyc7XG5pbXBvcnQgSWNvbkJ1dHRvbiBmcm9tICcuL0ljb25CdXR0b24nO1xuLyoqIFRoZSBgQWRkQnV0dG9uYCByZW5kZXJzIGEgYnV0dG9uIHRoYXQgcmVwcmVzZW50IHRoZSBgQWRkYCBhY3Rpb24gb24gYSBmb3JtXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFkZEJ1dHRvbih7IGNsYXNzTmFtZSwgb25DbGljaywgZGlzYWJsZWQsIHJlZ2lzdHJ5LCB9KSB7XG4gICAgY29uc3QgeyB0cmFuc2xhdGVTdHJpbmcgfSA9IHJlZ2lzdHJ5O1xuICAgIHJldHVybiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogJ3JvdycsIGNoaWxkcmVuOiBfanN4KFwicFwiLCB7IGNsYXNzTmFtZTogYGNvbC14cy0zIGNvbC14cy1vZmZzZXQtOSB0ZXh0LXJpZ2h0ICR7Y2xhc3NOYW1lfWAsIGNoaWxkcmVuOiBfanN4KEljb25CdXR0b24sIHsgaWNvblR5cGU6ICdpbmZvJywgaWNvbjogJ3BsdXMnLCBjbGFzc05hbWU6ICdidG4tYWRkIGNvbC14cy0xMicsIHRpdGxlOiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLkFkZEJ1dHRvbiksIG9uQ2xpY2s6IG9uQ2xpY2ssIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pIH0pIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFkZEJ1dHRvbi5qcy5tYXAiLCJpbXBvcnQgU3VibWl0QnV0dG9uIGZyb20gJy4vU3VibWl0QnV0dG9uJztcbmltcG9ydCBBZGRCdXR0b24gZnJvbSAnLi9BZGRCdXR0b24nO1xuaW1wb3J0IHsgQ29weUJ1dHRvbiwgTW92ZURvd25CdXR0b24sIE1vdmVVcEJ1dHRvbiwgUmVtb3ZlQnV0dG9uIH0gZnJvbSAnLi9JY29uQnV0dG9uJztcbmZ1bmN0aW9uIGJ1dHRvblRlbXBsYXRlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBTdWJtaXRCdXR0b24sXG4gICAgICAgIEFkZEJ1dHRvbixcbiAgICAgICAgQ29weUJ1dHRvbixcbiAgICAgICAgTW92ZURvd25CdXR0b24sXG4gICAgICAgIE1vdmVVcEJ1dHRvbixcbiAgICAgICAgUmVtb3ZlQnV0dG9uLFxuICAgIH07XG59XG5leHBvcnQgZGVmYXVsdCBidXR0b25UZW1wbGF0ZXM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuLyoqIFRoZSBgRGVzY3JpcHRpb25GaWVsZGAgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGRlc2NyaXB0aW9uIG9mIGEgZmllbGRcbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYERlc2NyaXB0aW9uRmllbGRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERlc2NyaXB0aW9uRmllbGQocHJvcHMpIHtcbiAgICBjb25zdCB7IGlkLCBkZXNjcmlwdGlvbiB9ID0gcHJvcHM7XG4gICAgaWYgKCFkZXNjcmlwdGlvbikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBkZXNjcmlwdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIChfanN4KFwicFwiLCB7IGlkOiBpZCwgY2xhc3NOYW1lOiAnZmllbGQtZGVzY3JpcHRpb24nLCBjaGlsZHJlbjogZGVzY3JpcHRpb24gfSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgaWQ6IGlkLCBjbGFzc05hbWU6ICdmaWVsZC1kZXNjcmlwdGlvbicsIGNoaWxkcmVuOiBkZXNjcmlwdGlvbiB9KSk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGVzY3JpcHRpb25GaWVsZC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgVHJhbnNsYXRhYmxlU3RyaW5nLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYEVycm9yTGlzdGAgY29tcG9uZW50IGlzIHRoZSB0ZW1wbGF0ZSB0aGF0IHJlbmRlcnMgdGhlIGFsbCB0aGUgZXJyb3JzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmllbGRzIGluIHRoZSBgRm9ybWBcbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYEVycm9yTGlzdFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRXJyb3JMaXN0KHsgZXJyb3JzLCByZWdpc3RyeSwgfSkge1xuICAgIGNvbnN0IHsgdHJhbnNsYXRlU3RyaW5nIH0gPSByZWdpc3RyeTtcbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAncGFuZWwgcGFuZWwtZGFuZ2VyIGVycm9ycycsIGNoaWxkcmVuOiBbX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogJ3BhbmVsLWhlYWRpbmcnLCBjaGlsZHJlbjogX2pzeChcImgzXCIsIHsgY2xhc3NOYW1lOiAncGFuZWwtdGl0bGUnLCBjaGlsZHJlbjogdHJhbnNsYXRlU3RyaW5nKFRyYW5zbGF0YWJsZVN0cmluZy5FcnJvcnNMYWJlbCkgfSkgfSksIF9qc3goXCJ1bFwiLCB7IGNsYXNzTmFtZTogJ2xpc3QtZ3JvdXAnLCBjaGlsZHJlbjogZXJyb3JzLm1hcCgoZXJyb3IsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChfanN4KFwibGlcIiwgeyBjbGFzc05hbWU6ICdsaXN0LWdyb3VwLWl0ZW0gdGV4dC1kYW5nZXInLCBjaGlsZHJlbjogZXJyb3Iuc3RhY2sgfSwgaSkpO1xuICAgICAgICAgICAgICAgIH0pIH0pXSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1FcnJvckxpc3QuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IFJFUVVJUkVEX0ZJRUxEX1NZTUJPTCA9ICcqJztcbi8qKiBSZW5kZXJzIGEgbGFiZWwgZm9yIGEgZmllbGRcbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYExhYmVsUHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMYWJlbChwcm9wcykge1xuICAgIGNvbnN0IHsgbGFiZWwsIHJlcXVpcmVkLCBpZCB9ID0gcHJvcHM7XG4gICAgaWYgKCFsYWJlbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIChfanN4cyhcImxhYmVsXCIsIHsgY2xhc3NOYW1lOiAnY29udHJvbC1sYWJlbCcsIGh0bWxGb3I6IGlkLCBjaGlsZHJlbjogW2xhYmVsLCByZXF1aXJlZCAmJiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogJ3JlcXVpcmVkJywgY2hpbGRyZW46IFJFUVVJUkVEX0ZJRUxEX1NZTUJPTCB9KV0gfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TGFiZWwuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGdldFRlbXBsYXRlLCBnZXRVaU9wdGlvbnMsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuaW1wb3J0IExhYmVsIGZyb20gJy4vTGFiZWwnO1xuLyoqIFRoZSBgRmllbGRUZW1wbGF0ZWAgY29tcG9uZW50IGlzIHRoZSB0ZW1wbGF0ZSB1c2VkIGJ5IGBTY2hlbWFGaWVsZGAgdG8gcmVuZGVyIGFueSBmaWVsZC4gSXQgcmVuZGVycyB0aGUgZmllbGRcbiAqIGNvbnRlbnQsIChsYWJlbCwgZGVzY3JpcHRpb24sIGNoaWxkcmVuLCBlcnJvcnMgYW5kIGhlbHApIGluc2lkZSBvZiBhIGBXcmFwSWZBZGRpdGlvbmFsYCBjb21wb25lbnQuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBGaWVsZFRlbXBsYXRlUHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBGaWVsZFRlbXBsYXRlKHByb3BzKSB7XG4gICAgY29uc3QgeyBpZCwgbGFiZWwsIGNoaWxkcmVuLCBlcnJvcnMsIGhlbHAsIGRlc2NyaXB0aW9uLCBoaWRkZW4sIHJlcXVpcmVkLCBkaXNwbGF5TGFiZWwsIHJlZ2lzdHJ5LCB1aVNjaGVtYSB9ID0gcHJvcHM7XG4gICAgY29uc3QgdWlPcHRpb25zID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hKTtcbiAgICBjb25zdCBXcmFwSWZBZGRpdGlvbmFsVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnV3JhcElmQWRkaXRpb25hbFRlbXBsYXRlJywgcmVnaXN0cnksIHVpT3B0aW9ucyk7XG4gICAgaWYgKGhpZGRlbikge1xuICAgICAgICByZXR1cm4gX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogJ2hpZGRlbicsIGNoaWxkcmVuOiBjaGlsZHJlbiB9KTtcbiAgICB9XG4gICAgcmV0dXJuIChfanN4cyhXcmFwSWZBZGRpdGlvbmFsVGVtcGxhdGUsIHsgLi4ucHJvcHMsIGNoaWxkcmVuOiBbZGlzcGxheUxhYmVsICYmIF9qc3goTGFiZWwsIHsgbGFiZWw6IGxhYmVsLCByZXF1aXJlZDogcmVxdWlyZWQsIGlkOiBpZCB9KSwgZGlzcGxheUxhYmVsICYmIGRlc2NyaXB0aW9uID8gZGVzY3JpcHRpb24gOiBudWxsLCBjaGlsZHJlbiwgZXJyb3JzLCBoZWxwXSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GaWVsZFRlbXBsYXRlLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBlcnJvcklkIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgRmllbGRFcnJvclRlbXBsYXRlYCBjb21wb25lbnQgcmVuZGVycyB0aGUgZXJyb3JzIGxvY2FsIHRvIHRoZSBwYXJ0aWN1bGFyIGZpZWxkXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBGaWVsZEVycm9yUHJvcHNgIGZvciB0aGUgZXJyb3JzIGJlaW5nIHJlbmRlcmVkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEZpZWxkRXJyb3JUZW1wbGF0ZShwcm9wcykge1xuICAgIGNvbnN0IHsgZXJyb3JzID0gW10sIGlkU2NoZW1hIH0gPSBwcm9wcztcbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgaWQgPSBlcnJvcklkKGlkU2NoZW1hKTtcbiAgICByZXR1cm4gKF9qc3goXCJkaXZcIiwgeyBjaGlsZHJlbjogX2pzeChcInVsXCIsIHsgaWQ6IGlkLCBjbGFzc05hbWU6ICdlcnJvci1kZXRhaWwgYnMtY2FsbG91dCBicy1jYWxsb3V0LWluZm8nLCBjaGlsZHJlbjogZXJyb3JzXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoZWxlbSkgPT4gISFlbGVtKVxuICAgICAgICAgICAgICAgIC5tYXAoKGVycm9yLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoX2pzeChcImxpXCIsIHsgY2xhc3NOYW1lOiAndGV4dC1kYW5nZXInLCBjaGlsZHJlbjogZXJyb3IgfSwgaW5kZXgpKTtcbiAgICAgICAgICAgIH0pIH0pIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZpZWxkRXJyb3JUZW1wbGF0ZS5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgaGVscElkIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgRmllbGRIZWxwVGVtcGxhdGVgIGNvbXBvbmVudCByZW5kZXJzIGFueSBoZWxwIGRlc2lyZWQgZm9yIGEgZmllbGRcbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYEZpZWxkSGVscFByb3BzYCB0byBiZSByZW5kZXJlZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBGaWVsZEhlbHBUZW1wbGF0ZShwcm9wcykge1xuICAgIGNvbnN0IHsgaWRTY2hlbWEsIGhlbHAgfSA9IHByb3BzO1xuICAgIGlmICghaGVscCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgaWQgPSBoZWxwSWQoaWRTY2hlbWEpO1xuICAgIGlmICh0eXBlb2YgaGVscCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIChfanN4KFwicFwiLCB7IGlkOiBpZCwgY2xhc3NOYW1lOiAnaGVscC1ibG9jaycsIGNoaWxkcmVuOiBoZWxwIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgaWQ6IGlkLCBjbGFzc05hbWU6ICdoZWxwLWJsb2NrJywgY2hpbGRyZW46IGhlbHAgfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RmllbGRIZWxwVGVtcGxhdGUuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGNhbkV4cGFuZCwgZGVzY3JpcHRpb25JZCwgZ2V0VGVtcGxhdGUsIGdldFVpT3B0aW9ucywgdGl0bGVJZCwgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBPYmplY3RGaWVsZFRlbXBsYXRlYCBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciBhbGwgdGhlIGlubmVyIHByb3BlcnRpZXMgb2YgYW4gb2JqZWN0IGFsb25nIHdpdGggdGhlXG4gKiB0aXRsZSBhbmQgZGVzY3JpcHRpb24gaWYgYXZhaWxhYmxlLiBJZiB0aGUgb2JqZWN0IGlzIGV4cGFuZGFibGUsIHRoZW4gYW4gYEFkZEJ1dHRvbmAgaXMgYWxzbyByZW5kZXJlZCBhZnRlciBhbGxcbiAqIHRoZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgT2JqZWN0RmllbGRUZW1wbGF0ZVByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gT2JqZWN0RmllbGRUZW1wbGF0ZShwcm9wcykge1xuICAgIGNvbnN0IHsgZGVzY3JpcHRpb24sIGRpc2FibGVkLCBmb3JtRGF0YSwgaWRTY2hlbWEsIG9uQWRkQ2xpY2ssIHByb3BlcnRpZXMsIHJlYWRvbmx5LCByZWdpc3RyeSwgcmVxdWlyZWQsIHNjaGVtYSwgdGl0bGUsIHVpU2NoZW1hLCB9ID0gcHJvcHM7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSk7XG4gICAgY29uc3QgVGl0bGVGaWVsZFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ1RpdGxlRmllbGRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICBjb25zdCBEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnRGVzY3JpcHRpb25GaWVsZFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIC8vIEJ1dHRvbiB0ZW1wbGF0ZXMgYXJlIG5vdCBvdmVycmlkZGVuIGluIHRoZSB1aVNjaGVtYVxuICAgIGNvbnN0IHsgQnV0dG9uVGVtcGxhdGVzOiB7IEFkZEJ1dHRvbiB9LCB9ID0gcmVnaXN0cnkudGVtcGxhdGVzO1xuICAgIHJldHVybiAoX2pzeHMoXCJmaWVsZHNldFwiLCB7IGlkOiBpZFNjaGVtYS4kaWQsIGNoaWxkcmVuOiBbdGl0bGUgJiYgKF9qc3goVGl0bGVGaWVsZFRlbXBsYXRlLCB7IGlkOiB0aXRsZUlkKGlkU2NoZW1hKSwgdGl0bGU6IHRpdGxlLCByZXF1aXJlZDogcmVxdWlyZWQsIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSksIGRlc2NyaXB0aW9uICYmIChfanN4KERlc2NyaXB0aW9uRmllbGRUZW1wbGF0ZSwgeyBpZDogZGVzY3JpcHRpb25JZChpZFNjaGVtYSksIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKSwgcHJvcGVydGllcy5tYXAoKHByb3ApID0+IHByb3AuY29udGVudCksIGNhbkV4cGFuZChzY2hlbWEsIHVpU2NoZW1hLCBmb3JtRGF0YSkgJiYgKF9qc3goQWRkQnV0dG9uLCB7IGNsYXNzTmFtZTogJ29iamVjdC1wcm9wZXJ0eS1leHBhbmQnLCBvbkNsaWNrOiBvbkFkZENsaWNrKHNjaGVtYSksIGRpc2FibGVkOiBkaXNhYmxlZCB8fCByZWFkb25seSwgdWlTY2hlbWE6IHVpU2NoZW1hLCByZWdpc3RyeTogcmVnaXN0cnkgfSkpXSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1PYmplY3RGaWVsZFRlbXBsYXRlLmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBSRVFVSVJFRF9GSUVMRF9TWU1CT0wgPSAnKic7XG4vKiogVGhlIGBUaXRsZUZpZWxkYCBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgdGl0bGUgb2YgYSBmaWVsZFxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgVGl0bGVGaWVsZFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVGl0bGVGaWVsZChwcm9wcykge1xuICAgIGNvbnN0IHsgaWQsIHRpdGxlLCByZXF1aXJlZCB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIChfanN4cyhcImxlZ2VuZFwiLCB7IGlkOiBpZCwgY2hpbGRyZW46IFt0aXRsZSwgcmVxdWlyZWQgJiYgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6ICdyZXF1aXJlZCcsIGNoaWxkcmVuOiBSRVFVSVJFRF9GSUVMRF9TWU1CT0wgfSldIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRpdGxlRmllbGQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IFRyYW5zbGF0YWJsZVN0cmluZyB9IGZyb20gJ0ByanNmL3V0aWxzJztcbmltcG9ydCBNYXJrZG93biBmcm9tICdtYXJrZG93bi10by1qc3gnO1xuLyoqIFRoZSBgVW5zdXBwb3J0ZWRGaWVsZGAgY29tcG9uZW50IGlzIHVzZWQgdG8gcmVuZGVyIGEgZmllbGQgaW4gdGhlIHNjaGVtYSBpcyBvbmUgdGhhdCBpcyBub3Qgc3VwcG9ydGVkIGJ5XG4gKiByZWFjdC1qc29uc2NoZW1hLWZvcm0uXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBGaWVsZFByb3BzYCBmb3IgdGhpcyB0ZW1wbGF0ZVxuICovXG5mdW5jdGlvbiBVbnN1cHBvcnRlZEZpZWxkKHByb3BzKSB7XG4gICAgY29uc3QgeyBzY2hlbWEsIGlkU2NoZW1hLCByZWFzb24sIHJlZ2lzdHJ5IH0gPSBwcm9wcztcbiAgICBjb25zdCB7IHRyYW5zbGF0ZVN0cmluZyB9ID0gcmVnaXN0cnk7XG4gICAgbGV0IHRyYW5zbGF0ZUVudW0gPSBUcmFuc2xhdGFibGVTdHJpbmcuVW5zdXBwb3J0ZWRGaWVsZDtcbiAgICBjb25zdCB0cmFuc2xhdGVQYXJhbXMgPSBbXTtcbiAgICBpZiAoaWRTY2hlbWEgJiYgaWRTY2hlbWEuJGlkKSB7XG4gICAgICAgIHRyYW5zbGF0ZUVudW0gPSBUcmFuc2xhdGFibGVTdHJpbmcuVW5zdXBwb3J0ZWRGaWVsZFdpdGhJZDtcbiAgICAgICAgdHJhbnNsYXRlUGFyYW1zLnB1c2goaWRTY2hlbWEuJGlkKTtcbiAgICB9XG4gICAgaWYgKHJlYXNvbikge1xuICAgICAgICB0cmFuc2xhdGVFbnVtID1cbiAgICAgICAgICAgIHRyYW5zbGF0ZUVudW0gPT09IFRyYW5zbGF0YWJsZVN0cmluZy5VbnN1cHBvcnRlZEZpZWxkXG4gICAgICAgICAgICAgICAgPyBUcmFuc2xhdGFibGVTdHJpbmcuVW5zdXBwb3J0ZWRGaWVsZFdpdGhSZWFzb25cbiAgICAgICAgICAgICAgICA6IFRyYW5zbGF0YWJsZVN0cmluZy5VbnN1cHBvcnRlZEZpZWxkV2l0aElkQW5kUmVhc29uO1xuICAgICAgICB0cmFuc2xhdGVQYXJhbXMucHVzaChyZWFzb24pO1xuICAgIH1cbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAndW5zdXBwb3J0ZWQtZmllbGQnLCBjaGlsZHJlbjogW19qc3goXCJwXCIsIHsgY2hpbGRyZW46IF9qc3goTWFya2Rvd24sIHsgb3B0aW9uczogeyBkaXNhYmxlUGFyc2luZ1Jhd0hUTUw6IHRydWUgfSwgY2hpbGRyZW46IHRyYW5zbGF0ZVN0cmluZyh0cmFuc2xhdGVFbnVtLCB0cmFuc2xhdGVQYXJhbXMpIH0pIH0pLCBzY2hlbWEgJiYgX2pzeChcInByZVwiLCB7IGNoaWxkcmVuOiBKU09OLnN0cmluZ2lmeShzY2hlbWEsIG51bGwsIDIpIH0pXSB9KSk7XG59XG5leHBvcnQgZGVmYXVsdCBVbnN1cHBvcnRlZEZpZWxkO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VW5zdXBwb3J0ZWRGaWVsZC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgQURESVRJT05BTF9QUk9QRVJUWV9GTEFHLCBUcmFuc2xhdGFibGVTdHJpbmcsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuaW1wb3J0IExhYmVsIGZyb20gJy4vRmllbGRUZW1wbGF0ZS9MYWJlbCc7XG4vKiogVGhlIGBXcmFwSWZBZGRpdGlvbmFsYCBjb21wb25lbnQgaXMgdXNlZCBieSB0aGUgYEZpZWxkVGVtcGxhdGVgIHRvIHJlbmFtZSwgb3IgcmVtb3ZlIHByb3BlcnRpZXMgdGhhdCBhcmVcbiAqIHBhcnQgb2YgYW4gYGFkZGl0aW9uYWxQcm9wZXJ0aWVzYCBwYXJ0IG9mIGEgc2NoZW1hLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV3JhcElmQWRkaXRpb25hbFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gV3JhcElmQWRkaXRpb25hbFRlbXBsYXRlKHByb3BzKSB7XG4gICAgY29uc3QgeyBpZCwgY2xhc3NOYW1lcywgc3R5bGUsIGRpc2FibGVkLCBsYWJlbCwgb25LZXlDaGFuZ2UsIG9uRHJvcFByb3BlcnR5Q2xpY2ssIHJlYWRvbmx5LCByZXF1aXJlZCwgc2NoZW1hLCBjaGlsZHJlbiwgdWlTY2hlbWEsIHJlZ2lzdHJ5LCB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyB0ZW1wbGF0ZXMsIHRyYW5zbGF0ZVN0cmluZyB9ID0gcmVnaXN0cnk7XG4gICAgLy8gQnV0dG9uIHRlbXBsYXRlcyBhcmUgbm90IG92ZXJyaWRkZW4gaW4gdGhlIHVpU2NoZW1hXG4gICAgY29uc3QgeyBSZW1vdmVCdXR0b24gfSA9IHRlbXBsYXRlcy5CdXR0b25UZW1wbGF0ZXM7XG4gICAgY29uc3Qga2V5TGFiZWwgPSB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLktleUxhYmVsLCBbbGFiZWxdKTtcbiAgICBjb25zdCBhZGRpdGlvbmFsID0gQURESVRJT05BTF9QUk9QRVJUWV9GTEFHIGluIHNjaGVtYTtcbiAgICBpZiAoIWFkZGl0aW9uYWwpIHtcbiAgICAgICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWVzLCBzdHlsZTogc3R5bGUsIGNoaWxkcmVuOiBjaGlsZHJlbiB9KSk7XG4gICAgfVxuICAgIHJldHVybiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcywgc3R5bGU6IHN0eWxlLCBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdyb3cnLCBjaGlsZHJlbjogW19qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdjb2wteHMtNSBmb3JtLWFkZGl0aW9uYWwnLCBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdmb3JtLWdyb3VwJywgY2hpbGRyZW46IFtfanN4KExhYmVsLCB7IGxhYmVsOiBrZXlMYWJlbCwgcmVxdWlyZWQ6IHJlcXVpcmVkLCBpZDogYCR7aWR9LWtleWAgfSksIF9qc3goXCJpbnB1dFwiLCB7IGNsYXNzTmFtZTogJ2Zvcm0tY29udHJvbCcsIHR5cGU6ICd0ZXh0JywgaWQ6IGAke2lkfS1rZXlgLCBvbkJsdXI6ICh7IHRhcmdldCB9KSA9PiBvbktleUNoYW5nZSh0YXJnZXQgJiYgdGFyZ2V0LnZhbHVlKSwgZGVmYXVsdFZhbHVlOiBsYWJlbCB9KV0gfSkgfSksIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdmb3JtLWFkZGl0aW9uYWwgZm9ybS1ncm91cCBjb2wteHMtNScsIGNoaWxkcmVuOiBjaGlsZHJlbiB9KSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogJ2NvbC14cy0yJywgY2hpbGRyZW46IF9qc3goUmVtb3ZlQnV0dG9uLCB7IGNsYXNzTmFtZTogJ2FycmF5LWl0ZW0tcmVtb3ZlIGJ0bi1ibG9jaycsIHN0eWxlOiB7IGJvcmRlcjogJzAnIH0sIGRpc2FibGVkOiBkaXNhYmxlZCB8fCByZWFkb25seSwgb25DbGljazogb25Ecm9wUHJvcGVydHlDbGljayhsYWJlbCksIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pIH0pXSB9KSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1XcmFwSWZBZGRpdGlvbmFsVGVtcGxhdGUuanMubWFwIiwiaW1wb3J0IEFycmF5RmllbGREZXNjcmlwdGlvblRlbXBsYXRlIGZyb20gJy4vQXJyYXlGaWVsZERlc2NyaXB0aW9uVGVtcGxhdGUnO1xuaW1wb3J0IEFycmF5RmllbGRJdGVtVGVtcGxhdGUgZnJvbSAnLi9BcnJheUZpZWxkSXRlbVRlbXBsYXRlJztcbmltcG9ydCBBcnJheUZpZWxkVGVtcGxhdGUgZnJvbSAnLi9BcnJheUZpZWxkVGVtcGxhdGUnO1xuaW1wb3J0IEFycmF5RmllbGRUaXRsZVRlbXBsYXRlIGZyb20gJy4vQXJyYXlGaWVsZFRpdGxlVGVtcGxhdGUnO1xuaW1wb3J0IEJhc2VJbnB1dFRlbXBsYXRlIGZyb20gJy4vQmFzZUlucHV0VGVtcGxhdGUnO1xuaW1wb3J0IEJ1dHRvblRlbXBsYXRlcyBmcm9tICcuL0J1dHRvblRlbXBsYXRlcyc7XG5pbXBvcnQgRGVzY3JpcHRpb25GaWVsZCBmcm9tICcuL0Rlc2NyaXB0aW9uRmllbGQnO1xuaW1wb3J0IEVycm9yTGlzdCBmcm9tICcuL0Vycm9yTGlzdCc7XG5pbXBvcnQgRmllbGRUZW1wbGF0ZSBmcm9tICcuL0ZpZWxkVGVtcGxhdGUnO1xuaW1wb3J0IEZpZWxkRXJyb3JUZW1wbGF0ZSBmcm9tICcuL0ZpZWxkRXJyb3JUZW1wbGF0ZSc7XG5pbXBvcnQgRmllbGRIZWxwVGVtcGxhdGUgZnJvbSAnLi9GaWVsZEhlbHBUZW1wbGF0ZSc7XG5pbXBvcnQgT2JqZWN0RmllbGRUZW1wbGF0ZSBmcm9tICcuL09iamVjdEZpZWxkVGVtcGxhdGUnO1xuaW1wb3J0IFRpdGxlRmllbGQgZnJvbSAnLi9UaXRsZUZpZWxkJztcbmltcG9ydCBVbnN1cHBvcnRlZEZpZWxkIGZyb20gJy4vVW5zdXBwb3J0ZWRGaWVsZCc7XG5pbXBvcnQgV3JhcElmQWRkaXRpb25hbFRlbXBsYXRlIGZyb20gJy4vV3JhcElmQWRkaXRpb25hbFRlbXBsYXRlJztcbmZ1bmN0aW9uIHRlbXBsYXRlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBBcnJheUZpZWxkRGVzY3JpcHRpb25UZW1wbGF0ZSxcbiAgICAgICAgQXJyYXlGaWVsZEl0ZW1UZW1wbGF0ZSxcbiAgICAgICAgQXJyYXlGaWVsZFRlbXBsYXRlLFxuICAgICAgICBBcnJheUZpZWxkVGl0bGVUZW1wbGF0ZSxcbiAgICAgICAgQnV0dG9uVGVtcGxhdGVzOiBCdXR0b25UZW1wbGF0ZXMoKSxcbiAgICAgICAgQmFzZUlucHV0VGVtcGxhdGUsXG4gICAgICAgIERlc2NyaXB0aW9uRmllbGRUZW1wbGF0ZTogRGVzY3JpcHRpb25GaWVsZCxcbiAgICAgICAgRXJyb3JMaXN0VGVtcGxhdGU6IEVycm9yTGlzdCxcbiAgICAgICAgRmllbGRUZW1wbGF0ZSxcbiAgICAgICAgRmllbGRFcnJvclRlbXBsYXRlLFxuICAgICAgICBGaWVsZEhlbHBUZW1wbGF0ZSxcbiAgICAgICAgT2JqZWN0RmllbGRUZW1wbGF0ZSxcbiAgICAgICAgVGl0bGVGaWVsZFRlbXBsYXRlOiBUaXRsZUZpZWxkLFxuICAgICAgICBVbnN1cHBvcnRlZEZpZWxkVGVtcGxhdGU6IFVuc3VwcG9ydGVkRmllbGQsXG4gICAgICAgIFdyYXBJZkFkZGl0aW9uYWxUZW1wbGF0ZSxcbiAgICB9O1xufVxuZXhwb3J0IGRlZmF1bHQgdGVtcGxhdGVzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZHVjZXIsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgYXJpYURlc2NyaWJlZEJ5SWRzLCBkYXRlUmFuZ2VPcHRpb25zLCBwYXJzZURhdGVTdHJpbmcsIHRvRGF0ZVN0cmluZywgVHJhbnNsYXRhYmxlU3RyaW5nLCBnZXREYXRlRWxlbWVudFByb3BzLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbmZ1bmN0aW9uIHJlYWR5Rm9yQ2hhbmdlKHN0YXRlKSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoc3RhdGUpLmV2ZXJ5KCh2YWx1ZSkgPT4gdmFsdWUgIT09IC0xKTtcbn1cbmZ1bmN0aW9uIERhdGVFbGVtZW50KHsgdHlwZSwgcmFuZ2UsIHZhbHVlLCBzZWxlY3QsIHJvb3RJZCwgbmFtZSwgZGlzYWJsZWQsIHJlYWRvbmx5LCBhdXRvZm9jdXMsIHJlZ2lzdHJ5LCBvbkJsdXIsIG9uRm9jdXMsIH0pIHtcbiAgICBjb25zdCBpZCA9IHJvb3RJZCArICdfJyArIHR5cGU7XG4gICAgY29uc3QgeyBTZWxlY3RXaWRnZXQgfSA9IHJlZ2lzdHJ5LndpZGdldHM7XG4gICAgcmV0dXJuIChfanN4KFNlbGVjdFdpZGdldCwgeyBzY2hlbWE6IHsgdHlwZTogJ2ludGVnZXInIH0sIGlkOiBpZCwgbmFtZTogbmFtZSwgY2xhc3NOYW1lOiAnZm9ybS1jb250cm9sJywgb3B0aW9uczogeyBlbnVtT3B0aW9uczogZGF0ZVJhbmdlT3B0aW9ucyhyYW5nZVswXSwgcmFuZ2VbMV0pIH0sIHBsYWNlaG9sZGVyOiB0eXBlLCB2YWx1ZTogdmFsdWUsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZG9ubHk6IHJlYWRvbmx5LCBhdXRvZm9jdXM6IGF1dG9mb2N1cywgb25DaGFuZ2U6ICh2YWx1ZSkgPT4gc2VsZWN0KHR5cGUsIHZhbHVlKSwgb25CbHVyOiBvbkJsdXIsIG9uRm9jdXM6IG9uRm9jdXMsIHJlZ2lzdHJ5OiByZWdpc3RyeSwgbGFiZWw6ICcnLCBcImFyaWEtZGVzY3JpYmVkYnlcIjogYXJpYURlc2NyaWJlZEJ5SWRzKHJvb3RJZCkgfSkpO1xufVxuLyoqIFRoZSBgQWx0RGF0ZVdpZGdldGAgaXMgYW4gYWx0ZXJuYXRpdmUgd2lkZ2V0IGZvciByZW5kZXJpbmcgZGF0ZSBwcm9wZXJ0aWVzLlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIEFsdERhdGVXaWRnZXQoeyB0aW1lID0gZmFsc2UsIGRpc2FibGVkID0gZmFsc2UsIHJlYWRvbmx5ID0gZmFsc2UsIGF1dG9mb2N1cyA9IGZhbHNlLCBvcHRpb25zLCBpZCwgbmFtZSwgcmVnaXN0cnksIG9uQmx1ciwgb25Gb2N1cywgb25DaGFuZ2UsIHZhbHVlLCB9KSB7XG4gICAgY29uc3QgeyB0cmFuc2xhdGVTdHJpbmcgfSA9IHJlZ2lzdHJ5O1xuICAgIGNvbnN0IFtsYXN0VmFsdWUsIHNldExhc3RWYWx1ZV0gPSB1c2VTdGF0ZSh2YWx1ZSk7XG4gICAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VSZWR1Y2VyKChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLnN0YXRlLCAuLi5hY3Rpb24gfTtcbiAgICB9LCBwYXJzZURhdGVTdHJpbmcodmFsdWUsIHRpbWUpKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZVZhbHVlID0gdG9EYXRlU3RyaW5nKHN0YXRlLCB0aW1lKTtcbiAgICAgICAgaWYgKHJlYWR5Rm9yQ2hhbmdlKHN0YXRlKSAmJiBzdGF0ZVZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgLy8gVGhlIHVzZXIgY2hhbmdlZCB0aGUgZGF0ZSB0byBhIG5ldyB2YWxpZCBkYXRhIHZpYSB0aGUgY29tYm9ib3hlcywgc28gY2FsbCBvbkNoYW5nZVxuICAgICAgICAgICAgb25DaGFuZ2Uoc3RhdGVWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobGFzdFZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgLy8gV2UgZ290IGEgbmV3IHZhbHVlIGluIHRoZSBwcm9wc1xuICAgICAgICAgICAgc2V0TGFzdFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgIHNldFN0YXRlKHBhcnNlRGF0ZVN0cmluZyh2YWx1ZSwgdGltZSkpO1xuICAgICAgICB9XG4gICAgfSwgW3RpbWUsIHZhbHVlLCBvbkNoYW5nZSwgc3RhdGUsIGxhc3RWYWx1ZV0pO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChwcm9wZXJ0eSwgdmFsdWUpID0+IHtcbiAgICAgICAgc2V0U3RhdGUoeyBbcHJvcGVydHldOiB2YWx1ZSB9KTtcbiAgICB9LCBbXSk7XG4gICAgY29uc3QgaGFuZGxlU2V0Tm93ID0gdXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChkaXNhYmxlZCB8fCByZWFkb25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5leHRTdGF0ZSA9IHBhcnNlRGF0ZVN0cmluZyhuZXcgRGF0ZSgpLnRvSlNPTigpLCB0aW1lKTtcbiAgICAgICAgb25DaGFuZ2UodG9EYXRlU3RyaW5nKG5leHRTdGF0ZSwgdGltZSkpO1xuICAgIH0sIFtkaXNhYmxlZCwgcmVhZG9ubHksIHRpbWVdKTtcbiAgICBjb25zdCBoYW5kbGVDbGVhciA9IHVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoZGlzYWJsZWQgfHwgcmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZSh1bmRlZmluZWQpO1xuICAgIH0sIFtkaXNhYmxlZCwgcmVhZG9ubHksIG9uQ2hhbmdlXSk7XG4gICAgcmV0dXJuIChfanN4cyhcInVsXCIsIHsgY2xhc3NOYW1lOiAnbGlzdC1pbmxpbmUnLCBjaGlsZHJlbjogW2dldERhdGVFbGVtZW50UHJvcHMoc3RhdGUsIHRpbWUsIG9wdGlvbnMueWVhcnNSYW5nZSwgb3B0aW9ucy5mb3JtYXQpLm1hcCgoZWxlbVByb3BzLCBpKSA9PiAoX2pzeChcImxpXCIsIHsgY2xhc3NOYW1lOiAnbGlzdC1pbmxpbmUtaXRlbScsIGNoaWxkcmVuOiBfanN4KERhdGVFbGVtZW50LCB7IHJvb3RJZDogaWQsIG5hbWU6IG5hbWUsIHNlbGVjdDogaGFuZGxlQ2hhbmdlLCAuLi5lbGVtUHJvcHMsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZG9ubHk6IHJlYWRvbmx5LCByZWdpc3RyeTogcmVnaXN0cnksIG9uQmx1cjogb25CbHVyLCBvbkZvY3VzOiBvbkZvY3VzLCBhdXRvZm9jdXM6IGF1dG9mb2N1cyAmJiBpID09PSAwIH0pIH0sIGkpKSksIChvcHRpb25zLmhpZGVOb3dCdXR0b24gIT09ICd1bmRlZmluZWQnID8gIW9wdGlvbnMuaGlkZU5vd0J1dHRvbiA6IHRydWUpICYmIChfanN4KFwibGlcIiwgeyBjbGFzc05hbWU6ICdsaXN0LWlubGluZS1pdGVtJywgY2hpbGRyZW46IF9qc3goXCJhXCIsIHsgaHJlZjogJyMnLCBjbGFzc05hbWU6ICdidG4gYnRuLWluZm8gYnRuLW5vdycsIG9uQ2xpY2s6IGhhbmRsZVNldE5vdywgY2hpbGRyZW46IHRyYW5zbGF0ZVN0cmluZyhUcmFuc2xhdGFibGVTdHJpbmcuTm93TGFiZWwpIH0pIH0pKSwgKG9wdGlvbnMuaGlkZUNsZWFyQnV0dG9uICE9PSAndW5kZWZpbmVkJyA/ICFvcHRpb25zLmhpZGVDbGVhckJ1dHRvbiA6IHRydWUpICYmIChfanN4KFwibGlcIiwgeyBjbGFzc05hbWU6ICdsaXN0LWlubGluZS1pdGVtJywgY2hpbGRyZW46IF9qc3goXCJhXCIsIHsgaHJlZjogJyMnLCBjbGFzc05hbWU6ICdidG4gYnRuLXdhcm5pbmcgYnRuLWNsZWFyJywgb25DbGljazogaGFuZGxlQ2xlYXIsIGNoaWxkcmVuOiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLkNsZWFyTGFiZWwpIH0pIH0pKV0gfSkpO1xufVxuZXhwb3J0IGRlZmF1bHQgQWx0RGF0ZVdpZGdldDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFsdERhdGVXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbi8qKiBUaGUgYEFsdERhdGVUaW1lV2lkZ2V0YCBpcyBhbiBhbHRlcm5hdGl2ZSB3aWRnZXQgZm9yIHJlbmRlcmluZyBkYXRldGltZSBwcm9wZXJ0aWVzLlxuICogIEl0IHVzZXMgdGhlIEFsdERhdGVXaWRnZXQgZm9yIHJlbmRlcmluZywgd2l0aCB0aGUgYHRpbWVgIHByb3Agc2V0IHRvIHRydWUgYnkgZGVmYXVsdC5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZnVuY3Rpb24gQWx0RGF0ZVRpbWVXaWRnZXQoeyB0aW1lID0gdHJ1ZSwgLi4ucHJvcHMgfSkge1xuICAgIGNvbnN0IHsgQWx0RGF0ZVdpZGdldCB9ID0gcHJvcHMucmVnaXN0cnkud2lkZ2V0cztcbiAgICByZXR1cm4gX2pzeChBbHREYXRlV2lkZ2V0LCB7IHRpbWU6IHRpbWUsIC4uLnByb3BzIH0pO1xufVxuZXhwb3J0IGRlZmF1bHQgQWx0RGF0ZVRpbWVXaWRnZXQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BbHREYXRlVGltZVdpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBhcmlhRGVzY3JpYmVkQnlJZHMsIGRlc2NyaXB0aW9uSWQsIGdldFRlbXBsYXRlLCBsYWJlbFZhbHVlLCBzY2hlbWFSZXF1aXJlc1RydWVWYWx1ZSwgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBDaGVja0JveFdpZGdldGAgaXMgYSB3aWRnZXQgZm9yIHJlbmRlcmluZyBib29sZWFuIHByb3BlcnRpZXMuXG4gKiAgSXQgaXMgdHlwaWNhbGx5IHVzZWQgdG8gcmVwcmVzZW50IGEgYm9vbGVhbi5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZnVuY3Rpb24gQ2hlY2tib3hXaWRnZXQoeyBzY2hlbWEsIHVpU2NoZW1hLCBvcHRpb25zLCBpZCwgdmFsdWUsIGRpc2FibGVkLCByZWFkb25seSwgbGFiZWwsIGhpZGVMYWJlbCwgYXV0b2ZvY3VzID0gZmFsc2UsIG9uQmx1ciwgb25Gb2N1cywgb25DaGFuZ2UsIHJlZ2lzdHJ5LCB9KSB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IERlc2NyaXB0aW9uRmllbGRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdEZXNjcmlwdGlvbkZpZWxkVGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgLy8gQmVjYXVzZSBhbiB1bmNoZWNrZWQgY2hlY2tib3ggd2lsbCBjYXVzZSBodG1sNSB2YWxpZGF0aW9uIHRvIGZhaWwsIG9ubHkgYWRkXG4gICAgLy8gdGhlIFwicmVxdWlyZWRcIiBhdHRyaWJ1dGUgaWYgdGhlIGZpZWxkIHZhbHVlIG11c3QgYmUgXCJ0cnVlXCIsIGR1ZSB0byB0aGVcbiAgICAvLyBcImNvbnN0XCIgb3IgXCJlbnVtXCIga2V5d29yZHNcbiAgICBjb25zdCByZXF1aXJlZCA9IHNjaGVtYVJlcXVpcmVzVHJ1ZVZhbHVlKHNjaGVtYSk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKGV2ZW50KSA9PiBvbkNoYW5nZShldmVudC50YXJnZXQuY2hlY2tlZCksIFtvbkNoYW5nZV0pO1xuICAgIGNvbnN0IGhhbmRsZUJsdXIgPSB1c2VDYWxsYmFjaygoZXZlbnQpID0+IG9uQmx1cihpZCwgZXZlbnQudGFyZ2V0LmNoZWNrZWQpLCBbb25CbHVyLCBpZF0pO1xuICAgIGNvbnN0IGhhbmRsZUZvY3VzID0gdXNlQ2FsbGJhY2soKGV2ZW50KSA9PiBvbkZvY3VzKGlkLCBldmVudC50YXJnZXQuY2hlY2tlZCksIFtvbkZvY3VzLCBpZF0pO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gKF9hID0gb3B0aW9ucy5kZXNjcmlwdGlvbikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogc2NoZW1hLmRlc2NyaXB0aW9uO1xuICAgIHJldHVybiAoX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGBjaGVja2JveCAke2Rpc2FibGVkIHx8IHJlYWRvbmx5ID8gJ2Rpc2FibGVkJyA6ICcnfWAsIGNoaWxkcmVuOiBbIWhpZGVMYWJlbCAmJiAhIWRlc2NyaXB0aW9uICYmIChfanN4KERlc2NyaXB0aW9uRmllbGRUZW1wbGF0ZSwgeyBpZDogZGVzY3JpcHRpb25JZChpZCksIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pKSwgX2pzeHMoXCJsYWJlbFwiLCB7IGNoaWxkcmVuOiBbX2pzeChcImlucHV0XCIsIHsgdHlwZTogJ2NoZWNrYm94JywgaWQ6IGlkLCBuYW1lOiBpZCwgY2hlY2tlZDogdHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyA/IGZhbHNlIDogdmFsdWUsIHJlcXVpcmVkOiByZXF1aXJlZCwgZGlzYWJsZWQ6IGRpc2FibGVkIHx8IHJlYWRvbmx5LCBhdXRvRm9jdXM6IGF1dG9mb2N1cywgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSwgb25CbHVyOiBoYW5kbGVCbHVyLCBvbkZvY3VzOiBoYW5kbGVGb2N1cywgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGFyaWFEZXNjcmliZWRCeUlkcyhpZCkgfSksIGxhYmVsVmFsdWUoX2pzeChcInNwYW5cIiwgeyBjaGlsZHJlbjogbGFiZWwgfSksIGhpZGVMYWJlbCldIH0pXSB9KSk7XG59XG5leHBvcnQgZGVmYXVsdCBDaGVja2JveFdpZGdldDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNoZWNrYm94V2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGFyaWFEZXNjcmliZWRCeUlkcywgZW51bU9wdGlvbnNEZXNlbGVjdFZhbHVlLCBlbnVtT3B0aW9uc0lzU2VsZWN0ZWQsIGVudW1PcHRpb25zU2VsZWN0VmFsdWUsIGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCwgb3B0aW9uSWQsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgQ2hlY2tib3hlc1dpZGdldGAgaXMgYSB3aWRnZXQgZm9yIHJlbmRlcmluZyBjaGVja2JveCBncm91cHMuXG4gKiAgSXQgaXMgdHlwaWNhbGx5IHVzZWQgdG8gcmVwcmVzZW50IGFuIGFycmF5IG9mIGVudW1zLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5mdW5jdGlvbiBDaGVja2JveGVzV2lkZ2V0KHsgaWQsIGRpc2FibGVkLCBvcHRpb25zOiB7IGlubGluZSA9IGZhbHNlLCBlbnVtT3B0aW9ucywgZW51bURpc2FibGVkLCBlbXB0eVZhbHVlIH0sIHZhbHVlLCBhdXRvZm9jdXMgPSBmYWxzZSwgcmVhZG9ubHksIG9uQ2hhbmdlLCBvbkJsdXIsIG9uRm9jdXMsIH0pIHtcbiAgICBjb25zdCBjaGVja2JveGVzVmFsdWVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgY29uc3QgaGFuZGxlQmx1ciA9IHVzZUNhbGxiYWNrKCh7IHRhcmdldCB9KSA9PiBvbkJsdXIoaWQsIGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCh0YXJnZXQgJiYgdGFyZ2V0LnZhbHVlLCBlbnVtT3B0aW9ucywgZW1wdHlWYWx1ZSkpLCBbb25CbHVyLCBpZF0pO1xuICAgIGNvbnN0IGhhbmRsZUZvY3VzID0gdXNlQ2FsbGJhY2soKHsgdGFyZ2V0IH0pID0+IG9uRm9jdXMoaWQsIGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCh0YXJnZXQgJiYgdGFyZ2V0LnZhbHVlLCBlbnVtT3B0aW9ucywgZW1wdHlWYWx1ZSkpLCBbb25Gb2N1cywgaWRdKTtcbiAgICByZXR1cm4gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdjaGVja2JveGVzJywgaWQ6IGlkLCBjaGlsZHJlbjogQXJyYXkuaXNBcnJheShlbnVtT3B0aW9ucykgJiZcbiAgICAgICAgICAgIGVudW1PcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrZWQgPSBlbnVtT3B0aW9uc0lzU2VsZWN0ZWQob3B0aW9uLnZhbHVlLCBjaGVja2JveGVzVmFsdWVzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtRGlzYWJsZWQgPSBBcnJheS5pc0FycmF5KGVudW1EaXNhYmxlZCkgJiYgZW51bURpc2FibGVkLmluZGV4T2Yob3B0aW9uLnZhbHVlKSAhPT0gLTE7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlzYWJsZWRDbHMgPSBkaXNhYmxlZCB8fCBpdGVtRGlzYWJsZWQgfHwgcmVhZG9ubHkgPyAnZGlzYWJsZWQnIDogJyc7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2UoZW51bU9wdGlvbnNTZWxlY3RWYWx1ZShpbmRleCwgY2hlY2tib3hlc1ZhbHVlcywgZW51bU9wdGlvbnMpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlKGVudW1PcHRpb25zRGVzZWxlY3RWYWx1ZShpbmRleCwgY2hlY2tib3hlc1ZhbHVlcywgZW51bU9wdGlvbnMpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgY2hlY2tib3ggPSAoX2pzeHMoXCJzcGFuXCIsIHsgY2hpbGRyZW46IFtfanN4KFwiaW5wdXRcIiwgeyB0eXBlOiAnY2hlY2tib3gnLCBpZDogb3B0aW9uSWQoaWQsIGluZGV4KSwgbmFtZTogaWQsIGNoZWNrZWQ6IGNoZWNrZWQsIHZhbHVlOiBTdHJpbmcoaW5kZXgpLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgaXRlbURpc2FibGVkIHx8IHJlYWRvbmx5LCBhdXRvRm9jdXM6IGF1dG9mb2N1cyAmJiBpbmRleCA9PT0gMCwgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSwgb25CbHVyOiBoYW5kbGVCbHVyLCBvbkZvY3VzOiBoYW5kbGVGb2N1cywgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGFyaWFEZXNjcmliZWRCeUlkcyhpZCkgfSksIF9qc3goXCJzcGFuXCIsIHsgY2hpbGRyZW46IG9wdGlvbi5sYWJlbCB9KV0gfSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpbmxpbmUgPyAoX2pzeChcImxhYmVsXCIsIHsgY2xhc3NOYW1lOiBgY2hlY2tib3gtaW5saW5lICR7ZGlzYWJsZWRDbHN9YCwgY2hpbGRyZW46IGNoZWNrYm94IH0sIGluZGV4KSkgOiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogYGNoZWNrYm94ICR7ZGlzYWJsZWRDbHN9YCwgY2hpbGRyZW46IF9qc3goXCJsYWJlbFwiLCB7IGNoaWxkcmVuOiBjaGVja2JveCB9KSB9LCBpbmRleCkpO1xuICAgICAgICAgICAgfSkgfSkpO1xufVxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hlc1dpZGdldDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNoZWNrYm94ZXNXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGdldFRlbXBsYXRlIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgQ29sb3JXaWRnZXRgIGNvbXBvbmVudCB1c2VzIHRoZSBgQmFzZUlucHV0VGVtcGxhdGVgIGNoYW5naW5nIHRoZSB0eXBlIHRvIGBjb2xvcmAgYW5kIGRpc2FibGVzIGl0IHdoZW4gaXQgaXNcbiAqIGVpdGhlciBkaXNhYmxlZCBvciByZWFkb25seS5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ29sb3JXaWRnZXQocHJvcHMpIHtcbiAgICBjb25zdCB7IGRpc2FibGVkLCByZWFkb25seSwgb3B0aW9ucywgcmVnaXN0cnkgfSA9IHByb3BzO1xuICAgIGNvbnN0IEJhc2VJbnB1dFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0Jhc2VJbnB1dFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIHJldHVybiBfanN4KEJhc2VJbnB1dFRlbXBsYXRlLCB7IHR5cGU6ICdjb2xvcicsIC4uLnByb3BzLCBkaXNhYmxlZDogZGlzYWJsZWQgfHwgcmVhZG9ubHkgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db2xvcldpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYERhdGVXaWRnZXRgIGNvbXBvbmVudCB1c2VzIHRoZSBgQmFzZUlucHV0VGVtcGxhdGVgIGNoYW5naW5nIHRoZSB0eXBlIHRvIGBkYXRlYCBhbmQgdHJhbnNmb3Jtc1xuICogdGhlIHZhbHVlIHRvIHVuZGVmaW5lZCB3aGVuIGl0IGlzIGZhbHN5IGR1cmluZyB0aGUgYG9uQ2hhbmdlYCBoYW5kbGluZy5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGF0ZVdpZGdldChwcm9wcykge1xuICAgIGNvbnN0IHsgb25DaGFuZ2UsIG9wdGlvbnMsIHJlZ2lzdHJ5IH0gPSBwcm9wcztcbiAgICBjb25zdCBCYXNlSW5wdXRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdCYXNlSW5wdXRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjaygodmFsdWUpID0+IG9uQ2hhbmdlKHZhbHVlIHx8IHVuZGVmaW5lZCksIFtvbkNoYW5nZV0pO1xuICAgIHJldHVybiBfanN4KEJhc2VJbnB1dFRlbXBsYXRlLCB7IHR5cGU6ICdkYXRlJywgLi4ucHJvcHMsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EYXRlV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSwgbG9jYWxUb1VUQywgdXRjVG9Mb2NhbCwgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBEYXRlVGltZVdpZGdldGAgY29tcG9uZW50IHVzZXMgdGhlIGBCYXNlSW5wdXRUZW1wbGF0ZWAgY2hhbmdpbmcgdGhlIHR5cGUgdG8gYGRhdGV0aW1lLWxvY2FsYCBhbmQgdHJhbnNmb3Jtc1xuICogdGhlIHZhbHVlIHRvL2Zyb20gdXRjIHVzaW5nIHRoZSBhcHByb3ByaWF0ZSB1dGlsaXR5IGZ1bmN0aW9ucy5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGF0ZVRpbWVXaWRnZXQocHJvcHMpIHtcbiAgICBjb25zdCB7IG9uQ2hhbmdlLCB2YWx1ZSwgb3B0aW9ucywgcmVnaXN0cnkgfSA9IHByb3BzO1xuICAgIGNvbnN0IEJhc2VJbnB1dFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0Jhc2VJbnB1dFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIHJldHVybiAoX2pzeChCYXNlSW5wdXRUZW1wbGF0ZSwgeyB0eXBlOiAnZGF0ZXRpbWUtbG9jYWwnLCAuLi5wcm9wcywgdmFsdWU6IHV0Y1RvTG9jYWwodmFsdWUpLCBvbkNoYW5nZTogKHZhbHVlKSA9PiBvbkNoYW5nZShsb2NhbFRvVVRDKHZhbHVlKSkgfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGF0ZVRpbWVXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGdldFRlbXBsYXRlIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgRW1haWxXaWRnZXRgIGNvbXBvbmVudCB1c2VzIHRoZSBgQmFzZUlucHV0VGVtcGxhdGVgIGNoYW5naW5nIHRoZSB0eXBlIHRvIGBlbWFpbGAuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEVtYWlsV2lkZ2V0KHByb3BzKSB7XG4gICAgY29uc3QgeyBvcHRpb25zLCByZWdpc3RyeSB9ID0gcHJvcHM7XG4gICAgY29uc3QgQmFzZUlucHV0VGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnQmFzZUlucHV0VGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIF9qc3goQmFzZUlucHV0VGVtcGxhdGUsIHsgdHlwZTogJ2VtYWlsJywgLi4ucHJvcHMgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1FbWFpbFdpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwgRnJhZ21lbnQgYXMgX0ZyYWdtZW50LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGRhdGFVUkl0b0Jsb2IsIGdldFRlbXBsYXRlLCBUcmFuc2xhdGFibGVTdHJpbmcsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuaW1wb3J0IE1hcmtkb3duIGZyb20gJ21hcmtkb3duLXRvLWpzeCc7XG5mdW5jdGlvbiBhZGROYW1lVG9EYXRhVVJMKGRhdGFVUkwsIG5hbWUpIHtcbiAgICBpZiAoZGF0YVVSTCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFVUkwucmVwbGFjZSgnO2Jhc2U2NCcsIGA7bmFtZT0ke2VuY29kZVVSSUNvbXBvbmVudChuYW1lKX07YmFzZTY0YCk7XG59XG5mdW5jdGlvbiBwcm9jZXNzRmlsZShmaWxlKSB7XG4gICAgY29uc3QgeyBuYW1lLCBzaXplLCB0eXBlIH0gPSBmaWxlO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyB3aW5kb3cuRmlsZVJlYWRlcigpO1xuICAgICAgICByZWFkZXIub25lcnJvciA9IHJlamVjdDtcbiAgICAgICAgcmVhZGVyLm9ubG9hZCA9IChldmVudCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiAoKF9hID0gZXZlbnQudGFyZ2V0KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVzdWx0KSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVVSTDogYWRkTmFtZVRvRGF0YVVSTChldmVudC50YXJnZXQucmVzdWx0LCBuYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgICAgICAgICBkYXRhVVJMOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICBzaXplLFxuICAgICAgICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHByb2Nlc3NGaWxlcyhmaWxlcykge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChBcnJheS5mcm9tKGZpbGVzKS5tYXAocHJvY2Vzc0ZpbGUpKTtcbn1cbmZ1bmN0aW9uIEZpbGVJbmZvUHJldmlldyh7IGZpbGVJbmZvLCByZWdpc3RyeSwgfSkge1xuICAgIGNvbnN0IHsgdHJhbnNsYXRlU3RyaW5nIH0gPSByZWdpc3RyeTtcbiAgICBjb25zdCB7IGRhdGFVUkwsIHR5cGUsIG5hbWUgfSA9IGZpbGVJbmZvO1xuICAgIGlmICghZGF0YVVSTCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLy8gSWYgdHlwZSBpcyBKUEVHIG9yIFBORyB0aGVuIHNob3cgaW1hZ2UgcHJldmlldy5cbiAgICAvLyBPcmlnaW5hbGx5LCBhbnkgdHlwZSBvZiBpbWFnZSB3YXMgc3VwcG9ydGVkLCBidXQgdGhpcyB3YXMgY2hhbmdlZCBpbnRvIGEgd2hpdGVsaXN0XG4gICAgLy8gc2luY2UgU1ZHcyBhbmQgYW5pbWF0ZWQgR0lGcyBhcmUgYWxzbyBpbWFnZXMsIHdoaWNoIGFyZSBnZW5lcmFsbHkgY29uc2lkZXJlZCBhIHNlY3VyaXR5IHJpc2suXG4gICAgaWYgKFsnaW1hZ2UvanBlZycsICdpbWFnZS9wbmcnXS5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgICByZXR1cm4gX2pzeChcImltZ1wiLCB7IHNyYzogZGF0YVVSTCwgc3R5bGU6IHsgbWF4V2lkdGg6ICcxMDAlJyB9LCBjbGFzc05hbWU6ICdmaWxlLXByZXZpZXcnIH0pO1xuICAgIH1cbiAgICAvLyBvdGhlcndpc2UsIGxldCB1c2VycyBkb3dubG9hZCBmaWxlXG4gICAgcmV0dXJuIChfanN4cyhfRnJhZ21lbnQsIHsgY2hpbGRyZW46IFsnICcsIF9qc3goXCJhXCIsIHsgZG93bmxvYWQ6IGBwcmV2aWV3LSR7bmFtZX1gLCBocmVmOiBkYXRhVVJMLCBjbGFzc05hbWU6ICdmaWxlLWRvd25sb2FkJywgY2hpbGRyZW46IHRyYW5zbGF0ZVN0cmluZyhUcmFuc2xhdGFibGVTdHJpbmcuUHJldmlld0xhYmVsKSB9KV0gfSkpO1xufVxuZnVuY3Rpb24gRmlsZXNJbmZvKHsgZmlsZXNJbmZvLCByZWdpc3RyeSwgcHJldmlldywgb25SZW1vdmUsIG9wdGlvbnMsIH0pIHtcbiAgICBpZiAoZmlsZXNJbmZvLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgeyB0cmFuc2xhdGVTdHJpbmcgfSA9IHJlZ2lzdHJ5O1xuICAgIGNvbnN0IHsgUmVtb3ZlQnV0dG9uIH0gPSBnZXRUZW1wbGF0ZSgnQnV0dG9uVGVtcGxhdGVzJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIHJldHVybiAoX2pzeChcInVsXCIsIHsgY2xhc3NOYW1lOiAnZmlsZS1pbmZvJywgY2hpbGRyZW46IGZpbGVzSW5mby5tYXAoKGZpbGVJbmZvLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgbmFtZSwgc2l6ZSwgdHlwZSB9ID0gZmlsZUluZm87XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVSZW1vdmUgPSAoKSA9PiBvblJlbW92ZShrZXkpO1xuICAgICAgICAgICAgcmV0dXJuIChfanN4cyhcImxpXCIsIHsgY2hpbGRyZW46IFtfanN4KE1hcmtkb3duLCB7IGNoaWxkcmVuOiB0cmFuc2xhdGVTdHJpbmcoVHJhbnNsYXRhYmxlU3RyaW5nLkZpbGVzSW5mbywgW25hbWUsIHR5cGUsIFN0cmluZyhzaXplKV0pIH0pLCBwcmV2aWV3ICYmIF9qc3goRmlsZUluZm9QcmV2aWV3LCB7IGZpbGVJbmZvOiBmaWxlSW5mbywgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pLCBfanN4KFJlbW92ZUJ1dHRvbiwgeyBvbkNsaWNrOiBoYW5kbGVSZW1vdmUsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KV0gfSwga2V5KSk7XG4gICAgICAgIH0pIH0pKTtcbn1cbmZ1bmN0aW9uIGV4dHJhY3RGaWxlSW5mbyhkYXRhVVJMcykge1xuICAgIHJldHVybiBkYXRhVVJMcy5yZWR1Y2UoKGFjYywgZGF0YVVSTCkgPT4ge1xuICAgICAgICBpZiAoIWRhdGFVUkwpIHtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHsgYmxvYiwgbmFtZSB9ID0gZGF0YVVSSXRvQmxvYihkYXRhVVJMKTtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogYmxvYi5zaXplLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBibG9iLnR5cGUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIC8vIEludmFsaWQgZGF0YVVSSSwgc28ganVzdCBpZ25vcmUgaXQuXG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9XG4gICAgfSwgW10pO1xufVxuLyoqXG4gKiAgVGhlIGBGaWxlV2lkZ2V0YCBpcyBhIHdpZGdldCBmb3IgcmVuZGVyaW5nIGZpbGUgdXBsb2FkIGZpZWxkcy5cbiAqICBJdCBpcyB0eXBpY2FsbHkgdXNlZCB3aXRoIGEgc3RyaW5nIHByb3BlcnR5IHdpdGggZGF0YS11cmwgZm9ybWF0LlxuICovXG5mdW5jdGlvbiBGaWxlV2lkZ2V0KHByb3BzKSB7XG4gICAgY29uc3QgeyBkaXNhYmxlZCwgcmVhZG9ubHksIHJlcXVpcmVkLCBtdWx0aXBsZSwgb25DaGFuZ2UsIHZhbHVlLCBvcHRpb25zLCByZWdpc3RyeSB9ID0gcHJvcHM7XG4gICAgY29uc3QgQmFzZUlucHV0VGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnQmFzZUlucHV0VGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZXZlbnQudGFyZ2V0LmZpbGVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gRHVlIHRvIHZhcmlhbmNlcyBpbiB0aGVtZXMsIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSBmaWxlcyBmb3IgdGhlIGFycmF5IGNhc2Ugbm93IGhhcHBlbnMgb25lIGZpbGUgYXQgYSB0aW1lLlxuICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2Ugd2UgZG9uJ3QgcGFzcyBgbXVsdGlwbGVgIGludG8gdGhlIGBCYXNlSW5wdXRUZW1wbGF0ZWAgYW55bW9yZS4gSW5zdGVhZCwgd2UgZGVhbCB3aXRoIHRoZSBzaW5nbGVcbiAgICAgICAgLy8gZmlsZSBpbiBlYWNoIGV2ZW50IGFuZCBjb25jYXRlbmF0ZSB0aGVtIHRvZ2V0aGVyIG91cnNlbHZlc1xuICAgICAgICBwcm9jZXNzRmlsZXMoZXZlbnQudGFyZ2V0LmZpbGVzKS50aGVuKChmaWxlc0luZm9FdmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBmaWxlc0luZm9FdmVudC5tYXAoKGZpbGVJbmZvKSA9PiBmaWxlSW5mby5kYXRhVVJMKTtcbiAgICAgICAgICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlLmNvbmNhdChuZXdWYWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgb25DaGFuZ2UobmV3VmFsdWVbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9LCBbbXVsdGlwbGUsIHZhbHVlLCBvbkNoYW5nZV0pO1xuICAgIGNvbnN0IGZpbGVzSW5mbyA9IHVzZU1lbW8oKCkgPT4gZXh0cmFjdEZpbGVJbmZvKEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdKSwgW3ZhbHVlXSk7XG4gICAgY29uc3Qgcm1GaWxlID0gdXNlQ2FsbGJhY2soKGluZGV4KSA9PiB7XG4gICAgICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB2YWx1ZS5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTtcbiAgICAgICAgICAgIG9uQ2hhbmdlKG5ld1ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlKHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICB9LCBbbXVsdGlwbGUsIHZhbHVlLCBvbkNoYW5nZV0pO1xuICAgIHJldHVybiAoX2pzeHMoXCJkaXZcIiwgeyBjaGlsZHJlbjogW19qc3goQmFzZUlucHV0VGVtcGxhdGUsIHsgLi4ucHJvcHMsIGRpc2FibGVkOiBkaXNhYmxlZCB8fCByZWFkb25seSwgdHlwZTogJ2ZpbGUnLCByZXF1aXJlZDogdmFsdWUgPyBmYWxzZSA6IHJlcXVpcmVkLCBvbkNoYW5nZU92ZXJyaWRlOiBoYW5kbGVDaGFuZ2UsIHZhbHVlOiAnJywgYWNjZXB0OiBvcHRpb25zLmFjY2VwdCA/IFN0cmluZyhvcHRpb25zLmFjY2VwdCkgOiB1bmRlZmluZWQgfSksIF9qc3goRmlsZXNJbmZvLCB7IGZpbGVzSW5mbzogZmlsZXNJbmZvLCBvblJlbW92ZTogcm1GaWxlLCByZWdpc3RyeTogcmVnaXN0cnksIHByZXZpZXc6IG9wdGlvbnMuZmlsZVByZXZpZXcsIG9wdGlvbnM6IG9wdGlvbnMgfSldIH0pKTtcbn1cbmV4cG9ydCBkZWZhdWx0IEZpbGVXaWRnZXQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GaWxlV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG4vKiogVGhlIGBIaWRkZW5XaWRnZXRgIGlzIGEgd2lkZ2V0IGZvciByZW5kZXJpbmcgYSBoaWRkZW4gaW5wdXQgZmllbGQuXG4gKiAgSXQgaXMgdHlwaWNhbGx5IHVzZWQgYnkgc2V0dGluZyB0eXBlIHRvIFwiaGlkZGVuXCIuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIEhpZGRlbldpZGdldCh7IGlkLCB2YWx1ZSwgfSkge1xuICAgIHJldHVybiBfanN4KFwiaW5wdXRcIiwgeyB0eXBlOiAnaGlkZGVuJywgaWQ6IGlkLCBuYW1lOiBpZCwgdmFsdWU6IHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgPyAnJyA6IHZhbHVlIH0pO1xufVxuZXhwb3J0IGRlZmF1bHQgSGlkZGVuV2lkZ2V0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SGlkZGVuV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZSB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYFBhc3N3b3JkV2lkZ2V0YCBjb21wb25lbnQgdXNlcyB0aGUgYEJhc2VJbnB1dFRlbXBsYXRlYCBjaGFuZ2luZyB0aGUgdHlwZSB0byBgcGFzc3dvcmRgLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQYXNzd29yZFdpZGdldChwcm9wcykge1xuICAgIGNvbnN0IHsgb3B0aW9ucywgcmVnaXN0cnkgfSA9IHByb3BzO1xuICAgIGNvbnN0IEJhc2VJbnB1dFRlbXBsYXRlID0gZ2V0VGVtcGxhdGUoJ0Jhc2VJbnB1dFRlbXBsYXRlJywgcmVnaXN0cnksIG9wdGlvbnMpO1xuICAgIHJldHVybiBfanN4KEJhc2VJbnB1dFRlbXBsYXRlLCB7IHR5cGU6ICdwYXNzd29yZCcsIC4uLnByb3BzIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UGFzc3dvcmRXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgYXJpYURlc2NyaWJlZEJ5SWRzLCBlbnVtT3B0aW9uc0lzU2VsZWN0ZWQsIGVudW1PcHRpb25zVmFsdWVGb3JJbmRleCwgb3B0aW9uSWQsIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgUmFkaW9XaWRnZXRgIGlzIGEgd2lkZ2V0IGZvciByZW5kZXJpbmcgYSByYWRpbyBncm91cC5cbiAqICBJdCBpcyB0eXBpY2FsbHkgdXNlZCB3aXRoIGEgc3RyaW5nIHByb3BlcnR5IGNvbnN0cmFpbmVkIHdpdGggZW51bSBvcHRpb25zLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5mdW5jdGlvbiBSYWRpb1dpZGdldCh7IG9wdGlvbnMsIHZhbHVlLCByZXF1aXJlZCwgZGlzYWJsZWQsIHJlYWRvbmx5LCBhdXRvZm9jdXMgPSBmYWxzZSwgb25CbHVyLCBvbkZvY3VzLCBvbkNoYW5nZSwgaWQsIH0pIHtcbiAgICBjb25zdCB7IGVudW1PcHRpb25zLCBlbnVtRGlzYWJsZWQsIGlubGluZSwgZW1wdHlWYWx1ZSB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBoYW5kbGVCbHVyID0gdXNlQ2FsbGJhY2soKHsgdGFyZ2V0IH0pID0+IG9uQmx1cihpZCwgZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4KHRhcmdldCAmJiB0YXJnZXQudmFsdWUsIGVudW1PcHRpb25zLCBlbXB0eVZhbHVlKSksIFtvbkJsdXIsIGlkXSk7XG4gICAgY29uc3QgaGFuZGxlRm9jdXMgPSB1c2VDYWxsYmFjaygoeyB0YXJnZXQgfSkgPT4gb25Gb2N1cyhpZCwgZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4KHRhcmdldCAmJiB0YXJnZXQudmFsdWUsIGVudW1PcHRpb25zLCBlbXB0eVZhbHVlKSksIFtvbkZvY3VzLCBpZF0pO1xuICAgIHJldHVybiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogJ2ZpZWxkLXJhZGlvLWdyb3VwJywgaWQ6IGlkLCBjaGlsZHJlbjogQXJyYXkuaXNBcnJheShlbnVtT3B0aW9ucykgJiZcbiAgICAgICAgICAgIGVudW1PcHRpb25zLm1hcCgob3B0aW9uLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hlY2tlZCA9IGVudW1PcHRpb25zSXNTZWxlY3RlZChvcHRpb24udmFsdWUsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtRGlzYWJsZWQgPSBBcnJheS5pc0FycmF5KGVudW1EaXNhYmxlZCkgJiYgZW51bURpc2FibGVkLmluZGV4T2Yob3B0aW9uLnZhbHVlKSAhPT0gLTE7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlzYWJsZWRDbHMgPSBkaXNhYmxlZCB8fCBpdGVtRGlzYWJsZWQgfHwgcmVhZG9ubHkgPyAnZGlzYWJsZWQnIDogJyc7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKCkgPT4gb25DaGFuZ2Uob3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBjb25zdCByYWRpbyA9IChfanN4cyhcInNwYW5cIiwgeyBjaGlsZHJlbjogW19qc3goXCJpbnB1dFwiLCB7IHR5cGU6ICdyYWRpbycsIGlkOiBvcHRpb25JZChpZCwgaSksIGNoZWNrZWQ6IGNoZWNrZWQsIG5hbWU6IGlkLCByZXF1aXJlZDogcmVxdWlyZWQsIHZhbHVlOiBTdHJpbmcoaSksIGRpc2FibGVkOiBkaXNhYmxlZCB8fCBpdGVtRGlzYWJsZWQgfHwgcmVhZG9ubHksIGF1dG9Gb2N1czogYXV0b2ZvY3VzICYmIGkgPT09IDAsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIG9uQmx1cjogaGFuZGxlQmx1ciwgb25Gb2N1czogaGFuZGxlRm9jdXMsIFwiYXJpYS1kZXNjcmliZWRieVwiOiBhcmlhRGVzY3JpYmVkQnlJZHMoaWQpIH0pLCBfanN4KFwic3BhblwiLCB7IGNoaWxkcmVuOiBvcHRpb24ubGFiZWwgfSldIH0pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lID8gKF9qc3goXCJsYWJlbFwiLCB7IGNsYXNzTmFtZTogYHJhZGlvLWlubGluZSAke2Rpc2FibGVkQ2xzfWAsIGNoaWxkcmVuOiByYWRpbyB9LCBpKSkgOiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogYHJhZGlvICR7ZGlzYWJsZWRDbHN9YCwgY2hpbGRyZW46IF9qc3goXCJsYWJlbFwiLCB7IGNoaWxkcmVuOiByYWRpbyB9KSB9LCBpKSk7XG4gICAgICAgICAgICB9KSB9KSk7XG59XG5leHBvcnQgZGVmYXVsdCBSYWRpb1dpZGdldDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJhZGlvV2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG4vKiogVGhlIGBSYW5nZVdpZGdldGAgY29tcG9uZW50IHVzZXMgdGhlIGBCYXNlSW5wdXRUZW1wbGF0ZWAgY2hhbmdpbmcgdGhlIHR5cGUgdG8gYHJhbmdlYCBhbmQgd3JhcHBpbmcgdGhlIHJlc3VsdFxuICogaW4gYSBkaXYsIHdpdGggdGhlIHZhbHVlIGFsb25nIHNpZGUgaXQuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJhbmdlV2lkZ2V0KHByb3BzKSB7XG4gICAgY29uc3QgeyB2YWx1ZSwgcmVnaXN0cnk6IHsgdGVtcGxhdGVzOiB7IEJhc2VJbnB1dFRlbXBsYXRlIH0sIH0sIH0gPSBwcm9wcztcbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiAnZmllbGQtcmFuZ2Utd3JhcHBlcicsIGNoaWxkcmVuOiBbX2pzeChCYXNlSW5wdXRUZW1wbGF0ZSwgeyB0eXBlOiAncmFuZ2UnLCAuLi5wcm9wcyB9KSwgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6ICdyYW5nZS12aWV3JywgY2hpbGRyZW46IHZhbHVlIH0pXSB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SYW5nZVdpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBhcmlhRGVzY3JpYmVkQnlJZHMsIGVudW1PcHRpb25zSW5kZXhGb3JWYWx1ZSwgZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4LCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbmZ1bmN0aW9uIGdldFZhbHVlKGV2ZW50LCBtdWx0aXBsZSkge1xuICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShldmVudC50YXJnZXQub3B0aW9ucylcbiAgICAgICAgICAgIC5zbGljZSgpXG4gICAgICAgICAgICAuZmlsdGVyKChvKSA9PiBvLnNlbGVjdGVkKVxuICAgICAgICAgICAgLm1hcCgobykgPT4gby52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBldmVudC50YXJnZXQudmFsdWU7XG59XG4vKiogVGhlIGBTZWxlY3RXaWRnZXRgIGlzIGEgd2lkZ2V0IGZvciByZW5kZXJpbmcgZHJvcGRvd25zLlxuICogIEl0IGlzIHR5cGljYWxseSB1c2VkIHdpdGggc3RyaW5nIHByb3BlcnRpZXMgY29uc3RyYWluZWQgd2l0aCBlbnVtIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIFNlbGVjdFdpZGdldCh7IHNjaGVtYSwgaWQsIG9wdGlvbnMsIHZhbHVlLCByZXF1aXJlZCwgZGlzYWJsZWQsIHJlYWRvbmx5LCBtdWx0aXBsZSA9IGZhbHNlLCBhdXRvZm9jdXMgPSBmYWxzZSwgb25DaGFuZ2UsIG9uQmx1ciwgb25Gb2N1cywgcGxhY2Vob2xkZXIsIH0pIHtcbiAgICBjb25zdCB7IGVudW1PcHRpb25zLCBlbnVtRGlzYWJsZWQsIGVtcHR5VmFsdWU6IG9wdEVtcHR5VmFsIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGVtcHR5VmFsdWUgPSBtdWx0aXBsZSA/IFtdIDogJyc7XG4gICAgY29uc3QgaGFuZGxlRm9jdXMgPSB1c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBnZXRWYWx1ZShldmVudCwgbXVsdGlwbGUpO1xuICAgICAgICByZXR1cm4gb25Gb2N1cyhpZCwgZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4KG5ld1ZhbHVlLCBlbnVtT3B0aW9ucywgb3B0RW1wdHlWYWwpKTtcbiAgICB9LCBbb25Gb2N1cywgaWQsIHNjaGVtYSwgbXVsdGlwbGUsIGVudW1PcHRpb25zLCBvcHRFbXB0eVZhbF0pO1xuICAgIGNvbnN0IGhhbmRsZUJsdXIgPSB1c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBnZXRWYWx1ZShldmVudCwgbXVsdGlwbGUpO1xuICAgICAgICByZXR1cm4gb25CbHVyKGlkLCBlbnVtT3B0aW9uc1ZhbHVlRm9ySW5kZXgobmV3VmFsdWUsIGVudW1PcHRpb25zLCBvcHRFbXB0eVZhbCkpO1xuICAgIH0sIFtvbkJsdXIsIGlkLCBzY2hlbWEsIG11bHRpcGxlLCBlbnVtT3B0aW9ucywgb3B0RW1wdHlWYWxdKTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBnZXRWYWx1ZShldmVudCwgbXVsdGlwbGUpO1xuICAgICAgICByZXR1cm4gb25DaGFuZ2UoZW51bU9wdGlvbnNWYWx1ZUZvckluZGV4KG5ld1ZhbHVlLCBlbnVtT3B0aW9ucywgb3B0RW1wdHlWYWwpKTtcbiAgICB9LCBbb25DaGFuZ2UsIHNjaGVtYSwgbXVsdGlwbGUsIGVudW1PcHRpb25zLCBvcHRFbXB0eVZhbF0pO1xuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXhlcyA9IGVudW1PcHRpb25zSW5kZXhGb3JWYWx1ZSh2YWx1ZSwgZW51bU9wdGlvbnMsIG11bHRpcGxlKTtcbiAgICBjb25zdCBzaG93UGxhY2Vob2xkZXJPcHRpb24gPSAhbXVsdGlwbGUgJiYgc2NoZW1hLmRlZmF1bHQgPT09IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gKF9qc3hzKFwic2VsZWN0XCIsIHsgaWQ6IGlkLCBuYW1lOiBpZCwgbXVsdGlwbGU6IG11bHRpcGxlLCBjbGFzc05hbWU6ICdmb3JtLWNvbnRyb2wnLCB2YWx1ZTogdHlwZW9mIHNlbGVjdGVkSW5kZXhlcyA9PT0gJ3VuZGVmaW5lZCcgPyBlbXB0eVZhbHVlIDogc2VsZWN0ZWRJbmRleGVzLCByZXF1aXJlZDogcmVxdWlyZWQsIGRpc2FibGVkOiBkaXNhYmxlZCB8fCByZWFkb25seSwgYXV0b0ZvY3VzOiBhdXRvZm9jdXMsIG9uQmx1cjogaGFuZGxlQmx1ciwgb25Gb2N1czogaGFuZGxlRm9jdXMsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIFwiYXJpYS1kZXNjcmliZWRieVwiOiBhcmlhRGVzY3JpYmVkQnlJZHMoaWQpLCBjaGlsZHJlbjogW3Nob3dQbGFjZWhvbGRlck9wdGlvbiAmJiBfanN4KFwib3B0aW9uXCIsIHsgdmFsdWU6ICcnLCBjaGlsZHJlbjogcGxhY2Vob2xkZXIgfSksIEFycmF5LmlzQXJyYXkoZW51bU9wdGlvbnMpICYmXG4gICAgICAgICAgICAgICAgZW51bU9wdGlvbnMubWFwKCh7IHZhbHVlLCBsYWJlbCB9LCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkID0gZW51bURpc2FibGVkICYmIGVudW1EaXNhYmxlZC5pbmRleE9mKHZhbHVlKSAhPT0gLTE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoX2pzeChcIm9wdGlvblwiLCB7IHZhbHVlOiBTdHJpbmcoaSksIGRpc2FibGVkOiBkaXNhYmxlZCwgY2hpbGRyZW46IGxhYmVsIH0sIGkpKTtcbiAgICAgICAgICAgICAgICB9KV0gfSkpO1xufVxuZXhwb3J0IGRlZmF1bHQgU2VsZWN0V2lkZ2V0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2VsZWN0V2lkZ2V0LmpzLm1hcCIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGFyaWFEZXNjcmliZWRCeUlkcyB9IGZyb20gJ0ByanNmL3V0aWxzJztcbi8qKiBUaGUgYFRleHRhcmVhV2lkZ2V0YCBpcyBhIHdpZGdldCBmb3IgcmVuZGVyaW5nIGlucHV0IGZpZWxkcyBhcyB0ZXh0YXJlYS5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZnVuY3Rpb24gVGV4dGFyZWFXaWRnZXQoeyBpZCwgb3B0aW9ucyA9IHt9LCBwbGFjZWhvbGRlciwgdmFsdWUsIHJlcXVpcmVkLCBkaXNhYmxlZCwgcmVhZG9ubHksIGF1dG9mb2N1cyA9IGZhbHNlLCBvbkNoYW5nZSwgb25CbHVyLCBvbkZvY3VzLCB9KSB7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKHsgdGFyZ2V0OiB7IHZhbHVlIH0gfSkgPT4gb25DaGFuZ2UodmFsdWUgPT09ICcnID8gb3B0aW9ucy5lbXB0eVZhbHVlIDogdmFsdWUpLCBbb25DaGFuZ2UsIG9wdGlvbnMuZW1wdHlWYWx1ZV0pO1xuICAgIGNvbnN0IGhhbmRsZUJsdXIgPSB1c2VDYWxsYmFjaygoeyB0YXJnZXQgfSkgPT4gb25CbHVyKGlkLCB0YXJnZXQgJiYgdGFyZ2V0LnZhbHVlKSwgW29uQmx1ciwgaWRdKTtcbiAgICBjb25zdCBoYW5kbGVGb2N1cyA9IHVzZUNhbGxiYWNrKCh7IHRhcmdldCB9KSA9PiBvbkZvY3VzKGlkLCB0YXJnZXQgJiYgdGFyZ2V0LnZhbHVlKSwgW2lkLCBvbkZvY3VzXSk7XG4gICAgcmV0dXJuIChfanN4KFwidGV4dGFyZWFcIiwgeyBpZDogaWQsIG5hbWU6IGlkLCBjbGFzc05hbWU6ICdmb3JtLWNvbnRyb2wnLCB2YWx1ZTogdmFsdWUgPyB2YWx1ZSA6ICcnLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIHJlcXVpcmVkOiByZXF1aXJlZCwgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkT25seTogcmVhZG9ubHksIGF1dG9Gb2N1czogYXV0b2ZvY3VzLCByb3dzOiBvcHRpb25zLnJvd3MsIG9uQmx1cjogaGFuZGxlQmx1ciwgb25Gb2N1czogaGFuZGxlRm9jdXMsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIFwiYXJpYS1kZXNjcmliZWRieVwiOiBhcmlhRGVzY3JpYmVkQnlJZHMoaWQpIH0pKTtcbn1cblRleHRhcmVhV2lkZ2V0LmRlZmF1bHRQcm9wcyA9IHtcbiAgICBhdXRvZm9jdXM6IGZhbHNlLFxuICAgIG9wdGlvbnM6IHt9LFxufTtcbmV4cG9ydCBkZWZhdWx0IFRleHRhcmVhV2lkZ2V0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGV4dGFyZWFXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGdldFRlbXBsYXRlIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgVGV4dFdpZGdldGAgY29tcG9uZW50IHVzZXMgdGhlIGBCYXNlSW5wdXRUZW1wbGF0ZWAuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFRleHRXaWRnZXQocHJvcHMpIHtcbiAgICBjb25zdCB7IG9wdGlvbnMsIHJlZ2lzdHJ5IH0gPSBwcm9wcztcbiAgICBjb25zdCBCYXNlSW5wdXRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdCYXNlSW5wdXRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICByZXR1cm4gX2pzeChCYXNlSW5wdXRUZW1wbGF0ZSwgeyAuLi5wcm9wcyB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRleHRXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZ2V0VGVtcGxhdGUgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBUaW1lV2lkZ2V0YCBjb21wb25lbnQgdXNlcyB0aGUgYEJhc2VJbnB1dFRlbXBsYXRlYCBjaGFuZ2luZyB0aGUgdHlwZSB0byBgdGltZWAgYW5kIHRyYW5zZm9ybXNcbiAqIHRoZSB2YWx1ZSB0byB1bmRlZmluZWQgd2hlbiBpdCBpcyBmYWxzeSBkdXJpbmcgdGhlIGBvbkNoYW5nZWAgaGFuZGxpbmcuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGBXaWRnZXRQcm9wc2AgZm9yIHRoaXMgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFRpbWVXaWRnZXQocHJvcHMpIHtcbiAgICBjb25zdCB7IG9uQ2hhbmdlLCBvcHRpb25zLCByZWdpc3RyeSB9ID0gcHJvcHM7XG4gICAgY29uc3QgQmFzZUlucHV0VGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnQmFzZUlucHV0VGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKHZhbHVlKSA9PiBvbkNoYW5nZSh2YWx1ZSA/IGAke3ZhbHVlfTowMGAgOiB1bmRlZmluZWQpLCBbb25DaGFuZ2VdKTtcbiAgICByZXR1cm4gX2pzeChCYXNlSW5wdXRUZW1wbGF0ZSwgeyB0eXBlOiAndGltZScsIC4uLnByb3BzLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGltZVdpZGdldC5qcy5tYXAiLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgZ2V0VGVtcGxhdGUgfSBmcm9tICdAcmpzZi91dGlscyc7XG4vKiogVGhlIGBVUkxXaWRnZXRgIGNvbXBvbmVudCB1c2VzIHRoZSBgQmFzZUlucHV0VGVtcGxhdGVgIGNoYW5naW5nIHRoZSB0eXBlIHRvIGB1cmxgLlxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSBgV2lkZ2V0UHJvcHNgIGZvciB0aGlzIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBVUkxXaWRnZXQocHJvcHMpIHtcbiAgICBjb25zdCB7IG9wdGlvbnMsIHJlZ2lzdHJ5IH0gPSBwcm9wcztcbiAgICBjb25zdCBCYXNlSW5wdXRUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdCYXNlSW5wdXRUZW1wbGF0ZScsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICByZXR1cm4gX2pzeChCYXNlSW5wdXRUZW1wbGF0ZSwgeyB0eXBlOiAndXJsJywgLi4ucHJvcHMgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1VUkxXaWRnZXQuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGdldFRlbXBsYXRlIH0gZnJvbSAnQHJqc2YvdXRpbHMnO1xuLyoqIFRoZSBgVXBEb3duV2lkZ2V0YCBjb21wb25lbnQgdXNlcyB0aGUgYEJhc2VJbnB1dFRlbXBsYXRlYCBjaGFuZ2luZyB0aGUgdHlwZSB0byBgbnVtYmVyYC5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBUaGUgYFdpZGdldFByb3BzYCBmb3IgdGhpcyBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVXBEb3duV2lkZ2V0KHByb3BzKSB7XG4gICAgY29uc3QgeyBvcHRpb25zLCByZWdpc3RyeSB9ID0gcHJvcHM7XG4gICAgY29uc3QgQmFzZUlucHV0VGVtcGxhdGUgPSBnZXRUZW1wbGF0ZSgnQmFzZUlucHV0VGVtcGxhdGUnLCByZWdpc3RyeSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIF9qc3goQmFzZUlucHV0VGVtcGxhdGUsIHsgdHlwZTogJ251bWJlcicsIC4uLnByb3BzIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VXBEb3duV2lkZ2V0LmpzLm1hcCIsImltcG9ydCBBbHREYXRlV2lkZ2V0IGZyb20gJy4vQWx0RGF0ZVdpZGdldCc7XG5pbXBvcnQgQWx0RGF0ZVRpbWVXaWRnZXQgZnJvbSAnLi9BbHREYXRlVGltZVdpZGdldCc7XG5pbXBvcnQgQ2hlY2tib3hXaWRnZXQgZnJvbSAnLi9DaGVja2JveFdpZGdldCc7XG5pbXBvcnQgQ2hlY2tib3hlc1dpZGdldCBmcm9tICcuL0NoZWNrYm94ZXNXaWRnZXQnO1xuaW1wb3J0IENvbG9yV2lkZ2V0IGZyb20gJy4vQ29sb3JXaWRnZXQnO1xuaW1wb3J0IERhdGVXaWRnZXQgZnJvbSAnLi9EYXRlV2lkZ2V0JztcbmltcG9ydCBEYXRlVGltZVdpZGdldCBmcm9tICcuL0RhdGVUaW1lV2lkZ2V0JztcbmltcG9ydCBFbWFpbFdpZGdldCBmcm9tICcuL0VtYWlsV2lkZ2V0JztcbmltcG9ydCBGaWxlV2lkZ2V0IGZyb20gJy4vRmlsZVdpZGdldCc7XG5pbXBvcnQgSGlkZGVuV2lkZ2V0IGZyb20gJy4vSGlkZGVuV2lkZ2V0JztcbmltcG9ydCBQYXNzd29yZFdpZGdldCBmcm9tICcuL1Bhc3N3b3JkV2lkZ2V0JztcbmltcG9ydCBSYWRpb1dpZGdldCBmcm9tICcuL1JhZGlvV2lkZ2V0JztcbmltcG9ydCBSYW5nZVdpZGdldCBmcm9tICcuL1JhbmdlV2lkZ2V0JztcbmltcG9ydCBTZWxlY3RXaWRnZXQgZnJvbSAnLi9TZWxlY3RXaWRnZXQnO1xuaW1wb3J0IFRleHRhcmVhV2lkZ2V0IGZyb20gJy4vVGV4dGFyZWFXaWRnZXQnO1xuaW1wb3J0IFRleHRXaWRnZXQgZnJvbSAnLi9UZXh0V2lkZ2V0JztcbmltcG9ydCBUaW1lV2lkZ2V0IGZyb20gJy4vVGltZVdpZGdldCc7XG5pbXBvcnQgVVJMV2lkZ2V0IGZyb20gJy4vVVJMV2lkZ2V0JztcbmltcG9ydCBVcERvd25XaWRnZXQgZnJvbSAnLi9VcERvd25XaWRnZXQnO1xuZnVuY3Rpb24gd2lkZ2V0cygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBBbHREYXRlV2lkZ2V0LFxuICAgICAgICBBbHREYXRlVGltZVdpZGdldCxcbiAgICAgICAgQ2hlY2tib3hXaWRnZXQsXG4gICAgICAgIENoZWNrYm94ZXNXaWRnZXQsXG4gICAgICAgIENvbG9yV2lkZ2V0LFxuICAgICAgICBEYXRlV2lkZ2V0LFxuICAgICAgICBEYXRlVGltZVdpZGdldCxcbiAgICAgICAgRW1haWxXaWRnZXQsXG4gICAgICAgIEZpbGVXaWRnZXQsXG4gICAgICAgIEhpZGRlbldpZGdldCxcbiAgICAgICAgUGFzc3dvcmRXaWRnZXQsXG4gICAgICAgIFJhZGlvV2lkZ2V0LFxuICAgICAgICBSYW5nZVdpZGdldCxcbiAgICAgICAgU2VsZWN0V2lkZ2V0LFxuICAgICAgICBUZXh0V2lkZ2V0LFxuICAgICAgICBUZXh0YXJlYVdpZGdldCxcbiAgICAgICAgVGltZVdpZGdldCxcbiAgICAgICAgVXBEb3duV2lkZ2V0LFxuICAgICAgICBVUkxXaWRnZXQsXG4gICAgfTtcbn1cbmV4cG9ydCBkZWZhdWx0IHdpZGdldHM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJpbXBvcnQgeyBlbmdsaXNoU3RyaW5nVHJhbnNsYXRvciB9IGZyb20gJ0ByanNmL3V0aWxzJztcbmltcG9ydCBmaWVsZHMgZnJvbSAnLi9jb21wb25lbnRzL2ZpZWxkcyc7XG5pbXBvcnQgdGVtcGxhdGVzIGZyb20gJy4vY29tcG9uZW50cy90ZW1wbGF0ZXMnO1xuaW1wb3J0IHdpZGdldHMgZnJvbSAnLi9jb21wb25lbnRzL3dpZGdldHMnO1xuLyoqIFRoZSBkZWZhdWx0IHJlZ2lzdHJ5IGNvbnNpc3RzIG9mIGFsbCB0aGUgZmllbGRzLCB0ZW1wbGF0ZXMgYW5kIHdpZGdldHMgcHJvdmlkZWQgaW4gdGhlIGNvcmUgaW1wbGVtZW50YXRpb24sXG4gKiBwbHVzIGFuIGVtcHR5IGByb290U2NoZW1hYCBhbmQgYGZvcm1Db250ZXh0LiBXZSBvbWl0IHNjaGVtYVV0aWxzIGhlcmUgYmVjYXVzZSBpdCBjYW5ub3QgYmUgZGVmYXVsdGVkIHdpdGhvdXQgYVxuICogcm9vdFNjaGVtYSBhbmQgdmFsaWRhdG9yLiBJdCB3aWxsIGJlIGFkZGVkIGludG8gdGhlIGNvbXB1dGVkIHJlZ2lzdHJ5IGxhdGVyIGluIHRoZSBGb3JtLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREZWZhdWx0UmVnaXN0cnkoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZmllbGRzOiBmaWVsZHMoKSxcbiAgICAgICAgdGVtcGxhdGVzOiB0ZW1wbGF0ZXMoKSxcbiAgICAgICAgd2lkZ2V0czogd2lkZ2V0cygpLFxuICAgICAgICByb290U2NoZW1hOiB7fSxcbiAgICAgICAgZm9ybUNvbnRleHQ6IHt9LFxuICAgICAgICB0cmFuc2xhdGVTdHJpbmc6IGVuZ2xpc2hTdHJpbmdUcmFuc2xhdG9yLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXREZWZhdWx0UmVnaXN0cnkuanMubWFwIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IENvbXBvbmVudCwgY3JlYXRlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3JlYXRlU2NoZW1hVXRpbHMsIGRlZXBFcXVhbHMsIGdldFRlbXBsYXRlLCBnZXRVaU9wdGlvbnMsIGlzT2JqZWN0LCBtZXJnZU9iamVjdHMsIE5BTUVfS0VZLCBSSlNGX0FERElUSU9OQUxfUFJPUEVSVElFU19GTEFHLCBzaG91bGRSZW5kZXIsIFNVQk1JVF9CVE5fT1BUSU9OU19LRVksIHRvRXJyb3JMaXN0LCBVSV9HTE9CQUxfT1BUSU9OU19LRVksIFVJX09QVElPTlNfS0VZLCB2YWxpZGF0aW9uRGF0YU1lcmdlLCB9IGZyb20gJ0ByanNmL3V0aWxzJztcbmltcG9ydCBfZm9yRWFjaCBmcm9tICdsb2Rhc2gvZm9yRWFjaCc7XG5pbXBvcnQgX2dldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBfaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5pbXBvcnQgX2lzTmlsIGZyb20gJ2xvZGFzaC9pc05pbCc7XG5pbXBvcnQgX3BpY2sgZnJvbSAnbG9kYXNoL3BpY2snO1xuaW1wb3J0IF90b1BhdGggZnJvbSAnbG9kYXNoL3RvUGF0aCc7XG5pbXBvcnQgZ2V0RGVmYXVsdFJlZ2lzdHJ5IGZyb20gJy4uL2dldERlZmF1bHRSZWdpc3RyeSc7XG4vKiogVGhlIGBGb3JtYCBjb21wb25lbnQgcmVuZGVycyB0aGUgb3V0ZXIgZm9ybSBhbmQgYWxsIHRoZSBmaWVsZHMgZGVmaW5lZCBpbiB0aGUgYHNjaGVtYWAgKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZvcm0gZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIC8qKiBDb25zdHJ1Y3RzIHRoZSBgRm9ybWAgZnJvbSB0aGUgYHByb3BzYC4gV2lsbCBzZXR1cCB0aGUgaW5pdGlhbCBzdGF0ZSBmcm9tIHRoZSBwcm9wcy4gSXQgd2lsbCBhbHNvIGNhbGwgdGhlXG4gICAgICogYG9uQ2hhbmdlYCBoYW5kbGVyIGlmIHRoZSBpbml0aWFsbHkgcHJvdmlkZWQgYGZvcm1EYXRhYCBpcyBtb2RpZmllZCB0byBhZGQgbWlzc2luZyBkZWZhdWx0IHZhbHVlcyBhcyBwYXJ0IG9mIHRoZVxuICAgICAqIHN0YXRlIGNvbnN0cnVjdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wcyAtIFRoZSBpbml0aWFsIHByb3BzIGZvciB0aGUgYEZvcm1gXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuICAgICAgICAvKiogUmV0dXJucyB0aGUgYGZvcm1EYXRhYCB3aXRoIG9ubHkgdGhlIGVsZW1lbnRzIHNwZWNpZmllZCBpbiB0aGUgYGZpZWxkc2AgbGlzdFxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgZGF0YSBmb3IgdGhlIGBGb3JtYFxuICAgICAgICAgKiBAcGFyYW0gZmllbGRzIC0gVGhlIGZpZWxkcyB0byBrZWVwIHdoaWxlIGZpbHRlcmluZ1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5nZXRVc2VkRm9ybURhdGEgPSAoZm9ybURhdGEsIGZpZWxkcykgPT4ge1xuICAgICAgICAgICAgLy8gRm9yIHRoZSBjYXNlIG9mIGEgc2luZ2xlIGlucHV0IGZvcm1cbiAgICAgICAgICAgIGlmIChmaWVsZHMubGVuZ3RoID09PSAwICYmIHR5cGVvZiBmb3JtRGF0YSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybURhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBfcGljayBoYXMgaW5jb3JyZWN0IHR5cGUgZGVmaW5pdGlvbiwgaXQgd29ya3Mgd2l0aCBzdHJpbmdbXVtdLCBiZWNhdXNlIGxvZGFzaC9oYXNJbiBzdXBwb3J0cyBpdFxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IF9waWNrKGZvcm1EYXRhLCBmaWVsZHMpO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm9ybURhdGEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGRhdGEpLm1hcCgoa2V5KSA9PiBkYXRhW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGZpZWxkIG5hbWVzIGZyb20gaW5zcGVjdGluZyB0aGUgYHBhdGhTY2hlbWFgIGFzIHdlbGwgYXMgdXNpbmcgdGhlIGBmb3JtRGF0YWBcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHBhdGhTY2hlbWEgLSBUaGUgYFBhdGhTY2hlbWFgIG9iamVjdCBmb3IgdGhlIGZvcm1cbiAgICAgICAgICogQHBhcmFtIFtmb3JtRGF0YV0gLSBUaGUgZm9ybSBkYXRhIHRvIHVzZSB3aGlsZSBjaGVja2luZyBmb3IgZW1wdHkgb2JqZWN0cy9hcnJheXNcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZ2V0RmllbGROYW1lcyA9IChwYXRoU2NoZW1hLCBmb3JtRGF0YSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ2V0QWxsUGF0aHMgPSAoX29iaiwgYWNjID0gW10sIHBhdGhzID0gW1tdXSkgPT4ge1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKF9vYmopLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIF9vYmpba2V5XSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1BhdGhzID0gcGF0aHMubWFwKChwYXRoKSA9PiBbLi4ucGF0aCwga2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBhbiBvYmplY3QgaXMgbWFya2VkIHdpdGggYWRkaXRpb25hbFByb3BlcnRpZXMsIGFsbCBpdHMga2V5cyBhcmUgdmFsaWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfb2JqW2tleV1bUkpTRl9BRERJVElPTkFMX1BST1BFUlRJRVNfRkxBR10gJiYgX29ialtrZXldW05BTUVfS0VZXSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MucHVzaChfb2JqW2tleV1bTkFNRV9LRVldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEFsbFBhdGhzKF9vYmpba2V5XSwgYWNjLCBuZXdQYXRocyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V5ID09PSBOQU1FX0tFWSAmJiBfb2JqW2tleV0gIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybVZhbHVlID0gX2dldChmb3JtRGF0YSwgcGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRkcyBwYXRoIHRvIGZpZWxkTmFtZXMgaWYgaXQgcG9pbnRzIHRvIGEgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciBhbiBlbXB0eSBvYmplY3QvYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZvcm1WYWx1ZSAhPT0gJ29iamVjdCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2lzRW1wdHkoZm9ybVZhbHVlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXJyYXkuaXNBcnJheShmb3JtVmFsdWUpICYmIGZvcm1WYWx1ZS5ldmVyeSgodmFsKSA9PiB0eXBlb2YgdmFsICE9PSAnb2JqZWN0JykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYy5wdXNoKHBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gZ2V0QWxsUGF0aHMocGF0aFNjaGVtYSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBSZXR1cm5zIHRoZSBgZm9ybURhdGFgIGFmdGVyIGZpbHRlcmluZyB0byByZW1vdmUgYW55IGV4dHJhIGRhdGEgbm90IGluIGEgZm9ybSBmaWVsZFxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgZGF0YSBmb3IgdGhlIGBGb3JtYFxuICAgICAgICAgKiBAcmV0dXJucyBUaGUgYGZvcm1EYXRhYCBhZnRlciBvbWl0dGluZyBleHRyYSBkYXRhXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9taXRFeHRyYURhdGEgPSAoZm9ybURhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgc2NoZW1hLCBzY2hlbWFVdGlscyB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgICAgIGNvbnN0IHJldHJpZXZlZFNjaGVtYSA9IHNjaGVtYVV0aWxzLnJldHJpZXZlU2NoZW1hKHNjaGVtYSwgZm9ybURhdGEpO1xuICAgICAgICAgICAgY29uc3QgcGF0aFNjaGVtYSA9IHNjaGVtYVV0aWxzLnRvUGF0aFNjaGVtYShyZXRyaWV2ZWRTY2hlbWEsICcnLCBmb3JtRGF0YSk7XG4gICAgICAgICAgICBjb25zdCBmaWVsZE5hbWVzID0gdGhpcy5nZXRGaWVsZE5hbWVzKHBhdGhTY2hlbWEsIGZvcm1EYXRhKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld0Zvcm1EYXRhID0gdGhpcy5nZXRVc2VkRm9ybURhdGEoZm9ybURhdGEsIGZpZWxkTmFtZXMpO1xuICAgICAgICAgICAgcmV0dXJuIG5ld0Zvcm1EYXRhO1xuICAgICAgICB9O1xuICAgICAgICAvKiogRnVuY3Rpb24gdG8gaGFuZGxlIGNoYW5nZXMgbWFkZSB0byBhIGZpZWxkIGluIHRoZSBgRm9ybWAuIFRoaXMgaGFuZGxlciByZWNlaXZlcyBhbiBlbnRpcmVseSBuZXcgY29weSBvZiB0aGVcbiAgICAgICAgICogYGZvcm1EYXRhYCBhbG9uZyB3aXRoIGEgbmV3IGBFcnJvclNjaGVtYWAuIEl0IHdpbGwgZmlyc3QgdXBkYXRlIHRoZSBgZm9ybURhdGFgIHdpdGggYW55IG1pc3NpbmcgZGVmYXVsdCBmaWVsZHMgYW5kXG4gICAgICAgICAqIHRoZW4sIGlmIGBvbWl0RXh0cmFEYXRhYCBhbmQgYGxpdmVPbWl0YCBhcmUgdHVybmVkIG9uLCB0aGUgYGZvcm1EYXRhYCB3aWxsIGJlIGZpbHRlcmVkIHRvIHJlbW92ZSBhbnkgZXh0cmEgZGF0YSBub3RcbiAgICAgICAgICogaW4gYSBmb3JtIGZpZWxkLiBUaGVuLCB0aGUgcmVzdWx0aW5nIGZvcm1EYXRhIHdpbGwgYmUgdmFsaWRhdGVkIGlmIHJlcXVpcmVkLiBUaGUgc3RhdGUgd2lsbCBiZSB1cGRhdGVkIHdpdGggdGhlIG5ld1xuICAgICAgICAgKiB1cGRhdGVkIChwb3RlbnRpYWxseSBmaWx0ZXJlZCkgYGZvcm1EYXRhYCwgYW55IGVycm9ycyB0aGF0IHJlc3VsdGVkIGZyb20gdmFsaWRhdGlvbi4gRmluYWxseSB0aGUgYG9uQ2hhbmdlYFxuICAgICAgICAgKiBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBpZiBzcGVjaWZpZWQgd2l0aCB0aGUgdXBkYXRlZCBzdGF0ZS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGZvcm1EYXRhIC0gVGhlIG5ldyBmb3JtIGRhdGEgZnJvbSBhIGNoYW5nZSB0byBhIGZpZWxkXG4gICAgICAgICAqIEBwYXJhbSBuZXdFcnJvclNjaGVtYSAtIFRoZSBuZXcgYEVycm9yU2NoZW1hYCBiYXNlZCBvbiB0aGUgZmllbGQgY2hhbmdlXG4gICAgICAgICAqIEBwYXJhbSBpZCAtIFRoZSBpZCBvZiB0aGUgZmllbGQgdGhhdCBjYXVzZWQgdGhlIGNoYW5nZVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IChmb3JtRGF0YSwgbmV3RXJyb3JTY2hlbWEsIGlkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGV4dHJhRXJyb3JzLCBvbWl0RXh0cmFEYXRhLCBsaXZlT21pdCwgbm9WYWxpZGF0ZSwgbGl2ZVZhbGlkYXRlLCBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIGNvbnN0IHsgc2NoZW1hVXRpbHMsIHNjaGVtYSwgcmV0cmlldmVkU2NoZW1hIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICAgICAgaWYgKGlzT2JqZWN0KGZvcm1EYXRhKSB8fCBBcnJheS5pc0FycmF5KGZvcm1EYXRhKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1N0YXRlID0gdGhpcy5nZXRTdGF0ZUZyb21Qcm9wcyh0aGlzLnByb3BzLCBmb3JtRGF0YSwgcmV0cmlldmVkU2NoZW1hKTtcbiAgICAgICAgICAgICAgICBmb3JtRGF0YSA9IG5ld1N0YXRlLmZvcm1EYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbXVzdFZhbGlkYXRlID0gIW5vVmFsaWRhdGUgJiYgbGl2ZVZhbGlkYXRlO1xuICAgICAgICAgICAgbGV0IHN0YXRlID0geyBmb3JtRGF0YSwgc2NoZW1hIH07XG4gICAgICAgICAgICBsZXQgbmV3Rm9ybURhdGEgPSBmb3JtRGF0YTtcbiAgICAgICAgICAgIGlmIChvbWl0RXh0cmFEYXRhID09PSB0cnVlICYmIGxpdmVPbWl0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgbmV3Rm9ybURhdGEgPSB0aGlzLm9taXRFeHRyYURhdGEoZm9ybURhdGEpO1xuICAgICAgICAgICAgICAgIHN0YXRlID0ge1xuICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YTogbmV3Rm9ybURhdGEsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtdXN0VmFsaWRhdGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzY2hlbWFWYWxpZGF0aW9uID0gdGhpcy52YWxpZGF0ZShuZXdGb3JtRGF0YSwgc2NoZW1hLCBzY2hlbWFVdGlscywgcmV0cmlldmVkU2NoZW1hKTtcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3JzID0gc2NoZW1hVmFsaWRhdGlvbi5lcnJvcnM7XG4gICAgICAgICAgICAgICAgbGV0IGVycm9yU2NoZW1hID0gc2NoZW1hVmFsaWRhdGlvbi5lcnJvclNjaGVtYTtcbiAgICAgICAgICAgICAgICBjb25zdCBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzID0gZXJyb3JzO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjaGVtYVZhbGlkYXRpb25FcnJvclNjaGVtYSA9IGVycm9yU2NoZW1hO1xuICAgICAgICAgICAgICAgIGlmIChleHRyYUVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXJnZWQgPSB2YWxpZGF0aW9uRGF0YU1lcmdlKHNjaGVtYVZhbGlkYXRpb24sIGV4dHJhRXJyb3JzKTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JTY2hlbWEgPSBtZXJnZWQuZXJyb3JTY2hlbWE7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IG1lcmdlZC5lcnJvcnM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIE1lcmdpbmcgJ25ld0Vycm9yU2NoZW1hJyBpbnRvICdlcnJvclNjaGVtYScgdG8gZGlzcGxheSB0aGUgY3VzdG9tIHJhaXNlZCBlcnJvcnMuXG4gICAgICAgICAgICAgICAgaWYgKG5ld0Vycm9yU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkRXJyb3JzID0gdGhpcy5maWx0ZXJFcnJvcnNCYXNlZE9uU2NoZW1hKG5ld0Vycm9yU2NoZW1hLCByZXRyaWV2ZWRTY2hlbWEsIG5ld0Zvcm1EYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JTY2hlbWEgPSBtZXJnZU9iamVjdHMoZXJyb3JTY2hlbWEsIGZpbHRlcmVkRXJyb3JzLCAncHJldmVudER1cGxpY2F0ZXMnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhOiBuZXdGb3JtRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICBlcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghbm9WYWxpZGF0ZSAmJiBuZXdFcnJvclNjaGVtYSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yU2NoZW1hID0gZXh0cmFFcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgPyBtZXJnZU9iamVjdHMobmV3RXJyb3JTY2hlbWEsIGV4dHJhRXJyb3JzLCAncHJldmVudER1cGxpY2F0ZXMnKVxuICAgICAgICAgICAgICAgICAgICA6IG5ld0Vycm9yU2NoZW1hO1xuICAgICAgICAgICAgICAgIHN0YXRlID0ge1xuICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YTogbmV3Rm9ybURhdGEsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yU2NoZW1hOiBlcnJvclNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiB0b0Vycm9yTGlzdChlcnJvclNjaGVtYSksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoc3RhdGUsICgpID0+IG9uQ2hhbmdlICYmIG9uQ2hhbmdlKHsgLi4udGhpcy5zdGF0ZSwgLi4uc3RhdGUgfSwgaWQpKTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGhhbmRsZSByZXNldCBmb3JtIGRhdGEuXG4gICAgICAgICAqIC0gUmVzZXQgYWxsIGZpZWxkcyB3aXRoIGRlZmF1bHQgdmFsdWVzLlxuICAgICAgICAgKiAtIFJlc2V0IHZhbGlkYXRpb25zIGFuZCBlcnJvcnNcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucmVzZXQgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB0aGlzLmdldFN0YXRlRnJvbVByb3BzKHRoaXMucHJvcHMsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICBjb25zdCBuZXdGb3JtRGF0YSA9IG5ld1N0YXRlLmZvcm1EYXRhO1xuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgZm9ybURhdGE6IG5ld0Zvcm1EYXRhLFxuICAgICAgICAgICAgICAgIGVycm9yU2NoZW1hOiB7fSxcbiAgICAgICAgICAgICAgICBlcnJvcnM6IFtdLFxuICAgICAgICAgICAgICAgIHNjaGVtYVZhbGlkYXRpb25FcnJvcnM6IFtdLFxuICAgICAgICAgICAgICAgIHNjaGVtYVZhbGlkYXRpb25FcnJvclNjaGVtYToge30sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZShzdGF0ZSwgKCkgPT4gb25DaGFuZ2UgJiYgb25DaGFuZ2UoeyAuLi50aGlzLnN0YXRlLCAuLi5zdGF0ZSB9KSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBDYWxsYmFjayBmdW5jdGlvbiB0byBoYW5kbGUgd2hlbiBhIGZpZWxkIG9uIHRoZSBmb3JtIGlzIGJsdXJyZWQuIENhbGxzIHRoZSBgb25CbHVyYCBjYWxsYmFjayBmb3IgdGhlIGBGb3JtYCBpZiBpdFxuICAgICAgICAgKiB3YXMgcHJvdmlkZWQuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSBpZCAtIFRoZSB1bmlxdWUgYGlkYCBvZiB0aGUgZmllbGQgdGhhdCB3YXMgYmx1cnJlZFxuICAgICAgICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmllbGQgdGhhdCB3YXMgYmx1cnJlZFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vbkJsdXIgPSAoaWQsIGRhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgb25CbHVyIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgaWYgKG9uQmx1cikge1xuICAgICAgICAgICAgICAgIG9uQmx1cihpZCwgZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBDYWxsYmFjayBmdW5jdGlvbiB0byBoYW5kbGUgd2hlbiBhIGZpZWxkIG9uIHRoZSBmb3JtIGlzIGZvY3VzZWQuIENhbGxzIHRoZSBgb25Gb2N1c2AgY2FsbGJhY2sgZm9yIHRoZSBgRm9ybWAgaWYgaXRcbiAgICAgICAgICogd2FzIHByb3ZpZGVkLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gaWQgLSBUaGUgdW5pcXVlIGBpZGAgb2YgdGhlIGZpZWxkIHRoYXQgd2FzIGZvY3VzZWRcbiAgICAgICAgICogQHBhcmFtIGRhdGEgLSBUaGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIGZpZWxkIHRoYXQgd2FzIGZvY3VzZWRcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub25Gb2N1cyA9IChpZCwgZGF0YSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBvbkZvY3VzIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgaWYgKG9uRm9jdXMpIHtcbiAgICAgICAgICAgICAgICBvbkZvY3VzKGlkLCBkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLyoqIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGhhbmRsZSB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZC4gRmlyc3QsIGl0IHByZXZlbnRzIHRoZSBkZWZhdWx0IGV2ZW50IGJlaGF2aW9yLiBOb3RoaW5nXG4gICAgICAgICAqIGhhcHBlbnMgaWYgdGhlIHRhcmdldCBhbmQgY3VycmVudFRhcmdldCBvZiB0aGUgZXZlbnQgYXJlIG5vdCB0aGUgc2FtZS4gSXQgd2lsbCBvbWl0IGFueSBleHRyYSBkYXRhIGluIHRoZVxuICAgICAgICAgKiBgZm9ybURhdGFgIGluIHRoZSBzdGF0ZSBpZiBgb21pdEV4dHJhRGF0YWAgaXMgdHJ1ZS4gSXQgd2lsbCB2YWxpZGF0ZSB0aGUgcmVzdWx0aW5nIGBmb3JtRGF0YWAsIHJlcG9ydGluZyBlcnJvcnNcbiAgICAgICAgICogdmlhIHRoZSBgb25FcnJvcigpYCBjYWxsYmFjayB1bmxlc3MgdmFsaWRhdGlvbiBpcyBkaXNhYmxlZC4gRmluYWxseSwgaXQgd2lsbCBhZGQgaW4gYW55IGBleHRyYUVycm9yc2AgYW5kIHRoZW4gY2FsbFxuICAgICAgICAgKiBiYWNrIHRoZSBgb25TdWJtaXRgIGNhbGxiYWNrIGlmIGl0IHdhcyBwcm92aWRlZC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGV2ZW50IC0gVGhlIHN1Ym1pdCBIVE1MIGZvcm0gZXZlbnRcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub25TdWJtaXQgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSBldmVudC5jdXJyZW50VGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQucGVyc2lzdCgpO1xuICAgICAgICAgICAgY29uc3QgeyBvbWl0RXh0cmFEYXRhLCBleHRyYUVycm9ycywgbm9WYWxpZGF0ZSwgb25TdWJtaXQgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICBsZXQgeyBmb3JtRGF0YTogbmV3Rm9ybURhdGEgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgICAgICBpZiAob21pdEV4dHJhRGF0YSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIG5ld0Zvcm1EYXRhID0gdGhpcy5vbWl0RXh0cmFEYXRhKG5ld0Zvcm1EYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChub1ZhbGlkYXRlIHx8IHRoaXMudmFsaWRhdGVGb3JtV2l0aEZvcm1EYXRhKG5ld0Zvcm1EYXRhKSkge1xuICAgICAgICAgICAgICAgIC8vIFRoZXJlIGFyZSBubyBlcnJvcnMgZ2VuZXJhdGVkIHRocm91Z2ggc2NoZW1hIHZhbGlkYXRpb24uXG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIHVzZXIgcHJvdmlkZWQgZXJyb3JzIGFuZCB1cGRhdGUgc3RhdGUgYWNjb3JkaW5nbHkuXG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3JTY2hlbWEgPSBleHRyYUVycm9ycyB8fCB7fTtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvcnMgPSBleHRyYUVycm9ycyA/IHRvRXJyb3JMaXN0KGV4dHJhRXJyb3JzKSA6IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YTogbmV3Rm9ybURhdGEsXG4gICAgICAgICAgICAgICAgICAgIGVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIHNjaGVtYVZhbGlkYXRpb25FcnJvcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JTY2hlbWE6IHt9LFxuICAgICAgICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9uU3VibWl0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdCh7IC4uLnRoaXMuc3RhdGUsIGZvcm1EYXRhOiBuZXdGb3JtRGF0YSwgc3RhdHVzOiAnc3VibWl0dGVkJyB9LCBldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLyoqIFByb3ZpZGVzIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB0byBwcm9ncmFtbWF0aWNhbGx5IHN1Ym1pdCB0aGUgYEZvcm1gICovXG4gICAgICAgIHRoaXMuc3VibWl0ID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybUVsZW1lbnQuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1Ym1pdEN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdzdWJtaXQnLCB7XG4gICAgICAgICAgICAgICAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc3VibWl0Q3VzdG9tRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1FbGVtZW50LmN1cnJlbnQuZGlzcGF0Y2hFdmVudChzdWJtaXRDdXN0b21FdmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtRWxlbWVudC5jdXJyZW50LnJlcXVlc3RTdWJtaXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLyoqIFZhbGlkYXRlcyB0aGUgZm9ybSB1c2luZyB0aGUgZ2l2ZW4gYGZvcm1EYXRhYC4gRm9yIHVzZSBvbiBmb3JtIHN1Ym1pc3Npb24gb3Igb24gcHJvZ3JhbW1hdGljIHZhbGlkYXRpb24uXG4gICAgICAgICAqIElmIGBvbkVycm9yYCBpcyBwcm92aWRlZCwgdGhlbiBpdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBsaXN0IG9mIGVycm9ycy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGZvcm1EYXRhIC0gVGhlIGZvcm0gZGF0YSB0byB2YWxpZGF0ZVxuICAgICAgICAgKiBAcmV0dXJucyAtIFRydWUgaWYgdGhlIGZvcm0gaXMgdmFsaWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMudmFsaWRhdGVGb3JtV2l0aEZvcm1EYXRhID0gKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGV4dHJhRXJyb3JzLCBleHRyYUVycm9yc0Jsb2NrU3VibWl0LCBmb2N1c09uRmlyc3RFcnJvciwgb25FcnJvciB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIGNvbnN0IHsgZXJyb3JzOiBwcmV2RXJyb3JzIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICAgICAgY29uc3Qgc2NoZW1hVmFsaWRhdGlvbiA9IHRoaXMudmFsaWRhdGUoZm9ybURhdGEpO1xuICAgICAgICAgICAgbGV0IGVycm9ycyA9IHNjaGVtYVZhbGlkYXRpb24uZXJyb3JzO1xuICAgICAgICAgICAgbGV0IGVycm9yU2NoZW1hID0gc2NoZW1hVmFsaWRhdGlvbi5lcnJvclNjaGVtYTtcbiAgICAgICAgICAgIGNvbnN0IHNjaGVtYVZhbGlkYXRpb25FcnJvcnMgPSBlcnJvcnM7XG4gICAgICAgICAgICBjb25zdCBzY2hlbWFWYWxpZGF0aW9uRXJyb3JTY2hlbWEgPSBlcnJvclNjaGVtYTtcbiAgICAgICAgICAgIGNvbnN0IGhhc0Vycm9yID0gZXJyb3JzLmxlbmd0aCA+IDAgfHwgKGV4dHJhRXJyb3JzICYmIGV4dHJhRXJyb3JzQmxvY2tTdWJtaXQpO1xuICAgICAgICAgICAgaWYgKGhhc0Vycm9yKSB7XG4gICAgICAgICAgICAgICAgaWYgKGV4dHJhRXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lcmdlZCA9IHZhbGlkYXRpb25EYXRhTWVyZ2Uoc2NoZW1hVmFsaWRhdGlvbiwgZXh0cmFFcnJvcnMpO1xuICAgICAgICAgICAgICAgICAgICBlcnJvclNjaGVtYSA9IG1lcmdlZC5lcnJvclNjaGVtYTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gbWVyZ2VkLmVycm9ycztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZvY3VzT25GaXJzdEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZm9jdXNPbkZpcnN0RXJyb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzT25GaXJzdEVycm9yKGVycm9yc1swXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzT25FcnJvcihlcnJvcnNbMF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yU2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JTY2hlbWEsXG4gICAgICAgICAgICAgICAgfSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAob25FcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25FcnJvcihlcnJvcnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRm9ybSB2YWxpZGF0aW9uIGZhaWxlZCcsIGVycm9ycyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHByZXZFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBlcnJvclNjaGVtYToge30sXG4gICAgICAgICAgICAgICAgICAgIHNjaGVtYVZhbGlkYXRpb25FcnJvcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JTY2hlbWE6IHt9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICFoYXNFcnJvcjtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCFwcm9wcy52YWxpZGF0b3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQSB2YWxpZGF0b3IgaXMgcmVxdWlyZWQgZm9yIEZvcm0gZnVuY3Rpb25hbGl0eSB0byB3b3JrJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuZ2V0U3RhdGVGcm9tUHJvcHMocHJvcHMsIHByb3BzLmZvcm1EYXRhKTtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25DaGFuZ2UgJiYgIWRlZXBFcXVhbHModGhpcy5zdGF0ZS5mb3JtRGF0YSwgdGhpcy5wcm9wcy5mb3JtRGF0YSkpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UodGhpcy5zdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb3JtRWxlbWVudCA9IGNyZWF0ZVJlZigpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGVgIGlzIGEgUmVhY3QgbGlmZWN5Y2xlIG1ldGhvZCB0aGF0IGlzIGludm9rZWQgcmlnaHQgYmVmb3JlIHRoZSBtb3N0IHJlY2VudGx5IHJlbmRlcmVkXG4gICAgICogb3V0cHV0IGlzIGNvbW1pdHRlZCB0byB0aGUgRE9NLiBJdCBlbmFibGVzIHlvdXIgY29tcG9uZW50IHRvIGNhcHR1cmUgY3VycmVudCB2YWx1ZXMgKGUuZy4sIHNjcm9sbCBwb3NpdGlvbikgYmVmb3JlXG4gICAgICogdGhleSBhcmUgcG90ZW50aWFsbHkgY2hhbmdlZC5cbiAgICAgKlxuICAgICAqIEluIHRoaXMgY2FzZSwgaXQgY2hlY2tzIGlmIHRoZSBwcm9wcyBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgcmVuZGVyLiBJZiB0aGV5IGhhdmUsIGl0IGNvbXB1dGVzIHRoZSBuZXh0IHN0YXRlXG4gICAgICogb2YgdGhlIGNvbXBvbmVudCB1c2luZyBgZ2V0U3RhdGVGcm9tUHJvcHNgIG1ldGhvZCBhbmQgcmV0dXJucyBpdCBhbG9uZyB3aXRoIGEgYHNob3VsZFVwZGF0ZWAgZmxhZyBzZXQgdG8gYHRydWVgIElGXG4gICAgICogdGhlIGBuZXh0U3RhdGVgIGFuZCBgcHJldlN0YXRlYCBhcmUgZGlmZmVyZW50LCBvdGhlcndpc2UgYGZhbHNlYC4gVGhpcyBlbnN1cmVzIHRoYXQgd2UgaGF2ZSB0aGUgbW9zdCB1cC10by1kYXRlXG4gICAgICogc3RhdGUgcmVhZHkgdG8gYmUgYXBwbGllZCBpbiBgY29tcG9uZW50RGlkVXBkYXRlYC5cbiAgICAgKlxuICAgICAqIElmIGBmb3JtRGF0YWAgaGFzbid0IGNoYW5nZWQsIGl0IHNpbXBseSByZXR1cm5zIGFuIG9iamVjdCB3aXRoIGBzaG91bGRVcGRhdGVgIHNldCB0byBgZmFsc2VgLCBpbmRpY2F0aW5nIHRoYXQgYVxuICAgICAqIHN0YXRlIHVwZGF0ZSBpcyBub3QgbmVjZXNzYXJ5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHByZXZQcm9wcyAtIFRoZSBwcmV2aW91cyBzZXQgb2YgcHJvcHMgYmVmb3JlIHRoZSB1cGRhdGUuXG4gICAgICogQHBhcmFtIHByZXZTdGF0ZSAtIFRoZSBwcmV2aW91cyBzdGF0ZSBiZWZvcmUgdGhlIHVwZGF0ZS5cbiAgICAgKiBAcmV0dXJucyBFaXRoZXIgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG5leHQgc3RhdGUgYW5kIGEgZmxhZyBpbmRpY2F0aW5nIHRoYXQgYW4gdXBkYXRlIHNob3VsZCBvY2N1ciwgb3IgYW4gb2JqZWN0XG4gICAgICogICAgICAgIHdpdGggYSBmbGFnIGluZGljYXRpbmcgdGhhdCBhbiB1cGRhdGUgaXMgbm90IG5lY2Vzc2FyeS5cbiAgICAgKi9cbiAgICBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShwcmV2UHJvcHMsIHByZXZTdGF0ZSkge1xuICAgICAgICBpZiAoIWRlZXBFcXVhbHModGhpcy5wcm9wcywgcHJldlByb3BzKSkge1xuICAgICAgICAgICAgY29uc3QgaXNTY2hlbWFDaGFuZ2VkID0gIWRlZXBFcXVhbHMocHJldlByb3BzLnNjaGVtYSwgdGhpcy5wcm9wcy5zY2hlbWEpO1xuICAgICAgICAgICAgY29uc3QgaXNGb3JtRGF0YUNoYW5nZWQgPSAhZGVlcEVxdWFscyhwcmV2UHJvcHMuZm9ybURhdGEsIHRoaXMucHJvcHMuZm9ybURhdGEpO1xuICAgICAgICAgICAgY29uc3QgbmV4dFN0YXRlID0gdGhpcy5nZXRTdGF0ZUZyb21Qcm9wcyh0aGlzLnByb3BzLCB0aGlzLnByb3BzLmZvcm1EYXRhLCBcbiAgICAgICAgICAgIC8vIElmIHRoZSBgc2NoZW1hYCBoYXMgY2hhbmdlZCwgd2UgbmVlZCB0byB1cGRhdGUgdGhlIHJldHJpZXZlZCBzY2hlbWEuXG4gICAgICAgICAgICAvLyBPciBpZiB0aGUgYGZvcm1EYXRhYCBjaGFuZ2VzLCBmb3IgZXhhbXBsZSBpbiB0aGUgY2FzZSBvZiBhIHNjaGVtYSB3aXRoIGRlcGVuZGVuY2llcyB0aGF0IG5lZWQgdG9cbiAgICAgICAgICAgIC8vICBtYXRjaCBvbmUgb2YgdGhlIHN1YlNjaGVtYXMsIHRoZSByZXRyaWV2ZWQgc2NoZW1hIG11c3QgYmUgdXBkYXRlZC5cbiAgICAgICAgICAgIGlzU2NoZW1hQ2hhbmdlZCB8fCBpc0Zvcm1EYXRhQ2hhbmdlZCA/IHVuZGVmaW5lZCA6IHRoaXMuc3RhdGUucmV0cmlldmVkU2NoZW1hLCBpc1NjaGVtYUNoYW5nZWQpO1xuICAgICAgICAgICAgY29uc3Qgc2hvdWxkVXBkYXRlID0gIWRlZXBFcXVhbHMobmV4dFN0YXRlLCBwcmV2U3RhdGUpO1xuICAgICAgICAgICAgcmV0dXJuIHsgbmV4dFN0YXRlLCBzaG91bGRVcGRhdGUgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzaG91bGRVcGRhdGU6IGZhbHNlIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIGBjb21wb25lbnREaWRVcGRhdGVgIGlzIGEgUmVhY3QgbGlmZWN5Y2xlIG1ldGhvZCB0aGF0IGlzIGludm9rZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdXBkYXRpbmcgb2NjdXJzLiBUaGlzIG1ldGhvZCBpc1xuICAgICAqIG5vdCBjYWxsZWQgZm9yIHRoZSBpbml0aWFsIHJlbmRlci5cbiAgICAgKlxuICAgICAqIEhlcmUsIGl0IGNoZWNrcyBpZiBhbiB1cGRhdGUgaXMgbmVjZXNzYXJ5IGJhc2VkIG9uIHRoZSBgc2hvdWxkVXBkYXRlYCBmbGFnIHJlY2VpdmVkIGZyb20gYGdldFNuYXBzaG90QmVmb3JlVXBkYXRlYC5cbiAgICAgKiBJZiBhbiB1cGRhdGUgaXMgcmVxdWlyZWQsIGl0IGFwcGxpZXMgdGhlIG5leHQgc3RhdGUgYW5kLCBpZiBuZWVkZWQsIHRyaWdnZXJzIHRoZSBgb25DaGFuZ2VgIGhhbmRsZXIgdG8gaW5mb3JtIGFib3V0XG4gICAgICogY2hhbmdlcy5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGVmZmVjdGl2ZWx5IHJlcGxhY2VzIHRoZSBkZXByZWNhdGVkIGBVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc2AsIHByb3ZpZGluZyBhIHNhZmVyIGFsdGVybmF0aXZlXG4gICAgICogdG8gaGFuZGxlIHByb3AgY2hhbmdlcyBhbmQgc3RhdGUgdXBkYXRlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBfIC0gVGhlIHByZXZpb3VzIHNldCBvZiBwcm9wcy5cbiAgICAgKiBAcGFyYW0gcHJldlN0YXRlIC0gVGhlIHByZXZpb3VzIHN0YXRlIG9mIHRoZSBjb21wb25lbnQgYmVmb3JlIHRoZSB1cGRhdGUuXG4gICAgICogQHBhcmFtIHNuYXBzaG90IC0gVGhlIHZhbHVlIHJldHVybmVkIGZyb20gYGdldFNuYXBzaG90QmVmb3JlVXBkYXRlYC5cbiAgICAgKi9cbiAgICBjb21wb25lbnREaWRVcGRhdGUoXywgcHJldlN0YXRlLCBzbmFwc2hvdCkge1xuICAgICAgICBpZiAoc25hcHNob3Quc2hvdWxkVXBkYXRlKSB7XG4gICAgICAgICAgICBjb25zdCB7IG5leHRTdGF0ZSB9ID0gc25hcHNob3Q7XG4gICAgICAgICAgICBpZiAoIWRlZXBFcXVhbHMobmV4dFN0YXRlLmZvcm1EYXRhLCB0aGlzLnByb3BzLmZvcm1EYXRhKSAmJlxuICAgICAgICAgICAgICAgICFkZWVwRXF1YWxzKG5leHRTdGF0ZS5mb3JtRGF0YSwgcHJldlN0YXRlLmZvcm1EYXRhKSAmJlxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKG5leHRTdGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKG5leHRTdGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqIEV4dHJhY3RzIHRoZSB1cGRhdGVkIHN0YXRlIGZyb20gdGhlIGdpdmVuIGBwcm9wc2AgYW5kIGBpbnB1dEZvcm1EYXRhYC4gQXMgcGFydCBvZiB0aGlzIHByb2Nlc3MsIHRoZVxuICAgICAqIGBpbnB1dEZvcm1EYXRhYCBpcyBmaXJzdCBwcm9jZXNzZWQgdG8gYWRkIGFueSBtaXNzaW5nIHJlcXVpcmVkIGRlZmF1bHRzLiBBZnRlciB0aGF0LCB0aGUgZGF0YSBpcyBydW4gdGhyb3VnaCB0aGVcbiAgICAgKiB2YWxpZGF0aW9uIHByb2Nlc3MgSUYgcmVxdWlyZWQgYnkgdGhlIGBwcm9wc2AuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvcHMgLSBUaGUgcHJvcHMgcGFzc2VkIHRvIHRoZSBgRm9ybWBcbiAgICAgKiBAcGFyYW0gaW5wdXRGb3JtRGF0YSAtIFRoZSBuZXcgb3IgY3VycmVudCBkYXRhIGZvciB0aGUgYEZvcm1gXG4gICAgICogQHBhcmFtIHJldHJpZXZlZFNjaGVtYSAtIEFuIGV4cGFuZGVkIHNjaGVtYSwgaWYgbm90IHByb3ZpZGVkLCBpdCB3aWxsIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBgc2NoZW1hYCBhbmQgYGZvcm1EYXRhYC5cbiAgICAgKiBAcGFyYW0gaXNTY2hlbWFDaGFuZ2VkIC0gQSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgc2NoZW1hIGhhcyBjaGFuZ2VkLlxuICAgICAqIEByZXR1cm5zIC0gVGhlIG5ldyBzdGF0ZSBmb3IgdGhlIGBGb3JtYFxuICAgICAqL1xuICAgIGdldFN0YXRlRnJvbVByb3BzKHByb3BzLCBpbnB1dEZvcm1EYXRhLCByZXRyaWV2ZWRTY2hlbWEsIGlzU2NoZW1hQ2hhbmdlZCA9IGZhbHNlKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlIHx8IHt9O1xuICAgICAgICBjb25zdCBzY2hlbWEgPSAnc2NoZW1hJyBpbiBwcm9wcyA/IHByb3BzLnNjaGVtYSA6IHRoaXMucHJvcHMuc2NoZW1hO1xuICAgICAgICBjb25zdCB1aVNjaGVtYSA9ICgndWlTY2hlbWEnIGluIHByb3BzID8gcHJvcHMudWlTY2hlbWEgOiB0aGlzLnByb3BzLnVpU2NoZW1hKSB8fCB7fTtcbiAgICAgICAgY29uc3QgZWRpdCA9IHR5cGVvZiBpbnB1dEZvcm1EYXRhICE9PSAndW5kZWZpbmVkJztcbiAgICAgICAgY29uc3QgbGl2ZVZhbGlkYXRlID0gJ2xpdmVWYWxpZGF0ZScgaW4gcHJvcHMgPyBwcm9wcy5saXZlVmFsaWRhdGUgOiB0aGlzLnByb3BzLmxpdmVWYWxpZGF0ZTtcbiAgICAgICAgY29uc3QgbXVzdFZhbGlkYXRlID0gZWRpdCAmJiAhcHJvcHMubm9WYWxpZGF0ZSAmJiBsaXZlVmFsaWRhdGU7XG4gICAgICAgIGNvbnN0IHJvb3RTY2hlbWEgPSBzY2hlbWE7XG4gICAgICAgIGNvbnN0IGV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IgPSAnZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvcicgaW4gcHJvcHNcbiAgICAgICAgICAgID8gcHJvcHMuZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvclxuICAgICAgICAgICAgOiB0aGlzLnByb3BzLmV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3I7XG4gICAgICAgIGNvbnN0IGV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mID0gJ2V4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mJyBpbiBwcm9wc1xuICAgICAgICAgICAgPyBwcm9wcy5leHBlcmltZW50YWxfY3VzdG9tTWVyZ2VBbGxPZlxuICAgICAgICAgICAgOiB0aGlzLnByb3BzLmV4cGVyaW1lbnRhbF9jdXN0b21NZXJnZUFsbE9mO1xuICAgICAgICBsZXQgc2NoZW1hVXRpbHMgPSBzdGF0ZS5zY2hlbWFVdGlscztcbiAgICAgICAgaWYgKCFzY2hlbWFVdGlscyB8fFxuICAgICAgICAgICAgc2NoZW1hVXRpbHMuZG9lc1NjaGVtYVV0aWxzRGlmZmVyKHByb3BzLnZhbGlkYXRvciwgcm9vdFNjaGVtYSwgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpKSB7XG4gICAgICAgICAgICBzY2hlbWFVdGlscyA9IGNyZWF0ZVNjaGVtYVV0aWxzKHByb3BzLnZhbGlkYXRvciwgcm9vdFNjaGVtYSwgZXhwZXJpbWVudGFsX2RlZmF1bHRGb3JtU3RhdGVCZWhhdmlvciwgZXhwZXJpbWVudGFsX2N1c3RvbU1lcmdlQWxsT2YpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gc2NoZW1hVXRpbHMuZ2V0RGVmYXVsdEZvcm1TdGF0ZShzY2hlbWEsIGlucHV0Rm9ybURhdGEpO1xuICAgICAgICBjb25zdCBfcmV0cmlldmVkU2NoZW1hID0gcmV0cmlldmVkU2NoZW1hICE9PSBudWxsICYmIHJldHJpZXZlZFNjaGVtYSAhPT0gdm9pZCAwID8gcmV0cmlldmVkU2NoZW1hIDogc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEoc2NoZW1hLCBmb3JtRGF0YSk7XG4gICAgICAgIGNvbnN0IGdldEN1cnJlbnRFcnJvcnMgPSAoKSA9PiB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgYHByb3BzLm5vVmFsaWRhdGVgIG9wdGlvbiBpcyBzZXQgb3IgdGhlIHNjaGVtYSBoYXMgY2hhbmdlZCwgd2UgcmVzZXQgdGhlIGVycm9yIHN0YXRlLlxuICAgICAgICAgICAgaWYgKHByb3BzLm5vVmFsaWRhdGUgfHwgaXNTY2hlbWFDaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3JzOiBbXSwgZXJyb3JTY2hlbWE6IHt9IH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghcHJvcHMubGl2ZVZhbGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiBzdGF0ZS5zY2hlbWFWYWxpZGF0aW9uRXJyb3JzIHx8IFtdLFxuICAgICAgICAgICAgICAgICAgICBlcnJvclNjaGVtYTogc3RhdGUuc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hIHx8IHt9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGVycm9yczogc3RhdGUuZXJyb3JzIHx8IFtdLFxuICAgICAgICAgICAgICAgIGVycm9yU2NoZW1hOiBzdGF0ZS5lcnJvclNjaGVtYSB8fCB7fSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIGxldCBlcnJvcnM7XG4gICAgICAgIGxldCBlcnJvclNjaGVtYTtcbiAgICAgICAgbGV0IHNjaGVtYVZhbGlkYXRpb25FcnJvcnMgPSBzdGF0ZS5zY2hlbWFWYWxpZGF0aW9uRXJyb3JzO1xuICAgICAgICBsZXQgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hID0gc3RhdGUuc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hO1xuICAgICAgICBpZiAobXVzdFZhbGlkYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBzY2hlbWFWYWxpZGF0aW9uID0gdGhpcy52YWxpZGF0ZShmb3JtRGF0YSwgc2NoZW1hLCBzY2hlbWFVdGlscywgX3JldHJpZXZlZFNjaGVtYSk7XG4gICAgICAgICAgICBlcnJvcnMgPSBzY2hlbWFWYWxpZGF0aW9uLmVycm9ycztcbiAgICAgICAgICAgIC8vIElmIHJldHJpZXZlZFNjaGVtYSBpcyB1bmRlZmluZWQgd2hpY2ggbWVhbnMgdGhlIHNjaGVtYSBvciBmb3JtRGF0YSBoYXMgY2hhbmdlZCwgd2UgZG8gbm90IG1lcmdlIHN0YXRlLlxuICAgICAgICAgICAgLy8gRWxzZSBpbiB0aGUgY2FzZSB3aGVyZSBpdCBoYXNuJ3QgY2hhbmdlZCwgd2UgbWVyZ2UgJ3N0YXRlLmVycm9yU2NoZW1hJyB3aXRoICdzY2hlbWFWYWxpZGF0aW9uLmVycm9yU2NoZW1hLicgVGhpcyBkb25lIHRvIGRpc3BsYXkgdGhlIHJhaXNlZCBmaWVsZCBlcnJvci5cbiAgICAgICAgICAgIGlmIChyZXRyaWV2ZWRTY2hlbWEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGVycm9yU2NoZW1hID0gc2NoZW1hVmFsaWRhdGlvbi5lcnJvclNjaGVtYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGVycm9yU2NoZW1hID0gbWVyZ2VPYmplY3RzKChfYSA9IHRoaXMuc3RhdGUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5lcnJvclNjaGVtYSwgc2NoZW1hVmFsaWRhdGlvbi5lcnJvclNjaGVtYSwgJ3ByZXZlbnREdXBsaWNhdGVzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzID0gZXJyb3JzO1xuICAgICAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hID0gZXJyb3JTY2hlbWE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RXJyb3JzID0gZ2V0Q3VycmVudEVycm9ycygpO1xuICAgICAgICAgICAgZXJyb3JzID0gY3VycmVudEVycm9ycy5lcnJvcnM7XG4gICAgICAgICAgICBlcnJvclNjaGVtYSA9IGN1cnJlbnRFcnJvcnMuZXJyb3JTY2hlbWE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb3BzLmV4dHJhRXJyb3JzKSB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWQgPSB2YWxpZGF0aW9uRGF0YU1lcmdlKHsgZXJyb3JTY2hlbWEsIGVycm9ycyB9LCBwcm9wcy5leHRyYUVycm9ycyk7XG4gICAgICAgICAgICBlcnJvclNjaGVtYSA9IG1lcmdlZC5lcnJvclNjaGVtYTtcbiAgICAgICAgICAgIGVycm9ycyA9IG1lcmdlZC5lcnJvcnM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaWRTY2hlbWEgPSBzY2hlbWFVdGlscy50b0lkU2NoZW1hKF9yZXRyaWV2ZWRTY2hlbWEsIHVpU2NoZW1hWyd1aTpyb290RmllbGRJZCddLCBmb3JtRGF0YSwgcHJvcHMuaWRQcmVmaXgsIHByb3BzLmlkU2VwYXJhdG9yKTtcbiAgICAgICAgY29uc3QgbmV4dFN0YXRlID0ge1xuICAgICAgICAgICAgc2NoZW1hVXRpbHMsXG4gICAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgICB1aVNjaGVtYSxcbiAgICAgICAgICAgIGlkU2NoZW1hLFxuICAgICAgICAgICAgZm9ybURhdGEsXG4gICAgICAgICAgICBlZGl0LFxuICAgICAgICAgICAgZXJyb3JzLFxuICAgICAgICAgICAgZXJyb3JTY2hlbWEsXG4gICAgICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzLFxuICAgICAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hLFxuICAgICAgICAgICAgcmV0cmlldmVkU2NoZW1hOiBfcmV0cmlldmVkU2NoZW1hLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbmV4dFN0YXRlO1xuICAgIH1cbiAgICAvKiogUmVhY3QgbGlmZWN5Y2xlIG1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgY29tcG9uZW50IHNob3VsZCBiZSB1cGRhdGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIG5leHRQcm9wcyAtIFRoZSBuZXh0IHZlcnNpb24gb2YgdGhlIHByb3BzXG4gICAgICogQHBhcmFtIG5leHRTdGF0ZSAtIFRoZSBuZXh0IHZlcnNpb24gb2YgdGhlIHN0YXRlXG4gICAgICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIHVwZGF0ZWQsIGZhbHNlIG90aGVyd2lzZVxuICAgICAqL1xuICAgIHNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSkge1xuICAgICAgICByZXR1cm4gc2hvdWxkUmVuZGVyKHRoaXMsIG5leHRQcm9wcywgbmV4dFN0YXRlKTtcbiAgICB9XG4gICAgLyoqIFZhbGlkYXRlcyB0aGUgYGZvcm1EYXRhYCBhZ2FpbnN0IHRoZSBgc2NoZW1hYCB1c2luZyB0aGUgYGFsdFNjaGVtYVV0aWxzYCAoaWYgcHJvdmlkZWQgb3RoZXJ3aXNlIGl0IHVzZXMgdGhlXG4gICAgICogYHNjaGVtYVV0aWxzYCBpbiB0aGUgc3RhdGUpLCByZXR1cm5pbmcgdGhlIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9ybURhdGEgLSBUaGUgbmV3IGZvcm0gZGF0YSB0byB2YWxpZGF0ZVxuICAgICAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgc2NoZW1hIHVzZWQgdG8gdmFsaWRhdGUgYWdhaW5zdFxuICAgICAqIEBwYXJhbSBhbHRTY2hlbWFVdGlscyAtIFRoZSBhbHRlcm5hdGUgc2NoZW1hVXRpbHMgdG8gdXNlIGZvciB2YWxpZGF0aW9uXG4gICAgICovXG4gICAgdmFsaWRhdGUoZm9ybURhdGEsIHNjaGVtYSA9IHRoaXMucHJvcHMuc2NoZW1hLCBhbHRTY2hlbWFVdGlscywgcmV0cmlldmVkU2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IHNjaGVtYVV0aWxzID0gYWx0U2NoZW1hVXRpbHMgPyBhbHRTY2hlbWFVdGlscyA6IHRoaXMuc3RhdGUuc2NoZW1hVXRpbHM7XG4gICAgICAgIGNvbnN0IHsgY3VzdG9tVmFsaWRhdGUsIHRyYW5zZm9ybUVycm9ycywgdWlTY2hlbWEgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkU2NoZW1hID0gcmV0cmlldmVkU2NoZW1hICE9PSBudWxsICYmIHJldHJpZXZlZFNjaGVtYSAhPT0gdm9pZCAwID8gcmV0cmlldmVkU2NoZW1hIDogc2NoZW1hVXRpbHMucmV0cmlldmVTY2hlbWEoc2NoZW1hLCBmb3JtRGF0YSk7XG4gICAgICAgIHJldHVybiBzY2hlbWFVdGlsc1xuICAgICAgICAgICAgLmdldFZhbGlkYXRvcigpXG4gICAgICAgICAgICAudmFsaWRhdGVGb3JtRGF0YShmb3JtRGF0YSwgcmVzb2x2ZWRTY2hlbWEsIGN1c3RvbVZhbGlkYXRlLCB0cmFuc2Zvcm1FcnJvcnMsIHVpU2NoZW1hKTtcbiAgICB9XG4gICAgLyoqIFJlbmRlcnMgYW55IGVycm9ycyBjb250YWluZWQgaW4gdGhlIGBzdGF0ZWAgaW4gdXNpbmcgdGhlIGBFcnJvckxpc3RgLCBpZiBub3QgZGlzYWJsZWQgYnkgYHNob3dFcnJvckxpc3RgLiAqL1xuICAgIHJlbmRlckVycm9ycyhyZWdpc3RyeSkge1xuICAgICAgICBjb25zdCB7IGVycm9ycywgZXJyb3JTY2hlbWEsIHNjaGVtYSwgdWlTY2hlbWEgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGNvbnN0IHsgZm9ybUNvbnRleHQgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRVaU9wdGlvbnModWlTY2hlbWEpO1xuICAgICAgICBjb25zdCBFcnJvckxpc3RUZW1wbGF0ZSA9IGdldFRlbXBsYXRlKCdFcnJvckxpc3RUZW1wbGF0ZScsIHJlZ2lzdHJ5LCBvcHRpb25zKTtcbiAgICAgICAgaWYgKGVycm9ycyAmJiBlcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gKF9qc3goRXJyb3JMaXN0VGVtcGxhdGUsIHsgZXJyb3JzOiBlcnJvcnMsIGVycm9yU2NoZW1hOiBlcnJvclNjaGVtYSB8fCB7fSwgc2NoZW1hOiBzY2hlbWEsIHVpU2NoZW1hOiB1aVNjaGVtYSwgZm9ybUNvbnRleHQ6IGZvcm1Db250ZXh0LCByZWdpc3RyeTogcmVnaXN0cnkgfSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBGaWx0ZXJpbmcgZXJyb3JzIGJhc2VkIG9uIHlvdXIgcmV0cmlldmVkIHNjaGVtYSB0byBvbmx5IHNob3cgZXJyb3JzIGZvciBwcm9wZXJ0aWVzIGluIHRoZSBzZWxlY3RlZCBicmFuY2guXG4gICAgZmlsdGVyRXJyb3JzQmFzZWRPblNjaGVtYShzY2hlbWFFcnJvcnMsIHJlc29sdmVkU2NoZW1hLCBmb3JtRGF0YSkge1xuICAgICAgICBjb25zdCB7IHJldHJpZXZlZFNjaGVtYSwgc2NoZW1hVXRpbHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGNvbnN0IF9yZXRyaWV2ZWRTY2hlbWEgPSByZXNvbHZlZFNjaGVtYSAhPT0gbnVsbCAmJiByZXNvbHZlZFNjaGVtYSAhPT0gdm9pZCAwID8gcmVzb2x2ZWRTY2hlbWEgOiByZXRyaWV2ZWRTY2hlbWE7XG4gICAgICAgIGNvbnN0IHBhdGhTY2hlbWEgPSBzY2hlbWFVdGlscy50b1BhdGhTY2hlbWEoX3JldHJpZXZlZFNjaGVtYSwgJycsIGZvcm1EYXRhKTtcbiAgICAgICAgY29uc3QgZmllbGROYW1lcyA9IHRoaXMuZ2V0RmllbGROYW1lcyhwYXRoU2NoZW1hLCBmb3JtRGF0YSk7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkRXJyb3JzID0gX3BpY2soc2NoZW1hRXJyb3JzLCBmaWVsZE5hbWVzKTtcbiAgICAgICAgLy8gSWYgdGhlIHJvb3Qgc2NoZW1hIGlzIG9mIGEgcHJpbWl0aXZlIHR5cGUsIGRvIG5vdCBmaWx0ZXIgb3V0IHRoZSBfX2Vycm9yc1xuICAgICAgICBpZiAoKHJlc29sdmVkU2NoZW1hID09PSBudWxsIHx8IHJlc29sdmVkU2NoZW1hID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNvbHZlZFNjaGVtYS50eXBlKSAhPT0gJ29iamVjdCcgJiYgKHJlc29sdmVkU2NoZW1hID09PSBudWxsIHx8IHJlc29sdmVkU2NoZW1hID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNvbHZlZFNjaGVtYS50eXBlKSAhPT0gJ2FycmF5Jykge1xuICAgICAgICAgICAgZmlsdGVyZWRFcnJvcnMuX19lcnJvcnMgPSBzY2hlbWFFcnJvcnMuX19lcnJvcnM7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVtb3ZpbmcgdW5kZWZpbmVkLCBudWxsIGFuZCBlbXB0eSBlcnJvcnMuXG4gICAgICAgIGNvbnN0IGZpbHRlck5pbE9yRW1wdHlFcnJvcnMgPSAoZXJyb3JzKSA9PiB7XG4gICAgICAgICAgICBfZm9yRWFjaChlcnJvcnMsIChlcnJvckF0S2V5LCBlcnJvcktleSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChfaXNOaWwoZXJyb3JBdEtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGVycm9yc1tlcnJvcktleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBlcnJvckF0S2V5ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShlcnJvckF0S2V5Ll9fZXJyb3JzKSkge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJOaWxPckVtcHR5RXJyb3JzKGVycm9yQXRLZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGVycm9ycztcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGZpbHRlck5pbE9yRW1wdHlFcnJvcnMoZmlsdGVyZWRFcnJvcnMpO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyB0aGUgcmVnaXN0cnkgZm9yIHRoZSBmb3JtICovXG4gICAgZ2V0UmVnaXN0cnkoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgeyB0cmFuc2xhdGVTdHJpbmc6IGN1c3RvbVRyYW5zbGF0ZVN0cmluZywgdWlTY2hlbWEgPSB7fSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyBzY2hlbWFVdGlscyB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgY29uc3QgeyBmaWVsZHMsIHRlbXBsYXRlcywgd2lkZ2V0cywgZm9ybUNvbnRleHQsIHRyYW5zbGF0ZVN0cmluZyB9ID0gZ2V0RGVmYXVsdFJlZ2lzdHJ5KCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmaWVsZHM6IHsgLi4uZmllbGRzLCAuLi50aGlzLnByb3BzLmZpZWxkcyB9LFxuICAgICAgICAgICAgdGVtcGxhdGVzOiB7XG4gICAgICAgICAgICAgICAgLi4udGVtcGxhdGVzLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMucHJvcHMudGVtcGxhdGVzLFxuICAgICAgICAgICAgICAgIEJ1dHRvblRlbXBsYXRlczoge1xuICAgICAgICAgICAgICAgICAgICAuLi50ZW1wbGF0ZXMuQnV0dG9uVGVtcGxhdGVzLFxuICAgICAgICAgICAgICAgICAgICAuLi4oX2EgPSB0aGlzLnByb3BzLnRlbXBsYXRlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLkJ1dHRvblRlbXBsYXRlcyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdpZGdldHM6IHsgLi4ud2lkZ2V0cywgLi4udGhpcy5wcm9wcy53aWRnZXRzIH0sXG4gICAgICAgICAgICByb290U2NoZW1hOiB0aGlzLnByb3BzLnNjaGVtYSxcbiAgICAgICAgICAgIGZvcm1Db250ZXh0OiB0aGlzLnByb3BzLmZvcm1Db250ZXh0IHx8IGZvcm1Db250ZXh0LFxuICAgICAgICAgICAgc2NoZW1hVXRpbHMsXG4gICAgICAgICAgICB0cmFuc2xhdGVTdHJpbmc6IGN1c3RvbVRyYW5zbGF0ZVN0cmluZyB8fCB0cmFuc2xhdGVTdHJpbmcsXG4gICAgICAgICAgICBnbG9iYWxVaU9wdGlvbnM6IHVpU2NoZW1hW1VJX0dMT0JBTF9PUFRJT05TX0tFWV0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKiBBdHRlbXB0cyB0byBmb2N1cyBvbiB0aGUgZmllbGQgYXNzb2NpYXRlZCB3aXRoIHRoZSBgZXJyb3JgLiBVc2VzIHRoZSBgcHJvcGVydHlgIGZpZWxkIHRvIGNvbXB1dGUgcGF0aCBvZiB0aGUgZXJyb3JcbiAgICAgKiBmaWVsZCwgdGhlbiwgdXNpbmcgdGhlIGBpZFByZWZpeGAgYW5kIGBpZFNlcGFyYXRvcmAgY29udmVydHMgdGhhdCBwYXRoIGludG8gYW4gaWQuIFRoZW4gdGhlIGlucHV0IGVsZW1lbnQgd2l0aCB0aGF0XG4gICAgICogaWQgaXMgYXR0ZW1wdGVkIHRvIGJlIGZvdW5kIHVzaW5nIHRoZSBgZm9ybUVsZW1lbnRgIHJlZi4gSWYgaXQgaXMgbG9jYXRlZCwgdGhlbiBpdCBpcyBmb2N1c2VkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGVycm9yIC0gVGhlIGVycm9yIG9uIHdoaWNoIHRvIGZvY3VzXG4gICAgICovXG4gICAgZm9jdXNPbkVycm9yKGVycm9yKSB7XG4gICAgICAgIGNvbnN0IHsgaWRQcmVmaXggPSAncm9vdCcsIGlkU2VwYXJhdG9yID0gJ18nIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IHByb3BlcnR5IH0gPSBlcnJvcjtcbiAgICAgICAgY29uc3QgcGF0aCA9IF90b1BhdGgocHJvcGVydHkpO1xuICAgICAgICBpZiAocGF0aFswXSA9PT0gJycpIHtcbiAgICAgICAgICAgIC8vIE1vc3Qgb2YgdGhlIHRpbWUgdGhlIGAuZm9vYCBwcm9wZXJ0eSByZXN1bHRzIGluIHRoZSBmaXJzdCBlbGVtZW50IGJlaW5nIGVtcHR5LCBzbyByZXBsYWNlIGl0IHdpdGggdGhlIGlkUHJlZml4XG4gICAgICAgICAgICBwYXRoWzBdID0gaWRQcmVmaXg7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBPdGhlcndpc2UgaW5zZXJ0IHRoZSBpZFByZWZpeCBpbnRvIHRoZSBmaXJzdCBsb2NhdGlvbiB1c2luZyB1bnNoaWZ0XG4gICAgICAgICAgICBwYXRoLnVuc2hpZnQoaWRQcmVmaXgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVsZW1lbnRJZCA9IHBhdGguam9pbihpZFNlcGFyYXRvcik7XG4gICAgICAgIGxldCBmaWVsZCA9IHRoaXMuZm9ybUVsZW1lbnQuY3VycmVudC5lbGVtZW50c1tlbGVtZW50SWRdO1xuICAgICAgICBpZiAoIWZpZWxkKSB7XG4gICAgICAgICAgICAvLyBpZiBub3QgYW4gZXhhY3QgbWF0Y2gsIHRyeSBmaW5kaW5nIGFuIGlucHV0IHN0YXJ0aW5nIHdpdGggdGhlIGVsZW1lbnQgaWQgKGxpa2UgcmFkaW8gYnV0dG9ucyBvciBjaGVja2JveGVzKVxuICAgICAgICAgICAgZmllbGQgPSB0aGlzLmZvcm1FbGVtZW50LmN1cnJlbnQucXVlcnlTZWxlY3RvcihgaW5wdXRbaWRePVwiJHtlbGVtZW50SWR9XCJgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmllbGQgJiYgZmllbGQubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSBnb3QgYSBsaXN0IHdpdGggbGVuZ3RoID4gMFxuICAgICAgICAgICAgZmllbGQgPSBmaWVsZFswXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgIGZpZWxkLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqIFByb2dyYW1tYXRpY2FsbHkgdmFsaWRhdGUgdGhlIGZvcm0uICBJZiBgb21pdEV4dHJhRGF0YWAgaXMgdHJ1ZSwgdGhlIGBmb3JtRGF0YWAgd2lsbCBmaXJzdCBiZSBmaWx0ZXJlZCB0byByZW1vdmVcbiAgICAgKiBhbnkgZXh0cmEgZGF0YSBub3QgaW4gYSBmb3JtIGZpZWxkLiBJZiBgb25FcnJvcmAgaXMgcHJvdmlkZWQsIHRoZW4gaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgbGlzdCBvZiBlcnJvcnMgdGhlXG4gICAgICogc2FtZSB3YXkgYXMgd291bGQgaGFwcGVuIG9uIGZvcm0gc3VibWlzc2lvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGUgZm9ybSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHZhbGlkYXRlRm9ybSgpIHtcbiAgICAgICAgY29uc3QgeyBvbWl0RXh0cmFEYXRhIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBsZXQgeyBmb3JtRGF0YTogbmV3Rm9ybURhdGEgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGlmIChvbWl0RXh0cmFEYXRhID09PSB0cnVlKSB7XG4gICAgICAgICAgICBuZXdGb3JtRGF0YSA9IHRoaXMub21pdEV4dHJhRGF0YShuZXdGb3JtRGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVGb3JtV2l0aEZvcm1EYXRhKG5ld0Zvcm1EYXRhKTtcbiAgICB9XG4gICAgLyoqIFJlbmRlcnMgdGhlIGBGb3JtYCBmaWVsZHMgaW5zaWRlIHRoZSA8Zm9ybT4gfCBgdGFnTmFtZWAgb3IgYF9pbnRlcm5hbEZvcm1XcmFwcGVyYCwgcmVuZGVyaW5nIGFueSBlcnJvcnMgaWZcbiAgICAgKiBuZWVkZWQgYWxvbmcgd2l0aCB0aGUgc3VibWl0IGJ1dHRvbiBvciBhbnkgY2hpbGRyZW4gb2YgdGhlIGZvcm0uXG4gICAgICovXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IGNoaWxkcmVuLCBpZCwgaWRQcmVmaXgsIGlkU2VwYXJhdG9yLCBjbGFzc05hbWUgPSAnJywgdGFnTmFtZSwgbmFtZSwgbWV0aG9kLCB0YXJnZXQsIGFjdGlvbiwgYXV0b0NvbXBsZXRlLCBlbmN0eXBlLCBhY2NlcHRjaGFyc2V0LCBhY2NlcHRDaGFyc2V0LCBub0h0bWw1VmFsaWRhdGUgPSBmYWxzZSwgZGlzYWJsZWQsIHJlYWRvbmx5LCBmb3JtQ29udGV4dCwgc2hvd0Vycm9yTGlzdCA9ICd0b3AnLCBfaW50ZXJuYWxGb3JtV3JhcHBlciwgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHsgc2NoZW1hLCB1aVNjaGVtYSwgZm9ybURhdGEsIGVycm9yU2NoZW1hLCBpZFNjaGVtYSB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgY29uc3QgcmVnaXN0cnkgPSB0aGlzLmdldFJlZ2lzdHJ5KCk7XG4gICAgICAgIGNvbnN0IHsgU2NoZW1hRmllbGQ6IF9TY2hlbWFGaWVsZCB9ID0gcmVnaXN0cnkuZmllbGRzO1xuICAgICAgICBjb25zdCB7IFN1Ym1pdEJ1dHRvbiB9ID0gcmVnaXN0cnkudGVtcGxhdGVzLkJ1dHRvblRlbXBsYXRlcztcbiAgICAgICAgLy8gVGhlIGBzZW1hbnRpYy11aWAgYW5kIGBtYXRlcmlhbC11aWAgdGhlbWVzIGhhdmUgYF9pbnRlcm5hbEZvcm1XcmFwcGVyYHMgdGhhdCB0YWtlIGFuIGBhc2AgcHJvcCB0aGF0IGlzIHRoZVxuICAgICAgICAvLyBQcm9wVHlwZXMuZWxlbWVudFR5cGUgdG8gdXNlIGZvciB0aGUgaW5uZXIgdGFnLCBzbyB3ZSdsbCBuZWVkIHRvIHBhc3MgYHRhZ05hbWVgIGFsb25nIGlmIGl0IGlzIHByb3ZpZGVkLlxuICAgICAgICAvLyBOT1RFLCB0aGUgYGFzYCBwcm9wIGlzIG5hdGl2ZSB0byBgc2VtYW50aWMtdWlgIGFuZCBpcyBlbXVsYXRlZCBpbiB0aGUgYG1hdGVyaWFsLXVpYCB0aGVtZVxuICAgICAgICBjb25zdCBhcyA9IF9pbnRlcm5hbEZvcm1XcmFwcGVyID8gdGFnTmFtZSA6IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgRm9ybVRhZyA9IF9pbnRlcm5hbEZvcm1XcmFwcGVyIHx8IHRhZ05hbWUgfHwgJ2Zvcm0nO1xuICAgICAgICBsZXQgeyBbU1VCTUlUX0JUTl9PUFRJT05TX0tFWV06IHN1Ym1pdE9wdGlvbnMgPSB7fSB9ID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hKTtcbiAgICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgICAgICBzdWJtaXRPcHRpb25zID0geyAuLi5zdWJtaXRPcHRpb25zLCBwcm9wczogeyAuLi5zdWJtaXRPcHRpb25zLnByb3BzLCBkaXNhYmxlZDogdHJ1ZSB9IH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3VibWl0VWlTY2hlbWEgPSB7IFtVSV9PUFRJT05TX0tFWV06IHsgW1NVQk1JVF9CVE5fT1BUSU9OU19LRVldOiBzdWJtaXRPcHRpb25zIH0gfTtcbiAgICAgICAgcmV0dXJuIChfanN4cyhGb3JtVGFnLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lID8gY2xhc3NOYW1lIDogJ3Jqc2YnLCBpZDogaWQsIG5hbWU6IG5hbWUsIG1ldGhvZDogbWV0aG9kLCB0YXJnZXQ6IHRhcmdldCwgYWN0aW9uOiBhY3Rpb24sIGF1dG9Db21wbGV0ZTogYXV0b0NvbXBsZXRlLCBlbmNUeXBlOiBlbmN0eXBlLCBhY2NlcHRDaGFyc2V0OiBhY2NlcHRDaGFyc2V0IHx8IGFjY2VwdGNoYXJzZXQsIG5vVmFsaWRhdGU6IG5vSHRtbDVWYWxpZGF0ZSwgb25TdWJtaXQ6IHRoaXMub25TdWJtaXQsIGFzOiBhcywgcmVmOiB0aGlzLmZvcm1FbGVtZW50LCBjaGlsZHJlbjogW3Nob3dFcnJvckxpc3QgPT09ICd0b3AnICYmIHRoaXMucmVuZGVyRXJyb3JzKHJlZ2lzdHJ5KSwgX2pzeChfU2NoZW1hRmllbGQsIHsgbmFtZTogJycsIHNjaGVtYTogc2NoZW1hLCB1aVNjaGVtYTogdWlTY2hlbWEsIGVycm9yU2NoZW1hOiBlcnJvclNjaGVtYSwgaWRTY2hlbWE6IGlkU2NoZW1hLCBpZFByZWZpeDogaWRQcmVmaXgsIGlkU2VwYXJhdG9yOiBpZFNlcGFyYXRvciwgZm9ybUNvbnRleHQ6IGZvcm1Db250ZXh0LCBmb3JtRGF0YTogZm9ybURhdGEsIG9uQ2hhbmdlOiB0aGlzLm9uQ2hhbmdlLCBvbkJsdXI6IHRoaXMub25CbHVyLCBvbkZvY3VzOiB0aGlzLm9uRm9jdXMsIHJlZ2lzdHJ5OiByZWdpc3RyeSwgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkb25seTogcmVhZG9ubHkgfSksIGNoaWxkcmVuID8gY2hpbGRyZW4gOiBfanN4KFN1Ym1pdEJ1dHRvbiwgeyB1aVNjaGVtYTogc3VibWl0VWlTY2hlbWEsIHJlZ2lzdHJ5OiByZWdpc3RyeSB9KSwgc2hvd0Vycm9yTGlzdCA9PT0gJ2JvdHRvbScgJiYgdGhpcy5yZW5kZXJFcnJvcnMocmVnaXN0cnkpXSB9KSk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Rm9ybS5qcy5tYXAiLCJleHBvcnQgY2xhc3MgQ291bnRyeSB7XG4gICAgdXVpZDogU3RyaW5nID0gXCJcIlxuICAgIHRpdGxlOiBTdHJpbmcgPSBcIlwiXG4gICAgY29kZTogU3RyaW5nID0gXCJcIlxuICAgIHVzZVZhdFdpdGhVc3RJZDogYm9vbGVhbiA9IHRydWVcbiAgICB1c2VWYXRXaXRob3V0VXN0SWQ6IGJvb2xlYW4gPSB0cnVlXG5cbiAgICBwYXJzZUZyb21Kc29uKGl0ZW06IGFueSkge1xuICAgICAgICB0aGlzLnV1aWQgPSBpdGVtLnV1aWRcbiAgICAgICAgdGhpcy50aXRsZSA9IGl0ZW0udGl0bGVcbiAgICAgICAgdGhpcy5jb2RlID0gaXRlbS5jb2RlXG4gICAgICAgIHRoaXMudXNlVmF0V2l0aFVzdElkID0gaXRlbS51c2VWYXRXaXRoVXN0SWRcbiAgICAgICAgdGhpcy51c2VWYXRXaXRob3V0VXN0SWQgPSBpdGVtLnVzZVZhdFdpdGhvdXRVc3RJZFxuICAgIH1cbn0iLCJpbXBvcnQge2F1dG9JbmplY3RhYmxlLCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZS1uZW9cIlxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJ1xuaW1wb3J0IHsgU2hvcCB9IGZyb20gXCIuLi9tb2RlbC9zaG9wXCJcbmltcG9ydCB7IENvdW50cnkgfSBmcm9tIFwiLi4vbW9kZWwvY291bnRyeVwiXG5cbkBzaW5nbGV0b24oKVxuQGF1dG9JbmplY3RhYmxlKClcbmNsYXNzIENvdW50cnlTZXJ2aWNlIHtcblxuICBhc3luYyBnZXRDb3VudHJ5KHNob3A6IFNob3ApOiBQcm9taXNlPENvdW50cnlbXT4ge1xuXG4gICAgcmV0dXJuIGF3YWl0IGF4aW9zLmdldCgnL2FwcHMvYXBpL2NvdW50cnkvYnkvc2hvcC8nICsgIHNob3AudXVpZCkudGhlbigoIHJlc3BvbnNlICkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgbGV0IGNvdW50cnkgPSBuZXcgQ291bnRyeSgpXG4gICAgICAgICAgY291bnRyeS5wYXJzZUZyb21Kc29uKGl0ZW0pXG4gICAgICAgICAgcmV0dXJuIGNvdW50cnlcbiAgICAgICAgfSlcbiAgICBcbiAgICB9KVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvdW50cnlTZXJ2aWNlXG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IE5pY2VNb2RhbCwgeyB1c2VNb2RhbCwgYm9vdHN0cmFwRGlhbG9nIH0gZnJvbSBcIkBlYmF5L25pY2UtbW9kYWwtcmVhY3RcIjtcbmltcG9ydCBCdXR0b24gZnJvbSAnLi4vYmFzZS9CdXR0b24nXG5pbXBvcnQge1JKU0ZTY2hlbWF9IGZyb20gXCJAcmpzZi91dGlsc1wiO1xuaW1wb3J0IHtDb250YWN0fSBmcm9tIFwiLi4vLi4vbW9kZWwvY29udGFjdFwiO1xuaW1wb3J0IHZhbGlkYXRvciBmcm9tIFwiQHJqc2YvdmFsaWRhdG9yLWFqdjZcIjtcbmltcG9ydCBGb3JtIGZyb20gXCJAcmpzZi9jb3JlXCI7XG5pbXBvcnQgQ291bnRyeVNlcnZpY2UgZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2NvdW50cnlcIjtcbmltcG9ydCB7IE1vZGFsIH0gZnJvbSBcImZsb3diaXRlLXJlYWN0XCI7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IENvbnRhY3RNb2RhbCA9IE5pY2VNb2RhbC5jcmVhdGUoXG4gICAgKHsgdGl0bGUsIGFjdGlvbiwgY29udGFjdCwgc2hvcCB9KSA9PiB7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBjb3VudHJ5X2FwaSA9IG5ldyBDb3VudHJ5U2VydmljZSgpXG5cbiAgICAgICAgY29uc3QgbW9kYWwgPSB1c2VNb2RhbCgpO1xuICAgICAgICBjb25zdCBbZm9ybURhdGEsIHNldEZvcm1EYXRhXSA9IHVzZVN0YXRlKHt9KTtcblxuICAgICAgICBjb25zdCBbc2NoZW1hLCBzZXRTY2hlbWFdID0gdXNlU3RhdGU8UkpTRlNjaGVtYT4oe30pXG4gICAgICAgIFxuICAgICAgICBcbiAgICAgICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmKGNvbnRhY3QudWlkICE9IFwiXCIpIHtcbiAgICAgICAgICAgICAgICBzZXRGb3JtRGF0YSh7XG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiBjb250YWN0LnVzZXJuYW1lLFxuICAgICAgICAgICAgICAgICAgICBmaXJzdG5hbWU6IGNvbnRhY3QubGF5b3V0ZXJfZGF0YS5maXJzdG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGxhc3RuYW1lOiBjb250YWN0LmxheW91dGVyX2RhdGEubGFzdG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBhbnk6IGNvbnRhY3QubGF5b3V0ZXJfZGF0YS5jb21wYW55LFxuICAgICAgICAgICAgICAgICAgICBzdHJlZXQ6IGNvbnRhY3QubGF5b3V0ZXJfZGF0YS5zdHJlZXQsXG4gICAgICAgICAgICAgICAgICAgIGhvdXNlTnVtYmVyOiBjb250YWN0LmxheW91dGVyX2RhdGEuaG91c2VOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIHppcDogY29udGFjdC5sYXlvdXRlcl9kYXRhLnppcCxcbiAgICAgICAgICAgICAgICAgICAgY2l0eTogY29udGFjdC5sYXlvdXRlcl9kYXRhLmNpdHksXG4gICAgICAgICAgICAgICAgICAgIHBob25lOiBjb250YWN0LmxheW91dGVyX2RhdGEucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGNvbnRhY3QubGF5b3V0ZXJfZGF0YS5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICB1c3RpZDogY29udGFjdC5sYXlvdXRlcl9kYXRhLnVzdGlkXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgW2NvbnRhY3RdKTtcblxuICAgICAgICBjb25zdCB1aVNjaGVtYTogUkpTRlNjaGVtYSA9IHtcbiAgICAgICAgICAgIFwidWk6c3VibWl0QnV0dG9uT3B0aW9uc1wiOiB7XG4gICAgICAgICAgICAgICAgXCJzdWJtaXRUZXh0XCI6IFwiU2F2ZVwiLFxuICAgICAgICAgICAgICAgIFwibm9yZW5kZXJcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBcInByb3BzXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJkaXNhYmxlZFwiOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgXCJjbGFzc05hbWVcIjogXCJidG4gYnRuLWluZm9cIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvdW50cnlfYXBpLmdldENvdW50cnkoc2hvcCkudGhlbigoIGRhdGEgKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIGNvdW50cnlzID0gW107XG5cbiAgICAgICAgICAgICAgICBkYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY291bnRyeXMucHVzaCh7J3RpdGxlJzogaXRlbS5jb2RlLCAnY29uc3QnOiBpdGVtLmNvZGV9KVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICB2YXIgc2NoZW1hOiBSSlNGU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ0NvbnRhY3QnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsnZW1haWwnXSxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IHsgdHlwZTogJ3N0cmluZycsIGZvcm1hdDogJ2VtYWlsJywgdGl0bGU6ICdFLU1haWwnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wYW55OiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ0NvbXBhbnknfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0bmFtZTogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdGaXJzdG5hbWUnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RuYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ0xhc3RuYW1lJ30sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJlZXQ6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnU3RyZWV0J30sXG4gICAgICAgICAgICAgICAgICAgICAgICBob3VzZU51bWJlcjogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdIb3VzZW51bWJlcid9LFxuICAgICAgICAgICAgICAgICAgICAgICAgemlwOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ1ppcCd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdDaXR5J30sXG4gICAgICAgICAgICAgICAgICAgICAgICBwaG9uZTogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdQaG9uZSd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdXN0aWQ6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnVXN0SWQnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnQ291bnRyeScsIG9uZU9mOiBjb3VudHJ5c31cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBzZXRTY2hlbWEoc2NoZW1hKVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIFtdKTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPE1vZGFsIHNob3c9e21vZGFsLnZpc2libGV9IG9uQ2xvc2U9eygpID0+IG1vZGFsLnJlbW92ZSgpfT5cbiAgICAgICAgICAgICAgICA8TW9kYWwuSGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICB7dGl0bGV9XG4gICAgICAgICAgICAgICAgPC9Nb2RhbC5IZWFkZXI+XG4gICAgICAgICAgICAgICAgPE1vZGFsLkJvZHk+XG4gICAgICAgICAgICAgICAgICAgIHthY3Rpb24gPT09IFwiU2F2ZVwiICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1hPXtzY2hlbWF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGE9e2Zvcm1EYXRhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpU2NoZW1hPXt1aVNjaGVtYX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3I9e3ZhbGlkYXRvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldEZvcm1EYXRhKGUuZm9ybURhdGEpfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvTW9kYWwuQm9keT5cbiAgICAgICAgICAgICAgICA8TW9kYWwuRm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXszfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3Rpb24gPT09IFwiU2F2ZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1EYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC5yZXNvbHZlKGZvcm1EYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXs0fVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIndhcm5pbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L01vZGFsLkZvb3Rlcj5cbiAgICAgICAgICAgIDwvTW9kYWw+XG4gICAgICAgICk7XG4gICAgfVxuKTtcblxuZXhwb3J0IGRlZmF1bHQgQ29udGFjdE1vZGFsO1xuIiwiaW1wb3J0IHtpbmplY3QsIGF1dG9JbmplY3RhYmxlLCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZS1uZW9cIlxuaW1wb3J0IFRva2VuIGZyb20gXCIuL3Rva2VuXCJcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcydcbmltcG9ydCB7IEFkZHJlc3MgfSBmcm9tIFwiLi4vbW9kZWwvYWRkcmVzc1wiXG5cbkBzaW5nbGV0b24oKVxuQGF1dG9JbmplY3RhYmxlKClcbmNsYXNzIEFkZHJlc3NTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoQGluamVjdChUb2tlbikgdG9rZW4/OiBUb2tlbikge1xuICAgIHRoaXMudG9rZW4gPSB0b2tlblxuICB9XG5cbiAgYXN5bmMgY3JlYXRlKGFkZHJlc3M6IEFkZHJlc3MpOiBQcm9taXNlPEFkZHJlc3M+IHtcblxuICAgIHJldHVybiBhd2FpdCBheGlvcy5wb3N0KCcvYXBwcy9hcGkvY29udGFjdC9hZGRyZXNzL2NyZWF0ZScsIHsnYWRkcmVzcyc6IGFkZHJlc3N9ICx7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICB9XG4gICAgfSkudGhlbigoIHJlc3BvbnNlICkgPT4ge1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGFcbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgdXBkYXRlKGFkZHJlc3M6IEFkZHJlc3MpOiBQcm9taXNlPEFkZHJlc3M+IHtcblxuICAgIHJldHVybiBhd2FpdCBheGlvcy5wdXQoJy9hcHBzL2FwaS9jb250YWN0L2FkZHJlc3MvdXBkYXRlLycgKyBhZGRyZXNzLnV1aWQsIHsnYWRkcmVzcyc6IGFkZHJlc3N9ICx7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICB9XG4gICAgfSkudGhlbigoIHJlc3BvbnNlICkgPT4ge1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGFcbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgZ2V0Q29udGFjdEFkZHJlc3MoY29udGFjdDogU3RyaW5nLCB0eXBlOiBOdW1iZXIpOiBQcm9taXNlPEFkZHJlc3NbXT4ge1xuICAgIHJldHVybiBhd2FpdCBheGlvcy5nZXQoJy9hcHBzL2FwaS9jb250YWN0L2FkZHJlc3MvZ2V0YWxsZm9ydHlwZS8nICsgY29udGFjdCArICcvJyArIHR5cGUsIHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMudG9rZW4/LmN1cnJlbnRUb2tlblxuICAgICAgfVxuICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgbGV0IGFkZHJlc3MgPSBuZXcgQWRkcmVzc1xuICAgICAgICBhZGRyZXNzLnVpZCA9IGl0ZW0udWlkXG4gICAgICAgIGFkZHJlc3MuZmlyc3RuYW1lID0gaXRlbS5maXJzdG5hbWVcbiAgICAgICAgYWRkcmVzcy5sYXN0bmFtZSA9IGl0ZW0ubGFzdG5hbWVcbiAgICAgICAgYWRkcmVzcy5zdHJlZXQgPSBpdGVtLnN0cmVldFxuICAgICAgICBhZGRyZXNzLmNvdW50cnkgPSBpdGVtLmNvdW50cnlcbiAgICAgICAgYWRkcmVzcy51c3RpZCA9IGl0ZW0udXN0aWRcbiAgICAgICAgYWRkcmVzcy5ob3VzZU51bWJlciA9IGl0ZW0uaG91c2VOdW1iZXJcbiAgICAgICAgYWRkcmVzcy56aXAgPSBpdGVtLnppcFxuICAgICAgICBhZGRyZXNzLmNpdHkgPSBpdGVtLmNpdHlcbiAgICAgICAgYWRkcmVzcy5jb21wYW55ID0gaXRlbS5jb21wYW55XG4gICAgICAgIGFkZHJlc3MuY29tcGFueTIgPSBpdGVtLmNvbXBhbnkyXG4gICAgICAgIGFkZHJlc3MudXVpZCA9IGl0ZW0udXVpZFxuICAgICAgICByZXR1cm4gYWRkcmVzc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFkZHJlc3NTZXJ2aWNlXG4iLCJpbXBvcnQge0NvbnRhY3R9IGZyb20gXCIuLi8uLi9tb2RlbC9jb250YWN0XCJcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQge1Nob3B9IGZyb20gXCIuLi8uLi9tb2RlbC9zaG9wXCJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uL2Jhc2UvQnV0dG9uXCJcbmltcG9ydCBDb250YWN0TW9kYWwgZnJvbSBcIi4vQ29udGFjdE1vZGFsXCJcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VNb2RhbCB9IGZyb20gJ0BlYmF5L25pY2UtbW9kYWwtcmVhY3QnXG5pbXBvcnQgQ29udGFjdFNlcnZpY2UgZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2NvbnRhY3RcIlxuaW1wb3J0IHsgQWRkcmVzcyB9IGZyb20gXCIuLi8uLi9tb2RlbC9hZGRyZXNzXCJcbmltcG9ydCBBZGRyZXNzU2VydmljZSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYWRkcmVzc1wiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IENvbnRhY3RNb2RhbENvbXBvbmVudCA9ICh7c2hvcCwgaGFuZGxlQWRkLCBoYW5kbGVFZGl0LCBjb250YWN0fSkgPT4ge1xuXG4gICAgXG4gICAgY29uc3QgY29udGFjdE1vZGFsID0gdXNlTW9kYWwoQ29udGFjdE1vZGFsKVxuXG4gICAgY29uc3Qgc2hvd0FkZE1vZGFsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBjb250YWN0TW9kYWwuc2hvdyh7dGl0bGU6ICdBZGQgQ29udGFjdCcsIGFjdGlvbjogJ1NhdmUnLCBzaG9wOiBzaG9wLCBjb250YWN0OiBuZXcgQ29udGFjdCgpfSkudGhlbigoZm9ybURhdGEpID0+IHtcbiAgICAgICAgICAgIGFkZENvbnRhY3QoZm9ybURhdGEpXG4gICAgICAgIH0pXG4gICAgfSxbY29udGFjdE1vZGFsXSlcblxuICAgIGNvbnN0IHNob3dFZGl0TW9kYWwgPSB1c2VDYWxsYmFjaygoY29udGFjdCkgPT4ge1xuICAgICAgICBjb250YWN0ID0gY29udGFjdFxuICAgICAgICBjb250YWN0TW9kYWwuc2hvdyh7IHRpdGxlOiAnRWRpdCBDb250YWN0JywgYWN0aW9uOiAnU2F2ZScsIGNvbnRhY3Q6IGNvbnRhY3QsIHNob3A6IHNob3AgfSkudGhlbigoZm9ybURhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnRhY3QucGFyc2VGcm9tRm9ybURhdGEoZm9ybURhdGEpXG4gICAgICAgICAgICB1cGRhdGVDb250YWN0KGNvbnRhY3QpXG4gICAgICAgIH0pXG4gICAgfSxbY29udGFjdE1vZGFsXSlcblxuICAgIGNvbnN0IHVwZGF0ZUNvbnRhY3QgPSAoY29udGFjdCkgPT4ge1xuICAgICAgICBjb25zdCBjb250YWN0X2FwaSA9IG5ldyBDb250YWN0U2VydmljZSgpXG4gICAgICAgIGNvbnRhY3RfYXBpLnVwZGF0ZUNvbnRhY3QoY29udGFjdCkudGhlbigoZTogYW55KSA9PiB7XG4gICAgICAgICAgICBoYW5kbGVFZGl0KGNvbnRhY3QpXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc3QgYWRkQ29udGFjdCA9IChmb3JtRGF0YSkgPT4ge1xuICAgICAgICB2YXIgY29udGFjdCA9IG5ldyBDb250YWN0KClcbiAgICAgICAgY29udGFjdC5wYXJzZUZyb21Gb3JtRGF0YShmb3JtRGF0YSwgc2hvcClcbiAgICAgICAgY29uc3QgY29udGFjdF9hcGkgPSBuZXcgQ29udGFjdFNlcnZpY2UoKVxuICAgICAgICBjb250YWN0X2FwaS5jcmVhdGVDb250YWN0KGNvbnRhY3QpLnRoZW4oKGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29udGFjdC5wYXJzZUZyb21Kc29uKGUpXG4gICAgICAgICAgICB2YXIgYWRkcmVzcyA9IG5ldyBBZGRyZXNzKClcbiAgICAgICAgICAgIGFkZHJlc3MucGFyc2VGcm9tRm9ybURhdGEoZm9ybURhdGEpXG4gICAgICAgICAgICBhZGRyZXNzLmNvbnRhY3QudXVpZCA9IGNvbnRhY3QudXVpZFxuICAgICAgICAgICAgYWRkcmVzcy50eXBlID0gMVxuICAgICAgICAgICAgY29uc3QgYWRkcmVzc19hcGkgPSBuZXcgQWRkcmVzc1NlcnZpY2UoKVxuICAgICAgICAgICAgYWRkcmVzc19hcGkuY3JlYXRlKGFkZHJlc3MpXG4gICAgICAgICAgICBhZGRyZXNzLnR5cGUgPSAyXG4gICAgICAgICAgICBhZGRyZXNzX2FwaS5jcmVhdGUoYWRkcmVzcylcblxuICAgICAgICAgICAgaGFuZGxlQWRkKGNvbnRhY3QpXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4IGdhcC0xJ30+XG4gICAgICAgICAgICA8QnV0dG9uIHR5cGU9ezF9IHZhcmlhbnQ9XCJzdWNjZXNzXCIgb25DbGljaz17c2hvd0FkZE1vZGFsfSAvPlxuICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPXsyfSB2YXJpYW50PVwiaW5mb1wiIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBzaG93RWRpdE1vZGFsKGNvbnRhY3QpXG4gICAgICAgICAgICB9fSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICApXG59XG5cbkNvbnRhY3RNb2RhbENvbXBvbmVudC5wcm9wVHlwZXMgPSB7XG4gICAgc2hvcDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2hvcCksXG4gICAgaGFuZGxlQWRkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBoYW5kbGVFZGl0OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBjb250YWN0OiBQcm9wVHlwZXMuaW5zdGFuY2VPZihDb250YWN0KVxufVxuXG5leHBvcnQgZGVmYXVsdCBDb250YWN0TW9kYWxDb21wb25lbnRcbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxuXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cblxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlLCBTdXBwcmVzc2VkRXJyb3IsIFN5bWJvbCAqL1xuXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcbiAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcbiAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcbiAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbn1cblxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xuICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xuICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHQ7XG4gIH1cbiAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3QocywgZSkge1xuICB2YXIgdCA9IHt9O1xuICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgIHRbcF0gPSBzW3BdO1xuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgIH1cbiAgcmV0dXJuIHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XG4gIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XG4gIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xuICBmdW5jdGlvbiBhY2NlcHQoZikgeyBpZiAoZiAhPT0gdm9pZCAwICYmIHR5cGVvZiBmICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJGdW5jdGlvbiBleHBlY3RlZFwiKTsgcmV0dXJuIGY7IH1cbiAgdmFyIGtpbmQgPSBjb250ZXh0SW4ua2luZCwga2V5ID0ga2luZCA9PT0gXCJnZXR0ZXJcIiA/IFwiZ2V0XCIgOiBraW5kID09PSBcInNldHRlclwiID8gXCJzZXRcIiA6IFwidmFsdWVcIjtcbiAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XG4gIHZhciBkZXNjcmlwdG9yID0gZGVzY3JpcHRvckluIHx8ICh0YXJnZXQgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgY29udGV4dEluLm5hbWUpIDoge30pO1xuICB2YXIgXywgZG9uZSA9IGZhbHNlO1xuICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGNvbnRleHQgPSB7fTtcbiAgICAgIGZvciAodmFyIHAgaW4gY29udGV4dEluKSBjb250ZXh0W3BdID0gcCA9PT0gXCJhY2Nlc3NcIiA/IHt9IDogY29udGV4dEluW3BdO1xuICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XG4gICAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyID0gZnVuY3Rpb24gKGYpIHsgaWYgKGRvbmUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWRcIik7IGV4dHJhSW5pdGlhbGl6ZXJzLnB1c2goYWNjZXB0KGYgfHwgbnVsbCkpOyB9O1xuICAgICAgdmFyIHJlc3VsdCA9ICgwLCBkZWNvcmF0b3JzW2ldKShraW5kID09PSBcImFjY2Vzc29yXCIgPyB7IGdldDogZGVzY3JpcHRvci5nZXQsIHNldDogZGVzY3JpcHRvci5zZXQgfSA6IGRlc2NyaXB0b3Jba2V5XSwgY29udGV4dCk7XG4gICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdm9pZCAwKSBjb250aW51ZTtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHR5cGVvZiByZXN1bHQgIT09IFwib2JqZWN0XCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWRcIik7XG4gICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcbiAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuc2V0KSkgZGVzY3JpcHRvci5zZXQgPSBfO1xuICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5pbml0KSkgaW5pdGlhbGl6ZXJzLnVuc2hpZnQoXyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChfID0gYWNjZXB0KHJlc3VsdCkpIHtcbiAgICAgICAgICBpZiAoa2luZCA9PT0gXCJmaWVsZFwiKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcbiAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XG4gICAgICB9XG4gIH1cbiAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xuICBkb25lID0gdHJ1ZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3J1bkluaXRpYWxpemVycyh0aGlzQXJnLCBpbml0aWFsaXplcnMsIHZhbHVlKSB7XG4gIHZhciB1c2VWYWx1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFsdWUgPSB1c2VWYWx1ZSA/IGluaXRpYWxpemVyc1tpXS5jYWxsKHRoaXNBcmcsIHZhbHVlKSA6IGluaXRpYWxpemVyc1tpXS5jYWxsKHRoaXNBcmcpO1xuICB9XG4gIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gXCJzeW1ib2xcIiA/IHggOiBcIlwiLmNvbmNhdCh4KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3NldEZ1bmN0aW9uTmFtZShmLCBuYW1lLCBwcmVmaXgpIHtcbiAgaWYgKHR5cGVvZiBuYW1lID09PSBcInN5bWJvbFwiKSBuYW1lID0gbmFtZS5kZXNjcmlwdGlvbiA/IFwiW1wiLmNvbmNhdChuYW1lLmRlc2NyaXB0aW9uLCBcIl1cIikgOiBcIlwiO1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XG4gIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICB9XG59XG5cbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSwgayk7XG4gIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICBvW2syXSA9IG1ba107XG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XG4gIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgcCkpIF9fY3JlYXRlQmluZGluZyhvLCBtLCBwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcbiAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcbiAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIW0pIHJldHVybiBvO1xuICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgdHJ5IHtcbiAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICB9XG4gIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICB9XG4gICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgfVxuICByZXR1cm4gYXI7XG59XG5cbi8qKiBAZGVwcmVjYXRlZCAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xuICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcbiAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcbiAgcmV0dXJuIGFyO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgKi9cbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHtcbiAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XG4gIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcbiAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxuICAgICAgICAgIHJba10gPSBhW2pdO1xuICByZXR1cm4gcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcbiAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xuICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgIH1cbiAgfVxuICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xuICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XG4gIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcbiAgZnVuY3Rpb24gdmVyYihuKSB7IGlmIChnW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyB9XG4gIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cbiAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XG4gIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cbiAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxuICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcbiAgdmFyIGksIHA7XG4gIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XG4gIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IGZhbHNlIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcbiAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcbiAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xuICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XG4gIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XG4gIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XG4gIHJldHVybiBjb29rZWQ7XG59O1xuXG52YXIgX19zZXRNb2R1bGVEZWZhdWx0ID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCB2KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcbn0pIDogZnVuY3Rpb24obywgdikge1xuICBvW1wiZGVmYXVsdFwiXSA9IHY7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xuICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xuICB2YXIgcmVzdWx0ID0ge307XG4gIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChrICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgX19jcmVhdGVCaW5kaW5nKHJlc3VsdCwgbW9kLCBrKTtcbiAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0RGVmYXVsdChtb2QpIHtcbiAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRHZXQocmVjZWl2ZXIsIHN0YXRlLCBraW5kLCBmKSB7XG4gIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcbiAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgcmVhZCBwcml2YXRlIG1lbWJlciBmcm9tIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XG4gIHJldHVybiBraW5kID09PSBcIm1cIiA/IGYgOiBraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlcikgOiBmID8gZi52YWx1ZSA6IHN0YXRlLmdldChyZWNlaXZlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHJlY2VpdmVyLCBzdGF0ZSwgdmFsdWUsIGtpbmQsIGYpIHtcbiAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xuICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBzZXR0ZXJcIik7XG4gIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XG4gIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xuICBpZiAocmVjZWl2ZXIgPT09IG51bGwgfHwgKHR5cGVvZiByZWNlaXZlciAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgcmVjZWl2ZXIgIT09IFwiZnVuY3Rpb25cIikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgdXNlICdpbicgb3BlcmF0b3Igb24gbm9uLW9iamVjdFwiKTtcbiAgcmV0dXJuIHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgPT09IHN0YXRlIDogc3RhdGUuaGFzKHJlY2VpdmVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYWRkRGlzcG9zYWJsZVJlc291cmNlKGVudiwgdmFsdWUsIGFzeW5jKSB7XG4gIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdm9pZCAwKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZC5cIik7XG4gICAgdmFyIGRpc3Bvc2U7XG4gICAgaWYgKGFzeW5jKSB7XG4gICAgICAgIGlmICghU3ltYm9sLmFzeW5jRGlzcG9zZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0Rpc3Bvc2UgaXMgbm90IGRlZmluZWQuXCIpO1xuICAgICAgICBkaXNwb3NlID0gdmFsdWVbU3ltYm9sLmFzeW5jRGlzcG9zZV07XG4gICAgfVxuICAgIGlmIChkaXNwb3NlID09PSB2b2lkIDApIHtcbiAgICAgICAgaWYgKCFTeW1ib2wuZGlzcG9zZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5kaXNwb3NlIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5kaXNwb3NlXTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBkaXNwb3NlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3Qgbm90IGRpc3Bvc2FibGUuXCIpO1xuICAgIGVudi5zdGFjay5wdXNoKHsgdmFsdWU6IHZhbHVlLCBkaXNwb3NlOiBkaXNwb3NlLCBhc3luYzogYXN5bmMgfSk7XG4gIH1cbiAgZWxzZSBpZiAoYXN5bmMpIHtcbiAgICBlbnYuc3RhY2sucHVzaCh7IGFzeW5jOiB0cnVlIH0pO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxudmFyIF9TdXBwcmVzc2VkRXJyb3IgPSB0eXBlb2YgU3VwcHJlc3NlZEVycm9yID09PSBcImZ1bmN0aW9uXCIgPyBTdXBwcmVzc2VkRXJyb3IgOiBmdW5jdGlvbiAoZXJyb3IsIHN1cHByZXNzZWQsIG1lc3NhZ2UpIHtcbiAgdmFyIGUgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIHJldHVybiBlLm5hbWUgPSBcIlN1cHByZXNzZWRFcnJvclwiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19kaXNwb3NlUmVzb3VyY2VzKGVudikge1xuICBmdW5jdGlvbiBmYWlsKGUpIHtcbiAgICBlbnYuZXJyb3IgPSBlbnYuaGFzRXJyb3IgPyBuZXcgX1N1cHByZXNzZWRFcnJvcihlLCBlbnYuZXJyb3IsIFwiQW4gZXJyb3Igd2FzIHN1cHByZXNzZWQgZHVyaW5nIGRpc3Bvc2FsLlwiKSA6IGU7XG4gICAgZW52Lmhhc0Vycm9yID0gdHJ1ZTtcbiAgfVxuICBmdW5jdGlvbiBuZXh0KCkge1xuICAgIHdoaWxlIChlbnYuc3RhY2subGVuZ3RoKSB7XG4gICAgICB2YXIgcmVjID0gZW52LnN0YWNrLnBvcCgpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHJlYy5kaXNwb3NlICYmIHJlYy5kaXNwb3NlLmNhbGwocmVjLnZhbHVlKTtcbiAgICAgICAgaWYgKHJlYy5hc3luYykgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpLnRoZW4obmV4dCwgZnVuY3Rpb24oZSkgeyBmYWlsKGUpOyByZXR1cm4gbmV4dCgpOyB9KTtcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgZmFpbChlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVudi5oYXNFcnJvcikgdGhyb3cgZW52LmVycm9yO1xuICB9XG4gIHJldHVybiBuZXh0KCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgX19leHRlbmRzLFxuICBfX2Fzc2lnbixcbiAgX19yZXN0LFxuICBfX2RlY29yYXRlLFxuICBfX3BhcmFtLFxuICBfX21ldGFkYXRhLFxuICBfX2F3YWl0ZXIsXG4gIF9fZ2VuZXJhdG9yLFxuICBfX2NyZWF0ZUJpbmRpbmcsXG4gIF9fZXhwb3J0U3RhcixcbiAgX192YWx1ZXMsXG4gIF9fcmVhZCxcbiAgX19zcHJlYWQsXG4gIF9fc3ByZWFkQXJyYXlzLFxuICBfX3NwcmVhZEFycmF5LFxuICBfX2F3YWl0LFxuICBfX2FzeW5jR2VuZXJhdG9yLFxuICBfX2FzeW5jRGVsZWdhdG9yLFxuICBfX2FzeW5jVmFsdWVzLFxuICBfX21ha2VUZW1wbGF0ZU9iamVjdCxcbiAgX19pbXBvcnRTdGFyLFxuICBfX2ltcG9ydERlZmF1bHQsXG4gIF9fY2xhc3NQcml2YXRlRmllbGRHZXQsXG4gIF9fY2xhc3NQcml2YXRlRmllbGRTZXQsXG4gIF9fY2xhc3NQcml2YXRlRmllbGRJbixcbiAgX19hZGREaXNwb3NhYmxlUmVzb3VyY2UsXG4gIF9fZGlzcG9zZVJlc291cmNlcyxcbn07XG4iLCJleHBvcnQgdmFyIE1TID0gJy1tcy0nXG5leHBvcnQgdmFyIE1PWiA9ICctbW96LSdcbmV4cG9ydCB2YXIgV0VCS0lUID0gJy13ZWJraXQtJ1xuXG5leHBvcnQgdmFyIENPTU1FTlQgPSAnY29tbSdcbmV4cG9ydCB2YXIgUlVMRVNFVCA9ICdydWxlJ1xuZXhwb3J0IHZhciBERUNMQVJBVElPTiA9ICdkZWNsJ1xuXG5leHBvcnQgdmFyIFBBR0UgPSAnQHBhZ2UnXG5leHBvcnQgdmFyIE1FRElBID0gJ0BtZWRpYSdcbmV4cG9ydCB2YXIgSU1QT1JUID0gJ0BpbXBvcnQnXG5leHBvcnQgdmFyIENIQVJTRVQgPSAnQGNoYXJzZXQnXG5leHBvcnQgdmFyIFZJRVdQT1JUID0gJ0B2aWV3cG9ydCdcbmV4cG9ydCB2YXIgU1VQUE9SVFMgPSAnQHN1cHBvcnRzJ1xuZXhwb3J0IHZhciBET0NVTUVOVCA9ICdAZG9jdW1lbnQnXG5leHBvcnQgdmFyIE5BTUVTUEFDRSA9ICdAbmFtZXNwYWNlJ1xuZXhwb3J0IHZhciBLRVlGUkFNRVMgPSAnQGtleWZyYW1lcydcbmV4cG9ydCB2YXIgRk9OVF9GQUNFID0gJ0Bmb250LWZhY2UnXG5leHBvcnQgdmFyIENPVU5URVJfU1RZTEUgPSAnQGNvdW50ZXItc3R5bGUnXG5leHBvcnQgdmFyIEZPTlRfRkVBVFVSRV9WQUxVRVMgPSAnQGZvbnQtZmVhdHVyZS12YWx1ZXMnXG5leHBvcnQgdmFyIExBWUVSID0gJ0BsYXllcidcbmV4cG9ydCB2YXIgU0NPUEUgPSAnQHNjb3BlJ1xuIiwiLyoqXG4gKiBAcGFyYW0ge251bWJlcn1cbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IHZhciBhYnMgPSBNYXRoLmFic1xuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgdmFyIGZyb20gPSBTdHJpbmcuZnJvbUNoYXJDb2RlXG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9XG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCB2YXIgYXNzaWduID0gT2JqZWN0LmFzc2lnblxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzaCAodmFsdWUsIGxlbmd0aCkge1xuXHRyZXR1cm4gY2hhcmF0KHZhbHVlLCAwKSBeIDQ1ID8gKCgoKCgoKGxlbmd0aCA8PCAyKSBeIGNoYXJhdCh2YWx1ZSwgMCkpIDw8IDIpIF4gY2hhcmF0KHZhbHVlLCAxKSkgPDwgMikgXiBjaGFyYXQodmFsdWUsIDIpKSA8PCAyKSBeIGNoYXJhdCh2YWx1ZSwgMykgOiAwXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmltICh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUudHJpbSgpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge1JlZ0V4cH0gcGF0dGVyblxuICogQHJldHVybiB7c3RyaW5nP31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoICh2YWx1ZSwgcGF0dGVybikge1xuXHRyZXR1cm4gKHZhbHVlID0gcGF0dGVybi5leGVjKHZhbHVlKSkgPyB2YWx1ZVswXSA6IHZhbHVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0geyhzdHJpbmd8UmVnRXhwKX0gcGF0dGVyblxuICogQHBhcmFtIHtzdHJpbmd9IHJlcGxhY2VtZW50XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlICh2YWx1ZSwgcGF0dGVybiwgcmVwbGFjZW1lbnQpIHtcblx0cmV0dXJuIHZhbHVlLnJlcGxhY2UocGF0dGVybiwgcmVwbGFjZW1lbnQpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gc2VhcmNoXG4gKiBAcGFyYW0ge251bWJlcn0gcG9zaXRpb25cbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluZGV4b2YgKHZhbHVlLCBzZWFyY2gsIHBvc2l0aW9uKSB7XG5cdHJldHVybiB2YWx1ZS5pbmRleE9mKHNlYXJjaCwgcG9zaXRpb24pXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYXJhdCAodmFsdWUsIGluZGV4KSB7XG5cdHJldHVybiB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KSB8IDBcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBiZWdpblxuICogQHBhcmFtIHtudW1iZXJ9IGVuZFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RyICh2YWx1ZSwgYmVnaW4sIGVuZCkge1xuXHRyZXR1cm4gdmFsdWUuc2xpY2UoYmVnaW4sIGVuZClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmxlbiAodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlLmxlbmd0aFxufVxuXG4vKipcbiAqIEBwYXJhbSB7YW55W119IHZhbHVlXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaXplb2YgKHZhbHVlKSB7XG5cdHJldHVybiB2YWx1ZS5sZW5ndGhcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAqIEBwYXJhbSB7YW55W119IGFycmF5XG4gKiBAcmV0dXJuIHthbnl9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmQgKHZhbHVlLCBhcnJheSkge1xuXHRyZXR1cm4gYXJyYXkucHVzaCh2YWx1ZSksIHZhbHVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gYXJyYXlcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5lIChhcnJheSwgY2FsbGJhY2spIHtcblx0cmV0dXJuIGFycmF5Lm1hcChjYWxsYmFjaykuam9pbignJylcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBhcnJheVxuICogQHBhcmFtIHtSZWdFeHB9IHBhdHRlcm5cbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyIChhcnJheSwgcGF0dGVybikge1xuXHRyZXR1cm4gYXJyYXkuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gIW1hdGNoKHZhbHVlLCBwYXR0ZXJuKSB9KVxufVxuIiwiaW1wb3J0IHtmcm9tLCB0cmltLCBjaGFyYXQsIHN0cmxlbiwgc3Vic3RyLCBhcHBlbmQsIGFzc2lnbn0gZnJvbSAnLi9VdGlsaXR5LmpzJ1xuXG5leHBvcnQgdmFyIGxpbmUgPSAxXG5leHBvcnQgdmFyIGNvbHVtbiA9IDFcbmV4cG9ydCB2YXIgbGVuZ3RoID0gMFxuZXhwb3J0IHZhciBwb3NpdGlvbiA9IDBcbmV4cG9ydCB2YXIgY2hhcmFjdGVyID0gMFxuZXhwb3J0IHZhciBjaGFyYWN0ZXJzID0gJydcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0IHwgbnVsbH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3QgfCBudWxsfSBwYXJlbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gKiBAcGFyYW0ge3N0cmluZ1tdIHwgc3RyaW5nfSBwcm9wc1xuICogQHBhcmFtIHtvYmplY3RbXSB8IHN0cmluZ30gY2hpbGRyZW5cbiAqIEBwYXJhbSB7b2JqZWN0W119IHNpYmxpbmdzXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub2RlICh2YWx1ZSwgcm9vdCwgcGFyZW50LCB0eXBlLCBwcm9wcywgY2hpbGRyZW4sIGxlbmd0aCwgc2libGluZ3MpIHtcblx0cmV0dXJuIHt2YWx1ZTogdmFsdWUsIHJvb3Q6IHJvb3QsIHBhcmVudDogcGFyZW50LCB0eXBlOiB0eXBlLCBwcm9wczogcHJvcHMsIGNoaWxkcmVuOiBjaGlsZHJlbiwgbGluZTogbGluZSwgY29sdW1uOiBjb2x1bW4sIGxlbmd0aDogbGVuZ3RoLCByZXR1cm46ICcnLCBzaWJsaW5nczogc2libGluZ3N9XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29weSAocm9vdCwgcHJvcHMpIHtcblx0cmV0dXJuIGFzc2lnbihub2RlKCcnLCBudWxsLCBudWxsLCAnJywgbnVsbCwgbnVsbCwgMCwgcm9vdC5zaWJsaW5ncyksIHJvb3QsIHtsZW5ndGg6IC1yb290Lmxlbmd0aH0sIHByb3BzKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaWZ0IChyb290KSB7XG5cdHdoaWxlIChyb290LnJvb3QpXG5cdFx0cm9vdCA9IGNvcHkocm9vdC5yb290LCB7Y2hpbGRyZW46IFtyb290XX0pXG5cblx0YXBwZW5kKHJvb3QsIHJvb3Quc2libGluZ3MpXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hhciAoKSB7XG5cdHJldHVybiBjaGFyYWN0ZXJcbn1cblxuLyoqXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmV2ICgpIHtcblx0Y2hhcmFjdGVyID0gcG9zaXRpb24gPiAwID8gY2hhcmF0KGNoYXJhY3RlcnMsIC0tcG9zaXRpb24pIDogMFxuXG5cdGlmIChjb2x1bW4tLSwgY2hhcmFjdGVyID09PSAxMClcblx0XHRjb2x1bW4gPSAxLCBsaW5lLS1cblxuXHRyZXR1cm4gY2hhcmFjdGVyXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV4dCAoKSB7XG5cdGNoYXJhY3RlciA9IHBvc2l0aW9uIDwgbGVuZ3RoID8gY2hhcmF0KGNoYXJhY3RlcnMsIHBvc2l0aW9uKyspIDogMFxuXG5cdGlmIChjb2x1bW4rKywgY2hhcmFjdGVyID09PSAxMClcblx0XHRjb2x1bW4gPSAxLCBsaW5lKytcblxuXHRyZXR1cm4gY2hhcmFjdGVyXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGVlayAoKSB7XG5cdHJldHVybiBjaGFyYXQoY2hhcmFjdGVycywgcG9zaXRpb24pXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FyZXQgKCkge1xuXHRyZXR1cm4gcG9zaXRpb25cbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gYmVnaW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsaWNlIChiZWdpbiwgZW5kKSB7XG5cdHJldHVybiBzdWJzdHIoY2hhcmFjdGVycywgYmVnaW4sIGVuZClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW4gKHR5cGUpIHtcblx0c3dpdGNoICh0eXBlKSB7XG5cdFx0Ly8gXFwwIFxcdCBcXG4gXFxyIFxccyB3aGl0ZXNwYWNlIHRva2VuXG5cdFx0Y2FzZSAwOiBjYXNlIDk6IGNhc2UgMTA6IGNhc2UgMTM6IGNhc2UgMzI6XG5cdFx0XHRyZXR1cm4gNVxuXHRcdC8vICEgKyAsIC8gPiBAIH4gaXNvbGF0ZSB0b2tlblxuXHRcdGNhc2UgMzM6IGNhc2UgNDM6IGNhc2UgNDQ6IGNhc2UgNDc6IGNhc2UgNjI6IGNhc2UgNjQ6IGNhc2UgMTI2OlxuXHRcdC8vIDsgeyB9IGJyZWFrcG9pbnQgdG9rZW5cblx0XHRjYXNlIDU5OiBjYXNlIDEyMzogY2FzZSAxMjU6XG5cdFx0XHRyZXR1cm4gNFxuXHRcdC8vIDogYWNjb21wYW5pZWQgdG9rZW5cblx0XHRjYXNlIDU4OlxuXHRcdFx0cmV0dXJuIDNcblx0XHQvLyBcIiAnICggWyBvcGVuaW5nIGRlbGltaXQgdG9rZW5cblx0XHRjYXNlIDM0OiBjYXNlIDM5OiBjYXNlIDQwOiBjYXNlIDkxOlxuXHRcdFx0cmV0dXJuIDJcblx0XHQvLyApIF0gY2xvc2luZyBkZWxpbWl0IHRva2VuXG5cdFx0Y2FzZSA0MTogY2FzZSA5Mzpcblx0XHRcdHJldHVybiAxXG5cdH1cblxuXHRyZXR1cm4gMFxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7YW55W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhbGxvYyAodmFsdWUpIHtcblx0cmV0dXJuIGxpbmUgPSBjb2x1bW4gPSAxLCBsZW5ndGggPSBzdHJsZW4oY2hhcmFjdGVycyA9IHZhbHVlKSwgcG9zaXRpb24gPSAwLCBbXVxufVxuXG4vKipcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICogQHJldHVybiB7YW55fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVhbGxvYyAodmFsdWUpIHtcblx0cmV0dXJuIGNoYXJhY3RlcnMgPSAnJywgdmFsdWVcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVsaW1pdCAodHlwZSkge1xuXHRyZXR1cm4gdHJpbShzbGljZShwb3NpdGlvbiAtIDEsIGRlbGltaXRlcih0eXBlID09PSA5MSA/IHR5cGUgKyAyIDogdHlwZSA9PT0gNDAgPyB0eXBlICsgMSA6IHR5cGUpKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW5pemUgKHZhbHVlKSB7XG5cdHJldHVybiBkZWFsbG9jKHRva2VuaXplcihhbGxvYyh2YWx1ZSkpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aGl0ZXNwYWNlICh0eXBlKSB7XG5cdHdoaWxlIChjaGFyYWN0ZXIgPSBwZWVrKCkpXG5cdFx0aWYgKGNoYXJhY3RlciA8IDMzKVxuXHRcdFx0bmV4dCgpXG5cdFx0ZWxzZVxuXHRcdFx0YnJlYWtcblxuXHRyZXR1cm4gdG9rZW4odHlwZSkgPiAyIHx8IHRva2VuKGNoYXJhY3RlcikgPiAzID8gJycgOiAnICdcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBjaGlsZHJlblxuICogQHJldHVybiB7c3RyaW5nW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbml6ZXIgKGNoaWxkcmVuKSB7XG5cdHdoaWxlIChuZXh0KCkpXG5cdFx0c3dpdGNoICh0b2tlbihjaGFyYWN0ZXIpKSB7XG5cdFx0XHRjYXNlIDA6IGFwcGVuZChpZGVudGlmaWVyKHBvc2l0aW9uIC0gMSksIGNoaWxkcmVuKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Y2FzZSAyOiBhcHBlbmQoZGVsaW1pdChjaGFyYWN0ZXIpLCBjaGlsZHJlbilcblx0XHRcdFx0YnJlYWtcblx0XHRcdGRlZmF1bHQ6IGFwcGVuZChmcm9tKGNoYXJhY3RlciksIGNoaWxkcmVuKVxuXHRcdH1cblxuXHRyZXR1cm4gY2hpbGRyZW5cbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBpbmcgKGluZGV4LCBjb3VudCkge1xuXHR3aGlsZSAoLS1jb3VudCAmJiBuZXh0KCkpXG5cdFx0Ly8gbm90IDAtOSBBLUYgYS1mXG5cdFx0aWYgKGNoYXJhY3RlciA8IDQ4IHx8IGNoYXJhY3RlciA+IDEwMiB8fCAoY2hhcmFjdGVyID4gNTcgJiYgY2hhcmFjdGVyIDwgNjUpIHx8IChjaGFyYWN0ZXIgPiA3MCAmJiBjaGFyYWN0ZXIgPCA5NykpXG5cdFx0XHRicmVha1xuXG5cdHJldHVybiBzbGljZShpbmRleCwgY2FyZXQoKSArIChjb3VudCA8IDYgJiYgcGVlaygpID09IDMyICYmIG5leHQoKSA9PSAzMikpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGltaXRlciAodHlwZSkge1xuXHR3aGlsZSAobmV4dCgpKVxuXHRcdHN3aXRjaCAoY2hhcmFjdGVyKSB7XG5cdFx0XHQvLyBdICkgXCIgJ1xuXHRcdFx0Y2FzZSB0eXBlOlxuXHRcdFx0XHRyZXR1cm4gcG9zaXRpb25cblx0XHRcdC8vIFwiICdcblx0XHRcdGNhc2UgMzQ6IGNhc2UgMzk6XG5cdFx0XHRcdGlmICh0eXBlICE9PSAzNCAmJiB0eXBlICE9PSAzOSlcblx0XHRcdFx0XHRkZWxpbWl0ZXIoY2hhcmFjdGVyKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gKFxuXHRcdFx0Y2FzZSA0MDpcblx0XHRcdFx0aWYgKHR5cGUgPT09IDQxKVxuXHRcdFx0XHRcdGRlbGltaXRlcih0eXBlKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gXFxcblx0XHRcdGNhc2UgOTI6XG5cdFx0XHRcdG5leHQoKVxuXHRcdFx0XHRicmVha1xuXHRcdH1cblxuXHRyZXR1cm4gcG9zaXRpb25cbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21tZW50ZXIgKHR5cGUsIGluZGV4KSB7XG5cdHdoaWxlIChuZXh0KCkpXG5cdFx0Ly8gLy9cblx0XHRpZiAodHlwZSArIGNoYXJhY3RlciA9PT0gNDcgKyAxMClcblx0XHRcdGJyZWFrXG5cdFx0Ly8gLypcblx0XHRlbHNlIGlmICh0eXBlICsgY2hhcmFjdGVyID09PSA0MiArIDQyICYmIHBlZWsoKSA9PT0gNDcpXG5cdFx0XHRicmVha1xuXG5cdHJldHVybiAnLyonICsgc2xpY2UoaW5kZXgsIHBvc2l0aW9uIC0gMSkgKyAnKicgKyBmcm9tKHR5cGUgPT09IDQ3ID8gdHlwZSA6IG5leHQoKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlkZW50aWZpZXIgKGluZGV4KSB7XG5cdHdoaWxlICghdG9rZW4ocGVlaygpKSlcblx0XHRuZXh0KClcblxuXHRyZXR1cm4gc2xpY2UoaW5kZXgsIHBvc2l0aW9uKVxufVxuIiwiaW1wb3J0IHtDT01NRU5ULCBSVUxFU0VULCBERUNMQVJBVElPTn0gZnJvbSAnLi9FbnVtLmpzJ1xuaW1wb3J0IHthYnMsIGNoYXJhdCwgdHJpbSwgZnJvbSwgc2l6ZW9mLCBzdHJsZW4sIHN1YnN0ciwgYXBwZW5kLCByZXBsYWNlLCBpbmRleG9mfSBmcm9tICcuL1V0aWxpdHkuanMnXG5pbXBvcnQge25vZGUsIGNoYXIsIHByZXYsIG5leHQsIHBlZWssIGNhcmV0LCBhbGxvYywgZGVhbGxvYywgZGVsaW1pdCwgd2hpdGVzcGFjZSwgZXNjYXBpbmcsIGlkZW50aWZpZXIsIGNvbW1lbnRlcn0gZnJvbSAnLi9Ub2tlbml6ZXIuanMnXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtvYmplY3RbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGUgKHZhbHVlKSB7XG5cdHJldHVybiBkZWFsbG9jKHBhcnNlKCcnLCBudWxsLCBudWxsLCBudWxsLCBbJyddLCB2YWx1ZSA9IGFsbG9jKHZhbHVlKSwgMCwgWzBdLCB2YWx1ZSkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3Q/fSBwYXJlbnRcbiAqIEBwYXJhbSB7c3RyaW5nW119IHJ1bGVcbiAqIEBwYXJhbSB7c3RyaW5nW119IHJ1bGVzXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlc2V0c1xuICogQHBhcmFtIHtudW1iZXJbXX0gcHNldWRvXG4gKiBAcGFyYW0ge251bWJlcltdfSBwb2ludHNcbiAqIEBwYXJhbSB7c3RyaW5nW119IGRlY2xhcmF0aW9uc1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2UgKHZhbHVlLCByb290LCBwYXJlbnQsIHJ1bGUsIHJ1bGVzLCBydWxlc2V0cywgcHNldWRvLCBwb2ludHMsIGRlY2xhcmF0aW9ucykge1xuXHR2YXIgaW5kZXggPSAwXG5cdHZhciBvZmZzZXQgPSAwXG5cdHZhciBsZW5ndGggPSBwc2V1ZG9cblx0dmFyIGF0cnVsZSA9IDBcblx0dmFyIHByb3BlcnR5ID0gMFxuXHR2YXIgcHJldmlvdXMgPSAwXG5cdHZhciB2YXJpYWJsZSA9IDFcblx0dmFyIHNjYW5uaW5nID0gMVxuXHR2YXIgYW1wZXJzYW5kID0gMVxuXHR2YXIgY2hhcmFjdGVyID0gMFxuXHR2YXIgdHlwZSA9ICcnXG5cdHZhciBwcm9wcyA9IHJ1bGVzXG5cdHZhciBjaGlsZHJlbiA9IHJ1bGVzZXRzXG5cdHZhciByZWZlcmVuY2UgPSBydWxlXG5cdHZhciBjaGFyYWN0ZXJzID0gdHlwZVxuXG5cdHdoaWxlIChzY2FubmluZylcblx0XHRzd2l0Y2ggKHByZXZpb3VzID0gY2hhcmFjdGVyLCBjaGFyYWN0ZXIgPSBuZXh0KCkpIHtcblx0XHRcdC8vIChcblx0XHRcdGNhc2UgNDA6XG5cdFx0XHRcdGlmIChwcmV2aW91cyAhPSAxMDggJiYgY2hhcmF0KGNoYXJhY3RlcnMsIGxlbmd0aCAtIDEpID09IDU4KSB7XG5cdFx0XHRcdFx0aWYgKGluZGV4b2YoY2hhcmFjdGVycyArPSByZXBsYWNlKGRlbGltaXQoY2hhcmFjdGVyKSwgJyYnLCAnJlxcZicpLCAnJlxcZicsIGFicyhpbmRleCA/IHBvaW50c1tpbmRleCAtIDFdIDogMCkpICE9IC0xKVxuXHRcdFx0XHRcdFx0YW1wZXJzYW5kID0gLTFcblx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHR9XG5cdFx0XHQvLyBcIiAnIFtcblx0XHRcdGNhc2UgMzQ6IGNhc2UgMzk6IGNhc2UgOTE6XG5cdFx0XHRcdGNoYXJhY3RlcnMgKz0gZGVsaW1pdChjaGFyYWN0ZXIpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyBcXHQgXFxuIFxcciBcXHNcblx0XHRcdGNhc2UgOTogY2FzZSAxMDogY2FzZSAxMzogY2FzZSAzMjpcblx0XHRcdFx0Y2hhcmFjdGVycyArPSB3aGl0ZXNwYWNlKHByZXZpb3VzKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gXFxcblx0XHRcdGNhc2UgOTI6XG5cdFx0XHRcdGNoYXJhY3RlcnMgKz0gZXNjYXBpbmcoY2FyZXQoKSAtIDEsIDcpXG5cdFx0XHRcdGNvbnRpbnVlXG5cdFx0XHQvLyAvXG5cdFx0XHRjYXNlIDQ3OlxuXHRcdFx0XHRzd2l0Y2ggKHBlZWsoKSkge1xuXHRcdFx0XHRcdGNhc2UgNDI6IGNhc2UgNDc6XG5cdFx0XHRcdFx0XHRhcHBlbmQoY29tbWVudChjb21tZW50ZXIobmV4dCgpLCBjYXJldCgpKSwgcm9vdCwgcGFyZW50LCBkZWNsYXJhdGlvbnMpLCBkZWNsYXJhdGlvbnMpXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRjaGFyYWN0ZXJzICs9ICcvJ1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyB7XG5cdFx0XHRjYXNlIDEyMyAqIHZhcmlhYmxlOlxuXHRcdFx0XHRwb2ludHNbaW5kZXgrK10gPSBzdHJsZW4oY2hhcmFjdGVycykgKiBhbXBlcnNhbmRcblx0XHRcdC8vIH0gOyBcXDBcblx0XHRcdGNhc2UgMTI1ICogdmFyaWFibGU6IGNhc2UgNTk6IGNhc2UgMDpcblx0XHRcdFx0c3dpdGNoIChjaGFyYWN0ZXIpIHtcblx0XHRcdFx0XHQvLyBcXDAgfVxuXHRcdFx0XHRcdGNhc2UgMDogY2FzZSAxMjU6IHNjYW5uaW5nID0gMFxuXHRcdFx0XHRcdC8vIDtcblx0XHRcdFx0XHRjYXNlIDU5ICsgb2Zmc2V0OiBpZiAoYW1wZXJzYW5kID09IC0xKSBjaGFyYWN0ZXJzID0gcmVwbGFjZShjaGFyYWN0ZXJzLCAvXFxmL2csICcnKVxuXHRcdFx0XHRcdFx0aWYgKHByb3BlcnR5ID4gMCAmJiAoc3RybGVuKGNoYXJhY3RlcnMpIC0gbGVuZ3RoKSlcblx0XHRcdFx0XHRcdFx0YXBwZW5kKHByb3BlcnR5ID4gMzIgPyBkZWNsYXJhdGlvbihjaGFyYWN0ZXJzICsgJzsnLCBydWxlLCBwYXJlbnQsIGxlbmd0aCAtIDEsIGRlY2xhcmF0aW9ucykgOiBkZWNsYXJhdGlvbihyZXBsYWNlKGNoYXJhY3RlcnMsICcgJywgJycpICsgJzsnLCBydWxlLCBwYXJlbnQsIGxlbmd0aCAtIDIsIGRlY2xhcmF0aW9ucyksIGRlY2xhcmF0aW9ucylcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Ly8gQCA7XG5cdFx0XHRcdFx0Y2FzZSA1OTogY2hhcmFjdGVycyArPSAnOydcblx0XHRcdFx0XHQvLyB7IHJ1bGUvYXQtcnVsZVxuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRhcHBlbmQocmVmZXJlbmNlID0gcnVsZXNldChjaGFyYWN0ZXJzLCByb290LCBwYXJlbnQsIGluZGV4LCBvZmZzZXQsIHJ1bGVzLCBwb2ludHMsIHR5cGUsIHByb3BzID0gW10sIGNoaWxkcmVuID0gW10sIGxlbmd0aCwgcnVsZXNldHMpLCBydWxlc2V0cylcblxuXHRcdFx0XHRcdFx0aWYgKGNoYXJhY3RlciA9PT0gMTIzKVxuXHRcdFx0XHRcdFx0XHRpZiAob2Zmc2V0ID09PSAwKVxuXHRcdFx0XHRcdFx0XHRcdHBhcnNlKGNoYXJhY3RlcnMsIHJvb3QsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCBwcm9wcywgcnVsZXNldHMsIGxlbmd0aCwgcG9pbnRzLCBjaGlsZHJlbilcblx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoYXRydWxlID09PSA5OSAmJiBjaGFyYXQoY2hhcmFjdGVycywgMykgPT09IDExMCA/IDEwMCA6IGF0cnVsZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gZCBsIG0gc1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxMDA6IGNhc2UgMTA4OiBjYXNlIDEwOTogY2FzZSAxMTU6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBhcnNlKHZhbHVlLCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgcnVsZSAmJiBhcHBlbmQocnVsZXNldCh2YWx1ZSwgcmVmZXJlbmNlLCByZWZlcmVuY2UsIDAsIDAsIHJ1bGVzLCBwb2ludHMsIHR5cGUsIHJ1bGVzLCBwcm9wcyA9IFtdLCBsZW5ndGgsIGNoaWxkcmVuKSwgY2hpbGRyZW4pLCBydWxlcywgY2hpbGRyZW4sIGxlbmd0aCwgcG9pbnRzLCBydWxlID8gcHJvcHMgOiBjaGlsZHJlbilcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBhcnNlKGNoYXJhY3RlcnMsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCByZWZlcmVuY2UsIFsnJ10sIGNoaWxkcmVuLCAwLCBwb2ludHMsIGNoaWxkcmVuKVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGluZGV4ID0gb2Zmc2V0ID0gcHJvcGVydHkgPSAwLCB2YXJpYWJsZSA9IGFtcGVyc2FuZCA9IDEsIHR5cGUgPSBjaGFyYWN0ZXJzID0gJycsIGxlbmd0aCA9IHBzZXVkb1xuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gOlxuXHRcdFx0Y2FzZSA1ODpcblx0XHRcdFx0bGVuZ3RoID0gMSArIHN0cmxlbihjaGFyYWN0ZXJzKSwgcHJvcGVydHkgPSBwcmV2aW91c1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYgKHZhcmlhYmxlIDwgMSlcblx0XHRcdFx0XHRpZiAoY2hhcmFjdGVyID09IDEyMylcblx0XHRcdFx0XHRcdC0tdmFyaWFibGVcblx0XHRcdFx0XHRlbHNlIGlmIChjaGFyYWN0ZXIgPT0gMTI1ICYmIHZhcmlhYmxlKysgPT0gMCAmJiBwcmV2KCkgPT0gMTI1KVxuXHRcdFx0XHRcdFx0Y29udGludWVcblxuXHRcdFx0XHRzd2l0Y2ggKGNoYXJhY3RlcnMgKz0gZnJvbShjaGFyYWN0ZXIpLCBjaGFyYWN0ZXIgKiB2YXJpYWJsZSkge1xuXHRcdFx0XHRcdC8vICZcblx0XHRcdFx0XHRjYXNlIDM4OlxuXHRcdFx0XHRcdFx0YW1wZXJzYW5kID0gb2Zmc2V0ID4gMCA/IDEgOiAoY2hhcmFjdGVycyArPSAnXFxmJywgLTEpXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vICxcblx0XHRcdFx0XHRjYXNlIDQ0OlxuXHRcdFx0XHRcdFx0cG9pbnRzW2luZGV4KytdID0gKHN0cmxlbihjaGFyYWN0ZXJzKSAtIDEpICogYW1wZXJzYW5kLCBhbXBlcnNhbmQgPSAxXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vIEBcblx0XHRcdFx0XHRjYXNlIDY0OlxuXHRcdFx0XHRcdFx0Ly8gLVxuXHRcdFx0XHRcdFx0aWYgKHBlZWsoKSA9PT0gNDUpXG5cdFx0XHRcdFx0XHRcdGNoYXJhY3RlcnMgKz0gZGVsaW1pdChuZXh0KCkpXG5cblx0XHRcdFx0XHRcdGF0cnVsZSA9IHBlZWsoKSwgb2Zmc2V0ID0gbGVuZ3RoID0gc3RybGVuKHR5cGUgPSBjaGFyYWN0ZXJzICs9IGlkZW50aWZpZXIoY2FyZXQoKSkpLCBjaGFyYWN0ZXIrK1xuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyAtXG5cdFx0XHRcdFx0Y2FzZSA0NTpcblx0XHRcdFx0XHRcdGlmIChwcmV2aW91cyA9PT0gNDUgJiYgc3RybGVuKGNoYXJhY3RlcnMpID09IDIpXG5cdFx0XHRcdFx0XHRcdHZhcmlhYmxlID0gMFxuXHRcdFx0XHR9XG5cdFx0fVxuXG5cdHJldHVybiBydWxlc2V0c1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXRcbiAqIEBwYXJhbSB7c3RyaW5nW119IHJ1bGVzXG4gKiBAcGFyYW0ge251bWJlcltdfSBwb2ludHNcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwcm9wc1xuICogQHBhcmFtIHtzdHJpbmdbXX0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAqIEBwYXJhbSB7b2JqZWN0W119IHNpYmxpbmdzXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydWxlc2V0ICh2YWx1ZSwgcm9vdCwgcGFyZW50LCBpbmRleCwgb2Zmc2V0LCBydWxlcywgcG9pbnRzLCB0eXBlLCBwcm9wcywgY2hpbGRyZW4sIGxlbmd0aCwgc2libGluZ3MpIHtcblx0dmFyIHBvc3QgPSBvZmZzZXQgLSAxXG5cdHZhciBydWxlID0gb2Zmc2V0ID09PSAwID8gcnVsZXMgOiBbJyddXG5cdHZhciBzaXplID0gc2l6ZW9mKHJ1bGUpXG5cblx0Zm9yICh2YXIgaSA9IDAsIGogPSAwLCBrID0gMDsgaSA8IGluZGV4OyArK2kpXG5cdFx0Zm9yICh2YXIgeCA9IDAsIHkgPSBzdWJzdHIodmFsdWUsIHBvc3QgKyAxLCBwb3N0ID0gYWJzKGogPSBwb2ludHNbaV0pKSwgeiA9IHZhbHVlOyB4IDwgc2l6ZTsgKyt4KVxuXHRcdFx0aWYgKHogPSB0cmltKGogPiAwID8gcnVsZVt4XSArICcgJyArIHkgOiByZXBsYWNlKHksIC8mXFxmL2csIHJ1bGVbeF0pKSlcblx0XHRcdFx0cHJvcHNbaysrXSA9IHpcblxuXHRyZXR1cm4gbm9kZSh2YWx1ZSwgcm9vdCwgcGFyZW50LCBvZmZzZXQgPT09IDAgPyBSVUxFU0VUIDogdHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBsZW5ndGgsIHNpYmxpbmdzKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcGFyYW0ge29iamVjdFtdfSBzaWJsaW5nc1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbWVudCAodmFsdWUsIHJvb3QsIHBhcmVudCwgc2libGluZ3MpIHtcblx0cmV0dXJuIG5vZGUodmFsdWUsIHJvb3QsIHBhcmVudCwgQ09NTUVOVCwgZnJvbShjaGFyKCkpLCBzdWJzdHIodmFsdWUsIDIsIC0yKSwgMCwgc2libGluZ3MpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3Q/fSBwYXJlbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAqIEBwYXJhbSB7b2JqZWN0W119IHNpYmxpbmdzXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJhdGlvbiAodmFsdWUsIHJvb3QsIHBhcmVudCwgbGVuZ3RoLCBzaWJsaW5ncykge1xuXHRyZXR1cm4gbm9kZSh2YWx1ZSwgcm9vdCwgcGFyZW50LCBERUNMQVJBVElPTiwgc3Vic3RyKHZhbHVlLCAwLCBsZW5ndGgpLCBzdWJzdHIodmFsdWUsIGxlbmd0aCArIDEsIC0xKSwgbGVuZ3RoLCBzaWJsaW5ncylcbn1cbiIsImltcG9ydCB7TVMsIE1PWiwgV0VCS0lUfSBmcm9tICcuL0VudW0uanMnXG5pbXBvcnQge2hhc2gsIGNoYXJhdCwgc3RybGVuLCBpbmRleG9mLCByZXBsYWNlLCBzdWJzdHIsIG1hdGNofSBmcm9tICcuL1V0aWxpdHkuanMnXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlZml4ICh2YWx1ZSwgbGVuZ3RoLCBjaGlsZHJlbikge1xuXHRzd2l0Y2ggKGhhc2godmFsdWUsIGxlbmd0aCkpIHtcblx0XHQvLyBjb2xvci1hZGp1c3Rcblx0XHRjYXNlIDUxMDM6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgJ3ByaW50LScgKyB2YWx1ZSArIHZhbHVlXG5cdFx0Ly8gYW5pbWF0aW9uLCBhbmltYXRpb24tKGRlbGF5fGRpcmVjdGlvbnxkdXJhdGlvbnxmaWxsLW1vZGV8aXRlcmF0aW9uLWNvdW50fG5hbWV8cGxheS1zdGF0ZXx0aW1pbmctZnVuY3Rpb24pXG5cdFx0Y2FzZSA1NzM3OiBjYXNlIDQyMDE6IGNhc2UgMzE3NzogY2FzZSAzNDMzOiBjYXNlIDE2NDE6IGNhc2UgNDQ1NzogY2FzZSAyOTIxOlxuXHRcdC8vIHRleHQtZGVjb3JhdGlvbiwgZmlsdGVyLCBjbGlwLXBhdGgsIGJhY2tmYWNlLXZpc2liaWxpdHksIGNvbHVtbiwgYm94LWRlY29yYXRpb24tYnJlYWtcblx0XHRjYXNlIDU1NzI6IGNhc2UgNjM1NjogY2FzZSA1ODQ0OiBjYXNlIDMxOTE6IGNhc2UgNjY0NTogY2FzZSAzMDA1OlxuXHRcdC8vIG1hc2ssIG1hc2staW1hZ2UsIG1hc2stKG1vZGV8Y2xpcHxzaXplKSwgbWFzay0ocmVwZWF0fG9yaWdpbiksIG1hc2stcG9zaXRpb24sIG1hc2stY29tcG9zaXRlLFxuXHRcdGNhc2UgNjM5MTogY2FzZSA1ODc5OiBjYXNlIDU2MjM6IGNhc2UgNjEzNTogY2FzZSA0NTk5OiBjYXNlIDQ4NTU6XG5cdFx0Ly8gYmFja2dyb3VuZC1jbGlwLCBjb2x1bW5zLCBjb2x1bW4tKGNvdW50fGZpbGx8Z2FwfHJ1bGV8cnVsZS1jb2xvcnxydWxlLXN0eWxlfHJ1bGUtd2lkdGh8c3Bhbnx3aWR0aClcblx0XHRjYXNlIDQyMTU6IGNhc2UgNjM4OTogY2FzZSA1MTA5OiBjYXNlIDUzNjU6IGNhc2UgNTYyMTogY2FzZSAzODI5OlxuXHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgdmFsdWVcblx0XHQvLyB0YWItc2l6ZVxuXHRcdGNhc2UgNDc4OTpcblx0XHRcdHJldHVybiBNT1ogKyB2YWx1ZSArIHZhbHVlXG5cdFx0Ly8gYXBwZWFyYW5jZSwgdXNlci1zZWxlY3QsIHRyYW5zZm9ybSwgaHlwaGVucywgdGV4dC1zaXplLWFkanVzdFxuXHRcdGNhc2UgNTM0OTogY2FzZSA0MjQ2OiBjYXNlIDQ4MTA6IGNhc2UgNjk2ODogY2FzZSAyNzU2OlxuXHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTU9aICsgdmFsdWUgKyBNUyArIHZhbHVlICsgdmFsdWVcblx0XHQvLyB3cml0aW5nLW1vZGVcblx0XHRjYXNlIDU5MzY6XG5cdFx0XHRzd2l0Y2ggKGNoYXJhdCh2YWx1ZSwgbGVuZ3RoICsgMTEpKSB7XG5cdFx0XHRcdC8vIHZlcnRpY2FsLWwocilcblx0XHRcdFx0Y2FzZSAxMTQ6XG5cdFx0XHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAvW3N2aF1cXHcrLVt0YmxyXXsyfS8sICd0YicpICsgdmFsdWVcblx0XHRcdFx0Ly8gdmVydGljYWwtcihsKVxuXHRcdFx0XHRjYXNlIDEwODpcblx0XHRcdFx0XHRyZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsIC9bc3ZoXVxcdystW3RibHJdezJ9LywgJ3RiLXJsJykgKyB2YWx1ZVxuXHRcdFx0XHQvLyBob3Jpem9udGFsKC0pdGJcblx0XHRcdFx0Y2FzZSA0NTpcblx0XHRcdFx0XHRyZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsIC9bc3ZoXVxcdystW3RibHJdezJ9LywgJ2xyJykgKyB2YWx1ZVxuXHRcdFx0XHQvLyBkZWZhdWx0OiBmYWxsdGhyb3VnaCB0byBiZWxvd1xuXHRcdFx0fVxuXHRcdC8vIGZsZXgsIGZsZXgtZGlyZWN0aW9uLCBzY3JvbGwtc25hcC10eXBlLCB3cml0aW5nLW1vZGVcblx0XHRjYXNlIDY4Mjg6IGNhc2UgNDI2ODogY2FzZSAyOTAzOlxuXHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyB2YWx1ZSArIHZhbHVlXG5cdFx0Ly8gb3JkZXJcblx0XHRjYXNlIDYxNjU6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArICdmbGV4LScgKyB2YWx1ZSArIHZhbHVlXG5cdFx0Ly8gYWxpZ24taXRlbXNcblx0XHRjYXNlIDUxODc6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgdmFsdWUgKyByZXBsYWNlKHZhbHVlLCAvKFxcdyspLisoOlteXSspLywgV0VCS0lUICsgJ2JveC0kMSQyJyArIE1TICsgJ2ZsZXgtJDEkMicpICsgdmFsdWVcblx0XHQvLyBhbGlnbi1zZWxmXG5cdFx0Y2FzZSA1NDQzOlxuXHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyAnZmxleC1pdGVtLScgKyByZXBsYWNlKHZhbHVlLCAvZmxleC18LXNlbGYvZywgJycpICsgKCFtYXRjaCh2YWx1ZSwgL2ZsZXgtfGJhc2VsaW5lLykgPyBNUyArICdncmlkLXJvdy0nICsgcmVwbGFjZSh2YWx1ZSwgL2ZsZXgtfC1zZWxmL2csICcnKSA6ICcnKSArIHZhbHVlXG5cdFx0Ly8gYWxpZ24tY29udGVudFxuXHRcdGNhc2UgNDY3NTpcblx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgJ2ZsZXgtbGluZS1wYWNrJyArIHJlcGxhY2UodmFsdWUsIC9hbGlnbi1jb250ZW50fGZsZXgtfC1zZWxmL2csICcnKSArIHZhbHVlXG5cdFx0Ly8gZmxleC1zaHJpbmtcblx0XHRjYXNlIDU1NDg6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsICdzaHJpbmsnLCAnbmVnYXRpdmUnKSArIHZhbHVlXG5cdFx0Ly8gZmxleC1iYXNpc1xuXHRcdGNhc2UgNTI5Mjpcblx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgJ2Jhc2lzJywgJ3ByZWZlcnJlZC1zaXplJykgKyB2YWx1ZVxuXHRcdC8vIGZsZXgtZ3Jvd1xuXHRcdGNhc2UgNjA2MDpcblx0XHRcdHJldHVybiBXRUJLSVQgKyAnYm94LScgKyByZXBsYWNlKHZhbHVlLCAnLWdyb3cnLCAnJykgKyBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgJ2dyb3cnLCAncG9zaXRpdmUnKSArIHZhbHVlXG5cdFx0Ly8gdHJhbnNpdGlvblxuXHRcdGNhc2UgNDU1NDpcblx0XHRcdHJldHVybiBXRUJLSVQgKyByZXBsYWNlKHZhbHVlLCAvKFteLV0pKHRyYW5zZm9ybSkvZywgJyQxJyArIFdFQktJVCArICckMicpICsgdmFsdWVcblx0XHQvLyBjdXJzb3Jcblx0XHRjYXNlIDYxODc6XG5cdFx0XHRyZXR1cm4gcmVwbGFjZShyZXBsYWNlKHJlcGxhY2UodmFsdWUsIC8oem9vbS18Z3JhYikvLCBXRUJLSVQgKyAnJDEnKSwgLyhpbWFnZS1zZXQpLywgV0VCS0lUICsgJyQxJyksIHZhbHVlLCAnJykgKyB2YWx1ZVxuXHRcdC8vIGJhY2tncm91bmQsIGJhY2tncm91bmQtaW1hZ2Vcblx0XHRjYXNlIDU0OTU6IGNhc2UgMzk1OTpcblx0XHRcdHJldHVybiByZXBsYWNlKHZhbHVlLCAvKGltYWdlLXNldFxcKFteXSopLywgV0VCS0lUICsgJyQxJyArICckYCQxJylcblx0XHQvLyBqdXN0aWZ5LWNvbnRlbnRcblx0XHRjYXNlIDQ5Njg6XG5cdFx0XHRyZXR1cm4gcmVwbGFjZShyZXBsYWNlKHZhbHVlLCAvKC4rOikoZmxleC0pPyguKikvLCBXRUJLSVQgKyAnYm94LXBhY2s6JDMnICsgTVMgKyAnZmxleC1wYWNrOiQzJyksIC9zListYlteO10rLywgJ2p1c3RpZnknKSArIFdFQktJVCArIHZhbHVlICsgdmFsdWVcblx0XHQvLyBqdXN0aWZ5LXNlbGZcblx0XHRjYXNlIDQyMDA6XG5cdFx0XHRpZiAoIW1hdGNoKHZhbHVlLCAvZmxleC18YmFzZWxpbmUvKSkgcmV0dXJuIE1TICsgJ2dyaWQtY29sdW1uLWFsaWduJyArIHN1YnN0cih2YWx1ZSwgbGVuZ3RoKSArIHZhbHVlXG5cdFx0XHRicmVha1xuXHRcdC8vIGdyaWQtdGVtcGxhdGUtKGNvbHVtbnN8cm93cylcblx0XHRjYXNlIDI1OTI6IGNhc2UgMzM2MDpcblx0XHRcdHJldHVybiBNUyArIHJlcGxhY2UodmFsdWUsICd0ZW1wbGF0ZS0nLCAnJykgKyB2YWx1ZVxuXHRcdC8vIGdyaWQtKHJvd3xjb2x1bW4pLXN0YXJ0XG5cdFx0Y2FzZSA0Mzg0OiBjYXNlIDM2MTY6XG5cdFx0XHRpZiAoY2hpbGRyZW4gJiYgY2hpbGRyZW4uc29tZShmdW5jdGlvbiAoZWxlbWVudCwgaW5kZXgpIHsgcmV0dXJuIGxlbmd0aCA9IGluZGV4LCBtYXRjaChlbGVtZW50LnByb3BzLCAvZ3JpZC1cXHcrLWVuZC8pIH0pKSB7XG5cdFx0XHRcdHJldHVybiB+aW5kZXhvZih2YWx1ZSArIChjaGlsZHJlbiA9IGNoaWxkcmVuW2xlbmd0aF0udmFsdWUpLCAnc3BhbicsIDApID8gdmFsdWUgOiAoTVMgKyByZXBsYWNlKHZhbHVlLCAnLXN0YXJ0JywgJycpICsgdmFsdWUgKyBNUyArICdncmlkLXJvdy1zcGFuOicgKyAofmluZGV4b2YoY2hpbGRyZW4sICdzcGFuJywgMCkgPyBtYXRjaChjaGlsZHJlbiwgL1xcZCsvKSA6ICttYXRjaChjaGlsZHJlbiwgL1xcZCsvKSAtICttYXRjaCh2YWx1ZSwgL1xcZCsvKSkgKyAnOycpXG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gTVMgKyByZXBsYWNlKHZhbHVlLCAnLXN0YXJ0JywgJycpICsgdmFsdWVcblx0XHQvLyBncmlkLShyb3d8Y29sdW1uKS1lbmRcblx0XHRjYXNlIDQ4OTY6IGNhc2UgNDEyODpcblx0XHRcdHJldHVybiAoY2hpbGRyZW4gJiYgY2hpbGRyZW4uc29tZShmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gbWF0Y2goZWxlbWVudC5wcm9wcywgL2dyaWQtXFx3Ky1zdGFydC8pIH0pKSA/IHZhbHVlIDogTVMgKyByZXBsYWNlKHJlcGxhY2UodmFsdWUsICctZW5kJywgJy1zcGFuJyksICdzcGFuICcsICcnKSArIHZhbHVlXG5cdFx0Ly8gKG1hcmdpbnxwYWRkaW5nKS1pbmxpbmUtKHN0YXJ0fGVuZClcblx0XHRjYXNlIDQwOTU6IGNhc2UgMzU4MzogY2FzZSA0MDY4OiBjYXNlIDI1MzI6XG5cdFx0XHRyZXR1cm4gcmVwbGFjZSh2YWx1ZSwgLyguKyktaW5saW5lKC4rKS8sIFdFQktJVCArICckMSQyJykgKyB2YWx1ZVxuXHRcdC8vIChtaW58bWF4KT8od2lkdGh8aGVpZ2h0fGlubGluZS1zaXplfGJsb2NrLXNpemUpXG5cdFx0Y2FzZSA4MTE2OiBjYXNlIDcwNTk6IGNhc2UgNTc1MzogY2FzZSA1NTM1OlxuXHRcdGNhc2UgNTQ0NTogY2FzZSA1NzAxOiBjYXNlIDQ5MzM6IGNhc2UgNDY3Nzpcblx0XHRjYXNlIDU1MzM6IGNhc2UgNTc4OTogY2FzZSA1MDIxOiBjYXNlIDQ3NjU6XG5cdFx0XHQvLyBzdHJldGNoLCBtYXgtY29udGVudCwgbWluLWNvbnRlbnQsIGZpbGwtYXZhaWxhYmxlXG5cdFx0XHRpZiAoc3RybGVuKHZhbHVlKSAtIDEgLSBsZW5ndGggPiA2KVxuXHRcdFx0XHRzd2l0Y2ggKGNoYXJhdCh2YWx1ZSwgbGVuZ3RoICsgMSkpIHtcblx0XHRcdFx0XHQvLyAobSlheC1jb250ZW50LCAobSlpbi1jb250ZW50XG5cdFx0XHRcdFx0Y2FzZSAxMDk6XG5cdFx0XHRcdFx0XHQvLyAtXG5cdFx0XHRcdFx0XHRpZiAoY2hhcmF0KHZhbHVlLCBsZW5ndGggKyA0KSAhPT0gNDUpXG5cdFx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Ly8gKGYpaWxsLWF2YWlsYWJsZSwgKGYpaXQtY29udGVudFxuXHRcdFx0XHRcdGNhc2UgMTAyOlxuXHRcdFx0XHRcdFx0cmV0dXJuIHJlcGxhY2UodmFsdWUsIC8oLis6KSguKyktKFteXSspLywgJyQxJyArIFdFQktJVCArICckMi0kMycgKyAnJDEnICsgTU9aICsgKGNoYXJhdCh2YWx1ZSwgbGVuZ3RoICsgMykgPT0gMTA4ID8gJyQzJyA6ICckMi0kMycpKSArIHZhbHVlXG5cdFx0XHRcdFx0Ly8gKHMpdHJldGNoXG5cdFx0XHRcdFx0Y2FzZSAxMTU6XG5cdFx0XHRcdFx0XHRyZXR1cm4gfmluZGV4b2YodmFsdWUsICdzdHJldGNoJywgMCkgPyBwcmVmaXgocmVwbGFjZSh2YWx1ZSwgJ3N0cmV0Y2gnLCAnZmlsbC1hdmFpbGFibGUnKSwgbGVuZ3RoLCBjaGlsZHJlbikgKyB2YWx1ZSA6IHZhbHVlXG5cdFx0XHRcdH1cblx0XHRcdGJyZWFrXG5cdFx0Ly8gZ3JpZC0oY29sdW1ufHJvdylcblx0XHRjYXNlIDUxNTI6IGNhc2UgNTkyMDpcblx0XHRcdHJldHVybiByZXBsYWNlKHZhbHVlLCAvKC4rPyk6KFxcZCspKFxccypcXC9cXHMqKHNwYW4pP1xccyooXFxkKykpPyguKikvLCBmdW5jdGlvbiAoXywgYSwgYiwgYywgZCwgZSwgZikgeyByZXR1cm4gKE1TICsgYSArICc6JyArIGIgKyBmKSArIChjID8gKE1TICsgYSArICctc3BhbjonICsgKGQgPyBlIDogK2UgLSArYikpICsgZiA6ICcnKSArIHZhbHVlIH0pXG5cdFx0Ly8gcG9zaXRpb246IHN0aWNreVxuXHRcdGNhc2UgNDk0OTpcblx0XHRcdC8vIHN0aWNrKHkpP1xuXHRcdFx0aWYgKGNoYXJhdCh2YWx1ZSwgbGVuZ3RoICsgNikgPT09IDEyMSlcblx0XHRcdFx0cmV0dXJuIHJlcGxhY2UodmFsdWUsICc6JywgJzonICsgV0VCS0lUKSArIHZhbHVlXG5cdFx0XHRicmVha1xuXHRcdC8vIGRpc3BsYXk6IChmbGV4fGlubGluZS1mbGV4fGdyaWR8aW5saW5lLWdyaWQpXG5cdFx0Y2FzZSA2NDQ0OlxuXHRcdFx0c3dpdGNoIChjaGFyYXQodmFsdWUsIGNoYXJhdCh2YWx1ZSwgMTQpID09PSA0NSA/IDE4IDogMTEpKSB7XG5cdFx0XHRcdC8vIChpbmxpbmUtKT9mbGUoeClcblx0XHRcdFx0Y2FzZSAxMjA6XG5cdFx0XHRcdFx0cmV0dXJuIHJlcGxhY2UodmFsdWUsIC8oLis6KShbXjtcXHMhXSspKDt8KFxccyspPyEuKyk/LywgJyQxJyArIFdFQktJVCArIChjaGFyYXQodmFsdWUsIDE0KSA9PT0gNDUgPyAnaW5saW5lLScgOiAnJykgKyAnYm94JDMnICsgJyQxJyArIFdFQktJVCArICckMiQzJyArICckMScgKyBNUyArICckMmJveCQzJykgKyB2YWx1ZVxuXHRcdFx0XHQvLyAoaW5saW5lLSk/Z3JpKGQpXG5cdFx0XHRcdGNhc2UgMTAwOlxuXHRcdFx0XHRcdHJldHVybiByZXBsYWNlKHZhbHVlLCAnOicsICc6JyArIE1TKSArIHZhbHVlXG5cdFx0XHR9XG5cdFx0XHRicmVha1xuXHRcdC8vIHNjcm9sbC1tYXJnaW4sIHNjcm9sbC1tYXJnaW4tKHRvcHxyaWdodHxib3R0b218bGVmdClcblx0XHRjYXNlIDU3MTk6IGNhc2UgMjY0NzogY2FzZSAyMTM1OiBjYXNlIDM5Mjc6IGNhc2UgMjM5MTpcblx0XHRcdHJldHVybiByZXBsYWNlKHZhbHVlLCAnc2Nyb2xsLScsICdzY3JvbGwtc25hcC0nKSArIHZhbHVlXG5cdH1cblxuXHRyZXR1cm4gdmFsdWVcbn1cbiIsImltcG9ydCB7SU1QT1JULCBMQVlFUiwgQ09NTUVOVCwgUlVMRVNFVCwgREVDTEFSQVRJT04sIEtFWUZSQU1FU30gZnJvbSAnLi9FbnVtLmpzJ1xuaW1wb3J0IHtzdHJsZW59IGZyb20gJy4vVXRpbGl0eS5qcydcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdHZhciBvdXRwdXQgPSAnJ1xuXG5cdGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspXG5cdFx0b3V0cHV0ICs9IGNhbGxiYWNrKGNoaWxkcmVuW2ldLCBpLCBjaGlsZHJlbiwgY2FsbGJhY2spIHx8ICcnXG5cblx0cmV0dXJuIG91dHB1dFxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBlbGVtZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7b2JqZWN0W119IGNoaWxkcmVuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5IChlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG5cdFx0Y2FzZSBMQVlFUjogaWYgKGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoKSBicmVha1xuXHRcdGNhc2UgSU1QT1JUOiBjYXNlIERFQ0xBUkFUSU9OOiByZXR1cm4gZWxlbWVudC5yZXR1cm4gPSBlbGVtZW50LnJldHVybiB8fCBlbGVtZW50LnZhbHVlXG5cdFx0Y2FzZSBDT01NRU5UOiByZXR1cm4gJydcblx0XHRjYXNlIEtFWUZSQU1FUzogcmV0dXJuIGVsZW1lbnQucmV0dXJuID0gZWxlbWVudC52YWx1ZSArICd7JyArIHNlcmlhbGl6ZShlbGVtZW50LmNoaWxkcmVuLCBjYWxsYmFjaykgKyAnfSdcblx0XHRjYXNlIFJVTEVTRVQ6IGlmICghc3RybGVuKGVsZW1lbnQudmFsdWUgPSBlbGVtZW50LnByb3BzLmpvaW4oJywnKSkpIHJldHVybiAnJ1xuXHR9XG5cblx0cmV0dXJuIHN0cmxlbihjaGlsZHJlbiA9IHNlcmlhbGl6ZShlbGVtZW50LmNoaWxkcmVuLCBjYWxsYmFjaykpID8gZWxlbWVudC5yZXR1cm4gPSBlbGVtZW50LnZhbHVlICsgJ3snICsgY2hpbGRyZW4gKyAnfScgOiAnJ1xufVxuIiwiaW1wb3J0IHtNUywgTU9aLCBXRUJLSVQsIFJVTEVTRVQsIEtFWUZSQU1FUywgREVDTEFSQVRJT059IGZyb20gJy4vRW51bS5qcydcbmltcG9ydCB7bWF0Y2gsIGNoYXJhdCwgc3Vic3RyLCBzdHJsZW4sIHNpemVvZiwgcmVwbGFjZSwgY29tYmluZSwgZmlsdGVyLCBhc3NpZ259IGZyb20gJy4vVXRpbGl0eS5qcydcbmltcG9ydCB7Y29weSwgbGlmdCwgdG9rZW5pemV9IGZyb20gJy4vVG9rZW5pemVyLmpzJ1xuaW1wb3J0IHtzZXJpYWxpemV9IGZyb20gJy4vU2VyaWFsaXplci5qcydcbmltcG9ydCB7cHJlZml4fSBmcm9tICcuL1ByZWZpeGVyLmpzJ1xuXG4vKipcbiAqIEBwYXJhbSB7ZnVuY3Rpb25bXX0gY29sbGVjdGlvblxuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtaWRkbGV3YXJlIChjb2xsZWN0aW9uKSB7XG5cdHZhciBsZW5ndGggPSBzaXplb2YoY29sbGVjdGlvbilcblxuXHRyZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQsIGluZGV4LCBjaGlsZHJlbiwgY2FsbGJhY2spIHtcblx0XHR2YXIgb3V0cHV0ID0gJydcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspXG5cdFx0XHRvdXRwdXQgKz0gY29sbGVjdGlvbltpXShlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4sIGNhbGxiYWNrKSB8fCAnJ1xuXG5cdFx0cmV0dXJuIG91dHB1dFxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNoZWV0IChjYWxsYmFjaykge1xuXHRyZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQpIHtcblx0XHRpZiAoIWVsZW1lbnQucm9vdClcblx0XHRcdGlmIChlbGVtZW50ID0gZWxlbWVudC5yZXR1cm4pXG5cdFx0XHRcdGNhbGxiYWNrKGVsZW1lbnQpXG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWZpeGVyIChlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdGlmIChlbGVtZW50Lmxlbmd0aCA+IC0xKVxuXHRcdGlmICghZWxlbWVudC5yZXR1cm4pXG5cdFx0XHRzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuXHRcdFx0XHRjYXNlIERFQ0xBUkFUSU9OOiBlbGVtZW50LnJldHVybiA9IHByZWZpeChlbGVtZW50LnZhbHVlLCBlbGVtZW50Lmxlbmd0aCwgY2hpbGRyZW4pXG5cdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdGNhc2UgS0VZRlJBTUVTOlxuXHRcdFx0XHRcdHJldHVybiBzZXJpYWxpemUoW2NvcHkoZWxlbWVudCwge3ZhbHVlOiByZXBsYWNlKGVsZW1lbnQudmFsdWUsICdAJywgJ0AnICsgV0VCS0lUKX0pXSwgY2FsbGJhY2spXG5cdFx0XHRcdGNhc2UgUlVMRVNFVDpcblx0XHRcdFx0XHRpZiAoZWxlbWVudC5sZW5ndGgpXG5cdFx0XHRcdFx0XHRyZXR1cm4gY29tYmluZShjaGlsZHJlbiA9IGVsZW1lbnQucHJvcHMsIGZ1bmN0aW9uICh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRzd2l0Y2ggKG1hdGNoKHZhbHVlLCBjYWxsYmFjayA9IC8oOjpwbGFjXFx3K3w6cmVhZC1cXHcrKS8pKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gOnJlYWQtKG9ubHl8d3JpdGUpXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSAnOnJlYWQtb25seSc6IGNhc2UgJzpyZWFkLXdyaXRlJzpcblx0XHRcdFx0XHRcdFx0XHRcdGxpZnQoY29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihyZWFkLVxcdyspLywgJzonICsgTU9aICsgJyQxJyldfSkpXG5cdFx0XHRcdFx0XHRcdFx0XHRsaWZ0KGNvcHkoZWxlbWVudCwge3Byb3BzOiBbdmFsdWVdfSkpXG5cdFx0XHRcdFx0XHRcdFx0XHRhc3NpZ24oZWxlbWVudCwge3Byb3BzOiBmaWx0ZXIoY2hpbGRyZW4sIGNhbGxiYWNrKX0pXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdFx0XHRcdC8vIDpwbGFjZWhvbGRlclxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgJzo6cGxhY2Vob2xkZXInOlxuXHRcdFx0XHRcdFx0XHRcdFx0bGlmdChjb3B5KGVsZW1lbnQsIHtwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHBsYWNcXHcrKS8sICc6JyArIFdFQktJVCArICdpbnB1dC0kMScpXX0pKVxuXHRcdFx0XHRcdFx0XHRcdFx0bGlmdChjb3B5KGVsZW1lbnQsIHtwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHBsYWNcXHcrKS8sICc6JyArIE1PWiArICckMScpXX0pKVxuXHRcdFx0XHRcdFx0XHRcdFx0bGlmdChjb3B5KGVsZW1lbnQsIHtwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHBsYWNcXHcrKS8sIE1TICsgJ2lucHV0LSQxJyldfSkpXG5cdFx0XHRcdFx0XHRcdFx0XHRsaWZ0KGNvcHkoZWxlbWVudCwge3Byb3BzOiBbdmFsdWVdfSkpXG5cdFx0XHRcdFx0XHRcdFx0XHRhc3NpZ24oZWxlbWVudCwge3Byb3BzOiBmaWx0ZXIoY2hpbGRyZW4sIGNhbGxiYWNrKX0pXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0cmV0dXJuICcnXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBlbGVtZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7b2JqZWN0W119IGNoaWxkcmVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYW1lc3BhY2UgKGVsZW1lbnQpIHtcblx0c3dpdGNoIChlbGVtZW50LnR5cGUpIHtcblx0XHRjYXNlIFJVTEVTRVQ6XG5cdFx0XHRlbGVtZW50LnByb3BzID0gZWxlbWVudC5wcm9wcy5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7XG5cdFx0XHRcdHJldHVybiBjb21iaW5lKHRva2VuaXplKHZhbHVlKSwgZnVuY3Rpb24gKHZhbHVlLCBpbmRleCwgY2hpbGRyZW4pIHtcblx0XHRcdFx0XHRzd2l0Y2ggKGNoYXJhdCh2YWx1ZSwgMCkpIHtcblx0XHRcdFx0XHRcdC8vIFxcZlxuXHRcdFx0XHRcdFx0Y2FzZSAxMjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHN1YnN0cih2YWx1ZSwgMSwgc3RybGVuKHZhbHVlKSlcblx0XHRcdFx0XHRcdC8vIFxcMCAoICsgPiB+XG5cdFx0XHRcdFx0XHRjYXNlIDA6IGNhc2UgNDA6IGNhc2UgNDM6IGNhc2UgNjI6IGNhc2UgMTI2OlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWVcblx0XHRcdFx0XHRcdC8vIDpcblx0XHRcdFx0XHRcdGNhc2UgNTg6XG5cdFx0XHRcdFx0XHRcdGlmIChjaGlsZHJlblsrK2luZGV4XSA9PT0gJ2dsb2JhbCcpXG5cdFx0XHRcdFx0XHRcdFx0Y2hpbGRyZW5baW5kZXhdID0gJycsIGNoaWxkcmVuWysraW5kZXhdID0gJ1xcZicgKyBzdWJzdHIoY2hpbGRyZW5baW5kZXhdLCBpbmRleCA9IDEsIC0xKVxuXHRcdFx0XHRcdFx0Ly8gXFxzXG5cdFx0XHRcdFx0XHRjYXNlIDMyOlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gaW5kZXggPT09IDEgPyAnJyA6IHZhbHVlXG5cdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRzd2l0Y2ggKGluZGV4KSB7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOiBlbGVtZW50ID0gdmFsdWVcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBzaXplb2YoY2hpbGRyZW4pID4gMSA/ICcnIDogdmFsdWVcblx0XHRcdFx0XHRcdFx0XHRjYXNlIGluZGV4ID0gc2l6ZW9mKGNoaWxkcmVuKSAtIDE6IGNhc2UgMjpcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBpbmRleCA9PT0gMiA/IHZhbHVlICsgZWxlbWVudCArIGVsZW1lbnQgOiB2YWx1ZSArIGVsZW1lbnRcblx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhbHVlXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXHR9XG59XG4iLCJ2YXIgdW5pdGxlc3NLZXlzID0ge1xuICBhbmltYXRpb25JdGVyYXRpb25Db3VudDogMSxcbiAgYXNwZWN0UmF0aW86IDEsXG4gIGJvcmRlckltYWdlT3V0c2V0OiAxLFxuICBib3JkZXJJbWFnZVNsaWNlOiAxLFxuICBib3JkZXJJbWFnZVdpZHRoOiAxLFxuICBib3hGbGV4OiAxLFxuICBib3hGbGV4R3JvdXA6IDEsXG4gIGJveE9yZGluYWxHcm91cDogMSxcbiAgY29sdW1uQ291bnQ6IDEsXG4gIGNvbHVtbnM6IDEsXG4gIGZsZXg6IDEsXG4gIGZsZXhHcm93OiAxLFxuICBmbGV4UG9zaXRpdmU6IDEsXG4gIGZsZXhTaHJpbms6IDEsXG4gIGZsZXhOZWdhdGl2ZTogMSxcbiAgZmxleE9yZGVyOiAxLFxuICBncmlkUm93OiAxLFxuICBncmlkUm93RW5kOiAxLFxuICBncmlkUm93U3BhbjogMSxcbiAgZ3JpZFJvd1N0YXJ0OiAxLFxuICBncmlkQ29sdW1uOiAxLFxuICBncmlkQ29sdW1uRW5kOiAxLFxuICBncmlkQ29sdW1uU3BhbjogMSxcbiAgZ3JpZENvbHVtblN0YXJ0OiAxLFxuICBtc0dyaWRSb3c6IDEsXG4gIG1zR3JpZFJvd1NwYW46IDEsXG4gIG1zR3JpZENvbHVtbjogMSxcbiAgbXNHcmlkQ29sdW1uU3BhbjogMSxcbiAgZm9udFdlaWdodDogMSxcbiAgbGluZUhlaWdodDogMSxcbiAgb3BhY2l0eTogMSxcbiAgb3JkZXI6IDEsXG4gIG9ycGhhbnM6IDEsXG4gIHRhYlNpemU6IDEsXG4gIHdpZG93czogMSxcbiAgekluZGV4OiAxLFxuICB6b29tOiAxLFxuICBXZWJraXRMaW5lQ2xhbXA6IDEsXG4gIC8vIFNWRy1yZWxhdGVkIHByb3BlcnRpZXNcbiAgZmlsbE9wYWNpdHk6IDEsXG4gIGZsb29kT3BhY2l0eTogMSxcbiAgc3RvcE9wYWNpdHk6IDEsXG4gIHN0cm9rZURhc2hhcnJheTogMSxcbiAgc3Ryb2tlRGFzaG9mZnNldDogMSxcbiAgc3Ryb2tlTWl0ZXJsaW1pdDogMSxcbiAgc3Ryb2tlT3BhY2l0eTogMSxcbiAgc3Ryb2tlV2lkdGg6IDFcbn07XG5cbmV4cG9ydCB7IHVuaXRsZXNzS2V5cyBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnR7X19zcHJlYWRBcnJheSBhcyBlLF9fYXNzaWduIGFzIHR9ZnJvbVwidHNsaWJcIjtpbXBvcnQgbiBmcm9tXCJAZW1vdGlvbi9pcy1wcm9wLXZhbGlkXCI7aW1wb3J0IG8se3VzZVJlZiBhcyByLHVzZVN0YXRlIGFzIHMsdXNlTWVtbyBhcyBpLHVzZUVmZmVjdCBhcyBhLHVzZUNvbnRleHQgYXMgYyx1c2VEZWJ1Z1ZhbHVlIGFzIGwsY3JlYXRlRWxlbWVudCBhcyB1fWZyb21cInJlYWN0XCI7aW1wb3J0IHAgZnJvbVwic2hhbGxvd2VxdWFsXCI7aW1wb3J0KmFzIGQgZnJvbVwic3R5bGlzXCI7aW1wb3J0IGggZnJvbVwiQGVtb3Rpb24vdW5pdGxlc3NcIjt2YXIgZj1cInVuZGVmaW5lZFwiIT10eXBlb2YgcHJvY2VzcyYmdm9pZCAwIT09cHJvY2Vzcy5lbnYmJihwcm9jZXNzLmVudi5SRUFDVF9BUFBfU0NfQVRUUnx8cHJvY2Vzcy5lbnYuU0NfQVRUUil8fFwiZGF0YS1zdHlsZWRcIixtPVwiYWN0aXZlXCIseT1cImRhdGEtc3R5bGVkLXZlcnNpb25cIix2PVwiNi4xLjEzXCIsZz1cIi8qIXNjKi9cXG5cIixTPVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJlwiSFRNTEVsZW1lbnRcImluIHdpbmRvdyx3PUJvb2xlYW4oXCJib29sZWFuXCI9PXR5cGVvZiBTQ19ESVNBQkxFX1NQRUVEWT9TQ19ESVNBQkxFX1NQRUVEWTpcInVuZGVmaW5lZFwiIT10eXBlb2YgcHJvY2VzcyYmdm9pZCAwIT09cHJvY2Vzcy5lbnYmJnZvaWQgMCE9PXByb2Nlc3MuZW52LlJFQUNUX0FQUF9TQ19ESVNBQkxFX1NQRUVEWSYmXCJcIiE9PXByb2Nlc3MuZW52LlJFQUNUX0FQUF9TQ19ESVNBQkxFX1NQRUVEWT9cImZhbHNlXCIhPT1wcm9jZXNzLmVudi5SRUFDVF9BUFBfU0NfRElTQUJMRV9TUEVFRFkmJnByb2Nlc3MuZW52LlJFQUNUX0FQUF9TQ19ESVNBQkxFX1NQRUVEWTpcInVuZGVmaW5lZFwiIT10eXBlb2YgcHJvY2VzcyYmdm9pZCAwIT09cHJvY2Vzcy5lbnYmJnZvaWQgMCE9PXByb2Nlc3MuZW52LlNDX0RJU0FCTEVfU1BFRURZJiZcIlwiIT09cHJvY2Vzcy5lbnYuU0NfRElTQUJMRV9TUEVFRFk/XCJmYWxzZVwiIT09cHJvY2Vzcy5lbnYuU0NfRElTQUJMRV9TUEVFRFkmJnByb2Nlc3MuZW52LlNDX0RJU0FCTEVfU1BFRURZOlwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYpLGI9e30sRT0vaW52YWxpZCBob29rIGNhbGwvaSxOPW5ldyBTZXQsUD1mdW5jdGlvbih0LG4pe2lmKFwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYpe3ZhciBvPW4/JyB3aXRoIHRoZSBpZCBvZiBcIicuY29uY2F0KG4sJ1wiJyk6XCJcIixzPVwiVGhlIGNvbXBvbmVudCBcIi5jb25jYXQodCkuY29uY2F0KG8sXCIgaGFzIGJlZW4gY3JlYXRlZCBkeW5hbWljYWxseS5cXG5cIikrXCJZb3UgbWF5IHNlZSB0aGlzIHdhcm5pbmcgYmVjYXVzZSB5b3UndmUgY2FsbGVkIHN0eWxlZCBpbnNpZGUgYW5vdGhlciBjb21wb25lbnQuXFxuVG8gcmVzb2x2ZSB0aGlzIG9ubHkgY3JlYXRlIG5ldyBTdHlsZWRDb21wb25lbnRzIG91dHNpZGUgb2YgYW55IHJlbmRlciBtZXRob2QgYW5kIGZ1bmN0aW9uIGNvbXBvbmVudC5cIixpPWNvbnNvbGUuZXJyb3I7dHJ5e3ZhciBhPSEwO2NvbnNvbGUuZXJyb3I9ZnVuY3Rpb24odCl7Zm9yKHZhciBuPVtdLG89MTtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKW5bby0xXT1hcmd1bWVudHNbb107RS50ZXN0KHQpPyhhPSExLE4uZGVsZXRlKHMpKTppLmFwcGx5KHZvaWQgMCxlKFt0XSxuLCExKSl9LHIoKSxhJiYhTi5oYXMocykmJihjb25zb2xlLndhcm4ocyksTi5hZGQocykpfWNhdGNoKGUpe0UudGVzdChlLm1lc3NhZ2UpJiZOLmRlbGV0ZShzKX1maW5hbGx5e2NvbnNvbGUuZXJyb3I9aX19fSxfPU9iamVjdC5mcmVlemUoW10pLEM9T2JqZWN0LmZyZWV6ZSh7fSk7ZnVuY3Rpb24gSShlLHQsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPUMpLGUudGhlbWUhPT1uLnRoZW1lJiZlLnRoZW1lfHx0fHxuLnRoZW1lfXZhciBBPW5ldyBTZXQoW1wiYVwiLFwiYWJiclwiLFwiYWRkcmVzc1wiLFwiYXJlYVwiLFwiYXJ0aWNsZVwiLFwiYXNpZGVcIixcImF1ZGlvXCIsXCJiXCIsXCJiYXNlXCIsXCJiZGlcIixcImJkb1wiLFwiYmlnXCIsXCJibG9ja3F1b3RlXCIsXCJib2R5XCIsXCJiclwiLFwiYnV0dG9uXCIsXCJjYW52YXNcIixcImNhcHRpb25cIixcImNpdGVcIixcImNvZGVcIixcImNvbFwiLFwiY29sZ3JvdXBcIixcImRhdGFcIixcImRhdGFsaXN0XCIsXCJkZFwiLFwiZGVsXCIsXCJkZXRhaWxzXCIsXCJkZm5cIixcImRpYWxvZ1wiLFwiZGl2XCIsXCJkbFwiLFwiZHRcIixcImVtXCIsXCJlbWJlZFwiLFwiZmllbGRzZXRcIixcImZpZ2NhcHRpb25cIixcImZpZ3VyZVwiLFwiZm9vdGVyXCIsXCJmb3JtXCIsXCJoMVwiLFwiaDJcIixcImgzXCIsXCJoNFwiLFwiaDVcIixcImg2XCIsXCJoZWFkZXJcIixcImhncm91cFwiLFwiaHJcIixcImh0bWxcIixcImlcIixcImlmcmFtZVwiLFwiaW1nXCIsXCJpbnB1dFwiLFwiaW5zXCIsXCJrYmRcIixcImtleWdlblwiLFwibGFiZWxcIixcImxlZ2VuZFwiLFwibGlcIixcImxpbmtcIixcIm1haW5cIixcIm1hcFwiLFwibWFya1wiLFwibWVudVwiLFwibWVudWl0ZW1cIixcIm1ldGFcIixcIm1ldGVyXCIsXCJuYXZcIixcIm5vc2NyaXB0XCIsXCJvYmplY3RcIixcIm9sXCIsXCJvcHRncm91cFwiLFwib3B0aW9uXCIsXCJvdXRwdXRcIixcInBcIixcInBhcmFtXCIsXCJwaWN0dXJlXCIsXCJwcmVcIixcInByb2dyZXNzXCIsXCJxXCIsXCJycFwiLFwicnRcIixcInJ1YnlcIixcInNcIixcInNhbXBcIixcInNjcmlwdFwiLFwic2VjdGlvblwiLFwic2VsZWN0XCIsXCJzbWFsbFwiLFwic291cmNlXCIsXCJzcGFuXCIsXCJzdHJvbmdcIixcInN0eWxlXCIsXCJzdWJcIixcInN1bW1hcnlcIixcInN1cFwiLFwidGFibGVcIixcInRib2R5XCIsXCJ0ZFwiLFwidGV4dGFyZWFcIixcInRmb290XCIsXCJ0aFwiLFwidGhlYWRcIixcInRpbWVcIixcInRyXCIsXCJ0cmFja1wiLFwidVwiLFwidWxcIixcInVzZVwiLFwidmFyXCIsXCJ2aWRlb1wiLFwid2JyXCIsXCJjaXJjbGVcIixcImNsaXBQYXRoXCIsXCJkZWZzXCIsXCJlbGxpcHNlXCIsXCJmb3JlaWduT2JqZWN0XCIsXCJnXCIsXCJpbWFnZVwiLFwibGluZVwiLFwibGluZWFyR3JhZGllbnRcIixcIm1hcmtlclwiLFwibWFza1wiLFwicGF0aFwiLFwicGF0dGVyblwiLFwicG9seWdvblwiLFwicG9seWxpbmVcIixcInJhZGlhbEdyYWRpZW50XCIsXCJyZWN0XCIsXCJzdG9wXCIsXCJzdmdcIixcInRleHRcIixcInRzcGFuXCJdKSxPPS9bIVwiIyQlJicoKSorLC4vOjs8PT4/QFtcXFxcXFxdXmB7fH1+LV0rL2csRD0vKF4tfC0kKS9nO2Z1bmN0aW9uIFIoZSl7cmV0dXJuIGUucmVwbGFjZShPLFwiLVwiKS5yZXBsYWNlKEQsXCJcIil9dmFyIFQ9LyhhKShkKS9naSxrPTUyLGo9ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZSsoZT4yNT8zOTo5NykpfTtmdW5jdGlvbiB4KGUpe3ZhciB0LG49XCJcIjtmb3IodD1NYXRoLmFicyhlKTt0Pms7dD10L2t8MCluPWoodCVrKStuO3JldHVybihqKHQlaykrbikucmVwbGFjZShULFwiJDEtJDJcIil9dmFyIFYsRj01MzgxLE09ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dC5sZW5ndGg7bjspZT0zMyplXnQuY2hhckNvZGVBdCgtLW4pO3JldHVybiBlfSx6PWZ1bmN0aW9uKGUpe3JldHVybiBNKEYsZSl9O2Z1bmN0aW9uICQoZSl7cmV0dXJuIHgoeihlKT4+PjApfWZ1bmN0aW9uIEIoZSl7cmV0dXJuXCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmXCJzdHJpbmdcIj09dHlwZW9mIGUmJmV8fGUuZGlzcGxheU5hbWV8fGUubmFtZXx8XCJDb21wb25lbnRcIn1mdW5jdGlvbiBMKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiYoXCJwcm9kdWN0aW9uXCI9PT1wcm9jZXNzLmVudi5OT0RFX0VOVnx8ZS5jaGFyQXQoMCk9PT1lLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpKX12YXIgRz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3IsWT1HP1N5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpOjYwMTE1LFc9Rz9TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIik6NjAxMTIscT17Y2hpbGRDb250ZXh0VHlwZXM6ITAsY29udGV4dFR5cGU6ITAsY29udGV4dFR5cGVzOiEwLGRlZmF1bHRQcm9wczohMCxkaXNwbGF5TmFtZTohMCxnZXREZWZhdWx0UHJvcHM6ITAsZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yOiEwLGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczohMCxtaXhpbnM6ITAscHJvcFR5cGVzOiEwLHR5cGU6ITB9LEg9e25hbWU6ITAsbGVuZ3RoOiEwLHByb3RvdHlwZTohMCxjYWxsZXI6ITAsY2FsbGVlOiEwLGFyZ3VtZW50czohMCxhcml0eTohMH0sVT17JCR0eXBlb2Y6ITAsY29tcGFyZTohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6ITAscHJvcFR5cGVzOiEwLHR5cGU6ITB9LEo9KChWPXt9KVtXXT17JCR0eXBlb2Y6ITAscmVuZGVyOiEwLGRlZmF1bHRQcm9wczohMCxkaXNwbGF5TmFtZTohMCxwcm9wVHlwZXM6ITB9LFZbWV09VSxWKTtmdW5jdGlvbiBYKGUpe3JldHVybihcInR5cGVcImluKHQ9ZSkmJnQudHlwZS4kJHR5cGVvZik9PT1ZP1U6XCIkJHR5cGVvZlwiaW4gZT9KW2UuJCR0eXBlb2ZdOnE7dmFyIHR9dmFyIFo9T2JqZWN0LmRlZmluZVByb3BlcnR5LEs9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMsUT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLGVlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsdGU9T2JqZWN0LmdldFByb3RvdHlwZU9mLG5lPU9iamVjdC5wcm90b3R5cGU7ZnVuY3Rpb24gb2UoZSx0LG4pe2lmKFwic3RyaW5nXCIhPXR5cGVvZiB0KXtpZihuZSl7dmFyIG89dGUodCk7byYmbyE9PW5lJiZvZShlLG8sbil9dmFyIHI9Syh0KTtRJiYocj1yLmNvbmNhdChRKHQpKSk7Zm9yKHZhciBzPVgoZSksaT1YKHQpLGE9MDthPHIubGVuZ3RoOysrYSl7dmFyIGM9clthXTtpZighKGMgaW4gSHx8biYmbltjXXx8aSYmYyBpbiBpfHxzJiZjIGluIHMpKXt2YXIgbD1lZSh0LGMpO3RyeXtaKGUsYyxsKX1jYXRjaChlKXt9fX19cmV0dXJuIGV9ZnVuY3Rpb24gcmUoZSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZX1mdW5jdGlvbiBzZShlKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmXCJzdHlsZWRDb21wb25lbnRJZFwiaW4gZX1mdW5jdGlvbiBpZShlLHQpe3JldHVybiBlJiZ0P1wiXCIuY29uY2F0KGUsXCIgXCIpLmNvbmNhdCh0KTplfHx0fHxcIlwifWZ1bmN0aW9uIGFlKGUsdCl7aWYoMD09PWUubGVuZ3RoKXJldHVyblwiXCI7Zm9yKHZhciBuPWVbMF0sbz0xO288ZS5sZW5ndGg7bysrKW4rPXQ/dCtlW29dOmVbb107cmV0dXJuIG59ZnVuY3Rpb24gY2UoZSl7cmV0dXJuIG51bGwhPT1lJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmZS5jb25zdHJ1Y3Rvci5uYW1lPT09T2JqZWN0Lm5hbWUmJiEoXCJwcm9wc1wiaW4gZSYmZS4kJHR5cGVvZil9ZnVuY3Rpb24gbGUoZSx0LG4pe2lmKHZvaWQgMD09PW4mJihuPSExKSwhbiYmIWNlKGUpJiYhQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gdDtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKWVbb109bGUoZVtvXSx0W29dKTtlbHNlIGlmKGNlKHQpKWZvcih2YXIgbyBpbiB0KWVbb109bGUoZVtvXSx0W29dKTtyZXR1cm4gZX1mdW5jdGlvbiB1ZShlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwidG9TdHJpbmdcIix7dmFsdWU6dH0pfXZhciBwZT1cInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WP3sxOlwiQ2Fubm90IGNyZWF0ZSBzdHlsZWQtY29tcG9uZW50IGZvciBjb21wb25lbnQ6ICVzLlxcblxcblwiLDI6XCJDYW4ndCBjb2xsZWN0IHN0eWxlcyBvbmNlIHlvdSd2ZSBjb25zdW1lZCBhIGBTZXJ2ZXJTdHlsZVNoZWV0YCdzIHN0eWxlcyEgYFNlcnZlclN0eWxlU2hlZXRgIGlzIGEgb25lIG9mZiBpbnN0YW5jZSBmb3IgZWFjaCBzZXJ2ZXItc2lkZSByZW5kZXIgY3ljbGUuXFxuXFxuLSBBcmUgeW91IHRyeWluZyB0byByZXVzZSBpdCBhY3Jvc3MgcmVuZGVycz9cXG4tIEFyZSB5b3UgYWNjaWRlbnRhbGx5IGNhbGxpbmcgY29sbGVjdFN0eWxlcyB0d2ljZT9cXG5cXG5cIiwzOlwiU3RyZWFtaW5nIFNTUiBpcyBvbmx5IHN1cHBvcnRlZCBpbiBhIE5vZGUuanMgZW52aXJvbm1lbnQ7IFBsZWFzZSBkbyBub3QgdHJ5IHRvIGNhbGwgdGhpcyBtZXRob2QgaW4gdGhlIGJyb3dzZXIuXFxuXFxuXCIsNDpcIlRoZSBgU3R5bGVTaGVldE1hbmFnZXJgIGV4cGVjdHMgYSB2YWxpZCB0YXJnZXQgb3Igc2hlZXQgcHJvcCFcXG5cXG4tIERvZXMgdGhpcyBlcnJvciBvY2N1ciBvbiB0aGUgY2xpZW50IGFuZCBpcyB5b3VyIHRhcmdldCBmYWxzeT9cXG4tIERvZXMgdGhpcyBlcnJvciBvY2N1ciBvbiB0aGUgc2VydmVyIGFuZCBpcyB0aGUgc2hlZXQgZmFsc3k/XFxuXFxuXCIsNTpcIlRoZSBjbG9uZSBtZXRob2QgY2Fubm90IGJlIHVzZWQgb24gdGhlIGNsaWVudCFcXG5cXG4tIEFyZSB5b3UgcnVubmluZyBpbiBhIGNsaWVudC1saWtlIGVudmlyb25tZW50IG9uIHRoZSBzZXJ2ZXI/XFxuLSBBcmUgeW91IHRyeWluZyB0byBydW4gU1NSIG9uIHRoZSBjbGllbnQ/XFxuXFxuXCIsNjpcIlRyeWluZyB0byBpbnNlcnQgYSBuZXcgc3R5bGUgdGFnLCBidXQgdGhlIGdpdmVuIE5vZGUgaXMgdW5tb3VudGVkIVxcblxcbi0gQXJlIHlvdSB1c2luZyBhIGN1c3RvbSB0YXJnZXQgdGhhdCBpc24ndCBtb3VudGVkP1xcbi0gRG9lcyB5b3VyIGRvY3VtZW50IG5vdCBoYXZlIGEgdmFsaWQgaGVhZCBlbGVtZW50P1xcbi0gSGF2ZSB5b3UgYWNjaWRlbnRhbGx5IHJlbW92ZWQgYSBzdHlsZSB0YWcgbWFudWFsbHk/XFxuXFxuXCIsNzonVGhlbWVQcm92aWRlcjogUGxlYXNlIHJldHVybiBhbiBvYmplY3QgZnJvbSB5b3VyIFwidGhlbWVcIiBwcm9wIGZ1bmN0aW9uLCBlLmcuXFxuXFxuYGBganNcXG50aGVtZT17KCkgPT4gKHt9KX1cXG5gYGBcXG5cXG4nLDg6J1RoZW1lUHJvdmlkZXI6IFBsZWFzZSBtYWtlIHlvdXIgXCJ0aGVtZVwiIHByb3AgYW4gb2JqZWN0LlxcblxcbicsOTpcIk1pc3NpbmcgZG9jdW1lbnQgYDxoZWFkPmBcXG5cXG5cIiwxMDpcIkNhbm5vdCBmaW5kIGEgU3R5bGVTaGVldCBpbnN0YW5jZS4gVXN1YWxseSB0aGlzIGhhcHBlbnMgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGNvcGllcyBvZiBzdHlsZWQtY29tcG9uZW50cyBsb2FkZWQgYXQgb25jZS4gQ2hlY2sgb3V0IHRoaXMgaXNzdWUgZm9yIGhvdyB0byB0cm91Ymxlc2hvb3QgYW5kIGZpeCB0aGUgY29tbW9uIGNhc2VzIHdoZXJlIHRoaXMgc2l0dWF0aW9uIGNhbiBoYXBwZW46IGh0dHBzOi8vZ2l0aHViLmNvbS9zdHlsZWQtY29tcG9uZW50cy9zdHlsZWQtY29tcG9uZW50cy9pc3N1ZXMvMTk0MSNpc3N1ZWNvbW1lbnQtNDE3ODYyMDIxXFxuXFxuXCIsMTE6XCJfVGhpcyBlcnJvciB3YXMgcmVwbGFjZWQgd2l0aCBhIGRldi10aW1lIHdhcm5pbmcsIGl0IHdpbGwgYmUgZGVsZXRlZCBmb3IgdjQgZmluYWwuXyBbY3JlYXRlR2xvYmFsU3R5bGVdIHJlY2VpdmVkIGNoaWxkcmVuIHdoaWNoIHdpbGwgbm90IGJlIHJlbmRlcmVkLiBQbGVhc2UgdXNlIHRoZSBjb21wb25lbnQgd2l0aG91dCBwYXNzaW5nIGNoaWxkcmVuIGVsZW1lbnRzLlxcblxcblwiLDEyOlwiSXQgc2VlbXMgeW91IGFyZSBpbnRlcnBvbGF0aW5nIGEga2V5ZnJhbWUgZGVjbGFyYXRpb24gKCVzKSBpbnRvIGFuIHVudGFnZ2VkIHN0cmluZy4gVGhpcyB3YXMgc3VwcG9ydGVkIGluIHN0eWxlZC1jb21wb25lbnRzIHYzLCBidXQgaXMgbm90IGxvbmdlciBzdXBwb3J0ZWQgaW4gdjQgYXMga2V5ZnJhbWVzIGFyZSBub3cgaW5qZWN0ZWQgb24tZGVtYW5kLiBQbGVhc2Ugd3JhcCB5b3VyIHN0cmluZyBpbiB0aGUgY3NzXFxcXGBcXFxcYCBoZWxwZXIgd2hpY2ggZW5zdXJlcyB0aGUgc3R5bGVzIGFyZSBpbmplY3RlZCBjb3JyZWN0bHkuIFNlZSBodHRwczovL3d3dy5zdHlsZWQtY29tcG9uZW50cy5jb20vZG9jcy9hcGkjY3NzXFxuXFxuXCIsMTM6XCIlcyBpcyBub3QgYSBzdHlsZWQgY29tcG9uZW50IGFuZCBjYW5ub3QgYmUgcmVmZXJyZWQgdG8gdmlhIGNvbXBvbmVudCBzZWxlY3Rvci4gU2VlIGh0dHBzOi8vd3d3LnN0eWxlZC1jb21wb25lbnRzLmNvbS9kb2NzL2FkdmFuY2VkI3JlZmVycmluZy10by1vdGhlci1jb21wb25lbnRzIGZvciBtb3JlIGRldGFpbHMuXFxuXFxuXCIsMTQ6J1RoZW1lUHJvdmlkZXI6IFwidGhlbWVcIiBwcm9wIGlzIHJlcXVpcmVkLlxcblxcbicsMTU6XCJBIHN0eWxpcyBwbHVnaW4gaGFzIGJlZW4gc3VwcGxpZWQgdGhhdCBpcyBub3QgbmFtZWQuIFdlIG5lZWQgYSBuYW1lIGZvciBlYWNoIHBsdWdpbiB0byBiZSBhYmxlIHRvIHByZXZlbnQgc3R5bGluZyBjb2xsaXNpb25zIGJldHdlZW4gZGlmZmVyZW50IHN0eWxpcyBjb25maWd1cmF0aW9ucyB3aXRoaW4gdGhlIHNhbWUgYXBwLiBCZWZvcmUgeW91IHBhc3MgeW91ciBwbHVnaW4gdG8gYDxTdHlsZVNoZWV0TWFuYWdlciBzdHlsaXNQbHVnaW5zPXtbXX0+YCwgcGxlYXNlIG1ha2Ugc3VyZSBlYWNoIHBsdWdpbiBpcyB1bmlxdWVseS1uYW1lZCwgZS5nLlxcblxcbmBgYGpzXFxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGltcG9ydGVkUGx1Z2luLCAnbmFtZScsIHsgdmFsdWU6ICdzb21lLXVuaXF1ZS1uYW1lJyB9KTtcXG5gYGBcXG5cXG5cIiwxNjpcIlJlYWNoZWQgdGhlIGxpbWl0IG9mIGhvdyBtYW55IHN0eWxlZCBjb21wb25lbnRzIG1heSBiZSBjcmVhdGVkIGF0IGdyb3VwICVzLlxcbllvdSBtYXkgb25seSBjcmVhdGUgdXAgdG8gMSwwNzMsNzQxLDgyNCBjb21wb25lbnRzLiBJZiB5b3UncmUgY3JlYXRpbmcgY29tcG9uZW50cyBkeW5hbWljYWxseSxcXG5hcyBmb3IgaW5zdGFuY2UgaW4geW91ciByZW5kZXIgbWV0aG9kIHRoZW4geW91IG1heSBiZSBydW5uaW5nIGludG8gdGhpcyBsaW1pdGF0aW9uLlxcblxcblwiLDE3OlwiQ1NTU3R5bGVTaGVldCBjb3VsZCBub3QgYmUgZm91bmQgb24gSFRNTFN0eWxlRWxlbWVudC5cXG5IYXMgc3R5bGVkLWNvbXBvbmVudHMnIHN0eWxlIHRhZyBiZWVuIHVubW91bnRlZCBvciBhbHRlcmVkIGJ5IGFub3RoZXIgc2NyaXB0P1xcblwiLDE4OlwiVGhlbWVQcm92aWRlcjogUGxlYXNlIG1ha2Ugc3VyZSB5b3VyIHVzZVRoZW1lIGhvb2sgaXMgd2l0aGluIGEgYDxUaGVtZVByb3ZpZGVyPmBcIn06e307ZnVuY3Rpb24gZGUoKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZVt0XT1hcmd1bWVudHNbdF07Zm9yKHZhciBuPWVbMF0sbz1bXSxyPTEscz1lLmxlbmd0aDtyPHM7cis9MSlvLnB1c2goZVtyXSk7cmV0dXJuIG8uZm9yRWFjaChmdW5jdGlvbihlKXtuPW4ucmVwbGFjZSgvJVthLXpdLyxlKX0pLG59ZnVuY3Rpb24gaGUodCl7Zm9yKHZhciBuPVtdLG89MTtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKW5bby0xXT1hcmd1bWVudHNbb107cmV0dXJuXCJwcm9kdWN0aW9uXCI9PT1wcm9jZXNzLmVudi5OT0RFX0VOVj9uZXcgRXJyb3IoXCJBbiBlcnJvciBvY2N1cnJlZC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zdHlsZWQtY29tcG9uZW50cy9zdHlsZWQtY29tcG9uZW50cy9ibG9iL21haW4vcGFja2FnZXMvc3R5bGVkLWNvbXBvbmVudHMvc3JjL3V0aWxzL2Vycm9ycy5tZCNcIi5jb25jYXQodCxcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIikuY29uY2F0KG4ubGVuZ3RoPjA/XCIgQXJnczogXCIuY29uY2F0KG4uam9pbihcIiwgXCIpKTpcIlwiKSk6bmV3IEVycm9yKGRlLmFwcGx5KHZvaWQgMCxlKFtwZVt0XV0sbiwhMSkpLnRyaW0oKSl9dmFyIGZlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLmdyb3VwU2l6ZXM9bmV3IFVpbnQzMkFycmF5KDUxMiksdGhpcy5sZW5ndGg9NTEyLHRoaXMudGFnPWV9cmV0dXJuIGUucHJvdG90eXBlLmluZGV4T2ZHcm91cD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxuPTA7bjxlO24rKyl0Kz10aGlzLmdyb3VwU2l6ZXNbbl07cmV0dXJuIHR9LGUucHJvdG90eXBlLmluc2VydFJ1bGVzPWZ1bmN0aW9uKGUsdCl7aWYoZT49dGhpcy5ncm91cFNpemVzLmxlbmd0aCl7Zm9yKHZhciBuPXRoaXMuZ3JvdXBTaXplcyxvPW4ubGVuZ3RoLHI9bztlPj1yOylpZigocjw8PTEpPDApdGhyb3cgaGUoMTYsXCJcIi5jb25jYXQoZSkpO3RoaXMuZ3JvdXBTaXplcz1uZXcgVWludDMyQXJyYXkociksdGhpcy5ncm91cFNpemVzLnNldChuKSx0aGlzLmxlbmd0aD1yO2Zvcih2YXIgcz1vO3M8cjtzKyspdGhpcy5ncm91cFNpemVzW3NdPTB9Zm9yKHZhciBpPXRoaXMuaW5kZXhPZkdyb3VwKGUrMSksYT0ocz0wLHQubGVuZ3RoKTtzPGE7cysrKXRoaXMudGFnLmluc2VydFJ1bGUoaSx0W3NdKSYmKHRoaXMuZ3JvdXBTaXplc1tlXSsrLGkrKyl9LGUucHJvdG90eXBlLmNsZWFyR3JvdXA9ZnVuY3Rpb24oZSl7aWYoZTx0aGlzLmxlbmd0aCl7dmFyIHQ9dGhpcy5ncm91cFNpemVzW2VdLG49dGhpcy5pbmRleE9mR3JvdXAoZSksbz1uK3Q7dGhpcy5ncm91cFNpemVzW2VdPTA7Zm9yKHZhciByPW47cjxvO3IrKyl0aGlzLnRhZy5kZWxldGVSdWxlKG4pfX0sZS5wcm90b3R5cGUuZ2V0R3JvdXA9ZnVuY3Rpb24oZSl7dmFyIHQ9XCJcIjtpZihlPj10aGlzLmxlbmd0aHx8MD09PXRoaXMuZ3JvdXBTaXplc1tlXSlyZXR1cm4gdDtmb3IodmFyIG49dGhpcy5ncm91cFNpemVzW2VdLG89dGhpcy5pbmRleE9mR3JvdXAoZSkscj1vK24scz1vO3M8cjtzKyspdCs9XCJcIi5jb25jYXQodGhpcy50YWcuZ2V0UnVsZShzKSkuY29uY2F0KGcpO3JldHVybiB0fSxlfSgpLG1lPTE8PDMwLHllPW5ldyBNYXAsdmU9bmV3IE1hcCxnZT0xLFNlPWZ1bmN0aW9uKGUpe2lmKHllLmhhcyhlKSlyZXR1cm4geWUuZ2V0KGUpO2Zvcig7dmUuaGFzKGdlKTspZ2UrKzt2YXIgdD1nZSsrO2lmKFwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJigoMHx0KTwwfHx0Pm1lKSl0aHJvdyBoZSgxNixcIlwiLmNvbmNhdCh0KSk7cmV0dXJuIHllLnNldChlLHQpLHZlLnNldCh0LGUpLHR9LHdlPWZ1bmN0aW9uKGUsdCl7Z2U9dCsxLHllLnNldChlLHQpLHZlLnNldCh0LGUpfSxiZT1cInN0eWxlW1wiLmNvbmNhdChmLFwiXVtcIikuY29uY2F0KHksJz1cIicpLmNvbmNhdCh2LCdcIl0nKSxFZT1uZXcgUmVnRXhwKFwiXlwiLmNvbmNhdChmLCdcXFxcLmcoXFxcXGQrKVxcXFxbaWQ9XCIoW1xcXFx3XFxcXGQtXSspXCJcXFxcXS4qP1wiKFteXCJdKiknKSksTmU9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgbyxyPW4uc3BsaXQoXCIsXCIpLHM9MCxpPXIubGVuZ3RoO3M8aTtzKyspKG89cltzXSkmJmUucmVnaXN0ZXJOYW1lKHQsbyl9LFBlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuLG89KG51bGwhPT0obj10LnRleHRDb250ZW50KSYmdm9pZCAwIT09bj9uOlwiXCIpLnNwbGl0KGcpLHI9W10scz0wLGk9by5sZW5ndGg7czxpO3MrKyl7dmFyIGE9b1tzXS50cmltKCk7aWYoYSl7dmFyIGM9YS5tYXRjaChFZSk7aWYoYyl7dmFyIGw9MHxwYXJzZUludChjWzFdLDEwKSx1PWNbMl07MCE9PWwmJih3ZSh1LGwpLE5lKGUsdSxjWzNdKSxlLmdldFRhZygpLmluc2VydFJ1bGVzKGwscikpLHIubGVuZ3RoPTB9ZWxzZSByLnB1c2goYSl9fX0sX2U9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYmUpLG49MCxvPXQubGVuZ3RoO248bztuKyspe3ZhciByPXRbbl07ciYmci5nZXRBdHRyaWJ1dGUoZikhPT1tJiYoUGUoZSxyKSxyLnBhcmVudE5vZGUmJnIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChyKSl9fTtmdW5jdGlvbiBDZSgpe3JldHVyblwidW5kZWZpbmVkXCIhPXR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXz9fX3dlYnBhY2tfbm9uY2VfXzpudWxsfXZhciBJZT1mdW5jdGlvbihlKXt2YXIgdD1kb2N1bWVudC5oZWFkLG49ZXx8dCxvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKSxyPWZ1bmN0aW9uKGUpe3ZhciB0PUFycmF5LmZyb20oZS5xdWVyeVNlbGVjdG9yQWxsKFwic3R5bGVbXCIuY29uY2F0KGYsXCJdXCIpKSk7cmV0dXJuIHRbdC5sZW5ndGgtMV19KG4pLHM9dm9pZCAwIT09cj9yLm5leHRTaWJsaW5nOm51bGw7by5zZXRBdHRyaWJ1dGUoZixtKSxvLnNldEF0dHJpYnV0ZSh5LHYpO3ZhciBpPUNlKCk7cmV0dXJuIGkmJm8uc2V0QXR0cmlidXRlKFwibm9uY2VcIixpKSxuLmluc2VydEJlZm9yZShvLHMpLG99LEFlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLmVsZW1lbnQ9SWUoZSksdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiXCIpKSx0aGlzLnNoZWV0PWZ1bmN0aW9uKGUpe2lmKGUuc2hlZXQpcmV0dXJuIGUuc2hlZXQ7Zm9yKHZhciB0PWRvY3VtZW50LnN0eWxlU2hlZXRzLG49MCxvPXQubGVuZ3RoO248bztuKyspe3ZhciByPXRbbl07aWYoci5vd25lck5vZGU9PT1lKXJldHVybiByfXRocm93IGhlKDE3KX0odGhpcy5lbGVtZW50KSx0aGlzLmxlbmd0aD0wfXJldHVybiBlLnByb3RvdHlwZS5pbnNlcnRSdWxlPWZ1bmN0aW9uKGUsdCl7dHJ5e3JldHVybiB0aGlzLnNoZWV0Lmluc2VydFJ1bGUodCxlKSx0aGlzLmxlbmd0aCsrLCEwfWNhdGNoKGUpe3JldHVybiExfX0sZS5wcm90b3R5cGUuZGVsZXRlUnVsZT1mdW5jdGlvbihlKXt0aGlzLnNoZWV0LmRlbGV0ZVJ1bGUoZSksdGhpcy5sZW5ndGgtLX0sZS5wcm90b3R5cGUuZ2V0UnVsZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnNoZWV0LmNzc1J1bGVzW2VdO3JldHVybiB0JiZ0LmNzc1RleHQ/dC5jc3NUZXh0OlwiXCJ9LGV9KCksT2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuZWxlbWVudD1JZShlKSx0aGlzLm5vZGVzPXRoaXMuZWxlbWVudC5jaGlsZE5vZGVzLHRoaXMubGVuZ3RoPTB9cmV0dXJuIGUucHJvdG90eXBlLmluc2VydFJ1bGU9ZnVuY3Rpb24oZSx0KXtpZihlPD10aGlzLmxlbmd0aCYmZT49MCl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodCk7cmV0dXJuIHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUobix0aGlzLm5vZGVzW2VdfHxudWxsKSx0aGlzLmxlbmd0aCsrLCEwfXJldHVybiExfSxlLnByb3RvdHlwZS5kZWxldGVSdWxlPWZ1bmN0aW9uKGUpe3RoaXMuZWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLm5vZGVzW2VdKSx0aGlzLmxlbmd0aC0tfSxlLnByb3RvdHlwZS5nZXRSdWxlPWZ1bmN0aW9uKGUpe3JldHVybiBlPHRoaXMubGVuZ3RoP3RoaXMubm9kZXNbZV0udGV4dENvbnRlbnQ6XCJcIn0sZX0oKSxEZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5ydWxlcz1bXSx0aGlzLmxlbmd0aD0wfXJldHVybiBlLnByb3RvdHlwZS5pbnNlcnRSdWxlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU8PXRoaXMubGVuZ3RoJiYodGhpcy5ydWxlcy5zcGxpY2UoZSwwLHQpLHRoaXMubGVuZ3RoKyssITApfSxlLnByb3RvdHlwZS5kZWxldGVSdWxlPWZ1bmN0aW9uKGUpe3RoaXMucnVsZXMuc3BsaWNlKGUsMSksdGhpcy5sZW5ndGgtLX0sZS5wcm90b3R5cGUuZ2V0UnVsZT1mdW5jdGlvbihlKXtyZXR1cm4gZTx0aGlzLmxlbmd0aD90aGlzLnJ1bGVzW2VdOlwiXCJ9LGV9KCksUmU9UyxUZT17aXNTZXJ2ZXI6IVMsdXNlQ1NTT01JbmplY3Rpb246IXd9LGtlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLG4sbyl7dm9pZCAwPT09ZSYmKGU9Qyksdm9pZCAwPT09biYmKG49e30pO3ZhciByPXRoaXM7dGhpcy5vcHRpb25zPXQodCh7fSxUZSksZSksdGhpcy5ncz1uLHRoaXMubmFtZXM9bmV3IE1hcChvKSx0aGlzLnNlcnZlcj0hIWUuaXNTZXJ2ZXIsIXRoaXMuc2VydmVyJiZTJiZSZSYmKFJlPSExLF9lKHRoaXMpKSx1ZSh0aGlzLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmdldFRhZygpLG49dC5sZW5ndGgsbz1cIlwiLHI9ZnVuY3Rpb24obil7dmFyIHI9ZnVuY3Rpb24oZSl7cmV0dXJuIHZlLmdldChlKX0obik7aWYodm9pZCAwPT09cilyZXR1cm5cImNvbnRpbnVlXCI7dmFyIHM9ZS5uYW1lcy5nZXQociksaT10LmdldEdyb3VwKG4pO2lmKHZvaWQgMD09PXN8fCFzLnNpemV8fDA9PT1pLmxlbmd0aClyZXR1cm5cImNvbnRpbnVlXCI7dmFyIGE9XCJcIi5jb25jYXQoZixcIi5nXCIpLmNvbmNhdChuLCdbaWQ9XCInKS5jb25jYXQociwnXCJdJyksYz1cIlwiO3ZvaWQgMCE9PXMmJnMuZm9yRWFjaChmdW5jdGlvbihlKXtlLmxlbmd0aD4wJiYoYys9XCJcIi5jb25jYXQoZSxcIixcIikpfSksbys9XCJcIi5jb25jYXQoaSkuY29uY2F0KGEsJ3tjb250ZW50OlwiJykuY29uY2F0KGMsJ1wifScpLmNvbmNhdChnKX0scz0wO3M8bjtzKyspcihzKTtyZXR1cm4gb30ocil9KX1yZXR1cm4gZS5yZWdpc3RlcklkPWZ1bmN0aW9uKGUpe3JldHVybiBTZShlKX0sZS5wcm90b3R5cGUucmVoeWRyYXRlPWZ1bmN0aW9uKCl7IXRoaXMuc2VydmVyJiZTJiZfZSh0aGlzKX0sZS5wcm90b3R5cGUucmVjb25zdHJ1Y3RXaXRoT3B0aW9ucz1mdW5jdGlvbihuLG8pe3JldHVybiB2b2lkIDA9PT1vJiYobz0hMCksbmV3IGUodCh0KHt9LHRoaXMub3B0aW9ucyksbiksdGhpcy5ncyxvJiZ0aGlzLm5hbWVzfHx2b2lkIDApfSxlLnByb3RvdHlwZS5hbGxvY2F0ZUdTSW5zdGFuY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZ3NbZV09KHRoaXMuZ3NbZV18fDApKzF9LGUucHJvdG90eXBlLmdldFRhZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRhZ3x8KHRoaXMudGFnPShlPWZ1bmN0aW9uKGUpe3ZhciB0PWUudXNlQ1NTT01JbmplY3Rpb24sbj1lLnRhcmdldDtyZXR1cm4gZS5pc1NlcnZlcj9uZXcgRGUobik6dD9uZXcgQWUobik6bmV3IE9lKG4pfSh0aGlzLm9wdGlvbnMpLG5ldyBmZShlKSkpO3ZhciBlfSxlLnByb3RvdHlwZS5oYXNOYW1lRm9ySWQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5uYW1lcy5oYXMoZSkmJnRoaXMubmFtZXMuZ2V0KGUpLmhhcyh0KX0sZS5wcm90b3R5cGUucmVnaXN0ZXJOYW1lPWZ1bmN0aW9uKGUsdCl7aWYoU2UoZSksdGhpcy5uYW1lcy5oYXMoZSkpdGhpcy5uYW1lcy5nZXQoZSkuYWRkKHQpO2Vsc2V7dmFyIG49bmV3IFNldDtuLmFkZCh0KSx0aGlzLm5hbWVzLnNldChlLG4pfX0sZS5wcm90b3R5cGUuaW5zZXJ0UnVsZXM9ZnVuY3Rpb24oZSx0LG4pe3RoaXMucmVnaXN0ZXJOYW1lKGUsdCksdGhpcy5nZXRUYWcoKS5pbnNlcnRSdWxlcyhTZShlKSxuKX0sZS5wcm90b3R5cGUuY2xlYXJOYW1lcz1mdW5jdGlvbihlKXt0aGlzLm5hbWVzLmhhcyhlKSYmdGhpcy5uYW1lcy5nZXQoZSkuY2xlYXIoKX0sZS5wcm90b3R5cGUuY2xlYXJSdWxlcz1mdW5jdGlvbihlKXt0aGlzLmdldFRhZygpLmNsZWFyR3JvdXAoU2UoZSkpLHRoaXMuY2xlYXJOYW1lcyhlKX0sZS5wcm90b3R5cGUuY2xlYXJUYWc9ZnVuY3Rpb24oKXt0aGlzLnRhZz12b2lkIDB9LGV9KCksamU9LyYvZyx4ZT0vXlxccypcXC9cXC8uKiQvZ207ZnVuY3Rpb24gVmUoZSx0KXtyZXR1cm4gZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuXCJydWxlXCI9PT1lLnR5cGUmJihlLnZhbHVlPVwiXCIuY29uY2F0KHQsXCIgXCIpLmNvbmNhdChlLnZhbHVlKSxlLnZhbHVlPWUudmFsdWUucmVwbGFjZUFsbChcIixcIixcIixcIi5jb25jYXQodCxcIiBcIikpLGUucHJvcHM9ZS5wcm9wcy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuXCJcIi5jb25jYXQodCxcIiBcIikuY29uY2F0KGUpfSkpLEFycmF5LmlzQXJyYXkoZS5jaGlsZHJlbikmJlwiQGtleWZyYW1lc1wiIT09ZS50eXBlJiYoZS5jaGlsZHJlbj1WZShlLmNoaWxkcmVuLHQpKSxlfSl9ZnVuY3Rpb24gRmUoZSl7dmFyIHQsbixvLHI9dm9pZCAwPT09ZT9DOmUscz1yLm9wdGlvbnMsaT12b2lkIDA9PT1zP0M6cyxhPXIucGx1Z2lucyxjPXZvaWQgMD09PWE/XzphLGw9ZnVuY3Rpb24oZSxvLHIpe3JldHVybiByLnN0YXJ0c1dpdGgobikmJnIuZW5kc1dpdGgobikmJnIucmVwbGFjZUFsbChuLFwiXCIpLmxlbmd0aD4wP1wiLlwiLmNvbmNhdCh0KTplfSx1PWMuc2xpY2UoKTt1LnB1c2goZnVuY3Rpb24oZSl7ZS50eXBlPT09ZC5SVUxFU0VUJiZlLnZhbHVlLmluY2x1ZGVzKFwiJlwiKSYmKGUucHJvcHNbMF09ZS5wcm9wc1swXS5yZXBsYWNlKGplLG4pLnJlcGxhY2UobyxsKSl9KSxpLnByZWZpeCYmdS5wdXNoKGQucHJlZml4ZXIpLHUucHVzaChkLnN0cmluZ2lmeSk7dmFyIHA9ZnVuY3Rpb24oZSxyLHMsYSl7dm9pZCAwPT09ciYmKHI9XCJcIiksdm9pZCAwPT09cyYmKHM9XCJcIiksdm9pZCAwPT09YSYmKGE9XCImXCIpLHQ9YSxuPXIsbz1uZXcgUmVnRXhwKFwiXFxcXFwiLmNvbmNhdChuLFwiXFxcXGJcIiksXCJnXCIpO3ZhciBjPWUucmVwbGFjZSh4ZSxcIlwiKSxsPWQuY29tcGlsZShzfHxyP1wiXCIuY29uY2F0KHMsXCIgXCIpLmNvbmNhdChyLFwiIHsgXCIpLmNvbmNhdChjLFwiIH1cIik6Yyk7aS5uYW1lc3BhY2UmJihsPVZlKGwsaS5uYW1lc3BhY2UpKTt2YXIgcD1bXTtyZXR1cm4gZC5zZXJpYWxpemUobCxkLm1pZGRsZXdhcmUodS5jb25jYXQoZC5ydWxlc2hlZXQoZnVuY3Rpb24oZSl7cmV0dXJuIHAucHVzaChlKX0pKSkpLHB9O3JldHVybiBwLmhhc2g9Yy5sZW5ndGg/Yy5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5uYW1lfHxoZSgxNSksTShlLHQubmFtZSl9LEYpLnRvU3RyaW5nKCk6XCJcIixwfXZhciBNZT1uZXcga2UsemU9RmUoKSwkZT1vLmNyZWF0ZUNvbnRleHQoe3Nob3VsZEZvcndhcmRQcm9wOnZvaWQgMCxzdHlsZVNoZWV0Ok1lLHN0eWxpczp6ZX0pLEJlPSRlLkNvbnN1bWVyLExlPW8uY3JlYXRlQ29udGV4dCh2b2lkIDApO2Z1bmN0aW9uIEdlKCl7cmV0dXJuIGMoJGUpfWZ1bmN0aW9uIFllKGUpe3ZhciB0PXMoZS5zdHlsaXNQbHVnaW5zKSxuPXRbMF0scj10WzFdLGM9R2UoKS5zdHlsZVNoZWV0LGw9aShmdW5jdGlvbigpe3ZhciB0PWM7cmV0dXJuIGUuc2hlZXQ/dD1lLnNoZWV0OmUudGFyZ2V0JiYodD10LnJlY29uc3RydWN0V2l0aE9wdGlvbnMoe3RhcmdldDplLnRhcmdldH0sITEpKSxlLmRpc2FibGVDU1NPTUluamVjdGlvbiYmKHQ9dC5yZWNvbnN0cnVjdFdpdGhPcHRpb25zKHt1c2VDU1NPTUluamVjdGlvbjohMX0pKSx0fSxbZS5kaXNhYmxlQ1NTT01JbmplY3Rpb24sZS5zaGVldCxlLnRhcmdldCxjXSksdT1pKGZ1bmN0aW9uKCl7cmV0dXJuIEZlKHtvcHRpb25zOntuYW1lc3BhY2U6ZS5uYW1lc3BhY2UscHJlZml4OmUuZW5hYmxlVmVuZG9yUHJlZml4ZXN9LHBsdWdpbnM6bn0pfSxbZS5lbmFibGVWZW5kb3JQcmVmaXhlcyxlLm5hbWVzcGFjZSxuXSk7YShmdW5jdGlvbigpe3AobixlLnN0eWxpc1BsdWdpbnMpfHxyKGUuc3R5bGlzUGx1Z2lucyl9LFtlLnN0eWxpc1BsdWdpbnNdKTt2YXIgZD1pKGZ1bmN0aW9uKCl7cmV0dXJue3Nob3VsZEZvcndhcmRQcm9wOmUuc2hvdWxkRm9yd2FyZFByb3Asc3R5bGVTaGVldDpsLHN0eWxpczp1fX0sW2Uuc2hvdWxkRm9yd2FyZFByb3AsbCx1XSk7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgkZS5Qcm92aWRlcix7dmFsdWU6ZH0sby5jcmVhdGVFbGVtZW50KExlLlByb3ZpZGVyLHt2YWx1ZTp1fSxlLmNoaWxkcmVuKSl9dmFyIFdlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3ZhciBuPXRoaXM7dGhpcy5pbmplY3Q9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD16ZSk7dmFyIG89bi5uYW1lK3QuaGFzaDtlLmhhc05hbWVGb3JJZChuLmlkLG8pfHxlLmluc2VydFJ1bGVzKG4uaWQsbyx0KG4ucnVsZXMsbyxcIkBrZXlmcmFtZXNcIikpfSx0aGlzLm5hbWU9ZSx0aGlzLmlkPVwic2Mta2V5ZnJhbWVzLVwiLmNvbmNhdChlKSx0aGlzLnJ1bGVzPXQsdWUodGhpcyxmdW5jdGlvbigpe3Rocm93IGhlKDEyLFN0cmluZyhuLm5hbWUpKX0pfXJldHVybiBlLnByb3RvdHlwZS5nZXROYW1lPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT16ZSksdGhpcy5uYW1lK2UuaGFzaH0sZX0oKSxxZT1mdW5jdGlvbihlKXtyZXR1cm4gZT49XCJBXCImJmU8PVwiWlwifTtmdW5jdGlvbiBIZShlKXtmb3IodmFyIHQ9XCJcIixuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciBvPWVbbl07aWYoMT09PW4mJlwiLVwiPT09byYmXCItXCI9PT1lWzBdKXJldHVybiBlO3FlKG8pP3QrPVwiLVwiK28udG9Mb3dlckNhc2UoKTp0Kz1vfXJldHVybiB0LnN0YXJ0c1dpdGgoXCJtcy1cIik/XCItXCIrdDp0fXZhciBVZT1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZXx8ITE9PT1lfHxcIlwiPT09ZX0sSmU9ZnVuY3Rpb24odCl7dmFyIG4sbyxyPVtdO2Zvcih2YXIgcyBpbiB0KXt2YXIgaT10W3NdO3QuaGFzT3duUHJvcGVydHkocykmJiFVZShpKSYmKEFycmF5LmlzQXJyYXkoaSkmJmkuaXNDc3N8fHJlKGkpP3IucHVzaChcIlwiLmNvbmNhdChIZShzKSxcIjpcIiksaSxcIjtcIik6Y2UoaSk/ci5wdXNoLmFwcGx5KHIsZShlKFtcIlwiLmNvbmNhdChzLFwiIHtcIildLEplKGkpLCExKSxbXCJ9XCJdLCExKSk6ci5wdXNoKFwiXCIuY29uY2F0KEhlKHMpLFwiOiBcIikuY29uY2F0KChuPXMsbnVsbD09KG89aSl8fFwiYm9vbGVhblwiPT10eXBlb2Ygb3x8XCJcIj09PW8/XCJcIjpcIm51bWJlclwiIT10eXBlb2Ygb3x8MD09PW98fG4gaW4gaHx8bi5zdGFydHNXaXRoKFwiLS1cIik/U3RyaW5nKG8pLnRyaW0oKTpcIlwiLmNvbmNhdChvLFwicHhcIikpLFwiO1wiKSkpfXJldHVybiByfTtmdW5jdGlvbiBYZShlLHQsbixvKXtpZihVZShlKSlyZXR1cm5bXTtpZihzZShlKSlyZXR1cm5bXCIuXCIuY29uY2F0KGUuc3R5bGVkQ29tcG9uZW50SWQpXTtpZihyZShlKSl7aWYoIXJlKHM9ZSl8fHMucHJvdG90eXBlJiZzLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50fHwhdClyZXR1cm5bZV07dmFyIHI9ZSh0KTtyZXR1cm5cInByb2R1Y3Rpb25cIj09PXByb2Nlc3MuZW52Lk5PREVfRU5WfHxcIm9iamVjdFwiIT10eXBlb2Ygcnx8QXJyYXkuaXNBcnJheShyKXx8ciBpbnN0YW5jZW9mIFdlfHxjZShyKXx8bnVsbD09PXJ8fGNvbnNvbGUuZXJyb3IoXCJcIi5jb25jYXQoQihlKSxcIiBpcyBub3QgYSBzdHlsZWQgY29tcG9uZW50IGFuZCBjYW5ub3QgYmUgcmVmZXJyZWQgdG8gdmlhIGNvbXBvbmVudCBzZWxlY3Rvci4gU2VlIGh0dHBzOi8vd3d3LnN0eWxlZC1jb21wb25lbnRzLmNvbS9kb2NzL2FkdmFuY2VkI3JlZmVycmluZy10by1vdGhlci1jb21wb25lbnRzIGZvciBtb3JlIGRldGFpbHMuXCIpKSxYZShyLHQsbixvKX12YXIgcztyZXR1cm4gZSBpbnN0YW5jZW9mIFdlP24/KGUuaW5qZWN0KG4sbyksW2UuZ2V0TmFtZShvKV0pOltlXTpjZShlKT9KZShlKTpBcnJheS5pc0FycmF5KGUpP0FycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoXyxlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gWGUoZSx0LG4sbyl9KSk6W2UudG9TdHJpbmcoKV19ZnVuY3Rpb24gWmUoZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0Kz0xKXt2YXIgbj1lW3RdO2lmKHJlKG4pJiYhc2UobikpcmV0dXJuITF9cmV0dXJuITB9dmFyIEtlPXoodiksUWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuKXt0aGlzLnJ1bGVzPWUsdGhpcy5zdGF0aWNSdWxlc0lkPVwiXCIsdGhpcy5pc1N0YXRpYz1cInByb2R1Y3Rpb25cIj09PXByb2Nlc3MuZW52Lk5PREVfRU5WJiYodm9pZCAwPT09bnx8bi5pc1N0YXRpYykmJlplKGUpLHRoaXMuY29tcG9uZW50SWQ9dCx0aGlzLmJhc2VIYXNoPU0oS2UsdCksdGhpcy5iYXNlU3R5bGU9bixrZS5yZWdpc3RlcklkKHQpfXJldHVybiBlLnByb3RvdHlwZS5nZW5lcmF0ZUFuZEluamVjdFN0eWxlcz1mdW5jdGlvbihlLHQsbil7dmFyIG89dGhpcy5iYXNlU3R5bGU/dGhpcy5iYXNlU3R5bGUuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXMoZSx0LG4pOlwiXCI7aWYodGhpcy5pc1N0YXRpYyYmIW4uaGFzaClpZih0aGlzLnN0YXRpY1J1bGVzSWQmJnQuaGFzTmFtZUZvcklkKHRoaXMuY29tcG9uZW50SWQsdGhpcy5zdGF0aWNSdWxlc0lkKSlvPWllKG8sdGhpcy5zdGF0aWNSdWxlc0lkKTtlbHNle3ZhciByPWFlKFhlKHRoaXMucnVsZXMsZSx0LG4pKSxzPXgoTSh0aGlzLmJhc2VIYXNoLHIpPj4+MCk7aWYoIXQuaGFzTmFtZUZvcklkKHRoaXMuY29tcG9uZW50SWQscykpe3ZhciBpPW4ocixcIi5cIi5jb25jYXQocyksdm9pZCAwLHRoaXMuY29tcG9uZW50SWQpO3QuaW5zZXJ0UnVsZXModGhpcy5jb21wb25lbnRJZCxzLGkpfW89aWUobyxzKSx0aGlzLnN0YXRpY1J1bGVzSWQ9c31lbHNle2Zvcih2YXIgYT1NKHRoaXMuYmFzZUhhc2gsbi5oYXNoKSxjPVwiXCIsbD0wO2w8dGhpcy5ydWxlcy5sZW5ndGg7bCsrKXt2YXIgdT10aGlzLnJ1bGVzW2xdO2lmKFwic3RyaW5nXCI9PXR5cGVvZiB1KWMrPXUsXCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmKGE9TShhLHUpKTtlbHNlIGlmKHUpe3ZhciBwPWFlKFhlKHUsZSx0LG4pKTthPU0oYSxwK2wpLGMrPXB9fWlmKGMpe3ZhciBkPXgoYT4+PjApO3QuaGFzTmFtZUZvcklkKHRoaXMuY29tcG9uZW50SWQsZCl8fHQuaW5zZXJ0UnVsZXModGhpcy5jb21wb25lbnRJZCxkLG4oYyxcIi5cIi5jb25jYXQoZCksdm9pZCAwLHRoaXMuY29tcG9uZW50SWQpKSxvPWllKG8sZCl9fXJldHVybiBvfSxlfSgpLGV0PW8uY3JlYXRlQ29udGV4dCh2b2lkIDApLHR0PWV0LkNvbnN1bWVyO2Z1bmN0aW9uIG50KCl7dmFyIGU9YyhldCk7aWYoIWUpdGhyb3cgaGUoMTgpO3JldHVybiBlfWZ1bmN0aW9uIG90KGUpe3ZhciBuPW8udXNlQ29udGV4dChldCkscj1pKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7aWYoIWUpdGhyb3cgaGUoMTQpO2lmKHJlKGUpKXt2YXIgbz1lKG4pO2lmKFwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJihudWxsPT09b3x8QXJyYXkuaXNBcnJheShvKXx8XCJvYmplY3RcIiE9dHlwZW9mIG8pKXRocm93IGhlKDcpO3JldHVybiBvfWlmKEFycmF5LmlzQXJyYXkoZSl8fFwib2JqZWN0XCIhPXR5cGVvZiBlKXRocm93IGhlKDgpO3JldHVybiBuP3QodCh7fSxuKSxlKTplfShlLnRoZW1lLG4pfSxbZS50aGVtZSxuXSk7cmV0dXJuIGUuY2hpbGRyZW4/by5jcmVhdGVFbGVtZW50KGV0LlByb3ZpZGVyLHt2YWx1ZTpyfSxlLmNoaWxkcmVuKTpudWxsfXZhciBydD17fSxzdD1uZXcgU2V0O2Z1bmN0aW9uIGl0KGUscixzKXt2YXIgaT1zZShlKSxhPWUsYz0hTChlKSxwPXIuYXR0cnMsZD12b2lkIDA9PT1wP186cCxoPXIuY29tcG9uZW50SWQsZj12b2lkIDA9PT1oP2Z1bmN0aW9uKGUsdCl7dmFyIG49XCJzdHJpbmdcIiE9dHlwZW9mIGU/XCJzY1wiOlIoZSk7cnRbbl09KHJ0W25dfHwwKSsxO3ZhciBvPVwiXCIuY29uY2F0KG4sXCItXCIpLmNvbmNhdCgkKHYrbitydFtuXSkpO3JldHVybiB0P1wiXCIuY29uY2F0KHQsXCItXCIpLmNvbmNhdChvKTpvfShyLmRpc3BsYXlOYW1lLHIucGFyZW50Q29tcG9uZW50SWQpOmgsbT1yLmRpc3BsYXlOYW1lLHk9dm9pZCAwPT09bT9mdW5jdGlvbihlKXtyZXR1cm4gTChlKT9cInN0eWxlZC5cIi5jb25jYXQoZSk6XCJTdHlsZWQoXCIuY29uY2F0KEIoZSksXCIpXCIpfShlKTptLGc9ci5kaXNwbGF5TmFtZSYmci5jb21wb25lbnRJZD9cIlwiLmNvbmNhdChSKHIuZGlzcGxheU5hbWUpLFwiLVwiKS5jb25jYXQoci5jb21wb25lbnRJZCk6ci5jb21wb25lbnRJZHx8ZixTPWkmJmEuYXR0cnM/YS5hdHRycy5jb25jYXQoZCkuZmlsdGVyKEJvb2xlYW4pOmQsdz1yLnNob3VsZEZvcndhcmRQcm9wO2lmKGkmJmEuc2hvdWxkRm9yd2FyZFByb3Ape3ZhciBiPWEuc2hvdWxkRm9yd2FyZFByb3A7aWYoci5zaG91bGRGb3J3YXJkUHJvcCl7dmFyIEU9ci5zaG91bGRGb3J3YXJkUHJvcDt3PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGIoZSx0KSYmRShlLHQpfX1lbHNlIHc9Yn12YXIgTj1uZXcgUWUocyxnLGk/YS5jb21wb25lbnRTdHlsZTp2b2lkIDApO2Z1bmN0aW9uIE8oZSxyKXtyZXR1cm4gZnVuY3Rpb24oZSxyLHMpe3ZhciBpPWUuYXR0cnMsYT1lLmNvbXBvbmVudFN0eWxlLGM9ZS5kZWZhdWx0UHJvcHMscD1lLmZvbGRlZENvbXBvbmVudElkcyxkPWUuc3R5bGVkQ29tcG9uZW50SWQsaD1lLnRhcmdldCxmPW8udXNlQ29udGV4dChldCksbT1HZSgpLHk9ZS5zaG91bGRGb3J3YXJkUHJvcHx8bS5zaG91bGRGb3J3YXJkUHJvcDtcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZsKGQpO3ZhciB2PUkocixmLGMpfHxDLGc9ZnVuY3Rpb24oZSxuLG8pe2Zvcih2YXIgcixzPXQodCh7fSxuKSx7Y2xhc3NOYW1lOnZvaWQgMCx0aGVtZTpvfSksaT0wO2k8ZS5sZW5ndGg7aSs9MSl7dmFyIGE9cmUocj1lW2ldKT9yKHMpOnI7Zm9yKHZhciBjIGluIGEpc1tjXT1cImNsYXNzTmFtZVwiPT09Yz9pZShzW2NdLGFbY10pOlwic3R5bGVcIj09PWM/dCh0KHt9LHNbY10pLGFbY10pOmFbY119cmV0dXJuIG4uY2xhc3NOYW1lJiYocy5jbGFzc05hbWU9aWUocy5jbGFzc05hbWUsbi5jbGFzc05hbWUpKSxzfShpLHIsdiksUz1nLmFzfHxoLHc9e307Zm9yKHZhciBiIGluIGcpdm9pZCAwPT09Z1tiXXx8XCIkXCI9PT1iWzBdfHxcImFzXCI9PT1ifHxcInRoZW1lXCI9PT1iJiZnLnRoZW1lPT09dnx8KFwiZm9yd2FyZGVkQXNcIj09PWI/dy5hcz1nLmZvcndhcmRlZEFzOnkmJiF5KGIsUyl8fCh3W2JdPWdbYl0seXx8XCJkZXZlbG9wbWVudFwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlZ8fG4oYil8fHN0LmhhcyhiKXx8IUEuaGFzKFMpfHwoc3QuYWRkKGIpLGNvbnNvbGUud2Fybignc3R5bGVkLWNvbXBvbmVudHM6IGl0IGxvb2tzIGxpa2UgYW4gdW5rbm93biBwcm9wIFwiJy5jb25jYXQoYiwnXCIgaXMgYmVpbmcgc2VudCB0aHJvdWdoIHRvIHRoZSBET00sIHdoaWNoIHdpbGwgbGlrZWx5IHRyaWdnZXIgYSBSZWFjdCBjb25zb2xlIGVycm9yLiBJZiB5b3Ugd291bGQgbGlrZSBhdXRvbWF0aWMgZmlsdGVyaW5nIG9mIHVua25vd24gcHJvcHMsIHlvdSBjYW4gb3B0LWludG8gdGhhdCBiZWhhdmlvciB2aWEgYDxTdHlsZVNoZWV0TWFuYWdlciBzaG91bGRGb3J3YXJkUHJvcD17Li4ufT5gIChjb25uZWN0IGFuIEFQSSBsaWtlIGBAZW1vdGlvbi9pcy1wcm9wLXZhbGlkYCkgb3IgY29uc2lkZXIgdXNpbmcgdHJhbnNpZW50IHByb3BzIChgJGAgcHJlZml4IGZvciBhdXRvbWF0aWMgZmlsdGVyaW5nLiknKSkpKSk7dmFyIEU9ZnVuY3Rpb24oZSx0KXt2YXIgbj1HZSgpLG89ZS5nZW5lcmF0ZUFuZEluamVjdFN0eWxlcyh0LG4uc3R5bGVTaGVldCxuLnN0eWxpcyk7cmV0dXJuXCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmbChvKSxvfShhLGcpO1wicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJmUud2FyblRvb01hbnlDbGFzc2VzJiZlLndhcm5Ub29NYW55Q2xhc3NlcyhFKTt2YXIgTj1pZShwLGQpO3JldHVybiBFJiYoTis9XCIgXCIrRSksZy5jbGFzc05hbWUmJihOKz1cIiBcIitnLmNsYXNzTmFtZSksd1tMKFMpJiYhQS5oYXMoUyk/XCJjbGFzc1wiOlwiY2xhc3NOYW1lXCJdPU4sdy5yZWY9cyx1KFMsdyl9KEQsZSxyKX1PLmRpc3BsYXlOYW1lPXk7dmFyIEQ9by5mb3J3YXJkUmVmKE8pO3JldHVybiBELmF0dHJzPVMsRC5jb21wb25lbnRTdHlsZT1OLEQuZGlzcGxheU5hbWU9eSxELnNob3VsZEZvcndhcmRQcm9wPXcsRC5mb2xkZWRDb21wb25lbnRJZHM9aT9pZShhLmZvbGRlZENvbXBvbmVudElkcyxhLnN0eWxlZENvbXBvbmVudElkKTpcIlwiLEQuc3R5bGVkQ29tcG9uZW50SWQ9ZyxELnRhcmdldD1pP2EudGFyZ2V0OmUsT2JqZWN0LmRlZmluZVByb3BlcnR5KEQsXCJkZWZhdWx0UHJvcHNcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZvbGRlZERlZmF1bHRQcm9wc30sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuX2ZvbGRlZERlZmF1bHRQcm9wcz1pP2Z1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO2Zvcih2YXIgbz0wLHI9dDtvPHIubGVuZ3RoO28rKylsZShlLHJbb10sITApO3JldHVybiBlfSh7fSxhLmRlZmF1bHRQcm9wcyxlKTplfX0pLFwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJihQKHksZyksRC53YXJuVG9vTWFueUNsYXNzZXM9ZnVuY3Rpb24oZSx0KXt2YXIgbj17fSxvPSExO3JldHVybiBmdW5jdGlvbihyKXtpZighbyYmKG5bcl09ITAsT2JqZWN0LmtleXMobikubGVuZ3RoPj0yMDApKXt2YXIgcz10Pycgd2l0aCB0aGUgaWQgb2YgXCInLmNvbmNhdCh0LCdcIicpOlwiXCI7Y29uc29sZS53YXJuKFwiT3ZlciBcIi5jb25jYXQoMjAwLFwiIGNsYXNzZXMgd2VyZSBnZW5lcmF0ZWQgZm9yIGNvbXBvbmVudCBcIikuY29uY2F0KGUpLmNvbmNhdChzLFwiLlxcblwiKStcIkNvbnNpZGVyIHVzaW5nIHRoZSBhdHRycyBtZXRob2QsIHRvZ2V0aGVyIHdpdGggYSBzdHlsZSBvYmplY3QgZm9yIGZyZXF1ZW50bHkgY2hhbmdlZCBzdHlsZXMuXFxuRXhhbXBsZTpcXG4gIGNvbnN0IENvbXBvbmVudCA9IHN0eWxlZC5kaXYuYXR0cnMocHJvcHMgPT4gKHtcXG4gICAgc3R5bGU6IHtcXG4gICAgICBiYWNrZ3JvdW5kOiBwcm9wcy5iYWNrZ3JvdW5kLFxcbiAgICB9LFxcbiAgfSkpYHdpZHRoOiAxMDAlO2BcXG5cXG4gIDxDb21wb25lbnQgLz5cIiksbz0hMCxuPXt9fX19KHksZykpLHVlKEQsZnVuY3Rpb24oKXtyZXR1cm5cIi5cIi5jb25jYXQoRC5zdHlsZWRDb21wb25lbnRJZCl9KSxjJiZvZShELGUse2F0dHJzOiEwLGNvbXBvbmVudFN0eWxlOiEwLGRpc3BsYXlOYW1lOiEwLGZvbGRlZENvbXBvbmVudElkczohMCxzaG91bGRGb3J3YXJkUHJvcDohMCxzdHlsZWRDb21wb25lbnRJZDohMCx0YXJnZXQ6ITB9KSxEfWZ1bmN0aW9uIGF0KGUsdCl7Zm9yKHZhciBuPVtlWzBdXSxvPTAscj10Lmxlbmd0aDtvPHI7bys9MSluLnB1c2godFtvXSxlW28rMV0pO3JldHVybiBufXZhciBjdD1mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihlLHtpc0NzczohMH0pfTtmdW5jdGlvbiBsdCh0KXtmb3IodmFyIG49W10sbz0xO288YXJndW1lbnRzLmxlbmd0aDtvKyspbltvLTFdPWFyZ3VtZW50c1tvXTtpZihyZSh0KXx8Y2UodCkpcmV0dXJuIGN0KFhlKGF0KF8sZShbdF0sbiwhMCkpKSk7dmFyIHI9dDtyZXR1cm4gMD09PW4ubGVuZ3RoJiYxPT09ci5sZW5ndGgmJlwic3RyaW5nXCI9PXR5cGVvZiByWzBdP1hlKHIpOmN0KFhlKGF0KHIsbikpKX1mdW5jdGlvbiB1dChuLG8scil7aWYodm9pZCAwPT09ciYmKHI9QyksIW8pdGhyb3cgaGUoMSxvKTt2YXIgcz1mdW5jdGlvbih0KXtmb3IodmFyIHM9W10saT0xO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspc1tpLTFdPWFyZ3VtZW50c1tpXTtyZXR1cm4gbihvLHIsbHQuYXBwbHkodm9pZCAwLGUoW3RdLHMsITEpKSl9O3JldHVybiBzLmF0dHJzPWZ1bmN0aW9uKGUpe3JldHVybiB1dChuLG8sdCh0KHt9LHIpLHthdHRyczpBcnJheS5wcm90b3R5cGUuY29uY2F0KHIuYXR0cnMsZSkuZmlsdGVyKEJvb2xlYW4pfSkpfSxzLndpdGhDb25maWc9ZnVuY3Rpb24oZSl7cmV0dXJuIHV0KG4sbyx0KHQoe30sciksZSkpfSxzfXZhciBwdD1mdW5jdGlvbihlKXtyZXR1cm4gdXQoaXQsZSl9LGR0PXB0O0EuZm9yRWFjaChmdW5jdGlvbihlKXtkdFtlXT1wdChlKX0pO3ZhciBodD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLnJ1bGVzPWUsdGhpcy5jb21wb25lbnRJZD10LHRoaXMuaXNTdGF0aWM9WmUoZSksa2UucmVnaXN0ZXJJZCh0aGlzLmNvbXBvbmVudElkKzEpfXJldHVybiBlLnByb3RvdHlwZS5jcmVhdGVTdHlsZXM9ZnVuY3Rpb24oZSx0LG4sbyl7dmFyIHI9byhhZShYZSh0aGlzLnJ1bGVzLHQsbixvKSksXCJcIikscz10aGlzLmNvbXBvbmVudElkK2U7bi5pbnNlcnRSdWxlcyhzLHMscil9LGUucHJvdG90eXBlLnJlbW92ZVN0eWxlcz1mdW5jdGlvbihlLHQpe3QuY2xlYXJSdWxlcyh0aGlzLmNvbXBvbmVudElkK2UpfSxlLnByb3RvdHlwZS5yZW5kZXJTdHlsZXM9ZnVuY3Rpb24oZSx0LG4sbyl7ZT4yJiZrZS5yZWdpc3RlcklkKHRoaXMuY29tcG9uZW50SWQrZSksdGhpcy5yZW1vdmVTdHlsZXMoZSxuKSx0aGlzLmNyZWF0ZVN0eWxlcyhlLHQsbixvKX0sZX0oKTtmdW5jdGlvbiBmdChuKXtmb3IodmFyIHI9W10scz0xO3M8YXJndW1lbnRzLmxlbmd0aDtzKyspcltzLTFdPWFyZ3VtZW50c1tzXTt2YXIgaT1sdC5hcHBseSh2b2lkIDAsZShbbl0sciwhMSkpLGE9XCJzYy1nbG9iYWwtXCIuY29uY2F0KCQoSlNPTi5zdHJpbmdpZnkoaSkpKSxjPW5ldyBodChpLGEpO1wicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJlAoYSk7dmFyIGw9ZnVuY3Rpb24oZSl7dmFyIHQ9R2UoKSxuPW8udXNlQ29udGV4dChldCkscj1vLnVzZVJlZih0LnN0eWxlU2hlZXQuYWxsb2NhdGVHU0luc3RhbmNlKGEpKS5jdXJyZW50O3JldHVyblwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJm8uQ2hpbGRyZW4uY291bnQoZS5jaGlsZHJlbikmJmNvbnNvbGUud2FybihcIlRoZSBnbG9iYWwgc3R5bGUgY29tcG9uZW50IFwiLmNvbmNhdChhLFwiIHdhcyBnaXZlbiBjaGlsZCBKU1guIGNyZWF0ZUdsb2JhbFN0eWxlIGRvZXMgbm90IHJlbmRlciBjaGlsZHJlbi5cIikpLFwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJmkuc29tZShmdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmLTEhPT1lLmluZGV4T2YoXCJAaW1wb3J0XCIpfSkmJmNvbnNvbGUud2FybihcIlBsZWFzZSBkbyBub3QgdXNlIEBpbXBvcnQgQ1NTIHN5bnRheCBpbiBjcmVhdGVHbG9iYWxTdHlsZSBhdCB0aGlzIHRpbWUsIGFzIHRoZSBDU1NPTSBBUElzIHdlIHVzZSBpbiBwcm9kdWN0aW9uIGRvIG5vdCBoYW5kbGUgaXQgd2VsbC4gSW5zdGVhZCwgd2UgcmVjb21tZW5kIHVzaW5nIGEgbGlicmFyeSBzdWNoIGFzIHJlYWN0LWhlbG1ldCB0byBpbmplY3QgYSB0eXBpY2FsIDxsaW5rPiBtZXRhIHRhZyB0byB0aGUgc3R5bGVzaGVldCwgb3Igc2ltcGx5IGVtYmVkZGluZyBpdCBtYW51YWxseSBpbiB5b3VyIGluZGV4Lmh0bWwgPGhlYWQ+IHNlY3Rpb24gZm9yIGEgc2ltcGxlciBhcHAuXCIpLHQuc3R5bGVTaGVldC5zZXJ2ZXImJnUocixlLHQuc3R5bGVTaGVldCxuLHQuc3R5bGlzKSxvLnVzZUxheW91dEVmZmVjdChmdW5jdGlvbigpe2lmKCF0LnN0eWxlU2hlZXQuc2VydmVyKXJldHVybiB1KHIsZSx0LnN0eWxlU2hlZXQsbix0LnN0eWxpcyksZnVuY3Rpb24oKXtyZXR1cm4gYy5yZW1vdmVTdHlsZXMocix0LnN0eWxlU2hlZXQpfX0sW3IsZSx0LnN0eWxlU2hlZXQsbix0LnN0eWxpc10pLG51bGx9O2Z1bmN0aW9uIHUoZSxuLG8scixzKXtpZihjLmlzU3RhdGljKWMucmVuZGVyU3R5bGVzKGUsYixvLHMpO2Vsc2V7dmFyIGk9dCh0KHt9LG4pLHt0aGVtZTpJKG4scixsLmRlZmF1bHRQcm9wcyl9KTtjLnJlbmRlclN0eWxlcyhlLGksbyxzKX19cmV0dXJuIG8ubWVtbyhsKX1mdW5jdGlvbiBtdCh0KXtmb3IodmFyIG49W10sbz0xO288YXJndW1lbnRzLmxlbmd0aDtvKyspbltvLTFdPWFyZ3VtZW50c1tvXTtcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbmF2aWdhdG9yJiZcIlJlYWN0TmF0aXZlXCI9PT1uYXZpZ2F0b3IucHJvZHVjdCYmY29uc29sZS53YXJuKFwiYGtleWZyYW1lc2AgY2Fubm90IGJlIHVzZWQgb24gUmVhY3ROYXRpdmUsIG9ubHkgb24gdGhlIHdlYi4gVG8gZG8gYW5pbWF0aW9uIGluIFJlYWN0TmF0aXZlIHBsZWFzZSB1c2UgQW5pbWF0ZWQuXCIpO3ZhciByPWFlKGx0LmFwcGx5KHZvaWQgMCxlKFt0XSxuLCExKSkpLHM9JChyKTtyZXR1cm4gbmV3IFdlKHMscil9ZnVuY3Rpb24geXQoZSl7dmFyIG49by5mb3J3YXJkUmVmKGZ1bmN0aW9uKG4scil7dmFyIHM9SShuLG8udXNlQ29udGV4dChldCksZS5kZWZhdWx0UHJvcHMpO3JldHVyblwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJnZvaWQgMD09PXMmJmNvbnNvbGUud2FybignW3dpdGhUaGVtZV0gWW91IGFyZSBub3QgdXNpbmcgYSBUaGVtZVByb3ZpZGVyIG5vciBwYXNzaW5nIGEgdGhlbWUgcHJvcCBvciBhIHRoZW1lIGluIGRlZmF1bHRQcm9wcyBpbiBjb21wb25lbnQgY2xhc3MgXCInLmNvbmNhdChCKGUpLCdcIicpKSxvLmNyZWF0ZUVsZW1lbnQoZSx0KHt9LG4se3RoZW1lOnMscmVmOnJ9KSl9KTtyZXR1cm4gbi5kaXNwbGF5TmFtZT1cIldpdGhUaGVtZShcIi5jb25jYXQoQihlKSxcIilcIiksb2UobixlKX12YXIgdnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dmFyIGU9dGhpczt0aGlzLl9lbWl0U2hlZXRDU1M9ZnVuY3Rpb24oKXt2YXIgdD1lLmluc3RhbmNlLnRvU3RyaW5nKCk7aWYoIXQpcmV0dXJuXCJcIjt2YXIgbj1DZSgpLG89YWUoW24mJidub25jZT1cIicuY29uY2F0KG4sJ1wiJyksXCJcIi5jb25jYXQoZiwnPVwidHJ1ZVwiJyksXCJcIi5jb25jYXQoeSwnPVwiJykuY29uY2F0KHYsJ1wiJyldLmZpbHRlcihCb29sZWFuKSxcIiBcIik7cmV0dXJuXCI8c3R5bGUgXCIuY29uY2F0KG8sXCI+XCIpLmNvbmNhdCh0LFwiPC9zdHlsZT5cIil9LHRoaXMuZ2V0U3R5bGVUYWdzPWZ1bmN0aW9uKCl7aWYoZS5zZWFsZWQpdGhyb3cgaGUoMik7cmV0dXJuIGUuX2VtaXRTaGVldENTUygpfSx0aGlzLmdldFN0eWxlRWxlbWVudD1mdW5jdGlvbigpe3ZhciBuO2lmKGUuc2VhbGVkKXRocm93IGhlKDIpO3ZhciByPWUuaW5zdGFuY2UudG9TdHJpbmcoKTtpZighcilyZXR1cm5bXTt2YXIgcz0oKG49e30pW2ZdPVwiXCIsblt5XT12LG4uZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e19faHRtbDpyfSxuKSxpPUNlKCk7cmV0dXJuIGkmJihzLm5vbmNlPWkpLFtvLmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLHQoe30scyx7a2V5Olwic2MtMC0wXCJ9KSldfSx0aGlzLnNlYWw9ZnVuY3Rpb24oKXtlLnNlYWxlZD0hMH0sdGhpcy5pbnN0YW5jZT1uZXcga2Uoe2lzU2VydmVyOiEwfSksdGhpcy5zZWFsZWQ9ITF9cmV0dXJuIGUucHJvdG90eXBlLmNvbGxlY3RTdHlsZXM9ZnVuY3Rpb24oZSl7aWYodGhpcy5zZWFsZWQpdGhyb3cgaGUoMik7cmV0dXJuIG8uY3JlYXRlRWxlbWVudChZZSx7c2hlZXQ6dGhpcy5pbnN0YW5jZX0sZSl9LGUucHJvdG90eXBlLmludGVybGVhdmVXaXRoTm9kZVN0cmVhbT1mdW5jdGlvbihlKXt0aHJvdyBoZSgzKX0sZX0oKSxndD17U3R5bGVTaGVldDprZSxtYWluU2hlZXQ6TWV9O1wicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBuYXZpZ2F0b3ImJlwiUmVhY3ROYXRpdmVcIj09PW5hdmlnYXRvci5wcm9kdWN0JiZjb25zb2xlLndhcm4oXCJJdCBsb29rcyBsaWtlIHlvdSd2ZSBpbXBvcnRlZCAnc3R5bGVkLWNvbXBvbmVudHMnIG9uIFJlYWN0IE5hdGl2ZS5cXG5QZXJoYXBzIHlvdSdyZSBsb29raW5nIHRvIGltcG9ydCAnc3R5bGVkLWNvbXBvbmVudHMvbmF0aXZlJz9cXG5SZWFkIG1vcmUgYWJvdXQgdGhpcyBhdCBodHRwczovL3d3dy5zdHlsZWQtY29tcG9uZW50cy5jb20vZG9jcy9iYXNpY3MjcmVhY3QtbmF0aXZlXCIpO3ZhciBTdD1cIl9fc2MtXCIuY29uY2F0KGYsXCJfX1wiKTtcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZcInRlc3RcIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiYod2luZG93W1N0XXx8KHdpbmRvd1tTdF09MCksMT09PXdpbmRvd1tTdF0mJmNvbnNvbGUud2FybihcIkl0IGxvb2tzIGxpa2UgdGhlcmUgYXJlIHNldmVyYWwgaW5zdGFuY2VzIG9mICdzdHlsZWQtY29tcG9uZW50cycgaW5pdGlhbGl6ZWQgaW4gdGhpcyBhcHBsaWNhdGlvbi4gVGhpcyBtYXkgY2F1c2UgZHluYW1pYyBzdHlsZXMgdG8gbm90IHJlbmRlciBwcm9wZXJseSwgZXJyb3JzIGR1cmluZyB0aGUgcmVoeWRyYXRpb24gcHJvY2VzcywgYSBtaXNzaW5nIHRoZW1lIHByb3AsIGFuZCBtYWtlcyB5b3VyIGFwcGxpY2F0aW9uIGJpZ2dlciB3aXRob3V0IGdvb2QgcmVhc29uLlxcblxcblNlZSBodHRwczovL3MtYy5zaC8yQkFYemVkIGZvciBtb3JlIGluZm8uXCIpLHdpbmRvd1tTdF0rPTEpO2V4cG9ydHt2dCBhcyBTZXJ2ZXJTdHlsZVNoZWV0LEJlIGFzIFN0eWxlU2hlZXRDb25zdW1lciwkZSBhcyBTdHlsZVNoZWV0Q29udGV4dCxZZSBhcyBTdHlsZVNoZWV0TWFuYWdlcix0dCBhcyBUaGVtZUNvbnN1bWVyLGV0IGFzIFRoZW1lQ29udGV4dCxvdCBhcyBUaGVtZVByb3ZpZGVyLGd0IGFzIF9fUFJJVkFURV9fLGZ0IGFzIGNyZWF0ZUdsb2JhbFN0eWxlLGx0IGFzIGNzcyxkdCBhcyBkZWZhdWx0LHNlIGFzIGlzU3R5bGVkQ29tcG9uZW50LG10IGFzIGtleWZyYW1lcyxkdCBhcyBzdHlsZWQsbnQgYXMgdXNlVGhlbWUsdiBhcyB2ZXJzaW9uLHl0IGFzIHdpdGhUaGVtZX07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zdHlsZWQtY29tcG9uZW50cy5icm93c2VyLmVzbS5qcy5tYXBcbiIsImZ1bmN0aW9uIF90eXBlb2Yobykge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgcmV0dXJuIG1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvO1xuICB9IDogZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbztcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBfdHlwZW9mKG8pO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xuZnVuY3Rpb24gdG9QcmltaXRpdmUodCwgcikge1xuICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDtcbiAgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG4gIGlmICh2b2lkIDAgIT09IGUpIHtcbiAgICB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTtcbiAgICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7XG4gIH1cbiAgcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9QcmltaXRpdmUsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKFwiLi90b1ByaW1pdGl2ZS5qc1wiKTtcbmZ1bmN0aW9uIHRvUHJvcGVydHlLZXkodCkge1xuICB2YXIgaSA9IHRvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpO1xuICByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiO1xufVxubW9kdWxlLmV4cG9ydHMgPSB0b1Byb3BlcnR5S2V5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKFwiLi90b1Byb3BlcnR5S2V5LmpzXCIpO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KGUsIHIsIHQpIHtcbiAgcmV0dXJuIChyID0gdG9Qcm9wZXJ0eUtleShyKSkgaW4gZSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCB7XG4gICAgdmFsdWU6IHQsXG4gICAgZW51bWVyYWJsZTogITAsXG4gICAgY29uZmlndXJhYmxlOiAhMCxcbiAgICB3cml0YWJsZTogITBcbiAgfSkgOiBlW3JdID0gdCwgZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2RlZmluZVByb3BlcnR5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZShcIi4vZGVmaW5lUHJvcGVydHkuanNcIik7XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHtcbiAgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTtcbiAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7XG4gICAgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlO1xuICAgIH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pO1xuICB9XG4gIHJldHVybiB0O1xufVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZDIoZSkge1xuICBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykge1xuICAgIHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTtcbiAgICByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikge1xuICAgICAgZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7XG4gICAgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9vYmplY3RTcHJlYWQyLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiByO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRoSG9sZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkge1xuICB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdO1xuICBpZiAobnVsbCAhPSB0KSB7XG4gICAgdmFyIGUsXG4gICAgICBuLFxuICAgICAgaSxcbiAgICAgIHUsXG4gICAgICBhID0gW10sXG4gICAgICBmID0gITAsXG4gICAgICBvID0gITE7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChpID0gKHQgPSB0LmNhbGwocikpLm5leHQsIDAgPT09IGwpIHtcbiAgICAgICAgaWYgKE9iamVjdCh0KSAhPT0gdCkgcmV0dXJuO1xuICAgICAgICBmID0gITE7XG4gICAgICB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7XG4gICAgfSBjYXRjaCAocikge1xuICAgICAgbyA9ICEwLCBuID0gcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKG8pIHRocm93IG47XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pdGVyYWJsZVRvQXJyYXlMaW1pdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpIHtcbiAgKG51bGwgPT0gYSB8fCBhID4gci5sZW5ndGgpICYmIChhID0gci5sZW5ndGgpO1xuICBmb3IgKHZhciBlID0gMCwgbiA9IEFycmF5KGEpOyBlIDwgYTsgZSsrKSBuW2VdID0gcltlXTtcbiAgcmV0dXJuIG47XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheUxpa2VUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGEpIHtcbiAgaWYgKHIpIHtcbiAgICBpZiAoXCJzdHJpbmdcIiA9PSB0eXBlb2YgcikgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkociwgYSk7XG4gICAgdmFyIHQgPSB7fS50b1N0cmluZy5jYWxsKHIpLnNsaWNlKDgsIC0xKTtcbiAgICByZXR1cm4gXCJPYmplY3RcIiA9PT0gdCAmJiByLmNvbnN0cnVjdG9yICYmICh0ID0gci5jb25zdHJ1Y3Rvci5uYW1lKSwgXCJNYXBcIiA9PT0gdCB8fCBcIlNldFwiID09PSB0ID8gQXJyYXkuZnJvbShyKSA6IFwiQXJndW1lbnRzXCIgPT09IHQgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QodCkgPyBhcnJheUxpa2VUb0FycmF5KHIsIGEpIDogdm9pZCAwO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9ub25JdGVyYWJsZVJlc3QsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlXaXRoSG9sZXMgPSByZXF1aXJlKFwiLi9hcnJheVdpdGhIb2xlcy5qc1wiKTtcbnZhciBpdGVyYWJsZVRvQXJyYXlMaW1pdCA9IHJlcXVpcmUoXCIuL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzXCIpO1xudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgbm9uSXRlcmFibGVSZXN0ID0gcmVxdWlyZShcIi4vbm9uSXRlcmFibGVSZXN0LmpzXCIpO1xuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkociwgZSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5TGltaXQociwgZSkgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgZSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9zbGljZWRUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UociwgZSkge1xuICBpZiAobnVsbCA9PSByKSByZXR1cm4ge307XG4gIHZhciB0ID0ge307XG4gIGZvciAodmFyIG4gaW4gcikgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwociwgbikpIHtcbiAgICBpZiAoZS5pbmNsdWRlcyhuKSkgY29udGludWU7XG4gICAgdFtuXSA9IHJbbl07XG4gIH1cbiAgcmV0dXJuIHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgPSByZXF1aXJlKFwiLi9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzXCIpO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKGUsIHQpIHtcbiAgaWYgKG51bGwgPT0gZSkgcmV0dXJuIHt9O1xuICB2YXIgbyxcbiAgICByLFxuICAgIGkgPSBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKGUsIHQpO1xuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtcbiAgICBmb3IgKHIgPSAwOyByIDwgcy5sZW5ndGg7IHIrKykgbyA9IHNbcl0sIHQuaW5jbHVkZXMobykgfHwge30ucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLCBvKSAmJiAoaVtvXSA9IGVbb10pO1xuICB9XG4gIHJldHVybiBpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCIndXNlIHN0cmljdCc7XG5cbnZhciBfb2JqZWN0U3ByZWFkID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RTcHJlYWQyJyk7XG52YXIgX3NsaWNlZFRvQXJyYXkgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXknKTtcbnZhciBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzJyk7XG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xuXG52YXIgX2V4Y2x1ZGVkID0gW1wiZGVmYXVsdElucHV0VmFsdWVcIiwgXCJkZWZhdWx0TWVudUlzT3BlblwiLCBcImRlZmF1bHRWYWx1ZVwiLCBcImlucHV0VmFsdWVcIiwgXCJtZW51SXNPcGVuXCIsIFwib25DaGFuZ2VcIiwgXCJvbklucHV0Q2hhbmdlXCIsIFwib25NZW51Q2xvc2VcIiwgXCJvbk1lbnVPcGVuXCIsIFwidmFsdWVcIl07XG5mdW5jdGlvbiB1c2VTdGF0ZU1hbmFnZXIoX3JlZikge1xuICB2YXIgX3JlZiRkZWZhdWx0SW5wdXRWYWx1ID0gX3JlZi5kZWZhdWx0SW5wdXRWYWx1ZSxcbiAgICBkZWZhdWx0SW5wdXRWYWx1ZSA9IF9yZWYkZGVmYXVsdElucHV0VmFsdSA9PT0gdm9pZCAwID8gJycgOiBfcmVmJGRlZmF1bHRJbnB1dFZhbHUsXG4gICAgX3JlZiRkZWZhdWx0TWVudUlzT3BlID0gX3JlZi5kZWZhdWx0TWVudUlzT3BlbixcbiAgICBkZWZhdWx0TWVudUlzT3BlbiA9IF9yZWYkZGVmYXVsdE1lbnVJc09wZSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcmVmJGRlZmF1bHRNZW51SXNPcGUsXG4gICAgX3JlZiRkZWZhdWx0VmFsdWUgPSBfcmVmLmRlZmF1bHRWYWx1ZSxcbiAgICBkZWZhdWx0VmFsdWUgPSBfcmVmJGRlZmF1bHRWYWx1ZSA9PT0gdm9pZCAwID8gbnVsbCA6IF9yZWYkZGVmYXVsdFZhbHVlLFxuICAgIHByb3BzSW5wdXRWYWx1ZSA9IF9yZWYuaW5wdXRWYWx1ZSxcbiAgICBwcm9wc01lbnVJc09wZW4gPSBfcmVmLm1lbnVJc09wZW4sXG4gICAgcHJvcHNPbkNoYW5nZSA9IF9yZWYub25DaGFuZ2UsXG4gICAgcHJvcHNPbklucHV0Q2hhbmdlID0gX3JlZi5vbklucHV0Q2hhbmdlLFxuICAgIHByb3BzT25NZW51Q2xvc2UgPSBfcmVmLm9uTWVudUNsb3NlLFxuICAgIHByb3BzT25NZW51T3BlbiA9IF9yZWYub25NZW51T3BlbixcbiAgICBwcm9wc1ZhbHVlID0gX3JlZi52YWx1ZSxcbiAgICByZXN0U2VsZWN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgdmFyIF91c2VTdGF0ZSA9IFJlYWN0LnVzZVN0YXRlKHByb3BzSW5wdXRWYWx1ZSAhPT0gdW5kZWZpbmVkID8gcHJvcHNJbnB1dFZhbHVlIDogZGVmYXVsdElucHV0VmFsdWUpLFxuICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgIHN0YXRlSW5wdXRWYWx1ZSA9IF91c2VTdGF0ZTJbMF0sXG4gICAgc2V0U3RhdGVJbnB1dFZhbHVlID0gX3VzZVN0YXRlMlsxXTtcbiAgdmFyIF91c2VTdGF0ZTMgPSBSZWFjdC51c2VTdGF0ZShwcm9wc01lbnVJc09wZW4gIT09IHVuZGVmaW5lZCA/IHByb3BzTWVudUlzT3BlbiA6IGRlZmF1bHRNZW51SXNPcGVuKSxcbiAgICBfdXNlU3RhdGU0ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlMywgMiksXG4gICAgc3RhdGVNZW51SXNPcGVuID0gX3VzZVN0YXRlNFswXSxcbiAgICBzZXRTdGF0ZU1lbnVJc09wZW4gPSBfdXNlU3RhdGU0WzFdO1xuICB2YXIgX3VzZVN0YXRlNSA9IFJlYWN0LnVzZVN0YXRlKHByb3BzVmFsdWUgIT09IHVuZGVmaW5lZCA/IHByb3BzVmFsdWUgOiBkZWZhdWx0VmFsdWUpLFxuICAgIF91c2VTdGF0ZTYgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGU1LCAyKSxcbiAgICBzdGF0ZVZhbHVlID0gX3VzZVN0YXRlNlswXSxcbiAgICBzZXRTdGF0ZVZhbHVlID0gX3VzZVN0YXRlNlsxXTtcbiAgdmFyIG9uQ2hhbmdlID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKHZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgaWYgKHR5cGVvZiBwcm9wc09uQ2hhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9wc09uQ2hhbmdlKHZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICB9XG4gICAgc2V0U3RhdGVWYWx1ZSh2YWx1ZSk7XG4gIH0sIFtwcm9wc09uQ2hhbmdlXSk7XG4gIHZhciBvbklucHV0Q2hhbmdlID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKHZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgdmFyIG5ld1ZhbHVlO1xuICAgIGlmICh0eXBlb2YgcHJvcHNPbklucHV0Q2hhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBuZXdWYWx1ZSA9IHByb3BzT25JbnB1dENoYW5nZSh2YWx1ZSwgYWN0aW9uTWV0YSk7XG4gICAgfVxuICAgIHNldFN0YXRlSW5wdXRWYWx1ZShuZXdWYWx1ZSAhPT0gdW5kZWZpbmVkID8gbmV3VmFsdWUgOiB2YWx1ZSk7XG4gIH0sIFtwcm9wc09uSW5wdXRDaGFuZ2VdKTtcbiAgdmFyIG9uTWVudU9wZW4gPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVvZiBwcm9wc09uTWVudU9wZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHByb3BzT25NZW51T3BlbigpO1xuICAgIH1cbiAgICBzZXRTdGF0ZU1lbnVJc09wZW4odHJ1ZSk7XG4gIH0sIFtwcm9wc09uTWVudU9wZW5dKTtcbiAgdmFyIG9uTWVudUNsb3NlID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgcHJvcHNPbk1lbnVDbG9zZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvcHNPbk1lbnVDbG9zZSgpO1xuICAgIH1cbiAgICBzZXRTdGF0ZU1lbnVJc09wZW4oZmFsc2UpO1xuICB9LCBbcHJvcHNPbk1lbnVDbG9zZV0pO1xuICB2YXIgaW5wdXRWYWx1ZSA9IHByb3BzSW5wdXRWYWx1ZSAhPT0gdW5kZWZpbmVkID8gcHJvcHNJbnB1dFZhbHVlIDogc3RhdGVJbnB1dFZhbHVlO1xuICB2YXIgbWVudUlzT3BlbiA9IHByb3BzTWVudUlzT3BlbiAhPT0gdW5kZWZpbmVkID8gcHJvcHNNZW51SXNPcGVuIDogc3RhdGVNZW51SXNPcGVuO1xuICB2YXIgdmFsdWUgPSBwcm9wc1ZhbHVlICE9PSB1bmRlZmluZWQgPyBwcm9wc1ZhbHVlIDogc3RhdGVWYWx1ZTtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdFNlbGVjdFByb3BzKSwge30sIHtcbiAgICBpbnB1dFZhbHVlOiBpbnB1dFZhbHVlLFxuICAgIG1lbnVJc09wZW46IG1lbnVJc09wZW4sXG4gICAgb25DaGFuZ2U6IG9uQ2hhbmdlLFxuICAgIG9uSW5wdXRDaGFuZ2U6IG9uSW5wdXRDaGFuZ2UsXG4gICAgb25NZW51Q2xvc2U6IG9uTWVudUNsb3NlLFxuICAgIG9uTWVudU9wZW46IG9uTWVudU9wZW4sXG4gICAgdmFsdWU6IHZhbHVlXG4gIH0pO1xufVxuXG5leHBvcnRzLnVzZVN0YXRlTWFuYWdlciA9IHVzZVN0YXRlTWFuYWdlcjtcbiIsImZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICByZXR1cm4gbW9kdWxlLmV4cG9ydHMgPSBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uIChuKSB7XG4gICAgZm9yICh2YXIgZSA9IDE7IGUgPCBhcmd1bWVudHMubGVuZ3RoOyBlKyspIHtcbiAgICAgIHZhciB0ID0gYXJndW1lbnRzW2VdO1xuICAgICAgZm9yICh2YXIgciBpbiB0KSAoe30pLmhhc093blByb3BlcnR5LmNhbGwodCwgcikgJiYgKG5bcl0gPSB0W3JdKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgX2V4dGVuZHMuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2V4dGVuZHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soYSwgbikge1xuICBpZiAoIShhIGluc3RhbmNlb2YgbikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9jbGFzc0NhbGxDaGVjaywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZShcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiKTtcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHIpIHtcbiAgZm9yICh2YXIgdCA9IDA7IHQgPCByLmxlbmd0aDsgdCsrKSB7XG4gICAgdmFyIG8gPSByW3RdO1xuICAgIG8uZW51bWVyYWJsZSA9IG8uZW51bWVyYWJsZSB8fCAhMSwgby5jb25maWd1cmFibGUgPSAhMCwgXCJ2YWx1ZVwiIGluIG8gJiYgKG8ud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCB0b1Byb3BlcnR5S2V5KG8ua2V5KSwgbyk7XG4gIH1cbn1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhlLCByLCB0KSB7XG4gIHJldHVybiByICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLCByKSwgdCAmJiBfZGVmaW5lUHJvcGVydGllcyhlLCB0KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogITFcbiAgfSksIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9jcmVhdGVDbGFzcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZih0LCBlKSB7XG4gIHJldHVybiBtb2R1bGUuZXhwb3J0cyA9IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCwgZSkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyA9IGUsIHQ7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgX3NldFByb3RvdHlwZU9mKHQsIGUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfc2V0UHJvdG90eXBlT2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiKTtcbmZ1bmN0aW9uIF9pbmhlcml0cyh0LCBlKSB7XG4gIGlmIChcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIGUgJiYgbnVsbCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZSAmJiBlLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogdCxcbiAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9XG4gIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZSAmJiBzZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2luaGVyaXRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKHQpIHtcbiAgcmV0dXJuIG1vZHVsZS5leHBvcnRzID0gX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0KSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBfZ2V0UHJvdG90eXBlT2YodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9nZXRQcm90b3R5cGVPZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7XG4gIHRyeSB7XG4gICAgdmFyIHQgPSAhQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpO1xuICB9IGNhdGNoICh0KSB7fVxuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7XG4gICAgcmV0dXJuICEhdDtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChlKSB7XG4gIGlmICh2b2lkIDAgPT09IGUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgcmV0dXJuIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG52YXIgYXNzZXJ0VGhpc0luaXRpYWxpemVkID0gcmVxdWlyZShcIi4vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzXCIpO1xuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odCwgZSkge1xuICBpZiAoZSAmJiAoXCJvYmplY3RcIiA9PSBfdHlwZW9mKGUpIHx8IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgZSkpIHJldHVybiBlO1xuICBpZiAodm9pZCAwICE9PSBlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7XG4gIHJldHVybiBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4vZ2V0UHJvdG90eXBlT2YuanNcIik7XG52YXIgaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gcmVxdWlyZShcIi4vaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0LmpzXCIpO1xudmFyIHBvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gPSByZXF1aXJlKFwiLi9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzXCIpO1xuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKHQpIHtcbiAgdmFyIHIgPSBpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZSxcbiAgICAgIG8gPSBnZXRQcm90b3R5cGVPZih0KTtcbiAgICBpZiAocikge1xuICAgICAgdmFyIHMgPSBnZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjtcbiAgICAgIGUgPSBSZWZsZWN0LmNvbnN0cnVjdChvLCBhcmd1bWVudHMsIHMpO1xuICAgIH0gZWxzZSBlID0gby5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIHJldHVybiBwb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIGUpO1xuICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY3JlYXRlU3VwZXIsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlMaWtlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIik7XG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkocik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheVdpdGhvdXRIb2xlcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkocikge1xuICBpZiAoXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIG51bGwgIT0gcltTeW1ib2wuaXRlcmF0b3JdIHx8IG51bGwgIT0gcltcIkBAaXRlcmF0b3JcIl0pIHJldHVybiBBcnJheS5mcm9tKHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaXRlcmFibGVUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX25vbkl0ZXJhYmxlU3ByZWFkLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5V2l0aG91dEhvbGVzID0gcmVxdWlyZShcIi4vYXJyYXlXaXRob3V0SG9sZXMuanNcIik7XG52YXIgaXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vaXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgbm9uSXRlcmFibGVTcHJlYWQgPSByZXF1aXJlKFwiLi9ub25JdGVyYWJsZVNwcmVhZC5qc1wiKTtcbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShyKSB7XG4gIHJldHVybiBhcnJheVdpdGhvdXRIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXkocikgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkocikgfHwgbm9uSXRlcmFibGVTcHJlYWQoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3RvQ29uc3VtYWJsZUFycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbChlLCB0KSB7XG4gIHJldHVybiB0IHx8ICh0ID0gZS5zbGljZSgwKSksIE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwge1xuICAgIHJhdzoge1xuICAgICAgdmFsdWU6IE9iamVjdC5mcmVlemUodClcbiAgICB9XG4gIH0pKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImltcG9ydCB7IHJlY3RUb0NsaWVudFJlY3QsIGRldGVjdE92ZXJmbG93IGFzIGRldGVjdE92ZXJmbG93JDEsIG9mZnNldCBhcyBvZmZzZXQkMSwgYXV0b1BsYWNlbWVudCBhcyBhdXRvUGxhY2VtZW50JDEsIHNoaWZ0IGFzIHNoaWZ0JDEsIGZsaXAgYXMgZmxpcCQxLCBzaXplIGFzIHNpemUkMSwgaGlkZSBhcyBoaWRlJDEsIGFycm93IGFzIGFycm93JDEsIGlubGluZSBhcyBpbmxpbmUkMSwgbGltaXRTaGlmdCBhcyBsaW1pdFNoaWZ0JDEsIGNvbXB1dGVQb3NpdGlvbiBhcyBjb21wdXRlUG9zaXRpb24kMSB9IGZyb20gJ0BmbG9hdGluZy11aS9jb3JlJztcbmltcG9ydCB7IHJvdW5kLCBjcmVhdGVDb29yZHMsIG1heCwgbWluLCBmbG9vciB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5pbXBvcnQgeyBnZXRDb21wdXRlZFN0eWxlLCBpc0hUTUxFbGVtZW50LCBpc0VsZW1lbnQsIGdldFdpbmRvdywgaXNXZWJLaXQsIGdldEZyYW1lRWxlbWVudCwgZ2V0Tm9kZVNjcm9sbCwgZ2V0RG9jdW1lbnRFbGVtZW50LCBpc1RvcExheWVyLCBnZXROb2RlTmFtZSwgaXNPdmVyZmxvd0VsZW1lbnQsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBnZXRQYXJlbnROb2RlLCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGlzQ29udGFpbmluZ0Jsb2NrLCBpc1RhYmxlRWxlbWVudCwgZ2V0Q29udGFpbmluZ0Jsb2NrIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzL2RvbSc7XG5leHBvcnQgeyBnZXRPdmVyZmxvd0FuY2VzdG9ycyB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuXG5mdW5jdGlvbiBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpIHtcbiAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgLy8gSW4gdGVzdGluZyBlbnZpcm9ubWVudHMsIHRoZSBgd2lkdGhgIGFuZCBgaGVpZ2h0YCBwcm9wZXJ0aWVzIGFyZSBlbXB0eVxuICAvLyBzdHJpbmdzIGZvciBTVkcgZWxlbWVudHMsIHJldHVybmluZyBOYU4uIEZhbGxiYWNrIHRvIGAwYCBpbiB0aGlzIGNhc2UuXG4gIGxldCB3aWR0aCA9IHBhcnNlRmxvYXQoY3NzLndpZHRoKSB8fCAwO1xuICBsZXQgaGVpZ2h0ID0gcGFyc2VGbG9hdChjc3MuaGVpZ2h0KSB8fCAwO1xuICBjb25zdCBoYXNPZmZzZXQgPSBpc0hUTUxFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCBvZmZzZXRXaWR0aCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0V2lkdGggOiB3aWR0aDtcbiAgY29uc3Qgb2Zmc2V0SGVpZ2h0ID0gaGFzT2Zmc2V0ID8gZWxlbWVudC5vZmZzZXRIZWlnaHQgOiBoZWlnaHQ7XG4gIGNvbnN0IHNob3VsZEZhbGxiYWNrID0gcm91bmQod2lkdGgpICE9PSBvZmZzZXRXaWR0aCB8fCByb3VuZChoZWlnaHQpICE9PSBvZmZzZXRIZWlnaHQ7XG4gIGlmIChzaG91bGRGYWxsYmFjaykge1xuICAgIHdpZHRoID0gb2Zmc2V0V2lkdGg7XG4gICAgaGVpZ2h0ID0gb2Zmc2V0SGVpZ2h0O1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgICQ6IHNob3VsZEZhbGxiYWNrXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVud3JhcEVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gIWlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgOiBlbGVtZW50O1xufVxuXG5mdW5jdGlvbiBnZXRTY2FsZShlbGVtZW50KSB7XG4gIGNvbnN0IGRvbUVsZW1lbnQgPSB1bndyYXBFbGVtZW50KGVsZW1lbnQpO1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZG9tRWxlbWVudCkpIHtcbiAgICByZXR1cm4gY3JlYXRlQ29vcmRzKDEpO1xuICB9XG4gIGNvbnN0IHJlY3QgPSBkb21FbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgICRcbiAgfSA9IGdldENzc0RpbWVuc2lvbnMoZG9tRWxlbWVudCk7XG4gIGxldCB4ID0gKCQgPyByb3VuZChyZWN0LndpZHRoKSA6IHJlY3Qud2lkdGgpIC8gd2lkdGg7XG4gIGxldCB5ID0gKCQgPyByb3VuZChyZWN0LmhlaWdodCkgOiByZWN0LmhlaWdodCkgLyBoZWlnaHQ7XG5cbiAgLy8gMCwgTmFOLCBvciBJbmZpbml0eSBzaG91bGQgYWx3YXlzIGZhbGxiYWNrIHRvIDEuXG5cbiAgaWYgKCF4IHx8ICFOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICB4ID0gMTtcbiAgfVxuICBpZiAoIXkgfHwgIU51bWJlci5pc0Zpbml0ZSh5KSkge1xuICAgIHkgPSAxO1xuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmNvbnN0IG5vT2Zmc2V0cyA9IC8qI19fUFVSRV9fKi9jcmVhdGVDb29yZHMoMCk7XG5mdW5jdGlvbiBnZXRWaXN1YWxPZmZzZXRzKGVsZW1lbnQpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBpZiAoIWlzV2ViS2l0KCkgfHwgIXdpbi52aXN1YWxWaWV3cG9ydCkge1xuICAgIHJldHVybiBub09mZnNldHM7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiB3aW4udmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCxcbiAgICB5OiB3aW4udmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wXG4gIH07XG59XG5mdW5jdGlvbiBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGVsZW1lbnQsIGlzRml4ZWQsIGZsb2F0aW5nT2Zmc2V0UGFyZW50KSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cbiAgaWYgKCFmbG9hdGluZ09mZnNldFBhcmVudCB8fCBpc0ZpeGVkICYmIGZsb2F0aW5nT2Zmc2V0UGFyZW50ICE9PSBnZXRXaW5kb3coZWxlbWVudCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGlzRml4ZWQ7XG59XG5cbmZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSB7XG4gIGlmIChpbmNsdWRlU2NhbGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGVTY2FsZSA9IGZhbHNlO1xuICB9XG4gIGlmIChpc0ZpeGVkU3RyYXRlZ3kgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWRTdHJhdGVneSA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGNsaWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBpZiAoaW5jbHVkZVNjYWxlKSB7XG4gICAgaWYgKG9mZnNldFBhcmVudCkge1xuICAgICAgaWYgKGlzRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2NhbGUgPSBnZXRTY2FsZShlbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgdmlzdWFsT2Zmc2V0cyA9IHNob3VsZEFkZFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCwgaXNGaXhlZFN0cmF0ZWd5LCBvZmZzZXRQYXJlbnQpID8gZ2V0VmlzdWFsT2Zmc2V0cyhkb21FbGVtZW50KSA6IGNyZWF0ZUNvb3JkcygwKTtcbiAgbGV0IHggPSAoY2xpZW50UmVjdC5sZWZ0ICsgdmlzdWFsT2Zmc2V0cy54KSAvIHNjYWxlLng7XG4gIGxldCB5ID0gKGNsaWVudFJlY3QudG9wICsgdmlzdWFsT2Zmc2V0cy55KSAvIHNjYWxlLnk7XG4gIGxldCB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGggLyBzY2FsZS54O1xuICBsZXQgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQgLyBzY2FsZS55O1xuICBpZiAoZG9tRWxlbWVudCkge1xuICAgIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhkb21FbGVtZW50KTtcbiAgICBjb25zdCBvZmZzZXRXaW4gPSBvZmZzZXRQYXJlbnQgJiYgaXNFbGVtZW50KG9mZnNldFBhcmVudCkgPyBnZXRXaW5kb3cob2Zmc2V0UGFyZW50KSA6IG9mZnNldFBhcmVudDtcbiAgICBsZXQgY3VycmVudFdpbiA9IHdpbjtcbiAgICBsZXQgY3VycmVudElGcmFtZSA9IGdldEZyYW1lRWxlbWVudChjdXJyZW50V2luKTtcbiAgICB3aGlsZSAoY3VycmVudElGcmFtZSAmJiBvZmZzZXRQYXJlbnQgJiYgb2Zmc2V0V2luICE9PSBjdXJyZW50V2luKSB7XG4gICAgICBjb25zdCBpZnJhbWVTY2FsZSA9IGdldFNjYWxlKGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY29uc3QgaWZyYW1lUmVjdCA9IGN1cnJlbnRJRnJhbWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY29uc3QgbGVmdCA9IGlmcmFtZVJlY3QubGVmdCArIChjdXJyZW50SUZyYW1lLmNsaWVudExlZnQgKyBwYXJzZUZsb2F0KGNzcy5wYWRkaW5nTGVmdCkpICogaWZyYW1lU2NhbGUueDtcbiAgICAgIGNvbnN0IHRvcCA9IGlmcmFtZVJlY3QudG9wICsgKGN1cnJlbnRJRnJhbWUuY2xpZW50VG9wICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ1RvcCkpICogaWZyYW1lU2NhbGUueTtcbiAgICAgIHggKj0gaWZyYW1lU2NhbGUueDtcbiAgICAgIHkgKj0gaWZyYW1lU2NhbGUueTtcbiAgICAgIHdpZHRoICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICBoZWlnaHQgKj0gaWZyYW1lU2NhbGUueTtcbiAgICAgIHggKz0gbGVmdDtcbiAgICAgIHkgKz0gdG9wO1xuICAgICAgY3VycmVudFdpbiA9IGdldFdpbmRvdyhjdXJyZW50SUZyYW1lKTtcbiAgICAgIGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgfVxuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH0pO1xufVxuXG4vLyBJZiA8aHRtbD4gaGFzIGEgQ1NTIHdpZHRoIGdyZWF0ZXIgdGhhbiB0aGUgdmlld3BvcnQsIHRoZW4gdGhpcyB3aWxsIGJlXG4vLyBpbmNvcnJlY3QgZm9yIFJUTC5cbmZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCwgcmVjdCkge1xuICBjb25zdCBsZWZ0U2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KS5zY3JvbGxMZWZ0O1xuICBpZiAoIXJlY3QpIHtcbiAgICByZXR1cm4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkubGVmdCArIGxlZnRTY3JvbGw7XG4gIH1cbiAgcmV0dXJuIHJlY3QubGVmdCArIGxlZnRTY3JvbGw7XG59XG5cbmZ1bmN0aW9uIGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwsIGlnbm9yZVNjcm9sbGJhclgpIHtcbiAgaWYgKGlnbm9yZVNjcm9sbGJhclggPT09IHZvaWQgMCkge1xuICAgIGlnbm9yZVNjcm9sbGJhclggPSBmYWxzZTtcbiAgfVxuICBjb25zdCBodG1sUmVjdCA9IGRvY3VtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgeCA9IGh0bWxSZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIChpZ25vcmVTY3JvbGxiYXJYID8gMCA6XG4gIC8vIFJUTCA8Ym9keT4gc2Nyb2xsYmFyLlxuICBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCwgaHRtbFJlY3QpKTtcbiAgY29uc3QgeSA9IGh0bWxSZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3A7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgdG9wTGF5ZXIgPSBlbGVtZW50cyA/IGlzVG9wTGF5ZXIoZWxlbWVudHMuZmxvYXRpbmcpIDogZmFsc2U7XG4gIGlmIChvZmZzZXRQYXJlbnQgPT09IGRvY3VtZW50RWxlbWVudCB8fCB0b3BMYXllciAmJiBpc0ZpeGVkKSB7XG4gICAgcmV0dXJuIHJlY3Q7XG4gIH1cbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBsZXQgc2NhbGUgPSBjcmVhdGVDb29yZHMoMSk7XG4gIGNvbnN0IG9mZnNldHMgPSBjcmVhdGVDb29yZHMoMCk7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCBpc092ZXJmbG93RWxlbWVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIGlmIChpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50KTtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIG9mZnNldHMueCA9IG9mZnNldFJlY3QueCArIG9mZnNldFBhcmVudC5jbGllbnRMZWZ0O1xuICAgICAgb2Zmc2V0cy55ID0gb2Zmc2V0UmVjdC55ICsgb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9XG4gIH1cbiAgY29uc3QgaHRtbE9mZnNldCA9IGRvY3VtZW50RWxlbWVudCAmJiAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQgPyBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCB0cnVlKSA6IGNyZWF0ZUNvb3JkcygwKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogcmVjdC53aWR0aCAqIHNjYWxlLngsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodCAqIHNjYWxlLnksXG4gICAgeDogcmVjdC54ICogc2NhbGUueCAtIHNjcm9sbC5zY3JvbGxMZWZ0ICogc2NhbGUueCArIG9mZnNldHMueCArIGh0bWxPZmZzZXQueCxcbiAgICB5OiByZWN0LnkgKiBzY2FsZS55IC0gc2Nyb2xsLnNjcm9sbFRvcCAqIHNjYWxlLnkgKyBvZmZzZXRzLnkgKyBodG1sT2Zmc2V0LnlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdHMoZWxlbWVudCkge1xuICByZXR1cm4gQXJyYXkuZnJvbShlbGVtZW50LmdldENsaWVudFJlY3RzKCkpO1xufVxuXG4vLyBHZXRzIHRoZSBlbnRpcmUgc2l6ZSBvZiB0aGUgc2Nyb2xsYWJsZSBkb2N1bWVudCBhcmVhLCBldmVuIGV4dGVuZGluZyBvdXRzaWRlXG4vLyBvZiB0aGUgYDxodG1sPmAgYW5kIGA8Ym9keT5gIHJlY3QgYm91bmRzIGlmIGhvcml6b250YWxseSBzY3JvbGxhYmxlLlxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRSZWN0KGVsZW1lbnQpIHtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KTtcbiAgY29uc3QgYm9keSA9IGVsZW1lbnQub3duZXJEb2N1bWVudC5ib2R5O1xuICBjb25zdCB3aWR0aCA9IG1heChodG1sLnNjcm9sbFdpZHRoLCBodG1sLmNsaWVudFdpZHRoLCBib2R5LnNjcm9sbFdpZHRoLCBib2R5LmNsaWVudFdpZHRoKTtcbiAgY29uc3QgaGVpZ2h0ID0gbWF4KGh0bWwuc2Nyb2xsSGVpZ2h0LCBodG1sLmNsaWVudEhlaWdodCwgYm9keS5zY3JvbGxIZWlnaHQsIGJvZHkuY2xpZW50SGVpZ2h0KTtcbiAgbGV0IHggPSAtc2Nyb2xsLnNjcm9sbExlZnQgKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpO1xuICBjb25zdCB5ID0gLXNjcm9sbC5zY3JvbGxUb3A7XG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKGJvZHkpLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICB4ICs9IG1heChodG1sLmNsaWVudFdpZHRoLCBib2R5LmNsaWVudFdpZHRoKSAtIHdpZHRoO1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBjb25zdCBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCB2aXN1YWxWaWV3cG9ydCA9IHdpbi52aXN1YWxWaWV3cG9ydDtcbiAgbGV0IHdpZHRoID0gaHRtbC5jbGllbnRXaWR0aDtcbiAgbGV0IGhlaWdodCA9IGh0bWwuY2xpZW50SGVpZ2h0O1xuICBsZXQgeCA9IDA7XG4gIGxldCB5ID0gMDtcbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7XG4gICAgY29uc3QgdmlzdWFsVmlld3BvcnRCYXNlZCA9IGlzV2ViS2l0KCk7XG4gICAgaWYgKCF2aXN1YWxWaWV3cG9ydEJhc2VkIHx8IHZpc3VhbFZpZXdwb3J0QmFzZWQgJiYgc3RyYXRlZ3kgPT09ICdmaXhlZCcpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbi8vIFJldHVybnMgdGhlIGlubmVyIGNsaWVudCByZWN0LCBzdWJ0cmFjdGluZyBzY3JvbGxiYXJzIGlmIHByZXNlbnQuXG5mdW5jdGlvbiBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICBjb25zdCBjbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIHN0cmF0ZWd5ID09PSAnZml4ZWQnKTtcbiAgY29uc3QgdG9wID0gY2xpZW50UmVjdC50b3AgKyBlbGVtZW50LmNsaWVudFRvcDtcbiAgY29uc3QgbGVmdCA9IGNsaWVudFJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50TGVmdDtcbiAgY29uc3Qgc2NhbGUgPSBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0U2NhbGUoZWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMSk7XG4gIGNvbnN0IHdpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aCAqIHNjYWxlLng7XG4gIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0ICogc2NhbGUueTtcbiAgY29uc3QgeCA9IGxlZnQgKiBzY2FsZS54O1xuICBjb25zdCB5ID0gdG9wICogc2NhbGUueTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5mdW5jdGlvbiBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpIHtcbiAgbGV0IHJlY3Q7XG4gIGlmIChjbGlwcGluZ0FuY2VzdG9yID09PSAndmlld3BvcnQnKSB7XG4gICAgcmVjdCA9IGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSk7XG4gIH0gZWxzZSBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ2RvY3VtZW50Jykge1xuICAgIHJlY3QgPSBnZXREb2N1bWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKTtcbiAgfSBlbHNlIGlmIChpc0VsZW1lbnQoY2xpcHBpbmdBbmNlc3RvcikpIHtcbiAgICByZWN0ID0gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBnZXRWaXN1YWxPZmZzZXRzKGVsZW1lbnQpO1xuICAgIHJlY3QgPSB7XG4gICAgICB4OiBjbGlwcGluZ0FuY2VzdG9yLnggLSB2aXN1YWxPZmZzZXRzLngsXG4gICAgICB5OiBjbGlwcGluZ0FuY2VzdG9yLnkgLSB2aXN1YWxPZmZzZXRzLnksXG4gICAgICB3aWR0aDogY2xpcHBpbmdBbmNlc3Rvci53aWR0aCxcbiAgICAgIGhlaWdodDogY2xpcHBpbmdBbmNlc3Rvci5oZWlnaHRcbiAgICB9O1xuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHJlY3QpO1xufVxuZnVuY3Rpb24gaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIHN0b3BOb2RlKSB7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICBpZiAocGFyZW50Tm9kZSA9PT0gc3RvcE5vZGUgfHwgIWlzRWxlbWVudChwYXJlbnROb2RlKSB8fCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUocGFyZW50Tm9kZSkucG9zaXRpb24gPT09ICdmaXhlZCcgfHwgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKHBhcmVudE5vZGUsIHN0b3BOb2RlKTtcbn1cblxuLy8gQSBcImNsaXBwaW5nIGFuY2VzdG9yXCIgaXMgYW4gYG92ZXJmbG93YCBlbGVtZW50IHdpdGggdGhlIGNoYXJhY3RlcmlzdGljIG9mXG4vLyBjbGlwcGluZyAob3IgaGlkaW5nKSBjaGlsZCBlbGVtZW50cy4gVGhpcyByZXR1cm5zIGFsbCBjbGlwcGluZyBhbmNlc3RvcnNcbi8vIG9mIHRoZSBnaXZlbiBlbGVtZW50IHVwIHRoZSB0cmVlLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIGNhY2hlKSB7XG4gIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGNhY2hlLmdldChlbGVtZW50KTtcbiAgaWYgKGNhY2hlZFJlc3VsdCkge1xuICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gIH1cbiAgbGV0IHJlc3VsdCA9IGdldE92ZXJmbG93QW5jZXN0b3JzKGVsZW1lbnQsIFtdLCBmYWxzZSkuZmlsdGVyKGVsID0+IGlzRWxlbWVudChlbCkgJiYgZ2V0Tm9kZU5hbWUoZWwpICE9PSAnYm9keScpO1xuICBsZXQgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICBjb25zdCBlbGVtZW50SXNGaXhlZCA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCc7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gZ2V0UGFyZW50Tm9kZShlbGVtZW50KSA6IGVsZW1lbnQ7XG5cbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcbiAgd2hpbGUgKGlzRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShjdXJyZW50Tm9kZSkpIHtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50Tm9kZSk7XG4gICAgY29uc3QgY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgPSBpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSk7XG4gICAgaWYgKCFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHNob3VsZERyb3BDdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmICFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA6ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJyAmJiAhIWN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlICYmIFsnYWJzb2x1dGUnLCAnZml4ZWQnXS5pbmNsdWRlcyhjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZS5wb3NpdGlvbikgfHwgaXNPdmVyZmxvd0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgY3VycmVudE5vZGUpO1xuICAgIGlmIChzaG91bGREcm9wQ3VycmVudE5vZGUpIHtcbiAgICAgIC8vIERyb3Agbm9uLWNvbnRhaW5pbmcgYmxvY2tzLlxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihhbmNlc3RvciA9PiBhbmNlc3RvciAhPT0gY3VycmVudE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZWNvcmQgbGFzdCBjb250YWluaW5nIGJsb2NrIGZvciBuZXh0IGl0ZXJhdGlvbi5cbiAgICAgIGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gY29tcHV0ZWRTdHlsZTtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICBjYWNoZS5zZXQoZWxlbWVudCwgcmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gR2V0cyB0aGUgbWF4aW11bSBhcmVhIHRoYXQgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBkdWUgdG8gYW55IG51bWJlciBvZlxuLy8gY2xpcHBpbmcgYW5jZXN0b3JzLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50LFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ0FuY2VzdG9ycycgPyBpc1RvcExheWVyKGVsZW1lbnQpID8gW10gOiBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMoZWxlbWVudCwgdGhpcy5fYykgOiBbXS5jb25jYXQoYm91bmRhcnkpO1xuICBjb25zdCBjbGlwcGluZ0FuY2VzdG9ycyA9IFsuLi5lbGVtZW50Q2xpcHBpbmdBbmNlc3RvcnMsIHJvb3RCb3VuZGFyeV07XG4gIGNvbnN0IGZpcnN0Q2xpcHBpbmdBbmNlc3RvciA9IGNsaXBwaW5nQW5jZXN0b3JzWzBdO1xuICBjb25zdCBjbGlwcGluZ1JlY3QgPSBjbGlwcGluZ0FuY2VzdG9ycy5yZWR1Y2UoKGFjY1JlY3QsIGNsaXBwaW5nQW5jZXN0b3IpID0+IHtcbiAgICBjb25zdCByZWN0ID0gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgICBhY2NSZWN0LnRvcCA9IG1heChyZWN0LnRvcCwgYWNjUmVjdC50b3ApO1xuICAgIGFjY1JlY3QucmlnaHQgPSBtaW4ocmVjdC5yaWdodCwgYWNjUmVjdC5yaWdodCk7XG4gICAgYWNjUmVjdC5ib3R0b20gPSBtaW4ocmVjdC5ib3R0b20sIGFjY1JlY3QuYm90dG9tKTtcbiAgICBhY2NSZWN0LmxlZnQgPSBtYXgocmVjdC5sZWZ0LCBhY2NSZWN0LmxlZnQpO1xuICAgIHJldHVybiBhY2NSZWN0O1xuICB9LCBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgZmlyc3RDbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSkpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiBjbGlwcGluZ1JlY3QucmlnaHQgLSBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICBoZWlnaHQ6IGNsaXBwaW5nUmVjdC5ib3R0b20gLSBjbGlwcGluZ1JlY3QudG9wLFxuICAgIHg6IGNsaXBwaW5nUmVjdC5sZWZ0LFxuICAgIHk6IGNsaXBwaW5nUmVjdC50b3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IGdldENzc0RpbWVuc2lvbnMoZWxlbWVudCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGVsZW1lbnQsIG9mZnNldFBhcmVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBpc0ZpeGVkID0gc3RyYXRlZ3kgPT09ICdmaXhlZCc7XG4gIGNvbnN0IHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgdHJ1ZSwgaXNGaXhlZCwgb2Zmc2V0UGFyZW50KTtcbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCBpc092ZXJmbG93RWxlbWVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCkge1xuICAgICAgY29uc3Qgb2Zmc2V0UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfSBlbHNlIGlmIChkb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIC8vIElmIHRoZSA8Ym9keT4gc2Nyb2xsYmFyIGFwcGVhcnMgb24gdGhlIGxlZnQgKGUuZy4gUlRMIHN5c3RlbXMpLiBVc2VcbiAgICAgIC8vIEZpcmVmb3ggd2l0aCBsYXlvdXQuc2Nyb2xsYmFyLnNpZGUgPSAzIGluIGFib3V0OmNvbmZpZyB0byB0ZXN0IHRoaXMuXG4gICAgICBvZmZzZXRzLnggPSBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGNvbnN0IHggPSByZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIG9mZnNldHMueCAtIGh0bWxPZmZzZXQueDtcbiAgY29uc3QgeSA9IHJlY3QudG9wICsgc2Nyb2xsLnNjcm9sbFRvcCAtIG9mZnNldHMueSAtIGh0bWxPZmZzZXQueTtcbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc1N0YXRpY1Bvc2l0aW9uZWQoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYyc7XG59XG5cbmZ1bmN0aW9uIGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpIHtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAocG9seWZpbGwpIHtcbiAgICByZXR1cm4gcG9seWZpbGwoZWxlbWVudCk7XG4gIH1cbiAgbGV0IHJhd09mZnNldFBhcmVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50O1xuXG4gIC8vIEZpcmVmb3ggcmV0dXJucyB0aGUgPGh0bWw+IGVsZW1lbnQgYXMgdGhlIG9mZnNldFBhcmVudCBpZiBpdCdzIG5vbi1zdGF0aWMsXG4gIC8vIHdoaWxlIENocm9tZSBhbmQgU2FmYXJpIHJldHVybiB0aGUgPGJvZHk+IGVsZW1lbnQuIFRoZSA8Ym9keT4gZWxlbWVudCBtdXN0XG4gIC8vIGJlIHVzZWQgdG8gcGVyZm9ybSB0aGUgY29ycmVjdCBjYWxjdWxhdGlvbnMgZXZlbiBpZiB0aGUgPGh0bWw+IGVsZW1lbnQgaXNcbiAgLy8gbm9uLXN0YXRpYy5cbiAgaWYgKGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSA9PT0gcmF3T2Zmc2V0UGFyZW50KSB7XG4gICAgcmF3T2Zmc2V0UGFyZW50ID0gcmF3T2Zmc2V0UGFyZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuICByZXR1cm4gcmF3T2Zmc2V0UGFyZW50O1xufVxuXG4vLyBHZXRzIHRoZSBjbG9zZXN0IGFuY2VzdG9yIHBvc2l0aW9uZWQgZWxlbWVudC4gSGFuZGxlcyBzb21lIGVkZ2UgY2FzZXMsXG4vLyBzdWNoIGFzIHRhYmxlIGFuY2VzdG9ycyBhbmQgY3Jvc3MgYnJvd3NlciBidWdzLlxuZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKGlzVG9wTGF5ZXIoZWxlbWVudCkpIHtcbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIGxldCBzdmdPZmZzZXRQYXJlbnQgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICAgIHdoaWxlIChzdmdPZmZzZXRQYXJlbnQgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShzdmdPZmZzZXRQYXJlbnQpKSB7XG4gICAgICBpZiAoaXNFbGVtZW50KHN2Z09mZnNldFBhcmVudCkgJiYgIWlzU3RhdGljUG9zaXRpb25lZChzdmdPZmZzZXRQYXJlbnQpKSB7XG4gICAgICAgIHJldHVybiBzdmdPZmZzZXRQYXJlbnQ7XG4gICAgICB9XG4gICAgICBzdmdPZmZzZXRQYXJlbnQgPSBnZXRQYXJlbnROb2RlKHN2Z09mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIHJldHVybiB3aW47XG4gIH1cbiAgbGV0IG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpO1xuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgaXNTdGF0aWNQb3NpdGlvbmVkKG9mZnNldFBhcmVudCkpIHtcbiAgICBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KG9mZnNldFBhcmVudCwgcG9seWZpbGwpO1xuICB9XG4gIGlmIChvZmZzZXRQYXJlbnQgJiYgaXNMYXN0VHJhdmVyc2FibGVOb2RlKG9mZnNldFBhcmVudCkgJiYgaXNTdGF0aWNQb3NpdGlvbmVkKG9mZnNldFBhcmVudCkgJiYgIWlzQ29udGFpbmluZ0Jsb2NrKG9mZnNldFBhcmVudCkpIHtcbiAgICByZXR1cm4gd2luO1xuICB9XG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbjtcbn1cblxuY29uc3QgZ2V0RWxlbWVudFJlY3RzID0gYXN5bmMgZnVuY3Rpb24gKGRhdGEpIHtcbiAgY29uc3QgZ2V0T2Zmc2V0UGFyZW50Rm4gPSB0aGlzLmdldE9mZnNldFBhcmVudCB8fCBnZXRPZmZzZXRQYXJlbnQ7XG4gIGNvbnN0IGdldERpbWVuc2lvbnNGbiA9IHRoaXMuZ2V0RGltZW5zaW9ucztcbiAgY29uc3QgZmxvYXRpbmdEaW1lbnNpb25zID0gYXdhaXQgZ2V0RGltZW5zaW9uc0ZuKGRhdGEuZmxvYXRpbmcpO1xuICByZXR1cm4ge1xuICAgIHJlZmVyZW5jZTogZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoZGF0YS5yZWZlcmVuY2UsIGF3YWl0IGdldE9mZnNldFBhcmVudEZuKGRhdGEuZmxvYXRpbmcpLCBkYXRhLnN0cmF0ZWd5KSxcbiAgICBmbG9hdGluZzoge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICB3aWR0aDogZmxvYXRpbmdEaW1lbnNpb25zLndpZHRoLFxuICAgICAgaGVpZ2h0OiBmbG9hdGluZ0RpbWVuc2lvbnMuaGVpZ2h0XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gaXNSVEwoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5kaXJlY3Rpb24gPT09ICdydGwnO1xufVxuXG5jb25zdCBwbGF0Zm9ybSA9IHtcbiAgY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QsXG4gIGdldERvY3VtZW50RWxlbWVudCxcbiAgZ2V0Q2xpcHBpbmdSZWN0LFxuICBnZXRPZmZzZXRQYXJlbnQsXG4gIGdldEVsZW1lbnRSZWN0cyxcbiAgZ2V0Q2xpZW50UmVjdHMsXG4gIGdldERpbWVuc2lvbnMsXG4gIGdldFNjYWxlLFxuICBpc0VsZW1lbnQsXG4gIGlzUlRMXG59O1xuXG4vLyBodHRwczovL3NhbXRob3IuYXUvMjAyMS9vYnNlcnZpbmctZG9tL1xuZnVuY3Rpb24gb2JzZXJ2ZU1vdmUoZWxlbWVudCwgb25Nb3ZlKSB7XG4gIGxldCBpbyA9IG51bGw7XG4gIGxldCB0aW1lb3V0SWQ7XG4gIGNvbnN0IHJvb3QgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgdmFyIF9pbztcbiAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAoX2lvID0gaW8pID09IG51bGwgfHwgX2lvLmRpc2Nvbm5lY3QoKTtcbiAgICBpbyA9IG51bGw7XG4gIH1cbiAgZnVuY3Rpb24gcmVmcmVzaChza2lwLCB0aHJlc2hvbGQpIHtcbiAgICBpZiAoc2tpcCA9PT0gdm9pZCAwKSB7XG4gICAgICBza2lwID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aHJlc2hvbGQgPT09IHZvaWQgMCkge1xuICAgICAgdGhyZXNob2xkID0gMTtcbiAgICB9XG4gICAgY2xlYW51cCgpO1xuICAgIGNvbnN0IHtcbiAgICAgIGxlZnQsXG4gICAgICB0b3AsXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodFxuICAgIH0gPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGlmICghc2tpcCkge1xuICAgICAgb25Nb3ZlKCk7XG4gICAgfVxuICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpbnNldFRvcCA9IGZsb29yKHRvcCk7XG4gICAgY29uc3QgaW5zZXRSaWdodCA9IGZsb29yKHJvb3QuY2xpZW50V2lkdGggLSAobGVmdCArIHdpZHRoKSk7XG4gICAgY29uc3QgaW5zZXRCb3R0b20gPSBmbG9vcihyb290LmNsaWVudEhlaWdodCAtICh0b3AgKyBoZWlnaHQpKTtcbiAgICBjb25zdCBpbnNldExlZnQgPSBmbG9vcihsZWZ0KTtcbiAgICBjb25zdCByb290TWFyZ2luID0gLWluc2V0VG9wICsgXCJweCBcIiArIC1pbnNldFJpZ2h0ICsgXCJweCBcIiArIC1pbnNldEJvdHRvbSArIFwicHggXCIgKyAtaW5zZXRMZWZ0ICsgXCJweFwiO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICByb290TWFyZ2luLFxuICAgICAgdGhyZXNob2xkOiBtYXgoMCwgbWluKDEsIHRocmVzaG9sZCkpIHx8IDFcbiAgICB9O1xuICAgIGxldCBpc0ZpcnN0VXBkYXRlID0gdHJ1ZTtcbiAgICBmdW5jdGlvbiBoYW5kbGVPYnNlcnZlKGVudHJpZXMpIHtcbiAgICAgIGNvbnN0IHJhdGlvID0gZW50cmllc1swXS5pbnRlcnNlY3Rpb25SYXRpbztcbiAgICAgIGlmIChyYXRpbyAhPT0gdGhyZXNob2xkKSB7XG4gICAgICAgIGlmICghaXNGaXJzdFVwZGF0ZSkge1xuICAgICAgICAgIHJldHVybiByZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyYXRpbykge1xuICAgICAgICAgIC8vIElmIHRoZSByZWZlcmVuY2UgaXMgY2xpcHBlZCwgdGhlIHJhdGlvIGlzIDAuIFRocm90dGxlIHRoZSByZWZyZXNoXG4gICAgICAgICAgLy8gdG8gcHJldmVudCBhbiBpbmZpbml0ZSBsb29wIG9mIHVwZGF0ZXMuXG4gICAgICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICByZWZyZXNoKGZhbHNlLCAxZS03KTtcbiAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWZyZXNoKGZhbHNlLCByYXRpbyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlzRmlyc3RVcGRhdGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBPbGRlciBicm93c2VycyBkb24ndCBzdXBwb3J0IGEgYGRvY3VtZW50YCBhcyB0aGUgcm9vdCBhbmQgd2lsbCB0aHJvdyBhblxuICAgIC8vIGVycm9yLlxuICAgIHRyeSB7XG4gICAgICBpbyA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVPYnNlcnZlLCB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIC8vIEhhbmRsZSA8aWZyYW1lPnNcbiAgICAgICAgcm9vdDogcm9vdC5vd25lckRvY3VtZW50XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpbyA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVPYnNlcnZlLCBvcHRpb25zKTtcbiAgICB9XG4gICAgaW8ub2JzZXJ2ZShlbGVtZW50KTtcbiAgfVxuICByZWZyZXNoKHRydWUpO1xuICByZXR1cm4gY2xlYW51cDtcbn1cblxuLyoqXG4gKiBBdXRvbWF0aWNhbGx5IHVwZGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHdoZW4gbmVjZXNzYXJ5LlxuICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXMgbW91bnRlZCBvbiB0aGUgRE9NIG9yXG4gKiB2aXNpYmxlIG9uIHRoZSBzY3JlZW4uXG4gKiBAcmV0dXJucyBjbGVhbnVwIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGJlIGludm9rZWQgd2hlbiB0aGUgZmxvYXRpbmcgZWxlbWVudCBpc1xuICogcmVtb3ZlZCBmcm9tIHRoZSBET00gb3IgaGlkZGVuIGZyb20gdGhlIHNjcmVlbi5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvVXBkYXRlXG4gKi9cbmZ1bmN0aW9uIGF1dG9VcGRhdGUocmVmZXJlbmNlLCBmbG9hdGluZywgdXBkYXRlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIGFuY2VzdG9yU2Nyb2xsID0gdHJ1ZSxcbiAgICBhbmNlc3RvclJlc2l6ZSA9IHRydWUsXG4gICAgZWxlbWVudFJlc2l6ZSA9IHR5cGVvZiBSZXNpemVPYnNlcnZlciA9PT0gJ2Z1bmN0aW9uJyxcbiAgICBsYXlvdXRTaGlmdCA9IHR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlciA9PT0gJ2Z1bmN0aW9uJyxcbiAgICBhbmltYXRpb25GcmFtZSA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCByZWZlcmVuY2VFbCA9IHVud3JhcEVsZW1lbnQocmVmZXJlbmNlKTtcbiAgY29uc3QgYW5jZXN0b3JzID0gYW5jZXN0b3JTY3JvbGwgfHwgYW5jZXN0b3JSZXNpemUgPyBbLi4uKHJlZmVyZW5jZUVsID8gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMocmVmZXJlbmNlRWwpIDogW10pLCAuLi5nZXRPdmVyZmxvd0FuY2VzdG9ycyhmbG9hdGluZyldIDogW107XG4gIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICBhbmNlc3RvclNjcm9sbCAmJiBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUsIHtcbiAgICAgIHBhc3NpdmU6IHRydWVcbiAgICB9KTtcbiAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICB9KTtcbiAgY29uc3QgY2xlYW51cElvID0gcmVmZXJlbmNlRWwgJiYgbGF5b3V0U2hpZnQgPyBvYnNlcnZlTW92ZShyZWZlcmVuY2VFbCwgdXBkYXRlKSA6IG51bGw7XG4gIGxldCByZW9ic2VydmVGcmFtZSA9IC0xO1xuICBsZXQgcmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICBpZiAoZWxlbWVudFJlc2l6ZSkge1xuICAgIHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKF9yZWYgPT4ge1xuICAgICAgbGV0IFtmaXJzdEVudHJ5XSA9IF9yZWY7XG4gICAgICBpZiAoZmlyc3RFbnRyeSAmJiBmaXJzdEVudHJ5LnRhcmdldCA9PT0gcmVmZXJlbmNlRWwgJiYgcmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgLy8gUHJldmVudCB1cGRhdGUgbG9vcHMgd2hlbiB1c2luZyB0aGUgYHNpemVgIG1pZGRsZXdhcmUuXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMTc0MFxuICAgICAgICByZXNpemVPYnNlcnZlci51bm9ic2VydmUoZmxvYXRpbmcpO1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyZW9ic2VydmVGcmFtZSk7XG4gICAgICAgIHJlb2JzZXJ2ZUZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICB2YXIgX3Jlc2l6ZU9ic2VydmVyO1xuICAgICAgICAgIChfcmVzaXplT2JzZXJ2ZXIgPSByZXNpemVPYnNlcnZlcikgPT0gbnVsbCB8fCBfcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShmbG9hdGluZyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdXBkYXRlKCk7XG4gICAgfSk7XG4gICAgaWYgKHJlZmVyZW5jZUVsICYmICFhbmltYXRpb25GcmFtZSkge1xuICAgICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShyZWZlcmVuY2VFbCk7XG4gICAgfVxuICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZmxvYXRpbmcpO1xuICB9XG4gIGxldCBmcmFtZUlkO1xuICBsZXQgcHJldlJlZlJlY3QgPSBhbmltYXRpb25GcmFtZSA/IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpIDogbnVsbDtcbiAgaWYgKGFuaW1hdGlvbkZyYW1lKSB7XG4gICAgZnJhbWVMb29wKCk7XG4gIH1cbiAgZnVuY3Rpb24gZnJhbWVMb29wKCkge1xuICAgIGNvbnN0IG5leHRSZWZSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHJlZmVyZW5jZSk7XG4gICAgaWYgKHByZXZSZWZSZWN0ICYmIChuZXh0UmVmUmVjdC54ICE9PSBwcmV2UmVmUmVjdC54IHx8IG5leHRSZWZSZWN0LnkgIT09IHByZXZSZWZSZWN0LnkgfHwgbmV4dFJlZlJlY3Qud2lkdGggIT09IHByZXZSZWZSZWN0LndpZHRoIHx8IG5leHRSZWZSZWN0LmhlaWdodCAhPT0gcHJldlJlZlJlY3QuaGVpZ2h0KSkge1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICAgIHByZXZSZWZSZWN0ID0gbmV4dFJlZlJlY3Q7XG4gICAgZnJhbWVJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmcmFtZUxvb3ApO1xuICB9XG4gIHVwZGF0ZSgpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIHZhciBfcmVzaXplT2JzZXJ2ZXIyO1xuICAgIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSk7XG4gICAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICAgIH0pO1xuICAgIGNsZWFudXBJbyA9PSBudWxsIHx8IGNsZWFudXBJbygpO1xuICAgIChfcmVzaXplT2JzZXJ2ZXIyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyMi5kaXNjb25uZWN0KCk7XG4gICAgcmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICAgIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWVJZCk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHdpdGggYW4gb2JqZWN0IG9mIG92ZXJmbG93IHNpZGUgb2Zmc2V0cyB0aGF0IGRldGVybWluZSBob3cgbXVjaCB0aGVcbiAqIGVsZW1lbnQgaXMgb3ZlcmZsb3dpbmcgYSBnaXZlbiBjbGlwcGluZyBib3VuZGFyeSBvbiBlYWNoIHNpZGUuXG4gKiAtIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGJvdW5kYXJ5IGJ5IHRoYXQgbnVtYmVyIG9mIHBpeGVsc1xuICogLSBuZWdhdGl2ZSA9IGhvdyBtYW55IHBpeGVscyBsZWZ0IGJlZm9yZSBpdCB3aWxsIG92ZXJmbG93XG4gKiAtIDAgPSBsaWVzIGZsdXNoIHdpdGggdGhlIGJvdW5kYXJ5XG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZGV0ZWN0T3ZlcmZsb3dcbiAqL1xuY29uc3QgZGV0ZWN0T3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyQxO1xuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSBvZmZzZXQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBhdXRvUGxhY2VtZW50JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IHNoaWZ0JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZmxpcCQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSBzaXplJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gaGlkZSQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IGFycm93JDE7XG5cbi8qKlxuICogUHJvdmlkZXMgaW1wcm92ZWQgcG9zaXRpb25pbmcgZm9yIGlubGluZSByZWZlcmVuY2UgZWxlbWVudHMgdGhhdCBjYW4gc3BhblxuICogb3ZlciBtdWx0aXBsZSBsaW5lcywgc3VjaCBhcyBoeXBlcmxpbmtzIG9yIHJhbmdlIHNlbGVjdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaW5saW5lXG4gKi9cbmNvbnN0IGlubGluZSA9IGlubGluZSQxO1xuXG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gbGltaXRTaGlmdCQxO1xuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSBnaXZlbiByZWZlcmVuY2UgZWxlbWVudC5cbiAqL1xuY29uc3QgY29tcHV0ZVBvc2l0aW9uID0gKHJlZmVyZW5jZSwgZmxvYXRpbmcsIG9wdGlvbnMpID0+IHtcbiAgLy8gVGhpcyBjYWNoZXMgdGhlIGV4cGVuc2l2ZSBgZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzYCBmdW5jdGlvbiBzbyB0aGF0XG4gIC8vIG11bHRpcGxlIGxpZmVjeWNsZSByZXNldHMgcmUtdXNlIHRoZSBzYW1lIHJlc3VsdC4gSXQgb25seSBsaXZlcyBmb3IgYVxuICAvLyBzaW5nbGUgY2FsbC4gSWYgb3RoZXIgZnVuY3Rpb25zIGJlY29tZSBleHBlbnNpdmUsIHdlIGNhbiBhZGQgdGhlbSBhcyB3ZWxsLlxuICBjb25zdCBjYWNoZSA9IG5ldyBNYXAoKTtcbiAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IHtcbiAgICBwbGF0Zm9ybSxcbiAgICAuLi5vcHRpb25zXG4gIH07XG4gIGNvbnN0IHBsYXRmb3JtV2l0aENhY2hlID0ge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMucGxhdGZvcm0sXG4gICAgX2M6IGNhY2hlXG4gIH07XG4gIHJldHVybiBjb21wdXRlUG9zaXRpb24kMShyZWZlcmVuY2UsIGZsb2F0aW5nLCB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucyxcbiAgICBwbGF0Zm9ybTogcGxhdGZvcm1XaXRoQ2FjaGVcbiAgfSk7XG59O1xuXG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHBsYXRmb3JtLCBzaGlmdCwgc2l6ZSB9O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgX29iamVjdFNwcmVhZCA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0U3ByZWFkMicpO1xudmFyIF9leHRlbmRzID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzJyk7XG52YXIgcmVhY3QgPSByZXF1aXJlKCdAZW1vdGlvbi9yZWFjdCcpO1xudmFyIF9zbGljZWRUb0FycmF5ID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5Jyk7XG52YXIgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllcycpO1xudmFyIF90eXBlb2YgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZicpO1xudmFyIF90YWdnZWRUZW1wbGF0ZUxpdGVyYWwgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbCcpO1xudmFyIF9kZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHknKTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG52YXIgcmVhY3REb20gPSByZXF1aXJlKCdyZWFjdC1kb20nKTtcbnZhciBkb20gPSByZXF1aXJlKCdAZmxvYXRpbmctdWkvZG9tJyk7XG52YXIgdXNlTGF5b3V0RWZmZWN0ID0gcmVxdWlyZSgndXNlLWlzb21vcnBoaWMtbGF5b3V0LWVmZmVjdCcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcERlZmF1bHQgKGUpIHsgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHsgJ2RlZmF1bHQnOiBlIH07IH1cblxudmFyIHVzZUxheW91dEVmZmVjdF9fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9faW50ZXJvcERlZmF1bHQodXNlTGF5b3V0RWZmZWN0KTtcblxudmFyIF9leGNsdWRlZCQ0ID0gW1wiY2xhc3NOYW1lXCIsIFwiY2xlYXJWYWx1ZVwiLCBcImN4XCIsIFwiZ2V0U3R5bGVzXCIsIFwiZ2V0Q2xhc3NOYW1lc1wiLCBcImdldFZhbHVlXCIsIFwiaGFzVmFsdWVcIiwgXCJpc011bHRpXCIsIFwiaXNSdGxcIiwgXCJvcHRpb25zXCIsIFwic2VsZWN0T3B0aW9uXCIsIFwic2VsZWN0UHJvcHNcIiwgXCJzZXRWYWx1ZVwiLCBcInRoZW1lXCJdO1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBOTyBPUFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBub29wID0gZnVuY3Rpb24gbm9vcCgpIHt9O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENsYXNzIE5hbWUgUHJlZml4ZXJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgY29tcG9uZW50IHN0YXRlIGZvciBzdHlsaW5nIHdpdGggY2xhc3MgbmFtZXMuXG5cbiBFeHBlY3RzIGFuIGFycmF5IG9mIHN0cmluZ3MgT1IgYSBzdHJpbmcvb2JqZWN0IHBhaXI6XG4gLSBjbGFzc05hbWUoWydjb21wJywgJ2NvbXAtYXJnJywgJ2NvbXAtYXJnLTInXSlcbiAgIEByZXR1cm5zICdyZWFjdC1zZWxlY3RfX2NvbXAgcmVhY3Qtc2VsZWN0X19jb21wLWFyZyByZWFjdC1zZWxlY3RfX2NvbXAtYXJnLTInXG4gLSBjbGFzc05hbWUoJ2NvbXAnLCB7IHNvbWU6IHRydWUsIHN0YXRlOiBmYWxzZSB9KVxuICAgQHJldHVybnMgJ3JlYWN0LXNlbGVjdF9fY29tcCByZWFjdC1zZWxlY3RfX2NvbXAtLXNvbWUnXG4qL1xuZnVuY3Rpb24gYXBwbHlQcmVmaXhUb05hbWUocHJlZml4LCBuYW1lKSB7XG4gIGlmICghbmFtZSkge1xuICAgIHJldHVybiBwcmVmaXg7XG4gIH0gZWxzZSBpZiAobmFtZVswXSA9PT0gJy0nKSB7XG4gICAgcmV0dXJuIHByZWZpeCArIG5hbWU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHByZWZpeCArICdfXycgKyBuYW1lO1xuICB9XG59XG5mdW5jdGlvbiBjbGFzc05hbWVzKHByZWZpeCwgc3RhdGUpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGNsYXNzTmFtZUxpc3QgPSBuZXcgQXJyYXkoX2xlbiA+IDIgPyBfbGVuIC0gMiA6IDApLCBfa2V5ID0gMjsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGNsYXNzTmFtZUxpc3RbX2tleSAtIDJdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG4gIHZhciBhcnIgPSBbXS5jb25jYXQoY2xhc3NOYW1lTGlzdCk7XG4gIGlmIChzdGF0ZSAmJiBwcmVmaXgpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gc3RhdGUpIHtcbiAgICAgIGlmIChzdGF0ZS5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIHN0YXRlW2tleV0pIHtcbiAgICAgICAgYXJyLnB1c2goXCJcIi5jb25jYXQoYXBwbHlQcmVmaXhUb05hbWUocHJlZml4LCBrZXkpKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBhcnIuZmlsdGVyKGZ1bmN0aW9uIChpKSB7XG4gICAgcmV0dXJuIGk7XG4gIH0pLm1hcChmdW5jdGlvbiAoaSkge1xuICAgIHJldHVybiBTdHJpbmcoaSkudHJpbSgpO1xuICB9KS5qb2luKCcgJyk7XG59XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENsZWFuIFZhbHVlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGNsZWFuVmFsdWUgPSBmdW5jdGlvbiBjbGVhblZhbHVlKHZhbHVlKSB7XG4gIGlmIChpc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLmZpbHRlcihCb29sZWFuKTtcbiAgaWYgKF90eXBlb2YodmFsdWUpID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkgcmV0dXJuIFt2YWx1ZV07XG4gIHJldHVybiBbXTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ2xlYW4gQ29tbW9uIFByb3BzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGNsZWFuQ29tbW9uUHJvcHMgPSBmdW5jdGlvbiBjbGVhbkNvbW1vblByb3BzKHByb3BzKSB7XG4gIC8vY2xhc3NOYW1lXG4gIHByb3BzLmNsYXNzTmFtZTtcbiAgICBwcm9wcy5jbGVhclZhbHVlO1xuICAgIHByb3BzLmN4O1xuICAgIHByb3BzLmdldFN0eWxlcztcbiAgICBwcm9wcy5nZXRDbGFzc05hbWVzO1xuICAgIHByb3BzLmdldFZhbHVlO1xuICAgIHByb3BzLmhhc1ZhbHVlO1xuICAgIHByb3BzLmlzTXVsdGk7XG4gICAgcHJvcHMuaXNSdGw7XG4gICAgcHJvcHMub3B0aW9ucztcbiAgICBwcm9wcy5zZWxlY3RPcHRpb247XG4gICAgcHJvcHMuc2VsZWN0UHJvcHM7XG4gICAgcHJvcHMuc2V0VmFsdWU7XG4gICAgcHJvcHMudGhlbWU7XG4gICAgdmFyIGlubmVyUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZCQ0KTtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe30sIGlubmVyUHJvcHMpO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHZXQgU3R5bGUgUHJvcHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgZ2V0U3R5bGVQcm9wcyA9IGZ1bmN0aW9uIGdldFN0eWxlUHJvcHMocHJvcHMsIG5hbWUsIGNsYXNzTmFtZXNTdGF0ZSkge1xuICB2YXIgY3ggPSBwcm9wcy5jeCxcbiAgICBnZXRTdHlsZXMgPSBwcm9wcy5nZXRTdHlsZXMsXG4gICAgZ2V0Q2xhc3NOYW1lcyA9IHByb3BzLmdldENsYXNzTmFtZXMsXG4gICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICByZXR1cm4ge1xuICAgIGNzczogZ2V0U3R5bGVzKG5hbWUsIHByb3BzKSxcbiAgICBjbGFzc05hbWU6IGN4KGNsYXNzTmFtZXNTdGF0ZSAhPT0gbnVsbCAmJiBjbGFzc05hbWVzU3RhdGUgIT09IHZvaWQgMCA/IGNsYXNzTmFtZXNTdGF0ZSA6IHt9LCBnZXRDbGFzc05hbWVzKG5hbWUsIHByb3BzKSwgY2xhc3NOYW1lKVxuICB9O1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIYW5kbGUgSW5wdXQgQ2hhbmdlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZnVuY3Rpb24gaGFuZGxlSW5wdXRDaGFuZ2UoaW5wdXRWYWx1ZSwgYWN0aW9uTWV0YSwgb25JbnB1dENoYW5nZSkge1xuICBpZiAob25JbnB1dENoYW5nZSkge1xuICAgIHZhciBfbmV3VmFsdWUgPSBvbklucHV0Q2hhbmdlKGlucHV0VmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgIGlmICh0eXBlb2YgX25ld1ZhbHVlID09PSAnc3RyaW5nJykgcmV0dXJuIF9uZXdWYWx1ZTtcbiAgfVxuICByZXR1cm4gaW5wdXRWYWx1ZTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY3JvbGwgSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmZ1bmN0aW9uIGlzRG9jdW1lbnRFbGVtZW50KGVsKSB7XG4gIHJldHVybiBbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBkb2N1bWVudC5ib2R5LCB3aW5kb3ddLmluZGV4T2YoZWwpID4gLTE7XG59XG5cbi8vIE5vcm1hbGl6ZWQgU2Nyb2xsIFRvcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZWRIZWlnaHQoZWwpIHtcbiAgaWYgKGlzRG9jdW1lbnRFbGVtZW50KGVsKSkge1xuICAgIHJldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gIH1cbiAgcmV0dXJuIGVsLmNsaWVudEhlaWdodDtcbn1cblxuLy8gTm9ybWFsaXplZCBzY3JvbGxUbyAmIHNjcm9sbFRvcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIGdldFNjcm9sbFRvcChlbCkge1xuICBpZiAoaXNEb2N1bWVudEVsZW1lbnQoZWwpKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgfVxuICByZXR1cm4gZWwuc2Nyb2xsVG9wO1xufVxuZnVuY3Rpb24gc2Nyb2xsVG8oZWwsIHRvcCkge1xuICAvLyB3aXRoIGEgc2Nyb2xsIGRpc3RhbmNlLCB3ZSBwZXJmb3JtIHNjcm9sbCBvbiB0aGUgZWxlbWVudFxuICBpZiAoaXNEb2N1bWVudEVsZW1lbnQoZWwpKSB7XG4gICAgd2luZG93LnNjcm9sbFRvKDAsIHRvcCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGVsLnNjcm9sbFRvcCA9IHRvcDtcbn1cblxuLy8gR2V0IFNjcm9sbCBQYXJlbnRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQoZWxlbWVudCkge1xuICB2YXIgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICB2YXIgZXhjbHVkZVN0YXRpY1BhcmVudCA9IHN0eWxlLnBvc2l0aW9uID09PSAnYWJzb2x1dGUnO1xuICB2YXIgb3ZlcmZsb3dSeCA9IC8oYXV0b3xzY3JvbGwpLztcbiAgaWYgKHN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnKSByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICBmb3IgKHZhciBwYXJlbnQgPSBlbGVtZW50OyBwYXJlbnQgPSBwYXJlbnQucGFyZW50RWxlbWVudDspIHtcbiAgICBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUocGFyZW50KTtcbiAgICBpZiAoZXhjbHVkZVN0YXRpY1BhcmVudCAmJiBzdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAob3ZlcmZsb3dSeC50ZXN0KHN0eWxlLm92ZXJmbG93ICsgc3R5bGUub3ZlcmZsb3dZICsgc3R5bGUub3ZlcmZsb3dYKSkge1xuICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbn1cblxuLy8gQW5pbWF0ZWQgU2Nyb2xsIFRvXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gIEBwYXJhbSB0OiB0aW1lIChlbGFwc2VkKVxuICBAcGFyYW0gYjogaW5pdGlhbCB2YWx1ZVxuICBAcGFyYW0gYzogYW1vdW50IG9mIGNoYW5nZVxuICBAcGFyYW0gZDogZHVyYXRpb25cbiovXG5mdW5jdGlvbiBlYXNlT3V0Q3ViaWModCwgYiwgYywgZCkge1xuICByZXR1cm4gYyAqICgodCA9IHQgLyBkIC0gMSkgKiB0ICogdCArIDEpICsgYjtcbn1cbmZ1bmN0aW9uIGFuaW1hdGVkU2Nyb2xsVG8oZWxlbWVudCwgdG8pIHtcbiAgdmFyIGR1cmF0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiAyMDA7XG4gIHZhciBjYWxsYmFjayA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogbm9vcDtcbiAgdmFyIHN0YXJ0ID0gZ2V0U2Nyb2xsVG9wKGVsZW1lbnQpO1xuICB2YXIgY2hhbmdlID0gdG8gLSBzdGFydDtcbiAgdmFyIGluY3JlbWVudCA9IDEwO1xuICB2YXIgY3VycmVudFRpbWUgPSAwO1xuICBmdW5jdGlvbiBhbmltYXRlU2Nyb2xsKCkge1xuICAgIGN1cnJlbnRUaW1lICs9IGluY3JlbWVudDtcbiAgICB2YXIgdmFsID0gZWFzZU91dEN1YmljKGN1cnJlbnRUaW1lLCBzdGFydCwgY2hhbmdlLCBkdXJhdGlvbik7XG4gICAgc2Nyb2xsVG8oZWxlbWVudCwgdmFsKTtcbiAgICBpZiAoY3VycmVudFRpbWUgPCBkdXJhdGlvbikge1xuICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlU2Nyb2xsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbGJhY2soZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGFuaW1hdGVTY3JvbGwoKTtcbn1cblxuLy8gU2Nyb2xsIEludG8gVmlld1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIHNjcm9sbEludG9WaWV3KG1lbnVFbCwgZm9jdXNlZEVsKSB7XG4gIHZhciBtZW51UmVjdCA9IG1lbnVFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIGZvY3VzZWRSZWN0ID0gZm9jdXNlZEVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB2YXIgb3ZlclNjcm9sbCA9IGZvY3VzZWRFbC5vZmZzZXRIZWlnaHQgLyAzO1xuICBpZiAoZm9jdXNlZFJlY3QuYm90dG9tICsgb3ZlclNjcm9sbCA+IG1lbnVSZWN0LmJvdHRvbSkge1xuICAgIHNjcm9sbFRvKG1lbnVFbCwgTWF0aC5taW4oZm9jdXNlZEVsLm9mZnNldFRvcCArIGZvY3VzZWRFbC5jbGllbnRIZWlnaHQgLSBtZW51RWwub2Zmc2V0SGVpZ2h0ICsgb3ZlclNjcm9sbCwgbWVudUVsLnNjcm9sbEhlaWdodCkpO1xuICB9IGVsc2UgaWYgKGZvY3VzZWRSZWN0LnRvcCAtIG92ZXJTY3JvbGwgPCBtZW51UmVjdC50b3ApIHtcbiAgICBzY3JvbGxUbyhtZW51RWwsIE1hdGgubWF4KGZvY3VzZWRFbC5vZmZzZXRUb3AgLSBvdmVyU2Nyb2xsLCAwKSk7XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHZXQgYm91bmRpbmcgY2xpZW50IG9iamVjdFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIGNhbm5vdCBnZXQga2V5cyB1c2luZyBhcnJheSBub3RhdGlvbiB3aXRoIERPTVJlY3RcbmZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50T2JqKGVsZW1lbnQpIHtcbiAgdmFyIHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICByZXR1cm4ge1xuICAgIGJvdHRvbTogcmVjdC5ib3R0b20sXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodCxcbiAgICBsZWZ0OiByZWN0LmxlZnQsXG4gICAgcmlnaHQ6IHJlY3QucmlnaHQsXG4gICAgdG9wOiByZWN0LnRvcCxcbiAgICB3aWR0aDogcmVjdC53aWR0aFxuICB9O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRvdWNoIENhcGFiaWxpdHkgRGV0ZWN0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBpc1RvdWNoQ2FwYWJsZSgpIHtcbiAgdHJ5IHtcbiAgICBkb2N1bWVudC5jcmVhdGVFdmVudCgnVG91Y2hFdmVudCcpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTW9iaWxlIERldmljZSBEZXRlY3RvclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmZ1bmN0aW9uIGlzTW9iaWxlRGV2aWNlKCkge1xuICB0cnkge1xuICAgIHJldHVybiAvQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8SUVNb2JpbGV8T3BlcmEgTWluaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQYXNzaXZlIEV2ZW50IERldGVjdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3JhZmdyYXBoL2RldGVjdC1pdC9ibG9iL21haW4vc3JjL2luZGV4LnRzI0wxOS1MMzZcbnZhciBwYXNzaXZlT3B0aW9uQWNjZXNzZWQgPSBmYWxzZTtcbnZhciBvcHRpb25zID0ge1xuICBnZXQgcGFzc2l2ZSgpIHtcbiAgICByZXR1cm4gcGFzc2l2ZU9wdGlvbkFjY2Vzc2VkID0gdHJ1ZTtcbiAgfVxufTtcbi8vIGNoZWNrIGZvciBTU1JcbnZhciB3ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB7fTtcbmlmICh3LmFkZEV2ZW50TGlzdGVuZXIgJiYgdy5yZW1vdmVFdmVudExpc3RlbmVyKSB7XG4gIHcuYWRkRXZlbnRMaXN0ZW5lcigncCcsIG5vb3AsIG9wdGlvbnMpO1xuICB3LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3AnLCBub29wLCBmYWxzZSk7XG59XG52YXIgc3VwcG9ydHNQYXNzaXZlRXZlbnRzID0gcGFzc2l2ZU9wdGlvbkFjY2Vzc2VkO1xuZnVuY3Rpb24gbm90TnVsbGlzaChpdGVtKSB7XG4gIHJldHVybiBpdGVtICE9IG51bGw7XG59XG5mdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShhcmcpO1xufVxuZnVuY3Rpb24gdmFsdWVUZXJuYXJ5KGlzTXVsdGksIG11bHRpVmFsdWUsIHNpbmdsZVZhbHVlKSB7XG4gIHJldHVybiBpc011bHRpID8gbXVsdGlWYWx1ZSA6IHNpbmdsZVZhbHVlO1xufVxuZnVuY3Rpb24gc2luZ2xlVmFsdWVBc1ZhbHVlKHNpbmdsZVZhbHVlKSB7XG4gIHJldHVybiBzaW5nbGVWYWx1ZTtcbn1cbmZ1bmN0aW9uIG11bHRpVmFsdWVBc1ZhbHVlKG11bHRpVmFsdWUpIHtcbiAgcmV0dXJuIG11bHRpVmFsdWU7XG59XG52YXIgcmVtb3ZlUHJvcHMgPSBmdW5jdGlvbiByZW1vdmVQcm9wcyhwcm9wc09iaikge1xuICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIHByb3BlcnRpZXMgPSBuZXcgQXJyYXkoX2xlbjIgPiAxID8gX2xlbjIgLSAxIDogMCksIF9rZXkyID0gMTsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgIHByb3BlcnRpZXNbX2tleTIgLSAxXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gIH1cbiAgdmFyIHByb3BzTWFwID0gT2JqZWN0LmVudHJpZXMocHJvcHNPYmopLmZpbHRlcihmdW5jdGlvbiAoX3JlZikge1xuICAgIHZhciBfcmVmMiA9IF9zbGljZWRUb0FycmF5KF9yZWYsIDEpLFxuICAgICAga2V5ID0gX3JlZjJbMF07XG4gICAgcmV0dXJuICFwcm9wZXJ0aWVzLmluY2x1ZGVzKGtleSk7XG4gIH0pO1xuICByZXR1cm4gcHJvcHNNYXAucmVkdWNlKGZ1bmN0aW9uIChuZXdQcm9wcywgX3JlZjMpIHtcbiAgICB2YXIgX3JlZjQgPSBfc2xpY2VkVG9BcnJheShfcmVmMywgMiksXG4gICAgICBrZXkgPSBfcmVmNFswXSxcbiAgICAgIHZhbCA9IF9yZWY0WzFdO1xuICAgIG5ld1Byb3BzW2tleV0gPSB2YWw7XG4gICAgcmV0dXJuIG5ld1Byb3BzO1xuICB9LCB7fSk7XG59O1xuXG52YXIgX2V4Y2x1ZGVkJDMgPSBbXCJjaGlsZHJlblwiLCBcImlubmVyUHJvcHNcIl0sXG4gIF9leGNsdWRlZDIkMSA9IFtcImNoaWxkcmVuXCIsIFwiaW5uZXJQcm9wc1wiXTtcbmZ1bmN0aW9uIGdldE1lbnVQbGFjZW1lbnQoX3JlZikge1xuICB2YXIgcHJlZmVycmVkTWF4SGVpZ2h0ID0gX3JlZi5tYXhIZWlnaHQsXG4gICAgbWVudUVsID0gX3JlZi5tZW51RWwsXG4gICAgbWluSGVpZ2h0ID0gX3JlZi5taW5IZWlnaHQsXG4gICAgcHJlZmVycmVkUGxhY2VtZW50ID0gX3JlZi5wbGFjZW1lbnQsXG4gICAgc2hvdWxkU2Nyb2xsID0gX3JlZi5zaG91bGRTY3JvbGwsXG4gICAgaXNGaXhlZFBvc2l0aW9uID0gX3JlZi5pc0ZpeGVkUG9zaXRpb24sXG4gICAgY29udHJvbEhlaWdodCA9IF9yZWYuY29udHJvbEhlaWdodDtcbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChtZW51RWwpO1xuICB2YXIgZGVmYXVsdFN0YXRlID0ge1xuICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgbWF4SGVpZ2h0OiBwcmVmZXJyZWRNYXhIZWlnaHRcbiAgfTtcblxuICAvLyBzb21ldGhpbmcgd2VudCB3cm9uZywgcmV0dXJuIGRlZmF1bHQgc3RhdGVcbiAgaWYgKCFtZW51RWwgfHwgIW1lbnVFbC5vZmZzZXRQYXJlbnQpIHJldHVybiBkZWZhdWx0U3RhdGU7XG5cbiAgLy8gd2UgY2FuJ3QgdHJ1c3QgYHNjcm9sbFBhcmVudC5zY3JvbGxIZWlnaHRgIC0tPiBpdCBtYXkgaW5jcmVhc2Ugd2hlblxuICAvLyB0aGUgbWVudSBpcyByZW5kZXJlZFxuICB2YXIgX3Njcm9sbFBhcmVudCRnZXRCb3VuID0gc2Nyb2xsUGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgIHNjcm9sbEhlaWdodCA9IF9zY3JvbGxQYXJlbnQkZ2V0Qm91bi5oZWlnaHQ7XG4gIHZhciBfbWVudUVsJGdldEJvdW5kaW5nQ2wgPSBtZW51RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgbWVudUJvdHRvbSA9IF9tZW51RWwkZ2V0Qm91bmRpbmdDbC5ib3R0b20sXG4gICAgbWVudUhlaWdodCA9IF9tZW51RWwkZ2V0Qm91bmRpbmdDbC5oZWlnaHQsXG4gICAgbWVudVRvcCA9IF9tZW51RWwkZ2V0Qm91bmRpbmdDbC50b3A7XG4gIHZhciBfbWVudUVsJG9mZnNldFBhcmVudCQgPSBtZW51RWwub2Zmc2V0UGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgIGNvbnRhaW5lclRvcCA9IF9tZW51RWwkb2Zmc2V0UGFyZW50JC50b3A7XG4gIHZhciB2aWV3SGVpZ2h0ID0gaXNGaXhlZFBvc2l0aW9uID8gd2luZG93LmlubmVySGVpZ2h0IDogbm9ybWFsaXplZEhlaWdodChzY3JvbGxQYXJlbnQpO1xuICB2YXIgc2Nyb2xsVG9wID0gZ2V0U2Nyb2xsVG9wKHNjcm9sbFBhcmVudCk7XG4gIHZhciBtYXJnaW5Cb3R0b20gPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKG1lbnVFbCkubWFyZ2luQm90dG9tLCAxMCk7XG4gIHZhciBtYXJnaW5Ub3AgPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKG1lbnVFbCkubWFyZ2luVG9wLCAxMCk7XG4gIHZhciB2aWV3U3BhY2VBYm92ZSA9IGNvbnRhaW5lclRvcCAtIG1hcmdpblRvcDtcbiAgdmFyIHZpZXdTcGFjZUJlbG93ID0gdmlld0hlaWdodCAtIG1lbnVUb3A7XG4gIHZhciBzY3JvbGxTcGFjZUFib3ZlID0gdmlld1NwYWNlQWJvdmUgKyBzY3JvbGxUb3A7XG4gIHZhciBzY3JvbGxTcGFjZUJlbG93ID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gbWVudVRvcDtcbiAgdmFyIHNjcm9sbERvd24gPSBtZW51Qm90dG9tIC0gdmlld0hlaWdodCArIHNjcm9sbFRvcCArIG1hcmdpbkJvdHRvbTtcbiAgdmFyIHNjcm9sbFVwID0gc2Nyb2xsVG9wICsgbWVudVRvcCAtIG1hcmdpblRvcDtcbiAgdmFyIHNjcm9sbER1cmF0aW9uID0gMTYwO1xuICBzd2l0Y2ggKHByZWZlcnJlZFBsYWNlbWVudCkge1xuICAgIGNhc2UgJ2F1dG8nOlxuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAvLyAxOiB0aGUgbWVudSB3aWxsIGZpdCwgZG8gbm90aGluZ1xuICAgICAgaWYgKHZpZXdTcGFjZUJlbG93ID49IG1lbnVIZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgICAgIG1heEhlaWdodDogcHJlZmVycmVkTWF4SGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIDI6IHRoZSBtZW51IHdpbGwgZml0LCBpZiBzY3JvbGxlZFxuICAgICAgaWYgKHNjcm9sbFNwYWNlQmVsb3cgPj0gbWVudUhlaWdodCAmJiAhaXNGaXhlZFBvc2l0aW9uKSB7XG4gICAgICAgIGlmIChzaG91bGRTY3JvbGwpIHtcbiAgICAgICAgICBhbmltYXRlZFNjcm9sbFRvKHNjcm9sbFBhcmVudCwgc2Nyb2xsRG93biwgc2Nyb2xsRHVyYXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyAzOiB0aGUgbWVudSB3aWxsIGZpdCwgaWYgY29uc3RyYWluZWRcbiAgICAgIGlmICghaXNGaXhlZFBvc2l0aW9uICYmIHNjcm9sbFNwYWNlQmVsb3cgPj0gbWluSGVpZ2h0IHx8IGlzRml4ZWRQb3NpdGlvbiAmJiB2aWV3U3BhY2VCZWxvdyA+PSBtaW5IZWlnaHQpIHtcbiAgICAgICAgaWYgKHNob3VsZFNjcm9sbCkge1xuICAgICAgICAgIGFuaW1hdGVkU2Nyb2xsVG8oc2Nyb2xsUGFyZW50LCBzY3JvbGxEb3duLCBzY3JvbGxEdXJhdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB3ZSB3YW50IHRvIHByb3ZpZGUgYXMgbXVjaCBvZiB0aGUgbWVudSBhcyBwb3NzaWJsZSB0byB0aGUgdXNlcixcbiAgICAgICAgLy8gc28gZ2l2ZSB0aGVtIHdoYXRldmVyIGlzIGF2YWlsYWJsZSBiZWxvdyByYXRoZXIgdGhhbiB0aGUgbWluSGVpZ2h0LlxuICAgICAgICB2YXIgY29uc3RyYWluZWRIZWlnaHQgPSBpc0ZpeGVkUG9zaXRpb24gPyB2aWV3U3BhY2VCZWxvdyAtIG1hcmdpbkJvdHRvbSA6IHNjcm9sbFNwYWNlQmVsb3cgLSBtYXJnaW5Cb3R0b207XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IGNvbnN0cmFpbmVkSGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIEZvcmtlZCBiZXZpb3VyIHdoZW4gdGhlcmUgaXNuJ3QgZW5vdWdoIHNwYWNlIGJlbG93XG5cbiAgICAgIC8vIEFVVE86IGZsaXAgdGhlIG1lbnUsIHJlbmRlciBhYm92ZVxuICAgICAgaWYgKHByZWZlcnJlZFBsYWNlbWVudCA9PT0gJ2F1dG8nIHx8IGlzRml4ZWRQb3NpdGlvbikge1xuICAgICAgICAvLyBtYXkgbmVlZCB0byBiZSBjb25zdHJhaW5lZCBhZnRlciBmbGlwcGluZ1xuICAgICAgICB2YXIgX2NvbnN0cmFpbmVkSGVpZ2h0ID0gcHJlZmVycmVkTWF4SGVpZ2h0O1xuICAgICAgICB2YXIgc3BhY2VBYm92ZSA9IGlzRml4ZWRQb3NpdGlvbiA/IHZpZXdTcGFjZUFib3ZlIDogc2Nyb2xsU3BhY2VBYm92ZTtcbiAgICAgICAgaWYgKHNwYWNlQWJvdmUgPj0gbWluSGVpZ2h0KSB7XG4gICAgICAgICAgX2NvbnN0cmFpbmVkSGVpZ2h0ID0gTWF0aC5taW4oc3BhY2VBYm92ZSAtIG1hcmdpbkJvdHRvbSAtIGNvbnRyb2xIZWlnaHQsIHByZWZlcnJlZE1heEhlaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICd0b3AnLFxuICAgICAgICAgIG1heEhlaWdodDogX2NvbnN0cmFpbmVkSGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIEJPVFRPTTogYWxsb3cgYnJvd3NlciB0byBpbmNyZWFzZSBzY3JvbGxhYmxlIGFyZWEgYW5kIGltbWVkaWF0ZWx5IHNldCBzY3JvbGxcbiAgICAgIGlmIChwcmVmZXJyZWRQbGFjZW1lbnQgPT09ICdib3R0b20nKSB7XG4gICAgICAgIGlmIChzaG91bGRTY3JvbGwpIHtcbiAgICAgICAgICBzY3JvbGxUbyhzY3JvbGxQYXJlbnQsIHNjcm9sbERvd24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIC8vIDE6IHRoZSBtZW51IHdpbGwgZml0LCBkbyBub3RoaW5nXG4gICAgICBpZiAodmlld1NwYWNlQWJvdmUgPj0gbWVudUhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBwcmVmZXJyZWRNYXhIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gMjogdGhlIG1lbnUgd2lsbCBmaXQsIGlmIHNjcm9sbGVkXG4gICAgICBpZiAoc2Nyb2xsU3BhY2VBYm92ZSA+PSBtZW51SGVpZ2h0ICYmICFpc0ZpeGVkUG9zaXRpb24pIHtcbiAgICAgICAgaWYgKHNob3VsZFNjcm9sbCkge1xuICAgICAgICAgIGFuaW1hdGVkU2Nyb2xsVG8oc2Nyb2xsUGFyZW50LCBzY3JvbGxVcCwgc2Nyb2xsRHVyYXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyAzOiB0aGUgbWVudSB3aWxsIGZpdCwgaWYgY29uc3RyYWluZWRcbiAgICAgIGlmICghaXNGaXhlZFBvc2l0aW9uICYmIHNjcm9sbFNwYWNlQWJvdmUgPj0gbWluSGVpZ2h0IHx8IGlzRml4ZWRQb3NpdGlvbiAmJiB2aWV3U3BhY2VBYm92ZSA+PSBtaW5IZWlnaHQpIHtcbiAgICAgICAgdmFyIF9jb25zdHJhaW5lZEhlaWdodDIgPSBwcmVmZXJyZWRNYXhIZWlnaHQ7XG5cbiAgICAgICAgLy8gd2Ugd2FudCB0byBwcm92aWRlIGFzIG11Y2ggb2YgdGhlIG1lbnUgYXMgcG9zc2libGUgdG8gdGhlIHVzZXIsXG4gICAgICAgIC8vIHNvIGdpdmUgdGhlbSB3aGF0ZXZlciBpcyBhdmFpbGFibGUgYmVsb3cgcmF0aGVyIHRoYW4gdGhlIG1pbkhlaWdodC5cbiAgICAgICAgaWYgKCFpc0ZpeGVkUG9zaXRpb24gJiYgc2Nyb2xsU3BhY2VBYm92ZSA+PSBtaW5IZWlnaHQgfHwgaXNGaXhlZFBvc2l0aW9uICYmIHZpZXdTcGFjZUFib3ZlID49IG1pbkhlaWdodCkge1xuICAgICAgICAgIF9jb25zdHJhaW5lZEhlaWdodDIgPSBpc0ZpeGVkUG9zaXRpb24gPyB2aWV3U3BhY2VBYm92ZSAtIG1hcmdpblRvcCA6IHNjcm9sbFNwYWNlQWJvdmUgLSBtYXJnaW5Ub3A7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNob3VsZFNjcm9sbCkge1xuICAgICAgICAgIGFuaW1hdGVkU2Nyb2xsVG8oc2Nyb2xsUGFyZW50LCBzY3JvbGxVcCwgc2Nyb2xsRHVyYXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IF9jb25zdHJhaW5lZEhlaWdodDJcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gbm90IGVub3VnaCBzcGFjZSwgdGhlIGJyb3dzZXIgV0lMTCBOT1QgaW5jcmVhc2Ugc2Nyb2xsYWJsZSBhcmVhIHdoZW5cbiAgICAgIC8vIGFic29sdXRlbHkgcG9zaXRpb25lZCBlbGVtZW50IHJlbmRlcmVkIGFib3ZlIHRoZSB2aWV3cG9ydCAob25seSBiZWxvdykuXG4gICAgICAvLyBGbGlwIHRoZSBtZW51LCByZW5kZXIgYmVsb3dcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICAgIG1heEhlaWdodDogcHJlZmVycmVkTWF4SGVpZ2h0XG4gICAgICB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHBsYWNlbWVudCBwcm92aWRlZCBcXFwiXCIuY29uY2F0KHByZWZlcnJlZFBsYWNlbWVudCwgXCJcXFwiLlwiKSk7XG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRTdGF0ZTtcbn1cblxuLy8gTWVudSBDb21wb25lbnRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBhbGlnblRvQ29udHJvbChwbGFjZW1lbnQpIHtcbiAgdmFyIHBsYWNlbWVudFRvQ1NTUHJvcCA9IHtcbiAgICBib3R0b206ICd0b3AnLFxuICAgIHRvcDogJ2JvdHRvbSdcbiAgfTtcbiAgcmV0dXJuIHBsYWNlbWVudCA/IHBsYWNlbWVudFRvQ1NTUHJvcFtwbGFjZW1lbnRdIDogJ2JvdHRvbSc7XG59XG52YXIgY29lcmNlUGxhY2VtZW50ID0gZnVuY3Rpb24gY29lcmNlUGxhY2VtZW50KHApIHtcbiAgcmV0dXJuIHAgPT09ICdhdXRvJyA/ICdib3R0b20nIDogcDtcbn07XG52YXIgbWVudUNTUyA9IGZ1bmN0aW9uIG1lbnVDU1MoX3JlZjIsIHVuc3R5bGVkKSB7XG4gIHZhciBfb2JqZWN0U3ByZWFkMjtcbiAgdmFyIHBsYWNlbWVudCA9IF9yZWYyLnBsYWNlbWVudCxcbiAgICBfcmVmMiR0aGVtZSA9IF9yZWYyLnRoZW1lLFxuICAgIGJvcmRlclJhZGl1cyA9IF9yZWYyJHRoZW1lLmJvcmRlclJhZGl1cyxcbiAgICBzcGFjaW5nID0gX3JlZjIkdGhlbWUuc3BhY2luZyxcbiAgICBjb2xvcnMgPSBfcmVmMiR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKChfb2JqZWN0U3ByZWFkMiA9IHtcbiAgICBsYWJlbDogJ21lbnUnXG4gIH0sIF9kZWZpbmVQcm9wZXJ0eShfb2JqZWN0U3ByZWFkMiwgYWxpZ25Ub0NvbnRyb2wocGxhY2VtZW50KSwgJzEwMCUnKSwgX2RlZmluZVByb3BlcnR5KF9vYmplY3RTcHJlYWQyLCBcInBvc2l0aW9uXCIsICdhYnNvbHV0ZScpLCBfZGVmaW5lUHJvcGVydHkoX29iamVjdFNwcmVhZDIsIFwid2lkdGhcIiwgJzEwMCUnKSwgX2RlZmluZVByb3BlcnR5KF9vYmplY3RTcHJlYWQyLCBcInpJbmRleFwiLCAxKSwgX29iamVjdFNwcmVhZDIpLCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJhY2tncm91bmRDb2xvcjogY29sb3JzLm5ldXRyYWwwLFxuICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzLFxuICAgIGJveFNoYWRvdzogJzAgMCAwIDFweCBoc2xhKDAsIDAlLCAwJSwgMC4xKSwgMCA0cHggMTFweCBoc2xhKDAsIDAlLCAwJSwgMC4xKScsXG4gICAgbWFyZ2luQm90dG9tOiBzcGFjaW5nLm1lbnVHdXR0ZXIsXG4gICAgbWFyZ2luVG9wOiBzcGFjaW5nLm1lbnVHdXR0ZXJcbiAgfSk7XG59O1xudmFyIFBvcnRhbFBsYWNlbWVudENvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcblxuLy8gTk9URTogaW50ZXJuYWwgb25seVxudmFyIE1lbnVQbGFjZXIgPSBmdW5jdGlvbiBNZW51UGxhY2VyKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIG1pbk1lbnVIZWlnaHQgPSBwcm9wcy5taW5NZW51SGVpZ2h0LFxuICAgIG1heE1lbnVIZWlnaHQgPSBwcm9wcy5tYXhNZW51SGVpZ2h0LFxuICAgIG1lbnVQbGFjZW1lbnQgPSBwcm9wcy5tZW51UGxhY2VtZW50LFxuICAgIG1lbnVQb3NpdGlvbiA9IHByb3BzLm1lbnVQb3NpdGlvbixcbiAgICBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXcgPSBwcm9wcy5tZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXcsXG4gICAgdGhlbWUgPSBwcm9wcy50aGVtZTtcbiAgdmFyIF9yZWYzID0gUmVhY3QudXNlQ29udGV4dChQb3J0YWxQbGFjZW1lbnRDb250ZXh0KSB8fCB7fSxcbiAgICBzZXRQb3J0YWxQbGFjZW1lbnQgPSBfcmVmMy5zZXRQb3J0YWxQbGFjZW1lbnQ7XG4gIHZhciByZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIHZhciBfdXNlU3RhdGUgPSBSZWFjdC51c2VTdGF0ZShtYXhNZW51SGVpZ2h0KSxcbiAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICBtYXhIZWlnaHQgPSBfdXNlU3RhdGUyWzBdLFxuICAgIHNldE1heEhlaWdodCA9IF91c2VTdGF0ZTJbMV07XG4gIHZhciBfdXNlU3RhdGUzID0gUmVhY3QudXNlU3RhdGUobnVsbCksXG4gICAgX3VzZVN0YXRlNCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTMsIDIpLFxuICAgIHBsYWNlbWVudCA9IF91c2VTdGF0ZTRbMF0sXG4gICAgc2V0UGxhY2VtZW50ID0gX3VzZVN0YXRlNFsxXTtcbiAgdmFyIGNvbnRyb2xIZWlnaHQgPSB0aGVtZS5zcGFjaW5nLmNvbnRyb2xIZWlnaHQ7XG4gIHVzZUxheW91dEVmZmVjdF9fZGVmYXVsdFtcImRlZmF1bHRcIl0oZnVuY3Rpb24gKCkge1xuICAgIHZhciBtZW51RWwgPSByZWYuY3VycmVudDtcbiAgICBpZiAoIW1lbnVFbCkgcmV0dXJuO1xuXG4gICAgLy8gRE8gTk9UIHNjcm9sbCBpZiBwb3NpdGlvbiBpcyBmaXhlZFxuICAgIHZhciBpc0ZpeGVkUG9zaXRpb24gPSBtZW51UG9zaXRpb24gPT09ICdmaXhlZCc7XG4gICAgdmFyIHNob3VsZFNjcm9sbCA9IG1lbnVTaG91bGRTY3JvbGxJbnRvVmlldyAmJiAhaXNGaXhlZFBvc2l0aW9uO1xuICAgIHZhciBzdGF0ZSA9IGdldE1lbnVQbGFjZW1lbnQoe1xuICAgICAgbWF4SGVpZ2h0OiBtYXhNZW51SGVpZ2h0LFxuICAgICAgbWVudUVsOiBtZW51RWwsXG4gICAgICBtaW5IZWlnaHQ6IG1pbk1lbnVIZWlnaHQsXG4gICAgICBwbGFjZW1lbnQ6IG1lbnVQbGFjZW1lbnQsXG4gICAgICBzaG91bGRTY3JvbGw6IHNob3VsZFNjcm9sbCxcbiAgICAgIGlzRml4ZWRQb3NpdGlvbjogaXNGaXhlZFBvc2l0aW9uLFxuICAgICAgY29udHJvbEhlaWdodDogY29udHJvbEhlaWdodFxuICAgIH0pO1xuICAgIHNldE1heEhlaWdodChzdGF0ZS5tYXhIZWlnaHQpO1xuICAgIHNldFBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICAgIHNldFBvcnRhbFBsYWNlbWVudCA9PT0gbnVsbCB8fCBzZXRQb3J0YWxQbGFjZW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNldFBvcnRhbFBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICB9LCBbbWF4TWVudUhlaWdodCwgbWVudVBsYWNlbWVudCwgbWVudVBvc2l0aW9uLCBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXcsIG1pbk1lbnVIZWlnaHQsIHNldFBvcnRhbFBsYWNlbWVudCwgY29udHJvbEhlaWdodF0pO1xuICByZXR1cm4gY2hpbGRyZW4oe1xuICAgIHJlZjogcmVmLFxuICAgIHBsYWNlclByb3BzOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHByb3BzKSwge30sIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50IHx8IGNvZXJjZVBsYWNlbWVudChtZW51UGxhY2VtZW50KSxcbiAgICAgIG1heEhlaWdodDogbWF4SGVpZ2h0XG4gICAgfSlcbiAgfSk7XG59O1xudmFyIE1lbnUgPSBmdW5jdGlvbiBNZW51KHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlubmVyUmVmID0gcHJvcHMuaW5uZXJSZWYsXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdtZW51Jywge1xuICAgIG1lbnU6IHRydWVcbiAgfSksIHtcbiAgICByZWY6IGlubmVyUmVmXG4gIH0sIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xudmFyIE1lbnUkMSA9IE1lbnU7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWVudSBMaXN0XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIG1lbnVMaXN0Q1NTID0gZnVuY3Rpb24gbWVudUxpc3RDU1MoX3JlZjQsIHVuc3R5bGVkKSB7XG4gIHZhciBtYXhIZWlnaHQgPSBfcmVmNC5tYXhIZWlnaHQsXG4gICAgYmFzZVVuaXQgPSBfcmVmNC50aGVtZS5zcGFjaW5nLmJhc2VVbml0O1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbWF4SGVpZ2h0OiBtYXhIZWlnaHQsXG4gICAgb3ZlcmZsb3dZOiAnYXV0bycsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgLy8gcmVxdWlyZWQgZm9yIG9mZnNldFtIZWlnaHQsIFRvcF0gPiBrZXlib2FyZCBzY3JvbGxcbiAgICBXZWJraXRPdmVyZmxvd1Njcm9sbGluZzogJ3RvdWNoJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIHBhZGRpbmdCb3R0b206IGJhc2VVbml0LFxuICAgIHBhZGRpbmdUb3A6IGJhc2VVbml0XG4gIH0pO1xufTtcbnZhciBNZW51TGlzdCA9IGZ1bmN0aW9uIE1lbnVMaXN0KHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIGlubmVyUmVmID0gcHJvcHMuaW5uZXJSZWYsXG4gICAgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGk7XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdtZW51TGlzdCcsIHtcbiAgICAnbWVudS1saXN0JzogdHJ1ZSxcbiAgICAnbWVudS1saXN0LS1pcy1tdWx0aSc6IGlzTXVsdGlcbiAgfSksIHtcbiAgICByZWY6IGlubmVyUmVmXG4gIH0sIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1lbnUgTm90aWNlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBub3RpY2VDU1MgPSBmdW5jdGlvbiBub3RpY2VDU1MoX3JlZjUsIHVuc3R5bGVkKSB7XG4gIHZhciBfcmVmNSR0aGVtZSA9IF9yZWY1LnRoZW1lLFxuICAgIGJhc2VVbml0ID0gX3JlZjUkdGhlbWUuc3BhY2luZy5iYXNlVW5pdCxcbiAgICBjb2xvcnMgPSBfcmVmNSR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgY29sb3I6IGNvbG9ycy5uZXV0cmFsNDAsXG4gICAgcGFkZGluZzogXCJcIi5jb25jYXQoYmFzZVVuaXQgKiAyLCBcInB4IFwiKS5jb25jYXQoYmFzZVVuaXQgKiAzLCBcInB4XCIpXG4gIH0pO1xufTtcbnZhciBub09wdGlvbnNNZXNzYWdlQ1NTID0gbm90aWNlQ1NTO1xudmFyIGxvYWRpbmdNZXNzYWdlQ1NTID0gbm90aWNlQ1NTO1xudmFyIE5vT3B0aW9uc01lc3NhZ2UgPSBmdW5jdGlvbiBOb09wdGlvbnNNZXNzYWdlKF9yZWY2KSB7XG4gIHZhciBfcmVmNiRjaGlsZHJlbiA9IF9yZWY2LmNoaWxkcmVuLFxuICAgIGNoaWxkcmVuID0gX3JlZjYkY2hpbGRyZW4gPT09IHZvaWQgMCA/ICdObyBvcHRpb25zJyA6IF9yZWY2JGNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBfcmVmNi5pbm5lclByb3BzLFxuICAgIHJlc3RQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmNiwgX2V4Y2x1ZGVkJDMpO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdFByb3BzKSwge30sIHtcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wczogaW5uZXJQcm9wc1xuICB9KSwgJ25vT3B0aW9uc01lc3NhZ2UnLCB7XG4gICAgJ21lbnUtbm90aWNlJzogdHJ1ZSxcbiAgICAnbWVudS1ub3RpY2UtLW5vLW9wdGlvbnMnOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcbnZhciBMb2FkaW5nTWVzc2FnZSA9IGZ1bmN0aW9uIExvYWRpbmdNZXNzYWdlKF9yZWY3KSB7XG4gIHZhciBfcmVmNyRjaGlsZHJlbiA9IF9yZWY3LmNoaWxkcmVuLFxuICAgIGNoaWxkcmVuID0gX3JlZjckY2hpbGRyZW4gPT09IHZvaWQgMCA/ICdMb2FkaW5nLi4uJyA6IF9yZWY3JGNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBfcmVmNy5pbm5lclByb3BzLFxuICAgIHJlc3RQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmNywgX2V4Y2x1ZGVkMiQxKTtcbiAgcmV0dXJuIHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RQcm9wcyksIHt9LCB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHM6IGlubmVyUHJvcHNcbiAgfSksICdsb2FkaW5nTWVzc2FnZScsIHtcbiAgICAnbWVudS1ub3RpY2UnOiB0cnVlLFxuICAgICdtZW51LW5vdGljZS0tbG9hZGluZyc6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1lbnUgUG9ydGFsXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIG1lbnVQb3J0YWxDU1MgPSBmdW5jdGlvbiBtZW51UG9ydGFsQ1NTKF9yZWY4KSB7XG4gIHZhciByZWN0ID0gX3JlZjgucmVjdCxcbiAgICBvZmZzZXQgPSBfcmVmOC5vZmZzZXQsXG4gICAgcG9zaXRpb24gPSBfcmVmOC5wb3NpdGlvbjtcbiAgcmV0dXJuIHtcbiAgICBsZWZ0OiByZWN0LmxlZnQsXG4gICAgcG9zaXRpb246IHBvc2l0aW9uLFxuICAgIHRvcDogb2Zmc2V0LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIHpJbmRleDogMVxuICB9O1xufTtcbnZhciBNZW51UG9ydGFsID0gZnVuY3Rpb24gTWVudVBvcnRhbChwcm9wcykge1xuICB2YXIgYXBwZW5kVG8gPSBwcm9wcy5hcHBlbmRUbyxcbiAgICBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGNvbnRyb2xFbGVtZW50ID0gcHJvcHMuY29udHJvbEVsZW1lbnQsXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHMsXG4gICAgbWVudVBsYWNlbWVudCA9IHByb3BzLm1lbnVQbGFjZW1lbnQsXG4gICAgbWVudVBvc2l0aW9uID0gcHJvcHMubWVudVBvc2l0aW9uO1xuICB2YXIgbWVudVBvcnRhbFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgdmFyIGNsZWFudXBSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIHZhciBfdXNlU3RhdGU1ID0gUmVhY3QudXNlU3RhdGUoY29lcmNlUGxhY2VtZW50KG1lbnVQbGFjZW1lbnQpKSxcbiAgICBfdXNlU3RhdGU2ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlNSwgMiksXG4gICAgcGxhY2VtZW50ID0gX3VzZVN0YXRlNlswXSxcbiAgICBzZXRQb3J0YWxQbGFjZW1lbnQgPSBfdXNlU3RhdGU2WzFdO1xuICB2YXIgcG9ydGFsUGxhY2VtZW50Q29udGV4dCA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzZXRQb3J0YWxQbGFjZW1lbnQ6IHNldFBvcnRhbFBsYWNlbWVudFxuICAgIH07XG4gIH0sIFtdKTtcbiAgdmFyIF91c2VTdGF0ZTcgPSBSZWFjdC51c2VTdGF0ZShudWxsKSxcbiAgICBfdXNlU3RhdGU4ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlNywgMiksXG4gICAgY29tcHV0ZWRQb3NpdGlvbiA9IF91c2VTdGF0ZThbMF0sXG4gICAgc2V0Q29tcHV0ZWRQb3NpdGlvbiA9IF91c2VTdGF0ZThbMV07XG4gIHZhciB1cGRhdGVDb21wdXRlZFBvc2l0aW9uID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIGlmICghY29udHJvbEVsZW1lbnQpIHJldHVybjtcbiAgICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50T2JqKGNvbnRyb2xFbGVtZW50KTtcbiAgICB2YXIgc2Nyb2xsRGlzdGFuY2UgPSBtZW51UG9zaXRpb24gPT09ICdmaXhlZCcgPyAwIDogd2luZG93LnBhZ2VZT2Zmc2V0O1xuICAgIHZhciBvZmZzZXQgPSByZWN0W3BsYWNlbWVudF0gKyBzY3JvbGxEaXN0YW5jZTtcbiAgICBpZiAob2Zmc2V0ICE9PSAoY29tcHV0ZWRQb3NpdGlvbiA9PT0gbnVsbCB8fCBjb21wdXRlZFBvc2l0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb21wdXRlZFBvc2l0aW9uLm9mZnNldCkgfHwgcmVjdC5sZWZ0ICE9PSAoY29tcHV0ZWRQb3NpdGlvbiA9PT0gbnVsbCB8fCBjb21wdXRlZFBvc2l0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb21wdXRlZFBvc2l0aW9uLnJlY3QubGVmdCkgfHwgcmVjdC53aWR0aCAhPT0gKGNvbXB1dGVkUG9zaXRpb24gPT09IG51bGwgfHwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29tcHV0ZWRQb3NpdGlvbi5yZWN0LndpZHRoKSkge1xuICAgICAgc2V0Q29tcHV0ZWRQb3NpdGlvbih7XG4gICAgICAgIG9mZnNldDogb2Zmc2V0LFxuICAgICAgICByZWN0OiByZWN0XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtjb250cm9sRWxlbWVudCwgbWVudVBvc2l0aW9uLCBwbGFjZW1lbnQsIGNvbXB1dGVkUG9zaXRpb24gPT09IG51bGwgfHwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29tcHV0ZWRQb3NpdGlvbi5vZmZzZXQsIGNvbXB1dGVkUG9zaXRpb24gPT09IG51bGwgfHwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29tcHV0ZWRQb3NpdGlvbi5yZWN0LmxlZnQsIGNvbXB1dGVkUG9zaXRpb24gPT09IG51bGwgfHwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29tcHV0ZWRQb3NpdGlvbi5yZWN0LndpZHRoXSk7XG4gIHVzZUxheW91dEVmZmVjdF9fZGVmYXVsdFtcImRlZmF1bHRcIl0oZnVuY3Rpb24gKCkge1xuICAgIHVwZGF0ZUNvbXB1dGVkUG9zaXRpb24oKTtcbiAgfSwgW3VwZGF0ZUNvbXB1dGVkUG9zaXRpb25dKTtcbiAgdmFyIHJ1bkF1dG9VcGRhdGUgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVvZiBjbGVhbnVwUmVmLmN1cnJlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNsZWFudXBSZWYuY3VycmVudCgpO1xuICAgICAgY2xlYW51cFJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKGNvbnRyb2xFbGVtZW50ICYmIG1lbnVQb3J0YWxSZWYuY3VycmVudCkge1xuICAgICAgY2xlYW51cFJlZi5jdXJyZW50ID0gZG9tLmF1dG9VcGRhdGUoY29udHJvbEVsZW1lbnQsIG1lbnVQb3J0YWxSZWYuY3VycmVudCwgdXBkYXRlQ29tcHV0ZWRQb3NpdGlvbiwge1xuICAgICAgICBlbGVtZW50UmVzaXplOiAnUmVzaXplT2JzZXJ2ZXInIGluIHdpbmRvd1xuICAgICAgfSk7XG4gICAgfVxuICB9LCBbY29udHJvbEVsZW1lbnQsIHVwZGF0ZUNvbXB1dGVkUG9zaXRpb25dKTtcbiAgdXNlTGF5b3V0RWZmZWN0X19kZWZhdWx0W1wiZGVmYXVsdFwiXShmdW5jdGlvbiAoKSB7XG4gICAgcnVuQXV0b1VwZGF0ZSgpO1xuICB9LCBbcnVuQXV0b1VwZGF0ZV0pO1xuICB2YXIgc2V0TWVudVBvcnRhbEVsZW1lbnQgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAobWVudVBvcnRhbEVsZW1lbnQpIHtcbiAgICBtZW51UG9ydGFsUmVmLmN1cnJlbnQgPSBtZW51UG9ydGFsRWxlbWVudDtcbiAgICBydW5BdXRvVXBkYXRlKCk7XG4gIH0sIFtydW5BdXRvVXBkYXRlXSk7XG5cbiAgLy8gYmFpbCBlYXJseSBpZiByZXF1aXJlZCBlbGVtZW50cyBhcmVuJ3QgcHJlc2VudFxuICBpZiAoIWFwcGVuZFRvICYmIG1lbnVQb3NpdGlvbiAhPT0gJ2ZpeGVkJyB8fCAhY29tcHV0ZWRQb3NpdGlvbikgcmV0dXJuIG51bGw7XG5cbiAgLy8gc2FtZSB3cmFwcGVyIGVsZW1lbnQgd2hldGhlciBmaXhlZCBvciBwb3J0YWxsZWRcbiAgdmFyIG1lbnVXcmFwcGVyID0gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHtcbiAgICByZWY6IHNldE1lbnVQb3J0YWxFbGVtZW50XG4gIH0sIGdldFN0eWxlUHJvcHMoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBwcm9wcyksIHt9LCB7XG4gICAgb2Zmc2V0OiBjb21wdXRlZFBvc2l0aW9uLm9mZnNldCxcbiAgICBwb3NpdGlvbjogbWVudVBvc2l0aW9uLFxuICAgIHJlY3Q6IGNvbXB1dGVkUG9zaXRpb24ucmVjdFxuICB9KSwgJ21lbnVQb3J0YWwnLCB7XG4gICAgJ21lbnUtcG9ydGFsJzogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbiAgcmV0dXJuIHJlYWN0LmpzeChQb3J0YWxQbGFjZW1lbnRDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IHBvcnRhbFBsYWNlbWVudENvbnRleHRcbiAgfSwgYXBwZW5kVG8gPyAvKiNfX1BVUkVfXyovcmVhY3REb20uY3JlYXRlUG9ydGFsKG1lbnVXcmFwcGVyLCBhcHBlbmRUbykgOiBtZW51V3JhcHBlcik7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJvb3QgQ29udGFpbmVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIGNvbnRhaW5lckNTUyA9IGZ1bmN0aW9uIGNvbnRhaW5lckNTUyhfcmVmKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZi5pc0Rpc2FibGVkLFxuICAgIGlzUnRsID0gX3JlZi5pc1J0bDtcbiAgcmV0dXJuIHtcbiAgICBsYWJlbDogJ2NvbnRhaW5lcicsXG4gICAgZGlyZWN0aW9uOiBpc1J0bCA/ICdydGwnIDogdW5kZWZpbmVkLFxuICAgIHBvaW50ZXJFdmVudHM6IGlzRGlzYWJsZWQgPyAnbm9uZScgOiB1bmRlZmluZWQsXG4gICAgLy8gY2FuY2VsIG1vdXNlIGV2ZW50cyB3aGVuIGRpc2FibGVkXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZSdcbiAgfTtcbn07XG52YXIgU2VsZWN0Q29udGFpbmVyID0gZnVuY3Rpb24gU2VsZWN0Q29udGFpbmVyKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgIGlzUnRsID0gcHJvcHMuaXNSdGw7XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdjb250YWluZXInLCB7XG4gICAgJy0taXMtZGlzYWJsZWQnOiBpc0Rpc2FibGVkLFxuICAgICctLWlzLXJ0bCc6IGlzUnRsXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBWYWx1ZSBDb250YWluZXJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgdmFsdWVDb250YWluZXJDU1MgPSBmdW5jdGlvbiB2YWx1ZUNvbnRhaW5lckNTUyhfcmVmMiwgdW5zdHlsZWQpIHtcbiAgdmFyIHNwYWNpbmcgPSBfcmVmMi50aGVtZS5zcGFjaW5nLFxuICAgIGlzTXVsdGkgPSBfcmVmMi5pc011bHRpLFxuICAgIGhhc1ZhbHVlID0gX3JlZjIuaGFzVmFsdWUsXG4gICAgY29udHJvbFNob3VsZFJlbmRlclZhbHVlID0gX3JlZjIuc2VsZWN0UHJvcHMuY29udHJvbFNob3VsZFJlbmRlclZhbHVlO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgZGlzcGxheTogaXNNdWx0aSAmJiBoYXNWYWx1ZSAmJiBjb250cm9sU2hvdWxkUmVuZGVyVmFsdWUgPyAnZmxleCcgOiAnZ3JpZCcsXG4gICAgZmxleDogMSxcbiAgICBmbGV4V3JhcDogJ3dyYXAnLFxuICAgIFdlYmtpdE92ZXJmbG93U2Nyb2xsaW5nOiAndG91Y2gnLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIHBhZGRpbmc6IFwiXCIuY29uY2F0KHNwYWNpbmcuYmFzZVVuaXQgLyAyLCBcInB4IFwiKS5jb25jYXQoc3BhY2luZy5iYXNlVW5pdCAqIDIsIFwicHhcIilcbiAgfSk7XG59O1xudmFyIFZhbHVlQ29udGFpbmVyID0gZnVuY3Rpb24gVmFsdWVDb250YWluZXIocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHMsXG4gICAgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGksXG4gICAgaGFzVmFsdWUgPSBwcm9wcy5oYXNWYWx1ZTtcbiAgcmV0dXJuIHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ3ZhbHVlQ29udGFpbmVyJywge1xuICAgICd2YWx1ZS1jb250YWluZXInOiB0cnVlLFxuICAgICd2YWx1ZS1jb250YWluZXItLWlzLW11bHRpJzogaXNNdWx0aSxcbiAgICAndmFsdWUtY29udGFpbmVyLS1oYXMtdmFsdWUnOiBoYXNWYWx1ZVxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSW5kaWNhdG9yIENvbnRhaW5lclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBpbmRpY2F0b3JzQ29udGFpbmVyQ1NTID0gZnVuY3Rpb24gaW5kaWNhdG9yc0NvbnRhaW5lckNTUygpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBhbGlnblNlbGY6ICdzdHJldGNoJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleFNocmluazogMFxuICB9O1xufTtcbnZhciBJbmRpY2F0b3JzQ29udGFpbmVyID0gZnVuY3Rpb24gSW5kaWNhdG9yc0NvbnRhaW5lcihwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcztcbiAgcmV0dXJuIHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2luZGljYXRvcnNDb250YWluZXInLCB7XG4gICAgaW5kaWNhdG9yczogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG5cbnZhciBfdGVtcGxhdGVPYmplY3Q7XG52YXIgX2V4Y2x1ZGVkJDIgPSBbXCJzaXplXCJdLFxuICBfZXhjbHVkZWQyID0gW1wiaW5uZXJQcm9wc1wiLCBcImlzUnRsXCIsIFwic2l6ZVwiXTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbnZhciBfcmVmMiA9IHtcbiAgbmFtZTogXCI4bW1rY2dcIixcbiAgc3R5bGVzOiBcImRpc3BsYXk6aW5saW5lLWJsb2NrO2ZpbGw6Y3VycmVudENvbG9yO2xpbmUtaGVpZ2h0OjE7c3Ryb2tlOmN1cnJlbnRDb2xvcjtzdHJva2Utd2lkdGg6MFwiXG59IDtcbnZhciBTdmcgPSBmdW5jdGlvbiBTdmcoX3JlZikge1xuICB2YXIgc2l6ZSA9IF9yZWYuc2l6ZSxcbiAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBfZXhjbHVkZWQkMik7XG4gIHJldHVybiByZWFjdC5qc3goXCJzdmdcIiwgX2V4dGVuZHMoe1xuICAgIGhlaWdodDogc2l6ZSxcbiAgICB3aWR0aDogc2l6ZSxcbiAgICB2aWV3Qm94OiBcIjAgMCAyMCAyMFwiLFxuICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIsXG4gICAgZm9jdXNhYmxlOiBcImZhbHNlXCIsXG4gICAgY3NzOiBfcmVmMlxuICB9LCBwcm9wcykpO1xufTtcbnZhciBDcm9zc0ljb24gPSBmdW5jdGlvbiBDcm9zc0ljb24ocHJvcHMpIHtcbiAgcmV0dXJuIHJlYWN0LmpzeChTdmcsIF9leHRlbmRzKHtcbiAgICBzaXplOiAyMFxuICB9LCBwcm9wcyksIHJlYWN0LmpzeChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiXG4gIH0pKTtcbn07XG52YXIgRG93bkNoZXZyb24gPSBmdW5jdGlvbiBEb3duQ2hldnJvbihwcm9wcykge1xuICByZXR1cm4gcmVhY3QuanN4KFN2ZywgX2V4dGVuZHMoe1xuICAgIHNpemU6IDIwXG4gIH0sIHByb3BzKSwgcmVhY3QuanN4KFwicGF0aFwiLCB7XG4gICAgZDogXCJNNC41MTYgNy41NDhjMC40MzYtMC40NDYgMS4wNDMtMC40ODEgMS41NzYgMGwzLjkwOCAzLjc0NyAzLjkwOC0zLjc0N2MwLjUzMy0wLjQ4MSAxLjE0MS0wLjQ0NiAxLjU3NCAwIDAuNDM2IDAuNDQ1IDAuNDA4IDEuMTk3IDAgMS42MTUtMC40MDYgMC40MTgtNC42OTUgNC41MDItNC42OTUgNC41MDItMC4yMTcgMC4yMjMtMC41MDIgMC4zMzUtMC43ODcgMC4zMzVzLTAuNTctMC4xMTItMC43ODktMC4zMzVjMCAwLTQuMjg3LTQuMDg0LTQuNjk1LTQuNTAycy0wLjQzNi0xLjE3IDAtMS42MTV6XCJcbiAgfSkpO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEJ1dHRvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgYmFzZUNTUyA9IGZ1bmN0aW9uIGJhc2VDU1MoX3JlZjMsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0ZvY3VzZWQgPSBfcmVmMy5pc0ZvY3VzZWQsXG4gICAgX3JlZjMkdGhlbWUgPSBfcmVmMy50aGVtZSxcbiAgICBiYXNlVW5pdCA9IF9yZWYzJHRoZW1lLnNwYWNpbmcuYmFzZVVuaXQsXG4gICAgY29sb3JzID0gX3JlZjMkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdpbmRpY2F0b3JDb250YWluZXInLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgICAnOmhvdmVyJzoge1xuICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsODAgOiBjb2xvcnMubmV1dHJhbDQwXG4gICAgfVxuICB9KTtcbn07XG52YXIgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xudmFyIERyb3Bkb3duSW5kaWNhdG9yID0gZnVuY3Rpb24gRHJvcGRvd25JbmRpY2F0b3IocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdkcm9wZG93bkluZGljYXRvcicsIHtcbiAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgJ2Ryb3Bkb3duLWluZGljYXRvcic6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbiB8fCByZWFjdC5qc3goRG93bkNoZXZyb24sIG51bGwpKTtcbn07XG52YXIgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xudmFyIENsZWFySW5kaWNhdG9yID0gZnVuY3Rpb24gQ2xlYXJJbmRpY2F0b3IocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdjbGVhckluZGljYXRvcicsIHtcbiAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgJ2NsZWFyLWluZGljYXRvcic6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbiB8fCByZWFjdC5qc3goQ3Jvc3NJY29uLCBudWxsKSk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNlcGFyYXRvclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSBmdW5jdGlvbiBpbmRpY2F0b3JTZXBhcmF0b3JDU1MoX3JlZjQsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZjQuaXNEaXNhYmxlZCxcbiAgICBfcmVmNCR0aGVtZSA9IF9yZWY0LnRoZW1lLFxuICAgIGJhc2VVbml0ID0gX3JlZjQkdGhlbWUuc3BhY2luZy5iYXNlVW5pdCxcbiAgICBjb2xvcnMgPSBfcmVmNCR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ2luZGljYXRvclNlcGFyYXRvcicsXG4gICAgYWxpZ25TZWxmOiAnc3RyZXRjaCcsXG4gICAgd2lkdGg6IDFcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgICBtYXJnaW5Cb3R0b206IGJhc2VVbml0ICogMixcbiAgICBtYXJnaW5Ub3A6IGJhc2VVbml0ICogMlxuICB9KTtcbn07XG52YXIgSW5kaWNhdG9yU2VwYXJhdG9yID0gZnVuY3Rpb24gSW5kaWNhdG9yU2VwYXJhdG9yKHByb3BzKSB7XG4gIHZhciBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcztcbiAgcmV0dXJuIHJlYWN0LmpzeChcInNwYW5cIiwgX2V4dGVuZHMoe30sIGlubmVyUHJvcHMsIGdldFN0eWxlUHJvcHMocHJvcHMsICdpbmRpY2F0b3JTZXBhcmF0b3InLCB7XG4gICAgJ2luZGljYXRvci1zZXBhcmF0b3InOiB0cnVlXG4gIH0pKSk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExvYWRpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSByZWFjdC5rZXlmcmFtZXMoX3RlbXBsYXRlT2JqZWN0IHx8IChfdGVtcGxhdGVPYmplY3QgPSBfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsKFtcIlxcbiAgMCUsIDgwJSwgMTAwJSB7IG9wYWNpdHk6IDA7IH1cXG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cXG5cIl0pKSk7XG52YXIgbG9hZGluZ0luZGljYXRvckNTUyA9IGZ1bmN0aW9uIGxvYWRpbmdJbmRpY2F0b3JDU1MoX3JlZjUsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0ZvY3VzZWQgPSBfcmVmNS5pc0ZvY3VzZWQsXG4gICAgc2l6ZSA9IF9yZWY1LnNpemUsXG4gICAgX3JlZjUkdGhlbWUgPSBfcmVmNS50aGVtZSxcbiAgICBjb2xvcnMgPSBfcmVmNSR0aGVtZS5jb2xvcnMsXG4gICAgYmFzZVVuaXQgPSBfcmVmNSR0aGVtZS5zcGFjaW5nLmJhc2VVbml0O1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdsb2FkaW5nSW5kaWNhdG9yJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcbiAgICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICAgIGZvbnRTaXplOiBzaXplLFxuICAgIGxpbmVIZWlnaHQ6IDEsXG4gICAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgICBwYWRkaW5nOiBiYXNlVW5pdCAqIDJcbiAgfSk7XG59O1xudmFyIExvYWRpbmdEb3QgPSBmdW5jdGlvbiBMb2FkaW5nRG90KF9yZWY2KSB7XG4gIHZhciBkZWxheSA9IF9yZWY2LmRlbGF5LFxuICAgIG9mZnNldCA9IF9yZWY2Lm9mZnNldDtcbiAgcmV0dXJuIHJlYWN0LmpzeChcInNwYW5cIiwge1xuICAgIGNzczogLyojX19QVVJFX18qL3JlYWN0LmNzcyh7XG4gICAgICBhbmltYXRpb246IFwiXCIuY29uY2F0KGxvYWRpbmdEb3RBbmltYXRpb25zLCBcIiAxcyBlYXNlLWluLW91dCBcIikuY29uY2F0KGRlbGF5LCBcIm1zIGluZmluaXRlO1wiKSxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBib3JkZXJSYWRpdXM6ICcxZW0nLFxuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBtYXJnaW5MZWZ0OiBvZmZzZXQgPyAnMWVtJyA6IHVuZGVmaW5lZCxcbiAgICAgIGhlaWdodDogJzFlbScsXG4gICAgICB2ZXJ0aWNhbEFsaWduOiAndG9wJyxcbiAgICAgIHdpZHRoOiAnMWVtJ1xuICAgIH0sIFwiXCIgLCBcIlwiIClcbiAgfSk7XG59O1xudmFyIExvYWRpbmdJbmRpY2F0b3IgPSBmdW5jdGlvbiBMb2FkaW5nSW5kaWNhdG9yKF9yZWY3KSB7XG4gIHZhciBpbm5lclByb3BzID0gX3JlZjcuaW5uZXJQcm9wcyxcbiAgICBpc1J0bCA9IF9yZWY3LmlzUnRsLFxuICAgIF9yZWY3JHNpemUgPSBfcmVmNy5zaXplLFxuICAgIHNpemUgPSBfcmVmNyRzaXplID09PSB2b2lkIDAgPyA0IDogX3JlZjckc2l6ZSxcbiAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjcsIF9leGNsdWRlZDIpO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdFByb3BzKSwge30sIHtcbiAgICBpbm5lclByb3BzOiBpbm5lclByb3BzLFxuICAgIGlzUnRsOiBpc1J0bCxcbiAgICBzaXplOiBzaXplXG4gIH0pLCAnbG9hZGluZ0luZGljYXRvcicsIHtcbiAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgJ2xvYWRpbmctaW5kaWNhdG9yJzogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIHJlYWN0LmpzeChMb2FkaW5nRG90LCB7XG4gICAgZGVsYXk6IDAsXG4gICAgb2Zmc2V0OiBpc1J0bFxuICB9KSwgcmVhY3QuanN4KExvYWRpbmdEb3QsIHtcbiAgICBkZWxheTogMTYwLFxuICAgIG9mZnNldDogdHJ1ZVxuICB9KSwgcmVhY3QuanN4KExvYWRpbmdEb3QsIHtcbiAgICBkZWxheTogMzIwLFxuICAgIG9mZnNldDogIWlzUnRsXG4gIH0pKTtcbn07XG5cbnZhciBjc3MkMSA9IGZ1bmN0aW9uIGNzcyhfcmVmLCB1bnN0eWxlZCkge1xuICB2YXIgaXNEaXNhYmxlZCA9IF9yZWYuaXNEaXNhYmxlZCxcbiAgICBpc0ZvY3VzZWQgPSBfcmVmLmlzRm9jdXNlZCxcbiAgICBfcmVmJHRoZW1lID0gX3JlZi50aGVtZSxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycyxcbiAgICBib3JkZXJSYWRpdXMgPSBfcmVmJHRoZW1lLmJvcmRlclJhZGl1cyxcbiAgICBzcGFjaW5nID0gX3JlZiR0aGVtZS5zcGFjaW5nO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdjb250cm9sJyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBjdXJzb3I6ICdkZWZhdWx0JyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgIG1pbkhlaWdodDogc3BhY2luZy5jb250cm9sSGVpZ2h0LFxuICAgIG91dGxpbmU6ICcwICFpbXBvcnRhbnQnLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIHRyYW5zaXRpb246ICdhbGwgMTAwbXMnXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWw1IDogY29sb3JzLm5ldXRyYWwwLFxuICAgIGJvcmRlckNvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWwxMCA6IGlzRm9jdXNlZCA/IGNvbG9ycy5wcmltYXJ5IDogY29sb3JzLm5ldXRyYWwyMCxcbiAgICBib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyxcbiAgICBib3JkZXJTdHlsZTogJ3NvbGlkJyxcbiAgICBib3JkZXJXaWR0aDogMSxcbiAgICBib3hTaGFkb3c6IGlzRm9jdXNlZCA/IFwiMCAwIDAgMXB4IFwiLmNvbmNhdChjb2xvcnMucHJpbWFyeSkgOiB1bmRlZmluZWQsXG4gICAgJyY6aG92ZXInOiB7XG4gICAgICBib3JkZXJDb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLnByaW1hcnkgOiBjb2xvcnMubmV1dHJhbDMwXG4gICAgfVxuICB9KTtcbn07XG52YXIgQ29udHJvbCA9IGZ1bmN0aW9uIENvbnRyb2wocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgaXNGb2N1c2VkID0gcHJvcHMuaXNGb2N1c2VkLFxuICAgIGlubmVyUmVmID0gcHJvcHMuaW5uZXJSZWYsXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHMsXG4gICAgbWVudUlzT3BlbiA9IHByb3BzLm1lbnVJc09wZW47XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgX2V4dGVuZHMoe1xuICAgIHJlZjogaW5uZXJSZWZcbiAgfSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2NvbnRyb2wnLCB7XG4gICAgY29udHJvbDogdHJ1ZSxcbiAgICAnY29udHJvbC0taXMtZGlzYWJsZWQnOiBpc0Rpc2FibGVkLFxuICAgICdjb250cm9sLS1pcy1mb2N1c2VkJzogaXNGb2N1c2VkLFxuICAgICdjb250cm9sLS1tZW51LWlzLW9wZW4nOiBtZW51SXNPcGVuXG4gIH0pLCBpbm5lclByb3BzLCB7XG4gICAgXCJhcmlhLWRpc2FibGVkXCI6IGlzRGlzYWJsZWQgfHwgdW5kZWZpbmVkXG4gIH0pLCBjaGlsZHJlbik7XG59O1xudmFyIENvbnRyb2wkMSA9IENvbnRyb2w7XG5cbnZhciBfZXhjbHVkZWQkMSA9IFtcImRhdGFcIl07XG52YXIgZ3JvdXBDU1MgPSBmdW5jdGlvbiBncm91cENTUyhfcmVmLCB1bnN0eWxlZCkge1xuICB2YXIgc3BhY2luZyA9IF9yZWYudGhlbWUuc3BhY2luZztcbiAgcmV0dXJuIHVuc3R5bGVkID8ge30gOiB7XG4gICAgcGFkZGluZ0JvdHRvbTogc3BhY2luZy5iYXNlVW5pdCAqIDIsXG4gICAgcGFkZGluZ1RvcDogc3BhY2luZy5iYXNlVW5pdCAqIDJcbiAgfTtcbn07XG52YXIgR3JvdXAgPSBmdW5jdGlvbiBHcm91cChwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBjeCA9IHByb3BzLmN4LFxuICAgIGdldFN0eWxlcyA9IHByb3BzLmdldFN0eWxlcyxcbiAgICBnZXRDbGFzc05hbWVzID0gcHJvcHMuZ2V0Q2xhc3NOYW1lcyxcbiAgICBIZWFkaW5nID0gcHJvcHMuSGVhZGluZyxcbiAgICBoZWFkaW5nUHJvcHMgPSBwcm9wcy5oZWFkaW5nUHJvcHMsXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHMsXG4gICAgbGFiZWwgPSBwcm9wcy5sYWJlbCxcbiAgICB0aGVtZSA9IHByb3BzLnRoZW1lLFxuICAgIHNlbGVjdFByb3BzID0gcHJvcHMuc2VsZWN0UHJvcHM7XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdncm91cCcsIHtcbiAgICBncm91cDogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIHJlYWN0LmpzeChIZWFkaW5nLCBfZXh0ZW5kcyh7fSwgaGVhZGluZ1Byb3BzLCB7XG4gICAgc2VsZWN0UHJvcHM6IHNlbGVjdFByb3BzLFxuICAgIHRoZW1lOiB0aGVtZSxcbiAgICBnZXRTdHlsZXM6IGdldFN0eWxlcyxcbiAgICBnZXRDbGFzc05hbWVzOiBnZXRDbGFzc05hbWVzLFxuICAgIGN4OiBjeFxuICB9KSwgbGFiZWwpLCByZWFjdC5qc3goXCJkaXZcIiwgbnVsbCwgY2hpbGRyZW4pKTtcbn07XG52YXIgZ3JvdXBIZWFkaW5nQ1NTID0gZnVuY3Rpb24gZ3JvdXBIZWFkaW5nQ1NTKF9yZWYyLCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZjIkdGhlbWUgPSBfcmVmMi50aGVtZSxcbiAgICBjb2xvcnMgPSBfcmVmMiR0aGVtZS5jb2xvcnMsXG4gICAgc3BhY2luZyA9IF9yZWYyJHRoZW1lLnNwYWNpbmc7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ2dyb3VwJyxcbiAgICBjdXJzb3I6ICdkZWZhdWx0JyxcbiAgICBkaXNwbGF5OiAnYmxvY2snXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgY29sb3I6IGNvbG9ycy5uZXV0cmFsNDAsXG4gICAgZm9udFNpemU6ICc3NSUnLFxuICAgIGZvbnRXZWlnaHQ6IDUwMCxcbiAgICBtYXJnaW5Cb3R0b206ICcwLjI1ZW0nLFxuICAgIHBhZGRpbmdMZWZ0OiBzcGFjaW5nLmJhc2VVbml0ICogMyxcbiAgICBwYWRkaW5nUmlnaHQ6IHNwYWNpbmcuYmFzZVVuaXQgKiAzLFxuICAgIHRleHRUcmFuc2Zvcm06ICd1cHBlcmNhc2UnXG4gIH0pO1xufTtcbnZhciBHcm91cEhlYWRpbmcgPSBmdW5jdGlvbiBHcm91cEhlYWRpbmcocHJvcHMpIHtcbiAgdmFyIF9jbGVhbkNvbW1vblByb3BzID0gY2xlYW5Db21tb25Qcm9wcyhwcm9wcyk7XG4gICAgX2NsZWFuQ29tbW9uUHJvcHMuZGF0YTtcbiAgICB2YXIgaW5uZXJQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfY2xlYW5Db21tb25Qcm9wcywgX2V4Y2x1ZGVkJDEpO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnZ3JvdXBIZWFkaW5nJywge1xuICAgICdncm91cC1oZWFkaW5nJzogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcykpO1xufTtcbnZhciBHcm91cCQxID0gR3JvdXA7XG5cbnZhciBfZXhjbHVkZWQgPSBbXCJpbm5lclJlZlwiLCBcImlzRGlzYWJsZWRcIiwgXCJpc0hpZGRlblwiLCBcImlucHV0Q2xhc3NOYW1lXCJdO1xudmFyIGlucHV0Q1NTID0gZnVuY3Rpb24gaW5wdXRDU1MoX3JlZiwgdW5zdHlsZWQpIHtcbiAgdmFyIGlzRGlzYWJsZWQgPSBfcmVmLmlzRGlzYWJsZWQsXG4gICAgdmFsdWUgPSBfcmVmLnZhbHVlLFxuICAgIF9yZWYkdGhlbWUgPSBfcmVmLnRoZW1lLFxuICAgIHNwYWNpbmcgPSBfcmVmJHRoZW1lLnNwYWNpbmcsXG4gICAgY29sb3JzID0gX3JlZiR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgIHZpc2liaWxpdHk6IGlzRGlzYWJsZWQgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJyxcbiAgICAvLyBmb3JjZSBjc3MgdG8gcmVjb21wdXRlIHdoZW4gdmFsdWUgY2hhbmdlIGR1ZSB0byBAZW1vdGlvbiBidWcuXG4gICAgLy8gV2UgY2FuIHJlbW92ZSBpdCB3aGVuZXZlciB0aGUgYnVnIGlzIGZpeGVkLlxuICAgIHRyYW5zZm9ybTogdmFsdWUgPyAndHJhbnNsYXRlWigwKScgOiAnJ1xuICB9LCBjb250YWluZXJTdHlsZSksIHVuc3R5bGVkID8ge30gOiB7XG4gICAgbWFyZ2luOiBzcGFjaW5nLmJhc2VVbml0IC8gMixcbiAgICBwYWRkaW5nQm90dG9tOiBzcGFjaW5nLmJhc2VVbml0IC8gMixcbiAgICBwYWRkaW5nVG9wOiBzcGFjaW5nLmJhc2VVbml0IC8gMixcbiAgICBjb2xvcjogY29sb3JzLm5ldXRyYWw4MFxuICB9KTtcbn07XG52YXIgc3BhY2luZ1N0eWxlID0ge1xuICBncmlkQXJlYTogJzEgLyAyJyxcbiAgZm9udDogJ2luaGVyaXQnLFxuICBtaW5XaWR0aDogJzJweCcsXG4gIGJvcmRlcjogMCxcbiAgbWFyZ2luOiAwLFxuICBvdXRsaW5lOiAwLFxuICBwYWRkaW5nOiAwXG59O1xudmFyIGNvbnRhaW5lclN0eWxlID0ge1xuICBmbGV4OiAnMSAxIGF1dG8nLFxuICBkaXNwbGF5OiAnaW5saW5lLWdyaWQnLFxuICBncmlkQXJlYTogJzEgLyAxIC8gMiAvIDMnLFxuICBncmlkVGVtcGxhdGVDb2x1bW5zOiAnMCBtaW4tY29udGVudCcsXG4gICcmOmFmdGVyJzogX29iamVjdFNwcmVhZCh7XG4gICAgY29udGVudDogJ2F0dHIoZGF0YS12YWx1ZSkgXCIgXCInLFxuICAgIHZpc2liaWxpdHk6ICdoaWRkZW4nLFxuICAgIHdoaXRlU3BhY2U6ICdwcmUnXG4gIH0sIHNwYWNpbmdTdHlsZSlcbn07XG52YXIgaW5wdXRTdHlsZSA9IGZ1bmN0aW9uIGlucHV0U3R5bGUoaXNIaWRkZW4pIHtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnaW5wdXQnLFxuICAgIGNvbG9yOiAnaW5oZXJpdCcsXG4gICAgYmFja2dyb3VuZDogMCxcbiAgICBvcGFjaXR5OiBpc0hpZGRlbiA/IDAgOiAxLFxuICAgIHdpZHRoOiAnMTAwJSdcbiAgfSwgc3BhY2luZ1N0eWxlKTtcbn07XG52YXIgSW5wdXQgPSBmdW5jdGlvbiBJbnB1dChwcm9wcykge1xuICB2YXIgY3ggPSBwcm9wcy5jeCxcbiAgICB2YWx1ZSA9IHByb3BzLnZhbHVlO1xuICB2YXIgX2NsZWFuQ29tbW9uUHJvcHMgPSBjbGVhbkNvbW1vblByb3BzKHByb3BzKSxcbiAgICBpbm5lclJlZiA9IF9jbGVhbkNvbW1vblByb3BzLmlubmVyUmVmLFxuICAgIGlzRGlzYWJsZWQgPSBfY2xlYW5Db21tb25Qcm9wcy5pc0Rpc2FibGVkLFxuICAgIGlzSGlkZGVuID0gX2NsZWFuQ29tbW9uUHJvcHMuaXNIaWRkZW4sXG4gICAgaW5wdXRDbGFzc05hbWUgPSBfY2xlYW5Db21tb25Qcm9wcy5pbnB1dENsYXNzTmFtZSxcbiAgICBpbm5lclByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9jbGVhbkNvbW1vblByb3BzLCBfZXhjbHVkZWQpO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnaW5wdXQnLCB7XG4gICAgJ2lucHV0LWNvbnRhaW5lcic6IHRydWVcbiAgfSksIHtcbiAgICBcImRhdGEtdmFsdWVcIjogdmFsdWUgfHwgJydcbiAgfSksIHJlYWN0LmpzeChcImlucHV0XCIsIF9leHRlbmRzKHtcbiAgICBjbGFzc05hbWU6IGN4KHtcbiAgICAgIGlucHV0OiB0cnVlXG4gICAgfSwgaW5wdXRDbGFzc05hbWUpLFxuICAgIHJlZjogaW5uZXJSZWYsXG4gICAgc3R5bGU6IGlucHV0U3R5bGUoaXNIaWRkZW4pLFxuICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkXG4gIH0sIGlubmVyUHJvcHMpKSk7XG59O1xudmFyIElucHV0JDEgPSBJbnB1dDtcblxudmFyIG11bHRpVmFsdWVDU1MgPSBmdW5jdGlvbiBtdWx0aVZhbHVlQ1NTKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBfcmVmJHRoZW1lID0gX3JlZi50aGVtZSxcbiAgICBzcGFjaW5nID0gX3JlZiR0aGVtZS5zcGFjaW5nLFxuICAgIGJvcmRlclJhZGl1cyA9IF9yZWYkdGhlbWUuYm9yZGVyUmFkaXVzLFxuICAgIGNvbG9ycyA9IF9yZWYkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdtdWx0aVZhbHVlJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgbWluV2lkdGg6IDBcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9ycy5uZXV0cmFsMTAsXG4gICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMgLyAyLFxuICAgIG1hcmdpbjogc3BhY2luZy5iYXNlVW5pdCAvIDJcbiAgfSk7XG59O1xudmFyIG11bHRpVmFsdWVMYWJlbENTUyA9IGZ1bmN0aW9uIG11bHRpVmFsdWVMYWJlbENTUyhfcmVmMiwgdW5zdHlsZWQpIHtcbiAgdmFyIF9yZWYyJHRoZW1lID0gX3JlZjIudGhlbWUsXG4gICAgYm9yZGVyUmFkaXVzID0gX3JlZjIkdGhlbWUuYm9yZGVyUmFkaXVzLFxuICAgIGNvbG9ycyA9IF9yZWYyJHRoZW1lLmNvbG9ycyxcbiAgICBjcm9wV2l0aEVsbGlwc2lzID0gX3JlZjIuY3JvcFdpdGhFbGxpcHNpcztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICB0ZXh0T3ZlcmZsb3c6IGNyb3BXaXRoRWxsaXBzaXMgfHwgY3JvcFdpdGhFbGxpcHNpcyA9PT0gdW5kZWZpbmVkID8gJ2VsbGlwc2lzJyA6IHVuZGVmaW5lZCxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzIC8gMixcbiAgICBjb2xvcjogY29sb3JzLm5ldXRyYWw4MCxcbiAgICBmb250U2l6ZTogJzg1JScsXG4gICAgcGFkZGluZzogMyxcbiAgICBwYWRkaW5nTGVmdDogNlxuICB9KTtcbn07XG52YXIgbXVsdGlWYWx1ZVJlbW92ZUNTUyA9IGZ1bmN0aW9uIG11bHRpVmFsdWVSZW1vdmVDU1MoX3JlZjMsIHVuc3R5bGVkKSB7XG4gIHZhciBfcmVmMyR0aGVtZSA9IF9yZWYzLnRoZW1lLFxuICAgIHNwYWNpbmcgPSBfcmVmMyR0aGVtZS5zcGFjaW5nLFxuICAgIGJvcmRlclJhZGl1cyA9IF9yZWYzJHRoZW1lLmJvcmRlclJhZGl1cyxcbiAgICBjb2xvcnMgPSBfcmVmMyR0aGVtZS5jb2xvcnMsXG4gICAgaXNGb2N1c2VkID0gX3JlZjMuaXNGb2N1c2VkO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgZGlzcGxheTogJ2ZsZXgnXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMgLyAyLFxuICAgIGJhY2tncm91bmRDb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLmRhbmdlckxpZ2h0IDogdW5kZWZpbmVkLFxuICAgIHBhZGRpbmdMZWZ0OiBzcGFjaW5nLmJhc2VVbml0LFxuICAgIHBhZGRpbmdSaWdodDogc3BhY2luZy5iYXNlVW5pdCxcbiAgICAnOmhvdmVyJzoge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiBjb2xvcnMuZGFuZ2VyTGlnaHQsXG4gICAgICBjb2xvcjogY29sb3JzLmRhbmdlclxuICAgIH1cbiAgfSk7XG59O1xudmFyIE11bHRpVmFsdWVHZW5lcmljID0gZnVuY3Rpb24gTXVsdGlWYWx1ZUdlbmVyaWMoX3JlZjQpIHtcbiAgdmFyIGNoaWxkcmVuID0gX3JlZjQuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IF9yZWY0LmlubmVyUHJvcHM7XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgaW5uZXJQcm9wcywgY2hpbGRyZW4pO1xufTtcbnZhciBNdWx0aVZhbHVlQ29udGFpbmVyID0gTXVsdGlWYWx1ZUdlbmVyaWM7XG52YXIgTXVsdGlWYWx1ZUxhYmVsID0gTXVsdGlWYWx1ZUdlbmVyaWM7XG5mdW5jdGlvbiBNdWx0aVZhbHVlUmVtb3ZlKF9yZWY1KSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWY1LmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBfcmVmNS5pbm5lclByb3BzO1xuICByZXR1cm4gcmVhY3QuanN4KFwiZGl2XCIsIF9leHRlbmRzKHtcbiAgICByb2xlOiBcImJ1dHRvblwiXG4gIH0sIGlubmVyUHJvcHMpLCBjaGlsZHJlbiB8fCByZWFjdC5qc3goQ3Jvc3NJY29uLCB7XG4gICAgc2l6ZTogMTRcbiAgfSkpO1xufVxudmFyIE11bHRpVmFsdWUgPSBmdW5jdGlvbiBNdWx0aVZhbHVlKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGNvbXBvbmVudHMgPSBwcm9wcy5jb21wb25lbnRzLFxuICAgIGRhdGEgPSBwcm9wcy5kYXRhLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgIHJlbW92ZVByb3BzID0gcHJvcHMucmVtb3ZlUHJvcHMsXG4gICAgc2VsZWN0UHJvcHMgPSBwcm9wcy5zZWxlY3RQcm9wcztcbiAgdmFyIENvbnRhaW5lciA9IGNvbXBvbmVudHMuQ29udGFpbmVyLFxuICAgIExhYmVsID0gY29tcG9uZW50cy5MYWJlbCxcbiAgICBSZW1vdmUgPSBjb21wb25lbnRzLlJlbW92ZTtcbiAgcmV0dXJuIHJlYWN0LmpzeChDb250YWluZXIsIHtcbiAgICBkYXRhOiBkYXRhLFxuICAgIGlubmVyUHJvcHM6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ211bHRpVmFsdWUnLCB7XG4gICAgICAnbXVsdGktdmFsdWUnOiB0cnVlLFxuICAgICAgJ211bHRpLXZhbHVlLS1pcy1kaXNhYmxlZCc6IGlzRGlzYWJsZWRcbiAgICB9KSksIGlubmVyUHJvcHMpLFxuICAgIHNlbGVjdFByb3BzOiBzZWxlY3RQcm9wc1xuICB9LCByZWFjdC5qc3goTGFiZWwsIHtcbiAgICBkYXRhOiBkYXRhLFxuICAgIGlubmVyUHJvcHM6IF9vYmplY3RTcHJlYWQoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdtdWx0aVZhbHVlTGFiZWwnLCB7XG4gICAgICAnbXVsdGktdmFsdWVfX2xhYmVsJzogdHJ1ZVxuICAgIH0pKSxcbiAgICBzZWxlY3RQcm9wczogc2VsZWN0UHJvcHNcbiAgfSwgY2hpbGRyZW4pLCByZWFjdC5qc3goUmVtb3ZlLCB7XG4gICAgZGF0YTogZGF0YSxcbiAgICBpbm5lclByb3BzOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdtdWx0aVZhbHVlUmVtb3ZlJywge1xuICAgICAgJ211bHRpLXZhbHVlX19yZW1vdmUnOiB0cnVlXG4gICAgfSkpLCB7fSwge1xuICAgICAgJ2FyaWEtbGFiZWwnOiBcIlJlbW92ZSBcIi5jb25jYXQoY2hpbGRyZW4gfHwgJ29wdGlvbicpXG4gICAgfSwgcmVtb3ZlUHJvcHMpLFxuICAgIHNlbGVjdFByb3BzOiBzZWxlY3RQcm9wc1xuICB9KSk7XG59O1xudmFyIE11bHRpVmFsdWUkMSA9IE11bHRpVmFsdWU7XG5cbnZhciBvcHRpb25DU1MgPSBmdW5jdGlvbiBvcHRpb25DU1MoX3JlZiwgdW5zdHlsZWQpIHtcbiAgdmFyIGlzRGlzYWJsZWQgPSBfcmVmLmlzRGlzYWJsZWQsXG4gICAgaXNGb2N1c2VkID0gX3JlZi5pc0ZvY3VzZWQsXG4gICAgaXNTZWxlY3RlZCA9IF9yZWYuaXNTZWxlY3RlZCxcbiAgICBfcmVmJHRoZW1lID0gX3JlZi50aGVtZSxcbiAgICBzcGFjaW5nID0gX3JlZiR0aGVtZS5zcGFjaW5nLFxuICAgIGNvbG9ycyA9IF9yZWYkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdvcHRpb24nLFxuICAgIGN1cnNvcjogJ2RlZmF1bHQnLFxuICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgZm9udFNpemU6ICdpbmhlcml0JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHVzZXJTZWxlY3Q6ICdub25lJyxcbiAgICBXZWJraXRUYXBIaWdobGlnaHRDb2xvcjogJ3JnYmEoMCwgMCwgMCwgMCknXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBpc1NlbGVjdGVkID8gY29sb3JzLnByaW1hcnkgOiBpc0ZvY3VzZWQgPyBjb2xvcnMucHJpbWFyeTI1IDogJ3RyYW5zcGFyZW50JyxcbiAgICBjb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsMjAgOiBpc1NlbGVjdGVkID8gY29sb3JzLm5ldXRyYWwwIDogJ2luaGVyaXQnLFxuICAgIHBhZGRpbmc6IFwiXCIuY29uY2F0KHNwYWNpbmcuYmFzZVVuaXQgKiAyLCBcInB4IFwiKS5jb25jYXQoc3BhY2luZy5iYXNlVW5pdCAqIDMsIFwicHhcIiksXG4gICAgLy8gcHJvdmlkZSBzb21lIGFmZm9yZGFuY2Ugb24gdG91Y2ggZGV2aWNlc1xuICAgICc6YWN0aXZlJzoge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAhaXNEaXNhYmxlZCA/IGlzU2VsZWN0ZWQgPyBjb2xvcnMucHJpbWFyeSA6IGNvbG9ycy5wcmltYXJ5NTAgOiB1bmRlZmluZWRcbiAgICB9XG4gIH0pO1xufTtcbnZhciBPcHRpb24gPSBmdW5jdGlvbiBPcHRpb24ocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgaXNGb2N1c2VkID0gcHJvcHMuaXNGb2N1c2VkLFxuICAgIGlzU2VsZWN0ZWQgPSBwcm9wcy5pc1NlbGVjdGVkLFxuICAgIGlubmVyUmVmID0gcHJvcHMuaW5uZXJSZWYsXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdvcHRpb24nLCB7XG4gICAgb3B0aW9uOiB0cnVlLFxuICAgICdvcHRpb24tLWlzLWRpc2FibGVkJzogaXNEaXNhYmxlZCxcbiAgICAnb3B0aW9uLS1pcy1mb2N1c2VkJzogaXNGb2N1c2VkLFxuICAgICdvcHRpb24tLWlzLXNlbGVjdGVkJzogaXNTZWxlY3RlZFxuICB9KSwge1xuICAgIHJlZjogaW5uZXJSZWYsXG4gICAgXCJhcmlhLWRpc2FibGVkXCI6IGlzRGlzYWJsZWRcbiAgfSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG52YXIgT3B0aW9uJDEgPSBPcHRpb247XG5cbnZhciBwbGFjZWhvbGRlckNTUyA9IGZ1bmN0aW9uIHBsYWNlaG9sZGVyQ1NTKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBfcmVmJHRoZW1lID0gX3JlZi50aGVtZSxcbiAgICBzcGFjaW5nID0gX3JlZiR0aGVtZS5zcGFjaW5nLFxuICAgIGNvbG9ycyA9IF9yZWYkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdwbGFjZWhvbGRlcicsXG4gICAgZ3JpZEFyZWE6ICcxIC8gMSAvIDIgLyAzJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBjb2xvcnMubmV1dHJhbDUwLFxuICAgIG1hcmdpbkxlZnQ6IHNwYWNpbmcuYmFzZVVuaXQgLyAyLFxuICAgIG1hcmdpblJpZ2h0OiBzcGFjaW5nLmJhc2VVbml0IC8gMlxuICB9KTtcbn07XG52YXIgUGxhY2Vob2xkZXIgPSBmdW5jdGlvbiBQbGFjZWhvbGRlcihwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcztcbiAgcmV0dXJuIHJlYWN0LmpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ3BsYWNlaG9sZGVyJywge1xuICAgIHBsYWNlaG9sZGVyOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcbnZhciBQbGFjZWhvbGRlciQxID0gUGxhY2Vob2xkZXI7XG5cbnZhciBjc3MgPSBmdW5jdGlvbiBjc3MoX3JlZiwgdW5zdHlsZWQpIHtcbiAgdmFyIGlzRGlzYWJsZWQgPSBfcmVmLmlzRGlzYWJsZWQsXG4gICAgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZyxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnc2luZ2xlVmFsdWUnLFxuICAgIGdyaWRBcmVhOiAnMSAvIDEgLyAyIC8gMycsXG4gICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgY29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDQwIDogY29sb3JzLm5ldXRyYWw4MCxcbiAgICBtYXJnaW5MZWZ0OiBzcGFjaW5nLmJhc2VVbml0IC8gMixcbiAgICBtYXJnaW5SaWdodDogc3BhY2luZy5iYXNlVW5pdCAvIDJcbiAgfSk7XG59O1xudmFyIFNpbmdsZVZhbHVlID0gZnVuY3Rpb24gU2luZ2xlVmFsdWUocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiByZWFjdC5qc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdzaW5nbGVWYWx1ZScsIHtcbiAgICAnc2luZ2xlLXZhbHVlJzogdHJ1ZSxcbiAgICAnc2luZ2xlLXZhbHVlLS1pcy1kaXNhYmxlZCc6IGlzRGlzYWJsZWRcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xudmFyIFNpbmdsZVZhbHVlJDEgPSBTaW5nbGVWYWx1ZTtcblxudmFyIGNvbXBvbmVudHMgPSB7XG4gIENsZWFySW5kaWNhdG9yOiBDbGVhckluZGljYXRvcixcbiAgQ29udHJvbDogQ29udHJvbCQxLFxuICBEcm9wZG93bkluZGljYXRvcjogRHJvcGRvd25JbmRpY2F0b3IsXG4gIERvd25DaGV2cm9uOiBEb3duQ2hldnJvbixcbiAgQ3Jvc3NJY29uOiBDcm9zc0ljb24sXG4gIEdyb3VwOiBHcm91cCQxLFxuICBHcm91cEhlYWRpbmc6IEdyb3VwSGVhZGluZyxcbiAgSW5kaWNhdG9yc0NvbnRhaW5lcjogSW5kaWNhdG9yc0NvbnRhaW5lcixcbiAgSW5kaWNhdG9yU2VwYXJhdG9yOiBJbmRpY2F0b3JTZXBhcmF0b3IsXG4gIElucHV0OiBJbnB1dCQxLFxuICBMb2FkaW5nSW5kaWNhdG9yOiBMb2FkaW5nSW5kaWNhdG9yLFxuICBNZW51OiBNZW51JDEsXG4gIE1lbnVMaXN0OiBNZW51TGlzdCxcbiAgTWVudVBvcnRhbDogTWVudVBvcnRhbCxcbiAgTG9hZGluZ01lc3NhZ2U6IExvYWRpbmdNZXNzYWdlLFxuICBOb09wdGlvbnNNZXNzYWdlOiBOb09wdGlvbnNNZXNzYWdlLFxuICBNdWx0aVZhbHVlOiBNdWx0aVZhbHVlJDEsXG4gIE11bHRpVmFsdWVDb250YWluZXI6IE11bHRpVmFsdWVDb250YWluZXIsXG4gIE11bHRpVmFsdWVMYWJlbDogTXVsdGlWYWx1ZUxhYmVsLFxuICBNdWx0aVZhbHVlUmVtb3ZlOiBNdWx0aVZhbHVlUmVtb3ZlLFxuICBPcHRpb246IE9wdGlvbiQxLFxuICBQbGFjZWhvbGRlcjogUGxhY2Vob2xkZXIkMSxcbiAgU2VsZWN0Q29udGFpbmVyOiBTZWxlY3RDb250YWluZXIsXG4gIFNpbmdsZVZhbHVlOiBTaW5nbGVWYWx1ZSQxLFxuICBWYWx1ZUNvbnRhaW5lcjogVmFsdWVDb250YWluZXJcbn07XG52YXIgZGVmYXVsdENvbXBvbmVudHMgPSBmdW5jdGlvbiBkZWZhdWx0Q29tcG9uZW50cyhwcm9wcykge1xuICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBjb21wb25lbnRzKSwgcHJvcHMuY29tcG9uZW50cyk7XG59O1xuXG5leHBvcnRzLk1lbnVQbGFjZXIgPSBNZW51UGxhY2VyO1xuZXhwb3J0cy5jbGFzc05hbWVzID0gY2xhc3NOYW1lcztcbmV4cG9ydHMuY2xlYW5WYWx1ZSA9IGNsZWFuVmFsdWU7XG5leHBvcnRzLmNsZWFySW5kaWNhdG9yQ1NTID0gY2xlYXJJbmRpY2F0b3JDU1M7XG5leHBvcnRzLmNvbXBvbmVudHMgPSBjb21wb25lbnRzO1xuZXhwb3J0cy5jb250YWluZXJDU1MgPSBjb250YWluZXJDU1M7XG5leHBvcnRzLmNzcyA9IGNzcyQxO1xuZXhwb3J0cy5jc3MkMSA9IGNzcztcbmV4cG9ydHMuZGVmYXVsdENvbXBvbmVudHMgPSBkZWZhdWx0Q29tcG9uZW50cztcbmV4cG9ydHMuZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBkcm9wZG93bkluZGljYXRvckNTUztcbmV4cG9ydHMuZ3JvdXBDU1MgPSBncm91cENTUztcbmV4cG9ydHMuZ3JvdXBIZWFkaW5nQ1NTID0gZ3JvdXBIZWFkaW5nQ1NTO1xuZXhwb3J0cy5oYW5kbGVJbnB1dENoYW5nZSA9IGhhbmRsZUlucHV0Q2hhbmdlO1xuZXhwb3J0cy5pbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSBpbmRpY2F0b3JTZXBhcmF0b3JDU1M7XG5leHBvcnRzLmluZGljYXRvcnNDb250YWluZXJDU1MgPSBpbmRpY2F0b3JzQ29udGFpbmVyQ1NTO1xuZXhwb3J0cy5pbnB1dENTUyA9IGlucHV0Q1NTO1xuZXhwb3J0cy5pc0RvY3VtZW50RWxlbWVudCA9IGlzRG9jdW1lbnRFbGVtZW50O1xuZXhwb3J0cy5pc01vYmlsZURldmljZSA9IGlzTW9iaWxlRGV2aWNlO1xuZXhwb3J0cy5pc1RvdWNoQ2FwYWJsZSA9IGlzVG91Y2hDYXBhYmxlO1xuZXhwb3J0cy5sb2FkaW5nSW5kaWNhdG9yQ1NTID0gbG9hZGluZ0luZGljYXRvckNTUztcbmV4cG9ydHMubG9hZGluZ01lc3NhZ2VDU1MgPSBsb2FkaW5nTWVzc2FnZUNTUztcbmV4cG9ydHMubWVudUNTUyA9IG1lbnVDU1M7XG5leHBvcnRzLm1lbnVMaXN0Q1NTID0gbWVudUxpc3RDU1M7XG5leHBvcnRzLm1lbnVQb3J0YWxDU1MgPSBtZW51UG9ydGFsQ1NTO1xuZXhwb3J0cy5tdWx0aVZhbHVlQXNWYWx1ZSA9IG11bHRpVmFsdWVBc1ZhbHVlO1xuZXhwb3J0cy5tdWx0aVZhbHVlQ1NTID0gbXVsdGlWYWx1ZUNTUztcbmV4cG9ydHMubXVsdGlWYWx1ZUxhYmVsQ1NTID0gbXVsdGlWYWx1ZUxhYmVsQ1NTO1xuZXhwb3J0cy5tdWx0aVZhbHVlUmVtb3ZlQ1NTID0gbXVsdGlWYWx1ZVJlbW92ZUNTUztcbmV4cG9ydHMubm9PcHRpb25zTWVzc2FnZUNTUyA9IG5vT3B0aW9uc01lc3NhZ2VDU1M7XG5leHBvcnRzLm5vb3AgPSBub29wO1xuZXhwb3J0cy5ub3ROdWxsaXNoID0gbm90TnVsbGlzaDtcbmV4cG9ydHMub3B0aW9uQ1NTID0gb3B0aW9uQ1NTO1xuZXhwb3J0cy5wbGFjZWhvbGRlckNTUyA9IHBsYWNlaG9sZGVyQ1NTO1xuZXhwb3J0cy5yZW1vdmVQcm9wcyA9IHJlbW92ZVByb3BzO1xuZXhwb3J0cy5zY3JvbGxJbnRvVmlldyA9IHNjcm9sbEludG9WaWV3O1xuZXhwb3J0cy5zaW5nbGVWYWx1ZUFzVmFsdWUgPSBzaW5nbGVWYWx1ZUFzVmFsdWU7XG5leHBvcnRzLnN1cHBvcnRzUGFzc2l2ZUV2ZW50cyA9IHN1cHBvcnRzUGFzc2l2ZUV2ZW50cztcbmV4cG9ydHMudmFsdWVDb250YWluZXJDU1MgPSB2YWx1ZUNvbnRhaW5lckNTUztcbmV4cG9ydHMudmFsdWVUZXJuYXJ5ID0gdmFsdWVUZXJuYXJ5O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2V4dGVuZHMgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHMnKTtcbnZhciBfb2JqZWN0U3ByZWFkID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RTcHJlYWQyJyk7XG52YXIgX2NsYXNzQ2FsbENoZWNrID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjaycpO1xudmFyIF9jcmVhdGVDbGFzcyA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MnKTtcbnZhciBfaW5oZXJpdHMgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzJyk7XG52YXIgX2NyZWF0ZVN1cGVyID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVTdXBlcicpO1xudmFyIF90b0NvbnN1bWFibGVBcnJheSA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXknKTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG52YXIgaW5kZXggPSByZXF1aXJlKCcuL2luZGV4LTY2NWM0ZWQ4LmNqcy5wcm9kLmpzJyk7XG52YXIgcmVhY3QgPSByZXF1aXJlKCdAZW1vdGlvbi9yZWFjdCcpO1xudmFyIG1lbW9pemVPbmUgPSByZXF1aXJlKCdtZW1vaXplLW9uZScpO1xudmFyIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXMnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BEZWZhdWx0IChlKSB7IHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7ICdkZWZhdWx0JzogZSB9OyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wTmFtZXNwYWNlKGUpIHtcbiAgaWYgKGUgJiYgZS5fX2VzTW9kdWxlKSByZXR1cm4gZTtcbiAgdmFyIG4gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBpZiAoZSkge1xuICAgIE9iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgIGlmIChrICE9PSAnZGVmYXVsdCcpIHtcbiAgICAgICAgdmFyIGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIGspO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobiwgaywgZC5nZXQgPyBkIDoge1xuICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBlW2tdOyB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIG5bXCJkZWZhdWx0XCJdID0gZTtcbiAgcmV0dXJuIE9iamVjdC5mcmVlemUobik7XG59XG5cbnZhciBSZWFjdF9fbmFtZXNwYWNlID0gLyojX19QVVJFX18qL19pbnRlcm9wTmFtZXNwYWNlKFJlYWN0KTtcbnZhciBtZW1vaXplT25lX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19pbnRlcm9wRGVmYXVsdChtZW1vaXplT25lKTtcblxuLy8gQXNzaXN0aXZlIHRleHQgdG8gZGVzY3JpYmUgdmlzdWFsIGVsZW1lbnRzLiBIaWRkZW4gZm9yIHNpZ2h0ZWQgdXNlcnMuXG52YXIgX3JlZiA9IHtcbiAgbmFtZTogXCI3cGcwY2otYTExeVRleHRcIixcbiAgc3R5bGVzOiBcImxhYmVsOmExMXlUZXh0O3otaW5kZXg6OTk5OTtib3JkZXI6MDtjbGlwOnJlY3QoMXB4LCAxcHgsIDFweCwgMXB4KTtoZWlnaHQ6MXB4O3dpZHRoOjFweDtwb3NpdGlvbjphYnNvbHV0ZTtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3doaXRlLXNwYWNlOm5vd3JhcFwiXG59IDtcbnZhciBBMTF5VGV4dCA9IGZ1bmN0aW9uIEExMXlUZXh0KHByb3BzKSB7XG4gIHJldHVybiByZWFjdC5qc3goXCJzcGFuXCIsIF9leHRlbmRzKHtcbiAgICBjc3M6IF9yZWZcbiAgfSwgcHJvcHMpKTtcbn07XG52YXIgQTExeVRleHQkMSA9IEExMXlUZXh0O1xuXG52YXIgZGVmYXVsdEFyaWFMaXZlTWVzc2FnZXMgPSB7XG4gIGd1aWRhbmNlOiBmdW5jdGlvbiBndWlkYW5jZShwcm9wcykge1xuICAgIHZhciBpc1NlYXJjaGFibGUgPSBwcm9wcy5pc1NlYXJjaGFibGUsXG4gICAgICBpc011bHRpID0gcHJvcHMuaXNNdWx0aSxcbiAgICAgIHRhYlNlbGVjdHNWYWx1ZSA9IHByb3BzLnRhYlNlbGVjdHNWYWx1ZSxcbiAgICAgIGNvbnRleHQgPSBwcm9wcy5jb250ZXh0LFxuICAgICAgaXNJbml0aWFsRm9jdXMgPSBwcm9wcy5pc0luaXRpYWxGb2N1cztcbiAgICBzd2l0Y2ggKGNvbnRleHQpIHtcbiAgICAgIGNhc2UgJ21lbnUnOlxuICAgICAgICByZXR1cm4gXCJVc2UgVXAgYW5kIERvd24gdG8gY2hvb3NlIG9wdGlvbnMsIHByZXNzIEVudGVyIHRvIHNlbGVjdCB0aGUgY3VycmVudGx5IGZvY3VzZWQgb3B0aW9uLCBwcmVzcyBFc2NhcGUgdG8gZXhpdCB0aGUgbWVudVwiLmNvbmNhdCh0YWJTZWxlY3RzVmFsdWUgPyAnLCBwcmVzcyBUYWIgdG8gc2VsZWN0IHRoZSBvcHRpb24gYW5kIGV4aXQgdGhlIG1lbnUnIDogJycsIFwiLlwiKTtcbiAgICAgIGNhc2UgJ2lucHV0JzpcbiAgICAgICAgcmV0dXJuIGlzSW5pdGlhbEZvY3VzID8gXCJcIi5jb25jYXQocHJvcHNbJ2FyaWEtbGFiZWwnXSB8fCAnU2VsZWN0JywgXCIgaXMgZm9jdXNlZCBcIikuY29uY2F0KGlzU2VhcmNoYWJsZSA/ICcsdHlwZSB0byByZWZpbmUgbGlzdCcgOiAnJywgXCIsIHByZXNzIERvd24gdG8gb3BlbiB0aGUgbWVudSwgXCIpLmNvbmNhdChpc011bHRpID8gJyBwcmVzcyBsZWZ0IHRvIGZvY3VzIHNlbGVjdGVkIHZhbHVlcycgOiAnJykgOiAnJztcbiAgICAgIGNhc2UgJ3ZhbHVlJzpcbiAgICAgICAgcmV0dXJuICdVc2UgbGVmdCBhbmQgcmlnaHQgdG8gdG9nZ2xlIGJldHdlZW4gZm9jdXNlZCB2YWx1ZXMsIHByZXNzIEJhY2tzcGFjZSB0byByZW1vdmUgdGhlIGN1cnJlbnRseSBmb2N1c2VkIHZhbHVlJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH0sXG4gIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShwcm9wcykge1xuICAgIHZhciBhY3Rpb24gPSBwcm9wcy5hY3Rpb24sXG4gICAgICBfcHJvcHMkbGFiZWwgPSBwcm9wcy5sYWJlbCxcbiAgICAgIGxhYmVsID0gX3Byb3BzJGxhYmVsID09PSB2b2lkIDAgPyAnJyA6IF9wcm9wcyRsYWJlbCxcbiAgICAgIGxhYmVscyA9IHByb3BzLmxhYmVscyxcbiAgICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkO1xuICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICBjYXNlICdkZXNlbGVjdC1vcHRpb24nOlxuICAgICAgY2FzZSAncG9wLXZhbHVlJzpcbiAgICAgIGNhc2UgJ3JlbW92ZS12YWx1ZSc6XG4gICAgICAgIHJldHVybiBcIm9wdGlvbiBcIi5jb25jYXQobGFiZWwsIFwiLCBkZXNlbGVjdGVkLlwiKTtcbiAgICAgIGNhc2UgJ2NsZWFyJzpcbiAgICAgICAgcmV0dXJuICdBbGwgc2VsZWN0ZWQgb3B0aW9ucyBoYXZlIGJlZW4gY2xlYXJlZC4nO1xuICAgICAgY2FzZSAnaW5pdGlhbC1pbnB1dC1mb2N1cyc6XG4gICAgICAgIHJldHVybiBcIm9wdGlvblwiLmNvbmNhdChsYWJlbHMubGVuZ3RoID4gMSA/ICdzJyA6ICcnLCBcIiBcIikuY29uY2F0KGxhYmVscy5qb2luKCcsJyksIFwiLCBzZWxlY3RlZC5cIik7XG4gICAgICBjYXNlICdzZWxlY3Qtb3B0aW9uJzpcbiAgICAgICAgcmV0dXJuIGlzRGlzYWJsZWQgPyBcIm9wdGlvbiBcIi5jb25jYXQobGFiZWwsIFwiIGlzIGRpc2FibGVkLiBTZWxlY3QgYW5vdGhlciBvcHRpb24uXCIpIDogXCJvcHRpb24gXCIuY29uY2F0KGxhYmVsLCBcIiwgc2VsZWN0ZWQuXCIpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfSxcbiAgb25Gb2N1czogZnVuY3Rpb24gb25Gb2N1cyhwcm9wcykge1xuICAgIHZhciBjb250ZXh0ID0gcHJvcHMuY29udGV4dCxcbiAgICAgIGZvY3VzZWQgPSBwcm9wcy5mb2N1c2VkLFxuICAgICAgb3B0aW9ucyA9IHByb3BzLm9wdGlvbnMsXG4gICAgICBfcHJvcHMkbGFiZWwyID0gcHJvcHMubGFiZWwsXG4gICAgICBsYWJlbCA9IF9wcm9wcyRsYWJlbDIgPT09IHZvaWQgMCA/ICcnIDogX3Byb3BzJGxhYmVsMixcbiAgICAgIHNlbGVjdFZhbHVlID0gcHJvcHMuc2VsZWN0VmFsdWUsXG4gICAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZCxcbiAgICAgIGlzU2VsZWN0ZWQgPSBwcm9wcy5pc1NlbGVjdGVkLFxuICAgICAgaXNBcHBsZURldmljZSA9IHByb3BzLmlzQXBwbGVEZXZpY2U7XG4gICAgdmFyIGdldEFycmF5SW5kZXggPSBmdW5jdGlvbiBnZXRBcnJheUluZGV4KGFyciwgaXRlbSkge1xuICAgICAgcmV0dXJuIGFyciAmJiBhcnIubGVuZ3RoID8gXCJcIi5jb25jYXQoYXJyLmluZGV4T2YoaXRlbSkgKyAxLCBcIiBvZiBcIikuY29uY2F0KGFyci5sZW5ndGgpIDogJyc7XG4gICAgfTtcbiAgICBpZiAoY29udGV4dCA9PT0gJ3ZhbHVlJyAmJiBzZWxlY3RWYWx1ZSkge1xuICAgICAgcmV0dXJuIFwidmFsdWUgXCIuY29uY2F0KGxhYmVsLCBcIiBmb2N1c2VkLCBcIikuY29uY2F0KGdldEFycmF5SW5kZXgoc2VsZWN0VmFsdWUsIGZvY3VzZWQpLCBcIi5cIik7XG4gICAgfVxuICAgIGlmIChjb250ZXh0ID09PSAnbWVudScgJiYgaXNBcHBsZURldmljZSkge1xuICAgICAgdmFyIGRpc2FibGVkID0gaXNEaXNhYmxlZCA/ICcgZGlzYWJsZWQnIDogJyc7XG4gICAgICB2YXIgc3RhdHVzID0gXCJcIi5jb25jYXQoaXNTZWxlY3RlZCA/ICcgc2VsZWN0ZWQnIDogJycpLmNvbmNhdChkaXNhYmxlZCk7XG4gICAgICByZXR1cm4gXCJcIi5jb25jYXQobGFiZWwpLmNvbmNhdChzdGF0dXMsIFwiLCBcIikuY29uY2F0KGdldEFycmF5SW5kZXgob3B0aW9ucywgZm9jdXNlZCksIFwiLlwiKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9LFxuICBvbkZpbHRlcjogZnVuY3Rpb24gb25GaWx0ZXIocHJvcHMpIHtcbiAgICB2YXIgaW5wdXRWYWx1ZSA9IHByb3BzLmlucHV0VmFsdWUsXG4gICAgICByZXN1bHRzTWVzc2FnZSA9IHByb3BzLnJlc3VsdHNNZXNzYWdlO1xuICAgIHJldHVybiBcIlwiLmNvbmNhdChyZXN1bHRzTWVzc2FnZSkuY29uY2F0KGlucHV0VmFsdWUgPyAnIGZvciBzZWFyY2ggdGVybSAnICsgaW5wdXRWYWx1ZSA6ICcnLCBcIi5cIik7XG4gIH1cbn07XG5cbnZhciBMaXZlUmVnaW9uID0gZnVuY3Rpb24gTGl2ZVJlZ2lvbihwcm9wcykge1xuICB2YXIgYXJpYVNlbGVjdGlvbiA9IHByb3BzLmFyaWFTZWxlY3Rpb24sXG4gICAgZm9jdXNlZE9wdGlvbiA9IHByb3BzLmZvY3VzZWRPcHRpb24sXG4gICAgZm9jdXNlZFZhbHVlID0gcHJvcHMuZm9jdXNlZFZhbHVlLFxuICAgIGZvY3VzYWJsZU9wdGlvbnMgPSBwcm9wcy5mb2N1c2FibGVPcHRpb25zLFxuICAgIGlzRm9jdXNlZCA9IHByb3BzLmlzRm9jdXNlZCxcbiAgICBzZWxlY3RWYWx1ZSA9IHByb3BzLnNlbGVjdFZhbHVlLFxuICAgIHNlbGVjdFByb3BzID0gcHJvcHMuc2VsZWN0UHJvcHMsXG4gICAgaWQgPSBwcm9wcy5pZCxcbiAgICBpc0FwcGxlRGV2aWNlID0gcHJvcHMuaXNBcHBsZURldmljZTtcbiAgdmFyIGFyaWFMaXZlTWVzc2FnZXMgPSBzZWxlY3RQcm9wcy5hcmlhTGl2ZU1lc3NhZ2VzLFxuICAgIGdldE9wdGlvbkxhYmVsID0gc2VsZWN0UHJvcHMuZ2V0T3B0aW9uTGFiZWwsXG4gICAgaW5wdXRWYWx1ZSA9IHNlbGVjdFByb3BzLmlucHV0VmFsdWUsXG4gICAgaXNNdWx0aSA9IHNlbGVjdFByb3BzLmlzTXVsdGksXG4gICAgaXNPcHRpb25EaXNhYmxlZCA9IHNlbGVjdFByb3BzLmlzT3B0aW9uRGlzYWJsZWQsXG4gICAgaXNTZWFyY2hhYmxlID0gc2VsZWN0UHJvcHMuaXNTZWFyY2hhYmxlLFxuICAgIG1lbnVJc09wZW4gPSBzZWxlY3RQcm9wcy5tZW51SXNPcGVuLFxuICAgIG9wdGlvbnMgPSBzZWxlY3RQcm9wcy5vcHRpb25zLFxuICAgIHNjcmVlblJlYWRlclN0YXR1cyA9IHNlbGVjdFByb3BzLnNjcmVlblJlYWRlclN0YXR1cyxcbiAgICB0YWJTZWxlY3RzVmFsdWUgPSBzZWxlY3RQcm9wcy50YWJTZWxlY3RzVmFsdWUsXG4gICAgaXNMb2FkaW5nID0gc2VsZWN0UHJvcHMuaXNMb2FkaW5nO1xuICB2YXIgYXJpYUxhYmVsID0gc2VsZWN0UHJvcHNbJ2FyaWEtbGFiZWwnXTtcbiAgdmFyIGFyaWFMaXZlID0gc2VsZWN0UHJvcHNbJ2FyaWEtbGl2ZSddO1xuXG4gIC8vIFVwZGF0ZSBhcmlhIGxpdmUgbWVzc2FnZSBjb25maWd1cmF0aW9uIHdoZW4gcHJvcCBjaGFuZ2VzXG4gIHZhciBtZXNzYWdlcyA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGRlZmF1bHRBcmlhTGl2ZU1lc3NhZ2VzKSwgYXJpYUxpdmVNZXNzYWdlcyB8fCB7fSk7XG4gIH0sIFthcmlhTGl2ZU1lc3NhZ2VzXSk7XG5cbiAgLy8gVXBkYXRlIGFyaWEgbGl2ZSBzZWxlY3RlZCBvcHRpb24gd2hlbiBwcm9wIGNoYW5nZXNcbiAgdmFyIGFyaWFTZWxlY3RlZCA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBtZXNzYWdlID0gJyc7XG4gICAgaWYgKGFyaWFTZWxlY3Rpb24gJiYgbWVzc2FnZXMub25DaGFuZ2UpIHtcbiAgICAgIHZhciBvcHRpb24gPSBhcmlhU2VsZWN0aW9uLm9wdGlvbixcbiAgICAgICAgc2VsZWN0ZWRPcHRpb25zID0gYXJpYVNlbGVjdGlvbi5vcHRpb25zLFxuICAgICAgICByZW1vdmVkVmFsdWUgPSBhcmlhU2VsZWN0aW9uLnJlbW92ZWRWYWx1ZSxcbiAgICAgICAgcmVtb3ZlZFZhbHVlcyA9IGFyaWFTZWxlY3Rpb24ucmVtb3ZlZFZhbHVlcyxcbiAgICAgICAgdmFsdWUgPSBhcmlhU2VsZWN0aW9uLnZhbHVlO1xuICAgICAgLy8gc2VsZWN0LW9wdGlvbiB3aGVuICFpc011bHRpIGRvZXMgbm90IHJldHVybiBvcHRpb24gc28gd2UgYXNzdW1lIHNlbGVjdGVkIG9wdGlvbiBpcyB2YWx1ZVxuICAgICAgdmFyIGFzT3B0aW9uID0gZnVuY3Rpb24gYXNPcHRpb24odmFsKSB7XG4gICAgICAgIHJldHVybiAhQXJyYXkuaXNBcnJheSh2YWwpID8gdmFsIDogbnVsbDtcbiAgICAgIH07XG5cbiAgICAgIC8vIElmIHRoZXJlIGlzIGp1c3Qgb25lIGl0ZW0gZnJvbSB0aGUgYWN0aW9uIHRoZW4gZ2V0IGl0cyBsYWJlbFxuICAgICAgdmFyIHNlbGVjdGVkID0gcmVtb3ZlZFZhbHVlIHx8IG9wdGlvbiB8fCBhc09wdGlvbih2YWx1ZSk7XG4gICAgICB2YXIgbGFiZWwgPSBzZWxlY3RlZCA/IGdldE9wdGlvbkxhYmVsKHNlbGVjdGVkKSA6ICcnO1xuXG4gICAgICAvLyBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgaXRlbXMgZnJvbSB0aGUgYWN0aW9uIHRoZW4gcmV0dXJuIGFuIGFycmF5IG9mIGxhYmVsc1xuICAgICAgdmFyIG11bHRpU2VsZWN0ZWQgPSBzZWxlY3RlZE9wdGlvbnMgfHwgcmVtb3ZlZFZhbHVlcyB8fCB1bmRlZmluZWQ7XG4gICAgICB2YXIgbGFiZWxzID0gbXVsdGlTZWxlY3RlZCA/IG11bHRpU2VsZWN0ZWQubWFwKGdldE9wdGlvbkxhYmVsKSA6IFtdO1xuICAgICAgdmFyIG9uQ2hhbmdlUHJvcHMgPSBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgLy8gbXVsdGlTZWxlY3RlZCBpdGVtcyBhcmUgdXN1YWxseSBpdGVtcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIHNlbGVjdGVkXG4gICAgICAgIC8vIG9yIHNldCBieSB0aGUgdXNlciBhcyBhIGRlZmF1bHQgdmFsdWUgc28gd2UgYXNzdW1lIHRoZXkgYXJlIG5vdCBkaXNhYmxlZFxuICAgICAgICBpc0Rpc2FibGVkOiBzZWxlY3RlZCAmJiBpc09wdGlvbkRpc2FibGVkKHNlbGVjdGVkLCBzZWxlY3RWYWx1ZSksXG4gICAgICAgIGxhYmVsOiBsYWJlbCxcbiAgICAgICAgbGFiZWxzOiBsYWJlbHNcbiAgICAgIH0sIGFyaWFTZWxlY3Rpb24pO1xuICAgICAgbWVzc2FnZSA9IG1lc3NhZ2VzLm9uQ2hhbmdlKG9uQ2hhbmdlUHJvcHMpO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSwgW2FyaWFTZWxlY3Rpb24sIG1lc3NhZ2VzLCBpc09wdGlvbkRpc2FibGVkLCBzZWxlY3RWYWx1ZSwgZ2V0T3B0aW9uTGFiZWxdKTtcbiAgdmFyIGFyaWFGb2N1c2VkID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGZvY3VzTXNnID0gJyc7XG4gICAgdmFyIGZvY3VzZWQgPSBmb2N1c2VkT3B0aW9uIHx8IGZvY3VzZWRWYWx1ZTtcbiAgICB2YXIgaXNTZWxlY3RlZCA9ICEhKGZvY3VzZWRPcHRpb24gJiYgc2VsZWN0VmFsdWUgJiYgc2VsZWN0VmFsdWUuaW5jbHVkZXMoZm9jdXNlZE9wdGlvbikpO1xuICAgIGlmIChmb2N1c2VkICYmIG1lc3NhZ2VzLm9uRm9jdXMpIHtcbiAgICAgIHZhciBvbkZvY3VzUHJvcHMgPSB7XG4gICAgICAgIGZvY3VzZWQ6IGZvY3VzZWQsXG4gICAgICAgIGxhYmVsOiBnZXRPcHRpb25MYWJlbChmb2N1c2VkKSxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNPcHRpb25EaXNhYmxlZChmb2N1c2VkLCBzZWxlY3RWYWx1ZSksXG4gICAgICAgIGlzU2VsZWN0ZWQ6IGlzU2VsZWN0ZWQsXG4gICAgICAgIG9wdGlvbnM6IGZvY3VzYWJsZU9wdGlvbnMsXG4gICAgICAgIGNvbnRleHQ6IGZvY3VzZWQgPT09IGZvY3VzZWRPcHRpb24gPyAnbWVudScgOiAndmFsdWUnLFxuICAgICAgICBzZWxlY3RWYWx1ZTogc2VsZWN0VmFsdWUsXG4gICAgICAgIGlzQXBwbGVEZXZpY2U6IGlzQXBwbGVEZXZpY2VcbiAgICAgIH07XG4gICAgICBmb2N1c01zZyA9IG1lc3NhZ2VzLm9uRm9jdXMob25Gb2N1c1Byb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvY3VzTXNnO1xuICB9LCBbZm9jdXNlZE9wdGlvbiwgZm9jdXNlZFZhbHVlLCBnZXRPcHRpb25MYWJlbCwgaXNPcHRpb25EaXNhYmxlZCwgbWVzc2FnZXMsIGZvY3VzYWJsZU9wdGlvbnMsIHNlbGVjdFZhbHVlLCBpc0FwcGxlRGV2aWNlXSk7XG4gIHZhciBhcmlhUmVzdWx0cyA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXN1bHRzTXNnID0gJyc7XG4gICAgaWYgKG1lbnVJc09wZW4gJiYgb3B0aW9ucy5sZW5ndGggJiYgIWlzTG9hZGluZyAmJiBtZXNzYWdlcy5vbkZpbHRlcikge1xuICAgICAgdmFyIHJlc3VsdHNNZXNzYWdlID0gc2NyZWVuUmVhZGVyU3RhdHVzKHtcbiAgICAgICAgY291bnQ6IGZvY3VzYWJsZU9wdGlvbnMubGVuZ3RoXG4gICAgICB9KTtcbiAgICAgIHJlc3VsdHNNc2cgPSBtZXNzYWdlcy5vbkZpbHRlcih7XG4gICAgICAgIGlucHV0VmFsdWU6IGlucHV0VmFsdWUsXG4gICAgICAgIHJlc3VsdHNNZXNzYWdlOiByZXN1bHRzTWVzc2FnZVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzTXNnO1xuICB9LCBbZm9jdXNhYmxlT3B0aW9ucywgaW5wdXRWYWx1ZSwgbWVudUlzT3BlbiwgbWVzc2FnZXMsIG9wdGlvbnMsIHNjcmVlblJlYWRlclN0YXR1cywgaXNMb2FkaW5nXSk7XG4gIHZhciBpc0luaXRpYWxGb2N1cyA9IChhcmlhU2VsZWN0aW9uID09PSBudWxsIHx8IGFyaWFTZWxlY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFyaWFTZWxlY3Rpb24uYWN0aW9uKSA9PT0gJ2luaXRpYWwtaW5wdXQtZm9jdXMnO1xuICB2YXIgYXJpYUd1aWRhbmNlID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGd1aWRhbmNlTXNnID0gJyc7XG4gICAgaWYgKG1lc3NhZ2VzLmd1aWRhbmNlKSB7XG4gICAgICB2YXIgY29udGV4dCA9IGZvY3VzZWRWYWx1ZSA/ICd2YWx1ZScgOiBtZW51SXNPcGVuID8gJ21lbnUnIDogJ2lucHV0JztcbiAgICAgIGd1aWRhbmNlTXNnID0gbWVzc2FnZXMuZ3VpZGFuY2Uoe1xuICAgICAgICAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCxcbiAgICAgICAgY29udGV4dDogY29udGV4dCxcbiAgICAgICAgaXNEaXNhYmxlZDogZm9jdXNlZE9wdGlvbiAmJiBpc09wdGlvbkRpc2FibGVkKGZvY3VzZWRPcHRpb24sIHNlbGVjdFZhbHVlKSxcbiAgICAgICAgaXNNdWx0aTogaXNNdWx0aSxcbiAgICAgICAgaXNTZWFyY2hhYmxlOiBpc1NlYXJjaGFibGUsXG4gICAgICAgIHRhYlNlbGVjdHNWYWx1ZTogdGFiU2VsZWN0c1ZhbHVlLFxuICAgICAgICBpc0luaXRpYWxGb2N1czogaXNJbml0aWFsRm9jdXNcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZ3VpZGFuY2VNc2c7XG4gIH0sIFthcmlhTGFiZWwsIGZvY3VzZWRPcHRpb24sIGZvY3VzZWRWYWx1ZSwgaXNNdWx0aSwgaXNPcHRpb25EaXNhYmxlZCwgaXNTZWFyY2hhYmxlLCBtZW51SXNPcGVuLCBtZXNzYWdlcywgc2VsZWN0VmFsdWUsIHRhYlNlbGVjdHNWYWx1ZSwgaXNJbml0aWFsRm9jdXNdKTtcbiAgdmFyIFNjcmVlblJlYWRlclRleHQgPSByZWFjdC5qc3goUmVhY3QuRnJhZ21lbnQsIG51bGwsIHJlYWN0LmpzeChcInNwYW5cIiwge1xuICAgIGlkOiBcImFyaWEtc2VsZWN0aW9uXCJcbiAgfSwgYXJpYVNlbGVjdGVkKSwgcmVhY3QuanN4KFwic3BhblwiLCB7XG4gICAgaWQ6IFwiYXJpYS1mb2N1c2VkXCJcbiAgfSwgYXJpYUZvY3VzZWQpLCByZWFjdC5qc3goXCJzcGFuXCIsIHtcbiAgICBpZDogXCJhcmlhLXJlc3VsdHNcIlxuICB9LCBhcmlhUmVzdWx0cyksIHJlYWN0LmpzeChcInNwYW5cIiwge1xuICAgIGlkOiBcImFyaWEtZ3VpZGFuY2VcIlxuICB9LCBhcmlhR3VpZGFuY2UpKTtcbiAgcmV0dXJuIHJlYWN0LmpzeChSZWFjdC5GcmFnbWVudCwgbnVsbCwgcmVhY3QuanN4KEExMXlUZXh0JDEsIHtcbiAgICBpZDogaWRcbiAgfSwgaXNJbml0aWFsRm9jdXMgJiYgU2NyZWVuUmVhZGVyVGV4dCksIHJlYWN0LmpzeChBMTF5VGV4dCQxLCB7XG4gICAgXCJhcmlhLWxpdmVcIjogYXJpYUxpdmUsXG4gICAgXCJhcmlhLWF0b21pY1wiOiBcImZhbHNlXCIsXG4gICAgXCJhcmlhLXJlbGV2YW50XCI6IFwiYWRkaXRpb25zIHRleHRcIixcbiAgICByb2xlOiBcImxvZ1wiXG4gIH0sIGlzRm9jdXNlZCAmJiAhaXNJbml0aWFsRm9jdXMgJiYgU2NyZWVuUmVhZGVyVGV4dCkpO1xufTtcbnZhciBMaXZlUmVnaW9uJDEgPSBMaXZlUmVnaW9uO1xuXG52YXIgZGlhY3JpdGljcyA9IFt7XG4gIGJhc2U6ICdBJyxcbiAgbGV0dGVyczogXCJBXFx1MjRCNlxcdUZGMjFcXHhDMFxceEMxXFx4QzJcXHUxRUE2XFx1MUVBNFxcdTFFQUFcXHUxRUE4XFx4QzNcXHUwMTAwXFx1MDEwMlxcdTFFQjBcXHUxRUFFXFx1MUVCNFxcdTFFQjJcXHUwMjI2XFx1MDFFMFxceEM0XFx1MDFERVxcdTFFQTJcXHhDNVxcdTAxRkFcXHUwMUNEXFx1MDIwMFxcdTAyMDJcXHUxRUEwXFx1MUVBQ1xcdTFFQjZcXHUxRTAwXFx1MDEwNFxcdTAyM0FcXHUyQzZGXCJcbn0sIHtcbiAgYmFzZTogJ0FBJyxcbiAgbGV0dGVyczogXCJcXHVBNzMyXCJcbn0sIHtcbiAgYmFzZTogJ0FFJyxcbiAgbGV0dGVyczogXCJcXHhDNlxcdTAxRkNcXHUwMUUyXCJcbn0sIHtcbiAgYmFzZTogJ0FPJyxcbiAgbGV0dGVyczogXCJcXHVBNzM0XCJcbn0sIHtcbiAgYmFzZTogJ0FVJyxcbiAgbGV0dGVyczogXCJcXHVBNzM2XCJcbn0sIHtcbiAgYmFzZTogJ0FWJyxcbiAgbGV0dGVyczogXCJcXHVBNzM4XFx1QTczQVwiXG59LCB7XG4gIGJhc2U6ICdBWScsXG4gIGxldHRlcnM6IFwiXFx1QTczQ1wiXG59LCB7XG4gIGJhc2U6ICdCJyxcbiAgbGV0dGVyczogXCJCXFx1MjRCN1xcdUZGMjJcXHUxRTAyXFx1MUUwNFxcdTFFMDZcXHUwMjQzXFx1MDE4MlxcdTAxODFcIlxufSwge1xuICBiYXNlOiAnQycsXG4gIGxldHRlcnM6IFwiQ1xcdTI0QjhcXHVGRjIzXFx1MDEwNlxcdTAxMDhcXHUwMTBBXFx1MDEwQ1xceEM3XFx1MUUwOFxcdTAxODdcXHUwMjNCXFx1QTczRVwiXG59LCB7XG4gIGJhc2U6ICdEJyxcbiAgbGV0dGVyczogXCJEXFx1MjRCOVxcdUZGMjRcXHUxRTBBXFx1MDEwRVxcdTFFMENcXHUxRTEwXFx1MUUxMlxcdTFFMEVcXHUwMTEwXFx1MDE4QlxcdTAxOEFcXHUwMTg5XFx1QTc3OVwiXG59LCB7XG4gIGJhc2U6ICdEWicsXG4gIGxldHRlcnM6IFwiXFx1MDFGMVxcdTAxQzRcIlxufSwge1xuICBiYXNlOiAnRHonLFxuICBsZXR0ZXJzOiBcIlxcdTAxRjJcXHUwMUM1XCJcbn0sIHtcbiAgYmFzZTogJ0UnLFxuICBsZXR0ZXJzOiBcIkVcXHUyNEJBXFx1RkYyNVxceEM4XFx4QzlcXHhDQVxcdTFFQzBcXHUxRUJFXFx1MUVDNFxcdTFFQzJcXHUxRUJDXFx1MDExMlxcdTFFMTRcXHUxRTE2XFx1MDExNFxcdTAxMTZcXHhDQlxcdTFFQkFcXHUwMTFBXFx1MDIwNFxcdTAyMDZcXHUxRUI4XFx1MUVDNlxcdTAyMjhcXHUxRTFDXFx1MDExOFxcdTFFMThcXHUxRTFBXFx1MDE5MFxcdTAxOEVcIlxufSwge1xuICBiYXNlOiAnRicsXG4gIGxldHRlcnM6IFwiRlxcdTI0QkJcXHVGRjI2XFx1MUUxRVxcdTAxOTFcXHVBNzdCXCJcbn0sIHtcbiAgYmFzZTogJ0cnLFxuICBsZXR0ZXJzOiBcIkdcXHUyNEJDXFx1RkYyN1xcdTAxRjRcXHUwMTFDXFx1MUUyMFxcdTAxMUVcXHUwMTIwXFx1MDFFNlxcdTAxMjJcXHUwMUU0XFx1MDE5M1xcdUE3QTBcXHVBNzdEXFx1QTc3RVwiXG59LCB7XG4gIGJhc2U6ICdIJyxcbiAgbGV0dGVyczogXCJIXFx1MjRCRFxcdUZGMjhcXHUwMTI0XFx1MUUyMlxcdTFFMjZcXHUwMjFFXFx1MUUyNFxcdTFFMjhcXHUxRTJBXFx1MDEyNlxcdTJDNjdcXHUyQzc1XFx1QTc4RFwiXG59LCB7XG4gIGJhc2U6ICdJJyxcbiAgbGV0dGVyczogXCJJXFx1MjRCRVxcdUZGMjlcXHhDQ1xceENEXFx4Q0VcXHUwMTI4XFx1MDEyQVxcdTAxMkNcXHUwMTMwXFx4Q0ZcXHUxRTJFXFx1MUVDOFxcdTAxQ0ZcXHUwMjA4XFx1MDIwQVxcdTFFQ0FcXHUwMTJFXFx1MUUyQ1xcdTAxOTdcIlxufSwge1xuICBiYXNlOiAnSicsXG4gIGxldHRlcnM6IFwiSlxcdTI0QkZcXHVGRjJBXFx1MDEzNFxcdTAyNDhcIlxufSwge1xuICBiYXNlOiAnSycsXG4gIGxldHRlcnM6IFwiS1xcdTI0QzBcXHVGRjJCXFx1MUUzMFxcdTAxRThcXHUxRTMyXFx1MDEzNlxcdTFFMzRcXHUwMTk4XFx1MkM2OVxcdUE3NDBcXHVBNzQyXFx1QTc0NFxcdUE3QTJcIlxufSwge1xuICBiYXNlOiAnTCcsXG4gIGxldHRlcnM6IFwiTFxcdTI0QzFcXHVGRjJDXFx1MDEzRlxcdTAxMzlcXHUwMTNEXFx1MUUzNlxcdTFFMzhcXHUwMTNCXFx1MUUzQ1xcdTFFM0FcXHUwMTQxXFx1MDIzRFxcdTJDNjJcXHUyQzYwXFx1QTc0OFxcdUE3NDZcXHVBNzgwXCJcbn0sIHtcbiAgYmFzZTogJ0xKJyxcbiAgbGV0dGVyczogXCJcXHUwMUM3XCJcbn0sIHtcbiAgYmFzZTogJ0xqJyxcbiAgbGV0dGVyczogXCJcXHUwMUM4XCJcbn0sIHtcbiAgYmFzZTogJ00nLFxuICBsZXR0ZXJzOiBcIk1cXHUyNEMyXFx1RkYyRFxcdTFFM0VcXHUxRTQwXFx1MUU0MlxcdTJDNkVcXHUwMTlDXCJcbn0sIHtcbiAgYmFzZTogJ04nLFxuICBsZXR0ZXJzOiBcIk5cXHUyNEMzXFx1RkYyRVxcdTAxRjhcXHUwMTQzXFx4RDFcXHUxRTQ0XFx1MDE0N1xcdTFFNDZcXHUwMTQ1XFx1MUU0QVxcdTFFNDhcXHUwMjIwXFx1MDE5RFxcdUE3OTBcXHVBN0E0XCJcbn0sIHtcbiAgYmFzZTogJ05KJyxcbiAgbGV0dGVyczogXCJcXHUwMUNBXCJcbn0sIHtcbiAgYmFzZTogJ05qJyxcbiAgbGV0dGVyczogXCJcXHUwMUNCXCJcbn0sIHtcbiAgYmFzZTogJ08nLFxuICBsZXR0ZXJzOiBcIk9cXHUyNEM0XFx1RkYyRlxceEQyXFx4RDNcXHhENFxcdTFFRDJcXHUxRUQwXFx1MUVENlxcdTFFRDRcXHhENVxcdTFFNENcXHUwMjJDXFx1MUU0RVxcdTAxNENcXHUxRTUwXFx1MUU1MlxcdTAxNEVcXHUwMjJFXFx1MDIzMFxceEQ2XFx1MDIyQVxcdTFFQ0VcXHUwMTUwXFx1MDFEMVxcdTAyMENcXHUwMjBFXFx1MDFBMFxcdTFFRENcXHUxRURBXFx1MUVFMFxcdTFFREVcXHUxRUUyXFx1MUVDQ1xcdTFFRDhcXHUwMUVBXFx1MDFFQ1xceEQ4XFx1MDFGRVxcdTAxODZcXHUwMTlGXFx1QTc0QVxcdUE3NENcIlxufSwge1xuICBiYXNlOiAnT0knLFxuICBsZXR0ZXJzOiBcIlxcdTAxQTJcIlxufSwge1xuICBiYXNlOiAnT08nLFxuICBsZXR0ZXJzOiBcIlxcdUE3NEVcIlxufSwge1xuICBiYXNlOiAnT1UnLFxuICBsZXR0ZXJzOiBcIlxcdTAyMjJcIlxufSwge1xuICBiYXNlOiAnUCcsXG4gIGxldHRlcnM6IFwiUFxcdTI0QzVcXHVGRjMwXFx1MUU1NFxcdTFFNTZcXHUwMUE0XFx1MkM2M1xcdUE3NTBcXHVBNzUyXFx1QTc1NFwiXG59LCB7XG4gIGJhc2U6ICdRJyxcbiAgbGV0dGVyczogXCJRXFx1MjRDNlxcdUZGMzFcXHVBNzU2XFx1QTc1OFxcdTAyNEFcIlxufSwge1xuICBiYXNlOiAnUicsXG4gIGxldHRlcnM6IFwiUlxcdTI0QzdcXHVGRjMyXFx1MDE1NFxcdTFFNThcXHUwMTU4XFx1MDIxMFxcdTAyMTJcXHUxRTVBXFx1MUU1Q1xcdTAxNTZcXHUxRTVFXFx1MDI0Q1xcdTJDNjRcXHVBNzVBXFx1QTdBNlxcdUE3ODJcIlxufSwge1xuICBiYXNlOiAnUycsXG4gIGxldHRlcnM6IFwiU1xcdTI0QzhcXHVGRjMzXFx1MUU5RVxcdTAxNUFcXHUxRTY0XFx1MDE1Q1xcdTFFNjBcXHUwMTYwXFx1MUU2NlxcdTFFNjJcXHUxRTY4XFx1MDIxOFxcdTAxNUVcXHUyQzdFXFx1QTdBOFxcdUE3ODRcIlxufSwge1xuICBiYXNlOiAnVCcsXG4gIGxldHRlcnM6IFwiVFxcdTI0QzlcXHVGRjM0XFx1MUU2QVxcdTAxNjRcXHUxRTZDXFx1MDIxQVxcdTAxNjJcXHUxRTcwXFx1MUU2RVxcdTAxNjZcXHUwMUFDXFx1MDFBRVxcdTAyM0VcXHVBNzg2XCJcbn0sIHtcbiAgYmFzZTogJ1RaJyxcbiAgbGV0dGVyczogXCJcXHVBNzI4XCJcbn0sIHtcbiAgYmFzZTogJ1UnLFxuICBsZXR0ZXJzOiBcIlVcXHUyNENBXFx1RkYzNVxceEQ5XFx4REFcXHhEQlxcdTAxNjhcXHUxRTc4XFx1MDE2QVxcdTFFN0FcXHUwMTZDXFx4RENcXHUwMURCXFx1MDFEN1xcdTAxRDVcXHUwMUQ5XFx1MUVFNlxcdTAxNkVcXHUwMTcwXFx1MDFEM1xcdTAyMTRcXHUwMjE2XFx1MDFBRlxcdTFFRUFcXHUxRUU4XFx1MUVFRVxcdTFFRUNcXHUxRUYwXFx1MUVFNFxcdTFFNzJcXHUwMTcyXFx1MUU3NlxcdTFFNzRcXHUwMjQ0XCJcbn0sIHtcbiAgYmFzZTogJ1YnLFxuICBsZXR0ZXJzOiBcIlZcXHUyNENCXFx1RkYzNlxcdTFFN0NcXHUxRTdFXFx1MDFCMlxcdUE3NUVcXHUwMjQ1XCJcbn0sIHtcbiAgYmFzZTogJ1ZZJyxcbiAgbGV0dGVyczogXCJcXHVBNzYwXCJcbn0sIHtcbiAgYmFzZTogJ1cnLFxuICBsZXR0ZXJzOiBcIldcXHUyNENDXFx1RkYzN1xcdTFFODBcXHUxRTgyXFx1MDE3NFxcdTFFODZcXHUxRTg0XFx1MUU4OFxcdTJDNzJcIlxufSwge1xuICBiYXNlOiAnWCcsXG4gIGxldHRlcnM6IFwiWFxcdTI0Q0RcXHVGRjM4XFx1MUU4QVxcdTFFOENcIlxufSwge1xuICBiYXNlOiAnWScsXG4gIGxldHRlcnM6IFwiWVxcdTI0Q0VcXHVGRjM5XFx1MUVGMlxceEREXFx1MDE3NlxcdTFFRjhcXHUwMjMyXFx1MUU4RVxcdTAxNzhcXHUxRUY2XFx1MUVGNFxcdTAxQjNcXHUwMjRFXFx1MUVGRVwiXG59LCB7XG4gIGJhc2U6ICdaJyxcbiAgbGV0dGVyczogXCJaXFx1MjRDRlxcdUZGM0FcXHUwMTc5XFx1MUU5MFxcdTAxN0JcXHUwMTdEXFx1MUU5MlxcdTFFOTRcXHUwMUI1XFx1MDIyNFxcdTJDN0ZcXHUyQzZCXFx1QTc2MlwiXG59LCB7XG4gIGJhc2U6ICdhJyxcbiAgbGV0dGVyczogXCJhXFx1MjREMFxcdUZGNDFcXHUxRTlBXFx4RTBcXHhFMVxceEUyXFx1MUVBN1xcdTFFQTVcXHUxRUFCXFx1MUVBOVxceEUzXFx1MDEwMVxcdTAxMDNcXHUxRUIxXFx1MUVBRlxcdTFFQjVcXHUxRUIzXFx1MDIyN1xcdTAxRTFcXHhFNFxcdTAxREZcXHUxRUEzXFx4RTVcXHUwMUZCXFx1MDFDRVxcdTAyMDFcXHUwMjAzXFx1MUVBMVxcdTFFQURcXHUxRUI3XFx1MUUwMVxcdTAxMDVcXHUyQzY1XFx1MDI1MFwiXG59LCB7XG4gIGJhc2U6ICdhYScsXG4gIGxldHRlcnM6IFwiXFx1QTczM1wiXG59LCB7XG4gIGJhc2U6ICdhZScsXG4gIGxldHRlcnM6IFwiXFx4RTZcXHUwMUZEXFx1MDFFM1wiXG59LCB7XG4gIGJhc2U6ICdhbycsXG4gIGxldHRlcnM6IFwiXFx1QTczNVwiXG59LCB7XG4gIGJhc2U6ICdhdScsXG4gIGxldHRlcnM6IFwiXFx1QTczN1wiXG59LCB7XG4gIGJhc2U6ICdhdicsXG4gIGxldHRlcnM6IFwiXFx1QTczOVxcdUE3M0JcIlxufSwge1xuICBiYXNlOiAnYXknLFxuICBsZXR0ZXJzOiBcIlxcdUE3M0RcIlxufSwge1xuICBiYXNlOiAnYicsXG4gIGxldHRlcnM6IFwiYlxcdTI0RDFcXHVGRjQyXFx1MUUwM1xcdTFFMDVcXHUxRTA3XFx1MDE4MFxcdTAxODNcXHUwMjUzXCJcbn0sIHtcbiAgYmFzZTogJ2MnLFxuICBsZXR0ZXJzOiBcImNcXHUyNEQyXFx1RkY0M1xcdTAxMDdcXHUwMTA5XFx1MDEwQlxcdTAxMERcXHhFN1xcdTFFMDlcXHUwMTg4XFx1MDIzQ1xcdUE3M0ZcXHUyMTg0XCJcbn0sIHtcbiAgYmFzZTogJ2QnLFxuICBsZXR0ZXJzOiBcImRcXHUyNEQzXFx1RkY0NFxcdTFFMEJcXHUwMTBGXFx1MUUwRFxcdTFFMTFcXHUxRTEzXFx1MUUwRlxcdTAxMTFcXHUwMThDXFx1MDI1NlxcdTAyNTdcXHVBNzdBXCJcbn0sIHtcbiAgYmFzZTogJ2R6JyxcbiAgbGV0dGVyczogXCJcXHUwMUYzXFx1MDFDNlwiXG59LCB7XG4gIGJhc2U6ICdlJyxcbiAgbGV0dGVyczogXCJlXFx1MjRENFxcdUZGNDVcXHhFOFxceEU5XFx4RUFcXHUxRUMxXFx1MUVCRlxcdTFFQzVcXHUxRUMzXFx1MUVCRFxcdTAxMTNcXHUxRTE1XFx1MUUxN1xcdTAxMTVcXHUwMTE3XFx4RUJcXHUxRUJCXFx1MDExQlxcdTAyMDVcXHUwMjA3XFx1MUVCOVxcdTFFQzdcXHUwMjI5XFx1MUUxRFxcdTAxMTlcXHUxRTE5XFx1MUUxQlxcdTAyNDdcXHUwMjVCXFx1MDFERFwiXG59LCB7XG4gIGJhc2U6ICdmJyxcbiAgbGV0dGVyczogXCJmXFx1MjRENVxcdUZGNDZcXHUxRTFGXFx1MDE5MlxcdUE3N0NcIlxufSwge1xuICBiYXNlOiAnZycsXG4gIGxldHRlcnM6IFwiZ1xcdTI0RDZcXHVGRjQ3XFx1MDFGNVxcdTAxMURcXHUxRTIxXFx1MDExRlxcdTAxMjFcXHUwMUU3XFx1MDEyM1xcdTAxRTVcXHUwMjYwXFx1QTdBMVxcdTFENzlcXHVBNzdGXCJcbn0sIHtcbiAgYmFzZTogJ2gnLFxuICBsZXR0ZXJzOiBcImhcXHUyNEQ3XFx1RkY0OFxcdTAxMjVcXHUxRTIzXFx1MUUyN1xcdTAyMUZcXHUxRTI1XFx1MUUyOVxcdTFFMkJcXHUxRTk2XFx1MDEyN1xcdTJDNjhcXHUyQzc2XFx1MDI2NVwiXG59LCB7XG4gIGJhc2U6ICdodicsXG4gIGxldHRlcnM6IFwiXFx1MDE5NVwiXG59LCB7XG4gIGJhc2U6ICdpJyxcbiAgbGV0dGVyczogXCJpXFx1MjREOFxcdUZGNDlcXHhFQ1xceEVEXFx4RUVcXHUwMTI5XFx1MDEyQlxcdTAxMkRcXHhFRlxcdTFFMkZcXHUxRUM5XFx1MDFEMFxcdTAyMDlcXHUwMjBCXFx1MUVDQlxcdTAxMkZcXHUxRTJEXFx1MDI2OFxcdTAxMzFcIlxufSwge1xuICBiYXNlOiAnaicsXG4gIGxldHRlcnM6IFwialxcdTI0RDlcXHVGRjRBXFx1MDEzNVxcdTAxRjBcXHUwMjQ5XCJcbn0sIHtcbiAgYmFzZTogJ2snLFxuICBsZXR0ZXJzOiBcImtcXHUyNERBXFx1RkY0QlxcdTFFMzFcXHUwMUU5XFx1MUUzM1xcdTAxMzdcXHUxRTM1XFx1MDE5OVxcdTJDNkFcXHVBNzQxXFx1QTc0M1xcdUE3NDVcXHVBN0EzXCJcbn0sIHtcbiAgYmFzZTogJ2wnLFxuICBsZXR0ZXJzOiBcImxcXHUyNERCXFx1RkY0Q1xcdTAxNDBcXHUwMTNBXFx1MDEzRVxcdTFFMzdcXHUxRTM5XFx1MDEzQ1xcdTFFM0RcXHUxRTNCXFx1MDE3RlxcdTAxNDJcXHUwMTlBXFx1MDI2QlxcdTJDNjFcXHVBNzQ5XFx1QTc4MVxcdUE3NDdcIlxufSwge1xuICBiYXNlOiAnbGonLFxuICBsZXR0ZXJzOiBcIlxcdTAxQzlcIlxufSwge1xuICBiYXNlOiAnbScsXG4gIGxldHRlcnM6IFwibVxcdTI0RENcXHVGRjREXFx1MUUzRlxcdTFFNDFcXHUxRTQzXFx1MDI3MVxcdTAyNkZcIlxufSwge1xuICBiYXNlOiAnbicsXG4gIGxldHRlcnM6IFwiblxcdTI0RERcXHVGRjRFXFx1MDFGOVxcdTAxNDRcXHhGMVxcdTFFNDVcXHUwMTQ4XFx1MUU0N1xcdTAxNDZcXHUxRTRCXFx1MUU0OVxcdTAxOUVcXHUwMjcyXFx1MDE0OVxcdUE3OTFcXHVBN0E1XCJcbn0sIHtcbiAgYmFzZTogJ25qJyxcbiAgbGV0dGVyczogXCJcXHUwMUNDXCJcbn0sIHtcbiAgYmFzZTogJ28nLFxuICBsZXR0ZXJzOiBcIm9cXHUyNERFXFx1RkY0RlxceEYyXFx4RjNcXHhGNFxcdTFFRDNcXHUxRUQxXFx1MUVEN1xcdTFFRDVcXHhGNVxcdTFFNERcXHUwMjJEXFx1MUU0RlxcdTAxNERcXHUxRTUxXFx1MUU1M1xcdTAxNEZcXHUwMjJGXFx1MDIzMVxceEY2XFx1MDIyQlxcdTFFQ0ZcXHUwMTUxXFx1MDFEMlxcdTAyMERcXHUwMjBGXFx1MDFBMVxcdTFFRERcXHUxRURCXFx1MUVFMVxcdTFFREZcXHUxRUUzXFx1MUVDRFxcdTFFRDlcXHUwMUVCXFx1MDFFRFxceEY4XFx1MDFGRlxcdTAyNTRcXHVBNzRCXFx1QTc0RFxcdTAyNzVcIlxufSwge1xuICBiYXNlOiAnb2knLFxuICBsZXR0ZXJzOiBcIlxcdTAxQTNcIlxufSwge1xuICBiYXNlOiAnb3UnLFxuICBsZXR0ZXJzOiBcIlxcdTAyMjNcIlxufSwge1xuICBiYXNlOiAnb28nLFxuICBsZXR0ZXJzOiBcIlxcdUE3NEZcIlxufSwge1xuICBiYXNlOiAncCcsXG4gIGxldHRlcnM6IFwicFxcdTI0REZcXHVGRjUwXFx1MUU1NVxcdTFFNTdcXHUwMUE1XFx1MUQ3RFxcdUE3NTFcXHVBNzUzXFx1QTc1NVwiXG59LCB7XG4gIGJhc2U6ICdxJyxcbiAgbGV0dGVyczogXCJxXFx1MjRFMFxcdUZGNTFcXHUwMjRCXFx1QTc1N1xcdUE3NTlcIlxufSwge1xuICBiYXNlOiAncicsXG4gIGxldHRlcnM6IFwiclxcdTI0RTFcXHVGRjUyXFx1MDE1NVxcdTFFNTlcXHUwMTU5XFx1MDIxMVxcdTAyMTNcXHUxRTVCXFx1MUU1RFxcdTAxNTdcXHUxRTVGXFx1MDI0RFxcdTAyN0RcXHVBNzVCXFx1QTdBN1xcdUE3ODNcIlxufSwge1xuICBiYXNlOiAncycsXG4gIGxldHRlcnM6IFwic1xcdTI0RTJcXHVGRjUzXFx4REZcXHUwMTVCXFx1MUU2NVxcdTAxNURcXHUxRTYxXFx1MDE2MVxcdTFFNjdcXHUxRTYzXFx1MUU2OVxcdTAyMTlcXHUwMTVGXFx1MDIzRlxcdUE3QTlcXHVBNzg1XFx1MUU5QlwiXG59LCB7XG4gIGJhc2U6ICd0JyxcbiAgbGV0dGVyczogXCJ0XFx1MjRFM1xcdUZGNTRcXHUxRTZCXFx1MUU5N1xcdTAxNjVcXHUxRTZEXFx1MDIxQlxcdTAxNjNcXHUxRTcxXFx1MUU2RlxcdTAxNjdcXHUwMUFEXFx1MDI4OFxcdTJDNjZcXHVBNzg3XCJcbn0sIHtcbiAgYmFzZTogJ3R6JyxcbiAgbGV0dGVyczogXCJcXHVBNzI5XCJcbn0sIHtcbiAgYmFzZTogJ3UnLFxuICBsZXR0ZXJzOiBcInVcXHUyNEU0XFx1RkY1NVxceEY5XFx4RkFcXHhGQlxcdTAxNjlcXHUxRTc5XFx1MDE2QlxcdTFFN0JcXHUwMTZEXFx4RkNcXHUwMURDXFx1MDFEOFxcdTAxRDZcXHUwMURBXFx1MUVFN1xcdTAxNkZcXHUwMTcxXFx1MDFENFxcdTAyMTVcXHUwMjE3XFx1MDFCMFxcdTFFRUJcXHUxRUU5XFx1MUVFRlxcdTFFRURcXHUxRUYxXFx1MUVFNVxcdTFFNzNcXHUwMTczXFx1MUU3N1xcdTFFNzVcXHUwMjg5XCJcbn0sIHtcbiAgYmFzZTogJ3YnLFxuICBsZXR0ZXJzOiBcInZcXHUyNEU1XFx1RkY1NlxcdTFFN0RcXHUxRTdGXFx1MDI4QlxcdUE3NUZcXHUwMjhDXCJcbn0sIHtcbiAgYmFzZTogJ3Z5JyxcbiAgbGV0dGVyczogXCJcXHVBNzYxXCJcbn0sIHtcbiAgYmFzZTogJ3cnLFxuICBsZXR0ZXJzOiBcIndcXHUyNEU2XFx1RkY1N1xcdTFFODFcXHUxRTgzXFx1MDE3NVxcdTFFODdcXHUxRTg1XFx1MUU5OFxcdTFFODlcXHUyQzczXCJcbn0sIHtcbiAgYmFzZTogJ3gnLFxuICBsZXR0ZXJzOiBcInhcXHUyNEU3XFx1RkY1OFxcdTFFOEJcXHUxRThEXCJcbn0sIHtcbiAgYmFzZTogJ3knLFxuICBsZXR0ZXJzOiBcInlcXHUyNEU4XFx1RkY1OVxcdTFFRjNcXHhGRFxcdTAxNzdcXHUxRUY5XFx1MDIzM1xcdTFFOEZcXHhGRlxcdTFFRjdcXHUxRTk5XFx1MUVGNVxcdTAxQjRcXHUwMjRGXFx1MUVGRlwiXG59LCB7XG4gIGJhc2U6ICd6JyxcbiAgbGV0dGVyczogXCJ6XFx1MjRFOVxcdUZGNUFcXHUwMTdBXFx1MUU5MVxcdTAxN0NcXHUwMTdFXFx1MUU5M1xcdTFFOTVcXHUwMUI2XFx1MDIyNVxcdTAyNDBcXHUyQzZDXFx1QTc2M1wiXG59XTtcbnZhciBhbnlEaWFjcml0aWMgPSBuZXcgUmVnRXhwKCdbJyArIGRpYWNyaXRpY3MubWFwKGZ1bmN0aW9uIChkKSB7XG4gIHJldHVybiBkLmxldHRlcnM7XG59KS5qb2luKCcnKSArICddJywgJ2cnKTtcbnZhciBkaWFjcml0aWNUb0Jhc2UgPSB7fTtcbmZvciAodmFyIGkgPSAwOyBpIDwgZGlhY3JpdGljcy5sZW5ndGg7IGkrKykge1xuICB2YXIgZGlhY3JpdGljID0gZGlhY3JpdGljc1tpXTtcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBkaWFjcml0aWMubGV0dGVycy5sZW5ndGg7IGorKykge1xuICAgIGRpYWNyaXRpY1RvQmFzZVtkaWFjcml0aWMubGV0dGVyc1tqXV0gPSBkaWFjcml0aWMuYmFzZTtcbiAgfVxufVxudmFyIHN0cmlwRGlhY3JpdGljcyA9IGZ1bmN0aW9uIHN0cmlwRGlhY3JpdGljcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKGFueURpYWNyaXRpYywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgcmV0dXJuIGRpYWNyaXRpY1RvQmFzZVttYXRjaF07XG4gIH0pO1xufTtcblxudmFyIG1lbW9pemVkU3RyaXBEaWFjcml0aWNzRm9ySW5wdXQgPSBtZW1vaXplT25lX19kZWZhdWx0W1wiZGVmYXVsdFwiXShzdHJpcERpYWNyaXRpY3MpO1xudmFyIHRyaW1TdHJpbmcgPSBmdW5jdGlvbiB0cmltU3RyaW5nKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL15cXHMrfFxccyskL2csICcnKTtcbn07XG52YXIgZGVmYXVsdFN0cmluZ2lmeSA9IGZ1bmN0aW9uIGRlZmF1bHRTdHJpbmdpZnkob3B0aW9uKSB7XG4gIHJldHVybiBcIlwiLmNvbmNhdChvcHRpb24ubGFiZWwsIFwiIFwiKS5jb25jYXQob3B0aW9uLnZhbHVlKTtcbn07XG52YXIgY3JlYXRlRmlsdGVyID0gZnVuY3Rpb24gY3JlYXRlRmlsdGVyKGNvbmZpZykge1xuICByZXR1cm4gZnVuY3Rpb24gKG9wdGlvbiwgcmF3SW5wdXQpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZXJzY29yZS1kYW5nbGVcbiAgICBpZiAob3B0aW9uLmRhdGEuX19pc05ld19fKSByZXR1cm4gdHJ1ZTtcbiAgICB2YXIgX2lnbm9yZUNhc2UkaWdub3JlQWNjID0gX29iamVjdFNwcmVhZCh7XG4gICAgICAgIGlnbm9yZUNhc2U6IHRydWUsXG4gICAgICAgIGlnbm9yZUFjY2VudHM6IHRydWUsXG4gICAgICAgIHN0cmluZ2lmeTogZGVmYXVsdFN0cmluZ2lmeSxcbiAgICAgICAgdHJpbTogdHJ1ZSxcbiAgICAgICAgbWF0Y2hGcm9tOiAnYW55J1xuICAgICAgfSwgY29uZmlnKSxcbiAgICAgIGlnbm9yZUNhc2UgPSBfaWdub3JlQ2FzZSRpZ25vcmVBY2MuaWdub3JlQ2FzZSxcbiAgICAgIGlnbm9yZUFjY2VudHMgPSBfaWdub3JlQ2FzZSRpZ25vcmVBY2MuaWdub3JlQWNjZW50cyxcbiAgICAgIHN0cmluZ2lmeSA9IF9pZ25vcmVDYXNlJGlnbm9yZUFjYy5zdHJpbmdpZnksXG4gICAgICB0cmltID0gX2lnbm9yZUNhc2UkaWdub3JlQWNjLnRyaW0sXG4gICAgICBtYXRjaEZyb20gPSBfaWdub3JlQ2FzZSRpZ25vcmVBY2MubWF0Y2hGcm9tO1xuICAgIHZhciBpbnB1dCA9IHRyaW0gPyB0cmltU3RyaW5nKHJhd0lucHV0KSA6IHJhd0lucHV0O1xuICAgIHZhciBjYW5kaWRhdGUgPSB0cmltID8gdHJpbVN0cmluZyhzdHJpbmdpZnkob3B0aW9uKSkgOiBzdHJpbmdpZnkob3B0aW9uKTtcbiAgICBpZiAoaWdub3JlQ2FzZSkge1xuICAgICAgaW5wdXQgPSBpbnB1dC50b0xvd2VyQ2FzZSgpO1xuICAgICAgY2FuZGlkYXRlID0gY2FuZGlkYXRlLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIGlmIChpZ25vcmVBY2NlbnRzKSB7XG4gICAgICBpbnB1dCA9IG1lbW9pemVkU3RyaXBEaWFjcml0aWNzRm9ySW5wdXQoaW5wdXQpO1xuICAgICAgY2FuZGlkYXRlID0gc3RyaXBEaWFjcml0aWNzKGNhbmRpZGF0ZSk7XG4gICAgfVxuICAgIHJldHVybiBtYXRjaEZyb20gPT09ICdzdGFydCcgPyBjYW5kaWRhdGUuc3Vic3RyKDAsIGlucHV0Lmxlbmd0aCkgPT09IGlucHV0IDogY2FuZGlkYXRlLmluZGV4T2YoaW5wdXQpID4gLTE7XG4gIH07XG59O1xuXG52YXIgX2V4Y2x1ZGVkID0gW1wiaW5uZXJSZWZcIl07XG5mdW5jdGlvbiBEdW1teUlucHV0KF9yZWYpIHtcbiAgdmFyIGlubmVyUmVmID0gX3JlZi5pbm5lclJlZixcbiAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBfZXhjbHVkZWQpO1xuICAvLyBSZW1vdmUgYW5pbWF0aW9uIHByb3BzIG5vdCBtZWFudCBmb3IgSFRNTCBlbGVtZW50c1xuICB2YXIgZmlsdGVyZWRQcm9wcyA9IGluZGV4LnJlbW92ZVByb3BzKHByb3BzLCAnb25FeGl0ZWQnLCAnaW4nLCAnZW50ZXInLCAnZXhpdCcsICdhcHBlYXInKTtcbiAgcmV0dXJuIHJlYWN0LmpzeChcImlucHV0XCIsIF9leHRlbmRzKHtcbiAgICByZWY6IGlubmVyUmVmXG4gIH0sIGZpbHRlcmVkUHJvcHMsIHtcbiAgICBjc3M6IC8qI19fUFVSRV9fKi9yZWFjdC5jc3Moe1xuICAgICAgbGFiZWw6ICdkdW1teUlucHV0JyxcbiAgICAgIC8vIGdldCByaWQgb2YgYW55IGRlZmF1bHQgc3R5bGVzXG4gICAgICBiYWNrZ3JvdW5kOiAwLFxuICAgICAgYm9yZGVyOiAwLFxuICAgICAgLy8gaW1wb3J0YW50ISB0aGlzIGhpZGVzIHRoZSBmbGFzaGluZyBjdXJzb3JcbiAgICAgIGNhcmV0Q29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICBmb250U2l6ZTogJ2luaGVyaXQnLFxuICAgICAgZ3JpZEFyZWE6ICcxIC8gMSAvIDIgLyAzJyxcbiAgICAgIG91dGxpbmU6IDAsXG4gICAgICBwYWRkaW5nOiAwLFxuICAgICAgLy8gaW1wb3J0YW50ISB3aXRob3V0IGB3aWR0aGAgYnJvd3NlcnMgd29uJ3QgYWxsb3cgZm9jdXNcbiAgICAgIHdpZHRoOiAxLFxuICAgICAgLy8gcmVtb3ZlIGN1cnNvciBvbiBkZXNrdG9wXG4gICAgICBjb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgIC8vIHJlbW92ZSBjdXJzb3Igb24gbW9iaWxlIHdoaWxzdCBtYWludGFpbmluZyBcInNjcm9sbCBpbnRvIHZpZXdcIiBiZWhhdmlvdXJcbiAgICAgIGxlZnQ6IC0xMDAsXG4gICAgICBvcGFjaXR5OiAwLFxuICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICB0cmFuc2Zvcm06ICdzY2FsZSguMDEpJ1xuICAgIH0sIFwiXCIgLCBcIlwiIClcbiAgfSkpO1xufVxuXG52YXIgY2FuY2VsU2Nyb2xsID0gZnVuY3Rpb24gY2FuY2VsU2Nyb2xsKGV2ZW50KSB7XG4gIGlmIChldmVudC5jYW5jZWxhYmxlKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbn07XG5mdW5jdGlvbiB1c2VTY3JvbGxDYXB0dXJlKF9yZWYpIHtcbiAgdmFyIGlzRW5hYmxlZCA9IF9yZWYuaXNFbmFibGVkLFxuICAgIG9uQm90dG9tQXJyaXZlID0gX3JlZi5vbkJvdHRvbUFycml2ZSxcbiAgICBvbkJvdHRvbUxlYXZlID0gX3JlZi5vbkJvdHRvbUxlYXZlLFxuICAgIG9uVG9wQXJyaXZlID0gX3JlZi5vblRvcEFycml2ZSxcbiAgICBvblRvcExlYXZlID0gX3JlZi5vblRvcExlYXZlO1xuICB2YXIgaXNCb3R0b20gPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICB2YXIgaXNUb3AgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICB2YXIgdG91Y2hTdGFydCA9IFJlYWN0LnVzZVJlZigwKTtcbiAgdmFyIHNjcm9sbFRhcmdldCA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgdmFyIGhhbmRsZUV2ZW50RGVsdGEgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoZXZlbnQsIGRlbHRhKSB7XG4gICAgaWYgKHNjcm9sbFRhcmdldC5jdXJyZW50ID09PSBudWxsKSByZXR1cm47XG4gICAgdmFyIF9zY3JvbGxUYXJnZXQkY3VycmVudCA9IHNjcm9sbFRhcmdldC5jdXJyZW50LFxuICAgICAgc2Nyb2xsVG9wID0gX3Njcm9sbFRhcmdldCRjdXJyZW50LnNjcm9sbFRvcCxcbiAgICAgIHNjcm9sbEhlaWdodCA9IF9zY3JvbGxUYXJnZXQkY3VycmVudC5zY3JvbGxIZWlnaHQsXG4gICAgICBjbGllbnRIZWlnaHQgPSBfc2Nyb2xsVGFyZ2V0JGN1cnJlbnQuY2xpZW50SGVpZ2h0O1xuICAgIHZhciB0YXJnZXQgPSBzY3JvbGxUYXJnZXQuY3VycmVudDtcbiAgICB2YXIgaXNEZWx0YVBvc2l0aXZlID0gZGVsdGEgPiAwO1xuICAgIHZhciBhdmFpbGFibGVTY3JvbGwgPSBzY3JvbGxIZWlnaHQgLSBjbGllbnRIZWlnaHQgLSBzY3JvbGxUb3A7XG4gICAgdmFyIHNob3VsZENhbmNlbFNjcm9sbCA9IGZhbHNlO1xuXG4gICAgLy8gcmVzZXQgYm90dG9tL3RvcCBmbGFnc1xuICAgIGlmIChhdmFpbGFibGVTY3JvbGwgPiBkZWx0YSAmJiBpc0JvdHRvbS5jdXJyZW50KSB7XG4gICAgICBpZiAob25Cb3R0b21MZWF2ZSkgb25Cb3R0b21MZWF2ZShldmVudCk7XG4gICAgICBpc0JvdHRvbS5jdXJyZW50ID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChpc0RlbHRhUG9zaXRpdmUgJiYgaXNUb3AuY3VycmVudCkge1xuICAgICAgaWYgKG9uVG9wTGVhdmUpIG9uVG9wTGVhdmUoZXZlbnQpO1xuICAgICAgaXNUb3AuY3VycmVudCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIGJvdHRvbSBsaW1pdFxuICAgIGlmIChpc0RlbHRhUG9zaXRpdmUgJiYgZGVsdGEgPiBhdmFpbGFibGVTY3JvbGwpIHtcbiAgICAgIGlmIChvbkJvdHRvbUFycml2ZSAmJiAhaXNCb3R0b20uY3VycmVudCkge1xuICAgICAgICBvbkJvdHRvbUFycml2ZShldmVudCk7XG4gICAgICB9XG4gICAgICB0YXJnZXQuc2Nyb2xsVG9wID0gc2Nyb2xsSGVpZ2h0O1xuICAgICAgc2hvdWxkQ2FuY2VsU2Nyb2xsID0gdHJ1ZTtcbiAgICAgIGlzQm90dG9tLmN1cnJlbnQgPSB0cnVlO1xuXG4gICAgICAvLyB0b3AgbGltaXRcbiAgICB9IGVsc2UgaWYgKCFpc0RlbHRhUG9zaXRpdmUgJiYgLWRlbHRhID4gc2Nyb2xsVG9wKSB7XG4gICAgICBpZiAob25Ub3BBcnJpdmUgJiYgIWlzVG9wLmN1cnJlbnQpIHtcbiAgICAgICAgb25Ub3BBcnJpdmUoZXZlbnQpO1xuICAgICAgfVxuICAgICAgdGFyZ2V0LnNjcm9sbFRvcCA9IDA7XG4gICAgICBzaG91bGRDYW5jZWxTY3JvbGwgPSB0cnVlO1xuICAgICAgaXNUb3AuY3VycmVudCA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gY2FuY2VsIHNjcm9sbFxuICAgIGlmIChzaG91bGRDYW5jZWxTY3JvbGwpIHtcbiAgICAgIGNhbmNlbFNjcm9sbChldmVudCk7XG4gICAgfVxuICB9LCBbb25Cb3R0b21BcnJpdmUsIG9uQm90dG9tTGVhdmUsIG9uVG9wQXJyaXZlLCBvblRvcExlYXZlXSk7XG4gIHZhciBvbldoZWVsID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgaGFuZGxlRXZlbnREZWx0YShldmVudCwgZXZlbnQuZGVsdGFZKTtcbiAgfSwgW2hhbmRsZUV2ZW50RGVsdGFdKTtcbiAgdmFyIG9uVG91Y2hTdGFydCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldmVudCkge1xuICAgIC8vIHNldCB0b3VjaCBzdGFydCBzbyB3ZSBjYW4gY2FsY3VsYXRlIHRvdWNobW92ZSBkZWx0YVxuICAgIHRvdWNoU3RhcnQuY3VycmVudCA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFk7XG4gIH0sIFtdKTtcbiAgdmFyIG9uVG91Y2hNb3ZlID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdmFyIGRlbHRhWSA9IHRvdWNoU3RhcnQuY3VycmVudCAtIGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFk7XG4gICAgaGFuZGxlRXZlbnREZWx0YShldmVudCwgZGVsdGFZKTtcbiAgfSwgW2hhbmRsZUV2ZW50RGVsdGFdKTtcbiAgdmFyIHN0YXJ0TGlzdGVuaW5nID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGVsKSB7XG4gICAgLy8gYmFpbCBlYXJseSBpZiBubyBlbGVtZW50IGlzIGF2YWlsYWJsZSB0byBhdHRhY2ggdG9cbiAgICBpZiAoIWVsKSByZXR1cm47XG4gICAgdmFyIG5vdFBhc3NpdmUgPSBpbmRleC5zdXBwb3J0c1Bhc3NpdmVFdmVudHMgPyB7XG4gICAgICBwYXNzaXZlOiBmYWxzZVxuICAgIH0gOiBmYWxzZTtcbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIG9uV2hlZWwsIG5vdFBhc3NpdmUpO1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBvblRvdWNoU3RhcnQsIG5vdFBhc3NpdmUpO1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIG9uVG91Y2hNb3ZlLCBub3RQYXNzaXZlKTtcbiAgfSwgW29uVG91Y2hNb3ZlLCBvblRvdWNoU3RhcnQsIG9uV2hlZWxdKTtcbiAgdmFyIHN0b3BMaXN0ZW5pbmcgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoZWwpIHtcbiAgICAvLyBiYWlsIGVhcmx5IGlmIG5vIGVsZW1lbnQgaXMgYXZhaWxhYmxlIHRvIGRldGFjaCBmcm9tXG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgb25XaGVlbCwgZmFsc2UpO1xuICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBvblRvdWNoU3RhcnQsIGZhbHNlKTtcbiAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBvblRvdWNoTW92ZSwgZmFsc2UpO1xuICB9LCBbb25Ub3VjaE1vdmUsIG9uVG91Y2hTdGFydCwgb25XaGVlbF0pO1xuICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmICghaXNFbmFibGVkKSByZXR1cm47XG4gICAgdmFyIGVsZW1lbnQgPSBzY3JvbGxUYXJnZXQuY3VycmVudDtcbiAgICBzdGFydExpc3RlbmluZyhlbGVtZW50KTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgc3RvcExpc3RlbmluZyhlbGVtZW50KTtcbiAgICB9O1xuICB9LCBbaXNFbmFibGVkLCBzdGFydExpc3RlbmluZywgc3RvcExpc3RlbmluZ10pO1xuICByZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICBzY3JvbGxUYXJnZXQuY3VycmVudCA9IGVsZW1lbnQ7XG4gIH07XG59XG5cbnZhciBTVFlMRV9LRVlTID0gWydib3hTaXppbmcnLCAnaGVpZ2h0JywgJ292ZXJmbG93JywgJ3BhZGRpbmdSaWdodCcsICdwb3NpdGlvbiddO1xudmFyIExPQ0tfU1RZTEVTID0ge1xuICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgLy8gYWNjb3VudCBmb3IgcG9zc2libGUgZGVjbGFyYXRpb24gYHdpZHRoOiAxMDAlO2Agb24gYm9keVxuICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICBoZWlnaHQ6ICcxMDAlJ1xufTtcbmZ1bmN0aW9uIHByZXZlbnRUb3VjaE1vdmUoZSkge1xuICBpZiAoZS5jYW5jZWxhYmxlKSBlLnByZXZlbnREZWZhdWx0KCk7XG59XG5mdW5jdGlvbiBhbGxvd1RvdWNoTW92ZShlKSB7XG4gIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG59XG5mdW5jdGlvbiBwcmV2ZW50SW5lcnRpYVNjcm9sbCgpIHtcbiAgdmFyIHRvcCA9IHRoaXMuc2Nyb2xsVG9wO1xuICB2YXIgdG90YWxTY3JvbGwgPSB0aGlzLnNjcm9sbEhlaWdodDtcbiAgdmFyIGN1cnJlbnRTY3JvbGwgPSB0b3AgKyB0aGlzLm9mZnNldEhlaWdodDtcbiAgaWYgKHRvcCA9PT0gMCkge1xuICAgIHRoaXMuc2Nyb2xsVG9wID0gMTtcbiAgfSBlbHNlIGlmIChjdXJyZW50U2Nyb2xsID09PSB0b3RhbFNjcm9sbCkge1xuICAgIHRoaXMuc2Nyb2xsVG9wID0gdG9wIC0gMTtcbiAgfVxufVxuXG4vLyBgb250b3VjaHN0YXJ0YCBjaGVjayB3b3JrcyBvbiBtb3N0IGJyb3dzZXJzXG4vLyBgbWF4VG91Y2hQb2ludHNgIHdvcmtzIG9uIElFMTAvMTEgYW5kIFN1cmZhY2VcbmZ1bmN0aW9uIGlzVG91Y2hEZXZpY2UoKSB7XG4gIHJldHVybiAnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3cgfHwgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzO1xufVxudmFyIGNhblVzZURPTSA9ICEhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG52YXIgYWN0aXZlU2Nyb2xsTG9ja3MgPSAwO1xudmFyIGxpc3RlbmVyT3B0aW9ucyA9IHtcbiAgY2FwdHVyZTogZmFsc2UsXG4gIHBhc3NpdmU6IGZhbHNlXG59O1xuZnVuY3Rpb24gdXNlU2Nyb2xsTG9jayhfcmVmKSB7XG4gIHZhciBpc0VuYWJsZWQgPSBfcmVmLmlzRW5hYmxlZCxcbiAgICBfcmVmJGFjY291bnRGb3JTY3JvbGwgPSBfcmVmLmFjY291bnRGb3JTY3JvbGxiYXJzLFxuICAgIGFjY291bnRGb3JTY3JvbGxiYXJzID0gX3JlZiRhY2NvdW50Rm9yU2Nyb2xsID09PSB2b2lkIDAgPyB0cnVlIDogX3JlZiRhY2NvdW50Rm9yU2Nyb2xsO1xuICB2YXIgb3JpZ2luYWxTdHlsZXMgPSBSZWFjdC51c2VSZWYoe30pO1xuICB2YXIgc2Nyb2xsVGFyZ2V0ID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICB2YXIgYWRkU2Nyb2xsTG9jayA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICh0b3VjaFNjcm9sbFRhcmdldCkge1xuICAgIGlmICghY2FuVXNlRE9NKSByZXR1cm47XG4gICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmJvZHk7XG4gICAgdmFyIHRhcmdldFN0eWxlID0gdGFyZ2V0ICYmIHRhcmdldC5zdHlsZTtcbiAgICBpZiAoYWNjb3VudEZvclNjcm9sbGJhcnMpIHtcbiAgICAgIC8vIHN0b3JlIGFueSBzdHlsZXMgYWxyZWFkeSBhcHBsaWVkIHRvIHRoZSBib2R5XG4gICAgICBTVFlMRV9LRVlTLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsID0gdGFyZ2V0U3R5bGUgJiYgdGFyZ2V0U3R5bGVba2V5XTtcbiAgICAgICAgb3JpZ2luYWxTdHlsZXMuY3VycmVudFtrZXldID0gdmFsO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gYXBwbHkgdGhlIGxvY2sgc3R5bGVzIGFuZCBwYWRkaW5nIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHNjcm9sbCBsb2NrXG4gICAgaWYgKGFjY291bnRGb3JTY3JvbGxiYXJzICYmIGFjdGl2ZVNjcm9sbExvY2tzIDwgMSkge1xuICAgICAgdmFyIGN1cnJlbnRQYWRkaW5nID0gcGFyc2VJbnQob3JpZ2luYWxTdHlsZXMuY3VycmVudC5wYWRkaW5nUmlnaHQsIDEwKSB8fCAwO1xuICAgICAgdmFyIGNsaWVudFdpZHRoID0gZG9jdW1lbnQuYm9keSA/IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggOiAwO1xuICAgICAgdmFyIGFkanVzdGVkUGFkZGluZyA9IHdpbmRvdy5pbm5lcldpZHRoIC0gY2xpZW50V2lkdGggKyBjdXJyZW50UGFkZGluZyB8fCAwO1xuICAgICAgT2JqZWN0LmtleXMoTE9DS19TVFlMRVMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsID0gTE9DS19TVFlMRVNba2V5XTtcbiAgICAgICAgaWYgKHRhcmdldFN0eWxlKSB7XG4gICAgICAgICAgdGFyZ2V0U3R5bGVba2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAodGFyZ2V0U3R5bGUpIHtcbiAgICAgICAgdGFyZ2V0U3R5bGUucGFkZGluZ1JpZ2h0ID0gXCJcIi5jb25jYXQoYWRqdXN0ZWRQYWRkaW5nLCBcInB4XCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGFjY291bnQgZm9yIHRvdWNoIGRldmljZXNcbiAgICBpZiAodGFyZ2V0ICYmIGlzVG91Y2hEZXZpY2UoKSkge1xuICAgICAgLy8gTW9iaWxlIFNhZmFyaSBpZ25vcmVzIHsgb3ZlcmZsb3c6IGhpZGRlbiB9IGRlY2xhcmF0aW9uIG9uIHRoZSBib2R5LlxuICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHByZXZlbnRUb3VjaE1vdmUsIGxpc3RlbmVyT3B0aW9ucyk7XG5cbiAgICAgIC8vIEFsbG93IHNjcm9sbCBvbiBwcm92aWRlZCB0YXJnZXRcbiAgICAgIGlmICh0b3VjaFNjcm9sbFRhcmdldCkge1xuICAgICAgICB0b3VjaFNjcm9sbFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgcHJldmVudEluZXJ0aWFTY3JvbGwsIGxpc3RlbmVyT3B0aW9ucyk7XG4gICAgICAgIHRvdWNoU2Nyb2xsVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGFsbG93VG91Y2hNb3ZlLCBsaXN0ZW5lck9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGluY3JlbWVudCBhY3RpdmUgc2Nyb2xsIGxvY2tzXG4gICAgYWN0aXZlU2Nyb2xsTG9ja3MgKz0gMTtcbiAgfSwgW2FjY291bnRGb3JTY3JvbGxiYXJzXSk7XG4gIHZhciByZW1vdmVTY3JvbGxMb2NrID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKHRvdWNoU2Nyb2xsVGFyZ2V0KSB7XG4gICAgaWYgKCFjYW5Vc2VET00pIHJldHVybjtcbiAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuYm9keTtcbiAgICB2YXIgdGFyZ2V0U3R5bGUgPSB0YXJnZXQgJiYgdGFyZ2V0LnN0eWxlO1xuXG4gICAgLy8gc2FmZWx5IGRlY3JlbWVudCBhY3RpdmUgc2Nyb2xsIGxvY2tzXG4gICAgYWN0aXZlU2Nyb2xsTG9ja3MgPSBNYXRoLm1heChhY3RpdmVTY3JvbGxMb2NrcyAtIDEsIDApO1xuXG4gICAgLy8gcmVhcHBseSBvcmlnaW5hbCBib2R5IHN0eWxlcywgaWYgYW55XG4gICAgaWYgKGFjY291bnRGb3JTY3JvbGxiYXJzICYmIGFjdGl2ZVNjcm9sbExvY2tzIDwgMSkge1xuICAgICAgU1RZTEVfS0VZUy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbCA9IG9yaWdpbmFsU3R5bGVzLmN1cnJlbnRba2V5XTtcbiAgICAgICAgaWYgKHRhcmdldFN0eWxlKSB7XG4gICAgICAgICAgdGFyZ2V0U3R5bGVba2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlIHRvdWNoIGxpc3RlbmVyc1xuICAgIGlmICh0YXJnZXQgJiYgaXNUb3VjaERldmljZSgpKSB7XG4gICAgICB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgcHJldmVudFRvdWNoTW92ZSwgbGlzdGVuZXJPcHRpb25zKTtcbiAgICAgIGlmICh0b3VjaFNjcm9sbFRhcmdldCkge1xuICAgICAgICB0b3VjaFNjcm9sbFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgcHJldmVudEluZXJ0aWFTY3JvbGwsIGxpc3RlbmVyT3B0aW9ucyk7XG4gICAgICAgIHRvdWNoU2Nyb2xsVGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGFsbG93VG91Y2hNb3ZlLCBsaXN0ZW5lck9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2FjY291bnRGb3JTY3JvbGxiYXJzXSk7XG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFpc0VuYWJsZWQpIHJldHVybjtcbiAgICB2YXIgZWxlbWVudCA9IHNjcm9sbFRhcmdldC5jdXJyZW50O1xuICAgIGFkZFNjcm9sbExvY2soZWxlbWVudCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlbW92ZVNjcm9sbExvY2soZWxlbWVudCk7XG4gICAgfTtcbiAgfSwgW2lzRW5hYmxlZCwgYWRkU2Nyb2xsTG9jaywgcmVtb3ZlU2Nyb2xsTG9ja10pO1xuICByZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICBzY3JvbGxUYXJnZXQuY3VycmVudCA9IGVsZW1lbnQ7XG4gIH07XG59XG5cbnZhciBibHVyU2VsZWN0SW5wdXQgPSBmdW5jdGlvbiBibHVyU2VsZWN0SW5wdXQoZXZlbnQpIHtcbiAgdmFyIGVsZW1lbnQgPSBldmVudC50YXJnZXQ7XG4gIHJldHVybiBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5ibHVyKCk7XG59O1xudmFyIF9yZWYyJDEgPSB7XG4gIG5hbWU6IFwiMWtmZGIwZVwiLFxuICBzdHlsZXM6IFwicG9zaXRpb246Zml4ZWQ7bGVmdDowO2JvdHRvbTowO3JpZ2h0OjA7dG9wOjBcIlxufSA7XG5mdW5jdGlvbiBTY3JvbGxNYW5hZ2VyKF9yZWYpIHtcbiAgdmFyIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbixcbiAgICBsb2NrRW5hYmxlZCA9IF9yZWYubG9ja0VuYWJsZWQsXG4gICAgX3JlZiRjYXB0dXJlRW5hYmxlZCA9IF9yZWYuY2FwdHVyZUVuYWJsZWQsXG4gICAgY2FwdHVyZUVuYWJsZWQgPSBfcmVmJGNhcHR1cmVFbmFibGVkID09PSB2b2lkIDAgPyB0cnVlIDogX3JlZiRjYXB0dXJlRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZSA9IF9yZWYub25Cb3R0b21BcnJpdmUsXG4gICAgb25Cb3R0b21MZWF2ZSA9IF9yZWYub25Cb3R0b21MZWF2ZSxcbiAgICBvblRvcEFycml2ZSA9IF9yZWYub25Ub3BBcnJpdmUsXG4gICAgb25Ub3BMZWF2ZSA9IF9yZWYub25Ub3BMZWF2ZTtcbiAgdmFyIHNldFNjcm9sbENhcHR1cmVUYXJnZXQgPSB1c2VTY3JvbGxDYXB0dXJlKHtcbiAgICBpc0VuYWJsZWQ6IGNhcHR1cmVFbmFibGVkLFxuICAgIG9uQm90dG9tQXJyaXZlOiBvbkJvdHRvbUFycml2ZSxcbiAgICBvbkJvdHRvbUxlYXZlOiBvbkJvdHRvbUxlYXZlLFxuICAgIG9uVG9wQXJyaXZlOiBvblRvcEFycml2ZSxcbiAgICBvblRvcExlYXZlOiBvblRvcExlYXZlXG4gIH0pO1xuICB2YXIgc2V0U2Nyb2xsTG9ja1RhcmdldCA9IHVzZVNjcm9sbExvY2soe1xuICAgIGlzRW5hYmxlZDogbG9ja0VuYWJsZWRcbiAgfSk7XG4gIHZhciB0YXJnZXRSZWYgPSBmdW5jdGlvbiB0YXJnZXRSZWYoZWxlbWVudCkge1xuICAgIHNldFNjcm9sbENhcHR1cmVUYXJnZXQoZWxlbWVudCk7XG4gICAgc2V0U2Nyb2xsTG9ja1RhcmdldChlbGVtZW50KTtcbiAgfTtcbiAgcmV0dXJuIHJlYWN0LmpzeChSZWFjdC5GcmFnbWVudCwgbnVsbCwgbG9ja0VuYWJsZWQgJiYgcmVhY3QuanN4KFwiZGl2XCIsIHtcbiAgICBvbkNsaWNrOiBibHVyU2VsZWN0SW5wdXQsXG4gICAgY3NzOiBfcmVmMiQxXG4gIH0pLCBjaGlsZHJlbih0YXJnZXRSZWYpKTtcbn1cblxudmFyIF9yZWYyID0ge1xuICBuYW1lOiBcIjFhMHJvNG4tcmVxdWlyZWRJbnB1dFwiLFxuICBzdHlsZXM6IFwibGFiZWw6cmVxdWlyZWRJbnB1dDtvcGFjaXR5OjA7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt3aWR0aDoxMDAlXCJcbn0gO1xudmFyIFJlcXVpcmVkSW5wdXQgPSBmdW5jdGlvbiBSZXF1aXJlZElucHV0KF9yZWYpIHtcbiAgdmFyIG5hbWUgPSBfcmVmLm5hbWUsXG4gICAgb25Gb2N1cyA9IF9yZWYub25Gb2N1cztcbiAgcmV0dXJuIHJlYWN0LmpzeChcImlucHV0XCIsIHtcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICBuYW1lOiBuYW1lLFxuICAgIHRhYkluZGV4OiAtMSxcbiAgICBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiLFxuICAgIG9uRm9jdXM6IG9uRm9jdXMsXG4gICAgY3NzOiBfcmVmMlxuICAgIC8vIFByZXZlbnQgYFN3aXRjaGluZyBmcm9tIHVuY29udHJvbGxlZCB0byBjb250cm9sbGVkYCBlcnJvclxuICAgICxcbiAgICB2YWx1ZTogXCJcIixcbiAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoKSB7fVxuICB9KTtcbn07XG52YXIgUmVxdWlyZWRJbnB1dCQxID0gUmVxdWlyZWRJbnB1dDtcblxuLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJ1c2VyLWFnZW50LWRhdGEtdHlwZXNcIiAvPlxuXG5mdW5jdGlvbiB0ZXN0UGxhdGZvcm0ocmUpIHtcbiAgdmFyIF93aW5kb3ckbmF2aWdhdG9yJHVzZTtcbiAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5uYXZpZ2F0b3IgIT0gbnVsbCA/IHJlLnRlc3QoKChfd2luZG93JG5hdmlnYXRvciR1c2UgPSB3aW5kb3cubmF2aWdhdG9yWyd1c2VyQWdlbnREYXRhJ10pID09PSBudWxsIHx8IF93aW5kb3ckbmF2aWdhdG9yJHVzZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3dpbmRvdyRuYXZpZ2F0b3IkdXNlLnBsYXRmb3JtKSB8fCB3aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtKSA6IGZhbHNlO1xufVxuZnVuY3Rpb24gaXNJUGhvbmUoKSB7XG4gIHJldHVybiB0ZXN0UGxhdGZvcm0oL15pUGhvbmUvaSk7XG59XG5mdW5jdGlvbiBpc01hYygpIHtcbiAgcmV0dXJuIHRlc3RQbGF0Zm9ybSgvXk1hYy9pKTtcbn1cbmZ1bmN0aW9uIGlzSVBhZCgpIHtcbiAgcmV0dXJuIHRlc3RQbGF0Zm9ybSgvXmlQYWQvaSkgfHxcbiAgLy8gaVBhZE9TIDEzIGxpZXMgYW5kIHNheXMgaXQncyBhIE1hYywgYnV0IHdlIGNhbiBkaXN0aW5ndWlzaCBieSBkZXRlY3RpbmcgdG91Y2ggc3VwcG9ydC5cbiAgaXNNYWMoKSAmJiBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMgPiAxO1xufVxuZnVuY3Rpb24gaXNJT1MoKSB7XG4gIHJldHVybiBpc0lQaG9uZSgpIHx8IGlzSVBhZCgpO1xufVxuZnVuY3Rpb24gaXNBcHBsZURldmljZSgpIHtcbiAgcmV0dXJuIGlzTWFjKCkgfHwgaXNJT1MoKTtcbn1cblxudmFyIGZvcm1hdEdyb3VwTGFiZWwgPSBmdW5jdGlvbiBmb3JtYXRHcm91cExhYmVsKGdyb3VwKSB7XG4gIHJldHVybiBncm91cC5sYWJlbDtcbn07XG52YXIgZ2V0T3B0aW9uTGFiZWwkMSA9IGZ1bmN0aW9uIGdldE9wdGlvbkxhYmVsKG9wdGlvbikge1xuICByZXR1cm4gb3B0aW9uLmxhYmVsO1xufTtcbnZhciBnZXRPcHRpb25WYWx1ZSQxID0gZnVuY3Rpb24gZ2V0T3B0aW9uVmFsdWUob3B0aW9uKSB7XG4gIHJldHVybiBvcHRpb24udmFsdWU7XG59O1xudmFyIGlzT3B0aW9uRGlzYWJsZWQgPSBmdW5jdGlvbiBpc09wdGlvbkRpc2FibGVkKG9wdGlvbikge1xuICByZXR1cm4gISFvcHRpb24uaXNEaXNhYmxlZDtcbn07XG5cbnZhciBkZWZhdWx0U3R5bGVzID0ge1xuICBjbGVhckluZGljYXRvcjogaW5kZXguY2xlYXJJbmRpY2F0b3JDU1MsXG4gIGNvbnRhaW5lcjogaW5kZXguY29udGFpbmVyQ1NTLFxuICBjb250cm9sOiBpbmRleC5jc3MsXG4gIGRyb3Bkb3duSW5kaWNhdG9yOiBpbmRleC5kcm9wZG93bkluZGljYXRvckNTUyxcbiAgZ3JvdXA6IGluZGV4Lmdyb3VwQ1NTLFxuICBncm91cEhlYWRpbmc6IGluZGV4Lmdyb3VwSGVhZGluZ0NTUyxcbiAgaW5kaWNhdG9yc0NvbnRhaW5lcjogaW5kZXguaW5kaWNhdG9yc0NvbnRhaW5lckNTUyxcbiAgaW5kaWNhdG9yU2VwYXJhdG9yOiBpbmRleC5pbmRpY2F0b3JTZXBhcmF0b3JDU1MsXG4gIGlucHV0OiBpbmRleC5pbnB1dENTUyxcbiAgbG9hZGluZ0luZGljYXRvcjogaW5kZXgubG9hZGluZ0luZGljYXRvckNTUyxcbiAgbG9hZGluZ01lc3NhZ2U6IGluZGV4LmxvYWRpbmdNZXNzYWdlQ1NTLFxuICBtZW51OiBpbmRleC5tZW51Q1NTLFxuICBtZW51TGlzdDogaW5kZXgubWVudUxpc3RDU1MsXG4gIG1lbnVQb3J0YWw6IGluZGV4Lm1lbnVQb3J0YWxDU1MsXG4gIG11bHRpVmFsdWU6IGluZGV4Lm11bHRpVmFsdWVDU1MsXG4gIG11bHRpVmFsdWVMYWJlbDogaW5kZXgubXVsdGlWYWx1ZUxhYmVsQ1NTLFxuICBtdWx0aVZhbHVlUmVtb3ZlOiBpbmRleC5tdWx0aVZhbHVlUmVtb3ZlQ1NTLFxuICBub09wdGlvbnNNZXNzYWdlOiBpbmRleC5ub09wdGlvbnNNZXNzYWdlQ1NTLFxuICBvcHRpb246IGluZGV4Lm9wdGlvbkNTUyxcbiAgcGxhY2Vob2xkZXI6IGluZGV4LnBsYWNlaG9sZGVyQ1NTLFxuICBzaW5nbGVWYWx1ZTogaW5kZXguY3NzJDEsXG4gIHZhbHVlQ29udGFpbmVyOiBpbmRleC52YWx1ZUNvbnRhaW5lckNTU1xufTtcbi8vIE1lcmdlIFV0aWxpdHlcbi8vIEFsbG93cyBjb25zdW1lcnMgdG8gZXh0ZW5kIGEgYmFzZSBTZWxlY3Qgd2l0aCBhZGRpdGlvbmFsIHN0eWxlc1xuXG5mdW5jdGlvbiBtZXJnZVN0eWxlcyhzb3VyY2UpIHtcbiAgdmFyIHRhcmdldCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gIC8vIGluaXRpYWxpemUgd2l0aCBzb3VyY2Ugc3R5bGVzXG4gIHZhciBzdHlsZXMgPSBfb2JqZWN0U3ByZWFkKHt9LCBzb3VyY2UpO1xuXG4gIC8vIG1hc3NhZ2UgaW4gdGFyZ2V0IHN0eWxlc1xuICBPYmplY3Qua2V5cyh0YXJnZXQpLmZvckVhY2goZnVuY3Rpb24gKGtleUFzU3RyaW5nKSB7XG4gICAgdmFyIGtleSA9IGtleUFzU3RyaW5nO1xuICAgIGlmIChzb3VyY2Vba2V5XSkge1xuICAgICAgc3R5bGVzW2tleV0gPSBmdW5jdGlvbiAocnNDc3MsIHByb3BzKSB7XG4gICAgICAgIHJldHVybiB0YXJnZXRba2V5XShzb3VyY2Vba2V5XShyc0NzcywgcHJvcHMpLCBwcm9wcyk7XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZXNba2V5XSA9IHRhcmdldFtrZXldO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBzdHlsZXM7XG59XG5cbnZhciBjb2xvcnMgPSB7XG4gIHByaW1hcnk6ICcjMjY4NEZGJyxcbiAgcHJpbWFyeTc1OiAnIzRDOUFGRicsXG4gIHByaW1hcnk1MDogJyNCMkQ0RkYnLFxuICBwcmltYXJ5MjU6ICcjREVFQkZGJyxcbiAgZGFuZ2VyOiAnI0RFMzUwQicsXG4gIGRhbmdlckxpZ2h0OiAnI0ZGQkRBRCcsXG4gIG5ldXRyYWwwOiAnaHNsKDAsIDAlLCAxMDAlKScsXG4gIG5ldXRyYWw1OiAnaHNsKDAsIDAlLCA5NSUpJyxcbiAgbmV1dHJhbDEwOiAnaHNsKDAsIDAlLCA5MCUpJyxcbiAgbmV1dHJhbDIwOiAnaHNsKDAsIDAlLCA4MCUpJyxcbiAgbmV1dHJhbDMwOiAnaHNsKDAsIDAlLCA3MCUpJyxcbiAgbmV1dHJhbDQwOiAnaHNsKDAsIDAlLCA2MCUpJyxcbiAgbmV1dHJhbDUwOiAnaHNsKDAsIDAlLCA1MCUpJyxcbiAgbmV1dHJhbDYwOiAnaHNsKDAsIDAlLCA0MCUpJyxcbiAgbmV1dHJhbDcwOiAnaHNsKDAsIDAlLCAzMCUpJyxcbiAgbmV1dHJhbDgwOiAnaHNsKDAsIDAlLCAyMCUpJyxcbiAgbmV1dHJhbDkwOiAnaHNsKDAsIDAlLCAxMCUpJ1xufTtcbnZhciBib3JkZXJSYWRpdXMgPSA0O1xuLy8gVXNlZCB0byBjYWxjdWxhdGUgY29uc2lzdGVudCBtYXJnaW4vcGFkZGluZyBvbiBlbGVtZW50c1xudmFyIGJhc2VVbml0ID0gNDtcbi8vIFRoZSBtaW5pbXVtIGhlaWdodCBvZiB0aGUgY29udHJvbFxudmFyIGNvbnRyb2xIZWlnaHQgPSAzODtcbi8vIFRoZSBhbW91bnQgb2Ygc3BhY2UgYmV0d2VlbiB0aGUgY29udHJvbCBhbmQgbWVudSAqL1xudmFyIG1lbnVHdXR0ZXIgPSBiYXNlVW5pdCAqIDI7XG52YXIgc3BhY2luZyA9IHtcbiAgYmFzZVVuaXQ6IGJhc2VVbml0LFxuICBjb250cm9sSGVpZ2h0OiBjb250cm9sSGVpZ2h0LFxuICBtZW51R3V0dGVyOiBtZW51R3V0dGVyXG59O1xudmFyIGRlZmF1bHRUaGVtZSA9IHtcbiAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMsXG4gIGNvbG9yczogY29sb3JzLFxuICBzcGFjaW5nOiBzcGFjaW5nXG59O1xuXG52YXIgZGVmYXVsdFByb3BzID0ge1xuICAnYXJpYS1saXZlJzogJ3BvbGl0ZScsXG4gIGJhY2tzcGFjZVJlbW92ZXNWYWx1ZTogdHJ1ZSxcbiAgYmx1cklucHV0T25TZWxlY3Q6IGluZGV4LmlzVG91Y2hDYXBhYmxlKCksXG4gIGNhcHR1cmVNZW51U2Nyb2xsOiAhaW5kZXguaXNUb3VjaENhcGFibGUoKSxcbiAgY2xhc3NOYW1lczoge30sXG4gIGNsb3NlTWVudU9uU2VsZWN0OiB0cnVlLFxuICBjbG9zZU1lbnVPblNjcm9sbDogZmFsc2UsXG4gIGNvbXBvbmVudHM6IHt9LFxuICBjb250cm9sU2hvdWxkUmVuZGVyVmFsdWU6IHRydWUsXG4gIGVzY2FwZUNsZWFyc1ZhbHVlOiBmYWxzZSxcbiAgZmlsdGVyT3B0aW9uOiBjcmVhdGVGaWx0ZXIoKSxcbiAgZm9ybWF0R3JvdXBMYWJlbDogZm9ybWF0R3JvdXBMYWJlbCxcbiAgZ2V0T3B0aW9uTGFiZWw6IGdldE9wdGlvbkxhYmVsJDEsXG4gIGdldE9wdGlvblZhbHVlOiBnZXRPcHRpb25WYWx1ZSQxLFxuICBpc0Rpc2FibGVkOiBmYWxzZSxcbiAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgaXNNdWx0aTogZmFsc2UsXG4gIGlzUnRsOiBmYWxzZSxcbiAgaXNTZWFyY2hhYmxlOiB0cnVlLFxuICBpc09wdGlvbkRpc2FibGVkOiBpc09wdGlvbkRpc2FibGVkLFxuICBsb2FkaW5nTWVzc2FnZTogZnVuY3Rpb24gbG9hZGluZ01lc3NhZ2UoKSB7XG4gICAgcmV0dXJuICdMb2FkaW5nLi4uJztcbiAgfSxcbiAgbWF4TWVudUhlaWdodDogMzAwLFxuICBtaW5NZW51SGVpZ2h0OiAxNDAsXG4gIG1lbnVJc09wZW46IGZhbHNlLFxuICBtZW51UGxhY2VtZW50OiAnYm90dG9tJyxcbiAgbWVudVBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICBtZW51U2hvdWxkQmxvY2tTY3JvbGw6IGZhbHNlLFxuICBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXc6ICFpbmRleC5pc01vYmlsZURldmljZSgpLFxuICBub09wdGlvbnNNZXNzYWdlOiBmdW5jdGlvbiBub09wdGlvbnNNZXNzYWdlKCkge1xuICAgIHJldHVybiAnTm8gb3B0aW9ucyc7XG4gIH0sXG4gIG9wZW5NZW51T25Gb2N1czogZmFsc2UsXG4gIG9wZW5NZW51T25DbGljazogdHJ1ZSxcbiAgb3B0aW9uczogW10sXG4gIHBhZ2VTaXplOiA1LFxuICBwbGFjZWhvbGRlcjogJ1NlbGVjdC4uLicsXG4gIHNjcmVlblJlYWRlclN0YXR1czogZnVuY3Rpb24gc2NyZWVuUmVhZGVyU3RhdHVzKF9yZWYpIHtcbiAgICB2YXIgY291bnQgPSBfcmVmLmNvdW50O1xuICAgIHJldHVybiBcIlwiLmNvbmNhdChjb3VudCwgXCIgcmVzdWx0XCIpLmNvbmNhdChjb3VudCAhPT0gMSA/ICdzJyA6ICcnLCBcIiBhdmFpbGFibGVcIik7XG4gIH0sXG4gIHN0eWxlczoge30sXG4gIHRhYkluZGV4OiAwLFxuICB0YWJTZWxlY3RzVmFsdWU6IHRydWUsXG4gIHVuc3R5bGVkOiBmYWxzZVxufTtcbmZ1bmN0aW9uIHRvQ2F0ZWdvcml6ZWRPcHRpb24ocHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUsIGluZGV4KSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX2lzT3B0aW9uRGlzYWJsZWQocHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpO1xuICB2YXIgaXNTZWxlY3RlZCA9IF9pc09wdGlvblNlbGVjdGVkKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlKTtcbiAgdmFyIGxhYmVsID0gZ2V0T3B0aW9uTGFiZWwocHJvcHMsIG9wdGlvbik7XG4gIHZhciB2YWx1ZSA9IGdldE9wdGlvblZhbHVlKHByb3BzLCBvcHRpb24pO1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdvcHRpb24nLFxuICAgIGRhdGE6IG9wdGlvbixcbiAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgIGlzU2VsZWN0ZWQ6IGlzU2VsZWN0ZWQsXG4gICAgbGFiZWw6IGxhYmVsLFxuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBpbmRleDogaW5kZXhcbiAgfTtcbn1cbmZ1bmN0aW9uIGJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKHByb3BzLCBzZWxlY3RWYWx1ZSkge1xuICByZXR1cm4gcHJvcHMub3B0aW9ucy5tYXAoZnVuY3Rpb24gKGdyb3VwT3JPcHRpb24sIGdyb3VwT3JPcHRpb25JbmRleCkge1xuICAgIGlmICgnb3B0aW9ucycgaW4gZ3JvdXBPck9wdGlvbikge1xuICAgICAgdmFyIGNhdGVnb3JpemVkT3B0aW9ucyA9IGdyb3VwT3JPcHRpb24ub3B0aW9ucy5tYXAoZnVuY3Rpb24gKG9wdGlvbiwgb3B0aW9uSW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHRvQ2F0ZWdvcml6ZWRPcHRpb24ocHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUsIG9wdGlvbkluZGV4KTtcbiAgICAgIH0pLmZpbHRlcihmdW5jdGlvbiAoY2F0ZWdvcml6ZWRPcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIGlzRm9jdXNhYmxlKHByb3BzLCBjYXRlZ29yaXplZE9wdGlvbik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBjYXRlZ29yaXplZE9wdGlvbnMubGVuZ3RoID4gMCA/IHtcbiAgICAgICAgdHlwZTogJ2dyb3VwJyxcbiAgICAgICAgZGF0YTogZ3JvdXBPck9wdGlvbixcbiAgICAgICAgb3B0aW9uczogY2F0ZWdvcml6ZWRPcHRpb25zLFxuICAgICAgICBpbmRleDogZ3JvdXBPck9wdGlvbkluZGV4XG4gICAgICB9IDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICB2YXIgY2F0ZWdvcml6ZWRPcHRpb24gPSB0b0NhdGVnb3JpemVkT3B0aW9uKHByb3BzLCBncm91cE9yT3B0aW9uLCBzZWxlY3RWYWx1ZSwgZ3JvdXBPck9wdGlvbkluZGV4KTtcbiAgICByZXR1cm4gaXNGb2N1c2FibGUocHJvcHMsIGNhdGVnb3JpemVkT3B0aW9uKSA/IGNhdGVnb3JpemVkT3B0aW9uIDogdW5kZWZpbmVkO1xuICB9KS5maWx0ZXIoaW5kZXgubm90TnVsbGlzaCk7XG59XG5mdW5jdGlvbiBidWlsZEZvY3VzYWJsZU9wdGlvbnNGcm9tQ2F0ZWdvcml6ZWRPcHRpb25zKGNhdGVnb3JpemVkT3B0aW9ucykge1xuICByZXR1cm4gY2F0ZWdvcml6ZWRPcHRpb25zLnJlZHVjZShmdW5jdGlvbiAob3B0aW9uc0FjY3VtdWxhdG9yLCBjYXRlZ29yaXplZE9wdGlvbikge1xuICAgIGlmIChjYXRlZ29yaXplZE9wdGlvbi50eXBlID09PSAnZ3JvdXAnKSB7XG4gICAgICBvcHRpb25zQWNjdW11bGF0b3IucHVzaC5hcHBseShvcHRpb25zQWNjdW11bGF0b3IsIF90b0NvbnN1bWFibGVBcnJheShjYXRlZ29yaXplZE9wdGlvbi5vcHRpb25zLm1hcChmdW5jdGlvbiAob3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24uZGF0YTtcbiAgICAgIH0pKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnNBY2N1bXVsYXRvci5wdXNoKGNhdGVnb3JpemVkT3B0aW9uLmRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9uc0FjY3VtdWxhdG9yO1xuICB9LCBbXSk7XG59XG5mdW5jdGlvbiBidWlsZEZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzKGNhdGVnb3JpemVkT3B0aW9ucywgb3B0aW9uSWQpIHtcbiAgcmV0dXJuIGNhdGVnb3JpemVkT3B0aW9ucy5yZWR1Y2UoZnVuY3Rpb24gKG9wdGlvbnNBY2N1bXVsYXRvciwgY2F0ZWdvcml6ZWRPcHRpb24pIHtcbiAgICBpZiAoY2F0ZWdvcml6ZWRPcHRpb24udHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgb3B0aW9uc0FjY3VtdWxhdG9yLnB1c2guYXBwbHkob3B0aW9uc0FjY3VtdWxhdG9yLCBfdG9Db25zdW1hYmxlQXJyYXkoY2F0ZWdvcml6ZWRPcHRpb24ub3B0aW9ucy5tYXAoZnVuY3Rpb24gKG9wdGlvbikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IG9wdGlvbi5kYXRhLFxuICAgICAgICAgIGlkOiBcIlwiLmNvbmNhdChvcHRpb25JZCwgXCItXCIpLmNvbmNhdChjYXRlZ29yaXplZE9wdGlvbi5pbmRleCwgXCItXCIpLmNvbmNhdChvcHRpb24uaW5kZXgpXG4gICAgICAgIH07XG4gICAgICB9KSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zQWNjdW11bGF0b3IucHVzaCh7XG4gICAgICAgIGRhdGE6IGNhdGVnb3JpemVkT3B0aW9uLmRhdGEsXG4gICAgICAgIGlkOiBcIlwiLmNvbmNhdChvcHRpb25JZCwgXCItXCIpLmNvbmNhdChjYXRlZ29yaXplZE9wdGlvbi5pbmRleClcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9uc0FjY3VtdWxhdG9yO1xuICB9LCBbXSk7XG59XG5mdW5jdGlvbiBidWlsZEZvY3VzYWJsZU9wdGlvbnMocHJvcHMsIHNlbGVjdFZhbHVlKSB7XG4gIHJldHVybiBidWlsZEZvY3VzYWJsZU9wdGlvbnNGcm9tQ2F0ZWdvcml6ZWRPcHRpb25zKGJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKHByb3BzLCBzZWxlY3RWYWx1ZSkpO1xufVxuZnVuY3Rpb24gaXNGb2N1c2FibGUocHJvcHMsIGNhdGVnb3JpemVkT3B0aW9uKSB7XG4gIHZhciBfcHJvcHMkaW5wdXRWYWx1ZSA9IHByb3BzLmlucHV0VmFsdWUsXG4gICAgaW5wdXRWYWx1ZSA9IF9wcm9wcyRpbnB1dFZhbHVlID09PSB2b2lkIDAgPyAnJyA6IF9wcm9wcyRpbnB1dFZhbHVlO1xuICB2YXIgZGF0YSA9IGNhdGVnb3JpemVkT3B0aW9uLmRhdGEsXG4gICAgaXNTZWxlY3RlZCA9IGNhdGVnb3JpemVkT3B0aW9uLmlzU2VsZWN0ZWQsXG4gICAgbGFiZWwgPSBjYXRlZ29yaXplZE9wdGlvbi5sYWJlbCxcbiAgICB2YWx1ZSA9IGNhdGVnb3JpemVkT3B0aW9uLnZhbHVlO1xuICByZXR1cm4gKCFzaG91bGRIaWRlU2VsZWN0ZWRPcHRpb25zKHByb3BzKSB8fCAhaXNTZWxlY3RlZCkgJiYgX2ZpbHRlck9wdGlvbihwcm9wcywge1xuICAgIGxhYmVsOiBsYWJlbCxcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgZGF0YTogZGF0YVxuICB9LCBpbnB1dFZhbHVlKTtcbn1cbmZ1bmN0aW9uIGdldE5leHRGb2N1c2VkVmFsdWUoc3RhdGUsIG5leHRTZWxlY3RWYWx1ZSkge1xuICB2YXIgZm9jdXNlZFZhbHVlID0gc3RhdGUuZm9jdXNlZFZhbHVlLFxuICAgIGxhc3RTZWxlY3RWYWx1ZSA9IHN0YXRlLnNlbGVjdFZhbHVlO1xuICB2YXIgbGFzdEZvY3VzZWRJbmRleCA9IGxhc3RTZWxlY3RWYWx1ZS5pbmRleE9mKGZvY3VzZWRWYWx1ZSk7XG4gIGlmIChsYXN0Rm9jdXNlZEluZGV4ID4gLTEpIHtcbiAgICB2YXIgbmV4dEZvY3VzZWRJbmRleCA9IG5leHRTZWxlY3RWYWx1ZS5pbmRleE9mKGZvY3VzZWRWYWx1ZSk7XG4gICAgaWYgKG5leHRGb2N1c2VkSW5kZXggPiAtMSkge1xuICAgICAgLy8gdGhlIGZvY3VzZWQgdmFsdWUgaXMgc3RpbGwgaW4gdGhlIHNlbGVjdFZhbHVlLCByZXR1cm4gaXRcbiAgICAgIHJldHVybiBmb2N1c2VkVmFsdWU7XG4gICAgfSBlbHNlIGlmIChsYXN0Rm9jdXNlZEluZGV4IDwgbmV4dFNlbGVjdFZhbHVlLmxlbmd0aCkge1xuICAgICAgLy8gdGhlIGZvY3VzZWRWYWx1ZSBpcyBub3QgcHJlc2VudCBpbiB0aGUgbmV4dCBzZWxlY3RWYWx1ZSBhcnJheSBieVxuICAgICAgLy8gcmVmZXJlbmNlLCBzbyByZXR1cm4gdGhlIG5ldyB2YWx1ZSBhdCB0aGUgc2FtZSBpbmRleFxuICAgICAgcmV0dXJuIG5leHRTZWxlY3RWYWx1ZVtsYXN0Rm9jdXNlZEluZGV4XTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiBnZXROZXh0Rm9jdXNlZE9wdGlvbihzdGF0ZSwgb3B0aW9ucykge1xuICB2YXIgbGFzdEZvY3VzZWRPcHRpb24gPSBzdGF0ZS5mb2N1c2VkT3B0aW9uO1xuICByZXR1cm4gbGFzdEZvY3VzZWRPcHRpb24gJiYgb3B0aW9ucy5pbmRleE9mKGxhc3RGb2N1c2VkT3B0aW9uKSA+IC0xID8gbGFzdEZvY3VzZWRPcHRpb24gOiBvcHRpb25zWzBdO1xufVxudmFyIGdldEZvY3VzZWRPcHRpb25JZCA9IGZ1bmN0aW9uIGdldEZvY3VzZWRPcHRpb25JZChmb2N1c2FibGVPcHRpb25zV2l0aElkcywgZm9jdXNlZE9wdGlvbikge1xuICB2YXIgX2ZvY3VzYWJsZU9wdGlvbnNXaXRoO1xuICB2YXIgZm9jdXNlZE9wdGlvbklkID0gKF9mb2N1c2FibGVPcHRpb25zV2l0aCA9IGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLmZpbmQoZnVuY3Rpb24gKG9wdGlvbikge1xuICAgIHJldHVybiBvcHRpb24uZGF0YSA9PT0gZm9jdXNlZE9wdGlvbjtcbiAgfSkpID09PSBudWxsIHx8IF9mb2N1c2FibGVPcHRpb25zV2l0aCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2ZvY3VzYWJsZU9wdGlvbnNXaXRoLmlkO1xuICByZXR1cm4gZm9jdXNlZE9wdGlvbklkIHx8IG51bGw7XG59O1xudmFyIGdldE9wdGlvbkxhYmVsID0gZnVuY3Rpb24gZ2V0T3B0aW9uTGFiZWwocHJvcHMsIGRhdGEpIHtcbiAgcmV0dXJuIHByb3BzLmdldE9wdGlvbkxhYmVsKGRhdGEpO1xufTtcbnZhciBnZXRPcHRpb25WYWx1ZSA9IGZ1bmN0aW9uIGdldE9wdGlvblZhbHVlKHByb3BzLCBkYXRhKSB7XG4gIHJldHVybiBwcm9wcy5nZXRPcHRpb25WYWx1ZShkYXRhKTtcbn07XG5mdW5jdGlvbiBfaXNPcHRpb25EaXNhYmxlZChwcm9wcywgb3B0aW9uLCBzZWxlY3RWYWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHByb3BzLmlzT3B0aW9uRGlzYWJsZWQgPT09ICdmdW5jdGlvbicgPyBwcm9wcy5pc09wdGlvbkRpc2FibGVkKG9wdGlvbiwgc2VsZWN0VmFsdWUpIDogZmFsc2U7XG59XG5mdW5jdGlvbiBfaXNPcHRpb25TZWxlY3RlZChwcm9wcywgb3B0aW9uLCBzZWxlY3RWYWx1ZSkge1xuICBpZiAoc2VsZWN0VmFsdWUuaW5kZXhPZihvcHRpb24pID4gLTEpIHJldHVybiB0cnVlO1xuICBpZiAodHlwZW9mIHByb3BzLmlzT3B0aW9uU2VsZWN0ZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gcHJvcHMuaXNPcHRpb25TZWxlY3RlZChvcHRpb24sIHNlbGVjdFZhbHVlKTtcbiAgfVxuICB2YXIgY2FuZGlkYXRlID0gZ2V0T3B0aW9uVmFsdWUocHJvcHMsIG9wdGlvbik7XG4gIHJldHVybiBzZWxlY3RWYWx1ZS5zb21lKGZ1bmN0aW9uIChpKSB7XG4gICAgcmV0dXJuIGdldE9wdGlvblZhbHVlKHByb3BzLCBpKSA9PT0gY2FuZGlkYXRlO1xuICB9KTtcbn1cbmZ1bmN0aW9uIF9maWx0ZXJPcHRpb24ocHJvcHMsIG9wdGlvbiwgaW5wdXRWYWx1ZSkge1xuICByZXR1cm4gcHJvcHMuZmlsdGVyT3B0aW9uID8gcHJvcHMuZmlsdGVyT3B0aW9uKG9wdGlvbiwgaW5wdXRWYWx1ZSkgOiB0cnVlO1xufVxudmFyIHNob3VsZEhpZGVTZWxlY3RlZE9wdGlvbnMgPSBmdW5jdGlvbiBzaG91bGRIaWRlU2VsZWN0ZWRPcHRpb25zKHByb3BzKSB7XG4gIHZhciBoaWRlU2VsZWN0ZWRPcHRpb25zID0gcHJvcHMuaGlkZVNlbGVjdGVkT3B0aW9ucyxcbiAgICBpc011bHRpID0gcHJvcHMuaXNNdWx0aTtcbiAgaWYgKGhpZGVTZWxlY3RlZE9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGlzTXVsdGk7XG4gIHJldHVybiBoaWRlU2VsZWN0ZWRPcHRpb25zO1xufTtcbnZhciBpbnN0YW5jZUlkID0gMTtcbnZhciBTZWxlY3QgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFNlbGVjdCwgX0NvbXBvbmVudCk7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoU2VsZWN0KTtcbiAgLy8gTWlzYy4gSW5zdGFuY2UgUHJvcGVydGllc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvLyBUT0RPXG5cbiAgLy8gUmVmc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvLyBMaWZlY3ljbGVcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgZnVuY3Rpb24gU2VsZWN0KF9wcm9wcykge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU2VsZWN0KTtcbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIF9wcm9wcyk7XG4gICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICBhcmlhU2VsZWN0aW9uOiBudWxsLFxuICAgICAgZm9jdXNlZE9wdGlvbjogbnVsbCxcbiAgICAgIGZvY3VzZWRPcHRpb25JZDogbnVsbCxcbiAgICAgIGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzOiBbXSxcbiAgICAgIGZvY3VzZWRWYWx1ZTogbnVsbCxcbiAgICAgIGlucHV0SXNIaWRkZW46IGZhbHNlLFxuICAgICAgaXNGb2N1c2VkOiBmYWxzZSxcbiAgICAgIHNlbGVjdFZhbHVlOiBbXSxcbiAgICAgIGNsZWFyRm9jdXNWYWx1ZU9uVXBkYXRlOiBmYWxzZSxcbiAgICAgIHByZXZXYXNGb2N1c2VkOiBmYWxzZSxcbiAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogdW5kZWZpbmVkLFxuICAgICAgcHJldlByb3BzOiB1bmRlZmluZWQsXG4gICAgICBpbnN0YW5jZVByZWZpeDogJydcbiAgICB9O1xuICAgIF90aGlzLmJsb2NrT3B0aW9uSG92ZXIgPSBmYWxzZTtcbiAgICBfdGhpcy5pc0NvbXBvc2luZyA9IGZhbHNlO1xuICAgIF90aGlzLmNvbW1vblByb3BzID0gdm9pZCAwO1xuICAgIF90aGlzLmluaXRpYWxUb3VjaFggPSAwO1xuICAgIF90aGlzLmluaXRpYWxUb3VjaFkgPSAwO1xuICAgIF90aGlzLm9wZW5BZnRlckZvY3VzID0gZmFsc2U7XG4gICAgX3RoaXMuc2Nyb2xsVG9Gb2N1c2VkT3B0aW9uT25VcGRhdGUgPSBmYWxzZTtcbiAgICBfdGhpcy51c2VySXNEcmFnZ2luZyA9IHZvaWQgMDtcbiAgICBfdGhpcy5pc0FwcGxlRGV2aWNlID0gaXNBcHBsZURldmljZSgpO1xuICAgIF90aGlzLmNvbnRyb2xSZWYgPSBudWxsO1xuICAgIF90aGlzLmdldENvbnRyb2xSZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICBfdGhpcy5jb250cm9sUmVmID0gcmVmO1xuICAgIH07XG4gICAgX3RoaXMuZm9jdXNlZE9wdGlvblJlZiA9IG51bGw7XG4gICAgX3RoaXMuZ2V0Rm9jdXNlZE9wdGlvblJlZiA9IGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgIF90aGlzLmZvY3VzZWRPcHRpb25SZWYgPSByZWY7XG4gICAgfTtcbiAgICBfdGhpcy5tZW51TGlzdFJlZiA9IG51bGw7XG4gICAgX3RoaXMuZ2V0TWVudUxpc3RSZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICBfdGhpcy5tZW51TGlzdFJlZiA9IHJlZjtcbiAgICB9O1xuICAgIF90aGlzLmlucHV0UmVmID0gbnVsbDtcbiAgICBfdGhpcy5nZXRJbnB1dFJlZiA9IGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgIF90aGlzLmlucHV0UmVmID0gcmVmO1xuICAgIH07XG4gICAgX3RoaXMuZm9jdXMgPSBfdGhpcy5mb2N1c0lucHV0O1xuICAgIF90aGlzLmJsdXIgPSBfdGhpcy5ibHVySW5wdXQ7XG4gICAgX3RoaXMub25DaGFuZ2UgPSBmdW5jdGlvbiAobmV3VmFsdWUsIGFjdGlvbk1ldGEpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IF90aGlzLnByb3BzLFxuICAgICAgICBvbkNoYW5nZSA9IF90aGlzJHByb3BzLm9uQ2hhbmdlLFxuICAgICAgICBuYW1lID0gX3RoaXMkcHJvcHMubmFtZTtcbiAgICAgIGFjdGlvbk1ldGEubmFtZSA9IG5hbWU7XG4gICAgICBfdGhpcy5hcmlhT25DaGFuZ2UobmV3VmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgICAgb25DaGFuZ2UobmV3VmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgIH07XG4gICAgX3RoaXMuc2V0VmFsdWUgPSBmdW5jdGlvbiAobmV3VmFsdWUsIGFjdGlvbiwgb3B0aW9uKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMyID0gX3RoaXMucHJvcHMsXG4gICAgICAgIGNsb3NlTWVudU9uU2VsZWN0ID0gX3RoaXMkcHJvcHMyLmNsb3NlTWVudU9uU2VsZWN0LFxuICAgICAgICBpc011bHRpID0gX3RoaXMkcHJvcHMyLmlzTXVsdGksXG4gICAgICAgIGlucHV0VmFsdWUgPSBfdGhpcyRwcm9wczIuaW5wdXRWYWx1ZTtcbiAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoJycsIHtcbiAgICAgICAgYWN0aW9uOiAnc2V0LXZhbHVlJyxcbiAgICAgICAgcHJldklucHV0VmFsdWU6IGlucHV0VmFsdWVcbiAgICAgIH0pO1xuICAgICAgaWYgKGNsb3NlTWVudU9uU2VsZWN0KSB7XG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6ICFpc011bHRpXG4gICAgICAgIH0pO1xuICAgICAgICBfdGhpcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgfVxuICAgICAgLy8gd2hlbiB0aGUgc2VsZWN0IHZhbHVlIHNob3VsZCBjaGFuZ2UsIHdlIHNob3VsZCByZXNldCBmb2N1c2VkVmFsdWVcbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgY2xlYXJGb2N1c1ZhbHVlT25VcGRhdGU6IHRydWVcbiAgICAgIH0pO1xuICAgICAgX3RoaXMub25DaGFuZ2UobmV3VmFsdWUsIHtcbiAgICAgICAgYWN0aW9uOiBhY3Rpb24sXG4gICAgICAgIG9wdGlvbjogb3B0aW9uXG4gICAgICB9KTtcbiAgICB9O1xuICAgIF90aGlzLnNlbGVjdE9wdGlvbiA9IGZ1bmN0aW9uIChuZXdWYWx1ZSkge1xuICAgICAgdmFyIF90aGlzJHByb3BzMyA9IF90aGlzLnByb3BzLFxuICAgICAgICBibHVySW5wdXRPblNlbGVjdCA9IF90aGlzJHByb3BzMy5ibHVySW5wdXRPblNlbGVjdCxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzMy5pc011bHRpLFxuICAgICAgICBuYW1lID0gX3RoaXMkcHJvcHMzLm5hbWU7XG4gICAgICB2YXIgc2VsZWN0VmFsdWUgPSBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIHZhciBkZXNlbGVjdGVkID0gaXNNdWx0aSAmJiBfdGhpcy5pc09wdGlvblNlbGVjdGVkKG5ld1ZhbHVlLCBzZWxlY3RWYWx1ZSk7XG4gICAgICB2YXIgaXNEaXNhYmxlZCA9IF90aGlzLmlzT3B0aW9uRGlzYWJsZWQobmV3VmFsdWUsIHNlbGVjdFZhbHVlKTtcbiAgICAgIGlmIChkZXNlbGVjdGVkKSB7XG4gICAgICAgIHZhciBjYW5kaWRhdGUgPSBfdGhpcy5nZXRPcHRpb25WYWx1ZShuZXdWYWx1ZSk7XG4gICAgICAgIF90aGlzLnNldFZhbHVlKGluZGV4Lm11bHRpVmFsdWVBc1ZhbHVlKHNlbGVjdFZhbHVlLmZpbHRlcihmdW5jdGlvbiAoaSkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5nZXRPcHRpb25WYWx1ZShpKSAhPT0gY2FuZGlkYXRlO1xuICAgICAgICB9KSksICdkZXNlbGVjdC1vcHRpb24nLCBuZXdWYWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKCFpc0Rpc2FibGVkKSB7XG4gICAgICAgIC8vIFNlbGVjdCBvcHRpb24gaWYgb3B0aW9uIGlzIG5vdCBkaXNhYmxlZFxuICAgICAgICBpZiAoaXNNdWx0aSkge1xuICAgICAgICAgIF90aGlzLnNldFZhbHVlKGluZGV4Lm11bHRpVmFsdWVBc1ZhbHVlKFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoc2VsZWN0VmFsdWUpLCBbbmV3VmFsdWVdKSksICdzZWxlY3Qtb3B0aW9uJywgbmV3VmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF90aGlzLnNldFZhbHVlKGluZGV4LnNpbmdsZVZhbHVlQXNWYWx1ZShuZXdWYWx1ZSksICdzZWxlY3Qtb3B0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF90aGlzLmFyaWFPbkNoYW5nZShpbmRleC5zaW5nbGVWYWx1ZUFzVmFsdWUobmV3VmFsdWUpLCB7XG4gICAgICAgICAgYWN0aW9uOiAnc2VsZWN0LW9wdGlvbicsXG4gICAgICAgICAgb3B0aW9uOiBuZXdWYWx1ZSxcbiAgICAgICAgICBuYW1lOiBuYW1lXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoYmx1cklucHV0T25TZWxlY3QpIHtcbiAgICAgICAgX3RoaXMuYmx1cklucHV0KCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBfdGhpcy5yZW1vdmVWYWx1ZSA9IGZ1bmN0aW9uIChyZW1vdmVkVmFsdWUpIHtcbiAgICAgIHZhciBpc011bHRpID0gX3RoaXMucHJvcHMuaXNNdWx0aTtcbiAgICAgIHZhciBzZWxlY3RWYWx1ZSA9IF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlO1xuICAgICAgdmFyIGNhbmRpZGF0ZSA9IF90aGlzLmdldE9wdGlvblZhbHVlKHJlbW92ZWRWYWx1ZSk7XG4gICAgICB2YXIgbmV3VmFsdWVBcnJheSA9IHNlbGVjdFZhbHVlLmZpbHRlcihmdW5jdGlvbiAoaSkge1xuICAgICAgICByZXR1cm4gX3RoaXMuZ2V0T3B0aW9uVmFsdWUoaSkgIT09IGNhbmRpZGF0ZTtcbiAgICAgIH0pO1xuICAgICAgdmFyIG5ld1ZhbHVlID0gaW5kZXgudmFsdWVUZXJuYXJ5KGlzTXVsdGksIG5ld1ZhbHVlQXJyYXksIG5ld1ZhbHVlQXJyYXlbMF0gfHwgbnVsbCk7XG4gICAgICBfdGhpcy5vbkNoYW5nZShuZXdWYWx1ZSwge1xuICAgICAgICBhY3Rpb246ICdyZW1vdmUtdmFsdWUnLFxuICAgICAgICByZW1vdmVkVmFsdWU6IHJlbW92ZWRWYWx1ZVxuICAgICAgfSk7XG4gICAgICBfdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgfTtcbiAgICBfdGhpcy5jbGVhclZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICBfdGhpcy5vbkNoYW5nZShpbmRleC52YWx1ZVRlcm5hcnkoX3RoaXMucHJvcHMuaXNNdWx0aSwgW10sIG51bGwpLCB7XG4gICAgICAgIGFjdGlvbjogJ2NsZWFyJyxcbiAgICAgICAgcmVtb3ZlZFZhbHVlczogc2VsZWN0VmFsdWVcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMucG9wVmFsdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgaXNNdWx0aSA9IF90aGlzLnByb3BzLmlzTXVsdGk7XG4gICAgICB2YXIgc2VsZWN0VmFsdWUgPSBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIHZhciBsYXN0U2VsZWN0ZWRWYWx1ZSA9IHNlbGVjdFZhbHVlW3NlbGVjdFZhbHVlLmxlbmd0aCAtIDFdO1xuICAgICAgdmFyIG5ld1ZhbHVlQXJyYXkgPSBzZWxlY3RWYWx1ZS5zbGljZSgwLCBzZWxlY3RWYWx1ZS5sZW5ndGggLSAxKTtcbiAgICAgIHZhciBuZXdWYWx1ZSA9IGluZGV4LnZhbHVlVGVybmFyeShpc011bHRpLCBuZXdWYWx1ZUFycmF5LCBuZXdWYWx1ZUFycmF5WzBdIHx8IG51bGwpO1xuICAgICAgaWYgKGxhc3RTZWxlY3RlZFZhbHVlKSB7XG4gICAgICAgIF90aGlzLm9uQ2hhbmdlKG5ld1ZhbHVlLCB7XG4gICAgICAgICAgYWN0aW9uOiAncG9wLXZhbHVlJyxcbiAgICAgICAgICByZW1vdmVkVmFsdWU6IGxhc3RTZWxlY3RlZFZhbHVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMuZ2V0Rm9jdXNlZE9wdGlvbklkID0gZnVuY3Rpb24gKGZvY3VzZWRPcHRpb24pIHtcbiAgICAgIHJldHVybiBnZXRGb2N1c2VkT3B0aW9uSWQoX3RoaXMuc3RhdGUuZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMsIGZvY3VzZWRPcHRpb24pO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gYnVpbGRGb2N1c2FibGVPcHRpb25zV2l0aElkcyhidWlsZENhdGVnb3JpemVkT3B0aW9ucyhfdGhpcy5wcm9wcywgX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWUpLCBfdGhpcy5nZXRFbGVtZW50SWQoJ29wdGlvbicpKTtcbiAgICB9O1xuICAgIF90aGlzLmdldFZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlO1xuICAgIH07XG4gICAgX3RoaXMuY3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbmRleC5jbGFzc05hbWVzLmFwcGx5KHZvaWQgMCwgW190aGlzLnByb3BzLmNsYXNzTmFtZVByZWZpeF0uY29uY2F0KGFyZ3MpKTtcbiAgICB9O1xuICAgIF90aGlzLmdldE9wdGlvbkxhYmVsID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIHJldHVybiBnZXRPcHRpb25MYWJlbChfdGhpcy5wcm9wcywgZGF0YSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRPcHRpb25WYWx1ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICByZXR1cm4gZ2V0T3B0aW9uVmFsdWUoX3RoaXMucHJvcHMsIGRhdGEpO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0U3R5bGVzID0gZnVuY3Rpb24gKGtleSwgcHJvcHMpIHtcbiAgICAgIHZhciB1bnN0eWxlZCA9IF90aGlzLnByb3BzLnVuc3R5bGVkO1xuICAgICAgdmFyIGJhc2UgPSBkZWZhdWx0U3R5bGVzW2tleV0ocHJvcHMsIHVuc3R5bGVkKTtcbiAgICAgIGJhc2UuYm94U2l6aW5nID0gJ2JvcmRlci1ib3gnO1xuICAgICAgdmFyIGN1c3RvbSA9IF90aGlzLnByb3BzLnN0eWxlc1trZXldO1xuICAgICAgcmV0dXJuIGN1c3RvbSA/IGN1c3RvbShiYXNlLCBwcm9wcykgOiBiYXNlO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0Q2xhc3NOYW1lcyA9IGZ1bmN0aW9uIChrZXksIHByb3BzKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMkY2xhc3NOYW1lLCBfdGhpcyRwcm9wcyRjbGFzc05hbWUyO1xuICAgICAgcmV0dXJuIChfdGhpcyRwcm9wcyRjbGFzc05hbWUgPSAoX3RoaXMkcHJvcHMkY2xhc3NOYW1lMiA9IF90aGlzLnByb3BzLmNsYXNzTmFtZXMpW2tleV0pID09PSBudWxsIHx8IF90aGlzJHByb3BzJGNsYXNzTmFtZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkY2xhc3NOYW1lLmNhbGwoX3RoaXMkcHJvcHMkY2xhc3NOYW1lMiwgcHJvcHMpO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0RWxlbWVudElkID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBcIlwiLmNvbmNhdChfdGhpcy5zdGF0ZS5pbnN0YW5jZVByZWZpeCwgXCItXCIpLmNvbmNhdChlbGVtZW50KTtcbiAgICB9O1xuICAgIF90aGlzLmdldENvbXBvbmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gaW5kZXguZGVmYXVsdENvbXBvbmVudHMoX3RoaXMucHJvcHMpO1xuICAgIH07XG4gICAgX3RoaXMuYnVpbGRDYXRlZ29yaXplZE9wdGlvbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gYnVpbGRDYXRlZ29yaXplZE9wdGlvbnMoX3RoaXMucHJvcHMsIF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlKTtcbiAgICB9O1xuICAgIF90aGlzLmdldENhdGVnb3JpemVkT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5wcm9wcy5tZW51SXNPcGVuID8gX3RoaXMuYnVpbGRDYXRlZ29yaXplZE9wdGlvbnMoKSA6IFtdO1xuICAgIH07XG4gICAgX3RoaXMuYnVpbGRGb2N1c2FibGVPcHRpb25zID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGJ1aWxkRm9jdXNhYmxlT3B0aW9uc0Zyb21DYXRlZ29yaXplZE9wdGlvbnMoX3RoaXMuYnVpbGRDYXRlZ29yaXplZE9wdGlvbnMoKSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRGb2N1c2FibGVPcHRpb25zID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzLnByb3BzLm1lbnVJc09wZW4gPyBfdGhpcy5idWlsZEZvY3VzYWJsZU9wdGlvbnMoKSA6IFtdO1xuICAgIH07XG4gICAgX3RoaXMuYXJpYU9uQ2hhbmdlID0gZnVuY3Rpb24gKHZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGFyaWFTZWxlY3Rpb246IF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9LCBhY3Rpb25NZXRhKVxuICAgICAgfSk7XG4gICAgfTtcbiAgICBfdGhpcy5vbk1lbnVNb3VzZURvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgX3RoaXMuZm9jdXNJbnB1dCgpO1xuICAgIH07XG4gICAgX3RoaXMub25NZW51TW91c2VNb3ZlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBfdGhpcy5ibG9ja09wdGlvbkhvdmVyID0gZmFsc2U7XG4gICAgfTtcbiAgICBfdGhpcy5vbkNvbnRyb2xNb3VzZURvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIC8vIEV2ZW50IGNhcHR1cmVkIGJ5IGRyb3Bkb3duIGluZGljYXRvclxuICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIG9wZW5NZW51T25DbGljayA9IF90aGlzLnByb3BzLm9wZW5NZW51T25DbGljaztcbiAgICAgIGlmICghX3RoaXMuc3RhdGUuaXNGb2N1c2VkKSB7XG4gICAgICAgIGlmIChvcGVuTWVudU9uQ2xpY2spIHtcbiAgICAgICAgICBfdGhpcy5vcGVuQWZ0ZXJGb2N1cyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgX3RoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgfSBlbHNlIGlmICghX3RoaXMucHJvcHMubWVudUlzT3Blbikge1xuICAgICAgICBpZiAob3Blbk1lbnVPbkNsaWNrKSB7XG4gICAgICAgICAgX3RoaXMub3Blbk1lbnUoJ2ZpcnN0Jyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChldmVudC50YXJnZXQudGFnTmFtZSAhPT0gJ0lOUFVUJyAmJiBldmVudC50YXJnZXQudGFnTmFtZSAhPT0gJ1RFWFRBUkVBJykge1xuICAgICAgICAgIF90aGlzLm9uTWVudUNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChldmVudC50YXJnZXQudGFnTmFtZSAhPT0gJ0lOUFVUJyAmJiBldmVudC50YXJnZXQudGFnTmFtZSAhPT0gJ1RFWFRBUkVBJykge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMub25Ecm9wZG93bkluZGljYXRvck1vdXNlRG93biA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgLy8gaWdub3JlIG1vdXNlIGV2ZW50cyB0aGF0IHdlcmVuJ3QgdHJpZ2dlcmVkIGJ5IHRoZSBwcmltYXJ5IGJ1dHRvblxuICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LnR5cGUgPT09ICdtb3VzZWRvd24nICYmIGV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoX3RoaXMucHJvcHMuaXNEaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgdmFyIF90aGlzJHByb3BzNCA9IF90aGlzLnByb3BzLFxuICAgICAgICBpc011bHRpID0gX3RoaXMkcHJvcHM0LmlzTXVsdGksXG4gICAgICAgIG1lbnVJc09wZW4gPSBfdGhpcyRwcm9wczQubWVudUlzT3BlbjtcbiAgICAgIF90aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgIGlmIChtZW51SXNPcGVuKSB7XG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6ICFpc011bHRpXG4gICAgICAgIH0pO1xuICAgICAgICBfdGhpcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3RoaXMub3Blbk1lbnUoJ2ZpcnN0Jyk7XG4gICAgICB9XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH07XG4gICAgX3RoaXMub25DbGVhckluZGljYXRvck1vdXNlRG93biA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgLy8gaWdub3JlIG1vdXNlIGV2ZW50cyB0aGF0IHdlcmVuJ3QgdHJpZ2dlcmVkIGJ5IHRoZSBwcmltYXJ5IGJ1dHRvblxuICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LnR5cGUgPT09ICdtb3VzZWRvd24nICYmIGV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBfdGhpcy5jbGVhclZhbHVlKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgX3RoaXMub3BlbkFmdGVyRm9jdXMgPSBmYWxzZTtcbiAgICAgIGlmIChldmVudC50eXBlID09PSAndG91Y2hlbmQnKSB7XG4gICAgICAgIF90aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMub25TY3JvbGwgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmICh0eXBlb2YgX3RoaXMucHJvcHMuY2xvc2VNZW51T25TY3JvbGwgPT09ICdib29sZWFuJykge1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgaW5kZXguaXNEb2N1bWVudEVsZW1lbnQoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgIF90aGlzLnByb3BzLm9uTWVudUNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIF90aGlzLnByb3BzLmNsb3NlTWVudU9uU2Nyb2xsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGlmIChfdGhpcy5wcm9wcy5jbG9zZU1lbnVPblNjcm9sbChldmVudCkpIHtcbiAgICAgICAgICBfdGhpcy5wcm9wcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBfdGhpcy5vbkNvbXBvc2l0aW9uU3RhcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5pc0NvbXBvc2luZyA9IHRydWU7XG4gICAgfTtcbiAgICBfdGhpcy5vbkNvbXBvc2l0aW9uRW5kID0gZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuaXNDb21wb3NpbmcgPSBmYWxzZTtcbiAgICB9O1xuICAgIF90aGlzLm9uVG91Y2hTdGFydCA9IGZ1bmN0aW9uIChfcmVmMikge1xuICAgICAgdmFyIHRvdWNoZXMgPSBfcmVmMi50b3VjaGVzO1xuICAgICAgdmFyIHRvdWNoID0gdG91Y2hlcyAmJiB0b3VjaGVzLml0ZW0oMCk7XG4gICAgICBpZiAoIXRvdWNoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIF90aGlzLmluaXRpYWxUb3VjaFggPSB0b3VjaC5jbGllbnRYO1xuICAgICAgX3RoaXMuaW5pdGlhbFRvdWNoWSA9IHRvdWNoLmNsaWVudFk7XG4gICAgICBfdGhpcy51c2VySXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgIH07XG4gICAgX3RoaXMub25Ub3VjaE1vdmUgPSBmdW5jdGlvbiAoX3JlZjMpIHtcbiAgICAgIHZhciB0b3VjaGVzID0gX3JlZjMudG91Y2hlcztcbiAgICAgIHZhciB0b3VjaCA9IHRvdWNoZXMgJiYgdG91Y2hlcy5pdGVtKDApO1xuICAgICAgaWYgKCF0b3VjaCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgZGVsdGFYID0gTWF0aC5hYnModG91Y2guY2xpZW50WCAtIF90aGlzLmluaXRpYWxUb3VjaFgpO1xuICAgICAgdmFyIGRlbHRhWSA9IE1hdGguYWJzKHRvdWNoLmNsaWVudFkgLSBfdGhpcy5pbml0aWFsVG91Y2hZKTtcbiAgICAgIHZhciBtb3ZlVGhyZXNob2xkID0gNTtcbiAgICAgIF90aGlzLnVzZXJJc0RyYWdnaW5nID0gZGVsdGFYID4gbW92ZVRocmVzaG9sZCB8fCBkZWx0YVkgPiBtb3ZlVGhyZXNob2xkO1xuICAgIH07XG4gICAgX3RoaXMub25Ub3VjaEVuZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnVzZXJJc0RyYWdnaW5nKSByZXR1cm47XG5cbiAgICAgIC8vIGNsb3NlIHRoZSBtZW51IGlmIHRoZSB1c2VyIHRhcHMgb3V0c2lkZVxuICAgICAgLy8gd2UncmUgY2hlY2tpbmcgb24gZXZlbnQudGFyZ2V0IGhlcmUgaW5zdGVhZCBvZiBldmVudC5jdXJyZW50VGFyZ2V0LCBiZWNhdXNlIHdlIHdhbnQgdG8gYXNzZXJ0IGluZm9ybWF0aW9uXG4gICAgICAvLyBvbiBldmVudHMgb24gY2hpbGQgZWxlbWVudHMsIG5vdCB0aGUgZG9jdW1lbnQgKHdoaWNoIHdlJ3ZlIGF0dGFjaGVkIHRoaXMgaGFuZGxlciB0bykuXG4gICAgICBpZiAoX3RoaXMuY29udHJvbFJlZiAmJiAhX3RoaXMuY29udHJvbFJlZi5jb250YWlucyhldmVudC50YXJnZXQpICYmIF90aGlzLm1lbnVMaXN0UmVmICYmICFfdGhpcy5tZW51TGlzdFJlZi5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgIF90aGlzLmJsdXJJbnB1dCgpO1xuICAgICAgfVxuXG4gICAgICAvLyByZXNldCBtb3ZlIHZhcnNcbiAgICAgIF90aGlzLmluaXRpYWxUb3VjaFggPSAwO1xuICAgICAgX3RoaXMuaW5pdGlhbFRvdWNoWSA9IDA7XG4gICAgfTtcbiAgICBfdGhpcy5vbkNvbnRyb2xUb3VjaEVuZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnVzZXJJc0RyYWdnaW5nKSByZXR1cm47XG4gICAgICBfdGhpcy5vbkNvbnRyb2xNb3VzZURvd24oZXZlbnQpO1xuICAgIH07XG4gICAgX3RoaXMub25DbGVhckluZGljYXRvclRvdWNoRW5kID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAoX3RoaXMudXNlcklzRHJhZ2dpbmcpIHJldHVybjtcbiAgICAgIF90aGlzLm9uQ2xlYXJJbmRpY2F0b3JNb3VzZURvd24oZXZlbnQpO1xuICAgIH07XG4gICAgX3RoaXMub25Ecm9wZG93bkluZGljYXRvclRvdWNoRW5kID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAoX3RoaXMudXNlcklzRHJhZ2dpbmcpIHJldHVybjtcbiAgICAgIF90aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JNb3VzZURvd24oZXZlbnQpO1xuICAgIH07XG4gICAgX3RoaXMuaGFuZGxlSW5wdXRDaGFuZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHZhciBwcmV2SW5wdXRWYWx1ZSA9IF90aGlzLnByb3BzLmlucHV0VmFsdWU7XG4gICAgICB2YXIgaW5wdXRWYWx1ZSA9IGV2ZW50LmN1cnJlbnRUYXJnZXQudmFsdWU7XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgX3RoaXMub25JbnB1dENoYW5nZShpbnB1dFZhbHVlLCB7XG4gICAgICAgIGFjdGlvbjogJ2lucHV0LWNoYW5nZScsXG4gICAgICAgIHByZXZJbnB1dFZhbHVlOiBwcmV2SW5wdXRWYWx1ZVxuICAgICAgfSk7XG4gICAgICBpZiAoIV90aGlzLnByb3BzLm1lbnVJc09wZW4pIHtcbiAgICAgICAgX3RoaXMub25NZW51T3BlbigpO1xuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMub25JbnB1dEZvY3VzID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAoX3RoaXMucHJvcHMub25Gb2N1cykge1xuICAgICAgICBfdGhpcy5wcm9wcy5vbkZvY3VzKGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlOiBmYWxzZSxcbiAgICAgICAgaXNGb2N1c2VkOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIGlmIChfdGhpcy5vcGVuQWZ0ZXJGb2N1cyB8fCBfdGhpcy5wcm9wcy5vcGVuTWVudU9uRm9jdXMpIHtcbiAgICAgICAgX3RoaXMub3Blbk1lbnUoJ2ZpcnN0Jyk7XG4gICAgICB9XG4gICAgICBfdGhpcy5vcGVuQWZ0ZXJGb2N1cyA9IGZhbHNlO1xuICAgIH07XG4gICAgX3RoaXMub25JbnB1dEJsdXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHZhciBwcmV2SW5wdXRWYWx1ZSA9IF90aGlzLnByb3BzLmlucHV0VmFsdWU7XG4gICAgICBpZiAoX3RoaXMubWVudUxpc3RSZWYgJiYgX3RoaXMubWVudUxpc3RSZWYuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgX3RoaXMuaW5wdXRSZWYuZm9jdXMoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKF90aGlzLnByb3BzLm9uQmx1cikge1xuICAgICAgICBfdGhpcy5wcm9wcy5vbkJsdXIoZXZlbnQpO1xuICAgICAgfVxuICAgICAgX3RoaXMub25JbnB1dENoYW5nZSgnJywge1xuICAgICAgICBhY3Rpb246ICdpbnB1dC1ibHVyJyxcbiAgICAgICAgcHJldklucHV0VmFsdWU6IHByZXZJbnB1dFZhbHVlXG4gICAgICB9KTtcbiAgICAgIF90aGlzLm9uTWVudUNsb3NlKCk7XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGZvY3VzZWRWYWx1ZTogbnVsbCxcbiAgICAgICAgaXNGb2N1c2VkOiBmYWxzZVxuICAgICAgfSk7XG4gICAgfTtcbiAgICBfdGhpcy5vbk9wdGlvbkhvdmVyID0gZnVuY3Rpb24gKGZvY3VzZWRPcHRpb24pIHtcbiAgICAgIGlmIChfdGhpcy5ibG9ja09wdGlvbkhvdmVyIHx8IF90aGlzLnN0YXRlLmZvY3VzZWRPcHRpb24gPT09IGZvY3VzZWRPcHRpb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIG9wdGlvbnMgPSBfdGhpcy5nZXRGb2N1c2FibGVPcHRpb25zKCk7XG4gICAgICB2YXIgZm9jdXNlZE9wdGlvbkluZGV4ID0gb3B0aW9ucy5pbmRleE9mKGZvY3VzZWRPcHRpb24pO1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkT3B0aW9uOiBmb2N1c2VkT3B0aW9uLFxuICAgICAgICBmb2N1c2VkT3B0aW9uSWQ6IGZvY3VzZWRPcHRpb25JbmRleCA+IC0xID8gX3RoaXMuZ2V0Rm9jdXNlZE9wdGlvbklkKGZvY3VzZWRPcHRpb24pIDogbnVsbFxuICAgICAgfSk7XG4gICAgfTtcbiAgICBfdGhpcy5zaG91bGRIaWRlU2VsZWN0ZWRPcHRpb25zID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHNob3VsZEhpZGVTZWxlY3RlZE9wdGlvbnMoX3RoaXMucHJvcHMpO1xuICAgIH07XG4gICAgX3RoaXMub25WYWx1ZUlucHV0Rm9jdXMgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIF90aGlzLmZvY3VzKCk7XG4gICAgfTtcbiAgICBfdGhpcy5vbktleURvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczUgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzNS5pc011bHRpLFxuICAgICAgICBiYWNrc3BhY2VSZW1vdmVzVmFsdWUgPSBfdGhpcyRwcm9wczUuYmFja3NwYWNlUmVtb3Zlc1ZhbHVlLFxuICAgICAgICBlc2NhcGVDbGVhcnNWYWx1ZSA9IF90aGlzJHByb3BzNS5lc2NhcGVDbGVhcnNWYWx1ZSxcbiAgICAgICAgaW5wdXRWYWx1ZSA9IF90aGlzJHByb3BzNS5pbnB1dFZhbHVlLFxuICAgICAgICBpc0NsZWFyYWJsZSA9IF90aGlzJHByb3BzNS5pc0NsZWFyYWJsZSxcbiAgICAgICAgaXNEaXNhYmxlZCA9IF90aGlzJHByb3BzNS5pc0Rpc2FibGVkLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHM1Lm1lbnVJc09wZW4sXG4gICAgICAgIG9uS2V5RG93biA9IF90aGlzJHByb3BzNS5vbktleURvd24sXG4gICAgICAgIHRhYlNlbGVjdHNWYWx1ZSA9IF90aGlzJHByb3BzNS50YWJTZWxlY3RzVmFsdWUsXG4gICAgICAgIG9wZW5NZW51T25Gb2N1cyA9IF90aGlzJHByb3BzNS5vcGVuTWVudU9uRm9jdXM7XG4gICAgICB2YXIgX3RoaXMkc3RhdGUgPSBfdGhpcy5zdGF0ZSxcbiAgICAgICAgZm9jdXNlZE9wdGlvbiA9IF90aGlzJHN0YXRlLmZvY3VzZWRPcHRpb24sXG4gICAgICAgIGZvY3VzZWRWYWx1ZSA9IF90aGlzJHN0YXRlLmZvY3VzZWRWYWx1ZSxcbiAgICAgICAgc2VsZWN0VmFsdWUgPSBfdGhpcyRzdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIGlmIChpc0Rpc2FibGVkKSByZXR1cm47XG4gICAgICBpZiAodHlwZW9mIG9uS2V5RG93biA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvbktleURvd24oZXZlbnQpO1xuICAgICAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBCbG9jayBvcHRpb24gaG92ZXIgZXZlbnRzIHdoZW4gdGhlIHVzZXIgaGFzIGp1c3QgcHJlc3NlZCBhIGtleVxuICAgICAgX3RoaXMuYmxvY2tPcHRpb25Ib3ZlciA9IHRydWU7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgIGlmICghaXNNdWx0aSB8fCBpbnB1dFZhbHVlKSByZXR1cm47XG4gICAgICAgICAgX3RoaXMuZm9jdXNWYWx1ZSgncHJldmlvdXMnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgaWYgKCFpc011bHRpIHx8IGlucHV0VmFsdWUpIHJldHVybjtcbiAgICAgICAgICBfdGhpcy5mb2N1c1ZhbHVlKCduZXh0Jyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0RlbGV0ZSc6XG4gICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgICAgaWYgKGlucHV0VmFsdWUpIHJldHVybjtcbiAgICAgICAgICBpZiAoZm9jdXNlZFZhbHVlKSB7XG4gICAgICAgICAgICBfdGhpcy5yZW1vdmVWYWx1ZShmb2N1c2VkVmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWJhY2tzcGFjZVJlbW92ZXNWYWx1ZSkgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgICAgICAgX3RoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNDbGVhcmFibGUpIHtcbiAgICAgICAgICAgICAgX3RoaXMuY2xlYXJWYWx1ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgICBpZiAoX3RoaXMuaXNDb21wb3NpbmcpIHJldHVybjtcbiAgICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkgfHwgIW1lbnVJc09wZW4gfHwgIXRhYlNlbGVjdHNWYWx1ZSB8fCAhZm9jdXNlZE9wdGlvbiB8fFxuICAgICAgICAgIC8vIGRvbid0IGNhcHR1cmUgdGhlIGV2ZW50IGlmIHRoZSBtZW51IG9wZW5zIG9uIGZvY3VzIGFuZCB0aGUgZm9jdXNlZFxuICAgICAgICAgIC8vIG9wdGlvbiBpcyBhbHJlYWR5IHNlbGVjdGVkOyBpdCBicmVha3MgdGhlIGZsb3cgb2YgbmF2aWdhdGlvblxuICAgICAgICAgIG9wZW5NZW51T25Gb2N1cyAmJiBfdGhpcy5pc09wdGlvblNlbGVjdGVkKGZvY3VzZWRPcHRpb24sIHNlbGVjdFZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBfdGhpcy5zZWxlY3RPcHRpb24oZm9jdXNlZE9wdGlvbik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMjI5KSB7XG4gICAgICAgICAgICAvLyBpZ25vcmUgdGhlIGtleWRvd24gZXZlbnQgZnJvbSBhbiBJbnB1dCBNZXRob2QgRWRpdG9yKElNRSlcbiAgICAgICAgICAgIC8vIHJlZi4gaHR0cHM6Ly93d3cudzMub3JnL1RSL3VpZXZlbnRzLyNkZXRlcm1pbmUta2V5ZG93bi1rZXl1cC1rZXlDb2RlXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1lbnVJc09wZW4pIHtcbiAgICAgICAgICAgIGlmICghZm9jdXNlZE9wdGlvbikgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKF90aGlzLmlzQ29tcG9zaW5nKSByZXR1cm47XG4gICAgICAgICAgICBfdGhpcy5zZWxlY3RPcHRpb24oZm9jdXNlZE9wdGlvbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICAgIGlmIChtZW51SXNPcGVuKSB7XG4gICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgX3RoaXMub25JbnB1dENoYW5nZSgnJywge1xuICAgICAgICAgICAgICBhY3Rpb246ICdtZW51LWNsb3NlJyxcbiAgICAgICAgICAgICAgcHJldklucHV0VmFsdWU6IGlucHV0VmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgX3RoaXMub25NZW51Q2xvc2UoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzQ2xlYXJhYmxlICYmIGVzY2FwZUNsZWFyc1ZhbHVlKSB7XG4gICAgICAgICAgICBfdGhpcy5jbGVhclZhbHVlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgICAvLyBzcGFjZVxuICAgICAgICAgIGlmIChpbnB1dFZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghbWVudUlzT3Blbikge1xuICAgICAgICAgICAgX3RoaXMub3Blbk1lbnUoJ2ZpcnN0Jyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFmb2N1c2VkT3B0aW9uKSByZXR1cm47XG4gICAgICAgICAgX3RoaXMuc2VsZWN0T3B0aW9uKGZvY3VzZWRPcHRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICAgICAgX3RoaXMuZm9jdXNPcHRpb24oJ3VwJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF90aGlzLm9wZW5NZW51KCdsYXN0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgIGlmIChtZW51SXNPcGVuKSB7XG4gICAgICAgICAgICBfdGhpcy5mb2N1c09wdGlvbignZG93bicpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfdGhpcy5vcGVuTWVudSgnZmlyc3QnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1BhZ2VVcCc6XG4gICAgICAgICAgaWYgKCFtZW51SXNPcGVuKSByZXR1cm47XG4gICAgICAgICAgX3RoaXMuZm9jdXNPcHRpb24oJ3BhZ2V1cCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdQYWdlRG93bic6XG4gICAgICAgICAgaWYgKCFtZW51SXNPcGVuKSByZXR1cm47XG4gICAgICAgICAgX3RoaXMuZm9jdXNPcHRpb24oJ3BhZ2Vkb3duJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgICAgIGlmICghbWVudUlzT3BlbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCdmaXJzdCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdFbmQnOlxuICAgICAgICAgIGlmICghbWVudUlzT3BlbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCdsYXN0Jyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuICAgIF90aGlzLnN0YXRlLmluc3RhbmNlUHJlZml4ID0gJ3JlYWN0LXNlbGVjdC0nICsgKF90aGlzLnByb3BzLmluc3RhbmNlSWQgfHwgKytpbnN0YW5jZUlkKTtcbiAgICBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZSA9IGluZGV4LmNsZWFuVmFsdWUoX3Byb3BzLnZhbHVlKTtcbiAgICAvLyBTZXQgZm9jdXNlZE9wdGlvbiBpZiBtZW51SXNPcGVuIGlzIHNldCBvbiBpbml0IChlLmcuIGRlZmF1bHRNZW51SXNPcGVuKVxuICAgIGlmIChfcHJvcHMubWVudUlzT3BlbiAmJiBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZS5sZW5ndGgpIHtcbiAgICAgIHZhciBmb2N1c2FibGVPcHRpb25zV2l0aElkcyA9IF90aGlzLmdldEZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzKCk7XG4gICAgICB2YXIgZm9jdXNhYmxlT3B0aW9ucyA9IF90aGlzLmJ1aWxkRm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgdmFyIG9wdGlvbkluZGV4ID0gZm9jdXNhYmxlT3B0aW9ucy5pbmRleE9mKF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlWzBdKTtcbiAgICAgIF90aGlzLnN0YXRlLmZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzID0gZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHM7XG4gICAgICBfdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uID0gZm9jdXNhYmxlT3B0aW9uc1tvcHRpb25JbmRleF07XG4gICAgICBfdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uSWQgPSBnZXRGb2N1c2VkT3B0aW9uSWQoZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMsIGZvY3VzYWJsZU9wdGlvbnNbb3B0aW9uSW5kZXhdKTtcbiAgICB9XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhTZWxlY3QsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudERpZE1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5zdGFydExpc3RlbmluZ0NvbXBvc2l0aW9uKCk7XG4gICAgICB0aGlzLnN0YXJ0TGlzdGVuaW5nVG9Ub3VjaCgpO1xuICAgICAgaWYgKHRoaXMucHJvcHMuY2xvc2VNZW51T25TY3JvbGwgJiYgZG9jdW1lbnQgJiYgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICAvLyBMaXN0ZW4gdG8gYWxsIHNjcm9sbCBldmVudHMsIGFuZCBmaWx0ZXIgdGhlbSBvdXQgaW5zaWRlIG9mICdvblNjcm9sbCdcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vblNjcm9sbCwgdHJ1ZSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5wcm9wcy5hdXRvRm9jdXMpIHtcbiAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNjcm9sbCBmb2N1c2VkT3B0aW9uIGludG8gdmlldyBpZiBtZW51SXNPcGVuIGlzIHNldCBvbiBtb3VudCAoZS5nLiBkZWZhdWx0TWVudUlzT3BlbilcbiAgICAgIGlmICh0aGlzLnByb3BzLm1lbnVJc09wZW4gJiYgdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uICYmIHRoaXMubWVudUxpc3RSZWYgJiYgdGhpcy5mb2N1c2VkT3B0aW9uUmVmKSB7XG4gICAgICAgIGluZGV4LnNjcm9sbEludG9WaWV3KHRoaXMubWVudUxpc3RSZWYsIHRoaXMuZm9jdXNlZE9wdGlvblJlZik7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudERpZFVwZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM2ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgaXNEaXNhYmxlZCA9IF90aGlzJHByb3BzNi5pc0Rpc2FibGVkLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHM2Lm1lbnVJc09wZW47XG4gICAgICB2YXIgaXNGb2N1c2VkID0gdGhpcy5zdGF0ZS5pc0ZvY3VzZWQ7XG4gICAgICBpZiAoXG4gICAgICAvLyBlbnN1cmUgZm9jdXMgaXMgcmVzdG9yZWQgY29ycmVjdGx5IHdoZW4gdGhlIGNvbnRyb2wgYmVjb21lcyBlbmFibGVkXG4gICAgICBpc0ZvY3VzZWQgJiYgIWlzRGlzYWJsZWQgJiYgcHJldlByb3BzLmlzRGlzYWJsZWQgfHxcbiAgICAgIC8vIGVuc3VyZSBmb2N1cyBpcyBvbiB0aGUgSW5wdXQgd2hlbiB0aGUgbWVudSBvcGVuc1xuICAgICAgaXNGb2N1c2VkICYmIG1lbnVJc09wZW4gJiYgIXByZXZQcm9wcy5tZW51SXNPcGVuKSB7XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgfVxuICAgICAgaWYgKGlzRm9jdXNlZCAmJiBpc0Rpc2FibGVkICYmICFwcmV2UHJvcHMuaXNEaXNhYmxlZCkge1xuICAgICAgICAvLyBlbnN1cmUgc2VsZWN0IHN0YXRlIGdldHMgYmx1cnJlZCBpbiBjYXNlIFNlbGVjdCBpcyBwcm9ncmFtbWF0aWNhbGx5IGRpc2FibGVkIHdoaWxlIGZvY3VzZWRcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWRpZC11cGRhdGUtc2V0LXN0YXRlXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGlzRm9jdXNlZDogZmFsc2VcbiAgICAgICAgfSwgdGhpcy5vbk1lbnVDbG9zZSk7XG4gICAgICB9IGVsc2UgaWYgKCFpc0ZvY3VzZWQgJiYgIWlzRGlzYWJsZWQgJiYgcHJldlByb3BzLmlzRGlzYWJsZWQgJiYgdGhpcy5pbnB1dFJlZiA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkge1xuICAgICAgICAvLyBlbnN1cmUgc2VsZWN0IHN0YXRlIGdldHMgZm9jdXNlZCBpbiBjYXNlIFNlbGVjdCBpcyBwcm9ncmFtYXRpY2FsbHkgcmUtZW5hYmxlZCB3aGlsZSBmb2N1c2VkIChGaXJlZm94KVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tZGlkLXVwZGF0ZS1zZXQtc3RhdGVcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaXNGb2N1c2VkOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBzY3JvbGwgdGhlIGZvY3VzZWQgb3B0aW9uIGludG8gdmlldyBpZiBuZWNlc3NhcnlcbiAgICAgIGlmICh0aGlzLm1lbnVMaXN0UmVmICYmIHRoaXMuZm9jdXNlZE9wdGlvblJlZiAmJiB0aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlKSB7XG4gICAgICAgIGluZGV4LnNjcm9sbEludG9WaWV3KHRoaXMubWVudUxpc3RSZWYsIHRoaXMuZm9jdXNlZE9wdGlvblJlZik7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9Gb2N1c2VkT3B0aW9uT25VcGRhdGUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50V2lsbFVubW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICB0aGlzLnN0b3BMaXN0ZW5pbmdDb21wb3NpdGlvbigpO1xuICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nVG9Ub3VjaCgpO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vblNjcm9sbCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gQ29uc3VtZXIgSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgfSwge1xuICAgIGtleTogXCJvbk1lbnVPcGVuXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uTWVudU9wZW4oKSB7XG4gICAgICB0aGlzLnByb3BzLm9uTWVudU9wZW4oKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25NZW51Q2xvc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25NZW51Q2xvc2UoKSB7XG4gICAgICB0aGlzLm9uSW5wdXRDaGFuZ2UoJycsIHtcbiAgICAgICAgYWN0aW9uOiAnbWVudS1jbG9zZScsXG4gICAgICAgIHByZXZJbnB1dFZhbHVlOiB0aGlzLnByb3BzLmlucHV0VmFsdWVcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wcm9wcy5vbk1lbnVDbG9zZSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJvbklucHV0Q2hhbmdlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uSW5wdXRDaGFuZ2UobmV3VmFsdWUsIGFjdGlvbk1ldGEpIHtcbiAgICAgIHRoaXMucHJvcHMub25JbnB1dENoYW5nZShuZXdWYWx1ZSwgYWN0aW9uTWV0YSk7XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gTWV0aG9kc1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB9LCB7XG4gICAga2V5OiBcImZvY3VzSW5wdXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9jdXNJbnB1dCgpIHtcbiAgICAgIGlmICghdGhpcy5pbnB1dFJlZikgcmV0dXJuO1xuICAgICAgdGhpcy5pbnB1dFJlZi5mb2N1cygpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJibHVySW5wdXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYmx1cklucHV0KCkge1xuICAgICAgaWYgKCF0aGlzLmlucHV0UmVmKSByZXR1cm47XG4gICAgICB0aGlzLmlucHV0UmVmLmJsdXIoKTtcbiAgICB9XG5cbiAgICAvLyBhbGlhc2VkIGZvciBjb25zdW1lcnNcbiAgfSwge1xuICAgIGtleTogXCJvcGVuTWVudVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvcGVuTWVudShmb2N1c09wdGlvbikge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkc3RhdGUyID0gdGhpcy5zdGF0ZSxcbiAgICAgICAgc2VsZWN0VmFsdWUgPSBfdGhpcyRzdGF0ZTIuc2VsZWN0VmFsdWUsXG4gICAgICAgIGlzRm9jdXNlZCA9IF90aGlzJHN0YXRlMi5pc0ZvY3VzZWQ7XG4gICAgICB2YXIgZm9jdXNhYmxlT3B0aW9ucyA9IHRoaXMuYnVpbGRGb2N1c2FibGVPcHRpb25zKCk7XG4gICAgICB2YXIgb3BlbkF0SW5kZXggPSBmb2N1c09wdGlvbiA9PT0gJ2ZpcnN0JyA/IDAgOiBmb2N1c2FibGVPcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICBpZiAoIXRoaXMucHJvcHMuaXNNdWx0aSkge1xuICAgICAgICB2YXIgc2VsZWN0ZWRJbmRleCA9IGZvY3VzYWJsZU9wdGlvbnMuaW5kZXhPZihzZWxlY3RWYWx1ZVswXSk7XG4gICAgICAgIGlmIChzZWxlY3RlZEluZGV4ID4gLTEpIHtcbiAgICAgICAgICBvcGVuQXRJbmRleCA9IHNlbGVjdGVkSW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gb25seSBzY3JvbGwgaWYgdGhlIG1lbnUgaXNuJ3QgYWxyZWFkeSBvcGVuXG4gICAgICB0aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gIShpc0ZvY3VzZWQgJiYgdGhpcy5tZW51TGlzdFJlZik7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlOiBmYWxzZSxcbiAgICAgICAgZm9jdXNlZFZhbHVlOiBudWxsLFxuICAgICAgICBmb2N1c2VkT3B0aW9uOiBmb2N1c2FibGVPcHRpb25zW29wZW5BdEluZGV4XSxcbiAgICAgICAgZm9jdXNlZE9wdGlvbklkOiB0aGlzLmdldEZvY3VzZWRPcHRpb25JZChmb2N1c2FibGVPcHRpb25zW29wZW5BdEluZGV4XSlcbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzMi5vbk1lbnVPcGVuKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9jdXNWYWx1ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb2N1c1ZhbHVlKGRpcmVjdGlvbikge1xuICAgICAgdmFyIF90aGlzJHN0YXRlMyA9IHRoaXMuc3RhdGUsXG4gICAgICAgIHNlbGVjdFZhbHVlID0gX3RoaXMkc3RhdGUzLnNlbGVjdFZhbHVlLFxuICAgICAgICBmb2N1c2VkVmFsdWUgPSBfdGhpcyRzdGF0ZTMuZm9jdXNlZFZhbHVlO1xuXG4gICAgICAvLyBPbmx5IG11bHRpc2VsZWN0cyBzdXBwb3J0IHZhbHVlIGZvY3VzaW5nXG4gICAgICBpZiAoIXRoaXMucHJvcHMuaXNNdWx0aSkgcmV0dXJuO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGZvY3VzZWRPcHRpb246IG51bGxcbiAgICAgIH0pO1xuICAgICAgdmFyIGZvY3VzZWRJbmRleCA9IHNlbGVjdFZhbHVlLmluZGV4T2YoZm9jdXNlZFZhbHVlKTtcbiAgICAgIGlmICghZm9jdXNlZFZhbHVlKSB7XG4gICAgICAgIGZvY3VzZWRJbmRleCA9IC0xO1xuICAgICAgfVxuICAgICAgdmFyIGxhc3RJbmRleCA9IHNlbGVjdFZhbHVlLmxlbmd0aCAtIDE7XG4gICAgICB2YXIgbmV4dEZvY3VzID0gLTE7XG4gICAgICBpZiAoIXNlbGVjdFZhbHVlLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcbiAgICAgICAgY2FzZSAncHJldmlvdXMnOlxuICAgICAgICAgIGlmIChmb2N1c2VkSW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIC8vIGRvbid0IGN5Y2xlIGZyb20gdGhlIHN0YXJ0IHRvIHRoZSBlbmRcbiAgICAgICAgICAgIG5leHRGb2N1cyA9IDA7XG4gICAgICAgICAgfSBlbHNlIGlmIChmb2N1c2VkSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAvLyBpZiBub3RoaW5nIGlzIGZvY3VzZWQsIGZvY3VzIHRoZSBsYXN0IHZhbHVlIGZpcnN0XG4gICAgICAgICAgICBuZXh0Rm9jdXMgPSBsYXN0SW5kZXg7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5leHRGb2N1cyA9IGZvY3VzZWRJbmRleCAtIDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICduZXh0JzpcbiAgICAgICAgICBpZiAoZm9jdXNlZEluZGV4ID4gLTEgJiYgZm9jdXNlZEluZGV4IDwgbGFzdEluZGV4KSB7XG4gICAgICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggKyAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpbnB1dElzSGlkZGVuOiBuZXh0Rm9jdXMgIT09IC0xLFxuICAgICAgICBmb2N1c2VkVmFsdWU6IHNlbGVjdFZhbHVlW25leHRGb2N1c11cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmb2N1c09wdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb2N1c09wdGlvbigpIHtcbiAgICAgIHZhciBkaXJlY3Rpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6ICdmaXJzdCc7XG4gICAgICB2YXIgcGFnZVNpemUgPSB0aGlzLnByb3BzLnBhZ2VTaXplO1xuICAgICAgdmFyIGZvY3VzZWRPcHRpb24gPSB0aGlzLnN0YXRlLmZvY3VzZWRPcHRpb247XG4gICAgICB2YXIgb3B0aW9ucyA9IHRoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgaWYgKCFvcHRpb25zLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgdmFyIG5leHRGb2N1cyA9IDA7IC8vIGhhbmRsZXMgJ2ZpcnN0J1xuICAgICAgdmFyIGZvY3VzZWRJbmRleCA9IG9wdGlvbnMuaW5kZXhPZihmb2N1c2VkT3B0aW9uKTtcbiAgICAgIGlmICghZm9jdXNlZE9wdGlvbikge1xuICAgICAgICBmb2N1c2VkSW5kZXggPSAtMTtcbiAgICAgIH1cbiAgICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgICAgbmV4dEZvY3VzID0gZm9jdXNlZEluZGV4ID4gMCA/IGZvY3VzZWRJbmRleCAtIDEgOiBvcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ2Rvd24nKSB7XG4gICAgICAgIG5leHRGb2N1cyA9IChmb2N1c2VkSW5kZXggKyAxKSAlIG9wdGlvbnMubGVuZ3RoO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdwYWdldXAnKSB7XG4gICAgICAgIG5leHRGb2N1cyA9IGZvY3VzZWRJbmRleCAtIHBhZ2VTaXplO1xuICAgICAgICBpZiAobmV4dEZvY3VzIDwgMCkgbmV4dEZvY3VzID0gMDtcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAncGFnZWRvd24nKSB7XG4gICAgICAgIG5leHRGb2N1cyA9IGZvY3VzZWRJbmRleCArIHBhZ2VTaXplO1xuICAgICAgICBpZiAobmV4dEZvY3VzID4gb3B0aW9ucy5sZW5ndGggLSAxKSBuZXh0Rm9jdXMgPSBvcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ2xhc3QnKSB7XG4gICAgICAgIG5leHRGb2N1cyA9IG9wdGlvbnMubGVuZ3RoIC0gMTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2Nyb2xsVG9Gb2N1c2VkT3B0aW9uT25VcGRhdGUgPSB0cnVlO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGZvY3VzZWRPcHRpb246IG9wdGlvbnNbbmV4dEZvY3VzXSxcbiAgICAgICAgZm9jdXNlZFZhbHVlOiBudWxsLFxuICAgICAgICBmb2N1c2VkT3B0aW9uSWQ6IHRoaXMuZ2V0Rm9jdXNlZE9wdGlvbklkKG9wdGlvbnNbbmV4dEZvY3VzXSlcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRUaGVtZVwiLFxuICAgIHZhbHVlOlxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIEdldHRlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIGZ1bmN0aW9uIGdldFRoZW1lKCkge1xuICAgICAgLy8gVXNlIHRoZSBkZWZhdWx0IHRoZW1lIGlmIHRoZXJlIGFyZSBubyBjdXN0b21pc2F0aW9ucy5cbiAgICAgIGlmICghdGhpcy5wcm9wcy50aGVtZSkge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFRoZW1lO1xuICAgICAgfVxuICAgICAgLy8gSWYgdGhlIHRoZW1lIHByb3AgaXMgYSBmdW5jdGlvbiwgYXNzdW1lIHRoZSBmdW5jdGlvblxuICAgICAgLy8ga25vd3MgaG93IHRvIG1lcmdlIHRoZSBwYXNzZWQtaW4gZGVmYXVsdCB0aGVtZSB3aXRoXG4gICAgICAvLyBpdHMgb3duIG1vZGlmaWNhdGlvbnMuXG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMudGhlbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMudGhlbWUoZGVmYXVsdFRoZW1lKTtcbiAgICAgIH1cbiAgICAgIC8vIE90aGVyd2lzZSwgaWYgYSBwbGFpbiB0aGVtZSBvYmplY3Qgd2FzIHBhc3NlZCBpbixcbiAgICAgIC8vIG92ZXJsYXkgaXQgd2l0aCB0aGUgZGVmYXVsdCB0aGVtZS5cbiAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGRlZmF1bHRUaGVtZSksIHRoaXMucHJvcHMudGhlbWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRDb21tb25Qcm9wc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDb21tb25Qcm9wcygpIHtcbiAgICAgIHZhciBjbGVhclZhbHVlID0gdGhpcy5jbGVhclZhbHVlLFxuICAgICAgICBjeCA9IHRoaXMuY3gsXG4gICAgICAgIGdldFN0eWxlcyA9IHRoaXMuZ2V0U3R5bGVzLFxuICAgICAgICBnZXRDbGFzc05hbWVzID0gdGhpcy5nZXRDbGFzc05hbWVzLFxuICAgICAgICBnZXRWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUsXG4gICAgICAgIHNlbGVjdE9wdGlvbiA9IHRoaXMuc2VsZWN0T3B0aW9uLFxuICAgICAgICBzZXRWYWx1ZSA9IHRoaXMuc2V0VmFsdWUsXG4gICAgICAgIHByb3BzID0gdGhpcy5wcm9wcztcbiAgICAgIHZhciBpc011bHRpID0gcHJvcHMuaXNNdWx0aSxcbiAgICAgICAgaXNSdGwgPSBwcm9wcy5pc1J0bCxcbiAgICAgICAgb3B0aW9ucyA9IHByb3BzLm9wdGlvbnM7XG4gICAgICB2YXIgaGFzVmFsdWUgPSB0aGlzLmhhc1ZhbHVlKCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjbGVhclZhbHVlOiBjbGVhclZhbHVlLFxuICAgICAgICBjeDogY3gsXG4gICAgICAgIGdldFN0eWxlczogZ2V0U3R5bGVzLFxuICAgICAgICBnZXRDbGFzc05hbWVzOiBnZXRDbGFzc05hbWVzLFxuICAgICAgICBnZXRWYWx1ZTogZ2V0VmFsdWUsXG4gICAgICAgIGhhc1ZhbHVlOiBoYXNWYWx1ZSxcbiAgICAgICAgaXNNdWx0aTogaXNNdWx0aSxcbiAgICAgICAgaXNSdGw6IGlzUnRsLFxuICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICBzZWxlY3RPcHRpb246IHNlbGVjdE9wdGlvbixcbiAgICAgICAgc2VsZWN0UHJvcHM6IHByb3BzLFxuICAgICAgICBzZXRWYWx1ZTogc2V0VmFsdWUsXG4gICAgICAgIHRoZW1lOiB0aGlzLmdldFRoZW1lKClcbiAgICAgIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImhhc1ZhbHVlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhc1ZhbHVlKCkge1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIHJldHVybiBzZWxlY3RWYWx1ZS5sZW5ndGggPiAwO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYXNPcHRpb25zXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhc09wdGlvbnMoKSB7XG4gICAgICByZXR1cm4gISF0aGlzLmdldEZvY3VzYWJsZU9wdGlvbnMoKS5sZW5ndGg7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImlzQ2xlYXJhYmxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzQ2xlYXJhYmxlKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzNyA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzQ2xlYXJhYmxlID0gX3RoaXMkcHJvcHM3LmlzQ2xlYXJhYmxlLFxuICAgICAgICBpc011bHRpID0gX3RoaXMkcHJvcHM3LmlzTXVsdGk7XG5cbiAgICAgIC8vIHNpbmdsZSBzZWxlY3QsIGJ5IGRlZmF1bHQsIElTIE5PVCBjbGVhcmFibGVcbiAgICAgIC8vIG11bHRpIHNlbGVjdCwgYnkgZGVmYXVsdCwgSVMgY2xlYXJhYmxlXG4gICAgICBpZiAoaXNDbGVhcmFibGUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGlzTXVsdGk7XG4gICAgICByZXR1cm4gaXNDbGVhcmFibGU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImlzT3B0aW9uRGlzYWJsZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNPcHRpb25EaXNhYmxlZChvcHRpb24sIHNlbGVjdFZhbHVlKSB7XG4gICAgICByZXR1cm4gX2lzT3B0aW9uRGlzYWJsZWQodGhpcy5wcm9wcywgb3B0aW9uLCBzZWxlY3RWYWx1ZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImlzT3B0aW9uU2VsZWN0ZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNPcHRpb25TZWxlY3RlZChvcHRpb24sIHNlbGVjdFZhbHVlKSB7XG4gICAgICByZXR1cm4gX2lzT3B0aW9uU2VsZWN0ZWQodGhpcy5wcm9wcywgb3B0aW9uLCBzZWxlY3RWYWx1ZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImZpbHRlck9wdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmaWx0ZXJPcHRpb24ob3B0aW9uLCBpbnB1dFZhbHVlKSB7XG4gICAgICByZXR1cm4gX2ZpbHRlck9wdGlvbih0aGlzLnByb3BzLCBvcHRpb24sIGlucHV0VmFsdWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmb3JtYXRPcHRpb25MYWJlbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JtYXRPcHRpb25MYWJlbChkYXRhLCBjb250ZXh0KSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMuZm9ybWF0T3B0aW9uTGFiZWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdmFyIF9pbnB1dFZhbHVlID0gdGhpcy5wcm9wcy5pbnB1dFZhbHVlO1xuICAgICAgICB2YXIgX3NlbGVjdFZhbHVlID0gdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuZm9ybWF0T3B0aW9uTGFiZWwoZGF0YSwge1xuICAgICAgICAgIGNvbnRleHQ6IGNvbnRleHQsXG4gICAgICAgICAgaW5wdXRWYWx1ZTogX2lucHV0VmFsdWUsXG4gICAgICAgICAgc2VsZWN0VmFsdWU6IF9zZWxlY3RWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9wdGlvbkxhYmVsKGRhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmb3JtYXRHcm91cExhYmVsXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZvcm1hdEdyb3VwTGFiZWwoZGF0YSkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuZm9ybWF0R3JvdXBMYWJlbChkYXRhKTtcbiAgICB9XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBNb3VzZSBIYW5kbGVyc1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB9LCB7XG4gICAga2V5OiBcInN0YXJ0TGlzdGVuaW5nQ29tcG9zaXRpb25cIixcbiAgICB2YWx1ZTpcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBDb21wb3NpdGlvbiBIYW5kbGVyc1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgZnVuY3Rpb24gc3RhcnRMaXN0ZW5pbmdDb21wb3NpdGlvbigpIHtcbiAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uc3RhcnQnLCB0aGlzLm9uQ29tcG9zaXRpb25TdGFydCwgZmFsc2UpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3NpdGlvbmVuZCcsIHRoaXMub25Db21wb3NpdGlvbkVuZCwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdG9wTGlzdGVuaW5nQ29tcG9zaXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3RvcExpc3RlbmluZ0NvbXBvc2l0aW9uKCkge1xuICAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY29tcG9zaXRpb25zdGFydCcsIHRoaXMub25Db21wb3NpdGlvblN0YXJ0KTtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY29tcG9zaXRpb25lbmQnLCB0aGlzLm9uQ29tcG9zaXRpb25FbmQpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdGFydExpc3RlbmluZ1RvVG91Y2hcIixcbiAgICB2YWx1ZTpcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBUb3VjaCBIYW5kbGVyc1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgZnVuY3Rpb24gc3RhcnRMaXN0ZW5pbmdUb1RvdWNoKCkge1xuICAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMub25Ub3VjaFN0YXJ0LCBmYWxzZSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHRoaXMub25Ub3VjaE1vdmUsIGZhbHNlKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLm9uVG91Y2hFbmQsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RvcExpc3RlbmluZ1RvVG91Y2hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3RvcExpc3RlbmluZ1RvVG91Y2goKSB7XG4gICAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy5vblRvdWNoU3RhcnQpO1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLm9uVG91Y2hNb3ZlKTtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLm9uVG91Y2hFbmQpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJJbnB1dFwiLFxuICAgIHZhbHVlOlxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFJlbmRlcmVyc1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGZ1bmN0aW9uIHJlbmRlcklucHV0KCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzOCA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczguaXNEaXNhYmxlZCxcbiAgICAgICAgaXNTZWFyY2hhYmxlID0gX3RoaXMkcHJvcHM4LmlzU2VhcmNoYWJsZSxcbiAgICAgICAgaW5wdXRJZCA9IF90aGlzJHByb3BzOC5pbnB1dElkLFxuICAgICAgICBpbnB1dFZhbHVlID0gX3RoaXMkcHJvcHM4LmlucHV0VmFsdWUsXG4gICAgICAgIHRhYkluZGV4ID0gX3RoaXMkcHJvcHM4LnRhYkluZGV4LFxuICAgICAgICBmb3JtID0gX3RoaXMkcHJvcHM4LmZvcm0sXG4gICAgICAgIG1lbnVJc09wZW4gPSBfdGhpcyRwcm9wczgubWVudUlzT3BlbixcbiAgICAgICAgcmVxdWlyZWQgPSBfdGhpcyRwcm9wczgucmVxdWlyZWQ7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50cyA9IHRoaXMuZ2V0Q29tcG9uZW50cygpLFxuICAgICAgICBJbnB1dCA9IF90aGlzJGdldENvbXBvbmVudHMuSW5wdXQ7XG4gICAgICB2YXIgX3RoaXMkc3RhdGU0ID0gdGhpcy5zdGF0ZSxcbiAgICAgICAgaW5wdXRJc0hpZGRlbiA9IF90aGlzJHN0YXRlNC5pbnB1dElzSGlkZGVuLFxuICAgICAgICBhcmlhU2VsZWN0aW9uID0gX3RoaXMkc3RhdGU0LmFyaWFTZWxlY3Rpb247XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIGlkID0gaW5wdXRJZCB8fCB0aGlzLmdldEVsZW1lbnRJZCgnaW5wdXQnKTtcblxuICAgICAgLy8gYXJpYSBhdHRyaWJ1dGVzIG1ha2VzIHRoZSBKU1ggXCJub2lzeVwiLCBzZXBhcmF0ZWQgZm9yIGNsYXJpdHlcbiAgICAgIHZhciBhcmlhQXR0cmlidXRlcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgJ2FyaWEtYXV0b2NvbXBsZXRlJzogJ2xpc3QnLFxuICAgICAgICAnYXJpYS1leHBhbmRlZCc6IG1lbnVJc09wZW4sXG4gICAgICAgICdhcmlhLWhhc3BvcHVwJzogdHJ1ZSxcbiAgICAgICAgJ2FyaWEtZXJyb3JtZXNzYWdlJzogdGhpcy5wcm9wc1snYXJpYS1lcnJvcm1lc3NhZ2UnXSxcbiAgICAgICAgJ2FyaWEtaW52YWxpZCc6IHRoaXMucHJvcHNbJ2FyaWEtaW52YWxpZCddLFxuICAgICAgICAnYXJpYS1sYWJlbCc6IHRoaXMucHJvcHNbJ2FyaWEtbGFiZWwnXSxcbiAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IHRoaXMucHJvcHNbJ2FyaWEtbGFiZWxsZWRieSddLFxuICAgICAgICAnYXJpYS1yZXF1aXJlZCc6IHJlcXVpcmVkLFxuICAgICAgICByb2xlOiAnY29tYm9ib3gnLFxuICAgICAgICAnYXJpYS1hY3RpdmVkZXNjZW5kYW50JzogdGhpcy5pc0FwcGxlRGV2aWNlID8gdW5kZWZpbmVkIDogdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uSWQgfHwgJydcbiAgICAgIH0sIG1lbnVJc09wZW4gJiYge1xuICAgICAgICAnYXJpYS1jb250cm9scyc6IHRoaXMuZ2V0RWxlbWVudElkKCdsaXN0Ym94JylcbiAgICAgIH0pLCAhaXNTZWFyY2hhYmxlICYmIHtcbiAgICAgICAgJ2FyaWEtcmVhZG9ubHknOiB0cnVlXG4gICAgICB9KSwgdGhpcy5oYXNWYWx1ZSgpID8gKGFyaWFTZWxlY3Rpb24gPT09IG51bGwgfHwgYXJpYVNlbGVjdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXJpYVNlbGVjdGlvbi5hY3Rpb24pID09PSAnaW5pdGlhbC1pbnB1dC1mb2N1cycgJiYge1xuICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc6IHRoaXMuZ2V0RWxlbWVudElkKCdsaXZlLXJlZ2lvbicpXG4gICAgICB9IDoge1xuICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc6IHRoaXMuZ2V0RWxlbWVudElkKCdwbGFjZWhvbGRlcicpXG4gICAgICB9KTtcbiAgICAgIGlmICghaXNTZWFyY2hhYmxlKSB7XG4gICAgICAgIC8vIHVzZSBhIGR1bW15IGlucHV0IHRvIG1haW50YWluIGZvY3VzL2JsdXIgZnVuY3Rpb25hbGl0eVxuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChEdW1teUlucHV0LCBfZXh0ZW5kcyh7XG4gICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgIGlubmVyUmVmOiB0aGlzLmdldElucHV0UmVmLFxuICAgICAgICAgIG9uQmx1cjogdGhpcy5vbklucHV0Qmx1cixcbiAgICAgICAgICBvbkNoYW5nZTogaW5kZXgubm9vcCxcbiAgICAgICAgICBvbkZvY3VzOiB0aGlzLm9uSW5wdXRGb2N1cyxcbiAgICAgICAgICBkaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgICB0YWJJbmRleDogdGFiSW5kZXgsXG4gICAgICAgICAgaW5wdXRNb2RlOiBcIm5vbmVcIixcbiAgICAgICAgICBmb3JtOiBmb3JtLFxuICAgICAgICAgIHZhbHVlOiBcIlwiXG4gICAgICAgIH0sIGFyaWFBdHRyaWJ1dGVzKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChJbnB1dCwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGF1dG9DYXBpdGFsaXplOiBcIm5vbmVcIixcbiAgICAgICAgYXV0b0NvbXBsZXRlOiBcIm9mZlwiLFxuICAgICAgICBhdXRvQ29ycmVjdDogXCJvZmZcIixcbiAgICAgICAgaWQ6IGlkLFxuICAgICAgICBpbm5lclJlZjogdGhpcy5nZXRJbnB1dFJlZixcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNIaWRkZW46IGlucHV0SXNIaWRkZW4sXG4gICAgICAgIG9uQmx1cjogdGhpcy5vbklucHV0Qmx1cixcbiAgICAgICAgb25DaGFuZ2U6IHRoaXMuaGFuZGxlSW5wdXRDaGFuZ2UsXG4gICAgICAgIG9uRm9jdXM6IHRoaXMub25JbnB1dEZvY3VzLFxuICAgICAgICBzcGVsbENoZWNrOiBcImZhbHNlXCIsXG4gICAgICAgIHRhYkluZGV4OiB0YWJJbmRleCxcbiAgICAgICAgZm9ybTogZm9ybSxcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICB9LCBhcmlhQXR0cmlidXRlcykpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJQbGFjZWhvbGRlck9yVmFsdWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyUGxhY2Vob2xkZXJPclZhbHVlKCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czIgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgTXVsdGlWYWx1ZSA9IF90aGlzJGdldENvbXBvbmVudHMyLk11bHRpVmFsdWUsXG4gICAgICAgIE11bHRpVmFsdWVDb250YWluZXIgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5NdWx0aVZhbHVlQ29udGFpbmVyLFxuICAgICAgICBNdWx0aVZhbHVlTGFiZWwgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5NdWx0aVZhbHVlTGFiZWwsXG4gICAgICAgIE11bHRpVmFsdWVSZW1vdmUgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5NdWx0aVZhbHVlUmVtb3ZlLFxuICAgICAgICBTaW5nbGVWYWx1ZSA9IF90aGlzJGdldENvbXBvbmVudHMyLlNpbmdsZVZhbHVlLFxuICAgICAgICBQbGFjZWhvbGRlciA9IF90aGlzJGdldENvbXBvbmVudHMyLlBsYWNlaG9sZGVyO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBfdGhpcyRwcm9wczkgPSB0aGlzLnByb3BzLFxuICAgICAgICBjb250cm9sU2hvdWxkUmVuZGVyVmFsdWUgPSBfdGhpcyRwcm9wczkuY29udHJvbFNob3VsZFJlbmRlclZhbHVlLFxuICAgICAgICBpc0Rpc2FibGVkID0gX3RoaXMkcHJvcHM5LmlzRGlzYWJsZWQsXG4gICAgICAgIGlzTXVsdGkgPSBfdGhpcyRwcm9wczkuaXNNdWx0aSxcbiAgICAgICAgaW5wdXRWYWx1ZSA9IF90aGlzJHByb3BzOS5pbnB1dFZhbHVlLFxuICAgICAgICBwbGFjZWhvbGRlciA9IF90aGlzJHByb3BzOS5wbGFjZWhvbGRlcjtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTUgPSB0aGlzLnN0YXRlLFxuICAgICAgICBzZWxlY3RWYWx1ZSA9IF90aGlzJHN0YXRlNS5zZWxlY3RWYWx1ZSxcbiAgICAgICAgZm9jdXNlZFZhbHVlID0gX3RoaXMkc3RhdGU1LmZvY3VzZWRWYWx1ZSxcbiAgICAgICAgaXNGb2N1c2VkID0gX3RoaXMkc3RhdGU1LmlzRm9jdXNlZDtcbiAgICAgIGlmICghdGhpcy5oYXNWYWx1ZSgpIHx8ICFjb250cm9sU2hvdWxkUmVuZGVyVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0VmFsdWUgPyBudWxsIDogLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChQbGFjZWhvbGRlciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgICAga2V5OiBcInBsYWNlaG9sZGVyXCIsXG4gICAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZCxcbiAgICAgICAgICBpbm5lclByb3BzOiB7XG4gICAgICAgICAgICBpZDogdGhpcy5nZXRFbGVtZW50SWQoJ3BsYWNlaG9sZGVyJylcbiAgICAgICAgICB9XG4gICAgICAgIH0pLCBwbGFjZWhvbGRlcik7XG4gICAgICB9XG4gICAgICBpZiAoaXNNdWx0aSkge1xuICAgICAgICByZXR1cm4gc2VsZWN0VmFsdWUubWFwKGZ1bmN0aW9uIChvcHQsIGluZGV4KSB7XG4gICAgICAgICAgdmFyIGlzT3B0aW9uRm9jdXNlZCA9IG9wdCA9PT0gZm9jdXNlZFZhbHVlO1xuICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChfdGhpczMuZ2V0T3B0aW9uTGFiZWwob3B0KSwgXCItXCIpLmNvbmNhdChfdGhpczMuZ2V0T3B0aW9uVmFsdWUob3B0KSk7XG4gICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoTXVsdGlWYWx1ZSwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgICAgICAgIENvbnRhaW5lcjogTXVsdGlWYWx1ZUNvbnRhaW5lcixcbiAgICAgICAgICAgICAgTGFiZWw6IE11bHRpVmFsdWVMYWJlbCxcbiAgICAgICAgICAgICAgUmVtb3ZlOiBNdWx0aVZhbHVlUmVtb3ZlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNGb2N1c2VkOiBpc09wdGlvbkZvY3VzZWQsXG4gICAgICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgICAgICByZW1vdmVQcm9wczoge1xuICAgICAgICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczMucmVtb3ZlVmFsdWUob3B0KTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb25Ub3VjaEVuZDogZnVuY3Rpb24gb25Ub3VjaEVuZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMzLnJlbW92ZVZhbHVlKG9wdCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9uTW91c2VEb3duOiBmdW5jdGlvbiBvbk1vdXNlRG93bihlKSB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGF0YTogb3B0XG4gICAgICAgICAgfSksIF90aGlzMy5mb3JtYXRPcHRpb25MYWJlbChvcHQsICd2YWx1ZScpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoaW5wdXRWYWx1ZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBzaW5nbGVWYWx1ZSA9IHNlbGVjdFZhbHVlWzBdO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoU2luZ2xlVmFsdWUsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBkYXRhOiBzaW5nbGVWYWx1ZSxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZFxuICAgICAgfSksIHRoaXMuZm9ybWF0T3B0aW9uTGFiZWwoc2luZ2xlVmFsdWUsICd2YWx1ZScpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyQ2xlYXJJbmRpY2F0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQ2xlYXJJbmRpY2F0b3IoKSB7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czMgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgQ2xlYXJJbmRpY2F0b3IgPSBfdGhpcyRnZXRDb21wb25lbnRzMy5DbGVhckluZGljYXRvcjtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMCA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczEwLmlzRGlzYWJsZWQsXG4gICAgICAgIGlzTG9hZGluZyA9IF90aGlzJHByb3BzMTAuaXNMb2FkaW5nO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgaWYgKCF0aGlzLmlzQ2xlYXJhYmxlKCkgfHwgIUNsZWFySW5kaWNhdG9yIHx8IGlzRGlzYWJsZWQgfHwgIXRoaXMuaGFzVmFsdWUoKSB8fCBpc0xvYWRpbmcpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgaW5uZXJQcm9wcyA9IHtcbiAgICAgICAgb25Nb3VzZURvd246IHRoaXMub25DbGVhckluZGljYXRvck1vdXNlRG93bixcbiAgICAgICAgb25Ub3VjaEVuZDogdGhpcy5vbkNsZWFySW5kaWNhdG9yVG91Y2hFbmQsXG4gICAgICAgICdhcmlhLWhpZGRlbic6ICd0cnVlJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KENsZWFySW5kaWNhdG9yLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWRcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyTG9hZGluZ0luZGljYXRvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJMb2FkaW5nSW5kaWNhdG9yKCkge1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHM0ID0gdGhpcy5nZXRDb21wb25lbnRzKCksXG4gICAgICAgIExvYWRpbmdJbmRpY2F0b3IgPSBfdGhpcyRnZXRDb21wb25lbnRzNC5Mb2FkaW5nSW5kaWNhdG9yO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBfdGhpcyRwcm9wczExID0gdGhpcy5wcm9wcyxcbiAgICAgICAgaXNEaXNhYmxlZCA9IF90aGlzJHByb3BzMTEuaXNEaXNhYmxlZCxcbiAgICAgICAgaXNMb2FkaW5nID0gX3RoaXMkcHJvcHMxMS5pc0xvYWRpbmc7XG4gICAgICB2YXIgaXNGb2N1c2VkID0gdGhpcy5zdGF0ZS5pc0ZvY3VzZWQ7XG4gICAgICBpZiAoIUxvYWRpbmdJbmRpY2F0b3IgfHwgIWlzTG9hZGluZykgcmV0dXJuIG51bGw7XG4gICAgICB2YXIgaW5uZXJQcm9wcyA9IHtcbiAgICAgICAgJ2FyaWEtaGlkZGVuJzogJ3RydWUnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoTG9hZGluZ0luZGljYXRvciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlubmVyUHJvcHM6IGlubmVyUHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckluZGljYXRvclNlcGFyYXRvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJJbmRpY2F0b3JTZXBhcmF0b3IoKSB7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czUgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgRHJvcGRvd25JbmRpY2F0b3IgPSBfdGhpcyRnZXRDb21wb25lbnRzNS5Ecm9wZG93bkluZGljYXRvcixcbiAgICAgICAgSW5kaWNhdG9yU2VwYXJhdG9yID0gX3RoaXMkZ2V0Q29tcG9uZW50czUuSW5kaWNhdG9yU2VwYXJhdG9yO1xuXG4gICAgICAvLyBzZXBhcmF0b3IgZG9lc24ndCBtYWtlIHNlbnNlIHdpdGhvdXQgdGhlIGRyb3Bkb3duIGluZGljYXRvclxuICAgICAgaWYgKCFEcm9wZG93bkluZGljYXRvciB8fCAhSW5kaWNhdG9yU2VwYXJhdG9yKSByZXR1cm4gbnVsbDtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgaXNEaXNhYmxlZCA9IHRoaXMucHJvcHMuaXNEaXNhYmxlZDtcbiAgICAgIHZhciBpc0ZvY3VzZWQgPSB0aGlzLnN0YXRlLmlzRm9jdXNlZDtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KEluZGljYXRvclNlcGFyYXRvciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckRyb3Bkb3duSW5kaWNhdG9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckRyb3Bkb3duSW5kaWNhdG9yKCkge1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHM2ID0gdGhpcy5nZXRDb21wb25lbnRzKCksXG4gICAgICAgIERyb3Bkb3duSW5kaWNhdG9yID0gX3RoaXMkZ2V0Q29tcG9uZW50czYuRHJvcGRvd25JbmRpY2F0b3I7XG4gICAgICBpZiAoIURyb3Bkb3duSW5kaWNhdG9yKSByZXR1cm4gbnVsbDtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgaXNEaXNhYmxlZCA9IHRoaXMucHJvcHMuaXNEaXNhYmxlZDtcbiAgICAgIHZhciBpc0ZvY3VzZWQgPSB0aGlzLnN0YXRlLmlzRm9jdXNlZDtcbiAgICAgIHZhciBpbm5lclByb3BzID0ge1xuICAgICAgICBvbk1vdXNlRG93bjogdGhpcy5vbkRyb3Bkb3duSW5kaWNhdG9yTW91c2VEb3duLFxuICAgICAgICBvblRvdWNoRW5kOiB0aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JUb3VjaEVuZCxcbiAgICAgICAgJ2FyaWEtaGlkZGVuJzogJ3RydWUnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoRHJvcGRvd25JbmRpY2F0b3IsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBpbm5lclByb3BzOiBpbm5lclByb3BzLFxuICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZFxuICAgICAgfSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJNZW51XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlck1lbnUoKSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcbiAgICAgIHZhciBfdGhpcyRnZXRDb21wb25lbnRzNyA9IHRoaXMuZ2V0Q29tcG9uZW50cygpLFxuICAgICAgICBHcm91cCA9IF90aGlzJGdldENvbXBvbmVudHM3Lkdyb3VwLFxuICAgICAgICBHcm91cEhlYWRpbmcgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5Hcm91cEhlYWRpbmcsXG4gICAgICAgIE1lbnUgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5NZW51LFxuICAgICAgICBNZW51TGlzdCA9IF90aGlzJGdldENvbXBvbmVudHM3Lk1lbnVMaXN0LFxuICAgICAgICBNZW51UG9ydGFsID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuTWVudVBvcnRhbCxcbiAgICAgICAgTG9hZGluZ01lc3NhZ2UgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5Mb2FkaW5nTWVzc2FnZSxcbiAgICAgICAgTm9PcHRpb25zTWVzc2FnZSA9IF90aGlzJGdldENvbXBvbmVudHM3Lk5vT3B0aW9uc01lc3NhZ2UsXG4gICAgICAgIE9wdGlvbiA9IF90aGlzJGdldENvbXBvbmVudHM3Lk9wdGlvbjtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgZm9jdXNlZE9wdGlvbiA9IHRoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbjtcbiAgICAgIHZhciBfdGhpcyRwcm9wczEyID0gdGhpcy5wcm9wcyxcbiAgICAgICAgY2FwdHVyZU1lbnVTY3JvbGwgPSBfdGhpcyRwcm9wczEyLmNhcHR1cmVNZW51U2Nyb2xsLFxuICAgICAgICBpbnB1dFZhbHVlID0gX3RoaXMkcHJvcHMxMi5pbnB1dFZhbHVlLFxuICAgICAgICBpc0xvYWRpbmcgPSBfdGhpcyRwcm9wczEyLmlzTG9hZGluZyxcbiAgICAgICAgbG9hZGluZ01lc3NhZ2UgPSBfdGhpcyRwcm9wczEyLmxvYWRpbmdNZXNzYWdlLFxuICAgICAgICBtaW5NZW51SGVpZ2h0ID0gX3RoaXMkcHJvcHMxMi5taW5NZW51SGVpZ2h0LFxuICAgICAgICBtYXhNZW51SGVpZ2h0ID0gX3RoaXMkcHJvcHMxMi5tYXhNZW51SGVpZ2h0LFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHMxMi5tZW51SXNPcGVuLFxuICAgICAgICBtZW51UGxhY2VtZW50ID0gX3RoaXMkcHJvcHMxMi5tZW51UGxhY2VtZW50LFxuICAgICAgICBtZW51UG9zaXRpb24gPSBfdGhpcyRwcm9wczEyLm1lbnVQb3NpdGlvbixcbiAgICAgICAgbWVudVBvcnRhbFRhcmdldCA9IF90aGlzJHByb3BzMTIubWVudVBvcnRhbFRhcmdldCxcbiAgICAgICAgbWVudVNob3VsZEJsb2NrU2Nyb2xsID0gX3RoaXMkcHJvcHMxMi5tZW51U2hvdWxkQmxvY2tTY3JvbGwsXG4gICAgICAgIG1lbnVTaG91bGRTY3JvbGxJbnRvVmlldyA9IF90aGlzJHByb3BzMTIubWVudVNob3VsZFNjcm9sbEludG9WaWV3LFxuICAgICAgICBub09wdGlvbnNNZXNzYWdlID0gX3RoaXMkcHJvcHMxMi5ub09wdGlvbnNNZXNzYWdlLFxuICAgICAgICBvbk1lbnVTY3JvbGxUb1RvcCA9IF90aGlzJHByb3BzMTIub25NZW51U2Nyb2xsVG9Ub3AsXG4gICAgICAgIG9uTWVudVNjcm9sbFRvQm90dG9tID0gX3RoaXMkcHJvcHMxMi5vbk1lbnVTY3JvbGxUb0JvdHRvbTtcbiAgICAgIGlmICghbWVudUlzT3BlbikgcmV0dXJuIG51bGw7XG5cbiAgICAgIC8vIFRPRE86IEludGVybmFsIE9wdGlvbiBUeXBlIGhlcmVcbiAgICAgIHZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIocHJvcHMsIGlkKSB7XG4gICAgICAgIHZhciB0eXBlID0gcHJvcHMudHlwZSxcbiAgICAgICAgICBkYXRhID0gcHJvcHMuZGF0YSxcbiAgICAgICAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZCxcbiAgICAgICAgICBpc1NlbGVjdGVkID0gcHJvcHMuaXNTZWxlY3RlZCxcbiAgICAgICAgICBsYWJlbCA9IHByb3BzLmxhYmVsLFxuICAgICAgICAgIHZhbHVlID0gcHJvcHMudmFsdWU7XG4gICAgICAgIHZhciBpc0ZvY3VzZWQgPSBmb2N1c2VkT3B0aW9uID09PSBkYXRhO1xuICAgICAgICB2YXIgb25Ib3ZlciA9IGlzRGlzYWJsZWQgPyB1bmRlZmluZWQgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzNC5vbk9wdGlvbkhvdmVyKGRhdGEpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgb25TZWxlY3QgPSBpc0Rpc2FibGVkID8gdW5kZWZpbmVkIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpczQuc2VsZWN0T3B0aW9uKGRhdGEpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgb3B0aW9uSWQgPSBcIlwiLmNvbmNhdChfdGhpczQuZ2V0RWxlbWVudElkKCdvcHRpb24nKSwgXCItXCIpLmNvbmNhdChpZCk7XG4gICAgICAgIHZhciBpbm5lclByb3BzID0ge1xuICAgICAgICAgIGlkOiBvcHRpb25JZCxcbiAgICAgICAgICBvbkNsaWNrOiBvblNlbGVjdCxcbiAgICAgICAgICBvbk1vdXNlTW92ZTogb25Ib3ZlcixcbiAgICAgICAgICBvbk1vdXNlT3Zlcjogb25Ib3ZlcixcbiAgICAgICAgICB0YWJJbmRleDogLTEsXG4gICAgICAgICAgcm9sZTogJ29wdGlvbicsXG4gICAgICAgICAgJ2FyaWEtc2VsZWN0ZWQnOiBfdGhpczQuaXNBcHBsZURldmljZSA/IHVuZGVmaW5lZCA6IGlzU2VsZWN0ZWQgLy8gaXMgbm90IHN1cHBvcnRlZCBvbiBBcHBsZSBkZXZpY2VzXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoT3B0aW9uLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgICBpbm5lclByb3BzOiBpbm5lclByb3BzLFxuICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgICBpc1NlbGVjdGVkOiBpc1NlbGVjdGVkLFxuICAgICAgICAgIGtleTogb3B0aW9uSWQsXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxuICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkLFxuICAgICAgICAgIGlubmVyUmVmOiBpc0ZvY3VzZWQgPyBfdGhpczQuZ2V0Rm9jdXNlZE9wdGlvblJlZiA6IHVuZGVmaW5lZFxuICAgICAgICB9KSwgX3RoaXM0LmZvcm1hdE9wdGlvbkxhYmVsKHByb3BzLmRhdGEsICdtZW51JykpO1xuICAgICAgfTtcbiAgICAgIHZhciBtZW51VUk7XG4gICAgICBpZiAodGhpcy5oYXNPcHRpb25zKCkpIHtcbiAgICAgICAgbWVudVVJID0gdGhpcy5nZXRDYXRlZ29yaXplZE9wdGlvbnMoKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICBpZiAoaXRlbS50eXBlID09PSAnZ3JvdXAnKSB7XG4gICAgICAgICAgICB2YXIgX2RhdGEgPSBpdGVtLmRhdGEsXG4gICAgICAgICAgICAgIG9wdGlvbnMgPSBpdGVtLm9wdGlvbnMsXG4gICAgICAgICAgICAgIGdyb3VwSW5kZXggPSBpdGVtLmluZGV4O1xuICAgICAgICAgICAgdmFyIGdyb3VwSWQgPSBcIlwiLmNvbmNhdChfdGhpczQuZ2V0RWxlbWVudElkKCdncm91cCcpLCBcIi1cIikuY29uY2F0KGdyb3VwSW5kZXgpO1xuICAgICAgICAgICAgdmFyIGhlYWRpbmdJZCA9IFwiXCIuY29uY2F0KGdyb3VwSWQsIFwiLWhlYWRpbmdcIik7XG4gICAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChHcm91cCwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgICAgICAgIGtleTogZ3JvdXBJZCxcbiAgICAgICAgICAgICAgZGF0YTogX2RhdGEsXG4gICAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAgICAgICAgIEhlYWRpbmc6IEdyb3VwSGVhZGluZyxcbiAgICAgICAgICAgICAgaGVhZGluZ1Byb3BzOiB7XG4gICAgICAgICAgICAgICAgaWQ6IGhlYWRpbmdJZCxcbiAgICAgICAgICAgICAgICBkYXRhOiBpdGVtLmRhdGFcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbGFiZWw6IF90aGlzNC5mb3JtYXRHcm91cExhYmVsKGl0ZW0uZGF0YSlcbiAgICAgICAgICAgIH0pLCBpdGVtLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcihvcHRpb24sIFwiXCIuY29uY2F0KGdyb3VwSW5kZXgsIFwiLVwiKS5jb25jYXQob3B0aW9uLmluZGV4KSk7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICdvcHRpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVuZGVyKGl0ZW0sIFwiXCIuY29uY2F0KGl0ZW0uaW5kZXgpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChpc0xvYWRpbmcpIHtcbiAgICAgICAgdmFyIG1lc3NhZ2UgPSBsb2FkaW5nTWVzc2FnZSh7XG4gICAgICAgICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG1lc3NhZ2UgPT09IG51bGwpIHJldHVybiBudWxsO1xuICAgICAgICBtZW51VUkgPSAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KExvYWRpbmdNZXNzYWdlLCBjb21tb25Qcm9wcywgbWVzc2FnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgX21lc3NhZ2UgPSBub09wdGlvbnNNZXNzYWdlKHtcbiAgICAgICAgICBpbnB1dFZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoX21lc3NhZ2UgPT09IG51bGwpIHJldHVybiBudWxsO1xuICAgICAgICBtZW51VUkgPSAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KE5vT3B0aW9uc01lc3NhZ2UsIGNvbW1vblByb3BzLCBfbWVzc2FnZSk7XG4gICAgICB9XG4gICAgICB2YXIgbWVudVBsYWNlbWVudFByb3BzID0ge1xuICAgICAgICBtaW5NZW51SGVpZ2h0OiBtaW5NZW51SGVpZ2h0LFxuICAgICAgICBtYXhNZW51SGVpZ2h0OiBtYXhNZW51SGVpZ2h0LFxuICAgICAgICBtZW51UGxhY2VtZW50OiBtZW51UGxhY2VtZW50LFxuICAgICAgICBtZW51UG9zaXRpb246IG1lbnVQb3NpdGlvbixcbiAgICAgICAgbWVudVNob3VsZFNjcm9sbEludG9WaWV3OiBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXdcbiAgICAgIH07XG4gICAgICB2YXIgbWVudUVsZW1lbnQgPSAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KGluZGV4Lk1lbnVQbGFjZXIsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywgbWVudVBsYWNlbWVudFByb3BzKSwgZnVuY3Rpb24gKF9yZWY0KSB7XG4gICAgICAgIHZhciByZWYgPSBfcmVmNC5yZWYsXG4gICAgICAgICAgX3JlZjQkcGxhY2VyUHJvcHMgPSBfcmVmNC5wbGFjZXJQcm9wcyxcbiAgICAgICAgICBwbGFjZW1lbnQgPSBfcmVmNCRwbGFjZXJQcm9wcy5wbGFjZW1lbnQsXG4gICAgICAgICAgbWF4SGVpZ2h0ID0gX3JlZjQkcGxhY2VyUHJvcHMubWF4SGVpZ2h0O1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChNZW51LCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIG1lbnVQbGFjZW1lbnRQcm9wcywge1xuICAgICAgICAgIGlubmVyUmVmOiByZWYsXG4gICAgICAgICAgaW5uZXJQcm9wczoge1xuICAgICAgICAgICAgb25Nb3VzZURvd246IF90aGlzNC5vbk1lbnVNb3VzZURvd24sXG4gICAgICAgICAgICBvbk1vdXNlTW92ZTogX3RoaXM0Lm9uTWVudU1vdXNlTW92ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaXNMb2FkaW5nOiBpc0xvYWRpbmcsXG4gICAgICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgICAgICAgfSksIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoU2Nyb2xsTWFuYWdlciwge1xuICAgICAgICAgIGNhcHR1cmVFbmFibGVkOiBjYXB0dXJlTWVudVNjcm9sbCxcbiAgICAgICAgICBvblRvcEFycml2ZTogb25NZW51U2Nyb2xsVG9Ub3AsXG4gICAgICAgICAgb25Cb3R0b21BcnJpdmU6IG9uTWVudVNjcm9sbFRvQm90dG9tLFxuICAgICAgICAgIGxvY2tFbmFibGVkOiBtZW51U2hvdWxkQmxvY2tTY3JvbGxcbiAgICAgICAgfSwgZnVuY3Rpb24gKHNjcm9sbFRhcmdldFJlZikge1xuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KE1lbnVMaXN0LCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgICAgIGlubmVyUmVmOiBmdW5jdGlvbiBpbm5lclJlZihpbnN0YW5jZSkge1xuICAgICAgICAgICAgICBfdGhpczQuZ2V0TWVudUxpc3RSZWYoaW5zdGFuY2UpO1xuICAgICAgICAgICAgICBzY3JvbGxUYXJnZXRSZWYoaW5zdGFuY2UpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlubmVyUHJvcHM6IHtcbiAgICAgICAgICAgICAgcm9sZTogJ2xpc3Rib3gnLFxuICAgICAgICAgICAgICAnYXJpYS1tdWx0aXNlbGVjdGFibGUnOiBjb21tb25Qcm9wcy5pc011bHRpLFxuICAgICAgICAgICAgICBpZDogX3RoaXM0LmdldEVsZW1lbnRJZCgnbGlzdGJveCcpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNMb2FkaW5nOiBpc0xvYWRpbmcsXG4gICAgICAgICAgICBtYXhIZWlnaHQ6IG1heEhlaWdodCxcbiAgICAgICAgICAgIGZvY3VzZWRPcHRpb246IGZvY3VzZWRPcHRpb25cbiAgICAgICAgICB9KSwgbWVudVVJKTtcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIHBvc2l0aW9uaW5nIGJlaGF2aW91ciBpcyBhbG1vc3QgaWRlbnRpY2FsIGZvciBwb3J0YWxsZWQgYW5kIGZpeGVkLFxuICAgICAgLy8gc28gd2UgdXNlIHRoZSBzYW1lIGNvbXBvbmVudC4gdGhlIGFjdHVhbCBwb3J0YWxsaW5nIGxvZ2ljIGlzIGZvcmtlZFxuICAgICAgLy8gd2l0aGluIHRoZSBjb21wb25lbnQgYmFzZWQgb24gYG1lbnVQb3NpdGlvbmBcbiAgICAgIHJldHVybiBtZW51UG9ydGFsVGFyZ2V0IHx8IG1lbnVQb3NpdGlvbiA9PT0gJ2ZpeGVkJyA/IC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoTWVudVBvcnRhbCwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGFwcGVuZFRvOiBtZW51UG9ydGFsVGFyZ2V0LFxuICAgICAgICBjb250cm9sRWxlbWVudDogdGhpcy5jb250cm9sUmVmLFxuICAgICAgICBtZW51UGxhY2VtZW50OiBtZW51UGxhY2VtZW50LFxuICAgICAgICBtZW51UG9zaXRpb246IG1lbnVQb3NpdGlvblxuICAgICAgfSksIG1lbnVFbGVtZW50KSA6IG1lbnVFbGVtZW50O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJGb3JtRmllbGRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyRm9ybUZpZWxkKCkge1xuICAgICAgdmFyIF90aGlzNSA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMyA9IHRoaXMucHJvcHMsXG4gICAgICAgIGRlbGltaXRlciA9IF90aGlzJHByb3BzMTMuZGVsaW1pdGVyLFxuICAgICAgICBpc0Rpc2FibGVkID0gX3RoaXMkcHJvcHMxMy5pc0Rpc2FibGVkLFxuICAgICAgICBpc011bHRpID0gX3RoaXMkcHJvcHMxMy5pc011bHRpLFxuICAgICAgICBuYW1lID0gX3RoaXMkcHJvcHMxMy5uYW1lLFxuICAgICAgICByZXF1aXJlZCA9IF90aGlzJHByb3BzMTMucmVxdWlyZWQ7XG4gICAgICB2YXIgc2VsZWN0VmFsdWUgPSB0aGlzLnN0YXRlLnNlbGVjdFZhbHVlO1xuICAgICAgaWYgKHJlcXVpcmVkICYmICF0aGlzLmhhc1ZhbHVlKCkgJiYgIWlzRGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoUmVxdWlyZWRJbnB1dCQxLCB7XG4gICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICBvbkZvY3VzOiB0aGlzLm9uVmFsdWVJbnB1dEZvY3VzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFuYW1lIHx8IGlzRGlzYWJsZWQpIHJldHVybjtcbiAgICAgIGlmIChpc011bHRpKSB7XG4gICAgICAgIGlmIChkZWxpbWl0ZXIpIHtcbiAgICAgICAgICB2YXIgdmFsdWUgPSBzZWxlY3RWYWx1ZS5tYXAoZnVuY3Rpb24gKG9wdCkge1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzNS5nZXRPcHRpb25WYWx1ZShvcHQpO1xuICAgICAgICAgIH0pLmpvaW4oZGVsaW1pdGVyKTtcbiAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICB0eXBlOiBcImhpZGRlblwiLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGlucHV0ID0gc2VsZWN0VmFsdWUubGVuZ3RoID4gMCA/IHNlbGVjdFZhbHVlLm1hcChmdW5jdGlvbiAob3B0LCBpKSB7XG4gICAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtcbiAgICAgICAgICAgICAga2V5OiBcImktXCIuY29uY2F0KGkpLFxuICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICB0eXBlOiBcImhpZGRlblwiLFxuICAgICAgICAgICAgICB2YWx1ZTogX3RoaXM1LmdldE9wdGlvblZhbHVlKG9wdClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pIDogLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICB0eXBlOiBcImhpZGRlblwiLFxuICAgICAgICAgICAgdmFsdWU6IFwiXCJcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChcImRpdlwiLCBudWxsLCBpbnB1dCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBfdmFsdWUgPSBzZWxlY3RWYWx1ZVswXSA/IHRoaXMuZ2V0T3B0aW9uVmFsdWUoc2VsZWN0VmFsdWVbMF0pIDogJyc7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge1xuICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICB2YWx1ZTogX3ZhbHVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJMaXZlUmVnaW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckxpdmVSZWdpb24oKSB7XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIF90aGlzJHN0YXRlNiA9IHRoaXMuc3RhdGUsXG4gICAgICAgIGFyaWFTZWxlY3Rpb24gPSBfdGhpcyRzdGF0ZTYuYXJpYVNlbGVjdGlvbixcbiAgICAgICAgZm9jdXNlZE9wdGlvbiA9IF90aGlzJHN0YXRlNi5mb2N1c2VkT3B0aW9uLFxuICAgICAgICBmb2N1c2VkVmFsdWUgPSBfdGhpcyRzdGF0ZTYuZm9jdXNlZFZhbHVlLFxuICAgICAgICBpc0ZvY3VzZWQgPSBfdGhpcyRzdGF0ZTYuaXNGb2N1c2VkLFxuICAgICAgICBzZWxlY3RWYWx1ZSA9IF90aGlzJHN0YXRlNi5zZWxlY3RWYWx1ZTtcbiAgICAgIHZhciBmb2N1c2FibGVPcHRpb25zID0gdGhpcy5nZXRGb2N1c2FibGVPcHRpb25zKCk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChMaXZlUmVnaW9uJDEsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBpZDogdGhpcy5nZXRFbGVtZW50SWQoJ2xpdmUtcmVnaW9uJyksXG4gICAgICAgIGFyaWFTZWxlY3Rpb246IGFyaWFTZWxlY3Rpb24sXG4gICAgICAgIGZvY3VzZWRPcHRpb246IGZvY3VzZWRPcHRpb24sXG4gICAgICAgIGZvY3VzZWRWYWx1ZTogZm9jdXNlZFZhbHVlLFxuICAgICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZCxcbiAgICAgICAgc2VsZWN0VmFsdWU6IHNlbGVjdFZhbHVlLFxuICAgICAgICBmb2N1c2FibGVPcHRpb25zOiBmb2N1c2FibGVPcHRpb25zLFxuICAgICAgICBpc0FwcGxlRGV2aWNlOiB0aGlzLmlzQXBwbGVEZXZpY2VcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpcyRnZXRDb21wb25lbnRzOCA9IHRoaXMuZ2V0Q29tcG9uZW50cygpLFxuICAgICAgICBDb250cm9sID0gX3RoaXMkZ2V0Q29tcG9uZW50czguQ29udHJvbCxcbiAgICAgICAgSW5kaWNhdG9yc0NvbnRhaW5lciA9IF90aGlzJGdldENvbXBvbmVudHM4LkluZGljYXRvcnNDb250YWluZXIsXG4gICAgICAgIFNlbGVjdENvbnRhaW5lciA9IF90aGlzJGdldENvbXBvbmVudHM4LlNlbGVjdENvbnRhaW5lcixcbiAgICAgICAgVmFsdWVDb250YWluZXIgPSBfdGhpcyRnZXRDb21wb25lbnRzOC5WYWx1ZUNvbnRhaW5lcjtcbiAgICAgIHZhciBfdGhpcyRwcm9wczE0ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHMxNC5jbGFzc05hbWUsXG4gICAgICAgIGlkID0gX3RoaXMkcHJvcHMxNC5pZCxcbiAgICAgICAgaXNEaXNhYmxlZCA9IF90aGlzJHByb3BzMTQuaXNEaXNhYmxlZCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzMTQubWVudUlzT3BlbjtcbiAgICAgIHZhciBpc0ZvY3VzZWQgPSB0aGlzLnN0YXRlLmlzRm9jdXNlZDtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHMgPSB0aGlzLmdldENvbW1vblByb3BzKCk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChTZWxlY3RDb250YWluZXIsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICAgICAgaW5uZXJQcm9wczoge1xuICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICBvbktleURvd246IHRoaXMub25LZXlEb3duXG4gICAgICAgIH0sXG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkXG4gICAgICB9KSwgdGhpcy5yZW5kZXJMaXZlUmVnaW9uKCksIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoQ29udHJvbCwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlubmVyUmVmOiB0aGlzLmdldENvbnRyb2xSZWYsXG4gICAgICAgIGlubmVyUHJvcHM6IHtcbiAgICAgICAgICBvbk1vdXNlRG93bjogdGhpcy5vbkNvbnRyb2xNb3VzZURvd24sXG4gICAgICAgICAgb25Ub3VjaEVuZDogdGhpcy5vbkNvbnRyb2xUb3VjaEVuZFxuICAgICAgICB9LFxuICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZCxcbiAgICAgICAgbWVudUlzT3BlbjogbWVudUlzT3BlblxuICAgICAgfSksIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoVmFsdWVDb250YWluZXIsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkXG4gICAgICB9KSwgdGhpcy5yZW5kZXJQbGFjZWhvbGRlck9yVmFsdWUoKSwgdGhpcy5yZW5kZXJJbnB1dCgpKSwgLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChJbmRpY2F0b3JzQ29udGFpbmVyLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZFxuICAgICAgfSksIHRoaXMucmVuZGVyQ2xlYXJJbmRpY2F0b3IoKSwgdGhpcy5yZW5kZXJMb2FkaW5nSW5kaWNhdG9yKCksIHRoaXMucmVuZGVySW5kaWNhdG9yU2VwYXJhdG9yKCksIHRoaXMucmVuZGVyRHJvcGRvd25JbmRpY2F0b3IoKSkpLCB0aGlzLnJlbmRlck1lbnUoKSwgdGhpcy5yZW5kZXJGb3JtRmllbGQoKSk7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhwcm9wcywgc3RhdGUpIHtcbiAgICAgIHZhciBwcmV2UHJvcHMgPSBzdGF0ZS5wcmV2UHJvcHMsXG4gICAgICAgIGNsZWFyRm9jdXNWYWx1ZU9uVXBkYXRlID0gc3RhdGUuY2xlYXJGb2N1c1ZhbHVlT25VcGRhdGUsXG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZSA9IHN0YXRlLmlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZSxcbiAgICAgICAgYXJpYVNlbGVjdGlvbiA9IHN0YXRlLmFyaWFTZWxlY3Rpb24sXG4gICAgICAgIGlzRm9jdXNlZCA9IHN0YXRlLmlzRm9jdXNlZCxcbiAgICAgICAgcHJldldhc0ZvY3VzZWQgPSBzdGF0ZS5wcmV2V2FzRm9jdXNlZCxcbiAgICAgICAgaW5zdGFuY2VQcmVmaXggPSBzdGF0ZS5pbnN0YW5jZVByZWZpeDtcbiAgICAgIHZhciBvcHRpb25zID0gcHJvcHMub3B0aW9ucyxcbiAgICAgICAgdmFsdWUgPSBwcm9wcy52YWx1ZSxcbiAgICAgICAgbWVudUlzT3BlbiA9IHByb3BzLm1lbnVJc09wZW4sXG4gICAgICAgIGlucHV0VmFsdWUgPSBwcm9wcy5pbnB1dFZhbHVlLFxuICAgICAgICBpc011bHRpID0gcHJvcHMuaXNNdWx0aTtcbiAgICAgIHZhciBzZWxlY3RWYWx1ZSA9IGluZGV4LmNsZWFuVmFsdWUodmFsdWUpO1xuICAgICAgdmFyIG5ld01lbnVPcHRpb25zU3RhdGUgPSB7fTtcbiAgICAgIGlmIChwcmV2UHJvcHMgJiYgKHZhbHVlICE9PSBwcmV2UHJvcHMudmFsdWUgfHwgb3B0aW9ucyAhPT0gcHJldlByb3BzLm9wdGlvbnMgfHwgbWVudUlzT3BlbiAhPT0gcHJldlByb3BzLm1lbnVJc09wZW4gfHwgaW5wdXRWYWx1ZSAhPT0gcHJldlByb3BzLmlucHV0VmFsdWUpKSB7XG4gICAgICAgIHZhciBmb2N1c2FibGVPcHRpb25zID0gbWVudUlzT3BlbiA/IGJ1aWxkRm9jdXNhYmxlT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpIDogW107XG4gICAgICAgIHZhciBmb2N1c2FibGVPcHRpb25zV2l0aElkcyA9IG1lbnVJc09wZW4gPyBidWlsZEZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzKGJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKHByb3BzLCBzZWxlY3RWYWx1ZSksIFwiXCIuY29uY2F0KGluc3RhbmNlUHJlZml4LCBcIi1vcHRpb25cIikpIDogW107XG4gICAgICAgIHZhciBmb2N1c2VkVmFsdWUgPSBjbGVhckZvY3VzVmFsdWVPblVwZGF0ZSA/IGdldE5leHRGb2N1c2VkVmFsdWUoc3RhdGUsIHNlbGVjdFZhbHVlKSA6IG51bGw7XG4gICAgICAgIHZhciBmb2N1c2VkT3B0aW9uID0gZ2V0TmV4dEZvY3VzZWRPcHRpb24oc3RhdGUsIGZvY3VzYWJsZU9wdGlvbnMpO1xuICAgICAgICB2YXIgZm9jdXNlZE9wdGlvbklkID0gZ2V0Rm9jdXNlZE9wdGlvbklkKGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLCBmb2N1c2VkT3B0aW9uKTtcbiAgICAgICAgbmV3TWVudU9wdGlvbnNTdGF0ZSA9IHtcbiAgICAgICAgICBzZWxlY3RWYWx1ZTogc2VsZWN0VmFsdWUsXG4gICAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNlZE9wdGlvbixcbiAgICAgICAgICBmb2N1c2VkT3B0aW9uSWQ6IGZvY3VzZWRPcHRpb25JZCxcbiAgICAgICAgICBmb2N1c2FibGVPcHRpb25zV2l0aElkczogZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMsXG4gICAgICAgICAgZm9jdXNlZFZhbHVlOiBmb2N1c2VkVmFsdWUsXG4gICAgICAgICAgY2xlYXJGb2N1c1ZhbHVlT25VcGRhdGU6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICAvLyBzb21lIHVwZGF0ZXMgc2hvdWxkIHRvZ2dsZSB0aGUgc3RhdGUgb2YgdGhlIGlucHV0IHZpc2liaWxpdHlcbiAgICAgIHZhciBuZXdJbnB1dElzSGlkZGVuU3RhdGUgPSBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGUgIT0gbnVsbCAmJiBwcm9wcyAhPT0gcHJldlByb3BzID8ge1xuICAgICAgICBpbnB1dElzSGlkZGVuOiBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGUsXG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogdW5kZWZpbmVkXG4gICAgICB9IDoge307XG4gICAgICB2YXIgbmV3QXJpYVNlbGVjdGlvbiA9IGFyaWFTZWxlY3Rpb247XG4gICAgICB2YXIgaGFzS2VwdEZvY3VzID0gaXNGb2N1c2VkICYmIHByZXZXYXNGb2N1c2VkO1xuICAgICAgaWYgKGlzRm9jdXNlZCAmJiAhaGFzS2VwdEZvY3VzKSB7XG4gICAgICAgIC8vIElmIGB2YWx1ZWAgb3IgYGRlZmF1bHRWYWx1ZWAgcHJvcHMgYXJlIG5vdCBlbXB0eSB0aGVuIGFubm91bmNlIHRoZW1cbiAgICAgICAgLy8gd2hlbiB0aGUgU2VsZWN0IGlzIGluaXRpYWxseSBmb2N1c2VkXG4gICAgICAgIG5ld0FyaWFTZWxlY3Rpb24gPSB7XG4gICAgICAgICAgdmFsdWU6IGluZGV4LnZhbHVlVGVybmFyeShpc011bHRpLCBzZWxlY3RWYWx1ZSwgc2VsZWN0VmFsdWVbMF0gfHwgbnVsbCksXG4gICAgICAgICAgb3B0aW9uczogc2VsZWN0VmFsdWUsXG4gICAgICAgICAgYWN0aW9uOiAnaW5pdGlhbC1pbnB1dC1mb2N1cydcbiAgICAgICAgfTtcbiAgICAgICAgaGFzS2VwdEZvY3VzID0gIXByZXZXYXNGb2N1c2VkO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgJ2luaXRpYWwtaW5wdXQtZm9jdXMnIGFjdGlvbiBoYXMgYmVlbiBzZXQgYWxyZWFkeVxuICAgICAgLy8gdGhlbiByZXNldCB0aGUgYXJpYVNlbGVjdGlvbiB0byBudWxsXG4gICAgICBpZiAoKGFyaWFTZWxlY3Rpb24gPT09IG51bGwgfHwgYXJpYVNlbGVjdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXJpYVNlbGVjdGlvbi5hY3Rpb24pID09PSAnaW5pdGlhbC1pbnB1dC1mb2N1cycpIHtcbiAgICAgICAgbmV3QXJpYVNlbGVjdGlvbiA9IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG5ld01lbnVPcHRpb25zU3RhdGUpLCBuZXdJbnB1dElzSGlkZGVuU3RhdGUpLCB7fSwge1xuICAgICAgICBwcmV2UHJvcHM6IHByb3BzLFxuICAgICAgICBhcmlhU2VsZWN0aW9uOiBuZXdBcmlhU2VsZWN0aW9uLFxuICAgICAgICBwcmV2V2FzRm9jdXNlZDogaGFzS2VwdEZvY3VzXG4gICAgICB9KTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFNlbGVjdDtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblNlbGVjdC5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5cbmV4cG9ydHMuU2VsZWN0ID0gU2VsZWN0O1xuZXhwb3J0cy5jcmVhdGVGaWx0ZXIgPSBjcmVhdGVGaWx0ZXI7XG5leHBvcnRzLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbmV4cG9ydHMuZGVmYXVsdFRoZW1lID0gZGVmYXVsdFRoZW1lO1xuZXhwb3J0cy5nZXRPcHRpb25MYWJlbCA9IGdldE9wdGlvbkxhYmVsJDE7XG5leHBvcnRzLmdldE9wdGlvblZhbHVlID0gZ2V0T3B0aW9uVmFsdWUkMTtcbmV4cG9ydHMubWVyZ2VTdHlsZXMgPSBtZXJnZVN0eWxlcztcbiIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxudmFyIHVzZVN0YXRlTWFuYWdlciA9IHJlcXVpcmUoJy4vdXNlU3RhdGVNYW5hZ2VyLWNlMjMwNjFjLmNqcy5wcm9kLmpzJyk7XG52YXIgX2V4dGVuZHMgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHMnKTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG52YXIgU2VsZWN0ID0gcmVxdWlyZSgnLi9TZWxlY3QtMzZkMTVmOTMuY2pzLnByb2QuanMnKTtcbnZhciByZWFjdCA9IHJlcXVpcmUoJ0BlbW90aW9uL3JlYWN0Jyk7XG52YXIgY3JlYXRlQ2FjaGUgPSByZXF1aXJlKCdAZW1vdGlvbi9jYWNoZScpO1xudmFyIGluZGV4ID0gcmVxdWlyZSgnLi9pbmRleC02NjVjNGVkOC5janMucHJvZC5qcycpO1xucmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RTcHJlYWQyJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXknKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXMnKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MnKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMnKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlU3VwZXInKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXknKTtcbnJlcXVpcmUoJ21lbW9pemUtb25lJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZicpO1xucmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy90YWdnZWRUZW1wbGF0ZUxpdGVyYWwnKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHknKTtcbnJlcXVpcmUoJ3JlYWN0LWRvbScpO1xucmVxdWlyZSgnQGZsb2F0aW5nLXVpL2RvbScpO1xucmVxdWlyZSgndXNlLWlzb21vcnBoaWMtbGF5b3V0LWVmZmVjdCcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcERlZmF1bHQgKGUpIHsgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHsgJ2RlZmF1bHQnOiBlIH07IH1cblxuZnVuY3Rpb24gX2ludGVyb3BOYW1lc3BhY2UoZSkge1xuICBpZiAoZSAmJiBlLl9fZXNNb2R1bGUpIHJldHVybiBlO1xuICB2YXIgbiA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGlmIChlKSB7XG4gICAgT2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgaWYgKGsgIT09ICdkZWZhdWx0Jykge1xuICAgICAgICB2YXIgZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgayk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCBrLCBkLmdldCA/IGQgOiB7XG4gICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVba107IH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgbltcImRlZmF1bHRcIl0gPSBlO1xuICByZXR1cm4gT2JqZWN0LmZyZWV6ZShuKTtcbn1cblxudmFyIFJlYWN0X19uYW1lc3BhY2UgPSAvKiNfX1BVUkVfXyovX2ludGVyb3BOYW1lc3BhY2UoUmVhY3QpO1xudmFyIGNyZWF0ZUNhY2hlX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19pbnRlcm9wRGVmYXVsdChjcmVhdGVDYWNoZSk7XG5cbnZhciBTdGF0ZU1hbmFnZWRTZWxlY3QgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikge1xuICB2YXIgYmFzZVNlbGVjdFByb3BzID0gdXNlU3RhdGVNYW5hZ2VyLnVzZVN0YXRlTWFuYWdlcihwcm9wcyk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX25hbWVzcGFjZS5jcmVhdGVFbGVtZW50KFNlbGVjdC5TZWxlY3QsIF9leHRlbmRzKHtcbiAgICByZWY6IHJlZlxuICB9LCBiYXNlU2VsZWN0UHJvcHMpKTtcbn0pO1xudmFyIFN0YXRlTWFuYWdlZFNlbGVjdCQxID0gU3RhdGVNYW5hZ2VkU2VsZWN0O1xuXG52YXIgTm9uY2VQcm92aWRlciA9IChmdW5jdGlvbiAoX3JlZikge1xuICB2YXIgbm9uY2UgPSBfcmVmLm5vbmNlLFxuICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbixcbiAgICBjYWNoZUtleSA9IF9yZWYuY2FjaGVLZXk7XG4gIHZhciBlbW90aW9uQ2FjaGUgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gY3JlYXRlQ2FjaGVfX2RlZmF1bHRbXCJkZWZhdWx0XCJdKHtcbiAgICAgIGtleTogY2FjaGVLZXksXG4gICAgICBub25jZTogbm9uY2VcbiAgICB9KTtcbiAgfSwgW2NhY2hlS2V5LCBub25jZV0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19uYW1lc3BhY2UuY3JlYXRlRWxlbWVudChyZWFjdC5DYWNoZVByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IGVtb3Rpb25DYWNoZVxuICB9LCBjaGlsZHJlbik7XG59KTtcblxuZXhwb3J0cy51c2VTdGF0ZU1hbmFnZXIgPSB1c2VTdGF0ZU1hbmFnZXIudXNlU3RhdGVNYW5hZ2VyO1xuZXhwb3J0cy5jcmVhdGVGaWx0ZXIgPSBTZWxlY3QuY3JlYXRlRmlsdGVyO1xuZXhwb3J0cy5kZWZhdWx0VGhlbWUgPSBTZWxlY3QuZGVmYXVsdFRoZW1lO1xuZXhwb3J0cy5tZXJnZVN0eWxlcyA9IFNlbGVjdC5tZXJnZVN0eWxlcztcbmV4cG9ydHMuY29tcG9uZW50cyA9IGluZGV4LmNvbXBvbmVudHM7XG5leHBvcnRzLk5vbmNlUHJvdmlkZXIgPSBOb25jZVByb3ZpZGVyO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBTdGF0ZU1hbmFnZWRTZWxlY3QkMTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIikge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuL3JlYWN0LXNlbGVjdC5janMucHJvZC5qc1wiKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4vcmVhY3Qtc2VsZWN0LmNqcy5kZXYuanNcIik7XG59XG4iLCJleHBvcnRzLl9kZWZhdWx0ID0gcmVxdWlyZShcIi4vcmVhY3Qtc2VsZWN0LmNqcy5qc1wiKS5kZWZhdWx0O1xuIiwiaW1wb3J0IHN0eWxlZCBmcm9tIFwic3R5bGVkLWNvbXBvbmVudHNcIlxuaW1wb3J0IHsgY29tcG9uZW50cyB9IGZyb20gXCJyZWFjdC1zZWxlY3RcIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgY29uc3QgU2VsZWN0TGFiZWwgPSAocHJvcHM6IGFueSkgPT4ge1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxjb21wb25lbnRzLkNvbnRyb2wgey4uLnByb3BzfSAvPlxuICAgICAgPExhYmVsICRpc0Zsb2F0aW5nPXtwcm9wcy5nZXRWYWx1ZSgpLmxlbmd0aCA9PSAwIHx8IHByb3BzLmdldFZhbHVlKClbMF0udXVpZCA9PSBcIlwifT57cHJvcHMuc2VsZWN0UHJvcHMubmFtZX08L0xhYmVsPlxuICAgIDwvPlxuICApO1xufTtcblxuY29uc3QgTGFiZWwgPSBzdHlsZWQubGFiZWw8eyAkaXNGbG9hdGluZz86IGJvb2xlYW4gfT5gXG4gIGxlZnQ6IDEwcHg7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRyYW5zaXRpb246IDAuMnMgZWFzZSBhbGw7XG4gIC1tb3otdHJhbnNpdGlvbjogMC4ycyBlYXNlIGFsbDtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiAwLjJzIGVhc2UgYWxsO1xuICB0b3A6ICR7KHByb3BzKSA9PiAocHJvcHMuJGlzRmxvYXRpbmcgPyBgMjAlYCA6IGAwcHhgKX07XG4gIGZvbnQtc2l6ZTogJHsocHJvcHMpID0+IChwcm9wcy4kaXNGbG9hdGluZyA/IGAxcmVtYCA6IGAwLjZyZW1gKX07XG5gO1xuIiwiaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBBc3luY1BhZ2luYXRlIH0gZnJvbSBcInJlYWN0LXNlbGVjdC1hc3luYy1wYWdpbmF0ZVwiXG5pbXBvcnQgeyBDb250YWN0IH0gZnJvbSAnLi4vLi4vbW9kZWwvY29udGFjdCdcbmltcG9ydCBDb250YWN0U2VydmljZSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb250YWN0J1xuaW1wb3J0IHsgU2hvcCB9IGZyb20gJy4uLy4uL21vZGVsL3Nob3AnXG5pbXBvcnQge3VzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY29udGFpbmVyIH0gZnJvbSAndHN5cmluZ2UtbmVvJ1xuaW1wb3J0IE9yZGVyU3RhdGUgZnJvbSAnLi4vLi4vc3RhdGUvb3JkZXInXG5pbXBvcnQgQ29udGFjdE1vZGFsQ29tcG9uZW50IGZyb20gXCIuL0NvbnRhY3RNb2RhbENvbXBvbmVudFwiXG5pbXBvcnQgT3JkZXIgZnJvbSAnLi4vLi4vbW9kZWwvb3JkZXInXG5pbXBvcnQgeyBTZWxlY3RMYWJlbCB9IGZyb20gJy4uL2Jhc2UvU2VsZWN0TGFiZWwnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IENvbnRhY3RTZWxlY3QgPSAoe29yZGVyLCBzaG9wLCBvbkNoYW5nZX0pID0+IHtcblxuICBjb25zdCBbc2hvcFV1aWQsIHNldFNob3BVdWlkXSA9IHVzZVN0YXRlKG51bGwpO1xuXG4gIGNvbnN0IG9yZGVyU3RhdGU6IE9yZGVyU3RhdGUgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclN0YXRlKTtcbiAgY29uc3QgY29udGFjdF9hcGkgPSBuZXcgQ29udGFjdFNlcnZpY2UoKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFNob3BVdWlkKHNob3AudXVpZCk7XG4gIH0sIFtzaG9wXSk7XG5cbiAgY29uc3QgbG9hZE9wdGlvbnMgPSBhc3luYyAoc2VhcmNoUXVlcnksIGxvYWRlZE9wdGlvbnMsIHsgcGFnZSB9KSA9PiB7XG5cbiAgICBsZXQgY29udGFjdHMgPSBhd2FpdCBjb250YWN0X2FwaS5nZXRDb250YWN0cyhzZWFyY2hRdWVyeSwgcGFnZSwgc2hvcCk7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIG9wdGlvbnM6IGNvbnRhY3RzLFxuICAgICAgaGFzTW9yZTogZmFsc2UsXG4gICAgICBhZGRpdGlvbmFsOiB7XG4gICAgICAgIHBhZ2U6IHBhZ2UgKyAxLFxuICAgICAgfSxcbiAgICB9OyBcbiAgfTtcblxuICBjb25zdCBzZXRDb250YWN0SW5PcmRlciA9IChvcHRpb24pID0+IHtcbiAgICBvcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLnZhbHVlLmNvbnRhY3QgPSBvcHRpb247XG4gICAgb3JkZXIuY29udGFjdCA9IG9wdGlvbjtcbiAgICBvbkNoYW5nZShvcHRpb24pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFkZCA9IChjb250YWN0OiBDb250YWN0KSA9PiB7XG4gICAgc2V0U2hvcFV1aWQoTWF0aC5yYW5kb20oKSk7XG4gICAgc2V0Q29udGFjdEluT3JkZXIoY29udGFjdCk7XG4gIH1cblxuICBjb25zdCBoYW5kbGVFZGl0ID0gKGNvbnRhY3Q6IENvbnRhY3QpID0+IHtcbiAgICBzZXRTaG9wVXVpZChNYXRoLnJhbmRvbSgpKTtcbiAgICBzZXRDb250YWN0SW5PcmRlcihjb250YWN0KTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0xXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICA8QXN5bmNQYWdpbmF0ZVxuICAgICAgICAgICAgZGVmYXVsdE9wdGlvbnNcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7b3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS52YWx1ZS5jb250YWN0LnVzZXJuYW1lID09IFwiXCIgPyBcImJvcmRlciBib3JkZXItZGFuZ2VyXCIgOiBcIlwifWB9XG4gICAgICAgICAgICBrZXk9e0pTT04uc3RyaW5naWZ5KHNob3BVdWlkKX1cbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17b3JkZXIuY29udGFjdH1cbiAgICAgICAgICAgIGNvbXBvbmVudHM9e3tDb250cm9sOiBTZWxlY3RMYWJlbH19XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj0nJ1xuICAgICAgICAgICAgbmFtZT0nS3VuZGUnXG4gICAgICAgICAgICB2YWx1ZT17b3JkZXIuY29udGFjdH1cbiAgICAgICAgICAgIGxvYWRPcHRpb25zPXtsb2FkT3B0aW9uc31cbiAgICAgICAgICAgIGdldE9wdGlvblZhbHVlPXsob3B0aW9uKSA9PiBvcHRpb24udXVpZH1cbiAgICAgICAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiBvcHRpb24udXNlcm5hbWV9XG4gICAgICAgICAgICBvbkNoYW5nZT17c2V0Q29udGFjdEluT3JkZXJ9XG4gICAgICAgICAgICBpc1NlYXJjaGFibGU9e3RydWV9XG4gICAgICAgICAgICBhZGRpdGlvbmFsPXt7XG4gICAgICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8Q29udGFjdE1vZGFsQ29tcG9uZW50IHNob3A9e3Nob3B9IGNvbnRhY3Q9e29yZGVyLmNvbnRhY3R9IGhhbmRsZUFkZD17aGFuZGxlQWRkfSBoYW5kbGVFZGl0PXtoYW5kbGVFZGl0fS8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNvbnRhY3RTZWxlY3QucHJvcFR5cGVzID0ge1xuICBvcmRlcjogUHJvcFR5cGVzLmluc3RhbmNlT2YoT3JkZXIpLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29udGFjdFNlbGVjdDtcbiIsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBOaWNlTW9kYWwsIHsgdXNlTW9kYWwsIGJvb3RzdHJhcERpYWxvZyB9IGZyb20gXCJAZWJheS9uaWNlLW1vZGFsLXJlYWN0XCJcbmltcG9ydCBCdXR0b24gZnJvbSAnLi4vYmFzZS9CdXR0b24nXG5pbXBvcnQge1JKU0ZTY2hlbWF9IGZyb20gXCJAcmpzZi91dGlsc1wiXG5pbXBvcnQgdmFsaWRhdG9yIGZyb20gXCJAcmpzZi92YWxpZGF0b3ItYWp2NlwiXG5pbXBvcnQgRm9ybSBmcm9tIFwiQHJqc2YvY29yZVwiXG5pbXBvcnQgQ291bnRyeVNlcnZpY2UgZnJvbSAnLi4vLi4vc2VydmljZXMvY291bnRyeSdcbmltcG9ydCB7IE1vZGFsIH0gZnJvbSBcImZsb3diaXRlLXJlYWN0XCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgQWRkcmVzc2RpdiA9IE5pY2VNb2RhbC5jcmVhdGUoXG4gICAgKHsgdGl0bGUsIGFjdGlvbiwgYWRkcmVzcywgc2hvcCB9KSA9PiB7XG5cbiAgICAgICAgY29uc3QgY291bnRyeV9hcGkgPSBuZXcgQ291bnRyeVNlcnZpY2UoKVxuICAgICAgICBcbiAgICAgICAgY29uc3QgbW9kYWwgPSB1c2VNb2RhbCgpXG4gICAgICAgIGNvbnN0IFtmb3JtRGF0YSwgc2V0Rm9ybURhdGFdID0gdXNlU3RhdGUoe30pXG4gICAgICAgIFxuICAgICAgICBjb25zdCBbc2NoZW1hLCBzZXRTY2hlbWFdID0gdXNlU3RhdGU8UkpTRlNjaGVtYT4oe30pXG5cbiAgICAgICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmKGFkZHJlc3MpIHtcbiAgICAgICAgICAgICAgICBzZXRGb3JtRGF0YSh7XG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiBhZGRyZXNzLmVtYWlsLFxuICAgICAgICAgICAgICAgICAgICBmaXJzdG5hbWU6IGFkZHJlc3MuZmlyc3RuYW1lLFxuICAgICAgICAgICAgICAgICAgICBsYXN0bmFtZTogYWRkcmVzcy5sYXN0bmFtZSxcbiAgICAgICAgICAgICAgICAgICAgY29tcGFueTogYWRkcmVzcy5jb21wYW55LFxuICAgICAgICAgICAgICAgICAgICBzdHJlZXQ6IGFkZHJlc3Muc3RyZWV0LFxuICAgICAgICAgICAgICAgICAgICBob3VzZU51bWJlcjogYWRkcmVzcy5ob3VzZU51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgemlwOiBhZGRyZXNzLnppcCxcbiAgICAgICAgICAgICAgICAgICAgY2l0eTogYWRkcmVzcy5jaXR5LFxuICAgICAgICAgICAgICAgICAgICBwaG9uZTogYWRkcmVzcy5waG9uZSxcbiAgICAgICAgICAgICAgICAgICAgY291bnRyeTogYWRkcmVzcy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICB1c3RpZDogYWRkcmVzcy51c3RpZFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgW2FkZHJlc3NdKVxuXG4gICAgICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb3VudHJ5X2FwaS5nZXRDb3VudHJ5KHNob3ApLnRoZW4oKCBkYXRhICkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBjb3VudHJ5czogYXJyYXkgPSBbXTtcblxuICAgICAgICAgICAgICAgIGRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb3VudHJ5cy5wdXNoKHsndGl0bGUnOiBpdGVtLmNvZGUsICdjb25zdCc6IGl0ZW0uY29kZX0pXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIHZhciBzY2hlbWE6IFJKU0ZTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnQWRkcmVzcycsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogWydlbWFpbCddLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogeyB0eXBlOiAnc3RyaW5nJywgZm9ybWF0OiAnZW1haWwnLCB0aXRsZTogJ0UtTWFpbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhbnk6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnQ29tcGFueSd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RuYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ0ZpcnN0bmFtZSd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdG5hbWU6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnTGFzdG5hbWUnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVldDogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdTdHJlZXQnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdXNlTnVtYmVyOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ0hvdXNlbnVtYmVyJ30sXG4gICAgICAgICAgICAgICAgICAgICAgICB6aXA6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnWmlwJ30sXG4gICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ0NpdHknfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBob25lOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ1Bob25lJ30sXG4gICAgICAgICAgICAgICAgICAgICAgICB1c3RpZDogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdVc3RJZCd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeTogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdDb3VudHJ5Jywgb25lT2Y6IGNvdW50cnlzfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHNldFNjaGVtYShzY2hlbWEpXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgW10pO1xuXG4gICAgICAgIGNvbnN0IHVpU2NoZW1hOiBSSlNGU2NoZW1hID0ge1xuICAgICAgICAgICAgXCJ1aTpzdWJtaXRCdXR0b25PcHRpb25zXCI6IHtcbiAgICAgICAgICAgICAgICBcInN1Ym1pdFRleHRcIjogXCJTYXZlXCIsXG4gICAgICAgICAgICAgICAgXCJub3JlbmRlclwiOiB0cnVlLFxuICAgICAgICAgICAgICAgIFwicHJvcHNcIjoge1xuICAgICAgICAgICAgICAgICAgICBcImRpc2FibGVkXCI6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBcImNsYXNzTmFtZVwiOiBcImJ0biBidG4taW5mb1wiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfVxuXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxNb2RhbCBzaG93PXttb2RhbC52aXNpYmxlfSBvbkNsb3NlPXsoKSA9PiBtb2RhbC5yZW1vdmUoKX0+XG4gICAgICAgICAgICAgICAgPE1vZGFsLkhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj57dGl0bGV9PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9Nb2RhbC5IZWFkZXI+XG4gICAgICAgICAgICAgICAgPE1vZGFsLkJvZHk+XG4gICAgICAgICAgICAgICAgICAgIHthY3Rpb24gPT09IFwiU2F2ZVwiICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1hPXtzY2hlbWF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGE9e2Zvcm1EYXRhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpU2NoZW1hPXt1aVNjaGVtYX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3I9e3ZhbGlkYXRvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldEZvcm1EYXRhKGUuZm9ybURhdGEpfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvTW9kYWwuQm9keT5cbiAgICAgICAgICAgICAgICA8TW9kYWwuRm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXszfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3Rpb24gPT09IFwiU2F2ZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3JtRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwucmVzb2x2ZShmb3JtRGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsLnJlbW92ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC5yZXNvbHZlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwucmVtb3ZlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXs0fVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIndhcm5pbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsLnJlbW92ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvTW9kYWwuRm9vdGVyPlxuICAgICAgICAgICAgPC9Nb2RhbD5cbiAgICAgICAgKVxuICAgIH1cbilcblxuZXhwb3J0IGRlZmF1bHQgQWRkcmVzc2RpdlxuIiwiaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uL2Jhc2UvQnV0dG9uXCJcbmltcG9ydCBBZGRyZXNzTW9kYWwgZnJvbSBcIi4vQWRkcmVzc01vZGFsXCJcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VNb2RhbCB9IGZyb20gJ0BlYmF5L25pY2UtbW9kYWwtcmVhY3QnXG5pbXBvcnQgeyBBZGRyZXNzIH0gZnJvbSBcIi4uLy4uL21vZGVsL2FkZHJlc3NcIlxuaW1wb3J0IHsgU2hvcCB9IGZyb20gXCIuLi8uLi9tb2RlbC9zaG9wXCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgQWRkcmVzc01vZGFsQ29tcG9uZW50ID0gKHtoYW5kbGVBZGQsIGhhbmRsZUVkaXQsIGFkZHJlc3MsIHNob3B9KSA9PiB7XG4gICAgY29uc3QgYWRkcmVzc01vZGFsID0gdXNlTW9kYWwoQWRkcmVzc01vZGFsKVxuXG4gICAgY29uc3Qgc2hvd0FkZE1vZGFsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBhZGRyZXNzTW9kYWwuc2hvdyh7dGl0bGU6ICdBZGQgQWRkcmVzcycsIGFjdGlvbjogJ1NhdmUnLCBzaG9wfSkudGhlbigoZm9ybURhdGEpID0+IHtcbiAgICAgICAgICAgIGFkZEFkZHJlc3MoZm9ybURhdGEpXG4gICAgICAgIH0pXG4gICAgfSxbYWRkcmVzc01vZGFsXSlcblxuICAgIGNvbnN0IHNob3dFZGl0TW9kYWwgPSB1c2VDYWxsYmFjaygoYWRkcmVzcykgPT4ge1xuICAgICAgICBhZGRyZXNzTW9kYWwuc2hvdyh7IHRpdGxlOiAnRWRpdCBBZGRyZXNzJywgYWN0aW9uOiAnU2F2ZScsIGFkZHJlc3M6IGFkZHJlc3MsIHNob3AgfSkudGhlbigoZm9ybURhdGEpID0+IHtcbiAgICAgICAgICAgIHVwZGF0ZUFkZHJlc3MoZm9ybURhdGEpXG4gICAgICAgIH0pXG4gICAgfSxbYWRkcmVzc01vZGFsXSlcblxuICAgIGNvbnN0IHVwZGF0ZUFkZHJlc3MgPSAoZm9ybURhdGEpID0+IHtcbiAgICAgICAgYWRkcmVzcy5wYXJzZUZyb21Gb3JtRGF0YShmb3JtRGF0YSlcbiAgICAgICAgaGFuZGxlRWRpdChhZGRyZXNzKVxuICAgIH1cblxuICAgIGNvbnN0IGFkZEFkZHJlc3MgPSAoZm9ybURhdGEpID0+IHtcbiAgICAgICAgYWRkcmVzcyA9IG5ldyBBZGRyZXNzKClcbiAgICAgICAgYWRkcmVzcy5wYXJzZUZyb21Gb3JtRGF0YShmb3JtRGF0YSlcbiAgICAgICAgaGFuZGxlQWRkKGFkZHJlc3MpXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4IGdhcC0xJ30+XG4gICAgICAgICAgICA8QnV0dG9uIHR5cGU9ezF9IHZhcmlhbnQ9XCJzdWNjZXNzXCIgb25DbGljaz17c2hvd0FkZE1vZGFsfSAvPlxuICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPXsyfSB2YXJpYW50PVwiaW5mb1wiIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBzaG93RWRpdE1vZGFsKGFkZHJlc3MpXG4gICAgICAgICAgICB9fSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICApXG59XG5cbkFkZHJlc3NNb2RhbENvbXBvbmVudC5wcm9wVHlwZXMgPSB7XG4gICAgaGFuZGxlQWRkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBoYW5kbGVFZGl0OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBhZGRyZXNzOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihBZGRyZXNzKSxcbiAgICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKVxufVxuXG5leHBvcnQgZGVmYXVsdCBBZGRyZXNzTW9kYWxDb21wb25lbnRcbiIsImltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgQWRkcmVzcyB9IGZyb20gJy4uLy4uL21vZGVsL2FkZHJlc3MnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5jb25zdCBBZGRyZXNzRGV0YWlsID0gKHthZGRyZXNzfSkgPT4ge1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPHNtYWxsPnthZGRyZXNzLmNvbXBhbnl9IHthZGRyZXNzLmZpcnN0bmFtZX0ge2FkZHJlc3MubGFzdG5hbWV9IHthZGRyZXNzLnN0cmVldH0ge2FkZHJlc3MuaG91c2VOdW1iZXJ9IHthZGRyZXNzLmNvdW50cnl9IHthZGRyZXNzLnppcH0ge2FkZHJlc3MuY2l0eX08L3NtYWxsPlxuICAgIClcbn1cblxuXG5BZGRyZXNzRGV0YWlsLnByb3BUeXBlcyA9IHtcbiAgICBhZGRyZXNzOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihBZGRyZXNzKVxufVxuICAgIFxuZXhwb3J0IGRlZmF1bHQgQWRkcmVzc0RldGFpbFxuIiwiaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBBc3luY1BhZ2luYXRlIH0gZnJvbSBcInJlYWN0LXNlbGVjdC1hc3luYy1wYWdpbmF0ZVwiXG5pbXBvcnQgeyBDb250YWN0IH0gZnJvbSAnLi4vLi4vbW9kZWwvY29udGFjdCdcbmltcG9ydCB7IEFkZHJlc3MgfSBmcm9tICcuLi8uLi9tb2RlbC9hZGRyZXNzJ1xuaW1wb3J0IHtjb250YWluZXJ9IGZyb20gXCJ0c3lyaW5nZS1uZW9cIlxuaW1wb3J0IHt1c2VFZmZlY3QsdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IE9yZGVyU3RhdGUgZnJvbSBcIi4uLy4uL3N0YXRlL29yZGVyXCJcbmltcG9ydCBBZGRyZXNzU2VydmljZSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYWRkcmVzc1wiXG5pbXBvcnQgQWRkcmVzc01vZGFsQ29tcG9uZW50IGZyb20gXCIuL0FkZHJlc3NNb2RhbENvbXBvbmVudFwiXG5pbXBvcnQgeyBTZWxlY3RMYWJlbCB9IGZyb20gJy4uL2Jhc2UvU2VsZWN0TGFiZWwnXG5pbXBvcnQgQWRkcmVzc0RldGFpbCBmcm9tICcuL0FkZHJlc3NEZXRhaWwnXG5pbXBvcnQgeyBTaG9wIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2hvcCdcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgQWRkcmVzc1NlbGVjdCA9ICh7YWRkcmVzcywgY29udGFjdCwgdHlwZSwgY2hhbmdlQWRkcmVzcywgbmFtZSwgc2hvcH0pID0+IHtcblxuICBjb25zdCBbY29udGFjdFV1aWQsIHNldENvbnRhY3RVdWlkXSA9IHVzZVN0YXRlKG51bGwpXG5cbiAgY29uc3QgW2xvY2FsQWRkcmVzcywgc2V0TG9jYWxBZGRyZXNzXSA9IHVzZVN0YXRlKG51bGwpXG5cbiAgY29uc3QgYWRkcmVzc19zZXJ2aWNlID0gbmV3IEFkZHJlc3NTZXJ2aWNlKClcblxuICBsZXQgb3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpXG4gIFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmKGNvbnRhY3QudXVpZCAhPSBcIlwiKSB7XG4gICAgICBzZXRDb250YWN0VXVpZChjb250YWN0LnV1aWQpXG4gICAgfVxuICB9LCBbY29udGFjdC51dWlkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldExvY2FsQWRkcmVzcyhhZGRyZXNzKVxuICB9LCBbYWRkcmVzc10pXG5cbiAgY29uc3Qgb3JkZXI6IE9yZGVyU3RhdGUgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclN0YXRlKVxuXG4gIGNvbnN0IGxvYWRPcHRpb25zID0gYXN5bmMgKHNlYXJjaFF1ZXJ5LCBsb2FkZWRPcHRpb25zKSA9PiB7XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgYWRkcmVzc19zZXJ2aWNlLmdldENvbnRhY3RBZGRyZXNzKGNvbnRhY3QudXVpZCwgdHlwZSlcblxuICAgIHJldHVybiB7XG4gICAgICBvcHRpb25zOiBkYXRhLFxuICAgICAgaGFzTW9yZTogZmFsc2UsXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQWRkID0gKGFkZHJlc3M6IEFkZHJlc3MpID0+IHtcbiAgICBhZGRyZXNzLnR5cGUgPSB0eXBlXG4gICAgYWRkcmVzcy5jb250YWN0LnV1aWQgPSBjb250YWN0LnV1aWRcbiAgICBhZGRyZXNzX3NlcnZpY2UuY3JlYXRlKGFkZHJlc3MpLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0TG9jYWxBZGRyZXNzKGFkZHJlc3MpXG4gICAgICBjaGFuZ2VBZGRyZXNzKGFkZHJlc3MsIHR5cGUpXG4gICAgICBzZXRDb250YWN0VXVpZChNYXRoLnJhbmRvbSgpKVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBoYW5kbGVFZGl0ID0gKGFkZHJlc3M6IEFkZHJlc3MpID0+IHtcbiAgICBhZGRyZXNzLnR5cGUgPSB0eXBlXG4gICAgYWRkcmVzcy5jb250YWN0LnV1aWQgPSBjb250YWN0LnV1aWRcbiAgICBhZGRyZXNzX3NlcnZpY2UudXBkYXRlKGFkZHJlc3MpLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0TG9jYWxBZGRyZXNzKGFkZHJlc3MpXG4gICAgICBjaGFuZ2VBZGRyZXNzKGFkZHJlc3MsIHR5cGUpXG4gICAgICBzZXRDb250YWN0VXVpZChNYXRoLnJhbmRvbSgpKVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBzZXRBZGRyZXNzSW5PcmRlciA9IChvcHRpb24pID0+IHtcbiAgICBzZXRMb2NhbEFkZHJlc3Mob3B0aW9uKVxuICAgIGNoYW5nZUFkZHJlc3Mob3B0aW9uLCB0eXBlKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT0nZmxleCBnYXAtMSc+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT0nZmxleC0xJz5cbiAgICAgICAgICA8QXN5bmNQYWdpbmF0ZVxuICAgICAgICAgICAgZGVmYXVsdE9wdGlvbnNcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17YWRkcmVzc31cbiAgICAgICAgICAgIGtleT17SlNPTi5zdHJpbmdpZnkoY29udGFjdFV1aWQpfVxuICAgICAgICAgICAgbG9hZE9wdGlvbnM9e2xvYWRPcHRpb25zfVxuICAgICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9eyhvcHRpb24pID0+IG9wdGlvbi51dWlkfVxuICAgICAgICAgICAgZ2V0T3B0aW9uTGFiZWw9eyhvcHRpb24pID0+IG9wdGlvbi5maXJzdG5hbWUgKyAnICcgKyBvcHRpb24ubGFzdG5hbWV9XG4gICAgICAgICAgICBvbkNoYW5nZT17c2V0QWRkcmVzc0luT3JkZXJ9XG4gICAgICAgICAgICBpc1NlYXJjaGFibGU9e2ZhbHNlfVxuICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPScnXG4gICAgICAgICAgICBjb21wb25lbnRzPXt7IENvbnRyb2w6IFNlbGVjdExhYmVsIH19XG4gICAgICAgIC8+XG4gICAgICAgIFxuICAgICAgICB7IGxvY2FsQWRkcmVzcyAmJiA8QWRkcmVzc0RldGFpbCBhZGRyZXNzPXtsb2NhbEFkZHJlc3N9IC8+fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ID5cbiAgICAgICAgPEFkZHJlc3NNb2RhbENvbXBvbmVudCBhZGRyZXNzPXtsb2NhbEFkZHJlc3N9IGhhbmRsZUFkZD17aGFuZGxlQWRkfSBoYW5kbGVFZGl0PXtoYW5kbGVFZGl0fSBzaG9wPXtzaG9wfS8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBcbiAgKVxufVxuXG5BZGRyZXNzU2VsZWN0LnByb3BUeXBlcyA9IHtcbiAgYWRkcmVzczogUHJvcFR5cGVzLmluc3RhbmNlT2YoQWRkcmVzcyksXG4gIGNvbnRhY3Q6IFByb3BUeXBlcy5pbnN0YW5jZU9mKENvbnRhY3QpLFxuICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcbiAgdHlwZTogUHJvcFR5cGVzLm51bWJlcixcbiAgY2hhbmdlQWRkcmVzczogUHJvcFR5cGVzLmZ1bmMsXG4gIG5hbWU6IFByb3BUeXBlcy5zdHJpbmdcbn1cblxuZXhwb3J0IGRlZmF1bHQgQWRkcmVzc1NlbGVjdFxuIiwiaW1wb3J0IHtpbmplY3QsIGF1dG9JbmplY3RhYmxlLCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZS1uZW9cIjtcbmltcG9ydCBUb2tlbiBmcm9tIFwiLi90b2tlblwiO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IEFjY291bnQgfSBmcm9tIFwiLi4vbW9kZWwvYWNjb3VudFwiO1xuaW1wb3J0IHsgU2hvcCB9IGZyb20gXCIuLi9tb2RlbC9zaG9wXCI7XG5cbkBzaW5nbGV0b24oKVxuQGF1dG9JbmplY3RhYmxlKClcbmNsYXNzIEFjY291bnRTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoQGluamVjdChUb2tlbikgdG9rZW4/OiBUb2tlbikge1xuICAgIHRoaXMudG9rZW4gPSB0b2tlblxuICB9XG5cbiAgYXN5bmMgZ2V0QWNjb3VudHMoc2hvcDogU2hvcCk6IFByb21pc2U8QWNjb3VudFtdPiB7XG5cbiAgICByZXR1cm4gYXdhaXQgYXhpb3MuZ2V0KCcvYXBwcy9hcGkvYWNjb3VudC9hbGxieXNob3AvJyArIHNob3AudXVpZCwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMudG9rZW4/LmN1cnJlbnRUb2tlblxuICAgICAgICB9XG4gICAgfSkudGhlbigoIHJlc3BvbnNlICkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgbGV0IGFjY291bnQgPSBuZXcgQWNjb3VudCgpO1xuICAgICAgICAgIGFjY291bnQudWlkID0gaXRlbS51aWQ7XG4gICAgICAgICAgYWNjb3VudC50aXRsZSA9IGl0ZW0udGl0bGU7XG4gICAgICAgICAgYWNjb3VudC5hcHBlbmRpeCA9IGl0ZW0uYXBwZW5kaXg7XG4gICAgICAgICAgYWNjb3VudC51dWlkID0gaXRlbS51dWlkO1xuICAgICAgICAgIHJldHVybiBhY2NvdW50O1xuICAgICAgICB9KVxuICAgIFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFjY291bnRTZXJ2aWNlXG4iLCJpbXBvcnQgeyBBc3luY1BhZ2luYXRlIH0gZnJvbSBcInJlYWN0LXNlbGVjdC1hc3luYy1wYWdpbmF0ZVwiXG5pbXBvcnQgQWNjb3VudFNlcnZpY2UgZnJvbSAnLi4vLi4vc2VydmljZXMvYWNjb3VudCdcbmltcG9ydCB7IGNvbnRhaW5lciB9IGZyb20gJ3RzeXJpbmdlLW5lbydcbmltcG9ydCBPcmRlclN0YXRlIGZyb20gJy4uLy4uL3N0YXRlL29yZGVyJ1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgU2hvcCB9IGZyb20gJy4uLy4uL21vZGVsL3Nob3AnXG5pbXBvcnQgT3JkZXIgZnJvbSBcIi4uLy4uL21vZGVsL29yZGVyXCJcbmltcG9ydCB7IFNlbGVjdExhYmVsIH0gZnJvbSBcIi4uL2Jhc2UvU2VsZWN0TGFiZWxcIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuY29uc3QgQWNjb3VudFNlbGVjdENvbXBvbmVudCA9ICh7c2hvcCwgb3JkZXJ9KSA9PiB7XG4gICAgICBcbiAgICBjb25zdCBbc2hvcFV1aWQsIHNldFNob3BVdWlkXSA9IHVzZVN0YXRlKG51bGwpXG5cbiAgICBjb25zdCBbYWNjb3VudCwgc2V0QWNjb3VudF0gPSB1c2VTdGF0ZSgwKVxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBzZXRTaG9wVXVpZChzaG9wLnV1aWQpXG4gICAgfSwgW3Nob3AudXVpZF0pXG5cbiAgICBjb25zdCBvcmRlclN0YXRlOiBPcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSlcblxuICAgIGNvbnN0IGxvYWRPcHRpb25zID0gYXN5bmMgKHNlYXJjaFF1ZXJ5LCBsb2FkZWRPcHRpb25zKSA9PiB7XG5cbiAgICAgICAgY29uc3QgYWNjb3VudF9zZXJ2aWNlID0gbmV3IEFjY291bnRTZXJ2aWNlKClcbiAgICBcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGFjY291bnRfc2VydmljZS5nZXRBY2NvdW50cyhzaG9wKVxuICAgIFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG9wdGlvbnM6IGRhdGEsXG4gICAgICAgICAgaGFzTW9yZTogZmFsc2UsXG4gICAgICAgIH0gXG4gICAgICB9XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzZXRBY2NvdW50KG9yZGVyLmFjY291bnQudXVpZClcbiAgICB9LCBbb3JkZXIuYWNjb3VudF0pXG5cbiAgICBjb25zdCBvbkNoYW5nZSA9IChvcHRpb24pID0+IHtcbiAgICAgICAgb3JkZXIuYWNjb3VudCA9IG9wdGlvblxuICAgICAgICBsZXQgb3JkZXJPYmogPSBvcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLmdldFZhbHVlKClcbiAgICAgICAgb3JkZXJPYmouYWNjb3VudCA9IG9wdGlvblxuICAgICAgICBvcmRlclN0YXRlLnNldEN1cnJlbnRPcmRlcihvcmRlck9iailcbiAgICAgICAgc2V0QWNjb3VudChvcHRpb24udWlkKVxuICAgIH1cblxuICAgIHJldHVybiAoXG5cbiAgICAgICAgICAgICA8QXN5bmNQYWdpbmF0ZVxuICAgICAgICAgICAgICAgIGRlZmF1bHRPcHRpb25zXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHthY2NvdW50ID09IDAgPyBcImJvcmRlciBib3JkZXItZGFuZ2VyXCIgOiBcIlwifWB9XG4gICAgICAgICAgICAgICAga2V5PXtKU09OLnN0cmluZ2lmeShzaG9wVXVpZCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtvcmRlci5hY2NvdW50fVxuICAgICAgICAgICAgICAgIGNvbXBvbmVudHM9e3tDb250cm9sOiBTZWxlY3RMYWJlbH19XG4gICAgICAgICAgICAgICAgbmFtZT17J0Zpcm1hJ31cbiAgICAgICAgICAgICAgICBsb2FkT3B0aW9ucz17bG9hZE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9JydcbiAgICAgICAgICAgICAgICBnZXRPcHRpb25WYWx1ZT17KG9wdGlvbikgPT4gb3B0aW9uLnV1aWR9XG4gICAgICAgICAgICAgICAgZ2V0T3B0aW9uTGFiZWw9eyhvcHRpb24pID0+IG9wdGlvbi50aXRsZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgICAgICAgaXNTZWFyY2hhYmxlPXt0cnVlfVxuICAgICAgICAgICAgLz5cbiAgICApICBcbn0gXG5cbkFjY291bnRTZWxlY3RDb21wb25lbnQucHJvcFR5cGVzID0ge1xuICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcbiAgb3JkZXI6IFByb3BUeXBlcy5pbnN0YW5jZU9mKE9yZGVyKSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgQWNjb3VudFNlbGVjdENvbXBvbmVudFxuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBDb250YWN0U2VsZWN0IGZyb20gJy4vQ29udGFjdFNlbGVjdCdcbmltcG9ydCBBZGRyZXNzU2VsZWN0IGZyb20gJy4vQWRkcmVzc1NlbGVjdCdcbmltcG9ydCB7Q29udGFjdH0gZnJvbSAnLi4vLi4vbW9kZWwvY29udGFjdCdcbmltcG9ydCB7QWRkcmVzc30gZnJvbSAnLi4vLi4vbW9kZWwvYWRkcmVzcydcbmltcG9ydCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnXG5pbXBvcnQgT3JkZXJTdGF0ZSBmcm9tICcuLi8uLi9zdGF0ZS9vcmRlcidcbmltcG9ydCB7Y29udGFpbmVyfSBmcm9tIFwidHN5cmluZ2UtbmVvXCJcbmltcG9ydCBBY2NvdW50U2VsZWN0Q29tcG9uZW50IGZyb20gJy4uL2FjY291bnQvQWNjb3VudFNlbGVjdENvbXBvbmVudCdcbmltcG9ydCBPcmRlciBmcm9tICcuLi8uLi9tb2RlbC9vcmRlcidcbmltcG9ydCB7IFNob3AgfSBmcm9tICcuLi8uLi9tb2RlbC9zaG9wJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBDb250YWN0Q29tcG9uZW50ID0gKHtvcmRlciwgc2hvcH0pID0+IHtcblxuICAgIGxldCBvcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSlcblxuICAgIGNvbnN0IFtjb250YWN0LCBzZXRDb250YWN0XSA9IHVzZVN0YXRlPENvbnRhY3Q+KG5ldyBDb250YWN0KCkpXG5cbiAgICBjb25zdCBjaGFuZ2VBZGRyZXNzID0gKGFkZHJlc3M6IEFkZHJlc3MsIHR5cGU6IE51bWJlcikgPT4ge1xuICAgICAgICBpZih0eXBlID09IDEpIHtcbiAgICAgICAgICAgIG9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkudmFsdWUuaW52b2ljZUFkZHJlc3MgPSBhZGRyZXNzXG4gICAgICAgICAgICBvcmRlci5pbnZvaWNlQWRkcmVzcyA9IGFkZHJlc3NcbiAgICAgICAgfVxuICAgICAgICBpZih0eXBlID09IDIpIHtcbiAgICAgICAgICAgIG9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkudmFsdWUuZGVsaXZlcnlBZGRyZXNzID0gYWRkcmVzc1xuICAgICAgICAgICAgb3JkZXIuZGVsaXZlcnlBZGRyZXNzID0gYWRkcmVzc1xuICAgICAgICB9XG4gICAgICAgIGlmKHR5cGUgPT0gMykge1xuICAgICAgICAgICAgb3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS52YWx1ZS5zZW5kZXJBZGRyZXNzID0gYWRkcmVzc1xuICAgICAgICAgICAgb3JkZXIuc2VuZGVyQWRkcmVzcyA9IGFkZHJlc3NcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb250YWN0U2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3A9e3Nob3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3NldENvbnRhY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxBY2NvdW50U2VsZWN0Q29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcD17c2hvcH0gb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtMVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIHsgb3JkZXIuY29udGFjdC51dWlkICE9IFwiXCIgJiYgPEFkZHJlc3NTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M9e29yZGVyLmludm9pY2VBZGRyZXNzfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFjdD17b3JkZXIuY29udGFjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZUFkZHJlc3M9e2NoYW5nZUFkZHJlc3N9XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSdSZWNobnVuZ3NhZHJlc3NlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3A9e3Nob3B9XG4gICAgICAgICAgICAgICAgICAgIC8+IH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICB7IG9yZGVyLmNvbnRhY3QudXVpZCAhPSBcIlwiICYmIDxBZGRyZXNzU2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzPXtvcmRlci5kZWxpdmVyeUFkZHJlc3N9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWN0PXtvcmRlci5jb250YWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlQWRkcmVzcz17Y2hhbmdlQWRkcmVzc31cbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9J0xpZWZlcmFkcmVzc2UnXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXsyfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvcD17c2hvcH1cbiAgICAgICAgICAgICAgICAgICAgLz4gfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIHsgb3JkZXIuY29udGFjdC51dWlkICE9IFwiXCIgJiYgPEFkZHJlc3NTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M9e29yZGVyLnNlbmRlckFkZHJlc3N9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VBZGRyZXNzPXtjaGFuZ2VBZGRyZXNzfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFjdD17b3JkZXIuY29udGFjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9J0Fic2VuZGVyYWRyZXNzZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9ezN9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG9wPXtzaG9wfVxuICAgICAgICAgICAgICAgICAgICAvPiB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC8+XG4gICAgKSAgXG59XG5cbkNvbnRhY3RDb21wb25lbnQucHJvcFR5cGVzID0ge1xuICAgIG9yZGVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihPcmRlciksXG4gICAgc2hvcDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2hvcCksXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgQ29udGFjdENvbXBvbmVudFxuIiwiaW1wb3J0IFNlbGVjdCBmcm9tICdyZWFjdC1zZWxlY3QnXG5pbXBvcnQge3VzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY29udGFpbmVyIH0gZnJvbSAndHN5cmluZ2UtbmVvJ1xuaW1wb3J0IE9yZGVyU3RhdGUgZnJvbSAnLi4vLi4vc3RhdGUvb3JkZXInXG5pbXBvcnQgeyBTZWxlY3RMYWJlbCB9IGZyb20gJy4uL2Jhc2UvU2VsZWN0TGFiZWwnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IFR5cGVTZWxlY3RDb21wb25lbnQgPSAoe29yZGVyfSkgPT4ge1xuICAgIFxuICAgIGNvbnN0IFt0eXBlLCBzZXRUeXBlXSA9IHVzZVN0YXRlKDApO1xuICAgIGNvbnN0IG9yZGVyU3RhdGU6IE9yZGVyU3RhdGUgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclN0YXRlKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSBbXG4gICAgICAgIHsgdmFsdWU6IDEsIGxhYmVsOiAnQXVmdHJhZycgfSxcbiAgICAgICAgeyB2YWx1ZTogMiwgbGFiZWw6ICdBbmdlYm90JyB9LFxuICAgICAgICB7IHZhbHVlOiAzLCBsYWJlbDogJ1N0b3JubycgfSxcbiAgICAgICAgeyB2YWx1ZTogNCwgbGFiZWw6ICdHdXRzY2hyaWZ0JyB9LFxuICAgICAgICB7IHZhbHVlOiA1LCBsYWJlbDogJ1JlY2hudW5nJyB9LFxuICAgICAgICB7IHZhbHVlOiA2LCBsYWJlbDogJ1RlaWxyZWNobnVuZycgfSxcbiAgICAgICAgeyB2YWx1ZTogNywgbGFiZWw6ICdUZWlsc3Rvcm5vJyB9LFxuICAgIF07XG5cbiAgICBjb25zdCBvbkNoYW5nZSA9IChvcHRpb24pID0+IHtcbiAgICAgICAgbGV0IG9yZGVyID0gb3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS52YWx1ZTtcbiAgICAgICAgb3JkZXIudHlwZSA9IG9wdGlvbi52YWx1ZTtcbiAgICAgICAgb3JkZXJTdGF0ZS5zZXRDdXJyZW50T3JkZXIob3JkZXIpO1xuICAgICAgICBzZXRUeXBlKG9wdGlvbik7XG4gICAgfTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNldFR5cGUob3JkZXIudHlwZSk7XG4gICAgfSwgW29yZGVyLnR5cGVdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHt0eXBlID09IDAgPyBcImJvcmRlciBib3JkZXItZGFuZ2VyXCIgOiBcIlwifWB9XG4gICAgICAgICAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e29wdGlvbnMuZmlsdGVyKChlKSA9PiBlLnZhbHVlID09IHR5cGUpLnBvcCgpfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb25zLmZpbHRlcigoZSkgPT4gZS52YWx1ZSA9PSB0eXBlKS5wb3AoKX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgICAgICAgY29tcG9uZW50cz17eyBDb250cm9sOiBTZWxlY3RMYWJlbCB9fVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwiVHlwXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICk7ICBcbn0gXG5cbmV4cG9ydCBkZWZhdWx0IFR5cGVTZWxlY3RDb21wb25lbnQ7XG4iLCJpbXBvcnQge2F1dG9JbmplY3RhYmxlLCBpbmplY3QsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiXG5pbXBvcnQgVG9rZW4gZnJvbSBcIi4vdG9rZW5cIlxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJ1xuaW1wb3J0IHsgU2hvcCB9IGZyb20gXCIuLi9tb2RlbC9zaG9wXCJcblxuQHNpbmdsZXRvbigpXG5AYXV0b0luamVjdGFibGUoKVxuY2xhc3MgU2hvcFNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKEBpbmplY3QoVG9rZW4pIHRva2VuPzogVG9rZW4pIHtcbiAgICB0aGlzLnRva2VuID0gdG9rZW5cbiAgfVxuXG4gIGFzeW5jIGdldFNob3BzKCk6IFByb21pc2U8U2hvcFtdPiB7XG5cbiAgICByZXR1cm4gYXdhaXQgYXhpb3MuZ2V0KCcvYXBwcy9hcGkvc2hvcHMnLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbi5jdXJyZW50VG9rZW5cbiAgICAgICAgfVxuICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgIGxldCBzaG9wID0gbmV3IFNob3AoKVxuICAgICAgICAgIHNob3AucGFyc2VGcm9tSnNvbih7c2hvcDogaXRlbX0pXG4gICAgICAgICAgcmV0dXJuIHNob3BcbiAgICAgICAgfSlcbiAgICBcbiAgICB9KVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNob3BTZXJ2aWNlXG4iLCJpbXBvcnQgeyBBc3luY1BhZ2luYXRlIH0gZnJvbSBcInJlYWN0LXNlbGVjdC1hc3luYy1wYWdpbmF0ZVwiXG5pbXBvcnQgU2hvcFNlcnZpY2UgZnJvbSAnLi4vLi4vc2VydmljZXMvc2hvcCdcbmltcG9ydCB7IGNvbnRhaW5lciB9IGZyb20gJ3RzeXJpbmdlLW5lbydcbmltcG9ydCBPcmRlclN0YXRlIGZyb20gJy4uLy4uL3N0YXRlL29yZGVyJ1xuaW1wb3J0IHsgU2VsZWN0TGFiZWwgfSBmcm9tICcuLi9iYXNlL1NlbGVjdExhYmVsJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBTaG9wU2VsZWN0Q29tcG9uZW50ID0gKHByb3BzKSA9PiB7XG4gICAgXG4gICAgY29uc3Qgb3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpXG5cbiAgICBjb25zdCBzaG9wX3NlcnZpY2UgPSBjb250YWluZXIucmVzb2x2ZShTaG9wU2VydmljZSlcbiAgICBjb25zdCBsb2FkT3B0aW9ucyA9IGFzeW5jIChzZWFyY2hRdWVyeSwgbG9hZGVkT3B0aW9ucykgPT4ge1xuXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBzaG9wX3NlcnZpY2UuZ2V0U2hvcHMoKVxuICAgIFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG9wdGlvbnM6IGRhdGEsXG4gICAgICAgICAgaGFzTW9yZTogZmFsc2UsXG4gICAgICAgIH0gXG4gICAgICB9XG4gICAgXG5cbiAgICBjb25zdCBvbkNoYW5nZSA9IChvcHRpb24pID0+IHtcbiAgICAgICAgb3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS52YWx1ZS5zaG9wID0gb3B0aW9uXG4gICAgICAgIHByb3BzLmNoYW5nZShvcHRpb24pXG4gICAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgIDxBc3luY1BhZ2luYXRlXG4gICAgICAgICAgICAgICAgZGVmYXVsdE9wdGlvbnNcbiAgICAgICAgICAgICAgICB2YWx1ZT17cHJvcHMuc2hvcH1cbiAgICAgICAgICAgICAgICBjb21wb25lbnRzPXt7IENvbnRyb2w6IFNlbGVjdExhYmVsIH19XG4gICAgICAgICAgICAgICAgbG9hZE9wdGlvbnM9e2xvYWRPcHRpb25zfVxuICAgICAgICAgICAgICAgIGdldE9wdGlvblZhbHVlPXsob3B0aW9uKSA9PiBvcHRpb24uaWR9XG4gICAgICAgICAgICAgICAgZ2V0T3B0aW9uTGFiZWw9eyhvcHRpb24pID0+IG9wdGlvbi5uYW1lfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICAgICAgICBpc1NlYXJjaGFibGU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7cHJvcHMuc2hvcC51dWlkID09IFwiXCIgPyBcImJvcmRlciBib3JkZXItZGFuZ2VyXCIgOiBcImJvcmRlciBib3JkZXItc2xhdGUtMjAwXCJ9YH1cbiAgICAgICAgICAgICAgICBuYW1lPSdTaG9wJ1xuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIFxuICAgICAgICA8L2Rpdj5cbiAgICApICBcbn0gXG5cbmV4cG9ydCBkZWZhdWx0IFNob3BTZWxlY3RDb21wb25lbnRcbiIsImltcG9ydCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjb250YWluZXIgfSBmcm9tICd0c3lyaW5nZS1uZW8nXG5pbXBvcnQgT3JkZXJTdGF0ZSBmcm9tJy4uLy4uL3N0YXRlL29yZGVyJ1xuaW1wb3J0IHsgU2VsZWN0TGFiZWwgfSBmcm9tICcuLi9iYXNlL1NlbGVjdExhYmVsJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBEcmFmdENvbXBvbmVudCA9ICh7b3JkZXJ9KSA9PiB7XG4gICAgXG4gICAgY29uc3QgW2RyYWZ0LCBzZXREcmFmdF0gPSB1c2VTdGF0ZSh0cnVlKVxuICAgIGNvbnN0IG9yZGVyU3RhdGU6IE9yZGVyU3RhdGUgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclN0YXRlKVxuXG4gICAgY29uc3Qgb25DaGFuZ2UgPSAob3B0aW9uKSA9PiB7XG4gICAgICAgIGxldCBvcmRlck9iaiA9IG9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkudmFsdWVcbiAgICAgICAgb3JkZXJPYmouZHJhZnQgPSAhZHJhZnRcbiAgICAgICAgb3JkZXJTdGF0ZS5zZXRDdXJyZW50T3JkZXIob3JkZXJPYmopXG4gICAgICAgIHNldERyYWZ0KCFkcmFmdClcbiAgICB9XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzZXREcmFmdChvcmRlci5kcmFmdClcbiAgICB9LCBbb3JkZXIuZHJhZnRdKVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJnYXAtMlwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCIxXCIgY2xhc3NOYW1lPVwic3Itb25seSBwZWVyXCIgZGVmYXVsdENoZWNrZWQ9e2RyYWZ0fSBvbkNoYW5nZT17KGUpID0+IG9uQ2hhbmdlKGUpfS8+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgdy0xMSBoLTYgYmctZ3JheS0yMDAgcm91bmRlZC1mdWxsIHBlZXIgcGVlci1mb2N1czpyaW5nLTQgcGVlci1mb2N1czpyaW5nLWJsdWUtMzAwIGRhcms6cGVlci1mb2N1czpyaW5nLWJsdWUtODAwIGRhcms6YmctZ3JheS03MDAgcGVlci1jaGVja2VkOmFmdGVyOnRyYW5zbGF0ZS14LWZ1bGwgcnRsOnBlZXItY2hlY2tlZDphZnRlcjotdHJhbnNsYXRlLXgtZnVsbCBwZWVyLWNoZWNrZWQ6YWZ0ZXI6Ym9yZGVyLXdoaXRlIGFmdGVyOmNvbnRlbnQtWycnXSBhZnRlcjphYnNvbHV0ZSBhZnRlcjp0b3AtMC41IGFmdGVyOnN0YXJ0LVsycHhdIGFmdGVyOmJnLXdoaXRlIGFmdGVyOmJvcmRlci1ncmF5LTMwMCBhZnRlcjpib3JkZXIgYWZ0ZXI6cm91bmRlZC1mdWxsIGFmdGVyOmgtNSBhZnRlcjp3LTUgYWZ0ZXI6dHJhbnNpdGlvbi1hbGwgZGFyazpib3JkZXItZ3JheS02MDAgcGVlci1jaGVja2VkOmJnLWJsdWUtNjAwXCI+PC9kaXY+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1zLTMgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC1ncmF5LTMwMFwiPkVudHd1cmY8L3NwYW4+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICApICBcbn0gXG5cbmV4cG9ydCBkZWZhdWx0IERyYWZ0Q29tcG9uZW50XG4iLCJpbXBvcnQge2luamVjdCwgYXV0b0luamVjdGFibGUsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiO1xuaW1wb3J0IFRva2VuIGZyb20gXCIuL3Rva2VuXCI7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IE9yZGVyIGZyb20gXCIuLi9tb2RlbC9vcmRlclwiO1xuXG5Ac2luZ2xldG9uKClcbkBhdXRvSW5qZWN0YWJsZSgpXG5jbGFzcyBPcmRlclNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKEBpbmplY3QoVG9rZW4pIHRva2VuPzogVG9rZW4pIHtcbiAgICAgICAgdGhpcy50b2tlbiA9IHRva2VuXG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0T3JkZXIodXVpZDogU3RyaW5nKTogUHJvbWlzZTxPcmRlcj4ge1xuXG4gICAgICAgIHJldHVybiBhd2FpdCBheGlvcy5wb3N0KCcvYXBwcy9hcGkvb3JkZXIvZ2V0b25lYnl1dWlkJywge3V1aWQ6IHV1aWR9ICx7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLnRva2VuPy5jdXJyZW50VG9rZW5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkudGhlbigoIHJlc3BvbnNlICkgPT4ge1xuXG4gICAgICAgICAgICBsZXQgb3JkZXIgPSBuZXcgT3JkZXIoKTtcbiAgICAgICAgICAgIG9yZGVyLnBhcnNlRnJvbUpzb24ocmVzcG9uc2UuZGF0YSk7XG5cbiAgICAgICAgICAgIHJldHVybiBvcmRlcjtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuXG4gICAgYXN5bmMgc2F2ZU9yZGVyKG9yZGVyOiBPcmRlcik6IFByb21pc2U8T3JkZXI+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGF4aW9zLnBvc3QoJy9hcHBzL2FwaS9vcmRlci9jcmVhdGUnLCBvcmRlciAse1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2FsY09yZGVyKG9yZGVyOiBPcmRlcik6IFByb21pc2U8T3JkZXI+IHtcblxuICAgICAgICByZXR1cm4gYXdhaXQgYXhpb3MucG9zdCgnL2FwcHMvYXBpL29yZGVyL2NhbGMnLCBvcmRlciAse1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCByZXNwb25zZSApID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgICAgICB9KTtcbiAgICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTZXJ2aWNlXG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmludGVyZmFjZSBJUHJvcHMge1xuICBwcmljZTogbnVtYmVyO1xufVxuXG5jb25zdCBDdXJyZW5jeTogUmVhY3QuRkM8SVByb3BzPiA9ICh7IHByaWNlIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgIHtJbnRsLk51bWJlckZvcm1hdCgnZGUtREUnLCB7XG4gICAgICBzdHlsZTogJ2N1cnJlbmN5JywgXG4gICAgICBjdXJyZW5jeTogJ0VVUidcbiAgICAgIH0pLmZvcm1hdChwcmljZS8xMDApfVxuICAgIDwvPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBDdXJyZW5jeTtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgT3JkZXIgZnJvbSBcIi4uLy4uL21vZGVsL29yZGVyXCJcbmltcG9ydCB7Y29udGFpbmVyfSBmcm9tIFwidHN5cmluZ2UtbmVvXCJcbmltcG9ydCBPcmRlclN0YXRlIGZyb20gXCIuLi8uLi9zdGF0ZS9vcmRlclwiXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IE9yZGVyU2VydmljZSBmcm9tIFwiLi4vLi4vc2VydmljZXMvb3JkZXJcIlxuaW1wb3J0IEN1cnJlbmN5IGZyb20gXCIuLi9iYXNlL0N1cnJlbmN5XCJcblxudHlwZSBNeVN0YXRlID0ge1xuICAgIG9yZGVyOiBPcmRlciAvLyBsaWtlIHRoaXNcbn1cblxuY2xhc3MgQ2FsY0NvbXBvbmVudCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDx7ICB9LE15U3RhdGU+IHtcbiAgICBvcmRlclN0YXRlOiBPcmRlclN0YXRlXG4gICAgb3JkZXJTZXJ2aWNlOiBPcmRlclNlcnZpY2VcblxuICAgIHN0YXRlOiBNeVN0YXRlID0ge1xuICAgICAgICBvcmRlcjogbmV3IE9yZGVyKClcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcylcbiAgICAgICAgdGhpcy5vcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSlcbiAgICAgICAgdGhpcy5vcmRlclNlcnZpY2UgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclNlcnZpY2UpXG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIHRoaXMub3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS5waXBlKGRlYm91bmNlVGltZSgyMDAwKSkuc3Vic2NyaWJlKChlKSA9PiB0aGlzLmNhbGMoZSkpXG4gICAgfVxuXG4gICAgYXN5bmMgY2FsYyhlOiBPcmRlcikge1xuICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgdGhpcy5vcmRlclNlcnZpY2UuY2FsY09yZGVyKGUpXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoKCkgPT4gKHtcbiAgICAgICAgICAgIG9yZGVyOiByZXN1bHQsXG4gICAgICAgIH0pKVxuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxoMz5cbiAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3NOYW1lPVwidGV4dC1ib2R5LXNlY29uZGFyeVwiPiBOZXR0bzogPEN1cnJlbmN5IHByaWNlPXt0aGlzLnN0YXRlLm9yZGVyLm5ldH0gLz4gKyBNd1N0LjogPEN1cnJlbmN5IHByaWNlPXt0aGlzLnN0YXRlLm9yZGVyLnZhdH0gLz4gPTwvc21hbGw+IEJydXR0bzogPEN1cnJlbmN5IHByaWNlPXt0aGlzLnN0YXRlLm9yZGVyLmdyb3NzfSAvPlxuICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgKVxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ2FsY0NvbXBvbmVudFxuIiwiaW1wb3J0IFR5cGVTZWxlY3RDb21wb25lbnQgZnJvbSAnLi4vdHlwZS9UeXBlU2VsZWN0Q29tcG9uZW50J1xuaW1wb3J0IFNob3BTZWxlY3RDb21wb25lbnQgZnJvbSAnLi4vc2hvcC9TaG9wU2VsZWN0Q29tcG9uZW50J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCB7U2hvcH0gZnJvbSBcIi4uLy4uL21vZGVsL3Nob3BcIlxuaW1wb3J0IERyYWZ0Q29tcG9uZW50IGZyb20gXCIuLi9kcmFmdC9EcmFmdENvbXBvbmVudFwiXG5pbXBvcnQgT3JkZXIgZnJvbSBcIi4uLy4uL21vZGVsL29yZGVyXCJcbmltcG9ydCBDYWxjQ29tcG9uZW50IGZyb20gJy4uL2NhbGMvQ2FsY0NvbXBvbmVudCdcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgVG9wQmFyQ29tcG9uZW50ID0gKHtzaG9wLCBvcmRlciwgY2hhbmdlfSkgPT4ge1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICA8RHJhZnRDb21wb25lbnQgb3JkZXI9e29yZGVyfSAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgPFR5cGVTZWxlY3RDb21wb25lbnQgb3JkZXI9e29yZGVyfSAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgIDxTaG9wU2VsZWN0Q29tcG9uZW50IHNob3A9e3Nob3B9IGNoYW5nZT17Y2hhbmdlfSAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxDYWxjQ29tcG9uZW50IC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICkgIFxufVxuXG5Ub3BCYXJDb21wb25lbnQucHJvcFR5cGVzID0ge1xuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxuICAgIG9yZGVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihPcmRlciksXG4gICAgY2hhbmdlOiBQcm9wVHlwZXMuZnVuY1xufVxuXG5leHBvcnQgZGVmYXVsdCBUb3BCYXJDb21wb25lbnRcbiIsImV4cG9ydCBjbGFzcyBQcm9kdWN0R3JvdXAge1xuICAgIGlkOiBOdW1iZXIgPSAwXG4gICAgbGFiZWw6IFN0cmluZyA9IFwiXCJcbiAgICB1dWlkOiBTdHJpbmcgPSBcIlwiXG4gICAgLy9vcHRpb25zOiBQcm9kdWN0R3JvdXBbXSA9IFtdXG59IiwiaW1wb3J0IHtpbmplY3QsIGF1dG9JbmplY3RhYmxlLCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZS1uZW9cIjtcbmltcG9ydCBUb2tlbiBmcm9tIFwiLi90b2tlblwiO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IFNob3AgfSBmcm9tIFwiLi4vbW9kZWwvc2hvcFwiO1xuaW1wb3J0IHtQcm9kdWN0R3JvdXB9IGZyb20gXCIuLi9tb2RlbC9wcm9kdWN0R3JvdXBcIjtcblxuQHNpbmdsZXRvbigpXG5AYXV0b0luamVjdGFibGUoKVxuY2xhc3MgUHJvZHVjdEdyb3VwU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKEBpbmplY3QoVG9rZW4pIHRva2VuPzogVG9rZW4pIHtcbiAgICB0aGlzLnRva2VuID0gdG9rZW5cbiAgfVxuXG4gIGFzeW5jIGdldFByb2R1Y3RHcm91cHMoc2VhcmNoUXVlcnk6IFN0cmluZywgc2hvcDogU2hvcCk6IFByb21pc2U8UHJvZHVjdEdyb3VwW10+IHtcblxuICAgIHJldHVybiBhd2FpdCBheGlvcy5nZXQoJy9hcHBzL2FwaS9wcm9kdWN0Z3JvdXAvZ2V0dHJlZS8nICsgc2hvcC51dWlkICsgJz90ZXJtPScgKyBzZWFyY2hRdWVyeSwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMudG9rZW4uY3VycmVudFRva2VuXG4gICAgICAgIH1cbiAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG5cbiAgICAgICAgbGV0IHRlbXA6IFByb2R1Y3RHcm91cFtdID0gW107XG5cbiAgICAgICAgcmVzcG9uc2UuZGF0YS5kYXRhLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgbGV0IHBnID0gbmV3IFByb2R1Y3RHcm91cDtcbiAgICAgICAgICBwZy5pZCA9IGl0ZW0uaWQ7XG4gICAgICAgICAgcGcubGFiZWwgPSBpdGVtLnRpdGxlO1xuICAgICAgICAgIHBnLnV1aWQgPSBpdGVtLnV1aWQ7XG4gICAgICAgICAgXG4gICAgICAgICAgdGVtcC5wdXNoKHBnKTtcblxuICAgICAgICAgIGl0ZW0uY2hpbGRyZW4ubWFwKChzdWI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBsZXQgc3BnID0gbmV3IFByb2R1Y3RHcm91cDtcbiAgICAgICAgICAgICAgc3BnLmlkID0gc3ViLmlkO1xuICAgICAgICAgICAgICBzcGcubGFiZWwgPSBcIi0tIFwiICsgc3ViLnRpdGxlO1xuICAgICAgICAgICAgICBzcGcudXVpZCA9IHN1Yi51dWlkO1xuICAgICAgICAgICAgICB0ZW1wLnB1c2goc3BnKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiBwZztcbiAgICAgICAgfSlcbiAgICBcbiAgICAgICAgcmV0dXJuIHRlbXA7XG4gICAgfSlcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcm9kdWN0R3JvdXBTZXJ2aWNlXG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5Jyk7XG52YXIgX29iamVjdFNwcmVhZCA9IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0U3ByZWFkMicpO1xudmFyIF9zbGljZWRUb0FycmF5ID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5Jyk7XG52YXIgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllcycpO1xudmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcbnZhciBpbmRleCA9IHJlcXVpcmUoJy4vaW5kZXgtNjY1YzRlZDguY2pzLnByb2QuanMnKTtcblxudmFyIF9leGNsdWRlZCA9IFtcImRlZmF1bHRPcHRpb25zXCIsIFwiY2FjaGVPcHRpb25zXCIsIFwibG9hZE9wdGlvbnNcIiwgXCJvcHRpb25zXCIsIFwiaXNMb2FkaW5nXCIsIFwib25JbnB1dENoYW5nZVwiLCBcImZpbHRlck9wdGlvblwiXTtcbmZ1bmN0aW9uIHVzZUFzeW5jKF9yZWYpIHtcbiAgdmFyIF9yZWYkZGVmYXVsdE9wdGlvbnMgPSBfcmVmLmRlZmF1bHRPcHRpb25zLFxuICAgIHByb3BzRGVmYXVsdE9wdGlvbnMgPSBfcmVmJGRlZmF1bHRPcHRpb25zID09PSB2b2lkIDAgPyBmYWxzZSA6IF9yZWYkZGVmYXVsdE9wdGlvbnMsXG4gICAgX3JlZiRjYWNoZU9wdGlvbnMgPSBfcmVmLmNhY2hlT3B0aW9ucyxcbiAgICBjYWNoZU9wdGlvbnMgPSBfcmVmJGNhY2hlT3B0aW9ucyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcmVmJGNhY2hlT3B0aW9ucyxcbiAgICBwcm9wc0xvYWRPcHRpb25zID0gX3JlZi5sb2FkT3B0aW9ucztcbiAgICBfcmVmLm9wdGlvbnM7XG4gICAgdmFyIF9yZWYkaXNMb2FkaW5nID0gX3JlZi5pc0xvYWRpbmcsXG4gICAgcHJvcHNJc0xvYWRpbmcgPSBfcmVmJGlzTG9hZGluZyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcmVmJGlzTG9hZGluZyxcbiAgICBwcm9wc09uSW5wdXRDaGFuZ2UgPSBfcmVmLm9uSW5wdXRDaGFuZ2UsXG4gICAgX3JlZiRmaWx0ZXJPcHRpb24gPSBfcmVmLmZpbHRlck9wdGlvbixcbiAgICBmaWx0ZXJPcHRpb24gPSBfcmVmJGZpbHRlck9wdGlvbiA9PT0gdm9pZCAwID8gbnVsbCA6IF9yZWYkZmlsdGVyT3B0aW9uLFxuICAgIHJlc3RTZWxlY3RQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBfZXhjbHVkZWQpO1xuICB2YXIgcHJvcHNJbnB1dFZhbHVlID0gcmVzdFNlbGVjdFByb3BzLmlucHV0VmFsdWU7XG4gIHZhciBsYXN0UmVxdWVzdCA9IFJlYWN0LnVzZVJlZih1bmRlZmluZWQpO1xuICB2YXIgbW91bnRlZCA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gIHZhciBfdXNlU3RhdGUgPSBSZWFjdC51c2VTdGF0ZShBcnJheS5pc0FycmF5KHByb3BzRGVmYXVsdE9wdGlvbnMpID8gcHJvcHNEZWZhdWx0T3B0aW9ucyA6IHVuZGVmaW5lZCksXG4gICAgX3VzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZSwgMiksXG4gICAgZGVmYXVsdE9wdGlvbnMgPSBfdXNlU3RhdGUyWzBdLFxuICAgIHNldERlZmF1bHRPcHRpb25zID0gX3VzZVN0YXRlMlsxXTtcbiAgdmFyIF91c2VTdGF0ZTMgPSBSZWFjdC51c2VTdGF0ZSh0eXBlb2YgcHJvcHNJbnB1dFZhbHVlICE9PSAndW5kZWZpbmVkJyA/IHByb3BzSW5wdXRWYWx1ZSA6ICcnKSxcbiAgICBfdXNlU3RhdGU0ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlMywgMiksXG4gICAgc3RhdGVJbnB1dFZhbHVlID0gX3VzZVN0YXRlNFswXSxcbiAgICBzZXRTdGF0ZUlucHV0VmFsdWUgPSBfdXNlU3RhdGU0WzFdO1xuICB2YXIgX3VzZVN0YXRlNSA9IFJlYWN0LnVzZVN0YXRlKHByb3BzRGVmYXVsdE9wdGlvbnMgPT09IHRydWUpLFxuICAgIF91c2VTdGF0ZTYgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGU1LCAyKSxcbiAgICBpc0xvYWRpbmcgPSBfdXNlU3RhdGU2WzBdLFxuICAgIHNldElzTG9hZGluZyA9IF91c2VTdGF0ZTZbMV07XG4gIHZhciBfdXNlU3RhdGU3ID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSxcbiAgICBfdXNlU3RhdGU4ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlNywgMiksXG4gICAgbG9hZGVkSW5wdXRWYWx1ZSA9IF91c2VTdGF0ZThbMF0sXG4gICAgc2V0TG9hZGVkSW5wdXRWYWx1ZSA9IF91c2VTdGF0ZThbMV07XG4gIHZhciBfdXNlU3RhdGU5ID0gUmVhY3QudXNlU3RhdGUoW10pLFxuICAgIF91c2VTdGF0ZTEwID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlOSwgMiksXG4gICAgbG9hZGVkT3B0aW9ucyA9IF91c2VTdGF0ZTEwWzBdLFxuICAgIHNldExvYWRlZE9wdGlvbnMgPSBfdXNlU3RhdGUxMFsxXTtcbiAgdmFyIF91c2VTdGF0ZTExID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLFxuICAgIF91c2VTdGF0ZTEyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlMTEsIDIpLFxuICAgIHBhc3NFbXB0eU9wdGlvbnMgPSBfdXNlU3RhdGUxMlswXSxcbiAgICBzZXRQYXNzRW1wdHlPcHRpb25zID0gX3VzZVN0YXRlMTJbMV07XG4gIHZhciBfdXNlU3RhdGUxMyA9IFJlYWN0LnVzZVN0YXRlKHt9KSxcbiAgICBfdXNlU3RhdGUxNCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTEzLCAyKSxcbiAgICBvcHRpb25zQ2FjaGUgPSBfdXNlU3RhdGUxNFswXSxcbiAgICBzZXRPcHRpb25zQ2FjaGUgPSBfdXNlU3RhdGUxNFsxXTtcbiAgdmFyIF91c2VTdGF0ZTE1ID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSxcbiAgICBfdXNlU3RhdGUxNiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTE1LCAyKSxcbiAgICBwcmV2RGVmYXVsdE9wdGlvbnMgPSBfdXNlU3RhdGUxNlswXSxcbiAgICBzZXRQcmV2RGVmYXVsdE9wdGlvbnMgPSBfdXNlU3RhdGUxNlsxXTtcbiAgdmFyIF91c2VTdGF0ZTE3ID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSxcbiAgICBfdXNlU3RhdGUxOCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTE3LCAyKSxcbiAgICBwcmV2Q2FjaGVPcHRpb25zID0gX3VzZVN0YXRlMThbMF0sXG4gICAgc2V0UHJldkNhY2hlT3B0aW9ucyA9IF91c2VTdGF0ZTE4WzFdO1xuICBpZiAoY2FjaGVPcHRpb25zICE9PSBwcmV2Q2FjaGVPcHRpb25zKSB7XG4gICAgc2V0T3B0aW9uc0NhY2hlKHt9KTtcbiAgICBzZXRQcmV2Q2FjaGVPcHRpb25zKGNhY2hlT3B0aW9ucyk7XG4gIH1cbiAgaWYgKHByb3BzRGVmYXVsdE9wdGlvbnMgIT09IHByZXZEZWZhdWx0T3B0aW9ucykge1xuICAgIHNldERlZmF1bHRPcHRpb25zKEFycmF5LmlzQXJyYXkocHJvcHNEZWZhdWx0T3B0aW9ucykgPyBwcm9wc0RlZmF1bHRPcHRpb25zIDogdW5kZWZpbmVkKTtcbiAgICBzZXRQcmV2RGVmYXVsdE9wdGlvbnMocHJvcHNEZWZhdWx0T3B0aW9ucyk7XG4gIH1cbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBtb3VudGVkLmN1cnJlbnQgPSB0cnVlO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBtb3VudGVkLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9O1xuICB9LCBbXSk7XG4gIHZhciBsb2FkT3B0aW9ucyA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChpbnB1dFZhbHVlLCBjYWxsYmFjaykge1xuICAgIGlmICghcHJvcHNMb2FkT3B0aW9ucykgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgdmFyIGxvYWRlciA9IHByb3BzTG9hZE9wdGlvbnMoaW5wdXRWYWx1ZSwgY2FsbGJhY2spO1xuICAgIGlmIChsb2FkZXIgJiYgdHlwZW9mIGxvYWRlci50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBsb2FkZXIudGhlbihjYWxsYmFjaywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW3Byb3BzTG9hZE9wdGlvbnNdKTtcbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAocHJvcHNEZWZhdWx0T3B0aW9ucyA9PT0gdHJ1ZSkge1xuICAgICAgbG9hZE9wdGlvbnMoc3RhdGVJbnB1dFZhbHVlLCBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgICBpZiAoIW1vdW50ZWQuY3VycmVudCkgcmV0dXJuO1xuICAgICAgICBzZXREZWZhdWx0T3B0aW9ucyhvcHRpb25zIHx8IFtdKTtcbiAgICAgICAgc2V0SXNMb2FkaW5nKCEhbGFzdFJlcXVlc3QuY3VycmVudCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgLy8gTk9URTogdGhpcyBlZmZlY3QgaXMgZGVzaWduZWQgdG8gb25seSBydW4gd2hlbiB0aGUgY29tcG9uZW50IG1vdW50cyxcbiAgICAvLyBzbyB3ZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgYW55IGhvb2sgZGVwZW5kZW5jaWVzXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7XG4gIHZhciBvbklucHV0Q2hhbmdlID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgdmFyIGlucHV0VmFsdWUgPSBpbmRleC5oYW5kbGVJbnB1dENoYW5nZShuZXdWYWx1ZSwgYWN0aW9uTWV0YSwgcHJvcHNPbklucHV0Q2hhbmdlKTtcbiAgICBpZiAoIWlucHV0VmFsdWUpIHtcbiAgICAgIGxhc3RSZXF1ZXN0LmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICBzZXRTdGF0ZUlucHV0VmFsdWUoJycpO1xuICAgICAgc2V0TG9hZGVkSW5wdXRWYWx1ZSgnJyk7XG4gICAgICBzZXRMb2FkZWRPcHRpb25zKFtdKTtcbiAgICAgIHNldElzTG9hZGluZyhmYWxzZSk7XG4gICAgICBzZXRQYXNzRW1wdHlPcHRpb25zKGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGNhY2hlT3B0aW9ucyAmJiBvcHRpb25zQ2FjaGVbaW5wdXRWYWx1ZV0pIHtcbiAgICAgIHNldFN0YXRlSW5wdXRWYWx1ZShpbnB1dFZhbHVlKTtcbiAgICAgIHNldExvYWRlZElucHV0VmFsdWUoaW5wdXRWYWx1ZSk7XG4gICAgICBzZXRMb2FkZWRPcHRpb25zKG9wdGlvbnNDYWNoZVtpbnB1dFZhbHVlXSk7XG4gICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgc2V0UGFzc0VtcHR5T3B0aW9ucyhmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciByZXF1ZXN0ID0gbGFzdFJlcXVlc3QuY3VycmVudCA9IHt9O1xuICAgICAgc2V0U3RhdGVJbnB1dFZhbHVlKGlucHV0VmFsdWUpO1xuICAgICAgc2V0SXNMb2FkaW5nKHRydWUpO1xuICAgICAgc2V0UGFzc0VtcHR5T3B0aW9ucyghbG9hZGVkSW5wdXRWYWx1ZSk7XG4gICAgICBsb2FkT3B0aW9ucyhpbnB1dFZhbHVlLCBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgICBpZiAoIW1vdW50ZWQpIHJldHVybjtcbiAgICAgICAgaWYgKHJlcXVlc3QgIT09IGxhc3RSZXF1ZXN0LmN1cnJlbnQpIHJldHVybjtcbiAgICAgICAgbGFzdFJlcXVlc3QuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgc2V0TG9hZGVkSW5wdXRWYWx1ZShpbnB1dFZhbHVlKTtcbiAgICAgICAgc2V0TG9hZGVkT3B0aW9ucyhvcHRpb25zIHx8IFtdKTtcbiAgICAgICAgc2V0UGFzc0VtcHR5T3B0aW9ucyhmYWxzZSk7XG4gICAgICAgIHNldE9wdGlvbnNDYWNoZShvcHRpb25zID8gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBvcHRpb25zQ2FjaGUpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBpbnB1dFZhbHVlLCBvcHRpb25zKSkgOiBvcHRpb25zQ2FjaGUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCBbY2FjaGVPcHRpb25zLCBsb2FkT3B0aW9ucywgbG9hZGVkSW5wdXRWYWx1ZSwgb3B0aW9uc0NhY2hlLCBwcm9wc09uSW5wdXRDaGFuZ2VdKTtcbiAgdmFyIG9wdGlvbnMgPSBwYXNzRW1wdHlPcHRpb25zID8gW10gOiBzdGF0ZUlucHV0VmFsdWUgJiYgbG9hZGVkSW5wdXRWYWx1ZSA/IGxvYWRlZE9wdGlvbnMgOiBkZWZhdWx0T3B0aW9ucyB8fCBbXTtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdFNlbGVjdFByb3BzKSwge30sIHtcbiAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgIGlzTG9hZGluZzogaXNMb2FkaW5nIHx8IHByb3BzSXNMb2FkaW5nLFxuICAgIG9uSW5wdXRDaGFuZ2U6IG9uSW5wdXRDaGFuZ2UsXG4gICAgZmlsdGVyT3B0aW9uOiBmaWx0ZXJPcHRpb25cbiAgfSk7XG59XG5cbmV4cG9ydHMudXNlQXN5bmMgPSB1c2VBc3luYztcbiIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxudmFyIF9leHRlbmRzID0gcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzJyk7XG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xudmFyIFNlbGVjdCA9IHJlcXVpcmUoJy4uLy4uL2Rpc3QvU2VsZWN0LTM2ZDE1ZjkzLmNqcy5wcm9kLmpzJyk7XG52YXIgdXNlU3RhdGVNYW5hZ2VyID0gcmVxdWlyZSgnLi4vLi4vZGlzdC91c2VTdGF0ZU1hbmFnZXItY2UyMzA2MWMuY2pzLnByb2QuanMnKTtcbnZhciB1c2VBc3luYyA9IHJlcXVpcmUoJy4uLy4uL2Rpc3QvdXNlQXN5bmMtYmU2NTlhNTcuY2pzLnByb2QuanMnKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0U3ByZWFkMicpO1xucmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjaycpO1xucmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcycpO1xucmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0cycpO1xucmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVTdXBlcicpO1xucmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheScpO1xucmVxdWlyZSgnLi4vLi4vZGlzdC9pbmRleC02NjVjNGVkOC5janMucHJvZC5qcycpO1xucmVxdWlyZSgnQGVtb3Rpb24vcmVhY3QnKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheScpO1xucmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllcycpO1xucmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YnKTtcbnJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdGFnZ2VkVGVtcGxhdGVMaXRlcmFsJyk7XG5yZXF1aXJlKCdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5Jyk7XG5yZXF1aXJlKCdyZWFjdC1kb20nKTtcbnJlcXVpcmUoJ0BmbG9hdGluZy11aS9kb20nKTtcbnJlcXVpcmUoJ3VzZS1pc29tb3JwaGljLWxheW91dC1lZmZlY3QnKTtcbnJlcXVpcmUoJ21lbW9pemUtb25lJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wTmFtZXNwYWNlKGUpIHtcbiAgaWYgKGUgJiYgZS5fX2VzTW9kdWxlKSByZXR1cm4gZTtcbiAgdmFyIG4gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBpZiAoZSkge1xuICAgIE9iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgIGlmIChrICE9PSAnZGVmYXVsdCcpIHtcbiAgICAgICAgdmFyIGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIGspO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobiwgaywgZC5nZXQgPyBkIDoge1xuICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBlW2tdOyB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIG5bXCJkZWZhdWx0XCJdID0gZTtcbiAgcmV0dXJuIE9iamVjdC5mcmVlemUobik7XG59XG5cbnZhciBSZWFjdF9fbmFtZXNwYWNlID0gLyojX19QVVJFX18qL19pbnRlcm9wTmFtZXNwYWNlKFJlYWN0KTtcblxudmFyIEFzeW5jU2VsZWN0ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHtcbiAgdmFyIHN0YXRlTWFuYWdlZFByb3BzID0gdXNlQXN5bmMudXNlQXN5bmMocHJvcHMpO1xuICB2YXIgc2VsZWN0UHJvcHMgPSB1c2VTdGF0ZU1hbmFnZXIudXNlU3RhdGVNYW5hZ2VyKHN0YXRlTWFuYWdlZFByb3BzKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fbmFtZXNwYWNlLmNyZWF0ZUVsZW1lbnQoU2VsZWN0LlNlbGVjdCwgX2V4dGVuZHMoe1xuICAgIHJlZjogcmVmXG4gIH0sIHNlbGVjdFByb3BzKSk7XG59KTtcbnZhciBBc3luY1NlbGVjdCQxID0gQXN5bmNTZWxlY3Q7XG5cbmV4cG9ydHMudXNlQXN5bmMgPSB1c2VBc3luYy51c2VBc3luYztcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gQXN5bmNTZWxlY3QkMTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIikge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuL3JlYWN0LXNlbGVjdC1hc3luYy5janMucHJvZC5qc1wiKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4vcmVhY3Qtc2VsZWN0LWFzeW5jLmNqcy5kZXYuanNcIik7XG59XG4iLCJleHBvcnRzLl9kZWZhdWx0ID0gcmVxdWlyZShcIi4vcmVhY3Qtc2VsZWN0LWFzeW5jLmNqcy5qc1wiKS5kZWZhdWx0O1xuIiwiaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgU2hvcCB9IGZyb20gJy4uLy4uL21vZGVsL3Nob3AnO1xuaW1wb3J0IHsgY29udGFpbmVyIH0gZnJvbSAndHN5cmluZ2UtbmVvJztcbmltcG9ydCBPcmRlclN0YXRlIGZyb20gJy4uLy4uL3N0YXRlL29yZGVyJztcbmltcG9ydCB7UHJvZHVjdEdyb3VwfSBmcm9tIFwiLi4vLi4vbW9kZWwvcHJvZHVjdEdyb3VwXCI7XG5pbXBvcnQgUHJvZHVjdEdyb3VwU2VydmljZSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcHJvZHVjdGdyb3VwXCI7XG5pbXBvcnQgQXN5bmNTZWxlY3QgLCB7IHVzZUFzeW5jIH0gZnJvbSAncmVhY3Qtc2VsZWN0L2FzeW5jJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgUHJvZHVjdEdyb3VwU2VsZWN0ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IG9yZGVyU3RhdGU6IE9yZGVyU3RhdGUgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclN0YXRlKTtcblxuICBjb25zdCBsb2FkT3B0aW9ucyA9IGFzeW5jIChzZWFyY2hRdWVyeSkgPT4ge1xuICAgIGNvbnN0IHByb2R1Y3Rncm91cF9hcGkgPSBuZXcgUHJvZHVjdEdyb3VwU2VydmljZSgpO1xuXG4gICAgcmV0dXJuIGF3YWl0IHByb2R1Y3Rncm91cF9hcGkuZ2V0UHJvZHVjdEdyb3VwcyhzZWFyY2hRdWVyeSwgcHJvcHMuc2hvcCk7XG4gIH07XG5cbiAgY29uc3Qgb25DaGFuZ2UgPSAob3B0aW9uKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBwcm9wcy5vbkNoYW5nZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBwcm9wcy5vbkNoYW5nZShvcHRpb24pO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gKFxuICAgICAgPEFzeW5jU2VsZWN0XG4gICAgICAgICAgZGVmYXVsdE9wdGlvbnNcbiAgICAgICAgICBrZXk9e0pTT04uc3RyaW5naWZ5KHByb3BzLnNob3AudXVpZCl9XG4gICAgICAgICAgdmFsdWU9e3Byb3BzLnZhbHVlfVxuICAgICAgICAgIGxvYWRPcHRpb25zPXtsb2FkT3B0aW9uc31cbiAgICAgICAgICBnZXRPcHRpb25WYWx1ZT17KG9wdGlvbikgPT4gb3B0aW9uLnV1aWR9XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgIGlzU2VhcmNoYWJsZT17dHJ1ZX1cbiAgICAgIC8+XG4gICk7XG59O1xuXG5Qcm9kdWN0R3JvdXBTZWxlY3QucHJvcFR5cGVzID0ge1xuICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcbiAgdmFsdWU6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFByb2R1Y3RHcm91cCksXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFByb2R1Y3RHcm91cFNlbGVjdDtcbiIsImltcG9ydCB7aW5qZWN0LCBhdXRvSW5qZWN0YWJsZSwgc2luZ2xldG9ufSBmcm9tIFwidHN5cmluZ2UtbmVvXCI7XG5pbXBvcnQgVG9rZW4gZnJvbSBcIi4vdG9rZW5cIjtcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBTaG9wIH0gZnJvbSBcIi4uL21vZGVsL3Nob3BcIjtcbmltcG9ydCB7UHJvZHVjdEdyb3VwfSBmcm9tIFwiLi4vbW9kZWwvcHJvZHVjdEdyb3VwXCI7XG5pbXBvcnQge1Byb2R1Y3R9IGZyb20gXCIuLi9tb2RlbC9wcm9kdWN0XCI7XG5pbXBvcnQge0pTT05TY2hlbWE3fSBmcm9tIFwianNvbi1zY2hlbWFcIjtcblxuQHNpbmdsZXRvbigpXG5AYXV0b0luamVjdGFibGUoKVxuY2xhc3MgUHJvZHVjdFNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKEBpbmplY3QoVG9rZW4pIHRva2VuPzogVG9rZW4pIHtcbiAgICAgICAgdGhpcy50b2tlbiA9IHRva2VuXG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0UHJvZHVjdHNCeVRlcm0odGVybTogc3RyaW5nLCBzaG9wOiBTaG9wKTogUHJvbWlzZTxQcm9kdWN0W10+IHtcblxuICAgICAgICByZXR1cm4gYXdhaXQgYXhpb3MuZ2V0KCcvYXBwcy9hcGkvcHJvZHVjdC9nZXRhbGxieXRlcm0vJyArIHNob3AudXVpZCArICcvJyArIHRlcm0sIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMudG9rZW4/LmN1cnJlbnRUb2tlblxuICAgICAgICAgICAgfVxuICAgICAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHAgPSBuZXcgUHJvZHVjdCgpO1xuICAgICAgICAgICAgICAgIHAuaWQgPSBpdGVtLmlkO1xuICAgICAgICAgICAgICAgIHAudGl0bGUgPSBpdGVtLnRpdGxlO1xuICAgICAgICAgICAgICAgIHAudXVpZCA9IGl0ZW0udXVpZDtcbiAgICAgICAgICAgICAgICBwLnNwZWNpYWxQcm9kdWN0VHlwZU9iamVjdC50eXAgPSBpdGVtLnR5cDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICAgICAgfSlcblxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGFzeW5jIGdldFByb2R1Y3RzKHByb2R1Y3RHcm91cDogUHJvZHVjdEdyb3VwKTogUHJvbWlzZTxQcm9kdWN0W10+IHtcblxuICAgICAgICByZXR1cm4gYXdhaXQgYXhpb3MuZ2V0KCcvYXBwcy9hcGkvcHJvZHVjdC9nZXRhbGxieXByb2R1Y3Rncm91cC8nICsgcHJvZHVjdEdyb3VwLnV1aWQsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMudG9rZW4/LmN1cnJlbnRUb2tlblxuICAgICAgICAgICAgfVxuICAgICAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGxldCBwID0gbmV3IFByb2R1Y3QoKTtcbiAgICAgICAgICAgICAgcC5pZCA9IGl0ZW0uaWQ7XG4gICAgICAgICAgICAgIHAudGl0bGUgPSBpdGVtLnRpdGxlO1xuICAgICAgICAgICAgICBwLnV1aWQgPSBpdGVtLnV1aWQ7XG4gICAgICAgICAgICAgIHAuc3BlY2lhbFByb2R1Y3RUeXBlT2JqZWN0LnR5cCA9IGl0ZW0udHlwO1xuXG4gICAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICAgICAgfSlcblxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGFzeW5jIGdldEFkZFByb2R1Y3RTY2hlbWEocHJvZHVjdDogUHJvZHVjdCwgZm9ybURhdGE6IGFueSk6IFByb21pc2U8SlNPTlNjaGVtYTc+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGF4aW9zLnBvc3QoJy9hcHBzL2FwaS9wcm9kdWN0L2dldC9mb3JtL2pzb24vJyArIHByb2R1Y3QudXVpZCwgZm9ybURhdGEsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMudG9rZW4/LmN1cnJlbnRUb2tlblxuICAgICAgICAgICAgfVxuICAgICAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBhc3luYyBjYWxjUHJvZHVjdChwcm9kdWN0OiBQcm9kdWN0LCBmb3JtRGF0YSk6IFByb21pc2U8SlNPTlNjaGVtYTc+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGF4aW9zLnBvc3QoJy9hcHBzL2FwaS9wcm9kdWN0L2dldC9mb3JtL2pzb24vJyArIHByb2R1Y3QudXVpZCwgZm9ybURhdGEsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMudG9rZW4/LmN1cnJlbnRUb2tlblxuICAgICAgICAgICAgfVxuICAgICAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgfSlcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFByb2R1Y3RTZXJ2aWNlXG4iLCJpbXBvcnR7dXNlUmVmIGFzIHIsdXNlRWZmZWN0IGFzIG4sdXNlTWVtbyBhcyB0LHVzZVN0YXRlIGFzIGUsdXNlQ2FsbGJhY2sgYXMgdX1mcm9tXCJyZWFjdFwiO2Z1bmN0aW9uIGMoZSx1LGMpe3ZhciBpPXRoaXMsYT1yKG51bGwpLG89cigwKSxmPXIobnVsbCksbD1yKFtdKSx2PXIoKSxtPXIoKSxkPXIoZSksZz1yKCEwKTtkLmN1cnJlbnQ9ZTt2YXIgcD1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93LHc9IXUmJjAhPT11JiZwO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkV4cGVjdGVkIGEgZnVuY3Rpb25cIik7dT0rdXx8MDt2YXIgcz0hIShjPWN8fHt9KS5sZWFkaW5nLHg9IShcInRyYWlsaW5nXCJpbiBjKXx8ISFjLnRyYWlsaW5nLGg9XCJtYXhXYWl0XCJpbiBjLHk9XCJkZWJvdW5jZU9uU2VydmVyXCJpbiBjJiYhIWMuZGVib3VuY2VPblNlcnZlcixGPWg/TWF0aC5tYXgoK2MubWF4V2FpdHx8MCx1KTpudWxsO24oZnVuY3Rpb24oKXtyZXR1cm4gZy5jdXJyZW50PSEwLGZ1bmN0aW9uKCl7Zy5jdXJyZW50PSExfX0sW10pO3ZhciBBPXQoZnVuY3Rpb24oKXt2YXIgcj1mdW5jdGlvbihyKXt2YXIgbj1sLmN1cnJlbnQsdD12LmN1cnJlbnQ7cmV0dXJuIGwuY3VycmVudD12LmN1cnJlbnQ9bnVsbCxvLmN1cnJlbnQ9cixtLmN1cnJlbnQ9ZC5jdXJyZW50LmFwcGx5KHQsbil9LG49ZnVuY3Rpb24ocixuKXt3JiZjYW5jZWxBbmltYXRpb25GcmFtZShmLmN1cnJlbnQpLGYuY3VycmVudD13P3JlcXVlc3RBbmltYXRpb25GcmFtZShyKTpzZXRUaW1lb3V0KHIsbil9LHQ9ZnVuY3Rpb24ocil7aWYoIWcuY3VycmVudClyZXR1cm4hMTt2YXIgbj1yLWEuY3VycmVudDtyZXR1cm4hYS5jdXJyZW50fHxuPj11fHxuPDB8fGgmJnItby5jdXJyZW50Pj1GfSxlPWZ1bmN0aW9uKG4pe3JldHVybiBmLmN1cnJlbnQ9bnVsbCx4JiZsLmN1cnJlbnQ/cihuKToobC5jdXJyZW50PXYuY3VycmVudD1udWxsLG0uY3VycmVudCl9LGM9ZnVuY3Rpb24gcigpe3ZhciBjPURhdGUubm93KCk7aWYodChjKSlyZXR1cm4gZShjKTtpZihnLmN1cnJlbnQpe3ZhciBpPXUtKGMtYS5jdXJyZW50KSxmPWg/TWF0aC5taW4oaSxGLShjLW8uY3VycmVudCkpOmk7bihyLGYpfX0sQT1mdW5jdGlvbigpe2lmKHB8fHkpe3ZhciBlPURhdGUubm93KCksZD10KGUpO2lmKGwuY3VycmVudD1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyksdi5jdXJyZW50PWksYS5jdXJyZW50PWUsZCl7aWYoIWYuY3VycmVudCYmZy5jdXJyZW50KXJldHVybiBvLmN1cnJlbnQ9YS5jdXJyZW50LG4oYyx1KSxzP3IoYS5jdXJyZW50KTptLmN1cnJlbnQ7aWYoaClyZXR1cm4gbihjLHUpLHIoYS5jdXJyZW50KX1yZXR1cm4gZi5jdXJyZW50fHxuKGMsdSksbS5jdXJyZW50fX07cmV0dXJuIEEuY2FuY2VsPWZ1bmN0aW9uKCl7Zi5jdXJyZW50JiYodz9jYW5jZWxBbmltYXRpb25GcmFtZShmLmN1cnJlbnQpOmNsZWFyVGltZW91dChmLmN1cnJlbnQpKSxvLmN1cnJlbnQ9MCxsLmN1cnJlbnQ9YS5jdXJyZW50PXYuY3VycmVudD1mLmN1cnJlbnQ9bnVsbH0sQS5pc1BlbmRpbmc9ZnVuY3Rpb24oKXtyZXR1cm4hIWYuY3VycmVudH0sQS5mbHVzaD1mdW5jdGlvbigpe3JldHVybiBmLmN1cnJlbnQ/ZShEYXRlLm5vdygpKTptLmN1cnJlbnR9LEF9LFtzLGgsdSxGLHgsdyxwLHldKTtyZXR1cm4gQX1mdW5jdGlvbiBpKHIsbil7cmV0dXJuIHI9PT1ufWZ1bmN0aW9uIGEobix0LGEpe3ZhciBvPWEmJmEuZXF1YWxpdHlGbnx8aSxmPXIobiksbD1lKHt9KVsxXSx2PWModShmdW5jdGlvbihyKXtmLmN1cnJlbnQ9cixsKHt9KX0sW2xdKSx0LGEpLG09cihuKTtyZXR1cm4gbyhtLmN1cnJlbnQsbil8fCh2KG4pLG0uY3VycmVudD1uKSxbZi5jdXJyZW50LHZdfWZ1bmN0aW9uIG8ocixuLHQpe3ZhciBlPXZvaWQgMD09PXQ/e306dCx1PWUubGVhZGluZyxpPWUudHJhaWxpbmc7cmV0dXJuIGMocixuLHttYXhXYWl0Om4sbGVhZGluZzp2b2lkIDA9PT11fHx1LHRyYWlsaW5nOnZvaWQgMD09PWl8fGl9KX1leHBvcnR7YSBhcyB1c2VEZWJvdW5jZSxjIGFzIHVzZURlYm91bmNlZENhbGxiYWNrLG8gYXMgdXNlVGhyb3R0bGVkQ2FsbGJhY2t9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubW9kdWxlLmpzLm1hcFxuIiwiaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgU2hvcCB9IGZyb20gJy4uLy4uL21vZGVsL3Nob3AnO1xuaW1wb3J0IHsgY29udGFpbmVyIH0gZnJvbSAndHN5cmluZ2UtbmVvJztcbmltcG9ydCBPcmRlclN0YXRlIGZyb20gJy4uLy4uL3N0YXRlL29yZGVyJztcbmltcG9ydCB7UHJvZHVjdH0gZnJvbSBcIi4uLy4uL21vZGVsL3Byb2R1Y3RcIjtcbmltcG9ydCB7UHJvZHVjdEdyb3VwfSBmcm9tIFwiLi4vLi4vbW9kZWwvcHJvZHVjdEdyb3VwXCI7XG5pbXBvcnQgQXN5bmNTZWxlY3QgZnJvbSBcInJlYWN0LXNlbGVjdC9hc3luY1wiO1xuaW1wb3J0IFByb2R1Y3RTZXJ2aWNlIGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9wcm9kdWN0XCI7XG5pbXBvcnQge3VzZURlYm91bmNlfSBmcm9tIFwidXNlLWRlYm91bmNlXCI7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IFByb2R1Y3RTZWxlY3QgPSAocHJvcHMpID0+IHtcblxuICBjb25zdCBvcmRlclN0YXRlOiBPcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSk7XG5cbiAgY29uc3QgbG9hZE9wdGlvbnMgPSBhc3luYyAoc2VhcmNoUXVlcnkpID0+IHtcbiAgICBpZihzZWFyY2hRdWVyeSA9PSBcIlwiICYmIHByb3BzLnByb2R1Y3RHcm91cC51dWlkID09IFwiXCIpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgcHJvZHVjdF9hcGkgPSBuZXcgUHJvZHVjdFNlcnZpY2UoKTtcbiAgICBpZihzZWFyY2hRdWVyeSAhPSBcIlwiKSB7XG4gICAgICByZXR1cm4gYXdhaXQgcHJvZHVjdF9hcGkuZ2V0UHJvZHVjdHNCeVRlcm0oc2VhcmNoUXVlcnksIHByb3BzLnNob3ApO1xuICAgIH1lbHNle1xuICAgICAgcmV0dXJuIGF3YWl0IHByb2R1Y3RfYXBpLmdldFByb2R1Y3RzKHByb3BzLnByb2R1Y3RHcm91cCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGRlYm91bmNlZFNlYXJjaFRlcm0gPSB1c2VEZWJvdW5jZShsb2FkT3B0aW9ucywgNTAwKTtcblxuICBjb25zdCBvbkNoYW5nZSA9IChvcHRpb24pID0+IHtcbiAgICBpZiAodHlwZW9mIHByb3BzLm9uQ2hhbmdlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHByb3BzLm9uQ2hhbmdlKG9wdGlvbik7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgICA8QXN5bmNTZWxlY3RcbiAgICAgICAgICBkZWZhdWx0T3B0aW9uc1xuICAgICAgICAgIGtleT17SlNPTi5zdHJpbmdpZnkocHJvcHMucHJvZHVjdEdyb3VwLnV1aWQpfVxuICAgICAgICAgIHZhbHVlPXtwcm9wcy52YWx1ZX1cbiAgICAgICAgICBsb2FkT3B0aW9ucz17bG9hZE9wdGlvbnN9XG4gICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9eyhvcHRpb24pID0+IG9wdGlvbi51dWlkfVxuICAgICAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiBvcHRpb24udGl0bGV9XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgIGlzU2VhcmNoYWJsZT17dHJ1ZX1cbiAgICAgIC8+XG4gICk7XG59O1xuXG5Qcm9kdWN0U2VsZWN0LnByb3BUeXBlcyA9IHtcbiAgc2hvcDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2hvcCksXG4gIHZhbHVlOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihQcm9kdWN0KSxcbiAgcHJvZHVjdEdyb3VwOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihQcm9kdWN0R3JvdXApLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBQcm9kdWN0U2VsZWN0O1xuIiwiaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBTaG9wIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2hvcCdcbmltcG9ydCB7UHJvZHVjdH0gZnJvbSBcIi4uLy4uL21vZGVsL3Byb2R1Y3RcIlxuaW1wb3J0IHZhbGlkYXRvciBmcm9tIFwiQHJqc2YvdmFsaWRhdG9yLWFqdjZcIlxuaW1wb3J0IHsgSlNPTlNjaGVtYTcgfSBmcm9tIFwianNvbi1zY2hlbWFcIlxuaW1wb3J0IHsgY29udGFpbmVyIH0gZnJvbSAndHN5cmluZ2UtbmVvJ1xuaW1wb3J0IEZvcm0gZnJvbSBcIkByanNmL2NvcmVcIlxuaW1wb3J0IFByb2R1Y3RTZXJ2aWNlIGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9wcm9kdWN0XCJcbmltcG9ydCB7dXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtQcmljZX0gZnJvbSBcIi4uLy4uL21vZGVsL3ByaWNlXCJcbmltcG9ydCB7UG9zfSBmcm9tIFwiLi4vLi4vbW9kZWwvcG9zXCJcbmltcG9ydCB7IHVzZURlYm91bmNlZENhbGxiYWNrIH0gZnJvbSAndXNlLWRlYm91bmNlJ1xuaW1wb3J0IEJ1dHRvbiBmcm9tICcuLi9iYXNlL0J1dHRvbidcbmltcG9ydCBDdXJyZW5jeSBmcm9tICcuLi9iYXNlL0N1cnJlbmN5J1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBQcm9kdWN0Rm9ybSA9ICh7c2hvcCwgcG9zLCBoYW5kbGVDbG9zZSwgaGFuZGxlQ2hhbmdlfSkgPT4ge1xuICAgIGNvbnN0IHByb2R1Y3RfYXBpID0gbmV3IFByb2R1Y3RTZXJ2aWNlKClcblxuICAgIGNvbnN0IFtzY2hlbWEsIHNldFNjaGVtYV0gPSB1c2VTdGF0ZTxKU09OU2NoZW1hNz4oe30pXG4gICAgY29uc3QgW3VpU2NoZW1hLCBzZXRVaVNjaGVtYV0gPSB1c2VTdGF0ZTxKU09OU2NoZW1hNz4oe30pXG5cbiAgICBjb25zdCBbZm9ybURhdGEsIHNldEZvcm1EYXRhXSA9IHVzZVN0YXRlKHt9KVxuICAgIGNvbnN0IFt0eXBlLCBzZXRUeXBlXSA9IHVzZVN0YXRlPG51bWJlcj4oMClcblxuICAgIGNvbnN0IFtwcmljZSwgc2V0UHJpY2VdID0gdXNlU3RhdGU8UHJpY2U+KG5ldyBQcmljZSgpKVxuXG4gICAgY29uc3QgbG9hZFNjaGVtYSA9IChsb2FkRGF0YTogYW55KSA9PiB7XG4gICAgICAgIGlmKHBvcy5wcm9kdWN0LnV1aWQgPT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuIFtdXG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRhdGEgPSB7fVxuXG4gICAgICAgIHByb2R1Y3RfYXBpLmdldEFkZFByb2R1Y3RTY2hlbWEocG9zLnByb2R1Y3QsIGxvYWREYXRhKS50aGVuKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgZm9yKGNvbnN0IG9iaiBpbiB2YWx1ZVsnanNvbkZvcm0nXVsncHJvcGVydGllcyddKSB7IFxuICAgICAgICAgICAgICAgIGRhdGFbb2JqXSA9IHZhbHVlWydqc29uRm9ybSddWydwcm9wZXJ0aWVzJ11bb2JqXVsnZGVmYXVsdCddXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRGb3JtRGF0YShkYXRhKVxuICAgICAgICAgICAgc2V0U2NoZW1hKHZhbHVlWydqc29uRm9ybSddKVxuICAgICAgICAgICAgc2V0VWlTY2hlbWEodmFsdWVbJ3VpSnNvbkZvcm0nXSlcbiAgICAgICAgICAgIHNldFByaWNlKHZhbHVlWydwcmljZSddKVxuICAgICAgICAgICAgc2V0VHlwZSh2YWx1ZVsndHlwJ10pXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc3QgY2hhbmdlQ2FsYyA9IChmb3JtRGF0YSkgPT4ge1xuICAgICAgICBzZXRGb3JtRGF0YShmb3JtRGF0YSlcbiAgICAgICAgZGVib3VuY2VSZUNhbGMoKVxuICAgIH1cblxuICAgIGNvbnN0IGRlYm91bmNlUmVDYWxjID0gdXNlRGVib3VuY2VkQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICB2YXIgZGF0YSA9IHt9XG5cbiAgICAgICAgcHJvZHVjdF9hcGkuY2FsY1Byb2R1Y3QocG9zLnByb2R1Y3QsIGZvcm1EYXRhKS50aGVuKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgZm9yKGNvbnN0IG9iaiBpbiB2YWx1ZVsnanNvbkZvcm0nXVsncHJvcGVydGllcyddKSB7IFxuICAgICAgICAgICAgICAgIGRhdGFbb2JqXSA9IHZhbHVlWydqc29uRm9ybSddWydwcm9wZXJ0aWVzJ11bb2JqXVsnZGVmYXVsdCddXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRGb3JtRGF0YShkYXRhKVxuICAgICAgICAgICAgc2V0U2NoZW1hKHZhbHVlWydqc29uRm9ybSddKVxuICAgICAgICAgICAgc2V0VWlTY2hlbWEodmFsdWVbJ3VpSnNvbkZvcm0nXSlcbiAgICAgICAgICAgIHNldFByaWNlKHZhbHVlWydwcmljZSddKVxuICAgICAgICAgICAgc2V0VHlwZSh2YWx1ZVsndHlwJ10pXG4gICAgICAgIH0pXG4gICAgfSwgNjAwKVxuXG4gICAgY29uc3QgYWRkUHJvZHVjdCA9ICgpID0+IHtcblxuICAgICAgICBwb3MucHJvZHVjdC5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QucGFyYW1zID0gZm9ybURhdGFcbiAgICAgICAgcG9zLnByb2R1Y3Quc3BlY2lhbFByb2R1Y3RUeXBlT2JqZWN0LnR5cCA9IHR5cGVcbiAgICAgICAgaWYoZm9ybURhdGFbJ2NvdW50J10pIHtcbiAgICAgICAgICAgIHBvcy5jb3VudCA9IGZvcm1EYXRhWydjb3VudCddXG4gICAgICAgIH1cblxuICAgICAgICBwb3MucHJpY2UgPSBwcmljZVxuICAgICAgICBoYW5kbGVDaGFuZ2UocG9zKVxuICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYocG9zLnByb2R1Y3Quc3BlY2lhbFByb2R1Y3RUeXBlT2JqZWN0LnBhcmFtcykge1xuICAgICAgICAgICAgc2V0Rm9ybURhdGEocG9zLnByb2R1Y3Quc3BlY2lhbFByb2R1Y3RUeXBlT2JqZWN0LnBhcmFtcylcbiAgICAgICAgICAgIGxvYWRTY2hlbWEocG9zLnByb2R1Y3Quc3BlY2lhbFByb2R1Y3RUeXBlT2JqZWN0LnBhcmFtcylcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBzZXRGb3JtRGF0YSh7fSlcbiAgICAgICAgICAgIGxvYWRTY2hlbWEoe30pXG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgfSwgW3Bvcy5wcm9kdWN0XSlcblxuICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nZmxleCc+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2ZsZXgtMSc+XG4gICAgICAgICAgICAgICAgICAgIDxGb3JtIHNjaGVtYT17c2NoZW1hfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB1aVNjaGVtYT17dWlTY2hlbWF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhPXtmb3JtRGF0YX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBjaGFuZ2VDYWxjKGUuZm9ybURhdGEpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3I9e3ZhbGlkYXRvcn0vPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPScnPlxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1Pk5ldHRvOiA8Q3VycmVuY3kgcHJpY2U9eyBwcmljZS5hbGxOZXR9IC8+PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNT5Nd2VydDogPEN1cnJlbmN5IHByaWNlPXsgcHJpY2UuYWxsVmF0fSAvPjwvaDU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDQ+QnJ1dHRvOiA8Q3VycmVuY3kgcHJpY2U9eyBwcmljZS5hbGxHcm9zc30gLz48L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXthZGRQcm9kdWN0fSB0eXBlPXszfSB2YXJpYW50PXtcInN1Y2Nlc3NcIn0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8Lz5cbiAgICApXG59XG5cblByb2R1Y3RGb3JtLnByb3BUeXBlcyA9IHtcbiAgICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcbiAgICBwb3M6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFBvcyksXG4gICAgaGFuZGxlQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICAgIGhhbmRsZUNoYW5nZTogUHJvcFR5cGVzLmZ1bmNcbn1cblxuZXhwb3J0IGRlZmF1bHQgUHJvZHVjdEZvcm1cbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgeyBTaG9wIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2hvcCdcbmltcG9ydCB7UHJvZHVjdH0gZnJvbSBcIi4uLy4uL21vZGVsL3Byb2R1Y3RcIlxuaW1wb3J0IHtQcm9kdWN0R3JvdXB9IGZyb20gXCIuLi8uLi9tb2RlbC9wcm9kdWN0R3JvdXBcIlxuaW1wb3J0IFByb2R1Y3RHcm91cFNlbGVjdCBmcm9tIFwiLi4vcHJvZHVjdC9Qcm9kdWN0R3JvdXBTZWxlY3RcIlxuaW1wb3J0IFByb2R1Y3RTZWxlY3QgZnJvbSBcIi4uL3Byb2R1Y3QvUHJvZHVjdFNlbGVjdFwiXG5pbXBvcnQgUHJvZHVjdEZvcm0gZnJvbSBcIi4uL3Byb2R1Y3QvUHJvZHVjdEZvcm1cIlxuaW1wb3J0IE9yZGVyIGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiXG5pbXBvcnQgeyBQb3MgfSBmcm9tICcuLi8uLi9tb2RlbC9wb3MnXG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uL2Jhc2UvQnV0dG9uJ1xuaW1wb3J0IHsgTW9kYWwgfSBmcm9tIFwiZmxvd2JpdGUtcmVhY3RcIjtcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgQWRkUG9zaXRpb25Db21wb25lbnQgPSAocHJvcHMpID0+IHtcblxuICAgIGNvbnN0IFtzaG9wLCBzZXRTaG9wXSA9IHVzZVN0YXRlKG51bGwpXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzZXRTaG9wKHByb3BzLnNob3ApXG4gICAgfSwgW3Byb3BzLnNob3BdKVxuXG4gICAgY29uc3QgW3Nob3csIHNldFNob3ddID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgICBjb25zdCBwb3MgPSBuZXcgUG9zKCk7XG5cbiAgICBjb25zdCBoYW5kbGVDbG9zZSA9ICgpID0+IHNldFNob3coZmFsc2UpXG4gICAgY29uc3QgaGFuZGxlU2hvdyA9ICgpID0+IHNldFNob3codHJ1ZSlcblxuICAgIGNvbnN0IFtwcm9kdWN0LCBzZXRQcm9kdWN0XSA9IHVzZVN0YXRlPFByb2R1Y3Q+KG5ldyBQcm9kdWN0KCkpXG4gICAgY29uc3QgW3Byb2R1Y3RHcm91cCwgc2V0UHJvZHVjdEdyb3VwXSA9IHVzZVN0YXRlPFByb2R1Y3RHcm91cD4obmV3IFByb2R1Y3RHcm91cCgpKVxuXG4gICAgcG9zLnByb2R1Y3QgPSBwcm9kdWN0O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J3RleHQtY2VudGVyJz5cbiAgICAgICAgICAgIDxCdXR0b24gdHlwZT17MX0gb25DbGljaz17aGFuZGxlU2hvd30gdmFyaWFudD1cInN1Y2Nlc3NcIi8+XG5cbiAgICAgICAgICAgIDxNb2RhbCBzaXplPVwiN3hsXCIgc2hvdz17c2hvd30gb25DbG9zZT17KCkgPT4gaGFuZGxlQ2xvc2UoKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8TW9kYWwuSGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICBhZGQgcG9zaXRpb25cbiAgICAgICAgICAgICAgICA8L01vZGFsLkhlYWRlcj5cbiAgICAgICAgICAgICAgICA8TW9kYWwuQm9keSBjbGFzc05hbWU9XCJtaW4taC05NlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nZmxleCc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nZmxleC0xJz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UHJvZHVjdEdyb3VwPC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UHJvZHVjdEdyb3VwU2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwcm9kdWN0R3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3A9e3Byb3BzLnNob3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtzZXRQcm9kdWN0R3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2ZsZXgtMSc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlByb2R1Y3Q8L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9kdWN0U2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwcm9kdWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9wPXtwcm9wcy5zaG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0R3JvdXA9e3Byb2R1Y3RHcm91cH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3NldFByb2R1Y3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8UHJvZHVjdEZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcz17cG9zfVxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hhbmdlPXtwcm9wcy5hZGRQb3N9XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbG9zZT17aGFuZGxlQ2xvc2V9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Nb2RhbC5Cb2R5PlxuICAgICAgICAgICAgPC9Nb2RhbD5cbiAgICAgICAgPC9kaXY+XG4gICAgKVxufVxuXG5BZGRQb3NpdGlvbkNvbXBvbmVudC5wcm9wVHlwZXMgPSB7XG4gICAgc2hvcDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2hvcCksXG4gICAgYWRkUG9zOiBQcm9wVHlwZXMuZnVuY1xufVxuXG5cbmV4cG9ydCBkZWZhdWx0IEFkZFBvc2l0aW9uQ29tcG9uZW50XG4iLCJpbXBvcnQge3VzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCB7IFNob3AgfSBmcm9tICcuLi8uLi9tb2RlbC9zaG9wJ1xuaW1wb3J0IHtQcm9kdWN0fSBmcm9tIFwiLi4vLi4vbW9kZWwvcHJvZHVjdFwiXG5pbXBvcnQge1Byb2R1Y3RHcm91cH0gZnJvbSBcIi4uLy4uL21vZGVsL3Byb2R1Y3RHcm91cFwiXG5pbXBvcnQgUHJvZHVjdEdyb3VwU2VsZWN0IGZyb20gXCIuLi9wcm9kdWN0L1Byb2R1Y3RHcm91cFNlbGVjdFwiXG5pbXBvcnQgUHJvZHVjdFNlbGVjdCBmcm9tIFwiLi4vcHJvZHVjdC9Qcm9kdWN0U2VsZWN0XCJcbmltcG9ydCB7IFBvcyB9IGZyb20gJy4uLy4uL21vZGVsL3BvcydcbmltcG9ydCBCdXR0b24gZnJvbSAnLi4vYmFzZS9CdXR0b24nXG5pbXBvcnQgUHJvZHVjdEZvcm0gZnJvbSAnLi4vcHJvZHVjdC9Qcm9kdWN0Rm9ybSdcbmltcG9ydCB7IE1vZGFsIH0gZnJvbSBcImZsb3diaXRlLXJlYWN0XCI7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IEVkaXRQb3NpdGlvbkNvbXBvbmVudCA9ICh7cG9zaXRpb24sIHNob3AsIGNoYW5nZVBvc30pID0+IHtcblxuICAgIGNvbnN0IFtzaG93LCBzZXRTaG93XSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gICAgY29uc3QgaGFuZGxlQ2xvc2UgPSAoKSA9PiBzZXRTaG93KGZhbHNlKVxuICAgIGNvbnN0IGhhbmRsZVNob3cgPSAoKSA9PiBzZXRTaG93KHRydWUpXG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9ezJ9IHZhcmlhbnQ9XCJncmF5XCIgb25DbGljaz17aGFuZGxlU2hvd30vPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxNb2RhbCBzaXplPVwiN3hsXCIgc2hvdz17c2hvd30gb25DbG9zZT17KCkgPT4gaGFuZGxlQ2xvc2UoKX0+XG4gICAgICAgICAgICAgICAgPE1vZGFsLkhlYWRlciAgY2xhc3NOYW1lPVwidGV4dC1tYXV2ZTEyIG0tMCB0ZXh0LVsxN3B4XSBmb250LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICBlZGl0IHBvc2l0aW9uXG4gICAgICAgICAgICAgICAgPC9Nb2RhbC5IZWFkZXI+XG4gICAgICAgICAgICAgICAgPE1vZGFsLkJvZHk+XG4gICAgICAgICAgICAgICAgPFByb2R1Y3RGb3JtXG4gICAgICAgICAgICAgICAgICAgIHBvcz17cG9zaXRpb259XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUNoYW5nZT17Y2hhbmdlUG9zfVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbG9zZT17aGFuZGxlQ2xvc2V9XG4gICAgICAgICAgICAgICAgLz48L01vZGFsLkJvZHk+XG4gICAgICAgICAgICA8L01vZGFsPlxuICAgICAgICA8L2Rpdj5cbiAgICApXG59XG5cbkVkaXRQb3NpdGlvbkNvbXBvbmVudC5wcm9wVHlwZXMgPSB7XG4gICAgc2hvcDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2hvcCksXG4gICAgcG9zaXRpb246IFByb3BUeXBlcy5pbnN0YW5jZU9mKFBvcyksXG4gICAgY2hhbmdlUG9zOiBQcm9wVHlwZXMuZnVuY1xufVxuXG5cbmV4cG9ydCBkZWZhdWx0IEVkaXRQb3NpdGlvbkNvbXBvbmVudFxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xyXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxyXG5pbXBvcnQge1Bvc30gZnJvbSBcIi4uLy4uL21vZGVsL3Bvc1wiXHJcbmltcG9ydCBCdXR0b24gZnJvbSAnLi4vYmFzZS9CdXR0b24nXHJcbmltcG9ydCBFZGl0UG9zaXRpb25Db21wb25lbnQgZnJvbSAnLi9FZGl0UG9zaXRpb25Db21wb25lbnQnXHJcbmltcG9ydCB7IFNob3AgfSBmcm9tICcuLi8uLi9tb2RlbC9zaG9wJ1xyXG5pbXBvcnQgQ3VycmVuY3kgZnJvbSAnLi4vYmFzZS9DdXJyZW5jeSdcclxuXHJcblxyXG5jb25zdCBQb3NDb21wb25lbnQgPSAoe2luZGV4LCBwb3MsIGRlbFBvcywgY2hhbmdlUG9zLCBzaG9wfSkgPT4ge1xyXG5cclxuICAgIGNvbnN0IGRlbGV0ZVBvcyA9ICh1dWlkOiBTdHJpbmcpID0+IHtcclxuICAgICAgICBkZWxQb3ModXVpZClcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleCd9PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4LTEnfT57aW5kZXggKyAxfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4LTEnfT57cG9zLnByb2R1Y3QudGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSd9Pntwb3MuY291bnR9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSB0ZXh0LWVuZCd9PjxDdXJyZW5jeSBwcmljZT17IHBvcy5wcmljZS5hbGxOZXR9IC8+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSB0ZXh0LWVuZCd9PjxDdXJyZW5jeSBwcmljZT17IHBvcy5wcmljZS5hbGxWYXR9IC8+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSB0ZXh0LWVuZCd9PjxDdXJyZW5jeSBwcmljZT17IHBvcy5wcmljZS5hbGxHcm9zc30gLz48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xIHRleHQtZW5kJ30+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSB0ZXh0LWVuZCd9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RWRpdFBvc2l0aW9uQ29tcG9uZW50IHNob3A9e3Nob3B9IHBvc2l0aW9uPXtwb3N9IGNoYW5nZVBvcz17Y2hhbmdlUG9zfSAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9ezV9IHZhcmlhbnQ9eydmYWlsdXJlJ30gb25DbGljaz17KCkgPT4gZGVsZXRlUG9zKHBvcy51dWlkKX0gLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGhyLz5cclxuICAgICAgICA8Lz5cclxuICAgIClcclxufVxyXG5cclxuUG9zQ29tcG9uZW50LnByb3BUeXBlcyA9IHtcclxuICAgIGluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxyXG4gICAgcG9zOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihQb3MpLFxyXG4gICAgc2hvcDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2hvcCksXHJcbiAgICBkZWxQb3M6IFByb3BUeXBlcy5mdW5jLFxyXG4gICAgY2hhbmdlUG9zOiBQcm9wVHlwZXMuZnVuY1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBQb3NDb21wb25lbnRcclxuIiwiaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcclxuaW1wb3J0IFBvc0NvbXBvbmVudCBmcm9tIFwiLi9Qb3NDb21wb25lbnRcIlxyXG5pbXBvcnQge3VzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCJcclxuaW1wb3J0IHtPcmRlcn0gZnJvbSBcIi4uLy4uL21vZGVsL29yZGVyXCJcclxuaW1wb3J0IHsgU2hvcCB9IGZyb20gJy4uLy4uL21vZGVsL3Nob3AnXHJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcclxuXHJcbmNvbnN0IEl0ZW1zQ29tcG9uZW50ID0gKHtwb3NpdGlvbnMsIGRlbFBvcywgc2hvcCwgY2hhbmdlUG9zfSkgPT4ge1xyXG5cclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleCd9PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4LTEnfT5cclxuICAgICAgICAgICAgICAgICAgICA8aDU+UG9zPC9oNT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4LTEnfT5cclxuICAgICAgICAgICAgICAgICAgICA8aDU+VGl0bGU8L2g1PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSd9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNT5BbnphaGw8L2g1PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZsZXgtMSB0ZXh0LWVuZCd9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNT5OZXR0bzwvaDU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xIHRleHQtZW5kJ30+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg1PlRheDwvaDU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmxleC0xIHRleHQtZW5kJ30+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg1Pkdyb3NzPC9oNT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4LTEgdGV4dC1lbmQnfT5cclxuICAgICAgICAgICAgICAgICAgICA8aDU+U3RhdHVzPC9oNT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmbGV4LTEnfT5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxoci8+XHJcbiAgICAgICAgICAgIHtwb3NpdGlvbnMubWFwKChvYmplY3QsIGkpID0+IDxQb3NDb21wb25lbnQgcG9zPXtvYmplY3R9IHNob3A9e3Nob3B9IGRlbFBvcz17ZGVsUG9zfSBjaGFuZ2VQb3M9e2NoYW5nZVBvc30ga2V5PXtpfSBpbmRleD17aX0gLz4pfVxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIClcclxufVxyXG5cclxuSXRlbXNDb21wb25lbnQucHJvcFR5cGVzID0ge1xyXG4gICAgcG9zaXRpb25zOiBQcm9wVHlwZXMuYXJyYXksXHJcbiAgICBkZWxQb3M6IFByb3BUeXBlcy5mdW5jLFxyXG4gICAgY2hhbmdlUG9zOiBQcm9wVHlwZXMuZnVuYyxcclxuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEl0ZW1zQ29tcG9uZW50XHJcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBBZGRQb3NpdGlvbkNvbXBvbmVudCBmcm9tIFwiLi9BZGRQb3NpdGlvbkNvbXBvbmVudFwiXG5pbXBvcnQgSXRlbXNDb21wb25lbnQgZnJvbSBcIi4vSXRlbXNDb21wb25lbnRcIlxuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCB7IFNob3AgfSBmcm9tICcuLi8uLi9tb2RlbC9zaG9wJ1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtQb3N9IGZyb20gXCIuLi8uLi9tb2RlbC9wb3NcIlxuaW1wb3J0IE9yZGVyIGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiXG5pbXBvcnQgT3JkZXJTdGF0ZSBmcm9tIFwiLi4vLi4vc3RhdGUvb3JkZXJcIlxuaW1wb3J0IHtjb250YWluZXJ9IGZyb20gXCJ0c3lyaW5nZS1uZW9cIlxuY29uc3QgUG9zaXRpb25zQ29tcG9uZW50ID0gKHtvcmRlciwgc2hvcCwgdXBkYXRlT3JkZXJ9KSA9PiB7XG5cbiAgICBjb25zdCBvcmRlclN0YXRlID0gY29udGFpbmVyLnJlc29sdmUoT3JkZXJTdGF0ZSlcblxuICAgIGNvbnN0IFtwb3NpdGlvbnMsIHNldFBvc2l0aW9uc10gPSB1c2VTdGF0ZTxBcnJheTxQb3M+PihvcmRlci5wb3NpdGlvbnMpXG5cbiAgICBjb25zdCBhZGRQb3MgPSAocG9zT2JqKSA9PiB7XG4gICAgICAgIHNldFBvc2l0aW9ucyhbLi4ucG9zaXRpb25zLCBwb3NPYmpdKVxuICAgIH1cblxuICAgIGNvbnN0IGNoYW5nZVBvcyA9IChwb3NPYmopID0+IHtcbiAgICAgICAgY29uc3QgbmV4dENvdW50ZXJzID0gcG9zaXRpb25zLm1hcCgoYywgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKGMudXVpZCA9PT0gcG9zT2JqLnV1aWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHBvc09ialxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgc2V0UG9zaXRpb25zKG5leHRDb3VudGVycylcbiAgICAgICAgXG4gICAgfVxuXG4gICAgY29uc3QgZGVsUG9zID0gKHV1aWQpID0+IHtcbiAgICAgICAgbGV0IHBvcyA9IHBvc2l0aW9ucy5maWx0ZXIoKG9iaikgPT4gb2JqLnV1aWQgIT09IHV1aWQpXG5cbiAgICAgICAgc2V0UG9zaXRpb25zKHBvcylcbiAgICB9XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsZXQgb3JkZXJPYmogPSBvcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLnZhbHVlXG4gICAgICAgIG9yZGVyT2JqLnBvc2l0aW9ucyA9IHBvc2l0aW9uc1xuICAgICAgICBvcmRlclN0YXRlLnNldEN1cnJlbnRPcmRlcihvcmRlck9iailcbiAgICB9LCBbcG9zaXRpb25zXSlcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcInAtMlwifT5cbiAgICAgICAgICAgIDxJdGVtc0NvbXBvbmVudCBwb3NpdGlvbnM9e3Bvc2l0aW9uc30gc2hvcD17c2hvcH0gZGVsUG9zPXtkZWxQb3N9IGNoYW5nZVBvcz17Y2hhbmdlUG9zfS8+XG4gICAgICAgICAgICA8QWRkUG9zaXRpb25Db21wb25lbnQgc2hvcD17c2hvcH0gYWRkUG9zPXthZGRQb3N9Lz5cbiAgICAgICAgPC9kaXY+XG4gICAgKVxufVxuXG5Qb3NpdGlvbnNDb21wb25lbnQucHJvcFR5cGVzID0ge1xuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxuICAgIG9yZGVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihPcmRlciksXG4gICAgdXBkYXRlT3JkZXI6IFByb3BUeXBlcy5mdW5jXG59XG5cbmV4cG9ydCBkZWZhdWx0IFBvc2l0aW9uc0NvbXBvbmVudFxuIiwiaW1wb3J0IHtpbmplY3QsIGF1dG9JbmplY3RhYmxlLCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZS1uZW9cIlxyXG5pbXBvcnQgVG9rZW4gZnJvbSBcIi4vdG9rZW5cIlxyXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnXHJcbmltcG9ydCB7IFNob3AgfSBmcm9tIFwiLi4vbW9kZWwvc2hvcFwiXHJcbmltcG9ydCB7UGF5bWVudH0gZnJvbSBcIi4uL21vZGVsL3BheW1lbnRcIlxyXG5cclxuQHNpbmdsZXRvbigpXHJcbkBhdXRvSW5qZWN0YWJsZSgpXHJcbmNsYXNzIFBheW1lbnRTZXJ2aWNlIHtcclxuICAgIGNvbnN0cnVjdG9yKEBpbmplY3QoVG9rZW4pIHRva2VuPzogVG9rZW4pIHtcclxuICAgICAgICB0aGlzLnRva2VuID0gdG9rZW5cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRQYXltZW50cyhzaG9wOiBTaG9wKTogUHJvbWlzZTxQYXltZW50W10+IHtcclxuXHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IGF4aW9zLmdldCgnL2FwcHMvYXBpL3BheW1lbnQvYnkvc2hvcC8nICsgc2hvcC51dWlkLCB7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBwYXltZW50ID0gbmV3IFBheW1lbnQoKVxyXG4gICAgICAgICAgICAgICAgcGF5bWVudC51aWQgPSBpdGVtLnVpZFxyXG4gICAgICAgICAgICAgICAgcGF5bWVudC50aXRsZSA9IGl0ZW0udGl0bGVcclxuICAgICAgICAgICAgICAgIHBheW1lbnQudXVpZCA9IGl0ZW0udXVpZFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBheW1lbnRcclxuICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgUGF5bWVudFNlcnZpY2VcclxuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXHJcbmltcG9ydCB7IEFzeW5jUGFnaW5hdGUgfSBmcm9tIFwicmVhY3Qtc2VsZWN0LWFzeW5jLXBhZ2luYXRlXCJcclxuaW1wb3J0IFBheW1lbnRTZXJ2aWNlIGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9wYXltZW50XCJcclxuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcclxuaW1wb3J0IHsgU2hvcCB9IGZyb20gXCIuLi8uLi9tb2RlbC9zaG9wXCJcclxuaW1wb3J0IHsgY29udGFpbmVyIH0gZnJvbSBcInRzeXJpbmdlLW5lb1wiXHJcbmltcG9ydCBPcmRlclN0YXRlIGZyb20gXCIuLi8uLi9zdGF0ZS9vcmRlclwiXHJcbmltcG9ydCBPcmRlciBmcm9tIFwiLi4vLi4vbW9kZWwvb3JkZXJcIlxyXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCJcclxuaW1wb3J0IFNlbGVjdCBmcm9tICdyZWFjdC1zZWxlY3QnXHJcbmltcG9ydCB7IFNlbGVjdExhYmVsIH0gZnJvbSAnLi4vYmFzZS9TZWxlY3RMYWJlbCdcclxuXHJcbmNvbnN0IFBheW1lbnRDb21wb25lbnQgPSAoeyBzaG9wLCBvcmRlciB9KSA9PiB7XHJcblxyXG4gICAgY29uc3QgW3Nob3BVdWlkLCBzZXRTaG9wVXVpZF0gPSB1c2VTdGF0ZShudWxsKVxyXG4gICAgY29uc3Qgb3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpXHJcbiAgICBjb25zdCBbcGF5bWVudCwgc2V0UGF5bWVudF0gPSB1c2VTdGF0ZSgwKVxyXG4gICAgY29uc3QgcGF5bWVudF9zZXJ2aWNlID0gbmV3IFBheW1lbnRTZXJ2aWNlKClcclxuXHJcbiAgICBjb25zdCBsb2FkT3B0aW9ucyA9IGFzeW5jIChzZWFyY2hRdWVyeSwgbG9hZGVkT3B0aW9ucykgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBwYXltZW50X3NlcnZpY2UuZ2V0UGF5bWVudHMoc2hvcClcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgb3B0aW9uczogZGF0YSxcclxuICAgICAgICAgICAgaGFzTW9yZTogZmFsc2UsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgc2V0U2hvcFV1aWQoc2hvcC51dWlkKVxyXG4gICAgICB9LCBbc2hvcC51dWlkXSlcclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIHNldFBheW1lbnQob3JkZXIucGF5bWVudC51aWQpXHJcbiAgICB9LCBbb3JkZXIucGF5bWVudF0pXHJcblxyXG5cclxuICAgIGNvbnN0IG9uQ2hhbmdlID0gKG9wdGlvbikgPT4ge1xyXG4gICAgICAgIG9yZGVyLnBheW1lbnQgPSBvcHRpb25cclxuICAgICAgICBsZXQgb3JkZXJPYmogPSBvcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLmdldFZhbHVlKClcclxuICAgICAgICBvcmRlck9iai5wYXltZW50ID0gb3B0aW9uXHJcbiAgICAgICAgb3JkZXJTdGF0ZS5zZXRDdXJyZW50T3JkZXIob3JkZXJPYmopXHJcbiAgICAgICAgc2V0UGF5bWVudChvcHRpb24udWlkKVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wicC0yXCJ9PlxyXG4gICAgICAgICAgICA8QXN5bmNQYWdpbmF0ZVxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdE9wdGlvbnNcclxuICAgICAgICAgICAgICAgIGtleT17SlNPTi5zdHJpbmdpZnkoc2hvcFV1aWQpfVxyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50cz17eyBDb250cm9sOiBTZWxlY3RMYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtvcmRlci5wYXltZW50fVxyXG4gICAgICAgICAgICAgICAgbG9hZE9wdGlvbnM9e2xvYWRPcHRpb25zfVxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9JydcclxuICAgICAgICAgICAgICAgIG5hbWU9J1phaGxhcnQnXHJcbiAgICAgICAgICAgICAgICBnZXRPcHRpb25WYWx1ZT17KG9wdGlvbikgPT4gb3B0aW9uLnVpZH1cclxuICAgICAgICAgICAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiBvcHRpb24udGl0bGV9XHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XHJcbiAgICAgICAgICAgICAgICBpc1NlYXJjaGFibGU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtwYXltZW50ID09IDAgPyBcImJvcmRlciBib3JkZXItcmVkLTUwMFwiIDogXCJcIn1gfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKVxyXG59XHJcblxyXG5QYXltZW50Q29tcG9uZW50LnByb3BUeXBlcyA9IHtcclxuICAgIHNob3A6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNob3ApLFxyXG4gICAgb3JkZXI6IFByb3BUeXBlcy5pbnN0YW5jZU9mKE9yZGVyKSxcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgUGF5bWVudENvbXBvbmVudFxyXG4iLCJpbXBvcnQge2luamVjdCwgYXV0b0luamVjdGFibGUsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiXHJcbmltcG9ydCBUb2tlbiBmcm9tIFwiLi90b2tlblwiXHJcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcydcclxuaW1wb3J0IHsgU2hvcCB9IGZyb20gXCIuLi9tb2RlbC9zaG9wXCJcclxuaW1wb3J0IHtTaGlwcGluZ30gZnJvbSBcIi4uL21vZGVsL3NoaXBwaW5nXCJcclxuXHJcbkBzaW5nbGV0b24oKVxyXG5AYXV0b0luamVjdGFibGUoKVxyXG5jbGFzcyBTaGlwcGluZ1NlcnZpY2Uge1xyXG4gICAgY29uc3RydWN0b3IoQGluamVjdChUb2tlbikgdG9rZW4/OiBUb2tlbikge1xyXG4gICAgICAgIHRoaXMudG9rZW4gPSB0b2tlblxyXG4gICAgfVxyXG4gICAgYXN5bmMgZ2V0U2hpcHBpbmcoc2hvcDogU2hvcCk6IFByb21pc2U8U2hpcHBpbmdbXT4ge1xyXG5cclxuICAgICAgICByZXR1cm4gYXdhaXQgYXhpb3MuZ2V0KCcvYXBwcy9hcGkvc2hpcHBpbmcvYnkvc2hvcC8nICsgc2hvcC51dWlkLCB7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy50b2tlbj8uY3VycmVudFRva2VuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KS50aGVuKCggcmVzcG9uc2UgKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBzaGlwbWVudCA9IG5ldyBTaGlwcGluZygpXHJcbiAgICAgICAgICAgICAgICBzaGlwbWVudC51aWQgPSBpdGVtLnVpZFxyXG4gICAgICAgICAgICAgICAgc2hpcG1lbnQudGl0bGUgPSBpdGVtLnRpdGxlXHJcbiAgICAgICAgICAgICAgICBzaGlwbWVudC51dWlkID0gaXRlbS51dWlkXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc2hpcG1lbnRcclxuICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgU2hpcHBpbmdTZXJ2aWNlXHJcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xyXG5pbXBvcnQgeyBBc3luY1BhZ2luYXRlIH0gZnJvbSBcInJlYWN0LXNlbGVjdC1hc3luYy1wYWdpbmF0ZVwiXHJcbmltcG9ydCBTaGlwcGluZ1NlcnZpY2UgZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NoaXBwaW5nXCJcclxuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcclxuaW1wb3J0IHtTaG9wfSBmcm9tIFwiLi4vLi4vbW9kZWwvc2hvcFwiXHJcbmltcG9ydCB7Y29udGFpbmVyfSBmcm9tIFwidHN5cmluZ2UtbmVvXCJcclxuaW1wb3J0IE9yZGVyU3RhdGUgZnJvbSBcIi4uLy4uL3N0YXRlL29yZGVyXCJcclxuaW1wb3J0IE9yZGVyIGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiXHJcbmltcG9ydCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSBcInJlYWN0XCJcclxuaW1wb3J0IHsgU2VsZWN0TGFiZWwgfSBmcm9tICcuLi9iYXNlL1NlbGVjdExhYmVsJ1xyXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXHJcblxyXG5jb25zdCBTaGlwcGluZ0NvbXBvbmVudCA9ICh7c2hvcCwgb3JkZXJ9KSA9PiB7XHJcblxyXG4gICAgY29uc3QgW3Nob3BVdWlkLCBzZXRTaG9wVXVpZF0gPSB1c2VTdGF0ZShudWxsKVxyXG4gICAgY29uc3Qgb3JkZXJTdGF0ZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU3RhdGUpXHJcbiAgICBjb25zdCBbc2hpcHBpbmcsIHNldFNoaXBwaW5nXSA9IHVzZVN0YXRlKDApXHJcbiAgICBjb25zdCBzaGlwcGluZ19zZXJ2aWNlID0gbmV3IFNoaXBwaW5nU2VydmljZSgpXHJcbiAgICBcclxuICAgIGNvbnN0IGxvYWRPcHRpb25zID0gYXN5bmMgKHNlYXJjaFF1ZXJ5LCBsb2FkZWRPcHRpb25zKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHNoaXBwaW5nX3NlcnZpY2UuZ2V0U2hpcHBpbmcoc2hvcClcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgb3B0aW9uczogZGF0YSxcclxuICAgICAgICAgICAgaGFzTW9yZTogZmFsc2UsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgc2V0U2hvcFV1aWQoc2hvcC51dWlkKVxyXG4gICAgICB9LCBbc2hvcC51dWlkXSlcclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIHNldFNoaXBwaW5nKG9yZGVyLnNoaXBwaW5nLnVpZClcclxuICAgIH0sIFtvcmRlci5zaGlwcGluZ10pXHJcblxyXG4gICAgY29uc3Qgb25DaGFuZ2UgPSAob3B0aW9uKSA9PiB7XHJcbiAgICAgICAgb3JkZXIuc2hpcHBpbmcgPSBvcHRpb25cclxuICAgICAgICBsZXQgb3JkZXJPYmogPSBvcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLmdldFZhbHVlKClcclxuICAgICAgICBvcmRlck9iai5zaGlwcGluZyA9IG9wdGlvblxyXG4gICAgICAgIG9yZGVyU3RhdGUuc2V0Q3VycmVudE9yZGVyKG9yZGVyT2JqKVxyXG4gICAgICAgIHNldFNoaXBwaW5nKG9wdGlvbi51aWQpXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJwLTJcIn0+XHJcbiAgICAgICAgICAgIDxBc3luY1BhZ2luYXRlXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0T3B0aW9uc1xyXG4gICAgICAgICAgICAgICAga2V5PXtKU09OLnN0cmluZ2lmeShzaG9wVXVpZCl9XHJcbiAgICAgICAgICAgICAgICBjb21wb25lbnRzPXt7Q29udHJvbDogU2VsZWN0TGFiZWx9fVxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtvcmRlci5zaGlwcGluZ31cclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPScnXHJcbiAgICAgICAgICAgICAgICBuYW1lPSdWZXJzYW5kYXJ0J1xyXG4gICAgICAgICAgICAgICAgbG9hZE9wdGlvbnM9e2xvYWRPcHRpb25zfVxyXG4gICAgICAgICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9eyhvcHRpb24pID0+IG9wdGlvbi51aWR9XHJcbiAgICAgICAgICAgICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4gb3B0aW9uLnRpdGxlfVxyXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxyXG4gICAgICAgICAgICAgICAgaXNTZWFyY2hhYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c2hpcHBpbmcgPT0gMCA/IFwiYm9yZGVyIGJvcmRlci1yZWQtNTAwXCIgOiBcIlwifWB9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICA8L2Rpdj5cclxuKVxyXG59XHJcblxyXG5TaGlwcGluZ0NvbXBvbmVudC5wcm9wVHlwZXMgPSB7XHJcbiAgICBzaG9wOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihTaG9wKSxcclxuICAgIG9yZGVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihPcmRlciksXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFNoaXBwaW5nQ29tcG9uZW50XHJcbiIsImltcG9ydCBPcmRlclN0YXRlIGZyb20gJy4uLy4uL3N0YXRlL29yZGVyJ1xuaW1wb3J0IHtjb250YWluZXJ9IGZyb20gXCJ0c3lyaW5nZS1uZW9cIlxuaW1wb3J0IE9yZGVyU2VydmljZSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcmRlcidcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtkZWJvdW5jZVRpbWV9IGZyb20gXCJyeGpzXCJcbmltcG9ydCB7T3JkZXJ9IGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiZmxvd2JpdGUtcmVhY3RcIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jbGFzcyBCdXR0b25Db21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnQ8e2xvYWRPcmRlcn0se2Rpc2FibGVkOiBib29sZWFufT4ge1xuICAgIG9yZGVyU3RhdGU6IE9yZGVyU3RhdGVcbiAgICBvcmRlclNlcnZpY2U6IE9yZGVyU2VydmljZVxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKVxuICAgICAgICB0aGlzLm9yZGVyU3RhdGUgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclN0YXRlKVxuICAgICAgICB0aGlzLm9yZGVyU2VydmljZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU2VydmljZSlcblxuICAgICAgICB0aGlzLnN0YXRlID0ge2Rpc2FibGVkOiB0cnVlfVxuICAgIH1cblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICB0aGlzLm9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkucGlwZShkZWJvdW5jZVRpbWUoMjAwMCkpLnN1YnNjcmliZSgoZSkgPT4gdGhpcy5zYXZlQnV0dG9uKGUpKVxuICAgIH1cblxuICAgIHNhdmVCdXR0b24ob3JkZXI6IE9yZGVyKSB7XG4gICAgICAgIGlmKG9yZGVyLmNvbnRhY3QudXNlcm5hbWUgIT0gXCJcIlxuICAgICAgICAgICAgJiYgb3JkZXIucGF5bWVudC50aXRsZSAhPSBcIlwiXG4gICAgICAgICAgICAmJiBvcmRlci5zaGlwcGluZy50aXRsZSAhPSBcIlwiXG4gICAgICAgICAgICAmJiBvcmRlci5zaG9wLm5hbWUgIT0gXCJcIlxuICAgICAgICAgICAgJiYgb3JkZXIuYWNjb3VudC50aXRsZSAhPSBcIlwiXG4gICAgICAgICAgICAmJiBvcmRlci5pbnZvaWNlQWRkcmVzcy51dWlkICE9IFwiXCJcbiAgICAgICAgICAgICYmIG9yZGVyLnR5cGUgIT0gMFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe2Rpc2FibGVkOiBmYWxzZX0pXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBoYW5kbGVQcmludChlKSB7XG4gICAgICAgIGNvbnN0IHV1aWQgPSB0aGlzLm9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkudmFsdWUudXVpZDtcbiAgICAgICAgY29uc3QgdHlwZSA9IHRoaXMub3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS52YWx1ZS50eXBlO1xuICAgICAgICB3aW5kb3cub3BlbignL2FwcHMvYmFja2VuZC9vcmRlci9kZXRhaWwvcHJpbnQvJyArIHR5cGUgKyAnLycgKyB1dWlkKVxuICAgIH1cblxuICAgIGFzeW5jIGhhbmRsZVNhdmUoZSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcblxuICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgdGhpcy5vcmRlclNlcnZpY2Uuc2F2ZU9yZGVyKHRoaXMub3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS52YWx1ZSlcblxuICAgICAgICB0aGlzLnByb3BzLmxvYWRPcmRlcihyZXN1bHRbJ3V1aWQnXSlcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIHNpemU9XCJ4c1wiIGNvbG9yPVwiaW5mb1wiIGRpc2FibGVkPXt0aGlzLnN0YXRlLmRpc2FibGVkfSBvbkNsaWNrPXsoZTphbnkpID0+IHRoaXMuaGFuZGxlU2F2ZShlKX0+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBkYXRhLXNsb3Q9XCJpY29uXCIgZmlsbD1cIm5vbmVcIiBjbGFzcz1cIm1yLTIgaC01IHctNVwiPlxuICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBkPVwiTTYgMjAuMjVoMTJBMi4yNSAyLjI1IDAgMCAwIDIwLjI1IDE4VjcuNUwxNi41IDMuNzVINkEyLjI1IDIuMjUgMCAwIDAgMy43NSA2djEyQTIuMjUgMi4yNSAwIDAgMCA2IDIwLjI1em05Ljc1LTE2LjV2NWgtOS41di01ek0xMyA1LjVWN20tNi43NSA0LjI1aDExLjV2Ni41SDYuMjVaXCI+PC9wYXRoPlxuPC9zdmc+IFNwZWljaGVyblxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gc2l6ZT1cInhzXCIgY29sb3I9XCJzdWNjZXNzXCIgZGlzYWJsZWQ9eyF0aGlzLm9yZGVyU3RhdGUuZ2V0Q3VycmVudE9yZGVyKCkudmFsdWUuc2F2ZWR9IG9uQ2xpY2s9eyhlOmFueSkgPT4gdGhpcy5oYW5kbGVQcmludChlKX0+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGRhdGEtc2xvdD1cImljb25cIiBjbGFzcz1cIm1yLTIgaC01IHctNVwiPlxuICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBkPVwiTTYuNzIgMTMuODI5Yy0uMjQuMDMtLjQ4LjA2Mi0uNzIuMDk2bS43Mi0uMDk2YTQyLjQxNSA0Mi40MTUgMCAwIDEgMTAuNTYgMG0tMTAuNTYgMEw2LjM0IDE4bTEwLjk0LTQuMTcxYy4yNC4wMy40OC4wNjIuNzIuMDk2bS0uNzItLjA5NkwxNy42NiAxOG0wIDAgLjIyOSAyLjUyM2ExLjEyNSAxLjEyNSAwIDAgMS0xLjEyIDEuMjI3SDcuMjMxYy0uNjYyIDAtMS4xOC0uNTY4LTEuMTItMS4yMjdMNi4zNCAxOG0xMS4zMTggMGgxLjA5MUEyLjI1IDIuMjUgMCAwIDAgMjEgMTUuNzVWOS40NTZjMC0xLjA4MS0uNzY4LTIuMDE1LTEuODM3LTIuMTc1YTQ4LjA1NSA0OC4wNTUgMCAwIDAtMS45MTMtLjI0N002LjM0IDE4SDUuMjVBMi4yNSAyLjI1IDAgMCAxIDMgMTUuNzVWOS40NTZjMC0xLjA4MS43NjgtMi4wMTUgMS44MzctMi4xNzVhNDguMDQxIDQ4LjA0MSAwIDAgMSAxLjkxMy0uMjQ3bTEwLjUgMGE0OC41MzYgNDguNTM2IDAgMCAwLTEwLjUgMG0xMC41IDBWMy4zNzVjMC0uNjIxLS41MDQtMS4xMjUtMS4xMjUtMS4xMjVoLTguMjVjLS42MjEgMC0xLjEyNS41MDQtMS4xMjUgMS4xMjV2My42NTlNMTggMTAuNWguMDA4di4wMDhIMThWMTAuNVptLTMgMGguMDA4di4wMDhIMTVWMTAuNVpcIj48L3BhdGg+XG48L3N2Zz4gRHJ1Y2tlblxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIClcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBCdXR0b25Db21wb25lbnRcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5wYXJzZSA9IHBhcnNlO1xuZXhwb3J0cy5zZXJpYWxpemUgPSBzZXJpYWxpemU7XG4vKipcbiAqIFJlZ0V4cCB0byBtYXRjaCBjb29raWUtbmFtZSBpbiBSRkMgNjI2NSBzZWMgNC4xLjFcbiAqIFRoaXMgcmVmZXJzIG91dCB0byB0aGUgb2Jzb2xldGVkIGRlZmluaXRpb24gb2YgdG9rZW4gaW4gUkZDIDI2MTYgc2VjIDIuMlxuICogd2hpY2ggaGFzIGJlZW4gcmVwbGFjZWQgYnkgdGhlIHRva2VuIGRlZmluaXRpb24gaW4gUkZDIDcyMzAgYXBwZW5kaXggQi5cbiAqXG4gKiBjb29raWUtbmFtZSAgICAgICA9IHRva2VuXG4gKiB0b2tlbiAgICAgICAgICAgICA9IDEqdGNoYXJcbiAqIHRjaGFyICAgICAgICAgICAgID0gXCIhXCIgLyBcIiNcIiAvIFwiJFwiIC8gXCIlXCIgLyBcIiZcIiAvIFwiJ1wiIC9cbiAqICAgICAgICAgICAgICAgICAgICAgXCIqXCIgLyBcIitcIiAvIFwiLVwiIC8gXCIuXCIgLyBcIl5cIiAvIFwiX1wiIC9cbiAqICAgICAgICAgICAgICAgICAgICAgXCJgXCIgLyBcInxcIiAvIFwiflwiIC8gRElHSVQgLyBBTFBIQVxuICpcbiAqIE5vdGU6IEFsbG93aW5nIG1vcmUgY2hhcmFjdGVycyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2h0dHAvY29va2llL2lzc3Vlcy8xOTFcbiAqIEFsbG93IHNhbWUgcmFuZ2UgYXMgY29va2llIHZhbHVlLCBleGNlcHQgYD1gLCB3aGljaCBkZWxpbWl0cyBlbmQgb2YgbmFtZS5cbiAqL1xuY29uc3QgY29va2llTmFtZVJlZ0V4cCA9IC9eW1xcdTAwMjEtXFx1MDAzQVxcdTAwM0NcXHUwMDNFLVxcdTAwN0VdKyQvO1xuLyoqXG4gKiBSZWdFeHAgdG8gbWF0Y2ggY29va2llLXZhbHVlIGluIFJGQyA2MjY1IHNlYyA0LjEuMVxuICpcbiAqIGNvb2tpZS12YWx1ZSAgICAgID0gKmNvb2tpZS1vY3RldCAvICggRFFVT1RFICpjb29raWUtb2N0ZXQgRFFVT1RFIClcbiAqIGNvb2tpZS1vY3RldCAgICAgID0gJXgyMSAvICV4MjMtMkIgLyAleDJELTNBIC8gJXgzQy01QiAvICV4NUQtN0VcbiAqICAgICAgICAgICAgICAgICAgICAgOyBVUy1BU0NJSSBjaGFyYWN0ZXJzIGV4Y2x1ZGluZyBDVExzLFxuICogICAgICAgICAgICAgICAgICAgICA7IHdoaXRlc3BhY2UgRFFVT1RFLCBjb21tYSwgc2VtaWNvbG9uLFxuICogICAgICAgICAgICAgICAgICAgICA7IGFuZCBiYWNrc2xhc2hcbiAqXG4gKiBBbGxvd2luZyBtb3JlIGNoYXJhY3RlcnM6IGh0dHBzOi8vZ2l0aHViLmNvbS9qc2h0dHAvY29va2llL2lzc3Vlcy8xOTFcbiAqIENvbW1hLCBiYWNrc2xhc2gsIGFuZCBEUVVPVEUgYXJlIG5vdCBwYXJ0IG9mIHRoZSBwYXJzaW5nIGFsZ29yaXRobS5cbiAqL1xuY29uc3QgY29va2llVmFsdWVSZWdFeHAgPSAvXltcXHUwMDIxLVxcdTAwM0FcXHUwMDNDLVxcdTAwN0VdKiQvO1xuLyoqXG4gKiBSZWdFeHAgdG8gbWF0Y2ggZG9tYWluLXZhbHVlIGluIFJGQyA2MjY1IHNlYyA0LjEuMVxuICpcbiAqIGRvbWFpbi12YWx1ZSAgICAgID0gPHN1YmRvbWFpbj5cbiAqICAgICAgICAgICAgICAgICAgICAgOyBkZWZpbmVkIGluIFtSRkMxMDM0XSwgU2VjdGlvbiAzLjUsIGFzXG4gKiAgICAgICAgICAgICAgICAgICAgIDsgZW5oYW5jZWQgYnkgW1JGQzExMjNdLCBTZWN0aW9uIDIuMVxuICogPHN1YmRvbWFpbj4gICAgICAgPSA8bGFiZWw+IHwgPHN1YmRvbWFpbj4gXCIuXCIgPGxhYmVsPlxuICogPGxhYmVsPiAgICAgICAgICAgPSA8bGV0LWRpZz4gWyBbIDxsZGgtc3RyPiBdIDxsZXQtZGlnPiBdXG4gKiAgICAgICAgICAgICAgICAgICAgIExhYmVscyBtdXN0IGJlIDYzIGNoYXJhY3RlcnMgb3IgbGVzcy5cbiAqICAgICAgICAgICAgICAgICAgICAgJ2xldC1kaWcnIG5vdCAnbGV0dGVyJyBpbiB0aGUgZmlyc3QgY2hhciwgcGVyIFJGQzExMjNcbiAqIDxsZGgtc3RyPiAgICAgICAgID0gPGxldC1kaWctaHlwPiB8IDxsZXQtZGlnLWh5cD4gPGxkaC1zdHI+XG4gKiA8bGV0LWRpZy1oeXA+ICAgICA9IDxsZXQtZGlnPiB8IFwiLVwiXG4gKiA8bGV0LWRpZz4gICAgICAgICA9IDxsZXR0ZXI+IHwgPGRpZ2l0PlxuICogPGxldHRlcj4gICAgICAgICAgPSBhbnkgb25lIG9mIHRoZSA1MiBhbHBoYWJldGljIGNoYXJhY3RlcnMgQSB0aHJvdWdoIFogaW5cbiAqICAgICAgICAgICAgICAgICAgICAgdXBwZXIgY2FzZSBhbmQgYSB0aHJvdWdoIHogaW4gbG93ZXIgY2FzZVxuICogPGRpZ2l0PiAgICAgICAgICAgPSBhbnkgb25lIG9mIHRoZSB0ZW4gZGlnaXRzIDAgdGhyb3VnaCA5XG4gKlxuICogS2VlcCBzdXBwb3J0IGZvciBsZWFkaW5nIGRvdDogaHR0cHM6Ly9naXRodWIuY29tL2pzaHR0cC9jb29raWUvaXNzdWVzLzE3M1xuICpcbiAqID4gKE5vdGUgdGhhdCBhIGxlYWRpbmcgJXgyRSAoXCIuXCIpLCBpZiBwcmVzZW50LCBpcyBpZ25vcmVkIGV2ZW4gdGhvdWdoIHRoYXRcbiAqIGNoYXJhY3RlciBpcyBub3QgcGVybWl0dGVkLCBidXQgYSB0cmFpbGluZyAleDJFIChcIi5cIiksIGlmIHByZXNlbnQsIHdpbGxcbiAqIGNhdXNlIHRoZSB1c2VyIGFnZW50IHRvIGlnbm9yZSB0aGUgYXR0cmlidXRlLilcbiAqL1xuY29uc3QgZG9tYWluVmFsdWVSZWdFeHAgPSAvXihbLl0/W2EtejAtOV0oW2EtejAtOS1dezAsNjF9W2EtejAtOV0pPykoWy5dW2EtejAtOV0oW2EtejAtOS1dezAsNjF9W2EtejAtOV0pPykqJC9pO1xuLyoqXG4gKiBSZWdFeHAgdG8gbWF0Y2ggcGF0aC12YWx1ZSBpbiBSRkMgNjI2NSBzZWMgNC4xLjFcbiAqXG4gKiBwYXRoLXZhbHVlICAgICAgICA9IDxhbnkgQ0hBUiBleGNlcHQgQ1RMcyBvciBcIjtcIj5cbiAqIENIQVIgICAgICAgICAgICAgID0gJXgwMS03RlxuICogICAgICAgICAgICAgICAgICAgICA7IGRlZmluZWQgaW4gUkZDIDUyMzQgYXBwZW5kaXggQi4xXG4gKi9cbmNvbnN0IHBhdGhWYWx1ZVJlZ0V4cCA9IC9eW1xcdTAwMjAtXFx1MDAzQVxcdTAwM0QtXFx1MDA3RV0qJC87XG5jb25zdCBfX3RvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbmNvbnN0IE51bGxPYmplY3QgPSAvKiBAX19QVVJFX18gKi8gKCgpID0+IHtcbiAgICBjb25zdCBDID0gZnVuY3Rpb24gKCkgeyB9O1xuICAgIEMucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICByZXR1cm4gQztcbn0pKCk7XG4vKipcbiAqIFBhcnNlIGEgY29va2llIGhlYWRlci5cbiAqXG4gKiBQYXJzZSB0aGUgZ2l2ZW4gY29va2llIGhlYWRlciBzdHJpbmcgaW50byBhbiBvYmplY3RcbiAqIFRoZSBvYmplY3QgaGFzIHRoZSB2YXJpb3VzIGNvb2tpZXMgYXMga2V5cyhuYW1lcykgPT4gdmFsdWVzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlKHN0ciwgb3B0aW9ucykge1xuICAgIGNvbnN0IG9iaiA9IG5ldyBOdWxsT2JqZWN0KCk7XG4gICAgY29uc3QgbGVuID0gc3RyLmxlbmd0aDtcbiAgICAvLyBSRkMgNjI2NSBzZWMgNC4xLjEsIFJGQyAyNjE2IDIuMiBkZWZpbmVzIGEgY29va2llIG5hbWUgY29uc2lzdHMgb2Ygb25lIGNoYXIgbWluaW11bSwgcGx1cyAnPScuXG4gICAgaWYgKGxlbiA8IDIpXG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgY29uc3QgZGVjID0gb3B0aW9ucz8uZGVjb2RlIHx8IGRlY29kZTtcbiAgICBsZXQgaW5kZXggPSAwO1xuICAgIGRvIHtcbiAgICAgICAgY29uc3QgZXFJZHggPSBzdHIuaW5kZXhPZihcIj1cIiwgaW5kZXgpO1xuICAgICAgICBpZiAoZXFJZHggPT09IC0xKVxuICAgICAgICAgICAgYnJlYWs7IC8vIE5vIG1vcmUgY29va2llIHBhaXJzLlxuICAgICAgICBjb25zdCBjb2xvbklkeCA9IHN0ci5pbmRleE9mKFwiO1wiLCBpbmRleCk7XG4gICAgICAgIGNvbnN0IGVuZElkeCA9IGNvbG9uSWR4ID09PSAtMSA/IGxlbiA6IGNvbG9uSWR4O1xuICAgICAgICBpZiAoZXFJZHggPiBlbmRJZHgpIHtcbiAgICAgICAgICAgIC8vIGJhY2t0cmFjayBvbiBwcmlvciBzZW1pY29sb25cbiAgICAgICAgICAgIGluZGV4ID0gc3RyLmxhc3RJbmRleE9mKFwiO1wiLCBlcUlkeCAtIDEpICsgMTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGtleVN0YXJ0SWR4ID0gc3RhcnRJbmRleChzdHIsIGluZGV4LCBlcUlkeCk7XG4gICAgICAgIGNvbnN0IGtleUVuZElkeCA9IGVuZEluZGV4KHN0ciwgZXFJZHgsIGtleVN0YXJ0SWR4KTtcbiAgICAgICAgY29uc3Qga2V5ID0gc3RyLnNsaWNlKGtleVN0YXJ0SWR4LCBrZXlFbmRJZHgpO1xuICAgICAgICAvLyBvbmx5IGFzc2lnbiBvbmNlXG4gICAgICAgIGlmIChvYmpba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsZXQgdmFsU3RhcnRJZHggPSBzdGFydEluZGV4KHN0ciwgZXFJZHggKyAxLCBlbmRJZHgpO1xuICAgICAgICAgICAgbGV0IHZhbEVuZElkeCA9IGVuZEluZGV4KHN0ciwgZW5kSWR4LCB2YWxTdGFydElkeCk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGRlYyhzdHIuc2xpY2UodmFsU3RhcnRJZHgsIHZhbEVuZElkeCkpO1xuICAgICAgICAgICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpbmRleCA9IGVuZElkeCArIDE7XG4gICAgfSB3aGlsZSAoaW5kZXggPCBsZW4pO1xuICAgIHJldHVybiBvYmo7XG59XG5mdW5jdGlvbiBzdGFydEluZGV4KHN0ciwgaW5kZXgsIG1heCkge1xuICAgIGRvIHtcbiAgICAgICAgY29uc3QgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICAgICAgaWYgKGNvZGUgIT09IDB4MjAgLyogICAqLyAmJiBjb2RlICE9PSAweDA5IC8qIFxcdCAqLylcbiAgICAgICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9IHdoaWxlICgrK2luZGV4IDwgbWF4KTtcbiAgICByZXR1cm4gbWF4O1xufVxuZnVuY3Rpb24gZW5kSW5kZXgoc3RyLCBpbmRleCwgbWluKSB7XG4gICAgd2hpbGUgKGluZGV4ID4gbWluKSB7XG4gICAgICAgIGNvbnN0IGNvZGUgPSBzdHIuY2hhckNvZGVBdCgtLWluZGV4KTtcbiAgICAgICAgaWYgKGNvZGUgIT09IDB4MjAgLyogICAqLyAmJiBjb2RlICE9PSAweDA5IC8qIFxcdCAqLylcbiAgICAgICAgICAgIHJldHVybiBpbmRleCArIDE7XG4gICAgfVxuICAgIHJldHVybiBtaW47XG59XG4vKipcbiAqIFNlcmlhbGl6ZSBkYXRhIGludG8gYSBjb29raWUgaGVhZGVyLlxuICpcbiAqIFNlcmlhbGl6ZSBhIG5hbWUgdmFsdWUgcGFpciBpbnRvIGEgY29va2llIHN0cmluZyBzdWl0YWJsZSBmb3JcbiAqIGh0dHAgaGVhZGVycy4gQW4gb3B0aW9uYWwgb3B0aW9ucyBvYmplY3Qgc3BlY2lmaWVzIGNvb2tpZSBwYXJhbWV0ZXJzLlxuICpcbiAqIHNlcmlhbGl6ZSgnZm9vJywgJ2JhcicsIHsgaHR0cE9ubHk6IHRydWUgfSlcbiAqICAgPT4gXCJmb289YmFyOyBodHRwT25seVwiXG4gKi9cbmZ1bmN0aW9uIHNlcmlhbGl6ZShuYW1lLCB2YWwsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBlbmMgPSBvcHRpb25zPy5lbmNvZGUgfHwgZW5jb2RlVVJJQ29tcG9uZW50O1xuICAgIGlmICghY29va2llTmFtZVJlZ0V4cC50ZXN0KG5hbWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGFyZ3VtZW50IG5hbWUgaXMgaW52YWxpZDogJHtuYW1lfWApO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IGVuYyh2YWwpO1xuICAgIGlmICghY29va2llVmFsdWVSZWdFeHAudGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgYXJndW1lbnQgdmFsIGlzIGludmFsaWQ6ICR7dmFsfWApO1xuICAgIH1cbiAgICBsZXQgc3RyID0gbmFtZSArIFwiPVwiICsgdmFsdWU7XG4gICAgaWYgKCFvcHRpb25zKVxuICAgICAgICByZXR1cm4gc3RyO1xuICAgIGlmIChvcHRpb25zLm1heEFnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihvcHRpb25zLm1heEFnZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYG9wdGlvbiBtYXhBZ2UgaXMgaW52YWxpZDogJHtvcHRpb25zLm1heEFnZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBzdHIgKz0gXCI7IE1heC1BZ2U9XCIgKyBvcHRpb25zLm1heEFnZTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZG9tYWluKSB7XG4gICAgICAgIGlmICghZG9tYWluVmFsdWVSZWdFeHAudGVzdChvcHRpb25zLmRvbWFpbikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYG9wdGlvbiBkb21haW4gaXMgaW52YWxpZDogJHtvcHRpb25zLmRvbWFpbn1gKTtcbiAgICAgICAgfVxuICAgICAgICBzdHIgKz0gXCI7IERvbWFpbj1cIiArIG9wdGlvbnMuZG9tYWluO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5wYXRoKSB7XG4gICAgICAgIGlmICghcGF0aFZhbHVlUmVnRXhwLnRlc3Qob3B0aW9ucy5wYXRoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgb3B0aW9uIHBhdGggaXMgaW52YWxpZDogJHtvcHRpb25zLnBhdGh9YCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RyICs9IFwiOyBQYXRoPVwiICsgb3B0aW9ucy5wYXRoO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5leHBpcmVzKSB7XG4gICAgICAgIGlmICghaXNEYXRlKG9wdGlvbnMuZXhwaXJlcykgfHxcbiAgICAgICAgICAgICFOdW1iZXIuaXNGaW5pdGUob3B0aW9ucy5leHBpcmVzLnZhbHVlT2YoKSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYG9wdGlvbiBleHBpcmVzIGlzIGludmFsaWQ6ICR7b3B0aW9ucy5leHBpcmVzfWApO1xuICAgICAgICB9XG4gICAgICAgIHN0ciArPSBcIjsgRXhwaXJlcz1cIiArIG9wdGlvbnMuZXhwaXJlcy50b1VUQ1N0cmluZygpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5odHRwT25seSkge1xuICAgICAgICBzdHIgKz0gXCI7IEh0dHBPbmx5XCI7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnNlY3VyZSkge1xuICAgICAgICBzdHIgKz0gXCI7IFNlY3VyZVwiO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5wYXJ0aXRpb25lZCkge1xuICAgICAgICBzdHIgKz0gXCI7IFBhcnRpdGlvbmVkXCI7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnByaW9yaXR5KSB7XG4gICAgICAgIGNvbnN0IHByaW9yaXR5ID0gdHlwZW9mIG9wdGlvbnMucHJpb3JpdHkgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8gb3B0aW9ucy5wcmlvcml0eS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgc3dpdGNoIChwcmlvcml0eSkge1xuICAgICAgICAgICAgY2FzZSBcImxvd1wiOlxuICAgICAgICAgICAgICAgIHN0ciArPSBcIjsgUHJpb3JpdHk9TG93XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwibWVkaXVtXCI6XG4gICAgICAgICAgICAgICAgc3RyICs9IFwiOyBQcmlvcml0eT1NZWRpdW1cIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJoaWdoXCI6XG4gICAgICAgICAgICAgICAgc3RyICs9IFwiOyBQcmlvcml0eT1IaWdoXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYG9wdGlvbiBwcmlvcml0eSBpcyBpbnZhbGlkOiAke29wdGlvbnMucHJpb3JpdHl9YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuc2FtZVNpdGUpIHtcbiAgICAgICAgY29uc3Qgc2FtZVNpdGUgPSB0eXBlb2Ygb3B0aW9ucy5zYW1lU2l0ZSA9PT0gXCJzdHJpbmdcIlxuICAgICAgICAgICAgPyBvcHRpb25zLnNhbWVTaXRlLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgIDogb3B0aW9ucy5zYW1lU2l0ZTtcbiAgICAgICAgc3dpdGNoIChzYW1lU2l0ZSkge1xuICAgICAgICAgICAgY2FzZSB0cnVlOlxuICAgICAgICAgICAgY2FzZSBcInN0cmljdFwiOlxuICAgICAgICAgICAgICAgIHN0ciArPSBcIjsgU2FtZVNpdGU9U3RyaWN0XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwibGF4XCI6XG4gICAgICAgICAgICAgICAgc3RyICs9IFwiOyBTYW1lU2l0ZT1MYXhcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJub25lXCI6XG4gICAgICAgICAgICAgICAgc3RyICs9IFwiOyBTYW1lU2l0ZT1Ob25lXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYG9wdGlvbiBzYW1lU2l0ZSBpcyBpbnZhbGlkOiAke29wdGlvbnMuc2FtZVNpdGV9YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbn1cbi8qKlxuICogVVJMLWRlY29kZSBzdHJpbmcgdmFsdWUuIE9wdGltaXplZCB0byBza2lwIG5hdGl2ZSBjYWxsIHdoZW4gbm8gJS5cbiAqL1xuZnVuY3Rpb24gZGVjb2RlKHN0cikge1xuICAgIGlmIChzdHIuaW5kZXhPZihcIiVcIikgPT09IC0xKVxuICAgICAgICByZXR1cm4gc3RyO1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoc3RyKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG59XG4vKipcbiAqIERldGVybWluZSBpZiB2YWx1ZSBpcyBhIERhdGUuXG4gKi9cbmZ1bmN0aW9uIGlzRGF0ZSh2YWwpIHtcbiAgICByZXR1cm4gX190b1N0cmluZy5jYWxsKHZhbCkgPT09IFwiW29iamVjdCBEYXRlXVwiO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiLyoqXG4gKiByZWFjdC1yb3V0ZXIgdjcuMS4wXG4gKlxuICogQ29weXJpZ2h0IChjKSBSZW1peCBTb2Z0d2FyZSBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFLm1kIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICogQGxpY2Vuc2UgTUlUXG4gKi9cblxuLy8gbGliL3JvdXRlci9oaXN0b3J5LnRzXG52YXIgQWN0aW9uID0gLyogQF9fUFVSRV9fICovICgoQWN0aW9uMikgPT4ge1xuICBBY3Rpb24yW1wiUG9wXCJdID0gXCJQT1BcIjtcbiAgQWN0aW9uMltcIlB1c2hcIl0gPSBcIlBVU0hcIjtcbiAgQWN0aW9uMltcIlJlcGxhY2VcIl0gPSBcIlJFUExBQ0VcIjtcbiAgcmV0dXJuIEFjdGlvbjI7XG59KShBY3Rpb24gfHwge30pO1xudmFyIFBvcFN0YXRlRXZlbnRUeXBlID0gXCJwb3BzdGF0ZVwiO1xuZnVuY3Rpb24gY3JlYXRlTWVtb3J5SGlzdG9yeShvcHRpb25zID0ge30pIHtcbiAgbGV0IHsgaW5pdGlhbEVudHJpZXMgPSBbXCIvXCJdLCBpbml0aWFsSW5kZXgsIHY1Q29tcGF0ID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gIGxldCBlbnRyaWVzO1xuICBlbnRyaWVzID0gaW5pdGlhbEVudHJpZXMubWFwKFxuICAgIChlbnRyeSwgaW5kZXgyKSA9PiBjcmVhdGVNZW1vcnlMb2NhdGlvbihcbiAgICAgIGVudHJ5LFxuICAgICAgdHlwZW9mIGVudHJ5ID09PSBcInN0cmluZ1wiID8gbnVsbCA6IGVudHJ5LnN0YXRlLFxuICAgICAgaW5kZXgyID09PSAwID8gXCJkZWZhdWx0XCIgOiB2b2lkIDBcbiAgICApXG4gICk7XG4gIGxldCBpbmRleCA9IGNsYW1wSW5kZXgoXG4gICAgaW5pdGlhbEluZGV4ID09IG51bGwgPyBlbnRyaWVzLmxlbmd0aCAtIDEgOiBpbml0aWFsSW5kZXhcbiAgKTtcbiAgbGV0IGFjdGlvbiA9IFwiUE9QXCIgLyogUG9wICovO1xuICBsZXQgbGlzdGVuZXIgPSBudWxsO1xuICBmdW5jdGlvbiBjbGFtcEluZGV4KG4pIHtcbiAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgobiwgMCksIGVudHJpZXMubGVuZ3RoIC0gMSk7XG4gIH1cbiAgZnVuY3Rpb24gZ2V0Q3VycmVudExvY2F0aW9uKCkge1xuICAgIHJldHVybiBlbnRyaWVzW2luZGV4XTtcbiAgfVxuICBmdW5jdGlvbiBjcmVhdGVNZW1vcnlMb2NhdGlvbih0bywgc3RhdGUgPSBudWxsLCBrZXkpIHtcbiAgICBsZXQgbG9jYXRpb24gPSBjcmVhdGVMb2NhdGlvbihcbiAgICAgIGVudHJpZXMgPyBnZXRDdXJyZW50TG9jYXRpb24oKS5wYXRobmFtZSA6IFwiL1wiLFxuICAgICAgdG8sXG4gICAgICBzdGF0ZSxcbiAgICAgIGtleVxuICAgICk7XG4gICAgd2FybmluZyhcbiAgICAgIGxvY2F0aW9uLnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gXCIvXCIsXG4gICAgICBgcmVsYXRpdmUgcGF0aG5hbWVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIG1lbW9yeSBoaXN0b3J5OiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICB0b1xuICAgICAgKX1gXG4gICAgKTtcbiAgICByZXR1cm4gbG9jYXRpb247XG4gIH1cbiAgZnVuY3Rpb24gY3JlYXRlSHJlZjIodG8pIHtcbiAgICByZXR1cm4gdHlwZW9mIHRvID09PSBcInN0cmluZ1wiID8gdG8gOiBjcmVhdGVQYXRoKHRvKTtcbiAgfVxuICBsZXQgaGlzdG9yeSA9IHtcbiAgICBnZXQgaW5kZXgoKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfSxcbiAgICBnZXQgYWN0aW9uKCkge1xuICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9LFxuICAgIGdldCBsb2NhdGlvbigpIHtcbiAgICAgIHJldHVybiBnZXRDdXJyZW50TG9jYXRpb24oKTtcbiAgICB9LFxuICAgIGNyZWF0ZUhyZWY6IGNyZWF0ZUhyZWYyLFxuICAgIGNyZWF0ZVVSTCh0bykge1xuICAgICAgcmV0dXJuIG5ldyBVUkwoY3JlYXRlSHJlZjIodG8pLCBcImh0dHA6Ly9sb2NhbGhvc3RcIik7XG4gICAgfSxcbiAgICBlbmNvZGVMb2NhdGlvbih0bykge1xuICAgICAgbGV0IHBhdGggPSB0eXBlb2YgdG8gPT09IFwic3RyaW5nXCIgPyBwYXJzZVBhdGgodG8pIDogdG87XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXRobmFtZTogcGF0aC5wYXRobmFtZSB8fCBcIlwiLFxuICAgICAgICBzZWFyY2g6IHBhdGguc2VhcmNoIHx8IFwiXCIsXG4gICAgICAgIGhhc2g6IHBhdGguaGFzaCB8fCBcIlwiXG4gICAgICB9O1xuICAgIH0sXG4gICAgcHVzaCh0bywgc3RhdGUpIHtcbiAgICAgIGFjdGlvbiA9IFwiUFVTSFwiIC8qIFB1c2ggKi87XG4gICAgICBsZXQgbmV4dExvY2F0aW9uID0gY3JlYXRlTWVtb3J5TG9jYXRpb24odG8sIHN0YXRlKTtcbiAgICAgIGluZGV4ICs9IDE7XG4gICAgICBlbnRyaWVzLnNwbGljZShpbmRleCwgZW50cmllcy5sZW5ndGgsIG5leHRMb2NhdGlvbik7XG4gICAgICBpZiAodjVDb21wYXQgJiYgbGlzdGVuZXIpIHtcbiAgICAgICAgbGlzdGVuZXIoeyBhY3Rpb24sIGxvY2F0aW9uOiBuZXh0TG9jYXRpb24sIGRlbHRhOiAxIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVwbGFjZSh0bywgc3RhdGUpIHtcbiAgICAgIGFjdGlvbiA9IFwiUkVQTEFDRVwiIC8qIFJlcGxhY2UgKi87XG4gICAgICBsZXQgbmV4dExvY2F0aW9uID0gY3JlYXRlTWVtb3J5TG9jYXRpb24odG8sIHN0YXRlKTtcbiAgICAgIGVudHJpZXNbaW5kZXhdID0gbmV4dExvY2F0aW9uO1xuICAgICAgaWYgKHY1Q29tcGF0ICYmIGxpc3RlbmVyKSB7XG4gICAgICAgIGxpc3RlbmVyKHsgYWN0aW9uLCBsb2NhdGlvbjogbmV4dExvY2F0aW9uLCBkZWx0YTogMCB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGdvKGRlbHRhKSB7XG4gICAgICBhY3Rpb24gPSBcIlBPUFwiIC8qIFBvcCAqLztcbiAgICAgIGxldCBuZXh0SW5kZXggPSBjbGFtcEluZGV4KGluZGV4ICsgZGVsdGEpO1xuICAgICAgbGV0IG5leHRMb2NhdGlvbiA9IGVudHJpZXNbbmV4dEluZGV4XTtcbiAgICAgIGluZGV4ID0gbmV4dEluZGV4O1xuICAgICAgaWYgKGxpc3RlbmVyKSB7XG4gICAgICAgIGxpc3RlbmVyKHsgYWN0aW9uLCBsb2NhdGlvbjogbmV4dExvY2F0aW9uLCBkZWx0YSB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGxpc3Rlbihmbikge1xuICAgICAgbGlzdGVuZXIgPSBmbjtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGxpc3RlbmVyID0gbnVsbDtcbiAgICAgIH07XG4gICAgfVxuICB9O1xuICByZXR1cm4gaGlzdG9yeTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUJyb3dzZXJIaXN0b3J5KG9wdGlvbnMgPSB7fSkge1xuICBmdW5jdGlvbiBjcmVhdGVCcm93c2VyTG9jYXRpb24od2luZG93MiwgZ2xvYmFsSGlzdG9yeSkge1xuICAgIGxldCB7IHBhdGhuYW1lLCBzZWFyY2gsIGhhc2ggfSA9IHdpbmRvdzIubG9jYXRpb247XG4gICAgcmV0dXJuIGNyZWF0ZUxvY2F0aW9uKFxuICAgICAgXCJcIixcbiAgICAgIHsgcGF0aG5hbWUsIHNlYXJjaCwgaGFzaCB9LFxuICAgICAgLy8gc3RhdGUgZGVmYXVsdHMgdG8gYG51bGxgIGJlY2F1c2UgYHdpbmRvdy5oaXN0b3J5LnN0YXRlYCBkb2VzXG4gICAgICBnbG9iYWxIaXN0b3J5LnN0YXRlICYmIGdsb2JhbEhpc3Rvcnkuc3RhdGUudXNyIHx8IG51bGwsXG4gICAgICBnbG9iYWxIaXN0b3J5LnN0YXRlICYmIGdsb2JhbEhpc3Rvcnkuc3RhdGUua2V5IHx8IFwiZGVmYXVsdFwiXG4gICAgKTtcbiAgfVxuICBmdW5jdGlvbiBjcmVhdGVCcm93c2VySHJlZih3aW5kb3cyLCB0bykge1xuICAgIHJldHVybiB0eXBlb2YgdG8gPT09IFwic3RyaW5nXCIgPyB0byA6IGNyZWF0ZVBhdGgodG8pO1xuICB9XG4gIHJldHVybiBnZXRVcmxCYXNlZEhpc3RvcnkoXG4gICAgY3JlYXRlQnJvd3NlckxvY2F0aW9uLFxuICAgIGNyZWF0ZUJyb3dzZXJIcmVmLFxuICAgIG51bGwsXG4gICAgb3B0aW9uc1xuICApO1xufVxuZnVuY3Rpb24gY3JlYXRlSGFzaEhpc3Rvcnkob3B0aW9ucyA9IHt9KSB7XG4gIGZ1bmN0aW9uIGNyZWF0ZUhhc2hMb2NhdGlvbih3aW5kb3cyLCBnbG9iYWxIaXN0b3J5KSB7XG4gICAgbGV0IHtcbiAgICAgIHBhdGhuYW1lID0gXCIvXCIsXG4gICAgICBzZWFyY2ggPSBcIlwiLFxuICAgICAgaGFzaCA9IFwiXCJcbiAgICB9ID0gcGFyc2VQYXRoKHdpbmRvdzIubG9jYXRpb24uaGFzaC5zdWJzdHJpbmcoMSkpO1xuICAgIGlmICghcGF0aG5hbWUuc3RhcnRzV2l0aChcIi9cIikgJiYgIXBhdGhuYW1lLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgICBwYXRobmFtZSA9IFwiL1wiICsgcGF0aG5hbWU7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVMb2NhdGlvbihcbiAgICAgIFwiXCIsXG4gICAgICB7IHBhdGhuYW1lLCBzZWFyY2gsIGhhc2ggfSxcbiAgICAgIC8vIHN0YXRlIGRlZmF1bHRzIHRvIGBudWxsYCBiZWNhdXNlIGB3aW5kb3cuaGlzdG9yeS5zdGF0ZWAgZG9lc1xuICAgICAgZ2xvYmFsSGlzdG9yeS5zdGF0ZSAmJiBnbG9iYWxIaXN0b3J5LnN0YXRlLnVzciB8fCBudWxsLFxuICAgICAgZ2xvYmFsSGlzdG9yeS5zdGF0ZSAmJiBnbG9iYWxIaXN0b3J5LnN0YXRlLmtleSB8fCBcImRlZmF1bHRcIlxuICAgICk7XG4gIH1cbiAgZnVuY3Rpb24gY3JlYXRlSGFzaEhyZWYod2luZG93MiwgdG8pIHtcbiAgICBsZXQgYmFzZSA9IHdpbmRvdzIuZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcImJhc2VcIik7XG4gICAgbGV0IGhyZWYgPSBcIlwiO1xuICAgIGlmIChiYXNlICYmIGJhc2UuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSkge1xuICAgICAgbGV0IHVybCA9IHdpbmRvdzIubG9jYXRpb24uaHJlZjtcbiAgICAgIGxldCBoYXNoSW5kZXggPSB1cmwuaW5kZXhPZihcIiNcIik7XG4gICAgICBocmVmID0gaGFzaEluZGV4ID09PSAtMSA/IHVybCA6IHVybC5zbGljZSgwLCBoYXNoSW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gaHJlZiArIFwiI1wiICsgKHR5cGVvZiB0byA9PT0gXCJzdHJpbmdcIiA/IHRvIDogY3JlYXRlUGF0aCh0bykpO1xuICB9XG4gIGZ1bmN0aW9uIHZhbGlkYXRlSGFzaExvY2F0aW9uKGxvY2F0aW9uLCB0bykge1xuICAgIHdhcm5pbmcoXG4gICAgICBsb2NhdGlvbi5wYXRobmFtZS5jaGFyQXQoMCkgPT09IFwiL1wiLFxuICAgICAgYHJlbGF0aXZlIHBhdGhuYW1lcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBoYXNoIGhpc3RvcnkucHVzaCgke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICB0b1xuICAgICAgKX0pYFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGdldFVybEJhc2VkSGlzdG9yeShcbiAgICBjcmVhdGVIYXNoTG9jYXRpb24sXG4gICAgY3JlYXRlSGFzaEhyZWYsXG4gICAgdmFsaWRhdGVIYXNoTG9jYXRpb24sXG4gICAgb3B0aW9uc1xuICApO1xufVxuZnVuY3Rpb24gaW52YXJpYW50KHZhbHVlLCBtZXNzYWdlKSB7XG4gIGlmICh2YWx1ZSA9PT0gZmFsc2UgfHwgdmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICB9XG59XG5mdW5jdGlvbiB3YXJuaW5nKGNvbmQsIG1lc3NhZ2UpIHtcbiAgaWYgKCFjb25kKSB7XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiKSBjb25zb2xlLndhcm4obWVzc2FnZSk7XG4gICAgdHJ5IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBjcmVhdGVLZXkoKSB7XG4gIHJldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgMTApO1xufVxuZnVuY3Rpb24gZ2V0SGlzdG9yeVN0YXRlKGxvY2F0aW9uLCBpbmRleCkge1xuICByZXR1cm4ge1xuICAgIHVzcjogbG9jYXRpb24uc3RhdGUsXG4gICAga2V5OiBsb2NhdGlvbi5rZXksXG4gICAgaWR4OiBpbmRleFxuICB9O1xufVxuZnVuY3Rpb24gY3JlYXRlTG9jYXRpb24oY3VycmVudCwgdG8sIHN0YXRlID0gbnVsbCwga2V5KSB7XG4gIGxldCBsb2NhdGlvbiA9IHtcbiAgICBwYXRobmFtZTogdHlwZW9mIGN1cnJlbnQgPT09IFwic3RyaW5nXCIgPyBjdXJyZW50IDogY3VycmVudC5wYXRobmFtZSxcbiAgICBzZWFyY2g6IFwiXCIsXG4gICAgaGFzaDogXCJcIixcbiAgICAuLi50eXBlb2YgdG8gPT09IFwic3RyaW5nXCIgPyBwYXJzZVBhdGgodG8pIDogdG8sXG4gICAgc3RhdGUsXG4gICAgLy8gVE9ETzogVGhpcyBjb3VsZCBiZSBjbGVhbmVkIHVwLiAgcHVzaC9yZXBsYWNlIHNob3VsZCBwcm9iYWJseSBqdXN0IHRha2VcbiAgICAvLyBmdWxsIExvY2F0aW9ucyBub3cgYW5kIGF2b2lkIHRoZSBuZWVkIHRvIHJ1biB0aHJvdWdoIHRoaXMgZmxvdyBhdCBhbGxcbiAgICAvLyBCdXQgdGhhdCdzIGEgcHJldHR5IGJpZyByZWZhY3RvciB0byB0aGUgY3VycmVudCB0ZXN0IHN1aXRlIHNvIGdvaW5nIHRvXG4gICAgLy8ga2VlcCBhcyBpcyBmb3IgdGhlIHRpbWUgYmVpbmcgYW5kIGp1c3QgbGV0IGFueSBpbmNvbWluZyBrZXlzIHRha2UgcHJlY2VkZW5jZVxuICAgIGtleTogdG8gJiYgdG8ua2V5IHx8IGtleSB8fCBjcmVhdGVLZXkoKVxuICB9O1xuICByZXR1cm4gbG9jYXRpb247XG59XG5mdW5jdGlvbiBjcmVhdGVQYXRoKHtcbiAgcGF0aG5hbWUgPSBcIi9cIixcbiAgc2VhcmNoID0gXCJcIixcbiAgaGFzaCA9IFwiXCJcbn0pIHtcbiAgaWYgKHNlYXJjaCAmJiBzZWFyY2ggIT09IFwiP1wiKVxuICAgIHBhdGhuYW1lICs9IHNlYXJjaC5jaGFyQXQoMCkgPT09IFwiP1wiID8gc2VhcmNoIDogXCI/XCIgKyBzZWFyY2g7XG4gIGlmIChoYXNoICYmIGhhc2ggIT09IFwiI1wiKVxuICAgIHBhdGhuYW1lICs9IGhhc2guY2hhckF0KDApID09PSBcIiNcIiA/IGhhc2ggOiBcIiNcIiArIGhhc2g7XG4gIHJldHVybiBwYXRobmFtZTtcbn1cbmZ1bmN0aW9uIHBhcnNlUGF0aChwYXRoKSB7XG4gIGxldCBwYXJzZWRQYXRoID0ge307XG4gIGlmIChwYXRoKSB7XG4gICAgbGV0IGhhc2hJbmRleCA9IHBhdGguaW5kZXhPZihcIiNcIik7XG4gICAgaWYgKGhhc2hJbmRleCA+PSAwKSB7XG4gICAgICBwYXJzZWRQYXRoLmhhc2ggPSBwYXRoLnN1YnN0cmluZyhoYXNoSW5kZXgpO1xuICAgICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKDAsIGhhc2hJbmRleCk7XG4gICAgfVxuICAgIGxldCBzZWFyY2hJbmRleCA9IHBhdGguaW5kZXhPZihcIj9cIik7XG4gICAgaWYgKHNlYXJjaEluZGV4ID49IDApIHtcbiAgICAgIHBhcnNlZFBhdGguc2VhcmNoID0gcGF0aC5zdWJzdHJpbmcoc2VhcmNoSW5kZXgpO1xuICAgICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKDAsIHNlYXJjaEluZGV4KTtcbiAgICB9XG4gICAgaWYgKHBhdGgpIHtcbiAgICAgIHBhcnNlZFBhdGgucGF0aG5hbWUgPSBwYXRoO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcGFyc2VkUGF0aDtcbn1cbmZ1bmN0aW9uIGdldFVybEJhc2VkSGlzdG9yeShnZXRMb2NhdGlvbiwgY3JlYXRlSHJlZjIsIHZhbGlkYXRlTG9jYXRpb24sIG9wdGlvbnMgPSB7fSkge1xuICBsZXQgeyB3aW5kb3c6IHdpbmRvdzIgPSBkb2N1bWVudC5kZWZhdWx0VmlldywgdjVDb21wYXQgPSBmYWxzZSB9ID0gb3B0aW9ucztcbiAgbGV0IGdsb2JhbEhpc3RvcnkgPSB3aW5kb3cyLmhpc3Rvcnk7XG4gIGxldCBhY3Rpb24gPSBcIlBPUFwiIC8qIFBvcCAqLztcbiAgbGV0IGxpc3RlbmVyID0gbnVsbDtcbiAgbGV0IGluZGV4ID0gZ2V0SW5kZXgoKTtcbiAgaWYgKGluZGV4ID09IG51bGwpIHtcbiAgICBpbmRleCA9IDA7XG4gICAgZ2xvYmFsSGlzdG9yeS5yZXBsYWNlU3RhdGUoeyAuLi5nbG9iYWxIaXN0b3J5LnN0YXRlLCBpZHg6IGluZGV4IH0sIFwiXCIpO1xuICB9XG4gIGZ1bmN0aW9uIGdldEluZGV4KCkge1xuICAgIGxldCBzdGF0ZSA9IGdsb2JhbEhpc3Rvcnkuc3RhdGUgfHwgeyBpZHg6IG51bGwgfTtcbiAgICByZXR1cm4gc3RhdGUuaWR4O1xuICB9XG4gIGZ1bmN0aW9uIGhhbmRsZVBvcCgpIHtcbiAgICBhY3Rpb24gPSBcIlBPUFwiIC8qIFBvcCAqLztcbiAgICBsZXQgbmV4dEluZGV4ID0gZ2V0SW5kZXgoKTtcbiAgICBsZXQgZGVsdGEgPSBuZXh0SW5kZXggPT0gbnVsbCA/IG51bGwgOiBuZXh0SW5kZXggLSBpbmRleDtcbiAgICBpbmRleCA9IG5leHRJbmRleDtcbiAgICBpZiAobGlzdGVuZXIpIHtcbiAgICAgIGxpc3RlbmVyKHsgYWN0aW9uLCBsb2NhdGlvbjogaGlzdG9yeS5sb2NhdGlvbiwgZGVsdGEgfSk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHB1c2godG8sIHN0YXRlKSB7XG4gICAgYWN0aW9uID0gXCJQVVNIXCIgLyogUHVzaCAqLztcbiAgICBsZXQgbG9jYXRpb24gPSBjcmVhdGVMb2NhdGlvbihoaXN0b3J5LmxvY2F0aW9uLCB0bywgc3RhdGUpO1xuICAgIGlmICh2YWxpZGF0ZUxvY2F0aW9uKSB2YWxpZGF0ZUxvY2F0aW9uKGxvY2F0aW9uLCB0byk7XG4gICAgaW5kZXggPSBnZXRJbmRleCgpICsgMTtcbiAgICBsZXQgaGlzdG9yeVN0YXRlID0gZ2V0SGlzdG9yeVN0YXRlKGxvY2F0aW9uLCBpbmRleCk7XG4gICAgbGV0IHVybCA9IGhpc3RvcnkuY3JlYXRlSHJlZihsb2NhdGlvbik7XG4gICAgdHJ5IHtcbiAgICAgIGdsb2JhbEhpc3RvcnkucHVzaFN0YXRlKGhpc3RvcnlTdGF0ZSwgXCJcIiwgdXJsKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uICYmIGVycm9yLm5hbWUgPT09IFwiRGF0YUNsb25lRXJyb3JcIikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIHdpbmRvdzIubG9jYXRpb24uYXNzaWduKHVybCk7XG4gICAgfVxuICAgIGlmICh2NUNvbXBhdCAmJiBsaXN0ZW5lcikge1xuICAgICAgbGlzdGVuZXIoeyBhY3Rpb24sIGxvY2F0aW9uOiBoaXN0b3J5LmxvY2F0aW9uLCBkZWx0YTogMSB9KTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcmVwbGFjZTIodG8sIHN0YXRlKSB7XG4gICAgYWN0aW9uID0gXCJSRVBMQUNFXCIgLyogUmVwbGFjZSAqLztcbiAgICBsZXQgbG9jYXRpb24gPSBjcmVhdGVMb2NhdGlvbihoaXN0b3J5LmxvY2F0aW9uLCB0bywgc3RhdGUpO1xuICAgIGlmICh2YWxpZGF0ZUxvY2F0aW9uKSB2YWxpZGF0ZUxvY2F0aW9uKGxvY2F0aW9uLCB0byk7XG4gICAgaW5kZXggPSBnZXRJbmRleCgpO1xuICAgIGxldCBoaXN0b3J5U3RhdGUgPSBnZXRIaXN0b3J5U3RhdGUobG9jYXRpb24sIGluZGV4KTtcbiAgICBsZXQgdXJsID0gaGlzdG9yeS5jcmVhdGVIcmVmKGxvY2F0aW9uKTtcbiAgICBnbG9iYWxIaXN0b3J5LnJlcGxhY2VTdGF0ZShoaXN0b3J5U3RhdGUsIFwiXCIsIHVybCk7XG4gICAgaWYgKHY1Q29tcGF0ICYmIGxpc3RlbmVyKSB7XG4gICAgICBsaXN0ZW5lcih7IGFjdGlvbiwgbG9jYXRpb246IGhpc3RvcnkubG9jYXRpb24sIGRlbHRhOiAwIH0pO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBjcmVhdGVVUkwodG8pIHtcbiAgICBsZXQgYmFzZSA9IHdpbmRvdzIubG9jYXRpb24ub3JpZ2luICE9PSBcIm51bGxcIiA/IHdpbmRvdzIubG9jYXRpb24ub3JpZ2luIDogd2luZG93Mi5sb2NhdGlvbi5ocmVmO1xuICAgIGxldCBocmVmID0gdHlwZW9mIHRvID09PSBcInN0cmluZ1wiID8gdG8gOiBjcmVhdGVQYXRoKHRvKTtcbiAgICBocmVmID0gaHJlZi5yZXBsYWNlKC8gJC8sIFwiJTIwXCIpO1xuICAgIGludmFyaWFudChcbiAgICAgIGJhc2UsXG4gICAgICBgTm8gd2luZG93LmxvY2F0aW9uLihvcmlnaW58aHJlZikgYXZhaWxhYmxlIHRvIGNyZWF0ZSBVUkwgZm9yIGhyZWY6ICR7aHJlZn1gXG4gICAgKTtcbiAgICByZXR1cm4gbmV3IFVSTChocmVmLCBiYXNlKTtcbiAgfVxuICBsZXQgaGlzdG9yeSA9IHtcbiAgICBnZXQgYWN0aW9uKCkge1xuICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9LFxuICAgIGdldCBsb2NhdGlvbigpIHtcbiAgICAgIHJldHVybiBnZXRMb2NhdGlvbih3aW5kb3cyLCBnbG9iYWxIaXN0b3J5KTtcbiAgICB9LFxuICAgIGxpc3Rlbihmbikge1xuICAgICAgaWYgKGxpc3RlbmVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkEgaGlzdG9yeSBvbmx5IGFjY2VwdHMgb25lIGFjdGl2ZSBsaXN0ZW5lclwiKTtcbiAgICAgIH1cbiAgICAgIHdpbmRvdzIuYWRkRXZlbnRMaXN0ZW5lcihQb3BTdGF0ZUV2ZW50VHlwZSwgaGFuZGxlUG9wKTtcbiAgICAgIGxpc3RlbmVyID0gZm47XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB3aW5kb3cyLnJlbW92ZUV2ZW50TGlzdGVuZXIoUG9wU3RhdGVFdmVudFR5cGUsIGhhbmRsZVBvcCk7XG4gICAgICAgIGxpc3RlbmVyID0gbnVsbDtcbiAgICAgIH07XG4gICAgfSxcbiAgICBjcmVhdGVIcmVmKHRvKSB7XG4gICAgICByZXR1cm4gY3JlYXRlSHJlZjIod2luZG93MiwgdG8pO1xuICAgIH0sXG4gICAgY3JlYXRlVVJMLFxuICAgIGVuY29kZUxvY2F0aW9uKHRvKSB7XG4gICAgICBsZXQgdXJsID0gY3JlYXRlVVJMKHRvKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhdGhuYW1lOiB1cmwucGF0aG5hbWUsXG4gICAgICAgIHNlYXJjaDogdXJsLnNlYXJjaCxcbiAgICAgICAgaGFzaDogdXJsLmhhc2hcbiAgICAgIH07XG4gICAgfSxcbiAgICBwdXNoLFxuICAgIHJlcGxhY2U6IHJlcGxhY2UyLFxuICAgIGdvKG4pIHtcbiAgICAgIHJldHVybiBnbG9iYWxIaXN0b3J5LmdvKG4pO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGhpc3Rvcnk7XG59XG5cbi8vIGxpYi9yb3V0ZXIvdXRpbHMudHNcbnZhciBpbW11dGFibGVSb3V0ZUtleXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXG4gIFwibGF6eVwiLFxuICBcImNhc2VTZW5zaXRpdmVcIixcbiAgXCJwYXRoXCIsXG4gIFwiaWRcIixcbiAgXCJpbmRleFwiLFxuICBcImNoaWxkcmVuXCJcbl0pO1xuZnVuY3Rpb24gaXNJbmRleFJvdXRlKHJvdXRlKSB7XG4gIHJldHVybiByb3V0ZS5pbmRleCA9PT0gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGNvbnZlcnRSb3V0ZXNUb0RhdGFSb3V0ZXMocm91dGVzLCBtYXBSb3V0ZVByb3BlcnRpZXMyLCBwYXJlbnRQYXRoID0gW10sIG1hbmlmZXN0ID0ge30pIHtcbiAgcmV0dXJuIHJvdXRlcy5tYXAoKHJvdXRlLCBpbmRleCkgPT4ge1xuICAgIGxldCB0cmVlUGF0aCA9IFsuLi5wYXJlbnRQYXRoLCBTdHJpbmcoaW5kZXgpXTtcbiAgICBsZXQgaWQgPSB0eXBlb2Ygcm91dGUuaWQgPT09IFwic3RyaW5nXCIgPyByb3V0ZS5pZCA6IHRyZWVQYXRoLmpvaW4oXCItXCIpO1xuICAgIGludmFyaWFudChcbiAgICAgIHJvdXRlLmluZGV4ICE9PSB0cnVlIHx8ICFyb3V0ZS5jaGlsZHJlbixcbiAgICAgIGBDYW5ub3Qgc3BlY2lmeSBjaGlsZHJlbiBvbiBhbiBpbmRleCByb3V0ZWBcbiAgICApO1xuICAgIGludmFyaWFudChcbiAgICAgICFtYW5pZmVzdFtpZF0sXG4gICAgICBgRm91bmQgYSByb3V0ZSBpZCBjb2xsaXNpb24gb24gaWQgXCIke2lkfVwiLiAgUm91dGUgaWQncyBtdXN0IGJlIGdsb2JhbGx5IHVuaXF1ZSB3aXRoaW4gRGF0YSBSb3V0ZXIgdXNhZ2VzYFxuICAgICk7XG4gICAgaWYgKGlzSW5kZXhSb3V0ZShyb3V0ZSkpIHtcbiAgICAgIGxldCBpbmRleFJvdXRlID0ge1xuICAgICAgICAuLi5yb3V0ZSxcbiAgICAgICAgLi4ubWFwUm91dGVQcm9wZXJ0aWVzMihyb3V0ZSksXG4gICAgICAgIGlkXG4gICAgICB9O1xuICAgICAgbWFuaWZlc3RbaWRdID0gaW5kZXhSb3V0ZTtcbiAgICAgIHJldHVybiBpbmRleFJvdXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcGF0aE9yTGF5b3V0Um91dGUgPSB7XG4gICAgICAgIC4uLnJvdXRlLFxuICAgICAgICAuLi5tYXBSb3V0ZVByb3BlcnRpZXMyKHJvdXRlKSxcbiAgICAgICAgaWQsXG4gICAgICAgIGNoaWxkcmVuOiB2b2lkIDBcbiAgICAgIH07XG4gICAgICBtYW5pZmVzdFtpZF0gPSBwYXRoT3JMYXlvdXRSb3V0ZTtcbiAgICAgIGlmIChyb3V0ZS5jaGlsZHJlbikge1xuICAgICAgICBwYXRoT3JMYXlvdXRSb3V0ZS5jaGlsZHJlbiA9IGNvbnZlcnRSb3V0ZXNUb0RhdGFSb3V0ZXMoXG4gICAgICAgICAgcm91dGUuY2hpbGRyZW4sXG4gICAgICAgICAgbWFwUm91dGVQcm9wZXJ0aWVzMixcbiAgICAgICAgICB0cmVlUGF0aCxcbiAgICAgICAgICBtYW5pZmVzdFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhdGhPckxheW91dFJvdXRlO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBtYXRjaFJvdXRlcyhyb3V0ZXMsIGxvY2F0aW9uQXJnLCBiYXNlbmFtZSA9IFwiL1wiKSB7XG4gIHJldHVybiBtYXRjaFJvdXRlc0ltcGwocm91dGVzLCBsb2NhdGlvbkFyZywgYmFzZW5hbWUsIGZhbHNlKTtcbn1cbmZ1bmN0aW9uIG1hdGNoUm91dGVzSW1wbChyb3V0ZXMsIGxvY2F0aW9uQXJnLCBiYXNlbmFtZSwgYWxsb3dQYXJ0aWFsKSB7XG4gIGxldCBsb2NhdGlvbiA9IHR5cGVvZiBsb2NhdGlvbkFyZyA9PT0gXCJzdHJpbmdcIiA/IHBhcnNlUGF0aChsb2NhdGlvbkFyZykgOiBsb2NhdGlvbkFyZztcbiAgbGV0IHBhdGhuYW1lID0gc3RyaXBCYXNlbmFtZShsb2NhdGlvbi5wYXRobmFtZSB8fCBcIi9cIiwgYmFzZW5hbWUpO1xuICBpZiAocGF0aG5hbWUgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGxldCBicmFuY2hlcyA9IGZsYXR0ZW5Sb3V0ZXMocm91dGVzKTtcbiAgcmFua1JvdXRlQnJhbmNoZXMoYnJhbmNoZXMpO1xuICBsZXQgbWF0Y2hlcyA9IG51bGw7XG4gIGZvciAobGV0IGkgPSAwOyBtYXRjaGVzID09IG51bGwgJiYgaSA8IGJyYW5jaGVzLmxlbmd0aDsgKytpKSB7XG4gICAgbGV0IGRlY29kZWQgPSBkZWNvZGVQYXRoKHBhdGhuYW1lKTtcbiAgICBtYXRjaGVzID0gbWF0Y2hSb3V0ZUJyYW5jaChcbiAgICAgIGJyYW5jaGVzW2ldLFxuICAgICAgZGVjb2RlZCxcbiAgICAgIGFsbG93UGFydGlhbFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIG1hdGNoZXM7XG59XG5mdW5jdGlvbiBjb252ZXJ0Um91dGVNYXRjaFRvVWlNYXRjaChtYXRjaCwgbG9hZGVyRGF0YSkge1xuICBsZXQgeyByb3V0ZSwgcGF0aG5hbWUsIHBhcmFtcyB9ID0gbWF0Y2g7XG4gIHJldHVybiB7XG4gICAgaWQ6IHJvdXRlLmlkLFxuICAgIHBhdGhuYW1lLFxuICAgIHBhcmFtcyxcbiAgICBkYXRhOiBsb2FkZXJEYXRhW3JvdXRlLmlkXSxcbiAgICBoYW5kbGU6IHJvdXRlLmhhbmRsZVxuICB9O1xufVxuZnVuY3Rpb24gZmxhdHRlblJvdXRlcyhyb3V0ZXMsIGJyYW5jaGVzID0gW10sIHBhcmVudHNNZXRhID0gW10sIHBhcmVudFBhdGggPSBcIlwiKSB7XG4gIGxldCBmbGF0dGVuUm91dGUgPSAocm91dGUsIGluZGV4LCByZWxhdGl2ZVBhdGgpID0+IHtcbiAgICBsZXQgbWV0YSA9IHtcbiAgICAgIHJlbGF0aXZlUGF0aDogcmVsYXRpdmVQYXRoID09PSB2b2lkIDAgPyByb3V0ZS5wYXRoIHx8IFwiXCIgOiByZWxhdGl2ZVBhdGgsXG4gICAgICBjYXNlU2Vuc2l0aXZlOiByb3V0ZS5jYXNlU2Vuc2l0aXZlID09PSB0cnVlLFxuICAgICAgY2hpbGRyZW5JbmRleDogaW5kZXgsXG4gICAgICByb3V0ZVxuICAgIH07XG4gICAgaWYgKG1ldGEucmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG4gICAgICBpbnZhcmlhbnQoXG4gICAgICAgIG1ldGEucmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgocGFyZW50UGF0aCksXG4gICAgICAgIGBBYnNvbHV0ZSByb3V0ZSBwYXRoIFwiJHttZXRhLnJlbGF0aXZlUGF0aH1cIiBuZXN0ZWQgdW5kZXIgcGF0aCBcIiR7cGFyZW50UGF0aH1cIiBpcyBub3QgdmFsaWQuIEFuIGFic29sdXRlIGNoaWxkIHJvdXRlIHBhdGggbXVzdCBzdGFydCB3aXRoIHRoZSBjb21iaW5lZCBwYXRoIG9mIGFsbCBpdHMgcGFyZW50IHJvdXRlcy5gXG4gICAgICApO1xuICAgICAgbWV0YS5yZWxhdGl2ZVBhdGggPSBtZXRhLnJlbGF0aXZlUGF0aC5zbGljZShwYXJlbnRQYXRoLmxlbmd0aCk7XG4gICAgfVxuICAgIGxldCBwYXRoID0gam9pblBhdGhzKFtwYXJlbnRQYXRoLCBtZXRhLnJlbGF0aXZlUGF0aF0pO1xuICAgIGxldCByb3V0ZXNNZXRhID0gcGFyZW50c01ldGEuY29uY2F0KG1ldGEpO1xuICAgIGlmIChyb3V0ZS5jaGlsZHJlbiAmJiByb3V0ZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICBpbnZhcmlhbnQoXG4gICAgICAgIC8vIE91ciB0eXBlcyBrbm93IGJldHRlciwgYnV0IHJ1bnRpbWUgSlMgbWF5IG5vdCFcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICByb3V0ZS5pbmRleCAhPT0gdHJ1ZSxcbiAgICAgICAgYEluZGV4IHJvdXRlcyBtdXN0IG5vdCBoYXZlIGNoaWxkIHJvdXRlcy4gUGxlYXNlIHJlbW92ZSBhbGwgY2hpbGQgcm91dGVzIGZyb20gcm91dGUgcGF0aCBcIiR7cGF0aH1cIi5gXG4gICAgICApO1xuICAgICAgZmxhdHRlblJvdXRlcyhyb3V0ZS5jaGlsZHJlbiwgYnJhbmNoZXMsIHJvdXRlc01ldGEsIHBhdGgpO1xuICAgIH1cbiAgICBpZiAocm91dGUucGF0aCA9PSBudWxsICYmICFyb3V0ZS5pbmRleCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBicmFuY2hlcy5wdXNoKHtcbiAgICAgIHBhdGgsXG4gICAgICBzY29yZTogY29tcHV0ZVNjb3JlKHBhdGgsIHJvdXRlLmluZGV4KSxcbiAgICAgIHJvdXRlc01ldGFcbiAgICB9KTtcbiAgfTtcbiAgcm91dGVzLmZvckVhY2goKHJvdXRlLCBpbmRleCkgPT4ge1xuICAgIGlmIChyb3V0ZS5wYXRoID09PSBcIlwiIHx8ICFyb3V0ZS5wYXRoPy5pbmNsdWRlcyhcIj9cIikpIHtcbiAgICAgIGZsYXR0ZW5Sb3V0ZShyb3V0ZSwgaW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGxldCBleHBsb2RlZCBvZiBleHBsb2RlT3B0aW9uYWxTZWdtZW50cyhyb3V0ZS5wYXRoKSkge1xuICAgICAgICBmbGF0dGVuUm91dGUocm91dGUsIGluZGV4LCBleHBsb2RlZCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGJyYW5jaGVzO1xufVxuZnVuY3Rpb24gZXhwbG9kZU9wdGlvbmFsU2VnbWVudHMocGF0aCkge1xuICBsZXQgc2VnbWVudHMgPSBwYXRoLnNwbGl0KFwiL1wiKTtcbiAgaWYgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdO1xuICBsZXQgW2ZpcnN0LCAuLi5yZXN0XSA9IHNlZ21lbnRzO1xuICBsZXQgaXNPcHRpb25hbCA9IGZpcnN0LmVuZHNXaXRoKFwiP1wiKTtcbiAgbGV0IHJlcXVpcmVkID0gZmlyc3QucmVwbGFjZSgvXFw/JC8sIFwiXCIpO1xuICBpZiAocmVzdC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gaXNPcHRpb25hbCA/IFtyZXF1aXJlZCwgXCJcIl0gOiBbcmVxdWlyZWRdO1xuICB9XG4gIGxldCByZXN0RXhwbG9kZWQgPSBleHBsb2RlT3B0aW9uYWxTZWdtZW50cyhyZXN0LmpvaW4oXCIvXCIpKTtcbiAgbGV0IHJlc3VsdCA9IFtdO1xuICByZXN1bHQucHVzaChcbiAgICAuLi5yZXN0RXhwbG9kZWQubWFwKFxuICAgICAgKHN1YnBhdGgpID0+IHN1YnBhdGggPT09IFwiXCIgPyByZXF1aXJlZCA6IFtyZXF1aXJlZCwgc3VicGF0aF0uam9pbihcIi9cIilcbiAgICApXG4gICk7XG4gIGlmIChpc09wdGlvbmFsKSB7XG4gICAgcmVzdWx0LnB1c2goLi4ucmVzdEV4cGxvZGVkKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0Lm1hcChcbiAgICAoZXhwbG9kZWQpID0+IHBhdGguc3RhcnRzV2l0aChcIi9cIikgJiYgZXhwbG9kZWQgPT09IFwiXCIgPyBcIi9cIiA6IGV4cGxvZGVkXG4gICk7XG59XG5mdW5jdGlvbiByYW5rUm91dGVCcmFuY2hlcyhicmFuY2hlcykge1xuICBicmFuY2hlcy5zb3J0KFxuICAgIChhLCBiKSA9PiBhLnNjb3JlICE9PSBiLnNjb3JlID8gYi5zY29yZSAtIGEuc2NvcmUgOiBjb21wYXJlSW5kZXhlcyhcbiAgICAgIGEucm91dGVzTWV0YS5tYXAoKG1ldGEpID0+IG1ldGEuY2hpbGRyZW5JbmRleCksXG4gICAgICBiLnJvdXRlc01ldGEubWFwKChtZXRhKSA9PiBtZXRhLmNoaWxkcmVuSW5kZXgpXG4gICAgKVxuICApO1xufVxudmFyIHBhcmFtUmUgPSAvXjpbXFx3LV0rJC87XG52YXIgZHluYW1pY1NlZ21lbnRWYWx1ZSA9IDM7XG52YXIgaW5kZXhSb3V0ZVZhbHVlID0gMjtcbnZhciBlbXB0eVNlZ21lbnRWYWx1ZSA9IDE7XG52YXIgc3RhdGljU2VnbWVudFZhbHVlID0gMTA7XG52YXIgc3BsYXRQZW5hbHR5ID0gLTI7XG52YXIgaXNTcGxhdCA9IChzKSA9PiBzID09PSBcIipcIjtcbmZ1bmN0aW9uIGNvbXB1dGVTY29yZShwYXRoLCBpbmRleCkge1xuICBsZXQgc2VnbWVudHMgPSBwYXRoLnNwbGl0KFwiL1wiKTtcbiAgbGV0IGluaXRpYWxTY29yZSA9IHNlZ21lbnRzLmxlbmd0aDtcbiAgaWYgKHNlZ21lbnRzLnNvbWUoaXNTcGxhdCkpIHtcbiAgICBpbml0aWFsU2NvcmUgKz0gc3BsYXRQZW5hbHR5O1xuICB9XG4gIGlmIChpbmRleCkge1xuICAgIGluaXRpYWxTY29yZSArPSBpbmRleFJvdXRlVmFsdWU7XG4gIH1cbiAgcmV0dXJuIHNlZ21lbnRzLmZpbHRlcigocykgPT4gIWlzU3BsYXQocykpLnJlZHVjZShcbiAgICAoc2NvcmUsIHNlZ21lbnQpID0+IHNjb3JlICsgKHBhcmFtUmUudGVzdChzZWdtZW50KSA/IGR5bmFtaWNTZWdtZW50VmFsdWUgOiBzZWdtZW50ID09PSBcIlwiID8gZW1wdHlTZWdtZW50VmFsdWUgOiBzdGF0aWNTZWdtZW50VmFsdWUpLFxuICAgIGluaXRpYWxTY29yZVxuICApO1xufVxuZnVuY3Rpb24gY29tcGFyZUluZGV4ZXMoYSwgYikge1xuICBsZXQgc2libGluZ3MgPSBhLmxlbmd0aCA9PT0gYi5sZW5ndGggJiYgYS5zbGljZSgwLCAtMSkuZXZlcnkoKG4sIGkpID0+IG4gPT09IGJbaV0pO1xuICByZXR1cm4gc2libGluZ3MgPyAoXG4gICAgLy8gSWYgdHdvIHJvdXRlcyBhcmUgc2libGluZ3MsIHdlIHNob3VsZCB0cnkgdG8gbWF0Y2ggdGhlIGVhcmxpZXIgc2libGluZ1xuICAgIC8vIGZpcnN0LiBUaGlzIGFsbG93cyBwZW9wbGUgdG8gaGF2ZSBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyIHRoZSBtYXRjaGluZ1xuICAgIC8vIGJlaGF2aW9yIGJ5IHNpbXBseSBwdXR0aW5nIHJvdXRlcyB3aXRoIGlkZW50aWNhbCBwYXRocyBpbiB0aGUgb3JkZXIgdGhleVxuICAgIC8vIHdhbnQgdGhlbSB0cmllZC5cbiAgICBhW2EubGVuZ3RoIC0gMV0gLSBiW2IubGVuZ3RoIC0gMV1cbiAgKSA6IChcbiAgICAvLyBPdGhlcndpc2UsIGl0IGRvZXNuJ3QgcmVhbGx5IG1ha2Ugc2Vuc2UgdG8gcmFuayBub24tc2libGluZ3MgYnkgaW5kZXgsXG4gICAgLy8gc28gdGhleSBzb3J0IGVxdWFsbHkuXG4gICAgMFxuICApO1xufVxuZnVuY3Rpb24gbWF0Y2hSb3V0ZUJyYW5jaChicmFuY2gsIHBhdGhuYW1lLCBhbGxvd1BhcnRpYWwgPSBmYWxzZSkge1xuICBsZXQgeyByb3V0ZXNNZXRhIH0gPSBicmFuY2g7XG4gIGxldCBtYXRjaGVkUGFyYW1zID0ge307XG4gIGxldCBtYXRjaGVkUGF0aG5hbWUgPSBcIi9cIjtcbiAgbGV0IG1hdGNoZXMgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3V0ZXNNZXRhLmxlbmd0aDsgKytpKSB7XG4gICAgbGV0IG1ldGEgPSByb3V0ZXNNZXRhW2ldO1xuICAgIGxldCBlbmQgPSBpID09PSByb3V0ZXNNZXRhLmxlbmd0aCAtIDE7XG4gICAgbGV0IHJlbWFpbmluZ1BhdGhuYW1lID0gbWF0Y2hlZFBhdGhuYW1lID09PSBcIi9cIiA/IHBhdGhuYW1lIDogcGF0aG5hbWUuc2xpY2UobWF0Y2hlZFBhdGhuYW1lLmxlbmd0aCkgfHwgXCIvXCI7XG4gICAgbGV0IG1hdGNoID0gbWF0Y2hQYXRoKFxuICAgICAgeyBwYXRoOiBtZXRhLnJlbGF0aXZlUGF0aCwgY2FzZVNlbnNpdGl2ZTogbWV0YS5jYXNlU2Vuc2l0aXZlLCBlbmQgfSxcbiAgICAgIHJlbWFpbmluZ1BhdGhuYW1lXG4gICAgKTtcbiAgICBsZXQgcm91dGUgPSBtZXRhLnJvdXRlO1xuICAgIGlmICghbWF0Y2ggJiYgZW5kICYmIGFsbG93UGFydGlhbCAmJiAhcm91dGVzTWV0YVtyb3V0ZXNNZXRhLmxlbmd0aCAtIDFdLnJvdXRlLmluZGV4KSB7XG4gICAgICBtYXRjaCA9IG1hdGNoUGF0aChcbiAgICAgICAge1xuICAgICAgICAgIHBhdGg6IG1ldGEucmVsYXRpdmVQYXRoLFxuICAgICAgICAgIGNhc2VTZW5zaXRpdmU6IG1ldGEuY2FzZVNlbnNpdGl2ZSxcbiAgICAgICAgICBlbmQ6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHJlbWFpbmluZ1BhdGhuYW1lXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgT2JqZWN0LmFzc2lnbihtYXRjaGVkUGFyYW1zLCBtYXRjaC5wYXJhbXMpO1xuICAgIG1hdGNoZXMucHVzaCh7XG4gICAgICAvLyBUT0RPOiBDYW4gdGhpcyBhcyBiZSBhdm9pZGVkP1xuICAgICAgcGFyYW1zOiBtYXRjaGVkUGFyYW1zLFxuICAgICAgcGF0aG5hbWU6IGpvaW5QYXRocyhbbWF0Y2hlZFBhdGhuYW1lLCBtYXRjaC5wYXRobmFtZV0pLFxuICAgICAgcGF0aG5hbWVCYXNlOiBub3JtYWxpemVQYXRobmFtZShcbiAgICAgICAgam9pblBhdGhzKFttYXRjaGVkUGF0aG5hbWUsIG1hdGNoLnBhdGhuYW1lQmFzZV0pXG4gICAgICApLFxuICAgICAgcm91dGVcbiAgICB9KTtcbiAgICBpZiAobWF0Y2gucGF0aG5hbWVCYXNlICE9PSBcIi9cIikge1xuICAgICAgbWF0Y2hlZFBhdGhuYW1lID0gam9pblBhdGhzKFttYXRjaGVkUGF0aG5hbWUsIG1hdGNoLnBhdGhuYW1lQmFzZV0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbWF0Y2hlcztcbn1cbmZ1bmN0aW9uIGdlbmVyYXRlUGF0aChvcmlnaW5hbFBhdGgsIHBhcmFtcyA9IHt9KSB7XG4gIGxldCBwYXRoID0gb3JpZ2luYWxQYXRoO1xuICBpZiAocGF0aC5lbmRzV2l0aChcIipcIikgJiYgcGF0aCAhPT0gXCIqXCIgJiYgIXBhdGguZW5kc1dpdGgoXCIvKlwiKSkge1xuICAgIHdhcm5pbmcoXG4gICAgICBmYWxzZSxcbiAgICAgIGBSb3V0ZSBwYXRoIFwiJHtwYXRofVwiIHdpbGwgYmUgdHJlYXRlZCBhcyBpZiBpdCB3ZXJlIFwiJHtwYXRoLnJlcGxhY2UoL1xcKiQvLCBcIi8qXCIpfVwiIGJlY2F1c2UgdGhlIFxcYCpcXGAgY2hhcmFjdGVyIG11c3QgYWx3YXlzIGZvbGxvdyBhIFxcYC9cXGAgaW4gdGhlIHBhdHRlcm4uIFRvIGdldCByaWQgb2YgdGhpcyB3YXJuaW5nLCBwbGVhc2UgY2hhbmdlIHRoZSByb3V0ZSBwYXRoIHRvIFwiJHtwYXRoLnJlcGxhY2UoL1xcKiQvLCBcIi8qXCIpfVwiLmBcbiAgICApO1xuICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoL1xcKiQvLCBcIi8qXCIpO1xuICB9XG4gIGNvbnN0IHByZWZpeCA9IHBhdGguc3RhcnRzV2l0aChcIi9cIikgPyBcIi9cIiA6IFwiXCI7XG4gIGNvbnN0IHN0cmluZ2lmeSA9IChwKSA9PiBwID09IG51bGwgPyBcIlwiIDogdHlwZW9mIHAgPT09IFwic3RyaW5nXCIgPyBwIDogU3RyaW5nKHApO1xuICBjb25zdCBzZWdtZW50cyA9IHBhdGguc3BsaXQoL1xcLysvKS5tYXAoKHNlZ21lbnQsIGluZGV4LCBhcnJheSkgPT4ge1xuICAgIGNvbnN0IGlzTGFzdFNlZ21lbnQgPSBpbmRleCA9PT0gYXJyYXkubGVuZ3RoIC0gMTtcbiAgICBpZiAoaXNMYXN0U2VnbWVudCAmJiBzZWdtZW50ID09PSBcIipcIikge1xuICAgICAgY29uc3Qgc3RhciA9IFwiKlwiO1xuICAgICAgcmV0dXJuIHN0cmluZ2lmeShwYXJhbXNbc3Rhcl0pO1xuICAgIH1cbiAgICBjb25zdCBrZXlNYXRjaCA9IHNlZ21lbnQubWF0Y2goL146KFtcXHctXSspKFxcPz8pJC8pO1xuICAgIGlmIChrZXlNYXRjaCkge1xuICAgICAgY29uc3QgWywga2V5LCBvcHRpb25hbF0gPSBrZXlNYXRjaDtcbiAgICAgIGxldCBwYXJhbSA9IHBhcmFtc1trZXldO1xuICAgICAgaW52YXJpYW50KG9wdGlvbmFsID09PSBcIj9cIiB8fCBwYXJhbSAhPSBudWxsLCBgTWlzc2luZyBcIjoke2tleX1cIiBwYXJhbWApO1xuICAgICAgcmV0dXJuIHN0cmluZ2lmeShwYXJhbSk7XG4gICAgfVxuICAgIHJldHVybiBzZWdtZW50LnJlcGxhY2UoL1xcPyQvZywgXCJcIik7XG4gIH0pLmZpbHRlcigoc2VnbWVudCkgPT4gISFzZWdtZW50KTtcbiAgcmV0dXJuIHByZWZpeCArIHNlZ21lbnRzLmpvaW4oXCIvXCIpO1xufVxuZnVuY3Rpb24gbWF0Y2hQYXRoKHBhdHRlcm4sIHBhdGhuYW1lKSB7XG4gIGlmICh0eXBlb2YgcGF0dGVybiA9PT0gXCJzdHJpbmdcIikge1xuICAgIHBhdHRlcm4gPSB7IHBhdGg6IHBhdHRlcm4sIGNhc2VTZW5zaXRpdmU6IGZhbHNlLCBlbmQ6IHRydWUgfTtcbiAgfVxuICBsZXQgW21hdGNoZXIsIGNvbXBpbGVkUGFyYW1zXSA9IGNvbXBpbGVQYXRoKFxuICAgIHBhdHRlcm4ucGF0aCxcbiAgICBwYXR0ZXJuLmNhc2VTZW5zaXRpdmUsXG4gICAgcGF0dGVybi5lbmRcbiAgKTtcbiAgbGV0IG1hdGNoID0gcGF0aG5hbWUubWF0Y2gobWF0Y2hlcik7XG4gIGlmICghbWF0Y2gpIHJldHVybiBudWxsO1xuICBsZXQgbWF0Y2hlZFBhdGhuYW1lID0gbWF0Y2hbMF07XG4gIGxldCBwYXRobmFtZUJhc2UgPSBtYXRjaGVkUGF0aG5hbWUucmVwbGFjZSgvKC4pXFwvKyQvLCBcIiQxXCIpO1xuICBsZXQgY2FwdHVyZUdyb3VwcyA9IG1hdGNoLnNsaWNlKDEpO1xuICBsZXQgcGFyYW1zID0gY29tcGlsZWRQYXJhbXMucmVkdWNlKFxuICAgIChtZW1vMiwgeyBwYXJhbU5hbWUsIGlzT3B0aW9uYWwgfSwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChwYXJhbU5hbWUgPT09IFwiKlwiKSB7XG4gICAgICAgIGxldCBzcGxhdFZhbHVlID0gY2FwdHVyZUdyb3Vwc1tpbmRleF0gfHwgXCJcIjtcbiAgICAgICAgcGF0aG5hbWVCYXNlID0gbWF0Y2hlZFBhdGhuYW1lLnNsaWNlKDAsIG1hdGNoZWRQYXRobmFtZS5sZW5ndGggLSBzcGxhdFZhbHVlLmxlbmd0aCkucmVwbGFjZSgvKC4pXFwvKyQvLCBcIiQxXCIpO1xuICAgICAgfVxuICAgICAgY29uc3QgdmFsdWUgPSBjYXB0dXJlR3JvdXBzW2luZGV4XTtcbiAgICAgIGlmIChpc09wdGlvbmFsICYmICF2YWx1ZSkge1xuICAgICAgICBtZW1vMltwYXJhbU5hbWVdID0gdm9pZCAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVtbzJbcGFyYW1OYW1lXSA9ICh2YWx1ZSB8fCBcIlwiKS5yZXBsYWNlKC8lMkYvZywgXCIvXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1lbW8yO1xuICAgIH0sXG4gICAge31cbiAgKTtcbiAgcmV0dXJuIHtcbiAgICBwYXJhbXMsXG4gICAgcGF0aG5hbWU6IG1hdGNoZWRQYXRobmFtZSxcbiAgICBwYXRobmFtZUJhc2UsXG4gICAgcGF0dGVyblxuICB9O1xufVxuZnVuY3Rpb24gY29tcGlsZVBhdGgocGF0aCwgY2FzZVNlbnNpdGl2ZSA9IGZhbHNlLCBlbmQgPSB0cnVlKSB7XG4gIHdhcm5pbmcoXG4gICAgcGF0aCA9PT0gXCIqXCIgfHwgIXBhdGguZW5kc1dpdGgoXCIqXCIpIHx8IHBhdGguZW5kc1dpdGgoXCIvKlwiKSxcbiAgICBgUm91dGUgcGF0aCBcIiR7cGF0aH1cIiB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYgaXQgd2VyZSBcIiR7cGF0aC5yZXBsYWNlKC9cXCokLywgXCIvKlwiKX1cIiBiZWNhdXNlIHRoZSBcXGAqXFxgIGNoYXJhY3RlciBtdXN0IGFsd2F5cyBmb2xsb3cgYSBcXGAvXFxgIGluIHRoZSBwYXR0ZXJuLiBUbyBnZXQgcmlkIG9mIHRoaXMgd2FybmluZywgcGxlYXNlIGNoYW5nZSB0aGUgcm91dGUgcGF0aCB0byBcIiR7cGF0aC5yZXBsYWNlKC9cXCokLywgXCIvKlwiKX1cIi5gXG4gICk7XG4gIGxldCBwYXJhbXMgPSBbXTtcbiAgbGV0IHJlZ2V4cFNvdXJjZSA9IFwiXlwiICsgcGF0aC5yZXBsYWNlKC9cXC8qXFwqPyQvLCBcIlwiKS5yZXBsYWNlKC9eXFwvKi8sIFwiL1wiKS5yZXBsYWNlKC9bXFxcXC4qK14ke318KClbXFxdXS9nLCBcIlxcXFwkJlwiKS5yZXBsYWNlKFxuICAgIC9cXC86KFtcXHctXSspKFxcPyk/L2csXG4gICAgKF8sIHBhcmFtTmFtZSwgaXNPcHRpb25hbCkgPT4ge1xuICAgICAgcGFyYW1zLnB1c2goeyBwYXJhbU5hbWUsIGlzT3B0aW9uYWw6IGlzT3B0aW9uYWwgIT0gbnVsbCB9KTtcbiAgICAgIHJldHVybiBpc09wdGlvbmFsID8gXCIvPyhbXlxcXFwvXSspP1wiIDogXCIvKFteXFxcXC9dKylcIjtcbiAgICB9XG4gICk7XG4gIGlmIChwYXRoLmVuZHNXaXRoKFwiKlwiKSkge1xuICAgIHBhcmFtcy5wdXNoKHsgcGFyYW1OYW1lOiBcIipcIiB9KTtcbiAgICByZWdleHBTb3VyY2UgKz0gcGF0aCA9PT0gXCIqXCIgfHwgcGF0aCA9PT0gXCIvKlwiID8gXCIoLiopJFwiIDogXCIoPzpcXFxcLyguKyl8XFxcXC8qKSRcIjtcbiAgfSBlbHNlIGlmIChlbmQpIHtcbiAgICByZWdleHBTb3VyY2UgKz0gXCJcXFxcLyokXCI7XG4gIH0gZWxzZSBpZiAocGF0aCAhPT0gXCJcIiAmJiBwYXRoICE9PSBcIi9cIikge1xuICAgIHJlZ2V4cFNvdXJjZSArPSBcIig/Oig/PVxcXFwvfCQpKVwiO1xuICB9IGVsc2Uge1xuICB9XG4gIGxldCBtYXRjaGVyID0gbmV3IFJlZ0V4cChyZWdleHBTb3VyY2UsIGNhc2VTZW5zaXRpdmUgPyB2b2lkIDAgOiBcImlcIik7XG4gIHJldHVybiBbbWF0Y2hlciwgcGFyYW1zXTtcbn1cbmZ1bmN0aW9uIGRlY29kZVBhdGgodmFsdWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdmFsdWUuc3BsaXQoXCIvXCIpLm1hcCgodikgPT4gZGVjb2RlVVJJQ29tcG9uZW50KHYpLnJlcGxhY2UoL1xcLy9nLCBcIiUyRlwiKSkuam9pbihcIi9cIik7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgd2FybmluZyhcbiAgICAgIGZhbHNlLFxuICAgICAgYFRoZSBVUkwgcGF0aCBcIiR7dmFsdWV9XCIgY291bGQgbm90IGJlIGRlY29kZWQgYmVjYXVzZSBpdCBpcyBpcyBhIG1hbGZvcm1lZCBVUkwgc2VnbWVudC4gVGhpcyBpcyBwcm9iYWJseSBkdWUgdG8gYSBiYWQgcGVyY2VudCBlbmNvZGluZyAoJHtlcnJvcn0pLmBcbiAgICApO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuZnVuY3Rpb24gc3RyaXBCYXNlbmFtZShwYXRobmFtZSwgYmFzZW5hbWUpIHtcbiAgaWYgKGJhc2VuYW1lID09PSBcIi9cIikgcmV0dXJuIHBhdGhuYW1lO1xuICBpZiAoIXBhdGhuYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChiYXNlbmFtZS50b0xvd2VyQ2FzZSgpKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGxldCBzdGFydEluZGV4ID0gYmFzZW5hbWUuZW5kc1dpdGgoXCIvXCIpID8gYmFzZW5hbWUubGVuZ3RoIC0gMSA6IGJhc2VuYW1lLmxlbmd0aDtcbiAgbGV0IG5leHRDaGFyID0gcGF0aG5hbWUuY2hhckF0KHN0YXJ0SW5kZXgpO1xuICBpZiAobmV4dENoYXIgJiYgbmV4dENoYXIgIT09IFwiL1wiKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIHBhdGhuYW1lLnNsaWNlKHN0YXJ0SW5kZXgpIHx8IFwiL1wiO1xufVxuZnVuY3Rpb24gcmVzb2x2ZVBhdGgodG8sIGZyb21QYXRobmFtZSA9IFwiL1wiKSB7XG4gIGxldCB7XG4gICAgcGF0aG5hbWU6IHRvUGF0aG5hbWUsXG4gICAgc2VhcmNoID0gXCJcIixcbiAgICBoYXNoID0gXCJcIlxuICB9ID0gdHlwZW9mIHRvID09PSBcInN0cmluZ1wiID8gcGFyc2VQYXRoKHRvKSA6IHRvO1xuICBsZXQgcGF0aG5hbWUgPSB0b1BhdGhuYW1lID8gdG9QYXRobmFtZS5zdGFydHNXaXRoKFwiL1wiKSA/IHRvUGF0aG5hbWUgOiByZXNvbHZlUGF0aG5hbWUodG9QYXRobmFtZSwgZnJvbVBhdGhuYW1lKSA6IGZyb21QYXRobmFtZTtcbiAgcmV0dXJuIHtcbiAgICBwYXRobmFtZSxcbiAgICBzZWFyY2g6IG5vcm1hbGl6ZVNlYXJjaChzZWFyY2gpLFxuICAgIGhhc2g6IG5vcm1hbGl6ZUhhc2goaGFzaClcbiAgfTtcbn1cbmZ1bmN0aW9uIHJlc29sdmVQYXRobmFtZShyZWxhdGl2ZVBhdGgsIGZyb21QYXRobmFtZSkge1xuICBsZXQgc2VnbWVudHMgPSBmcm9tUGF0aG5hbWUucmVwbGFjZSgvXFwvKyQvLCBcIlwiKS5zcGxpdChcIi9cIik7XG4gIGxldCByZWxhdGl2ZVNlZ21lbnRzID0gcmVsYXRpdmVQYXRoLnNwbGl0KFwiL1wiKTtcbiAgcmVsYXRpdmVTZWdtZW50cy5mb3JFYWNoKChzZWdtZW50KSA9PiB7XG4gICAgaWYgKHNlZ21lbnQgPT09IFwiLi5cIikge1xuICAgICAgaWYgKHNlZ21lbnRzLmxlbmd0aCA+IDEpIHNlZ21lbnRzLnBvcCgpO1xuICAgIH0gZWxzZSBpZiAoc2VnbWVudCAhPT0gXCIuXCIpIHtcbiAgICAgIHNlZ21lbnRzLnB1c2goc2VnbWVudCk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHNlZ21lbnRzLmxlbmd0aCA+IDEgPyBzZWdtZW50cy5qb2luKFwiL1wiKSA6IFwiL1wiO1xufVxuZnVuY3Rpb24gZ2V0SW52YWxpZFBhdGhFcnJvcihjaGFyLCBmaWVsZCwgZGVzdCwgcGF0aCkge1xuICByZXR1cm4gYENhbm5vdCBpbmNsdWRlIGEgJyR7Y2hhcn0nIGNoYXJhY3RlciBpbiBhIG1hbnVhbGx5IHNwZWNpZmllZCBcXGB0by4ke2ZpZWxkfVxcYCBmaWVsZCBbJHtKU09OLnN0cmluZ2lmeShcbiAgICBwYXRoXG4gICl9XS4gIFBsZWFzZSBzZXBhcmF0ZSBpdCBvdXQgdG8gdGhlIFxcYHRvLiR7ZGVzdH1cXGAgZmllbGQuIEFsdGVybmF0aXZlbHkgeW91IG1heSBwcm92aWRlIHRoZSBmdWxsIHBhdGggYXMgYSBzdHJpbmcgaW4gPExpbmsgdG89XCIuLi5cIj4gYW5kIHRoZSByb3V0ZXIgd2lsbCBwYXJzZSBpdCBmb3IgeW91LmA7XG59XG5mdW5jdGlvbiBnZXRQYXRoQ29udHJpYnV0aW5nTWF0Y2hlcyhtYXRjaGVzKSB7XG4gIHJldHVybiBtYXRjaGVzLmZpbHRlcihcbiAgICAobWF0Y2gsIGluZGV4KSA9PiBpbmRleCA9PT0gMCB8fCBtYXRjaC5yb3V0ZS5wYXRoICYmIG1hdGNoLnJvdXRlLnBhdGgubGVuZ3RoID4gMFxuICApO1xufVxuZnVuY3Rpb24gZ2V0UmVzb2x2ZVRvTWF0Y2hlcyhtYXRjaGVzKSB7XG4gIGxldCBwYXRoTWF0Y2hlcyA9IGdldFBhdGhDb250cmlidXRpbmdNYXRjaGVzKG1hdGNoZXMpO1xuICByZXR1cm4gcGF0aE1hdGNoZXMubWFwKFxuICAgIChtYXRjaCwgaWR4KSA9PiBpZHggPT09IHBhdGhNYXRjaGVzLmxlbmd0aCAtIDEgPyBtYXRjaC5wYXRobmFtZSA6IG1hdGNoLnBhdGhuYW1lQmFzZVxuICApO1xufVxuZnVuY3Rpb24gcmVzb2x2ZVRvKHRvQXJnLCByb3V0ZVBhdGhuYW1lcywgbG9jYXRpb25QYXRobmFtZSwgaXNQYXRoUmVsYXRpdmUgPSBmYWxzZSkge1xuICBsZXQgdG87XG4gIGlmICh0eXBlb2YgdG9BcmcgPT09IFwic3RyaW5nXCIpIHtcbiAgICB0byA9IHBhcnNlUGF0aCh0b0FyZyk7XG4gIH0gZWxzZSB7XG4gICAgdG8gPSB7IC4uLnRvQXJnIH07XG4gICAgaW52YXJpYW50KFxuICAgICAgIXRvLnBhdGhuYW1lIHx8ICF0by5wYXRobmFtZS5pbmNsdWRlcyhcIj9cIiksXG4gICAgICBnZXRJbnZhbGlkUGF0aEVycm9yKFwiP1wiLCBcInBhdGhuYW1lXCIsIFwic2VhcmNoXCIsIHRvKVxuICAgICk7XG4gICAgaW52YXJpYW50KFxuICAgICAgIXRvLnBhdGhuYW1lIHx8ICF0by5wYXRobmFtZS5pbmNsdWRlcyhcIiNcIiksXG4gICAgICBnZXRJbnZhbGlkUGF0aEVycm9yKFwiI1wiLCBcInBhdGhuYW1lXCIsIFwiaGFzaFwiLCB0bylcbiAgICApO1xuICAgIGludmFyaWFudChcbiAgICAgICF0by5zZWFyY2ggfHwgIXRvLnNlYXJjaC5pbmNsdWRlcyhcIiNcIiksXG4gICAgICBnZXRJbnZhbGlkUGF0aEVycm9yKFwiI1wiLCBcInNlYXJjaFwiLCBcImhhc2hcIiwgdG8pXG4gICAgKTtcbiAgfVxuICBsZXQgaXNFbXB0eVBhdGggPSB0b0FyZyA9PT0gXCJcIiB8fCB0by5wYXRobmFtZSA9PT0gXCJcIjtcbiAgbGV0IHRvUGF0aG5hbWUgPSBpc0VtcHR5UGF0aCA/IFwiL1wiIDogdG8ucGF0aG5hbWU7XG4gIGxldCBmcm9tO1xuICBpZiAodG9QYXRobmFtZSA9PSBudWxsKSB7XG4gICAgZnJvbSA9IGxvY2F0aW9uUGF0aG5hbWU7XG4gIH0gZWxzZSB7XG4gICAgbGV0IHJvdXRlUGF0aG5hbWVJbmRleCA9IHJvdXRlUGF0aG5hbWVzLmxlbmd0aCAtIDE7XG4gICAgaWYgKCFpc1BhdGhSZWxhdGl2ZSAmJiB0b1BhdGhuYW1lLnN0YXJ0c1dpdGgoXCIuLlwiKSkge1xuICAgICAgbGV0IHRvU2VnbWVudHMgPSB0b1BhdGhuYW1lLnNwbGl0KFwiL1wiKTtcbiAgICAgIHdoaWxlICh0b1NlZ21lbnRzWzBdID09PSBcIi4uXCIpIHtcbiAgICAgICAgdG9TZWdtZW50cy5zaGlmdCgpO1xuICAgICAgICByb3V0ZVBhdGhuYW1lSW5kZXggLT0gMTtcbiAgICAgIH1cbiAgICAgIHRvLnBhdGhuYW1lID0gdG9TZWdtZW50cy5qb2luKFwiL1wiKTtcbiAgICB9XG4gICAgZnJvbSA9IHJvdXRlUGF0aG5hbWVJbmRleCA+PSAwID8gcm91dGVQYXRobmFtZXNbcm91dGVQYXRobmFtZUluZGV4XSA6IFwiL1wiO1xuICB9XG4gIGxldCBwYXRoID0gcmVzb2x2ZVBhdGgodG8sIGZyb20pO1xuICBsZXQgaGFzRXhwbGljaXRUcmFpbGluZ1NsYXNoID0gdG9QYXRobmFtZSAmJiB0b1BhdGhuYW1lICE9PSBcIi9cIiAmJiB0b1BhdGhuYW1lLmVuZHNXaXRoKFwiL1wiKTtcbiAgbGV0IGhhc0N1cnJlbnRUcmFpbGluZ1NsYXNoID0gKGlzRW1wdHlQYXRoIHx8IHRvUGF0aG5hbWUgPT09IFwiLlwiKSAmJiBsb2NhdGlvblBhdGhuYW1lLmVuZHNXaXRoKFwiL1wiKTtcbiAgaWYgKCFwYXRoLnBhdGhuYW1lLmVuZHNXaXRoKFwiL1wiKSAmJiAoaGFzRXhwbGljaXRUcmFpbGluZ1NsYXNoIHx8IGhhc0N1cnJlbnRUcmFpbGluZ1NsYXNoKSkge1xuICAgIHBhdGgucGF0aG5hbWUgKz0gXCIvXCI7XG4gIH1cbiAgcmV0dXJuIHBhdGg7XG59XG52YXIgam9pblBhdGhzID0gKHBhdGhzKSA9PiBwYXRocy5qb2luKFwiL1wiKS5yZXBsYWNlKC9cXC9cXC8rL2csIFwiL1wiKTtcbnZhciBub3JtYWxpemVQYXRobmFtZSA9IChwYXRobmFtZSkgPT4gcGF0aG5hbWUucmVwbGFjZSgvXFwvKyQvLCBcIlwiKS5yZXBsYWNlKC9eXFwvKi8sIFwiL1wiKTtcbnZhciBub3JtYWxpemVTZWFyY2ggPSAoc2VhcmNoKSA9PiAhc2VhcmNoIHx8IHNlYXJjaCA9PT0gXCI/XCIgPyBcIlwiIDogc2VhcmNoLnN0YXJ0c1dpdGgoXCI/XCIpID8gc2VhcmNoIDogXCI/XCIgKyBzZWFyY2g7XG52YXIgbm9ybWFsaXplSGFzaCA9IChoYXNoKSA9PiAhaGFzaCB8fCBoYXNoID09PSBcIiNcIiA/IFwiXCIgOiBoYXNoLnN0YXJ0c1dpdGgoXCIjXCIpID8gaGFzaCA6IFwiI1wiICsgaGFzaDtcbnZhciBEYXRhV2l0aFJlc3BvbnNlSW5pdCA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3IoZGF0YTIsIGluaXQpIHtcbiAgICB0aGlzLnR5cGUgPSBcIkRhdGFXaXRoUmVzcG9uc2VJbml0XCI7XG4gICAgdGhpcy5kYXRhID0gZGF0YTI7XG4gICAgdGhpcy5pbml0ID0gaW5pdCB8fCBudWxsO1xuICB9XG59O1xuZnVuY3Rpb24gZGF0YShkYXRhMiwgaW5pdCkge1xuICByZXR1cm4gbmV3IERhdGFXaXRoUmVzcG9uc2VJbml0KFxuICAgIGRhdGEyLFxuICAgIHR5cGVvZiBpbml0ID09PSBcIm51bWJlclwiID8geyBzdGF0dXM6IGluaXQgfSA6IGluaXRcbiAgKTtcbn1cbnZhciByZWRpcmVjdCA9ICh1cmwsIGluaXQgPSAzMDIpID0+IHtcbiAgbGV0IHJlc3BvbnNlSW5pdCA9IGluaXQ7XG4gIGlmICh0eXBlb2YgcmVzcG9uc2VJbml0ID09PSBcIm51bWJlclwiKSB7XG4gICAgcmVzcG9uc2VJbml0ID0geyBzdGF0dXM6IHJlc3BvbnNlSW5pdCB9O1xuICB9IGVsc2UgaWYgKHR5cGVvZiByZXNwb25zZUluaXQuc3RhdHVzID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmVzcG9uc2VJbml0LnN0YXR1cyA9IDMwMjtcbiAgfVxuICBsZXQgaGVhZGVycyA9IG5ldyBIZWFkZXJzKHJlc3BvbnNlSW5pdC5oZWFkZXJzKTtcbiAgaGVhZGVycy5zZXQoXCJMb2NhdGlvblwiLCB1cmwpO1xuICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHtcbiAgICAuLi5yZXNwb25zZUluaXQsXG4gICAgaGVhZGVyc1xuICB9KTtcbn07XG52YXIgcmVkaXJlY3REb2N1bWVudCA9ICh1cmwsIGluaXQpID0+IHtcbiAgbGV0IHJlc3BvbnNlID0gcmVkaXJlY3QodXJsLCBpbml0KTtcbiAgcmVzcG9uc2UuaGVhZGVycy5zZXQoXCJYLVJlbWl4LVJlbG9hZC1Eb2N1bWVudFwiLCBcInRydWVcIik7XG4gIHJldHVybiByZXNwb25zZTtcbn07XG52YXIgcmVwbGFjZSA9ICh1cmwsIGluaXQpID0+IHtcbiAgbGV0IHJlc3BvbnNlID0gcmVkaXJlY3QodXJsLCBpbml0KTtcbiAgcmVzcG9uc2UuaGVhZGVycy5zZXQoXCJYLVJlbWl4LVJlcGxhY2VcIiwgXCJ0cnVlXCIpO1xuICByZXR1cm4gcmVzcG9uc2U7XG59O1xudmFyIEVycm9yUmVzcG9uc2VJbXBsID0gY2xhc3Mge1xuICBjb25zdHJ1Y3RvcihzdGF0dXMsIHN0YXR1c1RleHQsIGRhdGEyLCBpbnRlcm5hbCA9IGZhbHNlKSB7XG4gICAgdGhpcy5zdGF0dXMgPSBzdGF0dXM7XG4gICAgdGhpcy5zdGF0dXNUZXh0ID0gc3RhdHVzVGV4dCB8fCBcIlwiO1xuICAgIHRoaXMuaW50ZXJuYWwgPSBpbnRlcm5hbDtcbiAgICBpZiAoZGF0YTIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgdGhpcy5kYXRhID0gZGF0YTIudG9TdHJpbmcoKTtcbiAgICAgIHRoaXMuZXJyb3IgPSBkYXRhMjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRhID0gZGF0YTI7XG4gICAgfVxuICB9XG59O1xuZnVuY3Rpb24gaXNSb3V0ZUVycm9yUmVzcG9uc2UoZXJyb3IpIHtcbiAgcmV0dXJuIGVycm9yICE9IG51bGwgJiYgdHlwZW9mIGVycm9yLnN0YXR1cyA9PT0gXCJudW1iZXJcIiAmJiB0eXBlb2YgZXJyb3Iuc3RhdHVzVGV4dCA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YgZXJyb3IuaW50ZXJuYWwgPT09IFwiYm9vbGVhblwiICYmIFwiZGF0YVwiIGluIGVycm9yO1xufVxuXG4vLyBsaWIvcm91dGVyL3JvdXRlci50c1xudmFyIHZhbGlkTXV0YXRpb25NZXRob2RzQXJyID0gW1xuICBcIlBPU1RcIixcbiAgXCJQVVRcIixcbiAgXCJQQVRDSFwiLFxuICBcIkRFTEVURVwiXG5dO1xudmFyIHZhbGlkTXV0YXRpb25NZXRob2RzID0gbmV3IFNldChcbiAgdmFsaWRNdXRhdGlvbk1ldGhvZHNBcnJcbik7XG52YXIgdmFsaWRSZXF1ZXN0TWV0aG9kc0FyciA9IFtcbiAgXCJHRVRcIixcbiAgLi4udmFsaWRNdXRhdGlvbk1ldGhvZHNBcnJcbl07XG52YXIgdmFsaWRSZXF1ZXN0TWV0aG9kcyA9IG5ldyBTZXQodmFsaWRSZXF1ZXN0TWV0aG9kc0Fycik7XG52YXIgcmVkaXJlY3RTdGF0dXNDb2RlcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFszMDEsIDMwMiwgMzAzLCAzMDcsIDMwOF0pO1xudmFyIHJlZGlyZWN0UHJlc2VydmVNZXRob2RTdGF0dXNDb2RlcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFszMDcsIDMwOF0pO1xudmFyIElETEVfTkFWSUdBVElPTiA9IHtcbiAgc3RhdGU6IFwiaWRsZVwiLFxuICBsb2NhdGlvbjogdm9pZCAwLFxuICBmb3JtTWV0aG9kOiB2b2lkIDAsXG4gIGZvcm1BY3Rpb246IHZvaWQgMCxcbiAgZm9ybUVuY1R5cGU6IHZvaWQgMCxcbiAgZm9ybURhdGE6IHZvaWQgMCxcbiAganNvbjogdm9pZCAwLFxuICB0ZXh0OiB2b2lkIDBcbn07XG52YXIgSURMRV9GRVRDSEVSID0ge1xuICBzdGF0ZTogXCJpZGxlXCIsXG4gIGRhdGE6IHZvaWQgMCxcbiAgZm9ybU1ldGhvZDogdm9pZCAwLFxuICBmb3JtQWN0aW9uOiB2b2lkIDAsXG4gIGZvcm1FbmNUeXBlOiB2b2lkIDAsXG4gIGZvcm1EYXRhOiB2b2lkIDAsXG4gIGpzb246IHZvaWQgMCxcbiAgdGV4dDogdm9pZCAwXG59O1xudmFyIElETEVfQkxPQ0tFUiA9IHtcbiAgc3RhdGU6IFwidW5ibG9ja2VkXCIsXG4gIHByb2NlZWQ6IHZvaWQgMCxcbiAgcmVzZXQ6IHZvaWQgMCxcbiAgbG9jYXRpb246IHZvaWQgMFxufTtcbnZhciBBQlNPTFVURV9VUkxfUkVHRVggPSAvXig/OlthLXpdW2EtejAtOSsuLV0qOnxcXC9cXC8pL2k7XG52YXIgZGVmYXVsdE1hcFJvdXRlUHJvcGVydGllcyA9IChyb3V0ZSkgPT4gKHtcbiAgaGFzRXJyb3JCb3VuZGFyeTogQm9vbGVhbihyb3V0ZS5oYXNFcnJvckJvdW5kYXJ5KVxufSk7XG52YXIgVFJBTlNJVElPTlNfU1RPUkFHRV9LRVkgPSBcInJlbWl4LXJvdXRlci10cmFuc2l0aW9uc1wiO1xudmFyIFJlc2V0TG9hZGVyRGF0YVN5bWJvbCA9IFN5bWJvbChcIlJlc2V0TG9hZGVyRGF0YVwiKTtcbmZ1bmN0aW9uIGNyZWF0ZVJvdXRlcihpbml0KSB7XG4gIGNvbnN0IHJvdXRlcldpbmRvdyA9IGluaXQud2luZG93ID8gaW5pdC53aW5kb3cgOiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDogdm9pZCAwO1xuICBjb25zdCBpc0Jyb3dzZXIyID0gdHlwZW9mIHJvdXRlcldpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2Ygcm91dGVyV2luZG93LmRvY3VtZW50ICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiByb3V0ZXJXaW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgaW52YXJpYW50KFxuICAgIGluaXQucm91dGVzLmxlbmd0aCA+IDAsXG4gICAgXCJZb3UgbXVzdCBwcm92aWRlIGEgbm9uLWVtcHR5IHJvdXRlcyBhcnJheSB0byBjcmVhdGVSb3V0ZXJcIlxuICApO1xuICBsZXQgbWFwUm91dGVQcm9wZXJ0aWVzMiA9IGluaXQubWFwUm91dGVQcm9wZXJ0aWVzIHx8IGRlZmF1bHRNYXBSb3V0ZVByb3BlcnRpZXM7XG4gIGxldCBtYW5pZmVzdCA9IHt9O1xuICBsZXQgZGF0YVJvdXRlcyA9IGNvbnZlcnRSb3V0ZXNUb0RhdGFSb3V0ZXMoXG4gICAgaW5pdC5yb3V0ZXMsXG4gICAgbWFwUm91dGVQcm9wZXJ0aWVzMixcbiAgICB2b2lkIDAsXG4gICAgbWFuaWZlc3RcbiAgKTtcbiAgbGV0IGluRmxpZ2h0RGF0YVJvdXRlcztcbiAgbGV0IGJhc2VuYW1lID0gaW5pdC5iYXNlbmFtZSB8fCBcIi9cIjtcbiAgbGV0IGRhdGFTdHJhdGVneUltcGwgPSBpbml0LmRhdGFTdHJhdGVneSB8fCBkZWZhdWx0RGF0YVN0cmF0ZWd5O1xuICBsZXQgcGF0Y2hSb3V0ZXNPbk5hdmlnYXRpb25JbXBsID0gaW5pdC5wYXRjaFJvdXRlc09uTmF2aWdhdGlvbjtcbiAgbGV0IGZ1dHVyZSA9IHtcbiAgICAuLi5pbml0LmZ1dHVyZVxuICB9O1xuICBsZXQgdW5saXN0ZW5IaXN0b3J5ID0gbnVsbDtcbiAgbGV0IHN1YnNjcmliZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgbGV0IHNhdmVkU2Nyb2xsUG9zaXRpb25zMiA9IG51bGw7XG4gIGxldCBnZXRTY3JvbGxSZXN0b3JhdGlvbktleTIgPSBudWxsO1xuICBsZXQgZ2V0U2Nyb2xsUG9zaXRpb24gPSBudWxsO1xuICBsZXQgaW5pdGlhbFNjcm9sbFJlc3RvcmVkID0gaW5pdC5oeWRyYXRpb25EYXRhICE9IG51bGw7XG4gIGxldCBpbml0aWFsTWF0Y2hlcyA9IG1hdGNoUm91dGVzKGRhdGFSb3V0ZXMsIGluaXQuaGlzdG9yeS5sb2NhdGlvbiwgYmFzZW5hbWUpO1xuICBsZXQgaW5pdGlhbEVycm9ycyA9IG51bGw7XG4gIGlmIChpbml0aWFsTWF0Y2hlcyA9PSBudWxsICYmICFwYXRjaFJvdXRlc09uTmF2aWdhdGlvbkltcGwpIHtcbiAgICBsZXQgZXJyb3IgPSBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwNCwge1xuICAgICAgcGF0aG5hbWU6IGluaXQuaGlzdG9yeS5sb2NhdGlvbi5wYXRobmFtZVxuICAgIH0pO1xuICAgIGxldCB7IG1hdGNoZXMsIHJvdXRlIH0gPSBnZXRTaG9ydENpcmN1aXRNYXRjaGVzKGRhdGFSb3V0ZXMpO1xuICAgIGluaXRpYWxNYXRjaGVzID0gbWF0Y2hlcztcbiAgICBpbml0aWFsRXJyb3JzID0geyBbcm91dGUuaWRdOiBlcnJvciB9O1xuICB9XG4gIGlmIChpbml0aWFsTWF0Y2hlcyAmJiAhaW5pdC5oeWRyYXRpb25EYXRhKSB7XG4gICAgbGV0IGZvZ09mV2FyID0gY2hlY2tGb2dPZldhcihcbiAgICAgIGluaXRpYWxNYXRjaGVzLFxuICAgICAgZGF0YVJvdXRlcyxcbiAgICAgIGluaXQuaGlzdG9yeS5sb2NhdGlvbi5wYXRobmFtZVxuICAgICk7XG4gICAgaWYgKGZvZ09mV2FyLmFjdGl2ZSkge1xuICAgICAgaW5pdGlhbE1hdGNoZXMgPSBudWxsO1xuICAgIH1cbiAgfVxuICBsZXQgaW5pdGlhbGl6ZWQ7XG4gIGlmICghaW5pdGlhbE1hdGNoZXMpIHtcbiAgICBpbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIGluaXRpYWxNYXRjaGVzID0gW107XG4gICAgbGV0IGZvZ09mV2FyID0gY2hlY2tGb2dPZldhcihcbiAgICAgIG51bGwsXG4gICAgICBkYXRhUm91dGVzLFxuICAgICAgaW5pdC5oaXN0b3J5LmxvY2F0aW9uLnBhdGhuYW1lXG4gICAgKTtcbiAgICBpZiAoZm9nT2ZXYXIuYWN0aXZlICYmIGZvZ09mV2FyLm1hdGNoZXMpIHtcbiAgICAgIGluaXRpYWxNYXRjaGVzID0gZm9nT2ZXYXIubWF0Y2hlcztcbiAgICB9XG4gIH0gZWxzZSBpZiAoaW5pdGlhbE1hdGNoZXMuc29tZSgobSkgPT4gbS5yb3V0ZS5sYXp5KSkge1xuICAgIGluaXRpYWxpemVkID0gZmFsc2U7XG4gIH0gZWxzZSBpZiAoIWluaXRpYWxNYXRjaGVzLnNvbWUoKG0pID0+IG0ucm91dGUubG9hZGVyKSkge1xuICAgIGluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBsZXQgbG9hZGVyRGF0YSA9IGluaXQuaHlkcmF0aW9uRGF0YSA/IGluaXQuaHlkcmF0aW9uRGF0YS5sb2FkZXJEYXRhIDogbnVsbDtcbiAgICBsZXQgZXJyb3JzID0gaW5pdC5oeWRyYXRpb25EYXRhID8gaW5pdC5oeWRyYXRpb25EYXRhLmVycm9ycyA6IG51bGw7XG4gICAgaWYgKGVycm9ycykge1xuICAgICAgbGV0IGlkeCA9IGluaXRpYWxNYXRjaGVzLmZpbmRJbmRleChcbiAgICAgICAgKG0pID0+IGVycm9yc1ttLnJvdXRlLmlkXSAhPT0gdm9pZCAwXG4gICAgICApO1xuICAgICAgaW5pdGlhbGl6ZWQgPSBpbml0aWFsTWF0Y2hlcy5zbGljZSgwLCBpZHggKyAxKS5ldmVyeSgobSkgPT4gIXNob3VsZExvYWRSb3V0ZU9uSHlkcmF0aW9uKG0ucm91dGUsIGxvYWRlckRhdGEsIGVycm9ycykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbml0aWFsaXplZCA9IGluaXRpYWxNYXRjaGVzLmV2ZXJ5KFxuICAgICAgICAobSkgPT4gIXNob3VsZExvYWRSb3V0ZU9uSHlkcmF0aW9uKG0ucm91dGUsIGxvYWRlckRhdGEsIGVycm9ycylcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGxldCByb3V0ZXI7XG4gIGxldCBzdGF0ZSA9IHtcbiAgICBoaXN0b3J5QWN0aW9uOiBpbml0Lmhpc3RvcnkuYWN0aW9uLFxuICAgIGxvY2F0aW9uOiBpbml0Lmhpc3RvcnkubG9jYXRpb24sXG4gICAgbWF0Y2hlczogaW5pdGlhbE1hdGNoZXMsXG4gICAgaW5pdGlhbGl6ZWQsXG4gICAgbmF2aWdhdGlvbjogSURMRV9OQVZJR0FUSU9OLFxuICAgIC8vIERvbid0IHJlc3RvcmUgb24gaW5pdGlhbCB1cGRhdGVTdGF0ZSgpIGlmIHdlIHdlcmUgU1NSJ2RcbiAgICByZXN0b3JlU2Nyb2xsUG9zaXRpb246IGluaXQuaHlkcmF0aW9uRGF0YSAhPSBudWxsID8gZmFsc2UgOiBudWxsLFxuICAgIHByZXZlbnRTY3JvbGxSZXNldDogZmFsc2UsXG4gICAgcmV2YWxpZGF0aW9uOiBcImlkbGVcIixcbiAgICBsb2FkZXJEYXRhOiBpbml0Lmh5ZHJhdGlvbkRhdGEgJiYgaW5pdC5oeWRyYXRpb25EYXRhLmxvYWRlckRhdGEgfHwge30sXG4gICAgYWN0aW9uRGF0YTogaW5pdC5oeWRyYXRpb25EYXRhICYmIGluaXQuaHlkcmF0aW9uRGF0YS5hY3Rpb25EYXRhIHx8IG51bGwsXG4gICAgZXJyb3JzOiBpbml0Lmh5ZHJhdGlvbkRhdGEgJiYgaW5pdC5oeWRyYXRpb25EYXRhLmVycm9ycyB8fCBpbml0aWFsRXJyb3JzLFxuICAgIGZldGNoZXJzOiAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpLFxuICAgIGJsb2NrZXJzOiAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpXG4gIH07XG4gIGxldCBwZW5kaW5nQWN0aW9uID0gXCJQT1BcIiAvKiBQb3AgKi87XG4gIGxldCBwZW5kaW5nUHJldmVudFNjcm9sbFJlc2V0ID0gZmFsc2U7XG4gIGxldCBwZW5kaW5nTmF2aWdhdGlvbkNvbnRyb2xsZXI7XG4gIGxldCBwZW5kaW5nVmlld1RyYW5zaXRpb25FbmFibGVkID0gZmFsc2U7XG4gIGxldCBhcHBsaWVkVmlld1RyYW5zaXRpb25zID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgbGV0IHJlbW92ZVBhZ2VIaWRlRXZlbnRMaXN0ZW5lciA9IG51bGw7XG4gIGxldCBpc1VuaW50ZXJydXB0ZWRSZXZhbGlkYXRpb24gPSBmYWxzZTtcbiAgbGV0IGlzUmV2YWxpZGF0aW9uUmVxdWlyZWQgPSBmYWxzZTtcbiAgbGV0IGNhbmNlbGxlZEZldGNoZXJMb2FkcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gIGxldCBmZXRjaENvbnRyb2xsZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgbGV0IGluY3JlbWVudGluZ0xvYWRJZCA9IDA7XG4gIGxldCBwZW5kaW5nTmF2aWdhdGlvbkxvYWRJZCA9IC0xO1xuICBsZXQgZmV0Y2hSZWxvYWRJZHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICBsZXQgZmV0Y2hSZWRpcmVjdElkcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gIGxldCBmZXRjaExvYWRNYXRjaGVzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgbGV0IGFjdGl2ZUZldGNoZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgbGV0IGZldGNoZXJzUXVldWVkRm9yRGVsZXRpb24gPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICBsZXQgYmxvY2tlckZ1bmN0aW9ucyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGxldCB1bmJsb2NrQmxvY2tlckhpc3RvcnlVcGRhdGUgPSB2b2lkIDA7XG4gIGxldCBwZW5kaW5nUmV2YWxpZGF0aW9uRGZkID0gbnVsbDtcbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZSgpIHtcbiAgICB1bmxpc3Rlbkhpc3RvcnkgPSBpbml0Lmhpc3RvcnkubGlzdGVuKFxuICAgICAgKHsgYWN0aW9uOiBoaXN0b3J5QWN0aW9uLCBsb2NhdGlvbiwgZGVsdGEgfSkgPT4ge1xuICAgICAgICBpZiAodW5ibG9ja0Jsb2NrZXJIaXN0b3J5VXBkYXRlKSB7XG4gICAgICAgICAgdW5ibG9ja0Jsb2NrZXJIaXN0b3J5VXBkYXRlKCk7XG4gICAgICAgICAgdW5ibG9ja0Jsb2NrZXJIaXN0b3J5VXBkYXRlID0gdm9pZCAwO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgIGJsb2NrZXJGdW5jdGlvbnMuc2l6ZSA9PT0gMCB8fCBkZWx0YSAhPSBudWxsLFxuICAgICAgICAgIFwiWW91IGFyZSB0cnlpbmcgdG8gdXNlIGEgYmxvY2tlciBvbiBhIFBPUCBuYXZpZ2F0aW9uIHRvIGEgbG9jYXRpb24gdGhhdCB3YXMgbm90IGNyZWF0ZWQgYnkgQHJlbWl4LXJ1bi9yb3V0ZXIuIFRoaXMgd2lsbCBmYWlsIHNpbGVudGx5IGluIHByb2R1Y3Rpb24uIFRoaXMgY2FuIGhhcHBlbiBpZiB5b3UgYXJlIG5hdmlnYXRpbmcgb3V0c2lkZSB0aGUgcm91dGVyIHZpYSBgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlYC9gd2luZG93LmxvY2F0aW9uLmhhc2hgIGluc3RlYWQgb2YgdXNpbmcgcm91dGVyIG5hdmlnYXRpb24gQVBJcy4gIFRoaXMgY2FuIGFsc28gaGFwcGVuIGlmIHlvdSBhcmUgdXNpbmcgY3JlYXRlSGFzaFJvdXRlciBhbmQgdGhlIHVzZXIgbWFudWFsbHkgY2hhbmdlcyB0aGUgVVJMLlwiXG4gICAgICAgICk7XG4gICAgICAgIGxldCBibG9ja2VyS2V5ID0gc2hvdWxkQmxvY2tOYXZpZ2F0aW9uKHtcbiAgICAgICAgICBjdXJyZW50TG9jYXRpb246IHN0YXRlLmxvY2F0aW9uLFxuICAgICAgICAgIG5leHRMb2NhdGlvbjogbG9jYXRpb24sXG4gICAgICAgICAgaGlzdG9yeUFjdGlvblxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGJsb2NrZXJLZXkgJiYgZGVsdGEgIT0gbnVsbCkge1xuICAgICAgICAgIGxldCBuZXh0SGlzdG9yeVVwZGF0ZVByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgdW5ibG9ja0Jsb2NrZXJIaXN0b3J5VXBkYXRlID0gcmVzb2x2ZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpbml0Lmhpc3RvcnkuZ28oZGVsdGEgKiAtMSk7XG4gICAgICAgICAgdXBkYXRlQmxvY2tlcihibG9ja2VyS2V5LCB7XG4gICAgICAgICAgICBzdGF0ZTogXCJibG9ja2VkXCIsXG4gICAgICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgICAgIHByb2NlZWQoKSB7XG4gICAgICAgICAgICAgIHVwZGF0ZUJsb2NrZXIoYmxvY2tlcktleSwge1xuICAgICAgICAgICAgICAgIHN0YXRlOiBcInByb2NlZWRpbmdcIixcbiAgICAgICAgICAgICAgICBwcm9jZWVkOiB2b2lkIDAsXG4gICAgICAgICAgICAgICAgcmVzZXQ6IHZvaWQgMCxcbiAgICAgICAgICAgICAgICBsb2NhdGlvblxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgbmV4dEhpc3RvcnlVcGRhdGVQcm9taXNlLnRoZW4oKCkgPT4gaW5pdC5oaXN0b3J5LmdvKGRlbHRhKSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQoKSB7XG4gICAgICAgICAgICAgIGxldCBibG9ja2VycyA9IG5ldyBNYXAoc3RhdGUuYmxvY2tlcnMpO1xuICAgICAgICAgICAgICBibG9ja2Vycy5zZXQoYmxvY2tlcktleSwgSURMRV9CTE9DS0VSKTtcbiAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoeyBibG9ja2VycyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0YXJ0TmF2aWdhdGlvbihoaXN0b3J5QWN0aW9uLCBsb2NhdGlvbik7XG4gICAgICB9XG4gICAgKTtcbiAgICBpZiAoaXNCcm93c2VyMikge1xuICAgICAgcmVzdG9yZUFwcGxpZWRUcmFuc2l0aW9ucyhyb3V0ZXJXaW5kb3csIGFwcGxpZWRWaWV3VHJhbnNpdGlvbnMpO1xuICAgICAgbGV0IF9zYXZlQXBwbGllZFRyYW5zaXRpb25zID0gKCkgPT4gcGVyc2lzdEFwcGxpZWRUcmFuc2l0aW9ucyhyb3V0ZXJXaW5kb3csIGFwcGxpZWRWaWV3VHJhbnNpdGlvbnMpO1xuICAgICAgcm91dGVyV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJwYWdlaGlkZVwiLCBfc2F2ZUFwcGxpZWRUcmFuc2l0aW9ucyk7XG4gICAgICByZW1vdmVQYWdlSGlkZUV2ZW50TGlzdGVuZXIgPSAoKSA9PiByb3V0ZXJXaW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBhZ2VoaWRlXCIsIF9zYXZlQXBwbGllZFRyYW5zaXRpb25zKTtcbiAgICB9XG4gICAgaWYgKCFzdGF0ZS5pbml0aWFsaXplZCkge1xuICAgICAgc3RhcnROYXZpZ2F0aW9uKFwiUE9QXCIgLyogUG9wICovLCBzdGF0ZS5sb2NhdGlvbiwge1xuICAgICAgICBpbml0aWFsSHlkcmF0aW9uOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJvdXRlcjtcbiAgfVxuICBmdW5jdGlvbiBkaXNwb3NlKCkge1xuICAgIGlmICh1bmxpc3Rlbkhpc3RvcnkpIHtcbiAgICAgIHVubGlzdGVuSGlzdG9yeSgpO1xuICAgIH1cbiAgICBpZiAocmVtb3ZlUGFnZUhpZGVFdmVudExpc3RlbmVyKSB7XG4gICAgICByZW1vdmVQYWdlSGlkZUV2ZW50TGlzdGVuZXIoKTtcbiAgICB9XG4gICAgc3Vic2NyaWJlcnMuY2xlYXIoKTtcbiAgICBwZW5kaW5nTmF2aWdhdGlvbkNvbnRyb2xsZXIgJiYgcGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyLmFib3J0KCk7XG4gICAgc3RhdGUuZmV0Y2hlcnMuZm9yRWFjaCgoXywga2V5KSA9PiBkZWxldGVGZXRjaGVyKGtleSkpO1xuICAgIHN0YXRlLmJsb2NrZXJzLmZvckVhY2goKF8sIGtleSkgPT4gZGVsZXRlQmxvY2tlcihrZXkpKTtcbiAgfVxuICBmdW5jdGlvbiBzdWJzY3JpYmUoZm4pIHtcbiAgICBzdWJzY3JpYmVycy5hZGQoZm4pO1xuICAgIHJldHVybiAoKSA9PiBzdWJzY3JpYmVycy5kZWxldGUoZm4pO1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZVN0YXRlKG5ld1N0YXRlLCBvcHRzID0ge30pIHtcbiAgICBzdGF0ZSA9IHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgLi4ubmV3U3RhdGVcbiAgICB9O1xuICAgIGxldCB1bm1vdW50ZWRGZXRjaGVycyA9IFtdO1xuICAgIGxldCBtb3VudGVkRmV0Y2hlcnMgPSBbXTtcbiAgICBzdGF0ZS5mZXRjaGVycy5mb3JFYWNoKChmZXRjaGVyLCBrZXkpID0+IHtcbiAgICAgIGlmIChmZXRjaGVyLnN0YXRlID09PSBcImlkbGVcIikge1xuICAgICAgICBpZiAoZmV0Y2hlcnNRdWV1ZWRGb3JEZWxldGlvbi5oYXMoa2V5KSkge1xuICAgICAgICAgIHVubW91bnRlZEZldGNoZXJzLnB1c2goa2V5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtb3VudGVkRmV0Y2hlcnMucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgWy4uLnN1YnNjcmliZXJzXS5mb3JFYWNoKFxuICAgICAgKHN1YnNjcmliZXIpID0+IHN1YnNjcmliZXIoc3RhdGUsIHtcbiAgICAgICAgZGVsZXRlZEZldGNoZXJzOiB1bm1vdW50ZWRGZXRjaGVycyxcbiAgICAgICAgdmlld1RyYW5zaXRpb25PcHRzOiBvcHRzLnZpZXdUcmFuc2l0aW9uT3B0cyxcbiAgICAgICAgZmx1c2hTeW5jOiBvcHRzLmZsdXNoU3luYyA9PT0gdHJ1ZVxuICAgICAgfSlcbiAgICApO1xuICAgIHVubW91bnRlZEZldGNoZXJzLmZvckVhY2goKGtleSkgPT4gZGVsZXRlRmV0Y2hlcihrZXkpKTtcbiAgICBtb3VudGVkRmV0Y2hlcnMuZm9yRWFjaCgoa2V5KSA9PiBzdGF0ZS5mZXRjaGVycy5kZWxldGUoa2V5KSk7XG4gIH1cbiAgZnVuY3Rpb24gY29tcGxldGVOYXZpZ2F0aW9uKGxvY2F0aW9uLCBuZXdTdGF0ZSwgeyBmbHVzaFN5bmMgfSA9IHt9KSB7XG4gICAgbGV0IGlzQWN0aW9uUmVsb2FkID0gc3RhdGUuYWN0aW9uRGF0YSAhPSBudWxsICYmIHN0YXRlLm5hdmlnYXRpb24uZm9ybU1ldGhvZCAhPSBudWxsICYmIGlzTXV0YXRpb25NZXRob2Qoc3RhdGUubmF2aWdhdGlvbi5mb3JtTWV0aG9kKSAmJiBzdGF0ZS5uYXZpZ2F0aW9uLnN0YXRlID09PSBcImxvYWRpbmdcIiAmJiBsb2NhdGlvbi5zdGF0ZT8uX2lzUmVkaXJlY3QgIT09IHRydWU7XG4gICAgbGV0IGFjdGlvbkRhdGE7XG4gICAgaWYgKG5ld1N0YXRlLmFjdGlvbkRhdGEpIHtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhuZXdTdGF0ZS5hY3Rpb25EYXRhKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFjdGlvbkRhdGEgPSBuZXdTdGF0ZS5hY3Rpb25EYXRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWN0aW9uRGF0YSA9IG51bGw7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc0FjdGlvblJlbG9hZCkge1xuICAgICAgYWN0aW9uRGF0YSA9IHN0YXRlLmFjdGlvbkRhdGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdGlvbkRhdGEgPSBudWxsO1xuICAgIH1cbiAgICBsZXQgbG9hZGVyRGF0YSA9IG5ld1N0YXRlLmxvYWRlckRhdGEgPyBtZXJnZUxvYWRlckRhdGEoXG4gICAgICBzdGF0ZS5sb2FkZXJEYXRhLFxuICAgICAgbmV3U3RhdGUubG9hZGVyRGF0YSxcbiAgICAgIG5ld1N0YXRlLm1hdGNoZXMgfHwgW10sXG4gICAgICBuZXdTdGF0ZS5lcnJvcnNcbiAgICApIDogc3RhdGUubG9hZGVyRGF0YTtcbiAgICBsZXQgYmxvY2tlcnMgPSBzdGF0ZS5ibG9ja2VycztcbiAgICBpZiAoYmxvY2tlcnMuc2l6ZSA+IDApIHtcbiAgICAgIGJsb2NrZXJzID0gbmV3IE1hcChibG9ja2Vycyk7XG4gICAgICBibG9ja2Vycy5mb3JFYWNoKChfLCBrKSA9PiBibG9ja2Vycy5zZXQoaywgSURMRV9CTE9DS0VSKSk7XG4gICAgfVxuICAgIGxldCBwcmV2ZW50U2Nyb2xsUmVzZXQgPSBwZW5kaW5nUHJldmVudFNjcm9sbFJlc2V0ID09PSB0cnVlIHx8IHN0YXRlLm5hdmlnYXRpb24uZm9ybU1ldGhvZCAhPSBudWxsICYmIGlzTXV0YXRpb25NZXRob2Qoc3RhdGUubmF2aWdhdGlvbi5mb3JtTWV0aG9kKSAmJiBsb2NhdGlvbi5zdGF0ZT8uX2lzUmVkaXJlY3QgIT09IHRydWU7XG4gICAgaWYgKGluRmxpZ2h0RGF0YVJvdXRlcykge1xuICAgICAgZGF0YVJvdXRlcyA9IGluRmxpZ2h0RGF0YVJvdXRlcztcbiAgICAgIGluRmxpZ2h0RGF0YVJvdXRlcyA9IHZvaWQgMDtcbiAgICB9XG4gICAgaWYgKGlzVW5pbnRlcnJ1cHRlZFJldmFsaWRhdGlvbikge1xuICAgIH0gZWxzZSBpZiAocGVuZGluZ0FjdGlvbiA9PT0gXCJQT1BcIiAvKiBQb3AgKi8pIHtcbiAgICB9IGVsc2UgaWYgKHBlbmRpbmdBY3Rpb24gPT09IFwiUFVTSFwiIC8qIFB1c2ggKi8pIHtcbiAgICAgIGluaXQuaGlzdG9yeS5wdXNoKGxvY2F0aW9uLCBsb2NhdGlvbi5zdGF0ZSk7XG4gICAgfSBlbHNlIGlmIChwZW5kaW5nQWN0aW9uID09PSBcIlJFUExBQ0VcIiAvKiBSZXBsYWNlICovKSB7XG4gICAgICBpbml0Lmhpc3RvcnkucmVwbGFjZShsb2NhdGlvbiwgbG9jYXRpb24uc3RhdGUpO1xuICAgIH1cbiAgICBsZXQgdmlld1RyYW5zaXRpb25PcHRzO1xuICAgIGlmIChwZW5kaW5nQWN0aW9uID09PSBcIlBPUFwiIC8qIFBvcCAqLykge1xuICAgICAgbGV0IHByaW9yUGF0aHMgPSBhcHBsaWVkVmlld1RyYW5zaXRpb25zLmdldChzdGF0ZS5sb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICBpZiAocHJpb3JQYXRocyAmJiBwcmlvclBhdGhzLmhhcyhsb2NhdGlvbi5wYXRobmFtZSkpIHtcbiAgICAgICAgdmlld1RyYW5zaXRpb25PcHRzID0ge1xuICAgICAgICAgIGN1cnJlbnRMb2NhdGlvbjogc3RhdGUubG9jYXRpb24sXG4gICAgICAgICAgbmV4dExvY2F0aW9uOiBsb2NhdGlvblxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChhcHBsaWVkVmlld1RyYW5zaXRpb25zLmhhcyhsb2NhdGlvbi5wYXRobmFtZSkpIHtcbiAgICAgICAgdmlld1RyYW5zaXRpb25PcHRzID0ge1xuICAgICAgICAgIGN1cnJlbnRMb2NhdGlvbjogbG9jYXRpb24sXG4gICAgICAgICAgbmV4dExvY2F0aW9uOiBzdGF0ZS5sb2NhdGlvblxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocGVuZGluZ1ZpZXdUcmFuc2l0aW9uRW5hYmxlZCkge1xuICAgICAgbGV0IHRvUGF0aHMgPSBhcHBsaWVkVmlld1RyYW5zaXRpb25zLmdldChzdGF0ZS5sb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICBpZiAodG9QYXRocykge1xuICAgICAgICB0b1BhdGhzLmFkZChsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b1BhdGhzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW2xvY2F0aW9uLnBhdGhuYW1lXSk7XG4gICAgICAgIGFwcGxpZWRWaWV3VHJhbnNpdGlvbnMuc2V0KHN0YXRlLmxvY2F0aW9uLnBhdGhuYW1lLCB0b1BhdGhzKTtcbiAgICAgIH1cbiAgICAgIHZpZXdUcmFuc2l0aW9uT3B0cyA9IHtcbiAgICAgICAgY3VycmVudExvY2F0aW9uOiBzdGF0ZS5sb2NhdGlvbixcbiAgICAgICAgbmV4dExvY2F0aW9uOiBsb2NhdGlvblxuICAgICAgfTtcbiAgICB9XG4gICAgdXBkYXRlU3RhdGUoXG4gICAgICB7XG4gICAgICAgIC4uLm5ld1N0YXRlLFxuICAgICAgICAvLyBtYXRjaGVzLCBlcnJvcnMsIGZldGNoZXJzIGdvIHRocm91Z2ggYXMtaXNcbiAgICAgICAgYWN0aW9uRGF0YSxcbiAgICAgICAgbG9hZGVyRGF0YSxcbiAgICAgICAgaGlzdG9yeUFjdGlvbjogcGVuZGluZ0FjdGlvbixcbiAgICAgICAgbG9jYXRpb24sXG4gICAgICAgIGluaXRpYWxpemVkOiB0cnVlLFxuICAgICAgICBuYXZpZ2F0aW9uOiBJRExFX05BVklHQVRJT04sXG4gICAgICAgIHJldmFsaWRhdGlvbjogXCJpZGxlXCIsXG4gICAgICAgIHJlc3RvcmVTY3JvbGxQb3NpdGlvbjogZ2V0U2F2ZWRTY3JvbGxQb3NpdGlvbihcbiAgICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgICBuZXdTdGF0ZS5tYXRjaGVzIHx8IHN0YXRlLm1hdGNoZXNcbiAgICAgICAgKSxcbiAgICAgICAgcHJldmVudFNjcm9sbFJlc2V0LFxuICAgICAgICBibG9ja2Vyc1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdmlld1RyYW5zaXRpb25PcHRzLFxuICAgICAgICBmbHVzaFN5bmM6IGZsdXNoU3luYyA9PT0gdHJ1ZVxuICAgICAgfVxuICAgICk7XG4gICAgcGVuZGluZ0FjdGlvbiA9IFwiUE9QXCIgLyogUG9wICovO1xuICAgIHBlbmRpbmdQcmV2ZW50U2Nyb2xsUmVzZXQgPSBmYWxzZTtcbiAgICBwZW5kaW5nVmlld1RyYW5zaXRpb25FbmFibGVkID0gZmFsc2U7XG4gICAgaXNVbmludGVycnVwdGVkUmV2YWxpZGF0aW9uID0gZmFsc2U7XG4gICAgaXNSZXZhbGlkYXRpb25SZXF1aXJlZCA9IGZhbHNlO1xuICAgIHBlbmRpbmdSZXZhbGlkYXRpb25EZmQ/LnJlc29sdmUoKTtcbiAgICBwZW5kaW5nUmV2YWxpZGF0aW9uRGZkID0gbnVsbDtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBuYXZpZ2F0ZSh0bywgb3B0cykge1xuICAgIGlmICh0eXBlb2YgdG8gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIGluaXQuaGlzdG9yeS5nbyh0byk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZVRvKFxuICAgICAgc3RhdGUubG9jYXRpb24sXG4gICAgICBzdGF0ZS5tYXRjaGVzLFxuICAgICAgYmFzZW5hbWUsXG4gICAgICB0byxcbiAgICAgIG9wdHM/LmZyb21Sb3V0ZUlkLFxuICAgICAgb3B0cz8ucmVsYXRpdmVcbiAgICApO1xuICAgIGxldCB7IHBhdGgsIHN1Ym1pc3Npb24sIGVycm9yIH0gPSBub3JtYWxpemVOYXZpZ2F0ZU9wdGlvbnMoXG4gICAgICBmYWxzZSxcbiAgICAgIG5vcm1hbGl6ZWRQYXRoLFxuICAgICAgb3B0c1xuICAgICk7XG4gICAgbGV0IGN1cnJlbnRMb2NhdGlvbiA9IHN0YXRlLmxvY2F0aW9uO1xuICAgIGxldCBuZXh0TG9jYXRpb24gPSBjcmVhdGVMb2NhdGlvbihzdGF0ZS5sb2NhdGlvbiwgcGF0aCwgb3B0cyAmJiBvcHRzLnN0YXRlKTtcbiAgICBuZXh0TG9jYXRpb24gPSB7XG4gICAgICAuLi5uZXh0TG9jYXRpb24sXG4gICAgICAuLi5pbml0Lmhpc3RvcnkuZW5jb2RlTG9jYXRpb24obmV4dExvY2F0aW9uKVxuICAgIH07XG4gICAgbGV0IHVzZXJSZXBsYWNlID0gb3B0cyAmJiBvcHRzLnJlcGxhY2UgIT0gbnVsbCA/IG9wdHMucmVwbGFjZSA6IHZvaWQgMDtcbiAgICBsZXQgaGlzdG9yeUFjdGlvbiA9IFwiUFVTSFwiIC8qIFB1c2ggKi87XG4gICAgaWYgKHVzZXJSZXBsYWNlID09PSB0cnVlKSB7XG4gICAgICBoaXN0b3J5QWN0aW9uID0gXCJSRVBMQUNFXCIgLyogUmVwbGFjZSAqLztcbiAgICB9IGVsc2UgaWYgKHVzZXJSZXBsYWNlID09PSBmYWxzZSkge1xuICAgIH0gZWxzZSBpZiAoc3VibWlzc2lvbiAhPSBudWxsICYmIGlzTXV0YXRpb25NZXRob2Qoc3VibWlzc2lvbi5mb3JtTWV0aG9kKSAmJiBzdWJtaXNzaW9uLmZvcm1BY3Rpb24gPT09IHN0YXRlLmxvY2F0aW9uLnBhdGhuYW1lICsgc3RhdGUubG9jYXRpb24uc2VhcmNoKSB7XG4gICAgICBoaXN0b3J5QWN0aW9uID0gXCJSRVBMQUNFXCIgLyogUmVwbGFjZSAqLztcbiAgICB9XG4gICAgbGV0IHByZXZlbnRTY3JvbGxSZXNldCA9IG9wdHMgJiYgXCJwcmV2ZW50U2Nyb2xsUmVzZXRcIiBpbiBvcHRzID8gb3B0cy5wcmV2ZW50U2Nyb2xsUmVzZXQgPT09IHRydWUgOiB2b2lkIDA7XG4gICAgbGV0IGZsdXNoU3luYyA9IChvcHRzICYmIG9wdHMuZmx1c2hTeW5jKSA9PT0gdHJ1ZTtcbiAgICBsZXQgYmxvY2tlcktleSA9IHNob3VsZEJsb2NrTmF2aWdhdGlvbih7XG4gICAgICBjdXJyZW50TG9jYXRpb24sXG4gICAgICBuZXh0TG9jYXRpb24sXG4gICAgICBoaXN0b3J5QWN0aW9uXG4gICAgfSk7XG4gICAgaWYgKGJsb2NrZXJLZXkpIHtcbiAgICAgIHVwZGF0ZUJsb2NrZXIoYmxvY2tlcktleSwge1xuICAgICAgICBzdGF0ZTogXCJibG9ja2VkXCIsXG4gICAgICAgIGxvY2F0aW9uOiBuZXh0TG9jYXRpb24sXG4gICAgICAgIHByb2NlZWQoKSB7XG4gICAgICAgICAgdXBkYXRlQmxvY2tlcihibG9ja2VyS2V5LCB7XG4gICAgICAgICAgICBzdGF0ZTogXCJwcm9jZWVkaW5nXCIsXG4gICAgICAgICAgICBwcm9jZWVkOiB2b2lkIDAsXG4gICAgICAgICAgICByZXNldDogdm9pZCAwLFxuICAgICAgICAgICAgbG9jYXRpb246IG5leHRMb2NhdGlvblxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG5hdmlnYXRlKHRvLCBvcHRzKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVzZXQoKSB7XG4gICAgICAgICAgbGV0IGJsb2NrZXJzID0gbmV3IE1hcChzdGF0ZS5ibG9ja2Vycyk7XG4gICAgICAgICAgYmxvY2tlcnMuc2V0KGJsb2NrZXJLZXksIElETEVfQkxPQ0tFUik7XG4gICAgICAgICAgdXBkYXRlU3RhdGUoeyBibG9ja2VycyB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHN0YXJ0TmF2aWdhdGlvbihoaXN0b3J5QWN0aW9uLCBuZXh0TG9jYXRpb24sIHtcbiAgICAgIHN1Ym1pc3Npb24sXG4gICAgICAvLyBTZW5kIHRocm91Z2ggdGhlIGZvcm1EYXRhIHNlcmlhbGl6YXRpb24gZXJyb3IgaWYgd2UgaGF2ZSBvbmUgc28gd2UgY2FuXG4gICAgICAvLyByZW5kZXIgYXQgdGhlIHJpZ2h0IGVycm9yIGJvdW5kYXJ5IGFmdGVyIHdlIG1hdGNoIHJvdXRlc1xuICAgICAgcGVuZGluZ0Vycm9yOiBlcnJvcixcbiAgICAgIHByZXZlbnRTY3JvbGxSZXNldCxcbiAgICAgIHJlcGxhY2U6IG9wdHMgJiYgb3B0cy5yZXBsYWNlLFxuICAgICAgZW5hYmxlVmlld1RyYW5zaXRpb246IG9wdHMgJiYgb3B0cy52aWV3VHJhbnNpdGlvbixcbiAgICAgIGZsdXNoU3luY1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIHJldmFsaWRhdGUoKSB7XG4gICAgaWYgKCFwZW5kaW5nUmV2YWxpZGF0aW9uRGZkKSB7XG4gICAgICBwZW5kaW5nUmV2YWxpZGF0aW9uRGZkID0gY3JlYXRlRGVmZXJyZWQoKTtcbiAgICB9XG4gICAgaW50ZXJydXB0QWN0aXZlTG9hZHMoKTtcbiAgICB1cGRhdGVTdGF0ZSh7IHJldmFsaWRhdGlvbjogXCJsb2FkaW5nXCIgfSk7XG4gICAgbGV0IHByb21pc2UgPSBwZW5kaW5nUmV2YWxpZGF0aW9uRGZkLnByb21pc2U7XG4gICAgaWYgKHN0YXRlLm5hdmlnYXRpb24uc3RhdGUgPT09IFwic3VibWl0dGluZ1wiKSB7XG4gICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG4gICAgaWYgKHN0YXRlLm5hdmlnYXRpb24uc3RhdGUgPT09IFwiaWRsZVwiKSB7XG4gICAgICBzdGFydE5hdmlnYXRpb24oc3RhdGUuaGlzdG9yeUFjdGlvbiwgc3RhdGUubG9jYXRpb24sIHtcbiAgICAgICAgc3RhcnRVbmludGVycnVwdGVkUmV2YWxpZGF0aW9uOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cbiAgICBzdGFydE5hdmlnYXRpb24oXG4gICAgICBwZW5kaW5nQWN0aW9uIHx8IHN0YXRlLmhpc3RvcnlBY3Rpb24sXG4gICAgICBzdGF0ZS5uYXZpZ2F0aW9uLmxvY2F0aW9uLFxuICAgICAge1xuICAgICAgICBvdmVycmlkZU5hdmlnYXRpb246IHN0YXRlLm5hdmlnYXRpb24sXG4gICAgICAgIC8vIFByb3h5IHRocm91Z2ggYW55IHJlbmRpbmcgdmlldyB0cmFuc2l0aW9uXG4gICAgICAgIGVuYWJsZVZpZXdUcmFuc2l0aW9uOiBwZW5kaW5nVmlld1RyYW5zaXRpb25FbmFibGVkID09PSB0cnVlXG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBzdGFydE5hdmlnYXRpb24oaGlzdG9yeUFjdGlvbiwgbG9jYXRpb24sIG9wdHMpIHtcbiAgICBwZW5kaW5nTmF2aWdhdGlvbkNvbnRyb2xsZXIgJiYgcGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyLmFib3J0KCk7XG4gICAgcGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyID0gbnVsbDtcbiAgICBwZW5kaW5nQWN0aW9uID0gaGlzdG9yeUFjdGlvbjtcbiAgICBpc1VuaW50ZXJydXB0ZWRSZXZhbGlkYXRpb24gPSAob3B0cyAmJiBvcHRzLnN0YXJ0VW5pbnRlcnJ1cHRlZFJldmFsaWRhdGlvbikgPT09IHRydWU7XG4gICAgc2F2ZVNjcm9sbFBvc2l0aW9uKHN0YXRlLmxvY2F0aW9uLCBzdGF0ZS5tYXRjaGVzKTtcbiAgICBwZW5kaW5nUHJldmVudFNjcm9sbFJlc2V0ID0gKG9wdHMgJiYgb3B0cy5wcmV2ZW50U2Nyb2xsUmVzZXQpID09PSB0cnVlO1xuICAgIHBlbmRpbmdWaWV3VHJhbnNpdGlvbkVuYWJsZWQgPSAob3B0cyAmJiBvcHRzLmVuYWJsZVZpZXdUcmFuc2l0aW9uKSA9PT0gdHJ1ZTtcbiAgICBsZXQgcm91dGVzVG9Vc2UgPSBpbkZsaWdodERhdGFSb3V0ZXMgfHwgZGF0YVJvdXRlcztcbiAgICBsZXQgbG9hZGluZ05hdmlnYXRpb24gPSBvcHRzICYmIG9wdHMub3ZlcnJpZGVOYXZpZ2F0aW9uO1xuICAgIGxldCBtYXRjaGVzID0gbWF0Y2hSb3V0ZXMocm91dGVzVG9Vc2UsIGxvY2F0aW9uLCBiYXNlbmFtZSk7XG4gICAgbGV0IGZsdXNoU3luYyA9IChvcHRzICYmIG9wdHMuZmx1c2hTeW5jKSA9PT0gdHJ1ZTtcbiAgICBsZXQgZm9nT2ZXYXIgPSBjaGVja0ZvZ09mV2FyKG1hdGNoZXMsIHJvdXRlc1RvVXNlLCBsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgaWYgKGZvZ09mV2FyLmFjdGl2ZSAmJiBmb2dPZldhci5tYXRjaGVzKSB7XG4gICAgICBtYXRjaGVzID0gZm9nT2ZXYXIubWF0Y2hlcztcbiAgICB9XG4gICAgaWYgKCFtYXRjaGVzKSB7XG4gICAgICBsZXQgeyBlcnJvciwgbm90Rm91bmRNYXRjaGVzLCByb3V0ZSB9ID0gaGFuZGxlTmF2aWdhdGlvbmFsNDA0KFxuICAgICAgICBsb2NhdGlvbi5wYXRobmFtZVxuICAgICAgKTtcbiAgICAgIGNvbXBsZXRlTmF2aWdhdGlvbihcbiAgICAgICAgbG9jYXRpb24sXG4gICAgICAgIHtcbiAgICAgICAgICBtYXRjaGVzOiBub3RGb3VuZE1hdGNoZXMsXG4gICAgICAgICAgbG9hZGVyRGF0YToge30sXG4gICAgICAgICAgZXJyb3JzOiB7XG4gICAgICAgICAgICBbcm91dGUuaWRdOiBlcnJvclxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgeyBmbHVzaFN5bmMgfVxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHN0YXRlLmluaXRpYWxpemVkICYmICFpc1JldmFsaWRhdGlvblJlcXVpcmVkICYmIGlzSGFzaENoYW5nZU9ubHkoc3RhdGUubG9jYXRpb24sIGxvY2F0aW9uKSAmJiAhKG9wdHMgJiYgb3B0cy5zdWJtaXNzaW9uICYmIGlzTXV0YXRpb25NZXRob2Qob3B0cy5zdWJtaXNzaW9uLmZvcm1NZXRob2QpKSkge1xuICAgICAgY29tcGxldGVOYXZpZ2F0aW9uKGxvY2F0aW9uLCB7IG1hdGNoZXMgfSwgeyBmbHVzaFN5bmMgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICBsZXQgcmVxdWVzdCA9IGNyZWF0ZUNsaWVudFNpZGVSZXF1ZXN0KFxuICAgICAgaW5pdC5oaXN0b3J5LFxuICAgICAgbG9jYXRpb24sXG4gICAgICBwZW5kaW5nTmF2aWdhdGlvbkNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgb3B0cyAmJiBvcHRzLnN1Ym1pc3Npb25cbiAgICApO1xuICAgIGxldCBwZW5kaW5nQWN0aW9uUmVzdWx0O1xuICAgIGlmIChvcHRzICYmIG9wdHMucGVuZGluZ0Vycm9yKSB7XG4gICAgICBwZW5kaW5nQWN0aW9uUmVzdWx0ID0gW1xuICAgICAgICBmaW5kTmVhcmVzdEJvdW5kYXJ5KG1hdGNoZXMpLnJvdXRlLmlkLFxuICAgICAgICB7IHR5cGU6IFwiZXJyb3JcIiAvKiBlcnJvciAqLywgZXJyb3I6IG9wdHMucGVuZGluZ0Vycm9yIH1cbiAgICAgIF07XG4gICAgfSBlbHNlIGlmIChvcHRzICYmIG9wdHMuc3VibWlzc2lvbiAmJiBpc011dGF0aW9uTWV0aG9kKG9wdHMuc3VibWlzc2lvbi5mb3JtTWV0aG9kKSkge1xuICAgICAgbGV0IGFjdGlvblJlc3VsdCA9IGF3YWl0IGhhbmRsZUFjdGlvbihcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgbG9jYXRpb24sXG4gICAgICAgIG9wdHMuc3VibWlzc2lvbixcbiAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgZm9nT2ZXYXIuYWN0aXZlLFxuICAgICAgICB7IHJlcGxhY2U6IG9wdHMucmVwbGFjZSwgZmx1c2hTeW5jIH1cbiAgICAgICk7XG4gICAgICBpZiAoYWN0aW9uUmVzdWx0LnNob3J0Q2lyY3VpdGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChhY3Rpb25SZXN1bHQucGVuZGluZ0FjdGlvblJlc3VsdCkge1xuICAgICAgICBsZXQgW3JvdXRlSWQsIHJlc3VsdF0gPSBhY3Rpb25SZXN1bHQucGVuZGluZ0FjdGlvblJlc3VsdDtcbiAgICAgICAgaWYgKGlzRXJyb3JSZXN1bHQocmVzdWx0KSAmJiBpc1JvdXRlRXJyb3JSZXNwb25zZShyZXN1bHQuZXJyb3IpICYmIHJlc3VsdC5lcnJvci5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlciA9IG51bGw7XG4gICAgICAgICAgY29tcGxldGVOYXZpZ2F0aW9uKGxvY2F0aW9uLCB7XG4gICAgICAgICAgICBtYXRjaGVzOiBhY3Rpb25SZXN1bHQubWF0Y2hlcyxcbiAgICAgICAgICAgIGxvYWRlckRhdGE6IHt9LFxuICAgICAgICAgICAgZXJyb3JzOiB7XG4gICAgICAgICAgICAgIFtyb3V0ZUlkXTogcmVzdWx0LmVycm9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBtYXRjaGVzID0gYWN0aW9uUmVzdWx0Lm1hdGNoZXMgfHwgbWF0Y2hlcztcbiAgICAgIHBlbmRpbmdBY3Rpb25SZXN1bHQgPSBhY3Rpb25SZXN1bHQucGVuZGluZ0FjdGlvblJlc3VsdDtcbiAgICAgIGxvYWRpbmdOYXZpZ2F0aW9uID0gZ2V0TG9hZGluZ05hdmlnYXRpb24obG9jYXRpb24sIG9wdHMuc3VibWlzc2lvbik7XG4gICAgICBmbHVzaFN5bmMgPSBmYWxzZTtcbiAgICAgIGZvZ09mV2FyLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgcmVxdWVzdCA9IGNyZWF0ZUNsaWVudFNpZGVSZXF1ZXN0KFxuICAgICAgICBpbml0Lmhpc3RvcnksXG4gICAgICAgIHJlcXVlc3QudXJsLFxuICAgICAgICByZXF1ZXN0LnNpZ25hbFxuICAgICAgKTtcbiAgICB9XG4gICAgbGV0IHtcbiAgICAgIHNob3J0Q2lyY3VpdGVkLFxuICAgICAgbWF0Y2hlczogdXBkYXRlZE1hdGNoZXMsXG4gICAgICBsb2FkZXJEYXRhLFxuICAgICAgZXJyb3JzXG4gICAgfSA9IGF3YWl0IGhhbmRsZUxvYWRlcnMoXG4gICAgICByZXF1ZXN0LFxuICAgICAgbG9jYXRpb24sXG4gICAgICBtYXRjaGVzLFxuICAgICAgZm9nT2ZXYXIuYWN0aXZlLFxuICAgICAgbG9hZGluZ05hdmlnYXRpb24sXG4gICAgICBvcHRzICYmIG9wdHMuc3VibWlzc2lvbixcbiAgICAgIG9wdHMgJiYgb3B0cy5mZXRjaGVyU3VibWlzc2lvbixcbiAgICAgIG9wdHMgJiYgb3B0cy5yZXBsYWNlLFxuICAgICAgb3B0cyAmJiBvcHRzLmluaXRpYWxIeWRyYXRpb24gPT09IHRydWUsXG4gICAgICBmbHVzaFN5bmMsXG4gICAgICBwZW5kaW5nQWN0aW9uUmVzdWx0XG4gICAgKTtcbiAgICBpZiAoc2hvcnRDaXJjdWl0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyID0gbnVsbDtcbiAgICBjb21wbGV0ZU5hdmlnYXRpb24obG9jYXRpb24sIHtcbiAgICAgIG1hdGNoZXM6IHVwZGF0ZWRNYXRjaGVzIHx8IG1hdGNoZXMsXG4gICAgICAuLi5nZXRBY3Rpb25EYXRhRm9yQ29tbWl0KHBlbmRpbmdBY3Rpb25SZXN1bHQpLFxuICAgICAgbG9hZGVyRGF0YSxcbiAgICAgIGVycm9yc1xuICAgIH0pO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGhhbmRsZUFjdGlvbihyZXF1ZXN0LCBsb2NhdGlvbiwgc3VibWlzc2lvbiwgbWF0Y2hlcywgaXNGb2dPZldhciwgb3B0cyA9IHt9KSB7XG4gICAgaW50ZXJydXB0QWN0aXZlTG9hZHMoKTtcbiAgICBsZXQgbmF2aWdhdGlvbiA9IGdldFN1Ym1pdHRpbmdOYXZpZ2F0aW9uKGxvY2F0aW9uLCBzdWJtaXNzaW9uKTtcbiAgICB1cGRhdGVTdGF0ZSh7IG5hdmlnYXRpb24gfSwgeyBmbHVzaFN5bmM6IG9wdHMuZmx1c2hTeW5jID09PSB0cnVlIH0pO1xuICAgIGlmIChpc0ZvZ09mV2FyKSB7XG4gICAgICBsZXQgZGlzY292ZXJSZXN1bHQgPSBhd2FpdCBkaXNjb3ZlclJvdXRlcyhcbiAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgbG9jYXRpb24ucGF0aG5hbWUsXG4gICAgICAgIHJlcXVlc3Quc2lnbmFsXG4gICAgICApO1xuICAgICAgaWYgKGRpc2NvdmVyUmVzdWx0LnR5cGUgPT09IFwiYWJvcnRlZFwiKSB7XG4gICAgICAgIHJldHVybiB7IHNob3J0Q2lyY3VpdGVkOiB0cnVlIH07XG4gICAgICB9IGVsc2UgaWYgKGRpc2NvdmVyUmVzdWx0LnR5cGUgPT09IFwiZXJyb3JcIikge1xuICAgICAgICBsZXQgYm91bmRhcnlJZCA9IGZpbmROZWFyZXN0Qm91bmRhcnkoZGlzY292ZXJSZXN1bHQucGFydGlhbE1hdGNoZXMpLnJvdXRlLmlkO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1hdGNoZXM6IGRpc2NvdmVyUmVzdWx0LnBhcnRpYWxNYXRjaGVzLFxuICAgICAgICAgIHBlbmRpbmdBY3Rpb25SZXN1bHQ6IFtcbiAgICAgICAgICAgIGJvdW5kYXJ5SWQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6IFwiZXJyb3JcIiAvKiBlcnJvciAqLyxcbiAgICAgICAgICAgICAgZXJyb3I6IGRpc2NvdmVyUmVzdWx0LmVycm9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmICghZGlzY292ZXJSZXN1bHQubWF0Y2hlcykge1xuICAgICAgICBsZXQgeyBub3RGb3VuZE1hdGNoZXMsIGVycm9yLCByb3V0ZSB9ID0gaGFuZGxlTmF2aWdhdGlvbmFsNDA0KFxuICAgICAgICAgIGxvY2F0aW9uLnBhdGhuYW1lXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWF0Y2hlczogbm90Rm91bmRNYXRjaGVzLFxuICAgICAgICAgIHBlbmRpbmdBY3Rpb25SZXN1bHQ6IFtcbiAgICAgICAgICAgIHJvdXRlLmlkLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBcImVycm9yXCIgLyogZXJyb3IgKi8sXG4gICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWF0Y2hlcyA9IGRpc2NvdmVyUmVzdWx0Lm1hdGNoZXM7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCByZXN1bHQ7XG4gICAgbGV0IGFjdGlvbk1hdGNoID0gZ2V0VGFyZ2V0TWF0Y2gobWF0Y2hlcywgbG9jYXRpb24pO1xuICAgIGlmICghYWN0aW9uTWF0Y2gucm91dGUuYWN0aW9uICYmICFhY3Rpb25NYXRjaC5yb3V0ZS5sYXp5KSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIHR5cGU6IFwiZXJyb3JcIiAvKiBlcnJvciAqLyxcbiAgICAgICAgZXJyb3I6IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA1LCB7XG4gICAgICAgICAgbWV0aG9kOiByZXF1ZXN0Lm1ldGhvZCxcbiAgICAgICAgICBwYXRobmFtZTogbG9jYXRpb24ucGF0aG5hbWUsXG4gICAgICAgICAgcm91dGVJZDogYWN0aW9uTWF0Y2gucm91dGUuaWRcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgY2FsbERhdGFTdHJhdGVneShcbiAgICAgICAgXCJhY3Rpb25cIixcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIFthY3Rpb25NYXRjaF0sXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIG51bGxcbiAgICAgICk7XG4gICAgICByZXN1bHQgPSByZXN1bHRzW2FjdGlvbk1hdGNoLnJvdXRlLmlkXTtcbiAgICAgIGlmIChyZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgIHJldHVybiB7IHNob3J0Q2lyY3VpdGVkOiB0cnVlIH07XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc1JlZGlyZWN0UmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgIGxldCByZXBsYWNlMjtcbiAgICAgIGlmIChvcHRzICYmIG9wdHMucmVwbGFjZSAhPSBudWxsKSB7XG4gICAgICAgIHJlcGxhY2UyID0gb3B0cy5yZXBsYWNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGxvY2F0aW9uMiA9IG5vcm1hbGl6ZVJlZGlyZWN0TG9jYXRpb24oXG4gICAgICAgICAgcmVzdWx0LnJlc3BvbnNlLmhlYWRlcnMuZ2V0KFwiTG9jYXRpb25cIiksXG4gICAgICAgICAgbmV3IFVSTChyZXF1ZXN0LnVybCksXG4gICAgICAgICAgYmFzZW5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgcmVwbGFjZTIgPSBsb2NhdGlvbjIgPT09IHN0YXRlLmxvY2F0aW9uLnBhdGhuYW1lICsgc3RhdGUubG9jYXRpb24uc2VhcmNoO1xuICAgICAgfVxuICAgICAgYXdhaXQgc3RhcnRSZWRpcmVjdE5hdmlnYXRpb24ocmVxdWVzdCwgcmVzdWx0LCB0cnVlLCB7XG4gICAgICAgIHN1Ym1pc3Npb24sXG4gICAgICAgIHJlcGxhY2U6IHJlcGxhY2UyXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IHNob3J0Q2lyY3VpdGVkOiB0cnVlIH07XG4gICAgfVxuICAgIGlmIChpc0Vycm9yUmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgIGxldCBib3VuZGFyeU1hdGNoID0gZmluZE5lYXJlc3RCb3VuZGFyeShtYXRjaGVzLCBhY3Rpb25NYXRjaC5yb3V0ZS5pZCk7XG4gICAgICBpZiAoKG9wdHMgJiYgb3B0cy5yZXBsYWNlKSAhPT0gdHJ1ZSkge1xuICAgICAgICBwZW5kaW5nQWN0aW9uID0gXCJQVVNIXCIgLyogUHVzaCAqLztcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIHBlbmRpbmdBY3Rpb25SZXN1bHQ6IFtib3VuZGFyeU1hdGNoLnJvdXRlLmlkLCByZXN1bHRdXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgbWF0Y2hlcyxcbiAgICAgIHBlbmRpbmdBY3Rpb25SZXN1bHQ6IFthY3Rpb25NYXRjaC5yb3V0ZS5pZCwgcmVzdWx0XVxuICAgIH07XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gaGFuZGxlTG9hZGVycyhyZXF1ZXN0LCBsb2NhdGlvbiwgbWF0Y2hlcywgaXNGb2dPZldhciwgb3ZlcnJpZGVOYXZpZ2F0aW9uLCBzdWJtaXNzaW9uLCBmZXRjaGVyU3VibWlzc2lvbiwgcmVwbGFjZTIsIGluaXRpYWxIeWRyYXRpb24sIGZsdXNoU3luYywgcGVuZGluZ0FjdGlvblJlc3VsdCkge1xuICAgIGxldCBsb2FkaW5nTmF2aWdhdGlvbiA9IG92ZXJyaWRlTmF2aWdhdGlvbiB8fCBnZXRMb2FkaW5nTmF2aWdhdGlvbihsb2NhdGlvbiwgc3VibWlzc2lvbik7XG4gICAgbGV0IGFjdGl2ZVN1Ym1pc3Npb24gPSBzdWJtaXNzaW9uIHx8IGZldGNoZXJTdWJtaXNzaW9uIHx8IGdldFN1Ym1pc3Npb25Gcm9tTmF2aWdhdGlvbihsb2FkaW5nTmF2aWdhdGlvbik7XG4gICAgbGV0IHNob3VsZFVwZGF0ZU5hdmlnYXRpb25TdGF0ZSA9ICFpc1VuaW50ZXJydXB0ZWRSZXZhbGlkYXRpb24gJiYgIWluaXRpYWxIeWRyYXRpb247XG4gICAgaWYgKGlzRm9nT2ZXYXIpIHtcbiAgICAgIGlmIChzaG91bGRVcGRhdGVOYXZpZ2F0aW9uU3RhdGUpIHtcbiAgICAgICAgbGV0IGFjdGlvbkRhdGEgPSBnZXRVcGRhdGVkQWN0aW9uRGF0YShwZW5kaW5nQWN0aW9uUmVzdWx0KTtcbiAgICAgICAgdXBkYXRlU3RhdGUoXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmF2aWdhdGlvbjogbG9hZGluZ05hdmlnYXRpb24sXG4gICAgICAgICAgICAuLi5hY3Rpb25EYXRhICE9PSB2b2lkIDAgPyB7IGFjdGlvbkRhdGEgfSA6IHt9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmbHVzaFN5bmNcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBsZXQgZGlzY292ZXJSZXN1bHQgPSBhd2FpdCBkaXNjb3ZlclJvdXRlcyhcbiAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgbG9jYXRpb24ucGF0aG5hbWUsXG4gICAgICAgIHJlcXVlc3Quc2lnbmFsXG4gICAgICApO1xuICAgICAgaWYgKGRpc2NvdmVyUmVzdWx0LnR5cGUgPT09IFwiYWJvcnRlZFwiKSB7XG4gICAgICAgIHJldHVybiB7IHNob3J0Q2lyY3VpdGVkOiB0cnVlIH07XG4gICAgICB9IGVsc2UgaWYgKGRpc2NvdmVyUmVzdWx0LnR5cGUgPT09IFwiZXJyb3JcIikge1xuICAgICAgICBsZXQgYm91bmRhcnlJZCA9IGZpbmROZWFyZXN0Qm91bmRhcnkoZGlzY292ZXJSZXN1bHQucGFydGlhbE1hdGNoZXMpLnJvdXRlLmlkO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1hdGNoZXM6IGRpc2NvdmVyUmVzdWx0LnBhcnRpYWxNYXRjaGVzLFxuICAgICAgICAgIGxvYWRlckRhdGE6IHt9LFxuICAgICAgICAgIGVycm9yczoge1xuICAgICAgICAgICAgW2JvdW5kYXJ5SWRdOiBkaXNjb3ZlclJlc3VsdC5lcnJvclxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoIWRpc2NvdmVyUmVzdWx0Lm1hdGNoZXMpIHtcbiAgICAgICAgbGV0IHsgZXJyb3IsIG5vdEZvdW5kTWF0Y2hlcywgcm91dGUgfSA9IGhhbmRsZU5hdmlnYXRpb25hbDQwNChcbiAgICAgICAgICBsb2NhdGlvbi5wYXRobmFtZVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1hdGNoZXM6IG5vdEZvdW5kTWF0Y2hlcyxcbiAgICAgICAgICBsb2FkZXJEYXRhOiB7fSxcbiAgICAgICAgICBlcnJvcnM6IHtcbiAgICAgICAgICAgIFtyb3V0ZS5pZF06IGVycm9yXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWF0Y2hlcyA9IGRpc2NvdmVyUmVzdWx0Lm1hdGNoZXM7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCByb3V0ZXNUb1VzZSA9IGluRmxpZ2h0RGF0YVJvdXRlcyB8fCBkYXRhUm91dGVzO1xuICAgIGxldCBbbWF0Y2hlc1RvTG9hZCwgcmV2YWxpZGF0aW5nRmV0Y2hlcnNdID0gZ2V0TWF0Y2hlc1RvTG9hZChcbiAgICAgIGluaXQuaGlzdG9yeSxcbiAgICAgIHN0YXRlLFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIGFjdGl2ZVN1Ym1pc3Npb24sXG4gICAgICBsb2NhdGlvbixcbiAgICAgIGluaXRpYWxIeWRyYXRpb24gPT09IHRydWUsXG4gICAgICBpc1JldmFsaWRhdGlvblJlcXVpcmVkLFxuICAgICAgY2FuY2VsbGVkRmV0Y2hlckxvYWRzLFxuICAgICAgZmV0Y2hlcnNRdWV1ZWRGb3JEZWxldGlvbixcbiAgICAgIGZldGNoTG9hZE1hdGNoZXMsXG4gICAgICBmZXRjaFJlZGlyZWN0SWRzLFxuICAgICAgcm91dGVzVG9Vc2UsXG4gICAgICBiYXNlbmFtZSxcbiAgICAgIHBlbmRpbmdBY3Rpb25SZXN1bHRcbiAgICApO1xuICAgIHBlbmRpbmdOYXZpZ2F0aW9uTG9hZElkID0gKytpbmNyZW1lbnRpbmdMb2FkSWQ7XG4gICAgaWYgKG1hdGNoZXNUb0xvYWQubGVuZ3RoID09PSAwICYmIHJldmFsaWRhdGluZ0ZldGNoZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgbGV0IHVwZGF0ZWRGZXRjaGVyczIgPSBtYXJrRmV0Y2hSZWRpcmVjdHNEb25lKCk7XG4gICAgICBjb21wbGV0ZU5hdmlnYXRpb24oXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICB7XG4gICAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgICBsb2FkZXJEYXRhOiB7fSxcbiAgICAgICAgICAvLyBDb21taXQgcGVuZGluZyBlcnJvciBpZiB3ZSdyZSBzaG9ydCBjaXJjdWl0aW5nXG4gICAgICAgICAgZXJyb3JzOiBwZW5kaW5nQWN0aW9uUmVzdWx0ICYmIGlzRXJyb3JSZXN1bHQocGVuZGluZ0FjdGlvblJlc3VsdFsxXSkgPyB7IFtwZW5kaW5nQWN0aW9uUmVzdWx0WzBdXTogcGVuZGluZ0FjdGlvblJlc3VsdFsxXS5lcnJvciB9IDogbnVsbCxcbiAgICAgICAgICAuLi5nZXRBY3Rpb25EYXRhRm9yQ29tbWl0KHBlbmRpbmdBY3Rpb25SZXN1bHQpLFxuICAgICAgICAgIC4uLnVwZGF0ZWRGZXRjaGVyczIgPyB7IGZldGNoZXJzOiBuZXcgTWFwKHN0YXRlLmZldGNoZXJzKSB9IDoge31cbiAgICAgICAgfSxcbiAgICAgICAgeyBmbHVzaFN5bmMgfVxuICAgICAgKTtcbiAgICAgIHJldHVybiB7IHNob3J0Q2lyY3VpdGVkOiB0cnVlIH07XG4gICAgfVxuICAgIGlmIChzaG91bGRVcGRhdGVOYXZpZ2F0aW9uU3RhdGUpIHtcbiAgICAgIGxldCB1cGRhdGVzID0ge307XG4gICAgICBpZiAoIWlzRm9nT2ZXYXIpIHtcbiAgICAgICAgdXBkYXRlcy5uYXZpZ2F0aW9uID0gbG9hZGluZ05hdmlnYXRpb247XG4gICAgICAgIGxldCBhY3Rpb25EYXRhID0gZ2V0VXBkYXRlZEFjdGlvbkRhdGEocGVuZGluZ0FjdGlvblJlc3VsdCk7XG4gICAgICAgIGlmIChhY3Rpb25EYXRhICE9PSB2b2lkIDApIHtcbiAgICAgICAgICB1cGRhdGVzLmFjdGlvbkRhdGEgPSBhY3Rpb25EYXRhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmV2YWxpZGF0aW5nRmV0Y2hlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICB1cGRhdGVzLmZldGNoZXJzID0gZ2V0VXBkYXRlZFJldmFsaWRhdGluZ0ZldGNoZXJzKHJldmFsaWRhdGluZ0ZldGNoZXJzKTtcbiAgICAgIH1cbiAgICAgIHVwZGF0ZVN0YXRlKHVwZGF0ZXMsIHsgZmx1c2hTeW5jIH0pO1xuICAgIH1cbiAgICByZXZhbGlkYXRpbmdGZXRjaGVycy5mb3JFYWNoKChyZikgPT4ge1xuICAgICAgYWJvcnRGZXRjaGVyKHJmLmtleSk7XG4gICAgICBpZiAocmYuY29udHJvbGxlcikge1xuICAgICAgICBmZXRjaENvbnRyb2xsZXJzLnNldChyZi5rZXksIHJmLmNvbnRyb2xsZXIpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGxldCBhYm9ydFBlbmRpbmdGZXRjaFJldmFsaWRhdGlvbnMgPSAoKSA9PiByZXZhbGlkYXRpbmdGZXRjaGVycy5mb3JFYWNoKChmKSA9PiBhYm9ydEZldGNoZXIoZi5rZXkpKTtcbiAgICBpZiAocGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyKSB7XG4gICAgICBwZW5kaW5nTmF2aWdhdGlvbkNvbnRyb2xsZXIuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgIFwiYWJvcnRcIixcbiAgICAgICAgYWJvcnRQZW5kaW5nRmV0Y2hSZXZhbGlkYXRpb25zXG4gICAgICApO1xuICAgIH1cbiAgICBsZXQgeyBsb2FkZXJSZXN1bHRzLCBmZXRjaGVyUmVzdWx0cyB9ID0gYXdhaXQgY2FsbExvYWRlcnNBbmRNYXliZVJlc29sdmVEYXRhKFxuICAgICAgc3RhdGUsXG4gICAgICBtYXRjaGVzLFxuICAgICAgbWF0Y2hlc1RvTG9hZCxcbiAgICAgIHJldmFsaWRhdGluZ0ZldGNoZXJzLFxuICAgICAgcmVxdWVzdFxuICAgICk7XG4gICAgaWYgKHJlcXVlc3Quc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHJldHVybiB7IHNob3J0Q2lyY3VpdGVkOiB0cnVlIH07XG4gICAgfVxuICAgIGlmIChwZW5kaW5nTmF2aWdhdGlvbkNvbnRyb2xsZXIpIHtcbiAgICAgIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlci5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgXCJhYm9ydFwiLFxuICAgICAgICBhYm9ydFBlbmRpbmdGZXRjaFJldmFsaWRhdGlvbnNcbiAgICAgICk7XG4gICAgfVxuICAgIHJldmFsaWRhdGluZ0ZldGNoZXJzLmZvckVhY2goKHJmKSA9PiBmZXRjaENvbnRyb2xsZXJzLmRlbGV0ZShyZi5rZXkpKTtcbiAgICBsZXQgcmVkaXJlY3QyID0gZmluZFJlZGlyZWN0KGxvYWRlclJlc3VsdHMpO1xuICAgIGlmIChyZWRpcmVjdDIpIHtcbiAgICAgIGF3YWl0IHN0YXJ0UmVkaXJlY3ROYXZpZ2F0aW9uKHJlcXVlc3QsIHJlZGlyZWN0Mi5yZXN1bHQsIHRydWUsIHtcbiAgICAgICAgcmVwbGFjZTogcmVwbGFjZTJcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHsgc2hvcnRDaXJjdWl0ZWQ6IHRydWUgfTtcbiAgICB9XG4gICAgcmVkaXJlY3QyID0gZmluZFJlZGlyZWN0KGZldGNoZXJSZXN1bHRzKTtcbiAgICBpZiAocmVkaXJlY3QyKSB7XG4gICAgICBmZXRjaFJlZGlyZWN0SWRzLmFkZChyZWRpcmVjdDIua2V5KTtcbiAgICAgIGF3YWl0IHN0YXJ0UmVkaXJlY3ROYXZpZ2F0aW9uKHJlcXVlc3QsIHJlZGlyZWN0Mi5yZXN1bHQsIHRydWUsIHtcbiAgICAgICAgcmVwbGFjZTogcmVwbGFjZTJcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHsgc2hvcnRDaXJjdWl0ZWQ6IHRydWUgfTtcbiAgICB9XG4gICAgbGV0IHsgbG9hZGVyRGF0YSwgZXJyb3JzIH0gPSBwcm9jZXNzTG9hZGVyRGF0YShcbiAgICAgIHN0YXRlLFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIGxvYWRlclJlc3VsdHMsXG4gICAgICBwZW5kaW5nQWN0aW9uUmVzdWx0LFxuICAgICAgcmV2YWxpZGF0aW5nRmV0Y2hlcnMsXG4gICAgICBmZXRjaGVyUmVzdWx0c1xuICAgICk7XG4gICAgaWYgKGluaXRpYWxIeWRyYXRpb24gJiYgc3RhdGUuZXJyb3JzKSB7XG4gICAgICBlcnJvcnMgPSB7IC4uLnN0YXRlLmVycm9ycywgLi4uZXJyb3JzIH07XG4gICAgfVxuICAgIGxldCB1cGRhdGVkRmV0Y2hlcnMgPSBtYXJrRmV0Y2hSZWRpcmVjdHNEb25lKCk7XG4gICAgbGV0IGRpZEFib3J0RmV0Y2hMb2FkcyA9IGFib3J0U3RhbGVGZXRjaExvYWRzKHBlbmRpbmdOYXZpZ2F0aW9uTG9hZElkKTtcbiAgICBsZXQgc2hvdWxkVXBkYXRlRmV0Y2hlcnMgPSB1cGRhdGVkRmV0Y2hlcnMgfHwgZGlkQWJvcnRGZXRjaExvYWRzIHx8IHJldmFsaWRhdGluZ0ZldGNoZXJzLmxlbmd0aCA+IDA7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1hdGNoZXMsXG4gICAgICBsb2FkZXJEYXRhLFxuICAgICAgZXJyb3JzLFxuICAgICAgLi4uc2hvdWxkVXBkYXRlRmV0Y2hlcnMgPyB7IGZldGNoZXJzOiBuZXcgTWFwKHN0YXRlLmZldGNoZXJzKSB9IDoge31cbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIGdldFVwZGF0ZWRBY3Rpb25EYXRhKHBlbmRpbmdBY3Rpb25SZXN1bHQpIHtcbiAgICBpZiAocGVuZGluZ0FjdGlvblJlc3VsdCAmJiAhaXNFcnJvclJlc3VsdChwZW5kaW5nQWN0aW9uUmVzdWx0WzFdKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW3BlbmRpbmdBY3Rpb25SZXN1bHRbMF1dOiBwZW5kaW5nQWN0aW9uUmVzdWx0WzFdLmRhdGFcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChzdGF0ZS5hY3Rpb25EYXRhKSB7XG4gICAgICBpZiAoT2JqZWN0LmtleXMoc3RhdGUuYWN0aW9uRGF0YSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlLmFjdGlvbkRhdGE7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGdldFVwZGF0ZWRSZXZhbGlkYXRpbmdGZXRjaGVycyhyZXZhbGlkYXRpbmdGZXRjaGVycykge1xuICAgIHJldmFsaWRhdGluZ0ZldGNoZXJzLmZvckVhY2goKHJmKSA9PiB7XG4gICAgICBsZXQgZmV0Y2hlciA9IHN0YXRlLmZldGNoZXJzLmdldChyZi5rZXkpO1xuICAgICAgbGV0IHJldmFsaWRhdGluZ0ZldGNoZXIgPSBnZXRMb2FkaW5nRmV0Y2hlcihcbiAgICAgICAgdm9pZCAwLFxuICAgICAgICBmZXRjaGVyID8gZmV0Y2hlci5kYXRhIDogdm9pZCAwXG4gICAgICApO1xuICAgICAgc3RhdGUuZmV0Y2hlcnMuc2V0KHJmLmtleSwgcmV2YWxpZGF0aW5nRmV0Y2hlcik7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBNYXAoc3RhdGUuZmV0Y2hlcnMpO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGZldGNoMihrZXksIHJvdXRlSWQsIGhyZWYsIG9wdHMpIHtcbiAgICBhYm9ydEZldGNoZXIoa2V5KTtcbiAgICBsZXQgZmx1c2hTeW5jID0gKG9wdHMgJiYgb3B0cy5mbHVzaFN5bmMpID09PSB0cnVlO1xuICAgIGxldCByb3V0ZXNUb1VzZSA9IGluRmxpZ2h0RGF0YVJvdXRlcyB8fCBkYXRhUm91dGVzO1xuICAgIGxldCBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZVRvKFxuICAgICAgc3RhdGUubG9jYXRpb24sXG4gICAgICBzdGF0ZS5tYXRjaGVzLFxuICAgICAgYmFzZW5hbWUsXG4gICAgICBocmVmLFxuICAgICAgcm91dGVJZCxcbiAgICAgIG9wdHM/LnJlbGF0aXZlXG4gICAgKTtcbiAgICBsZXQgbWF0Y2hlcyA9IG1hdGNoUm91dGVzKHJvdXRlc1RvVXNlLCBub3JtYWxpemVkUGF0aCwgYmFzZW5hbWUpO1xuICAgIGxldCBmb2dPZldhciA9IGNoZWNrRm9nT2ZXYXIobWF0Y2hlcywgcm91dGVzVG9Vc2UsIG5vcm1hbGl6ZWRQYXRoKTtcbiAgICBpZiAoZm9nT2ZXYXIuYWN0aXZlICYmIGZvZ09mV2FyLm1hdGNoZXMpIHtcbiAgICAgIG1hdGNoZXMgPSBmb2dPZldhci5tYXRjaGVzO1xuICAgIH1cbiAgICBpZiAoIW1hdGNoZXMpIHtcbiAgICAgIHNldEZldGNoZXJFcnJvcihcbiAgICAgICAga2V5LFxuICAgICAgICByb3V0ZUlkLFxuICAgICAgICBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwNCwgeyBwYXRobmFtZTogbm9ybWFsaXplZFBhdGggfSksXG4gICAgICAgIHsgZmx1c2hTeW5jIH1cbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCB7IHBhdGgsIHN1Ym1pc3Npb24sIGVycm9yIH0gPSBub3JtYWxpemVOYXZpZ2F0ZU9wdGlvbnMoXG4gICAgICB0cnVlLFxuICAgICAgbm9ybWFsaXplZFBhdGgsXG4gICAgICBvcHRzXG4gICAgKTtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIHNldEZldGNoZXJFcnJvcihrZXksIHJvdXRlSWQsIGVycm9yLCB7IGZsdXNoU3luYyB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IG1hdGNoID0gZ2V0VGFyZ2V0TWF0Y2gobWF0Y2hlcywgcGF0aCk7XG4gICAgbGV0IHByZXZlbnRTY3JvbGxSZXNldCA9IChvcHRzICYmIG9wdHMucHJldmVudFNjcm9sbFJlc2V0KSA9PT0gdHJ1ZTtcbiAgICBpZiAoc3VibWlzc2lvbiAmJiBpc011dGF0aW9uTWV0aG9kKHN1Ym1pc3Npb24uZm9ybU1ldGhvZCkpIHtcbiAgICAgIGF3YWl0IGhhbmRsZUZldGNoZXJBY3Rpb24oXG4gICAgICAgIGtleSxcbiAgICAgICAgcm91dGVJZCxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgbWF0Y2gsXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGZvZ09mV2FyLmFjdGl2ZSxcbiAgICAgICAgZmx1c2hTeW5jLFxuICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgICAgIHN1Ym1pc3Npb25cbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZldGNoTG9hZE1hdGNoZXMuc2V0KGtleSwgeyByb3V0ZUlkLCBwYXRoIH0pO1xuICAgIGF3YWl0IGhhbmRsZUZldGNoZXJMb2FkZXIoXG4gICAgICBrZXksXG4gICAgICByb3V0ZUlkLFxuICAgICAgcGF0aCxcbiAgICAgIG1hdGNoLFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIGZvZ09mV2FyLmFjdGl2ZSxcbiAgICAgIGZsdXNoU3luYyxcbiAgICAgIHByZXZlbnRTY3JvbGxSZXNldCxcbiAgICAgIHN1Ym1pc3Npb25cbiAgICApO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGhhbmRsZUZldGNoZXJBY3Rpb24oa2V5LCByb3V0ZUlkLCBwYXRoLCBtYXRjaCwgcmVxdWVzdE1hdGNoZXMsIGlzRm9nT2ZXYXIsIGZsdXNoU3luYywgcHJldmVudFNjcm9sbFJlc2V0LCBzdWJtaXNzaW9uKSB7XG4gICAgaW50ZXJydXB0QWN0aXZlTG9hZHMoKTtcbiAgICBmZXRjaExvYWRNYXRjaGVzLmRlbGV0ZShrZXkpO1xuICAgIGZ1bmN0aW9uIGRldGVjdEFuZEhhbmRsZTQwNUVycm9yKG0pIHtcbiAgICAgIGlmICghbS5yb3V0ZS5hY3Rpb24gJiYgIW0ucm91dGUubGF6eSkge1xuICAgICAgICBsZXQgZXJyb3IgPSBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwNSwge1xuICAgICAgICAgIG1ldGhvZDogc3VibWlzc2lvbi5mb3JtTWV0aG9kLFxuICAgICAgICAgIHBhdGhuYW1lOiBwYXRoLFxuICAgICAgICAgIHJvdXRlSWRcbiAgICAgICAgfSk7XG4gICAgICAgIHNldEZldGNoZXJFcnJvcihrZXksIHJvdXRlSWQsIGVycm9yLCB7IGZsdXNoU3luYyB9KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghaXNGb2dPZldhciAmJiBkZXRlY3RBbmRIYW5kbGU0MDVFcnJvcihtYXRjaCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGV4aXN0aW5nRmV0Y2hlciA9IHN0YXRlLmZldGNoZXJzLmdldChrZXkpO1xuICAgIHVwZGF0ZUZldGNoZXJTdGF0ZShrZXksIGdldFN1Ym1pdHRpbmdGZXRjaGVyKHN1Ym1pc3Npb24sIGV4aXN0aW5nRmV0Y2hlciksIHtcbiAgICAgIGZsdXNoU3luY1xuICAgIH0pO1xuICAgIGxldCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgbGV0IGZldGNoUmVxdWVzdCA9IGNyZWF0ZUNsaWVudFNpZGVSZXF1ZXN0KFxuICAgICAgaW5pdC5oaXN0b3J5LFxuICAgICAgcGF0aCxcbiAgICAgIGFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICBzdWJtaXNzaW9uXG4gICAgKTtcbiAgICBpZiAoaXNGb2dPZldhcikge1xuICAgICAgbGV0IGRpc2NvdmVyUmVzdWx0ID0gYXdhaXQgZGlzY292ZXJSb3V0ZXMoXG4gICAgICAgIHJlcXVlc3RNYXRjaGVzLFxuICAgICAgICBwYXRoLFxuICAgICAgICBmZXRjaFJlcXVlc3Quc2lnbmFsXG4gICAgICApO1xuICAgICAgaWYgKGRpc2NvdmVyUmVzdWx0LnR5cGUgPT09IFwiYWJvcnRlZFwiKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAoZGlzY292ZXJSZXN1bHQudHlwZSA9PT0gXCJlcnJvclwiKSB7XG4gICAgICAgIHNldEZldGNoZXJFcnJvcihrZXksIHJvdXRlSWQsIGRpc2NvdmVyUmVzdWx0LmVycm9yLCB7IGZsdXNoU3luYyB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmICghZGlzY292ZXJSZXN1bHQubWF0Y2hlcykge1xuICAgICAgICBzZXRGZXRjaGVyRXJyb3IoXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIHJvdXRlSWQsXG4gICAgICAgICAgZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDQsIHsgcGF0aG5hbWU6IHBhdGggfSksXG4gICAgICAgICAgeyBmbHVzaFN5bmMgfVxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXF1ZXN0TWF0Y2hlcyA9IGRpc2NvdmVyUmVzdWx0Lm1hdGNoZXM7XG4gICAgICAgIG1hdGNoID0gZ2V0VGFyZ2V0TWF0Y2gocmVxdWVzdE1hdGNoZXMsIHBhdGgpO1xuICAgICAgICBpZiAoZGV0ZWN0QW5kSGFuZGxlNDA1RXJyb3IobWF0Y2gpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZldGNoQ29udHJvbGxlcnMuc2V0KGtleSwgYWJvcnRDb250cm9sbGVyKTtcbiAgICBsZXQgb3JpZ2luYXRpbmdMb2FkSWQgPSBpbmNyZW1lbnRpbmdMb2FkSWQ7XG4gICAgbGV0IGFjdGlvblJlc3VsdHMgPSBhd2FpdCBjYWxsRGF0YVN0cmF0ZWd5KFxuICAgICAgXCJhY3Rpb25cIixcbiAgICAgIHN0YXRlLFxuICAgICAgZmV0Y2hSZXF1ZXN0LFxuICAgICAgW21hdGNoXSxcbiAgICAgIHJlcXVlc3RNYXRjaGVzLFxuICAgICAga2V5XG4gICAgKTtcbiAgICBsZXQgYWN0aW9uUmVzdWx0ID0gYWN0aW9uUmVzdWx0c1ttYXRjaC5yb3V0ZS5pZF07XG4gICAgaWYgKGZldGNoUmVxdWVzdC5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgaWYgKGZldGNoQ29udHJvbGxlcnMuZ2V0KGtleSkgPT09IGFib3J0Q29udHJvbGxlcikge1xuICAgICAgICBmZXRjaENvbnRyb2xsZXJzLmRlbGV0ZShrZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZmV0Y2hlcnNRdWV1ZWRGb3JEZWxldGlvbi5oYXMoa2V5KSkge1xuICAgICAgaWYgKGlzUmVkaXJlY3RSZXN1bHQoYWN0aW9uUmVzdWx0KSB8fCBpc0Vycm9yUmVzdWx0KGFjdGlvblJlc3VsdCkpIHtcbiAgICAgICAgdXBkYXRlRmV0Y2hlclN0YXRlKGtleSwgZ2V0RG9uZUZldGNoZXIodm9pZCAwKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzUmVkaXJlY3RSZXN1bHQoYWN0aW9uUmVzdWx0KSkge1xuICAgICAgICBmZXRjaENvbnRyb2xsZXJzLmRlbGV0ZShrZXkpO1xuICAgICAgICBpZiAocGVuZGluZ05hdmlnYXRpb25Mb2FkSWQgPiBvcmlnaW5hdGluZ0xvYWRJZCkge1xuICAgICAgICAgIHVwZGF0ZUZldGNoZXJTdGF0ZShrZXksIGdldERvbmVGZXRjaGVyKHZvaWQgMCkpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmZXRjaFJlZGlyZWN0SWRzLmFkZChrZXkpO1xuICAgICAgICAgIHVwZGF0ZUZldGNoZXJTdGF0ZShrZXksIGdldExvYWRpbmdGZXRjaGVyKHN1Ym1pc3Npb24pKTtcbiAgICAgICAgICByZXR1cm4gc3RhcnRSZWRpcmVjdE5hdmlnYXRpb24oZmV0Y2hSZXF1ZXN0LCBhY3Rpb25SZXN1bHQsIGZhbHNlLCB7XG4gICAgICAgICAgICBmZXRjaGVyU3VibWlzc2lvbjogc3VibWlzc2lvbixcbiAgICAgICAgICAgIHByZXZlbnRTY3JvbGxSZXNldFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaXNFcnJvclJlc3VsdChhY3Rpb25SZXN1bHQpKSB7XG4gICAgICAgIHNldEZldGNoZXJFcnJvcihrZXksIHJvdXRlSWQsIGFjdGlvblJlc3VsdC5lcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IG5leHRMb2NhdGlvbiA9IHN0YXRlLm5hdmlnYXRpb24ubG9jYXRpb24gfHwgc3RhdGUubG9jYXRpb247XG4gICAgbGV0IHJldmFsaWRhdGlvblJlcXVlc3QgPSBjcmVhdGVDbGllbnRTaWRlUmVxdWVzdChcbiAgICAgIGluaXQuaGlzdG9yeSxcbiAgICAgIG5leHRMb2NhdGlvbixcbiAgICAgIGFib3J0Q29udHJvbGxlci5zaWduYWxcbiAgICApO1xuICAgIGxldCByb3V0ZXNUb1VzZSA9IGluRmxpZ2h0RGF0YVJvdXRlcyB8fCBkYXRhUm91dGVzO1xuICAgIGxldCBtYXRjaGVzID0gc3RhdGUubmF2aWdhdGlvbi5zdGF0ZSAhPT0gXCJpZGxlXCIgPyBtYXRjaFJvdXRlcyhyb3V0ZXNUb1VzZSwgc3RhdGUubmF2aWdhdGlvbi5sb2NhdGlvbiwgYmFzZW5hbWUpIDogc3RhdGUubWF0Y2hlcztcbiAgICBpbnZhcmlhbnQobWF0Y2hlcywgXCJEaWRuJ3QgZmluZCBhbnkgbWF0Y2hlcyBhZnRlciBmZXRjaGVyIGFjdGlvblwiKTtcbiAgICBsZXQgbG9hZElkID0gKytpbmNyZW1lbnRpbmdMb2FkSWQ7XG4gICAgZmV0Y2hSZWxvYWRJZHMuc2V0KGtleSwgbG9hZElkKTtcbiAgICBsZXQgbG9hZEZldGNoZXIgPSBnZXRMb2FkaW5nRmV0Y2hlcihzdWJtaXNzaW9uLCBhY3Rpb25SZXN1bHQuZGF0YSk7XG4gICAgc3RhdGUuZmV0Y2hlcnMuc2V0KGtleSwgbG9hZEZldGNoZXIpO1xuICAgIGxldCBbbWF0Y2hlc1RvTG9hZCwgcmV2YWxpZGF0aW5nRmV0Y2hlcnNdID0gZ2V0TWF0Y2hlc1RvTG9hZChcbiAgICAgIGluaXQuaGlzdG9yeSxcbiAgICAgIHN0YXRlLFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIHN1Ym1pc3Npb24sXG4gICAgICBuZXh0TG9jYXRpb24sXG4gICAgICBmYWxzZSxcbiAgICAgIGlzUmV2YWxpZGF0aW9uUmVxdWlyZWQsXG4gICAgICBjYW5jZWxsZWRGZXRjaGVyTG9hZHMsXG4gICAgICBmZXRjaGVyc1F1ZXVlZEZvckRlbGV0aW9uLFxuICAgICAgZmV0Y2hMb2FkTWF0Y2hlcyxcbiAgICAgIGZldGNoUmVkaXJlY3RJZHMsXG4gICAgICByb3V0ZXNUb1VzZSxcbiAgICAgIGJhc2VuYW1lLFxuICAgICAgW21hdGNoLnJvdXRlLmlkLCBhY3Rpb25SZXN1bHRdXG4gICAgKTtcbiAgICByZXZhbGlkYXRpbmdGZXRjaGVycy5maWx0ZXIoKHJmKSA9PiByZi5rZXkgIT09IGtleSkuZm9yRWFjaCgocmYpID0+IHtcbiAgICAgIGxldCBzdGFsZUtleSA9IHJmLmtleTtcbiAgICAgIGxldCBleGlzdGluZ0ZldGNoZXIyID0gc3RhdGUuZmV0Y2hlcnMuZ2V0KHN0YWxlS2V5KTtcbiAgICAgIGxldCByZXZhbGlkYXRpbmdGZXRjaGVyID0gZ2V0TG9hZGluZ0ZldGNoZXIoXG4gICAgICAgIHZvaWQgMCxcbiAgICAgICAgZXhpc3RpbmdGZXRjaGVyMiA/IGV4aXN0aW5nRmV0Y2hlcjIuZGF0YSA6IHZvaWQgMFxuICAgICAgKTtcbiAgICAgIHN0YXRlLmZldGNoZXJzLnNldChzdGFsZUtleSwgcmV2YWxpZGF0aW5nRmV0Y2hlcik7XG4gICAgICBhYm9ydEZldGNoZXIoc3RhbGVLZXkpO1xuICAgICAgaWYgKHJmLmNvbnRyb2xsZXIpIHtcbiAgICAgICAgZmV0Y2hDb250cm9sbGVycy5zZXQoc3RhbGVLZXksIHJmLmNvbnRyb2xsZXIpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHVwZGF0ZVN0YXRlKHsgZmV0Y2hlcnM6IG5ldyBNYXAoc3RhdGUuZmV0Y2hlcnMpIH0pO1xuICAgIGxldCBhYm9ydFBlbmRpbmdGZXRjaFJldmFsaWRhdGlvbnMgPSAoKSA9PiByZXZhbGlkYXRpbmdGZXRjaGVycy5mb3JFYWNoKChyZikgPT4gYWJvcnRGZXRjaGVyKHJmLmtleSkpO1xuICAgIGFib3J0Q29udHJvbGxlci5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgIFwiYWJvcnRcIixcbiAgICAgIGFib3J0UGVuZGluZ0ZldGNoUmV2YWxpZGF0aW9uc1xuICAgICk7XG4gICAgbGV0IHsgbG9hZGVyUmVzdWx0cywgZmV0Y2hlclJlc3VsdHMgfSA9IGF3YWl0IGNhbGxMb2FkZXJzQW5kTWF5YmVSZXNvbHZlRGF0YShcbiAgICAgIHN0YXRlLFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIG1hdGNoZXNUb0xvYWQsXG4gICAgICByZXZhbGlkYXRpbmdGZXRjaGVycyxcbiAgICAgIHJldmFsaWRhdGlvblJlcXVlc3RcbiAgICApO1xuICAgIGlmIChhYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYWJvcnRDb250cm9sbGVyLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgXCJhYm9ydFwiLFxuICAgICAgYWJvcnRQZW5kaW5nRmV0Y2hSZXZhbGlkYXRpb25zXG4gICAgKTtcbiAgICBmZXRjaFJlbG9hZElkcy5kZWxldGUoa2V5KTtcbiAgICBmZXRjaENvbnRyb2xsZXJzLmRlbGV0ZShrZXkpO1xuICAgIHJldmFsaWRhdGluZ0ZldGNoZXJzLmZvckVhY2goKHIpID0+IGZldGNoQ29udHJvbGxlcnMuZGVsZXRlKHIua2V5KSk7XG4gICAgbGV0IHJlZGlyZWN0MiA9IGZpbmRSZWRpcmVjdChsb2FkZXJSZXN1bHRzKTtcbiAgICBpZiAocmVkaXJlY3QyKSB7XG4gICAgICByZXR1cm4gc3RhcnRSZWRpcmVjdE5hdmlnYXRpb24oXG4gICAgICAgIHJldmFsaWRhdGlvblJlcXVlc3QsXG4gICAgICAgIHJlZGlyZWN0Mi5yZXN1bHQsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB7IHByZXZlbnRTY3JvbGxSZXNldCB9XG4gICAgICApO1xuICAgIH1cbiAgICByZWRpcmVjdDIgPSBmaW5kUmVkaXJlY3QoZmV0Y2hlclJlc3VsdHMpO1xuICAgIGlmIChyZWRpcmVjdDIpIHtcbiAgICAgIGZldGNoUmVkaXJlY3RJZHMuYWRkKHJlZGlyZWN0Mi5rZXkpO1xuICAgICAgcmV0dXJuIHN0YXJ0UmVkaXJlY3ROYXZpZ2F0aW9uKFxuICAgICAgICByZXZhbGlkYXRpb25SZXF1ZXN0LFxuICAgICAgICByZWRpcmVjdDIucmVzdWx0LFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgeyBwcmV2ZW50U2Nyb2xsUmVzZXQgfVxuICAgICAgKTtcbiAgICB9XG4gICAgbGV0IHsgbG9hZGVyRGF0YSwgZXJyb3JzIH0gPSBwcm9jZXNzTG9hZGVyRGF0YShcbiAgICAgIHN0YXRlLFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIGxvYWRlclJlc3VsdHMsXG4gICAgICB2b2lkIDAsXG4gICAgICByZXZhbGlkYXRpbmdGZXRjaGVycyxcbiAgICAgIGZldGNoZXJSZXN1bHRzXG4gICAgKTtcbiAgICBpZiAoc3RhdGUuZmV0Y2hlcnMuaGFzKGtleSkpIHtcbiAgICAgIGxldCBkb25lRmV0Y2hlciA9IGdldERvbmVGZXRjaGVyKGFjdGlvblJlc3VsdC5kYXRhKTtcbiAgICAgIHN0YXRlLmZldGNoZXJzLnNldChrZXksIGRvbmVGZXRjaGVyKTtcbiAgICB9XG4gICAgYWJvcnRTdGFsZUZldGNoTG9hZHMobG9hZElkKTtcbiAgICBpZiAoc3RhdGUubmF2aWdhdGlvbi5zdGF0ZSA9PT0gXCJsb2FkaW5nXCIgJiYgbG9hZElkID4gcGVuZGluZ05hdmlnYXRpb25Mb2FkSWQpIHtcbiAgICAgIGludmFyaWFudChwZW5kaW5nQWN0aW9uLCBcIkV4cGVjdGVkIHBlbmRpbmcgYWN0aW9uXCIpO1xuICAgICAgcGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyICYmIHBlbmRpbmdOYXZpZ2F0aW9uQ29udHJvbGxlci5hYm9ydCgpO1xuICAgICAgY29tcGxldGVOYXZpZ2F0aW9uKHN0YXRlLm5hdmlnYXRpb24ubG9jYXRpb24sIHtcbiAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgbG9hZGVyRGF0YSxcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICBmZXRjaGVyczogbmV3IE1hcChzdGF0ZS5mZXRjaGVycylcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cGRhdGVTdGF0ZSh7XG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgbG9hZGVyRGF0YTogbWVyZ2VMb2FkZXJEYXRhKFxuICAgICAgICAgIHN0YXRlLmxvYWRlckRhdGEsXG4gICAgICAgICAgbG9hZGVyRGF0YSxcbiAgICAgICAgICBtYXRjaGVzLFxuICAgICAgICAgIGVycm9yc1xuICAgICAgICApLFxuICAgICAgICBmZXRjaGVyczogbmV3IE1hcChzdGF0ZS5mZXRjaGVycylcbiAgICAgIH0pO1xuICAgICAgaXNSZXZhbGlkYXRpb25SZXF1aXJlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBhc3luYyBmdW5jdGlvbiBoYW5kbGVGZXRjaGVyTG9hZGVyKGtleSwgcm91dGVJZCwgcGF0aCwgbWF0Y2gsIG1hdGNoZXMsIGlzRm9nT2ZXYXIsIGZsdXNoU3luYywgcHJldmVudFNjcm9sbFJlc2V0LCBzdWJtaXNzaW9uKSB7XG4gICAgbGV0IGV4aXN0aW5nRmV0Y2hlciA9IHN0YXRlLmZldGNoZXJzLmdldChrZXkpO1xuICAgIHVwZGF0ZUZldGNoZXJTdGF0ZShcbiAgICAgIGtleSxcbiAgICAgIGdldExvYWRpbmdGZXRjaGVyKFxuICAgICAgICBzdWJtaXNzaW9uLFxuICAgICAgICBleGlzdGluZ0ZldGNoZXIgPyBleGlzdGluZ0ZldGNoZXIuZGF0YSA6IHZvaWQgMFxuICAgICAgKSxcbiAgICAgIHsgZmx1c2hTeW5jIH1cbiAgICApO1xuICAgIGxldCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgbGV0IGZldGNoUmVxdWVzdCA9IGNyZWF0ZUNsaWVudFNpZGVSZXF1ZXN0KFxuICAgICAgaW5pdC5oaXN0b3J5LFxuICAgICAgcGF0aCxcbiAgICAgIGFib3J0Q29udHJvbGxlci5zaWduYWxcbiAgICApO1xuICAgIGlmIChpc0ZvZ09mV2FyKSB7XG4gICAgICBsZXQgZGlzY292ZXJSZXN1bHQgPSBhd2FpdCBkaXNjb3ZlclJvdXRlcyhcbiAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgZmV0Y2hSZXF1ZXN0LnNpZ25hbFxuICAgICAgKTtcbiAgICAgIGlmIChkaXNjb3ZlclJlc3VsdC50eXBlID09PSBcImFib3J0ZWRcIikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKGRpc2NvdmVyUmVzdWx0LnR5cGUgPT09IFwiZXJyb3JcIikge1xuICAgICAgICBzZXRGZXRjaGVyRXJyb3Ioa2V5LCByb3V0ZUlkLCBkaXNjb3ZlclJlc3VsdC5lcnJvciwgeyBmbHVzaFN5bmMgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAoIWRpc2NvdmVyUmVzdWx0Lm1hdGNoZXMpIHtcbiAgICAgICAgc2V0RmV0Y2hlckVycm9yKFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICByb3V0ZUlkLFxuICAgICAgICAgIGdldEludGVybmFsUm91dGVyRXJyb3IoNDA0LCB7IHBhdGhuYW1lOiBwYXRoIH0pLFxuICAgICAgICAgIHsgZmx1c2hTeW5jIH1cbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWF0Y2hlcyA9IGRpc2NvdmVyUmVzdWx0Lm1hdGNoZXM7XG4gICAgICAgIG1hdGNoID0gZ2V0VGFyZ2V0TWF0Y2gobWF0Y2hlcywgcGF0aCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZldGNoQ29udHJvbGxlcnMuc2V0KGtleSwgYWJvcnRDb250cm9sbGVyKTtcbiAgICBsZXQgb3JpZ2luYXRpbmdMb2FkSWQgPSBpbmNyZW1lbnRpbmdMb2FkSWQ7XG4gICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBjYWxsRGF0YVN0cmF0ZWd5KFxuICAgICAgXCJsb2FkZXJcIixcbiAgICAgIHN0YXRlLFxuICAgICAgZmV0Y2hSZXF1ZXN0LFxuICAgICAgW21hdGNoXSxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBrZXlcbiAgICApO1xuICAgIGxldCByZXN1bHQgPSByZXN1bHRzW21hdGNoLnJvdXRlLmlkXTtcbiAgICBpZiAoZmV0Y2hDb250cm9sbGVycy5nZXQoa2V5KSA9PT0gYWJvcnRDb250cm9sbGVyKSB7XG4gICAgICBmZXRjaENvbnRyb2xsZXJzLmRlbGV0ZShrZXkpO1xuICAgIH1cbiAgICBpZiAoZmV0Y2hSZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChmZXRjaGVyc1F1ZXVlZEZvckRlbGV0aW9uLmhhcyhrZXkpKSB7XG4gICAgICB1cGRhdGVGZXRjaGVyU3RhdGUoa2V5LCBnZXREb25lRmV0Y2hlcih2b2lkIDApKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGlzUmVkaXJlY3RSZXN1bHQocmVzdWx0KSkge1xuICAgICAgaWYgKHBlbmRpbmdOYXZpZ2F0aW9uTG9hZElkID4gb3JpZ2luYXRpbmdMb2FkSWQpIHtcbiAgICAgICAgdXBkYXRlRmV0Y2hlclN0YXRlKGtleSwgZ2V0RG9uZUZldGNoZXIodm9pZCAwKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZldGNoUmVkaXJlY3RJZHMuYWRkKGtleSk7XG4gICAgICAgIGF3YWl0IHN0YXJ0UmVkaXJlY3ROYXZpZ2F0aW9uKGZldGNoUmVxdWVzdCwgcmVzdWx0LCBmYWxzZSwge1xuICAgICAgICAgIHByZXZlbnRTY3JvbGxSZXNldFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNFcnJvclJlc3VsdChyZXN1bHQpKSB7XG4gICAgICBzZXRGZXRjaGVyRXJyb3Ioa2V5LCByb3V0ZUlkLCByZXN1bHQuZXJyb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB1cGRhdGVGZXRjaGVyU3RhdGUoa2V5LCBnZXREb25lRmV0Y2hlcihyZXN1bHQuZGF0YSkpO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHN0YXJ0UmVkaXJlY3ROYXZpZ2F0aW9uKHJlcXVlc3QsIHJlZGlyZWN0MiwgaXNOYXZpZ2F0aW9uLCB7XG4gICAgc3VibWlzc2lvbixcbiAgICBmZXRjaGVyU3VibWlzc2lvbixcbiAgICBwcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgcmVwbGFjZTogcmVwbGFjZTJcbiAgfSA9IHt9KSB7XG4gICAgaWYgKHJlZGlyZWN0Mi5yZXNwb25zZS5oZWFkZXJzLmhhcyhcIlgtUmVtaXgtUmV2YWxpZGF0ZVwiKSkge1xuICAgICAgaXNSZXZhbGlkYXRpb25SZXF1aXJlZCA9IHRydWU7XG4gICAgfVxuICAgIGxldCBsb2NhdGlvbiA9IHJlZGlyZWN0Mi5yZXNwb25zZS5oZWFkZXJzLmdldChcIkxvY2F0aW9uXCIpO1xuICAgIGludmFyaWFudChsb2NhdGlvbiwgXCJFeHBlY3RlZCBhIExvY2F0aW9uIGhlYWRlciBvbiB0aGUgcmVkaXJlY3QgUmVzcG9uc2VcIik7XG4gICAgbG9jYXRpb24gPSBub3JtYWxpemVSZWRpcmVjdExvY2F0aW9uKFxuICAgICAgbG9jYXRpb24sXG4gICAgICBuZXcgVVJMKHJlcXVlc3QudXJsKSxcbiAgICAgIGJhc2VuYW1lXG4gICAgKTtcbiAgICBsZXQgcmVkaXJlY3RMb2NhdGlvbiA9IGNyZWF0ZUxvY2F0aW9uKHN0YXRlLmxvY2F0aW9uLCBsb2NhdGlvbiwge1xuICAgICAgX2lzUmVkaXJlY3Q6IHRydWVcbiAgICB9KTtcbiAgICBpZiAoaXNCcm93c2VyMikge1xuICAgICAgbGV0IGlzRG9jdW1lbnRSZWxvYWQgPSBmYWxzZTtcbiAgICAgIGlmIChyZWRpcmVjdDIucmVzcG9uc2UuaGVhZGVycy5oYXMoXCJYLVJlbWl4LVJlbG9hZC1Eb2N1bWVudFwiKSkge1xuICAgICAgICBpc0RvY3VtZW50UmVsb2FkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoQUJTT0xVVEVfVVJMX1JFR0VYLnRlc3QobG9jYXRpb24pKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGluaXQuaGlzdG9yeS5jcmVhdGVVUkwobG9jYXRpb24pO1xuICAgICAgICBpc0RvY3VtZW50UmVsb2FkID0gLy8gSGFyZCByZWxvYWQgaWYgaXQncyBhbiBhYnNvbHV0ZSBVUkwgdG8gYSBuZXcgb3JpZ2luXG4gICAgICAgIHVybC5vcmlnaW4gIT09IHJvdXRlcldpbmRvdy5sb2NhdGlvbi5vcmlnaW4gfHwgLy8gSGFyZCByZWxvYWQgaWYgaXQncyBhbiBhYnNvbHV0ZSBVUkwgdGhhdCBkb2VzIG5vdCBtYXRjaCBvdXIgYmFzZW5hbWVcbiAgICAgICAgc3RyaXBCYXNlbmFtZSh1cmwucGF0aG5hbWUsIGJhc2VuYW1lKSA9PSBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKGlzRG9jdW1lbnRSZWxvYWQpIHtcbiAgICAgICAgaWYgKHJlcGxhY2UyKSB7XG4gICAgICAgICAgcm91dGVyV2luZG93LmxvY2F0aW9uLnJlcGxhY2UobG9jYXRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJvdXRlcldpbmRvdy5sb2NhdGlvbi5hc3NpZ24obG9jYXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgcGVuZGluZ05hdmlnYXRpb25Db250cm9sbGVyID0gbnVsbDtcbiAgICBsZXQgcmVkaXJlY3ROYXZpZ2F0aW9uVHlwZSA9IHJlcGxhY2UyID09PSB0cnVlIHx8IHJlZGlyZWN0Mi5yZXNwb25zZS5oZWFkZXJzLmhhcyhcIlgtUmVtaXgtUmVwbGFjZVwiKSA/IFwiUkVQTEFDRVwiIC8qIFJlcGxhY2UgKi8gOiBcIlBVU0hcIiAvKiBQdXNoICovO1xuICAgIGxldCB7IGZvcm1NZXRob2QsIGZvcm1BY3Rpb24sIGZvcm1FbmNUeXBlIH0gPSBzdGF0ZS5uYXZpZ2F0aW9uO1xuICAgIGlmICghc3VibWlzc2lvbiAmJiAhZmV0Y2hlclN1Ym1pc3Npb24gJiYgZm9ybU1ldGhvZCAmJiBmb3JtQWN0aW9uICYmIGZvcm1FbmNUeXBlKSB7XG4gICAgICBzdWJtaXNzaW9uID0gZ2V0U3VibWlzc2lvbkZyb21OYXZpZ2F0aW9uKHN0YXRlLm5hdmlnYXRpb24pO1xuICAgIH1cbiAgICBsZXQgYWN0aXZlU3VibWlzc2lvbiA9IHN1Ym1pc3Npb24gfHwgZmV0Y2hlclN1Ym1pc3Npb247XG4gICAgaWYgKHJlZGlyZWN0UHJlc2VydmVNZXRob2RTdGF0dXNDb2Rlcy5oYXMocmVkaXJlY3QyLnJlc3BvbnNlLnN0YXR1cykgJiYgYWN0aXZlU3VibWlzc2lvbiAmJiBpc011dGF0aW9uTWV0aG9kKGFjdGl2ZVN1Ym1pc3Npb24uZm9ybU1ldGhvZCkpIHtcbiAgICAgIGF3YWl0IHN0YXJ0TmF2aWdhdGlvbihyZWRpcmVjdE5hdmlnYXRpb25UeXBlLCByZWRpcmVjdExvY2F0aW9uLCB7XG4gICAgICAgIHN1Ym1pc3Npb246IHtcbiAgICAgICAgICAuLi5hY3RpdmVTdWJtaXNzaW9uLFxuICAgICAgICAgIGZvcm1BY3Rpb246IGxvY2F0aW9uXG4gICAgICAgIH0sXG4gICAgICAgIC8vIFByZXNlcnZlIHRoZXNlIGZsYWdzIGFjcm9zcyByZWRpcmVjdHNcbiAgICAgICAgcHJldmVudFNjcm9sbFJlc2V0OiBwcmV2ZW50U2Nyb2xsUmVzZXQgfHwgcGVuZGluZ1ByZXZlbnRTY3JvbGxSZXNldCxcbiAgICAgICAgZW5hYmxlVmlld1RyYW5zaXRpb246IGlzTmF2aWdhdGlvbiA/IHBlbmRpbmdWaWV3VHJhbnNpdGlvbkVuYWJsZWQgOiB2b2lkIDBcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgb3ZlcnJpZGVOYXZpZ2F0aW9uID0gZ2V0TG9hZGluZ05hdmlnYXRpb24oXG4gICAgICAgIHJlZGlyZWN0TG9jYXRpb24sXG4gICAgICAgIHN1Ym1pc3Npb25cbiAgICAgICk7XG4gICAgICBhd2FpdCBzdGFydE5hdmlnYXRpb24ocmVkaXJlY3ROYXZpZ2F0aW9uVHlwZSwgcmVkaXJlY3RMb2NhdGlvbiwge1xuICAgICAgICBvdmVycmlkZU5hdmlnYXRpb24sXG4gICAgICAgIC8vIFNlbmQgZmV0Y2hlciBzdWJtaXNzaW9ucyB0aHJvdWdoIGZvciBzaG91bGRSZXZhbGlkYXRlXG4gICAgICAgIGZldGNoZXJTdWJtaXNzaW9uLFxuICAgICAgICAvLyBQcmVzZXJ2ZSB0aGVzZSBmbGFncyBhY3Jvc3MgcmVkaXJlY3RzXG4gICAgICAgIHByZXZlbnRTY3JvbGxSZXNldDogcHJldmVudFNjcm9sbFJlc2V0IHx8IHBlbmRpbmdQcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgICAgIGVuYWJsZVZpZXdUcmFuc2l0aW9uOiBpc05hdmlnYXRpb24gPyBwZW5kaW5nVmlld1RyYW5zaXRpb25FbmFibGVkIDogdm9pZCAwXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gY2FsbERhdGFTdHJhdGVneSh0eXBlLCBzdGF0ZTIsIHJlcXVlc3QsIG1hdGNoZXNUb0xvYWQsIG1hdGNoZXMsIGZldGNoZXJLZXkpIHtcbiAgICBsZXQgcmVzdWx0cztcbiAgICBsZXQgZGF0YVJlc3VsdHMgPSB7fTtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0cyA9IGF3YWl0IGNhbGxEYXRhU3RyYXRlZ3lJbXBsKFxuICAgICAgICBkYXRhU3RyYXRlZ3lJbXBsLFxuICAgICAgICB0eXBlLFxuICAgICAgICBzdGF0ZTIsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIG1hdGNoZXNUb0xvYWQsXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGZldGNoZXJLZXksXG4gICAgICAgIG1hbmlmZXN0LFxuICAgICAgICBtYXBSb3V0ZVByb3BlcnRpZXMyXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIG1hdGNoZXNUb0xvYWQuZm9yRWFjaCgobSkgPT4ge1xuICAgICAgICBkYXRhUmVzdWx0c1ttLnJvdXRlLmlkXSA9IHtcbiAgICAgICAgICB0eXBlOiBcImVycm9yXCIgLyogZXJyb3IgKi8sXG4gICAgICAgICAgZXJyb3I6IGVcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGRhdGFSZXN1bHRzO1xuICAgIH1cbiAgICBmb3IgKGxldCBbcm91dGVJZCwgcmVzdWx0XSBvZiBPYmplY3QuZW50cmllcyhyZXN1bHRzKSkge1xuICAgICAgaWYgKGlzUmVkaXJlY3REYXRhU3RyYXRlZ3lSZXN1bHQocmVzdWx0KSkge1xuICAgICAgICBsZXQgcmVzcG9uc2UgPSByZXN1bHQucmVzdWx0O1xuICAgICAgICBkYXRhUmVzdWx0c1tyb3V0ZUlkXSA9IHtcbiAgICAgICAgICB0eXBlOiBcInJlZGlyZWN0XCIgLyogcmVkaXJlY3QgKi8sXG4gICAgICAgICAgcmVzcG9uc2U6IG5vcm1hbGl6ZVJlbGF0aXZlUm91dGluZ1JlZGlyZWN0UmVzcG9uc2UoXG4gICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICByb3V0ZUlkLFxuICAgICAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgICAgIGJhc2VuYW1lXG4gICAgICAgICAgKVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0YVJlc3VsdHNbcm91dGVJZF0gPSBhd2FpdCBjb252ZXJ0RGF0YVN0cmF0ZWd5UmVzdWx0VG9EYXRhUmVzdWx0KFxuICAgICAgICAgIHJlc3VsdFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YVJlc3VsdHM7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gY2FsbExvYWRlcnNBbmRNYXliZVJlc29sdmVEYXRhKHN0YXRlMiwgbWF0Y2hlcywgbWF0Y2hlc1RvTG9hZCwgZmV0Y2hlcnNUb0xvYWQsIHJlcXVlc3QpIHtcbiAgICBsZXQgbG9hZGVyUmVzdWx0c1Byb21pc2UgPSBjYWxsRGF0YVN0cmF0ZWd5KFxuICAgICAgXCJsb2FkZXJcIixcbiAgICAgIHN0YXRlMixcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtYXRjaGVzVG9Mb2FkLFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIG51bGxcbiAgICApO1xuICAgIGxldCBmZXRjaGVyUmVzdWx0c1Byb21pc2UgPSBQcm9taXNlLmFsbChcbiAgICAgIGZldGNoZXJzVG9Mb2FkLm1hcChhc3luYyAoZikgPT4ge1xuICAgICAgICBpZiAoZi5tYXRjaGVzICYmIGYubWF0Y2ggJiYgZi5jb250cm9sbGVyKSB7XG4gICAgICAgICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBjYWxsRGF0YVN0cmF0ZWd5KFxuICAgICAgICAgICAgXCJsb2FkZXJcIixcbiAgICAgICAgICAgIHN0YXRlMixcbiAgICAgICAgICAgIGNyZWF0ZUNsaWVudFNpZGVSZXF1ZXN0KGluaXQuaGlzdG9yeSwgZi5wYXRoLCBmLmNvbnRyb2xsZXIuc2lnbmFsKSxcbiAgICAgICAgICAgIFtmLm1hdGNoXSxcbiAgICAgICAgICAgIGYubWF0Y2hlcyxcbiAgICAgICAgICAgIGYua2V5XG4gICAgICAgICAgKTtcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVzdWx0c1tmLm1hdGNoLnJvdXRlLmlkXTtcbiAgICAgICAgICByZXR1cm4geyBbZi5rZXldOiByZXN1bHQgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgICAgIFtmLmtleV06IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJlcnJvclwiIC8qIGVycm9yICovLFxuICAgICAgICAgICAgICBlcnJvcjogZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDQsIHtcbiAgICAgICAgICAgICAgICBwYXRobmFtZTogZi5wYXRoXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICBsZXQgbG9hZGVyUmVzdWx0cyA9IGF3YWl0IGxvYWRlclJlc3VsdHNQcm9taXNlO1xuICAgIGxldCBmZXRjaGVyUmVzdWx0cyA9IChhd2FpdCBmZXRjaGVyUmVzdWx0c1Byb21pc2UpLnJlZHVjZShcbiAgICAgIChhY2MsIHIpID0+IE9iamVjdC5hc3NpZ24oYWNjLCByKSxcbiAgICAgIHt9XG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgbG9hZGVyUmVzdWx0cyxcbiAgICAgIGZldGNoZXJSZXN1bHRzXG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBpbnRlcnJ1cHRBY3RpdmVMb2FkcygpIHtcbiAgICBpc1JldmFsaWRhdGlvblJlcXVpcmVkID0gdHJ1ZTtcbiAgICBmZXRjaExvYWRNYXRjaGVzLmZvckVhY2goKF8sIGtleSkgPT4ge1xuICAgICAgaWYgKGZldGNoQ29udHJvbGxlcnMuaGFzKGtleSkpIHtcbiAgICAgICAgY2FuY2VsbGVkRmV0Y2hlckxvYWRzLmFkZChrZXkpO1xuICAgICAgfVxuICAgICAgYWJvcnRGZXRjaGVyKGtleSk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gdXBkYXRlRmV0Y2hlclN0YXRlKGtleSwgZmV0Y2hlciwgb3B0cyA9IHt9KSB7XG4gICAgc3RhdGUuZmV0Y2hlcnMuc2V0KGtleSwgZmV0Y2hlcik7XG4gICAgdXBkYXRlU3RhdGUoXG4gICAgICB7IGZldGNoZXJzOiBuZXcgTWFwKHN0YXRlLmZldGNoZXJzKSB9LFxuICAgICAgeyBmbHVzaFN5bmM6IChvcHRzICYmIG9wdHMuZmx1c2hTeW5jKSA9PT0gdHJ1ZSB9XG4gICAgKTtcbiAgfVxuICBmdW5jdGlvbiBzZXRGZXRjaGVyRXJyb3Ioa2V5LCByb3V0ZUlkLCBlcnJvciwgb3B0cyA9IHt9KSB7XG4gICAgbGV0IGJvdW5kYXJ5TWF0Y2ggPSBmaW5kTmVhcmVzdEJvdW5kYXJ5KHN0YXRlLm1hdGNoZXMsIHJvdXRlSWQpO1xuICAgIGRlbGV0ZUZldGNoZXIoa2V5KTtcbiAgICB1cGRhdGVTdGF0ZShcbiAgICAgIHtcbiAgICAgICAgZXJyb3JzOiB7XG4gICAgICAgICAgW2JvdW5kYXJ5TWF0Y2gucm91dGUuaWRdOiBlcnJvclxuICAgICAgICB9LFxuICAgICAgICBmZXRjaGVyczogbmV3IE1hcChzdGF0ZS5mZXRjaGVycylcbiAgICAgIH0sXG4gICAgICB7IGZsdXNoU3luYzogKG9wdHMgJiYgb3B0cy5mbHVzaFN5bmMpID09PSB0cnVlIH1cbiAgICApO1xuICB9XG4gIGZ1bmN0aW9uIGdldEZldGNoZXIoa2V5KSB7XG4gICAgYWN0aXZlRmV0Y2hlcnMuc2V0KGtleSwgKGFjdGl2ZUZldGNoZXJzLmdldChrZXkpIHx8IDApICsgMSk7XG4gICAgaWYgKGZldGNoZXJzUXVldWVkRm9yRGVsZXRpb24uaGFzKGtleSkpIHtcbiAgICAgIGZldGNoZXJzUXVldWVkRm9yRGVsZXRpb24uZGVsZXRlKGtleSk7XG4gICAgfVxuICAgIHJldHVybiBzdGF0ZS5mZXRjaGVycy5nZXQoa2V5KSB8fCBJRExFX0ZFVENIRVI7XG4gIH1cbiAgZnVuY3Rpb24gZGVsZXRlRmV0Y2hlcihrZXkpIHtcbiAgICBsZXQgZmV0Y2hlciA9IHN0YXRlLmZldGNoZXJzLmdldChrZXkpO1xuICAgIGlmIChmZXRjaENvbnRyb2xsZXJzLmhhcyhrZXkpICYmICEoZmV0Y2hlciAmJiBmZXRjaGVyLnN0YXRlID09PSBcImxvYWRpbmdcIiAmJiBmZXRjaFJlbG9hZElkcy5oYXMoa2V5KSkpIHtcbiAgICAgIGFib3J0RmV0Y2hlcihrZXkpO1xuICAgIH1cbiAgICBmZXRjaExvYWRNYXRjaGVzLmRlbGV0ZShrZXkpO1xuICAgIGZldGNoUmVsb2FkSWRzLmRlbGV0ZShrZXkpO1xuICAgIGZldGNoUmVkaXJlY3RJZHMuZGVsZXRlKGtleSk7XG4gICAgZmV0Y2hlcnNRdWV1ZWRGb3JEZWxldGlvbi5kZWxldGUoa2V5KTtcbiAgICBjYW5jZWxsZWRGZXRjaGVyTG9hZHMuZGVsZXRlKGtleSk7XG4gICAgc3RhdGUuZmV0Y2hlcnMuZGVsZXRlKGtleSk7XG4gIH1cbiAgZnVuY3Rpb24gcXVldWVGZXRjaGVyRm9yRGVsZXRpb24oa2V5KSB7XG4gICAgbGV0IGNvdW50ID0gKGFjdGl2ZUZldGNoZXJzLmdldChrZXkpIHx8IDApIC0gMTtcbiAgICBpZiAoY291bnQgPD0gMCkge1xuICAgICAgYWN0aXZlRmV0Y2hlcnMuZGVsZXRlKGtleSk7XG4gICAgICBmZXRjaGVyc1F1ZXVlZEZvckRlbGV0aW9uLmFkZChrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhY3RpdmVGZXRjaGVycy5zZXQoa2V5LCBjb3VudCk7XG4gICAgfVxuICAgIHVwZGF0ZVN0YXRlKHsgZmV0Y2hlcnM6IG5ldyBNYXAoc3RhdGUuZmV0Y2hlcnMpIH0pO1xuICB9XG4gIGZ1bmN0aW9uIGFib3J0RmV0Y2hlcihrZXkpIHtcbiAgICBsZXQgY29udHJvbGxlciA9IGZldGNoQ29udHJvbGxlcnMuZ2V0KGtleSk7XG4gICAgaWYgKGNvbnRyb2xsZXIpIHtcbiAgICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICAgIGZldGNoQ29udHJvbGxlcnMuZGVsZXRlKGtleSk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIG1hcmtGZXRjaGVyc0RvbmUoa2V5cykge1xuICAgIGZvciAobGV0IGtleSBvZiBrZXlzKSB7XG4gICAgICBsZXQgZmV0Y2hlciA9IGdldEZldGNoZXIoa2V5KTtcbiAgICAgIGxldCBkb25lRmV0Y2hlciA9IGdldERvbmVGZXRjaGVyKGZldGNoZXIuZGF0YSk7XG4gICAgICBzdGF0ZS5mZXRjaGVycy5zZXQoa2V5LCBkb25lRmV0Y2hlcik7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIG1hcmtGZXRjaFJlZGlyZWN0c0RvbmUoKSB7XG4gICAgbGV0IGRvbmVLZXlzID0gW107XG4gICAgbGV0IHVwZGF0ZWRGZXRjaGVycyA9IGZhbHNlO1xuICAgIGZvciAobGV0IGtleSBvZiBmZXRjaFJlZGlyZWN0SWRzKSB7XG4gICAgICBsZXQgZmV0Y2hlciA9IHN0YXRlLmZldGNoZXJzLmdldChrZXkpO1xuICAgICAgaW52YXJpYW50KGZldGNoZXIsIGBFeHBlY3RlZCBmZXRjaGVyOiAke2tleX1gKTtcbiAgICAgIGlmIChmZXRjaGVyLnN0YXRlID09PSBcImxvYWRpbmdcIikge1xuICAgICAgICBmZXRjaFJlZGlyZWN0SWRzLmRlbGV0ZShrZXkpO1xuICAgICAgICBkb25lS2V5cy5wdXNoKGtleSk7XG4gICAgICAgIHVwZGF0ZWRGZXRjaGVycyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIG1hcmtGZXRjaGVyc0RvbmUoZG9uZUtleXMpO1xuICAgIHJldHVybiB1cGRhdGVkRmV0Y2hlcnM7XG4gIH1cbiAgZnVuY3Rpb24gYWJvcnRTdGFsZUZldGNoTG9hZHMobGFuZGVkSWQpIHtcbiAgICBsZXQgeWVldGVkS2V5cyA9IFtdO1xuICAgIGZvciAobGV0IFtrZXksIGlkXSBvZiBmZXRjaFJlbG9hZElkcykge1xuICAgICAgaWYgKGlkIDwgbGFuZGVkSWQpIHtcbiAgICAgICAgbGV0IGZldGNoZXIgPSBzdGF0ZS5mZXRjaGVycy5nZXQoa2V5KTtcbiAgICAgICAgaW52YXJpYW50KGZldGNoZXIsIGBFeHBlY3RlZCBmZXRjaGVyOiAke2tleX1gKTtcbiAgICAgICAgaWYgKGZldGNoZXIuc3RhdGUgPT09IFwibG9hZGluZ1wiKSB7XG4gICAgICAgICAgYWJvcnRGZXRjaGVyKGtleSk7XG4gICAgICAgICAgZmV0Y2hSZWxvYWRJZHMuZGVsZXRlKGtleSk7XG4gICAgICAgICAgeWVldGVkS2V5cy5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgbWFya0ZldGNoZXJzRG9uZSh5ZWV0ZWRLZXlzKTtcbiAgICByZXR1cm4geWVldGVkS2V5cy5sZW5ndGggPiAwO1xuICB9XG4gIGZ1bmN0aW9uIGdldEJsb2NrZXIoa2V5LCBmbikge1xuICAgIGxldCBibG9ja2VyID0gc3RhdGUuYmxvY2tlcnMuZ2V0KGtleSkgfHwgSURMRV9CTE9DS0VSO1xuICAgIGlmIChibG9ja2VyRnVuY3Rpb25zLmdldChrZXkpICE9PSBmbikge1xuICAgICAgYmxvY2tlckZ1bmN0aW9ucy5zZXQoa2V5LCBmbik7XG4gICAgfVxuICAgIHJldHVybiBibG9ja2VyO1xuICB9XG4gIGZ1bmN0aW9uIGRlbGV0ZUJsb2NrZXIoa2V5KSB7XG4gICAgc3RhdGUuYmxvY2tlcnMuZGVsZXRlKGtleSk7XG4gICAgYmxvY2tlckZ1bmN0aW9ucy5kZWxldGUoa2V5KTtcbiAgfVxuICBmdW5jdGlvbiB1cGRhdGVCbG9ja2VyKGtleSwgbmV3QmxvY2tlcikge1xuICAgIGxldCBibG9ja2VyID0gc3RhdGUuYmxvY2tlcnMuZ2V0KGtleSkgfHwgSURMRV9CTE9DS0VSO1xuICAgIGludmFyaWFudChcbiAgICAgIGJsb2NrZXIuc3RhdGUgPT09IFwidW5ibG9ja2VkXCIgJiYgbmV3QmxvY2tlci5zdGF0ZSA9PT0gXCJibG9ja2VkXCIgfHwgYmxvY2tlci5zdGF0ZSA9PT0gXCJibG9ja2VkXCIgJiYgbmV3QmxvY2tlci5zdGF0ZSA9PT0gXCJibG9ja2VkXCIgfHwgYmxvY2tlci5zdGF0ZSA9PT0gXCJibG9ja2VkXCIgJiYgbmV3QmxvY2tlci5zdGF0ZSA9PT0gXCJwcm9jZWVkaW5nXCIgfHwgYmxvY2tlci5zdGF0ZSA9PT0gXCJibG9ja2VkXCIgJiYgbmV3QmxvY2tlci5zdGF0ZSA9PT0gXCJ1bmJsb2NrZWRcIiB8fCBibG9ja2VyLnN0YXRlID09PSBcInByb2NlZWRpbmdcIiAmJiBuZXdCbG9ja2VyLnN0YXRlID09PSBcInVuYmxvY2tlZFwiLFxuICAgICAgYEludmFsaWQgYmxvY2tlciBzdGF0ZSB0cmFuc2l0aW9uOiAke2Jsb2NrZXIuc3RhdGV9IC0+ICR7bmV3QmxvY2tlci5zdGF0ZX1gXG4gICAgKTtcbiAgICBsZXQgYmxvY2tlcnMgPSBuZXcgTWFwKHN0YXRlLmJsb2NrZXJzKTtcbiAgICBibG9ja2Vycy5zZXQoa2V5LCBuZXdCbG9ja2VyKTtcbiAgICB1cGRhdGVTdGF0ZSh7IGJsb2NrZXJzIH0pO1xuICB9XG4gIGZ1bmN0aW9uIHNob3VsZEJsb2NrTmF2aWdhdGlvbih7XG4gICAgY3VycmVudExvY2F0aW9uLFxuICAgIG5leHRMb2NhdGlvbixcbiAgICBoaXN0b3J5QWN0aW9uXG4gIH0pIHtcbiAgICBpZiAoYmxvY2tlckZ1bmN0aW9ucy5zaXplID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChibG9ja2VyRnVuY3Rpb25zLnNpemUgPiAxKSB7XG4gICAgICB3YXJuaW5nKGZhbHNlLCBcIkEgcm91dGVyIG9ubHkgc3VwcG9ydHMgb25lIGJsb2NrZXIgYXQgYSB0aW1lXCIpO1xuICAgIH1cbiAgICBsZXQgZW50cmllcyA9IEFycmF5LmZyb20oYmxvY2tlckZ1bmN0aW9ucy5lbnRyaWVzKCkpO1xuICAgIGxldCBbYmxvY2tlcktleSwgYmxvY2tlckZ1bmN0aW9uXSA9IGVudHJpZXNbZW50cmllcy5sZW5ndGggLSAxXTtcbiAgICBsZXQgYmxvY2tlciA9IHN0YXRlLmJsb2NrZXJzLmdldChibG9ja2VyS2V5KTtcbiAgICBpZiAoYmxvY2tlciAmJiBibG9ja2VyLnN0YXRlID09PSBcInByb2NlZWRpbmdcIikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYmxvY2tlckZ1bmN0aW9uKHsgY3VycmVudExvY2F0aW9uLCBuZXh0TG9jYXRpb24sIGhpc3RvcnlBY3Rpb24gfSkpIHtcbiAgICAgIHJldHVybiBibG9ja2VyS2V5O1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBoYW5kbGVOYXZpZ2F0aW9uYWw0MDQocGF0aG5hbWUpIHtcbiAgICBsZXQgZXJyb3IgPSBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwNCwgeyBwYXRobmFtZSB9KTtcbiAgICBsZXQgcm91dGVzVG9Vc2UgPSBpbkZsaWdodERhdGFSb3V0ZXMgfHwgZGF0YVJvdXRlcztcbiAgICBsZXQgeyBtYXRjaGVzLCByb3V0ZSB9ID0gZ2V0U2hvcnRDaXJjdWl0TWF0Y2hlcyhyb3V0ZXNUb1VzZSk7XG4gICAgcmV0dXJuIHsgbm90Rm91bmRNYXRjaGVzOiBtYXRjaGVzLCByb3V0ZSwgZXJyb3IgfTtcbiAgfVxuICBmdW5jdGlvbiBlbmFibGVTY3JvbGxSZXN0b3JhdGlvbihwb3NpdGlvbnMsIGdldFBvc2l0aW9uLCBnZXRLZXkpIHtcbiAgICBzYXZlZFNjcm9sbFBvc2l0aW9uczIgPSBwb3NpdGlvbnM7XG4gICAgZ2V0U2Nyb2xsUG9zaXRpb24gPSBnZXRQb3NpdGlvbjtcbiAgICBnZXRTY3JvbGxSZXN0b3JhdGlvbktleTIgPSBnZXRLZXkgfHwgbnVsbDtcbiAgICBpZiAoIWluaXRpYWxTY3JvbGxSZXN0b3JlZCAmJiBzdGF0ZS5uYXZpZ2F0aW9uID09PSBJRExFX05BVklHQVRJT04pIHtcbiAgICAgIGluaXRpYWxTY3JvbGxSZXN0b3JlZCA9IHRydWU7XG4gICAgICBsZXQgeSA9IGdldFNhdmVkU2Nyb2xsUG9zaXRpb24oc3RhdGUubG9jYXRpb24sIHN0YXRlLm1hdGNoZXMpO1xuICAgICAgaWYgKHkgIT0gbnVsbCkge1xuICAgICAgICB1cGRhdGVTdGF0ZSh7IHJlc3RvcmVTY3JvbGxQb3NpdGlvbjogeSB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHNhdmVkU2Nyb2xsUG9zaXRpb25zMiA9IG51bGw7XG4gICAgICBnZXRTY3JvbGxQb3NpdGlvbiA9IG51bGw7XG4gICAgICBnZXRTY3JvbGxSZXN0b3JhdGlvbktleTIgPSBudWxsO1xuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gZ2V0U2Nyb2xsS2V5KGxvY2F0aW9uLCBtYXRjaGVzKSB7XG4gICAgaWYgKGdldFNjcm9sbFJlc3RvcmF0aW9uS2V5Mikge1xuICAgICAgbGV0IGtleSA9IGdldFNjcm9sbFJlc3RvcmF0aW9uS2V5MihcbiAgICAgICAgbG9jYXRpb24sXG4gICAgICAgIG1hdGNoZXMubWFwKChtKSA9PiBjb252ZXJ0Um91dGVNYXRjaFRvVWlNYXRjaChtLCBzdGF0ZS5sb2FkZXJEYXRhKSlcbiAgICAgICk7XG4gICAgICByZXR1cm4ga2V5IHx8IGxvY2F0aW9uLmtleTtcbiAgICB9XG4gICAgcmV0dXJuIGxvY2F0aW9uLmtleTtcbiAgfVxuICBmdW5jdGlvbiBzYXZlU2Nyb2xsUG9zaXRpb24obG9jYXRpb24sIG1hdGNoZXMpIHtcbiAgICBpZiAoc2F2ZWRTY3JvbGxQb3NpdGlvbnMyICYmIGdldFNjcm9sbFBvc2l0aW9uKSB7XG4gICAgICBsZXQga2V5ID0gZ2V0U2Nyb2xsS2V5KGxvY2F0aW9uLCBtYXRjaGVzKTtcbiAgICAgIHNhdmVkU2Nyb2xsUG9zaXRpb25zMltrZXldID0gZ2V0U2Nyb2xsUG9zaXRpb24oKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gZ2V0U2F2ZWRTY3JvbGxQb3NpdGlvbihsb2NhdGlvbiwgbWF0Y2hlcykge1xuICAgIGlmIChzYXZlZFNjcm9sbFBvc2l0aW9uczIpIHtcbiAgICAgIGxldCBrZXkgPSBnZXRTY3JvbGxLZXkobG9jYXRpb24sIG1hdGNoZXMpO1xuICAgICAgbGV0IHkgPSBzYXZlZFNjcm9sbFBvc2l0aW9uczJba2V5XTtcbiAgICAgIGlmICh0eXBlb2YgeSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICByZXR1cm4geTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgZnVuY3Rpb24gY2hlY2tGb2dPZldhcihtYXRjaGVzLCByb3V0ZXNUb1VzZSwgcGF0aG5hbWUpIHtcbiAgICBpZiAocGF0Y2hSb3V0ZXNPbk5hdmlnYXRpb25JbXBsKSB7XG4gICAgICBpZiAoIW1hdGNoZXMpIHtcbiAgICAgICAgbGV0IGZvZ01hdGNoZXMgPSBtYXRjaFJvdXRlc0ltcGwoXG4gICAgICAgICAgcm91dGVzVG9Vc2UsXG4gICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgYmFzZW5hbWUsXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4geyBhY3RpdmU6IHRydWUsIG1hdGNoZXM6IGZvZ01hdGNoZXMgfHwgW10gfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhtYXRjaGVzWzBdLnBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGxldCBwYXJ0aWFsTWF0Y2hlcyA9IG1hdGNoUm91dGVzSW1wbChcbiAgICAgICAgICAgIHJvdXRlc1RvVXNlLFxuICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICBiYXNlbmFtZSxcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB7IGFjdGl2ZTogdHJ1ZSwgbWF0Y2hlczogcGFydGlhbE1hdGNoZXMgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBtYXRjaGVzOiBudWxsIH07XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gZGlzY292ZXJSb3V0ZXMobWF0Y2hlcywgcGF0aG5hbWUsIHNpZ25hbCkge1xuICAgIGlmICghcGF0Y2hSb3V0ZXNPbk5hdmlnYXRpb25JbXBsKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcInN1Y2Nlc3NcIiwgbWF0Y2hlcyB9O1xuICAgIH1cbiAgICBsZXQgcGFydGlhbE1hdGNoZXMgPSBtYXRjaGVzO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBsZXQgaXNOb25ITVIgPSBpbkZsaWdodERhdGFSb3V0ZXMgPT0gbnVsbDtcbiAgICAgIGxldCByb3V0ZXNUb1VzZSA9IGluRmxpZ2h0RGF0YVJvdXRlcyB8fCBkYXRhUm91dGVzO1xuICAgICAgbGV0IGxvY2FsTWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHBhdGNoUm91dGVzT25OYXZpZ2F0aW9uSW1wbCh7XG4gICAgICAgICAgcGF0aDogcGF0aG5hbWUsXG4gICAgICAgICAgbWF0Y2hlczogcGFydGlhbE1hdGNoZXMsXG4gICAgICAgICAgcGF0Y2g6IChyb3V0ZUlkLCBjaGlsZHJlbikgPT4ge1xuICAgICAgICAgICAgaWYgKHNpZ25hbC5hYm9ydGVkKSByZXR1cm47XG4gICAgICAgICAgICBwYXRjaFJvdXRlc0ltcGwoXG4gICAgICAgICAgICAgIHJvdXRlSWQsXG4gICAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAgICByb3V0ZXNUb1VzZSxcbiAgICAgICAgICAgICAgbG9jYWxNYW5pZmVzdCxcbiAgICAgICAgICAgICAgbWFwUm91dGVQcm9wZXJ0aWVzMlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImVycm9yXCIsIGVycm9yOiBlLCBwYXJ0aWFsTWF0Y2hlcyB9O1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKGlzTm9uSE1SICYmICFzaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgIGRhdGFSb3V0ZXMgPSBbLi4uZGF0YVJvdXRlc107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImFib3J0ZWRcIiB9O1xuICAgICAgfVxuICAgICAgbGV0IG5ld01hdGNoZXMgPSBtYXRjaFJvdXRlcyhyb3V0ZXNUb1VzZSwgcGF0aG5hbWUsIGJhc2VuYW1lKTtcbiAgICAgIGlmIChuZXdNYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwic3VjY2Vzc1wiLCBtYXRjaGVzOiBuZXdNYXRjaGVzIH07XG4gICAgICB9XG4gICAgICBsZXQgbmV3UGFydGlhbE1hdGNoZXMgPSBtYXRjaFJvdXRlc0ltcGwoXG4gICAgICAgIHJvdXRlc1RvVXNlLFxuICAgICAgICBwYXRobmFtZSxcbiAgICAgICAgYmFzZW5hbWUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgICBpZiAoIW5ld1BhcnRpYWxNYXRjaGVzIHx8IHBhcnRpYWxNYXRjaGVzLmxlbmd0aCA9PT0gbmV3UGFydGlhbE1hdGNoZXMubGVuZ3RoICYmIHBhcnRpYWxNYXRjaGVzLmV2ZXJ5KFxuICAgICAgICAobSwgaSkgPT4gbS5yb3V0ZS5pZCA9PT0gbmV3UGFydGlhbE1hdGNoZXNbaV0ucm91dGUuaWRcbiAgICAgICkpIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJzdWNjZXNzXCIsIG1hdGNoZXM6IG51bGwgfTtcbiAgICAgIH1cbiAgICAgIHBhcnRpYWxNYXRjaGVzID0gbmV3UGFydGlhbE1hdGNoZXM7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIF9pbnRlcm5hbFNldFJvdXRlcyhuZXdSb3V0ZXMpIHtcbiAgICBtYW5pZmVzdCA9IHt9O1xuICAgIGluRmxpZ2h0RGF0YVJvdXRlcyA9IGNvbnZlcnRSb3V0ZXNUb0RhdGFSb3V0ZXMoXG4gICAgICBuZXdSb3V0ZXMsXG4gICAgICBtYXBSb3V0ZVByb3BlcnRpZXMyLFxuICAgICAgdm9pZCAwLFxuICAgICAgbWFuaWZlc3RcbiAgICApO1xuICB9XG4gIGZ1bmN0aW9uIHBhdGNoUm91dGVzKHJvdXRlSWQsIGNoaWxkcmVuKSB7XG4gICAgbGV0IGlzTm9uSE1SID0gaW5GbGlnaHREYXRhUm91dGVzID09IG51bGw7XG4gICAgbGV0IHJvdXRlc1RvVXNlID0gaW5GbGlnaHREYXRhUm91dGVzIHx8IGRhdGFSb3V0ZXM7XG4gICAgcGF0Y2hSb3V0ZXNJbXBsKFxuICAgICAgcm91dGVJZCxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgcm91dGVzVG9Vc2UsXG4gICAgICBtYW5pZmVzdCxcbiAgICAgIG1hcFJvdXRlUHJvcGVydGllczJcbiAgICApO1xuICAgIGlmIChpc05vbkhNUikge1xuICAgICAgZGF0YVJvdXRlcyA9IFsuLi5kYXRhUm91dGVzXTtcbiAgICAgIHVwZGF0ZVN0YXRlKHt9KTtcbiAgICB9XG4gIH1cbiAgcm91dGVyID0ge1xuICAgIGdldCBiYXNlbmFtZSgpIHtcbiAgICAgIHJldHVybiBiYXNlbmFtZTtcbiAgICB9LFxuICAgIGdldCBmdXR1cmUoKSB7XG4gICAgICByZXR1cm4gZnV0dXJlO1xuICAgIH0sXG4gICAgZ2V0IHN0YXRlKCkge1xuICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH0sXG4gICAgZ2V0IHJvdXRlcygpIHtcbiAgICAgIHJldHVybiBkYXRhUm91dGVzO1xuICAgIH0sXG4gICAgZ2V0IHdpbmRvdygpIHtcbiAgICAgIHJldHVybiByb3V0ZXJXaW5kb3c7XG4gICAgfSxcbiAgICBpbml0aWFsaXplLFxuICAgIHN1YnNjcmliZSxcbiAgICBlbmFibGVTY3JvbGxSZXN0b3JhdGlvbixcbiAgICBuYXZpZ2F0ZSxcbiAgICBmZXRjaDogZmV0Y2gyLFxuICAgIHJldmFsaWRhdGUsXG4gICAgLy8gUGFzc3Rocm91Z2ggdG8gaGlzdG9yeS1hd2FyZSBjcmVhdGVIcmVmIHVzZWQgYnkgdXNlSHJlZiBzbyB3ZSBnZXQgcHJvcGVyXG4gICAgLy8gaGFzaC1hd2FyZSBVUkxzIGluIERPTSBwYXRoc1xuICAgIGNyZWF0ZUhyZWY6ICh0bykgPT4gaW5pdC5oaXN0b3J5LmNyZWF0ZUhyZWYodG8pLFxuICAgIGVuY29kZUxvY2F0aW9uOiAodG8pID0+IGluaXQuaGlzdG9yeS5lbmNvZGVMb2NhdGlvbih0byksXG4gICAgZ2V0RmV0Y2hlcixcbiAgICBkZWxldGVGZXRjaGVyOiBxdWV1ZUZldGNoZXJGb3JEZWxldGlvbixcbiAgICBkaXNwb3NlLFxuICAgIGdldEJsb2NrZXIsXG4gICAgZGVsZXRlQmxvY2tlcixcbiAgICBwYXRjaFJvdXRlcyxcbiAgICBfaW50ZXJuYWxGZXRjaENvbnRyb2xsZXJzOiBmZXRjaENvbnRyb2xsZXJzLFxuICAgIC8vIFRPRE86IFJlbW92ZSBzZXRSb3V0ZXMsIGl0J3MgdGVtcG9yYXJ5IHRvIGF2b2lkIGRlYWxpbmcgd2l0aFxuICAgIC8vIHVwZGF0aW5nIHRoZSB0cmVlIHdoaWxlIHZhbGlkYXRpbmcgdGhlIHVwZGF0ZSBhbGdvcml0aG0uXG4gICAgX2ludGVybmFsU2V0Um91dGVzXG4gIH07XG4gIHJldHVybiByb3V0ZXI7XG59XG5mdW5jdGlvbiBjcmVhdGVTdGF0aWNIYW5kbGVyKHJvdXRlcywgb3B0cykge1xuICBpbnZhcmlhbnQoXG4gICAgcm91dGVzLmxlbmd0aCA+IDAsXG4gICAgXCJZb3UgbXVzdCBwcm92aWRlIGEgbm9uLWVtcHR5IHJvdXRlcyBhcnJheSB0byBjcmVhdGVTdGF0aWNIYW5kbGVyXCJcbiAgKTtcbiAgbGV0IG1hbmlmZXN0ID0ge307XG4gIGxldCBiYXNlbmFtZSA9IChvcHRzID8gb3B0cy5iYXNlbmFtZSA6IG51bGwpIHx8IFwiL1wiO1xuICBsZXQgbWFwUm91dGVQcm9wZXJ0aWVzMiA9IG9wdHM/Lm1hcFJvdXRlUHJvcGVydGllcyB8fCBkZWZhdWx0TWFwUm91dGVQcm9wZXJ0aWVzO1xuICBsZXQgZGF0YVJvdXRlcyA9IGNvbnZlcnRSb3V0ZXNUb0RhdGFSb3V0ZXMoXG4gICAgcm91dGVzLFxuICAgIG1hcFJvdXRlUHJvcGVydGllczIsXG4gICAgdm9pZCAwLFxuICAgIG1hbmlmZXN0XG4gICk7XG4gIGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5KHJlcXVlc3QsIHtcbiAgICByZXF1ZXN0Q29udGV4dCxcbiAgICBza2lwTG9hZGVyRXJyb3JCdWJibGluZyxcbiAgICBkYXRhU3RyYXRlZ3lcbiAgfSA9IHt9KSB7XG4gICAgbGV0IHVybCA9IG5ldyBVUkwocmVxdWVzdC51cmwpO1xuICAgIGxldCBtZXRob2QgPSByZXF1ZXN0Lm1ldGhvZDtcbiAgICBsZXQgbG9jYXRpb24gPSBjcmVhdGVMb2NhdGlvbihcIlwiLCBjcmVhdGVQYXRoKHVybCksIG51bGwsIFwiZGVmYXVsdFwiKTtcbiAgICBsZXQgbWF0Y2hlcyA9IG1hdGNoUm91dGVzKGRhdGFSb3V0ZXMsIGxvY2F0aW9uLCBiYXNlbmFtZSk7XG4gICAgaWYgKCFpc1ZhbGlkTWV0aG9kKG1ldGhvZCkgJiYgbWV0aG9kICE9PSBcIkhFQURcIikge1xuICAgICAgbGV0IGVycm9yID0gZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDUsIHsgbWV0aG9kIH0pO1xuICAgICAgbGV0IHsgbWF0Y2hlczogbWV0aG9kTm90QWxsb3dlZE1hdGNoZXMsIHJvdXRlIH0gPSBnZXRTaG9ydENpcmN1aXRNYXRjaGVzKGRhdGFSb3V0ZXMpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFzZW5hbWUsXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICBtYXRjaGVzOiBtZXRob2ROb3RBbGxvd2VkTWF0Y2hlcyxcbiAgICAgICAgbG9hZGVyRGF0YToge30sXG4gICAgICAgIGFjdGlvbkRhdGE6IG51bGwsXG4gICAgICAgIGVycm9yczoge1xuICAgICAgICAgIFtyb3V0ZS5pZF06IGVycm9yXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1c0NvZGU6IGVycm9yLnN0YXR1cyxcbiAgICAgICAgbG9hZGVySGVhZGVyczoge30sXG4gICAgICAgIGFjdGlvbkhlYWRlcnM6IHt9XG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoIW1hdGNoZXMpIHtcbiAgICAgIGxldCBlcnJvciA9IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA0LCB7IHBhdGhuYW1lOiBsb2NhdGlvbi5wYXRobmFtZSB9KTtcbiAgICAgIGxldCB7IG1hdGNoZXM6IG5vdEZvdW5kTWF0Y2hlcywgcm91dGUgfSA9IGdldFNob3J0Q2lyY3VpdE1hdGNoZXMoZGF0YVJvdXRlcyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBiYXNlbmFtZSxcbiAgICAgICAgbG9jYXRpb24sXG4gICAgICAgIG1hdGNoZXM6IG5vdEZvdW5kTWF0Y2hlcyxcbiAgICAgICAgbG9hZGVyRGF0YToge30sXG4gICAgICAgIGFjdGlvbkRhdGE6IG51bGwsXG4gICAgICAgIGVycm9yczoge1xuICAgICAgICAgIFtyb3V0ZS5pZF06IGVycm9yXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1c0NvZGU6IGVycm9yLnN0YXR1cyxcbiAgICAgICAgbG9hZGVySGVhZGVyczoge30sXG4gICAgICAgIGFjdGlvbkhlYWRlcnM6IHt9XG4gICAgICB9O1xuICAgIH1cbiAgICBsZXQgcmVzdWx0ID0gYXdhaXQgcXVlcnlJbXBsKFxuICAgICAgcmVxdWVzdCxcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIHJlcXVlc3RDb250ZXh0LFxuICAgICAgZGF0YVN0cmF0ZWd5IHx8IG51bGwsXG4gICAgICBza2lwTG9hZGVyRXJyb3JCdWJibGluZyA9PT0gdHJ1ZSxcbiAgICAgIG51bGxcbiAgICApO1xuICAgIGlmIChpc1Jlc3BvbnNlKHJlc3VsdCkpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiB7IGxvY2F0aW9uLCBiYXNlbmFtZSwgLi4ucmVzdWx0IH07XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gcXVlcnlSb3V0ZShyZXF1ZXN0LCB7XG4gICAgcm91dGVJZCxcbiAgICByZXF1ZXN0Q29udGV4dCxcbiAgICBkYXRhU3RyYXRlZ3lcbiAgfSA9IHt9KSB7XG4gICAgbGV0IHVybCA9IG5ldyBVUkwocmVxdWVzdC51cmwpO1xuICAgIGxldCBtZXRob2QgPSByZXF1ZXN0Lm1ldGhvZDtcbiAgICBsZXQgbG9jYXRpb24gPSBjcmVhdGVMb2NhdGlvbihcIlwiLCBjcmVhdGVQYXRoKHVybCksIG51bGwsIFwiZGVmYXVsdFwiKTtcbiAgICBsZXQgbWF0Y2hlcyA9IG1hdGNoUm91dGVzKGRhdGFSb3V0ZXMsIGxvY2F0aW9uLCBiYXNlbmFtZSk7XG4gICAgaWYgKCFpc1ZhbGlkTWV0aG9kKG1ldGhvZCkgJiYgbWV0aG9kICE9PSBcIkhFQURcIiAmJiBtZXRob2QgIT09IFwiT1BUSU9OU1wiKSB7XG4gICAgICB0aHJvdyBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwNSwgeyBtZXRob2QgfSk7XG4gICAgfSBlbHNlIGlmICghbWF0Y2hlcykge1xuICAgICAgdGhyb3cgZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDQsIHsgcGF0aG5hbWU6IGxvY2F0aW9uLnBhdGhuYW1lIH0pO1xuICAgIH1cbiAgICBsZXQgbWF0Y2ggPSByb3V0ZUlkID8gbWF0Y2hlcy5maW5kKChtKSA9PiBtLnJvdXRlLmlkID09PSByb3V0ZUlkKSA6IGdldFRhcmdldE1hdGNoKG1hdGNoZXMsIGxvY2F0aW9uKTtcbiAgICBpZiAocm91dGVJZCAmJiAhbWF0Y2gpIHtcbiAgICAgIHRocm93IGdldEludGVybmFsUm91dGVyRXJyb3IoNDAzLCB7XG4gICAgICAgIHBhdGhuYW1lOiBsb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgICAgcm91dGVJZFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICghbWF0Y2gpIHtcbiAgICAgIHRocm93IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA0LCB7IHBhdGhuYW1lOiBsb2NhdGlvbi5wYXRobmFtZSB9KTtcbiAgICB9XG4gICAgbGV0IHJlc3VsdCA9IGF3YWl0IHF1ZXJ5SW1wbChcbiAgICAgIHJlcXVlc3QsXG4gICAgICBsb2NhdGlvbixcbiAgICAgIG1hdGNoZXMsXG4gICAgICByZXF1ZXN0Q29udGV4dCxcbiAgICAgIGRhdGFTdHJhdGVneSB8fCBudWxsLFxuICAgICAgZmFsc2UsXG4gICAgICBtYXRjaFxuICAgICk7XG4gICAgaWYgKGlzUmVzcG9uc2UocmVzdWx0KSkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgbGV0IGVycm9yID0gcmVzdWx0LmVycm9ycyA/IE9iamVjdC52YWx1ZXMocmVzdWx0LmVycm9ycylbMF0gOiB2b2lkIDA7XG4gICAgaWYgKGVycm9yICE9PSB2b2lkIDApIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICBpZiAocmVzdWx0LmFjdGlvbkRhdGEpIHtcbiAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKHJlc3VsdC5hY3Rpb25EYXRhKVswXTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdC5sb2FkZXJEYXRhKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhyZXN1bHQubG9hZGVyRGF0YSlbMF07XG4gICAgfVxuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gcXVlcnlJbXBsKHJlcXVlc3QsIGxvY2F0aW9uLCBtYXRjaGVzLCByZXF1ZXN0Q29udGV4dCwgZGF0YVN0cmF0ZWd5LCBza2lwTG9hZGVyRXJyb3JCdWJibGluZywgcm91dGVNYXRjaCkge1xuICAgIGludmFyaWFudChcbiAgICAgIHJlcXVlc3Quc2lnbmFsLFxuICAgICAgXCJxdWVyeSgpL3F1ZXJ5Um91dGUoKSByZXF1ZXN0cyBtdXN0IGNvbnRhaW4gYW4gQWJvcnRDb250cm9sbGVyIHNpZ25hbFwiXG4gICAgKTtcbiAgICB0cnkge1xuICAgICAgaWYgKGlzTXV0YXRpb25NZXRob2QocmVxdWVzdC5tZXRob2QpKSB7XG4gICAgICAgIGxldCByZXN1bHQyID0gYXdhaXQgc3VibWl0KFxuICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgICByb3V0ZU1hdGNoIHx8IGdldFRhcmdldE1hdGNoKG1hdGNoZXMsIGxvY2F0aW9uKSxcbiAgICAgICAgICByZXF1ZXN0Q29udGV4dCxcbiAgICAgICAgICBkYXRhU3RyYXRlZ3ksXG4gICAgICAgICAgc2tpcExvYWRlckVycm9yQnViYmxpbmcsXG4gICAgICAgICAgcm91dGVNYXRjaCAhPSBudWxsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiByZXN1bHQyO1xuICAgICAgfVxuICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGxvYWRSb3V0ZURhdGEoXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIHJlcXVlc3RDb250ZXh0LFxuICAgICAgICBkYXRhU3RyYXRlZ3ksXG4gICAgICAgIHNraXBMb2FkZXJFcnJvckJ1YmJsaW5nLFxuICAgICAgICByb3V0ZU1hdGNoXG4gICAgICApO1xuICAgICAgcmV0dXJuIGlzUmVzcG9uc2UocmVzdWx0KSA/IHJlc3VsdCA6IHtcbiAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICBhY3Rpb25EYXRhOiBudWxsLFxuICAgICAgICBhY3Rpb25IZWFkZXJzOiB7fVxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoaXNEYXRhU3RyYXRlZ3lSZXN1bHQoZSkgJiYgaXNSZXNwb25zZShlLnJlc3VsdCkpIHtcbiAgICAgICAgaWYgKGUudHlwZSA9PT0gXCJlcnJvclwiIC8qIGVycm9yICovKSB7XG4gICAgICAgICAgdGhyb3cgZS5yZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGUucmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKGlzUmVkaXJlY3RSZXNwb25zZShlKSkge1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHN1Ym1pdChyZXF1ZXN0LCBtYXRjaGVzLCBhY3Rpb25NYXRjaCwgcmVxdWVzdENvbnRleHQsIGRhdGFTdHJhdGVneSwgc2tpcExvYWRlckVycm9yQnViYmxpbmcsIGlzUm91dGVSZXF1ZXN0KSB7XG4gICAgbGV0IHJlc3VsdDtcbiAgICBpZiAoIWFjdGlvbk1hdGNoLnJvdXRlLmFjdGlvbiAmJiAhYWN0aW9uTWF0Y2gucm91dGUubGF6eSkge1xuICAgICAgbGV0IGVycm9yID0gZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDUsIHtcbiAgICAgICAgbWV0aG9kOiByZXF1ZXN0Lm1ldGhvZCxcbiAgICAgICAgcGF0aG5hbWU6IG5ldyBVUkwocmVxdWVzdC51cmwpLnBhdGhuYW1lLFxuICAgICAgICByb3V0ZUlkOiBhY3Rpb25NYXRjaC5yb3V0ZS5pZFxuICAgICAgfSk7XG4gICAgICBpZiAoaXNSb3V0ZVJlcXVlc3QpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIHR5cGU6IFwiZXJyb3JcIiAvKiBlcnJvciAqLyxcbiAgICAgICAgZXJyb3JcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgY2FsbERhdGFTdHJhdGVneShcbiAgICAgICAgXCJhY3Rpb25cIixcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgW2FjdGlvbk1hdGNoXSxcbiAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgaXNSb3V0ZVJlcXVlc3QsXG4gICAgICAgIHJlcXVlc3RDb250ZXh0LFxuICAgICAgICBkYXRhU3RyYXRlZ3lcbiAgICAgICk7XG4gICAgICByZXN1bHQgPSByZXN1bHRzW2FjdGlvbk1hdGNoLnJvdXRlLmlkXTtcbiAgICAgIGlmIChyZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgIHRocm93U3RhdGljSGFuZGxlckFib3J0ZWRFcnJvcihyZXF1ZXN0LCBpc1JvdXRlUmVxdWVzdCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc1JlZGlyZWN0UmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgIHRocm93IG5ldyBSZXNwb25zZShudWxsLCB7XG4gICAgICAgIHN0YXR1czogcmVzdWx0LnJlc3BvbnNlLnN0YXR1cyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIExvY2F0aW9uOiByZXN1bHQucmVzcG9uc2UuaGVhZGVycy5nZXQoXCJMb2NhdGlvblwiKVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGlzUm91dGVSZXF1ZXN0KSB7XG4gICAgICBpZiAoaXNFcnJvclJlc3VsdChyZXN1bHQpKSB7XG4gICAgICAgIHRocm93IHJlc3VsdC5lcnJvcjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1hdGNoZXM6IFthY3Rpb25NYXRjaF0sXG4gICAgICAgIGxvYWRlckRhdGE6IHt9LFxuICAgICAgICBhY3Rpb25EYXRhOiB7IFthY3Rpb25NYXRjaC5yb3V0ZS5pZF06IHJlc3VsdC5kYXRhIH0sXG4gICAgICAgIGVycm9yczogbnVsbCxcbiAgICAgICAgLy8gTm90ZTogc3RhdHVzQ29kZSArIGhlYWRlcnMgYXJlIHVudXNlZCBoZXJlIHNpbmNlIHF1ZXJ5Um91dGUgd2lsbFxuICAgICAgICAvLyByZXR1cm4gdGhlIHJhdyBSZXNwb25zZSBvciB2YWx1ZVxuICAgICAgICBzdGF0dXNDb2RlOiAyMDAsXG4gICAgICAgIGxvYWRlckhlYWRlcnM6IHt9LFxuICAgICAgICBhY3Rpb25IZWFkZXJzOiB7fVxuICAgICAgfTtcbiAgICB9XG4gICAgbGV0IGxvYWRlclJlcXVlc3QgPSBuZXcgUmVxdWVzdChyZXF1ZXN0LnVybCwge1xuICAgICAgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzLFxuICAgICAgcmVkaXJlY3Q6IHJlcXVlc3QucmVkaXJlY3QsXG4gICAgICBzaWduYWw6IHJlcXVlc3Quc2lnbmFsXG4gICAgfSk7XG4gICAgaWYgKGlzRXJyb3JSZXN1bHQocmVzdWx0KSkge1xuICAgICAgbGV0IGJvdW5kYXJ5TWF0Y2ggPSBza2lwTG9hZGVyRXJyb3JCdWJibGluZyA/IGFjdGlvbk1hdGNoIDogZmluZE5lYXJlc3RCb3VuZGFyeShtYXRjaGVzLCBhY3Rpb25NYXRjaC5yb3V0ZS5pZCk7XG4gICAgICBsZXQgY29udGV4dDIgPSBhd2FpdCBsb2FkUm91dGVEYXRhKFxuICAgICAgICBsb2FkZXJSZXF1ZXN0LFxuICAgICAgICBtYXRjaGVzLFxuICAgICAgICByZXF1ZXN0Q29udGV4dCxcbiAgICAgICAgZGF0YVN0cmF0ZWd5LFxuICAgICAgICBza2lwTG9hZGVyRXJyb3JCdWJibGluZyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgW2JvdW5kYXJ5TWF0Y2gucm91dGUuaWQsIHJlc3VsdF1cbiAgICAgICk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5jb250ZXh0MixcbiAgICAgICAgc3RhdHVzQ29kZTogaXNSb3V0ZUVycm9yUmVzcG9uc2UocmVzdWx0LmVycm9yKSA/IHJlc3VsdC5lcnJvci5zdGF0dXMgOiByZXN1bHQuc3RhdHVzQ29kZSAhPSBudWxsID8gcmVzdWx0LnN0YXR1c0NvZGUgOiA1MDAsXG4gICAgICAgIGFjdGlvbkRhdGE6IG51bGwsXG4gICAgICAgIGFjdGlvbkhlYWRlcnM6IHtcbiAgICAgICAgICAuLi5yZXN1bHQuaGVhZGVycyA/IHsgW2FjdGlvbk1hdGNoLnJvdXRlLmlkXTogcmVzdWx0LmhlYWRlcnMgfSA6IHt9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIGxldCBjb250ZXh0ID0gYXdhaXQgbG9hZFJvdXRlRGF0YShcbiAgICAgIGxvYWRlclJlcXVlc3QsXG4gICAgICBtYXRjaGVzLFxuICAgICAgcmVxdWVzdENvbnRleHQsXG4gICAgICBkYXRhU3RyYXRlZ3ksXG4gICAgICBza2lwTG9hZGVyRXJyb3JCdWJibGluZyxcbiAgICAgIG51bGxcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5jb250ZXh0LFxuICAgICAgYWN0aW9uRGF0YToge1xuICAgICAgICBbYWN0aW9uTWF0Y2gucm91dGUuaWRdOiByZXN1bHQuZGF0YVxuICAgICAgfSxcbiAgICAgIC8vIGFjdGlvbiBzdGF0dXMgY29kZXMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgbG9hZGVyIHN0YXR1cyBjb2Rlc1xuICAgICAgLi4ucmVzdWx0LnN0YXR1c0NvZGUgPyB7IHN0YXR1c0NvZGU6IHJlc3VsdC5zdGF0dXNDb2RlIH0gOiB7fSxcbiAgICAgIGFjdGlvbkhlYWRlcnM6IHJlc3VsdC5oZWFkZXJzID8geyBbYWN0aW9uTWF0Y2gucm91dGUuaWRdOiByZXN1bHQuaGVhZGVycyB9IDoge31cbiAgICB9O1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGxvYWRSb3V0ZURhdGEocmVxdWVzdCwgbWF0Y2hlcywgcmVxdWVzdENvbnRleHQsIGRhdGFTdHJhdGVneSwgc2tpcExvYWRlckVycm9yQnViYmxpbmcsIHJvdXRlTWF0Y2gsIHBlbmRpbmdBY3Rpb25SZXN1bHQpIHtcbiAgICBsZXQgaXNSb3V0ZVJlcXVlc3QgPSByb3V0ZU1hdGNoICE9IG51bGw7XG4gICAgaWYgKGlzUm91dGVSZXF1ZXN0ICYmICFyb3V0ZU1hdGNoPy5yb3V0ZS5sb2FkZXIgJiYgIXJvdXRlTWF0Y2g/LnJvdXRlLmxhenkpIHtcbiAgICAgIHRocm93IGdldEludGVybmFsUm91dGVyRXJyb3IoNDAwLCB7XG4gICAgICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgICAgIHBhdGhuYW1lOiBuZXcgVVJMKHJlcXVlc3QudXJsKS5wYXRobmFtZSxcbiAgICAgICAgcm91dGVJZDogcm91dGVNYXRjaD8ucm91dGUuaWRcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsZXQgcmVxdWVzdE1hdGNoZXMgPSByb3V0ZU1hdGNoID8gW3JvdXRlTWF0Y2hdIDogcGVuZGluZ0FjdGlvblJlc3VsdCAmJiBpc0Vycm9yUmVzdWx0KHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0pID8gZ2V0TG9hZGVyTWF0Y2hlc1VudGlsQm91bmRhcnkobWF0Y2hlcywgcGVuZGluZ0FjdGlvblJlc3VsdFswXSkgOiBtYXRjaGVzO1xuICAgIGxldCBtYXRjaGVzVG9Mb2FkID0gcmVxdWVzdE1hdGNoZXMuZmlsdGVyKFxuICAgICAgKG0pID0+IG0ucm91dGUubG9hZGVyIHx8IG0ucm91dGUubGF6eVxuICAgICk7XG4gICAgaWYgKG1hdGNoZXNUb0xvYWQubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYXRjaGVzLFxuICAgICAgICAvLyBBZGQgYSBudWxsIGZvciBhbGwgbWF0Y2hlZCByb3V0ZXMgZm9yIHByb3BlciByZXZhbGlkYXRpb24gb24gdGhlIGNsaWVudFxuICAgICAgICBsb2FkZXJEYXRhOiBtYXRjaGVzLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBtKSA9PiBPYmplY3QuYXNzaWduKGFjYywgeyBbbS5yb3V0ZS5pZF06IG51bGwgfSksXG4gICAgICAgICAge31cbiAgICAgICAgKSxcbiAgICAgICAgZXJyb3JzOiBwZW5kaW5nQWN0aW9uUmVzdWx0ICYmIGlzRXJyb3JSZXN1bHQocGVuZGluZ0FjdGlvblJlc3VsdFsxXSkgPyB7XG4gICAgICAgICAgW3BlbmRpbmdBY3Rpb25SZXN1bHRbMF1dOiBwZW5kaW5nQWN0aW9uUmVzdWx0WzFdLmVycm9yXG4gICAgICAgIH0gOiBudWxsLFxuICAgICAgICBzdGF0dXNDb2RlOiAyMDAsXG4gICAgICAgIGxvYWRlckhlYWRlcnM6IHt9XG4gICAgICB9O1xuICAgIH1cbiAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IGNhbGxEYXRhU3RyYXRlZ3koXG4gICAgICBcImxvYWRlclwiLFxuICAgICAgcmVxdWVzdCxcbiAgICAgIG1hdGNoZXNUb0xvYWQsXG4gICAgICBtYXRjaGVzLFxuICAgICAgaXNSb3V0ZVJlcXVlc3QsXG4gICAgICByZXF1ZXN0Q29udGV4dCxcbiAgICAgIGRhdGFTdHJhdGVneVxuICAgICk7XG4gICAgaWYgKHJlcXVlc3Quc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHRocm93U3RhdGljSGFuZGxlckFib3J0ZWRFcnJvcihyZXF1ZXN0LCBpc1JvdXRlUmVxdWVzdCk7XG4gICAgfVxuICAgIGxldCBjb250ZXh0ID0gcHJvY2Vzc1JvdXRlTG9hZGVyRGF0YShcbiAgICAgIG1hdGNoZXMsXG4gICAgICByZXN1bHRzLFxuICAgICAgcGVuZGluZ0FjdGlvblJlc3VsdCxcbiAgICAgIHRydWUsXG4gICAgICBza2lwTG9hZGVyRXJyb3JCdWJibGluZ1xuICAgICk7XG4gICAgbGV0IGV4ZWN1dGVkTG9hZGVycyA9IG5ldyBTZXQoXG4gICAgICBtYXRjaGVzVG9Mb2FkLm1hcCgobWF0Y2gpID0+IG1hdGNoLnJvdXRlLmlkKVxuICAgICk7XG4gICAgbWF0Y2hlcy5mb3JFYWNoKChtYXRjaCkgPT4ge1xuICAgICAgaWYgKCFleGVjdXRlZExvYWRlcnMuaGFzKG1hdGNoLnJvdXRlLmlkKSkge1xuICAgICAgICBjb250ZXh0LmxvYWRlckRhdGFbbWF0Y2gucm91dGUuaWRdID0gbnVsbDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uY29udGV4dCxcbiAgICAgIG1hdGNoZXNcbiAgICB9O1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGNhbGxEYXRhU3RyYXRlZ3kodHlwZSwgcmVxdWVzdCwgbWF0Y2hlc1RvTG9hZCwgbWF0Y2hlcywgaXNSb3V0ZVJlcXVlc3QsIHJlcXVlc3RDb250ZXh0LCBkYXRhU3RyYXRlZ3kpIHtcbiAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IGNhbGxEYXRhU3RyYXRlZ3lJbXBsKFxuICAgICAgZGF0YVN0cmF0ZWd5IHx8IGRlZmF1bHREYXRhU3RyYXRlZ3ksXG4gICAgICB0eXBlLFxuICAgICAgbnVsbCxcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtYXRjaGVzVG9Mb2FkLFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIG51bGwsXG4gICAgICBtYW5pZmVzdCxcbiAgICAgIG1hcFJvdXRlUHJvcGVydGllczIsXG4gICAgICByZXF1ZXN0Q29udGV4dFxuICAgICk7XG4gICAgbGV0IGRhdGFSZXN1bHRzID0ge307XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBtYXRjaGVzLm1hcChhc3luYyAobWF0Y2gpID0+IHtcbiAgICAgICAgaWYgKCEobWF0Y2gucm91dGUuaWQgaW4gcmVzdWx0cykpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3VsdHNbbWF0Y2gucm91dGUuaWRdO1xuICAgICAgICBpZiAoaXNSZWRpcmVjdERhdGFTdHJhdGVneVJlc3VsdChyZXN1bHQpKSB7XG4gICAgICAgICAgbGV0IHJlc3BvbnNlID0gcmVzdWx0LnJlc3VsdDtcbiAgICAgICAgICB0aHJvdyBub3JtYWxpemVSZWxhdGl2ZVJvdXRpbmdSZWRpcmVjdFJlc3BvbnNlKFxuICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgbWF0Y2gucm91dGUuaWQsXG4gICAgICAgICAgICBtYXRjaGVzLFxuICAgICAgICAgICAgYmFzZW5hbWVcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1Jlc3BvbnNlKHJlc3VsdC5yZXN1bHQpICYmIGlzUm91dGVSZXF1ZXN0KSB7XG4gICAgICAgICAgdGhyb3cgcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIGRhdGFSZXN1bHRzW21hdGNoLnJvdXRlLmlkXSA9IGF3YWl0IGNvbnZlcnREYXRhU3RyYXRlZ3lSZXN1bHRUb0RhdGFSZXN1bHQocmVzdWx0KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICByZXR1cm4gZGF0YVJlc3VsdHM7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBkYXRhUm91dGVzLFxuICAgIHF1ZXJ5LFxuICAgIHF1ZXJ5Um91dGVcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFN0YXRpY0NvbnRleHRGcm9tRXJyb3Iocm91dGVzLCBjb250ZXh0LCBlcnJvcikge1xuICBsZXQgbmV3Q29udGV4dCA9IHtcbiAgICAuLi5jb250ZXh0LFxuICAgIHN0YXR1c0NvZGU6IGlzUm91dGVFcnJvclJlc3BvbnNlKGVycm9yKSA/IGVycm9yLnN0YXR1cyA6IDUwMCxcbiAgICBlcnJvcnM6IHtcbiAgICAgIFtjb250ZXh0Ll9kZWVwZXN0UmVuZGVyZWRCb3VuZGFyeUlkIHx8IHJvdXRlc1swXS5pZF06IGVycm9yXG4gICAgfVxuICB9O1xuICByZXR1cm4gbmV3Q29udGV4dDtcbn1cbmZ1bmN0aW9uIHRocm93U3RhdGljSGFuZGxlckFib3J0ZWRFcnJvcihyZXF1ZXN0LCBpc1JvdXRlUmVxdWVzdCkge1xuICBpZiAocmVxdWVzdC5zaWduYWwucmVhc29uICE9PSB2b2lkIDApIHtcbiAgICB0aHJvdyByZXF1ZXN0LnNpZ25hbC5yZWFzb247XG4gIH1cbiAgbGV0IG1ldGhvZCA9IGlzUm91dGVSZXF1ZXN0ID8gXCJxdWVyeVJvdXRlXCIgOiBcInF1ZXJ5XCI7XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgJHttZXRob2R9KCkgY2FsbCBhYm9ydGVkIHdpdGhvdXQgYW4gXFxgQWJvcnRTaWduYWwucmVhc29uXFxgOiAke3JlcXVlc3QubWV0aG9kfSAke3JlcXVlc3QudXJsfWBcbiAgKTtcbn1cbmZ1bmN0aW9uIGlzU3VibWlzc2lvbk5hdmlnYXRpb24ob3B0cykge1xuICByZXR1cm4gb3B0cyAhPSBudWxsICYmIChcImZvcm1EYXRhXCIgaW4gb3B0cyAmJiBvcHRzLmZvcm1EYXRhICE9IG51bGwgfHwgXCJib2R5XCIgaW4gb3B0cyAmJiBvcHRzLmJvZHkgIT09IHZvaWQgMCk7XG59XG5mdW5jdGlvbiBub3JtYWxpemVUbyhsb2NhdGlvbiwgbWF0Y2hlcywgYmFzZW5hbWUsIHRvLCBmcm9tUm91dGVJZCwgcmVsYXRpdmUpIHtcbiAgbGV0IGNvbnRleHR1YWxNYXRjaGVzO1xuICBsZXQgYWN0aXZlUm91dGVNYXRjaDtcbiAgaWYgKGZyb21Sb3V0ZUlkKSB7XG4gICAgY29udGV4dHVhbE1hdGNoZXMgPSBbXTtcbiAgICBmb3IgKGxldCBtYXRjaCBvZiBtYXRjaGVzKSB7XG4gICAgICBjb250ZXh0dWFsTWF0Y2hlcy5wdXNoKG1hdGNoKTtcbiAgICAgIGlmIChtYXRjaC5yb3V0ZS5pZCA9PT0gZnJvbVJvdXRlSWQpIHtcbiAgICAgICAgYWN0aXZlUm91dGVNYXRjaCA9IG1hdGNoO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29udGV4dHVhbE1hdGNoZXMgPSBtYXRjaGVzO1xuICAgIGFjdGl2ZVJvdXRlTWF0Y2ggPSBtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV07XG4gIH1cbiAgbGV0IHBhdGggPSByZXNvbHZlVG8oXG4gICAgdG8gPyB0byA6IFwiLlwiLFxuICAgIGdldFJlc29sdmVUb01hdGNoZXMoY29udGV4dHVhbE1hdGNoZXMpLFxuICAgIHN0cmlwQmFzZW5hbWUobG9jYXRpb24ucGF0aG5hbWUsIGJhc2VuYW1lKSB8fCBsb2NhdGlvbi5wYXRobmFtZSxcbiAgICByZWxhdGl2ZSA9PT0gXCJwYXRoXCJcbiAgKTtcbiAgaWYgKHRvID09IG51bGwpIHtcbiAgICBwYXRoLnNlYXJjaCA9IGxvY2F0aW9uLnNlYXJjaDtcbiAgICBwYXRoLmhhc2ggPSBsb2NhdGlvbi5oYXNoO1xuICB9XG4gIGlmICgodG8gPT0gbnVsbCB8fCB0byA9PT0gXCJcIiB8fCB0byA9PT0gXCIuXCIpICYmIGFjdGl2ZVJvdXRlTWF0Y2gpIHtcbiAgICBsZXQgbmFrZWRJbmRleCA9IGhhc05ha2VkSW5kZXhRdWVyeShwYXRoLnNlYXJjaCk7XG4gICAgaWYgKGFjdGl2ZVJvdXRlTWF0Y2gucm91dGUuaW5kZXggJiYgIW5ha2VkSW5kZXgpIHtcbiAgICAgIHBhdGguc2VhcmNoID0gcGF0aC5zZWFyY2ggPyBwYXRoLnNlYXJjaC5yZXBsYWNlKC9eXFw/LywgXCI/aW5kZXgmXCIpIDogXCI/aW5kZXhcIjtcbiAgICB9IGVsc2UgaWYgKCFhY3RpdmVSb3V0ZU1hdGNoLnJvdXRlLmluZGV4ICYmIG5ha2VkSW5kZXgpIHtcbiAgICAgIGxldCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhdGguc2VhcmNoKTtcbiAgICAgIGxldCBpbmRleFZhbHVlcyA9IHBhcmFtcy5nZXRBbGwoXCJpbmRleFwiKTtcbiAgICAgIHBhcmFtcy5kZWxldGUoXCJpbmRleFwiKTtcbiAgICAgIGluZGV4VmFsdWVzLmZpbHRlcigodikgPT4gdikuZm9yRWFjaCgodikgPT4gcGFyYW1zLmFwcGVuZChcImluZGV4XCIsIHYpKTtcbiAgICAgIGxldCBxcyA9IHBhcmFtcy50b1N0cmluZygpO1xuICAgICAgcGF0aC5zZWFyY2ggPSBxcyA/IGA/JHtxc31gIDogXCJcIjtcbiAgICB9XG4gIH1cbiAgaWYgKGJhc2VuYW1lICE9PSBcIi9cIikge1xuICAgIHBhdGgucGF0aG5hbWUgPSBwYXRoLnBhdGhuYW1lID09PSBcIi9cIiA/IGJhc2VuYW1lIDogam9pblBhdGhzKFtiYXNlbmFtZSwgcGF0aC5wYXRobmFtZV0pO1xuICB9XG4gIHJldHVybiBjcmVhdGVQYXRoKHBhdGgpO1xufVxuZnVuY3Rpb24gbm9ybWFsaXplTmF2aWdhdGVPcHRpb25zKGlzRmV0Y2hlciwgcGF0aCwgb3B0cykge1xuICBpZiAoIW9wdHMgfHwgIWlzU3VibWlzc2lvbk5hdmlnYXRpb24ob3B0cykpIHtcbiAgICByZXR1cm4geyBwYXRoIH07XG4gIH1cbiAgaWYgKG9wdHMuZm9ybU1ldGhvZCAmJiAhaXNWYWxpZE1ldGhvZChvcHRzLmZvcm1NZXRob2QpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhdGgsXG4gICAgICBlcnJvcjogZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDUsIHsgbWV0aG9kOiBvcHRzLmZvcm1NZXRob2QgfSlcbiAgICB9O1xuICB9XG4gIGxldCBnZXRJbnZhbGlkQm9keUVycm9yID0gKCkgPT4gKHtcbiAgICBwYXRoLFxuICAgIGVycm9yOiBnZXRJbnRlcm5hbFJvdXRlckVycm9yKDQwMCwgeyB0eXBlOiBcImludmFsaWQtYm9keVwiIH0pXG4gIH0pO1xuICBsZXQgcmF3Rm9ybU1ldGhvZCA9IG9wdHMuZm9ybU1ldGhvZCB8fCBcImdldFwiO1xuICBsZXQgZm9ybU1ldGhvZCA9IHJhd0Zvcm1NZXRob2QudG9VcHBlckNhc2UoKTtcbiAgbGV0IGZvcm1BY3Rpb24gPSBzdHJpcEhhc2hGcm9tUGF0aChwYXRoKTtcbiAgaWYgKG9wdHMuYm9keSAhPT0gdm9pZCAwKSB7XG4gICAgaWYgKG9wdHMuZm9ybUVuY1R5cGUgPT09IFwidGV4dC9wbGFpblwiKSB7XG4gICAgICBpZiAoIWlzTXV0YXRpb25NZXRob2QoZm9ybU1ldGhvZCkpIHtcbiAgICAgICAgcmV0dXJuIGdldEludmFsaWRCb2R5RXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIGxldCB0ZXh0ID0gdHlwZW9mIG9wdHMuYm9keSA9PT0gXCJzdHJpbmdcIiA/IG9wdHMuYm9keSA6IG9wdHMuYm9keSBpbnN0YW5jZW9mIEZvcm1EYXRhIHx8IG9wdHMuYm9keSBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtcyA/IChcbiAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybS1jb250cm9sLWluZnJhc3RydWN0dXJlLmh0bWwjcGxhaW4tdGV4dC1mb3JtLWRhdGFcbiAgICAgICAgQXJyYXkuZnJvbShvcHRzLmJvZHkuZW50cmllcygpKS5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgW25hbWUsIHZhbHVlXSkgPT4gYCR7YWNjfSR7bmFtZX09JHt2YWx1ZX1cbmAsXG4gICAgICAgICAgXCJcIlxuICAgICAgICApXG4gICAgICApIDogU3RyaW5nKG9wdHMuYm9keSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXRoLFxuICAgICAgICBzdWJtaXNzaW9uOiB7XG4gICAgICAgICAgZm9ybU1ldGhvZCxcbiAgICAgICAgICBmb3JtQWN0aW9uLFxuICAgICAgICAgIGZvcm1FbmNUeXBlOiBvcHRzLmZvcm1FbmNUeXBlLFxuICAgICAgICAgIGZvcm1EYXRhOiB2b2lkIDAsXG4gICAgICAgICAganNvbjogdm9pZCAwLFxuICAgICAgICAgIHRleHRcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKG9wdHMuZm9ybUVuY1R5cGUgPT09IFwiYXBwbGljYXRpb24vanNvblwiKSB7XG4gICAgICBpZiAoIWlzTXV0YXRpb25NZXRob2QoZm9ybU1ldGhvZCkpIHtcbiAgICAgICAgcmV0dXJuIGdldEludmFsaWRCb2R5RXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCBqc29uID0gdHlwZW9mIG9wdHMuYm9keSA9PT0gXCJzdHJpbmdcIiA/IEpTT04ucGFyc2Uob3B0cy5ib2R5KSA6IG9wdHMuYm9keTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHN1Ym1pc3Npb246IHtcbiAgICAgICAgICAgIGZvcm1NZXRob2QsXG4gICAgICAgICAgICBmb3JtQWN0aW9uLFxuICAgICAgICAgICAgZm9ybUVuY1R5cGU6IG9wdHMuZm9ybUVuY1R5cGUsXG4gICAgICAgICAgICBmb3JtRGF0YTogdm9pZCAwLFxuICAgICAgICAgICAganNvbixcbiAgICAgICAgICAgIHRleHQ6IHZvaWQgMFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGdldEludmFsaWRCb2R5RXJyb3IoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaW52YXJpYW50KFxuICAgIHR5cGVvZiBGb3JtRGF0YSA9PT0gXCJmdW5jdGlvblwiLFxuICAgIFwiRm9ybURhdGEgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGlzIGVudmlyb25tZW50XCJcbiAgKTtcbiAgbGV0IHNlYXJjaFBhcmFtcztcbiAgbGV0IGZvcm1EYXRhO1xuICBpZiAob3B0cy5mb3JtRGF0YSkge1xuICAgIHNlYXJjaFBhcmFtcyA9IGNvbnZlcnRGb3JtRGF0YVRvU2VhcmNoUGFyYW1zKG9wdHMuZm9ybURhdGEpO1xuICAgIGZvcm1EYXRhID0gb3B0cy5mb3JtRGF0YTtcbiAgfSBlbHNlIGlmIChvcHRzLmJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YSkge1xuICAgIHNlYXJjaFBhcmFtcyA9IGNvbnZlcnRGb3JtRGF0YVRvU2VhcmNoUGFyYW1zKG9wdHMuYm9keSk7XG4gICAgZm9ybURhdGEgPSBvcHRzLmJvZHk7XG4gIH0gZWxzZSBpZiAob3B0cy5ib2R5IGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zKSB7XG4gICAgc2VhcmNoUGFyYW1zID0gb3B0cy5ib2R5O1xuICAgIGZvcm1EYXRhID0gY29udmVydFNlYXJjaFBhcmFtc1RvRm9ybURhdGEoc2VhcmNoUGFyYW1zKTtcbiAgfSBlbHNlIGlmIChvcHRzLmJvZHkgPT0gbnVsbCkge1xuICAgIHNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICBzZWFyY2hQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKG9wdHMuYm9keSk7XG4gICAgICBmb3JtRGF0YSA9IGNvbnZlcnRTZWFyY2hQYXJhbXNUb0Zvcm1EYXRhKHNlYXJjaFBhcmFtcyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGdldEludmFsaWRCb2R5RXJyb3IoKTtcbiAgICB9XG4gIH1cbiAgbGV0IHN1Ym1pc3Npb24gPSB7XG4gICAgZm9ybU1ldGhvZCxcbiAgICBmb3JtQWN0aW9uLFxuICAgIGZvcm1FbmNUeXBlOiBvcHRzICYmIG9wdHMuZm9ybUVuY1R5cGUgfHwgXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIixcbiAgICBmb3JtRGF0YSxcbiAgICBqc29uOiB2b2lkIDAsXG4gICAgdGV4dDogdm9pZCAwXG4gIH07XG4gIGlmIChpc011dGF0aW9uTWV0aG9kKHN1Ym1pc3Npb24uZm9ybU1ldGhvZCkpIHtcbiAgICByZXR1cm4geyBwYXRoLCBzdWJtaXNzaW9uIH07XG4gIH1cbiAgbGV0IHBhcnNlZFBhdGggPSBwYXJzZVBhdGgocGF0aCk7XG4gIGlmIChpc0ZldGNoZXIgJiYgcGFyc2VkUGF0aC5zZWFyY2ggJiYgaGFzTmFrZWRJbmRleFF1ZXJ5KHBhcnNlZFBhdGguc2VhcmNoKSkge1xuICAgIHNlYXJjaFBhcmFtcy5hcHBlbmQoXCJpbmRleFwiLCBcIlwiKTtcbiAgfVxuICBwYXJzZWRQYXRoLnNlYXJjaCA9IGA/JHtzZWFyY2hQYXJhbXN9YDtcbiAgcmV0dXJuIHsgcGF0aDogY3JlYXRlUGF0aChwYXJzZWRQYXRoKSwgc3VibWlzc2lvbiB9O1xufVxuZnVuY3Rpb24gZ2V0TG9hZGVyTWF0Y2hlc1VudGlsQm91bmRhcnkobWF0Y2hlcywgYm91bmRhcnlJZCwgaW5jbHVkZUJvdW5kYXJ5ID0gZmFsc2UpIHtcbiAgbGV0IGluZGV4ID0gbWF0Y2hlcy5maW5kSW5kZXgoKG0pID0+IG0ucm91dGUuaWQgPT09IGJvdW5kYXJ5SWQpO1xuICBpZiAoaW5kZXggPj0gMCkge1xuICAgIHJldHVybiBtYXRjaGVzLnNsaWNlKDAsIGluY2x1ZGVCb3VuZGFyeSA/IGluZGV4ICsgMSA6IGluZGV4KTtcbiAgfVxuICByZXR1cm4gbWF0Y2hlcztcbn1cbmZ1bmN0aW9uIGdldE1hdGNoZXNUb0xvYWQoaGlzdG9yeSwgc3RhdGUsIG1hdGNoZXMsIHN1Ym1pc3Npb24sIGxvY2F0aW9uLCBpbml0aWFsSHlkcmF0aW9uLCBpc1JldmFsaWRhdGlvblJlcXVpcmVkLCBjYW5jZWxsZWRGZXRjaGVyTG9hZHMsIGZldGNoZXJzUXVldWVkRm9yRGVsZXRpb24sIGZldGNoTG9hZE1hdGNoZXMsIGZldGNoUmVkaXJlY3RJZHMsIHJvdXRlc1RvVXNlLCBiYXNlbmFtZSwgcGVuZGluZ0FjdGlvblJlc3VsdCkge1xuICBsZXQgYWN0aW9uUmVzdWx0ID0gcGVuZGluZ0FjdGlvblJlc3VsdCA/IGlzRXJyb3JSZXN1bHQocGVuZGluZ0FjdGlvblJlc3VsdFsxXSkgPyBwZW5kaW5nQWN0aW9uUmVzdWx0WzFdLmVycm9yIDogcGVuZGluZ0FjdGlvblJlc3VsdFsxXS5kYXRhIDogdm9pZCAwO1xuICBsZXQgY3VycmVudFVybCA9IGhpc3RvcnkuY3JlYXRlVVJMKHN0YXRlLmxvY2F0aW9uKTtcbiAgbGV0IG5leHRVcmwgPSBoaXN0b3J5LmNyZWF0ZVVSTChsb2NhdGlvbik7XG4gIGxldCBib3VuZGFyeU1hdGNoZXMgPSBtYXRjaGVzO1xuICBpZiAoaW5pdGlhbEh5ZHJhdGlvbiAmJiBzdGF0ZS5lcnJvcnMpIHtcbiAgICBib3VuZGFyeU1hdGNoZXMgPSBnZXRMb2FkZXJNYXRjaGVzVW50aWxCb3VuZGFyeShcbiAgICAgIG1hdGNoZXMsXG4gICAgICBPYmplY3Qua2V5cyhzdGF0ZS5lcnJvcnMpWzBdLFxuICAgICAgdHJ1ZVxuICAgICk7XG4gIH0gZWxzZSBpZiAocGVuZGluZ0FjdGlvblJlc3VsdCAmJiBpc0Vycm9yUmVzdWx0KHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0pKSB7XG4gICAgYm91bmRhcnlNYXRjaGVzID0gZ2V0TG9hZGVyTWF0Y2hlc1VudGlsQm91bmRhcnkoXG4gICAgICBtYXRjaGVzLFxuICAgICAgcGVuZGluZ0FjdGlvblJlc3VsdFswXVxuICAgICk7XG4gIH1cbiAgbGV0IGFjdGlvblN0YXR1cyA9IHBlbmRpbmdBY3Rpb25SZXN1bHQgPyBwZW5kaW5nQWN0aW9uUmVzdWx0WzFdLnN0YXR1c0NvZGUgOiB2b2lkIDA7XG4gIGxldCBzaG91bGRTa2lwUmV2YWxpZGF0aW9uID0gYWN0aW9uU3RhdHVzICYmIGFjdGlvblN0YXR1cyA+PSA0MDA7XG4gIGxldCBuYXZpZ2F0aW9uTWF0Y2hlcyA9IGJvdW5kYXJ5TWF0Y2hlcy5maWx0ZXIoKG1hdGNoLCBpbmRleCkgPT4ge1xuICAgIGxldCB7IHJvdXRlIH0gPSBtYXRjaDtcbiAgICBpZiAocm91dGUubGF6eSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChyb3V0ZS5sb2FkZXIgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaW5pdGlhbEh5ZHJhdGlvbikge1xuICAgICAgcmV0dXJuIHNob3VsZExvYWRSb3V0ZU9uSHlkcmF0aW9uKHJvdXRlLCBzdGF0ZS5sb2FkZXJEYXRhLCBzdGF0ZS5lcnJvcnMpO1xuICAgIH1cbiAgICBpZiAoaXNOZXdMb2FkZXIoc3RhdGUubG9hZGVyRGF0YSwgc3RhdGUubWF0Y2hlc1tpbmRleF0sIG1hdGNoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGxldCBjdXJyZW50Um91dGVNYXRjaCA9IHN0YXRlLm1hdGNoZXNbaW5kZXhdO1xuICAgIGxldCBuZXh0Um91dGVNYXRjaCA9IG1hdGNoO1xuICAgIHJldHVybiBzaG91bGRSZXZhbGlkYXRlTG9hZGVyKG1hdGNoLCB7XG4gICAgICBjdXJyZW50VXJsLFxuICAgICAgY3VycmVudFBhcmFtczogY3VycmVudFJvdXRlTWF0Y2gucGFyYW1zLFxuICAgICAgbmV4dFVybCxcbiAgICAgIG5leHRQYXJhbXM6IG5leHRSb3V0ZU1hdGNoLnBhcmFtcyxcbiAgICAgIC4uLnN1Ym1pc3Npb24sXG4gICAgICBhY3Rpb25SZXN1bHQsXG4gICAgICBhY3Rpb25TdGF0dXMsXG4gICAgICBkZWZhdWx0U2hvdWxkUmV2YWxpZGF0ZTogc2hvdWxkU2tpcFJldmFsaWRhdGlvbiA/IGZhbHNlIDogKFxuICAgICAgICAvLyBGb3JjZWQgcmV2YWxpZGF0aW9uIGR1ZSB0byBzdWJtaXNzaW9uLCB1c2VSZXZhbGlkYXRvciwgb3IgWC1SZW1peC1SZXZhbGlkYXRlXG4gICAgICAgIGlzUmV2YWxpZGF0aW9uUmVxdWlyZWQgfHwgY3VycmVudFVybC5wYXRobmFtZSArIGN1cnJlbnRVcmwuc2VhcmNoID09PSBuZXh0VXJsLnBhdGhuYW1lICsgbmV4dFVybC5zZWFyY2ggfHwgLy8gU2VhcmNoIHBhcmFtcyBhZmZlY3QgYWxsIGxvYWRlcnNcbiAgICAgICAgY3VycmVudFVybC5zZWFyY2ggIT09IG5leHRVcmwuc2VhcmNoIHx8IGlzTmV3Um91dGVJbnN0YW5jZShjdXJyZW50Um91dGVNYXRjaCwgbmV4dFJvdXRlTWF0Y2gpXG4gICAgICApXG4gICAgfSk7XG4gIH0pO1xuICBsZXQgcmV2YWxpZGF0aW5nRmV0Y2hlcnMgPSBbXTtcbiAgZmV0Y2hMb2FkTWF0Y2hlcy5mb3JFYWNoKChmLCBrZXkpID0+IHtcbiAgICBpZiAoaW5pdGlhbEh5ZHJhdGlvbiB8fCAhbWF0Y2hlcy5zb21lKChtKSA9PiBtLnJvdXRlLmlkID09PSBmLnJvdXRlSWQpIHx8IGZldGNoZXJzUXVldWVkRm9yRGVsZXRpb24uaGFzKGtleSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGZldGNoZXJNYXRjaGVzID0gbWF0Y2hSb3V0ZXMocm91dGVzVG9Vc2UsIGYucGF0aCwgYmFzZW5hbWUpO1xuICAgIGlmICghZmV0Y2hlck1hdGNoZXMpIHtcbiAgICAgIHJldmFsaWRhdGluZ0ZldGNoZXJzLnB1c2goe1xuICAgICAgICBrZXksXG4gICAgICAgIHJvdXRlSWQ6IGYucm91dGVJZCxcbiAgICAgICAgcGF0aDogZi5wYXRoLFxuICAgICAgICBtYXRjaGVzOiBudWxsLFxuICAgICAgICBtYXRjaDogbnVsbCxcbiAgICAgICAgY29udHJvbGxlcjogbnVsbFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBmZXRjaGVyID0gc3RhdGUuZmV0Y2hlcnMuZ2V0KGtleSk7XG4gICAgbGV0IGZldGNoZXJNYXRjaCA9IGdldFRhcmdldE1hdGNoKGZldGNoZXJNYXRjaGVzLCBmLnBhdGgpO1xuICAgIGxldCBzaG91bGRSZXZhbGlkYXRlID0gZmFsc2U7XG4gICAgaWYgKGZldGNoUmVkaXJlY3RJZHMuaGFzKGtleSkpIHtcbiAgICAgIHNob3VsZFJldmFsaWRhdGUgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGNhbmNlbGxlZEZldGNoZXJMb2Fkcy5oYXMoa2V5KSkge1xuICAgICAgY2FuY2VsbGVkRmV0Y2hlckxvYWRzLmRlbGV0ZShrZXkpO1xuICAgICAgc2hvdWxkUmV2YWxpZGF0ZSA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChmZXRjaGVyICYmIGZldGNoZXIuc3RhdGUgIT09IFwiaWRsZVwiICYmIGZldGNoZXIuZGF0YSA9PT0gdm9pZCAwKSB7XG4gICAgICBzaG91bGRSZXZhbGlkYXRlID0gaXNSZXZhbGlkYXRpb25SZXF1aXJlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgc2hvdWxkUmV2YWxpZGF0ZSA9IHNob3VsZFJldmFsaWRhdGVMb2FkZXIoZmV0Y2hlck1hdGNoLCB7XG4gICAgICAgIGN1cnJlbnRVcmwsXG4gICAgICAgIGN1cnJlbnRQYXJhbXM6IHN0YXRlLm1hdGNoZXNbc3RhdGUubWF0Y2hlcy5sZW5ndGggLSAxXS5wYXJhbXMsXG4gICAgICAgIG5leHRVcmwsXG4gICAgICAgIG5leHRQYXJhbXM6IG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXS5wYXJhbXMsXG4gICAgICAgIC4uLnN1Ym1pc3Npb24sXG4gICAgICAgIGFjdGlvblJlc3VsdCxcbiAgICAgICAgYWN0aW9uU3RhdHVzLFxuICAgICAgICBkZWZhdWx0U2hvdWxkUmV2YWxpZGF0ZTogc2hvdWxkU2tpcFJldmFsaWRhdGlvbiA/IGZhbHNlIDogaXNSZXZhbGlkYXRpb25SZXF1aXJlZFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChzaG91bGRSZXZhbGlkYXRlKSB7XG4gICAgICByZXZhbGlkYXRpbmdGZXRjaGVycy5wdXNoKHtcbiAgICAgICAga2V5LFxuICAgICAgICByb3V0ZUlkOiBmLnJvdXRlSWQsXG4gICAgICAgIHBhdGg6IGYucGF0aCxcbiAgICAgICAgbWF0Y2hlczogZmV0Y2hlck1hdGNoZXMsXG4gICAgICAgIG1hdGNoOiBmZXRjaGVyTWF0Y2gsXG4gICAgICAgIGNvbnRyb2xsZXI6IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIFtuYXZpZ2F0aW9uTWF0Y2hlcywgcmV2YWxpZGF0aW5nRmV0Y2hlcnNdO1xufVxuZnVuY3Rpb24gc2hvdWxkTG9hZFJvdXRlT25IeWRyYXRpb24ocm91dGUsIGxvYWRlckRhdGEsIGVycm9ycykge1xuICBpZiAocm91dGUubGF6eSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICghcm91dGUubG9hZGVyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGxldCBoYXNEYXRhID0gbG9hZGVyRGF0YSAhPSBudWxsICYmIGxvYWRlckRhdGFbcm91dGUuaWRdICE9PSB2b2lkIDA7XG4gIGxldCBoYXNFcnJvciA9IGVycm9ycyAhPSBudWxsICYmIGVycm9yc1tyb3V0ZS5pZF0gIT09IHZvaWQgMDtcbiAgaWYgKCFoYXNEYXRhICYmIGhhc0Vycm9yKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0eXBlb2Ygcm91dGUubG9hZGVyID09PSBcImZ1bmN0aW9uXCIgJiYgcm91dGUubG9hZGVyLmh5ZHJhdGUgPT09IHRydWUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gIWhhc0RhdGEgJiYgIWhhc0Vycm9yO1xufVxuZnVuY3Rpb24gaXNOZXdMb2FkZXIoY3VycmVudExvYWRlckRhdGEsIGN1cnJlbnRNYXRjaCwgbWF0Y2gpIHtcbiAgbGV0IGlzTmV3ID0gKFxuICAgIC8vIFthXSAtPiBbYSwgYl1cbiAgICAhY3VycmVudE1hdGNoIHx8IC8vIFthLCBiXSAtPiBbYSwgY11cbiAgICBtYXRjaC5yb3V0ZS5pZCAhPT0gY3VycmVudE1hdGNoLnJvdXRlLmlkXG4gICk7XG4gIGxldCBpc01pc3NpbmdEYXRhID0gIWN1cnJlbnRMb2FkZXJEYXRhLmhhc093blByb3BlcnR5KG1hdGNoLnJvdXRlLmlkKTtcbiAgcmV0dXJuIGlzTmV3IHx8IGlzTWlzc2luZ0RhdGE7XG59XG5mdW5jdGlvbiBpc05ld1JvdXRlSW5zdGFuY2UoY3VycmVudE1hdGNoLCBtYXRjaCkge1xuICBsZXQgY3VycmVudFBhdGggPSBjdXJyZW50TWF0Y2gucm91dGUucGF0aDtcbiAgcmV0dXJuIChcbiAgICAvLyBwYXJhbSBjaGFuZ2UgZm9yIHRoaXMgbWF0Y2gsIC91c2Vycy8xMjMgLT4gL3VzZXJzLzQ1NlxuICAgIGN1cnJlbnRNYXRjaC5wYXRobmFtZSAhPT0gbWF0Y2gucGF0aG5hbWUgfHwgLy8gc3BsYXQgcGFyYW0gY2hhbmdlZCwgd2hpY2ggaXMgbm90IHByZXNlbnQgaW4gbWF0Y2gucGF0aFxuICAgIC8vIGUuZy4gL2ZpbGVzL2ltYWdlcy9hdmF0YXIuanBnIC0+IGZpbGVzL2ZpbmFuY2VzLnhsc1xuICAgIGN1cnJlbnRQYXRoICE9IG51bGwgJiYgY3VycmVudFBhdGguZW5kc1dpdGgoXCIqXCIpICYmIGN1cnJlbnRNYXRjaC5wYXJhbXNbXCIqXCJdICE9PSBtYXRjaC5wYXJhbXNbXCIqXCJdXG4gICk7XG59XG5mdW5jdGlvbiBzaG91bGRSZXZhbGlkYXRlTG9hZGVyKGxvYWRlck1hdGNoLCBhcmcpIHtcbiAgaWYgKGxvYWRlck1hdGNoLnJvdXRlLnNob3VsZFJldmFsaWRhdGUpIHtcbiAgICBsZXQgcm91dGVDaG9pY2UgPSBsb2FkZXJNYXRjaC5yb3V0ZS5zaG91bGRSZXZhbGlkYXRlKGFyZyk7XG4gICAgaWYgKHR5cGVvZiByb3V0ZUNob2ljZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHJldHVybiByb3V0ZUNob2ljZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFyZy5kZWZhdWx0U2hvdWxkUmV2YWxpZGF0ZTtcbn1cbmZ1bmN0aW9uIHBhdGNoUm91dGVzSW1wbChyb3V0ZUlkLCBjaGlsZHJlbiwgcm91dGVzVG9Vc2UsIG1hbmlmZXN0LCBtYXBSb3V0ZVByb3BlcnRpZXMyKSB7XG4gIGxldCBjaGlsZHJlblRvUGF0Y2g7XG4gIGlmIChyb3V0ZUlkKSB7XG4gICAgbGV0IHJvdXRlID0gbWFuaWZlc3Rbcm91dGVJZF07XG4gICAgaW52YXJpYW50KFxuICAgICAgcm91dGUsXG4gICAgICBgTm8gcm91dGUgZm91bmQgdG8gcGF0Y2ggY2hpbGRyZW4gaW50bzogcm91dGVJZCA9ICR7cm91dGVJZH1gXG4gICAgKTtcbiAgICBpZiAoIXJvdXRlLmNoaWxkcmVuKSB7XG4gICAgICByb3V0ZS5jaGlsZHJlbiA9IFtdO1xuICAgIH1cbiAgICBjaGlsZHJlblRvUGF0Y2ggPSByb3V0ZS5jaGlsZHJlbjtcbiAgfSBlbHNlIHtcbiAgICBjaGlsZHJlblRvUGF0Y2ggPSByb3V0ZXNUb1VzZTtcbiAgfVxuICBsZXQgdW5pcXVlQ2hpbGRyZW4gPSBjaGlsZHJlbi5maWx0ZXIoXG4gICAgKG5ld1JvdXRlKSA9PiAhY2hpbGRyZW5Ub1BhdGNoLnNvbWUoXG4gICAgICAoZXhpc3RpbmdSb3V0ZSkgPT4gaXNTYW1lUm91dGUobmV3Um91dGUsIGV4aXN0aW5nUm91dGUpXG4gICAgKVxuICApO1xuICBsZXQgbmV3Um91dGVzID0gY29udmVydFJvdXRlc1RvRGF0YVJvdXRlcyhcbiAgICB1bmlxdWVDaGlsZHJlbixcbiAgICBtYXBSb3V0ZVByb3BlcnRpZXMyLFxuICAgIFtyb3V0ZUlkIHx8IFwiX1wiLCBcInBhdGNoXCIsIFN0cmluZyhjaGlsZHJlblRvUGF0Y2g/Lmxlbmd0aCB8fCBcIjBcIildLFxuICAgIG1hbmlmZXN0XG4gICk7XG4gIGNoaWxkcmVuVG9QYXRjaC5wdXNoKC4uLm5ld1JvdXRlcyk7XG59XG5mdW5jdGlvbiBpc1NhbWVSb3V0ZShuZXdSb3V0ZSwgZXhpc3RpbmdSb3V0ZSkge1xuICBpZiAoXCJpZFwiIGluIG5ld1JvdXRlICYmIFwiaWRcIiBpbiBleGlzdGluZ1JvdXRlICYmIG5ld1JvdXRlLmlkID09PSBleGlzdGluZ1JvdXRlLmlkKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKCEobmV3Um91dGUuaW5kZXggPT09IGV4aXN0aW5nUm91dGUuaW5kZXggJiYgbmV3Um91dGUucGF0aCA9PT0gZXhpc3RpbmdSb3V0ZS5wYXRoICYmIG5ld1JvdXRlLmNhc2VTZW5zaXRpdmUgPT09IGV4aXN0aW5nUm91dGUuY2FzZVNlbnNpdGl2ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKCghbmV3Um91dGUuY2hpbGRyZW4gfHwgbmV3Um91dGUuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSAmJiAoIWV4aXN0aW5nUm91dGUuY2hpbGRyZW4gfHwgZXhpc3RpbmdSb3V0ZS5jaGlsZHJlbi5sZW5ndGggPT09IDApKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIG5ld1JvdXRlLmNoaWxkcmVuLmV2ZXJ5KFxuICAgIChhQ2hpbGQsIGkpID0+IGV4aXN0aW5nUm91dGUuY2hpbGRyZW4/LnNvbWUoKGJDaGlsZCkgPT4gaXNTYW1lUm91dGUoYUNoaWxkLCBiQ2hpbGQpKVxuICApO1xufVxuYXN5bmMgZnVuY3Rpb24gbG9hZExhenlSb3V0ZU1vZHVsZShyb3V0ZSwgbWFwUm91dGVQcm9wZXJ0aWVzMiwgbWFuaWZlc3QpIHtcbiAgaWYgKCFyb3V0ZS5sYXp5KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCBsYXp5Um91dGUgPSBhd2FpdCByb3V0ZS5sYXp5KCk7XG4gIGlmICghcm91dGUubGF6eSkge1xuICAgIHJldHVybjtcbiAgfVxuICBsZXQgcm91dGVUb1VwZGF0ZSA9IG1hbmlmZXN0W3JvdXRlLmlkXTtcbiAgaW52YXJpYW50KHJvdXRlVG9VcGRhdGUsIFwiTm8gcm91dGUgZm91bmQgaW4gbWFuaWZlc3RcIik7XG4gIGxldCByb3V0ZVVwZGF0ZXMgPSB7fTtcbiAgZm9yIChsZXQgbGF6eVJvdXRlUHJvcGVydHkgaW4gbGF6eVJvdXRlKSB7XG4gICAgbGV0IHN0YXRpY1JvdXRlVmFsdWUgPSByb3V0ZVRvVXBkYXRlW2xhenlSb3V0ZVByb3BlcnR5XTtcbiAgICBsZXQgaXNQcm9wZXJ0eVN0YXRpY2FsbHlEZWZpbmVkID0gc3RhdGljUm91dGVWYWx1ZSAhPT0gdm9pZCAwICYmIC8vIFRoaXMgcHJvcGVydHkgaXNuJ3Qgc3RhdGljIHNpbmNlIGl0IHNob3VsZCBhbHdheXMgYmUgdXBkYXRlZCBiYXNlZFxuICAgIC8vIG9uIHRoZSByb3V0ZSB1cGRhdGVzXG4gICAgbGF6eVJvdXRlUHJvcGVydHkgIT09IFwiaGFzRXJyb3JCb3VuZGFyeVwiO1xuICAgIHdhcm5pbmcoXG4gICAgICAhaXNQcm9wZXJ0eVN0YXRpY2FsbHlEZWZpbmVkLFxuICAgICAgYFJvdXRlIFwiJHtyb3V0ZVRvVXBkYXRlLmlkfVwiIGhhcyBhIHN0YXRpYyBwcm9wZXJ0eSBcIiR7bGF6eVJvdXRlUHJvcGVydHl9XCIgZGVmaW5lZCBidXQgaXRzIGxhenkgZnVuY3Rpb24gaXMgYWxzbyByZXR1cm5pbmcgYSB2YWx1ZSBmb3IgdGhpcyBwcm9wZXJ0eS4gVGhlIGxhenkgcm91dGUgcHJvcGVydHkgXCIke2xhenlSb3V0ZVByb3BlcnR5fVwiIHdpbGwgYmUgaWdub3JlZC5gXG4gICAgKTtcbiAgICBpZiAoIWlzUHJvcGVydHlTdGF0aWNhbGx5RGVmaW5lZCAmJiAhaW1tdXRhYmxlUm91dGVLZXlzLmhhcyhsYXp5Um91dGVQcm9wZXJ0eSkpIHtcbiAgICAgIHJvdXRlVXBkYXRlc1tsYXp5Um91dGVQcm9wZXJ0eV0gPSBsYXp5Um91dGVbbGF6eVJvdXRlUHJvcGVydHldO1xuICAgIH1cbiAgfVxuICBPYmplY3QuYXNzaWduKHJvdXRlVG9VcGRhdGUsIHJvdXRlVXBkYXRlcyk7XG4gIE9iamVjdC5hc3NpZ24ocm91dGVUb1VwZGF0ZSwge1xuICAgIC8vIFRvIGtlZXAgdGhpbmdzIGZyYW1ld29yayBhZ25vc3RpYywgd2UgdXNlIHRoZSBwcm92aWRlZCBgbWFwUm91dGVQcm9wZXJ0aWVzYFxuICAgIC8vIGZ1bmN0aW9uIHRvIHNldCB0aGUgZnJhbWV3b3JrLWF3YXJlIHByb3BlcnRpZXMgKGBlbGVtZW50YC9gaGFzRXJyb3JCb3VuZGFyeWApXG4gICAgLy8gc2luY2UgdGhlIGxvZ2ljIHdpbGwgZGlmZmVyIGJldHdlZW4gZnJhbWV3b3Jrcy5cbiAgICAuLi5tYXBSb3V0ZVByb3BlcnRpZXMyKHJvdXRlVG9VcGRhdGUpLFxuICAgIGxhenk6IHZvaWQgMFxuICB9KTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGRlZmF1bHREYXRhU3RyYXRlZ3koe1xuICBtYXRjaGVzXG59KSB7XG4gIGxldCBtYXRjaGVzVG9Mb2FkID0gbWF0Y2hlcy5maWx0ZXIoKG0pID0+IG0uc2hvdWxkTG9hZCk7XG4gIGxldCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwobWF0Y2hlc1RvTG9hZC5tYXAoKG0pID0+IG0ucmVzb2x2ZSgpKSk7XG4gIHJldHVybiByZXN1bHRzLnJlZHVjZShcbiAgICAoYWNjLCByZXN1bHQsIGkpID0+IE9iamVjdC5hc3NpZ24oYWNjLCB7IFttYXRjaGVzVG9Mb2FkW2ldLnJvdXRlLmlkXTogcmVzdWx0IH0pLFxuICAgIHt9XG4gICk7XG59XG5hc3luYyBmdW5jdGlvbiBjYWxsRGF0YVN0cmF0ZWd5SW1wbChkYXRhU3RyYXRlZ3lJbXBsLCB0eXBlLCBzdGF0ZSwgcmVxdWVzdCwgbWF0Y2hlc1RvTG9hZCwgbWF0Y2hlcywgZmV0Y2hlcktleSwgbWFuaWZlc3QsIG1hcFJvdXRlUHJvcGVydGllczIsIHJlcXVlc3RDb250ZXh0KSB7XG4gIGxldCBsb2FkUm91dGVEZWZpbml0aW9uc1Byb21pc2VzID0gbWF0Y2hlcy5tYXAoXG4gICAgKG0pID0+IG0ucm91dGUubGF6eSA/IGxvYWRMYXp5Um91dGVNb2R1bGUobS5yb3V0ZSwgbWFwUm91dGVQcm9wZXJ0aWVzMiwgbWFuaWZlc3QpIDogdm9pZCAwXG4gICk7XG4gIGxldCBkc01hdGNoZXMgPSBtYXRjaGVzLm1hcCgobWF0Y2gsIGkpID0+IHtcbiAgICBsZXQgbG9hZFJvdXRlUHJvbWlzZSA9IGxvYWRSb3V0ZURlZmluaXRpb25zUHJvbWlzZXNbaV07XG4gICAgbGV0IHNob3VsZExvYWQgPSBtYXRjaGVzVG9Mb2FkLnNvbWUoKG0pID0+IG0ucm91dGUuaWQgPT09IG1hdGNoLnJvdXRlLmlkKTtcbiAgICBsZXQgcmVzb2x2ZSA9IGFzeW5jIChoYW5kbGVyT3ZlcnJpZGUpID0+IHtcbiAgICAgIGlmIChoYW5kbGVyT3ZlcnJpZGUgJiYgcmVxdWVzdC5tZXRob2QgPT09IFwiR0VUXCIgJiYgKG1hdGNoLnJvdXRlLmxhenkgfHwgbWF0Y2gucm91dGUubG9hZGVyKSkge1xuICAgICAgICBzaG91bGRMb2FkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzaG91bGRMb2FkID8gY2FsbExvYWRlck9yQWN0aW9uKFxuICAgICAgICB0eXBlLFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBtYXRjaCxcbiAgICAgICAgbG9hZFJvdXRlUHJvbWlzZSxcbiAgICAgICAgaGFuZGxlck92ZXJyaWRlLFxuICAgICAgICByZXF1ZXN0Q29udGV4dFxuICAgICAgKSA6IFByb21pc2UucmVzb2x2ZSh7IHR5cGU6IFwiZGF0YVwiIC8qIGRhdGEgKi8sIHJlc3VsdDogdm9pZCAwIH0pO1xuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm1hdGNoLFxuICAgICAgc2hvdWxkTG9hZCxcbiAgICAgIHJlc29sdmVcbiAgICB9O1xuICB9KTtcbiAgbGV0IHJlc3VsdHMgPSBhd2FpdCBkYXRhU3RyYXRlZ3lJbXBsKHtcbiAgICBtYXRjaGVzOiBkc01hdGNoZXMsXG4gICAgcmVxdWVzdCxcbiAgICBwYXJhbXM6IG1hdGNoZXNbMF0ucGFyYW1zLFxuICAgIGZldGNoZXJLZXksXG4gICAgY29udGV4dDogcmVxdWVzdENvbnRleHRcbiAgfSk7XG4gIHRyeSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwobG9hZFJvdXRlRGVmaW5pdGlvbnNQcm9taXNlcyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuICByZXR1cm4gcmVzdWx0cztcbn1cbmFzeW5jIGZ1bmN0aW9uIGNhbGxMb2FkZXJPckFjdGlvbih0eXBlLCByZXF1ZXN0LCBtYXRjaCwgbG9hZFJvdXRlUHJvbWlzZSwgaGFuZGxlck92ZXJyaWRlLCBzdGF0aWNDb250ZXh0KSB7XG4gIGxldCByZXN1bHQ7XG4gIGxldCBvblJlamVjdDtcbiAgbGV0IHJ1bkhhbmRsZXIgPSAoaGFuZGxlcikgPT4ge1xuICAgIGxldCByZWplY3Q7XG4gICAgbGV0IGFib3J0UHJvbWlzZSA9IG5ldyBQcm9taXNlKChfLCByKSA9PiByZWplY3QgPSByKTtcbiAgICBvblJlamVjdCA9ICgpID0+IHJlamVjdCgpO1xuICAgIHJlcXVlc3Quc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCBvblJlamVjdCk7XG4gICAgbGV0IGFjdHVhbEhhbmRsZXIgPSAoY3R4KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGhhbmRsZXIgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFlvdSBjYW5ub3QgY2FsbCB0aGUgaGFuZGxlciBmb3IgYSByb3V0ZSB3aGljaCBkZWZpbmVzIGEgYm9vbGVhbiBcIiR7dHlwZX1cIiBbcm91dGVJZDogJHttYXRjaC5yb3V0ZS5pZH1dYFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYW5kbGVyKFxuICAgICAgICB7XG4gICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICBwYXJhbXM6IG1hdGNoLnBhcmFtcyxcbiAgICAgICAgICBjb250ZXh0OiBzdGF0aWNDb250ZXh0XG4gICAgICAgIH0sXG4gICAgICAgIC4uLmN0eCAhPT0gdm9pZCAwID8gW2N0eF0gOiBbXVxuICAgICAgKTtcbiAgICB9O1xuICAgIGxldCBoYW5kbGVyUHJvbWlzZSA9IChhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBsZXQgdmFsID0gYXdhaXQgKGhhbmRsZXJPdmVycmlkZSA/IGhhbmRsZXJPdmVycmlkZSgoY3R4KSA9PiBhY3R1YWxIYW5kbGVyKGN0eCkpIDogYWN0dWFsSGFuZGxlcigpKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJkYXRhXCIsIHJlc3VsdDogdmFsIH07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwiZXJyb3JcIiwgcmVzdWx0OiBlIH07XG4gICAgICB9XG4gICAgfSkoKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFtoYW5kbGVyUHJvbWlzZSwgYWJvcnRQcm9taXNlXSk7XG4gIH07XG4gIHRyeSB7XG4gICAgbGV0IGhhbmRsZXIgPSBtYXRjaC5yb3V0ZVt0eXBlXTtcbiAgICBpZiAobG9hZFJvdXRlUHJvbWlzZSkge1xuICAgICAgaWYgKGhhbmRsZXIpIHtcbiAgICAgICAgbGV0IGhhbmRsZXJFcnJvcjtcbiAgICAgICAgbGV0IFt2YWx1ZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgLy8gSWYgdGhlIGhhbmRsZXIgdGhyb3dzLCBkb24ndCBsZXQgaXQgaW1tZWRpYXRlbHkgYnViYmxlIG91dCxcbiAgICAgICAgICAvLyBzaW5jZSB3ZSBuZWVkIHRvIGxldCB0aGUgbGF6eSgpIGV4ZWN1dGlvbiBmaW5pc2ggc28gd2Uga25vdyBpZiB0aGlzXG4gICAgICAgICAgLy8gcm91dGUgaGFzIGEgYm91bmRhcnkgdGhhdCBjYW4gaGFuZGxlIHRoZSBlcnJvclxuICAgICAgICAgIHJ1bkhhbmRsZXIoaGFuZGxlcikuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgIGhhbmRsZXJFcnJvciA9IGU7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgbG9hZFJvdXRlUHJvbWlzZVxuICAgICAgICBdKTtcbiAgICAgICAgaWYgKGhhbmRsZXJFcnJvciAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgdGhyb3cgaGFuZGxlckVycm9yO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgbG9hZFJvdXRlUHJvbWlzZTtcbiAgICAgICAgaGFuZGxlciA9IG1hdGNoLnJvdXRlW3R5cGVdO1xuICAgICAgICBpZiAoaGFuZGxlcikge1xuICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IHJ1bkhhbmRsZXIoaGFuZGxlcik7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJhY3Rpb25cIikge1xuICAgICAgICAgIGxldCB1cmwgPSBuZXcgVVJMKHJlcXVlc3QudXJsKTtcbiAgICAgICAgICBsZXQgcGF0aG5hbWUgPSB1cmwucGF0aG5hbWUgKyB1cmwuc2VhcmNoO1xuICAgICAgICAgIHRocm93IGdldEludGVybmFsUm91dGVyRXJyb3IoNDA1LCB7XG4gICAgICAgICAgICBtZXRob2Q6IHJlcXVlc3QubWV0aG9kLFxuICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICByb3V0ZUlkOiBtYXRjaC5yb3V0ZS5pZFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB7IHR5cGU6IFwiZGF0YVwiIC8qIGRhdGEgKi8sIHJlc3VsdDogdm9pZCAwIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFoYW5kbGVyKSB7XG4gICAgICBsZXQgdXJsID0gbmV3IFVSTChyZXF1ZXN0LnVybCk7XG4gICAgICBsZXQgcGF0aG5hbWUgPSB1cmwucGF0aG5hbWUgKyB1cmwuc2VhcmNoO1xuICAgICAgdGhyb3cgZ2V0SW50ZXJuYWxSb3V0ZXJFcnJvcig0MDQsIHtcbiAgICAgICAgcGF0aG5hbWVcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCBydW5IYW5kbGVyKGhhbmRsZXIpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB7IHR5cGU6IFwiZXJyb3JcIiAvKiBlcnJvciAqLywgcmVzdWx0OiBlIH07XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKG9uUmVqZWN0KSB7XG4gICAgICByZXF1ZXN0LnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgb25SZWplY3QpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuYXN5bmMgZnVuY3Rpb24gY29udmVydERhdGFTdHJhdGVneVJlc3VsdFRvRGF0YVJlc3VsdChkYXRhU3RyYXRlZ3lSZXN1bHQpIHtcbiAgbGV0IHsgcmVzdWx0LCB0eXBlIH0gPSBkYXRhU3RyYXRlZ3lSZXN1bHQ7XG4gIGlmIChpc1Jlc3BvbnNlKHJlc3VsdCkpIHtcbiAgICBsZXQgZGF0YTI7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBjb250ZW50VHlwZSA9IHJlc3VsdC5oZWFkZXJzLmdldChcIkNvbnRlbnQtVHlwZVwiKTtcbiAgICAgIGlmIChjb250ZW50VHlwZSAmJiAvXFxiYXBwbGljYXRpb25cXC9qc29uXFxiLy50ZXN0KGNvbnRlbnRUeXBlKSkge1xuICAgICAgICBpZiAocmVzdWx0LmJvZHkgPT0gbnVsbCkge1xuICAgICAgICAgIGRhdGEyID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkYXRhMiA9IGF3YWl0IHJlc3VsdC5qc29uKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGEyID0gYXdhaXQgcmVzdWx0LnRleHQoKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcImVycm9yXCIgLyogZXJyb3IgKi8sIGVycm9yOiBlIH07XG4gICAgfVxuICAgIGlmICh0eXBlID09PSBcImVycm9yXCIgLyogZXJyb3IgKi8pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwiZXJyb3JcIiAvKiBlcnJvciAqLyxcbiAgICAgICAgZXJyb3I6IG5ldyBFcnJvclJlc3BvbnNlSW1wbChyZXN1bHQuc3RhdHVzLCByZXN1bHQuc3RhdHVzVGV4dCwgZGF0YTIpLFxuICAgICAgICBzdGF0dXNDb2RlOiByZXN1bHQuc3RhdHVzLFxuICAgICAgICBoZWFkZXJzOiByZXN1bHQuaGVhZGVyc1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiZGF0YVwiIC8qIGRhdGEgKi8sXG4gICAgICBkYXRhOiBkYXRhMixcbiAgICAgIHN0YXR1c0NvZGU6IHJlc3VsdC5zdGF0dXMsXG4gICAgICBoZWFkZXJzOiByZXN1bHQuaGVhZGVyc1xuICAgIH07XG4gIH1cbiAgaWYgKHR5cGUgPT09IFwiZXJyb3JcIiAvKiBlcnJvciAqLykge1xuICAgIGlmIChpc0RhdGFXaXRoUmVzcG9uc2VJbml0KHJlc3VsdCkpIHtcbiAgICAgIGlmIChyZXN1bHQuZGF0YSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogXCJlcnJvclwiIC8qIGVycm9yICovLFxuICAgICAgICAgIGVycm9yOiByZXN1bHQuZGF0YSxcbiAgICAgICAgICBzdGF0dXNDb2RlOiByZXN1bHQuaW5pdD8uc3RhdHVzXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXN1bHQgPSBuZXcgRXJyb3JSZXNwb25zZUltcGwoXG4gICAgICAgIHJlc3VsdC5pbml0Py5zdGF0dXMgfHwgNTAwLFxuICAgICAgICB2b2lkIDAsXG4gICAgICAgIHJlc3VsdC5kYXRhXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJlcnJvclwiIC8qIGVycm9yICovLFxuICAgICAgZXJyb3I6IHJlc3VsdCxcbiAgICAgIHN0YXR1c0NvZGU6IGlzUm91dGVFcnJvclJlc3BvbnNlKHJlc3VsdCkgPyByZXN1bHQuc3RhdHVzIDogdm9pZCAwXG4gICAgfTtcbiAgfVxuICBpZiAoaXNEYXRhV2l0aFJlc3BvbnNlSW5pdChyZXN1bHQpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiZGF0YVwiIC8qIGRhdGEgKi8sXG4gICAgICBkYXRhOiByZXN1bHQuZGF0YSxcbiAgICAgIHN0YXR1c0NvZGU6IHJlc3VsdC5pbml0Py5zdGF0dXMsXG4gICAgICBoZWFkZXJzOiByZXN1bHQuaW5pdD8uaGVhZGVycyA/IG5ldyBIZWFkZXJzKHJlc3VsdC5pbml0LmhlYWRlcnMpIDogdm9pZCAwXG4gICAgfTtcbiAgfVxuICByZXR1cm4geyB0eXBlOiBcImRhdGFcIiAvKiBkYXRhICovLCBkYXRhOiByZXN1bHQgfTtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZVJlbGF0aXZlUm91dGluZ1JlZGlyZWN0UmVzcG9uc2UocmVzcG9uc2UsIHJlcXVlc3QsIHJvdXRlSWQsIG1hdGNoZXMsIGJhc2VuYW1lKSB7XG4gIGxldCBsb2NhdGlvbiA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KFwiTG9jYXRpb25cIik7XG4gIGludmFyaWFudChcbiAgICBsb2NhdGlvbixcbiAgICBcIlJlZGlyZWN0cyByZXR1cm5lZC90aHJvd24gZnJvbSBsb2FkZXJzL2FjdGlvbnMgbXVzdCBoYXZlIGEgTG9jYXRpb24gaGVhZGVyXCJcbiAgKTtcbiAgaWYgKCFBQlNPTFVURV9VUkxfUkVHRVgudGVzdChsb2NhdGlvbikpIHtcbiAgICBsZXQgdHJpbW1lZE1hdGNoZXMgPSBtYXRjaGVzLnNsaWNlKFxuICAgICAgMCxcbiAgICAgIG1hdGNoZXMuZmluZEluZGV4KChtKSA9PiBtLnJvdXRlLmlkID09PSByb3V0ZUlkKSArIDFcbiAgICApO1xuICAgIGxvY2F0aW9uID0gbm9ybWFsaXplVG8oXG4gICAgICBuZXcgVVJMKHJlcXVlc3QudXJsKSxcbiAgICAgIHRyaW1tZWRNYXRjaGVzLFxuICAgICAgYmFzZW5hbWUsXG4gICAgICBsb2NhdGlvblxuICAgICk7XG4gICAgcmVzcG9uc2UuaGVhZGVycy5zZXQoXCJMb2NhdGlvblwiLCBsb2NhdGlvbik7XG4gIH1cbiAgcmV0dXJuIHJlc3BvbnNlO1xufVxuZnVuY3Rpb24gbm9ybWFsaXplUmVkaXJlY3RMb2NhdGlvbihsb2NhdGlvbiwgY3VycmVudFVybCwgYmFzZW5hbWUpIHtcbiAgaWYgKEFCU09MVVRFX1VSTF9SRUdFWC50ZXN0KGxvY2F0aW9uKSkge1xuICAgIGxldCBub3JtYWxpemVkTG9jYXRpb24gPSBsb2NhdGlvbjtcbiAgICBsZXQgdXJsID0gbm9ybWFsaXplZExvY2F0aW9uLnN0YXJ0c1dpdGgoXCIvL1wiKSA/IG5ldyBVUkwoY3VycmVudFVybC5wcm90b2NvbCArIG5vcm1hbGl6ZWRMb2NhdGlvbikgOiBuZXcgVVJMKG5vcm1hbGl6ZWRMb2NhdGlvbik7XG4gICAgbGV0IGlzU2FtZUJhc2VuYW1lID0gc3RyaXBCYXNlbmFtZSh1cmwucGF0aG5hbWUsIGJhc2VuYW1lKSAhPSBudWxsO1xuICAgIGlmICh1cmwub3JpZ2luID09PSBjdXJyZW50VXJsLm9yaWdpbiAmJiBpc1NhbWVCYXNlbmFtZSkge1xuICAgICAgcmV0dXJuIHVybC5wYXRobmFtZSArIHVybC5zZWFyY2ggKyB1cmwuaGFzaDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxvY2F0aW9uO1xufVxuZnVuY3Rpb24gY3JlYXRlQ2xpZW50U2lkZVJlcXVlc3QoaGlzdG9yeSwgbG9jYXRpb24sIHNpZ25hbCwgc3VibWlzc2lvbikge1xuICBsZXQgdXJsID0gaGlzdG9yeS5jcmVhdGVVUkwoc3RyaXBIYXNoRnJvbVBhdGgobG9jYXRpb24pKS50b1N0cmluZygpO1xuICBsZXQgaW5pdCA9IHsgc2lnbmFsIH07XG4gIGlmIChzdWJtaXNzaW9uICYmIGlzTXV0YXRpb25NZXRob2Qoc3VibWlzc2lvbi5mb3JtTWV0aG9kKSkge1xuICAgIGxldCB7IGZvcm1NZXRob2QsIGZvcm1FbmNUeXBlIH0gPSBzdWJtaXNzaW9uO1xuICAgIGluaXQubWV0aG9kID0gZm9ybU1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuICAgIGlmIChmb3JtRW5jVHlwZSA9PT0gXCJhcHBsaWNhdGlvbi9qc29uXCIpIHtcbiAgICAgIGluaXQuaGVhZGVycyA9IG5ldyBIZWFkZXJzKHsgXCJDb250ZW50LVR5cGVcIjogZm9ybUVuY1R5cGUgfSk7XG4gICAgICBpbml0LmJvZHkgPSBKU09OLnN0cmluZ2lmeShzdWJtaXNzaW9uLmpzb24pO1xuICAgIH0gZWxzZSBpZiAoZm9ybUVuY1R5cGUgPT09IFwidGV4dC9wbGFpblwiKSB7XG4gICAgICBpbml0LmJvZHkgPSBzdWJtaXNzaW9uLnRleHQ7XG4gICAgfSBlbHNlIGlmIChmb3JtRW5jVHlwZSA9PT0gXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIiAmJiBzdWJtaXNzaW9uLmZvcm1EYXRhKSB7XG4gICAgICBpbml0LmJvZHkgPSBjb252ZXJ0Rm9ybURhdGFUb1NlYXJjaFBhcmFtcyhzdWJtaXNzaW9uLmZvcm1EYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5pdC5ib2R5ID0gc3VibWlzc2lvbi5mb3JtRGF0YTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KHVybCwgaW5pdCk7XG59XG5mdW5jdGlvbiBjb252ZXJ0Rm9ybURhdGFUb1NlYXJjaFBhcmFtcyhmb3JtRGF0YSkge1xuICBsZXQgc2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgZm9ybURhdGEuZW50cmllcygpKSB7XG4gICAgc2VhcmNoUGFyYW1zLmFwcGVuZChrZXksIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IHZhbHVlIDogdmFsdWUubmFtZSk7XG4gIH1cbiAgcmV0dXJuIHNlYXJjaFBhcmFtcztcbn1cbmZ1bmN0aW9uIGNvbnZlcnRTZWFyY2hQYXJhbXNUb0Zvcm1EYXRhKHNlYXJjaFBhcmFtcykge1xuICBsZXQgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIHNlYXJjaFBhcmFtcy5lbnRyaWVzKCkpIHtcbiAgICBmb3JtRGF0YS5hcHBlbmQoa2V5LCB2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGZvcm1EYXRhO1xufVxuZnVuY3Rpb24gcHJvY2Vzc1JvdXRlTG9hZGVyRGF0YShtYXRjaGVzLCByZXN1bHRzLCBwZW5kaW5nQWN0aW9uUmVzdWx0LCBpc1N0YXRpY0hhbmRsZXIgPSBmYWxzZSwgc2tpcExvYWRlckVycm9yQnViYmxpbmcgPSBmYWxzZSkge1xuICBsZXQgbG9hZGVyRGF0YSA9IHt9O1xuICBsZXQgZXJyb3JzID0gbnVsbDtcbiAgbGV0IHN0YXR1c0NvZGU7XG4gIGxldCBmb3VuZEVycm9yID0gZmFsc2U7XG4gIGxldCBsb2FkZXJIZWFkZXJzID0ge307XG4gIGxldCBwZW5kaW5nRXJyb3IgPSBwZW5kaW5nQWN0aW9uUmVzdWx0ICYmIGlzRXJyb3JSZXN1bHQocGVuZGluZ0FjdGlvblJlc3VsdFsxXSkgPyBwZW5kaW5nQWN0aW9uUmVzdWx0WzFdLmVycm9yIDogdm9pZCAwO1xuICBtYXRjaGVzLmZvckVhY2goKG1hdGNoKSA9PiB7XG4gICAgaWYgKCEobWF0Y2gucm91dGUuaWQgaW4gcmVzdWx0cykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGlkID0gbWF0Y2gucm91dGUuaWQ7XG4gICAgbGV0IHJlc3VsdCA9IHJlc3VsdHNbaWRdO1xuICAgIGludmFyaWFudChcbiAgICAgICFpc1JlZGlyZWN0UmVzdWx0KHJlc3VsdCksXG4gICAgICBcIkNhbm5vdCBoYW5kbGUgcmVkaXJlY3QgcmVzdWx0cyBpbiBwcm9jZXNzTG9hZGVyRGF0YVwiXG4gICAgKTtcbiAgICBpZiAoaXNFcnJvclJlc3VsdChyZXN1bHQpKSB7XG4gICAgICBsZXQgZXJyb3IgPSByZXN1bHQuZXJyb3I7XG4gICAgICBpZiAocGVuZGluZ0Vycm9yICE9PSB2b2lkIDApIHtcbiAgICAgICAgZXJyb3IgPSBwZW5kaW5nRXJyb3I7XG4gICAgICAgIHBlbmRpbmdFcnJvciA9IHZvaWQgMDtcbiAgICAgIH1cbiAgICAgIGVycm9ycyA9IGVycm9ycyB8fCB7fTtcbiAgICAgIGlmIChza2lwTG9hZGVyRXJyb3JCdWJibGluZykge1xuICAgICAgICBlcnJvcnNbaWRdID0gZXJyb3I7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgYm91bmRhcnlNYXRjaCA9IGZpbmROZWFyZXN0Qm91bmRhcnkobWF0Y2hlcywgaWQpO1xuICAgICAgICBpZiAoZXJyb3JzW2JvdW5kYXJ5TWF0Y2gucm91dGUuaWRdID09IG51bGwpIHtcbiAgICAgICAgICBlcnJvcnNbYm91bmRhcnlNYXRjaC5yb3V0ZS5pZF0gPSBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFpc1N0YXRpY0hhbmRsZXIpIHtcbiAgICAgICAgbG9hZGVyRGF0YVtpZF0gPSBSZXNldExvYWRlckRhdGFTeW1ib2w7XG4gICAgICB9XG4gICAgICBpZiAoIWZvdW5kRXJyb3IpIHtcbiAgICAgICAgZm91bmRFcnJvciA9IHRydWU7XG4gICAgICAgIHN0YXR1c0NvZGUgPSBpc1JvdXRlRXJyb3JSZXNwb25zZShyZXN1bHQuZXJyb3IpID8gcmVzdWx0LmVycm9yLnN0YXR1cyA6IDUwMDtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQuaGVhZGVycykge1xuICAgICAgICBsb2FkZXJIZWFkZXJzW2lkXSA9IHJlc3VsdC5oZWFkZXJzO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsb2FkZXJEYXRhW2lkXSA9IHJlc3VsdC5kYXRhO1xuICAgICAgaWYgKHJlc3VsdC5zdGF0dXNDb2RlICYmIHJlc3VsdC5zdGF0dXNDb2RlICE9PSAyMDAgJiYgIWZvdW5kRXJyb3IpIHtcbiAgICAgICAgc3RhdHVzQ29kZSA9IHJlc3VsdC5zdGF0dXNDb2RlO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdC5oZWFkZXJzKSB7XG4gICAgICAgIGxvYWRlckhlYWRlcnNbaWRdID0gcmVzdWx0LmhlYWRlcnM7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgaWYgKHBlbmRpbmdFcnJvciAhPT0gdm9pZCAwICYmIHBlbmRpbmdBY3Rpb25SZXN1bHQpIHtcbiAgICBlcnJvcnMgPSB7IFtwZW5kaW5nQWN0aW9uUmVzdWx0WzBdXTogcGVuZGluZ0Vycm9yIH07XG4gICAgbG9hZGVyRGF0YVtwZW5kaW5nQWN0aW9uUmVzdWx0WzBdXSA9IHZvaWQgMDtcbiAgfVxuICByZXR1cm4ge1xuICAgIGxvYWRlckRhdGEsXG4gICAgZXJyb3JzLFxuICAgIHN0YXR1c0NvZGU6IHN0YXR1c0NvZGUgfHwgMjAwLFxuICAgIGxvYWRlckhlYWRlcnNcbiAgfTtcbn1cbmZ1bmN0aW9uIHByb2Nlc3NMb2FkZXJEYXRhKHN0YXRlLCBtYXRjaGVzLCByZXN1bHRzLCBwZW5kaW5nQWN0aW9uUmVzdWx0LCByZXZhbGlkYXRpbmdGZXRjaGVycywgZmV0Y2hlclJlc3VsdHMpIHtcbiAgbGV0IHsgbG9hZGVyRGF0YSwgZXJyb3JzIH0gPSBwcm9jZXNzUm91dGVMb2FkZXJEYXRhKFxuICAgIG1hdGNoZXMsXG4gICAgcmVzdWx0cyxcbiAgICBwZW5kaW5nQWN0aW9uUmVzdWx0XG4gICk7XG4gIHJldmFsaWRhdGluZ0ZldGNoZXJzLmZvckVhY2goKHJmKSA9PiB7XG4gICAgbGV0IHsga2V5LCBtYXRjaCwgY29udHJvbGxlciB9ID0gcmY7XG4gICAgbGV0IHJlc3VsdCA9IGZldGNoZXJSZXN1bHRzW2tleV07XG4gICAgaW52YXJpYW50KHJlc3VsdCwgXCJEaWQgbm90IGZpbmQgY29ycmVzcG9uZGluZyBmZXRjaGVyIHJlc3VsdFwiKTtcbiAgICBpZiAoY29udHJvbGxlciAmJiBjb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChpc0Vycm9yUmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgIGxldCBib3VuZGFyeU1hdGNoID0gZmluZE5lYXJlc3RCb3VuZGFyeShzdGF0ZS5tYXRjaGVzLCBtYXRjaD8ucm91dGUuaWQpO1xuICAgICAgaWYgKCEoZXJyb3JzICYmIGVycm9yc1tib3VuZGFyeU1hdGNoLnJvdXRlLmlkXSkpIHtcbiAgICAgICAgZXJyb3JzID0ge1xuICAgICAgICAgIC4uLmVycm9ycyxcbiAgICAgICAgICBbYm91bmRhcnlNYXRjaC5yb3V0ZS5pZF06IHJlc3VsdC5lcnJvclxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgc3RhdGUuZmV0Y2hlcnMuZGVsZXRlKGtleSk7XG4gICAgfSBlbHNlIGlmIChpc1JlZGlyZWN0UmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgIGludmFyaWFudChmYWxzZSwgXCJVbmhhbmRsZWQgZmV0Y2hlciByZXZhbGlkYXRpb24gcmVkaXJlY3RcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkb25lRmV0Y2hlciA9IGdldERvbmVGZXRjaGVyKHJlc3VsdC5kYXRhKTtcbiAgICAgIHN0YXRlLmZldGNoZXJzLnNldChrZXksIGRvbmVGZXRjaGVyKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4geyBsb2FkZXJEYXRhLCBlcnJvcnMgfTtcbn1cbmZ1bmN0aW9uIG1lcmdlTG9hZGVyRGF0YShsb2FkZXJEYXRhLCBuZXdMb2FkZXJEYXRhLCBtYXRjaGVzLCBlcnJvcnMpIHtcbiAgbGV0IG1lcmdlZExvYWRlckRhdGEgPSBPYmplY3QuZW50cmllcyhuZXdMb2FkZXJEYXRhKS5maWx0ZXIoKFssIHZdKSA9PiB2ICE9PSBSZXNldExvYWRlckRhdGFTeW1ib2wpLnJlZHVjZSgobWVyZ2VkLCBbaywgdl0pID0+IHtcbiAgICBtZXJnZWRba10gPSB2O1xuICAgIHJldHVybiBtZXJnZWQ7XG4gIH0sIHt9KTtcbiAgZm9yIChsZXQgbWF0Y2ggb2YgbWF0Y2hlcykge1xuICAgIGxldCBpZCA9IG1hdGNoLnJvdXRlLmlkO1xuICAgIGlmICghbmV3TG9hZGVyRGF0YS5oYXNPd25Qcm9wZXJ0eShpZCkgJiYgbG9hZGVyRGF0YS5oYXNPd25Qcm9wZXJ0eShpZCkgJiYgbWF0Y2gucm91dGUubG9hZGVyKSB7XG4gICAgICBtZXJnZWRMb2FkZXJEYXRhW2lkXSA9IGxvYWRlckRhdGFbaWRdO1xuICAgIH1cbiAgICBpZiAoZXJyb3JzICYmIGVycm9ycy5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbWVyZ2VkTG9hZGVyRGF0YTtcbn1cbmZ1bmN0aW9uIGdldEFjdGlvbkRhdGFGb3JDb21taXQocGVuZGluZ0FjdGlvblJlc3VsdCkge1xuICBpZiAoIXBlbmRpbmdBY3Rpb25SZXN1bHQpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgcmV0dXJuIGlzRXJyb3JSZXN1bHQocGVuZGluZ0FjdGlvblJlc3VsdFsxXSkgPyB7XG4gICAgLy8gQ2xlYXIgb3V0IHByaW9yIGFjdGlvbkRhdGEgb24gZXJyb3JzXG4gICAgYWN0aW9uRGF0YToge31cbiAgfSA6IHtcbiAgICBhY3Rpb25EYXRhOiB7XG4gICAgICBbcGVuZGluZ0FjdGlvblJlc3VsdFswXV06IHBlbmRpbmdBY3Rpb25SZXN1bHRbMV0uZGF0YVxuICAgIH1cbiAgfTtcbn1cbmZ1bmN0aW9uIGZpbmROZWFyZXN0Qm91bmRhcnkobWF0Y2hlcywgcm91dGVJZCkge1xuICBsZXQgZWxpZ2libGVNYXRjaGVzID0gcm91dGVJZCA/IG1hdGNoZXMuc2xpY2UoMCwgbWF0Y2hlcy5maW5kSW5kZXgoKG0pID0+IG0ucm91dGUuaWQgPT09IHJvdXRlSWQpICsgMSkgOiBbLi4ubWF0Y2hlc107XG4gIHJldHVybiBlbGlnaWJsZU1hdGNoZXMucmV2ZXJzZSgpLmZpbmQoKG0pID0+IG0ucm91dGUuaGFzRXJyb3JCb3VuZGFyeSA9PT0gdHJ1ZSkgfHwgbWF0Y2hlc1swXTtcbn1cbmZ1bmN0aW9uIGdldFNob3J0Q2lyY3VpdE1hdGNoZXMocm91dGVzKSB7XG4gIGxldCByb3V0ZSA9IHJvdXRlcy5sZW5ndGggPT09IDEgPyByb3V0ZXNbMF0gOiByb3V0ZXMuZmluZCgocikgPT4gci5pbmRleCB8fCAhci5wYXRoIHx8IHIucGF0aCA9PT0gXCIvXCIpIHx8IHtcbiAgICBpZDogYF9fc2hpbS1lcnJvci1yb3V0ZV9fYFxuICB9O1xuICByZXR1cm4ge1xuICAgIG1hdGNoZXM6IFtcbiAgICAgIHtcbiAgICAgICAgcGFyYW1zOiB7fSxcbiAgICAgICAgcGF0aG5hbWU6IFwiXCIsXG4gICAgICAgIHBhdGhuYW1lQmFzZTogXCJcIixcbiAgICAgICAgcm91dGVcbiAgICAgIH1cbiAgICBdLFxuICAgIHJvdXRlXG4gIH07XG59XG5mdW5jdGlvbiBnZXRJbnRlcm5hbFJvdXRlckVycm9yKHN0YXR1cywge1xuICBwYXRobmFtZSxcbiAgcm91dGVJZCxcbiAgbWV0aG9kLFxuICB0eXBlLFxuICBtZXNzYWdlXG59ID0ge30pIHtcbiAgbGV0IHN0YXR1c1RleHQgPSBcIlVua25vd24gU2VydmVyIEVycm9yXCI7XG4gIGxldCBlcnJvck1lc3NhZ2UgPSBcIlVua25vd24gQHJlbWl4LXJ1bi9yb3V0ZXIgZXJyb3JcIjtcbiAgaWYgKHN0YXR1cyA9PT0gNDAwKSB7XG4gICAgc3RhdHVzVGV4dCA9IFwiQmFkIFJlcXVlc3RcIjtcbiAgICBpZiAobWV0aG9kICYmIHBhdGhuYW1lICYmIHJvdXRlSWQpIHtcbiAgICAgIGVycm9yTWVzc2FnZSA9IGBZb3UgbWFkZSBhICR7bWV0aG9kfSByZXF1ZXN0IHRvIFwiJHtwYXRobmFtZX1cIiBidXQgZGlkIG5vdCBwcm92aWRlIGEgXFxgbG9hZGVyXFxgIGZvciByb3V0ZSBcIiR7cm91dGVJZH1cIiwgc28gdGhlcmUgaXMgbm8gd2F5IHRvIGhhbmRsZSB0aGUgcmVxdWVzdC5gO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJpbnZhbGlkLWJvZHlcIikge1xuICAgICAgZXJyb3JNZXNzYWdlID0gXCJVbmFibGUgdG8gZW5jb2RlIHN1Ym1pc3Npb24gYm9keVwiO1xuICAgIH1cbiAgfSBlbHNlIGlmIChzdGF0dXMgPT09IDQwMykge1xuICAgIHN0YXR1c1RleHQgPSBcIkZvcmJpZGRlblwiO1xuICAgIGVycm9yTWVzc2FnZSA9IGBSb3V0ZSBcIiR7cm91dGVJZH1cIiBkb2VzIG5vdCBtYXRjaCBVUkwgXCIke3BhdGhuYW1lfVwiYDtcbiAgfSBlbHNlIGlmIChzdGF0dXMgPT09IDQwNCkge1xuICAgIHN0YXR1c1RleHQgPSBcIk5vdCBGb3VuZFwiO1xuICAgIGVycm9yTWVzc2FnZSA9IGBObyByb3V0ZSBtYXRjaGVzIFVSTCBcIiR7cGF0aG5hbWV9XCJgO1xuICB9IGVsc2UgaWYgKHN0YXR1cyA9PT0gNDA1KSB7XG4gICAgc3RhdHVzVGV4dCA9IFwiTWV0aG9kIE5vdCBBbGxvd2VkXCI7XG4gICAgaWYgKG1ldGhvZCAmJiBwYXRobmFtZSAmJiByb3V0ZUlkKSB7XG4gICAgICBlcnJvck1lc3NhZ2UgPSBgWW91IG1hZGUgYSAke21ldGhvZC50b1VwcGVyQ2FzZSgpfSByZXF1ZXN0IHRvIFwiJHtwYXRobmFtZX1cIiBidXQgZGlkIG5vdCBwcm92aWRlIGFuIFxcYGFjdGlvblxcYCBmb3Igcm91dGUgXCIke3JvdXRlSWR9XCIsIHNvIHRoZXJlIGlzIG5vIHdheSB0byBoYW5kbGUgdGhlIHJlcXVlc3QuYDtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZCkge1xuICAgICAgZXJyb3JNZXNzYWdlID0gYEludmFsaWQgcmVxdWVzdCBtZXRob2QgXCIke21ldGhvZC50b1VwcGVyQ2FzZSgpfVwiYDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBFcnJvclJlc3BvbnNlSW1wbChcbiAgICBzdGF0dXMgfHwgNTAwLFxuICAgIHN0YXR1c1RleHQsXG4gICAgbmV3IEVycm9yKGVycm9yTWVzc2FnZSksXG4gICAgdHJ1ZVxuICApO1xufVxuZnVuY3Rpb24gZmluZFJlZGlyZWN0KHJlc3VsdHMpIHtcbiAgbGV0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhyZXN1bHRzKTtcbiAgZm9yIChsZXQgaSA9IGVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBsZXQgW2tleSwgcmVzdWx0XSA9IGVudHJpZXNbaV07XG4gICAgaWYgKGlzUmVkaXJlY3RSZXN1bHQocmVzdWx0KSkge1xuICAgICAgcmV0dXJuIHsga2V5LCByZXN1bHQgfTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIHN0cmlwSGFzaEZyb21QYXRoKHBhdGgpIHtcbiAgbGV0IHBhcnNlZFBhdGggPSB0eXBlb2YgcGF0aCA9PT0gXCJzdHJpbmdcIiA/IHBhcnNlUGF0aChwYXRoKSA6IHBhdGg7XG4gIHJldHVybiBjcmVhdGVQYXRoKHsgLi4ucGFyc2VkUGF0aCwgaGFzaDogXCJcIiB9KTtcbn1cbmZ1bmN0aW9uIGlzSGFzaENoYW5nZU9ubHkoYSwgYikge1xuICBpZiAoYS5wYXRobmFtZSAhPT0gYi5wYXRobmFtZSB8fCBhLnNlYXJjaCAhPT0gYi5zZWFyY2gpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGEuaGFzaCA9PT0gXCJcIikge1xuICAgIHJldHVybiBiLmhhc2ggIT09IFwiXCI7XG4gIH0gZWxzZSBpZiAoYS5oYXNoID09PSBiLmhhc2gpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChiLmhhc2ggIT09IFwiXCIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBpc0RhdGFTdHJhdGVneVJlc3VsdChyZXN1bHQpIHtcbiAgcmV0dXJuIHJlc3VsdCAhPSBudWxsICYmIHR5cGVvZiByZXN1bHQgPT09IFwib2JqZWN0XCIgJiYgXCJ0eXBlXCIgaW4gcmVzdWx0ICYmIFwicmVzdWx0XCIgaW4gcmVzdWx0ICYmIChyZXN1bHQudHlwZSA9PT0gXCJkYXRhXCIgLyogZGF0YSAqLyB8fCByZXN1bHQudHlwZSA9PT0gXCJlcnJvclwiIC8qIGVycm9yICovKTtcbn1cbmZ1bmN0aW9uIGlzUmVkaXJlY3REYXRhU3RyYXRlZ3lSZXN1bHQocmVzdWx0KSB7XG4gIHJldHVybiBpc1Jlc3BvbnNlKHJlc3VsdC5yZXN1bHQpICYmIHJlZGlyZWN0U3RhdHVzQ29kZXMuaGFzKHJlc3VsdC5yZXN1bHQuc3RhdHVzKTtcbn1cbmZ1bmN0aW9uIGlzRXJyb3JSZXN1bHQocmVzdWx0KSB7XG4gIHJldHVybiByZXN1bHQudHlwZSA9PT0gXCJlcnJvclwiIC8qIGVycm9yICovO1xufVxuZnVuY3Rpb24gaXNSZWRpcmVjdFJlc3VsdChyZXN1bHQpIHtcbiAgcmV0dXJuIChyZXN1bHQgJiYgcmVzdWx0LnR5cGUpID09PSBcInJlZGlyZWN0XCIgLyogcmVkaXJlY3QgKi87XG59XG5mdW5jdGlvbiBpc0RhdGFXaXRoUmVzcG9uc2VJbml0KHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT0gbnVsbCAmJiBcInR5cGVcIiBpbiB2YWx1ZSAmJiBcImRhdGFcIiBpbiB2YWx1ZSAmJiBcImluaXRcIiBpbiB2YWx1ZSAmJiB2YWx1ZS50eXBlID09PSBcIkRhdGFXaXRoUmVzcG9uc2VJbml0XCI7XG59XG5mdW5jdGlvbiBpc1Jlc3BvbnNlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZS5zdGF0dXMgPT09IFwibnVtYmVyXCIgJiYgdHlwZW9mIHZhbHVlLnN0YXR1c1RleHQgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIHZhbHVlLmhlYWRlcnMgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHZhbHVlLmJvZHkgIT09IFwidW5kZWZpbmVkXCI7XG59XG5mdW5jdGlvbiBpc1JlZGlyZWN0U3RhdHVzQ29kZShzdGF0dXNDb2RlKSB7XG4gIHJldHVybiByZWRpcmVjdFN0YXR1c0NvZGVzLmhhcyhzdGF0dXNDb2RlKTtcbn1cbmZ1bmN0aW9uIGlzUmVkaXJlY3RSZXNwb25zZShyZXN1bHQpIHtcbiAgcmV0dXJuIGlzUmVzcG9uc2UocmVzdWx0KSAmJiBpc1JlZGlyZWN0U3RhdHVzQ29kZShyZXN1bHQuc3RhdHVzKSAmJiByZXN1bHQuaGVhZGVycy5oYXMoXCJMb2NhdGlvblwiKTtcbn1cbmZ1bmN0aW9uIGlzVmFsaWRNZXRob2QobWV0aG9kKSB7XG4gIHJldHVybiB2YWxpZFJlcXVlc3RNZXRob2RzLmhhcyhtZXRob2QudG9VcHBlckNhc2UoKSk7XG59XG5mdW5jdGlvbiBpc011dGF0aW9uTWV0aG9kKG1ldGhvZCkge1xuICByZXR1cm4gdmFsaWRNdXRhdGlvbk1ldGhvZHMuaGFzKG1ldGhvZC50b1VwcGVyQ2FzZSgpKTtcbn1cbmZ1bmN0aW9uIGhhc05ha2VkSW5kZXhRdWVyeShzZWFyY2gpIHtcbiAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXMoc2VhcmNoKS5nZXRBbGwoXCJpbmRleFwiKS5zb21lKCh2KSA9PiB2ID09PSBcIlwiKTtcbn1cbmZ1bmN0aW9uIGdldFRhcmdldE1hdGNoKG1hdGNoZXMsIGxvY2F0aW9uKSB7XG4gIGxldCBzZWFyY2ggPSB0eXBlb2YgbG9jYXRpb24gPT09IFwic3RyaW5nXCIgPyBwYXJzZVBhdGgobG9jYXRpb24pLnNlYXJjaCA6IGxvY2F0aW9uLnNlYXJjaDtcbiAgaWYgKG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXS5yb3V0ZS5pbmRleCAmJiBoYXNOYWtlZEluZGV4UXVlcnkoc2VhcmNoIHx8IFwiXCIpKSB7XG4gICAgcmV0dXJuIG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXTtcbiAgfVxuICBsZXQgcGF0aE1hdGNoZXMgPSBnZXRQYXRoQ29udHJpYnV0aW5nTWF0Y2hlcyhtYXRjaGVzKTtcbiAgcmV0dXJuIHBhdGhNYXRjaGVzW3BhdGhNYXRjaGVzLmxlbmd0aCAtIDFdO1xufVxuZnVuY3Rpb24gZ2V0U3VibWlzc2lvbkZyb21OYXZpZ2F0aW9uKG5hdmlnYXRpb24pIHtcbiAgbGV0IHsgZm9ybU1ldGhvZCwgZm9ybUFjdGlvbiwgZm9ybUVuY1R5cGUsIHRleHQsIGZvcm1EYXRhLCBqc29uIH0gPSBuYXZpZ2F0aW9uO1xuICBpZiAoIWZvcm1NZXRob2QgfHwgIWZvcm1BY3Rpb24gfHwgIWZvcm1FbmNUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICh0ZXh0ICE9IG51bGwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9ybU1ldGhvZCxcbiAgICAgIGZvcm1BY3Rpb24sXG4gICAgICBmb3JtRW5jVHlwZSxcbiAgICAgIGZvcm1EYXRhOiB2b2lkIDAsXG4gICAgICBqc29uOiB2b2lkIDAsXG4gICAgICB0ZXh0XG4gICAgfTtcbiAgfSBlbHNlIGlmIChmb3JtRGF0YSAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvcm1NZXRob2QsXG4gICAgICBmb3JtQWN0aW9uLFxuICAgICAgZm9ybUVuY1R5cGUsXG4gICAgICBmb3JtRGF0YSxcbiAgICAgIGpzb246IHZvaWQgMCxcbiAgICAgIHRleHQ6IHZvaWQgMFxuICAgIH07XG4gIH0gZWxzZSBpZiAoanNvbiAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvcm1NZXRob2QsXG4gICAgICBmb3JtQWN0aW9uLFxuICAgICAgZm9ybUVuY1R5cGUsXG4gICAgICBmb3JtRGF0YTogdm9pZCAwLFxuICAgICAganNvbixcbiAgICAgIHRleHQ6IHZvaWQgMFxuICAgIH07XG4gIH1cbn1cbmZ1bmN0aW9uIGdldExvYWRpbmdOYXZpZ2F0aW9uKGxvY2F0aW9uLCBzdWJtaXNzaW9uKSB7XG4gIGlmIChzdWJtaXNzaW9uKSB7XG4gICAgbGV0IG5hdmlnYXRpb24gPSB7XG4gICAgICBzdGF0ZTogXCJsb2FkaW5nXCIsXG4gICAgICBsb2NhdGlvbixcbiAgICAgIGZvcm1NZXRob2Q6IHN1Ym1pc3Npb24uZm9ybU1ldGhvZCxcbiAgICAgIGZvcm1BY3Rpb246IHN1Ym1pc3Npb24uZm9ybUFjdGlvbixcbiAgICAgIGZvcm1FbmNUeXBlOiBzdWJtaXNzaW9uLmZvcm1FbmNUeXBlLFxuICAgICAgZm9ybURhdGE6IHN1Ym1pc3Npb24uZm9ybURhdGEsXG4gICAgICBqc29uOiBzdWJtaXNzaW9uLmpzb24sXG4gICAgICB0ZXh0OiBzdWJtaXNzaW9uLnRleHRcbiAgICB9O1xuICAgIHJldHVybiBuYXZpZ2F0aW9uO1xuICB9IGVsc2Uge1xuICAgIGxldCBuYXZpZ2F0aW9uID0ge1xuICAgICAgc3RhdGU6IFwibG9hZGluZ1wiLFxuICAgICAgbG9jYXRpb24sXG4gICAgICBmb3JtTWV0aG9kOiB2b2lkIDAsXG4gICAgICBmb3JtQWN0aW9uOiB2b2lkIDAsXG4gICAgICBmb3JtRW5jVHlwZTogdm9pZCAwLFxuICAgICAgZm9ybURhdGE6IHZvaWQgMCxcbiAgICAgIGpzb246IHZvaWQgMCxcbiAgICAgIHRleHQ6IHZvaWQgMFxuICAgIH07XG4gICAgcmV0dXJuIG5hdmlnYXRpb247XG4gIH1cbn1cbmZ1bmN0aW9uIGdldFN1Ym1pdHRpbmdOYXZpZ2F0aW9uKGxvY2F0aW9uLCBzdWJtaXNzaW9uKSB7XG4gIGxldCBuYXZpZ2F0aW9uID0ge1xuICAgIHN0YXRlOiBcInN1Ym1pdHRpbmdcIixcbiAgICBsb2NhdGlvbixcbiAgICBmb3JtTWV0aG9kOiBzdWJtaXNzaW9uLmZvcm1NZXRob2QsXG4gICAgZm9ybUFjdGlvbjogc3VibWlzc2lvbi5mb3JtQWN0aW9uLFxuICAgIGZvcm1FbmNUeXBlOiBzdWJtaXNzaW9uLmZvcm1FbmNUeXBlLFxuICAgIGZvcm1EYXRhOiBzdWJtaXNzaW9uLmZvcm1EYXRhLFxuICAgIGpzb246IHN1Ym1pc3Npb24uanNvbixcbiAgICB0ZXh0OiBzdWJtaXNzaW9uLnRleHRcbiAgfTtcbiAgcmV0dXJuIG5hdmlnYXRpb247XG59XG5mdW5jdGlvbiBnZXRMb2FkaW5nRmV0Y2hlcihzdWJtaXNzaW9uLCBkYXRhMikge1xuICBpZiAoc3VibWlzc2lvbikge1xuICAgIGxldCBmZXRjaGVyID0ge1xuICAgICAgc3RhdGU6IFwibG9hZGluZ1wiLFxuICAgICAgZm9ybU1ldGhvZDogc3VibWlzc2lvbi5mb3JtTWV0aG9kLFxuICAgICAgZm9ybUFjdGlvbjogc3VibWlzc2lvbi5mb3JtQWN0aW9uLFxuICAgICAgZm9ybUVuY1R5cGU6IHN1Ym1pc3Npb24uZm9ybUVuY1R5cGUsXG4gICAgICBmb3JtRGF0YTogc3VibWlzc2lvbi5mb3JtRGF0YSxcbiAgICAgIGpzb246IHN1Ym1pc3Npb24uanNvbixcbiAgICAgIHRleHQ6IHN1Ym1pc3Npb24udGV4dCxcbiAgICAgIGRhdGE6IGRhdGEyXG4gICAgfTtcbiAgICByZXR1cm4gZmV0Y2hlcjtcbiAgfSBlbHNlIHtcbiAgICBsZXQgZmV0Y2hlciA9IHtcbiAgICAgIHN0YXRlOiBcImxvYWRpbmdcIixcbiAgICAgIGZvcm1NZXRob2Q6IHZvaWQgMCxcbiAgICAgIGZvcm1BY3Rpb246IHZvaWQgMCxcbiAgICAgIGZvcm1FbmNUeXBlOiB2b2lkIDAsXG4gICAgICBmb3JtRGF0YTogdm9pZCAwLFxuICAgICAganNvbjogdm9pZCAwLFxuICAgICAgdGV4dDogdm9pZCAwLFxuICAgICAgZGF0YTogZGF0YTJcbiAgICB9O1xuICAgIHJldHVybiBmZXRjaGVyO1xuICB9XG59XG5mdW5jdGlvbiBnZXRTdWJtaXR0aW5nRmV0Y2hlcihzdWJtaXNzaW9uLCBleGlzdGluZ0ZldGNoZXIpIHtcbiAgbGV0IGZldGNoZXIgPSB7XG4gICAgc3RhdGU6IFwic3VibWl0dGluZ1wiLFxuICAgIGZvcm1NZXRob2Q6IHN1Ym1pc3Npb24uZm9ybU1ldGhvZCxcbiAgICBmb3JtQWN0aW9uOiBzdWJtaXNzaW9uLmZvcm1BY3Rpb24sXG4gICAgZm9ybUVuY1R5cGU6IHN1Ym1pc3Npb24uZm9ybUVuY1R5cGUsXG4gICAgZm9ybURhdGE6IHN1Ym1pc3Npb24uZm9ybURhdGEsXG4gICAganNvbjogc3VibWlzc2lvbi5qc29uLFxuICAgIHRleHQ6IHN1Ym1pc3Npb24udGV4dCxcbiAgICBkYXRhOiBleGlzdGluZ0ZldGNoZXIgPyBleGlzdGluZ0ZldGNoZXIuZGF0YSA6IHZvaWQgMFxuICB9O1xuICByZXR1cm4gZmV0Y2hlcjtcbn1cbmZ1bmN0aW9uIGdldERvbmVGZXRjaGVyKGRhdGEyKSB7XG4gIGxldCBmZXRjaGVyID0ge1xuICAgIHN0YXRlOiBcImlkbGVcIixcbiAgICBmb3JtTWV0aG9kOiB2b2lkIDAsXG4gICAgZm9ybUFjdGlvbjogdm9pZCAwLFxuICAgIGZvcm1FbmNUeXBlOiB2b2lkIDAsXG4gICAgZm9ybURhdGE6IHZvaWQgMCxcbiAgICBqc29uOiB2b2lkIDAsXG4gICAgdGV4dDogdm9pZCAwLFxuICAgIGRhdGE6IGRhdGEyXG4gIH07XG4gIHJldHVybiBmZXRjaGVyO1xufVxuZnVuY3Rpb24gcmVzdG9yZUFwcGxpZWRUcmFuc2l0aW9ucyhfd2luZG93LCB0cmFuc2l0aW9ucykge1xuICB0cnkge1xuICAgIGxldCBzZXNzaW9uUG9zaXRpb25zID0gX3dpbmRvdy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFxuICAgICAgVFJBTlNJVElPTlNfU1RPUkFHRV9LRVlcbiAgICApO1xuICAgIGlmIChzZXNzaW9uUG9zaXRpb25zKSB7XG4gICAgICBsZXQganNvbiA9IEpTT04ucGFyc2Uoc2Vzc2lvblBvc2l0aW9ucyk7XG4gICAgICBmb3IgKGxldCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoanNvbiB8fCB7fSkpIHtcbiAgICAgICAgaWYgKHYgJiYgQXJyYXkuaXNBcnJheSh2KSkge1xuICAgICAgICAgIHRyYW5zaXRpb25zLnNldChrLCBuZXcgU2V0KHYgfHwgW10pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICB9XG59XG5mdW5jdGlvbiBwZXJzaXN0QXBwbGllZFRyYW5zaXRpb25zKF93aW5kb3csIHRyYW5zaXRpb25zKSB7XG4gIGlmICh0cmFuc2l0aW9ucy5zaXplID4gMCkge1xuICAgIGxldCBqc29uID0ge307XG4gICAgZm9yIChsZXQgW2ssIHZdIG9mIHRyYW5zaXRpb25zKSB7XG4gICAgICBqc29uW2tdID0gWy4uLnZdO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgX3dpbmRvdy5zZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgICBUUkFOU0lUSU9OU19TVE9SQUdFX0tFWSxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoanNvbilcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHdhcm5pbmcoXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBgRmFpbGVkIHRvIHNhdmUgYXBwbGllZCB2aWV3IHRyYW5zaXRpb25zIGluIHNlc3Npb25TdG9yYWdlICgke2Vycm9yfSkuYFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZURlZmVycmVkKCkge1xuICBsZXQgcmVzb2x2ZTtcbiAgbGV0IHJlamVjdDtcbiAgbGV0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHtcbiAgICByZXNvbHZlID0gYXN5bmMgKHZhbCkgPT4ge1xuICAgICAgcmVzKHZhbCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBwcm9taXNlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgfVxuICAgIH07XG4gICAgcmVqZWN0ID0gYXN5bmMgKGVycm9yKSA9PiB7XG4gICAgICByZWooZXJyb3IpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgcHJvbWlzZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIH1cbiAgICB9O1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBwcm9taXNlLFxuICAgIC8vQHRzLWlnbm9yZVxuICAgIHJlc29sdmUsXG4gICAgLy9AdHMtaWdub3JlXG4gICAgcmVqZWN0XG4gIH07XG59XG5cbi8vIGxpYi9jb21wb25lbnRzLnRzeFxuaW1wb3J0ICogYXMgUmVhY3QzIGZyb20gXCJyZWFjdFwiO1xuXG4vLyBsaWIvY29udGV4dC50c1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG52YXIgRGF0YVJvdXRlckNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuRGF0YVJvdXRlckNvbnRleHQuZGlzcGxheU5hbWUgPSBcIkRhdGFSb3V0ZXJcIjtcbnZhciBEYXRhUm91dGVyU3RhdGVDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbkRhdGFSb3V0ZXJTdGF0ZUNvbnRleHQuZGlzcGxheU5hbWUgPSBcIkRhdGFSb3V0ZXJTdGF0ZVwiO1xudmFyIFZpZXdUcmFuc2l0aW9uQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoe1xuICBpc1RyYW5zaXRpb25pbmc6IGZhbHNlXG59KTtcblZpZXdUcmFuc2l0aW9uQ29udGV4dC5kaXNwbGF5TmFtZSA9IFwiVmlld1RyYW5zaXRpb25cIjtcbnZhciBGZXRjaGVyc0NvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KFxuICAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpXG4pO1xuRmV0Y2hlcnNDb250ZXh0LmRpc3BsYXlOYW1lID0gXCJGZXRjaGVyc1wiO1xudmFyIEF3YWl0Q29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5Bd2FpdENvbnRleHQuZGlzcGxheU5hbWUgPSBcIkF3YWl0XCI7XG52YXIgTmF2aWdhdGlvbkNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KFxuICBudWxsXG4pO1xuTmF2aWdhdGlvbkNvbnRleHQuZGlzcGxheU5hbWUgPSBcIk5hdmlnYXRpb25cIjtcbnZhciBMb2NhdGlvbkNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KFxuICBudWxsXG4pO1xuTG9jYXRpb25Db250ZXh0LmRpc3BsYXlOYW1lID0gXCJMb2NhdGlvblwiO1xudmFyIFJvdXRlQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoe1xuICBvdXRsZXQ6IG51bGwsXG4gIG1hdGNoZXM6IFtdLFxuICBpc0RhdGFSb3V0ZTogZmFsc2Vcbn0pO1xuUm91dGVDb250ZXh0LmRpc3BsYXlOYW1lID0gXCJSb3V0ZVwiO1xudmFyIFJvdXRlRXJyb3JDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcblJvdXRlRXJyb3JDb250ZXh0LmRpc3BsYXlOYW1lID0gXCJSb3V0ZUVycm9yXCI7XG5cbi8vIGxpYi9ob29rcy50c3hcbmltcG9ydCAqIGFzIFJlYWN0MiBmcm9tIFwicmVhY3RcIjtcbnZhciBFTkFCTEVfREVWX1dBUk5JTkdTID0gdHJ1ZTtcbmZ1bmN0aW9uIHVzZUhyZWYodG8sIHsgcmVsYXRpdmUgfSA9IHt9KSB7XG4gIGludmFyaWFudChcbiAgICB1c2VJblJvdXRlckNvbnRleHQoKSxcbiAgICAvLyBUT0RPOiBUaGlzIGVycm9yIGlzIHByb2JhYmx5IGJlY2F1c2UgdGhleSBzb21laG93IGhhdmUgMiB2ZXJzaW9ucyBvZiB0aGVcbiAgICAvLyByb3V0ZXIgbG9hZGVkLiBXZSBjYW4gaGVscCB0aGVtIHVuZGVyc3RhbmQgaG93IHRvIGF2b2lkIHRoYXQuXG4gICAgYHVzZUhyZWYoKSBtYXkgYmUgdXNlZCBvbmx5IGluIHRoZSBjb250ZXh0IG9mIGEgPFJvdXRlcj4gY29tcG9uZW50LmBcbiAgKTtcbiAgbGV0IHsgYmFzZW5hbWUsIG5hdmlnYXRvcjogbmF2aWdhdG9yMiB9ID0gUmVhY3QyLnVzZUNvbnRleHQoTmF2aWdhdGlvbkNvbnRleHQpO1xuICBsZXQgeyBoYXNoLCBwYXRobmFtZSwgc2VhcmNoIH0gPSB1c2VSZXNvbHZlZFBhdGgodG8sIHsgcmVsYXRpdmUgfSk7XG4gIGxldCBqb2luZWRQYXRobmFtZSA9IHBhdGhuYW1lO1xuICBpZiAoYmFzZW5hbWUgIT09IFwiL1wiKSB7XG4gICAgam9pbmVkUGF0aG5hbWUgPSBwYXRobmFtZSA9PT0gXCIvXCIgPyBiYXNlbmFtZSA6IGpvaW5QYXRocyhbYmFzZW5hbWUsIHBhdGhuYW1lXSk7XG4gIH1cbiAgcmV0dXJuIG5hdmlnYXRvcjIuY3JlYXRlSHJlZih7IHBhdGhuYW1lOiBqb2luZWRQYXRobmFtZSwgc2VhcmNoLCBoYXNoIH0pO1xufVxuZnVuY3Rpb24gdXNlSW5Sb3V0ZXJDb250ZXh0KCkge1xuICByZXR1cm4gUmVhY3QyLnVzZUNvbnRleHQoTG9jYXRpb25Db250ZXh0KSAhPSBudWxsO1xufVxuZnVuY3Rpb24gdXNlTG9jYXRpb24oKSB7XG4gIGludmFyaWFudChcbiAgICB1c2VJblJvdXRlckNvbnRleHQoKSxcbiAgICAvLyBUT0RPOiBUaGlzIGVycm9yIGlzIHByb2JhYmx5IGJlY2F1c2UgdGhleSBzb21laG93IGhhdmUgMiB2ZXJzaW9ucyBvZiB0aGVcbiAgICAvLyByb3V0ZXIgbG9hZGVkLiBXZSBjYW4gaGVscCB0aGVtIHVuZGVyc3RhbmQgaG93IHRvIGF2b2lkIHRoYXQuXG4gICAgYHVzZUxvY2F0aW9uKCkgbWF5IGJlIHVzZWQgb25seSBpbiB0aGUgY29udGV4dCBvZiBhIDxSb3V0ZXI+IGNvbXBvbmVudC5gXG4gICk7XG4gIHJldHVybiBSZWFjdDIudXNlQ29udGV4dChMb2NhdGlvbkNvbnRleHQpLmxvY2F0aW9uO1xufVxuZnVuY3Rpb24gdXNlTmF2aWdhdGlvblR5cGUoKSB7XG4gIHJldHVybiBSZWFjdDIudXNlQ29udGV4dChMb2NhdGlvbkNvbnRleHQpLm5hdmlnYXRpb25UeXBlO1xufVxuZnVuY3Rpb24gdXNlTWF0Y2gocGF0dGVybikge1xuICBpbnZhcmlhbnQoXG4gICAgdXNlSW5Sb3V0ZXJDb250ZXh0KCksXG4gICAgLy8gVE9ETzogVGhpcyBlcnJvciBpcyBwcm9iYWJseSBiZWNhdXNlIHRoZXkgc29tZWhvdyBoYXZlIDIgdmVyc2lvbnMgb2YgdGhlXG4gICAgLy8gcm91dGVyIGxvYWRlZC4gV2UgY2FuIGhlbHAgdGhlbSB1bmRlcnN0YW5kIGhvdyB0byBhdm9pZCB0aGF0LlxuICAgIGB1c2VNYXRjaCgpIG1heSBiZSB1c2VkIG9ubHkgaW4gdGhlIGNvbnRleHQgb2YgYSA8Um91dGVyPiBjb21wb25lbnQuYFxuICApO1xuICBsZXQgeyBwYXRobmFtZSB9ID0gdXNlTG9jYXRpb24oKTtcbiAgcmV0dXJuIFJlYWN0Mi51c2VNZW1vKFxuICAgICgpID0+IG1hdGNoUGF0aChwYXR0ZXJuLCBkZWNvZGVQYXRoKHBhdGhuYW1lKSksXG4gICAgW3BhdGhuYW1lLCBwYXR0ZXJuXVxuICApO1xufVxudmFyIG5hdmlnYXRlRWZmZWN0V2FybmluZyA9IGBZb3Ugc2hvdWxkIGNhbGwgbmF2aWdhdGUoKSBpbiBhIFJlYWN0LnVzZUVmZmVjdCgpLCBub3Qgd2hlbiB5b3VyIGNvbXBvbmVudCBpcyBmaXJzdCByZW5kZXJlZC5gO1xuZnVuY3Rpb24gdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdChjYikge1xuICBsZXQgaXNTdGF0aWMgPSBSZWFjdDIudXNlQ29udGV4dChOYXZpZ2F0aW9uQ29udGV4dCkuc3RhdGljO1xuICBpZiAoIWlzU3RhdGljKSB7XG4gICAgUmVhY3QyLnVzZUxheW91dEVmZmVjdChjYik7XG4gIH1cbn1cbmZ1bmN0aW9uIHVzZU5hdmlnYXRlKCkge1xuICBsZXQgeyBpc0RhdGFSb3V0ZSB9ID0gUmVhY3QyLnVzZUNvbnRleHQoUm91dGVDb250ZXh0KTtcbiAgcmV0dXJuIGlzRGF0YVJvdXRlID8gdXNlTmF2aWdhdGVTdGFibGUoKSA6IHVzZU5hdmlnYXRlVW5zdGFibGUoKTtcbn1cbmZ1bmN0aW9uIHVzZU5hdmlnYXRlVW5zdGFibGUoKSB7XG4gIGludmFyaWFudChcbiAgICB1c2VJblJvdXRlckNvbnRleHQoKSxcbiAgICAvLyBUT0RPOiBUaGlzIGVycm9yIGlzIHByb2JhYmx5IGJlY2F1c2UgdGhleSBzb21laG93IGhhdmUgMiB2ZXJzaW9ucyBvZiB0aGVcbiAgICAvLyByb3V0ZXIgbG9hZGVkLiBXZSBjYW4gaGVscCB0aGVtIHVuZGVyc3RhbmQgaG93IHRvIGF2b2lkIHRoYXQuXG4gICAgYHVzZU5hdmlnYXRlKCkgbWF5IGJlIHVzZWQgb25seSBpbiB0aGUgY29udGV4dCBvZiBhIDxSb3V0ZXI+IGNvbXBvbmVudC5gXG4gICk7XG4gIGxldCBkYXRhUm91dGVyQ29udGV4dCA9IFJlYWN0Mi51c2VDb250ZXh0KERhdGFSb3V0ZXJDb250ZXh0KTtcbiAgbGV0IHsgYmFzZW5hbWUsIG5hdmlnYXRvcjogbmF2aWdhdG9yMiB9ID0gUmVhY3QyLnVzZUNvbnRleHQoTmF2aWdhdGlvbkNvbnRleHQpO1xuICBsZXQgeyBtYXRjaGVzIH0gPSBSZWFjdDIudXNlQ29udGV4dChSb3V0ZUNvbnRleHQpO1xuICBsZXQgeyBwYXRobmFtZTogbG9jYXRpb25QYXRobmFtZSB9ID0gdXNlTG9jYXRpb24oKTtcbiAgbGV0IHJvdXRlUGF0aG5hbWVzSnNvbiA9IEpTT04uc3RyaW5naWZ5KGdldFJlc29sdmVUb01hdGNoZXMobWF0Y2hlcykpO1xuICBsZXQgYWN0aXZlUmVmID0gUmVhY3QyLnVzZVJlZihmYWxzZSk7XG4gIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGFjdGl2ZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgfSk7XG4gIGxldCBuYXZpZ2F0ZSA9IFJlYWN0Mi51c2VDYWxsYmFjayhcbiAgICAodG8sIG9wdGlvbnMgPSB7fSkgPT4ge1xuICAgICAgd2FybmluZyhhY3RpdmVSZWYuY3VycmVudCwgbmF2aWdhdGVFZmZlY3RXYXJuaW5nKTtcbiAgICAgIGlmICghYWN0aXZlUmVmLmN1cnJlbnQpIHJldHVybjtcbiAgICAgIGlmICh0eXBlb2YgdG8gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgbmF2aWdhdG9yMi5nbyh0byk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxldCBwYXRoID0gcmVzb2x2ZVRvKFxuICAgICAgICB0byxcbiAgICAgICAgSlNPTi5wYXJzZShyb3V0ZVBhdGhuYW1lc0pzb24pLFxuICAgICAgICBsb2NhdGlvblBhdGhuYW1lLFxuICAgICAgICBvcHRpb25zLnJlbGF0aXZlID09PSBcInBhdGhcIlxuICAgICAgKTtcbiAgICAgIGlmIChkYXRhUm91dGVyQ29udGV4dCA9PSBudWxsICYmIGJhc2VuYW1lICE9PSBcIi9cIikge1xuICAgICAgICBwYXRoLnBhdGhuYW1lID0gcGF0aC5wYXRobmFtZSA9PT0gXCIvXCIgPyBiYXNlbmFtZSA6IGpvaW5QYXRocyhbYmFzZW5hbWUsIHBhdGgucGF0aG5hbWVdKTtcbiAgICAgIH1cbiAgICAgICghIW9wdGlvbnMucmVwbGFjZSA/IG5hdmlnYXRvcjIucmVwbGFjZSA6IG5hdmlnYXRvcjIucHVzaCkoXG4gICAgICAgIHBhdGgsXG4gICAgICAgIG9wdGlvbnMuc3RhdGUsXG4gICAgICAgIG9wdGlvbnNcbiAgICAgICk7XG4gICAgfSxcbiAgICBbXG4gICAgICBiYXNlbmFtZSxcbiAgICAgIG5hdmlnYXRvcjIsXG4gICAgICByb3V0ZVBhdGhuYW1lc0pzb24sXG4gICAgICBsb2NhdGlvblBhdGhuYW1lLFxuICAgICAgZGF0YVJvdXRlckNvbnRleHRcbiAgICBdXG4gICk7XG4gIHJldHVybiBuYXZpZ2F0ZTtcbn1cbnZhciBPdXRsZXRDb250ZXh0ID0gUmVhY3QyLmNyZWF0ZUNvbnRleHQobnVsbCk7XG5mdW5jdGlvbiB1c2VPdXRsZXRDb250ZXh0KCkge1xuICByZXR1cm4gUmVhY3QyLnVzZUNvbnRleHQoT3V0bGV0Q29udGV4dCk7XG59XG5mdW5jdGlvbiB1c2VPdXRsZXQoY29udGV4dCkge1xuICBsZXQgb3V0bGV0ID0gUmVhY3QyLnVzZUNvbnRleHQoUm91dGVDb250ZXh0KS5vdXRsZXQ7XG4gIGlmIChvdXRsZXQpIHtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0Mi5jcmVhdGVFbGVtZW50KE91dGxldENvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGNvbnRleHQgfSwgb3V0bGV0KTtcbiAgfVxuICByZXR1cm4gb3V0bGV0O1xufVxuZnVuY3Rpb24gdXNlUGFyYW1zKCkge1xuICBsZXQgeyBtYXRjaGVzIH0gPSBSZWFjdDIudXNlQ29udGV4dChSb3V0ZUNvbnRleHQpO1xuICBsZXQgcm91dGVNYXRjaCA9IG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXTtcbiAgcmV0dXJuIHJvdXRlTWF0Y2ggPyByb3V0ZU1hdGNoLnBhcmFtcyA6IHt9O1xufVxuZnVuY3Rpb24gdXNlUmVzb2x2ZWRQYXRoKHRvLCB7IHJlbGF0aXZlIH0gPSB7fSkge1xuICBsZXQgeyBtYXRjaGVzIH0gPSBSZWFjdDIudXNlQ29udGV4dChSb3V0ZUNvbnRleHQpO1xuICBsZXQgeyBwYXRobmFtZTogbG9jYXRpb25QYXRobmFtZSB9ID0gdXNlTG9jYXRpb24oKTtcbiAgbGV0IHJvdXRlUGF0aG5hbWVzSnNvbiA9IEpTT04uc3RyaW5naWZ5KGdldFJlc29sdmVUb01hdGNoZXMobWF0Y2hlcykpO1xuICByZXR1cm4gUmVhY3QyLnVzZU1lbW8oXG4gICAgKCkgPT4gcmVzb2x2ZVRvKFxuICAgICAgdG8sXG4gICAgICBKU09OLnBhcnNlKHJvdXRlUGF0aG5hbWVzSnNvbiksXG4gICAgICBsb2NhdGlvblBhdGhuYW1lLFxuICAgICAgcmVsYXRpdmUgPT09IFwicGF0aFwiXG4gICAgKSxcbiAgICBbdG8sIHJvdXRlUGF0aG5hbWVzSnNvbiwgbG9jYXRpb25QYXRobmFtZSwgcmVsYXRpdmVdXG4gICk7XG59XG5mdW5jdGlvbiB1c2VSb3V0ZXMocm91dGVzLCBsb2NhdGlvbkFyZykge1xuICByZXR1cm4gdXNlUm91dGVzSW1wbChyb3V0ZXMsIGxvY2F0aW9uQXJnKTtcbn1cbmZ1bmN0aW9uIHVzZVJvdXRlc0ltcGwocm91dGVzLCBsb2NhdGlvbkFyZywgZGF0YVJvdXRlclN0YXRlLCBmdXR1cmUpIHtcbiAgaW52YXJpYW50KFxuICAgIHVzZUluUm91dGVyQ29udGV4dCgpLFxuICAgIC8vIFRPRE86IFRoaXMgZXJyb3IgaXMgcHJvYmFibHkgYmVjYXVzZSB0aGV5IHNvbWVob3cgaGF2ZSAyIHZlcnNpb25zIG9mIHRoZVxuICAgIC8vIHJvdXRlciBsb2FkZWQuIFdlIGNhbiBoZWxwIHRoZW0gdW5kZXJzdGFuZCBob3cgdG8gYXZvaWQgdGhhdC5cbiAgICBgdXNlUm91dGVzKCkgbWF5IGJlIHVzZWQgb25seSBpbiB0aGUgY29udGV4dCBvZiBhIDxSb3V0ZXI+IGNvbXBvbmVudC5gXG4gICk7XG4gIGxldCB7IG5hdmlnYXRvcjogbmF2aWdhdG9yMiB9ID0gUmVhY3QyLnVzZUNvbnRleHQoTmF2aWdhdGlvbkNvbnRleHQpO1xuICBsZXQgeyBtYXRjaGVzOiBwYXJlbnRNYXRjaGVzIH0gPSBSZWFjdDIudXNlQ29udGV4dChSb3V0ZUNvbnRleHQpO1xuICBsZXQgcm91dGVNYXRjaCA9IHBhcmVudE1hdGNoZXNbcGFyZW50TWF0Y2hlcy5sZW5ndGggLSAxXTtcbiAgbGV0IHBhcmVudFBhcmFtcyA9IHJvdXRlTWF0Y2ggPyByb3V0ZU1hdGNoLnBhcmFtcyA6IHt9O1xuICBsZXQgcGFyZW50UGF0aG5hbWUgPSByb3V0ZU1hdGNoID8gcm91dGVNYXRjaC5wYXRobmFtZSA6IFwiL1wiO1xuICBsZXQgcGFyZW50UGF0aG5hbWVCYXNlID0gcm91dGVNYXRjaCA/IHJvdXRlTWF0Y2gucGF0aG5hbWVCYXNlIDogXCIvXCI7XG4gIGxldCBwYXJlbnRSb3V0ZSA9IHJvdXRlTWF0Y2ggJiYgcm91dGVNYXRjaC5yb3V0ZTtcbiAgaWYgKEVOQUJMRV9ERVZfV0FSTklOR1MpIHtcbiAgICBsZXQgcGFyZW50UGF0aCA9IHBhcmVudFJvdXRlICYmIHBhcmVudFJvdXRlLnBhdGggfHwgXCJcIjtcbiAgICB3YXJuaW5nT25jZShcbiAgICAgIHBhcmVudFBhdGhuYW1lLFxuICAgICAgIXBhcmVudFJvdXRlIHx8IHBhcmVudFBhdGguZW5kc1dpdGgoXCIqXCIpIHx8IHBhcmVudFBhdGguZW5kc1dpdGgoXCIqP1wiKSxcbiAgICAgIGBZb3UgcmVuZGVyZWQgZGVzY2VuZGFudCA8Um91dGVzPiAob3IgY2FsbGVkIFxcYHVzZVJvdXRlcygpXFxgKSBhdCBcIiR7cGFyZW50UGF0aG5hbWV9XCIgKHVuZGVyIDxSb3V0ZSBwYXRoPVwiJHtwYXJlbnRQYXRofVwiPikgYnV0IHRoZSBwYXJlbnQgcm91dGUgcGF0aCBoYXMgbm8gdHJhaWxpbmcgXCIqXCIuIFRoaXMgbWVhbnMgaWYgeW91IG5hdmlnYXRlIGRlZXBlciwgdGhlIHBhcmVudCB3b24ndCBtYXRjaCBhbnltb3JlIGFuZCB0aGVyZWZvcmUgdGhlIGNoaWxkIHJvdXRlcyB3aWxsIG5ldmVyIHJlbmRlci5cblxuUGxlYXNlIGNoYW5nZSB0aGUgcGFyZW50IDxSb3V0ZSBwYXRoPVwiJHtwYXJlbnRQYXRofVwiPiB0byA8Um91dGUgcGF0aD1cIiR7cGFyZW50UGF0aCA9PT0gXCIvXCIgPyBcIipcIiA6IGAke3BhcmVudFBhdGh9LypgfVwiPi5gXG4gICAgKTtcbiAgfVxuICBsZXQgbG9jYXRpb25Gcm9tQ29udGV4dCA9IHVzZUxvY2F0aW9uKCk7XG4gIGxldCBsb2NhdGlvbjtcbiAgaWYgKGxvY2F0aW9uQXJnKSB7XG4gICAgbGV0IHBhcnNlZExvY2F0aW9uQXJnID0gdHlwZW9mIGxvY2F0aW9uQXJnID09PSBcInN0cmluZ1wiID8gcGFyc2VQYXRoKGxvY2F0aW9uQXJnKSA6IGxvY2F0aW9uQXJnO1xuICAgIGludmFyaWFudChcbiAgICAgIHBhcmVudFBhdGhuYW1lQmFzZSA9PT0gXCIvXCIgfHwgcGFyc2VkTG9jYXRpb25BcmcucGF0aG5hbWU/LnN0YXJ0c1dpdGgocGFyZW50UGF0aG5hbWVCYXNlKSxcbiAgICAgIGBXaGVuIG92ZXJyaWRpbmcgdGhlIGxvY2F0aW9uIHVzaW5nIFxcYDxSb3V0ZXMgbG9jYXRpb24+XFxgIG9yIFxcYHVzZVJvdXRlcyhyb3V0ZXMsIGxvY2F0aW9uKVxcYCwgdGhlIGxvY2F0aW9uIHBhdGhuYW1lIG11c3QgYmVnaW4gd2l0aCB0aGUgcG9ydGlvbiBvZiB0aGUgVVJMIHBhdGhuYW1lIHRoYXQgd2FzIG1hdGNoZWQgYnkgYWxsIHBhcmVudCByb3V0ZXMuIFRoZSBjdXJyZW50IHBhdGhuYW1lIGJhc2UgaXMgXCIke3BhcmVudFBhdGhuYW1lQmFzZX1cIiBidXQgcGF0aG5hbWUgXCIke3BhcnNlZExvY2F0aW9uQXJnLnBhdGhuYW1lfVwiIHdhcyBnaXZlbiBpbiB0aGUgXFxgbG9jYXRpb25cXGAgcHJvcC5gXG4gICAgKTtcbiAgICBsb2NhdGlvbiA9IHBhcnNlZExvY2F0aW9uQXJnO1xuICB9IGVsc2Uge1xuICAgIGxvY2F0aW9uID0gbG9jYXRpb25Gcm9tQ29udGV4dDtcbiAgfVxuICBsZXQgcGF0aG5hbWUgPSBsb2NhdGlvbi5wYXRobmFtZSB8fCBcIi9cIjtcbiAgbGV0IHJlbWFpbmluZ1BhdGhuYW1lID0gcGF0aG5hbWU7XG4gIGlmIChwYXJlbnRQYXRobmFtZUJhc2UgIT09IFwiL1wiKSB7XG4gICAgbGV0IHBhcmVudFNlZ21lbnRzID0gcGFyZW50UGF0aG5hbWVCYXNlLnJlcGxhY2UoL15cXC8vLCBcIlwiKS5zcGxpdChcIi9cIik7XG4gICAgbGV0IHNlZ21lbnRzID0gcGF0aG5hbWUucmVwbGFjZSgvXlxcLy8sIFwiXCIpLnNwbGl0KFwiL1wiKTtcbiAgICByZW1haW5pbmdQYXRobmFtZSA9IFwiL1wiICsgc2VnbWVudHMuc2xpY2UocGFyZW50U2VnbWVudHMubGVuZ3RoKS5qb2luKFwiL1wiKTtcbiAgfVxuICBsZXQgbWF0Y2hlcyA9IG1hdGNoUm91dGVzKHJvdXRlcywgeyBwYXRobmFtZTogcmVtYWluaW5nUGF0aG5hbWUgfSk7XG4gIGlmIChFTkFCTEVfREVWX1dBUk5JTkdTKSB7XG4gICAgd2FybmluZyhcbiAgICAgIHBhcmVudFJvdXRlIHx8IG1hdGNoZXMgIT0gbnVsbCxcbiAgICAgIGBObyByb3V0ZXMgbWF0Y2hlZCBsb2NhdGlvbiBcIiR7bG9jYXRpb24ucGF0aG5hbWV9JHtsb2NhdGlvbi5zZWFyY2h9JHtsb2NhdGlvbi5oYXNofVwiIGBcbiAgICApO1xuICAgIHdhcm5pbmcoXG4gICAgICBtYXRjaGVzID09IG51bGwgfHwgbWF0Y2hlc1ttYXRjaGVzLmxlbmd0aCAtIDFdLnJvdXRlLmVsZW1lbnQgIT09IHZvaWQgMCB8fCBtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV0ucm91dGUuQ29tcG9uZW50ICE9PSB2b2lkIDAgfHwgbWF0Y2hlc1ttYXRjaGVzLmxlbmd0aCAtIDFdLnJvdXRlLmxhenkgIT09IHZvaWQgMCxcbiAgICAgIGBNYXRjaGVkIGxlYWYgcm91dGUgYXQgbG9jYXRpb24gXCIke2xvY2F0aW9uLnBhdGhuYW1lfSR7bG9jYXRpb24uc2VhcmNofSR7bG9jYXRpb24uaGFzaH1cIiBkb2VzIG5vdCBoYXZlIGFuIGVsZW1lbnQgb3IgQ29tcG9uZW50LiBUaGlzIG1lYW5zIGl0IHdpbGwgcmVuZGVyIGFuIDxPdXRsZXQgLz4gd2l0aCBhIG51bGwgdmFsdWUgYnkgZGVmYXVsdCByZXN1bHRpbmcgaW4gYW4gXCJlbXB0eVwiIHBhZ2UuYFxuICAgICk7XG4gIH1cbiAgbGV0IHJlbmRlcmVkTWF0Y2hlcyA9IF9yZW5kZXJNYXRjaGVzKFxuICAgIG1hdGNoZXMgJiYgbWF0Y2hlcy5tYXAoXG4gICAgICAobWF0Y2gpID0+IE9iamVjdC5hc3NpZ24oe30sIG1hdGNoLCB7XG4gICAgICAgIHBhcmFtczogT2JqZWN0LmFzc2lnbih7fSwgcGFyZW50UGFyYW1zLCBtYXRjaC5wYXJhbXMpLFxuICAgICAgICBwYXRobmFtZTogam9pblBhdGhzKFtcbiAgICAgICAgICBwYXJlbnRQYXRobmFtZUJhc2UsXG4gICAgICAgICAgLy8gUmUtZW5jb2RlIHBhdGhuYW1lcyB0aGF0IHdlcmUgZGVjb2RlZCBpbnNpZGUgbWF0Y2hSb3V0ZXNcbiAgICAgICAgICBuYXZpZ2F0b3IyLmVuY29kZUxvY2F0aW9uID8gbmF2aWdhdG9yMi5lbmNvZGVMb2NhdGlvbihtYXRjaC5wYXRobmFtZSkucGF0aG5hbWUgOiBtYXRjaC5wYXRobmFtZVxuICAgICAgICBdKSxcbiAgICAgICAgcGF0aG5hbWVCYXNlOiBtYXRjaC5wYXRobmFtZUJhc2UgPT09IFwiL1wiID8gcGFyZW50UGF0aG5hbWVCYXNlIDogam9pblBhdGhzKFtcbiAgICAgICAgICBwYXJlbnRQYXRobmFtZUJhc2UsXG4gICAgICAgICAgLy8gUmUtZW5jb2RlIHBhdGhuYW1lcyB0aGF0IHdlcmUgZGVjb2RlZCBpbnNpZGUgbWF0Y2hSb3V0ZXNcbiAgICAgICAgICBuYXZpZ2F0b3IyLmVuY29kZUxvY2F0aW9uID8gbmF2aWdhdG9yMi5lbmNvZGVMb2NhdGlvbihtYXRjaC5wYXRobmFtZUJhc2UpLnBhdGhuYW1lIDogbWF0Y2gucGF0aG5hbWVCYXNlXG4gICAgICAgIF0pXG4gICAgICB9KVxuICAgICksXG4gICAgcGFyZW50TWF0Y2hlcyxcbiAgICBkYXRhUm91dGVyU3RhdGUsXG4gICAgZnV0dXJlXG4gICk7XG4gIGlmIChsb2NhdGlvbkFyZyAmJiByZW5kZXJlZE1hdGNoZXMpIHtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0Mi5jcmVhdGVFbGVtZW50KFxuICAgICAgTG9jYXRpb25Db250ZXh0LlByb3ZpZGVyLFxuICAgICAge1xuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgICAgICBwYXRobmFtZTogXCIvXCIsXG4gICAgICAgICAgICBzZWFyY2g6IFwiXCIsXG4gICAgICAgICAgICBoYXNoOiBcIlwiLFxuICAgICAgICAgICAgc3RhdGU6IG51bGwsXG4gICAgICAgICAgICBrZXk6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgLi4ubG9jYXRpb25cbiAgICAgICAgICB9LFxuICAgICAgICAgIG5hdmlnYXRpb25UeXBlOiBcIlBPUFwiIC8qIFBvcCAqL1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcmVuZGVyZWRNYXRjaGVzXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcmVuZGVyZWRNYXRjaGVzO1xufVxuZnVuY3Rpb24gRGVmYXVsdEVycm9yQ29tcG9uZW50KCkge1xuICBsZXQgZXJyb3IgPSB1c2VSb3V0ZUVycm9yKCk7XG4gIGxldCBtZXNzYWdlID0gaXNSb3V0ZUVycm9yUmVzcG9uc2UoZXJyb3IpID8gYCR7ZXJyb3Iuc3RhdHVzfSAke2Vycm9yLnN0YXR1c1RleHR9YCA6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogSlNPTi5zdHJpbmdpZnkoZXJyb3IpO1xuICBsZXQgc3RhY2sgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3Iuc3RhY2sgOiBudWxsO1xuICBsZXQgbGlnaHRncmV5ID0gXCJyZ2JhKDIwMCwyMDAsMjAwLCAwLjUpXCI7XG4gIGxldCBwcmVTdHlsZXMgPSB7IHBhZGRpbmc6IFwiMC41cmVtXCIsIGJhY2tncm91bmRDb2xvcjogbGlnaHRncmV5IH07XG4gIGxldCBjb2RlU3R5bGVzID0geyBwYWRkaW5nOiBcIjJweCA0cHhcIiwgYmFja2dyb3VuZENvbG9yOiBsaWdodGdyZXkgfTtcbiAgbGV0IGRldkluZm8gPSBudWxsO1xuICBpZiAoRU5BQkxFX0RFVl9XQVJOSU5HUykge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIkVycm9yIGhhbmRsZWQgYnkgUmVhY3QgUm91dGVyIGRlZmF1bHQgRXJyb3JCb3VuZGFyeTpcIixcbiAgICAgIGVycm9yXG4gICAgKTtcbiAgICBkZXZJbmZvID0gLyogQF9fUFVSRV9fICovIFJlYWN0Mi5jcmVhdGVFbGVtZW50KFJlYWN0Mi5GcmFnbWVudCwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0Mi5jcmVhdGVFbGVtZW50KFwicFwiLCBudWxsLCBcIlxcdXsxRjRCRn0gSGV5IGRldmVsb3BlciBcXHV7MUY0NEJ9XCIpLCAvKiBAX19QVVJFX18gKi8gUmVhY3QyLmNyZWF0ZUVsZW1lbnQoXCJwXCIsIG51bGwsIFwiWW91IGNhbiBwcm92aWRlIGEgd2F5IGJldHRlciBVWCB0aGFuIHRoaXMgd2hlbiB5b3VyIGFwcCB0aHJvd3MgZXJyb3JzIGJ5IHByb3ZpZGluZyB5b3VyIG93biBcIiwgLyogQF9fUFVSRV9fICovIFJlYWN0Mi5jcmVhdGVFbGVtZW50KFwiY29kZVwiLCB7IHN0eWxlOiBjb2RlU3R5bGVzIH0sIFwiRXJyb3JCb3VuZGFyeVwiKSwgXCIgb3JcIiwgXCIgXCIsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChcImNvZGVcIiwgeyBzdHlsZTogY29kZVN0eWxlcyB9LCBcImVycm9yRWxlbWVudFwiKSwgXCIgcHJvcCBvbiB5b3VyIHJvdXRlLlwiKSk7XG4gIH1cbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChSZWFjdDIuRnJhZ21lbnQsIG51bGwsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChcImgyXCIsIG51bGwsIFwiVW5leHBlY3RlZCBBcHBsaWNhdGlvbiBFcnJvciFcIiksIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChcImgzXCIsIHsgc3R5bGU6IHsgZm9udFN0eWxlOiBcIml0YWxpY1wiIH0gfSwgbWVzc2FnZSksIHN0YWNrID8gLyogQF9fUFVSRV9fICovIFJlYWN0Mi5jcmVhdGVFbGVtZW50KFwicHJlXCIsIHsgc3R5bGU6IHByZVN0eWxlcyB9LCBzdGFjaykgOiBudWxsLCBkZXZJbmZvKTtcbn1cbnZhciBkZWZhdWx0RXJyb3JFbGVtZW50ID0gLyogQF9fUFVSRV9fICovIFJlYWN0Mi5jcmVhdGVFbGVtZW50KERlZmF1bHRFcnJvckNvbXBvbmVudCwgbnVsbCk7XG52YXIgUmVuZGVyRXJyb3JCb3VuZGFyeSA9IGNsYXNzIGV4dGVuZHMgUmVhY3QyLkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBsb2NhdGlvbjogcHJvcHMubG9jYXRpb24sXG4gICAgICByZXZhbGlkYXRpb246IHByb3BzLnJldmFsaWRhdGlvbixcbiAgICAgIGVycm9yOiBwcm9wcy5lcnJvclxuICAgIH07XG4gIH1cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihlcnJvcikge1xuICAgIHJldHVybiB7IGVycm9yIH07XG4gIH1cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhwcm9wcywgc3RhdGUpIHtcbiAgICBpZiAoc3RhdGUubG9jYXRpb24gIT09IHByb3BzLmxvY2F0aW9uIHx8IHN0YXRlLnJldmFsaWRhdGlvbiAhPT0gXCJpZGxlXCIgJiYgcHJvcHMucmV2YWxpZGF0aW9uID09PSBcImlkbGVcIikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZXJyb3I6IHByb3BzLmVycm9yLFxuICAgICAgICBsb2NhdGlvbjogcHJvcHMubG9jYXRpb24sXG4gICAgICAgIHJldmFsaWRhdGlvbjogcHJvcHMucmV2YWxpZGF0aW9uXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3I6IHByb3BzLmVycm9yICE9PSB2b2lkIDAgPyBwcm9wcy5lcnJvciA6IHN0YXRlLmVycm9yLFxuICAgICAgbG9jYXRpb246IHN0YXRlLmxvY2F0aW9uLFxuICAgICAgcmV2YWxpZGF0aW9uOiBwcm9wcy5yZXZhbGlkYXRpb24gfHwgc3RhdGUucmV2YWxpZGF0aW9uXG4gICAgfTtcbiAgfVxuICBjb21wb25lbnREaWRDYXRjaChlcnJvciwgZXJyb3JJbmZvKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiUmVhY3QgUm91dGVyIGNhdWdodCB0aGUgZm9sbG93aW5nIGVycm9yIGR1cmluZyByZW5kZXJcIixcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3JJbmZvXG4gICAgKTtcbiAgfVxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuZXJyb3IgIT09IHZvaWQgMCA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChSb3V0ZUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHRoaXMucHJvcHMucm91dGVDb250ZXh0IH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDIuY3JlYXRlRWxlbWVudChcbiAgICAgIFJvdXRlRXJyb3JDb250ZXh0LlByb3ZpZGVyLFxuICAgICAge1xuICAgICAgICB2YWx1ZTogdGhpcy5zdGF0ZS5lcnJvcixcbiAgICAgICAgY2hpbGRyZW46IHRoaXMucHJvcHMuY29tcG9uZW50XG4gICAgICB9XG4gICAgKSkgOiB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICB9XG59O1xuZnVuY3Rpb24gUmVuZGVyZWRSb3V0ZSh7IHJvdXRlQ29udGV4dCwgbWF0Y2gsIGNoaWxkcmVuIH0pIHtcbiAgbGV0IGRhdGFSb3V0ZXJDb250ZXh0ID0gUmVhY3QyLnVzZUNvbnRleHQoRGF0YVJvdXRlckNvbnRleHQpO1xuICBpZiAoZGF0YVJvdXRlckNvbnRleHQgJiYgZGF0YVJvdXRlckNvbnRleHQuc3RhdGljICYmIGRhdGFSb3V0ZXJDb250ZXh0LnN0YXRpY0NvbnRleHQgJiYgKG1hdGNoLnJvdXRlLmVycm9yRWxlbWVudCB8fCBtYXRjaC5yb3V0ZS5FcnJvckJvdW5kYXJ5KSkge1xuICAgIGRhdGFSb3V0ZXJDb250ZXh0LnN0YXRpY0NvbnRleHQuX2RlZXBlc3RSZW5kZXJlZEJvdW5kYXJ5SWQgPSBtYXRjaC5yb3V0ZS5pZDtcbiAgfVxuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0Mi5jcmVhdGVFbGVtZW50KFJvdXRlQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogcm91dGVDb250ZXh0IH0sIGNoaWxkcmVuKTtcbn1cbmZ1bmN0aW9uIF9yZW5kZXJNYXRjaGVzKG1hdGNoZXMsIHBhcmVudE1hdGNoZXMgPSBbXSwgZGF0YVJvdXRlclN0YXRlID0gbnVsbCwgZnV0dXJlID0gbnVsbCkge1xuICBpZiAobWF0Y2hlcyA9PSBudWxsKSB7XG4gICAgaWYgKCFkYXRhUm91dGVyU3RhdGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoZGF0YVJvdXRlclN0YXRlLmVycm9ycykge1xuICAgICAgbWF0Y2hlcyA9IGRhdGFSb3V0ZXJTdGF0ZS5tYXRjaGVzO1xuICAgIH0gZWxzZSBpZiAocGFyZW50TWF0Y2hlcy5sZW5ndGggPT09IDAgJiYgIWRhdGFSb3V0ZXJTdGF0ZS5pbml0aWFsaXplZCAmJiBkYXRhUm91dGVyU3RhdGUubWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICBtYXRjaGVzID0gZGF0YVJvdXRlclN0YXRlLm1hdGNoZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuICBsZXQgcmVuZGVyZWRNYXRjaGVzID0gbWF0Y2hlcztcbiAgbGV0IGVycm9ycyA9IGRhdGFSb3V0ZXJTdGF0ZT8uZXJyb3JzO1xuICBpZiAoZXJyb3JzICE9IG51bGwpIHtcbiAgICBsZXQgZXJyb3JJbmRleCA9IHJlbmRlcmVkTWF0Y2hlcy5maW5kSW5kZXgoXG4gICAgICAobSkgPT4gbS5yb3V0ZS5pZCAmJiBlcnJvcnM/LlttLnJvdXRlLmlkXSAhPT0gdm9pZCAwXG4gICAgKTtcbiAgICBpbnZhcmlhbnQoXG4gICAgICBlcnJvckluZGV4ID49IDAsXG4gICAgICBgQ291bGQgbm90IGZpbmQgYSBtYXRjaGluZyByb3V0ZSBmb3IgZXJyb3JzIG9uIHJvdXRlIElEczogJHtPYmplY3Qua2V5cyhcbiAgICAgICAgZXJyb3JzXG4gICAgICApLmpvaW4oXCIsXCIpfWBcbiAgICApO1xuICAgIHJlbmRlcmVkTWF0Y2hlcyA9IHJlbmRlcmVkTWF0Y2hlcy5zbGljZShcbiAgICAgIDAsXG4gICAgICBNYXRoLm1pbihyZW5kZXJlZE1hdGNoZXMubGVuZ3RoLCBlcnJvckluZGV4ICsgMSlcbiAgICApO1xuICB9XG4gIGxldCByZW5kZXJGYWxsYmFjayA9IGZhbHNlO1xuICBsZXQgZmFsbGJhY2tJbmRleCA9IC0xO1xuICBpZiAoZGF0YVJvdXRlclN0YXRlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZW5kZXJlZE1hdGNoZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBtYXRjaCA9IHJlbmRlcmVkTWF0Y2hlc1tpXTtcbiAgICAgIGlmIChtYXRjaC5yb3V0ZS5IeWRyYXRlRmFsbGJhY2sgfHwgbWF0Y2gucm91dGUuaHlkcmF0ZUZhbGxiYWNrRWxlbWVudCkge1xuICAgICAgICBmYWxsYmFja0luZGV4ID0gaTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXRjaC5yb3V0ZS5pZCkge1xuICAgICAgICBsZXQgeyBsb2FkZXJEYXRhLCBlcnJvcnM6IGVycm9yczIgfSA9IGRhdGFSb3V0ZXJTdGF0ZTtcbiAgICAgICAgbGV0IG5lZWRzVG9SdW5Mb2FkZXIgPSBtYXRjaC5yb3V0ZS5sb2FkZXIgJiYgIWxvYWRlckRhdGEuaGFzT3duUHJvcGVydHkobWF0Y2gucm91dGUuaWQpICYmICghZXJyb3JzMiB8fCBlcnJvcnMyW21hdGNoLnJvdXRlLmlkXSA9PT0gdm9pZCAwKTtcbiAgICAgICAgaWYgKG1hdGNoLnJvdXRlLmxhenkgfHwgbmVlZHNUb1J1bkxvYWRlcikge1xuICAgICAgICAgIHJlbmRlckZhbGxiYWNrID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoZmFsbGJhY2tJbmRleCA+PSAwKSB7XG4gICAgICAgICAgICByZW5kZXJlZE1hdGNoZXMgPSByZW5kZXJlZE1hdGNoZXMuc2xpY2UoMCwgZmFsbGJhY2tJbmRleCArIDEpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZW5kZXJlZE1hdGNoZXMgPSBbcmVuZGVyZWRNYXRjaGVzWzBdXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlbmRlcmVkTWF0Y2hlcy5yZWR1Y2VSaWdodCgob3V0bGV0LCBtYXRjaCwgaW5kZXgpID0+IHtcbiAgICBsZXQgZXJyb3I7XG4gICAgbGV0IHNob3VsZFJlbmRlckh5ZHJhdGVGYWxsYmFjayA9IGZhbHNlO1xuICAgIGxldCBlcnJvckVsZW1lbnQgPSBudWxsO1xuICAgIGxldCBoeWRyYXRlRmFsbGJhY2tFbGVtZW50ID0gbnVsbDtcbiAgICBpZiAoZGF0YVJvdXRlclN0YXRlKSB7XG4gICAgICBlcnJvciA9IGVycm9ycyAmJiBtYXRjaC5yb3V0ZS5pZCA/IGVycm9yc1ttYXRjaC5yb3V0ZS5pZF0gOiB2b2lkIDA7XG4gICAgICBlcnJvckVsZW1lbnQgPSBtYXRjaC5yb3V0ZS5lcnJvckVsZW1lbnQgfHwgZGVmYXVsdEVycm9yRWxlbWVudDtcbiAgICAgIGlmIChyZW5kZXJGYWxsYmFjaykge1xuICAgICAgICBpZiAoZmFsbGJhY2tJbmRleCA8IDAgJiYgaW5kZXggPT09IDApIHtcbiAgICAgICAgICB3YXJuaW5nT25jZShcbiAgICAgICAgICAgIFwicm91dGUtZmFsbGJhY2tcIixcbiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgXCJObyBgSHlkcmF0ZUZhbGxiYWNrYCBlbGVtZW50IHByb3ZpZGVkIHRvIHJlbmRlciBkdXJpbmcgaW5pdGlhbCBoeWRyYXRpb25cIlxuICAgICAgICAgICk7XG4gICAgICAgICAgc2hvdWxkUmVuZGVySHlkcmF0ZUZhbGxiYWNrID0gdHJ1ZTtcbiAgICAgICAgICBoeWRyYXRlRmFsbGJhY2tFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmIChmYWxsYmFja0luZGV4ID09PSBpbmRleCkge1xuICAgICAgICAgIHNob3VsZFJlbmRlckh5ZHJhdGVGYWxsYmFjayA9IHRydWU7XG4gICAgICAgICAgaHlkcmF0ZUZhbGxiYWNrRWxlbWVudCA9IG1hdGNoLnJvdXRlLmh5ZHJhdGVGYWxsYmFja0VsZW1lbnQgfHwgbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBsZXQgbWF0Y2hlczIgPSBwYXJlbnRNYXRjaGVzLmNvbmNhdChyZW5kZXJlZE1hdGNoZXMuc2xpY2UoMCwgaW5kZXggKyAxKSk7XG4gICAgbGV0IGdldENoaWxkcmVuID0gKCkgPT4ge1xuICAgICAgbGV0IGNoaWxkcmVuO1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNoaWxkcmVuID0gZXJyb3JFbGVtZW50O1xuICAgICAgfSBlbHNlIGlmIChzaG91bGRSZW5kZXJIeWRyYXRlRmFsbGJhY2spIHtcbiAgICAgICAgY2hpbGRyZW4gPSBoeWRyYXRlRmFsbGJhY2tFbGVtZW50O1xuICAgICAgfSBlbHNlIGlmIChtYXRjaC5yb3V0ZS5Db21wb25lbnQpIHtcbiAgICAgICAgY2hpbGRyZW4gPSAvKiBAX19QVVJFX18gKi8gUmVhY3QyLmNyZWF0ZUVsZW1lbnQobWF0Y2gucm91dGUuQ29tcG9uZW50LCBudWxsKTtcbiAgICAgIH0gZWxzZSBpZiAobWF0Y2gucm91dGUuZWxlbWVudCkge1xuICAgICAgICBjaGlsZHJlbiA9IG1hdGNoLnJvdXRlLmVsZW1lbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGlsZHJlbiA9IG91dGxldDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QyLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgIFJlbmRlcmVkUm91dGUsXG4gICAgICAgIHtcbiAgICAgICAgICBtYXRjaCxcbiAgICAgICAgICByb3V0ZUNvbnRleHQ6IHtcbiAgICAgICAgICAgIG91dGxldCxcbiAgICAgICAgICAgIG1hdGNoZXM6IG1hdGNoZXMyLFxuICAgICAgICAgICAgaXNEYXRhUm91dGU6IGRhdGFSb3V0ZXJTdGF0ZSAhPSBudWxsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjaGlsZHJlblxuICAgICAgICB9XG4gICAgICApO1xuICAgIH07XG4gICAgcmV0dXJuIGRhdGFSb3V0ZXJTdGF0ZSAmJiAobWF0Y2gucm91dGUuRXJyb3JCb3VuZGFyeSB8fCBtYXRjaC5yb3V0ZS5lcnJvckVsZW1lbnQgfHwgaW5kZXggPT09IDApID8gLyogQF9fUFVSRV9fICovIFJlYWN0Mi5jcmVhdGVFbGVtZW50KFxuICAgICAgUmVuZGVyRXJyb3JCb3VuZGFyeSxcbiAgICAgIHtcbiAgICAgICAgbG9jYXRpb246IGRhdGFSb3V0ZXJTdGF0ZS5sb2NhdGlvbixcbiAgICAgICAgcmV2YWxpZGF0aW9uOiBkYXRhUm91dGVyU3RhdGUucmV2YWxpZGF0aW9uLFxuICAgICAgICBjb21wb25lbnQ6IGVycm9yRWxlbWVudCxcbiAgICAgICAgZXJyb3IsXG4gICAgICAgIGNoaWxkcmVuOiBnZXRDaGlsZHJlbigpLFxuICAgICAgICByb3V0ZUNvbnRleHQ6IHsgb3V0bGV0OiBudWxsLCBtYXRjaGVzOiBtYXRjaGVzMiwgaXNEYXRhUm91dGU6IHRydWUgfVxuICAgICAgfVxuICAgICkgOiBnZXRDaGlsZHJlbigpO1xuICB9LCBudWxsKTtcbn1cbmZ1bmN0aW9uIGdldERhdGFSb3V0ZXJDb25zb2xlRXJyb3IoaG9va05hbWUpIHtcbiAgcmV0dXJuIGAke2hvb2tOYW1lfSBtdXN0IGJlIHVzZWQgd2l0aGluIGEgZGF0YSByb3V0ZXIuICBTZWUgaHR0cHM6Ly9yZWFjdHJvdXRlci5jb20vZW4vbWFpbi9yb3V0ZXJzL3BpY2tpbmctYS1yb3V0ZXIuYDtcbn1cbmZ1bmN0aW9uIHVzZURhdGFSb3V0ZXJDb250ZXh0KGhvb2tOYW1lKSB7XG4gIGxldCBjdHggPSBSZWFjdDIudXNlQ29udGV4dChEYXRhUm91dGVyQ29udGV4dCk7XG4gIGludmFyaWFudChjdHgsIGdldERhdGFSb3V0ZXJDb25zb2xlRXJyb3IoaG9va05hbWUpKTtcbiAgcmV0dXJuIGN0eDtcbn1cbmZ1bmN0aW9uIHVzZURhdGFSb3V0ZXJTdGF0ZShob29rTmFtZSkge1xuICBsZXQgc3RhdGUgPSBSZWFjdDIudXNlQ29udGV4dChEYXRhUm91dGVyU3RhdGVDb250ZXh0KTtcbiAgaW52YXJpYW50KHN0YXRlLCBnZXREYXRhUm91dGVyQ29uc29sZUVycm9yKGhvb2tOYW1lKSk7XG4gIHJldHVybiBzdGF0ZTtcbn1cbmZ1bmN0aW9uIHVzZVJvdXRlQ29udGV4dChob29rTmFtZSkge1xuICBsZXQgcm91dGUgPSBSZWFjdDIudXNlQ29udGV4dChSb3V0ZUNvbnRleHQpO1xuICBpbnZhcmlhbnQocm91dGUsIGdldERhdGFSb3V0ZXJDb25zb2xlRXJyb3IoaG9va05hbWUpKTtcbiAgcmV0dXJuIHJvdXRlO1xufVxuZnVuY3Rpb24gdXNlQ3VycmVudFJvdXRlSWQoaG9va05hbWUpIHtcbiAgbGV0IHJvdXRlID0gdXNlUm91dGVDb250ZXh0KGhvb2tOYW1lKTtcbiAgbGV0IHRoaXNSb3V0ZSA9IHJvdXRlLm1hdGNoZXNbcm91dGUubWF0Y2hlcy5sZW5ndGggLSAxXTtcbiAgaW52YXJpYW50KFxuICAgIHRoaXNSb3V0ZS5yb3V0ZS5pZCxcbiAgICBgJHtob29rTmFtZX0gY2FuIG9ubHkgYmUgdXNlZCBvbiByb3V0ZXMgdGhhdCBjb250YWluIGEgdW5pcXVlIFwiaWRcImBcbiAgKTtcbiAgcmV0dXJuIHRoaXNSb3V0ZS5yb3V0ZS5pZDtcbn1cbmZ1bmN0aW9uIHVzZVJvdXRlSWQoKSB7XG4gIHJldHVybiB1c2VDdXJyZW50Um91dGVJZChcInVzZVJvdXRlSWRcIiAvKiBVc2VSb3V0ZUlkICovKTtcbn1cbmZ1bmN0aW9uIHVzZU5hdmlnYXRpb24oKSB7XG4gIGxldCBzdGF0ZSA9IHVzZURhdGFSb3V0ZXJTdGF0ZShcInVzZU5hdmlnYXRpb25cIiAvKiBVc2VOYXZpZ2F0aW9uICovKTtcbiAgcmV0dXJuIHN0YXRlLm5hdmlnYXRpb247XG59XG5mdW5jdGlvbiB1c2VSZXZhbGlkYXRvcigpIHtcbiAgbGV0IGRhdGFSb3V0ZXJDb250ZXh0ID0gdXNlRGF0YVJvdXRlckNvbnRleHQoXCJ1c2VSZXZhbGlkYXRvclwiIC8qIFVzZVJldmFsaWRhdG9yICovKTtcbiAgbGV0IHN0YXRlID0gdXNlRGF0YVJvdXRlclN0YXRlKFwidXNlUmV2YWxpZGF0b3JcIiAvKiBVc2VSZXZhbGlkYXRvciAqLyk7XG4gIHJldHVybiBSZWFjdDIudXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgYXN5bmMgcmV2YWxpZGF0ZSgpIHtcbiAgICAgICAgYXdhaXQgZGF0YVJvdXRlckNvbnRleHQucm91dGVyLnJldmFsaWRhdGUoKTtcbiAgICAgIH0sXG4gICAgICBzdGF0ZTogc3RhdGUucmV2YWxpZGF0aW9uXG4gICAgfSksXG4gICAgW2RhdGFSb3V0ZXJDb250ZXh0LnJvdXRlciwgc3RhdGUucmV2YWxpZGF0aW9uXVxuICApO1xufVxuZnVuY3Rpb24gdXNlTWF0Y2hlcygpIHtcbiAgbGV0IHsgbWF0Y2hlcywgbG9hZGVyRGF0YSB9ID0gdXNlRGF0YVJvdXRlclN0YXRlKFxuICAgIFwidXNlTWF0Y2hlc1wiIC8qIFVzZU1hdGNoZXMgKi9cbiAgKTtcbiAgcmV0dXJuIFJlYWN0Mi51c2VNZW1vKFxuICAgICgpID0+IG1hdGNoZXMubWFwKChtKSA9PiBjb252ZXJ0Um91dGVNYXRjaFRvVWlNYXRjaChtLCBsb2FkZXJEYXRhKSksXG4gICAgW21hdGNoZXMsIGxvYWRlckRhdGFdXG4gICk7XG59XG5mdW5jdGlvbiB1c2VMb2FkZXJEYXRhKCkge1xuICBsZXQgc3RhdGUgPSB1c2VEYXRhUm91dGVyU3RhdGUoXCJ1c2VMb2FkZXJEYXRhXCIgLyogVXNlTG9hZGVyRGF0YSAqLyk7XG4gIGxldCByb3V0ZUlkID0gdXNlQ3VycmVudFJvdXRlSWQoXCJ1c2VMb2FkZXJEYXRhXCIgLyogVXNlTG9hZGVyRGF0YSAqLyk7XG4gIHJldHVybiBzdGF0ZS5sb2FkZXJEYXRhW3JvdXRlSWRdO1xufVxuZnVuY3Rpb24gdXNlUm91dGVMb2FkZXJEYXRhKHJvdXRlSWQpIHtcbiAgbGV0IHN0YXRlID0gdXNlRGF0YVJvdXRlclN0YXRlKFwidXNlUm91dGVMb2FkZXJEYXRhXCIgLyogVXNlUm91dGVMb2FkZXJEYXRhICovKTtcbiAgcmV0dXJuIHN0YXRlLmxvYWRlckRhdGFbcm91dGVJZF07XG59XG5mdW5jdGlvbiB1c2VBY3Rpb25EYXRhKCkge1xuICBsZXQgc3RhdGUgPSB1c2VEYXRhUm91dGVyU3RhdGUoXCJ1c2VBY3Rpb25EYXRhXCIgLyogVXNlQWN0aW9uRGF0YSAqLyk7XG4gIGxldCByb3V0ZUlkID0gdXNlQ3VycmVudFJvdXRlSWQoXCJ1c2VMb2FkZXJEYXRhXCIgLyogVXNlTG9hZGVyRGF0YSAqLyk7XG4gIHJldHVybiBzdGF0ZS5hY3Rpb25EYXRhID8gc3RhdGUuYWN0aW9uRGF0YVtyb3V0ZUlkXSA6IHZvaWQgMDtcbn1cbmZ1bmN0aW9uIHVzZVJvdXRlRXJyb3IoKSB7XG4gIGxldCBlcnJvciA9IFJlYWN0Mi51c2VDb250ZXh0KFJvdXRlRXJyb3JDb250ZXh0KTtcbiAgbGV0IHN0YXRlID0gdXNlRGF0YVJvdXRlclN0YXRlKFwidXNlUm91dGVFcnJvclwiIC8qIFVzZVJvdXRlRXJyb3IgKi8pO1xuICBsZXQgcm91dGVJZCA9IHVzZUN1cnJlbnRSb3V0ZUlkKFwidXNlUm91dGVFcnJvclwiIC8qIFVzZVJvdXRlRXJyb3IgKi8pO1xuICBpZiAoZXJyb3IgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiBlcnJvcjtcbiAgfVxuICByZXR1cm4gc3RhdGUuZXJyb3JzPy5bcm91dGVJZF07XG59XG5mdW5jdGlvbiB1c2VBc3luY1ZhbHVlKCkge1xuICBsZXQgdmFsdWUgPSBSZWFjdDIudXNlQ29udGV4dChBd2FpdENvbnRleHQpO1xuICByZXR1cm4gdmFsdWU/Ll9kYXRhO1xufVxuZnVuY3Rpb24gdXNlQXN5bmNFcnJvcigpIHtcbiAgbGV0IHZhbHVlID0gUmVhY3QyLnVzZUNvbnRleHQoQXdhaXRDb250ZXh0KTtcbiAgcmV0dXJuIHZhbHVlPy5fZXJyb3I7XG59XG52YXIgYmxvY2tlcklkID0gMDtcbmZ1bmN0aW9uIHVzZUJsb2NrZXIoc2hvdWxkQmxvY2spIHtcbiAgbGV0IHsgcm91dGVyLCBiYXNlbmFtZSB9ID0gdXNlRGF0YVJvdXRlckNvbnRleHQoXCJ1c2VCbG9ja2VyXCIgLyogVXNlQmxvY2tlciAqLyk7XG4gIGxldCBzdGF0ZSA9IHVzZURhdGFSb3V0ZXJTdGF0ZShcInVzZUJsb2NrZXJcIiAvKiBVc2VCbG9ja2VyICovKTtcbiAgbGV0IFtibG9ja2VyS2V5LCBzZXRCbG9ja2VyS2V5XSA9IFJlYWN0Mi51c2VTdGF0ZShcIlwiKTtcbiAgbGV0IGJsb2NrZXJGdW5jdGlvbiA9IFJlYWN0Mi51c2VDYWxsYmFjayhcbiAgICAoYXJnKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHNob3VsZEJsb2NrICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuICEhc2hvdWxkQmxvY2s7XG4gICAgICB9XG4gICAgICBpZiAoYmFzZW5hbWUgPT09IFwiL1wiKSB7XG4gICAgICAgIHJldHVybiBzaG91bGRCbG9jayhhcmcpO1xuICAgICAgfVxuICAgICAgbGV0IHsgY3VycmVudExvY2F0aW9uLCBuZXh0TG9jYXRpb24sIGhpc3RvcnlBY3Rpb24gfSA9IGFyZztcbiAgICAgIHJldHVybiBzaG91bGRCbG9jayh7XG4gICAgICAgIGN1cnJlbnRMb2NhdGlvbjoge1xuICAgICAgICAgIC4uLmN1cnJlbnRMb2NhdGlvbixcbiAgICAgICAgICBwYXRobmFtZTogc3RyaXBCYXNlbmFtZShjdXJyZW50TG9jYXRpb24ucGF0aG5hbWUsIGJhc2VuYW1lKSB8fCBjdXJyZW50TG9jYXRpb24ucGF0aG5hbWVcbiAgICAgICAgfSxcbiAgICAgICAgbmV4dExvY2F0aW9uOiB7XG4gICAgICAgICAgLi4ubmV4dExvY2F0aW9uLFxuICAgICAgICAgIHBhdGhuYW1lOiBzdHJpcEJhc2VuYW1lKG5leHRMb2NhdGlvbi5wYXRobmFtZSwgYmFzZW5hbWUpIHx8IG5leHRMb2NhdGlvbi5wYXRobmFtZVxuICAgICAgICB9LFxuICAgICAgICBoaXN0b3J5QWN0aW9uXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtiYXNlbmFtZSwgc2hvdWxkQmxvY2tdXG4gICk7XG4gIFJlYWN0Mi51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBrZXkgPSBTdHJpbmcoKytibG9ja2VySWQpO1xuICAgIHNldEJsb2NrZXJLZXkoa2V5KTtcbiAgICByZXR1cm4gKCkgPT4gcm91dGVyLmRlbGV0ZUJsb2NrZXIoa2V5KTtcbiAgfSwgW3JvdXRlcl0pO1xuICBSZWFjdDIudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYmxvY2tlcktleSAhPT0gXCJcIikge1xuICAgICAgcm91dGVyLmdldEJsb2NrZXIoYmxvY2tlcktleSwgYmxvY2tlckZ1bmN0aW9uKTtcbiAgICB9XG4gIH0sIFtyb3V0ZXIsIGJsb2NrZXJLZXksIGJsb2NrZXJGdW5jdGlvbl0pO1xuICByZXR1cm4gYmxvY2tlcktleSAmJiBzdGF0ZS5ibG9ja2Vycy5oYXMoYmxvY2tlcktleSkgPyBzdGF0ZS5ibG9ja2Vycy5nZXQoYmxvY2tlcktleSkgOiBJRExFX0JMT0NLRVI7XG59XG5mdW5jdGlvbiB1c2VOYXZpZ2F0ZVN0YWJsZSgpIHtcbiAgbGV0IHsgcm91dGVyIH0gPSB1c2VEYXRhUm91dGVyQ29udGV4dChcInVzZU5hdmlnYXRlXCIgLyogVXNlTmF2aWdhdGVTdGFibGUgKi8pO1xuICBsZXQgaWQgPSB1c2VDdXJyZW50Um91dGVJZChcInVzZU5hdmlnYXRlXCIgLyogVXNlTmF2aWdhdGVTdGFibGUgKi8pO1xuICBsZXQgYWN0aXZlUmVmID0gUmVhY3QyLnVzZVJlZihmYWxzZSk7XG4gIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGFjdGl2ZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgfSk7XG4gIGxldCBuYXZpZ2F0ZSA9IFJlYWN0Mi51c2VDYWxsYmFjayhcbiAgICBhc3luYyAodG8sIG9wdGlvbnMgPSB7fSkgPT4ge1xuICAgICAgd2FybmluZyhhY3RpdmVSZWYuY3VycmVudCwgbmF2aWdhdGVFZmZlY3RXYXJuaW5nKTtcbiAgICAgIGlmICghYWN0aXZlUmVmLmN1cnJlbnQpIHJldHVybjtcbiAgICAgIGlmICh0eXBlb2YgdG8gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgcm91dGVyLm5hdmlnYXRlKHRvKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHJvdXRlci5uYXZpZ2F0ZSh0bywgeyBmcm9tUm91dGVJZDogaWQsIC4uLm9wdGlvbnMgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbcm91dGVyLCBpZF1cbiAgKTtcbiAgcmV0dXJuIG5hdmlnYXRlO1xufVxudmFyIGFscmVhZHlXYXJuZWQgPSB7fTtcbmZ1bmN0aW9uIHdhcm5pbmdPbmNlKGtleSwgY29uZCwgbWVzc2FnZSkge1xuICBpZiAoIWNvbmQgJiYgIWFscmVhZHlXYXJuZWRba2V5XSkge1xuICAgIGFscmVhZHlXYXJuZWRba2V5XSA9IHRydWU7XG4gICAgd2FybmluZyhmYWxzZSwgbWVzc2FnZSk7XG4gIH1cbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL3dhcm5pbmdzLnRzXG52YXIgYWxyZWFkeVdhcm5lZDIgPSB7fTtcbmZ1bmN0aW9uIHdhcm5PbmNlKGNvbmRpdGlvbiwgbWVzc2FnZSkge1xuICBpZiAoIWNvbmRpdGlvbiAmJiAhYWxyZWFkeVdhcm5lZDJbbWVzc2FnZV0pIHtcbiAgICBhbHJlYWR5V2FybmVkMlttZXNzYWdlXSA9IHRydWU7XG4gICAgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICB9XG59XG5cbi8vIGxpYi9jb21wb25lbnRzLnRzeFxudmFyIEVOQUJMRV9ERVZfV0FSTklOR1MyID0gdHJ1ZTtcbmZ1bmN0aW9uIG1hcFJvdXRlUHJvcGVydGllcyhyb3V0ZSkge1xuICBsZXQgdXBkYXRlcyA9IHtcbiAgICAvLyBOb3RlOiB0aGlzIGNoZWNrIGFsc28gb2NjdXJzIGluIGNyZWF0ZVJvdXRlc0Zyb21DaGlsZHJlbiBzbyB1cGRhdGVcbiAgICAvLyB0aGVyZSBpZiB5b3UgY2hhbmdlIHRoaXMgLS0gcGxlYXNlIGFuZCB0aGFuayB5b3UhXG4gICAgaGFzRXJyb3JCb3VuZGFyeTogcm91dGUuaGFzRXJyb3JCb3VuZGFyeSB8fCByb3V0ZS5FcnJvckJvdW5kYXJ5ICE9IG51bGwgfHwgcm91dGUuZXJyb3JFbGVtZW50ICE9IG51bGxcbiAgfTtcbiAgaWYgKHJvdXRlLkNvbXBvbmVudCkge1xuICAgIGlmIChFTkFCTEVfREVWX1dBUk5JTkdTMikge1xuICAgICAgaWYgKHJvdXRlLmVsZW1lbnQpIHtcbiAgICAgICAgd2FybmluZyhcbiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICBcIllvdSBzaG91bGQgbm90IGluY2x1ZGUgYm90aCBgQ29tcG9uZW50YCBhbmQgYGVsZW1lbnRgIG9uIHlvdXIgcm91dGUgLSBgQ29tcG9uZW50YCB3aWxsIGJlIHVzZWQuXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgT2JqZWN0LmFzc2lnbih1cGRhdGVzLCB7XG4gICAgICBlbGVtZW50OiBSZWFjdDMuY3JlYXRlRWxlbWVudChyb3V0ZS5Db21wb25lbnQpLFxuICAgICAgQ29tcG9uZW50OiB2b2lkIDBcbiAgICB9KTtcbiAgfVxuICBpZiAocm91dGUuSHlkcmF0ZUZhbGxiYWNrKSB7XG4gICAgaWYgKEVOQUJMRV9ERVZfV0FSTklOR1MyKSB7XG4gICAgICBpZiAocm91dGUuaHlkcmF0ZUZhbGxiYWNrRWxlbWVudCkge1xuICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIFwiWW91IHNob3VsZCBub3QgaW5jbHVkZSBib3RoIGBIeWRyYXRlRmFsbGJhY2tgIGFuZCBgaHlkcmF0ZUZhbGxiYWNrRWxlbWVudGAgb24geW91ciByb3V0ZSAtIGBIeWRyYXRlRmFsbGJhY2tgIHdpbGwgYmUgdXNlZC5cIlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBPYmplY3QuYXNzaWduKHVwZGF0ZXMsIHtcbiAgICAgIGh5ZHJhdGVGYWxsYmFja0VsZW1lbnQ6IFJlYWN0My5jcmVhdGVFbGVtZW50KHJvdXRlLkh5ZHJhdGVGYWxsYmFjayksXG4gICAgICBIeWRyYXRlRmFsbGJhY2s6IHZvaWQgMFxuICAgIH0pO1xuICB9XG4gIGlmIChyb3V0ZS5FcnJvckJvdW5kYXJ5KSB7XG4gICAgaWYgKEVOQUJMRV9ERVZfV0FSTklOR1MyKSB7XG4gICAgICBpZiAocm91dGUuZXJyb3JFbGVtZW50KSB7XG4gICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgXCJZb3Ugc2hvdWxkIG5vdCBpbmNsdWRlIGJvdGggYEVycm9yQm91bmRhcnlgIGFuZCBgZXJyb3JFbGVtZW50YCBvbiB5b3VyIHJvdXRlIC0gYEVycm9yQm91bmRhcnlgIHdpbGwgYmUgdXNlZC5cIlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBPYmplY3QuYXNzaWduKHVwZGF0ZXMsIHtcbiAgICAgIGVycm9yRWxlbWVudDogUmVhY3QzLmNyZWF0ZUVsZW1lbnQocm91dGUuRXJyb3JCb3VuZGFyeSksXG4gICAgICBFcnJvckJvdW5kYXJ5OiB2b2lkIDBcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gdXBkYXRlcztcbn1cbmZ1bmN0aW9uIGNyZWF0ZU1lbW9yeVJvdXRlcihyb3V0ZXMsIG9wdHMpIHtcbiAgcmV0dXJuIGNyZWF0ZVJvdXRlcih7XG4gICAgYmFzZW5hbWU6IG9wdHM/LmJhc2VuYW1lLFxuICAgIGZ1dHVyZTogb3B0cz8uZnV0dXJlLFxuICAgIGhpc3Rvcnk6IGNyZWF0ZU1lbW9yeUhpc3Rvcnkoe1xuICAgICAgaW5pdGlhbEVudHJpZXM6IG9wdHM/LmluaXRpYWxFbnRyaWVzLFxuICAgICAgaW5pdGlhbEluZGV4OiBvcHRzPy5pbml0aWFsSW5kZXhcbiAgICB9KSxcbiAgICBoeWRyYXRpb25EYXRhOiBvcHRzPy5oeWRyYXRpb25EYXRhLFxuICAgIHJvdXRlcyxcbiAgICBtYXBSb3V0ZVByb3BlcnRpZXMsXG4gICAgZGF0YVN0cmF0ZWd5OiBvcHRzPy5kYXRhU3RyYXRlZ3ksXG4gICAgcGF0Y2hSb3V0ZXNPbk5hdmlnYXRpb246IG9wdHM/LnBhdGNoUm91dGVzT25OYXZpZ2F0aW9uXG4gIH0pLmluaXRpYWxpemUoKTtcbn1cbnZhciBEZWZlcnJlZCA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zdGF0dXMgPSBcInBlbmRpbmdcIjtcbiAgICB0aGlzLnByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnJlc29sdmUgPSAodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSBcInBlbmRpbmdcIikge1xuICAgICAgICAgIHRoaXMuc3RhdHVzID0gXCJyZXNvbHZlZFwiO1xuICAgICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgdGhpcy5yZWplY3QgPSAocmVhc29uKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gXCJwZW5kaW5nXCIpIHtcbiAgICAgICAgICB0aGlzLnN0YXR1cyA9IFwicmVqZWN0ZWRcIjtcbiAgICAgICAgICByZWplY3QocmVhc29uKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxufTtcbmZ1bmN0aW9uIFJvdXRlclByb3ZpZGVyKHtcbiAgcm91dGVyLFxuICBmbHVzaFN5bmM6IHJlYWN0RG9tRmx1c2hTeW5jSW1wbFxufSkge1xuICBsZXQgW3N0YXRlLCBzZXRTdGF0ZUltcGxdID0gUmVhY3QzLnVzZVN0YXRlKHJvdXRlci5zdGF0ZSk7XG4gIGxldCBbcGVuZGluZ1N0YXRlLCBzZXRQZW5kaW5nU3RhdGVdID0gUmVhY3QzLnVzZVN0YXRlKCk7XG4gIGxldCBbdnRDb250ZXh0LCBzZXRWdENvbnRleHRdID0gUmVhY3QzLnVzZVN0YXRlKHtcbiAgICBpc1RyYW5zaXRpb25pbmc6IGZhbHNlXG4gIH0pO1xuICBsZXQgW3JlbmRlckRmZCwgc2V0UmVuZGVyRGZkXSA9IFJlYWN0My51c2VTdGF0ZSgpO1xuICBsZXQgW3RyYW5zaXRpb24sIHNldFRyYW5zaXRpb25dID0gUmVhY3QzLnVzZVN0YXRlKCk7XG4gIGxldCBbaW50ZXJydXB0aW9uLCBzZXRJbnRlcnJ1cHRpb25dID0gUmVhY3QzLnVzZVN0YXRlKCk7XG4gIGxldCBmZXRjaGVyRGF0YSA9IFJlYWN0My51c2VSZWYoLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSk7XG4gIGxldCBzZXRTdGF0ZSA9IFJlYWN0My51c2VDYWxsYmFjayhcbiAgICAobmV3U3RhdGUsIHsgZGVsZXRlZEZldGNoZXJzLCBmbHVzaFN5bmMsIHZpZXdUcmFuc2l0aW9uT3B0cyB9KSA9PiB7XG4gICAgICBkZWxldGVkRmV0Y2hlcnMuZm9yRWFjaCgoa2V5KSA9PiBmZXRjaGVyRGF0YS5jdXJyZW50LmRlbGV0ZShrZXkpKTtcbiAgICAgIG5ld1N0YXRlLmZldGNoZXJzLmZvckVhY2goKGZldGNoZXIsIGtleSkgPT4ge1xuICAgICAgICBpZiAoZmV0Y2hlci5kYXRhICE9PSB2b2lkIDApIHtcbiAgICAgICAgICBmZXRjaGVyRGF0YS5jdXJyZW50LnNldChrZXksIGZldGNoZXIuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgd2Fybk9uY2UoXG4gICAgICAgIGZsdXNoU3luYyA9PT0gZmFsc2UgfHwgcmVhY3REb21GbHVzaFN5bmNJbXBsICE9IG51bGwsXG4gICAgICAgICdZb3UgcHJvdmlkZWQgdGhlIGBmbHVzaFN5bmNgIG9wdGlvbiB0byBhIHJvdXRlciB1cGRhdGUsIGJ1dCB5b3UgYXJlIG5vdCB1c2luZyB0aGUgYDxSb3V0ZXJQcm92aWRlcj5gIGZyb20gYHJlYWN0LXJvdXRlci9kb21gIHNvIGBSZWFjdERPTS5mbHVzaFN5bmMoKWAgaXMgdW5hdmFpbGFibGUuICBQbGVhc2UgdXBkYXRlIHlvdXIgYXBwIHRvIGBpbXBvcnQgeyBSb3V0ZXJQcm92aWRlciB9IGZyb20gXCJyZWFjdC1yb3V0ZXIvZG9tXCJgIGFuZCBlbnN1cmUgeW91IGhhdmUgYHJlYWN0LWRvbWAgaW5zdGFsbGVkIGFzIGEgZGVwZW5kZW5jeSB0byB1c2UgdGhlIGBmbHVzaFN5bmNgIG9wdGlvbi4nXG4gICAgICApO1xuICAgICAgbGV0IGlzVmlld1RyYW5zaXRpb25BdmFpbGFibGUgPSByb3V0ZXIud2luZG93ICE9IG51bGwgJiYgcm91dGVyLndpbmRvdy5kb2N1bWVudCAhPSBudWxsICYmIHR5cGVvZiByb3V0ZXIud2luZG93LmRvY3VtZW50LnN0YXJ0Vmlld1RyYW5zaXRpb24gPT09IFwiZnVuY3Rpb25cIjtcbiAgICAgIHdhcm5PbmNlKFxuICAgICAgICB2aWV3VHJhbnNpdGlvbk9wdHMgPT0gbnVsbCB8fCBpc1ZpZXdUcmFuc2l0aW9uQXZhaWxhYmxlLFxuICAgICAgICBcIllvdSBwcm92aWRlZCB0aGUgYHZpZXdUcmFuc2l0aW9uYCBvcHRpb24gdG8gYSByb3V0ZXIgdXBkYXRlLCBidXQgeW91IGRvIG5vdCBhcHBlYXIgdG8gYmUgcnVubmluZyBpbiBhIERPTSBlbnZpcm9ubWVudCBhcyBgd2luZG93LnN0YXJ0Vmlld1RyYW5zaXRpb25gIGlzIG5vdCBhdmFpbGFibGUuXCJcbiAgICAgICk7XG4gICAgICBpZiAoIXZpZXdUcmFuc2l0aW9uT3B0cyB8fCAhaXNWaWV3VHJhbnNpdGlvbkF2YWlsYWJsZSkge1xuICAgICAgICBpZiAocmVhY3REb21GbHVzaFN5bmNJbXBsICYmIGZsdXNoU3luYykge1xuICAgICAgICAgIHJlYWN0RG9tRmx1c2hTeW5jSW1wbCgoKSA9PiBzZXRTdGF0ZUltcGwobmV3U3RhdGUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBSZWFjdDMuc3RhcnRUcmFuc2l0aW9uKCgpID0+IHNldFN0YXRlSW1wbChuZXdTdGF0ZSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChyZWFjdERvbUZsdXNoU3luY0ltcGwgJiYgZmx1c2hTeW5jKSB7XG4gICAgICAgIHJlYWN0RG9tRmx1c2hTeW5jSW1wbCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRyYW5zaXRpb24pIHtcbiAgICAgICAgICAgIHJlbmRlckRmZCAmJiByZW5kZXJEZmQucmVzb2x2ZSgpO1xuICAgICAgICAgICAgdHJhbnNpdGlvbi5za2lwVHJhbnNpdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRWdENvbnRleHQoe1xuICAgICAgICAgICAgaXNUcmFuc2l0aW9uaW5nOiB0cnVlLFxuICAgICAgICAgICAgZmx1c2hTeW5jOiB0cnVlLFxuICAgICAgICAgICAgY3VycmVudExvY2F0aW9uOiB2aWV3VHJhbnNpdGlvbk9wdHMuY3VycmVudExvY2F0aW9uLFxuICAgICAgICAgICAgbmV4dExvY2F0aW9uOiB2aWV3VHJhbnNpdGlvbk9wdHMubmV4dExvY2F0aW9uXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgdCA9IHJvdXRlci53aW5kb3cuZG9jdW1lbnQuc3RhcnRWaWV3VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgICAgICAgcmVhY3REb21GbHVzaFN5bmNJbXBsKCgpID0+IHNldFN0YXRlSW1wbChuZXdTdGF0ZSkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdC5maW5pc2hlZC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICByZWFjdERvbUZsdXNoU3luY0ltcGwoKCkgPT4ge1xuICAgICAgICAgICAgc2V0UmVuZGVyRGZkKHZvaWQgMCk7XG4gICAgICAgICAgICBzZXRUcmFuc2l0aW9uKHZvaWQgMCk7XG4gICAgICAgICAgICBzZXRQZW5kaW5nU3RhdGUodm9pZCAwKTtcbiAgICAgICAgICAgIHNldFZ0Q29udGV4dCh7IGlzVHJhbnNpdGlvbmluZzogZmFsc2UgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZWFjdERvbUZsdXNoU3luY0ltcGwoKCkgPT4gc2V0VHJhbnNpdGlvbih0KSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0cmFuc2l0aW9uKSB7XG4gICAgICAgIHJlbmRlckRmZCAmJiByZW5kZXJEZmQucmVzb2x2ZSgpO1xuICAgICAgICB0cmFuc2l0aW9uLnNraXBUcmFuc2l0aW9uKCk7XG4gICAgICAgIHNldEludGVycnVwdGlvbih7XG4gICAgICAgICAgc3RhdGU6IG5ld1N0YXRlLFxuICAgICAgICAgIGN1cnJlbnRMb2NhdGlvbjogdmlld1RyYW5zaXRpb25PcHRzLmN1cnJlbnRMb2NhdGlvbixcbiAgICAgICAgICBuZXh0TG9jYXRpb246IHZpZXdUcmFuc2l0aW9uT3B0cy5uZXh0TG9jYXRpb25cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRQZW5kaW5nU3RhdGUobmV3U3RhdGUpO1xuICAgICAgICBzZXRWdENvbnRleHQoe1xuICAgICAgICAgIGlzVHJhbnNpdGlvbmluZzogdHJ1ZSxcbiAgICAgICAgICBmbHVzaFN5bmM6IGZhbHNlLFxuICAgICAgICAgIGN1cnJlbnRMb2NhdGlvbjogdmlld1RyYW5zaXRpb25PcHRzLmN1cnJlbnRMb2NhdGlvbixcbiAgICAgICAgICBuZXh0TG9jYXRpb246IHZpZXdUcmFuc2l0aW9uT3B0cy5uZXh0TG9jYXRpb25cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbcm91dGVyLndpbmRvdywgcmVhY3REb21GbHVzaFN5bmNJbXBsLCB0cmFuc2l0aW9uLCByZW5kZXJEZmRdXG4gICk7XG4gIFJlYWN0My51c2VMYXlvdXRFZmZlY3QoKCkgPT4gcm91dGVyLnN1YnNjcmliZShzZXRTdGF0ZSksIFtyb3V0ZXIsIHNldFN0YXRlXSk7XG4gIFJlYWN0My51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh2dENvbnRleHQuaXNUcmFuc2l0aW9uaW5nICYmICF2dENvbnRleHQuZmx1c2hTeW5jKSB7XG4gICAgICBzZXRSZW5kZXJEZmQobmV3IERlZmVycmVkKCkpO1xuICAgIH1cbiAgfSwgW3Z0Q29udGV4dF0pO1xuICBSZWFjdDMudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVuZGVyRGZkICYmIHBlbmRpbmdTdGF0ZSAmJiByb3V0ZXIud2luZG93KSB7XG4gICAgICBsZXQgbmV3U3RhdGUgPSBwZW5kaW5nU3RhdGU7XG4gICAgICBsZXQgcmVuZGVyUHJvbWlzZSA9IHJlbmRlckRmZC5wcm9taXNlO1xuICAgICAgbGV0IHRyYW5zaXRpb24yID0gcm91dGVyLndpbmRvdy5kb2N1bWVudC5zdGFydFZpZXdUcmFuc2l0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgICAgUmVhY3QzLnN0YXJ0VHJhbnNpdGlvbigoKSA9PiBzZXRTdGF0ZUltcGwobmV3U3RhdGUpKTtcbiAgICAgICAgYXdhaXQgcmVuZGVyUHJvbWlzZTtcbiAgICAgIH0pO1xuICAgICAgdHJhbnNpdGlvbjIuZmluaXNoZWQuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIHNldFJlbmRlckRmZCh2b2lkIDApO1xuICAgICAgICBzZXRUcmFuc2l0aW9uKHZvaWQgMCk7XG4gICAgICAgIHNldFBlbmRpbmdTdGF0ZSh2b2lkIDApO1xuICAgICAgICBzZXRWdENvbnRleHQoeyBpc1RyYW5zaXRpb25pbmc6IGZhbHNlIH0pO1xuICAgICAgfSk7XG4gICAgICBzZXRUcmFuc2l0aW9uKHRyYW5zaXRpb24yKTtcbiAgICB9XG4gIH0sIFtwZW5kaW5nU3RhdGUsIHJlbmRlckRmZCwgcm91dGVyLndpbmRvd10pO1xuICBSZWFjdDMudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVuZGVyRGZkICYmIHBlbmRpbmdTdGF0ZSAmJiBzdGF0ZS5sb2NhdGlvbi5rZXkgPT09IHBlbmRpbmdTdGF0ZS5sb2NhdGlvbi5rZXkpIHtcbiAgICAgIHJlbmRlckRmZC5yZXNvbHZlKCk7XG4gICAgfVxuICB9LCBbcmVuZGVyRGZkLCB0cmFuc2l0aW9uLCBzdGF0ZS5sb2NhdGlvbiwgcGVuZGluZ1N0YXRlXSk7XG4gIFJlYWN0My51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdnRDb250ZXh0LmlzVHJhbnNpdGlvbmluZyAmJiBpbnRlcnJ1cHRpb24pIHtcbiAgICAgIHNldFBlbmRpbmdTdGF0ZShpbnRlcnJ1cHRpb24uc3RhdGUpO1xuICAgICAgc2V0VnRDb250ZXh0KHtcbiAgICAgICAgaXNUcmFuc2l0aW9uaW5nOiB0cnVlLFxuICAgICAgICBmbHVzaFN5bmM6IGZhbHNlLFxuICAgICAgICBjdXJyZW50TG9jYXRpb246IGludGVycnVwdGlvbi5jdXJyZW50TG9jYXRpb24sXG4gICAgICAgIG5leHRMb2NhdGlvbjogaW50ZXJydXB0aW9uLm5leHRMb2NhdGlvblxuICAgICAgfSk7XG4gICAgICBzZXRJbnRlcnJ1cHRpb24odm9pZCAwKTtcbiAgICB9XG4gIH0sIFt2dENvbnRleHQuaXNUcmFuc2l0aW9uaW5nLCBpbnRlcnJ1cHRpb25dKTtcbiAgbGV0IG5hdmlnYXRvcjIgPSBSZWFjdDMudXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNyZWF0ZUhyZWY6IHJvdXRlci5jcmVhdGVIcmVmLFxuICAgICAgZW5jb2RlTG9jYXRpb246IHJvdXRlci5lbmNvZGVMb2NhdGlvbixcbiAgICAgIGdvOiAobikgPT4gcm91dGVyLm5hdmlnYXRlKG4pLFxuICAgICAgcHVzaDogKHRvLCBzdGF0ZTIsIG9wdHMpID0+IHJvdXRlci5uYXZpZ2F0ZSh0bywge1xuICAgICAgICBzdGF0ZTogc3RhdGUyLFxuICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQ6IG9wdHM/LnByZXZlbnRTY3JvbGxSZXNldFxuICAgICAgfSksXG4gICAgICByZXBsYWNlOiAodG8sIHN0YXRlMiwgb3B0cykgPT4gcm91dGVyLm5hdmlnYXRlKHRvLCB7XG4gICAgICAgIHJlcGxhY2U6IHRydWUsXG4gICAgICAgIHN0YXRlOiBzdGF0ZTIsXG4gICAgICAgIHByZXZlbnRTY3JvbGxSZXNldDogb3B0cz8ucHJldmVudFNjcm9sbFJlc2V0XG4gICAgICB9KVxuICAgIH07XG4gIH0sIFtyb3V0ZXJdKTtcbiAgbGV0IGJhc2VuYW1lID0gcm91dGVyLmJhc2VuYW1lIHx8IFwiL1wiO1xuICBsZXQgZGF0YVJvdXRlckNvbnRleHQgPSBSZWFjdDMudXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgcm91dGVyLFxuICAgICAgbmF2aWdhdG9yOiBuYXZpZ2F0b3IyLFxuICAgICAgc3RhdGljOiBmYWxzZSxcbiAgICAgIGJhc2VuYW1lXG4gICAgfSksXG4gICAgW3JvdXRlciwgbmF2aWdhdG9yMiwgYmFzZW5hbWVdXG4gICk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoUmVhY3QzLkZyYWdtZW50LCBudWxsLCAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoRGF0YVJvdXRlckNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGRhdGFSb3V0ZXJDb250ZXh0IH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDMuY3JlYXRlRWxlbWVudChEYXRhUm91dGVyU3RhdGVDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBzdGF0ZSB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoRmV0Y2hlcnNDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBmZXRjaGVyRGF0YS5jdXJyZW50IH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDMuY3JlYXRlRWxlbWVudChWaWV3VHJhbnNpdGlvbkNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHZ0Q29udGV4dCB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoXG4gICAgUm91dGVyLFxuICAgIHtcbiAgICAgIGJhc2VuYW1lLFxuICAgICAgbG9jYXRpb246IHN0YXRlLmxvY2F0aW9uLFxuICAgICAgbmF2aWdhdGlvblR5cGU6IHN0YXRlLmhpc3RvcnlBY3Rpb24sXG4gICAgICBuYXZpZ2F0b3I6IG5hdmlnYXRvcjJcbiAgICB9LFxuICAgIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDMuY3JlYXRlRWxlbWVudChcbiAgICAgIE1lbW9pemVkRGF0YVJvdXRlcyxcbiAgICAgIHtcbiAgICAgICAgcm91dGVzOiByb3V0ZXIucm91dGVzLFxuICAgICAgICBmdXR1cmU6IHJvdXRlci5mdXR1cmUsXG4gICAgICAgIHN0YXRlXG4gICAgICB9XG4gICAgKVxuICApKSkpKSwgbnVsbCk7XG59XG52YXIgTWVtb2l6ZWREYXRhUm91dGVzID0gUmVhY3QzLm1lbW8oRGF0YVJvdXRlcyk7XG5mdW5jdGlvbiBEYXRhUm91dGVzKHtcbiAgcm91dGVzLFxuICBmdXR1cmUsXG4gIHN0YXRlXG59KSB7XG4gIHJldHVybiB1c2VSb3V0ZXNJbXBsKHJvdXRlcywgdm9pZCAwLCBzdGF0ZSwgZnV0dXJlKTtcbn1cbmZ1bmN0aW9uIE1lbW9yeVJvdXRlcih7XG4gIGJhc2VuYW1lLFxuICBjaGlsZHJlbixcbiAgaW5pdGlhbEVudHJpZXMsXG4gIGluaXRpYWxJbmRleFxufSkge1xuICBsZXQgaGlzdG9yeVJlZiA9IFJlYWN0My51c2VSZWYoKTtcbiAgaWYgKGhpc3RvcnlSZWYuY3VycmVudCA9PSBudWxsKSB7XG4gICAgaGlzdG9yeVJlZi5jdXJyZW50ID0gY3JlYXRlTWVtb3J5SGlzdG9yeSh7XG4gICAgICBpbml0aWFsRW50cmllcyxcbiAgICAgIGluaXRpYWxJbmRleCxcbiAgICAgIHY1Q29tcGF0OiB0cnVlXG4gICAgfSk7XG4gIH1cbiAgbGV0IGhpc3RvcnkgPSBoaXN0b3J5UmVmLmN1cnJlbnQ7XG4gIGxldCBbc3RhdGUsIHNldFN0YXRlSW1wbF0gPSBSZWFjdDMudXNlU3RhdGUoe1xuICAgIGFjdGlvbjogaGlzdG9yeS5hY3Rpb24sXG4gICAgbG9jYXRpb246IGhpc3RvcnkubG9jYXRpb25cbiAgfSk7XG4gIGxldCBzZXRTdGF0ZSA9IFJlYWN0My51c2VDYWxsYmFjayhcbiAgICAobmV3U3RhdGUpID0+IHtcbiAgICAgIFJlYWN0My5zdGFydFRyYW5zaXRpb24oKCkgPT4gc2V0U3RhdGVJbXBsKG5ld1N0YXRlKSk7XG4gICAgfSxcbiAgICBbc2V0U3RhdGVJbXBsXVxuICApO1xuICBSZWFjdDMudXNlTGF5b3V0RWZmZWN0KCgpID0+IGhpc3RvcnkubGlzdGVuKHNldFN0YXRlKSwgW2hpc3RvcnksIHNldFN0YXRlXSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoXG4gICAgUm91dGVyLFxuICAgIHtcbiAgICAgIGJhc2VuYW1lLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBsb2NhdGlvbjogc3RhdGUubG9jYXRpb24sXG4gICAgICBuYXZpZ2F0aW9uVHlwZTogc3RhdGUuYWN0aW9uLFxuICAgICAgbmF2aWdhdG9yOiBoaXN0b3J5XG4gICAgfVxuICApO1xufVxuZnVuY3Rpb24gTmF2aWdhdGUoe1xuICB0byxcbiAgcmVwbGFjZTogcmVwbGFjZTIsXG4gIHN0YXRlLFxuICByZWxhdGl2ZVxufSkge1xuICBpbnZhcmlhbnQoXG4gICAgdXNlSW5Sb3V0ZXJDb250ZXh0KCksXG4gICAgLy8gVE9ETzogVGhpcyBlcnJvciBpcyBwcm9iYWJseSBiZWNhdXNlIHRoZXkgc29tZWhvdyBoYXZlIDIgdmVyc2lvbnMgb2ZcbiAgICAvLyB0aGUgcm91dGVyIGxvYWRlZC4gV2UgY2FuIGhlbHAgdGhlbSB1bmRlcnN0YW5kIGhvdyB0byBhdm9pZCB0aGF0LlxuICAgIGA8TmF2aWdhdGU+IG1heSBiZSB1c2VkIG9ubHkgaW4gdGhlIGNvbnRleHQgb2YgYSA8Um91dGVyPiBjb21wb25lbnQuYFxuICApO1xuICBsZXQgeyBzdGF0aWM6IGlzU3RhdGljIH0gPSBSZWFjdDMudXNlQ29udGV4dChOYXZpZ2F0aW9uQ29udGV4dCk7XG4gIHdhcm5pbmcoXG4gICAgIWlzU3RhdGljLFxuICAgIGA8TmF2aWdhdGU+IG11c3Qgbm90IGJlIHVzZWQgb24gdGhlIGluaXRpYWwgcmVuZGVyIGluIGEgPFN0YXRpY1JvdXRlcj4uIFRoaXMgaXMgYSBuby1vcCwgYnV0IHlvdSBzaG91bGQgbW9kaWZ5IHlvdXIgY29kZSBzbyB0aGUgPE5hdmlnYXRlPiBpcyBvbmx5IGV2ZXIgcmVuZGVyZWQgaW4gcmVzcG9uc2UgdG8gc29tZSB1c2VyIGludGVyYWN0aW9uIG9yIHN0YXRlIGNoYW5nZS5gXG4gICk7XG4gIGxldCB7IG1hdGNoZXMgfSA9IFJlYWN0My51c2VDb250ZXh0KFJvdXRlQ29udGV4dCk7XG4gIGxldCB7IHBhdGhuYW1lOiBsb2NhdGlvblBhdGhuYW1lIH0gPSB1c2VMb2NhdGlvbigpO1xuICBsZXQgbmF2aWdhdGUgPSB1c2VOYXZpZ2F0ZSgpO1xuICBsZXQgcGF0aCA9IHJlc29sdmVUbyhcbiAgICB0byxcbiAgICBnZXRSZXNvbHZlVG9NYXRjaGVzKG1hdGNoZXMpLFxuICAgIGxvY2F0aW9uUGF0aG5hbWUsXG4gICAgcmVsYXRpdmUgPT09IFwicGF0aFwiXG4gICk7XG4gIGxldCBqc29uUGF0aCA9IEpTT04uc3RyaW5naWZ5KHBhdGgpO1xuICBSZWFjdDMudXNlRWZmZWN0KCgpID0+IHtcbiAgICBuYXZpZ2F0ZShKU09OLnBhcnNlKGpzb25QYXRoKSwgeyByZXBsYWNlOiByZXBsYWNlMiwgc3RhdGUsIHJlbGF0aXZlIH0pO1xuICB9LCBbbmF2aWdhdGUsIGpzb25QYXRoLCByZWxhdGl2ZSwgcmVwbGFjZTIsIHN0YXRlXSk7XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gT3V0bGV0KHByb3BzKSB7XG4gIHJldHVybiB1c2VPdXRsZXQocHJvcHMuY29udGV4dCk7XG59XG5mdW5jdGlvbiBSb3V0ZShfcHJvcHMpIHtcbiAgaW52YXJpYW50KFxuICAgIGZhbHNlLFxuICAgIGBBIDxSb3V0ZT4gaXMgb25seSBldmVyIHRvIGJlIHVzZWQgYXMgdGhlIGNoaWxkIG9mIDxSb3V0ZXM+IGVsZW1lbnQsIG5ldmVyIHJlbmRlcmVkIGRpcmVjdGx5LiBQbGVhc2Ugd3JhcCB5b3VyIDxSb3V0ZT4gaW4gYSA8Um91dGVzPi5gXG4gICk7XG59XG5mdW5jdGlvbiBSb3V0ZXIoe1xuICBiYXNlbmFtZTogYmFzZW5hbWVQcm9wID0gXCIvXCIsXG4gIGNoaWxkcmVuID0gbnVsbCxcbiAgbG9jYXRpb246IGxvY2F0aW9uUHJvcCxcbiAgbmF2aWdhdGlvblR5cGUgPSBcIlBPUFwiIC8qIFBvcCAqLyxcbiAgbmF2aWdhdG9yOiBuYXZpZ2F0b3IyLFxuICBzdGF0aWM6IHN0YXRpY1Byb3AgPSBmYWxzZVxufSkge1xuICBpbnZhcmlhbnQoXG4gICAgIXVzZUluUm91dGVyQ29udGV4dCgpLFxuICAgIGBZb3UgY2Fubm90IHJlbmRlciBhIDxSb3V0ZXI+IGluc2lkZSBhbm90aGVyIDxSb3V0ZXI+LiBZb3Ugc2hvdWxkIG5ldmVyIGhhdmUgbW9yZSB0aGFuIG9uZSBpbiB5b3VyIGFwcC5gXG4gICk7XG4gIGxldCBiYXNlbmFtZSA9IGJhc2VuYW1lUHJvcC5yZXBsYWNlKC9eXFwvKi8sIFwiL1wiKTtcbiAgbGV0IG5hdmlnYXRpb25Db250ZXh0ID0gUmVhY3QzLnVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGJhc2VuYW1lLFxuICAgICAgbmF2aWdhdG9yOiBuYXZpZ2F0b3IyLFxuICAgICAgc3RhdGljOiBzdGF0aWNQcm9wLFxuICAgICAgZnV0dXJlOiB7fVxuICAgIH0pLFxuICAgIFtiYXNlbmFtZSwgbmF2aWdhdG9yMiwgc3RhdGljUHJvcF1cbiAgKTtcbiAgaWYgKHR5cGVvZiBsb2NhdGlvblByb3AgPT09IFwic3RyaW5nXCIpIHtcbiAgICBsb2NhdGlvblByb3AgPSBwYXJzZVBhdGgobG9jYXRpb25Qcm9wKTtcbiAgfVxuICBsZXQge1xuICAgIHBhdGhuYW1lID0gXCIvXCIsXG4gICAgc2VhcmNoID0gXCJcIixcbiAgICBoYXNoID0gXCJcIixcbiAgICBzdGF0ZSA9IG51bGwsXG4gICAga2V5ID0gXCJkZWZhdWx0XCJcbiAgfSA9IGxvY2F0aW9uUHJvcDtcbiAgbGV0IGxvY2F0aW9uQ29udGV4dCA9IFJlYWN0My51c2VNZW1vKCgpID0+IHtcbiAgICBsZXQgdHJhaWxpbmdQYXRobmFtZSA9IHN0cmlwQmFzZW5hbWUocGF0aG5hbWUsIGJhc2VuYW1lKTtcbiAgICBpZiAodHJhaWxpbmdQYXRobmFtZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIHBhdGhuYW1lOiB0cmFpbGluZ1BhdGhuYW1lLFxuICAgICAgICBzZWFyY2gsXG4gICAgICAgIGhhc2gsXG4gICAgICAgIHN0YXRlLFxuICAgICAgICBrZXlcbiAgICAgIH0sXG4gICAgICBuYXZpZ2F0aW9uVHlwZVxuICAgIH07XG4gIH0sIFtiYXNlbmFtZSwgcGF0aG5hbWUsIHNlYXJjaCwgaGFzaCwgc3RhdGUsIGtleSwgbmF2aWdhdGlvblR5cGVdKTtcbiAgd2FybmluZyhcbiAgICBsb2NhdGlvbkNvbnRleHQgIT0gbnVsbCxcbiAgICBgPFJvdXRlciBiYXNlbmFtZT1cIiR7YmFzZW5hbWV9XCI+IGlzIG5vdCBhYmxlIHRvIG1hdGNoIHRoZSBVUkwgXCIke3BhdGhuYW1lfSR7c2VhcmNofSR7aGFzaH1cIiBiZWNhdXNlIGl0IGRvZXMgbm90IHN0YXJ0IHdpdGggdGhlIGJhc2VuYW1lLCBzbyB0aGUgPFJvdXRlcj4gd29uJ3QgcmVuZGVyIGFueXRoaW5nLmBcbiAgKTtcbiAgaWYgKGxvY2F0aW9uQ29udGV4dCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDMuY3JlYXRlRWxlbWVudChOYXZpZ2F0aW9uQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogbmF2aWdhdGlvbkNvbnRleHQgfSwgLyogQF9fUFVSRV9fICovIFJlYWN0My5jcmVhdGVFbGVtZW50KExvY2F0aW9uQ29udGV4dC5Qcm92aWRlciwgeyBjaGlsZHJlbiwgdmFsdWU6IGxvY2F0aW9uQ29udGV4dCB9KSk7XG59XG5mdW5jdGlvbiBSb3V0ZXMoe1xuICBjaGlsZHJlbixcbiAgbG9jYXRpb25cbn0pIHtcbiAgcmV0dXJuIHVzZVJvdXRlcyhjcmVhdGVSb3V0ZXNGcm9tQ2hpbGRyZW4oY2hpbGRyZW4pLCBsb2NhdGlvbik7XG59XG5mdW5jdGlvbiBBd2FpdCh7XG4gIGNoaWxkcmVuLFxuICBlcnJvckVsZW1lbnQsXG4gIHJlc29sdmVcbn0pIHtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDMuY3JlYXRlRWxlbWVudChBd2FpdEVycm9yQm91bmRhcnksIHsgcmVzb2x2ZSwgZXJyb3JFbGVtZW50IH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDMuY3JlYXRlRWxlbWVudChSZXNvbHZlQXdhaXQsIG51bGwsIGNoaWxkcmVuKSk7XG59XG52YXIgQXdhaXRFcnJvckJvdW5kYXJ5ID0gY2xhc3MgZXh0ZW5kcyBSZWFjdDMuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHsgZXJyb3I6IG51bGwgfTtcbiAgfVxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKGVycm9yKSB7XG4gICAgcmV0dXJuIHsgZXJyb3IgfTtcbiAgfVxuICBjb21wb25lbnREaWRDYXRjaChlcnJvciwgZXJyb3JJbmZvKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiPEF3YWl0PiBjYXVnaHQgdGhlIGZvbGxvd2luZyBlcnJvciBkdXJpbmcgcmVuZGVyXCIsXG4gICAgICBlcnJvcixcbiAgICAgIGVycm9ySW5mb1xuICAgICk7XG4gIH1cbiAgcmVuZGVyKCkge1xuICAgIGxldCB7IGNoaWxkcmVuLCBlcnJvckVsZW1lbnQsIHJlc29sdmUgfSA9IHRoaXMucHJvcHM7XG4gICAgbGV0IHByb21pc2UgPSBudWxsO1xuICAgIGxldCBzdGF0dXMgPSAwIC8qIHBlbmRpbmcgKi87XG4gICAgaWYgKCEocmVzb2x2ZSBpbnN0YW5jZW9mIFByb21pc2UpKSB7XG4gICAgICBzdGF0dXMgPSAxIC8qIHN1Y2Nlc3MgKi87XG4gICAgICBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvbWlzZSwgXCJfdHJhY2tlZFwiLCB7IGdldDogKCkgPT4gdHJ1ZSB9KTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9taXNlLCBcIl9kYXRhXCIsIHsgZ2V0OiAoKSA9PiByZXNvbHZlIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZS5lcnJvcikge1xuICAgICAgc3RhdHVzID0gMiAvKiBlcnJvciAqLztcbiAgICAgIGxldCByZW5kZXJFcnJvciA9IHRoaXMuc3RhdGUuZXJyb3I7XG4gICAgICBwcm9taXNlID0gUHJvbWlzZS5yZWplY3QoKS5jYXRjaCgoKSA9PiB7XG4gICAgICB9KTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9taXNlLCBcIl90cmFja2VkXCIsIHsgZ2V0OiAoKSA9PiB0cnVlIH0pO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb21pc2UsIFwiX2Vycm9yXCIsIHsgZ2V0OiAoKSA9PiByZW5kZXJFcnJvciB9KTtcbiAgICB9IGVsc2UgaWYgKHJlc29sdmUuX3RyYWNrZWQpIHtcbiAgICAgIHByb21pc2UgPSByZXNvbHZlO1xuICAgICAgc3RhdHVzID0gXCJfZXJyb3JcIiBpbiBwcm9taXNlID8gMiAvKiBlcnJvciAqLyA6IFwiX2RhdGFcIiBpbiBwcm9taXNlID8gMSAvKiBzdWNjZXNzICovIDogMCAvKiBwZW5kaW5nICovO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0dXMgPSAwIC8qIHBlbmRpbmcgKi87XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzb2x2ZSwgXCJfdHJhY2tlZFwiLCB7IGdldDogKCkgPT4gdHJ1ZSB9KTtcbiAgICAgIHByb21pc2UgPSByZXNvbHZlLnRoZW4oXG4gICAgICAgIChkYXRhMikgPT4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlc29sdmUsIFwiX2RhdGFcIiwgeyBnZXQ6ICgpID0+IGRhdGEyIH0pLFxuICAgICAgICAoZXJyb3IpID0+IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXNvbHZlLCBcIl9lcnJvclwiLCB7IGdldDogKCkgPT4gZXJyb3IgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChzdGF0dXMgPT09IDIgLyogZXJyb3IgKi8gJiYgIWVycm9yRWxlbWVudCkge1xuICAgICAgdGhyb3cgcHJvbWlzZS5fZXJyb3I7XG4gICAgfVxuICAgIGlmIChzdGF0dXMgPT09IDIgLyogZXJyb3IgKi8pIHtcbiAgICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoQXdhaXRDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBwcm9taXNlLCBjaGlsZHJlbjogZXJyb3JFbGVtZW50IH0pO1xuICAgIH1cbiAgICBpZiAoc3RhdHVzID09PSAxIC8qIHN1Y2Nlc3MgKi8pIHtcbiAgICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QzLmNyZWF0ZUVsZW1lbnQoQXdhaXRDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBwcm9taXNlLCBjaGlsZHJlbiB9KTtcbiAgICB9XG4gICAgdGhyb3cgcHJvbWlzZTtcbiAgfVxufTtcbmZ1bmN0aW9uIFJlc29sdmVBd2FpdCh7XG4gIGNoaWxkcmVuXG59KSB7XG4gIGxldCBkYXRhMiA9IHVzZUFzeW5jVmFsdWUoKTtcbiAgbGV0IHRvUmVuZGVyID0gdHlwZW9mIGNoaWxkcmVuID09PSBcImZ1bmN0aW9uXCIgPyBjaGlsZHJlbihkYXRhMikgOiBjaGlsZHJlbjtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDMuY3JlYXRlRWxlbWVudChSZWFjdDMuRnJhZ21lbnQsIG51bGwsIHRvUmVuZGVyKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJvdXRlc0Zyb21DaGlsZHJlbihjaGlsZHJlbiwgcGFyZW50UGF0aCA9IFtdKSB7XG4gIGxldCByb3V0ZXMgPSBbXTtcbiAgUmVhY3QzLkNoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4sIChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGlmICghUmVhY3QzLmlzVmFsaWRFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCB0cmVlUGF0aCA9IFsuLi5wYXJlbnRQYXRoLCBpbmRleF07XG4gICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gUmVhY3QzLkZyYWdtZW50KSB7XG4gICAgICByb3V0ZXMucHVzaC5hcHBseShcbiAgICAgICAgcm91dGVzLFxuICAgICAgICBjcmVhdGVSb3V0ZXNGcm9tQ2hpbGRyZW4oZWxlbWVudC5wcm9wcy5jaGlsZHJlbiwgdHJlZVBhdGgpXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpbnZhcmlhbnQoXG4gICAgICBlbGVtZW50LnR5cGUgPT09IFJvdXRlLFxuICAgICAgYFske3R5cGVvZiBlbGVtZW50LnR5cGUgPT09IFwic3RyaW5nXCIgPyBlbGVtZW50LnR5cGUgOiBlbGVtZW50LnR5cGUubmFtZX1dIGlzIG5vdCBhIDxSb3V0ZT4gY29tcG9uZW50LiBBbGwgY29tcG9uZW50IGNoaWxkcmVuIG9mIDxSb3V0ZXM+IG11c3QgYmUgYSA8Um91dGU+IG9yIDxSZWFjdC5GcmFnbWVudD5gXG4gICAgKTtcbiAgICBpbnZhcmlhbnQoXG4gICAgICAhZWxlbWVudC5wcm9wcy5pbmRleCB8fCAhZWxlbWVudC5wcm9wcy5jaGlsZHJlbixcbiAgICAgIFwiQW4gaW5kZXggcm91dGUgY2Fubm90IGhhdmUgY2hpbGQgcm91dGVzLlwiXG4gICAgKTtcbiAgICBsZXQgcm91dGUgPSB7XG4gICAgICBpZDogZWxlbWVudC5wcm9wcy5pZCB8fCB0cmVlUGF0aC5qb2luKFwiLVwiKSxcbiAgICAgIGNhc2VTZW5zaXRpdmU6IGVsZW1lbnQucHJvcHMuY2FzZVNlbnNpdGl2ZSxcbiAgICAgIGVsZW1lbnQ6IGVsZW1lbnQucHJvcHMuZWxlbWVudCxcbiAgICAgIENvbXBvbmVudDogZWxlbWVudC5wcm9wcy5Db21wb25lbnQsXG4gICAgICBpbmRleDogZWxlbWVudC5wcm9wcy5pbmRleCxcbiAgICAgIHBhdGg6IGVsZW1lbnQucHJvcHMucGF0aCxcbiAgICAgIGxvYWRlcjogZWxlbWVudC5wcm9wcy5sb2FkZXIsXG4gICAgICBhY3Rpb246IGVsZW1lbnQucHJvcHMuYWN0aW9uLFxuICAgICAgaHlkcmF0ZUZhbGxiYWNrRWxlbWVudDogZWxlbWVudC5wcm9wcy5oeWRyYXRlRmFsbGJhY2tFbGVtZW50LFxuICAgICAgSHlkcmF0ZUZhbGxiYWNrOiBlbGVtZW50LnByb3BzLkh5ZHJhdGVGYWxsYmFjayxcbiAgICAgIGVycm9yRWxlbWVudDogZWxlbWVudC5wcm9wcy5lcnJvckVsZW1lbnQsXG4gICAgICBFcnJvckJvdW5kYXJ5OiBlbGVtZW50LnByb3BzLkVycm9yQm91bmRhcnksXG4gICAgICBoYXNFcnJvckJvdW5kYXJ5OiBlbGVtZW50LnByb3BzLmhhc0Vycm9yQm91bmRhcnkgPT09IHRydWUgfHwgZWxlbWVudC5wcm9wcy5FcnJvckJvdW5kYXJ5ICE9IG51bGwgfHwgZWxlbWVudC5wcm9wcy5lcnJvckVsZW1lbnQgIT0gbnVsbCxcbiAgICAgIHNob3VsZFJldmFsaWRhdGU6IGVsZW1lbnQucHJvcHMuc2hvdWxkUmV2YWxpZGF0ZSxcbiAgICAgIGhhbmRsZTogZWxlbWVudC5wcm9wcy5oYW5kbGUsXG4gICAgICBsYXp5OiBlbGVtZW50LnByb3BzLmxhenlcbiAgICB9O1xuICAgIGlmIChlbGVtZW50LnByb3BzLmNoaWxkcmVuKSB7XG4gICAgICByb3V0ZS5jaGlsZHJlbiA9IGNyZWF0ZVJvdXRlc0Zyb21DaGlsZHJlbihcbiAgICAgICAgZWxlbWVudC5wcm9wcy5jaGlsZHJlbixcbiAgICAgICAgdHJlZVBhdGhcbiAgICAgICk7XG4gICAgfVxuICAgIHJvdXRlcy5wdXNoKHJvdXRlKTtcbiAgfSk7XG4gIHJldHVybiByb3V0ZXM7XG59XG52YXIgY3JlYXRlUm91dGVzRnJvbUVsZW1lbnRzID0gY3JlYXRlUm91dGVzRnJvbUNoaWxkcmVuO1xuZnVuY3Rpb24gcmVuZGVyTWF0Y2hlcyhtYXRjaGVzKSB7XG4gIHJldHVybiBfcmVuZGVyTWF0Y2hlcyhtYXRjaGVzKTtcbn1cblxuLy8gbGliL2RvbS9saWIudHN4XG5pbXBvcnQgKiBhcyBSZWFjdDEwIGZyb20gXCJyZWFjdFwiO1xuXG4vLyBsaWIvZG9tL2RvbS50c1xudmFyIGRlZmF1bHRNZXRob2QgPSBcImdldFwiO1xudmFyIGRlZmF1bHRFbmNUeXBlID0gXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIjtcbmZ1bmN0aW9uIGlzSHRtbEVsZW1lbnQob2JqZWN0KSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiB0eXBlb2Ygb2JqZWN0LnRhZ05hbWUgPT09IFwic3RyaW5nXCI7XG59XG5mdW5jdGlvbiBpc0J1dHRvbkVsZW1lbnQob2JqZWN0KSB7XG4gIHJldHVybiBpc0h0bWxFbGVtZW50KG9iamVjdCkgJiYgb2JqZWN0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJidXR0b25cIjtcbn1cbmZ1bmN0aW9uIGlzRm9ybUVsZW1lbnQob2JqZWN0KSB7XG4gIHJldHVybiBpc0h0bWxFbGVtZW50KG9iamVjdCkgJiYgb2JqZWN0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJmb3JtXCI7XG59XG5mdW5jdGlvbiBpc0lucHV0RWxlbWVudChvYmplY3QpIHtcbiAgcmV0dXJuIGlzSHRtbEVsZW1lbnQob2JqZWN0KSAmJiBvYmplY3QudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImlucHV0XCI7XG59XG5mdW5jdGlvbiBpc01vZGlmaWVkRXZlbnQoZXZlbnQpIHtcbiAgcmV0dXJuICEhKGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuYWx0S2V5IHx8IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQuc2hpZnRLZXkpO1xufVxuZnVuY3Rpb24gc2hvdWxkUHJvY2Vzc0xpbmtDbGljayhldmVudCwgdGFyZ2V0KSB7XG4gIHJldHVybiBldmVudC5idXR0b24gPT09IDAgJiYgLy8gSWdub3JlIGV2ZXJ5dGhpbmcgYnV0IGxlZnQgY2xpY2tzXG4gICghdGFyZ2V0IHx8IHRhcmdldCA9PT0gXCJfc2VsZlwiKSAmJiAvLyBMZXQgYnJvd3NlciBoYW5kbGUgXCJ0YXJnZXQ9X2JsYW5rXCIgZXRjLlxuICAhaXNNb2RpZmllZEV2ZW50KGV2ZW50KTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVNlYXJjaFBhcmFtcyhpbml0ID0gXCJcIikge1xuICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtcyhcbiAgICB0eXBlb2YgaW5pdCA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KGluaXQpIHx8IGluaXQgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXMgPyBpbml0IDogT2JqZWN0LmtleXMoaW5pdCkucmVkdWNlKChtZW1vMiwga2V5KSA9PiB7XG4gICAgICBsZXQgdmFsdWUgPSBpbml0W2tleV07XG4gICAgICByZXR1cm4gbWVtbzIuY29uY2F0KFxuICAgICAgICBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLm1hcCgodikgPT4gW2tleSwgdl0pIDogW1trZXksIHZhbHVlXV1cbiAgICAgICk7XG4gICAgfSwgW10pXG4gICk7XG59XG5mdW5jdGlvbiBnZXRTZWFyY2hQYXJhbXNGb3JMb2NhdGlvbihsb2NhdGlvblNlYXJjaCwgZGVmYXVsdFNlYXJjaFBhcmFtcykge1xuICBsZXQgc2VhcmNoUGFyYW1zID0gY3JlYXRlU2VhcmNoUGFyYW1zKGxvY2F0aW9uU2VhcmNoKTtcbiAgaWYgKGRlZmF1bHRTZWFyY2hQYXJhbXMpIHtcbiAgICBkZWZhdWx0U2VhcmNoUGFyYW1zLmZvckVhY2goKF8sIGtleSkgPT4ge1xuICAgICAgaWYgKCFzZWFyY2hQYXJhbXMuaGFzKGtleSkpIHtcbiAgICAgICAgZGVmYXVsdFNlYXJjaFBhcmFtcy5nZXRBbGwoa2V5KS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNlYXJjaFBhcmFtcy5hcHBlbmQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHJldHVybiBzZWFyY2hQYXJhbXM7XG59XG52YXIgX2Zvcm1EYXRhU3VwcG9ydHNTdWJtaXR0ZXIgPSBudWxsO1xuZnVuY3Rpb24gaXNGb3JtRGF0YVN1Ym1pdHRlclN1cHBvcnRlZCgpIHtcbiAgaWYgKF9mb3JtRGF0YVN1cHBvcnRzU3VibWl0dGVyID09PSBudWxsKSB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBGb3JtRGF0YShcbiAgICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImZvcm1cIiksXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgaWYgRm9ybURhdGEgc3VwcG9ydHMgdGhlIHN1Ym1pdHRlciBwYXJhbWV0ZXIsIHRoaXMgd2lsbCB0aHJvd1xuICAgICAgICAwXG4gICAgICApO1xuICAgICAgX2Zvcm1EYXRhU3VwcG9ydHNTdWJtaXR0ZXIgPSBmYWxzZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBfZm9ybURhdGFTdXBwb3J0c1N1Ym1pdHRlciA9IHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBfZm9ybURhdGFTdXBwb3J0c1N1Ym1pdHRlcjtcbn1cbnZhciBzdXBwb3J0ZWRGb3JtRW5jVHlwZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXG4gIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIsXG4gIFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiLFxuICBcInRleHQvcGxhaW5cIlxuXSk7XG5mdW5jdGlvbiBnZXRGb3JtRW5jVHlwZShlbmNUeXBlKSB7XG4gIGlmIChlbmNUeXBlICE9IG51bGwgJiYgIXN1cHBvcnRlZEZvcm1FbmNUeXBlcy5oYXMoZW5jVHlwZSkpIHtcbiAgICB3YXJuaW5nKFxuICAgICAgZmFsc2UsXG4gICAgICBgXCIke2VuY1R5cGV9XCIgaXMgbm90IGEgdmFsaWQgXFxgZW5jVHlwZVxcYCBmb3IgXFxgPEZvcm0+XFxgL1xcYDxmZXRjaGVyLkZvcm0+XFxgIGFuZCB3aWxsIGRlZmF1bHQgdG8gXCIke2RlZmF1bHRFbmNUeXBlfVwiYFxuICAgICk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIGVuY1R5cGU7XG59XG5mdW5jdGlvbiBnZXRGb3JtU3VibWlzc2lvbkluZm8odGFyZ2V0LCBiYXNlbmFtZSkge1xuICBsZXQgbWV0aG9kO1xuICBsZXQgYWN0aW9uO1xuICBsZXQgZW5jVHlwZTtcbiAgbGV0IGZvcm1EYXRhO1xuICBsZXQgYm9keTtcbiAgaWYgKGlzRm9ybUVsZW1lbnQodGFyZ2V0KSkge1xuICAgIGxldCBhdHRyID0gdGFyZ2V0LmdldEF0dHJpYnV0ZShcImFjdGlvblwiKTtcbiAgICBhY3Rpb24gPSBhdHRyID8gc3RyaXBCYXNlbmFtZShhdHRyLCBiYXNlbmFtZSkgOiBudWxsO1xuICAgIG1ldGhvZCA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoXCJtZXRob2RcIikgfHwgZGVmYXVsdE1ldGhvZDtcbiAgICBlbmNUeXBlID0gZ2V0Rm9ybUVuY1R5cGUodGFyZ2V0LmdldEF0dHJpYnV0ZShcImVuY3R5cGVcIikpIHx8IGRlZmF1bHRFbmNUeXBlO1xuICAgIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKHRhcmdldCk7XG4gIH0gZWxzZSBpZiAoaXNCdXR0b25FbGVtZW50KHRhcmdldCkgfHwgaXNJbnB1dEVsZW1lbnQodGFyZ2V0KSAmJiAodGFyZ2V0LnR5cGUgPT09IFwic3VibWl0XCIgfHwgdGFyZ2V0LnR5cGUgPT09IFwiaW1hZ2VcIikpIHtcbiAgICBsZXQgZm9ybSA9IHRhcmdldC5mb3JtO1xuICAgIGlmIChmb3JtID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENhbm5vdCBzdWJtaXQgYSA8YnV0dG9uPiBvciA8aW5wdXQgdHlwZT1cInN1Ym1pdFwiPiB3aXRob3V0IGEgPGZvcm0+YFxuICAgICAgKTtcbiAgICB9XG4gICAgbGV0IGF0dHIgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKFwiZm9ybWFjdGlvblwiKSB8fCBmb3JtLmdldEF0dHJpYnV0ZShcImFjdGlvblwiKTtcbiAgICBhY3Rpb24gPSBhdHRyID8gc3RyaXBCYXNlbmFtZShhdHRyLCBiYXNlbmFtZSkgOiBudWxsO1xuICAgIG1ldGhvZCA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoXCJmb3JtbWV0aG9kXCIpIHx8IGZvcm0uZ2V0QXR0cmlidXRlKFwibWV0aG9kXCIpIHx8IGRlZmF1bHRNZXRob2Q7XG4gICAgZW5jVHlwZSA9IGdldEZvcm1FbmNUeXBlKHRhcmdldC5nZXRBdHRyaWJ1dGUoXCJmb3JtZW5jdHlwZVwiKSkgfHwgZ2V0Rm9ybUVuY1R5cGUoZm9ybS5nZXRBdHRyaWJ1dGUoXCJlbmN0eXBlXCIpKSB8fCBkZWZhdWx0RW5jVHlwZTtcbiAgICBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShmb3JtLCB0YXJnZXQpO1xuICAgIGlmICghaXNGb3JtRGF0YVN1Ym1pdHRlclN1cHBvcnRlZCgpKSB7XG4gICAgICBsZXQgeyBuYW1lLCB0eXBlLCB2YWx1ZSB9ID0gdGFyZ2V0O1xuICAgICAgaWYgKHR5cGUgPT09IFwiaW1hZ2VcIikge1xuICAgICAgICBsZXQgcHJlZml4ID0gbmFtZSA/IGAke25hbWV9LmAgOiBcIlwiO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoYCR7cHJlZml4fXhgLCBcIjBcIik7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChgJHtwcmVmaXh9eWAsIFwiMFwiKTtcbiAgICAgIH0gZWxzZSBpZiAobmFtZSkge1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQobmFtZSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChpc0h0bWxFbGVtZW50KHRhcmdldCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQ2Fubm90IHN1Ym1pdCBlbGVtZW50IHRoYXQgaXMgbm90IDxmb3JtPiwgPGJ1dHRvbj4sIG9yIDxpbnB1dCB0eXBlPVwic3VibWl0fGltYWdlXCI+YFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgbWV0aG9kID0gZGVmYXVsdE1ldGhvZDtcbiAgICBhY3Rpb24gPSBudWxsO1xuICAgIGVuY1R5cGUgPSBkZWZhdWx0RW5jVHlwZTtcbiAgICBib2R5ID0gdGFyZ2V0O1xuICB9XG4gIGlmIChmb3JtRGF0YSAmJiBlbmNUeXBlID09PSBcInRleHQvcGxhaW5cIikge1xuICAgIGJvZHkgPSBmb3JtRGF0YTtcbiAgICBmb3JtRGF0YSA9IHZvaWQgMDtcbiAgfVxuICByZXR1cm4geyBhY3Rpb24sIG1ldGhvZDogbWV0aG9kLnRvTG93ZXJDYXNlKCksIGVuY1R5cGUsIGZvcm1EYXRhLCBib2R5IH07XG59XG5cbi8vIGxpYi9kb20vc3NyL2NvbXBvbmVudHMudHN4XG5pbXBvcnQgKiBhcyBSZWFjdDkgZnJvbSBcInJlYWN0XCI7XG5cbi8vIGxpYi9kb20vc3NyL2ludmFyaWFudC50c1xuZnVuY3Rpb24gaW52YXJpYW50Mih2YWx1ZSwgbWVzc2FnZSkge1xuICBpZiAodmFsdWUgPT09IGZhbHNlIHx8IHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgfVxufVxuXG4vLyBsaWIvZG9tL3Nzci9yb3V0ZU1vZHVsZXMudHNcbmFzeW5jIGZ1bmN0aW9uIGxvYWRSb3V0ZU1vZHVsZShyb3V0ZSwgcm91dGVNb2R1bGVzQ2FjaGUpIHtcbiAgaWYgKHJvdXRlLmlkIGluIHJvdXRlTW9kdWxlc0NhY2hlKSB7XG4gICAgcmV0dXJuIHJvdXRlTW9kdWxlc0NhY2hlW3JvdXRlLmlkXTtcbiAgfVxuICB0cnkge1xuICAgIGxldCByb3V0ZU1vZHVsZSA9IGF3YWl0IGltcG9ydChcbiAgICAgIC8qIEB2aXRlLWlnbm9yZSAqL1xuICAgICAgLyogd2VicGFja0lnbm9yZTogdHJ1ZSAqL1xuICAgICAgcm91dGUubW9kdWxlXG4gICAgKTtcbiAgICByb3V0ZU1vZHVsZXNDYWNoZVtyb3V0ZS5pZF0gPSByb3V0ZU1vZHVsZTtcbiAgICByZXR1cm4gcm91dGVNb2R1bGU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGBFcnJvciBsb2FkaW5nIHJvdXRlIG1vZHVsZSBcXGAke3JvdXRlLm1vZHVsZX1cXGAsIHJlbG9hZGluZyBwYWdlLi4uYFxuICAgICk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgaWYgKHdpbmRvdy5fX3JlYWN0Um91dGVyQ29udGV4dCAmJiB3aW5kb3cuX19yZWFjdFJvdXRlckNvbnRleHQuaXNTcGFNb2RlICYmIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBpbXBvcnQubWV0YS5ob3QpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpID0+IHtcbiAgICB9KTtcbiAgfVxufVxuXG4vLyBsaWIvZG9tL3Nzci9saW5rcy50c1xuZnVuY3Rpb24gZ2V0S2V5ZWRMaW5rc0Zvck1hdGNoZXMobWF0Y2hlcywgcm91dGVNb2R1bGVzLCBtYW5pZmVzdCkge1xuICBsZXQgZGVzY3JpcHRvcnMgPSBtYXRjaGVzLm1hcCgobWF0Y2gpID0+IHtcbiAgICBsZXQgbW9kdWxlID0gcm91dGVNb2R1bGVzW21hdGNoLnJvdXRlLmlkXTtcbiAgICBsZXQgcm91dGUgPSBtYW5pZmVzdC5yb3V0ZXNbbWF0Y2gucm91dGUuaWRdO1xuICAgIHJldHVybiBbXG4gICAgICByb3V0ZSAmJiByb3V0ZS5jc3MgPyByb3V0ZS5jc3MubWFwKChocmVmKSA9PiAoeyByZWw6IFwic3R5bGVzaGVldFwiLCBocmVmIH0pKSA6IFtdLFxuICAgICAgbW9kdWxlPy5saW5rcz8uKCkgfHwgW11cbiAgICBdO1xuICB9KS5mbGF0KDIpO1xuICBsZXQgcHJlbG9hZHMgPSBnZXRDdXJyZW50UGFnZU1vZHVsZVByZWxvYWRIcmVmcyhtYXRjaGVzLCBtYW5pZmVzdCk7XG4gIHJldHVybiBkZWR1cGVMaW5rRGVzY3JpcHRvcnMoZGVzY3JpcHRvcnMsIHByZWxvYWRzKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHByZWZldGNoU3R5bGVMaW5rcyhyb3V0ZSwgcm91dGVNb2R1bGUpIHtcbiAgaWYgKCFyb3V0ZS5jc3MgJiYgIXJvdXRlTW9kdWxlLmxpbmtzIHx8ICFpc1ByZWxvYWRTdXBwb3J0ZWQoKSkgcmV0dXJuO1xuICBsZXQgZGVzY3JpcHRvcnMgPSBbXTtcbiAgaWYgKHJvdXRlLmNzcykge1xuICAgIGRlc2NyaXB0b3JzLnB1c2goLi4ucm91dGUuY3NzLm1hcCgoaHJlZikgPT4gKHsgcmVsOiBcInN0eWxlc2hlZXRcIiwgaHJlZiB9KSkpO1xuICB9XG4gIGlmIChyb3V0ZU1vZHVsZS5saW5rcykge1xuICAgIGRlc2NyaXB0b3JzLnB1c2goLi4ucm91dGVNb2R1bGUubGlua3MoKSk7XG4gIH1cbiAgaWYgKGRlc2NyaXB0b3JzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICBsZXQgc3R5bGVMaW5rcyA9IFtdO1xuICBmb3IgKGxldCBkZXNjcmlwdG9yIG9mIGRlc2NyaXB0b3JzKSB7XG4gICAgaWYgKCFpc1BhZ2VMaW5rRGVzY3JpcHRvcihkZXNjcmlwdG9yKSAmJiBkZXNjcmlwdG9yLnJlbCA9PT0gXCJzdHlsZXNoZWV0XCIpIHtcbiAgICAgIHN0eWxlTGlua3MucHVzaCh7XG4gICAgICAgIC4uLmRlc2NyaXB0b3IsXG4gICAgICAgIHJlbDogXCJwcmVsb2FkXCIsXG4gICAgICAgIGFzOiBcInN0eWxlXCJcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBsZXQgbWF0Y2hpbmdMaW5rcyA9IHN0eWxlTGlua3MuZmlsdGVyKFxuICAgIChsaW5rKSA9PiAoIWxpbmsubWVkaWEgfHwgd2luZG93Lm1hdGNoTWVkaWEobGluay5tZWRpYSkubWF0Y2hlcykgJiYgIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGxpbmtbcmVsPVwic3R5bGVzaGVldFwiXVtocmVmPVwiJHtsaW5rLmhyZWZ9XCJdYClcbiAgKTtcbiAgYXdhaXQgUHJvbWlzZS5hbGwobWF0Y2hpbmdMaW5rcy5tYXAocHJlZmV0Y2hTdHlsZUxpbmspKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHByZWZldGNoU3R5bGVMaW5rKGRlc2NyaXB0b3IpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgbGV0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcbiAgICBPYmplY3QuYXNzaWduKGxpbmssIGRlc2NyaXB0b3IpO1xuICAgIGZ1bmN0aW9uIHJlbW92ZUxpbmsoKSB7XG4gICAgICBpZiAoZG9jdW1lbnQuaGVhZC5jb250YWlucyhsaW5rKSkge1xuICAgICAgICBkb2N1bWVudC5oZWFkLnJlbW92ZUNoaWxkKGxpbmspO1xuICAgICAgfVxuICAgIH1cbiAgICBsaW5rLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIHJlbW92ZUxpbmsoKTtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9O1xuICAgIGxpbmsub25lcnJvciA9ICgpID0+IHtcbiAgICAgIHJlbW92ZUxpbmsoKTtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9O1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobGluayk7XG4gIH0pO1xufVxuZnVuY3Rpb24gaXNQYWdlTGlua0Rlc2NyaXB0b3Iob2JqZWN0KSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiB0eXBlb2Ygb2JqZWN0LnBhZ2UgPT09IFwic3RyaW5nXCI7XG59XG5mdW5jdGlvbiBpc0h0bWxMaW5rRGVzY3JpcHRvcihvYmplY3QpIHtcbiAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChvYmplY3QuaHJlZiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG9iamVjdC5yZWwgPT09IFwicHJlbG9hZFwiICYmIHR5cGVvZiBvYmplY3QuaW1hZ2VTcmNTZXQgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIG9iamVjdC5pbWFnZVNpemVzID09PSBcInN0cmluZ1wiO1xuICB9XG4gIHJldHVybiB0eXBlb2Ygb2JqZWN0LnJlbCA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2Ygb2JqZWN0LmhyZWYgPT09IFwic3RyaW5nXCI7XG59XG5hc3luYyBmdW5jdGlvbiBnZXRLZXllZFByZWZldGNoTGlua3MobWF0Y2hlcywgbWFuaWZlc3QsIHJvdXRlTW9kdWxlcykge1xuICBsZXQgbGlua3MgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBtYXRjaGVzLm1hcChhc3luYyAobWF0Y2gpID0+IHtcbiAgICAgIGxldCByb3V0ZSA9IG1hbmlmZXN0LnJvdXRlc1ttYXRjaC5yb3V0ZS5pZF07XG4gICAgICBpZiAocm91dGUpIHtcbiAgICAgICAgbGV0IG1vZCA9IGF3YWl0IGxvYWRSb3V0ZU1vZHVsZShyb3V0ZSwgcm91dGVNb2R1bGVzKTtcbiAgICAgICAgcmV0dXJuIG1vZC5saW5rcyA/IG1vZC5saW5rcygpIDogW107XG4gICAgICB9XG4gICAgICByZXR1cm4gW107XG4gICAgfSlcbiAgKTtcbiAgcmV0dXJuIGRlZHVwZUxpbmtEZXNjcmlwdG9ycyhcbiAgICBsaW5rcy5mbGF0KDEpLmZpbHRlcihpc0h0bWxMaW5rRGVzY3JpcHRvcikuZmlsdGVyKChsaW5rKSA9PiBsaW5rLnJlbCA9PT0gXCJzdHlsZXNoZWV0XCIgfHwgbGluay5yZWwgPT09IFwicHJlbG9hZFwiKS5tYXAoXG4gICAgICAobGluaykgPT4gbGluay5yZWwgPT09IFwic3R5bGVzaGVldFwiID8geyAuLi5saW5rLCByZWw6IFwicHJlZmV0Y2hcIiwgYXM6IFwic3R5bGVcIiB9IDogeyAuLi5saW5rLCByZWw6IFwicHJlZmV0Y2hcIiB9XG4gICAgKVxuICApO1xufVxuZnVuY3Rpb24gZ2V0TmV3TWF0Y2hlc0ZvckxpbmtzKHBhZ2UsIG5leHRNYXRjaGVzLCBjdXJyZW50TWF0Y2hlcywgbWFuaWZlc3QsIGxvY2F0aW9uLCBtb2RlKSB7XG4gIGxldCBpc05ldyA9IChtYXRjaCwgaW5kZXgpID0+IHtcbiAgICBpZiAoIWN1cnJlbnRNYXRjaGVzW2luZGV4XSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIG1hdGNoLnJvdXRlLmlkICE9PSBjdXJyZW50TWF0Y2hlc1tpbmRleF0ucm91dGUuaWQ7XG4gIH07XG4gIGxldCBtYXRjaFBhdGhDaGFuZ2VkID0gKG1hdGNoLCBpbmRleCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICAvLyBwYXJhbSBjaGFuZ2UsIC91c2Vycy8xMjMgLT4gL3VzZXJzLzQ1NlxuICAgICAgY3VycmVudE1hdGNoZXNbaW5kZXhdLnBhdGhuYW1lICE9PSBtYXRjaC5wYXRobmFtZSB8fCAvLyBzcGxhdCBwYXJhbSBjaGFuZ2VkLCB3aGljaCBpcyBub3QgcHJlc2VudCBpbiBtYXRjaC5wYXRoXG4gICAgICAvLyBlLmcuIC9maWxlcy9pbWFnZXMvYXZhdGFyLmpwZyAtPiBmaWxlcy9maW5hbmNlcy54bHNcbiAgICAgIGN1cnJlbnRNYXRjaGVzW2luZGV4XS5yb3V0ZS5wYXRoPy5lbmRzV2l0aChcIipcIikgJiYgY3VycmVudE1hdGNoZXNbaW5kZXhdLnBhcmFtc1tcIipcIl0gIT09IG1hdGNoLnBhcmFtc1tcIipcIl1cbiAgICApO1xuICB9O1xuICBpZiAobW9kZSA9PT0gXCJhc3NldHNcIikge1xuICAgIHJldHVybiBuZXh0TWF0Y2hlcy5maWx0ZXIoXG4gICAgICAobWF0Y2gsIGluZGV4KSA9PiBpc05ldyhtYXRjaCwgaW5kZXgpIHx8IG1hdGNoUGF0aENoYW5nZWQobWF0Y2gsIGluZGV4KVxuICAgICk7XG4gIH1cbiAgaWYgKG1vZGUgPT09IFwiZGF0YVwiKSB7XG4gICAgcmV0dXJuIG5leHRNYXRjaGVzLmZpbHRlcigobWF0Y2gsIGluZGV4KSA9PiB7XG4gICAgICBsZXQgbWFuaWZlc3RSb3V0ZSA9IG1hbmlmZXN0LnJvdXRlc1ttYXRjaC5yb3V0ZS5pZF07XG4gICAgICBpZiAoIW1hbmlmZXN0Um91dGUgfHwgIW1hbmlmZXN0Um91dGUuaGFzTG9hZGVyKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc05ldyhtYXRjaCwgaW5kZXgpIHx8IG1hdGNoUGF0aENoYW5nZWQobWF0Y2gsIGluZGV4KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXRjaC5yb3V0ZS5zaG91bGRSZXZhbGlkYXRlKSB7XG4gICAgICAgIGxldCByb3V0ZUNob2ljZSA9IG1hdGNoLnJvdXRlLnNob3VsZFJldmFsaWRhdGUoe1xuICAgICAgICAgIGN1cnJlbnRVcmw6IG5ldyBVUkwoXG4gICAgICAgICAgICBsb2NhdGlvbi5wYXRobmFtZSArIGxvY2F0aW9uLnNlYXJjaCArIGxvY2F0aW9uLmhhc2gsXG4gICAgICAgICAgICB3aW5kb3cub3JpZ2luXG4gICAgICAgICAgKSxcbiAgICAgICAgICBjdXJyZW50UGFyYW1zOiBjdXJyZW50TWF0Y2hlc1swXT8ucGFyYW1zIHx8IHt9LFxuICAgICAgICAgIG5leHRVcmw6IG5ldyBVUkwocGFnZSwgd2luZG93Lm9yaWdpbiksXG4gICAgICAgICAgbmV4dFBhcmFtczogbWF0Y2gucGFyYW1zLFxuICAgICAgICAgIGRlZmF1bHRTaG91bGRSZXZhbGlkYXRlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodHlwZW9mIHJvdXRlQ2hvaWNlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgIHJldHVybiByb3V0ZUNob2ljZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIFtdO1xufVxuZnVuY3Rpb24gZ2V0TW9kdWxlTGlua0hyZWZzKG1hdGNoZXMsIG1hbmlmZXN0UGF0Y2gpIHtcbiAgcmV0dXJuIGRlZHVwZUhyZWZzKFxuICAgIG1hdGNoZXMubWFwKChtYXRjaCkgPT4ge1xuICAgICAgbGV0IHJvdXRlID0gbWFuaWZlc3RQYXRjaC5yb3V0ZXNbbWF0Y2gucm91dGUuaWRdO1xuICAgICAgaWYgKCFyb3V0ZSkgcmV0dXJuIFtdO1xuICAgICAgbGV0IGhyZWZzID0gW3JvdXRlLm1vZHVsZV07XG4gICAgICBpZiAocm91dGUuaW1wb3J0cykge1xuICAgICAgICBocmVmcyA9IGhyZWZzLmNvbmNhdChyb3V0ZS5pbXBvcnRzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBocmVmcztcbiAgICB9KS5mbGF0KDEpXG4gICk7XG59XG5mdW5jdGlvbiBnZXRDdXJyZW50UGFnZU1vZHVsZVByZWxvYWRIcmVmcyhtYXRjaGVzLCBtYW5pZmVzdCkge1xuICByZXR1cm4gZGVkdXBlSHJlZnMoXG4gICAgbWF0Y2hlcy5tYXAoKG1hdGNoKSA9PiB7XG4gICAgICBsZXQgcm91dGUgPSBtYW5pZmVzdC5yb3V0ZXNbbWF0Y2gucm91dGUuaWRdO1xuICAgICAgaWYgKCFyb3V0ZSkgcmV0dXJuIFtdO1xuICAgICAgbGV0IGhyZWZzID0gW3JvdXRlLm1vZHVsZV07XG4gICAgICBpZiAocm91dGUuaW1wb3J0cykge1xuICAgICAgICBocmVmcyA9IGhyZWZzLmNvbmNhdChyb3V0ZS5pbXBvcnRzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBocmVmcztcbiAgICB9KS5mbGF0KDEpXG4gICk7XG59XG5mdW5jdGlvbiBkZWR1cGVIcmVmcyhocmVmcykge1xuICByZXR1cm4gWy4uLm5ldyBTZXQoaHJlZnMpXTtcbn1cbmZ1bmN0aW9uIHNvcnRLZXlzKG9iaikge1xuICBsZXQgc29ydGVkID0ge307XG4gIGxldCBrZXlzID0gT2JqZWN0LmtleXMob2JqKS5zb3J0KCk7XG4gIGZvciAobGV0IGtleSBvZiBrZXlzKSB7XG4gICAgc29ydGVkW2tleV0gPSBvYmpba2V5XTtcbiAgfVxuICByZXR1cm4gc29ydGVkO1xufVxuZnVuY3Rpb24gZGVkdXBlTGlua0Rlc2NyaXB0b3JzKGRlc2NyaXB0b3JzLCBwcmVsb2Fkcykge1xuICBsZXQgc2V0ID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgbGV0IHByZWxvYWRzU2V0ID0gbmV3IFNldChwcmVsb2Fkcyk7XG4gIHJldHVybiBkZXNjcmlwdG9ycy5yZWR1Y2UoKGRlZHVwZWQsIGRlc2NyaXB0b3IpID0+IHtcbiAgICBsZXQgYWxyZWFkeU1vZHVsZVByZWxvYWQgPSBwcmVsb2FkcyAmJiAhaXNQYWdlTGlua0Rlc2NyaXB0b3IoZGVzY3JpcHRvcikgJiYgZGVzY3JpcHRvci5hcyA9PT0gXCJzY3JpcHRcIiAmJiBkZXNjcmlwdG9yLmhyZWYgJiYgcHJlbG9hZHNTZXQuaGFzKGRlc2NyaXB0b3IuaHJlZik7XG4gICAgaWYgKGFscmVhZHlNb2R1bGVQcmVsb2FkKSB7XG4gICAgICByZXR1cm4gZGVkdXBlZDtcbiAgICB9XG4gICAgbGV0IGtleSA9IEpTT04uc3RyaW5naWZ5KHNvcnRLZXlzKGRlc2NyaXB0b3IpKTtcbiAgICBpZiAoIXNldC5oYXMoa2V5KSkge1xuICAgICAgc2V0LmFkZChrZXkpO1xuICAgICAgZGVkdXBlZC5wdXNoKHsga2V5LCBsaW5rOiBkZXNjcmlwdG9yIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZGVkdXBlZDtcbiAgfSwgW10pO1xufVxudmFyIF9pc1ByZWxvYWRTdXBwb3J0ZWQ7XG5mdW5jdGlvbiBpc1ByZWxvYWRTdXBwb3J0ZWQoKSB7XG4gIGlmIChfaXNQcmVsb2FkU3VwcG9ydGVkICE9PSB2b2lkIDApIHtcbiAgICByZXR1cm4gX2lzUHJlbG9hZFN1cHBvcnRlZDtcbiAgfVxuICBsZXQgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcbiAgX2lzUHJlbG9hZFN1cHBvcnRlZCA9IGVsLnJlbExpc3Quc3VwcG9ydHMoXCJwcmVsb2FkXCIpO1xuICBlbCA9IG51bGw7XG4gIHJldHVybiBfaXNQcmVsb2FkU3VwcG9ydGVkO1xufVxuXG4vLyBsaWIvZG9tL3Nzci9tYXJrdXAudHNcbnZhciBFU0NBUEVfTE9PS1VQID0ge1xuICBcIiZcIjogXCJcXFxcdTAwMjZcIixcbiAgXCI+XCI6IFwiXFxcXHUwMDNlXCIsXG4gIFwiPFwiOiBcIlxcXFx1MDAzY1wiLFxuICBcIlxcdTIwMjhcIjogXCJcXFxcdTIwMjhcIixcbiAgXCJcXHUyMDI5XCI6IFwiXFxcXHUyMDI5XCJcbn07XG52YXIgRVNDQVBFX1JFR0VYID0gL1smPjxcXHUyMDI4XFx1MjAyOV0vZztcbmZ1bmN0aW9uIGVzY2FwZUh0bWwoaHRtbCkge1xuICByZXR1cm4gaHRtbC5yZXBsYWNlKEVTQ0FQRV9SRUdFWCwgKG1hdGNoKSA9PiBFU0NBUEVfTE9PS1VQW21hdGNoXSk7XG59XG5mdW5jdGlvbiBjcmVhdGVIdG1sKGh0bWwpIHtcbiAgcmV0dXJuIHsgX19odG1sOiBodG1sIH07XG59XG5cbi8vIGxpYi9kb20vc3NyL3NpbmdsZS1mZXRjaC50c3hcbmltcG9ydCAqIGFzIFJlYWN0NCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGRlY29kZSB9IGZyb20gXCJ0dXJiby1zdHJlYW1cIjtcblxuLy8gbGliL2RvbS9zc3IvZGF0YS50c1xuYXN5bmMgZnVuY3Rpb24gY3JlYXRlUmVxdWVzdEluaXQocmVxdWVzdCkge1xuICBsZXQgaW5pdCA9IHsgc2lnbmFsOiByZXF1ZXN0LnNpZ25hbCB9O1xuICBpZiAocmVxdWVzdC5tZXRob2QgIT09IFwiR0VUXCIpIHtcbiAgICBpbml0Lm1ldGhvZCA9IHJlcXVlc3QubWV0aG9kO1xuICAgIGxldCBjb250ZW50VHlwZSA9IHJlcXVlc3QuaGVhZGVycy5nZXQoXCJDb250ZW50LVR5cGVcIik7XG4gICAgaWYgKGNvbnRlbnRUeXBlICYmIC9cXGJhcHBsaWNhdGlvblxcL2pzb25cXGIvLnRlc3QoY29udGVudFR5cGUpKSB7XG4gICAgICBpbml0LmhlYWRlcnMgPSB7IFwiQ29udGVudC1UeXBlXCI6IGNvbnRlbnRUeXBlIH07XG4gICAgICBpbml0LmJvZHkgPSBKU09OLnN0cmluZ2lmeShhd2FpdCByZXF1ZXN0Lmpzb24oKSk7XG4gICAgfSBlbHNlIGlmIChjb250ZW50VHlwZSAmJiAvXFxidGV4dFxcL3BsYWluXFxiLy50ZXN0KGNvbnRlbnRUeXBlKSkge1xuICAgICAgaW5pdC5oZWFkZXJzID0geyBcIkNvbnRlbnQtVHlwZVwiOiBjb250ZW50VHlwZSB9O1xuICAgICAgaW5pdC5ib2R5ID0gYXdhaXQgcmVxdWVzdC50ZXh0KCk7XG4gICAgfSBlbHNlIGlmIChjb250ZW50VHlwZSAmJiAvXFxiYXBwbGljYXRpb25cXC94LXd3dy1mb3JtLXVybGVuY29kZWRcXGIvLnRlc3QoY29udGVudFR5cGUpKSB7XG4gICAgICBpbml0LmJvZHkgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKGF3YWl0IHJlcXVlc3QudGV4dCgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5pdC5ib2R5ID0gYXdhaXQgcmVxdWVzdC5mb3JtRGF0YSgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaW5pdDtcbn1cblxuLy8gbGliL2RvbS9zc3Ivc2luZ2xlLWZldGNoLnRzeFxudmFyIFNpbmdsZUZldGNoUmVkaXJlY3RTeW1ib2wgPSBTeW1ib2woXCJTaW5nbGVGZXRjaFJlZGlyZWN0XCIpO1xuZnVuY3Rpb24gU3RyZWFtVHJhbnNmZXIoe1xuICBjb250ZXh0LFxuICBpZGVudGlmaWVyLFxuICByZWFkZXIsXG4gIHRleHREZWNvZGVyLFxuICBub25jZVxufSkge1xuICBpZiAoIWNvbnRleHQucmVuZGVyTWV0YSB8fCAhY29udGV4dC5yZW5kZXJNZXRhLmRpZFJlbmRlclNjcmlwdHMpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAoIWNvbnRleHQucmVuZGVyTWV0YS5zdHJlYW1DYWNoZSkge1xuICAgIGNvbnRleHQucmVuZGVyTWV0YS5zdHJlYW1DYWNoZSA9IHt9O1xuICB9XG4gIGxldCB7IHN0cmVhbUNhY2hlIH0gPSBjb250ZXh0LnJlbmRlck1ldGE7XG4gIGxldCBwcm9taXNlID0gc3RyZWFtQ2FjaGVbaWRlbnRpZmllcl07XG4gIGlmICghcHJvbWlzZSkge1xuICAgIHByb21pc2UgPSBzdHJlYW1DYWNoZVtpZGVudGlmaWVyXSA9IHJlYWRlci5yZWFkKCkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICBzdHJlYW1DYWNoZVtpZGVudGlmaWVyXS5yZXN1bHQgPSB7XG4gICAgICAgIGRvbmU6IHJlc3VsdC5kb25lLFxuICAgICAgICB2YWx1ZTogdGV4dERlY29kZXIuZGVjb2RlKHJlc3VsdC52YWx1ZSwgeyBzdHJlYW06IHRydWUgfSlcbiAgICAgIH07XG4gICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgIHN0cmVhbUNhY2hlW2lkZW50aWZpZXJdLmVycm9yID0gZTtcbiAgICB9KTtcbiAgfVxuICBpZiAocHJvbWlzZS5lcnJvcikge1xuICAgIHRocm93IHByb21pc2UuZXJyb3I7XG4gIH1cbiAgaWYgKHByb21pc2UucmVzdWx0ID09PSB2b2lkIDApIHtcbiAgICB0aHJvdyBwcm9taXNlO1xuICB9XG4gIGxldCB7IGRvbmUsIHZhbHVlIH0gPSBwcm9taXNlLnJlc3VsdDtcbiAgbGV0IHNjcmlwdFRhZyA9IHZhbHVlID8gLyogQF9fUFVSRV9fICovIFJlYWN0NC5jcmVhdGVFbGVtZW50KFxuICAgIFwic2NyaXB0XCIsXG4gICAge1xuICAgICAgbm9uY2UsXG4gICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDoge1xuICAgICAgICBfX2h0bWw6IGB3aW5kb3cuX19yZWFjdFJvdXRlckNvbnRleHQuc3RyZWFtQ29udHJvbGxlci5lbnF1ZXVlKCR7ZXNjYXBlSHRtbChcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeSh2YWx1ZSlcbiAgICAgICAgKX0pO2BcbiAgICAgIH1cbiAgICB9XG4gICkgOiBudWxsO1xuICBpZiAoZG9uZSkge1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3Q0LmNyZWF0ZUVsZW1lbnQoUmVhY3Q0LkZyYWdtZW50LCBudWxsLCBzY3JpcHRUYWcsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDQuY3JlYXRlRWxlbWVudChcbiAgICAgIFwic2NyaXB0XCIsXG4gICAgICB7XG4gICAgICAgIG5vbmNlLFxuICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDoge1xuICAgICAgICAgIF9faHRtbDogYHdpbmRvdy5fX3JlYWN0Um91dGVyQ29udGV4dC5zdHJlYW1Db250cm9sbGVyLmNsb3NlKCk7YFxuICAgICAgICB9XG4gICAgICB9XG4gICAgKSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDQuY3JlYXRlRWxlbWVudChSZWFjdDQuRnJhZ21lbnQsIG51bGwsIHNjcmlwdFRhZywgLyogQF9fUFVSRV9fICovIFJlYWN0NC5jcmVhdGVFbGVtZW50KFJlYWN0NC5TdXNwZW5zZSwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0NC5jcmVhdGVFbGVtZW50KFxuICAgICAgU3RyZWFtVHJhbnNmZXIsXG4gICAgICB7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIgKyAxLFxuICAgICAgICByZWFkZXIsXG4gICAgICAgIHRleHREZWNvZGVyLFxuICAgICAgICBub25jZVxuICAgICAgfVxuICAgICkpKTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0U2luZ2xlRmV0Y2hEYXRhU3RyYXRlZ3kobWFuaWZlc3QsIHJvdXRlTW9kdWxlcywgZ2V0Um91dGVyKSB7XG4gIHJldHVybiBhc3luYyAoeyByZXF1ZXN0LCBtYXRjaGVzLCBmZXRjaGVyS2V5IH0pID0+IHtcbiAgICBpZiAocmVxdWVzdC5tZXRob2QgIT09IFwiR0VUXCIpIHtcbiAgICAgIHJldHVybiBzaW5nbGVGZXRjaEFjdGlvblN0cmF0ZWd5KHJlcXVlc3QsIG1hdGNoZXMpO1xuICAgIH1cbiAgICBpZiAoZmV0Y2hlcktleSkge1xuICAgICAgcmV0dXJuIHNpbmdsZUZldGNoTG9hZGVyRmV0Y2hlclN0cmF0ZWd5KHJlcXVlc3QsIG1hdGNoZXMpO1xuICAgIH1cbiAgICByZXR1cm4gc2luZ2xlRmV0Y2hMb2FkZXJOYXZpZ2F0aW9uU3RyYXRlZ3koXG4gICAgICBtYW5pZmVzdCxcbiAgICAgIHJvdXRlTW9kdWxlcyxcbiAgICAgIGdldFJvdXRlcigpLFxuICAgICAgcmVxdWVzdCxcbiAgICAgIG1hdGNoZXNcbiAgICApO1xuICB9O1xufVxuYXN5bmMgZnVuY3Rpb24gc2luZ2xlRmV0Y2hBY3Rpb25TdHJhdGVneShyZXF1ZXN0LCBtYXRjaGVzKSB7XG4gIGxldCBhY3Rpb25NYXRjaCA9IG1hdGNoZXMuZmluZCgobSkgPT4gbS5zaG91bGRMb2FkKTtcbiAgaW52YXJpYW50MihhY3Rpb25NYXRjaCwgXCJObyBhY3Rpb24gbWF0Y2ggZm91bmRcIik7XG4gIGxldCBhY3Rpb25TdGF0dXMgPSB2b2lkIDA7XG4gIGxldCByZXN1bHQgPSBhd2FpdCBhY3Rpb25NYXRjaC5yZXNvbHZlKGFzeW5jIChoYW5kbGVyKSA9PiB7XG4gICAgbGV0IHJlc3VsdDIgPSBhd2FpdCBoYW5kbGVyKGFzeW5jICgpID0+IHtcbiAgICAgIGxldCB1cmwgPSBzaW5nbGVGZXRjaFVybChyZXF1ZXN0LnVybCk7XG4gICAgICBsZXQgaW5pdCA9IGF3YWl0IGNyZWF0ZVJlcXVlc3RJbml0KHJlcXVlc3QpO1xuICAgICAgbGV0IHsgZGF0YTogZGF0YTIsIHN0YXR1cyB9ID0gYXdhaXQgZmV0Y2hBbmREZWNvZGUodXJsLCBpbml0KTtcbiAgICAgIGFjdGlvblN0YXR1cyA9IHN0YXR1cztcbiAgICAgIHJldHVybiB1bndyYXBTaW5nbGVGZXRjaFJlc3VsdChcbiAgICAgICAgZGF0YTIsXG4gICAgICAgIGFjdGlvbk1hdGNoLnJvdXRlLmlkXG4gICAgICApO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQyO1xuICB9KTtcbiAgaWYgKGlzUmVzcG9uc2UocmVzdWx0LnJlc3VsdCkgfHwgaXNSb3V0ZUVycm9yUmVzcG9uc2UocmVzdWx0LnJlc3VsdCkpIHtcbiAgICByZXR1cm4geyBbYWN0aW9uTWF0Y2gucm91dGUuaWRdOiByZXN1bHQgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIFthY3Rpb25NYXRjaC5yb3V0ZS5pZF06IHtcbiAgICAgIHR5cGU6IHJlc3VsdC50eXBlLFxuICAgICAgcmVzdWx0OiBkYXRhKHJlc3VsdC5yZXN1bHQsIGFjdGlvblN0YXR1cylcbiAgICB9XG4gIH07XG59XG5hc3luYyBmdW5jdGlvbiBzaW5nbGVGZXRjaExvYWRlck5hdmlnYXRpb25TdHJhdGVneShtYW5pZmVzdCwgcm91dGVNb2R1bGVzLCByb3V0ZXIsIHJlcXVlc3QsIG1hdGNoZXMpIHtcbiAgbGV0IHJvdXRlc1BhcmFtcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gIGxldCBmb3VuZE9wdE91dFJvdXRlID0gZmFsc2U7XG4gIGxldCByb3V0ZURmZHMgPSBtYXRjaGVzLm1hcCgoKSA9PiBjcmVhdGVEZWZlcnJlZDIoKSk7XG4gIGxldCByb3V0ZXNMb2FkZWRQcm9taXNlID0gUHJvbWlzZS5hbGwocm91dGVEZmRzLm1hcCgoZCkgPT4gZC5wcm9taXNlKSk7XG4gIGxldCBzaW5nbGVGZXRjaERmZCA9IGNyZWF0ZURlZmVycmVkMigpO1xuICBsZXQgdXJsID0gc3RyaXBJbmRleFBhcmFtKHNpbmdsZUZldGNoVXJsKHJlcXVlc3QudXJsKSk7XG4gIGxldCBpbml0ID0gYXdhaXQgY3JlYXRlUmVxdWVzdEluaXQocmVxdWVzdCk7XG4gIGxldCByZXN1bHRzID0ge307XG4gIGxldCByZXNvbHZlUHJvbWlzZSA9IFByb21pc2UuYWxsKFxuICAgIG1hdGNoZXMubWFwKFxuICAgICAgYXN5bmMgKG0sIGkpID0+IG0ucmVzb2x2ZShhc3luYyAoaGFuZGxlcikgPT4ge1xuICAgICAgICByb3V0ZURmZHNbaV0ucmVzb2x2ZSgpO1xuICAgICAgICBsZXQgbWFuaWZlc3RSb3V0ZSA9IG1hbmlmZXN0LnJvdXRlc1ttLnJvdXRlLmlkXTtcbiAgICAgICAgaWYgKCFtLnNob3VsZExvYWQpIHtcbiAgICAgICAgICBpZiAoIXJvdXRlci5zdGF0ZS5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobS5yb3V0ZS5pZCBpbiByb3V0ZXIuc3RhdGUubG9hZGVyRGF0YSAmJiBtYW5pZmVzdFJvdXRlICYmIG1hbmlmZXN0Um91dGUuaGFzTG9hZGVyICYmIHJvdXRlTW9kdWxlc1ttLnJvdXRlLmlkXT8uc2hvdWxkUmV2YWxpZGF0ZSkge1xuICAgICAgICAgICAgZm91bmRPcHRPdXRSb3V0ZSA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtYW5pZmVzdFJvdXRlICYmIG1hbmlmZXN0Um91dGUuaGFzQ2xpZW50TG9hZGVyKSB7XG4gICAgICAgICAgaWYgKG1hbmlmZXN0Um91dGUuaGFzTG9hZGVyKSB7XG4gICAgICAgICAgICBmb3VuZE9wdE91dFJvdXRlID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBmZXRjaFNpbmdsZUxvYWRlcihcbiAgICAgICAgICAgICAgaGFuZGxlcixcbiAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICBpbml0LFxuICAgICAgICAgICAgICBtLnJvdXRlLmlkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmVzdWx0c1ttLnJvdXRlLmlkXSA9IHsgdHlwZTogXCJkYXRhXCIsIHJlc3VsdCB9O1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJlc3VsdHNbbS5yb3V0ZS5pZF0gPSB7IHR5cGU6IFwiZXJyb3JcIiwgcmVzdWx0OiBlIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWFuaWZlc3RSb3V0ZSAmJiBtYW5pZmVzdFJvdXRlLmhhc0xvYWRlcikge1xuICAgICAgICAgIHJvdXRlc1BhcmFtcy5hZGQobS5yb3V0ZS5pZCk7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgaGFuZGxlcihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBsZXQgZGF0YTIgPSBhd2FpdCBzaW5nbGVGZXRjaERmZC5wcm9taXNlO1xuICAgICAgICAgICAgcmV0dXJuIHVud3JhcFNpbmdsZUZldGNoUmVzdWx0cyhkYXRhMiwgbS5yb3V0ZS5pZCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmVzdWx0c1ttLnJvdXRlLmlkXSA9IHtcbiAgICAgICAgICAgIHR5cGU6IFwiZGF0YVwiLFxuICAgICAgICAgICAgcmVzdWx0XG4gICAgICAgICAgfTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHJlc3VsdHNbbS5yb3V0ZS5pZF0gPSB7XG4gICAgICAgICAgICB0eXBlOiBcImVycm9yXCIsXG4gICAgICAgICAgICByZXN1bHQ6IGVcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgKTtcbiAgYXdhaXQgcm91dGVzTG9hZGVkUHJvbWlzZTtcbiAgaWYgKCghcm91dGVyLnN0YXRlLmluaXRpYWxpemVkIHx8IHJvdXRlc1BhcmFtcy5zaXplID09PSAwKSAmJiAhd2luZG93Ll9fcmVhY3RSb3V0ZXJIZHJBY3RpdmUpIHtcbiAgICBzaW5nbGVGZXRjaERmZC5yZXNvbHZlKHt9KTtcbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgaWYgKGZvdW5kT3B0T3V0Um91dGUgJiYgcm91dGVzUGFyYW1zLnNpemUgPiAwKSB7XG4gICAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KFxuICAgICAgICAgIFwiX3JvdXRlc1wiLFxuICAgICAgICAgIG1hdGNoZXMuZmlsdGVyKChtKSA9PiByb3V0ZXNQYXJhbXMuaGFzKG0ucm91dGUuaWQpKS5tYXAoKG0pID0+IG0ucm91dGUuaWQpLmpvaW4oXCIsXCIpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBsZXQgZGF0YTIgPSBhd2FpdCBmZXRjaEFuZERlY29kZSh1cmwsIGluaXQpO1xuICAgICAgc2luZ2xlRmV0Y2hEZmQucmVzb2x2ZShkYXRhMi5kYXRhKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBzaW5nbGVGZXRjaERmZC5yZWplY3QoZSk7XG4gICAgfVxuICB9XG4gIGF3YWl0IHJlc29sdmVQcm9taXNlO1xuICByZXR1cm4gcmVzdWx0cztcbn1cbmFzeW5jIGZ1bmN0aW9uIHNpbmdsZUZldGNoTG9hZGVyRmV0Y2hlclN0cmF0ZWd5KHJlcXVlc3QsIG1hdGNoZXMpIHtcbiAgbGV0IGZldGNoZXJNYXRjaCA9IG1hdGNoZXMuZmluZCgobSkgPT4gbS5zaG91bGRMb2FkKTtcbiAgaW52YXJpYW50MihmZXRjaGVyTWF0Y2gsIFwiTm8gZmV0Y2hlciBtYXRjaCBmb3VuZFwiKTtcbiAgbGV0IHJlc3VsdCA9IGF3YWl0IGZldGNoZXJNYXRjaC5yZXNvbHZlKGFzeW5jIChoYW5kbGVyKSA9PiB7XG4gICAgbGV0IHVybCA9IHN0cmlwSW5kZXhQYXJhbShzaW5nbGVGZXRjaFVybChyZXF1ZXN0LnVybCkpO1xuICAgIGxldCBpbml0ID0gYXdhaXQgY3JlYXRlUmVxdWVzdEluaXQocmVxdWVzdCk7XG4gICAgcmV0dXJuIGZldGNoU2luZ2xlTG9hZGVyKGhhbmRsZXIsIHVybCwgaW5pdCwgZmV0Y2hlck1hdGNoLnJvdXRlLmlkKTtcbiAgfSk7XG4gIHJldHVybiB7IFtmZXRjaGVyTWF0Y2gucm91dGUuaWRdOiByZXN1bHQgfTtcbn1cbmZ1bmN0aW9uIGZldGNoU2luZ2xlTG9hZGVyKGhhbmRsZXIsIHVybCwgaW5pdCwgcm91dGVJZCkge1xuICByZXR1cm4gaGFuZGxlcihhc3luYyAoKSA9PiB7XG4gICAgbGV0IHNpbmdsZUxvYWRlclVybCA9IG5ldyBVUkwodXJsKTtcbiAgICBzaW5nbGVMb2FkZXJVcmwuc2VhcmNoUGFyYW1zLnNldChcIl9yb3V0ZXNcIiwgcm91dGVJZCk7XG4gICAgbGV0IHsgZGF0YTogZGF0YTIgfSA9IGF3YWl0IGZldGNoQW5kRGVjb2RlKHNpbmdsZUxvYWRlclVybCwgaW5pdCk7XG4gICAgcmV0dXJuIHVud3JhcFNpbmdsZUZldGNoUmVzdWx0cyhkYXRhMiwgcm91dGVJZCk7XG4gIH0pO1xufVxuZnVuY3Rpb24gc3RyaXBJbmRleFBhcmFtKHVybCkge1xuICBsZXQgaW5kZXhWYWx1ZXMgPSB1cmwuc2VhcmNoUGFyYW1zLmdldEFsbChcImluZGV4XCIpO1xuICB1cmwuc2VhcmNoUGFyYW1zLmRlbGV0ZShcImluZGV4XCIpO1xuICBsZXQgaW5kZXhWYWx1ZXNUb0tlZXAgPSBbXTtcbiAgZm9yIChsZXQgaW5kZXhWYWx1ZSBvZiBpbmRleFZhbHVlcykge1xuICAgIGlmIChpbmRleFZhbHVlKSB7XG4gICAgICBpbmRleFZhbHVlc1RvS2VlcC5wdXNoKGluZGV4VmFsdWUpO1xuICAgIH1cbiAgfVxuICBmb3IgKGxldCB0b0tlZXAgb2YgaW5kZXhWYWx1ZXNUb0tlZXApIHtcbiAgICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZChcImluZGV4XCIsIHRvS2VlcCk7XG4gIH1cbiAgcmV0dXJuIHVybDtcbn1cbmZ1bmN0aW9uIHNpbmdsZUZldGNoVXJsKHJlcVVybCkge1xuICBsZXQgdXJsID0gdHlwZW9mIHJlcVVybCA9PT0gXCJzdHJpbmdcIiA/IG5ldyBVUkwoXG4gICAgcmVxVXJsLFxuICAgIC8vIFRoaXMgY2FuIGJlIGNhbGxlZCBkdXJpbmcgdGhlIFNTUiBmbG93IHZpYSBQcmVmZXRjaFBhZ2VMaW5rc0ltcGwgc29cbiAgICAvLyBkb24ndCBhc3N1bWUgd2luZG93IGlzIGF2YWlsYWJsZVxuICAgIHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIgPyBcInNlcnZlcjovL3NpbmdsZWZldGNoL1wiIDogd2luZG93LmxvY2F0aW9uLm9yaWdpblxuICApIDogcmVxVXJsO1xuICBpZiAodXJsLnBhdGhuYW1lID09PSBcIi9cIikge1xuICAgIHVybC5wYXRobmFtZSA9IFwiX3Jvb3QuZGF0YVwiO1xuICB9IGVsc2Uge1xuICAgIHVybC5wYXRobmFtZSA9IGAke3VybC5wYXRobmFtZS5yZXBsYWNlKC9cXC8kLywgXCJcIil9LmRhdGFgO1xuICB9XG4gIHJldHVybiB1cmw7XG59XG5hc3luYyBmdW5jdGlvbiBmZXRjaEFuZERlY29kZSh1cmwsIGluaXQpIHtcbiAgbGV0IHJlcyA9IGF3YWl0IGZldGNoKHVybCwgaW5pdCk7XG4gIGlmIChyZXMuc3RhdHVzID09PSA0MDQgJiYgIXJlcy5oZWFkZXJzLmhhcyhcIlgtUmVtaXgtUmVzcG9uc2VcIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3JSZXNwb25zZUltcGwoNDA0LCBcIk5vdCBGb3VuZFwiLCB0cnVlKTtcbiAgfVxuICBpbnZhcmlhbnQyKHJlcy5ib2R5LCBcIk5vIHJlc3BvbnNlIGJvZHkgdG8gZGVjb2RlXCIpO1xuICB0cnkge1xuICAgIGxldCBkZWNvZGVkID0gYXdhaXQgZGVjb2RlVmlhVHVyYm9TdHJlYW0ocmVzLmJvZHksIHdpbmRvdyk7XG4gICAgcmV0dXJuIHsgc3RhdHVzOiByZXMuc3RhdHVzLCBkYXRhOiBkZWNvZGVkLnZhbHVlIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gZGVjb2RlIHR1cmJvLXN0cmVhbSByZXNwb25zZVwiKTtcbiAgfVxufVxuZnVuY3Rpb24gZGVjb2RlVmlhVHVyYm9TdHJlYW0oYm9keSwgZ2xvYmFsMikge1xuICByZXR1cm4gZGVjb2RlKGJvZHksIHtcbiAgICBwbHVnaW5zOiBbXG4gICAgICAodHlwZSwgLi4ucmVzdCkgPT4ge1xuICAgICAgICBpZiAodHlwZSA9PT0gXCJTYW5pdGl6ZWRFcnJvclwiKSB7XG4gICAgICAgICAgbGV0IFtuYW1lLCBtZXNzYWdlLCBzdGFja10gPSByZXN0O1xuICAgICAgICAgIGxldCBDb25zdHJ1Y3RvciA9IEVycm9yO1xuICAgICAgICAgIGlmIChuYW1lICYmIG5hbWUgaW4gZ2xvYmFsMiAmJiB0eXBlb2YgZ2xvYmFsMltuYW1lXSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBDb25zdHJ1Y3RvciA9IGdsb2JhbDJbbmFtZV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBlcnJvciA9IG5ldyBDb25zdHJ1Y3RvcihtZXNzYWdlKTtcbiAgICAgICAgICBlcnJvci5zdGFjayA9IHN0YWNrO1xuICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBlcnJvciB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlID09PSBcIkVycm9yUmVzcG9uc2VcIikge1xuICAgICAgICAgIGxldCBbZGF0YTIsIHN0YXR1cywgc3RhdHVzVGV4dF0gPSByZXN0O1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogbmV3IEVycm9yUmVzcG9uc2VJbXBsKHN0YXR1cywgc3RhdHVzVGV4dCwgZGF0YTIpXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gXCJTaW5nbGVGZXRjaFJlZGlyZWN0XCIpIHtcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogeyBbU2luZ2xlRmV0Y2hSZWRpcmVjdFN5bWJvbF06IHJlc3RbMF0gfSB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlID09PSBcIlNpbmdsZUZldGNoQ2xhc3NJbnN0YW5jZVwiKSB7XG4gICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHJlc3RbMF0gfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gXCJTaW5nbGVGZXRjaEZhbGxiYWNrXCIpIHtcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogdm9pZCAwIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH0pO1xufVxuZnVuY3Rpb24gdW53cmFwU2luZ2xlRmV0Y2hSZXN1bHRzKHJlc3VsdHMsIHJvdXRlSWQpIHtcbiAgbGV0IHJlZGlyZWN0MiA9IHJlc3VsdHNbU2luZ2xlRmV0Y2hSZWRpcmVjdFN5bWJvbF07XG4gIGlmIChyZWRpcmVjdDIpIHtcbiAgICByZXR1cm4gdW53cmFwU2luZ2xlRmV0Y2hSZXN1bHQocmVkaXJlY3QyLCByb3V0ZUlkKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0c1tyb3V0ZUlkXSAhPT0gdm9pZCAwID8gdW53cmFwU2luZ2xlRmV0Y2hSZXN1bHQocmVzdWx0c1tyb3V0ZUlkXSwgcm91dGVJZCkgOiBudWxsO1xufVxuZnVuY3Rpb24gdW53cmFwU2luZ2xlRmV0Y2hSZXN1bHQocmVzdWx0LCByb3V0ZUlkKSB7XG4gIGlmIChcImVycm9yXCIgaW4gcmVzdWx0KSB7XG4gICAgdGhyb3cgcmVzdWx0LmVycm9yO1xuICB9IGVsc2UgaWYgKFwicmVkaXJlY3RcIiBpbiByZXN1bHQpIHtcbiAgICBsZXQgaGVhZGVycyA9IHt9O1xuICAgIGlmIChyZXN1bHQucmV2YWxpZGF0ZSkge1xuICAgICAgaGVhZGVyc1tcIlgtUmVtaXgtUmV2YWxpZGF0ZVwiXSA9IFwieWVzXCI7XG4gICAgfVxuICAgIGlmIChyZXN1bHQucmVsb2FkKSB7XG4gICAgICBoZWFkZXJzW1wiWC1SZW1peC1SZWxvYWQtRG9jdW1lbnRcIl0gPSBcInllc1wiO1xuICAgIH1cbiAgICBpZiAocmVzdWx0LnJlcGxhY2UpIHtcbiAgICAgIGhlYWRlcnNbXCJYLVJlbWl4LVJlcGxhY2VcIl0gPSBcInllc1wiO1xuICAgIH1cbiAgICB0aHJvdyByZWRpcmVjdChyZXN1bHQucmVkaXJlY3QsIHsgc3RhdHVzOiByZXN1bHQuc3RhdHVzLCBoZWFkZXJzIH0pO1xuICB9IGVsc2UgaWYgKFwiZGF0YVwiIGluIHJlc3VsdCkge1xuICAgIHJldHVybiByZXN1bHQuZGF0YTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHJlc3BvbnNlIGZvdW5kIGZvciByb3V0ZUlkIFwiJHtyb3V0ZUlkfVwiYCk7XG4gIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZURlZmVycmVkMigpIHtcbiAgbGV0IHJlc29sdmU7XG4gIGxldCByZWplY3Q7XG4gIGxldCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7XG4gICAgcmVzb2x2ZSA9IGFzeW5jICh2YWwpID0+IHtcbiAgICAgIHJlcyh2YWwpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgcHJvbWlzZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJlamVjdCA9IGFzeW5jIChlcnJvcikgPT4ge1xuICAgICAgcmVqKGVycm9yKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHByb21pc2U7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgcHJvbWlzZSxcbiAgICAvL0B0cy1pZ25vcmVcbiAgICByZXNvbHZlLFxuICAgIC8vQHRzLWlnbm9yZVxuICAgIHJlamVjdFxuICB9O1xufVxuXG4vLyBsaWIvZG9tL3Nzci9mb2ctb2Ytd2FyLnRzXG5pbXBvcnQgKiBhcyBSZWFjdDggZnJvbSBcInJlYWN0XCI7XG5cbi8vIGxpYi9kb20vc3NyL3JvdXRlcy50c3hcbmltcG9ydCAqIGFzIFJlYWN0NyBmcm9tIFwicmVhY3RcIjtcblxuLy8gbGliL2RvbS9zc3IvZXJyb3JCb3VuZGFyaWVzLnRzeFxuaW1wb3J0ICogYXMgUmVhY3Q1IGZyb20gXCJyZWFjdFwiO1xudmFyIFJlbWl4RXJyb3JCb3VuZGFyeSA9IGNsYXNzIGV4dGVuZHMgUmVhY3Q1LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuc3RhdGUgPSB7IGVycm9yOiBwcm9wcy5lcnJvciB8fCBudWxsLCBsb2NhdGlvbjogcHJvcHMubG9jYXRpb24gfTtcbiAgfVxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKGVycm9yKSB7XG4gICAgcmV0dXJuIHsgZXJyb3IgfTtcbiAgfVxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKHByb3BzLCBzdGF0ZSkge1xuICAgIGlmIChzdGF0ZS5sb2NhdGlvbiAhPT0gcHJvcHMubG9jYXRpb24pIHtcbiAgICAgIHJldHVybiB7IGVycm9yOiBwcm9wcy5lcnJvciB8fCBudWxsLCBsb2NhdGlvbjogcHJvcHMubG9jYXRpb24gfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZXJyb3I6IHByb3BzLmVycm9yIHx8IHN0YXRlLmVycm9yLCBsb2NhdGlvbjogc3RhdGUubG9jYXRpb24gfTtcbiAgfVxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUuZXJyb3IpIHtcbiAgICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3Q1LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgIFJlbWl4Um9vdERlZmF1bHRFcnJvckJvdW5kYXJ5LFxuICAgICAgICB7XG4gICAgICAgICAgZXJyb3I6IHRoaXMuc3RhdGUuZXJyb3IsXG4gICAgICAgICAgaXNPdXRzaWRlUmVtaXhBcHA6IHRydWVcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgfVxuICB9XG59O1xuZnVuY3Rpb24gUmVtaXhSb290RGVmYXVsdEVycm9yQm91bmRhcnkoe1xuICBlcnJvcixcbiAgaXNPdXRzaWRlUmVtaXhBcHBcbn0pIHtcbiAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gIGxldCBoZXlEZXZlbG9wZXIgPSAvKiBAX19QVVJFX18gKi8gUmVhY3Q1LmNyZWF0ZUVsZW1lbnQoXG4gICAgXCJzY3JpcHRcIixcbiAgICB7XG4gICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDoge1xuICAgICAgICBfX2h0bWw6IGBcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgXCJcXHV7MUY0QkZ9IEhleSBkZXZlbG9wZXIgXFx1ezFGNDRCfS4gWW91IGNhbiBwcm92aWRlIGEgd2F5IGJldHRlciBVWCB0aGFuIHRoaXMgd2hlbiB5b3VyIGFwcCB0aHJvd3MgZXJyb3JzLiBDaGVjayBvdXQgaHR0cHM6Ly9yZW1peC5ydW4vZ3VpZGVzL2Vycm9ycyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIlxuICAgICAgICApO1xuICAgICAgYFxuICAgICAgfVxuICAgIH1cbiAgKTtcbiAgaWYgKGlzUm91dGVFcnJvclJlc3BvbnNlKGVycm9yKSkge1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3Q1LmNyZWF0ZUVsZW1lbnQoQm91bmRhcnlTaGVsbCwgeyB0aXRsZTogXCJVbmhhbmRsZWQgVGhyb3duIFJlc3BvbnNlIVwiIH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDUuY3JlYXRlRWxlbWVudChcImgxXCIsIHsgc3R5bGU6IHsgZm9udFNpemU6IFwiMjRweFwiIH0gfSwgZXJyb3Iuc3RhdHVzLCBcIiBcIiwgZXJyb3Iuc3RhdHVzVGV4dCksIGhleURldmVsb3Blcik7XG4gIH1cbiAgbGV0IGVycm9ySW5zdGFuY2U7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgZXJyb3JJbnN0YW5jZSA9IGVycm9yO1xuICB9IGVsc2Uge1xuICAgIGxldCBlcnJvclN0cmluZyA9IGVycm9yID09IG51bGwgPyBcIlVua25vd24gRXJyb3JcIiA6IHR5cGVvZiBlcnJvciA9PT0gXCJvYmplY3RcIiAmJiBcInRvU3RyaW5nXCIgaW4gZXJyb3IgPyBlcnJvci50b1N0cmluZygpIDogSlNPTi5zdHJpbmdpZnkoZXJyb3IpO1xuICAgIGVycm9ySW5zdGFuY2UgPSBuZXcgRXJyb3IoZXJyb3JTdHJpbmcpO1xuICB9XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3Q1LmNyZWF0ZUVsZW1lbnQoXG4gICAgQm91bmRhcnlTaGVsbCxcbiAgICB7XG4gICAgICB0aXRsZTogXCJBcHBsaWNhdGlvbiBFcnJvciFcIixcbiAgICAgIGlzT3V0c2lkZVJlbWl4QXBwXG4gICAgfSxcbiAgICAvKiBAX19QVVJFX18gKi8gUmVhY3Q1LmNyZWF0ZUVsZW1lbnQoXCJoMVwiLCB7IHN0eWxlOiB7IGZvbnRTaXplOiBcIjI0cHhcIiB9IH0sIFwiQXBwbGljYXRpb24gRXJyb3JcIiksXG4gICAgLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFxuICAgICAgXCJwcmVcIixcbiAgICAgIHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBwYWRkaW5nOiBcIjJyZW1cIixcbiAgICAgICAgICBiYWNrZ3JvdW5kOiBcImhzbGEoMTAsIDUwJSwgNTAlLCAwLjEpXCIsXG4gICAgICAgICAgY29sb3I6IFwicmVkXCIsXG4gICAgICAgICAgb3ZlcmZsb3c6IFwiYXV0b1wiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvckluc3RhbmNlLnN0YWNrXG4gICAgKSxcbiAgICBoZXlEZXZlbG9wZXJcbiAgKTtcbn1cbmZ1bmN0aW9uIEJvdW5kYXJ5U2hlbGwoe1xuICB0aXRsZSxcbiAgcmVuZGVyU2NyaXB0cyxcbiAgaXNPdXRzaWRlUmVtaXhBcHAsXG4gIGNoaWxkcmVuXG59KSB7XG4gIGxldCB7IHJvdXRlTW9kdWxlcyB9ID0gdXNlRnJhbWV3b3JrQ29udGV4dCgpO1xuICBpZiAocm91dGVNb2R1bGVzLnJvb3Q/LkxheW91dCAmJiAhaXNPdXRzaWRlUmVtaXhBcHApIHtcbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDUuY3JlYXRlRWxlbWVudChcImh0bWxcIiwgeyBsYW5nOiBcImVuXCIgfSwgLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFwiaGVhZFwiLCBudWxsLCAvKiBAX19QVVJFX18gKi8gUmVhY3Q1LmNyZWF0ZUVsZW1lbnQoXCJtZXRhXCIsIHsgY2hhclNldDogXCJ1dGYtOFwiIH0pLCAvKiBAX19QVVJFX18gKi8gUmVhY3Q1LmNyZWF0ZUVsZW1lbnQoXG4gICAgXCJtZXRhXCIsXG4gICAge1xuICAgICAgbmFtZTogXCJ2aWV3cG9ydFwiLFxuICAgICAgY29udGVudDogXCJ3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xLHZpZXdwb3J0LWZpdD1jb3ZlclwiXG4gICAgfVxuICApLCAvKiBAX19QVVJFX18gKi8gUmVhY3Q1LmNyZWF0ZUVsZW1lbnQoXCJ0aXRsZVwiLCBudWxsLCB0aXRsZSkpLCAvKiBAX19QVVJFX18gKi8gUmVhY3Q1LmNyZWF0ZUVsZW1lbnQoXCJib2R5XCIsIG51bGwsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDUuY3JlYXRlRWxlbWVudChcIm1haW5cIiwgeyBzdHlsZTogeyBmb250RmFtaWx5OiBcInN5c3RlbS11aSwgc2Fucy1zZXJpZlwiLCBwYWRkaW5nOiBcIjJyZW1cIiB9IH0sIGNoaWxkcmVuLCByZW5kZXJTY3JpcHRzID8gLyogQF9fUFVSRV9fICovIFJlYWN0NS5jcmVhdGVFbGVtZW50KFNjcmlwdHMsIG51bGwpIDogbnVsbCkpKTtcbn1cblxuLy8gbGliL2RvbS9zc3IvZmFsbGJhY2sudHN4XG5pbXBvcnQgKiBhcyBSZWFjdDYgZnJvbSBcInJlYWN0XCI7XG5mdW5jdGlvbiBSZW1peFJvb3REZWZhdWx0SHlkcmF0ZUZhbGxiYWNrKCkge1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0Ni5jcmVhdGVFbGVtZW50KEJvdW5kYXJ5U2hlbGwsIHsgdGl0bGU6IFwiTG9hZGluZy4uLlwiLCByZW5kZXJTY3JpcHRzOiB0cnVlIH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDYuY3JlYXRlRWxlbWVudChcbiAgICBcInNjcmlwdFwiLFxuICAgIHtcbiAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7XG4gICAgICAgIF9faHRtbDogYFxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICBcIlxcdXsxRjRCRn0gSGV5IGRldmVsb3BlciBcXHV7MUY0NEJ9LiBZb3UgY2FuIHByb3ZpZGUgYSB3YXkgYmV0dGVyIFVYIHRoYW4gdGhpcyBcIiArXG4gICAgICAgICAgICAgICAgXCJ3aGVuIHlvdXIgYXBwIGlzIGxvYWRpbmcgSlMgbW9kdWxlcyBhbmQvb3IgcnVubmluZyBcXGBjbGllbnRMb2FkZXJcXGAgXCIgK1xuICAgICAgICAgICAgICAgIFwiZnVuY3Rpb25zLiBDaGVjayBvdXQgaHR0cHM6Ly9yZW1peC5ydW4vcm91dGUvaHlkcmF0ZS1mYWxsYmFjayBcIiArXG4gICAgICAgICAgICAgICAgXCJmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgYFxuICAgICAgfVxuICAgIH1cbiAgKSk7XG59XG5cbi8vIGxpYi9kb20vc3NyL3JvdXRlcy50c3hcbmZ1bmN0aW9uIGdyb3VwUm91dGVzQnlQYXJlbnRJZChtYW5pZmVzdCkge1xuICBsZXQgcm91dGVzID0ge307XG4gIE9iamVjdC52YWx1ZXMobWFuaWZlc3QpLmZvckVhY2goKHJvdXRlKSA9PiB7XG4gICAgaWYgKHJvdXRlKSB7XG4gICAgICBsZXQgcGFyZW50SWQgPSByb3V0ZS5wYXJlbnRJZCB8fCBcIlwiO1xuICAgICAgaWYgKCFyb3V0ZXNbcGFyZW50SWRdKSB7XG4gICAgICAgIHJvdXRlc1twYXJlbnRJZF0gPSBbXTtcbiAgICAgIH1cbiAgICAgIHJvdXRlc1twYXJlbnRJZF0ucHVzaChyb3V0ZSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJvdXRlcztcbn1cbmZ1bmN0aW9uIGdldFJvdXRlQ29tcG9uZW50cyhyb3V0ZSwgcm91dGVNb2R1bGUsIGlzU3BhTW9kZSkge1xuICBsZXQgQ29tcG9uZW50NCA9IGdldFJvdXRlTW9kdWxlQ29tcG9uZW50KHJvdXRlTW9kdWxlKTtcbiAgbGV0IEh5ZHJhdGVGYWxsYmFjayA9IHJvdXRlTW9kdWxlLkh5ZHJhdGVGYWxsYmFjayAmJiAoIWlzU3BhTW9kZSB8fCByb3V0ZS5pZCA9PT0gXCJyb290XCIpID8gcm91dGVNb2R1bGUuSHlkcmF0ZUZhbGxiYWNrIDogcm91dGUuaWQgPT09IFwicm9vdFwiID8gUmVtaXhSb290RGVmYXVsdEh5ZHJhdGVGYWxsYmFjayA6IHZvaWQgMDtcbiAgbGV0IEVycm9yQm91bmRhcnkgPSByb3V0ZU1vZHVsZS5FcnJvckJvdW5kYXJ5ID8gcm91dGVNb2R1bGUuRXJyb3JCb3VuZGFyeSA6IHJvdXRlLmlkID09PSBcInJvb3RcIiA/ICgpID0+IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDcuY3JlYXRlRWxlbWVudChSZW1peFJvb3REZWZhdWx0RXJyb3JCb3VuZGFyeSwgeyBlcnJvcjogdXNlUm91dGVFcnJvcigpIH0pIDogdm9pZCAwO1xuICBpZiAocm91dGUuaWQgPT09IFwicm9vdFwiICYmIHJvdXRlTW9kdWxlLkxheW91dCkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5Db21wb25lbnQ0ID8ge1xuICAgICAgICBlbGVtZW50OiAvKiBAX19QVVJFX18gKi8gUmVhY3Q3LmNyZWF0ZUVsZW1lbnQocm91dGVNb2R1bGUuTGF5b3V0LCBudWxsLCAvKiBAX19QVVJFX18gKi8gUmVhY3Q3LmNyZWF0ZUVsZW1lbnQoQ29tcG9uZW50NCwgbnVsbCkpXG4gICAgICB9IDogeyBDb21wb25lbnQ6IENvbXBvbmVudDQgfSxcbiAgICAgIC4uLkVycm9yQm91bmRhcnkgPyB7XG4gICAgICAgIGVycm9yRWxlbWVudDogLyogQF9fUFVSRV9fICovIFJlYWN0Ny5jcmVhdGVFbGVtZW50KHJvdXRlTW9kdWxlLkxheW91dCwgbnVsbCwgLyogQF9fUFVSRV9fICovIFJlYWN0Ny5jcmVhdGVFbGVtZW50KEVycm9yQm91bmRhcnksIG51bGwpKVxuICAgICAgfSA6IHsgRXJyb3JCb3VuZGFyeSB9LFxuICAgICAgLi4uSHlkcmF0ZUZhbGxiYWNrID8ge1xuICAgICAgICBoeWRyYXRlRmFsbGJhY2tFbGVtZW50OiAvKiBAX19QVVJFX18gKi8gUmVhY3Q3LmNyZWF0ZUVsZW1lbnQocm91dGVNb2R1bGUuTGF5b3V0LCBudWxsLCAvKiBAX19QVVJFX18gKi8gUmVhY3Q3LmNyZWF0ZUVsZW1lbnQoSHlkcmF0ZUZhbGxiYWNrLCBudWxsKSlcbiAgICAgIH0gOiB7IEh5ZHJhdGVGYWxsYmFjayB9XG4gICAgfTtcbiAgfVxuICByZXR1cm4geyBDb21wb25lbnQ6IENvbXBvbmVudDQsIEVycm9yQm91bmRhcnksIEh5ZHJhdGVGYWxsYmFjayB9O1xufVxuZnVuY3Rpb24gY3JlYXRlU2VydmVyUm91dGVzKG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMsIGZ1dHVyZSwgaXNTcGFNb2RlLCBwYXJlbnRJZCA9IFwiXCIsIHJvdXRlc0J5UGFyZW50SWQgPSBncm91cFJvdXRlc0J5UGFyZW50SWQobWFuaWZlc3QpLCBzcGFNb2RlTGF6eVByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoeyBDb21wb25lbnQ6ICgpID0+IG51bGwgfSkpIHtcbiAgcmV0dXJuIChyb3V0ZXNCeVBhcmVudElkW3BhcmVudElkXSB8fCBbXSkubWFwKChyb3V0ZSkgPT4ge1xuICAgIGxldCByb3V0ZU1vZHVsZSA9IHJvdXRlTW9kdWxlc1tyb3V0ZS5pZF07XG4gICAgaW52YXJpYW50MihcbiAgICAgIHJvdXRlTW9kdWxlLFxuICAgICAgXCJObyBgcm91dGVNb2R1bGVgIGF2YWlsYWJsZSB0byBjcmVhdGUgc2VydmVyIHJvdXRlc1wiXG4gICAgKTtcbiAgICBsZXQgZGF0YVJvdXRlID0ge1xuICAgICAgLi4uZ2V0Um91dGVDb21wb25lbnRzKHJvdXRlLCByb3V0ZU1vZHVsZSwgaXNTcGFNb2RlKSxcbiAgICAgIGNhc2VTZW5zaXRpdmU6IHJvdXRlLmNhc2VTZW5zaXRpdmUsXG4gICAgICBpZDogcm91dGUuaWQsXG4gICAgICBpbmRleDogcm91dGUuaW5kZXgsXG4gICAgICBwYXRoOiByb3V0ZS5wYXRoLFxuICAgICAgaGFuZGxlOiByb3V0ZU1vZHVsZS5oYW5kbGUsXG4gICAgICAvLyBGb3IgU1BBIE1vZGUsIGFsbCByb3V0ZXMgYXJlIGxhenkgZXhjZXB0IHJvb3QuICBIb3dldmVyIHdlIHRlbGwgdGhlXG4gICAgICAvLyByb3V0ZXIgcm9vdCBpcyBhbHNvIGxhenkgaGVyZSB0b28gc2luY2Ugd2UgZG9uJ3QgbmVlZCBhIGZ1bGxcbiAgICAgIC8vIGltcGxlbWVudGF0aW9uIC0gd2UganVzdCBuZWVkIGEgYGxhenlgIHByb3AgdG8gdGVsbCB0aGUgUlIgcmVuZGVyaW5nXG4gICAgICAvLyB3aGVyZSB0byBzdG9wIHdoaWNoIGlzIGFsd2F5cyBhdCB0aGUgcm9vdCByb3V0ZSBpbiBTUEEgbW9kZVxuICAgICAgbGF6eTogaXNTcGFNb2RlID8gKCkgPT4gc3BhTW9kZUxhenlQcm9taXNlIDogdm9pZCAwLFxuICAgICAgLy8gRm9yIHBhcnRpYWwgaHlkcmF0aW9uIHJlbmRlcmluZywgd2UgbmVlZCB0byBpbmRpY2F0ZSB3aGVuIHRoZSByb3V0ZVxuICAgICAgLy8gaGFzIGEgbG9hZGVyL2NsaWVudExvYWRlciwgYnV0IGl0IHdvbid0IGV2ZXIgYmUgY2FsbGVkIGR1cmluZyB0aGUgc3RhdGljXG4gICAgICAvLyByZW5kZXIsIHNvIGp1c3QgZ2l2ZSBpdCBhIG5vLW9wIGZ1bmN0aW9uIHNvIHdlIGNhbiByZW5kZXIgZG93biB0byB0aGVcbiAgICAgIC8vIHByb3BlciBmYWxsYmFja1xuICAgICAgbG9hZGVyOiByb3V0ZS5oYXNMb2FkZXIgfHwgcm91dGUuaGFzQ2xpZW50TG9hZGVyID8gKCkgPT4gbnVsbCA6IHZvaWQgMFxuICAgICAgLy8gV2UgZG9uJ3QgbmVlZCBhY3Rpb24vc2hvdWxkUmV2YWxpZGF0ZSBvbiB0aGVzZSByb3V0ZXMgc2luY2UgdGhleSdyZVxuICAgICAgLy8gZm9yIGEgc3RhdGljIHJlbmRlclxuICAgIH07XG4gICAgbGV0IGNoaWxkcmVuID0gY3JlYXRlU2VydmVyUm91dGVzKFxuICAgICAgbWFuaWZlc3QsXG4gICAgICByb3V0ZU1vZHVsZXMsXG4gICAgICBmdXR1cmUsXG4gICAgICBpc1NwYU1vZGUsXG4gICAgICByb3V0ZS5pZCxcbiAgICAgIHJvdXRlc0J5UGFyZW50SWQsXG4gICAgICBzcGFNb2RlTGF6eVByb21pc2VcbiAgICApO1xuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSBkYXRhUm91dGUuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICByZXR1cm4gZGF0YVJvdXRlO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNsaWVudFJvdXRlc1dpdGhITVJSZXZhbGlkYXRpb25PcHRPdXQobmVlZHNSZXZhbGlkYXRpb24sIG1hbmlmZXN0LCByb3V0ZU1vZHVsZXNDYWNoZSwgaW5pdGlhbFN0YXRlLCBmdXR1cmUsIGlzU3BhTW9kZSkge1xuICByZXR1cm4gY3JlYXRlQ2xpZW50Um91dGVzKFxuICAgIG1hbmlmZXN0LFxuICAgIHJvdXRlTW9kdWxlc0NhY2hlLFxuICAgIGluaXRpYWxTdGF0ZSxcbiAgICBpc1NwYU1vZGUsXG4gICAgXCJcIixcbiAgICBncm91cFJvdXRlc0J5UGFyZW50SWQobWFuaWZlc3QpLFxuICAgIG5lZWRzUmV2YWxpZGF0aW9uXG4gICk7XG59XG5mdW5jdGlvbiBwcmV2ZW50SW52YWxpZFNlcnZlckhhbmRsZXJDYWxsKHR5cGUsIHJvdXRlLCBpc1NwYU1vZGUpIHtcbiAgaWYgKGlzU3BhTW9kZSkge1xuICAgIGxldCBmbjIgPSB0eXBlID09PSBcImFjdGlvblwiID8gXCJzZXJ2ZXJBY3Rpb24oKVwiIDogXCJzZXJ2ZXJMb2FkZXIoKVwiO1xuICAgIGxldCBtc2cyID0gYFlvdSBjYW5ub3QgY2FsbCAke2ZuMn0gaW4gU1BBIE1vZGUgKHJvdXRlSWQ6IFwiJHtyb3V0ZS5pZH1cIilgO1xuICAgIGNvbnNvbGUuZXJyb3IobXNnMik7XG4gICAgdGhyb3cgbmV3IEVycm9yUmVzcG9uc2VJbXBsKDQwMCwgXCJCYWQgUmVxdWVzdFwiLCBuZXcgRXJyb3IobXNnMiksIHRydWUpO1xuICB9XG4gIGxldCBmbiA9IHR5cGUgPT09IFwiYWN0aW9uXCIgPyBcInNlcnZlckFjdGlvbigpXCIgOiBcInNlcnZlckxvYWRlcigpXCI7XG4gIGxldCBtc2cgPSBgWW91IGFyZSB0cnlpbmcgdG8gY2FsbCAke2ZufSBvbiBhIHJvdXRlIHRoYXQgZG9lcyBub3QgaGF2ZSBhIHNlcnZlciAke3R5cGV9IChyb3V0ZUlkOiBcIiR7cm91dGUuaWR9XCIpYDtcbiAgaWYgKHR5cGUgPT09IFwibG9hZGVyXCIgJiYgIXJvdXRlLmhhc0xvYWRlciB8fCB0eXBlID09PSBcImFjdGlvblwiICYmICFyb3V0ZS5oYXNBY3Rpb24pIHtcbiAgICBjb25zb2xlLmVycm9yKG1zZyk7XG4gICAgdGhyb3cgbmV3IEVycm9yUmVzcG9uc2VJbXBsKDQwMCwgXCJCYWQgUmVxdWVzdFwiLCBuZXcgRXJyb3IobXNnKSwgdHJ1ZSk7XG4gIH1cbn1cbmZ1bmN0aW9uIG5vQWN0aW9uRGVmaW5lZEVycm9yKHR5cGUsIHJvdXRlSWQpIHtcbiAgbGV0IGFydGljbGUgPSB0eXBlID09PSBcImNsaWVudEFjdGlvblwiID8gXCJhXCIgOiBcImFuXCI7XG4gIGxldCBtc2cgPSBgUm91dGUgXCIke3JvdXRlSWR9XCIgZG9lcyBub3QgaGF2ZSAke2FydGljbGV9ICR7dHlwZX0sIGJ1dCB5b3UgYXJlIHRyeWluZyB0byBzdWJtaXQgdG8gaXQuIFRvIGZpeCB0aGlzLCBwbGVhc2UgYWRkICR7YXJ0aWNsZX0gXFxgJHt0eXBlfVxcYCBmdW5jdGlvbiB0byB0aGUgcm91dGVgO1xuICBjb25zb2xlLmVycm9yKG1zZyk7XG4gIHRocm93IG5ldyBFcnJvclJlc3BvbnNlSW1wbCg0MDUsIFwiTWV0aG9kIE5vdCBBbGxvd2VkXCIsIG5ldyBFcnJvcihtc2cpLCB0cnVlKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNsaWVudFJvdXRlcyhtYW5pZmVzdCwgcm91dGVNb2R1bGVzQ2FjaGUsIGluaXRpYWxTdGF0ZSwgaXNTcGFNb2RlLCBwYXJlbnRJZCA9IFwiXCIsIHJvdXRlc0J5UGFyZW50SWQgPSBncm91cFJvdXRlc0J5UGFyZW50SWQobWFuaWZlc3QpLCBuZWVkc1JldmFsaWRhdGlvbikge1xuICByZXR1cm4gKHJvdXRlc0J5UGFyZW50SWRbcGFyZW50SWRdIHx8IFtdKS5tYXAoKHJvdXRlKSA9PiB7XG4gICAgbGV0IHJvdXRlTW9kdWxlID0gcm91dGVNb2R1bGVzQ2FjaGVbcm91dGUuaWRdO1xuICAgIGZ1bmN0aW9uIGZldGNoU2VydmVySGFuZGxlcihzaW5nbGVGZXRjaCkge1xuICAgICAgaW52YXJpYW50MihcbiAgICAgICAgdHlwZW9mIHNpbmdsZUZldGNoID09PSBcImZ1bmN0aW9uXCIsXG4gICAgICAgIFwiTm8gc2luZ2xlIGZldGNoIGZ1bmN0aW9uIGF2YWlsYWJsZSBmb3Igcm91dGUgaGFuZGxlclwiXG4gICAgICApO1xuICAgICAgcmV0dXJuIHNpbmdsZUZldGNoKCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZldGNoU2VydmVyTG9hZGVyKHNpbmdsZUZldGNoKSB7XG4gICAgICBpZiAoIXJvdXRlLmhhc0xvYWRlcikgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcbiAgICAgIHJldHVybiBmZXRjaFNlcnZlckhhbmRsZXIoc2luZ2xlRmV0Y2gpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBmZXRjaFNlcnZlckFjdGlvbihzaW5nbGVGZXRjaCkge1xuICAgICAgaWYgKCFyb3V0ZS5oYXNBY3Rpb24pIHtcbiAgICAgICAgdGhyb3cgbm9BY3Rpb25EZWZpbmVkRXJyb3IoXCJhY3Rpb25cIiwgcm91dGUuaWQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZldGNoU2VydmVySGFuZGxlcihzaW5nbGVGZXRjaCk7XG4gICAgfVxuICAgIGFzeW5jIGZ1bmN0aW9uIHByZWZldGNoU3R5bGVzQW5kQ2FsbEhhbmRsZXIoaGFuZGxlcikge1xuICAgICAgbGV0IGNhY2hlZE1vZHVsZSA9IHJvdXRlTW9kdWxlc0NhY2hlW3JvdXRlLmlkXTtcbiAgICAgIGxldCBsaW5rUHJlZmV0Y2hQcm9taXNlID0gY2FjaGVkTW9kdWxlID8gcHJlZmV0Y2hTdHlsZUxpbmtzKHJvdXRlLCBjYWNoZWRNb2R1bGUpIDogUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gaGFuZGxlcigpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgYXdhaXQgbGlua1ByZWZldGNoUHJvbWlzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IGRhdGFSb3V0ZSA9IHtcbiAgICAgIGlkOiByb3V0ZS5pZCxcbiAgICAgIGluZGV4OiByb3V0ZS5pbmRleCxcbiAgICAgIHBhdGg6IHJvdXRlLnBhdGhcbiAgICB9O1xuICAgIGlmIChyb3V0ZU1vZHVsZSkge1xuICAgICAgT2JqZWN0LmFzc2lnbihkYXRhUm91dGUsIHtcbiAgICAgICAgLi4uZGF0YVJvdXRlLFxuICAgICAgICAuLi5nZXRSb3V0ZUNvbXBvbmVudHMocm91dGUsIHJvdXRlTW9kdWxlLCBpc1NwYU1vZGUpLFxuICAgICAgICBoYW5kbGU6IHJvdXRlTW9kdWxlLmhhbmRsZSxcbiAgICAgICAgc2hvdWxkUmV2YWxpZGF0ZTogZ2V0U2hvdWxkUmV2YWxpZGF0ZUZ1bmN0aW9uKFxuICAgICAgICAgIHJvdXRlTW9kdWxlLFxuICAgICAgICAgIHJvdXRlLmlkLFxuICAgICAgICAgIG5lZWRzUmV2YWxpZGF0aW9uXG4gICAgICAgIClcbiAgICAgIH0pO1xuICAgICAgbGV0IGhhc0luaXRpYWxEYXRhID0gaW5pdGlhbFN0YXRlICYmIGluaXRpYWxTdGF0ZS5sb2FkZXJEYXRhICYmIHJvdXRlLmlkIGluIGluaXRpYWxTdGF0ZS5sb2FkZXJEYXRhO1xuICAgICAgbGV0IGluaXRpYWxEYXRhID0gaGFzSW5pdGlhbERhdGEgPyBpbml0aWFsU3RhdGU/LmxvYWRlckRhdGE/Lltyb3V0ZS5pZF0gOiB2b2lkIDA7XG4gICAgICBsZXQgaGFzSW5pdGlhbEVycm9yID0gaW5pdGlhbFN0YXRlICYmIGluaXRpYWxTdGF0ZS5lcnJvcnMgJiYgcm91dGUuaWQgaW4gaW5pdGlhbFN0YXRlLmVycm9ycztcbiAgICAgIGxldCBpbml0aWFsRXJyb3IgPSBoYXNJbml0aWFsRXJyb3IgPyBpbml0aWFsU3RhdGU/LmVycm9ycz8uW3JvdXRlLmlkXSA6IHZvaWQgMDtcbiAgICAgIGxldCBpc0h5ZHJhdGlvblJlcXVlc3QgPSBuZWVkc1JldmFsaWRhdGlvbiA9PSBudWxsICYmIChyb3V0ZU1vZHVsZS5jbGllbnRMb2FkZXI/Lmh5ZHJhdGUgPT09IHRydWUgfHwgIXJvdXRlLmhhc0xvYWRlcik7XG4gICAgICBkYXRhUm91dGUubG9hZGVyID0gYXN5bmMgKHsgcmVxdWVzdCwgcGFyYW1zIH0sIHNpbmdsZUZldGNoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IHByZWZldGNoU3R5bGVzQW5kQ2FsbEhhbmRsZXIoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaW52YXJpYW50MihcbiAgICAgICAgICAgICAgcm91dGVNb2R1bGUsXG4gICAgICAgICAgICAgIFwiTm8gYHJvdXRlTW9kdWxlYCBhdmFpbGFibGUgZm9yIGNyaXRpY2FsLXJvdXRlIGxvYWRlclwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCFyb3V0ZU1vZHVsZS5jbGllbnRMb2FkZXIpIHtcbiAgICAgICAgICAgICAgaWYgKGlzU3BhTW9kZSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgIHJldHVybiBmZXRjaFNlcnZlckxvYWRlcihzaW5nbGVGZXRjaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcm91dGVNb2R1bGUuY2xpZW50TG9hZGVyKHtcbiAgICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICBhc3luYyBzZXJ2ZXJMb2FkZXIoKSB7XG4gICAgICAgICAgICAgICAgcHJldmVudEludmFsaWRTZXJ2ZXJIYW5kbGVyQ2FsbChcImxvYWRlclwiLCByb3V0ZSwgaXNTcGFNb2RlKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNIeWRyYXRpb25SZXF1ZXN0KSB7XG4gICAgICAgICAgICAgICAgICBpZiAoaGFzSW5pdGlhbERhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluaXRpYWxEYXRhO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWYgKGhhc0luaXRpYWxFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBpbml0aWFsRXJyb3I7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmZXRjaFNlcnZlckxvYWRlcihzaW5nbGVGZXRjaCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaXNIeWRyYXRpb25SZXF1ZXN0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBkYXRhUm91dGUubG9hZGVyLmh5ZHJhdGUgPSBzaG91bGRIeWRyYXRlUm91dGVMb2FkZXIoXG4gICAgICAgIHJvdXRlLFxuICAgICAgICByb3V0ZU1vZHVsZSxcbiAgICAgICAgaXNTcGFNb2RlXG4gICAgICApO1xuICAgICAgZGF0YVJvdXRlLmFjdGlvbiA9ICh7IHJlcXVlc3QsIHBhcmFtcyB9LCBzaW5nbGVGZXRjaCkgPT4ge1xuICAgICAgICByZXR1cm4gcHJlZmV0Y2hTdHlsZXNBbmRDYWxsSGFuZGxlcihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgaW52YXJpYW50MihcbiAgICAgICAgICAgIHJvdXRlTW9kdWxlLFxuICAgICAgICAgICAgXCJObyBgcm91dGVNb2R1bGVgIGF2YWlsYWJsZSBmb3IgY3JpdGljYWwtcm91dGUgYWN0aW9uXCJcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICghcm91dGVNb2R1bGUuY2xpZW50QWN0aW9uKSB7XG4gICAgICAgICAgICBpZiAoaXNTcGFNb2RlKSB7XG4gICAgICAgICAgICAgIHRocm93IG5vQWN0aW9uRGVmaW5lZEVycm9yKFwiY2xpZW50QWN0aW9uXCIsIHJvdXRlLmlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmZXRjaFNlcnZlckFjdGlvbihzaW5nbGVGZXRjaCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByb3V0ZU1vZHVsZS5jbGllbnRBY3Rpb24oe1xuICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgIGFzeW5jIHNlcnZlckFjdGlvbigpIHtcbiAgICAgICAgICAgICAgcHJldmVudEludmFsaWRTZXJ2ZXJIYW5kbGVyQ2FsbChcImFjdGlvblwiLCByb3V0ZSwgaXNTcGFNb2RlKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGZldGNoU2VydmVyQWN0aW9uKHNpbmdsZUZldGNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXJvdXRlLmhhc0NsaWVudExvYWRlcikge1xuICAgICAgICBkYXRhUm91dGUubG9hZGVyID0gKHsgcmVxdWVzdCB9LCBzaW5nbGVGZXRjaCkgPT4gcHJlZmV0Y2hTdHlsZXNBbmRDYWxsSGFuZGxlcigoKSA9PiB7XG4gICAgICAgICAgaWYgKGlzU3BhTW9kZSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcbiAgICAgICAgICByZXR1cm4gZmV0Y2hTZXJ2ZXJMb2FkZXIoc2luZ2xlRmV0Y2gpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICghcm91dGUuaGFzQ2xpZW50QWN0aW9uKSB7XG4gICAgICAgIGRhdGFSb3V0ZS5hY3Rpb24gPSAoeyByZXF1ZXN0IH0sIHNpbmdsZUZldGNoKSA9PiBwcmVmZXRjaFN0eWxlc0FuZENhbGxIYW5kbGVyKCgpID0+IHtcbiAgICAgICAgICBpZiAoaXNTcGFNb2RlKSB7XG4gICAgICAgICAgICB0aHJvdyBub0FjdGlvbkRlZmluZWRFcnJvcihcImNsaWVudEFjdGlvblwiLCByb3V0ZS5pZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmZXRjaFNlcnZlckFjdGlvbihzaW5nbGVGZXRjaCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZGF0YVJvdXRlLmxhenkgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGxldCBtb2QgPSBhd2FpdCBsb2FkUm91dGVNb2R1bGVXaXRoQmxvY2tpbmdMaW5rcyhcbiAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICByb3V0ZU1vZHVsZXNDYWNoZVxuICAgICAgICApO1xuICAgICAgICBsZXQgbGF6eVJvdXRlID0geyAuLi5tb2QgfTtcbiAgICAgICAgaWYgKG1vZC5jbGllbnRMb2FkZXIpIHtcbiAgICAgICAgICBsZXQgY2xpZW50TG9hZGVyID0gbW9kLmNsaWVudExvYWRlcjtcbiAgICAgICAgICBsYXp5Um91dGUubG9hZGVyID0gKGFyZ3MsIHNpbmdsZUZldGNoKSA9PiBjbGllbnRMb2FkZXIoe1xuICAgICAgICAgICAgLi4uYXJncyxcbiAgICAgICAgICAgIGFzeW5jIHNlcnZlckxvYWRlcigpIHtcbiAgICAgICAgICAgICAgcHJldmVudEludmFsaWRTZXJ2ZXJIYW5kbGVyQ2FsbChcImxvYWRlclwiLCByb3V0ZSwgaXNTcGFNb2RlKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGZldGNoU2VydmVyTG9hZGVyKHNpbmdsZUZldGNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobW9kLmNsaWVudEFjdGlvbikge1xuICAgICAgICAgIGxldCBjbGllbnRBY3Rpb24gPSBtb2QuY2xpZW50QWN0aW9uO1xuICAgICAgICAgIGxhenlSb3V0ZS5hY3Rpb24gPSAoYXJncywgc2luZ2xlRmV0Y2gpID0+IGNsaWVudEFjdGlvbih7XG4gICAgICAgICAgICAuLi5hcmdzLFxuICAgICAgICAgICAgYXN5bmMgc2VydmVyQWN0aW9uKCkge1xuICAgICAgICAgICAgICBwcmV2ZW50SW52YWxpZFNlcnZlckhhbmRsZXJDYWxsKFwiYWN0aW9uXCIsIHJvdXRlLCBpc1NwYU1vZGUpO1xuICAgICAgICAgICAgICByZXR1cm4gZmV0Y2hTZXJ2ZXJBY3Rpb24oc2luZ2xlRmV0Y2gpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ubGF6eVJvdXRlLmxvYWRlciA/IHsgbG9hZGVyOiBsYXp5Um91dGUubG9hZGVyIH0gOiB7fSxcbiAgICAgICAgICAuLi5sYXp5Um91dGUuYWN0aW9uID8geyBhY3Rpb246IGxhenlSb3V0ZS5hY3Rpb24gfSA6IHt9LFxuICAgICAgICAgIGhhc0Vycm9yQm91bmRhcnk6IGxhenlSb3V0ZS5oYXNFcnJvckJvdW5kYXJ5LFxuICAgICAgICAgIHNob3VsZFJldmFsaWRhdGU6IGdldFNob3VsZFJldmFsaWRhdGVGdW5jdGlvbihcbiAgICAgICAgICAgIGxhenlSb3V0ZSxcbiAgICAgICAgICAgIHJvdXRlLmlkLFxuICAgICAgICAgICAgbmVlZHNSZXZhbGlkYXRpb25cbiAgICAgICAgICApLFxuICAgICAgICAgIGhhbmRsZTogbGF6eVJvdXRlLmhhbmRsZSxcbiAgICAgICAgICAvLyBObyBuZWVkIHRvIHdyYXAgdGhlc2UgaW4gbGF5b3V0IHNpbmNlIHRoZSByb290IHJvdXRlIGlzIG5ldmVyXG4gICAgICAgICAgLy8gbG9hZGVkIHZpYSByb3V0ZS5sYXp5KClcbiAgICAgICAgICBDb21wb25lbnQ6IGxhenlSb3V0ZS5Db21wb25lbnQsXG4gICAgICAgICAgRXJyb3JCb3VuZGFyeTogbGF6eVJvdXRlLkVycm9yQm91bmRhcnlcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfVxuICAgIGxldCBjaGlsZHJlbiA9IGNyZWF0ZUNsaWVudFJvdXRlcyhcbiAgICAgIG1hbmlmZXN0LFxuICAgICAgcm91dGVNb2R1bGVzQ2FjaGUsXG4gICAgICBpbml0aWFsU3RhdGUsXG4gICAgICBpc1NwYU1vZGUsXG4gICAgICByb3V0ZS5pZCxcbiAgICAgIHJvdXRlc0J5UGFyZW50SWQsXG4gICAgICBuZWVkc1JldmFsaWRhdGlvblxuICAgICk7XG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIGRhdGFSb3V0ZS5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgIHJldHVybiBkYXRhUm91dGU7XG4gIH0pO1xufVxuZnVuY3Rpb24gZ2V0U2hvdWxkUmV2YWxpZGF0ZUZ1bmN0aW9uKHJvdXRlLCByb3V0ZUlkLCBuZWVkc1JldmFsaWRhdGlvbikge1xuICBpZiAobmVlZHNSZXZhbGlkYXRpb24pIHtcbiAgICByZXR1cm4gd3JhcFNob3VsZFJldmFsaWRhdGVGb3JIZHIoXG4gICAgICByb3V0ZUlkLFxuICAgICAgcm91dGUuc2hvdWxkUmV2YWxpZGF0ZSxcbiAgICAgIG5lZWRzUmV2YWxpZGF0aW9uXG4gICAgKTtcbiAgfVxuICBpZiAocm91dGUuc2hvdWxkUmV2YWxpZGF0ZSkge1xuICAgIGxldCBmbiA9IHJvdXRlLnNob3VsZFJldmFsaWRhdGU7XG4gICAgcmV0dXJuIChvcHRzKSA9PiBmbih7IC4uLm9wdHMsIGRlZmF1bHRTaG91bGRSZXZhbGlkYXRlOiB0cnVlIH0pO1xuICB9XG4gIHJldHVybiByb3V0ZS5zaG91bGRSZXZhbGlkYXRlO1xufVxuZnVuY3Rpb24gd3JhcFNob3VsZFJldmFsaWRhdGVGb3JIZHIocm91dGVJZCwgcm91dGVTaG91bGRSZXZhbGlkYXRlLCBuZWVkc1JldmFsaWRhdGlvbikge1xuICBsZXQgaGFuZGxlZFJldmFsaWRhdGlvbiA9IGZhbHNlO1xuICByZXR1cm4gKGFyZykgPT4ge1xuICAgIGlmICghaGFuZGxlZFJldmFsaWRhdGlvbikge1xuICAgICAgaGFuZGxlZFJldmFsaWRhdGlvbiA9IHRydWU7XG4gICAgICByZXR1cm4gbmVlZHNSZXZhbGlkYXRpb24uaGFzKHJvdXRlSWQpO1xuICAgIH1cbiAgICByZXR1cm4gcm91dGVTaG91bGRSZXZhbGlkYXRlID8gcm91dGVTaG91bGRSZXZhbGlkYXRlKGFyZykgOiBhcmcuZGVmYXVsdFNob3VsZFJldmFsaWRhdGU7XG4gIH07XG59XG5hc3luYyBmdW5jdGlvbiBsb2FkUm91dGVNb2R1bGVXaXRoQmxvY2tpbmdMaW5rcyhyb3V0ZSwgcm91dGVNb2R1bGVzKSB7XG4gIGxldCByb3V0ZU1vZHVsZSA9IGF3YWl0IGxvYWRSb3V0ZU1vZHVsZShyb3V0ZSwgcm91dGVNb2R1bGVzKTtcbiAgYXdhaXQgcHJlZmV0Y2hTdHlsZUxpbmtzKHJvdXRlLCByb3V0ZU1vZHVsZSk7XG4gIHJldHVybiB7XG4gICAgQ29tcG9uZW50OiBnZXRSb3V0ZU1vZHVsZUNvbXBvbmVudChyb3V0ZU1vZHVsZSksXG4gICAgRXJyb3JCb3VuZGFyeTogcm91dGVNb2R1bGUuRXJyb3JCb3VuZGFyeSxcbiAgICBjbGllbnRBY3Rpb246IHJvdXRlTW9kdWxlLmNsaWVudEFjdGlvbixcbiAgICBjbGllbnRMb2FkZXI6IHJvdXRlTW9kdWxlLmNsaWVudExvYWRlcixcbiAgICBoYW5kbGU6IHJvdXRlTW9kdWxlLmhhbmRsZSxcbiAgICBsaW5rczogcm91dGVNb2R1bGUubGlua3MsXG4gICAgbWV0YTogcm91dGVNb2R1bGUubWV0YSxcbiAgICBzaG91bGRSZXZhbGlkYXRlOiByb3V0ZU1vZHVsZS5zaG91bGRSZXZhbGlkYXRlXG4gIH07XG59XG5mdW5jdGlvbiBnZXRSb3V0ZU1vZHVsZUNvbXBvbmVudChyb3V0ZU1vZHVsZSkge1xuICBpZiAocm91dGVNb2R1bGUuZGVmYXVsdCA9PSBudWxsKSByZXR1cm4gdm9pZCAwO1xuICBsZXQgaXNFbXB0eU9iamVjdCA9IHR5cGVvZiByb3V0ZU1vZHVsZS5kZWZhdWx0ID09PSBcIm9iamVjdFwiICYmIE9iamVjdC5rZXlzKHJvdXRlTW9kdWxlLmRlZmF1bHQpLmxlbmd0aCA9PT0gMDtcbiAgaWYgKCFpc0VtcHR5T2JqZWN0KSB7XG4gICAgcmV0dXJuIHJvdXRlTW9kdWxlLmRlZmF1bHQ7XG4gIH1cbn1cbmZ1bmN0aW9uIHNob3VsZEh5ZHJhdGVSb3V0ZUxvYWRlcihyb3V0ZSwgcm91dGVNb2R1bGUsIGlzU3BhTW9kZSkge1xuICByZXR1cm4gaXNTcGFNb2RlICYmIHJvdXRlLmlkICE9PSBcInJvb3RcIiB8fCByb3V0ZU1vZHVsZS5jbGllbnRMb2FkZXIgIT0gbnVsbCAmJiAocm91dGVNb2R1bGUuY2xpZW50TG9hZGVyLmh5ZHJhdGUgPT09IHRydWUgfHwgcm91dGUuaGFzTG9hZGVyICE9PSB0cnVlKTtcbn1cblxuLy8gbGliL2RvbS9zc3IvZm9nLW9mLXdhci50c1xudmFyIG5leHRQYXRocyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG52YXIgZGlzY292ZXJlZFBhdGhzTWF4U2l6ZSA9IDFlMztcbnZhciBkaXNjb3ZlcmVkUGF0aHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xudmFyIFVSTF9MSU1JVCA9IDc2ODA7XG5mdW5jdGlvbiBpc0ZvZ09mV2FyRW5hYmxlZChpc1NwYU1vZGUpIHtcbiAgcmV0dXJuICFpc1NwYU1vZGU7XG59XG5mdW5jdGlvbiBnZXRQYXJ0aWFsTWFuaWZlc3QobWFuaWZlc3QsIHJvdXRlcikge1xuICBsZXQgcm91dGVJZHMgPSBuZXcgU2V0KHJvdXRlci5zdGF0ZS5tYXRjaGVzLm1hcCgobSkgPT4gbS5yb3V0ZS5pZCkpO1xuICBsZXQgc2VnbWVudHMgPSByb3V0ZXIuc3RhdGUubG9jYXRpb24ucGF0aG5hbWUuc3BsaXQoXCIvXCIpLmZpbHRlcihCb29sZWFuKTtcbiAgbGV0IHBhdGhzID0gW1wiL1wiXTtcbiAgc2VnbWVudHMucG9wKCk7XG4gIHdoaWxlIChzZWdtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgcGF0aHMucHVzaChgLyR7c2VnbWVudHMuam9pbihcIi9cIil9YCk7XG4gICAgc2VnbWVudHMucG9wKCk7XG4gIH1cbiAgcGF0aHMuZm9yRWFjaCgocGF0aCkgPT4ge1xuICAgIGxldCBtYXRjaGVzID0gbWF0Y2hSb3V0ZXMocm91dGVyLnJvdXRlcywgcGF0aCwgcm91dGVyLmJhc2VuYW1lKTtcbiAgICBpZiAobWF0Y2hlcykge1xuICAgICAgbWF0Y2hlcy5mb3JFYWNoKChtKSA9PiByb3V0ZUlkcy5hZGQobS5yb3V0ZS5pZCkpO1xuICAgIH1cbiAgfSk7XG4gIGxldCBpbml0aWFsUm91dGVzID0gWy4uLnJvdXRlSWRzXS5yZWR1Y2UoXG4gICAgKGFjYywgaWQpID0+IE9iamVjdC5hc3NpZ24oYWNjLCB7IFtpZF06IG1hbmlmZXN0LnJvdXRlc1tpZF0gfSksXG4gICAge31cbiAgKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5tYW5pZmVzdCxcbiAgICByb3V0ZXM6IGluaXRpYWxSb3V0ZXNcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFBhdGNoUm91dGVzT25OYXZpZ2F0aW9uRnVuY3Rpb24obWFuaWZlc3QsIHJvdXRlTW9kdWxlcywgaXNTcGFNb2RlLCBiYXNlbmFtZSkge1xuICBpZiAoIWlzRm9nT2ZXYXJFbmFibGVkKGlzU3BhTW9kZSkpIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG4gIHJldHVybiBhc3luYyAoeyBwYXRoLCBwYXRjaCB9KSA9PiB7XG4gICAgaWYgKGRpc2NvdmVyZWRQYXRocy5oYXMocGF0aCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgZmV0Y2hBbmRBcHBseU1hbmlmZXN0UGF0Y2hlcyhcbiAgICAgIFtwYXRoXSxcbiAgICAgIG1hbmlmZXN0LFxuICAgICAgcm91dGVNb2R1bGVzLFxuICAgICAgaXNTcGFNb2RlLFxuICAgICAgYmFzZW5hbWUsXG4gICAgICBwYXRjaFxuICAgICk7XG4gIH07XG59XG5mdW5jdGlvbiB1c2VGb2dPRldhckRpc2NvdmVyeShyb3V0ZXIsIG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMsIGlzU3BhTW9kZSkge1xuICBSZWFjdDgudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRm9nT2ZXYXJFbmFibGVkKGlzU3BhTW9kZSkgfHwgbmF2aWdhdG9yLmNvbm5lY3Rpb24/LnNhdmVEYXRhID09PSB0cnVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlZ2lzdGVyRWxlbWVudChlbCkge1xuICAgICAgbGV0IHBhdGggPSBlbC50YWdOYW1lID09PSBcIkZPUk1cIiA/IGVsLmdldEF0dHJpYnV0ZShcImFjdGlvblwiKSA6IGVsLmdldEF0dHJpYnV0ZShcImhyZWZcIik7XG4gICAgICBpZiAoIXBhdGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGV0IHVybCA9IG5ldyBVUkwocGF0aCwgd2luZG93LmxvY2F0aW9uLm9yaWdpbik7XG4gICAgICBpZiAoIWRpc2NvdmVyZWRQYXRocy5oYXModXJsLnBhdGhuYW1lKSkge1xuICAgICAgICBuZXh0UGF0aHMuYWRkKHVybC5wYXRobmFtZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGZ1bmN0aW9uIGZldGNoUGF0Y2hlcygpIHtcbiAgICAgIGxldCBsYXp5UGF0aHMgPSBBcnJheS5mcm9tKG5leHRQYXRocy5rZXlzKCkpLmZpbHRlcigocGF0aCkgPT4ge1xuICAgICAgICBpZiAoZGlzY292ZXJlZFBhdGhzLmhhcyhwYXRoKSkge1xuICAgICAgICAgIG5leHRQYXRocy5kZWxldGUocGF0aCk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgICBpZiAobGF6eVBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBmZXRjaEFuZEFwcGx5TWFuaWZlc3RQYXRjaGVzKFxuICAgICAgICAgIGxhenlQYXRocyxcbiAgICAgICAgICBtYW5pZmVzdCxcbiAgICAgICAgICByb3V0ZU1vZHVsZXMsXG4gICAgICAgICAgaXNTcGFNb2RlLFxuICAgICAgICAgIHJvdXRlci5iYXNlbmFtZSxcbiAgICAgICAgICByb3V0ZXIucGF0Y2hSb3V0ZXNcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBmZXRjaCBtYW5pZmVzdCBwYXRjaGVzXCIsIGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoXCJhW2RhdGEtZGlzY292ZXJdLCBmb3JtW2RhdGEtZGlzY292ZXJdXCIpLmZvckVhY2goKGVsKSA9PiByZWdpc3RlckVsZW1lbnQoZWwpKTtcbiAgICBmZXRjaFBhdGNoZXMoKTtcbiAgICBsZXQgZGVib3VuY2VkRmV0Y2hQYXRjaGVzID0gZGVib3VuY2UoZmV0Y2hQYXRjaGVzLCAxMDApO1xuICAgIGZ1bmN0aW9uIGlzRWxlbWVudChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREU7XG4gICAgfVxuICAgIGxldCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChyZWNvcmRzKSA9PiB7XG4gICAgICBsZXQgZWxlbWVudHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICAgICAgcmVjb3Jkcy5mb3JFYWNoKChyKSA9PiB7XG4gICAgICAgIFtyLnRhcmdldCwgLi4uci5hZGRlZE5vZGVzXS5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgaWYgKCFpc0VsZW1lbnQobm9kZSkpIHJldHVybjtcbiAgICAgICAgICBpZiAobm9kZS50YWdOYW1lID09PSBcIkFcIiAmJiBub2RlLmdldEF0dHJpYnV0ZShcImRhdGEtZGlzY292ZXJcIikpIHtcbiAgICAgICAgICAgIGVsZW1lbnRzLmFkZChub2RlKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUudGFnTmFtZSA9PT0gXCJGT1JNXCIgJiYgbm9kZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLWRpc2NvdmVyXCIpKSB7XG4gICAgICAgICAgICBlbGVtZW50cy5hZGQobm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChub2RlLnRhZ05hbWUgIT09IFwiQVwiKSB7XG4gICAgICAgICAgICBub2RlLnF1ZXJ5U2VsZWN0b3JBbGwoXCJhW2RhdGEtZGlzY292ZXJdLCBmb3JtW2RhdGEtZGlzY292ZXJdXCIpLmZvckVhY2goKGVsKSA9PiBlbGVtZW50cy5hZGQoZWwpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBlbGVtZW50cy5mb3JFYWNoKChlbCkgPT4gcmVnaXN0ZXJFbGVtZW50KGVsKSk7XG4gICAgICBkZWJvdW5jZWRGZXRjaFBhdGNoZXMoKTtcbiAgICB9KTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwge1xuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFtcImRhdGEtZGlzY292ZXJcIiwgXCJocmVmXCIsIFwiYWN0aW9uXCJdXG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfSwgW2lzU3BhTW9kZSwgbWFuaWZlc3QsIHJvdXRlTW9kdWxlcywgcm91dGVyXSk7XG59XG5hc3luYyBmdW5jdGlvbiBmZXRjaEFuZEFwcGx5TWFuaWZlc3RQYXRjaGVzKHBhdGhzLCBtYW5pZmVzdCwgcm91dGVNb2R1bGVzLCBpc1NwYU1vZGUsIGJhc2VuYW1lLCBwYXRjaFJvdXRlcykge1xuICBsZXQgbWFuaWZlc3RQYXRoID0gYCR7YmFzZW5hbWUgIT0gbnVsbCA/IGJhc2VuYW1lIDogXCIvXCJ9L19fbWFuaWZlc3RgLnJlcGxhY2UoXG4gICAgL1xcLysvZyxcbiAgICBcIi9cIlxuICApO1xuICBsZXQgdXJsID0gbmV3IFVSTChtYW5pZmVzdFBhdGgsIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pO1xuICBwYXRocy5zb3J0KCkuZm9yRWFjaCgocGF0aCkgPT4gdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoXCJwXCIsIHBhdGgpKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJ2ZXJzaW9uXCIsIG1hbmlmZXN0LnZlcnNpb24pO1xuICBpZiAodXJsLnRvU3RyaW5nKCkubGVuZ3RoID4gVVJMX0xJTUlUKSB7XG4gICAgbmV4dFBhdGhzLmNsZWFyKCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCByZXMgPSBhd2FpdCBmZXRjaCh1cmwpO1xuICBpZiAoIXJlcy5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHtyZXMuc3RhdHVzfSAke3Jlcy5zdGF0dXNUZXh0fWApO1xuICB9IGVsc2UgaWYgKHJlcy5zdGF0dXMgPj0gNDAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGF3YWl0IHJlcy50ZXh0KCkpO1xuICB9XG4gIGxldCBzZXJ2ZXJQYXRjaGVzID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgbGV0IGtub3duUm91dGVzID0gbmV3IFNldChPYmplY3Qua2V5cyhtYW5pZmVzdC5yb3V0ZXMpKTtcbiAgbGV0IHBhdGNoZXMgPSBPYmplY3QudmFsdWVzKHNlcnZlclBhdGNoZXMpLnJlZHVjZSgoYWNjLCByb3V0ZSkgPT4ge1xuICAgIGlmIChyb3V0ZSAmJiAha25vd25Sb3V0ZXMuaGFzKHJvdXRlLmlkKSkge1xuICAgICAgYWNjW3JvdXRlLmlkXSA9IHJvdXRlO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG4gIE9iamVjdC5hc3NpZ24obWFuaWZlc3Qucm91dGVzLCBwYXRjaGVzKTtcbiAgcGF0aHMuZm9yRWFjaCgocCkgPT4gYWRkVG9GaWZvUXVldWUocCwgZGlzY292ZXJlZFBhdGhzKSk7XG4gIGxldCBwYXJlbnRJZHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICBPYmplY3QudmFsdWVzKHBhdGNoZXMpLmZvckVhY2goKHBhdGNoKSA9PiB7XG4gICAgaWYgKHBhdGNoICYmICghcGF0Y2gucGFyZW50SWQgfHwgIXBhdGNoZXNbcGF0Y2gucGFyZW50SWRdKSkge1xuICAgICAgcGFyZW50SWRzLmFkZChwYXRjaC5wYXJlbnRJZCk7XG4gICAgfVxuICB9KTtcbiAgcGFyZW50SWRzLmZvckVhY2goXG4gICAgKHBhcmVudElkKSA9PiBwYXRjaFJvdXRlcyhcbiAgICAgIHBhcmVudElkIHx8IG51bGwsXG4gICAgICBjcmVhdGVDbGllbnRSb3V0ZXMocGF0Y2hlcywgcm91dGVNb2R1bGVzLCBudWxsLCBpc1NwYU1vZGUsIHBhcmVudElkKVxuICAgIClcbiAgKTtcbn1cbmZ1bmN0aW9uIGFkZFRvRmlmb1F1ZXVlKHBhdGgsIHF1ZXVlKSB7XG4gIGlmIChxdWV1ZS5zaXplID49IGRpc2NvdmVyZWRQYXRoc01heFNpemUpIHtcbiAgICBsZXQgZmlyc3QgPSBxdWV1ZS52YWx1ZXMoKS5uZXh0KCkudmFsdWU7XG4gICAgcXVldWUuZGVsZXRlKGZpcnN0KTtcbiAgfVxuICBxdWV1ZS5hZGQocGF0aCk7XG59XG5mdW5jdGlvbiBkZWJvdW5jZShjYWxsYmFjaywgd2FpdCkge1xuICBsZXQgdGltZW91dElkO1xuICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgdGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gY2FsbGJhY2soLi4uYXJncyksIHdhaXQpO1xuICB9O1xufVxuXG4vLyBsaWIvZG9tL3Nzci9jb21wb25lbnRzLnRzeFxuZnVuY3Rpb24gdXNlRGF0YVJvdXRlckNvbnRleHQyKCkge1xuICBsZXQgY29udGV4dCA9IFJlYWN0OS51c2VDb250ZXh0KERhdGFSb3V0ZXJDb250ZXh0KTtcbiAgaW52YXJpYW50MihcbiAgICBjb250ZXh0LFxuICAgIFwiWW91IG11c3QgcmVuZGVyIHRoaXMgZWxlbWVudCBpbnNpZGUgYSA8RGF0YVJvdXRlckNvbnRleHQuUHJvdmlkZXI+IGVsZW1lbnRcIlxuICApO1xuICByZXR1cm4gY29udGV4dDtcbn1cbmZ1bmN0aW9uIHVzZURhdGFSb3V0ZXJTdGF0ZUNvbnRleHQoKSB7XG4gIGxldCBjb250ZXh0ID0gUmVhY3Q5LnVzZUNvbnRleHQoRGF0YVJvdXRlclN0YXRlQ29udGV4dCk7XG4gIGludmFyaWFudDIoXG4gICAgY29udGV4dCxcbiAgICBcIllvdSBtdXN0IHJlbmRlciB0aGlzIGVsZW1lbnQgaW5zaWRlIGEgPERhdGFSb3V0ZXJTdGF0ZUNvbnRleHQuUHJvdmlkZXI+IGVsZW1lbnRcIlxuICApO1xuICByZXR1cm4gY29udGV4dDtcbn1cbnZhciBGcmFtZXdvcmtDb250ZXh0ID0gUmVhY3Q5LmNyZWF0ZUNvbnRleHQodm9pZCAwKTtcbkZyYW1ld29ya0NvbnRleHQuZGlzcGxheU5hbWUgPSBcIkZyYW1ld29ya0NvbnRleHRcIjtcbmZ1bmN0aW9uIHVzZUZyYW1ld29ya0NvbnRleHQoKSB7XG4gIGxldCBjb250ZXh0ID0gUmVhY3Q5LnVzZUNvbnRleHQoRnJhbWV3b3JrQ29udGV4dCk7XG4gIGludmFyaWFudDIoXG4gICAgY29udGV4dCxcbiAgICBcIllvdSBtdXN0IHJlbmRlciB0aGlzIGVsZW1lbnQgaW5zaWRlIGEgPEh5ZHJhdGVkUm91dGVyPiBlbGVtZW50XCJcbiAgKTtcbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5mdW5jdGlvbiB1c2VQcmVmZXRjaEJlaGF2aW9yKHByZWZldGNoLCB0aGVpckVsZW1lbnRQcm9wcykge1xuICBsZXQgZnJhbWV3b3JrQ29udGV4dCA9IFJlYWN0OS51c2VDb250ZXh0KEZyYW1ld29ya0NvbnRleHQpO1xuICBsZXQgW21heWJlUHJlZmV0Y2gsIHNldE1heWJlUHJlZmV0Y2hdID0gUmVhY3Q5LnVzZVN0YXRlKGZhbHNlKTtcbiAgbGV0IFtzaG91bGRQcmVmZXRjaCwgc2V0U2hvdWxkUHJlZmV0Y2hdID0gUmVhY3Q5LnVzZVN0YXRlKGZhbHNlKTtcbiAgbGV0IHsgb25Gb2N1cywgb25CbHVyLCBvbk1vdXNlRW50ZXIsIG9uTW91c2VMZWF2ZSwgb25Ub3VjaFN0YXJ0IH0gPSB0aGVpckVsZW1lbnRQcm9wcztcbiAgbGV0IHJlZiA9IFJlYWN0OS51c2VSZWYobnVsbCk7XG4gIFJlYWN0OS51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwcmVmZXRjaCA9PT0gXCJyZW5kZXJcIikge1xuICAgICAgc2V0U2hvdWxkUHJlZmV0Y2godHJ1ZSk7XG4gICAgfVxuICAgIGlmIChwcmVmZXRjaCA9PT0gXCJ2aWV3cG9ydFwiKSB7XG4gICAgICBsZXQgY2FsbGJhY2sgPSAoZW50cmllcykgPT4ge1xuICAgICAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgICAgc2V0U2hvdWxkUHJlZmV0Y2goZW50cnkuaXNJbnRlcnNlY3RpbmcpO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICBsZXQgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoY2FsbGJhY2ssIHsgdGhyZXNob2xkOiAwLjUgfSk7XG4gICAgICBpZiAocmVmLmN1cnJlbnQpIG9ic2VydmVyLm9ic2VydmUocmVmLmN1cnJlbnQpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgfTtcbiAgICB9XG4gIH0sIFtwcmVmZXRjaF0pO1xuICBSZWFjdDkudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAobWF5YmVQcmVmZXRjaCkge1xuICAgICAgbGV0IGlkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHNldFNob3VsZFByZWZldGNoKHRydWUpO1xuICAgICAgfSwgMTAwKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dChpZCk7XG4gICAgICB9O1xuICAgIH1cbiAgfSwgW21heWJlUHJlZmV0Y2hdKTtcbiAgbGV0IHNldEludGVudCA9ICgpID0+IHtcbiAgICBzZXRNYXliZVByZWZldGNoKHRydWUpO1xuICB9O1xuICBsZXQgY2FuY2VsSW50ZW50ID0gKCkgPT4ge1xuICAgIHNldE1heWJlUHJlZmV0Y2goZmFsc2UpO1xuICAgIHNldFNob3VsZFByZWZldGNoKGZhbHNlKTtcbiAgfTtcbiAgaWYgKCFmcmFtZXdvcmtDb250ZXh0KSB7XG4gICAgcmV0dXJuIFtmYWxzZSwgcmVmLCB7fV07XG4gIH1cbiAgaWYgKHByZWZldGNoICE9PSBcImludGVudFwiKSB7XG4gICAgcmV0dXJuIFtzaG91bGRQcmVmZXRjaCwgcmVmLCB7fV07XG4gIH1cbiAgcmV0dXJuIFtcbiAgICBzaG91bGRQcmVmZXRjaCxcbiAgICByZWYsXG4gICAge1xuICAgICAgb25Gb2N1czogY29tcG9zZUV2ZW50SGFuZGxlcnMob25Gb2N1cywgc2V0SW50ZW50KSxcbiAgICAgIG9uQmx1cjogY29tcG9zZUV2ZW50SGFuZGxlcnMob25CbHVyLCBjYW5jZWxJbnRlbnQpLFxuICAgICAgb25Nb3VzZUVudGVyOiBjb21wb3NlRXZlbnRIYW5kbGVycyhvbk1vdXNlRW50ZXIsIHNldEludGVudCksXG4gICAgICBvbk1vdXNlTGVhdmU6IGNvbXBvc2VFdmVudEhhbmRsZXJzKG9uTW91c2VMZWF2ZSwgY2FuY2VsSW50ZW50KSxcbiAgICAgIG9uVG91Y2hTdGFydDogY29tcG9zZUV2ZW50SGFuZGxlcnMob25Ub3VjaFN0YXJ0LCBzZXRJbnRlbnQpXG4gICAgfVxuICBdO1xufVxuZnVuY3Rpb24gY29tcG9zZUV2ZW50SGFuZGxlcnModGhlaXJIYW5kbGVyLCBvdXJIYW5kbGVyKSB7XG4gIHJldHVybiAoZXZlbnQpID0+IHtcbiAgICB0aGVpckhhbmRsZXIgJiYgdGhlaXJIYW5kbGVyKGV2ZW50KTtcbiAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIG91ckhhbmRsZXIoZXZlbnQpO1xuICAgIH1cbiAgfTtcbn1cbmZ1bmN0aW9uIGdldEFjdGl2ZU1hdGNoZXMobWF0Y2hlcywgZXJyb3JzLCBpc1NwYU1vZGUpIHtcbiAgaWYgKGlzU3BhTW9kZSAmJiAhaXNIeWRyYXRlZCkge1xuICAgIHJldHVybiBbbWF0Y2hlc1swXV07XG4gIH1cbiAgaWYgKGVycm9ycykge1xuICAgIGxldCBlcnJvcklkeCA9IG1hdGNoZXMuZmluZEluZGV4KChtKSA9PiBlcnJvcnNbbS5yb3V0ZS5pZF0gIT09IHZvaWQgMCk7XG4gICAgcmV0dXJuIG1hdGNoZXMuc2xpY2UoMCwgZXJyb3JJZHggKyAxKTtcbiAgfVxuICByZXR1cm4gbWF0Y2hlcztcbn1cbmZ1bmN0aW9uIExpbmtzKCkge1xuICBsZXQgeyBpc1NwYU1vZGUsIG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMsIGNyaXRpY2FsQ3NzIH0gPSB1c2VGcmFtZXdvcmtDb250ZXh0KCk7XG4gIGxldCB7IGVycm9ycywgbWF0Y2hlczogcm91dGVyTWF0Y2hlcyB9ID0gdXNlRGF0YVJvdXRlclN0YXRlQ29udGV4dCgpO1xuICBsZXQgbWF0Y2hlcyA9IGdldEFjdGl2ZU1hdGNoZXMocm91dGVyTWF0Y2hlcywgZXJyb3JzLCBpc1NwYU1vZGUpO1xuICBsZXQga2V5ZWRMaW5rcyA9IFJlYWN0OS51c2VNZW1vKFxuICAgICgpID0+IGdldEtleWVkTGlua3NGb3JNYXRjaGVzKG1hdGNoZXMsIHJvdXRlTW9kdWxlcywgbWFuaWZlc3QpLFxuICAgIFttYXRjaGVzLCByb3V0ZU1vZHVsZXMsIG1hbmlmZXN0XVxuICApO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFJlYWN0OS5GcmFnbWVudCwgbnVsbCwgY3JpdGljYWxDc3MgPyAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLCB7IGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7IF9faHRtbDogY3JpdGljYWxDc3MgfSB9KSA6IG51bGwsIGtleWVkTGlua3MubWFwKFxuICAgICh7IGtleSwgbGluayB9KSA9PiBpc1BhZ2VMaW5rRGVzY3JpcHRvcihsaW5rKSA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChQcmVmZXRjaFBhZ2VMaW5rcywgeyBrZXksIC4uLmxpbmsgfSkgOiAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIsIHsga2V5LCAuLi5saW5rIH0pXG4gICkpO1xufVxuZnVuY3Rpb24gUHJlZmV0Y2hQYWdlTGlua3Moe1xuICBwYWdlLFxuICAuLi5kYXRhTGlua1Byb3BzXG59KSB7XG4gIGxldCB7IHJvdXRlciB9ID0gdXNlRGF0YVJvdXRlckNvbnRleHQyKCk7XG4gIGxldCBtYXRjaGVzID0gUmVhY3Q5LnVzZU1lbW8oXG4gICAgKCkgPT4gbWF0Y2hSb3V0ZXMocm91dGVyLnJvdXRlcywgcGFnZSwgcm91dGVyLmJhc2VuYW1lKSxcbiAgICBbcm91dGVyLnJvdXRlcywgcGFnZSwgcm91dGVyLmJhc2VuYW1lXVxuICApO1xuICBpZiAoIW1hdGNoZXMpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFByZWZldGNoUGFnZUxpbmtzSW1wbCwgeyBwYWdlLCBtYXRjaGVzLCAuLi5kYXRhTGlua1Byb3BzIH0pO1xufVxuZnVuY3Rpb24gdXNlS2V5ZWRQcmVmZXRjaExpbmtzKG1hdGNoZXMpIHtcbiAgbGV0IHsgbWFuaWZlc3QsIHJvdXRlTW9kdWxlcyB9ID0gdXNlRnJhbWV3b3JrQ29udGV4dCgpO1xuICBsZXQgW2tleWVkUHJlZmV0Y2hMaW5rcywgc2V0S2V5ZWRQcmVmZXRjaExpbmtzXSA9IFJlYWN0OS51c2VTdGF0ZShbXSk7XG4gIFJlYWN0OS51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBpbnRlcnJ1cHRlZCA9IGZhbHNlO1xuICAgIHZvaWQgZ2V0S2V5ZWRQcmVmZXRjaExpbmtzKG1hdGNoZXMsIG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMpLnRoZW4oXG4gICAgICAobGlua3MpID0+IHtcbiAgICAgICAgaWYgKCFpbnRlcnJ1cHRlZCkge1xuICAgICAgICAgIHNldEtleWVkUHJlZmV0Y2hMaW5rcyhsaW5rcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpbnRlcnJ1cHRlZCA9IHRydWU7XG4gICAgfTtcbiAgfSwgW21hdGNoZXMsIG1hbmlmZXN0LCByb3V0ZU1vZHVsZXNdKTtcbiAgcmV0dXJuIGtleWVkUHJlZmV0Y2hMaW5rcztcbn1cbmZ1bmN0aW9uIFByZWZldGNoUGFnZUxpbmtzSW1wbCh7XG4gIHBhZ2UsXG4gIG1hdGNoZXM6IG5leHRNYXRjaGVzLFxuICAuLi5saW5rUHJvcHNcbn0pIHtcbiAgbGV0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcbiAgbGV0IHsgbWFuaWZlc3QsIHJvdXRlTW9kdWxlcyB9ID0gdXNlRnJhbWV3b3JrQ29udGV4dCgpO1xuICBsZXQgeyBsb2FkZXJEYXRhLCBtYXRjaGVzIH0gPSB1c2VEYXRhUm91dGVyU3RhdGVDb250ZXh0KCk7XG4gIGxldCBuZXdNYXRjaGVzRm9yRGF0YSA9IFJlYWN0OS51c2VNZW1vKFxuICAgICgpID0+IGdldE5ld01hdGNoZXNGb3JMaW5rcyhcbiAgICAgIHBhZ2UsXG4gICAgICBuZXh0TWF0Y2hlcyxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBtYW5pZmVzdCxcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgXCJkYXRhXCJcbiAgICApLFxuICAgIFtwYWdlLCBuZXh0TWF0Y2hlcywgbWF0Y2hlcywgbWFuaWZlc3QsIGxvY2F0aW9uXVxuICApO1xuICBsZXQgbmV3TWF0Y2hlc0ZvckFzc2V0cyA9IFJlYWN0OS51c2VNZW1vKFxuICAgICgpID0+IGdldE5ld01hdGNoZXNGb3JMaW5rcyhcbiAgICAgIHBhZ2UsXG4gICAgICBuZXh0TWF0Y2hlcyxcbiAgICAgIG1hdGNoZXMsXG4gICAgICBtYW5pZmVzdCxcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgXCJhc3NldHNcIlxuICAgICksXG4gICAgW3BhZ2UsIG5leHRNYXRjaGVzLCBtYXRjaGVzLCBtYW5pZmVzdCwgbG9jYXRpb25dXG4gICk7XG4gIGxldCBkYXRhSHJlZnMgPSBSZWFjdDkudXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKHBhZ2UgPT09IGxvY2F0aW9uLnBhdGhuYW1lICsgbG9jYXRpb24uc2VhcmNoICsgbG9jYXRpb24uaGFzaCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBsZXQgcm91dGVzUGFyYW1zID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgICBsZXQgZm91bmRPcHRPdXRSb3V0ZSA9IGZhbHNlO1xuICAgIG5leHRNYXRjaGVzLmZvckVhY2goKG0pID0+IHtcbiAgICAgIGxldCBtYW5pZmVzdFJvdXRlID0gbWFuaWZlc3Qucm91dGVzW20ucm91dGUuaWRdO1xuICAgICAgaWYgKCFtYW5pZmVzdFJvdXRlIHx8ICFtYW5pZmVzdFJvdXRlLmhhc0xvYWRlcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIW5ld01hdGNoZXNGb3JEYXRhLnNvbWUoKG0yKSA9PiBtMi5yb3V0ZS5pZCA9PT0gbS5yb3V0ZS5pZCkgJiYgbS5yb3V0ZS5pZCBpbiBsb2FkZXJEYXRhICYmIHJvdXRlTW9kdWxlc1ttLnJvdXRlLmlkXT8uc2hvdWxkUmV2YWxpZGF0ZSkge1xuICAgICAgICBmb3VuZE9wdE91dFJvdXRlID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAobWFuaWZlc3RSb3V0ZS5oYXNDbGllbnRMb2FkZXIpIHtcbiAgICAgICAgZm91bmRPcHRPdXRSb3V0ZSA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByb3V0ZXNQYXJhbXMuYWRkKG0ucm91dGUuaWQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChyb3V0ZXNQYXJhbXMuc2l6ZSA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBsZXQgdXJsID0gc2luZ2xlRmV0Y2hVcmwocGFnZSk7XG4gICAgaWYgKGZvdW5kT3B0T3V0Um91dGUgJiYgcm91dGVzUGFyYW1zLnNpemUgPiAwKSB7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldChcbiAgICAgICAgXCJfcm91dGVzXCIsXG4gICAgICAgIG5leHRNYXRjaGVzLmZpbHRlcigobSkgPT4gcm91dGVzUGFyYW1zLmhhcyhtLnJvdXRlLmlkKSkubWFwKChtKSA9PiBtLnJvdXRlLmlkKS5qb2luKFwiLFwiKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIFt1cmwucGF0aG5hbWUgKyB1cmwuc2VhcmNoXTtcbiAgfSwgW1xuICAgIGxvYWRlckRhdGEsXG4gICAgbG9jYXRpb24sXG4gICAgbWFuaWZlc3QsXG4gICAgbmV3TWF0Y2hlc0ZvckRhdGEsXG4gICAgbmV4dE1hdGNoZXMsXG4gICAgcGFnZSxcbiAgICByb3V0ZU1vZHVsZXNcbiAgXSk7XG4gIGxldCBtb2R1bGVIcmVmcyA9IFJlYWN0OS51c2VNZW1vKFxuICAgICgpID0+IGdldE1vZHVsZUxpbmtIcmVmcyhuZXdNYXRjaGVzRm9yQXNzZXRzLCBtYW5pZmVzdCksXG4gICAgW25ld01hdGNoZXNGb3JBc3NldHMsIG1hbmlmZXN0XVxuICApO1xuICBsZXQga2V5ZWRQcmVmZXRjaExpbmtzID0gdXNlS2V5ZWRQcmVmZXRjaExpbmtzKG5ld01hdGNoZXNGb3JBc3NldHMpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFJlYWN0OS5GcmFnbWVudCwgbnVsbCwgZGF0YUhyZWZzLm1hcCgoaHJlZikgPT4gLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFwibGlua1wiLCB7IGtleTogaHJlZiwgcmVsOiBcInByZWZldGNoXCIsIGFzOiBcImZldGNoXCIsIGhyZWYsIC4uLmxpbmtQcm9wcyB9KSksIG1vZHVsZUhyZWZzLm1hcCgoaHJlZikgPT4gLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFwibGlua1wiLCB7IGtleTogaHJlZiwgcmVsOiBcIm1vZHVsZXByZWxvYWRcIiwgaHJlZiwgLi4ubGlua1Byb3BzIH0pKSwga2V5ZWRQcmVmZXRjaExpbmtzLm1hcCgoeyBrZXksIGxpbmsgfSkgPT4gKFxuICAgIC8vIHRoZXNlIGRvbid0IHNwcmVhZCBgbGlua1Byb3BzYCBiZWNhdXNlIHRoZXkgYXJlIGZ1bGwgbGluayBkZXNjcmlwdG9yc1xuICAgIC8vIGFscmVhZHkgd2l0aCB0aGVpciBvd24gcHJvcHNcbiAgICAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIsIHsga2V5LCAuLi5saW5rIH0pXG4gICkpKTtcbn1cbmZ1bmN0aW9uIE1ldGEoKSB7XG4gIGxldCB7IGlzU3BhTW9kZSwgcm91dGVNb2R1bGVzIH0gPSB1c2VGcmFtZXdvcmtDb250ZXh0KCk7XG4gIGxldCB7XG4gICAgZXJyb3JzLFxuICAgIG1hdGNoZXM6IHJvdXRlck1hdGNoZXMsXG4gICAgbG9hZGVyRGF0YVxuICB9ID0gdXNlRGF0YVJvdXRlclN0YXRlQ29udGV4dCgpO1xuICBsZXQgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICBsZXQgX21hdGNoZXMgPSBnZXRBY3RpdmVNYXRjaGVzKHJvdXRlck1hdGNoZXMsIGVycm9ycywgaXNTcGFNb2RlKTtcbiAgbGV0IGVycm9yID0gbnVsbDtcbiAgaWYgKGVycm9ycykge1xuICAgIGVycm9yID0gZXJyb3JzW19tYXRjaGVzW19tYXRjaGVzLmxlbmd0aCAtIDFdLnJvdXRlLmlkXTtcbiAgfVxuICBsZXQgbWV0YSA9IFtdO1xuICBsZXQgbGVhZk1ldGEgPSBudWxsO1xuICBsZXQgbWF0Y2hlcyA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IF9tYXRjaGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IF9tYXRjaCA9IF9tYXRjaGVzW2ldO1xuICAgIGxldCByb3V0ZUlkID0gX21hdGNoLnJvdXRlLmlkO1xuICAgIGxldCBkYXRhMiA9IGxvYWRlckRhdGFbcm91dGVJZF07XG4gICAgbGV0IHBhcmFtcyA9IF9tYXRjaC5wYXJhbXM7XG4gICAgbGV0IHJvdXRlTW9kdWxlID0gcm91dGVNb2R1bGVzW3JvdXRlSWRdO1xuICAgIGxldCByb3V0ZU1ldGEgPSBbXTtcbiAgICBsZXQgbWF0Y2ggPSB7XG4gICAgICBpZDogcm91dGVJZCxcbiAgICAgIGRhdGE6IGRhdGEyLFxuICAgICAgbWV0YTogW10sXG4gICAgICBwYXJhbXM6IF9tYXRjaC5wYXJhbXMsXG4gICAgICBwYXRobmFtZTogX21hdGNoLnBhdGhuYW1lLFxuICAgICAgaGFuZGxlOiBfbWF0Y2gucm91dGUuaGFuZGxlLFxuICAgICAgZXJyb3JcbiAgICB9O1xuICAgIG1hdGNoZXNbaV0gPSBtYXRjaDtcbiAgICBpZiAocm91dGVNb2R1bGU/Lm1ldGEpIHtcbiAgICAgIHJvdXRlTWV0YSA9IHR5cGVvZiByb3V0ZU1vZHVsZS5tZXRhID09PSBcImZ1bmN0aW9uXCIgPyByb3V0ZU1vZHVsZS5tZXRhKHtcbiAgICAgICAgZGF0YTogZGF0YTIsXG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgbG9jYXRpb24sXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGVycm9yXG4gICAgICB9KSA6IEFycmF5LmlzQXJyYXkocm91dGVNb2R1bGUubWV0YSkgPyBbLi4ucm91dGVNb2R1bGUubWV0YV0gOiByb3V0ZU1vZHVsZS5tZXRhO1xuICAgIH0gZWxzZSBpZiAobGVhZk1ldGEpIHtcbiAgICAgIHJvdXRlTWV0YSA9IFsuLi5sZWFmTWV0YV07XG4gICAgfVxuICAgIHJvdXRlTWV0YSA9IHJvdXRlTWV0YSB8fCBbXTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocm91dGVNZXRhKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIlRoZSByb3V0ZSBhdCBcIiArIF9tYXRjaC5yb3V0ZS5wYXRoICsgXCIgcmV0dXJucyBhbiBpbnZhbGlkIHZhbHVlLiBBbGwgcm91dGUgbWV0YSBmdW5jdGlvbnMgbXVzdCByZXR1cm4gYW4gYXJyYXkgb2YgbWV0YSBvYmplY3RzLlxcblxcblRvIHJlZmVyZW5jZSB0aGUgbWV0YSBmdW5jdGlvbiBBUEksIHNlZSBodHRwczovL3JlbWl4LnJ1bi9yb3V0ZS9tZXRhXCJcbiAgICAgICk7XG4gICAgfVxuICAgIG1hdGNoLm1ldGEgPSByb3V0ZU1ldGE7XG4gICAgbWF0Y2hlc1tpXSA9IG1hdGNoO1xuICAgIG1ldGEgPSBbLi4ucm91dGVNZXRhXTtcbiAgICBsZWFmTWV0YSA9IG1ldGE7XG4gIH1cbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChSZWFjdDkuRnJhZ21lbnQsIG51bGwsIG1ldGEuZmxhdCgpLm1hcCgobWV0YVByb3BzKSA9PiB7XG4gICAgaWYgKCFtZXRhUHJvcHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoXCJ0YWdOYW1lXCIgaW4gbWV0YVByb3BzKSB7XG4gICAgICBsZXQgeyB0YWdOYW1lLCAuLi5yZXN0IH0gPSBtZXRhUHJvcHM7XG4gICAgICBpZiAoIWlzVmFsaWRNZXRhVGFnKHRhZ05hbWUpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgQSBtZXRhIG9iamVjdCB1c2VzIGFuIGludmFsaWQgdGFnTmFtZTogJHt0YWdOYW1lfS4gRXhwZWN0ZWQgZWl0aGVyICdsaW5rJyBvciAnbWV0YSdgXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgbGV0IENvbXAgPSB0YWdOYW1lO1xuICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChDb21wLCB7IGtleTogSlNPTi5zdHJpbmdpZnkocmVzdCksIC4uLnJlc3QgfSk7XG4gICAgfVxuICAgIGlmIChcInRpdGxlXCIgaW4gbWV0YVByb3BzKSB7XG4gICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFwidGl0bGVcIiwgeyBrZXk6IFwidGl0bGVcIiB9LCBTdHJpbmcobWV0YVByb3BzLnRpdGxlKSk7XG4gICAgfVxuICAgIGlmIChcImNoYXJzZXRcIiBpbiBtZXRhUHJvcHMpIHtcbiAgICAgIG1ldGFQcm9wcy5jaGFyU2V0ID8/IChtZXRhUHJvcHMuY2hhclNldCA9IG1ldGFQcm9wcy5jaGFyc2V0KTtcbiAgICAgIGRlbGV0ZSBtZXRhUHJvcHMuY2hhcnNldDtcbiAgICB9XG4gICAgaWYgKFwiY2hhclNldFwiIGluIG1ldGFQcm9wcyAmJiBtZXRhUHJvcHMuY2hhclNldCAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIG1ldGFQcm9wcy5jaGFyU2V0ID09PSBcInN0cmluZ1wiID8gLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFwibWV0YVwiLCB7IGtleTogXCJjaGFyU2V0XCIsIGNoYXJTZXQ6IG1ldGFQcm9wcy5jaGFyU2V0IH0pIDogbnVsbDtcbiAgICB9XG4gICAgaWYgKFwic2NyaXB0OmxkK2pzb25cIiBpbiBtZXRhUHJvcHMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCBqc29uID0gSlNPTi5zdHJpbmdpZnkobWV0YVByb3BzW1wic2NyaXB0OmxkK2pzb25cIl0pO1xuICAgICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgIFwic2NyaXB0XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBgc2NyaXB0OmxkK2pzb246JHtqc29ufWAsXG4gICAgICAgICAgICB0eXBlOiBcImFwcGxpY2F0aW9uL2xkK2pzb25cIixcbiAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7IF9faHRtbDoganNvbiB9XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFwibWV0YVwiLCB7IGtleTogSlNPTi5zdHJpbmdpZnkobWV0YVByb3BzKSwgLi4ubWV0YVByb3BzIH0pO1xuICB9KSk7XG59XG5mdW5jdGlvbiBpc1ZhbGlkTWV0YVRhZyh0YWdOYW1lKSB7XG4gIHJldHVybiB0eXBlb2YgdGFnTmFtZSA9PT0gXCJzdHJpbmdcIiAmJiAvXihtZXRhfGxpbmspJC8udGVzdCh0YWdOYW1lKTtcbn1cbnZhciBpc0h5ZHJhdGVkID0gZmFsc2U7XG5mdW5jdGlvbiBTY3JpcHRzKHByb3BzKSB7XG4gIGxldCB7IG1hbmlmZXN0LCBzZXJ2ZXJIYW5kb2ZmU3RyaW5nLCBpc1NwYU1vZGUsIHJlbmRlck1ldGEgfSA9IHVzZUZyYW1ld29ya0NvbnRleHQoKTtcbiAgbGV0IHsgcm91dGVyLCBzdGF0aWM6IGlzU3RhdGljLCBzdGF0aWNDb250ZXh0IH0gPSB1c2VEYXRhUm91dGVyQ29udGV4dDIoKTtcbiAgbGV0IHsgbWF0Y2hlczogcm91dGVyTWF0Y2hlcyB9ID0gdXNlRGF0YVJvdXRlclN0YXRlQ29udGV4dCgpO1xuICBsZXQgZW5hYmxlRm9nT2ZXYXIgPSBpc0ZvZ09mV2FyRW5hYmxlZChpc1NwYU1vZGUpO1xuICBpZiAocmVuZGVyTWV0YSkge1xuICAgIHJlbmRlck1ldGEuZGlkUmVuZGVyU2NyaXB0cyA9IHRydWU7XG4gIH1cbiAgbGV0IG1hdGNoZXMgPSBnZXRBY3RpdmVNYXRjaGVzKHJvdXRlck1hdGNoZXMsIG51bGwsIGlzU3BhTW9kZSk7XG4gIFJlYWN0OS51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzSHlkcmF0ZWQgPSB0cnVlO1xuICB9LCBbXSk7XG4gIGxldCBpbml0aWFsU2NyaXB0cyA9IFJlYWN0OS51c2VNZW1vKCgpID0+IHtcbiAgICBsZXQgc3RyZWFtU2NyaXB0ID0gXCJ3aW5kb3cuX19yZWFjdFJvdXRlckNvbnRleHQuc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydChjb250cm9sbGVyKXt3aW5kb3cuX19yZWFjdFJvdXRlckNvbnRleHQuc3RyZWFtQ29udHJvbGxlciA9IGNvbnRyb2xsZXI7fX0pLnBpcGVUaHJvdWdoKG5ldyBUZXh0RW5jb2RlclN0cmVhbSgpKTtcIjtcbiAgICBsZXQgY29udGV4dFNjcmlwdCA9IHN0YXRpY0NvbnRleHQgPyBgd2luZG93Ll9fcmVhY3RSb3V0ZXJDb250ZXh0ID0gJHtzZXJ2ZXJIYW5kb2ZmU3RyaW5nfTske3N0cmVhbVNjcmlwdH1gIDogXCIgXCI7XG4gICAgbGV0IHJvdXRlTW9kdWxlc1NjcmlwdCA9ICFpc1N0YXRpYyA/IFwiIFwiIDogYCR7bWFuaWZlc3QuaG1yPy5ydW50aW1lID8gYGltcG9ydCAke0pTT04uc3RyaW5naWZ5KG1hbmlmZXN0Lmhtci5ydW50aW1lKX07YCA6IFwiXCJ9JHshZW5hYmxlRm9nT2ZXYXIgPyBgaW1wb3J0ICR7SlNPTi5zdHJpbmdpZnkobWFuaWZlc3QudXJsKX1gIDogXCJcIn07XG4ke21hdGNoZXMubWFwKFxuICAgICAgKG1hdGNoLCBpbmRleCkgPT4gYGltcG9ydCAqIGFzIHJvdXRlJHtpbmRleH0gZnJvbSAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICBtYW5pZmVzdC5yb3V0ZXNbbWF0Y2gucm91dGUuaWRdLm1vZHVsZVxuICAgICAgKX07YFxuICAgICkuam9pbihcIlxcblwiKX1cbiAgJHtlbmFibGVGb2dPZldhciA/IChcbiAgICAgIC8vIElubGluZSBhIG1pbmltYWwgbWFuaWZlc3Qgd2l0aCB0aGUgU1NSIG1hdGNoZXNcbiAgICAgIGB3aW5kb3cuX19yZWFjdFJvdXRlck1hbmlmZXN0ID0gJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgZ2V0UGFydGlhbE1hbmlmZXN0KG1hbmlmZXN0LCByb3V0ZXIpLFxuICAgICAgICBudWxsLFxuICAgICAgICAyXG4gICAgICApfTtgXG4gICAgKSA6IFwiXCJ9XG4gIHdpbmRvdy5fX3JlYWN0Um91dGVyUm91dGVNb2R1bGVzID0geyR7bWF0Y2hlcy5tYXAoKG1hdGNoLCBpbmRleCkgPT4gYCR7SlNPTi5zdHJpbmdpZnkobWF0Y2gucm91dGUuaWQpfTpyb3V0ZSR7aW5kZXh9YCkuam9pbihcIixcIil9fTtcblxuaW1wb3J0KCR7SlNPTi5zdHJpbmdpZnkobWFuaWZlc3QuZW50cnkubW9kdWxlKX0pO2A7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChSZWFjdDkuRnJhZ21lbnQsIG51bGwsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcbiAgICAgIFwic2NyaXB0XCIsXG4gICAgICB7XG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmc6IHRydWUsXG4gICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiBjcmVhdGVIdG1sKGNvbnRleHRTY3JpcHQpLFxuICAgICAgICB0eXBlOiB2b2lkIDBcbiAgICAgIH1cbiAgICApLCAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoXG4gICAgICBcInNjcmlwdFwiLFxuICAgICAge1xuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nOiB0cnVlLFxuICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDogY3JlYXRlSHRtbChyb3V0ZU1vZHVsZXNTY3JpcHQpLFxuICAgICAgICB0eXBlOiBcIm1vZHVsZVwiLFxuICAgICAgICBhc3luYzogdHJ1ZVxuICAgICAgfVxuICAgICkpO1xuICB9LCBbXSk7XG4gIGxldCByb3V0ZVByZWxvYWRzID0gbWF0Y2hlcy5tYXAoKG1hdGNoKSA9PiB7XG4gICAgbGV0IHJvdXRlID0gbWFuaWZlc3Qucm91dGVzW21hdGNoLnJvdXRlLmlkXTtcbiAgICByZXR1cm4gcm91dGUgPyAocm91dGUuaW1wb3J0cyB8fCBbXSkuY29uY2F0KFtyb3V0ZS5tb2R1bGVdKSA6IFtdO1xuICB9KS5mbGF0KDEpO1xuICBsZXQgcHJlbG9hZHMgPSBpc0h5ZHJhdGVkID8gW10gOiBtYW5pZmVzdC5lbnRyeS5pbXBvcnRzLmNvbmNhdChyb3V0ZVByZWxvYWRzKTtcbiAgcmV0dXJuIGlzSHlkcmF0ZWQgPyBudWxsIDogLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFJlYWN0OS5GcmFnbWVudCwgbnVsbCwgIWVuYWJsZUZvZ09mV2FyID8gLyogQF9fUFVSRV9fICovIFJlYWN0OS5jcmVhdGVFbGVtZW50KFxuICAgIFwibGlua1wiLFxuICAgIHtcbiAgICAgIHJlbDogXCJtb2R1bGVwcmVsb2FkXCIsXG4gICAgICBocmVmOiBtYW5pZmVzdC51cmwsXG4gICAgICBjcm9zc09yaWdpbjogcHJvcHMuY3Jvc3NPcmlnaW5cbiAgICB9XG4gICkgOiBudWxsLCAvKiBAX19QVVJFX18gKi8gUmVhY3Q5LmNyZWF0ZUVsZW1lbnQoXG4gICAgXCJsaW5rXCIsXG4gICAge1xuICAgICAgcmVsOiBcIm1vZHVsZXByZWxvYWRcIixcbiAgICAgIGhyZWY6IG1hbmlmZXN0LmVudHJ5Lm1vZHVsZSxcbiAgICAgIGNyb3NzT3JpZ2luOiBwcm9wcy5jcm9zc09yaWdpblxuICAgIH1cbiAgKSwgZGVkdXBlKHByZWxvYWRzKS5tYXAoKHBhdGgpID0+IC8qIEBfX1BVUkVfXyAqLyBSZWFjdDkuY3JlYXRlRWxlbWVudChcbiAgICBcImxpbmtcIixcbiAgICB7XG4gICAgICBrZXk6IHBhdGgsXG4gICAgICByZWw6IFwibW9kdWxlcHJlbG9hZFwiLFxuICAgICAgaHJlZjogcGF0aCxcbiAgICAgIGNyb3NzT3JpZ2luOiBwcm9wcy5jcm9zc09yaWdpblxuICAgIH1cbiAgKSksIGluaXRpYWxTY3JpcHRzKTtcbn1cbmZ1bmN0aW9uIGRlZHVwZShhcnJheSkge1xuICByZXR1cm4gWy4uLm5ldyBTZXQoYXJyYXkpXTtcbn1cbmZ1bmN0aW9uIG1lcmdlUmVmcyguLi5yZWZzKSB7XG4gIHJldHVybiAodmFsdWUpID0+IHtcbiAgICByZWZzLmZvckVhY2goKHJlZikgPT4ge1xuICAgICAgaWYgKHR5cGVvZiByZWYgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZWYodmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChyZWYgIT0gbnVsbCkge1xuICAgICAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xufVxuXG4vLyBsaWIvZG9tL2xpYi50c3hcbnZhciBpc0Jyb3dzZXIgPSB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiB3aW5kb3cuZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIgJiYgdHlwZW9mIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50ICE9PSBcInVuZGVmaW5lZFwiO1xudHJ5IHtcbiAgaWYgKGlzQnJvd3Nlcikge1xuICAgIHdpbmRvdy5fX3JlYWN0Um91dGVyVmVyc2lvbiA9IFwiNy4xLjBcIjtcbiAgfVxufSBjYXRjaCAoZSkge1xufVxuZnVuY3Rpb24gY3JlYXRlQnJvd3NlclJvdXRlcihyb3V0ZXMsIG9wdHMpIHtcbiAgcmV0dXJuIGNyZWF0ZVJvdXRlcih7XG4gICAgYmFzZW5hbWU6IG9wdHM/LmJhc2VuYW1lLFxuICAgIGZ1dHVyZTogb3B0cz8uZnV0dXJlLFxuICAgIGhpc3Rvcnk6IGNyZWF0ZUJyb3dzZXJIaXN0b3J5KHsgd2luZG93OiBvcHRzPy53aW5kb3cgfSksXG4gICAgaHlkcmF0aW9uRGF0YTogb3B0cz8uaHlkcmF0aW9uRGF0YSB8fCBwYXJzZUh5ZHJhdGlvbkRhdGEoKSxcbiAgICByb3V0ZXMsXG4gICAgbWFwUm91dGVQcm9wZXJ0aWVzLFxuICAgIGRhdGFTdHJhdGVneTogb3B0cz8uZGF0YVN0cmF0ZWd5LFxuICAgIHBhdGNoUm91dGVzT25OYXZpZ2F0aW9uOiBvcHRzPy5wYXRjaFJvdXRlc09uTmF2aWdhdGlvbixcbiAgICB3aW5kb3c6IG9wdHM/LndpbmRvd1xuICB9KS5pbml0aWFsaXplKCk7XG59XG5mdW5jdGlvbiBjcmVhdGVIYXNoUm91dGVyKHJvdXRlcywgb3B0cykge1xuICByZXR1cm4gY3JlYXRlUm91dGVyKHtcbiAgICBiYXNlbmFtZTogb3B0cz8uYmFzZW5hbWUsXG4gICAgZnV0dXJlOiBvcHRzPy5mdXR1cmUsXG4gICAgaGlzdG9yeTogY3JlYXRlSGFzaEhpc3RvcnkoeyB3aW5kb3c6IG9wdHM/LndpbmRvdyB9KSxcbiAgICBoeWRyYXRpb25EYXRhOiBvcHRzPy5oeWRyYXRpb25EYXRhIHx8IHBhcnNlSHlkcmF0aW9uRGF0YSgpLFxuICAgIHJvdXRlcyxcbiAgICBtYXBSb3V0ZVByb3BlcnRpZXMsXG4gICAgZGF0YVN0cmF0ZWd5OiBvcHRzPy5kYXRhU3RyYXRlZ3ksXG4gICAgcGF0Y2hSb3V0ZXNPbk5hdmlnYXRpb246IG9wdHM/LnBhdGNoUm91dGVzT25OYXZpZ2F0aW9uLFxuICAgIHdpbmRvdzogb3B0cz8ud2luZG93XG4gIH0pLmluaXRpYWxpemUoKTtcbn1cbmZ1bmN0aW9uIHBhcnNlSHlkcmF0aW9uRGF0YSgpIHtcbiAgbGV0IHN0YXRlID0gd2luZG93Py5fX3N0YXRpY1JvdXRlckh5ZHJhdGlvbkRhdGE7XG4gIGlmIChzdGF0ZSAmJiBzdGF0ZS5lcnJvcnMpIHtcbiAgICBzdGF0ZSA9IHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgZXJyb3JzOiBkZXNlcmlhbGl6ZUVycm9ycyhzdGF0ZS5lcnJvcnMpXG4gICAgfTtcbiAgfVxuICByZXR1cm4gc3RhdGU7XG59XG5mdW5jdGlvbiBkZXNlcmlhbGl6ZUVycm9ycyhlcnJvcnMpIHtcbiAgaWYgKCFlcnJvcnMpIHJldHVybiBudWxsO1xuICBsZXQgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKGVycm9ycyk7XG4gIGxldCBzZXJpYWxpemVkID0ge307XG4gIGZvciAobGV0IFtrZXksIHZhbF0gb2YgZW50cmllcykge1xuICAgIGlmICh2YWwgJiYgdmFsLl9fdHlwZSA9PT0gXCJSb3V0ZUVycm9yUmVzcG9uc2VcIikge1xuICAgICAgc2VyaWFsaXplZFtrZXldID0gbmV3IEVycm9yUmVzcG9uc2VJbXBsKFxuICAgICAgICB2YWwuc3RhdHVzLFxuICAgICAgICB2YWwuc3RhdHVzVGV4dCxcbiAgICAgICAgdmFsLmRhdGEsXG4gICAgICAgIHZhbC5pbnRlcm5hbCA9PT0gdHJ1ZVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHZhbCAmJiB2YWwuX190eXBlID09PSBcIkVycm9yXCIpIHtcbiAgICAgIGlmICh2YWwuX19zdWJUeXBlKSB7XG4gICAgICAgIGxldCBFcnJvckNvbnN0cnVjdG9yID0gd2luZG93W3ZhbC5fX3N1YlR5cGVdO1xuICAgICAgICBpZiAodHlwZW9mIEVycm9yQ29uc3RydWN0b3IgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgZXJyb3IgPSBuZXcgRXJyb3JDb25zdHJ1Y3Rvcih2YWwubWVzc2FnZSk7XG4gICAgICAgICAgICBlcnJvci5zdGFjayA9IFwiXCI7XG4gICAgICAgICAgICBzZXJpYWxpemVkW2tleV0gPSBlcnJvcjtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc2VyaWFsaXplZFtrZXldID09IG51bGwpIHtcbiAgICAgICAgbGV0IGVycm9yID0gbmV3IEVycm9yKHZhbC5tZXNzYWdlKTtcbiAgICAgICAgZXJyb3Iuc3RhY2sgPSBcIlwiO1xuICAgICAgICBzZXJpYWxpemVkW2tleV0gPSBlcnJvcjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2VyaWFsaXplZFtrZXldID0gdmFsO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc2VyaWFsaXplZDtcbn1cbmZ1bmN0aW9uIEJyb3dzZXJSb3V0ZXIoe1xuICBiYXNlbmFtZSxcbiAgY2hpbGRyZW4sXG4gIHdpbmRvdzogd2luZG93MlxufSkge1xuICBsZXQgaGlzdG9yeVJlZiA9IFJlYWN0MTAudXNlUmVmKCk7XG4gIGlmIChoaXN0b3J5UmVmLmN1cnJlbnQgPT0gbnVsbCkge1xuICAgIGhpc3RvcnlSZWYuY3VycmVudCA9IGNyZWF0ZUJyb3dzZXJIaXN0b3J5KHsgd2luZG93OiB3aW5kb3cyLCB2NUNvbXBhdDogdHJ1ZSB9KTtcbiAgfVxuICBsZXQgaGlzdG9yeSA9IGhpc3RvcnlSZWYuY3VycmVudDtcbiAgbGV0IFtzdGF0ZSwgc2V0U3RhdGVJbXBsXSA9IFJlYWN0MTAudXNlU3RhdGUoe1xuICAgIGFjdGlvbjogaGlzdG9yeS5hY3Rpb24sXG4gICAgbG9jYXRpb246IGhpc3RvcnkubG9jYXRpb25cbiAgfSk7XG4gIGxldCBzZXRTdGF0ZSA9IFJlYWN0MTAudXNlQ2FsbGJhY2soXG4gICAgKG5ld1N0YXRlKSA9PiB7XG4gICAgICBSZWFjdDEwLnN0YXJ0VHJhbnNpdGlvbigoKSA9PiBzZXRTdGF0ZUltcGwobmV3U3RhdGUpKTtcbiAgICB9LFxuICAgIFtzZXRTdGF0ZUltcGxdXG4gICk7XG4gIFJlYWN0MTAudXNlTGF5b3V0RWZmZWN0KCgpID0+IGhpc3RvcnkubGlzdGVuKHNldFN0YXRlKSwgW2hpc3RvcnksIHNldFN0YXRlXSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QxMC5jcmVhdGVFbGVtZW50KFxuICAgIFJvdXRlcixcbiAgICB7XG4gICAgICBiYXNlbmFtZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgbG9jYXRpb246IHN0YXRlLmxvY2F0aW9uLFxuICAgICAgbmF2aWdhdGlvblR5cGU6IHN0YXRlLmFjdGlvbixcbiAgICAgIG5hdmlnYXRvcjogaGlzdG9yeVxuICAgIH1cbiAgKTtcbn1cbmZ1bmN0aW9uIEhhc2hSb3V0ZXIoeyBiYXNlbmFtZSwgY2hpbGRyZW4sIHdpbmRvdzogd2luZG93MiB9KSB7XG4gIGxldCBoaXN0b3J5UmVmID0gUmVhY3QxMC51c2VSZWYoKTtcbiAgaWYgKGhpc3RvcnlSZWYuY3VycmVudCA9PSBudWxsKSB7XG4gICAgaGlzdG9yeVJlZi5jdXJyZW50ID0gY3JlYXRlSGFzaEhpc3RvcnkoeyB3aW5kb3c6IHdpbmRvdzIsIHY1Q29tcGF0OiB0cnVlIH0pO1xuICB9XG4gIGxldCBoaXN0b3J5ID0gaGlzdG9yeVJlZi5jdXJyZW50O1xuICBsZXQgW3N0YXRlLCBzZXRTdGF0ZUltcGxdID0gUmVhY3QxMC51c2VTdGF0ZSh7XG4gICAgYWN0aW9uOiBoaXN0b3J5LmFjdGlvbixcbiAgICBsb2NhdGlvbjogaGlzdG9yeS5sb2NhdGlvblxuICB9KTtcbiAgbGV0IHNldFN0YXRlID0gUmVhY3QxMC51c2VDYWxsYmFjayhcbiAgICAobmV3U3RhdGUpID0+IHtcbiAgICAgIFJlYWN0MTAuc3RhcnRUcmFuc2l0aW9uKCgpID0+IHNldFN0YXRlSW1wbChuZXdTdGF0ZSkpO1xuICAgIH0sXG4gICAgW3NldFN0YXRlSW1wbF1cbiAgKTtcbiAgUmVhY3QxMC51c2VMYXlvdXRFZmZlY3QoKCkgPT4gaGlzdG9yeS5saXN0ZW4oc2V0U3RhdGUpLCBbaGlzdG9yeSwgc2V0U3RhdGVdKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDEwLmNyZWF0ZUVsZW1lbnQoXG4gICAgUm91dGVyLFxuICAgIHtcbiAgICAgIGJhc2VuYW1lLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBsb2NhdGlvbjogc3RhdGUubG9jYXRpb24sXG4gICAgICBuYXZpZ2F0aW9uVHlwZTogc3RhdGUuYWN0aW9uLFxuICAgICAgbmF2aWdhdG9yOiBoaXN0b3J5XG4gICAgfVxuICApO1xufVxuZnVuY3Rpb24gSGlzdG9yeVJvdXRlcih7XG4gIGJhc2VuYW1lLFxuICBjaGlsZHJlbixcbiAgaGlzdG9yeVxufSkge1xuICBsZXQgW3N0YXRlLCBzZXRTdGF0ZUltcGxdID0gUmVhY3QxMC51c2VTdGF0ZSh7XG4gICAgYWN0aW9uOiBoaXN0b3J5LmFjdGlvbixcbiAgICBsb2NhdGlvbjogaGlzdG9yeS5sb2NhdGlvblxuICB9KTtcbiAgbGV0IHNldFN0YXRlID0gUmVhY3QxMC51c2VDYWxsYmFjayhcbiAgICAobmV3U3RhdGUpID0+IHtcbiAgICAgIFJlYWN0MTAuc3RhcnRUcmFuc2l0aW9uKCgpID0+IHNldFN0YXRlSW1wbChuZXdTdGF0ZSkpO1xuICAgIH0sXG4gICAgW3NldFN0YXRlSW1wbF1cbiAgKTtcbiAgUmVhY3QxMC51c2VMYXlvdXRFZmZlY3QoKCkgPT4gaGlzdG9yeS5saXN0ZW4oc2V0U3RhdGUpLCBbaGlzdG9yeSwgc2V0U3RhdGVdKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDEwLmNyZWF0ZUVsZW1lbnQoXG4gICAgUm91dGVyLFxuICAgIHtcbiAgICAgIGJhc2VuYW1lLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBsb2NhdGlvbjogc3RhdGUubG9jYXRpb24sXG4gICAgICBuYXZpZ2F0aW9uVHlwZTogc3RhdGUuYWN0aW9uLFxuICAgICAgbmF2aWdhdG9yOiBoaXN0b3J5XG4gICAgfVxuICApO1xufVxuSGlzdG9yeVJvdXRlci5kaXNwbGF5TmFtZSA9IFwidW5zdGFibGVfSGlzdG9yeVJvdXRlclwiO1xudmFyIEFCU09MVVRFX1VSTF9SRUdFWDIgPSAvXig/OlthLXpdW2EtejAtOSsuLV0qOnxcXC9cXC8pL2k7XG52YXIgTGluayA9IFJlYWN0MTAuZm9yd2FyZFJlZihcbiAgZnVuY3Rpb24gTGlua1dpdGhSZWYoe1xuICAgIG9uQ2xpY2ssXG4gICAgZGlzY292ZXIgPSBcInJlbmRlclwiLFxuICAgIHByZWZldGNoID0gXCJub25lXCIsXG4gICAgcmVsYXRpdmUsXG4gICAgcmVsb2FkRG9jdW1lbnQsXG4gICAgcmVwbGFjZTogcmVwbGFjZTIsXG4gICAgc3RhdGUsXG4gICAgdGFyZ2V0LFxuICAgIHRvLFxuICAgIHByZXZlbnRTY3JvbGxSZXNldCxcbiAgICB2aWV3VHJhbnNpdGlvbixcbiAgICAuLi5yZXN0XG4gIH0sIGZvcndhcmRlZFJlZikge1xuICAgIGxldCB7IGJhc2VuYW1lIH0gPSBSZWFjdDEwLnVzZUNvbnRleHQoTmF2aWdhdGlvbkNvbnRleHQpO1xuICAgIGxldCBpc0Fic29sdXRlID0gdHlwZW9mIHRvID09PSBcInN0cmluZ1wiICYmIEFCU09MVVRFX1VSTF9SRUdFWDIudGVzdCh0byk7XG4gICAgbGV0IGFic29sdXRlSHJlZjtcbiAgICBsZXQgaXNFeHRlcm5hbCA9IGZhbHNlO1xuICAgIGlmICh0eXBlb2YgdG8gPT09IFwic3RyaW5nXCIgJiYgaXNBYnNvbHV0ZSkge1xuICAgICAgYWJzb2x1dGVIcmVmID0gdG87XG4gICAgICBpZiAoaXNCcm93c2VyKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbGV0IGN1cnJlbnRVcmwgPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICAgICAgICBsZXQgdGFyZ2V0VXJsID0gdG8uc3RhcnRzV2l0aChcIi8vXCIpID8gbmV3IFVSTChjdXJyZW50VXJsLnByb3RvY29sICsgdG8pIDogbmV3IFVSTCh0byk7XG4gICAgICAgICAgbGV0IHBhdGggPSBzdHJpcEJhc2VuYW1lKHRhcmdldFVybC5wYXRobmFtZSwgYmFzZW5hbWUpO1xuICAgICAgICAgIGlmICh0YXJnZXRVcmwub3JpZ2luID09PSBjdXJyZW50VXJsLm9yaWdpbiAmJiBwYXRoICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRvID0gcGF0aCArIHRhcmdldFVybC5zZWFyY2ggKyB0YXJnZXRVcmwuaGFzaDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXNFeHRlcm5hbCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgd2FybmluZyhcbiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgYDxMaW5rIHRvPVwiJHt0b31cIj4gY29udGFpbnMgYW4gaW52YWxpZCBVUkwgd2hpY2ggd2lsbCBwcm9iYWJseSBicmVhayB3aGVuIGNsaWNrZWQgLSBwbGVhc2UgdXBkYXRlIHRvIGEgdmFsaWQgVVJMIHBhdGguYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IGhyZWYgPSB1c2VIcmVmKHRvLCB7IHJlbGF0aXZlIH0pO1xuICAgIGxldCBbc2hvdWxkUHJlZmV0Y2gsIHByZWZldGNoUmVmLCBwcmVmZXRjaEhhbmRsZXJzXSA9IHVzZVByZWZldGNoQmVoYXZpb3IoXG4gICAgICBwcmVmZXRjaCxcbiAgICAgIHJlc3RcbiAgICApO1xuICAgIGxldCBpbnRlcm5hbE9uQ2xpY2sgPSB1c2VMaW5rQ2xpY2tIYW5kbGVyKHRvLCB7XG4gICAgICByZXBsYWNlOiByZXBsYWNlMixcbiAgICAgIHN0YXRlLFxuICAgICAgdGFyZ2V0LFxuICAgICAgcHJldmVudFNjcm9sbFJlc2V0LFxuICAgICAgcmVsYXRpdmUsXG4gICAgICB2aWV3VHJhbnNpdGlvblxuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KSB7XG4gICAgICBpZiAob25DbGljaykgb25DbGljayhldmVudCk7XG4gICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgaW50ZXJuYWxPbkNsaWNrKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IGxpbmsgPSAoXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvYW5jaG9yLWhhcy1jb250ZW50XG4gICAgICAvKiBAX19QVVJFX18gKi8gUmVhY3QxMC5jcmVhdGVFbGVtZW50KFxuICAgICAgICBcImFcIixcbiAgICAgICAge1xuICAgICAgICAgIC4uLnJlc3QsXG4gICAgICAgICAgLi4ucHJlZmV0Y2hIYW5kbGVycyxcbiAgICAgICAgICBocmVmOiBhYnNvbHV0ZUhyZWYgfHwgaHJlZixcbiAgICAgICAgICBvbkNsaWNrOiBpc0V4dGVybmFsIHx8IHJlbG9hZERvY3VtZW50ID8gb25DbGljayA6IGhhbmRsZUNsaWNrLFxuICAgICAgICAgIHJlZjogbWVyZ2VSZWZzKGZvcndhcmRlZFJlZiwgcHJlZmV0Y2hSZWYpLFxuICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICBcImRhdGEtZGlzY292ZXJcIjogIWlzQWJzb2x1dGUgJiYgZGlzY292ZXIgPT09IFwicmVuZGVyXCIgPyBcInRydWVcIiA6IHZvaWQgMFxuICAgICAgICB9XG4gICAgICApXG4gICAgKTtcbiAgICByZXR1cm4gc2hvdWxkUHJlZmV0Y2ggJiYgIWlzQWJzb2x1dGUgPyAvKiBAX19QVVJFX18gKi8gUmVhY3QxMC5jcmVhdGVFbGVtZW50KFJlYWN0MTAuRnJhZ21lbnQsIG51bGwsIGxpbmssIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDEwLmNyZWF0ZUVsZW1lbnQoUHJlZmV0Y2hQYWdlTGlua3MsIHsgcGFnZTogaHJlZiB9KSkgOiBsaW5rO1xuICB9XG4pO1xuTGluay5kaXNwbGF5TmFtZSA9IFwiTGlua1wiO1xudmFyIE5hdkxpbmsgPSBSZWFjdDEwLmZvcndhcmRSZWYoXG4gIGZ1bmN0aW9uIE5hdkxpbmtXaXRoUmVmKHtcbiAgICBcImFyaWEtY3VycmVudFwiOiBhcmlhQ3VycmVudFByb3AgPSBcInBhZ2VcIixcbiAgICBjYXNlU2Vuc2l0aXZlID0gZmFsc2UsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVQcm9wID0gXCJcIixcbiAgICBlbmQgPSBmYWxzZSxcbiAgICBzdHlsZTogc3R5bGVQcm9wLFxuICAgIHRvLFxuICAgIHZpZXdUcmFuc2l0aW9uLFxuICAgIGNoaWxkcmVuLFxuICAgIC4uLnJlc3RcbiAgfSwgcmVmKSB7XG4gICAgbGV0IHBhdGggPSB1c2VSZXNvbHZlZFBhdGgodG8sIHsgcmVsYXRpdmU6IHJlc3QucmVsYXRpdmUgfSk7XG4gICAgbGV0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcbiAgICBsZXQgcm91dGVyU3RhdGUgPSBSZWFjdDEwLnVzZUNvbnRleHQoRGF0YVJvdXRlclN0YXRlQ29udGV4dCk7XG4gICAgbGV0IHsgbmF2aWdhdG9yOiBuYXZpZ2F0b3IyLCBiYXNlbmFtZSB9ID0gUmVhY3QxMC51c2VDb250ZXh0KE5hdmlnYXRpb25Db250ZXh0KTtcbiAgICBsZXQgaXNUcmFuc2l0aW9uaW5nID0gcm91dGVyU3RhdGUgIT0gbnVsbCAmJiAvLyBDb25kaXRpb25hbCB1c2FnZSBpcyBPSyBoZXJlIGJlY2F1c2UgdGhlIHVzYWdlIG9mIGEgZGF0YSByb3V0ZXIgaXMgc3RhdGljXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgdXNlVmlld1RyYW5zaXRpb25TdGF0ZShwYXRoKSAmJiB2aWV3VHJhbnNpdGlvbiA9PT0gdHJ1ZTtcbiAgICBsZXQgdG9QYXRobmFtZSA9IG5hdmlnYXRvcjIuZW5jb2RlTG9jYXRpb24gPyBuYXZpZ2F0b3IyLmVuY29kZUxvY2F0aW9uKHBhdGgpLnBhdGhuYW1lIDogcGF0aC5wYXRobmFtZTtcbiAgICBsZXQgbG9jYXRpb25QYXRobmFtZSA9IGxvY2F0aW9uLnBhdGhuYW1lO1xuICAgIGxldCBuZXh0TG9jYXRpb25QYXRobmFtZSA9IHJvdXRlclN0YXRlICYmIHJvdXRlclN0YXRlLm5hdmlnYXRpb24gJiYgcm91dGVyU3RhdGUubmF2aWdhdGlvbi5sb2NhdGlvbiA/IHJvdXRlclN0YXRlLm5hdmlnYXRpb24ubG9jYXRpb24ucGF0aG5hbWUgOiBudWxsO1xuICAgIGlmICghY2FzZVNlbnNpdGl2ZSkge1xuICAgICAgbG9jYXRpb25QYXRobmFtZSA9IGxvY2F0aW9uUGF0aG5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIG5leHRMb2NhdGlvblBhdGhuYW1lID0gbmV4dExvY2F0aW9uUGF0aG5hbWUgPyBuZXh0TG9jYXRpb25QYXRobmFtZS50b0xvd2VyQ2FzZSgpIDogbnVsbDtcbiAgICAgIHRvUGF0aG5hbWUgPSB0b1BhdGhuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIGlmIChuZXh0TG9jYXRpb25QYXRobmFtZSAmJiBiYXNlbmFtZSkge1xuICAgICAgbmV4dExvY2F0aW9uUGF0aG5hbWUgPSBzdHJpcEJhc2VuYW1lKG5leHRMb2NhdGlvblBhdGhuYW1lLCBiYXNlbmFtZSkgfHwgbmV4dExvY2F0aW9uUGF0aG5hbWU7XG4gICAgfVxuICAgIGNvbnN0IGVuZFNsYXNoUG9zaXRpb24gPSB0b1BhdGhuYW1lICE9PSBcIi9cIiAmJiB0b1BhdGhuYW1lLmVuZHNXaXRoKFwiL1wiKSA/IHRvUGF0aG5hbWUubGVuZ3RoIC0gMSA6IHRvUGF0aG5hbWUubGVuZ3RoO1xuICAgIGxldCBpc0FjdGl2ZSA9IGxvY2F0aW9uUGF0aG5hbWUgPT09IHRvUGF0aG5hbWUgfHwgIWVuZCAmJiBsb2NhdGlvblBhdGhuYW1lLnN0YXJ0c1dpdGgodG9QYXRobmFtZSkgJiYgbG9jYXRpb25QYXRobmFtZS5jaGFyQXQoZW5kU2xhc2hQb3NpdGlvbikgPT09IFwiL1wiO1xuICAgIGxldCBpc1BlbmRpbmcgPSBuZXh0TG9jYXRpb25QYXRobmFtZSAhPSBudWxsICYmIChuZXh0TG9jYXRpb25QYXRobmFtZSA9PT0gdG9QYXRobmFtZSB8fCAhZW5kICYmIG5leHRMb2NhdGlvblBhdGhuYW1lLnN0YXJ0c1dpdGgodG9QYXRobmFtZSkgJiYgbmV4dExvY2F0aW9uUGF0aG5hbWUuY2hhckF0KHRvUGF0aG5hbWUubGVuZ3RoKSA9PT0gXCIvXCIpO1xuICAgIGxldCByZW5kZXJQcm9wcyA9IHtcbiAgICAgIGlzQWN0aXZlLFxuICAgICAgaXNQZW5kaW5nLFxuICAgICAgaXNUcmFuc2l0aW9uaW5nXG4gICAgfTtcbiAgICBsZXQgYXJpYUN1cnJlbnQgPSBpc0FjdGl2ZSA/IGFyaWFDdXJyZW50UHJvcCA6IHZvaWQgMDtcbiAgICBsZXQgY2xhc3NOYW1lO1xuICAgIGlmICh0eXBlb2YgY2xhc3NOYW1lUHJvcCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBjbGFzc05hbWUgPSBjbGFzc05hbWVQcm9wKHJlbmRlclByb3BzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2xhc3NOYW1lID0gW1xuICAgICAgICBjbGFzc05hbWVQcm9wLFxuICAgICAgICBpc0FjdGl2ZSA/IFwiYWN0aXZlXCIgOiBudWxsLFxuICAgICAgICBpc1BlbmRpbmcgPyBcInBlbmRpbmdcIiA6IG51bGwsXG4gICAgICAgIGlzVHJhbnNpdGlvbmluZyA/IFwidHJhbnNpdGlvbmluZ1wiIDogbnVsbFxuICAgICAgXS5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIik7XG4gICAgfVxuICAgIGxldCBzdHlsZSA9IHR5cGVvZiBzdHlsZVByb3AgPT09IFwiZnVuY3Rpb25cIiA/IHN0eWxlUHJvcChyZW5kZXJQcm9wcykgOiBzdHlsZVByb3A7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDEwLmNyZWF0ZUVsZW1lbnQoXG4gICAgICBMaW5rLFxuICAgICAge1xuICAgICAgICAuLi5yZXN0LFxuICAgICAgICBcImFyaWEtY3VycmVudFwiOiBhcmlhQ3VycmVudCxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICByZWYsXG4gICAgICAgIHN0eWxlLFxuICAgICAgICB0byxcbiAgICAgICAgdmlld1RyYW5zaXRpb25cbiAgICAgIH0sXG4gICAgICB0eXBlb2YgY2hpbGRyZW4gPT09IFwiZnVuY3Rpb25cIiA/IGNoaWxkcmVuKHJlbmRlclByb3BzKSA6IGNoaWxkcmVuXG4gICAgKTtcbiAgfVxuKTtcbk5hdkxpbmsuZGlzcGxheU5hbWUgPSBcIk5hdkxpbmtcIjtcbnZhciBGb3JtID0gUmVhY3QxMC5mb3J3YXJkUmVmKFxuICAoe1xuICAgIGRpc2NvdmVyID0gXCJyZW5kZXJcIixcbiAgICBmZXRjaGVyS2V5LFxuICAgIG5hdmlnYXRlLFxuICAgIHJlbG9hZERvY3VtZW50LFxuICAgIHJlcGxhY2U6IHJlcGxhY2UyLFxuICAgIHN0YXRlLFxuICAgIG1ldGhvZCA9IGRlZmF1bHRNZXRob2QsXG4gICAgYWN0aW9uLFxuICAgIG9uU3VibWl0LFxuICAgIHJlbGF0aXZlLFxuICAgIHByZXZlbnRTY3JvbGxSZXNldCxcbiAgICB2aWV3VHJhbnNpdGlvbixcbiAgICAuLi5wcm9wc1xuICB9LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgICBsZXQgc3VibWl0ID0gdXNlU3VibWl0KCk7XG4gICAgbGV0IGZvcm1BY3Rpb24gPSB1c2VGb3JtQWN0aW9uKGFjdGlvbiwgeyByZWxhdGl2ZSB9KTtcbiAgICBsZXQgZm9ybU1ldGhvZCA9IG1ldGhvZC50b0xvd2VyQ2FzZSgpID09PSBcImdldFwiID8gXCJnZXRcIiA6IFwicG9zdFwiO1xuICAgIGxldCBpc0Fic29sdXRlID0gdHlwZW9mIGFjdGlvbiA9PT0gXCJzdHJpbmdcIiAmJiBBQlNPTFVURV9VUkxfUkVHRVgyLnRlc3QoYWN0aW9uKTtcbiAgICBsZXQgc3VibWl0SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgICAgb25TdWJtaXQgJiYgb25TdWJtaXQoZXZlbnQpO1xuICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHJldHVybjtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBsZXQgc3VibWl0dGVyID0gZXZlbnQubmF0aXZlRXZlbnQuc3VibWl0dGVyO1xuICAgICAgbGV0IHN1Ym1pdE1ldGhvZCA9IHN1Ym1pdHRlcj8uZ2V0QXR0cmlidXRlKFwiZm9ybW1ldGhvZFwiKSB8fCBtZXRob2Q7XG4gICAgICBzdWJtaXQoc3VibWl0dGVyIHx8IGV2ZW50LmN1cnJlbnRUYXJnZXQsIHtcbiAgICAgICAgZmV0Y2hlcktleSxcbiAgICAgICAgbWV0aG9kOiBzdWJtaXRNZXRob2QsXG4gICAgICAgIG5hdmlnYXRlLFxuICAgICAgICByZXBsYWNlOiByZXBsYWNlMixcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIHJlbGF0aXZlLFxuICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQsXG4gICAgICAgIHZpZXdUcmFuc2l0aW9uXG4gICAgICB9KTtcbiAgICB9O1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QxMC5jcmVhdGVFbGVtZW50KFxuICAgICAgXCJmb3JtXCIsXG4gICAgICB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgICBtZXRob2Q6IGZvcm1NZXRob2QsXG4gICAgICAgIGFjdGlvbjogZm9ybUFjdGlvbixcbiAgICAgICAgb25TdWJtaXQ6IHJlbG9hZERvY3VtZW50ID8gb25TdWJtaXQgOiBzdWJtaXRIYW5kbGVyLFxuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgXCJkYXRhLWRpc2NvdmVyXCI6ICFpc0Fic29sdXRlICYmIGRpc2NvdmVyID09PSBcInJlbmRlclwiID8gXCJ0cnVlXCIgOiB2b2lkIDBcbiAgICAgIH1cbiAgICApO1xuICB9XG4pO1xuRm9ybS5kaXNwbGF5TmFtZSA9IFwiRm9ybVwiO1xuZnVuY3Rpb24gU2Nyb2xsUmVzdG9yYXRpb24oe1xuICBnZXRLZXksXG4gIHN0b3JhZ2VLZXksXG4gIC4uLnByb3BzXG59KSB7XG4gIGxldCByZW1peENvbnRleHQgPSBSZWFjdDEwLnVzZUNvbnRleHQoRnJhbWV3b3JrQ29udGV4dCk7XG4gIGxldCB7IGJhc2VuYW1lIH0gPSBSZWFjdDEwLnVzZUNvbnRleHQoTmF2aWdhdGlvbkNvbnRleHQpO1xuICBsZXQgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICBsZXQgbWF0Y2hlcyA9IHVzZU1hdGNoZXMoKTtcbiAgdXNlU2Nyb2xsUmVzdG9yYXRpb24oeyBnZXRLZXksIHN0b3JhZ2VLZXkgfSk7XG4gIGxldCBzc3JLZXkgPSBSZWFjdDEwLnVzZU1lbW8oXG4gICAgKCkgPT4ge1xuICAgICAgaWYgKCFyZW1peENvbnRleHQgfHwgIWdldEtleSkgcmV0dXJuIG51bGw7XG4gICAgICBsZXQgdXNlcktleSA9IGdldFNjcm9sbFJlc3RvcmF0aW9uS2V5KFxuICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgYmFzZW5hbWUsXG4gICAgICAgIGdldEtleVxuICAgICAgKTtcbiAgICAgIHJldHVybiB1c2VyS2V5ICE9PSBsb2NhdGlvbi5rZXkgPyB1c2VyS2V5IDogbnVsbDtcbiAgICB9LFxuICAgIC8vIE5haCwgd2Ugb25seSBuZWVkIHRoaXMgdGhlIGZpcnN0IHRpbWUgZm9yIHRoZSBTU1IgcmVuZGVyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgIFtdXG4gICk7XG4gIGlmICghcmVtaXhDb250ZXh0IHx8IHJlbWl4Q29udGV4dC5pc1NwYU1vZGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBsZXQgcmVzdG9yZVNjcm9sbCA9ICgoc3RvcmFnZUtleTIsIHJlc3RvcmVLZXkpID0+IHtcbiAgICBpZiAoIXdpbmRvdy5oaXN0b3J5LnN0YXRlIHx8ICF3aW5kb3cuaGlzdG9yeS5zdGF0ZS5rZXkpIHtcbiAgICAgIGxldCBrZXkgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDMyKS5zbGljZSgyKTtcbiAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh7IGtleSB9LCBcIlwiKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGxldCBwb3NpdGlvbnMgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oc3RvcmFnZUtleTIpIHx8IFwie31cIik7XG4gICAgICBsZXQgc3RvcmVkWSA9IHBvc2l0aW9uc1tyZXN0b3JlS2V5IHx8IHdpbmRvdy5oaXN0b3J5LnN0YXRlLmtleV07XG4gICAgICBpZiAodHlwZW9mIHN0b3JlZFkgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIHN0b3JlZFkpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oc3RvcmFnZUtleTIpO1xuICAgIH1cbiAgfSkudG9TdHJpbmcoKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDEwLmNyZWF0ZUVsZW1lbnQoXG4gICAgXCJzY3JpcHRcIixcbiAgICB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZzogdHJ1ZSxcbiAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7XG4gICAgICAgIF9faHRtbDogYCgke3Jlc3RvcmVTY3JvbGx9KSgke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHN0b3JhZ2VLZXkgfHwgU0NST0xMX1JFU1RPUkFUSU9OX1NUT1JBR0VfS0VZXG4gICAgICAgICl9LCAke0pTT04uc3RyaW5naWZ5KHNzcktleSl9KWBcbiAgICAgIH1cbiAgICB9XG4gICk7XG59XG5TY3JvbGxSZXN0b3JhdGlvbi5kaXNwbGF5TmFtZSA9IFwiU2Nyb2xsUmVzdG9yYXRpb25cIjtcbmZ1bmN0aW9uIGdldERhdGFSb3V0ZXJDb25zb2xlRXJyb3IyKGhvb2tOYW1lKSB7XG4gIHJldHVybiBgJHtob29rTmFtZX0gbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGRhdGEgcm91dGVyLiAgU2VlIGh0dHBzOi8vcmVhY3Ryb3V0ZXIuY29tL2VuL21haW4vcm91dGVycy9waWNraW5nLWEtcm91dGVyLmA7XG59XG5mdW5jdGlvbiB1c2VEYXRhUm91dGVyQ29udGV4dDMoaG9va05hbWUpIHtcbiAgbGV0IGN0eCA9IFJlYWN0MTAudXNlQ29udGV4dChEYXRhUm91dGVyQ29udGV4dCk7XG4gIGludmFyaWFudChjdHgsIGdldERhdGFSb3V0ZXJDb25zb2xlRXJyb3IyKGhvb2tOYW1lKSk7XG4gIHJldHVybiBjdHg7XG59XG5mdW5jdGlvbiB1c2VEYXRhUm91dGVyU3RhdGUyKGhvb2tOYW1lKSB7XG4gIGxldCBzdGF0ZSA9IFJlYWN0MTAudXNlQ29udGV4dChEYXRhUm91dGVyU3RhdGVDb250ZXh0KTtcbiAgaW52YXJpYW50KHN0YXRlLCBnZXREYXRhUm91dGVyQ29uc29sZUVycm9yMihob29rTmFtZSkpO1xuICByZXR1cm4gc3RhdGU7XG59XG5mdW5jdGlvbiB1c2VMaW5rQ2xpY2tIYW5kbGVyKHRvLCB7XG4gIHRhcmdldCxcbiAgcmVwbGFjZTogcmVwbGFjZVByb3AsXG4gIHN0YXRlLFxuICBwcmV2ZW50U2Nyb2xsUmVzZXQsXG4gIHJlbGF0aXZlLFxuICB2aWV3VHJhbnNpdGlvblxufSA9IHt9KSB7XG4gIGxldCBuYXZpZ2F0ZSA9IHVzZU5hdmlnYXRlKCk7XG4gIGxldCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG4gIGxldCBwYXRoID0gdXNlUmVzb2x2ZWRQYXRoKHRvLCB7IHJlbGF0aXZlIH0pO1xuICByZXR1cm4gUmVhY3QxMC51c2VDYWxsYmFjayhcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIGlmIChzaG91bGRQcm9jZXNzTGlua0NsaWNrKGV2ZW50LCB0YXJnZXQpKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGxldCByZXBsYWNlMiA9IHJlcGxhY2VQcm9wICE9PSB2b2lkIDAgPyByZXBsYWNlUHJvcCA6IGNyZWF0ZVBhdGgobG9jYXRpb24pID09PSBjcmVhdGVQYXRoKHBhdGgpO1xuICAgICAgICBuYXZpZ2F0ZSh0bywge1xuICAgICAgICAgIHJlcGxhY2U6IHJlcGxhY2UyLFxuICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgIHByZXZlbnRTY3JvbGxSZXNldCxcbiAgICAgICAgICByZWxhdGl2ZSxcbiAgICAgICAgICB2aWV3VHJhbnNpdGlvblxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgbmF2aWdhdGUsXG4gICAgICBwYXRoLFxuICAgICAgcmVwbGFjZVByb3AsXG4gICAgICBzdGF0ZSxcbiAgICAgIHRhcmdldCxcbiAgICAgIHRvLFxuICAgICAgcHJldmVudFNjcm9sbFJlc2V0LFxuICAgICAgcmVsYXRpdmUsXG4gICAgICB2aWV3VHJhbnNpdGlvblxuICAgIF1cbiAgKTtcbn1cbmZ1bmN0aW9uIHVzZVNlYXJjaFBhcmFtcyhkZWZhdWx0SW5pdCkge1xuICB3YXJuaW5nKFxuICAgIHR5cGVvZiBVUkxTZWFyY2hQYXJhbXMgIT09IFwidW5kZWZpbmVkXCIsXG4gICAgYFlvdSBjYW5ub3QgdXNlIHRoZSBcXGB1c2VTZWFyY2hQYXJhbXNcXGAgaG9vayBpbiBhIGJyb3dzZXIgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBVUkxTZWFyY2hQYXJhbXMgQVBJLiBJZiB5b3UgbmVlZCB0byBzdXBwb3J0IEludGVybmV0IEV4cGxvcmVyIDExLCB3ZSByZWNvbW1lbmQgeW91IGxvYWQgYSBwb2x5ZmlsbCBzdWNoIGFzIGh0dHBzOi8vZ2l0aHViLmNvbS91bmdhcC91cmwtc2VhcmNoLXBhcmFtcy5gXG4gICk7XG4gIGxldCBkZWZhdWx0U2VhcmNoUGFyYW1zUmVmID0gUmVhY3QxMC51c2VSZWYoY3JlYXRlU2VhcmNoUGFyYW1zKGRlZmF1bHRJbml0KSk7XG4gIGxldCBoYXNTZXRTZWFyY2hQYXJhbXNSZWYgPSBSZWFjdDEwLnVzZVJlZihmYWxzZSk7XG4gIGxldCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG4gIGxldCBzZWFyY2hQYXJhbXMgPSBSZWFjdDEwLnVzZU1lbW8oXG4gICAgKCkgPT4gKFxuICAgICAgLy8gT25seSBtZXJnZSBpbiB0aGUgZGVmYXVsdHMgaWYgd2UgaGF2ZW4ndCB5ZXQgY2FsbGVkIHNldFNlYXJjaFBhcmFtcy5cbiAgICAgIC8vIE9uY2Ugd2UgY2FsbCB0aGF0IHdlIHdhbnQgdGhvc2UgdG8gdGFrZSBwcmVjZWRlbmNlLCBvdGhlcndpc2UgeW91IGNhbid0XG4gICAgICAvLyByZW1vdmUgYSBwYXJhbSB3aXRoIHNldFNlYXJjaFBhcmFtcyh7fSkgaWYgaXQgaGFzIGFuIGluaXRpYWwgdmFsdWVcbiAgICAgIGdldFNlYXJjaFBhcmFtc0ZvckxvY2F0aW9uKFxuICAgICAgICBsb2NhdGlvbi5zZWFyY2gsXG4gICAgICAgIGhhc1NldFNlYXJjaFBhcmFtc1JlZi5jdXJyZW50ID8gbnVsbCA6IGRlZmF1bHRTZWFyY2hQYXJhbXNSZWYuY3VycmVudFxuICAgICAgKVxuICAgICksXG4gICAgW2xvY2F0aW9uLnNlYXJjaF1cbiAgKTtcbiAgbGV0IG5hdmlnYXRlID0gdXNlTmF2aWdhdGUoKTtcbiAgbGV0IHNldFNlYXJjaFBhcmFtcyA9IFJlYWN0MTAudXNlQ2FsbGJhY2soXG4gICAgKG5leHRJbml0LCBuYXZpZ2F0ZU9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IG5ld1NlYXJjaFBhcmFtcyA9IGNyZWF0ZVNlYXJjaFBhcmFtcyhcbiAgICAgICAgdHlwZW9mIG5leHRJbml0ID09PSBcImZ1bmN0aW9uXCIgPyBuZXh0SW5pdChzZWFyY2hQYXJhbXMpIDogbmV4dEluaXRcbiAgICAgICk7XG4gICAgICBoYXNTZXRTZWFyY2hQYXJhbXNSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICBuYXZpZ2F0ZShcIj9cIiArIG5ld1NlYXJjaFBhcmFtcywgbmF2aWdhdGVPcHRpb25zKTtcbiAgICB9LFxuICAgIFtuYXZpZ2F0ZSwgc2VhcmNoUGFyYW1zXVxuICApO1xuICByZXR1cm4gW3NlYXJjaFBhcmFtcywgc2V0U2VhcmNoUGFyYW1zXTtcbn1cbnZhciBmZXRjaGVySWQgPSAwO1xudmFyIGdldFVuaXF1ZUZldGNoZXJJZCA9ICgpID0+IGBfXyR7U3RyaW5nKCsrZmV0Y2hlcklkKX1fX2A7XG5mdW5jdGlvbiB1c2VTdWJtaXQoKSB7XG4gIGxldCB7IHJvdXRlciB9ID0gdXNlRGF0YVJvdXRlckNvbnRleHQzKFwidXNlU3VibWl0XCIgLyogVXNlU3VibWl0ICovKTtcbiAgbGV0IHsgYmFzZW5hbWUgfSA9IFJlYWN0MTAudXNlQ29udGV4dChOYXZpZ2F0aW9uQ29udGV4dCk7XG4gIGxldCBjdXJyZW50Um91dGVJZCA9IHVzZVJvdXRlSWQoKTtcbiAgcmV0dXJuIFJlYWN0MTAudXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHRhcmdldCwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgICBsZXQgeyBhY3Rpb24sIG1ldGhvZCwgZW5jVHlwZSwgZm9ybURhdGEsIGJvZHkgfSA9IGdldEZvcm1TdWJtaXNzaW9uSW5mbyhcbiAgICAgICAgdGFyZ2V0LFxuICAgICAgICBiYXNlbmFtZVxuICAgICAgKTtcbiAgICAgIGlmIChvcHRpb25zLm5hdmlnYXRlID09PSBmYWxzZSkge1xuICAgICAgICBsZXQga2V5ID0gb3B0aW9ucy5mZXRjaGVyS2V5IHx8IGdldFVuaXF1ZUZldGNoZXJJZCgpO1xuICAgICAgICBhd2FpdCByb3V0ZXIuZmV0Y2goa2V5LCBjdXJyZW50Um91dGVJZCwgb3B0aW9ucy5hY3Rpb24gfHwgYWN0aW9uLCB7XG4gICAgICAgICAgcHJldmVudFNjcm9sbFJlc2V0OiBvcHRpb25zLnByZXZlbnRTY3JvbGxSZXNldCxcbiAgICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgICBib2R5LFxuICAgICAgICAgIGZvcm1NZXRob2Q6IG9wdGlvbnMubWV0aG9kIHx8IG1ldGhvZCxcbiAgICAgICAgICBmb3JtRW5jVHlwZTogb3B0aW9ucy5lbmNUeXBlIHx8IGVuY1R5cGUsXG4gICAgICAgICAgZmx1c2hTeW5jOiBvcHRpb25zLmZsdXNoU3luY1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHJvdXRlci5uYXZpZ2F0ZShvcHRpb25zLmFjdGlvbiB8fCBhY3Rpb24sIHtcbiAgICAgICAgICBwcmV2ZW50U2Nyb2xsUmVzZXQ6IG9wdGlvbnMucHJldmVudFNjcm9sbFJlc2V0LFxuICAgICAgICAgIGZvcm1EYXRhLFxuICAgICAgICAgIGJvZHksXG4gICAgICAgICAgZm9ybU1ldGhvZDogb3B0aW9ucy5tZXRob2QgfHwgbWV0aG9kLFxuICAgICAgICAgIGZvcm1FbmNUeXBlOiBvcHRpb25zLmVuY1R5cGUgfHwgZW5jVHlwZSxcbiAgICAgICAgICByZXBsYWNlOiBvcHRpb25zLnJlcGxhY2UsXG4gICAgICAgICAgc3RhdGU6IG9wdGlvbnMuc3RhdGUsXG4gICAgICAgICAgZnJvbVJvdXRlSWQ6IGN1cnJlbnRSb3V0ZUlkLFxuICAgICAgICAgIGZsdXNoU3luYzogb3B0aW9ucy5mbHVzaFN5bmMsXG4gICAgICAgICAgdmlld1RyYW5zaXRpb246IG9wdGlvbnMudmlld1RyYW5zaXRpb25cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbcm91dGVyLCBiYXNlbmFtZSwgY3VycmVudFJvdXRlSWRdXG4gICk7XG59XG5mdW5jdGlvbiB1c2VGb3JtQWN0aW9uKGFjdGlvbiwgeyByZWxhdGl2ZSB9ID0ge30pIHtcbiAgbGV0IHsgYmFzZW5hbWUgfSA9IFJlYWN0MTAudXNlQ29udGV4dChOYXZpZ2F0aW9uQ29udGV4dCk7XG4gIGxldCByb3V0ZUNvbnRleHQgPSBSZWFjdDEwLnVzZUNvbnRleHQoUm91dGVDb250ZXh0KTtcbiAgaW52YXJpYW50KHJvdXRlQ29udGV4dCwgXCJ1c2VGb3JtQWN0aW9uIG11c3QgYmUgdXNlZCBpbnNpZGUgYSBSb3V0ZUNvbnRleHRcIik7XG4gIGxldCBbbWF0Y2hdID0gcm91dGVDb250ZXh0Lm1hdGNoZXMuc2xpY2UoLTEpO1xuICBsZXQgcGF0aCA9IHsgLi4udXNlUmVzb2x2ZWRQYXRoKGFjdGlvbiA/IGFjdGlvbiA6IFwiLlwiLCB7IHJlbGF0aXZlIH0pIH07XG4gIGxldCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG4gIGlmIChhY3Rpb24gPT0gbnVsbCkge1xuICAgIHBhdGguc2VhcmNoID0gbG9jYXRpb24uc2VhcmNoO1xuICAgIGxldCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhdGguc2VhcmNoKTtcbiAgICBsZXQgaW5kZXhWYWx1ZXMgPSBwYXJhbXMuZ2V0QWxsKFwiaW5kZXhcIik7XG4gICAgbGV0IGhhc05ha2VkSW5kZXhQYXJhbSA9IGluZGV4VmFsdWVzLnNvbWUoKHYpID0+IHYgPT09IFwiXCIpO1xuICAgIGlmIChoYXNOYWtlZEluZGV4UGFyYW0pIHtcbiAgICAgIHBhcmFtcy5kZWxldGUoXCJpbmRleFwiKTtcbiAgICAgIGluZGV4VmFsdWVzLmZpbHRlcigodikgPT4gdikuZm9yRWFjaCgodikgPT4gcGFyYW1zLmFwcGVuZChcImluZGV4XCIsIHYpKTtcbiAgICAgIGxldCBxcyA9IHBhcmFtcy50b1N0cmluZygpO1xuICAgICAgcGF0aC5zZWFyY2ggPSBxcyA/IGA/JHtxc31gIDogXCJcIjtcbiAgICB9XG4gIH1cbiAgaWYgKCghYWN0aW9uIHx8IGFjdGlvbiA9PT0gXCIuXCIpICYmIG1hdGNoLnJvdXRlLmluZGV4KSB7XG4gICAgcGF0aC5zZWFyY2ggPSBwYXRoLnNlYXJjaCA/IHBhdGguc2VhcmNoLnJlcGxhY2UoL15cXD8vLCBcIj9pbmRleCZcIikgOiBcIj9pbmRleFwiO1xuICB9XG4gIGlmIChiYXNlbmFtZSAhPT0gXCIvXCIpIHtcbiAgICBwYXRoLnBhdGhuYW1lID0gcGF0aC5wYXRobmFtZSA9PT0gXCIvXCIgPyBiYXNlbmFtZSA6IGpvaW5QYXRocyhbYmFzZW5hbWUsIHBhdGgucGF0aG5hbWVdKTtcbiAgfVxuICByZXR1cm4gY3JlYXRlUGF0aChwYXRoKTtcbn1cbmZ1bmN0aW9uIHVzZUZldGNoZXIoe1xuICBrZXlcbn0gPSB7fSkge1xuICBsZXQgeyByb3V0ZXIgfSA9IHVzZURhdGFSb3V0ZXJDb250ZXh0MyhcInVzZUZldGNoZXJcIiAvKiBVc2VGZXRjaGVyICovKTtcbiAgbGV0IHN0YXRlID0gdXNlRGF0YVJvdXRlclN0YXRlMihcInVzZUZldGNoZXJcIiAvKiBVc2VGZXRjaGVyICovKTtcbiAgbGV0IGZldGNoZXJEYXRhID0gUmVhY3QxMC51c2VDb250ZXh0KEZldGNoZXJzQ29udGV4dCk7XG4gIGxldCByb3V0ZSA9IFJlYWN0MTAudXNlQ29udGV4dChSb3V0ZUNvbnRleHQpO1xuICBsZXQgcm91dGVJZCA9IHJvdXRlLm1hdGNoZXNbcm91dGUubWF0Y2hlcy5sZW5ndGggLSAxXT8ucm91dGUuaWQ7XG4gIGludmFyaWFudChmZXRjaGVyRGF0YSwgYHVzZUZldGNoZXIgbXVzdCBiZSB1c2VkIGluc2lkZSBhIEZldGNoZXJzQ29udGV4dGApO1xuICBpbnZhcmlhbnQocm91dGUsIGB1c2VGZXRjaGVyIG11c3QgYmUgdXNlZCBpbnNpZGUgYSBSb3V0ZUNvbnRleHRgKTtcbiAgaW52YXJpYW50KFxuICAgIHJvdXRlSWQgIT0gbnVsbCxcbiAgICBgdXNlRmV0Y2hlciBjYW4gb25seSBiZSB1c2VkIG9uIHJvdXRlcyB0aGF0IGNvbnRhaW4gYSB1bmlxdWUgXCJpZFwiYFxuICApO1xuICBsZXQgZGVmYXVsdEtleSA9IFJlYWN0MTAudXNlSWQoKTtcbiAgbGV0IFtmZXRjaGVyS2V5LCBzZXRGZXRjaGVyS2V5XSA9IFJlYWN0MTAudXNlU3RhdGUoa2V5IHx8IGRlZmF1bHRLZXkpO1xuICBpZiAoa2V5ICYmIGtleSAhPT0gZmV0Y2hlcktleSkge1xuICAgIHNldEZldGNoZXJLZXkoa2V5KTtcbiAgfVxuICBSZWFjdDEwLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcm91dGVyLmdldEZldGNoZXIoZmV0Y2hlcktleSk7XG4gICAgcmV0dXJuICgpID0+IHJvdXRlci5kZWxldGVGZXRjaGVyKGZldGNoZXJLZXkpO1xuICB9LCBbcm91dGVyLCBmZXRjaGVyS2V5XSk7XG4gIGxldCBsb2FkID0gUmVhY3QxMC51c2VDYWxsYmFjayhcbiAgICBhc3luYyAoaHJlZiwgb3B0cykgPT4ge1xuICAgICAgaW52YXJpYW50KHJvdXRlSWQsIFwiTm8gcm91dGVJZCBhdmFpbGFibGUgZm9yIGZldGNoZXIubG9hZCgpXCIpO1xuICAgICAgYXdhaXQgcm91dGVyLmZldGNoKGZldGNoZXJLZXksIHJvdXRlSWQsIGhyZWYsIG9wdHMpO1xuICAgIH0sXG4gICAgW2ZldGNoZXJLZXksIHJvdXRlSWQsIHJvdXRlcl1cbiAgKTtcbiAgbGV0IHN1Ym1pdEltcGwgPSB1c2VTdWJtaXQoKTtcbiAgbGV0IHN1Ym1pdCA9IFJlYWN0MTAudXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHRhcmdldCwgb3B0cykgPT4ge1xuICAgICAgYXdhaXQgc3VibWl0SW1wbCh0YXJnZXQsIHtcbiAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgbmF2aWdhdGU6IGZhbHNlLFxuICAgICAgICBmZXRjaGVyS2V5XG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtmZXRjaGVyS2V5LCBzdWJtaXRJbXBsXVxuICApO1xuICBsZXQgRmV0Y2hlckZvcm0gPSBSZWFjdDEwLnVzZU1lbW8oKCkgPT4ge1xuICAgIGxldCBGZXRjaGVyRm9ybTIgPSBSZWFjdDEwLmZvcndhcmRSZWYoXG4gICAgICAocHJvcHMsIHJlZikgPT4ge1xuICAgICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0MTAuY3JlYXRlRWxlbWVudChGb3JtLCB7IC4uLnByb3BzLCBuYXZpZ2F0ZTogZmFsc2UsIGZldGNoZXJLZXksIHJlZiB9KTtcbiAgICAgIH1cbiAgICApO1xuICAgIEZldGNoZXJGb3JtMi5kaXNwbGF5TmFtZSA9IFwiZmV0Y2hlci5Gb3JtXCI7XG4gICAgcmV0dXJuIEZldGNoZXJGb3JtMjtcbiAgfSwgW2ZldGNoZXJLZXldKTtcbiAgbGV0IGZldGNoZXIgPSBzdGF0ZS5mZXRjaGVycy5nZXQoZmV0Y2hlcktleSkgfHwgSURMRV9GRVRDSEVSO1xuICBsZXQgZGF0YTIgPSBmZXRjaGVyRGF0YS5nZXQoZmV0Y2hlcktleSk7XG4gIGxldCBmZXRjaGVyV2l0aENvbXBvbmVudHMgPSBSZWFjdDEwLnVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIEZvcm06IEZldGNoZXJGb3JtLFxuICAgICAgc3VibWl0LFxuICAgICAgbG9hZCxcbiAgICAgIC4uLmZldGNoZXIsXG4gICAgICBkYXRhOiBkYXRhMlxuICAgIH0pLFxuICAgIFtGZXRjaGVyRm9ybSwgc3VibWl0LCBsb2FkLCBmZXRjaGVyLCBkYXRhMl1cbiAgKTtcbiAgcmV0dXJuIGZldGNoZXJXaXRoQ29tcG9uZW50cztcbn1cbmZ1bmN0aW9uIHVzZUZldGNoZXJzKCkge1xuICBsZXQgc3RhdGUgPSB1c2VEYXRhUm91dGVyU3RhdGUyKFwidXNlRmV0Y2hlcnNcIiAvKiBVc2VGZXRjaGVycyAqLyk7XG4gIHJldHVybiBBcnJheS5mcm9tKHN0YXRlLmZldGNoZXJzLmVudHJpZXMoKSkubWFwKChba2V5LCBmZXRjaGVyXSkgPT4gKHtcbiAgICAuLi5mZXRjaGVyLFxuICAgIGtleVxuICB9KSk7XG59XG52YXIgU0NST0xMX1JFU1RPUkFUSU9OX1NUT1JBR0VfS0VZID0gXCJyZWFjdC1yb3V0ZXItc2Nyb2xsLXBvc2l0aW9uc1wiO1xudmFyIHNhdmVkU2Nyb2xsUG9zaXRpb25zID0ge307XG5mdW5jdGlvbiBnZXRTY3JvbGxSZXN0b3JhdGlvbktleShsb2NhdGlvbiwgbWF0Y2hlcywgYmFzZW5hbWUsIGdldEtleSkge1xuICBsZXQga2V5ID0gbnVsbDtcbiAgaWYgKGdldEtleSkge1xuICAgIGlmIChiYXNlbmFtZSAhPT0gXCIvXCIpIHtcbiAgICAgIGtleSA9IGdldEtleShcbiAgICAgICAge1xuICAgICAgICAgIC4uLmxvY2F0aW9uLFxuICAgICAgICAgIHBhdGhuYW1lOiBzdHJpcEJhc2VuYW1lKGxvY2F0aW9uLnBhdGhuYW1lLCBiYXNlbmFtZSkgfHwgbG9jYXRpb24ucGF0aG5hbWVcbiAgICAgICAgfSxcbiAgICAgICAgbWF0Y2hlc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAga2V5ID0gZ2V0S2V5KGxvY2F0aW9uLCBtYXRjaGVzKTtcbiAgICB9XG4gIH1cbiAgaWYgKGtleSA9PSBudWxsKSB7XG4gICAga2V5ID0gbG9jYXRpb24ua2V5O1xuICB9XG4gIHJldHVybiBrZXk7XG59XG5mdW5jdGlvbiB1c2VTY3JvbGxSZXN0b3JhdGlvbih7XG4gIGdldEtleSxcbiAgc3RvcmFnZUtleVxufSA9IHt9KSB7XG4gIGxldCB7IHJvdXRlciB9ID0gdXNlRGF0YVJvdXRlckNvbnRleHQzKFwidXNlU2Nyb2xsUmVzdG9yYXRpb25cIiAvKiBVc2VTY3JvbGxSZXN0b3JhdGlvbiAqLyk7XG4gIGxldCB7IHJlc3RvcmVTY3JvbGxQb3NpdGlvbiwgcHJldmVudFNjcm9sbFJlc2V0IH0gPSB1c2VEYXRhUm91dGVyU3RhdGUyKFxuICAgIFwidXNlU2Nyb2xsUmVzdG9yYXRpb25cIiAvKiBVc2VTY3JvbGxSZXN0b3JhdGlvbiAqL1xuICApO1xuICBsZXQgeyBiYXNlbmFtZSB9ID0gUmVhY3QxMC51c2VDb250ZXh0KE5hdmlnYXRpb25Db250ZXh0KTtcbiAgbGV0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcbiAgbGV0IG1hdGNoZXMgPSB1c2VNYXRjaGVzKCk7XG4gIGxldCBuYXZpZ2F0aW9uID0gdXNlTmF2aWdhdGlvbigpO1xuICBSZWFjdDEwLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgd2luZG93Lmhpc3Rvcnkuc2Nyb2xsUmVzdG9yYXRpb24gPSBcIm1hbnVhbFwiO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5zY3JvbGxSZXN0b3JhdGlvbiA9IFwiYXV0b1wiO1xuICAgIH07XG4gIH0sIFtdKTtcbiAgdXNlUGFnZUhpZGUoXG4gICAgUmVhY3QxMC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAobmF2aWdhdGlvbi5zdGF0ZSA9PT0gXCJpZGxlXCIpIHtcbiAgICAgICAgbGV0IGtleSA9IGdldFNjcm9sbFJlc3RvcmF0aW9uS2V5KGxvY2F0aW9uLCBtYXRjaGVzLCBiYXNlbmFtZSwgZ2V0S2V5KTtcbiAgICAgICAgc2F2ZWRTY3JvbGxQb3NpdGlvbnNba2V5XSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgICBzdG9yYWdlS2V5IHx8IFNDUk9MTF9SRVNUT1JBVElPTl9TVE9SQUdFX0tFWSxcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShzYXZlZFNjcm9sbFBvc2l0aW9ucylcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgYEZhaWxlZCB0byBzYXZlIHNjcm9sbCBwb3NpdGlvbnMgaW4gc2Vzc2lvblN0b3JhZ2UsIDxTY3JvbGxSZXN0b3JhdGlvbiAvPiB3aWxsIG5vdCB3b3JrIHByb3Blcmx5ICgke2Vycm9yfSkuYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgd2luZG93Lmhpc3Rvcnkuc2Nyb2xsUmVzdG9yYXRpb24gPSBcImF1dG9cIjtcbiAgICB9LCBbbmF2aWdhdGlvbi5zdGF0ZSwgZ2V0S2V5LCBiYXNlbmFtZSwgbG9jYXRpb24sIG1hdGNoZXMsIHN0b3JhZ2VLZXldKVxuICApO1xuICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgUmVhY3QxMC51c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbGV0IHNlc3Npb25Qb3NpdGlvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFxuICAgICAgICAgIHN0b3JhZ2VLZXkgfHwgU0NST0xMX1JFU1RPUkFUSU9OX1NUT1JBR0VfS0VZXG4gICAgICAgICk7XG4gICAgICAgIGlmIChzZXNzaW9uUG9zaXRpb25zKSB7XG4gICAgICAgICAgc2F2ZWRTY3JvbGxQb3NpdGlvbnMgPSBKU09OLnBhcnNlKHNlc3Npb25Qb3NpdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICB9XG4gICAgfSwgW3N0b3JhZ2VLZXldKTtcbiAgICBSZWFjdDEwLnVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICBsZXQgZGlzYWJsZVNjcm9sbFJlc3RvcmF0aW9uID0gcm91dGVyPy5lbmFibGVTY3JvbGxSZXN0b3JhdGlvbihcbiAgICAgICAgc2F2ZWRTY3JvbGxQb3NpdGlvbnMsXG4gICAgICAgICgpID0+IHdpbmRvdy5zY3JvbGxZLFxuICAgICAgICBnZXRLZXkgPyAobG9jYXRpb24yLCBtYXRjaGVzMikgPT4gZ2V0U2Nyb2xsUmVzdG9yYXRpb25LZXkobG9jYXRpb24yLCBtYXRjaGVzMiwgYmFzZW5hbWUsIGdldEtleSkgOiB2b2lkIDBcbiAgICAgICk7XG4gICAgICByZXR1cm4gKCkgPT4gZGlzYWJsZVNjcm9sbFJlc3RvcmF0aW9uICYmIGRpc2FibGVTY3JvbGxSZXN0b3JhdGlvbigpO1xuICAgIH0sIFtyb3V0ZXIsIGJhc2VuYW1lLCBnZXRLZXldKTtcbiAgICBSZWFjdDEwLnVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAocmVzdG9yZVNjcm9sbFBvc2l0aW9uID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHJlc3RvcmVTY3JvbGxQb3NpdGlvbiA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgcmVzdG9yZVNjcm9sbFBvc2l0aW9uKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGxvY2F0aW9uLmhhc2gpIHtcbiAgICAgICAgbGV0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gICAgICAgICAgZGVjb2RlVVJJQ29tcG9uZW50KGxvY2F0aW9uLmhhc2guc2xpY2UoMSkpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChlbCkge1xuICAgICAgICAgIGVsLnNjcm9sbEludG9WaWV3KCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocHJldmVudFNjcm9sbFJlc2V0ID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICB9LCBbbG9jYXRpb24sIHJlc3RvcmVTY3JvbGxQb3NpdGlvbiwgcHJldmVudFNjcm9sbFJlc2V0XSk7XG4gIH1cbn1cbmZ1bmN0aW9uIHVzZUJlZm9yZVVubG9hZChjYWxsYmFjaywgb3B0aW9ucykge1xuICBsZXQgeyBjYXB0dXJlIH0gPSBvcHRpb25zIHx8IHt9O1xuICBSZWFjdDEwLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IG9wdHMgPSBjYXB0dXJlICE9IG51bGwgPyB7IGNhcHR1cmUgfSA6IHZvaWQgMDtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImJlZm9yZXVubG9hZFwiLCBjYWxsYmFjaywgb3B0cyk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmVmb3JldW5sb2FkXCIsIGNhbGxiYWNrLCBvcHRzKTtcbiAgICB9O1xuICB9LCBbY2FsbGJhY2ssIGNhcHR1cmVdKTtcbn1cbmZ1bmN0aW9uIHVzZVBhZ2VIaWRlKGNhbGxiYWNrLCBvcHRpb25zKSB7XG4gIGxldCB7IGNhcHR1cmUgfSA9IG9wdGlvbnMgfHwge307XG4gIFJlYWN0MTAudXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgb3B0cyA9IGNhcHR1cmUgIT0gbnVsbCA/IHsgY2FwdHVyZSB9IDogdm9pZCAwO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicGFnZWhpZGVcIiwgY2FsbGJhY2ssIG9wdHMpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBhZ2VoaWRlXCIsIGNhbGxiYWNrLCBvcHRzKTtcbiAgICB9O1xuICB9LCBbY2FsbGJhY2ssIGNhcHR1cmVdKTtcbn1cbmZ1bmN0aW9uIHVzZVByb21wdCh7XG4gIHdoZW4sXG4gIG1lc3NhZ2Vcbn0pIHtcbiAgbGV0IGJsb2NrZXIgPSB1c2VCbG9ja2VyKHdoZW4pO1xuICBSZWFjdDEwLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGJsb2NrZXIuc3RhdGUgPT09IFwiYmxvY2tlZFwiKSB7XG4gICAgICBsZXQgcHJvY2VlZCA9IHdpbmRvdy5jb25maXJtKG1lc3NhZ2UpO1xuICAgICAgaWYgKHByb2NlZWQpIHtcbiAgICAgICAgc2V0VGltZW91dChibG9ja2VyLnByb2NlZWQsIDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmxvY2tlci5yZXNldCgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2Jsb2NrZXIsIG1lc3NhZ2VdKTtcbiAgUmVhY3QxMC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChibG9ja2VyLnN0YXRlID09PSBcImJsb2NrZWRcIiAmJiAhd2hlbikge1xuICAgICAgYmxvY2tlci5yZXNldCgpO1xuICAgIH1cbiAgfSwgW2Jsb2NrZXIsIHdoZW5dKTtcbn1cbmZ1bmN0aW9uIHVzZVZpZXdUcmFuc2l0aW9uU3RhdGUodG8sIG9wdHMgPSB7fSkge1xuICBsZXQgdnRDb250ZXh0ID0gUmVhY3QxMC51c2VDb250ZXh0KFZpZXdUcmFuc2l0aW9uQ29udGV4dCk7XG4gIGludmFyaWFudChcbiAgICB2dENvbnRleHQgIT0gbnVsbCxcbiAgICBcImB1c2VWaWV3VHJhbnNpdGlvblN0YXRlYCBtdXN0IGJlIHVzZWQgd2l0aGluIGByZWFjdC1yb3V0ZXItZG9tYCdzIGBSb3V0ZXJQcm92aWRlcmAuICBEaWQgeW91IGFjY2lkZW50YWxseSBpbXBvcnQgYFJvdXRlclByb3ZpZGVyYCBmcm9tIGByZWFjdC1yb3V0ZXJgP1wiXG4gICk7XG4gIGxldCB7IGJhc2VuYW1lIH0gPSB1c2VEYXRhUm91dGVyQ29udGV4dDMoXG4gICAgXCJ1c2VWaWV3VHJhbnNpdGlvblN0YXRlXCIgLyogdXNlVmlld1RyYW5zaXRpb25TdGF0ZSAqL1xuICApO1xuICBsZXQgcGF0aCA9IHVzZVJlc29sdmVkUGF0aCh0bywgeyByZWxhdGl2ZTogb3B0cy5yZWxhdGl2ZSB9KTtcbiAgaWYgKCF2dENvbnRleHQuaXNUcmFuc2l0aW9uaW5nKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGxldCBjdXJyZW50UGF0aCA9IHN0cmlwQmFzZW5hbWUodnRDb250ZXh0LmN1cnJlbnRMb2NhdGlvbi5wYXRobmFtZSwgYmFzZW5hbWUpIHx8IHZ0Q29udGV4dC5jdXJyZW50TG9jYXRpb24ucGF0aG5hbWU7XG4gIGxldCBuZXh0UGF0aCA9IHN0cmlwQmFzZW5hbWUodnRDb250ZXh0Lm5leHRMb2NhdGlvbi5wYXRobmFtZSwgYmFzZW5hbWUpIHx8IHZ0Q29udGV4dC5uZXh0TG9jYXRpb24ucGF0aG5hbWU7XG4gIHJldHVybiBtYXRjaFBhdGgocGF0aC5wYXRobmFtZSwgbmV4dFBhdGgpICE9IG51bGwgfHwgbWF0Y2hQYXRoKHBhdGgucGF0aG5hbWUsIGN1cnJlbnRQYXRoKSAhPSBudWxsO1xufVxuXG4vLyBsaWIvZG9tL3NlcnZlci50c3hcbmltcG9ydCAqIGFzIFJlYWN0MTEgZnJvbSBcInJlYWN0XCI7XG5mdW5jdGlvbiBTdGF0aWNSb3V0ZXIoe1xuICBiYXNlbmFtZSxcbiAgY2hpbGRyZW4sXG4gIGxvY2F0aW9uOiBsb2NhdGlvblByb3AgPSBcIi9cIlxufSkge1xuICBpZiAodHlwZW9mIGxvY2F0aW9uUHJvcCA9PT0gXCJzdHJpbmdcIikge1xuICAgIGxvY2F0aW9uUHJvcCA9IHBhcnNlUGF0aChsb2NhdGlvblByb3ApO1xuICB9XG4gIGxldCBhY3Rpb24gPSBcIlBPUFwiIC8qIFBvcCAqLztcbiAgbGV0IGxvY2F0aW9uID0ge1xuICAgIHBhdGhuYW1lOiBsb2NhdGlvblByb3AucGF0aG5hbWUgfHwgXCIvXCIsXG4gICAgc2VhcmNoOiBsb2NhdGlvblByb3Auc2VhcmNoIHx8IFwiXCIsXG4gICAgaGFzaDogbG9jYXRpb25Qcm9wLmhhc2ggfHwgXCJcIixcbiAgICBzdGF0ZTogbG9jYXRpb25Qcm9wLnN0YXRlICE9IG51bGwgPyBsb2NhdGlvblByb3Auc3RhdGUgOiBudWxsLFxuICAgIGtleTogbG9jYXRpb25Qcm9wLmtleSB8fCBcImRlZmF1bHRcIlxuICB9O1xuICBsZXQgc3RhdGljTmF2aWdhdG9yID0gZ2V0U3RhdGVsZXNzTmF2aWdhdG9yKCk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QxMS5jcmVhdGVFbGVtZW50KFxuICAgIFJvdXRlcixcbiAgICB7XG4gICAgICBiYXNlbmFtZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgbG9jYXRpb24sXG4gICAgICBuYXZpZ2F0aW9uVHlwZTogYWN0aW9uLFxuICAgICAgbmF2aWdhdG9yOiBzdGF0aWNOYXZpZ2F0b3IsXG4gICAgICBzdGF0aWM6IHRydWVcbiAgICB9XG4gICk7XG59XG5mdW5jdGlvbiBTdGF0aWNSb3V0ZXJQcm92aWRlcih7XG4gIGNvbnRleHQsXG4gIHJvdXRlcixcbiAgaHlkcmF0ZSA9IHRydWUsXG4gIG5vbmNlXG59KSB7XG4gIGludmFyaWFudChcbiAgICByb3V0ZXIgJiYgY29udGV4dCxcbiAgICBcIllvdSBtdXN0IHByb3ZpZGUgYHJvdXRlcmAgYW5kIGBjb250ZXh0YCB0byA8U3RhdGljUm91dGVyUHJvdmlkZXI+XCJcbiAgKTtcbiAgbGV0IGRhdGFSb3V0ZXJDb250ZXh0ID0ge1xuICAgIHJvdXRlcixcbiAgICBuYXZpZ2F0b3I6IGdldFN0YXRlbGVzc05hdmlnYXRvcigpLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgICBzdGF0aWNDb250ZXh0OiBjb250ZXh0LFxuICAgIGJhc2VuYW1lOiBjb250ZXh0LmJhc2VuYW1lIHx8IFwiL1wiXG4gIH07XG4gIGxldCBmZXRjaGVyc0NvbnRleHQgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICBsZXQgaHlkcmF0ZVNjcmlwdCA9IFwiXCI7XG4gIGlmIChoeWRyYXRlICE9PSBmYWxzZSkge1xuICAgIGxldCBkYXRhMiA9IHtcbiAgICAgIGxvYWRlckRhdGE6IGNvbnRleHQubG9hZGVyRGF0YSxcbiAgICAgIGFjdGlvbkRhdGE6IGNvbnRleHQuYWN0aW9uRGF0YSxcbiAgICAgIGVycm9yczogc2VyaWFsaXplRXJyb3JzKGNvbnRleHQuZXJyb3JzKVxuICAgIH07XG4gICAgbGV0IGpzb24gPSBodG1sRXNjYXBlKEpTT04uc3RyaW5naWZ5KEpTT04uc3RyaW5naWZ5KGRhdGEyKSkpO1xuICAgIGh5ZHJhdGVTY3JpcHQgPSBgd2luZG93Ll9fc3RhdGljUm91dGVySHlkcmF0aW9uRGF0YSA9IEpTT04ucGFyc2UoJHtqc29ufSk7YDtcbiAgfVxuICBsZXQgeyBzdGF0ZSB9ID0gZGF0YVJvdXRlckNvbnRleHQucm91dGVyO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0MTEuY3JlYXRlRWxlbWVudChSZWFjdDExLkZyYWdtZW50LCBudWxsLCAvKiBAX19QVVJFX18gKi8gUmVhY3QxMS5jcmVhdGVFbGVtZW50KERhdGFSb3V0ZXJDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBkYXRhUm91dGVyQ29udGV4dCB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QxMS5jcmVhdGVFbGVtZW50KERhdGFSb3V0ZXJTdGF0ZUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHN0YXRlIH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDExLmNyZWF0ZUVsZW1lbnQoRmV0Y2hlcnNDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBmZXRjaGVyc0NvbnRleHQgfSwgLyogQF9fUFVSRV9fICovIFJlYWN0MTEuY3JlYXRlRWxlbWVudChWaWV3VHJhbnNpdGlvbkNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHsgaXNUcmFuc2l0aW9uaW5nOiBmYWxzZSB9IH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDExLmNyZWF0ZUVsZW1lbnQoXG4gICAgUm91dGVyLFxuICAgIHtcbiAgICAgIGJhc2VuYW1lOiBkYXRhUm91dGVyQ29udGV4dC5iYXNlbmFtZSxcbiAgICAgIGxvY2F0aW9uOiBzdGF0ZS5sb2NhdGlvbixcbiAgICAgIG5hdmlnYXRpb25UeXBlOiBzdGF0ZS5oaXN0b3J5QWN0aW9uLFxuICAgICAgbmF2aWdhdG9yOiBkYXRhUm91dGVyQ29udGV4dC5uYXZpZ2F0b3IsXG4gICAgICBzdGF0aWM6IGRhdGFSb3V0ZXJDb250ZXh0LnN0YXRpY1xuICAgIH0sXG4gICAgLyogQF9fUFVSRV9fICovIFJlYWN0MTEuY3JlYXRlRWxlbWVudChcbiAgICAgIERhdGFSb3V0ZXMyLFxuICAgICAge1xuICAgICAgICByb3V0ZXM6IHJvdXRlci5yb3V0ZXMsXG4gICAgICAgIGZ1dHVyZTogcm91dGVyLmZ1dHVyZSxcbiAgICAgICAgc3RhdGVcbiAgICAgIH1cbiAgICApXG4gICkpKSkpLCBoeWRyYXRlU2NyaXB0ID8gLyogQF9fUFVSRV9fICovIFJlYWN0MTEuY3JlYXRlRWxlbWVudChcbiAgICBcInNjcmlwdFwiLFxuICAgIHtcbiAgICAgIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZzogdHJ1ZSxcbiAgICAgIG5vbmNlLFxuICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHsgX19odG1sOiBoeWRyYXRlU2NyaXB0IH1cbiAgICB9XG4gICkgOiBudWxsKTtcbn1cbmZ1bmN0aW9uIERhdGFSb3V0ZXMyKHtcbiAgcm91dGVzLFxuICBmdXR1cmUsXG4gIHN0YXRlXG59KSB7XG4gIHJldHVybiB1c2VSb3V0ZXNJbXBsKHJvdXRlcywgdm9pZCAwLCBzdGF0ZSwgZnV0dXJlKTtcbn1cbmZ1bmN0aW9uIHNlcmlhbGl6ZUVycm9ycyhlcnJvcnMpIHtcbiAgaWYgKCFlcnJvcnMpIHJldHVybiBudWxsO1xuICBsZXQgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKGVycm9ycyk7XG4gIGxldCBzZXJpYWxpemVkID0ge307XG4gIGZvciAobGV0IFtrZXksIHZhbF0gb2YgZW50cmllcykge1xuICAgIGlmIChpc1JvdXRlRXJyb3JSZXNwb25zZSh2YWwpKSB7XG4gICAgICBzZXJpYWxpemVkW2tleV0gPSB7IC4uLnZhbCwgX190eXBlOiBcIlJvdXRlRXJyb3JSZXNwb25zZVwiIH07XG4gICAgfSBlbHNlIGlmICh2YWwgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgc2VyaWFsaXplZFtrZXldID0ge1xuICAgICAgICBtZXNzYWdlOiB2YWwubWVzc2FnZSxcbiAgICAgICAgX190eXBlOiBcIkVycm9yXCIsXG4gICAgICAgIC8vIElmIHRoaXMgaXMgYSBzdWJjbGFzcyAoaS5lLiwgUmVmZXJlbmNlRXJyb3IpLCBzZW5kIHVwIHRoZSB0eXBlIHNvIHdlXG4gICAgICAgIC8vIGNhbiByZS1jcmVhdGUgdGhlIHNhbWUgdHlwZSBkdXJpbmcgaHlkcmF0aW9uLlxuICAgICAgICAuLi52YWwubmFtZSAhPT0gXCJFcnJvclwiID8ge1xuICAgICAgICAgIF9fc3ViVHlwZTogdmFsLm5hbWVcbiAgICAgICAgfSA6IHt9XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXJpYWxpemVkW2tleV0gPSB2YWw7XG4gICAgfVxuICB9XG4gIHJldHVybiBzZXJpYWxpemVkO1xufVxuZnVuY3Rpb24gZ2V0U3RhdGVsZXNzTmF2aWdhdG9yKCkge1xuICByZXR1cm4ge1xuICAgIGNyZWF0ZUhyZWYsXG4gICAgZW5jb2RlTG9jYXRpb24sXG4gICAgcHVzaCh0bykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IGNhbm5vdCB1c2UgbmF2aWdhdG9yLnB1c2goKSBvbiB0aGUgc2VydmVyIGJlY2F1c2UgaXQgaXMgYSBzdGF0ZWxlc3MgZW52aXJvbm1lbnQuIFRoaXMgZXJyb3Igd2FzIHByb2JhYmx5IHRyaWdnZXJlZCB3aGVuIHlvdSBkaWQgYSBcXGBuYXZpZ2F0ZSgke0pTT04uc3RyaW5naWZ5KHRvKX0pXFxgIHNvbWV3aGVyZSBpbiB5b3VyIGFwcC5gXG4gICAgICApO1xuICAgIH0sXG4gICAgcmVwbGFjZSh0bykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IGNhbm5vdCB1c2UgbmF2aWdhdG9yLnJlcGxhY2UoKSBvbiB0aGUgc2VydmVyIGJlY2F1c2UgaXQgaXMgYSBzdGF0ZWxlc3MgZW52aXJvbm1lbnQuIFRoaXMgZXJyb3Igd2FzIHByb2JhYmx5IHRyaWdnZXJlZCB3aGVuIHlvdSBkaWQgYSBcXGBuYXZpZ2F0ZSgke0pTT04uc3RyaW5naWZ5KHRvKX0sIHsgcmVwbGFjZTogdHJ1ZSB9KVxcYCBzb21ld2hlcmUgaW4geW91ciBhcHAuYFxuICAgICAgKTtcbiAgICB9LFxuICAgIGdvKGRlbHRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBZb3UgY2Fubm90IHVzZSBuYXZpZ2F0b3IuZ28oKSBvbiB0aGUgc2VydmVyIGJlY2F1c2UgaXQgaXMgYSBzdGF0ZWxlc3MgZW52aXJvbm1lbnQuIFRoaXMgZXJyb3Igd2FzIHByb2JhYmx5IHRyaWdnZXJlZCB3aGVuIHlvdSBkaWQgYSBcXGBuYXZpZ2F0ZSgke2RlbHRhfSlcXGAgc29tZXdoZXJlIGluIHlvdXIgYXBwLmBcbiAgICAgICk7XG4gICAgfSxcbiAgICBiYWNrKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IGNhbm5vdCB1c2UgbmF2aWdhdG9yLmJhY2soKSBvbiB0aGUgc2VydmVyIGJlY2F1c2UgaXQgaXMgYSBzdGF0ZWxlc3MgZW52aXJvbm1lbnQuYFxuICAgICAgKTtcbiAgICB9LFxuICAgIGZvcndhcmQoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBZb3UgY2Fubm90IHVzZSBuYXZpZ2F0b3IuZm9yd2FyZCgpIG9uIHRoZSBzZXJ2ZXIgYmVjYXVzZSBpdCBpcyBhIHN0YXRlbGVzcyBlbnZpcm9ubWVudC5gXG4gICAgICApO1xuICAgIH1cbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVN0YXRpY0hhbmRsZXIyKHJvdXRlcywgb3B0cykge1xuICByZXR1cm4gY3JlYXRlU3RhdGljSGFuZGxlcihyb3V0ZXMsIHtcbiAgICAuLi5vcHRzLFxuICAgIG1hcFJvdXRlUHJvcGVydGllc1xuICB9KTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVN0YXRpY1JvdXRlcihyb3V0ZXMsIGNvbnRleHQsIG9wdHMgPSB7fSkge1xuICBsZXQgbWFuaWZlc3QgPSB7fTtcbiAgbGV0IGRhdGFSb3V0ZXMgPSBjb252ZXJ0Um91dGVzVG9EYXRhUm91dGVzKFxuICAgIHJvdXRlcyxcbiAgICBtYXBSb3V0ZVByb3BlcnRpZXMsXG4gICAgdm9pZCAwLFxuICAgIG1hbmlmZXN0XG4gICk7XG4gIGxldCBtYXRjaGVzID0gY29udGV4dC5tYXRjaGVzLm1hcCgobWF0Y2gpID0+IHtcbiAgICBsZXQgcm91dGUgPSBtYW5pZmVzdFttYXRjaC5yb3V0ZS5pZF0gfHwgbWF0Y2gucm91dGU7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm1hdGNoLFxuICAgICAgcm91dGVcbiAgICB9O1xuICB9KTtcbiAgbGV0IG1zZyA9IChtZXRob2QpID0+IGBZb3UgY2Fubm90IHVzZSByb3V0ZXIuJHttZXRob2R9KCkgb24gdGhlIHNlcnZlciBiZWNhdXNlIGl0IGlzIGEgc3RhdGVsZXNzIGVudmlyb25tZW50YDtcbiAgcmV0dXJuIHtcbiAgICBnZXQgYmFzZW5hbWUoKSB7XG4gICAgICByZXR1cm4gY29udGV4dC5iYXNlbmFtZTtcbiAgICB9LFxuICAgIGdldCBmdXR1cmUoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vcHRzPy5mdXR1cmVcbiAgICAgIH07XG4gICAgfSxcbiAgICBnZXQgc3RhdGUoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBoaXN0b3J5QWN0aW9uOiBcIlBPUFwiIC8qIFBvcCAqLyxcbiAgICAgICAgbG9jYXRpb246IGNvbnRleHQubG9jYXRpb24sXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGxvYWRlckRhdGE6IGNvbnRleHQubG9hZGVyRGF0YSxcbiAgICAgICAgYWN0aW9uRGF0YTogY29udGV4dC5hY3Rpb25EYXRhLFxuICAgICAgICBlcnJvcnM6IGNvbnRleHQuZXJyb3JzLFxuICAgICAgICBpbml0aWFsaXplZDogdHJ1ZSxcbiAgICAgICAgbmF2aWdhdGlvbjogSURMRV9OQVZJR0FUSU9OLFxuICAgICAgICByZXN0b3JlU2Nyb2xsUG9zaXRpb246IG51bGwsXG4gICAgICAgIHByZXZlbnRTY3JvbGxSZXNldDogZmFsc2UsXG4gICAgICAgIHJldmFsaWRhdGlvbjogXCJpZGxlXCIsXG4gICAgICAgIGZldGNoZXJzOiAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpLFxuICAgICAgICBibG9ja2VyczogLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKVxuICAgICAgfTtcbiAgICB9LFxuICAgIGdldCByb3V0ZXMoKSB7XG4gICAgICByZXR1cm4gZGF0YVJvdXRlcztcbiAgICB9LFxuICAgIGdldCB3aW5kb3coKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH0sXG4gICAgaW5pdGlhbGl6ZSgpIHtcbiAgICAgIHRocm93IG1zZyhcImluaXRpYWxpemVcIik7XG4gICAgfSxcbiAgICBzdWJzY3JpYmUoKSB7XG4gICAgICB0aHJvdyBtc2coXCJzdWJzY3JpYmVcIik7XG4gICAgfSxcbiAgICBlbmFibGVTY3JvbGxSZXN0b3JhdGlvbigpIHtcbiAgICAgIHRocm93IG1zZyhcImVuYWJsZVNjcm9sbFJlc3RvcmF0aW9uXCIpO1xuICAgIH0sXG4gICAgbmF2aWdhdGUoKSB7XG4gICAgICB0aHJvdyBtc2coXCJuYXZpZ2F0ZVwiKTtcbiAgICB9LFxuICAgIGZldGNoKCkge1xuICAgICAgdGhyb3cgbXNnKFwiZmV0Y2hcIik7XG4gICAgfSxcbiAgICByZXZhbGlkYXRlKCkge1xuICAgICAgdGhyb3cgbXNnKFwicmV2YWxpZGF0ZVwiKTtcbiAgICB9LFxuICAgIGNyZWF0ZUhyZWYsXG4gICAgZW5jb2RlTG9jYXRpb24sXG4gICAgZ2V0RmV0Y2hlcigpIHtcbiAgICAgIHJldHVybiBJRExFX0ZFVENIRVI7XG4gICAgfSxcbiAgICBkZWxldGVGZXRjaGVyKCkge1xuICAgICAgdGhyb3cgbXNnKFwiZGVsZXRlRmV0Y2hlclwiKTtcbiAgICB9LFxuICAgIGRpc3Bvc2UoKSB7XG4gICAgICB0aHJvdyBtc2coXCJkaXNwb3NlXCIpO1xuICAgIH0sXG4gICAgZ2V0QmxvY2tlcigpIHtcbiAgICAgIHJldHVybiBJRExFX0JMT0NLRVI7XG4gICAgfSxcbiAgICBkZWxldGVCbG9ja2VyKCkge1xuICAgICAgdGhyb3cgbXNnKFwiZGVsZXRlQmxvY2tlclwiKTtcbiAgICB9LFxuICAgIHBhdGNoUm91dGVzKCkge1xuICAgICAgdGhyb3cgbXNnKFwicGF0Y2hSb3V0ZXNcIik7XG4gICAgfSxcbiAgICBfaW50ZXJuYWxGZXRjaENvbnRyb2xsZXJzOiAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpLFxuICAgIF9pbnRlcm5hbFNldFJvdXRlcygpIHtcbiAgICAgIHRocm93IG1zZyhcIl9pbnRlcm5hbFNldFJvdXRlc1wiKTtcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBjcmVhdGVIcmVmKHRvKSB7XG4gIHJldHVybiB0eXBlb2YgdG8gPT09IFwic3RyaW5nXCIgPyB0byA6IGNyZWF0ZVBhdGgodG8pO1xufVxuZnVuY3Rpb24gZW5jb2RlTG9jYXRpb24odG8pIHtcbiAgbGV0IGhyZWYgPSB0eXBlb2YgdG8gPT09IFwic3RyaW5nXCIgPyB0byA6IGNyZWF0ZVBhdGgodG8pO1xuICBocmVmID0gaHJlZi5yZXBsYWNlKC8gJC8sIFwiJTIwXCIpO1xuICBsZXQgZW5jb2RlZCA9IEFCU09MVVRFX1VSTF9SRUdFWDMudGVzdChocmVmKSA/IG5ldyBVUkwoaHJlZikgOiBuZXcgVVJMKGhyZWYsIFwiaHR0cDovL2xvY2FsaG9zdFwiKTtcbiAgcmV0dXJuIHtcbiAgICBwYXRobmFtZTogZW5jb2RlZC5wYXRobmFtZSxcbiAgICBzZWFyY2g6IGVuY29kZWQuc2VhcmNoLFxuICAgIGhhc2g6IGVuY29kZWQuaGFzaFxuICB9O1xufVxudmFyIEFCU09MVVRFX1VSTF9SRUdFWDMgPSAvXig/OlthLXpdW2EtejAtOSsuLV0qOnxcXC9cXC8pL2k7XG52YXIgRVNDQVBFX0xPT0tVUDIgPSB7XG4gIFwiJlwiOiBcIlxcXFx1MDAyNlwiLFxuICBcIj5cIjogXCJcXFxcdTAwM2VcIixcbiAgXCI8XCI6IFwiXFxcXHUwMDNjXCIsXG4gIFwiXFx1MjAyOFwiOiBcIlxcXFx1MjAyOFwiLFxuICBcIlxcdTIwMjlcIjogXCJcXFxcdTIwMjlcIlxufTtcbnZhciBFU0NBUEVfUkVHRVgyID0gL1smPjxcXHUyMDI4XFx1MjAyOV0vZztcbmZ1bmN0aW9uIGh0bWxFc2NhcGUoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShFU0NBUEVfUkVHRVgyLCAobWF0Y2gpID0+IEVTQ0FQRV9MT09LVVAyW21hdGNoXSk7XG59XG5cbi8vIGxpYi9kb20vc3NyL3NlcnZlci50c3hcbmltcG9ydCAqIGFzIFJlYWN0MTIgZnJvbSBcInJlYWN0XCI7XG5mdW5jdGlvbiBTZXJ2ZXJSb3V0ZXIoe1xuICBjb250ZXh0LFxuICB1cmwsXG4gIG5vbmNlXG59KSB7XG4gIGlmICh0eXBlb2YgdXJsID09PSBcInN0cmluZ1wiKSB7XG4gICAgdXJsID0gbmV3IFVSTCh1cmwpO1xuICB9XG4gIGxldCB7IG1hbmlmZXN0LCByb3V0ZU1vZHVsZXMsIGNyaXRpY2FsQ3NzLCBzZXJ2ZXJIYW5kb2ZmU3RyaW5nIH0gPSBjb250ZXh0O1xuICBsZXQgcm91dGVzID0gY3JlYXRlU2VydmVyUm91dGVzKFxuICAgIG1hbmlmZXN0LnJvdXRlcyxcbiAgICByb3V0ZU1vZHVsZXMsXG4gICAgY29udGV4dC5mdXR1cmUsXG4gICAgY29udGV4dC5pc1NwYU1vZGVcbiAgKTtcbiAgY29udGV4dC5zdGF0aWNIYW5kbGVyQ29udGV4dC5sb2FkZXJEYXRhID0ge1xuICAgIC4uLmNvbnRleHQuc3RhdGljSGFuZGxlckNvbnRleHQubG9hZGVyRGF0YVxuICB9O1xuICBmb3IgKGxldCBtYXRjaCBvZiBjb250ZXh0LnN0YXRpY0hhbmRsZXJDb250ZXh0Lm1hdGNoZXMpIHtcbiAgICBsZXQgcm91dGVJZCA9IG1hdGNoLnJvdXRlLmlkO1xuICAgIGxldCByb3V0ZSA9IHJvdXRlTW9kdWxlc1tyb3V0ZUlkXTtcbiAgICBsZXQgbWFuaWZlc3RSb3V0ZSA9IGNvbnRleHQubWFuaWZlc3Qucm91dGVzW3JvdXRlSWRdO1xuICAgIGlmIChyb3V0ZSAmJiBtYW5pZmVzdFJvdXRlICYmIHNob3VsZEh5ZHJhdGVSb3V0ZUxvYWRlcihtYW5pZmVzdFJvdXRlLCByb3V0ZSwgY29udGV4dC5pc1NwYU1vZGUpICYmIChyb3V0ZS5IeWRyYXRlRmFsbGJhY2sgfHwgIW1hbmlmZXN0Um91dGUuaGFzTG9hZGVyKSkge1xuICAgICAgZGVsZXRlIGNvbnRleHQuc3RhdGljSGFuZGxlckNvbnRleHQubG9hZGVyRGF0YVtyb3V0ZUlkXTtcbiAgICB9XG4gIH1cbiAgbGV0IHJvdXRlciA9IGNyZWF0ZVN0YXRpY1JvdXRlcihyb3V0ZXMsIGNvbnRleHQuc3RhdGljSGFuZGxlckNvbnRleHQpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0MTIuY3JlYXRlRWxlbWVudChSZWFjdDEyLkZyYWdtZW50LCBudWxsLCAvKiBAX19QVVJFX18gKi8gUmVhY3QxMi5jcmVhdGVFbGVtZW50KFxuICAgIEZyYW1ld29ya0NvbnRleHQuUHJvdmlkZXIsXG4gICAge1xuICAgICAgdmFsdWU6IHtcbiAgICAgICAgbWFuaWZlc3QsXG4gICAgICAgIHJvdXRlTW9kdWxlcyxcbiAgICAgICAgY3JpdGljYWxDc3MsXG4gICAgICAgIHNlcnZlckhhbmRvZmZTdHJpbmcsXG4gICAgICAgIGZ1dHVyZTogY29udGV4dC5mdXR1cmUsXG4gICAgICAgIGlzU3BhTW9kZTogY29udGV4dC5pc1NwYU1vZGUsXG4gICAgICAgIHNlcmlhbGl6ZUVycm9yOiBjb250ZXh0LnNlcmlhbGl6ZUVycm9yLFxuICAgICAgICByZW5kZXJNZXRhOiBjb250ZXh0LnJlbmRlck1ldGFcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDEyLmNyZWF0ZUVsZW1lbnQoUmVtaXhFcnJvckJvdW5kYXJ5LCB7IGxvY2F0aW9uOiByb3V0ZXIuc3RhdGUubG9jYXRpb24gfSwgLyogQF9fUFVSRV9fICovIFJlYWN0MTIuY3JlYXRlRWxlbWVudChcbiAgICAgIFN0YXRpY1JvdXRlclByb3ZpZGVyLFxuICAgICAge1xuICAgICAgICByb3V0ZXIsXG4gICAgICAgIGNvbnRleHQ6IGNvbnRleHQuc3RhdGljSGFuZGxlckNvbnRleHQsXG4gICAgICAgIGh5ZHJhdGU6IGZhbHNlXG4gICAgICB9XG4gICAgKSlcbiAgKSwgY29udGV4dC5zZXJ2ZXJIYW5kb2ZmU3RyZWFtID8gLyogQF9fUFVSRV9fICovIFJlYWN0MTIuY3JlYXRlRWxlbWVudChSZWFjdDEyLlN1c3BlbnNlLCBudWxsLCAvKiBAX19QVVJFX18gKi8gUmVhY3QxMi5jcmVhdGVFbGVtZW50KFxuICAgIFN0cmVhbVRyYW5zZmVyLFxuICAgIHtcbiAgICAgIGNvbnRleHQsXG4gICAgICBpZGVudGlmaWVyOiAwLFxuICAgICAgcmVhZGVyOiBjb250ZXh0LnNlcnZlckhhbmRvZmZTdHJlYW0uZ2V0UmVhZGVyKCksXG4gICAgICB0ZXh0RGVjb2RlcjogbmV3IFRleHREZWNvZGVyKCksXG4gICAgICBub25jZVxuICAgIH1cbiAgKSkgOiBudWxsKTtcbn1cblxuLy8gbGliL2RvbS9zc3Ivcm91dGVzLXRlc3Qtc3R1Yi50c3hcbmltcG9ydCAqIGFzIFJlYWN0MTMgZnJvbSBcInJlYWN0XCI7XG5mdW5jdGlvbiBjcmVhdGVSb3V0ZXNTdHViKHJvdXRlcywgY29udGV4dCA9IHt9KSB7XG4gIHJldHVybiBmdW5jdGlvbiBSb3V0ZXNUZXN0U3R1Yih7XG4gICAgaW5pdGlhbEVudHJpZXMsXG4gICAgaW5pdGlhbEluZGV4LFxuICAgIGh5ZHJhdGlvbkRhdGEsXG4gICAgZnV0dXJlXG4gIH0pIHtcbiAgICBsZXQgcm91dGVyUmVmID0gUmVhY3QxMy51c2VSZWYoKTtcbiAgICBsZXQgcmVtaXhDb250ZXh0UmVmID0gUmVhY3QxMy51c2VSZWYoKTtcbiAgICBpZiAocm91dGVyUmVmLmN1cnJlbnQgPT0gbnVsbCkge1xuICAgICAgcmVtaXhDb250ZXh0UmVmLmN1cnJlbnQgPSB7XG4gICAgICAgIGZ1dHVyZToge30sXG4gICAgICAgIG1hbmlmZXN0OiB7XG4gICAgICAgICAgcm91dGVzOiB7fSxcbiAgICAgICAgICBlbnRyeTogeyBpbXBvcnRzOiBbXSwgbW9kdWxlOiBcIlwiIH0sXG4gICAgICAgICAgdXJsOiBcIlwiLFxuICAgICAgICAgIHZlcnNpb246IFwiXCJcbiAgICAgICAgfSxcbiAgICAgICAgcm91dGVNb2R1bGVzOiB7fSxcbiAgICAgICAgaXNTcGFNb2RlOiBmYWxzZVxuICAgICAgfTtcbiAgICAgIGxldCBwYXRjaGVkID0gcHJvY2Vzc1JvdXRlcyhcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBsb2FkZXIvYWN0aW9uIGNvbnRleHQgdHlwZXMgZG9uJ3QgbWF0Y2ggOi9cbiAgICAgICAgY29udmVydFJvdXRlc1RvRGF0YVJvdXRlcyhyb3V0ZXMsIChyKSA9PiByKSxcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgcmVtaXhDb250ZXh0UmVmLmN1cnJlbnQubWFuaWZlc3QsXG4gICAgICAgIHJlbWl4Q29udGV4dFJlZi5jdXJyZW50LnJvdXRlTW9kdWxlc1xuICAgICAgKTtcbiAgICAgIHJvdXRlclJlZi5jdXJyZW50ID0gY3JlYXRlTWVtb3J5Um91dGVyKHBhdGNoZWQsIHtcbiAgICAgICAgaW5pdGlhbEVudHJpZXMsXG4gICAgICAgIGluaXRpYWxJbmRleCxcbiAgICAgICAgaHlkcmF0aW9uRGF0YVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QxMy5jcmVhdGVFbGVtZW50KEZyYW1ld29ya0NvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHJlbWl4Q29udGV4dFJlZi5jdXJyZW50IH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdDEzLmNyZWF0ZUVsZW1lbnQoUm91dGVyUHJvdmlkZXIsIHsgcm91dGVyOiByb3V0ZXJSZWYuY3VycmVudCB9KSk7XG4gIH07XG59XG5mdW5jdGlvbiBwcm9jZXNzUm91dGVzKHJvdXRlcywgY29udGV4dCwgbWFuaWZlc3QsIHJvdXRlTW9kdWxlcywgcGFyZW50SWQpIHtcbiAgcmV0dXJuIHJvdXRlcy5tYXAoKHJvdXRlKSA9PiB7XG4gICAgaWYgKCFyb3V0ZS5pZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkV4cGVjdGVkIGEgcm91dGUuaWQgaW4gQHJlbWl4LXJ1bi90ZXN0aW5nIHByb2Nlc3NSb3V0ZXMoKSBmdW5jdGlvblwiXG4gICAgICApO1xuICAgIH1cbiAgICBsZXQgeyBsb2FkZXIsIGFjdGlvbiB9ID0gcm91dGU7XG4gICAgbGV0IG5ld1JvdXRlID0ge1xuICAgICAgaWQ6IHJvdXRlLmlkLFxuICAgICAgcGF0aDogcm91dGUucGF0aCxcbiAgICAgIGluZGV4OiByb3V0ZS5pbmRleCxcbiAgICAgIENvbXBvbmVudDogcm91dGUuQ29tcG9uZW50LFxuICAgICAgSHlkcmF0ZUZhbGxiYWNrOiByb3V0ZS5IeWRyYXRlRmFsbGJhY2ssXG4gICAgICBFcnJvckJvdW5kYXJ5OiByb3V0ZS5FcnJvckJvdW5kYXJ5LFxuICAgICAgYWN0aW9uOiBhY3Rpb24gPyAoYXJncykgPT4gYWN0aW9uKHsgLi4uYXJncywgY29udGV4dCB9KSA6IHZvaWQgMCxcbiAgICAgIGxvYWRlcjogbG9hZGVyID8gKGFyZ3MpID0+IGxvYWRlcih7IC4uLmFyZ3MsIGNvbnRleHQgfSkgOiB2b2lkIDAsXG4gICAgICBoYW5kbGU6IHJvdXRlLmhhbmRsZSxcbiAgICAgIHNob3VsZFJldmFsaWRhdGU6IHJvdXRlLnNob3VsZFJldmFsaWRhdGVcbiAgICB9O1xuICAgIGxldCBlbnRyeVJvdXRlID0ge1xuICAgICAgaWQ6IHJvdXRlLmlkLFxuICAgICAgcGF0aDogcm91dGUucGF0aCxcbiAgICAgIGluZGV4OiByb3V0ZS5pbmRleCxcbiAgICAgIHBhcmVudElkLFxuICAgICAgaGFzQWN0aW9uOiByb3V0ZS5hY3Rpb24gIT0gbnVsbCxcbiAgICAgIGhhc0xvYWRlcjogcm91dGUubG9hZGVyICE9IG51bGwsXG4gICAgICAvLyBXaGVuIHRlc3Rpbmcgcm91dGVzLCB5b3Ugc2hvdWxkIGp1c3QgYmUgc3R1YmJpbmcgbG9hZGVyL2FjdGlvbiwgbm90XG4gICAgICAvLyB0cnlpbmcgdG8gcmUtaW1wbGVtZW50IHRoZSBmdWxsIGxvYWRlci9jbGllbnRMb2FkZXIvU1NSL2h5ZHJhdGlvbiBmbG93LlxuICAgICAgLy8gVGhhdCBpcyBiZXR0ZXIgdGVzdGVkIHZpYSBFMkUgdGVzdHMuXG4gICAgICBoYXNDbGllbnRBY3Rpb246IGZhbHNlLFxuICAgICAgaGFzQ2xpZW50TG9hZGVyOiBmYWxzZSxcbiAgICAgIGhhc0Vycm9yQm91bmRhcnk6IHJvdXRlLkVycm9yQm91bmRhcnkgIT0gbnVsbCxcbiAgICAgIG1vZHVsZTogXCJidWlsZC9zdHViLXBhdGgtdG8tbW9kdWxlLmpzXCJcbiAgICAgIC8vIGFueSBuZWVkIGZvciB0aGlzP1xuICAgIH07XG4gICAgbWFuaWZlc3Qucm91dGVzW25ld1JvdXRlLmlkXSA9IGVudHJ5Um91dGU7XG4gICAgcm91dGVNb2R1bGVzW3JvdXRlLmlkXSA9IHtcbiAgICAgIGRlZmF1bHQ6IHJvdXRlLkNvbXBvbmVudCB8fCBPdXRsZXQsXG4gICAgICBFcnJvckJvdW5kYXJ5OiByb3V0ZS5FcnJvckJvdW5kYXJ5IHx8IHZvaWQgMCxcbiAgICAgIGhhbmRsZTogcm91dGUuaGFuZGxlLFxuICAgICAgbGlua3M6IHJvdXRlLmxpbmtzLFxuICAgICAgbWV0YTogcm91dGUubWV0YSxcbiAgICAgIHNob3VsZFJldmFsaWRhdGU6IHJvdXRlLnNob3VsZFJldmFsaWRhdGVcbiAgICB9O1xuICAgIGlmIChyb3V0ZS5jaGlsZHJlbikge1xuICAgICAgbmV3Um91dGUuY2hpbGRyZW4gPSBwcm9jZXNzUm91dGVzKFxuICAgICAgICByb3V0ZS5jaGlsZHJlbixcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgbWFuaWZlc3QsXG4gICAgICAgIHJvdXRlTW9kdWxlcyxcbiAgICAgICAgbmV3Um91dGUuaWRcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBuZXdSb3V0ZTtcbiAgfSk7XG59XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS9jb29raWVzLnRzXG5pbXBvcnQgeyBwYXJzZSwgc2VyaWFsaXplIH0gZnJvbSBcImNvb2tpZVwiO1xuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvY3J5cHRvLnRzXG52YXIgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xudmFyIHNpZ24gPSBhc3luYyAodmFsdWUsIHNlY3JldCkgPT4ge1xuICBsZXQgZGF0YTIgPSBlbmNvZGVyLmVuY29kZSh2YWx1ZSk7XG4gIGxldCBrZXkgPSBhd2FpdCBjcmVhdGVLZXkyKHNlY3JldCwgW1wic2lnblwiXSk7XG4gIGxldCBzaWduYXR1cmUgPSBhd2FpdCBjcnlwdG8uc3VidGxlLnNpZ24oXCJITUFDXCIsIGtleSwgZGF0YTIpO1xuICBsZXQgaGFzaCA9IGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi5uZXcgVWludDhBcnJheShzaWduYXR1cmUpKSkucmVwbGFjZShcbiAgICAvPSskLyxcbiAgICBcIlwiXG4gICk7XG4gIHJldHVybiB2YWx1ZSArIFwiLlwiICsgaGFzaDtcbn07XG52YXIgdW5zaWduID0gYXN5bmMgKGNvb2tpZSwgc2VjcmV0KSA9PiB7XG4gIGxldCBpbmRleCA9IGNvb2tpZS5sYXN0SW5kZXhPZihcIi5cIik7XG4gIGxldCB2YWx1ZSA9IGNvb2tpZS5zbGljZSgwLCBpbmRleCk7XG4gIGxldCBoYXNoID0gY29va2llLnNsaWNlKGluZGV4ICsgMSk7XG4gIGxldCBkYXRhMiA9IGVuY29kZXIuZW5jb2RlKHZhbHVlKTtcbiAgbGV0IGtleSA9IGF3YWl0IGNyZWF0ZUtleTIoc2VjcmV0LCBbXCJ2ZXJpZnlcIl0pO1xuICBsZXQgc2lnbmF0dXJlID0gYnl0ZVN0cmluZ1RvVWludDhBcnJheShhdG9iKGhhc2gpKTtcbiAgbGV0IHZhbGlkID0gYXdhaXQgY3J5cHRvLnN1YnRsZS52ZXJpZnkoXCJITUFDXCIsIGtleSwgc2lnbmF0dXJlLCBkYXRhMik7XG4gIHJldHVybiB2YWxpZCA/IHZhbHVlIDogZmFsc2U7XG59O1xudmFyIGNyZWF0ZUtleTIgPSBhc3luYyAoc2VjcmV0LCB1c2FnZXMpID0+IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KFxuICBcInJhd1wiLFxuICBlbmNvZGVyLmVuY29kZShzZWNyZXQpLFxuICB7IG5hbWU6IFwiSE1BQ1wiLCBoYXNoOiBcIlNIQS0yNTZcIiB9LFxuICBmYWxzZSxcbiAgdXNhZ2VzXG4pO1xuZnVuY3Rpb24gYnl0ZVN0cmluZ1RvVWludDhBcnJheShieXRlU3RyaW5nKSB7XG4gIGxldCBhcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVTdHJpbmcubGVuZ3RoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlU3RyaW5nLmxlbmd0aDsgaSsrKSB7XG4gICAgYXJyYXlbaV0gPSBieXRlU3RyaW5nLmNoYXJDb2RlQXQoaSk7XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvY29va2llcy50c1xudmFyIGNyZWF0ZUNvb2tpZSA9IChuYW1lLCBjb29raWVPcHRpb25zID0ge30pID0+IHtcbiAgbGV0IHsgc2VjcmV0cyA9IFtdLCAuLi5vcHRpb25zIH0gPSB7XG4gICAgcGF0aDogXCIvXCIsXG4gICAgc2FtZVNpdGU6IFwibGF4XCIsXG4gICAgLi4uY29va2llT3B0aW9uc1xuICB9O1xuICB3YXJuT25jZUFib3V0RXhwaXJlc0Nvb2tpZShuYW1lLCBvcHRpb25zLmV4cGlyZXMpO1xuICByZXR1cm4ge1xuICAgIGdldCBuYW1lKCkge1xuICAgICAgcmV0dXJuIG5hbWU7XG4gICAgfSxcbiAgICBnZXQgaXNTaWduZWQoKSB7XG4gICAgICByZXR1cm4gc2VjcmV0cy5sZW5ndGggPiAwO1xuICAgIH0sXG4gICAgZ2V0IGV4cGlyZXMoKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIG9wdGlvbnMubWF4QWdlICE9PSBcInVuZGVmaW5lZFwiID8gbmV3IERhdGUoRGF0ZS5ub3coKSArIG9wdGlvbnMubWF4QWdlICogMWUzKSA6IG9wdGlvbnMuZXhwaXJlcztcbiAgICB9LFxuICAgIGFzeW5jIHBhcnNlKGNvb2tpZUhlYWRlciwgcGFyc2VPcHRpb25zKSB7XG4gICAgICBpZiAoIWNvb2tpZUhlYWRlcikgcmV0dXJuIG51bGw7XG4gICAgICBsZXQgY29va2llcyA9IHBhcnNlKGNvb2tpZUhlYWRlciwgeyAuLi5vcHRpb25zLCAuLi5wYXJzZU9wdGlvbnMgfSk7XG4gICAgICBpZiAobmFtZSBpbiBjb29raWVzKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IGNvb2tpZXNbbmFtZV07XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUgIT09IFwiXCIpIHtcbiAgICAgICAgICBsZXQgZGVjb2RlZCA9IGF3YWl0IGRlY29kZUNvb2tpZVZhbHVlKHZhbHVlLCBzZWNyZXRzKTtcbiAgICAgICAgICByZXR1cm4gZGVjb2RlZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSxcbiAgICBhc3luYyBzZXJpYWxpemUodmFsdWUsIHNlcmlhbGl6ZU9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBzZXJpYWxpemUoXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHZhbHVlID09PSBcIlwiID8gXCJcIiA6IGF3YWl0IGVuY29kZUNvb2tpZVZhbHVlKHZhbHVlLCBzZWNyZXRzKSxcbiAgICAgICAge1xuICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgLi4uc2VyaWFsaXplT3B0aW9uc1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfTtcbn07XG52YXIgaXNDb29raWUgPSAob2JqZWN0KSA9PiB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiB0eXBlb2Ygb2JqZWN0Lm5hbWUgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIG9iamVjdC5pc1NpZ25lZCA9PT0gXCJib29sZWFuXCIgJiYgdHlwZW9mIG9iamVjdC5wYXJzZSA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBvYmplY3Quc2VyaWFsaXplID09PSBcImZ1bmN0aW9uXCI7XG59O1xuYXN5bmMgZnVuY3Rpb24gZW5jb2RlQ29va2llVmFsdWUodmFsdWUsIHNlY3JldHMpIHtcbiAgbGV0IGVuY29kZWQgPSBlbmNvZGVEYXRhKHZhbHVlKTtcbiAgaWYgKHNlY3JldHMubGVuZ3RoID4gMCkge1xuICAgIGVuY29kZWQgPSBhd2FpdCBzaWduKGVuY29kZWQsIHNlY3JldHNbMF0pO1xuICB9XG4gIHJldHVybiBlbmNvZGVkO1xufVxuYXN5bmMgZnVuY3Rpb24gZGVjb2RlQ29va2llVmFsdWUodmFsdWUsIHNlY3JldHMpIHtcbiAgaWYgKHNlY3JldHMubGVuZ3RoID4gMCkge1xuICAgIGZvciAobGV0IHNlY3JldCBvZiBzZWNyZXRzKSB7XG4gICAgICBsZXQgdW5zaWduZWRWYWx1ZSA9IGF3YWl0IHVuc2lnbih2YWx1ZSwgc2VjcmV0KTtcbiAgICAgIGlmICh1bnNpZ25lZFZhbHVlICE9PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gZGVjb2RlRGF0YSh1bnNpZ25lZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIGRlY29kZURhdGEodmFsdWUpO1xufVxuZnVuY3Rpb24gZW5jb2RlRGF0YSh2YWx1ZSkge1xuICByZXR1cm4gYnRvYShteVVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeSh2YWx1ZSkpKSk7XG59XG5mdW5jdGlvbiBkZWNvZGVEYXRhKHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoZGVjb2RlVVJJQ29tcG9uZW50KG15RXNjYXBlKGF0b2IodmFsdWUpKSkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB7fTtcbiAgfVxufVxuZnVuY3Rpb24gbXlFc2NhcGUodmFsdWUpIHtcbiAgbGV0IHN0ciA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gIGxldCByZXN1bHQgPSBcIlwiO1xuICBsZXQgaW5kZXggPSAwO1xuICBsZXQgY2hyLCBjb2RlO1xuICB3aGlsZSAoaW5kZXggPCBzdHIubGVuZ3RoKSB7XG4gICAgY2hyID0gc3RyLmNoYXJBdChpbmRleCsrKTtcbiAgICBpZiAoL1tcXHcqK1xcLS4vQF0vLmV4ZWMoY2hyKSkge1xuICAgICAgcmVzdWx0ICs9IGNocjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29kZSA9IGNoci5jaGFyQ29kZUF0KDApO1xuICAgICAgaWYgKGNvZGUgPCAyNTYpIHtcbiAgICAgICAgcmVzdWx0ICs9IFwiJVwiICsgaGV4KGNvZGUsIDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ICs9IFwiJXVcIiArIGhleChjb2RlLCA0KS50b1VwcGVyQ2FzZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gaGV4KGNvZGUsIGxlbmd0aCkge1xuICBsZXQgcmVzdWx0ID0gY29kZS50b1N0cmluZygxNik7XG4gIHdoaWxlIChyZXN1bHQubGVuZ3RoIDwgbGVuZ3RoKSByZXN1bHQgPSBcIjBcIiArIHJlc3VsdDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIG15VW5lc2NhcGUodmFsdWUpIHtcbiAgbGV0IHN0ciA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gIGxldCByZXN1bHQgPSBcIlwiO1xuICBsZXQgaW5kZXggPSAwO1xuICBsZXQgY2hyLCBwYXJ0O1xuICB3aGlsZSAoaW5kZXggPCBzdHIubGVuZ3RoKSB7XG4gICAgY2hyID0gc3RyLmNoYXJBdChpbmRleCsrKTtcbiAgICBpZiAoY2hyID09PSBcIiVcIikge1xuICAgICAgaWYgKHN0ci5jaGFyQXQoaW5kZXgpID09PSBcInVcIikge1xuICAgICAgICBwYXJ0ID0gc3RyLnNsaWNlKGluZGV4ICsgMSwgaW5kZXggKyA1KTtcbiAgICAgICAgaWYgKC9eW1xcZGEtZl17NH0kL2kuZXhlYyhwYXJ0KSkge1xuICAgICAgICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KHBhcnQsIDE2KSk7XG4gICAgICAgICAgaW5kZXggKz0gNTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFydCA9IHN0ci5zbGljZShpbmRleCwgaW5kZXggKyAyKTtcbiAgICAgICAgaWYgKC9eW1xcZGEtZl17Mn0kL2kuZXhlYyhwYXJ0KSkge1xuICAgICAgICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KHBhcnQsIDE2KSk7XG4gICAgICAgICAgaW5kZXggKz0gMjtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQgKz0gY2hyO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiB3YXJuT25jZUFib3V0RXhwaXJlc0Nvb2tpZShuYW1lLCBleHBpcmVzKSB7XG4gIHdhcm5PbmNlKFxuICAgICFleHBpcmVzLFxuICAgIGBUaGUgXCIke25hbWV9XCIgY29va2llIGhhcyBhbiBcImV4cGlyZXNcIiBwcm9wZXJ0eSBzZXQuIFRoaXMgd2lsbCBjYXVzZSB0aGUgZXhwaXJlcyB2YWx1ZSB0byBub3QgYmUgdXBkYXRlZCB3aGVuIHRoZSBzZXNzaW9uIGlzIGNvbW1pdHRlZC4gSW5zdGVhZCwgeW91IHNob3VsZCBzZXQgdGhlIGV4cGlyZXMgdmFsdWUgd2hlbiBzZXJpYWxpemluZyB0aGUgY29va2llLiBZb3UgY2FuIHVzZSBcXGBjb21taXRTZXNzaW9uKHNlc3Npb24sIHsgZXhwaXJlcyB9KVxcYCBpZiB1c2luZyBhIHNlc3Npb24gc3RvcmFnZSBvYmplY3QsIG9yIFxcYGNvb2tpZS5zZXJpYWxpemUoXCJ2YWx1ZVwiLCB7IGV4cGlyZXMgfSlcXGAgaWYgeW91J3JlIHVzaW5nIHRoZSBjb29raWUgZGlyZWN0bHkuYFxuICApO1xufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvZW50cnkudHNcbmZ1bmN0aW9uIGNyZWF0ZUVudHJ5Um91dGVNb2R1bGVzKG1hbmlmZXN0KSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhtYW5pZmVzdCkucmVkdWNlKChtZW1vMiwgcm91dGVJZCkgPT4ge1xuICAgIGxldCByb3V0ZSA9IG1hbmlmZXN0W3JvdXRlSWRdO1xuICAgIGlmIChyb3V0ZSkge1xuICAgICAgbWVtbzJbcm91dGVJZF0gPSByb3V0ZS5tb2R1bGU7XG4gICAgfVxuICAgIHJldHVybiBtZW1vMjtcbiAgfSwge30pO1xufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvbW9kZS50c1xudmFyIFNlcnZlck1vZGUgPSAvKiBAX19QVVJFX18gKi8gKChTZXJ2ZXJNb2RlMikgPT4ge1xuICBTZXJ2ZXJNb2RlMltcIkRldmVsb3BtZW50XCJdID0gXCJkZXZlbG9wbWVudFwiO1xuICBTZXJ2ZXJNb2RlMltcIlByb2R1Y3Rpb25cIl0gPSBcInByb2R1Y3Rpb25cIjtcbiAgU2VydmVyTW9kZTJbXCJUZXN0XCJdID0gXCJ0ZXN0XCI7XG4gIHJldHVybiBTZXJ2ZXJNb2RlMjtcbn0pKFNlcnZlck1vZGUgfHwge30pO1xuZnVuY3Rpb24gaXNTZXJ2ZXJNb2RlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gXCJkZXZlbG9wbWVudFwiIC8qIERldmVsb3BtZW50ICovIHx8IHZhbHVlID09PSBcInByb2R1Y3Rpb25cIiAvKiBQcm9kdWN0aW9uICovIHx8IHZhbHVlID09PSBcInRlc3RcIiAvKiBUZXN0ICovO1xufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvZXJyb3JzLnRzXG5mdW5jdGlvbiBzYW5pdGl6ZUVycm9yKGVycm9yLCBzZXJ2ZXJNb2RlKSB7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIHNlcnZlck1vZGUgIT09IFwiZGV2ZWxvcG1lbnRcIiAvKiBEZXZlbG9wbWVudCAqLykge1xuICAgIGxldCBzYW5pdGl6ZWQgPSBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIFNlcnZlciBFcnJvclwiKTtcbiAgICBzYW5pdGl6ZWQuc3RhY2sgPSB2b2lkIDA7XG4gICAgcmV0dXJuIHNhbml0aXplZDtcbiAgfVxuICByZXR1cm4gZXJyb3I7XG59XG5mdW5jdGlvbiBzYW5pdGl6ZUVycm9ycyhlcnJvcnMsIHNlcnZlck1vZGUpIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGVycm9ycykucmVkdWNlKChhY2MsIFtyb3V0ZUlkLCBlcnJvcl0pID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihhY2MsIHsgW3JvdXRlSWRdOiBzYW5pdGl6ZUVycm9yKGVycm9yLCBzZXJ2ZXJNb2RlKSB9KTtcbiAgfSwge30pO1xufVxuZnVuY3Rpb24gc2VyaWFsaXplRXJyb3IoZXJyb3IsIHNlcnZlck1vZGUpIHtcbiAgbGV0IHNhbml0aXplZCA9IHNhbml0aXplRXJyb3IoZXJyb3IsIHNlcnZlck1vZGUpO1xuICByZXR1cm4ge1xuICAgIG1lc3NhZ2U6IHNhbml0aXplZC5tZXNzYWdlLFxuICAgIHN0YWNrOiBzYW5pdGl6ZWQuc3RhY2tcbiAgfTtcbn1cbmZ1bmN0aW9uIHNlcmlhbGl6ZUVycm9yczIoZXJyb3JzLCBzZXJ2ZXJNb2RlKSB7XG4gIGlmICghZXJyb3JzKSByZXR1cm4gbnVsbDtcbiAgbGV0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhlcnJvcnMpO1xuICBsZXQgc2VyaWFsaXplZCA9IHt9O1xuICBmb3IgKGxldCBba2V5LCB2YWxdIG9mIGVudHJpZXMpIHtcbiAgICBpZiAoaXNSb3V0ZUVycm9yUmVzcG9uc2UodmFsKSkge1xuICAgICAgc2VyaWFsaXplZFtrZXldID0geyAuLi52YWwsIF9fdHlwZTogXCJSb3V0ZUVycm9yUmVzcG9uc2VcIiB9O1xuICAgIH0gZWxzZSBpZiAodmFsIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIGxldCBzYW5pdGl6ZWQgPSBzYW5pdGl6ZUVycm9yKHZhbCwgc2VydmVyTW9kZSk7XG4gICAgICBzZXJpYWxpemVkW2tleV0gPSB7XG4gICAgICAgIG1lc3NhZ2U6IHNhbml0aXplZC5tZXNzYWdlLFxuICAgICAgICBzdGFjazogc2FuaXRpemVkLnN0YWNrLFxuICAgICAgICBfX3R5cGU6IFwiRXJyb3JcIixcbiAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHN1YmNsYXNzIChpLmUuLCBSZWZlcmVuY2VFcnJvciksIHNlbmQgdXAgdGhlIHR5cGUgc28gd2VcbiAgICAgICAgLy8gY2FuIHJlLWNyZWF0ZSB0aGUgc2FtZSB0eXBlIGR1cmluZyBoeWRyYXRpb24uICBUaGlzIHdpbGwgb25seSBhcHBseVxuICAgICAgICAvLyBpbiBkZXYgbW9kZSBzaW5jZSBhbGwgcHJvZHVjdGlvbiBlcnJvcnMgYXJlIHNhbml0aXplZCB0byBub3JtYWxcbiAgICAgICAgLy8gRXJyb3IgaW5zdGFuY2VzXG4gICAgICAgIC4uLnNhbml0aXplZC5uYW1lICE9PSBcIkVycm9yXCIgPyB7XG4gICAgICAgICAgX19zdWJUeXBlOiBzYW5pdGl6ZWQubmFtZVxuICAgICAgICB9IDoge31cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlcmlhbGl6ZWRba2V5XSA9IHZhbDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHNlcmlhbGl6ZWQ7XG59XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS9yb3V0ZU1hdGNoaW5nLnRzXG5mdW5jdGlvbiBtYXRjaFNlcnZlclJvdXRlcyhyb3V0ZXMsIHBhdGhuYW1lLCBiYXNlbmFtZSkge1xuICBsZXQgbWF0Y2hlcyA9IG1hdGNoUm91dGVzKFxuICAgIHJvdXRlcyxcbiAgICBwYXRobmFtZSxcbiAgICBiYXNlbmFtZVxuICApO1xuICBpZiAoIW1hdGNoZXMpIHJldHVybiBudWxsO1xuICByZXR1cm4gbWF0Y2hlcy5tYXAoKG1hdGNoKSA9PiAoe1xuICAgIHBhcmFtczogbWF0Y2gucGFyYW1zLFxuICAgIHBhdGhuYW1lOiBtYXRjaC5wYXRobmFtZSxcbiAgICByb3V0ZTogbWF0Y2gucm91dGVcbiAgfSkpO1xufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvZGF0YS50c1xuYXN5bmMgZnVuY3Rpb24gY2FsbFJvdXRlSGFuZGxlcihoYW5kbGVyLCBhcmdzKSB7XG4gIGxldCByZXN1bHQgPSBhd2FpdCBoYW5kbGVyKHtcbiAgICByZXF1ZXN0OiBzdHJpcFJvdXRlc1BhcmFtKHN0cmlwSW5kZXhQYXJhbTIoYXJncy5yZXF1ZXN0KSksXG4gICAgcGFyYW1zOiBhcmdzLnBhcmFtcyxcbiAgICBjb250ZXh0OiBhcmdzLmNvbnRleHRcbiAgfSk7XG4gIGlmIChpc0RhdGFXaXRoUmVzcG9uc2VJbml0KHJlc3VsdCkgJiYgcmVzdWx0LmluaXQgJiYgcmVzdWx0LmluaXQuc3RhdHVzICYmIGlzUmVkaXJlY3RTdGF0dXNDb2RlKHJlc3VsdC5pbml0LnN0YXR1cykpIHtcbiAgICB0aHJvdyBuZXcgUmVzcG9uc2UobnVsbCwgcmVzdWx0LmluaXQpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBzdHJpcEluZGV4UGFyYW0yKHJlcXVlc3QpIHtcbiAgbGV0IHVybCA9IG5ldyBVUkwocmVxdWVzdC51cmwpO1xuICBsZXQgaW5kZXhWYWx1ZXMgPSB1cmwuc2VhcmNoUGFyYW1zLmdldEFsbChcImluZGV4XCIpO1xuICB1cmwuc2VhcmNoUGFyYW1zLmRlbGV0ZShcImluZGV4XCIpO1xuICBsZXQgaW5kZXhWYWx1ZXNUb0tlZXAgPSBbXTtcbiAgZm9yIChsZXQgaW5kZXhWYWx1ZSBvZiBpbmRleFZhbHVlcykge1xuICAgIGlmIChpbmRleFZhbHVlKSB7XG4gICAgICBpbmRleFZhbHVlc1RvS2VlcC5wdXNoKGluZGV4VmFsdWUpO1xuICAgIH1cbiAgfVxuICBmb3IgKGxldCB0b0tlZXAgb2YgaW5kZXhWYWx1ZXNUb0tlZXApIHtcbiAgICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZChcImluZGV4XCIsIHRvS2VlcCk7XG4gIH1cbiAgbGV0IGluaXQgPSB7XG4gICAgbWV0aG9kOiByZXF1ZXN0Lm1ldGhvZCxcbiAgICBib2R5OiByZXF1ZXN0LmJvZHksXG4gICAgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzLFxuICAgIHNpZ25hbDogcmVxdWVzdC5zaWduYWxcbiAgfTtcbiAgaWYgKGluaXQuYm9keSkge1xuICAgIGluaXQuZHVwbGV4ID0gXCJoYWxmXCI7XG4gIH1cbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KHVybC5ocmVmLCBpbml0KTtcbn1cbmZ1bmN0aW9uIHN0cmlwUm91dGVzUGFyYW0ocmVxdWVzdCkge1xuICBsZXQgdXJsID0gbmV3IFVSTChyZXF1ZXN0LnVybCk7XG4gIHVybC5zZWFyY2hQYXJhbXMuZGVsZXRlKFwiX3JvdXRlc1wiKTtcbiAgbGV0IGluaXQgPSB7XG4gICAgbWV0aG9kOiByZXF1ZXN0Lm1ldGhvZCxcbiAgICBib2R5OiByZXF1ZXN0LmJvZHksXG4gICAgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzLFxuICAgIHNpZ25hbDogcmVxdWVzdC5zaWduYWxcbiAgfTtcbiAgaWYgKGluaXQuYm9keSkge1xuICAgIGluaXQuZHVwbGV4ID0gXCJoYWxmXCI7XG4gIH1cbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KHVybC5ocmVmLCBpbml0KTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL2ludmFyaWFudC50c1xuZnVuY3Rpb24gaW52YXJpYW50Myh2YWx1ZSwgbWVzc2FnZSkge1xuICBpZiAodmFsdWUgPT09IGZhbHNlIHx8IHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIlRoZSBmb2xsb3dpbmcgZXJyb3IgaXMgYSBidWcgaW4gUmVhY3QgUm91dGVyOyBwbGVhc2Ugb3BlbiBhbiBpc3N1ZSEgaHR0cHM6Ly9naXRodWIuY29tL3JlbWl4LXJ1bi9yZWFjdC1yb3V0ZXIvaXNzdWVzL25ldy9jaG9vc2VcIlxuICAgICk7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICB9XG59XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS9yb3V0ZXMudHNcbmZ1bmN0aW9uIGdyb3VwUm91dGVzQnlQYXJlbnRJZDIobWFuaWZlc3QpIHtcbiAgbGV0IHJvdXRlcyA9IHt9O1xuICBPYmplY3QudmFsdWVzKG1hbmlmZXN0KS5mb3JFYWNoKChyb3V0ZSkgPT4ge1xuICAgIGlmIChyb3V0ZSkge1xuICAgICAgbGV0IHBhcmVudElkID0gcm91dGUucGFyZW50SWQgfHwgXCJcIjtcbiAgICAgIGlmICghcm91dGVzW3BhcmVudElkXSkge1xuICAgICAgICByb3V0ZXNbcGFyZW50SWRdID0gW107XG4gICAgICB9XG4gICAgICByb3V0ZXNbcGFyZW50SWRdLnB1c2gocm91dGUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByb3V0ZXM7XG59XG5mdW5jdGlvbiBjcmVhdGVSb3V0ZXMobWFuaWZlc3QsIHBhcmVudElkID0gXCJcIiwgcm91dGVzQnlQYXJlbnRJZCA9IGdyb3VwUm91dGVzQnlQYXJlbnRJZDIobWFuaWZlc3QpKSB7XG4gIHJldHVybiAocm91dGVzQnlQYXJlbnRJZFtwYXJlbnRJZF0gfHwgW10pLm1hcCgocm91dGUpID0+ICh7XG4gICAgLi4ucm91dGUsXG4gICAgY2hpbGRyZW46IGNyZWF0ZVJvdXRlcyhtYW5pZmVzdCwgcm91dGUuaWQsIHJvdXRlc0J5UGFyZW50SWQpXG4gIH0pKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVN0YXRpY0hhbmRsZXJEYXRhUm91dGVzKG1hbmlmZXN0LCBmdXR1cmUsIHBhcmVudElkID0gXCJcIiwgcm91dGVzQnlQYXJlbnRJZCA9IGdyb3VwUm91dGVzQnlQYXJlbnRJZDIobWFuaWZlc3QpKSB7XG4gIHJldHVybiAocm91dGVzQnlQYXJlbnRJZFtwYXJlbnRJZF0gfHwgW10pLm1hcCgocm91dGUpID0+IHtcbiAgICBsZXQgY29tbW9uUm91dGUgPSB7XG4gICAgICAvLyBBbHdheXMgaW5jbHVkZSByb290IGR1ZSB0byBkZWZhdWx0IGJvdW5kYXJpZXNcbiAgICAgIGhhc0Vycm9yQm91bmRhcnk6IHJvdXRlLmlkID09PSBcInJvb3RcIiB8fCByb3V0ZS5tb2R1bGUuRXJyb3JCb3VuZGFyeSAhPSBudWxsLFxuICAgICAgaWQ6IHJvdXRlLmlkLFxuICAgICAgcGF0aDogcm91dGUucGF0aCxcbiAgICAgIC8vIE5lZWQgdG8gdXNlIFJSJ3MgdmVyc2lvbiBpbiB0aGUgcGFyYW0gdHlwZWQgaGVyZSB0byBwZXJtaXQgdGhlIG9wdGlvbmFsXG4gICAgICAvLyBjb250ZXh0IGV2ZW4gdGhvdWdoIHdlIGtub3cgaXQnbGwgYWx3YXlzIGJlIHByb3ZpZGVkIGluIHJlbWl4XG4gICAgICBsb2FkZXI6IHJvdXRlLm1vZHVsZS5sb2FkZXIgPyBhc3luYyAoYXJncykgPT4ge1xuICAgICAgICBpZiAoYXJncy5yZXF1ZXN0LmhlYWRlcnMuaGFzKFwiWC1SZWFjdC1Sb3V0ZXItUHJlcmVuZGVyLURhdGFcIikpIHtcbiAgICAgICAgICBjb25zdCBwcmVSZW5kZXJlZERhdGEgPSBhcmdzLnJlcXVlc3QuaGVhZGVycy5nZXQoXG4gICAgICAgICAgICBcIlgtUmVhY3QtUm91dGVyLVByZXJlbmRlci1EYXRhXCJcbiAgICAgICAgICApO1xuICAgICAgICAgIGxldCBlbmNvZGVkID0gcHJlUmVuZGVyZWREYXRhID8gZGVjb2RlVVJJKHByZVJlbmRlcmVkRGF0YSkgOiBwcmVSZW5kZXJlZERhdGE7XG4gICAgICAgICAgaW52YXJpYW50MyhlbmNvZGVkLCBcIk1pc3NpbmcgcHJlcmVuZGVyZWQgZGF0YSBmb3Igcm91dGVcIik7XG4gICAgICAgICAgbGV0IHVpbnQ4YXJyYXkgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoZW5jb2RlZCk7XG4gICAgICAgICAgbGV0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgICAgICAgICBzdGFydChjb250cm9sbGVyKSB7XG4gICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSh1aW50OGFycmF5KTtcbiAgICAgICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGxldCBkZWNvZGVkID0gYXdhaXQgZGVjb2RlVmlhVHVyYm9TdHJlYW0oc3RyZWFtLCBnbG9iYWwpO1xuICAgICAgICAgIGxldCBkYXRhMiA9IGRlY29kZWQudmFsdWU7XG4gICAgICAgICAgaW52YXJpYW50MyhcbiAgICAgICAgICAgIGRhdGEyICYmIHJvdXRlLmlkIGluIGRhdGEyLFxuICAgICAgICAgICAgXCJVbmFibGUgdG8gZGVjb2RlIHByZXJlbmRlcmVkIGRhdGFcIlxuICAgICAgICAgICk7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGRhdGEyW3JvdXRlLmlkXTtcbiAgICAgICAgICBpbnZhcmlhbnQzKFwiZGF0YVwiIGluIHJlc3VsdCwgXCJVbmFibGUgdG8gcHJvY2VzcyBwcmVyZW5kZXJlZCBkYXRhXCIpO1xuICAgICAgICAgIHJldHVybiByZXN1bHQuZGF0YTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdmFsID0gYXdhaXQgY2FsbFJvdXRlSGFuZGxlcihyb3V0ZS5tb2R1bGUubG9hZGVyLCBhcmdzKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0gOiB2b2lkIDAsXG4gICAgICBhY3Rpb246IHJvdXRlLm1vZHVsZS5hY3Rpb24gPyAoYXJncykgPT4gY2FsbFJvdXRlSGFuZGxlcihyb3V0ZS5tb2R1bGUuYWN0aW9uLCBhcmdzKSA6IHZvaWQgMCxcbiAgICAgIGhhbmRsZTogcm91dGUubW9kdWxlLmhhbmRsZVxuICAgIH07XG4gICAgcmV0dXJuIHJvdXRlLmluZGV4ID8ge1xuICAgICAgaW5kZXg6IHRydWUsXG4gICAgICAuLi5jb21tb25Sb3V0ZVxuICAgIH0gOiB7XG4gICAgICBjYXNlU2Vuc2l0aXZlOiByb3V0ZS5jYXNlU2Vuc2l0aXZlLFxuICAgICAgY2hpbGRyZW46IGNyZWF0ZVN0YXRpY0hhbmRsZXJEYXRhUm91dGVzKFxuICAgICAgICBtYW5pZmVzdCxcbiAgICAgICAgZnV0dXJlLFxuICAgICAgICByb3V0ZS5pZCxcbiAgICAgICAgcm91dGVzQnlQYXJlbnRJZFxuICAgICAgKSxcbiAgICAgIC4uLmNvbW1vblJvdXRlXG4gICAgfTtcbiAgfSk7XG59XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS9tYXJrdXAudHNcbnZhciBFU0NBUEVfTE9PS1VQMyA9IHtcbiAgXCImXCI6IFwiXFxcXHUwMDI2XCIsXG4gIFwiPlwiOiBcIlxcXFx1MDAzZVwiLFxuICBcIjxcIjogXCJcXFxcdTAwM2NcIixcbiAgXCJcXHUyMDI4XCI6IFwiXFxcXHUyMDI4XCIsXG4gIFwiXFx1MjAyOVwiOiBcIlxcXFx1MjAyOVwiXG59O1xudmFyIEVTQ0FQRV9SRUdFWDMgPSAvWyY+PFxcdTIwMjhcXHUyMDI5XS9nO1xuZnVuY3Rpb24gZXNjYXBlSHRtbDIoaHRtbCkge1xuICByZXR1cm4gaHRtbC5yZXBsYWNlKEVTQ0FQRV9SRUdFWDMsIChtYXRjaCkgPT4gRVNDQVBFX0xPT0tVUDNbbWF0Y2hdKTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL3NlcnZlckhhbmRvZmYudHNcbmZ1bmN0aW9uIGNyZWF0ZVNlcnZlckhhbmRvZmZTdHJpbmcoc2VydmVySGFuZG9mZikge1xuICByZXR1cm4gZXNjYXBlSHRtbDIoSlNPTi5zdHJpbmdpZnkoc2VydmVySGFuZG9mZikpO1xufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvZGV2LnRzXG52YXIgZ2xvYmFsRGV2U2VydmVySG9va3NLZXkgPSBcIl9fcmVhY3RSb3V0ZXJEZXZTZXJ2ZXJIb29rc1wiO1xuZnVuY3Rpb24gc2V0RGV2U2VydmVySG9va3MoZGV2U2VydmVySG9va3MpIHtcbiAgZ2xvYmFsVGhpc1tnbG9iYWxEZXZTZXJ2ZXJIb29rc0tleV0gPSBkZXZTZXJ2ZXJIb29rcztcbn1cbmZ1bmN0aW9uIGdldERldlNlcnZlckhvb2tzKCkge1xuICByZXR1cm4gZ2xvYmFsVGhpc1tnbG9iYWxEZXZTZXJ2ZXJIb29rc0tleV07XG59XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS9zaW5nbGUtZmV0Y2gudHNcbmltcG9ydCB7IGVuY29kZSB9IGZyb20gXCJ0dXJiby1zdHJlYW1cIjtcblxuLy8gbGliL3NlcnZlci1ydW50aW1lL2hlYWRlcnMudHNcbmltcG9ydCB7IHNwbGl0Q29va2llc1N0cmluZyB9IGZyb20gXCJzZXQtY29va2llLXBhcnNlclwiO1xuZnVuY3Rpb24gZ2V0RG9jdW1lbnRIZWFkZXJzKGJ1aWxkLCBjb250ZXh0KSB7XG4gIGxldCBib3VuZGFyeUlkeCA9IGNvbnRleHQuZXJyb3JzID8gY29udGV4dC5tYXRjaGVzLmZpbmRJbmRleCgobSkgPT4gY29udGV4dC5lcnJvcnNbbS5yb3V0ZS5pZF0pIDogLTE7XG4gIGxldCBtYXRjaGVzID0gYm91bmRhcnlJZHggPj0gMCA/IGNvbnRleHQubWF0Y2hlcy5zbGljZSgwLCBib3VuZGFyeUlkeCArIDEpIDogY29udGV4dC5tYXRjaGVzO1xuICBsZXQgZXJyb3JIZWFkZXJzO1xuICBpZiAoYm91bmRhcnlJZHggPj0gMCkge1xuICAgIGxldCB7IGFjdGlvbkhlYWRlcnMsIGFjdGlvbkRhdGEsIGxvYWRlckhlYWRlcnMsIGxvYWRlckRhdGEgfSA9IGNvbnRleHQ7XG4gICAgY29udGV4dC5tYXRjaGVzLnNsaWNlKGJvdW5kYXJ5SWR4KS5zb21lKChtYXRjaCkgPT4ge1xuICAgICAgbGV0IGlkID0gbWF0Y2gucm91dGUuaWQ7XG4gICAgICBpZiAoYWN0aW9uSGVhZGVyc1tpZF0gJiYgKCFhY3Rpb25EYXRhIHx8ICFhY3Rpb25EYXRhLmhhc093blByb3BlcnR5KGlkKSkpIHtcbiAgICAgICAgZXJyb3JIZWFkZXJzID0gYWN0aW9uSGVhZGVyc1tpZF07XG4gICAgICB9IGVsc2UgaWYgKGxvYWRlckhlYWRlcnNbaWRdICYmICFsb2FkZXJEYXRhLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgICAgICBlcnJvckhlYWRlcnMgPSBsb2FkZXJIZWFkZXJzW2lkXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlcnJvckhlYWRlcnMgIT0gbnVsbDtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gbWF0Y2hlcy5yZWR1Y2UoKHBhcmVudEhlYWRlcnMsIG1hdGNoLCBpZHgpID0+IHtcbiAgICBsZXQgeyBpZCB9ID0gbWF0Y2gucm91dGU7XG4gICAgbGV0IHJvdXRlID0gYnVpbGQucm91dGVzW2lkXTtcbiAgICBpbnZhcmlhbnQzKHJvdXRlLCBgUm91dGUgd2l0aCBpZCBcIiR7aWR9XCIgbm90IGZvdW5kIGluIGJ1aWxkYCk7XG4gICAgbGV0IHJvdXRlTW9kdWxlID0gcm91dGUubW9kdWxlO1xuICAgIGxldCBsb2FkZXJIZWFkZXJzID0gY29udGV4dC5sb2FkZXJIZWFkZXJzW2lkXSB8fCBuZXcgSGVhZGVycygpO1xuICAgIGxldCBhY3Rpb25IZWFkZXJzID0gY29udGV4dC5hY3Rpb25IZWFkZXJzW2lkXSB8fCBuZXcgSGVhZGVycygpO1xuICAgIGxldCBpbmNsdWRlRXJyb3JIZWFkZXJzID0gZXJyb3JIZWFkZXJzICE9IG51bGwgJiYgaWR4ID09PSBtYXRjaGVzLmxlbmd0aCAtIDE7XG4gICAgbGV0IGluY2x1ZGVFcnJvckNvb2tpZXMgPSBpbmNsdWRlRXJyb3JIZWFkZXJzICYmIGVycm9ySGVhZGVycyAhPT0gbG9hZGVySGVhZGVycyAmJiBlcnJvckhlYWRlcnMgIT09IGFjdGlvbkhlYWRlcnM7XG4gICAgaWYgKHJvdXRlTW9kdWxlLmhlYWRlcnMgPT0gbnVsbCkge1xuICAgICAgbGV0IGhlYWRlcnMyID0gbmV3IEhlYWRlcnMocGFyZW50SGVhZGVycyk7XG4gICAgICBpZiAoaW5jbHVkZUVycm9yQ29va2llcykge1xuICAgICAgICBwcmVwZW5kQ29va2llcyhlcnJvckhlYWRlcnMsIGhlYWRlcnMyKTtcbiAgICAgIH1cbiAgICAgIHByZXBlbmRDb29raWVzKGFjdGlvbkhlYWRlcnMsIGhlYWRlcnMyKTtcbiAgICAgIHByZXBlbmRDb29raWVzKGxvYWRlckhlYWRlcnMsIGhlYWRlcnMyKTtcbiAgICAgIHJldHVybiBoZWFkZXJzMjtcbiAgICB9XG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSGVhZGVycyhcbiAgICAgIHJvdXRlTW9kdWxlLmhlYWRlcnMgPyB0eXBlb2Ygcm91dGVNb2R1bGUuaGVhZGVycyA9PT0gXCJmdW5jdGlvblwiID8gcm91dGVNb2R1bGUuaGVhZGVycyh7XG4gICAgICAgIGxvYWRlckhlYWRlcnMsXG4gICAgICAgIHBhcmVudEhlYWRlcnMsXG4gICAgICAgIGFjdGlvbkhlYWRlcnMsXG4gICAgICAgIGVycm9ySGVhZGVyczogaW5jbHVkZUVycm9ySGVhZGVycyA/IGVycm9ySGVhZGVycyA6IHZvaWQgMFxuICAgICAgfSkgOiByb3V0ZU1vZHVsZS5oZWFkZXJzIDogdm9pZCAwXG4gICAgKTtcbiAgICBpZiAoaW5jbHVkZUVycm9yQ29va2llcykge1xuICAgICAgcHJlcGVuZENvb2tpZXMoZXJyb3JIZWFkZXJzLCBoZWFkZXJzKTtcbiAgICB9XG4gICAgcHJlcGVuZENvb2tpZXMoYWN0aW9uSGVhZGVycywgaGVhZGVycyk7XG4gICAgcHJlcGVuZENvb2tpZXMobG9hZGVySGVhZGVycywgaGVhZGVycyk7XG4gICAgcHJlcGVuZENvb2tpZXMocGFyZW50SGVhZGVycywgaGVhZGVycyk7XG4gICAgcmV0dXJuIGhlYWRlcnM7XG4gIH0sIG5ldyBIZWFkZXJzKCkpO1xufVxuZnVuY3Rpb24gcHJlcGVuZENvb2tpZXMocGFyZW50SGVhZGVycywgY2hpbGRIZWFkZXJzKSB7XG4gIGxldCBwYXJlbnRTZXRDb29raWVTdHJpbmcgPSBwYXJlbnRIZWFkZXJzLmdldChcIlNldC1Db29raWVcIik7XG4gIGlmIChwYXJlbnRTZXRDb29raWVTdHJpbmcpIHtcbiAgICBsZXQgY29va2llcyA9IHNwbGl0Q29va2llc1N0cmluZyhwYXJlbnRTZXRDb29raWVTdHJpbmcpO1xuICAgIGNvb2tpZXMuZm9yRWFjaCgoY29va2llKSA9PiB7XG4gICAgICBjaGlsZEhlYWRlcnMuYXBwZW5kKFwiU2V0LUNvb2tpZVwiLCBjb29raWUpO1xuICAgIH0pO1xuICB9XG59XG5cbi8vIGxpYi9zZXJ2ZXItcnVudGltZS9zaW5nbGUtZmV0Y2gudHNcbnZhciBTSU5HTEVfRkVUQ0hfUkVESVJFQ1RfU1RBVFVTID0gMjAyO1xuZnVuY3Rpb24gZ2V0U2luZ2xlRmV0Y2hEYXRhU3RyYXRlZ3kyKHtcbiAgaXNBY3Rpb25EYXRhUmVxdWVzdCxcbiAgbG9hZFJvdXRlSWRzXG59ID0ge30pIHtcbiAgcmV0dXJuIGFzeW5jICh7IHJlcXVlc3QsIG1hdGNoZXMgfSkgPT4ge1xuICAgIGlmIChpc0FjdGlvbkRhdGFSZXF1ZXN0ICYmIHJlcXVlc3QubWV0aG9kID09PSBcIkdFVFwiKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGxldCBtYXRjaGVzVG9Mb2FkID0gbG9hZFJvdXRlSWRzID8gbWF0Y2hlcy5maWx0ZXIoKG0pID0+IGxvYWRSb3V0ZUlkcy5pbmNsdWRlcyhtLnJvdXRlLmlkKSkgOiBtYXRjaGVzO1xuICAgIGxldCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBtYXRjaGVzVG9Mb2FkLm1hcCgobWF0Y2gpID0+IG1hdGNoLnJlc29sdmUoKSlcbiAgICApO1xuICAgIHJldHVybiByZXN1bHRzLnJlZHVjZShcbiAgICAgIChhY2MsIHJlc3VsdCwgaSkgPT4gT2JqZWN0LmFzc2lnbihhY2MsIHsgW21hdGNoZXNUb0xvYWRbaV0ucm91dGUuaWRdOiByZXN1bHQgfSksXG4gICAgICB7fVxuICAgICk7XG4gIH07XG59XG5hc3luYyBmdW5jdGlvbiBzaW5nbGVGZXRjaEFjdGlvbihidWlsZCwgc2VydmVyTW9kZSwgc3RhdGljSGFuZGxlciwgcmVxdWVzdCwgaGFuZGxlclVybCwgbG9hZENvbnRleHQsIGhhbmRsZUVycm9yKSB7XG4gIHRyeSB7XG4gICAgbGV0IGhhbmRsZXJSZXF1ZXN0ID0gbmV3IFJlcXVlc3QoaGFuZGxlclVybCwge1xuICAgICAgbWV0aG9kOiByZXF1ZXN0Lm1ldGhvZCxcbiAgICAgIGJvZHk6IHJlcXVlc3QuYm9keSxcbiAgICAgIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycyxcbiAgICAgIHNpZ25hbDogcmVxdWVzdC5zaWduYWwsXG4gICAgICAuLi5yZXF1ZXN0LmJvZHkgPyB7IGR1cGxleDogXCJoYWxmXCIgfSA6IHZvaWQgMFxuICAgIH0pO1xuICAgIGxldCByZXN1bHQgPSBhd2FpdCBzdGF0aWNIYW5kbGVyLnF1ZXJ5KGhhbmRsZXJSZXF1ZXN0LCB7XG4gICAgICByZXF1ZXN0Q29udGV4dDogbG9hZENvbnRleHQsXG4gICAgICBza2lwTG9hZGVyRXJyb3JCdWJibGluZzogdHJ1ZSxcbiAgICAgIGRhdGFTdHJhdGVneTogZ2V0U2luZ2xlRmV0Y2hEYXRhU3RyYXRlZ3kyKHtcbiAgICAgICAgaXNBY3Rpb25EYXRhUmVxdWVzdDogdHJ1ZVxuICAgICAgfSlcbiAgICB9KTtcbiAgICBpZiAoaXNSZXNwb25zZShyZXN1bHQpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXN1bHQ6IGdldFNpbmdsZUZldGNoUmVkaXJlY3QoXG4gICAgICAgICAgcmVzdWx0LnN0YXR1cyxcbiAgICAgICAgICByZXN1bHQuaGVhZGVycyxcbiAgICAgICAgICBidWlsZC5iYXNlbmFtZVxuICAgICAgICApLFxuICAgICAgICBoZWFkZXJzOiByZXN1bHQuaGVhZGVycyxcbiAgICAgICAgc3RhdHVzOiBTSU5HTEVfRkVUQ0hfUkVESVJFQ1RfU1RBVFVTXG4gICAgICB9O1xuICAgIH1cbiAgICBsZXQgY29udGV4dCA9IHJlc3VsdDtcbiAgICBsZXQgaGVhZGVycyA9IGdldERvY3VtZW50SGVhZGVycyhidWlsZCwgY29udGV4dCk7XG4gICAgaWYgKGlzUmVkaXJlY3RTdGF0dXNDb2RlKGNvbnRleHQuc3RhdHVzQ29kZSkgJiYgaGVhZGVycy5oYXMoXCJMb2NhdGlvblwiKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVzdWx0OiBnZXRTaW5nbGVGZXRjaFJlZGlyZWN0KFxuICAgICAgICAgIGNvbnRleHQuc3RhdHVzQ29kZSxcbiAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgIGJ1aWxkLmJhc2VuYW1lXG4gICAgICAgICksXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIHN0YXR1czogU0lOR0xFX0ZFVENIX1JFRElSRUNUX1NUQVRVU1xuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQuZXJyb3JzKSB7XG4gICAgICBPYmplY3QudmFsdWVzKGNvbnRleHQuZXJyb3JzKS5mb3JFYWNoKChlcnIpID0+IHtcbiAgICAgICAgaWYgKCFpc1JvdXRlRXJyb3JSZXNwb25zZShlcnIpIHx8IGVyci5lcnJvcikge1xuICAgICAgICAgIGhhbmRsZUVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY29udGV4dC5lcnJvcnMgPSBzYW5pdGl6ZUVycm9ycyhjb250ZXh0LmVycm9ycywgc2VydmVyTW9kZSk7XG4gICAgfVxuICAgIGxldCBzaW5nbGVGZXRjaFJlc3VsdDtcbiAgICBpZiAoY29udGV4dC5lcnJvcnMpIHtcbiAgICAgIHNpbmdsZUZldGNoUmVzdWx0ID0geyBlcnJvcjogT2JqZWN0LnZhbHVlcyhjb250ZXh0LmVycm9ycylbMF0gfTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2luZ2xlRmV0Y2hSZXN1bHQgPSB7IGRhdGE6IE9iamVjdC52YWx1ZXMoY29udGV4dC5hY3Rpb25EYXRhIHx8IHt9KVswXSB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcmVzdWx0OiBzaW5nbGVGZXRjaFJlc3VsdCxcbiAgICAgIGhlYWRlcnMsXG4gICAgICBzdGF0dXM6IGNvbnRleHQuc3RhdHVzQ29kZVxuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiB7XG4gICAgICByZXN1bHQ6IHsgZXJyb3IgfSxcbiAgICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKCksXG4gICAgICBzdGF0dXM6IDUwMFxuICAgIH07XG4gIH1cbn1cbmFzeW5jIGZ1bmN0aW9uIHNpbmdsZUZldGNoTG9hZGVycyhidWlsZCwgc2VydmVyTW9kZSwgc3RhdGljSGFuZGxlciwgcmVxdWVzdCwgaGFuZGxlclVybCwgbG9hZENvbnRleHQsIGhhbmRsZUVycm9yKSB7XG4gIHRyeSB7XG4gICAgbGV0IGhhbmRsZXJSZXF1ZXN0ID0gbmV3IFJlcXVlc3QoaGFuZGxlclVybCwge1xuICAgICAgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzLFxuICAgICAgc2lnbmFsOiByZXF1ZXN0LnNpZ25hbFxuICAgIH0pO1xuICAgIGxldCBsb2FkUm91dGVJZHMgPSBuZXcgVVJMKHJlcXVlc3QudXJsKS5zZWFyY2hQYXJhbXMuZ2V0KFwiX3JvdXRlc1wiKT8uc3BsaXQoXCIsXCIpIHx8IHZvaWQgMDtcbiAgICBsZXQgcmVzdWx0ID0gYXdhaXQgc3RhdGljSGFuZGxlci5xdWVyeShoYW5kbGVyUmVxdWVzdCwge1xuICAgICAgcmVxdWVzdENvbnRleHQ6IGxvYWRDb250ZXh0LFxuICAgICAgc2tpcExvYWRlckVycm9yQnViYmxpbmc6IHRydWUsXG4gICAgICBkYXRhU3RyYXRlZ3k6IGdldFNpbmdsZUZldGNoRGF0YVN0cmF0ZWd5Mih7XG4gICAgICAgIGxvYWRSb3V0ZUlkc1xuICAgICAgfSlcbiAgICB9KTtcbiAgICBpZiAoaXNSZXNwb25zZShyZXN1bHQpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICBbU2luZ2xlRmV0Y2hSZWRpcmVjdFN5bWJvbF06IGdldFNpbmdsZUZldGNoUmVkaXJlY3QoXG4gICAgICAgICAgICByZXN1bHQuc3RhdHVzLFxuICAgICAgICAgICAgcmVzdWx0LmhlYWRlcnMsXG4gICAgICAgICAgICBidWlsZC5iYXNlbmFtZVxuICAgICAgICAgIClcbiAgICAgICAgfSxcbiAgICAgICAgaGVhZGVyczogcmVzdWx0LmhlYWRlcnMsXG4gICAgICAgIHN0YXR1czogU0lOR0xFX0ZFVENIX1JFRElSRUNUX1NUQVRVU1xuICAgICAgfTtcbiAgICB9XG4gICAgbGV0IGNvbnRleHQgPSByZXN1bHQ7XG4gICAgbGV0IGhlYWRlcnMgPSBnZXREb2N1bWVudEhlYWRlcnMoYnVpbGQsIGNvbnRleHQpO1xuICAgIGlmIChpc1JlZGlyZWN0U3RhdHVzQ29kZShjb250ZXh0LnN0YXR1c0NvZGUpICYmIGhlYWRlcnMuaGFzKFwiTG9jYXRpb25cIikpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgIFtTaW5nbGVGZXRjaFJlZGlyZWN0U3ltYm9sXTogZ2V0U2luZ2xlRmV0Y2hSZWRpcmVjdChcbiAgICAgICAgICAgIGNvbnRleHQuc3RhdHVzQ29kZSxcbiAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgICBidWlsZC5iYXNlbmFtZVxuICAgICAgICAgIClcbiAgICAgICAgfSxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgICAgc3RhdHVzOiBTSU5HTEVfRkVUQ0hfUkVESVJFQ1RfU1RBVFVTXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoY29udGV4dC5lcnJvcnMpIHtcbiAgICAgIE9iamVjdC52YWx1ZXMoY29udGV4dC5lcnJvcnMpLmZvckVhY2goKGVycikgPT4ge1xuICAgICAgICBpZiAoIWlzUm91dGVFcnJvclJlc3BvbnNlKGVycikgfHwgZXJyLmVycm9yKSB7XG4gICAgICAgICAgaGFuZGxlRXJyb3IoZXJyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjb250ZXh0LmVycm9ycyA9IHNhbml0aXplRXJyb3JzKGNvbnRleHQuZXJyb3JzLCBzZXJ2ZXJNb2RlKTtcbiAgICB9XG4gICAgbGV0IHJlc3VsdHMgPSB7fTtcbiAgICBsZXQgbG9hZGVkTWF0Y2hlcyA9IGxvYWRSb3V0ZUlkcyA/IGNvbnRleHQubWF0Y2hlcy5maWx0ZXIoXG4gICAgICAobSkgPT4gbS5yb3V0ZS5sb2FkZXIgJiYgbG9hZFJvdXRlSWRzLmluY2x1ZGVzKG0ucm91dGUuaWQpXG4gICAgKSA6IGNvbnRleHQubWF0Y2hlcztcbiAgICBsb2FkZWRNYXRjaGVzLmZvckVhY2goKG0pID0+IHtcbiAgICAgIGxldCB7IGlkIH0gPSBtLnJvdXRlO1xuICAgICAgaWYgKGNvbnRleHQuZXJyb3JzICYmIGNvbnRleHQuZXJyb3JzLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgICAgICByZXN1bHRzW2lkXSA9IHsgZXJyb3I6IGNvbnRleHQuZXJyb3JzW2lkXSB9O1xuICAgICAgfSBlbHNlIGlmIChjb250ZXh0LmxvYWRlckRhdGEuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgICAgIHJlc3VsdHNbaWRdID0geyBkYXRhOiBjb250ZXh0LmxvYWRlckRhdGFbaWRdIH07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlc3VsdDogcmVzdWx0cyxcbiAgICAgIGhlYWRlcnMsXG4gICAgICBzdGF0dXM6IGNvbnRleHQuc3RhdHVzQ29kZVxuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiB7XG4gICAgICByZXN1bHQ6IHsgcm9vdDogeyBlcnJvciB9IH0sXG4gICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycygpLFxuICAgICAgc3RhdHVzOiA1MDBcbiAgICB9O1xuICB9XG59XG5mdW5jdGlvbiBnZXRTaW5nbGVGZXRjaFJlZGlyZWN0KHN0YXR1cywgaGVhZGVycywgYmFzZW5hbWUpIHtcbiAgbGV0IHJlZGlyZWN0MiA9IGhlYWRlcnMuZ2V0KFwiTG9jYXRpb25cIik7XG4gIGlmIChiYXNlbmFtZSkge1xuICAgIHJlZGlyZWN0MiA9IHN0cmlwQmFzZW5hbWUocmVkaXJlY3QyLCBiYXNlbmFtZSkgfHwgcmVkaXJlY3QyO1xuICB9XG4gIHJldHVybiB7XG4gICAgcmVkaXJlY3Q6IHJlZGlyZWN0MixcbiAgICBzdGF0dXMsXG4gICAgcmV2YWxpZGF0ZTogKFxuICAgICAgLy8gVGVjaG5pY2FsbHkgWC1SZW1peC1SZXZhbGlkYXRlIGlzbid0IG5lZWRlZCBoZXJlIC0gdGhhdCB3YXMgYW4gaW1wbGVtZW50YXRpb25cbiAgICAgIC8vIGRldGFpbCBvZiA/X2RhdGEgcmVxdWVzdHMgYXMgb3VyIHdheSB0byB0ZWxsIHRoZSBmcm9udCBlbmQgdG8gcmV2YWxpZGF0ZSB3aGVuXG4gICAgICAvLyB3ZSBkaWRuJ3QgaGF2ZSBhIHJlc3BvbnNlIGJvZHkgdG8gaW5jbHVkZSB0aGF0IGluZm9ybWF0aW9uIGluLlxuICAgICAgLy8gV2l0aCBzaW5nbGUgZmV0Y2gsIHdlIHRlbGwgdGhlIGZyb250IGVuZCB2aWEgdGhpcyByZXZhbGlkYXRlIGJvb2xlYW4gZmllbGQuXG4gICAgICAvLyBIb3dldmVyLCB3ZSdyZSByZXNwZWN0aW5nIGl0IGZvciBub3cgYmVjYXVzZSBpdCBtYXkgYmUgc29tZXRoaW5nIGZvbGtzIGhhdmVcbiAgICAgIC8vIHVzZWQgaW4gdGhlaXIgb3duIHJlc3BvbnNlc1xuICAgICAgLy8gVE9ETyh2Myk6IENvbnNpZGVyIHJlbW92aW5nIG9yIG1ha2luZyB0aGlzIG9mZmljaWFsIHB1YmxpYyBBUElcbiAgICAgIGhlYWRlcnMuaGFzKFwiWC1SZW1peC1SZXZhbGlkYXRlXCIpIHx8IGhlYWRlcnMuaGFzKFwiU2V0LUNvb2tpZVwiKVxuICAgICksXG4gICAgcmVsb2FkOiBoZWFkZXJzLmhhcyhcIlgtUmVtaXgtUmVsb2FkLURvY3VtZW50XCIpLFxuICAgIHJlcGxhY2U6IGhlYWRlcnMuaGFzKFwiWC1SZW1peC1SZXBsYWNlXCIpXG4gIH07XG59XG5mdW5jdGlvbiBlbmNvZGVWaWFUdXJib1N0cmVhbShkYXRhMiwgcmVxdWVzdFNpZ25hbCwgc3RyZWFtVGltZW91dCwgc2VydmVyTW9kZSkge1xuICBsZXQgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgbGV0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoXG4gICAgKCkgPT4gY29udHJvbGxlci5hYm9ydChuZXcgRXJyb3IoXCJTZXJ2ZXIgVGltZW91dFwiKSksXG4gICAgdHlwZW9mIHN0cmVhbVRpbWVvdXQgPT09IFwibnVtYmVyXCIgPyBzdHJlYW1UaW1lb3V0IDogNDk1MFxuICApO1xuICByZXF1ZXN0U2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCAoKSA9PiBjbGVhclRpbWVvdXQodGltZW91dElkKSk7XG4gIHJldHVybiBlbmNvZGUoZGF0YTIsIHtcbiAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgIHBsdWdpbnM6IFtcbiAgICAgICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIGxldCB7IG5hbWUsIG1lc3NhZ2UsIHN0YWNrIH0gPSBzZXJ2ZXJNb2RlID09PSBcInByb2R1Y3Rpb25cIiAvKiBQcm9kdWN0aW9uICovID8gc2FuaXRpemVFcnJvcih2YWx1ZSwgc2VydmVyTW9kZSkgOiB2YWx1ZTtcbiAgICAgICAgICByZXR1cm4gW1wiU2FuaXRpemVkRXJyb3JcIiwgbmFtZSwgbWVzc2FnZSwgc3RhY2tdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2VJbXBsKSB7XG4gICAgICAgICAgbGV0IHsgZGF0YTogZGF0YTMsIHN0YXR1cywgc3RhdHVzVGV4dCB9ID0gdmFsdWU7XG4gICAgICAgICAgcmV0dXJuIFtcIkVycm9yUmVzcG9uc2VcIiwgZGF0YTMsIHN0YXR1cywgc3RhdHVzVGV4dF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiBTaW5nbGVGZXRjaFJlZGlyZWN0U3ltYm9sIGluIHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIFtcIlNpbmdsZUZldGNoUmVkaXJlY3RcIiwgdmFsdWVbU2luZ2xlRmV0Y2hSZWRpcmVjdFN5bWJvbF1dO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXSxcbiAgICBwb3N0UGx1Z2luczogW1xuICAgICAgKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICghdmFsdWUpIHJldHVybjtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIikgcmV0dXJuO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIFwiU2luZ2xlRmV0Y2hDbGFzc0luc3RhbmNlXCIsXG4gICAgICAgICAgT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHZhbHVlKSlcbiAgICAgICAgXTtcbiAgICAgIH0sXG4gICAgICAoKSA9PiBbXCJTaW5nbGVGZXRjaEZhbGxiYWNrXCJdXG4gICAgXVxuICB9KTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL3NlcnZlci50c1xuZnVuY3Rpb24gZGVyaXZlKGJ1aWxkLCBtb2RlKSB7XG4gIGxldCByb3V0ZXMgPSBjcmVhdGVSb3V0ZXMoYnVpbGQucm91dGVzKTtcbiAgbGV0IGRhdGFSb3V0ZXMgPSBjcmVhdGVTdGF0aWNIYW5kbGVyRGF0YVJvdXRlcyhidWlsZC5yb3V0ZXMsIGJ1aWxkLmZ1dHVyZSk7XG4gIGxldCBzZXJ2ZXJNb2RlID0gaXNTZXJ2ZXJNb2RlKG1vZGUpID8gbW9kZSA6IFwicHJvZHVjdGlvblwiIC8qIFByb2R1Y3Rpb24gKi87XG4gIGxldCBzdGF0aWNIYW5kbGVyID0gY3JlYXRlU3RhdGljSGFuZGxlcihkYXRhUm91dGVzLCB7XG4gICAgYmFzZW5hbWU6IGJ1aWxkLmJhc2VuYW1lXG4gIH0pO1xuICBsZXQgZXJyb3JIYW5kbGVyID0gYnVpbGQuZW50cnkubW9kdWxlLmhhbmRsZUVycm9yIHx8ICgoZXJyb3IsIHsgcmVxdWVzdCB9KSA9PiB7XG4gICAgaWYgKHNlcnZlck1vZGUgIT09IFwidGVzdFwiIC8qIFRlc3QgKi8gJiYgIXJlcXVlc3Quc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVGhpcyBpcyBcInByaXZhdGVcIiBmcm9tIHVzZXJzIGJ1dCBpbnRlbmRlZCBmb3IgaW50ZXJuYWwgdXNlXG4gICAgICAgIGlzUm91dGVFcnJvclJlc3BvbnNlKGVycm9yKSAmJiBlcnJvci5lcnJvciA/IGVycm9yLmVycm9yIDogZXJyb3JcbiAgICAgICk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICByb3V0ZXMsXG4gICAgZGF0YVJvdXRlcyxcbiAgICBzZXJ2ZXJNb2RlLFxuICAgIHN0YXRpY0hhbmRsZXIsXG4gICAgZXJyb3JIYW5kbGVyXG4gIH07XG59XG52YXIgY3JlYXRlUmVxdWVzdEhhbmRsZXIgPSAoYnVpbGQsIG1vZGUpID0+IHtcbiAgbGV0IF9idWlsZDtcbiAgbGV0IHJvdXRlcztcbiAgbGV0IHNlcnZlck1vZGU7XG4gIGxldCBzdGF0aWNIYW5kbGVyO1xuICBsZXQgZXJyb3JIYW5kbGVyO1xuICByZXR1cm4gYXN5bmMgZnVuY3Rpb24gcmVxdWVzdEhhbmRsZXIocmVxdWVzdCwgbG9hZENvbnRleHQgPSB7fSkge1xuICAgIF9idWlsZCA9IHR5cGVvZiBidWlsZCA9PT0gXCJmdW5jdGlvblwiID8gYXdhaXQgYnVpbGQoKSA6IGJ1aWxkO1xuICAgIGlmICh0eXBlb2YgYnVpbGQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgbGV0IGRlcml2ZWQgPSBkZXJpdmUoX2J1aWxkLCBtb2RlKTtcbiAgICAgIHJvdXRlcyA9IGRlcml2ZWQucm91dGVzO1xuICAgICAgc2VydmVyTW9kZSA9IGRlcml2ZWQuc2VydmVyTW9kZTtcbiAgICAgIHN0YXRpY0hhbmRsZXIgPSBkZXJpdmVkLnN0YXRpY0hhbmRsZXI7XG4gICAgICBlcnJvckhhbmRsZXIgPSBkZXJpdmVkLmVycm9ySGFuZGxlcjtcbiAgICB9IGVsc2UgaWYgKCFyb3V0ZXMgfHwgIXNlcnZlck1vZGUgfHwgIXN0YXRpY0hhbmRsZXIgfHwgIWVycm9ySGFuZGxlcikge1xuICAgICAgbGV0IGRlcml2ZWQgPSBkZXJpdmUoX2J1aWxkLCBtb2RlKTtcbiAgICAgIHJvdXRlcyA9IGRlcml2ZWQucm91dGVzO1xuICAgICAgc2VydmVyTW9kZSA9IGRlcml2ZWQuc2VydmVyTW9kZTtcbiAgICAgIHN0YXRpY0hhbmRsZXIgPSBkZXJpdmVkLnN0YXRpY0hhbmRsZXI7XG4gICAgICBlcnJvckhhbmRsZXIgPSBkZXJpdmVkLmVycm9ySGFuZGxlcjtcbiAgICB9XG4gICAgbGV0IHVybCA9IG5ldyBVUkwocmVxdWVzdC51cmwpO1xuICAgIGxldCBwYXJhbXMgPSB7fTtcbiAgICBsZXQgaGFuZGxlRXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICAgIGlmIChtb2RlID09PSBcImRldmVsb3BtZW50XCIgLyogRGV2ZWxvcG1lbnQgKi8pIHtcbiAgICAgICAgZ2V0RGV2U2VydmVySG9va3MoKT8ucHJvY2Vzc1JlcXVlc3RFcnJvcj8uKGVycm9yKTtcbiAgICAgIH1cbiAgICAgIGVycm9ySGFuZGxlcihlcnJvciwge1xuICAgICAgICBjb250ZXh0OiBsb2FkQ29udGV4dCxcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICByZXF1ZXN0XG4gICAgICB9KTtcbiAgICB9O1xuICAgIGxldCBtYW5pZmVzdFVybCA9IGAke19idWlsZC5iYXNlbmFtZSA/PyBcIi9cIn0vX19tYW5pZmVzdGAucmVwbGFjZShcbiAgICAgIC9cXC8rL2csXG4gICAgICBcIi9cIlxuICAgICk7XG4gICAgaWYgKHVybC5wYXRobmFtZSA9PT0gbWFuaWZlc3RVcmwpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCByZXMgPSBhd2FpdCBoYW5kbGVNYW5pZmVzdFJlcXVlc3QoX2J1aWxkLCByb3V0ZXMsIHVybCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGUpO1xuICAgICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFwiVW5rbm93biBTZXJ2ZXIgRXJyb3JcIiwgeyBzdGF0dXM6IDUwMCB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IG1hdGNoZXMgPSBtYXRjaFNlcnZlclJvdXRlcyhyb3V0ZXMsIHVybC5wYXRobmFtZSwgX2J1aWxkLmJhc2VuYW1lKTtcbiAgICBpZiAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIE9iamVjdC5hc3NpZ24ocGFyYW1zLCBtYXRjaGVzWzBdLnBhcmFtcyk7XG4gICAgfVxuICAgIGxldCByZXNwb25zZTtcbiAgICBpZiAodXJsLnBhdGhuYW1lLmVuZHNXaXRoKFwiLmRhdGFcIikpIHtcbiAgICAgIGxldCBoYW5kbGVyVXJsID0gbmV3IFVSTChyZXF1ZXN0LnVybCk7XG4gICAgICBoYW5kbGVyVXJsLnBhdGhuYW1lID0gaGFuZGxlclVybC5wYXRobmFtZS5yZXBsYWNlKC9cXC5kYXRhJC8sIFwiXCIpLnJlcGxhY2UoL15cXC9fcm9vdCQvLCBcIi9cIik7XG4gICAgICBsZXQgc2luZ2xlRmV0Y2hNYXRjaGVzID0gbWF0Y2hTZXJ2ZXJSb3V0ZXMoXG4gICAgICAgIHJvdXRlcyxcbiAgICAgICAgaGFuZGxlclVybC5wYXRobmFtZSxcbiAgICAgICAgX2J1aWxkLmJhc2VuYW1lXG4gICAgICApO1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCBoYW5kbGVTaW5nbGVGZXRjaFJlcXVlc3QoXG4gICAgICAgIHNlcnZlck1vZGUsXG4gICAgICAgIF9idWlsZCxcbiAgICAgICAgc3RhdGljSGFuZGxlcixcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgaGFuZGxlclVybCxcbiAgICAgICAgbG9hZENvbnRleHQsXG4gICAgICAgIGhhbmRsZUVycm9yXG4gICAgICApO1xuICAgICAgaWYgKF9idWlsZC5lbnRyeS5tb2R1bGUuaGFuZGxlRGF0YVJlcXVlc3QpIHtcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCBfYnVpbGQuZW50cnkubW9kdWxlLmhhbmRsZURhdGFSZXF1ZXN0KHJlc3BvbnNlLCB7XG4gICAgICAgICAgY29udGV4dDogbG9hZENvbnRleHQsXG4gICAgICAgICAgcGFyYW1zOiBzaW5nbGVGZXRjaE1hdGNoZXMgPyBzaW5nbGVGZXRjaE1hdGNoZXNbMF0ucGFyYW1zIDoge30sXG4gICAgICAgICAgcmVxdWVzdFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGlzUmVkaXJlY3RSZXNwb25zZShyZXNwb25zZSkpIHtcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gZ2V0U2luZ2xlRmV0Y2hSZWRpcmVjdChcbiAgICAgICAgICAgIHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgICAgICAgIHJlc3BvbnNlLmhlYWRlcnMsXG4gICAgICAgICAgICBfYnVpbGQuYmFzZW5hbWVcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChyZXF1ZXN0Lm1ldGhvZCA9PT0gXCJHRVRcIikge1xuICAgICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICBbU2luZ2xlRmV0Y2hSZWRpcmVjdFN5bWJvbF06IHJlc3VsdFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IGhlYWRlcnMgPSBuZXcgSGVhZGVycyhyZXNwb25zZS5oZWFkZXJzKTtcbiAgICAgICAgICBoZWFkZXJzLnNldChcIkNvbnRlbnQtVHlwZVwiLCBcInRleHQveC1zY3JpcHRcIik7XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShcbiAgICAgICAgICAgIGVuY29kZVZpYVR1cmJvU3RyZWFtKFxuICAgICAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgICAgIHJlcXVlc3Quc2lnbmFsLFxuICAgICAgICAgICAgICBfYnVpbGQuZW50cnkubW9kdWxlLnN0cmVhbVRpbWVvdXQsXG4gICAgICAgICAgICAgIHNlcnZlck1vZGVcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXR1czogU0lOR0xFX0ZFVENIX1JFRElSRUNUX1NUQVRVUyxcbiAgICAgICAgICAgICAgaGVhZGVyc1xuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG1hdGNoZXMgJiYgbWF0Y2hlc1ttYXRjaGVzLmxlbmd0aCAtIDFdLnJvdXRlLm1vZHVsZS5kZWZhdWx0ID09IG51bGwgJiYgbWF0Y2hlc1ttYXRjaGVzLmxlbmd0aCAtIDFdLnJvdXRlLm1vZHVsZS5FcnJvckJvdW5kYXJ5ID09IG51bGwpIHtcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgaGFuZGxlUmVzb3VyY2VSZXF1ZXN0KFxuICAgICAgICBzZXJ2ZXJNb2RlLFxuICAgICAgICBzdGF0aWNIYW5kbGVyLFxuICAgICAgICBtYXRjaGVzLnNsaWNlKC0xKVswXS5yb3V0ZS5pZCxcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgbG9hZENvbnRleHQsXG4gICAgICAgIGhhbmRsZUVycm9yXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgY3JpdGljYWxDc3MgPSBtb2RlID09PSBcImRldmVsb3BtZW50XCIgLyogRGV2ZWxvcG1lbnQgKi8gPyBhd2FpdCBnZXREZXZTZXJ2ZXJIb29rcygpPy5nZXRDcml0aWNhbENzcz8uKF9idWlsZCwgdXJsLnBhdGhuYW1lKSA6IHZvaWQgMDtcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgaGFuZGxlRG9jdW1lbnRSZXF1ZXN0KFxuICAgICAgICBzZXJ2ZXJNb2RlLFxuICAgICAgICBfYnVpbGQsXG4gICAgICAgIHN0YXRpY0hhbmRsZXIsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIGxvYWRDb250ZXh0LFxuICAgICAgICBoYW5kbGVFcnJvcixcbiAgICAgICAgY3JpdGljYWxDc3NcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChyZXF1ZXN0Lm1ldGhvZCA9PT0gXCJIRUFEXCIpIHtcbiAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UobnVsbCwge1xuICAgICAgICBoZWFkZXJzOiByZXNwb25zZS5oZWFkZXJzLFxuICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgICAgc3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfTtcbn07XG5hc3luYyBmdW5jdGlvbiBoYW5kbGVNYW5pZmVzdFJlcXVlc3QoYnVpbGQsIHJvdXRlcywgdXJsKSB7XG4gIGxldCBwYXRjaGVzID0ge307XG4gIGlmICh1cmwuc2VhcmNoUGFyYW1zLmhhcyhcInBcIikpIHtcbiAgICBmb3IgKGxldCBwYXRoIG9mIHVybC5zZWFyY2hQYXJhbXMuZ2V0QWxsKFwicFwiKSkge1xuICAgICAgbGV0IG1hdGNoZXMgPSBtYXRjaFNlcnZlclJvdXRlcyhyb3V0ZXMsIHBhdGgsIGJ1aWxkLmJhc2VuYW1lKTtcbiAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgIGZvciAobGV0IG1hdGNoIG9mIG1hdGNoZXMpIHtcbiAgICAgICAgICBsZXQgcm91dGVJZCA9IG1hdGNoLnJvdXRlLmlkO1xuICAgICAgICAgIGxldCByb3V0ZSA9IGJ1aWxkLmFzc2V0cy5yb3V0ZXNbcm91dGVJZF07XG4gICAgICAgICAgaWYgKHJvdXRlKSB7XG4gICAgICAgICAgICBwYXRjaGVzW3JvdXRlSWRdID0gcm91dGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBSZXNwb25zZS5qc29uKHBhdGNoZXMsIHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDYWNoZS1Db250cm9sXCI6IFwicHVibGljLCBtYXgtYWdlPTMxNTM2MDAwLCBpbW11dGFibGVcIlxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHJldHVybiBuZXcgUmVzcG9uc2UoXCJJbnZhbGlkIFJlcXVlc3RcIiwgeyBzdGF0dXM6IDQwMCB9KTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZVNpbmdsZUZldGNoUmVxdWVzdChzZXJ2ZXJNb2RlLCBidWlsZCwgc3RhdGljSGFuZGxlciwgcmVxdWVzdCwgaGFuZGxlclVybCwgbG9hZENvbnRleHQsIGhhbmRsZUVycm9yKSB7XG4gIGxldCB7IHJlc3VsdCwgaGVhZGVycywgc3RhdHVzIH0gPSByZXF1ZXN0Lm1ldGhvZCAhPT0gXCJHRVRcIiA/IGF3YWl0IHNpbmdsZUZldGNoQWN0aW9uKFxuICAgIGJ1aWxkLFxuICAgIHNlcnZlck1vZGUsXG4gICAgc3RhdGljSGFuZGxlcixcbiAgICByZXF1ZXN0LFxuICAgIGhhbmRsZXJVcmwsXG4gICAgbG9hZENvbnRleHQsXG4gICAgaGFuZGxlRXJyb3JcbiAgKSA6IGF3YWl0IHNpbmdsZUZldGNoTG9hZGVycyhcbiAgICBidWlsZCxcbiAgICBzZXJ2ZXJNb2RlLFxuICAgIHN0YXRpY0hhbmRsZXIsXG4gICAgcmVxdWVzdCxcbiAgICBoYW5kbGVyVXJsLFxuICAgIGxvYWRDb250ZXh0LFxuICAgIGhhbmRsZUVycm9yXG4gICk7XG4gIGxldCByZXN1bHRIZWFkZXJzID0gbmV3IEhlYWRlcnMoaGVhZGVycyk7XG4gIHJlc3VsdEhlYWRlcnMuc2V0KFwiWC1SZW1peC1SZXNwb25zZVwiLCBcInllc1wiKTtcbiAgaWYgKHN0YXR1cyA9PT0gMzA0KSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7IHN0YXR1czogMzA0LCBoZWFkZXJzOiByZXN1bHRIZWFkZXJzIH0pO1xuICB9XG4gIHJlc3VsdEhlYWRlcnMuc2V0KFwiQ29udGVudC1UeXBlXCIsIFwidGV4dC94LXNjcmlwdFwiKTtcbiAgcmV0dXJuIG5ldyBSZXNwb25zZShcbiAgICBlbmNvZGVWaWFUdXJib1N0cmVhbShcbiAgICAgIHJlc3VsdCxcbiAgICAgIHJlcXVlc3Quc2lnbmFsLFxuICAgICAgYnVpbGQuZW50cnkubW9kdWxlLnN0cmVhbVRpbWVvdXQsXG4gICAgICBzZXJ2ZXJNb2RlXG4gICAgKSxcbiAgICB7XG4gICAgICBzdGF0dXM6IHN0YXR1cyB8fCAyMDAsXG4gICAgICBoZWFkZXJzOiByZXN1bHRIZWFkZXJzXG4gICAgfVxuICApO1xufVxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlRG9jdW1lbnRSZXF1ZXN0KHNlcnZlck1vZGUsIGJ1aWxkLCBzdGF0aWNIYW5kbGVyLCByZXF1ZXN0LCBsb2FkQ29udGV4dCwgaGFuZGxlRXJyb3IsIGNyaXRpY2FsQ3NzKSB7XG4gIGxldCBjb250ZXh0O1xuICB0cnkge1xuICAgIGNvbnRleHQgPSBhd2FpdCBzdGF0aWNIYW5kbGVyLnF1ZXJ5KHJlcXVlc3QsIHtcbiAgICAgIHJlcXVlc3RDb250ZXh0OiBsb2FkQ29udGV4dFxuICAgIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGhhbmRsZUVycm9yKGVycm9yKTtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHsgc3RhdHVzOiA1MDAgfSk7XG4gIH1cbiAgaWYgKGlzUmVzcG9uc2UoY29udGV4dCkpIHtcbiAgICByZXR1cm4gY29udGV4dDtcbiAgfVxuICBsZXQgaGVhZGVycyA9IGdldERvY3VtZW50SGVhZGVycyhidWlsZCwgY29udGV4dCk7XG4gIGlmIChjb250ZXh0LnN0YXR1c0NvZGUgPT09IDMwNCkge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UobnVsbCwgeyBzdGF0dXM6IDMwNCwgaGVhZGVycyB9KTtcbiAgfVxuICBpZiAoY29udGV4dC5lcnJvcnMpIHtcbiAgICBPYmplY3QudmFsdWVzKGNvbnRleHQuZXJyb3JzKS5mb3JFYWNoKChlcnIpID0+IHtcbiAgICAgIGlmICghaXNSb3V0ZUVycm9yUmVzcG9uc2UoZXJyKSB8fCBlcnIuZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb250ZXh0LmVycm9ycyA9IHNhbml0aXplRXJyb3JzKGNvbnRleHQuZXJyb3JzLCBzZXJ2ZXJNb2RlKTtcbiAgfVxuICBsZXQgc3RhdGUgPSB7XG4gICAgbG9hZGVyRGF0YTogY29udGV4dC5sb2FkZXJEYXRhLFxuICAgIGFjdGlvbkRhdGE6IGNvbnRleHQuYWN0aW9uRGF0YSxcbiAgICBlcnJvcnM6IHNlcmlhbGl6ZUVycm9yczIoY29udGV4dC5lcnJvcnMsIHNlcnZlck1vZGUpXG4gIH07XG4gIGxldCBlbnRyeUNvbnRleHQgPSB7XG4gICAgbWFuaWZlc3Q6IGJ1aWxkLmFzc2V0cyxcbiAgICByb3V0ZU1vZHVsZXM6IGNyZWF0ZUVudHJ5Um91dGVNb2R1bGVzKGJ1aWxkLnJvdXRlcyksXG4gICAgc3RhdGljSGFuZGxlckNvbnRleHQ6IGNvbnRleHQsXG4gICAgY3JpdGljYWxDc3MsXG4gICAgc2VydmVySGFuZG9mZlN0cmluZzogY3JlYXRlU2VydmVySGFuZG9mZlN0cmluZyh7XG4gICAgICBiYXNlbmFtZTogYnVpbGQuYmFzZW5hbWUsXG4gICAgICBjcml0aWNhbENzcyxcbiAgICAgIGZ1dHVyZTogYnVpbGQuZnV0dXJlLFxuICAgICAgaXNTcGFNb2RlOiBidWlsZC5pc1NwYU1vZGVcbiAgICB9KSxcbiAgICBzZXJ2ZXJIYW5kb2ZmU3RyZWFtOiBlbmNvZGVWaWFUdXJib1N0cmVhbShcbiAgICAgIHN0YXRlLFxuICAgICAgcmVxdWVzdC5zaWduYWwsXG4gICAgICBidWlsZC5lbnRyeS5tb2R1bGUuc3RyZWFtVGltZW91dCxcbiAgICAgIHNlcnZlck1vZGVcbiAgICApLFxuICAgIHJlbmRlck1ldGE6IHt9LFxuICAgIGZ1dHVyZTogYnVpbGQuZnV0dXJlLFxuICAgIGlzU3BhTW9kZTogYnVpbGQuaXNTcGFNb2RlLFxuICAgIHNlcmlhbGl6ZUVycm9yOiAoZXJyKSA9PiBzZXJpYWxpemVFcnJvcihlcnIsIHNlcnZlck1vZGUpXG4gIH07XG4gIGxldCBoYW5kbGVEb2N1bWVudFJlcXVlc3RGdW5jdGlvbiA9IGJ1aWxkLmVudHJ5Lm1vZHVsZS5kZWZhdWx0O1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBoYW5kbGVEb2N1bWVudFJlcXVlc3RGdW5jdGlvbihcbiAgICAgIHJlcXVlc3QsXG4gICAgICBjb250ZXh0LnN0YXR1c0NvZGUsXG4gICAgICBoZWFkZXJzLFxuICAgICAgZW50cnlDb250ZXh0LFxuICAgICAgbG9hZENvbnRleHRcbiAgICApO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGhhbmRsZUVycm9yKGVycm9yKTtcbiAgICBsZXQgZXJyb3JGb3JTZWNvbmRSZW5kZXIgPSBlcnJvcjtcbiAgICBpZiAoaXNSZXNwb25zZShlcnJvcikpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCBkYXRhMiA9IGF3YWl0IHVud3JhcFJlc3BvbnNlKGVycm9yKTtcbiAgICAgICAgZXJyb3JGb3JTZWNvbmRSZW5kZXIgPSBuZXcgRXJyb3JSZXNwb25zZUltcGwoXG4gICAgICAgICAgZXJyb3Iuc3RhdHVzLFxuICAgICAgICAgIGVycm9yLnN0YXR1c1RleHQsXG4gICAgICAgICAgZGF0YTJcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIH1cbiAgICB9XG4gICAgY29udGV4dCA9IGdldFN0YXRpY0NvbnRleHRGcm9tRXJyb3IoXG4gICAgICBzdGF0aWNIYW5kbGVyLmRhdGFSb3V0ZXMsXG4gICAgICBjb250ZXh0LFxuICAgICAgZXJyb3JGb3JTZWNvbmRSZW5kZXJcbiAgICApO1xuICAgIGlmIChjb250ZXh0LmVycm9ycykge1xuICAgICAgY29udGV4dC5lcnJvcnMgPSBzYW5pdGl6ZUVycm9ycyhjb250ZXh0LmVycm9ycywgc2VydmVyTW9kZSk7XG4gICAgfVxuICAgIGxldCBzdGF0ZTIgPSB7XG4gICAgICBsb2FkZXJEYXRhOiBjb250ZXh0LmxvYWRlckRhdGEsXG4gICAgICBhY3Rpb25EYXRhOiBjb250ZXh0LmFjdGlvbkRhdGEsXG4gICAgICBlcnJvcnM6IHNlcmlhbGl6ZUVycm9yczIoY29udGV4dC5lcnJvcnMsIHNlcnZlck1vZGUpXG4gICAgfTtcbiAgICBlbnRyeUNvbnRleHQgPSB7XG4gICAgICAuLi5lbnRyeUNvbnRleHQsXG4gICAgICBzdGF0aWNIYW5kbGVyQ29udGV4dDogY29udGV4dCxcbiAgICAgIHNlcnZlckhhbmRvZmZTdHJpbmc6IGNyZWF0ZVNlcnZlckhhbmRvZmZTdHJpbmcoe1xuICAgICAgICBiYXNlbmFtZTogYnVpbGQuYmFzZW5hbWUsXG4gICAgICAgIGZ1dHVyZTogYnVpbGQuZnV0dXJlLFxuICAgICAgICBpc1NwYU1vZGU6IGJ1aWxkLmlzU3BhTW9kZVxuICAgICAgfSksXG4gICAgICBzZXJ2ZXJIYW5kb2ZmU3RyZWFtOiBlbmNvZGVWaWFUdXJib1N0cmVhbShcbiAgICAgICAgc3RhdGUyLFxuICAgICAgICByZXF1ZXN0LnNpZ25hbCxcbiAgICAgICAgYnVpbGQuZW50cnkubW9kdWxlLnN0cmVhbVRpbWVvdXQsXG4gICAgICAgIHNlcnZlck1vZGVcbiAgICAgICksXG4gICAgICByZW5kZXJNZXRhOiB7fVxuICAgIH07XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBoYW5kbGVEb2N1bWVudFJlcXVlc3RGdW5jdGlvbihcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgY29udGV4dC5zdGF0dXNDb2RlLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgICBlbnRyeUNvbnRleHQsXG4gICAgICAgIGxvYWRDb250ZXh0XG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yMikge1xuICAgICAgaGFuZGxlRXJyb3IoZXJyb3IyKTtcbiAgICAgIHJldHVybiByZXR1cm5MYXN0UmVzb3J0RXJyb3JSZXNwb25zZShlcnJvcjIsIHNlcnZlck1vZGUpO1xuICAgIH1cbiAgfVxufVxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlUmVzb3VyY2VSZXF1ZXN0KHNlcnZlck1vZGUsIHN0YXRpY0hhbmRsZXIsIHJvdXRlSWQsIHJlcXVlc3QsIGxvYWRDb250ZXh0LCBoYW5kbGVFcnJvcikge1xuICB0cnkge1xuICAgIGxldCByZXNwb25zZSA9IGF3YWl0IHN0YXRpY0hhbmRsZXIucXVlcnlSb3V0ZShyZXF1ZXN0LCB7XG4gICAgICByb3V0ZUlkLFxuICAgICAgcmVxdWVzdENvbnRleHQ6IGxvYWRDb250ZXh0XG4gICAgfSk7XG4gICAgaW52YXJpYW50MyhcbiAgICAgIGlzUmVzcG9uc2UocmVzcG9uc2UpLFxuICAgICAgXCJFeHBlY3RlZCBhIFJlc3BvbnNlIHRvIGJlIHJldHVybmVkIGZyb20gcmVzb3VyY2Ugcm91dGUgaGFuZGxlclwiXG4gICAgKTtcbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGlzUmVzcG9uc2UoZXJyb3IpKSB7XG4gICAgICBlcnJvci5oZWFkZXJzLnNldChcIlgtUmVtaXgtQ2F0Y2hcIiwgXCJ5ZXNcIik7XG4gICAgICByZXR1cm4gZXJyb3I7XG4gICAgfVxuICAgIGlmIChpc1JvdXRlRXJyb3JSZXNwb25zZShlcnJvcikpIHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gZXJyb3JSZXNwb25zZVRvSnNvbihlcnJvciwgc2VydmVyTW9kZSk7XG4gICAgfVxuICAgIGhhbmRsZUVycm9yKGVycm9yKTtcbiAgICByZXR1cm4gcmV0dXJuTGFzdFJlc29ydEVycm9yUmVzcG9uc2UoZXJyb3IsIHNlcnZlck1vZGUpO1xuICB9XG59XG5mdW5jdGlvbiBlcnJvclJlc3BvbnNlVG9Kc29uKGVycm9yUmVzcG9uc2UsIHNlcnZlck1vZGUpIHtcbiAgcmV0dXJuIFJlc3BvbnNlLmpzb24oXG4gICAgc2VyaWFsaXplRXJyb3IoXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRoaXMgaXMgXCJwcml2YXRlXCIgZnJvbSB1c2VycyBidXQgaW50ZW5kZWQgZm9yIGludGVybmFsIHVzZVxuICAgICAgZXJyb3JSZXNwb25zZS5lcnJvciB8fCBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIFNlcnZlciBFcnJvclwiKSxcbiAgICAgIHNlcnZlck1vZGVcbiAgICApLFxuICAgIHtcbiAgICAgIHN0YXR1czogZXJyb3JSZXNwb25zZS5zdGF0dXMsXG4gICAgICBzdGF0dXNUZXh0OiBlcnJvclJlc3BvbnNlLnN0YXR1c1RleHQsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiWC1SZW1peC1FcnJvclwiOiBcInllc1wiXG4gICAgICB9XG4gICAgfVxuICApO1xufVxuZnVuY3Rpb24gcmV0dXJuTGFzdFJlc29ydEVycm9yUmVzcG9uc2UoZXJyb3IsIHNlcnZlck1vZGUpIHtcbiAgbGV0IG1lc3NhZ2UgPSBcIlVuZXhwZWN0ZWQgU2VydmVyIEVycm9yXCI7XG4gIGlmIChzZXJ2ZXJNb2RlICE9PSBcInByb2R1Y3Rpb25cIiAvKiBQcm9kdWN0aW9uICovKSB7XG4gICAgbWVzc2FnZSArPSBgXG5cbiR7U3RyaW5nKGVycm9yKX1gO1xuICB9XG4gIHJldHVybiBuZXcgUmVzcG9uc2UobWVzc2FnZSwge1xuICAgIHN0YXR1czogNTAwLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwidGV4dC9wbGFpblwiXG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIHVud3JhcFJlc3BvbnNlKHJlc3BvbnNlKSB7XG4gIGxldCBjb250ZW50VHlwZSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KFwiQ29udGVudC1UeXBlXCIpO1xuICByZXR1cm4gY29udGVudFR5cGUgJiYgL1xcYmFwcGxpY2F0aW9uXFwvanNvblxcYi8udGVzdChjb250ZW50VHlwZSkgPyByZXNwb25zZS5ib2R5ID09IG51bGwgPyBudWxsIDogcmVzcG9uc2UuanNvbigpIDogcmVzcG9uc2UudGV4dCgpO1xufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvc2Vzc2lvbnMudHNcbmZ1bmN0aW9uIGZsYXNoKG5hbWUpIHtcbiAgcmV0dXJuIGBfX2ZsYXNoXyR7bmFtZX1fX2A7XG59XG52YXIgY3JlYXRlU2Vzc2lvbiA9IChpbml0aWFsRGF0YSA9IHt9LCBpZCA9IFwiXCIpID0+IHtcbiAgbGV0IG1hcCA9IG5ldyBNYXAoT2JqZWN0LmVudHJpZXMoaW5pdGlhbERhdGEpKTtcbiAgcmV0dXJuIHtcbiAgICBnZXQgaWQoKSB7XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfSxcbiAgICBnZXQgZGF0YSgpIHtcbiAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMobWFwKTtcbiAgICB9LFxuICAgIGhhcyhuYW1lKSB7XG4gICAgICByZXR1cm4gbWFwLmhhcyhuYW1lKSB8fCBtYXAuaGFzKGZsYXNoKG5hbWUpKTtcbiAgICB9LFxuICAgIGdldChuYW1lKSB7XG4gICAgICBpZiAobWFwLmhhcyhuYW1lKSkgcmV0dXJuIG1hcC5nZXQobmFtZSk7XG4gICAgICBsZXQgZmxhc2hOYW1lID0gZmxhc2gobmFtZSk7XG4gICAgICBpZiAobWFwLmhhcyhmbGFzaE5hbWUpKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IG1hcC5nZXQoZmxhc2hOYW1lKTtcbiAgICAgICAgbWFwLmRlbGV0ZShmbGFzaE5hbWUpO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH0sXG4gICAgc2V0KG5hbWUsIHZhbHVlKSB7XG4gICAgICBtYXAuc2V0KG5hbWUsIHZhbHVlKTtcbiAgICB9LFxuICAgIGZsYXNoKG5hbWUsIHZhbHVlKSB7XG4gICAgICBtYXAuc2V0KGZsYXNoKG5hbWUpLCB2YWx1ZSk7XG4gICAgfSxcbiAgICB1bnNldChuYW1lKSB7XG4gICAgICBtYXAuZGVsZXRlKG5hbWUpO1xuICAgIH1cbiAgfTtcbn07XG52YXIgaXNTZXNzaW9uID0gKG9iamVjdCkgPT4ge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgdHlwZW9mIG9iamVjdC5pZCA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2Ygb2JqZWN0LmRhdGEgIT09IFwidW5kZWZpbmVkXCIgJiYgdHlwZW9mIG9iamVjdC5oYXMgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygb2JqZWN0LmdldCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBvYmplY3Quc2V0ID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIG9iamVjdC5mbGFzaCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBvYmplY3QudW5zZXQgPT09IFwiZnVuY3Rpb25cIjtcbn07XG5mdW5jdGlvbiBjcmVhdGVTZXNzaW9uU3RvcmFnZSh7XG4gIGNvb2tpZTogY29va2llQXJnLFxuICBjcmVhdGVEYXRhLFxuICByZWFkRGF0YSxcbiAgdXBkYXRlRGF0YSxcbiAgZGVsZXRlRGF0YVxufSkge1xuICBsZXQgY29va2llID0gaXNDb29raWUoY29va2llQXJnKSA/IGNvb2tpZUFyZyA6IGNyZWF0ZUNvb2tpZShjb29raWVBcmc/Lm5hbWUgfHwgXCJfX3Nlc3Npb25cIiwgY29va2llQXJnKTtcbiAgd2Fybk9uY2VBYm91dFNpZ25pbmdTZXNzaW9uQ29va2llKGNvb2tpZSk7XG4gIHJldHVybiB7XG4gICAgYXN5bmMgZ2V0U2Vzc2lvbihjb29raWVIZWFkZXIsIG9wdGlvbnMpIHtcbiAgICAgIGxldCBpZCA9IGNvb2tpZUhlYWRlciAmJiBhd2FpdCBjb29raWUucGFyc2UoY29va2llSGVhZGVyLCBvcHRpb25zKTtcbiAgICAgIGxldCBkYXRhMiA9IGlkICYmIGF3YWl0IHJlYWREYXRhKGlkKTtcbiAgICAgIHJldHVybiBjcmVhdGVTZXNzaW9uKGRhdGEyIHx8IHt9LCBpZCB8fCBcIlwiKTtcbiAgICB9LFxuICAgIGFzeW5jIGNvbW1pdFNlc3Npb24oc2Vzc2lvbiwgb3B0aW9ucykge1xuICAgICAgbGV0IHsgaWQsIGRhdGE6IGRhdGEyIH0gPSBzZXNzaW9uO1xuICAgICAgbGV0IGV4cGlyZXMgPSBvcHRpb25zPy5tYXhBZ2UgIT0gbnVsbCA/IG5ldyBEYXRlKERhdGUubm93KCkgKyBvcHRpb25zLm1heEFnZSAqIDFlMykgOiBvcHRpb25zPy5leHBpcmVzICE9IG51bGwgPyBvcHRpb25zLmV4cGlyZXMgOiBjb29raWUuZXhwaXJlcztcbiAgICAgIGlmIChpZCkge1xuICAgICAgICBhd2FpdCB1cGRhdGVEYXRhKGlkLCBkYXRhMiwgZXhwaXJlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZCA9IGF3YWl0IGNyZWF0ZURhdGEoZGF0YTIsIGV4cGlyZXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvb2tpZS5zZXJpYWxpemUoaWQsIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgYXN5bmMgZGVzdHJveVNlc3Npb24oc2Vzc2lvbiwgb3B0aW9ucykge1xuICAgICAgYXdhaXQgZGVsZXRlRGF0YShzZXNzaW9uLmlkKTtcbiAgICAgIHJldHVybiBjb29raWUuc2VyaWFsaXplKFwiXCIsIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgbWF4QWdlOiB2b2lkIDAsXG4gICAgICAgIGV4cGlyZXM6IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgwKVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuZnVuY3Rpb24gd2Fybk9uY2VBYm91dFNpZ25pbmdTZXNzaW9uQ29va2llKGNvb2tpZSkge1xuICB3YXJuT25jZShcbiAgICBjb29raWUuaXNTaWduZWQsXG4gICAgYFRoZSBcIiR7Y29va2llLm5hbWV9XCIgY29va2llIGlzIG5vdCBzaWduZWQsIGJ1dCBzZXNzaW9uIGNvb2tpZXMgc2hvdWxkIGJlIHNpZ25lZCB0byBwcmV2ZW50IHRhbXBlcmluZyBvbiB0aGUgY2xpZW50IGJlZm9yZSB0aGV5IGFyZSBzZW50IGJhY2sgdG8gdGhlIHNlcnZlci4gU2VlIGh0dHBzOi8vcmVtaXgucnVuL3V0aWxzL2Nvb2tpZXMjc2lnbmluZy1jb29raWVzIGZvciBtb3JlIGluZm9ybWF0aW9uLmBcbiAgKTtcbn1cblxuLy8gbGliL3NlcnZlci1ydW50aW1lL3Nlc3Npb25zL2Nvb2tpZVN0b3JhZ2UudHNcbmZ1bmN0aW9uIGNyZWF0ZUNvb2tpZVNlc3Npb25TdG9yYWdlKHsgY29va2llOiBjb29raWVBcmcgfSA9IHt9KSB7XG4gIGxldCBjb29raWUgPSBpc0Nvb2tpZShjb29raWVBcmcpID8gY29va2llQXJnIDogY3JlYXRlQ29va2llKGNvb2tpZUFyZz8ubmFtZSB8fCBcIl9fc2Vzc2lvblwiLCBjb29raWVBcmcpO1xuICB3YXJuT25jZUFib3V0U2lnbmluZ1Nlc3Npb25Db29raWUoY29va2llKTtcbiAgcmV0dXJuIHtcbiAgICBhc3luYyBnZXRTZXNzaW9uKGNvb2tpZUhlYWRlciwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIGNyZWF0ZVNlc3Npb24oXG4gICAgICAgIGNvb2tpZUhlYWRlciAmJiBhd2FpdCBjb29raWUucGFyc2UoY29va2llSGVhZGVyLCBvcHRpb25zKSB8fCB7fVxuICAgICAgKTtcbiAgICB9LFxuICAgIGFzeW5jIGNvbW1pdFNlc3Npb24oc2Vzc2lvbiwgb3B0aW9ucykge1xuICAgICAgbGV0IHNlcmlhbGl6ZWRDb29raWUgPSBhd2FpdCBjb29raWUuc2VyaWFsaXplKHNlc3Npb24uZGF0YSwgb3B0aW9ucyk7XG4gICAgICBpZiAoc2VyaWFsaXplZENvb2tpZS5sZW5ndGggPiA0MDk2KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcIkNvb2tpZSBsZW5ndGggd2lsbCBleGNlZWQgYnJvd3NlciBtYXhpbXVtLiBMZW5ndGg6IFwiICsgc2VyaWFsaXplZENvb2tpZS5sZW5ndGhcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZXJpYWxpemVkQ29va2llO1xuICAgIH0sXG4gICAgYXN5bmMgZGVzdHJveVNlc3Npb24oX3Nlc3Npb24sIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBjb29raWUuc2VyaWFsaXplKFwiXCIsIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgbWF4QWdlOiB2b2lkIDAsXG4gICAgICAgIGV4cGlyZXM6IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgwKVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuXG4vLyBsaWIvc2VydmVyLXJ1bnRpbWUvc2Vzc2lvbnMvbWVtb3J5U3RvcmFnZS50c1xuZnVuY3Rpb24gY3JlYXRlTWVtb3J5U2Vzc2lvblN0b3JhZ2UoeyBjb29raWUgfSA9IHt9KSB7XG4gIGxldCBtYXAgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICByZXR1cm4gY3JlYXRlU2Vzc2lvblN0b3JhZ2Uoe1xuICAgIGNvb2tpZSxcbiAgICBhc3luYyBjcmVhdGVEYXRhKGRhdGEyLCBleHBpcmVzKSB7XG4gICAgICBsZXQgaWQgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgMTApO1xuICAgICAgbWFwLnNldChpZCwgeyBkYXRhOiBkYXRhMiwgZXhwaXJlcyB9KTtcbiAgICAgIHJldHVybiBpZDtcbiAgICB9LFxuICAgIGFzeW5jIHJlYWREYXRhKGlkKSB7XG4gICAgICBpZiAobWFwLmhhcyhpZCkpIHtcbiAgICAgICAgbGV0IHsgZGF0YTogZGF0YTIsIGV4cGlyZXMgfSA9IG1hcC5nZXQoaWQpO1xuICAgICAgICBpZiAoIWV4cGlyZXMgfHwgZXhwaXJlcyA+IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpKSB7XG4gICAgICAgICAgcmV0dXJuIGRhdGEyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChleHBpcmVzKSBtYXAuZGVsZXRlKGlkKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gICAgYXN5bmMgdXBkYXRlRGF0YShpZCwgZGF0YTIsIGV4cGlyZXMpIHtcbiAgICAgIG1hcC5zZXQoaWQsIHsgZGF0YTogZGF0YTIsIGV4cGlyZXMgfSk7XG4gICAgfSxcbiAgICBhc3luYyBkZWxldGVEYXRhKGlkKSB7XG4gICAgICBtYXAuZGVsZXRlKGlkKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vLyBsaWIvZG9tL3Nzci9lcnJvcnMudHNcbmZ1bmN0aW9uIGRlc2VyaWFsaXplRXJyb3JzMihlcnJvcnMpIHtcbiAgaWYgKCFlcnJvcnMpIHJldHVybiBudWxsO1xuICBsZXQgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKGVycm9ycyk7XG4gIGxldCBzZXJpYWxpemVkID0ge307XG4gIGZvciAobGV0IFtrZXksIHZhbF0gb2YgZW50cmllcykge1xuICAgIGlmICh2YWwgJiYgdmFsLl9fdHlwZSA9PT0gXCJSb3V0ZUVycm9yUmVzcG9uc2VcIikge1xuICAgICAgc2VyaWFsaXplZFtrZXldID0gbmV3IEVycm9yUmVzcG9uc2VJbXBsKFxuICAgICAgICB2YWwuc3RhdHVzLFxuICAgICAgICB2YWwuc3RhdHVzVGV4dCxcbiAgICAgICAgdmFsLmRhdGEsXG4gICAgICAgIHZhbC5pbnRlcm5hbCA9PT0gdHJ1ZVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHZhbCAmJiB2YWwuX190eXBlID09PSBcIkVycm9yXCIpIHtcbiAgICAgIGlmICh2YWwuX19zdWJUeXBlKSB7XG4gICAgICAgIGxldCBFcnJvckNvbnN0cnVjdG9yID0gd2luZG93W3ZhbC5fX3N1YlR5cGVdO1xuICAgICAgICBpZiAodHlwZW9mIEVycm9yQ29uc3RydWN0b3IgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgZXJyb3IgPSBuZXcgRXJyb3JDb25zdHJ1Y3Rvcih2YWwubWVzc2FnZSk7XG4gICAgICAgICAgICBlcnJvci5zdGFjayA9IHZhbC5zdGFjaztcbiAgICAgICAgICAgIHNlcmlhbGl6ZWRba2V5XSA9IGVycm9yO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzZXJpYWxpemVkW2tleV0gPT0gbnVsbCkge1xuICAgICAgICBsZXQgZXJyb3IgPSBuZXcgRXJyb3IodmFsLm1lc3NhZ2UpO1xuICAgICAgICBlcnJvci5zdGFjayA9IHZhbC5zdGFjaztcbiAgICAgICAgc2VyaWFsaXplZFtrZXldID0gZXJyb3I7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlcmlhbGl6ZWRba2V5XSA9IHZhbDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHNlcmlhbGl6ZWQ7XG59XG5cbmV4cG9ydCB7XG4gIEFjdGlvbixcbiAgY3JlYXRlQnJvd3Nlckhpc3RvcnksXG4gIGludmFyaWFudCxcbiAgY3JlYXRlUGF0aCxcbiAgcGFyc2VQYXRoLFxuICBtYXRjaFJvdXRlcyxcbiAgZ2VuZXJhdGVQYXRoLFxuICBtYXRjaFBhdGgsXG4gIHJlc29sdmVQYXRoLFxuICBkYXRhLFxuICByZWRpcmVjdCxcbiAgcmVkaXJlY3REb2N1bWVudCxcbiAgcmVwbGFjZSxcbiAgRXJyb3JSZXNwb25zZUltcGwsXG4gIGlzUm91dGVFcnJvclJlc3BvbnNlLFxuICBJRExFX05BVklHQVRJT04sXG4gIElETEVfRkVUQ0hFUixcbiAgSURMRV9CTE9DS0VSLFxuICBjcmVhdGVSb3V0ZXIsXG4gIERhdGFSb3V0ZXJDb250ZXh0LFxuICBEYXRhUm91dGVyU3RhdGVDb250ZXh0LFxuICBWaWV3VHJhbnNpdGlvbkNvbnRleHQsXG4gIEZldGNoZXJzQ29udGV4dCxcbiAgTmF2aWdhdGlvbkNvbnRleHQsXG4gIExvY2F0aW9uQ29udGV4dCxcbiAgUm91dGVDb250ZXh0LFxuICB1c2VIcmVmLFxuICB1c2VJblJvdXRlckNvbnRleHQsXG4gIHVzZUxvY2F0aW9uLFxuICB1c2VOYXZpZ2F0aW9uVHlwZSxcbiAgdXNlTWF0Y2gsXG4gIHVzZU5hdmlnYXRlLFxuICB1c2VPdXRsZXRDb250ZXh0LFxuICB1c2VPdXRsZXQsXG4gIHVzZVBhcmFtcyxcbiAgdXNlUmVzb2x2ZWRQYXRoLFxuICB1c2VSb3V0ZXMsXG4gIHVzZU5hdmlnYXRpb24sXG4gIHVzZVJldmFsaWRhdG9yLFxuICB1c2VNYXRjaGVzLFxuICB1c2VMb2FkZXJEYXRhLFxuICB1c2VSb3V0ZUxvYWRlckRhdGEsXG4gIHVzZUFjdGlvbkRhdGEsXG4gIHVzZVJvdXRlRXJyb3IsXG4gIHVzZUFzeW5jVmFsdWUsXG4gIHVzZUFzeW5jRXJyb3IsXG4gIHVzZUJsb2NrZXIsXG4gIG1hcFJvdXRlUHJvcGVydGllcyxcbiAgY3JlYXRlTWVtb3J5Um91dGVyLFxuICBSb3V0ZXJQcm92aWRlcixcbiAgTWVtb3J5Um91dGVyLFxuICBOYXZpZ2F0ZSxcbiAgT3V0bGV0LFxuICBSb3V0ZSxcbiAgUm91dGVyLFxuICBSb3V0ZXMsXG4gIEF3YWl0LFxuICBjcmVhdGVSb3V0ZXNGcm9tQ2hpbGRyZW4sXG4gIGNyZWF0ZVJvdXRlc0Zyb21FbGVtZW50cyxcbiAgcmVuZGVyTWF0Y2hlcyxcbiAgY3JlYXRlU2VhcmNoUGFyYW1zLFxuICBTaW5nbGVGZXRjaFJlZGlyZWN0U3ltYm9sLFxuICBnZXRTaW5nbGVGZXRjaERhdGFTdHJhdGVneSxcbiAgZGVjb2RlVmlhVHVyYm9TdHJlYW0sXG4gIFJlbWl4RXJyb3JCb3VuZGFyeSxcbiAgY3JlYXRlQ2xpZW50Um91dGVzV2l0aEhNUlJldmFsaWRhdGlvbk9wdE91dCxcbiAgY3JlYXRlQ2xpZW50Um91dGVzLFxuICBzaG91bGRIeWRyYXRlUm91dGVMb2FkZXIsXG4gIGdldFBhdGNoUm91dGVzT25OYXZpZ2F0aW9uRnVuY3Rpb24sXG4gIHVzZUZvZ09GV2FyRGlzY292ZXJ5LFxuICBGcmFtZXdvcmtDb250ZXh0LFxuICBMaW5rcyxcbiAgUHJlZmV0Y2hQYWdlTGlua3MsXG4gIE1ldGEsXG4gIFNjcmlwdHMsXG4gIGNyZWF0ZUJyb3dzZXJSb3V0ZXIsXG4gIGNyZWF0ZUhhc2hSb3V0ZXIsXG4gIEJyb3dzZXJSb3V0ZXIsXG4gIEhhc2hSb3V0ZXIsXG4gIEhpc3RvcnlSb3V0ZXIsXG4gIExpbmssXG4gIE5hdkxpbmssXG4gIEZvcm0sXG4gIFNjcm9sbFJlc3RvcmF0aW9uLFxuICB1c2VMaW5rQ2xpY2tIYW5kbGVyLFxuICB1c2VTZWFyY2hQYXJhbXMsXG4gIHVzZVN1Ym1pdCxcbiAgdXNlRm9ybUFjdGlvbixcbiAgdXNlRmV0Y2hlcixcbiAgdXNlRmV0Y2hlcnMsXG4gIHVzZVNjcm9sbFJlc3RvcmF0aW9uLFxuICB1c2VCZWZvcmVVbmxvYWQsXG4gIHVzZVByb21wdCxcbiAgdXNlVmlld1RyYW5zaXRpb25TdGF0ZSxcbiAgU3RhdGljUm91dGVyLFxuICBTdGF0aWNSb3V0ZXJQcm92aWRlcixcbiAgY3JlYXRlU3RhdGljSGFuZGxlcjIgYXMgY3JlYXRlU3RhdGljSGFuZGxlcixcbiAgY3JlYXRlU3RhdGljUm91dGVyLFxuICBTZXJ2ZXJSb3V0ZXIsXG4gIGNyZWF0ZVJvdXRlc1N0dWIsXG4gIGNyZWF0ZUNvb2tpZSxcbiAgaXNDb29raWUsXG4gIFNlcnZlck1vZGUsXG4gIHNldERldlNlcnZlckhvb2tzLFxuICBjcmVhdGVSZXF1ZXN0SGFuZGxlcixcbiAgY3JlYXRlU2Vzc2lvbixcbiAgaXNTZXNzaW9uLFxuICBjcmVhdGVTZXNzaW9uU3RvcmFnZSxcbiAgY3JlYXRlQ29va2llU2Vzc2lvblN0b3JhZ2UsXG4gIGNyZWF0ZU1lbW9yeVNlc3Npb25TdG9yYWdlLFxuICBkZXNlcmlhbGl6ZUVycm9yczIgYXMgZGVzZXJpYWxpemVFcnJvcnNcbn07XG4iLCJpbXBvcnQgeyBBc3luY1BhZ2luYXRlIH0gZnJvbSBcInJlYWN0LXNlbGVjdC1hc3luYy1wYWdpbmF0ZVwiXG5pbXBvcnQgU2hpcHBpbmdTZXJ2aWNlIGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zaGlwcGluZ1wiXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHtTaG9wfSBmcm9tIFwiLi4vLi4vbW9kZWwvc2hvcFwiXG5pbXBvcnQge2NvbnRhaW5lcn0gZnJvbSBcInRzeXJpbmdlLW5lb1wiXG5pbXBvcnQgT3JkZXJTdGF0ZSBmcm9tIFwiLi4vLi4vc3RhdGUvb3JkZXJcIlxuaW1wb3J0IE9yZGVyIGZyb20gXCIuLi8uLi9tb2RlbC9vcmRlclwiXG5pbXBvcnQge3VzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IEluZm9GaWVsZENvbXBvbmVudCA9ICh7c2hvcCwgb3JkZXJ9KSA9PiB7XG5cbiAgICBjb25zdCBbYmFza2V0RmllbGQxLCBzZXRCYXNrZXRGaWVsZDFdID0gdXNlU3RhdGU8c3RyaW5nPihcIlwiKTtcbiAgICBjb25zdCBbYmFza2V0RmllbGQyLCBzZXRCYXNrZXRGaWVsZDJdID0gdXNlU3RhdGU8c3RyaW5nPihcIlwiKTtcblxuICAgIGNvbnN0IG9yZGVyU3RhdGUgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclN0YXRlKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNldEJhc2tldEZpZWxkMShvcmRlci5iYXNrZXRGaWVsZDEpXG4gICAgICAgIHNldEJhc2tldEZpZWxkMihvcmRlci5iYXNrZXRGaWVsZDEpXG4gICAgfSwgW29yZGVyLmJhc2tldEZpZWxkMSwgb3JkZXIuYmFza2V0RmllbGQyXSlcblxuICAgIGNvbnN0IGNoYW5nZUJhc2tldEZpZWxkMSA9ICh2YWx1ZSkgPT4ge1xuICAgICAgICBsZXQgb3JkZXJPYmogPSBvcmRlclN0YXRlLmdldEN1cnJlbnRPcmRlcigpLmdldFZhbHVlKClcbiAgICAgICAgb3JkZXJPYmouYmFza2V0RmllbGQxID0gdmFsdWVcbiAgICAgICAgb3JkZXJTdGF0ZS5zZXRDdXJyZW50T3JkZXIob3JkZXJPYmopXG4gICAgICAgIHNldEJhc2tldEZpZWxkMSh2YWx1ZSlcbiAgICB9XG5cbiAgICBjb25zdCBjaGFuZ2VCYXNrZXRGaWVsZDIgPSAodmFsdWUpID0+IHtcbiAgICAgICAgbGV0IG9yZGVyT2JqID0gb3JkZXJTdGF0ZS5nZXRDdXJyZW50T3JkZXIoKS5nZXRWYWx1ZSgpXG4gICAgICAgIG9yZGVyT2JqLmJhc2tldEZpZWxkMiA9IHZhbHVlXG4gICAgICAgIG9yZGVyU3RhdGUuc2V0Q3VycmVudE9yZGVyKG9yZGVyT2JqKVxuICAgICAgICBzZXRCYXNrZXRGaWVsZDIodmFsdWUpXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcImZsZXhcIn0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wiZmxleC0xXCJ9PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nZmxleCBnYXAtMSc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiYmFza2V0RmllbGQxXCIgdmFsdWU9e2Jhc2tldEZpZWxkMX0gb25DaGFuZ2U9eyBlID0+IGNoYW5nZUJhc2tldEZpZWxkMShlLnRhcmdldC52YWx1ZSl9IGNsYXNzTmFtZT17XCJiZy1ncmF5LTUwIGJvcmRlciBib3JkZXItZ3JheS0zMDAgdGV4dC1ncmF5LTkwMCB0ZXh0LXNtIHJvdW5kZWQtbGcgZm9jdXM6cmluZy1ibHVlLTUwMCBmb2N1czpib3JkZXItYmx1ZS01MDAgYmxvY2sgdy1mdWxsIHAtMi41IGRhcms6YmctZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpwbGFjZWhvbGRlci1ncmF5LTQwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLWJsdWUtNTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWJsdWUtNTAwXCJ9IHBsYWNlaG9sZGVyPXtcIkluZm8gMVwifSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPntzaG9wLmJhc2tldEZpZWxkMX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJmbGV4LTFcIn0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdmbGV4IGdhcC0xJz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJiYXNrZXRGaWVsZDJcIiB2YWx1ZT17YmFza2V0RmllbGQyfSBvbkNoYW5nZT17ZSA9PiBjaGFuZ2VCYXNrZXRGaWVsZDIoZS50YXJnZXQudmFsdWUpfSAgY2xhc3NOYW1lPXtcImJnLWdyYXktNTAgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCB0ZXh0LWdyYXktOTAwIHRleHQtc20gcm91bmRlZC1sZyBmb2N1czpyaW5nLWJsdWUtNTAwIGZvY3VzOmJvcmRlci1ibHVlLTUwMCBibG9jayB3LWZ1bGwgcC0yLjUgZGFyazpiZy1ncmF5LTcwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOnBsYWNlaG9sZGVyLWdyYXktNDAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOnJpbmctYmx1ZS01MDAgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIn0gcGxhY2Vob2xkZXI9e1wiSW5mbyAyXCJ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3Nob3AuYmFza2V0RmllbGQyfTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4pO1xufVxuXG5JbmZvRmllbGRDb21wb25lbnQucHJvcFR5cGVzID0ge1xuICAgIG9yZGVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihPcmRlciksXG4gICAgc2hvcDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2hvcCksXG59O1xuXG5leHBvcnQgZGVmYXVsdCBJbmZvRmllbGRDb21wb25lbnQ7XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xyXG5pbXBvcnQgT3JkZXIgZnJvbSBcIi4uLy4uL21vZGVsL29yZGVyXCI7XHJcblxyXG5jb25zdCBPcmRlckFsaWFzQ29tcG9uZW50ID0gKHtvcmRlcn0pID0+IHtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcIm0tMSBwLTJcIn0+XHJcbiAgICAgICAgICAgIDxoND5OUjoge29yZGVyLmFsaWFzfTwvaDQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApOyAgXHJcbn1cclxuXHJcbk9yZGVyQWxpYXNDb21wb25lbnQucHJvcFR5cGVzID0ge1xyXG4gICAgb3JkZXI6IFByb3BUeXBlcy5pbnN0YW5jZU9mKE9yZGVyKSxcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IE9yZGVyQWxpYXNDb21wb25lbnQ7XHJcbiIsImltcG9ydCB7IFNob3AgfSBmcm9tICcuLi8uLi9tb2RlbC9zaG9wJ1xuaW1wb3J0IENvbnRhY3RDb21wb25lbnQgZnJvbSAnLi4vY29udGFjdC9Db250YWN0Q29tcG9uZW50J1xuaW1wb3J0IFRvcEJhckNvbXBvbmVudCBmcm9tICcuLi90b3BiYXIvVG9wQmFyQ29tcG9uZW50J1xuaW1wb3J0IFBvc2l0aW9uc0NvbXBvbmVudCBmcm9tICcuLi9wb3NpdGlvbnMvUG9zaXRpb25zQ29tcG9uZW50J1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCdcbmltcG9ydCBPcmRlciBmcm9tIFwiLi4vLi4vbW9kZWwvb3JkZXJcIlxuaW1wb3J0IFBheW1lbnRDb21wb25lbnQgZnJvbSBcIi4uL3BheW1lbnQvUGF5bWVudENvbXBvbmVudFwiXG5pbXBvcnQgU2hpcHBpbmdDb21wb25lbnQgZnJvbSBcIi4uL3NoaXBwaW5nL1NoaXBwaW5nQ29tcG9uZW50XCJcbmltcG9ydCBCdXR0b25Db21wb25lbnQgZnJvbSBcIi4uL2J1dHRvbi9CdXR0b25Db21wb25lbnRcIlxuaW1wb3J0IHt1c2VQYXJhbXN9IGZyb20gXCJyZWFjdC1yb3V0ZXItZG9tXCJcbmltcG9ydCB7Y29udGFpbmVyfSBmcm9tIFwidHN5cmluZ2UtbmVvXCJcbmltcG9ydCBPcmRlclN0YXRlIGZyb20gXCIuLi8uLi9zdGF0ZS9vcmRlclwiXG5pbXBvcnQgT3JkZXJTZXJ2aWNlIGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9vcmRlclwiXG5pbXBvcnQgSW5mb0ZpZWxkQ29tcG9uZW50IGZyb20gXCIuLi9pbmZvL0luZm9GaWVsZENvbXBvbmVudFwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgT3JkZXJBbGlhc0NvbXBvbmVudCBmcm9tICcuLi9vcmRlci9PcmRlckFsaWFzQ29tcG9uZW50J1xuXG5jb25zdCBCYXNlQ29tcG9uZW50ID0gKHByb3BzKSA9PiB7XG5cbiAgICBjb25zdCBbc2hvcCwgc2V0U2hvcF0gPSB1c2VTdGF0ZTxTaG9wPihuZXcgU2hvcCgpKVxuICAgIGNvbnN0IFtvcmRlciwgc2V0T3JkZXJdID0gdXNlU3RhdGU8T3JkZXI+KG5ldyBPcmRlcigpKVxuXG4gICAgY29uc3Qgb3JkZXJfc3RhdGUgPSBjb250YWluZXIucmVzb2x2ZShPcmRlclN0YXRlKVxuICAgIGNvbnN0IG9yZGVyU2VydmljZSA9IGNvbnRhaW5lci5yZXNvbHZlKE9yZGVyU2VydmljZSlcbiAgICBjb25zdCBsb2FkT3JkZXIgPSBhc3luYyAodXVpZDogU3RyaW5nKSA9PiB7XG4gICAgICAgIG9yZGVyU2VydmljZS5nZXRPcmRlcih1dWlkKS50aGVuKChvcmRlck9iaikgPT4ge1xuICAgICAgICAgICAgb3JkZXJfc3RhdGUuc2V0Q3VycmVudE9yZGVyKG9yZGVyT2JqKVxuICAgICAgICAgICAgc2V0U2hvcChvcmRlck9iai5zaG9wKVxuICAgICAgICAgICAgc2V0T3JkZXIob3JkZXJPYmopXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgbGV0IHBhcmFtcyA9IHVzZVBhcmFtcygpXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZihwYXJhbXMudXVpZCkge1xuICAgICAgICAgICAgbG9hZE9yZGVyKHBhcmFtcy51dWlkKVxuICAgICAgICB9XG4gICAgfSwgW10pXG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8UmVhY3QuU3RyaWN0TW9kZT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtbC0xIG10LTEgbXItMSc+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0xIG10LTEgbWItMVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPE9yZGVyQWxpYXNDb21wb25lbnQgb3JkZXI9e29yZGVyfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25Db21wb25lbnQgbG9hZE9yZGVyPXtsb2FkT3JkZXJ9Lz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8VG9wQmFyQ29tcG9uZW50IHNob3A9e3Nob3B9IG9yZGVyPXtvcmRlcn0gY2hhbmdlPXtzZXRTaG9wfSAvPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMSBtYi0xXCI+eyBzaG9wLmlkICE9IDAgJiYgPENvbnRhY3RDb21wb25lbnQgc2hvcD17c2hvcH0gb3JkZXI9e29yZGVyfSAvPiB9PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdj57IHNob3AuaWQgIT0gMCAmJiA8UG9zaXRpb25zQ29tcG9uZW50IHNob3A9e3Nob3B9IG9yZGVyPXtvcmRlcn0gLz4gfTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMSBtYi0xIGZsZXggZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj57IHNob3AuaWQgIT0gMCAmJiA8UGF5bWVudENvbXBvbmVudCBzaG9wPXtzaG9wfSBvcmRlcj17b3JkZXJ9IC8+IH08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj57IHNob3AuaWQgIT0gMCAmJiA8U2hpcHBpbmdDb21wb25lbnQgc2hvcD17c2hvcH0gb3JkZXI9e29yZGVyfSAvPiB9PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgeyBzaG9wLmlkICE9IDAgJiYgPEluZm9GaWVsZENvbXBvbmVudCBzaG9wPXtzaG9wfSBvcmRlcj17b3JkZXJ9IC8+IH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L1JlYWN0LlN0cmljdE1vZGU+XG4gICAgKVxuICAgIFxufSBcblxuZXhwb3J0IGRlZmF1bHQgQmFzZUNvbXBvbmVudFxuIiwiaW1wb3J0ICogYXMgRXRhIGZyb20gJ2V0YSdcbmltcG9ydCBUb2tlbiBmcm9tICcuLi9zZXJ2aWNlcy90b2tlbidcbmltcG9ydCB7Y29udGFpbmVyfSBmcm9tIFwidHN5cmluZ2UtbmVvXCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20vY2xpZW50J1xuaW1wb3J0IE5pY2VNb2RhbCBmcm9tIFwiQGViYXkvbmljZS1tb2RhbC1yZWFjdFwiXG5pbXBvcnQgQmFzZUNvbXBvbmVudCBmcm9tICcuLi9tb2R1bGVzL2Jhc2UvQmFzZUNvbXBvbmVudCdcbmltcG9ydCB7Um91dGUsIEhhc2hSb3V0ZXIgYXMgUm91dGVyLCBSb3V0ZXMsIHVzZVNlYXJjaFBhcmFtc30gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIlxuXG5leHBvcnQgY2xhc3MgQXBwIHtcbiAgICBwcml2YXRlIHNlYXJjaFBhcmFtczogYW55XG4gICAgcHJpdmF0ZSBzZXRTZWFyY2hQYXJhbXM6IGFueVxuXG5cbiAgICBjb25zdHJ1Y3Rvcihqd3Q6IFN0cmluZykge1xuICAgICAgICBsZXQgdG9rZW4gPSBjb250YWluZXIucmVzb2x2ZShUb2tlbilcbiAgICAgICAgY29uc29sZS5sb2coand0KVxuICAgICAgICB0b2tlbi5jdXJyZW50VG9rZW4gPSBqd3RcbiAgICAgICAgdG9rZW4uaW5pdCgpXG4gICAgfVxuXG4gICAgaW5pdCgpOiB2b2lkIHtcblxuICAgICAgICB0aGlzLmJ1aWxkVWkoKVxuICAgIH1cblxuICAgIGJ1aWxkVWkoKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBSZWFjdERPTS5jcmVhdGVSb290KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290JykpXG5cbiAgICAgICAgcm9vdC5yZW5kZXIoXG4gICAgICAgICAgICA8TmljZU1vZGFsLlByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDxSb3V0ZXI+XG4gICAgICAgICAgICAgICAgICAgIDxSb3V0ZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9cIiBlbGVtZW50PXs8QmFzZUNvbXBvbmVudCAvPn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiLzp1dWlkXCIgZWxlbWVudD17PEJhc2VDb21wb25lbnQgLz59IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUm91dGVzPlxuICAgICAgICAgICAgICAgIDwvUm91dGVyPlxuICAgICAgICAgICAgPC9OaWNlTW9kYWwuUHJvdmlkZXI+XG4gICAgICAgIClcblxuICAgIH1cblxuICAgIHJ1bigpOiB2b2lkIHtcbiAgICAgICAgXG4gICAgXG4gICAgfVxufVxuIiwiaW1wb3J0IFwiLi9hc3NldHMvaW5kZXguY3NzXCJcbmltcG9ydCBcInJlZmxlY3QtbWV0YWRhdGFcIjtcbmltcG9ydCAqIGFzICQgZnJvbSBcImpxdWVyeVwiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4vYXBwL2FwcFwiO1xuXG5kZWNsYXJlIHZhciBqd3RfdG9rZW46IFN0cmluZztcbmxldCBhcHAgPSBuZXcgQXBwKGp3dF90b2tlbik7XG5hcHAuaW5pdCgpO1xuYXBwLnJ1bigpO1xuIl0sIm5hbWVzIjpbIlJlZmxlY3QiLCJnbG9iYWwiLCJfIiwiaGFzT3duIiwiX01hcCIsIl9TZXQiLCJfV2Vha01hcCIsImkiLCJPIiwiUCIsIm93bktleXMiLCJzZXQiLCJ4IiwidG9TdHJpbmdfMSIsInkiLCJWIiwiZiIsInByb3RvdHlwZSIsIm5leHQiLCJtZXRhZGF0YVJlZ2lzdHJ5IiwibWV0YWRhdGEiLCJPcmRpbmFyeURlZmluZU93bk1ldGFkYXRhIiwiT3JkaW5hcnlIYXNPd25NZXRhZGF0YSIsIk9yZGluYXJ5R2V0T3duTWV0YWRhdGEiLCJPcmRpbmFyeU93bk1ldGFkYXRhS2V5cyIsImsiLCJlIiwiZGVmaW5lTWV0YWRhdGEiLCJoYXNPd25NZXRhZGF0YSIsImdldE93bk1ldGFkYXRhIiwiZ2V0T3duTWV0YWRhdGFLZXlzIiwiZGVsZXRlTWV0YWRhdGEiLCJNYXBJdGVyYXRvciIsImluZGV4IiwiTWFwIiwic2l6ZSIsImdldFZhbHVlIiwiU2V0IiwiV2Vha01hcCIsImNyZWF0ZSIsImRhdGEiLCJvZmZzZXQiLCJsIiwibiIsInAiLCJxIiwiciIsInQiLCJ1IiwidiIsInciLCJ6IiwiQSIsImEiLCJCIiwiQyIsIkQiLCJFIiwiYiIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiZCIsImMiLCJoIiwiZyIsIm0iLCJOIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJXIiwiWCIsInJlYWN0TW9kdWxlIiwicmVxdWlyZSQkMCIsImpzeFJ1bnRpbWVNb2R1bGUiLCJiaW5kIiwiZ2V0UHJvdG90eXBlT2YiLCJjYWNoZSIsInR5cGUiLCJpc0FycmF5IiwiaXNCdWZmZXIiLCJpc0Z1bmN0aW9uIiwiaXNTdHJpbmciLCJpc051bWJlciIsImlzT2JqZWN0IiwiaXNQbGFpbk9iamVjdCIsInRyaW0iLCJtZXJnZSIsImluaGVyaXRzIiwiZGVzY3JpcHRvcnMiLCJmaWx0ZXIiLCJwb3NpdGlvbiIsIm1hdGNoZXMiLCJoYXNPd25Qcm9wZXJ0eSIsInJlZHVjZXIiLCJkZWxpbWl0ZXIiLCJub29wIiwibGVuZ3RoIiwidG9rZW4iLCJjb25maWciLCJ1dGlscyIsIm9wdGlvbnMiLCJlbmNvZGUiLCJtYXRjaCIsInRvU3RyaW5nIiwiVVJMU2VhcmNoUGFyYW1zIiwiRm9ybURhdGEiLCJCbG9iIiwicGxhdGZvcm0iLCJpc0Zvcm1EYXRhIiwiaXNGaWxlTGlzdCIsInRyYW5zaXRpb25hbCIsImxpbmUiLCJjaGFyIiwic2VsZiIsImZvcm1hdCIsInRyYW5zZm9ybSIsInZhbGlkYXRlU3RhdHVzIiwibWluIiwib3JpZ2luIiwic2lnbmFsIiwiZG9uZSIsInJlcyIsImFkYXB0ZXJzIiwicyIsInZhbGlkYXRvcnMiLCJ2YWxpZGF0b3IiLCJpbnN0YW5jZSIsImZyb20iLCJfX2RlY29yYXRlQ2xhc3MiLCJzY2hlZHVsZXJNb2R1bGUiLCJyZXF1aXJlJCQxIiwiYWUiLCJiZSIsImNlIiwiZGUiLCJlZSIsImZlIiwiZ2UiLCJoZSIsImllIiwiamUiLCJrZSIsImxlIiwibWUiLCJuZSIsIm9lIiwicGUiLCJxZSIsInJlIiwic2UiLCJ0ZSIsInVlIiwidmUiLCJ3ZSIsInhlIiwieWUiLCJ6ZSIsIkFlIiwiQmUiLCJDZSIsIkRlIiwiRWUiLCJGZSIsIkdlIiwiSGUiLCJJZSIsIkplIiwiS2UiLCJMZSIsIk1lIiwiTmUiLCJPZSIsIlBlIiwiUWUiLCJSZSIsIlNlIiwiVGUiLCJVZSIsIlZlIiwiV2UiLCJYZSIsIlplIiwiJGUiLCJZIiwiWiIsIk9rIiwicmVhY3REb21Nb2R1bGUiLCJfX2Fzc2lnbiIsIl9lIiwiaGlkZSIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VDYWxsYmFjayIsImFyZ3MiLCJ1c2VNZW1vIiwic2hvdyIsInVzZVJlZHVjZXIiLCJwcm9wVHlwZXNNb2R1bGUiLCJfdHlwZW9mIiwibyIsInRvUHJpbWl0aXZlIiwidG9Qcm9wZXJ0eUtleSIsIl9kZWZpbmVQcm9wZXJ0eSIsImRlZmluZVByb3BlcnR5IiwiYXJyYXlMaWtlVG9BcnJheSIsImFycmF5V2l0aEhvbGVzIiwiaXRlcmFibGVUb0FycmF5TGltaXQiLCJ1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIm5vbkl0ZXJhYmxlUmVzdCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwib2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsIl9leGNsdWRlZCIsIl9yZWYiLCJ1c2VTdGF0ZSIsIm9uQ2hhbmdlIiwidmFsdWUiLCJfb2JqZWN0U3ByZWFkIiwiX2V4dGVuZHMiLCJzZXRQcm90b3R5cGVPZiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJhc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJwb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiYXJyYXlXaXRob3V0SG9sZXMiLCJpdGVyYWJsZVRvQXJyYXkiLCJub25JdGVyYWJsZVNwcmVhZCIsImlzRGV2ZWxvcG1lbnQiLCJTdHlsZVNoZWV0IiwiTVMiLCJNT1oiLCJXRUJLSVQiLCJDT01NRU5UIiwiUlVMRVNFVCIsIkRFQ0xBUkFUSU9OIiwiSU1QT1JUIiwiS0VZRlJBTUVTIiwiTEFZRVIiLCJhYnMiLCJhc3NpZ24iLCJoYXNoIiwiY2hhcmF0IiwicGF0dGVybiIsInJlcGxhY2UiLCJpbmRleG9mIiwic3Vic3RyIiwic3RybGVuIiwic2l6ZW9mIiwiYXBwZW5kIiwiY29tYmluZSIsImNvbHVtbiIsImNoYXJhY3RlciIsImNoYXJhY3RlcnMiLCJub2RlIiwiY29weSIsInByZXYiLCJwZWVrIiwiY2FyZXQiLCJzbGljZSIsImFsbG9jIiwiZGVhbGxvYyIsImRlbGltaXQiLCJ3aGl0ZXNwYWNlIiwiZXNjYXBpbmciLCJjb3VudCIsImNvbW1lbnRlciIsImlkZW50aWZpZXIiLCJjb21waWxlIiwicGFyc2UiLCJydWxlcyIsImNvbW1lbnQiLCJkZWNsYXJhdGlvbiIsInJ1bGVzZXQiLCJqIiwic2VyaWFsaXplIiwic3RyaW5naWZ5IiwibWlkZGxld2FyZSIsInJ1bGVzaGVldCIsIndlYWtNZW1vaXplIiwiaWRlbnRpZmllcldpdGhQb2ludFRyYWNraW5nIiwidG9SdWxlcyIsImdldFJ1bGVzIiwiY29tcGF0IiwicmVtb3ZlTGFiZWwiLCJwcmVmaXgiLCJwcmVmaXhlciIsImNyZWF0ZUNhY2hlIiwic3R5bGlzIiwicmVhY3RJc19wcm9kdWN0aW9uX21pbiIsInJlYWN0SXNNb2R1bGUiLCJyZWFjdElzIiwiaG9pc3ROb25SZWFjdFN0YXRpY3MiLCJpc0Jyb3dzZXIiLCJjbGFzc05hbWVzIiwicmVnaXN0ZXJTdHlsZXMiLCJpbnNlcnRTdHlsZXMiLCJ1bml0bGVzc0tleXMiLCJpc0N1c3RvbVByb3BlcnR5IiwiaXNQcm9jZXNzYWJsZVZhbHVlIiwicHJvY2Vzc1N0eWxlVmFsdWUiLCJ1bml0bGVzcyIsImtleWZyYW1lcyIsImhhc2hTdHJpbmciLCJzeW5jRmFsbGJhY2siLCJ1c2VJbnNlcnRpb25FZmZlY3QiLCJSZWFjdCIsIlJlYWN0LnVzZUxheW91dEVmZmVjdCIsIlJlYWN0LmNyZWF0ZUNvbnRleHQiLCJ3aXRoRW1vdGlvbkNhY2hlIiwiZm9yd2FyZFJlZiIsInJlZiIsInVzZVRoZW1lIiwiUmVhY3QudXNlQ29udGV4dCIsImdldFRoZW1lIiwidGhlbWUiLCJUaGVtZVByb3ZpZGVyIiwiUmVhY3QuY3JlYXRlRWxlbWVudCIsIlJlYWN0LmZvcndhcmRSZWYiLCJjcmVhdGVFbW90aW9uUHJvcHMiLCJJbnNlcnRpb24iLCJSZWFjdC5GcmFnbWVudCIsImpzeCIsIkVtb3Rpb24iLCJSZWFjdC51c2VSZWYiLCJjbGFzc25hbWVzIiwiY3NzIiwiY3giLCJub29wJDEiLCJpbml0aWFsU3RhdGUiLCJjb21wdXRlUG9zaXRpb24iLCJkZXRlY3RPdmVyZmxvdyIsImFycm93IiwibWF4IiwiYXV0b1BsYWNlbWVudCIsImFsaWdubWVudCIsImZsaXAiLCJwbGFjZW1lbnRzIiwic2lkZXMiLCJzaWRlIiwicGxhY2VtZW50Iiwib3ZlcmZsb3ciLCJpbmxpbmUiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJ3aWR0aCIsImhlaWdodCIsInNoaWZ0IiwibGltaXRTaGlmdCIsImdldENvbXB1dGVkU3R5bGUiLCJnZXRDc3NEaW1lbnNpb25zIiwidW53cmFwRWxlbWVudCIsImdldFNjYWxlIiwiJCIsIm5vT2Zmc2V0cyIsImdldFZpc3VhbE9mZnNldHMiLCJzaG91bGRBZGRWaXN1YWxPZmZzZXRzIiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImdldEhUTUxPZmZzZXQiLCJjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCIsImdldENsaWVudFJlY3RzIiwiZ2V0RG9jdW1lbnRSZWN0IiwiZ2V0Vmlld3BvcnRSZWN0IiwiZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QiLCJnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IiLCJoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IiLCJnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMiLCJnZXRDbGlwcGluZ1JlY3QiLCJnZXREaW1lbnNpb25zIiwiZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQiLCJpc1N0YXRpY1Bvc2l0aW9uZWQiLCJnZXRUcnVlT2Zmc2V0UGFyZW50IiwicG9seWZpbGwiLCJnZXRPZmZzZXRQYXJlbnQiLCJnZXRFbGVtZW50UmVjdHMiLCJpc1JUTCIsIm9ic2VydmVNb3ZlIiwidGltZW91dElkIiwiYXV0b1VwZGF0ZSIsIm9mZnNldCQxIiwiYXV0b1BsYWNlbWVudCQxIiwic2hpZnQkMSIsImZsaXAkMSIsImFycm93JDEiLCJjb21wdXRlUG9zaXRpb24kMSIsInVzZUxheW91dEVmZmVjdCIsImNsZWFuVmFsdWUiLCJjbGVhbkNvbW1vblByb3BzIiwiZ2V0U3R5bGVQcm9wcyIsInJlbW92ZVByb3BzIiwicHJvcGVydGllcyIsIl9yZWYyIiwiY29udHJvbEhlaWdodCIsImNvZXJjZVBsYWNlbWVudCIsIm1lbnVDU1MiLCJfb2JqZWN0U3ByZWFkMiIsImJvcmRlclJhZGl1cyIsInNwYWNpbmciLCJjb2xvcnMiLCJNZW51UGxhY2VyIiwidXNlUmVmIiwiTWVudSIsIm1lbnVMaXN0Q1NTIiwiYmFzZVVuaXQiLCJNZW51TGlzdCIsIm5vdGljZUNTUyIsIk5vT3B0aW9uc01lc3NhZ2UiLCJMb2FkaW5nTWVzc2FnZSIsIm1lbnVQb3J0YWxDU1MiLCJNZW51UG9ydGFsIiwiY3JlYXRlUG9ydGFsIiwiY29udGFpbmVyQ1NTIiwiaXNEaXNhYmxlZCIsIlNlbGVjdENvbnRhaW5lciIsInZhbHVlQ29udGFpbmVyQ1NTIiwiVmFsdWVDb250YWluZXIiLCJpbmRpY2F0b3JzQ29udGFpbmVyQ1NTIiwiSW5kaWNhdG9yc0NvbnRhaW5lciIsIlN2ZyIsIkNyb3NzSWNvbiIsIkRvd25DaGV2cm9uIiwiYmFzZUNTUyIsIkRyb3Bkb3duSW5kaWNhdG9yIiwiQ2xlYXJJbmRpY2F0b3IiLCJpbmRpY2F0b3JTZXBhcmF0b3JDU1MiLCJJbmRpY2F0b3JTZXBhcmF0b3IiLCJsb2FkaW5nSW5kaWNhdG9yQ1NTIiwiTG9hZGluZ0RvdCIsImNzcyQyIiwiTG9hZGluZ0luZGljYXRvciIsIkNvbnRyb2wiLCJfZXhjbHVkZWQkMSIsImdyb3VwQ1NTIiwiR3JvdXAiLCJncm91cEhlYWRpbmdDU1MiLCJHcm91cEhlYWRpbmciLCJpbnB1dENTUyIsImlucHV0U3R5bGUiLCJpc0hpZGRlbiIsIklucHV0IiwibXVsdGlWYWx1ZUNTUyIsIm11bHRpVmFsdWVMYWJlbENTUyIsIm11bHRpVmFsdWVSZW1vdmVDU1MiLCJNdWx0aVZhbHVlR2VuZXJpYyIsIk11bHRpVmFsdWUiLCJjb21wb25lbnRzIiwiTGFiZWwiLCJvcHRpb25DU1MiLCJPcHRpb24iLCJwbGFjZWhvbGRlckNTUyIsIlBsYWNlaG9sZGVyIiwiU2luZ2xlVmFsdWUiLCJkZWZhdWx0Q29tcG9uZW50cyIsImlzRXF1YWwiLCJBMTF5VGV4dCIsImlzQXBwbGVEZXZpY2UiLCJnZXRBcnJheUluZGV4IiwiTGl2ZVJlZ2lvbiIsImdldE9wdGlvbkxhYmVsIiwiaXNPcHRpb25EaXNhYmxlZCIsInNjcmVlblJlYWRlclN0YXR1cyIsImFzT3B0aW9uIiwiRnJhZ21lbnQiLCJzdHJpcERpYWNyaXRpY3MiLCJ0cmltU3RyaW5nIiwiZGVmYXVsdFN0cmluZ2lmeSIsImNyZWF0ZUZpbHRlciIsImNhbmNlbFNjcm9sbCIsImJsdXJTZWxlY3RJbnB1dCIsInRhcmdldFJlZiIsIlJlcXVpcmVkSW5wdXQiLCJvbkZvY3VzIiwiaXNNYWMiLCJmb3JtYXRHcm91cExhYmVsIiwiZ2V0T3B0aW9uVmFsdWUiLCJjYXRlZ29yaXplZE9wdGlvbiIsIm9wdGlvbklkIiwiZ2V0Rm9jdXNlZE9wdGlvbklkIiwic2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyIsIlNlbGVjdCIsImN1c3RvbSIsImlzQ2xlYXJhYmxlIiwicmVxdWlyZWQiLCJNdWx0aVZhbHVlQ29udGFpbmVyIiwiTXVsdGlWYWx1ZUxhYmVsIiwiTXVsdGlWYWx1ZVJlbW92ZSIsImxvYWRpbmdNZXNzYWdlIiwibm9PcHRpb25zTWVzc2FnZSIsInJlbmRlciIsIkNvbXBvbmVudCIsInVzZUxhdGVzdCIsInVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QiLCJjb21wb3NlUmVmc18xIiwiY29tcG9zZVJlZnMiLCJzbGVlcCIsInVzZVN0YXRlMiIsInVzZUNhbGxiYWNrMiIsIk1lbnVMaXN0MiIsInVzZVJlZjIiLCJ1c2VDYWxsYmFjazMiLCJ1c2VFZmZlY3QyIiwidXNlTWVtbzIiLCJkZWZhdWx0Q29tcG9uZW50czIiLCJqc3gyIiwiX19kZWNvcmF0ZVBhcmFtIiwiVG9rZW4iLCJ1dWlkdjQiLCJfX3NwcmVhZEFycmF5IiwiU3Vic2NyaXB0aW9uIiwiU3Vic2NyaWJlciIsIkNvbnN1bWVyT2JzZXJ2ZXIiLCJTYWZlU3Vic2NyaWJlciIsIk9ic2VydmFibGUiLCJvYnNlcnZhYmxlIiwiU3ltYm9sX29ic2VydmFibGUiLCJPcGVyYXRvclN1YnNjcmliZXIiLCJlcnIiLCJTdWJqZWN0IiwiQW5vbnltb3VzU3ViamVjdCIsIkJlaGF2aW9yU3ViamVjdCIsIkFjdGlvbiIsInNjaGVkdWxlciIsIkFzeW5jQWN0aW9uIiwiU2NoZWR1bGVyIiwiQXN5bmNTY2hlZHVsZXIiLCJhdHRyIiwidGl0bGUiLCJjbGFzc0dyb3VwIiwiY2xvbmVEZWVwIiwiY3JlYXRlQ29udGV4dCIsImpzeHMiLCJDaGlsZHJlbiIsImNsb25lRWxlbWVudCIsIkJhc2VDb21wb25lbnQiLCJjcmVhdGVFbGVtZW50IiwiaXNWYWxpZEVsZW1lbnQiLCJCdXR0b24iLCJpdGVtcyIsIkJ1dHRvbkNvbXBvbmVudCIsImJ1dHRvblRoZW1lIiwiZGVib3VuY2UiLCJkZWJvdW5jZU1vZHVsZSIsIl9fZGVmUHJvcCIsIl9fZGVmTm9ybWFsUHJvcCIsIl9fcHVibGljRmllbGQiLCJQdXJlQ29tcG9uZW50IiwiYWN0aXZlRWxlbWVudCIsImNvbnRhaW5zIiwiaXNJbmVydCIsImlzQ29udGVudEVkaXRhYmxlIiwiZ2V0Q2FuZGlkYXRlcyIsImdldENhbmRpZGF0ZXNJdGVyYXRpdmVseSIsImhhc1RhYkluZGV4IiwiZ2V0VGFiSW5kZXgiLCJnZXRTb3J0T3JkZXJUYWJJbmRleCIsInNvcnRPcmRlcmVkVGFiYmFibGVzIiwiaXNJbnB1dCIsImlzSGlkZGVuSW5wdXQiLCJpc0RldGFpbHNXaXRoU3VtbWFyeSIsImdldENoZWNrZWRSYWRpbyIsImlzVGFiYmFibGVSYWRpbyIsInF1ZXJ5UmFkaW9zIiwiaXNSYWRpbyIsImlzTm9uVGFiYmFibGVSYWRpbyIsImlzTm9kZUF0dGFjaGVkIiwiaXNaZXJvQXJlYSIsImlzRGlzYWJsZWRGcm9tRmllbGRzZXQiLCJpc05vZGVNYXRjaGluZ1NlbGVjdG9yRm9jdXNhYmxlIiwiaXNOb2RlTWF0Y2hpbmdTZWxlY3RvclRhYmJhYmxlIiwiaXNWYWxpZFNoYWRvd1Jvb3RUYWJiYWJsZSIsInNvcnRCeU9yZGVyIiwidGFiYmFibGUiLCJpc1RhYmJhYmxlIiwidXNlTGF0ZXN0UmVmIiwidXNlRmxvYXRpbmciLCJSZWFjdC51c2VTdGF0ZSIsIlJlYWN0LnVzZUNhbGxiYWNrIiwiUmVhY3RET00uZmx1c2hTeW5jIiwiUmVhY3QudXNlTWVtbyIsImFycm93JDIiLCJyZWdpc3RlciIsInVucmVnaXN0ZXIiLCJtYXAiLCJpbmRleCQxIiwiUmVhY3QudXNlRWZmZWN0Iiwib25PcGVuQ2hhbmdlIiwib3BlbiIsIkZvY3VzR3VhcmQiLCJSZWFjdERPTS5jcmVhdGVQb3J0YWwiLCJWaXN1YWxseUhpZGRlbkRpc21pc3MiLCJkb21SZWZlcmVuY2UiLCJGbG9hdGluZ092ZXJsYXkiLCJpc0lPUyIsImxpc3RSZWYiLCJpbmRleFJlZiIsIml0ZW0iLCJwcm9wcyIsImlzSW5zaWRlIiwiX3JlZjMiLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwidXNlSWQiLCJzcmMiLCJMaXN0SXRlbSIsIl9hIiwiQmFzZUJ1dHRvbiIsIlN5bWJvbCIsInJlcXVpcmUkJDIiLCJyZXF1aXJlJCQzIiwicmVxdWlyZSQkNCIsInJlcXVpcmUkJDUiLCJvdGhWYWx1ZSIsIlVpbnQ4QXJyYXkiLCJCdWZmZXIiLCJpc0xlbmd0aCIsImlzVHlwZWRBcnJheSIsIlByb21pc2UiLCJyZXF1aXJlJCQ2IiwicmVxdWlyZSQkNyIsImlzRXF1YWxXaXRoIiwibWVtb2l6ZSIsImpzb25wb2ludGVyIiwicmVxdWlyZSQkOCIsInJlcXVpcmUkJDkiLCJyZXF1aXJlJCQxMCIsInJlcXVpcmUkJDExIiwicmVxdWlyZSQkMTIiLCJyZXF1aXJlJCQxMyIsInJlcXVpcmUkJDE0IiwicmVxdWlyZSQkMTUiLCJyZXF1aXJlJCQxNiIsInJlcXVpcmUkJDE3IiwicmVxdWlyZSQkMTgiLCJyZXF1aXJlJCQxOSIsInJlcXVpcmUkJDIwIiwicmVxdWlyZSQkMjEiLCJrZXkiLCJpZGVudGl0eSIsIm9taXQiLCJoYXMiLCJjb2xsZWN0aW9uIiwicmVkdWNlIiwidGltZXMiLCJnZXQiLCJvYmplY3QiLCJmbGF0dGVuRGVlcCIsInVuaXEiLCJkZWZhdWx0cyIsImlzQm9vbGVhbiIsImNvbXBhcmUiLCJsaWIiLCJpc0ludGVnZXIiLCJmb3JFYWNoIiwibWVyZ2VTY2hlbWFzIiwiYWxsIiwidW5pcXVlSXRlbXMiLCJhbGxPZiIsInNjaGVtYXMiLCJjb21tb24iLCJtZXJnZWQiLCJrZXlzIiwibWVyZ2VyIiwidW5pb24iLCJhY2MiLCJhZGRpdGlvbmFsUHJvcGVydGllcyIsIm9uZU9mIiwiYW55T2YiLCJkZXBlbmRlbmNpZXMiLCJhbHRTY2hlbWFzIiwiQWRkaXRpb25hbEl0ZW1zSGFuZGxpbmciLCJpc0VtcHR5IiwiJGlkIiwiaXNOaWwiLCJzZXRXaXRoIiwidGVtcGxhdGVzIiwiX2pzeCIsInRvUGF0aCIsIlRyYW5zbGF0YWJsZVN0cmluZyIsInRoaXMiLCJleHBvcnRzIiwidG9BcnJheSIsIkhFWERJRyQkIiwiUENUX0VOQ09ERUQkIiwiVU5SRVNFUlZFRCQkIiwic2xpY2VkVG9BcnJheSIsInRvQ29uc3VtYWJsZUFycmF5IiwiZmxvb3IiLCJ1Y3MyZW5jb2RlIiwiYmFzaWNUb0RpZ2l0IiwiZGlnaXRUb0Jhc2ljIiwiYWRhcHQiLCJkZWNvZGUiLCJ0b1VuaWNvZGUiLCJ0b0FTQ0lJIiwiYzIiLCJkZWNvZGVVbnJlc2VydmVkIiwiZmllbGRzIiwiYmFzZSIsInVjczJsZW5ndGgiLCJqb2luUGF0aHMiLCJ1dGlsIiwianNvblNjaGVtYVRyYXZlcnNlTW9kdWxlIiwicmVzb2x2ZVNjaGVtYSIsIml0IiwiJHNjaGVtYSIsIiRydWxlc0dyb3VwIiwiJHJ1bGUiLCJ2YWxpZGF0ZSIsIl9yb290IiwibG9jYWxSZWZzIiwiYmFzZUlkIiwicmVmVmFsIiwic2NoZW1hIiwia2V5d29yZCIsImNhY2hlTW9kdWxlIiwiQ2FjaGUiLCJVUkwiLCIkc2NoIiwicmVxdWlyZSQkMjIiLCJyZXF1aXJlJCQyMyIsImRhdGFUeXBlIiwiZGVmaW5pdGlvbiIsIkFqdiIsImFqdiIsImtleWVkRm9ybURhdGEiLCJmb3JtRGF0YSIsIndpZGdldHMiLCJTY2hlbWFGaWVsZCIsInJldHJpZXZlZE9wdGlvbnMiLCJzY2hlbWFVdGlscyIsIl9qc3hzIiwiU3RyaW5nRmllbGQiLCJlLmNyZWF0ZUVsZW1lbnQiLCJlLmNsb25lRWxlbWVudCIsInVuc2V0IiwiZGVzY3JpcHRpb24iLCJuYW1lIiwiRmllbGRUZW1wbGF0ZSIsIkZpZWxkSGVscFRlbXBsYXRlIiwiRmllbGRFcnJvclRlbXBsYXRlIiwiaWQiLCJfRnJhZ21lbnQiLCJfc2NoZW1hIiwiTXVsdGlTY2hlbWFGaWVsZCIsIkNvcHlCdXR0b24iLCJNb3ZlRG93bkJ1dHRvbiIsIk1vdmVVcEJ1dHRvbiIsIlJlbW92ZUJ1dHRvbiIsIkFycmF5RmllbGREZXNjcmlwdGlvblRlbXBsYXRlIiwiQXJyYXlGaWVsZEl0ZW1UZW1wbGF0ZSIsIkFycmF5RmllbGRUaXRsZVRlbXBsYXRlIiwiQWRkQnV0dG9uIiwiUkVRVUlSRURfRklFTERfU1lNQk9MIiwiV3JhcElmQWRkaXRpb25hbFRlbXBsYXRlIiwiQnV0dG9uVGVtcGxhdGVzIiwicmFuZ2UiLCJTZWxlY3RXaWRnZXQiLCJzdGF0ZSIsIkFsdERhdGVXaWRnZXQiLCJCYXNlSW5wdXRUZW1wbGF0ZSIsImRpc2FibGVkIiwiY3JlYXRlUmVmIiwiU3VibWl0QnV0dG9uIiwiQ291bnRyeVNlcnZpY2UiLCJGb3JtIiwiY29udGFjdCIsIkNvbnRhY3RTZXJ2aWNlIiwiQWRkcmVzc1NlcnZpY2UiLCJQcm9wVHlwZXMuaW5zdGFuY2VPZiIsIlByb3BUeXBlcy5mdW5jIiwiZC5SVUxFU0VUIiwiZC5wcmVmaXhlciIsImQuc3RyaW5naWZ5IiwiZC5jb21waWxlIiwiZC5zZXJpYWxpemUiLCJkLm1pZGRsZXdhcmUiLCJkLnJ1bGVzaGVldCIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9hcnJheUxpa2VUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIl9zbGljZWRUb0FycmF5IiwidXNlU3RhdGVNYW5hZ2VyIiwiX2NsYXNzQ2FsbENoZWNrIiwiX2RlZmluZVByb3BlcnRpZXMiLCJfY3JlYXRlQ2xhc3MiLCJfc2V0UHJvdG90eXBlT2YiLCJfaW5oZXJpdHMiLCJfZ2V0UHJvdG90eXBlT2YiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfY3JlYXRlU3VwZXIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbCIsInJlYWN0IiwicmVhY3REb20iLCJfZXhjbHVkZWQkNCIsImFwcGx5UHJlZml4VG9OYW1lIiwiaXNEb2N1bWVudEVsZW1lbnQiLCJub3JtYWxpemVkSGVpZ2h0IiwiZ2V0U2Nyb2xsVG9wIiwic2Nyb2xsVG8iLCJnZXRTY3JvbGxQYXJlbnQiLCJlYXNlT3V0Q3ViaWMiLCJhbmltYXRlZFNjcm9sbFRvIiwic2Nyb2xsSW50b1ZpZXciLCJnZXRCb3VuZGluZ0NsaWVudE9iaiIsImlzVG91Y2hDYXBhYmxlIiwiaXNNb2JpbGVEZXZpY2UiLCJwYXNzaXZlT3B0aW9uQWNjZXNzZWQiLCJzdXBwb3J0c1Bhc3NpdmVFdmVudHMiLCJub3ROdWxsaXNoIiwidmFsdWVUZXJuYXJ5Iiwic2luZ2xlVmFsdWVBc1ZhbHVlIiwibXVsdGlWYWx1ZUFzVmFsdWUiLCJfZXhjbHVkZWQkMyIsIl9leGNsdWRlZDIkMSIsImdldE1lbnVQbGFjZW1lbnQiLCJhbGlnblRvQ29udHJvbCIsIlBvcnRhbFBsYWNlbWVudENvbnRleHQiLCJNZW51JDEiLCJub09wdGlvbnNNZXNzYWdlQ1NTIiwibG9hZGluZ01lc3NhZ2VDU1MiLCJfdGVtcGxhdGVPYmplY3QiLCJfZXhjbHVkZWQkMiIsIl9leGNsdWRlZDIiLCJkcm9wZG93bkluZGljYXRvckNTUyIsImNsZWFySW5kaWNhdG9yQ1NTIiwibG9hZGluZ0RvdEFuaW1hdGlvbnMiLCJjc3MkMSIsIkNvbnRyb2wkMSIsIkdyb3VwJDEiLCJjb250YWluZXJTdHlsZSIsInNwYWNpbmdTdHlsZSIsIklucHV0JDEiLCJNdWx0aVZhbHVlJDEiLCJPcHRpb24kMSIsIlBsYWNlaG9sZGVyJDEiLCJTaW5nbGVWYWx1ZSQxIiwibWVtb2l6ZU9uZSIsIkExMXlUZXh0JDEiLCJkZWZhdWx0QXJpYUxpdmVNZXNzYWdlcyIsImd1aWRhbmNlIiwib25GaWx0ZXIiLCJMaXZlUmVnaW9uJDEiLCJkaWFjcml0aWNzIiwiYW55RGlhY3JpdGljIiwiZGlhY3JpdGljVG9CYXNlIiwibWVtb2l6ZWRTdHJpcERpYWNyaXRpY3NGb3JJbnB1dCIsIkR1bW15SW5wdXQiLCJ1c2VTY3JvbGxDYXB0dXJlIiwiU1RZTEVfS0VZUyIsIkxPQ0tfU1RZTEVTIiwicHJldmVudFRvdWNoTW92ZSIsImFsbG93VG91Y2hNb3ZlIiwicHJldmVudEluZXJ0aWFTY3JvbGwiLCJpc1RvdWNoRGV2aWNlIiwiY2FuVXNlRE9NIiwiYWN0aXZlU2Nyb2xsTG9ja3MiLCJsaXN0ZW5lck9wdGlvbnMiLCJ1c2VTY3JvbGxMb2NrIiwiX3JlZjIkMSIsIlNjcm9sbE1hbmFnZXIiLCJSZXF1aXJlZElucHV0JDEiLCJ0ZXN0UGxhdGZvcm0iLCJpc0lQaG9uZSIsImlzSVBhZCIsImdldE9wdGlvbkxhYmVsJDEiLCJnZXRPcHRpb25WYWx1ZSQxIiwiZGVmYXVsdFN0eWxlcyIsIm1lbnVHdXR0ZXIiLCJkZWZhdWx0VGhlbWUiLCJkZWZhdWx0UHJvcHMiLCJ0b0NhdGVnb3JpemVkT3B0aW9uIiwiX2lzT3B0aW9uRGlzYWJsZWQiLCJfaXNPcHRpb25TZWxlY3RlZCIsImJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zIiwiaXNGb2N1c2FibGUiLCJidWlsZEZvY3VzYWJsZU9wdGlvbnNGcm9tQ2F0ZWdvcml6ZWRPcHRpb25zIiwiYnVpbGRGb2N1c2FibGVPcHRpb25zV2l0aElkcyIsImJ1aWxkRm9jdXNhYmxlT3B0aW9ucyIsIl9maWx0ZXJPcHRpb24iLCJnZXROZXh0Rm9jdXNlZFZhbHVlIiwiZ2V0TmV4dEZvY3VzZWRPcHRpb24iLCJpbnN0YW5jZUlkIiwiU3RhdGVNYW5hZ2VkU2VsZWN0IiwiU3RhdGVNYW5hZ2VkU2VsZWN0JDEiLCJyZWFjdFNlbGVjdF9janNNb2R1bGUiLCJzdHlsZWQiLCJjb250YWluZXIiLCJPcmRlclN0YXRlIiwiQWRkcmVzc01vZGFsIiwiYWRkcmVzcyIsIlByb3BUeXBlcy5udW1iZXIiLCJQcm9wVHlwZXMuc3RyaW5nIiwiQWNjb3VudFNlcnZpY2UiLCJvcmRlciIsIlNob3BTZXJ2aWNlIiwiT3JkZXJTZXJ2aWNlIiwicmVhY3RTZWxlY3RBc3luY19janNNb2R1bGUiLCJQcm9kdWN0R3JvdXBTZXJ2aWNlIiwiQXN5bmNTZWxlY3QiLCJQcm9kdWN0U2VydmljZSIsInVzZURlYm91bmNlIiwidXNlRGVib3VuY2VkQ2FsbGJhY2siLCJQcm9wVHlwZXMuYXJyYXkiLCJQYXltZW50U2VydmljZSIsIlNoaXBwaW5nU2VydmljZSIsImlzRGF0ZSIsIlJlYWN0Mi51c2VDb250ZXh0IiwiUmVhY3QyLnVzZUxheW91dEVmZmVjdCIsIlJlYWN0Mi51c2VSZWYiLCJSZWFjdDIudXNlQ2FsbGJhY2siLCJSZWFjdDIuY3JlYXRlQ29udGV4dCIsIlJlYWN0Mi51c2VNZW1vIiwiUmVhY3QyLmNyZWF0ZUVsZW1lbnQiLCJSZWFjdDIuRnJhZ21lbnQiLCJSZWFjdDIuQ29tcG9uZW50IiwibWF0Y2hlczIiLCJnZXRDaGlsZHJlbiIsIlJlYWN0My5tZW1vIiwiUmVhY3QzLnVzZU1lbW8iLCJSZWFjdDMuY3JlYXRlRWxlbWVudCIsIlJlYWN0My5DaGlsZHJlbiIsIlJlYWN0My5pc1ZhbGlkRWxlbWVudCIsIlJlYWN0My5GcmFnbWVudCIsIlJlYWN0OS51c2VDb250ZXh0IiwiUmVhY3Q5LmNyZWF0ZUNvbnRleHQiLCJSZWFjdDkudXNlU3RhdGUiLCJSZWFjdDkudXNlUmVmIiwiUmVhY3Q5LnVzZUVmZmVjdCIsIlJlYWN0OS51c2VNZW1vIiwiUmVhY3Q5LmNyZWF0ZUVsZW1lbnQiLCJtMiIsIlJlYWN0OS5GcmFnbWVudCIsIlJlYWN0MTAudXNlUmVmIiwiUmVhY3QxMC51c2VTdGF0ZSIsIlJlYWN0MTAudXNlQ2FsbGJhY2siLCJSZWFjdDEwLnN0YXJ0VHJhbnNpdGlvbiIsIlJlYWN0MTAudXNlTGF5b3V0RWZmZWN0IiwiUmVhY3QxMC5jcmVhdGVFbGVtZW50IiwiUmVhY3QxMC5mb3J3YXJkUmVmIiwiUmVhY3QxMC51c2VDb250ZXh0IiwiUmVhY3QxMC5GcmFnbWVudCIsIlJvdXRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWNBLE1BQUlBO0FBQ0osR0FBQyxTQUFVQSxVQUFTO0FBR2hCLEtBQUMsU0FBVSxTQUFTO0FBQ2hCLFVBQUksT0FBTyxPQUFPLGVBQWUsV0FBVyxhQUN4QyxPQUFPQyxtQkFBVyxXQUFXQSxpQkFDekIsT0FBTyxTQUFTLFdBQVcsT0FDdkIsT0FBTyxTQUFTLFdBQVcsT0FDdkIsZUFBZ0I7QUFDaEMsVUFBSSxXQUFXLGFBQWFELFFBQU87QUFDbkMsVUFBSSxPQUFPLEtBQUssWUFBWSxhQUFhO0FBQ3JDLG1CQUFXLGFBQWEsS0FBSyxTQUFTLFFBQVE7QUFBQSxNQUMxRDtBQUNRLGNBQVEsVUFBVSxJQUFJO0FBQ3RCLFVBQUksT0FBTyxLQUFLLFlBQVksYUFBYTtBQUNyQyxhQUFLLFVBQVVBO0FBQUEsTUFDM0I7QUFDUSxlQUFTLGFBQWEsUUFBUSxVQUFVO0FBQ3BDLGVBQU8sU0FBVSxLQUFLLE9BQU87QUFDekIsaUJBQU8sZUFBZSxRQUFRLEtBQUssRUFBRSxjQUFjLE1BQU0sVUFBVSxNQUFNLE1BQVksQ0FBRTtBQUN2RixjQUFJO0FBQ0EscUJBQVMsS0FBSyxLQUFLO0FBQUEsUUFDMUI7QUFBQSxNQUNiO0FBQ1EsZUFBUyxlQUFlO0FBQ3BCLFlBQUk7QUFDQSxpQkFBTyxTQUFTLGNBQWMsRUFBRztBQUFBLFFBQ2pELFNBQ21CRSxJQUFHO0FBQUEsUUFBQTtBQUFBLE1BQ3RCO0FBQ1EsZUFBUyxtQkFBbUI7QUFDeEIsWUFBSTtBQUNBLGtCQUFRLFFBQVEsTUFBTSxpQ0FBaUM7QUFBQSxRQUN2RSxTQUNtQkEs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TUFBQSxLQUFLO0FBQUEsTUFBUyxLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBYyxLQUFLO0FBQUEsTUFBTyxLQUFLO0FBQUEsTUFBTSxLQUFLO0FBQUEsTUFBVyxLQUFLO0FBQUEsTUFBVyxLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQUEsTUFBWSxLQUFLO0FBQUEsTUFBTyxLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQUEsTUFBVyxLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQUEsTUFBVyxLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBWSxLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBTyxLQUFLO0FBQUEsTUFBZ0IsS0FBSztBQUFBLE1BQWMsS0FBSztBQUFBLE1BQVksS0FBSztBQUFBLE1BQWEsS0FBSztBQUFBLE1BQVEsS0FBSztBQUFBLE1BQVMsS0FBSztBQUFBLE1BQVMsS0FBSztBQUFBLE1BQVMsS0FBSztBQUFBLE1BQWMsS0FBSztBQUFBLE1BQVcsS0FBSztBQUFBLE1BQWEsS0FBSztBQUFBLE1BQWUsS0FBSztBQUFBLE1BQVMsS0FBSztBQUFBLE1BQWtCLEtBQUs7QUFBQSxNQUFZLEtBQUs7QUFBQSxNQUFtQixLQUFLO0FBQUEsTUFBaUIsS0FBSztBQUFBLE1BQW9CLEtBQUs7QUFBQSxNQUFhLEtBQUs7QUFBQSxNQUFZLEtBQUs7QUFBQSxNQUFjLEtBQUs7QUFBQSxNQUFPLEtBQUs7QUFBQSxNQUFtQixLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQUEsTUFBYSxLQUFLO0FBQUEsTUFBVyxLQUFLO0FBQUEsTUFBUyxLQUFLO0FBQWMsZUFBTztBQUFBLE1BQUUsS0FBSztBQUFBLE1BQU8sS0FBSztBQUFBLE1BQVksS0FBSztBQUFBLE1BQVcsS0FBSztBQUFBLE1BQVksS0FBSztBQUFBLE1BQVcsS0FBSztBQUFBLE1BQVksS0FBSztBQUFBLE1BQVcsS0FBSztBQUFB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QUFFLGNBQUlELEtBQUU7QUFBRyxVQUFBVCxNQUFHLEdBQUdMLElBQUVLLEVBQUMsSUFBRSxHQUFHUyxJQUFFQyxFQUFDLEtBQUdmLEdBQUUsUUFBTUEsR0FBRSxRQUFNLFFBQU0sR0FBRVMsS0FBRSxPQUFHLEtBQUdUO0FBQUEsUUFBRTtBQUFBLE1BQUMsT0FBSztBQUFDLFlBQUcsR0FBR0EsRUFBQyxFQUFFLE9BQU0sTUFBTVQsR0FBRSxHQUFHLENBQUM7QUFBRSxRQUFBUyxHQUFFLFFBQU1BLEdBQUUsUUFBTSxRQUFNO0FBQUUsUUFBQVMsS0FBRTtBQUFHLGFBQUdUO0FBQUEsTUFBQztBQUFBLElBQUM7QUFBQSxFQUFDO0FBQUMsV0FBUyxHQUFHQSxJQUFFO0FBQUMsU0FBSUEsS0FBRUEsR0FBRSxRQUFPLFNBQU9BLE1BQUcsTUFBSUEsR0FBRSxPQUFLLE1BQUlBLEdBQUUsT0FBSyxPQUFLQSxHQUFFLE1BQUssQ0FBQUEsS0FBRUEsR0FBRTtBQUFPLFNBQUdBO0FBQUEsRUFBQztBQUNoYSxXQUFTLEdBQUdBLElBQUU7QUFBQyxRQUFHQSxPQUFJLEdBQUcsUUFBTTtBQUFHLFFBQUcsQ0FBQ1MsR0FBRSxRQUFPLEdBQUdULEVBQUMsR0FBRVMsS0FBRSxNQUFHO0FBQUcsUUFBSUo7QUFBRSxLQUFDQSxLQUFFLE1BQUlMLEdBQUUsUUFBTSxFQUFFSyxLQUFFLE1BQUlMLEdBQUUsU0FBT0ssS0FBRUwsR0FBRSxNQUFLSyxLQUFFLFdBQVNBLE1BQUcsV0FBU0EsTUFBRyxDQUFDLEdBQUdMLEdBQUUsTUFBS0EsR0FBRSxhQUFhO0FBQUcsUUFBR0ssT0FBSUEsS0FBRSxLQUFJO0FBQUMsVUFBRyxHQUFHTCxFQUFDLEVBQUUsT0FBTSxHQUFFLEdBQUcsTUFBTVQsR0FBRSxHQUFHLENBQUM7QUFBRSxhQUFLYyxLQUFHLElBQUdMLElBQUVLLEVBQUMsR0FBRUEsS0FBRSxHQUFHQSxHQUFFLFdBQVc7QUFBQSxJQUFDO0FBQUMsT0FBR0wsRUFBQztBQUFFLFFBQUcsT0FBS0EsR0FBRSxLQUFJO0FBQUMsTUFBQUEs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RCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FB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QyxPQUFPO0FBQUEsTUFDcEIsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxJQUFJLENBQUM7QUFBQSxRQUNILElBQUksQ0FBQyxPQUFPO0FBQUEsTUFDcEIsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxJQUFJLENBQUM7QUFBQSxRQUNILElBQUksQ0FBQyxPQUFPO0FBQUEsTUFDcEIsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxJQUFJLENBQUM7QUFBQSxRQUNILElBQUksQ0FBQyxPQUFPO0FBQUEsTUFDcEIsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxJQUFJLENBQUM7QUFBQSxRQUNILElBQUksQ0FBQyxPQUFPO0FBQUEsTUFDcEIsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxJQUFJLENBQUM7QUFBQSxRQUNILElBQUksQ0FBQyxPQUFPO0FBQUEsTUFDcEIsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxJQUFJLENBQUM7QUFBQSxRQUNILElBQUksQ0FBQyxPQUFPO0FBQUEsTUFDcEIsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxJQUFJLENBQUM7QUFBQSxRQUNILElBQUksQ0FBQyxPQUFPO0FBQUEsTUFDcEIsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxHQUFHLENBQUM7QUFBQSxRQUNGLEdBQUcsQ0FBQyxNQUFNO0FBQUEsTUFDbEIsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxJQUFJLENBQUM7QUFBQSxRQUNILElBQUksQ0FBQyxNQUFNO0FBQUEsTUFDbkIsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxJQUFJLENBQUM7QUFBQSxRQUNILElBQUksQ0FBQyxNQUFNO0FBQUEsTUFDbkIsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxJQUFJLENBQUM7QUFBQSxRQUNILElBQUksQ0FBQyxNQUFNO0FB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O0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxhQUFhLENBQUM7QUFBQSxRQUNaLGFBQWEsd0JBQXVCO0FBQUEsTUFDNUMsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxhQUFhLENBQUM7QUFBQSxRQUNaLGFBQWEsd0JBQXVCO0FBQUEsTUFDNUMsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxhQUFhLENBQUM7QUFBQSxRQUNaLGFBQWEsd0JBQXVCO0FBQUEsTUFDNUMsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxhQUFhLENBQUM7QUFBQSxRQUNaLGFBQWEsd0JBQXVCO0FBQUEsTUFDNUMsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxhQUFhLENBQUM7QUFBQSxRQUNaLGFBQWEsd0JBQXVCO0FBQUEsTUFDNUMsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxZQUFZLENBQUM7QUFBQSxRQUNYLFlBQVksd0JBQXVCO0FBQUEsTUFDM0MsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxhQUFhLENBQUM7QUFBQSxRQUNaLGFBQWEsd0JBQXVCO0FBQUEsTUFDNUMsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxhQUFhLENBQUM7QUFBQSxRQUNaLGFBQWEsd0JBQXVCO0FBQUEsTUFDNUMsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxhQUFhLENBQUM7QUFBQSxRQUNaLGFBQWEsd0JBQXVCO0FBQUEsTUFDNUMsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxhQUFhLENBQUM7QUFBQSxRQUNaLGFBQWEsd0JBQXVCO0FBQUEsTUFDNUMsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxhQUFhLENBQUM7QUFBQSxRQUNaLGFBQWEsd0JBQXVCO0FBQUEsTUFDNUMsQ0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLRCxhQUFhLENBQUM7QUFBQSxR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QUFBQSxRQUNSLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxNQUNaO0FBQUEsSUFDSztBQUFBLElBQ0QsU0FBUztBQUFBLE1BQ1AsUUFBUTtBQUFBLFFBQ04sSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLE1BQ0w7QUFBQSxNQUNELFVBQVU7QUFBQSxRQUNSLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxNQUNMO0FBQUEsTUFDRCxVQUFVO0FBQUEsUUFDUixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsTUFDWjtBQUFBLElBQ0s7QUFBQSxJQUNELE9BQU87QUFBQSxNQUNMLFFBQVE7QUFBQSxRQUNOLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxNQUNMO0FBQUEsTUFDRCxVQUFVO0FBQUEsUUFDUixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsTUFDTDtBQUFBLE1BQ0QsVUFBVTtBQUFBLFFBQ1IsSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLE1BQ1o7QUFBQSxJQUNBO0FBQUEsRUFDRztBQUFBLEVBQ0QsT0FBTztBQUFBLElBQ0wsU0FBUztBQUFBLE1BQ1AsUUFBUTtBQUFBLFFBQ04sSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLE1BQ0w7QUFBQSxNQUNELFVBQVU7QUFBQSxRQUNSLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxNQUNMO0FBQUEsTUFDRCxVQUFVO0FBQUEsUUFDUixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsTUFDWjtBQUFBLElBQ0s7QUFBQSxJQUNELFNBQVM7QUFBQSxNQUNQLFFBQVE7QUFBQSxRQUNOLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxNQUNMO0FBQUEsTUFDRCxVQUFVO0FBQUEsUUFDUixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsTUFDTDtBQUFBLE1BQ0QsVUFBVTtBQUFBLFFBQ1IsSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLE1BQ1o7QUFBQSxJQUNLO0FBQUEsSUFDRCxPQUFPO0FBQUEsTUFDTCxRQUFRO0FBQUEsUUFDTixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEs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WCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxHQUFHO0FBQUEsSUFDRCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsRUFDWCxDQUFDO0FBQ0QsTUFBSUMsZ0JBQWUsSUFBSSxPQUFPLE1BQU1ELFlBQVcsSUFBSSxTQUFVeHhCLElBQUc7QUFDOUQsV0FBT0EsR0FBRTtBQUFBLEVBQ1YsQ0FBQSxFQUFFLEtBQUssRUFBRSxJQUFJLEtBQUssR0FBRztBQUN0QixNQUFJMHhCLG1CQUFrQixDQUFFO0FBQ3hCLFdBQVN0MUIsS0FBSSxHQUFHQSxLQUFJbzFCLFlBQVcsUUFBUXAxQixNQUFLO0FBQzFDLFFBQUksWUFBWW8xQixZQUFXcDFCLEVBQUM7QUFDNUIsYUFBU21SLEtBQUksR0FBR0EsS0FBSSxVQUFVLFFBQVEsUUFBUUEsTUFBSztBQUNqRCxNQUFBbWtCLGlCQUFnQixVQUFVLFFBQVFua0IsRUFBQyxDQUFDLElBQUksVUFBVTtBQUFBLElBQ3REO0FBQUEsRUFDQTtBQUNBLE1BQUlnTSxtQkFBa0IsU0FBU0EsaUJBQWdCLEtBQUs7QUFDbEQsV0FBTyxJQUFJLFFBQVFrWSxlQUFjLFNBQVU3dUIsUUFBTztBQUNoRCxhQUFPOHVCLGlCQUFnQjl1QixNQUFLO0FBQUEsSUFDaEMsQ0FBRztBQUFBLEVBQ0Y7QUFFRCxNQUFJK3VCLG1DQUFrQyxvQkFBb0IsU0FBUyxFQUFFcFksZ0JBQWU7QUFDcEYsTUFBSUMsY0FBYSxTQUFTQSxZQUFXLEtBQUs7QUFDeEMsV0FBTyxJQUFJLFFBQVEsY0FBYyxFQUFFO0FBQUEsRUFDcEM7QUFDRCxNQUFJQyxvQkFBbUIsU0FBU0Esa0JBQWlCLFFBQVE7QUFDdkQsV0FBTyxHQUFHLE9BQU8sT0FBTyxPQUFPLEdBQUcsRUFBRSxPQUFPLE9BQU8sS0FBSztBQUFBLEVBQ3hEO0FBQ0QsTUFBSUMsZ0JBQWUsU0FBU0EsY0FBYWxYLFNBQVE7QUFDL0MsV0FBTyxTQUFVLFFBQVEsVUFBVTtBQUVqQyxVQUFJLE9BQU8sS0FBSyxVQUFXLFFBQU87QUFDbEMsVUFBSSx3QkFBd0J1SCxlQUFjO0FBQUEsUUFDdEMsWUFBWTtBQUFBLFFBQ1osZUFBZTtBQUFBLFFBQ2YsV0FBVzBQO0FBQUEsUUFDWCxNQUFNO0FBQUEsUUFDTixXQUFXO0FBQUEsTUFDWixHQUFFalgsT0FBTSxHQUNULGFBQWEsc0JBQXNCLFlBQ25DLGdCQUFnQixzQkFBc0IsZUFDdENpTCxhQUFZLHNCQUFzQixXQUNsQzlMLFFBQU8sc0JBQXNCLE1BQzdCLFlBQVksc0JBQXNCO0FBQ3BDLFVBQUksUUFBUUEsUUFBTzZYLFlBQVcsUUFBUSxJQUFJO0FBQzFDLFVBQUksWUFBWTdYLFFBQU82WCxZQUFXL0wsV0FBVSxNQUFNLENBQUMsSUFBSUEsV0FBVSxNQUFNO0FBQ3ZFLFVBQUksWUFBWTtBQUNkLGdCQUFRLE1BQU0sWUFBYTtBQUMzQixvQkFBWSxVQUFVLFlBQWE7QUFBQSxNQUN6QztBQUNJLFVBQUksZUFBZTtBQUNqQixnQkFBUWtrQixpQ0FBZ0MsS0FBSztBQUM3QyxvQkFBWXBZLGlCQUFnQixTQUFTO0FBQUEsTUFDM0M7QUFDSSxhQUFPLGNBQWMsVUFBVSxVQUFVLE9BQU8sR0FBRyxNQUFNLE1BQU0sTUFBTSxRQUFRLFVBQVUsUUFBUSxLQUFLLElBQUk7QUFBQSxJQUN6RztBQUFBLEVBQ0Y7QUFFRCxNQUFJN1AsYUFBWSxDQUFDLFVBQVU7QUFDM0IsV0FBU2tvQixZQUFXam9CLE9BQU07QUFDeEIsUUFBSSxXQUFXQSxNQUFLLFVBQ2xCLFFBQVFILDBCQUF5QkcsT0FBTUQsVUFBUztBQUVsRCxRQUFJLGdCQUFnQjVMLE9BQU0sWUFBWSxPQUFPLFlBQVksTUFBTSxTQUFTLFFBQVEsUUFBUTtBQUN4RixXQUFPdXdCLE9BQU0sSUFBSSxTQUFTcmtCLFVBQVM7QUFBQSxNQUNqQyxLQUFLO0FBQUEsSUFDTixHQUFFLGVBQWU7QUFBQSxNQUNoQixLQUFrQixnQkFBQXFrQixPQUFNLElBQUk7QUFBQSxRQUMxQixPQUFPO0FBQUE7QUFBQSxRQUVQLFlBQVk7QUFBQSxRQUNaLFFBQVE7QUFBQTtBQUFBLFFBRVIsWUFBWTtBQUFBLFFBQ1osVUFBVTtBQUFBLFFBQ1YsVUFBVTtBQUFBLFFBQ1YsU0FBUztBQUFBLFFBQ1QsU0FBUztBQUFBO0FBQUEsUUFFVCxPQUFPO0FBQUE7QUFBQSxRQUVQLE9BQU87QUFBQTtBQUFBLFFBRVAsTUFBTTtBQUFBLFFBQ04sU0FBUztBQUFBLFFBQ1QsVUFBVTtBQUFBLFFBQ1YsV0FBVztBQUFBLE1BQ1osR0FBRSxJQUFLLEVBQUU7QUFBQSxJQUNkLENBQUcsQ0FBQztBQUFBLEVBQ0o7QUFFQSxNQUFJMVUsZ0JBQWUsU0FBU0EsY0FBYSxPQUFPO0FBQzlDLFFBQUksTUFBTSxXQUFZLE9BQU0sZUFBZ0I7QUFDNUMsVUFBTSxnQkFBaUI7QUFBQSxFQUN4QjtBQUNELFdBQVNrWSxrQkFBaUJsb0IsT0FBTTtBQUM5QixRQUFJLFlBQVlBLE1BQUssV0FDbkIsaUJBQWlCQSxNQUFLLGdCQUN0QixnQkFBZ0JBLE1BQUssZUFDckIsY0FBY0EsTUFBSyxhQUNuQixhQUFhQSxNQUFLO0FBQ3BCLFFBQUksV0FBVzRGLE9BQU0sT0FBTyxLQUFLO0FBQ2pDLFFBQUksUUFBUUEsT0FBTSxPQUFPLEtBQUs7QUFDOUIsUUFBSSxhQUFhQSxPQUFNLE9BQU8sQ0FBQztBQUMvQixRQUFJLGVBQWVBLE9BQU0sT0FBTyxJQUFJO0FBQ3BDLFFBQUksbUJBQW1CQSxPQUFNLFlBQVksU0FBVSxPQUFPLE9BQU87QUFDL0QsVUFBSSxhQUFhLFlBQVksS0FBTTtBQUNuQyxVQUFJLHdCQUF3QixhQUFhLFNBQ3ZDLFlBQVksc0JBQXNCLFdBQ2xDLGVBQWUsc0JBQXNCLGNBQ3JDLGVBQWUsc0JBQXNCO0FBQ3ZDLFVBQUksU0FBUyxhQUFhO0FBQzFCLFVBQUksa0JBQWtCLFFBQVE7QUFDOUIsVUFBSSxrQkFBa0IsZUFBZSxlQUFlO0FBQ3BELFVBQUkscUJBQXFCO0FBR3pCLFVBQUksa0JBQWtCLFNBQVMsU0FBUyxTQUFTO0FBQy9DLFlBQUksY0FBZSxlQUFjLEtBQUs7QUFDdEMsaUJBQVMsVUFBVTtBQUFBLE1BQ3pCO0FBQ0ksVUFBSSxtQkFBbUIsTUFBTSxTQUFTO0FBQ3BDLFlBQUksV0FBWSxZQUFXLEtBQUs7QUFDaEMsY0FBTSxVQUFVO0FBQUEsTUFDdEI7QUFHSSxVQUFJLG1CQUFtQixRQUFRLGlCQUFpQjtBQUM5QyxZQUFJLGtCQUFrQixDQUFDLFNBQVMsU0FBUztBQUN2Qyx5QkFBZSxLQUFLO0FBQUEsUUFDNUI7QUFDTSxlQUFPLFlBQVk7QUFDbkIsNkJBQXFCO0FBQ3JCLGlCQUFTLFVBQVU7QUFBQSxNQUdwQixXQUFVLENBQUMsbUJBQW1CLENBQUMsUUFBUSxXQUFXO0FBQ2pELFlBQUksZUFBZSxDQUFDLE1BQU0sU0FBUztBQUNqQyxzQkFBWSxLQUFLO0FBQUEsUUFDekI7QUFDTSxlQUFPLFlBQVk7QUFDbkIsNkJBQXFCO0FBQ3JCLGNBQU0sVUFBVTtBQUFBLE1BQ3RCO0FBR0ksVUFBSSxvQkFBb0I7QUFDdEIsUUFBQW9LLGNBQWEsS0FBSztBQUFBLE1BQ3hCO0FBQUEsSUFDRyxHQUFFLENBQUMsZ0JBQWdCLGVBQWUsYUFBYSxVQUFVLENBQUM7QUFDM0QsUUFBSSxVQUFVcEssT0FBTSxZQUFZLFNBQVUsT0FBTztBQUMvQyx1QkFBaUIsT0FBTyxNQUFNLE1BQU07QUFBQSxJQUN4QyxHQUFLLENBQUMsZ0JBQWdCLENBQUM7QUFDckIsUUFBSSxlQUFlQSxPQUFNLFlBQVksU0FBVSxPQUFPO0FBRXBELGlCQUFXLFVBQVUsTUFBTSxlQUFlLENBQUMsRUFBRTtBQUFBLElBQzlDLEdBQUUsRUFBRTtBQUNMLFFBQUksY0FBY0EsT0FBTSxZQUFZLFNBQVUsT0FBTztBQUNuRCxVQUFJLFNBQVMsV0FBVyxVQUFVLE1BQU0sZUFBZSxDQUFDLEVBQUU7QUFDMUQsdUJBQWlCLE9BQU8sTUFBTTtBQUFBLElBQ2xDLEdBQUssQ0FBQyxnQkFBZ0IsQ0FBQztBQUNyQixRQUFJLGlCQUFpQkEsT0FBTSxZQUFZLFNBQVUsSUFBSTtBQUVuRCxVQUFJLENBQUMsR0FBSTtBQUNULFVBQUksYUFBYXpSLE9BQU0sd0JBQXdCO0FBQUEsUUFDN0MsU0FBUztBQUFBLE1BQ2YsSUFBUTtBQUNKLFNBQUcsaUJBQWlCLFNBQVMsU0FBUyxVQUFVO0FBQ2hELFNBQUcsaUJBQWlCLGNBQWMsY0FBYyxVQUFVO0FBQzFELFNBQUcsaUJBQWlCLGFBQWEsYUFBYSxVQUFVO0FBQUEsSUFDekQsR0FBRSxDQUFDLGFBQWEsY0FBYyxPQUFPLENBQUM7QUFDdkMsUUFBSSxnQkFBZ0J5UixPQUFNLFlBQVksU0FBVSxJQUFJO0FBRWxELFVBQUksQ0FBQyxHQUFJO0FBQ1QsU0FBRyxvQkFBb0IsU0FBUyxTQUFTLEtBQUs7QUFDOUMsU0FBRyxvQkFBb0IsY0FBYyxjQUFjLEtBQUs7QUFDeEQsU0FBRyxvQkFBb0IsYUFBYSxhQUFhLEtBQUs7QUFBQSxJQUN2RCxHQUFFLENBQUMsYUFBYSxjQUFjLE9BQU8sQ0FBQztBQUN2QyxJQUFBQSxPQUFNLFVBQVUsV0FBWTtBQUMxQixVQUFJLENBQUMsVUFBVztBQUNoQixVQUFJLFVBQVUsYUFBYTtBQUMzQixxQkFBZSxPQUFPO0FBQ3RCLGFBQU8sV0FBWTtBQUNqQixzQkFBYyxPQUFPO0FBQUEsTUFDdEI7QUFBQSxJQUNGLEdBQUUsQ0FBQyxXQUFXLGdCQUFnQixhQUFhLENBQUM7QUFDN0MsV0FBTyxTQUFVLFNBQVM7QUFDeEIsbUJBQWEsVUFBVTtBQUFBLElBQ3hCO0FBQUEsRUFDSDtBQUVBLE1BQUl1aUIsY0FBYSxDQUFDLGFBQWEsVUFBVSxZQUFZLGdCQUFnQixVQUFVO0FBQy9FLE1BQUlDLGVBQWM7QUFBQSxJQUNoQixXQUFXO0FBQUE7QUFBQSxJQUVYLFVBQVU7QUFBQSxJQUNWLFVBQVU7QUFBQSxJQUNWLFFBQVE7QUFBQSxFQUNUO0FBQ0QsV0FBU0Msa0JBQWlCejBCLElBQUc7QUFDM0IsUUFBSUEsR0FBRSxXQUFZLENBQUFBLEdBQUUsZUFBZ0I7QUFBQSxFQUN0QztBQUNBLFdBQVMwMEIsZ0JBQWUxMEIsSUFBRztBQUN6QixJQUFBQSxHQUFFLGdCQUFpQjtBQUFBLEVBQ3JCO0FBQ0EsV0FBUzIwQix3QkFBdUI7QUFDOUIsUUFBSSxNQUFNLEtBQUs7QUFDZixRQUFJLGNBQWMsS0FBSztBQUN2QixRQUFJLGdCQUFnQixNQUFNLEtBQUs7QUFDL0IsUUFBSSxRQUFRLEdBQUc7QUFDYixXQUFLLFlBQVk7QUFBQSxJQUNyQixXQUFhLGtCQUFrQixhQUFhO0FBQ3hDLFdBQUssWUFBWSxNQUFNO0FBQUEsSUFDM0I7QUFBQSxFQUNBO0FBSUEsV0FBU0MsaUJBQWdCO0FBQ3ZCLFdBQU8sa0JBQWtCLFVBQVUsVUFBVTtBQUFBLEVBQy9DO0FBQ0EsTUFBSUMsYUFBWSxDQUFDLEVBQUUsT0FBTyxXQUFXLGVBQWUsT0FBTyxZQUFZLE9BQU8sU0FBUztBQUN2RixNQUFJQyxxQkFBb0I7QUFDeEIsTUFBSUMsbUJBQWtCO0FBQUEsSUFDcEIsU0FBUztBQUFBLElBQ1QsU0FBUztBQUFBLEVBQ1Y7QUFDRCxXQUFTQyxlQUFjNW9CLE9BQU07QUFDM0IsUUFBSSxZQUFZQSxNQUFLLFdBQ25CLHdCQUF3QkEsTUFBSyxzQkFDN0IsdUJBQXVCLDBCQUEwQixTQUFTLE9BQU87QUFDbkUsUUFBSSxpQkFBaUI0RixPQUFNLE9BQU8sRUFBRTtBQUNwQyxRQUFJLGVBQWVBLE9BQU0sT0FBTyxJQUFJO0FBQ3BDLFFBQUksZ0JBQWdCQSxPQUFNLFlBQVksU0FBVSxtQkFBbUI7QUFDakUsVUFBSSxDQUFDNmlCLFdBQVc7QUFDaEIsVUFBSSxTQUFTLFNBQVM7QUFDdEIsVUFBSSxjQUFjLFVBQVUsT0FBTztBQUNuQyxVQUFJLHNCQUFzQjtBQUV4QixRQUFBTixZQUFXLFFBQVEsU0FBVSxLQUFLO0FBQ2hDLGNBQUksTUFBTSxlQUFlLFlBQVksR0FBRztBQUN4Qyx5QkFBZSxRQUFRLEdBQUcsSUFBSTtBQUFBLFFBQ3RDLENBQU87QUFBQSxNQUNQO0FBR0ksVUFBSSx3QkFBd0JPLHFCQUFvQixHQUFHO0FBQ2pELFlBQUksaUJBQWlCLFNBQVMsZUFBZSxRQUFRLGNBQWMsRUFBRSxLQUFLO0FBQzFFLFlBQUksY0FBYyxTQUFTLE9BQU8sU0FBUyxLQUFLLGNBQWM7QUFDOUQsWUFBSSxrQkFBa0IsT0FBTyxhQUFhLGNBQWMsa0JBQWtCO0FBQzFFLGVBQU8sS0FBS04sWUFBVyxFQUFFLFFBQVEsU0FBVSxLQUFLO0FBQzlDLGNBQUksTUFBTUEsYUFBWSxHQUFHO0FBQ3pCLGNBQUksYUFBYTtBQUNmLHdCQUFZLEdBQUcsSUFBSTtBQUFBLFVBQzdCO0FBQUEsUUFDQSxDQUFPO0FBQ0QsWUFBSSxhQUFhO0FBQ2Ysc0JBQVksZUFBZSxHQUFHLE9BQU8saUJBQWlCLElBQUk7QUFBQSxRQUNsRTtBQUFBLE1BQ0E7QUFHSSxVQUFJLFVBQVVJLGtCQUFpQjtBQUU3QixlQUFPLGlCQUFpQixhQUFhSCxtQkFBa0JNLGdCQUFlO0FBR3RFLFlBQUksbUJBQW1CO0FBQ3JCLDRCQUFrQixpQkFBaUIsY0FBY0osdUJBQXNCSSxnQkFBZTtBQUN0Riw0QkFBa0IsaUJBQWlCLGFBQWFMLGlCQUFnQkssZ0JBQWU7QUFBQSxRQUN2RjtBQUFBLE1BQ0E7QUFHSSxNQUFBRCxzQkFBcUI7QUFBQSxJQUN6QixHQUFLLENBQUMsb0JBQW9CLENBQUM7QUFDekIsUUFBSSxtQkFBbUI5aUIsT0FBTSxZQUFZLFNBQVUsbUJBQW1CO0FBQ3BFLFVBQUksQ0FBQzZpQixXQUFXO0FBQ2hCLFVBQUksU0FBUyxTQUFTO0FBQ3RCLFVBQUksY0FBYyxVQUFVLE9BQU87QUFHbkMsTUFBQUMscUJBQW9CLEtBQUssSUFBSUEscUJBQW9CLEdBQUcsQ0FBQztBQUdyRCxVQUFJLHdCQUF3QkEscUJBQW9CLEdBQUc7QUFDakQsUUFBQVAsWUFBVyxRQUFRLFNBQVUsS0FBSztBQUNoQyxjQUFJLE1BQU0sZUFBZSxRQUFRLEdBQUc7QUFDcEMsY0FBSSxhQUFhO0FBQ2Ysd0JBQVksR0FBRyxJQUFJO0FBQUEsVUFDN0I7QUFBQSxRQUNBLENBQU87QUFBQSxNQUNQO0FBR0ksVUFBSSxVQUFVSyxrQkFBaUI7QUFDN0IsZUFBTyxvQkFBb0IsYUFBYUgsbUJBQWtCTSxnQkFBZTtBQUN6RSxZQUFJLG1CQUFtQjtBQUNyQiw0QkFBa0Isb0JBQW9CLGNBQWNKLHVCQUFzQkksZ0JBQWU7QUFDekYsNEJBQWtCLG9CQUFvQixhQUFhTCxpQkFBZ0JLLGdCQUFlO0FBQUEsUUFDMUY7QUFBQSxNQUNBO0FBQUEsSUFDQSxHQUFLLENBQUMsb0JBQW9CLENBQUM7QUFDekIsSUFBQS9pQixPQUFNLFVBQVUsV0FBWTtBQUMxQixVQUFJLENBQUMsVUFBVztBQUNoQixVQUFJLFVBQVUsYUFBYTtBQUMzQixvQkFBYyxPQUFPO0FBQ3JCLGFBQU8sV0FBWTtBQUNqQix5QkFBaUIsT0FBTztBQUFBLE1BQ3pCO0FBQUEsSUFDRixHQUFFLENBQUMsV0FBVyxlQUFlLGdCQUFnQixDQUFDO0FBQy9DLFdBQU8sU0FBVSxTQUFTO0FBQ3hCLG1CQUFhLFVBQVU7QUFBQSxJQUN4QjtBQUFBLEVBQ0g7QUFFQSxNQUFJcUssbUJBQWtCLFNBQVNBLGlCQUFnQixPQUFPO0FBQ3BELFFBQUksVUFBVSxNQUFNO0FBQ3BCLFdBQU8sUUFBUSxjQUFjLGlCQUFpQixRQUFRLGNBQWMsY0FBYyxLQUFNO0FBQUEsRUFDekY7QUFDRCxNQUFJNFksV0FBVTtBQUFBLElBQ1osTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLEVBQ1Q7QUFDRCxXQUFTQyxlQUFjOW9CLE9BQU07QUFDM0IsUUFBSSxXQUFXQSxNQUFLLFVBQ2xCLGNBQWNBLE1BQUssYUFDbkIsc0JBQXNCQSxNQUFLLGdCQUMzQixpQkFBaUIsd0JBQXdCLFNBQVMsT0FBTyxxQkFDekQsaUJBQWlCQSxNQUFLLGdCQUN0QixnQkFBZ0JBLE1BQUssZUFDckIsY0FBY0EsTUFBSyxhQUNuQixhQUFhQSxNQUFLO0FBQ3BCLFFBQUkseUJBQXlCa29CLGtCQUFpQjtBQUFBLE1BQzVDLFdBQVc7QUFBQSxNQUNYO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDSixDQUFHO0FBQ0QsUUFBSSxzQkFBc0JVLGVBQWM7QUFBQSxNQUN0QyxXQUFXO0FBQUEsSUFDZixDQUFHO0FBQ0QsUUFBSSxZQUFZLFNBQVMxWSxXQUFVLFNBQVM7QUFDMUMsNkJBQXVCLE9BQU87QUFDOUIsMEJBQW9CLE9BQU87QUFBQSxJQUM1QjtBQUNELFdBQU93VSxPQUFNLElBQUk5ZSxPQUFNLFVBQVUsTUFBTSxlQUFlOGUsT0FBTSxJQUFJLE9BQU87QUFBQSxNQUNyRSxTQUFTelU7QUFBQSxNQUNULEtBQUs0WTtBQUFBLElBQ1QsQ0FBRyxHQUFHLFNBQVMsU0FBUyxDQUFDO0FBQUEsRUFDekI7QUFFQSxNQUFJemQsU0FBUTtBQUFBLElBQ1YsTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLEVBQ1Q7QUFDRCxNQUFJK0UsaUJBQWdCLFNBQVNBLGVBQWNuUSxPQUFNO0FBQy9DLFFBQUksT0FBT0EsTUFBSyxNQUNkb1EsV0FBVXBRLE1BQUs7QUFDakIsV0FBTzBrQixPQUFNLElBQUksU0FBUztBQUFBLE1BQ3hCLFVBQVU7QUFBQSxNQUNWO0FBQUEsTUFDQSxVQUFVO0FBQUEsTUFDVixlQUFlO0FBQUEsTUFDZixTQUFTdFU7QUFBQSxNQUNULEtBQUtoRjtBQUFBLE1BR0wsT0FBTztBQUFBLE1BQ1AsVUFBVSxTQUFTbEwsWUFBVztBQUFBLE1BQUE7QUFBQSxJQUNsQyxDQUFHO0FBQUEsRUFDRjtBQUNELE1BQUk2b0IsbUJBQWtCNVk7QUFJdEIsV0FBUzZZLGNBQWFqdEIsS0FBSTtBQUN4QixRQUFJO0FBQ0osV0FBTyxPQUFPLFdBQVcsZUFBZSxPQUFPLGFBQWEsT0FBT0EsSUFBRyxPQUFPLHdCQUF3QixPQUFPLFVBQVUsZUFBZSxPQUFPLFFBQVEsMEJBQTBCLFNBQVMsU0FBUyxzQkFBc0IsYUFBYSxPQUFPLFVBQVUsUUFBUSxJQUFJO0FBQUEsRUFDbFE7QUFDQSxXQUFTa3RCLFlBQVc7QUFDbEIsV0FBT0QsY0FBYSxVQUFVO0FBQUEsRUFDaEM7QUFDQSxXQUFTM1ksU0FBUTtBQUNmLFdBQU8yWSxjQUFhLE9BQU87QUFBQSxFQUM3QjtBQUNBLFdBQVNFLFVBQVM7QUFDaEIsV0FBT0YsY0FBYSxRQUFRO0FBQUEsSUFFNUIzWSxPQUFPLEtBQUksVUFBVSxpQkFBaUI7QUFBQSxFQUN4QztBQUNBLFdBQVN3SCxTQUFRO0FBQ2YsV0FBT29SLFVBQVUsS0FBSUMsUUFBUTtBQUFBLEVBQy9CO0FBQ0EsV0FBUzlaLGlCQUFnQjtBQUN2QixXQUFPaUIsT0FBTyxLQUFJd0gsT0FBTztBQUFBLEVBQzNCO0FBRUEsTUFBSXZILG9CQUFtQixTQUFTQSxrQkFBaUIsT0FBTztBQUN0RCxXQUFPLE1BQU07QUFBQSxFQUNkO0FBQ0QsTUFBSTZZLG9CQUFtQixTQUFTNVosZ0JBQWUsUUFBUTtBQUNyRCxXQUFPLE9BQU87QUFBQSxFQUNmO0FBQ0QsTUFBSTZaLG9CQUFtQixTQUFTN1ksZ0JBQWUsUUFBUTtBQUNyRCxXQUFPLE9BQU87QUFBQSxFQUNmO0FBQ0QsTUFBSWYsb0JBQW1CLFNBQVNBLGtCQUFpQixRQUFRO0FBQ3ZELFdBQU8sQ0FBQyxDQUFDLE9BQU87QUFBQSxFQUNqQjtBQUVELE1BQUk2WixpQkFBZ0I7QUFBQSxJQUNsQixnQkFBZ0JsMUIsT0FBTTtBQUFBLElBQ3RCLFdBQVdBLE9BQU07QUFBQSxJQUNqQixTQUFTQSxPQUFNO0FBQUEsSUFDZixtQkFBbUJBLE9BQU07QUFBQSxJQUN6QixPQUFPQSxPQUFNO0FBQUEsSUFDYixjQUFjQSxPQUFNO0FBQUEsSUFDcEIscUJBQXFCQSxPQUFNO0FBQUEsSUFDM0Isb0JBQW9CQSxPQUFNO0FBQUEsSUFDMUIsT0FBT0EsT0FBTTtBQUFBLElBQ2Isa0JBQWtCQSxPQUFNO0FBQUEsSUFDeEIsZ0JBQWdCQSxPQUFNO0FBQUEsSUFDdEIsTUFBTUEsT0FBTTtBQUFBLElBQ1osVUFBVUEsT0FBTTtBQUFBLElBQ2hCLFlBQVlBLE9BQU07QUFBQSxJQUNsQixZQUFZQSxPQUFNO0FBQUEsSUFDbEIsaUJBQWlCQSxPQUFNO0FBQUEsSUFDdkIsa0JBQWtCQSxPQUFNO0FBQUEsSUFDeEIsa0JBQWtCQSxPQUFNO0FBQUEsSUFDeEIsUUFBUUEsT0FBTTtBQUFBLElBQ2QsYUFBYUEsT0FBTTtBQUFBLElBQ25CLGFBQWFBLE9BQU07QUFBQSxJQUNuQixnQkFBZ0JBLE9BQU07QUFBQSxFQUN2QjtBQUlELFdBQVMsWUFBWSxRQUFRO0FBQzNCLFFBQUksU0FBUyxVQUFVLFNBQVMsS0FBSyxVQUFVLENBQUMsTUFBTSxTQUFZLFVBQVUsQ0FBQyxJQUFJLENBQUU7QUFFbkYsUUFBSSxTQUFTaU0sZUFBYyxDQUFFLEdBQUUsTUFBTTtBQUdyQyxXQUFPLEtBQUssTUFBTSxFQUFFLFFBQVEsU0FBVSxhQUFhO0FBQ2pELFVBQUksTUFBTTtBQUNWLFVBQUksT0FBTyxHQUFHLEdBQUc7QUFDZixlQUFPLEdBQUcsSUFBSSxTQUFVLE9BQU8sT0FBTztBQUNwQyxpQkFBTyxPQUFPLEdBQUcsRUFBRSxPQUFPLEdBQUcsRUFBRSxPQUFPLEtBQUssR0FBRyxLQUFLO0FBQUEsUUFDcEQ7QUFBQSxNQUNQLE9BQVc7QUFDTCxlQUFPLEdBQUcsSUFBSSxPQUFPLEdBQUc7QUFBQSxNQUM5QjtBQUFBLElBQ0EsQ0FBRztBQUNELFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSXVMLFVBQVM7QUFBQSxJQUNYLFNBQVM7QUFBQSxJQUNULFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxJQUNYLFFBQVE7QUFBQSxJQUNSLGFBQWE7QUFBQSxJQUNiLFVBQVU7QUFBQSxJQUNWLFVBQVU7QUFBQSxJQUNWLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxFQUNaO0FBQ0QsTUFBSUYsZ0JBQWU7QUFFbkIsTUFBSU8sWUFBVztBQUVmLE1BQUlYLGlCQUFnQjtBQUVwQixNQUFJaWUsY0FBYXRkLFlBQVc7QUFDNUIsTUFBSU4sV0FBVTtBQUFBLElBQ1osVUFBVU07QUFBQSxJQUNWLGVBQWVYO0FBQUEsSUFDZixZQUFZaWU7QUFBQSxFQUNiO0FBQ0QsTUFBSUMsZ0JBQWU7QUFBQSxJQUNqQixjQUFjOWQ7QUFBQSxJQUNkLFFBQVFFO0FBQUEsSUFDUixTQUFTRDtBQUFBLEVBQ1Y7QUFFRCxNQUFJOGQsZ0JBQWU7QUFBQSxJQUNqQixhQUFhO0FBQUEsSUFDYix1QkFBdUI7QUFBQSxJQUN2QixtQkFBbUJyMUIsT0FBTSxlQUFnQjtBQUFBLElBQ3pDLG1CQUFtQixDQUFDQSxPQUFNLGVBQWdCO0FBQUEsSUFDMUMsWUFBWSxDQUFFO0FBQUEsSUFDZCxtQkFBbUI7QUFBQSxJQUNuQixtQkFBbUI7QUFBQSxJQUNuQixZQUFZLENBQUU7QUFBQSxJQUNkLDBCQUEwQjtBQUFBLElBQzFCLG1CQUFtQjtBQUFBLElBQ25CLGNBQWM0YixjQUFjO0FBQUEsSUFDNUIsa0JBQWtCTztBQUFBLElBQ2xCLGdCQUFnQjZZO0FBQUEsSUFDaEIsZ0JBQWdCQztBQUFBLElBQ2hCLFlBQVk7QUFBQSxJQUNaLFdBQVc7QUFBQSxJQUNYLFNBQVM7QUFBQSxJQUNULE9BQU87QUFBQSxJQUNQLGNBQWM7QUFBQSxJQUNkLGtCQUFrQjVaO0FBQUEsSUFDbEIsZ0JBQWdCLFNBQVMyQixrQkFBaUI7QUFDeEMsYUFBTztBQUFBLElBQ1I7QUFBQSxJQUNELGVBQWU7QUFBQSxJQUNmLGVBQWU7QUFBQSxJQUNmLFlBQVk7QUFBQSxJQUNaLGVBQWU7QUFBQSxJQUNmLGNBQWM7QUFBQSxJQUNkLHVCQUF1QjtBQUFBLElBQ3ZCLDBCQUEwQixDQUFDaGQsT0FBTSxlQUFnQjtBQUFBLElBQ2pELGtCQUFrQixTQUFTaWQsb0JBQW1CO0FBQzVDLGFBQU87QUFBQSxJQUNSO0FBQUEsSUFDRCxpQkFBaUI7QUFBQSxJQUNqQixpQkFBaUI7QUFBQSxJQUNqQixTQUFTLENBQUU7QUFBQSxJQUNYLFVBQVU7QUFBQSxJQUNWLGFBQWE7QUFBQSxJQUNiLG9CQUFvQixTQUFTM0Isb0JBQW1CelAsT0FBTTtBQUNwRCxVQUFJbUQsU0FBUW5ELE1BQUs7QUFDakIsYUFBTyxHQUFHLE9BQU9tRCxRQUFPLFNBQVMsRUFBRSxPQUFPQSxXQUFVLElBQUksTUFBTSxJQUFJLFlBQVk7QUFBQSxJQUMvRTtBQUFBLElBQ0QsUUFBUSxDQUFFO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixpQkFBaUI7QUFBQSxJQUNqQixVQUFVO0FBQUEsRUFDWDtBQUNELFdBQVNzbUIscUJBQW9CLE9BQU8sUUFBUSxhQUFhdDFCLFFBQU87QUFDOUQsUUFBSXNZLGNBQWFpZCxtQkFBa0IsT0FBTyxRQUFRLFdBQVc7QUFDN0QsUUFBSSxhQUFhQyxtQkFBa0IsT0FBTyxRQUFRLFdBQVc7QUFDN0QsUUFBSSxRQUFRcGEsZ0JBQWUsT0FBTyxNQUFNO0FBQ3hDLFFBQUksUUFBUWdCLGdCQUFlLE9BQU8sTUFBTTtBQUN4QyxXQUFPO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixZQUFZOUQ7QUFBQSxNQUNaO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBLE9BQU90WTtBQUFBLElBQ1I7QUFBQSxFQUNIO0FBQ0EsV0FBU3kxQix5QkFBd0IsT0FBTyxhQUFhO0FBQ25ELFdBQU8sTUFBTSxRQUFRLElBQUksU0FBVSxlQUFlLG9CQUFvQjtBQUNwRSxVQUFJLGFBQWEsZUFBZTtBQUM5QixZQUFJLHFCQUFxQixjQUFjLFFBQVEsSUFBSSxTQUFVLFFBQVEsYUFBYTtBQUNoRixpQkFBT0gscUJBQW9CLE9BQU8sUUFBUSxhQUFhLFdBQVc7QUFBQSxRQUMxRSxDQUFPLEVBQUUsT0FBTyxTQUFValosb0JBQW1CO0FBQ3JDLGlCQUFPcVosYUFBWSxPQUFPclosa0JBQWlCO0FBQUEsUUFDbkQsQ0FBTztBQUNELGVBQU8sbUJBQW1CLFNBQVMsSUFBSTtBQUFBLFVBQ3JDLE1BQU07QUFBQSxVQUNOLE1BQU07QUFBQSxVQUNOLFNBQVM7QUFBQSxVQUNULE9BQU87QUFBQSxRQUNmLElBQVU7QUFBQSxNQUNWO0FBQ0ksVUFBSSxvQkFBb0JpWixxQkFBb0IsT0FBTyxlQUFlLGFBQWEsa0JBQWtCO0FBQ2pHLGFBQU9JLGFBQVksT0FBTyxpQkFBaUIsSUFBSSxvQkFBb0I7QUFBQSxJQUN2RSxDQUFHLEVBQUUsT0FBTzExQixPQUFNLFVBQVU7QUFBQSxFQUM1QjtBQUNBLFdBQVMyMUIsNkNBQTRDLG9CQUFvQjtBQUN2RSxXQUFPLG1CQUFtQixPQUFPLFNBQVUsb0JBQW9CLG1CQUFtQjtBQUNoRixVQUFJLGtCQUFrQixTQUFTLFNBQVM7QUFDdEMsMkJBQW1CLEtBQUssTUFBTSxvQkFBb0J0RixvQkFBbUIsa0JBQWtCLFFBQVEsSUFBSSxTQUFVLFFBQVE7QUFDbkgsaUJBQU8sT0FBTztBQUFBLFFBQ2YsQ0FBQSxDQUFDLENBQUM7QUFBQSxNQUNULE9BQVc7QUFDTCwyQkFBbUIsS0FBSyxrQkFBa0IsSUFBSTtBQUFBLE1BQ3BEO0FBQ0ksYUFBTztBQUFBLElBQ1IsR0FBRSxFQUFFO0FBQUEsRUFDUDtBQUNBLFdBQVN1Riw4QkFBNkIsb0JBQW9CdFosV0FBVTtBQUNsRSxXQUFPLG1CQUFtQixPQUFPLFNBQVUsb0JBQW9CLG1CQUFtQjtBQUNoRixVQUFJLGtCQUFrQixTQUFTLFNBQVM7QUFDdEMsMkJBQW1CLEtBQUssTUFBTSxvQkFBb0IrVCxvQkFBbUIsa0JBQWtCLFFBQVEsSUFBSSxTQUFVLFFBQVE7QUFDbkgsaUJBQU87QUFBQSxZQUNMLE1BQU0sT0FBTztBQUFBLFlBQ2IsSUFBSSxHQUFHLE9BQU8vVCxXQUFVLEdBQUcsRUFBRSxPQUFPLGtCQUFrQixPQUFPLEdBQUcsRUFBRSxPQUFPLE9BQU8sS0FBSztBQUFBLFVBQ3RGO0FBQUEsUUFDRixDQUFBLENBQUMsQ0FBQztBQUFBLE1BQ1QsT0FBVztBQUNMLDJCQUFtQixLQUFLO0FBQUEsVUFDdEIsTUFBTSxrQkFBa0I7QUFBQSxVQUN4QixJQUFJLEdBQUcsT0FBT0EsV0FBVSxHQUFHLEVBQUUsT0FBTyxrQkFBa0IsS0FBSztBQUFBLFFBQ25FLENBQU87QUFBQSxNQUNQO0FBQ0ksYUFBTztBQUFBLElBQ1IsR0FBRSxFQUFFO0FBQUEsRUFDUDtBQUNBLFdBQVN1Wix1QkFBc0IsT0FBTyxhQUFhO0FBQ2pELFdBQU9GLDZDQUE0Q0YseUJBQXdCLE9BQU8sV0FBVyxDQUFDO0FBQUEsRUFDaEc7QUFDQSxXQUFTQyxhQUFZLE9BQU8sbUJBQW1CO0FBQzdDLFFBQUksb0JBQW9CLE1BQU0sWUFDNUIsYUFBYSxzQkFBc0IsU0FBUyxLQUFLO0FBQ25ELFFBQUluMUIsUUFBTyxrQkFBa0IsTUFDM0IsYUFBYSxrQkFBa0IsWUFDL0IsUUFBUSxrQkFBa0IsT0FDMUIsUUFBUSxrQkFBa0I7QUFDNUIsWUFBUSxDQUFDaWMsMkJBQTBCLEtBQUssS0FBSyxDQUFDLGVBQWVzWixlQUFjLE9BQU87QUFBQSxNQUNoRjtBQUFBLE1BQ0E7QUFBQSxNQUNBLE1BQU12MUI7QUFBQSxJQUNQLEdBQUUsVUFBVTtBQUFBLEVBQ2Y7QUFDQSxXQUFTdzFCLHFCQUFvQixPQUFPLGlCQUFpQjtBQUNuRCxRQUFJLGVBQWUsTUFBTSxjQUN2QixrQkFBa0IsTUFBTTtBQUMxQixRQUFJLG1CQUFtQixnQkFBZ0IsUUFBUSxZQUFZO0FBQzNELFFBQUksbUJBQW1CLElBQUk7QUFDekIsVUFBSSxtQkFBbUIsZ0JBQWdCLFFBQVEsWUFBWTtBQUMzRCxVQUFJLG1CQUFtQixJQUFJO0FBRXpCLGVBQU87QUFBQSxNQUNiLFdBQWUsbUJBQW1CLGdCQUFnQixRQUFRO0FBR3BELGVBQU8sZ0JBQWdCLGdCQUFnQjtBQUFBLE1BQzdDO0FBQUEsSUFDQTtBQUNFLFdBQU87QUFBQSxFQUNUO0FBQ0EsV0FBU0Msc0JBQXFCLE9BQU9weEIsVUFBUztBQUM1QyxRQUFJLG9CQUFvQixNQUFNO0FBQzlCLFdBQU8scUJBQXFCQSxTQUFRLFFBQVEsaUJBQWlCLElBQUksS0FBSyxvQkFBb0JBLFNBQVEsQ0FBQztBQUFBLEVBQ3JHO0FBQ0EsTUFBSTJYLHNCQUFxQixTQUFTQSxvQkFBbUIseUJBQXlCLGVBQWU7QUFDM0YsUUFBSTtBQUNKLFFBQUksbUJBQW1CLHdCQUF3Qix3QkFBd0IsS0FBSyxTQUFVLFFBQVE7QUFDNUYsYUFBTyxPQUFPLFNBQVM7QUFBQSxJQUMzQixDQUFHLE9BQU8sUUFBUSwwQkFBMEIsU0FBUyxTQUFTLHNCQUFzQjtBQUNsRixXQUFPLG1CQUFtQjtBQUFBLEVBQzNCO0FBQ0QsTUFBSW5CLGtCQUFpQixTQUFTQSxnQkFBZSxPQUFPN2EsT0FBTTtBQUN4RCxXQUFPLE1BQU0sZUFBZUEsS0FBSTtBQUFBLEVBQ2pDO0FBQ0QsTUFBSTZiLGtCQUFpQixTQUFTQSxnQkFBZSxPQUFPN2IsT0FBTTtBQUN4RCxXQUFPLE1BQU0sZUFBZUEsS0FBSTtBQUFBLEVBQ2pDO0FBQ0QsV0FBU2cxQixtQkFBa0IsT0FBTyxRQUFRLGFBQWE7QUFDckQsV0FBTyxPQUFPLE1BQU0scUJBQXFCLGFBQWEsTUFBTSxpQkFBaUIsUUFBUSxXQUFXLElBQUk7QUFBQSxFQUN0RztBQUNBLFdBQVNDLG1CQUFrQixPQUFPLFFBQVEsYUFBYTtBQUNyRCxRQUFJLFlBQVksUUFBUSxNQUFNLElBQUksR0FBSSxRQUFPO0FBQzdDLFFBQUksT0FBTyxNQUFNLHFCQUFxQixZQUFZO0FBQ2hELGFBQU8sTUFBTSxpQkFBaUIsUUFBUSxXQUFXO0FBQUEsSUFDckQ7QUFDRSxRQUFJLFlBQVlwWixnQkFBZSxPQUFPLE1BQU07QUFDNUMsV0FBTyxZQUFZLEtBQUssU0FBVTlkLElBQUc7QUFDbkMsYUFBTzhkLGdCQUFlLE9BQU85ZCxFQUFDLE1BQU07QUFBQSxJQUN4QyxDQUFHO0FBQUEsRUFDSDtBQUNBLFdBQVN3M0IsZUFBYyxPQUFPLFFBQVEsWUFBWTtBQUNoRCxXQUFPLE1BQU0sZUFBZSxNQUFNLGFBQWEsUUFBUSxVQUFVLElBQUk7QUFBQSxFQUN2RTtBQUNBLE1BQUl0Wiw2QkFBNEIsU0FBU0EsMkJBQTBCLE9BQU87QUFDeEUsUUFBSSxzQkFBc0IsTUFBTSxxQkFDOUIsVUFBVSxNQUFNO0FBQ2xCLFFBQUksd0JBQXdCLE9BQVcsUUFBTztBQUM5QyxXQUFPO0FBQUEsRUFDUjtBQUNELE1BQUl5WixjQUFhO0FBQ2pCLE1BQUl4WixVQUFzQix5QkFBVSxZQUFZO0FBQzlDLElBQUFvVCxXQUFVcFQsU0FBUSxVQUFVO0FBQzVCLFFBQUksU0FBU3dULGNBQWF4VCxPQUFNO0FBWWhDLGFBQVNBLFFBQU8sUUFBUTtBQUN0QixVQUFJO0FBQ0osTUFBQWdULGlCQUFnQixNQUFNaFQsT0FBTTtBQUM1QixjQUFRLE9BQU8sS0FBSyxNQUFNLE1BQU07QUFDaEMsWUFBTSxRQUFRO0FBQUEsUUFDWixlQUFlO0FBQUEsUUFDZixlQUFlO0FBQUEsUUFDZixpQkFBaUI7QUFBQSxRQUNqQix5QkFBeUIsQ0FBRTtBQUFBLFFBQzNCLGNBQWM7QUFBQSxRQUNkLGVBQWU7QUFBQSxRQUNmLFdBQVc7QUFBQSxRQUNYLGFBQWEsQ0FBRTtBQUFBLFFBQ2YseUJBQXlCO0FBQUEsUUFDekIsZ0JBQWdCO0FBQUEsUUFDaEIsMEJBQTBCO0FBQUEsUUFDMUIsV0FBVztBQUFBLFFBQ1gsZ0JBQWdCO0FBQUEsTUFDakI7QUFDRCxZQUFNLG1CQUFtQjtBQUN6QixZQUFNLGNBQWM7QUFDcEIsWUFBTSxjQUFjO0FBQ3BCLFlBQU0sZ0JBQWdCO0FBQ3RCLFlBQU0sZ0JBQWdCO0FBQ3RCLFlBQU0saUJBQWlCO0FBQ3ZCLFlBQU0sZ0NBQWdDO0FBQ3RDLFlBQU0saUJBQWlCO0FBQ3ZCLFlBQU0sZ0JBQWdCeEIsZUFBZTtBQUNyQyxZQUFNLGFBQWE7QUFDbkIsWUFBTSxnQkFBZ0IsU0FBVW5KLE1BQUs7QUFDbkMsY0FBTSxhQUFhQTtBQUFBLE1BQ3BCO0FBQ0QsWUFBTSxtQkFBbUI7QUFDekIsWUFBTSxzQkFBc0IsU0FBVUEsTUFBSztBQUN6QyxjQUFNLG1CQUFtQkE7QUFBQSxNQUMxQjtBQUNELFlBQU0sY0FBYztBQUNwQixZQUFNLGlCQUFpQixTQUFVQSxNQUFLO0FBQ3BDLGNBQU0sY0FBY0E7QUFBQSxNQUNyQjtBQUNELFlBQU0sV0FBVztBQUNqQixZQUFNLGNBQWMsU0FBVUEsTUFBSztBQUNqQyxjQUFNLFdBQVdBO0FBQUEsTUFDbEI7QUFDRCxZQUFNLFFBQVEsTUFBTTtBQUNwQixZQUFNLE9BQU8sTUFBTTtBQUNuQixZQUFNLFdBQVcsU0FBVSxVQUFVLFlBQVk7QUFDL0MsWUFBSSxjQUFjLE1BQU0sT0FDdEIvRixZQUFXLFlBQVksVUFDdkIsT0FBTyxZQUFZO0FBQ3JCLG1CQUFXLE9BQU87QUFDbEIsY0FBTSxhQUFhLFVBQVUsVUFBVTtBQUN2QyxRQUFBQSxVQUFTLFVBQVUsVUFBVTtBQUFBLE1BQzlCO0FBQ0QsWUFBTSxXQUFXLFNBQVUsVUFBVSxRQUFRLFFBQVE7QUFDbkQsWUFBSSxlQUFlLE1BQU0sT0FDdkIsb0JBQW9CLGFBQWEsbUJBQ2pDLFVBQVUsYUFBYSxTQUN2QixhQUFhLGFBQWE7QUFDNUIsY0FBTSxjQUFjLElBQUk7QUFBQSxVQUN0QixRQUFRO0FBQUEsVUFDUixnQkFBZ0I7QUFBQSxRQUN4QixDQUFPO0FBQ0QsWUFBSSxtQkFBbUI7QUFDckIsZ0JBQU0sU0FBUztBQUFBLFlBQ2IsMEJBQTBCLENBQUM7QUFBQSxVQUNyQyxDQUFTO0FBQ0QsZ0JBQU0sWUFBYTtBQUFBLFFBQzNCO0FBRU0sY0FBTSxTQUFTO0FBQUEsVUFDYix5QkFBeUI7QUFBQSxRQUNqQyxDQUFPO0FBQ0QsY0FBTSxTQUFTLFVBQVU7QUFBQSxVQUN2QjtBQUFBLFVBQ0E7QUFBQSxRQUNSLENBQU87QUFBQSxNQUNGO0FBQ0QsWUFBTSxlQUFlLFNBQVUsVUFBVTtBQUN2QyxZQUFJLGVBQWUsTUFBTSxPQUN2QixvQkFBb0IsYUFBYSxtQkFDakMsVUFBVSxhQUFhLFNBQ3ZCLE9BQU8sYUFBYTtBQUN0QixZQUFJLGNBQWMsTUFBTSxNQUFNO0FBQzlCLFlBQUksYUFBYSxXQUFXLE1BQU0saUJBQWlCLFVBQVUsV0FBVztBQUN4RSxZQUFJdU0sY0FBYSxNQUFNLGlCQUFpQixVQUFVLFdBQVc7QUFDN0QsWUFBSSxZQUFZO0FBQ2QsY0FBSSxZQUFZLE1BQU0sZUFBZSxRQUFRO0FBQzdDLGdCQUFNLFNBQVN0WSxPQUFNLGtCQUFrQixZQUFZLE9BQU8sU0FBVTFCLElBQUc7QUFDckUsbUJBQU8sTUFBTSxlQUFlQSxFQUFDLE1BQU07QUFBQSxVQUM3QyxDQUFTLENBQUMsR0FBRyxtQkFBbUIsUUFBUTtBQUFBLFFBQ3hDLFdBQWlCLENBQUNnYSxhQUFZO0FBRXRCLGNBQUksU0FBUztBQUNYLGtCQUFNLFNBQVN0WSxPQUFNLGtCQUFrQixDQUFBLEVBQUcsT0FBT3F3QixvQkFBbUIsV0FBVyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxpQkFBaUIsUUFBUTtBQUFBLFVBQ25JLE9BQWU7QUFDTCxrQkFBTSxTQUFTcndCLE9BQU0sbUJBQW1CLFFBQVEsR0FBRyxlQUFlO0FBQUEsVUFDNUU7QUFBQSxRQUNBLE9BQWE7QUFDTCxnQkFBTSxhQUFhQSxPQUFNLG1CQUFtQixRQUFRLEdBQUc7QUFBQSxZQUNyRCxRQUFRO0FBQUEsWUFDUixRQUFRO0FBQUEsWUFDUjtBQUFBLFVBQ1YsQ0FBUztBQUNEO0FBQUEsUUFDUjtBQUNNLFlBQUksbUJBQW1CO0FBQ3JCLGdCQUFNLFVBQVc7QUFBQSxRQUN6QjtBQUFBLE1BQ0s7QUFDRCxZQUFNLGNBQWMsU0FBVSxjQUFjO0FBQzFDLFlBQUksVUFBVSxNQUFNLE1BQU07QUFDMUIsWUFBSSxjQUFjLE1BQU0sTUFBTTtBQUM5QixZQUFJLFlBQVksTUFBTSxlQUFlLFlBQVk7QUFDakQsWUFBSSxnQkFBZ0IsWUFBWSxPQUFPLFNBQVUxQixJQUFHO0FBQ2xELGlCQUFPLE1BQU0sZUFBZUEsRUFBQyxNQUFNO0FBQUEsUUFDM0MsQ0FBTztBQUNELFlBQUksV0FBVzBCLE9BQU0sYUFBYSxTQUFTLGVBQWUsY0FBYyxDQUFDLEtBQUssSUFBSTtBQUNsRixjQUFNLFNBQVMsVUFBVTtBQUFBLFVBQ3ZCLFFBQVE7QUFBQSxVQUNSO0FBQUEsUUFDUixDQUFPO0FBQ0QsY0FBTSxXQUFZO0FBQUEsTUFDbkI7QUFDRCxZQUFNLGFBQWEsV0FBWTtBQUM3QixZQUFJLGNBQWMsTUFBTSxNQUFNO0FBQzlCLGNBQU0sU0FBU0EsT0FBTSxhQUFhLE1BQU0sTUFBTSxTQUFTLElBQUksSUFBSSxHQUFHO0FBQUEsVUFDaEUsUUFBUTtBQUFBLFVBQ1IsZUFBZTtBQUFBLFFBQ3ZCLENBQU87QUFBQSxNQUNGO0FBQ0QsWUFBTSxXQUFXLFdBQVk7QUFDM0IsWUFBSSxVQUFVLE1BQU0sTUFBTTtBQUMxQixZQUFJLGNBQWMsTUFBTSxNQUFNO0FBQzlCLFlBQUksb0JBQW9CLFlBQVksWUFBWSxTQUFTLENBQUM7QUFDMUQsWUFBSSxnQkFBZ0IsWUFBWSxNQUFNLEdBQUcsWUFBWSxTQUFTLENBQUM7QUFDL0QsWUFBSSxXQUFXQSxPQUFNLGFBQWEsU0FBUyxlQUFlLGNBQWMsQ0FBQyxLQUFLLElBQUk7QUFDbEYsWUFBSSxtQkFBbUI7QUFDckIsZ0JBQU0sU0FBUyxVQUFVO0FBQUEsWUFDdkIsUUFBUTtBQUFBLFlBQ1IsY0FBYztBQUFBLFVBQ3hCLENBQVM7QUFBQSxRQUNUO0FBQUEsTUFDSztBQUNELFlBQU0scUJBQXFCLFNBQVUsZUFBZTtBQUNsRCxlQUFPdWMsb0JBQW1CLE1BQU0sTUFBTSx5QkFBeUIsYUFBYTtBQUFBLE1BQzdFO0FBQ0QsWUFBTSw2QkFBNkIsV0FBWTtBQUM3QyxlQUFPcVosOEJBQTZCSCx5QkFBd0IsTUFBTSxPQUFPLE1BQU0sTUFBTSxXQUFXLEdBQUcsTUFBTSxhQUFhLFFBQVEsQ0FBQztBQUFBLE1BQ2hJO0FBQ0QsWUFBTSxXQUFXLFdBQVk7QUFDM0IsZUFBTyxNQUFNLE1BQU07QUFBQSxNQUNwQjtBQUNELFlBQU0sS0FBSyxXQUFZO0FBQ3JCLGlCQUFTLE9BQU8sVUFBVSxRQUFRLE9BQU8sSUFBSSxNQUFNLElBQUksR0FBRyxPQUFPLEdBQUcsT0FBTyxNQUFNLFFBQVE7QUFDdkYsZUFBSyxJQUFJLElBQUksVUFBVSxJQUFJO0FBQUEsUUFDbkM7QUFDTSxlQUFPejFCLE9BQU0sV0FBVyxNQUFNLFFBQVEsQ0FBQyxNQUFNLE1BQU0sZUFBZSxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQUEsTUFDakY7QUFDRCxZQUFNLGlCQUFpQixTQUFVTyxPQUFNO0FBQ3JDLGVBQU82YSxnQkFBZSxNQUFNLE9BQU83YSxLQUFJO0FBQUEsTUFDeEM7QUFDRCxZQUFNLGlCQUFpQixTQUFVQSxPQUFNO0FBQ3JDLGVBQU82YixnQkFBZSxNQUFNLE9BQU83YixLQUFJO0FBQUEsTUFDeEM7QUFDRCxZQUFNLFlBQVksU0FBVSxLQUFLLE9BQU87QUFDdEMsWUFBSSxXQUFXLE1BQU0sTUFBTTtBQUMzQixZQUFJLE9BQU8yMEIsZUFBYyxHQUFHLEVBQUUsT0FBTyxRQUFRO0FBQzdDLGFBQUssWUFBWTtBQUNqQixZQUFJeFksVUFBUyxNQUFNLE1BQU0sT0FBTyxHQUFHO0FBQ25DLGVBQU9BLFVBQVNBLFFBQU8sTUFBTSxLQUFLLElBQUk7QUFBQSxNQUN2QztBQUNELFlBQU0sZ0JBQWdCLFNBQVUsS0FBSyxPQUFPO0FBQzFDLFlBQUksdUJBQXVCO0FBQzNCLGdCQUFRLHlCQUF5Qix5QkFBeUIsTUFBTSxNQUFNLFlBQVksR0FBRyxPQUFPLFFBQVEsMEJBQTBCLFNBQVMsU0FBUyxzQkFBc0IsS0FBSyx3QkFBd0IsS0FBSztBQUFBLE1BQ3pNO0FBQ0QsWUFBTSxlQUFlLFNBQVUsU0FBUztBQUN0QyxlQUFPLEdBQUcsT0FBTyxNQUFNLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxPQUFPLE9BQU87QUFBQSxNQUNqRTtBQUNELFlBQU0sZ0JBQWdCLFdBQVk7QUFDaEMsZUFBTzFjLE9BQU0sa0JBQWtCLE1BQU0sS0FBSztBQUFBLE1BQzNDO0FBQ0QsWUFBTSwwQkFBMEIsV0FBWTtBQUMxQyxlQUFPeTFCLHlCQUF3QixNQUFNLE9BQU8sTUFBTSxNQUFNLFdBQVc7QUFBQSxNQUNwRTtBQUNELFlBQU0sd0JBQXdCLFdBQVk7QUFDeEMsZUFBTyxNQUFNLE1BQU0sYUFBYSxNQUFNLHdCQUF5QixJQUFHLENBQUU7QUFBQSxNQUNyRTtBQUNELFlBQU0sd0JBQXdCLFdBQVk7QUFDeEMsZUFBT0UsNkNBQTRDLE1BQU0seUJBQXlCO0FBQUEsTUFDbkY7QUFDRCxZQUFNLHNCQUFzQixXQUFZO0FBQ3RDLGVBQU8sTUFBTSxNQUFNLGFBQWEsTUFBTSxzQkFBdUIsSUFBRyxDQUFFO0FBQUEsTUFDbkU7QUFDRCxZQUFNLGVBQWUsU0FBVSxPQUFPLFlBQVk7QUFDaEQsY0FBTSxTQUFTO0FBQUEsVUFDYixlQUFlMXBCLGVBQWM7QUFBQSxZQUMzQjtBQUFBLFVBQ1YsR0FBVyxVQUFVO0FBQUEsUUFDckIsQ0FBTztBQUFBLE1BQ0Y7QUFDRCxZQUFNLGtCQUFrQixTQUFVLE9BQU87QUFDdkMsWUFBSSxNQUFNLFdBQVcsR0FBRztBQUN0QjtBQUFBLFFBQ1I7QUFDTSxjQUFNLGdCQUFpQjtBQUN2QixjQUFNLGVBQWdCO0FBQ3RCLGNBQU0sV0FBWTtBQUFBLE1BQ25CO0FBQ0QsWUFBTSxrQkFBa0IsU0FBVSxPQUFPO0FBQ3ZDLGNBQU0sbUJBQW1CO0FBQUEsTUFDMUI7QUFDRCxZQUFNLHFCQUFxQixTQUFVLE9BQU87QUFFMUMsWUFBSSxNQUFNLGtCQUFrQjtBQUMxQjtBQUFBLFFBQ1I7QUFDTSxZQUFJLGtCQUFrQixNQUFNLE1BQU07QUFDbEMsWUFBSSxDQUFDLE1BQU0sTUFBTSxXQUFXO0FBQzFCLGNBQUksaUJBQWlCO0FBQ25CLGtCQUFNLGlCQUFpQjtBQUFBLFVBQ2pDO0FBQ1EsZ0JBQU0sV0FBWTtBQUFBLFFBQ25CLFdBQVUsQ0FBQyxNQUFNLE1BQU0sWUFBWTtBQUNsQyxjQUFJLGlCQUFpQjtBQUNuQixrQkFBTSxTQUFTLE9BQU87QUFBQSxVQUNoQztBQUFBLFFBQ0EsT0FBYTtBQUNMLGNBQUksTUFBTSxPQUFPLFlBQVksV0FBVyxNQUFNLE9BQU8sWUFBWSxZQUFZO0FBQzNFLGtCQUFNLFlBQWE7QUFBQSxVQUM3QjtBQUFBLFFBQ0E7QUFDTSxZQUFJLE1BQU0sT0FBTyxZQUFZLFdBQVcsTUFBTSxPQUFPLFlBQVksWUFBWTtBQUMzRSxnQkFBTSxlQUFnQjtBQUFBLFFBQzlCO0FBQUEsTUFDSztBQUNELFlBQU0sK0JBQStCLFNBQVUsT0FBTztBQUVwRCxZQUFJLFNBQVMsTUFBTSxTQUFTLGVBQWUsTUFBTSxXQUFXLEdBQUc7QUFDN0Q7QUFBQSxRQUNSO0FBQ00sWUFBSSxNQUFNLE1BQU0sV0FBWTtBQUM1QixZQUFJLGVBQWUsTUFBTSxPQUN2QixVQUFVLGFBQWEsU0FDdkIsYUFBYSxhQUFhO0FBQzVCLGNBQU0sV0FBWTtBQUNsQixZQUFJLFlBQVk7QUFDZCxnQkFBTSxTQUFTO0FBQUEsWUFDYiwwQkFBMEIsQ0FBQztBQUFBLFVBQ3JDLENBQVM7QUFDRCxnQkFBTSxZQUFhO0FBQUEsUUFDM0IsT0FBYTtBQUNMLGdCQUFNLFNBQVMsT0FBTztBQUFBLFFBQzlCO0FBQ00sY0FBTSxlQUFnQjtBQUFBLE1BQ3ZCO0FBQ0QsWUFBTSw0QkFBNEIsU0FBVSxPQUFPO0FBRWpELFlBQUksU0FBUyxNQUFNLFNBQVMsZUFBZSxNQUFNLFdBQVcsR0FBRztBQUM3RDtBQUFBLFFBQ1I7QUFDTSxjQUFNLFdBQVk7QUFDbEIsY0FBTSxlQUFnQjtBQUN0QixjQUFNLGlCQUFpQjtBQUN2QixZQUFJLE1BQU0sU0FBUyxZQUFZO0FBQzdCLGdCQUFNLFdBQVk7QUFBQSxRQUMxQixPQUFhO0FBQ0wscUJBQVcsV0FBWTtBQUNyQixtQkFBTyxNQUFNLFdBQVk7QUFBQSxVQUNuQyxDQUFTO0FBQUEsUUFDVDtBQUFBLE1BQ0s7QUFDRCxZQUFNLFdBQVcsU0FBVSxPQUFPO0FBQ2hDLFlBQUksT0FBTyxNQUFNLE1BQU0sc0JBQXNCLFdBQVc7QUFDdEQsY0FBSSxNQUFNLGtCQUFrQixlQUFlak0sT0FBTSxrQkFBa0IsTUFBTSxNQUFNLEdBQUc7QUFDaEYsa0JBQU0sTUFBTSxZQUFhO0FBQUEsVUFDbkM7QUFBQSxRQUNPLFdBQVUsT0FBTyxNQUFNLE1BQU0sc0JBQXNCLFlBQVk7QUFDOUQsY0FBSSxNQUFNLE1BQU0sa0JBQWtCLEtBQUssR0FBRztBQUN4QyxrQkFBTSxNQUFNLFlBQWE7QUFBQSxVQUNuQztBQUFBLFFBQ0E7QUFBQSxNQUNLO0FBQ0QsWUFBTSxxQkFBcUIsV0FBWTtBQUNyQyxjQUFNLGNBQWM7QUFBQSxNQUNyQjtBQUNELFlBQU0sbUJBQW1CLFdBQVk7QUFDbkMsY0FBTSxjQUFjO0FBQUEsTUFDckI7QUFDRCxZQUFNLGVBQWUsU0FBVWlYLFFBQU87QUFDcEMsWUFBSSxVQUFVQSxPQUFNO0FBQ3BCLFlBQUksUUFBUSxXQUFXLFFBQVEsS0FBSyxDQUFDO0FBQ3JDLFlBQUksQ0FBQyxPQUFPO0FBQ1Y7QUFBQSxRQUNSO0FBQ00sY0FBTSxnQkFBZ0IsTUFBTTtBQUM1QixjQUFNLGdCQUFnQixNQUFNO0FBQzVCLGNBQU0saUJBQWlCO0FBQUEsTUFDeEI7QUFDRCxZQUFNLGNBQWMsU0FBVStNLFFBQU87QUFDbkMsWUFBSSxVQUFVQSxPQUFNO0FBQ3BCLFlBQUksUUFBUSxXQUFXLFFBQVEsS0FBSyxDQUFDO0FBQ3JDLFlBQUksQ0FBQyxPQUFPO0FBQ1Y7QUFBQSxRQUNSO0FBQ00sWUFBSSxTQUFTLEtBQUssSUFBSSxNQUFNLFVBQVUsTUFBTSxhQUFhO0FBQ3pELFlBQUksU0FBUyxLQUFLLElBQUksTUFBTSxVQUFVLE1BQU0sYUFBYTtBQUN6RCxZQUFJLGdCQUFnQjtBQUNwQixjQUFNLGlCQUFpQixTQUFTLGlCQUFpQixTQUFTO0FBQUEsTUFDM0Q7QUFDRCxZQUFNLGFBQWEsU0FBVSxPQUFPO0FBQ2xDLFlBQUksTUFBTSxlQUFnQjtBQUsxQixZQUFJLE1BQU0sY0FBYyxDQUFDLE1BQU0sV0FBVyxTQUFTLE1BQU0sTUFBTSxLQUFLLE1BQU0sZUFBZSxDQUFDLE1BQU0sWUFBWSxTQUFTLE1BQU0sTUFBTSxHQUFHO0FBQ2xJLGdCQUFNLFVBQVc7QUFBQSxRQUN6QjtBQUdNLGNBQU0sZ0JBQWdCO0FBQ3RCLGNBQU0sZ0JBQWdCO0FBQUEsTUFDdkI7QUFDRCxZQUFNLG9CQUFvQixTQUFVLE9BQU87QUFDekMsWUFBSSxNQUFNLGVBQWdCO0FBQzFCLGNBQU0sbUJBQW1CLEtBQUs7QUFBQSxNQUMvQjtBQUNELFlBQU0sMkJBQTJCLFNBQVUsT0FBTztBQUNoRCxZQUFJLE1BQU0sZUFBZ0I7QUFDMUIsY0FBTSwwQkFBMEIsS0FBSztBQUFBLE1BQ3RDO0FBQ0QsWUFBTSw4QkFBOEIsU0FBVSxPQUFPO0FBQ25ELFlBQUksTUFBTSxlQUFnQjtBQUMxQixjQUFNLDZCQUE2QixLQUFLO0FBQUEsTUFDekM7QUFDRCxZQUFNLG9CQUFvQixTQUFVLE9BQU87QUFDekMsWUFBSSxpQkFBaUIsTUFBTSxNQUFNO0FBQ2pDLFlBQUksYUFBYSxNQUFNLGNBQWM7QUFDckMsY0FBTSxTQUFTO0FBQUEsVUFDYiwwQkFBMEI7QUFBQSxRQUNsQyxDQUFPO0FBQ0QsY0FBTSxjQUFjLFlBQVk7QUFBQSxVQUM5QixRQUFRO0FBQUEsVUFDUjtBQUFBLFFBQ1IsQ0FBTztBQUNELFlBQUksQ0FBQyxNQUFNLE1BQU0sWUFBWTtBQUMzQixnQkFBTSxXQUFZO0FBQUEsUUFDMUI7QUFBQSxNQUNLO0FBQ0QsWUFBTSxlQUFlLFNBQVUsT0FBTztBQUNwQyxZQUFJLE1BQU0sTUFBTSxTQUFTO0FBQ3ZCLGdCQUFNLE1BQU0sUUFBUSxLQUFLO0FBQUEsUUFDakM7QUFDTSxjQUFNLFNBQVM7QUFBQSxVQUNiLDBCQUEwQjtBQUFBLFVBQzFCLFdBQVc7QUFBQSxRQUNuQixDQUFPO0FBQ0QsWUFBSSxNQUFNLGtCQUFrQixNQUFNLE1BQU0saUJBQWlCO0FBQ3ZELGdCQUFNLFNBQVMsT0FBTztBQUFBLFFBQzlCO0FBQ00sY0FBTSxpQkFBaUI7QUFBQSxNQUN4QjtBQUNELFlBQU0sY0FBYyxTQUFVLE9BQU87QUFDbkMsWUFBSSxpQkFBaUIsTUFBTSxNQUFNO0FBQ2pDLFlBQUksTUFBTSxlQUFlLE1BQU0sWUFBWSxTQUFTLFNBQVMsYUFBYSxHQUFHO0FBQzNFLGdCQUFNLFNBQVMsTUFBTztBQUN0QjtBQUFBLFFBQ1I7QUFDTSxZQUFJLE1BQU0sTUFBTSxRQUFRO0FBQ3RCLGdCQUFNLE1BQU0sT0FBTyxLQUFLO0FBQUEsUUFDaEM7QUFDTSxjQUFNLGNBQWMsSUFBSTtBQUFBLFVBQ3RCLFFBQVE7QUFBQSxVQUNSO0FBQUEsUUFDUixDQUFPO0FBQ0QsY0FBTSxZQUFhO0FBQ25CLGNBQU0sU0FBUztBQUFBLFVBQ2IsY0FBYztBQUFBLFVBQ2QsV0FBVztBQUFBLFFBQ25CLENBQU87QUFBQSxNQUNGO0FBQ0QsWUFBTSxnQkFBZ0IsU0FBVSxlQUFlO0FBQzdDLFlBQUksTUFBTSxvQkFBb0IsTUFBTSxNQUFNLGtCQUFrQixlQUFlO0FBQ3pFO0FBQUEsUUFDUjtBQUNNLFlBQUlwZixXQUFVLE1BQU0sb0JBQXFCO0FBQ3pDLFlBQUkscUJBQXFCQSxTQUFRLFFBQVEsYUFBYTtBQUN0RCxjQUFNLFNBQVM7QUFBQSxVQUNiO0FBQUEsVUFDQSxpQkFBaUIscUJBQXFCLEtBQUssTUFBTSxtQkFBbUIsYUFBYSxJQUFJO0FBQUEsUUFDN0YsQ0FBTztBQUFBLE1BQ0Y7QUFDRCxZQUFNLDRCQUE0QixXQUFZO0FBQzVDLGVBQU80WCwyQkFBMEIsTUFBTSxLQUFLO0FBQUEsTUFDN0M7QUFDRCxZQUFNLG9CQUFvQixTQUFVL2MsSUFBRztBQUNyQyxRQUFBQSxHQUFFLGVBQWdCO0FBQ2xCLFFBQUFBLEdBQUUsZ0JBQWlCO0FBQ25CLGNBQU0sTUFBTztBQUFBLE1BQ2Q7QUFDRCxZQUFNLFlBQVksU0FBVSxPQUFPO0FBQ2pDLFlBQUksZUFBZSxNQUFNLE9BQ3ZCLFVBQVUsYUFBYSxTQUN2Qix3QkFBd0IsYUFBYSx1QkFDckMsb0JBQW9CLGFBQWEsbUJBQ2pDLGFBQWEsYUFBYSxZQUMxQixjQUFjLGFBQWEsYUFDM0I2WSxjQUFhLGFBQWEsWUFDMUIsYUFBYSxhQUFhLFlBQzFCLFlBQVksYUFBYSxXQUN6QixrQkFBa0IsYUFBYSxpQkFDL0Isa0JBQWtCLGFBQWE7QUFDakMsWUFBSSxjQUFjLE1BQU0sT0FDdEIsZ0JBQWdCLFlBQVksZUFDNUIsZUFBZSxZQUFZLGNBQzNCLGNBQWMsWUFBWTtBQUM1QixZQUFJQSxZQUFZO0FBQ2hCLFlBQUksT0FBTyxjQUFjLFlBQVk7QUFDbkMsb0JBQVUsS0FBSztBQUNmLGNBQUksTUFBTSxrQkFBa0I7QUFDMUI7QUFBQSxVQUNWO0FBQUEsUUFDQTtBQUdNLGNBQU0sbUJBQW1CO0FBQ3pCLGdCQUFRLE1BQU0sS0FBRztBQUFBLFVBQ2YsS0FBSztBQUNILGdCQUFJLENBQUMsV0FBVyxXQUFZO0FBQzVCLGtCQUFNLFdBQVcsVUFBVTtBQUMzQjtBQUFBLFVBQ0YsS0FBSztBQUNILGdCQUFJLENBQUMsV0FBVyxXQUFZO0FBQzVCLGtCQUFNLFdBQVcsTUFBTTtBQUN2QjtBQUFBLFVBQ0YsS0FBSztBQUFBLFVBQ0wsS0FBSztBQUNILGdCQUFJLFdBQVk7QUFDaEIsZ0JBQUksY0FBYztBQUNoQixvQkFBTSxZQUFZLFlBQVk7QUFBQSxZQUMxQyxPQUFpQjtBQUNMLGtCQUFJLENBQUMsc0JBQXVCO0FBQzVCLGtCQUFJLFNBQVM7QUFDWCxzQkFBTSxTQUFVO0FBQUEsY0FDakIsV0FBVSxhQUFhO0FBQ3RCLHNCQUFNLFdBQVk7QUFBQSxjQUNoQztBQUFBLFlBQ0E7QUFDVTtBQUFBLFVBQ0YsS0FBSztBQUNILGdCQUFJLE1BQU0sWUFBYTtBQUN2QixnQkFBSSxNQUFNLFlBQVksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUM7QUFBQTtBQUFBLFlBRzFELG1CQUFtQixNQUFNLGlCQUFpQixlQUFlLFdBQVcsR0FBRztBQUNyRTtBQUFBLFlBQ1o7QUFDVSxrQkFBTSxhQUFhLGFBQWE7QUFDaEM7QUFBQSxVQUNGLEtBQUs7QUFDSCxnQkFBSSxNQUFNLFlBQVksS0FBSztBQUd6QjtBQUFBLFlBQ1o7QUFDVSxnQkFBSSxZQUFZO0FBQ2Qsa0JBQUksQ0FBQyxjQUFlO0FBQ3BCLGtCQUFJLE1BQU0sWUFBYTtBQUN2QixvQkFBTSxhQUFhLGFBQWE7QUFDaEM7QUFBQSxZQUNaO0FBQ1U7QUFBQSxVQUNGLEtBQUs7QUFDSCxnQkFBSSxZQUFZO0FBQ2Qsb0JBQU0sU0FBUztBQUFBLGdCQUNiLDBCQUEwQjtBQUFBLGNBQ3hDLENBQWE7QUFDRCxvQkFBTSxjQUFjLElBQUk7QUFBQSxnQkFDdEIsUUFBUTtBQUFBLGdCQUNSLGdCQUFnQjtBQUFBLGNBQzlCLENBQWE7QUFDRCxvQkFBTSxZQUFhO0FBQUEsWUFDL0IsV0FBcUIsZUFBZSxtQkFBbUI7QUFDM0Msb0JBQU0sV0FBWTtBQUFBLFlBQzlCO0FBQ1U7QUFBQSxVQUNGLEtBQUs7QUFFSCxnQkFBSSxZQUFZO0FBQ2Q7QUFBQSxZQUNaO0FBQ1UsZ0JBQUksQ0FBQyxZQUFZO0FBQ2Ysb0JBQU0sU0FBUyxPQUFPO0FBQ3RCO0FBQUEsWUFDWjtBQUNVLGdCQUFJLENBQUMsY0FBZTtBQUNwQixrQkFBTSxhQUFhLGFBQWE7QUFDaEM7QUFBQSxVQUNGLEtBQUs7QUFDSCxnQkFBSSxZQUFZO0FBQ2Qsb0JBQU0sWUFBWSxJQUFJO0FBQUEsWUFDbEMsT0FBaUI7QUFDTCxvQkFBTSxTQUFTLE1BQU07QUFBQSxZQUNqQztBQUNVO0FBQUEsVUFDRixLQUFLO0FBQ0gsZ0JBQUksWUFBWTtBQUNkLG9CQUFNLFlBQVksTUFBTTtBQUFBLFlBQ3BDLE9BQWlCO0FBQ0wsb0JBQU0sU0FBUyxPQUFPO0FBQUEsWUFDbEM7QUFDVTtBQUFBLFVBQ0YsS0FBSztBQUNILGdCQUFJLENBQUMsV0FBWTtBQUNqQixrQkFBTSxZQUFZLFFBQVE7QUFDMUI7QUFBQSxVQUNGLEtBQUs7QUFDSCxnQkFBSSxDQUFDLFdBQVk7QUFDakIsa0JBQU0sWUFBWSxVQUFVO0FBQzVCO0FBQUEsVUFDRixLQUFLO0FBQ0gsZ0JBQUksQ0FBQyxXQUFZO0FBQ2pCLGtCQUFNLFlBQVksT0FBTztBQUN6QjtBQUFBLFVBQ0YsS0FBSztBQUNILGdCQUFJLENBQUMsV0FBWTtBQUNqQixrQkFBTSxZQUFZLE1BQU07QUFDeEI7QUFBQSxVQUNGO0FBQ0U7QUFBQSxRQUNWO0FBQ00sY0FBTSxlQUFnQjtBQUFBLE1BQ3ZCO0FBQ0QsWUFBTSxNQUFNLGlCQUFpQixtQkFBbUIsTUFBTSxNQUFNLGNBQWMsRUFBRTJkO0FBQzVFLFlBQU0sTUFBTSxjQUFjajJCLE9BQU0sV0FBVyxPQUFPLEtBQUs7QUFFdkQsVUFBSSxPQUFPLGNBQWMsTUFBTSxNQUFNLFlBQVksUUFBUTtBQUN2RCxZQUFJLDBCQUEwQixNQUFNLDJCQUE0QjtBQUNoRSxZQUFJLG1CQUFtQixNQUFNLHNCQUF1QjtBQUNwRCxZQUFJLGNBQWMsaUJBQWlCLFFBQVEsTUFBTSxNQUFNLFlBQVksQ0FBQyxDQUFDO0FBQ3JFLGNBQU0sTUFBTSwwQkFBMEI7QUFDdEMsY0FBTSxNQUFNLGdCQUFnQixpQkFBaUIsV0FBVztBQUN4RCxjQUFNLE1BQU0sa0JBQWtCdWMsb0JBQW1CLHlCQUF5QixpQkFBaUIsV0FBVyxDQUFDO0FBQUEsTUFDN0c7QUFDSSxhQUFPO0FBQUEsSUFDWDtBQUNFLElBQUFvVCxjQUFhbFQsU0FBUSxDQUFDO0FBQUEsTUFDcEIsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLG9CQUFvQjtBQUNsQyxhQUFLLDBCQUEyQjtBQUNoQyxhQUFLLHNCQUF1QjtBQUM1QixZQUFJLEtBQUssTUFBTSxxQkFBcUIsWUFBWSxTQUFTLGtCQUFrQjtBQUV6RSxtQkFBUyxpQkFBaUIsVUFBVSxLQUFLLFVBQVUsSUFBSTtBQUFBLFFBQy9EO0FBQ00sWUFBSSxLQUFLLE1BQU0sV0FBVztBQUN4QixlQUFLLFdBQVk7QUFBQSxRQUN6QjtBQUdNLFlBQUksS0FBSyxNQUFNLGNBQWMsS0FBSyxNQUFNLGlCQUFpQixLQUFLLGVBQWUsS0FBSyxrQkFBa0I7QUFDbEcsVUFBQXpjLE9BQU0sZUFBZSxLQUFLLGFBQWEsS0FBSyxnQkFBZ0I7QUFBQSxRQUNwRTtBQUFBLE1BQ0E7QUFBQSxJQUNBLEdBQUs7QUFBQSxNQUNELEtBQUs7QUFBQSxNQUNMLE9BQU8sU0FBUyxtQkFBbUIsV0FBVztBQUM1QyxZQUFJLGVBQWUsS0FBSyxPQUN0QnNZLGNBQWEsYUFBYSxZQUMxQixhQUFhLGFBQWE7QUFDNUIsWUFBSSxZQUFZLEtBQUssTUFBTTtBQUMzQjtBQUFBO0FBQUEsVUFFQSxhQUFhLENBQUNBLGVBQWMsVUFBVTtBQUFBLFVBRXRDLGFBQWEsY0FBYyxDQUFDLFVBQVU7QUFBQSxVQUFZO0FBQ2hELGVBQUssV0FBWTtBQUFBLFFBQ3pCO0FBQ00sWUFBSSxhQUFhQSxlQUFjLENBQUMsVUFBVSxZQUFZO0FBR3BELGVBQUssU0FBUztBQUFBLFlBQ1osV0FBVztBQUFBLFVBQ3JCLEdBQVcsS0FBSyxXQUFXO0FBQUEsUUFDM0IsV0FBaUIsQ0FBQyxhQUFhLENBQUNBLGVBQWMsVUFBVSxjQUFjLEtBQUssYUFBYSxTQUFTLGVBQWU7QUFHeEcsZUFBSyxTQUFTO0FBQUEsWUFDWixXQUFXO0FBQUEsVUFDckIsQ0FBUztBQUFBLFFBQ1Q7QUFHTSxZQUFJLEtBQUssZUFBZSxLQUFLLG9CQUFvQixLQUFLLCtCQUErQjtBQUNuRixVQUFBdFksT0FBTSxlQUFlLEtBQUssYUFBYSxLQUFLLGdCQUFnQjtBQUM1RCxlQUFLLGdDQUFnQztBQUFBLFFBQzdDO0FBQUEsTUFDQTtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLHVCQUF1QjtBQUNyQyxhQUFLLHlCQUEwQjtBQUMvQixhQUFLLHFCQUFzQjtBQUMzQixpQkFBUyxvQkFBb0IsVUFBVSxLQUFLLFVBQVUsSUFBSTtBQUFBLE1BQ2hFO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFLQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTCxPQUFPLFNBQVMsYUFBYTtBQUMzQixhQUFLLE1BQU0sV0FBWTtBQUFBLE1BQzdCO0FBQUEsSUFDQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTCxPQUFPLFNBQVMsY0FBYztBQUM1QixhQUFLLGNBQWMsSUFBSTtBQUFBLFVBQ3JCLFFBQVE7QUFBQSxVQUNSLGdCQUFnQixLQUFLLE1BQU07QUFBQSxRQUNuQyxDQUFPO0FBQ0QsYUFBSyxNQUFNLFlBQWE7QUFBQSxNQUM5QjtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLGNBQWMsVUFBVSxZQUFZO0FBQ2xELGFBQUssTUFBTSxjQUFjLFVBQVUsVUFBVTtBQUFBLE1BQ25EO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFLQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTCxPQUFPLFNBQVMsYUFBYTtBQUMzQixZQUFJLENBQUMsS0FBSyxTQUFVO0FBQ3BCLGFBQUssU0FBUyxNQUFPO0FBQUEsTUFDM0I7QUFBQSxJQUNBLEdBQUs7QUFBQSxNQUNELEtBQUs7QUFBQSxNQUNMLE9BQU8sU0FBUyxZQUFZO0FBQzFCLFlBQUksQ0FBQyxLQUFLLFNBQVU7QUFDcEIsYUFBSyxTQUFTLEtBQU07QUFBQSxNQUMxQjtBQUFBO0FBQUEsSUFHQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTCxPQUFPLFNBQVMsU0FBUyxhQUFhO0FBQ3BDLFlBQUksU0FBUztBQUNiLFlBQUksZUFBZSxLQUFLLE9BQ3RCLGNBQWMsYUFBYSxhQUMzQixZQUFZLGFBQWE7QUFDM0IsWUFBSSxtQkFBbUIsS0FBSyxzQkFBdUI7QUFDbkQsWUFBSSxjQUFjLGdCQUFnQixVQUFVLElBQUksaUJBQWlCLFNBQVM7QUFDMUUsWUFBSSxDQUFDLEtBQUssTUFBTSxTQUFTO0FBQ3ZCLGNBQUksZ0JBQWdCLGlCQUFpQixRQUFRLFlBQVksQ0FBQyxDQUFDO0FBQzNELGNBQUksZ0JBQWdCLElBQUk7QUFDdEIsMEJBQWM7QUFBQSxVQUN4QjtBQUFBLFFBQ0E7QUFHTSxhQUFLLGdDQUFnQyxFQUFFLGFBQWEsS0FBSztBQUN6RCxhQUFLLFNBQVM7QUFBQSxVQUNaLDBCQUEwQjtBQUFBLFVBQzFCLGNBQWM7QUFBQSxVQUNkLGVBQWUsaUJBQWlCLFdBQVc7QUFBQSxVQUMzQyxpQkFBaUIsS0FBSyxtQkFBbUIsaUJBQWlCLFdBQVcsQ0FBQztBQUFBLFFBQzlFLEdBQVMsV0FBWTtBQUNiLGlCQUFPLE9BQU8sV0FBWTtBQUFBLFFBQ2xDLENBQU87QUFBQSxNQUNQO0FBQUEsSUFDQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTCxPQUFPLFNBQVMsV0FBVyxXQUFXO0FBQ3BDLFlBQUksZUFBZSxLQUFLLE9BQ3RCLGNBQWMsYUFBYSxhQUMzQixlQUFlLGFBQWE7QUFHOUIsWUFBSSxDQUFDLEtBQUssTUFBTSxRQUFTO0FBQ3pCLGFBQUssU0FBUztBQUFBLFVBQ1osZUFBZTtBQUFBLFFBQ3ZCLENBQU87QUFDRCxZQUFJLGVBQWUsWUFBWSxRQUFRLFlBQVk7QUFDbkQsWUFBSSxDQUFDLGNBQWM7QUFDakIseUJBQWU7QUFBQSxRQUN2QjtBQUNNLFlBQUksWUFBWSxZQUFZLFNBQVM7QUFDckMsWUFBSSxZQUFZO0FBQ2hCLFlBQUksQ0FBQyxZQUFZLE9BQVE7QUFDekIsZ0JBQVEsV0FBUztBQUFBLFVBQ2YsS0FBSztBQUNILGdCQUFJLGlCQUFpQixHQUFHO0FBRXRCLDBCQUFZO0FBQUEsWUFDeEIsV0FBcUIsaUJBQWlCLElBQUk7QUFFOUIsMEJBQVk7QUFBQSxZQUN4QixPQUFpQjtBQUNMLDBCQUFZLGVBQWU7QUFBQSxZQUN2QztBQUNVO0FBQUEsVUFDRixLQUFLO0FBQ0gsZ0JBQUksZUFBZSxNQUFNLGVBQWUsV0FBVztBQUNqRCwwQkFBWSxlQUFlO0FBQUEsWUFDdkM7QUFDVTtBQUFBLFFBQ1Y7QUFDTSxhQUFLLFNBQVM7QUFBQSxVQUNaLGVBQWUsY0FBYztBQUFBLFVBQzdCLGNBQWMsWUFBWSxTQUFTO0FBQUEsUUFDM0MsQ0FBTztBQUFBLE1BQ1A7QUFBQSxJQUNBLEdBQUs7QUFBQSxNQUNELEtBQUs7QUFBQSxNQUNMLE9BQU8sU0FBUyxjQUFjO0FBQzVCLFlBQUksWUFBWSxVQUFVLFNBQVMsS0FBSyxVQUFVLENBQUMsTUFBTSxTQUFZLFVBQVUsQ0FBQyxJQUFJO0FBQ3BGLFlBQUksV0FBVyxLQUFLLE1BQU07QUFDMUIsWUFBSSxnQkFBZ0IsS0FBSyxNQUFNO0FBQy9CLFlBQUk0RSxXQUFVLEtBQUssb0JBQXFCO0FBQ3hDLFlBQUksQ0FBQ0EsU0FBUSxPQUFRO0FBQ3JCLFlBQUksWUFBWTtBQUNoQixZQUFJLGVBQWVBLFNBQVEsUUFBUSxhQUFhO0FBQ2hELFlBQUksQ0FBQyxlQUFlO0FBQ2xCLHlCQUFlO0FBQUEsUUFDdkI7QUFDTSxZQUFJLGNBQWMsTUFBTTtBQUN0QixzQkFBWSxlQUFlLElBQUksZUFBZSxJQUFJQSxTQUFRLFNBQVM7QUFBQSxRQUMzRSxXQUFpQixjQUFjLFFBQVE7QUFDL0IsdUJBQWEsZUFBZSxLQUFLQSxTQUFRO0FBQUEsUUFDakQsV0FBaUIsY0FBYyxVQUFVO0FBQ2pDLHNCQUFZLGVBQWU7QUFDM0IsY0FBSSxZQUFZLEVBQUcsYUFBWTtBQUFBLFFBQ3ZDLFdBQWlCLGNBQWMsWUFBWTtBQUNuQyxzQkFBWSxlQUFlO0FBQzNCLGNBQUksWUFBWUEsU0FBUSxTQUFTLEVBQUcsYUFBWUEsU0FBUSxTQUFTO0FBQUEsUUFDekUsV0FBaUIsY0FBYyxRQUFRO0FBQy9CLHNCQUFZQSxTQUFRLFNBQVM7QUFBQSxRQUNyQztBQUNNLGFBQUssZ0NBQWdDO0FBQ3JDLGFBQUssU0FBUztBQUFBLFVBQ1osZUFBZUEsU0FBUSxTQUFTO0FBQUEsVUFDaEMsY0FBYztBQUFBLFVBQ2QsaUJBQWlCLEtBQUssbUJBQW1CQSxTQUFRLFNBQVMsQ0FBQztBQUFBLFFBQ25FLENBQU87QUFBQSxNQUNQO0FBQUEsSUFDQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTDtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBS0EsU0FBU3FOLFlBQVc7QUFFbEIsY0FBSSxDQUFDLEtBQUssTUFBTSxPQUFPO0FBQ3JCLG1CQUFPbWpCO0FBQUEsVUFDZjtBQUlNLGNBQUksT0FBTyxLQUFLLE1BQU0sVUFBVSxZQUFZO0FBQzFDLG1CQUFPLEtBQUssTUFBTSxNQUFNQSxhQUFZO0FBQUEsVUFDNUM7QUFHTSxpQkFBT25wQixlQUFjQSxlQUFjLENBQUUsR0FBRW1wQixhQUFZLEdBQUcsS0FBSyxNQUFNLEtBQUs7QUFBQSxRQUM1RTtBQUFBO0FBQUEsSUFDQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTCxPQUFPLFNBQVMsaUJBQWlCO0FBQy9CLFlBQUksYUFBYSxLQUFLLFlBQ3BCLEtBQUssS0FBSyxJQUNWLFlBQVksS0FBSyxXQUNqQixnQkFBZ0IsS0FBSyxlQUNyQmoxQixZQUFXLEtBQUssVUFDaEIsZUFBZSxLQUFLLGNBQ3BCLFdBQVcsS0FBSyxVQUNoQixRQUFRLEtBQUs7QUFDZixZQUFJLFVBQVUsTUFBTSxTQUNsQixRQUFRLE1BQU0sT0FDZHlFLFdBQVUsTUFBTTtBQUNsQixZQUFJLFdBQVcsS0FBSyxTQUFVO0FBQzlCLGVBQU87QUFBQSxVQUNMO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsVUFDQSxVQUFVekU7QUFBQSxVQUNWO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxVQUNBLFNBQVN5RTtBQUFBLFVBQ1Q7QUFBQSxVQUNBLGFBQWE7QUFBQSxVQUNiO0FBQUEsVUFDQSxPQUFPLEtBQUssU0FBUTtBQUFBLFFBQ3JCO0FBQUEsTUFDUDtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLFdBQVc7QUFDekIsWUFBSSxjQUFjLEtBQUssTUFBTTtBQUM3QixlQUFPLFlBQVksU0FBUztBQUFBLE1BQ2xDO0FBQUEsSUFDQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTCxPQUFPLFNBQVMsYUFBYTtBQUMzQixlQUFPLENBQUMsQ0FBQyxLQUFLLG9CQUFtQixFQUFHO0FBQUEsTUFDMUM7QUFBQSxJQUNBLEdBQUs7QUFBQSxNQUNELEtBQUs7QUFBQSxNQUNMLE9BQU8sU0FBUyxjQUFjO0FBQzVCLFlBQUksZUFBZSxLQUFLLE9BQ3RCK1gsZUFBYyxhQUFhLGFBQzNCLFVBQVUsYUFBYTtBQUl6QixZQUFJQSxpQkFBZ0IsT0FBVyxRQUFPO0FBQ3RDLGVBQU9BO0FBQUEsTUFDYjtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTdEIsa0JBQWlCLFFBQVEsYUFBYTtBQUNwRCxlQUFPa2EsbUJBQWtCLEtBQUssT0FBTyxRQUFRLFdBQVc7QUFBQSxNQUM5RDtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLGlCQUFpQixRQUFRLGFBQWE7QUFDcEQsZUFBT0MsbUJBQWtCLEtBQUssT0FBTyxRQUFRLFdBQVc7QUFBQSxNQUM5RDtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLGFBQWEsUUFBUSxZQUFZO0FBQy9DLGVBQU9NLGVBQWMsS0FBSyxPQUFPLFFBQVEsVUFBVTtBQUFBLE1BQ3pEO0FBQUEsSUFDQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTCxPQUFPLFNBQVMsa0JBQWtCdjFCLE9BQU0sU0FBUztBQUMvQyxZQUFJLE9BQU8sS0FBSyxNQUFNLHNCQUFzQixZQUFZO0FBQ3RELGNBQUksY0FBYyxLQUFLLE1BQU07QUFDN0IsY0FBSSxlQUFlLEtBQUssTUFBTTtBQUM5QixpQkFBTyxLQUFLLE1BQU0sa0JBQWtCQSxPQUFNO0FBQUEsWUFDeEM7QUFBQSxZQUNBLFlBQVk7QUFBQSxZQUNaLGFBQWE7QUFBQSxVQUN2QixDQUFTO0FBQUEsUUFDVCxPQUFhO0FBQ0wsaUJBQU8sS0FBSyxlQUFlQSxLQUFJO0FBQUEsUUFDdkM7QUFBQSxNQUNBO0FBQUEsSUFDQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTCxPQUFPLFNBQVM0YixrQkFBaUI1YixPQUFNO0FBQ3JDLGVBQU8sS0FBSyxNQUFNLGlCQUFpQkEsS0FBSTtBQUFBLE1BQzdDO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFLQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTDtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBS0EsU0FBUyw0QkFBNEI7QUFDbkMsY0FBSSxZQUFZLFNBQVMsa0JBQWtCO0FBQ3pDLHFCQUFTLGlCQUFpQixvQkFBb0IsS0FBSyxvQkFBb0IsS0FBSztBQUM1RSxxQkFBUyxpQkFBaUIsa0JBQWtCLEtBQUssa0JBQWtCLEtBQUs7QUFBQSxVQUNoRjtBQUFBLFFBQ0E7QUFBQTtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLDJCQUEyQjtBQUN6QyxZQUFJLFlBQVksU0FBUyxxQkFBcUI7QUFDNUMsbUJBQVMsb0JBQW9CLG9CQUFvQixLQUFLLGtCQUFrQjtBQUN4RSxtQkFBUyxvQkFBb0Isa0JBQWtCLEtBQUssZ0JBQWdCO0FBQUEsUUFDNUU7QUFBQSxNQUNBO0FBQUEsSUFDQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTDtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBS0EsU0FBUyx3QkFBd0I7QUFDL0IsY0FBSSxZQUFZLFNBQVMsa0JBQWtCO0FBQ3pDLHFCQUFTLGlCQUFpQixjQUFjLEtBQUssY0FBYyxLQUFLO0FBQ2hFLHFCQUFTLGlCQUFpQixhQUFhLEtBQUssYUFBYSxLQUFLO0FBQzlELHFCQUFTLGlCQUFpQixZQUFZLEtBQUssWUFBWSxLQUFLO0FBQUEsVUFDcEU7QUFBQSxRQUNBO0FBQUE7QUFBQSxJQUNBLEdBQUs7QUFBQSxNQUNELEtBQUs7QUFBQSxNQUNMLE9BQU8sU0FBUyx1QkFBdUI7QUFDckMsWUFBSSxZQUFZLFNBQVMscUJBQXFCO0FBQzVDLG1CQUFTLG9CQUFvQixjQUFjLEtBQUssWUFBWTtBQUM1RCxtQkFBUyxvQkFBb0IsYUFBYSxLQUFLLFdBQVc7QUFDMUQsbUJBQVMsb0JBQW9CLFlBQVksS0FBSyxVQUFVO0FBQUEsUUFDaEU7QUFBQSxNQUNBO0FBQUEsSUFDQSxHQUFLO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFDTDtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBSUEsU0FBUyxjQUFjO0FBQ3JCLGNBQUksZUFBZSxLQUFLLE9BQ3RCK1gsY0FBYSxhQUFhLFlBQzFCLGVBQWUsYUFBYSxjQUM1QixVQUFVLGFBQWEsU0FDdkIsYUFBYSxhQUFhLFlBQzFCLFdBQVcsYUFBYSxVQUN4QixPQUFPLGFBQWEsTUFDcEIsYUFBYSxhQUFhLFlBQzFCc0UsWUFBVyxhQUFhO0FBQzFCLGNBQUksc0JBQXNCLEtBQUssY0FBZSxHQUM1QzNDLFNBQVEsb0JBQW9CO0FBQzlCLGNBQUksZUFBZSxLQUFLLE9BQ3RCLGdCQUFnQixhQUFhLGVBQzdCLGdCQUFnQixhQUFhO0FBQy9CLGNBQUksY0FBYyxLQUFLO0FBQ3ZCLGNBQUksS0FBSyxXQUFXLEtBQUssYUFBYSxPQUFPO0FBRzdDLGNBQUksaUJBQWlCaE8sZUFBY0EsZUFBY0EsZUFBYztBQUFBLFlBQzdELHFCQUFxQjtBQUFBLFlBQ3JCLGlCQUFpQjtBQUFBLFlBQ2pCLGlCQUFpQjtBQUFBLFlBQ2pCLHFCQUFxQixLQUFLLE1BQU0sbUJBQW1CO0FBQUEsWUFDbkQsZ0JBQWdCLEtBQUssTUFBTSxjQUFjO0FBQUEsWUFDekMsY0FBYyxLQUFLLE1BQU0sWUFBWTtBQUFBLFlBQ3JDLG1CQUFtQixLQUFLLE1BQU0saUJBQWlCO0FBQUEsWUFDL0MsaUJBQWlCMlE7QUFBQSxZQUNqQixNQUFNO0FBQUEsWUFDTix5QkFBeUIsS0FBSyxnQkFBZ0IsU0FBWSxLQUFLLE1BQU0sbUJBQW1CO0FBQUEsVUFDekYsR0FBRSxjQUFjO0FBQUEsWUFDZixpQkFBaUIsS0FBSyxhQUFhLFNBQVM7QUFBQSxVQUNwRCxDQUFPLEdBQUcsQ0FBQyxnQkFBZ0I7QUFBQSxZQUNuQixpQkFBaUI7QUFBQSxVQUNsQixDQUFBLEdBQUcsS0FBSyxjQUFjLGtCQUFrQixRQUFRLGtCQUFrQixTQUFTLFNBQVMsY0FBYyxZQUFZLHlCQUF5QjtBQUFBLFlBQ3RJLG9CQUFvQixLQUFLLGFBQWEsYUFBYTtBQUFBLFVBQzNELElBQVU7QUFBQSxZQUNGLG9CQUFvQixLQUFLLGFBQWEsYUFBYTtBQUFBLFVBQzNELENBQU87QUFDRCxjQUFJLENBQUMsY0FBYztBQUVqQixtQkFBb0IsaUNBQWlCLGNBQWNrWCxhQUFZNW5CLFVBQVM7QUFBQSxjQUN0RTtBQUFBLGNBQ0EsVUFBVSxLQUFLO0FBQUEsY0FDZixRQUFRLEtBQUs7QUFBQSxjQUNiLFVBQVVsTSxPQUFNO0FBQUEsY0FDaEIsU0FBUyxLQUFLO0FBQUEsY0FDZCxVQUFVc1k7QUFBQSxjQUNWO0FBQUEsY0FDQSxXQUFXO0FBQUEsY0FDWDtBQUFBLGNBQ0EsT0FBTztBQUFBLFlBQ1IsR0FBRSxjQUFjLENBQUM7QUFBQSxVQUMxQjtBQUNNLGlCQUFvQixpQ0FBaUIsY0FBYzJCLFFBQU8vTixVQUFTLENBQUEsR0FBSSxhQUFhO0FBQUEsWUFDbEYsZ0JBQWdCO0FBQUEsWUFDaEIsY0FBYztBQUFBLFlBQ2QsYUFBYTtBQUFBLFlBQ2I7QUFBQSxZQUNBLFVBQVUsS0FBSztBQUFBLFlBQ2YsWUFBWW9NO0FBQUEsWUFDWixVQUFVO0FBQUEsWUFDVixRQUFRLEtBQUs7QUFBQSxZQUNiLFVBQVUsS0FBSztBQUFBLFlBQ2YsU0FBUyxLQUFLO0FBQUEsWUFDZCxZQUFZO0FBQUEsWUFDWjtBQUFBLFlBQ0E7QUFBQSxZQUNBLE1BQU07QUFBQSxZQUNOLE9BQU87QUFBQSxVQUNSLEdBQUUsY0FBYyxDQUFDO0FBQUEsUUFDeEI7QUFBQTtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLDJCQUEyQjtBQUN6QyxZQUFJLFNBQVM7QUFDYixZQUFJLHVCQUF1QixLQUFLLGNBQWUsR0FDN0NnQyxjQUFhLHFCQUFxQixZQUNsQ3VDLHVCQUFzQixxQkFBcUIscUJBQzNDQyxtQkFBa0IscUJBQXFCLGlCQUN2Q0Msb0JBQW1CLHFCQUFxQixrQkFDeENsQyxlQUFjLHFCQUFxQixhQUNuQ0QsZUFBYyxxQkFBcUI7QUFDckMsWUFBSSxjQUFjLEtBQUs7QUFDdkIsWUFBSSxlQUFlLEtBQUssT0FDdEIsMkJBQTJCLGFBQWEsMEJBQ3hDdEMsY0FBYSxhQUFhLFlBQzFCLFVBQVUsYUFBYSxTQUN2QixhQUFhLGFBQWEsWUFDMUIsY0FBYyxhQUFhO0FBQzdCLFlBQUksZUFBZSxLQUFLLE9BQ3RCLGNBQWMsYUFBYSxhQUMzQixlQUFlLGFBQWEsY0FDNUIsWUFBWSxhQUFhO0FBQzNCLFlBQUksQ0FBQyxLQUFLLFNBQVUsS0FBSSxDQUFDLDBCQUEwQjtBQUNqRCxpQkFBTyxhQUFhLE9BQW9CLGlDQUFpQixjQUFjc0MsY0FBYTFPLFVBQVMsQ0FBRSxHQUFFLGFBQWE7QUFBQSxZQUM1RyxLQUFLO0FBQUEsWUFDTCxZQUFZb007QUFBQSxZQUNaO0FBQUEsWUFDQSxZQUFZO0FBQUEsY0FDVixJQUFJLEtBQUssYUFBYSxhQUFhO0FBQUEsWUFDL0M7QUFBQSxVQUNTLENBQUEsR0FBRyxXQUFXO0FBQUEsUUFDdkI7QUFDTSxZQUFJLFNBQVM7QUFDWCxpQkFBTyxZQUFZLElBQUksU0FBVSxLQUFLdFksUUFBTztBQUMzQyxnQkFBSSxrQkFBa0IsUUFBUTtBQUM5QixnQkFBSSxNQUFNLEdBQUcsT0FBTyxPQUFPLGVBQWUsR0FBRyxHQUFHLEdBQUcsRUFBRSxPQUFPLE9BQU8sZUFBZSxHQUFHLENBQUM7QUFDdEYsbUJBQW9CLGlDQUFpQixjQUFjc2EsYUFBWXBPLFVBQVMsQ0FBQSxHQUFJLGFBQWE7QUFBQSxjQUN2RixZQUFZO0FBQUEsZ0JBQ1YsV0FBVzJRO0FBQUEsZ0JBQ1gsT0FBT0M7QUFBQSxnQkFDUCxRQUFRQztBQUFBLGNBQ1Q7QUFBQSxjQUNELFdBQVc7QUFBQSxjQUNYLFlBQVl6RTtBQUFBLGNBQ1o7QUFBQSxjQUNBLE9BQU90WTtBQUFBLGNBQ1AsYUFBYTtBQUFBLGdCQUNYLFNBQVMsU0FBUyxVQUFVO0FBQzFCLHlCQUFPLE9BQU8sWUFBWSxHQUFHO0FBQUEsZ0JBQzlCO0FBQUEsZ0JBQ0QsWUFBWSxTQUFTLGFBQWE7QUFDaEMseUJBQU8sT0FBTyxZQUFZLEdBQUc7QUFBQSxnQkFDOUI7QUFBQSxnQkFDRCxhQUFhLFNBQVMsWUFBWVAsSUFBRztBQUNuQyxrQkFBQUEsR0FBRSxlQUFnQjtBQUFBLGdCQUNsQztBQUFBLGNBQ2E7QUFBQSxjQUNELE1BQU07QUFBQSxZQUNQLENBQUEsR0FBRyxPQUFPLGtCQUFrQixLQUFLLE9BQU8sQ0FBQztBQUFBLFVBQ3BELENBQVM7QUFBQSxRQUNUO0FBQ00sWUFBSSxZQUFZO0FBQ2QsaUJBQU87QUFBQSxRQUNmO0FBQ00sWUFBSSxjQUFjLFlBQVksQ0FBQztBQUMvQixlQUFvQixpQ0FBaUIsY0FBY29iLGNBQWEzTyxVQUFTLENBQUEsR0FBSSxhQUFhO0FBQUEsVUFDeEYsTUFBTTtBQUFBLFVBQ04sWUFBWW9NO0FBQUEsUUFDYixDQUFBLEdBQUcsS0FBSyxrQkFBa0IsYUFBYSxPQUFPLENBQUM7QUFBQSxNQUN0RDtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLHVCQUF1QjtBQUNyQyxZQUFJLHVCQUF1QixLQUFLLGNBQWUsR0FDN0NXLGtCQUFpQixxQkFBcUI7QUFDeEMsWUFBSSxjQUFjLEtBQUs7QUFDdkIsWUFBSSxnQkFBZ0IsS0FBSyxPQUN2QlgsY0FBYSxjQUFjLFlBQzNCLFlBQVksY0FBYztBQUM1QixZQUFJLFlBQVksS0FBSyxNQUFNO0FBQzNCLFlBQUksQ0FBQyxLQUFLLFlBQVcsS0FBTSxDQUFDVyxtQkFBa0JYLGVBQWMsQ0FBQyxLQUFLLFNBQVUsS0FBSSxXQUFXO0FBQ3pGLGlCQUFPO0FBQUEsUUFDZjtBQUNNLFlBQUksYUFBYTtBQUFBLFVBQ2YsYUFBYSxLQUFLO0FBQUEsVUFDbEIsWUFBWSxLQUFLO0FBQUEsVUFDakIsZUFBZTtBQUFBLFFBQ2hCO0FBQ0QsZUFBb0IsaUNBQWlCLGNBQWNXLGlCQUFnQi9NLFVBQVMsQ0FBQSxHQUFJLGFBQWE7QUFBQSxVQUMzRjtBQUFBLFVBQ0E7QUFBQSxRQUNSLENBQU8sQ0FBQztBQUFBLE1BQ1I7QUFBQSxJQUNBLEdBQUs7QUFBQSxNQUNELEtBQUs7QUFBQSxNQUNMLE9BQU8sU0FBUyx5QkFBeUI7QUFDdkMsWUFBSSx1QkFBdUIsS0FBSyxjQUFlLEdBQzdDcU4sb0JBQW1CLHFCQUFxQjtBQUMxQyxZQUFJLGNBQWMsS0FBSztBQUN2QixZQUFJLGdCQUFnQixLQUFLLE9BQ3ZCakIsY0FBYSxjQUFjLFlBQzNCLFlBQVksY0FBYztBQUM1QixZQUFJLFlBQVksS0FBSyxNQUFNO0FBQzNCLFlBQUksQ0FBQ2lCLHFCQUFvQixDQUFDLFVBQVcsUUFBTztBQUM1QyxZQUFJLGFBQWE7QUFBQSxVQUNmLGVBQWU7QUFBQSxRQUNoQjtBQUNELGVBQW9CLGlDQUFpQixjQUFjQSxtQkFBa0JyTixVQUFTLENBQUEsR0FBSSxhQUFhO0FBQUEsVUFDN0Y7QUFBQSxVQUNBLFlBQVlvTTtBQUFBLFVBQ1o7QUFBQSxRQUNSLENBQU8sQ0FBQztBQUFBLE1BQ1I7QUFBQSxJQUNBLEdBQUs7QUFBQSxNQUNELEtBQUs7QUFBQSxNQUNMLE9BQU8sU0FBUywyQkFBMkI7QUFDekMsWUFBSSx1QkFBdUIsS0FBSyxjQUFlLEdBQzdDVSxxQkFBb0IscUJBQXFCLG1CQUN6Q0csc0JBQXFCLHFCQUFxQjtBQUc1QyxZQUFJLENBQUNILHNCQUFxQixDQUFDRyxvQkFBb0IsUUFBTztBQUN0RCxZQUFJLGNBQWMsS0FBSztBQUN2QixZQUFJYixjQUFhLEtBQUssTUFBTTtBQUM1QixZQUFJLFlBQVksS0FBSyxNQUFNO0FBQzNCLGVBQW9CLGlDQUFpQixjQUFjYSxxQkFBb0JqTixVQUFTLENBQUEsR0FBSSxhQUFhO0FBQUEsVUFDL0YsWUFBWW9NO0FBQUEsVUFDWjtBQUFBLFFBQ1IsQ0FBTyxDQUFDO0FBQUEsTUFDUjtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLDBCQUEwQjtBQUN4QyxZQUFJLHVCQUF1QixLQUFLLGNBQWUsR0FDN0NVLHFCQUFvQixxQkFBcUI7QUFDM0MsWUFBSSxDQUFDQSxtQkFBbUIsUUFBTztBQUMvQixZQUFJLGNBQWMsS0FBSztBQUN2QixZQUFJVixjQUFhLEtBQUssTUFBTTtBQUM1QixZQUFJLFlBQVksS0FBSyxNQUFNO0FBQzNCLFlBQUksYUFBYTtBQUFBLFVBQ2YsYUFBYSxLQUFLO0FBQUEsVUFDbEIsWUFBWSxLQUFLO0FBQUEsVUFDakIsZUFBZTtBQUFBLFFBQ2hCO0FBQ0QsZUFBb0IsaUNBQWlCLGNBQWNVLG9CQUFtQjlNLFVBQVMsQ0FBQSxHQUFJLGFBQWE7QUFBQSxVQUM5RjtBQUFBLFVBQ0EsWUFBWW9NO0FBQUEsVUFDWjtBQUFBLFFBQ1IsQ0FBTyxDQUFDO0FBQUEsTUFDUjtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLGFBQWE7QUFDM0IsWUFBSSxTQUFTO0FBQ2IsWUFBSSx1QkFBdUIsS0FBSyxjQUFlLEdBQzdDcUIsU0FBUSxxQkFBcUIsT0FDN0JFLGdCQUFlLHFCQUFxQixjQUNwQ2xDLFFBQU8scUJBQXFCLE1BQzVCRyxZQUFXLHFCQUFxQixVQUNoQ0ssY0FBYSxxQkFBcUIsWUFDbENGLGtCQUFpQixxQkFBcUIsZ0JBQ3RDRCxvQkFBbUIscUJBQXFCLGtCQUN4QzBDLFVBQVMscUJBQXFCO0FBQ2hDLFlBQUksY0FBYyxLQUFLO0FBQ3ZCLFlBQUksZ0JBQWdCLEtBQUssTUFBTTtBQUMvQixZQUFJLGdCQUFnQixLQUFLLE9BQ3ZCLG9CQUFvQixjQUFjLG1CQUNsQyxhQUFhLGNBQWMsWUFDM0IsWUFBWSxjQUFjLFdBQzFCc0Msa0JBQWlCLGNBQWMsZ0JBQy9CLGdCQUFnQixjQUFjLGVBQzlCLGdCQUFnQixjQUFjLGVBQzlCLGFBQWEsY0FBYyxZQUMzQixnQkFBZ0IsY0FBYyxlQUM5QixlQUFlLGNBQWMsY0FDN0IsbUJBQW1CLGNBQWMsa0JBQ2pDLHdCQUF3QixjQUFjLHVCQUN0QywyQkFBMkIsY0FBYywwQkFDekNDLG9CQUFtQixjQUFjLGtCQUNqQyxvQkFBb0IsY0FBYyxtQkFDbEMsdUJBQXVCLGNBQWM7QUFDdkMsWUFBSSxDQUFDLFdBQVksUUFBTztBQUd4QixZQUFJLFNBQVMsU0FBU0MsUUFBTyxPQUFPLElBQUk7QUFDdEMsY0FBSTdaLFFBQU8sTUFBTSxNQUNmOUMsUUFBTyxNQUFNLE1BQ2IrWCxjQUFhLE1BQU0sWUFDbkIsYUFBYSxNQUFNLFlBQ25CLFFBQVEsTUFBTSxPQUNkLFFBQVEsTUFBTTtBQUNoQixjQUFJLFlBQVksa0JBQWtCL1g7QUFDbEMsY0FBSSxVQUFVK1gsY0FBYSxTQUFZLFdBQVk7QUFDakQsbUJBQU8sT0FBTyxjQUFjL1gsS0FBSTtBQUFBLFVBQ2pDO0FBQ0QsY0FBSSxXQUFXK1gsY0FBYSxTQUFZLFdBQVk7QUFDbEQsbUJBQU8sT0FBTyxhQUFhL1gsS0FBSTtBQUFBLFVBQ2hDO0FBQ0QsY0FBSStiLFlBQVcsR0FBRyxPQUFPLE9BQU8sYUFBYSxRQUFRLEdBQUcsR0FBRyxFQUFFLE9BQU8sRUFBRTtBQUN0RSxjQUFJLGFBQWE7QUFBQSxZQUNmLElBQUlBO0FBQUEsWUFDSixTQUFTO0FBQUEsWUFDVCxhQUFhO0FBQUEsWUFDYixhQUFhO0FBQUEsWUFDYixVQUFVO0FBQUEsWUFDVixNQUFNO0FBQUEsWUFDTixpQkFBaUIsT0FBTyxnQkFBZ0IsU0FBWTtBQUFBO0FBQUEsVUFDckQ7QUFFRCxpQkFBb0IsaUNBQWlCLGNBQWM1QixTQUFReE8sVUFBUyxDQUFBLEdBQUksYUFBYTtBQUFBLFlBQ25GO0FBQUEsWUFDQSxNQUFNM0w7QUFBQSxZQUNOLFlBQVkrWDtBQUFBLFlBQ1o7QUFBQSxZQUNBLEtBQUtnRTtBQUFBLFlBQ0w7QUFBQSxZQUNBLE1BQU1qWjtBQUFBLFlBQ047QUFBQSxZQUNBO0FBQUEsWUFDQSxVQUFVLFlBQVksT0FBTyxzQkFBc0I7QUFBQSxVQUM3RCxDQUFTLEdBQUcsT0FBTyxrQkFBa0IsTUFBTSxNQUFNLE1BQU0sQ0FBQztBQUFBLFFBQ2pEO0FBQ0QsWUFBSTtBQUNKLFlBQUksS0FBSyxjQUFjO0FBQ3JCLG1CQUFTLEtBQUssc0JBQXVCLEVBQUMsSUFBSSxTQUFVLE1BQU07QUFDeEQsZ0JBQUksS0FBSyxTQUFTLFNBQVM7QUFDekIsa0JBQUksUUFBUSxLQUFLLE1BQ2Z1QixXQUFVLEtBQUssU0FDZixhQUFhLEtBQUs7QUFDcEIsa0JBQUksVUFBVSxHQUFHLE9BQU8sT0FBTyxhQUFhLE9BQU8sR0FBRyxHQUFHLEVBQUUsT0FBTyxVQUFVO0FBQzVFLGtCQUFJLFlBQVksR0FBRyxPQUFPLFNBQVMsVUFBVTtBQUM3QyxxQkFBb0IsaUNBQWlCLGNBQWMrVSxRQUFPek4sVUFBUyxDQUFBLEdBQUksYUFBYTtBQUFBLGdCQUNsRixLQUFLO0FBQUEsZ0JBQ0wsTUFBTTtBQUFBLGdCQUNOLFNBQVN0SDtBQUFBLGdCQUNULFNBQVNpVjtBQUFBLGdCQUNULGNBQWM7QUFBQSxrQkFDWixJQUFJO0FBQUEsa0JBQ0osTUFBTSxLQUFLO0FBQUEsZ0JBQ1o7QUFBQSxnQkFDRCxPQUFPLE9BQU8saUJBQWlCLEtBQUssSUFBSTtBQUFBLGNBQ3pDLENBQUEsR0FBRyxLQUFLLFFBQVEsSUFBSSxTQUFVLFFBQVE7QUFDckMsdUJBQU8sT0FBTyxRQUFRLEdBQUcsT0FBTyxZQUFZLEdBQUcsRUFBRSxPQUFPLE9BQU8sS0FBSyxDQUFDO0FBQUEsY0FDbkYsQ0FBYSxDQUFDO0FBQUEsWUFDZCxXQUFxQixLQUFLLFNBQVMsVUFBVTtBQUNqQyxxQkFBTyxPQUFPLE1BQU0sR0FBRyxPQUFPLEtBQUssS0FBSyxDQUFDO0FBQUEsWUFDckQ7QUFBQSxVQUNBLENBQVM7QUFBQSxRQUNGLFdBQVUsV0FBVztBQUNwQixjQUFJLFVBQVVtRCxnQkFBZTtBQUFBLFlBQzNCO0FBQUEsVUFDVixDQUFTO0FBQ0QsY0FBSSxZQUFZLEtBQU0sUUFBTztBQUM3QixtQkFBc0IsaUNBQWlCLGNBQWMvRSxpQkFBZ0IsYUFBYSxPQUFPO0FBQUEsUUFDakcsT0FBYTtBQUNMLGNBQUksV0FBV2dGLGtCQUFpQjtBQUFBLFlBQzlCO0FBQUEsVUFDVixDQUFTO0FBQ0QsY0FBSSxhQUFhLEtBQU0sUUFBTztBQUM5QixtQkFBc0IsaUNBQWlCLGNBQWNqRixtQkFBa0IsYUFBYSxRQUFRO0FBQUEsUUFDcEc7QUFDTSxZQUFJLHFCQUFxQjtBQUFBLFVBQ3ZCO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFFBQ0Q7QUFDRCxZQUFJLGNBQTJCLGlDQUFpQixjQUFjaFksT0FBTSxZQUFZa00sVUFBUyxDQUFBLEdBQUksYUFBYSxrQkFBa0IsR0FBRyxTQUFVLE9BQU87QUFDOUksY0FBSTRGLE9BQU0sTUFBTSxLQUNkLG9CQUFvQixNQUFNLGFBQzFCLFlBQVksa0JBQWtCLFdBQzlCLFlBQVksa0JBQWtCO0FBQ2hDLGlCQUFvQixpQ0FBaUIsY0FBYzZGLE9BQU16TCxVQUFTLENBQUUsR0FBRSxhQUFhLG9CQUFvQjtBQUFBLFlBQ3JHLFVBQVU0RjtBQUFBLFlBQ1YsWUFBWTtBQUFBLGNBQ1YsYUFBYSxPQUFPO0FBQUEsY0FDcEIsYUFBYSxPQUFPO0FBQUEsWUFDckI7QUFBQSxZQUNEO0FBQUEsWUFDQTtBQUFBLFdBQ0QsR0FBZ0IsaUNBQWlCLGNBQWM2aUIsZ0JBQWU7QUFBQSxZQUM3RCxnQkFBZ0I7QUFBQSxZQUNoQixhQUFhO0FBQUEsWUFDYixnQkFBZ0I7QUFBQSxZQUNoQixhQUFhO0FBQUEsVUFDZCxHQUFFLFNBQVUsaUJBQWlCO0FBQzVCLG1CQUFvQixpQ0FBaUIsY0FBYzdjLFdBQVU1TCxVQUFTLENBQUEsR0FBSSxhQUFhO0FBQUEsY0FDckYsVUFBVSxTQUFTLFNBQVM1RixXQUFVO0FBQ3BDLHVCQUFPLGVBQWVBLFNBQVE7QUFDOUIsZ0NBQWdCQSxTQUFRO0FBQUEsY0FDekI7QUFBQSxjQUNELFlBQVk7QUFBQSxnQkFDVixNQUFNO0FBQUEsZ0JBQ04sd0JBQXdCLFlBQVk7QUFBQSxnQkFDcEMsSUFBSSxPQUFPLGFBQWEsU0FBUztBQUFBLGNBQ2xDO0FBQUEsY0FDRDtBQUFBLGNBQ0E7QUFBQSxjQUNBO0FBQUEsWUFDRCxDQUFBLEdBQUcsTUFBTTtBQUFBLFVBQ3BCLENBQVMsQ0FBQztBQUFBLFFBQ1YsQ0FBTztBQUtELGVBQU8sb0JBQW9CLGlCQUFpQixVQUF1QixpQ0FBaUIsY0FBYzZSLGFBQVlqTSxVQUFTLENBQUUsR0FBRSxhQUFhO0FBQUEsVUFDdEksVUFBVTtBQUFBLFVBQ1YsZ0JBQWdCLEtBQUs7QUFBQSxVQUNyQjtBQUFBLFVBQ0E7QUFBQSxRQUNSLENBQU8sR0FBRyxXQUFXLElBQUk7QUFBQSxNQUN6QjtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLGtCQUFrQjtBQUNoQyxZQUFJLFNBQVM7QUFDYixZQUFJLGdCQUFnQixLQUFLLE9BQ3ZCNUgsYUFBWSxjQUFjLFdBQzFCZ1UsY0FBYSxjQUFjLFlBQzNCLFVBQVUsY0FBYyxTQUN4QixPQUFPLGNBQWMsTUFDckJzRSxZQUFXLGNBQWM7QUFDM0IsWUFBSSxjQUFjLEtBQUssTUFBTTtBQUM3QixZQUFJQSxhQUFZLENBQUMsS0FBSyxTQUFVLEtBQUksQ0FBQ3RFLGFBQVk7QUFDL0MsaUJBQW9CLGlDQUFpQixjQUFjc2Msa0JBQWlCO0FBQUEsWUFDbEU7QUFBQSxZQUNBLFNBQVMsS0FBSztBQUFBLFVBQ3hCLENBQVM7QUFBQSxRQUNUO0FBQ00sWUFBSSxDQUFDLFFBQVF0YyxZQUFZO0FBQ3pCLFlBQUksU0FBUztBQUNYLGNBQUloVSxZQUFXO0FBQ2IsZ0JBQUksUUFBUSxZQUFZLElBQUksU0FBVSxLQUFLO0FBQ3pDLHFCQUFPLE9BQU8sZUFBZSxHQUFHO0FBQUEsWUFDNUMsQ0FBVyxFQUFFLEtBQUtBLFVBQVM7QUFDakIsbUJBQW9CLGlDQUFpQixjQUFjLFNBQVM7QUFBQSxjQUMxRDtBQUFBLGNBQ0EsTUFBTTtBQUFBLGNBQ047QUFBQSxZQUNaLENBQVc7QUFBQSxVQUNYLE9BQWU7QUFDTCxnQkFBSSxRQUFRLFlBQVksU0FBUyxJQUFJLFlBQVksSUFBSSxTQUFVLEtBQUtoRyxJQUFHO0FBQ3JFLHFCQUFvQixpQ0FBaUIsY0FBYyxTQUFTO0FBQUEsZ0JBQzFELEtBQUssS0FBSyxPQUFPQSxFQUFDO0FBQUEsZ0JBQ2xCO0FBQUEsZ0JBQ0EsTUFBTTtBQUFBLGdCQUNOLE9BQU8sT0FBTyxlQUFlLEdBQUc7QUFBQSxjQUM5QyxDQUFhO0FBQUEsYUFDRixJQUFpQixpQ0FBaUIsY0FBYyxTQUFTO0FBQUEsY0FDeEQ7QUFBQSxjQUNBLE1BQU07QUFBQSxjQUNOLE9BQU87QUFBQSxZQUNuQixDQUFXO0FBQ0QsbUJBQW9CLGlDQUFpQixjQUFjLE9BQU8sTUFBTSxLQUFLO0FBQUEsVUFDL0U7QUFBQSxRQUNBLE9BQWE7QUFDTCxjQUFJLFNBQVMsWUFBWSxDQUFDLElBQUksS0FBSyxlQUFlLFlBQVksQ0FBQyxDQUFDLElBQUk7QUFDcEUsaUJBQW9CLGlDQUFpQixjQUFjLFNBQVM7QUFBQSxZQUMxRDtBQUFBLFlBQ0EsTUFBTTtBQUFBLFlBQ04sT0FBTztBQUFBLFVBQ2pCLENBQVM7QUFBQSxRQUNUO0FBQUEsTUFDQTtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLG1CQUFtQjtBQUNqQyxZQUFJLGNBQWMsS0FBSztBQUN2QixZQUFJLGVBQWUsS0FBSyxPQUN0QixnQkFBZ0IsYUFBYSxlQUM3QixnQkFBZ0IsYUFBYSxlQUM3QixlQUFlLGFBQWEsY0FDNUIsWUFBWSxhQUFhLFdBQ3pCLGNBQWMsYUFBYTtBQUM3QixZQUFJLG1CQUFtQixLQUFLLG9CQUFxQjtBQUNqRCxlQUFvQixpQ0FBaUIsY0FBY20xQixlQUFjdm5CLFVBQVMsQ0FBQSxHQUFJLGFBQWE7QUFBQSxVQUN6RixJQUFJLEtBQUssYUFBYSxhQUFhO0FBQUEsVUFDbkM7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFVBQ0EsZUFBZSxLQUFLO0FBQUEsUUFDNUIsQ0FBTyxDQUFDO0FBQUEsTUFDUjtBQUFBLElBQ0EsR0FBSztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsT0FBTyxTQUFTLFNBQVM7QUFDdkIsWUFBSSx1QkFBdUIsS0FBSyxjQUFlLEdBQzdDc04sV0FBVSxxQkFBcUIsU0FDL0JiLHVCQUFzQixxQkFBcUIscUJBQzNDSixtQkFBa0IscUJBQXFCLGlCQUN2Q0Usa0JBQWlCLHFCQUFxQjtBQUN4QyxZQUFJLGdCQUFnQixLQUFLLE9BQ3ZCLFlBQVksY0FBYyxXQUMxQixLQUFLLGNBQWMsSUFDbkJILGNBQWEsY0FBYyxZQUMzQixhQUFhLGNBQWM7QUFDN0IsWUFBSSxZQUFZLEtBQUssTUFBTTtBQUMzQixZQUFJLGNBQWMsS0FBSyxjQUFjLEtBQUssZUFBZ0I7QUFDMUQsZUFBb0IsaUNBQWlCLGNBQWNDLGtCQUFpQnJNLFVBQVMsQ0FBQSxHQUFJLGFBQWE7QUFBQSxVQUM1RjtBQUFBLFVBQ0EsWUFBWTtBQUFBLFlBQ1Y7QUFBQSxZQUNBLFdBQVcsS0FBSztBQUFBLFVBQ2pCO0FBQUEsVUFDRCxZQUFZb007QUFBQSxVQUNaO0FBQUEsUUFDUixDQUFPLEdBQUcsS0FBSyxpQkFBZ0IsR0FBaUIsaUNBQWlCLGNBQWNrQixVQUFTdE4sVUFBUyxDQUFFLEdBQUUsYUFBYTtBQUFBLFVBQzFHLFVBQVUsS0FBSztBQUFBLFVBQ2YsWUFBWTtBQUFBLFlBQ1YsYUFBYSxLQUFLO0FBQUEsWUFDbEIsWUFBWSxLQUFLO0FBQUEsVUFDbEI7QUFBQSxVQUNELFlBQVlvTTtBQUFBLFVBQ1o7QUFBQSxVQUNBO0FBQUEsUUFDUixDQUFPLEdBQWdCLGlDQUFpQixjQUFjRyxpQkFBZ0J2TSxVQUFTLENBQUUsR0FBRSxhQUFhO0FBQUEsVUFDeEYsWUFBWW9NO0FBQUEsUUFDYixDQUFBLEdBQUcsS0FBSyw0QkFBNEIsS0FBSyxZQUFhLENBQUEsR0FBZ0IsaUNBQWlCLGNBQWNLLHNCQUFxQnpNLFVBQVMsQ0FBQSxHQUFJLGFBQWE7QUFBQSxVQUNuSixZQUFZb007QUFBQSxRQUNwQixDQUFPLEdBQUcsS0FBSyxxQkFBc0IsR0FBRSxLQUFLLHVCQUFzQixHQUFJLEtBQUsseUJBQXdCLEdBQUksS0FBSyx3QkFBeUIsQ0FBQSxDQUFDLEdBQUcsS0FBSyxjQUFjLEtBQUssaUJBQWlCO0FBQUEsTUFDbEw7QUFBQSxJQUNHLENBQUEsR0FBRyxDQUFDO0FBQUEsTUFDSCxLQUFLO0FBQUEsTUFDTCxPQUFPLFNBQVMseUJBQXlCLE9BQU8sT0FBTztBQUNyRCxZQUFJLFlBQVksTUFBTSxXQUNwQiwwQkFBMEIsTUFBTSx5QkFDaEMsMkJBQTJCLE1BQU0sMEJBQ2pDLGdCQUFnQixNQUFNLGVBQ3RCLFlBQVksTUFBTSxXQUNsQixpQkFBaUIsTUFBTSxnQkFDdkIsaUJBQWlCLE1BQU07QUFDekIsWUFBSTFULFdBQVUsTUFBTSxTQUNsQixRQUFRLE1BQU0sT0FDZCxhQUFhLE1BQU0sWUFDbkIsYUFBYSxNQUFNLFlBQ25CLFVBQVUsTUFBTTtBQUNsQixZQUFJLGNBQWM1RSxPQUFNLFdBQVcsS0FBSztBQUN4QyxZQUFJLHNCQUFzQixDQUFFO0FBQzVCLFlBQUksY0FBYyxVQUFVLFVBQVUsU0FBUzRFLGFBQVksVUFBVSxXQUFXLGVBQWUsVUFBVSxjQUFjLGVBQWUsVUFBVSxhQUFhO0FBQzNKLGNBQUksbUJBQW1CLGFBQWFpeEIsdUJBQXNCLE9BQU8sV0FBVyxJQUFJLENBQUU7QUFDbEYsY0FBSSwwQkFBMEIsYUFBYUQsOEJBQTZCSCx5QkFBd0IsT0FBTyxXQUFXLEdBQUcsR0FBRyxPQUFPLGdCQUFnQixTQUFTLENBQUMsSUFBSSxDQUFFO0FBQy9KLGNBQUksZUFBZSwwQkFBMEJNLHFCQUFvQixPQUFPLFdBQVcsSUFBSTtBQUN2RixjQUFJLGdCQUFnQkMsc0JBQXFCLE9BQU8sZ0JBQWdCO0FBQ2hFLGNBQUksa0JBQWtCelosb0JBQW1CLHlCQUF5QixhQUFhO0FBQy9FLGdDQUFzQjtBQUFBLFlBQ3BCO0FBQUEsWUFDQTtBQUFBLFlBQ0E7QUFBQSxZQUNBO0FBQUEsWUFDQTtBQUFBLFlBQ0EseUJBQXlCO0FBQUEsVUFDMUI7QUFBQSxRQUNUO0FBRU0sWUFBSSx3QkFBd0IsNEJBQTRCLFFBQVEsVUFBVSxZQUFZO0FBQUEsVUFDcEYsZUFBZTtBQUFBLFVBQ2YsMEJBQTBCO0FBQUEsUUFDbEMsSUFBVSxDQUFFO0FBQ04sWUFBSSxtQkFBbUI7QUFDdkIsWUFBSSxlQUFlLGFBQWE7QUFDaEMsWUFBSSxhQUFhLENBQUMsY0FBYztBQUc5Qiw2QkFBbUI7QUFBQSxZQUNqQixPQUFPdmMsT0FBTSxhQUFhLFNBQVMsYUFBYSxZQUFZLENBQUMsS0FBSyxJQUFJO0FBQUEsWUFDdEUsU0FBUztBQUFBLFlBQ1QsUUFBUTtBQUFBLFVBQ1Q7QUFDRCx5QkFBZSxDQUFDO0FBQUEsUUFDeEI7QUFJTSxhQUFLLGtCQUFrQixRQUFRLGtCQUFrQixTQUFTLFNBQVMsY0FBYyxZQUFZLHVCQUF1QjtBQUNsSCw2QkFBbUI7QUFBQSxRQUMzQjtBQUNNLGVBQU9pTSxlQUFjQSxlQUFjQSxlQUFjLENBQUEsR0FBSSxtQkFBbUIsR0FBRyxxQkFBcUIsR0FBRyxJQUFJO0FBQUEsVUFDckcsV0FBVztBQUFBLFVBQ1gsZUFBZTtBQUFBLFVBQ2YsZ0JBQWdCO0FBQUEsUUFDeEIsQ0FBTztBQUFBLE1BQ1A7QUFBQSxJQUNBLENBQUcsQ0FBQztBQUNGLFdBQU93UTtBQUFBLEVBQ1QsRUFBRWhMLE9BQU0sU0FBUztBQUNqQixFQUFBZ0wsUUFBTyxlQUFlNFk7QUFFdEIsMEJBQUEsU0FBaUI1WTtBQUNqQiwwQkFBQSxlQUF1QmI7QUFDdkIsMEJBQUEsZUFBdUJ5WjtBQUN2QiwwQkFBQSxlQUF1QkQ7QUFDdkIsMEJBQUEsaUJBQXlCSjtBQUN6QiwwQkFBQSxpQkFBeUJDO0FBQ3pCLDBCQUFBLGNBQXNCOzs7Ozs7Ozs7QUNqbkZ0QixXQUFPLGVBQWMsU0FBVSxjQUFjLEVBQUUsT0FBTyxNQUFNO0FBRTVELFFBQUl6RixtQkFBbUV4c0Isd0RBQUE7QUFDdkUsUUFBSWtKLFlBQVd4RixnQkFBeUM7QUFDeEQsUUFBSStLLFNBQVErUyxlQUFnQjtBQUM1QixRQUFJL0gsVUFBaURnSSwrQ0FBQTtBQUNyRCxRQUFJOEwsU0FBUTtBQUNaLFFBQUlqZ0IsZUFBYztBQUNsQixRQUFJdFEsU0FBK0NrbEIsOENBQUE7QUFDSkMseUJBQUE7QUFDQUkseUJBQUE7QUFDVUMsbUNBQUE7QUFDVEMsMEJBQUE7QUFDSEMsdUJBQUE7QUFDSEMsb0JBQUE7QUFDR0MsdUJBQUE7QUFDTUMsNkJBQUE7QUFFWEUsbUJBQUE7QUFDZUMsaUNBQUE7QUFDUEMsMEJBQUE7QUFDNUJDLG9CQUFBO0FBSXBCLGFBQVMsZ0JBQWlCem1CLElBQUc7QUFBRSxhQUFPQSxNQUFLQSxHQUFFLGFBQWFBLEtBQUksRUFBRSxXQUFXQTtJQUFJO0FBRS9FLGFBQVMsa0JBQWtCQSxJQUFHO0FBQzVCLFVBQUlBLE1BQUtBLEdBQUUsV0FBWSxRQUFPQTtBQUM5QixVQUFJaUIsS0FBSSx1QkFBTyxPQUFPLElBQUk7QUFDMUIsVUFBSWpCLElBQUc7QUFDTCxlQUFPLEtBQUtBLEVBQUMsRUFBRSxRQUFRLFNBQVVELElBQUc7QUFDbEMsY0FBSUEsT0FBTSxXQUFXO0FBQ25CLGdCQUFJMEMsS0FBSSxPQUFPLHlCQUF5QnpDLElBQUdELEVBQUM7QUFDNUMsbUJBQU8sZUFBZWtCLElBQUdsQixJQUFHMEMsR0FBRSxNQUFNQSxLQUFJO0FBQUEsY0FDdEMsWUFBWTtBQUFBLGNBQ1osS0FBSyxXQUFZO0FBQUUsdUJBQU96QyxHQUFFRCxFQUFDO0FBQUEsY0FBRTtBQUFBLFlBQ3pDLENBQVM7QUFBQSxVQUNUO0FBQUEsUUFDQSxDQUFLO0FBQUEsTUFDTDtBQUNFLE1BQUFrQixHQUFFLFNBQVMsSUFBSWpCO0FBQ2YsYUFBTyxPQUFPLE9BQU9pQixFQUFDO0FBQUEsSUFDeEI7QUFFQSxRQUFJLG1CQUFnQyxrQ0FBa0IrUSxNQUFLO0FBQzNELFFBQUksdUJBQW9DLGdDQUFnQm5CLFlBQVc7QUFFbkUsUUFBSTRsQixzQkFBa0MsZ0JBQUF6a0IsT0FBTSxXQUFXLFNBQVUsT0FBT0ssTUFBSztBQUMzRSxVQUFJLGtCQUFrQjBkLGlCQUFnQixnQkFBZ0IsS0FBSztBQUMzRCxhQUFvQixpQ0FBaUIsY0FBYy9TLFFBQU8sUUFBUXZRLFVBQVM7QUFBQSxRQUN6RSxLQUFLNEY7QUFBQSxNQUNOLEdBQUUsZUFBZSxDQUFDO0FBQUEsSUFDckIsQ0FBQztBQUNELFFBQUlxa0Isd0JBQXVCRDtBQUUzQixRQUFJLGdCQUFpQixTQUFVcnFCLE9BQU07QUFDbkMsVUFBSSxRQUFRQSxNQUFLLE9BQ2YsV0FBV0EsTUFBSyxVQUNoQixXQUFXQSxNQUFLO0FBQ2xCLFVBQUksZUFBZTRGLE9BQU0sUUFBUSxXQUFZO0FBQzNDLGVBQU8scUJBQXFCLFNBQVMsRUFBRTtBQUFBLFVBQ3JDLEtBQUs7QUFBQSxVQUNMO0FBQUEsUUFDTixDQUFLO0FBQUEsTUFDTCxHQUFLLENBQUMsVUFBVSxLQUFLLENBQUM7QUFDcEIsYUFBb0IsaUNBQWlCLGNBQWM4ZSxPQUFNLGVBQWU7QUFBQSxRQUN0RSxPQUFPO0FBQUEsTUFDUixHQUFFLFFBQVE7QUFBQSxJQUNiO0FBRUEsWUFBMEIsa0JBQUFmLGlCQUFnQjtBQUMxQyxZQUF1QixlQUFBL1MsUUFBTztBQUM5QixZQUF1QixlQUFBQSxRQUFPO0FBQzlCLFlBQXNCLGNBQUFBLFFBQU87QUFDN0IsWUFBcUIsYUFBQXpjLE9BQU07QUFDM0IsWUFBQSxnQkFBd0I7QUFDeEIsWUFBUSxTQUFTLElBQUltMkI7QUFBQTs7Ozs7OztBQzdFc0I7QUFDbENDLG9CQUFBLFVBQThDcHpCLDRDQUFBO0FBQUE7Ozs7Ozs7OztBQ0h2QywwQkFBQSxXQUFHQSx1QkFBZ0MsRUFBQzs7OztBQ0l2QyxNQUFBLGNBQWMsQ0FBQyxVQUFlO0FBRXpDLFNBRUk0YyxrQ0FBQSxLQUFBcEUsNEJBQUEsRUFBQSxVQUFBO0FBQUEsSUFBQS9JLGtDQUFBQSxJQUFDOEgsdUJBQUFBLFdBQVcsU0FBWCxFQUFvQixHQUFHLE1BQU8sQ0FBQTtBQUFBLDBDQUM5QixPQUFNLEVBQUEsYUFBYSxNQUFNLFdBQVcsVUFBVSxLQUFLLE1BQU0sV0FBVyxDQUFDLEVBQUUsUUFBUSxJQUFLLFVBQUEsTUFBTSxZQUFZLEtBQUssQ0FBQTtBQUFBLEVBQUEsR0FDOUc7QUFFSjtBQUVBLE1BQU0sUUFBUThiLEdBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQU9aLENBQUMsVUFBVyxNQUFNLGNBQWMsUUFBUSxLQUFNO0FBQUEsZUFDeEMsQ0FBQyxVQUFXLE1BQU0sY0FBYyxTQUFTLFFBQVM7QUFBQTtBQ1RqRSxNQUFNLGdCQUFnQixDQUFDLEVBQUMsT0FBTyxNQUFNLFVBQUF0cUIsZ0JBQWM7QUFFakQsUUFBTSxDQUFDLFVBQVUsV0FBVyxJQUFJRCxhQUFBQSxTQUFTLElBQUk7QUFFdkMsUUFBQSxhQUF5QndxQixTQUFVLFFBQVFDLFlBQVU7QUFDckQsUUFBQSxjQUFjLElBQUloSSxpQkFBZTtBQUV2Q2hrQixlQUFBQSxVQUFVLE1BQU07QUFDZCxnQkFBWSxLQUFLLElBQUk7QUFBQSxFQUFBLEdBQ3BCLENBQUMsSUFBSSxDQUFDO0FBRVQsUUFBTSxjQUFjLE9BQU8sYUFBYSxlQUFlLEVBQUUsV0FBVztBQUVsRSxRQUFJLFdBQVcsTUFBTSxZQUFZLFlBQVksYUFBYSxNQUFNLElBQUk7QUFFN0QsV0FBQTtBQUFBLE1BQ0wsU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLE1BQ1QsWUFBWTtBQUFBLFFBQ1YsTUFBTSxPQUFPO0FBQUEsTUFBQTtBQUFBLElBRWpCO0FBQUEsRUFDRjtBQUVNLFFBQUEsb0JBQW9CLENBQUMsV0FBVztBQUN6QixlQUFBLGdCQUFBLEVBQWtCLE1BQU0sVUFBVTtBQUM3QyxVQUFNLFVBQVU7QUFDaEIsSUFBQXdCLFVBQVMsTUFBTTtBQUFBLEVBQ2pCO0FBRU0sUUFBQSxZQUFZLENBQUMsWUFBcUI7QUFDMUIsZ0JBQUEsS0FBSyxRQUFRO0FBQ3pCLHNCQUFrQixPQUFPO0FBQUEsRUFDM0I7QUFFTSxRQUFBLGFBQWEsQ0FBQyxZQUFxQjtBQUMzQixnQkFBQSxLQUFLLFFBQVE7QUFDekIsc0JBQWtCLE9BQU87QUFBQSxFQUMzQjtBQUdFLFNBQUE2VCxrQ0FBQSxLQUFDLE9BQUksRUFBQSxXQUFVLGNBQ2IsVUFBQTtBQUFBLElBQUNuTixrQ0FBQUEsSUFBQSxPQUFBLEVBQUksV0FBVSxVQUNiLFVBQUFBLGtDQUFBO0FBQUEsTUFBQztBQUFBLE1BQUE7QUFBQSxRQUNHLGdCQUFjO0FBQUEsUUFDZCxXQUFXLEdBQUcsV0FBVyxrQkFBa0IsTUFBTSxRQUFRLFlBQVksS0FBSyx5QkFBeUIsRUFBRTtBQUFBLFFBRXJHLGNBQWMsTUFBTTtBQUFBLFFBQ3BCLFlBQVksRUFBQyxTQUFTLFlBQVc7QUFBQSxRQUNqQyxhQUFZO0FBQUEsUUFDWixNQUFLO0FBQUEsUUFDTCxPQUFPLE1BQU07QUFBQSxRQUNiO0FBQUEsUUFDQSxnQkFBZ0IsQ0FBQyxXQUFXLE9BQU87QUFBQSxRQUNuQyxnQkFBZ0IsQ0FBQyxXQUFXLE9BQU87QUFBQSxRQUNuQyxVQUFVO0FBQUEsUUFDVixjQUFjO0FBQUEsUUFDZCxZQUFZO0FBQUEsVUFDVixNQUFNO0FBQUEsUUFBQTtBQUFBLE1BQ1I7QUFBQSxNQWJLLEtBQUssVUFBVSxRQUFRO0FBQUEsSUFBQSxHQWVsQztBQUFBLElBQ0FBLGtDQUFBQSxJQUFDLE9BQ0MsRUFBQSxVQUFBQSxrQ0FBQUEsSUFBQyx1QkFBc0IsRUFBQSxNQUFZLFNBQVMsTUFBTSxTQUFTLFdBQXNCLFdBQXVCLENBQUEsRUFDMUcsQ0FBQTtBQUFBLEVBQUEsR0FDRjtBQUVKO0FBRUEsY0FBYyxZQUFZO0FBQUEsRUFDeEIsT0FBT2djLGlCQUFVLFdBQVcsS0FBSztBQUFBLEVBQ2pDLFVBQVVDLGlCQUFVO0FBQUEsRUFDcEIsTUFBTUQsaUJBQVUsV0FBVyxJQUFJO0FBQ2pDO0FDNUVBLE1BQU0sYUFBYSxVQUFVO0FBQUEsRUFDekIsQ0FBQyxFQUFFLE9BQUFqUCxRQUFPLFFBQVEsU0FBUyxXQUFXO0FBRTVCLFVBQUEsY0FBYyxJQUFJNE8saUJBQWU7QUFFdkMsVUFBTSxRQUFRLFNBQVM7QUFDdkIsVUFBTSxDQUFDLFVBQVUsV0FBVyxJQUFJdGlCLGFBQUFBLFNBQVMsQ0FBQSxDQUFFO0FBRTNDLFVBQU0sQ0FBQyxRQUFRLFNBQVMsSUFBSUEsYUFBQUEsU0FBcUIsQ0FBQSxDQUFFO0FBRW5EdkIsaUJBQUFBLFVBQVUsTUFBTTtBQUNaLFVBQUcsU0FBUztBQUNJLG9CQUFBO0FBQUEsVUFDUixPQUFPLFFBQVE7QUFBQSxVQUNmLFdBQVcsUUFBUTtBQUFBLFVBQ25CLFVBQVUsUUFBUTtBQUFBLFVBQ2xCLFNBQVMsUUFBUTtBQUFBLFVBQ2pCLFFBQVEsUUFBUTtBQUFBLFVBQ2hCLGFBQWEsUUFBUTtBQUFBLFVBQ3JCLEtBQUssUUFBUTtBQUFBLFVBQ2IsTUFBTSxRQUFRO0FBQUEsVUFDZCxPQUFPLFFBQVE7QUFBQSxVQUNmLFNBQVMsUUFBUTtBQUFBLFVBQ2pCLE9BQU8sUUFBUTtBQUFBLFFBQUEsQ0FDbEI7QUFBQSxNQUFBO0FBQUEsSUFDTCxHQUNDLENBQUMsT0FBTyxDQUFDO0FBRWRBLGlCQUFBQSxVQUFVLE1BQU07QUFDWixrQkFBWSxXQUFXLElBQUksRUFBRSxLQUFLLENBQUVoSyxVQUFVO0FBQzFDLFlBQUksV0FBa0IsQ0FBQztBQUVsQixRQUFBQSxNQUFBLFFBQVEsQ0FBQyxTQUFTO0FBQ1YsbUJBQUEsS0FBSyxFQUFDLFNBQVMsS0FBSyxNQUFNLFNBQVMsS0FBSyxNQUFLO0FBQUEsUUFBQSxDQUN6RDtBQUVELFlBQUkwcUIsVUFBcUI7QUFBQSxVQUNyQixPQUFPO0FBQUEsVUFDUCxNQUFNO0FBQUEsVUFDTixVQUFVLENBQUMsT0FBTztBQUFBLFVBQ2xCLFlBQVk7QUFBQSxZQUNSLE9BQU8sRUFBRSxNQUFNLFVBQVUsUUFBUSxTQUFTLE9BQU8sU0FBUztBQUFBLFlBQzFELFNBQVMsRUFBRSxNQUFNLFVBQVUsT0FBTyxVQUFTO0FBQUEsWUFDM0MsV0FBVyxFQUFFLE1BQU0sVUFBVSxPQUFPLFlBQVc7QUFBQSxZQUMvQyxVQUFVLEVBQUUsTUFBTSxVQUFVLE9BQU8sV0FBVTtBQUFBLFlBQzdDLFFBQVEsRUFBRSxNQUFNLFVBQVUsT0FBTyxTQUFRO0FBQUEsWUFDekMsYUFBYSxFQUFFLE1BQU0sVUFBVSxPQUFPLGNBQWE7QUFBQSxZQUNuRCxLQUFLLEVBQUUsTUFBTSxVQUFVLE9BQU8sTUFBSztBQUFBLFlBQ25DLE1BQU0sRUFBRSxNQUFNLFVBQVUsT0FBTyxPQUFNO0FBQUEsWUFDckMsT0FBTyxFQUFFLE1BQU0sVUFBVSxPQUFPLFFBQU87QUFBQSxZQUN2QyxPQUFPLEVBQUUsTUFBTSxVQUFVLE9BQU8sUUFBTztBQUFBLFlBQ3ZDLFNBQVMsRUFBRSxNQUFNLFVBQVUsT0FBTyxXQUFXLE9BQU8sU0FBUTtBQUFBLFVBQUE7QUFBQSxRQUVwRTtBQUVBLGtCQUFVQSxPQUFNO0FBQUEsTUFBQSxDQUVuQjtBQUFBLElBQ0wsR0FBRyxFQUFFO0FBRUwsVUFBTSxXQUF1QjtBQUFBLE1BQ3pCLDBCQUEwQjtBQUFBLFFBQ3RCLGNBQWM7QUFBQSxRQUNkLFlBQVk7QUFBQSxRQUNaLFNBQVM7QUFBQSxVQUNMLFlBQVk7QUFBQSxVQUNaLGFBQWE7QUFBQSxRQUFBO0FBQUEsTUFDakI7QUFBQSxJQUVSO0FBSUksV0FBQXJMLHVDQUFDLFNBQU0sTUFBTSxNQUFNLFNBQVMsU0FBUyxNQUFNLE1BQU0sT0FBQSxHQUM3QyxVQUFBO0FBQUEsTUFBQW5OLGtDQUFBQSxJQUFDLE1BQU0sUUFBTixFQUNHLFVBQUNBLGtDQUFBQSxJQUFBLE9BQUEsRUFBSyxpQkFBTSxDQUFBLEdBQ2hCO0FBQUEsTUFDQ0Esa0NBQUEsSUFBQSxNQUFNLE1BQU4sRUFDSSxxQkFBVyxVQUNSQSxrQ0FBQTtBQUFBLFFBQUM0YjtBQUFBQSxRQUFBO0FBQUEsVUFDRztBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFVBQ0EsVUFBVSxDQUFDNXVCLE9BQU0sWUFBWUEsR0FBRSxRQUFRO0FBQUEsUUFBQTtBQUFBLE1BQUEsR0FJbkQ7QUFBQSxNQUNBbWdCLGtDQUFBQSxLQUFDLE1BQU0sUUFBTixFQUNHLFVBQUE7QUFBQSxRQUFBbk4sa0NBQUE7QUFBQSxVQUFDO0FBQUEsVUFBQTtBQUFBLFlBQ0csTUFBTTtBQUFBLFlBQ04sU0FBUTtBQUFBLFlBQ1IsU0FBUyxNQUFNO0FBQ1gsa0JBQUksV0FBVyxRQUFRO0FBQ25CLG9CQUFJLFVBQVU7QUFDVix3QkFBTSxRQUFRLFFBQVE7QUFDdEIsd0JBQU0sT0FBTztBQUFBLGdCQUFBO0FBQUEsY0FDakIsT0FDRztBQUNILHNCQUFNLFFBQVE7QUFDZCxzQkFBTSxPQUFPO0FBQUEsY0FBQTtBQUFBLFlBQ2pCO0FBQUEsVUFDSjtBQUFBLFFBQ0o7QUFBQSxRQUNBQSxrQ0FBQTtBQUFBLFVBQUM7QUFBQSxVQUFBO0FBQUEsWUFDRyxNQUFNO0FBQUEsWUFDTixTQUFRO0FBQUEsWUFDUixTQUFTLE1BQU07QUFDWCxvQkFBTSxPQUFPO0FBQUEsWUFBQTtBQUFBLFVBQ2pCO0FBQUEsUUFBQTtBQUFBLE1BQ0osRUFDSixDQUFBO0FBQUEsSUFBQSxHQUNKO0FBQUEsRUFBQTtBQUdaO0FDckhBLE1BQU0sd0JBQXdCLENBQUMsRUFBQyxXQUFXLFlBQVksU0FBUyxXQUFVO0FBQ2hFLFFBQUEsZUFBZSxTQUFTK2pCLFVBQVk7QUFFcEMsUUFBQSxlQUFlaHNCLGFBQUFBLFlBQVksTUFBTTtBQUN0QixpQkFBQSxLQUFLLEVBQUMsT0FBTyxlQUFlLFFBQVEsUUFBUSxLQUFLLENBQUEsRUFBRSxLQUFLLENBQUMsYUFBYTtBQUMvRSxpQkFBVyxRQUFRO0FBQUEsSUFBQSxDQUN0QjtBQUFBLEVBQUEsR0FDSCxDQUFDLFlBQVksQ0FBQztBQUVWLFFBQUEsZ0JBQWdCQSx5QkFBWSxDQUFDaXNCLGFBQVk7QUFDM0MsaUJBQWEsS0FBSyxFQUFFLE9BQU8sZ0JBQWdCLFFBQVEsUUFBUSxTQUFTQSxVQUFTLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxhQUFhO0FBQ3BHLG9CQUFjLFFBQVE7QUFBQSxJQUFBLENBQ3pCO0FBQUEsRUFBQSxHQUNILENBQUMsWUFBWSxDQUFDO0FBRVYsUUFBQSxnQkFBZ0IsQ0FBQyxhQUFhO0FBQ2hDLFlBQVEsa0JBQWtCLFFBQVE7QUFDbEMsZUFBVyxPQUFPO0FBQUEsRUFDdEI7QUFFTSxRQUFBLGFBQWEsQ0FBQyxhQUFhO0FBQzdCLGNBQVUsSUFBSSxRQUFRO0FBQ3RCLFlBQVEsa0JBQWtCLFFBQVE7QUFDbEMsY0FBVSxPQUFPO0FBQUEsRUFDckI7QUFHSSxTQUFBN1csa0NBQUEsS0FBQyxPQUFJLEVBQUEsV0FBVyxjQUNaLFVBQUE7QUFBQSxJQUFBbk4sc0NBQUMsVUFBTyxNQUFNLEdBQUcsU0FBUSxXQUFVLFNBQVMsY0FBYztBQUFBLDBDQUN6RCxRQUFPLEVBQUEsTUFBTSxHQUFHLFNBQVEsUUFBTyxTQUFTLE1BQU07QUFDM0Msb0JBQWMsT0FBTztBQUFBLElBQUEsRUFDdEIsQ0FBQTtBQUFBLEVBQUEsR0FDUDtBQUVSO0FBRUEsc0JBQXNCLFlBQVk7QUFBQSxFQUM5QixXQUFXaWMsaUJBQVU7QUFBQSxFQUNyQixZQUFZQSxpQkFBVTtBQUFBLEVBQ3RCLFNBQVNELGlCQUFVLFdBQVcsT0FBTztBQUFBLEVBQ3JDLE1BQU1BLGlCQUFVLFdBQVcsSUFBSTtBQUNuQztBQy9DQSxNQUFNLGdCQUFnQixDQUFDLEVBQUMsY0FBYTtBQUVqQyxnREFDSyxTQUFPLEVBQUEsVUFBQTtBQUFBLElBQVEsUUFBQTtBQUFBLElBQVE7QUFBQSxJQUFFLFFBQVE7QUFBQSxJQUFVO0FBQUEsSUFBRSxRQUFRO0FBQUEsSUFBUztBQUFBLElBQUUsUUFBUTtBQUFBLElBQU87QUFBQSxJQUFFLFFBQVE7QUFBQSxJQUFZO0FBQUEsSUFBRSxRQUFRO0FBQUEsSUFBUTtBQUFBLElBQUUsUUFBUTtBQUFBLElBQUk7QUFBQSxJQUFFLFFBQVE7QUFBQSxFQUFBLEdBQUs7QUFFN0o7QUFHQSxjQUFjLFlBQVk7QUFBQSxFQUN0QixTQUFTQSxpQkFBVSxXQUFXLE9BQU87QUFDekM7QUNDQSxNQUFNLGdCQUFnQixDQUFDLEVBQUMsU0FBUyxTQUFTLE1BQUFwckIsT0FBTSxlQUFlLE1BQU0sV0FBVTtBQUU3RSxRQUFNLENBQUMsYUFBYSxjQUFjLElBQUl5SSxhQUFBQSxTQUFTLElBQUk7QUFFbkQsUUFBTSxDQUFDLGNBQWMsZUFBZSxJQUFJQSxhQUFBQSxTQUFTLElBQUk7QUFFL0MsUUFBQSxrQkFBa0IsSUFBSTBpQixpQkFBZTtBQUUxQjhILFdBQVUsUUFBUUMsWUFBVTtBQUU3Q2hzQixlQUFBQSxVQUFVLE1BQU07QUFDWCxRQUFBLFFBQVEsUUFBUSxJQUFJO0FBQ3JCLHFCQUFlLFFBQVEsSUFBSTtBQUFBLElBQUE7QUFBQSxFQUM3QixHQUNDLENBQUMsUUFBUSxJQUFJLENBQUM7QUFFakJBLGVBQUFBLFVBQVUsTUFBTTtBQUNkLG9CQUFnQixPQUFPO0FBQUEsRUFBQSxHQUN0QixDQUFDLE9BQU8sQ0FBQztBQUVjK3JCLFdBQVUsUUFBUUMsWUFBVTtBQUVoRCxRQUFBLGNBQWMsT0FBTyxhQUFhLGtCQUFrQjtBQUV4RCxVQUFNaDJCLFFBQU8sTUFBTSxnQkFBZ0Isa0JBQWtCLFFBQVEsTUFBTThDLEtBQUk7QUFFaEUsV0FBQTtBQUFBLE1BQ0wsU0FBUzlDO0FBQUEsTUFDVCxTQUFTO0FBQUEsSUFDWDtBQUFBLEVBQ0Y7QUFFTSxRQUFBLFlBQVksQ0FBQ2syQixhQUFxQjtBQUN0Q0EsYUFBUSxPQUFPcHpCO0FBQ2ZvekIsYUFBUSxRQUFRLE9BQU8sUUFBUTtBQUMvQixvQkFBZ0IsT0FBT0EsUUFBTyxFQUFFLEtBQUssTUFBTTtBQUN6QyxzQkFBZ0JBLFFBQU87QUFDdkIsb0JBQWNBLFVBQVNwekIsS0FBSTtBQUNaLHFCQUFBLEtBQUssUUFBUTtBQUFBLElBQUEsQ0FDN0I7QUFBQSxFQUNIO0FBRU0sUUFBQSxhQUFhLENBQUNvekIsYUFBcUI7QUFDdkNBLGFBQVEsT0FBT3B6QjtBQUNmb3pCLGFBQVEsUUFBUSxPQUFPLFFBQVE7QUFDL0Isb0JBQWdCLE9BQU9BLFFBQU8sRUFBRSxLQUFLLE1BQU07QUFDekMsc0JBQWdCQSxRQUFPO0FBQ3ZCLG9CQUFjQSxVQUFTcHpCLEtBQUk7QUFDWixxQkFBQSxLQUFLLFFBQVE7QUFBQSxJQUFBLENBQzdCO0FBQUEsRUFDSDtBQUVNLFFBQUEsb0JBQW9CLENBQUMsV0FBVztBQUNwQyxvQkFBZ0IsTUFBTTtBQUN0QixrQkFBYyxRQUFRQSxLQUFJO0FBQUEsRUFDNUI7QUFHRSxTQUFBdWMsa0NBQUEsS0FBQyxPQUFJLEVBQUEsV0FBVSxjQUNiLFVBQUE7QUFBQSxJQUFDQSxrQ0FBQUEsS0FBQSxPQUFBLEVBQUksV0FBVSxVQUNYLFVBQUE7QUFBQSxNQUFBbk4sa0NBQUE7QUFBQSxRQUFDO0FBQUEsUUFBQTtBQUFBLFVBQ0MsZ0JBQWM7QUFBQSxVQUNkLGNBQWM7QUFBQSxVQUVkO0FBQUEsVUFDQSxnQkFBZ0IsQ0FBQyxXQUFXLE9BQU87QUFBQSxVQUNuQyxnQkFBZ0IsQ0FBQyxXQUFXLE9BQU8sWUFBWSxNQUFNLE9BQU87QUFBQSxVQUM1RCxVQUFVO0FBQUEsVUFDVixjQUFjO0FBQUEsVUFDZDtBQUFBLFVBQ0EsYUFBWTtBQUFBLFVBQ1osWUFBWSxFQUFFLFNBQVMsWUFBWTtBQUFBLFFBQUE7QUFBQSxRQVI5QixLQUFLLFVBQVUsV0FBVztBQUFBLE1BU25DO0FBQUEsTUFFRSxnQkFBZ0JBLGtDQUFBQSxJQUFDLGVBQWMsRUFBQSxTQUFTLGFBQWMsQ0FBQTtBQUFBLElBQUEsR0FDMUQ7QUFBQSxJQUNBQSxrQ0FBQUEsSUFBQyxTQUNDLFVBQUNBLGtDQUFBLElBQUEsdUJBQUEsRUFBc0IsU0FBUyxjQUFjLFdBQXNCLFlBQXdCLEtBQVcsQ0FBQSxFQUN6RyxDQUFBO0FBQUEsRUFBQSxHQUNGO0FBR0o7QUFFQSxjQUFjLFlBQVk7QUFBQSxFQUN4QixTQUFTZ2MsaUJBQVUsV0FBVyxPQUFPO0FBQUEsRUFDckMsU0FBU0EsaUJBQVUsV0FBVyxPQUFPO0FBQUEsRUFDckMsTUFBTUEsaUJBQVUsV0FBVyxJQUFJO0FBQUEsRUFDL0IsTUFBTWlJLGlCQUFVO0FBQUEsRUFDaEIsZUFBZWhJLGlCQUFVO0FBQUEsRUFDekIsTUFBTWlJLGlCQUFBQTtBQUNSOzs7Ozs7Ozs7Ozs7QUNqR0EsSUFBTSxpQkFBTixNQUFxQjtBQUFBLEVBQ25CLFlBQTJCbHlCLFFBQWU7QUFDeEMsU0FBSyxRQUFRQTtBQUFBLEVBQUE7QUFBQSxFQUdmLE1BQU0sWUFBWSxNQUFnQzs7QUFFaEQsV0FBTyxNQUFNLE1BQU0sSUFBSSxpQ0FBaUMsS0FBSyxNQUFNO0FBQUEsTUFDL0QsU0FBUztBQUFBLFFBQ0wsaUJBQWlCLGNBQVksVUFBSyxVQUFMLG1CQUFZO0FBQUEsTUFBQTtBQUFBLElBQzdDLENBQ0gsRUFBRSxLQUFLLENBQUUsYUFBYztBQUNwQixhQUFPLFNBQVMsS0FBSyxLQUFLLElBQUksQ0FBQyxTQUFjO0FBQ3ZDLFlBQUEsVUFBVSxJQUFJLFFBQVE7QUFDMUIsZ0JBQVEsTUFBTSxLQUFLO0FBQ25CLGdCQUFRLFFBQVEsS0FBSztBQUNyQixnQkFBUSxXQUFXLEtBQUs7QUFDeEIsZ0JBQVEsT0FBTyxLQUFLO0FBQ2IsZUFBQTtBQUFBLE1BQUEsQ0FDUjtBQUFBLElBQUEsQ0FFSjtBQUFBLEVBQUE7QUFFTDtBQXZCTSxpQkFBTitCLGtCQUFBO0FBQUEsRUFGQyxVQUFVO0FBQUEsRUFDVixlQUFlO0FBQUEsRUFFRDBYLDRCQUFPQyxPQUFLLENBQUE7QUFBQSxHQURyQixjQUFBO0FBeUJOLE1BQUEsbUJBQWU7QUN2QmYsTUFBTSx5QkFBeUIsQ0FBQyxFQUFDLE1BQU0sWUFBVztBQUU5QyxRQUFNLENBQUMsVUFBVSxXQUFXLElBQUlyUyxhQUFBQSxTQUFTLElBQUk7QUFFN0MsUUFBTSxDQUFDLFNBQVMsVUFBVSxJQUFJQSxhQUFBQSxTQUFTLENBQUM7QUFDeEN2QixlQUFBQSxVQUFVLE1BQU07QUFDZCxnQkFBWSxLQUFLLElBQUk7QUFBQSxFQUFBLEdBQ3BCLENBQUMsS0FBSyxJQUFJLENBQUM7QUFFUixRQUFBLGFBQXlCK3JCLFNBQVUsUUFBUUMsWUFBVTtBQUVyRCxRQUFBLGNBQWMsT0FBTyxhQUFhLGtCQUFrQjtBQUVoRCxVQUFBLGtCQUFrQixJQUFJSyxpQkFBZTtBQUUzQyxVQUFNcjJCLFFBQU8sTUFBTSxnQkFBZ0IsWUFBWSxJQUFJO0FBRTVDLFdBQUE7QUFBQSxNQUNMLFNBQVNBO0FBQUEsTUFDVCxTQUFTO0FBQUEsSUFDWDtBQUFBLEVBQ0Y7QUFFRmdLLGVBQUFBLFVBQVUsTUFBTTtBQUNELGVBQUEsTUFBTSxRQUFRLElBQUk7QUFBQSxFQUFBLEdBQzlCLENBQUMsTUFBTSxPQUFPLENBQUM7QUFFWixRQUFBd0IsWUFBVyxDQUFDLFdBQVc7QUFDekIsVUFBTSxVQUFVO0FBQ2hCLFFBQUksV0FBVyxXQUFXLGdCQUFnQixFQUFFLFNBQVM7QUFDckQsYUFBUyxVQUFVO0FBQ25CLGVBQVcsZ0JBQWdCLFFBQVE7QUFDbkMsZUFBVyxPQUFPLEdBQUc7QUFBQSxFQUN6QjtBQUlTLFNBQUEwRyxrQ0FBQTtBQUFBLElBQUM7QUFBQSxJQUFBO0FBQUEsTUFDRSxnQkFBYztBQUFBLE1BQ2QsV0FBVyxHQUFHLFdBQVcsSUFBSSx5QkFBeUIsRUFBRTtBQUFBLE1BRXhELGNBQWMsTUFBTTtBQUFBLE1BQ3BCLFlBQVksRUFBQyxTQUFTLFlBQVc7QUFBQSxNQUNqQyxNQUFNO0FBQUEsTUFDTjtBQUFBLE1BQ0EsYUFBWTtBQUFBLE1BQ1osZ0JBQWdCLENBQUMsV0FBVyxPQUFPO0FBQUEsTUFDbkMsZ0JBQWdCLENBQUMsV0FBVyxPQUFPO0FBQUEsTUFDbkMsVUFBQTFHO0FBQUEsTUFDQSxjQUFjO0FBQUEsSUFBQTtBQUFBLElBVFQsS0FBSyxVQUFVLFFBQVE7QUFBQSxFQVVoQztBQUVaO0FBRUEsdUJBQXVCLFlBQVk7QUFBQSxFQUNqQyxNQUFNMGlCLGlCQUFVLFdBQVcsSUFBSTtBQUFBLEVBQy9CLE9BQU9BLGlCQUFVLFdBQVcsS0FBSztBQUNuQztBQ3JEQSxNQUFNLG1CQUFtQixDQUFDLEVBQUMsT0FBTyxXQUFVO0FBRXBDLE1BQUEsYUFBYTZILFNBQVUsUUFBUUMsWUFBVTtBQUU3QyxRQUFNLENBQUMsU0FBUyxVQUFVLElBQUl6cUIsYUFBQUEsU0FBa0IsSUFBSSxTQUFTO0FBRXZELFFBQUEsZ0JBQWdCLENBQUMsU0FBa0J6SSxVQUFpQjtBQUN0RCxRQUFHQSxTQUFRLEdBQUc7QUFDQyxpQkFBQSxnQkFBQSxFQUFrQixNQUFNLGlCQUFpQjtBQUNwRCxZQUFNLGlCQUFpQjtBQUFBLElBQUE7QUFFM0IsUUFBR0EsU0FBUSxHQUFHO0FBQ0MsaUJBQUEsZ0JBQUEsRUFBa0IsTUFBTSxrQkFBa0I7QUFDckQsWUFBTSxrQkFBa0I7QUFBQSxJQUFBO0FBRTVCLFFBQUdBLFNBQVEsR0FBRztBQUNDLGlCQUFBLGdCQUFBLEVBQWtCLE1BQU0sZ0JBQWdCO0FBQ25ELFlBQU0sZ0JBQWdCO0FBQUEsSUFBQTtBQUFBLEVBRTlCO0FBRUEsU0FFUXVjLGtDQUFBLEtBQUFwRSw0QkFBQSxFQUFBLFVBQUE7QUFBQSxJQUFDb0Usa0NBQUFBLEtBQUEsT0FBQSxFQUFJLFdBQVUsUUFDUCxVQUFBO0FBQUEsTUFBQ25OLGtDQUFBQSxJQUFBLE9BQUEsRUFBSSxXQUFVLFVBQ1gsVUFBQUEsa0NBQUE7QUFBQSxRQUFDO0FBQUEsUUFBQTtBQUFBLFVBQ0c7QUFBQSxVQUNBO0FBQUEsVUFDQSxVQUFVO0FBQUEsUUFBQTtBQUFBLE1BQUEsR0FFbEI7QUFBQSxNQUNBQSxrQ0FBQUEsSUFBQyxPQUFJLEVBQUEsV0FBVSxVQUNYLFVBQUFBLGtDQUFBO0FBQUEsUUFBQztBQUFBLFFBQUE7QUFBQSxVQUNHO0FBQUEsVUFBWTtBQUFBLFFBQUE7QUFBQSxNQUFBLEVBRXBCLENBQUE7QUFBQSxJQUFBLEdBQ1I7QUFBQSxJQUNBbU4sa0NBQUFBLEtBQUMsT0FBSSxFQUFBLFdBQVUsY0FDWCxVQUFBO0FBQUEsTUFBQW5OLHNDQUFDLFNBQUksV0FBVSxVQUNULFVBQU0sTUFBQSxRQUFRLFFBQVEsTUFBTUEsa0NBQUE7QUFBQSxRQUFDO0FBQUEsUUFBQTtBQUFBLFVBQzNCLFNBQVMsTUFBTTtBQUFBLFVBQ2YsU0FBUyxNQUFNO0FBQUEsVUFDZjtBQUFBLFVBQ0EsTUFBSztBQUFBLFVBQ0wsTUFBTTtBQUFBLFVBQ047QUFBQSxRQUFBO0FBQUEsTUFBQSxHQUVSO0FBQUEsNENBQ0MsT0FBSSxFQUFBLFdBQVUsVUFDVCxVQUFNLE1BQUEsUUFBUSxRQUFRLE1BQU1BLGtDQUFBO0FBQUEsUUFBQztBQUFBLFFBQUE7QUFBQSxVQUMzQixTQUFTLE1BQU07QUFBQSxVQUNmLFNBQVMsTUFBTTtBQUFBLFVBQ2Y7QUFBQSxVQUNBLE1BQUs7QUFBQSxVQUNMLE1BQU07QUFBQSxVQUNOO0FBQUEsUUFBQTtBQUFBLE1BQUEsR0FFUjtBQUFBLDRDQUNDLE9BQUksRUFBQSxXQUFVLFVBQ1QsVUFBTSxNQUFBLFFBQVEsUUFBUSxNQUFNQSxrQ0FBQTtBQUFBLFFBQUM7QUFBQSxRQUFBO0FBQUEsVUFDM0IsU0FBUyxNQUFNO0FBQUEsVUFDZjtBQUFBLFVBQ0EsU0FBUyxNQUFNO0FBQUEsVUFDZixNQUFLO0FBQUEsVUFDTCxNQUFNO0FBQUEsVUFDTjtBQUFBLFFBQUE7QUFBQSxNQUFBLEVBRVIsQ0FBQTtBQUFBLElBQUEsRUFDSixDQUFBO0FBQUEsRUFBQSxHQUNKO0FBRVI7QUFFQSxpQkFBaUIsWUFBWTtBQUFBLEVBQ3pCLE9BQU9nYyxpQkFBVSxXQUFXLEtBQUs7QUFBQSxFQUNqQyxNQUFNQSxpQkFBVSxXQUFXLElBQUk7QUFDbkM7QUNuRkEsTUFBTSxzQkFBc0IsQ0FBQyxFQUFDLFlBQVc7QUFFckMsUUFBTSxDQUFDcHJCLE9BQU0sT0FBTyxJQUFJeUksYUFBQUEsU0FBUyxDQUFDO0FBQzVCLFFBQUEsYUFBeUJ3cUIsU0FBVSxRQUFRQyxZQUFVO0FBRTNELFFBQU0zeEIsV0FBVTtBQUFBLElBQ1osRUFBRSxPQUFPLEdBQUcsT0FBTyxVQUFVO0FBQUEsSUFDN0IsRUFBRSxPQUFPLEdBQUcsT0FBTyxVQUFVO0FBQUEsSUFDN0IsRUFBRSxPQUFPLEdBQUcsT0FBTyxTQUFTO0FBQUEsSUFDNUIsRUFBRSxPQUFPLEdBQUcsT0FBTyxhQUFhO0FBQUEsSUFDaEMsRUFBRSxPQUFPLEdBQUcsT0FBTyxXQUFXO0FBQUEsSUFDOUIsRUFBRSxPQUFPLEdBQUcsT0FBTyxlQUFlO0FBQUEsSUFDbEMsRUFBRSxPQUFPLEdBQUcsT0FBTyxhQUFhO0FBQUEsRUFDcEM7QUFFTSxRQUFBbUgsWUFBVyxDQUFDLFdBQVc7QUFDckI4cUIsUUFBQUEsU0FBUSxXQUFXLGdCQUFBLEVBQWtCO0FBQ3pDQSxXQUFNLE9BQU8sT0FBTztBQUNwQixlQUFXLGdCQUFnQkEsTUFBSztBQUNoQyxZQUFRLE1BQU07QUFBQSxFQUNsQjtBQUVBdHNCLGVBQUFBLFVBQVUsTUFBTTtBQUNaLFlBQVEsTUFBTSxJQUFJO0FBQUEsRUFBQSxHQUNuQixDQUFDLE1BQU0sSUFBSSxDQUFDO0FBRWYsK0NBQ0ssT0FDRyxFQUFBLFVBQUFrSSxrQ0FBQTtBQUFBLElBQUNnSywrQkFBQTtBQUFBLElBQUE7QUFBQSxNQUVHLFdBQVcsR0FBR3BaLFNBQVEsSUFBSSx5QkFBeUIsRUFBRTtBQUFBLE1BQ3JELFNBQUF1QjtBQUFBLE1BQ0EsY0FBY0EsU0FBUSxPQUFPLENBQUNuRixPQUFNQSxHQUFFLFNBQVM0RCxLQUFJLEVBQUUsSUFBSTtBQUFBLE1BQ3pELE9BQU91QixTQUFRLE9BQU8sQ0FBQ25GLE9BQU1BLEdBQUUsU0FBUzRELEtBQUksRUFBRSxJQUFJO0FBQUEsTUFDbEQsVUFBQTBJO0FBQUEsTUFDQSxZQUFZLEVBQUUsU0FBUyxZQUFZO0FBQUEsTUFDbkMsYUFBWTtBQUFBLE1BQ1osTUFBSztBQUFBLElBQUE7QUFBQSxFQUFBLEdBRWI7QUFFUjs7Ozs7Ozs7Ozs7O0FDekNBLElBQU0sY0FBTixNQUFrQjtBQUFBLEVBRWhCLFlBQTJCdEgsUUFBZTtBQUN4QyxTQUFLLFFBQVFBO0FBQUEsRUFBQTtBQUFBLEVBR2YsTUFBTSxXQUE0QjtBQUV6QixXQUFBLE1BQU0sTUFBTSxJQUFJLG1CQUFtQjtBQUFBLE1BQ3RDLFNBQVM7QUFBQSxRQUNMLGlCQUFpQixZQUFZLEtBQUssTUFBTTtBQUFBLE1BQUE7QUFBQSxJQUM1QyxDQUNILEVBQUUsS0FBSyxDQUFFLGFBQWM7QUFDcEIsYUFBTyxTQUFTLEtBQUssS0FBSyxJQUFJLENBQUMsU0FBYztBQUN2QyxZQUFBLE9BQU8sSUFBSSxLQUFLO0FBQ3BCLGFBQUssY0FBYyxFQUFDLE1BQU0sS0FBQSxDQUFLO0FBQ3hCLGVBQUE7QUFBQSxNQUFBLENBQ1I7QUFBQSxJQUFBLENBRUo7QUFBQSxFQUFBO0FBRUw7QUFyQk0sY0FBTitCLGtCQUFBO0FBQUEsRUFGQyxVQUFVO0FBQUEsRUFDVixlQUFlO0FBQUEsRUFHRDBYLDRCQUFPQyxPQUFLLENBQUE7QUFBQSxHQUZyQixXQUFBO0FBdUJOLE1BQUEsZ0JBQWU7QUN2QmYsTUFBTSxzQkFBc0IsQ0FBQyxVQUFVO0FBRTdCLFFBQUEsYUFBYW1ZLFNBQVUsUUFBUUMsWUFBVTtBQUV6QyxRQUFBLGVBQWVELFNBQVUsUUFBUVEsYUFBVztBQUM1QyxRQUFBLGNBQWMsT0FBTyxhQUFhLGtCQUFrQjtBQUVoRCxVQUFBdjJCLFFBQU8sTUFBTSxhQUFhLFNBQVM7QUFFbEMsV0FBQTtBQUFBLE1BQ0wsU0FBU0E7QUFBQSxNQUNULFNBQVM7QUFBQSxJQUNYO0FBQUEsRUFDRjtBQUdJLFFBQUF3TCxZQUFXLENBQUMsV0FBVztBQUNkLGVBQUEsZ0JBQUEsRUFBa0IsTUFBTSxPQUFPO0FBQzFDLFVBQU0sT0FBTyxNQUFNO0FBQUEsRUFDckI7QUFFRiwrQ0FDSyxPQUNJLEVBQUEsVUFBQTBHLGtDQUFBO0FBQUEsSUFBQztBQUFBLElBQUE7QUFBQSxNQUNFLGdCQUFjO0FBQUEsTUFDZCxPQUFPLE1BQU07QUFBQSxNQUNiLFlBQVksRUFBRSxTQUFTLFlBQVk7QUFBQSxNQUNuQztBQUFBLE1BQ0EsZ0JBQWdCLENBQUMsV0FBVyxPQUFPO0FBQUEsTUFDbkMsZ0JBQWdCLENBQUMsV0FBVyxPQUFPO0FBQUEsTUFDbkMsVUFBQTFHO0FBQUEsTUFDQSxjQUFjO0FBQUEsTUFDZCxXQUFXLEdBQUcsTUFBTSxLQUFLLFFBQVEsS0FBSyx5QkFBeUIseUJBQXlCO0FBQUEsTUFDeEYsTUFBSztBQUFBLElBQUE7QUFBQSxFQUFBLEdBR2I7QUFFUjtBQ3ZDQSxNQUFNLGlCQUFpQixDQUFDLEVBQUMsWUFBVztBQUVoQyxRQUFNLENBQUMsT0FBTyxRQUFRLElBQUlELGFBQUFBLFNBQVMsSUFBSTtBQUNqQyxRQUFBLGFBQXlCd3FCLFNBQVUsUUFBUUMsWUFBVTtBQUVyRCxRQUFBeHFCLFlBQVcsQ0FBQyxXQUFXO0FBQ3JCLFFBQUEsV0FBVyxXQUFXLGdCQUFBLEVBQWtCO0FBQzVDLGFBQVMsUUFBUSxDQUFDO0FBQ2xCLGVBQVcsZ0JBQWdCLFFBQVE7QUFDbkMsYUFBUyxDQUFDLEtBQUs7QUFBQSxFQUNuQjtBQUVBeEIsZUFBQUEsVUFBVSxNQUFNO0FBQ1osYUFBUyxNQUFNLEtBQUs7QUFBQSxFQUFBLEdBQ3JCLENBQUMsTUFBTSxLQUFLLENBQUM7QUFFaEIsK0NBQ0ssT0FBSSxFQUFBLFdBQVUsU0FDWCxVQUFDcVYsa0NBQUEsS0FBQSxTQUFBLEVBQU0sV0FBVSwyQ0FDZixVQUFBO0FBQUEsSUFBQW5OLGtDQUFBLElBQUMsU0FBTSxFQUFBLE1BQUssWUFBVyxPQUFNLEtBQUksV0FBVSxnQkFBZSxnQkFBZ0IsT0FBTyxVQUFVLENBQUNoVCxPQUFNc00sVUFBVSxHQUFFO0FBQUEsSUFDOUcwRyxrQ0FBQUEsSUFBQyxPQUFJLEVBQUEsV0FBVSx1ZEFBdWQsQ0FBQTtBQUFBLElBQ3JlQSxrQ0FBQSxJQUFBLFFBQUEsRUFBSyxXQUFVLDZEQUE0RCxVQUFPLFVBQUEsQ0FBQTtBQUFBLEVBQUEsRUFBQSxDQUNyRixFQUNKLENBQUE7QUFFUjs7Ozs7Ozs7Ozs7O0FDeEJBLElBQU0sZUFBTixNQUFtQjtBQUFBLEVBRWpCLFlBQTJCaE8sUUFBZTtBQUNwQyxTQUFLLFFBQVFBO0FBQUEsRUFBQTtBQUFBLEVBR2pCLE1BQU0sU0FBUyxNQUE4Qjs7QUFFekMsV0FBTyxNQUFNLE1BQU0sS0FBSyxnQ0FBZ0MsRUFBQyxRQUFhO0FBQUEsTUFDbEUsU0FBUztBQUFBLFFBQ0wsaUJBQWlCLGNBQVksVUFBSyxVQUFMLG1CQUFZO0FBQUEsTUFBQTtBQUFBLElBQzdDLENBQ0gsRUFBRSxLQUFLLENBQUUsYUFBYztBQUVoQixVQUFBLFFBQVEsSUFBSSxNQUFNO0FBQ2hCLFlBQUEsY0FBYyxTQUFTLElBQUk7QUFFMUIsYUFBQTtBQUFBLElBQUEsQ0FDVjtBQUFBLEVBQUE7QUFBQSxFQUlMLE1BQU0sVUFBVSxPQUE4Qjs7QUFDMUMsV0FBTyxNQUFNLE1BQU0sS0FBSywwQkFBMEIsT0FBTztBQUFBLE1BQ3JELFNBQVM7QUFBQSxRQUNMLGlCQUFpQixjQUFZLFVBQUssVUFBTCxtQkFBWTtBQUFBLE1BQUE7QUFBQSxJQUM3QyxDQUNILEVBQUUsS0FBSyxDQUFFLGFBQWM7QUFDcEIsYUFBTyxTQUFTO0FBQUEsSUFBQSxDQUNuQjtBQUFBLEVBQUE7QUFBQSxFQUdMLE1BQWEsVUFBVSxPQUE4Qjs7QUFFakQsV0FBTyxNQUFNLE1BQU0sS0FBSyx3QkFBd0IsT0FBTztBQUFBLE1BQ25ELFNBQVM7QUFBQSxRQUNMLGlCQUFpQixjQUFZLFVBQUssVUFBTCxtQkFBWTtBQUFBLE1BQUE7QUFBQSxJQUM3QyxDQUNILEVBQUUsS0FBSyxDQUFFLGFBQWM7QUFDcEIsYUFBTyxTQUFTO0FBQUEsSUFBQSxDQUNuQjtBQUFBLEVBQUE7QUFHVDtBQTNDTSxlQUFOK0Isa0JBQUE7QUFBQSxFQUZDLFVBQVU7QUFBQSxFQUNWLGVBQWU7QUFBQSxFQUdEMFgsNEJBQU9DLE9BQUssQ0FBQTtBQUFBLEdBRnJCLFlBQUE7QUE2Q04sTUFBQSxpQkFBZTtBQzlDZixNQUFNLFdBQTZCLENBQUMsRUFBRSxZQUFZO0FBRTlDLFNBQUExTCxrQ0FBQUEsSUFBQStJLGtCQUFBQSxVQUFBLEVBQ0MsVUFBSyxLQUFBLGFBQWEsU0FBUztBQUFBLElBQzFCLE9BQU87QUFBQSxJQUNQLFVBQVU7QUFBQSxFQUNULENBQUEsRUFBRSxPQUFPLFFBQU0sR0FBRyxFQUNyQixDQUFBO0FBRUo7QUNGQSxNQUFNLHNCQUFzQixNQUFNLFVBQXdCO0FBQUEsRUFRdEQsWUFBWSxPQUFPO0FBQ2YsVUFBTSxLQUFLO0FBUmY7QUFDQTtBQUVBLGlDQUFpQjtBQUFBLE1BQ2IsT0FBTyxJQUFJLE1BQU07QUFBQSxJQUNyQjtBQUlTLFNBQUEsYUFBYThhLFNBQVUsUUFBUUMsWUFBVTtBQUN6QyxTQUFBLGVBQWVELFNBQVUsUUFBUVMsY0FBWTtBQUFBLEVBQUE7QUFBQSxFQUd0RCxvQkFBb0I7QUFDaEIsU0FBSyxXQUFXLGdCQUFrQixFQUFBLEtBQUssYUFBYSxHQUFJLENBQUMsRUFBRSxVQUFVLENBQUN0M0IsT0FBTSxLQUFLLEtBQUtBLEVBQUMsQ0FBQztBQUFBLEVBQUE7QUFBQSxFQUc1RixNQUFNLEtBQUtBLElBQVU7QUFDakIsUUFBSSxTQUFTLE1BQU0sS0FBSyxhQUFhLFVBQVVBLEVBQUM7QUFDaEQsU0FBSyxTQUFTLE9BQU87QUFBQSxNQUNqQixPQUFPO0FBQUEsSUFBQSxFQUNUO0FBQUEsRUFBQTtBQUFBLEVBR04sU0FBUztBQUNMLGtEQUNLLE1BQ0csRUFBQSxVQUFBO0FBQUEsTUFBQ21nQixrQ0FBQUEsS0FBQSxTQUFBLEVBQU0sV0FBVSx1QkFBc0IsVUFBQTtBQUFBLFFBQUE7QUFBQSw4Q0FBUyxVQUFTLEVBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxLQUFLO0FBQUEsUUFBRTtBQUFBLDhDQUFXLFVBQVMsRUFBQSxPQUFPLEtBQUssTUFBTSxNQUFNLEtBQUs7QUFBQSxRQUFFO0FBQUEsTUFBQSxHQUFFO0FBQUEsTUFBUTtBQUFBLDRDQUFVLFVBQVMsRUFBQSxPQUFPLEtBQUssTUFBTSxNQUFNLE1BQU8sQ0FBQTtBQUFBLElBQUEsR0FDM007QUFBQSxFQUFBO0FBR1o7QUNwQ0EsTUFBTSxrQkFBa0IsQ0FBQyxFQUFDLE1BQU0sT0FBTyxhQUFZO0FBRzNDLFNBQUFBLGtDQUFBLEtBQUMsT0FBSSxFQUFBLFdBQVUsY0FDUCxVQUFBO0FBQUEsSUFBQW5OLHNDQUFDLE9BQ0UsRUFBQSxVQUFBQSxrQ0FBQUEsSUFBQyxnQkFBZSxFQUFBLE1BQWMsQ0FBQSxHQUNqQztBQUFBLDBDQUNDLE9BQUksRUFBQSxXQUFVLGFBQ1osVUFBQ0Esa0NBQUEsSUFBQSxxQkFBQSxFQUFvQixNQUFjLENBQUEsR0FDdEM7QUFBQSxJQUNBQSxrQ0FBQUEsSUFBQyxTQUFJLFdBQVUsYUFDWCxnREFBQyxxQkFBb0IsRUFBQSxNQUFZLFFBQWdCLEVBQ3JELENBQUE7QUFBQSxJQUNDQSxrQ0FBQSxJQUFBLE9BQUEsRUFDRyxVQUFDQSxrQ0FBQUEsSUFBQSxlQUFBLENBQUEsQ0FBYyxFQUNuQixDQUFBO0FBQUEsRUFBQSxHQUNSO0FBRVI7QUFFQSxnQkFBZ0IsWUFBWTtBQUFBLEVBQ3hCLE1BQU1nYyxpQkFBVSxXQUFXLElBQUk7QUFBQSxFQUMvQixPQUFPQSxpQkFBVSxXQUFXLEtBQUs7QUFBQSxFQUNqQyxRQUFRQyxpQkFBQUE7QUFDWjtBQ2pDTyxNQUFNLGFBQWE7QUFBQSxFQUFuQjtBQUNILDhCQUFhO0FBQ2IsaUNBQWdCO0FBQ2hCLGdDQUFlO0FBQUE7QUFBQTtBQUVuQjs7Ozs7Ozs7Ozs7O0FDR0EsSUFBTSxzQkFBTixNQUEwQjtBQUFBLEVBQ3hCLFlBQTJCanFCLFFBQWU7QUFDeEMsU0FBSyxRQUFRQTtBQUFBLEVBQUE7QUFBQSxFQUdmLE1BQU0saUJBQWlCLGFBQXFCLE1BQXFDO0FBRS9FLFdBQU8sTUFBTSxNQUFNLElBQUksb0NBQW9DLEtBQUssT0FBTyxXQUFXLGFBQWE7QUFBQSxNQUMzRixTQUFTO0FBQUEsUUFDTCxpQkFBaUIsWUFBWSxLQUFLLE1BQU07QUFBQSxNQUFBO0FBQUEsSUFDNUMsQ0FDSCxFQUFFLEtBQUssQ0FBRSxhQUFjO0FBRXBCLFVBQUksT0FBdUIsQ0FBQztBQUU1QixlQUFTLEtBQUssS0FBSyxJQUFJLENBQUMsU0FBYztBQUNwQyxZQUFJLEtBQUssSUFBSSxhQUFBO0FBQ2IsV0FBRyxLQUFLLEtBQUs7QUFDYixXQUFHLFFBQVEsS0FBSztBQUNoQixXQUFHLE9BQU8sS0FBSztBQUVmLGFBQUssS0FBSyxFQUFFO0FBRVAsYUFBQSxTQUFTLElBQUksQ0FBQyxRQUFhO0FBQzVCLGNBQUksTUFBTSxJQUFJLGFBQUE7QUFDZCxjQUFJLEtBQUssSUFBSTtBQUNULGNBQUEsUUFBUSxRQUFRLElBQUk7QUFDeEIsY0FBSSxPQUFPLElBQUk7QUFDZixlQUFLLEtBQUssR0FBRztBQUFBLFFBQUEsQ0FDaEI7QUFFTSxlQUFBO0FBQUEsTUFBQSxDQUNSO0FBRU0sYUFBQTtBQUFBLElBQUEsQ0FDVjtBQUFBLEVBQUE7QUFFTDtBQXJDTSxzQkFBTitCLGtCQUFBO0FBQUEsRUFGQyxVQUFVO0FBQUEsRUFDVixlQUFlO0FBQUEsRUFFRDBYLDRCQUFPQyxPQUFLLENBQUE7QUFBQSxHQURyQixtQkFBQTtBQXVDTixNQUFBLHdCQUFlOzs7Ozs7OztBQzdDZixNQUFJalQsbUJBQWtCbEksc0JBQWdEO0FBQ3RFLE1BQUlpSixpQkFBZ0J2RixxQkFBK0M7QUFDbkUsTUFBSTZvQixrQkFBaUIvSyxxQkFBK0M7QUFDcEUsTUFBSTlZLDRCQUEyQitZLCtCQUF5RDtBQUN4RixNQUFJaFQsU0FBUWlULGVBQWdCO0FBQzVCLE1BQUkxa0IsU0FBK0Mya0IsOENBQUE7QUFFbkQsTUFBSS9ZLGFBQVksQ0FBQyxrQkFBa0IsZ0JBQWdCLGVBQWUsV0FBVyxhQUFhLGlCQUFpQixjQUFjO0FBQ3pILFdBQVMsU0FBU0MsT0FBTTtBQUN0QixRQUFJLHNCQUFzQkEsTUFBSyxnQkFDN0Isc0JBQXNCLHdCQUF3QixTQUFTLFFBQVEscUJBQy9ELG9CQUFvQkEsTUFBSyxjQUN6QixlQUFlLHNCQUFzQixTQUFTLFFBQVEsbUJBQ3RELG1CQUFtQkEsTUFBSztBQUN4QixJQUFBQSxNQUFLO0FBQ0wsUUFBSSxpQkFBaUJBLE1BQUssV0FDMUIsaUJBQWlCLG1CQUFtQixTQUFTLFFBQVEsZ0JBQ3JELHFCQUFxQkEsTUFBSyxlQUMxQixvQkFBb0JBLE1BQUssY0FDekIsZUFBZSxzQkFBc0IsU0FBUyxPQUFPLG1CQUNyRCxrQkFBa0JILDBCQUF5QkcsT0FBTUQsVUFBUztBQUM1RCxRQUFJLGtCQUFrQixnQkFBZ0I7QUFDdEMsUUFBSSxjQUFjNkYsT0FBTSxPQUFPLE1BQVM7QUFDeEMsUUFBSSxVQUFVQSxPQUFNLE9BQU8sS0FBSztBQUNoQyxRQUFJLFlBQVlBLE9BQU0sU0FBUyxNQUFNLFFBQVEsbUJBQW1CLElBQUksc0JBQXNCLE1BQVMsR0FDakcsYUFBYThkLGdCQUFlLFdBQVcsQ0FBQyxHQUN4QyxpQkFBaUIsV0FBVyxDQUFDLEdBQzdCLG9CQUFvQixXQUFXLENBQUM7QUFDbEMsUUFBSSxhQUFhOWQsT0FBTSxTQUFTLE9BQU8sb0JBQW9CLGNBQWMsa0JBQWtCLEVBQUUsR0FDM0YsYUFBYThkLGdCQUFlLFlBQVksQ0FBQyxHQUN6QyxrQkFBa0IsV0FBVyxDQUFDLEdBQzlCLHFCQUFxQixXQUFXLENBQUM7QUFDbkMsUUFBSSxhQUFhOWQsT0FBTSxTQUFTLHdCQUF3QixJQUFJLEdBQzFELGFBQWE4ZCxnQkFBZSxZQUFZLENBQUMsR0FDekMsWUFBWSxXQUFXLENBQUMsR0FDeEIsZUFBZSxXQUFXLENBQUM7QUFDN0IsUUFBSSxhQUFhOWQsT0FBTSxTQUFTLE1BQVMsR0FDdkMsYUFBYThkLGdCQUFlLFlBQVksQ0FBQyxHQUN6QyxtQkFBbUIsV0FBVyxDQUFDLEdBQy9CLHNCQUFzQixXQUFXLENBQUM7QUFDcEMsUUFBSSxhQUFhOWQsT0FBTSxTQUFTLEVBQUUsR0FDaEMsY0FBYzhkLGdCQUFlLFlBQVksQ0FBQyxHQUMxQyxnQkFBZ0IsWUFBWSxDQUFDLEdBQzdCLG1CQUFtQixZQUFZLENBQUM7QUFDbEMsUUFBSSxjQUFjOWQsT0FBTSxTQUFTLEtBQUssR0FDcEMsY0FBYzhkLGdCQUFlLGFBQWEsQ0FBQyxHQUMzQyxtQkFBbUIsWUFBWSxDQUFDLEdBQ2hDLHNCQUFzQixZQUFZLENBQUM7QUFDckMsUUFBSSxjQUFjOWQsT0FBTSxTQUFTLEVBQUUsR0FDakMsY0FBYzhkLGdCQUFlLGFBQWEsQ0FBQyxHQUMzQyxlQUFlLFlBQVksQ0FBQyxHQUM1QixrQkFBa0IsWUFBWSxDQUFDO0FBQ2pDLFFBQUksY0FBYzlkLE9BQU0sU0FBUyxNQUFTLEdBQ3hDLGNBQWM4ZCxnQkFBZSxhQUFhLENBQUMsR0FDM0MscUJBQXFCLFlBQVksQ0FBQyxHQUNsQyx3QkFBd0IsWUFBWSxDQUFDO0FBQ3ZDLFFBQUksY0FBYzlkLE9BQU0sU0FBUyxNQUFTLEdBQ3hDLGNBQWM4ZCxnQkFBZSxhQUFhLENBQUMsR0FDM0MsbUJBQW1CLFlBQVksQ0FBQyxHQUNoQyxzQkFBc0IsWUFBWSxDQUFDO0FBQ3JDLFFBQUksaUJBQWlCLGtCQUFrQjtBQUNyQyxzQkFBZ0IsQ0FBQSxDQUFFO0FBQ2xCLDBCQUFvQixZQUFZO0FBQUEsSUFDcEM7QUFDRSxRQUFJLHdCQUF3QixvQkFBb0I7QUFDOUMsd0JBQWtCLE1BQU0sUUFBUSxtQkFBbUIsSUFBSSxzQkFBc0IsTUFBUztBQUN0Riw0QkFBc0IsbUJBQW1CO0FBQUEsSUFDN0M7QUFDRSxJQUFBOWQsT0FBTSxVQUFVLFdBQVk7QUFDMUIsY0FBUSxVQUFVO0FBQ2xCLGFBQU8sV0FBWTtBQUNqQixnQkFBUSxVQUFVO0FBQUEsTUFDbkI7QUFBQSxJQUNGLEdBQUUsRUFBRTtBQUNMLFFBQUksY0FBY0EsT0FBTSxZQUFZLFNBQVUsWUFBWSxVQUFVO0FBQ2xFLFVBQUksQ0FBQyxpQkFBa0IsUUFBTyxTQUFVO0FBQ3hDLFVBQUksU0FBUyxpQkFBaUIsWUFBWSxRQUFRO0FBQ2xELFVBQUksVUFBVSxPQUFPLE9BQU8sU0FBUyxZQUFZO0FBQy9DLGVBQU8sS0FBSyxVQUFVLFdBQVk7QUFDaEMsaUJBQU8sU0FBVTtBQUFBLFFBQ3pCLENBQU87QUFBQSxNQUNQO0FBQUEsSUFDQSxHQUFLLENBQUMsZ0JBQWdCLENBQUM7QUFDckIsSUFBQUEsT0FBTSxVQUFVLFdBQVk7QUFDMUIsVUFBSSx3QkFBd0IsTUFBTTtBQUNoQyxvQkFBWSxpQkFBaUIsU0FBVTdNLFVBQVM7QUFDOUMsY0FBSSxDQUFDLFFBQVEsUUFBUztBQUN0Qiw0QkFBa0JBLFlBQVcsRUFBRTtBQUMvQix1QkFBYSxDQUFDLENBQUMsWUFBWSxPQUFPO0FBQUEsUUFDMUMsQ0FBTztBQUFBLE1BQ1A7QUFBQSxJQUlHLEdBQUUsRUFBRTtBQUNMLFFBQUksZ0JBQWdCNk0sT0FBTSxZQUFZLFNBQVUsVUFBVSxZQUFZO0FBQ3BFLFVBQUksYUFBYXpSLE9BQU0sa0JBQWtCLFVBQVUsWUFBWSxrQkFBa0I7QUFDakYsVUFBSSxDQUFDLFlBQVk7QUFDZixvQkFBWSxVQUFVO0FBQ3RCLDJCQUFtQixFQUFFO0FBQ3JCLDRCQUFvQixFQUFFO0FBQ3RCLHlCQUFpQixDQUFBLENBQUU7QUFDbkIscUJBQWEsS0FBSztBQUNsQiw0QkFBb0IsS0FBSztBQUN6QjtBQUFBLE1BQ047QUFDSSxVQUFJLGdCQUFnQixhQUFhLFVBQVUsR0FBRztBQUM1QywyQkFBbUIsVUFBVTtBQUM3Qiw0QkFBb0IsVUFBVTtBQUM5Qix5QkFBaUIsYUFBYSxVQUFVLENBQUM7QUFDekMscUJBQWEsS0FBSztBQUNsQiw0QkFBb0IsS0FBSztBQUFBLE1BQy9CLE9BQVc7QUFDTCxZQUFJLFVBQVUsWUFBWSxVQUFVLENBQUU7QUFDdEMsMkJBQW1CLFVBQVU7QUFDN0IscUJBQWEsSUFBSTtBQUNqQiw0QkFBb0IsQ0FBQyxnQkFBZ0I7QUFDckMsb0JBQVksWUFBWSxTQUFVNEUsVUFBUztBQUN6QyxjQUFJLENBQUMsUUFBUztBQUNkLGNBQUksWUFBWSxZQUFZLFFBQVM7QUFDckMsc0JBQVksVUFBVTtBQUN0Qix1QkFBYSxLQUFLO0FBQ2xCLDhCQUFvQixVQUFVO0FBQzlCLDJCQUFpQkEsWUFBVyxFQUFFO0FBQzlCLDhCQUFvQixLQUFLO0FBQ3pCLDBCQUFnQkEsV0FBVXFILGVBQWNBLGVBQWMsQ0FBQSxHQUFJLFlBQVksR0FBRyxJQUFJZixpQkFBZ0IsQ0FBQSxHQUFJLFlBQVl0RyxRQUFPLENBQUMsSUFBSSxZQUFZO0FBQUEsUUFDN0ksQ0FBTztBQUFBLE1BQ1A7QUFBQSxJQUNBLEdBQUssQ0FBQyxjQUFjLGFBQWEsa0JBQWtCLGNBQWMsa0JBQWtCLENBQUM7QUFDbEYsUUFBSUEsV0FBVSxtQkFBbUIsQ0FBRSxJQUFHLG1CQUFtQixtQkFBbUIsZ0JBQWdCLGtCQUFrQixDQUFFO0FBQ2hILFdBQU9xSCxlQUFjQSxlQUFjLENBQUUsR0FBRSxlQUFlLEdBQUcsQ0FBQSxHQUFJO0FBQUEsTUFDM0QsU0FBU3JIO0FBQUEsTUFDVCxXQUFXLGFBQWE7QUFBQSxNQUN4QjtBQUFBLE1BQ0E7QUFBQSxJQUNKLENBQUc7QUFBQSxFQUNIO0FBRUEsNEJBQUEsV0FBbUI7Ozs7Ozs7O0FDMUluQixXQUFPLGVBQWMsU0FBVSxjQUFjLEVBQUUsT0FBTyxNQUFNO0FBRTVELFFBQUlzSCxZQUFXbEosZ0JBQXlDO0FBQ3hELFFBQUl5TyxTQUFRL0ssZUFBZ0I7QUFDNUIsUUFBSStWLFVBQTBEK0gsK0NBQUE7QUFDOUQsUUFBSWdMLG1CQUE0RS9LLHdEQUFBO0FBQ2hGLFFBQUksV0FBOERDLGlEQUFBO0FBQ25CQyx5QkFBQTtBQUNDTywwQkFBQTtBQUNIQyx1QkFBQTtBQUNISSxvQkFBQTtBQUNHQyx1QkFBQTtBQUNNQyw2QkFBQTtBQUdKRyx5QkFBQTtBQUNVQyxtQ0FBQTtBQUNqQkMsbUJBQUE7QUFDZUMsaUNBQUE7QUFDUEMsMEJBQUE7QUFDNUJDLG9CQUFBO0FBS3BCLGFBQVMsa0JBQWtCeG1CLElBQUc7QUFDNUIsVUFBSUEsTUFBS0EsR0FBRSxXQUFZLFFBQU9BO0FBQzlCLFVBQUlpQixLQUFJLHVCQUFPLE9BQU8sSUFBSTtBQUMxQixVQUFJakIsSUFBRztBQUNMLGVBQU8sS0FBS0EsRUFBQyxFQUFFLFFBQVEsU0FBVUQsSUFBRztBQUNsQyxjQUFJQSxPQUFNLFdBQVc7QUFDbkIsZ0JBQUkwQyxLQUFJLE9BQU8seUJBQXlCekMsSUFBR0QsRUFBQztBQUM1QyxtQkFBTyxlQUFla0IsSUFBR2xCLElBQUcwQyxHQUFFLE1BQU1BLEtBQUk7QUFBQSxjQUN0QyxZQUFZO0FBQUEsY0FDWixLQUFLLFdBQVk7QUFBRSx1QkFBT3pDLEdBQUVELEVBQUM7QUFBQSxjQUFFO0FBQUEsWUFDekMsQ0FBUztBQUFBLFVBQ1Q7QUFBQSxRQUNBLENBQUs7QUFBQSxNQUNMO0FBQ0UsTUFBQWtCLEdBQUUsU0FBUyxJQUFJakI7QUFDZixhQUFPLE9BQU8sT0FBT2lCLEVBQUM7QUFBQSxJQUN4QjtBQUVBLFFBQUksbUJBQWdDLGtDQUFrQitRLE1BQUs7QUFFM0QsUUFBSSxjQUEyQixnQkFBQUEsT0FBTSxXQUFXLFNBQVUsT0FBT0ssTUFBSztBQUNwRSxVQUFJLG9CQUFvQixTQUFTLFNBQVMsS0FBSztBQUMvQyxVQUFJLGNBQWMwZCxpQkFBZ0IsZ0JBQWdCLGlCQUFpQjtBQUNuRSxhQUFvQixpQ0FBaUIsY0FBYy9TLFFBQU8sUUFBUXZRLFVBQVM7QUFBQSxRQUN6RSxLQUFLNEY7QUFBQSxNQUNOLEdBQUUsV0FBVyxDQUFDO0FBQUEsSUFDakIsQ0FBQztBQUNELFFBQUksZ0JBQWdCO0FBRXBCLFlBQW1CLFdBQUEsU0FBUztBQUM1QixZQUFRLFNBQVMsSUFBSTtBQUFBOzs7Ozs7O0FDdkRzQjtBQUNsQ2tsQix5QkFBQSxVQUFVaDBCLGlDQUEwQztBQUFBOzs7Ozs7Ozs7QUNIN0MsK0JBQUEsV0FBR0EsNEJBQXNDLEVBQUM7Ozs7QUNTMUQsTUFBTSxxQkFBcUIsQ0FBQyxVQUFVO0FBQ0xzekIsV0FBVSxRQUFRQyxZQUFVO0FBRXJELFFBQUEsY0FBYyxPQUFPLGdCQUFnQjtBQUNuQyxVQUFBLG1CQUFtQixJQUFJVSxzQkFBb0I7QUFFakQsV0FBTyxNQUFNLGlCQUFpQixpQkFBaUIsYUFBYSxNQUFNLElBQUk7QUFBQSxFQUN4RTtBQUVNLFFBQUFsckIsWUFBVyxDQUFDLFdBQVc7QUFDdkIsUUFBQSxPQUFPLE1BQU0sYUFBYSxZQUFZO0FBQ3hDLFlBQU0sU0FBUyxNQUFNO0FBQUEsSUFBQTtBQUFBLEVBRXpCO0FBR0ksU0FBQTBHLGtDQUFBO0FBQUEsSUFBQ3lrQixvQ0FBQTtBQUFBLElBQUE7QUFBQSxNQUNHLGdCQUFjO0FBQUEsTUFFZCxPQUFPLE1BQU07QUFBQSxNQUNiO0FBQUEsTUFDQSxnQkFBZ0IsQ0FBQyxXQUFXLE9BQU87QUFBQSxNQUNuQyxVQUFBbnJCO0FBQUEsTUFDQSxjQUFjO0FBQUEsSUFBQTtBQUFBLElBTFQsS0FBSyxVQUFVLE1BQU0sS0FBSyxJQUFJO0FBQUEsRUFNdkM7QUFFTjtBQUVBLG1CQUFtQixZQUFZO0FBQUEsRUFDN0IsTUFBTTBpQixpQkFBVSxXQUFXLElBQUk7QUFBQSxFQUMvQixPQUFPQSxpQkFBVSxXQUFXLFlBQVk7QUFBQSxFQUN4QyxVQUFVQyxpQkFBQUE7QUFDWjs7Ozs7Ozs7Ozs7O0FDL0JBLElBQU0saUJBQU4sTUFBcUI7QUFBQSxFQUNqQixZQUEyQmpxQixRQUFlO0FBQ3RDLFNBQUssUUFBUUE7QUFBQSxFQUFBO0FBQUEsRUFHakIsTUFBTSxrQkFBa0IsTUFBYyxNQUFnQzs7QUFFbEUsV0FBTyxNQUFNLE1BQU0sSUFBSSxvQ0FBb0MsS0FBSyxPQUFPLE1BQU0sTUFBTTtBQUFBLE1BQy9FLFNBQVM7QUFBQSxRQUNMLGlCQUFpQixjQUFZLFVBQUssVUFBTCxtQkFBWTtBQUFBLE1BQUE7QUFBQSxJQUM3QyxDQUNILEVBQUUsS0FBSyxDQUFFLGFBQWM7QUFDcEIsYUFBTyxTQUFTLEtBQUssS0FBSyxJQUFJLENBQUMsU0FBYztBQUNyQyxZQUFBOUQsS0FBSSxJQUFJLFFBQVE7QUFDcEIsUUFBQUEsR0FBRSxLQUFLLEtBQUs7QUFDWixRQUFBQSxHQUFFLFFBQVEsS0FBSztBQUNmLFFBQUFBLEdBQUUsT0FBTyxLQUFLO0FBQ1osUUFBQUEsR0FBQSx5QkFBeUIsTUFBTSxLQUFLO0FBRS9CLGVBQUFBO0FBQUEsTUFBQSxDQUNWO0FBQUEsSUFBQSxDQUVKO0FBQUEsRUFBQTtBQUFBLEVBR0wsTUFBTSxZQUFZLGNBQWdEOztBQUU5RCxXQUFPLE1BQU0sTUFBTSxJQUFJLDRDQUE0QyxhQUFhLE1BQU07QUFBQSxNQUNsRixTQUFTO0FBQUEsUUFDTCxpQkFBaUIsY0FBWSxVQUFLLFVBQUwsbUJBQVk7QUFBQSxNQUFBO0FBQUEsSUFDN0MsQ0FDSCxFQUFFLEtBQUssQ0FBRSxhQUFjO0FBQ3BCLGFBQU8sU0FBUyxLQUFLLEtBQUssSUFBSSxDQUFDLFNBQWM7QUFDdkMsWUFBQUEsS0FBSSxJQUFJLFFBQVE7QUFDcEIsUUFBQUEsR0FBRSxLQUFLLEtBQUs7QUFDWixRQUFBQSxHQUFFLFFBQVEsS0FBSztBQUNmLFFBQUFBLEdBQUUsT0FBTyxLQUFLO0FBQ1osUUFBQUEsR0FBQSx5QkFBeUIsTUFBTSxLQUFLO0FBRS9CLGVBQUFBO0FBQUEsTUFBQSxDQUNSO0FBQUEsSUFBQSxDQUVKO0FBQUEsRUFBQTtBQUFBLEVBR0wsTUFBTSxvQkFBb0IsU0FBa0IsVUFBcUM7O0FBQzdFLFdBQU8sTUFBTSxNQUFNLEtBQUsscUNBQXFDLFFBQVEsTUFBTSxVQUFVO0FBQUEsTUFDakYsU0FBUztBQUFBLFFBQ0wsaUJBQWlCLGNBQVksVUFBSyxVQUFMLG1CQUFZO0FBQUEsTUFBQTtBQUFBLElBQzdDLENBQ0gsRUFBRSxLQUFLLENBQUUsYUFBYztBQUNwQixhQUFPLFNBQVM7QUFBQSxJQUFBLENBQ25CO0FBQUEsRUFBQTtBQUFBLEVBR0wsTUFBTSxZQUFZLFNBQWtCLFVBQWdDOztBQUNoRSxXQUFPLE1BQU0sTUFBTSxLQUFLLHFDQUFxQyxRQUFRLE1BQU0sVUFBVTtBQUFBLE1BQ2pGLFNBQVM7QUFBQSxRQUNMLGlCQUFpQixjQUFZLFVBQUssVUFBTCxtQkFBWTtBQUFBLE1BQUE7QUFBQSxJQUM3QyxDQUNILEVBQUUsS0FBSyxDQUFFLGFBQWM7QUFDcEIsYUFBTyxTQUFTO0FBQUEsSUFBQSxDQUNuQjtBQUFBLEVBQUE7QUFFVDtBQWhFTSxpQkFBTjZGLGtCQUFBO0FBQUEsRUFGQyxVQUFVO0FBQUEsRUFDVixlQUFlO0FBQUEsRUFFQzBYLDRCQUFPQyxPQUFLLENBQUE7QUFBQSxHQUR2QixjQUFBO0FBa0VOLE1BQUEsbUJBQWU7QUM1RTJFLFNBQVMsRUFBRTFlLElBQUVzQixJQUFFb0IsSUFBRTtBQUFDLE1BQUk3RCxLQUFFLE1BQUs4QyxLQUFFUCxvQkFBRSxJQUFJLEdBQUVrSyxLQUFFbEssb0JBQUUsQ0FBQyxHQUFFOUIsS0FBRThCLGFBQUMsT0FBQyxJQUFJLEdBQUVKLEtBQUVJLGFBQUMsT0FBQyxFQUFFLEdBQUVHLEtBQUVILGFBQUFBLE9BQUcsR0FBQ3lCLEtBQUV6QixvQkFBRyxHQUFDcUIsS0FBRXJCLGFBQUFBLE9BQUVwQixFQUFDLEdBQUU0QyxLQUFFeEIsYUFBQUEsT0FBRSxJQUFFO0FBQUUsRUFBQXFCLEdBQUUsVUFBUXpDO0FBQUUsTUFBSWtCLEtBQUUsZUFBYSxPQUFPLFFBQU9NLEtBQUUsQ0FBQ0YsTUFBRyxNQUFJQSxNQUFHSjtBQUFFLE1BQUcsY0FBWSxPQUFPbEIsR0FBRSxPQUFNLElBQUksVUFBVSxxQkFBcUI7QUFBRSxFQUFBc0IsS0FBRSxDQUFDQSxNQUFHO0FBQUUsTUFBSW9GLEtBQUUsQ0FBQyxFQUFFaEUsS0FBRUEsTUFBRyxDQUFFLEdBQUUsU0FBUXhELEtBQUUsRUFBRSxjQUFhd0QsT0FBSSxDQUFDLENBQUNBLEdBQUUsVUFBU0MsS0FBRSxhQUFZRCxJQUFFdEQsS0FBRSxzQkFBcUJzRCxNQUFHLENBQUMsQ0FBQ0EsR0FBRSxrQkFBaUJULEtBQUVVLEtBQUUsS0FBSyxJQUFJLENBQUNELEdBQUUsV0FBUyxHQUFFcEIsRUFBQyxJQUFFO0FBQUtMLHlCQUFFLFdBQVU7QUFBQyxXQUFPMkIsR0FBRSxVQUFRLE1BQUcsV0FBVTtBQUFDLE1BQUFBLEdBQUUsVUFBUTtBQUFBLElBQUU7QUFBQSxFQUFDLEdBQUUsQ0FBQSxDQUFFO0FBQUUsTUFBSWxCLEtBQUVMLHFCQUFFLFdBQVU7QUFBQyxRQUFJRCxLQUFFLFNBQVNBLElBQUU7QUFBQyxVQUFJSCxLQUFFRCxHQUFFLFNBQVFLLEtBQUVFLEdBQUU7QUFBUSxhQUFPUCxHQUFFLFVBQVFPLEdBQUUsVUFBUSxNQUFLK0osR0FBRSxVQUFRbEssSUFBRXlCLEdBQUUsVUFBUUosR0FBRSxRQUFRLE1BQU1wQixJQUFFSixFQUFDO0FBQUEsSUFBQyxHQUFFQSxLQUFFLFNBQVNHLElBQUVILElBQUU7QUFBQyxNQUFBTyxNQUFHLHFCQUFxQmxDLEdBQUUsT0FBTyxHQUFFQSxHQUFFLFVBQVFrQyxLQUFFLHNCQUFzQkosRUFBQyxJQUFFLFdBQVdBLElBQUVILEVBQUM7QUFBQSxJQUFDLEdBQUVJLEtBQUUsU0FBU0QsSUFBRTtBQUFDLFVBQUcsQ0FBQ3dCLEdBQUUsUUFBUSxRQUFNO0FBQUcsVUFBSTNCLEtBQUVHLEtBQUVPLEdBQUU7QUFBUSxhQUFNLENBQUNBLEdBQUUsV0FBU1YsTUFBR0ssTUFBR0wsS0FBRSxLQUFHMEIsTUFBR3ZCLEtBQUVrSyxHQUFFLFdBQVNySjtBQUFBLElBQUMsR0FBRWpDLEtBQUUsU0FBU2lCLElBQUU7QUFBQyxhQUFPM0IsR0FBRSxVQUFRLE1BQUtKLE1BQUc4QixHQUFFLFVBQVFJLEdBQUVILEVBQUMsS0FBR0QsR0FBRSxVQUFRTyxHQUFFLFVBQVEsTUFBS3NCLEdBQUU7QUFBQSxJQUFRLEdBQUVILEtBQUUsU0FBU3RCLEtBQUc7QUFBQyxVQUFJc0IsS0FBRSxLQUFLLElBQUs7QUFBQyxVQUFHckIsR0FBRXFCLEVBQUMsRUFBRSxRQUFPMUMsR0FBRTBDLEVBQUM7QUFBRSxVQUFHRSxHQUFFLFNBQVE7QUFBQyxZQUFJL0QsS0FBRXlDLE1BQUdvQixLQUFFZixHQUFFLFVBQVNyQyxLQUFFcUQsS0FBRSxLQUFLLElBQUk5RCxJQUFFb0QsTUFBR1MsS0FBRTRJLEdBQUUsUUFBUSxJQUFFek07QUFBRSxRQUFBb0MsR0FBRUcsSUFBRTlCLEVBQUM7QUFBQSxNQUFDO0FBQUEsSUFBQyxHQUFFb0MsS0FBRSxXQUFVO0FBQUMsVUFBR1IsTUFBRzlCLElBQUU7QUFBQyxZQUFJWSxLQUFFLEtBQUssT0FBTXlDLEtBQUVwQixHQUFFckIsRUFBQztBQUFFLFlBQUdnQixHQUFFLFVBQVEsQ0FBRSxFQUFDLE1BQU0sS0FBSyxTQUFTLEdBQUVPLEdBQUUsVUFBUTFDLElBQUU4QyxHQUFFLFVBQVEzQixJQUFFeUMsSUFBRTtBQUFDLGNBQUcsQ0FBQ25ELEdBQUUsV0FBU3NELEdBQUUsUUFBUSxRQUFPMEksR0FBRSxVQUFRM0osR0FBRSxTQUFRVixHQUFFeUIsSUFBRXBCLEVBQUMsR0FBRW9GLEtBQUV0RixHQUFFTyxHQUFFLE9BQU8sSUFBRWtCLEdBQUU7QUFBUSxjQUFHRixHQUFFLFFBQU8xQixHQUFFeUIsSUFBRXBCLEVBQUMsR0FBRUYsR0FBRU8sR0FBRSxPQUFPO0FBQUEsUUFBQztBQUFDLGVBQU9yQyxHQUFFLFdBQVMyQixHQUFFeUIsSUFBRXBCLEVBQUMsR0FBRXVCLEdBQUU7QUFBQSxNQUFPO0FBQUEsSUFBQztBQUFFLFdBQU9uQixHQUFFLFNBQU8sV0FBVTtBQUFDLE1BQUFwQyxHQUFFLFlBQVVrQyxLQUFFLHFCQUFxQmxDLEdBQUUsT0FBTyxJQUFFLGFBQWFBLEdBQUUsT0FBTyxJQUFHZ00sR0FBRSxVQUFRLEdBQUV0SyxHQUFFLFVBQVFXLEdBQUUsVUFBUUosR0FBRSxVQUFRakMsR0FBRSxVQUFRO0FBQUEsSUFBSSxHQUFFb0MsR0FBRSxZQUFVLFdBQVU7QUFBQyxhQUFNLENBQUMsQ0FBQ3BDLEdBQUU7QUFBQSxJQUFPLEdBQUVvQyxHQUFFLFFBQU0sV0FBVTtBQUFDLGFBQU9wQyxHQUFFLFVBQVFVLEdBQUUsS0FBSyxJQUFLLENBQUEsSUFBRTZDLEdBQUU7QUFBQSxJQUFPLEdBQUVuQjtBQUFBLEVBQUMsR0FBRSxDQUFDZ0YsSUFBRS9ELElBQUVyQixJQUFFVyxJQUFFL0MsSUFBRXNDLElBQUVOLElBQUU5QixFQUFDLENBQUM7QUFBRSxTQUFPc0M7QUFBQztBQUFDLFNBQVMsRUFBRU4sSUFBRUgsSUFBRTtBQUFDLFNBQU9HLE9BQUlIO0FBQUM7QUFBQyxTQUFTLEVBQUVBLElBQUVJLElBQUVNLElBQUU7QUFBQyxNQUFJMkosS0FBbUIsR0FBRWhNLEtBQUU4QixhQUFDLE9BQUNILEVBQUMsR0FBRUQsS0FBRWhCLGFBQUMsU0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFFdUIsS0FBRSxFQUFFRCx5QkFBRSxTQUFTRixJQUFFO0FBQUMsSUFBQTlCLEdBQUUsVUFBUThCLElBQUVKLEdBQUUsQ0FBRSxDQUFBO0FBQUEsRUFBQyxHQUFFLENBQUNBLEVBQUMsQ0FBQyxHQUFFSyxJQUFFTSxFQUFDLEdBQUVrQixLQUFFekIsYUFBQyxPQUFDSCxFQUFDO0FBQUUsU0FBT3FLLEdBQUV6SSxHQUFFLFNBQVE1QixFQUFDLE1BQUlNLEdBQUVOLEVBQUMsR0FBRTRCLEdBQUUsVUFBUTVCLEtBQUcsQ0FBQzNCLEdBQUUsU0FBUWlDLEVBQUM7QUFBQztBQ1d0MEQsTUFBTSxnQkFBZ0IsQ0FBQyxVQUFVO0FBRUFzMUIsV0FBVSxRQUFRQyxZQUFVO0FBRXJELFFBQUEsY0FBYyxPQUFPLGdCQUFnQjtBQUN6QyxRQUFHLGVBQWUsTUFBTSxNQUFNLGFBQWEsUUFBUSxJQUFJO0FBQ3JELGFBQU8sQ0FBQztBQUFBLElBQUE7QUFFSixVQUFBLGNBQWMsSUFBSVksaUJBQWU7QUFDdkMsUUFBRyxlQUFlLElBQUk7QUFDcEIsYUFBTyxNQUFNLFlBQVksa0JBQWtCLGFBQWEsTUFBTSxJQUFJO0FBQUEsSUFBQSxPQUMvRDtBQUNILGFBQU8sTUFBTSxZQUFZLFlBQVksTUFBTSxZQUFZO0FBQUEsSUFBQTtBQUFBLEVBRTNEO0FBRTRCQyxJQUFZLGFBQWEsR0FBRztBQUVsRCxRQUFBcnJCLFlBQVcsQ0FBQyxXQUFXO0FBQ3ZCLFFBQUEsT0FBTyxNQUFNLGFBQWEsWUFBWTtBQUN4QyxZQUFNLFNBQVMsTUFBTTtBQUFBLElBQUE7QUFBQSxFQUV6QjtBQUdJLFNBQUEwRyxrQ0FBQTtBQUFBLElBQUN5a0Isb0NBQUE7QUFBQSxJQUFBO0FBQUEsTUFDRyxnQkFBYztBQUFBLE1BRWQsT0FBTyxNQUFNO0FBQUEsTUFDYjtBQUFBLE1BQ0EsZ0JBQWdCLENBQUMsV0FBVyxPQUFPO0FBQUEsTUFDbkMsZ0JBQWdCLENBQUMsV0FBVyxPQUFPO0FBQUEsTUFDbkMsVUFBQW5yQjtBQUFBLE1BQ0EsY0FBYztBQUFBLElBQUE7QUFBQSxJQU5ULEtBQUssVUFBVSxNQUFNLGFBQWEsSUFBSTtBQUFBLEVBTy9DO0FBRU47QUFFQSxjQUFjLFlBQVk7QUFBQSxFQUN4QixNQUFNMGlCLGlCQUFVLFdBQVcsSUFBSTtBQUFBLEVBQy9CLE9BQU9BLGlCQUFVLFdBQVcsT0FBTztBQUFBLEVBQ25DLGNBQWNBLGlCQUFVLFdBQVcsWUFBWTtBQUFBLEVBQy9DLFVBQVVDLGlCQUFBQTtBQUNaO0FDdENBLE1BQU0sY0FBYyxDQUFDLEVBQUMsTUFBTSxLQUFLLGFBQWEsbUJBQWtCO0FBQ3RELFFBQUEsY0FBYyxJQUFJeUksaUJBQWU7QUFFdkMsUUFBTSxDQUFDLFFBQVEsU0FBUyxJQUFJcnJCLGFBQUFBLFNBQXNCLENBQUEsQ0FBRTtBQUNwRCxRQUFNLENBQUMsVUFBVSxXQUFXLElBQUlBLGFBQUFBLFNBQXNCLENBQUEsQ0FBRTtBQUV4RCxRQUFNLENBQUMsVUFBVSxXQUFXLElBQUlBLGFBQUFBLFNBQVMsQ0FBQSxDQUFFO0FBQzNDLFFBQU0sQ0FBQ3pJLE9BQU0sT0FBTyxJQUFJeUksYUFBQUEsU0FBaUIsQ0FBQztBQUUxQyxRQUFNLENBQUMsT0FBTyxRQUFRLElBQUlBLGFBQUFBLFNBQWdCLElBQUksT0FBTztBQUUvQyxRQUFBLGFBQWEsQ0FBQyxhQUFrQjtBQUMvQixRQUFBLElBQUksUUFBUSxRQUFRLElBQUk7QUFDdkIsYUFBTyxDQUFDO0FBQUEsSUFBQTtBQUVaLFFBQUl2TCxRQUFPLENBQUM7QUFFWixnQkFBWSxvQkFBb0IsSUFBSSxTQUFTLFFBQVEsRUFBRSxLQUFLLENBQUMsVUFBVTtBQUNuRSxpQkFBVSxPQUFPLE1BQU0sVUFBVSxFQUFFLFlBQVksR0FBRztBQUN6QyxRQUFBQSxNQUFBLEdBQUcsSUFBSSxNQUFNLFVBQVUsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFNBQVM7QUFBQSxNQUFBO0FBRTlELGtCQUFZQSxLQUFJO0FBQ04sZ0JBQUEsTUFBTSxVQUFVLENBQUM7QUFDZixrQkFBQSxNQUFNLFlBQVksQ0FBQztBQUN0QixlQUFBLE1BQU0sT0FBTyxDQUFDO0FBQ2YsY0FBQSxNQUFNLEtBQUssQ0FBQztBQUFBLElBQUEsQ0FDdkI7QUFBQSxFQUNMO0FBRU0sUUFBQSxhQUFhLENBQUN1ckIsY0FBYTtBQUM3QixnQkFBWUEsU0FBUTtBQUNMLG1CQUFBO0FBQUEsRUFDbkI7QUFFTSxRQUFBLGlCQUFpQnVMLEVBQXFCLE1BQU07QUFDOUMsUUFBSTkyQixRQUFPLENBQUM7QUFFWixnQkFBWSxZQUFZLElBQUksU0FBUyxRQUFRLEVBQUUsS0FBSyxDQUFDLFVBQVU7QUFDM0QsaUJBQVUsT0FBTyxNQUFNLFVBQVUsRUFBRSxZQUFZLEdBQUc7QUFDekMsUUFBQUEsTUFBQSxHQUFHLElBQUksTUFBTSxVQUFVLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTO0FBQUEsTUFBQTtBQUU5RCxrQkFBWUEsS0FBSTtBQUNOLGdCQUFBLE1BQU0sVUFBVSxDQUFDO0FBQ2Ysa0JBQUEsTUFBTSxZQUFZLENBQUM7QUFDdEIsZUFBQSxNQUFNLE9BQU8sQ0FBQztBQUNmLGNBQUEsTUFBTSxLQUFLLENBQUM7QUFBQSxJQUFBLENBQ3ZCO0FBQUEsS0FDRixHQUFHO0FBRU4sUUFBTSxhQUFhLE1BQU07QUFFakIsUUFBQSxRQUFRLHlCQUF5QixTQUFTO0FBQzFDLFFBQUEsUUFBUSx5QkFBeUIsTUFBTThDO0FBQ3hDLFFBQUEsU0FBUyxPQUFPLEdBQUc7QUFDZCxVQUFBLFFBQVEsU0FBUyxPQUFPO0FBQUEsSUFBQTtBQUdoQyxRQUFJLFFBQVE7QUFDWixpQkFBYSxHQUFHO0FBQ0osZ0JBQUE7QUFBQSxFQUNoQjtBQUVBa0gsZUFBQUEsVUFBVSxNQUFNO0FBQ1QsUUFBQSxJQUFJLFFBQVEseUJBQXlCLFFBQVE7QUFDaEMsa0JBQUEsSUFBSSxRQUFRLHlCQUF5QixNQUFNO0FBQzVDLGlCQUFBLElBQUksUUFBUSx5QkFBeUIsTUFBTTtBQUFBLElBQUEsT0FDckQ7QUFDRCxrQkFBWSxDQUFBLENBQUU7QUFDZCxpQkFBVyxDQUFBLENBQUU7QUFBQSxJQUFBO0FBQUEsRUFDakIsR0FFRCxDQUFDLElBQUksT0FBTyxDQUFDO0FBRWhCLFNBRVFrSSxrQ0FBQSxJQUFBK0ksNEJBQUEsRUFBQSxVQUFBb0Usa0NBQUFBLEtBQUMsT0FBSSxFQUFBLFdBQVUsUUFDWCxVQUFBO0FBQUEsSUFBQ25OLGtDQUFBQSxJQUFBLE9BQUEsRUFBSSxXQUFVLFVBQ1gsVUFBQUEsa0NBQUE7QUFBQSxNQUFDNGI7QUFBQUEsTUFBQTtBQUFBLFFBQUs7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0EsVUFBVSxDQUFDNXVCLE9BQU0sV0FBV0EsR0FBRSxRQUFRO0FBQUEsUUFDdEM7QUFBQSxNQUFBO0FBQUEsSUFBQSxHQUNWO0FBQUEsSUFDQ2dULHNDQUFBLE9BQUEsRUFBSSxXQUFVLElBQ1gsVUFDSW1OLGtDQUFBLEtBQUFwRSw0QkFBQSxFQUFBLFVBQUE7QUFBQSxNQUFBb0UsdUNBQUMsTUFBRyxFQUFBLFVBQUE7QUFBQSxRQUFBO0FBQUEsUUFBUW5OLGtDQUFBQSxJQUFBLFVBQUEsRUFBUyxPQUFRLE1BQU0sT0FBUSxDQUFBO0FBQUEsTUFBQSxHQUFFO0FBQUEsNkNBQzVDLE1BQUcsRUFBQSxVQUFBO0FBQUEsUUFBQTtBQUFBLFFBQVFBLGtDQUFBQSxJQUFBLFVBQUEsRUFBUyxPQUFRLE1BQU0sT0FBUSxDQUFBO0FBQUEsTUFBQSxHQUFFO0FBQUEsNkNBQzVDLE1BQUcsRUFBQSxVQUFBO0FBQUEsUUFBQTtBQUFBLFFBQVNBLGtDQUFBQSxJQUFBLFVBQUEsRUFBUyxPQUFRLE1BQU0sU0FBVSxDQUFBO0FBQUEsTUFBQSxHQUFFO0FBQUEsNENBQy9DLFFBQU8sRUFBQSxTQUFTLFlBQVksTUFBTSxHQUFHLFNBQVMsVUFBVyxDQUFBO0FBQUEsSUFBQSxFQUFBLENBQzlELEVBQ0osQ0FBQTtBQUFBLEVBQUEsRUFBQSxDQUNKLEVBRUosQ0FBQTtBQUVSO0FBRUEsWUFBWSxZQUFZO0FBQUEsRUFDcEIsTUFBTWdjLGlCQUFVLFdBQVcsSUFBSTtBQUFBLEVBQy9CLEtBQUtBLGlCQUFVLFdBQVcsR0FBRztBQUFBLEVBQzdCLGFBQWFDLGlCQUFVO0FBQUEsRUFDdkIsY0FBY0EsaUJBQUFBO0FBQ2xCO0FDdkdBLE1BQU0sdUJBQXVCLENBQUMsVUFBVTtBQUVwQyxRQUFNLENBQUMsTUFBTSxPQUFPLElBQUk1aUIsYUFBQUEsU0FBUyxJQUFJO0FBRXJDdkIsZUFBQUEsVUFBVSxNQUFNO0FBQ1osWUFBUSxNQUFNLElBQUk7QUFBQSxFQUFBLEdBQ25CLENBQUMsTUFBTSxJQUFJLENBQUM7QUFFZixRQUFNLENBQUNJLE9BQU0sT0FBTyxJQUFJbUIsYUFBQUEsU0FBUyxLQUFLO0FBRWhDLFFBQUEsTUFBTSxJQUFJLElBQUk7QUFFZCxRQUFBLGNBQWMsTUFBTSxRQUFRLEtBQUs7QUFDakMsUUFBQSxhQUFhLE1BQU0sUUFBUSxJQUFJO0FBRXJDLFFBQU0sQ0FBQyxTQUFTLFVBQVUsSUFBSUEsYUFBQUEsU0FBa0IsSUFBSSxTQUFTO0FBQzdELFFBQU0sQ0FBQyxjQUFjLGVBQWUsSUFBSUEsYUFBQUEsU0FBdUIsSUFBSSxjQUFjO0FBRWpGLE1BQUksVUFBVTtBQUdWLFNBQUE4VCxrQ0FBQSxLQUFDLE9BQUksRUFBQSxXQUFVLGVBQ1gsVUFBQTtBQUFBLElBQUFuTixzQ0FBQyxVQUFPLE1BQU0sR0FBRyxTQUFTLFlBQVksU0FBUSxXQUFTO0FBQUEsSUFFdkRtTixrQ0FBQTtBQUFBLE1BQUM7QUFBQSxNQUFBO0FBQUEsUUFBTSxNQUFLO0FBQUEsUUFBTSxNQUFBalY7QUFBQSxRQUFZLFNBQVMsTUFBTSxZQUFZO0FBQUEsUUFFckQsVUFBQTtBQUFBLFVBQUM4SCxrQ0FBQUEsSUFBQSxNQUFNLFFBQU4sRUFBYSxVQUVkLGVBQUEsQ0FBQTtBQUFBLFVBQ0NtTixrQ0FBQSxLQUFBLE1BQU0sTUFBTixFQUFXLFdBQVUsWUFDbEIsVUFBQTtBQUFBLFlBQUNBLGtDQUFBQSxLQUFBLE9BQUEsRUFBSSxXQUFVLFFBQ1gsVUFBQTtBQUFBLGNBQUNBLGtDQUFBQSxLQUFBLE9BQUEsRUFBSSxXQUFVLFVBQ1gsVUFBQTtBQUFBLGdCQUFBbk4sa0NBQUFBLElBQUMsUUFBRyxVQUFZLGVBQUEsQ0FBQTtBQUFBLGdCQUNoQkEsa0NBQUE7QUFBQSxrQkFBQztBQUFBLGtCQUFBO0FBQUEsb0JBQ0csT0FBTztBQUFBLG9CQUNQLE1BQU0sTUFBTTtBQUFBLG9CQUNaLFVBQVU7QUFBQSxrQkFBQTtBQUFBLGdCQUFBO0FBQUEsY0FDZCxHQUNKO0FBQUEsY0FDQW1OLGtDQUFBQSxLQUFDLE9BQUksRUFBQSxXQUFVLFVBQ1gsVUFBQTtBQUFBLGdCQUFBbk4sa0NBQUFBLElBQUMsUUFBRyxVQUFPLFVBQUEsQ0FBQTtBQUFBLGdCQUNYQSxrQ0FBQTtBQUFBLGtCQUFDO0FBQUEsa0JBQUE7QUFBQSxvQkFDRyxPQUFPO0FBQUEsb0JBQ1AsTUFBTSxNQUFNO0FBQUEsb0JBQ1o7QUFBQSxvQkFDQSxVQUFVO0FBQUEsa0JBQUE7QUFBQSxnQkFBQTtBQUFBLGNBQ2QsRUFDSixDQUFBO0FBQUEsWUFBQSxHQUNKO0FBQUEsWUFFQUEsa0NBQUE7QUFBQSxjQUFDO0FBQUEsY0FBQTtBQUFBLGdCQUNHO0FBQUEsZ0JBQ0EsY0FBYyxNQUFNO0FBQUEsZ0JBQ3BCO0FBQUEsY0FBQTtBQUFBLFlBQUE7QUFBQSxVQUNKLEVBQ0osQ0FBQTtBQUFBLFFBQUE7QUFBQSxNQUFBO0FBQUEsSUFBQTtBQUFBLEVBQ0osR0FDSjtBQUVSO0FBRUEscUJBQXFCLFlBQVk7QUFBQSxFQUM3QixNQUFNZ2MsaUJBQVUsV0FBVyxJQUFJO0FBQUEsRUFDL0IsUUFBUUMsaUJBQUFBO0FBQ1o7QUNsRUEsTUFBTSx3QkFBd0IsQ0FBQyxFQUFDLFVBQUF4cUIsV0FBVSxNQUFNLGdCQUFlO0FBRTNELFFBQU0sQ0FBQ3lHLE9BQU0sT0FBTyxJQUFJbUIsYUFBQUEsU0FBUyxLQUFLO0FBRWhDLFFBQUEsY0FBYyxNQUFNLFFBQVEsS0FBSztBQUNqQyxRQUFBLGFBQWEsTUFBTSxRQUFRLElBQUk7QUFFckMsZ0RBQ0ssT0FDRyxFQUFBLFVBQUE7QUFBQSxJQUFDMkcsa0NBQUFBLElBQUEsT0FBQSxFQUNHLGdEQUFDLFFBQU8sRUFBQSxNQUFNLEdBQUcsU0FBUSxRQUFPLFNBQVMsV0FBQSxDQUFXLEVBQ3hELENBQUE7QUFBQSxJQUVBbU4sdUNBQUMsU0FBTSxNQUFLLE9BQU0sTUFBQWpWLE9BQVksU0FBUyxNQUFNLFlBQ3pDLEdBQUEsVUFBQTtBQUFBLE1BQUE4SCxrQ0FBQSxJQUFDLE1BQU0sUUFBTixFQUFjLFdBQVUsNENBQTJDLFVBRXBFLGlCQUFBO0FBQUEsTUFDQUEsa0NBQUFBLElBQUMsTUFBTSxNQUFOLEVBQ0QsVUFBQUEsa0NBQUE7QUFBQSxRQUFDO0FBQUEsUUFBQTtBQUFBLFVBQ0csS0FBS3ZPO0FBQUEsVUFDTCxjQUFjO0FBQUEsVUFDZDtBQUFBLFFBQUE7QUFBQSxNQUFBLEVBQ0YsQ0FBQTtBQUFBLElBQUEsRUFDTixDQUFBO0FBQUEsRUFBQSxHQUNKO0FBRVI7QUFFQSxzQkFBc0IsWUFBWTtBQUFBLEVBQzlCLE1BQU11cUIsaUJBQVUsV0FBVyxJQUFJO0FBQUEsRUFDL0IsVUFBVUEsaUJBQVUsV0FBVyxHQUFHO0FBQUEsRUFDbEMsV0FBV0MsaUJBQUFBO0FBQ2Y7QUNwQ0EsTUFBTSxlQUFlLENBQUMsRUFBQyxPQUFBMXVCLFFBQU8sS0FBSyxRQUFRLFdBQVcsV0FBVTtBQUV0RCxRQUFBLFlBQVksQ0FBQyxTQUFpQjtBQUNoQyxXQUFPLElBQUk7QUFBQSxFQUNmO0FBRUEsU0FFUTRmLGtDQUFBLEtBQUFwRSw0QkFBQSxFQUFBLFVBQUE7QUFBQSxJQUFDb0Usa0NBQUFBLEtBQUEsT0FBQSxFQUFJLFdBQVcsUUFDWixVQUFBO0FBQUEsTUFBQW5OLGtDQUFBLElBQUMsT0FBSSxFQUFBLFdBQVcsVUFBVyxVQUFBelMsU0FBUSxHQUFFO0FBQUEsNENBQ3BDLE9BQUksRUFBQSxXQUFXLFVBQVcsVUFBQSxJQUFJLFFBQVEsT0FBTTtBQUFBLE1BQzVDeVMsa0NBQUEsSUFBQSxPQUFBLEVBQUksV0FBVyxVQUFXLGNBQUksT0FBTTtBQUFBLE1BQ3JDQSxrQ0FBQUEsSUFBQyxPQUFJLEVBQUEsV0FBVyxtQkFBbUIsVUFBQUEsa0NBQUEsSUFBQyxZQUFTLE9BQVEsSUFBSSxNQUFNLE9BQUEsQ0FBUSxFQUFFLENBQUE7QUFBQSxNQUN6RUEsa0NBQUFBLElBQUMsT0FBSSxFQUFBLFdBQVcsbUJBQW1CLFVBQUFBLGtDQUFBLElBQUMsWUFBUyxPQUFRLElBQUksTUFBTSxPQUFBLENBQVEsRUFBRSxDQUFBO0FBQUEsTUFDekVBLGtDQUFBQSxJQUFDLE9BQUksRUFBQSxXQUFXLG1CQUFtQixVQUFBQSxrQ0FBQSxJQUFDLFlBQVMsT0FBUSxJQUFJLE1BQU0sU0FBQSxDQUFVLEVBQUUsQ0FBQTtBQUFBLE1BQzNFQSxrQ0FBQUEsSUFBQyxPQUFJLEVBQUEsV0FBVyxrQkFBbUIsQ0FBQTtBQUFBLDRDQUNsQyxPQUFJLEVBQUEsV0FBVyxtQkFDWixVQUFDbU4sa0NBQUEsS0FBQSxPQUFBLEVBQUksV0FBVSxjQUNYLFVBQUE7QUFBQSxRQUFBbk4sa0NBQUEsSUFBQyx1QkFBc0IsRUFBQSxNQUFZLFVBQVUsS0FBSyxXQUFzQjtBQUFBLFFBQ3hFQSxrQ0FBQUEsSUFBQyxRQUFPLEVBQUEsTUFBTSxHQUFHLFNBQVMsV0FBVyxTQUFTLE1BQU0sVUFBVSxJQUFJLElBQUksRUFBRyxDQUFBO0FBQUEsTUFBQSxFQUFBLENBQzdFLEVBQ0osQ0FBQTtBQUFBLElBQUEsR0FDSjtBQUFBLDBDQUNDLE1BQUUsQ0FBQSxDQUFBO0FBQUEsRUFBQSxHQUNQO0FBRVI7QUFFQSxhQUFhLFlBQVk7QUFBQSxFQUNyQixPQUFPaWtCLGlCQUFVO0FBQUEsRUFDakIsS0FBS2pJLGlCQUFVLFdBQVcsR0FBRztBQUFBLEVBQzdCLE1BQU1BLGlCQUFVLFdBQVcsSUFBSTtBQUFBLEVBQy9CLFFBQVFDLGlCQUFVO0FBQUEsRUFDbEIsV0FBV0EsaUJBQUFBO0FBQ2Y7QUNwQ0EsTUFBTSxpQkFBaUIsQ0FBQyxFQUFDLFdBQVcsUUFBUSxNQUFNLGdCQUFlO0FBRzdELGdEQUNLLE9BQ0csRUFBQSxVQUFBO0FBQUEsSUFBQzlPLGtDQUFBQSxLQUFBLE9BQUEsRUFBSSxXQUFXLFFBQ1osVUFBQTtBQUFBLE1BQUFuTixrQ0FBQUEsSUFBQyxTQUFJLFdBQVcsVUFDWixVQUFDQSxzQ0FBQSxNQUFBLEVBQUcsaUJBQUcsRUFDWCxDQUFBO0FBQUEsNENBQ0MsT0FBSSxFQUFBLFdBQVcsVUFDWixVQUFDQSxzQ0FBQSxNQUFBLEVBQUcsbUJBQUssRUFDYixDQUFBO0FBQUEsNENBQ0MsT0FBSSxFQUFBLFdBQVcsVUFDWixVQUFDQSxzQ0FBQSxNQUFBLEVBQUcsb0JBQU0sRUFDZCxDQUFBO0FBQUEsNENBQ0MsT0FBSSxFQUFBLFdBQVcsbUJBQ1osVUFBQ0Esc0NBQUEsTUFBQSxFQUFHLG1CQUFLLEVBQ2IsQ0FBQTtBQUFBLDRDQUNDLE9BQUksRUFBQSxXQUFXLG1CQUNaLFVBQUNBLHNDQUFBLE1BQUEsRUFBRyxpQkFBRyxFQUNYLENBQUE7QUFBQSw0Q0FDQyxPQUFJLEVBQUEsV0FBVyxtQkFDWixVQUFDQSxzQ0FBQSxNQUFBLEVBQUcsbUJBQUssRUFDYixDQUFBO0FBQUEsNENBQ0MsT0FBSSxFQUFBLFdBQVcsbUJBQ1osVUFBQ0Esc0NBQUEsTUFBQSxFQUFHLG9CQUFNLEVBQ2QsQ0FBQTtBQUFBLE1BQ0FBLGtDQUFBQSxJQUFDLE9BQUksRUFBQSxXQUFXLFNBRWhCLENBQUE7QUFBQSxJQUFBLEdBQ0o7QUFBQSwwQ0FDQyxNQUFFLEVBQUE7QUFBQSxJQUNGLFVBQVUsSUFBSSxDQUFDLFFBQVFuVSxPQUFPbVUsa0NBQUFBLElBQUEsY0FBQSxFQUFhLEtBQUssUUFBUSxNQUFZLFFBQWdCLFdBQThCLE9BQU9uVSxHQUFBLEdBQVZBLEVBQWEsQ0FBRTtBQUFBLEVBQUEsR0FFbkk7QUFFUjtBQUVBLGVBQWUsWUFBWTtBQUFBLEVBQ3ZCLFdBQVdnNUIsaUJBQVU7QUFBQSxFQUNyQixRQUFRNUksaUJBQVU7QUFBQSxFQUNsQixXQUFXQSxpQkFBVTtBQUFBLEVBQ3JCLE1BQU1ELGlCQUFVLFdBQVcsSUFBSTtBQUNuQztBQ3hDQSxNQUFNLHFCQUFxQixDQUFDLEVBQUMsT0FBTyxNQUFNLGtCQUFpQjtBQUVqRCxRQUFBLGFBQWE2SCxTQUFVLFFBQVFDLFlBQVU7QUFFL0MsUUFBTSxDQUFDLFdBQVcsWUFBWSxJQUFJenFCLGFBQUFBLFNBQXFCLE1BQU0sU0FBUztBQUVoRSxRQUFBLFNBQVMsQ0FBQyxXQUFXO0FBQ3ZCLGlCQUFhLENBQUMsR0FBRyxXQUFXLE1BQU0sQ0FBQztBQUFBLEVBQ3ZDO0FBRU0sUUFBQSxZQUFZLENBQUMsV0FBVztBQUMxQixVQUFNLGVBQWUsVUFBVSxJQUFJLENBQUMzSixJQUFHN0QsT0FBTTtBQUNyQyxVQUFBNkQsR0FBRSxTQUFTLE9BQU8sTUFBTTtBQUNuQixlQUFBO0FBQUEsTUFBQSxPQUNGO0FBQ0UsZUFBQUE7QUFBQSxNQUFBO0FBQUEsSUFDVCxDQUNIO0FBQ0QsaUJBQWEsWUFBWTtBQUFBLEVBRTdCO0FBRU0sUUFBQSxTQUFTLENBQUMsU0FBUztBQUNyQixRQUFJLE1BQU0sVUFBVSxPQUFPLENBQUMsUUFBUSxJQUFJLFNBQVMsSUFBSTtBQUVyRCxpQkFBYSxHQUFHO0FBQUEsRUFDcEI7QUFFQW9JLGVBQUFBLFVBQVUsTUFBTTtBQUNSLFFBQUEsV0FBVyxXQUFXLGdCQUFBLEVBQWtCO0FBQzVDLGFBQVMsWUFBWTtBQUNyQixlQUFXLGdCQUFnQixRQUFRO0FBQUEsRUFBQSxHQUNwQyxDQUFDLFNBQVMsQ0FBQztBQUdWLFNBQUFxVixrQ0FBQSxLQUFDLE9BQUksRUFBQSxXQUFXLE9BQ1osVUFBQTtBQUFBLElBQUFuTixrQ0FBQSxJQUFDLGdCQUFlLEVBQUEsV0FBc0IsTUFBWSxRQUFnQixXQUFxQjtBQUFBLElBQ3ZGQSxrQ0FBQUEsSUFBQyxzQkFBcUIsRUFBQSxNQUFZLE9BQWUsQ0FBQTtBQUFBLEVBQUEsR0FDckQ7QUFFUjtBQUVBLG1CQUFtQixZQUFZO0FBQUEsRUFDM0IsTUFBTWdjLGlCQUFVLFdBQVcsSUFBSTtBQUFBLEVBQy9CLE9BQU9BLGlCQUFVLFdBQVcsS0FBSztBQUFBLEVBQ2pDLGFBQWFDLGlCQUFBQTtBQUNqQjs7Ozs7Ozs7Ozs7O0FDaERBLElBQU0saUJBQU4sTUFBcUI7QUFBQSxFQUNqQixZQUEyQmpxQixRQUFlO0FBQ3RDLFNBQUssUUFBUUE7QUFBQSxFQUFBO0FBQUEsRUFHakIsTUFBTSxZQUFZLE1BQWdDOztBQUU5QyxXQUFPLE1BQU0sTUFBTSxJQUFJLCtCQUErQixLQUFLLE1BQU07QUFBQSxNQUM3RCxTQUFTO0FBQUEsUUFDTCxpQkFBaUIsY0FBWSxVQUFLLFVBQUwsbUJBQVk7QUFBQSxNQUFBO0FBQUEsSUFDN0MsQ0FDSCxFQUFFLEtBQUssQ0FBRSxhQUFjO0FBQ3BCLGFBQU8sU0FBUyxLQUFLLEtBQUssSUFBSSxDQUFDLFNBQWM7QUFDckMsWUFBQSxVQUFVLElBQUksUUFBUTtBQUMxQixnQkFBUSxNQUFNLEtBQUs7QUFDbkIsZ0JBQVEsUUFBUSxLQUFLO0FBQ3JCLGdCQUFRLE9BQU8sS0FBSztBQUNiLGVBQUE7QUFBQSxNQUFBLENBQ1Y7QUFBQSxJQUFBLENBRUo7QUFBQSxFQUFBO0FBRVQ7QUF0Qk0saUJBQU4rQixrQkFBQTtBQUFBLEVBRkMsVUFBVTtBQUFBLEVBQ1YsZUFBZTtBQUFBLEVBRUMwWCw0QkFBT0MsT0FBSyxDQUFBO0FBQUEsR0FEdkIsY0FBQTtBQXdCTixNQUFBLG1CQUFlO0FDcEJmLE1BQU0sbUJBQW1CLENBQUMsRUFBRSxNQUFNLFlBQVk7QUFFMUMsUUFBTSxDQUFDLFVBQVUsV0FBVyxJQUFJclMsYUFBQUEsU0FBUyxJQUFJO0FBQ3ZDLFFBQUEsYUFBYXdxQixTQUFVLFFBQVFDLFlBQVU7QUFDL0MsUUFBTSxDQUFDLFNBQVMsVUFBVSxJQUFJenFCLGFBQUFBLFNBQVMsQ0FBQztBQUNsQyxRQUFBLGtCQUFrQixJQUFJeXJCLGlCQUFlO0FBRXJDLFFBQUEsY0FBYyxPQUFPLGFBQWEsa0JBQWtCO0FBQ3RELFVBQU1oM0IsUUFBTyxNQUFNLGdCQUFnQixZQUFZLElBQUk7QUFFNUMsV0FBQTtBQUFBLE1BQ0gsU0FBU0E7QUFBQSxNQUNULFNBQVM7QUFBQSxJQUNiO0FBQUEsRUFDSjtBQUVBZ0ssZUFBQUEsVUFBVSxNQUFNO0FBQ1osZ0JBQVksS0FBSyxJQUFJO0FBQUEsRUFBQSxHQUNwQixDQUFDLEtBQUssSUFBSSxDQUFDO0FBRWhCQSxlQUFBQSxVQUFVLE1BQU07QUFDRCxlQUFBLE1BQU0sUUFBUSxHQUFHO0FBQUEsRUFBQSxHQUM3QixDQUFDLE1BQU0sT0FBTyxDQUFDO0FBR1osUUFBQXdCLFlBQVcsQ0FBQyxXQUFXO0FBQ3pCLFVBQU0sVUFBVTtBQUNoQixRQUFJLFdBQVcsV0FBVyxnQkFBZ0IsRUFBRSxTQUFTO0FBQ3JELGFBQVMsVUFBVTtBQUNuQixlQUFXLGdCQUFnQixRQUFRO0FBQ25DLGVBQVcsT0FBTyxHQUFHO0FBQUEsRUFDekI7QUFHSSxTQUFBMEcsa0NBQUFBLElBQUMsT0FBSSxFQUFBLFdBQVcsT0FDWixVQUFBQSxrQ0FBQTtBQUFBLElBQUM7QUFBQSxJQUFBO0FBQUEsTUFDRyxnQkFBYztBQUFBLE1BRWQsWUFBWSxFQUFFLFNBQVMsWUFBWTtBQUFBLE1BQ25DLGNBQWMsTUFBTTtBQUFBLE1BQ3BCO0FBQUEsTUFDQSxhQUFZO0FBQUEsTUFDWixNQUFLO0FBQUEsTUFDTCxnQkFBZ0IsQ0FBQyxXQUFXLE9BQU87QUFBQSxNQUNuQyxnQkFBZ0IsQ0FBQyxXQUFXLE9BQU87QUFBQSxNQUNuQyxVQUFBMUc7QUFBQSxNQUNBLGNBQWM7QUFBQSxNQUNkLFdBQVcsR0FBRyxXQUFXLElBQUksMEJBQTBCLEVBQUU7QUFBQSxJQUFBO0FBQUEsSUFWcEQsS0FBSyxVQUFVLFFBQVE7QUFBQSxFQUFBLEdBWXBDO0FBRVI7QUFFQSxpQkFBaUIsWUFBWTtBQUFBLEVBQ3pCLE1BQU0waUIsaUJBQVUsV0FBVyxJQUFJO0FBQUEsRUFDL0IsT0FBT0EsaUJBQVUsV0FBVyxLQUFLO0FBQ3JDOzs7Ozs7Ozs7Ozs7QUM1REEsSUFBTSxrQkFBTixNQUFzQjtBQUFBLEVBQ2xCLFlBQTJCaHFCLFFBQWU7QUFDdEMsU0FBSyxRQUFRQTtBQUFBLEVBQUE7QUFBQSxFQUVqQixNQUFNLFlBQVksTUFBaUM7O0FBRS9DLFdBQU8sTUFBTSxNQUFNLElBQUksZ0NBQWdDLEtBQUssTUFBTTtBQUFBLE1BQzlELFNBQVM7QUFBQSxRQUNMLGlCQUFpQixjQUFZLFVBQUssVUFBTCxtQkFBWTtBQUFBLE1BQUE7QUFBQSxJQUM3QyxDQUNILEVBQUUsS0FBSyxDQUFFLGFBQWM7QUFDcEIsYUFBTyxTQUFTLEtBQUssS0FBSyxJQUFJLENBQUMsU0FBYztBQUNyQyxZQUFBLFdBQVcsSUFBSSxTQUFTO0FBQzVCLGlCQUFTLE1BQU0sS0FBSztBQUNwQixpQkFBUyxRQUFRLEtBQUs7QUFDdEIsaUJBQVMsT0FBTyxLQUFLO0FBQ2QsZUFBQTtBQUFBLE1BQUEsQ0FDVjtBQUFBLElBQUEsQ0FFSjtBQUFBLEVBQUE7QUFFVDtBQXJCTSxrQkFBTixnQkFBQTtBQUFBLEVBRkMsVUFBVTtBQUFBLEVBQ1YsZUFBZTtBQUFBLEVBRUMsMEJBQU8wWixPQUFLLENBQUE7QUFBQSxHQUR2QixlQUFBO0FBdUJOLE1BQUEsb0JBQWU7QUNuQmYsTUFBTSxvQkFBb0IsQ0FBQyxFQUFDLE1BQU0sWUFBVztBQUV6QyxRQUFNLENBQUMsVUFBVSxXQUFXLElBQUlyUyxhQUFBQSxTQUFTLElBQUk7QUFDdkMsUUFBQSxhQUFhd3FCLFNBQVUsUUFBUUMsWUFBVTtBQUMvQyxRQUFNLENBQUMsVUFBVSxXQUFXLElBQUl6cUIsYUFBQUEsU0FBUyxDQUFDO0FBQ3BDLFFBQUEsbUJBQW1CLElBQUkwckIsa0JBQWdCO0FBRXZDLFFBQUEsY0FBYyxPQUFPLGFBQWEsa0JBQWtCO0FBQ3RELFVBQU1qM0IsUUFBTyxNQUFNLGlCQUFpQixZQUFZLElBQUk7QUFFN0MsV0FBQTtBQUFBLE1BQ0gsU0FBU0E7QUFBQSxNQUNULFNBQVM7QUFBQSxJQUNiO0FBQUEsRUFDSjtBQUVBZ0ssZUFBQUEsVUFBVSxNQUFNO0FBQ1osZ0JBQVksS0FBSyxJQUFJO0FBQUEsRUFBQSxHQUNwQixDQUFDLEtBQUssSUFBSSxDQUFDO0FBRWhCQSxlQUFBQSxVQUFVLE1BQU07QUFDQSxnQkFBQSxNQUFNLFNBQVMsR0FBRztBQUFBLEVBQUEsR0FDL0IsQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUViLFFBQUF3QixZQUFXLENBQUMsV0FBVztBQUN6QixVQUFNLFdBQVc7QUFDakIsUUFBSSxXQUFXLFdBQVcsZ0JBQWdCLEVBQUUsU0FBUztBQUNyRCxhQUFTLFdBQVc7QUFDcEIsZUFBVyxnQkFBZ0IsUUFBUTtBQUNuQyxnQkFBWSxPQUFPLEdBQUc7QUFBQSxFQUMxQjtBQUdJLFNBQUEwRyxrQ0FBQUEsSUFBQyxPQUFJLEVBQUEsV0FBVyxPQUNaLFVBQUFBLGtDQUFBO0FBQUEsSUFBQztBQUFBLElBQUE7QUFBQSxNQUNHLGdCQUFjO0FBQUEsTUFFZCxZQUFZLEVBQUMsU0FBUyxZQUFXO0FBQUEsTUFDakMsY0FBYyxNQUFNO0FBQUEsTUFDcEIsYUFBWTtBQUFBLE1BQ1osTUFBSztBQUFBLE1BQ0w7QUFBQSxNQUNBLGdCQUFnQixDQUFDLFdBQVcsT0FBTztBQUFBLE1BQ25DLGdCQUFnQixDQUFDLFdBQVcsT0FBTztBQUFBLE1BQ25DLFVBQUExRztBQUFBLE1BQ0EsY0FBYztBQUFBLE1BQ2QsV0FBVyxHQUFHLFlBQVksSUFBSSwwQkFBMEIsRUFBRTtBQUFBLElBQUE7QUFBQSxJQVZyRCxLQUFLLFVBQVUsUUFBUTtBQUFBLEVBQUEsR0FZeEM7QUFFSjtBQUVBLGtCQUFrQixZQUFZO0FBQUEsRUFDMUIsTUFBTTBpQixpQkFBVSxXQUFXLElBQUk7QUFBQSxFQUMvQixPQUFPQSxpQkFBVSxXQUFXLEtBQUs7QUFDckM7QUMxREEsTUFBTSx3QkFBd0J0UixhQUFBQSxVQUEyQztBQUFBLEVBR3JFLFlBQVksT0FBTztBQUNmLFVBQU0sS0FBSztBQUhmO0FBQ0E7QUFHUyxTQUFBLGFBQWFtWixTQUFVLFFBQVFDLFlBQVU7QUFDekMsU0FBQSxlQUFlRCxTQUFVLFFBQVFTLGNBQVk7QUFFN0MsU0FBQSxRQUFRLEVBQUMsVUFBVSxLQUFJO0FBQUEsRUFBQTtBQUFBLEVBR2hDLG9CQUFvQjtBQUNoQixTQUFLLFdBQVcsZ0JBQWtCLEVBQUEsS0FBSyxhQUFhLEdBQUksQ0FBQyxFQUFFLFVBQVUsQ0FBQ3QzQixPQUFNLEtBQUssV0FBV0EsRUFBQyxDQUFDO0FBQUEsRUFBQTtBQUFBLEVBR2xHLFdBQVcsT0FBYztBQUNsQixRQUFBLE1BQU0sUUFBUSxZQUFZLE1BQ3RCLE1BQU0sUUFBUSxTQUFTLE1BQ3ZCLE1BQU0sU0FBUyxTQUFTLE1BQ3hCLE1BQU0sS0FBSyxRQUFRLE1BQ25CLE1BQU0sUUFBUSxTQUFTLE1BQ3ZCLE1BQU0sZUFBZSxRQUFRLE1BQzdCLE1BQU0sUUFBUSxHQUNuQjtBQUNFLFdBQUssU0FBUyxFQUFDLFVBQVUsTUFBQSxDQUFNO0FBQUEsSUFBQTtBQUFBLEVBQ25DO0FBQUEsRUFHSixNQUFNLFlBQVlBLElBQUc7QUFDakIsVUFBTSxPQUFPLEtBQUssV0FBVyxrQkFBa0IsTUFBTTtBQUNyRCxVQUFNNEQsUUFBTyxLQUFLLFdBQVcsa0JBQWtCLE1BQU07QUFDckQsV0FBTyxLQUFLLHNDQUFzQ0EsUUFBTyxNQUFNLElBQUk7QUFBQSxFQUFBO0FBQUEsRUFHdkUsTUFBTSxXQUFXNUQsSUFBRztBQUNoQixJQUFBQSxHQUFFLGVBQWU7QUFFYixRQUFBLFNBQVMsTUFBTSxLQUFLLGFBQWEsVUFBVSxLQUFLLFdBQVcsZ0JBQWdCLEVBQUUsS0FBSztBQUV0RixTQUFLLE1BQU0sVUFBVSxPQUFPLE1BQU0sQ0FBQztBQUFBLEVBQUE7QUFBQSxFQUd2QyxTQUFTO0FBRUQsV0FBQW1nQixrQ0FBQSxLQUFDLE9BQUksRUFBQSxXQUFVLGNBQ1gsVUFBQTtBQUFBLE1BQUFBLGtDQUFBLEtBQUNNLFVBQU8sRUFBQSxNQUFLLE1BQUssT0FBTSxRQUFPLFVBQVUsS0FBSyxNQUFNLFVBQVUsU0FBUyxDQUFDemdCLE9BQVUsS0FBSyxXQUFXQSxFQUFDLEdBQy9GLFVBQUE7QUFBQSxRQUFDZ1Qsa0NBQUFBLElBQUEsT0FBQSxFQUFJLE9BQU0sOEJBQTZCLFNBQVEsYUFBWSxnQkFBYSxPQUFNLFFBQU8sZ0JBQWUsZUFBWSxRQUFPLGFBQVUsUUFBTyxNQUFLLFFBQU8sT0FBTSxnQkFDN0ssVUFBQ0Esa0NBQUFBLElBQUEsUUFBQSxFQUFLLGtCQUFlLFNBQVEsbUJBQWdCLFNBQVEsR0FBRSxrS0FBQSxDQUFrSyxFQUMzTixDQUFBO0FBQUEsUUFBTTtBQUFBLE1BQUEsR0FDVTtBQUFBLE1BQ0FtTix1Q0FBQ00sWUFBTyxNQUFLLE1BQUssT0FBTSxXQUFVLFVBQVUsQ0FBQyxLQUFLLFdBQVcsa0JBQWtCLE1BQU0sT0FBTyxTQUFTLENBQUN6Z0IsT0FBVSxLQUFLLFlBQVlBLEVBQUMsR0FDOUgsVUFBQTtBQUFBLFFBQUNnVCxrQ0FBQUEsSUFBQSxPQUFBLEVBQUksT0FBTSw4QkFBNkIsTUFBSyxRQUFPLFNBQVEsYUFBWSxnQkFBYSxPQUFNLFFBQU8sZ0JBQWUsZUFBWSxRQUFPLGFBQVUsUUFBTyxPQUFNLGdCQUM3SyxVQUFDQSxrQ0FBQUEsSUFBQSxRQUFBLEVBQUssa0JBQWUsU0FBUSxtQkFBZ0IsU0FBUSxHQUFFLHNtQkFBQSxDQUFzbUIsRUFDL3BCLENBQUE7QUFBQSxRQUFNO0FBQUEsTUFBQSxFQUNVLENBQUE7QUFBQSxJQUFBLEdBQ0o7QUFBQSxFQUFBO0FBR1o7Ozs7OztBQ2xFQSxTQUFPLGVBQWUsTUFBUyxjQUFjLEVBQUUsT0FBTyxNQUFNO0FBQzVELE9BQUEsUUFBZ0JyRDtBQUNoQixPQUFBLFlBQW9CTTtBQWVwQixRQUFNLG1CQUFtQjtBQWF6QixRQUFNLG9CQUFvQjtBQXdCMUIsUUFBTSxvQkFBb0I7QUFRMUIsUUFBTSxrQkFBa0I7QUFDeEIsUUFBTSxhQUFhLE9BQU8sVUFBVTtBQUNwQyxRQUFNLGFBQThCLHVCQUFNO0FBQ3RDLFVBQU1wTyxLQUFJLFdBQVk7QUFBQSxJQUFHO0FBQ3pCLElBQUFBLEdBQUUsWUFBWSx1QkFBTyxPQUFPLElBQUk7QUFDaEMsV0FBT0E7QUFBQSxFQUNYLEdBQUk7QUFPSixXQUFTOE4sT0FBTSxLQUFLeEssVUFBUztBQUN6QixVQUFNLE1BQU0sSUFBSSxXQUFZO0FBQzVCLFVBQU0sTUFBTSxJQUFJO0FBRWhCLFFBQUksTUFBTTtBQUNOLGFBQU87QUFDWCxVQUFNLE9BQU1BLFlBQUEsZ0JBQUFBLFNBQVMsV0FBVTtBQUMvQixRQUFJNUUsU0FBUTtBQUNaLE9BQUc7QUFDQyxZQUFNLFFBQVEsSUFBSSxRQUFRLEtBQUtBLE1BQUs7QUFDcEMsVUFBSSxVQUFVO0FBQ1Y7QUFDSixZQUFNLFdBQVcsSUFBSSxRQUFRLEtBQUtBLE1BQUs7QUFDdkMsWUFBTSxTQUFTLGFBQWEsS0FBSyxNQUFNO0FBQ3ZDLFVBQUksUUFBUSxRQUFRO0FBRWhCLFFBQUFBLFNBQVEsSUFBSSxZQUFZLEtBQUssUUFBUSxDQUFDLElBQUk7QUFDMUM7QUFBQSxNQUNaO0FBQ1EsWUFBTSxjQUFjLFdBQVcsS0FBS0EsUUFBTyxLQUFLO0FBQ2hELFlBQU0sWUFBWSxTQUFTLEtBQUssT0FBTyxXQUFXO0FBQ2xELFlBQU0sTUFBTSxJQUFJLE1BQU0sYUFBYSxTQUFTO0FBRTVDLFVBQUksSUFBSSxHQUFHLE1BQU0sUUFBVztBQUN4QixZQUFJLGNBQWMsV0FBVyxLQUFLLFFBQVEsR0FBRyxNQUFNO0FBQ25ELFlBQUksWUFBWSxTQUFTLEtBQUssUUFBUSxXQUFXO0FBQ2pELGNBQU0sUUFBUSxJQUFJLElBQUksTUFBTSxhQUFhLFNBQVMsQ0FBQztBQUNuRCxZQUFJLEdBQUcsSUFBSTtBQUFBLE1BQ3ZCO0FBQ1EsTUFBQUEsU0FBUSxTQUFTO0FBQUEsSUFDcEIsU0FBUUEsU0FBUTtBQUNqQixXQUFPO0FBQUEsRUFDWDtBQUNBLFdBQVMsV0FBVyxLQUFLQSxRQUFPb1QsTUFBSztBQUNqQyxPQUFHO0FBQ0MsWUFBTSxPQUFPLElBQUksV0FBV3BULE1BQUs7QUFDakMsVUFBSSxTQUFTLE1BQWdCLFNBQVM7QUFDbEMsZUFBT0E7QUFBQSxJQUNuQixTQUFhLEVBQUVBLFNBQVFvVDtBQUNuQixXQUFPQTtBQUFBLEVBQ1g7QUFDQSxXQUFTLFNBQVMsS0FBS3BULFFBQU82RixNQUFLO0FBQy9CLFdBQU83RixTQUFRNkYsTUFBSztBQUNoQixZQUFNLE9BQU8sSUFBSSxXQUFXLEVBQUU3RixNQUFLO0FBQ25DLFVBQUksU0FBUyxNQUFnQixTQUFTO0FBQ2xDLGVBQU9BLFNBQVE7QUFBQSxJQUMzQjtBQUNJLFdBQU82RjtBQUFBLEVBQ1g7QUFVQSxXQUFTNkosV0FBVSxNQUFNLEtBQUs5SyxVQUFTO0FBQ25DLFVBQU0sT0FBTUEsWUFBQSxnQkFBQUEsU0FBUyxXQUFVO0FBQy9CLFFBQUksQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLEdBQUc7QUFDOUIsWUFBTSxJQUFJLFVBQVUsNkJBQTZCLElBQUksRUFBRTtBQUFBLElBQy9EO0FBQ0ksVUFBTSxRQUFRLElBQUksR0FBRztBQUNyQixRQUFJLENBQUMsa0JBQWtCLEtBQUssS0FBSyxHQUFHO0FBQ2hDLFlBQU0sSUFBSSxVQUFVLDRCQUE0QixHQUFHLEVBQUU7QUFBQSxJQUM3RDtBQUNJLFFBQUksTUFBTSxPQUFPLE1BQU07QUFDdkIsUUFBSSxDQUFDQTtBQUNELGFBQU87QUFDWCxRQUFJQSxTQUFRLFdBQVcsUUFBVztBQUM5QixVQUFJLENBQUMsT0FBTyxVQUFVQSxTQUFRLE1BQU0sR0FBRztBQUNuQyxjQUFNLElBQUksVUFBVSw2QkFBNkJBLFNBQVEsTUFBTSxFQUFFO0FBQUEsTUFDN0U7QUFDUSxhQUFPLGVBQWVBLFNBQVE7QUFBQSxJQUN0QztBQUNJLFFBQUlBLFNBQVEsUUFBUTtBQUNoQixVQUFJLENBQUMsa0JBQWtCLEtBQUtBLFNBQVEsTUFBTSxHQUFHO0FBQ3pDLGNBQU0sSUFBSSxVQUFVLDZCQUE2QkEsU0FBUSxNQUFNLEVBQUU7QUFBQSxNQUM3RTtBQUNRLGFBQU8sY0FBY0EsU0FBUTtBQUFBLElBQ3JDO0FBQ0ksUUFBSUEsU0FBUSxNQUFNO0FBQ2QsVUFBSSxDQUFDLGdCQUFnQixLQUFLQSxTQUFRLElBQUksR0FBRztBQUNyQyxjQUFNLElBQUksVUFBVSwyQkFBMkJBLFNBQVEsSUFBSSxFQUFFO0FBQUEsTUFDekU7QUFDUSxhQUFPLFlBQVlBLFNBQVE7QUFBQSxJQUNuQztBQUNJLFFBQUlBLFNBQVEsU0FBUztBQUNqQixVQUFJLENBQUM2eUIsUUFBTzd5QixTQUFRLE9BQU8sS0FDdkIsQ0FBQyxPQUFPLFNBQVNBLFNBQVEsUUFBUSxRQUFTLENBQUEsR0FBRztBQUM3QyxjQUFNLElBQUksVUFBVSw4QkFBOEJBLFNBQVEsT0FBTyxFQUFFO0FBQUEsTUFDL0U7QUFDUSxhQUFPLGVBQWVBLFNBQVEsUUFBUSxZQUFhO0FBQUEsSUFDM0Q7QUFDSSxRQUFJQSxTQUFRLFVBQVU7QUFDbEIsYUFBTztBQUFBLElBQ2Y7QUFDSSxRQUFJQSxTQUFRLFFBQVE7QUFDaEIsYUFBTztBQUFBLElBQ2Y7QUFDSSxRQUFJQSxTQUFRLGFBQWE7QUFDckIsYUFBTztBQUFBLElBQ2Y7QUFDSSxRQUFJQSxTQUFRLFVBQVU7QUFDbEIsWUFBTSxXQUFXLE9BQU9BLFNBQVEsYUFBYSxXQUN2Q0EsU0FBUSxTQUFTLFlBQVcsSUFDNUI7QUFDTixjQUFRLFVBQVE7QUFBQSxRQUNaLEtBQUs7QUFDRCxpQkFBTztBQUNQO0FBQUEsUUFDSixLQUFLO0FBQ0QsaUJBQU87QUFDUDtBQUFBLFFBQ0osS0FBSztBQUNELGlCQUFPO0FBQ1A7QUFBQSxRQUNKO0FBQ0ksZ0JBQU0sSUFBSSxVQUFVLCtCQUErQkEsU0FBUSxRQUFRLEVBQUU7QUFBQSxNQUNyRjtBQUFBLElBQ0E7QUFDSSxRQUFJQSxTQUFRLFVBQVU7QUFDbEIsWUFBTSxXQUFXLE9BQU9BLFNBQVEsYUFBYSxXQUN2Q0EsU0FBUSxTQUFTLFlBQVcsSUFDNUJBLFNBQVE7QUFDZCxjQUFRLFVBQVE7QUFBQSxRQUNaLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDRCxpQkFBTztBQUNQO0FBQUEsUUFDSixLQUFLO0FBQ0QsaUJBQU87QUFDUDtBQUFBLFFBQ0osS0FBSztBQUNELGlCQUFPO0FBQ1A7QUFBQSxRQUNKO0FBQ0ksZ0JBQU0sSUFBSSxVQUFVLCtCQUErQkEsU0FBUSxRQUFRLEVBQUU7QUFBQSxNQUNyRjtBQUFBLElBQ0E7QUFDSSxXQUFPO0FBQUEsRUFDWDtBQUlBLFdBQVMsT0FBTyxLQUFLO0FBQ2pCLFFBQUksSUFBSSxRQUFRLEdBQUcsTUFBTTtBQUNyQixhQUFPO0FBQ1gsUUFBSTtBQUNBLGFBQU8sbUJBQW1CLEdBQUc7QUFBQSxJQUNyQyxTQUNXbkYsSUFBRztBQUNOLGFBQU87QUFBQSxJQUNmO0FBQUEsRUFDQTtBQUlBLFdBQVNnNEIsUUFBTyxLQUFLO0FBQ2pCLFdBQU8sV0FBVyxLQUFLLEdBQUcsTUFBTTtBQUFBLEVBQ3BDOzs7O0FDN09BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBa0JBLElBQUksb0JBQW9CO0FBc0h4QixTQUFTLGtCQUFrQjd5QixXQUFVLElBQUk7QUFDOUIsV0FBQSxtQkFBbUIsU0FBUyxlQUFlO0FBQzlDLFFBQUE7QUFBQSxNQUNGLFdBQVc7QUFBQSxNQUNYLFNBQVM7QUFBQSxNQUNULE1BQUE0SSxRQUFPO0FBQUEsSUFBQSxJQUNMLFVBQVUsUUFBUSxTQUFTLEtBQUssVUFBVSxDQUFDLENBQUM7QUFDNUMsUUFBQSxDQUFDLFNBQVMsV0FBVyxHQUFHLEtBQUssQ0FBQyxTQUFTLFdBQVcsR0FBRyxHQUFHO0FBQzFELGlCQUFXLE1BQU07QUFBQSxJQUFBO0FBRVosV0FBQTtBQUFBLE1BQ0w7QUFBQSxNQUNBLEVBQUUsVUFBVSxRQUFRLE1BQUFBLE1BQUs7QUFBQTtBQUFBLE1BRXpCLGNBQWMsU0FBUyxjQUFjLE1BQU0sT0FBTztBQUFBLE1BQ2xELGNBQWMsU0FBUyxjQUFjLE1BQU0sT0FBTztBQUFBLElBQ3BEO0FBQUEsRUFBQTtBQUVPLFdBQUEsZUFBZSxTQUFTLElBQUk7QUFDbkMsUUFBSSxPQUFPLFFBQVEsU0FBUyxjQUFjLE1BQU07QUFDaEQsUUFBSSxPQUFPO0FBQ1gsUUFBSSxRQUFRLEtBQUssYUFBYSxNQUFNLEdBQUc7QUFDakMsVUFBQSxNQUFNLFFBQVEsU0FBUztBQUN2QixVQUFBLFlBQVksSUFBSSxRQUFRLEdBQUc7QUFDL0IsYUFBTyxjQUFjLEtBQUssTUFBTSxJQUFJLE1BQU0sR0FBRyxTQUFTO0FBQUEsSUFBQTtBQUV4RCxXQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sV0FBVyxLQUFLLFdBQVcsRUFBRTtBQUFBLEVBQUE7QUFFekQsV0FBQSxxQkFBcUIsVUFBVSxJQUFJO0FBQzFDO0FBQUEsTUFDRSxTQUFTLFNBQVMsT0FBTyxDQUFDLE1BQU07QUFBQSxNQUNoQyw2REFBNkQsS0FBSztBQUFBLFFBQ2hFO0FBQUEsTUFBQSxDQUNEO0FBQUEsSUFDSDtBQUFBLEVBQUE7QUFFSyxTQUFBO0FBQUEsSUFDTDtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTVJO0FBQUEsRUFDRjtBQUNGO0FBQ0EsU0FBUyxVQUFVLE9BQU8sU0FBUztBQUNqQyxNQUFJLFVBQVUsU0FBUyxVQUFVLFFBQVEsT0FBTyxVQUFVLGFBQWE7QUFDL0QsVUFBQSxJQUFJLE1BQU0sT0FBTztBQUFBLEVBQUE7QUFFM0I7QUFDQSxTQUFTLFFBQVEsTUFBTSxTQUFTO0FBQzlCLE1BQUksQ0FBQyxNQUFNO0FBQ1QsUUFBSSxPQUFPLFlBQVksWUFBYSxTQUFRLEtBQUssT0FBTztBQUNwRCxRQUFBO0FBQ0ksWUFBQSxJQUFJLE1BQU0sT0FBTztBQUFBLGFBQ2hCbkYsSUFBRztBQUFBLElBQUE7QUFBQSxFQUNaO0FBRUo7QUFDQSxTQUFTLFlBQVk7QUFDWixTQUFBLEtBQUssU0FBUyxTQUFTLEVBQUUsRUFBRSxVQUFVLEdBQUcsRUFBRTtBQUNuRDtBQUNBLFNBQVMsZ0JBQWdCLFVBQVVPLFFBQU87QUFDakMsU0FBQTtBQUFBLElBQ0wsS0FBSyxTQUFTO0FBQUEsSUFDZCxLQUFLLFNBQVM7QUFBQSxJQUNkLEtBQUtBO0FBQUEsRUFDUDtBQUNGO0FBQ0EsU0FBUyxlQUFlLFNBQVMsSUFBSSxRQUFRLE1BQU0sS0FBSztBQUN0RCxNQUFJLFdBQVc7QUFBQSxJQUNiLFVBQVUsT0FBTyxZQUFZLFdBQVcsVUFBVSxRQUFRO0FBQUEsSUFDMUQsUUFBUTtBQUFBLElBQ1IsTUFBTTtBQUFBLElBQ04sR0FBRyxPQUFPLE9BQU8sV0FBVyxVQUFVLEVBQUUsSUFBSTtBQUFBLElBQzVDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUtBLEtBQUssTUFBTSxHQUFHLE9BQU8sT0FBTyxVQUFVO0FBQUEsRUFDeEM7QUFDTyxTQUFBO0FBQ1Q7QUFDQSxTQUFTLFdBQVc7QUFBQSxFQUNsQixXQUFXO0FBQUEsRUFDWCxTQUFTO0FBQUEsRUFDVCxNQUFBd04sUUFBTztBQUNULEdBQUc7QUFDRCxNQUFJLFVBQVUsV0FBVztBQUN2QixnQkFBWSxPQUFPLE9BQU8sQ0FBQyxNQUFNLE1BQU0sU0FBUyxNQUFNO0FBQ3hELE1BQUlBLFNBQVFBLFVBQVM7QUFDbkIsZ0JBQVlBLE1BQUssT0FBTyxDQUFDLE1BQU0sTUFBTUEsUUFBTyxNQUFNQTtBQUM3QyxTQUFBO0FBQ1Q7QUFDQSxTQUFTLFVBQVUsTUFBTTtBQUN2QixNQUFJLGFBQWEsQ0FBQztBQUNsQixNQUFJLE1BQU07QUFDSixRQUFBLFlBQVksS0FBSyxRQUFRLEdBQUc7QUFDaEMsUUFBSSxhQUFhLEdBQUc7QUFDUCxpQkFBQSxPQUFPLEtBQUssVUFBVSxTQUFTO0FBQ25DLGFBQUEsS0FBSyxVQUFVLEdBQUcsU0FBUztBQUFBLElBQUE7QUFFaEMsUUFBQSxjQUFjLEtBQUssUUFBUSxHQUFHO0FBQ2xDLFFBQUksZUFBZSxHQUFHO0FBQ1QsaUJBQUEsU0FBUyxLQUFLLFVBQVUsV0FBVztBQUN2QyxhQUFBLEtBQUssVUFBVSxHQUFHLFdBQVc7QUFBQSxJQUFBO0FBRXRDLFFBQUksTUFBTTtBQUNSLGlCQUFXLFdBQVc7QUFBQSxJQUFBO0FBQUEsRUFDeEI7QUFFSyxTQUFBO0FBQ1Q7QUFDQSxTQUFTLG1CQUFtQixhQUFhLGFBQWEsa0JBQWtCNUksV0FBVSxDQUFBLEdBQUk7QUFDcEYsTUFBSSxFQUFFLFFBQVEsVUFBVSxTQUFTLGFBQWEsV0FBVyxVQUFVQTtBQUNuRSxNQUFJLGdCQUFnQixRQUFRO0FBQzVCLE1BQUksU0FBUztBQUNiLE1BQUksV0FBVztBQUNmLE1BQUk1RSxTQUFRLFNBQVM7QUFDckIsTUFBSUEsVUFBUyxNQUFNO0FBQ1QsSUFBQUEsU0FBQTtBQUNNLGtCQUFBLGFBQWEsRUFBRSxHQUFHLGNBQWMsT0FBTyxLQUFLQSxVQUFTLEVBQUU7QUFBQSxFQUFBO0FBRXZFLFdBQVMsV0FBVztBQUNsQixRQUFJLFFBQVEsY0FBYyxTQUFTLEVBQUUsS0FBSyxLQUFLO0FBQy9DLFdBQU8sTUFBTTtBQUFBLEVBQUE7QUFFZixXQUFTLFlBQVk7QUFDVixhQUFBO0FBQ1QsUUFBSSxZQUFZLFNBQVM7QUFDekIsUUFBSSxRQUFRLGFBQWEsT0FBTyxPQUFPLFlBQVlBO0FBQzNDLElBQUFBLFNBQUE7QUFDUixRQUFJLFVBQVU7QUFDWixlQUFTLEVBQUUsUUFBUSxVQUFVLFFBQVEsVUFBVSxPQUFPO0FBQUEsSUFBQTtBQUFBLEVBQ3hEO0FBRU8sV0FBQSxLQUFLLElBQUksT0FBTztBQUNkLGFBQUE7QUFDVCxRQUFJLFdBQVcsZUFBZSxRQUFRLFVBQVUsSUFBSSxLQUFLO0FBQ3JELFFBQUEsaUJBQW1DLGtCQUFBLFVBQVUsRUFBRTtBQUNuRCxJQUFBQSxTQUFRLGFBQWE7QUFDakIsUUFBQSxlQUFlLGdCQUFnQixVQUFVQSxNQUFLO0FBQzlDLFFBQUEsTUFBTSxRQUFRLFdBQVcsUUFBUTtBQUNqQyxRQUFBO0FBQ1ksb0JBQUEsVUFBVSxjQUFjLElBQUksR0FBRztBQUFBLGFBQ3RDLE9BQU87QUFDZCxVQUFJLGlCQUFpQixnQkFBZ0IsTUFBTSxTQUFTLGtCQUFrQjtBQUM5RCxjQUFBO0FBQUEsTUFBQTtBQUVBLGNBQUEsU0FBUyxPQUFPLEdBQUc7QUFBQSxJQUFBO0FBRTdCLFFBQUksWUFBWSxVQUFVO0FBQ3hCLGVBQVMsRUFBRSxRQUFRLFVBQVUsUUFBUSxVQUFVLE9BQU8sR0FBRztBQUFBLElBQUE7QUFBQSxFQUMzRDtBQUVPLFdBQUEsU0FBUyxJQUFJLE9BQU87QUFDbEIsYUFBQTtBQUNULFFBQUksV0FBVyxlQUFlLFFBQVEsVUFBVSxJQUFJLEtBQUs7QUFDckQsUUFBQSxpQkFBbUMsa0JBQUEsVUFBVSxFQUFFO0FBQ25ELElBQUFBLFNBQVEsU0FBUztBQUNiLFFBQUEsZUFBZSxnQkFBZ0IsVUFBVUEsTUFBSztBQUM5QyxRQUFBLE1BQU0sUUFBUSxXQUFXLFFBQVE7QUFDdkIsa0JBQUEsYUFBYSxjQUFjLElBQUksR0FBRztBQUNoRCxRQUFJLFlBQVksVUFBVTtBQUN4QixlQUFTLEVBQUUsUUFBUSxVQUFVLFFBQVEsVUFBVSxPQUFPLEdBQUc7QUFBQSxJQUFBO0FBQUEsRUFDM0Q7QUFFRixXQUFTLFVBQVUsSUFBSTtBQUNqQixRQUFBLE9BQU8sUUFBUSxTQUFTLFdBQVcsU0FBUyxRQUFRLFNBQVMsU0FBUyxRQUFRLFNBQVM7QUFDM0YsUUFBSSxPQUFPLE9BQU8sT0FBTyxXQUFXLEtBQUssV0FBVyxFQUFFO0FBQy9DLFdBQUEsS0FBSyxRQUFRLE1BQU0sS0FBSztBQUMvQjtBQUFBLE1BQ0U7QUFBQSxNQUNBLHNFQUFzRSxJQUFJO0FBQUEsSUFDNUU7QUFDTyxXQUFBLElBQUksSUFBSSxNQUFNLElBQUk7QUFBQSxFQUFBO0FBRTNCLE1BQUksVUFBVTtBQUFBLElBQ1osSUFBSSxTQUFTO0FBQ0osYUFBQTtBQUFBLElBQ1Q7QUFBQSxJQUNBLElBQUksV0FBVztBQUNOLGFBQUEsWUFBWSxTQUFTLGFBQWE7QUFBQSxJQUMzQztBQUFBLElBQ0EsT0FBTyxJQUFJO0FBQ1QsVUFBSSxVQUFVO0FBQ04sY0FBQSxJQUFJLE1BQU0sNENBQTRDO0FBQUEsTUFBQTtBQUV0RCxjQUFBLGlCQUFpQixtQkFBbUIsU0FBUztBQUMxQyxpQkFBQTtBQUNYLGFBQU8sTUFBTTtBQUNILGdCQUFBLG9CQUFvQixtQkFBbUIsU0FBUztBQUM3QyxtQkFBQTtBQUFBLE1BQ2I7QUFBQSxJQUNGO0FBQUEsSUFDQSxXQUFXLElBQUk7QUFDTixhQUFBLFlBQVksU0FBUyxFQUFFO0FBQUEsSUFDaEM7QUFBQSxJQUNBO0FBQUEsSUFDQSxlQUFlLElBQUk7QUFDYixVQUFBLE1BQU0sVUFBVSxFQUFFO0FBQ2YsYUFBQTtBQUFBLFFBQ0wsVUFBVSxJQUFJO0FBQUEsUUFDZCxRQUFRLElBQUk7QUFBQSxRQUNaLE1BQU0sSUFBSTtBQUFBLE1BQ1o7QUFBQSxJQUNGO0FBQUEsSUFDQTtBQUFBLElBQ0EsU0FBUztBQUFBLElBQ1QsR0FBR1UsSUFBRztBQUNHLGFBQUEsY0FBYyxHQUFHQSxFQUFDO0FBQUEsSUFBQTtBQUFBLEVBRTdCO0FBQ08sU0FBQTtBQUNUO0FBc0RBLFNBQVMsWUFBWSxRQUFRLGFBQWEsV0FBVyxLQUFLO0FBQ3hELFNBQU8sZ0JBQWdCLFFBQVEsYUFBYSxVQUFVLEtBQUs7QUFDN0Q7QUFDQSxTQUFTLGdCQUFnQixRQUFRLGFBQWEsVUFBVSxjQUFjO0FBQ3BFLE1BQUksV0FBVyxPQUFPLGdCQUFnQixXQUFXLFVBQVUsV0FBVyxJQUFJO0FBQzFFLE1BQUksV0FBVyxjQUFjLFNBQVMsWUFBWSxLQUFLLFFBQVE7QUFDL0QsTUFBSSxZQUFZLE1BQU07QUFDYixXQUFBO0FBQUEsRUFBQTtBQUVMLE1BQUEsV0FBVyxjQUFjLE1BQU07QUFDbkMsb0JBQWtCLFFBQVE7QUFDMUIsTUFBSXlELFdBQVU7QUFDTCxXQUFBN0YsS0FBSSxHQUFHNkYsWUFBVyxRQUFRN0YsS0FBSSxTQUFTLFFBQVEsRUFBRUEsSUFBRztBQUN2RCxRQUFBLFVBQVUsV0FBVyxRQUFRO0FBQ3ZCLElBQUE2RixXQUFBO0FBQUEsTUFDUixTQUFTN0YsRUFBQztBQUFBLE1BQ1Y7QUFBQSxNQUNBO0FBQUEsSUFDRjtBQUFBLEVBQUE7QUFFSyxTQUFBNkY7QUFDVDtBQVdBLFNBQVMsY0FBYyxRQUFRLFdBQVcsQ0FBQSxHQUFJLGNBQWMsQ0FBSSxHQUFBLGFBQWEsSUFBSTtBQUMvRSxNQUFJLGVBQWUsQ0FBQyxPQUFPbkUsUUFBTyxpQkFBaUI7QUFDakQsUUFBSSxPQUFPO0FBQUEsTUFDVCxjQUFjLGlCQUFpQixTQUFTLE1BQU0sUUFBUSxLQUFLO0FBQUEsTUFDM0QsZUFBZSxNQUFNLGtCQUFrQjtBQUFBLE1BQ3ZDLGVBQWVBO0FBQUEsTUFDZjtBQUFBLElBQ0Y7QUFDQSxRQUFJLEtBQUssYUFBYSxXQUFXLEdBQUcsR0FBRztBQUNyQztBQUFBLFFBQ0UsS0FBSyxhQUFhLFdBQVcsVUFBVTtBQUFBLFFBQ3ZDLHdCQUF3QixLQUFLLFlBQVksd0JBQXdCLFVBQVU7QUFBQSxNQUM3RTtBQUNBLFdBQUssZUFBZSxLQUFLLGFBQWEsTUFBTSxXQUFXLE1BQU07QUFBQSxJQUFBO0FBRS9ELFFBQUksT0FBTyxVQUFVLENBQUMsWUFBWSxLQUFLLFlBQVksQ0FBQztBQUNoRCxRQUFBLGFBQWEsWUFBWSxPQUFPLElBQUk7QUFDeEMsUUFBSSxNQUFNLFlBQVksTUFBTSxTQUFTLFNBQVMsR0FBRztBQUMvQztBQUFBO0FBQUE7QUFBQSxRQUdFLE1BQU0sVUFBVTtBQUFBLFFBQ2hCLDRGQUE0RixJQUFJO0FBQUEsTUFDbEc7QUFDQSxvQkFBYyxNQUFNLFVBQVUsVUFBVSxZQUFZLElBQUk7QUFBQSxJQUFBO0FBRTFELFFBQUksTUFBTSxRQUFRLFFBQVEsQ0FBQyxNQUFNLE9BQU87QUFDdEM7QUFBQSxJQUFBO0FBRUYsYUFBUyxLQUFLO0FBQUEsTUFDWjtBQUFBLE1BQ0EsT0FBTyxhQUFhLE1BQU0sTUFBTSxLQUFLO0FBQUEsTUFDckM7QUFBQSxJQUFBLENBQ0Q7QUFBQSxFQUNIO0FBQ08sU0FBQSxRQUFRLENBQUMsT0FBT0EsV0FBVTs7QUFDM0IsUUFBQSxNQUFNLFNBQVMsTUFBTSxHQUFDLFdBQU0sU0FBTixtQkFBWSxTQUFTLE9BQU07QUFDbkQsbUJBQWEsT0FBT0EsTUFBSztBQUFBLElBQUEsT0FDcEI7QUFDTCxlQUFTLFlBQVksd0JBQXdCLE1BQU0sSUFBSSxHQUFHO0FBQzNDLHFCQUFBLE9BQU9BLFFBQU8sUUFBUTtBQUFBLE1BQUE7QUFBQSxJQUNyQztBQUFBLEVBQ0YsQ0FDRDtBQUNNLFNBQUE7QUFDVDtBQUNBLFNBQVMsd0JBQXdCLE1BQU07QUFDakMsTUFBQSxXQUFXLEtBQUssTUFBTSxHQUFHO0FBQzdCLE1BQUksU0FBUyxXQUFXLEVBQUcsUUFBTyxDQUFDO0FBQ25DLE1BQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxJQUFJO0FBQ25CLE1BQUEsYUFBYSxNQUFNLFNBQVMsR0FBRztBQUNuQyxNQUFJNGMsWUFBVyxNQUFNLFFBQVEsT0FBTyxFQUFFO0FBQ2xDLE1BQUEsS0FBSyxXQUFXLEdBQUc7QUFDckIsV0FBTyxhQUFhLENBQUNBLFdBQVUsRUFBRSxJQUFJLENBQUNBLFNBQVE7QUFBQSxFQUFBO0FBRWhELE1BQUksZUFBZSx3QkFBd0IsS0FBSyxLQUFLLEdBQUcsQ0FBQztBQUN6RCxNQUFJLFNBQVMsQ0FBQztBQUNQLFNBQUE7QUFBQSxJQUNMLEdBQUcsYUFBYTtBQUFBLE1BQ2QsQ0FBQyxZQUFZLFlBQVksS0FBS0EsWUFBVyxDQUFDQSxXQUFVLE9BQU8sRUFBRSxLQUFLLEdBQUc7QUFBQSxJQUFBO0FBQUEsRUFFekU7QUFDQSxNQUFJLFlBQVk7QUFDUCxXQUFBLEtBQUssR0FBRyxZQUFZO0FBQUEsRUFBQTtBQUU3QixTQUFPLE9BQU87QUFBQSxJQUNaLENBQUMsYUFBYSxLQUFLLFdBQVcsR0FBRyxLQUFLLGFBQWEsS0FBSyxNQUFNO0FBQUEsRUFDaEU7QUFDRjtBQUNBLFNBQVMsa0JBQWtCLFVBQVU7QUFDMUIsV0FBQTtBQUFBLElBQ1AsQ0FBQ3hiLElBQUdLLE9BQU1MLEdBQUUsVUFBVUssR0FBRSxRQUFRQSxHQUFFLFFBQVFMLEdBQUUsUUFBUTtBQUFBLE1BQ2xEQSxHQUFFLFdBQVcsSUFBSSxDQUFDLFNBQVMsS0FBSyxhQUFhO0FBQUEsTUFDN0NLLEdBQUUsV0FBVyxJQUFJLENBQUMsU0FBUyxLQUFLLGFBQWE7QUFBQSxJQUFBO0FBQUEsRUFFakQ7QUFDRjtBQUNBLElBQUksVUFBVTtBQUNkLElBQUksc0JBQXNCO0FBQzFCLElBQUksa0JBQWtCO0FBQ3RCLElBQUksb0JBQW9CO0FBQ3hCLElBQUkscUJBQXFCO0FBQ3pCLElBQUksZUFBZTtBQUNuQixJQUFJLFVBQVUsQ0FBQzBFLE9BQU1BLE9BQU07QUFDM0IsU0FBUyxhQUFhLE1BQU1uRyxRQUFPO0FBQzdCLE1BQUEsV0FBVyxLQUFLLE1BQU0sR0FBRztBQUM3QixNQUFJLGVBQWUsU0FBUztBQUN4QixNQUFBLFNBQVMsS0FBSyxPQUFPLEdBQUc7QUFDVixvQkFBQTtBQUFBLEVBQUE7QUFFbEIsTUFBSUEsUUFBTztBQUNPLG9CQUFBO0FBQUEsRUFBQTtBQUVYLFNBQUEsU0FBUyxPQUFPLENBQUNtRyxPQUFNLENBQUMsUUFBUUEsRUFBQyxDQUFDLEVBQUU7QUFBQSxJQUN6QyxDQUFDLE9BQU8sWUFBWSxTQUFTLFFBQVEsS0FBSyxPQUFPLElBQUksc0JBQXNCLFlBQVksS0FBSyxvQkFBb0I7QUFBQSxJQUNoSDtBQUFBLEVBQ0Y7QUFDRjtBQUNBLFNBQVMsZUFBZS9FLElBQUdLLElBQUc7QUFDNUIsTUFBSSxXQUFXTCxHQUFFLFdBQVdLLEdBQUUsVUFBVUwsR0FBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLE1BQU0sQ0FBQ1YsSUFBR3BDLE9BQU1vQyxPQUFNZSxHQUFFbkQsRUFBQyxDQUFDO0FBQzFFLFNBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBS0w4QyxHQUFFQSxHQUFFLFNBQVMsQ0FBQyxJQUFJSyxHQUFFQSxHQUFFLFNBQVMsQ0FBQztBQUFBO0FBQUE7QUFBQTtBQUFBLElBSWhDO0FBQUE7QUFFSjtBQUNBLFNBQVMsaUJBQWlCLFFBQVEsVUFBVSxlQUFlLE9BQU87QUFDNUQsTUFBQSxFQUFFLGVBQWU7QUFDckIsTUFBSSxnQkFBZ0IsQ0FBQztBQUNyQixNQUFJLGtCQUFrQjtBQUN0QixNQUFJMEMsV0FBVSxDQUFDO0FBQ2YsV0FBUzdGLEtBQUksR0FBR0EsS0FBSSxXQUFXLFFBQVEsRUFBRUEsSUFBRztBQUN0QyxRQUFBLE9BQU8sV0FBV0EsRUFBQztBQUNuQixRQUFBLE1BQU1BLE9BQU0sV0FBVyxTQUFTO0FBQ2hDLFFBQUEsb0JBQW9CLG9CQUFvQixNQUFNLFdBQVcsU0FBUyxNQUFNLGdCQUFnQixNQUFNLEtBQUs7QUFDdkcsUUFBSXdHLFNBQVE7QUFBQSxNQUNWLEVBQUUsTUFBTSxLQUFLLGNBQWMsZUFBZSxLQUFLLGVBQWUsSUFBSTtBQUFBLE1BQ2xFO0FBQUEsSUFDRjtBQUNBLFFBQUksUUFBUSxLQUFLO0FBQ2IsUUFBQSxDQUFDQSxVQUFTLE9BQU8sZ0JBQWdCLENBQUMsV0FBVyxXQUFXLFNBQVMsQ0FBQyxFQUFFLE1BQU0sT0FBTztBQUMzRSxNQUFBQSxTQUFBO0FBQUEsUUFDTjtBQUFBLFVBQ0UsTUFBTSxLQUFLO0FBQUEsVUFDWCxlQUFlLEtBQUs7QUFBQSxVQUNwQixLQUFLO0FBQUEsUUFDUDtBQUFBLFFBQ0E7QUFBQSxNQUNGO0FBQUEsSUFBQTtBQUVGLFFBQUksQ0FBQ0EsUUFBTztBQUNILGFBQUE7QUFBQSxJQUFBO0FBRUYsV0FBQSxPQUFPLGVBQWVBLE9BQU0sTUFBTTtBQUN6QyxJQUFBWCxTQUFRLEtBQUs7QUFBQTtBQUFBLE1BRVgsUUFBUTtBQUFBLE1BQ1IsVUFBVSxVQUFVLENBQUMsaUJBQWlCVyxPQUFNLFFBQVEsQ0FBQztBQUFBLE1BQ3JELGNBQWM7QUFBQSxRQUNaLFVBQVUsQ0FBQyxpQkFBaUJBLE9BQU0sWUFBWSxDQUFDO0FBQUEsTUFDakQ7QUFBQSxNQUNBO0FBQUEsSUFBQSxDQUNEO0FBQ0csUUFBQUEsT0FBTSxpQkFBaUIsS0FBSztBQUM5Qix3QkFBa0IsVUFBVSxDQUFDLGlCQUFpQkEsT0FBTSxZQUFZLENBQUM7QUFBQSxJQUFBO0FBQUEsRUFDbkU7QUFFSyxTQUFBWDtBQUNUO0FBNkJBLFNBQVMsVUFBVXVKLFVBQVMsVUFBVTtBQUNoQyxNQUFBLE9BQU9BLGFBQVksVUFBVTtBQUMvQixJQUFBQSxXQUFVLEVBQUUsTUFBTUEsVUFBUyxlQUFlLE9BQU8sS0FBSyxLQUFLO0FBQUEsRUFBQTtBQUV6RCxNQUFBLENBQUMsU0FBUyxjQUFjLElBQUk7QUFBQSxJQUM5QkEsU0FBUTtBQUFBLElBQ1JBLFNBQVE7QUFBQSxJQUNSQSxTQUFRO0FBQUEsRUFDVjtBQUNJLE1BQUE1SSxTQUFRLFNBQVMsTUFBTSxPQUFPO0FBQzlCLE1BQUEsQ0FBQ0EsT0FBYyxRQUFBO0FBQ2YsTUFBQSxrQkFBa0JBLE9BQU0sQ0FBQztBQUM3QixNQUFJLGVBQWUsZ0JBQWdCLFFBQVEsV0FBVyxJQUFJO0FBQ3RELE1BQUEsZ0JBQWdCQSxPQUFNLE1BQU0sQ0FBQztBQUNqQyxNQUFJLFNBQVMsZUFBZTtBQUFBLElBQzFCLENBQUMsT0FBTyxFQUFFLFdBQVcsV0FBQSxHQUFjOUUsV0FBVTtBQUMzQyxVQUFJLGNBQWMsS0FBSztBQUNqQixZQUFBLGFBQWEsY0FBY0EsTUFBSyxLQUFLO0FBQzFCLHVCQUFBLGdCQUFnQixNQUFNLEdBQUcsZ0JBQWdCLFNBQVMsV0FBVyxNQUFNLEVBQUUsUUFBUSxXQUFXLElBQUk7QUFBQSxNQUFBO0FBRXZHLFlBQUEsUUFBUSxjQUFjQSxNQUFLO0FBQzdCLFVBQUEsY0FBYyxDQUFDLE9BQU87QUFDeEIsY0FBTSxTQUFTLElBQUk7QUFBQSxNQUFBLE9BQ2Q7QUFDTCxjQUFNLFNBQVMsS0FBSyxTQUFTLElBQUksUUFBUSxRQUFRLEdBQUc7QUFBQSxNQUFBO0FBRS9DLGFBQUE7QUFBQSxJQUNUO0FBQUEsSUFDQSxDQUFBO0FBQUEsRUFDRjtBQUNPLFNBQUE7QUFBQSxJQUNMO0FBQUEsSUFDQSxVQUFVO0FBQUEsSUFDVjtBQUFBLElBQ0EsU0FBQTBOO0FBQUEsRUFDRjtBQUNGO0FBQ0EsU0FBUyxZQUFZLE1BQU0sZ0JBQWdCLE9BQU8sTUFBTSxNQUFNO0FBQzVEO0FBQUEsSUFDRSxTQUFTLE9BQU8sQ0FBQyxLQUFLLFNBQVMsR0FBRyxLQUFLLEtBQUssU0FBUyxJQUFJO0FBQUEsSUFDekQsZUFBZSxJQUFJLG9DQUFvQyxLQUFLLFFBQVEsT0FBTyxJQUFJLENBQUMseUlBQXlJLEtBQUssUUFBUSxPQUFPLElBQUksQ0FBQztBQUFBLEVBQ3BQO0FBQ0EsTUFBSSxTQUFTLENBQUM7QUFDZCxNQUFJLGVBQWUsTUFBTSxLQUFLLFFBQVEsV0FBVyxFQUFFLEVBQUUsUUFBUSxRQUFRLEdBQUcsRUFBRSxRQUFRLHNCQUFzQixNQUFNLEVBQUU7QUFBQSxJQUM5RztBQUFBLElBQ0EsQ0FBQ3pQLElBQUcsV0FBVyxlQUFlO0FBQzVCLGFBQU8sS0FBSyxFQUFFLFdBQVcsWUFBWSxjQUFjLE1BQU07QUFDekQsYUFBTyxhQUFhLGlCQUFpQjtBQUFBLElBQUE7QUFBQSxFQUV6QztBQUNJLE1BQUEsS0FBSyxTQUFTLEdBQUcsR0FBRztBQUN0QixXQUFPLEtBQUssRUFBRSxXQUFXLElBQUEsQ0FBSztBQUM5QixvQkFBZ0IsU0FBUyxPQUFPLFNBQVMsT0FBTyxVQUFVO0FBQUEsYUFDakQsS0FBSztBQUNFLG9CQUFBO0FBQUEsRUFDUCxXQUFBLFNBQVMsTUFBTSxTQUFTLEtBQUs7QUFDdEIsb0JBQUE7QUFBQSxFQUFBLE1BQ1g7QUFFUCxNQUFJLFVBQVUsSUFBSSxPQUFPLGNBQWMsZ0JBQWdCLFNBQVMsR0FBRztBQUM1RCxTQUFBLENBQUMsU0FBUyxNQUFNO0FBQ3pCO0FBQ0EsU0FBUyxXQUFXLE9BQU87QUFDckIsTUFBQTtBQUNGLFdBQU8sTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFJLENBQUMrQyxPQUFNLG1CQUFtQkEsRUFBQyxFQUFFLFFBQVEsT0FBTyxLQUFLLENBQUMsRUFBRSxLQUFLLEdBQUc7QUFBQSxXQUNqRixPQUFPO0FBQ2Q7QUFBQSxNQUNFO0FBQUEsTUFDQSxpQkFBaUIsS0FBSyxvSEFBb0gsS0FBSztBQUFBLElBQ2pKO0FBQ08sV0FBQTtBQUFBLEVBQUE7QUFFWDtBQUNBLFNBQVMsY0FBYyxVQUFVLFVBQVU7QUFDckMsTUFBQSxhQUFhLElBQVksUUFBQTtBQUN6QixNQUFBLENBQUMsU0FBUyxZQUFZLEVBQUUsV0FBVyxTQUFTLFlBQUEsQ0FBYSxHQUFHO0FBQ3ZELFdBQUE7QUFBQSxFQUFBO0FBRUwsTUFBQSxhQUFhLFNBQVMsU0FBUyxHQUFHLElBQUksU0FBUyxTQUFTLElBQUksU0FBUztBQUNyRSxNQUFBLFdBQVcsU0FBUyxPQUFPLFVBQVU7QUFDckMsTUFBQSxZQUFZLGFBQWEsS0FBSztBQUN6QixXQUFBO0FBQUEsRUFBQTtBQUVGLFNBQUEsU0FBUyxNQUFNLFVBQVUsS0FBSztBQUN2QztBQUNBLFNBQVMsWUFBWSxJQUFJLGVBQWUsS0FBSztBQUN2QyxNQUFBO0FBQUEsSUFDRixVQUFVO0FBQUEsSUFDVixTQUFTO0FBQUEsSUFDVCxNQUFBd00sUUFBTztBQUFBLE1BQ0wsT0FBTyxPQUFPLFdBQVcsVUFBVSxFQUFFLElBQUk7QUFDekMsTUFBQSxXQUFXLGFBQWEsV0FBVyxXQUFXLEdBQUcsSUFBSSxhQUFhLGdCQUFnQixZQUFZLFlBQVksSUFBSTtBQUMzRyxTQUFBO0FBQUEsSUFDTDtBQUFBLElBQ0EsUUFBUSxnQkFBZ0IsTUFBTTtBQUFBLElBQzlCLE1BQU0sY0FBY0EsS0FBSTtBQUFBLEVBQzFCO0FBQ0Y7QUFDQSxTQUFTLGdCQUFnQixjQUFjLGNBQWM7QUFDbkQsTUFBSSxXQUFXLGFBQWEsUUFBUSxRQUFRLEVBQUUsRUFBRSxNQUFNLEdBQUc7QUFDckQsTUFBQSxtQkFBbUIsYUFBYSxNQUFNLEdBQUc7QUFDNUIsbUJBQUEsUUFBUSxDQUFDLFlBQVk7QUFDcEMsUUFBSSxZQUFZLE1BQU07QUFDcEIsVUFBSSxTQUFTLFNBQVMsRUFBRyxVQUFTLElBQUk7QUFBQSxJQUFBLFdBQzdCLFlBQVksS0FBSztBQUMxQixlQUFTLEtBQUssT0FBTztBQUFBLElBQUE7QUFBQSxFQUN2QixDQUNEO0FBQ0QsU0FBTyxTQUFTLFNBQVMsSUFBSSxTQUFTLEtBQUssR0FBRyxJQUFJO0FBQ3BEO0FBQ0EsU0FBUyxvQkFBb0JoSSxPQUFNLE9BQU8sTUFBTSxNQUFNO0FBQ3BELFNBQU8scUJBQXFCQSxLQUFJLDRDQUE0QyxLQUFLLGFBQWEsS0FBSztBQUFBLElBQ2pHO0FBQUEsRUFBQSxDQUNELDBDQUEwQyxJQUFJO0FBQ2pEO0FBQ0EsU0FBUywyQkFBMkJyQixVQUFTO0FBQzNDLFNBQU9BLFNBQVE7QUFBQSxJQUNiLENBQUNXLFFBQU85RSxXQUFVQSxXQUFVLEtBQUs4RSxPQUFNLE1BQU0sUUFBUUEsT0FBTSxNQUFNLEtBQUssU0FBUztBQUFBLEVBQ2pGO0FBQ0Y7QUFDQSxTQUFTLG9CQUFvQlgsVUFBUztBQUNoQyxNQUFBLGNBQWMsMkJBQTJCQSxRQUFPO0FBQ3BELFNBQU8sWUFBWTtBQUFBLElBQ2pCLENBQUNXLFFBQU8sUUFBUSxRQUFRLFlBQVksU0FBUyxJQUFJQSxPQUFNLFdBQVdBLE9BQU07QUFBQSxFQUMxRTtBQUNGO0FBQ0EsU0FBUyxVQUFVLE9BQU8sZ0JBQWdCLGtCQUFrQixpQkFBaUIsT0FBTztBQUM5RSxNQUFBO0FBQ0EsTUFBQSxPQUFPLFVBQVUsVUFBVTtBQUM3QixTQUFLLFVBQVUsS0FBSztBQUFBLEVBQUEsT0FDZjtBQUNBLFNBQUEsRUFBRSxHQUFHLE1BQU07QUFDaEI7QUFBQSxNQUNFLENBQUMsR0FBRyxZQUFZLENBQUMsR0FBRyxTQUFTLFNBQVMsR0FBRztBQUFBLE1BQ3pDLG9CQUFvQixLQUFLLFlBQVksVUFBVSxFQUFFO0FBQUEsSUFDbkQ7QUFDQTtBQUFBLE1BQ0UsQ0FBQyxHQUFHLFlBQVksQ0FBQyxHQUFHLFNBQVMsU0FBUyxHQUFHO0FBQUEsTUFDekMsb0JBQW9CLEtBQUssWUFBWSxRQUFRLEVBQUU7QUFBQSxJQUNqRDtBQUNBO0FBQUEsTUFDRSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsT0FBTyxTQUFTLEdBQUc7QUFBQSxNQUNyQyxvQkFBb0IsS0FBSyxVQUFVLFFBQVEsRUFBRTtBQUFBLElBQy9DO0FBQUEsRUFBQTtBQUVGLE1BQUksY0FBYyxVQUFVLE1BQU0sR0FBRyxhQUFhO0FBQzlDLE1BQUEsYUFBYSxjQUFjLE1BQU0sR0FBRztBQUNwQyxNQUFBeUI7QUFDSixNQUFJLGNBQWMsTUFBTTtBQUNmLElBQUFBLFFBQUE7QUFBQSxFQUFBLE9BQ0Y7QUFDRCxRQUFBLHFCQUFxQixlQUFlLFNBQVM7QUFDakQsUUFBSSxDQUFDLGtCQUFrQixXQUFXLFdBQVcsSUFBSSxHQUFHO0FBQzlDLFVBQUEsYUFBYSxXQUFXLE1BQU0sR0FBRztBQUM5QixhQUFBLFdBQVcsQ0FBQyxNQUFNLE1BQU07QUFDN0IsbUJBQVcsTUFBTTtBQUNLLDhCQUFBO0FBQUEsTUFBQTtBQUVyQixTQUFBLFdBQVcsV0FBVyxLQUFLLEdBQUc7QUFBQSxJQUFBO0FBRW5DLElBQUFBLFFBQU8sc0JBQXNCLElBQUksZUFBZSxrQkFBa0IsSUFBSTtBQUFBLEVBQUE7QUFFcEUsTUFBQSxPQUFPLFlBQVksSUFBSUEsS0FBSTtBQUMvQixNQUFJLDJCQUEyQixjQUFjLGVBQWUsT0FBTyxXQUFXLFNBQVMsR0FBRztBQUMxRixNQUFJLDJCQUEyQixlQUFlLGVBQWUsUUFBUSxpQkFBaUIsU0FBUyxHQUFHO0FBQ2xHLE1BQUksQ0FBQyxLQUFLLFNBQVMsU0FBUyxHQUFHLE1BQU0sNEJBQTRCLDBCQUEwQjtBQUN6RixTQUFLLFlBQVk7QUFBQSxFQUFBO0FBRVosU0FBQTtBQUNUO0FBQ0EsSUFBSSxZQUFZLENBQUMsVUFBVSxNQUFNLEtBQUssR0FBRyxFQUFFLFFBQVEsVUFBVSxHQUFHO0FBQ2hFLElBQUksb0JBQW9CLENBQUMsYUFBYSxTQUFTLFFBQVEsUUFBUSxFQUFFLEVBQUUsUUFBUSxRQUFRLEdBQUc7QUFDdEYsSUFBSSxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsVUFBVSxXQUFXLE1BQU0sS0FBSyxPQUFPLFdBQVcsR0FBRyxJQUFJLFNBQVMsTUFBTTtBQUMzRyxJQUFJLGdCQUFnQixDQUFDaUgsVUFBUyxDQUFDQSxTQUFRQSxVQUFTLE1BQU0sS0FBS0EsTUFBSyxXQUFXLEdBQUcsSUFBSUEsUUFBTyxNQUFNQTtBQW1EL0YsU0FBUyxxQkFBcUIsT0FBTztBQUNuQyxTQUFPLFNBQVMsUUFBUSxPQUFPLE1BQU0sV0FBVyxZQUFZLE9BQU8sTUFBTSxlQUFlLFlBQVksT0FBTyxNQUFNLGFBQWEsYUFBYSxVQUFVO0FBQ3ZKO0FBR0EsSUFBSSwwQkFBMEI7QUFBQSxFQUM1QjtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGO0FBQzJCLElBQUk7QUFBQSxFQUM3QjtBQUNGO0FBQ0EsSUFBSSx5QkFBeUI7QUFBQSxFQUMzQjtBQUFBLEVBQ0EsR0FBRztBQUNMO0FBQzBCLElBQUksSUFBSSxzQkFBc0I7QUFnbUd4RCxJQUFJLG9CQUFvQm1FLGFBQU0sY0FBYyxJQUFJO0FBQ2hELGtCQUFrQixjQUFjO0FBQ2hDLElBQUkseUJBQXlCQSxhQUFNLGNBQWMsSUFBSTtBQUNyRCx1QkFBdUIsY0FBYztBQUNyQyxJQUFJLHdCQUF3QkEsYUFBQUEsY0FBb0I7QUFBQSxFQUM5QyxpQkFBaUI7QUFDbkIsQ0FBQztBQUNELHNCQUFzQixjQUFjO0FBQ3BDLElBQUksa0JBQWtCQSxhQUFNO0FBQUEsc0JBQ04sSUFBSTtBQUMxQjtBQUNBLGdCQUFnQixjQUFjO0FBQzlCLElBQUksZUFBZUEsYUFBTSxjQUFjLElBQUk7QUFDM0MsYUFBYSxjQUFjO0FBQzNCLElBQUksb0JBQW9CQSxhQUFNO0FBQUEsRUFDNUI7QUFDRjtBQUNBLGtCQUFrQixjQUFjO0FBQ2hDLElBQUksa0JBQWtCQSxhQUFNO0FBQUEsRUFDMUI7QUFDRjtBQUNBLGdCQUFnQixjQUFjO0FBQzlCLElBQUksZUFBZUEsYUFBQUEsY0FBb0I7QUFBQSxFQUNyQyxRQUFRO0FBQUEsRUFDUixTQUFTLENBQUM7QUFBQSxFQUNWLGFBQWE7QUFDZixDQUFDO0FBQ0QsYUFBYSxjQUFjO0FBQzNCLElBQUksb0JBQW9CQSxhQUFNLGNBQWMsSUFBSTtBQUNoRCxrQkFBa0IsY0FBYztBQUtoQyxTQUFTLFFBQVEsSUFBSSxFQUFFLFNBQVMsSUFBSSxDQUFBLEdBQUk7QUFDdEM7QUFBQSxJQUNFLG1CQUFtQjtBQUFBO0FBQUE7QUFBQSxJQUduQjtBQUFBLEVBQ0Y7QUFDQSxNQUFJLEVBQUUsVUFBVSxXQUFXLGVBQWUrbEIsYUFBQUEsV0FBa0IsaUJBQWlCO0FBQ3pFLE1BQUEsRUFBRSxNQUFBbHFCLE9BQU0sVUFBVSxPQUFBLElBQVcsZ0JBQWdCLElBQUksRUFBRSxVQUFVO0FBQ2pFLE1BQUksaUJBQWlCO0FBQ3JCLE1BQUksYUFBYSxLQUFLO0FBQ3BCLHFCQUFpQixhQUFhLE1BQU0sV0FBVyxVQUFVLENBQUMsVUFBVSxRQUFRLENBQUM7QUFBQSxFQUFBO0FBRS9FLFNBQU8sV0FBVyxXQUFXLEVBQUUsVUFBVSxnQkFBZ0IsUUFBUSxNQUFBQSxPQUFNO0FBQ3pFO0FBQ0EsU0FBUyxxQkFBcUI7QUFDckIsU0FBQWtxQixhQUFrQixXQUFBLGVBQWUsS0FBSztBQUMvQztBQUNBLFNBQVMsY0FBYztBQUNyQjtBQUFBLElBQ0UsbUJBQW1CO0FBQUE7QUFBQTtBQUFBLElBR25CO0FBQUEsRUFDRjtBQUNPLFNBQUFBLGFBQWtCLFdBQUEsZUFBZSxFQUFFO0FBQzVDO0FBaUJBLElBQUksd0JBQXdCO0FBQzVCLFNBQVMsMEJBQTBCLElBQUk7QUFDckMsTUFBSSxXQUFXQSxhQUFBQSxXQUFrQixpQkFBaUIsRUFBRTtBQUNwRCxNQUFJLENBQUMsVUFBVTtBQUNiQyxpQkFBQUEsZ0JBQXVCLEVBQUU7QUFBQSxFQUFBO0FBRTdCO0FBQ0EsU0FBUyxjQUFjO0FBQ3JCLE1BQUksRUFBRSxZQUFBLElBQWdCRCx3QkFBa0IsWUFBWTtBQUM3QyxTQUFBLGNBQWMsa0JBQWtCLElBQUksb0JBQW9CO0FBQ2pFO0FBQ0EsU0FBUyxzQkFBc0I7QUFDN0I7QUFBQSxJQUNFLG1CQUFtQjtBQUFBO0FBQUE7QUFBQSxJQUduQjtBQUFBLEVBQ0Y7QUFDSSxNQUFBLG9CQUFvQkEsYUFBTyxXQUFXLGlCQUFpQjtBQUMzRCxNQUFJLEVBQUUsVUFBVSxXQUFXLGVBQWVBLGFBQUFBLFdBQWtCLGlCQUFpQjtBQUM3RSxNQUFJLEVBQUUsU0FBQXZ6QixTQUFBLElBQVl1ekIsd0JBQWtCLFlBQVk7QUFDaEQsTUFBSSxFQUFFLFVBQVUsaUJBQWlCLElBQUksWUFBWTtBQUNqRCxNQUFJLHFCQUFxQixLQUFLLFVBQVUsb0JBQW9CdnpCLFFBQU8sQ0FBQztBQUNoRSxNQUFBLFlBQVl5ekIsYUFBTyxPQUFPLEtBQUs7QUFDbkMsNEJBQTBCLE1BQU07QUFDOUIsY0FBVSxVQUFVO0FBQUEsRUFBQSxDQUNyQjtBQUNELE1BQUksV0FBV0MsYUFBTztBQUFBLElBQ3BCLENBQUMsSUFBSWp6QixXQUFVLE9BQU87QUFDWixjQUFBLFVBQVUsU0FBUyxxQkFBcUI7QUFDNUMsVUFBQSxDQUFDLFVBQVUsUUFBUztBQUNwQixVQUFBLE9BQU8sT0FBTyxVQUFVO0FBQzFCLG1CQUFXLEdBQUcsRUFBRTtBQUNoQjtBQUFBLE1BQUE7QUFFRixVQUFJLE9BQU87QUFBQSxRQUNUO0FBQUEsUUFDQSxLQUFLLE1BQU0sa0JBQWtCO0FBQUEsUUFDN0I7QUFBQSxRQUNBQSxTQUFRLGFBQWE7QUFBQSxNQUN2QjtBQUNJLFVBQUEscUJBQXFCLFFBQVEsYUFBYSxLQUFLO0FBQzVDLGFBQUEsV0FBVyxLQUFLLGFBQWEsTUFBTSxXQUFXLFVBQVUsQ0FBQyxVQUFVLEtBQUssUUFBUSxDQUFDO0FBQUEsTUFBQTtBQUV4RixPQUFDLENBQUMsQ0FBQ0EsU0FBUSxVQUFVLFdBQVcsVUFBVSxXQUFXO0FBQUEsUUFDbkQ7QUFBQSxRQUNBQSxTQUFRO0FBQUEsUUFDUkE7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLElBQ0E7QUFBQSxNQUNFO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQUE7QUFBQSxFQUVKO0FBQ08sU0FBQTtBQUNUO0FBQ29Ca3pCLGFBQUFBLGNBQXFCLElBQUk7QUFXN0MsU0FBUyxZQUFZO0FBQ25CLE1BQUksRUFBRSxTQUFBM3pCLFNBQUEsSUFBWXV6Qix3QkFBa0IsWUFBWTtBQUNoRCxNQUFJLGFBQWF2ekIsU0FBUUEsU0FBUSxTQUFTLENBQUM7QUFDcEMsU0FBQSxhQUFhLFdBQVcsU0FBUyxDQUFDO0FBQzNDO0FBQ0EsU0FBUyxnQkFBZ0IsSUFBSSxFQUFFLFNBQVMsSUFBSSxDQUFBLEdBQUk7QUFDOUMsTUFBSSxFQUFFLFNBQUFBLFNBQUEsSUFBWXV6Qix3QkFBa0IsWUFBWTtBQUNoRCxNQUFJLEVBQUUsVUFBVSxpQkFBaUIsSUFBSSxZQUFZO0FBQ2pELE1BQUkscUJBQXFCLEtBQUssVUFBVSxvQkFBb0J2ekIsUUFBTyxDQUFDO0FBQ3BFLFNBQU80ekIsYUFBTztBQUFBLElBQ1osTUFBTTtBQUFBLE1BQ0o7QUFBQSxNQUNBLEtBQUssTUFBTSxrQkFBa0I7QUFBQSxNQUM3QjtBQUFBLE1BQ0EsYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLENBQUMsSUFBSSxvQkFBb0Isa0JBQWtCLFFBQVE7QUFBQSxFQUNyRDtBQUNGO0FBQ0EsU0FBUyxVQUFVLFFBQVEsYUFBYTtBQUMvQixTQUFBLGNBQWMsUUFBUSxXQUFXO0FBQzFDO0FBQ0EsU0FBUyxjQUFjLFFBQVEsYUFBYSxpQkFBaUIsUUFBUTs7QUFDbkU7QUFBQSxJQUNFLG1CQUFtQjtBQUFBO0FBQUE7QUFBQSxJQUduQjtBQUFBLEVBQ0Y7QUFDQSxNQUFJLEVBQUUsV0FBVyxlQUFlTCxhQUFBQSxXQUFrQixpQkFBaUI7QUFDbkUsTUFBSSxFQUFFLFNBQVMsa0JBQWtCQSxhQUFBQSxXQUFrQixZQUFZO0FBQy9ELE1BQUksYUFBYSxjQUFjLGNBQWMsU0FBUyxDQUFDO0FBQ3ZELE1BQUksZUFBZSxhQUFhLFdBQVcsU0FBUyxDQUFDO0FBQ2pELE1BQUEsaUJBQWlCLGFBQWEsV0FBVyxXQUFXO0FBQ3BELE1BQUEscUJBQXFCLGFBQWEsV0FBVyxlQUFlO0FBQzVELE1BQUEsY0FBYyxjQUFjLFdBQVc7QUFDbEI7QUFDbkIsUUFBQSxhQUFhLGVBQWUsWUFBWSxRQUFRO0FBQ3BEO0FBQUEsTUFDRTtBQUFBLE1BQ0EsQ0FBQyxlQUFlLFdBQVcsU0FBUyxHQUFHLEtBQUssV0FBVyxTQUFTLElBQUk7QUFBQSxNQUNwRSxvRUFBb0UsY0FBYyx5QkFBeUIsVUFBVTtBQUFBO0FBQUEsd0NBRW5GLFVBQVUsc0JBQXNCLGVBQWUsTUFBTSxNQUFNLEdBQUcsVUFBVSxJQUFJO0FBQUEsSUFDaEg7QUFBQSxFQUFBO0FBRUYsTUFBSSxzQkFBc0IsWUFBWTtBQUNsQyxNQUFBO0FBQ0osTUFBSSxhQUFhO0FBQ2YsUUFBSSxvQkFBb0IsT0FBTyxnQkFBZ0IsV0FBVyxVQUFVLFdBQVcsSUFBSTtBQUNuRjtBQUFBLE1BQ0UsdUJBQXVCLFNBQU8sdUJBQWtCLGFBQWxCLG1CQUE0QixXQUFXO0FBQUEsTUFDckUsMk9BQTJPLGtCQUFrQixtQkFBbUIsa0JBQWtCLFFBQVE7QUFBQSxJQUM1UztBQUNXLGVBQUE7QUFBQSxFQUFBLE9BQ047QUFDTSxlQUFBO0FBQUEsRUFBQTtBQUVULE1BQUEsV0FBVyxTQUFTLFlBQVk7QUFDcEMsTUFBSSxvQkFBb0I7QUFDeEIsTUFBSSx1QkFBdUIsS0FBSztBQUM5QixRQUFJLGlCQUFpQixtQkFBbUIsUUFBUSxPQUFPLEVBQUUsRUFBRSxNQUFNLEdBQUc7QUFDcEUsUUFBSSxXQUFXLFNBQVMsUUFBUSxPQUFPLEVBQUUsRUFBRSxNQUFNLEdBQUc7QUFDcEQsd0JBQW9CLE1BQU0sU0FBUyxNQUFNLGVBQWUsTUFBTSxFQUFFLEtBQUssR0FBRztBQUFBLEVBQUE7QUFFMUUsTUFBSXZ6QixXQUFVLFlBQVksUUFBUSxFQUFFLFVBQVUsbUJBQW1CO0FBQ3hDO0FBQ3ZCO0FBQUEsTUFDRSxlQUFlQSxZQUFXO0FBQUEsTUFDMUIsK0JBQStCLFNBQVMsUUFBUSxHQUFHLFNBQVMsTUFBTSxHQUFHLFNBQVMsSUFBSTtBQUFBLElBQ3BGO0FBQ0E7QUFBQSxNQUNFQSxZQUFXLFFBQVFBLFNBQVFBLFNBQVEsU0FBUyxDQUFDLEVBQUUsTUFBTSxZQUFZLFVBQVVBLFNBQVFBLFNBQVEsU0FBUyxDQUFDLEVBQUUsTUFBTSxjQUFjLFVBQVVBLFNBQVFBLFNBQVEsU0FBUyxDQUFDLEVBQUUsTUFBTSxTQUFTO0FBQUEsTUFDaEwsbUNBQW1DLFNBQVMsUUFBUSxHQUFHLFNBQVMsTUFBTSxHQUFHLFNBQVMsSUFBSTtBQUFBLElBQ3hGO0FBQUEsRUFBQTtBQUVGLE1BQUksa0JBQWtCO0FBQUEsSUFDcEJBLFlBQVdBLFNBQVE7QUFBQSxNQUNqQixDQUFDVyxXQUFVLE9BQU8sT0FBTyxDQUFBLEdBQUlBLFFBQU87QUFBQSxRQUNsQyxRQUFRLE9BQU8sT0FBTyxDQUFJLEdBQUEsY0FBY0EsT0FBTSxNQUFNO0FBQUEsUUFDcEQsVUFBVSxVQUFVO0FBQUEsVUFDbEI7QUFBQTtBQUFBLFVBRUEsV0FBVyxpQkFBaUIsV0FBVyxlQUFlQSxPQUFNLFFBQVEsRUFBRSxXQUFXQSxPQUFNO0FBQUEsUUFBQSxDQUN4RjtBQUFBLFFBQ0QsY0FBY0EsT0FBTSxpQkFBaUIsTUFBTSxxQkFBcUIsVUFBVTtBQUFBLFVBQ3hFO0FBQUE7QUFBQSxVQUVBLFdBQVcsaUJBQWlCLFdBQVcsZUFBZUEsT0FBTSxZQUFZLEVBQUUsV0FBV0EsT0FBTTtBQUFBLFFBQzVGLENBQUE7QUFBQSxNQUNGLENBQUE7QUFBQSxJQUNIO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRjtBQUNBLE1BQUksZUFBZSxpQkFBaUI7QUFDbEMsV0FBOEJrekIsNkJBQUE7QUFBQSxNQUM1QixnQkFBZ0I7QUFBQSxNQUNoQjtBQUFBLFFBQ0UsT0FBTztBQUFBLFVBQ0wsVUFBVTtBQUFBLFlBQ1IsVUFBVTtBQUFBLFlBQ1YsUUFBUTtBQUFBLFlBQ1IsTUFBTTtBQUFBLFlBQ04sT0FBTztBQUFBLFlBQ1AsS0FBSztBQUFBLFlBQ0wsR0FBRztBQUFBLFVBQ0w7QUFBQSxVQUNBLGdCQUFnQjtBQUFBO0FBQUEsUUFBQTtBQUFBLE1BRXBCO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFBQSxFQUFBO0FBRUssU0FBQTtBQUNUO0FBQ0EsU0FBUyx3QkFBd0I7QUFDL0IsTUFBSSxRQUFRLGNBQWM7QUFDMUIsTUFBSSxVQUFVLHFCQUFxQixLQUFLLElBQUksR0FBRyxNQUFNLE1BQU0sSUFBSSxNQUFNLFVBQVUsS0FBSyxpQkFBaUIsUUFBUSxNQUFNLFVBQVUsS0FBSyxVQUFVLEtBQUs7QUFDakosTUFBSSxRQUFRLGlCQUFpQixRQUFRLE1BQU0sUUFBUTtBQUNuRCxNQUFJLFlBQVk7QUFDaEIsTUFBSSxZQUFZLEVBQUUsU0FBUyxVQUFVLGlCQUFpQixVQUFVO0FBQ2hFLE1BQUksYUFBYSxFQUFFLFNBQVMsV0FBVyxpQkFBaUIsVUFBVTtBQUNsRSxNQUFJLFVBQVU7QUFDVztBQUNmLFlBQUE7QUFBQSxNQUNOO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFDQSx5REFBK0NDLGFBQUFBLFVBQWlCLGlEQUEyQyxLQUFLLE1BQU0scUJBQW1DLEdBQTBCRCw2QkFBQUEsY0FBYyxLQUFLLE1BQU0sZ0dBQXVIQSw2QkFBQUEsY0FBYyxRQUFRLEVBQUUsT0FBTyxXQUFXLEdBQUcsZUFBZSxHQUFHLE9BQU8sS0FBcUJBLDZCQUFBQSxjQUFxQixRQUFRLEVBQUUsT0FBTyxXQUFBLEdBQWMsY0FBYyxHQUFHLHNCQUFzQixDQUFDO0FBQUEsRUFBQTtBQUU1ZixTQUE4QkEsMkNBQWNDLGFBQUFBLFVBQWlCLE1BQTZCRCw2QkFBQSxjQUFjLE1BQU0sTUFBTSwrQkFBK0IsR0FBbUJBLDZCQUFxQixjQUFBLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxTQUFBLEVBQVcsR0FBRyxPQUFPLEdBQUcsUUFBK0JBLDZCQUFBLGNBQWMsT0FBTyxFQUFFLE9BQU8sVUFBVSxHQUFHLEtBQUssSUFBSSxNQUFNLE9BQU87QUFDalY7QUFDQSxJQUFJLHNCQUFzQ0EsNkJBQUFBLGNBQXFCLHVCQUF1QixJQUFJO0FBQzFGLElBQUksc0JBQXNCLGNBQWNFLGFBQUFBLFVBQWlCO0FBQUEsRUFDdkQsWUFBWSxPQUFPO0FBQ2pCLFVBQU0sS0FBSztBQUNYLFNBQUssUUFBUTtBQUFBLE1BQ1gsVUFBVSxNQUFNO0FBQUEsTUFDaEIsY0FBYyxNQUFNO0FBQUEsTUFDcEIsT0FBTyxNQUFNO0FBQUEsSUFDZjtBQUFBLEVBQUE7QUFBQSxFQUVGLE9BQU8seUJBQXlCLE9BQU87QUFDckMsV0FBTyxFQUFFLE1BQU07QUFBQSxFQUFBO0FBQUEsRUFFakIsT0FBTyx5QkFBeUIsT0FBTyxPQUFPO0FBQ3hDLFFBQUEsTUFBTSxhQUFhLE1BQU0sWUFBWSxNQUFNLGlCQUFpQixVQUFVLE1BQU0saUJBQWlCLFFBQVE7QUFDaEcsYUFBQTtBQUFBLFFBQ0wsT0FBTyxNQUFNO0FBQUEsUUFDYixVQUFVLE1BQU07QUFBQSxRQUNoQixjQUFjLE1BQU07QUFBQSxNQUN0QjtBQUFBLElBQUE7QUFFSyxXQUFBO0FBQUEsTUFDTCxPQUFPLE1BQU0sVUFBVSxTQUFTLE1BQU0sUUFBUSxNQUFNO0FBQUEsTUFDcEQsVUFBVSxNQUFNO0FBQUEsTUFDaEIsY0FBYyxNQUFNLGdCQUFnQixNQUFNO0FBQUEsSUFDNUM7QUFBQSxFQUFBO0FBQUEsRUFFRixrQkFBa0IsT0FBTyxXQUFXO0FBQzFCLFlBQUE7QUFBQSxNQUNOO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBQUEsRUFBQTtBQUFBLEVBRUYsU0FBUztBQUNQLFdBQU8sS0FBSyxNQUFNLFVBQVUsb0RBQThDLGFBQWEsVUFBVSxFQUFFLE9BQU8sS0FBSyxNQUFNLGdCQUF1Q0YsNkJBQUE7QUFBQSxNQUMxSixrQkFBa0I7QUFBQSxNQUNsQjtBQUFBLFFBQ0UsT0FBTyxLQUFLLE1BQU07QUFBQSxRQUNsQixVQUFVLEtBQUssTUFBTTtBQUFBLE1BQUE7QUFBQSxJQUN2QixDQUNELElBQUksS0FBSyxNQUFNO0FBQUEsRUFBQTtBQUVwQjtBQUNBLFNBQVMsY0FBYyxFQUFFLGNBQWMsT0FBQWx6QixRQUFPLFlBQVk7QUFDcEQsTUFBQSxvQkFBb0I0eUIsYUFBTyxXQUFXLGlCQUFpQjtBQUN2RCxNQUFBLHFCQUFxQixrQkFBa0IsVUFBVSxrQkFBa0Isa0JBQWtCNXlCLE9BQU0sTUFBTSxnQkFBZ0JBLE9BQU0sTUFBTSxnQkFBZ0I7QUFDN0gsc0JBQUEsY0FBYyw2QkFBNkJBLE9BQU0sTUFBTTtBQUFBLEVBQUE7QUFFcEQsU0FBQWt6Qiw2QkFBQUEsY0FBcUIsYUFBYSxVQUFVLEVBQUUsT0FBTyxnQkFBZ0IsUUFBUTtBQUN0RztBQUNBLFNBQVMsZUFBZTd6QixVQUFTLGdCQUFnQixDQUFBLEdBQUksa0JBQWtCLE1BQU0sU0FBUyxNQUFNO0FBQzFGLE1BQUlBLFlBQVcsTUFBTTtBQUNuQixRQUFJLENBQUMsaUJBQWlCO0FBQ2IsYUFBQTtBQUFBLElBQUE7QUFFVCxRQUFJLGdCQUFnQixRQUFRO0FBQzFCLE1BQUFBLFdBQVUsZ0JBQWdCO0FBQUEsSUFDNUIsV0FBVyxjQUFjLFdBQVcsS0FBSyxDQUFDLGdCQUFnQixlQUFlLGdCQUFnQixRQUFRLFNBQVMsR0FBRztBQUMzRyxNQUFBQSxXQUFVLGdCQUFnQjtBQUFBLElBQUEsT0FDckI7QUFDRSxhQUFBO0FBQUEsSUFBQTtBQUFBLEVBQ1Q7QUFFRixNQUFJLGtCQUFrQkE7QUFDdEIsTUFBSSxTQUFTLG1EQUFpQjtBQUM5QixNQUFJLFVBQVUsTUFBTTtBQUNsQixRQUFJLGFBQWEsZ0JBQWdCO0FBQUEsTUFDL0IsQ0FBQzdCLE9BQU1BLEdBQUUsTUFBTSxPQUFNLGlDQUFTQSxHQUFFLE1BQU0sU0FBUTtBQUFBLElBQ2hEO0FBQ0E7QUFBQSxNQUNFLGNBQWM7QUFBQSxNQUNkLDREQUE0RCxPQUFPO0FBQUEsUUFDakU7QUFBQSxNQUFBLEVBQ0EsS0FBSyxHQUFHLENBQUM7QUFBQSxJQUNiO0FBQ0Esc0JBQWtCLGdCQUFnQjtBQUFBLE1BQ2hDO0FBQUEsTUFDQSxLQUFLLElBQUksZ0JBQWdCLFFBQVEsYUFBYSxDQUFDO0FBQUEsSUFDakQ7QUFBQSxFQUFBO0FBRUYsTUFBSSxpQkFBaUI7QUFDckIsTUFBSSxnQkFBZ0I7QUFDcEIsTUFBSSxpQkFBaUI7QUFDbkIsYUFBU2hFLEtBQUksR0FBR0EsS0FBSSxnQkFBZ0IsUUFBUUEsTUFBSztBQUMzQyxVQUFBd0csU0FBUSxnQkFBZ0J4RyxFQUFDO0FBQzdCLFVBQUl3RyxPQUFNLE1BQU0sbUJBQW1CQSxPQUFNLE1BQU0sd0JBQXdCO0FBQ3JELHdCQUFBeEc7QUFBQSxNQUFBO0FBRWQsVUFBQXdHLE9BQU0sTUFBTSxJQUFJO0FBQ2xCLFlBQUksRUFBRSxZQUFZLFFBQVEsUUFBWSxJQUFBO0FBQ3RDLFlBQUksbUJBQW1CQSxPQUFNLE1BQU0sVUFBVSxDQUFDLFdBQVcsZUFBZUEsT0FBTSxNQUFNLEVBQUUsTUFBTSxDQUFDLFdBQVcsUUFBUUEsT0FBTSxNQUFNLEVBQUUsTUFBTTtBQUNoSSxZQUFBQSxPQUFNLE1BQU0sUUFBUSxrQkFBa0I7QUFDdkIsMkJBQUE7QUFDakIsY0FBSSxpQkFBaUIsR0FBRztBQUN0Qiw4QkFBa0IsZ0JBQWdCLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQztBQUFBLFVBQUEsT0FDdkQ7QUFDYSw4QkFBQSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFBQSxVQUFBO0FBRXZDO0FBQUEsUUFBQTtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVGLFNBQU8sZ0JBQWdCLFlBQVksQ0FBQyxRQUFRQSxRQUFPOUUsV0FBVTtBQUN2RCxRQUFBO0FBQ0osUUFBSSw4QkFBOEI7QUFDbEMsUUFBSSxlQUFlO0FBQ25CLFFBQUkseUJBQXlCO0FBQzdCLFFBQUksaUJBQWlCO0FBQ1gsY0FBQSxVQUFVOEUsT0FBTSxNQUFNLEtBQUssT0FBT0EsT0FBTSxNQUFNLEVBQUUsSUFBSTtBQUM3QyxxQkFBQUEsT0FBTSxNQUFNLGdCQUFnQjtBQUMzQyxVQUFJLGdCQUFnQjtBQUNkLFlBQUEsZ0JBQWdCLEtBQUs5RSxXQUFVLEdBQUc7QUFDcEM7QUFBQSxZQUNFO0FBQUEsWUFDQTtBQUFBLFlBQ0E7QUFBQSxVQUNGO0FBQzhCLHdDQUFBO0FBQ0wsbUNBQUE7QUFBQSxRQUFBLFdBQ2hCLGtCQUFrQkEsUUFBTztBQUNKLHdDQUFBO0FBQ0wsbUNBQUE4RSxPQUFNLE1BQU0sMEJBQTBCO0FBQUEsUUFBQTtBQUFBLE1BQ2pFO0FBQUEsSUFDRjtBQUVFLFFBQUFxekIsWUFBVyxjQUFjLE9BQU8sZ0JBQWdCLE1BQU0sR0FBR240QixTQUFRLENBQUMsQ0FBQztBQUN2RSxRQUFJbzRCLGVBQWMsTUFBTTtBQUNsQixVQUFBO0FBQ0osVUFBSSxPQUFPO0FBQ0UsbUJBQUE7QUFBQSxpQkFDRiw2QkFBNkI7QUFDM0IsbUJBQUE7QUFBQSxNQUFBLFdBQ0Z0ekIsT0FBTSxNQUFNLFdBQVc7QUFDaEMsbUJBQWtDa3pCLDZCQUFBQSxjQUFjbHpCLE9BQU0sTUFBTSxXQUFXLElBQUk7QUFBQSxNQUFBLFdBQ2xFQSxPQUFNLE1BQU0sU0FBUztBQUM5QixtQkFBV0EsT0FBTSxNQUFNO0FBQUEsTUFBQSxPQUNsQjtBQUNNLG1CQUFBO0FBQUEsTUFBQTtBQUViLGFBQThCa3pCLDZCQUFBO0FBQUEsUUFDNUI7QUFBQSxRQUNBO0FBQUEsVUFDRSxPQUFBbHpCO0FBQUEsVUFDQSxjQUFjO0FBQUEsWUFDWjtBQUFBLFlBQ0EsU0FBU3F6QjtBQUFBLFlBQ1QsYUFBYSxtQkFBbUI7QUFBQSxVQUNsQztBQUFBLFVBQ0E7QUFBQSxRQUFBO0FBQUEsTUFFSjtBQUFBLElBQ0Y7QUFDTyxXQUFBLG9CQUFvQnJ6QixPQUFNLE1BQU0saUJBQWlCQSxPQUFNLE1BQU0sZ0JBQWdCOUUsV0FBVSxLQUE0Qmc0Qiw2QkFBQTtBQUFBLE1BQ3hIO0FBQUEsTUFDQTtBQUFBLFFBQ0UsVUFBVSxnQkFBZ0I7QUFBQSxRQUMxQixjQUFjLGdCQUFnQjtBQUFBLFFBQzlCLFdBQVc7QUFBQSxRQUNYO0FBQUEsUUFDQSxVQUFVSSxhQUFZO0FBQUEsUUFDdEIsY0FBYyxFQUFFLFFBQVEsTUFBTSxTQUFTRCxXQUFVLGFBQWEsS0FBSztBQUFBLE1BQUE7QUFBQSxRQUVuRUMsYUFBWTtBQUFBLEtBQ2YsSUFBSTtBQUNUO0FBQ0EsU0FBUywwQkFBMEIsVUFBVTtBQUMzQyxTQUFPLEdBQUcsUUFBUTtBQUNwQjtBQUNBLFNBQVMscUJBQXFCLFVBQVU7QUFDbEMsTUFBQSxNQUFNVixhQUFPLFdBQVcsaUJBQWlCO0FBQ25DLFlBQUEsS0FBSywwQkFBMEIsUUFBUSxDQUFDO0FBQzNDLFNBQUE7QUFDVDtBQUNBLFNBQVMsbUJBQW1CLFVBQVU7QUFDaEMsTUFBQSxRQUFRQSxhQUFPLFdBQVcsc0JBQXNCO0FBQzFDLFlBQUEsT0FBTywwQkFBMEIsUUFBUSxDQUFDO0FBQzdDLFNBQUE7QUFDVDtBQUNBLFNBQVMsZ0JBQWdCLFVBQVU7QUFDN0IsTUFBQSxRQUFRQSxhQUFPLFdBQVcsWUFBWTtBQUNoQyxZQUFBLE9BQU8sMEJBQTBCLFFBQVEsQ0FBQztBQUM3QyxTQUFBO0FBQ1Q7QUFDQSxTQUFTLGtCQUFrQixVQUFVO0FBQy9CLE1BQUEsUUFBUSxnQkFBZ0IsUUFBUTtBQUNwQyxNQUFJLFlBQVksTUFBTSxRQUFRLE1BQU0sUUFBUSxTQUFTLENBQUM7QUFDdEQ7QUFBQSxJQUNFLFVBQVUsTUFBTTtBQUFBLElBQ2hCLEdBQUcsUUFBUTtBQUFBLEVBQ2I7QUFDQSxTQUFPLFVBQVUsTUFBTTtBQUN6QjtBQUNBLFNBQVMsYUFBYTtBQUNiLFNBQUE7QUFBQSxJQUFrQjtBQUFBO0FBQUEsRUFBNkI7QUFDeEQ7QUF5Q0EsU0FBUyxnQkFBZ0I7O0FBQ25CLE1BQUEsUUFBUUEsYUFBTyxXQUFXLGlCQUFpQjtBQUMvQyxNQUFJLFFBQVE7QUFBQSxJQUFtQjtBQUFBO0FBQUEsRUFBbUM7QUFDbEUsTUFBSSxVQUFVO0FBQUEsSUFBa0I7QUFBQTtBQUFBLEVBQW1DO0FBQ25FLE1BQUksVUFBVSxRQUFRO0FBQ2IsV0FBQTtBQUFBLEVBQUE7QUFFRixVQUFBLFdBQU0sV0FBTixtQkFBZTtBQUN4QjtBQWlEQSxTQUFTLG9CQUFvQjtBQUN2QixNQUFBLEVBQUUsV0FBVztBQUFBLElBQXFCO0FBQUE7QUFBQSxFQUFxQztBQUMzRSxNQUFJLEtBQUs7QUFBQSxJQUFrQjtBQUFBO0FBQUEsRUFBcUM7QUFDNUQsTUFBQSxZQUFZRSxhQUFPLE9BQU8sS0FBSztBQUNuQyw0QkFBMEIsTUFBTTtBQUM5QixjQUFVLFVBQVU7QUFBQSxFQUFBLENBQ3JCO0FBQ0QsTUFBSSxXQUFXQyxhQUFPO0FBQUEsSUFDcEIsT0FBTyxJQUFJanpCLFdBQVUsT0FBTztBQUNsQixjQUFBLFVBQVUsU0FBUyxxQkFBcUI7QUFDNUMsVUFBQSxDQUFDLFVBQVUsUUFBUztBQUNwQixVQUFBLE9BQU8sT0FBTyxVQUFVO0FBQzFCLGVBQU8sU0FBUyxFQUFFO0FBQUEsTUFBQSxPQUNiO0FBQ0MsY0FBQSxPQUFPLFNBQVMsSUFBSSxFQUFFLGFBQWEsSUFBSSxHQUFHQSxVQUFTO0FBQUEsTUFBQTtBQUFBLElBRTdEO0FBQUEsSUFDQSxDQUFDLFFBQVEsRUFBRTtBQUFBLEVBQ2I7QUFDTyxTQUFBO0FBQ1Q7QUFDQSxJQUFJLGdCQUFnQixDQUFDO0FBQ3JCLFNBQVMsWUFBWSxLQUFLLE1BQU0sU0FBUztBQUN2QyxNQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsR0FBRyxHQUFHO0FBQ2hDLGtCQUFjLEdBQUcsSUFBSTtBQUNyQixZQUFRLE9BQU8sT0FBTztBQUFBLEVBQUE7QUFFMUI7QUEwUXlCeXpCLGFBQUFBLEtBQVksVUFBVTtBQUMvQyxTQUFTLFdBQVc7QUFBQSxFQUNsQjtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0YsR0FBRztBQUNELFNBQU8sY0FBYyxRQUFRLFFBQVEsT0FBTyxNQUFNO0FBQ3BEO0FBeUVBLFNBQVMsTUFBTSxRQUFRO0FBQ3JCO0FBQUEsSUFDRTtBQUFBLElBQ0E7QUFBQSxFQUNGO0FBQ0Y7QUFDQSxTQUFTLE9BQU87QUFBQSxFQUNkLFVBQVUsZUFBZTtBQUFBLEVBQ3pCLFdBQVc7QUFBQSxFQUNYLFVBQVU7QUFBQSxFQUNWLGlCQUFpQjtBQUFBLEVBQ2pCLFdBQVc7QUFBQSxFQUNYLFFBQVEsYUFBYTtBQUN2QixHQUFHO0FBQ0Q7QUFBQSxJQUNFLENBQUMsbUJBQW1CO0FBQUEsSUFDcEI7QUFBQSxFQUNGO0FBQ0EsTUFBSSxXQUFXLGFBQWEsUUFBUSxRQUFRLEdBQUc7QUFDL0MsTUFBSSxvQkFBb0JDLGFBQU87QUFBQSxJQUM3QixPQUFPO0FBQUEsTUFDTDtBQUFBLE1BQ0EsV0FBVztBQUFBLE1BQ1gsUUFBUTtBQUFBLE1BQ1IsUUFBUSxDQUFBO0FBQUEsSUFBQztBQUFBLElBRVgsQ0FBQyxVQUFVLFlBQVksVUFBVTtBQUFBLEVBQ25DO0FBQ0ksTUFBQSxPQUFPLGlCQUFpQixVQUFVO0FBQ3BDLG1CQUFlLFVBQVUsWUFBWTtBQUFBLEVBQUE7QUFFbkMsTUFBQTtBQUFBLElBQ0YsV0FBVztBQUFBLElBQ1gsU0FBUztBQUFBLElBQ1QsTUFBQTlxQixRQUFPO0FBQUEsSUFDUCxRQUFRO0FBQUEsSUFDUixNQUFNO0FBQUEsRUFBQSxJQUNKO0FBQ0EsTUFBQSxrQkFBa0I4cUIsYUFBQUEsUUFBZSxNQUFNO0FBQ3JDLFFBQUEsbUJBQW1CLGNBQWMsVUFBVSxRQUFRO0FBQ3ZELFFBQUksb0JBQW9CLE1BQU07QUFDckIsYUFBQTtBQUFBLElBQUE7QUFFRixXQUFBO0FBQUEsTUFDTCxVQUFVO0FBQUEsUUFDUixVQUFVO0FBQUEsUUFDVjtBQUFBLFFBQ0EsTUFBQTlxQjtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsTUFDRjtBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBQUEsRUFBQSxHQUNDLENBQUMsVUFBVSxVQUFVLFFBQVFBLE9BQU0sT0FBTyxLQUFLLGNBQWMsQ0FBQztBQUNqRTtBQUFBLElBQ0UsbUJBQW1CO0FBQUEsSUFDbkIscUJBQXFCLFFBQVEsb0NBQW9DLFFBQVEsR0FBRyxNQUFNLEdBQUdBLEtBQUk7QUFBQSxFQUMzRjtBQUNBLE1BQUksbUJBQW1CLE1BQU07QUFDcEIsV0FBQTtBQUFBLEVBQUE7QUFFVCxzQ0FBNEMsY0FBQSxrQkFBa0IsVUFBVSxFQUFFLE9BQU8sa0JBQWtCLEdBQTBCK3FCLDZCQUFBLGNBQWMsZ0JBQWdCLFVBQVUsRUFBRSxVQUFVLE9BQU8sZ0JBQWlCLENBQUEsQ0FBQztBQUM1TTtBQUNBLFNBQVMsT0FBTztBQUFBLEVBQ2Q7QUFBQSxFQUNBO0FBQ0YsR0FBRztBQUNELFNBQU8sVUFBVSx5QkFBeUIsUUFBUSxHQUFHLFFBQVE7QUFDL0Q7QUFxRUEsU0FBUyx5QkFBeUIsVUFBVSxhQUFhLElBQUk7QUFDM0QsTUFBSSxTQUFTLENBQUM7QUFDZEMsZUFBQUEsU0FBZ0IsUUFBUSxVQUFVLENBQUMsU0FBU3g0QixXQUFVO0FBQ3BELFFBQUksQ0FBQ3k0QixhQUFBQSxlQUFzQixPQUFPLEdBQUc7QUFDbkM7QUFBQSxJQUFBO0FBRUYsUUFBSSxXQUFXLENBQUMsR0FBRyxZQUFZejRCLE1BQUs7QUFDaEMsUUFBQSxRQUFRLFNBQVMwNEIsdUJBQWlCO0FBQ3BDLGFBQU8sS0FBSztBQUFBLFFBQ1Y7QUFBQSxRQUNBLHlCQUF5QixRQUFRLE1BQU0sVUFBVSxRQUFRO0FBQUEsTUFDM0Q7QUFDQTtBQUFBLElBQUE7QUFFRjtBQUFBLE1BQ0UsUUFBUSxTQUFTO0FBQUEsTUFDakIsSUFBSSxPQUFPLFFBQVEsU0FBUyxXQUFXLFFBQVEsT0FBTyxRQUFRLEtBQUssSUFBSTtBQUFBLElBQ3pFO0FBQ0E7QUFBQSxNQUNFLENBQUMsUUFBUSxNQUFNLFNBQVMsQ0FBQyxRQUFRLE1BQU07QUFBQSxNQUN2QztBQUFBLElBQ0Y7QUFDQSxRQUFJLFFBQVE7QUFBQSxNQUNWLElBQUksUUFBUSxNQUFNLE1BQU0sU0FBUyxLQUFLLEdBQUc7QUFBQSxNQUN6QyxlQUFlLFFBQVEsTUFBTTtBQUFBLE1BQzdCLFNBQVMsUUFBUSxNQUFNO0FBQUEsTUFDdkIsV0FBVyxRQUFRLE1BQU07QUFBQSxNQUN6QixPQUFPLFFBQVEsTUFBTTtBQUFBLE1BQ3JCLE1BQU0sUUFBUSxNQUFNO0FBQUEsTUFDcEIsUUFBUSxRQUFRLE1BQU07QUFBQSxNQUN0QixRQUFRLFFBQVEsTUFBTTtBQUFBLE1BQ3RCLHdCQUF3QixRQUFRLE1BQU07QUFBQSxNQUN0QyxpQkFBaUIsUUFBUSxNQUFNO0FBQUEsTUFDL0IsY0FBYyxRQUFRLE1BQU07QUFBQSxNQUM1QixlQUFlLFFBQVEsTUFBTTtBQUFBLE1BQzdCLGtCQUFrQixRQUFRLE1BQU0scUJBQXFCLFFBQVEsUUFBUSxNQUFNLGlCQUFpQixRQUFRLFFBQVEsTUFBTSxnQkFBZ0I7QUFBQSxNQUNsSSxrQkFBa0IsUUFBUSxNQUFNO0FBQUEsTUFDaEMsUUFBUSxRQUFRLE1BQU07QUFBQSxNQUN0QixNQUFNLFFBQVEsTUFBTTtBQUFBLElBQ3RCO0FBQ0ksUUFBQSxRQUFRLE1BQU0sVUFBVTtBQUMxQixZQUFNLFdBQVc7QUFBQSxRQUNmLFFBQVEsTUFBTTtBQUFBLFFBQ2Q7QUFBQSxNQUNGO0FBQUEsSUFBQTtBQUVGLFdBQU8sS0FBSyxLQUFLO0FBQUEsRUFBQSxDQUNsQjtBQUNNLFNBQUE7QUFDVDtBQVVBLElBQUksZ0JBQWdCO0FBQ3BCLElBQUksaUJBQWlCO0FBQ3JCLFNBQVMsY0FBYyxRQUFRO0FBQzdCLFNBQU8sVUFBVSxRQUFRLE9BQU8sT0FBTyxZQUFZO0FBQ3JEO0FBQ0EsU0FBUyxnQkFBZ0IsUUFBUTtBQUMvQixTQUFPLGNBQWMsTUFBTSxLQUFLLE9BQU8sUUFBUSxrQkFBa0I7QUFDbkU7QUFDQSxTQUFTLGNBQWMsUUFBUTtBQUM3QixTQUFPLGNBQWMsTUFBTSxLQUFLLE9BQU8sUUFBUSxrQkFBa0I7QUFDbkU7QUFDQSxTQUFTLGVBQWUsUUFBUTtBQUM5QixTQUFPLGNBQWMsTUFBTSxLQUFLLE9BQU8sUUFBUSxrQkFBa0I7QUFDbkU7QUFDQSxTQUFTLGdCQUFnQixPQUFPO0FBQ3ZCLFNBQUEsQ0FBQyxFQUFFLE1BQU0sV0FBVyxNQUFNLFVBQVUsTUFBTSxXQUFXLE1BQU07QUFDcEU7QUFDQSxTQUFTLHVCQUF1QixPQUFPLFFBQVE7QUFDN0MsU0FBTyxNQUFNLFdBQVc7QUFBQSxHQUN2QixDQUFDLFVBQVUsV0FBVztBQUFBLEVBQ3ZCLENBQUMsZ0JBQWdCLEtBQUs7QUFDeEI7QUF3QkEsSUFBSSw2QkFBNkI7QUFDakMsU0FBUywrQkFBK0I7QUFDdEMsTUFBSSwrQkFBK0IsTUFBTTtBQUNuQyxRQUFBO0FBQ0UsVUFBQTtBQUFBLFFBQ0YsU0FBUyxjQUFjLE1BQU07QUFBQTtBQUFBLFFBRTdCO0FBQUEsTUFDRjtBQUM2QixtQ0FBQTtBQUFBLGFBQ3RCajVCLElBQUc7QUFDbUIsbUNBQUE7QUFBQSxJQUFBO0FBQUEsRUFDL0I7QUFFSyxTQUFBO0FBQ1Q7QUFDQSxJQUFJLDRDQUE0QyxJQUFJO0FBQUEsRUFDbEQ7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGLENBQUM7QUFDRCxTQUFTLGVBQWUsU0FBUztBQUMvQixNQUFJLFdBQVcsUUFBUSxDQUFDLHNCQUFzQixJQUFJLE9BQU8sR0FBRztBQUMxRDtBQUFBLE1BQ0U7QUFBQSxNQUNBLElBQUksT0FBTyx1RkFBdUYsY0FBYztBQUFBLElBQ2xIO0FBQ08sV0FBQTtBQUFBLEVBQUE7QUFFRixTQUFBO0FBQ1Q7QUFDQSxTQUFTLHNCQUFzQixRQUFRLFVBQVU7QUFDM0MsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBO0FBQ0EsTUFBQTtBQUNBLE1BQUE7QUFDQSxNQUFBLGNBQWMsTUFBTSxHQUFHO0FBQ3JCLFFBQUE4ZixRQUFPLE9BQU8sYUFBYSxRQUFRO0FBQ3ZDLGFBQVNBLFFBQU8sY0FBY0EsT0FBTSxRQUFRLElBQUk7QUFDdkMsYUFBQSxPQUFPLGFBQWEsUUFBUSxLQUFLO0FBQzFDLGNBQVUsZUFBZSxPQUFPLGFBQWEsU0FBUyxDQUFDLEtBQUs7QUFDakQsZUFBQSxJQUFJLFNBQVMsTUFBTTtBQUFBLEVBQ3JCLFdBQUEsZ0JBQWdCLE1BQU0sS0FBSyxlQUFlLE1BQU0sTUFBTSxPQUFPLFNBQVMsWUFBWSxPQUFPLFNBQVMsVUFBVTtBQUNySCxRQUFJLE9BQU8sT0FBTztBQUNsQixRQUFJLFFBQVEsTUFBTTtBQUNoQixZQUFNLElBQUk7QUFBQSxRQUNSO0FBQUEsTUFDRjtBQUFBLElBQUE7QUFFRixRQUFJQSxRQUFPLE9BQU8sYUFBYSxZQUFZLEtBQUssS0FBSyxhQUFhLFFBQVE7QUFDMUUsYUFBU0EsUUFBTyxjQUFjQSxPQUFNLFFBQVEsSUFBSTtBQUNoRCxhQUFTLE9BQU8sYUFBYSxZQUFZLEtBQUssS0FBSyxhQUFhLFFBQVEsS0FBSztBQUNuRSxjQUFBLGVBQWUsT0FBTyxhQUFhLGFBQWEsQ0FBQyxLQUFLLGVBQWUsS0FBSyxhQUFhLFNBQVMsQ0FBQyxLQUFLO0FBQ3JHLGVBQUEsSUFBSSxTQUFTLE1BQU0sTUFBTTtBQUNoQyxRQUFBLENBQUMsZ0NBQWdDO0FBQ25DLFVBQUksRUFBRSxNQUFNLE1BQUFsYyxPQUFNLE1BQVUsSUFBQTtBQUM1QixVQUFJQSxVQUFTLFNBQVM7QUFDcEIsWUFBSStNLFVBQVMsT0FBTyxHQUFHLElBQUksTUFBTTtBQUNqQyxpQkFBUyxPQUFPLEdBQUdBLE9BQU0sS0FBSyxHQUFHO0FBQ2pDLGlCQUFTLE9BQU8sR0FBR0EsT0FBTSxLQUFLLEdBQUc7QUFBQSxpQkFDeEIsTUFBTTtBQUNOLGlCQUFBLE9BQU8sTUFBTSxLQUFLO0FBQUEsTUFBQTtBQUFBLElBQzdCO0FBQUEsRUFDRixXQUNTLGNBQWMsTUFBTSxHQUFHO0FBQ2hDLFVBQU0sSUFBSTtBQUFBLE1BQ1I7QUFBQSxJQUNGO0FBQUEsRUFBQSxPQUNLO0FBQ0ksYUFBQTtBQUNBLGFBQUE7QUFDQyxjQUFBO0FBQ0gsV0FBQTtBQUFBLEVBQUE7QUFFTCxNQUFBLFlBQVksWUFBWSxjQUFjO0FBQ2pDLFdBQUE7QUFDSSxlQUFBO0FBQUEsRUFBQTtBQUVOLFNBQUEsRUFBRSxRQUFRLFFBQVEsT0FBTyxlQUFlLFNBQVMsVUFBVSxLQUFLO0FBQ3pFO0FBTUEsU0FBUyxXQUFXLE9BQU8sU0FBUztBQUNsQyxNQUFJLFVBQVUsU0FBUyxVQUFVLFFBQVEsT0FBTyxVQUFVLGFBQWE7QUFDL0QsVUFBQSxJQUFJLE1BQU0sT0FBTztBQUFBLEVBQUE7QUFFM0I7QUFHQSxlQUFlLGdCQUFnQixPQUFPLG1CQUFtQjtBQUNuRCxNQUFBLE1BQU0sTUFBTSxtQkFBbUI7QUFDMUIsV0FBQSxrQkFBa0IsTUFBTSxFQUFFO0FBQUEsRUFBQTtBQUUvQixNQUFBO0FBQ0YsUUFBSSxjQUFjLE1BQU07QUFBQTtBQUFBO0FBQUEsTUFHdEIsTUFBTTtBQUFBO0FBRVUsc0JBQUEsTUFBTSxFQUFFLElBQUk7QUFDdkIsV0FBQTtBQUFBLFdBQ0EsT0FBTztBQUNOLFlBQUE7QUFBQSxNQUNOLGdDQUFnQyxNQUFNLE1BQU07QUFBQSxJQUM5QztBQUNBLFlBQVEsTUFBTSxLQUFLO0FBQ2YsUUFBQSxPQUFPLHdCQUF3QixPQUFPLHFCQUFxQjtBQUFBLElBQy9ELFFBQWlCO0FBQ1QsWUFBQTtBQUFBLElBQUE7QUFFUixXQUFPLFNBQVMsT0FBTztBQUNoQixXQUFBLElBQUksUUFBUSxNQUFNO0FBQUEsSUFBQSxDQUN4QjtBQUFBLEVBQUE7QUFFTDtBQStEQSxTQUFTLHFCQUFxQixRQUFRO0FBQ3BDLE1BQUksVUFBVSxNQUFNO0FBQ1gsV0FBQTtBQUFBLEVBQUE7QUFFTCxNQUFBLE9BQU8sUUFBUSxNQUFNO0FBQ2hCLFdBQUEsT0FBTyxRQUFRLGFBQWEsT0FBTyxPQUFPLGdCQUFnQixZQUFZLE9BQU8sT0FBTyxlQUFlO0FBQUEsRUFBQTtBQUU1RyxTQUFPLE9BQU8sT0FBTyxRQUFRLFlBQVksT0FBTyxPQUFPLFNBQVM7QUFDbEU7QUFDQSxlQUFlLHNCQUFzQmpNLFVBQVMsVUFBVSxjQUFjO0FBQ2hFLE1BQUEsUUFBUSxNQUFNLFFBQVE7QUFBQSxJQUN4QkEsU0FBUSxJQUFJLE9BQU9XLFdBQVU7QUFDM0IsVUFBSSxRQUFRLFNBQVMsT0FBT0EsT0FBTSxNQUFNLEVBQUU7QUFDMUMsVUFBSSxPQUFPO0FBQ1QsWUFBSSxNQUFNLE1BQU0sZ0JBQWdCLE9BQU8sWUFBWTtBQUNuRCxlQUFPLElBQUksUUFBUSxJQUFJLFVBQVUsQ0FBQztBQUFBLE1BQUE7QUFFcEMsYUFBTyxDQUFDO0FBQUEsSUFDVCxDQUFBO0FBQUEsRUFDSDtBQUNPLFNBQUE7QUFBQSxJQUNMLE1BQU0sS0FBSyxDQUFDLEVBQUUsT0FBTyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsU0FBUyxLQUFLLFFBQVEsZ0JBQWdCLEtBQUssUUFBUSxTQUFTLEVBQUU7QUFBQSxNQUMvRyxDQUFDLFNBQVMsS0FBSyxRQUFRLGVBQWUsRUFBRSxHQUFHLE1BQU0sS0FBSyxZQUFZLElBQUksUUFBUSxJQUFJLEVBQUUsR0FBRyxNQUFNLEtBQUssV0FBVztBQUFBLElBQUE7QUFBQSxFQUVqSDtBQUNGO0FBQ0EsU0FBUyxzQkFBc0IsTUFBTSxhQUFhLGdCQUFnQixVQUFVLFVBQVUsTUFBTTtBQUN0RixNQUFBLFFBQVEsQ0FBQ0EsUUFBTzlFLFdBQVU7QUFDNUIsUUFBSSxDQUFDLGVBQWVBLE1BQUssRUFBVSxRQUFBO0FBQ25DLFdBQU84RSxPQUFNLE1BQU0sT0FBTyxlQUFlOUUsTUFBSyxFQUFFLE1BQU07QUFBQSxFQUN4RDtBQUNJLE1BQUEsbUJBQW1CLENBQUM4RSxRQUFPOUUsV0FBVTs7QUFDdkM7QUFBQTtBQUFBLE1BRUUsZUFBZUEsTUFBSyxFQUFFLGFBQWE4RSxPQUFNO0FBQUE7QUFBQSxRQUV6QyxvQkFBZTlFLE1BQUssRUFBRSxNQUFNLFNBQTVCLG1CQUFrQyxTQUFTLFNBQVEsZUFBZUEsTUFBSyxFQUFFLE9BQU8sR0FBRyxNQUFNOEUsT0FBTSxPQUFPLEdBQUc7QUFBQTtBQUFBLEVBRTdHO0FBQ0EsTUFBSSxTQUFTLFVBQVU7QUFDckIsV0FBTyxZQUFZO0FBQUEsTUFDakIsQ0FBQ0EsUUFBTzlFLFdBQVUsTUFBTThFLFFBQU85RSxNQUFLLEtBQUssaUJBQWlCOEUsUUFBTzlFLE1BQUs7QUFBQSxJQUN4RTtBQUFBLEVBQUE7QUFFRixNQUFJLFNBQVMsUUFBUTtBQUNuQixXQUFPLFlBQVksT0FBTyxDQUFDOEUsUUFBTzlFLFdBQVU7O0FBQzFDLFVBQUksZ0JBQWdCLFNBQVMsT0FBTzhFLE9BQU0sTUFBTSxFQUFFO0FBQ2xELFVBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLFdBQVc7QUFDdkMsZUFBQTtBQUFBLE1BQUE7QUFFVCxVQUFJLE1BQU1BLFFBQU85RSxNQUFLLEtBQUssaUJBQWlCOEUsUUFBTzlFLE1BQUssR0FBRztBQUNsRCxlQUFBO0FBQUEsTUFBQTtBQUVMLFVBQUE4RSxPQUFNLE1BQU0sa0JBQWtCO0FBQzVCLFlBQUEsY0FBY0EsT0FBTSxNQUFNLGlCQUFpQjtBQUFBLFVBQzdDLFlBQVksSUFBSTtBQUFBLFlBQ2QsU0FBUyxXQUFXLFNBQVMsU0FBUyxTQUFTO0FBQUEsWUFDL0MsT0FBTztBQUFBLFVBQ1Q7QUFBQSxVQUNBLGlCQUFlLG9CQUFlLENBQUMsTUFBaEIsbUJBQW1CLFdBQVUsQ0FBQztBQUFBLFVBQzdDLFNBQVMsSUFBSSxJQUFJLE1BQU0sT0FBTyxNQUFNO0FBQUEsVUFDcEMsWUFBWUEsT0FBTTtBQUFBLFVBQ2xCLHlCQUF5QjtBQUFBLFFBQUEsQ0FDMUI7QUFDRyxZQUFBLE9BQU8sZ0JBQWdCLFdBQVc7QUFDN0IsaUJBQUE7QUFBQSxRQUFBO0FBQUEsTUFDVDtBQUVLLGFBQUE7QUFBQSxJQUFBLENBQ1I7QUFBQSxFQUFBO0FBRUgsU0FBTyxDQUFDO0FBQ1Y7QUFDQSxTQUFTLG1CQUFtQlgsVUFBUyxlQUFlO0FBQzNDLFNBQUE7QUFBQSxJQUNMQSxTQUFRLElBQUksQ0FBQ1csV0FBVTtBQUNyQixVQUFJLFFBQVEsY0FBYyxPQUFPQSxPQUFNLE1BQU0sRUFBRTtBQUMzQyxVQUFBLENBQUMsTUFBTyxRQUFPLENBQUM7QUFDaEIsVUFBQSxRQUFRLENBQUMsTUFBTSxNQUFNO0FBQ3pCLFVBQUksTUFBTSxTQUFTO0FBQ1QsZ0JBQUEsTUFBTSxPQUFPLE1BQU0sT0FBTztBQUFBLE1BQUE7QUFFN0IsYUFBQTtBQUFBLElBQUEsQ0FDUixFQUFFLEtBQUssQ0FBQztBQUFBLEVBQ1g7QUFDRjtBQWNBLFNBQVMsWUFBWSxPQUFPO0FBQzFCLFNBQU8sQ0FBQyxHQUFHLElBQUksSUFBSSxLQUFLLENBQUM7QUFDM0I7QUFDQSxTQUFTLFNBQVMsS0FBSztBQUNyQixNQUFJLFNBQVMsQ0FBQztBQUNkLE1BQUksT0FBTyxPQUFPLEtBQUssR0FBRyxFQUFFLEtBQUs7QUFDakMsV0FBUyxPQUFPLE1BQU07QUFDYixXQUFBLEdBQUcsSUFBSSxJQUFJLEdBQUc7QUFBQSxFQUFBO0FBRWhCLFNBQUE7QUFDVDtBQUNBLFNBQVMsc0JBQXNCZCxjQUFhLFVBQVU7QUFDaEQsTUFBQXRGLDJCQUEwQixJQUFJO0FBQ2hCLE1BQUksSUFBSSxRQUFRO0FBQ2xDLFNBQU9zRixhQUFZLE9BQU8sQ0FBQyxTQUFTLGVBQWU7QUFLakQsUUFBSSxNQUFNLEtBQUssVUFBVSxTQUFTLFVBQVUsQ0FBQztBQUM3QyxRQUFJLENBQUN0RixLQUFJLElBQUksR0FBRyxHQUFHO0FBQ2pCLE1BQUFBLEtBQUksSUFBSSxHQUFHO0FBQ1gsY0FBUSxLQUFLLEVBQUUsS0FBSyxNQUFNLFlBQVk7QUFBQSxJQUFBO0FBRWpDLFdBQUE7QUFBQSxFQUNULEdBQUcsRUFBRTtBQUNQO0FBc1JBLFNBQVMsZUFBZSxRQUFRO0FBQzlCLE1BQUksTUFBTSxPQUFPLFdBQVcsV0FBVyxJQUFJO0FBQUEsSUFDekM7QUFBQTtBQUFBO0FBQUEsSUFHQSxPQUFPLFdBQVcsY0FBYywwQkFBMEIsT0FBTyxTQUFTO0FBQUEsRUFBQSxJQUN4RTtBQUNBLE1BQUEsSUFBSSxhQUFhLEtBQUs7QUFDeEIsUUFBSSxXQUFXO0FBQUEsRUFBQSxPQUNWO0FBQ0wsUUFBSSxXQUFXLEdBQUcsSUFBSSxTQUFTLFFBQVEsT0FBTyxFQUFFLENBQUM7QUFBQSxFQUFBO0FBRTVDLFNBQUE7QUFDVDtBQW91QkEsU0FBUyx3QkFBd0I7QUFDM0IsTUFBQSxVQUFVaTZCLGFBQU8sV0FBVyxpQkFBaUI7QUFDakQ7QUFBQSxJQUNFO0FBQUEsSUFDQTtBQUFBLEVBQ0Y7QUFDTyxTQUFBO0FBQ1Q7QUFDQSxTQUFTLDRCQUE0QjtBQUMvQixNQUFBLFVBQVVBLGFBQU8sV0FBVyxzQkFBc0I7QUFDdEQ7QUFBQSxJQUNFO0FBQUEsSUFDQTtBQUFBLEVBQ0Y7QUFDTyxTQUFBO0FBQ1Q7QUFDQSxJQUFJLG1CQUFtQkMsYUFBQUEsY0FBcUIsTUFBTTtBQUNsRCxpQkFBaUIsY0FBYztBQUMvQixTQUFTLHNCQUFzQjtBQUN6QixNQUFBLFVBQVVELGFBQU8sV0FBVyxnQkFBZ0I7QUFDaEQ7QUFBQSxJQUNFO0FBQUEsSUFDQTtBQUFBLEVBQ0Y7QUFDTyxTQUFBO0FBQ1Q7QUFDQSxTQUFTLG9CQUFvQixVQUFVLG1CQUFtQjtBQUNwRCxNQUFBLG1CQUFtQkEsYUFBTyxXQUFXLGdCQUFnQjtBQUN6RCxNQUFJLENBQUMsZUFBZSxnQkFBZ0IsSUFBSUUsYUFBQUEsU0FBZ0IsS0FBSztBQUM3RCxNQUFJLENBQUMsZ0JBQWdCLGlCQUFpQixJQUFJQSxhQUFBQSxTQUFnQixLQUFLO0FBQy9ELE1BQUksRUFBRSxTQUFBNWMsVUFBUyxRQUFRLGNBQWMsY0FBYyxpQkFBaUI7QUFDaEUsTUFBQW5LLE9BQU1nbkIsYUFBTyxPQUFPLElBQUk7QUFDNUJDLGVBQUFBLFVBQWlCLE1BQU07QUFDckIsUUFBSSxhQUFhLFVBQVU7QUFDekIsd0JBQWtCLElBQUk7QUFBQSxJQUFBO0FBRXhCLFFBQUksYUFBYSxZQUFZO0FBQ3ZCLFVBQUEsV0FBVyxDQUFDLFlBQVk7QUFDbEIsZ0JBQUEsUUFBUSxDQUFDLFVBQVU7QUFDekIsNEJBQWtCLE1BQU0sY0FBYztBQUFBLFFBQUEsQ0FDdkM7QUFBQSxNQUNIO0FBQ0EsVUFBSSxXQUFXLElBQUkscUJBQXFCLFVBQVUsRUFBRSxXQUFXLEtBQUs7QUFDcEUsVUFBSWpuQixLQUFJLFFBQWtCLFVBQUEsUUFBUUEsS0FBSSxPQUFPO0FBQzdDLGFBQU8sTUFBTTtBQUNYLGlCQUFTLFdBQVc7QUFBQSxNQUN0QjtBQUFBLElBQUE7QUFBQSxFQUNGLEdBQ0MsQ0FBQyxRQUFRLENBQUM7QUFDYmluQixlQUFBQSxVQUFpQixNQUFNO0FBQ3JCLFFBQUksZUFBZTtBQUNiLFVBQUEsS0FBSyxXQUFXLE1BQU07QUFDeEIsMEJBQWtCLElBQUk7QUFBQSxTQUNyQixHQUFHO0FBQ04sYUFBTyxNQUFNO0FBQ1gscUJBQWEsRUFBRTtBQUFBLE1BQ2pCO0FBQUEsSUFBQTtBQUFBLEVBQ0YsR0FDQyxDQUFDLGFBQWEsQ0FBQztBQUNsQixNQUFJLFlBQVksTUFBTTtBQUNwQixxQkFBaUIsSUFBSTtBQUFBLEVBQ3ZCO0FBQ0EsTUFBSSxlQUFlLE1BQU07QUFDdkIscUJBQWlCLEtBQUs7QUFDdEIsc0JBQWtCLEtBQUs7QUFBQSxFQUN6QjtBQUNBLE1BQUksQ0FBQyxrQkFBa0I7QUFDckIsV0FBTyxDQUFDLE9BQU9qbkIsTUFBSyxFQUFFO0FBQUEsRUFBQTtBQUV4QixNQUFJLGFBQWEsVUFBVTtBQUN6QixXQUFPLENBQUMsZ0JBQWdCQSxNQUFLLEVBQUU7QUFBQSxFQUFBO0FBRTFCLFNBQUE7QUFBQSxJQUNMO0FBQUEsSUFDQUE7QUFBQSxJQUNBO0FBQUEsTUFDRSxTQUFTLHFCQUFxQm1LLFVBQVMsU0FBUztBQUFBLE1BQ2hELFFBQVEscUJBQXFCLFFBQVEsWUFBWTtBQUFBLE1BQ2pELGNBQWMscUJBQXFCLGNBQWMsU0FBUztBQUFBLE1BQzFELGNBQWMscUJBQXFCLGNBQWMsWUFBWTtBQUFBLE1BQzdELGNBQWMscUJBQXFCLGNBQWMsU0FBUztBQUFBLElBQUE7QUFBQSxFQUU5RDtBQUNGO0FBQ0EsU0FBUyxxQkFBcUIsY0FBYyxZQUFZO0FBQ3RELFNBQU8sQ0FBQyxVQUFVO0FBQ2hCLG9CQUFnQixhQUFhLEtBQUs7QUFDOUIsUUFBQSxDQUFDLE1BQU0sa0JBQWtCO0FBQzNCLGlCQUFXLEtBQUs7QUFBQSxJQUFBO0FBQUEsRUFFcEI7QUFDRjtBQXVCQSxTQUFTLGtCQUFrQjtBQUFBLEVBQ3pCO0FBQUEsRUFDQSxHQUFHO0FBQ0wsR0FBRztBQUNHLE1BQUEsRUFBRSxPQUFPLElBQUksc0JBQXNCO0FBQ3ZDLE1BQUk5WCxXQUFVNjBCLGFBQU87QUFBQSxJQUNuQixNQUFNLFlBQVksT0FBTyxRQUFRLE1BQU0sT0FBTyxRQUFRO0FBQUEsSUFDdEQsQ0FBQyxPQUFPLFFBQVEsTUFBTSxPQUFPLFFBQVE7QUFBQSxFQUN2QztBQUNBLE1BQUksQ0FBQzcwQixVQUFTO0FBQ0wsV0FBQTtBQUFBLEVBQUE7QUFFYyxTQUFBODBCLDZCQUFBQSxjQUFxQix1QkFBdUIsRUFBRSxNQUFNLFNBQUE5MEIsVUFBUyxHQUFHLGVBQWU7QUFDeEc7QUFDQSxTQUFTLHNCQUFzQkEsVUFBUztBQUN0QyxNQUFJLEVBQUUsVUFBVSxhQUFhLElBQUksb0JBQW9CO0FBQ3JELE1BQUksQ0FBQyxvQkFBb0IscUJBQXFCLElBQUkwMEIsYUFBQUEsU0FBZ0IsQ0FBQSxDQUFFO0FBQ3BFRSxlQUFBQSxVQUFpQixNQUFNO0FBQ3JCLFFBQUksY0FBYztBQUNsQixTQUFLLHNCQUFzQjUwQixVQUFTLFVBQVUsWUFBWSxFQUFFO0FBQUEsTUFDMUQsQ0FBQyxVQUFVO0FBQ1QsWUFBSSxDQUFDLGFBQWE7QUFDaEIsZ0NBQXNCLEtBQUs7QUFBQSxRQUFBO0FBQUEsTUFDN0I7QUFBQSxJQUVKO0FBQ0EsV0FBTyxNQUFNO0FBQ0csb0JBQUE7QUFBQSxJQUNoQjtBQUFBLEVBQ0MsR0FBQSxDQUFDQSxVQUFTLFVBQVUsWUFBWSxDQUFDO0FBQzdCLFNBQUE7QUFDVDtBQUNBLFNBQVMsc0JBQXNCO0FBQUEsRUFDN0I7QUFBQSxFQUNBLFNBQVM7QUFBQSxFQUNULEdBQUc7QUFDTCxHQUFHO0FBQ0QsTUFBSSxXQUFXLFlBQVk7QUFDM0IsTUFBSSxFQUFFLFVBQVUsYUFBYSxJQUFJLG9CQUFvQjtBQUNyRCxNQUFJLEVBQUUsWUFBWSxTQUFBQSxTQUFRLElBQUksMEJBQTBCO0FBQ3hELE1BQUksb0JBQW9CNjBCLGFBQU87QUFBQSxJQUM3QixNQUFNO0FBQUEsTUFDSjtBQUFBLE1BQ0E7QUFBQSxNQUNBNzBCO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRjtBQUFBLElBQ0EsQ0FBQyxNQUFNLGFBQWFBLFVBQVMsVUFBVSxRQUFRO0FBQUEsRUFDakQ7QUFDQSxNQUFJLHNCQUFzQjYwQixhQUFPO0FBQUEsSUFDL0IsTUFBTTtBQUFBLE1BQ0o7QUFBQSxNQUNBO0FBQUEsTUFDQTcwQjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFBQSxJQUNBLENBQUMsTUFBTSxhQUFhQSxVQUFTLFVBQVUsUUFBUTtBQUFBLEVBQ2pEO0FBQ0ksTUFBQSxZQUFZNjBCLGFBQUFBLFFBQWUsTUFBTTtBQUNuQyxRQUFJLFNBQVMsU0FBUyxXQUFXLFNBQVMsU0FBUyxTQUFTLE1BQU07QUFDaEUsYUFBTyxDQUFDO0FBQUEsSUFBQTtBQUVOLFFBQUEsbUNBQW1DLElBQUk7QUFDM0MsUUFBSSxtQkFBbUI7QUFDWCxnQkFBQSxRQUFRLENBQUMxMkIsT0FBTTs7QUFDekIsVUFBSSxnQkFBZ0IsU0FBUyxPQUFPQSxHQUFFLE1BQU0sRUFBRTtBQUM5QyxVQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxXQUFXO0FBQzlDO0FBQUEsTUFBQTtBQUVFLFVBQUEsQ0FBQyxrQkFBa0IsS0FBSyxDQUFDNDJCLFFBQU9BLElBQUcsTUFBTSxPQUFPNTJCLEdBQUUsTUFBTSxFQUFFLEtBQUtBLEdBQUUsTUFBTSxNQUFNLGdCQUFjLGtCQUFhQSxHQUFFLE1BQU0sRUFBRSxNQUF2QixtQkFBMEIsbUJBQWtCO0FBQ3RILDJCQUFBO0FBQUEsTUFBQSxXQUNWLGNBQWMsaUJBQWlCO0FBQ3JCLDJCQUFBO0FBQUEsTUFBQSxPQUNkO0FBQ1EscUJBQUEsSUFBSUEsR0FBRSxNQUFNLEVBQUU7QUFBQSxNQUFBO0FBQUEsSUFDN0IsQ0FDRDtBQUNHLFFBQUEsYUFBYSxTQUFTLEdBQUc7QUFDM0IsYUFBTyxDQUFDO0FBQUEsSUFBQTtBQUVOLFFBQUEsTUFBTSxlQUFlLElBQUk7QUFDekIsUUFBQSxvQkFBb0IsYUFBYSxPQUFPLEdBQUc7QUFDN0MsVUFBSSxhQUFhO0FBQUEsUUFDZjtBQUFBLFFBQ0EsWUFBWSxPQUFPLENBQUNBLE9BQU0sYUFBYSxJQUFJQSxHQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDQSxPQUFNQSxHQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssR0FBRztBQUFBLE1BQ3pGO0FBQUEsSUFBQTtBQUVGLFdBQU8sQ0FBQyxJQUFJLFdBQVcsSUFBSSxNQUFNO0FBQUEsRUFBQSxHQUNoQztBQUFBLElBQ0Q7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUFBLENBQ0Q7QUFDRCxNQUFJLGNBQWMwMkIsYUFBTztBQUFBLElBQ3ZCLE1BQU0sbUJBQW1CLHFCQUFxQixRQUFRO0FBQUEsSUFDdEQsQ0FBQyxxQkFBcUIsUUFBUTtBQUFBLEVBQ2hDO0FBQ0ksTUFBQSxxQkFBcUIsc0JBQXNCLG1CQUFtQjtBQUMzQyxTQUFBQywyQ0FBcUJFLGFBQU8sVUFBVSxNQUFNLFVBQVUsSUFBSSxDQUFDLFNBQWdDRiw2QkFBQUEsY0FBYyxRQUFRLEVBQUUsS0FBSyxNQUFNLEtBQUssWUFBWSxJQUFJLFNBQVMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxHQUFHLFlBQVksSUFBSSxDQUFDLFNBQXlCQSwyQ0FBcUIsUUFBUSxFQUFFLEtBQUssTUFBTSxLQUFLLGlCQUFpQixNQUFNLEdBQUcsVUFBVyxDQUFBLENBQUMsR0FBRyxtQkFBbUIsSUFBSSxDQUFDLEVBQUUsS0FBSyxLQUFLO0FBQUE7QUFBQTtBQUFBLCtDQUcxVSxRQUFRLEVBQUUsS0FBSyxHQUFHLEtBQU0sQ0FBQTtBQUFBLEdBQzlELENBQUM7QUFDSjtBQTBMQSxTQUFTLGFBQWEsTUFBTTtBQUMxQixTQUFPLENBQUMsVUFBVTtBQUNYLFNBQUEsUUFBUSxDQUFDbm5CLFNBQVE7QUFDaEIsVUFBQSxPQUFPQSxTQUFRLFlBQVk7QUFDN0IsUUFBQUEsS0FBSSxLQUFLO0FBQUEsTUFBQSxXQUNBQSxRQUFPLE1BQU07QUFDdEIsUUFBQUEsS0FBSSxVQUFVO0FBQUEsTUFBQTtBQUFBLElBQ2hCLENBQ0Q7QUFBQSxFQUNIO0FBQ0Y7QUFHQSxJQUFJLFlBQVksT0FBTyxXQUFXLGVBQWUsT0FBTyxPQUFPLGFBQWEsZUFBZSxPQUFPLE9BQU8sU0FBUyxrQkFBa0I7QUFDcEksSUFBSTtBQUNGLE1BQUksV0FBVztBQUNiLFdBQU8sdUJBQXVCO0FBQUEsRUFBQTtBQUVsQyxTQUFTclMsSUFBRztBQUNaO0FBd0dBLFNBQVMsV0FBVyxFQUFFLFVBQVUsVUFBVSxRQUFRLFdBQVc7QUFDdkQsTUFBQSxhQUFhMjVCLGFBQUFBLE9BQWU7QUFDNUIsTUFBQSxXQUFXLFdBQVcsTUFBTTtBQUM5QixlQUFXLFVBQVUsa0JBQWtCLEVBQUUsUUFBUSxTQUFTLFVBQVUsTUFBTTtBQUFBLEVBQUE7QUFFNUUsTUFBSSxVQUFVLFdBQVc7QUFDekIsTUFBSSxDQUFDLE9BQU8sWUFBWSxJQUFJQyxzQkFBaUI7QUFBQSxJQUMzQyxRQUFRLFFBQVE7QUFBQSxJQUNoQixVQUFVLFFBQVE7QUFBQSxFQUFBLENBQ25CO0FBQ0QsTUFBSSxXQUFXQyxhQUFRO0FBQUEsSUFDckIsQ0FBQyxhQUFhO0FBQ1pDLG1DQUF3QixNQUFNLGFBQWEsUUFBUSxDQUFDO0FBQUEsSUFDdEQ7QUFBQSxJQUNBLENBQUMsWUFBWTtBQUFBLEVBQ2Y7QUFDUUMsZUFBQSxnQkFBZ0IsTUFBTSxRQUFRLE9BQU8sUUFBUSxHQUFHLENBQUMsU0FBUyxRQUFRLENBQUM7QUFDM0UsU0FBK0JDLDZCQUFBO0FBQUEsSUFDN0I7QUFBQSxJQUNBO0FBQUEsTUFDRTtBQUFBLE1BQ0E7QUFBQSxNQUNBLFVBQVUsTUFBTTtBQUFBLE1BQ2hCLGdCQUFnQixNQUFNO0FBQUEsTUFDdEIsV0FBVztBQUFBLElBQUE7QUFBQSxFQUVmO0FBQ0Y7QUE2QkEsSUFBSSxzQkFBc0I7QUFDMUIsSUFBSSxPQUFPQyxhQUFRO0FBQUEsRUFDakIsU0FBUyxZQUFZO0FBQUEsSUFDbkI7QUFBQSxJQUNBLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxJQUNYO0FBQUEsSUFDQTtBQUFBLElBQ0EsU0FBUztBQUFBLElBQ1Q7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQSxHQUFHO0FBQUEsS0FDRixjQUFjO0FBQ2YsUUFBSSxFQUFFLFNBQUEsSUFBYUMsd0JBQW1CLGlCQUFpQjtBQUN2RCxRQUFJLGFBQWEsT0FBTyxPQUFPLFlBQVksb0JBQW9CLEtBQUssRUFBRTtBQUNsRSxRQUFBO0FBQ0osUUFBSSxhQUFhO0FBQ2IsUUFBQSxPQUFPLE9BQU8sWUFBWSxZQUFZO0FBQ3pCLHFCQUFBO0FBQ2YsVUFBSSxXQUFXO0FBQ1QsWUFBQTtBQUNGLGNBQUksYUFBYSxJQUFJLElBQUksT0FBTyxTQUFTLElBQUk7QUFDN0MsY0FBSSxZQUFZLEdBQUcsV0FBVyxJQUFJLElBQUksSUFBSSxJQUFJLFdBQVcsV0FBVyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUU7QUFDcEYsY0FBSSxPQUFPLGNBQWMsVUFBVSxVQUFVLFFBQVE7QUFDckQsY0FBSSxVQUFVLFdBQVcsV0FBVyxVQUFVLFFBQVEsTUFBTTtBQUNyRCxpQkFBQSxPQUFPLFVBQVUsU0FBUyxVQUFVO0FBQUEsVUFBQSxPQUNwQztBQUNRLHlCQUFBO0FBQUEsVUFBQTtBQUFBLGlCQUVSbDZCLElBQUc7QUFDVjtBQUFBLFlBQ0U7QUFBQSxZQUNBLGFBQWEsRUFBRTtBQUFBLFVBQ2pCO0FBQUEsUUFBQTtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBRUYsUUFBSSxPQUFPLFFBQVEsSUFBSSxFQUFFLFVBQVU7QUFDbkMsUUFBSSxDQUFDLGdCQUFnQixhQUFhLGdCQUFnQixJQUFJO0FBQUEsTUFDcEQ7QUFBQSxNQUNBO0FBQUEsSUFDRjtBQUNJLFFBQUEsa0JBQWtCLG9CQUFvQixJQUFJO0FBQUEsTUFDNUMsU0FBUztBQUFBLE1BQ1Q7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFBQSxDQUNEO0FBQ0QsYUFBUyxZQUFZLE9BQU87QUFDdEIsVUFBQSxpQkFBaUIsS0FBSztBQUN0QixVQUFBLENBQUMsTUFBTSxrQkFBa0I7QUFDM0Isd0JBQWdCLEtBQUs7QUFBQSxNQUFBO0FBQUEsSUFDdkI7QUFFRSxRQUFBO0FBQUE7QUFBQSxNQUVzQmc2Qiw2QkFBQTtBQUFBLFFBQ3RCO0FBQUEsUUFDQTtBQUFBLFVBQ0UsR0FBRztBQUFBLFVBQ0gsR0FBRztBQUFBLFVBQ0gsTUFBTSxnQkFBZ0I7QUFBQSxVQUN0QixTQUFTLGNBQWMsaUJBQWlCLFVBQVU7QUFBQSxVQUNsRCxLQUFLLFVBQVUsY0FBYyxXQUFXO0FBQUEsVUFDeEM7QUFBQSxVQUNBLGlCQUFpQixDQUFDLGNBQWMsYUFBYSxXQUFXLFNBQVM7QUFBQSxRQUFBO0FBQUEsTUFDbkU7QUFBQTtBQUdKLFdBQU8sa0JBQWtCLENBQUMsYUFBcUNBLDZCQUFBQSxjQUFjRyxhQUFBQSxVQUFrQixNQUFNLE1BQXNCSCwyQ0FBc0IsbUJBQW1CLEVBQUUsTUFBTSxLQUFNLENBQUEsQ0FBQyxJQUFJO0FBQUEsRUFBQTtBQUUzTDtBQUNBLEtBQUssY0FBYztBQUNuQixJQUFJLFVBQVVDLGFBQVE7QUFBQSxFQUNwQixTQUFTLGVBQWU7QUFBQSxJQUN0QixnQkFBZ0Isa0JBQWtCO0FBQUEsSUFDbEMsZ0JBQWdCO0FBQUEsSUFDaEIsV0FBVyxnQkFBZ0I7QUFBQSxJQUMzQixNQUFNO0FBQUEsSUFDTixPQUFPO0FBQUEsSUFDUDtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQSxHQUFHO0FBQUEsS0FDRjVuQixNQUFLO0FBQ04sUUFBSSxPQUFPLGdCQUFnQixJQUFJLEVBQUUsVUFBVSxLQUFLLFVBQVU7QUFDMUQsUUFBSSxXQUFXLFlBQVk7QUFDdkIsUUFBQSxjQUFjNm5CLGFBQVEsV0FBVyxzQkFBc0I7QUFDM0QsUUFBSSxFQUFFLFdBQVcsWUFBWSxhQUFhQSxhQUFBQSxXQUFtQixpQkFBaUI7QUFDOUUsUUFBSSxrQkFBa0IsZUFBZTtBQUFBO0FBQUEsSUFFckMsdUJBQXVCLElBQUksS0FBSyxtQkFBbUI7QUFDL0MsUUFBQSxhQUFhLFdBQVcsaUJBQWlCLFdBQVcsZUFBZSxJQUFJLEVBQUUsV0FBVyxLQUFLO0FBQzdGLFFBQUksbUJBQW1CLFNBQVM7QUFDNUIsUUFBQSx1QkFBdUIsZUFBZSxZQUFZLGNBQWMsWUFBWSxXQUFXLFdBQVcsWUFBWSxXQUFXLFNBQVMsV0FBVztBQUNqSixRQUFJLENBQUMsZUFBZTtBQUNsQix5QkFBbUIsaUJBQWlCLFlBQVk7QUFDekIsNkJBQUEsdUJBQXVCLHFCQUFxQixZQUFnQixJQUFBO0FBQ25GLG1CQUFhLFdBQVcsWUFBWTtBQUFBLElBQUE7QUFFdEMsUUFBSSx3QkFBd0IsVUFBVTtBQUNiLDZCQUFBLGNBQWMsc0JBQXNCLFFBQVEsS0FBSztBQUFBLElBQUE7QUFFcEUsVUFBQSxtQkFBbUIsZUFBZSxPQUFPLFdBQVcsU0FBUyxHQUFHLElBQUksV0FBVyxTQUFTLElBQUksV0FBVztBQUM3RyxRQUFJLFdBQVcscUJBQXFCLGNBQWMsQ0FBQyxPQUFPLGlCQUFpQixXQUFXLFVBQVUsS0FBSyxpQkFBaUIsT0FBTyxnQkFBZ0IsTUFBTTtBQUNuSixRQUFJLFlBQVksd0JBQXdCLFNBQVMseUJBQXlCLGNBQWMsQ0FBQyxPQUFPLHFCQUFxQixXQUFXLFVBQVUsS0FBSyxxQkFBcUIsT0FBTyxXQUFXLE1BQU0sTUFBTTtBQUNsTSxRQUFJLGNBQWM7QUFBQSxNQUNoQjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRjtBQUNJLFFBQUEsY0FBYyxXQUFXLGtCQUFrQjtBQUMzQyxRQUFBO0FBQ0EsUUFBQSxPQUFPLGtCQUFrQixZQUFZO0FBQ3ZDLGtCQUFZLGNBQWMsV0FBVztBQUFBLElBQUEsT0FDaEM7QUFDTyxrQkFBQTtBQUFBLFFBQ1Y7QUFBQSxRQUNBLFdBQVcsV0FBVztBQUFBLFFBQ3RCLFlBQVksWUFBWTtBQUFBLFFBQ3hCLGtCQUFrQixrQkFBa0I7QUFBQSxNQUNwQyxFQUFBLE9BQU8sT0FBTyxFQUFFLEtBQUssR0FBRztBQUFBLElBQUE7QUFFNUIsUUFBSSxRQUFRLE9BQU8sY0FBYyxhQUFhLFVBQVUsV0FBVyxJQUFJO0FBQ3ZFLFdBQStCRiw2QkFBQTtBQUFBLE1BQzdCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsR0FBRztBQUFBLFFBQ0gsZ0JBQWdCO0FBQUEsUUFDaEI7QUFBQSxRQUNBLEtBQUEzbkI7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxNQUNGO0FBQUEsTUFDQSxPQUFPLGFBQWEsYUFBYSxTQUFTLFdBQVcsSUFBSTtBQUFBLElBQzNEO0FBQUEsRUFBQTtBQUVKO0FBQ0EsUUFBUSxjQUFjO0FBQ3RCLElBQUl1YyxRQUFPcUwsYUFBUTtBQUFBLEVBQ2pCLENBQUM7QUFBQSxJQUNDLFdBQVc7QUFBQSxJQUNYO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNUO0FBQUEsSUFDQSxTQUFTO0FBQUEsSUFDVDtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBLEdBQUc7QUFBQSxLQUNGLGlCQUFpQjtBQUNsQixRQUFJLFNBQVMsVUFBVTtBQUN2QixRQUFJLGFBQWEsY0FBYyxRQUFRLEVBQUUsVUFBVTtBQUNuRCxRQUFJLGFBQWEsT0FBTyxZQUFZLE1BQU0sUUFBUSxRQUFRO0FBQzFELFFBQUksYUFBYSxPQUFPLFdBQVcsWUFBWSxvQkFBb0IsS0FBSyxNQUFNO0FBQzFFLFFBQUEsZ0JBQWdCLENBQUMsVUFBVTtBQUM3QixrQkFBWSxTQUFTLEtBQUs7QUFDMUIsVUFBSSxNQUFNLGlCQUFrQjtBQUM1QixZQUFNLGVBQWU7QUFDakIsVUFBQSxZQUFZLE1BQU0sWUFBWTtBQUNsQyxVQUFJLGdCQUFlLHVDQUFXLGFBQWEsa0JBQWlCO0FBQ3JELGFBQUEsYUFBYSxNQUFNLGVBQWU7QUFBQSxRQUN2QztBQUFBLFFBQ0EsUUFBUTtBQUFBLFFBQ1I7QUFBQSxRQUNBLFNBQVM7QUFBQSxRQUNUO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsTUFBQSxDQUNEO0FBQUEsSUFDSDtBQUNBLFdBQStCRCw2QkFBQTtBQUFBLE1BQzdCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsS0FBSztBQUFBLFFBQ0wsUUFBUTtBQUFBLFFBQ1IsUUFBUTtBQUFBLFFBQ1IsVUFBVSxpQkFBaUIsV0FBVztBQUFBLFFBQ3RDLEdBQUc7QUFBQSxRQUNILGlCQUFpQixDQUFDLGNBQWMsYUFBYSxXQUFXLFNBQVM7QUFBQSxNQUFBO0FBQUEsSUFFckU7QUFBQSxFQUFBO0FBRUo7QUFDQXBMLE1BQUssY0FBYztBQTJEbkIsU0FBUywyQkFBMkIsVUFBVTtBQUM1QyxTQUFPLEdBQUcsUUFBUTtBQUNwQjtBQUNBLFNBQVMsc0JBQXNCLFVBQVU7QUFDbkMsTUFBQSxNQUFNc0wsYUFBUSxXQUFXLGlCQUFpQjtBQUNwQyxZQUFBLEtBQUssMkJBQTJCLFFBQVEsQ0FBQztBQUM1QyxTQUFBO0FBQ1Q7QUFNQSxTQUFTLG9CQUFvQixJQUFJO0FBQUEsRUFDL0I7QUFBQSxFQUNBLFNBQVM7QUFBQSxFQUNUO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0YsSUFBSSxJQUFJO0FBQ04sTUFBSSxXQUFXLFlBQVk7QUFDM0IsTUFBSSxXQUFXLFlBQVk7QUFDM0IsTUFBSSxPQUFPLGdCQUFnQixJQUFJLEVBQUUsVUFBVTtBQUMzQyxTQUFPTCxhQUFRO0FBQUEsSUFDYixDQUFDLFVBQVU7QUFDTCxVQUFBLHVCQUF1QixPQUFPLE1BQU0sR0FBRztBQUN6QyxjQUFNLGVBQWU7QUFDakIsWUFBQSxXQUFXLGdCQUFnQixTQUFTLGNBQWMsV0FBVyxRQUFRLE1BQU0sV0FBVyxJQUFJO0FBQzlGLGlCQUFTLElBQUk7QUFBQSxVQUNYLFNBQVM7QUFBQSxVQUNUO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsUUFBQSxDQUNEO0FBQUEsTUFBQTtBQUFBLElBRUw7QUFBQSxJQUNBO0FBQUEsTUFDRTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQUE7QUFBQSxFQUVKO0FBQ0Y7QUFrQ0EsSUFBSSxZQUFZO0FBQ2hCLElBQUkscUJBQXFCLE1BQU0sS0FBSyxPQUFPLEVBQUUsU0FBUyxDQUFDO0FBQ3ZELFNBQVMsWUFBWTtBQUNmLE1BQUEsRUFBRSxXQUFXO0FBQUEsSUFBc0I7QUFBQTtBQUFBLEVBQTJCO0FBQ2xFLE1BQUksRUFBRSxTQUFBLElBQWFLLHdCQUFtQixpQkFBaUI7QUFDdkQsTUFBSSxpQkFBaUIsV0FBVztBQUNoQyxTQUFPTCxhQUFRO0FBQUEsSUFDYixPQUFPLFFBQVExMEIsV0FBVSxPQUFPO0FBQzlCLFVBQUksRUFBRSxRQUFRLFFBQVEsU0FBUyxVQUFVLFNBQVM7QUFBQSxRQUNoRDtBQUFBLFFBQ0E7QUFBQSxNQUNGO0FBQ0ksVUFBQUEsU0FBUSxhQUFhLE9BQU87QUFDMUIsWUFBQSxNQUFNQSxTQUFRLGNBQWMsbUJBQW1CO0FBQ25ELGNBQU0sT0FBTyxNQUFNLEtBQUssZ0JBQWdCQSxTQUFRLFVBQVUsUUFBUTtBQUFBLFVBQ2hFLG9CQUFvQkEsU0FBUTtBQUFBLFVBQzVCO0FBQUEsVUFDQTtBQUFBLFVBQ0EsWUFBWUEsU0FBUSxVQUFVO0FBQUEsVUFDOUIsYUFBYUEsU0FBUSxXQUFXO0FBQUEsVUFDaEMsV0FBV0EsU0FBUTtBQUFBLFFBQUEsQ0FDcEI7QUFBQSxNQUFBLE9BQ0k7QUFDTCxjQUFNLE9BQU8sU0FBU0EsU0FBUSxVQUFVLFFBQVE7QUFBQSxVQUM5QyxvQkFBb0JBLFNBQVE7QUFBQSxVQUM1QjtBQUFBLFVBQ0E7QUFBQSxVQUNBLFlBQVlBLFNBQVEsVUFBVTtBQUFBLFVBQzlCLGFBQWFBLFNBQVEsV0FBVztBQUFBLFVBQ2hDLFNBQVNBLFNBQVE7QUFBQSxVQUNqQixPQUFPQSxTQUFRO0FBQUEsVUFDZixhQUFhO0FBQUEsVUFDYixXQUFXQSxTQUFRO0FBQUEsVUFDbkIsZ0JBQWdCQSxTQUFRO0FBQUEsUUFBQSxDQUN6QjtBQUFBLE1BQUE7QUFBQSxJQUVMO0FBQUEsSUFDQSxDQUFDLFFBQVEsVUFBVSxjQUFjO0FBQUEsRUFDbkM7QUFDRjtBQUNBLFNBQVMsY0FBYyxRQUFRLEVBQUUsU0FBUyxJQUFJLENBQUEsR0FBSTtBQUNoRCxNQUFJLEVBQUUsU0FBQSxJQUFhKzBCLHdCQUFtQixpQkFBaUI7QUFDbkQsTUFBQSxlQUFlQSxhQUFRLFdBQVcsWUFBWTtBQUNsRCxZQUFVLGNBQWMsa0RBQWtEO0FBQzFFLE1BQUksQ0FBQzcwQixNQUFLLElBQUksYUFBYSxRQUFRLE1BQU0sRUFBRTtBQUN2QyxNQUFBLE9BQU8sRUFBRSxHQUFHLGdCQUFnQixTQUFTLFNBQVMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFO0FBQ3JFLE1BQUksV0FBVyxZQUFZO0FBQzNCLE1BQUksVUFBVSxNQUFNO0FBQ2xCLFNBQUssU0FBUyxTQUFTO0FBQ3ZCLFFBQUksU0FBUyxJQUFJLGdCQUFnQixLQUFLLE1BQU07QUFDeEMsUUFBQSxjQUFjLE9BQU8sT0FBTyxPQUFPO0FBQ3ZDLFFBQUkscUJBQXFCLFlBQVksS0FBSyxDQUFDOUQsT0FBTUEsT0FBTSxFQUFFO0FBQ3pELFFBQUksb0JBQW9CO0FBQ3RCLGFBQU8sT0FBTyxPQUFPO0FBQ3JCLGtCQUFZLE9BQU8sQ0FBQ0EsT0FBTUEsRUFBQyxFQUFFLFFBQVEsQ0FBQ0EsT0FBTSxPQUFPLE9BQU8sU0FBU0EsRUFBQyxDQUFDO0FBQ2pFLFVBQUEsS0FBSyxPQUFPLFNBQVM7QUFDekIsV0FBSyxTQUFTLEtBQUssSUFBSSxFQUFFLEtBQUs7QUFBQSxJQUFBO0FBQUEsRUFDaEM7QUFFRixPQUFLLENBQUMsVUFBVSxXQUFXLFFBQVE4RCxPQUFNLE1BQU0sT0FBTztBQUMvQyxTQUFBLFNBQVMsS0FBSyxTQUFTLEtBQUssT0FBTyxRQUFRLE9BQU8sU0FBUyxJQUFJO0FBQUEsRUFBQTtBQUV0RSxNQUFJLGFBQWEsS0FBSztBQUNmLFNBQUEsV0FBVyxLQUFLLGFBQWEsTUFBTSxXQUFXLFVBQVUsQ0FBQyxVQUFVLEtBQUssUUFBUSxDQUFDO0FBQUEsRUFBQTtBQUV4RixTQUFPLFdBQVcsSUFBSTtBQUN4QjtBQXlOQSxTQUFTLHVCQUF1QixJQUFJLE9BQU8sSUFBSTtBQUN6QyxNQUFBLFlBQVk2MEIsYUFBUSxXQUFXLHFCQUFxQjtBQUN4RDtBQUFBLElBQ0UsYUFBYTtBQUFBLElBQ2I7QUFBQSxFQUNGO0FBQ0ksTUFBQSxFQUFFLGFBQWE7QUFBQSxJQUNqQjtBQUFBO0FBQUEsRUFDRjtBQUNBLE1BQUksT0FBTyxnQkFBZ0IsSUFBSSxFQUFFLFVBQVUsS0FBSyxVQUFVO0FBQ3RELE1BQUEsQ0FBQyxVQUFVLGlCQUFpQjtBQUN2QixXQUFBO0FBQUEsRUFBQTtBQUVMLE1BQUEsY0FBYyxjQUFjLFVBQVUsZ0JBQWdCLFVBQVUsUUFBUSxLQUFLLFVBQVUsZ0JBQWdCO0FBQ3ZHLE1BQUEsV0FBVyxjQUFjLFVBQVUsYUFBYSxVQUFVLFFBQVEsS0FBSyxVQUFVLGFBQWE7QUFDM0YsU0FBQSxVQUFVLEtBQUssVUFBVSxRQUFRLEtBQUssUUFBUSxVQUFVLEtBQUssVUFBVSxXQUFXLEtBQUs7QUFDaEc7QUFxYmMsSUFBSSxZQUFZO0FDbGhROUIsTUFBTSxxQkFBcUIsQ0FBQyxFQUFDLE1BQU0sWUFBVztBQUUxQyxRQUFNLENBQUMsY0FBYyxlQUFlLElBQUk3dEIsYUFBQUEsU0FBaUIsRUFBRTtBQUMzRCxRQUFNLENBQUMsY0FBYyxlQUFlLElBQUlBLGFBQUFBLFNBQWlCLEVBQUU7QUFFckQsUUFBQSxhQUFhd3FCLFNBQVUsUUFBUUMsWUFBVTtBQUUvQ2hzQixlQUFBQSxVQUFVLE1BQU07QUFDWixvQkFBZ0IsTUFBTSxZQUFZO0FBQ2xDLG9CQUFnQixNQUFNLFlBQVk7QUFBQSxLQUNuQyxDQUFDLE1BQU0sY0FBYyxNQUFNLFlBQVksQ0FBQztBQUVyQyxRQUFBLHFCQUFxQixDQUFDLFVBQVU7QUFDbEMsUUFBSSxXQUFXLFdBQVcsZ0JBQWdCLEVBQUUsU0FBUztBQUNyRCxhQUFTLGVBQWU7QUFDeEIsZUFBVyxnQkFBZ0IsUUFBUTtBQUNuQyxvQkFBZ0IsS0FBSztBQUFBLEVBQ3pCO0FBRU0sUUFBQSxxQkFBcUIsQ0FBQyxVQUFVO0FBQ2xDLFFBQUksV0FBVyxXQUFXLGdCQUFnQixFQUFFLFNBQVM7QUFDckQsYUFBUyxlQUFlO0FBQ3hCLGVBQVcsZ0JBQWdCLFFBQVE7QUFDbkMsb0JBQWdCLEtBQUs7QUFBQSxFQUN6QjtBQUVBLCtDQUNLLE9BQUksRUFBQSxXQUFVLElBQ1gsVUFBQ3FWLGtDQUFBLEtBQUEsT0FBQSxFQUFJLFdBQVcsUUFDWixVQUFBO0FBQUEsSUFBQW5OLGtDQUFBQSxJQUFDLFNBQUksV0FBVyxVQUNaLFVBQUNtTixrQ0FBQSxLQUFBLE9BQUEsRUFBSSxXQUFVLGNBQ1gsVUFBQTtBQUFBLE1BQUFuTixzQ0FBQyxXQUFNLE1BQUssUUFBTyxNQUFLLGdCQUFlLE9BQU8sY0FBYyxVQUFXLENBQUtoVCxPQUFBLG1CQUFtQkEsR0FBRSxPQUFPLEtBQUssR0FBRyxXQUFXLHVRQUF1USxhQUFhLFVBQVU7QUFBQSxNQUN6WmdULGtDQUFBQSxJQUFDLFNBQU8sRUFBQSxVQUFBLEtBQUssYUFBYSxDQUFBO0FBQUEsSUFBQSxFQUFBLENBQzlCLEVBQ0osQ0FBQTtBQUFBLDBDQUNDLE9BQUksRUFBQSxXQUFXLFVBQ1osVUFBQ21OLGtDQUFBLEtBQUEsT0FBQSxFQUFJLFdBQVUsY0FDWCxVQUFBO0FBQUEsTUFBQW5OLHNDQUFDLFdBQU0sTUFBSyxRQUFPLE1BQUssZ0JBQWUsT0FBTyxjQUFjLFVBQVUsQ0FBS2hULE9BQUEsbUJBQW1CQSxHQUFFLE9BQU8sS0FBSyxHQUFJLFdBQVcsdVFBQXVRLGFBQWEsVUFBVTtBQUFBLE1BQ3paZ1Qsa0NBQUFBLElBQUMsU0FBTyxFQUFBLFVBQUEsS0FBSyxhQUFhLENBQUE7QUFBQSxJQUFBLEVBQUEsQ0FDOUIsRUFDSixDQUFBO0FBQUEsRUFBQSxFQUFBLENBQ0osRUFDUixDQUFBO0FBRUo7QUFFQSxtQkFBbUIsWUFBWTtBQUFBLEVBQzNCLE9BQU9nYyxpQkFBVSxXQUFXLEtBQUs7QUFBQSxFQUNqQyxNQUFNQSxpQkFBVSxXQUFXLElBQUk7QUFDbkM7QUN2REEsTUFBTSxzQkFBc0IsQ0FBQyxFQUFDLFlBQVc7QUFFckMsU0FDS2hjLGtDQUFBLElBQUEsT0FBQSxFQUFJLFdBQVcsV0FDWixpREFBQyxNQUFHLEVBQUEsVUFBQTtBQUFBLElBQUE7QUFBQSxJQUFLLE1BQU07QUFBQSxFQUFBLEVBQUEsQ0FBTSxFQUN6QixDQUFBO0FBRVI7QUFFQSxvQkFBb0IsWUFBWTtBQUFBLEVBQzVCLE9BQU9nYyxpQkFBVSxXQUFXLEtBQUs7QUFDckM7QUNFQSxNQUFNLGdCQUFnQixDQUFDLFVBQVU7QUFFN0IsUUFBTSxDQUFDLE1BQU0sT0FBTyxJQUFJM2lCLGFBQUFBLFNBQWUsSUFBSSxNQUFNO0FBQ2pELFFBQU0sQ0FBQyxPQUFPLFFBQVEsSUFBSUEsYUFBQUEsU0FBZ0IsSUFBSSxPQUFPO0FBRS9DLFFBQUEsY0FBY3dxQixTQUFVLFFBQVFDLFlBQVU7QUFDMUMsUUFBQSxlQUFlRCxTQUFVLFFBQVFTLGNBQVk7QUFDN0MsUUFBQSxZQUFZLE9BQU8sU0FBaUI7QUFDdEMsaUJBQWEsU0FBUyxJQUFJLEVBQUUsS0FBSyxDQUFDLGFBQWE7QUFDM0Msa0JBQVksZ0JBQWdCLFFBQVE7QUFDcEMsY0FBUSxTQUFTLElBQUk7QUFDckIsZUFBUyxRQUFRO0FBQUEsSUFBQSxDQUNwQjtBQUFBLEVBQ0w7QUFFQSxNQUFJLFNBQVMsVUFBVTtBQUV2QnhzQixlQUFBQSxVQUFVLE1BQU07QUFDWixRQUFHLE9BQU8sTUFBTTtBQUNaLGdCQUFVLE9BQU8sSUFBSTtBQUFBLElBQUE7QUFBQSxFQUU3QixHQUFHLEVBQUU7QUFFTCwrQ0FDSyxNQUFNLFlBQU4sRUFDRyxVQUFDcVYsdUNBQUEsT0FBQSxFQUFJLFdBQVUsa0JBQ1gsVUFBQTtBQUFBLElBQUNBLGtDQUFBQSxLQUFBLE9BQUEsRUFBSSxXQUFVLHdCQUNYLFVBQUE7QUFBQSxNQUFBbk4sa0NBQUFBLElBQUMsU0FBSSxXQUFVLFVBQ1gsVUFBQ0Esa0NBQUEsSUFBQSxxQkFBQSxFQUFvQixNQUFjLENBQUEsR0FDdkM7QUFBQSw0Q0FDQyxPQUFJLEVBQUEsV0FBVSxJQUNYLFVBQUNBLGtDQUFBQSxJQUFBLGlCQUFBLEVBQWdCLFdBQXFCLEVBQzFDLENBQUE7QUFBQSxJQUFBLEdBQ0o7QUFBQSxJQUVDQSxrQ0FBQSxJQUFBLGlCQUFBLEVBQWdCLE1BQVksT0FBYyxRQUFRLFNBQVM7QUFBQSxJQUM1REEsa0NBQUEsSUFBQyxPQUFJLEVBQUEsV0FBVSxhQUFjLFVBQUEsS0FBSyxNQUFNLEtBQU1BLGtDQUFBQSxJQUFBLGtCQUFBLEVBQWlCLE1BQVksTUFBQSxDQUFjLEVBQUksQ0FBQTtBQUFBLElBQzdGQSxrQ0FBQUEsSUFBQyxTQUFNLFVBQUssS0FBQSxNQUFNLEtBQU1BLGtDQUFBLElBQUEsb0JBQUEsRUFBbUIsTUFBWSxNQUFBLENBQWMsRUFBSSxDQUFBO0FBQUEsSUFDekVtTixrQ0FBQUEsS0FBQyxPQUFJLEVBQUEsV0FBVSx3QkFDWCxVQUFBO0FBQUEsTUFBQ25OLGtDQUFBLElBQUEsT0FBQSxFQUFJLFdBQVUsVUFBVyxVQUFLLEtBQUEsTUFBTSxLQUFNQSxrQ0FBQUEsSUFBQSxrQkFBQSxFQUFpQixNQUFZLE1BQUEsQ0FBYyxFQUFJLENBQUE7QUFBQSxNQUMxRkEsa0NBQUFBLElBQUMsT0FBSSxFQUFBLFdBQVUsVUFBVyxVQUFBLEtBQUssTUFBTSxLQUFNQSxrQ0FBQSxJQUFBLG1CQUFBLEVBQWtCLE1BQVksTUFBYyxDQUFBLEVBQUksQ0FBQTtBQUFBLElBQUEsR0FDL0Y7QUFBQSxJQUNFLEtBQUssTUFBTSxLQUFNQSxrQ0FBQUEsSUFBQSxvQkFBQSxFQUFtQixNQUFZLE1BQWMsQ0FBQTtBQUFBLEVBQUEsRUFBQSxDQUNwRSxFQUNKLENBQUE7QUFHUjtBQ3ZETyxNQUFNLElBQUk7QUFBQSxFQUtiLFlBQVksS0FBYTtBQUpqQjtBQUNBO0FBSUEsUUFBQWhPLFNBQVE2eEIsU0FBVSxRQUFRblksT0FBSztBQUNuQyxZQUFRLElBQUksR0FBRztBQUNmLElBQUExWixPQUFNLGVBQWU7QUFDckIsSUFBQUEsT0FBTSxLQUFLO0FBQUEsRUFBQTtBQUFBLEVBR2YsT0FBYTtBQUVULFNBQUssUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUdqQixVQUFVO0FBQ04sVUFBTSxPQUFPLFNBQVMsV0FBVyxTQUFTLGVBQWUsTUFBTSxDQUFDO0FBRTNELFNBQUE7QUFBQSw0Q0FDQSxVQUFVLFVBQVYsRUFDRyxVQUFDZ08sa0NBQUEsSUFBQW9uQixZQUFBLEVBQ0csaURBQUMsUUFDRyxFQUFBLFVBQUE7QUFBQSxRQUFBcG5CLHNDQUFDLFNBQU0sTUFBSyxLQUFJLFNBQVNBLHNDQUFDLGdCQUFjLENBQUEsR0FBSTtBQUFBLDhDQUMzQyxPQUFNLEVBQUEsTUFBSyxVQUFTLFNBQVNBLGtDQUFBLElBQUMsaUJBQWMsRUFBSSxDQUFBO0FBQUEsTUFBQSxFQUNyRCxDQUFBLEVBQ0osQ0FBQSxFQUNKLENBQUE7QUFBQSxJQUNKO0FBQUEsRUFBQTtBQUFBLEVBSUosTUFBWTtBQUFBLEVBQUE7QUFJaEI7QUN4Q0EsSUFBSSxNQUFNLElBQUksSUFBSSxTQUFTO0FBQzNCLElBQUksS0FBSztBQUNULElBQUksSUFBSTsiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1Niw1Nyw1OCw1OSw2MCw2MSw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxMjcsMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzgsMTM5LDE0MCwxNDEsMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDM4NCwzODUsMzg2LDM4NywzODgsMzg5LDM5MCwzOTEsMzkyLDM5MywzOTQsMzk1LDM5NiwzOTcsMzk4LDM5OSw0MDAsNDAxLDQwMiw0MDMsNDA0LDQwNSw0MDYsNDA3LDQwOCw0MDksNDEwLDQxMSw0MTIsNDEzLDQxNCw0MTUsNDE2LDQxNyw0MTgsNDE5LDQyMCw0MjEsNDIyLDQyMyw0MjQsNDI1LDQyNiw0MjcsNDI4LDQyOSw0MzAsNDMxLDQzMiw0MzMsNDM0LDQzNSw0MzYsNDM3LDQzOCw0MzksNDQwLDQ0MSw0NDIsNDQzLDQ0NCw0NDUsNDQ2LDQ0Nyw0NDgsNDQ5LDQ1MCw0NTEsNDUyLDQ1Myw0NTQsNDU1LDQ1Niw0NTcsNDU4LDQ1OSw0NjAsNDYxLDQ2Miw0NjMsNDY0LDQ2NSw0NjYsNDY3LDQ2OCw0NjksNDcwLDQ3MSw0NzIsNDczLDQ3NCw0NzUsNDc2LDQ3Nyw0NzgsNDc5LDQ4MCw0ODEsNDgyLDQ4Myw0ODQsNDg1LDQ4Niw0ODcsNDg4LDQ4OSw0OTAsNDkxLDQ5Miw0OTMsNDk0LDQ5NSw0OTYsNDk3LDQ5OCw0OTksNTAwLDUwMSw1MDIsNTAzLDUwNCw1MDUsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTEyLDUxMyw1MTQsNTE1LDUxNiw1MTcsNTE4LDUxOSw1MjAsNTIxLDUyMiw1MjMsNTI0LDUyNSw1MjYsNTI3LDUyOCw1MjksNTMwLDUzMSw1MzIsNTMzLDUzNCw1MzUsNTM2LDUzNyw1MzgsNTM5LDU0MCw1NDEsNTQyLDU0Myw1NDQsNTQ1LDU0Niw1NDcsNTQ4LDU0OSw1NTAsNTUxLDU1Miw1NTMsNTU0LDU1NSw1NTYsNTU3LDU1OCw1NTksNTYwLDU2MSw1NjIsNTYzLDU2NCw1NjUsNTY2LDU2Nyw1NjgsNTY5LDU3MCw1NzEsNTcyLDU3Myw1NzQsNTc1LDU3Niw1NzcsNTc4LDU3OSw1ODAsNTgxLDU4Miw1ODMsNTg0LDU4NSw1ODYsNTg3LDU4OCw1ODksNTkwLDU5MSw1OTIsNTkzLDU5NCw1OTUsNTk2LDU5Nyw1OTgsNTk5LDYwMCw2MDEsNjAyLDYwMyw2MDQsNjA1LDYwNiw2MDcsNjA4LDYwOSw2MTAsNjExLDYxMiw2MTMsNjE0LDYxNSw2MTYsNjE3LDYxOCw2MTksNjIwLDYyMSw2MjIsNjIzLDYyNCw2MjUsNjI2LDYyNyw2MjgsNjI5LDYzMCw2MzEsNjMyLDYzMyw2MzQsNjM1LDYzNiw2MzcsNjM4LDYzOSw2NDAsNjQxLDY0Miw2NDMsNjQ0LDY0NSw2NDYsNjQ3LDY0OCw2NDksNjUwLDY1MSw2NTIsNjUzLDY1NCw2NTUsNjU2LDY1Nyw2NTgsNjU5LDY2MCw2NjEsNjYyLDY2Myw2NjQsNjY1LDY2Niw2NjcsNjY4LDY2OSw2NzAsNjcxLDY3Miw2NzMsNjc0LDY3NSw2NzYsNjc3LDY3OCw2NzksNjgwLDY4MSw2ODIsNjgzLDY4NCw2ODUsNjg2LDY4Nyw2ODgsNjg5LDY5MCw2OTEsNjkyLDY5Myw2OTQsNjk1LDY5Niw2OTcsNjk4LDY5OSw3MDAsNzAxLDcwMiw3MDMsNzA0LDcwNSw3MDYsNzA3LDcwOCw3MDksNzEwLDcxMSw3MTIsNzEzLDcxNCw3MTUsNzE2LDcxNyw3MTgsNzE5LDcyMCw3MjEsNzIyLDcyMyw3MjQsNzI1LDcyNiw3MjcsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsNzM0LDczNSw3MzYsNzM3LDczOCw3MzksNzQwLDc0MSw3NDIsNzQzLDc0NCw3NDUsNzQ2LDc0Nyw3NDgsNzQ5LDc1MCw3NTEsNzUyLDc1Myw3NTQsNzU1LDc1Niw3NTcsNzU4LDc1OSw3NjAsNzYxLDc2Miw3NjMsNzY0LDc2NSw3NjYsNzY3LDc2OCw3NjksNzcwLDc3MSw3NzIsNzczLDc3NCw3NzUsNzc2LDc3Nyw3NzgsNzc5LDc4MCw3ODEsNzgyLDc4Myw3ODQsNzg1LDc4Niw3ODcsNzg4LDc4OSw3OTUsNzk2LDc5Nyw3OTgsNzk5LDgwMCw4MDEsODAyLDgwMyw4MDQsODA1LDgwNiw4MDcsODA4LDgwOSw4MTAsODExLDgxMiw4MTMsODE0LDgxNSw4MTYsODE3LDgxOCw4MTksODIwLDgyMSw4MjIsODIzLDgyNCw4MjUsODI2LDgyNyw4MjgsODI5LDgzMCw4MzEsODMyLDgzMyw4MzQsODM1LDgzNiw4MzcsODM4LDgzOSw4NTksODYwLDg2MSw4NjIsODY1LDg3OCw4NzldfQ==